{"report_id":"0506a2dc-99d9-4bca-927d-1827e21e6719","version":6,"status":"done","tags":[],"date":"2025-08-07T20:48:52Z","url":{"schema":"http","addr":"clear-vault.online","fqdn":"clear-vault.online","domain":"clear-vault.online","tld":"online"},"ip":{"addr":"163.61.188.222","port":0,"asn":0,"as":"","country":"","country_code":"zz"},"final":{"url":{"schema":"https","addr":"clear-vault.online/","fqdn":"clear-vault.online","domain":"clear-vault.online","tld":"online"},"title":"Welcome to | Clear Vault Bank"},"submit":{"url":{"schema":"http","addr":"clear-vault.online","fqdn":"clear-vault.online","domain":"clear-vault.online","tld":"online"},"ip":{"addr":"163.61.188.222","port":0,"asn":0,"as":"","country":"","country_code":"zz"},"tags":null,"meta":null,"user":{"user_id":"akbkyowd9geqr98"}},"settings":{"access":"public","device_type":"desktop","expires_at":"2026-09-11T20:48:52Z","useragent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0","referer":"","cookies":null,"exit_node":"z0yflva4pidy47h"},"stats":{"alert_count":{"ids":0,"urlquery":0,"analyzer":0}},"detection":{"ids":null,"analyzer":null,"urlquery":null},"summary":[{"fqdn":"www.google.com","ip":{"addr":"142.250.74.68","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"domain_registered":"1997-09-15","domain_rank":7,"first_seen":"2015-05-10T13:11:19Z","last_seen":"2025-08-06T15:13:31.427017Z","alert_count":0,"request_count":1,"received_data":739,"sent_data":446,"comment":"","tags":null,"fingerprints":null},{"fqdn":"clear-vault.online","ip":{"addr":"163.61.188.222","port":443,"asn":0,"as":"","country":"","country_code":"zz"},"domain_registered":"2025-04-07","domain_rank":0,"first_seen":"2025-08-07T20:48:53.291043Z","last_seen":"2025-08-07T20:48:53.291043Z","alert_count":0,"request_count":16,"received_data":2164904,"sent_data":8210,"comment":"","tags":null,"fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]},{"name":"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":"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":"SweetAlert","description":"SweetAlert is a JavaScript library that provides alternative alert and modal dialog boxes for web applications, with customisable features, aiming to improve the user interface of the default browser dialogs.","website":"https://sweetalert.js.org","common_platform_enumeration":"","icon":"SweetAlert.png","categories":["JavaScript libraries"]},{"name":"PHP:8.0.30","description":"PHP is a general-purpose scripting language used for web development.","website":"https://php.net","common_platform_enumeration":"cpe:2.3:a:php:php:*:*:*:*:*:*:*:*","icon":"PHP.svg","categories":["Programming languages"]}]},{"fqdn":"fonts.gstatic.com","ip":{"addr":"142.250.74.35","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":"2025-08-06T15:10:32.619142Z","alert_count":0,"request_count":2,"received_data":52774,"sent_data":1015,"comment":"","tags":null,"fingerprints":null},{"fqdn":"www.gstatic.com","ip":{"addr":"142.250.74.99","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"domain_registered":"2008-02-11","domain_rank":0,"first_seen":"2012-05-29T15:36:17Z","last_seen":"2025-08-06T15:25:08.133512Z","alert_count":0,"request_count":3,"received_data":44799,"sent_data":1682,"comment":"","tags":null,"fingerprints":null},{"fqdn":"fonts.googleapis.com","ip":{"addr":"142.250.74.10","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"domain_registered":"2005-01-25","domain_rank":8877,"first_seen":"2012-05-23T12:41:44Z","last_seen":"2025-08-06T15:14:12.503348Z","alert_count":0,"request_count":1,"received_data":1102,"sent_data":461,"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.google.com","ip":{"addr":"142.250.74.174","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"domain_registered":"1997-09-15","domain_rank":1156,"first_seen":"2012-05-30T01:30:32Z","last_seen":"2025-08-07T06:46:55.554534Z","alert_count":0,"request_count":2,"received_data":81196,"sent_data":948,"comment":"","tags":null,"fingerprints":null},{"fqdn":"translate.googleapis.com","ip":{"addr":"142.250.74.106","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"domain_registered":"2005-01-25","domain_rank":1005,"first_seen":"2012-05-31T07:21:21Z","last_seen":"2025-08-06T18:49:35.024477Z","alert_count":0,"request_count":3,"received_data":224978,"sent_data":1714,"comment":"","tags":null,"fingerprints":null}],"files":null,"artifacts":{"windows_shortcuts":null,"files":null,"telegram":null,"pdfs":null,"clipboard":null},"sensors":{"ids":[{"sensor_name":"suricata","description":"Suricata /w Emerging Threats Pro","alerts":null}],"analyzer":null,"urlquery":null},"javascript":{"script":[{"url":{"schema":"https","addr":"clear-vault.online/myaccount/js/jquery.min.js","fqdn":"clear-vault.online","domain":"clear-vault.online","tld":"online"},"ip":{"addr":"163.61.188.222","port":443,"asn":0,"as":"","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"c9f5aeeca3ad37bf2aa006139b935f0a","sha1":"1055018c28ab41087ef9ccefe411606893dabea2","sha256":"87083882cc6015984eb0411a99d3981817f5dc5c90ba24f0940420c5548d82de","sha512":"dcff2b5c2b8625d3593a7531ff4ddcd633939cc9f7acfeb79c18a9e6038fdaa99487960075502f159d44f902d965b0b5aed32b41bfa66a1dc07d85b5d5152b58","ssdeep":"1536:YNhEyjjTikEJO4edXXe9J578go6MWX2xkj8e4c4j2ll2AckaXEP6n15HZ+FhFcQ7:uxc2yjx4j2uX/kcQDU8Cu9","tlshash":"4483e6d9b2c67062977730b950bf410bb17a98dab44c8c60f158d9d47eb8a8d907bf2c","size":86659,"data":"","first_seen":"2023-03-07T01:02:00Z","last_seen":"2026-08-11T16:47:41.23025Z","times_seen":99376,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"clear-vault.online/myaccount/assets/js/scripts.js?ver=2.4.0","fqdn":"clear-vault.online","domain":"clear-vault.online","tld":"online"},"ip":{"addr":"163.61.188.222","port":443,"asn":0,"as":"","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"78eae7d06c77f84a7ef8cfd7922f5a85","sha1":"3a8aeac030ac32a9d1b7fa13220652fbc99eefe0","sha256":"adcd4f31c44fa2895618020d9ea8b74eaf28653c4b31831b58650fe40bf56127","sha512":"cc2771fac731c6178af4a9216b5ae283a7e816dbfdc9d4d9f45587083e01800fbfa1da47142875ecaf2d8383e85b84a780c6c4110e1cc8376a14bb64eac86b27","ssdeep":"384:Ge16sZQtbPG7oABqovdTvDKQuuYnaeTxQdsebfhBYHNDqOcIvlQ0aJlA1jxPiVuj:GSBqRF4R4akjN","tlshash":"e1b20c4974f710b6813b34ad86ef9409366b11074c1eda107d9c9b809f8493e95fafee","size":24949,"data":"","first_seen":"2023-03-12T20:42:29Z","last_seen":"2026-08-11T12:54:12.908135Z","times_seen":289,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"translate.googleapis.com/_/translate_http/_/js/k=translate_http.tr.no.ff6jKkbJ0bA.O/am=AAAE/d=1/exm=el_conf/ed=1/rs=AN8SPfp4Hk22P3fElU3_0oZE8w1Fbz_cbw/m=el_main","fqdn":"translate.googleapis.com","domain":"translate.googleapis.com","tld":"googleapis.com"},"ip":{"addr":"142.250.74.106","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"introduction_type":"scriptElement","is_inline":false,"md5":"bd815f5ccfeb9813f1f9d6b72908146a","sha1":"ddf716ab41f7fd13307801cb2950b9d48a7f7347","sha256":"4e871cf945b6c8976e1b27ba2fb7f673877cbd4475d8d47499d1594e671863f6","sha512":"d1bcbadbb94e0e4d915f64837cd944e6aecac51d3c2c511adba4913d4dbdb1be894fa4cf73f458f34a10bb3b213208a14696339b21d9f73239e7a6670e78dfa5","ssdeep":"3072:LztH9v7r8JBgE70owZMMCUjClVeVJjN5yHxu/9NAvp6e4zFArii:5IBgE1cJlLRi","tlshash":"3424e8d9b35270669363f4a6917f000bb13b6869f9484dacb28de8e25ef48190177f7c","size":222140,"data":"","first_seen":"2025-08-06T18:59:40.540514Z","last_seen":"2026-07-03T02:37:05.647724Z","times_seen":855,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"clear-vault.online/","fqdn":"clear-vault.online","domain":"clear-vault.online","tld":"online"},"ip":{"addr":"163.61.188.222","port":443,"asn":0,"as":"","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":true,"md5":"79d326aeaa6e19d724e6ea8be36c9b41","sha1":"56b0adbce5f2cbe9ea20c6291fcf57ce9ffb2c35","sha256":"60477c993d0d8fd8615f7c81f33b9a4359e34b180161f856640cab5d79866126","sha512":"a842662adac37e51e6e2c33d18f6377aa73e078f6ea553558acf79f4bf4fd0cc7c89aa060560cb8e7c3babc52ff276be78208e7b4ade2ea04d20df91426331d2","ssdeep":"","tlshash":"f2d01247b130150e049ab219e38519cc76788509053e0d25765290cb3db3fac230d1a4","size":197,"data":"","first_seen":"2023-03-07T01:41:05Z","last_seen":"2026-06-07T02:40:44.981399Z","times_seen":781,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"clear-vault.online/","fqdn":"clear-vault.online","domain":"clear-vault.online","tld":"online"},"ip":{"addr":"163.61.188.222","port":443,"asn":0,"as":"","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":true,"md5":"6dc1742264e81a396f9886fa0bc049b1","sha1":"461d95a6cb46ce83043d6a8cb7b4c37bde163ead","sha256":"70b7da08f4f481e8fa692d8427081dea5f7f83a8084a84cba1076f702e1e4418","sha512":"470d81718d4a46ea72fd348696d3303755e015b9980bfdbcdef32f7b614335fe5c58a8c69d06ebdcc752870eb3f048e430a9986de5da4625e2a247be9fdebcc7","ssdeep":"","tlshash":"61018b5a38b210b00777b079892f834a1b2060073c892d157b4c46c02f1de6cf1b6b85","size":670,"data":"","first_seen":"2025-08-07T20:48:57.552362Z","last_seen":"2025-08-07T20:48:57.552362Z","times_seen":1,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"clear-vault.online/myaccount/js/toastr.js","fqdn":"clear-vault.online","domain":"clear-vault.online","tld":"online"},"ip":{"addr":"163.61.188.222","port":443,"asn":0,"as":"","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"b8309849622865e0321015ec2482645d","sha1":"5ee2d93004b15046be73afc88d29d0b780d165bd","sha256":"3bffa2cee14e483c528eeade0e59f4705555bf047c2400b0bf9fda105129b638","sha512":"ab01b20bf9f714db876acd866a2641dae72ea17562e6a9a69609e340c9ad109a9f56f8c72a0815d966a505f16540e4c75f34978df34f5b487908b76ce6d0cd0e","ssdeep":"96:N6mApHxN4DcSDaeD88DG+v+LxyX5Y7LuQpbnt4g4EDNHChmGTotgl4NZjOKjv9:NBK+vxpYnPD4eNCfTo6SNZjOKh","tlshash":"38f1f0c1331fa75b4edb239c9036944cfa7de232854a147bb8a996986974708d3e32dc","size":8035,"data":"","first_seen":"2023-03-08T22:47:56Z","last_seen":"2026-08-11T12:54:12.933898Z","times_seen":1030,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"clear-vault.online/myaccount/assets/js/custom.js","fqdn":"clear-vault.online","domain":"clear-vault.online","tld":"online"},"ip":{"addr":"163.61.188.222","port":443,"asn":0,"as":"","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"148eb289a3c56badd113210da14f8f22","sha1":"7f957907636bc862f6bf03c2b6c9cbfbacee669e","sha256":"cd4d28b4aa5449c1f0721ea2a18a2539f4b763781c74fb12512d5087625aae7d","sha512":"5ad0ae7e6ecff10e5eb95fd6a9ab384b5724a6c841b8feea132bbf7a2ad8b92ec58f66d7802de3b9f250cdf3fbd605c6d219273ec476f50a145038b37c15e4b7","ssdeep":"384:3//hnAWJc1wEWOsjaZJ59kUXHakxfnMcMWheF8VUiglyK6Cp:vB12wlLu19h33dV6Mv4TVp","tlshash":"cb92fe1b756ca5b1027773b6953bcb06ff21612b1003c719babc99c06f35e9ca01adad","size":20558,"data":"","first_seen":"2023-03-12T20:42:29Z","last_seen":"2026-08-11T12:54:12.925239Z","times_seen":258,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"clear-vault.online/myaccount/assets/js/bundle.js?ver=2.4.0","fqdn":"clear-vault.online","domain":"clear-vault.online","tld":"online"},"ip":{"addr":"163.61.188.222","port":443,"asn":0,"as":"","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"b37367001130299bf41041651172378a","sha1":"e70a5e3774fda09283e90c6dde3d24f365502cbe","sha256":"3a1118ca4ff544e112d6f3d077b4786e57fe09f5e3949a7d2f84283476fe16b8","sha512":"5ab3f4bef917d4ae14c423437ac4c0574eb12ddf2c744c492c0b71f499e9b031099e1738a6c5298220da256899f94af308c5f6be1770cfe9e8dbd0a236cd16e4","ssdeep":"12288:qJ5pqY5WVanOwFHHYlbN7Kq+q7TMzGXhhffJc7Z3Mxa6:qjpqY5WVanOBN7FbXhhHQxk","tlshash":"31151888b281b13543eb30f5006f450fb2376969b40a8498f269d8d96d7cd8e61bbf7d","size":939484,"data":"","first_seen":"2023-03-10T15:57:31Z","last_seen":"2026-08-11T12:54:12.915039Z","times_seen":286,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"clear-vault.online/myaccount/js/vendors/sweetalert.js","fqdn":"clear-vault.online","domain":"clear-vault.online","tld":"online"},"ip":{"addr":"163.61.188.222","port":443,"asn":0,"as":"","country":"","country_code":"zz"},"introduction_type":"scriptElement","is_inline":false,"md5":"f3b8ce97ff6ce324da6232da353adf40","sha1":"2a3daabc70232c6350ab48d32605dc4a6ac1f1fa","sha256":"2ac46ebee46d515be86deeba385b4e41f8cff160364b362c9a6e153df327c66b","sha512":"000d41ce9e50d0ad4a6a728a9af37fe1ddc844a565bfd3d883014fbe6df69cf3ba412f321f51ceecb6e0075a6088ec4fb5f7a0e73127d9b6bae0c51ca89c7a08","ssdeep":"384:/BLa4qL1li0jldLUuuRzdNU/CfFqLyX9ye1hAbj/i5Yy/kyyeu8pgUqaF2XSSHEj:ZLahUvdNU/CNqWX9ye1hWz8+B3c2Bkj","tlshash":"96031a96758470a643e398f191ef020ef2359523b84798d5b361e8e88ff4e8d50a7f1b","size":40808,"data":"","first_seen":"2023-03-07T01:03:31Z","last_seen":"2026-08-11T14:18:56.347048Z","times_seen":11755,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"about","addr":"about:srcdoc#202","fqdn":"","domain":"","tld":""},"ip":{"addr":"0.0.0.0","port":0,"asn":0,"as":"","country":"","country_code":"ZZ"},"introduction_type":"scriptElement","is_inline":false,"md5":"888a21ab7fc56d220a59dd25a83b18b6","sha1":"3bc9b8d495cf8e016aadf7e2bba091f2bd8b7188","sha256":"18c0d112e350349ca7390bc25c50a5fc92e9dc9b63416147c7e57851d105237e","sha512":"3dd8c3099c3300b3f74ffbe65e93e383d5c31087fb362f08bb241107c1061ef7dc8b61113851723a8588b54465c38056721341402f6a0072adce178ed3daf86e","ssdeep":"","tlshash":"b73147cdbbb7e0554272209a992f860bf17a2577981cd050e555ccd0fc70e9b447de14","size":1713,"data":"","first_seen":"2025-06-11T00:07:11.79824Z","last_seen":"2026-08-11T13:36:35.044853Z","times_seen":37118,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"clear-vault.online/_/translate_http/_/js/k=translate_http.tr.no.ff6jKkbJ0bA.O/am=hMA/d=1/rs=AN8SPfq7TQGKZ4HgEX3K4EJn_NK-vJRTXw/m=el_conf","fqdn":"clear-vault.online","domain":"clear-vault.online","tld":"online"},"ip":{"addr":"0.0.0.0","port":0,"asn":0,"as":"","country":"","country_code":"ZZ"},"introduction_type":"scriptElement","is_inline":false,"md5":"1487d366566a030376dab7241cc7883a","sha1":"a6a374b471a00e4669027fd261a55eda8a315f32","sha256":"c519c8e475e8220b5f00f9e0eca06f797c1a4aa828fede3b0826f324c7ff7266","sha512":"a3c3e10a973ae52b7904097919afb657a3bb4733536c97135cecf1a83a85626197e3c99d6127c7862bfa1d5955912af420f440dd4d57591677ccfc35b17c2c0a","ssdeep":"1536:XL5OCUXAtx+lUH2vCzFFpKbTiMOqbWr1RxgumlL1HvinwNWTe:Xd7BzxKbTwJE1viDe","tlshash":"9e73c8c8b6a674668367f5b5513f000fb23f5899e80c4cacb288d8e16eb5949413bf7d","size":78884,"data":"","first_seen":"2025-08-07T20:37:48.96885Z","last_seen":"2025-08-07T21:00:53.29991Z","times_seen":15,"alerts":{"ids":null,"analyzer":null,"urlquery":null}}],"eval":null,"write":[{"md5":"e1f7ac14a14a4edf5b42831759b42719","sha1":"05791ec59d8f1ee1f231fea0424014d1b2dd2e3d","sha256":"d1dafed4a178c464c05ce5eb809ea3afa30a5b0fed6870c58a1ef24837006886","sha512":"ad1f6bde08d9866ee2612ebb7701df6c3fd4ff544407370cd7c0997b40694fa0b7fde28c6a25fc6690880041e2d2b7cc331635d1a7df009d50fd292477e42780","ssdeep":"","tlshash":"d65130a1605ca01b5513d9d1f8a23eeef0ee0058c77268d07e1c29cfdadaeb7049b16d","size":3010,"data":"","first_seen":"2025-08-01T04:47:54.576934Z","last_seen":"2025-08-14T18:31:28.271994Z","times_seen":139,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"md5":"b4157d00e193bcf2d062c94fdd976384","sha1":"ce893f8a16afd9ea6ce234b55483f91b72b063a3","sha256":"df2117ed39ea1d1c6a8ed1c6425cd845139833c7ba180b3e7596a9a230ce2c58","sha512":"359bb073fd8d5f5056d0bb9f12ce89e62591812d0e608d4edd631a91274aa63cb500d70f9c9bb62a195f9d7aeeeab9f976ee0436d8dafcb6d55bfd3cfbd6e5fc","ssdeep":"","tlshash":"4bf0d4720134e8158652c620f6d4653de103d50555686c95335800b9f19425980dfed8","size":469,"data":"","first_seen":"2025-08-01T04:47:54.575365Z","last_seen":"2025-08-14T18:31:28.270812Z","times_seen":189,"alerts":{"ids":null,"analyzer":null,"urlquery":null}}],"console":null},"http":[{"url":{"schema":"https","addr":"clear-vault.online/myaccount/assets/css/theme.css?ver=2.4.0","fqdn":"clear-vault.online","domain":"clear-vault.online","tld":"online"},"ip":{"addr":"163.61.188.222","port":443,"asn":0,"as":"","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://clear-vault.online/","date":"2025-08-07T20:48:21.188Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.clear-vault.online","organization":""},"issuer":{"commonName":"R10","organization":"Let's Encrypt"},"validity":{"start":"Mon, 16 Jun 2025 11:19:04 GMT","end":"Sun, 14 Sep 2025 11:19:03 GMT"},"fingerprint":{"sha1":"B5:E4:FF:81:2F:18:5B:84:17:4F:FD:F3:B1:30:00:31:3C:9C:0B:6F","sha256":"D8:BC:E6:FB:32:84:D6:43:47:2F:20:BA:56:C3:6C:DA:94:89:5F:DD:A3:3B:02:B9:36:2B:50:1E:79:03:E9:D6"}}},"request":{"raw":"GET /myaccount/assets/css/theme.css?ver=2.4.0 HTTP/1.1\r\nHost: clear-vault.online\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.5\r\nAccept-Encoding: gzip, deflate, br\r\nDNT: 1\r\nConnection: keep-alive\r\nReferer: https://clear-vault.online/\r\nCookie: PHPSESSID=1f922d27e0c65bdcb87ee1a396055a92\r\nSec-Fetch-Dest: style\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/3 200 OK\r\ncache-control: public, max-age=604800\r\nexpires: Thu, 14 Aug 2025 20:48:21 GMT\r\ncontent-type: text/css\r\nlast-modified: Thu, 11 May 2023 18:14:16 GMT\r\naccept-ranges: bytes\r\ncontent-length: 175\r\ndate: Thu, 07 Aug 2025 20:48:21 GMT\r\nserver: LiteSpeed\r\nstrict-transport-security: max-age=16070400;\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]},{"name":"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":175,"size_decoded":0,"mime_type":"text/css","magic":"ASCII text, with CRLF, LF line terminators","md5":"8d0915e1eeea8511fe34275ff68666f6","sha1":"bced5301d3530b50269258edb62d0a4e58f12e5f","sha256":"10d0f050edd4accdb98ca99f3d93c108591db894d8baacaede986882ce973019","sha512":"15172d0f369e6ba8cb371ea97f668733e09e72bbb3cf8069ce2fa14160c173330203127a675193ceaa8389a01bf7363bb62500ffb324f6aa6e57065f5e1908fc","ssdeep":"","tlshash":"19c08c1c138342226ab34f8e22f42163e662b718a1c2a694f0830ca08e330b78548f0c","first_seen":"2023-04-06T19:06:49Z","last_seen":"2026-08-11T12:54:12.913525Z","times_seen":340,"resource_available":false,"data":"LyohDQogKiBUaGVtZSBOYW1lOiBEZWZhdWx0DQogKiBQYWNrYWdlIDogRGFzaExpdGUNCiAqIEF1dGhvcjogU29mdG5pbw0KICogQXV0aG9yIFVSSTogaHR0cDovL3RoZW1lZm9yZXN0Lm5ldC91c2VyL3NvZnRuaW8NCiAqIFZlcnNpb24JIDoJMS4wLjANCiAqIFVwZGF0ZWQJIDoJMDcuMjMuMjAyMA0KKiovCg=="}},"time_used":265,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":265,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"clear-vault.online/myaccount/js/vendors/sweetalert.js","fqdn":"clear-vault.online","domain":"clear-vault.online","tld":"online"},"ip":{"addr":"163.61.188.222","port":443,"asn":0,"as":"","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://clear-vault.online/","date":"2025-08-07T20:48:21.208Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.clear-vault.online","organization":""},"issuer":{"commonName":"R10","organization":"Let's Encrypt"},"validity":{"start":"Mon, 16 Jun 2025 11:19:04 GMT","end":"Sun, 14 Sep 2025 11:19:03 GMT"},"fingerprint":{"sha1":"B5:E4:FF:81:2F:18:5B:84:17:4F:FD:F3:B1:30:00:31:3C:9C:0B:6F","sha256":"D8:BC:E6:FB:32:84:D6:43:47:2F:20:BA:56:C3:6C:DA:94:89:5F:DD:A3:3B:02:B9:36:2B:50:1E:79:03:E9:D6"}}},"request":{"raw":"GET /myaccount/js/vendors/sweetalert.js HTTP/1.1\r\nHost: clear-vault.online\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.5\r\nAccept-Encoding: gzip, deflate, br\r\nDNT: 1\r\nConnection: keep-alive\r\nReferer: https://clear-vault.online/\r\nCookie: PHPSESSID=1f922d27e0c65bdcb87ee1a396055a92\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/3 200 OK\r\ncontent-type: text/javascript\r\nlast-modified: Thu, 11 May 2023 18:14:15 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 11427\r\ndate: Thu, 07 Aug 2025 20:48:21 GMT\r\nserver: LiteSpeed\r\nstrict-transport-security: max-age=16070400;\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]},{"name":"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":40808,"size_decoded":0,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (40808), with no line terminators","md5":"f3b8ce97ff6ce324da6232da353adf40","sha1":"2a3daabc70232c6350ab48d32605dc4a6ac1f1fa","sha256":"2ac46ebee46d515be86deeba385b4e41f8cff160364b362c9a6e153df327c66b","sha512":"000d41ce9e50d0ad4a6a728a9af37fe1ddc844a565bfd3d883014fbe6df69cf3ba412f321f51ceecb6e0075a6088ec4fb5f7a0e73127d9b6bae0c51ca89c7a08","ssdeep":"384:/BLa4qL1li0jldLUuuRzdNU/CfFqLyX9ye1hAbj/i5Yy/kyyeu8pgUqaF2XSSHEj:ZLahUvdNU/CNqWX9ye1hWz8+B3c2Bkj","tlshash":"96031a96758470a643e398f191ef020ef2359523b84798d5b361e8e88ff4e8d50a7f1b","first_seen":"2023-03-07T01:03:31Z","last_seen":"2026-08-11T14:18:56.347048Z","times_seen":11755,"resource_available":true,"data":"IWZ1bmN0aW9uKHQsZSl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz1lKCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoW10sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP2V4cG9ydHMuc3dhbD1lKCk6dC5zd2FsPWUoKX0odGhpcyxmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtmdW5jdGlvbiBlKG8pe2lmKG5bb10pcmV0dXJuIG5bb10uZXhwb3J0czt2YXIgcj1uW29dPXtpOm8sbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gdFtvXS5jYWxsKHIuZXhwb3J0cyxyLHIuZXhwb3J0cyxlKSxyLmw9ITAsci5leHBvcnRzfXZhciBuPXt9O3JldHVybiBlLm09dCxlLmM9bixlLmQ9ZnVuY3Rpb24odCxuLG8pe2Uubyh0LG4pfHxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMCxnZXQ6b30pfSxlLm49ZnVuY3Rpb24odCl7dmFyIG49dCYmdC5fX2VzTW9kdWxlP2Z1bmN0aW9uKCl7cmV0dXJuIHQuZGVmYXVsdH06ZnVuY3Rpb24oKXtyZXR1cm4gdH07cmV0dXJuIGUuZChuLCJhIixuKSxufSxlLm89ZnVuY3Rpb24odCxlKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsZSl9LGUucD0iIixlKGUucz04KX0oW2Z1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBvPSJzd2FsLWJ1dHRvbiI7ZS5DTEFTU19OQU1FUz17TU9EQUw6InN3YWwtbW9kYWwiLE9WRVJMQVk6InN3YWwtb3ZlcmxheSIsU0hPV19NT0RBTDoic3dhbC1vdmVybGF5LS1zaG93LW1vZGFsIixNT0RBTF9USVRMRToic3dhbC10aXRsZSIsTU9EQUxfVEVYVDoic3dhbC10ZXh0IixJQ09OOiJzd2FsLWljb24iLElDT05fQ1VTVE9NOiJzd2FsLWljb24tLWN1c3RvbSIsQ09OVEVOVDoic3dhbC1jb250ZW50IixGT09URVI6InN3YWwtZm9vdGVyIixCVVRUT05fQ09OVEFJTkVSOiJzd2FsLWJ1dHRvbi1jb250YWluZXIiLEJVVFRPTjpvLENPTkZJUk1fQlVUVE9OOm8rIi0tY29uZmlybSIsQ0FOQ0VMX0JVVFRPTjpvKyItLWNhbmNlbCIsREFOR0VSX0JVVFRPTjpvKyItLWRhbmdlciIsQlVUVE9OX0xPQURJTkc6bysiLS1sb2FkaW5nIixCVVRUT05fTE9BREVSOm8rIl9fbG9hZGVyIn0sZS5kZWZhdWx0PWUuQ0xBU1NfTkFNRVN9LGZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGUuZ2V0Tm9kZT1mdW5jdGlvbih0KXt2YXIgZT0iLiIrdDtyZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihlKX0sZS5zdHJpbmdUb05vZGU9ZnVuY3Rpb24odCl7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIGUuaW5uZXJIVE1MPXQudHJpbSgpLGUuZmlyc3RDaGlsZH0sZS5pbnNlcnRBZnRlcj1mdW5jdGlvbih0LGUpe3ZhciBuPWUubmV4dFNpYmxpbmc7ZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0LG4pfSxlLnJlbW92ZU5vZGU9ZnVuY3Rpb24odCl7dC5wYXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKHQpfSxlLnRocm93RXJyPWZ1bmN0aW9uKHQpe3Rocm93IHQ9dC5yZXBsYWNlKC8gKyg/PSApL2csIiIpLCJTd2VldEFsZXJ0OiAiKyh0PXQudHJpbSgpKX0sZS5pc1BsYWluT2JqZWN0PWZ1bmN0aW9uKHQpe2lmKCJbb2JqZWN0IE9iamVjdF0iIT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpKXJldHVybiExO3ZhciBlPU9iamVjdC5nZXRQcm90b3R5cGVPZih0KTtyZXR1cm4gbnVsbD09PWV8fGU9PT1PYmplY3QucHJvdG90eXBlfSxlLm9yZGluYWxTdWZmaXhPZj1mdW5jdGlvbih0KXt2YXIgZT10JTEwLG49dCUxMDA7cmV0dXJuIDE9PT1lJiYxMSE9PW4/dCsic3QiOjI9PT1lJiYxMiE9PW4/dCsibmQiOjM9PT1lJiYxMyE9PW4/dCsicmQiOnQrInRoIn19LGZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbyh0KXtmb3IodmFyIG4gaW4gdCllLmhhc093blByb3BlcnR5KG4pfHwoZVtuXT10W25dKX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksbyhuKDI1KSk7dmFyIHI9bigyNik7ZS5vdmVybGF5TWFya3VwPXIuZGVmYXVsdCxvKG4oMjcpKSxvKG4oMjgpKSxvKG4oMjkpKTt2YXIgaT1uKDApLGE9aS5kZWZhdWx0Lk1PREFMX1RJVExFLHM9aS5kZWZhdWx0Lk1PREFMX1RFWFQsYz1pLmRlZmF1bHQuSUNPTixsPWkuZGVmYXVsdC5GT09URVI7ZS5pY29uTWFya3VwPSdcbiAgPGRpdiBjbGFzcz0iJytjKyciPjwvZGl2PicsZS50aXRsZU1hcmt1cD0nXG4gIDxkaXYgY2xhc3M9IicrYSsnIj48L2Rpdj5cbicsZS50ZXh0TWFya3VwPSdcbiAgPGRpdiBjbGFzcz0iJytzKyciPjwvZGl2PicsZS5mb290ZXJNYXJrdXA9J1xuICA8ZGl2IGNsYXNzPSInK2wrJyI+PC9kaXY+XG4nfSxmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbz1uKDEpO2UuQ09ORklSTV9LRVk9ImNvbmZpcm0iLGUuQ0FOQ0VMX0tFWT0iY2FuY2VsIjt2YXIgcj17dmlzaWJsZTohMCx0ZXh0Om51bGwsdmFsdWU6bnVsbCxjbGFzc05hbWU6IiIsY2xvc2VNb2RhbDohMH0saT1PYmplY3QuYXNzaWduKHt9LHIse3Zpc2libGU6ITEsdGV4dDoiQ2FuY2VsIix2YWx1ZTpudWxsfSksYT1PYmplY3QuYXNzaWduKHt9LHIse3RleHQ6Ik9LIix2YWx1ZTohMH0pO2UuZGVmYXVsdEJ1dHRvbkxpc3Q9e2NhbmNlbDppLGNvbmZpcm06YX07dmFyIHM9ZnVuY3Rpb24odCl7c3dpdGNoKHQpe2Nhc2UgZS5DT05GSVJNX0tFWTpyZXR1cm4gYTtjYXNlIGUuQ0FOQ0VMX0tFWTpyZXR1cm4gaTtkZWZhdWx0OnZhciBuPXQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrdC5zbGljZSgxKTtyZXR1cm4gT2JqZWN0LmFzc2lnbih7fSxyLHt0ZXh0Om4sdmFsdWU6dH0pfX0sYz1mdW5jdGlvbih0LGUpe3ZhciBuPXModCk7cmV0dXJuITA9PT1lP09iamVjdC5hc3NpZ24oe30sbix7dmlzaWJsZTohMH0pOiJzdHJpbmciPT10eXBlb2YgZT9PYmplY3QuYXNzaWduKHt9LG4se3Zpc2libGU6ITAsdGV4dDplfSk6by5pc1BsYWluT2JqZWN0KGUpP09iamVjdC5hc3NpZ24oe3Zpc2libGU6ITB9LG4sZSk6T2JqZWN0LmFzc2lnbih7fSxuLHt2aXNpYmxlOiExfSl9LGw9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXt9LG49MCxvPU9iamVjdC5rZXlzKHQpO248by5sZW5ndGg7bisrKXt2YXIgcj1vW25dLGE9dFtyXSxzPWMocixhKTtlW3JdPXN9cmV0dXJuIGUuY2FuY2VsfHwoZS5jYW5jZWw9aSksZX0sdT1mdW5jdGlvbih0KXt2YXIgbj17fTtzd2l0Y2godC5sZW5ndGgpe2Nhc2UgMTpuW2UuQ0FOQ0VMX0tFWV09T2JqZWN0LmFzc2lnbih7fSxpLHt2aXNpYmxlOiExfSk7YnJlYWs7Y2FzZSAyOm5bZS5DQU5DRUxfS0VZXT1jKGUuQ0FOQ0VMX0tFWSx0WzBdKSxuW2UuQ09ORklSTV9LRVldPWMoZS5DT05GSVJNX0tFWSx0WzFdKTticmVhaztkZWZhdWx0Om8udGhyb3dFcnIoIkludmFsaWQgbnVtYmVyIG9mICdidXR0b25zJyBpbiBhcnJheSAoIit0Lmxlbmd0aCsiKS5cbiAgICAgIElmIHlvdSB3YW50IG1vcmUgdGhhbiAyIGJ1dHRvbnMsIHlvdSBuZWVkIHRvIHVzZSBhbiBvYmplY3QhIil9cmV0dXJuIG59O2UuZ2V0QnV0dG9uTGlzdE9wdHM9ZnVuY3Rpb24odCl7dmFyIG49ZS5kZWZhdWx0QnV0dG9uTGlzdDtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/bltlLkNPTkZJUk1fS0VZXT1jKGUuQ09ORklSTV9LRVksdCk6QXJyYXkuaXNBcnJheSh0KT9uPXUodCk6by5pc1BsYWluT2JqZWN0KHQpP249bCh0KTohMD09PXQ/bj11KFshMCwhMF0pOiExPT09dD9uPXUoWyExLCExXSk6dm9pZCAwPT09dCYmKG49ZS5kZWZhdWx0QnV0dG9uTGlzdCksbn19LGZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBvPW4oMSkscj1uKDIpLGk9bigwKSxhPWkuZGVmYXVsdC5NT0RBTCxzPWkuZGVmYXVsdC5PVkVSTEFZLGM9bigzMCksbD1uKDMxKSx1PW4oMzIpLGY9bigzMyk7ZS5pbmplY3RFbEludG9Nb2RhbD1mdW5jdGlvbih0KXt2YXIgZT1vLmdldE5vZGUoYSksbj1vLnN0cmluZ1RvTm9kZSh0KTtyZXR1cm4gZS5hcHBlbmRDaGlsZChuKSxufTt2YXIgZD1mdW5jdGlvbih0KXt0LmNsYXNzTmFtZT1hLHQudGV4dENvbnRlbnQ9IiJ9LHA9ZnVuY3Rpb24odCxlKXtkKHQpO3ZhciBuPWUuY2xhc3NOYW1lO24mJnQuY2xhc3NMaXN0LmFkZChuKX07ZS5pbml0TW9kYWxDb250ZW50PWZ1bmN0aW9uKHQpe3ZhciBlPW8uZ2V0Tm9kZShhKTtwKGUsdCksYy5kZWZhdWx0KHQuaWNvbiksbC5pbml0VGl0bGUodC50aXRsZSksbC5pbml0VGV4dCh0LnRleHQpLGYuZGVmYXVsdCh0LmNvbnRlbnQpLHUuZGVmYXVsdCh0LmJ1dHRvbnMsdC5kYW5nZXJNb2RlKX07dmFyIG09ZnVuY3Rpb24oKXt2YXIgdD1vLmdldE5vZGUocyksZT1vLnN0cmluZ1RvTm9kZShyLm1vZGFsTWFya3VwKTt0LmFwcGVuZENoaWxkKGUpfTtlLmRlZmF1bHQ9bX0sZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG89bigzKSxyPXtpc09wZW46ITEscHJvbWlzZTpudWxsLGFjdGlvbnM6e30sdGltZXI6bnVsbH0saT1PYmplY3QuYXNzaWduKHt9LHIpO2UucmVzZXRTdGF0ZT1mdW5jdGlvbigpe2k9T2JqZWN0LmFzc2lnbih7fSxyKX0sZS5zZXRBY3Rpb25WYWx1ZT1mdW5jdGlvbih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIGEoby5DT05GSVJNX0tFWSx0KTtmb3IodmFyIGUgaW4gdClhKGUsdFtlXSl9O3ZhciBhPWZ1bmN0aW9uKHQsZSl7aS5hY3Rpb25zW3RdfHwoaS5hY3Rpb25zW3RdPXt9KSxPYmplY3QuYXNzaWduKGkuYWN0aW9uc1t0XSx7dmFsdWU6ZX0pfTtlLnNldEFjdGlvbk9wdGlvbnNGb3I9ZnVuY3Rpb24odCxlKXt2YXIgbj0odm9pZCAwPT09ZT97fTplKS5jbG9zZU1vZGFsLG89dm9pZCAwPT09bnx8bjtPYmplY3QuYXNzaWduKGkuYWN0aW9uc1t0XSx7Y2xvc2VNb2RhbDpvfSl9LGUuZGVmYXVsdD1pfSxmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbz1uKDEpLHI9bigzKSxpPW4oMCksYT1pLmRlZmF1bHQuT1ZFUkxBWSxzPWkuZGVmYXVsdC5TSE9XX01PREFMLGM9aS5kZWZhdWx0LkJVVFRPTixsPWkuZGVmYXVsdC5CVVRUT05fTE9BRElORyx1PW4oNSk7ZS5vcGVuTW9kYWw9ZnVuY3Rpb24oKXtvLmdldE5vZGUoYSkuY2xhc3NMaXN0LmFkZChzKSx1LmRlZmF1bHQuaXNPcGVuPSEwfTt2YXIgZj1mdW5jdGlvbigpe28uZ2V0Tm9kZShhKS5jbGFzc0xpc3QucmVtb3ZlKHMpLHUuZGVmYXVsdC5pc09wZW49ITF9O2Uub25BY3Rpb249ZnVuY3Rpb24odCl7dm9pZCAwPT09dCYmKHQ9ci5DQU5DRUxfS0VZKTt2YXIgZT11LmRlZmF1bHQuYWN0aW9uc1t0XSxuPWUudmFsdWU7aWYoITE9PT1lLmNsb3NlTW9kYWwpe3ZhciBpPWMrIi0tIit0O28uZ2V0Tm9kZShpKS5jbGFzc0xpc3QuYWRkKGwpfWVsc2UgZigpO3UuZGVmYXVsdC5wcm9taXNlLnJlc29sdmUobil9LGUuZ2V0U3RhdGU9ZnVuY3Rpb24oKXt2YXIgdD1PYmplY3QuYXNzaWduKHt9LHUuZGVmYXVsdCk7cmV0dXJuIGRlbGV0ZSB0LnByb21pc2UsZGVsZXRlIHQudGltZXIsdH0sZS5zdG9wTG9hZGluZz1mdW5jdGlvbigpe2Zvcih2YXIgdD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuIitjKSxlPTA7ZTx0Lmxlbmd0aDtlKyspe3RbZV0uY2xhc3NMaXN0LnJlbW92ZShsKX19fSxmdW5jdGlvbih0LGUpe3ZhciBuO249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30oKTt0cnl7bj1ufHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpfHwoMCxldmFsKSgidGhpcyIpfWNhdGNoKHQpeyJvYmplY3QiPT10eXBlb2Ygd2luZG93JiYobj13aW5kb3cpfXQuZXhwb3J0cz1ufSxmdW5jdGlvbih0LGUsbil7KGZ1bmN0aW9uKGUpe3QuZXhwb3J0cz1lLnN3ZWV0QWxlcnQ9big5KX0pLmNhbGwoZSxuKDcpKX0sZnVuY3Rpb24odCxlLG4peyhmdW5jdGlvbihlKXt0LmV4cG9ydHM9ZS5zd2FsPW4oMTApfSkuY2FsbChlLG4oNykpfSxmdW5jdGlvbih0LGUsbil7InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJm4oMTEpLG4oMTYpO3ZhciBvPW4oMjMpLmRlZmF1bHQ7dC5leHBvcnRzPW99LGZ1bmN0aW9uKHQsZSxuKXt2YXIgbz1uKDEyKTsic3RyaW5nIj09dHlwZW9mIG8mJihvPVtbdC5pLG8sIiJdXSk7dmFyIHI9e2luc2VydEF0OiJ0b3AifTtyLnRyYW5zZm9ybT12b2lkIDA7bigxNCkobyxyKTtvLmxvY2FscyYmKHQuZXhwb3J0cz1vLmxvY2Fscyl9LGZ1bmN0aW9uKHQsZSxuKXtlPXQuZXhwb3J0cz1uKDEzKSh2b2lkIDApLGUucHVzaChbdC5pLCcuc3dhbC1pY29uLS1lcnJvcntib3JkZXItY29sb3I6I2YyNzQ3NDstd2Via2l0LWFuaW1hdGlvbjphbmltYXRlRXJyb3JJY29uIC41czthbmltYXRpb246YW5pbWF0ZUVycm9ySWNvbiAuNXN9LnN3YWwtaWNvbi0tZXJyb3JfX3gtbWFya3twb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrOy13ZWJraXQtYW5pbWF0aW9uOmFuaW1hdGVYTWFyayAuNXM7YW5pbWF0aW9uOmFuaW1hdGVYTWFyayAuNXN9LnN3YWwtaWNvbi0tZXJyb3JfX2xpbmV7cG9zaXRpb246YWJzb2x1dGU7aGVpZ2h0OjVweDt3aWR0aDo0N3B4O2JhY2tncm91bmQtY29sb3I6I2YyNzQ3NDtkaXNwbGF5OmJsb2NrO3RvcDozN3B4O2JvcmRlci1yYWRpdXM6MnB4fS5zd2FsLWljb24tLWVycm9yX19saW5lLS1sZWZ0ey13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyk7dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyk7bGVmdDoxN3B4fS5zd2FsLWljb24tLWVycm9yX19saW5lLS1yaWdodHstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKTt0cmFuc2Zvcm06cm90YXRlKC00NWRlZyk7cmlnaHQ6MTZweH1ALXdlYmtpdC1rZXlmcmFtZXMgYW5pbWF0ZUVycm9ySWNvbnswJXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGVYKDEwMGRlZyk7dHJhbnNmb3JtOnJvdGF0ZVgoMTAwZGVnKTtvcGFjaXR5OjB9dG97LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlWCgwZGVnKTt0cmFuc2Zvcm06cm90YXRlWCgwZGVnKTtvcGFjaXR5OjF9fUBrZXlmcmFtZXMgYW5pbWF0ZUVycm9ySWNvbnswJXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGVYKDEwMGRlZyk7dHJhbnNmb3JtOnJvdGF0ZVgoMTAwZGVnKTtvcGFjaXR5OjB9dG97LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlWCgwZGVnKTt0cmFuc2Zvcm06cm90YXRlWCgwZGVnKTtvcGFjaXR5OjF9fUAtd2Via2l0LWtleWZyYW1lcyBhbmltYXRlWE1hcmt7MCV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoLjQpO3RyYW5zZm9ybTpzY2FsZSguNCk7bWFyZ2luLXRvcDoyNnB4O29wYWNpdHk6MH01MCV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoLjQpO3RyYW5zZm9ybTpzY2FsZSguNCk7bWFyZ2luLXRvcDoyNnB4O29wYWNpdHk6MH04MCV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMS4xNSk7dHJhbnNmb3JtOnNjYWxlKDEuMTUpO21hcmdpbi10b3A6LTZweH10b3std2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKTt0cmFuc2Zvcm06c2NhbGUoMSk7bWFyZ2luLXRvcDowO29wYWNpdHk6MX19QGtleWZyYW1lcyBhbmltYXRlWE1hcmt7MCV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoLjQpO3RyYW5zZm9ybTpzY2FsZSguNCk7bWFyZ2luLXRvcDoyNnB4O29wYWNpdHk6MH01MCV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoLjQpO3RyYW5zZm9ybTpzY2FsZSguNCk7bWFyZ2luLXRvcDoyNnB4O29wYWNpdHk6MH04MCV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMS4xNSk7dHJhbnNmb3JtOnNjYWxlKDEuMTUpO21hcmdpbi10b3A6LTZweH10b3std2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKTt0cmFuc2Zvcm06c2NhbGUoMSk7bWFyZ2luLXRvcDowO29wYWNpdHk6MX19LnN3YWwtaWNvbi0td2FybmluZ3tib3JkZXItY29sb3I6I2Y4YmI4Njstd2Via2l0LWFuaW1hdGlvbjpwdWxzZVdhcm5pbmcgLjc1cyBpbmZpbml0ZSBhbHRlcm5hdGU7YW5pbWF0aW9uOnB1bHNlV2FybmluZyAuNzVzIGluZmluaXRlIGFsdGVybmF0ZX0uc3dhbC1pY29uLS13YXJuaW5nX19ib2R5e3dpZHRoOjVweDtoZWlnaHQ6NDdweDt0b3A6MTBweDtib3JkZXItcmFkaXVzOjJweDttYXJnaW4tbGVmdDotMnB4fS5zd2FsLWljb24tLXdhcm5pbmdfX2JvZHksLnN3YWwtaWNvbi0td2FybmluZ19fZG90e3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6NTAlO2JhY2tncm91bmQtY29sb3I6I2Y4YmI4Nn0uc3dhbC1pY29uLS13YXJuaW5nX19kb3R7d2lkdGg6N3B4O2hlaWdodDo3cHg7Ym9yZGVyLXJhZGl1czo1MCU7bWFyZ2luLWxlZnQ6LTRweDtib3R0b206LTExcHh9QC13ZWJraXQta2V5ZnJhbWVzIHB1bHNlV2FybmluZ3swJXtib3JkZXItY29sb3I6I2Y4ZDQ4Nn10b3tib3JkZXItY29sb3I6I2Y4YmI4Nn19QGtleWZyYW1lcyBwdWxzZVdhcm5pbmd7MCV7Ym9yZGVyLWNvbG9yOiNmOGQ0ODZ9dG97Ym9yZGVyLWNvbG9yOiNmOGJiODZ9fS5zd2FsLWljb24tLXN1Y2Nlc3N7Ym9yZGVyLWNvbG9yOiNhNWRjODZ9LnN3YWwtaWNvbi0tc3VjY2VzczphZnRlciwuc3dhbC1pY29uLS1zdWNjZXNzOmJlZm9yZXtjb250ZW50OiIiO2JvcmRlci1yYWRpdXM6NTAlO3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjYwcHg7aGVpZ2h0OjEyMHB4O2JhY2tncm91bmQ6I2ZmZjstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoNDVkZWcpO3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfS5zd2FsLWljb24tLXN1Y2Nlc3M6YmVmb3Jle2JvcmRlci1yYWRpdXM6MTIwcHggMCAwIDEyMHB4O3RvcDotN3B4O2xlZnQ6LTMzcHg7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC00NWRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpOy13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjo2MHB4IDYwcHg7dHJhbnNmb3JtLW9yaWdpbjo2MHB4IDYwcHh9LnN3YWwtaWNvbi0tc3VjY2VzczphZnRlcntib3JkZXItcmFkaXVzOjAgMTIwcHggMTIwcHggMDt0b3A6LTExcHg7bGVmdDozMHB4Oy13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpO3RyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKTstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46MCA2MHB4O3RyYW5zZm9ybS1vcmlnaW46MCA2MHB4Oy13ZWJraXQtYW5pbWF0aW9uOnJvdGF0ZVBsYWNlaG9sZGVyIDQuMjVzIGVhc2UtaW47YW5pbWF0aW9uOnJvdGF0ZVBsYWNlaG9sZGVyIDQuMjVzIGVhc2UtaW59LnN3YWwtaWNvbi0tc3VjY2Vzc19fcmluZ3t3aWR0aDo4MHB4O2hlaWdodDo4MHB4O2JvcmRlcjo0cHggc29saWQgaHNsYSg5OCw1NSUsNjklLC4yKTtib3JkZXItcmFkaXVzOjUwJTtib3gtc2l6aW5nOmNvbnRlbnQtYm94O3Bvc2l0aW9uOmFic29sdXRlO2xlZnQ6LTRweDt0b3A6LTRweDt6LWluZGV4OjJ9LnN3YWwtaWNvbi0tc3VjY2Vzc19faGlkZS1jb3JuZXJze3dpZHRoOjVweDtoZWlnaHQ6OTBweDtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7cGFkZGluZzoxcHg7cG9zaXRpb246YWJzb2x1dGU7bGVmdDoyOHB4O3RvcDo4cHg7ei1pbmRleDoxOy13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpO3RyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKX0uc3dhbC1pY29uLS1zdWNjZXNzX19saW5le2hlaWdodDo1cHg7YmFja2dyb3VuZC1jb2xvcjojYTVkYzg2O2Rpc3BsYXk6YmxvY2s7Ym9yZGVyLXJhZGl1czoycHg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoyfS5zd2FsLWljb24tLXN1Y2Nlc3NfX2xpbmUtLXRpcHt3aWR0aDoyNXB4O2xlZnQ6MTRweDt0b3A6NDZweDstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoNDVkZWcpO3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpOy13ZWJraXQtYW5pbWF0aW9uOmFuaW1hdGVTdWNjZXNzVGlwIC43NXM7YW5pbWF0aW9uOmFuaW1hdGVTdWNjZXNzVGlwIC43NXN9LnN3YWwtaWNvbi0tc3VjY2Vzc19fbGluZS0tbG9uZ3t3aWR0aDo0N3B4O3JpZ2h0OjhweDt0b3A6MzhweDstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKTt0cmFuc2Zvcm06cm90YXRlKC00NWRlZyk7LXdlYmtpdC1hbmltYXRpb246YW5pbWF0ZVN1Y2Nlc3NMb25nIC43NXM7YW5pbWF0aW9uOmFuaW1hdGVTdWNjZXNzTG9uZyAuNzVzfUAtd2Via2l0LWtleWZyYW1lcyByb3RhdGVQbGFjZWhvbGRlcnswJXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKTt0cmFuc2Zvcm06cm90YXRlKC00NWRlZyl9NSV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC00NWRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpfTEyJXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTQwNWRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgtNDA1ZGVnKX10b3std2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTQwNWRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgtNDA1ZGVnKX19QGtleWZyYW1lcyByb3RhdGVQbGFjZWhvbGRlcnswJXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKTt0cmFuc2Zvcm06cm90YXRlKC00NWRlZyl9NSV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC00NWRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpfTEyJXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTQwNWRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgtNDA1ZGVnKX10b3std2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTQwNWRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgtNDA1ZGVnKX19QC13ZWJraXQta2V5ZnJhbWVzIGFuaW1hdGVTdWNjZXNzVGlwezAle3dpZHRoOjA7bGVmdDoxcHg7dG9wOjE5cHh9NTQle3dpZHRoOjA7bGVmdDoxcHg7dG9wOjE5cHh9NzAle3dpZHRoOjUwcHg7bGVmdDotOHB4O3RvcDozN3B4fTg0JXt3aWR0aDoxN3B4O2xlZnQ6MjFweDt0b3A6NDhweH10b3t3aWR0aDoyNXB4O2xlZnQ6MTRweDt0b3A6NDVweH19QGtleWZyYW1lcyBhbmltYXRlU3VjY2Vzc1RpcHswJXt3aWR0aDowO2xlZnQ6MXB4O3RvcDoxOXB4fTU0JXt3aWR0aDowO2xlZnQ6MXB4O3RvcDoxOXB4fTcwJXt3aWR0aDo1MHB4O2xlZnQ6LThweDt0b3A6MzdweH04NCV7d2lkdGg6MTdweDtsZWZ0OjIxcHg7dG9wOjQ4cHh9dG97d2lkdGg6MjVweDtsZWZ0OjE0cHg7dG9wOjQ1cHh9fUAtd2Via2l0LWtleWZyYW1lcyBhbmltYXRlU3VjY2Vzc0xvbmd7MCV7d2lkdGg6MDtyaWdodDo0NnB4O3RvcDo1NHB4fTY1JXt3aWR0aDowO3JpZ2h0OjQ2cHg7dG9wOjU0cHh9ODQle3dpZHRoOjU1cHg7cmlnaHQ6MDt0b3A6MzVweH10b3t3aWR0aDo0N3B4O3JpZ2h0OjhweDt0b3A6MzhweH19QGtleWZyYW1lcyBhbmltYXRlU3VjY2Vzc0xvbmd7MCV7d2lkdGg6MDtyaWdodDo0NnB4O3RvcDo1NHB4fTY1JXt3aWR0aDowO3JpZ2h0OjQ2cHg7dG9wOjU0cHh9ODQle3dpZHRoOjU1cHg7cmlnaHQ6MDt0b3A6MzVweH10b3t3aWR0aDo0N3B4O3JpZ2h0OjhweDt0b3A6MzhweH19LnN3YWwtaWNvbi0taW5mb3tib3JkZXItY29sb3I6I2M5ZGFlMX0uc3dhbC1pY29uLS1pbmZvOmJlZm9yZXt3aWR0aDo1cHg7aGVpZ2h0OjI5cHg7Ym90dG9tOjE3cHg7Ym9yZGVyLXJhZGl1czoycHg7bWFyZ2luLWxlZnQ6LTJweH0uc3dhbC1pY29uLS1pbmZvOmFmdGVyLC5zd2FsLWljb24tLWluZm86YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7bGVmdDo1MCU7YmFja2dyb3VuZC1jb2xvcjojYzlkYWUxfS5zd2FsLWljb24tLWluZm86YWZ0ZXJ7d2lkdGg6N3B4O2hlaWdodDo3cHg7Ym9yZGVyLXJhZGl1czo1MCU7bWFyZ2luLWxlZnQ6LTNweDt0b3A6MTlweH0uc3dhbC1pY29ue3dpZHRoOjgwcHg7aGVpZ2h0OjgwcHg7Ym9yZGVyLXdpZHRoOjRweDtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXJhZGl1czo1MCU7cGFkZGluZzowO3Bvc2l0aW9uOnJlbGF0aXZlO2JveC1zaXppbmc6Y29udGVudC1ib3g7bWFyZ2luOjIwcHggYXV0b30uc3dhbC1pY29uOmZpcnN0LWNoaWxke21hcmdpbi10b3A6MzJweH0uc3dhbC1pY29uLS1jdXN0b217d2lkdGg6YXV0bztoZWlnaHQ6YXV0bzttYXgtd2lkdGg6MTAwJTtib3JkZXI6bm9uZTtib3JkZXItcmFkaXVzOjB9LnN3YWwtaWNvbiBpbWd7bWF4LXdpZHRoOjEwMCU7bWF4LWhlaWdodDoxMDAlfS5zd2FsLXRpdGxle2NvbG9yOnJnYmEoMCwwLDAsLjY1KTtmb250LXdlaWdodDo2MDA7dGV4dC10cmFuc2Zvcm06bm9uZTtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO3BhZGRpbmc6MTNweCAxNnB4O2ZvbnQtc2l6ZToyN3B4O2xpbmUtaGVpZ2h0Om5vcm1hbDt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW4tYm90dG9tOjB9LnN3YWwtdGl0bGU6Zmlyc3QtY2hpbGR7bWFyZ2luLXRvcDoyNnB4fS5zd2FsLXRpdGxlOm5vdCg6Zmlyc3QtY2hpbGQpe3BhZGRpbmctYm90dG9tOjB9LnN3YWwtdGl0bGU6bm90KDpsYXN0LWNoaWxkKXttYXJnaW4tYm90dG9tOjEzcHh9LnN3YWwtdGV4dHtmb250LXNpemU6MTZweDtwb3NpdGlvbjpyZWxhdGl2ZTtmbG9hdDpub25lO2xpbmUtaGVpZ2h0Om5vcm1hbDt2ZXJ0aWNhbC1hbGlnbjp0b3A7dGV4dC1hbGlnbjpsZWZ0O2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbjowO3BhZGRpbmc6MCAxMHB4O2ZvbnQtd2VpZ2h0OjQwMDtjb2xvcjpyZ2JhKDAsMCwwLC42NCk7bWF4LXdpZHRoOmNhbGMoMTAwJSAtIDIwcHgpO292ZXJmbG93LXdyYXA6YnJlYWstd29yZDtib3gtc2l6aW5nOmJvcmRlci1ib3h9LnN3YWwtdGV4dDpmaXJzdC1jaGlsZHttYXJnaW4tdG9wOjQ1cHh9LnN3YWwtdGV4dDpsYXN0LWNoaWxke21hcmdpbi1ib3R0b206NDVweH0uc3dhbC1mb290ZXJ7dGV4dC1hbGlnbjpyaWdodDtwYWRkaW5nLXRvcDoxM3B4O21hcmdpbi10b3A6MTNweDtwYWRkaW5nOjEzcHggMTZweDtib3JkZXItcmFkaXVzOmluaGVyaXQ7Ym9yZGVyLXRvcC1sZWZ0LXJhZGl1czowO2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjB9LnN3YWwtYnV0dG9uLWNvbnRhaW5lcnttYXJnaW46NXB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlfS5zd2FsLWJ1dHRvbntiYWNrZ3JvdW5kLWNvbG9yOiM3Y2QxZjk7Y29sb3I6I2ZmZjtib3JkZXI6bm9uZTtib3gtc2hhZG93Om5vbmU7Ym9yZGVyLXJhZGl1czo1cHg7Zm9udC13ZWlnaHQ6NjAwO2ZvbnQtc2l6ZToxNHB4O3BhZGRpbmc6MTBweCAyNHB4O21hcmdpbjowO2N1cnNvcjpwb2ludGVyfS5zd2FsLWJ1dHRvbjpub3QoW2Rpc2FibGVkXSk6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojNzhjYmYyfS5zd2FsLWJ1dHRvbjphY3RpdmV7YmFja2dyb3VuZC1jb2xvcjojNzBiY2UwfS5zd2FsLWJ1dHRvbjpmb2N1c3tvdXRsaW5lOm5vbmU7Ym94LXNoYWRvdzowIDAgMCAxcHggI2ZmZiwwIDAgMCAzcHggcmdiYSg0MywxMTQsMTY1LC4yOSl9LnN3YWwtYnV0dG9uW2Rpc2FibGVkXXtvcGFjaXR5Oi41O2N1cnNvcjpkZWZhdWx0fS5zd2FsLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lcntib3JkZXI6MH0uc3dhbC1idXR0b24tLWNhbmNlbHtjb2xvcjojNTU1O2JhY2tncm91bmQtY29sb3I6I2VmZWZlZn0uc3dhbC1idXR0b24tLWNhbmNlbDpub3QoW2Rpc2FibGVkXSk6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZThlOGU4fS5zd2FsLWJ1dHRvbi0tY2FuY2VsOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOiNkN2Q3ZDd9LnN3YWwtYnV0dG9uLS1jYW5jZWw6Zm9jdXN7Ym94LXNoYWRvdzowIDAgMCAxcHggI2ZmZiwwIDAgMCAzcHggcmdiYSgxMTYsMTM2LDE1MCwuMjkpfS5zd2FsLWJ1dHRvbi0tZGFuZ2Vye2JhY2tncm91bmQtY29sb3I6I2U2NDk0Mn0uc3dhbC1idXR0b24tLWRhbmdlcjpub3QoW2Rpc2FibGVkXSk6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZGY0NzQwfS5zd2FsLWJ1dHRvbi0tZGFuZ2VyOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOiNjZjQyM2J9LnN3YWwtYnV0dG9uLS1kYW5nZXI6Zm9jdXN7Ym94LXNoYWRvdzowIDAgMCAxcHggI2ZmZiwwIDAgMCAzcHggcmdiYSgxNjUsNDMsNDMsLjI5KX0uc3dhbC1jb250ZW50e3BhZGRpbmc6MCAyMHB4O21hcmdpbi10b3A6MjBweDtmb250LXNpemU6bWVkaXVtfS5zd2FsLWNvbnRlbnQ6bGFzdC1jaGlsZHttYXJnaW4tYm90dG9tOjIwcHh9LnN3YWwtY29udGVudF9faW5wdXQsLnN3YWwtY29udGVudF9fdGV4dGFyZWF7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjpub25lO2ZvbnQtc2l6ZToxNHB4O2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94O3dpZHRoOjEwMCU7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDAsMCwwLC4xNCk7cGFkZGluZzoxMHB4IDEzcHg7Ym9yZGVyLXJhZGl1czoycHg7dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjJzfS5zd2FsLWNvbnRlbnRfX2lucHV0OmZvY3VzLC5zd2FsLWNvbnRlbnRfX3RleHRhcmVhOmZvY3Vze291dGxpbmU6bm9uZTtib3JkZXItY29sb3I6IzZkYjhmZn0uc3dhbC1jb250ZW50X190ZXh0YXJlYXtyZXNpemU6dmVydGljYWx9LnN3YWwtYnV0dG9uLS1sb2FkaW5ne2NvbG9yOnRyYW5zcGFyZW50fS5zd2FsLWJ1dHRvbi0tbG9hZGluZ34uc3dhbC1idXR0b25fX2xvYWRlcntvcGFjaXR5OjF9LnN3YWwtYnV0dG9uX19sb2FkZXJ7cG9zaXRpb246YWJzb2x1dGU7aGVpZ2h0OmF1dG87d2lkdGg6NDNweDt6LWluZGV4OjI7bGVmdDo1MCU7dG9wOjUwJTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoLTUwJSk7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgtNTAlKTt0ZXh0LWFsaWduOmNlbnRlcjtwb2ludGVyLWV2ZW50czpub25lO29wYWNpdHk6MH0uc3dhbC1idXR0b25fX2xvYWRlciBkaXZ7ZGlzcGxheTppbmxpbmUtYmxvY2s7ZmxvYXQ6bm9uZTt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZTt3aWR0aDo5cHg7aGVpZ2h0OjlweDtwYWRkaW5nOjA7Ym9yZGVyOm5vbmU7bWFyZ2luOjJweDtvcGFjaXR5Oi40O2JvcmRlci1yYWRpdXM6N3B4O2JhY2tncm91bmQtY29sb3I6aHNsYSgwLDAlLDEwMCUsLjkpO3RyYW5zaXRpb246YmFja2dyb3VuZCAuMnM7LXdlYmtpdC1hbmltYXRpb246c3dhbC1sb2FkaW5nLWFuaW0gMXMgaW5maW5pdGU7YW5pbWF0aW9uOnN3YWwtbG9hZGluZy1hbmltIDFzIGluZmluaXRlfS5zd2FsLWJ1dHRvbl9fbG9hZGVyIGRpdjpudGgtY2hpbGQoM24rMil7LXdlYmtpdC1hbmltYXRpb24tZGVsYXk6LjE1czthbmltYXRpb24tZGVsYXk6LjE1c30uc3dhbC1idXR0b25fX2xvYWRlciBkaXY6bnRoLWNoaWxkKDNuKzMpey13ZWJraXQtYW5pbWF0aW9uLWRlbGF5Oi4zczthbmltYXRpb24tZGVsYXk6LjNzfUAtd2Via2l0LWtleWZyYW1lcyBzd2FsLWxvYWRpbmctYW5pbXswJXtvcGFjaXR5Oi40fTIwJXtvcGFjaXR5Oi40fTUwJXtvcGFjaXR5OjF9dG97b3BhY2l0eTouNH19QGtleWZyYW1lcyBzd2FsLWxvYWRpbmctYW5pbXswJXtvcGFjaXR5Oi40fTIwJXtvcGFjaXR5Oi40fTUwJXtvcGFjaXR5OjF9dG97b3BhY2l0eTouNH19LnN3YWwtb3ZlcmxheXtwb3NpdGlvbjpmaXhlZDt0b3A6MDtib3R0b206MDtsZWZ0OjA7cmlnaHQ6MDt0ZXh0LWFsaWduOmNlbnRlcjtmb250LXNpemU6MDtvdmVyZmxvdy15OmF1dG87YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDAsMCwwLC40KTt6LWluZGV4OjEwMDAwO3BvaW50ZXItZXZlbnRzOm5vbmU7b3BhY2l0eTowO3RyYW5zaXRpb246b3BhY2l0eSAuM3N9LnN3YWwtb3ZlcmxheTpiZWZvcmV7Y29udGVudDoiICI7ZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlO2hlaWdodDoxMDAlfS5zd2FsLW92ZXJsYXktLXNob3ctbW9kYWx7b3BhY2l0eToxO3BvaW50ZXItZXZlbnRzOmF1dG99LnN3YWwtb3ZlcmxheS0tc2hvdy1tb2RhbCAuc3dhbC1tb2RhbHtvcGFjaXR5OjE7cG9pbnRlci1ldmVudHM6YXV0bztib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1hbmltYXRpb246c2hvd1N3ZWV0QWxlcnQgLjNzO2FuaW1hdGlvbjpzaG93U3dlZXRBbGVydCAuM3M7d2lsbC1jaGFuZ2U6dHJhbnNmb3JtfS5zd2FsLW1vZGFse3dpZHRoOjQ3OHB4O29wYWNpdHk6MDtwb2ludGVyLWV2ZW50czpub25lO2JhY2tncm91bmQtY29sb3I6I2ZmZjt0ZXh0LWFsaWduOmNlbnRlcjtib3JkZXItcmFkaXVzOjVweDtwb3NpdGlvbjpzdGF0aWM7bWFyZ2luOjIwcHggYXV0bztkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMSk7dHJhbnNmb3JtOnNjYWxlKDEpOy13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjo1MCUgNTAlO3RyYW5zZm9ybS1vcmlnaW46NTAlIDUwJTt6LWluZGV4OjEwMDAxO3RyYW5zaXRpb246b3BhY2l0eSAuMnMsLXdlYmtpdC10cmFuc2Zvcm0gLjNzO3RyYW5zaXRpb246dHJhbnNmb3JtIC4zcyxvcGFjaXR5IC4yczt0cmFuc2l0aW9uOnRyYW5zZm9ybSAuM3Msb3BhY2l0eSAuMnMsLXdlYmtpdC10cmFuc2Zvcm0gLjNzfUBtZWRpYSAobWF4LXdpZHRoOjUwMHB4KXsuc3dhbC1tb2RhbHt3aWR0aDpjYWxjKDEwMCUgLSAyMHB4KX19QC13ZWJraXQta2V5ZnJhbWVzIHNob3dTd2VldEFsZXJ0ezAley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpO3RyYW5zZm9ybTpzY2FsZSgxKX0xJXstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSguNSk7dHJhbnNmb3JtOnNjYWxlKC41KX00NSV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoMS4wNSk7dHJhbnNmb3JtOnNjYWxlKDEuMDUpfTgwJXstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSguOTUpO3RyYW5zZm9ybTpzY2FsZSguOTUpfXRvey13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEpO3RyYW5zZm9ybTpzY2FsZSgxKX19QGtleWZyYW1lcyBzaG93U3dlZXRBbGVydHswJXstd2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKTt0cmFuc2Zvcm06c2NhbGUoMSl9MSV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoLjUpO3RyYW5zZm9ybTpzY2FsZSguNSl9NDUley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKDEuMDUpO3RyYW5zZm9ybTpzY2FsZSgxLjA1KX04MCV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUoLjk1KTt0cmFuc2Zvcm06c2NhbGUoLjk1KX10b3std2Via2l0LXRyYW5zZm9ybTpzY2FsZSgxKTt0cmFuc2Zvcm06c2NhbGUoMSl9fScsIiJdKX0sZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKHQsZSl7dmFyIG49dFsxXXx8IiIscj10WzNdO2lmKCFyKXJldHVybiBuO2lmKGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBidG9hKXt2YXIgaT1vKHIpO3JldHVybltuXS5jb25jYXQoci5zb3VyY2VzLm1hcChmdW5jdGlvbih0KXtyZXR1cm4iLyojIHNvdXJjZVVSTD0iK3Iuc291cmNlUm9vdCt0KyIgKi8ifSkpLmNvbmNhdChbaV0pLmpvaW4oIlxuIil9cmV0dXJuW25dLmpvaW4oIlxuIil9ZnVuY3Rpb24gbyh0KXtyZXR1cm4iLyojIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LCIrYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkodCkpKSkrIiAqLyJ9dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPVtdO3JldHVybiBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKGUpe3ZhciBvPW4oZSx0KTtyZXR1cm4gZVsyXT8iQG1lZGlhICIrZVsyXSsieyIrbysifSI6b30pLmpvaW4oIiIpfSxlLmk9ZnVuY3Rpb24odCxuKXsic3RyaW5nIj09dHlwZW9mIHQmJih0PVtbbnVsbCx0LCIiXV0pO2Zvcih2YXIgbz17fSxyPTA7cjx0aGlzLmxlbmd0aDtyKyspe3ZhciBpPXRoaXNbcl1bMF07Im51bWJlciI9PXR5cGVvZiBpJiYob1tpXT0hMCl9Zm9yKHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIGE9dFtyXTsibnVtYmVyIj09dHlwZW9mIGFbMF0mJm9bYVswXV18fChuJiYhYVsyXT9hWzJdPW46biYmKGFbMl09IigiK2FbMl0rIikgYW5kICgiK24rIikiKSxlLnB1c2goYSkpfX0sZX19LGZ1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiBvKHQsZSl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBvPXRbbl0scj1tW28uaWRdO2lmKHIpe3IucmVmcysrO2Zvcih2YXIgaT0wO2k8ci5wYXJ0cy5sZW5ndGg7aSsrKXIucGFydHNbaV0oby5wYXJ0c1tpXSk7Zm9yKDtpPG8ucGFydHMubGVuZ3RoO2krKylyLnBhcnRzLnB1c2godShvLnBhcnRzW2ldLGUpKX1lbHNle2Zvcih2YXIgYT1bXSxpPTA7aTxvLnBhcnRzLmxlbmd0aDtpKyspYS5wdXNoKHUoby5wYXJ0c1tpXSxlKSk7bVtvLmlkXT17aWQ6by5pZCxyZWZzOjEscGFydHM6YX19fX1mdW5jdGlvbiByKHQsZSl7Zm9yKHZhciBuPVtdLG89e30scj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgaT10W3JdLGE9ZS5iYXNlP2lbMF0rZS5iYXNlOmlbMF0scz1pWzFdLGM9aVsyXSxsPWlbM10sdT17Y3NzOnMsbWVkaWE6Yyxzb3VyY2VNYXA6bH07b1thXT9vW2FdLnBhcnRzLnB1c2godSk6bi5wdXNoKG9bYV09e2lkOmEscGFydHM6W3VdfSl9cmV0dXJuIG59ZnVuY3Rpb24gaSh0LGUpe3ZhciBuPXYodC5pbnNlcnRJbnRvKTtpZighbil0aHJvdyBuZXcgRXJyb3IoIkNvdWxkbid0IGZpbmQgYSBzdHlsZSB0YXJnZXQuIFRoaXMgcHJvYmFibHkgbWVhbnMgdGhhdCB0aGUgdmFsdWUgZm9yIHRoZSAnaW5zZXJ0SW50bycgcGFyYW1ldGVyIGlzIGludmFsaWQuIik7dmFyIG89d1t3Lmxlbmd0aC0xXTtpZigidG9wIj09PXQuaW5zZXJ0QXQpbz9vLm5leHRTaWJsaW5nP24uaW5zZXJ0QmVmb3JlKGUsby5uZXh0U2libGluZyk6bi5hcHBlbmRDaGlsZChlKTpuLmluc2VydEJlZm9yZShlLG4uZmlyc3RDaGlsZCksdy5wdXNoKGUpO2Vsc2V7aWYoImJvdHRvbSIhPT10Lmluc2VydEF0KXRocm93IG5ldyBFcnJvcigiSW52YWxpZCB2YWx1ZSBmb3IgcGFyYW1ldGVyICdpbnNlcnRBdCcuIE11c3QgYmUgJ3RvcCcgb3IgJ2JvdHRvbScuIik7bi5hcHBlbmRDaGlsZChlKX19ZnVuY3Rpb24gYSh0KXtpZihudWxsPT09dC5wYXJlbnROb2RlKXJldHVybiExO3QucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KTt2YXIgZT13LmluZGV4T2YodCk7ZT49MCYmdy5zcGxpY2UoZSwxKX1mdW5jdGlvbiBzKHQpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7cmV0dXJuIHQuYXR0cnMudHlwZT0idGV4dC9jc3MiLGwoZSx0LmF0dHJzKSxpKHQsZSksZX1mdW5jdGlvbiBjKHQpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpbmsiKTtyZXR1cm4gdC5hdHRycy50eXBlPSJ0ZXh0L2NzcyIsdC5hdHRycy5yZWw9InN0eWxlc2hlZXQiLGwoZSx0LmF0dHJzKSxpKHQsZSksZX1mdW5jdGlvbiBsKHQsZSl7T2JqZWN0LmtleXMoZSkuZm9yRWFjaChmdW5jdGlvbihuKXt0LnNldEF0dHJpYnV0ZShuLGVbbl0pfSl9ZnVuY3Rpb24gdSh0LGUpe3ZhciBuLG8scixpO2lmKGUudHJhbnNmb3JtJiZ0LmNzcyl7aWYoIShpPWUudHJhbnNmb3JtKHQuY3NzKSkpcmV0dXJuIGZ1bmN0aW9uKCl7fTt0LmNzcz1pfWlmKGUuc2luZ2xldG9uKXt2YXIgbD1oKys7bj1nfHwoZz1zKGUpKSxvPWYuYmluZChudWxsLG4sbCwhMSkscj1mLmJpbmQobnVsbCxuLGwsITApfWVsc2UgdC5zb3VyY2VNYXAmJiJmdW5jdGlvbiI9PXR5cGVvZiBVUkwmJiJmdW5jdGlvbiI9PXR5cGVvZiBVUkwuY3JlYXRlT2JqZWN0VVJMJiYiZnVuY3Rpb24iPT10eXBlb2YgVVJMLnJldm9rZU9iamVjdFVSTCYmImZ1bmN0aW9uIj09dHlwZW9mIEJsb2ImJiJmdW5jdGlvbiI9PXR5cGVvZiBidG9hPyhuPWMoZSksbz1wLmJpbmQobnVsbCxuLGUpLHI9ZnVuY3Rpb24oKXthKG4pLG4uaHJlZiYmVVJMLnJldm9rZU9iamVjdFVSTChuLmhyZWYpfSk6KG49cyhlKSxvPWQuYmluZChudWxsLG4pLHI9ZnVuY3Rpb24oKXthKG4pfSk7cmV0dXJuIG8odCksZnVuY3Rpb24oZSl7aWYoZSl7aWYoZS5jc3M9PT10LmNzcyYmZS5tZWRpYT09PXQubWVkaWEmJmUuc291cmNlTWFwPT09dC5zb3VyY2VNYXApcmV0dXJuO28odD1lKX1lbHNlIHIoKX19ZnVuY3Rpb24gZih0LGUsbixvKXt2YXIgcj1uPyIiOm8uY3NzO2lmKHQuc3R5bGVTaGVldCl0LnN0eWxlU2hlZXQuY3NzVGV4dD14KGUscik7ZWxzZXt2YXIgaT1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShyKSxhPXQuY2hpbGROb2RlczthW2VdJiZ0LnJlbW92ZUNoaWxkKGFbZV0pLGEubGVuZ3RoP3QuaW5zZXJ0QmVmb3JlKGksYVtlXSk6dC5hcHBlbmRDaGlsZChpKX19ZnVuY3Rpb24gZCh0LGUpe3ZhciBuPWUuY3NzLG89ZS5tZWRpYTtpZihvJiZ0LnNldEF0dHJpYnV0ZSgibWVkaWEiLG8pLHQuc3R5bGVTaGVldCl0LnN0eWxlU2hlZXQuY3NzVGV4dD1uO2Vsc2V7Zm9yKDt0LmZpcnN0Q2hpbGQ7KXQucmVtb3ZlQ2hpbGQodC5maXJzdENoaWxkKTt0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG4pKX19ZnVuY3Rpb24gcCh0LGUsbil7dmFyIG89bi5jc3Mscj1uLnNvdXJjZU1hcCxpPXZvaWQgMD09PWUuY29udmVydFRvQWJzb2x1dGVVcmxzJiZyOyhlLmNvbnZlcnRUb0Fic29sdXRlVXJsc3x8aSkmJihvPXkobykpLHImJihvKz0iXG4vKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LCIrYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkocikpKSkrIiAqLyIpO3ZhciBhPW5ldyBCbG9iKFtvXSx7dHlwZToidGV4dC9jc3MifSkscz10LmhyZWY7dC5ocmVmPVVSTC5jcmVhdGVPYmplY3RVUkwoYSkscyYmVVJMLnJldm9rZU9iamVjdFVSTChzKX12YXIgbT17fSxiPWZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiBmdW5jdGlvbigpe3JldHVybiB2b2lkIDA9PT1lJiYoZT10LmFwcGx5KHRoaXMsYXJndW1lbnRzKSksZX19KGZ1bmN0aW9uKCl7cmV0dXJuIHdpbmRvdyYmZG9jdW1lbnQmJmRvY3VtZW50LmFsbCYmIXdpbmRvdy5hdG9ifSksdj1mdW5jdGlvbih0KXt2YXIgZT17fTtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHZvaWQgMD09PWVbbl0mJihlW25dPXQuY2FsbCh0aGlzLG4pKSxlW25dfX0oZnVuY3Rpb24odCl7cmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodCl9KSxnPW51bGwsaD0wLHc9W10seT1uKDE1KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIERFQlVHJiZERUJVRyYmIm9iamVjdCIhPXR5cGVvZiBkb2N1bWVudCl0aHJvdyBuZXcgRXJyb3IoIlRoZSBzdHlsZS1sb2FkZXIgY2Fubm90IGJlIHVzZWQgaW4gYSBub24tYnJvd3NlciBlbnZpcm9ubWVudCIpO2U9ZXx8e30sZS5hdHRycz0ib2JqZWN0Ij09dHlwZW9mIGUuYXR0cnM/ZS5hdHRyczp7fSxlLnNpbmdsZXRvbnx8KGUuc2luZ2xldG9uPWIoKSksZS5pbnNlcnRJbnRvfHwoZS5pbnNlcnRJbnRvPSJoZWFkIiksZS5pbnNlcnRBdHx8KGUuaW5zZXJ0QXQ9ImJvdHRvbSIpO3ZhciBuPXIodCxlKTtyZXR1cm4gbyhuLGUpLGZ1bmN0aW9uKHQpe2Zvcih2YXIgaT1bXSxhPTA7YTxuLmxlbmd0aDthKyspe3ZhciBzPW5bYV0sYz1tW3MuaWRdO2MucmVmcy0tLGkucHVzaChjKX1pZih0KXtvKHIodCxlKSxlKX1mb3IodmFyIGE9MDthPGkubGVuZ3RoO2ErKyl7dmFyIGM9aVthXTtpZigwPT09Yy5yZWZzKXtmb3IodmFyIGw9MDtsPGMucGFydHMubGVuZ3RoO2wrKyljLnBhcnRzW2xdKCk7ZGVsZXRlIG1bYy5pZF19fX19O3ZhciB4PWZ1bmN0aW9uKCl7dmFyIHQ9W107cmV0dXJuIGZ1bmN0aW9uKGUsbil7cmV0dXJuIHRbZV09bix0LmZpbHRlcihCb29sZWFuKS5qb2luKCJcbiIpfX0oKX0sZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvdy5sb2NhdGlvbjtpZighZSl0aHJvdyBuZXcgRXJyb3IoImZpeFVybHMgcmVxdWlyZXMgd2luZG93LmxvY2F0aW9uIik7aWYoIXR8fCJzdHJpbmciIT10eXBlb2YgdClyZXR1cm4gdDt2YXIgbj1lLnByb3RvY29sKyIvLyIrZS5ob3N0LG89bitlLnBhdGhuYW1lLnJlcGxhY2UoL1wvW15cL10qJC8sIi8iKTtyZXR1cm4gdC5yZXBsYWNlKC91cmxccypcKCgoPzpbXikoXXxcKCg/OlteKShdK3xcKFteKShdKlwpKSpcKSkqKVwpL2dpLGZ1bmN0aW9uKHQsZSl7dmFyIHI9ZS50cmltKCkucmVwbGFjZSgvXiIoLiopIiQvLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV9KS5yZXBsYWNlKC9eJyguKiknJC8sZnVuY3Rpb24odCxlKXtyZXR1cm4gZX0pO2lmKC9eKCN8ZGF0YTp8aHR0cDpcL1wvfGh0dHBzOlwvXC98ZmlsZTpcL1wvXC8pL2kudGVzdChyKSlyZXR1cm4gdDt2YXIgaTtyZXR1cm4gaT0wPT09ci5pbmRleE9mKCIvLyIpP3I6MD09PXIuaW5kZXhPZigiLyIpP24rcjpvK3IucmVwbGFjZSgvXlwuXC8vLCIiKSwidXJsKCIrSlNPTi5zdHJpbmdpZnkoaSkrIikifSl9fSxmdW5jdGlvbih0LGUsbil7dmFyIG89bigxNyk7InVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3d8fHdpbmRvdy5Qcm9taXNlfHwod2luZG93LlByb21pc2U9byksbigyMSksU3RyaW5nLnByb3RvdHlwZS5pbmNsdWRlc3x8KFN0cmluZy5wcm90b3R5cGUuaW5jbHVkZXM9ZnVuY3Rpb24odCxlKXsidXNlIHN0cmljdCI7cmV0dXJuIm51bWJlciIhPXR5cGVvZiBlJiYoZT0wKSwhKGUrdC5sZW5ndGg+dGhpcy5sZW5ndGgpJiYtMSE9PXRoaXMuaW5kZXhPZih0LGUpfSksQXJyYXkucHJvdG90eXBlLmluY2x1ZGVzfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoQXJyYXkucHJvdG90eXBlLCJpbmNsdWRlcyIse3ZhbHVlOmZ1bmN0aW9uKHQsZSl7aWYobnVsbD09dGhpcyl0aHJvdyBuZXcgVHlwZUVycm9yKCcidGhpcyIgaXMgbnVsbCBvciBub3QgZGVmaW5lZCcpO3ZhciBuPU9iamVjdCh0aGlzKSxvPW4ubGVuZ3RoPj4+MDtpZigwPT09bylyZXR1cm4hMTtmb3IodmFyIHI9MHxlLGk9TWF0aC5tYXgocj49MD9yOm8tTWF0aC5hYnMociksMCk7aTxvOyl7aWYoZnVuY3Rpb24odCxlKXtyZXR1cm4gdD09PWV8fCJudW1iZXIiPT10eXBlb2YgdCYmIm51bWJlciI9PXR5cGVvZiBlJiZpc05hTih0KSYmaXNOYU4oZSl9KG5baV0sdCkpcmV0dXJuITA7aSsrfXJldHVybiExfX0pLCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZmdW5jdGlvbih0KXt0LmZvckVhY2goZnVuY3Rpb24odCl7dC5oYXNPd25Qcm9wZXJ0eSgicmVtb3ZlIil8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJyZW1vdmUiLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpmdW5jdGlvbigpe3RoaXMucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzKX19KX0pfShbRWxlbWVudC5wcm90b3R5cGUsQ2hhcmFjdGVyRGF0YS5wcm90b3R5cGUsRG9jdW1lbnRUeXBlLnByb3RvdHlwZV0pfSxmdW5jdGlvbih0LGUsbil7KGZ1bmN0aW9uKGUpeyFmdW5jdGlvbihuKXtmdW5jdGlvbiBvKCl7fWZ1bmN0aW9uIHIodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0LmFwcGx5KGUsYXJndW1lbnRzKX19ZnVuY3Rpb24gaSh0KXtpZigib2JqZWN0IiE9dHlwZW9mIHRoaXMpdGhyb3cgbmV3IFR5cGVFcnJvcigiUHJvbWlzZXMgbXVzdCBiZSBjb25zdHJ1Y3RlZCB2aWEgbmV3Iik7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcigibm90IGEgZnVuY3Rpb24iKTt0aGlzLl9zdGF0ZT0wLHRoaXMuX2hhbmRsZWQ9ITEsdGhpcy5fdmFsdWU9dm9pZCAwLHRoaXMuX2RlZmVycmVkcz1bXSxmKHQsdGhpcyl9ZnVuY3Rpb24gYSh0LGUpe2Zvcig7Mz09PXQuX3N0YXRlOyl0PXQuX3ZhbHVlO2lmKDA9PT10Ll9zdGF0ZSlyZXR1cm4gdm9pZCB0Ll9kZWZlcnJlZHMucHVzaChlKTt0Ll9oYW5kbGVkPSEwLGkuX2ltbWVkaWF0ZUZuKGZ1bmN0aW9uKCl7dmFyIG49MT09PXQuX3N0YXRlP2Uub25GdWxmaWxsZWQ6ZS5vblJlamVjdGVkO2lmKG51bGw9PT1uKXJldHVybiB2b2lkKDE9PT10Ll9zdGF0ZT9zOmMpKGUucHJvbWlzZSx0Ll92YWx1ZSk7dmFyIG87dHJ5e289bih0Ll92YWx1ZSl9Y2F0Y2godCl7cmV0dXJuIHZvaWQgYyhlLnByb21pc2UsdCl9cyhlLnByb21pc2Usbyl9KX1mdW5jdGlvbiBzKHQsZSl7dHJ5e2lmKGU9PT10KXRocm93IG5ldyBUeXBlRXJyb3IoIkEgcHJvbWlzZSBjYW5ub3QgYmUgcmVzb2x2ZWQgd2l0aCBpdHNlbGYuIik7aWYoZSYmKCJvYmplY3QiPT10eXBlb2YgZXx8ImZ1bmN0aW9uIj09dHlwZW9mIGUpKXt2YXIgbj1lLnRoZW47aWYoZSBpbnN0YW5jZW9mIGkpcmV0dXJuIHQuX3N0YXRlPTMsdC5fdmFsdWU9ZSx2b2lkIGwodCk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIG4pcmV0dXJuIHZvaWQgZihyKG4sZSksdCl9dC5fc3RhdGU9MSx0Ll92YWx1ZT1lLGwodCl9Y2F0Y2goZSl7Yyh0LGUpfX1mdW5jdGlvbiBjKHQsZSl7dC5fc3RhdGU9Mix0Ll92YWx1ZT1lLGwodCl9ZnVuY3Rpb24gbCh0KXsyPT09dC5fc3RhdGUmJjA9PT10Ll9kZWZlcnJlZHMubGVuZ3RoJiZpLl9pbW1lZGlhdGVGbihmdW5jdGlvbigpe3QuX2hhbmRsZWR8fGkuX3VuaGFuZGxlZFJlamVjdGlvbkZuKHQuX3ZhbHVlKX0pO2Zvcih2YXIgZT0wLG49dC5fZGVmZXJyZWRzLmxlbmd0aDtlPG47ZSsrKWEodCx0Ll9kZWZlcnJlZHNbZV0pO3QuX2RlZmVycmVkcz1udWxsfWZ1bmN0aW9uIHUodCxlLG4pe3RoaXMub25GdWxmaWxsZWQ9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpudWxsLHRoaXMub25SZWplY3RlZD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOm51bGwsdGhpcy5wcm9taXNlPW59ZnVuY3Rpb24gZih0LGUpe3ZhciBuPSExO3RyeXt0KGZ1bmN0aW9uKHQpe258fChuPSEwLHMoZSx0KSl9LGZ1bmN0aW9uKHQpe258fChuPSEwLGMoZSx0KSl9KX1jYXRjaCh0KXtpZihuKXJldHVybjtuPSEwLGMoZSx0KX19dmFyIGQ9c2V0VGltZW91dDtpLnByb3RvdHlwZS5jYXRjaD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50aGVuKG51bGwsdCl9LGkucHJvdG90eXBlLnRoZW49ZnVuY3Rpb24odCxlKXt2YXIgbj1uZXcgdGhpcy5jb25zdHJ1Y3RvcihvKTtyZXR1cm4gYSh0aGlzLG5ldyB1KHQsZSxuKSksbn0saS5hbGw9ZnVuY3Rpb24odCl7dmFyIGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodCk7cmV0dXJuIG5ldyBpKGZ1bmN0aW9uKHQsbil7ZnVuY3Rpb24gbyhpLGEpe3RyeXtpZihhJiYoIm9iamVjdCI9PXR5cGVvZiBhfHwiZnVuY3Rpb24iPT10eXBlb2YgYSkpe3ZhciBzPWEudGhlbjtpZigiZnVuY3Rpb24iPT10eXBlb2YgcylyZXR1cm4gdm9pZCBzLmNhbGwoYSxmdW5jdGlvbih0KXtvKGksdCl9LG4pfWVbaV09YSwwPT0tLXImJnQoZSl9Y2F0Y2godCl7bih0KX19aWYoMD09PWUubGVuZ3RoKXJldHVybiB0KFtdKTtmb3IodmFyIHI9ZS5sZW5ndGgsaT0wO2k8ZS5sZW5ndGg7aSsrKW8oaSxlW2ldKX0pfSxpLnJlc29sdmU9ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJvYmplY3QiPT10eXBlb2YgdCYmdC5jb25zdHJ1Y3Rvcj09PWk/dDpuZXcgaShmdW5jdGlvbihlKXtlKHQpfSl9LGkucmVqZWN0PWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgaShmdW5jdGlvbihlLG4pe24odCl9KX0saS5yYWNlPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgaShmdW5jdGlvbihlLG4pe2Zvcih2YXIgbz0wLHI9dC5sZW5ndGg7bzxyO28rKyl0W29dLnRoZW4oZSxuKX0pfSxpLl9pbW1lZGlhdGVGbj0iZnVuY3Rpb24iPT10eXBlb2YgZSYmZnVuY3Rpb24odCl7ZSh0KX18fGZ1bmN0aW9uKHQpe2QodCwwKX0saS5fdW5oYW5kbGVkUmVqZWN0aW9uRm49ZnVuY3Rpb24odCl7InVuZGVmaW5lZCIhPXR5cGVvZiBjb25zb2xlJiZjb25zb2xlJiZjb25zb2xlLndhcm4oIlBvc3NpYmxlIFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbjoiLHQpfSxpLl9zZXRJbW1lZGlhdGVGbj1mdW5jdGlvbih0KXtpLl9pbW1lZGlhdGVGbj10fSxpLl9zZXRVbmhhbmRsZWRSZWplY3Rpb25Gbj1mdW5jdGlvbih0KXtpLl91bmhhbmRsZWRSZWplY3Rpb25Gbj10fSx2b2lkIDAhPT10JiZ0LmV4cG9ydHM/dC5leHBvcnRzPWk6bi5Qcm9taXNlfHwobi5Qcm9taXNlPWkpfSh0aGlzKX0pLmNhbGwoZSxuKDE4KS5zZXRJbW1lZGlhdGUpfSxmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gbyh0LGUpe3RoaXMuX2lkPXQsdGhpcy5fY2xlYXJGbj1lfXZhciByPUZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseTtlLnNldFRpbWVvdXQ9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IG8oci5jYWxsKHNldFRpbWVvdXQsd2luZG93LGFyZ3VtZW50cyksY2xlYXJUaW1lb3V0KX0sZS5zZXRJbnRlcnZhbD1mdW5jdGlvbigpe3JldHVybiBuZXcgbyhyLmNhbGwoc2V0SW50ZXJ2YWwsd2luZG93LGFyZ3VtZW50cyksY2xlYXJJbnRlcnZhbCl9LGUuY2xlYXJUaW1lb3V0PWUuY2xlYXJJbnRlcnZhbD1mdW5jdGlvbih0KXt0JiZ0LmNsb3NlKCl9LG8ucHJvdG90eXBlLnVucmVmPW8ucHJvdG90eXBlLnJlZj1mdW5jdGlvbigpe30sby5wcm90b3R5cGUuY2xvc2U9ZnVuY3Rpb24oKXt0aGlzLl9jbGVhckZuLmNhbGwod2luZG93LHRoaXMuX2lkKX0sZS5lbnJvbGw9ZnVuY3Rpb24odCxlKXtjbGVhclRpbWVvdXQodC5faWRsZVRpbWVvdXRJZCksdC5faWRsZVRpbWVvdXQ9ZX0sZS51bmVucm9sbD1mdW5jdGlvbih0KXtjbGVhclRpbWVvdXQodC5faWRsZVRpbWVvdXRJZCksdC5faWRsZVRpbWVvdXQ9LTF9LGUuX3VucmVmQWN0aXZlPWUuYWN0aXZlPWZ1bmN0aW9uKHQpe2NsZWFyVGltZW91dCh0Ll9pZGxlVGltZW91dElkKTt2YXIgZT10Ll9pZGxlVGltZW91dDtlPj0wJiYodC5faWRsZVRpbWVvdXRJZD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dC5fb25UaW1lb3V0JiZ0Ll9vblRpbWVvdXQoKX0sZSkpfSxuKDE5KSxlLnNldEltbWVkaWF0ZT1zZXRJbW1lZGlhdGUsZS5jbGVhckltbWVkaWF0ZT1jbGVhckltbWVkaWF0ZX0sZnVuY3Rpb24odCxlLG4peyhmdW5jdGlvbih0LGUpeyFmdW5jdGlvbih0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKHQpeyJmdW5jdGlvbiIhPXR5cGVvZiB0JiYodD1uZXcgRnVuY3Rpb24oIiIrdCkpO2Zvcih2YXIgZT1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aC0xKSxuPTA7bjxlLmxlbmd0aDtuKyspZVtuXT1hcmd1bWVudHNbbisxXTt2YXIgbz17Y2FsbGJhY2s6dCxhcmdzOmV9O3JldHVybiBsW2NdPW8scyhjKSxjKyt9ZnVuY3Rpb24gcih0KXtkZWxldGUgbFt0XX1mdW5jdGlvbiBpKHQpe3ZhciBlPXQuY2FsbGJhY2ssbz10LmFyZ3M7c3dpdGNoKG8ubGVuZ3RoKXtjYXNlIDA6ZSgpO2JyZWFrO2Nhc2UgMTplKG9bMF0pO2JyZWFrO2Nhc2UgMjplKG9bMF0sb1sxXSk7YnJlYWs7Y2FzZSAzOmUob1swXSxvWzFdLG9bMl0pO2JyZWFrO2RlZmF1bHQ6ZS5hcHBseShuLG8pfX1mdW5jdGlvbiBhKHQpe2lmKHUpc2V0VGltZW91dChhLDAsdCk7ZWxzZXt2YXIgZT1sW3RdO2lmKGUpe3U9ITA7dHJ5e2koZSl9ZmluYWxseXtyKHQpLHU9ITF9fX19aWYoIXQuc2V0SW1tZWRpYXRlKXt2YXIgcyxjPTEsbD17fSx1PSExLGY9dC5kb2N1bWVudCxkPU9iamVjdC5nZXRQcm90b3R5cGVPZiYmT2JqZWN0LmdldFByb3RvdHlwZU9mKHQpO2Q9ZCYmZC5zZXRUaW1lb3V0P2Q6dCwiW29iamVjdCBwcm9jZXNzXSI9PT17fS50b1N0cmluZy5jYWxsKHQucHJvY2Vzcyk/ZnVuY3Rpb24oKXtzPWZ1bmN0aW9uKHQpe2UubmV4dFRpY2soZnVuY3Rpb24oKXthKHQpfSl9fSgpOmZ1bmN0aW9uKCl7aWYodC5wb3N0TWVzc2FnZSYmIXQuaW1wb3J0U2NyaXB0cyl7dmFyIGU9ITAsbj10Lm9ubWVzc2FnZTtyZXR1cm4gdC5vbm1lc3NhZ2U9ZnVuY3Rpb24oKXtlPSExfSx0LnBvc3RNZXNzYWdlKCIiLCIqIiksdC5vbm1lc3NhZ2U9bixlfX0oKT9mdW5jdGlvbigpe3ZhciBlPSJzZXRJbW1lZGlhdGUkIitNYXRoLnJhbmRvbSgpKyIkIixuPWZ1bmN0aW9uKG4pe24uc291cmNlPT09dCYmInN0cmluZyI9PXR5cGVvZiBuLmRhdGEmJjA9PT1uLmRhdGEuaW5kZXhPZihlKSYmYSgrbi5kYXRhLnNsaWNlKGUubGVuZ3RoKSl9O3QuYWRkRXZlbnRMaXN0ZW5lcj90LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLG4sITEpOnQuYXR0YWNoRXZlbnQoIm9ubWVzc2FnZSIsbikscz1mdW5jdGlvbihuKXt0LnBvc3RNZXNzYWdlKGUrbiwiKiIpfX0oKTp0Lk1lc3NhZ2VDaGFubmVsP2Z1bmN0aW9uKCl7dmFyIHQ9bmV3IE1lc3NhZ2VDaGFubmVsO3QucG9ydDEub25tZXNzYWdlPWZ1bmN0aW9uKHQpe2EodC5kYXRhKX0scz1mdW5jdGlvbihlKXt0LnBvcnQyLnBvc3RNZXNzYWdlKGUpfX0oKTpmJiYib25yZWFkeXN0YXRlY2hhbmdlImluIGYuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik/ZnVuY3Rpb24oKXt2YXIgdD1mLmRvY3VtZW50RWxlbWVudDtzPWZ1bmN0aW9uKGUpe3ZhciBuPWYuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7bi5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXthKGUpLG4ub25yZWFkeXN0YXRlY2hhbmdlPW51bGwsdC5yZW1vdmVDaGlsZChuKSxuPW51bGx9LHQuYXBwZW5kQ2hpbGQobil9fSgpOmZ1bmN0aW9uKCl7cz1mdW5jdGlvbih0KXtzZXRUaW1lb3V0KGEsMCx0KX19KCksZC5zZXRJbW1lZGlhdGU9byxkLmNsZWFySW1tZWRpYXRlPXJ9fSgidW5kZWZpbmVkIj09dHlwZW9mIHNlbGY/dm9pZCAwPT09dD90aGlzOnQ6c2VsZil9KS5jYWxsKGUsbig3KSxuKDIwKSl9LGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbigpe3Rocm93IG5ldyBFcnJvcigic2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCIpfWZ1bmN0aW9uIG8oKXt0aHJvdyBuZXcgRXJyb3IoImNsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCIpfWZ1bmN0aW9uIHIodCl7aWYodT09PXNldFRpbWVvdXQpcmV0dXJuIHNldFRpbWVvdXQodCwwKTtpZigodT09PW58fCF1KSYmc2V0VGltZW91dClyZXR1cm4gdT1zZXRUaW1lb3V0LHNldFRpbWVvdXQodCwwKTt0cnl7cmV0dXJuIHUodCwwKX1jYXRjaChlKXt0cnl7cmV0dXJuIHUuY2FsbChudWxsLHQsMCl9Y2F0Y2goZSl7cmV0dXJuIHUuY2FsbCh0aGlzLHQsMCl9fX1mdW5jdGlvbiBpKHQpe2lmKGY9PT1jbGVhclRpbWVvdXQpcmV0dXJuIGNsZWFyVGltZW91dCh0KTtpZigoZj09PW98fCFmKSYmY2xlYXJUaW1lb3V0KXJldHVybiBmPWNsZWFyVGltZW91dCxjbGVhclRpbWVvdXQodCk7dHJ5e3JldHVybiBmKHQpfWNhdGNoKGUpe3RyeXtyZXR1cm4gZi5jYWxsKG51bGwsdCl9Y2F0Y2goZSl7cmV0dXJuIGYuY2FsbCh0aGlzLHQpfX19ZnVuY3Rpb24gYSgpe2ImJnAmJihiPSExLHAubGVuZ3RoP209cC5jb25jYXQobSk6dj0tMSxtLmxlbmd0aCYmcygpKX1mdW5jdGlvbiBzKCl7aWYoIWIpe3ZhciB0PXIoYSk7Yj0hMDtmb3IodmFyIGU9bS5sZW5ndGg7ZTspe2ZvcihwPW0sbT1bXTsrK3Y8ZTspcCYmcFt2XS5ydW4oKTt2PS0xLGU9bS5sZW5ndGh9cD1udWxsLGI9ITEsaSh0KX19ZnVuY3Rpb24gYyh0LGUpe3RoaXMuZnVuPXQsdGhpcy5hcnJheT1lfWZ1bmN0aW9uIGwoKXt9dmFyIHUsZixkPXQuZXhwb3J0cz17fTshZnVuY3Rpb24oKXt0cnl7dT0iZnVuY3Rpb24iPT10eXBlb2Ygc2V0VGltZW91dD9zZXRUaW1lb3V0Om59Y2F0Y2godCl7dT1ufXRyeXtmPSJmdW5jdGlvbiI9PXR5cGVvZiBjbGVhclRpbWVvdXQ/Y2xlYXJUaW1lb3V0Om99Y2F0Y2godCl7Zj1vfX0oKTt2YXIgcCxtPVtdLGI9ITEsdj0tMTtkLm5leHRUaWNrPWZ1bmN0aW9uKHQpe3ZhciBlPW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoLTEpO2lmKGFyZ3VtZW50cy5sZW5ndGg+MSlmb3IodmFyIG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKWVbbi0xXT1hcmd1bWVudHNbbl07bS5wdXNoKG5ldyBjKHQsZSkpLDEhPT1tLmxlbmd0aHx8Ynx8cihzKX0sYy5wcm90b3R5cGUucnVuPWZ1bmN0aW9uKCl7dGhpcy5mdW4uYXBwbHkobnVsbCx0aGlzLmFycmF5KX0sZC50aXRsZT0iYnJvd3NlciIsZC5icm93c2VyPSEwLGQuZW52PXt9LGQuYXJndj1bXSxkLnZlcnNpb249IiIsZC52ZXJzaW9ucz17fSxkLm9uPWwsZC5hZGRMaXN0ZW5lcj1sLGQub25jZT1sLGQub2ZmPWwsZC5yZW1vdmVMaXN0ZW5lcj1sLGQucmVtb3ZlQWxsTGlzdGVuZXJzPWwsZC5lbWl0PWwsZC5wcmVwZW5kTGlzdGVuZXI9bCxkLnByZXBlbmRPbmNlTGlzdGVuZXI9bCxkLmxpc3RlbmVycz1mdW5jdGlvbih0KXtyZXR1cm5bXX0sZC5iaW5kaW5nPWZ1bmN0aW9uKHQpe3Rocm93IG5ldyBFcnJvcigicHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQiKX0sZC5jd2Q9ZnVuY3Rpb24oKXtyZXR1cm4iLyJ9LGQuY2hkaXI9ZnVuY3Rpb24odCl7dGhyb3cgbmV3IEVycm9yKCJwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWQiKX0sZC51bWFzaz1mdW5jdGlvbigpe3JldHVybiAwfX0sZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuKDIyKS5wb2x5ZmlsbCgpfSxmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG8odCxlKXtpZih2b2lkIDA9PT10fHxudWxsPT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY29udmVydCBmaXJzdCBhcmd1bWVudCB0byBvYmplY3QiKTtmb3IodmFyIG49T2JqZWN0KHQpLG89MTtvPGFyZ3VtZW50cy5sZW5ndGg7bysrKXt2YXIgcj1hcmd1bWVudHNbb107aWYodm9pZCAwIT09ciYmbnVsbCE9PXIpZm9yKHZhciBpPU9iamVjdC5rZXlzKE9iamVjdChyKSksYT0wLHM9aS5sZW5ndGg7YTxzO2ErKyl7dmFyIGM9aVthXSxsPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocixjKTt2b2lkIDAhPT1sJiZsLmVudW1lcmFibGUmJihuW2NdPXJbY10pfX1yZXR1cm4gbn1mdW5jdGlvbiByKCl7T2JqZWN0LmFzc2lnbnx8T2JqZWN0LmRlZmluZVByb3BlcnR5KE9iamVjdCwiYXNzaWduIix7ZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6b30pfXQuZXhwb3J0cz17YXNzaWduOm8scG9seWZpbGw6cn19LGZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBvPW4oMjQpLHI9big2KSxpPW4oNSksYT1uKDM2KSxzPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXRbZV09YXJndW1lbnRzW2VdO2lmKCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93KXt2YXIgbj1hLmdldE9wdHMuYXBwbHkodm9pZCAwLHQpO3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbih0LGUpe2kuZGVmYXVsdC5wcm9taXNlPXtyZXNvbHZlOnQscmVqZWN0OmV9LG8uZGVmYXVsdChuKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ci5vcGVuTW9kYWwoKX0pfSl9fTtzLmNsb3NlPXIub25BY3Rpb24scy5nZXRTdGF0ZT1yLmdldFN0YXRlLHMuc2V0QWN0aW9uVmFsdWU9aS5zZXRBY3Rpb25WYWx1ZSxzLnN0b3BMb2FkaW5nPXIuc3RvcExvYWRpbmcscy5zZXREZWZhdWx0cz1hLnNldERlZmF1bHRzLGUuZGVmYXVsdD1zfSxmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbz1uKDEpLHI9bigwKSxpPXIuZGVmYXVsdC5NT0RBTCxhPW4oNCkscz1uKDM0KSxjPW4oMzUpLGw9bigxKTtlLmluaXQ9ZnVuY3Rpb24odCl7by5nZXROb2RlKGkpfHwoZG9jdW1lbnQuYm9keXx8bC50aHJvd0VycigiWW91IGNhbiBvbmx5IHVzZSBTd2VldEFsZXJ0IEFGVEVSIHRoZSBET00gaGFzIGxvYWRlZCEiKSxzLmRlZmF1bHQoKSxhLmRlZmF1bHQoKSksYS5pbml0TW9kYWxDb250ZW50KHQpLGMuZGVmYXVsdCh0KX0sZS5kZWZhdWx0PWUuaW5pdH0sZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG89bigwKSxyPW8uZGVmYXVsdC5NT0RBTDtlLm1vZGFsTWFya3VwPSdcbiAgPGRpdiBjbGFzcz0iJytyKyciIHJvbGU9ImRpYWxvZyIgYXJpYS1tb2RhbD0idHJ1ZSI+PC9kaXY+JyxlLmRlZmF1bHQ9ZS5tb2RhbE1hcmt1cH0sZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG89bigwKSxyPW8uZGVmYXVsdC5PVkVSTEFZLGk9JzxkaXYgXG4gICAgY2xhc3M9IicrcisnIlxuICAgIHRhYkluZGV4PSItMSI+XG4gIDwvZGl2Pic7ZS5kZWZhdWx0PWl9LGZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBvPW4oMCkscj1vLmRlZmF1bHQuSUNPTjtlLmVycm9ySWNvbk1hcmt1cD1mdW5jdGlvbigpe3ZhciB0PXIrIi0tZXJyb3IiLGU9dCsiX19saW5lIjtyZXR1cm4nXG4gICAgPGRpdiBjbGFzcz0iJyt0KydfX3gtbWFyayI+XG4gICAgICA8c3BhbiBjbGFzcz0iJytlKyIgIitlKyctLWxlZnQiPjwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPSInK2UrIiAiK2UrJy0tcmlnaHQiPjwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgJ30sZS53YXJuaW5nSWNvbk1hcmt1cD1mdW5jdGlvbigpe3ZhciB0PXIrIi0td2FybmluZyI7cmV0dXJuJ1xuICAgIDxzcGFuIGNsYXNzPSInK3QrJ19fYm9keSI+XG4gICAgICA8c3BhbiBjbGFzcz0iJyt0KydfX2RvdCI+PC9zcGFuPlxuICAgIDwvc3Bhbj5cbiAgJ30sZS5zdWNjZXNzSWNvbk1hcmt1cD1mdW5jdGlvbigpe3ZhciB0PXIrIi0tc3VjY2VzcyI7cmV0dXJuJ1xuICAgIDxzcGFuIGNsYXNzPSInK3QrIl9fbGluZSAiK3QrJ19fbGluZS0tbG9uZyI+PC9zcGFuPlxuICAgIDxzcGFuIGNsYXNzPSInK3QrIl9fbGluZSAiK3QrJ19fbGluZS0tdGlwIj48L3NwYW4+XG5cbiAgICA8ZGl2IGNsYXNzPSInK3QrJ19fcmluZyI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz0iJyt0KydfX2hpZGUtY29ybmVycyI+PC9kaXY+XG4gICd9fSxmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbz1uKDApLHI9by5kZWZhdWx0LkNPTlRFTlQ7ZS5jb250ZW50TWFya3VwPSdcbiAgPGRpdiBjbGFzcz0iJytyKyciPlxuXG4gIDwvZGl2PlxuJ30sZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG89bigwKSxyPW8uZGVmYXVsdC5CVVRUT05fQ09OVEFJTkVSLGk9by5kZWZhdWx0LkJVVFRPTixhPW8uZGVmYXVsdC5CVVRUT05fTE9BREVSO2UuYnV0dG9uTWFya3VwPSdcbiAgPGRpdiBjbGFzcz0iJytyKyciPlxuXG4gICAgPGJ1dHRvblxuICAgICAgY2xhc3M9IicraSsnIlxuICAgID48L2J1dHRvbj5cblxuICAgIDxkaXYgY2xhc3M9IicrYSsnIj5cbiAgICAgIDxkaXY+PC9kaXY+XG4gICAgICA8ZGl2PjwvZGl2PlxuICAgICAgPGRpdj48L2Rpdj5cbiAgICA8L2Rpdj5cblxuICA8L2Rpdj5cbid9LGZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBvPW4oNCkscj1uKDIpLGk9bigwKSxhPWkuZGVmYXVsdC5JQ09OLHM9aS5kZWZhdWx0LklDT05fQ1VTVE9NLGM9WyJlcnJvciIsIndhcm5pbmciLCJzdWNjZXNzIiwiaW5mbyJdLGw9e2Vycm9yOnIuZXJyb3JJY29uTWFya3VwKCksd2FybmluZzpyLndhcm5pbmdJY29uTWFya3VwKCksc3VjY2VzczpyLnN1Y2Nlc3NJY29uTWFya3VwKCl9LHU9ZnVuY3Rpb24odCxlKXt2YXIgbj1hKyItLSIrdDtlLmNsYXNzTGlzdC5hZGQobik7dmFyIG89bFt0XTtvJiYoZS5pbm5lckhUTUw9byl9LGY9ZnVuY3Rpb24odCxlKXtlLmNsYXNzTGlzdC5hZGQocyk7dmFyIG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7bi5zcmM9dCxlLmFwcGVuZENoaWxkKG4pfSxkPWZ1bmN0aW9uKHQpe2lmKHQpe3ZhciBlPW8uaW5qZWN0RWxJbnRvTW9kYWwoci5pY29uTWFya3VwKTtjLmluY2x1ZGVzKHQpP3UodCxlKTpmKHQsZSl9fTtlLmRlZmF1bHQ9ZH0sZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG89bigyKSxyPW4oNCksaT1mdW5jdGlvbih0KXtuYXZpZ2F0b3IudXNlckFnZW50LmluY2x1ZGVzKCJBcHBsZVdlYktpdCIpJiYodC5zdHlsZS5kaXNwbGF5PSJub25lIix0Lm9mZnNldEhlaWdodCx0LnN0eWxlLmRpc3BsYXk9IiIpfTtlLmluaXRUaXRsZT1mdW5jdGlvbih0KXtpZih0KXt2YXIgZT1yLmluamVjdEVsSW50b01vZGFsKG8udGl0bGVNYXJrdXApO2UudGV4dENvbnRlbnQ9dCxpKGUpfX0sZS5pbml0VGV4dD1mdW5jdGlvbih0KXtpZih0KXt2YXIgZT1kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7dC5zcGxpdCgiXG4iKS5mb3JFYWNoKGZ1bmN0aW9uKHQsbixvKXtlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHQpKSxuPG8ubGVuZ3RoLTEmJmUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKSl9KTt2YXIgbj1yLmluamVjdEVsSW50b01vZGFsKG8udGV4dE1hcmt1cCk7bi5hcHBlbmRDaGlsZChlKSxpKG4pfX19LGZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBvPW4oMSkscj1uKDQpLGk9bigwKSxhPWkuZGVmYXVsdC5CVVRUT04scz1pLmRlZmF1bHQuREFOR0VSX0JVVFRPTixjPW4oMyksbD1uKDIpLHU9big2KSxmPW4oNSksZD1mdW5jdGlvbih0LGUsbil7dmFyIHI9ZS50ZXh0LGk9ZS52YWx1ZSxkPWUuY2xhc3NOYW1lLHA9ZS5jbG9zZU1vZGFsLG09by5zdHJpbmdUb05vZGUobC5idXR0b25NYXJrdXApLGI9bS5xdWVyeVNlbGVjdG9yKCIuIithKSx2PWErIi0tIit0O2lmKGIuY2xhc3NMaXN0LmFkZCh2KSxkKXsoQXJyYXkuaXNBcnJheShkKT9kOmQuc3BsaXQoIiAiKSkuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0Lmxlbmd0aD4wfSkuZm9yRWFjaChmdW5jdGlvbih0KXtiLmNsYXNzTGlzdC5hZGQodCl9KX1uJiZ0PT09Yy5DT05GSVJNX0tFWSYmYi5jbGFzc0xpc3QuYWRkKHMpLGIudGV4dENvbnRlbnQ9cjt2YXIgZz17fTtyZXR1cm4gZ1t0XT1pLGYuc2V0QWN0aW9uVmFsdWUoZyksZi5zZXRBY3Rpb25PcHRpb25zRm9yKHQse2Nsb3NlTW9kYWw6cH0pLGIuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKCl7cmV0dXJuIHUub25BY3Rpb24odCl9KSxtfSxwPWZ1bmN0aW9uKHQsZSl7dmFyIG49ci5pbmplY3RFbEludG9Nb2RhbChsLmZvb3Rlck1hcmt1cCk7Zm9yKHZhciBvIGluIHQpe3ZhciBpPXRbb10sYT1kKG8saSxlKTtpLnZpc2libGUmJm4uYXBwZW5kQ2hpbGQoYSl9MD09PW4uY2hpbGRyZW4ubGVuZ3RoJiZuLnJlbW92ZSgpfTtlLmRlZmF1bHQ9cH0sZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG89bigzKSxyPW4oNCksaT1uKDIpLGE9big1KSxzPW4oNiksYz1uKDApLGw9Yy5kZWZhdWx0LkNPTlRFTlQsdT1mdW5jdGlvbih0KXt0LmFkZEV2ZW50TGlzdGVuZXIoImlucHV0IixmdW5jdGlvbih0KXt2YXIgZT10LnRhcmdldCxuPWUudmFsdWU7YS5zZXRBY3Rpb25WYWx1ZShuKX0pLHQuYWRkRXZlbnRMaXN0ZW5lcigia2V5dXAiLGZ1bmN0aW9uKHQpe2lmKCJFbnRlciI9PT10LmtleSlyZXR1cm4gcy5vbkFjdGlvbihvLkNPTkZJUk1fS0VZKX0pLHNldFRpbWVvdXQoZnVuY3Rpb24oKXt0LmZvY3VzKCksYS5zZXRBY3Rpb25WYWx1ZSgiIil9LDApfSxmPWZ1bmN0aW9uKHQsZSxuKXt2YXIgbz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KGUpLHI9bCsiX18iK2U7by5jbGFzc0xpc3QuYWRkKHIpO2Zvcih2YXIgaSBpbiBuKXt2YXIgYT1uW2ldO29baV09YX0iaW5wdXQiPT09ZSYmdShvKSx0LmFwcGVuZENoaWxkKG8pfSxkPWZ1bmN0aW9uKHQpe2lmKHQpe3ZhciBlPXIuaW5qZWN0RWxJbnRvTW9kYWwoaS5jb250ZW50TWFya3VwKSxuPXQuZWxlbWVudCxvPXQuYXR0cmlidXRlczsic3RyaW5nIj09dHlwZW9mIG4/ZihlLG4sbyk6ZS5hcHBlbmRDaGlsZChuKX19O2UuZGVmYXVsdD1kfSxmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbz1uKDEpLHI9bigyKSxpPWZ1bmN0aW9uKCl7dmFyIHQ9by5zdHJpbmdUb05vZGUoci5vdmVybGF5TWFya3VwKTtkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHQpfTtlLmRlZmF1bHQ9aX0sZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG89big1KSxyPW4oNiksaT1uKDEpLGE9bigzKSxzPW4oMCksYz1zLmRlZmF1bHQuTU9EQUwsbD1zLmRlZmF1bHQuQlVUVE9OLHU9cy5kZWZhdWx0Lk9WRVJMQVksZj1mdW5jdGlvbih0KXt0LnByZXZlbnREZWZhdWx0KCksdigpfSxkPWZ1bmN0aW9uKHQpe3QucHJldmVudERlZmF1bHQoKSxnKCl9LHA9ZnVuY3Rpb24odCl7aWYoby5kZWZhdWx0LmlzT3Blbilzd2l0Y2godC5rZXkpe2Nhc2UiRXNjYXBlIjpyZXR1cm4gci5vbkFjdGlvbihhLkNBTkNFTF9LRVkpfX0sbT1mdW5jdGlvbih0KXtpZihvLmRlZmF1bHQuaXNPcGVuKXN3aXRjaCh0LmtleSl7Y2FzZSJUYWIiOnJldHVybiBmKHQpfX0sYj1mdW5jdGlvbih0KXtpZihvLmRlZmF1bHQuaXNPcGVuKXJldHVybiJUYWIiPT09dC5rZXkmJnQuc2hpZnRLZXk/ZCh0KTp2b2lkIDB9LHY9ZnVuY3Rpb24oKXt2YXIgdD1pLmdldE5vZGUobCk7dCYmKHQudGFiSW5kZXg9MCx0LmZvY3VzKCkpfSxnPWZ1bmN0aW9uKCl7dmFyIHQ9aS5nZXROb2RlKGMpLGU9dC5xdWVyeVNlbGVjdG9yQWxsKCIuIitsKSxuPWUubGVuZ3RoLTEsbz1lW25dO28mJm8uZm9jdXMoKX0saD1mdW5jdGlvbih0KXt0W3QubGVuZ3RoLTFdLmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLG0pfSx3PWZ1bmN0aW9uKHQpe3RbMF0uYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsYil9LHk9ZnVuY3Rpb24oKXt2YXIgdD1pLmdldE5vZGUoYyksZT10LnF1ZXJ5U2VsZWN0b3JBbGwoIi4iK2wpO2UubGVuZ3RoJiYoaChlKSx3KGUpKX0seD1mdW5jdGlvbih0KXtpZihpLmdldE5vZGUodSk9PT10LnRhcmdldClyZXR1cm4gci5vbkFjdGlvbihhLkNBTkNFTF9LRVkpfSxfPWZ1bmN0aW9uKHQpe3ZhciBlPWkuZ2V0Tm9kZSh1KTtlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNrIix4KSx0JiZlLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIix4KX0saz1mdW5jdGlvbih0KXtvLmRlZmF1bHQudGltZXImJmNsZWFyVGltZW91dChvLmRlZmF1bHQudGltZXIpLHQmJihvLmRlZmF1bHQudGltZXI9d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtyZXR1cm4gci5vbkFjdGlvbihhLkNBTkNFTF9LRVkpfSx0KSl9LE89ZnVuY3Rpb24odCl7dC5jbG9zZU9uRXNjP2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIixwKTpkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXl1cCIscCksdC5kYW5nZXJNb2RlP3YoKTpnKCkseSgpLF8odC5jbG9zZU9uQ2xpY2tPdXRzaWRlKSxrKHQudGltZXIpfTtlLmRlZmF1bHQ9T30sZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG89bigxKSxyPW4oMyksaT1uKDM3KSxhPW4oMzgpLHM9e3RpdGxlOm51bGwsdGV4dDpudWxsLGljb246bnVsbCxidXR0b25zOnIuZGVmYXVsdEJ1dHRvbkxpc3QsY29udGVudDpudWxsLGNsYXNzTmFtZTpudWxsLGNsb3NlT25DbGlja091dHNpZGU6ITAsY2xvc2VPbkVzYzohMCxkYW5nZXJNb2RlOiExLHRpbWVyOm51bGx9LGM9T2JqZWN0LmFzc2lnbih7fSxzKTtlLnNldERlZmF1bHRzPWZ1bmN0aW9uKHQpe2M9T2JqZWN0LmFzc2lnbih7fSxzLHQpfTt2YXIgbD1mdW5jdGlvbih0KXt2YXIgZT10JiZ0LmJ1dHRvbixuPXQmJnQuYnV0dG9ucztyZXR1cm4gdm9pZCAwIT09ZSYmdm9pZCAwIT09biYmby50aHJvd0VycigiQ2Fubm90IHNldCBib3RoICdidXR0b24nIGFuZCAnYnV0dG9ucycgb3B0aW9ucyEiKSx2b2lkIDAhPT1lP3tjb25maXJtOmV9Om59LHU9ZnVuY3Rpb24odCl7cmV0dXJuIG8ub3JkaW5hbFN1ZmZpeE9mKHQrMSl9LGY9ZnVuY3Rpb24odCxlKXtvLnRocm93RXJyKHUoZSkrIiBhcmd1bWVudCAoJyIrdCsiJykgaXMgaW52YWxpZCIpfSxkPWZ1bmN0aW9uKHQsZSl7dmFyIG49dCsxLHI9ZVtuXTtvLmlzUGxhaW5PYmplY3Qocil8fHZvaWQgMD09PXJ8fG8udGhyb3dFcnIoIkV4cGVjdGVkICIrdShuKSsiIGFyZ3VtZW50ICgnIityKyInKSB0byBiZSBhIHBsYWluIG9iamVjdCIpfSxwPWZ1bmN0aW9uKHQsZSl7dmFyIG49dCsxLHI9ZVtuXTt2b2lkIDAhPT1yJiZvLnRocm93RXJyKCJVbmV4cGVjdGVkICIrdShuKSsiIGFyZ3VtZW50ICgiK3IrIikiKX0sbT1mdW5jdGlvbih0LGUsbixyKXt2YXIgaT10eXBlb2YgZSxhPSJzdHJpbmciPT09aSxzPWUgaW5zdGFuY2VvZiBFbGVtZW50O2lmKGEpe2lmKDA9PT1uKXJldHVybnt0ZXh0OmV9O2lmKDE9PT1uKXJldHVybnt0ZXh0OmUsdGl0bGU6clswXX07aWYoMj09PW4pcmV0dXJuIGQobixyKSx7aWNvbjplfTtmKGUsbil9ZWxzZXtpZihzJiYwPT09bilyZXR1cm4gZChuLHIpLHtjb250ZW50OmV9O2lmKG8uaXNQbGFpbk9iamVjdChlKSlyZXR1cm4gcChuLHIpLGU7ZihlLG4pfX07ZS5nZXRPcHRzPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PVtdLGU9MDtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXRbZV09YXJndW1lbnRzW2VdO3ZhciBuPXt9O3QuZm9yRWFjaChmdW5jdGlvbihlLG8pe3ZhciByPW0oMCxlLG8sdCk7T2JqZWN0LmFzc2lnbihuLHIpfSk7dmFyIG89bChuKTtuLmJ1dHRvbnM9ci5nZXRCdXR0b25MaXN0T3B0cyhvKSxkZWxldGUgbi5idXR0b24sbi5jb250ZW50PWkuZ2V0Q29udGVudE9wdHMobi5jb250ZW50KTt2YXIgdT1PYmplY3QuYXNzaWduKHt9LHMsYyxuKTtyZXR1cm4gT2JqZWN0LmtleXModSkuZm9yRWFjaChmdW5jdGlvbih0KXthLkRFUFJFQ0FURURfT1BUU1t0XSYmYS5sb2dEZXByZWNhdGlvbih0KX0pLHV9fSxmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbz1uKDEpLHI9e2VsZW1lbnQ6ImlucHV0IixhdHRyaWJ1dGVzOntwbGFjZWhvbGRlcjoiIn19O2UuZ2V0Q29udGVudE9wdHM9ZnVuY3Rpb24odCl7dmFyIGU9e307cmV0dXJuIG8uaXNQbGFpbk9iamVjdCh0KT9PYmplY3QuYXNzaWduKGUsdCk6dCBpbnN0YW5jZW9mIEVsZW1lbnQ/e2VsZW1lbnQ6dH06ImlucHV0Ij09PXQ/cjpudWxsfX0sZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksZS5sb2dEZXByZWNhdGlvbj1mdW5jdGlvbih0KXt2YXIgbj1lLkRFUFJFQ0FURURfT1BUU1t0XSxvPW4ub25seVJlbmFtZSxyPW4ucmVwbGFjZW1lbnQsaT1uLnN1Yk9wdGlvbixhPW4ubGluayxzPW8/InJlbmFtZWQiOiJkZXByZWNhdGVkIixjPSdTd2VldEFsZXJ0IHdhcm5pbmc6ICInK3QrJyIgb3B0aW9uIGhhcyBiZWVuICcrcysiLiI7aWYocil7Yys9IiBQbGVhc2UgdXNlIisoaT8nICInK2krJyIgaW4gJzoiICIpKyciJytyKyciIGluc3RlYWQuJ312YXIgbD0iaHR0cHM6Ly9zd2VldGFsZXJ0LmpzLm9yZyI7Yys9YT8iIE1vcmUgZGV0YWlsczogIitsK2E6IiBNb3JlIGRldGFpbHM6ICIrbCsiL2d1aWRlcy8jdXBncmFkaW5nLWZyb20tMXgiLGNvbnNvbGUud2FybihjKX0sZS5ERVBSRUNBVEVEX09QVFM9e3R5cGU6e3JlcGxhY2VtZW50OiJpY29uIixsaW5rOiIvZG9jcy8jaWNvbiJ9LGltYWdlVXJsOntyZXBsYWNlbWVudDoiaWNvbiIsbGluazoiL2RvY3MvI2ljb24ifSxjdXN0b21DbGFzczp7cmVwbGFjZW1lbnQ6ImNsYXNzTmFtZSIsb25seVJlbmFtZTohMCxsaW5rOiIvZG9jcy8jY2xhc3NuYW1lIn0saW1hZ2VTaXplOnt9LHNob3dDYW5jZWxCdXR0b246e3JlcGxhY2VtZW50OiJidXR0b25zIixsaW5rOiIvZG9jcy8jYnV0dG9ucyJ9LHNob3dDb25maXJtQnV0dG9uOntyZXBsYWNlbWVudDoiYnV0dG9uIixsaW5rOiIvZG9jcy8jYnV0dG9uIn0sY29uZmlybUJ1dHRvblRleHQ6e3JlcGxhY2VtZW50OiJidXR0b24iLGxpbms6Ii9kb2NzLyNidXR0b24ifSxjb25maXJtQnV0dG9uQ29sb3I6e30sY2FuY2VsQnV0dG9uVGV4dDp7cmVwbGFjZW1lbnQ6ImJ1dHRvbnMiLGxpbms6Ii9kb2NzLyNidXR0b25zIn0sY2xvc2VPbkNvbmZpcm06e3JlcGxhY2VtZW50OiJidXR0b24iLHN1Yk9wdGlvbjoiY2xvc2VNb2RhbCIsbGluazoiL2RvY3MvI2J1dHRvbiJ9LGNsb3NlT25DYW5jZWw6e3JlcGxhY2VtZW50OiJidXR0b25zIixzdWJPcHRpb246ImNsb3NlTW9kYWwiLGxpbms6Ii9kb2NzLyNidXR0b25zIn0sc2hvd0xvYWRlck9uQ29uZmlybTp7cmVwbGFjZW1lbnQ6ImJ1dHRvbnMifSxhbmltYXRpb246e30saW5wdXRUeXBlOntyZXBsYWNlbWVudDoiY29udGVudCIsbGluazoiL2RvY3MvI2NvbnRlbnQifSxpbnB1dFZhbHVlOntyZXBsYWNlbWVudDoiY29udGVudCIsbGluazoiL2RvY3MvI2NvbnRlbnQifSxpbnB1dFBsYWNlaG9sZGVyOntyZXBsYWNlbWVudDoiY29udGVudCIsbGluazoiL2RvY3MvI2NvbnRlbnQifSxodG1sOntyZXBsYWNlbWVudDoiY29udGVudCIsbGluazoiL2RvY3MvI2NvbnRlbnQifSxhbGxvd0VzY2FwZUtleTp7cmVwbGFjZW1lbnQ6ImNsb3NlT25Fc2MiLG9ubHlSZW5hbWU6ITAsbGluazoiL2RvY3MvI2Nsb3Nlb25lc2MifSxhbGxvd0NsaWNrT3V0c2lkZTp7cmVwbGFjZW1lbnQ6ImNsb3NlT25DbGlja091dHNpZGUiLG9ubHlSZW5hbWU6ITAsbGluazoiL2RvY3MvI2Nsb3Nlb25jbGlja291dHNpZGUifX19XSl9KTs="}},"time_used":468,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":453,"receive":15,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"fonts.gstatic.com/s/hennypenny/v17/wXKvE3UZookzsxz_kjGSfPQtvXI.woff2","fqdn":"fonts.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.74.35","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://clear-vault.online/","date":"2025-08-07T20:48:21.736Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.gstatic.com","organization":""},"issuer":{"commonName":"WR2","organization":"Google Trust Services"},"validity":{"start":"Mon, 07 Jul 2025 08:35:11 GMT","end":"Mon, 29 Sep 2025 08:35:10 GMT"},"fingerprint":{"sha1":"43:A0:95:35:FB:C7:02:15:92:9E:20:20:0D:0A:E7:8F:93:61:52:CD","sha256":"F1:59:AE:4E:F0:84:C7:D9:0F:67:4F:CB:FE:A6:ED:7D:47:17:4F:83:AA:B4:ED:FE:F5:F2:69:A8:AB:43:0E:0B"}}},"request":{"raw":"GET /s/hennypenny/v17/wXKvE3UZookzsxz_kjGSfPQtvXI.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.5\r\nAccept-Encoding: identity\r\nOrigin: https://clear-vault.online\r\nDNT: 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\nPragma: no-cache\r\nCache-Control: no-cache\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/2 200 OK\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: 44876\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Thu, 07 Aug 2025 10:48:41 GMT\r\nexpires: Fri, 07 Aug 2026 10:48:41 GMT\r\ncache-control: public, max-age=31536000\r\nage: 35980\r\nlast-modified: Tue, 26 Apr 2022 14:58:36 GMT\r\ncontent-type: font/woff2\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":"OK","fingerprints":null,"data":{"size":44876,"size_decoded":0,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 44876, version 1.0","md5":"d4a318c38eba70068a266ae2d1b78103","sha1":"f879c9e725786fb79cb0d44a5a726f07ffe372aa","sha256":"6a7d21041f4851f64d594dfb27f2591b8c7eb33d242e7f9c463eef3d0d1f236c","sha512":"3617ae3a7a6503a0de54ffd834c4561a558de325b52b4cfff5e93b938e822252caff94a52ce29233a8bb9220fd3bc78275029d7bfd0e13539030e0c588732604","ssdeep":"768:OPRw+AH4+2Dad2hHM1ab0ENRwQlwZ2qOimw4TJ1ZAX9JW9Vyt6jyUxrXK:0iLtdbEb7/gZ2qd8Z+AwEjyUx+","tlshash":"5813f14e8e805375123f596c3577ca3801e1a656c7f053e3f6eec822ca88a966d212f7","first_seen":"2023-05-20T23:27:40Z","last_seen":"2026-01-13T18:28:15.646899Z","times_seen":82,"resource_available":false,"data":"d09GMgABAAAAAK9MABEAAAABN2QAAK7pAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG81+HIMSBmAWi2AAgSwIAgmCcxEMCoP2DIPSIQuDUAABNgIkA4ccBCAFg2QHhFYME1uAIlHCtmlH7HZAP/Pfz9oV7NgTbieEKI11SQU75ingPAipH/e9dPb/5x0VGTOpJm03AECu/ieJDSEhZMKo7KJGSybZElIenkKp0YKXzPaqbd+jA21hdEGRHlEgKVRGazpaUDrWKaF4srDQSQ4ubA4M0egLVdxYsdNyvjbM++KbbPzoRVvSi7eRlDRzTJ7F9aDDvsN+wzJfyDQllAknKRNOkilLVRZtJItP/gSJbygkmfRRrGA8QdFsCSr80vm3N+qfD7LvChLzDZE76CMHNnxpoW+wDojH5kglelZ74sQ43yGas8Z3ZLOSbMRICBAI4q1fFa9T1ad9zq097ZnXTsQrLlT0rOoM0KZGBAIcHHAcHHcHHHCoRbCgmoSYNaKVpK5rfertOq/JrGJrp/Zd125r12m7eX/jof+1R+/Mo/1/ExcFZSGr6oCNY1ZEuroyx1ehq1CsVCTvDMA2i+lQBBQDExBECZFSRMCiQiJSBaVVzFi7uSqXccvbLmrbXe+qd1l/9/93n5v/3Cw36vL7JhQ2NUr/KsEjeICsGG9vZiPumK1ARTOqJ6sGO815jQq6zX6SQkAJYGIB3Xxufg0ttCPIridwLu29a82Ms9qrzRElDj4JmhD7YvnZ9cjA2DbGYLN4HUp32dDTlYt6Dt+2euYqV7MwcsKYHTciiP2R4fLzOnu4dhg9SihGAQbwJv7v//3uyfnatgsWnq+KU2iKZQqlUAqlXKRaZKEslIJ39c6eLJRCt+AtlEK3ficFp9AUWLBbYBaoB4n9wT//p96cgMbHGNTzvTy2x8vlOFawov9hRWe+wCXT23EHW+sQghR4/5DOyv32k3Qb5paxSrUfX6BLlTIdkJ2w1Y400ghhBAaJDes1rnFvV9Lc3VefwNvvzni3xHo+LOlzUtvvt/s3RLvY25Et00RsETEL5bc02uiBAdpmCdzBcUQJGB2EAmIhIMqsxBzGdEZjT50Vs+acTrepm6tyPxftsvzKrf+faHK/wCjw5EyiIAj82y9o+wJK1i2728IHGFDgQb3cQ05yueRwT7jwgJtU9FtBfh1PaOJD3iaYwPBASJ4BLlGHwxANRHOvvv8z1WxnyQvkOZHOUe7i61No3TWD///szE5YbAIIYCFqBUIJIGUdCUkWcQELXgCpRF2IsXSSskPu3HUnl71fb1cuDc//T0upbsZFYqukMyutf8BSOkTSl2a1b//K8bhr5dbkvmecMu7j3fS+KB02FDhe9FwbS+kwOTwsBASH8iAeFJ4TwHAygxwSIjSP9AVbt97AIhbQnS2bnb3d+U4ZuvxO674VV6uxpRZXuu0K1R1GEvw7WlNNIVEEYwi2KY1xOKRGWYRUCINF4iwYB9SXmZ/u5Awav5casSdcIva0Y5Kug2kx+7vf1CwaaAot4dzpBbVPzzrSosmgdY5J1SrVlJzdHDeR0MZ0upnIhN59dvXzp5x7o4ORzrAiuB5RagUTLNdyrdP12L9d9simv+QZQa9NR+qUlcDsi0gCAgKL/c9qPNk9868RjT+TBtoKbhlO51fhnyhUUwgQAlSOsVW9+xG1lxYKKj0F3J82pUTy3CvPyQmRRolxgJhiXMcVdOcGEABSsQh0//tlAfa2byAGMBDgVUGT8PxGAKC3XklV9CUGYMCeoX/HAXz5Z9NPh/bPEMD194V8GmoUeSQfZZuSapmS3bm49vg+X5lMl+LSUi4RI1LjZD2XxIr/UqEmM+IgTfKBt8/Y2Cu1RCnOl790EWJW1nK79O7EPZ2gSRY/qjKMlT5yhI56NQvrmKN2y+f3jri/IHOXraJktmDlrp6hgrh3dIRDSjP4sfCfUeat1DPs8dPPy4xvx46NiWyUvDaLtJqm3bKxedUWSRuxx7uC3AjPrUjXljl1J2d9KCQOcl1P3WjT76z9wYuTJMDKiTbbRdNW0cn32lBp4UOYxntCOWB/pmHSK6dLFzuhvVJ56R6RBhZGFRMACbmE43Hg1UKSfV9HRfMtSxVWdgyyOhCRT2kJBWM0EDidz+2XbDslKrHfNFUoauwDJV71J/zKdyhtpBy36/Tz400TMjEaGtX/TW8Tawtc0ysWmsQxnuPh5/apbmTvkUa0+1QenJ5FiPs0PPTjlpu2JDSP9Kw6MRwSzKdxGjQlDEkWS3+4YKigZ2hFC71j+Li19qYdltNyqzLWMuNcaJQR8WccQkhh66/SjFxLvOpnIHxT5/d+XyH/s0+2Tc7GDKa6ZancOLu/SrY57kS7hndJIOosOOVav69HZ9aRZhNtz7VDK+g5BS3PTvt8eb8M1mx8VUxbP2NRkKbWi3ZrUO5w4yi1BmZmnydmC115u2fGD9DcdxTwZYljKg0FIY5+MpEP5AeO7xCncbF3A64xd3AfozHunOj3E+sigtCnC3Gc6fjoXEzn7OeVpzIOLgMbf9+rJeI17Z1cCGlFoNQ24OR9cAwHUijXSm7T2npEEfq9D8k5TyUV3p+di5z61ELAljijGKuCZieYH1in54pTUYaA0ORAvc3b0Ofzzu7uq96rF8CpfVBzkZ3jrK5wB+MgY/Pd1KlmMKV1gn/vwPqSjxR8dtC2mbXkB3eMFZ23LDHTdmJBhSqYTnv0s2/3Hp/rO2l6ut+KtSbn1tV5Yv0zEp6SFCeGl7Vz47U1YFHxueFNanPREzY5yTggxvmezHdJL0vD87Ksasn0U+G+lZBy67m076yI+j8FaQkn9nXl+9fgwZifpsfkC9dFfJSUf19JWiVyWZQrYcfUghtLez6QiO4cOfWiGg2S0GaIpA7DZVthipT7faiTT3yvyq9mqjfbUoOstdZYG2wwzh57/M8BBzU44ogJjjnm/5BKJlMmLi4SD4+ShJSKGhLUkvMhQ0GvVJ4y+aRsypWiaoGmpQqt0LUuQxtuTO0BbsFSISYqLsalmqGGqZYlxZYWl+GWPY+cXuIK+nDUn3g18mni1yyghU/kgiwRihGGdYbpppsZVpgs6jYNetErEjZ7Q5o7TibxtimoaSY13QeED03lE1+Jedp0+cb3TL+ajn1m8jpieh01X9CrYdixMOx46HYipJaaXmetkuF8GPGmi8hCLEbodSmMu3xqHlccYymRdAyEYOChouU4sWqcqcR2nYvBlA/KSyBw/B4wASGECEoCQwFhYhKJsyXhBhk5xez6l8ukMmzAILydzByi3w8CWJhQ2LR3g6sQAkgeLf08CIWFAkolGIswZYU5TE/uR4+FJ1kcJwbnNKhKdFqF//sV3nP3+O47zzy9tP29Lq7J84dpjW9G7yD18/3djmwv5l/5SwbTnYWxO16PbnM9AgoD2DAq9wWAAGqAiJgKjqKjZ2b1wmuLlixbsYoTE1cGI6TEoyKEdyaCEF1iiTGx2ZK5kvmShRI2dj3GEYp3pj4SAEZOEVBGVOTwMaqxNI2ljRl6mimPXpelozBJdoAD4AS4AG6AB+AFRBorGhuPTcQmY1OxmdjsuubWNb+uhXWxSdeTbsUWAWsxjlx8LBFIBlKBAirfwjucocRYZgkweWze9TzOt+IdroKyBO8iVEwTM4SM3Ug/aCRUzRZhh5GMZCQjmR2zineR81wK4O2GAm9AdKYSg8HY1r2FSphhCi1UivAMci3dbJYVT6s1DWYzOw4WhD3KdQrnSNyVRE+SSap3OiWokqJAjW3xdqPNM7p8CUWHjCcTTDLFjNzw5JZkDRL360RBkqTOphyGpihRoeFNQbcE06tmJXNgnoWI7VXXhXOIS8KXZJBynbpBsU7l30LN0hBo5Vogo/CSyIfbmHdj1IgfJWSehbe7AejD+9cPfPIEpMpOMss+TFUrQkp14lkUSJOW1LWNOSYgWZmWHKax/BIIgoTGGwEJYbHYGBHbWNctKRskfqwToWSS6mxW2lySOtlw1l4HUxcY0owpdKjFOCN7HQ6cuHDjwdtNMCUBgiDokeVoacGi215DUkPGgZc8zqh8DLq8hb0SB3Hiwo0H7x41Lawr10MWUcetV5z7iwwBY4OZIrTbkGEYhsmSEaeUNiJDk8fjYi6zhB4y8CJJE4fD4QBgg1FGoq/x00U9yWwlc2SeBasXqxOvblZfaaK3OoInUSENMktXnzMhjxzMksWE+F0JkCChMhImgxnM4BgRm3P9+G5E4klDekN9JWPrCHCM0uaSJcizFP1AGVDnZMP9aTVw1ORMLUHXk6XdMO1jX2h/coCD47+8jlidvubyZwVAkFAUTRtngkmmmIlm62mOeRYitn1cb7+RcSstsKypM15/iX6QDFJH26OzkUaESbKkAVkVOSZWeEPZofBOoVE2j2i7MbUB3YEsbY6p6m2NtD3ZwU52sTs6L+wCF7kUubK863yBgC56BXMdiO1Q1yGL2RnvFAlvJEHqug26AW9NNJwxEhml5d9Xmol//h9LmGP9IWAvOcFJTnGaM5yLzkcucJFLlndhO9F1Wje1+Fc3pjRSVqlc32Rn/Q1qMZQz3NNGoESgUdDYWpIAFpFlvSnw7bpAFZkoJCJToAssrev1pK8rbau/7WQHO9nFbvZE56EucJFL5uW17AEHLjx4R3ENAoFA4MkY0b1K92XRd5yOR0YJ30oGqWMe0Vki7DlDUMNJI+1ktO4c2VKklTVWqBIeqtx2Nq3jNGfq+kM22xzZTnawk13sZo95vOecbycXuMil8V8eWX28vpJbd7tYvlDYwzxCWK+IdSb1RdaxGRoisZ1UMgzIzlLDaT0jnYVTB0chbWdIJBKJRMaMDrE5zBGORo4MJy7cePCavog/FCBIiMjoM33qmSgUCoV2evZfuJhZAHjatzMhKVdjFddnFyDWy35xVkKRGDOLAIFAIBBIJpO9nHSqm6BqRmYoHSIBmxVSZeIY1+Uyj+Oe4mme4Vme43km/1+AEVIOgMkXstSRffe+dp+9n96P7vP76D6wN+3x3ZCnz6vPH503nMfPkjPmzMTS07RT4qQ+1Z0kP7At3x7aOtfKVb/q5vy5Z0ambLbMyDTo1vHDmB/+oRykwcmhvrT/0Hf0VEd2hpvaD21T8zdZa2rxvXS35Lx6N9CEyVXut1Y5xMiglT887wZXFrCW00gPcpjS5jfNGv7ix5jzS9NAn+Wh3JGT2ZtNmZOh1OHZ2BjfxHSkpqzfgRgkCQCHWIlMPkwVhsu0whQdKnA/H6CjMkCuqkO4bSy60g+HvVaOeC/MMR/6yrhvznbJTdhMZIE5wxorQATIPF2Cfvjm6dbQi5SlZcvkVqo6H9a/JivqJaiiDXguSIgxQpZHKlIDYid4IWypPcpyrpyiCHUknNyG0sic2IbI+JIov+BjScYOmKQY5hNETdagFgt0WdJBh5O9X/xcULpuELNXNvfJGoOzBUs5LudjTy19U8ErBb1DP5ZBdP8z7wfpBGtztW006oJCFvHdXE98J7SxBtJE+RVVJ+kxao/T1Wen36fMu4B1q/zkMTsbZ4FriZt4evtBwVpR603k8U1mzFabX+MBIIsu7Nv6lpWhyA5ilyPXsJYsRZHDOSwrwnlmZTGlILgTUy2kF8NbGMRn4y1nrfY5rjXylHc2rFuQaQsuahZFlBUqnMhwsvWRrksx15M16UVgaW5fLYlFTXkVkDWmex0vBhWJiBlECVoGy6ih6wGXujzeKpWm8DxXZVW16+pcUf9Ain5Go/swTUjfo9S0PDoOgNVxD8g99q0X4MzWvmTKisMrGqtOyx1T4hzUV6Q8oNetwdXwSISsorAu0HzmbGUP5C4CKAhbXWUr0ypGYhkQhGHnrddVUORx1G+qO1PZJI5MfDITQ1UEHqFqGVhPS0xZrxld+arHQzgisBAVUG9MyidS2b3qxag+KkoLy3HpNZ4+K+nZBFZAq3g4LUpkPQ/zB0LO8TfBJY5dA/f+PFB+TlEvPID6U8V57kt4mlSCLQzSZagk2nHZejEtslQOWXEyz4GZLWYBF0G7g5aU1a3v+xcTesbtQ9MvUq+o8wnIbWyedhYeXsb27/lR9ow9LqrzgsdmfynkyTVBszBfIYrIEJW2+NlUzBXeDbZnRhNkSFDh8IDtTfmY4HkigpqaKQfvye5bjoiTlptNmO1RQYeFQEo+eZsWU9D1WrYW3rbywJTHbA3ZfHJ5W8gMai7wpI9338vIb8ubLLdMoAoFd2y1Ej0YyCx+UT9FYA5iD5G39RayvNZbqGvaPMP8ijx+aEWQa8n3me0Sr30DZd+LQJgKS83m9LQPaQyjnEL5ChJUkzkmRuZAQoLlAlHZSAotc1qBniyQ54q0Dj9DgIAmie4duqbQ9yLzHqm/DrkBIKqJs9Ewvf/j3rRC33PL1hCbeDbUolbf6fLYtawLyzxdi05kuxEkoUWGhUpXOSmVNQI/SDuawGEMoamYQS0jrWt3RQRsfjCn+YJ6BS2MSQN2amWKF/T4g4DPywr6Q4F3Vkai+WjuWGQKibFWeNLZfbcGjaEO1dlrVNJRko/fRdmvp+omataTK0OMge70inVZDzlU/QkhB0UL+60bjKhBVoGh9GSwVFqZtqtnAOuXLtsylo12MRTpnDdKwSxgue49fHAkQ8E4682WYGTXIr/I8p8XE4s0eRXVRCQXaAnkkk2yTiMk3r/tH8vSUzRRnyiXDJc13cwsmZTp61a6ek7PAsQw26nUEoGWKi1JZOH6BUrlwehMVwnIwOu4GjrxNVSqpJpazVjtorq8htB0PAoxvN1aa1ZrjfroUjCOQG3QV3D9fBJ2ymITMWVlLqqs6lJdqgvr0mrcNqRDpl/4dlEqLdd2R2LyyTgTwC3Jqx/6AoD4/kZvh3t8gFALxXQQbMm6pRiSCefP8QHpbS+aYIR+6nTSkhKmBHEIMhyiY/ZBBmqCdBtnrxtwyoFGPbsbfTjY6MVh6YHOCCEupqNb1dMxDNkRZa0jL41K9jdq2EOFXdxLTf3be+ilj3oDDDSc+LZjYN0lsNYGJTNxrrbwJ9xSvhbsZSHTEwduaXLefLIbd1bb4M6TcFMyzQMmPGD7NLaiAH24rwPAtLQC/aXhrp9NhwA7fgVko4CuIvGDgoD4g27h3PoLEJdGUIaRgFxfCMSfhsrksYMKdJfvZsBG1r8J6kuT9PoXxVV/0Rkn08WsPxkszeSuiyz8usAGnyaom6DOzwjrHEidQ1RnQetM4NgB4jotSNIQaZ1aQNRJZHUSeZ2ArOMo6ziq+u+jrn8laDAzaOsfmR0bdLdG32NMmBLmDksbVrSBrSmx1zhrKiNVkeqKmjJcKIO7cPAGfIHaHH9GoD8IthMhtE24bZNoW8TaIt4miQDyAIoUupJDhSmiTiKmOR9tc3TN0DfD0BRjkzCjSpbEFtYEbAnY45/rHXA2xt0oPEmkZuRtyMTXgJkfH80iUJ9VsB6bENOupy6HXs0pXIdLpDa3PppHfxyvaC0+cZpfoqaAZKygFDMkHQNuQEMYjIaUiYIyTEMbqQFjtDqsMRrOeBvwJqohmKQRTZcjmSlDNsukmCtFNa89WCjxaLEYzToa3frGGDY0wrSRxrKpIbbNDXBsYXItF+HZpvEZCwmYCgiZaSKWfGLWMAkbTcqRR8aZS87FVHDnUPJoKt5sar4sGgETawUz6YQy6MNGzSCSziiaxiSWaRZPZZHUrFIpbNLJ7DI0h2wSp1wil7wlbsXiMo9S9raUN30qIX5VLaAWJ6geK6RBC2sFRbRjRHVoMd1ocb2AhD4zaZBJykhLG2eUMckga0rLmaWXN0+nYEErWqZV8pRG2TOz4iW1qlet5i2VuveUGj5oTZsUWrbJte0Md+xttSUOSa3l+HDfhxL9TB9vFJ8kNvJpImMP1iY+S2jq8wRmvqDNfRnfwtfxvOQb5su+jesV32mv+j6O1/wQ230/0l73cyxv+CWmN/1Ke8tvMbztb9G943fmu/6I5j0kcV7b6eKG7HJpg3a7TNvjygY0ubq0va7Zep/rS9nvpnjX0px2MND8pUPB5rjDIeaRcHPM0Yh2LNoc9Vdac7+/47R/Es19/k02R/yXoh1Pbw47kau518lM5qmsGu90tnYmdzU4m6f+51wO7XzeGudC/hrrYgHapYI1xuVCNdqVwsyrRWqUa0W166XVSDeK1wg3S7dl84KihgMQeipdUWZTSGG5KVWC7CXq8oT1Zdiib97L3dl0PxwPxdPiiXjbeAXmPsx3iYrmZkDco/Xk+ogfD8QjtwER/RnsNczQb6//5nWxQJ9P8583AYyBMar4yxQCPl6AyPpC+OoW2OwQVFh+RGFOWEArlVmkGY4aAllAYVhgqyzjrGyzHyKl37/vubEel6r5YMwkKyU/9pjog6OK9b28eH5kv8vIj5L3bKsJUTwsCEaDxGYcc9SyurFMzvK/YT51Kb6Hlqz3G32eWOHlR9PkRVQZXhiaF84GJAoLRjLRws/CRRetxXQe4ggDrW2g03mFwesvZktCyF9tq8L7HjLnbycWbh8wwOROswRaO87KCJyYqwcmYtA7xN/x/mshL1I6LIRLrX4m7UWkcGwBBSAKqocaAAD4CwAA/g3AiwBU/w/AmGsAgK+iwBtAy58AEh3aVhj9kcphVj1MlyAQVODSNMvrUhjtQzaR78Y0nX95EJ/mw9grAc3pZmpgS5yeD93dzEIV+1N/dh9w1ElLbYylr02rvYOWonUxN1rH/S2a0zmTuQRDpLZnJ4tMJgX4j9IFYAH5/Z+vaZBbCBuNvXVYuEkC1TX1Z+p6qsvSVrjQDnMhiKhSkXGucRm8G5MIK1v8tbvuavjQ2/pE5sgZqnYX0irnz+alZsaSq3fGikMpGgMeG8VtiLBQwYa2jBHL74FCYNUB24ElMnVM2Cceme4djC2+OJubTnFZMVAbsMHaCv8p1U7Bi2FcFO+A07U2CTYTR8JwE6nuLp3b4hwghNucUOy/vMx1GTu/tRSeRCfHS8snW8rwENcCEvDZmfe146IiGwTrUDkplUolBCGRwyZzD7b8OhHy5u7o/bNzy/U3xmn4xDU8+h7rT398H6q+Vbj8k+uH5GHVdyzQwHqATJbTgGE8SrmKSR8YjAcvM6i5cbanAG/jok+fLfpOspwhQdeg7HufpKZA1lIpXQP2/V9TbrH6JtaziG5V1mKnlq7h3sH+rCzgxvtw1a08eb+JCfJlg4v+1uosYCKzgX7cNIHqhsfaPHy9ypXacHjgx1l4VnRoEmM45+LOfXGN1tJhY3IbqIHXFx64JqvHoIeUjMv26/hI13fdWeN1Y1qBwOGB0rU+SsAt1GrYKhQYsAK3xZZtTOB4kZaPIxNZqapMsaPLcNsgrL8vR68C4/WY3tJco9SXs5mfjWh4Oupn2LclNY3RJL9fzWbU0bySV7crWB7qRKMdIaEM9LNqU8il5Ec3P2d5DX0DbHtFEKh1ZBsrNo4Igh3ucl1pPmdpZIykxCPuZJ1jkE5MPP6pd7508FedNW76iuI7Cf+SsVjriURSzfiF1l7o71gJopu+aF3R46VVNGYrMb+W9EjqysCyse92I/4aIf92QcCoIbqLEItoyTgTs2ZaoUaNbfi5xXG2Z1mN7wiuQZb5rQcwZ7jcaqNTNPwAwylK9DGTLm3Cu2Yv/T4g/QqHWKRm7ZX9AvbUABCaLbya3XIj0godAtTv34S83Momd1jQgp7JHNhe4M2dypA0cFskJ08leNE2UcZnUyRsGM9rLiyc/eLtKlcUbuZi/zUBcDuRxtXPFpfkafOPTljPgbBVXrD6W5PJmJ6fX4pArKuVFm0ibSXnHYOA0aB0sCFkJZ9jtGnF1DlV4NQWyJJjvmCs2kUIwCVoOQFI3xIZrcxOI/KetLeJbLKg583waRk2D3t+Sd03o7/yPgdNFlTixykPp9PsEc8WV2epRtQ4Urc/vQMpYLJAtQ2++QvpnzvhQPsOwa57WdyvyP5FV5Xmww5XbQjWhPeLWMSmSd1vJnHHS6HKGYZR7qTwPHyE9ys6GWR3WXf9cb8a/jDvjNVOThS823lgdlmqB9BRf+FKNXT77NGVlHsRv55dqG9pFkJKsHWAxZasoQsjQZvPgMG2M6fGpJlGNmPyJJOwgbPg2Y0oP9/lMo5Np9Fux9S1FKCWe6WBk+axPoqtVHi2zgPr6WS/AzefUXYUgtvj15GrdYekWSZzIv4a4tR+/3Z3OhzmabNzIaiLjbK+1o6dHnorrgyad8Ty1iVigjD/x+ccF10Cxnmxn4+vTlgf8MdbDReYpu7PNbKMoMQplezWVOrejjPkEK1A5yX2GbbuYi3zwQHeZYk74v1RBpu5/Euybo8X0ky2dr4NnbEMA+Om4ZsQ6NEO7/D8gfW6Cy2yt9w8zZsAvJa+8M4/osySbqJ13PwWBEa0515J3g1WIhZge2hIPzjfKF6pnCprwIVo8u2wvofTDTbNoIcHCdFe9O4O3GvZVs+A2wmsE7sMcNMWUgpquxjOJfDuKRBrnqs3rEHf9/2u5m1EXjuNnzcqYLJrN8jtOWVrTCMC95o6RArgsP/dcL7L9btm0524TyZXo4jHQGrYSWMBkfFUgMF7erJMhQV+1CYOGKTEBUTBTrsN4/QO3yL5d6FxmMQ5v5y413m1N/1zvT48sLLOG4PxIEklw3nNmkjEPBLNYygf9YHJxfbYfczNrVvhpcVIV9FAhsGzMyo2Ba1XXXQB+A7VQPxBxI6SJkh+YKeRUB8lWvF67JQJz3NxDNMDC5KdyzkBMFdNaNmm3lLczNMUaTay/V5H06z33lNONbRQftv0lpO3OdmcofE5hvV+nkI9rT0SG7Fib+ExF/r62ql7BQQHM8Rp46F7JfCqqHlXSzbED+LmFYO1dDWWSs8PFWinKbEjBoTvLmYdPa4x5bGiDD1TPSasCaxh3nQ9rjajQwlr0y1jywpSZYb+tk4lfkO/gAQntQI4p/Fle8uR96B5/UcTnMVkvao8ZqRaiZXVKjBna/dO3ulYfApDdbWqbH4l88c2PdDDYZHwTlASULJk3/zGm2KDN3Q0GCEq56VptWJl6E1TRp7FgZbw4+4dDoHXhzf18Z3L4V2wccXG663yWKWc9YWHSanvksld3Shxl6I7RYNCKHwDaa+4AvYtg8dTjDkEzbIs6R5GFrAX7dfmNDAkNjlP4IoY+EmfJySqheldiGX9EGqtUpglE96pNoTn2oIWdQZ+j+AlHnKBiqxafUTESNgBo1BmUivr5wsacXp/sn+F1/XyzicF1TxpmnV/vrDNtYazSVY5OpOMiUsMG6WRb2PG686GM55jJjVuL0tqIPTAvcfAQoZH0wOV9eF4MOELYfbWa2OqE32sqldHrMOEQjontZmRbBmuZFscenlPRBNe+68aabfgL/FlmB32vHZFQ2Ptt0qz7GChSdUm5CFyxK4OXmLQoZA/6C3Ngg/XBbr0raAWnj7viUF+3Lolzh8bmsLh/lQlUQAMnT1lVN/pe1nGagUylgMihvHZvT0CMaST7l9VeydYavwGYKCBOM7q6LDX02VzOihomXO1O7JWYrBNYjBD98A9l93APyEodIPqF12BE10PmWuENhiHPGdt7Wll6QdJm2fRSqZI6t9Ie6rraBo8DkJUz0ImQqunB4+usCYRBQye6VJ8zIke8VXs6MZ+Jltl126YCqum83iUx0eWQCWbm/rSz0lkCoduwSpCFI7Pfhoe6cXzsHVa9gHllH4+k71W8Qj+bzLpo2+sdXJGfdyYdE1+6NVS/+SxlDh5WJ4Aw0sPTHd2Im0/4p27XdNO28Jebp7M5SNJI3fgbMeFlBzcDW4nEvvM8UgFzU0xingwpQhVQozoSQbnTDdzqE2zhpIitcLW04gdY3QrfjS928GotQHGmmNlwMw6227Oyaiuqx0MCPJcfgHA/vEH0GBX2PRxcK79EDOerXOd+BfEESQVzI2MnPD1Smy6J5Qdki3isNM3Lyq9xCFxmEpwu1zfiKAgbLeX7akIIQezWGo//jGgGMsND7XVVglYmxMKcBeIV0eSdamDzOc60k2vQXa+VCCQCinZtiIrJJ8wMITU5iq/Ox3O48mI5aPkUlVFPZm5eKTkh2cOluIAR4ZDnFp4oV3wwKtKm2BnkAig15wnLK55arWkaahgsYmm1Mi75RaSrTQ7yDrfZpP5AwO9HHDcntPBETp3s62LXm0fjBJHuFFg6AXTyRzxIUquOl13XURGFKBMUKM4YiX4/sg7nkW3ckk6mURgVHThL8X+D3VU/6f2G4DO0sIx6msoZ97cEjznZYROOjFIBlOytW668B5yFh7XLYePipLYlK/gEB3bOjWK+vKst0M7GhF0SQ0ztCHisOZGzi+TnEPAsZxWo//T6rBexqTkHEOa/77gVYoQ2uknqMhM5lc7/oVxBuZgAankg9qFxyODzVmNVZ7iZjPiZkDiCoICQYuKhsz43eXR4xB0FLxiU9qhDsExc7gftQKgH1b9rNDUDGpcuKyTNVI4VR8zCrtcz5RKGGnrlnBPsRShrBg3n4zdBLldbrmgCYSHzeHNlDSb+Op8R4779mgDvc5k8dlwrW0pR9NWdV5UUHk6gcobJKow8qQUNYCWh/Ul1vX+mGzW/zyZN3r1CUpqFgbkiEUg4b0tIx+Mb3JsDa11YHasHE3LgpucljUDT9Gu8n7xwN+eFWKiHn1iWicve5vJYFJD88JI60EOxINBznAOoAsviGTKWCTSQu4lSQCFqO1B71TCcJyGc4BGP3T1w7WCowlGB+92+9M2kaYVq8IEaplRDnETKa1poYe3/edc0S5xLDJc7mkb4xZje0sPkg0MzOSyHT6hdJUJ8NJkC0akouoGTAXT8Hw4IrJCycjcRq74GcvZh5CR4R2WPnFGHyL21lPzfDCeGjN8dLvZpP5YtctF8ThsMcxusUo75K4Uc/nEfWEWUlUe54wxxflb8wcLnt9l+r1rZ74EUjhKZcpGUeTOqdZYZ7KU9uukCG6mXUCHak/qaHA4MgTof2hG5iDKL3chF5nTvbNe8dZqA8H2dp3B0VZq/+FrEbqa7XKcCXscFydjfMq7M52rMBqscNQuLkofJGGny+r9wS6FIw8H/XQxtBKqOQpRSIwEhAPwROBvNK+nvKHHK7NERodqlMwbYldVXtP1VnKgctUf+9bMqUs4IjxjoX2k5IAHfJtBwBusFwk+cEcWCElyBLkm6CrWYuzKj5jJSbDjxRg6EoZwwqTYx97ceOgXQL4XxVel7ZAWUchEk4IrrBpTQ6UWdkFkEGL8iAyqlykquppwZQZdcDdrucsVWK0NjZ0kHc9poyZAaFuUT4X02AxZuxPTsXfY2FaM2k5nyAYm3oInrJXtEAYbhgsF5/wSl6bMtJ49FusAX9e7BWDrHUPnHyom2+GgaeaU/0vl5VnAe2y9YKg+6bctQEcvfEkRymTnm3DZ5TKDxJBtgP5UPlzAYEoozIiQlyEhgJN2i0smGVa5a/SAYFhn6dRvMekOoG0guHgVDGmdSKqVVG7YFFv2U+a0HDg7nHf25QM6pMuOVWtpuyINTyndIF4W0uPMT/03nfgaGRP5qyUln0XNz1SRiS5v877Pb7ktVm2KKpQ1jvgv7FK2Cag+G+aLrzIllKGyjU91ZWGgUmGrDRMehrMFSFUXxvkR/51ptZN5ySAmJDcJ+UzCkNE83dRERipu4nMc8b7WUPRDc+/I9EryxndrUxxzNjcBhAtXwyCO9mKGAwEv9gsB/ThtdmLshWBSCv9DSnXhgEvuXYFVQ5kZwowIhZ2MHMuECEPeiQYIkM6ZzFfjACuhQ+IJcxduDmanN5XMtEImM/0Wx7XR86at0Ao2mzb78F8cc2USXs7Bu8WezT9KP5i/wElJGpBkp26WNW2w5yuQoRUTZ+essbS5FZvA6LRni53fdnlfLsNHlLARxkltFtmh6CFLZtmLxC6oO8hUeeowrxYdhAwGkZ5ao/SlIIm8A/ueK15AHA6lKNMFw6BzTHifzRwq6ef5naEnaqPsIIFJO5+G2aHVteqOCt6xhFfqe4/prRywcyzvs/dN086RO659WxiRiF+yPBI4N3lKMrXeW1AY/s623uKScFtf+EABRqiqt94L7lCpoYzh1endnGH+NBjFMsPXfpbUZsxhZK4dYSLYaUXfBya+znNYCjwcSBw69BPz5rT/vI5/Q7ppD705xkBqjTmlRXa75TB8pyw5LWoVP13m/bjADvHaODz6VBMD36wUcuDN5/00tBfg3AUAzgTjUfpKj+i7eSlCzZQZyBJwK85jcKkr2cIv5/vuKKovRE+it4vmVlZYAsLgXhA8ZVum2d25BGVphU17uWlC3953xWnaHugQQ8OpqJD3sm71xPpjlzbu6HU5sCKs1alkjjcsdKwKXEQu6Ssn0/YooTlIKdnFleFkc8gpyTd2i/dQOQAFBpJUObRyjvjVjEQYgdd+CZKqCJd5o9fION4nNA1W7eoUgPujCv7bdrXo3X/NppxhQWH5wIkf8oSYhQPclgSPq8cjLnnDHdu1lexWCzFYHXtZ7rn+URKS+clwDUG5XCbQZkAIas6xixmOW+dBd7nSfwhUbNUXm11uU1KiKUQJy5NwUpkFRwG28NjtYec4b9nWkI0SiCNFKPE64D6rUDg9JrsRG+qtm/R1s2x9oyc7IyWTsBfsJPALRzDTQ//KNVjlXRHfmO2y9RmVuJDikst2Uvgpuru1CgF4SiKprQfNuah+Yp1XKjziq8x1NCoYz92KWWB2Tnk+GLy9wLthdQMcmpMC7WJr38Ri+TlpkxZJmxgvWRvcSXGqMmAGw32c54xJIJZm0nobV/mu9wSXWNDE5xECk/qIDCrXNe5kFBgVkp2wW1An5z/sJe1D3eESBbFBGvNDK6YKXpYzoKnx0N6CUeEsZhQlspE9jOgI9jqEeyiIkCBGK8J5ERLY3EoKBZHIdbmArHU3jXbkWqYGGaFBpUuXtRSUXnAUPkEYVh8yC0pgMa3Oc+3iN85xamxsoSpB7p8ud421tWoMZi2B19NPgEGhCeukN2zWi7Q4GPwGqqhnPrybRFCqmKtsdYAC6CZIHkiK1bC4FgM/EuLgEaaAgvyRDEi2Uly/KDqISSVa/NwP4hWwq2P1gAU4xA2hqv2a6TDOr0vAzEujWGymzz92wMTOUkeN8DUYvS6AwJ+FYA6gHfJKlzZnKGlyOpTgC8dl6EmbwWhGa5nQz+SyjQ8IIYavwW7V8etLiGiX7EYHtg2bQQzTKe0NEjDMfmjkPDtDEKCxWXeq0X6SbpW2/78LieNmxnDasdZl4HciYeZd7HvYAe88CENwRxur3srISI7KQJ0qQYImQXOBhf9JBHO3plIgm2spkGFD4w2U5S0o+DUxsv/B95MdAFasnNGA8XFs2c4KFa1WwaVl6sj4JeGfZ6HFMjsWbnLITbnx8CJQzOVdTw0Q7plWYcsoFN1SXgkubDbi9DayFVupdF0vVkUupxKKTG00QY5iSs1zf0CyTzxWn1s5o4AZ09xcF4DussEgQOFpwX9ht+ajIG5h0IDpvM5s86EQsW0Cfftc8xMqJel5819Cdf8O7XFj3MpZWh7CT02efY2VQwyGbJzsW3yU4xJEj9wtv0HdUx5UxieasLTgBFqckVky5fGG+dKv9UPKMBLIUt/vbSKF/Hww7ujjJsE6VsvzAwK3zYgPmviKyLiN/WGMhlEgH4j32u5PPDJCfbHINdCC2tqmSllg8j0R8rpB5kM5vWbs/GcRko49jyUkNxvvMjPKIF2h6VctZQRUfiQ3C64yb6BSagCxsAK4k2tOg+GGCUwv8YhruBM5Wq1lZteVNWPRhCHcugaDNwmfHJe+Tnre1IOAjEl+N2ttG6cp35hDCoGs0CPh6u96vrrOYMynRjBHM84ut2Kw2UKMZ7cWE6tXstdCY9dv3DSBZrDHaU65QUVl0YgiKtJXA7ZSgf5wbjeFXaJyHmCmWKgsQOWr7Q7nwhRGyVJbQBcfpI6pS08IDUrCXNvpBArfZ3sVAmUjPetJRAtxNq0UFVo4JTFPJOUKS1KPVsNFsQsMrUTQZE3D6FVcDpd/okSBU/sw/IadchaV5Mop8RCAK1y/y6Y6XZBFo5cDA7f6D7IO8L5Epg7Nopnb5vu7unBibhZ8/OfIH8tzAPhu9NA+g+fvwlYLn8dThCDsMHqLMq1qSzAHj71a5KQZ297CIqDqPwoBBl0SJ9D/VoiIfpL/LtMtmOPeBNUCEc0uBN+S22R5oh3LmnBXvBuOW+OYfHII1l875i4TWJjQgqbXP3ztpW4V/kO/0AVSGelVuGwJqpAY8xcPkCH8C4KxBaI/HyaTuVUDu3MlN6SYGoJFK1jIQuqYK3ZJ+9rMPopo3+Q7mIUdvud6hdHsySNaBdV+p7q64uSGdrjxOwoc1mb2NexAClbSU1h78Y8bbno7vFThJbqv/3+NbVlF55A4Jv5eG5dDfehLmeRLIdrbd3ViW9RuRFPsrmMU0wlSktZHpLtm65nGGdobNr7AXbxqZ4qXnqU4bn/rpF+cwaK1OzpvNr4yWDbAht7Qd2qw+QybhKbU/E4Y6v6JUh/9CPTEyNo5Z2KIDL6C+EGzw66DRCSt+BzAK1GozkqN7RVunQqxsS6tkO/yZePDPnUQMdeljoIhz9rsYaJRA+iPObv+I8AdTuYDOCLaAKv98VUfe8u2oN5xotkhplo/d2GawKc79awvh7si8EOaLXX3pcx4H0nOPNd1R98pT6rpSYvYHhLdyUe0nEC51d9UyAGUOZM0QxjUziB9A8GuAbGkLQN2jhtnkOVf7DCRRF0EtOEkVQivUQUdjK7gmFHw805yaEX5WtFl3a3xcW7Tiszu2msA/oxyID7N3sWQK+iiDZ1AQCpgDPoH0nxtzHoIpOESnQaVcHr703FbRFonICaIxqSXwDSPE8wI90zKbiL1L3SeStlVkHi7qCad/YoesVvtB3Ru7x0t9CMQ7SbvzxAlXR3MoOgoQZjmCDkMJV2fDVIIJak1/Y4RfAgS0XX1y3ZGcOUS3yGA0+zcnLUaCx4iorPBNbDn3tCeeJDEV1gE+lCT8ma5XCsXH1eOpS8oF03o9GZ2pA06RAUaCRsKOkz4AfdH3iq72H95gFlcphp/4jeOA+5qO8pJajdWaMVn6FcYo3Yj1F+4UHRS4yBTetXTajXMRA3QguC/B50GeJ0mLTaQIRrn3xm0I6baD3uhX6RhM0WCzkHoMtgQnqpySzxTOBRaAJh+UR+8zCUwhLXXgXhPilXElBH2lYJ6FGsO4nj4lKViG4LZWA+OGoYKZhaMGCoYyaAJOLPvqbZDkBotk/zcY1k/4Wngs/pL94BBkz3zjLJAsNPy2nY9wF4r8XTdgcZgt/eVUOm+J/xxyMxtH5V7Woj6OnsXAKLRbfVbDHJCCL5svROFdpL8KVskCtds/ZsaW85zRh2DztrDYdyobv4jETlPMGXCcDnfzW5hWYh2ueYa37KOJ0Bs/Ay9rbkGok9U8xcENp8JG7phKrGp6UjpRhGF0S5MBkmPMJNj6J6I28n9WMMRLT6pQxMPuutADj24Buu0mV/r5kAbamKgYOaEXa7zcL8zKKOT2Xt0s7tbxl2cc/WbIDa3+zebaw19U1pMWZHkxi4mLr5N/RTYs0YRxLAn1XR2ISBwvtvF10AIe5yG9qkfNT8JKWDv3q62W1FGHXMyHe0vvL437OnjtYutghpj57+D5JeWfBG2GT28qKP5sFn7efsy50zYhFXbEAkm0LKHJETER4aenlsCJkhslj89VB4rk4jPqIEMC95RSPHYA720+B6dfFm1FhaHXSc6H0UuTUJ+TRzuIE3rMUJZZRDNQ8hsbICJbAfl826rp5UCWnBxRAg2vjC+tHbjDyq0N96AaFnti6v5MQG283e//RNLEMT4R+zbe8OfGCxMrzynhC52oJF+QOvf55v5KH3t0XsGA0tmoEl7d1lJ8U3NlhotuMqjX70fJjoev7atBX4157qXjysO69o3dZj+N+1GmUPkSdOUe/SXGO0C8DGeL9YOE+lphIS8iTfJFw0CDoiHw7OMQOzoUEbyCu94CS6JrZJ7i2DGreQBSI7oSUygk+b83+SPtpBo6MYFpF3Jb0Fe9eKMB/M9TFgQfroKaGpAjLdTRKPO14oZ7KoFvzZvI64lrBTyaFBKKkGqBhQgGc9iCetkKHzKk/Hn/Sm8BEAiAueBr87/ybv9AId9PVeQQKhRneK5aA7cPavVJ1cdXiK35rZf4wMwdCVTNfQBqGv7Y7OusJbMEs40QZnTQIX9/TzhG3MNe51wW7g3B1OkN0/d+tpws/WGgdkjLeutGV/d7RwbTDimUgq35WCKDtjZ0981dg1pQ3rhRm3F5fc8XyaWOc6aYll2PZhx6ri8HH7QfFBsKFzJeJ7QIvkX4jqvBuRgYbrjhrKPBEzgp5zSOZu2I3A3CEDW4Mhp2vE8quYKdMkIHzIfxLHwAo19qJGFMCui8ne6+spx1Zn0xB7XdJzyufqdV6zIpEDUpBfZY9YvwoL2u6aZTapfi2GPKNqKyVvqraRmrWYMyZZtlXy4d46YXoijUPXsZOHmLjZv/dTjKZWibx/0p/6GkZ1Yi69q0b/NukCwLYcXKTWFstULIltdQB/VIwGeZmZWxgzsDneUCJk8f+JEXGKN4ZDC5K7a0kpXFR/WX4Natb2DmYUFTkgCSrP4E7lgzcER3bIan7AMUP6hadmRItXG/69qZO64qroh4LtMFPFGAiYzO8GpxSrg7ULrsI5UI2fpuqnnVBQbukb6cpnqwYwkUY+ZXijByzokKOEAYrTAFTKn9CKp1Pr4z0nQEUE/9tOomXRFVw8Dr8KNcYEfGPFeP5bX42prhjPzSuNKgb/kN+QDixiW4nWMu0gM41hF4HbEnA5gYfo1cQ0dJMdeu99c+6emomjISQWFOLNozNDcRzqoN0bKA7c1pjP9IJwt1FfpsLe9ikolk34R0vJbVGFVmV1mg2qHAzOEyGA4fYgOMghLASkQdjbHTj+fZf61sOhRD+mmT90UNhEr4Ex+fKQgTT7ZTRCtk4aMf6G+tCm94ewsrGGxgQkB2R1caxiagk39NCQiM9ZWx1cTID7lUpeR+137WWveQrq7Y++smvu0U9/MD+8cTBxwBfWWVPS0s94bd2XQWXqH2clRO8we44gKk5zcZpngfbtHu5fu3jO+vllN0oFmAcusUmYcfMz0QY3eaz3P7qLpZi4Irr7ZApEhfLa0YkSW0K2ZDhD5d10KnF04XsGKIBB1A/3M5tWu4z8Fffn4ruxRpTeaPS6LhsekH6tJp6t4bRaGJqLScXSKcomcgHnHI/olWEu46YkLfoA49DYbSeYthj1aBA/ARTPhgyNyNZq7lbsC0AjOfyXImw0Mlud3fNk3NWoozqYqMjGsHnOknU3N5xpkL12vzcTtuh6CoCIyiESpbQmqFXUcWtxZ3igzv0Q6NlcNQxNEk1GoFhqHrzoT4VAT5LyHDk2p1Tg22xeGCmkHt/Rg0Mua8R7HHDDv42GHKH/ad55F+m5jqrHXN8myYyDVE675jYdBDoojUufdAlAI9VzllFd53URmrAnFPDHpI2cZOzW35/cmZophqoNM5OV52JL4yGrCsuUmtg1zs7Gk9aGtHHGFaYuRXoa8cMah7r31j7Ufg8KAGLps6etJm3Hu6MBX3Qa7pBLWpj4dvttCZOyD7FXvM3m9KH7JvhBXDHMznsFFhinNkj/QdOuTwd5bCOPDqPJ2tJK4whdt1Bzya1wakS8S1IXGddiqNCZdrZjAeNZEWPfSJEmcKJs1O6rmm0IOHKAB+iOOvRQHCA8hrbLEr5Ar/8y4yei4tvEPtilQIuxRmvRoURifmFBiMPtTfkpb6HJShirkomZkN5HTrUjp9nCmiFAHQMnBCt4dmTwoUmDTQbVmDSTFnepXCrgcvGfYGakP6TXeubhrxJwucoAkhgsOTnkwIX84opoSPB3aXR4ImuoMcjds/rehu62ajuwoRNSjkQQQpSyHwV9J0iYIUhNFu0Vwe7NFW10pQ/5vgmjaVzMAtHo6eIlvgna7Qve9OJpIv1mf4q5uRRbm3YJikna1RMH9JN7EuUuvE0EWsld6s7IzwCpqx+VD/PxWLz9wAxTQEwTOJaursWRmG3125v/nQYInpUIbk/c9XWVWWRRRHMj8NDEa78l7/wpvml44b26lv6t8r76LPc6rY0dh66X2mc//pxWw7vHQF7y/ff211beB/sP67MvPbr1ZGzzE12GS92heQaJNWh86vTSxqfLSdDwH5IE9CwcATnepfmuIGaHsgX1wHVuRwv/Ibq20faSIsfxtZfRrxgX3GXg/f3AmISVOasDfvWZQXlM+tXQJd/NSXSVzfrHSXD8nYkSkg0rsYBhT+vgPPDKqTExNrMtXQeNwsRT+9hlK4SPsqFhiDaggo1NcnTxdDCVVoSirCpkHjP1K+23aSHDhL2cK+aaLwF9ZGY2B1L7kOPYVVgK7FEUQlmvUerm8GVq07h1x5Jp+NAqHUT9Nv9kPoypFDTSnMPMVEOycJUU1iim/SkaP1SYQAqVKJlnDEdFzhpRJL9BvxeEAVw2UI2IA7h5I2Qcp2CY55kGcqaSaSmKm/pp13i53u6VIocucDQ29hDM0cZT37FjK1rzINV9TZ81VaKanKf/exsCLOIf+UPR8a7qqVCdsCDoGzWFS1bqtJfGuIjjQXy3vtw26x2xhuQIoxuQ9QLfuURh4zeuhqJLH99W+kwBebpYCcWfK1UrB9dogtVmmh6XCSh+cpE6zWtJOpOSRh8gwOgaIUIoukUZaguq1DxlzFGp9r3lQ2ytWuv+c/eSdpeLOA+tym1FMdEyvQHpNKR6/4s/a452tr6yU7biCs+b1EC0A/z0OcNqnzZvBEv0phbH4HytdF4ZAkJzlUy7Im3/8nbiSm80VgnkCLBX+f7L3bpfrPCkoW8Z28sZX78ydkq70tJvWOstPstM9EBwr2K/yQSUS1glLyNdOZHeV35ejGHMqFw2ioWPZMnOcxxN08ccB209QgomgSJBck99VGR/eLTdDzDO9oj5ELkLy9bFS6zSzPZer2j4i34UL4rxxZh1vS7unKuvDfeHajC9a1/3M9GuVu05omCTP42MC0VcWcIZU2BSn4v5M2vKsY2gNnuhD3uwRTdPkbfSZOoVoY1gygeX45mk9TW2L3TEti12yCdKqKkFbmLNYsO327EQbVdtJKFju4hZORW5vSkzafkncwkrtZS3mUgW7Uqm7m6TpWVJiM2uhXSHan0jf0hhgJ2f0nFb5+i5+dayyK4EnOVO2xjZkpi4SMWiTRzAQcpFXyr5SmHc7vLYarbemb8Pg9MxSzVLZbE+7KrutJxW89b+P4IzLRtA7ZJfWaFY9ylewtLc93XdjeKPnsuqIi/DJJ33WZ1re+zvQXvuEONxgiu6N9szv9AvVGJr3aMsFjvIvP9gVwKGv+vN0cbjf4nfpTJhmyC7QQVVcHYANqS2OkQryk0bOHiaEwZy+w6iXuO8/3rOfx0MKrH88gVFH0dfme4HQBA4jrXdXd9eYYvDiIObwpHoFEgnuuCFx9rO+G+aHXh+OqN8WV3nLe1su78vwWh3K2cIG3u24oJY4ZR6z7GrcQj3QVjDHl7ID6B1dfUfZjqPhegdx0a30PNNQ05CXG82LyUaZIE5M3wcx86nb/JUliWSAjvLgjzmoeL8fGeEPAaG0NjWfWPs70wU+LGitzCBSmGe4oHgiYIx9ZmuRKLPssixmD225k6Pi8+HgTeY0GOMtcwvcaKRtqeuY7SLvR2vmwDq//h7iwNWscZ0EnJd2HbfeNN0zv7v1bjT5wlr377vOV0ysq9rhrGoPS2qsAvZa65jM6HAl4Jpi4Dp7FT6Qd4A2xLqdA2quSdM1ZDUqOXvEMIWphzSpr3V45QiImiiHmdauld8gJtjhKHorprvhI57T+xtR6PyvRY4nxw2wWRIjzzzZIJGLp+Xk/PVpViIoLf0TQ6e8KLQ6MozMIfJ2qy06KHfOh5REwWc9h2E6aUiDq6QvdWvk2ovDMo1YC8mwyuORQQB63K6CDwmWXokEugtqAVOtEG2qKYMxC1v3mkOt+vrGnlsot5uukWauHgFDVwKwW1rSXSHmatHFha2VdcXwRKkWKWCZaIhXcmL5q0B1/qSigJfrwkpteZyypHiH4Y+k6dfZBJGSI5m09LmdNeI/CmwuY23YzHtfNxCMEdWAPqCoiQ4YS/4sS6aYX4XMgnB7M4qoHGnDETpHpSVmTbx//9OVhVK1nNard7kWVLKaWac8Hxks26SfJZ2YMuRFXluocfvHtmX8dN2OscyzbQ9Xp7s8Ozi3q7nQKrXTl3+85eG8PXL8phNXs+uSY56UY+QH83IeTuatMUlBheDTXq79zVyZRxhbJGYJBADo6bRaF2feDNFh6XnZBcUFYjfevuMkna14C8zZiMlpwO9sJE1l1FF2RFWGQofLKBWX01cl9kylqcGwfndJN5SVQlOr9OPWMeESNnwj94bgJgUZePGkv8qhv2Z5ziQvJ9qyUidqOtDQ3adKFse9DulHRTXjQB431e9crGkwF0txqoeuO5/vRIMEFFY4kiIL7yFGKHn0In7K0pOasssa1JbFSDJ9ipFTNfOad8Pg8kvZ520ONQnqBuPGMEXkD1mUDYzEW+Ng6PgtefQp8zvfWTB+M9YaRGVRn80Rgnwe7dtJiByspLvu8wLhfihJ+o1BI1dD/EAlMYORKcfHgxILu0cymmKWT9ijWW+ffANJNveSoCKqXk/u4DbYrTYxkNtevn/EefnKiTHfHK2ujjrWYGpbassMK+3NT9CQVXdy7+3COkHPclDIR1UoM66PTaI2XTTOIaIfQCn0o8rS2pWqNXy+7EdH9YH38CijY/tjaUUuP8Fg53l6YddEzeHaT/jgtzes1AL8g46LGI5B367tumk66vpQYQRPTFHXKCbPWeb97bjI1nnh/yfKvv6s7BcUbRKUgrhfO6sLZJ19VLOnczYUmJ+MktYWiN19gMSlcknXOvW0EG06k6azR3emtsoqI2HYN71D+rs7eCGRNyhRct79eO2rK1vL/7EdhX5cJfgnfPi3qTtpkXTonzVqizp2y6P2qU1EKJdvNSPuzPNaSKVrDMWuO/aVsUdhv/SxcdqtRqW40hFLukv/DbJBncBhFlROrUNnyH9dYxBuCUajOp9YTn1963WPDm/U5pbxy4Br3VDdrouDqXtac6c6Vrtme7HXF7wf2jx/R9SzNexqeSx6xZyuLqa7UYFnddLNp6CUyj7Fsam8E6zYruPi0o3iuztYOmG7KSwYTo+Ru3EBmENsesa6pykxvrkpTkIwfJMKn6wO2hV+ZoA5/2wGXDAn4NrJer65TskkXd+1IIntZ82JSxgu2xhtcdgTCsG656NrdvpdHG+2PtjZdzw8WbIb25WuyySf47zacirF/soHHybzhZ1zHe5ZrbfXVnk/M1K/hSvtykgMk+RHxnwhlbGByu6icrBBWnJ9FzPH6NeXRdzzdxmrCCEGBQCYNS58cxEO/JOyrfotYi/QiTNCzZE9s9xNnxBagIaJ/IzMr0s0NsSmvJ14xjYtrCRoWVCbemlYEhP2somOu2QyXt9dGRUEFRmrLgmlJm5rBIs9OghY7EfTeIOn6PoCIewiQ1lCOCQBvjPaR1mX1Vm0BSSpQFh4daL+sjDXfLqhcUB8YtSnclBvrpJc4LJNZJ6J3LoZHcQ3WPyRlWTSCn2yA/9ff50lFWuqKuZUWIYhgVukZndX9UBSKyUdZBi2VxqGODu6Iqjr2pJmW6SpJFlZJAyn2zHTa/wZvbnVKUuTpf+u/yF28Uoy4syubZy79/4bWRfeRc30NwchyIKCCOce4dHNvObWVc3xxfawIsxyx6EmVOTHXngMEa9/JaxxE+dcwTbd7eWai9x4+vIjDx6W+V0bK9nSGpGN0PjtqPkmVtGsuszdX6+NUB2c5zbocOv763R1Zi7K2r+AJMqZzJ+Zuz/ZSzdJtuLQtZF6Llanq7ZADffWb9d+iYqvK2boFHmTrPJb0wvAi9TZ9UGGDNWQxxM3iDrSYD4WbH15fkbHgBi+mm6LDMfNNPb7BUoJuONoqLvC/sJfjVVDCQUFBKBlQxhDPp5sPF6n1qtN/+oDINcsUb2kx5bxj4Qz/NZAGvd0ApX3w+RgSWPI2x94JcptrNXYmaTIP0WgIlp8zNJfTJi6HCFa66JRjU+zFGJMn3UVKQcrFz4IAvubhH0C4KR9mLfK2a1ULK3HjssY9JOGJRjiZZV0jaUXAFW1FpCGVlBRMCTIqxmWgWrcWjJDFsgA20bLK6S3g9XL0VPO1S/mE2SGLrNYd9XNVtmcg/PBhR3LhY7vrH75WOAgtnyQbTA4lcAwgOydYsoxyytFZtPZ00IPzyWAOX5dec0Q0Kptpkql9bu/l6UcJHYyC9kItuSyvCpX7VQGB9T9RijHLVVBTs72CbeaW8dFJ1Mi3HQ0J+j8t8A4nSmUeEUSBcHowNzaxCYKdonKgUIbHWh0a3+2666+ZPJwFdsidqSKPX2+ZKgvZpxlDPf4oefHPKk2Q8BXJ6jF1pupaGLJe+V0ga5a/0hQhzZz+uqKC21O5VBDdNhwqElpE+AjK6TucN9ZzRvVYiHLuFKpuO9V7QADis3LlHqFXYxZInod4B9zRz5PHf52zJc28/ruE9fq/4yueZJcuvudSPOLz3iq+b6bjBLz3Ax+Hb5nFgbKinZZ1Glur1YW2UgvnKZ4JLsaRvPPxqsd1mBLt4jqa0X/WHXUjEQISw+PTvpbGQhHesvKpayPZ1iK+OISYDBmDtSTW2LSLeSNTRfTmFcP/N20OfPI/+jcoQs5z7wZA7/4EQfO17U2S+vqUO9e94x3CvtxWzu2YFYDpV4JX+CSt43iq81C5EZPThf/FJO3JZfA+qWtIFB5zHsstM5ZZ1/w3uXsjdF4JpXv63X38ECUURYuIZOF0qNdtJI+h1DEKwWuCNeLFhMfeY7/0XpTRbfW86KqZVWtPPddxUl6zztv+TSx8NkqJGPepa4SexpHbIUo2vEuHrndBviLxfN/G2WQDr5UsnawVg6Dr1m0V471n8Onjx8zlKm7NTGFH1XWjyDtZFw5LI1BdgzehpYNzBaX4DCRYsYZLlbk/F8dt+AqiDOTPyQaBKRGQQkLD3EIOSxIxHCXOdv7wvXftcjFfXf9JpySD/xXSBRJ4YS3i5yJu2wSW6NWdlpXBE2bKrPBTOfxqYn1u+PFLlMPJ0L8vbK1DF87QGWEZlb5NFoLT/MDF0H5q//KmEiF+LPEUPsE8OY9PmtmRyRlv6j/4eszIDc/41CYd7JAcFN3z4ry15LbN1ZVyaZxRF4+UKElWKo8t4JP34typHwpZmuW7I34aTP50DC61drEBnyJsultYqfs4uWaO8nHDP9I5YzYHLZ5Lv3GkrL222NVK7yoFh9P2FD2HHirD6rJb+EC13lSBeJ5BmIJlz2xG/HPj1cT4gb4W2pihq9rG0+EfTnzoNtf7fuGK+ZVTTW+Xdso+RlNgNlP9E/vUAa35OkOYjkSX48uFUn4Q+tVhyiFvXfM99WPThcuCzY79/HVR+YcKtsvX0aJvH6GXooEyhHW//c+eujLbztXV7YMn6BVN9hSnEWsL5OAu96wa7E6sd4ygA6KepCYNGMQyvqcy/3xmkQJHGbDsZ25+Sfa9NCl3rUC5IT97ZzUp/Vvvc2/Xly/b8ImhFGIQ0/ODlxLTd1V1AU38yTh8Ajl2jwg0KUr57Lcq3cPjy+UakbefjX0O9KfncO2dnWMq9Zz2wO5xNPhKqvJx/QjbbWnR3EXDGKWKiLeyvy0KixEcnh3iMPZBg+hn+bhSvHlpSuVwhIxjtBRMkbSUf0qpOHZn6idXV012KM0mC7MU8VEmoag6paB8F6DpmVo0uI+3tZHV0zrHzcwpHfLKTUjWlh8iC2IzOYoZ8JM2W0h+9krc0NIIDVYR5MpgyEde/+oqcFU5hZjtykjAjyMA1DhRYIQLsaGBCTzJ85YB6U1bPVE62PoHejFsGFevN5nJIyI4Rg5RLBt+mHvrQN6IB4HqamKbiYsn2E2Gyp3LqiQ8q5Dj5f/pMbZMtvClZkqnqVa+s10hMIu6qAqqDaTNe3RF0xtc1iq2SesUepJeC/5DjX+vMtDcAH/mOl/mENSQRMv5AbnEUojsDgJNToG6P8QhmTFC3eWc0JZWewt+httSrPH3pvon5XwPwTFHDFg4GSVORpWrwqXS5mKUMUCUTutPLospdnijN75d6+lwLrvfIl9JX4df/QFld68cfqkPcR7lh/5X/ljygr8tE1JymC5TVytnVviF5n41O6iZbjmxjosVcSxDLoMXpsK//wiGu/a8jGStpb7sLrrTP8x5614tDbQr1ghry0NLlkiiy2eY8ESplGiYWJrpwi7lOqKN0tOFmkEOn+Zv8HVwWEIFoP5zorqF8DtXgHgDYrg/8I4j3Gi7sR3r/Wi0TqghKm5MEPRXwCp4NBXDUsV+k8HzTSmiHoDGrPiC9neI4lvdjT43R2ZWioOwk9Mw/UI7BV8uoSITxR0gtJzD9TASm6mn21CSgwVoBapNDJjosMwRQB0w+mt0zpgEHDcLuYg8+V2zSHV/ObPFKVFKafQ4oVJitPNC+68hRKxMjicZ0M0/9yo0NJzk9ozSFahF0q55cjLdDjLyFW+vbvx23Pj3LX9OIMyRq5GLBxGW2A3WOnkZidgP7Qev8NCu/duKTKLOnCzQF/rhtQQtC5Pk/J/BvWzWIXroNoMsnrDl5sCEkwzlPXyIZHgrraqr9iHiogJqp37lVkJ1Z2shruJGF1KAAzDeTAGetNph+2H/qTvc/GLwnv+JTGm1dvP1lgHIVOMy97oc7j7UfHHtlL3MqR6AO7Fi7gLdgGeCRCNAgx2MgEuoUFS2Lr985nY6LD0r3gmeHySZ/opo8GkM7foCZtTI9UeSJ0zbDhyn3EO+xXhEAD0xzE1xYFjX/cc5KtX2nBWajZcThjGaHzO4xPZUY1JUokhvHmT/DKdRCVte3uk4ByWVtaDzoAH98UDHgUnURtSF1ru+2HW7/UTGYgVQHodXk1hNlF7aJpyfMtZtUa5LusvNRe8yI1zkxXiyobxx7Da8VBwzUJf/pqz8pbzN3QXK730w+zN7KOb2g6IspWJpq4GXJ9bZe1N8ezI+q5Jh1HVZeTir8jU81Q1+2AOnzB4f5/yZtffFDYRXfEolox+TN5ZsMEsfQJJO8LD+vcW9FlRbd7kGxZ7kz5HpUJ5NWXzebREFnWeFqgJ0W9hztL/nqDV6DECncqXtC9rf3H0da6n6J+PQaZOk3Msu8PXl26fz9nJD6OI8deRsAYvTPWCXut3FsPHDXpIz8lpEzE0JChN7hTmm6OEfOSmZNdAw07X0MU3rD/kNgMU4CgaYzuHxuG0N/79u3QKANxmYAqom+hF2dr9Et37AbTndwFCd4WyoLa8gc+pNX2ZmiMHNQWMB6Q3Fw7ee4Vlr5a2ALDPpTv4ajKowt/UoD3h73sIpRAQ/9m3rLhz1dIyHs/TEbMS+XfwqSx1/3jBbgvo3EItBykN4eXU4Q1XmjRB9MIrCCTA6gMLeccFGurKYYYUKhcn6Ls5+OcmDLOSE4rfhwszJdO8M5zrahYbSLG1Vbc3as5GIycQIhey0dPMSfWYOEIPpEpA/7ljD5UURlSUukbnOgKnbN2084TGWtqfiElINyolpxAdIDTrLI9/6h/NZbK1XNgxq63PljVPkAXSkW/D4hRt+e5RQusSsQexHKsoHonXbv+d2bmd8ssdWIqaAHU1EPJXkJV9YePEnUO0xYRcF9UmlOFO3THAnnLIfmTWpcCeMPWoNW8r2ZBc4i8OAh74tcB7nu7++GwmkSecIGRVBFapb4XYrdyjHdOptKna8uAZNvDn3ewCdWN9G5XVentlKeFD64EoA+a0LEqotnylRcAk/4y0T9Yna0UVlizNdwWtrrR7xJWx+AlBfMWW3JKLNPLkxw+Iy5SLiiZeAUW/JH9Yu80APLcJzktkp3vyYEezpgJ9gcJ1ohimTr5OLNAiv8XcaumV3L2Dg042v5nbJIPcKdp06xTO1Wrd6y/xeTx7IDbRIXhnS7rBozC8dhfLl55HBGIpFAaxpRKqlry7bj449GTtfBxcEOUC193DWoOtHuO43HIOXCribnqX9P7+h9QrJ7pYEQbQtLaL7CdTqFVq7NIHDGD9lkjarvFrusV2tuL35/I3Oig1GIXAUo8UwJtz1bame5eW85hpX0l85JLrU0MxkGIC8rwWJpW3pPPqRIo9N2ieKA864NNNgF9Ot46tkJasFSArTHbDrBHkICjex9ZswZ20VRS5TG+diPLmlfICUAq3i2f2OalH+2HQgNOY6Qa6JM9/c30r+WSX+a387GjnccUt76UvowpefSWRceoJBf7JU8Dt9zP8D1ryjrZtbpVQr9oW60YGiw+I04aPeVMPkteHo4qfMR/NzQ/VHg2xZv12q3aNOD8n3RhLp+7J5gWlfaQ+LjXUCf0LgX7gBQorC5Gpx53ITWD/w1zKP26UvytByJeQ9ULDwiUoIDULS3dLOTCtiU8zAMjiurobHZ4pbP5waFKtyL3aXjLaoYx9a6z20wm6hq6zkHyJQ9hNFZakqe+1KEAi6MpFDvCPYldZDhoDC10+a+js9LCUN4TclWOVZRz25haeXUrSQpi7mVFm6X7NcndxeFq5yH+sWosz14xQ7KlX9Ie0041nAtXDncrMQsgydu334UYQiPIgmCmJQd/IYGBHZ8bC88aSrV2nGLfIj/m9I/L/iFaHzts/37Vzk+J46/frj25zfucLi4XoDkK2UeMh4vCtHcWM2pfjRyNjy0Ur/Bz/eUf1aflvPUm6T7j2N42kyrdYpCW1Ka0A3RgqSMgFsNEfHB6Wv0hdNaI0rtGXChL97HQpGiUU1tucpkvn7RXJI9hpr7dknjtcNIaW6d1rb482zftH2rToUUJgrVu6OYkCutHA0Tu/YTKGmbaE9cy4Fa+EjI0od2n6aarXLzgh4t7H1rDYVqWys46q2c3/fwfs0pXlIaegB2JXTdBpwYnS/P912HKBY4x92wkNVGWXiIPGimcB76MU+n9IgGnYCkJ/TNptQ5XWfJVB4oK0/ohf7IYL3uj3gpMds6c17WweSY6GbYRSPJFZXOBhjw9SEoccLXX87y4T2ZSLd4XLPoMtCXdoB1QwcnStvX2ckVvVn5kbdJIe6FxW6TR3DcWjrOYZTZnoRHohusM80DzVXKq6PFe0yE5IxbBWrUxRJ740fA7kXnRAOhbIT4rQLUQl6hHk5SvY8OYmnUBSq7fcRgrq9PlbQyKGr8XESWIOs8N6KNcVUkWqQxPqWXprNhiXrDUU2Ga5GUTT7l8VzLvOxdaunQoN8/VE2rgtX2Gp2UTjQaUhNV6EjKClsW1lAWKiyS1te1Vszn5qmmYbBSizAnPq0EvR7wbuncdPfESoqByyWOPcW9aU2QRv0bXVCnTRb2AXFvOLE7DRpN52RQBMICFhxr586VatinZDef5mmUepoYtdGlPyaPhmASJU5F+czwwXGQX65aVSeNlo8Xy7a05YqJQzG6Ntv7DqMa5KwSZZO+u3QC5Hxi1NsRQfi98wZFGur5utowAkyMQcLpNXcuWtsk1FYt21i0oyEZJIhZpbNLqxmaGVEoEkFwLQI6OVAdePPzpwJ6jr39Hk+vPL0td5mntyN4qS3HtZ2wcsmxCSUvgS1kbWA2RpuWm26krHwUU7czFCXR2EcbkClrOnfJs9UyfAjFXdsdJ84NvqO1XL10CGUQBDYalB5za4DBaFvSpQHap2m2WGPHAhHqAwXj2oEyvycEyhcr34PTFSQjXhYMyY1wWIoJmJvRI39EdE7Ks8Msz9IhMUCrO7xIKF/E28QYwguGK847pWwmLmPc3O2+Ji4UXH+YH9ioOaBfUYJ6/JLqqYSICfXXyTDBf0Zdt2q+uG1xRWoDGpBV31m2yHQQWDMu+XcxW1vEbMTlguh42ig5QqOe8QCFju6WA8bpOLTDRa/s0T11tmW5bEitVlx9AqrZU/mgd20WX0pl9icrmxp3LSuWBrVJcIvdIq9KdvBXr429mYr8r8o6doSGIGRDzNGMQ2tk6OBf02/jGoS6I8Nt+qaIuEtyhmFQvy2RpeunU2uFPQ1VZokgFFqc0dDSpx5FB7u61YY3o1F2VqbnCELC5V19KdiIckk3D5qE6Q1Ciz/4MsmPYYmk3Kan2MQkWeHNCCGqGgzvuCwzmST74pbx5Oitg8kv2hDoc4nK9kZjWCvFRNSj/K2/Db0q8G1nVnvKrX+ffct8lYpAcC38UBYBzEGa6oxUy2F5m+mQfxOP9ZgvaSKcwlCdi5AZuV4LOKiJwj5E/W9lVbGb7PUd8fa93/DWcA1jJZK3vAWmHLc1SlQjTjoX/MA+x/eY1Sd/v2Q/owzM7gWzXPlrJHWPonwKiFtsKor3SiZtCIyvEfe69OHSSLoLuy+i6FMla4vSIIYh9gYcdyyMsDSKH613qpxd2q4Om3x+25Fkl3GlYkzVSGEoPGQUf/+wXxtIh4kNVpEQG6KJkuoVRtKk+Ver4UzBBJeXOm++fRH/3S+NxzM0I3pgMGif7QI2GRapWouXArveSXE8rXQa5Si5RTDJD2WCiCLSz0Q2Xu+DSc0nNKgDxaRLEKRFXAUpRCyTnRfklVS8il3H/XOW7ixa7qjoDyU6zSajpHazQls+eBxDmuvz4ykNIs0LxJjUEuURL9c3ZfNskSLCnC/+HYtfem0I73GtLOC7bk97oW+WA317Vx30dtbZE+45B9yB7XOvgCavKe1Z823iOskFjzhvJMQ6dSUQ1axIM7z751Zxrbd9uH/tNvsyw4TtuOGuZlKkjGAA7+kaJX/eHt7KCtyC0cK5UWWCHQVEiPJmde5sqQVlhCcDpKPS3nlLwqNwXzegScQi4PUfaLpEJB5Jrugfw9ebm21HNBVczjsyAklt44e8o3J3VMisw5sofV16KqptlaLGehAWIajfFEfDk5hrs4PLOIC/KrwCaNWvswdIA4qpXDiBRcDtwt4q5ZqRvOdJo9HvksDbTAUER9/zlErfysz2gauwTRECNYzM6SPWi8Nih7ggd12aSbFbiBKLgmmEgnKXmg4bWiZpOlWLbSVQj5++a+UqCrcxrWCOyhEfY9wVvIecELUEOhEmV807j0yLtEkJkXage5yEHNduuSbdm0x3xVvdI85thvWzBOKhr4cfyCA4osj9ZW5kIPhP8rjZrFLOLd+gnjtK6PrDqv3SAZJYpfolS/cxtdjRljxLvmzGFjUDXdAmR7PuGeZnyQR8k8iX6AOkO4XlE+s5Vm0AvEhZxngvqeA3pkWG2GQO+PhGSFEXrL6SXxyIRkAqZZxvawWT6sVZexTDBv/5liOD/KKDB6JAWv/+/3Y2v6mjmZArB7qjkgYvMrJ2MB8gsMF85M3s4Pybt1J+/kmqlsYOBkX+uAw2cwiVHAI6a73mhz9qU4ntF2vbU2dex76OBMQzyPrfa3gZJNaC9LoVm1sl6WaHi6g+AIA+669E0CO6M3SON3R1BR1k99WIsg6EuvkeYuPGYVNogAOgSMK+jaq18vZtS9j8Oxr3hc3lYF8D/xBlenYk7SmWLpwt1YlbslqzKKzGvEsNYO84f5Y9AAxytF+e6fUglVnLgVcfgSIYgr1iHro/AgYyAqp7KhkmWN4Hm43t91atb/4JNsFQ7SZIUEWZqp6XZ3mhYPh05zy8Si7V8nIkzcVAYKF1qlGg1TDrPLCOc2uDElBzZ9WbHL1DHkRr0+xeKvAZzZJuG7cS1upiIyJIBhHO2EWHczhhQMIKjibUH+8CuArDocxAM4jfoCeZqJbEYbFXNqiUVeDaUDJBeX0LqtI30a+0BXfO2yN7tO7qD50K8FzaUO3C3+82WPnkOiElawPru8oq1xq1FQ3bK8rJGe0X4Q58QpvoZPLeOjgimtaNNqBPtJqp/rN/hYWUCq/OiwoulvBw6AmHyvOE9RinlGqRvc7LsBVk9G8X8VS+nFUWFHP7IQ4lZs8CmHZVKScAITmBcjVQ+1b8Ba5u3cAc3u/jL6kx0NC4FSlll1WCqzMkTR12ogHJ7z+1r95mq7e8NQ/DJdOuWIvGgD77tKn9LZqojNcXxaznOS/LxmVx8hc9UX7HQ0cG+Nvav6R3r3oLr0Gl4j61ED2kpJZZvo21yH/99Nmq37xjkOwGYDRnOZ6mRXhZEHNd6Qgw3FXcJdfQmiHUNph5jyznGUuyf7HplLZkk11rACm8HPITP2Dics74Ny2SOnsHJu/MdPf61NwQw9SAZ0gwgKG78OJrPCAxRxQ+1gUl0zGbKF6CK3QtnmYYV2YzRBHwqzWrkl1aqerNdMXlFuX889PZnRcCpdH0iKc9PSlsoJ3B1ujxXlpGhUY2U4pVYAa+tg78ahOVvTuQm+kqkkkUjeWDW0zr0dBIcYteHIe/joJnevQZwjxKMdVfW75/XMmk2KCfrTU63CFPZ4hTZDyzQqcWNhi4vGVt09J6C69IGDiPhapKihDf6O+//22pZAR0S1jt9Ba25pXhrSfqdGPwCcDxPEArDzwlei97eG+74oH1frgjQyyGF6mW1h6+nXZJvdpVR98c+TxzXr3/wU57yrRXIl5E7KciJHp1YgET4rcfAzRyLxSqR6fVECuAUeg0fgJKqTQLX9jUjgUD7BJrSyC8rGiCQ5oP6rLwHCQRBb+kX7rlCjLSnBCtU2v+KIkO6U8nW6jJWPeED4JLJSumI+ho2YTMvuwJx4Jkf63TGS0NYO1Zob2F55L5uhCTC17ejE/BDSwnWz3GqpAjtdkJxpSzfwGxJZd1j1crjJE6qMnlP1FU3SOVsQbTDldIqtjV2ElJTwZ5ymtmJEWbyl10PaQEwmbJ0bxxK3NUnR5g/7oUr2/Y7/3UCl60rMUorWgnKmKxTT75QEMRhxHOOmjQtjHf7OivempH6ywT3SommbYUs6CMNBLnpa0NYjkBb/1AhhlYWQyE5Ob0Qe3QJX84IqpTJSmk6mrO9Ze8Vq9jWupf+17Mx2haidqjpIaess8gQcnjZe05JdX2Gb9eOXXV1sxDmJiYgSu6B2dT1H6X4IcUepoKPE7fqZH/bmWmRzkAJqcgRlA/2hhkofH50buX+vl/FqdBicqDL86+qFmTuATiPxDMts2Vmk6kYG2oADEAwq9TprEpWs1sPL9mneS+5VziG5hL2b4w1Hboah4rufaiTiLwCuf+mDT/LK5LLTwMMZC9mkdyPeYh9HPdn1CpX/gDePxM3wHXiEjy7nIAOqJmC7jF36iGigqQH03MO/Fqv2Pnx3ltsDIRukh65zAYLyjt/uEBAOgfBPZx2tVzjWLWVKGPs/ldVOFOsMLfVHXsR43v1y4zKfmNg95+M0Fzshp+/i2EmQf25+gEZeZHtLyDrzkzuLIBrGTd5bIPZeBpe0xT5XrWqzP0d2TmZuoQl71nfKh+sXEzLqTCbK38Aw/T0qQKobB/B3r/G0v55lRiTjgRY7wZ5+XzzhniX0+MMMvPYL25O9w/rYjWlRxc1zWAthFN4vySb42tlCK5878lPnkQqv1GhV8A9AgDQ82HzWMSjQlTlyWykbUC/sR+2ozJWn3oTaURvZTr3tre9k/aBNZpkYbByE6u5xywRyEU/yh4pjug6AWw08LJGimtImMk/PsUXsD9ZL062RLzz0H9Au2NrtdWatPOYuA3pxIYzmGUdnCYpLF4CQ+HAViSN3/LPjuaoNU2GPZtg9nVZ4RBymP+1HvNt5/7+jK5AABtob88+cw8cMaKjBqmxmiju3mvN2ai4xp28sRCpFSkS5QxMUaMk/IDWvF8rvbnWd5U5VI/tjOW4yET6Vw+hBEsyE1SXiI3lcP6VvFB+nvJDwUzzKR+XTOfjUw0ipBZpxvTxJFdO7DjjnZmqwAFVKmc94ccTyMC0sp9SiUqkS7itUMfzCoyx99fd0kVOfpOEhaJjkXfMFUJ3CFpt1IuWvy/uXAMBNkzXn5yR3KBsfsnek57hCbsvGI3N2cC0n3WIarX8H4J79WIxG04BN1Uf42iZHb2otGKaI+L+f9BkiPk1pkwN1FGqa57HX02TMwJQx9D07jtu+7sbmfTHcbfvfHannkP//IBvDKI90tuTGggIEisq/4yVzrPcINU4PK2/fpokRqU8BLwFhLwXRNSgpRg8xkX2I+5n1xE9adSlUOX/kS+ZI6CJPYiiKtktKwt/4nR9qhgDCSGHs7CYDf/e9v8SCVQfNYwULdOAvs48ZeaD2PwGRSefwWHJiP6kjPZUt7a/Z2BBcuAvayW3yGO/dv9EhnIeBozrxmatRdl/+FE/4QsHjI6DTtkmvF6sqeFSLDUlsSbT0+BwGaZjcqI/omClV6MELyLrO7rmpLqOHf9zy8BVXOoC0FAqEzXcjde4Ir+Sbo4xrcGOfxJk1/4yTsaCHiFPGDdG0Q9/qcr4cvw2RuGzhb7dZhs4Mh3/PDolVaIb42lT1NVFe4CR/+6joYrTWeGS+eLolvPtip2qu6OKHjq76GmaPaDrunV8Siem9HmmGSPPVVzW2wLGaDZqr8UYvu6HqCgzq6kUAo0Tvn9ulJ6KLNYLpDGUHYTpX3HFrpG5zYASq/tXQA8DwCehFpcfkqKeWgEnrf/gZp57ZeA83wY9zSaYDcpvv6MJV8OC0rc/+S+0SqyhLx+vIJN6H5+EQrMlj0fSnV/g4DHRCEHi0My992qNN3km/cFyDgwF/vmP9rSGIGThWYkwwwaykMcxs1qV07A75rnFOScygjZIdIsPvra0wX3Jhp666feuAKVhQ/L7Y08oqRwCoqzHtUaDYBAaA2BuAU38eW4ngDgAcRoEGKST6JsLs2fc+RpzUDZpQl8whk+4XosXaHwF1B6PSBIhytACiVD1OgTUK8E60gObhSFuraqz/koCmYuGkcUARFduZGVkkrm+Z74mdbdpTZ68hLsmSQub6WIirR4nS3m0r+homDDRDrBMpn959MY729i1WCJHQWF8c19L6MdJsCsYtQY44YG5gBAVKBRPPXT6u7xmvbBZ/u8Eo8Lmv6Zx9z+XqcBqd3BZdGp1kTrd2rtimZ8yk4VLC/PNfmfOCDATMvbLvnEjdha/RGEcFPQGRLjLM9gFaP9z4/2YrTpPHfHxAjMoREeGGnI4bdScJOurLrS0Ahn5MUBD0T6qzHjWwkl64UGn92vUPcDZ523EidyUDErz3co40VN8ob4TzS011u6r8TywSTn7q01PmzpburMPv7PX5w6oh2kI2g3toLHuZFVHjRbSq35o3HTYi3rfJE8KMMujX/vaMQLqx2lB/a46Dq1W4hIBQYHPVoM0uVVeLqMqs6UjIgrWa5Eq8faYpv1HeJAnjpLrkQ7Xo0o12Q6kCQozrcvGKlJhQ4ptFaTwxzisKXTy7ovAszCI1rCy2xsEYT4Fy+xPPl3UzpabziR3wVCa7do8/pZnK0M5x/leIn7SdkWlVJjj7Fl7hIWdlnWOttv7DenuJnq852ZSKuk0OSvLQ4moe03DbOxSVgJdF77Qgt/XDGjxLO2l15uv+TR1BUkaXuTknD0H9tP7ChjKJX6ClSw6LYWs2bgssvLnuX8lRS/tlUCUXcuhN+rS1DMiGWx8IqZQUWMJ/mQEezDzcixZwS/fiMmFfhxMikmIp7jlYnlbHqvxZeXeDYHxPyjw8gpjhlTMjfY2Ysdfx3ESqogC04kK31l6VGj9cUEXuD9fueBiD/bnguASD28mkadpSYynVeHB+zesgH8s2h6N4gBhE41wXXth/4cPyPcmu+1jwqonP00WOeTgHhitWIMYhFan4tusnnXe1UxKPahQ11JUrCY8iJDfuz0NbhT2J2HbFpGKa19Ws/OnY+ORhLI7+/Tk0/1G5Nv96X8AtsiRVlj0xUQgdKTK64yJg5L66iJtxaPxeYkg5Ie9B+eXAU9lJ5lHziKHvRvRtQNx6HEdtcwQcfoP6SwQJ8buwpKCHrTWLX+OBkQ50jgFNfbTMSKhLlC2tEuGBiHfHj/HOCf7uGSg14H3yUcUomVCYLkOu0kK+07ihLSM0XyYQq+V2qW6L8nNdC6m4iJZ0Xbd53LJoalApxYae1yJplechBp1FeChK2hwmypD/q9M6bQgKGuyq9tX9cA2inlWut+RgPKElghC0lEFaNptO+4slNSFtu3UMkUS0Aqjh9vif+9zEtlsw49P4KtG7M2TMZWHsGfjwj+U6onW7CLYAGAp5Y+N3fNvkNU70d5VlhZCgAoE6utn4seUcd9UnhVH7CvCv66B3xJJQmbi/skqEBXjwywy7cEXr3x/uYK3WI6u82hLkuwfTr347xSOOLlJkA1fO/hw49p7BP6rAezL024/NWZjjnPT4lwO/nPmyzPjqjmdUFsY2tQrNUWv0JrVKznt8S+2fOXdxmoEjhfTRB03XCvlNBT+a5Tt++/V7Gp2yAAp7Ga+QB0uw8SGTollpYxbk3fwwLZAVIHpuvoAQfbhciiuADTi6vQxBppmu04VG6fsQFfqqVPuz+cdPN4wgZSxD9czuv6/+0vWTZoF2bOyOqmVEENUZUskiBI+HqxwOKK31TEMAf6JNHwH+dRil2P4q9X8BB3+Pugt1kOfPSPSaiku6XGneBkIl5DYjdnHVg4NrIRid+m5a9J7eaIJqFTe3LpfHjXWu6heli6BwRLqoZC6QN8cJledjlBNVC1/EuAt1369CkZcK+GyLpw/68v0tmrXkbgVDDmKaskmKZFU6siIbEveySlVaDVxfBq+Yeq00pzIY68Lrr74R2OgWH89F++IgWo1fALN0iavWUPnZRsrvmvIBw2x8EBSyMIS/pu2+YFx/NebgE/V73r7WwfbcFGjVQan9DH/81EOQ7XJQRvkyvgO+Yjd5SfEnOTL8xIeQAeNQT/6yyUa73XzUVnJAMpQIr+C3dektLKtMyn+/nBXsDbKmdAcztYvAzhqLNWFJLXNrLNfNs+J/2nVUFJ5bcCDJlwW9vMbq5qa5jK5+7NZOn5wu3q6V51AAeZqxWrnrstiUJ0qBeXmy59xrQRdJAR9P0qGZRlxPt5PJVpJFGTmjdMff9BXPcHWLKE60hOfIUXIWD7GAPXSertBJUu+A3gYEcfwP1I59UIbP2vADGml4mnTjbtwCc6CUsykl6PAA6JJLT9tc0A1y1F3zbPEQbkszcw0XimIVegb/N5UV+gwf/CCkiES4LdWu2WId1xxoz1JdXqhakaRXaViFeD3vXID4cV/R6ns+ijrysmGeHPWzLLZnHlLxyo7Tz04VBmLWcTtYLWlZHr4Li0z5pC7K/NPNrnGwRWpSOqRBuN2YlfFt1sd+Y3rFHGJAqwtYbNIBqsIdwyO6kM2vc+EU5cfFE3V76ZpFHBb+144NvplRyADfvYTbcrVg8Ks2wi7oDPQI3MXX1rOg8XTDizRdhhm/0efGsg1sWB3lbI2677GXQEOnxLFWGkqrOkvf6GogmEwWHhK0H0Sw5zpp7z6Lq3pA2ZVfP3qnMK63fszlK3q41e9f+ommf/aX53HDp13BIro+JvwSfHo+B+lu2xGV8ae5PsbyMRu+GwkYpT5hXWvRH6pJIiiQc0ApZr6sZd1DGv25rzk9iVSdlDSuBK4pMxiPd4xOlSixpc2iBbFu+QU1Ie9qs2ouPCoLeuHjFHcvGeOO5nkBc/4tjgn57WqZbmxHqJGSQyYEgwE1cuauepGpltBBDZKex3YYWx2izgocjDtxN1Oip+KtHmlng9DpEGl1Mud/LMWEneZESMoAnHs1m8Cin6aaybVdbIVUJDd72+OdGOE9nz8PwhX8p4z/ZzccpDntsc4u00ZT2zxXqpymxbY0T9UJawMufhyDk0zu2GduNiof1UfFxX/Z1ui8u1XCRF0k2lW+pKmyD+3sDS7mgd/HV+EWSfRtQ93atLyyWfPhjkIddigg5Z14AzNDkp7/b7sO/fpXup1C6gu0lfeS6gdbt1OBkuHL1B9CLlNVEGS2gqEcSn6a+fclubdmySMmnUFIJ/KBVU/tnNRjk5L0Ihzm+iu/be73vEPzrNrTtcEij0dOJNQGehFvd/wQHD2qk9bvycLDYvvXDok10rcgOG9ly/w9av/dwrSh5kNtstaJPu08Prh4kqYalZweDm7JjBmOkO3t9/jpQqC1Q+2l55NEpry3csA/7ukzqx58C614eSZjWBkSGpHScyp4Jgg8u60FxD9kZ8ESpsHu+1ev5Mv/ybY50Mozv8Xqv91sLFvE39zS+tULYhdTVZFb4Pt4uQgwNlRFgCLmfDkLQKRLtUiF0CQ/5rDbiwHyMyDO+InLTDUFxoRXb86YVGq882JmoFdFrJaVRlOzlD3Zb+vZcfP9LdCnC5YEsJ5ImKgSPJUMKzV4KQuCYIf4Xg0LIdCNl9dGl88D1e1wJqWWTRO+99tKiL6bT1xZv/Rl3UpgoHEoVIl0frCTxrgUUH8mKP6ey7ySOYNV/HMgUEZEJWDftnN2E77FdLeu2Vg4969ekxavhRjtJqU+meWF/GEbkEnkx49QZk34HyD+oiYEQAsc0AvMQOxB9T/5HsoW1Rgo06+pbWp9WrFYktqv6E2kxLZUCA1QBQS+JsrYM2tq71GzBuSwBMu/d4dmAagRg+bJGOpFlRnikgUQg1oTfY3QfPhMTHtrXDd9yIv6nDtNh/ngxvUy+a/ELQzp3vGdhaWI81z4Fq+ycrSlN+EYsCRs1m5mJiUiJLy2hCBXVGt9bCJfcDSevaNZXKMVzhu9+pmlL39kqVZxg99FOBCVx16nFyyO0IZY7iZ7t7ndmtcvWLQFkeK1ugTrdaFvy5Q06eHhvIMcLcmIkh8P/3av+kcTp6k5ownK48qkges7WkYKaajafFhi7nBU2SwWWMKk1xrIguWigJQ9UskU++R7UAr377tvitBrLzhQIObsRTFKOzHiFO874iOKgPlSU9OmDamLLbfmzUuY05dX971QanA2n+FWff220u+po1LT5c9PDt1IuGvV4oy943ikf2Sv8qYfdfz3auYHJ/QHH/PdNDldXN7YeC2MdPUVldHmcdc+aFcQY19/FEcGgKlfCf9fJ/++prFMk21pcrAuytjZGBslcuwZHTMkMXmaZwF5dG1cP9eQOtFmaNzHKR4XHwyVKc4OZ++mh6kGBVVnrql/8hyACLZz1RBmQnBxrTCrQZZs8ItijAFfdrLYd3y0Z+Mjp8SYCza8yZPAiCqRry6IzNPkWfxKpdSikG/QmWiDEg+Vr1eLHyPlXg7eZhHfaOSw7dPvYH3zotQGlCjnmdIgf8+rVq79Vr3wNoFOxZ9vJLUrXyk104QMqYIxTm/8Sp8sYlCOm2SW5cipCfz7oNJWL3lZ3pKni1KgTjo0GxIbev4iF3JDrQZ+ASamnS2VrhVwGjsrw85+vRft4ud1KHKi2b9xbF4iMXi3blIkvUTghRy98Un7TZMovMLPq+PFnkff4fCEu8hBTRdZLNSwCi7k19lTxl3i03NcLjBB3bRtIna8KVojafCJhS/jOZm9fa5lXIaqx3QU3+oBgD993kBGGQKbwHaw8riaP0z91YKXBhKpJmglb4CX2Am0LCyraSd+36FoKC26NFUjgfuxDfFgvvYfxun0oqf53NmHhn+x+7B7dbtqPVjt4JU7ZyD+GDPv/tZN6w+7Tq60XxOBp27Tf8w1WddYHtb81PC68KJ+Me1+2fR4cf98/enQL6v3c/7NnN3ds5b0xH7mFUnLF3/NSD+7i/9p4uXzqquSF2btfwgn0PoA1RdWUJMpo4v98PG4OC6lS++S6DeQjPvrKfKLpTuEAUHffjQZ2tDGafo6TnIO2Z2UOJvchK1HlwtBJhsuv0ZEOnmv7XT1JTpbNyL/pW0Hh6Wsoyn4PVviA0CM+Neqad/mN/AQFgERBsdIByVK/Ur5852UygNQmAbbJ3lYQyvXAbu4J9sJc6sDYWsHRpEfqm7ECiIRQSLufeOl21Kqo31DSSwyQzm/kLn5qI5pajGonOqDZSkO4IefT+IDcKZ1xduf1bZVqCuQCEwr6lMHbGRSsYfU4uFqpkREnlqWthGVeihdUTahMyp044jTibmDIxbmi56+bmx64D6FMQ1EThSZ/Qo6Y0SFQWtkEI48thyNcBETTiSyMJiaHEq2zE7tGCN7WQgAtlo6hIn6MQ8zG1HHOQIQpvLzp7X4+cMChBT/7oXlKHS3CrR/O3LujjLgwPO+CGxhYi23m0bX4+Ulw2gJV2Av5k1izD6PQWa1FknL0iV2GIA0R2+Znj5ntJwiBiu7s7jYUwirh9gZJZxOvj4RdznlVX+7XnapQvOyvOPuwekxksQHQABa/ZAsv1QU8QWKvb/qjZijuRbuJhpye0WpU8tUJopkC2zW1IJsFM0hHVw2AKJh7Jcz7z4qpJcQO/6E+azJJ2wF805lazrakasPSOwEGVJfyt65OBy91BDkj+q1OWoqgTt/HcWQaCgu0Yz1VisaKe22DMkIYNYqTWbgQ/l/4XvXgry+j2zkP0MQ5+Nvoz9+YnFkfHIbME8jnKpKgpzCs2BkkMVVrjpNJgTxR+HmAmjQT45O2yMPKgILZQEpojCbXA7VJK7wSRLpWUEB0ofSgRW6dAaxIZzvlQk6dU56Iz/mgSP8blEcMRvytagfLeBhBhl5R1WJ8aiqNk7UD0uYwp5TpY7SRP1noAkTFT/ImpxMYZuVn8W1uIq6T7WJh1/UxGPdtchxCT0+0CyM1gpya9bm8BGR6Q7p8V3htTJj3bCi+je0g3u2HjrcgIIzqnO1bIEusw12gjyuvaoVtzpAnBLfL8/uOGxmvDwemXNbH1XY/qn+If/89QxXwuoWKZpEvbmW8vt8p7HVOYjuoCLLjx3lvovBwHXmXjaX/PY+cyqIN3ClpZGgt6215Fk0G+2JojSy8CiaRVVwoKix+m9aVBwo27WqKBWakS9T+yGX1iA/oM7IM+oInyDVqaKlghdm0VSiJxp05dgqn34RcLZfDaJ4LZd/ue1VoHs0L3sPGxQ7RZlw1YyiDkfp4yG3l7XUzcNN5SIjWmN55yR3iDnCT94GHUkUKlUKp6yt9SQeZ5ZP7IeyyR8vzj4gTNcQEI1uSSdV4DMa3YhYBArgeZmd9lDcfUEHvs+a8vTQcq7ywub37xoTZ8q5DwM9JGPEWA8mINkKURHq5pNv3BVNO0UDLipnLFKsgU9/roQtSqVDibwAAye8+t0/inZOGo21wL/Lh+9+BolGFDJoU1czmzs/JYpq1aBp9PEXJGUjghPutOZz4+UnxQX0sKDb7EiKu4kLjQWiMwPK/Wxyl0VFsoNSp6vXd2tG28GIBL6RRI/yHbZu16PT2lbFxrmH7gbL//lQFW/TegV57tJLLpU8HC4g17k2j548k1UvEDt3dShJIRMU7UYK23VRz3BbPb89rbBBwOAvvZ37sx8WhmZoCYFHAvPknaPGFhnkyYjcqtOQA81XUip5GKWE19nGHSxOx2o3u0eZZP4NhnK8B1J8AihiJqSsedU6W+3o2OMpt3kkwn15YFib0eHtewMzH5J7cCMgcBdTIBrG/EOHeNbZRSvbn+gfhwWtWhUFGfz7HV0rkkc+Vd2h5pnT0Yi+XzxO3dWzlbO7LSaJZ4e6CQ8k9cby98Osxua4mNfArcfDMgnWEB2nKAuEWIgNX2gdzsXShv2Nqfe/G6Aa8N7fIm5crMvvcUX1PUqdptFopy8oH9KBpcMrSxVek3nRgee13nghgIStiHN1W0Ge5pccjcAisfRoeqhz8+9H12lThUL64KE7w89OfXgprwsL0VTCMgRke+7QSKF9xVmOJ0iTGPxgE/EwdPvAOsCVXiRD2o7LzrYcbFW8kg9a/QvFP3/6wACZNQz+6rNyuHiUIZCi7oinuGKBQ6S+545YLS+cBA1Bq1JrEFptCGFYEKTpIOijHtCzDb3l7AIJ5OZJ3wI0MKpLbukA76puytLj5Ekey1pYLHarVvMXRL+k7KdvxJyv+LljQezaRO4X1jolukpQorFywDVK/37e8O/WGaNdaz1f289kiUVC3kdEMopIStBT2VADgrPZHwiyFusw3SUVvNiAAN+e+UqKjkYHKj8+WrpW8meG3bbarkw/43wvmiOtHLpLlHFyIdnQtB+vBR5N6o+WLchBdwi4FHwenOFkqP87SD2cXxI+T8ttH0ZKCJVIAOYA08olVFJzLK95t6L6VjFNUSYjZqrUgCK1SWXOmcv7OSOaI3IC6pi/vy04qT3OUFCpQ3P4eYOcRBlqjUfqRYOIUJALeXgDYGPd6yMKWk6C+UKfACQUqDWHwhWY0CsP1idh7S4bZxSfRezyt/anr7SdX1zS+dy00R3bZPV99ruOvZLdwmBBl2C01llzk40HcdHd2cbE/+YlKnAar/R3lTOFfIeDzrXhm99RANsc7bKBnv5Z27pUw5+o3mlKXlEKQ5nJgjfF7lULyBQGcfKuP4OMr/NKsklSi/WQiWAfpYnjUJdCZv4o7O8zz6H7ppdy31g4clVejN3/TEkDB4RvdkZbXGELyzIXyNiFc/OJW/66e034pYKjxuU8hMalsrCNv/bSW5dwDS8Pgx1UOm1zXP13gmNaJD+gaEbpYy/wnMVO35YKYNEiLf7s74UPg1HZ5SK3oVK9aVP7tqtfL7+DNTTwQmWkWhMw3In+FHwAJ2fmnn1w4PHrOOLPRlYChwYiwFxTYySmzRTN9HVRT4HMV1nxrmuTHe1tuh15DAYfG0HfoF0adC6GVJ2X3M2nfDj9wqejev6wa3DU9Y2R0/nW2Nj1kVZzAyPqMY5h64sj9yefCDN+CQ5xt8QlqHBeAN4S6NS2XbQPzVyd2De1PzMd7hzy0ez2l7mivyJwMwSxluPRy20691f+VdZft0ctdlE9abjB2bp5KHFTY4RGSn9l7Qo5emISkBqWA0QEnng5EQz9vfjkgVYUsG7zb4tASkHU11OF2j80DwieisTec92W83AdMo6O0PW0HheQNVL6Lj2Gj4yVl7m3IT7dfR7PuGELjk1w15Ct2YoPL0E2gveywO0Vauy8QWFlZXH4K1ZUE6Ne2FMpQaac/rrW1urDYj7V24pbVuVQaqjOZW/vpzx/IlhFSenh7ByS0tYlsi1qdcurdxiyqdTKLZyh4r7Wbdtl93tVfuemVe3piKnSY7ELxuibd6Yx6t56U7Z/2cgzMBGWYs+GFn1TDwMdJ2NJjJOKtnBQ3L9j1X7qWHBEZcud7LKMw97AbK/OmugFYSJkqHrTeLXmhueK67wwgzs1U6j+PMBco2AowsP/Xm8V6JT8vEwK6yn0Cf78RcVasw2+U/vCSrPg49z5w4RH6mungvgNDSzzrKhkn9y3wyrIk0LbiSVB901piLU9rOR6RkhtnBqODRpPbs460ZjuMDPuqPF15xJlm4XhPCe5PSXxVlYUF5nBef0MHB6LkxfX8zpUdp+xiZtWKxrnyElhka5B0UIcVyeDFm8zz2JTiTOkRFrTMB7zWsRWukZy+hDbmAoUZfaEJSzUiufXSOT5ytcVhlmmxlBKIcT3BuUW/NLNX+7Ayh7lJQTwQ1X5Fm8u6X/PJjIpNSxST88TkCgRIzUpdNmI1FhD+3mZ9ux5rYwRkd9Va/ann8KHNjU5F7riZpihVOeUgskqoZjzQrVYFL/3HjIE7z1cTo2HB7sp13euLcKOfgE8LgvL1Q0WQWBoTzbHJPVFqveeTNKkOJ9K4rcp693KBn2MJp1+Vlk83740GMc52F+wnisyKbi716iwugATtKxIcnoVEYcvbno48Psrf7FoMc9fL8p4HD8ZFoVN2bn0T9XTt3+Lli0cL/ii6Bd0JIh2b5cAzne35Or7GcfWOMSs1IKwt8ZrOJ+u6w3pbIoayAnY4+AAJaG4wV8rayC1CaSy4+NGZooLuEB9OF1iRnZkRDJYIbtzwVgevFnkmFfCH7Azeyftw5EhIH2cDsqrk+yed8q2lFG//oiSx/7Ei1ENcD3qs+2wMVzE2yjc8QkVq4l6ucSpUr3bonDEP/Ew3bdIWusSfnPVtiHFzrZ43po/i/fyAhiVmJy11xOKea+cC/Zi1kt7/eHI9nj8ZpKA9aoVym4R8yFomtAtk/FXnVCsqWDPTJQcgaae8jvILU2t2Ew9r2rypX8QoxIfYtjScj+IcXihFJnmy0cqra8nil0shv7lCF6qZ5dValP6yJunTQJPYwPQJ/9crm0QDB/Eq2+sCyZSm56SNeyM2NylsNwVStO1aQgxHa5KMxURseUrNonTNooFeUguiT6W51sbFyo5/2gYfOOCkLeYjepBJvBdiLjGSEXB01mFm3lGD+5oMIBOJmjlCrQeHryrJsuv9DL8UnAtMsIFCzv/KZoFhT+PEJ6vANqPiL7wuV0CZCSG++9uJgWuGF19yXDiJLpfZtWYDLnvFjzzswdQjZ56PNryDBHeeqS+M13ei8oWLRZp/f7X1E8A/0EEb2j927npfCN3vTPV9gdgExCTQanIoYcpyYulUDzLOTd32aHTNYxqS9o5oYBf3Hb2FZKmUVkY9dMeFiT6mhzl8ILcqee+nl0q+EWxS6+arMvF0thbX83lZVCoYiodXAIJoRALJCWV5T9spDGqrrlX3PuSVuFHi+eDfFRkNB8VBeu8oNNS5qQvrqjYe9SAJRT8sSS0HJm9nAO4cQV1nUB5QU1JQEENmyFCZtRnR8k8Fn78b80Rc7UGRx/g0NIn0rHPegaeMQwUWZJYEtojtBaImOvPTnKWVdFPIbLfXC9kPjLV497w7Pa6Yd20J1QFix2Hh1JIT2bn+zvnM/pbxUNHlXkLrcsDadinwwvBztnMidZ9WRen1YXJayitfqkl1qKcJGihQPS7XlRI2XjWEqBxapu0cZFKTfhScRWUJ13wzx/iTBo8M1Oip6mBoWlMfsTcX97lHH22r7jvTFfxVOeZ7rj2w2PFK4IoxXxDTkYblFVL2yK9kj4s4bLPGlIegiJtdHhCm6qJJHSmRrr55hKe2UHgZMVT9ljMYmeCcm9/YBKgmMuaswK71hjqkVBUtawxYltRVT1AR1tqZ3ThGcVbMmfRPVyMNYskGVo688iXZ+9FIU/8eIp9Oe91AJQtpnmEQn0g1SjDf1vl9BTQD7WJVrYFpS4XR9HnlTXUN85YvlDBIgZCIgP2XUnzwxWBJioeOOxn1m9twPNkuO4t+1KJLLr+oSf2Ta/rY8X74Chkl2MMxe4TmNBNGbnQfq5evZx/OvD9wVUkRl8IZfTyGNP6WruBvNwptC7LKjoIw4yDScCqsSfuhlmbxdKNG0dRGH69xNkAvdV4+LO6NK1JupG9+SQV1cNCmp104UonyqnrASWVTGNMAuv0Hr1FbKMQwj7COCDCSrKVQjLjCqY0GpZSgubMMMD6vOW7P6VBRTXx9F/PC4y1m48cJuFPT7fVyTqjqnhOgh6wObyiCzw8qI/jHox+bCwLLf7vgJJnlNZbS2DBA30hFxMx3RCuclVJRIU0GYUSNWG5Soc88TJz9bSVYt6O6yRk6sNy2ny6wOmyChS1pSAaNjEHH/6HlzAog2+aBA2qJp2o7h+wuPGRIS/EgMFUJah9gWXA0M22r2u022UzWhqIQBqojz5C4WQLc47nceUfi+ptPEnaFKzWp54Co/olwVEPVEaJ6mcH3ubO13sXsq/6yHe+SudZ1Nb5TK7TYOKIJDACC/3lzPAv/yZV/b/jg7a6+evm/fX+MCWVTSHc7eqrPpUqkrUXgTjs4JZRQ33Q6n7SIGDCP/RPCPkgLXDZHby6Kc9APCiVv0Sk9XPwy6QP3zXoB6rh9q+U3zlk2ufOHYqgGUMMi5zvx7W7uerOeEdQ2qlvREU1pNZAFzNYaHOLSoxwF72AJmm29HuGPnDpPkagYdpedhGeuRnXpCxpdEDgBkpI+AK9I6O89oUl8ohITM+HnFt8gx0CCVfUucTLrhdSIEtriI2e5t5hrUTUPpK2U+1McPdYzmI01Kh39B+WlNSLuKD9Bh3KKrzW+HffopMct0rIgYw+5iCfe44qV6g8MEAM0M/PBIcyG+iJKuOaNcrMnju3VX+RBr6JBHJ9sbDcVbRAwO6bguh2C/ZkxBv95GdrRI4LAM/EiLzb39W3NLBVlpyNA34QLmBqisu57Zb6pfxSfn3jl8sNl4Man/tJHlCf5Bi77JyBzouSVlry4ejVw4tBVQZoUGl+WotE2dTZXI0Oa98/86grHX9z9j05rr0D/Oy//Dzg/4/HBtRIr8KvcBDtYkySEy2ZFUq5oIjBw7m3bz8bY9Vnjhk/pz3R9t54y6ogR52iaBMMp9jJNLqqngMx6xGOBstlivjt/rQ9Jt5en7jm7fixg6k3yNOK6KgCyf8Akbx1/XEE1c7F8iyB1tJKnpVFWNk4QyXvWMO8+Sb23hmhVlyKWa6qxd/uAZ5+HQu2C8pshURrE7aKujgaLuxIeAGAZtLtwNh4t7O7Tpdu0oxfdTQflb8grPw2x2B3ZZrqThrDLK8OraWN0YqCttoxakb4o/eUR3Tzhg59joV27Y2gebyAXnbVfqr9TfhOoWVoHYwEs1/W/M6UQTOlB5RnyU/FP1c8TuvOnwKeD7yXfCv/nDeNbQk9rliyDpOEjJEPPQri1F11nayAFWLRdbHyhbfRpi/ywZHlfxd+sbeeExh3irvRCtmo5NGy/2qGoSUgPibhdk16/tQse8ANkJEUfJwhifqkYiMFDR5J63GrIzWlmld6SWR/2jguPgTO0F0d4iseY7JJC70pSbp8dFih5Z3RToS6vNnTndJYqIGfQodcndiQQ54m0tONGllN0zXyazeuftbg3OGX3EZ6dL+LRmb1V0ekdy7jqlOIn6wBOaE9UYvypJKyWlN/06i1euXDM0T3mqQf2bv5LJ3+91tHY6nHC6alwJ97jY58vV2cTpDy4xLq4w7OiJfQxU1VqfWbHo3679etaJwhF4lqFNtQ9c6t0T27WXKKDTGp6zZbj/vbFc6RIBtR/zIiuIYtWx3s8HXyWDzeVl1TY77gi+0t3kJTNGXhbY6mrDDFqQVyamvrYnsANuYyJzoVOjFf037MT8syNpjXxyVqpk5UGx9hi/trNjY4wgo8EY7FV3jPOVHeiTQmp0Uy45BVGIbaVZd4rK/KADHklYjVu++r8GFsFw/mYxmSmOxRumsqTksIF/0OrPC3HH7DK1bVPytzyHFsrSDAvqPVRMn7NDX3lMxuw98Kln6pGHmRE+ojSP+JVVTmn6B1Kgm5k9uvos3UvBwAC/FK9mOU8F8k3ryTqnRNU7skzcngeKrS1RridXcfIgWYOjtYvNlzz7MuuGK/xLop5V/IAn6lLSQVDGxSbhmkbpwOWMVdugDv64jIbBPyI5vXPmPFX8jK6zZw4TtWf+UyabGpDFVXw0KZKHC+3qWX/O3S5ejrhstezLGNG2sKtYouBt9uRfkufEeYU9vuliQZnlop7/lLGGcBqavhcJS5jgy7XXHjp/cpsrXvNepbLTJx/LEghzg1bYoyRFFfvSBFCAmH6QswAKVix2sVUxrF1S+PJDHldaSIX1M1Oxi7rSmmyg0p8cnr2tS4Nu2M0nmnTQJCfAQxkm4lozM/KLAo+/TLf2LsSsmeH5aY2phbX1WZj7oRumVW3a9CPJCGiLHc/RO7c0DHoVvqpT8pO/10SbL8l/Ovs2Zw6vW/7cJMuOWkEF2CBKFypdzVq5SECK7/SN5591b7CSliOiafFq+5cfQ6DukGDF+Z+LOJLA/AXqRH+mSrv76ZlyRIxg6IM+YaT8zJrH6dPCbd7nXEspCEwfsmDzln0IOoSm6Wf/tpPYLTporVNp6+/rbLGT+szjJqkBnO+caUskNVee1tEp/NxIuTrKiJJc/U0B2sF8fKqoyCuvJI/k+iqBR7AX2TJGqJVxDPSEKMAktiTpe7S7vUGsusS4vVwp+ehwEbDP8+BZt1hmMc8gm7oGIeExh/s+Qc1LKzfq5qfnbyKdzGQi9wpT4gfTFcRIHaflBF13WAzIF4XtjRIwLx751pXYt8SmExzIdGpdVYZH9QDuC3zi2gQaTxEsoC/z21I1gArCViJSXIPBD6w+I3j1g4gb/m25AbVFca/Sgad76kpytXXS4HjqhD6qjYzWrTwfFEDAUdDbRdpMpZPWKCzjfzA1RJxi6Y+nXdu6WLgEHm3fkWWJXBLguJwgp5/ouhW4slnkETyjEi5Jnkvg2drX07XeMdK0PZ4osz5asCZfd2ZkZTZ4xxqa/XB3+LoMX1/4NIDMrmDTKAofhtbKkOww/IMKWSifmhw4a0FV1kpV/cbeH/XGvaZjb7/ov026+tuMv5GLcWGS9Y6w2oeOt8NYky3zSvWeVP6IpxPQRHfVHgvDnSAAYBYF2+9HyeYsN+UAuJ/jNuNVfWRjJdUtFgb2w43jstGglkiPYkU1Yaw1hlj/E4OVOLV0zf9sCpw1EOq6k+U6eig96ZiWBFmjvCIoNk55+MsWYZQ6BUUkpqpLJpZjAyiHVpQqdxAfrjY2wDqL5QJqgI5Uam8ecvGTp1mEbGx/MhCPhud1uz2Yf9WISwm66n4bb94qf9WwekctTM/SchqvbNKvjm/zK3tPVel+61FT66OlFjtbiDLAwnKbY8N/L/7wtX0Gph6fCKRh4dye5f31Jl5i/kPPn8mjNFP6XXl0mubmhucvp8/yeVfM+Lx2kGsrq4NE033vFGqeplX2ZPDWqSJ7VQIeotmJjYfgDCDEYEwg+YFa3/vHxyHdp8eJiZOptllb0kq7PpjeMJp7PTpTUL/o7GW2ODis34cI8sbuF9Wtggu7y9aTUwWhitVxXqh7L2xqud0+t3RDnlVxRJ3Srt/+AUSTSOmyFYCL+5ipY0CLWDBctwk27RTQmnLSKZTO+qaq/Z3mzLMPZ1l6lujJXuacNee9b3ek3iCUsSr68+iYYZznQR5v3im8pYtPKHCcceyLUGhb8pxnYXi/0NSURZ0ZWOfeWta4bOOj9rXLxyB3vld86XGnx7Qjj3i1tQp6NdOO7fSlzebOBcr2tLykJeq+2EMOrfz7aCOAIP+VqT2ISqceaveRL5L0fHbAqdFrShnYPBjupZD1RyzGzJltrB7n6BvyS8W9dMzeGuzvJhZQzRmF2wKZmwuzEyNIIku5sPd5fpD9ErR5QnM1XKZ+rrDnCSm72I0Siu3XnyTOqjf4z+cZ92MeWxJSLMpNfSSGU66jXcsN766BpKg7VTPX4OPz4Z7Std/IRu4bHVQ4Ap1VTSjmbxUXyUHMQDuNgGWbb2N52a/hvxweZGKPjchgOIUd6juXSrE9ICpxb1GmDBgw4pU0EWHb/RiWVx6Ql8FK6NjVpzDo3jrjz9ayzzg/pDwhBqoDT5ZJj7TYt15/msxdxatc/JaKsp+xOUPyr16eOvjnYF0gdW3Z46DAA5AQFl5wdqqz2DgdfEcfOQ3S/I3b+GHfpn6GUYVpkoPZFE6HG9uYkm13a5CZ8zjD333TNPfbdE5LqgMjiBDuE5tjjQ8K0zvt2AVIfg8GxkzzHUhLBiVJ3WDo9QhP5AjcVtXVc4hqc07US06upsjboOPMKnEt6RIKqWx3UGkpRGUN003EnyJbbNJa7S873LgjFij3o3MSbgJZfg+SItXExNppDPqcgj01z2gHJJvUNU0eS+U8EGw95eHxDBp+hvrAxJroEgbFmIODsbiyGy1RG4Sk9FFgxaaZCjBg3zcJSrKAzBTO44Bw6DlBjptwzbZmwNGX27OiGSfMTpdmjQjSnaye9XJ/c29oFAd5RcwgqW4RozA7fb0Q4wdMorWJX9gF3vUghMBpLUU/wbivvIsXJpzaQ2JBCDRaOgixyp18SS6Xu7tm6aQ2oKrWJCyAQYFSCx7XAW0ove5MkXcvC/Gq6m7xSOH4nPaTKJ/1QWnPiE83fMGGWUBj+5Z6H9zjRMbOMvVqyN9wcteL6TfqR/v/p0dMa4HeV4BsdjQH6+tG6cqhLtXoiHfwTkTYtXMVLiAWwR+N8qV3OshBCkr/LA1Tua9ed4eLomxBEAQY04GkRbtfdSrMACgnAUqP2UEkqZ9LZqdvWIQp9qGmqIizZGw9YhuAY3u8VcEIhEJ0RUmF13j2ZsUEWXdkQN6EYJmlJBS73vW3qK8rTrmjKG0yWbCT3KcGiqgwYSTVtjbrmsLnIirUiMmIgi8M4x0LekA/WhPqLC+Q58LnyURuJxRNkiNiQxfb+hpiqb8g6Jt+5Cl4f12XGWLYtIXSWHso51QzBdDqMeT2K0QRqrtRhjXRMG7MCAAEXTbtAaKFeqaU86rUtbyRw9w05qS7SLJlvr3xBkjyk0O0Ah3w/9irLR7IVFqvgx0diQtnAZmjq+fVs1YiFhllzIeH7Yi/ohsOtg1FsW8SH2HiT1Z7XBQXCwjtWb5cW+GgVWeOPEYQAE4XIsF4dYdFaaseQiPkLrW2Q1AvdNNtfp/kNaEfD4YV4IEcQwWGOR8P3tYcb3D4ffMSU7EccneJC7QOzEQUyWGGpDg0QSq6BcDwQNXHnZaE2/ZB975ld/BidyuFKpzDTTmecNPHUDHOTln7wrSrhxHPw0wVYu8FfKRJu+4aiXUWJD4KSiptiD+Nj3UuoIaNR1wLWqn5BHtUlSd8VGYGcA3HWl/8oeuGvHU8CPLy+8oOXJwErgL1rAvtw1SdDnAJDt/avd3dYx8Chg/rJpVkPcuQHZXX5WxKfB/YD2UqLABbraZnbm+kDW+MJ1WeG4m62Qh113NsF13fJ+EOZa166qrHJ9IC5b4bpMv9in22maJdXGGuoeDWik7QFHI7ljDxqpKmjcpltxMuzg9tGuAQDHoaib2lfAsMyuehcBdXER7TTA6eoahMonGxcNaR5opxmWdWfUFNXQCn+BtwIU0XEneWS8a+1qRHB+ILzjEyzbSwd1KywVIHzUvgIoZNXFR8dhKwkKVyEmuszHlaEOMLT+4JwaHwmz4wXtCVAecbzfs+UaNyzbiLoVVih/VFbX8TJYUVzZzfbP6peVu9QzOieMx5WsLJmtn2fU0xkDjqYAVPlJD9R437zqFi57FcenmesDWX5Md13mgwrpGoNQ86o7ijrnDhgUjUNyOo37WABgK/QDMFGcBHX9k7t6mMsuHnBf3qghNrfyOJsOSHfMtZNSdXLuWXfKfv04TSdXW++g+fjs3eQ4gSNYi7jg9zmV6vdvVuwRR3dYPxUcG9u/t9kJf8PDJw8Cbr6se10kFY2T26MJR4hBzetmPjOIAgbMLP4pNGu/QXUKTrbAZa3g9qpYlfXH57sJv8XXMCDAOyyDdIVmn08kvrc7skDDZrj62bRULjICGuf/oOxpFMPDM5P1Rv9uLgrGqOFeb4H3GN04P0uxnbhdMVZ4u9OPssaPc1cc2+uXXrrulLDvD6CIrg4gT/5okwdY/zSnXHF7bXcAGywN87V+huL1IIbrTGBKfLaUeEqXVQIjtVIZ8mENJ75w9/kdJsmWo4Y5lN/WfyLIZpIwv887mxe+wcKEE3zEGnPFbx56YHI3PXdTkgJWa2/8oIdNlcmzuuvq1sxjmPhjWx/p0kS0p95bmRJwwFTTBFHt5ya5I7Dja77DsLFvWB36vpgeApp+UAGgP81b6k3Pwin0yK71mKDeXK/ZONTPnWG/oGo61LAicug9ASZK4qB06VcYwU6bBdhmQFG0ZZtmecfgDIoSuVb9T+MPahpQQ2OVy9NW+Bcops3KXwBuqMAxaG3AKvAY8ASgopBLoFSMWIoANlSHYUaQozMSBxLQDmiiIyShhW8UtLW0D28HFHIDNLlhVABw4pOm5hEDAaAnTPQ5HIDOfO+Knsj9shSzjDMQBnk1+D3vTAQE09joWhpGNwxeEKYFQVORDDzeDpY4oZKKLOYatvy4GeoN84dYu5UPTCgTxOwuHe+HgQbwrzHUvcSwpwEUQDEP4W4o56qClNAJ3OwOIioAByh0Klzdt6c1R5q6uT2XArgACyUBgwvGKE0eAyLxR8WCSgCOSBNEa7UTqJZvXMgS8fhxZlJ1IVdAFVVWKPupyJDHclcMmOK1Gj84gAHAmfh7ES5Et6Wekm+lJoc6yca1UzuCgmdrzd9Mu0bSEiv5WnifF8rogUchLSlETqHZIYMp5OsHARjyJSCda5FKEIDso4FhBEFdeHaIirB9Fg8J0UE24SrpoDFEuDogNLMxXBqmXi6QQs40HRcbqBDA7SoRrdY43E/qY4U6N8SKhOygonml4Xy4qt2ta7QAkp+vr0tdu0/tBJvglHBd7YYJFZ7YiaY8W8JUoHYKpzp1U8QGcUVU0UXpUJeb6bIqbyXdhBfWJA9hFFMogJN6haIYvdAAC/fgGo0Jlm1oxzqNFT1BeBz4swfg0VonN2Rj2TmYNx+15TzsMBHG0I0EFwm64ZoAAI1piE1ZMUzJNfTIaWk002ZGK4mAG2y1jWGvbA4lgEgIJRKUzSiGmaMzD+4uqLLnGMZ+GOyvPUSZBUjJQ1CQoMwShNSBKzqvIsyMeAvPLJt9Skj9RI/cKW/RblFHsJWo7G8Bmn5jBdXhI/YQhAbR9EJhAxAaAGbpA+4IB1U1FzbmHaAcRVgIo9L7v+JSnJ4Ye0uQLIZb6qnP6WYD4KjQLjY+hMdpwHRP3k7Lxxv4GnfdC7MaFiMyIslQuku/ZK3HrQ38EMDvkBn2ArebE8E1YhG7fPIpKWI4kmNJM78yWWkWJ8G1HtGi4tq2E6EUKnuhkg5qYQsTyu635ICdZAubAtXWaURmr5nkR6CymqREMvfUisLu0iRW/b6kb9uG5XB1kjmhjChqsWFE0GkUVQQdQfmaMqDC7vukgx4FTCpQGhpehpFkXQjd06+0QoBJVl3brEwAWMIw7Hkw4SnXEq1K8lBr3bytk1KAp0LVmbqxbl4eGigEQMWhVvImldVX1TiCGf+SA+l/zn0DWi3wa5hpHgclU4wHCM2ALtsshT2jQuEQkkZnVBd+rrdZivfT+OmF4QZtghp9j4jY5iO4zPUO9YiDJTA/CoD5gXXY4TLA1MESDQL3QStyUIcGgHWTxTrCUFeKaO4TUFpQ5t1HUF5bH3XYClBEgMIKCPcdGjKUhBpgo4bJ0w2lqorKKDIj1G7HrNyuhEt9EkYts3WOehW+x6NbvXOLaw/XSjGz8CwQnoCMIUAWDW5ZGS/zKeaBEjq8nMHDrb5NbeN3VxfKYW29/3vyJ4FpTI9q+sr2m8oWWhb9/Vv0sb0xROD8KKJpqtSrz6zIXnavbdd9v0ZEjXJfjVKYiFTgbJ9NaX2PSABieFXAYFjDGgPeMUJhlYhiHhnX5o96fkofgMo5pFaPOb0/gbwOyiuY0H+df2005LPmLeUhnzj5ZD2LCTZfxsPb0w3pbkATfD5XV58h55y2ZiPkNF6wHbOoUZ8HIxB4d4eNRDy0spH+xfASa8E3hFaeQjO91quQXO2mPK+iACXYTuh9cUmDdM7BsQI7S4KDYZpKi46rdqOFLmABCLvve7GlquAfyFk6ktjTZiVDPuyt1gqucHZcaYHH2cK5eT1gcOBgAEE0UPEHpVZh8hPjUlzRaZHsWtqAm/hfwiahlIStrqOI8bOAJtc8WUcQp34QYWGUGuTcnfJ5/QwGVGRzFLAhrjZJPwtxnaACsfPOKZF7fhf+e1gS1YyAKKUPyxDpdL98kxleG55K3xShEhuYsWkoqlurRW8nSVp40ywDQVP/SZhnKzi4OjUrS1qBq+sVniB9sH/WMyWZOBBAWYJtpnMu8JjIRqBqKR51dKUsWkJE8PkyedKAoKzF4nHhtqcv6aWI0l0dXlfVrEKkiQwYMICXsnOcRwZONHBCnMmNpvgz+3RgeaSfaRr2iPpMX+7UqgrAK3eEnECcfQKEu9HyzmYUReEadjAaoCx1frKXHYTVKtQRChK8itB3MAJFRJOPbwXxADxbVzoxWZ3AaL3ZsqvVbmoeKCf6cOEtxbCbNjv6tqeAQwJZz1HkI77FQX51kA/dsiohX7xXivhhJ54IhCsA4VCtAeJlW5Yn8d0JpkbQkGogtSwclcB85cRRWmoYlhpjbK1XrqfE5CanvvaWIcsoQD861UD0AJ0H4Ov0J4UB4EvikYlv7AGory75g1jCyy/kGixjzWOgnq4ucFeooypdXRuS61mEFiNFoNLJwAQAFubJPUMCuRkbRdUjfwgJBAr5FDziwDSLzLsQuZrAuIRwnXLCiNkiFwQglSoIUz3nWZWlR2fRgBZFoUcRhwpRdGUv9nXta0oQGEEqA6ArWFCpds+OSlkf24gcTunuixc8eA25KTqgUARBBYJqWzgaCMpNqcVlvctN4zBDEIibaUeM4fzJtH2p7c48Md6QSvPl2QipHZQZLwrA1doYZ4OkOliUKm1sRFUsrD6T9epORqPGN/+QwyZOxcF1z7Q3ntycNK+jaLw9lAAaIDQAzDv2Tei2A1AnViIHQIGKTkczZnNqPgrNqkSZ+tp5D1UghQqVZkCreZCUN0CThpELwBeoAqpUU17rGBJ7hdLLdPCgVNwVTC86430iog3ZhWwHQgkQhxUeHDXwniBuKnh5eHL1WpzQqDQavQSdoxqUsNq9yTbvncawEBsQnlYE8iOwNLiv69Tg1fRHiZD+NDo9k/mH3w2An/dnofgdIkSh9xJNoAvLeqLyqpNxmxBRiu+0CH6nLLKfCDf9zeMRbxwvo+ItfrdvL3SKqPfoPCtNYixB6TEC4HFzPiM5o4cQAFCukLRVs+pQs0N6SvqUJLtW6y86YVP+mm35kT0vY7T6DyrEqeFJ8hof/gJ5Sv16Kc3I6PuixpYvKVabNOZ0f46Rdvny79KzTT3fHjbcpi5HYcubvCPV01bMLuCABOdCA3Hf1wjYqgQ2ueED4BAhnnpwAwAmbvUae7nj4UnQNie7VR8wDAjfwUq5qIcNwImlf4UPtvoyN5kpp3rXhhLlugPUkRtszOttlKAlx9Cf9VFPfMShSsNtBw8AoOPZsYo+5/M9sCTXmzJBn1HtBttRibgUGbGiQX217JvOYr7HN12yt07IxRl6qwRbbAqdakDQpYbompEMpkcCzWLt0aDEn2buStsG7N149zSOJdh7Re7NyZ69o6Bms7lC+O8qDmS5be8ESNe8/Rj6gN81qhMK4AsDrsGxXMgm/2VILNTIUFWRYl3wyD7iO1BaZ/viUw8Lc4gZuACbWEg41biFIwgAFRSqIiFD4akunPYnEQvgysBkNpWTZgxpv/HhR9RTHQyzej0Z7LK9lDYBESjSR+jerXi9ggVw1YXixL0IaPlRF8V0sbAtojze+gKFvhQae9b79OoSN+cYaeFJVCvMuaiKNsY10+VQG1qycL4vy1k+5IrUEQvd7fIe+tQp/u43blzX/IUbaIm3ZncrT1/K6xFQQLsntmt41WjywPmDP+Y/mNJy6/UF5vKa/hsmapDGMPt7gjAkgffrue7Zh9O/trZVDlczELkpFf6AZJ4eb72mcp3zrtw1vVCU98ELn/1EZ/OYJZEmOcSYABmKt8yWqFF/ygJyvupRGf0JHo+nZeCJ/OT1/7Ic367cm9G53nqvwng5Mf729nH3kut99FUvUbIuVj7HF/rxpmVV+diSqz8lYxhsvunVW+ljlb6vVwNAo5BgXpX9zpjRaIoVahYL9W8mYXPAjyA0DxoO4bk9ELgyodna3D17bDUm+KulpGtUTYsfgyA8wRPLNGilNbJrbfvnma20xRLqMsmLzu3+7fJ1Eq9j+yZ4ciEIGypyNGzYsJM3eSe7vb0XU4dYYDR8xzQG/iUxzFDGtQ4mlTmpT72jF2P8qJVi+jW6VmCEviyejdGfX55dZYoPTf7EchsT9rKHyYvJL89kWLgYnlEx1/pGhWbGhUPGfCtT0YnI2M5czuNTF44KiiKahIUdxXwFWzqBC7/3n3oSFRQptbDruBAL4Z0CI5zktBBIFYTIGEIcNYtCCOs2STW2xZ3ByvxaHlzKr4wXe+pFavbMrzy7cm9X1KXyVJDlLadLrD1/Z36HvbyVd0s8lYspkc117AvQBWiDIa1L7uWDaTnGVgEBWuytSGhYDlKPZZaD07asD3oGggFEX6alylKLmYm6fd0QCnCOpEBTwtX5TdZRho5YfNmJ5a2IhXLQTF3RCKCsABCkrMb7TMouFppRZrZRj+I+Rlhd76fvTUCrpOVnrRoxLEmwf8ClDg3zaqKItc4UmI4SZaBOT4MqLSFMCaiqUbYBMn4EhZWS7o/qVx/iF/Zif9xbciiGG+9Eiyu1BtQBAQJTgAyZlHG8r7E45g2oN7ELn8NhAISPvYGEZ+yi116Wo9AExGpjLT+CSZHWD/r/SgAtZ+AhKsdiKdWCGCas5sfK/u6XvLbpsSmx2s2E8nxw0hfPmPYWf/ViggkmmFiM67LL3JfL9fLStDX8EiFgQti1IwMymD8FjN2i6VLzDBIsnkyvmVjyn6TKBPqsefZ1Ucasl0bLJS5Nl3iO55LNvEEDqQCE01RBNqmsqgb+p8MEq8Jb+h5p8z1jUpTcq2/ZCoEkF0CUilTF4T9lq7iPYIQK4q497/d5BN+T4YKWwO3xV2Tp9rb2k9d4rWZjlYxZ7KthwjalZ/O6lB0w2LIyf/TAOO9IRcKgoTdcfpa8lHZSw9LQQE1oJSmakcEaln++1sgSDIXBEx0K0y6m8Hhi5HjsQ1U8egycHE8njfkZDVjN+aigIn/9PpIHSMXwTBxwLbzZax8BBpxzUO715UDVihzYCN+eEvHL+5MnC312k5/AgSsXgAJwiDNsCm6F/UsugKRDa7XYn6D3IEYggAlK5WX2lAegloXTXp2gjImULeGmqF1ICygzf6lVpuMp0hRrpMVa5tTVCZlq3zjf0Zq4YJ7O0RffoJwQu04V0c4ACDDaYQABJt/JOAHWN/OWGkqG6jHn/nZOQyIW5twf4jpSALijlCl7HoCCvwycvZ6rGNJMpATI7cQiJ+KTIAid7BIXsAGr6ynSGpwuWkUF3BoNY5zPL/UxA+cPx7MN4sgRUsJiA0nY2660yCtPxl2+iFPiLhCQlAq5jCpdA93truTBrmfZKJAYgirqigu2yJBa5SSjdX7kw8qm1mEXd7mbk7rc4h+eaO/FpAw0ieCKjtFO6LV8wd4gehMtyn3AOe+Y9/bjqqgSRoHdAshqK6uCIWg6Ol2ttVmBJSSkFmh2GbmH253dSm63UZA+PIgkwwY5GSRLwt21vMya0oFDveQga3y/uj/PKSbiZSDLh9BM4ba003K4cg6c06UQuj89jpUt0DPtgungPjP+r/T/dHpKYvFkK1E524CUT8N25lMZQJn6h5vlCnM8uYr1Sg/D9MJH2/0EfWPKqGCyPHRPbUzRznJDDRbaKFjlfwlOT39FRyJtj84lAtBLK+Mwbyc1D+uAwrxfd4qLddM6oNrzjy4B11jHc1zzr4rAvx06e8AiDvIyucDbiPMw/mBPPdhLBr6pT0+e9Q3QhCgxw9nvfTUv1BGEULh/FQ3xhEu59fvhHrMY0b3cFPf6H31R6/HUguugjOwi17PjVJ0DKiNyXuKsb/PmcJqqsoUtWmkTfoI/OME9HikA+HfTxzH7z/5odKzu+z1Ono8ZcKFFWXTYMc0BdRlLOaMW7C502UX2sqKBlCUr6g6aq1uLCPuqHqfJZgAhrMlRNuN8WBUMQgybPxiGO+61PwoOJzycqz5tTv3N74d+GMxgMyMB0tkDFApkU6QIwHWNqpGyyh8NnScEE+rP/2y6pwOxIpw2qJNzdI56URAI0NmJFTRTJD1S+1Puk26nlNOjCmde3IO8qKu7NgwFG4HlMB0A8JKHd7EtSooS4R0jBU4wn2z5XjqA0LE71uJrARBpmQUgK21ZEiCBV91tkve/HKLAtD17kkGAEQnoH7pKYQAKleqsNqHM2pW00ocpLM2kn3AZgMfJ5TfY7G+w1+tlmW3BUXnqYJXrut623w3O7p+NyE4DMqGBWR2KN5Tz+MzxbHycb+vMBE5pq/Rq5JEVrT94XU7BDtMlxl2LcXCIY+zv0ukW5+RoqU6LGrsfCsoFnN6q5RAfc6F+M0iMHVCUyNKNE5L88brTO09aZAyM0GKDhyBMzNQA/mE9Xc5IRkk3jA/LvB6K/l6v7PMLWXwcPGM+tsPnLK8GcThxnMT2TN3cYl3ipGSp/m3Q3HuIP8E9kvHUp0xfV0RSoYhhL+VubpDC4yGx3e+VAW5V2UPiwywnUcYPzx4nwfG+IT9ML37++mJMCy8iZb97KGc6EcpZSwR+2S/O6bXz+88E6xVemMNPiy8TGcBe62HgdnDJmw2AADdfxEctMCOT/9duZstA6neUr8/vNx1WAYCzffUemSy3s1ykXnx+Lx+EMX2Thoe+73KJOcCZ/1rw/4Cc+szn5+KL+K01f3oeH/6Xv9X33Wxv6fSvgHUOChAQUCzw+xc/fbHwd6vi4Rviq/46KVmz4qf/c3hoTKuGjWtwdps5tfJmiUh0a2xp/vYKpx03qi0Zl2tBQ5vQEN9rGEv8YxV/1wEgT9O7H4X+Qk4Ls68S7RYK/md1g1c6cVlD1vhOa4OrQfSKviC1StqUdD75KTRO/8HYAJBPONUXnAnm4ez/Gf629g0QkPMk96iR2mYC7FWA3iL7dYC9R87zAHmoTo4qqfE8wF7Gt4v13DwLsOc5g4GGfIY/V7D8gKGijejx/dsMdg6if1XONqMPUgJtD0vPhnL3jfV9f6FuZEQsTxcifjGd7xSMs84f/kB2DvK6M95PB7HWW6rtrdz7gnucP/5gHTku1j8YV/dRVfHTDf+9k2ejRdvAGfs18F5v8d1CHR+wcuz16OxWkY8Ho4/S0HDO3SWGe0ZDd3v/ZWhbUDX1Cv28G/Tjx/KTVF6WioMmDLjiOA1IM5D4407IK1Kdgy6zzfS1FqRmkG6NkepvKZlVwCdfvGhlsBJ0BQtd8KLxAewRlvV+GpKVoStY2Kbt0KbPrbucjxb8Mc0GK0FXiDGrCkMzLWsbSoV3bS2gn7bq841rFOjQBRaW9WhNS7b+mE4W1hwn1vZrzOMaWkYjv/5gBakUc9Q0U9u2db1sQvvE4b7cpuzx9sY7trdV8mZD3Wuu1Z7UqmXZ9j/LVoa56mTNHcXjltrUXwPY4/gkIL2/W/sWoBn0Dwox9tSScV7ZvF4HjLrjX+WiBgPEtp5sQ+BHcD7MNZy2utgv+sXaqyCfA1chhq+uwlqafDKZvooKabmKtdEyOcWImuIa+IgSWllGzhSQEp5lYIRUM6VfMn0hPdXh8ySUZEJiYkZoT2uKeqHaHNTPJ8XsUrUSz04MGzMrqyT0XMZlUrr18WGtZGhPwuzTUWcvfxo78lhKa6G4hCx519PVJ2No9anHeFsjWfO0oBzia0U+MaGaagreUaJb1r307VVUfa3MPcqA4TCEXLpLGfqS4LOL9Wqb2udHSXQxHgwF1QLr4p9TWrc4/f/RkLr+GiTpbre/A8nb8EB/95Fky3bTpX/tkWSzu5NR09DS0TMwMjGzMDKRg1OlKtVq/oYneP7z8KnlF8AnICQiJiElI6fQRUlFTUNLR8/AyMTMwsrGzsHJxc3Dy+e8EDGJDqsvi7RUPBLCJ73oZI7J2YWGjdzIp/7GK+nm6i4oY+F5F4EFbAX1spAXvOS+V7zqNd/r9pbXveEShN8Y7LztHb1+9LP10ML6RPWLWUWQlJCSNmjAkIwfDBs1YsyEcY8K4Jk0TeDPL27bu6zg4BMfuKKkqmbsmoqJJV09bT2FIQGnGpBBDXIooIQK6tAFDWhCS7M1t+bRHPP9bxGLJdKO6b8c/+hJMwyZ8cU7mDJ1ju/kfzlj/8FEM4y776PY7GHLFgYM4MwcTpz0qDNMmMAOX1uzhidPWLKEKUOy2vtcAOjjBRTLPsPfAHk4C18FAAA="}},"time_used":178,"timings":{"blocked":64,"dns":1,"connect":21,"send":0,"wait":22,"receive":26,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.gstatic.com/_/translate_http/_/ss/k=translate_http.tr.MOhKAPSS1-s.L.F4.O/am=hMA/d=0/rs=AN8SPfoSvcbOnFdaxQP_x8te6jzGQof28w/m=el_main_css","fqdn":"www.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.74.99","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://clear-vault.online/","date":"2025-08-07T20:48:22.312Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.gstatic.com","organization":""},"issuer":{"commonName":"WR2","organization":"Google Trust Services"},"validity":{"start":"Mon, 07 Jul 2025 08:35:11 GMT","end":"Mon, 29 Sep 2025 08:35:10 GMT"},"fingerprint":{"sha1":"43:A0:95:35:FB:C7:02:15:92:9E:20:20:0D:0A:E7:8F:93:61:52:CD","sha256":"F1:59:AE:4E:F0:84:C7:D9:0F:67:4F:CB:FE:A6:ED:7D:47:17:4F:83:AA:B4:ED:FE:F5:F2:69:A8:AB:43:0E:0B"}}},"request":{"raw":"GET /_/translate_http/_/ss/k=translate_http.tr.MOhKAPSS1-s.L.F4.O/am=hMA/d=0/rs=AN8SPfoSvcbOnFdaxQP_x8te6jzGQof28w/m=el_main_css HTTP/1.1\r\nHost: www.gstatic.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.5\r\nAccept-Encoding: gzip, deflate, br\r\nDNT: 1\r\nConnection: keep-alive\r\nReferer: https://clear-vault.online/\r\nSec-Fetch-Dest: style\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 OK\r\naccept-ranges: bytes\r\ncontent-encoding: gzip\r\naccess-control-allow-origin: *\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/rosetta\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"rosetta\"\r\nreport-to: {\"group\":\"rosetta\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/rosetta\"}]}\r\ncontent-length: 3969\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Thu, 07 Aug 2025 10:08:54 GMT\r\nexpires: Fri, 07 Aug 2026 10:08:54 GMT\r\ncache-control: public, max-age=31536000\r\nlast-modified: Thu, 22 May 2025 01:09:21 GMT\r\ncontent-type: text/css; charset=UTF-8\r\nvary: Accept-Encoding\r\nage: 38368\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":"OK","fingerprints":null,"data":{"size":20298,"size_decoded":0,"mime_type":"text/css; charset=UTF-8","magic":"ASCII text, with very long lines (20298), with no line terminators","md5":"183cb263396f0b39789db1ae3f1e1b20","sha1":"502fcf18fa8d865213e282824ab2dfaadb9b8beb","sha256":"6a91c12a6fd1664f4d594040374fda61fe5b02fd3aee5f0c877ccbfc49488ec5","sha512":"ef280b60fa9f4bcb446d952f59a9b89442b6da6737bddc20a8fb38fcf0b4083170c09c008d7d221cf205084c8342da1f995bdd99ce907d70e8e14fc62d827acf","ssdeep":"192:nvqx/EhNINclXsfg0S0Q8CqA3ukLzSJFzvQVMZnUIfIxIRhpTpeuHjPtcmx4v78l:gM78Sr3fWJFzouRUqWQhpTpdHjPtc5G","tlshash":"bf92972047aed01967efa82364d36dff71d444db90523eeaaf5a7352cd821f231ea214","first_seen":"2025-06-11T00:07:11.687997Z","last_seen":"2026-07-27T10:36:14.980644Z","times_seen":37906,"resource_available":false,"data":"LlZJcGdKZC1aVmk5b2QtT1JIYi1PRVZtY2R7bGVmdDowO3RvcDowO2hlaWdodDozOXB4O3dpZHRoOjEwMCU7ei1pbmRleDoxMDAwMDAwMTtwb3NpdGlvbjpmaXhlZDtib3JkZXI6bm9uZTtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjNkI5MERBO21hcmdpbjowO2JveC1zaGFkb3c6MCAwIDhweCAxcHggIzk5OX0uVklwZ0pkLVpWaTlvZC14bDA3T2ItT0VWbWNke3otaW5kZXg6MTAwMDAwMDI7Ym9yZGVyOm5vbmU7cG9zaXRpb246Zml4ZWQ7Ym94LXNoYWRvdzowIDNweCA4cHggMnB4ICM5OTl9LlZJcGdKZC1aVmk5b2QtU21mWi1PRVZtY2R7ei1pbmRleDoxMDAwMDAwMDtib3JkZXI6bm9uZTttYXJnaW46MH0uZ29vZy10ZS1nYWRnZXR7Zm9udC1mYW1pbHk6YXJpYWw7Zm9udC1zaXplOjExcHg7Y29sb3I6IzY2Njt3aGl0ZS1zcGFjZTpub3dyYXB9Lmdvb2ctdGUtZ2FkZ2V0IGltZ3t2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Ym9yZGVyOm5vbmV9Lmdvb2ctdGUtZ2FkZ2V0LXNpbXBsZXtiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNENUQ1RDU7Ym9yZGVyLXRvcDoxcHggc29saWQgIzlCOUI5Qjtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjRThFOEU4O2JvcmRlci1yaWdodDoxcHggc29saWQgI0Q1RDVENTtmb250LXNpemU6MTBwdDtkaXNwbGF5OmlubGluZS1ibG9jaztwYWRkaW5nLXRvcDoxcHg7cGFkZGluZy1ib3R0b206MnB4O2N1cnNvcjpwb2ludGVyfS5nb29nLXRlLWdhZGdldC1pY29ue21hcmdpbi1sZWZ0OjJweDttYXJnaW4tcmlnaHQ6MnB4O3dpZHRoOjE5cHg7aGVpZ2h0OjE5cHg7Ym9yZGVyOm5vbmU7dmVydGljYWwtYWxpZ246bWlkZGxlfS5nb29nLXRlLWNvbWJve21hcmdpbi1sZWZ0OjRweDttYXJnaW4tcmlnaHQ6NHB4O3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lfS5nb29nLXRlLWdhZGdldCAuZ29vZy10ZS1jb21ib3ttYXJnaW46NHB4IDB9LlZJcGdKZC1aVmk5b2QtbDRlSFgtaFNSR1BkLC5WSXBnSmQtWlZpOW9kLWw0ZUhYLWhTUkdQZDpsaW5rLC5WSXBnSmQtWlZpOW9kLWw0ZUhYLWhTUkdQZDp2aXNpdGVkLC5WSXBnSmQtWlZpOW9kLWw0ZUhYLWhTUkdQZDpob3ZlciwuVklwZ0pkLVpWaTlvZC1sNGVIWC1oU1JHUGQ6YWN0aXZle2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OmJvbGQ7Y29sb3I6IzQ0NDt0ZXh0LWRlY29yYXRpb246bm9uZX0uVklwZ0pkLVpWaTlvZC1PUkhiIC5WSXBnSmQtWlZpOW9kLWw0ZUhYLWhTUkdQZCwuVklwZ0pkLVpWaTlvZC1UdkQ5UGMtaFNSR1Bke2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjAgMTBweH0uVklwZ0pkLVpWaTlvZC1PUkhiIC5WSXBnSmQtWlZpOW9kLWw0ZUhYLWhTUkdQZHtwYWRkaW5nLXRvcDoycHg7cGFkZGluZy1sZWZ0OjRweH0uZ29vZy10ZS1jb21ibywuVklwZ0pkLVpWaTlvZC1PUkhiICosLlZJcGdKZC1aVmk5b2QtU21mWiAqLC5WSXBnSmQtWlZpOW9kLXhsMDdPYiAqLC5WSXBnSmQtWlZpOW9kLXZIMUdtZiAqLC5WSXBnSmQtWlZpOW9kLWw5eGt0ZiAqe2ZvbnQtZmFtaWx5OmFyaWFsO2ZvbnQtc2l6ZToxMHB0fS5WSXBnSmQtWlZpOW9kLU9SSGJ7bWFyZ2luOjA7YmFja2dyb3VuZC1jb2xvcjojRTRFRkZCO292ZXJmbG93OmhpZGRlbn0uVklwZ0pkLVpWaTlvZC1PUkhiIGltZ3tib3JkZXI6bm9uZX0uVklwZ0pkLVpWaTlvZC1PUkhiLWJOOTdQY3tjb2xvcjojMDAwfS5WSXBnSmQtWlZpOW9kLU9SSGItYk45N1BjIGltZ3t2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LlZJcGdKZC1aVmk5b2QtT1JIYi1Uc3d2MWJ7Y29sb3I6IzY2Njt2ZXJ0aWNhbC1hbGlnbjp0b3A7bWFyZ2luLXRvcDowO2ZvbnQtc2l6ZTo3cHR9LlZJcGdKZC1aVmk5b2QtT1JIYi1LRTZ2cWV7d2lkdGg6OHB4fS5WSXBnSmQtWlZpOW9kLUxnYnNTZXtib3JkZXItY29sb3I6I0U3RTdFNztib3JkZXItc3R5bGU6bm9uZSBzb2xpZCBzb2xpZCBub25lO2JvcmRlci13aWR0aDowIDFweCAxcHggMH0uVklwZ0pkLVpWaTlvZC1MZ2JzU2UgZGl2e2JvcmRlci1jb2xvcjojQ0NDICM5OTkgIzk5OSAjQ0NDO2JvcmRlci1yaWdodDoxcHggc29saWQgIzk5OTtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOjFweDtoZWlnaHQ6MjBweH0uVklwZ0pkLVpWaTlvZC1MZ2JzU2UgYnV0dG9ue2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym9yZGVyOm5vbmU7Y3Vyc29yOnBvaW50ZXI7aGVpZ2h0OjIwcHg7b3ZlcmZsb3c6aGlkZGVuO21hcmdpbjowO3ZlcnRpY2FsLWFsaWduOnRvcDt3aGl0ZS1zcGFjZTpub3dyYXB9LlZJcGdKZC1aVmk5b2QtTGdic1NlIGJ1dHRvbjphY3RpdmV7YmFja2dyb3VuZDpub25lIHJlcGVhdCBzY3JvbGwgMCAwICNDQ0N9LlZJcGdKZC1aVmk5b2QtU21mWnttYXJnaW46MDtiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7d2hpdGUtc3BhY2U6bm93cmFwfS5WSXBnSmQtWlZpOW9kLVNtZlotaFNSR1Bke3RleHQtZGVjb3JhdGlvbjpub25lO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjEwcHQ7Ym9yZGVyOjFweCBvdXRzZXQgIzg4ODtwYWRkaW5nOjZweCAxMHB4O3doaXRlLXNwYWNlOm5vd3JhcDtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7dG9wOjB9LlZJcGdKZC1aVmk5b2QtU21mWi1oU1JHUGQgaW1ne21hcmdpbi1sZWZ0OjJweDttYXJnaW4tcmlnaHQ6MnB4O3dpZHRoOjE5cHg7aGVpZ2h0OjE5cHg7Ym9yZGVyOm5vbmU7dmVydGljYWwtYWxpZ246bWlkZGxlfS5WSXBnSmQtWlZpOW9kLVNtZlotaFNSR1BkIHNwYW57dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTttYXJnaW4tbGVmdDoycHg7bWFyZ2luLXJpZ2h0OjJweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Lmdvb2ctdGUtZmxvYXQtdG9wIC5WSXBnSmQtWlZpOW9kLVNtZlotaFNSR1Bke3BhZGRpbmc6MnB4O2JvcmRlci10b3Atd2lkdGg6MH0uZ29vZy10ZS1mbG9hdC1ib3R0b20gLlZJcGdKZC1aVmk5b2QtU21mWi1oU1JHUGR7cGFkZGluZzoycHg7Ym9yZGVyLWJvdHRvbS13aWR0aDowfS5WSXBnSmQtWlZpOW9kLXhsMDdPYi1sVEJ4ZWR7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y29sb3I6IzAwQzt3aGl0ZS1zcGFjZTpub3dyYXA7bWFyZ2luLWxlZnQ6NHB4O21hcmdpbi1yaWdodDo0cHh9LlZJcGdKZC1aVmk5b2QteGwwN09iLWxUQnhlZCBzcGFue3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9LlZJcGdKZC1aVmk5b2QteGwwN09iLWxUQnhlZCBpbWd7bWFyZ2luLWxlZnQ6MnB4O21hcmdpbi1yaWdodDoycHh9Lmdvb2ctdGUtZ2FkZ2V0LXNpbXBsZSAuVklwZ0pkLVpWaTlvZC14bDA3T2ItbFRCeGVke2NvbG9yOiMwMDB9Lmdvb2ctdGUtZ2FkZ2V0LXNpbXBsZSAuVklwZ0pkLVpWaTlvZC14bDA3T2ItbFRCeGVkIHNwYW57dGV4dC1kZWNvcmF0aW9uOm5vbmV9LlZJcGdKZC1aVmk5b2QteGwwN09ie2JhY2tncm91bmQtY29sb3I6I0ZGRjt0ZXh0LWRlY29yYXRpb246bm9uZTtib3JkZXI6MnB4IHNvbGlkICNDM0Q5RkY7b3ZlcmZsb3cteTpzY3JvbGw7b3ZlcmZsb3cteDpoaWRkZW47cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3RvcDowfS5WSXBnSmQtWlZpOW9kLXhsMDdPYi1pYm5DNmJ7cGFkZGluZzozcHg7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LlZJcGdKZC1aVmk5b2QteGwwN09iLWlibkM2YiwuVklwZ0pkLVpWaTlvZC14bDA3T2ItaWJuQzZiOmxpbmt7Y29sb3I6IzAwQztiYWNrZ3JvdW5kOiNGRkZ9LlZJcGdKZC1aVmk5b2QteGwwN09iLWlibkM2Yjp2aXNpdGVke2NvbG9yOiM1NTFBOEJ9LlZJcGdKZC1aVmk5b2QteGwwN09iLWlibkM2Yjpob3ZlcntiYWNrZ3JvdW5kOiNDM0Q5RkZ9LlZJcGdKZC1aVmk5b2QteGwwN09iLWlibkM2YjphY3RpdmV7Y29sb3I6IzAwQ30uVklwZ0pkLVpWaTlvZC12SDFHbWZ7YmFja2dyb3VuZC1jb2xvcjojRkZGO3RleHQtZGVjb3JhdGlvbjpub25lO2JvcmRlcjoxcHggc29saWQgIzZCOTBEQTtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzo0cHh9LlZJcGdKZC1aVmk5b2QtdkgxR21mLUtyaFBOYnt3aWR0aDoxNnB4fS5WSXBnSmQtWlZpOW9kLXZIMUdtZi1oZ0RVd2V7bWFyZ2luOjZweCAwO2hlaWdodDoxcHg7YmFja2dyb3VuZC1jb2xvcjojYWFhO292ZXJmbG93OmhpZGRlbn0uVklwZ0pkLVpWaTlvZC12SDFHbWYtaWJuQzZiIGRpdiwuVklwZ0pkLVpWaTlvZC12SDFHbWYtaWJuQzZiLWdrNlNNZCBkaXZ7cGFkZGluZzo0cHh9LlZJcGdKZC1aVmk5b2QtdkgxR21mLWlibkM2YiAudURFRmdle2Rpc3BsYXk6bm9uZX0uVklwZ0pkLVpWaTlvZC12SDFHbWYtaWJuQzZiLWdrNlNNZCAuZm1jbVN7cGFkZGluZy1sZWZ0OjRweDtwYWRkaW5nLXJpZ2h0OjRweH0uVklwZ0pkLVpWaTlvZC12SDFHbWYtaWJuQzZiLC5WSXBnSmQtWlZpOW9kLXZIMUdtZi1pYm5DNmItZ2s2U01ke3RleHQtZGVjb3JhdGlvbjpub25lfS5WSXBnSmQtWlZpOW9kLXZIMUdtZi1pYm5DNmIgZGl2LC5WSXBnSmQtWlZpOW9kLXZIMUdtZi1pYm5DNmI6bGluayBkaXYsLlZJcGdKZC1aVmk5b2QtdkgxR21mLWlibkM2Yjp2aXNpdGVkIGRpdiwuVklwZ0pkLVpWaTlvZC12SDFHbWYtaWJuQzZiOmFjdGl2ZSBkaXZ7Y29sb3I6IzAwQztiYWNrZ3JvdW5kOiNGRkZ9LlZJcGdKZC1aVmk5b2QtdkgxR21mLWlibkM2Yjpob3ZlciBkaXZ7Y29sb3I6I0ZGRjtiYWNrZ3JvdW5kOiMzNkN9LlZJcGdKZC1aVmk5b2QtdkgxR21mLWlibkM2Yi1nazZTTWQgZGl2LC5WSXBnSmQtWlZpOW9kLXZIMUdtZi1pYm5DNmItZ2s2U01kOmxpbmsgZGl2LC5WSXBnSmQtWlZpOW9kLXZIMUdtZi1pYm5DNmItZ2s2U01kOnZpc2l0ZWQgZGl2LC5WSXBnSmQtWlZpOW9kLXZIMUdtZi1pYm5DNmItZ2s2U01kOmhvdmVyIGRpdiwuVklwZ0pkLVpWaTlvZC12SDFHbWYtaWJuQzZiLWdrNlNNZDphY3RpdmUgZGl2e2NvbG9yOiMwMDA7Zm9udC13ZWlnaHQ6Ym9sZH0uVklwZ0pkLVpWaTlvZC1sOXhrdGZ7YmFja2dyb3VuZC1jb2xvcjojRkZGO292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjhweDtib3JkZXI6bm9uZTtib3JkZXItcmFkaXVzOjEwcHh9LlZJcGdKZC1aVmk5b2QtbDl4a3RmLU9FVm1jZHtiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7Ym9yZGVyOjFweCBzb2xpZCAjNkI5MERBO2JveC1zaGFkb3c6MCAzcHggOHB4IDJweCAjOTk5O2JvcmRlci1yYWRpdXM6OHB4fS5WSXBnSmQtWlZpOW9kLWw5eGt0ZiBpbWd7Ym9yZGVyOm5vbmV9LlZJcGdKZC1aVmk5b2QtbDl4a3RmLWZtY21Te21hcmdpbi10b3A6NnB4fS5WSXBnSmQtWlZpOW9kLWw5eGt0Zi1WZ3dKbGN7bWFyZ2luLXRvcDo2cHg7d2hpdGUtc3BhY2U6bm93cmFwfS5WSXBnSmQtWlZpOW9kLWw5eGt0Zi1WZ3dKbGMgKnt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LlZJcGdKZC1aVmk5b2QtbDl4a3RmLVZnd0psYyAuRFVHSmlle2JhY2tncm91bmQtaW1hZ2U6dXJsKGh0dHBzOi8vd3d3Jmdvb2dsZS5jb20vaW1hZ2VzL3ppcHB5X21pbnVzX3NtLmdpZil9LlZJcGdKZC1aVmk5b2QtbDl4a3RmLVZnd0psYyAuVGR5VERle2JhY2tncm91bmQtaW1hZ2U6dXJsKGh0dHBzOi8vd3d3Jmdvb2dsZS5jb20vaW1hZ2VzL3ppcHB5X3BsdXNfc20uZ2lmKX0uVklwZ0pkLVpWaTlvZC1sOXhrdGYtVmd3SmxjIHNwYW57Y29sb3I6IzAwQzt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO2N1cnNvcjpwb2ludGVyO21hcmdpbjowIDRweH0uVklwZ0pkLVpWaTlvZC1sOXhrdGYtSTlHTHB7bWFyZ2luOjZweCAwIDB9LlZJcGdKZC1aVmk5b2QtbDl4a3RmLUk5R0xwIGZvcm17bWFyZ2luOjB9LlZJcGdKZC1aVmk5b2QtbDl4a3RmLUk5R0xwIGZvcm0gdGV4dGFyZWF7bWFyZ2luLWJvdHRvbTo0cHg7d2lkdGg6MTAwJX0uVklwZ0pkLVpWaTlvZC1sOXhrdGYteWVQZTVje21hcmdpbjo2cHggMCA0cHh9LlZJcGdKZC1aVmk5b2QtYVoyd0VlLXdPSE15Znt6LWluZGV4OjEwMDA7cG9zaXRpb246Zml4ZWQ7dHJhbnNpdGlvbi1kZWxheTouNnM7bGVmdDotMTAwMHB4O3RvcDotMTAwMHB4fS5WSXBnSmQtWlZpOW9kLWFaMndFZS13T0hNeWYtdGk2aEdje3RyYW5zaXRpb24tZGVsYXk6MHM7bGVmdDotMTRweDt0b3A6LTE0cHh9LlZJcGdKZC1aVmk5b2QtYVoyd0VlLU9paUNPe2Rpc3BsYXk6LW1vei1ib3g7ZGlzcGxheTpmbGV4Oy1tb3otYm94LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7LW1vei1ib3gtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjt3aWR0aDoxMDRweDtoZWlnaHQ6MTA0cHg7Ym9yZGVyLXJhZGl1czo1MHB4O2JhY2tncm91bmQ6I0ZGRiB1cmwoaHR0cHM6Ly93d3cuZ3N0YXRpYy5jb20vaW1hZ2VzL2JyYW5kaW5nL3Byb2R1Y3QvMngvdHJhbnNsYXRlXzI0ZHAucG5nKSA1MCUgNTAlIG5vLXJlcGVhdDt0cmFuc2l0aW9uOmFsbCAuNnMgZWFzZS1pbi1vdXQ7dHJhbnNmb3JtOnNjYWxlKC40KTtvcGFjaXR5OjB9LlZJcGdKZC1aVmk5b2QtYVoyd0VlLU9paUNPLXRpNmhHY3t0cmFuc2Zvcm06c2NhbGUoLjUpO29wYWNpdHk6MX0uVklwZ0pkLVpWaTlvZC1hWjJ3RWV7bWFyZ2luOjJweCAwIDAgMnB4O2FuaW1hdGlvbjpzcGlubmVyLXJvdGF0b3IgMS40cyBsaW5lYXIgaW5maW5pdGV9QGtleWZyYW1lcyBzcGlubmVyLXJvdGF0b3J7MCV7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKX0xMDAle3RyYW5zZm9ybTpyb3RhdGUoMjcwZGVnKX19LlZJcGdKZC1aVmk5b2QtYVoyd0VlLUp0NWNLe3N0cm9rZS1kYXNoYXJyYXk6MTg3O3N0cm9rZS1kYXNob2Zmc2V0OjA7c3Ryb2tlOiM0Mjg1RjQ7dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXI7YW5pbWF0aW9uOnNwaW5uZXItZGFzaCAxLjRzIGVhc2UtaW4tb3V0IGluZmluaXRlfUBrZXlmcmFtZXMgc3Bpbm5lci1kYXNoezAle3N0cm9rZS1kYXNob2Zmc2V0OjE4N301MCV7c3Ryb2tlLWRhc2hvZmZzZXQ6NDYuNzU7dHJhbnNmb3JtOnJvdGF0ZSgxMzVkZWcpfTEwMCV7c3Ryb2tlLWRhc2hvZmZzZXQ6MTg3O3RyYW5zZm9ybTpyb3RhdGUoNDUwZGVnKX19LlZJcGdKZC15QVdORWItTDdsYmtiIGh0bWwsLlZJcGdKZC15QVdORWItTDdsYmtiIGJvZHksLlZJcGdKZC15QVdORWItTDdsYmtiIGRpdiwuVklwZ0pkLXlBV05FYi1MN2xia2Igc3BhbiwuVklwZ0pkLXlBV05FYi1MN2xia2IgaWZyYW1lLC5WSXBnSmQteUFXTkViLUw3bGJrYiBoMSwuVklwZ0pkLXlBV05FYi1MN2xia2IgaDIsLlZJcGdKZC15QVdORWItTDdsYmtiIGgzLC5WSXBnSmQteUFXTkViLUw3bGJrYiBoNCwuVklwZ0pkLXlBV05FYi1MN2xia2IgaDUsLlZJcGdKZC15QVdORWItTDdsYmtiIGg2LC5WSXBnSmQteUFXTkViLUw3bGJrYiBwLC5WSXBnSmQteUFXTkViLUw3bGJrYiBhLC5WSXBnSmQteUFXTkViLUw3bGJrYiBpbWcsLlZJcGdKZC15QVdORWItTDdsYmtiIG9sLC5WSXBnSmQteUFXTkViLUw3bGJrYiB1bCwuVklwZ0pkLXlBV05FYi1MN2xia2IgbGksLlZJcGdKZC15QVdORWItTDdsYmtiIHRhYmxlLC5WSXBnSmQteUFXTkViLUw3bGJrYiBmb3JtLC5WSXBnSmQteUFXTkViLUw3bGJrYiB0Ym9keSwuVklwZ0pkLXlBV05FYi1MN2xia2IgdHIsLlZJcGdKZC15QVdORWItTDdsYmtiIHRke2FsbDp1bnNldDtmb250LXNpemU6MTAwJTtsaW5lLWhlaWdodDpub3JtYWx9LlZJcGdKZC15QVdORWItTDdsYmtiIG9sLC5WSXBnSmQteUFXTkViLUw3bGJrYiB1bHtsaXN0LXN0eWxlOm5vbmV9LlZJcGdKZC15QVdORWItTDdsYmtiIHRhYmxle2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTtib3JkZXItc3BhY2luZzowfS5WSXBnSmQteUFXTkViLUw3bGJrYiBjYXB0aW9uLC5WSXBnSmQteUFXTkViLUw3bGJrYiB0aCwuVklwZ0pkLXlBV05FYi1MN2xia2IgdGR7dGV4dC1hbGlnbjpsZWZ0O2ZvbnQtd2VpZ2h0Om5vcm1hbH0uVklwZ0pkLXlBV05FYi1MN2xia2IgaW5wdXQ6Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9ZGl2Pi5WSXBnSmQteUFXTkViLUw3bGJrYntwYWRkaW5nOjEwcHggMTRweH0uVklwZ0pkLXlBV05FYi1MN2xia2J7Y29sb3I6IzIyMjtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjZWVlO2JveC1zaGFkb3c6MCA0cHggMTZweCByZ2JhKDAsMCwwLC4yKTstbW96LWJveC1zaGFkb3c6MCA0cHggMTZweCByZ2JhKDAsMCwwLC4yKTstd2Via2l0LWJveC1zaGFkb3c6MCA0cHggMTZweCByZ2JhKDAsMCwwLC4yKTtkaXNwbGF5Om5vbmU7Zm9udC1mYW1pbHk6YXJpYWw7Zm9udC1zaXplOjEwcHQ7d2lkdGg6NDIwcHg7cGFkZGluZzoxMnB4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDB9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLW5WTWZjZC1mbWNtUywuVklwZ0pkLXlBV05FYi15QVdORWItVnkyQXFjLXBiVFRZZXtjbGVhcjpib3RoO2ZvbnQtc2l6ZToxMHB0O3Bvc2l0aW9uOnJlbGF0aXZlO3RleHQtYWxpZ246anVzdGlmeTt3aWR0aDoxMDAlfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1yNG5rZXtjb2xvcjojOTk5O2ZvbnQtZmFtaWx5OmFyaWFsLHNhbnMtc2VyaWY7bWFyZ2luOjRweCAwO3RleHQtYWxpZ246bGVmdH0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItVHZEOVBjLUxnYnNTZXtkaXNwbGF5Om5vbmV9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLWw0ZUhYe2Zsb2F0OmxlZnQ7bWFyZ2luOjB9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLVowQXJxZi1QTERiYmZ7ZGlzcGxheTppbmxpbmUtYmxvY2t9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLWZ3NDJaZS1aMEFycWYtaGFBY2xme2Rpc3BsYXk6bm9uZTt3aWR0aDoxMDAlfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1aMEFycWYtSDl0RHR7bWFyZ2luLXRvcDoyMHB4fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MSzV5dXtmbG9hdDpsZWZ0fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1xd1U4TWV7ZmxvYXQ6cmlnaHR9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLWNHTUkyYnttaW4taGVpZ2h0OjE1cHg7cG9zaXRpb246cmVsYXRpdmU7aGVpZ2h0OjElfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1qT2ZrTWItTmUzc0Zme2JhY2tncm91bmQ6LW1zLWxpbmVhci1ncmFkaWVudCh0b3AsIzI5OTEwZCAwLCMyMGFmMGUgMTAwJSk7YmFja2dyb3VuZDojMjk5MTBkO2JvcmRlci1yYWRpdXM6NHB4Oy1tb3otYm9yZGVyLXJhZGl1czo0cHg7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjRweDtib3gtc2hhZG93Omluc2V0IDAgMnB4IDJweCAjMWU2NjA5Oy1tb3otYm94LXNoYWRvdzppbnNldCAwIDJweCAycHggIzFlNjYwOTstd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMCAycHggMnB4ICMxZTY2MDk7Y29sb3I6d2hpdGU7Zm9udC1zaXplOjlwdDtmb250LXdlaWdodDpib2xkZXI7bWFyZ2luLXRvcDoxMnB4O3BhZGRpbmc6NnB4O3RleHQtc2hhZG93OjFweCAxcHggMXB4ICMxZTY2MDl9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLVowQXJxZi1oU1JHUGR7Y29sb3I6IzE1YztjdXJzb3I6cG9pbnRlcjtmb250LWZhbWlseTphcmlhbDtmb250LXNpemU6MTFweDttYXJnaW4tcmlnaHQ6MTVweDt0ZXh0LWRlY29yYXRpb246bm9uZX0uVklwZ0pkLXlBV05FYi1MN2xia2I+dGV4dGFyZWF7Zm9udC1mYW1pbHk6YXJpYWw7cmVzaXplOnZlcnRpY2FsO3dpZHRoOjEwMCU7bWFyZ2luLWJvdHRvbToxMHB4O2JvcmRlci1yYWRpdXM6MXB4O2JvcmRlcjoxcHggc29saWQgI2Q5ZDlkOTtib3JkZXItdG9wOjFweCBzb2xpZCBzaWx2ZXI7Zm9udC1zaXplOjEzcHg7aGVpZ2h0OmF1dG87b3ZlcmZsb3cteTphdXRvO3BhZGRpbmc6MXB4fS5WSXBnSmQteUFXTkViLUw3bGJrYiB0ZXh0YXJlYTpmb2N1c3tib3gtc2hhZG93Omluc2V0IDAgMXB4IDJweCByZ2JhKDAsMCwwLC4zKTtib3JkZXI6MXB4IHNvbGlkICM0ZDkwZmU7b3V0bGluZTpub25lfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1aMEFycWYtSWJFMFN7bWFyZ2luLXJpZ2h0OjEwcHh9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcHttaW4taGVpZ2h0OjI1cHg7dmVydGljYWwtYWxpZ246bWlkZGxlO3BhZGRpbmctdG9wOjhweH0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcHttYXJnaW4tYm90dG9tOjVweDttYXJnaW4tYm90dG9tOjB9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXR7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWluLXdpZHRoOjU0cHg7Km1pbi13aWR0aDo3MHB4O2JvcmRlcjoxcHggc29saWQgI2RjZGNkYztib3JkZXI6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjEpO3RleHQtYWxpZ246Y2VudGVyO2NvbG9yOiM0NDQ7Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6Ym9sZDtoZWlnaHQ6MjdweDtvdXRsaW5lOjA7cGFkZGluZzowIDhweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bGluZS1oZWlnaHQ6MjdweDttYXJnaW46MCAxNnB4IDAgMDtib3gtc2hhZG93OjAgMXB4IDJweCByZ2JhKDAsMCwwLC4xKTstbW96LWJveC1zaGFkb3c6MCAxcHggMnB4IHJnYmEoMCwwLDAsLjEpOy13ZWJraXQtYm94LXNoYWRvdzowIDFweCAycHggcmdiYSgwLDAsMCwuMSk7Ym9yZGVyLXJhZGl1czoycHg7dHJhbnNpdGlvbjphbGwgLjIxOHM7YmFja2dyb3VuZC1jb2xvcjojZjVmNWY1O2JhY2tncm91bmQtaW1hZ2U6LW8tbGluZWFyLWdyYWRpZW50KHRvcCwjZjVmNWY1LCNmMWYxZjEpOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7Y3Vyc29yOmRlZmF1bHR9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXQ6aG92ZXJ7Ym9yZGVyOjFweCBzb2xpZCAjYzZjNmM2O2NvbG9yOiMyMjI7dHJhbnNpdGlvbjphbGwgMHM7YmFja2dyb3VuZC1jb2xvcjojZjhmOGY4O2JhY2tncm91bmQtaW1hZ2U6LW8tbGluZWFyLWdyYWRpZW50KHRvcCwjZjhmOGY4LCNmMWYxZjEpfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MNE5uNWUtSTlHTHAgLlZJcGdKZC15QVdORWItWjBBcnFmLUk5R0xwIGlucHV0OmFjdGl2ZXtib3JkZXI6MXB4IHNvbGlkICNjNmM2YzY7Y29sb3I6IzMzMztiYWNrZ3JvdW5kLWNvbG9yOiNmNmY2ZjY7YmFja2dyb3VuZC1pbWFnZTotby1saW5lYXItZ3JhZGllbnQodG9wLCNmNmY2ZjYsI2YxZjFmMSl9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXQ6Zm9jdXMgLlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXQuQUhtdXdlIC5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MNE5uNWUtSTlHTHAgLlZJcGdKZC15QVdORWItWjBBcnFmLUk5R0xwIGlucHV0OmFjdGl2ZSwuVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dDpmb2N1czphY3RpdmV7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggcmdiYSgyNTUsMjU1LDI1NSwuNSk7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCByZ2JhKDI1NSwyNTUsMjU1LC41KTstbW96LWJveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjUpfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MNE5uNWUtSTlHTHAgLlZJcGdKZC15QVdORWItWjBBcnFmLUk5R0xwIGlucHV0OmZvY3VzLC5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MNE5uNWUtSTlHTHAgLlZJcGdKZC15QVdORWItWjBBcnFmLUk5R0xwIGlucHV0LkFIbXV3ZXtvdXRsaW5lOm5vbmU7Ym9yZGVyOjFweCBzb2xpZCAjNGQ5MGZlO3otaW5kZXg6NCFpbXBvcnRhbnR9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXQuZ2s2U01ke2JhY2tncm91bmQtY29sb3I6I2VlZTtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudCh0b3AsI2VlZSwjZTBlMGUwKTtib3gtc2hhZG93Omluc2V0IDAgMXB4IDJweCByZ2JhKDAsMCwwLC4xKTtib3JkZXI6MXB4IHNvbGlkICNjY2M7Y29sb3I6IzMzM30uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dCAuVklwZ0pkLXlBV05FYi1aMEFycWYtc0ZlQnFme2NvbG9yOndoaXRlO2JvcmRlci1jb2xvcjojMzA3OWVkO2JhY2tncm91bmQtY29sb3I6IzRkOTBmZTtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudCh0b3AsIzRkOTBmZSwjNDc4N2VkKX0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dCAuVklwZ0pkLXlBV05FYi1aMEFycWYtc0ZlQnFmOmhvdmVyIC5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MNE5uNWUtSTlHTHAgLlZJcGdKZC15QVdORWItWjBBcnFmLUk5R0xwIGlucHV0IC5WSXBnSmQteUFXTkViLVowQXJxZi1zRmVCcWY6Zm9jdXMsLlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXQgLlZJcGdKZC15QVdORWItWjBBcnFmLXNGZUJxZi5BSG11d2UgLlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXQgLlZJcGdKZC15QVdORWItWjBBcnFmLXNGZUJxZjphY3RpdmV7Ym9yZGVyLWNvbG9yOiMzMDc5ZWQ7YmFja2dyb3VuZC1jb2xvcjojMzU3YWU4O2JhY2tncm91bmQtaW1hZ2U6LW8tbGluZWFyLWdyYWRpZW50KHRvcCwjNGQ5MGZlLCMzNTdhZTgpfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MNE5uNWUtSTlHTHAgLlZJcGdKZC15QVdORWItWjBBcnFmLUk5R0xwIGlucHV0IC5WSXBnSmQteUFXTkViLVowQXJxZi1zRmVCcWY6aG92ZXJ7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZiwwIDFweCAxcHggcmdiYSgwLDAsMCwuMSk7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjZmZmLDAgMXB4IDFweCByZ2JhKDAsMCwwLC4xKTstbW96LWJveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmYsMCAxcHggMXB4IHJnYmEoMCwwLDAsLjEpfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MNE5uNWUtSTlHTHAgLlZJcGdKZC15QVdORWItWjBBcnFmLUk5R0xwIGlucHV0OmZvY3VzLC5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MNE5uNWUtSTlHTHAgLlZJcGdKZC15QVdORWItWjBBcnFmLUk5R0xwIGlucHV0LkFIbXV3ZSwuVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dDphY3RpdmUsLlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXQ6aG92ZXIsLlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXQgLlZJcGdKZC15QVdORWItWjBBcnFmLXNGZUJxZjpmb2N1cywuVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dCAuVklwZ0pkLXlBV05FYi1aMEFycWYtc0ZlQnFmLkFIbXV3ZSwuVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dCAuVklwZ0pkLXlBV05FYi1aMEFycWYtc0ZlQnFmOmFjdGl2ZSwuVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dCAuVklwZ0pkLXlBV05FYi1aMEFycWYtc0ZlQnFmOmhvdmVye2JvcmRlci1jb2xvcjojMzA3OWVkfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1tcnhQZ2V7Y29sb3I6Izk5OTtmb250LWZhbWlseTphcmlhbCxzYW5zLXNlcmlmfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1JRmRLeWQtVzB2Sm8tZm1jbVN7Y29sb3I6Izk5OTtmb250LXNpemU6MTFweDtmb250LWZhbWlseTphcmlhbCxzYW5zLXNlcmlmO21hcmdpbjoxNXB4IDAgNXB4fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1JRmRLeWQtdTBwam9lLWZtY21Te2NvbG9yOiM4MDA7ZGlzcGxheTpub25lO2ZvbnQtc2l6ZTo5cHR9LlZJcGdKZC15QVdORWItVklwZ0pkLWZtY21TLXNuNTRRe2JhY2tncm91bmQtY29sb3I6I2M5ZDdmMTtib3gtc2hhZG93OjJweCAycHggNHB4ICM5OWE7Ym94LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94Oy1tb3otYm94LXNpemluZzpib3JkZXItYm94O3Bvc2l0aW9uOnJlbGF0aXZlfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1JRmRLeWQteGwwN09iIC5WSXBnSmQteUFXTkViLVZJcGdKZC14bDA3T2J7YmFja2dyb3VuZDojZmZmO2JvcmRlcjoxcHggc29saWQgI2RkZDtib3gtc2hhZG93OjAgMnB4IDRweCAjOTlhO21pbi13aWR0aDowO291dGxpbmU6bm9uZTtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoyMDAwfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1JRmRLeWQteGwwN09iIC5WSXBnSmQteUFXTkViLVZJcGdKZC1qN0xGbGJ7Y3Vyc29yOnBvaW50ZXI7cGFkZGluZzoycHggNXB4IDVweDttYXJnaW4tcmlnaHQ6MDtib3JkZXItc3R5bGU6bm9uZX0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItSUZkS3lkLXhsMDdPYiAuVklwZ0pkLXlBV05FYi1WSXBnSmQtajdMRmxiOmhvdmVye2JhY2tncm91bmQ6I2RkZH0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItSUZkS3lkLXhsMDdPYiAuVklwZ0pkLXlBV05FYi1WSXBnSmQtajdMRmxiIGgxe2ZvbnQtc2l6ZToxMDAlO2ZvbnQtd2VpZ2h0OmJvbGQ7bWFyZ2luOjRweCAwfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1JRmRLeWQteGwwN09iIC5WSXBnSmQteUFXTkViLVZJcGdKZC1qN0xGbGIgc3Ryb25ne2NvbG9yOiMzNDVhYWR9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLVZJcGdKZC1lS201RmMtaEZzYm97dGV4dC1hbGlnbjpyaWdodDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO2xlZnQ6YXV0b30uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItVklwZ0pkLWo3TEZsYi1TSXNyVGQgLlZJcGdKZC15QVdORWItVklwZ0pkLWVLbTVGYy1oRnNib3t0ZXh0LWFsaWduOmxlZnQ7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3JpZ2h0OmF1dG99LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLXlBV05FYi1WeTJBcWMtZm1jbVMsLlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLVRWTHc5Yy1wcEhscmYtc241NFF7YmFja2dyb3VuZC1jb2xvcjojZjFlYTAwO2JvcmRlci1yYWRpdXM6NHB4Oy13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7LW1vei1ib3JkZXItcmFkaXVzOjRweDtib3gtc2hhZG93OnJnYmEoMCwwLDAsLjUpIDNweCAzcHggNHB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjojZjFlYTAwO2N1cnNvcjpwb2ludGVyO21hcmdpbjotMnB4IC0ycHggLTJweCAtM3B4O3BhZGRpbmc6MnB4IDJweCAycHggM3B4O3Bvc2l0aW9uOnJlbGF0aXZlfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1UVkx3OWMtcHBIbHJmLXNuNTRRe2NvbG9yOiMyMjJ9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLXlBV05FYi1WeTJBcWMtcGJUVFlle2NvbG9yOndoaXRlO3Bvc2l0aW9uOmFic29sdXRlIWltcG9ydGFudH0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItVFZMdzljLXBwSGxyZiwuVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItVFZMdzljLXBwSGxyZiAuVklwZ0pkLXlBV05FYi1UVkx3OWMtcHBIbHJmLXNuNTRRe2JhY2tncm91bmQtY29sb3I6I2M5ZDdmMTtib3JkZXItcmFkaXVzOjRweCA0cHggMCAwOy13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHggNHB4IDAgMDstbW96LWJvcmRlci1yYWRpdXM6NHB4IDRweCAwIDA7Ym94LXNoYWRvdzpyZ2JhKDAsMCwwLC41KSAzcHggM3B4IDRweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Y3Vyc29yOnBvaW50ZXI7bWFyZ2luOi0ycHggLTJweCAtMnB4IC0zcHg7cGFkZGluZzoycHggMnB4IDNweCAzcHg7cG9zaXRpb246cmVsYXRpdmV9LlZJcGdKZC15QVdORWItTDdsYmtiIHNwYW46Zm9jdXN7b3V0bGluZTpub25lfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1UVkx3OWMtRHlWREF7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXI6MXB4IHNvbGlkICM0ZDkwZmU7Ym9yZGVyLXJhZGl1czowOy13ZWJraXQtYm9yZGVyLXJhZGl1czowOy1tb3otYm9yZGVyLXJhZGl1czowO21hcmdpbjotMnB4O3BhZGRpbmc6MXB4fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi15QVdORWItVFZMdzljLXNuNTRRLUx6WDNlZntib3JkZXItbGVmdDoycHggc29saWQgcmVkO21hcmdpbi1sZWZ0Oi0ycHh9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLXlBV05FYi1UVkx3OWMtc241NFEtWUlBaUlie2JvcmRlci1yaWdodDoycHggc29saWQgcmVkO21hcmdpbi1yaWdodDotMnB4fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1JRmRLeWQtWVBxamJme3BhZGRpbmc6MnB4fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1JRmRLeWQtWVBxamJmLWZtY21Te2ZvbnQtc2l6ZToxMXB4O3BhZGRpbmc6MnB4IDJweCAzcHg7bWFyZ2luOjA7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMzMzM7Ym9yZGVyOjFweCBzb2xpZCAjZDlkOWQ5O2JvcmRlci10b3A6MXB4IHNvbGlkICNjMGMwYzA7ZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246dG9wO2hlaWdodDoyMXB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LWJvcmRlci1yYWRpdXM6MXB4fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1JRmRLeWQtWVBxamJmLWZtY21TOmhvdmVye2JvcmRlcjoxcHggc29saWQgI2I5YjliOTtib3JkZXItdG9wOjFweCBzb2xpZCAjYTBhMGEwO2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMnB4IHJnYmEoMCwwLDAsLjEpfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1JRmRLeWQtWVBxamJmLWZtY21TOmZvY3Vze2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMnB4IHJnYmEoMCwwLDAsLjMpO291dGxpbmU6bm9uZTtib3JkZXI6MXB4IHNvbGlkICM0ZDkwZmV9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUlGZEt5ZC1ZUHFqYmYtc0ZlQnFme2ZvbnQtc2l6ZToxMXB4O3BhZGRpbmc6MnB4IDZweCAzcHg7bWFyZ2luOjAgMCAwIDJweDtoZWlnaHQ6MjFweH0uVklwZ0pkLXlBV05FYi1MN2xia2I+ZGl2e2Rpc3BsYXk6LW1vei1ib3g7ZGlzcGxheTpmbGV4Oy1tb3otYm94LW9yaWVudDp2ZXJ0aWNhbDstbW96LWJveC1kaXJlY3Rpb246bm9ybWFsO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmb250LWZhbWlseToiR29vZ2xlIFNhbnMiLEFyaWFsLHNhbnMtc2VyaWZ9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC1VZDdmcntkaXNwbGF5Oi1tb3otYm94O2Rpc3BsYXk6ZmxleDstbW96LWJveC1hbGlnbjplbmQ7YWxpZ24taXRlbXM6ZW5kO21hcmdpbjoxNHB4fS5WSXBnSmQteUFXTkViLWh2aGdOZCAuVklwZ0pkLXlBV05FYi1odmhnTmQtSXVpeldjLVNJc3JUZHttYXJnaW4tcmlnaHQ6MTRweDtjb2xvcjojNzQ3Nzc1O2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0uVklwZ0pkLXlBV05FYi1odmhnTmQgLlZJcGdKZC15QVdORWItaHZoZ05kLUl1aXpXYy1pM2pNOGN7bWFyZ2luLWxlZnQ6MTRweDtjb2xvcjojNzQ3Nzc1O2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0uVklwZ0pkLXlBV05FYi1odmhnTmQgLlZJcGdKZC15QVdORWItaHZoZ05kLWs3N0lpZnttYXJnaW46MCAxNnB4IDE2cHh9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC1heEFWMXt3aWR0aDphdXRvO2NvbG9yOiMxZjFmMWY7Zm9udC1zaXplOjE2cHg7dGV4dC1hbGlnbjppbml0aWFsfS5WSXBnSmQteUFXTkViLWh2aGdOZCAuVklwZ0pkLXlBV05FYi1odmhnTmQtYXhBVjEgLlZJcGdKZC15QVdORWItU0lzclRke3RleHQtYWxpZ246cmlnaHR9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC1ON0VxaWR7Ym9yZGVyLXJhZGl1czowIDAgMTJweCAxMnB4O21hcmdpbjowO2JhY2tncm91bmQ6I2YxZjRmOTtwb3NpdGlvbjpyZWxhdGl2ZTttaW4taGVpZ2h0OjUwcHh9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC1ON0VxaWQgLlZJcGdKZC15QVdORWItU0lzclRke3RleHQtYWxpZ246cmlnaHR9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC1ON0VxaWQtQjdJNE9ke2Rpc3BsYXk6LW1vei1ib3g7ZGlzcGxheTpmbGV4Oy1tb3otYm94LW9yaWVudDp2ZXJ0aWNhbDstbW96LWJveC1kaXJlY3Rpb246bm9ybWFsO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjt3aWR0aDo3NyU7cGFkZGluZzoxMnB4fS5WSXBnSmQteUFXTkViLWh2aGdOZCAuVklwZ0pkLXlBV05FYi1odmhnTmQtTjdFcWlkLUI3STRPZCAuVklwZ0pkLXlBV05FYi1TSXNyVGR7dGV4dC1hbGlnbjpyaWdodH0uVklwZ0pkLXlBV05FYi1odmhnTmQgLlZJcGdKZC15QVdORWItaHZoZ05kLVVUdWpDYntjb2xvcjojMWYxZjFmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0uVklwZ0pkLXlBV05FYi1odmhnTmQgLlZJcGdKZC15QVdORWItaHZoZ05kLU43RXFpZC1CN0k0T2QgLlZJcGdKZC15QVdORWItU0lzclRkIC5WSXBnSmQteUFXTkViLWh2aGdOZC1VVHVqQ2J7dGV4dC1hbGlnbjpyaWdodH0uVklwZ0pkLXlBV05FYi1odmhnTmQgLlZJcGdKZC15QVdORWItaHZoZ05kLWVPOW1LZXtjb2xvcjojNDQ0NzQ2O2ZvbnQtc2l6ZToxMnB4O3BhZGRpbmctdG9wOjRweH0uVklwZ0pkLXlBV05FYi1odmhnTmQgLlZJcGdKZC15QVdORWItaHZoZ05kLU43RXFpZC1CN0k0T2QgLlZJcGdKZC15QVdORWItU0lzclRkIC5WSXBnSmQteUFXTkViLWh2aGdOZC1lTzltS2V7dGV4dC1hbGlnbjpyaWdodH0uVklwZ0pkLXlBV05FYi1odmhnTmQgLlZJcGdKZC15QVdORWItaHZoZ05kLXhnb3Y1e3Bvc2l0aW9uOmFic29sdXRlO3RvcDoxMHB4O3JpZ2h0OjVweH0uVklwZ0pkLXlBV05FYi1odmhnTmQgLlZJcGdKZC15QVdORWItaHZoZ05kLXhnb3Y1IC5WSXBnSmQteUFXTkViLVNJc3JUZHtsZWZ0OjVweDtyaWdodDphdXRvfS5WSXBnSmQteUFXTkViLWh2aGdOZCAuVklwZ0pkLXlBV05FYi1odmhnTmQtVEhJNlZie2ZpbGw6IzBiNTdkMH0uVklwZ0pkLXlBV05FYi1odmhnTmQgLlZJcGdKZC15QVdORWItaHZoZ05kLWJnbTZzZnttYXJnaW46LTRweCAycHggMCAwO3BhZGRpbmc6MnB4IDAgMDt3aWR0aDo0OHB4O2hlaWdodDo0OHB4O2JvcmRlcjpub25lO2JvcmRlci1yYWRpdXM6MjRweDtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kOm5vbmV9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC1iZ202c2Y6aG92ZXJ7YmFja2dyb3VuZDojZThlYmVjfS5WSXBnSmQteUFXTkViLWh2aGdOZCAuVklwZ0pkLXlBV05FYi1odmhnTmQtYVhZVGNle2Rpc3BsYXk6bm9uZX1zZW50aW5lbHt9"}},"time_used":22,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":22,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"fonts.googleapis.com/css?family=Henny+Penny\u0026display=swap","fqdn":"fonts.googleapis.com","domain":"fonts.googleapis.com","tld":"googleapis.com"},"ip":{"addr":"142.250.74.10","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://clear-vault.online/","date":"2025-08-07T20:48:21.199Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"upload.video.google.com","organization":""},"issuer":{"commonName":"WR2","organization":"Google Trust Services"},"validity":{"start":"Mon, 07 Jul 2025 08:35:11 GMT","end":"Mon, 29 Sep 2025 08:35:10 GMT"},"fingerprint":{"sha1":"DF:A1:DB:1F:BC:5E:31:D7:F8:FE:26:E3:B9:B3:02:98:B1:C8:50:EC","sha256":"A2:57:20:B6:AE:46:89:B9:39:C7:57:9B:1E:43:96:E3:5A:BC:7E:3F:1D:18:10:34:CC:53:3D:DB:78:4E:5C:21"}}},"request":{"raw":"GET /css?family=Henny+Penny\u0026display=swap HTTP/1.1\r\nHost: fonts.googleapis.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:134.0) Gecko/20100101 Firefox/134.0\r\nAccept: text/css,*/*;q=0.1\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate, br\r\nDNT: 1\r\nConnection: keep-alive\r\nReferer: https://clear-vault.online/\r\nSec-Fetch-Dest: style\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 OK\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: Thu, 07 Aug 2025 20:48:21 GMT\r\ndate: Thu, 07 Aug 2025 20:48:21 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":"OK","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":416,"size_decoded":0,"mime_type":"text/css; charset=utf-8","magic":"ASCII text","md5":"0c8b6f9c5b8a07c93b51a5c9385a296e","sha1":"a31d0cff745983d837472d46ccb33696b8540259","sha256":"f98314931fa9375e2b7650b6d41b8b0c166ad33ae318671d97676583f9a297f8","sha512":"663b8f986c2e319552a8d5d9e135d20ba7c00cde467be363cc5c99f570b6fe29df232d39fd67d276fc580d9628621a3b5b746fe52620a90236f849b4f04ec816","ssdeep":"","tlshash":"a2e02b41083ab904e6a31cc111cdba32df0ea1553445a965a6fd18d8bc56e665392b1e","first_seen":"2025-04-20T11:18:48.550513Z","last_seen":"2025-09-07T20:06:25.078151Z","times_seen":54,"resource_available":false,"data":"LyogbGF0aW4gKi8KQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdIZW5ueSBQZW5ueSc7CiAgZm9udC1zdHlsZTogbm9ybWFsOwogIGZvbnQtd2VpZ2h0OiA0MDA7CiAgZm9udC1kaXNwbGF5OiBzd2FwOwogIHNyYzogdXJsKGh0dHBzOi8vZm9udHMuZ3N0YXRpYy5jb20vcy9oZW5ueXBlbm55L3YxNy93WEt2RTNVWm9va3pzeHpfa2pHU2ZQUXR2WEkud29mZjIpIGZvcm1hdCgnd29mZjInKTsKICB1bmljb2RlLXJhbmdlOiBVKzAwMDAtMDBGRiwgVSswMTMxLCBVKzAxNTItMDE1MywgVSswMkJCLTAyQkMsIFUrMDJDNiwgVSswMkRBLCBVKzAyREMsIFUrMDMwNCwgVSswMzA4LCBVKzAzMjksIFUrMjAwMC0yMDZGLCBVKzIwQUMsIFUrMjEyMiwgVSsyMTkxLCBVKzIxOTMsIFUrMjIxMiwgVSsyMjE1LCBVK0ZFRkYsIFUrRkZGRDsKfQo="}},"time_used":218,"timings":{"blocked":84,"dns":0,"connect":8,"send":0,"wait":21,"receive":0,"ssl":102},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"clear-vault.online/myaccount/assets/fonts/Roboto-Regular.woff2","fqdn":"clear-vault.online","domain":"clear-vault.online","tld":"online"},"ip":{"addr":"163.61.188.222","port":443,"asn":0,"as":"","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://clear-vault.online/","date":"2025-08-07T20:48:21.722Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.clear-vault.online","organization":""},"issuer":{"commonName":"R10","organization":"Let's Encrypt"},"validity":{"start":"Mon, 16 Jun 2025 11:19:04 GMT","end":"Sun, 14 Sep 2025 11:19:03 GMT"},"fingerprint":{"sha1":"B5:E4:FF:81:2F:18:5B:84:17:4F:FD:F3:B1:30:00:31:3C:9C:0B:6F","sha256":"D8:BC:E6:FB:32:84:D6:43:47:2F:20:BA:56:C3:6C:DA:94:89:5F:DD:A3:3B:02:B9:36:2B:50:1E:79:03:E9:D6"}}},"request":{"raw":"GET /myaccount/assets/fonts/Roboto-Regular.woff2 HTTP/1.1\r\nHost: clear-vault.online\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.5\r\nAccept-Encoding: identity\r\nDNT: 1\r\nConnection: keep-alive\r\nReferer: https://clear-vault.online/myaccount/assets/css/dashlite.css?ver=2.4.0\r\nCookie: PHPSESSID=1f922d27e0c65bdcb87ee1a396055a92\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/3 200 OK\r\ncache-control: public, max-age=604800\r\nexpires: Thu, 14 Aug 2025 20:48:21 GMT\r\ncontent-type: font/woff2\r\nlast-modified: Thu, 11 May 2023 18:14:15 GMT\r\naccept-ranges: bytes\r\ncontent-length: 65916\r\ndate: Thu, 07 Aug 2025 20:48:21 GMT\r\nserver: LiteSpeed\r\nstrict-transport-security: max-age=16070400;\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","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":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":65916,"size_decoded":0,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 65916, version 1.0","md5":"9feb0110b6dff9ee2b9ebd17f7a1aee6","sha1":"90bbe308a02d7cda492e3beb1a6091809b8f35c8","sha256":"8cef08634dc57d6519717c5a99a9e502bdc96586fe64770520a4820b0b089920","sha512":"e5b4c7643a1e2f3c134d2a0a4e08922d01eedb5cf7f463e885d58167f438cb1745d16aca2e455733f59ac5b63d85d4a34efb37d86281fb51273569a3e35d7085","ssdeep":"1536:nAwBjS40rROWAAffkRf+aFDExB8+m+bHvYc3uezUAAxmn:AQh0ymaFDypmcHvhumUAA0n","tlshash":"0f5302d162117d6596ed003a427b7696d800df22f3baf2698c7fb9d3e2689c603c25a0","first_seen":"2023-04-07T21:58:55Z","last_seen":"2026-08-11T16:18:54.695282Z","times_seen":5463,"resource_available":false,"data":"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"}},"time_used":109,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":98,"receive":11,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"clear-vault.online/myaccount/scss/sweetalert.css","fqdn":"clear-vault.online","domain":"clear-vault.online","tld":"online"},"ip":{"addr":"163.61.188.222","port":443,"asn":0,"as":"","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://clear-vault.online/","date":"2025-08-07T20:48:21.185Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.clear-vault.online","organization":""},"issuer":{"commonName":"R10","organization":"Let's Encrypt"},"validity":{"start":"Mon, 16 Jun 2025 11:19:04 GMT","end":"Sun, 14 Sep 2025 11:19:03 GMT"},"fingerprint":{"sha1":"B5:E4:FF:81:2F:18:5B:84:17:4F:FD:F3:B1:30:00:31:3C:9C:0B:6F","sha256":"D8:BC:E6:FB:32:84:D6:43:47:2F:20:BA:56:C3:6C:DA:94:89:5F:DD:A3:3B:02:B9:36:2B:50:1E:79:03:E9:D6"}}},"request":{"raw":"GET /myaccount/scss/sweetalert.css HTTP/1.1\r\nHost: clear-vault.online\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.5\r\nAccept-Encoding: gzip, deflate, br\r\nDNT: 1\r\nConnection: keep-alive\r\nReferer: https://clear-vault.online/\r\nCookie: PHPSESSID=1f922d27e0c65bdcb87ee1a396055a92\r\nSec-Fetch-Dest: style\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/3 200 OK\r\ncache-control: public, max-age=604800\r\nexpires: Thu, 14 Aug 2025 20:48:21 GMT\r\ncontent-type: text/css\r\nlast-modified: Thu, 11 May 2023 18:14:16 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 6308\r\ndate: Thu, 07 Aug 2025 20:48:21 GMT\r\nserver: LiteSpeed\r\nstrict-transport-security: max-age=16070400;\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","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":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":32278,"size_decoded":0,"mime_type":"text/css","magic":"ASCII text, with very long lines (821), with CRLF line terminators","md5":"713b9e2ceb7dacbc2e2b9dcafd45039a","sha1":"77fa55cc8e506789e0eedef077c2c73ead3665fd","sha256":"4624bff0a6a0cdf7129faf7be37a98905aa8133a165bb854879f91b7c2e94fda","sha512":"35e253f539e3773ebb72d6b0832ac7b3108237962bd31488689d2495d3848033fa1fe0435ed46b4803518b36800b4f75f281b8ffec2a8175e8b3282120055d17","ssdeep":"384:it3WuGFDc/KqTkzBfGyUkxOi/twFXiBMxbUWweI+8ItgMEnHw5EHweAq:itnpkxOotwFyBMxR8ODEnHw5EHweAq","tlshash":"2de2666b4d402244a3374735e3de8e14fe3840639a031dad77ce51ae8fb2e5c15a9f96","first_seen":"2023-05-11T23:04:03Z","last_seen":"2026-08-11T12:54:12.929999Z","times_seen":282,"resource_available":false,"data":"Ym9keS5zdG9wLXNjcm9sbGluZyB7DQogIGhlaWdodDogMTAwJTsNCiAgb3ZlcmZsb3c6IGhpZGRlbjsgfQ0KDQouc3dlZXQtb3ZlcmxheSB7DQogIGJhY2tncm91bmQtY29sb3I6IGJsYWNrOw0KICAvKiBJRTggKi8NCiAgLW1zLWZpbHRlcjogInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTQwKSI7DQogIC8qIElFOCAqLw0KICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNCk7DQogIHBvc2l0aW9uOiBmaXhlZDsNCiAgbGVmdDogMDsNCiAgcmlnaHQ6IDA7DQogIHRvcDogMDsNCiAgYm90dG9tOiAwOw0KICBkaXNwbGF5OiBub25lOw0KICB6LWluZGV4OiAxMDAwMDsgfQ0KDQouc3dlZXQtYWxlcnQgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsNCiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnLCAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOw0KICB3aWR0aDogNDc4cHg7DQogIHBhZGRpbmc6IDE3cHg7DQogIGJvcmRlci1yYWRpdXM6IDVweDsNCiAgdGV4dC1hbGlnbjogY2VudGVyOw0KICBwb3NpdGlvbjogZml4ZWQ7DQogIGxlZnQ6IDUwJTsNCiAgdG9wOiA1MCU7DQogIG1hcmdpbi1sZWZ0OiAtMjU2cHg7DQogIG1hcmdpbi10b3A6IC0yMDBweDsNCiAgb3ZlcmZsb3c6IGhpZGRlbjsNCiAgZGlzcGxheTogbm9uZTsNCiAgei1pbmRleDogOTk5OTk7IH0NCiAgQG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDogNTQwcHgpIHsNCiAgICAuc3dlZXQtYWxlcnQgew0KICAgICAgd2lkdGg6IGF1dG87DQogICAgICBtYXJnaW4tbGVmdDogMDsNCiAgICAgIG1hcmdpbi1yaWdodDogMDsNCiAgICAgIGxlZnQ6IDE1cHg7DQogICAgICByaWdodDogMTVweDsgfSB9DQogIC5zd2VldC1hbGVydCBoMiB7DQogICAgY29sb3I6ICM1NzU3NTc7DQogICAgZm9udC1zaXplOiAzMHB4Ow0KICAgIHRleHQtYWxpZ246IGNlbnRlcjsNCiAgICBmb250LXdlaWdodDogNjAwOw0KICAgIHRleHQtdHJhbnNmb3JtOiBub25lOw0KICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsNCiAgICBtYXJnaW46IDI1cHggMDsNCiAgICBwYWRkaW5nOiAwOw0KICAgIGxpbmUtaGVpZ2h0OiA0MHB4Ow0KICAgIGRpc3BsYXk6IGJsb2NrOyB9DQogIC5zd2VldC1hbGVydCBwIHsNCiAgICBjb2xvcjogIzc5Nzk3OTsNCiAgICBmb250LXNpemU6IDE2cHg7DQogICAgdGV4dC1hbGlnbjogY2VudGVyOw0KICAgIGZvbnQtd2VpZ2h0OiAzMDA7DQogICAgcG9zaXRpb246IHJlbGF0aXZlOw0KICAgIHRleHQtYWxpZ246IGluaGVyaXQ7DQogICAgZmxvYXQ6IG5vbmU7DQogICAgbWFyZ2luOiAwOw0KICAgIHBhZGRpbmc6IDA7DQogICAgbGluZS1oZWlnaHQ6IG5vcm1hbDsgfQ0KICAuc3dlZXQtYWxlcnQgZmllbGRzZXQgew0KICAgIGJvcmRlcjogbm9uZTsNCiAgICBwb3NpdGlvbjogcmVsYXRpdmU7IH0NCiAgLnN3ZWV0LWFsZXJ0IC5zYS1lcnJvci1jb250YWluZXIgew0KICAgIGJhY2tncm91bmQtY29sb3I6ICNmMWYxZjE7DQogICAgbWFyZ2luLWxlZnQ6IC0xN3B4Ow0KICAgIG1hcmdpbi1yaWdodDogLTE3cHg7DQogICAgb3ZlcmZsb3c6IGhpZGRlbjsNCiAgICBwYWRkaW5nOiAwIDEwcHg7DQogICAgbWF4LWhlaWdodDogMDsNCiAgICB3ZWJraXQtdHJhbnNpdGlvbjogcGFkZGluZyAwLjE1cywgbWF4LWhlaWdodCAwLjE1czsNCiAgICB0cmFuc2l0aW9uOiBwYWRkaW5nIDAuMTVzLCBtYXgtaGVpZ2h0IDAuMTVzOyB9DQogICAgLnN3ZWV0LWFsZXJ0IC5zYS1lcnJvci1jb250YWluZXIuc2hvdyB7DQogICAgICBwYWRkaW5nOiAxMHB4IDA7DQogICAgICBtYXgtaGVpZ2h0OiAxMDBweDsNCiAgICAgIHdlYmtpdC10cmFuc2l0aW9uOiBwYWRkaW5nIDAuMnMsIG1heC1oZWlnaHQgMC4yczsNCiAgICAgIHRyYW5zaXRpb246IHBhZGRpbmcgMC4yNXMsIG1heC1oZWlnaHQgMC4yNXM7IH0NCiAgICAuc3dlZXQtYWxlcnQgLnNhLWVycm9yLWNvbnRhaW5lciAuaWNvbiB7DQogICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7DQogICAgICB3aWR0aDogMjRweDsNCiAgICAgIGhlaWdodDogMjRweDsNCiAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsNCiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlYTdkN2Q7DQogICAgICBjb2xvcjogd2hpdGU7DQogICAgICBsaW5lLWhlaWdodDogMjRweDsNCiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsNCiAgICAgIG1hcmdpbi1yaWdodDogM3B4OyB9DQogICAgLnN3ZWV0LWFsZXJ0IC5zYS1lcnJvci1jb250YWluZXIgcCB7DQogICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH0NCiAgLnN3ZWV0LWFsZXJ0IC5zYS1pbnB1dC1lcnJvciB7DQogICAgcG9zaXRpb246IGFic29sdXRlOw0KICAgIHRvcDogMjlweDsNCiAgICByaWdodDogMjZweDsNCiAgICB3aWR0aDogMjBweDsNCiAgICBoZWlnaHQ6IDIwcHg7DQogICAgb3BhY2l0eTogMDsNCiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMC41KTsNCiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNSk7DQogICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiA1MCUgNTAlOw0KICAgIHRyYW5zZm9ybS1vcmlnaW46IDUwJSA1MCU7DQogICAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4xczsNCiAgICB0cmFuc2l0aW9uOiBhbGwgMC4xczsgfQ0KICAgIC5zd2VldC1hbGVydCAuc2EtaW5wdXQtZXJyb3I6OmJlZm9yZSwgLnN3ZWV0LWFsZXJ0IC5zYS1pbnB1dC1lcnJvcjo6YWZ0ZXIgew0KICAgICAgY29udGVudDogIiI7DQogICAgICB3aWR0aDogMjBweDsNCiAgICAgIGhlaWdodDogNnB4Ow0KICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2YwNmU1NzsNCiAgICAgIGJvcmRlci1yYWRpdXM6IDNweDsNCiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsNCiAgICAgIHRvcDogNTAlOw0KICAgICAgbWFyZ2luLXRvcDogLTRweDsNCiAgICAgIGxlZnQ6IDUwJTsNCiAgICAgIG1hcmdpbi1sZWZ0OiAtOXB4OyB9DQogICAgLnN3ZWV0LWFsZXJ0IC5zYS1pbnB1dC1lcnJvcjo6YmVmb3JlIHsNCiAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTsNCiAgICAgIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7IH0NCiAgICAuc3dlZXQtYWxlcnQgLnNhLWlucHV0LWVycm9yOjphZnRlciB7DQogICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTsNCiAgICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTsgfQ0KICAgIC5zd2VldC1hbGVydCAuc2EtaW5wdXQtZXJyb3Iuc2hvdyB7DQogICAgICBvcGFjaXR5OiAxOw0KICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpOw0KICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsgfQ0KICAuc3dlZXQtYWxlcnQgaW5wdXQgew0KICAgIHdpZHRoOiAxMDAlOw0KICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7DQogICAgYm9yZGVyLXJhZGl1czogM3B4Ow0KICAgIGJvcmRlcjogMXB4IHNvbGlkICNkN2Q3ZDc7DQogICAgaGVpZ2h0OiA0M3B4Ow0KICAgIG1hcmdpbi10b3A6IDEwcHg7DQogICAgbWFyZ2luLWJvdHRvbTogMTdweDsNCiAgICBmb250LXNpemU6IDE4cHg7DQogICAgYm94LXNoYWRvdzogaW5zZXQgMHB4IDFweCAxcHggcmdiYSgwLCAwLCAwLCAwLjA2KTsNCiAgICBwYWRkaW5nOiAwIDEycHg7DQogICAgZGlzcGxheTogbm9uZTsNCiAgICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjNzOw0KICAgIHRyYW5zaXRpb246IGFsbCAwLjNzOyB9DQogICAgLnN3ZWV0LWFsZXJ0IGlucHV0OmZvY3VzIHsNCiAgICAgIG91dGxpbmU6IG5vbmU7DQogICAgICBib3gtc2hhZG93OiAwcHggMHB4IDNweCAjYzRlNmY1Ow0KICAgICAgYm9yZGVyOiAxcHggc29saWQgI2I0ZGJlZDsgfQ0KICAgICAgLnN3ZWV0LWFsZXJ0IGlucHV0OmZvY3VzOjotbW96LXBsYWNlaG9sZGVyIHsNCiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIDAuMDNzIGVhc2U7DQogICAgICAgIG9wYWNpdHk6IDAuNTsgfQ0KICAgICAgLnN3ZWV0LWFsZXJ0IGlucHV0OmZvY3VzOi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7DQogICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyAwLjAzcyBlYXNlOw0KICAgICAgICBvcGFjaXR5OiAwLjU7IH0NCiAgICAgIC5zd2VldC1hbGVydCBpbnB1dDpmb2N1czo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7DQogICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyAwLjAzcyBlYXNlOw0KICAgICAgICBvcGFjaXR5OiAwLjU7IH0NCiAgICAuc3dlZXQtYWxlcnQgaW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXIgew0KICAgICAgY29sb3I6ICNiZGJkYmQ7IH0NCiAgICAuc3dlZXQtYWxlcnQgaW5wdXQ6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsNCiAgICAgIGNvbG9yOiAjYmRiZGJkOyB9DQogICAgLnN3ZWV0LWFsZXJ0IGlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsNCiAgICAgIGNvbG9yOiAjYmRiZGJkOyB9DQogIC5zd2VldC1hbGVydC5zaG93LWlucHV0IGlucHV0IHsNCiAgICBkaXNwbGF5OiBibG9jazsgfQ0KICAuc3dlZXQtYWxlcnQgLnNhLWNvbmZpcm0tYnV0dG9uLWNvbnRhaW5lciB7DQogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOw0KICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgfQ0KICAuc3dlZXQtYWxlcnQgLmxhLWJhbGwtZmFsbCB7DQogICAgcG9zaXRpb246IGFic29sdXRlOw0KICAgIGxlZnQ6IDUwJTsNCiAgICB0b3A6IDUwJTsNCiAgICBtYXJnaW4tbGVmdDogLTI3cHg7DQogICAgbWFyZ2luLXRvcDogNHB4Ow0KICAgIG9wYWNpdHk6IDA7DQogICAgdmlzaWJpbGl0eTogaGlkZGVuOyB9DQogIC5zd2VldC1hbGVydCBidXR0b24gew0KICAgIGJhY2tncm91bmQtY29sb3I6ICM4Q0Q0RjU7DQogICAgY29sb3I6IHdoaXRlOw0KICAgIGJvcmRlcjogbm9uZTsNCiAgICBib3gtc2hhZG93OiBub25lOw0KICAgIGZvbnQtc2l6ZTogMTdweDsNCiAgICBmb250LXdlaWdodDogNTAwOw0KICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNHB4Ow0KICAgIGJvcmRlci1yYWRpdXM6IDVweDsNCiAgICBwYWRkaW5nOiAxMHB4IDMycHg7DQogICAgbWFyZ2luOiAyNnB4IDVweCAwIDVweDsNCiAgICBjdXJzb3I6IHBvaW50ZXI7IH0NCiAgICAuc3dlZXQtYWxlcnQgYnV0dG9uOmZvY3VzIHsNCiAgICAgIG91dGxpbmU6IG5vbmU7DQogICAgICBib3gtc2hhZG93OiAwIDAgMnB4IHJnYmEoMTI4LCAxNzksIDIzNSwgMC41KSwgaW5zZXQgMCAwIDAgMXB4IHJnYmEoMCwgMCwgMCwgMC4wNSk7IH0NCiAgICAuc3dlZXQtYWxlcnQgYnV0dG9uOmhvdmVyIHsNCiAgICAgIGJhY2tncm91bmQtY29sb3I6ICM3ZWNmZjQ7IH0NCiAgICAuc3dlZXQtYWxlcnQgYnV0dG9uOmFjdGl2ZSB7DQogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNWRjMmYxOyB9DQogICAgLnN3ZWV0LWFsZXJ0IGJ1dHRvbi5jYW5jZWwgew0KICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0MxQzFDMTsgfQ0KICAgICAgLnN3ZWV0LWFsZXJ0IGJ1dHRvbi5jYW5jZWw6aG92ZXIgew0KICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjliOWI5OyB9DQogICAgICAuc3dlZXQtYWxlcnQgYnV0dG9uLmNhbmNlbDphY3RpdmUgew0KICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYThhOGE4OyB9DQogICAgICAuc3dlZXQtYWxlcnQgYnV0dG9uLmNhbmNlbDpmb2N1cyB7DQogICAgICAgIGJveC1zaGFkb3c6IHJnYmEoMTk3LCAyMDUsIDIxMSwgMC44KSAwcHggMHB4IDJweCwgcmdiYSgwLCAwLCAwLCAwLjA0NzA1ODgpIDBweCAwcHggMHB4IDFweCBpbnNldCAhaW1wb3J0YW50OyB9DQogICAgLnN3ZWV0LWFsZXJ0IGJ1dHRvbltkaXNhYmxlZF0gew0KICAgICAgb3BhY2l0eTogLjY7DQogICAgICBjdXJzb3I6IGRlZmF1bHQ7IH0NCiAgICAuc3dlZXQtYWxlcnQgYnV0dG9uLmNvbmZpcm1bZGlzYWJsZWRdIHsNCiAgICAgIGNvbG9yOiB0cmFuc3BhcmVudDsgfQ0KICAgICAgLnN3ZWV0LWFsZXJ0IGJ1dHRvbi5jb25maXJtW2Rpc2FibGVkXSB+IC5sYS1iYWxsLWZhbGwgew0KICAgICAgICBvcGFjaXR5OiAxOw0KICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlOw0KICAgICAgICB0cmFuc2l0aW9uLWRlbGF5OiAwczsgfQ0KICAgIC5zd2VldC1hbGVydCBidXR0b246Oi1tb3otZm9jdXMtaW5uZXIgew0KICAgICAgYm9yZGVyOiAwOyB9DQogIC5zd2VldC1hbGVydFtkYXRhLWhhcy1jYW5jZWwtYnV0dG9uPWZhbHNlXSBidXR0b24gew0KICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDsgfQ0KICAuc3dlZXQtYWxlcnRbZGF0YS1oYXMtY29uZmlybS1idXR0b249ZmFsc2VdW2RhdGEtaGFzLWNhbmNlbC1idXR0b249ZmFsc2VdIHsNCiAgICBwYWRkaW5nLWJvdHRvbTogNDBweDsgfQ0KICAuc3dlZXQtYWxlcnQgLnNhLWljb24gew0KICAgIHdpZHRoOiA4MHB4Ow0KICAgIGhlaWdodDogODBweDsNCiAgICBib3JkZXI6IDRweCBzb2xpZCBncmF5Ow0KICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNDBweDsNCiAgICBib3JkZXItcmFkaXVzOiA0MHB4Ow0KICAgIGJvcmRlci1yYWRpdXM6IDUwJTsNCiAgICBtYXJnaW46IDIwcHggYXV0bzsNCiAgICBwYWRkaW5nOiAwOw0KICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsNCiAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveDsgfQ0KICAgIC5zd2VldC1hbGVydCAuc2EtaWNvbi5zYS1lcnJvciB7DQogICAgICBib3JkZXItY29sb3I6ICNGMjc0NzQ7IH0NCiAgICAgIC5zd2VldC1hbGVydCAuc2EtaWNvbi5zYS1lcnJvciAuc2EteC1tYXJrIHsNCiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOw0KICAgICAgICBkaXNwbGF5OiBibG9jazsgfQ0KICAgICAgLnN3ZWV0LWFsZXJ0IC5zYS1pY29uLnNhLWVycm9yIC5zYS1saW5lIHsNCiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOw0KICAgICAgICBoZWlnaHQ6IDVweDsNCiAgICAgICAgd2lkdGg6IDQ3cHg7DQogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGMjc0NzQ7DQogICAgICAgIGRpc3BsYXk6IGJsb2NrOw0KICAgICAgICB0b3A6IDM3cHg7DQogICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsgfQ0KICAgICAgICAuc3dlZXQtYWxlcnQgLnNhLWljb24uc2EtZXJyb3IgLnNhLWxpbmUuc2EtbGVmdCB7DQogICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7DQogICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpOw0KICAgICAgICAgIGxlZnQ6IDE3cHg7IH0NCiAgICAgICAgLnN3ZWV0LWFsZXJ0IC5zYS1pY29uLnNhLWVycm9yIC5zYS1saW5lLnNhLXJpZ2h0IHsNCiAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7DQogICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTsNCiAgICAgICAgICByaWdodDogMTZweDsgfQ0KICAgIC5zd2VldC1hbGVydCAuc2EtaWNvbi5zYS13YXJuaW5nIHsNCiAgICAgIGJvcmRlci1jb2xvcjogI0Y4QkI4NjsgfQ0KICAgICAgLnN3ZWV0LWFsZXJ0IC5zYS1pY29uLnNhLXdhcm5pbmcgLnNhLWJvZHkgew0KICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7DQogICAgICAgIHdpZHRoOiA1cHg7DQogICAgICAgIGhlaWdodDogNDdweDsNCiAgICAgICAgbGVmdDogNTAlOw0KICAgICAgICB0b3A6IDEwcHg7DQogICAgICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMnB4Ow0KICAgICAgICBib3JkZXItcmFkaXVzOiAycHg7DQogICAgICAgIG1hcmdpbi1sZWZ0OiAtMnB4Ow0KICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjhCQjg2OyB9DQogICAgICAuc3dlZXQtYWxlcnQgLnNhLWljb24uc2Etd2FybmluZyAuc2EtZG90IHsNCiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOw0KICAgICAgICB3aWR0aDogN3B4Ow0KICAgICAgICBoZWlnaHQ6IDdweDsNCiAgICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1MCU7DQogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsNCiAgICAgICAgbWFyZ2luLWxlZnQ6IC0zcHg7DQogICAgICAgIGxlZnQ6IDUwJTsNCiAgICAgICAgYm90dG9tOiAxMHB4Ow0KICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjhCQjg2OyB9DQogICAgLnN3ZWV0LWFsZXJ0IC5zYS1pY29uLnNhLWluZm8gew0KICAgICAgYm9yZGVyLWNvbG9yOiAjQzlEQUUxOyB9DQogICAgICAuc3dlZXQtYWxlcnQgLnNhLWljb24uc2EtaW5mbzo6YmVmb3JlIHsNCiAgICAgICAgY29udGVudDogIiI7DQogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsNCiAgICAgICAgd2lkdGg6IDVweDsNCiAgICAgICAgaGVpZ2h0OiAyOXB4Ow0KICAgICAgICBsZWZ0OiA1MCU7DQogICAgICAgIGJvdHRvbTogMTdweDsNCiAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4Ow0KICAgICAgICBtYXJnaW4tbGVmdDogLTJweDsNCiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0M5REFFMTsgfQ0KICAgICAgLnN3ZWV0LWFsZXJ0IC5zYS1pY29uLnNhLWluZm86OmFmdGVyIHsNCiAgICAgICAgY29udGVudDogIiI7DQogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsNCiAgICAgICAgd2lkdGg6IDdweDsNCiAgICAgICAgaGVpZ2h0OiA3cHg7DQogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsNCiAgICAgICAgbWFyZ2luLWxlZnQ6IC0zcHg7DQogICAgICAgIHRvcDogMTlweDsNCiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0M5REFFMTsgfQ0KICAgIC5zd2VldC1hbGVydCAuc2EtaWNvbi5zYS1zdWNjZXNzIHsNCiAgICAgIGJvcmRlci1jb2xvcjogI0E1REM4NjsgfQ0KICAgICAgLnN3ZWV0LWFsZXJ0IC5zYS1pY29uLnNhLXN1Y2Nlc3M6OmJlZm9yZSwgLnN3ZWV0LWFsZXJ0IC5zYS1pY29uLnNhLXN1Y2Nlc3M6OmFmdGVyIHsNCiAgICAgICAgY29udGVudDogJyc7DQogICAgICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNDBweDsNCiAgICAgICAgYm9yZGVyLXJhZGl1czogNDBweDsNCiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOw0KICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7DQogICAgICAgIHdpZHRoOiA2MHB4Ow0KICAgICAgICBoZWlnaHQ6IDEyMHB4Ow0KICAgICAgICBiYWNrZ3JvdW5kOiB3aGl0ZTsNCiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7DQogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTsgfQ0KICAgICAgLnN3ZWV0LWFsZXJ0IC5zYS1pY29uLnNhLXN1Y2Nlc3M6OmJlZm9yZSB7DQogICAgICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMTIwcHggMCAwIDEyMHB4Ow0KICAgICAgICBib3JkZXItcmFkaXVzOiAxMjBweCAwIDAgMTIwcHg7DQogICAgICAgIHRvcDogLTdweDsNCiAgICAgICAgbGVmdDogLTMzcHg7DQogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTsNCiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTsNCiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOiA2MHB4IDYwcHg7DQogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IDYwcHggNjBweDsgfQ0KICAgICAgLnN3ZWV0LWFsZXJ0IC5zYS1pY29uLnNhLXN1Y2Nlc3M6OmFmdGVyIHsNCiAgICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAwIDEyMHB4IDEyMHB4IDA7DQogICAgICAgIGJvcmRlci1yYWRpdXM6IDAgMTIwcHggMTIwcHggMDsNCiAgICAgICAgdG9wOiAtMTFweDsNCiAgICAgICAgbGVmdDogMzBweDsNCiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpOw0KICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpOw0KICAgICAgICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDBweCA2MHB4Ow0KICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiAwcHggNjBweDsgfQ0KICAgICAgLnN3ZWV0LWFsZXJ0IC5zYS1pY29uLnNhLXN1Y2Nlc3MgLnNhLXBsYWNlaG9sZGVyIHsNCiAgICAgICAgd2lkdGg6IDgwcHg7DQogICAgICAgIGhlaWdodDogODBweDsNCiAgICAgICAgYm9yZGVyOiA0cHggc29saWQgcmdiYSgxNjUsIDIyMCwgMTM0LCAwLjIpOw0KICAgICAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDQwcHg7DQogICAgICAgIGJvcmRlci1yYWRpdXM6IDQwcHg7DQogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsNCiAgICAgICAgYm94LXNpemluZzogY29udGVudC1ib3g7DQogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsNCiAgICAgICAgbGVmdDogLTRweDsNCiAgICAgICAgdG9wOiAtNHB4Ow0KICAgICAgICB6LWluZGV4OiAyOyB9DQogICAgICAuc3dlZXQtYWxlcnQgLnNhLWljb24uc2Etc3VjY2VzcyAuc2EtZml4IHsNCiAgICAgICAgd2lkdGg6IDVweDsNCiAgICAgICAgaGVpZ2h0OiA5MHB4Ow0KICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsNCiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOw0KICAgICAgICBsZWZ0OiAyOHB4Ow0KICAgICAgICB0b3A6IDhweDsNCiAgICAgICAgei1pbmRleDogMTsNCiAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpOw0KICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpOyB9DQogICAgICAuc3dlZXQtYWxlcnQgLnNhLWljb24uc2Etc3VjY2VzcyAuc2EtbGluZSB7DQogICAgICAgIGhlaWdodDogNXB4Ow0KICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjQTVEQzg2Ow0KICAgICAgICBkaXNwbGF5OiBibG9jazsNCiAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4Ow0KICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7DQogICAgICAgIHotaW5kZXg6IDI7IH0NCiAgICAgICAgLnN3ZWV0LWFsZXJ0IC5zYS1pY29uLnNhLXN1Y2Nlc3MgLnNhLWxpbmUuc2EtdGlwIHsNCiAgICAgICAgICB3aWR0aDogMjVweDsNCiAgICAgICAgICBsZWZ0OiAxNHB4Ow0KICAgICAgICAgIHRvcDogNDZweDsNCiAgICAgICAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTsNCiAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7IH0NCiAgICAgICAgLnN3ZWV0LWFsZXJ0IC5zYS1pY29uLnNhLXN1Y2Nlc3MgLnNhLWxpbmUuc2EtbG9uZyB7DQogICAgICAgICAgd2lkdGg6IDQ3cHg7DQogICAgICAgICAgcmlnaHQ6IDhweDsNCiAgICAgICAgICB0b3A6IDM4cHg7DQogICAgICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpOw0KICAgICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7IH0NCiAgICAuc3dlZXQtYWxlcnQgLnNhLWljb24uc2EtY3VzdG9tIHsNCiAgICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjsNCiAgICAgIGJvcmRlci1yYWRpdXM6IDA7DQogICAgICBib3JkZXI6IG5vbmU7DQogICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXIgY2VudGVyOw0KICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsgfQ0KDQovKg0KICogQW5pbWF0aW9ucw0KICovDQpALXdlYmtpdC1rZXlmcmFtZXMgc2hvd1N3ZWV0QWxlcnQgew0KICAwJSB7DQogICAgdHJhbnNmb3JtOiBzY2FsZSgwLjcpOw0KICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwLjcpOyB9DQogIDQ1JSB7DQogICAgdHJhbnNmb3JtOiBzY2FsZSgxLjA1KTsNCiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMS4wNSk7IH0NCiAgODAlIHsNCiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTUpOw0KICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwLjk1KTsgfQ0KICAxMDAlIHsNCiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpOw0KICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTsgfSB9DQoNCkBrZXlmcmFtZXMgc2hvd1N3ZWV0QWxlcnQgew0KICAwJSB7DQogICAgdHJhbnNmb3JtOiBzY2FsZSgwLjcpOw0KICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwLjcpOyB9DQogIDQ1JSB7DQogICAgdHJhbnNmb3JtOiBzY2FsZSgxLjA1KTsNCiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMS4wNSk7IH0NCiAgODAlIHsNCiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTUpOw0KICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwLjk1KTsgfQ0KICAxMDAlIHsNCiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpOw0KICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTsgfSB9DQoNCkAtd2Via2l0LWtleWZyYW1lcyBoaWRlU3dlZXRBbGVydCB7DQogIDAlIHsNCiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpOw0KICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTsgfQ0KICAxMDAlIHsNCiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNSk7DQogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDAuNSk7IH0gfQ0KDQpAa2V5ZnJhbWVzIGhpZGVTd2VldEFsZXJ0IHsNCiAgMCUgew0KICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7DQogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpOyB9DQogIDEwMCUgew0KICAgIHRyYW5zZm9ybTogc2NhbGUoMC41KTsNCiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMC41KTsgfSB9DQoNCkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZUZyb21Ub3Agew0KICAwJSB7DQogICAgdG9wOiAwJTsgfQ0KICAxMDAlIHsNCiAgICB0b3A6IDUwJTsgfSB9DQoNCkBrZXlmcmFtZXMgc2xpZGVGcm9tVG9wIHsNCiAgMCUgew0KICAgIHRvcDogMCU7IH0NCiAgMTAwJSB7DQogICAgdG9wOiA1MCU7IH0gfQ0KDQpALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGVUb1RvcCB7DQogIDAlIHsNCiAgICB0b3A6IDUwJTsgfQ0KICAxMDAlIHsNCiAgICB0b3A6IDAlOyB9IH0NCg0KQGtleWZyYW1lcyBzbGlkZVRvVG9wIHsNCiAgMCUgew0KICAgIHRvcDogNTAlOyB9DQogIDEwMCUgew0KICAgIHRvcDogMCU7IH0gfQ0KDQpALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGVGcm9tQm90dG9tIHsNCiAgMCUgew0KICAgIHRvcDogNzAlOyB9DQogIDEwMCUgew0KICAgIHRvcDogNTAlOyB9IH0NCg0KQGtleWZyYW1lcyBzbGlkZUZyb21Cb3R0b20gew0KICAwJSB7DQogICAgdG9wOiA3MCU7IH0NCiAgMTAwJSB7DQogICAgdG9wOiA1MCU7IH0gfQ0KDQpALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGVUb0JvdHRvbSB7DQogIDAlIHsNCiAgICB0b3A6IDUwJTsgfQ0KICAxMDAlIHsNCiAgICB0b3A6IDcwJTsgfSB9DQoNCkBrZXlmcmFtZXMgc2xpZGVUb0JvdHRvbSB7DQogIDAlIHsNCiAgICB0b3A6IDUwJTsgfQ0KICAxMDAlIHsNCiAgICB0b3A6IDcwJTsgfSB9DQoNCi5zaG93U3dlZXRBbGVydFtkYXRhLWFuaW1hdGlvbj1wb3BdIHsNCiAgLXdlYmtpdC1hbmltYXRpb246IHNob3dTd2VldEFsZXJ0IDAuM3M7DQogIGFuaW1hdGlvbjogc2hvd1N3ZWV0QWxlcnQgMC4zczsgfQ0KDQouc2hvd1N3ZWV0QWxlcnRbZGF0YS1hbmltYXRpb249bm9uZV0gew0KICAtd2Via2l0LWFuaW1hdGlvbjogbm9uZTsNCiAgYW5pbWF0aW9uOiBub25lOyB9DQoNCi5zaG93U3dlZXRBbGVydFtkYXRhLWFuaW1hdGlvbj1zbGlkZS1mcm9tLXRvcF0gew0KICAtd2Via2l0LWFuaW1hdGlvbjogc2xpZGVGcm9tVG9wIDAuM3M7DQogIGFuaW1hdGlvbjogc2xpZGVGcm9tVG9wIDAuM3M7IH0NCg0KLnNob3dTd2VldEFsZXJ0W2RhdGEtYW5pbWF0aW9uPXNsaWRlLWZyb20tYm90dG9tXSB7DQogIC13ZWJraXQtYW5pbWF0aW9uOiBzbGlkZUZyb21Cb3R0b20gMC4zczsNCiAgYW5pbWF0aW9uOiBzbGlkZUZyb21Cb3R0b20gMC4zczsgfQ0KDQouaGlkZVN3ZWV0QWxlcnRbZGF0YS1hbmltYXRpb249cG9wXSB7DQogIC13ZWJraXQtYW5pbWF0aW9uOiBoaWRlU3dlZXRBbGVydCAwLjJzOw0KICBhbmltYXRpb246IGhpZGVTd2VldEFsZXJ0IDAuMnM7IH0NCg0KLmhpZGVTd2VldEFsZXJ0W2RhdGEtYW5pbWF0aW9uPW5vbmVdIHsNCiAgLXdlYmtpdC1hbmltYXRpb246IG5vbmU7DQogIGFuaW1hdGlvbjogbm9uZTsgfQ0KDQouaGlkZVN3ZWV0QWxlcnRbZGF0YS1hbmltYXRpb249c2xpZGUtZnJvbS10b3BdIHsNCiAgLXdlYmtpdC1hbmltYXRpb246IHNsaWRlVG9Ub3AgMC40czsNCiAgYW5pbWF0aW9uOiBzbGlkZVRvVG9wIDAuNHM7IH0NCg0KLmhpZGVTd2VldEFsZXJ0W2RhdGEtYW5pbWF0aW9uPXNsaWRlLWZyb20tYm90dG9tXSB7DQogIC13ZWJraXQtYW5pbWF0aW9uOiBzbGlkZVRvQm90dG9tIDAuM3M7DQogIGFuaW1hdGlvbjogc2xpZGVUb0JvdHRvbSAwLjNzOyB9DQoNCkAtd2Via2l0LWtleWZyYW1lcyBhbmltYXRlU3VjY2Vzc1RpcCB7DQogIDAlIHsNCiAgICB3aWR0aDogMDsNCiAgICBsZWZ0OiAxcHg7DQogICAgdG9wOiAxOXB4OyB9DQogIDU0JSB7DQogICAgd2lkdGg6IDA7DQogICAgbGVmdDogMXB4Ow0KICAgIHRvcDogMTlweDsgfQ0KICA3MCUgew0KICAgIHdpZHRoOiA1MHB4Ow0KICAgIGxlZnQ6IC04cHg7DQogICAgdG9wOiAzN3B4OyB9DQogIDg0JSB7DQogICAgd2lkdGg6IDE3cHg7DQogICAgbGVmdDogMjFweDsNCiAgICB0b3A6IDQ4cHg7IH0NCiAgMTAwJSB7DQogICAgd2lkdGg6IDI1cHg7DQogICAgbGVmdDogMTRweDsNCiAgICB0b3A6IDQ1cHg7IH0gfQ0KDQpAa2V5ZnJhbWVzIGFuaW1hdGVTdWNjZXNzVGlwIHsNCiAgMCUgew0KICAgIHdpZHRoOiAwOw0KICAgIGxlZnQ6IDFweDsNCiAgICB0b3A6IDE5cHg7IH0NCiAgNTQlIHsNCiAgICB3aWR0aDogMDsNCiAgICBsZWZ0OiAxcHg7DQogICAgdG9wOiAxOXB4OyB9DQogIDcwJSB7DQogICAgd2lkdGg6IDUwcHg7DQogICAgbGVmdDogLThweDsNCiAgICB0b3A6IDM3cHg7IH0NCiAgODQlIHsNCiAgICB3aWR0aDogMTdweDsNCiAgICBsZWZ0OiAyMXB4Ow0KICAgIHRvcDogNDhweDsgfQ0KICAxMDAlIHsNCiAgICB3aWR0aDogMjVweDsNCiAgICBsZWZ0OiAxNHB4Ow0KICAgIHRvcDogNDVweDsgfSB9DQoNCkAtd2Via2l0LWtleWZyYW1lcyBhbmltYXRlU3VjY2Vzc0xvbmcgew0KICAwJSB7DQogICAgd2lkdGg6IDA7DQogICAgcmlnaHQ6IDQ2cHg7DQogICAgdG9wOiA1NHB4OyB9DQogIDY1JSB7DQogICAgd2lkdGg6IDA7DQogICAgcmlnaHQ6IDQ2cHg7DQogICAgdG9wOiA1NHB4OyB9DQogIDg0JSB7DQogICAgd2lkdGg6IDU1cHg7DQogICAgcmlnaHQ6IDBweDsNCiAgICB0b3A6IDM1cHg7IH0NCiAgMTAwJSB7DQogICAgd2lkdGg6IDQ3cHg7DQogICAgcmlnaHQ6IDhweDsNCiAgICB0b3A6IDM4cHg7IH0gfQ0KDQpAa2V5ZnJhbWVzIGFuaW1hdGVTdWNjZXNzTG9uZyB7DQogIDAlIHsNCiAgICB3aWR0aDogMDsNCiAgICByaWdodDogNDZweDsNCiAgICB0b3A6IDU0cHg7IH0NCiAgNjUlIHsNCiAgICB3aWR0aDogMDsNCiAgICByaWdodDogNDZweDsNCiAgICB0b3A6IDU0cHg7IH0NCiAgODQlIHsNCiAgICB3aWR0aDogNTVweDsNCiAgICByaWdodDogMHB4Ow0KICAgIHRvcDogMzVweDsgfQ0KICAxMDAlIHsNCiAgICB3aWR0aDogNDdweDsNCiAgICByaWdodDogOHB4Ow0KICAgIHRvcDogMzhweDsgfSB9DQoNCkAtd2Via2l0LWtleWZyYW1lcyByb3RhdGVQbGFjZWhvbGRlciB7DQogIDAlIHsNCiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpOw0KICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTsgfQ0KICA1JSB7DQogICAgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTsNCiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7IH0NCiAgMTIlIHsNCiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDA1ZGVnKTsNCiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlKC00MDVkZWcpOyB9DQogIDEwMCUgew0KICAgIHRyYW5zZm9ybTogcm90YXRlKC00MDVkZWcpOw0KICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTQwNWRlZyk7IH0gfQ0KDQpAa2V5ZnJhbWVzIHJvdGF0ZVBsYWNlaG9sZGVyIHsNCiAgMCUgew0KICAgIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7DQogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpOyB9DQogIDUlIHsNCiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpOw0KICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTsgfQ0KICAxMiUgew0KICAgIHRyYW5zZm9ybTogcm90YXRlKC00MDVkZWcpOw0KICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoLTQwNWRlZyk7IH0NCiAgMTAwJSB7DQogICAgdHJhbnNmb3JtOiByb3RhdGUoLTQwNWRlZyk7DQogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgtNDA1ZGVnKTsgfSB9DQoNCi5hbmltYXRlU3VjY2Vzc1RpcCB7DQogIC13ZWJraXQtYW5pbWF0aW9uOiBhbmltYXRlU3VjY2Vzc1RpcCAwLjc1czsNCiAgYW5pbWF0aW9uOiBhbmltYXRlU3VjY2Vzc1RpcCAwLjc1czsgfQ0KDQouYW5pbWF0ZVN1Y2Nlc3NMb25nIHsNCiAgLXdlYmtpdC1hbmltYXRpb246IGFuaW1hdGVTdWNjZXNzTG9uZyAwLjc1czsNCiAgYW5pbWF0aW9uOiBhbmltYXRlU3VjY2Vzc0xvbmcgMC43NXM7IH0NCg0KLnNhLWljb24uc2Etc3VjY2Vzcy5hbmltYXRlOjphZnRlciB7DQogIC13ZWJraXQtYW5pbWF0aW9uOiByb3RhdGVQbGFjZWhvbGRlciA0LjI1cyBlYXNlLWluOw0KICBhbmltYXRpb246IHJvdGF0ZVBsYWNlaG9sZGVyIDQuMjVzIGVhc2UtaW47IH0NCg0KQC13ZWJraXQta2V5ZnJhbWVzIGFuaW1hdGVFcnJvckljb24gew0KICAwJSB7DQogICAgdHJhbnNmb3JtOiByb3RhdGVYKDEwMGRlZyk7DQogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVgoMTAwZGVnKTsNCiAgICBvcGFjaXR5OiAwOyB9DQogIDEwMCUgew0KICAgIHRyYW5zZm9ybTogcm90YXRlWCgwZGVnKTsNCiAgICAtd2Via2l0LXRyYW5zZm9ybTogcm90YXRlWCgwZGVnKTsNCiAgICBvcGFjaXR5OiAxOyB9IH0NCg0KQGtleWZyYW1lcyBhbmltYXRlRXJyb3JJY29uIHsNCiAgMCUgew0KICAgIHRyYW5zZm9ybTogcm90YXRlWCgxMDBkZWcpOw0KICAgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGVYKDEwMGRlZyk7DQogICAgb3BhY2l0eTogMDsgfQ0KICAxMDAlIHsNCiAgICB0cmFuc2Zvcm06IHJvdGF0ZVgoMGRlZyk7DQogICAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVgoMGRlZyk7DQogICAgb3BhY2l0eTogMTsgfSB9DQoNCi5hbmltYXRlRXJyb3JJY29uIHsNCiAgLXdlYmtpdC1hbmltYXRpb246IGFuaW1hdGVFcnJvckljb24gMC41czsNCiAgYW5pbWF0aW9uOiBhbmltYXRlRXJyb3JJY29uIDAuNXM7IH0NCg0KQC13ZWJraXQta2V5ZnJhbWVzIGFuaW1hdGVYTWFyayB7DQogIDAlIHsNCiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNCk7DQogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDAuNCk7DQogICAgbWFyZ2luLXRvcDogMjZweDsNCiAgICBvcGFjaXR5OiAwOyB9DQogIDUwJSB7DQogICAgdHJhbnNmb3JtOiBzY2FsZSgwLjQpOw0KICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwLjQpOw0KICAgIG1hcmdpbi10b3A6IDI2cHg7DQogICAgb3BhY2l0eTogMDsgfQ0KICA4MCUgew0KICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xNSk7DQogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEuMTUpOw0KICAgIG1hcmdpbi10b3A6IC02cHg7IH0NCiAgMTAwJSB7DQogICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsNCiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7DQogICAgbWFyZ2luLXRvcDogMDsNCiAgICBvcGFjaXR5OiAxOyB9IH0NCg0KQGtleWZyYW1lcyBhbmltYXRlWE1hcmsgew0KICAwJSB7DQogICAgdHJhbnNmb3JtOiBzY2FsZSgwLjQpOw0KICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwLjQpOw0KICAgIG1hcmdpbi10b3A6IDI2cHg7DQogICAgb3BhY2l0eTogMDsgfQ0KICA1MCUgew0KICAgIHRyYW5zZm9ybTogc2NhbGUoMC40KTsNCiAgICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMC40KTsNCiAgICBtYXJnaW4tdG9wOiAyNnB4Ow0KICAgIG9wYWNpdHk6IDA7IH0NCiAgODAlIHsNCiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMTUpOw0KICAgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxLjE1KTsNCiAgICBtYXJnaW4tdG9wOiAtNnB4OyB9DQogIDEwMCUgew0KICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7DQogICAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpOw0KICAgIG1hcmdpbi10b3A6IDA7DQogICAgb3BhY2l0eTogMTsgfSB9DQoNCi5hbmltYXRlWE1hcmsgew0KICAtd2Via2l0LWFuaW1hdGlvbjogYW5pbWF0ZVhNYXJrIDAuNXM7DQogIGFuaW1hdGlvbjogYW5pbWF0ZVhNYXJrIDAuNXM7IH0NCg0KQC13ZWJraXQta2V5ZnJhbWVzIHB1bHNlV2FybmluZyB7DQogIDAlIHsNCiAgICBib3JkZXItY29sb3I6ICNGOEQ0ODY7IH0NCiAgMTAwJSB7DQogICAgYm9yZGVyLWNvbG9yOiAjRjhCQjg2OyB9IH0NCg0KQGtleWZyYW1lcyBwdWxzZVdhcm5pbmcgew0KICAwJSB7DQogICAgYm9yZGVyLWNvbG9yOiAjRjhENDg2OyB9DQogIDEwMCUgew0KICAgIGJvcmRlci1jb2xvcjogI0Y4QkI4NjsgfSB9DQoNCi5wdWxzZVdhcm5pbmcgew0KICAtd2Via2l0LWFuaW1hdGlvbjogcHVsc2VXYXJuaW5nIDAuNzVzIGluZmluaXRlIGFsdGVybmF0ZTsNCiAgYW5pbWF0aW9uOiBwdWxzZVdhcm5pbmcgMC43NXMgaW5maW5pdGUgYWx0ZXJuYXRlOyB9DQoNCkAtd2Via2l0LWtleWZyYW1lcyBwdWxzZVdhcm5pbmdJbnMgew0KICAwJSB7DQogICAgYmFja2dyb3VuZC1jb2xvcjogI0Y4RDQ4NjsgfQ0KICAxMDAlIHsNCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjhCQjg2OyB9IH0NCg0KQGtleWZyYW1lcyBwdWxzZVdhcm5pbmdJbnMgew0KICAwJSB7DQogICAgYmFja2dyb3VuZC1jb2xvcjogI0Y4RDQ4NjsgfQ0KICAxMDAlIHsNCiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjhCQjg2OyB9IH0NCg0KLnB1bHNlV2FybmluZ0lucyB7DQogIC13ZWJraXQtYW5pbWF0aW9uOiBwdWxzZVdhcm5pbmdJbnMgMC43NXMgaW5maW5pdGUgYWx0ZXJuYXRlOw0KICBhbmltYXRpb246IHB1bHNlV2FybmluZ0lucyAwLjc1cyBpbmZpbml0ZSBhbHRlcm5hdGU7IH0NCg0KQC13ZWJraXQta2V5ZnJhbWVzIHJvdGF0ZS1sb2FkaW5nIHsNCiAgMCUgew0KICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOyB9DQogIDEwMCUgew0KICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH0gfQ0KDQpAa2V5ZnJhbWVzIHJvdGF0ZS1sb2FkaW5nIHsNCiAgMCUgew0KICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOyB9DQogIDEwMCUgew0KICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH0gfQ0KDQovKiBJbnRlcm5ldCBFeHBsb3JlciA5IGhhcyBzb21lIHNwZWNpYWwgcXVpcmtzIHRoYXQgYXJlIGZpeGVkIGhlcmUgKi8NCi8qIFRoZSBpY29ucyBhcmUgbm90IGFuaW1hdGVkLiAqLw0KLyogVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgbWVyZ2VkIGludG8gc3dlZXQtYWxlcnQubWluLmpzIHRocm91Z2ggR3VscCAqLw0KLyogRXJyb3IgaWNvbiAqLw0KLnN3ZWV0LWFsZXJ0IC5zYS1pY29uLnNhLWVycm9yIC5zYS1saW5lLnNhLWxlZnQgew0KICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpIFw5OyB9DQoNCi5zd2VldC1hbGVydCAuc2EtaWNvbi5zYS1lcnJvciAuc2EtbGluZS5zYS1yaWdodCB7DQogIC1tcy10cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpIFw5OyB9DQoNCi8qIFN1Y2Nlc3MgaWNvbiAqLw0KLnN3ZWV0LWFsZXJ0IC5zYS1pY29uLnNhLXN1Y2Nlc3Mgew0KICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50XDk7IH0NCg0KLnN3ZWV0LWFsZXJ0IC5zYS1pY29uLnNhLXN1Y2Nlc3MgLnNhLWxpbmUuc2EtdGlwIHsNCiAgLW1zLXRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKSBcOTsgfQ0KDQouc3dlZXQtYWxlcnQgLnNhLWljb24uc2Etc3VjY2VzcyAuc2EtbGluZS5zYS1sb25nIHsNCiAgLW1zLXRyYW5zZm9ybTogcm90YXRlKC00NWRlZykgXDk7IH0NCg0KLyohDQogKiBMb2FkIEF3ZXNvbWUgdjEuMS4wIChodHRwOi8vZ2l0aHViLmRhbmllbGNhcmRvc28ubmV0L2xvYWQtYXdlc29tZS8pDQogKiBDb3B5cmlnaHQgMjAxNSBEYW5pZWwgQ2FyZG9zbyA8QERhbmllbENhcmRvc28+DQogKiBMaWNlbnNlZCB1bmRlciBNSVQNCiAqLw0KLmxhLWJhbGwtZmFsbCwNCi5sYS1iYWxsLWZhbGwgPiBkaXYgew0KICBwb3NpdGlvbjogcmVsYXRpdmU7DQogIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsNCiAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94Ow0KICBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9DQoNCi5sYS1iYWxsLWZhbGwgew0KICBkaXNwbGF5OiBibG9jazsNCiAgZm9udC1zaXplOiAwOw0KICBjb2xvcjogI2ZmZjsgfQ0KDQoubGEtYmFsbC1mYWxsLmxhLWRhcmsgew0KICBjb2xvcjogIzMzMzsgfQ0KDQoubGEtYmFsbC1mYWxsID4gZGl2IHsNCiAgZGlzcGxheTogaW5saW5lLWJsb2NrOw0KICBmbG9hdDogbm9uZTsNCiAgYmFja2dyb3VuZC1jb2xvcjogY3VycmVudENvbG9yOw0KICBib3JkZXI6IDAgc29saWQgY3VycmVudENvbG9yOyB9DQoNCi5sYS1iYWxsLWZhbGwgew0KICB3aWR0aDogNTRweDsNCiAgaGVpZ2h0OiAxOHB4OyB9DQoNCi5sYS1iYWxsLWZhbGwgPiBkaXYgew0KICB3aWR0aDogMTBweDsNCiAgaGVpZ2h0OiAxMHB4Ow0KICBtYXJnaW46IDRweDsNCiAgYm9yZGVyLXJhZGl1czogMTAwJTsNCiAgb3BhY2l0eTogMDsNCiAgLXdlYmtpdC1hbmltYXRpb246IGJhbGwtZmFsbCAxcyBlYXNlLWluLW91dCBpbmZpbml0ZTsNCiAgLW1vei1hbmltYXRpb246IGJhbGwtZmFsbCAxcyBlYXNlLWluLW91dCBpbmZpbml0ZTsNCiAgLW8tYW5pbWF0aW9uOiBiYWxsLWZhbGwgMXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7DQogIGFuaW1hdGlvbjogYmFsbC1mYWxsIDFzIGVhc2UtaW4tb3V0IGluZmluaXRlOyB9DQoNCi5sYS1iYWxsLWZhbGwgPiBkaXY6bnRoLWNoaWxkKDEpIHsNCiAgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IC0yMDBtczsNCiAgLW1vei1hbmltYXRpb24tZGVsYXk6IC0yMDBtczsNCiAgLW8tYW5pbWF0aW9uLWRlbGF5OiAtMjAwbXM7DQogIGFuaW1hdGlvbi1kZWxheTogLTIwMG1zOyB9DQoNCi5sYS1iYWxsLWZhbGwgPiBkaXY6bnRoLWNoaWxkKDIpIHsNCiAgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IC0xMDBtczsNCiAgLW1vei1hbmltYXRpb24tZGVsYXk6IC0xMDBtczsNCiAgLW8tYW5pbWF0aW9uLWRlbGF5OiAtMTAwbXM7DQogIGFuaW1hdGlvbi1kZWxheTogLTEwMG1zOyB9DQoNCi5sYS1iYWxsLWZhbGwgPiBkaXY6bnRoLWNoaWxkKDMpIHsNCiAgLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IDBtczsNCiAgLW1vei1hbmltYXRpb24tZGVsYXk6IDBtczsNCiAgLW8tYW5pbWF0aW9uLWRlbGF5OiAwbXM7DQogIGFuaW1hdGlvbi1kZWxheTogMG1zOyB9DQoNCi5sYS1iYWxsLWZhbGwubGEtc20gew0KICB3aWR0aDogMjZweDsNCiAgaGVpZ2h0OiA4cHg7IH0NCg0KLmxhLWJhbGwtZmFsbC5sYS1zbSA+IGRpdiB7DQogIHdpZHRoOiA0cHg7DQogIGhlaWdodDogNHB4Ow0KICBtYXJnaW46IDJweDsgfQ0KDQoubGEtYmFsbC1mYWxsLmxhLTJ4IHsNCiAgd2lkdGg6IDEwOHB4Ow0KICBoZWlnaHQ6IDM2cHg7IH0NCg0KLmxhLWJhbGwtZmFsbC5sYS0yeCA+IGRpdiB7DQogIHdpZHRoOiAyMHB4Ow0KICBoZWlnaHQ6IDIwcHg7DQogIG1hcmdpbjogOHB4OyB9DQoNCi5sYS1iYWxsLWZhbGwubGEtM3ggew0KICB3aWR0aDogMTYycHg7DQogIGhlaWdodDogNTRweDsgfQ0KDQoubGEtYmFsbC1mYWxsLmxhLTN4ID4gZGl2IHsNCiAgd2lkdGg6IDMwcHg7DQogIGhlaWdodDogMzBweDsNCiAgbWFyZ2luOiAxMnB4OyB9DQoNCi8qDQogKiBBbmltYXRpb24NCiAqLw0KQC13ZWJraXQta2V5ZnJhbWVzIGJhbGwtZmFsbCB7DQogIDAlIHsNCiAgICBvcGFjaXR5OiAwOw0KICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xNDUlKTsNCiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTE0NSUpOyB9DQogIDEwJSB7DQogICAgb3BhY2l0eTogLjU7IH0NCiAgMjAlIHsNCiAgICBvcGFjaXR5OiAxOw0KICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOw0KICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsgfQ0KICA4MCUgew0KICAgIG9wYWNpdHk6IDE7DQogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7DQogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOyB9DQogIDkwJSB7DQogICAgb3BhY2l0eTogLjU7IH0NCiAgMTAwJSB7DQogICAgb3BhY2l0eTogMDsNCiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxNDUlKTsNCiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTQ1JSk7IH0gfQ0KDQpALW1vei1rZXlmcmFtZXMgYmFsbC1mYWxsIHsNCiAgMCUgew0KICAgIG9wYWNpdHk6IDA7DQogICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTE0NSUpOw0KICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTQ1JSk7IH0NCiAgMTAlIHsNCiAgICBvcGFjaXR5OiAuNTsgfQ0KICAyMCUgew0KICAgIG9wYWNpdHk6IDE7DQogICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7DQogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOyB9DQogIDgwJSB7DQogICAgb3BhY2l0eTogMTsNCiAgICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsNCiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7IH0NCiAgOTAlIHsNCiAgICBvcGFjaXR5OiAuNTsgfQ0KICAxMDAlIHsNCiAgICBvcGFjaXR5OiAwOw0KICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDE0NSUpOw0KICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxNDUlKTsgfSB9DQoNCkAtby1rZXlmcmFtZXMgYmFsbC1mYWxsIHsNCiAgMCUgew0KICAgIG9wYWNpdHk6IDA7DQogICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xNDUlKTsNCiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTE0NSUpOyB9DQogIDEwJSB7DQogICAgb3BhY2l0eTogLjU7IH0NCiAgMjAlIHsNCiAgICBvcGFjaXR5OiAxOw0KICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsNCiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7IH0NCiAgODAlIHsNCiAgICBvcGFjaXR5OiAxOw0KICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsNCiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7IH0NCiAgOTAlIHsNCiAgICBvcGFjaXR5OiAuNTsgfQ0KICAxMDAlIHsNCiAgICBvcGFjaXR5OiAwOw0KICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxNDUlKTsNCiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTQ1JSk7IH0gfQ0KDQpAa2V5ZnJhbWVzIGJhbGwtZmFsbCB7DQogIDAlIHsNCiAgICBvcGFjaXR5OiAwOw0KICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xNDUlKTsNCiAgICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTQ1JSk7DQogICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xNDUlKTsNCiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTE0NSUpOyB9DQogIDEwJSB7DQogICAgb3BhY2l0eTogLjU7IH0NCiAgMjAlIHsNCiAgICBvcGFjaXR5OiAxOw0KICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOw0KICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOw0KICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsNCiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7IH0NCiAgODAlIHsNCiAgICBvcGFjaXR5OiAxOw0KICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOw0KICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOw0KICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsNCiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7IH0NCiAgOTAlIHsNCiAgICBvcGFjaXR5OiAuNTsgfQ0KICAxMDAlIHsNCiAgICBvcGFjaXR5OiAwOw0KICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDE0NSUpOw0KICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDE0NSUpOw0KICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgxNDUlKTsNCiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTQ1JSk7IH0gfQ0KeyJtb2RlIjoiZnVsbCIsImlzQWN0aXZlIjpmYWxzZX0NCi50b2FzdC10aXRsZSB7DQogIGZvbnQtd2VpZ2h0OiBib2xkOw0KfQ0KLnRvYXN0LW1lc3NhZ2Ugew0KICAtbXMtd29yZC13cmFwOiBicmVhay13b3JkOw0KICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7DQp9DQoudG9hc3QtbWVzc2FnZSBhLA0KLnRvYXN0LW1lc3NhZ2UgbGFiZWwgew0KICBjb2xvcjogI0ZGRkZGRjsNCn0NCi50b2FzdC1tZXNzYWdlIGE6aG92ZXIgew0KICBjb2xvcjogI0NDQ0NDQzsNCiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOw0KfQ0KLnRvYXN0LWNsb3NlLWJ1dHRvbiB7DQogIHBvc2l0aW9uOiByZWxhdGl2ZTsNCiAgcmlnaHQ6IC0wLjNlbTsNCiAgdG9wOiAtMC4zZW07DQogIGZsb2F0OiByaWdodDsNCiAgZm9udC1zaXplOiAyMHB4Ow0KICBmb250LXdlaWdodDogYm9sZDsNCiAgY29sb3I6ICNGRkZGRkY7DQogIC13ZWJraXQtdGV4dC1zaGFkb3c6IDAgMXB4IDAgI2ZmZmZmZjsNCiAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI2ZmZmZmZjsNCiAgb3BhY2l0eTogMC44Ow0KICAtbXMtZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT04MCk7DQogIGZpbHRlcjogYWxwaGEob3BhY2l0eT04MCk7DQogIGxpbmUtaGVpZ2h0OiAxOw0KfQ0KLnRvYXN0LWNsb3NlLWJ1dHRvbjpob3ZlciwNCi50b2FzdC1jbG9zZS1idXR0b246Zm9jdXMgew0KICBjb2xvcjogIzAwMDAwMDsNCiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOw0KICBjdXJzb3I6IHBvaW50ZXI7DQogIG9wYWNpdHk6IDAuNDsNCiAgLW1zLWZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9NDApOw0KICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9NDApOw0KfQ0KLnJ0bCAudG9hc3QtY2xvc2UtYnV0dG9uIHsNCiAgbGVmdDogLTAuM2VtOw0KICBmbG9hdDogbGVmdDsNCiAgcmlnaHQ6IDAuM2VtOw0KfQ0KLypBZGRpdGlvbmFsIHByb3BlcnRpZXMgZm9yIGJ1dHRvbiB2ZXJzaW9uDQogaU9TIHJlcXVpcmVzIHRoZSBidXR0b24gZWxlbWVudCBpbnN0ZWFkIG9mIGFuIGFuY2hvciB0YWcuDQogSWYgeW91IHdhbnQgdGhlIGFuY2hvciB2ZXJzaW9uLCBpdCByZXF1aXJlcyBgaHJlZj0iIyJgLiovDQpidXR0b24udG9hc3QtY2xvc2UtYnV0dG9uIHsNCiAgcGFkZGluZzogMDsNCiAgY3Vyc29yOiBwb2ludGVyOw0KICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsNCiAgYm9yZGVyOiAwOw0KICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7DQp9DQoudG9hc3QtdG9wLWNlbnRlciB7DQogIHRvcDogMDsNCiAgcmlnaHQ6IDA7DQogIHdpZHRoOiAxMDAlOw0KfQ0KLnRvYXN0LWJvdHRvbS1jZW50ZXIgew0KICBib3R0b206IDA7DQogIHJpZ2h0OiAwOw0KICB3aWR0aDogMTAwJTsNCn0NCi50b2FzdC10b3AtZnVsbC13aWR0aCB7DQogIHRvcDogMDsNCiAgcmlnaHQ6IDA7DQogIHdpZHRoOiAxMDAlOw0KfQ0KLnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoIHsNCiAgYm90dG9tOiAwOw0KICByaWdodDogMDsNCiAgd2lkdGg6IDEwMCU7DQp9DQoudG9hc3QtdG9wLWxlZnQgew0KICB0b3A6IDEycHg7DQogIGxlZnQ6IDEycHg7DQp9DQoudG9hc3QtdG9wLXJpZ2h0IHsNCiAgdG9wOiAxMnB4Ow0KICByaWdodDogMTJweDsNCn0NCi50b2FzdC1ib3R0b20tcmlnaHQgew0KICByaWdodDogMTJweDsNCiAgYm90dG9tOiAxMnB4Ow0KfQ0KLnRvYXN0LWJvdHRvbS1sZWZ0IHsNCiAgYm90dG9tOiAxMnB4Ow0KICBsZWZ0OiAxMnB4Ow0KfQ0KLnRvYXN0LWNvbnRhaW5lciB7DQogIHBvc2l0aW9uOiBmaXhlZDsNCiAgei1pbmRleDogOTk5OTk5Ow0KICBwb2ludGVyLWV2ZW50czogbm9uZTsNCiAgLypvdmVycmlkZXMqLw0KfQ0KLnRvYXN0LWNvbnRhaW5lciAqIHsNCiAgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94Ow0KICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7DQogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7DQp9DQoudG9hc3QtY29udGFpbmVyID4gZGl2IHsNCiAgcG9zaXRpb246IHJlbGF0aXZlOw0KICBwb2ludGVyLWV2ZW50czogYXV0bzsNCiAgb3ZlcmZsb3c6IGhpZGRlbjsNCiAgbWFyZ2luOiAwIDAgNnB4Ow0KICBwYWRkaW5nOiAxNXB4IDE1cHggMTVweCA1MHB4Ow0KICB3aWR0aDogMzAwcHg7DQogIC1tb3otYm9yZGVyLXJhZGl1czogM3B4IDNweCAzcHggM3B4Ow0KICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDNweCAzcHggM3B4IDNweDsNCiAgYm9yZGVyLXJhZGl1czogM3B4IDNweCAzcHggM3B4Ow0KICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAxNXB4IGNlbnRlcjsNCiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsNCiAgLW1vei1ib3gtc2hhZG93OiAwIDAgMTJweCAjOTk5OTk5Ow0KICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAxMnB4ICM5OTk5OTk7DQogIGJveC1zaGFkb3c6IDAgMCAxMnB4ICM5OTk5OTk7DQogIGNvbG9yOiAjRkZGRkZGOw0KICBvcGFjaXR5OiAwLjg7DQogIC1tcy1maWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTgwKTsNCiAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTgwKTsNCn0NCi50b2FzdC1jb250YWluZXIgPiBkaXYucnRsIHsNCiAgZGlyZWN0aW9uOiBydGw7DQogIHBhZGRpbmc6IDE1cHggNTBweCAxNXB4IDE1cHg7DQogIGJhY2tncm91bmQtcG9zaXRpb246IHJpZ2h0IDE1cHggY2VudGVyOw0KfQ0KLnRvYXN0LWNvbnRhaW5lciA+IGRpdjpob3ZlciB7DQogIC1tb3otYm94LXNoYWRvdzogMCAwIDEycHggIzAwMDAwMDsNCiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMTJweCAjMDAwMDAwOw0KICBib3gtc2hhZG93OiAwIDAgMTJweCAjMDAwMDAwOw0KICBvcGFjaXR5OiAxOw0KICAtbXMtZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApOw0KICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MTAwKTsNCiAgY3Vyc29yOiBwb2ludGVyOw0KfQ0KLnRvYXN0LWNvbnRhaW5lciA+IC50b2FzdC1pbmZvIHsNCiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR3dTVVJCVkVoTHRaYTlTZ05CRU1jOXNVeHhSY29VS1N6U1dJaFhwRk1oaFlXRmhhQmc0eVBZaVdDWFp4QkxFUnNMUlMzRVFrRWZ3Q0tkaldKQXdTS0Nnb0tDY3VkdjRPNVlMcnQ3RXpnWGhpVTMvNCtiMmNrbXdWakpTcEtrUTZ3QWk0Z3doVCt6M3dSQmNFejB5alNzZVVUcmNSeWZzSHNYbUQwQW1iSE9DOUlpOFZJbW51WEJQZ2xIcFE1d3dTVk03c05uVEc3WmE0SndEZENqeHlBaUgzbnlBMm10YVRKdWZpRFo1ZENhcWxJdElMaDFOSGF0Zk41c2t2ang5WjM4bTY5Q2d6dVhtWmdWclBJR0U3NjNKeDlxS3NSb3pXWXc2eE9IZEVSK25uMktrTytCYitVVjVDQk42V0M2UXRCZ2JSVm96cmFoQWJtbTZIdFVzZ3RQQzE5dEZkeFhaWUJPZmtibUZKMVZhSEExVkFIamQwcHA3MG9UWnp2UitFVnJ4MllnZmRzcTZldTU1QkhZUjhobGNraStuK2tFUlVGRzhCckEwQndqZUF2Mk04V0xRQnRjeStTRDZmTnNtbkIzQWxCTHJnVHRWVzFjMlFONGJWV0xBVGFJUzYwSjJEdTV5MVRpSmdqU0J2RlZaZ1Rtd0NVK2RBWkZvUHhHRUVzOG55SEM5QndlMkd2RUp2MldYWmIwdmpkeUZUNEN4azNlL2tJcWxPR29WTHd3UGV2cFlIVCswMFQraFd3WERmNEFKQU9VcVdjRGhid0FBQUFBU1VWT1JLNUNZSUk9IikgIWltcG9ydGFudDsNCn0NCi50b2FzdC1jb250YWluZXIgPiAudG9hc3QtZXJyb3Igew0KICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUFIT1NVUkJWRWhMclphL1NnTkJFTVp6aDBXS0NDbFNDS2FJWU9FRCtBQUtlUVFMRzhIV3p0TENJbUJyWWFkZ0lkWStnSUtOWWtCRlN3dTdDQW9xQ2dra29HQkkvRTI4UGRiTFptZURMZ3paemN4ODMveloyU1NYQzFqOWZyK0kxSHE5M2cyeXhINGl3TTF2a29CV0FkeENtcHpUeGZrTjJSY3laTmFIRklrU28xMCs4a2d4a1hJVVJWNUhHeFRtRnVjNzVCMlJmUWtweEhHOGFBZ2FBRmEwdEFIcVlGZlE3SXdlMnloT0RrOCtKNEM3eUFvUlRXSTN3LzRrbEdSZ1I0bE83UnBuOStndk15V3ArdXhGaDgrSCtBUmxnTjFuSnVKdVFBWXZOa0Vud0dGY2sxOEVyNHEzZWdFYy9vTyttaExkS2dSeWhkTkZpYWNDMHJsT0NiaE5WejRIOUZuQVlnREJ2VTNRSWlvWmxKRkxKdHNvSFlSRGZpWm9VeUl4cUN0UnBWbEFOcTBFVTRkQXBqcnRnZXpQRmFkNVMxOVdnamtjMGhOVm51RjRIalZBNkM3UXJTSWJ5bEIrb1plM2FIZ0JzcWxOcUtZSDQ4alh5SktNdUFiaXlWSjhLemFCM2VSYzBwZzlWd1E0bmlGcnlJNjhxaU9pM0Fiandkc2ZuQXRrMGJDalRMSktyNm1yRDlnOGlxL1MvQjgxaGd1T01sUVRuVnlHNDB3QWNqbm1nc0NORVNEcmptZTd3ZmZ0UDRQN1NQNE4zQ0paZHZ6b055R3EyYy9IV09YSkdzdlZnK1JBL2syTUMvd042STJZQTJQdDhHa0FBQUFBU1VWT1JLNUNZSUk9IikgIWltcG9ydGFudDsNCn0NCi50b2FzdC1jb250YWluZXIgPiAudG9hc3Qtc3VjY2VzcyB7DQogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCZ0FBQUFZQ0FZQUFBRGdkejM0QUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzTUFBQTdEQWNkdnFHUUFBQURzU1VSQlZFaExZMkFZQmZRTWdmLy8vM1A4Ky9ldkFJZ3ZBL0ZzSUYrQmF2WUREV01CR3JvYVNNTUJpRThWQzdBWkRySUZhTUZuaWkzQVpUalVnc1VVV1VEQThPZEFINmlRYlFFaHc0SHlHc1BFY0tCWEJJQzRBUmhleDRHNEJzam13ZVUxc29JRmFHZy9XdG9GWlJJWmRFdklNaHhrQ0NqWElWc0FUVjZnRkdBQ3M0UnN3MEVHZ0lJSDNRSllKZ0hTQVJRWkRyV0FCK2phd3pncytRMlVPNDlEN2puUlNSR29FRlJJTGNkbUVNV0dJMGNtMEpKMlFwWUExUkR2Y216SkVXaEFCaEQvcHFyTDBTMENXdUFCS2duUmtpOWxMc2VTN2cyQWxxd0hXUVNLSDRvS0xySUxwUkdoRVFDdzJMaVJVSWE0bHdBQUFBQkpSVTVFcmtKZ2dnPT0iKSAhaW1wb3J0YW50Ow0KfQ0KLnRvYXN0LWNvbnRhaW5lciA+IC50b2FzdC13YXJuaW5nIHsNCiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR1lTVVJCVkVoTDVaU3ZUc05RRk1iWFpHSUNNWUdZbUpoQVFJSkFJQ1lRUEFBQ2lTREI4QWlJQ1FRSlQ0Q3FRRXdnSnZZQVNBUUNpWmlZbUpoQUlCQVRDQVJKeSs5clRzbGRkOHNLdTFNMCtkTGIwNTd2Ni9sYnEvMnJLMG1TL1RSTmo5Y1dOQUtQWUlKSUk3Z0l4Q2NRNTFjdnFJRCtHSUVYOEFTRzRCMWJLNWdJWkZlUWZvSmRFWE9mZ1g0UUFRZzdrSDJBNjV5UTg3bHl4YjI3c2dna0F6QXVGaGJiZzFLMmtnQ2tCMWJWd3lJUjltMkw3UFJQSWhEVUlYZ0d0eUt3NTc1eXozbFROczZYNEpYbmpWK0xLTS9tM015ZG5UYnRPS0lqdHo2VmhDQnE0dlNtM25jZHJEMmxrMFZnVVhTVktqVkRKWEp6aWpXMVJRZHNVN0Y3N0hlOHU2OGtvTlpUejhPejV5R2E2SjNIM2xaMHhZZ1hCSzJReW1sV1dBK1JXblloc2tMQnYydm1FK2hCTUN0YkE3S1g1ZHJXeVJULzJKc3FaMkl2ZkI5WTRiV0ROTUZiSlJGbUM5RTc0U29TMENxdWx3amtDMCs1YnBjVjFDWjhOTWVqNHBqeTBVK2RvRFFzR3lvMWh6Vkp0dElqaFE3R25CdFJGTjFVYXJVbEg4RjN4aWN0K0hZMDdyRXpvVUdQbFdjalJGUnI0L2dDaFpnYzNaTDJkOG9BQUFBQVNVVk9SSzVDWUlJPSIpICFpbXBvcnRhbnQ7DQp9DQoudG9hc3QtY29udGFpbmVyLnRvYXN0LXRvcC1jZW50ZXIgPiBkaXYsDQoudG9hc3QtY29udGFpbmVyLnRvYXN0LWJvdHRvbS1jZW50ZXIgPiBkaXYgew0KICB3aWR0aDogMzAwcHg7DQogIG1hcmdpbi1sZWZ0OiBhdXRvOw0KICBtYXJnaW4tcmlnaHQ6IGF1dG87DQp9DQoudG9hc3QtY29udGFpbmVyLnRvYXN0LXRvcC1mdWxsLXdpZHRoID4gZGl2LA0KLnRvYXN0LWNvbnRhaW5lci50b2FzdC1ib3R0b20tZnVsbC13aWR0aCA+IGRpdiB7DQogIHdpZHRoOiA5NiU7DQogIG1hcmdpbi1sZWZ0OiBhdXRvOw0KICBtYXJnaW4tcmlnaHQ6IGF1dG87DQp9DQoudG9hc3Qgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDMwMzAzOw0KfQ0KLnRvYXN0LXN1Y2Nlc3Mgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjNTFBMzUxOw0KfQ0KLnRvYXN0LWVycm9yIHsNCiAgYmFja2dyb3VuZC1jb2xvcjogI0JEMzYyRjsNCn0NCi50b2FzdC1pbmZvIHsNCiAgYmFja2dyb3VuZC1jb2xvcjogIzJGOTZCNDsNCn0NCi50b2FzdC13YXJuaW5nIHsNCiAgYmFja2dyb3VuZC1jb2xvcjogI0Y4OTQwNjsNCn0NCi50b2FzdC1wcm9ncmVzcyB7DQogIHBvc2l0aW9uOiBhYnNvbHV0ZTsNCiAgbGVmdDogMDsNCiAgYm90dG9tOiAwOw0KICBoZWlnaHQ6IDRweDsNCiAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDsNCiAgb3BhY2l0eTogMC40Ow0KICAtbXMtZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT00MCk7DQogIGZpbHRlcjogYWxwaGEob3BhY2l0eT00MCk7DQp9DQovKlJlc3BvbnNpdmUgRGVzaWduKi8NCkBtZWRpYSBhbGwgYW5kIChtYXgtd2lkdGg6IDI0MHB4KSB7DQogIC50b2FzdC1jb250YWluZXIgPiBkaXYgew0KICAgIHBhZGRpbmc6IDhweCA4cHggOHB4IDUwcHg7DQogICAgd2lkdGg6IDExZW07DQogIH0NCiAgLnRvYXN0LWNvbnRhaW5lciA+IGRpdi5ydGwgew0KICAgIHBhZGRpbmc6IDhweCA1MHB4IDhweCA4cHg7DQogIH0NCiAgLnRvYXN0LWNvbnRhaW5lciAudG9hc3QtY2xvc2UtYnV0dG9uIHsNCiAgICByaWdodDogLTAuMmVtOw0KICAgIHRvcDogLTAuMmVtOw0KICB9DQogIC50b2FzdC1jb250YWluZXIgLnJ0bCAudG9hc3QtY2xvc2UtYnV0dG9uIHsNCiAgICBsZWZ0OiAtMC4yZW07DQogICAgcmlnaHQ6IDAuMmVtOw0KICB9DQp9DQpAbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiAyNDFweCkgYW5kIChtYXgtd2lkdGg6IDQ4MHB4KSB7DQogIC50b2FzdC1jb250YWluZXIgPiBkaXYgew0KICAgIHBhZGRpbmc6IDhweCA4cHggOHB4IDUwcHg7DQogICAgd2lkdGg6IDE4ZW07DQogIH0NCiAgLnRvYXN0LWNvbnRhaW5lciA+IGRpdi5ydGwgew0KICAgIHBhZGRpbmc6IDhweCA1MHB4IDhweCA4cHg7DQogIH0NCiAgLnRvYXN0LWNvbnRhaW5lciAudG9hc3QtY2xvc2UtYnV0dG9uIHsNCiAgICByaWdodDogLTAuMmVtOw0KICAgIHRvcDogLTAuMmVtOw0KICB9DQogIC50b2FzdC1jb250YWluZXIgLnJ0bCAudG9hc3QtY2xvc2UtYnV0dG9uIHsNCiAgICBsZWZ0OiAtMC4yZW07DQogICAgcmlnaHQ6IDAuMmVtOw0KICB9DQp9DQpAbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOiA0ODFweCkgYW5kIChtYXgtd2lkdGg6IDc2OHB4KSB7DQogIC50b2FzdC1jb250YWluZXIgPiBkaXYgew0KICAgIHBhZGRpbmc6IDE1cHggMTVweCAxNXB4IDUwcHg7DQogICAgd2lkdGg6IDI1ZW07DQogIH0NCiAgLnRvYXN0LWNvbnRhaW5lciA+IGRpdi5ydGwgew0KICAgIHBhZGRpbmc6IDE1cHggNTBweCAxNXB4IDE1cHg7DQogIH0NCn0NCnsibW9kZSI6ImZ1bGwiLCJpc0FjdGl2ZSI6ZmFsc2V9DQojdG9hc3QtY29udGFpbmVyID4gZGl2IHsNCiAgb3BhY2l0eTogMC45Ow0KICAtbXMtZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT05MCk7DQogIGZpbHRlcjogYWxwaGEob3BhY2l0eT05MCk7IH0NCg0KI3RvYXN0LWNvbnRhaW5lciA+IGRpdjpob3ZlciB7DQogIC13ZWJraXQtYm94LXNoYWRvdzogMnB4IDJweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuNzUpOw0KICAtbW96LWJveC1zaGFkb3c6IDJweCAycHggMTBweCAwcHggcmdiYSgwLCAwLCAwLCAwLjc1KTsNCiAgYm94LXNoYWRvdzogMnB4IDJweCAxMHB4IDBweCByZ2JhKDAsIDAsIDAsIDAuNzUpOyB9DQoNCi50b2FzdCB7DQogIGJhY2tncm91bmQtY29sb3I6ICM2NjZFRTg7IH0NCg0KLnRvYXN0LXN1Y2Nlc3Mgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjhEMDk0OyB9DQoNCi50b2FzdC1lcnJvciB7DQogIGJhY2tncm91bmQtY29sb3I6ICNGRjQ5NjE7IH0NCg0KLnRvYXN0LWluZm8gew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjMUU5RkYyOyB9DQoNCi50b2FzdC13YXJuaW5nIHsNCiAgYmFja2dyb3VuZC1jb2xvcjogI0ZGOTE0OTsgfQ=="}},"time_used":270,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":262,"receive":8,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.gstatic.com/images/branding/product/2x/translate_24dp.png","fqdn":"www.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.74.99","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://clear-vault.online/","date":"2025-08-07T20:48:22.306Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.gstatic.com","organization":""},"issuer":{"commonName":"WR2","organization":"Google Trust Services"},"validity":{"start":"Mon, 07 Jul 2025 08:35:11 GMT","end":"Mon, 29 Sep 2025 08:35:10 GMT"},"fingerprint":{"sha1":"43:A0:95:35:FB:C7:02:15:92:9E:20:20:0D:0A:E7:8F:93:61:52:CD","sha256":"F1:59:AE:4E:F0:84:C7:D9:0F:67:4F:CB:FE:A6:ED:7D:47:17:4F:83:AA:B4:ED:FE:F5:F2:69:A8:AB:43:0E:0B"}}},"request":{"raw":"GET /images/branding/product/2x/translate_24dp.png HTTP/1.1\r\nHost: www.gstatic.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,*/*\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate, br\r\nDNT: 1\r\nConnection: keep-alive\r\nReferer: https://www.gstatic.com/_/translate_http/_/ss/k=translate_http.tr.MOhKAPSS1-s.L.F4.O/am=hMA/d=0/rs=AN8SPfoSvcbOnFdaxQP_x8te6jzGQof28w/m=el_main_css\r\nSec-Fetch-Dest: image\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/3 200 OK\r\naccept-ranges: bytes\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy-report-only: same-origin; report-to=\"static-on-bigtable\"\r\nreport-to: {\"group\":\"static-on-bigtable\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/static-on-bigtable\"}]}\r\ncontent-length: 1842\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Thu, 07 Aug 2025 10:03:40 GMT\r\nexpires: Fri, 07 Aug 2026 10:03:40 GMT\r\ncache-control: public, max-age=31536000\r\nlast-modified: Thu, 14 Oct 2021 09:08:00 GMT\r\ncontent-type: image/png\r\nvary: Origin\r\nage: 38682\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":"OK","fingerprints":null,"data":{"size":1842,"size_decoded":0,"mime_type":"image/png","magic":"PNG image data, 48 x 48, 8-bit/color RGBA, non-interlaced","md5":"c69c796362406f9e11c7f4bf5bb628da","sha1":"e489ce95ab56208090868882113d7416abf46775","sha256":"4dac0026fbfa2615dce30c0af12830863fe885f84387a0147b9e338f548d5d82","sha512":"d3ad560ed0fd29be7d2cc434694f09e5a6fbea8b29c0611aecb54a1b73b4d722c53f42a19dae9e3d5d358444e50fb8fffbc39d67ce751bdbc8c861f6f95d3162","ssdeep":"","tlshash":"4e31f9fd129220437101ade72165eef798347c15f412da60ce65ba389c9fe20ed9a619","first_seen":"2023-04-05T07:39:29Z","last_seen":"2026-08-11T16:44:06.772718Z","times_seen":74451,"resource_available":false,"data":"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"}},"time_used":23,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":23,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"clear-vault.online/myaccount/assets/loader.css","fqdn":"clear-vault.online","domain":"clear-vault.online","tld":"online"},"ip":{"addr":"163.61.188.222","port":443,"asn":0,"as":"","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://clear-vault.online/","date":"2025-08-07T20:48:21.182Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.clear-vault.online","organization":""},"issuer":{"commonName":"R10","organization":"Let's Encrypt"},"validity":{"start":"Mon, 16 Jun 2025 11:19:04 GMT","end":"Sun, 14 Sep 2025 11:19:03 GMT"},"fingerprint":{"sha1":"B5:E4:FF:81:2F:18:5B:84:17:4F:FD:F3:B1:30:00:31:3C:9C:0B:6F","sha256":"D8:BC:E6:FB:32:84:D6:43:47:2F:20:BA:56:C3:6C:DA:94:89:5F:DD:A3:3B:02:B9:36:2B:50:1E:79:03:E9:D6"}}},"request":{"raw":"GET /myaccount/assets/loader.css HTTP/1.1\r\nHost: clear-vault.online\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.5\r\nAccept-Encoding: gzip, deflate, br\r\nDNT: 1\r\nConnection: keep-alive\r\nReferer: https://clear-vault.online/\r\nCookie: PHPSESSID=1f922d27e0c65bdcb87ee1a396055a92\r\nSec-Fetch-Dest: style\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/3 200 OK\r\ncache-control: public, max-age=604800\r\nexpires: Thu, 14 Aug 2025 20:48:21 GMT\r\ncontent-type: text/css\r\nlast-modified: Thu, 11 May 2023 18:14:16 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 578\r\ndate: Thu, 07 Aug 2025 20:48:21 GMT\r\nserver: LiteSpeed\r\nstrict-transport-security: max-age=16070400;\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","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":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":3617,"size_decoded":0,"mime_type":"text/css","magic":"ASCII text, with CRLF line terminators","md5":"5dc86e51fff310ec87ff42bc1ab4bb8e","sha1":"be619a03082ea8771c27cc8c0a00f30d6aad2eb6","sha256":"86ef9caf2b9c6edfe487f2e021b24c09f9f0ab896db889a7bf4f69a2da6f152d","sha512":"3af5304bcfce6c7390ae3fe8f4b977a8f8ad343beeff75dd607590dda76240ebd8af103f7d117ed5094508d975c38598e9815affc5a6df043518e216564fd9ac","ssdeep":"","tlshash":"9a7113a65e424089f732061de3f59e24dd7cdf1354060eafb210289e93796e41ae2b77","first_seen":"2023-05-28T20:04:51Z","last_seen":"2026-08-11T12:54:12.929522Z","times_seen":217,"resource_available":false,"data":"DQoucHJlbG9hZGVyeyBwb3NpdGlvbjpmaXhlZDsgbGVmdDowcHg7IHRvcDowcHg7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyB6LWluZGV4Ojk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOyBiYWNrZ3JvdW5kLXBvc2l0aW9uOmNlbnRlciBjZW50ZXI7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYmFja2dyb3VuZC1pbWFnZTp1cmwoLi4vaW1hZ2VzL3ByZWxvYWRlci5naWYpOyBiYWNrZ3JvdW5kLXNpemU6MTAwcHg7fQ0KDQppbWd7DQoJZGlzcGxheTppbmxpbmUtYmxvY2s7DQoJbWF4LXdpZHRoOjEwMCU7DQoJaGVpZ2h0OmF1dG87CQ0KfQ0KDQogI3ByZWxvYWRlci13cmFwcGVyIHsNCglwb3NpdGlvbjogZml4ZWQ7DQoJYmFja2dyb3VuZC1jb2xvcjogI2ZkZmFmODsNCgl6LWluZGV4OiAxMDAwMDsNCgl3aWR0aDogMTAwJTsNCgloZWlnaHQ6IDEwMCU7IA0KCWJhY2tncm91bmQtcG9zaXRpb246Y2VudGVyIGNlbnRlcjsgIGJhY2tncm91bmQtc2l6ZToxMDBweDsNCn0NCg0KICAucHJlbG9hZGVyLWNvbnRhaW5lciB7DQoJcG9zaXRpb246IHJlbGF0aXZlOw0KCXdpZHRoOiA4MnB4Ow0KCWhlaWdodDogODJweDsNCglsZWZ0OiA1MCU7DQoJdG9wOiA1MCU7DQoJbWFyZ2luLXRvcDogLTQxcHg7DQoJbWFyZ2luLWxlZnQ6IC00MXB4OyB9DQoJLnByZWxvYWRlci1jb250YWluZXIgPiBkaXYgew0KCSAgcG9zaXRpb246IHJlbGF0aXZlOw0KCSAgd2lkdGg6IDI1cHg7DQoJICBoZWlnaHQ6IDI1cHg7DQoJICBtYXJnaW46IDFweDsNCgkgIGZsb2F0OiBsZWZ0Ow0KCSAgYmFja2dyb3VuZDogdG9tYXRvOw0KCSAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDApOw0KCSAgLW1vei10cmFuc2Zvcm06IHNjYWxlKDApOw0KCSAgLW1zLXRyYW5zZm9ybTogc2NhbGUoMCk7DQoJICAtby10cmFuc2Zvcm06IHNjYWxlKDApOw0KCSAgdHJhbnNmb3JtOiBzY2FsZSgwKTsNCgkgIC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjsNCgkgIC1tb3otdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjsNCgkgIC1tcy10cmFuc2Zvcm0tb3JpZ2luOiBjZW50ZXIgY2VudGVyOw0KCSAgLW8tdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjsNCgkgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7DQoJICAtd2Via2l0LWFuaW1hdGlvbjogbG9hZGVyIDJzIGluZmluaXRlIGxpbmVhcjsNCgkgIC1tb3otYW5pbWF0aW9uOiBsb2FkZXIgMnMgaW5maW5pdGUgbGluZWFyOw0KCSAgLW8tYW5pbWF0aW9uOiBsb2FkZXIgMnMgaW5maW5pdGUgbGluZWFyOw0KCSAgYW5pbWF0aW9uOiBsb2FkZXIgMnMgaW5maW5pdGUgbGluZWFyOyB9DQoJICAucHJlbG9hZGVyLWNvbnRhaW5lciA+IGRpdjpudGgtb2YtdHlwZSgxKSwgLnByZWxvYWRlci1jb250YWluZXIgPiBkaXY6bnRoLW9mLXR5cGUoNSksIC5wcmVsb2FkZXItY29udGFpbmVyID4gZGl2Om50aC1vZi10eXBlKDkpIHsNCgkJLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IDAuNHM7DQoJCS1tb3otYW5pbWF0aW9uLWRlbGF5OiAwLjRzOw0KCQktby1hbmltYXRpb24tZGVsYXk6IDAuNHM7DQoJCWFuaW1hdGlvbi1kZWxheTogMC40czsgfQ0KCSAgLnByZWxvYWRlci1jb250YWluZXIgPiBkaXY6bnRoLW9mLXR5cGUoNCksIC5wcmVsb2FkZXItY29udGFpbmVyID4gZGl2Om50aC1vZi10eXBlKDgpIHsNCgkJLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IDAuMnM7DQoJCS1tb3otYW5pbWF0aW9uLWRlbGF5OiAwLjJzOw0KCQktby1hbmltYXRpb24tZGVsYXk6IDAuMnM7DQoJCWFuaW1hdGlvbi1kZWxheTogMC4yczsgfQ0KCSAgLnByZWxvYWRlci1jb250YWluZXIgPiBkaXY6bnRoLW9mLXR5cGUoMiksIC5wcmVsb2FkZXItY29udGFpbmVyID4gZGl2Om50aC1vZi10eXBlKDYpIHsNCgkJLXdlYmtpdC1hbmltYXRpb24tZGVsYXk6IDAuNnM7DQoJCS1tb3otYW5pbWF0aW9uLWRlbGF5OiAwLjZzOw0KCQktby1hbmltYXRpb24tZGVsYXk6IDAuNnM7DQoJCWFuaW1hdGlvbi1kZWxheTogMC42czsgfQ0KCSAgLnByZWxvYWRlci1jb250YWluZXIgPiBkaXY6bnRoLW9mLXR5cGUoMykgew0KCQktd2Via2l0LWFuaW1hdGlvbi1kZWxheTogMC44czsNCgkJLW1vei1hbmltYXRpb24tZGVsYXk6IDAuOHM7DQoJCS1vLWFuaW1hdGlvbi1kZWxheTogMC44czsNCgkJYW5pbWF0aW9uLWRlbGF5OiAwLjhzOyB9DQogIA0KICBALXdlYmtpdC1rZXlmcmFtZXMgbG9hZGVyIHsNCgkwJSB7DQoJICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMCk7DQoJICB0cmFuc2Zvcm06IHNjYWxlKDApOyB9DQoJNDAlIHsNCgkgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTsNCgkgIHRyYW5zZm9ybTogc2NhbGUoMSk7IH0NCgk4MCUgew0KCSAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpOw0KCSAgdHJhbnNmb3JtOiBzY2FsZSgxKTsgfQ0KCTEwMCUgew0KCSAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDApOw0KCSAgdHJhbnNmb3JtOiBzY2FsZSgwKTsgfSB9DQogIA0KICBALW1vei1rZXlmcmFtZXMgbG9hZGVyIHsNCgkwJSB7DQoJICAtbW96LXRyYW5zZm9ybTogc2NhbGUoMCk7DQoJICB0cmFuc2Zvcm06IHNjYWxlKDApOyB9DQoJNDAlIHsNCgkgIC1tb3otdHJhbnNmb3JtOiBzY2FsZSgxKTsNCgkgIHRyYW5zZm9ybTogc2NhbGUoMSk7IH0NCgk4MCUgew0KCSAgLW1vei10cmFuc2Zvcm06IHNjYWxlKDEpOw0KCSAgdHJhbnNmb3JtOiBzY2FsZSgxKTsgfQ0KCTEwMCUgew0KCSAgLW1vei10cmFuc2Zvcm06IHNjYWxlKDApOw0KCSAgdHJhbnNmb3JtOiBzY2FsZSgwKTsgfSB9DQogIA0KICBALW8ta2V5ZnJhbWVzIGxvYWRlciB7DQoJMCUgew0KCSAgLW8tdHJhbnNmb3JtOiBzY2FsZSgwKTsNCgkgIHRyYW5zZm9ybTogc2NhbGUoMCk7IH0NCgk0MCUgew0KCSAgLW8tdHJhbnNmb3JtOiBzY2FsZSgxKTsNCgkgIHRyYW5zZm9ybTogc2NhbGUoMSk7IH0NCgk4MCUgew0KCSAgLW8tdHJhbnNmb3JtOiBzY2FsZSgxKTsNCgkgIHRyYW5zZm9ybTogc2NhbGUoMSk7IH0NCgkxMDAlIHsNCgkgIC1vLXRyYW5zZm9ybTogc2NhbGUoMCk7DQoJICB0cmFuc2Zvcm06IHNjYWxlKDApOyB9IH0NCiAgDQogIEBrZXlmcmFtZXMgbG9hZGVyIHsNCgkwJSB7DQoJICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMCk7DQoJICAtbW96LXRyYW5zZm9ybTogc2NhbGUoMCk7DQoJICAtby10cmFuc2Zvcm06IHNjYWxlKDApOw0KCSAgdHJhbnNmb3JtOiBzY2FsZSgwKTsgfQ0KCTQwJSB7DQoJICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7DQoJICAtbW96LXRyYW5zZm9ybTogc2NhbGUoMSk7DQoJICAtby10cmFuc2Zvcm06IHNjYWxlKDEpOw0KCSAgdHJhbnNmb3JtOiBzY2FsZSgxKTsgfQ0KCTgwJSB7DQoJICAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7DQoJICAtbW96LXRyYW5zZm9ybTogc2NhbGUoMSk7DQoJICAtby10cmFuc2Zvcm06IHNjYWxlKDEpOw0KCSAgdHJhbnNmb3JtOiBzY2FsZSgxKTsgfQ0KCTEwMCUgew0KCSAgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDApOw0KCSAgLW1vei10cmFuc2Zvcm06IHNjYWxlKDApOw0KCSAgLW8tdHJhbnNmb3JtOiBzY2FsZSgwKTsNCgkgIHRyYW5zZm9ybTogc2NhbGUoMCk7IH0gfQ0KICA="}},"time_used":262,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":262,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"clear-vault.online/myaccount/assets/js/bundle.js?ver=2.4.0","fqdn":"clear-vault.online","domain":"clear-vault.online","tld":"online"},"ip":{"addr":"163.61.188.222","port":443,"asn":0,"as":"","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://clear-vault.online/","date":"2025-08-07T20:48:21.203Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.clear-vault.online","organization":""},"issuer":{"commonName":"R10","organization":"Let's Encrypt"},"validity":{"start":"Mon, 16 Jun 2025 11:19:04 GMT","end":"Sun, 14 Sep 2025 11:19:03 GMT"},"fingerprint":{"sha1":"B5:E4:FF:81:2F:18:5B:84:17:4F:FD:F3:B1:30:00:31:3C:9C:0B:6F","sha256":"D8:BC:E6:FB:32:84:D6:43:47:2F:20:BA:56:C3:6C:DA:94:89:5F:DD:A3:3B:02:B9:36:2B:50:1E:79:03:E9:D6"}}},"request":{"raw":"GET /myaccount/assets/js/bundle.js?ver=2.4.0 HTTP/1.1\r\nHost: clear-vault.online\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.5\r\nAccept-Encoding: gzip, deflate, br\r\nDNT: 1\r\nConnection: keep-alive\r\nReferer: https://clear-vault.online/\r\nCookie: PHPSESSID=1f922d27e0c65bdcb87ee1a396055a92\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/3 200 OK\r\ncontent-type: text/javascript\r\nlast-modified: Thu, 11 May 2023 18:14:15 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 274820\r\ndate: Thu, 07 Aug 2025 20:48:21 GMT\r\nserver: LiteSpeed\r\nstrict-transport-security: max-age=16070400;\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","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":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":939484,"size_decoded":0,"mime_type":"text/javascript","magic":"JavaScript source, Unicode text, UTF-8 text, with very long lines (65534), with no line terminators","md5":"b37367001130299bf41041651172378a","sha1":"e70a5e3774fda09283e90c6dde3d24f365502cbe","sha256":"3a1118ca4ff544e112d6f3d077b4786e57fe09f5e3949a7d2f84283476fe16b8","sha512":"5ab3f4bef917d4ae14c423437ac4c0574eb12ddf2c744c492c0b71f499e9b031099e1738a6c5298220da256899f94af308c5f6be1770cfe9e8dbd0a236cd16e4","ssdeep":"12288:qJ5pqY5WVanOwFHHYlbN7Kq+q7TMzGXhhffJc7Z3Mxa6:qjpqY5WVanOBN7FbXhhHQxk","tlshash":"31151888b281b13543eb30f5006f450fb2376969b40a8498f269d8d96d7cd8e61bbf7d","first_seen":"2023-03-10T15:57:31Z","last_seen":"2026-08-11T12:54:12.915039Z","times_seen":286,"resource_available":true,"data":"IWZ1bmN0aW9uKHQsZSl7InVzZSBzdHJpY3QiOyJvYmplY3QiPT10eXBlb2YgbW9kdWxlJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZS5leHBvcnRzP21vZHVsZS5leHBvcnRzPXQuZG9jdW1lbnQ/ZSh0LCEwKTpmdW5jdGlvbih0KXtpZighdC5kb2N1bWVudCl0aHJvdyBuZXcgRXJyb3IoImpRdWVyeSByZXF1aXJlcyBhIHdpbmRvdyB3aXRoIGEgZG9jdW1lbnQiKTtyZXR1cm4gZSh0KX06ZSh0KX0oInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OnRoaXMsKGZ1bmN0aW9uKHQsZSl7InVzZSBzdHJpY3QiO3ZhciBuPVtdLGk9T2JqZWN0LmdldFByb3RvdHlwZU9mLHI9bi5zbGljZSxvPW4uZmxhdD9mdW5jdGlvbih0KXtyZXR1cm4gbi5mbGF0LmNhbGwodCl9OmZ1bmN0aW9uKHQpe3JldHVybiBuLmNvbmNhdC5hcHBseShbXSx0KX0sYT1uLnB1c2gscz1uLmluZGV4T2YsbD17fSxjPWwudG9TdHJpbmcsdT1sLmhhc093blByb3BlcnR5LGQ9dS50b1N0cmluZyxoPWQuY2FsbChPYmplY3QpLGY9e30scD1mdW5jdGlvbih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdCYmIm51bWJlciIhPXR5cGVvZiB0Lm5vZGVUeXBlfSxnPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT10JiZ0PT09dC53aW5kb3d9LG09dC5kb2N1bWVudCx2PXt0eXBlOiEwLHNyYzohMCxub25jZTohMCxub01vZHVsZTohMH07ZnVuY3Rpb24geSh0LGUsbil7dmFyIGkscixvPShuPW58fG0pLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO2lmKG8udGV4dD10LGUpZm9yKGkgaW4gdikocj1lW2ldfHxlLmdldEF0dHJpYnV0ZSYmZS5nZXRBdHRyaWJ1dGUoaSkpJiZvLnNldEF0dHJpYnV0ZShpLHIpO24uaGVhZC5hcHBlbmRDaGlsZChvKS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG8pfWZ1bmN0aW9uIGIodCl7cmV0dXJuIG51bGw9PXQ/dCsiIjoib2JqZWN0Ij09dHlwZW9mIHR8fCJmdW5jdGlvbiI9PXR5cGVvZiB0P2xbYy5jYWxsKHQpXXx8Im9iamVjdCI6dHlwZW9mIHR9dmFyIHc9IjMuNS4xIix4PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyB4LmZuLmluaXQodCxlKX07ZnVuY3Rpb24gXyh0KXt2YXIgZT0hIXQmJiJsZW5ndGgiaW4gdCYmdC5sZW5ndGgsbj1iKHQpO3JldHVybiFwKHQpJiYhZyh0KSYmKCJhcnJheSI9PT1ufHwwPT09ZXx8Im51bWJlciI9PXR5cGVvZiBlJiYwPGUmJmUtMSBpbiB0KX14LmZuPXgucHJvdG90eXBlPXtqcXVlcnk6dyxjb25zdHJ1Y3Rvcjp4LGxlbmd0aDowLHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gci5jYWxsKHRoaXMpfSxnZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/ci5jYWxsKHRoaXMpOnQ8MD90aGlzW3QrdGhpcy5sZW5ndGhdOnRoaXNbdF19LHB1c2hTdGFjazpmdW5jdGlvbih0KXt2YXIgZT14Lm1lcmdlKHRoaXMuY29uc3RydWN0b3IoKSx0KTtyZXR1cm4gZS5wcmV2T2JqZWN0PXRoaXMsZX0sZWFjaDpmdW5jdGlvbih0KXtyZXR1cm4geC5lYWNoKHRoaXMsdCl9LG1hcDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soeC5tYXAodGhpcywoZnVuY3Rpb24oZSxuKXtyZXR1cm4gdC5jYWxsKGUsbixlKX0pKSl9LHNsaWNlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKHIuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0sZmlyc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgwKX0sbGFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKC0xKX0sZXZlbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayh4LmdyZXAodGhpcywoZnVuY3Rpb24odCxlKXtyZXR1cm4oZSsxKSUyfSkpKX0sb2RkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKHguZ3JlcCh0aGlzLChmdW5jdGlvbih0LGUpe3JldHVybiBlJTJ9KSkpfSxlcTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmxlbmd0aCxuPSt0Kyh0PDA/ZTowKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soMDw9biYmbjxlP1t0aGlzW25dXTpbXSl9LGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnByZXZPYmplY3R8fHRoaXMuY29uc3RydWN0b3IoKX0scHVzaDphLHNvcnQ6bi5zb3J0LHNwbGljZTpuLnNwbGljZX0seC5leHRlbmQ9eC5mbi5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgdCxlLG4saSxyLG8sYT1hcmd1bWVudHNbMF18fHt9LHM9MSxsPWFyZ3VtZW50cy5sZW5ndGgsYz0hMTtmb3IoImJvb2xlYW4iPT10eXBlb2YgYSYmKGM9YSxhPWFyZ3VtZW50c1tzXXx8e30scysrKSwib2JqZWN0Ij09dHlwZW9mIGF8fHAoYSl8fChhPXt9KSxzPT09bCYmKGE9dGhpcyxzLS0pO3M8bDtzKyspaWYobnVsbCE9KHQ9YXJndW1lbnRzW3NdKSlmb3IoZSBpbiB0KWk9dFtlXSwiX19wcm90b19fIiE9PWUmJmEhPT1pJiYoYyYmaSYmKHguaXNQbGFpbk9iamVjdChpKXx8KHI9QXJyYXkuaXNBcnJheShpKSkpPyhuPWFbZV0sbz1yJiYhQXJyYXkuaXNBcnJheShuKT9bXTpyfHx4LmlzUGxhaW5PYmplY3Qobik/bjp7fSxyPSExLGFbZV09eC5leHRlbmQoYyxvLGkpKTp2b2lkIDAhPT1pJiYoYVtlXT1pKSk7cmV0dXJuIGF9LHguZXh0ZW5kKHtleHBhbmRvOiJqUXVlcnkiKyh3K01hdGgucmFuZG9tKCkpLnJlcGxhY2UoL1xEL2csIiIpLGlzUmVhZHk6ITAsZXJyb3I6ZnVuY3Rpb24odCl7dGhyb3cgbmV3IEVycm9yKHQpfSxub29wOmZ1bmN0aW9uKCl7fSxpc1BsYWluT2JqZWN0OmZ1bmN0aW9uKHQpe3ZhciBlLG47cmV0dXJuISghdHx8IltvYmplY3QgT2JqZWN0XSIhPT1jLmNhbGwodCl8fChlPWkodCkpJiYoImZ1bmN0aW9uIiE9dHlwZW9mKG49dS5jYWxsKGUsImNvbnN0cnVjdG9yIikmJmUuY29uc3RydWN0b3IpfHxkLmNhbGwobikhPT1oKSl9LGlzRW1wdHlPYmplY3Q6ZnVuY3Rpb24odCl7dmFyIGU7Zm9yKGUgaW4gdClyZXR1cm4hMTtyZXR1cm4hMH0sZ2xvYmFsRXZhbDpmdW5jdGlvbih0LGUsbil7eSh0LHtub25jZTplJiZlLm5vbmNlfSxuKX0sZWFjaDpmdW5jdGlvbih0LGUpe3ZhciBuLGk9MDtpZihfKHQpKWZvcihuPXQubGVuZ3RoO2k8biYmITEhPT1lLmNhbGwodFtpXSxpLHRbaV0pO2krKyk7ZWxzZSBmb3IoaSBpbiB0KWlmKCExPT09ZS5jYWxsKHRbaV0saSx0W2ldKSlicmVhaztyZXR1cm4gdH0sbWFrZUFycmF5OmZ1bmN0aW9uKHQsZSl7dmFyIG49ZXx8W107cmV0dXJuIG51bGwhPXQmJihfKE9iamVjdCh0KSk/eC5tZXJnZShuLCJzdHJpbmciPT10eXBlb2YgdD9bdF06dCk6YS5jYWxsKG4sdCkpLG59LGluQXJyYXk6ZnVuY3Rpb24odCxlLG4pe3JldHVybiBudWxsPT1lPy0xOnMuY2FsbChlLHQsbil9LG1lcmdlOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPStlLmxlbmd0aCxpPTAscj10Lmxlbmd0aDtpPG47aSsrKXRbcisrXT1lW2ldO3JldHVybiB0Lmxlbmd0aD1yLHR9LGdyZXA6ZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgaT1bXSxyPTAsbz10Lmxlbmd0aCxhPSFuO3I8bztyKyspIWUodFtyXSxyKSE9PWEmJmkucHVzaCh0W3JdKTtyZXR1cm4gaX0sbWFwOmZ1bmN0aW9uKHQsZSxuKXt2YXIgaSxyLGE9MCxzPVtdO2lmKF8odCkpZm9yKGk9dC5sZW5ndGg7YTxpO2ErKyludWxsIT0ocj1lKHRbYV0sYSxuKSkmJnMucHVzaChyKTtlbHNlIGZvcihhIGluIHQpbnVsbCE9KHI9ZSh0W2FdLGEsbikpJiZzLnB1c2gocik7cmV0dXJuIG8ocyl9LGd1aWQ6MSxzdXBwb3J0OmZ9KSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYoeC5mbltTeW1ib2wuaXRlcmF0b3JdPW5bU3ltYm9sLml0ZXJhdG9yXSkseC5lYWNoKCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVycm9yIFN5bWJvbCIuc3BsaXQoIiAiKSwoZnVuY3Rpb24odCxlKXtsWyJbb2JqZWN0ICIrZSsiXSJdPWUudG9Mb3dlckNhc2UoKX0pKTt2YXIgUz1mdW5jdGlvbih0KXt2YXIgZSxuLGkscixvLGEscyxsLGMsdSxkLGgsZixwLGcsbSx2LHksYix3PSJzaXp6bGUiKzEqbmV3IERhdGUseD10LmRvY3VtZW50LF89MCxTPTAsQz1sdCgpLGs9bHQoKSxUPWx0KCksQT1sdCgpLEQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD09PWUmJihkPSEwKSwwfSxFPXt9Lmhhc093blByb3BlcnR5LE09W10sTz1NLnBvcCxJPU0ucHVzaCxQPU0ucHVzaCxMPU0uc2xpY2UsTj1mdW5jdGlvbih0LGUpe2Zvcih2YXIgbj0wLGk9dC5sZW5ndGg7bjxpO24rKylpZih0W25dPT09ZSlyZXR1cm4gbjtyZXR1cm4tMX0sRj0iY2hlY2tlZHxzZWxlY3RlZHxhc3luY3xhdXRvZm9jdXN8YXV0b3BsYXl8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGlzbWFwfGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWQiLFI9IltcXHgyMFxcdFxcclxcblxcZl0iLGo9Iig/OlxcXFxbXFxkYS1mQS1GXXsxLDZ9IitSKyI/fFxcXFxbXlxcclxcblxcZl18W1xcdy1dfFteXDAtXFx4N2ZdKSsiLCQ9IlxcWyIrUisiKigiK2orIikoPzoiK1IrIiooWypeJHwhfl0/PSkiK1IrIiooPzonKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcInwoIitqKyIpKXwpIitSKyIqXFxdIix6PSI6KCIraisiKSg/OlxcKCgoJygoPzpcXFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCIpfCgoPzpcXFxcLnxbXlxcXFwoKVtcXF1dfCIrJCsiKSopfC4qKVxcKXwpIixIPW5ldyBSZWdFeHAoUisiKyIsImciKSxCPW5ldyBSZWdFeHAoIl4iK1IrIit8KCg/Ol58W15cXFxcXSkoPzpcXFxcLikqKSIrUisiKyQiLCJnIikscT1uZXcgUmVnRXhwKCJeIitSKyIqLCIrUisiKiIpLFc9bmV3IFJlZ0V4cCgiXiIrUisiKihbPit+XXwiK1IrIikiK1IrIioiKSxVPW5ldyBSZWdFeHAoUisifD4iKSxWPW5ldyBSZWdFeHAoeiksWT1uZXcgUmVnRXhwKCJeIitqKyIkIiksRz17SUQ6bmV3IFJlZ0V4cCgiXiMoIitqKyIpIiksQ0xBU1M6bmV3IFJlZ0V4cCgiXlxcLigiK2orIikiKSxUQUc6bmV3IFJlZ0V4cCgiXigiK2orInxbKl0pIiksQVRUUjpuZXcgUmVnRXhwKCJeIiskKSxQU0VVRE86bmV3IFJlZ0V4cCgiXiIreiksQ0hJTEQ6bmV3IFJlZ0V4cCgiXjoob25seXxmaXJzdHxsYXN0fG50aHxudGgtbGFzdCktKGNoaWxkfG9mLXR5cGUpKD86XFwoIitSKyIqKGV2ZW58b2RkfCgoWystXXwpKFxcZCopbnwpIitSKyIqKD86KFsrLV18KSIrUisiKihcXGQrKXwpKSIrUisiKlxcKXwpIiwiaSIpLGJvb2w6bmV3IFJlZ0V4cCgiXig/OiIrRisiKSQiLCJpIiksbmVlZHNDb250ZXh0Om5ldyBSZWdFeHAoIl4iK1IrIipbPit+XXw6KGV2ZW58b2RkfGVxfGd0fGx0fG50aHxmaXJzdHxsYXN0KSg/OlxcKCIrUisiKigoPzotXFxkKT9cXGQqKSIrUisiKlxcKXwpKD89W14tXXwkKSIsImkiKX0sWD0vSFRNTCQvaSxRPS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2ksSz0vXmhcZCQvaSxKPS9eW157XStce1xzKlxbbmF0aXZlIFx3LyxaPS9eKD86IyhbXHctXSspfChcdyspfFwuKFtcdy1dKykpJC8sdHQ9L1srfl0vLGV0PW5ldyBSZWdFeHAoIlxcXFxbXFxkYS1mQS1GXXsxLDZ9IitSKyI/fFxcXFwoW15cXHJcXG5cXGZdKSIsImciKSxudD1mdW5jdGlvbih0LGUpe3ZhciBuPSIweCIrdC5zbGljZSgxKS02NTUzNjtyZXR1cm4gZXx8KG48MD9TdHJpbmcuZnJvbUNoYXJDb2RlKG4rNjU1MzYpOlN0cmluZy5mcm9tQ2hhckNvZGUobj4+MTB8NTUyOTYsMTAyMyZufDU2MzIwKSl9LGl0PS8oW1wwLVx4MWZceDdmXXxeLT9cZCl8Xi0kfFteXDAtXHgxZlx4N2YtXHVGRkZGXHctXS9nLHJ0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGU/IlwwIj09PXQ/Iu+/vSI6dC5zbGljZSgwLC0xKSsiXFwiK3QuY2hhckNvZGVBdCh0Lmxlbmd0aC0xKS50b1N0cmluZygxNikrIiAiOiJcXCIrdH0sb3Q9ZnVuY3Rpb24oKXtoKCl9LGF0PXd0KChmdW5jdGlvbih0KXtyZXR1cm4hMD09PXQuZGlzYWJsZWQmJiJmaWVsZHNldCI9PT10Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCl9KSx7ZGlyOiJwYXJlbnROb2RlIixuZXh0OiJsZWdlbmQifSk7dHJ5e1AuYXBwbHkoTT1MLmNhbGwoeC5jaGlsZE5vZGVzKSx4LmNoaWxkTm9kZXMpLE1beC5jaGlsZE5vZGVzLmxlbmd0aF0ubm9kZVR5cGV9Y2F0Y2goZSl7UD17YXBwbHk6TS5sZW5ndGg/ZnVuY3Rpb24odCxlKXtJLmFwcGx5KHQsTC5jYWxsKGUpKX06ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49dC5sZW5ndGgsaT0wO3RbbisrXT1lW2krK107KTt0Lmxlbmd0aD1uLTF9fX1mdW5jdGlvbiBzdCh0LGUsaSxyKXt2YXIgbyxzLGMsdSxkLHAsdix5PWUmJmUub3duZXJEb2N1bWVudCx4PWU/ZS5ub2RlVHlwZTo5O2lmKGk9aXx8W10sInN0cmluZyIhPXR5cGVvZiB0fHwhdHx8MSE9PXgmJjkhPT14JiYxMSE9PXgpcmV0dXJuIGk7aWYoIXImJihoKGUpLGU9ZXx8ZixnKSl7aWYoMTEhPT14JiYoZD1aLmV4ZWModCkpKWlmKG89ZFsxXSl7aWYoOT09PXgpe2lmKCEoYz1lLmdldEVsZW1lbnRCeUlkKG8pKSlyZXR1cm4gaTtpZihjLmlkPT09bylyZXR1cm4gaS5wdXNoKGMpLGl9ZWxzZSBpZih5JiYoYz15LmdldEVsZW1lbnRCeUlkKG8pKSYmYihlLGMpJiZjLmlkPT09bylyZXR1cm4gaS5wdXNoKGMpLGl9ZWxzZXtpZihkWzJdKXJldHVybiBQLmFwcGx5KGksZS5nZXRFbGVtZW50c0J5VGFnTmFtZSh0KSksaTtpZigobz1kWzNdKSYmbi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lJiZlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpcmV0dXJuIFAuYXBwbHkoaSxlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUobykpLGl9aWYobi5xc2EmJiFBW3QrIiAiXSYmKCFtfHwhbS50ZXN0KHQpKSYmKDEhPT14fHwib2JqZWN0IiE9PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSkpe2lmKHY9dCx5PWUsMT09PXgmJihVLnRlc3QodCl8fFcudGVzdCh0KSkpe2ZvcigoeT10dC50ZXN0KHQpJiZ2dChlLnBhcmVudE5vZGUpfHxlKT09PWUmJm4uc2NvcGV8fCgodT1lLmdldEF0dHJpYnV0ZSgiaWQiKSk/dT11LnJlcGxhY2UoaXQscnQpOmUuc2V0QXR0cmlidXRlKCJpZCIsdT13KSkscz0ocD1hKHQpKS5sZW5ndGg7cy0tOylwW3NdPSh1PyIjIit1OiI6c2NvcGUiKSsiICIrYnQocFtzXSk7dj1wLmpvaW4oIiwiKX10cnl7cmV0dXJuIFAuYXBwbHkoaSx5LnF1ZXJ5U2VsZWN0b3JBbGwodikpLGl9Y2F0Y2goZSl7QSh0LCEwKX1maW5hbGx5e3U9PT13JiZlLnJlbW92ZUF0dHJpYnV0ZSgiaWQiKX19fXJldHVybiBsKHQucmVwbGFjZShCLCIkMSIpLGUsaSxyKX1mdW5jdGlvbiBsdCgpe3ZhciB0PVtdO3JldHVybiBmdW5jdGlvbiBlKG4scil7cmV0dXJuIHQucHVzaChuKyIgIik+aS5jYWNoZUxlbmd0aCYmZGVsZXRlIGVbdC5zaGlmdCgpXSxlW24rIiAiXT1yfX1mdW5jdGlvbiBjdCh0KXtyZXR1cm4gdFt3XT0hMCx0fWZ1bmN0aW9uIHV0KHQpe3ZhciBlPWYuY3JlYXRlRWxlbWVudCgiZmllbGRzZXQiKTt0cnl7cmV0dXJuISF0KGUpfWNhdGNoKHQpe3JldHVybiExfWZpbmFsbHl7ZS5wYXJlbnROb2RlJiZlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZSksZT1udWxsfX1mdW5jdGlvbiBkdCh0LGUpe2Zvcih2YXIgbj10LnNwbGl0KCJ8Iikscj1uLmxlbmd0aDtyLS07KWkuYXR0ckhhbmRsZVtuW3JdXT1lfWZ1bmN0aW9uIGh0KHQsZSl7dmFyIG49ZSYmdCxpPW4mJjE9PT10Lm5vZGVUeXBlJiYxPT09ZS5ub2RlVHlwZSYmdC5zb3VyY2VJbmRleC1lLnNvdXJjZUluZGV4O2lmKGkpcmV0dXJuIGk7aWYobilmb3IoO249bi5uZXh0U2libGluZzspaWYobj09PWUpcmV0dXJuLTE7cmV0dXJuIHQ/MTotMX1mdW5jdGlvbiBmdCh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuImlucHV0Ij09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmZS50eXBlPT09dH19ZnVuY3Rpb24gcHQodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4oImlucHV0Ij09PW58fCJidXR0b24iPT09bikmJmUudHlwZT09PXR9fWZ1bmN0aW9uIGd0KHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4iZm9ybSJpbiBlP2UucGFyZW50Tm9kZSYmITE9PT1lLmRpc2FibGVkPyJsYWJlbCJpbiBlPyJsYWJlbCJpbiBlLnBhcmVudE5vZGU/ZS5wYXJlbnROb2RlLmRpc2FibGVkPT09dDplLmRpc2FibGVkPT09dDplLmlzRGlzYWJsZWQ9PT10fHxlLmlzRGlzYWJsZWQhPT0hdCYmYXQoZSk9PT10OmUuZGlzYWJsZWQ9PT10OiJsYWJlbCJpbiBlJiZlLmRpc2FibGVkPT09dH19ZnVuY3Rpb24gbXQodCl7cmV0dXJuIGN0KChmdW5jdGlvbihlKXtyZXR1cm4gZT0rZSxjdCgoZnVuY3Rpb24obixpKXtmb3IodmFyIHIsbz10KFtdLG4ubGVuZ3RoLGUpLGE9by5sZW5ndGg7YS0tOyluW3I9b1thXV0mJihuW3JdPSEoaVtyXT1uW3JdKSl9KSl9KSl9ZnVuY3Rpb24gdnQodCl7cmV0dXJuIHQmJnZvaWQgMCE9PXQuZ2V0RWxlbWVudHNCeVRhZ05hbWUmJnR9Zm9yKGUgaW4gbj1zdC5zdXBwb3J0PXt9LG89c3QuaXNYTUw9ZnVuY3Rpb24odCl7dmFyIGU9dC5uYW1lc3BhY2VVUkksbj0odC5vd25lckRvY3VtZW50fHx0KS5kb2N1bWVudEVsZW1lbnQ7cmV0dXJuIVgudGVzdChlfHxuJiZuLm5vZGVOYW1lfHwiSFRNTCIpfSxoPXN0LnNldERvY3VtZW50PWZ1bmN0aW9uKHQpe3ZhciBlLHIsYT10P3Qub3duZXJEb2N1bWVudHx8dDp4O3JldHVybiBhIT1mJiY5PT09YS5ub2RlVHlwZSYmYS5kb2N1bWVudEVsZW1lbnQmJihwPShmPWEpLmRvY3VtZW50RWxlbWVudCxnPSFvKGYpLHghPWYmJihyPWYuZGVmYXVsdFZpZXcpJiZyLnRvcCE9PXImJihyLmFkZEV2ZW50TGlzdGVuZXI/ci5hZGRFdmVudExpc3RlbmVyKCJ1bmxvYWQiLG90LCExKTpyLmF0dGFjaEV2ZW50JiZyLmF0dGFjaEV2ZW50KCJvbnVubG9hZCIsb3QpKSxuLnNjb3BlPXV0KChmdW5jdGlvbih0KXtyZXR1cm4gcC5hcHBlbmRDaGlsZCh0KS5hcHBlbmRDaGlsZChmLmNyZWF0ZUVsZW1lbnQoImRpdiIpKSx2b2lkIDAhPT10LnF1ZXJ5U2VsZWN0b3JBbGwmJiF0LnF1ZXJ5U2VsZWN0b3JBbGwoIjpzY29wZSBmaWVsZHNldCBkaXYiKS5sZW5ndGh9KSksbi5hdHRyaWJ1dGVzPXV0KChmdW5jdGlvbih0KXtyZXR1cm4gdC5jbGFzc05hbWU9ImkiLCF0LmdldEF0dHJpYnV0ZSgiY2xhc3NOYW1lIil9KSksbi5nZXRFbGVtZW50c0J5VGFnTmFtZT11dCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuYXBwZW5kQ2hpbGQoZi5jcmVhdGVDb21tZW50KCIiKSksIXQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKS5sZW5ndGh9KSksbi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lPUoudGVzdChmLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpLG4uZ2V0QnlJZD11dCgoZnVuY3Rpb24odCl7cmV0dXJuIHAuYXBwZW5kQ2hpbGQodCkuaWQ9dywhZi5nZXRFbGVtZW50c0J5TmFtZXx8IWYuZ2V0RWxlbWVudHNCeU5hbWUodykubGVuZ3RofSkpLG4uZ2V0QnlJZD8oaS5maWx0ZXIuSUQ9ZnVuY3Rpb24odCl7dmFyIGU9dC5yZXBsYWNlKGV0LG50KTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0QXR0cmlidXRlKCJpZCIpPT09ZX19LGkuZmluZC5JRD1mdW5jdGlvbih0LGUpe2lmKHZvaWQgMCE9PWUuZ2V0RWxlbWVudEJ5SWQmJmcpe3ZhciBuPWUuZ2V0RWxlbWVudEJ5SWQodCk7cmV0dXJuIG4/W25dOltdfX0pOihpLmZpbHRlci5JRD1mdW5jdGlvbih0KXt2YXIgZT10LnJlcGxhY2UoZXQsbnQpO3JldHVybiBmdW5jdGlvbih0KXt2YXIgbj12b2lkIDAhPT10LmdldEF0dHJpYnV0ZU5vZGUmJnQuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKTtyZXR1cm4gbiYmbi52YWx1ZT09PWV9fSxpLmZpbmQuSUQ9ZnVuY3Rpb24odCxlKXtpZih2b2lkIDAhPT1lLmdldEVsZW1lbnRCeUlkJiZnKXt2YXIgbixpLHIsbz1lLmdldEVsZW1lbnRCeUlkKHQpO2lmKG8pe2lmKChuPW8uZ2V0QXR0cmlidXRlTm9kZSgiaWQiKSkmJm4udmFsdWU9PT10KXJldHVybltvXTtmb3Iocj1lLmdldEVsZW1lbnRzQnlOYW1lKHQpLGk9MDtvPXJbaSsrXTspaWYoKG49by5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpKSYmbi52YWx1ZT09PXQpcmV0dXJuW29dfXJldHVybltdfX0pLGkuZmluZC5UQUc9bi5nZXRFbGVtZW50c0J5VGFnTmFtZT9mdW5jdGlvbih0LGUpe3JldHVybiB2b2lkIDAhPT1lLmdldEVsZW1lbnRzQnlUYWdOYW1lP2UuZ2V0RWxlbWVudHNCeVRhZ05hbWUodCk6bi5xc2E/ZS5xdWVyeVNlbGVjdG9yQWxsKHQpOnZvaWQgMH06ZnVuY3Rpb24odCxlKXt2YXIgbixpPVtdLHI9MCxvPWUuZ2V0RWxlbWVudHNCeVRhZ05hbWUodCk7aWYoIioiPT09dCl7Zm9yKDtuPW9bcisrXTspMT09PW4ubm9kZVR5cGUmJmkucHVzaChuKTtyZXR1cm4gaX1yZXR1cm4gb30saS5maW5kLkNMQVNTPW4uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmZnVuY3Rpb24odCxlKXtpZih2b2lkIDAhPT1lLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmcpcmV0dXJuIGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSh0KX0sdj1bXSxtPVtdLChuLnFzYT1KLnRlc3QoZi5xdWVyeVNlbGVjdG9yQWxsKSkmJih1dCgoZnVuY3Rpb24odCl7dmFyIGU7cC5hcHBlbmRDaGlsZCh0KS5pbm5lckhUTUw9IjxhIGlkPSciK3crIic+PC9hPjxzZWxlY3QgaWQ9JyIrdysiLVxyXFwnIG1zYWxsb3djYXB0dXJlPScnPjxvcHRpb24gc2VsZWN0ZWQ9Jyc+PC9vcHRpb24+PC9zZWxlY3Q+Iix0LnF1ZXJ5U2VsZWN0b3JBbGwoIlttc2FsbG93Y2FwdHVyZV49JyddIikubGVuZ3RoJiZtLnB1c2goIlsqXiRdPSIrUisiKig/OicnfFwiXCIpIiksdC5xdWVyeVNlbGVjdG9yQWxsKCJbc2VsZWN0ZWRdIikubGVuZ3RofHxtLnB1c2goIlxcWyIrUisiKig/OnZhbHVlfCIrRisiKSIpLHQucXVlcnlTZWxlY3RvckFsbCgiW2lkfj0iK3crIi1dIikubGVuZ3RofHxtLnB1c2goIn49IiksKGU9Zi5jcmVhdGVFbGVtZW50KCJpbnB1dCIpKS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCIiKSx0LmFwcGVuZENoaWxkKGUpLHQucXVlcnlTZWxlY3RvckFsbCgiW25hbWU9JyddIikubGVuZ3RofHxtLnB1c2goIlxcWyIrUisiKm5hbWUiK1IrIio9IitSKyIqKD86Jyd8XCJcIikiKSx0LnF1ZXJ5U2VsZWN0b3JBbGwoIjpjaGVja2VkIikubGVuZ3RofHxtLnB1c2goIjpjaGVja2VkIiksdC5xdWVyeVNlbGVjdG9yQWxsKCJhIyIrdysiKyoiKS5sZW5ndGh8fG0ucHVzaCgiLiMuK1srfl0iKSx0LnF1ZXJ5U2VsZWN0b3JBbGwoIlxcXGYiKSxtLnB1c2goIltcXHJcXG5cXGZdIil9KSksdXQoKGZ1bmN0aW9uKHQpe3QuaW5uZXJIVE1MPSI8YSBocmVmPScnIGRpc2FibGVkPSdkaXNhYmxlZCc+PC9hPjxzZWxlY3QgZGlzYWJsZWQ9J2Rpc2FibGVkJz48b3B0aW9uLz48L3NlbGVjdD4iO3ZhciBlPWYuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTtlLnNldEF0dHJpYnV0ZSgidHlwZSIsImhpZGRlbiIpLHQuYXBwZW5kQ2hpbGQoZSkuc2V0QXR0cmlidXRlKCJuYW1lIiwiRCIpLHQucXVlcnlTZWxlY3RvckFsbCgiW25hbWU9ZF0iKS5sZW5ndGgmJm0ucHVzaCgibmFtZSIrUisiKlsqXiR8IX5dPz0iKSwyIT09dC5xdWVyeVNlbGVjdG9yQWxsKCI6ZW5hYmxlZCIpLmxlbmd0aCYmbS5wdXNoKCI6ZW5hYmxlZCIsIjpkaXNhYmxlZCIpLHAuYXBwZW5kQ2hpbGQodCkuZGlzYWJsZWQ9ITAsMiE9PXQucXVlcnlTZWxlY3RvckFsbCgiOmRpc2FibGVkIikubGVuZ3RoJiZtLnB1c2goIjplbmFibGVkIiwiOmRpc2FibGVkIiksdC5xdWVyeVNlbGVjdG9yQWxsKCIqLDp4IiksbS5wdXNoKCIsLio6Iil9KSkpLChuLm1hdGNoZXNTZWxlY3Rvcj1KLnRlc3QoeT1wLm1hdGNoZXN8fHAud2Via2l0TWF0Y2hlc1NlbGVjdG9yfHxwLm1vek1hdGNoZXNTZWxlY3Rvcnx8cC5vTWF0Y2hlc1NlbGVjdG9yfHxwLm1zTWF0Y2hlc1NlbGVjdG9yKSkmJnV0KChmdW5jdGlvbih0KXtuLmRpc2Nvbm5lY3RlZE1hdGNoPXkuY2FsbCh0LCIqIikseS5jYWxsKHQsIltzIT0nJ106eCIpLHYucHVzaCgiIT0iLHopfSkpLG09bS5sZW5ndGgmJm5ldyBSZWdFeHAobS5qb2luKCJ8IikpLHY9di5sZW5ndGgmJm5ldyBSZWdFeHAodi5qb2luKCJ8IikpLGU9Si50ZXN0KHAuY29tcGFyZURvY3VtZW50UG9zaXRpb24pLGI9ZXx8Si50ZXN0KHAuY29udGFpbnMpP2Z1bmN0aW9uKHQsZSl7dmFyIG49OT09PXQubm9kZVR5cGU/dC5kb2N1bWVudEVsZW1lbnQ6dCxpPWUmJmUucGFyZW50Tm9kZTtyZXR1cm4gdD09PWl8fCEoIWl8fDEhPT1pLm5vZGVUeXBlfHwhKG4uY29udGFpbnM/bi5jb250YWlucyhpKTp0LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uJiYxNiZ0LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGkpKSl9OmZ1bmN0aW9uKHQsZSl7aWYoZSlmb3IoO2U9ZS5wYXJlbnROb2RlOylpZihlPT09dClyZXR1cm4hMDtyZXR1cm4hMX0sRD1lP2Z1bmN0aW9uKHQsZSl7aWYodD09PWUpcmV0dXJuIGQ9ITAsMDt2YXIgaT0hdC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbi0hZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbjtyZXR1cm4gaXx8KDEmKGk9KHQub3duZXJEb2N1bWVudHx8dCk9PShlLm93bmVyRG9jdW1lbnR8fGUpP3QuY29tcGFyZURvY3VtZW50UG9zaXRpb24oZSk6MSl8fCFuLnNvcnREZXRhY2hlZCYmZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0KT09PWk/dD09Znx8dC5vd25lckRvY3VtZW50PT14JiZiKHgsdCk/LTE6ZT09Znx8ZS5vd25lckRvY3VtZW50PT14JiZiKHgsZSk/MTp1P04odSx0KS1OKHUsZSk6MDo0Jmk/LTE6MSl9OmZ1bmN0aW9uKHQsZSl7aWYodD09PWUpcmV0dXJuIGQ9ITAsMDt2YXIgbixpPTAscj10LnBhcmVudE5vZGUsbz1lLnBhcmVudE5vZGUsYT1bdF0scz1bZV07aWYoIXJ8fCFvKXJldHVybiB0PT1mPy0xOmU9PWY/MTpyPy0xOm8/MTp1P04odSx0KS1OKHUsZSk6MDtpZihyPT09bylyZXR1cm4gaHQodCxlKTtmb3Iobj10O249bi5wYXJlbnROb2RlOylhLnVuc2hpZnQobik7Zm9yKG49ZTtuPW4ucGFyZW50Tm9kZTspcy51bnNoaWZ0KG4pO2Zvcig7YVtpXT09PXNbaV07KWkrKztyZXR1cm4gaT9odChhW2ldLHNbaV0pOmFbaV09PXg/LTE6c1tpXT09eD8xOjB9KSxmfSxzdC5tYXRjaGVzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHN0KHQsbnVsbCxudWxsLGUpfSxzdC5tYXRjaGVzU2VsZWN0b3I9ZnVuY3Rpb24odCxlKXtpZihoKHQpLG4ubWF0Y2hlc1NlbGVjdG9yJiZnJiYhQVtlKyIgIl0mJighdnx8IXYudGVzdChlKSkmJighbXx8IW0udGVzdChlKSkpdHJ5e3ZhciBpPXkuY2FsbCh0LGUpO2lmKGl8fG4uZGlzY29ubmVjdGVkTWF0Y2h8fHQuZG9jdW1lbnQmJjExIT09dC5kb2N1bWVudC5ub2RlVHlwZSlyZXR1cm4gaX1jYXRjaCh0KXtBKGUsITApfXJldHVybiAwPHN0KGUsZixudWxsLFt0XSkubGVuZ3RofSxzdC5jb250YWlucz1mdW5jdGlvbih0LGUpe3JldHVybih0Lm93bmVyRG9jdW1lbnR8fHQpIT1mJiZoKHQpLGIodCxlKX0sc3QuYXR0cj1mdW5jdGlvbih0LGUpeyh0Lm93bmVyRG9jdW1lbnR8fHQpIT1mJiZoKHQpO3ZhciByPWkuYXR0ckhhbmRsZVtlLnRvTG93ZXJDYXNlKCldLG89ciYmRS5jYWxsKGkuYXR0ckhhbmRsZSxlLnRvTG93ZXJDYXNlKCkpP3IodCxlLCFnKTp2b2lkIDA7cmV0dXJuIHZvaWQgMCE9PW8/bzpuLmF0dHJpYnV0ZXN8fCFnP3QuZ2V0QXR0cmlidXRlKGUpOihvPXQuZ2V0QXR0cmlidXRlTm9kZShlKSkmJm8uc3BlY2lmaWVkP28udmFsdWU6bnVsbH0sc3QuZXNjYXBlPWZ1bmN0aW9uKHQpe3JldHVybih0KyIiKS5yZXBsYWNlKGl0LHJ0KX0sc3QuZXJyb3I9ZnVuY3Rpb24odCl7dGhyb3cgbmV3IEVycm9yKCJTeW50YXggZXJyb3IsIHVucmVjb2duaXplZCBleHByZXNzaW9uOiAiK3QpfSxzdC51bmlxdWVTb3J0PWZ1bmN0aW9uKHQpe3ZhciBlLGk9W10scj0wLG89MDtpZihkPSFuLmRldGVjdER1cGxpY2F0ZXMsdT0hbi5zb3J0U3RhYmxlJiZ0LnNsaWNlKDApLHQuc29ydChEKSxkKXtmb3IoO2U9dFtvKytdOyllPT09dFtvXSYmKHI9aS5wdXNoKG8pKTtmb3IoO3ItLTspdC5zcGxpY2UoaVtyXSwxKX1yZXR1cm4gdT1udWxsLHR9LHI9c3QuZ2V0VGV4dD1mdW5jdGlvbih0KXt2YXIgZSxuPSIiLGk9MCxvPXQubm9kZVR5cGU7aWYobyl7aWYoMT09PW98fDk9PT1vfHwxMT09PW8pe2lmKCJzdHJpbmciPT10eXBlb2YgdC50ZXh0Q29udGVudClyZXR1cm4gdC50ZXh0Q29udGVudDtmb3IodD10LmZpcnN0Q2hpbGQ7dDt0PXQubmV4dFNpYmxpbmcpbis9cih0KX1lbHNlIGlmKDM9PT1vfHw0PT09bylyZXR1cm4gdC5ub2RlVmFsdWV9ZWxzZSBmb3IoO2U9dFtpKytdOyluKz1yKGUpO3JldHVybiBufSwoaT1zdC5zZWxlY3RvcnM9e2NhY2hlTGVuZ3RoOjUwLGNyZWF0ZVBzZXVkbzpjdCxtYXRjaDpHLGF0dHJIYW5kbGU6e30sZmluZDp7fSxyZWxhdGl2ZTp7Ij4iOntkaXI6InBhcmVudE5vZGUiLGZpcnN0OiEwfSwiICI6e2RpcjoicGFyZW50Tm9kZSJ9LCIrIjp7ZGlyOiJwcmV2aW91c1NpYmxpbmciLGZpcnN0OiEwfSwifiI6e2RpcjoicHJldmlvdXNTaWJsaW5nIn19LHByZUZpbHRlcjp7QVRUUjpmdW5jdGlvbih0KXtyZXR1cm4gdFsxXT10WzFdLnJlcGxhY2UoZXQsbnQpLHRbM109KHRbM118fHRbNF18fHRbNV18fCIiKS5yZXBsYWNlKGV0LG50KSwifj0iPT09dFsyXSYmKHRbM109IiAiK3RbM10rIiAiKSx0LnNsaWNlKDAsNCl9LENISUxEOmZ1bmN0aW9uKHQpe3JldHVybiB0WzFdPXRbMV0udG9Mb3dlckNhc2UoKSwibnRoIj09PXRbMV0uc2xpY2UoMCwzKT8odFszXXx8c3QuZXJyb3IodFswXSksdFs0XT0rKHRbNF0/dFs1XSsodFs2XXx8MSk6MiooImV2ZW4iPT09dFszXXx8Im9kZCI9PT10WzNdKSksdFs1XT0rKHRbN10rdFs4XXx8Im9kZCI9PT10WzNdKSk6dFszXSYmc3QuZXJyb3IodFswXSksdH0sUFNFVURPOmZ1bmN0aW9uKHQpe3ZhciBlLG49IXRbNl0mJnRbMl07cmV0dXJuIEcuQ0hJTEQudGVzdCh0WzBdKT9udWxsOih0WzNdP3RbMl09dFs0XXx8dFs1XXx8IiI6biYmVi50ZXN0KG4pJiYoZT1hKG4sITApKSYmKGU9bi5pbmRleE9mKCIpIixuLmxlbmd0aC1lKS1uLmxlbmd0aCkmJih0WzBdPXRbMF0uc2xpY2UoMCxlKSx0WzJdPW4uc2xpY2UoMCxlKSksdC5zbGljZSgwLDMpKX19LGZpbHRlcjp7VEFHOmZ1bmN0aW9uKHQpe3ZhciBlPXQucmVwbGFjZShldCxudCkudG9Mb3dlckNhc2UoKTtyZXR1cm4iKiI9PT10P2Z1bmN0aW9uKCl7cmV0dXJuITB9OmZ1bmN0aW9uKHQpe3JldHVybiB0Lm5vZGVOYW1lJiZ0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1lfX0sQ0xBU1M6ZnVuY3Rpb24odCl7dmFyIGU9Q1t0KyIgIl07cmV0dXJuIGV8fChlPW5ldyBSZWdFeHAoIihefCIrUisiKSIrdCsiKCIrUisifCQpIikpJiZDKHQsKGZ1bmN0aW9uKHQpe3JldHVybiBlLnRlc3QoInN0cmluZyI9PXR5cGVvZiB0LmNsYXNzTmFtZSYmdC5jbGFzc05hbWV8fHZvaWQgMCE9PXQuZ2V0QXR0cmlidXRlJiZ0LmdldEF0dHJpYnV0ZSgiY2xhc3MiKXx8IiIpfSkpfSxBVFRSOmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gZnVuY3Rpb24oaSl7dmFyIHI9c3QuYXR0cihpLHQpO3JldHVybiBudWxsPT1yPyIhPSI9PT1lOiFlfHwocis9IiIsIj0iPT09ZT9yPT09bjoiIT0iPT09ZT9yIT09bjoiXj0iPT09ZT9uJiYwPT09ci5pbmRleE9mKG4pOiIqPSI9PT1lP24mJi0xPHIuaW5kZXhPZihuKToiJD0iPT09ZT9uJiZyLnNsaWNlKC1uLmxlbmd0aCk9PT1uOiJ+PSI9PT1lPy0xPCgiICIrci5yZXBsYWNlKEgsIiAiKSsiICIpLmluZGV4T2Yobik6Inw9Ij09PWUmJihyPT09bnx8ci5zbGljZSgwLG4ubGVuZ3RoKzEpPT09bisiLSIpKX19LENISUxEOmZ1bmN0aW9uKHQsZSxuLGkscil7dmFyIG89Im50aCIhPT10LnNsaWNlKDAsMyksYT0ibGFzdCIhPT10LnNsaWNlKC00KSxzPSJvZi10eXBlIj09PWU7cmV0dXJuIDE9PT1pJiYwPT09cj9mdW5jdGlvbih0KXtyZXR1cm4hIXQucGFyZW50Tm9kZX06ZnVuY3Rpb24oZSxuLGwpe3ZhciBjLHUsZCxoLGYscCxnPW8hPT1hPyJuZXh0U2libGluZyI6InByZXZpb3VzU2libGluZyIsbT1lLnBhcmVudE5vZGUsdj1zJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkseT0hbCYmIXMsYj0hMTtpZihtKXtpZihvKXtmb3IoO2c7KXtmb3IoaD1lO2g9aFtnXTspaWYocz9oLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT12OjE9PT1oLm5vZGVUeXBlKXJldHVybiExO3A9Zz0ib25seSI9PT10JiYhcCYmIm5leHRTaWJsaW5nIn1yZXR1cm4hMH1pZihwPVthP20uZmlyc3RDaGlsZDptLmxhc3RDaGlsZF0sYSYmeSl7Zm9yKGI9KGY9KGM9KHU9KGQ9KGg9bSlbd118fChoW3ddPXt9KSlbaC51bmlxdWVJRF18fChkW2gudW5pcXVlSURdPXt9KSlbdF18fFtdKVswXT09PV8mJmNbMV0pJiZjWzJdLGg9ZiYmbS5jaGlsZE5vZGVzW2ZdO2g9KytmJiZoJiZoW2ddfHwoYj1mPTApfHxwLnBvcCgpOylpZigxPT09aC5ub2RlVHlwZSYmKytiJiZoPT09ZSl7dVt0XT1bXyxmLGJdO2JyZWFrfX1lbHNlIGlmKHkmJihiPWY9KGM9KHU9KGQ9KGg9ZSlbd118fChoW3ddPXt9KSlbaC51bmlxdWVJRF18fChkW2gudW5pcXVlSURdPXt9KSlbdF18fFtdKVswXT09PV8mJmNbMV0pLCExPT09Yilmb3IoOyhoPSsrZiYmaCYmaFtnXXx8KGI9Zj0wKXx8cC5wb3AoKSkmJigocz9oLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkhPT12OjEhPT1oLm5vZGVUeXBlKXx8ISsrYnx8KHkmJigodT0oZD1oW3ddfHwoaFt3XT17fSkpW2gudW5pcXVlSURdfHwoZFtoLnVuaXF1ZUlEXT17fSkpW3RdPVtfLGJdKSxoIT09ZSkpOyk7cmV0dXJuKGItPXIpPT09aXx8YiVpPT0wJiYwPD1iL2l9fX0sUFNFVURPOmZ1bmN0aW9uKHQsZSl7dmFyIG4scj1pLnBzZXVkb3NbdF18fGkuc2V0RmlsdGVyc1t0LnRvTG93ZXJDYXNlKCldfHxzdC5lcnJvcigidW5zdXBwb3J0ZWQgcHNldWRvOiAiK3QpO3JldHVybiByW3ddP3IoZSk6MTxyLmxlbmd0aD8obj1bdCx0LCIiLGVdLGkuc2V0RmlsdGVycy5oYXNPd25Qcm9wZXJ0eSh0LnRvTG93ZXJDYXNlKCkpP2N0KChmdW5jdGlvbih0LG4pe2Zvcih2YXIgaSxvPXIodCxlKSxhPW8ubGVuZ3RoO2EtLTspdFtpPU4odCxvW2FdKV09IShuW2ldPW9bYV0pfSkpOmZ1bmN0aW9uKHQpe3JldHVybiByKHQsMCxuKX0pOnJ9fSxwc2V1ZG9zOntub3Q6Y3QoKGZ1bmN0aW9uKHQpe3ZhciBlPVtdLG49W10saT1zKHQucmVwbGFjZShCLCIkMSIpKTtyZXR1cm4gaVt3XT9jdCgoZnVuY3Rpb24odCxlLG4scil7Zm9yKHZhciBvLGE9aSh0LG51bGwscixbXSkscz10Lmxlbmd0aDtzLS07KShvPWFbc10pJiYodFtzXT0hKGVbc109bykpfSkpOmZ1bmN0aW9uKHQscixvKXtyZXR1cm4gZVswXT10LGkoZSxudWxsLG8sbiksZVswXT1udWxsLCFuLnBvcCgpfX0pKSxoYXM6Y3QoKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gMDxzdCh0LGUpLmxlbmd0aH19KSksY29udGFpbnM6Y3QoKGZ1bmN0aW9uKHQpe3JldHVybiB0PXQucmVwbGFjZShldCxudCksZnVuY3Rpb24oZSl7cmV0dXJuLTE8KGUudGV4dENvbnRlbnR8fHIoZSkpLmluZGV4T2YodCl9fSkpLGxhbmc6Y3QoKGZ1bmN0aW9uKHQpe3JldHVybiBZLnRlc3QodHx8IiIpfHxzdC5lcnJvcigidW5zdXBwb3J0ZWQgbGFuZzogIit0KSx0PXQucmVwbGFjZShldCxudCkudG9Mb3dlckNhc2UoKSxmdW5jdGlvbihlKXt2YXIgbjtkb3tpZihuPWc/ZS5sYW5nOmUuZ2V0QXR0cmlidXRlKCJ4bWw6bGFuZyIpfHxlLmdldEF0dHJpYnV0ZSgibGFuZyIpKXJldHVybihuPW4udG9Mb3dlckNhc2UoKSk9PT10fHwwPT09bi5pbmRleE9mKHQrIi0iKX13aGlsZSgoZT1lLnBhcmVudE5vZGUpJiYxPT09ZS5ub2RlVHlwZSk7cmV0dXJuITF9fSkpLHRhcmdldDpmdW5jdGlvbihlKXt2YXIgbj10LmxvY2F0aW9uJiZ0LmxvY2F0aW9uLmhhc2g7cmV0dXJuIG4mJm4uc2xpY2UoMSk9PT1lLmlkfSxyb290OmZ1bmN0aW9uKHQpe3JldHVybiB0PT09cH0sZm9jdXM6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1mLmFjdGl2ZUVsZW1lbnQmJighZi5oYXNGb2N1c3x8Zi5oYXNGb2N1cygpKSYmISEodC50eXBlfHx0LmhyZWZ8fH50LnRhYkluZGV4KX0sZW5hYmxlZDpndCghMSksZGlzYWJsZWQ6Z3QoITApLGNoZWNrZWQ6ZnVuY3Rpb24odCl7dmFyIGU9dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT1lJiYhIXQuY2hlY2tlZHx8Im9wdGlvbiI9PT1lJiYhIXQuc2VsZWN0ZWR9LHNlbGVjdGVkOmZ1bmN0aW9uKHQpe3JldHVybiB0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4LCEwPT09dC5zZWxlY3RlZH0sZW1wdHk6ZnVuY3Rpb24odCl7Zm9yKHQ9dC5maXJzdENoaWxkO3Q7dD10Lm5leHRTaWJsaW5nKWlmKHQubm9kZVR5cGU8NilyZXR1cm4hMTtyZXR1cm4hMH0scGFyZW50OmZ1bmN0aW9uKHQpe3JldHVybiFpLnBzZXVkb3MuZW1wdHkodCl9LGhlYWRlcjpmdW5jdGlvbih0KXtyZXR1cm4gSy50ZXN0KHQubm9kZU5hbWUpfSxpbnB1dDpmdW5jdGlvbih0KXtyZXR1cm4gUS50ZXN0KHQubm9kZU5hbWUpfSxidXR0b246ZnVuY3Rpb24odCl7dmFyIGU9dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT1lJiYiYnV0dG9uIj09PXQudHlwZXx8ImJ1dHRvbiI9PT1lfSx0ZXh0OmZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiJpbnB1dCI9PT10Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkmJiJ0ZXh0Ij09PXQudHlwZSYmKG51bGw9PShlPXQuZ2V0QXR0cmlidXRlKCJ0eXBlIikpfHwidGV4dCI9PT1lLnRvTG93ZXJDYXNlKCkpfSxmaXJzdDptdCgoZnVuY3Rpb24oKXtyZXR1cm5bMF19KSksbGFzdDptdCgoZnVuY3Rpb24odCxlKXtyZXR1cm5bZS0xXX0pKSxlcTptdCgoZnVuY3Rpb24odCxlLG4pe3JldHVybltuPDA/bitlOm5dfSkpLGV2ZW46bXQoKGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPTA7bjxlO24rPTIpdC5wdXNoKG4pO3JldHVybiB0fSkpLG9kZDptdCgoZnVuY3Rpb24odCxlKXtmb3IodmFyIG49MTtuPGU7bis9Mil0LnB1c2gobik7cmV0dXJuIHR9KSksbHQ6bXQoKGZ1bmN0aW9uKHQsZSxuKXtmb3IodmFyIGk9bjwwP24rZTplPG4/ZTpuOzA8PS0taTspdC5wdXNoKGkpO3JldHVybiB0fSkpLGd0Om10KChmdW5jdGlvbih0LGUsbil7Zm9yKHZhciBpPW48MD9uK2U6bjsrK2k8ZTspdC5wdXNoKGkpO3JldHVybiB0fSkpfX0pLnBzZXVkb3MubnRoPWkucHNldWRvcy5lcSx7cmFkaW86ITAsY2hlY2tib3g6ITAsZmlsZTohMCxwYXNzd29yZDohMCxpbWFnZTohMH0paS5wc2V1ZG9zW2VdPWZ0KGUpO2ZvcihlIGlue3N1Ym1pdDohMCxyZXNldDohMH0paS5wc2V1ZG9zW2VdPXB0KGUpO2Z1bmN0aW9uIHl0KCl7fWZ1bmN0aW9uIGJ0KHQpe2Zvcih2YXIgZT0wLG49dC5sZW5ndGgsaT0iIjtlPG47ZSsrKWkrPXRbZV0udmFsdWU7cmV0dXJuIGl9ZnVuY3Rpb24gd3QodCxlLG4pe3ZhciBpPWUuZGlyLHI9ZS5uZXh0LG89cnx8aSxhPW4mJiJwYXJlbnROb2RlIj09PW8scz1TKys7cmV0dXJuIGUuZmlyc3Q/ZnVuY3Rpb24oZSxuLHIpe2Zvcig7ZT1lW2ldOylpZigxPT09ZS5ub2RlVHlwZXx8YSlyZXR1cm4gdChlLG4scik7cmV0dXJuITF9OmZ1bmN0aW9uKGUsbixsKXt2YXIgYyx1LGQsaD1bXyxzXTtpZihsKXtmb3IoO2U9ZVtpXTspaWYoKDE9PT1lLm5vZGVUeXBlfHxhKSYmdChlLG4sbCkpcmV0dXJuITB9ZWxzZSBmb3IoO2U9ZVtpXTspaWYoMT09PWUubm9kZVR5cGV8fGEpaWYodT0oZD1lW3ddfHwoZVt3XT17fSkpW2UudW5pcXVlSURdfHwoZFtlLnVuaXF1ZUlEXT17fSksciYmcj09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSllPWVbaV18fGU7ZWxzZXtpZigoYz11W29dKSYmY1swXT09PV8mJmNbMV09PT1zKXJldHVybiBoWzJdPWNbMl07aWYoKHVbb109aClbMl09dChlLG4sbCkpcmV0dXJuITB9cmV0dXJuITF9fWZ1bmN0aW9uIHh0KHQpe3JldHVybiAxPHQubGVuZ3RoP2Z1bmN0aW9uKGUsbixpKXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tOylpZighdFtyXShlLG4saSkpcmV0dXJuITE7cmV0dXJuITB9OnRbMF19ZnVuY3Rpb24gX3QodCxlLG4saSxyKXtmb3IodmFyIG8sYT1bXSxzPTAsbD10Lmxlbmd0aCxjPW51bGwhPWU7czxsO3MrKykobz10W3NdKSYmKG4mJiFuKG8saSxyKXx8KGEucHVzaChvKSxjJiZlLnB1c2gocykpKTtyZXR1cm4gYX1mdW5jdGlvbiBTdCh0LGUsbixpLHIsbyl7cmV0dXJuIGkmJiFpW3ddJiYoaT1TdChpKSksciYmIXJbd10mJihyPVN0KHIsbykpLGN0KChmdW5jdGlvbihvLGEscyxsKXt2YXIgYyx1LGQsaD1bXSxmPVtdLHA9YS5sZW5ndGgsZz1vfHxmdW5jdGlvbih0LGUsbil7Zm9yKHZhciBpPTAscj1lLmxlbmd0aDtpPHI7aSsrKXN0KHQsZVtpXSxuKTtyZXR1cm4gbn0oZXx8IioiLHMubm9kZVR5cGU/W3NdOnMsW10pLG09IXR8fCFvJiZlP2c6X3QoZyxoLHQscyxsKSx2PW4/cnx8KG8/dDpwfHxpKT9bXTphOm07aWYobiYmbihtLHYscyxsKSxpKWZvcihjPV90KHYsZiksaShjLFtdLHMsbCksdT1jLmxlbmd0aDt1LS07KShkPWNbdV0pJiYodltmW3VdXT0hKG1bZlt1XV09ZCkpO2lmKG8pe2lmKHJ8fHQpe2lmKHIpe2ZvcihjPVtdLHU9di5sZW5ndGg7dS0tOykoZD12W3VdKSYmYy5wdXNoKG1bdV09ZCk7cihudWxsLHY9W10sYyxsKX1mb3IodT12Lmxlbmd0aDt1LS07KShkPXZbdV0pJiYtMTwoYz1yP04obyxkKTpoW3VdKSYmKG9bY109IShhW2NdPWQpKX19ZWxzZSB2PV90KHY9PT1hP3Yuc3BsaWNlKHAsdi5sZW5ndGgpOnYpLHI/cihudWxsLGEsdixsKTpQLmFwcGx5KGEsdil9KSl9ZnVuY3Rpb24gQ3QodCl7Zm9yKHZhciBlLG4scixvPXQubGVuZ3RoLGE9aS5yZWxhdGl2ZVt0WzBdLnR5cGVdLHM9YXx8aS5yZWxhdGl2ZVsiICJdLGw9YT8xOjAsdT13dCgoZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1lfSkscywhMCksZD13dCgoZnVuY3Rpb24odCl7cmV0dXJuLTE8TihlLHQpfSkscywhMCksaD1bZnVuY3Rpb24odCxuLGkpe3ZhciByPSFhJiYoaXx8biE9PWMpfHwoKGU9bikubm9kZVR5cGU/dSh0LG4saSk6ZCh0LG4saSkpO3JldHVybiBlPW51bGwscn1dO2w8bztsKyspaWYobj1pLnJlbGF0aXZlW3RbbF0udHlwZV0paD1bd3QoeHQoaCksbildO2Vsc2V7aWYoKG49aS5maWx0ZXJbdFtsXS50eXBlXS5hcHBseShudWxsLHRbbF0ubWF0Y2hlcykpW3ddKXtmb3Iocj0rK2w7cjxvJiYhaS5yZWxhdGl2ZVt0W3JdLnR5cGVdO3IrKyk7cmV0dXJuIFN0KDE8bCYmeHQoaCksMTxsJiZidCh0LnNsaWNlKDAsbC0xKS5jb25jYXQoe3ZhbHVlOiIgIj09PXRbbC0yXS50eXBlPyIqIjoiIn0pKS5yZXBsYWNlKEIsIiQxIiksbixsPHImJkN0KHQuc2xpY2UobCxyKSkscjxvJiZDdCh0PXQuc2xpY2UocikpLHI8byYmYnQodCkpfWgucHVzaChuKX1yZXR1cm4geHQoaCl9cmV0dXJuIHl0LnByb3RvdHlwZT1pLmZpbHRlcnM9aS5wc2V1ZG9zLGkuc2V0RmlsdGVycz1uZXcgeXQsYT1zdC50b2tlbml6ZT1mdW5jdGlvbih0LGUpe3ZhciBuLHIsbyxhLHMsbCxjLHU9a1t0KyIgIl07aWYodSlyZXR1cm4gZT8wOnUuc2xpY2UoMCk7Zm9yKHM9dCxsPVtdLGM9aS5wcmVGaWx0ZXI7czspe2ZvcihhIGluIG4mJiEocj1xLmV4ZWMocykpfHwociYmKHM9cy5zbGljZShyWzBdLmxlbmd0aCl8fHMpLGwucHVzaChvPVtdKSksbj0hMSwocj1XLmV4ZWMocykpJiYobj1yLnNoaWZ0KCksby5wdXNoKHt2YWx1ZTpuLHR5cGU6clswXS5yZXBsYWNlKEIsIiAiKX0pLHM9cy5zbGljZShuLmxlbmd0aCkpLGkuZmlsdGVyKSEocj1HW2FdLmV4ZWMocykpfHxjW2FdJiYhKHI9Y1thXShyKSl8fChuPXIuc2hpZnQoKSxvLnB1c2goe3ZhbHVlOm4sdHlwZTphLG1hdGNoZXM6cn0pLHM9cy5zbGljZShuLmxlbmd0aCkpO2lmKCFuKWJyZWFrfXJldHVybiBlP3MubGVuZ3RoOnM/c3QuZXJyb3IodCk6ayh0LGwpLnNsaWNlKDApfSxzPXN0LmNvbXBpbGU9ZnVuY3Rpb24odCxlKXt2YXIgbixyLG8scyxsLHUsZD1bXSxwPVtdLG09VFt0KyIgIl07aWYoIW0pe2ZvcihlfHwoZT1hKHQpKSxuPWUubGVuZ3RoO24tLTspKG09Q3QoZVtuXSkpW3ddP2QucHVzaChtKTpwLnB1c2gobSk7KG09VCh0LChyPXAscz0wPChvPWQpLmxlbmd0aCxsPTA8ci5sZW5ndGgsdT1mdW5jdGlvbih0LGUsbixhLHUpe3ZhciBkLHAsbSx2PTAseT0iMCIsYj10JiZbXSx3PVtdLHg9YyxTPXR8fGwmJmkuZmluZC5UQUcoIioiLHUpLEM9Xys9bnVsbD09eD8xOk1hdGgucmFuZG9tKCl8fC4xLGs9Uy5sZW5ndGg7Zm9yKHUmJihjPWU9PWZ8fGV8fHUpO3khPT1rJiZudWxsIT0oZD1TW3ldKTt5Kyspe2lmKGwmJmQpe2ZvcihwPTAsZXx8ZC5vd25lckRvY3VtZW50PT1mfHwoaChkKSxuPSFnKTttPXJbcCsrXTspaWYobShkLGV8fGYsbikpe2EucHVzaChkKTticmVha311JiYoXz1DKX1zJiYoKGQ9IW0mJmQpJiZ2LS0sdCYmYi5wdXNoKGQpKX1pZih2Kz15LHMmJnkhPT12KXtmb3IocD0wO209b1twKytdOyltKGIsdyxlLG4pO2lmKHQpe2lmKDA8dilmb3IoO3ktLTspYlt5XXx8d1t5XXx8KHdbeV09Ty5jYWxsKGEpKTt3PV90KHcpfVAuYXBwbHkoYSx3KSx1JiYhdCYmMDx3Lmxlbmd0aCYmMTx2K28ubGVuZ3RoJiZzdC51bmlxdWVTb3J0KGEpfXJldHVybiB1JiYoXz1DLGM9eCksYn0scz9jdCh1KTp1KSkpLnNlbGVjdG9yPXR9cmV0dXJuIG19LGw9c3Quc2VsZWN0PWZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBvLGwsYyx1LGQsaD0iZnVuY3Rpb24iPT10eXBlb2YgdCYmdCxmPSFyJiZhKHQ9aC5zZWxlY3Rvcnx8dCk7aWYobj1ufHxbXSwxPT09Zi5sZW5ndGgpe2lmKDI8KGw9ZlswXT1mWzBdLnNsaWNlKDApKS5sZW5ndGgmJiJJRCI9PT0oYz1sWzBdKS50eXBlJiY5PT09ZS5ub2RlVHlwZSYmZyYmaS5yZWxhdGl2ZVtsWzFdLnR5cGVdKXtpZighKGU9KGkuZmluZC5JRChjLm1hdGNoZXNbMF0ucmVwbGFjZShldCxudCksZSl8fFtdKVswXSkpcmV0dXJuIG47aCYmKGU9ZS5wYXJlbnROb2RlKSx0PXQuc2xpY2UobC5zaGlmdCgpLnZhbHVlLmxlbmd0aCl9Zm9yKG89Ry5uZWVkc0NvbnRleHQudGVzdCh0KT8wOmwubGVuZ3RoO28tLSYmKGM9bFtvXSwhaS5yZWxhdGl2ZVt1PWMudHlwZV0pOylpZigoZD1pLmZpbmRbdV0pJiYocj1kKGMubWF0Y2hlc1swXS5yZXBsYWNlKGV0LG50KSx0dC50ZXN0KGxbMF0udHlwZSkmJnZ0KGUucGFyZW50Tm9kZSl8fGUpKSl7aWYobC5zcGxpY2UobywxKSwhKHQ9ci5sZW5ndGgmJmJ0KGwpKSlyZXR1cm4gUC5hcHBseShuLHIpLG47YnJlYWt9fXJldHVybihofHxzKHQsZikpKHIsZSwhZyxuLCFlfHx0dC50ZXN0KHQpJiZ2dChlLnBhcmVudE5vZGUpfHxlKSxufSxuLnNvcnRTdGFibGU9dy5zcGxpdCgiIikuc29ydChEKS5qb2luKCIiKT09PXcsbi5kZXRlY3REdXBsaWNhdGVzPSEhZCxoKCksbi5zb3J0RGV0YWNoZWQ9dXQoKGZ1bmN0aW9uKHQpe3JldHVybiAxJnQuY29tcGFyZURvY3VtZW50UG9zaXRpb24oZi5jcmVhdGVFbGVtZW50KCJmaWVsZHNldCIpKX0pKSx1dCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuaW5uZXJIVE1MPSI8YSBocmVmPScjJz48L2E+IiwiIyI9PT10LmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJocmVmIil9KSl8fGR0KCJ0eXBlfGhyZWZ8aGVpZ2h0fHdpZHRoIiwoZnVuY3Rpb24odCxlLG4pe2lmKCFuKXJldHVybiB0LmdldEF0dHJpYnV0ZShlLCJ0eXBlIj09PWUudG9Mb3dlckNhc2UoKT8xOjIpfSkpLG4uYXR0cmlidXRlcyYmdXQoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmlubmVySFRNTD0iPGlucHV0Lz4iLHQuZmlyc3RDaGlsZC5zZXRBdHRyaWJ1dGUoInZhbHVlIiwiIiksIiI9PT10LmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpfSkpfHxkdCgidmFsdWUiLChmdW5jdGlvbih0LGUsbil7aWYoIW4mJiJpbnB1dCI9PT10Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpcmV0dXJuIHQuZGVmYXVsdFZhbHVlfSkpLHV0KChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dC5nZXRBdHRyaWJ1dGUoImRpc2FibGVkIil9KSl8fGR0KEYsKGZ1bmN0aW9uKHQsZSxuKXt2YXIgaTtpZighbilyZXR1cm4hMD09PXRbZV0/ZS50b0xvd2VyQ2FzZSgpOihpPXQuZ2V0QXR0cmlidXRlTm9kZShlKSkmJmkuc3BlY2lmaWVkP2kudmFsdWU6bnVsbH0pKSxzdH0odCk7eC5maW5kPVMseC5leHByPVMuc2VsZWN0b3JzLHguZXhwclsiOiJdPXguZXhwci5wc2V1ZG9zLHgudW5pcXVlU29ydD14LnVuaXF1ZT1TLnVuaXF1ZVNvcnQseC50ZXh0PVMuZ2V0VGV4dCx4LmlzWE1MRG9jPVMuaXNYTUwseC5jb250YWlucz1TLmNvbnRhaW5zLHguZXNjYXBlU2VsZWN0b3I9Uy5lc2NhcGU7dmFyIEM9ZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgaT1bXSxyPXZvaWQgMCE9PW47KHQ9dFtlXSkmJjkhPT10Lm5vZGVUeXBlOylpZigxPT09dC5ub2RlVHlwZSl7aWYociYmeCh0KS5pcyhuKSlicmVhaztpLnB1c2godCl9cmV0dXJuIGl9LGs9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49W107dDt0PXQubmV4dFNpYmxpbmcpMT09PXQubm9kZVR5cGUmJnQhPT1lJiZuLnB1c2godCk7cmV0dXJuIG59LFQ9eC5leHByLm1hdGNoLm5lZWRzQ29udGV4dDtmdW5jdGlvbiBBKHQsZSl7cmV0dXJuIHQubm9kZU5hbWUmJnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWUudG9Mb3dlckNhc2UoKX12YXIgRD0vXjwoW2Etel1bXlwvXDA+Olx4MjBcdFxyXG5cZl0qKVtceDIwXHRcclxuXGZdKlwvPz4oPzo8XC9cMT58KSQvaTtmdW5jdGlvbiBFKHQsZSxuKXtyZXR1cm4gcChlKT94LmdyZXAodCwoZnVuY3Rpb24odCxpKXtyZXR1cm4hIWUuY2FsbCh0LGksdCkhPT1ufSkpOmUubm9kZVR5cGU/eC5ncmVwKHQsKGZ1bmN0aW9uKHQpe3JldHVybiB0PT09ZSE9PW59KSk6InN0cmluZyIhPXR5cGVvZiBlP3guZ3JlcCh0LChmdW5jdGlvbih0KXtyZXR1cm4tMTxzLmNhbGwoZSx0KSE9PW59KSk6eC5maWx0ZXIoZSx0LG4pfXguZmlsdGVyPWZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1lWzBdO3JldHVybiBuJiYodD0iOm5vdCgiK3QrIikiKSwxPT09ZS5sZW5ndGgmJjE9PT1pLm5vZGVUeXBlP3guZmluZC5tYXRjaGVzU2VsZWN0b3IoaSx0KT9baV06W106eC5maW5kLm1hdGNoZXModCx4LmdyZXAoZSwoZnVuY3Rpb24odCl7cmV0dXJuIDE9PT10Lm5vZGVUeXBlfSkpKX0seC5mbi5leHRlbmQoe2ZpbmQ6ZnVuY3Rpb24odCl7dmFyIGUsbixpPXRoaXMubGVuZ3RoLHI9dGhpcztpZigic3RyaW5nIiE9dHlwZW9mIHQpcmV0dXJuIHRoaXMucHVzaFN0YWNrKHgodCkuZmlsdGVyKChmdW5jdGlvbigpe2ZvcihlPTA7ZTxpO2UrKylpZih4LmNvbnRhaW5zKHJbZV0sdGhpcykpcmV0dXJuITB9KSkpO2ZvcihuPXRoaXMucHVzaFN0YWNrKFtdKSxlPTA7ZTxpO2UrKyl4LmZpbmQodCxyW2VdLG4pO3JldHVybiAxPGk/eC51bmlxdWVTb3J0KG4pOm59LGZpbHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soRSh0aGlzLHR8fFtdLCExKSl9LG5vdDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soRSh0aGlzLHR8fFtdLCEwKSl9LGlzOmZ1bmN0aW9uKHQpe3JldHVybiEhRSh0aGlzLCJzdHJpbmciPT10eXBlb2YgdCYmVC50ZXN0KHQpP3godCk6dHx8W10sITEpLmxlbmd0aH19KTt2YXIgTSxPPS9eKD86XHMqKDxbXHdcV10rPilbXj5dKnwjKFtcdy1dKykpJC87KHguZm4uaW5pdD1mdW5jdGlvbih0LGUsbil7dmFyIGkscjtpZighdClyZXR1cm4gdGhpcztpZihuPW58fE0sInN0cmluZyI9PXR5cGVvZiB0KXtpZighKGk9IjwiPT09dFswXSYmIj4iPT09dFt0Lmxlbmd0aC0xXSYmMzw9dC5sZW5ndGg/W251bGwsdCxudWxsXTpPLmV4ZWModCkpfHwhaVsxXSYmZSlyZXR1cm4hZXx8ZS5qcXVlcnk/KGV8fG4pLmZpbmQodCk6dGhpcy5jb25zdHJ1Y3RvcihlKS5maW5kKHQpO2lmKGlbMV0pe2lmKGU9ZSBpbnN0YW5jZW9mIHg/ZVswXTplLHgubWVyZ2UodGhpcyx4LnBhcnNlSFRNTChpWzFdLGUmJmUubm9kZVR5cGU/ZS5vd25lckRvY3VtZW50fHxlOm0sITApKSxELnRlc3QoaVsxXSkmJnguaXNQbGFpbk9iamVjdChlKSlmb3IoaSBpbiBlKXAodGhpc1tpXSk/dGhpc1tpXShlW2ldKTp0aGlzLmF0dHIoaSxlW2ldKTtyZXR1cm4gdGhpc31yZXR1cm4ocj1tLmdldEVsZW1lbnRCeUlkKGlbMl0pKSYmKHRoaXNbMF09cix0aGlzLmxlbmd0aD0xKSx0aGlzfXJldHVybiB0Lm5vZGVUeXBlPyh0aGlzWzBdPXQsdGhpcy5sZW5ndGg9MSx0aGlzKTpwKHQpP3ZvaWQgMCE9PW4ucmVhZHk/bi5yZWFkeSh0KTp0KHgpOngubWFrZUFycmF5KHQsdGhpcyl9KS5wcm90b3R5cGU9eC5mbixNPXgobSk7dmFyIEk9L14oPzpwYXJlbnRzfHByZXYoPzpVbnRpbHxBbGwpKS8sUD17Y2hpbGRyZW46ITAsY29udGVudHM6ITAsbmV4dDohMCxwcmV2OiEwfTtmdW5jdGlvbiBMKHQsZSl7Zm9yKDsodD10W2VdKSYmMSE9PXQubm9kZVR5cGU7KTtyZXR1cm4gdH14LmZuLmV4dGVuZCh7aGFzOmZ1bmN0aW9uKHQpe3ZhciBlPXgodCx0aGlzKSxuPWUubGVuZ3RoO3JldHVybiB0aGlzLmZpbHRlcigoZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PG47dCsrKWlmKHguY29udGFpbnModGhpcyxlW3RdKSlyZXR1cm4hMH0pKX0sY2xvc2VzdDpmdW5jdGlvbih0LGUpe3ZhciBuLGk9MCxyPXRoaXMubGVuZ3RoLG89W10sYT0ic3RyaW5nIiE9dHlwZW9mIHQmJngodCk7aWYoIVQudGVzdCh0KSlmb3IoO2k8cjtpKyspZm9yKG49dGhpc1tpXTtuJiZuIT09ZTtuPW4ucGFyZW50Tm9kZSlpZihuLm5vZGVUeXBlPDExJiYoYT8tMTxhLmluZGV4KG4pOjE9PT1uLm5vZGVUeXBlJiZ4LmZpbmQubWF0Y2hlc1NlbGVjdG9yKG4sdCkpKXtvLnB1c2gobik7YnJlYWt9cmV0dXJuIHRoaXMucHVzaFN0YWNrKDE8by5sZW5ndGg/eC51bmlxdWVTb3J0KG8pOm8pfSxpbmRleDpmdW5jdGlvbih0KXtyZXR1cm4gdD8ic3RyaW5nIj09dHlwZW9mIHQ/cy5jYWxsKHgodCksdGhpc1swXSk6cy5jYWxsKHRoaXMsdC5qcXVlcnk/dFswXTp0KTp0aGlzWzBdJiZ0aGlzWzBdLnBhcmVudE5vZGU/dGhpcy5maXJzdCgpLnByZXZBbGwoKS5sZW5ndGg6LTF9LGFkZDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnB1c2hTdGFjayh4LnVuaXF1ZVNvcnQoeC5tZXJnZSh0aGlzLmdldCgpLHgodCxlKSkpKX0sYWRkQmFjazpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hZGQobnVsbD09dD90aGlzLnByZXZPYmplY3Q6dGhpcy5wcmV2T2JqZWN0LmZpbHRlcih0KSl9fSkseC5lYWNoKHtwYXJlbnQ6ZnVuY3Rpb24odCl7dmFyIGU9dC5wYXJlbnROb2RlO3JldHVybiBlJiYxMSE9PWUubm9kZVR5cGU/ZTpudWxsfSxwYXJlbnRzOmZ1bmN0aW9uKHQpe3JldHVybiBDKHQsInBhcmVudE5vZGUiKX0scGFyZW50c1VudGlsOmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gQyh0LCJwYXJlbnROb2RlIixuKX0sbmV4dDpmdW5jdGlvbih0KXtyZXR1cm4gTCh0LCJuZXh0U2libGluZyIpfSxwcmV2OmZ1bmN0aW9uKHQpe3JldHVybiBMKHQsInByZXZpb3VzU2libGluZyIpfSxuZXh0QWxsOmZ1bmN0aW9uKHQpe3JldHVybiBDKHQsIm5leHRTaWJsaW5nIil9LHByZXZBbGw6ZnVuY3Rpb24odCl7cmV0dXJuIEModCwicHJldmlvdXNTaWJsaW5nIil9LG5leHRVbnRpbDpmdW5jdGlvbih0LGUsbil7cmV0dXJuIEModCwibmV4dFNpYmxpbmciLG4pfSxwcmV2VW50aWw6ZnVuY3Rpb24odCxlLG4pe3JldHVybiBDKHQsInByZXZpb3VzU2libGluZyIsbil9LHNpYmxpbmdzOmZ1bmN0aW9uKHQpe3JldHVybiBrKCh0LnBhcmVudE5vZGV8fHt9KS5maXJzdENoaWxkLHQpfSxjaGlsZHJlbjpmdW5jdGlvbih0KXtyZXR1cm4gayh0LmZpcnN0Q2hpbGQpfSxjb250ZW50czpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbCE9dC5jb250ZW50RG9jdW1lbnQmJmkodC5jb250ZW50RG9jdW1lbnQpP3QuY29udGVudERvY3VtZW50OihBKHQsInRlbXBsYXRlIikmJih0PXQuY29udGVudHx8dCkseC5tZXJnZShbXSx0LmNoaWxkTm9kZXMpKX19LChmdW5jdGlvbih0LGUpe3guZm5bdF09ZnVuY3Rpb24obixpKXt2YXIgcj14Lm1hcCh0aGlzLGUsbik7cmV0dXJuIlVudGlsIiE9PXQuc2xpY2UoLTUpJiYoaT1uKSxpJiYic3RyaW5nIj09dHlwZW9mIGkmJihyPXguZmlsdGVyKGkscikpLDE8dGhpcy5sZW5ndGgmJihQW3RdfHx4LnVuaXF1ZVNvcnQociksSS50ZXN0KHQpJiZyLnJldmVyc2UoKSksdGhpcy5wdXNoU3RhY2socil9fSkpO3ZhciBOPS9bXlx4MjBcdFxyXG5cZl0rL2c7ZnVuY3Rpb24gRih0KXtyZXR1cm4gdH1mdW5jdGlvbiBSKHQpe3Rocm93IHR9ZnVuY3Rpb24gaih0LGUsbixpKXt2YXIgcjt0cnl7dCYmcChyPXQucHJvbWlzZSk/ci5jYWxsKHQpLmRvbmUoZSkuZmFpbChuKTp0JiZwKHI9dC50aGVuKT9yLmNhbGwodCxlLG4pOmUuYXBwbHkodm9pZCAwLFt0XS5zbGljZShpKSl9Y2F0Y2godCl7bi5hcHBseSh2b2lkIDAsW3RdKX19eC5DYWxsYmFja3M9ZnVuY3Rpb24odCl7dmFyIGUsbjt0PSJzdHJpbmciPT10eXBlb2YgdD8oZT10LG49e30seC5lYWNoKGUubWF0Y2goTil8fFtdLChmdW5jdGlvbih0LGUpe25bZV09ITB9KSksbik6eC5leHRlbmQoe30sdCk7dmFyIGkscixvLGEscz1bXSxsPVtdLGM9LTEsdT1mdW5jdGlvbigpe2ZvcihhPWF8fHQub25jZSxvPWk9ITA7bC5sZW5ndGg7Yz0tMSlmb3Iocj1sLnNoaWZ0KCk7KytjPHMubGVuZ3RoOykhMT09PXNbY10uYXBwbHkoclswXSxyWzFdKSYmdC5zdG9wT25GYWxzZSYmKGM9cy5sZW5ndGgscj0hMSk7dC5tZW1vcnl8fChyPSExKSxpPSExLGEmJihzPXI/W106IiIpfSxkPXthZGQ6ZnVuY3Rpb24oKXtyZXR1cm4gcyYmKHImJiFpJiYoYz1zLmxlbmd0aC0xLGwucHVzaChyKSksZnVuY3Rpb24gZShuKXt4LmVhY2gobiwoZnVuY3Rpb24obixpKXtwKGkpP3QudW5pcXVlJiZkLmhhcyhpKXx8cy5wdXNoKGkpOmkmJmkubGVuZ3RoJiYic3RyaW5nIiE9PWIoaSkmJmUoaSl9KSl9KGFyZ3VtZW50cyksciYmIWkmJnUoKSksdGhpc30scmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIHguZWFjaChhcmd1bWVudHMsKGZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuOy0xPChuPXguaW5BcnJheShlLHMsbikpOylzLnNwbGljZShuLDEpLG48PWMmJmMtLX0pKSx0aGlzfSxoYXM6ZnVuY3Rpb24odCl7cmV0dXJuIHQ/LTE8eC5pbkFycmF5KHQscyk6MDxzLmxlbmd0aH0sZW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4gcyYmKHM9W10pLHRoaXN9LGRpc2FibGU6ZnVuY3Rpb24oKXtyZXR1cm4gYT1sPVtdLHM9cj0iIix0aGlzfSxkaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiFzfSxsb2NrOmZ1bmN0aW9uKCl7cmV0dXJuIGE9bD1bXSxyfHxpfHwocz1yPSIiKSx0aGlzfSxsb2NrZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hIWF9LGZpcmVXaXRoOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGF8fChlPVt0LChlPWV8fFtdKS5zbGljZT9lLnNsaWNlKCk6ZV0sbC5wdXNoKGUpLGl8fHUoKSksdGhpc30sZmlyZTpmdW5jdGlvbigpe3JldHVybiBkLmZpcmVXaXRoKHRoaXMsYXJndW1lbnRzKSx0aGlzfSxmaXJlZDpmdW5jdGlvbigpe3JldHVybiEhb319O3JldHVybiBkfSx4LmV4dGVuZCh7RGVmZXJyZWQ6ZnVuY3Rpb24oZSl7dmFyIG49W1sibm90aWZ5IiwicHJvZ3Jlc3MiLHguQ2FsbGJhY2tzKCJtZW1vcnkiKSx4LkNhbGxiYWNrcygibWVtb3J5IiksMl0sWyJyZXNvbHZlIiwiZG9uZSIseC5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IikseC5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksMCwicmVzb2x2ZWQiXSxbInJlamVjdCIsImZhaWwiLHguQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLHguQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLDEsInJlamVjdGVkIl1dLGk9InBlbmRpbmciLHI9e3N0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIGl9LGFsd2F5czpmdW5jdGlvbigpe3JldHVybiBvLmRvbmUoYXJndW1lbnRzKS5mYWlsKGFyZ3VtZW50cyksdGhpc30sY2F0Y2g6ZnVuY3Rpb24odCl7cmV0dXJuIHIudGhlbihudWxsLHQpfSxwaXBlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzO3JldHVybiB4LkRlZmVycmVkKChmdW5jdGlvbihlKXt4LmVhY2gobiwoZnVuY3Rpb24obixpKXt2YXIgcj1wKHRbaVs0XV0pJiZ0W2lbNF1dO29baVsxXV0oKGZ1bmN0aW9uKCl7dmFyIHQ9ciYmci5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dCYmcCh0LnByb21pc2UpP3QucHJvbWlzZSgpLnByb2dyZXNzKGUubm90aWZ5KS5kb25lKGUucmVzb2x2ZSkuZmFpbChlLnJlamVjdCk6ZVtpWzBdKyJXaXRoIl0odGhpcyxyP1t0XTphcmd1bWVudHMpfSkpfSkpLHQ9bnVsbH0pKS5wcm9taXNlKCl9LHRoZW46ZnVuY3Rpb24oZSxpLHIpe3ZhciBvPTA7ZnVuY3Rpb24gYShlLG4saSxyKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcz10aGlzLGw9YXJndW1lbnRzLGM9ZnVuY3Rpb24oKXt2YXIgdCxjO2lmKCEoZTxvKSl7aWYoKHQ9aS5hcHBseShzLGwpKT09PW4ucHJvbWlzZSgpKXRocm93IG5ldyBUeXBlRXJyb3IoIlRoZW5hYmxlIHNlbGYtcmVzb2x1dGlvbiIpO2M9dCYmKCJvYmplY3QiPT10eXBlb2YgdHx8ImZ1bmN0aW9uIj09dHlwZW9mIHQpJiZ0LnRoZW4scChjKT9yP2MuY2FsbCh0LGEobyxuLEYsciksYShvLG4sUixyKSk6KG8rKyxjLmNhbGwodCxhKG8sbixGLHIpLGEobyxuLFIsciksYShvLG4sRixuLm5vdGlmeVdpdGgpKSk6KGkhPT1GJiYocz12b2lkIDAsbD1bdF0pLChyfHxuLnJlc29sdmVXaXRoKShzLGwpKX19LHU9cj9jOmZ1bmN0aW9uKCl7dHJ5e2MoKX1jYXRjaCh0KXt4LkRlZmVycmVkLmV4Y2VwdGlvbkhvb2smJnguRGVmZXJyZWQuZXhjZXB0aW9uSG9vayh0LHUuc3RhY2tUcmFjZSksbzw9ZSsxJiYoaSE9PVImJihzPXZvaWQgMCxsPVt0XSksbi5yZWplY3RXaXRoKHMsbCkpfX07ZT91KCk6KHguRGVmZXJyZWQuZ2V0U3RhY2tIb29rJiYodS5zdGFja1RyYWNlPXguRGVmZXJyZWQuZ2V0U3RhY2tIb29rKCkpLHQuc2V0VGltZW91dCh1KSl9fXJldHVybiB4LkRlZmVycmVkKChmdW5jdGlvbih0KXtuWzBdWzNdLmFkZChhKDAsdCxwKHIpP3I6Rix0Lm5vdGlmeVdpdGgpKSxuWzFdWzNdLmFkZChhKDAsdCxwKGUpP2U6RikpLG5bMl1bM10uYWRkKGEoMCx0LHAoaSk/aTpSKSl9KSkucHJvbWlzZSgpfSxwcm9taXNlOmZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT10P3guZXh0ZW5kKHQscik6cn19LG89e307cmV0dXJuIHguZWFjaChuLChmdW5jdGlvbih0LGUpe3ZhciBhPWVbMl0scz1lWzVdO3JbZVsxXV09YS5hZGQscyYmYS5hZGQoKGZ1bmN0aW9uKCl7aT1zfSksblszLXRdWzJdLmRpc2FibGUsblszLXRdWzNdLmRpc2FibGUsblswXVsyXS5sb2NrLG5bMF1bM10ubG9jayksYS5hZGQoZVszXS5maXJlKSxvW2VbMF1dPWZ1bmN0aW9uKCl7cmV0dXJuIG9bZVswXSsiV2l0aCJdKHRoaXM9PT1vP3ZvaWQgMDp0aGlzLGFyZ3VtZW50cyksdGhpc30sb1tlWzBdKyJXaXRoIl09YS5maXJlV2l0aH0pKSxyLnByb21pc2UobyksZSYmZS5jYWxsKG8sbyksb30sd2hlbjpmdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoLG49ZSxpPUFycmF5KG4pLG89ci5jYWxsKGFyZ3VtZW50cyksYT14LkRlZmVycmVkKCkscz1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24obil7aVt0XT10aGlzLG9bdF09MTxhcmd1bWVudHMubGVuZ3RoP3IuY2FsbChhcmd1bWVudHMpOm4sLS1lfHxhLnJlc29sdmVXaXRoKGksbyl9fTtpZihlPD0xJiYoaih0LGEuZG9uZShzKG4pKS5yZXNvbHZlLGEucmVqZWN0LCFlKSwicGVuZGluZyI9PT1hLnN0YXRlKCl8fHAob1tuXSYmb1tuXS50aGVuKSkpcmV0dXJuIGEudGhlbigpO2Zvcig7bi0tOylqKG9bbl0scyhuKSxhLnJlamVjdCk7cmV0dXJuIGEucHJvbWlzZSgpfX0pO3ZhciAkPS9eKEV2YWx8SW50ZXJuYWx8UmFuZ2V8UmVmZXJlbmNlfFN5bnRheHxUeXBlfFVSSSlFcnJvciQvO3guRGVmZXJyZWQuZXhjZXB0aW9uSG9vaz1mdW5jdGlvbihlLG4pe3QuY29uc29sZSYmdC5jb25zb2xlLndhcm4mJmUmJiQudGVzdChlLm5hbWUpJiZ0LmNvbnNvbGUud2FybigialF1ZXJ5LkRlZmVycmVkIGV4Y2VwdGlvbjogIitlLm1lc3NhZ2UsZS5zdGFjayxuKX0seC5yZWFkeUV4Y2VwdGlvbj1mdW5jdGlvbihlKXt0LnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dGhyb3cgZX0pKX07dmFyIHo9eC5EZWZlcnJlZCgpO2Z1bmN0aW9uIEgoKXttLnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLEgpLHQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsSCkseC5yZWFkeSgpfXguZm4ucmVhZHk9ZnVuY3Rpb24odCl7cmV0dXJuIHoudGhlbih0KS5jYXRjaCgoZnVuY3Rpb24odCl7eC5yZWFkeUV4Y2VwdGlvbih0KX0pKSx0aGlzfSx4LmV4dGVuZCh7aXNSZWFkeTohMSxyZWFkeVdhaXQ6MSxyZWFkeTpmdW5jdGlvbih0KXsoITA9PT10Py0teC5yZWFkeVdhaXQ6eC5pc1JlYWR5KXx8KHguaXNSZWFkeT0hMCkhPT10JiYwPC0teC5yZWFkeVdhaXR8fHoucmVzb2x2ZVdpdGgobSxbeF0pfX0pLHgucmVhZHkudGhlbj16LnRoZW4sImNvbXBsZXRlIj09PW0ucmVhZHlTdGF0ZXx8ImxvYWRpbmciIT09bS5yZWFkeVN0YXRlJiYhbS5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGw/dC5zZXRUaW1lb3V0KHgucmVhZHkpOihtLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLEgpLHQuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsSCkpO3ZhciBCPWZ1bmN0aW9uKHQsZSxuLGkscixvLGEpe3ZhciBzPTAsbD10Lmxlbmd0aCxjPW51bGw9PW47aWYoIm9iamVjdCI9PT1iKG4pKWZvcihzIGluIHI9ITAsbilCKHQsZSxzLG5bc10sITAsbyxhKTtlbHNlIGlmKHZvaWQgMCE9PWkmJihyPSEwLHAoaSl8fChhPSEwKSxjJiYoYT8oZS5jYWxsKHQsaSksZT1udWxsKTooYz1lLGU9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBjLmNhbGwoeCh0KSxuKX0pKSxlKSlmb3IoO3M8bDtzKyspZSh0W3NdLG4sYT9pOmkuY2FsbCh0W3NdLHMsZSh0W3NdLG4pKSk7cmV0dXJuIHI/dDpjP2UuY2FsbCh0KTpsP2UodFswXSxuKTpvfSxxPS9eLW1zLS8sVz0vLShbYS16XSkvZztmdW5jdGlvbiBVKHQsZSl7cmV0dXJuIGUudG9VcHBlckNhc2UoKX1mdW5jdGlvbiBWKHQpe3JldHVybiB0LnJlcGxhY2UocSwibXMtIikucmVwbGFjZShXLFUpfXZhciBZPWZ1bmN0aW9uKHQpe3JldHVybiAxPT09dC5ub2RlVHlwZXx8OT09PXQubm9kZVR5cGV8fCErdC5ub2RlVHlwZX07ZnVuY3Rpb24gRygpe3RoaXMuZXhwYW5kbz14LmV4cGFuZG8rRy51aWQrK31HLnVpZD0xLEcucHJvdG90eXBlPXtjYWNoZTpmdW5jdGlvbih0KXt2YXIgZT10W3RoaXMuZXhwYW5kb107cmV0dXJuIGV8fChlPXt9LFkodCkmJih0Lm5vZGVUeXBlP3RbdGhpcy5leHBhbmRvXT1lOk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHRoaXMuZXhwYW5kbyx7dmFsdWU6ZSxjb25maWd1cmFibGU6ITB9KSkpLGV9LHNldDpmdW5jdGlvbih0LGUsbil7dmFyIGkscj10aGlzLmNhY2hlKHQpO2lmKCJzdHJpbmciPT10eXBlb2YgZSlyW1YoZSldPW47ZWxzZSBmb3IoaSBpbiBlKXJbVihpKV09ZVtpXTtyZXR1cm4gcn0sZ2V0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHZvaWQgMD09PWU/dGhpcy5jYWNoZSh0KTp0W3RoaXMuZXhwYW5kb10mJnRbdGhpcy5leHBhbmRvXVtWKGUpXX0sYWNjZXNzOmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdm9pZCAwPT09ZXx8ZSYmInN0cmluZyI9PXR5cGVvZiBlJiZ2b2lkIDA9PT1uP3RoaXMuZ2V0KHQsZSk6KHRoaXMuc2V0KHQsZSxuKSx2b2lkIDAhPT1uP246ZSl9LHJlbW92ZTpmdW5jdGlvbih0LGUpe3ZhciBuLGk9dFt0aGlzLmV4cGFuZG9dO2lmKHZvaWQgMCE9PWkpe2lmKHZvaWQgMCE9PWUpe249KGU9QXJyYXkuaXNBcnJheShlKT9lLm1hcChWKTooZT1WKGUpKWluIGk/W2VdOmUubWF0Y2goTil8fFtdKS5sZW5ndGg7Zm9yKDtuLS07KWRlbGV0ZSBpW2Vbbl1dfSh2b2lkIDA9PT1lfHx4LmlzRW1wdHlPYmplY3QoaSkpJiYodC5ub2RlVHlwZT90W3RoaXMuZXhwYW5kb109dm9pZCAwOmRlbGV0ZSB0W3RoaXMuZXhwYW5kb10pfX0saGFzRGF0YTpmdW5jdGlvbih0KXt2YXIgZT10W3RoaXMuZXhwYW5kb107cmV0dXJuIHZvaWQgMCE9PWUmJiF4LmlzRW1wdHlPYmplY3QoZSl9fTt2YXIgWD1uZXcgRyxRPW5ldyBHLEs9L14oPzpce1tcd1xXXSpcfXxcW1tcd1xXXSpcXSkkLyxKPS9bQS1aXS9nO2Z1bmN0aW9uIFoodCxlLG4pe3ZhciBpLHI7aWYodm9pZCAwPT09biYmMT09PXQubm9kZVR5cGUpaWYoaT0iZGF0YS0iK2UucmVwbGFjZShKLCItJCYiKS50b0xvd2VyQ2FzZSgpLCJzdHJpbmciPT10eXBlb2Yobj10LmdldEF0dHJpYnV0ZShpKSkpe3RyeXtuPSJ0cnVlIj09PShyPW4pfHwiZmFsc2UiIT09ciYmKCJudWxsIj09PXI/bnVsbDpyPT09K3IrIiI/K3I6Sy50ZXN0KHIpP0pTT04ucGFyc2Uocik6cil9Y2F0Y2godCl7fVEuc2V0KHQsZSxuKX1lbHNlIG49dm9pZCAwO3JldHVybiBufXguZXh0ZW5kKHtoYXNEYXRhOmZ1bmN0aW9uKHQpe3JldHVybiBRLmhhc0RhdGEodCl8fFguaGFzRGF0YSh0KX0sZGF0YTpmdW5jdGlvbih0LGUsbil7cmV0dXJuIFEuYWNjZXNzKHQsZSxuKX0scmVtb3ZlRGF0YTpmdW5jdGlvbih0LGUpe1EucmVtb3ZlKHQsZSl9LF9kYXRhOmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gWC5hY2Nlc3ModCxlLG4pfSxfcmVtb3ZlRGF0YTpmdW5jdGlvbih0LGUpe1gucmVtb3ZlKHQsZSl9fSkseC5mbi5leHRlbmQoe2RhdGE6ZnVuY3Rpb24odCxlKXt2YXIgbixpLHIsbz10aGlzWzBdLGE9byYmby5hdHRyaWJ1dGVzO2lmKHZvaWQgMD09PXQpe2lmKHRoaXMubGVuZ3RoJiYocj1RLmdldChvKSwxPT09by5ub2RlVHlwZSYmIVguZ2V0KG8sImhhc0RhdGFBdHRycyIpKSl7Zm9yKG49YS5sZW5ndGg7bi0tOylhW25dJiYwPT09KGk9YVtuXS5uYW1lKS5pbmRleE9mKCJkYXRhLSIpJiYoaT1WKGkuc2xpY2UoNSkpLFoobyxpLHJbaV0pKTtYLnNldChvLCJoYXNEYXRhQXR0cnMiLCEwKX1yZXR1cm4gcn1yZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHQ/dGhpcy5lYWNoKChmdW5jdGlvbigpe1Euc2V0KHRoaXMsdCl9KSk6Qih0aGlzLChmdW5jdGlvbihlKXt2YXIgbjtpZihvJiZ2b2lkIDA9PT1lKXJldHVybiB2b2lkIDAhPT0obj1RLmdldChvLHQpKXx8dm9pZCAwIT09KG49WihvLHQpKT9uOnZvaWQgMDt0aGlzLmVhY2goKGZ1bmN0aW9uKCl7US5zZXQodGhpcyx0LGUpfSkpfSksbnVsbCxlLDE8YXJndW1lbnRzLmxlbmd0aCxudWxsLCEwKX0scmVtb3ZlRGF0YTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpe1EucmVtb3ZlKHRoaXMsdCl9KSl9fSkseC5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKHQsZSxuKXt2YXIgaTtpZih0KXJldHVybiBlPShlfHwiZngiKSsicXVldWUiLGk9WC5nZXQodCxlKSxuJiYoIWl8fEFycmF5LmlzQXJyYXkobik/aT1YLmFjY2Vzcyh0LGUseC5tYWtlQXJyYXkobikpOmkucHVzaChuKSksaXx8W119LGRlcXVldWU6ZnVuY3Rpb24odCxlKXtlPWV8fCJmeCI7dmFyIG49eC5xdWV1ZSh0LGUpLGk9bi5sZW5ndGgscj1uLnNoaWZ0KCksbz14Ll9xdWV1ZUhvb2tzKHQsZSk7ImlucHJvZ3Jlc3MiPT09ciYmKHI9bi5zaGlmdCgpLGktLSksciYmKCJmeCI9PT1lJiZuLnVuc2hpZnQoImlucHJvZ3Jlc3MiKSxkZWxldGUgby5zdG9wLHIuY2FsbCh0LChmdW5jdGlvbigpe3guZGVxdWV1ZSh0LGUpfSksbykpLCFpJiZvJiZvLmVtcHR5LmZpcmUoKX0sX3F1ZXVlSG9va3M6ZnVuY3Rpb24odCxlKXt2YXIgbj1lKyJxdWV1ZUhvb2tzIjtyZXR1cm4gWC5nZXQodCxuKXx8WC5hY2Nlc3ModCxuLHtlbXB0eTp4LkNhbGxiYWNrcygib25jZSBtZW1vcnkiKS5hZGQoKGZ1bmN0aW9uKCl7WC5yZW1vdmUodCxbZSsicXVldWUiLG5dKX0pKX0pfX0pLHguZm4uZXh0ZW5kKHtxdWV1ZTpmdW5jdGlvbih0LGUpe3ZhciBuPTI7cmV0dXJuInN0cmluZyIhPXR5cGVvZiB0JiYoZT10LHQ9ImZ4IixuLS0pLGFyZ3VtZW50cy5sZW5ndGg8bj94LnF1ZXVlKHRoaXNbMF0sdCk6dm9pZCAwPT09ZT90aGlzOnRoaXMuZWFjaCgoZnVuY3Rpb24oKXt2YXIgbj14LnF1ZXVlKHRoaXMsdCxlKTt4Ll9xdWV1ZUhvb2tzKHRoaXMsdCksImZ4Ij09PXQmJiJpbnByb2dyZXNzIiE9PW5bMF0mJnguZGVxdWV1ZSh0aGlzLHQpfSkpfSxkZXF1ZXVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7eC5kZXF1ZXVlKHRoaXMsdCl9KSl9LGNsZWFyUXVldWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucXVldWUodHx8ImZ4IixbXSl9LHByb21pc2U6ZnVuY3Rpb24odCxlKXt2YXIgbixpPTEscj14LkRlZmVycmVkKCksbz10aGlzLGE9dGhpcy5sZW5ndGgscz1mdW5jdGlvbigpey0taXx8ci5yZXNvbHZlV2l0aChvLFtvXSl9O2Zvcigic3RyaW5nIiE9dHlwZW9mIHQmJihlPXQsdD12b2lkIDApLHQ9dHx8ImZ4IjthLS07KShuPVguZ2V0KG9bYV0sdCsicXVldWVIb29rcyIpKSYmbi5lbXB0eSYmKGkrKyxuLmVtcHR5LmFkZChzKSk7cmV0dXJuIHMoKSxyLnByb21pc2UoZSl9fSk7dmFyIHR0PS9bKy1dPyg/OlxkKlwufClcZCsoPzpbZUVdWystXT9cZCt8KS8uc291cmNlLGV0PW5ldyBSZWdFeHAoIl4oPzooWystXSk9fCkoIit0dCsiKShbYS16JV0qKSQiLCJpIiksbnQ9WyJUb3AiLCJSaWdodCIsIkJvdHRvbSIsIkxlZnQiXSxpdD1tLmRvY3VtZW50RWxlbWVudCxydD1mdW5jdGlvbih0KXtyZXR1cm4geC5jb250YWlucyh0Lm93bmVyRG9jdW1lbnQsdCl9LG90PXtjb21wb3NlZDohMH07aXQuZ2V0Um9vdE5vZGUmJihydD1mdW5jdGlvbih0KXtyZXR1cm4geC5jb250YWlucyh0Lm93bmVyRG9jdW1lbnQsdCl8fHQuZ2V0Um9vdE5vZGUob3QpPT09dC5vd25lckRvY3VtZW50fSk7dmFyIGF0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIm5vbmUiPT09KHQ9ZXx8dCkuc3R5bGUuZGlzcGxheXx8IiI9PT10LnN0eWxlLmRpc3BsYXkmJnJ0KHQpJiYibm9uZSI9PT14LmNzcyh0LCJkaXNwbGF5Iil9O2Z1bmN0aW9uIHN0KHQsZSxuLGkpe3ZhciByLG8sYT0yMCxzPWk/ZnVuY3Rpb24oKXtyZXR1cm4gaS5jdXIoKX06ZnVuY3Rpb24oKXtyZXR1cm4geC5jc3ModCxlLCIiKX0sbD1zKCksYz1uJiZuWzNdfHwoeC5jc3NOdW1iZXJbZV0/IiI6InB4IiksdT10Lm5vZGVUeXBlJiYoeC5jc3NOdW1iZXJbZV18fCJweCIhPT1jJiYrbCkmJmV0LmV4ZWMoeC5jc3ModCxlKSk7aWYodSYmdVszXSE9PWMpe2ZvcihsLz0yLGM9Y3x8dVszXSx1PStsfHwxO2EtLTspeC5zdHlsZSh0LGUsdStjKSwoMS1vKSooMS0obz1zKCkvbHx8LjUpKTw9MCYmKGE9MCksdS89bzt1Kj0yLHguc3R5bGUodCxlLHUrYyksbj1ufHxbXX1yZXR1cm4gbiYmKHU9K3V8fCtsfHwwLHI9blsxXT91KyhuWzFdKzEpKm5bMl06K25bMl0saSYmKGkudW5pdD1jLGkuc3RhcnQ9dSxpLmVuZD1yKSkscn12YXIgbHQ9e307ZnVuY3Rpb24gY3QodCxlKXtmb3IodmFyIG4saSxyLG8sYSxzLGwsYz1bXSx1PTAsZD10Lmxlbmd0aDt1PGQ7dSsrKShpPXRbdV0pLnN0eWxlJiYobj1pLnN0eWxlLmRpc3BsYXksZT8oIm5vbmUiPT09biYmKGNbdV09WC5nZXQoaSwiZGlzcGxheSIpfHxudWxsLGNbdV18fChpLnN0eWxlLmRpc3BsYXk9IiIpKSwiIj09PWkuc3R5bGUuZGlzcGxheSYmYXQoaSkmJihjW3VdPShsPWE9bz12b2lkIDAsYT0ocj1pKS5vd25lckRvY3VtZW50LHM9ci5ub2RlTmFtZSwobD1sdFtzXSl8fChvPWEuYm9keS5hcHBlbmRDaGlsZChhLmNyZWF0ZUVsZW1lbnQocykpLGw9eC5jc3MobywiZGlzcGxheSIpLG8ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvKSwibm9uZSI9PT1sJiYobD0iYmxvY2siKSxsdFtzXT1sKSkpKToibm9uZSIhPT1uJiYoY1t1XT0ibm9uZSIsWC5zZXQoaSwiZGlzcGxheSIsbikpKTtmb3IodT0wO3U8ZDt1KyspbnVsbCE9Y1t1XSYmKHRbdV0uc3R5bGUuZGlzcGxheT1jW3VdKTtyZXR1cm4gdH14LmZuLmV4dGVuZCh7c2hvdzpmdW5jdGlvbigpe3JldHVybiBjdCh0aGlzLCEwKX0saGlkZTpmdW5jdGlvbigpe3JldHVybiBjdCh0aGlzKX0sdG9nZ2xlOmZ1bmN0aW9uKHQpe3JldHVybiJib29sZWFuIj09dHlwZW9mIHQ/dD90aGlzLnNob3coKTp0aGlzLmhpZGUoKTp0aGlzLmVhY2goKGZ1bmN0aW9uKCl7YXQodGhpcyk/eCh0aGlzKS5zaG93KCk6eCh0aGlzKS5oaWRlKCl9KSl9fSk7dmFyIHV0LGR0LGh0PS9eKD86Y2hlY2tib3h8cmFkaW8pJC9pLGZ0PS88KFthLXpdW15cL1wwPlx4MjBcdFxyXG5cZl0qKS9pLHB0PS9eJHxebW9kdWxlJHxcLyg/OmphdmF8ZWNtYSlzY3JpcHQvaTt1dD1tLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKS5hcHBlbmRDaGlsZChtLmNyZWF0ZUVsZW1lbnQoImRpdiIpKSwoZHQ9bS5jcmVhdGVFbGVtZW50KCJpbnB1dCIpKS5zZXRBdHRyaWJ1dGUoInR5cGUiLCJyYWRpbyIpLGR0LnNldEF0dHJpYnV0ZSgiY2hlY2tlZCIsImNoZWNrZWQiKSxkdC5zZXRBdHRyaWJ1dGUoIm5hbWUiLCJ0IiksdXQuYXBwZW5kQ2hpbGQoZHQpLGYuY2hlY2tDbG9uZT11dC5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNoZWNrZWQsdXQuaW5uZXJIVE1MPSI8dGV4dGFyZWE+eDwvdGV4dGFyZWE+IixmLm5vQ2xvbmVDaGVja2VkPSEhdXQuY2xvbmVOb2RlKCEwKS5sYXN0Q2hpbGQuZGVmYXVsdFZhbHVlLHV0LmlubmVySFRNTD0iPG9wdGlvbj48L29wdGlvbj4iLGYub3B0aW9uPSEhdXQubGFzdENoaWxkO3ZhciBndD17dGhlYWQ6WzEsIjx0YWJsZT4iLCI8L3RhYmxlPiJdLGNvbDpbMiwiPHRhYmxlPjxjb2xncm91cD4iLCI8L2NvbGdyb3VwPjwvdGFibGU+Il0sdHI6WzIsIjx0YWJsZT48dGJvZHk+IiwiPC90Ym9keT48L3RhYmxlPiJdLHRkOlszLCI8dGFibGU+PHRib2R5Pjx0cj4iLCI8L3RyPjwvdGJvZHk+PC90YWJsZT4iXSxfZGVmYXVsdDpbMCwiIiwiIl19O2Z1bmN0aW9uIG10KHQsZSl7dmFyIG47cmV0dXJuIG49dm9pZCAwIT09dC5nZXRFbGVtZW50c0J5VGFnTmFtZT90LmdldEVsZW1lbnRzQnlUYWdOYW1lKGV8fCIqIik6dm9pZCAwIT09dC5xdWVyeVNlbGVjdG9yQWxsP3QucXVlcnlTZWxlY3RvckFsbChlfHwiKiIpOltdLHZvaWQgMD09PWV8fGUmJkEodCxlKT94Lm1lcmdlKFt0XSxuKTpufWZ1bmN0aW9uIHZ0KHQsZSl7Zm9yKHZhciBuPTAsaT10Lmxlbmd0aDtuPGk7bisrKVguc2V0KHRbbl0sImdsb2JhbEV2YWwiLCFlfHxYLmdldChlW25dLCJnbG9iYWxFdmFsIikpfWd0LnRib2R5PWd0LnRmb290PWd0LmNvbGdyb3VwPWd0LmNhcHRpb249Z3QudGhlYWQsZ3QudGg9Z3QudGQsZi5vcHRpb258fChndC5vcHRncm91cD1ndC5vcHRpb249WzEsIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz4iLCI8L3NlbGVjdD4iXSk7dmFyIHl0PS88fCYjP1x3KzsvO2Z1bmN0aW9uIGJ0KHQsZSxuLGkscil7Zm9yKHZhciBvLGEscyxsLGMsdSxkPWUuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLGg9W10sZj0wLHA9dC5sZW5ndGg7ZjxwO2YrKylpZigobz10W2ZdKXx8MD09PW8paWYoIm9iamVjdCI9PT1iKG8pKXgubWVyZ2UoaCxvLm5vZGVUeXBlP1tvXTpvKTtlbHNlIGlmKHl0LnRlc3Qobykpe2ZvcihhPWF8fGQuYXBwZW5kQ2hpbGQoZS5jcmVhdGVFbGVtZW50KCJkaXYiKSkscz0oZnQuZXhlYyhvKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKSxsPWd0W3NdfHxndC5fZGVmYXVsdCxhLmlubmVySFRNTD1sWzFdK3guaHRtbFByZWZpbHRlcihvKStsWzJdLHU9bFswXTt1LS07KWE9YS5sYXN0Q2hpbGQ7eC5tZXJnZShoLGEuY2hpbGROb2RlcyksKGE9ZC5maXJzdENoaWxkKS50ZXh0Q29udGVudD0iIn1lbHNlIGgucHVzaChlLmNyZWF0ZVRleHROb2RlKG8pKTtmb3IoZC50ZXh0Q29udGVudD0iIixmPTA7bz1oW2YrK107KWlmKGkmJi0xPHguaW5BcnJheShvLGkpKXImJnIucHVzaChvKTtlbHNlIGlmKGM9cnQobyksYT1tdChkLmFwcGVuZENoaWxkKG8pLCJzY3JpcHQiKSxjJiZ2dChhKSxuKWZvcih1PTA7bz1hW3UrK107KXB0LnRlc3Qoby50eXBlfHwiIikmJm4ucHVzaChvKTtyZXR1cm4gZH12YXIgd3Q9L15rZXkvLHh0PS9eKD86bW91c2V8cG9pbnRlcnxjb250ZXh0bWVudXxkcmFnfGRyb3ApfGNsaWNrLyxfdD0vXihbXi5dKikoPzpcLiguKyl8KS87ZnVuY3Rpb24gU3QoKXtyZXR1cm4hMH1mdW5jdGlvbiBDdCgpe3JldHVybiExfWZ1bmN0aW9uIGt0KHQsZSl7cmV0dXJuIHQ9PT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gbS5hY3RpdmVFbGVtZW50fWNhdGNoKHQpe319KCk9PSgiZm9jdXMiPT09ZSl9ZnVuY3Rpb24gVHQodCxlLG4saSxyLG8pe3ZhciBhLHM7aWYoIm9iamVjdCI9PXR5cGVvZiBlKXtmb3IocyBpbiJzdHJpbmciIT10eXBlb2YgbiYmKGk9aXx8bixuPXZvaWQgMCksZSlUdCh0LHMsbixpLGVbc10sbyk7cmV0dXJuIHR9aWYobnVsbD09aSYmbnVsbD09cj8ocj1uLGk9bj12b2lkIDApOm51bGw9PXImJigic3RyaW5nIj09dHlwZW9mIG4/KHI9aSxpPXZvaWQgMCk6KHI9aSxpPW4sbj12b2lkIDApKSwhMT09PXIpcj1DdDtlbHNlIGlmKCFyKXJldHVybiB0O3JldHVybiAxPT09byYmKGE9ciwocj1mdW5jdGlvbih0KXtyZXR1cm4geCgpLm9mZih0KSxhLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pLmd1aWQ9YS5ndWlkfHwoYS5ndWlkPXguZ3VpZCsrKSksdC5lYWNoKChmdW5jdGlvbigpe3guZXZlbnQuYWRkKHRoaXMsZSxyLGksbil9KSl9ZnVuY3Rpb24gQXQodCxlLG4pe24/KFguc2V0KHQsZSwhMSkseC5ldmVudC5hZGQodCxlLHtuYW1lc3BhY2U6ITEsaGFuZGxlcjpmdW5jdGlvbih0KXt2YXIgaSxvLGE9WC5nZXQodGhpcyxlKTtpZigxJnQuaXNUcmlnZ2VyJiZ0aGlzW2VdKXtpZihhLmxlbmd0aCkoeC5ldmVudC5zcGVjaWFsW2VdfHx7fSkuZGVsZWdhdGVUeXBlJiZ0LnN0b3BQcm9wYWdhdGlvbigpO2Vsc2UgaWYoYT1yLmNhbGwoYXJndW1lbnRzKSxYLnNldCh0aGlzLGUsYSksaT1uKHRoaXMsZSksdGhpc1tlXSgpLGEhPT0obz1YLmdldCh0aGlzLGUpKXx8aT9YLnNldCh0aGlzLGUsITEpOm89e30sYSE9PW8pcmV0dXJuIHQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksdC5wcmV2ZW50RGVmYXVsdCgpLG8udmFsdWV9ZWxzZSBhLmxlbmd0aCYmKFguc2V0KHRoaXMsZSx7dmFsdWU6eC5ldmVudC50cmlnZ2VyKHguZXh0ZW5kKGFbMF0seC5FdmVudC5wcm90b3R5cGUpLGEuc2xpY2UoMSksdGhpcyl9KSx0LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpKX19KSk6dm9pZCAwPT09WC5nZXQodCxlKSYmeC5ldmVudC5hZGQodCxlLFN0KX14LmV2ZW50PXtnbG9iYWw6e30sYWRkOmZ1bmN0aW9uKHQsZSxuLGkscil7dmFyIG8sYSxzLGwsYyx1LGQsaCxmLHAsZyxtPVguZ2V0KHQpO2lmKFkodCkpZm9yKG4uaGFuZGxlciYmKG49KG89bikuaGFuZGxlcixyPW8uc2VsZWN0b3IpLHImJnguZmluZC5tYXRjaGVzU2VsZWN0b3IoaXQsciksbi5ndWlkfHwobi5ndWlkPXguZ3VpZCsrKSwobD1tLmV2ZW50cyl8fChsPW0uZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCkpLChhPW0uaGFuZGxlKXx8KGE9bS5oYW5kbGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PXgmJnguZXZlbnQudHJpZ2dlcmVkIT09ZS50eXBlP3guZXZlbnQuZGlzcGF0Y2guYXBwbHkodCxhcmd1bWVudHMpOnZvaWQgMH0pLGM9KGU9KGV8fCIiKS5tYXRjaChOKXx8WyIiXSkubGVuZ3RoO2MtLTspZj1nPShzPV90LmV4ZWMoZVtjXSl8fFtdKVsxXSxwPShzWzJdfHwiIikuc3BsaXQoIi4iKS5zb3J0KCksZiYmKGQ9eC5ldmVudC5zcGVjaWFsW2ZdfHx7fSxmPShyP2QuZGVsZWdhdGVUeXBlOmQuYmluZFR5cGUpfHxmLGQ9eC5ldmVudC5zcGVjaWFsW2ZdfHx7fSx1PXguZXh0ZW5kKHt0eXBlOmYsb3JpZ1R5cGU6ZyxkYXRhOmksaGFuZGxlcjpuLGd1aWQ6bi5ndWlkLHNlbGVjdG9yOnIsbmVlZHNDb250ZXh0OnImJnguZXhwci5tYXRjaC5uZWVkc0NvbnRleHQudGVzdChyKSxuYW1lc3BhY2U6cC5qb2luKCIuIil9LG8pLChoPWxbZl0pfHwoKGg9bFtmXT1bXSkuZGVsZWdhdGVDb3VudD0wLGQuc2V0dXAmJiExIT09ZC5zZXR1cC5jYWxsKHQsaSxwLGEpfHx0LmFkZEV2ZW50TGlzdGVuZXImJnQuYWRkRXZlbnRMaXN0ZW5lcihmLGEpKSxkLmFkZCYmKGQuYWRkLmNhbGwodCx1KSx1LmhhbmRsZXIuZ3VpZHx8KHUuaGFuZGxlci5ndWlkPW4uZ3VpZCkpLHI/aC5zcGxpY2UoaC5kZWxlZ2F0ZUNvdW50KyssMCx1KTpoLnB1c2godSkseC5ldmVudC5nbG9iYWxbZl09ITApfSxyZW1vdmU6ZnVuY3Rpb24odCxlLG4saSxyKXt2YXIgbyxhLHMsbCxjLHUsZCxoLGYscCxnLG09WC5oYXNEYXRhKHQpJiZYLmdldCh0KTtpZihtJiYobD1tLmV2ZW50cykpe2ZvcihjPShlPShlfHwiIikubWF0Y2goTil8fFsiIl0pLmxlbmd0aDtjLS07KWlmKGY9Zz0ocz1fdC5leGVjKGVbY10pfHxbXSlbMV0scD0oc1syXXx8IiIpLnNwbGl0KCIuIikuc29ydCgpLGYpe2ZvcihkPXguZXZlbnQuc3BlY2lhbFtmXXx8e30saD1sW2Y9KGk/ZC5kZWxlZ2F0ZVR5cGU6ZC5iaW5kVHlwZSl8fGZdfHxbXSxzPXNbMl0mJm5ldyBSZWdFeHAoIihefFxcLikiK3Auam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIiksYT1vPWgubGVuZ3RoO28tLTspdT1oW29dLCFyJiZnIT09dS5vcmlnVHlwZXx8biYmbi5ndWlkIT09dS5ndWlkfHxzJiYhcy50ZXN0KHUubmFtZXNwYWNlKXx8aSYmaSE9PXUuc2VsZWN0b3ImJigiKioiIT09aXx8IXUuc2VsZWN0b3IpfHwoaC5zcGxpY2UobywxKSx1LnNlbGVjdG9yJiZoLmRlbGVnYXRlQ291bnQtLSxkLnJlbW92ZSYmZC5yZW1vdmUuY2FsbCh0LHUpKTthJiYhaC5sZW5ndGgmJihkLnRlYXJkb3duJiYhMSE9PWQudGVhcmRvd24uY2FsbCh0LHAsbS5oYW5kbGUpfHx4LnJlbW92ZUV2ZW50KHQsZixtLmhhbmRsZSksZGVsZXRlIGxbZl0pfWVsc2UgZm9yKGYgaW4gbCl4LmV2ZW50LnJlbW92ZSh0LGYrZVtjXSxuLGksITApO3guaXNFbXB0eU9iamVjdChsKSYmWC5yZW1vdmUodCwiaGFuZGxlIGV2ZW50cyIpfX0sZGlzcGF0Y2g6ZnVuY3Rpb24odCl7dmFyIGUsbixpLHIsbyxhLHM9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpLGw9eC5ldmVudC5maXgodCksYz0oWC5nZXQodGhpcywiZXZlbnRzIil8fE9iamVjdC5jcmVhdGUobnVsbCkpW2wudHlwZV18fFtdLHU9eC5ldmVudC5zcGVjaWFsW2wudHlwZV18fHt9O2ZvcihzWzBdPWwsZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspc1tlXT1hcmd1bWVudHNbZV07aWYobC5kZWxlZ2F0ZVRhcmdldD10aGlzLCF1LnByZURpc3BhdGNofHwhMSE9PXUucHJlRGlzcGF0Y2guY2FsbCh0aGlzLGwpKXtmb3IoYT14LmV2ZW50LmhhbmRsZXJzLmNhbGwodGhpcyxsLGMpLGU9MDsocj1hW2UrK10pJiYhbC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpOylmb3IobC5jdXJyZW50VGFyZ2V0PXIuZWxlbSxuPTA7KG89ci5oYW5kbGVyc1tuKytdKSYmIWwuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKTspbC5ybmFtZXNwYWNlJiYhMSE9PW8ubmFtZXNwYWNlJiYhbC5ybmFtZXNwYWNlLnRlc3Qoby5uYW1lc3BhY2UpfHwobC5oYW5kbGVPYmo9byxsLmRhdGE9by5kYXRhLHZvaWQgMCE9PShpPSgoeC5ldmVudC5zcGVjaWFsW28ub3JpZ1R5cGVdfHx7fSkuaGFuZGxlfHxvLmhhbmRsZXIpLmFwcGx5KHIuZWxlbSxzKSkmJiExPT09KGwucmVzdWx0PWkpJiYobC5wcmV2ZW50RGVmYXVsdCgpLGwuc3RvcFByb3BhZ2F0aW9uKCkpKTtyZXR1cm4gdS5wb3N0RGlzcGF0Y2gmJnUucG9zdERpc3BhdGNoLmNhbGwodGhpcyxsKSxsLnJlc3VsdH19LGhhbmRsZXJzOmZ1bmN0aW9uKHQsZSl7dmFyIG4saSxyLG8sYSxzPVtdLGw9ZS5kZWxlZ2F0ZUNvdW50LGM9dC50YXJnZXQ7aWYobCYmYy5ub2RlVHlwZSYmISgiY2xpY2siPT09dC50eXBlJiYxPD10LmJ1dHRvbikpZm9yKDtjIT09dGhpcztjPWMucGFyZW50Tm9kZXx8dGhpcylpZigxPT09Yy5ub2RlVHlwZSYmKCJjbGljayIhPT10LnR5cGV8fCEwIT09Yy5kaXNhYmxlZCkpe2ZvcihvPVtdLGE9e30sbj0wO248bDtuKyspdm9pZCAwPT09YVtyPShpPWVbbl0pLnNlbGVjdG9yKyIgIl0mJihhW3JdPWkubmVlZHNDb250ZXh0Py0xPHgocix0aGlzKS5pbmRleChjKTp4LmZpbmQocix0aGlzLG51bGwsW2NdKS5sZW5ndGgpLGFbcl0mJm8ucHVzaChpKTtvLmxlbmd0aCYmcy5wdXNoKHtlbGVtOmMsaGFuZGxlcnM6b30pfXJldHVybiBjPXRoaXMsbDxlLmxlbmd0aCYmcy5wdXNoKHtlbGVtOmMsaGFuZGxlcnM6ZS5zbGljZShsKX0pLHN9LGFkZFByb3A6ZnVuY3Rpb24odCxlKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoeC5FdmVudC5wcm90b3R5cGUsdCx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OnAoZSk/ZnVuY3Rpb24oKXtpZih0aGlzLm9yaWdpbmFsRXZlbnQpcmV0dXJuIGUodGhpcy5vcmlnaW5hbEV2ZW50KX06ZnVuY3Rpb24oKXtpZih0aGlzLm9yaWdpbmFsRXZlbnQpcmV0dXJuIHRoaXMub3JpZ2luYWxFdmVudFt0XX0sc2V0OmZ1bmN0aW9uKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLHQse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmV9KX19KX0sZml4OmZ1bmN0aW9uKHQpe3JldHVybiB0W3guZXhwYW5kb10/dDpuZXcgeC5FdmVudCh0KX0sc3BlY2lhbDp7bG9hZDp7bm9CdWJibGU6ITB9LGNsaWNrOntzZXR1cDpmdW5jdGlvbih0KXt2YXIgZT10aGlzfHx0O3JldHVybiBodC50ZXN0KGUudHlwZSkmJmUuY2xpY2smJkEoZSwiaW5wdXQiKSYmQXQoZSwiY2xpY2siLFN0KSwhMX0sdHJpZ2dlcjpmdW5jdGlvbih0KXt2YXIgZT10aGlzfHx0O3JldHVybiBodC50ZXN0KGUudHlwZSkmJmUuY2xpY2smJkEoZSwiaW5wdXQiKSYmQXQoZSwiY2xpY2siKSwhMH0sX2RlZmF1bHQ6ZnVuY3Rpb24odCl7dmFyIGU9dC50YXJnZXQ7cmV0dXJuIGh0LnRlc3QoZS50eXBlKSYmZS5jbGljayYmQShlLCJpbnB1dCIpJiZYLmdldChlLCJjbGljayIpfHxBKGUsImEiKX19LGJlZm9yZXVubG9hZDp7cG9zdERpc3BhdGNoOmZ1bmN0aW9uKHQpe3ZvaWQgMCE9PXQucmVzdWx0JiZ0Lm9yaWdpbmFsRXZlbnQmJih0Lm9yaWdpbmFsRXZlbnQucmV0dXJuVmFsdWU9dC5yZXN1bHQpfX19fSx4LnJlbW92ZUV2ZW50PWZ1bmN0aW9uKHQsZSxuKXt0LnJlbW92ZUV2ZW50TGlzdGVuZXImJnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLG4pfSx4LkV2ZW50PWZ1bmN0aW9uKHQsZSl7aWYoISh0aGlzIGluc3RhbmNlb2YgeC5FdmVudCkpcmV0dXJuIG5ldyB4LkV2ZW50KHQsZSk7dCYmdC50eXBlPyh0aGlzLm9yaWdpbmFsRXZlbnQ9dCx0aGlzLnR5cGU9dC50eXBlLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPXQuZGVmYXVsdFByZXZlbnRlZHx8dm9pZCAwPT09dC5kZWZhdWx0UHJldmVudGVkJiYhMT09PXQucmV0dXJuVmFsdWU/U3Q6Q3QsdGhpcy50YXJnZXQ9dC50YXJnZXQmJjM9PT10LnRhcmdldC5ub2RlVHlwZT90LnRhcmdldC5wYXJlbnROb2RlOnQudGFyZ2V0LHRoaXMuY3VycmVudFRhcmdldD10LmN1cnJlbnRUYXJnZXQsdGhpcy5yZWxhdGVkVGFyZ2V0PXQucmVsYXRlZFRhcmdldCk6dGhpcy50eXBlPXQsZSYmeC5leHRlbmQodGhpcyxlKSx0aGlzLnRpbWVTdGFtcD10JiZ0LnRpbWVTdGFtcHx8RGF0ZS5ub3coKSx0aGlzW3guZXhwYW5kb109ITB9LHguRXZlbnQucHJvdG90eXBlPXtjb25zdHJ1Y3Rvcjp4LkV2ZW50LGlzRGVmYXVsdFByZXZlbnRlZDpDdCxpc1Byb3BhZ2F0aW9uU3RvcHBlZDpDdCxpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDpDdCxpc1NpbXVsYXRlZDohMSxwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1TdCx0JiYhdGhpcy5pc1NpbXVsYXRlZCYmdC5wcmV2ZW50RGVmYXVsdCgpfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1TdCx0JiYhdGhpcy5pc1NpbXVsYXRlZCYmdC5zdG9wUHJvcGFnYXRpb24oKX0sc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9U3QsdCYmIXRoaXMuaXNTaW11bGF0ZWQmJnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksdGhpcy5zdG9wUHJvcGFnYXRpb24oKX19LHguZWFjaCh7YWx0S2V5OiEwLGJ1YmJsZXM6ITAsY2FuY2VsYWJsZTohMCxjaGFuZ2VkVG91Y2hlczohMCxjdHJsS2V5OiEwLGRldGFpbDohMCxldmVudFBoYXNlOiEwLG1ldGFLZXk6ITAscGFnZVg6ITAscGFnZVk6ITAsc2hpZnRLZXk6ITAsdmlldzohMCxjaGFyOiEwLGNvZGU6ITAsY2hhckNvZGU6ITAsa2V5OiEwLGtleUNvZGU6ITAsYnV0dG9uOiEwLGJ1dHRvbnM6ITAsY2xpZW50WDohMCxjbGllbnRZOiEwLG9mZnNldFg6ITAsb2Zmc2V0WTohMCxwb2ludGVySWQ6ITAscG9pbnRlclR5cGU6ITAsc2NyZWVuWDohMCxzY3JlZW5ZOiEwLHRhcmdldFRvdWNoZXM6ITAsdG9FbGVtZW50OiEwLHRvdWNoZXM6ITAsd2hpY2g6ZnVuY3Rpb24odCl7dmFyIGU9dC5idXR0b247cmV0dXJuIG51bGw9PXQud2hpY2gmJnd0LnRlc3QodC50eXBlKT9udWxsIT10LmNoYXJDb2RlP3QuY2hhckNvZGU6dC5rZXlDb2RlOiF0LndoaWNoJiZ2b2lkIDAhPT1lJiZ4dC50ZXN0KHQudHlwZSk/MSZlPzE6MiZlPzM6NCZlPzI6MDp0LndoaWNofX0seC5ldmVudC5hZGRQcm9wKSx4LmVhY2goe2ZvY3VzOiJmb2N1c2luIixibHVyOiJmb2N1c291dCJ9LChmdW5jdGlvbih0LGUpe3guZXZlbnQuc3BlY2lhbFt0XT17c2V0dXA6ZnVuY3Rpb24oKXtyZXR1cm4gQXQodGhpcyx0LGt0KSwhMX0sdHJpZ2dlcjpmdW5jdGlvbigpe3JldHVybiBBdCh0aGlzLHQpLCEwfSxkZWxlZ2F0ZVR5cGU6ZX19KSkseC5lYWNoKHttb3VzZWVudGVyOiJtb3VzZW92ZXIiLG1vdXNlbGVhdmU6Im1vdXNlb3V0Iixwb2ludGVyZW50ZXI6InBvaW50ZXJvdmVyIixwb2ludGVybGVhdmU6InBvaW50ZXJvdXQifSwoZnVuY3Rpb24odCxlKXt4LmV2ZW50LnNwZWNpYWxbdF09e2RlbGVnYXRlVHlwZTplLGJpbmRUeXBlOmUsaGFuZGxlOmZ1bmN0aW9uKHQpe3ZhciBuLGk9dC5yZWxhdGVkVGFyZ2V0LHI9dC5oYW5kbGVPYmo7cmV0dXJuIGkmJihpPT09dGhpc3x8eC5jb250YWlucyh0aGlzLGkpKXx8KHQudHlwZT1yLm9yaWdUeXBlLG49ci5oYW5kbGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0LnR5cGU9ZSksbn19fSkpLHguZm4uZXh0ZW5kKHtvbjpmdW5jdGlvbih0LGUsbixpKXtyZXR1cm4gVHQodGhpcyx0LGUsbixpKX0sb25lOmZ1bmN0aW9uKHQsZSxuLGkpe3JldHVybiBUdCh0aGlzLHQsZSxuLGksMSl9LG9mZjpmdW5jdGlvbih0LGUsbil7dmFyIGkscjtpZih0JiZ0LnByZXZlbnREZWZhdWx0JiZ0LmhhbmRsZU9iailyZXR1cm4gaT10LmhhbmRsZU9iaix4KHQuZGVsZWdhdGVUYXJnZXQpLm9mZihpLm5hbWVzcGFjZT9pLm9yaWdUeXBlKyIuIitpLm5hbWVzcGFjZTppLm9yaWdUeXBlLGkuc2VsZWN0b3IsaS5oYW5kbGVyKSx0aGlzO2lmKCJvYmplY3QiPT10eXBlb2YgdCl7Zm9yKHIgaW4gdCl0aGlzLm9mZihyLGUsdFtyXSk7cmV0dXJuIHRoaXN9cmV0dXJuITEhPT1lJiYiZnVuY3Rpb24iIT10eXBlb2YgZXx8KG49ZSxlPXZvaWQgMCksITE9PT1uJiYobj1DdCksdGhpcy5lYWNoKChmdW5jdGlvbigpe3guZXZlbnQucmVtb3ZlKHRoaXMsdCxuLGUpfSkpfX0pO3ZhciBEdD0vPHNjcmlwdHw8c3R5bGV8PGxpbmsvaSxFdD0vY2hlY2tlZFxzKig/OltePV18PVxzKi5jaGVja2VkLikvaSxNdD0vXlxzKjwhKD86XFtDREFUQVxbfC0tKXwoPzpcXVxdfC0tKT5ccyokL2c7ZnVuY3Rpb24gT3QodCxlKXtyZXR1cm4gQSh0LCJ0YWJsZSIpJiZBKDExIT09ZS5ub2RlVHlwZT9lOmUuZmlyc3RDaGlsZCwidHIiKSYmeCh0KS5jaGlsZHJlbigidGJvZHkiKVswXXx8dH1mdW5jdGlvbiBJdCh0KXtyZXR1cm4gdC50eXBlPShudWxsIT09dC5nZXRBdHRyaWJ1dGUoInR5cGUiKSkrIi8iK3QudHlwZSx0fWZ1bmN0aW9uIFB0KHQpe3JldHVybiJ0cnVlLyI9PT0odC50eXBlfHwiIikuc2xpY2UoMCw1KT90LnR5cGU9dC50eXBlLnNsaWNlKDUpOnQucmVtb3ZlQXR0cmlidXRlKCJ0eXBlIiksdH1mdW5jdGlvbiBMdCh0LGUpe3ZhciBuLGkscixvLGEscztpZigxPT09ZS5ub2RlVHlwZSl7aWYoWC5oYXNEYXRhKHQpJiYocz1YLmdldCh0KS5ldmVudHMpKWZvcihyIGluIFgucmVtb3ZlKGUsImhhbmRsZSBldmVudHMiKSxzKWZvcihuPTAsaT1zW3JdLmxlbmd0aDtuPGk7bisrKXguZXZlbnQuYWRkKGUscixzW3JdW25dKTtRLmhhc0RhdGEodCkmJihvPVEuYWNjZXNzKHQpLGE9eC5leHRlbmQoe30sbyksUS5zZXQoZSxhKSl9fWZ1bmN0aW9uIE50KHQsZSxuLGkpe2U9byhlKTt2YXIgcixhLHMsbCxjLHUsZD0wLGg9dC5sZW5ndGgsZz1oLTEsbT1lWzBdLHY9cChtKTtpZih2fHwxPGgmJiJzdHJpbmciPT10eXBlb2YgbSYmIWYuY2hlY2tDbG9uZSYmRXQudGVzdChtKSlyZXR1cm4gdC5lYWNoKChmdW5jdGlvbihyKXt2YXIgbz10LmVxKHIpO3YmJihlWzBdPW0uY2FsbCh0aGlzLHIsby5odG1sKCkpKSxOdChvLGUsbixpKX0pKTtpZihoJiYoYT0ocj1idChlLHRbMF0ub3duZXJEb2N1bWVudCwhMSx0LGkpKS5maXJzdENoaWxkLDE9PT1yLmNoaWxkTm9kZXMubGVuZ3RoJiYocj1hKSxhfHxpKSl7Zm9yKGw9KHM9eC5tYXAobXQociwic2NyaXB0IiksSXQpKS5sZW5ndGg7ZDxoO2QrKyljPXIsZCE9PWcmJihjPXguY2xvbmUoYywhMCwhMCksbCYmeC5tZXJnZShzLG10KGMsInNjcmlwdCIpKSksbi5jYWxsKHRbZF0sYyxkKTtpZihsKWZvcih1PXNbcy5sZW5ndGgtMV0ub3duZXJEb2N1bWVudCx4Lm1hcChzLFB0KSxkPTA7ZDxsO2QrKyljPXNbZF0scHQudGVzdChjLnR5cGV8fCIiKSYmIVguYWNjZXNzKGMsImdsb2JhbEV2YWwiKSYmeC5jb250YWlucyh1LGMpJiYoYy5zcmMmJiJtb2R1bGUiIT09KGMudHlwZXx8IiIpLnRvTG93ZXJDYXNlKCk/eC5fZXZhbFVybCYmIWMubm9Nb2R1bGUmJnguX2V2YWxVcmwoYy5zcmMse25vbmNlOmMubm9uY2V8fGMuZ2V0QXR0cmlidXRlKCJub25jZSIpfSx1KTp5KGMudGV4dENvbnRlbnQucmVwbGFjZShNdCwiIiksYyx1KSl9cmV0dXJuIHR9ZnVuY3Rpb24gRnQodCxlLG4pe2Zvcih2YXIgaSxyPWU/eC5maWx0ZXIoZSx0KTp0LG89MDtudWxsIT0oaT1yW29dKTtvKyspbnx8MSE9PWkubm9kZVR5cGV8fHguY2xlYW5EYXRhKG10KGkpKSxpLnBhcmVudE5vZGUmJihuJiZydChpKSYmdnQobXQoaSwic2NyaXB0IikpLGkucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChpKSk7cmV0dXJuIHR9eC5leHRlbmQoe2h0bWxQcmVmaWx0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHR9LGNsb25lOmZ1bmN0aW9uKHQsZSxuKXt2YXIgaSxyLG8sYSxzLGwsYyx1PXQuY2xvbmVOb2RlKCEwKSxkPXJ0KHQpO2lmKCEoZi5ub0Nsb25lQ2hlY2tlZHx8MSE9PXQubm9kZVR5cGUmJjExIT09dC5ub2RlVHlwZXx8eC5pc1hNTERvYyh0KSkpZm9yKGE9bXQodSksaT0wLHI9KG89bXQodCkpLmxlbmd0aDtpPHI7aSsrKXM9b1tpXSwiaW5wdXQiPT09KGM9KGw9YVtpXSkubm9kZU5hbWUudG9Mb3dlckNhc2UoKSkmJmh0LnRlc3Qocy50eXBlKT9sLmNoZWNrZWQ9cy5jaGVja2VkOiJpbnB1dCIhPT1jJiYidGV4dGFyZWEiIT09Y3x8KGwuZGVmYXVsdFZhbHVlPXMuZGVmYXVsdFZhbHVlKTtpZihlKWlmKG4pZm9yKG89b3x8bXQodCksYT1hfHxtdCh1KSxpPTAscj1vLmxlbmd0aDtpPHI7aSsrKUx0KG9baV0sYVtpXSk7ZWxzZSBMdCh0LHUpO3JldHVybiAwPChhPW10KHUsInNjcmlwdCIpKS5sZW5ndGgmJnZ0KGEsIWQmJm10KHQsInNjcmlwdCIpKSx1fSxjbGVhbkRhdGE6ZnVuY3Rpb24odCl7Zm9yKHZhciBlLG4saSxyPXguZXZlbnQuc3BlY2lhbCxvPTA7dm9pZCAwIT09KG49dFtvXSk7bysrKWlmKFkobikpe2lmKGU9bltYLmV4cGFuZG9dKXtpZihlLmV2ZW50cylmb3IoaSBpbiBlLmV2ZW50cylyW2ldP3guZXZlbnQucmVtb3ZlKG4saSk6eC5yZW1vdmVFdmVudChuLGksZS5oYW5kbGUpO25bWC5leHBhbmRvXT12b2lkIDB9bltRLmV4cGFuZG9dJiYobltRLmV4cGFuZG9dPXZvaWQgMCl9fX0pLHguZm4uZXh0ZW5kKHtkZXRhY2g6ZnVuY3Rpb24odCl7cmV0dXJuIEZ0KHRoaXMsdCwhMCl9LHJlbW92ZTpmdW5jdGlvbih0KXtyZXR1cm4gRnQodGhpcyx0KX0sdGV4dDpmdW5jdGlvbih0KXtyZXR1cm4gQih0aGlzLChmdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dD94LnRleHQodGhpcyk6dGhpcy5lbXB0eSgpLmVhY2goKGZ1bmN0aW9uKCl7MSE9PXRoaXMubm9kZVR5cGUmJjExIT09dGhpcy5ub2RlVHlwZSYmOSE9PXRoaXMubm9kZVR5cGV8fCh0aGlzLnRleHRDb250ZW50PXQpfSkpfSksbnVsbCx0LGFyZ3VtZW50cy5sZW5ndGgpfSxhcHBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gTnQodGhpcyxhcmd1bWVudHMsKGZ1bmN0aW9uKHQpezEhPT10aGlzLm5vZGVUeXBlJiYxMSE9PXRoaXMubm9kZVR5cGUmJjkhPT10aGlzLm5vZGVUeXBlfHxPdCh0aGlzLHQpLmFwcGVuZENoaWxkKHQpfSkpfSxwcmVwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIE50KHRoaXMsYXJndW1lbnRzLChmdW5jdGlvbih0KXtpZigxPT09dGhpcy5ub2RlVHlwZXx8MTE9PT10aGlzLm5vZGVUeXBlfHw5PT09dGhpcy5ub2RlVHlwZSl7dmFyIGU9T3QodGhpcyx0KTtlLmluc2VydEJlZm9yZSh0LGUuZmlyc3RDaGlsZCl9fSkpfSxiZWZvcmU6ZnVuY3Rpb24oKXtyZXR1cm4gTnQodGhpcyxhcmd1bWVudHMsKGZ1bmN0aW9uKHQpe3RoaXMucGFyZW50Tm9kZSYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0LHRoaXMpfSkpfSxhZnRlcjpmdW5jdGlvbigpe3JldHVybiBOdCh0aGlzLGFyZ3VtZW50cywoZnVuY3Rpb24odCl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHQsdGhpcy5uZXh0U2libGluZyl9KSl9LGVtcHR5OmZ1bmN0aW9uKCl7Zm9yKHZhciB0LGU9MDtudWxsIT0odD10aGlzW2VdKTtlKyspMT09PXQubm9kZVR5cGUmJih4LmNsZWFuRGF0YShtdCh0LCExKSksdC50ZXh0Q29udGVudD0iIik7cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9bnVsbCE9dCYmdCxlPW51bGw9PWU/dDplLHRoaXMubWFwKChmdW5jdGlvbigpe3JldHVybiB4LmNsb25lKHRoaXMsdCxlKX0pKX0saHRtbDpmdW5jdGlvbih0KXtyZXR1cm4gQih0aGlzLChmdW5jdGlvbih0KXt2YXIgZT10aGlzWzBdfHx7fSxuPTAsaT10aGlzLmxlbmd0aDtpZih2b2lkIDA9PT10JiYxPT09ZS5ub2RlVHlwZSlyZXR1cm4gZS5pbm5lckhUTUw7aWYoInN0cmluZyI9PXR5cGVvZiB0JiYhRHQudGVzdCh0KSYmIWd0WyhmdC5leGVjKHQpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpXSl7dD14Lmh0bWxQcmVmaWx0ZXIodCk7dHJ5e2Zvcig7bjxpO24rKykxPT09KGU9dGhpc1tuXXx8e30pLm5vZGVUeXBlJiYoeC5jbGVhbkRhdGEobXQoZSwhMSkpLGUuaW5uZXJIVE1MPXQpO2U9MH1jYXRjaCh0KXt9fWUmJnRoaXMuZW1wdHkoKS5hcHBlbmQodCl9KSxudWxsLHQsYXJndW1lbnRzLmxlbmd0aCl9LHJlcGxhY2VXaXRoOmZ1bmN0aW9uKCl7dmFyIHQ9W107cmV0dXJuIE50KHRoaXMsYXJndW1lbnRzLChmdW5jdGlvbihlKXt2YXIgbj10aGlzLnBhcmVudE5vZGU7eC5pbkFycmF5KHRoaXMsdCk8MCYmKHguY2xlYW5EYXRhKG10KHRoaXMpKSxuJiZuLnJlcGxhY2VDaGlsZChlLHRoaXMpKX0pLHQpfX0pLHguZWFjaCh7YXBwZW5kVG86ImFwcGVuZCIscHJlcGVuZFRvOiJwcmVwZW5kIixpbnNlcnRCZWZvcmU6ImJlZm9yZSIsaW5zZXJ0QWZ0ZXI6ImFmdGVyIixyZXBsYWNlQWxsOiJyZXBsYWNlV2l0aCJ9LChmdW5jdGlvbih0LGUpe3guZm5bdF09ZnVuY3Rpb24odCl7Zm9yKHZhciBuLGk9W10scj14KHQpLG89ci5sZW5ndGgtMSxzPTA7czw9bztzKyspbj1zPT09bz90aGlzOnRoaXMuY2xvbmUoITApLHgocltzXSlbZV0obiksYS5hcHBseShpLG4uZ2V0KCkpO3JldHVybiB0aGlzLnB1c2hTdGFjayhpKX19KSk7dmFyIFJ0PW5ldyBSZWdFeHAoIl4oIit0dCsiKSg/IXB4KVthLXolXSskIiwiaSIpLGp0PWZ1bmN0aW9uKGUpe3ZhciBuPWUub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldztyZXR1cm4gbiYmbi5vcGVuZXJ8fChuPXQpLG4uZ2V0Q29tcHV0ZWRTdHlsZShlKX0sJHQ9ZnVuY3Rpb24odCxlLG4pe3ZhciBpLHIsbz17fTtmb3IociBpbiBlKW9bcl09dC5zdHlsZVtyXSx0LnN0eWxlW3JdPWVbcl07Zm9yKHIgaW4gaT1uLmNhbGwodCksZSl0LnN0eWxlW3JdPW9bcl07cmV0dXJuIGl9LHp0PW5ldyBSZWdFeHAobnQuam9pbigifCIpLCJpIik7ZnVuY3Rpb24gSHQodCxlLG4pe3ZhciBpLHIsbyxhLHM9dC5zdHlsZTtyZXR1cm4obj1ufHxqdCh0KSkmJigiIiE9PShhPW4uZ2V0UHJvcGVydHlWYWx1ZShlKXx8bltlXSl8fHJ0KHQpfHwoYT14LnN0eWxlKHQsZSkpLCFmLnBpeGVsQm94U3R5bGVzKCkmJlJ0LnRlc3QoYSkmJnp0LnRlc3QoZSkmJihpPXMud2lkdGgscj1zLm1pbldpZHRoLG89cy5tYXhXaWR0aCxzLm1pbldpZHRoPXMubWF4V2lkdGg9cy53aWR0aD1hLGE9bi53aWR0aCxzLndpZHRoPWkscy5taW5XaWR0aD1yLHMubWF4V2lkdGg9bykpLHZvaWQgMCE9PWE/YSsiIjphfWZ1bmN0aW9uIEJ0KHQsZSl7cmV0dXJue2dldDpmdW5jdGlvbigpe2lmKCF0KCkpcmV0dXJuKHRoaXMuZ2V0PWUpLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtkZWxldGUgdGhpcy5nZXR9fX0hZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7aWYodSl7Yy5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0xMTExMXB4O3dpZHRoOjYwcHg7bWFyZ2luLXRvcDoxcHg7cGFkZGluZzowO2JvcmRlcjowIix1LnN0eWxlLmNzc1RleHQ9InBvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7Ym94LXNpemluZzpib3JkZXItYm94O292ZXJmbG93OnNjcm9sbDttYXJnaW46YXV0bztib3JkZXI6MXB4O3BhZGRpbmc6MXB4O3dpZHRoOjYwJTt0b3A6MSUiLGl0LmFwcGVuZENoaWxkKGMpLmFwcGVuZENoaWxkKHUpO3ZhciBlPXQuZ2V0Q29tcHV0ZWRTdHlsZSh1KTtpPSIxJSIhPT1lLnRvcCxsPTEyPT09bihlLm1hcmdpbkxlZnQpLHUuc3R5bGUucmlnaHQ9IjYwJSIsYT0zNj09PW4oZS5yaWdodCkscj0zNj09PW4oZS53aWR0aCksdS5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLG89MTI9PT1uKHUub2Zmc2V0V2lkdGgvMyksaXQucmVtb3ZlQ2hpbGQoYyksdT1udWxsfX1mdW5jdGlvbiBuKHQpe3JldHVybiBNYXRoLnJvdW5kKHBhcnNlRmxvYXQodCkpfXZhciBpLHIsbyxhLHMsbCxjPW0uY3JlYXRlRWxlbWVudCgiZGl2IiksdT1tLmNyZWF0ZUVsZW1lbnQoImRpdiIpO3Uuc3R5bGUmJih1LnN0eWxlLmJhY2tncm91bmRDbGlwPSJjb250ZW50LWJveCIsdS5jbG9uZU5vZGUoITApLnN0eWxlLmJhY2tncm91bmRDbGlwPSIiLGYuY2xlYXJDbG9uZVN0eWxlPSJjb250ZW50LWJveCI9PT11LnN0eWxlLmJhY2tncm91bmRDbGlwLHguZXh0ZW5kKGYse2JveFNpemluZ1JlbGlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGUoKSxyfSxwaXhlbEJveFN0eWxlczpmdW5jdGlvbigpe3JldHVybiBlKCksYX0scGl4ZWxQb3NpdGlvbjpmdW5jdGlvbigpe3JldHVybiBlKCksaX0scmVsaWFibGVNYXJnaW5MZWZ0OmZ1bmN0aW9uKCl7cmV0dXJuIGUoKSxsfSxzY3JvbGxib3hTaXplOmZ1bmN0aW9uKCl7cmV0dXJuIGUoKSxvfSxyZWxpYWJsZVRyRGltZW5zaW9uczpmdW5jdGlvbigpe3ZhciBlLG4saSxyO3JldHVybiBudWxsPT1zJiYoZT1tLmNyZWF0ZUVsZW1lbnQoInRhYmxlIiksbj1tLmNyZWF0ZUVsZW1lbnQoInRyIiksaT1tLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGUuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7bGVmdDotMTExMTFweCIsbi5zdHlsZS5oZWlnaHQ9IjFweCIsaS5zdHlsZS5oZWlnaHQ9IjlweCIsaXQuYXBwZW5kQ2hpbGQoZSkuYXBwZW5kQ2hpbGQobikuYXBwZW5kQ2hpbGQoaSkscj10LmdldENvbXB1dGVkU3R5bGUobikscz0zPHBhcnNlSW50KHIuaGVpZ2h0KSxpdC5yZW1vdmVDaGlsZChlKSksc319KSl9KCk7dmFyIHF0PVsiV2Via2l0IiwiTW96IiwibXMiXSxXdD1tLmNyZWF0ZUVsZW1lbnQoImRpdiIpLnN0eWxlLFV0PXt9O2Z1bmN0aW9uIFZ0KHQpe3JldHVybiB4LmNzc1Byb3BzW3RdfHxVdFt0XXx8KHQgaW4gV3Q/dDpVdFt0XT1mdW5jdGlvbih0KXtmb3IodmFyIGU9dFswXS50b1VwcGVyQ2FzZSgpK3Quc2xpY2UoMSksbj1xdC5sZW5ndGg7bi0tOylpZigodD1xdFtuXStlKWluIFd0KXJldHVybiB0fSh0KXx8dCl9dmFyIFl0PS9eKG5vbmV8dGFibGUoPyEtY1tlYV0pLispLyxHdD0vXi0tLyxYdD17cG9zaXRpb246ImFic29sdXRlIix2aXNpYmlsaXR5OiJoaWRkZW4iLGRpc3BsYXk6ImJsb2NrIn0sUXQ9e2xldHRlclNwYWNpbmc6IjAiLGZvbnRXZWlnaHQ6IjQwMCJ9O2Z1bmN0aW9uIEt0KHQsZSxuKXt2YXIgaT1ldC5leGVjKGUpO3JldHVybiBpP01hdGgubWF4KDAsaVsyXS0obnx8MCkpKyhpWzNdfHwicHgiKTplfWZ1bmN0aW9uIEp0KHQsZSxuLGkscixvKXt2YXIgYT0id2lkdGgiPT09ZT8xOjAscz0wLGw9MDtpZihuPT09KGk/ImJvcmRlciI6ImNvbnRlbnQiKSlyZXR1cm4gMDtmb3IoO2E8NDthKz0yKSJtYXJnaW4iPT09biYmKGwrPXguY3NzKHQsbitudFthXSwhMCxyKSksaT8oImNvbnRlbnQiPT09biYmKGwtPXguY3NzKHQsInBhZGRpbmciK250W2FdLCEwLHIpKSwibWFyZ2luIiE9PW4mJihsLT14LmNzcyh0LCJib3JkZXIiK250W2FdKyJXaWR0aCIsITAscikpKToobCs9eC5jc3ModCwicGFkZGluZyIrbnRbYV0sITAsciksInBhZGRpbmciIT09bj9sKz14LmNzcyh0LCJib3JkZXIiK250W2FdKyJXaWR0aCIsITAscik6cys9eC5jc3ModCwiYm9yZGVyIitudFthXSsiV2lkdGgiLCEwLHIpKTtyZXR1cm4haSYmMDw9byYmKGwrPU1hdGgubWF4KDAsTWF0aC5jZWlsKHRbIm9mZnNldCIrZVswXS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSldLW8tbC1zLS41KSl8fDApLGx9ZnVuY3Rpb24gWnQodCxlLG4pe3ZhciBpPWp0KHQpLHI9KCFmLmJveFNpemluZ1JlbGlhYmxlKCl8fG4pJiYiYm9yZGVyLWJveCI9PT14LmNzcyh0LCJib3hTaXppbmciLCExLGkpLG89cixhPUh0KHQsZSxpKSxzPSJvZmZzZXQiK2VbMF0udG9VcHBlckNhc2UoKStlLnNsaWNlKDEpO2lmKFJ0LnRlc3QoYSkpe2lmKCFuKXJldHVybiBhO2E9ImF1dG8ifXJldHVybighZi5ib3hTaXppbmdSZWxpYWJsZSgpJiZyfHwhZi5yZWxpYWJsZVRyRGltZW5zaW9ucygpJiZBKHQsInRyIil8fCJhdXRvIj09PWF8fCFwYXJzZUZsb2F0KGEpJiYiaW5saW5lIj09PXguY3NzKHQsImRpc3BsYXkiLCExLGkpKSYmdC5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCYmKHI9ImJvcmRlci1ib3giPT09eC5jc3ModCwiYm94U2l6aW5nIiwhMSxpKSwobz1zIGluIHQpJiYoYT10W3NdKSksKGE9cGFyc2VGbG9hdChhKXx8MCkrSnQodCxlLG58fChyPyJib3JkZXIiOiJjb250ZW50IiksbyxpLGEpKyJweCJ9ZnVuY3Rpb24gdGUodCxlLG4saSxyKXtyZXR1cm4gbmV3IHRlLnByb3RvdHlwZS5pbml0KHQsZSxuLGkscil9eC5leHRlbmQoe2Nzc0hvb2tzOntvcGFjaXR5OntnZXQ6ZnVuY3Rpb24odCxlKXtpZihlKXt2YXIgbj1IdCh0LCJvcGFjaXR5Iik7cmV0dXJuIiI9PT1uPyIxIjpufX19fSxjc3NOdW1iZXI6e2FuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiEwLGNvbHVtbkNvdW50OiEwLGZpbGxPcGFjaXR5OiEwLGZsZXhHcm93OiEwLGZsZXhTaHJpbms6ITAsZm9udFdlaWdodDohMCxncmlkQXJlYTohMCxncmlkQ29sdW1uOiEwLGdyaWRDb2x1bW5FbmQ6ITAsZ3JpZENvbHVtblN0YXJ0OiEwLGdyaWRSb3c6ITAsZ3JpZFJvd0VuZDohMCxncmlkUm93U3RhcnQ6ITAsbGluZUhlaWdodDohMCxvcGFjaXR5OiEwLG9yZGVyOiEwLG9ycGhhbnM6ITAsd2lkb3dzOiEwLHpJbmRleDohMCx6b29tOiEwfSxjc3NQcm9wczp7fSxzdHlsZTpmdW5jdGlvbih0LGUsbixpKXtpZih0JiYzIT09dC5ub2RlVHlwZSYmOCE9PXQubm9kZVR5cGUmJnQuc3R5bGUpe3ZhciByLG8sYSxzPVYoZSksbD1HdC50ZXN0KGUpLGM9dC5zdHlsZTtpZihsfHwoZT1WdChzKSksYT14LmNzc0hvb2tzW2VdfHx4LmNzc0hvb2tzW3NdLHZvaWQgMD09PW4pcmV0dXJuIGEmJiJnZXQiaW4gYSYmdm9pZCAwIT09KHI9YS5nZXQodCwhMSxpKSk/cjpjW2VdOyJzdHJpbmciPT0obz10eXBlb2YgbikmJihyPWV0LmV4ZWMobikpJiZyWzFdJiYobj1zdCh0LGUsciksbz0ibnVtYmVyIiksbnVsbCE9biYmbj09biYmKCJudW1iZXIiIT09b3x8bHx8KG4rPXImJnJbM118fCh4LmNzc051bWJlcltzXT8iIjoicHgiKSksZi5jbGVhckNsb25lU3R5bGV8fCIiIT09bnx8MCE9PWUuaW5kZXhPZigiYmFja2dyb3VuZCIpfHwoY1tlXT0iaW5oZXJpdCIpLGEmJiJzZXQiaW4gYSYmdm9pZCAwPT09KG49YS5zZXQodCxuLGkpKXx8KGw/Yy5zZXRQcm9wZXJ0eShlLG4pOmNbZV09bikpfX0sY3NzOmZ1bmN0aW9uKHQsZSxuLGkpe3ZhciByLG8sYSxzPVYoZSk7cmV0dXJuIEd0LnRlc3QoZSl8fChlPVZ0KHMpKSwoYT14LmNzc0hvb2tzW2VdfHx4LmNzc0hvb2tzW3NdKSYmImdldCJpbiBhJiYocj1hLmdldCh0LCEwLG4pKSx2b2lkIDA9PT1yJiYocj1IdCh0LGUsaSkpLCJub3JtYWwiPT09ciYmZSBpbiBRdCYmKHI9UXRbZV0pLCIiPT09bnx8bj8obz1wYXJzZUZsb2F0KHIpLCEwPT09bnx8aXNGaW5pdGUobyk/b3x8MDpyKTpyfX0pLHguZWFjaChbImhlaWdodCIsIndpZHRoIl0sKGZ1bmN0aW9uKHQsZSl7eC5jc3NIb29rc1tlXT17Z2V0OmZ1bmN0aW9uKHQsbixpKXtpZihuKXJldHVybiFZdC50ZXN0KHguY3NzKHQsImRpc3BsYXkiKSl8fHQuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgmJnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg/WnQodCxlLGkpOiR0KHQsWHQsKGZ1bmN0aW9uKCl7cmV0dXJuIFp0KHQsZSxpKX0pKX0sc2V0OmZ1bmN0aW9uKHQsbixpKXt2YXIgcixvPWp0KHQpLGE9IWYuc2Nyb2xsYm94U2l6ZSgpJiYiYWJzb2x1dGUiPT09by5wb3NpdGlvbixzPShhfHxpKSYmImJvcmRlci1ib3giPT09eC5jc3ModCwiYm94U2l6aW5nIiwhMSxvKSxsPWk/SnQodCxlLGkscyxvKTowO3JldHVybiBzJiZhJiYobC09TWF0aC5jZWlsKHRbIm9mZnNldCIrZVswXS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSldLXBhcnNlRmxvYXQob1tlXSktSnQodCxlLCJib3JkZXIiLCExLG8pLS41KSksbCYmKHI9ZXQuZXhlYyhuKSkmJiJweCIhPT0oclszXXx8InB4IikmJih0LnN0eWxlW2VdPW4sbj14LmNzcyh0LGUpKSxLdCgwLG4sbCl9fX0pKSx4LmNzc0hvb2tzLm1hcmdpbkxlZnQ9QnQoZi5yZWxpYWJsZU1hcmdpbkxlZnQsKGZ1bmN0aW9uKHQsZSl7aWYoZSlyZXR1cm4ocGFyc2VGbG9hdChIdCh0LCJtYXJnaW5MZWZ0IikpfHx0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQtJHQodCx7bWFyZ2luTGVmdDowfSwoZnVuY3Rpb24oKXtyZXR1cm4gdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0fSkpKSsicHgifSkpLHguZWFjaCh7bWFyZ2luOiIiLHBhZGRpbmc6IiIsYm9yZGVyOiJXaWR0aCJ9LChmdW5jdGlvbih0LGUpe3guY3NzSG9va3NbdCtlXT17ZXhwYW5kOmZ1bmN0aW9uKG4pe2Zvcih2YXIgaT0wLHI9e30sbz0ic3RyaW5nIj09dHlwZW9mIG4/bi5zcGxpdCgiICIpOltuXTtpPDQ7aSsrKXJbdCtudFtpXStlXT1vW2ldfHxvW2ktMl18fG9bMF07cmV0dXJuIHJ9fSwibWFyZ2luIiE9PXQmJih4LmNzc0hvb2tzW3QrZV0uc2V0PUt0KX0pKSx4LmZuLmV4dGVuZCh7Y3NzOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIEIodGhpcywoZnVuY3Rpb24odCxlLG4pe3ZhciBpLHIsbz17fSxhPTA7aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKGk9anQodCkscj1lLmxlbmd0aDthPHI7YSsrKW9bZVthXV09eC5jc3ModCxlW2FdLCExLGkpO3JldHVybiBvfXJldHVybiB2b2lkIDAhPT1uP3guc3R5bGUodCxlLG4pOnguY3NzKHQsZSl9KSx0LGUsMTxhcmd1bWVudHMubGVuZ3RoKX19KSwoKHguVHdlZW49dGUpLnByb3RvdHlwZT17Y29uc3RydWN0b3I6dGUsaW5pdDpmdW5jdGlvbih0LGUsbixpLHIsbyl7dGhpcy5lbGVtPXQsdGhpcy5wcm9wPW4sdGhpcy5lYXNpbmc9cnx8eC5lYXNpbmcuX2RlZmF1bHQsdGhpcy5vcHRpb25zPWUsdGhpcy5zdGFydD10aGlzLm5vdz10aGlzLmN1cigpLHRoaXMuZW5kPWksdGhpcy51bml0PW98fCh4LmNzc051bWJlcltuXT8iIjoicHgiKX0sY3VyOmZ1bmN0aW9uKCl7dmFyIHQ9dGUucHJvcEhvb2tzW3RoaXMucHJvcF07cmV0dXJuIHQmJnQuZ2V0P3QuZ2V0KHRoaXMpOnRlLnByb3BIb29rcy5fZGVmYXVsdC5nZXQodGhpcyl9LHJ1bjpmdW5jdGlvbih0KXt2YXIgZSxuPXRlLnByb3BIb29rc1t0aGlzLnByb3BdO3JldHVybiB0aGlzLm9wdGlvbnMuZHVyYXRpb24/dGhpcy5wb3M9ZT14LmVhc2luZ1t0aGlzLmVhc2luZ10odCx0aGlzLm9wdGlvbnMuZHVyYXRpb24qdCwwLDEsdGhpcy5vcHRpb25zLmR1cmF0aW9uKTp0aGlzLnBvcz1lPXQsdGhpcy5ub3c9KHRoaXMuZW5kLXRoaXMuc3RhcnQpKmUrdGhpcy5zdGFydCx0aGlzLm9wdGlvbnMuc3RlcCYmdGhpcy5vcHRpb25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sdGhpcy5ub3csdGhpcyksbiYmbi5zZXQ/bi5zZXQodGhpcyk6dGUucHJvcEhvb2tzLl9kZWZhdWx0LnNldCh0aGlzKSx0aGlzfX0pLmluaXQucHJvdG90eXBlPXRlLnByb3RvdHlwZSwodGUucHJvcEhvb2tzPXtfZGVmYXVsdDp7Z2V0OmZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiAxIT09dC5lbGVtLm5vZGVUeXBlfHxudWxsIT10LmVsZW1bdC5wcm9wXSYmbnVsbD09dC5lbGVtLnN0eWxlW3QucHJvcF0/dC5lbGVtW3QucHJvcF06KGU9eC5jc3ModC5lbGVtLHQucHJvcCwiIikpJiYiYXV0byIhPT1lP2U6MH0sc2V0OmZ1bmN0aW9uKHQpe3guZnguc3RlcFt0LnByb3BdP3guZnguc3RlcFt0LnByb3BdKHQpOjEhPT10LmVsZW0ubm9kZVR5cGV8fCF4LmNzc0hvb2tzW3QucHJvcF0mJm51bGw9PXQuZWxlbS5zdHlsZVtWdCh0LnByb3ApXT90LmVsZW1bdC5wcm9wXT10Lm5vdzp4LnN0eWxlKHQuZWxlbSx0LnByb3AsdC5ub3crdC51bml0KX19fSkuc2Nyb2xsVG9wPXRlLnByb3BIb29rcy5zY3JvbGxMZWZ0PXtzZXQ6ZnVuY3Rpb24odCl7dC5lbGVtLm5vZGVUeXBlJiZ0LmVsZW0ucGFyZW50Tm9kZSYmKHQuZWxlbVt0LnByb3BdPXQubm93KX19LHguZWFzaW5nPXtsaW5lYXI6ZnVuY3Rpb24odCl7cmV0dXJuIHR9LHN3aW5nOmZ1bmN0aW9uKHQpe3JldHVybi41LU1hdGguY29zKHQqTWF0aC5QSSkvMn0sX2RlZmF1bHQ6InN3aW5nIn0seC5meD10ZS5wcm90b3R5cGUuaW5pdCx4LmZ4LnN0ZXA9e307dmFyIGVlLG5lLGllLHJlLG9lPS9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLyxhZT0vcXVldWVIb29rcyQvO2Z1bmN0aW9uIHNlKCl7bmUmJighMT09PW0uaGlkZGVuJiZ0LnJlcXVlc3RBbmltYXRpb25GcmFtZT90LnJlcXVlc3RBbmltYXRpb25GcmFtZShzZSk6dC5zZXRUaW1lb3V0KHNlLHguZnguaW50ZXJ2YWwpLHguZngudGljaygpKX1mdW5jdGlvbiBsZSgpe3JldHVybiB0LnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZWU9dm9pZCAwfSkpLGVlPURhdGUubm93KCl9ZnVuY3Rpb24gY2UodCxlKXt2YXIgbixpPTAscj17aGVpZ2h0OnR9O2ZvcihlPWU/MTowO2k8NDtpKz0yLWUpclsibWFyZ2luIisobj1udFtpXSldPXJbInBhZGRpbmciK25dPXQ7cmV0dXJuIGUmJihyLm9wYWNpdHk9ci53aWR0aD10KSxyfWZ1bmN0aW9uIHVlKHQsZSxuKXtmb3IodmFyIGkscj0oZGUudHdlZW5lcnNbZV18fFtdKS5jb25jYXQoZGUudHdlZW5lcnNbIioiXSksbz0wLGE9ci5sZW5ndGg7bzxhO28rKylpZihpPXJbb10uY2FsbChuLGUsdCkpcmV0dXJuIGl9ZnVuY3Rpb24gZGUodCxlLG4pe3ZhciBpLHIsbz0wLGE9ZGUucHJlZmlsdGVycy5sZW5ndGgscz14LkRlZmVycmVkKCkuYWx3YXlzKChmdW5jdGlvbigpe2RlbGV0ZSBsLmVsZW19KSksbD1mdW5jdGlvbigpe2lmKHIpcmV0dXJuITE7Zm9yKHZhciBlPWVlfHxsZSgpLG49TWF0aC5tYXgoMCxjLnN0YXJ0VGltZStjLmR1cmF0aW9uLWUpLGk9MS0obi9jLmR1cmF0aW9ufHwwKSxvPTAsYT1jLnR3ZWVucy5sZW5ndGg7bzxhO28rKyljLnR3ZWVuc1tvXS5ydW4oaSk7cmV0dXJuIHMubm90aWZ5V2l0aCh0LFtjLGksbl0pLGk8MSYmYT9uOihhfHxzLm5vdGlmeVdpdGgodCxbYywxLDBdKSxzLnJlc29sdmVXaXRoKHQsW2NdKSwhMSl9LGM9cy5wcm9taXNlKHtlbGVtOnQscHJvcHM6eC5leHRlbmQoe30sZSksb3B0czp4LmV4dGVuZCghMCx7c3BlY2lhbEVhc2luZzp7fSxlYXNpbmc6eC5lYXNpbmcuX2RlZmF1bHR9LG4pLG9yaWdpbmFsUHJvcGVydGllczplLG9yaWdpbmFsT3B0aW9uczpuLHN0YXJ0VGltZTplZXx8bGUoKSxkdXJhdGlvbjpuLmR1cmF0aW9uLHR3ZWVuczpbXSxjcmVhdGVUd2VlbjpmdW5jdGlvbihlLG4pe3ZhciBpPXguVHdlZW4odCxjLm9wdHMsZSxuLGMub3B0cy5zcGVjaWFsRWFzaW5nW2VdfHxjLm9wdHMuZWFzaW5nKTtyZXR1cm4gYy50d2VlbnMucHVzaChpKSxpfSxzdG9wOmZ1bmN0aW9uKGUpe3ZhciBuPTAsaT1lP2MudHdlZW5zLmxlbmd0aDowO2lmKHIpcmV0dXJuIHRoaXM7Zm9yKHI9ITA7bjxpO24rKyljLnR3ZWVuc1tuXS5ydW4oMSk7cmV0dXJuIGU/KHMubm90aWZ5V2l0aCh0LFtjLDEsMF0pLHMucmVzb2x2ZVdpdGgodCxbYyxlXSkpOnMucmVqZWN0V2l0aCh0LFtjLGVdKSx0aGlzfX0pLHU9Yy5wcm9wcztmb3IoZnVuY3Rpb24odCxlKXt2YXIgbixpLHIsbyxhO2ZvcihuIGluIHQpaWYocj1lW2k9VihuKV0sbz10W25dLEFycmF5LmlzQXJyYXkobykmJihyPW9bMV0sbz10W25dPW9bMF0pLG4hPT1pJiYodFtpXT1vLGRlbGV0ZSB0W25dKSwoYT14LmNzc0hvb2tzW2ldKSYmImV4cGFuZCJpbiBhKWZvcihuIGluIG89YS5leHBhbmQobyksZGVsZXRlIHRbaV0sbyluIGluIHR8fCh0W25dPW9bbl0sZVtuXT1yKTtlbHNlIGVbaV09cn0odSxjLm9wdHMuc3BlY2lhbEVhc2luZyk7bzxhO28rKylpZihpPWRlLnByZWZpbHRlcnNbb10uY2FsbChjLHQsdSxjLm9wdHMpKXJldHVybiBwKGkuc3RvcCkmJih4Ll9xdWV1ZUhvb2tzKGMuZWxlbSxjLm9wdHMucXVldWUpLnN0b3A9aS5zdG9wLmJpbmQoaSkpLGk7cmV0dXJuIHgubWFwKHUsdWUsYykscChjLm9wdHMuc3RhcnQpJiZjLm9wdHMuc3RhcnQuY2FsbCh0LGMpLGMucHJvZ3Jlc3MoYy5vcHRzLnByb2dyZXNzKS5kb25lKGMub3B0cy5kb25lLGMub3B0cy5jb21wbGV0ZSkuZmFpbChjLm9wdHMuZmFpbCkuYWx3YXlzKGMub3B0cy5hbHdheXMpLHguZngudGltZXIoeC5leHRlbmQobCx7ZWxlbTp0LGFuaW06YyxxdWV1ZTpjLm9wdHMucXVldWV9KSksY314LkFuaW1hdGlvbj14LmV4dGVuZChkZSx7dHdlZW5lcnM6eyIqIjpbZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLmNyZWF0ZVR3ZWVuKHQsZSk7cmV0dXJuIHN0KG4uZWxlbSx0LGV0LmV4ZWMoZSksbiksbn1dfSx0d2VlbmVyOmZ1bmN0aW9uKHQsZSl7cCh0KT8oZT10LHQ9WyIqIl0pOnQ9dC5tYXRjaChOKTtmb3IodmFyIG4saT0wLHI9dC5sZW5ndGg7aTxyO2krKyluPXRbaV0sZGUudHdlZW5lcnNbbl09ZGUudHdlZW5lcnNbbl18fFtdLGRlLnR3ZWVuZXJzW25dLnVuc2hpZnQoZSl9LHByZWZpbHRlcnM6W2Z1bmN0aW9uKHQsZSxuKXt2YXIgaSxyLG8sYSxzLGwsYyx1LGQ9IndpZHRoImluIGV8fCJoZWlnaHQiaW4gZSxoPXRoaXMsZj17fSxwPXQuc3R5bGUsZz10Lm5vZGVUeXBlJiZhdCh0KSxtPVguZ2V0KHQsImZ4c2hvdyIpO2ZvcihpIGluIG4ucXVldWV8fChudWxsPT0oYT14Ll9xdWV1ZUhvb2tzKHQsImZ4IikpLnVucXVldWVkJiYoYS51bnF1ZXVlZD0wLHM9YS5lbXB0eS5maXJlLGEuZW1wdHkuZmlyZT1mdW5jdGlvbigpe2EudW5xdWV1ZWR8fHMoKX0pLGEudW5xdWV1ZWQrKyxoLmFsd2F5cygoZnVuY3Rpb24oKXtoLmFsd2F5cygoZnVuY3Rpb24oKXthLnVucXVldWVkLS0seC5xdWV1ZSh0LCJmeCIpLmxlbmd0aHx8YS5lbXB0eS5maXJlKCl9KSl9KSkpLGUpaWYocj1lW2ldLG9lLnRlc3Qocikpe2lmKGRlbGV0ZSBlW2ldLG89b3x8InRvZ2dsZSI9PT1yLHI9PT0oZz8iaGlkZSI6InNob3ciKSl7aWYoInNob3ciIT09cnx8IW18fHZvaWQgMD09PW1baV0pY29udGludWU7Zz0hMH1mW2ldPW0mJm1baV18fHguc3R5bGUodCxpKX1pZigobD0heC5pc0VtcHR5T2JqZWN0KGUpKXx8IXguaXNFbXB0eU9iamVjdChmKSlmb3IoaSBpbiBkJiYxPT09dC5ub2RlVHlwZSYmKG4ub3ZlcmZsb3c9W3Aub3ZlcmZsb3cscC5vdmVyZmxvd1gscC5vdmVyZmxvd1ldLG51bGw9PShjPW0mJm0uZGlzcGxheSkmJihjPVguZ2V0KHQsImRpc3BsYXkiKSksIm5vbmUiPT09KHU9eC5jc3ModCwiZGlzcGxheSIpKSYmKGM/dT1jOihjdChbdF0sITApLGM9dC5zdHlsZS5kaXNwbGF5fHxjLHU9eC5jc3ModCwiZGlzcGxheSIpLGN0KFt0XSkpKSwoImlubGluZSI9PT11fHwiaW5saW5lLWJsb2NrIj09PXUmJm51bGwhPWMpJiYibm9uZSI9PT14LmNzcyh0LCJmbG9hdCIpJiYobHx8KGguZG9uZSgoZnVuY3Rpb24oKXtwLmRpc3BsYXk9Y30pKSxudWxsPT1jJiYodT1wLmRpc3BsYXksYz0ibm9uZSI9PT11PyIiOnUpKSxwLmRpc3BsYXk9ImlubGluZS1ibG9jayIpKSxuLm92ZXJmbG93JiYocC5vdmVyZmxvdz0iaGlkZGVuIixoLmFsd2F5cygoZnVuY3Rpb24oKXtwLm92ZXJmbG93PW4ub3ZlcmZsb3dbMF0scC5vdmVyZmxvd1g9bi5vdmVyZmxvd1sxXSxwLm92ZXJmbG93WT1uLm92ZXJmbG93WzJdfSkpKSxsPSExLGYpbHx8KG0/ImhpZGRlbiJpbiBtJiYoZz1tLmhpZGRlbik6bT1YLmFjY2Vzcyh0LCJmeHNob3ciLHtkaXNwbGF5OmN9KSxvJiYobS5oaWRkZW49IWcpLGcmJmN0KFt0XSwhMCksaC5kb25lKChmdW5jdGlvbigpe2ZvcihpIGluIGd8fGN0KFt0XSksWC5yZW1vdmUodCwiZnhzaG93IiksZil4LnN0eWxlKHQsaSxmW2ldKX0pKSksbD11ZShnP21baV06MCxpLGgpLGkgaW4gbXx8KG1baV09bC5zdGFydCxnJiYobC5lbmQ9bC5zdGFydCxsLnN0YXJ0PTApKX1dLHByZWZpbHRlcjpmdW5jdGlvbih0LGUpe2U/ZGUucHJlZmlsdGVycy51bnNoaWZ0KHQpOmRlLnByZWZpbHRlcnMucHVzaCh0KX19KSx4LnNwZWVkPWZ1bmN0aW9uKHQsZSxuKXt2YXIgaT10JiYib2JqZWN0Ij09dHlwZW9mIHQ/eC5leHRlbmQoe30sdCk6e2NvbXBsZXRlOm58fCFuJiZlfHxwKHQpJiZ0LGR1cmF0aW9uOnQsZWFzaW5nOm4mJmV8fGUmJiFwKGUpJiZlfTtyZXR1cm4geC5meC5vZmY/aS5kdXJhdGlvbj0wOiJudW1iZXIiIT10eXBlb2YgaS5kdXJhdGlvbiYmKGkuZHVyYXRpb24gaW4geC5meC5zcGVlZHM/aS5kdXJhdGlvbj14LmZ4LnNwZWVkc1tpLmR1cmF0aW9uXTppLmR1cmF0aW9uPXguZnguc3BlZWRzLl9kZWZhdWx0KSxudWxsIT1pLnF1ZXVlJiYhMCE9PWkucXVldWV8fChpLnF1ZXVlPSJmeCIpLGkub2xkPWkuY29tcGxldGUsaS5jb21wbGV0ZT1mdW5jdGlvbigpe3AoaS5vbGQpJiZpLm9sZC5jYWxsKHRoaXMpLGkucXVldWUmJnguZGVxdWV1ZSh0aGlzLGkucXVldWUpfSxpfSx4LmZuLmV4dGVuZCh7ZmFkZVRvOmZ1bmN0aW9uKHQsZSxuLGkpe3JldHVybiB0aGlzLmZpbHRlcihhdCkuY3NzKCJvcGFjaXR5IiwwKS5zaG93KCkuZW5kKCkuYW5pbWF0ZSh7b3BhY2l0eTplfSx0LG4saSl9LGFuaW1hdGU6ZnVuY3Rpb24odCxlLG4saSl7dmFyIHI9eC5pc0VtcHR5T2JqZWN0KHQpLG89eC5zcGVlZChlLG4saSksYT1mdW5jdGlvbigpe3ZhciBlPWRlKHRoaXMseC5leHRlbmQoe30sdCksbyk7KHJ8fFguZ2V0KHRoaXMsImZpbmlzaCIpKSYmZS5zdG9wKCEwKX07cmV0dXJuIGEuZmluaXNoPWEscnx8ITE9PT1vLnF1ZXVlP3RoaXMuZWFjaChhKTp0aGlzLnF1ZXVlKG8ucXVldWUsYSl9LHN0b3A6ZnVuY3Rpb24odCxlLG4pe3ZhciBpPWZ1bmN0aW9uKHQpe3ZhciBlPXQuc3RvcDtkZWxldGUgdC5zdG9wLGUobil9O3JldHVybiJzdHJpbmciIT10eXBlb2YgdCYmKG49ZSxlPXQsdD12b2lkIDApLGUmJnRoaXMucXVldWUodHx8ImZ4IixbXSksdGhpcy5lYWNoKChmdW5jdGlvbigpe3ZhciBlPSEwLHI9bnVsbCE9dCYmdCsicXVldWVIb29rcyIsbz14LnRpbWVycyxhPVguZ2V0KHRoaXMpO2lmKHIpYVtyXSYmYVtyXS5zdG9wJiZpKGFbcl0pO2Vsc2UgZm9yKHIgaW4gYSlhW3JdJiZhW3JdLnN0b3AmJmFlLnRlc3QocikmJmkoYVtyXSk7Zm9yKHI9by5sZW5ndGg7ci0tOylvW3JdLmVsZW0hPT10aGlzfHxudWxsIT10JiZvW3JdLnF1ZXVlIT09dHx8KG9bcl0uYW5pbS5zdG9wKG4pLGU9ITEsby5zcGxpY2UociwxKSk7IWUmJm58fHguZGVxdWV1ZSh0aGlzLHQpfSkpfSxmaW5pc2g6ZnVuY3Rpb24odCl7cmV0dXJuITEhPT10JiYodD10fHwiZngiKSx0aGlzLmVhY2goKGZ1bmN0aW9uKCl7dmFyIGUsbj1YLmdldCh0aGlzKSxpPW5bdCsicXVldWUiXSxyPW5bdCsicXVldWVIb29rcyJdLG89eC50aW1lcnMsYT1pP2kubGVuZ3RoOjA7Zm9yKG4uZmluaXNoPSEwLHgucXVldWUodGhpcyx0LFtdKSxyJiZyLnN0b3AmJnIuc3RvcC5jYWxsKHRoaXMsITApLGU9by5sZW5ndGg7ZS0tOylvW2VdLmVsZW09PT10aGlzJiZvW2VdLnF1ZXVlPT09dCYmKG9bZV0uYW5pbS5zdG9wKCEwKSxvLnNwbGljZShlLDEpKTtmb3IoZT0wO2U8YTtlKyspaVtlXSYmaVtlXS5maW5pc2gmJmlbZV0uZmluaXNoLmNhbGwodGhpcyk7ZGVsZXRlIG4uZmluaXNofSkpfX0pLHguZWFjaChbInRvZ2dsZSIsInNob3ciLCJoaWRlIl0sKGZ1bmN0aW9uKHQsZSl7dmFyIG49eC5mbltlXTt4LmZuW2VdPWZ1bmN0aW9uKHQsaSxyKXtyZXR1cm4gbnVsbD09dHx8ImJvb2xlYW4iPT10eXBlb2YgdD9uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTp0aGlzLmFuaW1hdGUoY2UoZSwhMCksdCxpLHIpfX0pKSx4LmVhY2goe3NsaWRlRG93bjpjZSgic2hvdyIpLHNsaWRlVXA6Y2UoImhpZGUiKSxzbGlkZVRvZ2dsZTpjZSgidG9nZ2xlIiksZmFkZUluOntvcGFjaXR5OiJzaG93In0sZmFkZU91dDp7b3BhY2l0eToiaGlkZSJ9LGZhZGVUb2dnbGU6e29wYWNpdHk6InRvZ2dsZSJ9fSwoZnVuY3Rpb24odCxlKXt4LmZuW3RdPWZ1bmN0aW9uKHQsbixpKXtyZXR1cm4gdGhpcy5hbmltYXRlKGUsdCxuLGkpfX0pKSx4LnRpbWVycz1bXSx4LmZ4LnRpY2s9ZnVuY3Rpb24oKXt2YXIgdCxlPTAsbj14LnRpbWVycztmb3IoZWU9RGF0ZS5ub3coKTtlPG4ubGVuZ3RoO2UrKykodD1uW2VdKSgpfHxuW2VdIT09dHx8bi5zcGxpY2UoZS0tLDEpO24ubGVuZ3RofHx4LmZ4LnN0b3AoKSxlZT12b2lkIDB9LHguZngudGltZXI9ZnVuY3Rpb24odCl7eC50aW1lcnMucHVzaCh0KSx4LmZ4LnN0YXJ0KCl9LHguZnguaW50ZXJ2YWw9MTMseC5meC5zdGFydD1mdW5jdGlvbigpe25lfHwobmU9ITAsc2UoKSl9LHguZnguc3RvcD1mdW5jdGlvbigpe25lPW51bGx9LHguZnguc3BlZWRzPXtzbG93OjYwMCxmYXN0OjIwMCxfZGVmYXVsdDo0MDB9LHguZm4uZGVsYXk9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gZT14LmZ4JiZ4LmZ4LnNwZWVkc1tlXXx8ZSxuPW58fCJmeCIsdGhpcy5xdWV1ZShuLChmdW5jdGlvbihuLGkpe3ZhciByPXQuc2V0VGltZW91dChuLGUpO2kuc3RvcD1mdW5jdGlvbigpe3QuY2xlYXJUaW1lb3V0KHIpfX0pKX0saWU9bS5jcmVhdGVFbGVtZW50KCJpbnB1dCIpLHJlPW0uY3JlYXRlRWxlbWVudCgic2VsZWN0IikuYXBwZW5kQ2hpbGQobS5jcmVhdGVFbGVtZW50KCJvcHRpb24iKSksaWUudHlwZT0iY2hlY2tib3giLGYuY2hlY2tPbj0iIiE9PWllLnZhbHVlLGYub3B0U2VsZWN0ZWQ9cmUuc2VsZWN0ZWQsKGllPW0uY3JlYXRlRWxlbWVudCgiaW5wdXQiKSkudmFsdWU9InQiLGllLnR5cGU9InJhZGlvIixmLnJhZGlvVmFsdWU9InQiPT09aWUudmFsdWU7dmFyIGhlLGZlPXguZXhwci5hdHRySGFuZGxlO3guZm4uZXh0ZW5kKHthdHRyOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIEIodGhpcyx4LmF0dHIsdCxlLDE8YXJndW1lbnRzLmxlbmd0aCl9LHJlbW92ZUF0dHI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXt4LnJlbW92ZUF0dHIodGhpcyx0KX0pKX19KSx4LmV4dGVuZCh7YXR0cjpmdW5jdGlvbih0LGUsbil7dmFyIGkscixvPXQubm9kZVR5cGU7aWYoMyE9PW8mJjghPT1vJiYyIT09bylyZXR1cm4gdm9pZCAwPT09dC5nZXRBdHRyaWJ1dGU/eC5wcm9wKHQsZSxuKTooMT09PW8mJnguaXNYTUxEb2ModCl8fChyPXguYXR0ckhvb2tzW2UudG9Mb3dlckNhc2UoKV18fCh4LmV4cHIubWF0Y2guYm9vbC50ZXN0KGUpP2hlOnZvaWQgMCkpLHZvaWQgMCE9PW4/bnVsbD09PW4/dm9pZCB4LnJlbW92ZUF0dHIodCxlKTpyJiYic2V0ImluIHImJnZvaWQgMCE9PShpPXIuc2V0KHQsbixlKSk/aToodC5zZXRBdHRyaWJ1dGUoZSxuKyIiKSxuKTpyJiYiZ2V0ImluIHImJm51bGwhPT0oaT1yLmdldCh0LGUpKT9pOm51bGw9PShpPXguZmluZC5hdHRyKHQsZSkpP3ZvaWQgMDppKX0sYXR0ckhvb2tzOnt0eXBlOntzZXQ6ZnVuY3Rpb24odCxlKXtpZighZi5yYWRpb1ZhbHVlJiYicmFkaW8iPT09ZSYmQSh0LCJpbnB1dCIpKXt2YXIgbj10LnZhbHVlO3JldHVybiB0LnNldEF0dHJpYnV0ZSgidHlwZSIsZSksbiYmKHQudmFsdWU9biksZX19fX0scmVtb3ZlQXR0cjpmdW5jdGlvbih0LGUpe3ZhciBuLGk9MCxyPWUmJmUubWF0Y2goTik7aWYociYmMT09PXQubm9kZVR5cGUpZm9yKDtuPXJbaSsrXTspdC5yZW1vdmVBdHRyaWJ1dGUobil9fSksaGU9e3NldDpmdW5jdGlvbih0LGUsbil7cmV0dXJuITE9PT1lP3gucmVtb3ZlQXR0cih0LG4pOnQuc2V0QXR0cmlidXRlKG4sbiksbn19LHguZWFjaCh4LmV4cHIubWF0Y2guYm9vbC5zb3VyY2UubWF0Y2goL1x3Ky9nKSwoZnVuY3Rpb24odCxlKXt2YXIgbj1mZVtlXXx8eC5maW5kLmF0dHI7ZmVbZV09ZnVuY3Rpb24odCxlLGkpe3ZhciByLG8sYT1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuIGl8fChvPWZlW2FdLGZlW2FdPXIscj1udWxsIT1uKHQsZSxpKT9hOm51bGwsZmVbYV09bykscn19KSk7dmFyIHBlPS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2ksZ2U9L14oPzphfGFyZWEpJC9pO2Z1bmN0aW9uIG1lKHQpe3JldHVybih0Lm1hdGNoKE4pfHxbXSkuam9pbigiICIpfWZ1bmN0aW9uIHZlKHQpe3JldHVybiB0LmdldEF0dHJpYnV0ZSYmdC5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIifWZ1bmN0aW9uIHllKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpP3Q6InN0cmluZyI9PXR5cGVvZiB0JiZ0Lm1hdGNoKE4pfHxbXX14LmZuLmV4dGVuZCh7cHJvcDpmdW5jdGlvbih0LGUpe3JldHVybiBCKHRoaXMseC5wcm9wLHQsZSwxPGFyZ3VtZW50cy5sZW5ndGgpfSxyZW1vdmVQcm9wOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXNbeC5wcm9wRml4W3RdfHx0XX0pKX19KSx4LmV4dGVuZCh7cHJvcDpmdW5jdGlvbih0LGUsbil7dmFyIGkscixvPXQubm9kZVR5cGU7aWYoMyE9PW8mJjghPT1vJiYyIT09bylyZXR1cm4gMT09PW8mJnguaXNYTUxEb2ModCl8fChlPXgucHJvcEZpeFtlXXx8ZSxyPXgucHJvcEhvb2tzW2VdKSx2b2lkIDAhPT1uP3ImJiJzZXQiaW4gciYmdm9pZCAwIT09KGk9ci5zZXQodCxuLGUpKT9pOnRbZV09bjpyJiYiZ2V0ImluIHImJm51bGwhPT0oaT1yLmdldCh0LGUpKT9pOnRbZV19LHByb3BIb29rczp7dGFiSW5kZXg6e2dldDpmdW5jdGlvbih0KXt2YXIgZT14LmZpbmQuYXR0cih0LCJ0YWJpbmRleCIpO3JldHVybiBlP3BhcnNlSW50KGUsMTApOnBlLnRlc3QodC5ub2RlTmFtZSl8fGdlLnRlc3QodC5ub2RlTmFtZSkmJnQuaHJlZj8wOi0xfX19LHByb3BGaXg6e2ZvcjoiaHRtbEZvciIsY2xhc3M6ImNsYXNzTmFtZSJ9fSksZi5vcHRTZWxlY3RlZHx8KHgucHJvcEhvb2tzLnNlbGVjdGVkPXtnZXQ6ZnVuY3Rpb24odCl7dmFyIGU9dC5wYXJlbnROb2RlO3JldHVybiBlJiZlLnBhcmVudE5vZGUmJmUucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4LG51bGx9LHNldDpmdW5jdGlvbih0KXt2YXIgZT10LnBhcmVudE5vZGU7ZSYmKGUuc2VsZWN0ZWRJbmRleCxlLnBhcmVudE5vZGUmJmUucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4KX19KSx4LmVhY2goWyJ0YWJJbmRleCIsInJlYWRPbmx5IiwibWF4TGVuZ3RoIiwiY2VsbFNwYWNpbmciLCJjZWxsUGFkZGluZyIsInJvd1NwYW4iLCJjb2xTcGFuIiwidXNlTWFwIiwiZnJhbWVCb3JkZXIiLCJjb250ZW50RWRpdGFibGUiXSwoZnVuY3Rpb24oKXt4LnByb3BGaXhbdGhpcy50b0xvd2VyQ2FzZSgpXT10aGlzfSkpLHguZm4uZXh0ZW5kKHthZGRDbGFzczpmdW5jdGlvbih0KXt2YXIgZSxuLGkscixvLGEscyxsPTA7aWYocCh0KSlyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbihlKXt4KHRoaXMpLmFkZENsYXNzKHQuY2FsbCh0aGlzLGUsdmUodGhpcykpKX0pKTtpZigoZT15ZSh0KSkubGVuZ3RoKWZvcig7bj10aGlzW2wrK107KWlmKHI9dmUobiksaT0xPT09bi5ub2RlVHlwZSYmIiAiK21lKHIpKyIgIil7Zm9yKGE9MDtvPWVbYSsrXTspaS5pbmRleE9mKCIgIitvKyIgIik8MCYmKGkrPW8rIiAiKTtyIT09KHM9bWUoaSkpJiZuLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHMpfXJldHVybiB0aGlzfSxyZW1vdmVDbGFzczpmdW5jdGlvbih0KXt2YXIgZSxuLGkscixvLGEscyxsPTA7aWYocCh0KSlyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbihlKXt4KHRoaXMpLnJlbW92ZUNsYXNzKHQuY2FsbCh0aGlzLGUsdmUodGhpcykpKX0pKTtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdGhpcy5hdHRyKCJjbGFzcyIsIiIpO2lmKChlPXllKHQpKS5sZW5ndGgpZm9yKDtuPXRoaXNbbCsrXTspaWYocj12ZShuKSxpPTE9PT1uLm5vZGVUeXBlJiYiICIrbWUocikrIiAiKXtmb3IoYT0wO289ZVthKytdOylmb3IoOy0xPGkuaW5kZXhPZigiICIrbysiICIpOylpPWkucmVwbGFjZSgiICIrbysiICIsIiAiKTtyIT09KHM9bWUoaSkpJiZuLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHMpfXJldHVybiB0aGlzfSx0b2dnbGVDbGFzczpmdW5jdGlvbih0LGUpe3ZhciBuPXR5cGVvZiB0LGk9InN0cmluZyI9PT1ufHxBcnJheS5pc0FycmF5KHQpO3JldHVybiJib29sZWFuIj09dHlwZW9mIGUmJmk/ZT90aGlzLmFkZENsYXNzKHQpOnRoaXMucmVtb3ZlQ2xhc3ModCk6cCh0KT90aGlzLmVhY2goKGZ1bmN0aW9uKG4pe3godGhpcykudG9nZ2xlQ2xhc3ModC5jYWxsKHRoaXMsbix2ZSh0aGlzKSxlKSxlKX0pKTp0aGlzLmVhY2goKGZ1bmN0aW9uKCl7dmFyIGUscixvLGE7aWYoaSlmb3Iocj0wLG89eCh0aGlzKSxhPXllKHQpO2U9YVtyKytdOylvLmhhc0NsYXNzKGUpP28ucmVtb3ZlQ2xhc3MoZSk6by5hZGRDbGFzcyhlKTtlbHNlIHZvaWQgMCE9PXQmJiJib29sZWFuIiE9PW58fCgoZT12ZSh0aGlzKSkmJlguc2V0KHRoaXMsIl9fY2xhc3NOYW1lX18iLGUpLHRoaXMuc2V0QXR0cmlidXRlJiZ0aGlzLnNldEF0dHJpYnV0ZSgiY2xhc3MiLGV8fCExPT09dD8iIjpYLmdldCh0aGlzLCJfX2NsYXNzTmFtZV9fIil8fCIiKSl9KSl9LGhhc0NsYXNzOmZ1bmN0aW9uKHQpe3ZhciBlLG4saT0wO2ZvcihlPSIgIit0KyIgIjtuPXRoaXNbaSsrXTspaWYoMT09PW4ubm9kZVR5cGUmJi0xPCgiICIrbWUodmUobikpKyIgIikuaW5kZXhPZihlKSlyZXR1cm4hMDtyZXR1cm4hMX19KTt2YXIgYmU9L1xyL2c7eC5mbi5leHRlbmQoe3ZhbDpmdW5jdGlvbih0KXt2YXIgZSxuLGkscj10aGlzWzBdO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPXAodCksdGhpcy5lYWNoKChmdW5jdGlvbihuKXt2YXIgcjsxPT09dGhpcy5ub2RlVHlwZSYmKG51bGw9PShyPWk/dC5jYWxsKHRoaXMsbix4KHRoaXMpLnZhbCgpKTp0KT9yPSIiOiJudW1iZXIiPT10eXBlb2Ygcj9yKz0iIjpBcnJheS5pc0FycmF5KHIpJiYocj14Lm1hcChyLChmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD8iIjp0KyIifSkpKSwoZT14LnZhbEhvb2tzW3RoaXMudHlwZV18fHgudmFsSG9va3NbdGhpcy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSkmJiJzZXQiaW4gZSYmdm9pZCAwIT09ZS5zZXQodGhpcyxyLCJ2YWx1ZSIpfHwodGhpcy52YWx1ZT1yKSl9KSkpOnI/KGU9eC52YWxIb29rc1tyLnR5cGVdfHx4LnZhbEhvb2tzW3Iubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0pJiYiZ2V0ImluIGUmJnZvaWQgMCE9PShuPWUuZ2V0KHIsInZhbHVlIikpP246InN0cmluZyI9PXR5cGVvZihuPXIudmFsdWUpP24ucmVwbGFjZShiZSwiIik6bnVsbD09bj8iIjpuOnZvaWQgMH19KSx4LmV4dGVuZCh7dmFsSG9va3M6e29wdGlvbjp7Z2V0OmZ1bmN0aW9uKHQpe3ZhciBlPXguZmluZC5hdHRyKHQsInZhbHVlIik7cmV0dXJuIG51bGwhPWU/ZTptZSh4LnRleHQodCkpfX0sc2VsZWN0OntnZXQ6ZnVuY3Rpb24odCl7dmFyIGUsbixpLHI9dC5vcHRpb25zLG89dC5zZWxlY3RlZEluZGV4LGE9InNlbGVjdC1vbmUiPT09dC50eXBlLHM9YT9udWxsOltdLGw9YT9vKzE6ci5sZW5ndGg7Zm9yKGk9bzwwP2w6YT9vOjA7aTxsO2krKylpZigoKG49cltpXSkuc2VsZWN0ZWR8fGk9PT1vKSYmIW4uZGlzYWJsZWQmJighbi5wYXJlbnROb2RlLmRpc2FibGVkfHwhQShuLnBhcmVudE5vZGUsIm9wdGdyb3VwIikpKXtpZihlPXgobikudmFsKCksYSlyZXR1cm4gZTtzLnB1c2goZSl9cmV0dXJuIHN9LHNldDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbixpLHI9dC5vcHRpb25zLG89eC5tYWtlQXJyYXkoZSksYT1yLmxlbmd0aDthLS07KSgoaT1yW2FdKS5zZWxlY3RlZD0tMTx4LmluQXJyYXkoeC52YWxIb29rcy5vcHRpb24uZ2V0KGkpLG8pKSYmKG49ITApO3JldHVybiBufHwodC5zZWxlY3RlZEluZGV4PS0xKSxvfX19fSkseC5lYWNoKFsicmFkaW8iLCJjaGVja2JveCJdLChmdW5jdGlvbigpe3gudmFsSG9va3NbdGhpc109e3NldDpmdW5jdGlvbih0LGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIHQuY2hlY2tlZD0tMTx4LmluQXJyYXkoeCh0KS52YWwoKSxlKX19LGYuY2hlY2tPbnx8KHgudmFsSG9va3NbdGhpc10uZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT09dC5nZXRBdHRyaWJ1dGUoInZhbHVlIik/Im9uIjp0LnZhbHVlfSl9KSksZi5mb2N1c2luPSJvbmZvY3VzaW4iaW4gdDt2YXIgd2U9L14oPzpmb2N1c2luZm9jdXN8Zm9jdXNvdXRibHVyKSQvLHhlPWZ1bmN0aW9uKHQpe3Quc3RvcFByb3BhZ2F0aW9uKCl9O3guZXh0ZW5kKHguZXZlbnQse3RyaWdnZXI6ZnVuY3Rpb24oZSxuLGkscil7dmFyIG8sYSxzLGwsYyxkLGgsZix2PVtpfHxtXSx5PXUuY2FsbChlLCJ0eXBlIik/ZS50eXBlOmUsYj11LmNhbGwoZSwibmFtZXNwYWNlIik/ZS5uYW1lc3BhY2Uuc3BsaXQoIi4iKTpbXTtpZihhPWY9cz1pPWl8fG0sMyE9PWkubm9kZVR5cGUmJjghPT1pLm5vZGVUeXBlJiYhd2UudGVzdCh5K3guZXZlbnQudHJpZ2dlcmVkKSYmKC0xPHkuaW5kZXhPZigiLiIpJiYoeT0oYj15LnNwbGl0KCIuIikpLnNoaWZ0KCksYi5zb3J0KCkpLGM9eS5pbmRleE9mKCI6Iik8MCYmIm9uIit5LChlPWVbeC5leHBhbmRvXT9lOm5ldyB4LkV2ZW50KHksIm9iamVjdCI9PXR5cGVvZiBlJiZlKSkuaXNUcmlnZ2VyPXI/MjozLGUubmFtZXNwYWNlPWIuam9pbigiLiIpLGUucm5hbWVzcGFjZT1lLm5hbWVzcGFjZT9uZXcgUmVnRXhwKCIoXnxcXC4pIitiLmpvaW4oIlxcLig/Oi4qXFwufCkiKSsiKFxcLnwkKSIpOm51bGwsZS5yZXN1bHQ9dm9pZCAwLGUudGFyZ2V0fHwoZS50YXJnZXQ9aSksbj1udWxsPT1uP1tlXTp4Lm1ha2VBcnJheShuLFtlXSksaD14LmV2ZW50LnNwZWNpYWxbeV18fHt9LHJ8fCFoLnRyaWdnZXJ8fCExIT09aC50cmlnZ2VyLmFwcGx5KGksbikpKXtpZighciYmIWgubm9CdWJibGUmJiFnKGkpKXtmb3IobD1oLmRlbGVnYXRlVHlwZXx8eSx3ZS50ZXN0KGwreSl8fChhPWEucGFyZW50Tm9kZSk7YTthPWEucGFyZW50Tm9kZSl2LnB1c2goYSkscz1hO3M9PT0oaS5vd25lckRvY3VtZW50fHxtKSYmdi5wdXNoKHMuZGVmYXVsdFZpZXd8fHMucGFyZW50V2luZG93fHx0KX1mb3Iobz0wOyhhPXZbbysrXSkmJiFlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCk7KWY9YSxlLnR5cGU9MTxvP2w6aC5iaW5kVHlwZXx8eSwoZD0oWC5nZXQoYSwiZXZlbnRzIil8fE9iamVjdC5jcmVhdGUobnVsbCkpW2UudHlwZV0mJlguZ2V0KGEsImhhbmRsZSIpKSYmZC5hcHBseShhLG4pLChkPWMmJmFbY10pJiZkLmFwcGx5JiZZKGEpJiYoZS5yZXN1bHQ9ZC5hcHBseShhLG4pLCExPT09ZS5yZXN1bHQmJmUucHJldmVudERlZmF1bHQoKSk7cmV0dXJuIGUudHlwZT15LHJ8fGUuaXNEZWZhdWx0UHJldmVudGVkKCl8fGguX2RlZmF1bHQmJiExIT09aC5fZGVmYXVsdC5hcHBseSh2LnBvcCgpLG4pfHwhWShpKXx8YyYmcChpW3ldKSYmIWcoaSkmJigocz1pW2NdKSYmKGlbY109bnVsbCkseC5ldmVudC50cmlnZ2VyZWQ9eSxlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkmJmYuYWRkRXZlbnRMaXN0ZW5lcih5LHhlKSxpW3ldKCksZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpJiZmLnJlbW92ZUV2ZW50TGlzdGVuZXIoeSx4ZSkseC5ldmVudC50cmlnZ2VyZWQ9dm9pZCAwLHMmJihpW2NdPXMpKSxlLnJlc3VsdH19LHNpbXVsYXRlOmZ1bmN0aW9uKHQsZSxuKXt2YXIgaT14LmV4dGVuZChuZXcgeC5FdmVudCxuLHt0eXBlOnQsaXNTaW11bGF0ZWQ6ITB9KTt4LmV2ZW50LnRyaWdnZXIoaSxudWxsLGUpfX0pLHguZm4uZXh0ZW5kKHt0cmlnZ2VyOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXt4LmV2ZW50LnRyaWdnZXIodCxlLHRoaXMpfSkpfSx0cmlnZ2VySGFuZGxlcjpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXNbMF07aWYobilyZXR1cm4geC5ldmVudC50cmlnZ2VyKHQsZSxuLCEwKX19KSxmLmZvY3VzaW58fHguZWFjaCh7Zm9jdXM6ImZvY3VzaW4iLGJsdXI6ImZvY3Vzb3V0In0sKGZ1bmN0aW9uKHQsZSl7dmFyIG49ZnVuY3Rpb24odCl7eC5ldmVudC5zaW11bGF0ZShlLHQudGFyZ2V0LHguZXZlbnQuZml4KHQpKX07eC5ldmVudC5zcGVjaWFsW2VdPXtzZXR1cDpmdW5jdGlvbigpe3ZhciBpPXRoaXMub3duZXJEb2N1bWVudHx8dGhpcy5kb2N1bWVudHx8dGhpcyxyPVguYWNjZXNzKGksZSk7cnx8aS5hZGRFdmVudExpc3RlbmVyKHQsbiwhMCksWC5hY2Nlc3MoaSxlLChyfHwwKSsxKX0sdGVhcmRvd246ZnVuY3Rpb24oKXt2YXIgaT10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMuZG9jdW1lbnR8fHRoaXMscj1YLmFjY2VzcyhpLGUpLTE7cj9YLmFjY2VzcyhpLGUscik6KGkucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LG4sITApLFgucmVtb3ZlKGksZSkpfX19KSk7dmFyIF9lPXQubG9jYXRpb24sU2U9e2d1aWQ6RGF0ZS5ub3coKX0sQ2U9L1w/Lzt4LnBhcnNlWE1MPWZ1bmN0aW9uKGUpe3ZhciBuO2lmKCFlfHwic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuIG51bGw7dHJ5e249KG5ldyB0LkRPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKGUsInRleHQveG1sIil9Y2F0Y2goZSl7bj12b2lkIDB9cmV0dXJuIG4mJiFuLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwYXJzZXJlcnJvciIpLmxlbmd0aHx8eC5lcnJvcigiSW52YWxpZCBYTUw6ICIrZSksbn07dmFyIGtlPS9cW1xdJC8sVGU9L1xyP1xuL2csQWU9L14oPzpzdWJtaXR8YnV0dG9ufGltYWdlfHJlc2V0fGZpbGUpJC9pLERlPS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGtleWdlbikvaTtmdW5jdGlvbiBFZSh0LGUsbixpKXt2YXIgcjtpZihBcnJheS5pc0FycmF5KGUpKXguZWFjaChlLChmdW5jdGlvbihlLHIpe258fGtlLnRlc3QodCk/aSh0LHIpOkVlKHQrIlsiKygib2JqZWN0Ij09dHlwZW9mIHImJm51bGwhPXI/ZToiIikrIl0iLHIsbixpKX0pKTtlbHNlIGlmKG58fCJvYmplY3QiIT09YihlKSlpKHQsZSk7ZWxzZSBmb3IociBpbiBlKUVlKHQrIlsiK3IrIl0iLGVbcl0sbixpKX14LnBhcmFtPWZ1bmN0aW9uKHQsZSl7dmFyIG4saT1bXSxyPWZ1bmN0aW9uKHQsZSl7dmFyIG49cChlKT9lKCk6ZTtpW2kubGVuZ3RoXT1lbmNvZGVVUklDb21wb25lbnQodCkrIj0iK2VuY29kZVVSSUNvbXBvbmVudChudWxsPT1uPyIiOm4pfTtpZihudWxsPT10KXJldHVybiIiO2lmKEFycmF5LmlzQXJyYXkodCl8fHQuanF1ZXJ5JiYheC5pc1BsYWluT2JqZWN0KHQpKXguZWFjaCh0LChmdW5jdGlvbigpe3IodGhpcy5uYW1lLHRoaXMudmFsdWUpfSkpO2Vsc2UgZm9yKG4gaW4gdClFZShuLHRbbl0sZSxyKTtyZXR1cm4gaS5qb2luKCImIil9LHguZm4uZXh0ZW5kKHtzZXJpYWxpemU6ZnVuY3Rpb24oKXtyZXR1cm4geC5wYXJhbSh0aGlzLnNlcmlhbGl6ZUFycmF5KCkpfSxzZXJpYWxpemVBcnJheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcCgoZnVuY3Rpb24oKXt2YXIgdD14LnByb3AodGhpcywiZWxlbWVudHMiKTtyZXR1cm4gdD94Lm1ha2VBcnJheSh0KTp0aGlzfSkpLmZpbHRlcigoZnVuY3Rpb24oKXt2YXIgdD10aGlzLnR5cGU7cmV0dXJuIHRoaXMubmFtZSYmIXgodGhpcykuaXMoIjpkaXNhYmxlZCIpJiZEZS50ZXN0KHRoaXMubm9kZU5hbWUpJiYhQWUudGVzdCh0KSYmKHRoaXMuY2hlY2tlZHx8IWh0LnRlc3QodCkpfSkpLm1hcCgoZnVuY3Rpb24odCxlKXt2YXIgbj14KHRoaXMpLnZhbCgpO3JldHVybiBudWxsPT1uP251bGw6QXJyYXkuaXNBcnJheShuKT94Lm1hcChuLChmdW5jdGlvbih0KXtyZXR1cm57bmFtZTplLm5hbWUsdmFsdWU6dC5yZXBsYWNlKFRlLCJcclxuIil9fSkpOntuYW1lOmUubmFtZSx2YWx1ZTpuLnJlcGxhY2UoVGUsIlxyXG4iKX19KSkuZ2V0KCl9fSk7dmFyIE1lPS8lMjAvZyxPZT0vIy4qJC8sSWU9LyhbPyZdKV89W14mXSovLFBlPS9eKC4qPyk6WyBcdF0qKFteXHJcbl0qKSQvZ20sTGU9L14oPzpHRVR8SEVBRCkkLyxOZT0vXlwvXC8vLEZlPXt9LFJlPXt9LGplPSIqLyIuY29uY2F0KCIqIiksJGU9bS5jcmVhdGVFbGVtZW50KCJhIik7ZnVuY3Rpb24gemUodCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7InN0cmluZyIhPXR5cGVvZiBlJiYobj1lLGU9IioiKTt2YXIgaSxyPTAsbz1lLnRvTG93ZXJDYXNlKCkubWF0Y2goTil8fFtdO2lmKHAobikpZm9yKDtpPW9bcisrXTspIisiPT09aVswXT8oaT1pLnNsaWNlKDEpfHwiKiIsKHRbaV09dFtpXXx8W10pLnVuc2hpZnQobikpOih0W2ldPXRbaV18fFtdKS5wdXNoKG4pfX1mdW5jdGlvbiBIZSh0LGUsbixpKXt2YXIgcj17fSxvPXQ9PT1SZTtmdW5jdGlvbiBhKHMpe3ZhciBsO3JldHVybiByW3NdPSEwLHguZWFjaCh0W3NdfHxbXSwoZnVuY3Rpb24odCxzKXt2YXIgYz1zKGUsbixpKTtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGN8fG98fHJbY10/bz8hKGw9Yyk6dm9pZCAwOihlLmRhdGFUeXBlcy51bnNoaWZ0KGMpLGEoYyksITEpfSkpLGx9cmV0dXJuIGEoZS5kYXRhVHlwZXNbMF0pfHwhclsiKiJdJiZhKCIqIil9ZnVuY3Rpb24gQmUodCxlKXt2YXIgbixpLHI9eC5hamF4U2V0dGluZ3MuZmxhdE9wdGlvbnN8fHt9O2ZvcihuIGluIGUpdm9pZCAwIT09ZVtuXSYmKChyW25dP3Q6aXx8KGk9e30pKVtuXT1lW25dKTtyZXR1cm4gaSYmeC5leHRlbmQoITAsdCxpKSx0fSRlLmhyZWY9X2UuaHJlZix4LmV4dGVuZCh7YWN0aXZlOjAsbGFzdE1vZGlmaWVkOnt9LGV0YWc6e30sYWpheFNldHRpbmdzOnt1cmw6X2UuaHJlZix0eXBlOiJHRVQiLGlzTG9jYWw6L14oPzphYm91dHxhcHB8YXBwLXN0b3JhZ2V8ListZXh0ZW5zaW9ufGZpbGV8cmVzfHdpZGdldCk6JC8udGVzdChfZS5wcm90b2NvbCksZ2xvYmFsOiEwLHByb2Nlc3NEYXRhOiEwLGFzeW5jOiEwLGNvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLTgiLGFjY2VwdHM6eyIqIjpqZSx0ZXh0OiJ0ZXh0L3BsYWluIixodG1sOiJ0ZXh0L2h0bWwiLHhtbDoiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCIsanNvbjoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0In0sY29udGVudHM6e3htbDovXGJ4bWxcYi8saHRtbDovXGJodG1sLyxqc29uOi9cYmpzb25cYi99LHJlc3BvbnNlRmllbGRzOnt4bWw6InJlc3BvbnNlWE1MIix0ZXh0OiJyZXNwb25zZVRleHQiLGpzb246InJlc3BvbnNlSlNPTiJ9LGNvbnZlcnRlcnM6eyIqIHRleHQiOlN0cmluZywidGV4dCBodG1sIjohMCwidGV4dCBqc29uIjpKU09OLnBhcnNlLCJ0ZXh0IHhtbCI6eC5wYXJzZVhNTH0sZmxhdE9wdGlvbnM6e3VybDohMCxjb250ZXh0OiEwfX0sYWpheFNldHVwOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGU/QmUoQmUodCx4LmFqYXhTZXR0aW5ncyksZSk6QmUoeC5hamF4U2V0dGluZ3MsdCl9LGFqYXhQcmVmaWx0ZXI6emUoRmUpLGFqYXhUcmFuc3BvcnQ6emUoUmUpLGFqYXg6ZnVuY3Rpb24oZSxuKXsib2JqZWN0Ij09dHlwZW9mIGUmJihuPWUsZT12b2lkIDApLG49bnx8e307dmFyIGkscixvLGEscyxsLGMsdSxkLGgsZj14LmFqYXhTZXR1cCh7fSxuKSxwPWYuY29udGV4dHx8ZixnPWYuY29udGV4dCYmKHAubm9kZVR5cGV8fHAuanF1ZXJ5KT94KHApOnguZXZlbnQsdj14LkRlZmVycmVkKCkseT14LkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxiPWYuc3RhdHVzQ29kZXx8e30sdz17fSxfPXt9LFM9ImNhbmNlbGVkIixDPXtyZWFkeVN0YXRlOjAsZ2V0UmVzcG9uc2VIZWFkZXI6ZnVuY3Rpb24odCl7dmFyIGU7aWYoYyl7aWYoIWEpZm9yKGE9e307ZT1QZS5leGVjKG8pOylhW2VbMV0udG9Mb3dlckNhc2UoKSsiICJdPShhW2VbMV0udG9Mb3dlckNhc2UoKSsiICJdfHxbXSkuY29uY2F0KGVbMl0pO2U9YVt0LnRvTG93ZXJDYXNlKCkrIiAiXX1yZXR1cm4gbnVsbD09ZT9udWxsOmUuam9pbigiLCAiKX0sZ2V0QWxsUmVzcG9uc2VIZWFkZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIGM/bzpudWxsfSxzZXRSZXF1ZXN0SGVhZGVyOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGw9PWMmJih0PV9bdC50b0xvd2VyQ2FzZSgpXT1fW3QudG9Mb3dlckNhc2UoKV18fHQsd1t0XT1lKSx0aGlzfSxvdmVycmlkZU1pbWVUeXBlOmZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT1jJiYoZi5taW1lVHlwZT10KSx0aGlzfSxzdGF0dXNDb2RlOmZ1bmN0aW9uKHQpe3ZhciBlO2lmKHQpaWYoYylDLmFsd2F5cyh0W0Muc3RhdHVzXSk7ZWxzZSBmb3IoZSBpbiB0KWJbZV09W2JbZV0sdFtlXV07cmV0dXJuIHRoaXN9LGFib3J0OmZ1bmN0aW9uKHQpe3ZhciBlPXR8fFM7cmV0dXJuIGkmJmkuYWJvcnQoZSksaygwLGUpLHRoaXN9fTtpZih2LnByb21pc2UoQyksZi51cmw9KChlfHxmLnVybHx8X2UuaHJlZikrIiIpLnJlcGxhY2UoTmUsX2UucHJvdG9jb2wrIi8vIiksZi50eXBlPW4ubWV0aG9kfHxuLnR5cGV8fGYubWV0aG9kfHxmLnR5cGUsZi5kYXRhVHlwZXM9KGYuZGF0YVR5cGV8fCIqIikudG9Mb3dlckNhc2UoKS5tYXRjaChOKXx8WyIiXSxudWxsPT1mLmNyb3NzRG9tYWluKXtsPW0uY3JlYXRlRWxlbWVudCgiYSIpO3RyeXtsLmhyZWY9Zi51cmwsbC5ocmVmPWwuaHJlZixmLmNyb3NzRG9tYWluPSRlLnByb3RvY29sKyIvLyIrJGUuaG9zdCE9bC5wcm90b2NvbCsiLy8iK2wuaG9zdH1jYXRjaChlKXtmLmNyb3NzRG9tYWluPSEwfX1pZihmLmRhdGEmJmYucHJvY2Vzc0RhdGEmJiJzdHJpbmciIT10eXBlb2YgZi5kYXRhJiYoZi5kYXRhPXgucGFyYW0oZi5kYXRhLGYudHJhZGl0aW9uYWwpKSxIZShGZSxmLG4sQyksYylyZXR1cm4gQztmb3IoZCBpbih1PXguZXZlbnQmJmYuZ2xvYmFsKSYmMD09eC5hY3RpdmUrKyYmeC5ldmVudC50cmlnZ2VyKCJhamF4U3RhcnQiKSxmLnR5cGU9Zi50eXBlLnRvVXBwZXJDYXNlKCksZi5oYXNDb250ZW50PSFMZS50ZXN0KGYudHlwZSkscj1mLnVybC5yZXBsYWNlKE9lLCIiKSxmLmhhc0NvbnRlbnQ/Zi5kYXRhJiZmLnByb2Nlc3NEYXRhJiYwPT09KGYuY29udGVudFR5cGV8fCIiKS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSYmKGYuZGF0YT1mLmRhdGEucmVwbGFjZShNZSwiKyIpKTooaD1mLnVybC5zbGljZShyLmxlbmd0aCksZi5kYXRhJiYoZi5wcm9jZXNzRGF0YXx8InN0cmluZyI9PXR5cGVvZiBmLmRhdGEpJiYocis9KENlLnRlc3Qocik/IiYiOiI/IikrZi5kYXRhLGRlbGV0ZSBmLmRhdGEpLCExPT09Zi5jYWNoZSYmKHI9ci5yZXBsYWNlKEllLCIkMSIpLGg9KENlLnRlc3Qocik/IiYiOiI/IikrIl89IitTZS5ndWlkKysraCksZi51cmw9citoKSxmLmlmTW9kaWZpZWQmJih4Lmxhc3RNb2RpZmllZFtyXSYmQy5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Nb2RpZmllZC1TaW5jZSIseC5sYXN0TW9kaWZpZWRbcl0pLHguZXRhZ1tyXSYmQy5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Ob25lLU1hdGNoIix4LmV0YWdbcl0pKSwoZi5kYXRhJiZmLmhhc0NvbnRlbnQmJiExIT09Zi5jb250ZW50VHlwZXx8bi5jb250ZW50VHlwZSkmJkMuc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIixmLmNvbnRlbnRUeXBlKSxDLnNldFJlcXVlc3RIZWFkZXIoIkFjY2VwdCIsZi5kYXRhVHlwZXNbMF0mJmYuYWNjZXB0c1tmLmRhdGFUeXBlc1swXV0/Zi5hY2NlcHRzW2YuZGF0YVR5cGVzWzBdXSsoIioiIT09Zi5kYXRhVHlwZXNbMF0/IiwgIitqZSsiOyBxPTAuMDEiOiIiKTpmLmFjY2VwdHNbIioiXSksZi5oZWFkZXJzKUMuc2V0UmVxdWVzdEhlYWRlcihkLGYuaGVhZGVyc1tkXSk7aWYoZi5iZWZvcmVTZW5kJiYoITE9PT1mLmJlZm9yZVNlbmQuY2FsbChwLEMsZil8fGMpKXJldHVybiBDLmFib3J0KCk7aWYoUz0iYWJvcnQiLHkuYWRkKGYuY29tcGxldGUpLEMuZG9uZShmLnN1Y2Nlc3MpLEMuZmFpbChmLmVycm9yKSxpPUhlKFJlLGYsbixDKSl7aWYoQy5yZWFkeVN0YXRlPTEsdSYmZy50cmlnZ2VyKCJhamF4U2VuZCIsW0MsZl0pLGMpcmV0dXJuIEM7Zi5hc3luYyYmMDxmLnRpbWVvdXQmJihzPXQuc2V0VGltZW91dCgoZnVuY3Rpb24oKXtDLmFib3J0KCJ0aW1lb3V0Iil9KSxmLnRpbWVvdXQpKTt0cnl7Yz0hMSxpLnNlbmQodyxrKX1jYXRjaChlKXtpZihjKXRocm93IGU7aygtMSxlKX19ZWxzZSBrKC0xLCJObyBUcmFuc3BvcnQiKTtmdW5jdGlvbiBrKGUsbixhLGwpe3ZhciBkLGgsbSx3LF8sUz1uO2N8fChjPSEwLHMmJnQuY2xlYXJUaW1lb3V0KHMpLGk9dm9pZCAwLG89bHx8IiIsQy5yZWFkeVN0YXRlPTA8ZT80OjAsZD0yMDA8PWUmJmU8MzAwfHwzMDQ9PT1lLGEmJih3PWZ1bmN0aW9uKHQsZSxuKXtmb3IodmFyIGkscixvLGEscz10LmNvbnRlbnRzLGw9dC5kYXRhVHlwZXM7IioiPT09bFswXTspbC5zaGlmdCgpLHZvaWQgMD09PWkmJihpPXQubWltZVR5cGV8fGUuZ2V0UmVzcG9uc2VIZWFkZXIoIkNvbnRlbnQtVHlwZSIpKTtpZihpKWZvcihyIGluIHMpaWYoc1tyXSYmc1tyXS50ZXN0KGkpKXtsLnVuc2hpZnQocik7YnJlYWt9aWYobFswXWluIG4pbz1sWzBdO2Vsc2V7Zm9yKHIgaW4gbil7aWYoIWxbMF18fHQuY29udmVydGVyc1tyKyIgIitsWzBdXSl7bz1yO2JyZWFrfWF8fChhPXIpfW89b3x8YX1pZihvKXJldHVybiBvIT09bFswXSYmbC51bnNoaWZ0KG8pLG5bb119KGYsQyxhKSksIWQmJi0xPHguaW5BcnJheSgic2NyaXB0IixmLmRhdGFUeXBlcykmJihmLmNvbnZlcnRlcnNbInRleHQgc2NyaXB0Il09ZnVuY3Rpb24oKXt9KSx3PWZ1bmN0aW9uKHQsZSxuLGkpe3ZhciByLG8sYSxzLGwsYz17fSx1PXQuZGF0YVR5cGVzLnNsaWNlKCk7aWYodVsxXSlmb3IoYSBpbiB0LmNvbnZlcnRlcnMpY1thLnRvTG93ZXJDYXNlKCldPXQuY29udmVydGVyc1thXTtmb3Iobz11LnNoaWZ0KCk7bzspaWYodC5yZXNwb25zZUZpZWxkc1tvXSYmKG5bdC5yZXNwb25zZUZpZWxkc1tvXV09ZSksIWwmJmkmJnQuZGF0YUZpbHRlciYmKGU9dC5kYXRhRmlsdGVyKGUsdC5kYXRhVHlwZSkpLGw9byxvPXUuc2hpZnQoKSlpZigiKiI9PT1vKW89bDtlbHNlIGlmKCIqIiE9PWwmJmwhPT1vKXtpZighKGE9Y1tsKyIgIitvXXx8Y1siKiAiK29dKSlmb3IociBpbiBjKWlmKChzPXIuc3BsaXQoIiAiKSlbMV09PT1vJiYoYT1jW2wrIiAiK3NbMF1dfHxjWyIqICIrc1swXV0pKXshMD09PWE/YT1jW3JdOiEwIT09Y1tyXSYmKG89c1swXSx1LnVuc2hpZnQoc1sxXSkpO2JyZWFrfWlmKCEwIT09YSlpZihhJiZ0LnRocm93cyllPWEoZSk7ZWxzZSB0cnl7ZT1hKGUpfWNhdGNoKHQpe3JldHVybntzdGF0ZToicGFyc2VyZXJyb3IiLGVycm9yOmE/dDoiTm8gY29udmVyc2lvbiBmcm9tICIrbCsiIHRvICIrb319fXJldHVybntzdGF0ZToic3VjY2VzcyIsZGF0YTplfX0oZix3LEMsZCksZD8oZi5pZk1vZGlmaWVkJiYoKF89Qy5nZXRSZXNwb25zZUhlYWRlcigiTGFzdC1Nb2RpZmllZCIpKSYmKHgubGFzdE1vZGlmaWVkW3JdPV8pLChfPUMuZ2V0UmVzcG9uc2VIZWFkZXIoImV0YWciKSkmJih4LmV0YWdbcl09XykpLDIwND09PWV8fCJIRUFEIj09PWYudHlwZT9TPSJub2NvbnRlbnQiOjMwND09PWU/Uz0ibm90bW9kaWZpZWQiOihTPXcuc3RhdGUsaD13LmRhdGEsZD0hKG09dy5lcnJvcikpKToobT1TLCFlJiZTfHwoUz0iZXJyb3IiLGU8MCYmKGU9MCkpKSxDLnN0YXR1cz1lLEMuc3RhdHVzVGV4dD0obnx8UykrIiIsZD92LnJlc29sdmVXaXRoKHAsW2gsUyxDXSk6di5yZWplY3RXaXRoKHAsW0MsUyxtXSksQy5zdGF0dXNDb2RlKGIpLGI9dm9pZCAwLHUmJmcudHJpZ2dlcihkPyJhamF4U3VjY2VzcyI6ImFqYXhFcnJvciIsW0MsZixkP2g6bV0pLHkuZmlyZVdpdGgocCxbQyxTXSksdSYmKGcudHJpZ2dlcigiYWpheENvbXBsZXRlIixbQyxmXSksLS14LmFjdGl2ZXx8eC5ldmVudC50cmlnZ2VyKCJhamF4U3RvcCIpKSl9cmV0dXJuIEN9LGdldEpTT046ZnVuY3Rpb24odCxlLG4pe3JldHVybiB4LmdldCh0LGUsbiwianNvbiIpfSxnZXRTY3JpcHQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4geC5nZXQodCx2b2lkIDAsZSwic2NyaXB0Iil9fSkseC5lYWNoKFsiZ2V0IiwicG9zdCJdLChmdW5jdGlvbih0LGUpe3hbZV09ZnVuY3Rpb24odCxuLGkscil7cmV0dXJuIHAobikmJihyPXJ8fGksaT1uLG49dm9pZCAwKSx4LmFqYXgoeC5leHRlbmQoe3VybDp0LHR5cGU6ZSxkYXRhVHlwZTpyLGRhdGE6bixzdWNjZXNzOml9LHguaXNQbGFpbk9iamVjdCh0KSYmdCkpfX0pKSx4LmFqYXhQcmVmaWx0ZXIoKGZ1bmN0aW9uKHQpe3ZhciBlO2ZvcihlIGluIHQuaGVhZGVycykiY29udGVudC10eXBlIj09PWUudG9Mb3dlckNhc2UoKSYmKHQuY29udGVudFR5cGU9dC5oZWFkZXJzW2VdfHwiIil9KSkseC5fZXZhbFVybD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHguYWpheCh7dXJsOnQsdHlwZToiR0VUIixkYXRhVHlwZToic2NyaXB0IixjYWNoZTohMCxhc3luYzohMSxnbG9iYWw6ITEsY29udmVydGVyczp7InRleHQgc2NyaXB0IjpmdW5jdGlvbigpe319LGRhdGFGaWx0ZXI6ZnVuY3Rpb24odCl7eC5nbG9iYWxFdmFsKHQsZSxuKX19KX0seC5mbi5leHRlbmQoe3dyYXBBbGw6ZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuIHRoaXNbMF0mJihwKHQpJiYodD10LmNhbGwodGhpc1swXSkpLGU9eCh0LHRoaXNbMF0ub3duZXJEb2N1bWVudCkuZXEoMCkuY2xvbmUoITApLHRoaXNbMF0ucGFyZW50Tm9kZSYmZS5pbnNlcnRCZWZvcmUodGhpc1swXSksZS5tYXAoKGZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXM7dC5maXJzdEVsZW1lbnRDaGlsZDspdD10LmZpcnN0RWxlbWVudENoaWxkO3JldHVybiB0fSkpLmFwcGVuZCh0aGlzKSksdGhpc30sd3JhcElubmVyOmZ1bmN0aW9uKHQpe3JldHVybiBwKHQpP3RoaXMuZWFjaCgoZnVuY3Rpb24oZSl7eCh0aGlzKS53cmFwSW5uZXIodC5jYWxsKHRoaXMsZSkpfSkpOnRoaXMuZWFjaCgoZnVuY3Rpb24oKXt2YXIgZT14KHRoaXMpLG49ZS5jb250ZW50cygpO24ubGVuZ3RoP24ud3JhcEFsbCh0KTplLmFwcGVuZCh0KX0pKX0sd3JhcDpmdW5jdGlvbih0KXt2YXIgZT1wKHQpO3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKG4pe3godGhpcykud3JhcEFsbChlP3QuY2FsbCh0aGlzLG4pOnQpfSkpfSx1bndyYXA6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucGFyZW50KHQpLm5vdCgiYm9keSIpLmVhY2goKGZ1bmN0aW9uKCl7eCh0aGlzKS5yZXBsYWNlV2l0aCh0aGlzLmNoaWxkTm9kZXMpfSkpLHRoaXN9fSkseC5leHByLnBzZXVkb3MuaGlkZGVuPWZ1bmN0aW9uKHQpe3JldHVybiF4LmV4cHIucHNldWRvcy52aXNpYmxlKHQpfSx4LmV4cHIucHNldWRvcy52aXNpYmxlPWZ1bmN0aW9uKHQpe3JldHVybiEhKHQub2Zmc2V0V2lkdGh8fHQub2Zmc2V0SGVpZ2h0fHx0LmdldENsaWVudFJlY3RzKCkubGVuZ3RoKX0seC5hamF4U2V0dGluZ3MueGhyPWZ1bmN0aW9uKCl7dHJ5e3JldHVybiBuZXcgdC5YTUxIdHRwUmVxdWVzdH1jYXRjaCh0KXt9fTt2YXIgcWU9ezA6MjAwLDEyMjM6MjA0fSxXZT14LmFqYXhTZXR0aW5ncy54aHIoKTtmLmNvcnM9ISFXZSYmIndpdGhDcmVkZW50aWFscyJpbiBXZSxmLmFqYXg9V2U9ISFXZSx4LmFqYXhUcmFuc3BvcnQoKGZ1bmN0aW9uKGUpe3ZhciBuLGk7aWYoZi5jb3JzfHxXZSYmIWUuY3Jvc3NEb21haW4pcmV0dXJue3NlbmQ6ZnVuY3Rpb24ocixvKXt2YXIgYSxzPWUueGhyKCk7aWYocy5vcGVuKGUudHlwZSxlLnVybCxlLmFzeW5jLGUudXNlcm5hbWUsZS5wYXNzd29yZCksZS54aHJGaWVsZHMpZm9yKGEgaW4gZS54aHJGaWVsZHMpc1thXT1lLnhockZpZWxkc1thXTtmb3IoYSBpbiBlLm1pbWVUeXBlJiZzLm92ZXJyaWRlTWltZVR5cGUmJnMub3ZlcnJpZGVNaW1lVHlwZShlLm1pbWVUeXBlKSxlLmNyb3NzRG9tYWlufHxyWyJYLVJlcXVlc3RlZC1XaXRoIl18fChyWyJYLVJlcXVlc3RlZC1XaXRoIl09IlhNTEh0dHBSZXF1ZXN0IikscilzLnNldFJlcXVlc3RIZWFkZXIoYSxyW2FdKTtuPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe24mJihuPWk9cy5vbmxvYWQ9cy5vbmVycm9yPXMub25hYm9ydD1zLm9udGltZW91dD1zLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLCJhYm9ydCI9PT10P3MuYWJvcnQoKToiZXJyb3IiPT09dD8ibnVtYmVyIiE9dHlwZW9mIHMuc3RhdHVzP28oMCwiZXJyb3IiKTpvKHMuc3RhdHVzLHMuc3RhdHVzVGV4dCk6byhxZVtzLnN0YXR1c118fHMuc3RhdHVzLHMuc3RhdHVzVGV4dCwidGV4dCIhPT0ocy5yZXNwb25zZVR5cGV8fCJ0ZXh0Iil8fCJzdHJpbmciIT10eXBlb2Ygcy5yZXNwb25zZVRleHQ/e2JpbmFyeTpzLnJlc3BvbnNlfTp7dGV4dDpzLnJlc3BvbnNlVGV4dH0scy5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSkpfX0scy5vbmxvYWQ9bigpLGk9cy5vbmVycm9yPXMub250aW1lb3V0PW4oImVycm9yIiksdm9pZCAwIT09cy5vbmFib3J0P3Mub25hYm9ydD1pOnMub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7ND09PXMucmVhZHlTdGF0ZSYmdC5zZXRUaW1lb3V0KChmdW5jdGlvbigpe24mJmkoKX0pKX0sbj1uKCJhYm9ydCIpO3RyeXtzLnNlbmQoZS5oYXNDb250ZW50JiZlLmRhdGF8fG51bGwpfWNhdGNoKHIpe2lmKG4pdGhyb3cgcn19LGFib3J0OmZ1bmN0aW9uKCl7biYmbigpfX19KSkseC5hamF4UHJlZmlsdGVyKChmdW5jdGlvbih0KXt0LmNyb3NzRG9tYWluJiYodC5jb250ZW50cy5zY3JpcHQ9ITEpfSkpLHguYWpheFNldHVwKHthY2NlcHRzOntzY3JpcHQ6InRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRpb24vamF2YXNjcmlwdCwgYXBwbGljYXRpb24vZWNtYXNjcmlwdCwgYXBwbGljYXRpb24veC1lY21hc2NyaXB0In0sY29udGVudHM6e3NjcmlwdDovXGIoPzpqYXZhfGVjbWEpc2NyaXB0XGIvfSxjb252ZXJ0ZXJzOnsidGV4dCBzY3JpcHQiOmZ1bmN0aW9uKHQpe3JldHVybiB4Lmdsb2JhbEV2YWwodCksdH19fSkseC5hamF4UHJlZmlsdGVyKCJzY3JpcHQiLChmdW5jdGlvbih0KXt2b2lkIDA9PT10LmNhY2hlJiYodC5jYWNoZT0hMSksdC5jcm9zc0RvbWFpbiYmKHQudHlwZT0iR0VUIil9KSkseC5hamF4VHJhbnNwb3J0KCJzY3JpcHQiLChmdW5jdGlvbih0KXt2YXIgZSxuO2lmKHQuY3Jvc3NEb21haW58fHQuc2NyaXB0QXR0cnMpcmV0dXJue3NlbmQ6ZnVuY3Rpb24oaSxyKXtlPXgoIjxzY3JpcHQ+IikuYXR0cih0LnNjcmlwdEF0dHJzfHx7fSkucHJvcCh7Y2hhcnNldDp0LnNjcmlwdENoYXJzZXQsc3JjOnQudXJsfSkub24oImxvYWQgZXJyb3IiLG49ZnVuY3Rpb24odCl7ZS5yZW1vdmUoKSxuPW51bGwsdCYmcigiZXJyb3IiPT09dC50eXBlPzQwNDoyMDAsdC50eXBlKX0pLG0uaGVhZC5hcHBlbmRDaGlsZChlWzBdKX0sYWJvcnQ6ZnVuY3Rpb24oKXtuJiZuKCl9fX0pKTt2YXIgVWUsVmU9W10sWWU9Lyg9KVw/KD89JnwkKXxcP1w/Lzt4LmFqYXhTZXR1cCh7anNvbnA6ImNhbGxiYWNrIixqc29ucENhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIHQ9VmUucG9wKCl8fHguZXhwYW5kbysiXyIrU2UuZ3VpZCsrO3JldHVybiB0aGlzW3RdPSEwLHR9fSkseC5hamF4UHJlZmlsdGVyKCJqc29uIGpzb25wIiwoZnVuY3Rpb24oZSxuLGkpe3ZhciByLG8sYSxzPSExIT09ZS5qc29ucCYmKFllLnRlc3QoZS51cmwpPyJ1cmwiOiJzdHJpbmciPT10eXBlb2YgZS5kYXRhJiYwPT09KGUuY29udGVudFR5cGV8fCIiKS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSYmWWUudGVzdChlLmRhdGEpJiYiZGF0YSIpO2lmKHN8fCJqc29ucCI9PT1lLmRhdGFUeXBlc1swXSlyZXR1cm4gcj1lLmpzb25wQ2FsbGJhY2s9cChlLmpzb25wQ2FsbGJhY2spP2UuanNvbnBDYWxsYmFjaygpOmUuanNvbnBDYWxsYmFjayxzP2Vbc109ZVtzXS5yZXBsYWNlKFllLCIkMSIrcik6ITEhPT1lLmpzb25wJiYoZS51cmwrPShDZS50ZXN0KGUudXJsKT8iJiI6Ij8iKStlLmpzb25wKyI9IityKSxlLmNvbnZlcnRlcnNbInNjcmlwdCBqc29uIl09ZnVuY3Rpb24oKXtyZXR1cm4gYXx8eC5lcnJvcihyKyIgd2FzIG5vdCBjYWxsZWQiKSxhWzBdfSxlLmRhdGFUeXBlc1swXT0ianNvbiIsbz10W3JdLHRbcl09ZnVuY3Rpb24oKXthPWFyZ3VtZW50c30saS5hbHdheXMoKGZ1bmN0aW9uKCl7dm9pZCAwPT09bz94KHQpLnJlbW92ZVByb3Aocik6dFtyXT1vLGVbcl0mJihlLmpzb25wQ2FsbGJhY2s9bi5qc29ucENhbGxiYWNrLFZlLnB1c2gocikpLGEmJnAobykmJm8oYVswXSksYT1vPXZvaWQgMH0pKSwic2NyaXB0In0pKSxmLmNyZWF0ZUhUTUxEb2N1bWVudD0oKFVlPW0uaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KCIiKS5ib2R5KS5pbm5lckhUTUw9Ijxmb3JtPjwvZm9ybT48Zm9ybT48L2Zvcm0+IiwyPT09VWUuY2hpbGROb2Rlcy5sZW5ndGgpLHgucGFyc2VIVE1MPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIHQ/W106KCJib29sZWFuIj09dHlwZW9mIGUmJihuPWUsZT0hMSksZXx8KGYuY3JlYXRlSFRNTERvY3VtZW50PygoaT0oZT1tLmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgiIikpLmNyZWF0ZUVsZW1lbnQoImJhc2UiKSkuaHJlZj1tLmxvY2F0aW9uLmhyZWYsZS5oZWFkLmFwcGVuZENoaWxkKGkpKTplPW0pLG89IW4mJltdLChyPUQuZXhlYyh0KSk/W2UuY3JlYXRlRWxlbWVudChyWzFdKV06KHI9YnQoW3RdLGUsbyksbyYmby5sZW5ndGgmJngobykucmVtb3ZlKCkseC5tZXJnZShbXSxyLmNoaWxkTm9kZXMpKSk7dmFyIGkscixvfSx4LmZuLmxvYWQ9ZnVuY3Rpb24odCxlLG4pe3ZhciBpLHIsbyxhPXRoaXMscz10LmluZGV4T2YoIiAiKTtyZXR1cm4tMTxzJiYoaT1tZSh0LnNsaWNlKHMpKSx0PXQuc2xpY2UoMCxzKSkscChlKT8obj1lLGU9dm9pZCAwKTplJiYib2JqZWN0Ij09dHlwZW9mIGUmJihyPSJQT1NUIiksMDxhLmxlbmd0aCYmeC5hamF4KHt1cmw6dCx0eXBlOnJ8fCJHRVQiLGRhdGFUeXBlOiJodG1sIixkYXRhOmV9KS5kb25lKChmdW5jdGlvbih0KXtvPWFyZ3VtZW50cyxhLmh0bWwoaT94KCI8ZGl2PiIpLmFwcGVuZCh4LnBhcnNlSFRNTCh0KSkuZmluZChpKTp0KX0pKS5hbHdheXMobiYmZnVuY3Rpb24odCxlKXthLmVhY2goKGZ1bmN0aW9uKCl7bi5hcHBseSh0aGlzLG98fFt0LnJlc3BvbnNlVGV4dCxlLHRdKX0pKX0pLHRoaXN9LHguZXhwci5wc2V1ZG9zLmFuaW1hdGVkPWZ1bmN0aW9uKHQpe3JldHVybiB4LmdyZXAoeC50aW1lcnMsKGZ1bmN0aW9uKGUpe3JldHVybiB0PT09ZS5lbGVtfSkpLmxlbmd0aH0seC5vZmZzZXQ9e3NldE9mZnNldDpmdW5jdGlvbih0LGUsbil7dmFyIGkscixvLGEscyxsLGM9eC5jc3ModCwicG9zaXRpb24iKSx1PXgodCksZD17fTsic3RhdGljIj09PWMmJih0LnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIpLHM9dS5vZmZzZXQoKSxvPXguY3NzKHQsInRvcCIpLGw9eC5jc3ModCwibGVmdCIpLCgiYWJzb2x1dGUiPT09Y3x8ImZpeGVkIj09PWMpJiYtMTwobytsKS5pbmRleE9mKCJhdXRvIik/KGE9KGk9dS5wb3NpdGlvbigpKS50b3Ascj1pLmxlZnQpOihhPXBhcnNlRmxvYXQobyl8fDAscj1wYXJzZUZsb2F0KGwpfHwwKSxwKGUpJiYoZT1lLmNhbGwodCxuLHguZXh0ZW5kKHt9LHMpKSksbnVsbCE9ZS50b3AmJihkLnRvcD1lLnRvcC1zLnRvcCthKSxudWxsIT1lLmxlZnQmJihkLmxlZnQ9ZS5sZWZ0LXMubGVmdCtyKSwidXNpbmciaW4gZT9lLnVzaW5nLmNhbGwodCxkKTooIm51bWJlciI9PXR5cGVvZiBkLnRvcCYmKGQudG9wKz0icHgiKSwibnVtYmVyIj09dHlwZW9mIGQubGVmdCYmKGQubGVmdCs9InB4IiksdS5jc3MoZCkpfX0seC5mbi5leHRlbmQoe29mZnNldDpmdW5jdGlvbih0KXtpZihhcmd1bWVudHMubGVuZ3RoKXJldHVybiB2b2lkIDA9PT10P3RoaXM6dGhpcy5lYWNoKChmdW5jdGlvbihlKXt4Lm9mZnNldC5zZXRPZmZzZXQodGhpcyx0LGUpfSkpO3ZhciBlLG4saT10aGlzWzBdO3JldHVybiBpP2kuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGg/KGU9aS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuPWkub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldyx7dG9wOmUudG9wK24ucGFnZVlPZmZzZXQsbGVmdDplLmxlZnQrbi5wYWdlWE9mZnNldH0pOnt0b3A6MCxsZWZ0OjB9OnZvaWQgMH0scG9zaXRpb246ZnVuY3Rpb24oKXtpZih0aGlzWzBdKXt2YXIgdCxlLG4saT10aGlzWzBdLHI9e3RvcDowLGxlZnQ6MH07aWYoImZpeGVkIj09PXguY3NzKGksInBvc2l0aW9uIikpZT1pLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2Vsc2V7Zm9yKGU9dGhpcy5vZmZzZXQoKSxuPWkub3duZXJEb2N1bWVudCx0PWkub2Zmc2V0UGFyZW50fHxuLmRvY3VtZW50RWxlbWVudDt0JiYodD09PW4uYm9keXx8dD09PW4uZG9jdW1lbnRFbGVtZW50KSYmInN0YXRpYyI9PT14LmNzcyh0LCJwb3NpdGlvbiIpOyl0PXQucGFyZW50Tm9kZTt0JiZ0IT09aSYmMT09PXQubm9kZVR5cGUmJigocj14KHQpLm9mZnNldCgpKS50b3ArPXguY3NzKHQsImJvcmRlclRvcFdpZHRoIiwhMCksci5sZWZ0Kz14LmNzcyh0LCJib3JkZXJMZWZ0V2lkdGgiLCEwKSl9cmV0dXJue3RvcDplLnRvcC1yLnRvcC14LmNzcyhpLCJtYXJnaW5Ub3AiLCEwKSxsZWZ0OmUubGVmdC1yLmxlZnQteC5jc3MoaSwibWFyZ2luTGVmdCIsITApfX19LG9mZnNldFBhcmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcCgoZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5vZmZzZXRQYXJlbnQ7dCYmInN0YXRpYyI9PT14LmNzcyh0LCJwb3NpdGlvbiIpOyl0PXQub2Zmc2V0UGFyZW50O3JldHVybiB0fHxpdH0pKX19KSx4LmVhY2goe3Njcm9sbExlZnQ6InBhZ2VYT2Zmc2V0IixzY3JvbGxUb3A6InBhZ2VZT2Zmc2V0In0sKGZ1bmN0aW9uKHQsZSl7dmFyIG49InBhZ2VZT2Zmc2V0Ij09PWU7eC5mblt0XT1mdW5jdGlvbihpKXtyZXR1cm4gQih0aGlzLChmdW5jdGlvbih0LGkscil7dmFyIG87aWYoZyh0KT9vPXQ6OT09PXQubm9kZVR5cGUmJihvPXQuZGVmYXVsdFZpZXcpLHZvaWQgMD09PXIpcmV0dXJuIG8/b1tlXTp0W2ldO28/by5zY3JvbGxUbyhuP28ucGFnZVhPZmZzZXQ6cixuP3I6by5wYWdlWU9mZnNldCk6dFtpXT1yfSksdCxpLGFyZ3VtZW50cy5sZW5ndGgpfX0pKSx4LmVhY2goWyJ0b3AiLCJsZWZ0Il0sKGZ1bmN0aW9uKHQsZSl7eC5jc3NIb29rc1tlXT1CdChmLnBpeGVsUG9zaXRpb24sKGZ1bmN0aW9uKHQsbil7aWYobilyZXR1cm4gbj1IdCh0LGUpLFJ0LnRlc3Qobik/eCh0KS5wb3NpdGlvbigpW2VdKyJweCI6bn0pKX0pKSx4LmVhY2goe0hlaWdodDoiaGVpZ2h0IixXaWR0aDoid2lkdGgifSwoZnVuY3Rpb24odCxlKXt4LmVhY2goe3BhZGRpbmc6ImlubmVyIit0LGNvbnRlbnQ6ZSwiIjoib3V0ZXIiK3R9LChmdW5jdGlvbihuLGkpe3guZm5baV09ZnVuY3Rpb24ocixvKXt2YXIgYT1hcmd1bWVudHMubGVuZ3RoJiYobnx8ImJvb2xlYW4iIT10eXBlb2Ygcikscz1ufHwoITA9PT1yfHwhMD09PW8/Im1hcmdpbiI6ImJvcmRlciIpO3JldHVybiBCKHRoaXMsKGZ1bmN0aW9uKGUsbixyKXt2YXIgbztyZXR1cm4gZyhlKT8wPT09aS5pbmRleE9mKCJvdXRlciIpP2VbImlubmVyIit0XTplLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFsiY2xpZW50Iit0XTo5PT09ZS5ub2RlVHlwZT8obz1lLmRvY3VtZW50RWxlbWVudCxNYXRoLm1heChlLmJvZHlbInNjcm9sbCIrdF0sb1sic2Nyb2xsIit0XSxlLmJvZHlbIm9mZnNldCIrdF0sb1sib2Zmc2V0Iit0XSxvWyJjbGllbnQiK3RdKSk6dm9pZCAwPT09cj94LmNzcyhlLG4scyk6eC5zdHlsZShlLG4scixzKX0pLGUsYT9yOnZvaWQgMCxhKX19KSl9KSkseC5lYWNoKFsiYWpheFN0YXJ0IiwiYWpheFN0b3AiLCJhamF4Q29tcGxldGUiLCJhamF4RXJyb3IiLCJhamF4U3VjY2VzcyIsImFqYXhTZW5kIl0sKGZ1bmN0aW9uKHQsZSl7eC5mbltlXT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5vbihlLHQpfX0pKSx4LmZuLmV4dGVuZCh7YmluZDpmdW5jdGlvbih0LGUsbil7cmV0dXJuIHRoaXMub24odCxudWxsLGUsbil9LHVuYmluZDpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLm9mZih0LG51bGwsZSl9LGRlbGVnYXRlOmZ1bmN0aW9uKHQsZSxuLGkpe3JldHVybiB0aGlzLm9uKGUsdCxuLGkpfSx1bmRlbGVnYXRlOmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5vZmYodCwiKioiKTp0aGlzLm9mZihlLHR8fCIqKiIsbil9LGhvdmVyOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMubW91c2VlbnRlcih0KS5tb3VzZWxlYXZlKGV8fHQpfX0pLHguZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IHJlc2l6ZSBzY3JvbGwgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSwoZnVuY3Rpb24odCxlKXt4LmZuW2VdPWZ1bmN0aW9uKHQsbil7cmV0dXJuIDA8YXJndW1lbnRzLmxlbmd0aD90aGlzLm9uKGUsbnVsbCx0LG4pOnRoaXMudHJpZ2dlcihlKX19KSk7dmFyIEdlPS9eW1xzXHVGRUZGXHhBMF0rfFtcc1x1RkVGRlx4QTBdKyQvZzt4LnByb3h5PWZ1bmN0aW9uKHQsZSl7dmFyIG4saSxvO2lmKCJzdHJpbmciPT10eXBlb2YgZSYmKG49dFtlXSxlPXQsdD1uKSxwKHQpKXJldHVybiBpPXIuY2FsbChhcmd1bWVudHMsMiksKG89ZnVuY3Rpb24oKXtyZXR1cm4gdC5hcHBseShlfHx0aGlzLGkuY29uY2F0KHIuY2FsbChhcmd1bWVudHMpKSl9KS5ndWlkPXQuZ3VpZD10Lmd1aWR8fHguZ3VpZCsrLG99LHguaG9sZFJlYWR5PWZ1bmN0aW9uKHQpe3Q/eC5yZWFkeVdhaXQrKzp4LnJlYWR5KCEwKX0seC5pc0FycmF5PUFycmF5LmlzQXJyYXkseC5wYXJzZUpTT049SlNPTi5wYXJzZSx4Lm5vZGVOYW1lPUEseC5pc0Z1bmN0aW9uPXAseC5pc1dpbmRvdz1nLHguY2FtZWxDYXNlPVYseC50eXBlPWIseC5ub3c9RGF0ZS5ub3cseC5pc051bWVyaWM9ZnVuY3Rpb24odCl7dmFyIGU9eC50eXBlKHQpO3JldHVybigibnVtYmVyIj09PWV8fCJzdHJpbmciPT09ZSkmJiFpc05hTih0LXBhcnNlRmxvYXQodCkpfSx4LnRyaW09ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/IiI6KHQrIiIpLnJlcGxhY2UoR2UsIiIpfSwiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kJiZkZWZpbmUoImpxdWVyeSIsW10sKGZ1bmN0aW9uKCl7cmV0dXJuIHh9KSk7dmFyIFhlPXQualF1ZXJ5LFFlPXQuJDtyZXR1cm4geC5ub0NvbmZsaWN0PWZ1bmN0aW9uKGUpe3JldHVybiB0LiQ9PT14JiYodC4kPVFlKSxlJiZ0LmpRdWVyeT09PXgmJih0LmpRdWVyeT1YZSkseH0sdm9pZCAwPT09ZSYmKHQualF1ZXJ5PXQuJD14KSx4fSkpLGZ1bmN0aW9uKHQsZSl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZT9lKGV4cG9ydHMscmVxdWlyZSgianF1ZXJ5IikpOiJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsiZXhwb3J0cyIsImpxdWVyeSJdLGUpOmUoKHQ9InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6dHx8c2VsZikuYm9vdHN0cmFwPXt9LHQualF1ZXJ5KX0odGhpcywoZnVuY3Rpb24odCxlKXsidXNlIHN0cmljdCI7dmFyIG49ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJvYmplY3QiPT10eXBlb2YgdCYmImRlZmF1bHQiaW4gdD90OntkZWZhdWx0OnR9fShlKTtmdW5jdGlvbiBpKHQsZSl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciBpPWVbbl07aS5lbnVtZXJhYmxlPWkuZW51bWVyYWJsZXx8ITEsaS5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGkmJihpLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxpLmtleSxpKX19ZnVuY3Rpb24gcih0LGUsbil7cmV0dXJuIGUmJmkodC5wcm90b3R5cGUsZSksbiYmaSh0LG4pLHR9ZnVuY3Rpb24gbygpe3JldHVybihvPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0xO2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBuPWFyZ3VtZW50c1tlXTtmb3IodmFyIGkgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixpKSYmKHRbaV09bltpXSl9cmV0dXJuIHR9KS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9dmFyIGE9e1RSQU5TSVRJT05fRU5EOiJic1RyYW5zaXRpb25FbmQiLGdldFVJRDpmdW5jdGlvbih0KXtkb3t0Kz1+figxZTYqTWF0aC5yYW5kb20oKSl9d2hpbGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodCkpO3JldHVybiB0fSxnZXRTZWxlY3RvckZyb21FbGVtZW50OmZ1bmN0aW9uKHQpe3ZhciBlPXQuZ2V0QXR0cmlidXRlKCJkYXRhLXRhcmdldCIpO2lmKCFlfHwiIyI9PT1lKXt2YXIgbj10LmdldEF0dHJpYnV0ZSgiaHJlZiIpO2U9biYmIiMiIT09bj9uLnRyaW0oKToiIn10cnl7cmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZSk/ZTpudWxsfWNhdGNoKHQpe3JldHVybiBudWxsfX0sZ2V0VHJhbnNpdGlvbkR1cmF0aW9uRnJvbUVsZW1lbnQ6ZnVuY3Rpb24odCl7aWYoIXQpcmV0dXJuIDA7dmFyIGU9bi5kZWZhdWx0KHQpLmNzcygidHJhbnNpdGlvbi1kdXJhdGlvbiIpLGk9bi5kZWZhdWx0KHQpLmNzcygidHJhbnNpdGlvbi1kZWxheSIpLHI9cGFyc2VGbG9hdChlKSxvPXBhcnNlRmxvYXQoaSk7cmV0dXJuIHJ8fG8/KGU9ZS5zcGxpdCgiLCIpWzBdLGk9aS5zcGxpdCgiLCIpWzBdLDFlMyoocGFyc2VGbG9hdChlKStwYXJzZUZsb2F0KGkpKSk6MH0scmVmbG93OmZ1bmN0aW9uKHQpe3JldHVybiB0Lm9mZnNldEhlaWdodH0sdHJpZ2dlclRyYW5zaXRpb25FbmQ6ZnVuY3Rpb24odCl7bi5kZWZhdWx0KHQpLnRyaWdnZXIoInRyYW5zaXRpb25lbmQiKX0sc3VwcG9ydHNUcmFuc2l0aW9uRW5kOmZ1bmN0aW9uKCl7cmV0dXJuIEJvb2xlYW4oInRyYW5zaXRpb25lbmQiKX0saXNFbGVtZW50OmZ1bmN0aW9uKHQpe3JldHVybih0WzBdfHx0KS5ub2RlVHlwZX0sdHlwZUNoZWNrQ29uZmlnOmZ1bmN0aW9uKHQsZSxuKXtmb3IodmFyIGkgaW4gbilpZihPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixpKSl7dmFyIHI9bltpXSxvPWVbaV0scz1vJiZhLmlzRWxlbWVudChvKT8iZWxlbWVudCI6bnVsbD09PShsPW8pfHx2b2lkIDA9PT1sPyIiK2w6e30udG9TdHJpbmcuY2FsbChsKS5tYXRjaCgvXHMoW2Etel0rKS9pKVsxXS50b0xvd2VyQ2FzZSgpO2lmKCFuZXcgUmVnRXhwKHIpLnRlc3QocykpdGhyb3cgbmV3IEVycm9yKHQudG9VcHBlckNhc2UoKSsnOiBPcHRpb24gIicraSsnIiBwcm92aWRlZCB0eXBlICInK3MrJyIgYnV0IGV4cGVjdGVkIHR5cGUgIicrcisnIi4nKX12YXIgbH0sZmluZFNoYWRvd1Jvb3Q6ZnVuY3Rpb24odCl7aWYoIWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hdHRhY2hTaGFkb3cpcmV0dXJuIG51bGw7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQuZ2V0Um9vdE5vZGUpe3ZhciBlPXQuZ2V0Um9vdE5vZGUoKTtyZXR1cm4gZSBpbnN0YW5jZW9mIFNoYWRvd1Jvb3Q/ZTpudWxsfXJldHVybiB0IGluc3RhbmNlb2YgU2hhZG93Um9vdD90OnQucGFyZW50Tm9kZT9hLmZpbmRTaGFkb3dSb290KHQucGFyZW50Tm9kZSk6bnVsbH0salF1ZXJ5RGV0ZWN0aW9uOmZ1bmN0aW9uKCl7aWYodm9pZCAwPT09bi5kZWZhdWx0KXRocm93IG5ldyBUeXBlRXJyb3IoIkJvb3RzdHJhcCdzIEphdmFTY3JpcHQgcmVxdWlyZXMgalF1ZXJ5LiBqUXVlcnkgbXVzdCBiZSBpbmNsdWRlZCBiZWZvcmUgQm9vdHN0cmFwJ3MgSmF2YVNjcmlwdC4iKTt2YXIgdD1uLmRlZmF1bHQuZm4uanF1ZXJ5LnNwbGl0KCIgIilbMF0uc3BsaXQoIi4iKTtpZih0WzBdPDImJnRbMV08OXx8MT09PXRbMF0mJjk9PT10WzFdJiZ0WzJdPDF8fHRbMF0+PTQpdGhyb3cgbmV3IEVycm9yKCJCb290c3RyYXAncyBKYXZhU2NyaXB0IHJlcXVpcmVzIGF0IGxlYXN0IGpRdWVyeSB2MS45LjEgYnV0IGxlc3MgdGhhbiB2NC4wLjAiKX19O2EualF1ZXJ5RGV0ZWN0aW9uKCksbi5kZWZhdWx0LmZuLmVtdWxhdGVUcmFuc2l0aW9uRW5kPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT0hMTtyZXR1cm4gbi5kZWZhdWx0KHRoaXMpLm9uZShhLlRSQU5TSVRJT05fRU5ELChmdW5jdGlvbigpe2k9ITB9KSksc2V0VGltZW91dCgoZnVuY3Rpb24oKXtpfHxhLnRyaWdnZXJUcmFuc2l0aW9uRW5kKGUpfSksdCksdGhpc30sbi5kZWZhdWx0LmV2ZW50LnNwZWNpYWxbYS5UUkFOU0lUSU9OX0VORF09e2JpbmRUeXBlOiJ0cmFuc2l0aW9uZW5kIixkZWxlZ2F0ZVR5cGU6InRyYW5zaXRpb25lbmQiLGhhbmRsZTpmdW5jdGlvbih0KXtpZihuLmRlZmF1bHQodC50YXJnZXQpLmlzKHRoaXMpKXJldHVybiB0LmhhbmRsZU9iai5oYW5kbGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19O3ZhciBzPSJhbGVydCIsbD1uLmRlZmF1bHQuZm5bc10sYz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5fZWxlbWVudD10fXZhciBlPXQucHJvdG90eXBlO3JldHVybiBlLmNsb3NlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2VsZW1lbnQ7dCYmKGU9dGhpcy5fZ2V0Um9vdEVsZW1lbnQodCkpLHRoaXMuX3RyaWdnZXJDbG9zZUV2ZW50KGUpLmlzRGVmYXVsdFByZXZlbnRlZCgpfHx0aGlzLl9yZW1vdmVFbGVtZW50KGUpfSxlLmRpc3Bvc2U9ZnVuY3Rpb24oKXtuLmRlZmF1bHQucmVtb3ZlRGF0YSh0aGlzLl9lbGVtZW50LCJicy5hbGVydCIpLHRoaXMuX2VsZW1lbnQ9bnVsbH0sZS5fZ2V0Um9vdEVsZW1lbnQ9ZnVuY3Rpb24odCl7dmFyIGU9YS5nZXRTZWxlY3RvckZyb21FbGVtZW50KHQpLGk9ITE7cmV0dXJuIGUmJihpPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZSkpLGl8fChpPW4uZGVmYXVsdCh0KS5jbG9zZXN0KCIuYWxlcnQiKVswXSksaX0sZS5fdHJpZ2dlckNsb3NlRXZlbnQ9ZnVuY3Rpb24odCl7dmFyIGU9bi5kZWZhdWx0LkV2ZW50KCJjbG9zZS5icy5hbGVydCIpO3JldHVybiBuLmRlZmF1bHQodCkudHJpZ2dlcihlKSxlfSxlLl9yZW1vdmVFbGVtZW50PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7aWYobi5kZWZhdWx0KHQpLnJlbW92ZUNsYXNzKCJzaG93Iiksbi5kZWZhdWx0KHQpLmhhc0NsYXNzKCJmYWRlIikpe3ZhciBpPWEuZ2V0VHJhbnNpdGlvbkR1cmF0aW9uRnJvbUVsZW1lbnQodCk7bi5kZWZhdWx0KHQpLm9uZShhLlRSQU5TSVRJT05fRU5ELChmdW5jdGlvbihuKXtyZXR1cm4gZS5fZGVzdHJveUVsZW1lbnQodCxuKX0pKS5lbXVsYXRlVHJhbnNpdGlvbkVuZChpKX1lbHNlIHRoaXMuX2Rlc3Ryb3lFbGVtZW50KHQpfSxlLl9kZXN0cm95RWxlbWVudD1mdW5jdGlvbih0KXtuLmRlZmF1bHQodCkuZGV0YWNoKCkudHJpZ2dlcigiY2xvc2VkLmJzLmFsZXJ0IikucmVtb3ZlKCl9LHQuX2pRdWVyeUludGVyZmFjZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpe3ZhciBpPW4uZGVmYXVsdCh0aGlzKSxyPWkuZGF0YSgiYnMuYWxlcnQiKTtyfHwocj1uZXcgdCh0aGlzKSxpLmRhdGEoImJzLmFsZXJ0IixyKSksImNsb3NlIj09PWUmJnJbZV0odGhpcyl9KSl9LHQuX2hhbmRsZURpc21pc3M9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2UmJmUucHJldmVudERlZmF1bHQoKSx0LmNsb3NlKHRoaXMpfX0scih0LG51bGwsW3trZXk6IlZFUlNJT04iLGdldDpmdW5jdGlvbigpe3JldHVybiI0LjYuMCJ9fV0pLHR9KCk7bi5kZWZhdWx0KGRvY3VtZW50KS5vbigiY2xpY2suYnMuYWxlcnQuZGF0YS1hcGkiLCdbZGF0YS1kaXNtaXNzPSJhbGVydCJdJyxjLl9oYW5kbGVEaXNtaXNzKG5ldyBjKSksbi5kZWZhdWx0LmZuW3NdPWMuX2pRdWVyeUludGVyZmFjZSxuLmRlZmF1bHQuZm5bc10uQ29uc3RydWN0b3I9YyxuLmRlZmF1bHQuZm5bc10ubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBuLmRlZmF1bHQuZm5bc109bCxjLl9qUXVlcnlJbnRlcmZhY2V9O3ZhciB1PW4uZGVmYXVsdC5mbi5idXR0b24sZD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5fZWxlbWVudD10LHRoaXMuc2hvdWxkQXZvaWRUcmlnZ2VyQ2hhbmdlPSExfXZhciBlPXQucHJvdG90eXBlO3JldHVybiBlLnRvZ2dsZT1mdW5jdGlvbigpe3ZhciB0PSEwLGU9ITAsaT1uLmRlZmF1bHQodGhpcy5fZWxlbWVudCkuY2xvc2VzdCgnW2RhdGEtdG9nZ2xlPSJidXR0b25zIl0nKVswXTtpZihpKXt2YXIgcj10aGlzLl9lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Om5vdChbdHlwZT0iaGlkZGVuIl0pJyk7aWYocil7aWYoInJhZGlvIj09PXIudHlwZSlpZihyLmNoZWNrZWQmJnRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJhY3RpdmUiKSl0PSExO2Vsc2V7dmFyIG89aS5xdWVyeVNlbGVjdG9yKCIuYWN0aXZlIik7byYmbi5kZWZhdWx0KG8pLnJlbW92ZUNsYXNzKCJhY3RpdmUiKX10JiYoImNoZWNrYm94IiE9PXIudHlwZSYmInJhZGlvIiE9PXIudHlwZXx8KHIuY2hlY2tlZD0hdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoImFjdGl2ZSIpKSx0aGlzLnNob3VsZEF2b2lkVHJpZ2dlckNoYW5nZXx8bi5kZWZhdWx0KHIpLnRyaWdnZXIoImNoYW5nZSIpKSxyLmZvY3VzKCksZT0hMX19dGhpcy5fZWxlbWVudC5oYXNBdHRyaWJ1dGUoImRpc2FibGVkIil8fHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJkaXNhYmxlZCIpfHwoZSYmdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtcHJlc3NlZCIsIXRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJhY3RpdmUiKSksdCYmbi5kZWZhdWx0KHRoaXMuX2VsZW1lbnQpLnRvZ2dsZUNsYXNzKCJhY3RpdmUiKSl9LGUuZGlzcG9zZT1mdW5jdGlvbigpe24uZGVmYXVsdC5yZW1vdmVEYXRhKHRoaXMuX2VsZW1lbnQsImJzLmJ1dHRvbiIpLHRoaXMuX2VsZW1lbnQ9bnVsbH0sdC5falF1ZXJ5SW50ZXJmYWNlPWZ1bmN0aW9uKGUsaSl7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXt2YXIgcj1uLmRlZmF1bHQodGhpcyksbz1yLmRhdGEoImJzLmJ1dHRvbiIpO298fChvPW5ldyB0KHRoaXMpLHIuZGF0YSgiYnMuYnV0dG9uIixvKSksby5zaG91bGRBdm9pZFRyaWdnZXJDaGFuZ2U9aSwidG9nZ2xlIj09PWUmJm9bZV0oKX0pKX0scih0LG51bGwsW3trZXk6IlZFUlNJT04iLGdldDpmdW5jdGlvbigpe3JldHVybiI0LjYuMCJ9fV0pLHR9KCk7bi5kZWZhdWx0KGRvY3VtZW50KS5vbigiY2xpY2suYnMuYnV0dG9uLmRhdGEtYXBpIiwnW2RhdGEtdG9nZ2xlXj0iYnV0dG9uIl0nLChmdW5jdGlvbih0KXt2YXIgZT10LnRhcmdldCxpPWU7aWYobi5kZWZhdWx0KGUpLmhhc0NsYXNzKCJidG4iKXx8KGU9bi5kZWZhdWx0KGUpLmNsb3Nlc3QoIi5idG4iKVswXSksIWV8fGUuaGFzQXR0cmlidXRlKCJkaXNhYmxlZCIpfHxlLmNsYXNzTGlzdC5jb250YWlucygiZGlzYWJsZWQiKSl0LnByZXZlbnREZWZhdWx0KCk7ZWxzZXt2YXIgcj1lLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Om5vdChbdHlwZT0iaGlkZGVuIl0pJyk7aWYociYmKHIuaGFzQXR0cmlidXRlKCJkaXNhYmxlZCIpfHxyLmNsYXNzTGlzdC5jb250YWlucygiZGlzYWJsZWQiKSkpcmV0dXJuIHZvaWQgdC5wcmV2ZW50RGVmYXVsdCgpOyJJTlBVVCIhPT1pLnRhZ05hbWUmJiJMQUJFTCI9PT1lLnRhZ05hbWV8fGQuX2pRdWVyeUludGVyZmFjZS5jYWxsKG4uZGVmYXVsdChlKSwidG9nZ2xlIiwiSU5QVVQiPT09aS50YWdOYW1lKX19KSkub24oImZvY3VzLmJzLmJ1dHRvbi5kYXRhLWFwaSBibHVyLmJzLmJ1dHRvbi5kYXRhLWFwaSIsJ1tkYXRhLXRvZ2dsZV49ImJ1dHRvbiJdJywoZnVuY3Rpb24odCl7dmFyIGU9bi5kZWZhdWx0KHQudGFyZ2V0KS5jbG9zZXN0KCIuYnRuIilbMF07bi5kZWZhdWx0KGUpLnRvZ2dsZUNsYXNzKCJmb2N1cyIsL15mb2N1cyhpbik/JC8udGVzdCh0LnR5cGUpKX0pKSxuLmRlZmF1bHQod2luZG93KS5vbigibG9hZC5icy5idXR0b24uZGF0YS1hcGkiLChmdW5jdGlvbigpe2Zvcih2YXIgdD1bXS5zbGljZS5jYWxsKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXRvZ2dsZT0iYnV0dG9ucyJdIC5idG4nKSksZT0wLG49dC5sZW5ndGg7ZTxuO2UrKyl7dmFyIGk9dFtlXSxyPWkucXVlcnlTZWxlY3RvcignaW5wdXQ6bm90KFt0eXBlPSJoaWRkZW4iXSknKTtyLmNoZWNrZWR8fHIuaGFzQXR0cmlidXRlKCJjaGVja2VkIik/aS5jbGFzc0xpc3QuYWRkKCJhY3RpdmUiKTppLmNsYXNzTGlzdC5yZW1vdmUoImFjdGl2ZSIpfWZvcih2YXIgbz0wLGE9KHQ9W10uc2xpY2UuY2FsbChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS10b2dnbGU9ImJ1dHRvbiJdJykpKS5sZW5ndGg7bzxhO28rKyl7dmFyIHM9dFtvXTsidHJ1ZSI9PT1zLmdldEF0dHJpYnV0ZSgiYXJpYS1wcmVzc2VkIik/cy5jbGFzc0xpc3QuYWRkKCJhY3RpdmUiKTpzLmNsYXNzTGlzdC5yZW1vdmUoImFjdGl2ZSIpfX0pKSxuLmRlZmF1bHQuZm4uYnV0dG9uPWQuX2pRdWVyeUludGVyZmFjZSxuLmRlZmF1bHQuZm4uYnV0dG9uLkNvbnN0cnVjdG9yPWQsbi5kZWZhdWx0LmZuLmJ1dHRvbi5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIG4uZGVmYXVsdC5mbi5idXR0b249dSxkLl9qUXVlcnlJbnRlcmZhY2V9O3ZhciBoPSJjYXJvdXNlbCIsZj1uLmRlZmF1bHQuZm5baF0scD17aW50ZXJ2YWw6NWUzLGtleWJvYXJkOiEwLHNsaWRlOiExLHBhdXNlOiJob3ZlciIsd3JhcDohMCx0b3VjaDohMH0sZz17aW50ZXJ2YWw6IihudW1iZXJ8Ym9vbGVhbikiLGtleWJvYXJkOiJib29sZWFuIixzbGlkZToiKGJvb2xlYW58c3RyaW5nKSIscGF1c2U6IihzdHJpbmd8Ym9vbGVhbikiLHdyYXA6ImJvb2xlYW4iLHRvdWNoOiJib29sZWFuIn0sbT17VE9VQ0g6InRvdWNoIixQRU46InBlbiJ9LHY9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dGhpcy5faXRlbXM9bnVsbCx0aGlzLl9pbnRlcnZhbD1udWxsLHRoaXMuX2FjdGl2ZUVsZW1lbnQ9bnVsbCx0aGlzLl9pc1BhdXNlZD0hMSx0aGlzLl9pc1NsaWRpbmc9ITEsdGhpcy50b3VjaFRpbWVvdXQ9bnVsbCx0aGlzLnRvdWNoU3RhcnRYPTAsdGhpcy50b3VjaERlbHRhWD0wLHRoaXMuX2NvbmZpZz10aGlzLl9nZXRDb25maWcoZSksdGhpcy5fZWxlbWVudD10LHRoaXMuX2luZGljYXRvcnNFbGVtZW50PXRoaXMuX2VsZW1lbnQucXVlcnlTZWxlY3RvcigiLmNhcm91c2VsLWluZGljYXRvcnMiKSx0aGlzLl90b3VjaFN1cHBvcnRlZD0ib250b3VjaHN0YXJ0ImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudHx8bmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzPjAsdGhpcy5fcG9pbnRlckV2ZW50PUJvb2xlYW4od2luZG93LlBvaW50ZXJFdmVudHx8d2luZG93Lk1TUG9pbnRlckV2ZW50KSx0aGlzLl9hZGRFdmVudExpc3RlbmVycygpfXZhciBlPXQucHJvdG90eXBlO3JldHVybiBlLm5leHQ9ZnVuY3Rpb24oKXt0aGlzLl9pc1NsaWRpbmd8fHRoaXMuX3NsaWRlKCJuZXh0Iil9LGUubmV4dFdoZW5WaXNpYmxlPWZ1bmN0aW9uKCl7dmFyIHQ9bi5kZWZhdWx0KHRoaXMuX2VsZW1lbnQpOyFkb2N1bWVudC5oaWRkZW4mJnQuaXMoIjp2aXNpYmxlIikmJiJoaWRkZW4iIT09dC5jc3MoInZpc2liaWxpdHkiKSYmdGhpcy5uZXh0KCl9LGUucHJldj1mdW5jdGlvbigpe3RoaXMuX2lzU2xpZGluZ3x8dGhpcy5fc2xpZGUoInByZXYiKX0sZS5wYXVzZT1mdW5jdGlvbih0KXt0fHwodGhpcy5faXNQYXVzZWQ9ITApLHRoaXMuX2VsZW1lbnQucXVlcnlTZWxlY3RvcigiLmNhcm91c2VsLWl0ZW0tbmV4dCwgLmNhcm91c2VsLWl0ZW0tcHJldiIpJiYoYS50cmlnZ2VyVHJhbnNpdGlvbkVuZCh0aGlzLl9lbGVtZW50KSx0aGlzLmN5Y2xlKCEwKSksY2xlYXJJbnRlcnZhbCh0aGlzLl9pbnRlcnZhbCksdGhpcy5faW50ZXJ2YWw9bnVsbH0sZS5jeWNsZT1mdW5jdGlvbih0KXt0fHwodGhpcy5faXNQYXVzZWQ9ITEpLHRoaXMuX2ludGVydmFsJiYoY2xlYXJJbnRlcnZhbCh0aGlzLl9pbnRlcnZhbCksdGhpcy5faW50ZXJ2YWw9bnVsbCksdGhpcy5fY29uZmlnLmludGVydmFsJiYhdGhpcy5faXNQYXVzZWQmJih0aGlzLl91cGRhdGVJbnRlcnZhbCgpLHRoaXMuX2ludGVydmFsPXNldEludGVydmFsKChkb2N1bWVudC52aXNpYmlsaXR5U3RhdGU/dGhpcy5uZXh0V2hlblZpc2libGU6dGhpcy5uZXh0KS5iaW5kKHRoaXMpLHRoaXMuX2NvbmZpZy5pbnRlcnZhbCkpfSxlLnRvPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy5fYWN0aXZlRWxlbWVudD10aGlzLl9lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoIi5hY3RpdmUuY2Fyb3VzZWwtaXRlbSIpO3ZhciBpPXRoaXMuX2dldEl0ZW1JbmRleCh0aGlzLl9hY3RpdmVFbGVtZW50KTtpZighKHQ+dGhpcy5faXRlbXMubGVuZ3RoLTF8fHQ8MCkpaWYodGhpcy5faXNTbGlkaW5nKW4uZGVmYXVsdCh0aGlzLl9lbGVtZW50KS5vbmUoInNsaWQuYnMuY2Fyb3VzZWwiLChmdW5jdGlvbigpe3JldHVybiBlLnRvKHQpfSkpO2Vsc2V7aWYoaT09PXQpcmV0dXJuIHRoaXMucGF1c2UoKSx2b2lkIHRoaXMuY3ljbGUoKTt2YXIgcj10Pmk/Im5leHQiOiJwcmV2Ijt0aGlzLl9zbGlkZShyLHRoaXMuX2l0ZW1zW3RdKX19LGUuZGlzcG9zZT1mdW5jdGlvbigpe24uZGVmYXVsdCh0aGlzLl9lbGVtZW50KS5vZmYoIi5icy5jYXJvdXNlbCIpLG4uZGVmYXVsdC5yZW1vdmVEYXRhKHRoaXMuX2VsZW1lbnQsImJzLmNhcm91c2VsIiksdGhpcy5faXRlbXM9bnVsbCx0aGlzLl9jb25maWc9bnVsbCx0aGlzLl9lbGVtZW50PW51bGwsdGhpcy5faW50ZXJ2YWw9bnVsbCx0aGlzLl9pc1BhdXNlZD1udWxsLHRoaXMuX2lzU2xpZGluZz1udWxsLHRoaXMuX2FjdGl2ZUVsZW1lbnQ9bnVsbCx0aGlzLl9pbmRpY2F0b3JzRWxlbWVudD1udWxsfSxlLl9nZXRDb25maWc9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9byh7fSxwLHQpLGEudHlwZUNoZWNrQ29uZmlnKGgsdCxnKSx0fSxlLl9oYW5kbGVTd2lwZT1mdW5jdGlvbigpe3ZhciB0PU1hdGguYWJzKHRoaXMudG91Y2hEZWx0YVgpO2lmKCEodDw9NDApKXt2YXIgZT10L3RoaXMudG91Y2hEZWx0YVg7dGhpcy50b3VjaERlbHRhWD0wLGU+MCYmdGhpcy5wcmV2KCksZTwwJiZ0aGlzLm5leHQoKX19LGUuX2FkZEV2ZW50TGlzdGVuZXJzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLl9jb25maWcua2V5Ym9hcmQmJm4uZGVmYXVsdCh0aGlzLl9lbGVtZW50KS5vbigia2V5ZG93bi5icy5jYXJvdXNlbCIsKGZ1bmN0aW9uKGUpe3JldHVybiB0Ll9rZXlkb3duKGUpfSkpLCJob3ZlciI9PT10aGlzLl9jb25maWcucGF1c2UmJm4uZGVmYXVsdCh0aGlzLl9lbGVtZW50KS5vbigibW91c2VlbnRlci5icy5jYXJvdXNlbCIsKGZ1bmN0aW9uKGUpe3JldHVybiB0LnBhdXNlKGUpfSkpLm9uKCJtb3VzZWxlYXZlLmJzLmNhcm91c2VsIiwoZnVuY3Rpb24oZSl7cmV0dXJuIHQuY3ljbGUoZSl9KSksdGhpcy5fY29uZmlnLnRvdWNoJiZ0aGlzLl9hZGRUb3VjaEV2ZW50TGlzdGVuZXJzKCl9LGUuX2FkZFRvdWNoRXZlbnRMaXN0ZW5lcnM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO2lmKHRoaXMuX3RvdWNoU3VwcG9ydGVkKXt2YXIgZT1mdW5jdGlvbihlKXt0Ll9wb2ludGVyRXZlbnQmJm1bZS5vcmlnaW5hbEV2ZW50LnBvaW50ZXJUeXBlLnRvVXBwZXJDYXNlKCldP3QudG91Y2hTdGFydFg9ZS5vcmlnaW5hbEV2ZW50LmNsaWVudFg6dC5fcG9pbnRlckV2ZW50fHwodC50b3VjaFN0YXJ0WD1lLm9yaWdpbmFsRXZlbnQudG91Y2hlc1swXS5jbGllbnRYKX0saT1mdW5jdGlvbihlKXt0Ll9wb2ludGVyRXZlbnQmJm1bZS5vcmlnaW5hbEV2ZW50LnBvaW50ZXJUeXBlLnRvVXBwZXJDYXNlKCldJiYodC50b3VjaERlbHRhWD1lLm9yaWdpbmFsRXZlbnQuY2xpZW50WC10LnRvdWNoU3RhcnRYKSx0Ll9oYW5kbGVTd2lwZSgpLCJob3ZlciI9PT10Ll9jb25maWcucGF1c2UmJih0LnBhdXNlKCksdC50b3VjaFRpbWVvdXQmJmNsZWFyVGltZW91dCh0LnRvdWNoVGltZW91dCksdC50b3VjaFRpbWVvdXQ9c2V0VGltZW91dCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQuY3ljbGUoZSl9KSw1MDArdC5fY29uZmlnLmludGVydmFsKSl9O24uZGVmYXVsdCh0aGlzLl9lbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5jYXJvdXNlbC1pdGVtIGltZyIpKS5vbigiZHJhZ3N0YXJ0LmJzLmNhcm91c2VsIiwoZnVuY3Rpb24odCl7cmV0dXJuIHQucHJldmVudERlZmF1bHQoKX0pKSx0aGlzLl9wb2ludGVyRXZlbnQ/KG4uZGVmYXVsdCh0aGlzLl9lbGVtZW50KS5vbigicG9pbnRlcmRvd24uYnMuY2Fyb3VzZWwiLChmdW5jdGlvbih0KXtyZXR1cm4gZSh0KX0pKSxuLmRlZmF1bHQodGhpcy5fZWxlbWVudCkub24oInBvaW50ZXJ1cC5icy5jYXJvdXNlbCIsKGZ1bmN0aW9uKHQpe3JldHVybiBpKHQpfSkpLHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgicG9pbnRlci1ldmVudCIpKToobi5kZWZhdWx0KHRoaXMuX2VsZW1lbnQpLm9uKCJ0b3VjaHN0YXJ0LmJzLmNhcm91c2VsIiwoZnVuY3Rpb24odCl7cmV0dXJuIGUodCl9KSksbi5kZWZhdWx0KHRoaXMuX2VsZW1lbnQpLm9uKCJ0b3VjaG1vdmUuYnMuY2Fyb3VzZWwiLChmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oZSl7ZS5vcmlnaW5hbEV2ZW50LnRvdWNoZXMmJmUub3JpZ2luYWxFdmVudC50b3VjaGVzLmxlbmd0aD4xP3QudG91Y2hEZWx0YVg9MDp0LnRvdWNoRGVsdGFYPWUub3JpZ2luYWxFdmVudC50b3VjaGVzWzBdLmNsaWVudFgtdC50b3VjaFN0YXJ0WH0oZSl9KSksbi5kZWZhdWx0KHRoaXMuX2VsZW1lbnQpLm9uKCJ0b3VjaGVuZC5icy5jYXJvdXNlbCIsKGZ1bmN0aW9uKHQpe3JldHVybiBpKHQpfSkpKX19LGUuX2tleWRvd249ZnVuY3Rpb24odCl7aWYoIS9pbnB1dHx0ZXh0YXJlYS9pLnRlc3QodC50YXJnZXQudGFnTmFtZSkpc3dpdGNoKHQud2hpY2gpe2Nhc2UgMzc6dC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMucHJldigpO2JyZWFrO2Nhc2UgMzk6dC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMubmV4dCgpfX0sZS5fZ2V0SXRlbUluZGV4PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9pdGVtcz10JiZ0LnBhcmVudE5vZGU/W10uc2xpY2UuY2FsbCh0LnBhcmVudE5vZGUucXVlcnlTZWxlY3RvckFsbCgiLmNhcm91c2VsLWl0ZW0iKSk6W10sdGhpcy5faXRlbXMuaW5kZXhPZih0KX0sZS5fZ2V0SXRlbUJ5RGlyZWN0aW9uPWZ1bmN0aW9uKHQsZSl7dmFyIG49Im5leHQiPT09dCxpPSJwcmV2Ij09PXQscj10aGlzLl9nZXRJdGVtSW5kZXgoZSksbz10aGlzLl9pdGVtcy5sZW5ndGgtMTtpZigoaSYmMD09PXJ8fG4mJnI9PT1vKSYmIXRoaXMuX2NvbmZpZy53cmFwKXJldHVybiBlO3ZhciBhPShyKygicHJldiI9PT10Py0xOjEpKSV0aGlzLl9pdGVtcy5sZW5ndGg7cmV0dXJuLTE9PT1hP3RoaXMuX2l0ZW1zW3RoaXMuX2l0ZW1zLmxlbmd0aC0xXTp0aGlzLl9pdGVtc1thXX0sZS5fdHJpZ2dlclNsaWRlRXZlbnQ9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLl9nZXRJdGVtSW5kZXgodCkscj10aGlzLl9nZXRJdGVtSW5kZXgodGhpcy5fZWxlbWVudC5xdWVyeVNlbGVjdG9yKCIuYWN0aXZlLmNhcm91c2VsLWl0ZW0iKSksbz1uLmRlZmF1bHQuRXZlbnQoInNsaWRlLmJzLmNhcm91c2VsIix7cmVsYXRlZFRhcmdldDp0LGRpcmVjdGlvbjplLGZyb206cix0bzppfSk7cmV0dXJuIG4uZGVmYXVsdCh0aGlzLl9lbGVtZW50KS50cmlnZ2VyKG8pLG99LGUuX3NldEFjdGl2ZUluZGljYXRvckVsZW1lbnQ9ZnVuY3Rpb24odCl7aWYodGhpcy5faW5kaWNhdG9yc0VsZW1lbnQpe3ZhciBlPVtdLnNsaWNlLmNhbGwodGhpcy5faW5kaWNhdG9yc0VsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmFjdGl2ZSIpKTtuLmRlZmF1bHQoZSkucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpO3ZhciBpPXRoaXMuX2luZGljYXRvcnNFbGVtZW50LmNoaWxkcmVuW3RoaXMuX2dldEl0ZW1JbmRleCh0KV07aSYmbi5kZWZhdWx0KGkpLmFkZENsYXNzKCJhY3RpdmUiKX19LGUuX3VwZGF0ZUludGVydmFsPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fYWN0aXZlRWxlbWVudHx8dGhpcy5fZWxlbWVudC5xdWVyeVNlbGVjdG9yKCIuYWN0aXZlLmNhcm91c2VsLWl0ZW0iKTtpZih0KXt2YXIgZT1wYXJzZUludCh0LmdldEF0dHJpYnV0ZSgiZGF0YS1pbnRlcnZhbCIpLDEwKTtlPyh0aGlzLl9jb25maWcuZGVmYXVsdEludGVydmFsPXRoaXMuX2NvbmZpZy5kZWZhdWx0SW50ZXJ2YWx8fHRoaXMuX2NvbmZpZy5pbnRlcnZhbCx0aGlzLl9jb25maWcuaW50ZXJ2YWw9ZSk6dGhpcy5fY29uZmlnLmludGVydmFsPXRoaXMuX2NvbmZpZy5kZWZhdWx0SW50ZXJ2YWx8fHRoaXMuX2NvbmZpZy5pbnRlcnZhbH19LGUuX3NsaWRlPWZ1bmN0aW9uKHQsZSl7dmFyIGkscixvLHM9dGhpcyxsPXRoaXMuX2VsZW1lbnQucXVlcnlTZWxlY3RvcigiLmFjdGl2ZS5jYXJvdXNlbC1pdGVtIiksYz10aGlzLl9nZXRJdGVtSW5kZXgobCksdT1lfHxsJiZ0aGlzLl9nZXRJdGVtQnlEaXJlY3Rpb24odCxsKSxkPXRoaXMuX2dldEl0ZW1JbmRleCh1KSxoPUJvb2xlYW4odGhpcy5faW50ZXJ2YWwpO2lmKCJuZXh0Ij09PXQ/KGk9ImNhcm91c2VsLWl0ZW0tbGVmdCIscj0iY2Fyb3VzZWwtaXRlbS1uZXh0IixvPSJsZWZ0Iik6KGk9ImNhcm91c2VsLWl0ZW0tcmlnaHQiLHI9ImNhcm91c2VsLWl0ZW0tcHJldiIsbz0icmlnaHQiKSx1JiZuLmRlZmF1bHQodSkuaGFzQ2xhc3MoImFjdGl2ZSIpKXRoaXMuX2lzU2xpZGluZz0hMTtlbHNlIGlmKCF0aGlzLl90cmlnZ2VyU2xpZGVFdmVudCh1LG8pLmlzRGVmYXVsdFByZXZlbnRlZCgpJiZsJiZ1KXt0aGlzLl9pc1NsaWRpbmc9ITAsaCYmdGhpcy5wYXVzZSgpLHRoaXMuX3NldEFjdGl2ZUluZGljYXRvckVsZW1lbnQodSksdGhpcy5fYWN0aXZlRWxlbWVudD11O3ZhciBmPW4uZGVmYXVsdC5FdmVudCgic2xpZC5icy5jYXJvdXNlbCIse3JlbGF0ZWRUYXJnZXQ6dSxkaXJlY3Rpb246byxmcm9tOmMsdG86ZH0pO2lmKG4uZGVmYXVsdCh0aGlzLl9lbGVtZW50KS5oYXNDbGFzcygic2xpZGUiKSl7bi5kZWZhdWx0KHUpLmFkZENsYXNzKHIpLGEucmVmbG93KHUpLG4uZGVmYXVsdChsKS5hZGRDbGFzcyhpKSxuLmRlZmF1bHQodSkuYWRkQ2xhc3MoaSk7dmFyIHA9YS5nZXRUcmFuc2l0aW9uRHVyYXRpb25Gcm9tRWxlbWVudChsKTtuLmRlZmF1bHQobCkub25lKGEuVFJBTlNJVElPTl9FTkQsKGZ1bmN0aW9uKCl7bi5kZWZhdWx0KHUpLnJlbW92ZUNsYXNzKGkrIiAiK3IpLmFkZENsYXNzKCJhY3RpdmUiKSxuLmRlZmF1bHQobCkucmVtb3ZlQ2xhc3MoImFjdGl2ZSAiK3IrIiAiK2kpLHMuX2lzU2xpZGluZz0hMSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiBuLmRlZmF1bHQocy5fZWxlbWVudCkudHJpZ2dlcihmKX0pLDApfSkpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKHApfWVsc2Ugbi5kZWZhdWx0KGwpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKSxuLmRlZmF1bHQodSkuYWRkQ2xhc3MoImFjdGl2ZSIpLHRoaXMuX2lzU2xpZGluZz0hMSxuLmRlZmF1bHQodGhpcy5fZWxlbWVudCkudHJpZ2dlcihmKTtoJiZ0aGlzLmN5Y2xlKCl9fSx0Ll9qUXVlcnlJbnRlcmZhY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXt2YXIgaT1uLmRlZmF1bHQodGhpcykuZGF0YSgiYnMuY2Fyb3VzZWwiKSxyPW8oe30scCxuLmRlZmF1bHQodGhpcykuZGF0YSgpKTsib2JqZWN0Ij09dHlwZW9mIGUmJihyPW8oe30scixlKSk7dmFyIGE9InN0cmluZyI9PXR5cGVvZiBlP2U6ci5zbGlkZTtpZihpfHwoaT1uZXcgdCh0aGlzLHIpLG4uZGVmYXVsdCh0aGlzKS5kYXRhKCJicy5jYXJvdXNlbCIsaSkpLCJudW1iZXIiPT10eXBlb2YgZSlpLnRvKGUpO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBhKXtpZih2b2lkIDA9PT1pW2FdKXRocm93IG5ldyBUeXBlRXJyb3IoJ05vIG1ldGhvZCBuYW1lZCAiJythKyciJyk7aVthXSgpfWVsc2Ugci5pbnRlcnZhbCYmci5yaWRlJiYoaS5wYXVzZSgpLGkuY3ljbGUoKSl9KSl9LHQuX2RhdGFBcGlDbGlja0hhbmRsZXI9ZnVuY3Rpb24oZSl7dmFyIGk9YS5nZXRTZWxlY3RvckZyb21FbGVtZW50KHRoaXMpO2lmKGkpe3ZhciByPW4uZGVmYXVsdChpKVswXTtpZihyJiZuLmRlZmF1bHQocikuaGFzQ2xhc3MoImNhcm91c2VsIikpe3ZhciBzPW8oe30sbi5kZWZhdWx0KHIpLmRhdGEoKSxuLmRlZmF1bHQodGhpcykuZGF0YSgpKSxsPXRoaXMuZ2V0QXR0cmlidXRlKCJkYXRhLXNsaWRlLXRvIik7bCYmKHMuaW50ZXJ2YWw9ITEpLHQuX2pRdWVyeUludGVyZmFjZS5jYWxsKG4uZGVmYXVsdChyKSxzKSxsJiZuLmRlZmF1bHQocikuZGF0YSgiYnMuY2Fyb3VzZWwiKS50byhsKSxlLnByZXZlbnREZWZhdWx0KCl9fX0scih0LG51bGwsW3trZXk6IlZFUlNJT04iLGdldDpmdW5jdGlvbigpe3JldHVybiI0LjYuMCJ9fSx7a2V5OiJEZWZhdWx0IixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcH19XSksdH0oKTtuLmRlZmF1bHQoZG9jdW1lbnQpLm9uKCJjbGljay5icy5jYXJvdXNlbC5kYXRhLWFwaSIsIltkYXRhLXNsaWRlXSwgW2RhdGEtc2xpZGUtdG9dIix2Ll9kYXRhQXBpQ2xpY2tIYW5kbGVyKSxuLmRlZmF1bHQod2luZG93KS5vbigibG9hZC5icy5jYXJvdXNlbC5kYXRhLWFwaSIsKGZ1bmN0aW9uKCl7Zm9yKHZhciB0PVtdLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtcmlkZT0iY2Fyb3VzZWwiXScpKSxlPTAsaT10Lmxlbmd0aDtlPGk7ZSsrKXt2YXIgcj1uLmRlZmF1bHQodFtlXSk7di5falF1ZXJ5SW50ZXJmYWNlLmNhbGwocixyLmRhdGEoKSl9fSkpLG4uZGVmYXVsdC5mbltoXT12Ll9qUXVlcnlJbnRlcmZhY2Usbi5kZWZhdWx0LmZuW2hdLkNvbnN0cnVjdG9yPXYsbi5kZWZhdWx0LmZuW2hdLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gbi5kZWZhdWx0LmZuW2hdPWYsdi5falF1ZXJ5SW50ZXJmYWNlfTt2YXIgeT0iY29sbGFwc2UiLGI9bi5kZWZhdWx0LmZuW3ldLHc9e3RvZ2dsZTohMCxwYXJlbnQ6IiJ9LHg9e3RvZ2dsZToiYm9vbGVhbiIscGFyZW50OiIoc3RyaW5nfGVsZW1lbnQpIn0sXz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLl9pc1RyYW5zaXRpb25pbmc9ITEsdGhpcy5fZWxlbWVudD10LHRoaXMuX2NvbmZpZz10aGlzLl9nZXRDb25maWcoZSksdGhpcy5fdHJpZ2dlckFycmF5PVtdLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtdG9nZ2xlPSJjb2xsYXBzZSJdW2hyZWY9IiMnK3QuaWQrJyJdLFtkYXRhLXRvZ2dsZT0iY29sbGFwc2UiXVtkYXRhLXRhcmdldD0iIycrdC5pZCsnIl0nKSk7Zm9yKHZhciBuPVtdLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtdG9nZ2xlPSJjb2xsYXBzZSJdJykpLGk9MCxyPW4ubGVuZ3RoO2k8cjtpKyspe3ZhciBvPW5baV0scz1hLmdldFNlbGVjdG9yRnJvbUVsZW1lbnQobyksbD1bXS5zbGljZS5jYWxsKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwocykpLmZpbHRlcigoZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT10fSkpO251bGwhPT1zJiZsLmxlbmd0aD4wJiYodGhpcy5fc2VsZWN0b3I9cyx0aGlzLl90cmlnZ2VyQXJyYXkucHVzaChvKSl9dGhpcy5fcGFyZW50PXRoaXMuX2NvbmZpZy5wYXJlbnQ/dGhpcy5fZ2V0UGFyZW50KCk6bnVsbCx0aGlzLl9jb25maWcucGFyZW50fHx0aGlzLl9hZGRBcmlhQW5kQ29sbGFwc2VkQ2xhc3ModGhpcy5fZWxlbWVudCx0aGlzLl90cmlnZ2VyQXJyYXkpLHRoaXMuX2NvbmZpZy50b2dnbGUmJnRoaXMudG9nZ2xlKCl9dmFyIGU9dC5wcm90b3R5cGU7cmV0dXJuIGUudG9nZ2xlPWZ1bmN0aW9uKCl7bi5kZWZhdWx0KHRoaXMuX2VsZW1lbnQpLmhhc0NsYXNzKCJzaG93Iik/dGhpcy5oaWRlKCk6dGhpcy5zaG93KCl9LGUuc2hvdz1mdW5jdGlvbigpe3ZhciBlLGkscj10aGlzO2lmKCEodGhpcy5faXNUcmFuc2l0aW9uaW5nfHxuLmRlZmF1bHQodGhpcy5fZWxlbWVudCkuaGFzQ2xhc3MoInNob3ciKXx8KHRoaXMuX3BhcmVudCYmMD09PShlPVtdLnNsaWNlLmNhbGwodGhpcy5fcGFyZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5zaG93LCAuY29sbGFwc2luZyIpKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2Ygci5fY29uZmlnLnBhcmVudD90LmdldEF0dHJpYnV0ZSgiZGF0YS1wYXJlbnQiKT09PXIuX2NvbmZpZy5wYXJlbnQ6dC5jbGFzc0xpc3QuY29udGFpbnMoImNvbGxhcHNlIil9KSkpLmxlbmd0aCYmKGU9bnVsbCksZSYmKGk9bi5kZWZhdWx0KGUpLm5vdCh0aGlzLl9zZWxlY3RvcikuZGF0YSgiYnMuY29sbGFwc2UiKSkmJmkuX2lzVHJhbnNpdGlvbmluZykpKXt2YXIgbz1uLmRlZmF1bHQuRXZlbnQoInNob3cuYnMuY29sbGFwc2UiKTtpZihuLmRlZmF1bHQodGhpcy5fZWxlbWVudCkudHJpZ2dlcihvKSwhby5pc0RlZmF1bHRQcmV2ZW50ZWQoKSl7ZSYmKHQuX2pRdWVyeUludGVyZmFjZS5jYWxsKG4uZGVmYXVsdChlKS5ub3QodGhpcy5fc2VsZWN0b3IpLCJoaWRlIiksaXx8bi5kZWZhdWx0KGUpLmRhdGEoImJzLmNvbGxhcHNlIixudWxsKSk7dmFyIHM9dGhpcy5fZ2V0RGltZW5zaW9uKCk7bi5kZWZhdWx0KHRoaXMuX2VsZW1lbnQpLnJlbW92ZUNsYXNzKCJjb2xsYXBzZSIpLmFkZENsYXNzKCJjb2xsYXBzaW5nIiksdGhpcy5fZWxlbWVudC5zdHlsZVtzXT0wLHRoaXMuX3RyaWdnZXJBcnJheS5sZW5ndGgmJm4uZGVmYXVsdCh0aGlzLl90cmlnZ2VyQXJyYXkpLnJlbW92ZUNsYXNzKCJjb2xsYXBzZWQiKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwhMCksdGhpcy5zZXRUcmFuc2l0aW9uaW5nKCEwKTt2YXIgbD0ic2Nyb2xsIisoc1swXS50b1VwcGVyQ2FzZSgpK3Muc2xpY2UoMSkpLGM9YS5nZXRUcmFuc2l0aW9uRHVyYXRpb25Gcm9tRWxlbWVudCh0aGlzLl9lbGVtZW50KTtuLmRlZmF1bHQodGhpcy5fZWxlbWVudCkub25lKGEuVFJBTlNJVElPTl9FTkQsKGZ1bmN0aW9uKCl7bi5kZWZhdWx0KHIuX2VsZW1lbnQpLnJlbW92ZUNsYXNzKCJjb2xsYXBzaW5nIikuYWRkQ2xhc3MoImNvbGxhcHNlIHNob3ciKSxyLl9lbGVtZW50LnN0eWxlW3NdPSIiLHIuc2V0VHJhbnNpdGlvbmluZyghMSksbi5kZWZhdWx0KHIuX2VsZW1lbnQpLnRyaWdnZXIoInNob3duLmJzLmNvbGxhcHNlIil9KSkuZW11bGF0ZVRyYW5zaXRpb25FbmQoYyksdGhpcy5fZWxlbWVudC5zdHlsZVtzXT10aGlzLl9lbGVtZW50W2xdKyJweCJ9fX0sZS5oaWRlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztpZighdGhpcy5faXNUcmFuc2l0aW9uaW5nJiZuLmRlZmF1bHQodGhpcy5fZWxlbWVudCkuaGFzQ2xhc3MoInNob3ciKSl7dmFyIGU9bi5kZWZhdWx0LkV2ZW50KCJoaWRlLmJzLmNvbGxhcHNlIik7aWYobi5kZWZhdWx0KHRoaXMuX2VsZW1lbnQpLnRyaWdnZXIoZSksIWUuaXNEZWZhdWx0UHJldmVudGVkKCkpe3ZhciBpPXRoaXMuX2dldERpbWVuc2lvbigpO3RoaXMuX2VsZW1lbnQuc3R5bGVbaV09dGhpcy5fZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVtpXSsicHgiLGEucmVmbG93KHRoaXMuX2VsZW1lbnQpLG4uZGVmYXVsdCh0aGlzLl9lbGVtZW50KS5hZGRDbGFzcygiY29sbGFwc2luZyIpLnJlbW92ZUNsYXNzKCJjb2xsYXBzZSBzaG93Iik7dmFyIHI9dGhpcy5fdHJpZ2dlckFycmF5Lmxlbmd0aDtpZihyPjApZm9yKHZhciBvPTA7bzxyO28rKyl7dmFyIHM9dGhpcy5fdHJpZ2dlckFycmF5W29dLGw9YS5nZXRTZWxlY3RvckZyb21FbGVtZW50KHMpO251bGwhPT1sJiYobi5kZWZhdWx0KFtdLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChsKSkpLmhhc0NsYXNzKCJzaG93Iil8fG4uZGVmYXVsdChzKS5hZGRDbGFzcygiY29sbGFwc2VkIikuYXR0cigiYXJpYS1leHBhbmRlZCIsITEpKX10aGlzLnNldFRyYW5zaXRpb25pbmcoITApLHRoaXMuX2VsZW1lbnQuc3R5bGVbaV09IiI7dmFyIGM9YS5nZXRUcmFuc2l0aW9uRHVyYXRpb25Gcm9tRWxlbWVudCh0aGlzLl9lbGVtZW50KTtuLmRlZmF1bHQodGhpcy5fZWxlbWVudCkub25lKGEuVFJBTlNJVElPTl9FTkQsKGZ1bmN0aW9uKCl7dC5zZXRUcmFuc2l0aW9uaW5nKCExKSxuLmRlZmF1bHQodC5fZWxlbWVudCkucmVtb3ZlQ2xhc3MoImNvbGxhcHNpbmciKS5hZGRDbGFzcygiY29sbGFwc2UiKS50cmlnZ2VyKCJoaWRkZW4uYnMuY29sbGFwc2UiKX0pKS5lbXVsYXRlVHJhbnNpdGlvbkVuZChjKX19fSxlLnNldFRyYW5zaXRpb25pbmc9ZnVuY3Rpb24odCl7dGhpcy5faXNUcmFuc2l0aW9uaW5nPXR9LGUuZGlzcG9zZT1mdW5jdGlvbigpe24uZGVmYXVsdC5yZW1vdmVEYXRhKHRoaXMuX2VsZW1lbnQsImJzLmNvbGxhcHNlIiksdGhpcy5fY29uZmlnPW51bGwsdGhpcy5fcGFyZW50PW51bGwsdGhpcy5fZWxlbWVudD1udWxsLHRoaXMuX3RyaWdnZXJBcnJheT1udWxsLHRoaXMuX2lzVHJhbnNpdGlvbmluZz1udWxsfSxlLl9nZXRDb25maWc9ZnVuY3Rpb24odCl7cmV0dXJuKHQ9byh7fSx3LHQpKS50b2dnbGU9Qm9vbGVhbih0LnRvZ2dsZSksYS50eXBlQ2hlY2tDb25maWcoeSx0LHgpLHR9LGUuX2dldERpbWVuc2lvbj1mdW5jdGlvbigpe3JldHVybiBuLmRlZmF1bHQodGhpcy5fZWxlbWVudCkuaGFzQ2xhc3MoIndpZHRoIik/IndpZHRoIjoiaGVpZ2h0In0sZS5fZ2V0UGFyZW50PWZ1bmN0aW9uKCl7dmFyIGUsaT10aGlzO2EuaXNFbGVtZW50KHRoaXMuX2NvbmZpZy5wYXJlbnQpPyhlPXRoaXMuX2NvbmZpZy5wYXJlbnQsdm9pZCAwIT09dGhpcy5fY29uZmlnLnBhcmVudC5qcXVlcnkmJihlPXRoaXMuX2NvbmZpZy5wYXJlbnRbMF0pKTplPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGhpcy5fY29uZmlnLnBhcmVudCk7dmFyIHI9J1tkYXRhLXRvZ2dsZT0iY29sbGFwc2UiXVtkYXRhLXBhcmVudD0iJyt0aGlzLl9jb25maWcucGFyZW50KyciXScsbz1bXS5zbGljZS5jYWxsKGUucXVlcnlTZWxlY3RvckFsbChyKSk7cmV0dXJuIG4uZGVmYXVsdChvKS5lYWNoKChmdW5jdGlvbihlLG4pe2kuX2FkZEFyaWFBbmRDb2xsYXBzZWRDbGFzcyh0Ll9nZXRUYXJnZXRGcm9tRWxlbWVudChuKSxbbl0pfSkpLGV9LGUuX2FkZEFyaWFBbmRDb2xsYXBzZWRDbGFzcz1mdW5jdGlvbih0LGUpe3ZhciBpPW4uZGVmYXVsdCh0KS5oYXNDbGFzcygic2hvdyIpO2UubGVuZ3RoJiZuLmRlZmF1bHQoZSkudG9nZ2xlQ2xhc3MoImNvbGxhcHNlZCIsIWkpLmF0dHIoImFyaWEtZXhwYW5kZWQiLGkpfSx0Ll9nZXRUYXJnZXRGcm9tRWxlbWVudD1mdW5jdGlvbih0KXt2YXIgZT1hLmdldFNlbGVjdG9yRnJvbUVsZW1lbnQodCk7cmV0dXJuIGU/ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihlKTpudWxsfSx0Ll9qUXVlcnlJbnRlcmZhY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXt2YXIgaT1uLmRlZmF1bHQodGhpcykscj1pLmRhdGEoImJzLmNvbGxhcHNlIiksYT1vKHt9LHcsaS5kYXRhKCksIm9iamVjdCI9PXR5cGVvZiBlJiZlP2U6e30pO2lmKCFyJiZhLnRvZ2dsZSYmInN0cmluZyI9PXR5cGVvZiBlJiYvc2hvd3xoaWRlLy50ZXN0KGUpJiYoYS50b2dnbGU9ITEpLHJ8fChyPW5ldyB0KHRoaXMsYSksaS5kYXRhKCJicy5jb2xsYXBzZSIscikpLCJzdHJpbmciPT10eXBlb2YgZSl7aWYodm9pZCAwPT09cltlXSl0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBtZXRob2QgbmFtZWQgIicrZSsnIicpO3JbZV0oKX19KSl9LHIodCxudWxsLFt7a2V5OiJWRVJTSU9OIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iNC42LjAifX0se2tleToiRGVmYXVsdCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHd9fV0pLHR9KCk7bi5kZWZhdWx0KGRvY3VtZW50KS5vbigiY2xpY2suYnMuY29sbGFwc2UuZGF0YS1hcGkiLCdbZGF0YS10b2dnbGU9ImNvbGxhcHNlIl0nLChmdW5jdGlvbih0KXsiQSI9PT10LmN1cnJlbnRUYXJnZXQudGFnTmFtZSYmdC5wcmV2ZW50RGVmYXVsdCgpO3ZhciBlPW4uZGVmYXVsdCh0aGlzKSxpPWEuZ2V0U2VsZWN0b3JGcm9tRWxlbWVudCh0aGlzKSxyPVtdLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChpKSk7bi5kZWZhdWx0KHIpLmVhY2goKGZ1bmN0aW9uKCl7dmFyIHQ9bi5kZWZhdWx0KHRoaXMpLGk9dC5kYXRhKCJicy5jb2xsYXBzZSIpPyJ0b2dnbGUiOmUuZGF0YSgpO18uX2pRdWVyeUludGVyZmFjZS5jYWxsKHQsaSl9KSl9KSksbi5kZWZhdWx0LmZuW3ldPV8uX2pRdWVyeUludGVyZmFjZSxuLmRlZmF1bHQuZm5beV0uQ29uc3RydWN0b3I9XyxuLmRlZmF1bHQuZm5beV0ubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBuLmRlZmF1bHQuZm5beV09YixfLl9qUXVlcnlJbnRlcmZhY2V9O3ZhciBTPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiYidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiYidW5kZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRvcixDPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PVsiRWRnZSIsIlRyaWRlbnQiLCJGaXJlZm94Il0sZT0wO2U8dC5sZW5ndGg7ZSs9MSlpZihTJiZuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YodFtlXSk+PTApcmV0dXJuIDE7cmV0dXJuIDB9KCksaz1TJiZ3aW5kb3cuUHJvbWlzZT9mdW5jdGlvbih0KXt2YXIgZT0hMTtyZXR1cm4gZnVuY3Rpb24oKXtlfHwoZT0hMCx3aW5kb3cuUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoZnVuY3Rpb24oKXtlPSExLHQoKX0pKSl9fTpmdW5jdGlvbih0KXt2YXIgZT0hMTtyZXR1cm4gZnVuY3Rpb24oKXtlfHwoZT0hMCxzZXRUaW1lb3V0KChmdW5jdGlvbigpe2U9ITEsdCgpfSksQykpfX07ZnVuY3Rpb24gVCh0KXtyZXR1cm4gdCYmIltvYmplY3QgRnVuY3Rpb25dIj09PXt9LnRvU3RyaW5nLmNhbGwodCl9ZnVuY3Rpb24gQSh0LGUpe2lmKDEhPT10Lm5vZGVUeXBlKXJldHVybltdO3ZhciBuPXQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHQsbnVsbCk7cmV0dXJuIGU/bltlXTpufWZ1bmN0aW9uIEQodCl7cmV0dXJuIkhUTUwiPT09dC5ub2RlTmFtZT90OnQucGFyZW50Tm9kZXx8dC5ob3N0fWZ1bmN0aW9uIEUodCl7aWYoIXQpcmV0dXJuIGRvY3VtZW50LmJvZHk7c3dpdGNoKHQubm9kZU5hbWUpe2Nhc2UiSFRNTCI6Y2FzZSJCT0RZIjpyZXR1cm4gdC5vd25lckRvY3VtZW50LmJvZHk7Y2FzZSIjZG9jdW1lbnQiOnJldHVybiB0LmJvZHl9dmFyIGU9QSh0KSxuPWUub3ZlcmZsb3csaT1lLm92ZXJmbG93WCxyPWUub3ZlcmZsb3dZO3JldHVybi8oYXV0b3xzY3JvbGx8b3ZlcmxheSkvLnRlc3QobityK2kpP3Q6RShEKHQpKX1mdW5jdGlvbiBNKHQpe3JldHVybiB0JiZ0LnJlZmVyZW5jZU5vZGU/dC5yZWZlcmVuY2VOb2RlOnR9dmFyIE89UyYmISghd2luZG93Lk1TSW5wdXRNZXRob2RDb250ZXh0fHwhZG9jdW1lbnQuZG9jdW1lbnRNb2RlKSxJPVMmJi9NU0lFIDEwLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO2Z1bmN0aW9uIFAodCl7cmV0dXJuIDExPT09dD9POjEwPT09dD9JOk98fEl9ZnVuY3Rpb24gTCh0KXtpZighdClyZXR1cm4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O2Zvcih2YXIgZT1QKDEwKT9kb2N1bWVudC5ib2R5Om51bGwsbj10Lm9mZnNldFBhcmVudHx8bnVsbDtuPT09ZSYmdC5uZXh0RWxlbWVudFNpYmxpbmc7KW49KHQ9dC5uZXh0RWxlbWVudFNpYmxpbmcpLm9mZnNldFBhcmVudDt2YXIgaT1uJiZuLm5vZGVOYW1lO3JldHVybiBpJiYiQk9EWSIhPT1pJiYiSFRNTCIhPT1pPy0xIT09WyJUSCIsIlREIiwiVEFCTEUiXS5pbmRleE9mKG4ubm9kZU5hbWUpJiYic3RhdGljIj09PUEobiwicG9zaXRpb24iKT9MKG4pOm46dD90Lm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OmRvY3VtZW50LmRvY3VtZW50RWxlbWVudH1mdW5jdGlvbiBOKHQpe3JldHVybiBudWxsIT09dC5wYXJlbnROb2RlP04odC5wYXJlbnROb2RlKTp0fWZ1bmN0aW9uIEYodCxlKXtpZighKHQmJnQubm9kZVR5cGUmJmUmJmUubm9kZVR5cGUpKXJldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7dmFyIG49dC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihlKSZOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX0ZPTExPV0lORyxpPW4/dDplLHI9bj9lOnQsbz1kb2N1bWVudC5jcmVhdGVSYW5nZSgpO28uc2V0U3RhcnQoaSwwKSxvLnNldEVuZChyLDApO3ZhciBhLHMsbD1vLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyO2lmKHQhPT1sJiZlIT09bHx8aS5jb250YWlucyhyKSlyZXR1cm4iQk9EWSI9PT0ocz0oYT1sKS5ub2RlTmFtZSl8fCJIVE1MIiE9PXMmJkwoYS5maXJzdEVsZW1lbnRDaGlsZCkhPT1hP0wobCk6bDt2YXIgYz1OKHQpO3JldHVybiBjLmhvc3Q/RihjLmhvc3QsZSk6Rih0LE4oZSkuaG9zdCl9ZnVuY3Rpb24gUih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06InRvcCIsbj0idG9wIj09PWU/InNjcm9sbFRvcCI6InNjcm9sbExlZnQiLGk9dC5ub2RlTmFtZTtpZigiQk9EWSI9PT1pfHwiSFRNTCI9PT1pKXt2YXIgcj10Lm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LG89dC5vd25lckRvY3VtZW50LnNjcm9sbGluZ0VsZW1lbnR8fHI7cmV0dXJuIG9bbl19cmV0dXJuIHRbbl19ZnVuY3Rpb24gaih0LGUpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl0saT1SKGUsInRvcCIpLHI9UihlLCJsZWZ0Iiksbz1uPy0xOjE7cmV0dXJuIHQudG9wKz1pKm8sdC5ib3R0b20rPWkqbyx0LmxlZnQrPXIqbyx0LnJpZ2h0Kz1yKm8sdH1mdW5jdGlvbiAkKHQsZSl7dmFyIG49IngiPT09ZT8iTGVmdCI6IlRvcCIsaT0iTGVmdCI9PT1uPyJSaWdodCI6IkJvdHRvbSI7cmV0dXJuIHBhcnNlRmxvYXQodFsiYm9yZGVyIituKyJXaWR0aCJdKStwYXJzZUZsb2F0KHRbImJvcmRlciIraSsiV2lkdGgiXSl9ZnVuY3Rpb24geih0LGUsbixpKXtyZXR1cm4gTWF0aC5tYXgoZVsib2Zmc2V0Iit0XSxlWyJzY3JvbGwiK3RdLG5bImNsaWVudCIrdF0sblsib2Zmc2V0Iit0XSxuWyJzY3JvbGwiK3RdLFAoMTApP3BhcnNlSW50KG5bIm9mZnNldCIrdF0pK3BhcnNlSW50KGlbIm1hcmdpbiIrKCJIZWlnaHQiPT09dD8iVG9wIjoiTGVmdCIpXSkrcGFyc2VJbnQoaVsibWFyZ2luIisoIkhlaWdodCI9PT10PyJCb3R0b20iOiJSaWdodCIpXSk6MCl9ZnVuY3Rpb24gSCh0KXt2YXIgZT10LmJvZHksbj10LmRvY3VtZW50RWxlbWVudCxpPVAoMTApJiZnZXRDb21wdXRlZFN0eWxlKG4pO3JldHVybntoZWlnaHQ6eigiSGVpZ2h0IixlLG4saSksd2lkdGg6eigiV2lkdGgiLGUsbixpKX19dmFyIEI9ZnVuY3Rpb24odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0scT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIGk9ZVtuXTtpLmVudW1lcmFibGU9aS5lbnVtZXJhYmxlfHwhMSxpLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gaSYmKGkud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGkua2V5LGkpfX1yZXR1cm4gZnVuY3Rpb24oZSxuLGkpe3JldHVybiBuJiZ0KGUucHJvdG90eXBlLG4pLGkmJnQoZSxpKSxlfX0oKSxXPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gZSBpbiB0P09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTp0W2VdPW4sdH0sVT1PYmplY3QuYXNzaWdufHxmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciBpIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4saSkmJih0W2ldPW5baV0pfXJldHVybiB0fTtmdW5jdGlvbiBWKHQpe3JldHVybiBVKHt9LHQse3JpZ2h0OnQubGVmdCt0LndpZHRoLGJvdHRvbTp0LnRvcCt0LmhlaWdodH0pfWZ1bmN0aW9uIFkodCl7dmFyIGU9e307dHJ5e2lmKFAoMTApKXtlPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dmFyIG49Uih0LCJ0b3AiKSxpPVIodCwibGVmdCIpO2UudG9wKz1uLGUubGVmdCs9aSxlLmJvdHRvbSs9bixlLnJpZ2h0Kz1pfWVsc2UgZT10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpfWNhdGNoKHQpe312YXIgcj17bGVmdDplLmxlZnQsdG9wOmUudG9wLHdpZHRoOmUucmlnaHQtZS5sZWZ0LGhlaWdodDplLmJvdHRvbS1lLnRvcH0sbz0iSFRNTCI9PT10Lm5vZGVOYW1lP0godC5vd25lckRvY3VtZW50KTp7fSxhPW8ud2lkdGh8fHQuY2xpZW50V2lkdGh8fHIud2lkdGgscz1vLmhlaWdodHx8dC5jbGllbnRIZWlnaHR8fHIuaGVpZ2h0LGw9dC5vZmZzZXRXaWR0aC1hLGM9dC5vZmZzZXRIZWlnaHQtcztpZihsfHxjKXt2YXIgdT1BKHQpO2wtPSQodSwieCIpLGMtPSQodSwieSIpLHIud2lkdGgtPWwsci5oZWlnaHQtPWN9cmV0dXJuIFYocil9ZnVuY3Rpb24gRyh0LGUpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdJiZhcmd1bWVudHNbMl0saT1QKDEwKSxyPSJIVE1MIj09PWUubm9kZU5hbWUsbz1ZKHQpLGE9WShlKSxzPUUodCksbD1BKGUpLGM9cGFyc2VGbG9hdChsLmJvcmRlclRvcFdpZHRoKSx1PXBhcnNlRmxvYXQobC5ib3JkZXJMZWZ0V2lkdGgpO24mJnImJihhLnRvcD1NYXRoLm1heChhLnRvcCwwKSxhLmxlZnQ9TWF0aC5tYXgoYS5sZWZ0LDApKTt2YXIgZD1WKHt0b3A6by50b3AtYS50b3AtYyxsZWZ0Om8ubGVmdC1hLmxlZnQtdSx3aWR0aDpvLndpZHRoLGhlaWdodDpvLmhlaWdodH0pO2lmKGQubWFyZ2luVG9wPTAsZC5tYXJnaW5MZWZ0PTAsIWkmJnIpe3ZhciBoPXBhcnNlRmxvYXQobC5tYXJnaW5Ub3ApLGY9cGFyc2VGbG9hdChsLm1hcmdpbkxlZnQpO2QudG9wLT1jLWgsZC5ib3R0b20tPWMtaCxkLmxlZnQtPXUtZixkLnJpZ2h0LT11LWYsZC5tYXJnaW5Ub3A9aCxkLm1hcmdpbkxlZnQ9Zn1yZXR1cm4oaSYmIW4/ZS5jb250YWlucyhzKTplPT09cyYmIkJPRFkiIT09cy5ub2RlTmFtZSkmJihkPWooZCxlKSksZH1mdW5jdGlvbiBYKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV0sbj10Lm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGk9Ryh0LG4pLHI9TWF0aC5tYXgobi5jbGllbnRXaWR0aCx3aW5kb3cuaW5uZXJXaWR0aHx8MCksbz1NYXRoLm1heChuLmNsaWVudEhlaWdodCx3aW5kb3cuaW5uZXJIZWlnaHR8fDApLGE9ZT8wOlIobikscz1lPzA6UihuLCJsZWZ0IiksbD17dG9wOmEtaS50b3AraS5tYXJnaW5Ub3AsbGVmdDpzLWkubGVmdCtpLm1hcmdpbkxlZnQsd2lkdGg6cixoZWlnaHQ6b307cmV0dXJuIFYobCl9ZnVuY3Rpb24gUSh0KXt2YXIgZT10Lm5vZGVOYW1lO2lmKCJCT0RZIj09PWV8fCJIVE1MIj09PWUpcmV0dXJuITE7aWYoImZpeGVkIj09PUEodCwicG9zaXRpb24iKSlyZXR1cm4hMDt2YXIgbj1EKHQpO3JldHVybiEhbiYmUShuKX1mdW5jdGlvbiBLKHQpe2lmKCF0fHwhdC5wYXJlbnRFbGVtZW50fHxQKCkpcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtmb3IodmFyIGU9dC5wYXJlbnRFbGVtZW50O2UmJiJub25lIj09PUEoZSwidHJhbnNmb3JtIik7KWU9ZS5wYXJlbnRFbGVtZW50O3JldHVybiBlfHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnR9ZnVuY3Rpb24gSih0LGUsbixpKXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoPjQmJnZvaWQgMCE9PWFyZ3VtZW50c1s0XSYmYXJndW1lbnRzWzRdLG89e3RvcDowLGxlZnQ6MH0sYT1yP0sodCk6Rih0LE0oZSkpO2lmKCJ2aWV3cG9ydCI9PT1pKW89WChhLHIpO2Vsc2V7dmFyIHM9dm9pZCAwOyJzY3JvbGxQYXJlbnQiPT09aT8iQk9EWSI9PT0ocz1FKEQoZSkpKS5ub2RlTmFtZSYmKHM9dC5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCk6cz0id2luZG93Ij09PWk/dC5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudDppO3ZhciBsPUcocyxhLHIpO2lmKCJIVE1MIiE9PXMubm9kZU5hbWV8fFEoYSkpbz1sO2Vsc2V7dmFyIGM9SCh0Lm93bmVyRG9jdW1lbnQpLHU9Yy5oZWlnaHQsZD1jLndpZHRoO28udG9wKz1sLnRvcC1sLm1hcmdpblRvcCxvLmJvdHRvbT11K2wudG9wLG8ubGVmdCs9bC5sZWZ0LWwubWFyZ2luTGVmdCxvLnJpZ2h0PWQrbC5sZWZ0fX12YXIgaD0ibnVtYmVyIj09dHlwZW9mKG49bnx8MCk7cmV0dXJuIG8ubGVmdCs9aD9uOm4ubGVmdHx8MCxvLnRvcCs9aD9uOm4udG9wfHwwLG8ucmlnaHQtPWg/bjpuLnJpZ2h0fHwwLG8uYm90dG9tLT1oP246bi5ib3R0b218fDAsb31mdW5jdGlvbiBaKHQpe3JldHVybiB0LndpZHRoKnQuaGVpZ2h0fWZ1bmN0aW9uIHR0KHQsZSxuLGkscil7dmFyIG89YXJndW1lbnRzLmxlbmd0aD41JiZ2b2lkIDAhPT1hcmd1bWVudHNbNV0/YXJndW1lbnRzWzVdOjA7aWYoLTE9PT10LmluZGV4T2YoImF1dG8iKSlyZXR1cm4gdDt2YXIgYT1KKG4saSxvLHIpLHM9e3RvcDp7d2lkdGg6YS53aWR0aCxoZWlnaHQ6ZS50b3AtYS50b3B9LHJpZ2h0Ont3aWR0aDphLnJpZ2h0LWUucmlnaHQsaGVpZ2h0OmEuaGVpZ2h0fSxib3R0b206e3dpZHRoOmEud2lkdGgsaGVpZ2h0OmEuYm90dG9tLWUuYm90dG9tfSxsZWZ0Ont3aWR0aDplLmxlZnQtYS5sZWZ0LGhlaWdodDphLmhlaWdodH19LGw9T2JqZWN0LmtleXMocykubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gVSh7a2V5OnR9LHNbdF0se2FyZWE6WihzW3RdKX0pfSkpLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuYXJlYS10LmFyZWF9KSksYz1sLmZpbHRlcigoZnVuY3Rpb24odCl7dmFyIGU9dC53aWR0aCxpPXQuaGVpZ2h0O3JldHVybiBlPj1uLmNsaWVudFdpZHRoJiZpPj1uLmNsaWVudEhlaWdodH0pKSx1PWMubGVuZ3RoPjA/Y1swXS5rZXk6bFswXS5rZXksZD10LnNwbGl0KCItIilbMV07cmV0dXJuIHUrKGQ/Ii0iK2Q6IiIpfWZ1bmN0aW9uIGV0KHQsZSxuKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106bnVsbCxyPWk/SyhlKTpGKGUsTShuKSk7cmV0dXJuIEcobixyLGkpfWZ1bmN0aW9uIG50KHQpe3ZhciBlPXQub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHQpLG49cGFyc2VGbG9hdChlLm1hcmdpblRvcHx8MCkrcGFyc2VGbG9hdChlLm1hcmdpbkJvdHRvbXx8MCksaT1wYXJzZUZsb2F0KGUubWFyZ2luTGVmdHx8MCkrcGFyc2VGbG9hdChlLm1hcmdpblJpZ2h0fHwwKTtyZXR1cm57d2lkdGg6dC5vZmZzZXRXaWR0aCtpLGhlaWdodDp0Lm9mZnNldEhlaWdodCtufX1mdW5jdGlvbiBpdCh0KXt2YXIgZT17bGVmdDoicmlnaHQiLHJpZ2h0OiJsZWZ0Iixib3R0b206InRvcCIsdG9wOiJib3R0b20ifTtyZXR1cm4gdC5yZXBsYWNlKC9sZWZ0fHJpZ2h0fGJvdHRvbXx0b3AvZywoZnVuY3Rpb24odCl7cmV0dXJuIGVbdF19KSl9ZnVuY3Rpb24gcnQodCxlLG4pe249bi5zcGxpdCgiLSIpWzBdO3ZhciBpPW50KHQpLHI9e3dpZHRoOmkud2lkdGgsaGVpZ2h0OmkuaGVpZ2h0fSxvPS0xIT09WyJyaWdodCIsImxlZnQiXS5pbmRleE9mKG4pLGE9bz8idG9wIjoibGVmdCIscz1vPyJsZWZ0IjoidG9wIixsPW8/ImhlaWdodCI6IndpZHRoIixjPW8/IndpZHRoIjoiaGVpZ2h0IjtyZXR1cm4gclthXT1lW2FdK2VbbF0vMi1pW2xdLzIscltzXT1uPT09cz9lW3NdLWlbY106ZVtpdChzKV0scn1mdW5jdGlvbiBvdCh0LGUpe3JldHVybiBBcnJheS5wcm90b3R5cGUuZmluZD90LmZpbmQoZSk6dC5maWx0ZXIoZSlbMF19ZnVuY3Rpb24gYXQodCxlLG4pe3JldHVybih2b2lkIDA9PT1uP3Q6dC5zbGljZSgwLGZ1bmN0aW9uKHQsZSxuKXtpZihBcnJheS5wcm90b3R5cGUuZmluZEluZGV4KXJldHVybiB0LmZpbmRJbmRleCgoZnVuY3Rpb24odCl7cmV0dXJuIHRbZV09PT1ufSkpO3ZhciBpPW90KHQsKGZ1bmN0aW9uKHQpe3JldHVybiB0W2VdPT09bn0pKTtyZXR1cm4gdC5pbmRleE9mKGkpfSh0LCJuYW1lIixuKSkpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QuZnVuY3Rpb24mJmNvbnNvbGUud2FybigiYG1vZGlmaWVyLmZ1bmN0aW9uYCBpcyBkZXByZWNhdGVkLCB1c2UgYG1vZGlmaWVyLmZuYCEiKTt2YXIgbj10LmZ1bmN0aW9ufHx0LmZuO3QuZW5hYmxlZCYmVChuKSYmKGUub2Zmc2V0cy5wb3BwZXI9VihlLm9mZnNldHMucG9wcGVyKSxlLm9mZnNldHMucmVmZXJlbmNlPVYoZS5vZmZzZXRzLnJlZmVyZW5jZSksZT1uKGUsdCkpfSkpLGV9ZnVuY3Rpb24gc3QoKXtpZighdGhpcy5zdGF0ZS5pc0Rlc3Ryb3llZCl7dmFyIHQ9e2luc3RhbmNlOnRoaXMsc3R5bGVzOnt9LGFycm93U3R5bGVzOnt9LGF0dHJpYnV0ZXM6e30sZmxpcHBlZDohMSxvZmZzZXRzOnt9fTt0Lm9mZnNldHMucmVmZXJlbmNlPWV0KHRoaXMuc3RhdGUsdGhpcy5wb3BwZXIsdGhpcy5yZWZlcmVuY2UsdGhpcy5vcHRpb25zLnBvc2l0aW9uRml4ZWQpLHQucGxhY2VtZW50PXR0KHRoaXMub3B0aW9ucy5wbGFjZW1lbnQsdC5vZmZzZXRzLnJlZmVyZW5jZSx0aGlzLnBvcHBlcix0aGlzLnJlZmVyZW5jZSx0aGlzLm9wdGlvbnMubW9kaWZpZXJzLmZsaXAuYm91bmRhcmllc0VsZW1lbnQsdGhpcy5vcHRpb25zLm1vZGlmaWVycy5mbGlwLnBhZGRpbmcpLHQub3JpZ2luYWxQbGFjZW1lbnQ9dC5wbGFjZW1lbnQsdC5wb3NpdGlvbkZpeGVkPXRoaXMub3B0aW9ucy5wb3NpdGlvbkZpeGVkLHQub2Zmc2V0cy5wb3BwZXI9cnQodGhpcy5wb3BwZXIsdC5vZmZzZXRzLnJlZmVyZW5jZSx0LnBsYWNlbWVudCksdC5vZmZzZXRzLnBvcHBlci5wb3NpdGlvbj10aGlzLm9wdGlvbnMucG9zaXRpb25GaXhlZD8iZml4ZWQiOiJhYnNvbHV0ZSIsdD1hdCh0aGlzLm1vZGlmaWVycyx0KSx0aGlzLnN0YXRlLmlzQ3JlYXRlZD90aGlzLm9wdGlvbnMub25VcGRhdGUodCk6KHRoaXMuc3RhdGUuaXNDcmVhdGVkPSEwLHRoaXMub3B0aW9ucy5vbkNyZWF0ZSh0KSl9fWZ1bmN0aW9uIGx0KHQsZSl7cmV0dXJuIHQuc29tZSgoZnVuY3Rpb24odCl7dmFyIG49dC5uYW1lO3JldHVybiB0LmVuYWJsZWQmJm49PT1lfSkpfWZ1bmN0aW9uIGN0KHQpe2Zvcih2YXIgZT1bITEsIm1zIiwiV2Via2l0IiwiTW96IiwiTyJdLG49dC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSt0LnNsaWNlKDEpLGk9MDtpPGUubGVuZ3RoO2krKyl7dmFyIHI9ZVtpXSxvPXI/IiIrcituOnQ7aWYodm9pZCAwIT09ZG9jdW1lbnQuYm9keS5zdHlsZVtvXSlyZXR1cm4gb31yZXR1cm4gbnVsbH1mdW5jdGlvbiB1dCgpe3JldHVybiB0aGlzLnN0YXRlLmlzRGVzdHJveWVkPSEwLGx0KHRoaXMubW9kaWZpZXJzLCJhcHBseVN0eWxlIikmJih0aGlzLnBvcHBlci5yZW1vdmVBdHRyaWJ1dGUoIngtcGxhY2VtZW50IiksdGhpcy5wb3BwZXIuc3R5bGUucG9zaXRpb249IiIsdGhpcy5wb3BwZXIuc3R5bGUudG9wPSIiLHRoaXMucG9wcGVyLnN0eWxlLmxlZnQ9IiIsdGhpcy5wb3BwZXIuc3R5bGUucmlnaHQ9IiIsdGhpcy5wb3BwZXIuc3R5bGUuYm90dG9tPSIiLHRoaXMucG9wcGVyLnN0eWxlLndpbGxDaGFuZ2U9IiIsdGhpcy5wb3BwZXIuc3R5bGVbY3QoInRyYW5zZm9ybSIpXT0iIiksdGhpcy5kaXNhYmxlRXZlbnRMaXN0ZW5lcnMoKSx0aGlzLm9wdGlvbnMucmVtb3ZlT25EZXN0cm95JiZ0aGlzLnBvcHBlci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMucG9wcGVyKSx0aGlzfWZ1bmN0aW9uIGR0KHQpe3ZhciBlPXQub3duZXJEb2N1bWVudDtyZXR1cm4gZT9lLmRlZmF1bHRWaWV3OndpbmRvd31mdW5jdGlvbiBodCgpe3RoaXMuc3RhdGUuZXZlbnRzRW5hYmxlZHx8KHRoaXMuc3RhdGU9ZnVuY3Rpb24odCxlLG4saSl7bi51cGRhdGVCb3VuZD1pLGR0KHQpLmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsbi51cGRhdGVCb3VuZCx7cGFzc2l2ZTohMH0pO3ZhciByPUUodCk7cmV0dXJuIGZ1bmN0aW9uIHQoZSxuLGkscil7dmFyIG89IkJPRFkiPT09ZS5ub2RlTmFtZSxhPW8/ZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3OmU7YS5hZGRFdmVudExpc3RlbmVyKG4saSx7cGFzc2l2ZTohMH0pLG98fHQoRShhLnBhcmVudE5vZGUpLG4saSxyKSxyLnB1c2goYSl9KHIsInNjcm9sbCIsbi51cGRhdGVCb3VuZCxuLnNjcm9sbFBhcmVudHMpLG4uc2Nyb2xsRWxlbWVudD1yLG4uZXZlbnRzRW5hYmxlZD0hMCxufSh0aGlzLnJlZmVyZW5jZSx0aGlzLm9wdGlvbnMsdGhpcy5zdGF0ZSx0aGlzLnNjaGVkdWxlVXBkYXRlKSl9ZnVuY3Rpb24gZnQoKXt2YXIgdCxlO3RoaXMuc3RhdGUuZXZlbnRzRW5hYmxlZCYmKGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuc2NoZWR1bGVVcGRhdGUpLHRoaXMuc3RhdGU9KHQ9dGhpcy5yZWZlcmVuY2UsZT10aGlzLnN0YXRlLGR0KHQpLnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsZS51cGRhdGVCb3VuZCksZS5zY3JvbGxQYXJlbnRzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2Nyb2xsIixlLnVwZGF0ZUJvdW5kKX0pKSxlLnVwZGF0ZUJvdW5kPW51bGwsZS5zY3JvbGxQYXJlbnRzPVtdLGUuc2Nyb2xsRWxlbWVudD1udWxsLGUuZXZlbnRzRW5hYmxlZD0hMSxlKSl9ZnVuY3Rpb24gcHQodCl7cmV0dXJuIiIhPT10JiYhaXNOYU4ocGFyc2VGbG9hdCh0KSkmJmlzRmluaXRlKHQpfWZ1bmN0aW9uIGd0KHQsZSl7T2JqZWN0LmtleXMoZSkuZm9yRWFjaCgoZnVuY3Rpb24obil7dmFyIGk9IiI7LTEhPT1bIndpZHRoIiwiaGVpZ2h0IiwidG9wIiwicmlnaHQiLCJib3R0b20iLCJsZWZ0Il0uaW5kZXhPZihuKSYmcHQoZVtuXSkmJihpPSJweCIpLHQuc3R5bGVbbl09ZVtuXStpfSkpfXZhciBtdD1TJiYvRmlyZWZveC9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7ZnVuY3Rpb24gdnQodCxlLG4pe3ZhciBpPW90KHQsKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5hbWU9PT1lfSkpLHI9ISFpJiZ0LnNvbWUoKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5hbWU9PT1uJiZ0LmVuYWJsZWQmJnQub3JkZXI8aS5vcmRlcn0pKTtpZighcil7dmFyIG89ImAiK2UrImAiLGE9ImAiK24rImAiO2NvbnNvbGUud2FybihhKyIgbW9kaWZpZXIgaXMgcmVxdWlyZWQgYnkgIitvKyIgbW9kaWZpZXIgaW4gb3JkZXIgdG8gd29yaywgYmUgc3VyZSB0byBpbmNsdWRlIGl0IGJlZm9yZSAiK28rIiEiKX1yZXR1cm4gcn12YXIgeXQ9WyJhdXRvLXN0YXJ0IiwiYXV0byIsImF1dG8tZW5kIiwidG9wLXN0YXJ0IiwidG9wIiwidG9wLWVuZCIsInJpZ2h0LXN0YXJ0IiwicmlnaHQiLCJyaWdodC1lbmQiLCJib3R0b20tZW5kIiwiYm90dG9tIiwiYm90dG9tLXN0YXJ0IiwibGVmdC1lbmQiLCJsZWZ0IiwibGVmdC1zdGFydCJdLGJ0PXl0LnNsaWNlKDMpO2Z1bmN0aW9uIHd0KHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdJiZhcmd1bWVudHNbMV0sbj1idC5pbmRleE9mKHQpLGk9YnQuc2xpY2UobisxKS5jb25jYXQoYnQuc2xpY2UoMCxuKSk7cmV0dXJuIGU/aS5yZXZlcnNlKCk6aX12YXIgeHQ9e3BsYWNlbWVudDoiYm90dG9tIixwb3NpdGlvbkZpeGVkOiExLGV2ZW50c0VuYWJsZWQ6ITAscmVtb3ZlT25EZXN0cm95OiExLG9uQ3JlYXRlOmZ1bmN0aW9uKCl7fSxvblVwZGF0ZTpmdW5jdGlvbigpe30sbW9kaWZpZXJzOntzaGlmdDp7b3JkZXI6MTAwLGVuYWJsZWQ6ITAsZm46ZnVuY3Rpb24odCl7dmFyIGU9dC5wbGFjZW1lbnQsbj1lLnNwbGl0KCItIilbMF0saT1lLnNwbGl0KCItIilbMV07aWYoaSl7dmFyIHI9dC5vZmZzZXRzLG89ci5yZWZlcmVuY2UsYT1yLnBvcHBlcixzPS0xIT09WyJib3R0b20iLCJ0b3AiXS5pbmRleE9mKG4pLGw9cz8ibGVmdCI6InRvcCIsYz1zPyJ3aWR0aCI6ImhlaWdodCIsdT17c3RhcnQ6Vyh7fSxsLG9bbF0pLGVuZDpXKHt9LGwsb1tsXStvW2NdLWFbY10pfTt0Lm9mZnNldHMucG9wcGVyPVUoe30sYSx1W2ldKX1yZXR1cm4gdH19LG9mZnNldDp7b3JkZXI6MjAwLGVuYWJsZWQ6ITAsZm46ZnVuY3Rpb24odCxlKXt2YXIgbixpPWUub2Zmc2V0LHI9dC5wbGFjZW1lbnQsbz10Lm9mZnNldHMsYT1vLnBvcHBlcixzPW8ucmVmZXJlbmNlLGw9ci5zcGxpdCgiLSIpWzBdO3JldHVybiBuPXB0KCtpKT9bK2ksMF06ZnVuY3Rpb24odCxlLG4saSl7dmFyIHI9WzAsMF0sbz0tMSE9PVsicmlnaHQiLCJsZWZ0Il0uaW5kZXhPZihpKSxhPXQuc3BsaXQoLyhcK3xcLSkvKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnRyaW0oKX0pKSxzPWEuaW5kZXhPZihvdChhLChmdW5jdGlvbih0KXtyZXR1cm4tMSE9PXQuc2VhcmNoKC8sfFxzLyl9KSkpO2Fbc10mJi0xPT09YVtzXS5pbmRleE9mKCIsIikmJmNvbnNvbGUud2FybigiT2Zmc2V0cyBzZXBhcmF0ZWQgYnkgd2hpdGUgc3BhY2UocykgYXJlIGRlcHJlY2F0ZWQsIHVzZSBhIGNvbW1hICgsKSBpbnN0ZWFkLiIpO3ZhciBsPS9ccyosXHMqfFxzKy8sYz0tMSE9PXM/W2Euc2xpY2UoMCxzKS5jb25jYXQoW2Fbc10uc3BsaXQobClbMF1dKSxbYVtzXS5zcGxpdChsKVsxXV0uY29uY2F0KGEuc2xpY2UocysxKSldOlthXTtyZXR1cm4oYz1jLm1hcCgoZnVuY3Rpb24odCxpKXt2YXIgcj0oMT09PWk/IW86byk/ImhlaWdodCI6IndpZHRoIixhPSExO3JldHVybiB0LnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4iIj09PXRbdC5sZW5ndGgtMV0mJi0xIT09WyIrIiwiLSJdLmluZGV4T2YoZSk/KHRbdC5sZW5ndGgtMV09ZSxhPSEwLHQpOmE/KHRbdC5sZW5ndGgtMV0rPWUsYT0hMSx0KTp0LmNvbmNhdChlKX0pLFtdKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbih0LGUsbixpKXt2YXIgcj10Lm1hdGNoKC8oKD86XC18XCspP1xkKlwuP1xkKikoLiopLyksbz0rclsxXSxhPXJbMl07aWYoIW8pcmV0dXJuIHQ7aWYoMD09PWEuaW5kZXhPZigiJSIpKXt2YXIgcz12b2lkIDA7c3dpdGNoKGEpe2Nhc2UiJXAiOnM9bjticmVhaztjYXNlIiUiOmNhc2UiJXIiOmRlZmF1bHQ6cz1pfXJldHVybiBWKHMpW2VdLzEwMCpvfXJldHVybiJ2aCI9PT1hfHwidnciPT09YT8oInZoIj09PWE/TWF0aC5tYXgoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCx3aW5kb3cuaW5uZXJIZWlnaHR8fDApOk1hdGgubWF4KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aCx3aW5kb3cuaW5uZXJXaWR0aHx8MCkpLzEwMCpvOm99KHQscixlLG4pfSkpfSkpKS5mb3JFYWNoKChmdW5jdGlvbih0LGUpe3QuZm9yRWFjaCgoZnVuY3Rpb24obixpKXtwdChuKSYmKHJbZV0rPW4qKCItIj09PXRbaS0xXT8tMToxKSl9KSl9KSkscn0oaSxhLHMsbCksImxlZnQiPT09bD8oYS50b3ArPW5bMF0sYS5sZWZ0LT1uWzFdKToicmlnaHQiPT09bD8oYS50b3ArPW5bMF0sYS5sZWZ0Kz1uWzFdKToidG9wIj09PWw/KGEubGVmdCs9blswXSxhLnRvcC09blsxXSk6ImJvdHRvbSI9PT1sJiYoYS5sZWZ0Kz1uWzBdLGEudG9wKz1uWzFdKSx0LnBvcHBlcj1hLHR9LG9mZnNldDowfSxwcmV2ZW50T3ZlcmZsb3c6e29yZGVyOjMwMCxlbmFibGVkOiEwLGZuOmZ1bmN0aW9uKHQsZSl7dmFyIG49ZS5ib3VuZGFyaWVzRWxlbWVudHx8TCh0Lmluc3RhbmNlLnBvcHBlcik7dC5pbnN0YW5jZS5yZWZlcmVuY2U9PT1uJiYobj1MKG4pKTt2YXIgaT1jdCgidHJhbnNmb3JtIikscj10Lmluc3RhbmNlLnBvcHBlci5zdHlsZSxvPXIudG9wLGE9ci5sZWZ0LHM9cltpXTtyLnRvcD0iIixyLmxlZnQ9IiIscltpXT0iIjt2YXIgbD1KKHQuaW5zdGFuY2UucG9wcGVyLHQuaW5zdGFuY2UucmVmZXJlbmNlLGUucGFkZGluZyxuLHQucG9zaXRpb25GaXhlZCk7ci50b3A9byxyLmxlZnQ9YSxyW2ldPXMsZS5ib3VuZGFyaWVzPWw7dmFyIGM9ZS5wcmlvcml0eSx1PXQub2Zmc2V0cy5wb3BwZXIsZD17cHJpbWFyeTpmdW5jdGlvbih0KXt2YXIgbj11W3RdO3JldHVybiB1W3RdPGxbdF0mJiFlLmVzY2FwZVdpdGhSZWZlcmVuY2UmJihuPU1hdGgubWF4KHVbdF0sbFt0XSkpLFcoe30sdCxuKX0sc2Vjb25kYXJ5OmZ1bmN0aW9uKHQpe3ZhciBuPSJyaWdodCI9PT10PyJsZWZ0IjoidG9wIixpPXVbbl07cmV0dXJuIHVbdF0+bFt0XSYmIWUuZXNjYXBlV2l0aFJlZmVyZW5jZSYmKGk9TWF0aC5taW4odVtuXSxsW3RdLSgicmlnaHQiPT09dD91LndpZHRoOnUuaGVpZ2h0KSkpLFcoe30sbixpKX19O3JldHVybiBjLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPS0xIT09WyJsZWZ0IiwidG9wIl0uaW5kZXhPZih0KT8icHJpbWFyeSI6InNlY29uZGFyeSI7dT1VKHt9LHUsZFtlXSh0KSl9KSksdC5vZmZzZXRzLnBvcHBlcj11LHR9LHByaW9yaXR5OlsibGVmdCIsInJpZ2h0IiwidG9wIiwiYm90dG9tIl0scGFkZGluZzo1LGJvdW5kYXJpZXNFbGVtZW50OiJzY3JvbGxQYXJlbnQifSxrZWVwVG9nZXRoZXI6e29yZGVyOjQwMCxlbmFibGVkOiEwLGZuOmZ1bmN0aW9uKHQpe3ZhciBlPXQub2Zmc2V0cyxuPWUucG9wcGVyLGk9ZS5yZWZlcmVuY2Uscj10LnBsYWNlbWVudC5zcGxpdCgiLSIpWzBdLG89TWF0aC5mbG9vcixhPS0xIT09WyJ0b3AiLCJib3R0b20iXS5pbmRleE9mKHIpLHM9YT8icmlnaHQiOiJib3R0b20iLGw9YT8ibGVmdCI6InRvcCIsYz1hPyJ3aWR0aCI6ImhlaWdodCI7cmV0dXJuIG5bc108byhpW2xdKSYmKHQub2Zmc2V0cy5wb3BwZXJbbF09byhpW2xdKS1uW2NdKSxuW2xdPm8oaVtzXSkmJih0Lm9mZnNldHMucG9wcGVyW2xdPW8oaVtzXSkpLHR9fSxhcnJvdzp7b3JkZXI6NTAwLGVuYWJsZWQ6ITAsZm46ZnVuY3Rpb24odCxlKXt2YXIgbjtpZighdnQodC5pbnN0YW5jZS5tb2RpZmllcnMsImFycm93Iiwia2VlcFRvZ2V0aGVyIikpcmV0dXJuIHQ7dmFyIGk9ZS5lbGVtZW50O2lmKCJzdHJpbmciPT10eXBlb2YgaSl7aWYoIShpPXQuaW5zdGFuY2UucG9wcGVyLnF1ZXJ5U2VsZWN0b3IoaSkpKXJldHVybiB0fWVsc2UgaWYoIXQuaW5zdGFuY2UucG9wcGVyLmNvbnRhaW5zKGkpKXJldHVybiBjb25zb2xlLndhcm4oIldBUk5JTkc6IGBhcnJvdy5lbGVtZW50YCBtdXN0IGJlIGNoaWxkIG9mIGl0cyBwb3BwZXIgZWxlbWVudCEiKSx0O3ZhciByPXQucGxhY2VtZW50LnNwbGl0KCItIilbMF0sbz10Lm9mZnNldHMsYT1vLnBvcHBlcixzPW8ucmVmZXJlbmNlLGw9LTEhPT1bImxlZnQiLCJyaWdodCJdLmluZGV4T2YociksYz1sPyJoZWlnaHQiOiJ3aWR0aCIsdT1sPyJUb3AiOiJMZWZ0IixkPXUudG9Mb3dlckNhc2UoKSxoPWw/ImxlZnQiOiJ0b3AiLGY9bD8iYm90dG9tIjoicmlnaHQiLHA9bnQoaSlbY107c1tmXS1wPGFbZF0mJih0Lm9mZnNldHMucG9wcGVyW2RdLT1hW2RdLShzW2ZdLXApKSxzW2RdK3A+YVtmXSYmKHQub2Zmc2V0cy5wb3BwZXJbZF0rPXNbZF0rcC1hW2ZdKSx0Lm9mZnNldHMucG9wcGVyPVYodC5vZmZzZXRzLnBvcHBlcik7dmFyIGc9c1tkXStzW2NdLzItcC8yLG09QSh0Lmluc3RhbmNlLnBvcHBlciksdj1wYXJzZUZsb2F0KG1bIm1hcmdpbiIrdV0pLHk9cGFyc2VGbG9hdChtWyJib3JkZXIiK3UrIldpZHRoIl0pLGI9Zy10Lm9mZnNldHMucG9wcGVyW2RdLXYteTtyZXR1cm4gYj1NYXRoLm1heChNYXRoLm1pbihhW2NdLXAsYiksMCksdC5hcnJvd0VsZW1lbnQ9aSx0Lm9mZnNldHMuYXJyb3c9KFcobj17fSxkLE1hdGgucm91bmQoYikpLFcobixoLCIiKSxuKSx0fSxlbGVtZW50OiJbeC1hcnJvd10ifSxmbGlwOntvcmRlcjo2MDAsZW5hYmxlZDohMCxmbjpmdW5jdGlvbih0LGUpe2lmKGx0KHQuaW5zdGFuY2UubW9kaWZpZXJzLCJpbm5lciIpKXJldHVybiB0O2lmKHQuZmxpcHBlZCYmdC5wbGFjZW1lbnQ9PT10Lm9yaWdpbmFsUGxhY2VtZW50KXJldHVybiB0O3ZhciBuPUoodC5pbnN0YW5jZS5wb3BwZXIsdC5pbnN0YW5jZS5yZWZlcmVuY2UsZS5wYWRkaW5nLGUuYm91bmRhcmllc0VsZW1lbnQsdC5wb3NpdGlvbkZpeGVkKSxpPXQucGxhY2VtZW50LnNwbGl0KCItIilbMF0scj1pdChpKSxvPXQucGxhY2VtZW50LnNwbGl0KCItIilbMV18fCIiLGE9W107c3dpdGNoKGUuYmVoYXZpb3Ipe2Nhc2UiZmxpcCI6YT1baSxyXTticmVhaztjYXNlImNsb2Nrd2lzZSI6YT13dChpKTticmVhaztjYXNlImNvdW50ZXJjbG9ja3dpc2UiOmE9d3QoaSwhMCk7YnJlYWs7ZGVmYXVsdDphPWUuYmVoYXZpb3J9cmV0dXJuIGEuZm9yRWFjaCgoZnVuY3Rpb24ocyxsKXtpZihpIT09c3x8YS5sZW5ndGg9PT1sKzEpcmV0dXJuIHQ7aT10LnBsYWNlbWVudC5zcGxpdCgiLSIpWzBdLHI9aXQoaSk7dmFyIGM9dC5vZmZzZXRzLnBvcHBlcix1PXQub2Zmc2V0cy5yZWZlcmVuY2UsZD1NYXRoLmZsb29yLGg9ImxlZnQiPT09aSYmZChjLnJpZ2h0KT5kKHUubGVmdCl8fCJyaWdodCI9PT1pJiZkKGMubGVmdCk8ZCh1LnJpZ2h0KXx8InRvcCI9PT1pJiZkKGMuYm90dG9tKT5kKHUudG9wKXx8ImJvdHRvbSI9PT1pJiZkKGMudG9wKTxkKHUuYm90dG9tKSxmPWQoYy5sZWZ0KTxkKG4ubGVmdCkscD1kKGMucmlnaHQpPmQobi5yaWdodCksZz1kKGMudG9wKTxkKG4udG9wKSxtPWQoYy5ib3R0b20pPmQobi5ib3R0b20pLHY9ImxlZnQiPT09aSYmZnx8InJpZ2h0Ij09PWkmJnB8fCJ0b3AiPT09aSYmZ3x8ImJvdHRvbSI9PT1pJiZtLHk9LTEhPT1bInRvcCIsImJvdHRvbSJdLmluZGV4T2YoaSksYj0hIWUuZmxpcFZhcmlhdGlvbnMmJih5JiYic3RhcnQiPT09byYmZnx8eSYmImVuZCI9PT1vJiZwfHwheSYmInN0YXJ0Ij09PW8mJmd8fCF5JiYiZW5kIj09PW8mJm0pLHc9ISFlLmZsaXBWYXJpYXRpb25zQnlDb250ZW50JiYoeSYmInN0YXJ0Ij09PW8mJnB8fHkmJiJlbmQiPT09byYmZnx8IXkmJiJzdGFydCI9PT1vJiZtfHwheSYmImVuZCI9PT1vJiZnKSx4PWJ8fHc7KGh8fHZ8fHgpJiYodC5mbGlwcGVkPSEwLChofHx2KSYmKGk9YVtsKzFdKSx4JiYobz1mdW5jdGlvbih0KXtyZXR1cm4iZW5kIj09PXQ/InN0YXJ0Ijoic3RhcnQiPT09dD8iZW5kIjp0fShvKSksdC5wbGFjZW1lbnQ9aSsobz8iLSIrbzoiIiksdC5vZmZzZXRzLnBvcHBlcj1VKHt9LHQub2Zmc2V0cy5wb3BwZXIscnQodC5pbnN0YW5jZS5wb3BwZXIsdC5vZmZzZXRzLnJlZmVyZW5jZSx0LnBsYWNlbWVudCkpLHQ9YXQodC5pbnN0YW5jZS5tb2RpZmllcnMsdCwiZmxpcCIpKX0pKSx0fSxiZWhhdmlvcjoiZmxpcCIscGFkZGluZzo1LGJvdW5kYXJpZXNFbGVtZW50OiJ2aWV3cG9ydCIsZmxpcFZhcmlhdGlvbnM6ITEsZmxpcFZhcmlhdGlvbnNCeUNvbnRlbnQ6ITF9LGlubmVyOntvcmRlcjo3MDAsZW5hYmxlZDohMSxmbjpmdW5jdGlvbih0KXt2YXIgZT10LnBsYWNlbWVudCxuPWUuc3BsaXQoIi0iKVswXSxpPXQub2Zmc2V0cyxyPWkucG9wcGVyLG89aS5yZWZlcmVuY2UsYT0tMSE9PVsibGVmdCIsInJpZ2h0Il0uaW5kZXhPZihuKSxzPS0xPT09WyJ0b3AiLCJsZWZ0Il0uaW5kZXhPZihuKTtyZXR1cm4gclthPyJsZWZ0IjoidG9wIl09b1tuXS0ocz9yW2E/IndpZHRoIjoiaGVpZ2h0Il06MCksdC5wbGFjZW1lbnQ9aXQoZSksdC5vZmZzZXRzLnBvcHBlcj1WKHIpLHR9fSxoaWRlOntvcmRlcjo4MDAsZW5hYmxlZDohMCxmbjpmdW5jdGlvbih0KXtpZighdnQodC5pbnN0YW5jZS5tb2RpZmllcnMsImhpZGUiLCJwcmV2ZW50T3ZlcmZsb3ciKSlyZXR1cm4gdDt2YXIgZT10Lm9mZnNldHMucmVmZXJlbmNlLG49b3QodC5pbnN0YW5jZS5tb2RpZmllcnMsKGZ1bmN0aW9uKHQpe3JldHVybiJwcmV2ZW50T3ZlcmZsb3ciPT09dC5uYW1lfSkpLmJvdW5kYXJpZXM7aWYoZS5ib3R0b208bi50b3B8fGUubGVmdD5uLnJpZ2h0fHxlLnRvcD5uLmJvdHRvbXx8ZS5yaWdodDxuLmxlZnQpe2lmKCEwPT09dC5oaWRlKXJldHVybiB0O3QuaGlkZT0hMCx0LmF0dHJpYnV0ZXNbIngtb3V0LW9mLWJvdW5kYXJpZXMiXT0iIn1lbHNle2lmKCExPT09dC5oaWRlKXJldHVybiB0O3QuaGlkZT0hMSx0LmF0dHJpYnV0ZXNbIngtb3V0LW9mLWJvdW5kYXJpZXMiXT0hMX1yZXR1cm4gdH19LGNvbXB1dGVTdHlsZTp7b3JkZXI6ODUwLGVuYWJsZWQ6ITAsZm46ZnVuY3Rpb24odCxlKXt2YXIgbj1lLngsaT1lLnkscj10Lm9mZnNldHMucG9wcGVyLG89b3QodC5pbnN0YW5jZS5tb2RpZmllcnMsKGZ1bmN0aW9uKHQpe3JldHVybiJhcHBseVN0eWxlIj09PXQubmFtZX0pKS5ncHVBY2NlbGVyYXRpb247dm9pZCAwIT09byYmY29uc29sZS53YXJuKCJXQVJOSU5HOiBgZ3B1QWNjZWxlcmF0aW9uYCBvcHRpb24gbW92ZWQgdG8gYGNvbXB1dGVTdHlsZWAgbW9kaWZpZXIgYW5kIHdpbGwgbm90IGJlIHN1cHBvcnRlZCBpbiBmdXR1cmUgdmVyc2lvbnMgb2YgUG9wcGVyLmpzISIpO3ZhciBhLHMsbD12b2lkIDAhPT1vP286ZS5ncHVBY2NlbGVyYXRpb24sYz1MKHQuaW5zdGFuY2UucG9wcGVyKSx1PVkoYyksZD17cG9zaXRpb246ci5wb3NpdGlvbn0saD1mdW5jdGlvbih0LGUpe3ZhciBuPXQub2Zmc2V0cyxpPW4ucG9wcGVyLHI9bi5yZWZlcmVuY2Usbz1NYXRoLnJvdW5kLGE9TWF0aC5mbG9vcixzPWZ1bmN0aW9uKHQpe3JldHVybiB0fSxsPW8oci53aWR0aCksYz1vKGkud2lkdGgpLHU9LTEhPT1bImxlZnQiLCJyaWdodCJdLmluZGV4T2YodC5wbGFjZW1lbnQpLGQ9LTEhPT10LnBsYWNlbWVudC5pbmRleE9mKCItIiksaD1lP3V8fGR8fGwlMj09YyUyP286YTpzLGY9ZT9vOnM7cmV0dXJue2xlZnQ6aChsJTI9PTEmJmMlMj09MSYmIWQmJmU/aS5sZWZ0LTE6aS5sZWZ0KSx0b3A6ZihpLnRvcCksYm90dG9tOmYoaS5ib3R0b20pLHJpZ2h0OmgoaS5yaWdodCl9fSh0LHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvPDJ8fCFtdCksZj0iYm90dG9tIj09PW4/InRvcCI6ImJvdHRvbSIscD0icmlnaHQiPT09aT8ibGVmdCI6InJpZ2h0IixnPWN0KCJ0cmFuc2Zvcm0iKTtpZihzPSJib3R0b20iPT09Zj8iSFRNTCI9PT1jLm5vZGVOYW1lPy1jLmNsaWVudEhlaWdodCtoLmJvdHRvbTotdS5oZWlnaHQraC5ib3R0b206aC50b3AsYT0icmlnaHQiPT09cD8iSFRNTCI9PT1jLm5vZGVOYW1lPy1jLmNsaWVudFdpZHRoK2gucmlnaHQ6LXUud2lkdGgraC5yaWdodDpoLmxlZnQsbCYmZylkW2ddPSJ0cmFuc2xhdGUzZCgiK2ErInB4LCAiK3MrInB4LCAwKSIsZFtmXT0wLGRbcF09MCxkLndpbGxDaGFuZ2U9InRyYW5zZm9ybSI7ZWxzZXt2YXIgbT0iYm90dG9tIj09PWY/LTE6MSx2PSJyaWdodCI9PT1wPy0xOjE7ZFtmXT1zKm0sZFtwXT1hKnYsZC53aWxsQ2hhbmdlPWYrIiwgIitwfXZhciB5PXsieC1wbGFjZW1lbnQiOnQucGxhY2VtZW50fTtyZXR1cm4gdC5hdHRyaWJ1dGVzPVUoe30seSx0LmF0dHJpYnV0ZXMpLHQuc3R5bGVzPVUoe30sZCx0LnN0eWxlcyksdC5hcnJvd1N0eWxlcz1VKHt9LHQub2Zmc2V0cy5hcnJvdyx0LmFycm93U3R5bGVzKSx0fSxncHVBY2NlbGVyYXRpb246ITAseDoiYm90dG9tIix5OiJyaWdodCJ9LGFwcGx5U3R5bGU6e29yZGVyOjkwMCxlbmFibGVkOiEwLGZuOmZ1bmN0aW9uKHQpe3ZhciBlLG47cmV0dXJuIGd0KHQuaW5zdGFuY2UucG9wcGVyLHQuc3R5bGVzKSxlPXQuaW5zdGFuY2UucG9wcGVyLG49dC5hdHRyaWJ1dGVzLE9iamVjdC5rZXlzKG4pLmZvckVhY2goKGZ1bmN0aW9uKHQpeyExIT09blt0XT9lLnNldEF0dHJpYnV0ZSh0LG5bdF0pOmUucmVtb3ZlQXR0cmlidXRlKHQpfSkpLHQuYXJyb3dFbGVtZW50JiZPYmplY3Qua2V5cyh0LmFycm93U3R5bGVzKS5sZW5ndGgmJmd0KHQuYXJyb3dFbGVtZW50LHQuYXJyb3dTdHlsZXMpLHR9LG9uTG9hZDpmdW5jdGlvbih0LGUsbixpLHIpe3ZhciBvPWV0KHIsZSx0LG4ucG9zaXRpb25GaXhlZCksYT10dChuLnBsYWNlbWVudCxvLGUsdCxuLm1vZGlmaWVycy5mbGlwLmJvdW5kYXJpZXNFbGVtZW50LG4ubW9kaWZpZXJzLmZsaXAucGFkZGluZyk7cmV0dXJuIGUuc2V0QXR0cmlidXRlKCJ4LXBsYWNlbWVudCIsYSksZ3QoZSx7cG9zaXRpb246bi5wb3NpdGlvbkZpeGVkPyJmaXhlZCI6ImFic29sdXRlIn0pLG59LGdwdUFjY2VsZXJhdGlvbjp2b2lkIDB9fX0sX3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsbil7dmFyIGk9dGhpcyxyPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp7fTtCKHRoaXMsdCksdGhpcy5zY2hlZHVsZVVwZGF0ZT1mdW5jdGlvbigpe3JldHVybiByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoaS51cGRhdGUpfSx0aGlzLnVwZGF0ZT1rKHRoaXMudXBkYXRlLmJpbmQodGhpcykpLHRoaXMub3B0aW9ucz1VKHt9LHQuRGVmYXVsdHMsciksdGhpcy5zdGF0ZT17aXNEZXN0cm95ZWQ6ITEsaXNDcmVhdGVkOiExLHNjcm9sbFBhcmVudHM6W119LHRoaXMucmVmZXJlbmNlPWUmJmUuanF1ZXJ5P2VbMF06ZSx0aGlzLnBvcHBlcj1uJiZuLmpxdWVyeT9uWzBdOm4sdGhpcy5vcHRpb25zLm1vZGlmaWVycz17fSxPYmplY3Qua2V5cyhVKHt9LHQuRGVmYXVsdHMubW9kaWZpZXJzLHIubW9kaWZpZXJzKSkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7aS5vcHRpb25zLm1vZGlmaWVyc1tlXT1VKHt9LHQuRGVmYXVsdHMubW9kaWZpZXJzW2VdfHx7fSxyLm1vZGlmaWVycz9yLm1vZGlmaWVyc1tlXTp7fSl9KSksdGhpcy5tb2RpZmllcnM9T2JqZWN0LmtleXModGhpcy5vcHRpb25zLm1vZGlmaWVycykubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gVSh7bmFtZTp0fSxpLm9wdGlvbnMubW9kaWZpZXJzW3RdKX0pKS5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiB0Lm9yZGVyLWUub3JkZXJ9KSksdGhpcy5tb2RpZmllcnMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5lbmFibGVkJiZUKHQub25Mb2FkKSYmdC5vbkxvYWQoaS5yZWZlcmVuY2UsaS5wb3BwZXIsaS5vcHRpb25zLHQsaS5zdGF0ZSl9KSksdGhpcy51cGRhdGUoKTt2YXIgbz10aGlzLm9wdGlvbnMuZXZlbnRzRW5hYmxlZDtvJiZ0aGlzLmVuYWJsZUV2ZW50TGlzdGVuZXJzKCksdGhpcy5zdGF0ZS5ldmVudHNFbmFibGVkPW99cmV0dXJuIHEodCxbe2tleToidXBkYXRlIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBzdC5jYWxsKHRoaXMpfX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdXQuY2FsbCh0aGlzKX19LHtrZXk6ImVuYWJsZUV2ZW50TGlzdGVuZXJzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBodC5jYWxsKHRoaXMpfX0se2tleToiZGlzYWJsZUV2ZW50TGlzdGVuZXJzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBmdC5jYWxsKHRoaXMpfX1dKSx0fSgpO190LlV0aWxzPSgidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6Z2xvYmFsKS5Qb3BwZXJVdGlscyxfdC5wbGFjZW1lbnRzPXl0LF90LkRlZmF1bHRzPXh0O3ZhciBTdD0iZHJvcGRvd24iLEN0PW4uZGVmYXVsdC5mbltTdF0sa3Q9bmV3IFJlZ0V4cCgiMzh8NDB8MjciKSxUdD17b2Zmc2V0OjAsZmxpcDohMCxib3VuZGFyeToic2Nyb2xsUGFyZW50IixyZWZlcmVuY2U6InRvZ2dsZSIsZGlzcGxheToiZHluYW1pYyIscG9wcGVyQ29uZmlnOm51bGx9LEF0PXtvZmZzZXQ6IihudW1iZXJ8c3RyaW5nfGZ1bmN0aW9uKSIsZmxpcDoiYm9vbGVhbiIsYm91bmRhcnk6IihzdHJpbmd8ZWxlbWVudCkiLHJlZmVyZW5jZToiKHN0cmluZ3xlbGVtZW50KSIsZGlzcGxheToic3RyaW5nIixwb3BwZXJDb25maWc6IihudWxsfG9iamVjdCkifSxEdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLl9lbGVtZW50PXQsdGhpcy5fcG9wcGVyPW51bGwsdGhpcy5fY29uZmlnPXRoaXMuX2dldENvbmZpZyhlKSx0aGlzLl9tZW51PXRoaXMuX2dldE1lbnVFbGVtZW50KCksdGhpcy5faW5OYXZiYXI9dGhpcy5fZGV0ZWN0TmF2YmFyKCksdGhpcy5fYWRkRXZlbnRMaXN0ZW5lcnMoKX12YXIgZT10LnByb3RvdHlwZTtyZXR1cm4gZS50b2dnbGU9ZnVuY3Rpb24oKXtpZighdGhpcy5fZWxlbWVudC5kaXNhYmxlZCYmIW4uZGVmYXVsdCh0aGlzLl9lbGVtZW50KS5oYXNDbGFzcygiZGlzYWJsZWQiKSl7dmFyIGU9bi5kZWZhdWx0KHRoaXMuX21lbnUpLmhhc0NsYXNzKCJzaG93Iik7dC5fY2xlYXJNZW51cygpLGV8fHRoaXMuc2hvdyghMCl9fSxlLnNob3c9ZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSYmKGU9ITEpLCEodGhpcy5fZWxlbWVudC5kaXNhYmxlZHx8bi5kZWZhdWx0KHRoaXMuX2VsZW1lbnQpLmhhc0NsYXNzKCJkaXNhYmxlZCIpfHxuLmRlZmF1bHQodGhpcy5fbWVudSkuaGFzQ2xhc3MoInNob3ciKSkpe3ZhciBpPXtyZWxhdGVkVGFyZ2V0OnRoaXMuX2VsZW1lbnR9LHI9bi5kZWZhdWx0LkV2ZW50KCJzaG93LmJzLmRyb3Bkb3duIixpKSxvPXQuX2dldFBhcmVudEZyb21FbGVtZW50KHRoaXMuX2VsZW1lbnQpO2lmKG4uZGVmYXVsdChvKS50cmlnZ2VyKHIpLCFyLmlzRGVmYXVsdFByZXZlbnRlZCgpKXtpZighdGhpcy5faW5OYXZiYXImJmUpe2lmKHZvaWQgMD09PV90KXRocm93IG5ldyBUeXBlRXJyb3IoIkJvb3RzdHJhcCdzIGRyb3Bkb3ducyByZXF1aXJlIFBvcHBlciAoaHR0cHM6Ly9wb3BwZXIuanMub3JnKSIpO3ZhciBzPXRoaXMuX2VsZW1lbnQ7InBhcmVudCI9PT10aGlzLl9jb25maWcucmVmZXJlbmNlP3M9bzphLmlzRWxlbWVudCh0aGlzLl9jb25maWcucmVmZXJlbmNlKSYmKHM9dGhpcy5fY29uZmlnLnJlZmVyZW5jZSx2b2lkIDAhPT10aGlzLl9jb25maWcucmVmZXJlbmNlLmpxdWVyeSYmKHM9dGhpcy5fY29uZmlnLnJlZmVyZW5jZVswXSkpLCJzY3JvbGxQYXJlbnQiIT09dGhpcy5fY29uZmlnLmJvdW5kYXJ5JiZuLmRlZmF1bHQobykuYWRkQ2xhc3MoInBvc2l0aW9uLXN0YXRpYyIpLHRoaXMuX3BvcHBlcj1uZXcgX3Qocyx0aGlzLl9tZW51LHRoaXMuX2dldFBvcHBlckNvbmZpZygpKX0ib250b3VjaHN0YXJ0ImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCYmMD09PW4uZGVmYXVsdChvKS5jbG9zZXN0KCIubmF2YmFyLW5hdiIpLmxlbmd0aCYmbi5kZWZhdWx0KGRvY3VtZW50LmJvZHkpLmNoaWxkcmVuKCkub24oIm1vdXNlb3ZlciIsbnVsbCxuLmRlZmF1bHQubm9vcCksdGhpcy5fZWxlbWVudC5mb2N1cygpLHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLWV4cGFuZGVkIiwhMCksbi5kZWZhdWx0KHRoaXMuX21lbnUpLnRvZ2dsZUNsYXNzKCJzaG93Iiksbi5kZWZhdWx0KG8pLnRvZ2dsZUNsYXNzKCJzaG93IikudHJpZ2dlcihuLmRlZmF1bHQuRXZlbnQoInNob3duLmJzLmRyb3Bkb3duIixpKSl9fX0sZS5oaWRlPWZ1bmN0aW9uKCl7aWYoIXRoaXMuX2VsZW1lbnQuZGlzYWJsZWQmJiFuLmRlZmF1bHQodGhpcy5fZWxlbWVudCkuaGFzQ2xhc3MoImRpc2FibGVkIikmJm4uZGVmYXVsdCh0aGlzLl9tZW51KS5oYXNDbGFzcygic2hvdyIpKXt2YXIgZT17cmVsYXRlZFRhcmdldDp0aGlzLl9lbGVtZW50fSxpPW4uZGVmYXVsdC5FdmVudCgiaGlkZS5icy5kcm9wZG93biIsZSkscj10Ll9nZXRQYXJlbnRGcm9tRWxlbWVudCh0aGlzLl9lbGVtZW50KTtuLmRlZmF1bHQocikudHJpZ2dlcihpKSxpLmlzRGVmYXVsdFByZXZlbnRlZCgpfHwodGhpcy5fcG9wcGVyJiZ0aGlzLl9wb3BwZXIuZGVzdHJveSgpLG4uZGVmYXVsdCh0aGlzLl9tZW51KS50b2dnbGVDbGFzcygic2hvdyIpLG4uZGVmYXVsdChyKS50b2dnbGVDbGFzcygic2hvdyIpLnRyaWdnZXIobi5kZWZhdWx0LkV2ZW50KCJoaWRkZW4uYnMuZHJvcGRvd24iLGUpKSl9fSxlLmRpc3Bvc2U9ZnVuY3Rpb24oKXtuLmRlZmF1bHQucmVtb3ZlRGF0YSh0aGlzLl9lbGVtZW50LCJicy5kcm9wZG93biIpLG4uZGVmYXVsdCh0aGlzLl9lbGVtZW50KS5vZmYoIi5icy5kcm9wZG93biIpLHRoaXMuX2VsZW1lbnQ9bnVsbCx0aGlzLl9tZW51PW51bGwsbnVsbCE9PXRoaXMuX3BvcHBlciYmKHRoaXMuX3BvcHBlci5kZXN0cm95KCksdGhpcy5fcG9wcGVyPW51bGwpfSxlLnVwZGF0ZT1mdW5jdGlvbigpe3RoaXMuX2luTmF2YmFyPXRoaXMuX2RldGVjdE5hdmJhcigpLG51bGwhPT10aGlzLl9wb3BwZXImJnRoaXMuX3BvcHBlci5zY2hlZHVsZVVwZGF0ZSgpfSxlLl9hZGRFdmVudExpc3RlbmVycz1mdW5jdGlvbigpe3ZhciB0PXRoaXM7bi5kZWZhdWx0KHRoaXMuX2VsZW1lbnQpLm9uKCJjbGljay5icy5kcm9wZG93biIsKGZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpLHQudG9nZ2xlKCl9KSl9LGUuX2dldENvbmZpZz1mdW5jdGlvbih0KXtyZXR1cm4gdD1vKHt9LHRoaXMuY29uc3RydWN0b3IuRGVmYXVsdCxuLmRlZmF1bHQodGhpcy5fZWxlbWVudCkuZGF0YSgpLHQpLGEudHlwZUNoZWNrQ29uZmlnKFN0LHQsdGhpcy5jb25zdHJ1Y3Rvci5EZWZhdWx0VHlwZSksdH0sZS5fZ2V0TWVudUVsZW1lbnQ9ZnVuY3Rpb24oKXtpZighdGhpcy5fbWVudSl7dmFyIGU9dC5fZ2V0UGFyZW50RnJvbUVsZW1lbnQodGhpcy5fZWxlbWVudCk7ZSYmKHRoaXMuX21lbnU9ZS5xdWVyeVNlbGVjdG9yKCIuZHJvcGRvd24tbWVudSIpKX1yZXR1cm4gdGhpcy5fbWVudX0sZS5fZ2V0UGxhY2VtZW50PWZ1bmN0aW9uKCl7dmFyIHQ9bi5kZWZhdWx0KHRoaXMuX2VsZW1lbnQucGFyZW50Tm9kZSksZT0iYm90dG9tLXN0YXJ0IjtyZXR1cm4gdC5oYXNDbGFzcygiZHJvcHVwIik/ZT1uLmRlZmF1bHQodGhpcy5fbWVudSkuaGFzQ2xhc3MoImRyb3Bkb3duLW1lbnUtcmlnaHQiKT8idG9wLWVuZCI6InRvcC1zdGFydCI6dC5oYXNDbGFzcygiZHJvcHJpZ2h0Iik/ZT0icmlnaHQtc3RhcnQiOnQuaGFzQ2xhc3MoImRyb3BsZWZ0Iik/ZT0ibGVmdC1zdGFydCI6bi5kZWZhdWx0KHRoaXMuX21lbnUpLmhhc0NsYXNzKCJkcm9wZG93bi1tZW51LXJpZ2h0IikmJihlPSJib3R0b20tZW5kIiksZX0sZS5fZGV0ZWN0TmF2YmFyPWZ1bmN0aW9uKCl7cmV0dXJuIG4uZGVmYXVsdCh0aGlzLl9lbGVtZW50KS5jbG9zZXN0KCIubmF2YmFyIikubGVuZ3RoPjB9LGUuX2dldE9mZnNldD1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT17fTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5fY29uZmlnLm9mZnNldD9lLmZuPWZ1bmN0aW9uKGUpe3JldHVybiBlLm9mZnNldHM9byh7fSxlLm9mZnNldHMsdC5fY29uZmlnLm9mZnNldChlLm9mZnNldHMsdC5fZWxlbWVudCl8fHt9KSxlfTplLm9mZnNldD10aGlzLl9jb25maWcub2Zmc2V0LGV9LGUuX2dldFBvcHBlckNvbmZpZz1mdW5jdGlvbigpe3ZhciB0PXtwbGFjZW1lbnQ6dGhpcy5fZ2V0UGxhY2VtZW50KCksbW9kaWZpZXJzOntvZmZzZXQ6dGhpcy5fZ2V0T2Zmc2V0KCksZmxpcDp7ZW5hYmxlZDp0aGlzLl9jb25maWcuZmxpcH0scHJldmVudE92ZXJmbG93Ontib3VuZGFyaWVzRWxlbWVudDp0aGlzLl9jb25maWcuYm91bmRhcnl9fX07cmV0dXJuInN0YXRpYyI9PT10aGlzLl9jb25maWcuZGlzcGxheSYmKHQubW9kaWZpZXJzLmFwcGx5U3R5bGU9e2VuYWJsZWQ6ITF9KSxvKHt9LHQsdGhpcy5fY29uZmlnLnBvcHBlckNvbmZpZyl9LHQuX2pRdWVyeUludGVyZmFjZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpe3ZhciBpPW4uZGVmYXVsdCh0aGlzKS5kYXRhKCJicy5kcm9wZG93biIpO2lmKGl8fChpPW5ldyB0KHRoaXMsIm9iamVjdCI9PXR5cGVvZiBlP2U6bnVsbCksbi5kZWZhdWx0KHRoaXMpLmRhdGEoImJzLmRyb3Bkb3duIixpKSksInN0cmluZyI9PXR5cGVvZiBlKXtpZih2b2lkIDA9PT1pW2VdKXRocm93IG5ldyBUeXBlRXJyb3IoJ05vIG1ldGhvZCBuYW1lZCAiJytlKyciJyk7aVtlXSgpfX0pKX0sdC5fY2xlYXJNZW51cz1mdW5jdGlvbihlKXtpZighZXx8MyE9PWUud2hpY2gmJigia2V5dXAiIT09ZS50eXBlfHw5PT09ZS53aGljaCkpZm9yKHZhciBpPVtdLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtdG9nZ2xlPSJkcm9wZG93biJdJykpLHI9MCxvPWkubGVuZ3RoO3I8bztyKyspe3ZhciBhPXQuX2dldFBhcmVudEZyb21FbGVtZW50KGlbcl0pLHM9bi5kZWZhdWx0KGlbcl0pLmRhdGEoImJzLmRyb3Bkb3duIiksbD17cmVsYXRlZFRhcmdldDppW3JdfTtpZihlJiYiY2xpY2siPT09ZS50eXBlJiYobC5jbGlja0V2ZW50PWUpLHMpe3ZhciBjPXMuX21lbnU7aWYobi5kZWZhdWx0KGEpLmhhc0NsYXNzKCJzaG93IikmJiEoZSYmKCJjbGljayI9PT1lLnR5cGUmJi9pbnB1dHx0ZXh0YXJlYS9pLnRlc3QoZS50YXJnZXQudGFnTmFtZSl8fCJrZXl1cCI9PT1lLnR5cGUmJjk9PT1lLndoaWNoKSYmbi5kZWZhdWx0LmNvbnRhaW5zKGEsZS50YXJnZXQpKSl7dmFyIHU9bi5kZWZhdWx0LkV2ZW50KCJoaWRlLmJzLmRyb3Bkb3duIixsKTtuLmRlZmF1bHQoYSkudHJpZ2dlcih1KSx1LmlzRGVmYXVsdFByZXZlbnRlZCgpfHwoIm9udG91Y2hzdGFydCJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQmJm4uZGVmYXVsdChkb2N1bWVudC5ib2R5KS5jaGlsZHJlbigpLm9mZigibW91c2VvdmVyIixudWxsLG4uZGVmYXVsdC5ub29wKSxpW3JdLnNldEF0dHJpYnV0ZSgiYXJpYS1leHBhbmRlZCIsImZhbHNlIikscy5fcG9wcGVyJiZzLl9wb3BwZXIuZGVzdHJveSgpLG4uZGVmYXVsdChjKS5yZW1vdmVDbGFzcygic2hvdyIpLG4uZGVmYXVsdChhKS5yZW1vdmVDbGFzcygic2hvdyIpLnRyaWdnZXIobi5kZWZhdWx0LkV2ZW50KCJoaWRkZW4uYnMuZHJvcGRvd24iLGwpKSl9fX19LHQuX2dldFBhcmVudEZyb21FbGVtZW50PWZ1bmN0aW9uKHQpe3ZhciBlLG49YS5nZXRTZWxlY3RvckZyb21FbGVtZW50KHQpO3JldHVybiBuJiYoZT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKG4pKSxlfHx0LnBhcmVudE5vZGV9LHQuX2RhdGFBcGlLZXlkb3duSGFuZGxlcj1mdW5jdGlvbihlKXtpZighKC9pbnB1dHx0ZXh0YXJlYS9pLnRlc3QoZS50YXJnZXQudGFnTmFtZSk/MzI9PT1lLndoaWNofHwyNyE9PWUud2hpY2gmJig0MCE9PWUud2hpY2gmJjM4IT09ZS53aGljaHx8bi5kZWZhdWx0KGUudGFyZ2V0KS5jbG9zZXN0KCIuZHJvcGRvd24tbWVudSIpLmxlbmd0aCk6IWt0LnRlc3QoZS53aGljaCkpJiYhdGhpcy5kaXNhYmxlZCYmIW4uZGVmYXVsdCh0aGlzKS5oYXNDbGFzcygiZGlzYWJsZWQiKSl7dmFyIGk9dC5fZ2V0UGFyZW50RnJvbUVsZW1lbnQodGhpcykscj1uLmRlZmF1bHQoaSkuaGFzQ2xhc3MoInNob3ciKTtpZihyfHwyNyE9PWUud2hpY2gpe2lmKGUucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpLCFyfHwyNz09PWUud2hpY2h8fDMyPT09ZS53aGljaClyZXR1cm4gMjc9PT1lLndoaWNoJiZuLmRlZmF1bHQoaS5xdWVyeVNlbGVjdG9yKCdbZGF0YS10b2dnbGU9ImRyb3Bkb3duIl0nKSkudHJpZ2dlcigiZm9jdXMiKSx2b2lkIG4uZGVmYXVsdCh0aGlzKS50cmlnZ2VyKCJjbGljayIpO3ZhciBvPVtdLnNsaWNlLmNhbGwoaS5xdWVyeVNlbGVjdG9yQWxsKCIuZHJvcGRvd24tbWVudSAuZHJvcGRvd24taXRlbTpub3QoLmRpc2FibGVkKTpub3QoOmRpc2FibGVkKSIpKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBuLmRlZmF1bHQodCkuaXMoIjp2aXNpYmxlIil9KSk7aWYoMCE9PW8ubGVuZ3RoKXt2YXIgYT1vLmluZGV4T2YoZS50YXJnZXQpOzM4PT09ZS53aGljaCYmYT4wJiZhLS0sNDA9PT1lLndoaWNoJiZhPG8ubGVuZ3RoLTEmJmErKyxhPDAmJihhPTApLG9bYV0uZm9jdXMoKX19fX0scih0LG51bGwsW3trZXk6IlZFUlNJT04iLGdldDpmdW5jdGlvbigpe3JldHVybiI0LjYuMCJ9fSx7a2V5OiJEZWZhdWx0IixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gVHR9fSx7a2V5OiJEZWZhdWx0VHlwZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEF0fX1dKSx0fSgpO24uZGVmYXVsdChkb2N1bWVudCkub24oImtleWRvd24uYnMuZHJvcGRvd24uZGF0YS1hcGkiLCdbZGF0YS10b2dnbGU9ImRyb3Bkb3duIl0nLER0Ll9kYXRhQXBpS2V5ZG93bkhhbmRsZXIpLm9uKCJrZXlkb3duLmJzLmRyb3Bkb3duLmRhdGEtYXBpIiwiLmRyb3Bkb3duLW1lbnUiLER0Ll9kYXRhQXBpS2V5ZG93bkhhbmRsZXIpLm9uKCJjbGljay5icy5kcm9wZG93bi5kYXRhLWFwaSBrZXl1cC5icy5kcm9wZG93bi5kYXRhLWFwaSIsRHQuX2NsZWFyTWVudXMpLm9uKCJjbGljay5icy5kcm9wZG93bi5kYXRhLWFwaSIsJ1tkYXRhLXRvZ2dsZT0iZHJvcGRvd24iXScsKGZ1bmN0aW9uKHQpe3QucHJldmVudERlZmF1bHQoKSx0LnN0b3BQcm9wYWdhdGlvbigpLER0Ll9qUXVlcnlJbnRlcmZhY2UuY2FsbChuLmRlZmF1bHQodGhpcyksInRvZ2dsZSIpfSkpLm9uKCJjbGljay5icy5kcm9wZG93bi5kYXRhLWFwaSIsIi5kcm9wZG93biBmb3JtIiwoZnVuY3Rpb24odCl7dC5zdG9wUHJvcGFnYXRpb24oKX0pKSxuLmRlZmF1bHQuZm5bU3RdPUR0Ll9qUXVlcnlJbnRlcmZhY2Usbi5kZWZhdWx0LmZuW1N0XS5Db25zdHJ1Y3Rvcj1EdCxuLmRlZmF1bHQuZm5bU3RdLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gbi5kZWZhdWx0LmZuW1N0XT1DdCxEdC5falF1ZXJ5SW50ZXJmYWNlfTt2YXIgRXQ9bi5kZWZhdWx0LmZuLm1vZGFsLE10PXtiYWNrZHJvcDohMCxrZXlib2FyZDohMCxmb2N1czohMCxzaG93OiEwfSxPdD17YmFja2Ryb3A6Iihib29sZWFufHN0cmluZykiLGtleWJvYXJkOiJib29sZWFuIixmb2N1czoiYm9vbGVhbiIsc2hvdzoiYm9vbGVhbiJ9LEl0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMuX2NvbmZpZz10aGlzLl9nZXRDb25maWcoZSksdGhpcy5fZWxlbWVudD10LHRoaXMuX2RpYWxvZz10LnF1ZXJ5U2VsZWN0b3IoIi5tb2RhbC1kaWFsb2ciKSx0aGlzLl9iYWNrZHJvcD1udWxsLHRoaXMuX2lzU2hvd249ITEsdGhpcy5faXNCb2R5T3ZlcmZsb3dpbmc9ITEsdGhpcy5faWdub3JlQmFja2Ryb3BDbGljaz0hMSx0aGlzLl9pc1RyYW5zaXRpb25pbmc9ITEsdGhpcy5fc2Nyb2xsYmFyV2lkdGg9MH12YXIgZT10LnByb3RvdHlwZTtyZXR1cm4gZS50b2dnbGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2lzU2hvd24/dGhpcy5oaWRlKCk6dGhpcy5zaG93KHQpfSxlLnNob3c9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZighdGhpcy5faXNTaG93biYmIXRoaXMuX2lzVHJhbnNpdGlvbmluZyl7bi5kZWZhdWx0KHRoaXMuX2VsZW1lbnQpLmhhc0NsYXNzKCJmYWRlIikmJih0aGlzLl9pc1RyYW5zaXRpb25pbmc9ITApO3ZhciBpPW4uZGVmYXVsdC5FdmVudCgic2hvdy5icy5tb2RhbCIse3JlbGF0ZWRUYXJnZXQ6dH0pO24uZGVmYXVsdCh0aGlzLl9lbGVtZW50KS50cmlnZ2VyKGkpLHRoaXMuX2lzU2hvd258fGkuaXNEZWZhdWx0UHJldmVudGVkKCl8fCh0aGlzLl9pc1Nob3duPSEwLHRoaXMuX2NoZWNrU2Nyb2xsYmFyKCksdGhpcy5fc2V0U2Nyb2xsYmFyKCksdGhpcy5fYWRqdXN0RGlhbG9nKCksdGhpcy5fc2V0RXNjYXBlRXZlbnQoKSx0aGlzLl9zZXRSZXNpemVFdmVudCgpLG4uZGVmYXVsdCh0aGlzLl9lbGVtZW50KS5vbigiY2xpY2suZGlzbWlzcy5icy5tb2RhbCIsJ1tkYXRhLWRpc21pc3M9Im1vZGFsIl0nLChmdW5jdGlvbih0KXtyZXR1cm4gZS5oaWRlKHQpfSkpLG4uZGVmYXVsdCh0aGlzLl9kaWFsb2cpLm9uKCJtb3VzZWRvd24uZGlzbWlzcy5icy5tb2RhbCIsKGZ1bmN0aW9uKCl7bi5kZWZhdWx0KGUuX2VsZW1lbnQpLm9uZSgibW91c2V1cC5kaXNtaXNzLmJzLm1vZGFsIiwoZnVuY3Rpb24odCl7bi5kZWZhdWx0KHQudGFyZ2V0KS5pcyhlLl9lbGVtZW50KSYmKGUuX2lnbm9yZUJhY2tkcm9wQ2xpY2s9ITApfSkpfSkpLHRoaXMuX3Nob3dCYWNrZHJvcCgoZnVuY3Rpb24oKXtyZXR1cm4gZS5fc2hvd0VsZW1lbnQodCl9KSkpfX0sZS5oaWRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7aWYodCYmdC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuX2lzU2hvd24mJiF0aGlzLl9pc1RyYW5zaXRpb25pbmcpe3ZhciBpPW4uZGVmYXVsdC5FdmVudCgiaGlkZS5icy5tb2RhbCIpO2lmKG4uZGVmYXVsdCh0aGlzLl9lbGVtZW50KS50cmlnZ2VyKGkpLHRoaXMuX2lzU2hvd24mJiFpLmlzRGVmYXVsdFByZXZlbnRlZCgpKXt0aGlzLl9pc1Nob3duPSExO3ZhciByPW4uZGVmYXVsdCh0aGlzLl9lbGVtZW50KS5oYXNDbGFzcygiZmFkZSIpO2lmKHImJih0aGlzLl9pc1RyYW5zaXRpb25pbmc9ITApLHRoaXMuX3NldEVzY2FwZUV2ZW50KCksdGhpcy5fc2V0UmVzaXplRXZlbnQoKSxuLmRlZmF1bHQoZG9jdW1lbnQpLm9mZigiZm9jdXNpbi5icy5tb2RhbCIpLG4uZGVmYXVsdCh0aGlzLl9lbGVtZW50KS5yZW1vdmVDbGFzcygic2hvdyIpLG4uZGVmYXVsdCh0aGlzLl9lbGVtZW50KS5vZmYoImNsaWNrLmRpc21pc3MuYnMubW9kYWwiKSxuLmRlZmF1bHQodGhpcy5fZGlhbG9nKS5vZmYoIm1vdXNlZG93bi5kaXNtaXNzLmJzLm1vZGFsIikscil7dmFyIG89YS5nZXRUcmFuc2l0aW9uRHVyYXRpb25Gcm9tRWxlbWVudCh0aGlzLl9lbGVtZW50KTtuLmRlZmF1bHQodGhpcy5fZWxlbWVudCkub25lKGEuVFJBTlNJVElPTl9FTkQsKGZ1bmN0aW9uKHQpe3JldHVybiBlLl9oaWRlTW9kYWwodCl9KSkuZW11bGF0ZVRyYW5zaXRpb25FbmQobyl9ZWxzZSB0aGlzLl9oaWRlTW9kYWwoKX19fSxlLmRpc3Bvc2U9ZnVuY3Rpb24oKXtbd2luZG93LHRoaXMuX2VsZW1lbnQsdGhpcy5fZGlhbG9nXS5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gbi5kZWZhdWx0KHQpLm9mZigiLmJzLm1vZGFsIil9KSksbi5kZWZhdWx0KGRvY3VtZW50KS5vZmYoImZvY3VzaW4uYnMubW9kYWwiKSxuLmRlZmF1bHQucmVtb3ZlRGF0YSh0aGlzLl9lbGVtZW50LCJicy5tb2RhbCIpLHRoaXMuX2NvbmZpZz1udWxsLHRoaXMuX2VsZW1lbnQ9bnVsbCx0aGlzLl9kaWFsb2c9bnVsbCx0aGlzLl9iYWNrZHJvcD1udWxsLHRoaXMuX2lzU2hvd249bnVsbCx0aGlzLl9pc0JvZHlPdmVyZmxvd2luZz1udWxsLHRoaXMuX2lnbm9yZUJhY2tkcm9wQ2xpY2s9bnVsbCx0aGlzLl9pc1RyYW5zaXRpb25pbmc9bnVsbCx0aGlzLl9zY3JvbGxiYXJXaWR0aD1udWxsfSxlLmhhbmRsZVVwZGF0ZT1mdW5jdGlvbigpe3RoaXMuX2FkanVzdERpYWxvZygpfSxlLl9nZXRDb25maWc9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9byh7fSxNdCx0KSxhLnR5cGVDaGVja0NvbmZpZygibW9kYWwiLHQsT3QpLHR9LGUuX3RyaWdnZXJCYWNrZHJvcFRyYW5zaXRpb249ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9bi5kZWZhdWx0LkV2ZW50KCJoaWRlUHJldmVudGVkLmJzLm1vZGFsIik7aWYobi5kZWZhdWx0KHRoaXMuX2VsZW1lbnQpLnRyaWdnZXIoZSksIWUuaXNEZWZhdWx0UHJldmVudGVkKCkpe3ZhciBpPXRoaXMuX2VsZW1lbnQuc2Nyb2xsSGVpZ2h0PmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ7aXx8KHRoaXMuX2VsZW1lbnQuc3R5bGUub3ZlcmZsb3dZPSJoaWRkZW4iKSx0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoIm1vZGFsLXN0YXRpYyIpO3ZhciByPWEuZ2V0VHJhbnNpdGlvbkR1cmF0aW9uRnJvbUVsZW1lbnQodGhpcy5fZGlhbG9nKTtuLmRlZmF1bHQodGhpcy5fZWxlbWVudCkub2ZmKGEuVFJBTlNJVElPTl9FTkQpLG4uZGVmYXVsdCh0aGlzLl9lbGVtZW50KS5vbmUoYS5UUkFOU0lUSU9OX0VORCwoZnVuY3Rpb24oKXt0Ll9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoIm1vZGFsLXN0YXRpYyIpLGl8fG4uZGVmYXVsdCh0Ll9lbGVtZW50KS5vbmUoYS5UUkFOU0lUSU9OX0VORCwoZnVuY3Rpb24oKXt0Ll9lbGVtZW50LnN0eWxlLm92ZXJmbG93WT0iIn0pKS5lbXVsYXRlVHJhbnNpdGlvbkVuZCh0Ll9lbGVtZW50LHIpfSkpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKHIpLHRoaXMuX2VsZW1lbnQuZm9jdXMoKX19LGUuX3Nob3dFbGVtZW50PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsaT1uLmRlZmF1bHQodGhpcy5fZWxlbWVudCkuaGFzQ2xhc3MoImZhZGUiKSxyPXRoaXMuX2RpYWxvZz90aGlzLl9kaWFsb2cucXVlcnlTZWxlY3RvcigiLm1vZGFsLWJvZHkiKTpudWxsO3RoaXMuX2VsZW1lbnQucGFyZW50Tm9kZSYmdGhpcy5fZWxlbWVudC5wYXJlbnROb2RlLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREV8fGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5fZWxlbWVudCksdGhpcy5fZWxlbWVudC5zdHlsZS5kaXNwbGF5PSJibG9jayIsdGhpcy5fZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIiksdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtbW9kYWwiLCEwKSx0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgicm9sZSIsImRpYWxvZyIpLG4uZGVmYXVsdCh0aGlzLl9kaWFsb2cpLmhhc0NsYXNzKCJtb2RhbC1kaWFsb2ctc2Nyb2xsYWJsZSIpJiZyP3Iuc2Nyb2xsVG9wPTA6dGhpcy5fZWxlbWVudC5zY3JvbGxUb3A9MCxpJiZhLnJlZmxvdyh0aGlzLl9lbGVtZW50KSxuLmRlZmF1bHQodGhpcy5fZWxlbWVudCkuYWRkQ2xhc3MoInNob3ciKSx0aGlzLl9jb25maWcuZm9jdXMmJnRoaXMuX2VuZm9yY2VGb2N1cygpO3ZhciBvPW4uZGVmYXVsdC5FdmVudCgic2hvd24uYnMubW9kYWwiLHtyZWxhdGVkVGFyZ2V0OnR9KSxzPWZ1bmN0aW9uKCl7ZS5fY29uZmlnLmZvY3VzJiZlLl9lbGVtZW50LmZvY3VzKCksZS5faXNUcmFuc2l0aW9uaW5nPSExLG4uZGVmYXVsdChlLl9lbGVtZW50KS50cmlnZ2VyKG8pfTtpZihpKXt2YXIgbD1hLmdldFRyYW5zaXRpb25EdXJhdGlvbkZyb21FbGVtZW50KHRoaXMuX2RpYWxvZyk7bi5kZWZhdWx0KHRoaXMuX2RpYWxvZykub25lKGEuVFJBTlNJVElPTl9FTkQscykuZW11bGF0ZVRyYW5zaXRpb25FbmQobCl9ZWxzZSBzKCl9LGUuX2VuZm9yY2VGb2N1cz1mdW5jdGlvbigpe3ZhciB0PXRoaXM7bi5kZWZhdWx0KGRvY3VtZW50KS5vZmYoImZvY3VzaW4uYnMubW9kYWwiKS5vbigiZm9jdXNpbi5icy5tb2RhbCIsKGZ1bmN0aW9uKGUpe2RvY3VtZW50IT09ZS50YXJnZXQmJnQuX2VsZW1lbnQhPT1lLnRhcmdldCYmMD09PW4uZGVmYXVsdCh0Ll9lbGVtZW50KS5oYXMoZS50YXJnZXQpLmxlbmd0aCYmdC5fZWxlbWVudC5mb2N1cygpfSkpfSxlLl9zZXRFc2NhcGVFdmVudD1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5faXNTaG93bj9uLmRlZmF1bHQodGhpcy5fZWxlbWVudCkub24oImtleWRvd24uZGlzbWlzcy5icy5tb2RhbCIsKGZ1bmN0aW9uKGUpe3QuX2NvbmZpZy5rZXlib2FyZCYmMjc9PT1lLndoaWNoPyhlLnByZXZlbnREZWZhdWx0KCksdC5oaWRlKCkpOnQuX2NvbmZpZy5rZXlib2FyZHx8MjchPT1lLndoaWNofHx0Ll90cmlnZ2VyQmFja2Ryb3BUcmFuc2l0aW9uKCl9KSk6dGhpcy5faXNTaG93bnx8bi5kZWZhdWx0KHRoaXMuX2VsZW1lbnQpLm9mZigia2V5ZG93bi5kaXNtaXNzLmJzLm1vZGFsIil9LGUuX3NldFJlc2l6ZUV2ZW50PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLl9pc1Nob3duP24uZGVmYXVsdCh3aW5kb3cpLm9uKCJyZXNpemUuYnMubW9kYWwiLChmdW5jdGlvbihlKXtyZXR1cm4gdC5oYW5kbGVVcGRhdGUoZSl9KSk6bi5kZWZhdWx0KHdpbmRvdykub2ZmKCJyZXNpemUuYnMubW9kYWwiKX0sZS5faGlkZU1vZGFsPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLl9lbGVtZW50LnN0eWxlLmRpc3BsYXk9Im5vbmUiLHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLWhpZGRlbiIsITApLHRoaXMuX2VsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCJhcmlhLW1vZGFsIiksdGhpcy5fZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoInJvbGUiKSx0aGlzLl9pc1RyYW5zaXRpb25pbmc9ITEsdGhpcy5fc2hvd0JhY2tkcm9wKChmdW5jdGlvbigpe24uZGVmYXVsdChkb2N1bWVudC5ib2R5KS5yZW1vdmVDbGFzcygibW9kYWwtb3BlbiIpLHQuX3Jlc2V0QWRqdXN0bWVudHMoKSx0Ll9yZXNldFNjcm9sbGJhcigpLG4uZGVmYXVsdCh0Ll9lbGVtZW50KS50cmlnZ2VyKCJoaWRkZW4uYnMubW9kYWwiKX0pKX0sZS5fcmVtb3ZlQmFja2Ryb3A9ZnVuY3Rpb24oKXt0aGlzLl9iYWNrZHJvcCYmKG4uZGVmYXVsdCh0aGlzLl9iYWNrZHJvcCkucmVtb3ZlKCksdGhpcy5fYmFja2Ryb3A9bnVsbCl9LGUuX3Nob3dCYWNrZHJvcD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLGk9bi5kZWZhdWx0KHRoaXMuX2VsZW1lbnQpLmhhc0NsYXNzKCJmYWRlIik/ImZhZGUiOiIiO2lmKHRoaXMuX2lzU2hvd24mJnRoaXMuX2NvbmZpZy5iYWNrZHJvcCl7aWYodGhpcy5fYmFja2Ryb3A9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5fYmFja2Ryb3AuY2xhc3NOYW1lPSJtb2RhbC1iYWNrZHJvcCIsaSYmdGhpcy5fYmFja2Ryb3AuY2xhc3NMaXN0LmFkZChpKSxuLmRlZmF1bHQodGhpcy5fYmFja2Ryb3ApLmFwcGVuZFRvKGRvY3VtZW50LmJvZHkpLG4uZGVmYXVsdCh0aGlzLl9lbGVtZW50KS5vbigiY2xpY2suZGlzbWlzcy5icy5tb2RhbCIsKGZ1bmN0aW9uKHQpe2UuX2lnbm9yZUJhY2tkcm9wQ2xpY2s/ZS5faWdub3JlQmFja2Ryb3BDbGljaz0hMTp0LnRhcmdldD09PXQuY3VycmVudFRhcmdldCYmKCJzdGF0aWMiPT09ZS5fY29uZmlnLmJhY2tkcm9wP2UuX3RyaWdnZXJCYWNrZHJvcFRyYW5zaXRpb24oKTplLmhpZGUoKSl9KSksaSYmYS5yZWZsb3codGhpcy5fYmFja2Ryb3ApLG4uZGVmYXVsdCh0aGlzLl9iYWNrZHJvcCkuYWRkQ2xhc3MoInNob3ciKSwhdClyZXR1cm47aWYoIWkpcmV0dXJuIHZvaWQgdCgpO3ZhciByPWEuZ2V0VHJhbnNpdGlvbkR1cmF0aW9uRnJvbUVsZW1lbnQodGhpcy5fYmFja2Ryb3ApO24uZGVmYXVsdCh0aGlzLl9iYWNrZHJvcCkub25lKGEuVFJBTlNJVElPTl9FTkQsdCkuZW11bGF0ZVRyYW5zaXRpb25FbmQocil9ZWxzZSBpZighdGhpcy5faXNTaG93biYmdGhpcy5fYmFja2Ryb3Ape24uZGVmYXVsdCh0aGlzLl9iYWNrZHJvcCkucmVtb3ZlQ2xhc3MoInNob3ciKTt2YXIgbz1mdW5jdGlvbigpe2UuX3JlbW92ZUJhY2tkcm9wKCksdCYmdCgpfTtpZihuLmRlZmF1bHQodGhpcy5fZWxlbWVudCkuaGFzQ2xhc3MoImZhZGUiKSl7dmFyIHM9YS5nZXRUcmFuc2l0aW9uRHVyYXRpb25Gcm9tRWxlbWVudCh0aGlzLl9iYWNrZHJvcCk7bi5kZWZhdWx0KHRoaXMuX2JhY2tkcm9wKS5vbmUoYS5UUkFOU0lUSU9OX0VORCxvKS5lbXVsYXRlVHJhbnNpdGlvbkVuZChzKX1lbHNlIG8oKX1lbHNlIHQmJnQoKX0sZS5fYWRqdXN0RGlhbG9nPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZWxlbWVudC5zY3JvbGxIZWlnaHQ+ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodDshdGhpcy5faXNCb2R5T3ZlcmZsb3dpbmcmJnQmJih0aGlzLl9lbGVtZW50LnN0eWxlLnBhZGRpbmdMZWZ0PXRoaXMuX3Njcm9sbGJhcldpZHRoKyJweCIpLHRoaXMuX2lzQm9keU92ZXJmbG93aW5nJiYhdCYmKHRoaXMuX2VsZW1lbnQuc3R5bGUucGFkZGluZ1JpZ2h0PXRoaXMuX3Njcm9sbGJhcldpZHRoKyJweCIpfSxlLl9yZXNldEFkanVzdG1lbnRzPWZ1bmN0aW9uKCl7dGhpcy5fZWxlbWVudC5zdHlsZS5wYWRkaW5nTGVmdD0iIix0aGlzLl9lbGVtZW50LnN0eWxlLnBhZGRpbmdSaWdodD0iIn0sZS5fY2hlY2tTY3JvbGxiYXI9ZnVuY3Rpb24oKXt2YXIgdD1kb2N1bWVudC5ib2R5LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3RoaXMuX2lzQm9keU92ZXJmbG93aW5nPU1hdGgucm91bmQodC5sZWZ0K3QucmlnaHQpPHdpbmRvdy5pbm5lcldpZHRoLHRoaXMuX3Njcm9sbGJhcldpZHRoPXRoaXMuX2dldFNjcm9sbGJhcldpZHRoKCl9LGUuX3NldFNjcm9sbGJhcj1mdW5jdGlvbigpe3ZhciB0PXRoaXM7aWYodGhpcy5faXNCb2R5T3ZlcmZsb3dpbmcpe3ZhciBlPVtdLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmZpeGVkLXRvcCwgLmZpeGVkLWJvdHRvbSwgLmlzLWZpeGVkLCAuc3RpY2t5LXRvcCIpKSxpPVtdLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLnN0aWNreS10b3AiKSk7bi5kZWZhdWx0KGUpLmVhY2goKGZ1bmN0aW9uKGUsaSl7dmFyIHI9aS5zdHlsZS5wYWRkaW5nUmlnaHQsbz1uLmRlZmF1bHQoaSkuY3NzKCJwYWRkaW5nLXJpZ2h0Iik7bi5kZWZhdWx0KGkpLmRhdGEoInBhZGRpbmctcmlnaHQiLHIpLmNzcygicGFkZGluZy1yaWdodCIscGFyc2VGbG9hdChvKSt0Ll9zY3JvbGxiYXJXaWR0aCsicHgiKX0pKSxuLmRlZmF1bHQoaSkuZWFjaCgoZnVuY3Rpb24oZSxpKXt2YXIgcj1pLnN0eWxlLm1hcmdpblJpZ2h0LG89bi5kZWZhdWx0KGkpLmNzcygibWFyZ2luLXJpZ2h0Iik7bi5kZWZhdWx0KGkpLmRhdGEoIm1hcmdpbi1yaWdodCIscikuY3NzKCJtYXJnaW4tcmlnaHQiLHBhcnNlRmxvYXQobyktdC5fc2Nyb2xsYmFyV2lkdGgrInB4Iil9KSk7dmFyIHI9ZG9jdW1lbnQuYm9keS5zdHlsZS5wYWRkaW5nUmlnaHQsbz1uLmRlZmF1bHQoZG9jdW1lbnQuYm9keSkuY3NzKCJwYWRkaW5nLXJpZ2h0Iik7bi5kZWZhdWx0KGRvY3VtZW50LmJvZHkpLmRhdGEoInBhZGRpbmctcmlnaHQiLHIpLmNzcygicGFkZGluZy1yaWdodCIscGFyc2VGbG9hdChvKSt0aGlzLl9zY3JvbGxiYXJXaWR0aCsicHgiKX1uLmRlZmF1bHQoZG9jdW1lbnQuYm9keSkuYWRkQ2xhc3MoIm1vZGFsLW9wZW4iKX0sZS5fcmVzZXRTY3JvbGxiYXI9ZnVuY3Rpb24oKXt2YXIgdD1bXS5zbGljZS5jYWxsKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5maXhlZC10b3AsIC5maXhlZC1ib3R0b20sIC5pcy1maXhlZCwgLnN0aWNreS10b3AiKSk7bi5kZWZhdWx0KHQpLmVhY2goKGZ1bmN0aW9uKHQsZSl7dmFyIGk9bi5kZWZhdWx0KGUpLmRhdGEoInBhZGRpbmctcmlnaHQiKTtuLmRlZmF1bHQoZSkucmVtb3ZlRGF0YSgicGFkZGluZy1yaWdodCIpLGUuc3R5bGUucGFkZGluZ1JpZ2h0PWl8fCIifSkpO3ZhciBlPVtdLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLnN0aWNreS10b3AiKSk7bi5kZWZhdWx0KGUpLmVhY2goKGZ1bmN0aW9uKHQsZSl7dmFyIGk9bi5kZWZhdWx0KGUpLmRhdGEoIm1hcmdpbi1yaWdodCIpO3ZvaWQgMCE9PWkmJm4uZGVmYXVsdChlKS5jc3MoIm1hcmdpbi1yaWdodCIsaSkucmVtb3ZlRGF0YSgibWFyZ2luLXJpZ2h0Iil9KSk7dmFyIGk9bi5kZWZhdWx0KGRvY3VtZW50LmJvZHkpLmRhdGEoInBhZGRpbmctcmlnaHQiKTtuLmRlZmF1bHQoZG9jdW1lbnQuYm9keSkucmVtb3ZlRGF0YSgicGFkZGluZy1yaWdodCIpLGRvY3VtZW50LmJvZHkuc3R5bGUucGFkZGluZ1JpZ2h0PWl8fCIifSxlLl9nZXRTY3JvbGxiYXJXaWR0aD1mdW5jdGlvbigpe3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3QuY2xhc3NOYW1lPSJtb2RhbC1zY3JvbGxiYXItbWVhc3VyZSIsZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0KTt2YXIgZT10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoLXQuY2xpZW50V2lkdGg7cmV0dXJuIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodCksZX0sdC5falF1ZXJ5SW50ZXJmYWNlPWZ1bmN0aW9uKGUsaSl7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXt2YXIgcj1uLmRlZmF1bHQodGhpcykuZGF0YSgiYnMubW9kYWwiKSxhPW8oe30sTXQsbi5kZWZhdWx0KHRoaXMpLmRhdGEoKSwib2JqZWN0Ij09dHlwZW9mIGUmJmU/ZTp7fSk7aWYocnx8KHI9bmV3IHQodGhpcyxhKSxuLmRlZmF1bHQodGhpcykuZGF0YSgiYnMubW9kYWwiLHIpKSwic3RyaW5nIj09dHlwZW9mIGUpe2lmKHZvaWQgMD09PXJbZV0pdGhyb3cgbmV3IFR5cGVFcnJvcignTm8gbWV0aG9kIG5hbWVkICInK2UrJyInKTtyW2VdKGkpfWVsc2UgYS5zaG93JiZyLnNob3coaSl9KSl9LHIodCxudWxsLFt7a2V5OiJWRVJTSU9OIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iNC42LjAifX0se2tleToiRGVmYXVsdCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIE10fX1dKSx0fSgpO24uZGVmYXVsdChkb2N1bWVudCkub24oImNsaWNrLmJzLm1vZGFsLmRhdGEtYXBpIiwnW2RhdGEtdG9nZ2xlPSJtb2RhbCJdJywoZnVuY3Rpb24odCl7dmFyIGUsaT10aGlzLHI9YS5nZXRTZWxlY3RvckZyb21FbGVtZW50KHRoaXMpO3ImJihlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IocikpO3ZhciBzPW4uZGVmYXVsdChlKS5kYXRhKCJicy5tb2RhbCIpPyJ0b2dnbGUiOm8oe30sbi5kZWZhdWx0KGUpLmRhdGEoKSxuLmRlZmF1bHQodGhpcykuZGF0YSgpKTsiQSIhPT10aGlzLnRhZ05hbWUmJiJBUkVBIiE9PXRoaXMudGFnTmFtZXx8dC5wcmV2ZW50RGVmYXVsdCgpO3ZhciBsPW4uZGVmYXVsdChlKS5vbmUoInNob3cuYnMubW9kYWwiLChmdW5jdGlvbih0KXt0LmlzRGVmYXVsdFByZXZlbnRlZCgpfHxsLm9uZSgiaGlkZGVuLmJzLm1vZGFsIiwoZnVuY3Rpb24oKXtuLmRlZmF1bHQoaSkuaXMoIjp2aXNpYmxlIikmJmkuZm9jdXMoKX0pKX0pKTtJdC5falF1ZXJ5SW50ZXJmYWNlLmNhbGwobi5kZWZhdWx0KGUpLHMsdGhpcyl9KSksbi5kZWZhdWx0LmZuLm1vZGFsPUl0Ll9qUXVlcnlJbnRlcmZhY2Usbi5kZWZhdWx0LmZuLm1vZGFsLkNvbnN0cnVjdG9yPUl0LG4uZGVmYXVsdC5mbi5tb2RhbC5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIG4uZGVmYXVsdC5mbi5tb2RhbD1FdCxJdC5falF1ZXJ5SW50ZXJmYWNlfTt2YXIgUHQ9WyJiYWNrZ3JvdW5kIiwiY2l0ZSIsImhyZWYiLCJpdGVtdHlwZSIsImxvbmdkZXNjIiwicG9zdGVyIiwic3JjIiwieGxpbms6aHJlZiJdLEx0PS9eKD86KD86aHR0cHM/fG1haWx0b3xmdHB8dGVsfGZpbGUpOnxbXiMmLzo/XSooPzpbIy8/XXwkKSkvZ2ksTnQ9L15kYXRhOig/OmltYWdlXC8oPzpibXB8Z2lmfGpwZWd8anBnfHBuZ3x0aWZmfHdlYnApfHZpZGVvXC8oPzptcGVnfG1wNHxvZ2d8d2VibSl8YXVkaW9cLyg/Om1wM3xvZ2F8b2dnfG9wdXMpKTtiYXNlNjQsW1xkKy9hLXpdKz0qJC9pO2Z1bmN0aW9uIEZ0KHQsZSxuKXtpZigwPT09dC5sZW5ndGgpcmV0dXJuIHQ7aWYobiYmImZ1bmN0aW9uIj09dHlwZW9mIG4pcmV0dXJuIG4odCk7Zm9yKHZhciBpPShuZXcgd2luZG93LkRPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKHQsInRleHQvaHRtbCIpLHI9T2JqZWN0LmtleXMoZSksbz1bXS5zbGljZS5jYWxsKGkuYm9keS5xdWVyeVNlbGVjdG9yQWxsKCIqIikpLGE9ZnVuY3Rpb24odCxuKXt2YXIgaT1vW3RdLGE9aS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO2lmKC0xPT09ci5pbmRleE9mKGkubm9kZU5hbWUudG9Mb3dlckNhc2UoKSkpcmV0dXJuIGkucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChpKSwiY29udGludWUiO3ZhciBzPVtdLnNsaWNlLmNhbGwoaS5hdHRyaWJ1dGVzKSxsPVtdLmNvbmNhdChlWyIqIl18fFtdLGVbYV18fFtdKTtzLmZvckVhY2goKGZ1bmN0aW9uKHQpeyhmdW5jdGlvbih0LGUpe3ZhciBuPXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZigtMSE9PWUuaW5kZXhPZihuKSlyZXR1cm4tMT09PVB0LmluZGV4T2Yobil8fEJvb2xlYW4odC5ub2RlVmFsdWUubWF0Y2goTHQpfHx0Lm5vZGVWYWx1ZS5tYXRjaChOdCkpO2Zvcih2YXIgaT1lLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBSZWdFeHB9KSkscj0wLG89aS5sZW5ndGg7cjxvO3IrKylpZihuLm1hdGNoKGlbcl0pKXJldHVybiEwO3JldHVybiExfSkodCxsKXx8aS5yZW1vdmVBdHRyaWJ1dGUodC5ub2RlTmFtZSl9KSl9LHM9MCxsPW8ubGVuZ3RoO3M8bDtzKyspYShzKTtyZXR1cm4gaS5ib2R5LmlubmVySFRNTH12YXIgUnQ9InRvb2x0aXAiLGp0PW4uZGVmYXVsdC5mbltSdF0sJHQ9bmV3IFJlZ0V4cCgiKF58XFxzKWJzLXRvb2x0aXBcXFMrIiwiZyIpLHp0PVsic2FuaXRpemUiLCJ3aGl0ZUxpc3QiLCJzYW5pdGl6ZUZuIl0sSHQ9e2FuaW1hdGlvbjoiYm9vbGVhbiIsdGVtcGxhdGU6InN0cmluZyIsdGl0bGU6IihzdHJpbmd8ZWxlbWVudHxmdW5jdGlvbikiLHRyaWdnZXI6InN0cmluZyIsZGVsYXk6IihudW1iZXJ8b2JqZWN0KSIsaHRtbDoiYm9vbGVhbiIsc2VsZWN0b3I6IihzdHJpbmd8Ym9vbGVhbikiLHBsYWNlbWVudDoiKHN0cmluZ3xmdW5jdGlvbikiLG9mZnNldDoiKG51bWJlcnxzdHJpbmd8ZnVuY3Rpb24pIixjb250YWluZXI6IihzdHJpbmd8ZWxlbWVudHxib29sZWFuKSIsZmFsbGJhY2tQbGFjZW1lbnQ6IihzdHJpbmd8YXJyYXkpIixib3VuZGFyeToiKHN0cmluZ3xlbGVtZW50KSIsY3VzdG9tQ2xhc3M6IihzdHJpbmd8ZnVuY3Rpb24pIixzYW5pdGl6ZToiYm9vbGVhbiIsc2FuaXRpemVGbjoiKG51bGx8ZnVuY3Rpb24pIix3aGl0ZUxpc3Q6Im9iamVjdCIscG9wcGVyQ29uZmlnOiIobnVsbHxvYmplY3QpIn0sQnQ9e0FVVE86ImF1dG8iLFRPUDoidG9wIixSSUdIVDoicmlnaHQiLEJPVFRPTToiYm90dG9tIixMRUZUOiJsZWZ0In0scXQ9e2FuaW1hdGlvbjohMCx0ZW1wbGF0ZTonPGRpdiBjbGFzcz0idG9vbHRpcCIgcm9sZT0idG9vbHRpcCI+PGRpdiBjbGFzcz0iYXJyb3ciPjwvZGl2PjxkaXYgY2xhc3M9InRvb2x0aXAtaW5uZXIiPjwvZGl2PjwvZGl2PicsdHJpZ2dlcjoiaG92ZXIgZm9jdXMiLHRpdGxlOiIiLGRlbGF5OjAsaHRtbDohMSxzZWxlY3RvcjohMSxwbGFjZW1lbnQ6InRvcCIsb2Zmc2V0OjAsY29udGFpbmVyOiExLGZhbGxiYWNrUGxhY2VtZW50OiJmbGlwIixib3VuZGFyeToic2Nyb2xsUGFyZW50IixjdXN0b21DbGFzczoiIixzYW5pdGl6ZTohMCxzYW5pdGl6ZUZuOm51bGwsd2hpdGVMaXN0OnsiKiI6WyJjbGFzcyIsImRpciIsImlkIiwibGFuZyIsInJvbGUiLC9eYXJpYS1bXHctXSokL2ldLGE6WyJ0YXJnZXQiLCJocmVmIiwidGl0bGUiLCJyZWwiXSxhcmVhOltdLGI6W10sYnI6W10sY29sOltdLGNvZGU6W10sZGl2OltdLGVtOltdLGhyOltdLGgxOltdLGgyOltdLGgzOltdLGg0OltdLGg1OltdLGg2OltdLGk6W10saW1nOlsic3JjIiwic3Jjc2V0IiwiYWx0IiwidGl0bGUiLCJ3aWR0aCIsImhlaWdodCJdLGxpOltdLG9sOltdLHA6W10scHJlOltdLHM6W10sc21hbGw6W10sc3BhbjpbXSxzdWI6W10sc3VwOltdLHN0cm9uZzpbXSx1OltdLHVsOltdfSxwb3BwZXJDb25maWc6bnVsbH0sV3Q9e0hJREU6ImhpZGUuYnMudG9vbHRpcCIsSElEREVOOiJoaWRkZW4uYnMudG9vbHRpcCIsU0hPVzoic2hvdy5icy50b29sdGlwIixTSE9XTjoic2hvd24uYnMudG9vbHRpcCIsSU5TRVJURUQ6Imluc2VydGVkLmJzLnRvb2x0aXAiLENMSUNLOiJjbGljay5icy50b29sdGlwIixGT0NVU0lOOiJmb2N1c2luLmJzLnRvb2x0aXAiLEZPQ1VTT1VUOiJmb2N1c291dC5icy50b29sdGlwIixNT1VTRUVOVEVSOiJtb3VzZWVudGVyLmJzLnRvb2x0aXAiLE1PVVNFTEVBVkU6Im1vdXNlbGVhdmUuYnMudG9vbHRpcCJ9LFV0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe2lmKHZvaWQgMD09PV90KXRocm93IG5ldyBUeXBlRXJyb3IoIkJvb3RzdHJhcCdzIHRvb2x0aXBzIHJlcXVpcmUgUG9wcGVyIChodHRwczovL3BvcHBlci5qcy5vcmcpIik7dGhpcy5faXNFbmFibGVkPSEwLHRoaXMuX3RpbWVvdXQ9MCx0aGlzLl9ob3ZlclN0YXRlPSIiLHRoaXMuX2FjdGl2ZVRyaWdnZXI9e30sdGhpcy5fcG9wcGVyPW51bGwsdGhpcy5lbGVtZW50PXQsdGhpcy5jb25maWc9dGhpcy5fZ2V0Q29uZmlnKGUpLHRoaXMudGlwPW51bGwsdGhpcy5fc2V0TGlzdGVuZXJzKCl9dmFyIGU9dC5wcm90b3R5cGU7cmV0dXJuIGUuZW5hYmxlPWZ1bmN0aW9uKCl7dGhpcy5faXNFbmFibGVkPSEwfSxlLmRpc2FibGU9ZnVuY3Rpb24oKXt0aGlzLl9pc0VuYWJsZWQ9ITF9LGUudG9nZ2xlRW5hYmxlZD1mdW5jdGlvbigpe3RoaXMuX2lzRW5hYmxlZD0hdGhpcy5faXNFbmFibGVkfSxlLnRvZ2dsZT1mdW5jdGlvbih0KXtpZih0aGlzLl9pc0VuYWJsZWQpaWYodCl7dmFyIGU9dGhpcy5jb25zdHJ1Y3Rvci5EQVRBX0tFWSxpPW4uZGVmYXVsdCh0LmN1cnJlbnRUYXJnZXQpLmRhdGEoZSk7aXx8KGk9bmV3IHRoaXMuY29uc3RydWN0b3IodC5jdXJyZW50VGFyZ2V0LHRoaXMuX2dldERlbGVnYXRlQ29uZmlnKCkpLG4uZGVmYXVsdCh0LmN1cnJlbnRUYXJnZXQpLmRhdGEoZSxpKSksaS5fYWN0aXZlVHJpZ2dlci5jbGljaz0haS5fYWN0aXZlVHJpZ2dlci5jbGljayxpLl9pc1dpdGhBY3RpdmVUcmlnZ2VyKCk/aS5fZW50ZXIobnVsbCxpKTppLl9sZWF2ZShudWxsLGkpfWVsc2V7aWYobi5kZWZhdWx0KHRoaXMuZ2V0VGlwRWxlbWVudCgpKS5oYXNDbGFzcygic2hvdyIpKXJldHVybiB2b2lkIHRoaXMuX2xlYXZlKG51bGwsdGhpcyk7dGhpcy5fZW50ZXIobnVsbCx0aGlzKX19LGUuZGlzcG9zZT1mdW5jdGlvbigpe2NsZWFyVGltZW91dCh0aGlzLl90aW1lb3V0KSxuLmRlZmF1bHQucmVtb3ZlRGF0YSh0aGlzLmVsZW1lbnQsdGhpcy5jb25zdHJ1Y3Rvci5EQVRBX0tFWSksbi5kZWZhdWx0KHRoaXMuZWxlbWVudCkub2ZmKHRoaXMuY29uc3RydWN0b3IuRVZFTlRfS0VZKSxuLmRlZmF1bHQodGhpcy5lbGVtZW50KS5jbG9zZXN0KCIubW9kYWwiKS5vZmYoImhpZGUuYnMubW9kYWwiLHRoaXMuX2hpZGVNb2RhbEhhbmRsZXIpLHRoaXMudGlwJiZuLmRlZmF1bHQodGhpcy50aXApLnJlbW92ZSgpLHRoaXMuX2lzRW5hYmxlZD1udWxsLHRoaXMuX3RpbWVvdXQ9bnVsbCx0aGlzLl9ob3ZlclN0YXRlPW51bGwsdGhpcy5fYWN0aXZlVHJpZ2dlcj1udWxsLHRoaXMuX3BvcHBlciYmdGhpcy5fcG9wcGVyLmRlc3Ryb3koKSx0aGlzLl9wb3BwZXI9bnVsbCx0aGlzLmVsZW1lbnQ9bnVsbCx0aGlzLmNvbmZpZz1udWxsLHRoaXMudGlwPW51bGx9LGUuc2hvdz1mdW5jdGlvbigpe3ZhciB0PXRoaXM7aWYoIm5vbmUiPT09bi5kZWZhdWx0KHRoaXMuZWxlbWVudCkuY3NzKCJkaXNwbGF5IikpdGhyb3cgbmV3IEVycm9yKCJQbGVhc2UgdXNlIHNob3cgb24gdmlzaWJsZSBlbGVtZW50cyIpO3ZhciBlPW4uZGVmYXVsdC5FdmVudCh0aGlzLmNvbnN0cnVjdG9yLkV2ZW50LlNIT1cpO2lmKHRoaXMuaXNXaXRoQ29udGVudCgpJiZ0aGlzLl9pc0VuYWJsZWQpe24uZGVmYXVsdCh0aGlzLmVsZW1lbnQpLnRyaWdnZXIoZSk7dmFyIGk9YS5maW5kU2hhZG93Um9vdCh0aGlzLmVsZW1lbnQpLHI9bi5kZWZhdWx0LmNvbnRhaW5zKG51bGwhPT1pP2k6dGhpcy5lbGVtZW50Lm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LHRoaXMuZWxlbWVudCk7aWYoZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8IXIpcmV0dXJuO3ZhciBvPXRoaXMuZ2V0VGlwRWxlbWVudCgpLHM9YS5nZXRVSUQodGhpcy5jb25zdHJ1Y3Rvci5OQU1FKTtvLnNldEF0dHJpYnV0ZSgiaWQiLHMpLHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtZGVzY3JpYmVkYnkiLHMpLHRoaXMuc2V0Q29udGVudCgpLHRoaXMuY29uZmlnLmFuaW1hdGlvbiYmbi5kZWZhdWx0KG8pLmFkZENsYXNzKCJmYWRlIik7dmFyIGw9ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuY29uZmlnLnBsYWNlbWVudD90aGlzLmNvbmZpZy5wbGFjZW1lbnQuY2FsbCh0aGlzLG8sdGhpcy5lbGVtZW50KTp0aGlzLmNvbmZpZy5wbGFjZW1lbnQsYz10aGlzLl9nZXRBdHRhY2htZW50KGwpO3RoaXMuYWRkQXR0YWNobWVudENsYXNzKGMpO3ZhciB1PXRoaXMuX2dldENvbnRhaW5lcigpO24uZGVmYXVsdChvKS5kYXRhKHRoaXMuY29uc3RydWN0b3IuREFUQV9LRVksdGhpcyksbi5kZWZhdWx0LmNvbnRhaW5zKHRoaXMuZWxlbWVudC5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCx0aGlzLnRpcCl8fG4uZGVmYXVsdChvKS5hcHBlbmRUbyh1KSxuLmRlZmF1bHQodGhpcy5lbGVtZW50KS50cmlnZ2VyKHRoaXMuY29uc3RydWN0b3IuRXZlbnQuSU5TRVJURUQpLHRoaXMuX3BvcHBlcj1uZXcgX3QodGhpcy5lbGVtZW50LG8sdGhpcy5fZ2V0UG9wcGVyQ29uZmlnKGMpKSxuLmRlZmF1bHQobykuYWRkQ2xhc3MoInNob3ciKSxuLmRlZmF1bHQobykuYWRkQ2xhc3ModGhpcy5jb25maWcuY3VzdG9tQ2xhc3MpLCJvbnRvdWNoc3RhcnQiaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50JiZuLmRlZmF1bHQoZG9jdW1lbnQuYm9keSkuY2hpbGRyZW4oKS5vbigibW91c2VvdmVyIixudWxsLG4uZGVmYXVsdC5ub29wKTt2YXIgZD1mdW5jdGlvbigpe3QuY29uZmlnLmFuaW1hdGlvbiYmdC5fZml4VHJhbnNpdGlvbigpO3ZhciBlPXQuX2hvdmVyU3RhdGU7dC5faG92ZXJTdGF0ZT1udWxsLG4uZGVmYXVsdCh0LmVsZW1lbnQpLnRyaWdnZXIodC5jb25zdHJ1Y3Rvci5FdmVudC5TSE9XTiksIm91dCI9PT1lJiZ0Ll9sZWF2ZShudWxsLHQpfTtpZihuLmRlZmF1bHQodGhpcy50aXApLmhhc0NsYXNzKCJmYWRlIikpe3ZhciBoPWEuZ2V0VHJhbnNpdGlvbkR1cmF0aW9uRnJvbUVsZW1lbnQodGhpcy50aXApO24uZGVmYXVsdCh0aGlzLnRpcCkub25lKGEuVFJBTlNJVElPTl9FTkQsZCkuZW11bGF0ZVRyYW5zaXRpb25FbmQoaCl9ZWxzZSBkKCl9fSxlLmhpZGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxpPXRoaXMuZ2V0VGlwRWxlbWVudCgpLHI9bi5kZWZhdWx0LkV2ZW50KHRoaXMuY29uc3RydWN0b3IuRXZlbnQuSElERSksbz1mdW5jdGlvbigpeyJzaG93IiE9PWUuX2hvdmVyU3RhdGUmJmkucGFyZW50Tm9kZSYmaS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGkpLGUuX2NsZWFuVGlwQ2xhc3MoKSxlLmVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWRlc2NyaWJlZGJ5Iiksbi5kZWZhdWx0KGUuZWxlbWVudCkudHJpZ2dlcihlLmNvbnN0cnVjdG9yLkV2ZW50LkhJRERFTiksbnVsbCE9PWUuX3BvcHBlciYmZS5fcG9wcGVyLmRlc3Ryb3koKSx0JiZ0KCl9O2lmKG4uZGVmYXVsdCh0aGlzLmVsZW1lbnQpLnRyaWdnZXIociksIXIuaXNEZWZhdWx0UHJldmVudGVkKCkpe2lmKG4uZGVmYXVsdChpKS5yZW1vdmVDbGFzcygic2hvdyIpLCJvbnRvdWNoc3RhcnQiaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50JiZuLmRlZmF1bHQoZG9jdW1lbnQuYm9keSkuY2hpbGRyZW4oKS5vZmYoIm1vdXNlb3ZlciIsbnVsbCxuLmRlZmF1bHQubm9vcCksdGhpcy5fYWN0aXZlVHJpZ2dlci5jbGljaz0hMSx0aGlzLl9hY3RpdmVUcmlnZ2VyLmZvY3VzPSExLHRoaXMuX2FjdGl2ZVRyaWdnZXIuaG92ZXI9ITEsbi5kZWZhdWx0KHRoaXMudGlwKS5oYXNDbGFzcygiZmFkZSIpKXt2YXIgcz1hLmdldFRyYW5zaXRpb25EdXJhdGlvbkZyb21FbGVtZW50KGkpO24uZGVmYXVsdChpKS5vbmUoYS5UUkFOU0lUSU9OX0VORCxvKS5lbXVsYXRlVHJhbnNpdGlvbkVuZChzKX1lbHNlIG8oKTt0aGlzLl9ob3ZlclN0YXRlPSIifX0sZS51cGRhdGU9ZnVuY3Rpb24oKXtudWxsIT09dGhpcy5fcG9wcGVyJiZ0aGlzLl9wb3BwZXIuc2NoZWR1bGVVcGRhdGUoKX0sZS5pc1dpdGhDb250ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIEJvb2xlYW4odGhpcy5nZXRUaXRsZSgpKX0sZS5hZGRBdHRhY2htZW50Q2xhc3M9ZnVuY3Rpb24odCl7bi5kZWZhdWx0KHRoaXMuZ2V0VGlwRWxlbWVudCgpKS5hZGRDbGFzcygiYnMtdG9vbHRpcC0iK3QpfSxlLmdldFRpcEVsZW1lbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50aXA9dGhpcy50aXB8fG4uZGVmYXVsdCh0aGlzLmNvbmZpZy50ZW1wbGF0ZSlbMF0sdGhpcy50aXB9LGUuc2V0Q29udGVudD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZ2V0VGlwRWxlbWVudCgpO3RoaXMuc2V0RWxlbWVudENvbnRlbnQobi5kZWZhdWx0KHQucXVlcnlTZWxlY3RvckFsbCgiLnRvb2x0aXAtaW5uZXIiKSksdGhpcy5nZXRUaXRsZSgpKSxuLmRlZmF1bHQodCkucmVtb3ZlQ2xhc3MoImZhZGUgc2hvdyIpfSxlLnNldEVsZW1lbnRDb250ZW50PWZ1bmN0aW9uKHQsZSl7Im9iamVjdCIhPXR5cGVvZiBlfHwhZS5ub2RlVHlwZSYmIWUuanF1ZXJ5P3RoaXMuY29uZmlnLmh0bWw/KHRoaXMuY29uZmlnLnNhbml0aXplJiYoZT1GdChlLHRoaXMuY29uZmlnLndoaXRlTGlzdCx0aGlzLmNvbmZpZy5zYW5pdGl6ZUZuKSksdC5odG1sKGUpKTp0LnRleHQoZSk6dGhpcy5jb25maWcuaHRtbD9uLmRlZmF1bHQoZSkucGFyZW50KCkuaXModCl8fHQuZW1wdHkoKS5hcHBlbmQoZSk6dC50ZXh0KG4uZGVmYXVsdChlKS50ZXh0KCkpfSxlLmdldFRpdGxlPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5lbGVtZW50LmdldEF0dHJpYnV0ZSgiZGF0YS1vcmlnaW5hbC10aXRsZSIpO3JldHVybiB0fHwodD0iZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5jb25maWcudGl0bGU/dGhpcy5jb25maWcudGl0bGUuY2FsbCh0aGlzLmVsZW1lbnQpOnRoaXMuY29uZmlnLnRpdGxlKSx0fSxlLl9nZXRQb3BwZXJDb25maWc9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztyZXR1cm4gbyh7fSx7cGxhY2VtZW50OnQsbW9kaWZpZXJzOntvZmZzZXQ6dGhpcy5fZ2V0T2Zmc2V0KCksZmxpcDp7YmVoYXZpb3I6dGhpcy5jb25maWcuZmFsbGJhY2tQbGFjZW1lbnR9LGFycm93OntlbGVtZW50OiIuYXJyb3cifSxwcmV2ZW50T3ZlcmZsb3c6e2JvdW5kYXJpZXNFbGVtZW50OnRoaXMuY29uZmlnLmJvdW5kYXJ5fX0sb25DcmVhdGU6ZnVuY3Rpb24odCl7dC5vcmlnaW5hbFBsYWNlbWVudCE9PXQucGxhY2VtZW50JiZlLl9oYW5kbGVQb3BwZXJQbGFjZW1lbnRDaGFuZ2UodCl9LG9uVXBkYXRlOmZ1bmN0aW9uKHQpe3JldHVybiBlLl9oYW5kbGVQb3BwZXJQbGFjZW1lbnRDaGFuZ2UodCl9fSx0aGlzLmNvbmZpZy5wb3BwZXJDb25maWcpfSxlLl9nZXRPZmZzZXQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9e307cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuY29uZmlnLm9mZnNldD9lLmZuPWZ1bmN0aW9uKGUpe3JldHVybiBlLm9mZnNldHM9byh7fSxlLm9mZnNldHMsdC5jb25maWcub2Zmc2V0KGUub2Zmc2V0cyx0LmVsZW1lbnQpfHx7fSksZX06ZS5vZmZzZXQ9dGhpcy5jb25maWcub2Zmc2V0LGV9LGUuX2dldENvbnRhaW5lcj1mdW5jdGlvbigpe3JldHVybiExPT09dGhpcy5jb25maWcuY29udGFpbmVyP2RvY3VtZW50LmJvZHk6YS5pc0VsZW1lbnQodGhpcy5jb25maWcuY29udGFpbmVyKT9uLmRlZmF1bHQodGhpcy5jb25maWcuY29udGFpbmVyKTpuLmRlZmF1bHQoZG9jdW1lbnQpLmZpbmQodGhpcy5jb25maWcuY29udGFpbmVyKX0sZS5fZ2V0QXR0YWNobWVudD1mdW5jdGlvbih0KXtyZXR1cm4gQnRbdC50b1VwcGVyQ2FzZSgpXX0sZS5fc2V0TGlzdGVuZXJzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLmNvbmZpZy50cmlnZ2VyLnNwbGl0KCIgIikuZm9yRWFjaCgoZnVuY3Rpb24oZSl7aWYoImNsaWNrIj09PWUpbi5kZWZhdWx0KHQuZWxlbWVudCkub24odC5jb25zdHJ1Y3Rvci5FdmVudC5DTElDSyx0LmNvbmZpZy5zZWxlY3RvciwoZnVuY3Rpb24oZSl7cmV0dXJuIHQudG9nZ2xlKGUpfSkpO2Vsc2UgaWYoIm1hbnVhbCIhPT1lKXt2YXIgaT0iaG92ZXIiPT09ZT90LmNvbnN0cnVjdG9yLkV2ZW50Lk1PVVNFRU5URVI6dC5jb25zdHJ1Y3Rvci5FdmVudC5GT0NVU0lOLHI9ImhvdmVyIj09PWU/dC5jb25zdHJ1Y3Rvci5FdmVudC5NT1VTRUxFQVZFOnQuY29uc3RydWN0b3IuRXZlbnQuRk9DVVNPVVQ7bi5kZWZhdWx0KHQuZWxlbWVudCkub24oaSx0LmNvbmZpZy5zZWxlY3RvciwoZnVuY3Rpb24oZSl7cmV0dXJuIHQuX2VudGVyKGUpfSkpLm9uKHIsdC5jb25maWcuc2VsZWN0b3IsKGZ1bmN0aW9uKGUpe3JldHVybiB0Ll9sZWF2ZShlKX0pKX19KSksdGhpcy5faGlkZU1vZGFsSGFuZGxlcj1mdW5jdGlvbigpe3QuZWxlbWVudCYmdC5oaWRlKCl9LG4uZGVmYXVsdCh0aGlzLmVsZW1lbnQpLmNsb3Nlc3QoIi5tb2RhbCIpLm9uKCJoaWRlLmJzLm1vZGFsIix0aGlzLl9oaWRlTW9kYWxIYW5kbGVyKSx0aGlzLmNvbmZpZy5zZWxlY3Rvcj90aGlzLmNvbmZpZz1vKHt9LHRoaXMuY29uZmlnLHt0cmlnZ2VyOiJtYW51YWwiLHNlbGVjdG9yOiIifSk6dGhpcy5fZml4VGl0bGUoKX0sZS5fZml4VGl0bGU9ZnVuY3Rpb24oKXt2YXIgdD10eXBlb2YgdGhpcy5lbGVtZW50LmdldEF0dHJpYnV0ZSgiZGF0YS1vcmlnaW5hbC10aXRsZSIpOyh0aGlzLmVsZW1lbnQuZ2V0QXR0cmlidXRlKCJ0aXRsZSIpfHwic3RyaW5nIiE9PXQpJiYodGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgiZGF0YS1vcmlnaW5hbC10aXRsZSIsdGhpcy5lbGVtZW50LmdldEF0dHJpYnV0ZSgidGl0bGUiKXx8IiIpLHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoInRpdGxlIiwiIikpfSxlLl9lbnRlcj1mdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuY29uc3RydWN0b3IuREFUQV9LRVk7KGU9ZXx8bi5kZWZhdWx0KHQuY3VycmVudFRhcmdldCkuZGF0YShpKSl8fChlPW5ldyB0aGlzLmNvbnN0cnVjdG9yKHQuY3VycmVudFRhcmdldCx0aGlzLl9nZXREZWxlZ2F0ZUNvbmZpZygpKSxuLmRlZmF1bHQodC5jdXJyZW50VGFyZ2V0KS5kYXRhKGksZSkpLHQmJihlLl9hY3RpdmVUcmlnZ2VyWyJmb2N1c2luIj09PXQudHlwZT8iZm9jdXMiOiJob3ZlciJdPSEwKSxuLmRlZmF1bHQoZS5nZXRUaXBFbGVtZW50KCkpLmhhc0NsYXNzKCJzaG93Iil8fCJzaG93Ij09PWUuX2hvdmVyU3RhdGU/ZS5faG92ZXJTdGF0ZT0ic2hvdyI6KGNsZWFyVGltZW91dChlLl90aW1lb3V0KSxlLl9ob3ZlclN0YXRlPSJzaG93IixlLmNvbmZpZy5kZWxheSYmZS5jb25maWcuZGVsYXkuc2hvdz9lLl90aW1lb3V0PXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7InNob3ciPT09ZS5faG92ZXJTdGF0ZSYmZS5zaG93KCl9KSxlLmNvbmZpZy5kZWxheS5zaG93KTplLnNob3coKSl9LGUuX2xlYXZlPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5jb25zdHJ1Y3Rvci5EQVRBX0tFWTsoZT1lfHxuLmRlZmF1bHQodC5jdXJyZW50VGFyZ2V0KS5kYXRhKGkpKXx8KGU9bmV3IHRoaXMuY29uc3RydWN0b3IodC5jdXJyZW50VGFyZ2V0LHRoaXMuX2dldERlbGVnYXRlQ29uZmlnKCkpLG4uZGVmYXVsdCh0LmN1cnJlbnRUYXJnZXQpLmRhdGEoaSxlKSksdCYmKGUuX2FjdGl2ZVRyaWdnZXJbImZvY3Vzb3V0Ij09PXQudHlwZT8iZm9jdXMiOiJob3ZlciJdPSExKSxlLl9pc1dpdGhBY3RpdmVUcmlnZ2VyKCl8fChjbGVhclRpbWVvdXQoZS5fdGltZW91dCksZS5faG92ZXJTdGF0ZT0ib3V0IixlLmNvbmZpZy5kZWxheSYmZS5jb25maWcuZGVsYXkuaGlkZT9lLl90aW1lb3V0PXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7Im91dCI9PT1lLl9ob3ZlclN0YXRlJiZlLmhpZGUoKX0pLGUuY29uZmlnLmRlbGF5LmhpZGUpOmUuaGlkZSgpKX0sZS5faXNXaXRoQWN0aXZlVHJpZ2dlcj1mdW5jdGlvbigpe2Zvcih2YXIgdCBpbiB0aGlzLl9hY3RpdmVUcmlnZ2VyKWlmKHRoaXMuX2FjdGl2ZVRyaWdnZXJbdF0pcmV0dXJuITA7cmV0dXJuITF9LGUuX2dldENvbmZpZz1mdW5jdGlvbih0KXt2YXIgZT1uLmRlZmF1bHQodGhpcy5lbGVtZW50KS5kYXRhKCk7cmV0dXJuIE9iamVjdC5rZXlzKGUpLmZvckVhY2goKGZ1bmN0aW9uKHQpey0xIT09enQuaW5kZXhPZih0KSYmZGVsZXRlIGVbdF19KSksIm51bWJlciI9PXR5cGVvZih0PW8oe30sdGhpcy5jb25zdHJ1Y3Rvci5EZWZhdWx0LGUsIm9iamVjdCI9PXR5cGVvZiB0JiZ0P3Q6e30pKS5kZWxheSYmKHQuZGVsYXk9e3Nob3c6dC5kZWxheSxoaWRlOnQuZGVsYXl9KSwibnVtYmVyIj09dHlwZW9mIHQudGl0bGUmJih0LnRpdGxlPXQudGl0bGUudG9TdHJpbmcoKSksIm51bWJlciI9PXR5cGVvZiB0LmNvbnRlbnQmJih0LmNvbnRlbnQ9dC5jb250ZW50LnRvU3RyaW5nKCkpLGEudHlwZUNoZWNrQ29uZmlnKFJ0LHQsdGhpcy5jb25zdHJ1Y3Rvci5EZWZhdWx0VHlwZSksdC5zYW5pdGl6ZSYmKHQudGVtcGxhdGU9RnQodC50ZW1wbGF0ZSx0LndoaXRlTGlzdCx0LnNhbml0aXplRm4pKSx0fSxlLl9nZXREZWxlZ2F0ZUNvbmZpZz1mdW5jdGlvbigpe3ZhciB0PXt9O2lmKHRoaXMuY29uZmlnKWZvcih2YXIgZSBpbiB0aGlzLmNvbmZpZyl0aGlzLmNvbnN0cnVjdG9yLkRlZmF1bHRbZV0hPT10aGlzLmNvbmZpZ1tlXSYmKHRbZV09dGhpcy5jb25maWdbZV0pO3JldHVybiB0fSxlLl9jbGVhblRpcENsYXNzPWZ1bmN0aW9uKCl7dmFyIHQ9bi5kZWZhdWx0KHRoaXMuZ2V0VGlwRWxlbWVudCgpKSxlPXQuYXR0cigiY2xhc3MiKS5tYXRjaCgkdCk7bnVsbCE9PWUmJmUubGVuZ3RoJiZ0LnJlbW92ZUNsYXNzKGUuam9pbigiIikpfSxlLl9oYW5kbGVQb3BwZXJQbGFjZW1lbnRDaGFuZ2U9ZnVuY3Rpb24odCl7dGhpcy50aXA9dC5pbnN0YW5jZS5wb3BwZXIsdGhpcy5fY2xlYW5UaXBDbGFzcygpLHRoaXMuYWRkQXR0YWNobWVudENsYXNzKHRoaXMuX2dldEF0dGFjaG1lbnQodC5wbGFjZW1lbnQpKX0sZS5fZml4VHJhbnNpdGlvbj1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZ2V0VGlwRWxlbWVudCgpLGU9dGhpcy5jb25maWcuYW5pbWF0aW9uO251bGw9PT10LmdldEF0dHJpYnV0ZSgieC1wbGFjZW1lbnQiKSYmKG4uZGVmYXVsdCh0KS5yZW1vdmVDbGFzcygiZmFkZSIpLHRoaXMuY29uZmlnLmFuaW1hdGlvbj0hMSx0aGlzLmhpZGUoKSx0aGlzLnNob3coKSx0aGlzLmNvbmZpZy5hbmltYXRpb249ZSl9LHQuX2pRdWVyeUludGVyZmFjZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpe3ZhciBpPW4uZGVmYXVsdCh0aGlzKSxyPWkuZGF0YSgiYnMudG9vbHRpcCIpLG89Im9iamVjdCI9PXR5cGVvZiBlJiZlO2lmKChyfHwhL2Rpc3Bvc2V8aGlkZS8udGVzdChlKSkmJihyfHwocj1uZXcgdCh0aGlzLG8pLGkuZGF0YSgiYnMudG9vbHRpcCIscikpLCJzdHJpbmciPT10eXBlb2YgZSkpe2lmKHZvaWQgMD09PXJbZV0pdGhyb3cgbmV3IFR5cGVFcnJvcignTm8gbWV0aG9kIG5hbWVkICInK2UrJyInKTtyW2VdKCl9fSkpfSxyKHQsbnVsbCxbe2tleToiVkVSU0lPTiIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIjQuNi4wIn19LHtrZXk6IkRlZmF1bHQiLGdldDpmdW5jdGlvbigpe3JldHVybiBxdH19LHtrZXk6Ik5BTUUiLGdldDpmdW5jdGlvbigpe3JldHVybiBSdH19LHtrZXk6IkRBVEFfS0VZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iYnMudG9vbHRpcCJ9fSx7a2V5OiJFdmVudCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFd0fX0se2tleToiRVZFTlRfS0VZIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iLmJzLnRvb2x0aXAifX0se2tleToiRGVmYXVsdFR5cGUiLGdldDpmdW5jdGlvbigpe3JldHVybiBIdH19XSksdH0oKTtuLmRlZmF1bHQuZm5bUnRdPVV0Ll9qUXVlcnlJbnRlcmZhY2Usbi5kZWZhdWx0LmZuW1J0XS5Db25zdHJ1Y3Rvcj1VdCxuLmRlZmF1bHQuZm5bUnRdLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gbi5kZWZhdWx0LmZuW1J0XT1qdCxVdC5falF1ZXJ5SW50ZXJmYWNlfTt2YXIgVnQ9InBvcG92ZXIiLFl0PW4uZGVmYXVsdC5mbltWdF0sR3Q9bmV3IFJlZ0V4cCgiKF58XFxzKWJzLXBvcG92ZXJcXFMrIiwiZyIpLFh0PW8oe30sVXQuRGVmYXVsdCx7cGxhY2VtZW50OiJyaWdodCIsdHJpZ2dlcjoiY2xpY2siLGNvbnRlbnQ6IiIsdGVtcGxhdGU6JzxkaXYgY2xhc3M9InBvcG92ZXIiIHJvbGU9InRvb2x0aXAiPjxkaXYgY2xhc3M9ImFycm93Ij48L2Rpdj48aDMgY2xhc3M9InBvcG92ZXItaGVhZGVyIj48L2gzPjxkaXYgY2xhc3M9InBvcG92ZXItYm9keSI+PC9kaXY+PC9kaXY+J30pLFF0PW8oe30sVXQuRGVmYXVsdFR5cGUse2NvbnRlbnQ6IihzdHJpbmd8ZWxlbWVudHxmdW5jdGlvbikifSksS3Q9e0hJREU6ImhpZGUuYnMucG9wb3ZlciIsSElEREVOOiJoaWRkZW4uYnMucG9wb3ZlciIsU0hPVzoic2hvdy5icy5wb3BvdmVyIixTSE9XTjoic2hvd24uYnMucG9wb3ZlciIsSU5TRVJURUQ6Imluc2VydGVkLmJzLnBvcG92ZXIiLENMSUNLOiJjbGljay5icy5wb3BvdmVyIixGT0NVU0lOOiJmb2N1c2luLmJzLnBvcG92ZXIiLEZPQ1VTT1VUOiJmb2N1c291dC5icy5wb3BvdmVyIixNT1VTRUVOVEVSOiJtb3VzZWVudGVyLmJzLnBvcG92ZXIiLE1PVVNFTEVBVkU6Im1vdXNlbGVhdmUuYnMucG9wb3ZlciJ9LEp0PWZ1bmN0aW9uKHQpe3ZhciBlLGk7ZnVuY3Rpb24gbygpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8dGhpc31pPXQsKGU9bykucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoaS5wcm90b3R5cGUpLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5fX3Byb3RvX189aTt2YXIgYT1vLnByb3RvdHlwZTtyZXR1cm4gYS5pc1dpdGhDb250ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0VGl0bGUoKXx8dGhpcy5fZ2V0Q29udGVudCgpfSxhLmFkZEF0dGFjaG1lbnRDbGFzcz1mdW5jdGlvbih0KXtuLmRlZmF1bHQodGhpcy5nZXRUaXBFbGVtZW50KCkpLmFkZENsYXNzKCJicy1wb3BvdmVyLSIrdCl9LGEuZ2V0VGlwRWxlbWVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRpcD10aGlzLnRpcHx8bi5kZWZhdWx0KHRoaXMuY29uZmlnLnRlbXBsYXRlKVswXSx0aGlzLnRpcH0sYS5zZXRDb250ZW50PWZ1bmN0aW9uKCl7dmFyIHQ9bi5kZWZhdWx0KHRoaXMuZ2V0VGlwRWxlbWVudCgpKTt0aGlzLnNldEVsZW1lbnRDb250ZW50KHQuZmluZCgiLnBvcG92ZXItaGVhZGVyIiksdGhpcy5nZXRUaXRsZSgpKTt2YXIgZT10aGlzLl9nZXRDb250ZW50KCk7ImZ1bmN0aW9uIj09dHlwZW9mIGUmJihlPWUuY2FsbCh0aGlzLmVsZW1lbnQpKSx0aGlzLnNldEVsZW1lbnRDb250ZW50KHQuZmluZCgiLnBvcG92ZXItYm9keSIpLGUpLHQucmVtb3ZlQ2xhc3MoImZhZGUgc2hvdyIpfSxhLl9nZXRDb250ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWxlbWVudC5nZXRBdHRyaWJ1dGUoImRhdGEtY29udGVudCIpfHx0aGlzLmNvbmZpZy5jb250ZW50fSxhLl9jbGVhblRpcENsYXNzPWZ1bmN0aW9uKCl7dmFyIHQ9bi5kZWZhdWx0KHRoaXMuZ2V0VGlwRWxlbWVudCgpKSxlPXQuYXR0cigiY2xhc3MiKS5tYXRjaChHdCk7bnVsbCE9PWUmJmUubGVuZ3RoPjAmJnQucmVtb3ZlQ2xhc3MoZS5qb2luKCIiKSl9LG8uX2pRdWVyeUludGVyZmFjZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpe3ZhciBlPW4uZGVmYXVsdCh0aGlzKS5kYXRhKCJicy5wb3BvdmVyIiksaT0ib2JqZWN0Ij09dHlwZW9mIHQ/dDpudWxsO2lmKChlfHwhL2Rpc3Bvc2V8aGlkZS8udGVzdCh0KSkmJihlfHwoZT1uZXcgbyh0aGlzLGkpLG4uZGVmYXVsdCh0aGlzKS5kYXRhKCJicy5wb3BvdmVyIixlKSksInN0cmluZyI9PXR5cGVvZiB0KSl7aWYodm9pZCAwPT09ZVt0XSl0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBtZXRob2QgbmFtZWQgIicrdCsnIicpO2VbdF0oKX19KSl9LHIobyxudWxsLFt7a2V5OiJWRVJTSU9OIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iNC42LjAifX0se2tleToiRGVmYXVsdCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFh0fX0se2tleToiTkFNRSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFZ0fX0se2tleToiREFUQV9LRVkiLGdldDpmdW5jdGlvbigpe3JldHVybiJicy5wb3BvdmVyIn19LHtrZXk6IkV2ZW50IixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gS3R9fSx7a2V5OiJFVkVOVF9LRVkiLGdldDpmdW5jdGlvbigpe3JldHVybiIuYnMucG9wb3ZlciJ9fSx7a2V5OiJEZWZhdWx0VHlwZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFF0fX1dKSxvfShVdCk7bi5kZWZhdWx0LmZuW1Z0XT1KdC5falF1ZXJ5SW50ZXJmYWNlLG4uZGVmYXVsdC5mbltWdF0uQ29uc3RydWN0b3I9SnQsbi5kZWZhdWx0LmZuW1Z0XS5ub0NvbmZsaWN0PWZ1bmN0aW9uKCl7cmV0dXJuIG4uZGVmYXVsdC5mbltWdF09WXQsSnQuX2pRdWVyeUludGVyZmFjZX07dmFyIFp0PSJzY3JvbGxzcHkiLHRlPW4uZGVmYXVsdC5mbltadF0sZWU9e29mZnNldDoxMCxtZXRob2Q6ImF1dG8iLHRhcmdldDoiIn0sbmU9e29mZnNldDoibnVtYmVyIixtZXRob2Q6InN0cmluZyIsdGFyZ2V0OiIoc3RyaW5nfGVsZW1lbnQpIn0saWU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSl7dmFyIGk9dGhpczt0aGlzLl9lbGVtZW50PXQsdGhpcy5fc2Nyb2xsRWxlbWVudD0iQk9EWSI9PT10LnRhZ05hbWU/d2luZG93OnQsdGhpcy5fY29uZmlnPXRoaXMuX2dldENvbmZpZyhlKSx0aGlzLl9zZWxlY3Rvcj10aGlzLl9jb25maWcudGFyZ2V0KyIgLm5hdi1saW5rLCIrdGhpcy5fY29uZmlnLnRhcmdldCsiIC5saXN0LWdyb3VwLWl0ZW0sIit0aGlzLl9jb25maWcudGFyZ2V0KyIgLmRyb3Bkb3duLWl0ZW0iLHRoaXMuX29mZnNldHM9W10sdGhpcy5fdGFyZ2V0cz1bXSx0aGlzLl9hY3RpdmVUYXJnZXQ9bnVsbCx0aGlzLl9zY3JvbGxIZWlnaHQ9MCxuLmRlZmF1bHQodGhpcy5fc2Nyb2xsRWxlbWVudCkub24oInNjcm9sbC5icy5zY3JvbGxzcHkiLChmdW5jdGlvbih0KXtyZXR1cm4gaS5fcHJvY2Vzcyh0KX0pKSx0aGlzLnJlZnJlc2goKSx0aGlzLl9wcm9jZXNzKCl9dmFyIGU9dC5wcm90b3R5cGU7cmV0dXJuIGUucmVmcmVzaD1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10aGlzLl9zY3JvbGxFbGVtZW50PT09dGhpcy5fc2Nyb2xsRWxlbWVudC53aW5kb3c/Im9mZnNldCI6InBvc2l0aW9uIixpPSJhdXRvIj09PXRoaXMuX2NvbmZpZy5tZXRob2Q/ZTp0aGlzLl9jb25maWcubWV0aG9kLHI9InBvc2l0aW9uIj09PWk/dGhpcy5fZ2V0U2Nyb2xsVG9wKCk6MDt0aGlzLl9vZmZzZXRzPVtdLHRoaXMuX3RhcmdldHM9W10sdGhpcy5fc2Nyb2xsSGVpZ2h0PXRoaXMuX2dldFNjcm9sbEhlaWdodCgpLFtdLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCh0aGlzLl9zZWxlY3RvcikpLm1hcCgoZnVuY3Rpb24odCl7dmFyIGUsbz1hLmdldFNlbGVjdG9yRnJvbUVsZW1lbnQodCk7aWYobyYmKGU9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihvKSksZSl7dmFyIHM9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtpZihzLndpZHRofHxzLmhlaWdodClyZXR1cm5bbi5kZWZhdWx0KGUpW2ldKCkudG9wK3Isb119cmV0dXJuIG51bGx9KSkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdH0pKS5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiB0WzBdLWVbMF19KSkuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dC5fb2Zmc2V0cy5wdXNoKGVbMF0pLHQuX3RhcmdldHMucHVzaChlWzFdKX0pKX0sZS5kaXNwb3NlPWZ1bmN0aW9uKCl7bi5kZWZhdWx0LnJlbW92ZURhdGEodGhpcy5fZWxlbWVudCwiYnMuc2Nyb2xsc3B5Iiksbi5kZWZhdWx0KHRoaXMuX3Njcm9sbEVsZW1lbnQpLm9mZigiLmJzLnNjcm9sbHNweSIpLHRoaXMuX2VsZW1lbnQ9bnVsbCx0aGlzLl9zY3JvbGxFbGVtZW50PW51bGwsdGhpcy5fY29uZmlnPW51bGwsdGhpcy5fc2VsZWN0b3I9bnVsbCx0aGlzLl9vZmZzZXRzPW51bGwsdGhpcy5fdGFyZ2V0cz1udWxsLHRoaXMuX2FjdGl2ZVRhcmdldD1udWxsLHRoaXMuX3Njcm9sbEhlaWdodD1udWxsfSxlLl9nZXRDb25maWc9ZnVuY3Rpb24odCl7aWYoInN0cmluZyIhPXR5cGVvZih0PW8oe30sZWUsIm9iamVjdCI9PXR5cGVvZiB0JiZ0P3Q6e30pKS50YXJnZXQmJmEuaXNFbGVtZW50KHQudGFyZ2V0KSl7dmFyIGU9bi5kZWZhdWx0KHQudGFyZ2V0KS5hdHRyKCJpZCIpO2V8fChlPWEuZ2V0VUlEKFp0KSxuLmRlZmF1bHQodC50YXJnZXQpLmF0dHIoImlkIixlKSksdC50YXJnZXQ9IiMiK2V9cmV0dXJuIGEudHlwZUNoZWNrQ29uZmlnKFp0LHQsbmUpLHR9LGUuX2dldFNjcm9sbFRvcD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zY3JvbGxFbGVtZW50PT09d2luZG93P3RoaXMuX3Njcm9sbEVsZW1lbnQucGFnZVlPZmZzZXQ6dGhpcy5fc2Nyb2xsRWxlbWVudC5zY3JvbGxUb3B9LGUuX2dldFNjcm9sbEhlaWdodD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zY3JvbGxFbGVtZW50LnNjcm9sbEhlaWdodHx8TWF0aC5tYXgoZG9jdW1lbnQuYm9keS5zY3JvbGxIZWlnaHQsZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbEhlaWdodCl9LGUuX2dldE9mZnNldEhlaWdodD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9zY3JvbGxFbGVtZW50PT09d2luZG93P3dpbmRvdy5pbm5lckhlaWdodDp0aGlzLl9zY3JvbGxFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodH0sZS5fcHJvY2Vzcz1mdW5jdGlvbigpe3ZhciB0PXRoaXMuX2dldFNjcm9sbFRvcCgpK3RoaXMuX2NvbmZpZy5vZmZzZXQsZT10aGlzLl9nZXRTY3JvbGxIZWlnaHQoKSxuPXRoaXMuX2NvbmZpZy5vZmZzZXQrZS10aGlzLl9nZXRPZmZzZXRIZWlnaHQoKTtpZih0aGlzLl9zY3JvbGxIZWlnaHQhPT1lJiZ0aGlzLnJlZnJlc2goKSx0Pj1uKXt2YXIgaT10aGlzLl90YXJnZXRzW3RoaXMuX3RhcmdldHMubGVuZ3RoLTFdO3RoaXMuX2FjdGl2ZVRhcmdldCE9PWkmJnRoaXMuX2FjdGl2YXRlKGkpfWVsc2V7aWYodGhpcy5fYWN0aXZlVGFyZ2V0JiZ0PHRoaXMuX29mZnNldHNbMF0mJnRoaXMuX29mZnNldHNbMF0+MClyZXR1cm4gdGhpcy5fYWN0aXZlVGFyZ2V0PW51bGwsdm9pZCB0aGlzLl9jbGVhcigpO2Zvcih2YXIgcj10aGlzLl9vZmZzZXRzLmxlbmd0aDtyLS07KXRoaXMuX2FjdGl2ZVRhcmdldCE9PXRoaXMuX3RhcmdldHNbcl0mJnQ+PXRoaXMuX29mZnNldHNbcl0mJih2b2lkIDA9PT10aGlzLl9vZmZzZXRzW3IrMV18fHQ8dGhpcy5fb2Zmc2V0c1tyKzFdKSYmdGhpcy5fYWN0aXZhdGUodGhpcy5fdGFyZ2V0c1tyXSl9fSxlLl9hY3RpdmF0ZT1mdW5jdGlvbih0KXt0aGlzLl9hY3RpdmVUYXJnZXQ9dCx0aGlzLl9jbGVhcigpO3ZhciBlPXRoaXMuX3NlbGVjdG9yLnNwbGl0KCIsIikubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gZSsnW2RhdGEtdGFyZ2V0PSInK3QrJyJdLCcrZSsnW2hyZWY9IicrdCsnIl0nfSkpLGk9bi5kZWZhdWx0KFtdLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChlLmpvaW4oIiwiKSkpKTtpLmhhc0NsYXNzKCJkcm9wZG93bi1pdGVtIik/KGkuY2xvc2VzdCgiLmRyb3Bkb3duIikuZmluZCgiLmRyb3Bkb3duLXRvZ2dsZSIpLmFkZENsYXNzKCJhY3RpdmUiKSxpLmFkZENsYXNzKCJhY3RpdmUiKSk6KGkuYWRkQ2xhc3MoImFjdGl2ZSIpLGkucGFyZW50cygiLm5hdiwgLmxpc3QtZ3JvdXAiKS5wcmV2KCIubmF2LWxpbmssIC5saXN0LWdyb3VwLWl0ZW0iKS5hZGRDbGFzcygiYWN0aXZlIiksaS5wYXJlbnRzKCIubmF2LCAubGlzdC1ncm91cCIpLnByZXYoIi5uYXYtaXRlbSIpLmNoaWxkcmVuKCIubmF2LWxpbmsiKS5hZGRDbGFzcygiYWN0aXZlIikpLG4uZGVmYXVsdCh0aGlzLl9zY3JvbGxFbGVtZW50KS50cmlnZ2VyKCJhY3RpdmF0ZS5icy5zY3JvbGxzcHkiLHtyZWxhdGVkVGFyZ2V0OnR9KX0sZS5fY2xlYXI9ZnVuY3Rpb24oKXtbXS5zbGljZS5jYWxsKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwodGhpcy5fc2VsZWN0b3IpKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmNsYXNzTGlzdC5jb250YWlucygiYWN0aXZlIil9KSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuY2xhc3NMaXN0LnJlbW92ZSgiYWN0aXZlIil9KSl9LHQuX2pRdWVyeUludGVyZmFjZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpe3ZhciBpPW4uZGVmYXVsdCh0aGlzKS5kYXRhKCJicy5zY3JvbGxzcHkiKTtpZihpfHwoaT1uZXcgdCh0aGlzLCJvYmplY3QiPT10eXBlb2YgZSYmZSksbi5kZWZhdWx0KHRoaXMpLmRhdGEoImJzLnNjcm9sbHNweSIsaSkpLCJzdHJpbmciPT10eXBlb2YgZSl7aWYodm9pZCAwPT09aVtlXSl0aHJvdyBuZXcgVHlwZUVycm9yKCdObyBtZXRob2QgbmFtZWQgIicrZSsnIicpO2lbZV0oKX19KSl9LHIodCxudWxsLFt7a2V5OiJWRVJTSU9OIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4iNC42LjAifX0se2tleToiRGVmYXVsdCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGVlfX1dKSx0fSgpO24uZGVmYXVsdCh3aW5kb3cpLm9uKCJsb2FkLmJzLnNjcm9sbHNweS5kYXRhLWFwaSIsKGZ1bmN0aW9uKCl7Zm9yKHZhciB0PVtdLnNsaWNlLmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtc3B5PSJzY3JvbGwiXScpKSxlPXQubGVuZ3RoO2UtLTspe3ZhciBpPW4uZGVmYXVsdCh0W2VdKTtpZS5falF1ZXJ5SW50ZXJmYWNlLmNhbGwoaSxpLmRhdGEoKSl9fSkpLG4uZGVmYXVsdC5mbltadF09aWUuX2pRdWVyeUludGVyZmFjZSxuLmRlZmF1bHQuZm5bWnRdLkNvbnN0cnVjdG9yPWllLG4uZGVmYXVsdC5mbltadF0ubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBuLmRlZmF1bHQuZm5bWnRdPXRlLGllLl9qUXVlcnlJbnRlcmZhY2V9O3ZhciByZT1uLmRlZmF1bHQuZm4udGFiLG9lPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl9lbGVtZW50PXR9dmFyIGU9dC5wcm90b3R5cGU7cmV0dXJuIGUuc2hvdz1mdW5jdGlvbigpe3ZhciB0PXRoaXM7aWYoISh0aGlzLl9lbGVtZW50LnBhcmVudE5vZGUmJnRoaXMuX2VsZW1lbnQucGFyZW50Tm9kZS5ub2RlVHlwZT09PU5vZGUuRUxFTUVOVF9OT0RFJiZuLmRlZmF1bHQodGhpcy5fZWxlbWVudCkuaGFzQ2xhc3MoImFjdGl2ZSIpfHxuLmRlZmF1bHQodGhpcy5fZWxlbWVudCkuaGFzQ2xhc3MoImRpc2FibGVkIikpKXt2YXIgZSxpLHI9bi5kZWZhdWx0KHRoaXMuX2VsZW1lbnQpLmNsb3Nlc3QoIi5uYXYsIC5saXN0LWdyb3VwIilbMF0sbz1hLmdldFNlbGVjdG9yRnJvbUVsZW1lbnQodGhpcy5fZWxlbWVudCk7aWYocil7dmFyIHM9IlVMIj09PXIubm9kZU5hbWV8fCJPTCI9PT1yLm5vZGVOYW1lPyI+IGxpID4gLmFjdGl2ZSI6Ii5hY3RpdmUiO2k9KGk9bi5kZWZhdWx0Lm1ha2VBcnJheShuLmRlZmF1bHQocikuZmluZChzKSkpW2kubGVuZ3RoLTFdfXZhciBsPW4uZGVmYXVsdC5FdmVudCgiaGlkZS5icy50YWIiLHtyZWxhdGVkVGFyZ2V0OnRoaXMuX2VsZW1lbnR9KSxjPW4uZGVmYXVsdC5FdmVudCgic2hvdy5icy50YWIiLHtyZWxhdGVkVGFyZ2V0Oml9KTtpZihpJiZuLmRlZmF1bHQoaSkudHJpZ2dlcihsKSxuLmRlZmF1bHQodGhpcy5fZWxlbWVudCkudHJpZ2dlcihjKSwhYy5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmIWwuaXNEZWZhdWx0UHJldmVudGVkKCkpe28mJihlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IobykpLHRoaXMuX2FjdGl2YXRlKHRoaXMuX2VsZW1lbnQscik7dmFyIHU9ZnVuY3Rpb24oKXt2YXIgZT1uLmRlZmF1bHQuRXZlbnQoImhpZGRlbi5icy50YWIiLHtyZWxhdGVkVGFyZ2V0OnQuX2VsZW1lbnR9KSxyPW4uZGVmYXVsdC5FdmVudCgic2hvd24uYnMudGFiIix7cmVsYXRlZFRhcmdldDppfSk7bi5kZWZhdWx0KGkpLnRyaWdnZXIoZSksbi5kZWZhdWx0KHQuX2VsZW1lbnQpLnRyaWdnZXIocil9O2U/dGhpcy5fYWN0aXZhdGUoZSxlLnBhcmVudE5vZGUsdSk6dSgpfX19LGUuZGlzcG9zZT1mdW5jdGlvbigpe24uZGVmYXVsdC5yZW1vdmVEYXRhKHRoaXMuX2VsZW1lbnQsImJzLnRhYiIpLHRoaXMuX2VsZW1lbnQ9bnVsbH0sZS5fYWN0aXZhdGU9ZnVuY3Rpb24odCxlLGkpe3ZhciByPXRoaXMsbz0oIWV8fCJVTCIhPT1lLm5vZGVOYW1lJiYiT0wiIT09ZS5ub2RlTmFtZT9uLmRlZmF1bHQoZSkuY2hpbGRyZW4oIi5hY3RpdmUiKTpuLmRlZmF1bHQoZSkuZmluZCgiPiBsaSA+IC5hY3RpdmUiKSlbMF0scz1pJiZvJiZuLmRlZmF1bHQobykuaGFzQ2xhc3MoImZhZGUiKSxsPWZ1bmN0aW9uKCl7cmV0dXJuIHIuX3RyYW5zaXRpb25Db21wbGV0ZSh0LG8saSl9O2lmKG8mJnMpe3ZhciBjPWEuZ2V0VHJhbnNpdGlvbkR1cmF0aW9uRnJvbUVsZW1lbnQobyk7bi5kZWZhdWx0KG8pLnJlbW92ZUNsYXNzKCJzaG93Iikub25lKGEuVFJBTlNJVElPTl9FTkQsbCkuZW11bGF0ZVRyYW5zaXRpb25FbmQoYyl9ZWxzZSBsKCl9LGUuX3RyYW5zaXRpb25Db21wbGV0ZT1mdW5jdGlvbih0LGUsaSl7aWYoZSl7bi5kZWZhdWx0KGUpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKTt2YXIgcj1uLmRlZmF1bHQoZS5wYXJlbnROb2RlKS5maW5kKCI+IC5kcm9wZG93bi1tZW51IC5hY3RpdmUiKVswXTtyJiZuLmRlZmF1bHQocikucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpLCJ0YWIiPT09ZS5nZXRBdHRyaWJ1dGUoInJvbGUiKSYmZS5zZXRBdHRyaWJ1dGUoImFyaWEtc2VsZWN0ZWQiLCExKX1pZihuLmRlZmF1bHQodCkuYWRkQ2xhc3MoImFjdGl2ZSIpLCJ0YWIiPT09dC5nZXRBdHRyaWJ1dGUoInJvbGUiKSYmdC5zZXRBdHRyaWJ1dGUoImFyaWEtc2VsZWN0ZWQiLCEwKSxhLnJlZmxvdyh0KSx0LmNsYXNzTGlzdC5jb250YWlucygiZmFkZSIpJiZ0LmNsYXNzTGlzdC5hZGQoInNob3ciKSx0LnBhcmVudE5vZGUmJm4uZGVmYXVsdCh0LnBhcmVudE5vZGUpLmhhc0NsYXNzKCJkcm9wZG93bi1tZW51Iikpe3ZhciBvPW4uZGVmYXVsdCh0KS5jbG9zZXN0KCIuZHJvcGRvd24iKVswXTtpZihvKXt2YXIgcz1bXS5zbGljZS5jYWxsKG8ucXVlcnlTZWxlY3RvckFsbCgiLmRyb3Bkb3duLXRvZ2dsZSIpKTtuLmRlZmF1bHQocykuYWRkQ2xhc3MoImFjdGl2ZSIpfXQuc2V0QXR0cmlidXRlKCJhcmlhLWV4cGFuZGVkIiwhMCl9aSYmaSgpfSx0Ll9qUXVlcnlJbnRlcmZhY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXt2YXIgaT1uLmRlZmF1bHQodGhpcykscj1pLmRhdGEoImJzLnRhYiIpO2lmKHJ8fChyPW5ldyB0KHRoaXMpLGkuZGF0YSgiYnMudGFiIixyKSksInN0cmluZyI9PXR5cGVvZiBlKXtpZih2b2lkIDA9PT1yW2VdKXRocm93IG5ldyBUeXBlRXJyb3IoJ05vIG1ldGhvZCBuYW1lZCAiJytlKyciJyk7cltlXSgpfX0pKX0scih0LG51bGwsW3trZXk6IlZFUlNJT04iLGdldDpmdW5jdGlvbigpe3JldHVybiI0LjYuMCJ9fV0pLHR9KCk7bi5kZWZhdWx0KGRvY3VtZW50KS5vbigiY2xpY2suYnMudGFiLmRhdGEtYXBpIiwnW2RhdGEtdG9nZ2xlPSJ0YWIiXSwgW2RhdGEtdG9nZ2xlPSJwaWxsIl0sIFtkYXRhLXRvZ2dsZT0ibGlzdCJdJywoZnVuY3Rpb24odCl7dC5wcmV2ZW50RGVmYXVsdCgpLG9lLl9qUXVlcnlJbnRlcmZhY2UuY2FsbChuLmRlZmF1bHQodGhpcyksInNob3ciKX0pKSxuLmRlZmF1bHQuZm4udGFiPW9lLl9qUXVlcnlJbnRlcmZhY2Usbi5kZWZhdWx0LmZuLnRhYi5Db25zdHJ1Y3Rvcj1vZSxuLmRlZmF1bHQuZm4udGFiLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gbi5kZWZhdWx0LmZuLnRhYj1yZSxvZS5falF1ZXJ5SW50ZXJmYWNlfTt2YXIgYWU9bi5kZWZhdWx0LmZuLnRvYXN0LHNlPXthbmltYXRpb246ImJvb2xlYW4iLGF1dG9oaWRlOiJib29sZWFuIixkZWxheToibnVtYmVyIn0sbGU9e2FuaW1hdGlvbjohMCxhdXRvaGlkZTohMCxkZWxheTo1MDB9LGNlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMuX2VsZW1lbnQ9dCx0aGlzLl9jb25maWc9dGhpcy5fZ2V0Q29uZmlnKGUpLHRoaXMuX3RpbWVvdXQ9bnVsbCx0aGlzLl9zZXRMaXN0ZW5lcnMoKX12YXIgZT10LnByb3RvdHlwZTtyZXR1cm4gZS5zaG93PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPW4uZGVmYXVsdC5FdmVudCgic2hvdy5icy50b2FzdCIpO2lmKG4uZGVmYXVsdCh0aGlzLl9lbGVtZW50KS50cmlnZ2VyKGUpLCFlLmlzRGVmYXVsdFByZXZlbnRlZCgpKXt0aGlzLl9jbGVhclRpbWVvdXQoKSx0aGlzLl9jb25maWcuYW5pbWF0aW9uJiZ0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoImZhZGUiKTt2YXIgaT1mdW5jdGlvbigpe3QuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgic2hvd2luZyIpLHQuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgic2hvdyIpLG4uZGVmYXVsdCh0Ll9lbGVtZW50KS50cmlnZ2VyKCJzaG93bi5icy50b2FzdCIpLHQuX2NvbmZpZy5hdXRvaGlkZSYmKHQuX3RpbWVvdXQ9c2V0VGltZW91dCgoZnVuY3Rpb24oKXt0LmhpZGUoKX0pLHQuX2NvbmZpZy5kZWxheSkpfTtpZih0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImhpZGUiKSxhLnJlZmxvdyh0aGlzLl9lbGVtZW50KSx0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoInNob3dpbmciKSx0aGlzLl9jb25maWcuYW5pbWF0aW9uKXt2YXIgcj1hLmdldFRyYW5zaXRpb25EdXJhdGlvbkZyb21FbGVtZW50KHRoaXMuX2VsZW1lbnQpO24uZGVmYXVsdCh0aGlzLl9lbGVtZW50KS5vbmUoYS5UUkFOU0lUSU9OX0VORCxpKS5lbXVsYXRlVHJhbnNpdGlvbkVuZChyKX1lbHNlIGkoKX19LGUuaGlkZT1mdW5jdGlvbigpe2lmKHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJzaG93Iikpe3ZhciB0PW4uZGVmYXVsdC5FdmVudCgiaGlkZS5icy50b2FzdCIpO24uZGVmYXVsdCh0aGlzLl9lbGVtZW50KS50cmlnZ2VyKHQpLHQuaXNEZWZhdWx0UHJldmVudGVkKCl8fHRoaXMuX2Nsb3NlKCl9fSxlLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLl9jbGVhclRpbWVvdXQoKSx0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygic2hvdyIpJiZ0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoInNob3ciKSxuLmRlZmF1bHQodGhpcy5fZWxlbWVudCkub2ZmKCJjbGljay5kaXNtaXNzLmJzLnRvYXN0Iiksbi5kZWZhdWx0LnJlbW92ZURhdGEodGhpcy5fZWxlbWVudCwiYnMudG9hc3QiKSx0aGlzLl9lbGVtZW50PW51bGwsdGhpcy5fY29uZmlnPW51bGx9LGUuX2dldENvbmZpZz1mdW5jdGlvbih0KXtyZXR1cm4gdD1vKHt9LGxlLG4uZGVmYXVsdCh0aGlzLl9lbGVtZW50KS5kYXRhKCksIm9iamVjdCI9PXR5cGVvZiB0JiZ0P3Q6e30pLGEudHlwZUNoZWNrQ29uZmlnKCJ0b2FzdCIsdCx0aGlzLmNvbnN0cnVjdG9yLkRlZmF1bHRUeXBlKSx0fSxlLl9zZXRMaXN0ZW5lcnM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO24uZGVmYXVsdCh0aGlzLl9lbGVtZW50KS5vbigiY2xpY2suZGlzbWlzcy5icy50b2FzdCIsJ1tkYXRhLWRpc21pc3M9InRvYXN0Il0nLChmdW5jdGlvbigpe3JldHVybiB0LmhpZGUoKX0pKX0sZS5fY2xvc2U9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9ZnVuY3Rpb24oKXt0Ll9lbGVtZW50LmNsYXNzTGlzdC5hZGQoImhpZGUiKSxuLmRlZmF1bHQodC5fZWxlbWVudCkudHJpZ2dlcigiaGlkZGVuLmJzLnRvYXN0Iil9O2lmKHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgic2hvdyIpLHRoaXMuX2NvbmZpZy5hbmltYXRpb24pe3ZhciBpPWEuZ2V0VHJhbnNpdGlvbkR1cmF0aW9uRnJvbUVsZW1lbnQodGhpcy5fZWxlbWVudCk7bi5kZWZhdWx0KHRoaXMuX2VsZW1lbnQpLm9uZShhLlRSQU5TSVRJT05fRU5ELGUpLmVtdWxhdGVUcmFuc2l0aW9uRW5kKGkpfWVsc2UgZSgpfSxlLl9jbGVhclRpbWVvdXQ9ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQodGhpcy5fdGltZW91dCksdGhpcy5fdGltZW91dD1udWxsfSx0Ll9qUXVlcnlJbnRlcmZhY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXt2YXIgaT1uLmRlZmF1bHQodGhpcykscj1pLmRhdGEoImJzLnRvYXN0Iik7aWYocnx8KHI9bmV3IHQodGhpcywib2JqZWN0Ij09dHlwZW9mIGUmJmUpLGkuZGF0YSgiYnMudG9hc3QiLHIpKSwic3RyaW5nIj09dHlwZW9mIGUpe2lmKHZvaWQgMD09PXJbZV0pdGhyb3cgbmV3IFR5cGVFcnJvcignTm8gbWV0aG9kIG5hbWVkICInK2UrJyInKTtyW2VdKHRoaXMpfX0pKX0scih0LG51bGwsW3trZXk6IlZFUlNJT04iLGdldDpmdW5jdGlvbigpe3JldHVybiI0LjYuMCJ9fSx7a2V5OiJEZWZhdWx0VHlwZSIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHNlfX0se2tleToiRGVmYXVsdCIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGxlfX1dKSx0fSgpO24uZGVmYXVsdC5mbi50b2FzdD1jZS5falF1ZXJ5SW50ZXJmYWNlLG4uZGVmYXVsdC5mbi50b2FzdC5Db25zdHJ1Y3Rvcj1jZSxuLmRlZmF1bHQuZm4udG9hc3Qubm9Db25mbGljdD1mdW5jdGlvbigpe3JldHVybiBuLmRlZmF1bHQuZm4udG9hc3Q9YWUsY2UuX2pRdWVyeUludGVyZmFjZX0sdC5BbGVydD1jLHQuQnV0dG9uPWQsdC5DYXJvdXNlbD12LHQuQ29sbGFwc2U9Xyx0LkRyb3Bkb3duPUR0LHQuTW9kYWw9SXQsdC5Qb3BvdmVyPUp0LHQuU2Nyb2xsc3B5PWllLHQuVGFiPW9lLHQuVG9hc3Q9Y2UsdC5Ub29sdGlwPVV0LHQuVXRpbD1hLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0pKTt2YXIgTmlvQXBwPWZ1bmN0aW9uKHQsZSl7InVzZSBzdHJpY3QiO3ZhciBuPWUod2luZG93KSxpPWUoImJvZHkiKSxyPSJsaXRlLWRhc2giO2Z1bmN0aW9uIG8odCxlKXtyZXR1cm4gT2JqZWN0LmtleXMoZSkuZm9yRWFjaCgoZnVuY3Rpb24obil7dFtuXT1lW25dfSkpLHR9cmV0dXJuIGUuZm4uZXhpc3RzPWZ1bmN0aW9uKCl7cmV0dXJuIDA8dGhpcy5sZW5ndGh9LGUuZm4uY3Nza2V5PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPWU/ZSsiLSI6IiIsaT10P3Quc3BsaXQoIiAiKToiIixyPTA7cjxpLmxlbmd0aDtyKyspaVtyXT1uK2lbcl07cmV0dXJuIGkudG9TdHJpbmcoKS5yZXBsYWNlKCIsIiwiICIpfSx0LkJTPXt9LHQuVEdMPXt9LHQuQW5pPXt9LHQuQWRkb25zPXt9LHQuU2xpZGVyPXt9LHQuUGlja2VyPXt9LHQuV2luPXtoZWlnaHQ6bi5oZWlnaHQoKSx3aWR0aDpuLm91dGVyV2lkdGgoKX0sdC5CcmVhaz17bWI6NDIwLHNtOjU3NixtZDo3NjgsbGc6OTkyLHhsOjEyMDAseHhsOjE1NDAsYW55OjEvMH0sdC5Ib3N0PXtuYW1lOndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSxsb2NhdDpyLnNsaWNlKC00KStyLnNsaWNlKDAsNCl9LHQuaXNEYXJrPSEoIWkuaGFzQ2xhc3MoImRhcmstbW9kZSIpJiYiZGFyayIhPT1pLmRhdGEoInRoZW1lIikpLHQuU3RhdGU9e2lzUlRMOiEoIWkuaGFzQ2xhc3MoImhhcy1ydGwiKSYmInJ0bCIhPT1pLmF0dHIoImRpciIpKSxpc1RvdWNoOiJvbnRvdWNoc3RhcnQiaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGlzTW9iaWxlOiEhbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvQW5kcm9pZHx3ZWJPU3xpUGhvbmV8aVBhZHxpUG9kfEJsYWNrQmVycnl8SUVNb2JpbGV8T3BlcmEgTWluaXxXaW5kb3dzIFBob25lfC9pKSxhc01vYmlsZTp0Lldpbi53aWR0aDx0LkJyZWFrLm1kLGFzU2VydmU6dC5Ib3N0Lm5hbWUuc3BsaXQoIi4iKS5pbmRleE9mKHQuSG9zdC5sb2NhdCl9LHQuaGV4UkdCPWZ1bmN0aW9uKHQsZSl7aWYoZT1lfHwxLC9eIyhbQS1GYS1mMC05XXszfSl7MSwyfSQvLnRlc3QodCkpcmV0dXJuIHQ9Wyh0PSIweCIrKHQ9Mz09PSh0PXQuc3Vic3RyaW5nKDEpLnNwbGl0KCIiKSkubGVuZ3RoP1t0WzBdLHRbMF0sdFsxXSx0WzFdLHRbMl0sdFsyXV06dCkuam9pbigiIikpPj4xNiYyNTUsdD4+OCYyNTUsMjU1JnRdLmpvaW4oIiwiKSwxPD1lPyJyZ2JhKCIrdCsiKSI6InJnYmEoIit0KyIsIitlKyIpIjt0aHJvdyBuZXcgRXJyb3IoImJhZCBoZXgiKX0sdC5TdGF0ZVVwZGF0ZT1mdW5jdGlvbigpe3QuV2luPXtoZWlnaHQ6bi5oZWlnaHQoKSx3aWR0aDpuLm91dGVyV2lkdGgoKX0sdC5TdGF0ZS5hc01vYmlsZT10Lldpbi53aWR0aDx0LkJyZWFrLm1kfSx0LkNsYXNzSW5pdD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXshMD09PXQuU3RhdGUuYXNNb2JpbGU/aS5hZGRDbGFzcygiYXMtbW9iaWxlIik6aS5yZW1vdmVDbGFzcygiYXMtbW9iaWxlIil9ITA9PT10LlN0YXRlLmlzVG91Y2g/aS5hZGRDbGFzcygiaGFzLXRvdWNoIik6aS5hZGRDbGFzcygibm8tdG91Y2giKSxlKCksITA9PT10LlN0YXRlLmlzUlRMJiZpLmFkZENsYXNzKCJoYXMtcnRsIiksaS5hZGRDbGFzcygibmstbmlvLXRoZW1lIiksbi5vbigicmVzaXplIixlKX0sdC5Db2xvckJHPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LG4pe3ZhciBpPWUodCk7dD1ufHwiYmciOyIiIT09KG49aS5kYXRhKHQpKSYmKCJiZy1jb2xvciI9PT10P2kuY3NzKCJiYWNrZ3JvdW5kLWNvbG9yIixuKToiYmctaW1hZ2UiPT09dD9pLmNzcygiYmFja2dyb3VuZC1pbWFnZSIsJ3VybCgiJytuKyciKScpOmkuY3NzKCJiYWNrZ3JvdW5kIixuKSl9ZSgiW2RhdGEtYmddIikuZWFjaCgoZnVuY3Rpb24oKXt0KHRoaXMsImJnIil9KSksZSgiW2RhdGEtYmctY29sb3JdIikuZWFjaCgoZnVuY3Rpb24oKXt0KHRoaXMsImJnLWNvbG9yIil9KSksZSgiW2RhdGEtYmctaW1hZ2VdIikuZWFjaCgoZnVuY3Rpb24oKXt0KHRoaXMsImJnLWltYWdlIil9KSl9LHQuQ29sb3JUWFQ9ZnVuY3Rpb24oKXtlKCJbZGF0YS1jb2xvcl0iKS5lYWNoKChmdW5jdGlvbigpe3ZhciB0LG47bj0obj0iY29sb3IiKXx8ImNvbG9yIiwiIiE9PShuPSh0PWUodD10aGlzKSkuZGF0YShuKSkmJnQuY3NzKCJjb2xvciIsbil9KSl9LHQuQnJlYWtDbGFzcz1mdW5jdGlvbihuLGkscil7dmFyIGE9bnx8Ii5oZWFkZXItbWVudSIscz1pfHx0LkJyZWFrLm1kLGw9KGk9e3RpbWVPdXQ6MWUzLGNsYXNzQWRkOiJtb2JpbGUtbWVudSJ9LHI/byhpLHIpOmkpO2lmKChpPWwuaWdub3JlfHwhMSkmJmUoYSkuaGFzQ2xhc3MoaSkpcmV0dXJuITE7dC5XaW4ud2lkdGg8cz9zZXRUaW1lb3V0KChmdW5jdGlvbigpe3QuV2luLndpZHRoPHMmJmUoYSkuYWRkQ2xhc3MobC5jbGFzc0FkZCl9KSxsLnRpbWVPdXQpOmUoYSkucmVtb3ZlQ2xhc3MobC5jbGFzc0FkZCl9LHQuUGFzc2NvZGU9ZnVuY3Rpb24odCxuKXt2YXIgaT17c2hvd0NsYXNzOiJpcy1zaG93biIsaGlkZUNsYXNzOiJpcy1oaWRkZW4ifSxyPW4/byhpLG4pOmk7ZSh0KS5leGlzdHMoKSYmZSh0KS5vbigiY2xpY2siLChmdW5jdGlvbih0KXt2YXIgbj1lKHRoaXMpLGk9bi5kYXRhKCJ0YXJnZXQiKTtpPWUoIiMiK2kpO3QucHJldmVudERlZmF1bHQoKSxpLmhhc0NsYXNzKHIuc2hvd0NsYXNzKT8obi5hZGQoaSkuYWRkQ2xhc3Moci5oaWRlQ2xhc3MpLnJlbW92ZUNsYXNzKHIuc2hvd0NsYXNzKSxpLmF0dHIoInR5cGUiLCJwYXNzd29yZCIpKToobi5hZGQoaSkuYWRkQ2xhc3Moci5zaG93Q2xhc3MpLnJlbW92ZUNsYXNzKHIuaGlkZUNsYXNzKSxpLmF0dHIoInR5cGUiLCJ0ZXh0IikpfSkpfSx0LkxpbmtPZmY9ZnVuY3Rpb24odCl7ZSh0KS5vbigiY2xpY2siLChmdW5jdGlvbih0KXt0LnByZXZlbnREZWZhdWx0KCl9KSl9LHQuU2V0SFc9ZnVuY3Rpb24odCxuKXtuPSJoZWlnaHQiPT1ufHwiaCI9PW4/ImhlaWdodCI6IndpZHRoIixlKHQ9dHx8IltkYXRhLSIrbisiXSIpLmV4aXN0cygpJiZlKHQpLmVhY2goKGZ1bmN0aW9uKCl7ZSh0aGlzKS5jc3MobixlKHRoaXMpLmRhdGEobikpfSkpfSx0LkFkZEluQm9keT1mdW5jdGlvbih0LG4pe3ZhciByPXtwcmVmaXg6Im5rLSIsY2xhc3M6IiIsaGFzOiJoYXMifTtuPW4/byhyLG4pOnIsdD1yPXQucmVwbGFjZSgiLiIsIiIpLnJlcGxhY2Uobi5wcmVmaXgsIiIpO24ucHJlZml4PSExIT09bi5wcmVmaXg/bi5wcmVmaXg6IiIsbi5oYXM9IiIhPT1uLmhhcz9uLmhhcysiLSI6IiIsdD0iIiE9PW4uY2xhc3M/bi5jbGFzczpuLmhhcyt0LGUoIi4iK24ucHJlZml4K3IpLmV4aXN0cygpJiYhaS5oYXNDbGFzcyh0KSYmaS5hZGRDbGFzcyh0KX0sdC5Ub2dnbGU9e3RyaWdnZXI6ZnVuY3Rpb24odCxuKXt2YXIgcj17c2VsZjp0LGFjdGl2ZToiYWN0aXZlIixjb250ZW50OiJleHBhbmRlZCIsZGF0YToiY29udGVudCIsb2xheToidG9nZ2xlLW92ZXJsYXkiLHNwZWVkOjQwMH0sYT1uP28ocixuKTpyO249ZSgiW2RhdGEtdGFyZ2V0PSIrdCsiXSIpLHQ9KHI9ZSgiW2RhdGEtIithLmRhdGErIj0iK3QrIl0iKSkuZGF0YSgidG9nZ2xlLWJvZHkiKTtyLmRhdGEoInRvZ2dsZS1vdmVybGF5IikmJihhLm92ZXJsYXk9YS5vbGF5KSx0JiYoYS5ib2R5PSJ0b2dnbGUtc2hvd24iKSxyLmhhc0NsYXNzKGEuY29udGVudCk/KG4ucmVtb3ZlQ2xhc3MoYS5hY3RpdmUpLCgxPT1hLnRvZ2dsZT9yLnNsaWRlVXAoYS5zcGVlZCk6cikucmVtb3ZlQ2xhc3MoYS5jb250ZW50KSk6KG4uYWRkQ2xhc3MoYS5hY3RpdmUpLCgxPT1hLnRvZ2dsZT9yLnNsaWRlRG93bihhLnNwZWVkKTpyKS5hZGRDbGFzcyhhLmNvbnRlbnQpKSxhLmJvZHkmJmkudG9nZ2xlQ2xhc3MoYS5ib2R5KSxhLm92ZXJsYXkmJnRoaXMub3ZlcmxheShyLGEub3ZlcmxheSxhKX0scmVtb3ZlZDpmdW5jdGlvbih0LG4pe3ZhciByPXtzZWxmOnQsYWN0aXZlOiJhY3RpdmUiLGNvbnRlbnQ6ImV4cGFuZGVkIixib2R5OiIiLGRhdGE6ImNvbnRlbnQiLG9sYXk6InRvZ2dsZS1vdmVybGF5In0sYT1uP28ocixuKTpyO249ZSgiW2RhdGEtdGFyZ2V0PSIrdCsiXSIpLHQ9KHI9ZSgiW2RhdGEtIithLmRhdGErIj0iK3QrIl0iKSkuZGF0YSgidG9nZ2xlLWJvZHkiKTtyLmRhdGEoInRvZ2dsZS1vdmVybGF5IikmJihhLm92ZXJsYXk9YS5vbGF5KSx0JiYoYS5ib2R5PSJ0b2dnbGUtc2hvd24iKSwobi5oYXNDbGFzcyhhLmFjdGl2ZSl8fHIuaGFzQ2xhc3MoYS5jb250ZW50KSkmJihuLnJlbW92ZUNsYXNzKGEuYWN0aXZlKSxyLnJlbW92ZUNsYXNzKGEuY29udGVudCksITA9PT1hLnRvZ2dsZSYmci5zbGlkZVVwKGEuc3BlZWQpKSxhLmJvZHkmJmkuaGFzQ2xhc3MoYS5ib2R5KSYmaS5yZW1vdmVDbGFzcyhhLmJvZHkpLGEuY2xvc2UmJighMD09PWEuY2xvc2UucHJvZmlsZSYmdGhpcy5jbG9zZVByb2ZpbGUociksITA9PT1hLmNsb3NlLm1lbnUmJnRoaXMuY2xvc2VNZW51KHIpKSxhLm92ZXJsYXkmJnRoaXMub3ZlcmxheVJlbW92ZShhLm92ZXJsYXkpfSxvdmVybGF5OmZ1bmN0aW9uKG4saSxyKXt2YXIgbzshMD09PXIuYnJlYWsmJihvPWUobikuZGF0YSgidG9nZ2xlLXNjcmVlbiIpLHIuYnJlYWs9dC5CcmVha1tvXSksZShuKS5oYXNDbGFzcyhyLmNvbnRlbnQpJiZ0Lldpbi53aWR0aDxyLmJyZWFrP2UobikuYWZ0ZXIoJzxkaXYgY2xhc3M9IicraSsnIiBkYXRhLXRhcmdldD0iJytyLnNlbGYrJyI+PC9kaXY+Jyk6dGhpcy5vdmVybGF5UmVtb3ZlKGkpfSxvdmVybGF5UmVtb3ZlOmZ1bmN0aW9uKHQpe2UoIi4iK3QpLmZhZGVPdXQoMzAwKS5yZW1vdmUoKX0sZHJvcE1lbnU6ZnVuY3Rpb24odCxuKXt2YXIgaT17YWN0aXZlOiJhY3RpdmUiLHNlbGY6ImxpbmstdG9nZ2xlIixjaGlsZDoibWVudS1zdWIiLHNwZWVkOjQwMH07bj1uP28oaSxuKTppLHQ9KGk9ZSh0KS5wYXJlbnQoKSkuY2hpbGRyZW4oIi4iK24uY2hpbGQpO24uc3BlZWQ9NTx0LmNoaWxkcmVuKCkubGVuZ3RoP24uc3BlZWQrMjAqdC5jaGlsZHJlbigpLmxlbmd0aDpuLnNwZWVkLHQuc2xpZGVUb2dnbGUobi5zcGVlZCkuZmluZCgiLiIrbi5jaGlsZCkuc2xpZGVVcChuLnNwZWVkKSxpLnRvZ2dsZUNsYXNzKG4uYWN0aXZlKS5zaWJsaW5ncygpLnJlbW92ZUNsYXNzKG4uYWN0aXZlKS5maW5kKCIuIituLmNoaWxkKS5zbGlkZVVwKG4uc3BlZWQpfSxjbG9zZVByb2ZpbGU6ZnVuY3Rpb24odCl7dmFyIG49ZSh0KS5maW5kKCIubmstcHJvZmlsZS10b2dnbGUuYWN0aXZlIik7dD1lKHQpLmZpbmQoIi5uay1wcm9maWxlLWNvbnRlbnQuZXhwYW5kZWQiKTtuLmV4aXN0cygpJiYobi5yZW1vdmVDbGFzcygiYWN0aXZlIiksdC5zbGlkZVVwKCkucmVtb3ZlQ2xhc3MoImV4cGFuZGVkIikpfSxjbG9zZU1lbnU6ZnVuY3Rpb24odCl7KHQ9ZSh0KS5maW5kKCIubmstbWVudS1pdGVtLmFjdGl2ZSIpKS5leGlzdHMoKSYmdC5yZW1vdmVDbGFzcygiYWN0aXZlIikuZmluZCgiLm5rLW1lbnUtc3ViIikuc2xpZGVVcCgpfX0sdC5CUy50b29sdGlwPWZ1bmN0aW9uKHQsbil7dmFyIGk9e2JvdW5kYXJ5OiJ3aW5kb3ciLHRyaWdnZXI6ImhvdmVyIn07aT1uP28oaSxuKTppO2UodCkuZXhpc3RzKCkmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmZuLnRvb2x0aXAmJmUodCkudG9vbHRpcChpKX0sdC5CUy5tZW51dGlwPWZ1bmN0aW9uKGUpe3QuQlMudG9vbHRpcChlLHtib3VuZGFyeToid2luZG93IixwbGFjZW1lbnQ6InJpZ2h0In0pfSx0LkJTLnBvcG92ZXI9ZnVuY3Rpb24odCl7ZSh0KS5leGlzdHMoKSYmImZ1bmN0aW9uIj09dHlwZW9mIGUuZm4ucG9wb3ZlciYmZSh0KS5wb3BvdmVyKCl9LHQuQlMucHJvZ3Jlc3M9ZnVuY3Rpb24odCl7ZSh0KS5leGlzdHMoKSYmZSh0KS5lYWNoKChmdW5jdGlvbigpe2UodGhpcykuY3NzKCJ3aWR0aCIsZSh0aGlzKS5kYXRhKCJwcm9ncmVzcyIpKyIlIil9KSl9LHQuQlMubW9kYWxmaXg9ZnVuY3Rpb24odCl7ZSh0PXR8fCIubW9kYWwiKS5leGlzdHMoKSYmImZ1bmN0aW9uIj09dHlwZW9mIGUuZm4ubW9kYWwmJmUodCkub24oInNob3duLmJzLm1vZGFsIiwoZnVuY3Rpb24oKXtpLmhhc0NsYXNzKCJtb2RhbC1vcGVuIil8fGkuYWRkQ2xhc3MoIm1vZGFsLW9wZW4iKX0pKX0sdC5CUy5maWxlaW5wdXQ9ZnVuY3Rpb24odCl7ZSh0KS5leGlzdHMoKSYmZSh0KS5lYWNoKChmdW5jdGlvbigpe3ZhciB0PWUodGhpcykubmV4dCgpLnRleHQoKSxuPVtdO2UodGhpcykub24oImNoYW5nZSIsKGZ1bmN0aW9uKCl7Zm9yKHZhciBpPTA7aTx0aGlzLmZpbGVzLmxlbmd0aDtpKyspbltpXT10aGlzLmZpbGVzW2ldLm5hbWU7dD1uP24uam9pbigiLCAiKTp0LGUodGhpcykubmV4dCgpLmh0bWwodCl9KSl9KSl9LHQuUGlja2VyLmRhdGU9ZnVuY3Rpb24obixpKXtlKG4pLmV4aXN0cygpJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5mbi5kYXRlcGlja2VyJiZlKG4pLmVhY2goKGZ1bmN0aW9uKCl7dmFyIG49e2Zvcm1hdDoiIiE9PShuPWUodGhpcykuZGF0YSgiZGF0ZS1mb3JtYXQiKSk/bjoibW0vZGQveXl5eSIsbWF4Vmlld01vZGU6MixjbGVhckJ0bjohMCxhdXRvY2xvc2U6ITAsdG9kYXlIaWdobGlnaHQ6ITAscnRsOnQuU3RhdGUuaXNSVEx9O249aT9vKG4saSk6bjtlKHRoaXMpLmRhdGVwaWNrZXIobikub24oImNoYW5nZURhdGUiLChmdW5jdGlvbih0KXswIT09dC5kYXRlcy5sZW5ndGg/ZSh0aGlzKS5wYXJlbnQoKS5hZGRDbGFzcygiZm9jdXNlZCIpOmUodGhpcykucGFyZW50KCkucmVtb3ZlQ2xhc3MoImZvY3VzZWQiKX0pKX0pKX0sdC5QaWNrZXIuZG9iPWZ1bmN0aW9uKGUsbil7dmFyIGk9e3N0YXJ0VmlldzoyLHRvZGF5SGlnaGxpZ2h0OiExfTtpPW4/byhpLG4pOmk7dC5QaWNrZXIuZGF0ZShlLGkpfSx0LlBpY2tlci50aW1lPWZ1bmN0aW9uKHQsbil7ZSh0KS5leGlzdHMoKSYmImZ1bmN0aW9uIj09dHlwZW9mIGUuZm4udGltZXBpY2tlciYmZSh0KS5lYWNoKChmdW5jdGlvbigpe2UodGhpcykucGFyZW50KCkuYWRkQ2xhc3MoImhhcy10aW1lcGlja2VyIik7dmFyIHQ9ZSh0aGlzKS5kYXRhKCJ0aW1lLWZvcm1hdCIpLGk9e3RpbWVGb3JtYXQ6IiIhPT10P3Q6IkhIOm1tIixpbnRlcnZhbDoiIiE9PShpPWUodGhpcykuZGF0YSgidGltZS1pbnRlcnZhbCIpKT9pOjE1LGNoYW5nZTpmdW5jdGlvbih0KXshMSE9PXQ/ZSh0aGlzKS5wYXJlbnQoKS5hZGRDbGFzcygiZm9jdXNlZCIpOmUodGhpcykucGFyZW50KCkucmVtb3ZlQ2xhc3MoImZvY3VzZWQiKX19O2k9bj9vKGksbik6aTtlKHRoaXMpLnRpbWVwaWNrZXIoaSl9KSl9LHQuU2VsZWN0Mj1mdW5jdGlvbihuLGkpe2UobikuZXhpc3RzKCkmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmZuLnNlbGVjdDImJmUobikuZWFjaCgoZnVuY3Rpb24oKXt2YXIgbj1lKHRoaXMpLHI9e3BsYWNlaG9sZGVyOm4uZGF0YSgicGxhY2Vob2xkZXIiKSxjbGVhcjpuLmRhdGEoImNsZWFyIiksc2VhcmNoOm4uZGF0YSgic2VhcmNoIiksd2lkdGg6bi5kYXRhKCJ3aWR0aCIpLHRoZW1lOm4uZGF0YSgidGhlbWUiKSx1aTpuLmRhdGEoInVpIil9O3IudWk9ci51aT8iICIrbi5jc3NrZXkoci51aSwic2VsZWN0MiIpOiIiLHI9e3RoZW1lOnIudGhlbWU/ci50aGVtZSsiICIrci51aToiZGVmYXVsdCIrci51aSxhbGxvd0NsZWFyOnIuY2xlYXJ8fCExLHBsYWNlaG9sZGVyOnIucGxhY2Vob2xkZXJ8fCIiLGRyb3Bkb3duQXV0b1dpZHRoOiEoIXIud2lkdGh8fCJhdXRvIiE9PXIud2lkdGgpLG1pbmltdW1SZXN1bHRzRm9yU2VhcmNoOnIuc2VhcmNoJiYib24iPT09ci5zZWFyY2g/MTotMSxkaXI6dC5TdGF0ZS5pc1JUTD8icnRsIjoibHRyIn0scj1pP28ocixpKTpyLGUodGhpcykuc2VsZWN0MihyKX0pKX0sdC5jb3JlSW5pdD1mdW5jdGlvbigpe3QuY29tcy5vblJlc2l6ZS5wdXNoKHQuU3RhdGVVcGRhdGUpLHQuY29tcy5kb2NSZWFkeS5wdXNoKHQuQ2xhc3NJbml0KX0sdC5jb3JlSW5pdCgpLHR9KE5pb0FwcD1mdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciBpPXtBcHBJbmZvOntuYW1lOiJOaW9BcHAiLHZlcnNpb246IjEuMC44IixhdXRob3I6IlNvZnRuaW8ifSxQYWNrYWdlOntuYW1lOiJEYXNoTGl0ZSIsdmVyc2lvbjoiMi4zIn19LHI9e2RvY1JlYWR5OltdLGRvY1JlYWR5RGVmZXI6W10sd2luTG9hZDpbXSx3aW5Mb2FkRGVmZXI6W10sb25SZXNpemU6W10sb25SZXNpemVEZWZlcjpbXX07ZnVuY3Rpb24gbyhlKXtlPXZvaWQgMD09PWU/dDplLHIuZG9jUmVhZHkuY29uY2F0KHIuZG9jUmVhZHlEZWZlcikuZm9yRWFjaCgoZnVuY3Rpb24odCl7bnVsbCE9dCYmdChlKX0pKX1mdW5jdGlvbiBhKGUpe2U9Im9iamVjdCI9PXR5cGVvZiBlP3Q6ZSxyLndpbkxvYWQuY29uY2F0KHIud2luTG9hZERlZmVyKS5mb3JFYWNoKChmdW5jdGlvbih0KXtudWxsIT10JiZ0KGUpfSkpfWZ1bmN0aW9uIHMoZSl7ZT0ib2JqZWN0Ij09dHlwZW9mIGU/dDplLHIub25SZXNpemUuY29uY2F0KHIub25SZXNpemVEZWZlcikuZm9yRWFjaCgoZnVuY3Rpb24odCl7bnVsbCE9dCYmdChlKX0pKX1yZXR1cm4gdChuKS5yZWFkeShvKSx0KGUpLm9uKCJsb2FkIixhKSx0KGUpLm9uKCJyZXNpemUiLHMpLGkuY29tcz1yLGkuZG9jUmVhZHk9byxpLndpbkxvYWQ9YSxpLm9uUmVzaXplPXMsaX0oalF1ZXJ5LHdpbmRvdyxkb2N1bWVudCksalF1ZXJ5KTshZnVuY3Rpb24odCxlKXsib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMmJiJ1bmRlZmluZWQiIT10eXBlb2YgbW9kdWxlP21vZHVsZS5leHBvcnRzPWUoKToiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShlKToodD10fHxzZWxmKS5TaW1wbGVCYXI9ZSgpfSh0aGlzLChmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0Ijt2YXIgdD0idW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbFRoaXM/Z2xvYmFsVGhpczoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnt9O2Z1bmN0aW9uIGUodCxlKXtyZXR1cm4gdChlPXtleHBvcnRzOnt9fSxlLmV4cG9ydHMpLGUuZXhwb3J0c312YXIgbixpLHIsbz0ib2JqZWN0IixhPWZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0Lk1hdGg9PU1hdGgmJnR9LHM9YSh0eXBlb2YgZ2xvYmFsVGhpcz09byYmZ2xvYmFsVGhpcyl8fGEodHlwZW9mIHdpbmRvdz09byYmd2luZG93KXx8YSh0eXBlb2Ygc2VsZj09byYmc2VsZil8fGEodHlwZW9mIHQ9PW8mJnQpfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLGw9ZnVuY3Rpb24odCl7dHJ5e3JldHVybiEhdCgpfWNhdGNoKHQpe3JldHVybiEwfX0sYz0hbCgoZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCJhIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pKSx1PXt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLGQ9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixoPXtmOmQmJiF1LmNhbGwoezE6Mn0sMSk/ZnVuY3Rpb24odCl7dmFyIGU9ZCh0aGlzLHQpO3JldHVybiEhZSYmZS5lbnVtZXJhYmxlfTp1fSxmPWZ1bmN0aW9uKHQsZSl7cmV0dXJue2VudW1lcmFibGU6ISgxJnQpLGNvbmZpZ3VyYWJsZTohKDImdCksd3JpdGFibGU6ISg0JnQpLHZhbHVlOmV9fSxwPXt9LnRvU3RyaW5nLGc9ZnVuY3Rpb24odCl7cmV0dXJuIHAuY2FsbCh0KS5zbGljZSg4LC0xKX0sbT0iIi5zcGxpdCx2PWwoKGZ1bmN0aW9uKCl7cmV0dXJuIU9iamVjdCgieiIpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApfSkpP2Z1bmN0aW9uKHQpe3JldHVybiJTdHJpbmciPT1nKHQpP20uY2FsbCh0LCIiKTpPYmplY3QodCl9Ok9iamVjdCx5PWZ1bmN0aW9uKHQpe2lmKG51bGw9PXQpdGhyb3cgVHlwZUVycm9yKCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAiK3QpO3JldHVybiB0fSxiPWZ1bmN0aW9uKHQpe3JldHVybiB2KHkodCkpfSx3PWZ1bmN0aW9uKHQpe3JldHVybiJvYmplY3QiPT10eXBlb2YgdD9udWxsIT09dDoiZnVuY3Rpb24iPT10eXBlb2YgdH0seD1mdW5jdGlvbih0LGUpe2lmKCF3KHQpKXJldHVybiB0O3ZhciBuLGk7aWYoZSYmImZ1bmN0aW9uIj09dHlwZW9mKG49dC50b1N0cmluZykmJiF3KGk9bi5jYWxsKHQpKSlyZXR1cm4gaTtpZigiZnVuY3Rpb24iPT10eXBlb2Yobj10LnZhbHVlT2YpJiYhdyhpPW4uY2FsbCh0KSkpcmV0dXJuIGk7aWYoIWUmJiJmdW5jdGlvbiI9PXR5cGVvZihuPXQudG9TdHJpbmcpJiYhdyhpPW4uY2FsbCh0KSkpcmV0dXJuIGk7dGhyb3cgVHlwZUVycm9yKCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWUiKX0sXz17fS5oYXNPd25Qcm9wZXJ0eSxTPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIF8uY2FsbCh0LGUpfSxDPXMuZG9jdW1lbnQsaz13KEMpJiZ3KEMuY3JlYXRlRWxlbWVudCksVD1mdW5jdGlvbih0KXtyZXR1cm4gaz9DLmNyZWF0ZUVsZW1lbnQodCk6e319LEE9IWMmJiFsKChmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkoVCgiZGl2IiksImEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KS5hfSkpLEQ9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixFPXtmOmM/RDpmdW5jdGlvbih0LGUpe2lmKHQ9Yih0KSxlPXgoZSwhMCksQSl0cnl7cmV0dXJuIEQodCxlKX1jYXRjaCh0KXt9aWYoUyh0LGUpKXJldHVybiBmKCFoLmYuY2FsbCh0LGUpLHRbZV0pfX0sTT1mdW5jdGlvbih0KXtpZighdyh0KSl0aHJvdyBUeXBlRXJyb3IoU3RyaW5nKHQpKyIgaXMgbm90IGFuIG9iamVjdCIpO3JldHVybiB0fSxPPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxJPXtmOmM/TzpmdW5jdGlvbih0LGUsbil7aWYoTSh0KSxlPXgoZSwhMCksTShuKSxBKXRyeXtyZXR1cm4gTyh0LGUsbil9Y2F0Y2godCl7fWlmKCJnZXQiaW4gbnx8InNldCJpbiBuKXRocm93IFR5cGVFcnJvcigiQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQiKTtyZXR1cm4idmFsdWUiaW4gbiYmKHRbZV09bi52YWx1ZSksdH19LFA9Yz9mdW5jdGlvbih0LGUsbil7cmV0dXJuIEkuZih0LGUsZigxLG4pKX06ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0W2VdPW4sdH0sTD1mdW5jdGlvbih0LGUpe3RyeXtQKHMsdCxlKX1jYXRjaChuKXtzW3RdPWV9cmV0dXJuIGV9LE49ZSgoZnVuY3Rpb24odCl7dmFyIGU9c1siX19jb3JlLWpzX3NoYXJlZF9fIl18fEwoIl9fY29yZS1qc19zaGFyZWRfXyIse30pOyh0LmV4cG9ydHM9ZnVuY3Rpb24odCxuKXtyZXR1cm4gZVt0XXx8KGVbdF09dm9pZCAwIT09bj9uOnt9KX0pKCJ2ZXJzaW9ucyIsW10pLnB1c2goe3ZlcnNpb246IjMuMi4xIixtb2RlOiJnbG9iYWwiLGNvcHlyaWdodDoiwqkgMjAxOSBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KSJ9KX0pKSxGPU4oIm5hdGl2ZS1mdW5jdGlvbi10by1zdHJpbmciLEZ1bmN0aW9uLnRvU3RyaW5nKSxSPXMuV2Vha01hcCxqPSJmdW5jdGlvbiI9PXR5cGVvZiBSJiYvbmF0aXZlIGNvZGUvLnRlc3QoRi5jYWxsKFIpKSwkPTAsej1NYXRoLnJhbmRvbSgpLEg9ZnVuY3Rpb24odCl7cmV0dXJuIlN5bWJvbCgiK1N0cmluZyh2b2lkIDA9PT10PyIiOnQpKyIpXyIrKCsrJCt6KS50b1N0cmluZygzNil9LEI9Tigia2V5cyIpLHE9ZnVuY3Rpb24odCl7cmV0dXJuIEJbdF18fChCW3RdPUgodCkpfSxXPXt9LFU9cy5XZWFrTWFwO2lmKGope3ZhciBWPW5ldyBVLFk9Vi5nZXQsRz1WLmhhcyxYPVYuc2V0O249ZnVuY3Rpb24odCxlKXtyZXR1cm4gWC5jYWxsKFYsdCxlKSxlfSxpPWZ1bmN0aW9uKHQpe3JldHVybiBZLmNhbGwoVix0KXx8e319LHI9ZnVuY3Rpb24odCl7cmV0dXJuIEcuY2FsbChWLHQpfX1lbHNle3ZhciBRPXEoInN0YXRlIik7V1tRXT0hMCxuPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFAodCxRLGUpLGV9LGk9ZnVuY3Rpb24odCl7cmV0dXJuIFModCxRKT90W1FdOnt9fSxyPWZ1bmN0aW9uKHQpe3JldHVybiBTKHQsUSl9fXZhciBLPXtzZXQ6bixnZXQ6aSxoYXM6cixlbmZvcmNlOmZ1bmN0aW9uKHQpe3JldHVybiByKHQpP2kodCk6bih0LHt9KX0sZ2V0dGVyRm9yOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgbjtpZighdyhlKXx8KG49aShlKSkudHlwZSE9PXQpdGhyb3cgVHlwZUVycm9yKCJJbmNvbXBhdGlibGUgcmVjZWl2ZXIsICIrdCsiIHJlcXVpcmVkIik7cmV0dXJuIG59fX0sSj1lKChmdW5jdGlvbih0KXt2YXIgZT1LLmdldCxuPUsuZW5mb3JjZSxpPVN0cmluZyhGKS5zcGxpdCgidG9TdHJpbmciKTtOKCJpbnNwZWN0U291cmNlIiwoZnVuY3Rpb24odCl7cmV0dXJuIEYuY2FsbCh0KX0pKSwodC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG8pe3ZhciBhPSEhbyYmISFvLnVuc2FmZSxsPSEhbyYmISFvLmVudW1lcmFibGUsYz0hIW8mJiEhby5ub1RhcmdldEdldDsiZnVuY3Rpb24iPT10eXBlb2YgciYmKCJzdHJpbmciIT10eXBlb2YgZXx8UyhyLCJuYW1lIil8fFAociwibmFtZSIsZSksbihyKS5zb3VyY2U9aS5qb2luKCJzdHJpbmciPT10eXBlb2YgZT9lOiIiKSksdCE9PXM/KGE/IWMmJnRbZV0mJihsPSEwKTpkZWxldGUgdFtlXSxsP3RbZV09cjpQKHQsZSxyKSk6bD90W2VdPXI6TChlLHIpfSkoRnVuY3Rpb24ucHJvdG90eXBlLCJ0b1N0cmluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMmJmUodGhpcykuc291cmNlfHxGLmNhbGwodGhpcyl9KSl9KSksWj1zLHR0PWZ1bmN0aW9uKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6dm9pZCAwfSxldD1mdW5jdGlvbih0LGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDI/dHQoWlt0XSl8fHR0KHNbdF0pOlpbdF0mJlpbdF1bZV18fHNbdF0mJnNbdF1bZV19LG50PU1hdGguY2VpbCxpdD1NYXRoLmZsb29yLHJ0PWZ1bmN0aW9uKHQpe3JldHVybiBpc05hTih0PSt0KT8wOih0PjA/aXQ6bnQpKHQpfSxvdD1NYXRoLm1pbixhdD1mdW5jdGlvbih0KXtyZXR1cm4gdD4wP290KHJ0KHQpLDkwMDcxOTkyNTQ3NDA5OTEpOjB9LHN0PU1hdGgubWF4LGx0PU1hdGgubWluLGN0PWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlLG4saSl7dmFyIHIsbz1iKGUpLGE9YXQoby5sZW5ndGgpLHM9ZnVuY3Rpb24odCxlKXt2YXIgbj1ydCh0KTtyZXR1cm4gbjwwP3N0KG4rZSwwKTpsdChuLGUpfShpLGEpO2lmKHQmJm4hPW4pe2Zvcig7YT5zOylpZigocj1vW3MrK10pIT1yKXJldHVybiEwfWVsc2UgZm9yKDthPnM7cysrKWlmKCh0fHxzIGluIG8pJiZvW3NdPT09bilyZXR1cm4gdHx8c3x8MDtyZXR1cm4hdCYmLTF9fSx1dD0oY3QoITApLGN0KCExKSksZHQ9ZnVuY3Rpb24odCxlKXt2YXIgbixpPWIodCkscj0wLG89W107Zm9yKG4gaW4gaSkhUyhXLG4pJiZTKGksbikmJm8ucHVzaChuKTtmb3IoO2UubGVuZ3RoPnI7KVMoaSxuPWVbcisrXSkmJih+dXQobyxuKXx8by5wdXNoKG4pKTtyZXR1cm4gb30saHQ9WyJjb25zdHJ1Y3RvciIsImhhc093blByb3BlcnR5IiwiaXNQcm90b3R5cGVPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwidG9Mb2NhbGVTdHJpbmciLCJ0b1N0cmluZyIsInZhbHVlT2YiXSxmdD1odC5jb25jYXQoImxlbmd0aCIsInByb3RvdHlwZSIpLHB0PXtmOk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzfHxmdW5jdGlvbih0KXtyZXR1cm4gZHQodCxmdCl9fSxndD17ZjpPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzfSxtdD1ldCgiUmVmbGVjdCIsIm93bktleXMiKXx8ZnVuY3Rpb24odCl7dmFyIGU9cHQuZihNKHQpKSxuPWd0LmY7cmV0dXJuIG4/ZS5jb25jYXQobih0KSk6ZX0sdnQ9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49bXQoZSksaT1JLmYscj1FLmYsbz0wO288bi5sZW5ndGg7bysrKXt2YXIgYT1uW29dO1ModCxhKXx8aSh0LGEscihlLGEpKX19LHl0PS8jfFwucHJvdG90eXBlXC4vLGJ0PWZ1bmN0aW9uKHQsZSl7dmFyIG49eHRbd3QodCldO3JldHVybiBuPT1TdHx8biE9X3QmJigiZnVuY3Rpb24iPT10eXBlb2YgZT9sKGUpOiEhZSl9LHd0PWJ0Lm5vcm1hbGl6ZT1mdW5jdGlvbih0KXtyZXR1cm4gU3RyaW5nKHQpLnJlcGxhY2UoeXQsIi4iKS50b0xvd2VyQ2FzZSgpfSx4dD1idC5kYXRhPXt9LF90PWJ0Lk5BVElWRT0iTiIsU3Q9YnQuUE9MWUZJTEw9IlAiLEN0PWJ0LGt0PUUuZixUdD1mdW5jdGlvbih0LGUpe3ZhciBuLGkscixvLGEsbD10LnRhcmdldCxjPXQuZ2xvYmFsLHU9dC5zdGF0O2lmKG49Yz9zOnU/c1tsXXx8TChsLHt9KTooc1tsXXx8e30pLnByb3RvdHlwZSlmb3IoaSBpbiBlKXtpZihvPWVbaV0scj10Lm5vVGFyZ2V0R2V0PyhhPWt0KG4saSkpJiZhLnZhbHVlOm5baV0sIUN0KGM/aTpsKyh1PyIuIjoiIyIpK2ksdC5mb3JjZWQpJiZ2b2lkIDAhPT1yKXtpZih0eXBlb2Ygbz09dHlwZW9mIHIpY29udGludWU7dnQobyxyKX0odC5zaGFtfHxyJiZyLnNoYW0pJiZQKG8sInNoYW0iLCEwKSxKKG4saSxvLHQpfX0sQXQ9ZnVuY3Rpb24odCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgVHlwZUVycm9yKFN0cmluZyh0KSsiIGlzIG5vdCBhIGZ1bmN0aW9uIik7cmV0dXJuIHR9LER0PWZ1bmN0aW9uKHQsZSxuKXtpZihBdCh0KSx2b2lkIDA9PT1lKXJldHVybiB0O3N3aXRjaChuKXtjYXNlIDA6cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQuY2FsbChlKX07Y2FzZSAxOnJldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdC5jYWxsKGUsbil9O2Nhc2UgMjpyZXR1cm4gZnVuY3Rpb24obixpKXtyZXR1cm4gdC5jYWxsKGUsbixpKX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbihuLGkscil7cmV0dXJuIHQuY2FsbChlLG4saSxyKX19cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBwbHkoZSxhcmd1bWVudHMpfX0sRXQ9ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdCh5KHQpKX0sTXQ9QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24odCl7cmV0dXJuIkFycmF5Ij09Zyh0KX0sT3Q9ISFPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYhbCgoZnVuY3Rpb24oKXtyZXR1cm4hU3RyaW5nKFN5bWJvbCgpKX0pKSxJdD1zLlN5bWJvbCxQdD1OKCJ3a3MiKSxMdD1mdW5jdGlvbih0KXtyZXR1cm4gUHRbdF18fChQdFt0XT1PdCYmSXRbdF18fChPdD9JdDpIKSgiU3ltYm9sLiIrdCkpfSxOdD1MdCgic3BlY2llcyIpLEZ0PWZ1bmN0aW9uKHQsZSl7dmFyIG47cmV0dXJuIE10KHQpJiYoImZ1bmN0aW9uIiE9dHlwZW9mKG49dC5jb25zdHJ1Y3Rvcil8fG4hPT1BcnJheSYmIU10KG4ucHJvdG90eXBlKT93KG4pJiZudWxsPT09KG49bltOdF0pJiYobj12b2lkIDApOm49dm9pZCAwKSxuZXcodm9pZCAwPT09bj9BcnJheTpuKSgwPT09ZT8wOmUpfSxSdD1bXS5wdXNoLGp0PWZ1bmN0aW9uKHQpe3ZhciBlPTE9PXQsbj0yPT10LGk9Mz09dCxyPTQ9PXQsbz02PT10LGE9NT09dHx8bztyZXR1cm4gZnVuY3Rpb24ocyxsLGMsdSl7Zm9yKHZhciBkLGgsZj1FdChzKSxwPXYoZiksZz1EdChsLGMsMyksbT1hdChwLmxlbmd0aCkseT0wLGI9dXx8RnQsdz1lP2IocyxtKTpuP2IocywwKTp2b2lkIDA7bT55O3krKylpZigoYXx8eSBpbiBwKSYmKGg9ZyhkPXBbeV0seSxmKSx0KSlpZihlKXdbeV09aDtlbHNlIGlmKGgpc3dpdGNoKHQpe2Nhc2UgMzpyZXR1cm4hMDtjYXNlIDU6cmV0dXJuIGQ7Y2FzZSA2OnJldHVybiB5O2Nhc2UgMjpSdC5jYWxsKHcsZCl9ZWxzZSBpZihyKXJldHVybiExO3JldHVybiBvPy0xOml8fHI/cjp3fX0sJHQ9e2ZvckVhY2g6anQoMCksbWFwOmp0KDEpLGZpbHRlcjpqdCgyKSxzb21lOmp0KDMpLGV2ZXJ5Omp0KDQpLGZpbmQ6anQoNSksZmluZEluZGV4Omp0KDYpfSx6dD1mdW5jdGlvbih0LGUpe3ZhciBuPVtdW3RdO3JldHVybiFufHwhbCgoZnVuY3Rpb24oKXtuLmNhbGwobnVsbCxlfHxmdW5jdGlvbigpe3Rocm93IDF9LDEpfSkpfSxIdD0kdC5mb3JFYWNoLEJ0PXp0KCJmb3JFYWNoIik/ZnVuY3Rpb24odCl7cmV0dXJuIEh0KHRoaXMsdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9OltdLmZvckVhY2g7VHQoe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDpbXS5mb3JFYWNoIT1CdH0se2ZvckVhY2g6QnR9KTt2YXIgcXQ9e0NTU1J1bGVMaXN0OjAsQ1NTU3R5bGVEZWNsYXJhdGlvbjowLENTU1ZhbHVlTGlzdDowLENsaWVudFJlY3RMaXN0OjAsRE9NUmVjdExpc3Q6MCxET01TdHJpbmdMaXN0OjAsRE9NVG9rZW5MaXN0OjEsRGF0YVRyYW5zZmVySXRlbUxpc3Q6MCxGaWxlTGlzdDowLEhUTUxBbGxDb2xsZWN0aW9uOjAsSFRNTENvbGxlY3Rpb246MCxIVE1MRm9ybUVsZW1lbnQ6MCxIVE1MU2VsZWN0RWxlbWVudDowLE1lZGlhTGlzdDowLE1pbWVUeXBlQXJyYXk6MCxOYW1lZE5vZGVNYXA6MCxOb2RlTGlzdDoxLFBhaW50UmVxdWVzdExpc3Q6MCxQbHVnaW46MCxQbHVnaW5BcnJheTowLFNWR0xlbmd0aExpc3Q6MCxTVkdOdW1iZXJMaXN0OjAsU1ZHUGF0aFNlZ0xpc3Q6MCxTVkdQb2ludExpc3Q6MCxTVkdTdHJpbmdMaXN0OjAsU1ZHVHJhbnNmb3JtTGlzdDowLFNvdXJjZUJ1ZmZlckxpc3Q6MCxTdHlsZVNoZWV0TGlzdDowLFRleHRUcmFja0N1ZUxpc3Q6MCxUZXh0VHJhY2tMaXN0OjAsVG91Y2hMaXN0OjB9O2Zvcih2YXIgV3QgaW4gcXQpe3ZhciBVdD1zW1d0XSxWdD1VdCYmVXQucHJvdG90eXBlO2lmKFZ0JiZWdC5mb3JFYWNoIT09QnQpdHJ5e1AoVnQsImZvckVhY2giLEJ0KX1jYXRjaCh0KXtWdC5mb3JFYWNoPUJ0fX12YXIgWXQ9ISgidW5kZWZpbmVkIj09dHlwZW9mIHdpbmRvd3x8IXdpbmRvdy5kb2N1bWVudHx8IXdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KSxHdD1MdCgic3BlY2llcyIpLFh0PSR0LmZpbHRlcjtUdCh7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOiEhbCgoZnVuY3Rpb24oKXt2YXIgdD1bXTtyZXR1cm4odC5jb25zdHJ1Y3Rvcj17fSlbR3RdPWZ1bmN0aW9uKCl7cmV0dXJue2ZvbzoxfX0sMSE9PXQuZmlsdGVyKEJvb2xlYW4pLmZvb30pKX0se2ZpbHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gWHQodGhpcyx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KTt2YXIgUXQ9T2JqZWN0LmtleXN8fGZ1bmN0aW9uKHQpe3JldHVybiBkdCh0LGh0KX0sS3Q9Yz9PYmplY3QuZGVmaW5lUHJvcGVydGllczpmdW5jdGlvbih0LGUpe00odCk7Zm9yKHZhciBuLGk9UXQoZSkscj1pLmxlbmd0aCxvPTA7cj5vOylJLmYodCxuPWlbbysrXSxlW25dKTtyZXR1cm4gdH0sSnQ9ZXQoImRvY3VtZW50IiwiZG9jdW1lbnRFbGVtZW50IiksWnQ9cSgiSUVfUFJPVE8iKSx0ZT1mdW5jdGlvbigpe30sZWU9ZnVuY3Rpb24oKXt2YXIgdCxlPVQoImlmcmFtZSIpLG49aHQubGVuZ3RoO2ZvcihlLnN0eWxlLmRpc3BsYXk9Im5vbmUiLEp0LmFwcGVuZENoaWxkKGUpLGUuc3JjPVN0cmluZygiamF2YXNjcmlwdDoiKSwodD1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQpLm9wZW4oKSx0LndyaXRlKCI8c2NyaXB0PmRvY3VtZW50LkY9T2JqZWN0PFwvc2NyaXB0PiIpLHQuY2xvc2UoKSxlZT10LkY7bi0tOylkZWxldGUgZWUucHJvdG90eXBlW2h0W25dXTtyZXR1cm4gZWUoKX0sbmU9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24odCxlKXt2YXIgbjtyZXR1cm4gbnVsbCE9PXQ/KHRlLnByb3RvdHlwZT1NKHQpLG49bmV3IHRlLHRlLnByb3RvdHlwZT1udWxsLG5bWnRdPXQpOm49ZWUoKSx2b2lkIDA9PT1lP246S3QobixlKX07V1tadF09ITA7dmFyIGllPUx0KCJ1bnNjb3BhYmxlcyIpLHJlPUFycmF5LnByb3RvdHlwZTtudWxsPT1yZVtpZV0mJlAocmUsaWUsbmUobnVsbCkpO3ZhciBvZSxhZSxzZSxsZT1mdW5jdGlvbih0KXtyZVtpZV1bdF09ITB9LGNlPXt9LHVlPSFsKChmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLmNvbnN0cnVjdG9yPW51bGwsT2JqZWN0LmdldFByb3RvdHlwZU9mKG5ldyB0KSE9PXQucHJvdG90eXBlfSkpLGRlPXEoIklFX1BST1RPIiksaGU9T2JqZWN0LnByb3RvdHlwZSxmZT11ZT9PYmplY3QuZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9RXQodCksUyh0LGRlKT90W2RlXToiZnVuY3Rpb24iPT10eXBlb2YgdC5jb25zdHJ1Y3RvciYmdCBpbnN0YW5jZW9mIHQuY29uc3RydWN0b3I/dC5jb25zdHJ1Y3Rvci5wcm90b3R5cGU6dCBpbnN0YW5jZW9mIE9iamVjdD9oZTpudWxsfSxwZT1MdCgiaXRlcmF0b3IiKSxnZT0hMTtbXS5rZXlzJiYoIm5leHQiaW4oc2U9W10ua2V5cygpKT8oYWU9ZmUoZmUoc2UpKSkhPT1PYmplY3QucHJvdG90eXBlJiYob2U9YWUpOmdlPSEwKSxudWxsPT1vZSYmKG9lPXt9KSxTKG9lLHBlKXx8UChvZSxwZSwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKTt2YXIgbWU9e0l0ZXJhdG9yUHJvdG90eXBlOm9lLEJVR0dZX1NBRkFSSV9JVEVSQVRPUlM6Z2V9LHZlPUkuZix5ZT1MdCgidG9TdHJpbmdUYWciKSxiZT1mdW5jdGlvbih0LGUsbil7dCYmIVModD1uP3Q6dC5wcm90b3R5cGUseWUpJiZ2ZSh0LHllLHtjb25maWd1cmFibGU6ITAsdmFsdWU6ZX0pfSx3ZT1tZS5JdGVyYXRvclByb3RvdHlwZSx4ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxfZT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fCgiX19wcm90b19fImlue30/ZnVuY3Rpb24oKXt2YXIgdCxlPSExLG49e307dHJ5eyh0PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0LnByb3RvdHlwZSwiX19wcm90b19fIikuc2V0KS5jYWxsKG4sW10pLGU9biBpbnN0YW5jZW9mIEFycmF5fWNhdGNoKHQpe31yZXR1cm4gZnVuY3Rpb24obixpKXtyZXR1cm4gTShuKSxmdW5jdGlvbih0KXtpZighdyh0KSYmbnVsbCE9PXQpdGhyb3cgVHlwZUVycm9yKCJDYW4ndCBzZXQgIitTdHJpbmcodCkrIiBhcyBhIHByb3RvdHlwZSIpfShpKSxlP3QuY2FsbChuLGkpOm4uX19wcm90b19fPWksbn19KCk6dm9pZCAwKSxTZT1tZS5JdGVyYXRvclByb3RvdHlwZSxDZT1tZS5CVUdHWV9TQUZBUklfSVRFUkFUT1JTLGtlPUx0KCJpdGVyYXRvciIpLFRlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LEFlPWZ1bmN0aW9uKHQsZSxuLGkscixvLGEpeyFmdW5jdGlvbih0LGUsbil7dmFyIGk9ZSsiIEl0ZXJhdG9yIjt0LnByb3RvdHlwZT1uZSh3ZSx7bmV4dDpmKDEsbil9KSxiZSh0LGksITEpLGNlW2ldPXhlfShuLGUsaSk7dmFyIHMsbCxjLHU9ZnVuY3Rpb24odCl7aWYodD09PXImJm0pcmV0dXJuIG07aWYoIUNlJiZ0IGluIHApcmV0dXJuIHBbdF07c3dpdGNoKHQpe2Nhc2Uia2V5cyI6Y2FzZSJ2YWx1ZXMiOmNhc2UiZW50cmllcyI6cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBuKHRoaXMsdCl9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgbih0aGlzKX19LGQ9ZSsiIEl0ZXJhdG9yIixoPSExLHA9dC5wcm90b3R5cGUsZz1wW2tlXXx8cFsiQEBpdGVyYXRvciJdfHxyJiZwW3JdLG09IUNlJiZnfHx1KHIpLHY9IkFycmF5Ij09ZSYmcC5lbnRyaWVzfHxnO2lmKHYmJihzPWZlKHYuY2FsbChuZXcgdCkpLFNlIT09T2JqZWN0LnByb3RvdHlwZSYmcy5uZXh0JiYoZmUocykhPT1TZSYmKF9lP19lKHMsU2UpOiJmdW5jdGlvbiIhPXR5cGVvZiBzW2tlXSYmUChzLGtlLFRlKSksYmUocyxkLCEwKSkpLCJ2YWx1ZXMiPT1yJiZnJiYidmFsdWVzIiE9PWcubmFtZSYmKGg9ITAsbT1mdW5jdGlvbigpe3JldHVybiBnLmNhbGwodGhpcyl9KSxwW2tlXSE9PW0mJlAocCxrZSxtKSxjZVtlXT1tLHIpaWYobD17dmFsdWVzOnUoInZhbHVlcyIpLGtleXM6bz9tOnUoImtleXMiKSxlbnRyaWVzOnUoImVudHJpZXMiKX0sYSlmb3IoYyBpbiBsKSFDZSYmIWgmJmMgaW4gcHx8SihwLGMsbFtjXSk7ZWxzZSBUdCh7dGFyZ2V0OmUscHJvdG86ITAsZm9yY2VkOkNlfHxofSxsKTtyZXR1cm4gbH0sRGU9Sy5zZXQsRWU9Sy5nZXR0ZXJGb3IoIkFycmF5IEl0ZXJhdG9yIiksTWU9QWUoQXJyYXksIkFycmF5IiwoZnVuY3Rpb24odCxlKXtEZSh0aGlzLHt0eXBlOiJBcnJheSBJdGVyYXRvciIsdGFyZ2V0OmIodCksaW5kZXg6MCxraW5kOmV9KX0pLChmdW5jdGlvbigpe3ZhciB0PUVlKHRoaXMpLGU9dC50YXJnZXQsbj10LmtpbmQsaT10LmluZGV4Kys7cmV0dXJuIWV8fGk+PWUubGVuZ3RoPyh0LnRhcmdldD12b2lkIDAse3ZhbHVlOnZvaWQgMCxkb25lOiEwfSk6ImtleXMiPT1uP3t2YWx1ZTppLGRvbmU6ITF9OiJ2YWx1ZXMiPT1uP3t2YWx1ZTplW2ldLGRvbmU6ITF9Ont2YWx1ZTpbaSxlW2ldXSxkb25lOiExfX0pLCJ2YWx1ZXMiKTtjZS5Bcmd1bWVudHM9Y2UuQXJyYXksbGUoImtleXMiKSxsZSgidmFsdWVzIiksbGUoImVudHJpZXMiKTt2YXIgT2U9T2JqZWN0LmFzc2lnbixJZT0hT2V8fGwoKGZ1bmN0aW9uKCl7dmFyIHQ9e30sZT17fSxuPVN5bWJvbCgpO3JldHVybiB0W25dPTcsImFiY2RlZmdoaWprbG1ub3BxcnN0Ii5zcGxpdCgiIikuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZVt0XT10fSkpLDchPU9lKHt9LHQpW25dfHwiYWJjZGVmZ2hpamtsbW5vcHFyc3QiIT1RdChPZSh7fSxlKSkuam9pbigiIil9KSk/ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49RXQodCksaT1hcmd1bWVudHMubGVuZ3RoLHI9MSxvPWd0LmYsYT1oLmY7aT5yOylmb3IodmFyIHMsbD12KGFyZ3VtZW50c1tyKytdKSx1PW8/UXQobCkuY29uY2F0KG8obCkpOlF0KGwpLGQ9dS5sZW5ndGgsZj0wO2Q+Zjspcz11W2YrK10sYyYmIWEuY2FsbChsLHMpfHwobltzXT1sW3NdKTtyZXR1cm4gbn06T2U7VHQoe3RhcmdldDoiT2JqZWN0IixzdGF0OiEwLGZvcmNlZDpPYmplY3QuYXNzaWduIT09SWV9LHthc3NpZ246SWV9KTt2YXIgUGU9THQoInRvU3RyaW5nVGFnIiksTGU9IkFyZ3VtZW50cyI9PWcoZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzfSgpKSxOZT1mdW5jdGlvbih0KXt2YXIgZSxuLGk7cmV0dXJuIHZvaWQgMD09PXQ/IlVuZGVmaW5lZCI6bnVsbD09PXQ/Ik51bGwiOiJzdHJpbmciPT10eXBlb2Yobj1mdW5jdGlvbih0LGUpe3RyeXtyZXR1cm4gdFtlXX1jYXRjaCh0KXt9fShlPU9iamVjdCh0KSxQZSkpP246TGU/ZyhlKToiT2JqZWN0Ij09KGk9ZyhlKSkmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmNhbGxlZT8iQXJndW1lbnRzIjppfSxGZT17fTtGZVtMdCgidG9TdHJpbmdUYWciKV09InoiO3ZhciBSZT0iW29iamVjdCB6XSIhPT1TdHJpbmcoRmUpP2Z1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgIitOZSh0aGlzKSsiXSJ9OkZlLnRvU3RyaW5nLGplPU9iamVjdC5wcm90b3R5cGU7UmUhPT1qZS50b1N0cmluZyYmSihqZSwidG9TdHJpbmciLFJlLHt1bnNhZmU6ITB9KTt2YXIgJGU9Ilx0XG5cdlxmXHIgwqDhmoDigIDigIHigILigIPigITigIXigIbigIfigIjigInigIrigK/igZ/jgIBcdTIwMjhcdTIwMjlcdWZlZmYiLHplPSJbIiskZSsiXSIsSGU9UmVnRXhwKCJeIit6ZSt6ZSsiKiIpLEJlPVJlZ0V4cCh6ZSt6ZSsiKiQiKSxxZT1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIG49U3RyaW5nKHkoZSkpO3JldHVybiAxJnQmJihuPW4ucmVwbGFjZShIZSwiIikpLDImdCYmKG49bi5yZXBsYWNlKEJlLCIiKSksbn19LFdlPShxZSgxKSxxZSgyKSxxZSgzKSksVWU9cy5wYXJzZUludCxWZT0vXlsrLV0/MFtYeF0vLFllPTghPT1VZSgkZSsiMDgiKXx8MjIhPT1VZSgkZSsiMHgxNiIpP2Z1bmN0aW9uKHQsZSl7dmFyIG49V2UoU3RyaW5nKHQpKTtyZXR1cm4gVWUobixlPj4+MHx8KFZlLnRlc3Qobik/MTY6MTApKX06VWU7VHQoe2dsb2JhbDohMCxmb3JjZWQ6cGFyc2VJbnQhPVllfSx7cGFyc2VJbnQ6WWV9KTt2YXIgR2U9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7dmFyIGkscixvPVN0cmluZyh5KGUpKSxhPXJ0KG4pLHM9by5sZW5ndGg7cmV0dXJuIGE8MHx8YT49cz90PyIiOnZvaWQgMDooaT1vLmNoYXJDb2RlQXQoYSkpPDU1Mjk2fHxpPjU2MzE5fHxhKzE9PT1zfHwocj1vLmNoYXJDb2RlQXQoYSsxKSk8NTYzMjB8fHI+NTczNDM/dD9vLmNoYXJBdChhKTppOnQ/by5zbGljZShhLGErMik6ci01NjMyMCsoaS01NTI5Njw8MTApKzY1NTM2fX0sWGU9e2NvZGVBdDpHZSghMSksY2hhckF0OkdlKCEwKX0sUWU9WGUuY2hhckF0LEtlPUsuc2V0LEplPUsuZ2V0dGVyRm9yKCJTdHJpbmcgSXRlcmF0b3IiKTtBZShTdHJpbmcsIlN0cmluZyIsKGZ1bmN0aW9uKHQpe0tlKHRoaXMse3R5cGU6IlN0cmluZyBJdGVyYXRvciIsc3RyaW5nOlN0cmluZyh0KSxpbmRleDowfSl9KSwoZnVuY3Rpb24oKXt2YXIgdCxlPUplKHRoaXMpLG49ZS5zdHJpbmcsaT1lLmluZGV4O3JldHVybiBpPj1uLmxlbmd0aD97dmFsdWU6dm9pZCAwLGRvbmU6ITB9Oih0PVFlKG4saSksZS5pbmRleCs9dC5sZW5ndGgse3ZhbHVlOnQsZG9uZTohMX0pfSkpO3ZhciBaZT1mdW5jdGlvbih0LGUsbil7Zm9yKHZhciBpIGluIGUpSih0LGksZVtpXSxuKTtyZXR1cm4gdH0sdG49IWwoKGZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5pc0V4dGVuc2libGUoT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKHt9KSl9KSksZW49ZSgoZnVuY3Rpb24odCl7dmFyIGU9SS5mLG49SCgibWV0YSIpLGk9MCxyPU9iamVjdC5pc0V4dGVuc2libGV8fGZ1bmN0aW9uKCl7cmV0dXJuITB9LG89ZnVuY3Rpb24odCl7ZSh0LG4se3ZhbHVlOntvYmplY3RJRDoiTyIrICsraSx3ZWFrRGF0YTp7fX19KX0sYT10LmV4cG9ydHM9e1JFUVVJUkVEOiExLGZhc3RLZXk6ZnVuY3Rpb24odCxlKXtpZighdyh0KSlyZXR1cm4ic3ltYm9sIj09dHlwZW9mIHQ/dDooInN0cmluZyI9PXR5cGVvZiB0PyJTIjoiUCIpK3Q7aWYoIVModCxuKSl7aWYoIXIodCkpcmV0dXJuIkYiO2lmKCFlKXJldHVybiJFIjtvKHQpfXJldHVybiB0W25dLm9iamVjdElEfSxnZXRXZWFrRGF0YTpmdW5jdGlvbih0LGUpe2lmKCFTKHQsbikpe2lmKCFyKHQpKXJldHVybiEwO2lmKCFlKXJldHVybiExO28odCl9cmV0dXJuIHRbbl0ud2Vha0RhdGF9LG9uRnJlZXplOmZ1bmN0aW9uKHQpe3JldHVybiB0biYmYS5SRVFVSVJFRCYmcih0KSYmIVModCxuKSYmbyh0KSx0fX07V1tuXT0hMH0pKSxubj0oZW4uUkVRVUlSRUQsZW4uZmFzdEtleSxlbi5nZXRXZWFrRGF0YSxlbi5vbkZyZWV6ZSxMdCgiaXRlcmF0b3IiKSkscm49QXJyYXkucHJvdG90eXBlLG9uPUx0KCJpdGVyYXRvciIpLGFuPWZ1bmN0aW9uKHQsZSxuLGkpe3RyeXtyZXR1cm4gaT9lKE0obilbMF0sblsxXSk6ZShuKX1jYXRjaChlKXt2YXIgcj10LnJldHVybjt0aHJvdyB2b2lkIDAhPT1yJiZNKHIuY2FsbCh0KSksZX19LHNuPWUoKGZ1bmN0aW9uKHQpe3ZhciBlPWZ1bmN0aW9uKHQsZSl7dGhpcy5zdG9wcGVkPXQsdGhpcy5yZXN1bHQ9ZX07KHQuZXhwb3J0cz1mdW5jdGlvbih0LG4saSxyLG8pe3ZhciBhLHMsbCxjLHUsZCxoLGY9RHQobixpLHI/MjoxKTtpZihvKWE9dDtlbHNle2lmKCJmdW5jdGlvbiIhPXR5cGVvZihzPWZ1bmN0aW9uKHQpe2lmKG51bGwhPXQpcmV0dXJuIHRbb25dfHx0WyJAQGl0ZXJhdG9yIl18fGNlW05lKHQpXX0odCkpKXRocm93IFR5cGVFcnJvcigiVGFyZ2V0IGlzIG5vdCBpdGVyYWJsZSIpO2lmKHZvaWQgMCE9PShoPXMpJiYoY2UuQXJyYXk9PT1ofHxybltubl09PT1oKSl7Zm9yKGw9MCxjPWF0KHQubGVuZ3RoKTtjPmw7bCsrKWlmKCh1PXI/ZihNKGQ9dFtsXSlbMF0sZFsxXSk6Zih0W2xdKSkmJnUgaW5zdGFuY2VvZiBlKXJldHVybiB1O3JldHVybiBuZXcgZSghMSl9YT1zLmNhbGwodCl9Zm9yKDshKGQ9YS5uZXh0KCkpLmRvbmU7KWlmKCh1PWFuKGEsZixkLnZhbHVlLHIpKSYmdSBpbnN0YW5jZW9mIGUpcmV0dXJuIHU7cmV0dXJuIG5ldyBlKCExKX0pLnN0b3A9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBlKCEwLHQpfX0pKSxsbj1mdW5jdGlvbih0LGUsbil7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgVHlwZUVycm9yKCJJbmNvcnJlY3QgIisobj9uKyIgIjoiIikrImludm9jYXRpb24iKTtyZXR1cm4gdH0sY249THQoIml0ZXJhdG9yIiksdW49ITE7dHJ5e3ZhciBkbj0wLGhuPXtuZXh0OmZ1bmN0aW9uKCl7cmV0dXJue2RvbmU6ISFkbisrfX0scmV0dXJuOmZ1bmN0aW9uKCl7dW49ITB9fTtobltjbl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sQXJyYXkuZnJvbShobiwoZnVuY3Rpb24oKXt0aHJvdyAyfSkpfWNhdGNoKHQpe312YXIgZm49ZnVuY3Rpb24odCxlLG4saSxyKXt2YXIgbz1zW3RdLGE9byYmby5wcm90b3R5cGUsYz1vLHU9aT8ic2V0IjoiYWRkIixkPXt9LGg9ZnVuY3Rpb24odCl7dmFyIGU9YVt0XTtKKGEsdCwiYWRkIj09dD9mdW5jdGlvbih0KXtyZXR1cm4gZS5jYWxsKHRoaXMsMD09PXQ/MDp0KSx0aGlzfToiZGVsZXRlIj09dD9mdW5jdGlvbih0KXtyZXR1cm4hKHImJiF3KHQpKSYmZS5jYWxsKHRoaXMsMD09PXQ/MDp0KX06ImdldCI9PXQ/ZnVuY3Rpb24odCl7cmV0dXJuIHImJiF3KHQpP3ZvaWQgMDplLmNhbGwodGhpcywwPT09dD8wOnQpfToiaGFzIj09dD9mdW5jdGlvbih0KXtyZXR1cm4hKHImJiF3KHQpKSYmZS5jYWxsKHRoaXMsMD09PXQ/MDp0KX06ZnVuY3Rpb24odCxuKXtyZXR1cm4gZS5jYWxsKHRoaXMsMD09PXQ/MDp0LG4pLHRoaXN9KX07aWYoQ3QodCwiZnVuY3Rpb24iIT10eXBlb2Ygb3x8IShyfHxhLmZvckVhY2gmJiFsKChmdW5jdGlvbigpeyhuZXcgbykuZW50cmllcygpLm5leHQoKX0pKSkpKWM9bi5nZXRDb25zdHJ1Y3RvcihlLHQsaSx1KSxlbi5SRVFVSVJFRD0hMDtlbHNlIGlmKEN0KHQsITApKXt2YXIgZj1uZXcgYyxwPWZbdV0ocj97fTotMCwxKSE9ZixnPWwoKGZ1bmN0aW9uKCl7Zi5oYXMoMSl9KSksbT1mdW5jdGlvbih0LGUpe2lmKCF1bilyZXR1cm4hMTt2YXIgbj0hMTt0cnl7dmFyIGk9e307aVtjbl09ZnVuY3Rpb24oKXtyZXR1cm57bmV4dDpmdW5jdGlvbigpe3JldHVybntkb25lOm49ITB9fX19LGZ1bmN0aW9uKHQpe25ldyBvKHQpfShpKX1jYXRjaCh0KXt9cmV0dXJuIG59KCksdj0hciYmbCgoZnVuY3Rpb24oKXtmb3IodmFyIHQ9bmV3IG8sZT01O2UtLTspdFt1XShlLGUpO3JldHVybiF0LmhhcygtMCl9KSk7bXx8KChjPWUoKGZ1bmN0aW9uKGUsbil7bG4oZSxjLHQpO3ZhciByPWZ1bmN0aW9uKHQsZSxuKXt2YXIgaSxyO3JldHVybiBfZSYmImZ1bmN0aW9uIj09dHlwZW9mKGk9ZS5jb25zdHJ1Y3RvcikmJmkhPT1uJiZ3KHI9aS5wcm90b3R5cGUpJiZyIT09bi5wcm90b3R5cGUmJl9lKHQsciksdH0obmV3IG8sZSxjKTtyZXR1cm4gbnVsbCE9biYmc24obixyW3VdLHIsaSkscn0pKSkucHJvdG90eXBlPWEsYS5jb25zdHJ1Y3Rvcj1jKSwoZ3x8dikmJihoKCJkZWxldGUiKSxoKCJoYXMiKSxpJiZoKCJnZXQiKSksKHZ8fHApJiZoKHUpLHImJmEuY2xlYXImJmRlbGV0ZSBhLmNsZWFyfXJldHVybiBkW3RdPWMsVHQoe2dsb2JhbDohMCxmb3JjZWQ6YyE9b30sZCksYmUoYyx0KSxyfHxuLnNldFN0cm9uZyhjLHQsaSksY30scG49ZW4uZ2V0V2Vha0RhdGEsZ249Sy5zZXQsbW49Sy5nZXR0ZXJGb3Isdm49JHQuZmluZCx5bj0kdC5maW5kSW5kZXgsYm49MCx3bj1mdW5jdGlvbih0KXtyZXR1cm4gdC5mcm96ZW58fCh0LmZyb3plbj1uZXcgeG4pfSx4bj1mdW5jdGlvbigpe3RoaXMuZW50cmllcz1bXX0sX249ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm4odC5lbnRyaWVzLChmdW5jdGlvbih0KXtyZXR1cm4gdFswXT09PWV9KSl9O3huLnByb3RvdHlwZT17Z2V0OmZ1bmN0aW9uKHQpe3ZhciBlPV9uKHRoaXMsdCk7aWYoZSlyZXR1cm4gZVsxXX0saGFzOmZ1bmN0aW9uKHQpe3JldHVybiEhX24odGhpcyx0KX0sc2V0OmZ1bmN0aW9uKHQsZSl7dmFyIG49X24odGhpcyx0KTtuP25bMV09ZTp0aGlzLmVudHJpZXMucHVzaChbdCxlXSl9LGRlbGV0ZTpmdW5jdGlvbih0KXt2YXIgZT15bih0aGlzLmVudHJpZXMsKGZ1bmN0aW9uKGUpe3JldHVybiBlWzBdPT09dH0pKTtyZXR1cm5+ZSYmdGhpcy5lbnRyaWVzLnNwbGljZShlLDEpLCEhfmV9fTt2YXIgU249e2dldENvbnN0cnVjdG9yOmZ1bmN0aW9uKHQsZSxuLGkpe3ZhciByPXQoKGZ1bmN0aW9uKHQsbyl7bG4odCxyLGUpLGduKHQse3R5cGU6ZSxpZDpibisrLGZyb3plbjp2b2lkIDB9KSxudWxsIT1vJiZzbihvLHRbaV0sdCxuKX0pKSxvPW1uKGUpLGE9ZnVuY3Rpb24odCxlLG4pe3ZhciBpPW8odCkscj1wbihNKGUpLCEwKTtyZXR1cm4hMD09PXI/d24oaSkuc2V0KGUsbik6cltpLmlkXT1uLHR9O3JldHVybiBaZShyLnByb3RvdHlwZSx7ZGVsZXRlOmZ1bmN0aW9uKHQpe3ZhciBlPW8odGhpcyk7aWYoIXcodCkpcmV0dXJuITE7dmFyIG49cG4odCk7cmV0dXJuITA9PT1uP3duKGUpLmRlbGV0ZSh0KTpuJiZTKG4sZS5pZCkmJmRlbGV0ZSBuW2UuaWRdfSxoYXM6ZnVuY3Rpb24odCl7dmFyIGU9byh0aGlzKTtpZighdyh0KSlyZXR1cm4hMTt2YXIgbj1wbih0KTtyZXR1cm4hMD09PW4/d24oZSkuaGFzKHQpOm4mJlMobixlLmlkKX19KSxaZShyLnByb3RvdHlwZSxuP3tnZXQ6ZnVuY3Rpb24odCl7dmFyIGU9byh0aGlzKTtpZih3KHQpKXt2YXIgbj1wbih0KTtyZXR1cm4hMD09PW4/d24oZSkuZ2V0KHQpOm4/bltlLmlkXTp2b2lkIDB9fSxzZXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gYSh0aGlzLHQsZSl9fTp7YWRkOmZ1bmN0aW9uKHQpe3JldHVybiBhKHRoaXMsdCwhMCl9fSkscn19LENuPShlKChmdW5jdGlvbih0KXt2YXIgZSxuPUsuZW5mb3JjZSxpPSFzLkFjdGl2ZVhPYmplY3QmJiJBY3RpdmVYT2JqZWN0ImluIHMscj1PYmplY3QuaXNFeHRlbnNpYmxlLG89ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQodGhpcyxhcmd1bWVudHMubGVuZ3RoP2FyZ3VtZW50c1swXTp2b2lkIDApfX0sYT10LmV4cG9ydHM9Zm4oIldlYWtNYXAiLG8sU24sITAsITApO2lmKGomJmkpe2U9U24uZ2V0Q29uc3RydWN0b3IobywiV2Vha01hcCIsITApLGVuLlJFUVVJUkVEPSEwO3ZhciBsPWEucHJvdG90eXBlLGM9bC5kZWxldGUsdT1sLmhhcyxkPWwuZ2V0LGg9bC5zZXQ7WmUobCx7ZGVsZXRlOmZ1bmN0aW9uKHQpe2lmKHcodCkmJiFyKHQpKXt2YXIgaT1uKHRoaXMpO3JldHVybiBpLmZyb3plbnx8KGkuZnJvemVuPW5ldyBlKSxjLmNhbGwodGhpcyx0KXx8aS5mcm96ZW4uZGVsZXRlKHQpfXJldHVybiBjLmNhbGwodGhpcyx0KX0saGFzOmZ1bmN0aW9uKHQpe2lmKHcodCkmJiFyKHQpKXt2YXIgaT1uKHRoaXMpO3JldHVybiBpLmZyb3plbnx8KGkuZnJvemVuPW5ldyBlKSx1LmNhbGwodGhpcyx0KXx8aS5mcm96ZW4uaGFzKHQpfXJldHVybiB1LmNhbGwodGhpcyx0KX0sZ2V0OmZ1bmN0aW9uKHQpe2lmKHcodCkmJiFyKHQpKXt2YXIgaT1uKHRoaXMpO3JldHVybiBpLmZyb3plbnx8KGkuZnJvemVuPW5ldyBlKSx1LmNhbGwodGhpcyx0KT9kLmNhbGwodGhpcyx0KTppLmZyb3plbi5nZXQodCl9cmV0dXJuIGQuY2FsbCh0aGlzLHQpfSxzZXQ6ZnVuY3Rpb24odCxpKXtpZih3KHQpJiYhcih0KSl7dmFyIG89bih0aGlzKTtvLmZyb3plbnx8KG8uZnJvemVuPW5ldyBlKSx1LmNhbGwodGhpcyx0KT9oLmNhbGwodGhpcyx0LGkpOm8uZnJvemVuLnNldCh0LGkpfWVsc2UgaC5jYWxsKHRoaXMsdCxpKTtyZXR1cm4gdGhpc319KX19KSksTHQoIml0ZXJhdG9yIikpLGtuPUx0KCJ0b1N0cmluZ1RhZyIpLFRuPU1lLnZhbHVlcztmb3IodmFyIEFuIGluIHF0KXt2YXIgRG49c1tBbl0sRW49RG4mJkRuLnByb3RvdHlwZTtpZihFbil7aWYoRW5bQ25dIT09VG4pdHJ5e1AoRW4sQ24sVG4pfWNhdGNoKHQpe0VuW0NuXT1Ubn1pZihFbltrbl18fFAoRW4sa24sQW4pLHF0W0FuXSlmb3IodmFyIE1uIGluIE1lKWlmKEVuW01uXSE9PU1lW01uXSl0cnl7UChFbixNbixNZVtNbl0pfWNhdGNoKHQpe0VuW01uXT1NZVtNbl19fX12YXIgT249IkV4cGVjdGVkIGEgZnVuY3Rpb24iLEluPS9eXHMrfFxzKyQvZyxQbj0vXlstK10weFswLTlhLWZdKyQvaSxMbj0vXjBiWzAxXSskL2ksTm49L14wb1swLTddKyQvaSxGbj1wYXJzZUludCxSbj0ib2JqZWN0Ij09dHlwZW9mIHQmJnQmJnQuT2JqZWN0PT09T2JqZWN0JiZ0LGpuPSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsJG49Um58fGpufHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLHpuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsSG49TWF0aC5tYXgsQm49TWF0aC5taW4scW49ZnVuY3Rpb24oKXtyZXR1cm4gJG4uRGF0ZS5ub3coKX07ZnVuY3Rpb24gV24odCl7dmFyIGU9dHlwZW9mIHQ7cmV0dXJuISF0JiYoIm9iamVjdCI9PWV8fCJmdW5jdGlvbiI9PWUpfWZ1bmN0aW9uIFVuKHQpe2lmKCJudW1iZXIiPT10eXBlb2YgdClyZXR1cm4gdDtpZihmdW5jdGlvbih0KXtyZXR1cm4ic3ltYm9sIj09dHlwZW9mIHR8fGZ1bmN0aW9uKHQpe3JldHVybiEhdCYmIm9iamVjdCI9PXR5cGVvZiB0fSh0KSYmIltvYmplY3QgU3ltYm9sXSI9PXpuLmNhbGwodCl9KHQpKXJldHVybiBOYU47aWYoV24odCkpe3ZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiB0LnZhbHVlT2Y/dC52YWx1ZU9mKCk6dDt0PVduKGUpP2UrIiI6ZX1pZigic3RyaW5nIiE9dHlwZW9mIHQpcmV0dXJuIDA9PT10P3Q6K3Q7dD10LnJlcGxhY2UoSW4sIiIpO3ZhciBuPUxuLnRlc3QodCk7cmV0dXJuIG58fE5uLnRlc3QodCk/Rm4odC5zbGljZSgyKSxuPzI6OCk6UG4udGVzdCh0KT9OYU46K3R9dmFyIFZuPWZ1bmN0aW9uKHQsZSxuKXt2YXIgaT0hMCxyPSEwO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoT24pO3JldHVybiBXbihuKSYmKGk9ImxlYWRpbmciaW4gbj8hIW4ubGVhZGluZzppLHI9InRyYWlsaW5nImluIG4/ISFuLnRyYWlsaW5nOnIpLGZ1bmN0aW9uKHQsZSxuKXt2YXIgaSxyLG8sYSxzLGwsYz0wLHU9ITEsZD0hMSxoPSEwO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoT24pO2Z1bmN0aW9uIGYoZSl7dmFyIG49aSxvPXI7cmV0dXJuIGk9cj12b2lkIDAsYz1lLGE9dC5hcHBseShvLG4pfWZ1bmN0aW9uIHAodCl7dmFyIG49dC1sO3JldHVybiB2b2lkIDA9PT1sfHxuPj1lfHxuPDB8fGQmJnQtYz49b31mdW5jdGlvbiBnKCl7dmFyIHQ9cW4oKTtpZihwKHQpKXJldHVybiBtKHQpO3M9c2V0VGltZW91dChnLGZ1bmN0aW9uKHQpe3ZhciBuPWUtKHQtbCk7cmV0dXJuIGQ/Qm4obixvLSh0LWMpKTpufSh0KSl9ZnVuY3Rpb24gbSh0KXtyZXR1cm4gcz12b2lkIDAsaCYmaT9mKHQpOihpPXI9dm9pZCAwLGEpfWZ1bmN0aW9uIHYoKXt2YXIgdD1xbigpLG49cCh0KTtpZihpPWFyZ3VtZW50cyxyPXRoaXMsbD10LG4pe2lmKHZvaWQgMD09PXMpcmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBjPXQscz1zZXRUaW1lb3V0KGcsZSksdT9mKHQpOmF9KGwpO2lmKGQpcmV0dXJuIHM9c2V0VGltZW91dChnLGUpLGYobCl9cmV0dXJuIHZvaWQgMD09PXMmJihzPXNldFRpbWVvdXQoZyxlKSksYX1yZXR1cm4gZT1VbihlKXx8MCxXbihuKSYmKHU9ISFuLmxlYWRpbmcsbz0oZD0ibWF4V2FpdCJpbiBuKT9IbihVbihuLm1heFdhaXQpfHwwLGUpOm8saD0idHJhaWxpbmciaW4gbj8hIW4udHJhaWxpbmc6aCksdi5jYW5jZWw9ZnVuY3Rpb24oKXt2b2lkIDAhPT1zJiZjbGVhclRpbWVvdXQocyksYz0wLGk9bD1yPXM9dm9pZCAwfSx2LmZsdXNoPWZ1bmN0aW9uKCl7cmV0dXJuIHZvaWQgMD09PXM/YTptKHFuKCkpfSx2fSh0LGUse2xlYWRpbmc6aSxtYXhXYWl0OmUsdHJhaWxpbmc6cn0pfSxZbj0vXlxzK3xccyskL2csR249L15bLStdMHhbMC05YS1mXSskL2ksWG49L14wYlswMV0rJC9pLFFuPS9eMG9bMC03XSskL2ksS249cGFyc2VJbnQsSm49Im9iamVjdCI9PXR5cGVvZiB0JiZ0JiZ0Lk9iamVjdD09PU9iamVjdCYmdCxabj0ib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYmJnNlbGYuT2JqZWN0PT09T2JqZWN0JiZzZWxmLHRpPUpufHxabnx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKSxlaT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLG5pPU1hdGgubWF4LGlpPU1hdGgubWluLHJpPWZ1bmN0aW9uKCl7cmV0dXJuIHRpLkRhdGUubm93KCl9O2Z1bmN0aW9uIG9pKHQpe3ZhciBlPXR5cGVvZiB0O3JldHVybiEhdCYmKCJvYmplY3QiPT1lfHwiZnVuY3Rpb24iPT1lKX1mdW5jdGlvbiBhaSh0KXtpZigibnVtYmVyIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYoZnVuY3Rpb24odCl7cmV0dXJuInN5bWJvbCI9PXR5cGVvZiB0fHxmdW5jdGlvbih0KXtyZXR1cm4hIXQmJiJvYmplY3QiPT10eXBlb2YgdH0odCkmJiJbb2JqZWN0IFN5bWJvbF0iPT1laS5jYWxsKHQpfSh0KSlyZXR1cm4gTmFOO2lmKG9pKHQpKXt2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgdC52YWx1ZU9mP3QudmFsdWVPZigpOnQ7dD1vaShlKT9lKyIiOmV9aWYoInN0cmluZyIhPXR5cGVvZiB0KXJldHVybiAwPT09dD90Oit0O3Q9dC5yZXBsYWNlKFluLCIiKTt2YXIgbj1Ybi50ZXN0KHQpO3JldHVybiBufHxRbi50ZXN0KHQpP0tuKHQuc2xpY2UoMiksbj8yOjgpOkduLnRlc3QodCk/TmFOOit0fXZhciBzaT1mdW5jdGlvbih0LGUsbil7dmFyIGkscixvLGEscyxsLGM9MCx1PSExLGQ9ITEsaD0hMDtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBuZXcgVHlwZUVycm9yKCJFeHBlY3RlZCBhIGZ1bmN0aW9uIik7ZnVuY3Rpb24gZihlKXt2YXIgbj1pLG89cjtyZXR1cm4gaT1yPXZvaWQgMCxjPWUsYT10LmFwcGx5KG8sbil9ZnVuY3Rpb24gcCh0KXt2YXIgbj10LWw7cmV0dXJuIHZvaWQgMD09PWx8fG4+PWV8fG48MHx8ZCYmdC1jPj1vfWZ1bmN0aW9uIGcoKXt2YXIgdD1yaSgpO2lmKHAodCkpcmV0dXJuIG0odCk7cz1zZXRUaW1lb3V0KGcsZnVuY3Rpb24odCl7dmFyIG49ZS0odC1sKTtyZXR1cm4gZD9paShuLG8tKHQtYykpOm59KHQpKX1mdW5jdGlvbiBtKHQpe3JldHVybiBzPXZvaWQgMCxoJiZpP2YodCk6KGk9cj12b2lkIDAsYSl9ZnVuY3Rpb24gdigpe3ZhciB0PXJpKCksbj1wKHQpO2lmKGk9YXJndW1lbnRzLHI9dGhpcyxsPXQsbil7aWYodm9pZCAwPT09cylyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGM9dCxzPXNldFRpbWVvdXQoZyxlKSx1P2YodCk6YX0obCk7aWYoZClyZXR1cm4gcz1zZXRUaW1lb3V0KGcsZSksZihsKX1yZXR1cm4gdm9pZCAwPT09cyYmKHM9c2V0VGltZW91dChnLGUpKSxhfXJldHVybiBlPWFpKGUpfHwwLG9pKG4pJiYodT0hIW4ubGVhZGluZyxvPShkPSJtYXhXYWl0ImluIG4pP25pKGFpKG4ubWF4V2FpdCl8fDAsZSk6byxoPSJ0cmFpbGluZyJpbiBuPyEhbi50cmFpbGluZzpoKSx2LmNhbmNlbD1mdW5jdGlvbigpe3ZvaWQgMCE9PXMmJmNsZWFyVGltZW91dChzKSxjPTAsaT1sPXI9cz12b2lkIDB9LHYuZmx1c2g9ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09cz9hOm0ocmkoKSl9LHZ9LGxpPSJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIixjaT0vXlxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXF0kLyx1aT0ib2JqZWN0Ij09dHlwZW9mIHQmJnQmJnQuT2JqZWN0PT09T2JqZWN0JiZ0LGRpPSJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZiYmc2VsZi5PYmplY3Q9PT1PYmplY3QmJnNlbGYsaGk9dWl8fGRpfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLGZpPUFycmF5LnByb3RvdHlwZSxwaT1GdW5jdGlvbi5wcm90b3R5cGUsZ2k9T2JqZWN0LnByb3RvdHlwZSxtaT1oaVsiX19jb3JlLWpzX3NoYXJlZF9fIl0sdmk9ZnVuY3Rpb24oKXt2YXIgdD0vW14uXSskLy5leGVjKG1pJiZtaS5rZXlzJiZtaS5rZXlzLklFX1BST1RPfHwiIik7cmV0dXJuIHQ/IlN5bWJvbChzcmMpXzEuIit0OiIifSgpLHlpPXBpLnRvU3RyaW5nLGJpPWdpLmhhc093blByb3BlcnR5LHdpPWdpLnRvU3RyaW5nLHhpPVJlZ0V4cCgiXiIreWkuY2FsbChiaSkucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIiksX2k9Zmkuc3BsaWNlLFNpPU1pKGhpLCJNYXAiKSxDaT1NaShPYmplY3QsImNyZWF0ZSIpO2Z1bmN0aW9uIGtpKHQpe3ZhciBlPS0xLG49dD90Lmxlbmd0aDowO2Zvcih0aGlzLmNsZWFyKCk7KytlPG47KXt2YXIgaT10W2VdO3RoaXMuc2V0KGlbMF0saVsxXSl9fWZ1bmN0aW9uIFRpKHQpe3ZhciBlPS0xLG49dD90Lmxlbmd0aDowO2Zvcih0aGlzLmNsZWFyKCk7KytlPG47KXt2YXIgaT10W2VdO3RoaXMuc2V0KGlbMF0saVsxXSl9fWZ1bmN0aW9uIEFpKHQpe3ZhciBlPS0xLG49dD90Lmxlbmd0aDowO2Zvcih0aGlzLmNsZWFyKCk7KytlPG47KXt2YXIgaT10W2VdO3RoaXMuc2V0KGlbMF0saVsxXSl9fWZ1bmN0aW9uIERpKHQsZSl7Zm9yKHZhciBuLGkscj10Lmxlbmd0aDtyLS07KWlmKChuPXRbcl1bMF0pPT09KGk9ZSl8fG4hPW4mJmkhPWkpcmV0dXJuIHI7cmV0dXJuLTF9ZnVuY3Rpb24gRWkodCxlKXt2YXIgbixpLHI9dC5fX2RhdGFfXztyZXR1cm4oInN0cmluZyI9PShpPXR5cGVvZihuPWUpKXx8Im51bWJlciI9PWl8fCJzeW1ib2wiPT1pfHwiYm9vbGVhbiI9PWk/Il9fcHJvdG9fXyIhPT1uOm51bGw9PT1uKT9yWyJzdHJpbmciPT10eXBlb2YgZT8ic3RyaW5nIjoiaGFzaCJdOnIubWFwfWZ1bmN0aW9uIE1pKHQsZSl7dmFyIG49ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbD09dD92b2lkIDA6dFtlXX0odCxlKTtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuISghSWkodCl8fChlPXQsdmkmJnZpIGluIGUpKSYmKGZ1bmN0aW9uKHQpe3ZhciBlPUlpKHQpP3dpLmNhbGwodCk6IiI7cmV0dXJuIltvYmplY3QgRnVuY3Rpb25dIj09ZXx8IltvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dIj09ZX0odCl8fGZ1bmN0aW9uKHQpe3ZhciBlPSExO2lmKG51bGwhPXQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0LnRvU3RyaW5nKXRyeXtlPSEhKHQrIiIpfWNhdGNoKHQpe31yZXR1cm4gZX0odCk/eGk6Y2kpLnRlc3QoZnVuY3Rpb24odCl7aWYobnVsbCE9dCl7dHJ5e3JldHVybiB5aS5jYWxsKHQpfWNhdGNoKHQpe310cnl7cmV0dXJuIHQrIiJ9Y2F0Y2godCl7fX1yZXR1cm4iIn0odCkpO3ZhciBlfShuKT9uOnZvaWQgMH1mdW5jdGlvbiBPaSh0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0fHxlJiYiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJFeHBlY3RlZCBhIGZ1bmN0aW9uIik7dmFyIG49ZnVuY3Rpb24oKXt2YXIgaT1hcmd1bWVudHMscj1lP2UuYXBwbHkodGhpcyxpKTppWzBdLG89bi5jYWNoZTtpZihvLmhhcyhyKSlyZXR1cm4gby5nZXQocik7dmFyIGE9dC5hcHBseSh0aGlzLGkpO3JldHVybiBuLmNhY2hlPW8uc2V0KHIsYSksYX07cmV0dXJuIG4uY2FjaGU9bmV3KE9pLkNhY2hlfHxBaSksbn1mdW5jdGlvbiBJaSh0KXt2YXIgZT10eXBlb2YgdDtyZXR1cm4hIXQmJigib2JqZWN0Ij09ZXx8ImZ1bmN0aW9uIj09ZSl9a2kucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1DaT9DaShudWxsKTp7fX0sa2kucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5oYXModCkmJmRlbGV0ZSB0aGlzLl9fZGF0YV9fW3RdfSxraS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187aWYoQ2kpe3ZhciBuPWVbdF07cmV0dXJuIG49PT1saT92b2lkIDA6bn1yZXR1cm4gYmkuY2FsbChlLHQpP2VbdF06dm9pZCAwfSxraS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIENpP3ZvaWQgMCE9PWVbdF06YmkuY2FsbChlLHQpfSxraS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX19kYXRhX19bdF09Q2kmJnZvaWQgMD09PWU/bGk6ZSx0aGlzfSxUaS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPVtdfSxUaS5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX19kYXRhX18sbj1EaShlLHQpO3JldHVybiEobjwwfHwobj09ZS5sZW5ndGgtMT9lLnBvcCgpOl9pLmNhbGwoZSxuLDEpLDApKX0sVGkucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9fZGF0YV9fLG49RGkoZSx0KTtyZXR1cm4gbjwwP3ZvaWQgMDplW25dWzFdfSxUaS5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3JldHVybiBEaSh0aGlzLl9fZGF0YV9fLHQpPi0xfSxUaS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fX2RhdGFfXyxpPURpKG4sdCk7cmV0dXJuIGk8MD9uLnB1c2goW3QsZV0pOm5baV1bMV09ZSx0aGlzfSxBaS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBraSxtYXA6bmV3KFNpfHxUaSksc3RyaW5nOm5ldyBraX19LEFpLnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7cmV0dXJuIEVpKHRoaXMsdCkuZGVsZXRlKHQpfSxBaS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiBFaSh0aGlzLHQpLmdldCh0KX0sQWkucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gRWkodGhpcyx0KS5oYXModCl9LEFpLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gRWkodGhpcyx0KS5zZXQodCxlKSx0aGlzfSxPaS5DYWNoZT1BaTt2YXIgUGk9T2ksTGk9ZnVuY3Rpb24oKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIE1hcClyZXR1cm4gTWFwO2Z1bmN0aW9uIHQodCxlKXt2YXIgbj0tMTtyZXR1cm4gdC5zb21lKChmdW5jdGlvbih0LGkpe3JldHVybiB0WzBdPT09ZSYmKG49aSwhMCl9KSksbn1yZXR1cm4gZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7dGhpcy5fX2VudHJpZXNfXz1bXX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJzaXplIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX19lbnRyaWVzX18ubGVuZ3RofSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmdldD1mdW5jdGlvbihlKXt2YXIgbj10KHRoaXMuX19lbnRyaWVzX18sZSksaT10aGlzLl9fZW50cmllc19fW25dO3JldHVybiBpJiZpWzFdfSxlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oZSxuKXt2YXIgaT10KHRoaXMuX19lbnRyaWVzX18sZSk7fmk/dGhpcy5fX2VudHJpZXNfX1tpXVsxXT1uOnRoaXMuX19lbnRyaWVzX18ucHVzaChbZSxuXSl9LGUucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbihlKXt2YXIgbj10aGlzLl9fZW50cmllc19fLGk9dChuLGUpO35pJiZuLnNwbGljZShpLDEpfSxlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oZSl7cmV0dXJuISF+dCh0aGlzLl9fZW50cmllc19fLGUpfSxlLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuX19lbnRyaWVzX18uc3BsaWNlKDApfSxlLnByb3RvdHlwZS5mb3JFYWNoPWZ1bmN0aW9uKHQsZSl7dm9pZCAwPT09ZSYmKGU9bnVsbCk7Zm9yKHZhciBuPTAsaT10aGlzLl9fZW50cmllc19fO248aS5sZW5ndGg7bisrKXt2YXIgcj1pW25dO3QuY2FsbChlLHJbMV0sclswXSl9fSxlfSgpfSgpLE5pPSJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiYidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiZ3aW5kb3cuZG9jdW1lbnQ9PT1kb2N1bWVudCxGaT0idW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbCYmZ2xvYmFsLk1hdGg9PT1NYXRoP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYmJnNlbGYuTWF0aD09PU1hdGg/c2VsZjoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93Lk1hdGg9PT1NYXRoP3dpbmRvdzpGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLFJpPSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1ZXN0QW5pbWF0aW9uRnJhbWU/cmVxdWVzdEFuaW1hdGlvbkZyYW1lLmJpbmQoRmkpOmZ1bmN0aW9uKHQpe3JldHVybiBzZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiB0KERhdGUubm93KCkpfSksMWUzLzYwKX0samk9WyJ0b3AiLCJyaWdodCIsImJvdHRvbSIsImxlZnQiLCJ3aWR0aCIsImhlaWdodCIsInNpemUiLCJ3ZWlnaHQiXSwkaT0idW5kZWZpbmVkIiE9dHlwZW9mIE11dGF0aW9uT2JzZXJ2ZXIsemk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7dGhpcy5jb25uZWN0ZWRfPSExLHRoaXMubXV0YXRpb25FdmVudHNBZGRlZF89ITEsdGhpcy5tdXRhdGlvbnNPYnNlcnZlcl89bnVsbCx0aGlzLm9ic2VydmVyc189W10sdGhpcy5vblRyYW5zaXRpb25FbmRfPXRoaXMub25UcmFuc2l0aW9uRW5kXy5iaW5kKHRoaXMpLHRoaXMucmVmcmVzaD1mdW5jdGlvbih0LGUpe3ZhciBuPSExLGk9ITEscj0wO2Z1bmN0aW9uIG8oKXtuJiYobj0hMSx0KCkpLGkmJnMoKX1mdW5jdGlvbiBhKCl7Umkobyl9ZnVuY3Rpb24gcygpe3ZhciB0PURhdGUubm93KCk7aWYobil7aWYodC1yPDIpcmV0dXJuO2k9ITB9ZWxzZSBuPSEwLGk9ITEsc2V0VGltZW91dChhLDIwKTtyPXR9cmV0dXJuIHN9KHRoaXMucmVmcmVzaC5iaW5kKHRoaXMpKX1yZXR1cm4gdC5wcm90b3R5cGUuYWRkT2JzZXJ2ZXI9ZnVuY3Rpb24odCl7fnRoaXMub2JzZXJ2ZXJzXy5pbmRleE9mKHQpfHx0aGlzLm9ic2VydmVyc18ucHVzaCh0KSx0aGlzLmNvbm5lY3RlZF98fHRoaXMuY29ubmVjdF8oKX0sdC5wcm90b3R5cGUucmVtb3ZlT2JzZXJ2ZXI9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5vYnNlcnZlcnNfLG49ZS5pbmRleE9mKHQpO35uJiZlLnNwbGljZShuLDEpLCFlLmxlbmd0aCYmdGhpcy5jb25uZWN0ZWRfJiZ0aGlzLmRpc2Nvbm5lY3RfKCl9LHQucHJvdG90eXBlLnJlZnJlc2g9ZnVuY3Rpb24oKXt0aGlzLnVwZGF0ZU9ic2VydmVyc18oKSYmdGhpcy5yZWZyZXNoKCl9LHQucHJvdG90eXBlLnVwZGF0ZU9ic2VydmVyc189ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9ic2VydmVyc18uZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdC5nYXRoZXJBY3RpdmUoKSx0Lmhhc0FjdGl2ZSgpfSkpO3JldHVybiB0LmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiB0LmJyb2FkY2FzdEFjdGl2ZSgpfSkpLHQubGVuZ3RoPjB9LHQucHJvdG90eXBlLmNvbm5lY3RfPWZ1bmN0aW9uKCl7TmkmJiF0aGlzLmNvbm5lY3RlZF8mJihkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0cmFuc2l0aW9uZW5kIix0aGlzLm9uVHJhbnNpdGlvbkVuZF8pLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLHRoaXMucmVmcmVzaCksJGk/KHRoaXMubXV0YXRpb25zT2JzZXJ2ZXJfPW5ldyBNdXRhdGlvbk9ic2VydmVyKHRoaXMucmVmcmVzaCksdGhpcy5tdXRhdGlvbnNPYnNlcnZlcl8ub2JzZXJ2ZShkb2N1bWVudCx7YXR0cmlidXRlczohMCxjaGlsZExpc3Q6ITAsY2hhcmFjdGVyRGF0YTohMCxzdWJ0cmVlOiEwfSkpOihkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01TdWJ0cmVlTW9kaWZpZWQiLHRoaXMucmVmcmVzaCksdGhpcy5tdXRhdGlvbkV2ZW50c0FkZGVkXz0hMCksdGhpcy5jb25uZWN0ZWRfPSEwKX0sdC5wcm90b3R5cGUuZGlzY29ubmVjdF89ZnVuY3Rpb24oKXtOaSYmdGhpcy5jb25uZWN0ZWRfJiYoZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidHJhbnNpdGlvbmVuZCIsdGhpcy5vblRyYW5zaXRpb25FbmRfKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIix0aGlzLnJlZnJlc2gpLHRoaXMubXV0YXRpb25zT2JzZXJ2ZXJfJiZ0aGlzLm11dGF0aW9uc09ic2VydmVyXy5kaXNjb25uZWN0KCksdGhpcy5tdXRhdGlvbkV2ZW50c0FkZGVkXyYmZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NU3VidHJlZU1vZGlmaWVkIix0aGlzLnJlZnJlc2gpLHRoaXMubXV0YXRpb25zT2JzZXJ2ZXJfPW51bGwsdGhpcy5tdXRhdGlvbkV2ZW50c0FkZGVkXz0hMSx0aGlzLmNvbm5lY3RlZF89ITEpfSx0LnByb3RvdHlwZS5vblRyYW5zaXRpb25FbmRfPWZ1bmN0aW9uKHQpe3ZhciBlPXQucHJvcGVydHlOYW1lLG49dm9pZCAwPT09ZT8iIjplO2ppLnNvbWUoKGZ1bmN0aW9uKHQpe3JldHVybiEhfm4uaW5kZXhPZih0KX0pKSYmdGhpcy5yZWZyZXNoKCl9LHQuZ2V0SW5zdGFuY2U9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbnN0YW5jZV98fCh0aGlzLmluc3RhbmNlXz1uZXcgdCksdGhpcy5pbnN0YW5jZV99LHQuaW5zdGFuY2VfPW51bGwsdH0oKSxIaT1mdW5jdGlvbih0LGUpe2Zvcih2YXIgbj0wLGk9T2JqZWN0LmtleXMoZSk7bjxpLmxlbmd0aDtuKyspe3ZhciByPWlbbl07T2JqZWN0LmRlZmluZVByb3BlcnR5KHQscix7dmFsdWU6ZVtyXSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pfXJldHVybiB0fSxCaT1mdW5jdGlvbih0KXtyZXR1cm4gdCYmdC5vd25lckRvY3VtZW50JiZ0Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXd8fEZpfSxxaT1HaSgwLDAsMCwwKTtmdW5jdGlvbiBXaSh0KXtyZXR1cm4gcGFyc2VGbG9hdCh0KXx8MH1mdW5jdGlvbiBVaSh0KXtmb3IodmFyIGU9W10sbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspZVtuLTFdPWFyZ3VtZW50c1tuXTtyZXR1cm4gZS5yZWR1Y2UoKGZ1bmN0aW9uKGUsbil7cmV0dXJuIGUrV2kodFsiYm9yZGVyLSIrbisiLXdpZHRoIl0pfSksMCl9dmFyIFZpPSJ1bmRlZmluZWQiIT10eXBlb2YgU1ZHR3JhcGhpY3NFbGVtZW50P2Z1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgQmkodCkuU1ZHR3JhcGhpY3NFbGVtZW50fTpmdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIEJpKHQpLlNWR0VsZW1lbnQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LmdldEJCb3h9O2Z1bmN0aW9uIFlpKHQpe3JldHVybiBOaT9WaSh0KT9mdW5jdGlvbih0KXt2YXIgZT10LmdldEJCb3goKTtyZXR1cm4gR2koMCwwLGUud2lkdGgsZS5oZWlnaHQpfSh0KTpmdW5jdGlvbih0KXt2YXIgZT10LmNsaWVudFdpZHRoLG49dC5jbGllbnRIZWlnaHQ7aWYoIWUmJiFuKXJldHVybiBxaTt2YXIgaT1CaSh0KS5nZXRDb21wdXRlZFN0eWxlKHQpLHI9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXt9LG49MCxpPVsidG9wIiwicmlnaHQiLCJib3R0b20iLCJsZWZ0Il07bjxpLmxlbmd0aDtuKyspe3ZhciByPWlbbl0sbz10WyJwYWRkaW5nLSIrcl07ZVtyXT1XaShvKX1yZXR1cm4gZX0oaSksbz1yLmxlZnQrci5yaWdodCxhPXIudG9wK3IuYm90dG9tLHM9V2koaS53aWR0aCksbD1XaShpLmhlaWdodCk7aWYoImJvcmRlci1ib3giPT09aS5ib3hTaXppbmcmJihNYXRoLnJvdW5kKHMrbykhPT1lJiYocy09VWkoaSwibGVmdCIsInJpZ2h0IikrbyksTWF0aC5yb3VuZChsK2EpIT09biYmKGwtPVVpKGksInRvcCIsImJvdHRvbSIpK2EpKSwhZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1CaSh0KS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnR9KHQpKXt2YXIgYz1NYXRoLnJvdW5kKHMrbyktZSx1PU1hdGgucm91bmQobCthKS1uOzEhPT1NYXRoLmFicyhjKSYmKHMtPWMpLDEhPT1NYXRoLmFicyh1KSYmKGwtPXUpfXJldHVybiBHaShyLmxlZnQsci50b3AscyxsKX0odCk6cWl9ZnVuY3Rpb24gR2kodCxlLG4saSl7cmV0dXJue3g6dCx5OmUsd2lkdGg6bixoZWlnaHQ6aX19dmFyIFhpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLmJyb2FkY2FzdFdpZHRoPTAsdGhpcy5icm9hZGNhc3RIZWlnaHQ9MCx0aGlzLmNvbnRlbnRSZWN0Xz1HaSgwLDAsMCwwKSx0aGlzLnRhcmdldD10fXJldHVybiB0LnByb3RvdHlwZS5pc0FjdGl2ZT1mdW5jdGlvbigpe3ZhciB0PVlpKHRoaXMudGFyZ2V0KTtyZXR1cm4gdGhpcy5jb250ZW50UmVjdF89dCx0LndpZHRoIT09dGhpcy5icm9hZGNhc3RXaWR0aHx8dC5oZWlnaHQhPT10aGlzLmJyb2FkY2FzdEhlaWdodH0sdC5wcm90b3R5cGUuYnJvYWRjYXN0UmVjdD1mdW5jdGlvbigpe3ZhciB0PXRoaXMuY29udGVudFJlY3RfO3JldHVybiB0aGlzLmJyb2FkY2FzdFdpZHRoPXQud2lkdGgsdGhpcy5icm9hZGNhc3RIZWlnaHQ9dC5oZWlnaHQsdH0sdH0oKSxRaT1mdW5jdGlvbih0LGUpe3ZhciBuLGkscixvLGEscyxsLGM9KGk9KG49ZSkueCxyPW4ueSxvPW4ud2lkdGgsYT1uLmhlaWdodCxzPSJ1bmRlZmluZWQiIT10eXBlb2YgRE9NUmVjdFJlYWRPbmx5P0RPTVJlY3RSZWFkT25seTpPYmplY3QsbD1PYmplY3QuY3JlYXRlKHMucHJvdG90eXBlKSxIaShsLHt4OmkseTpyLHdpZHRoOm8saGVpZ2h0OmEsdG9wOnIscmlnaHQ6aStvLGJvdHRvbTphK3IsbGVmdDppfSksbCk7SGkodGhpcyx7dGFyZ2V0OnQsY29udGVudFJlY3Q6Y30pfSxLaT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe2lmKHRoaXMuYWN0aXZlT2JzZXJ2YXRpb25zXz1bXSx0aGlzLm9ic2VydmF0aW9uc189bmV3IExpLCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IG5ldyBUeXBlRXJyb3IoIlRoZSBjYWxsYmFjayBwcm92aWRlZCBhcyBwYXJhbWV0ZXIgMSBpcyBub3QgYSBmdW5jdGlvbi4iKTt0aGlzLmNhbGxiYWNrXz10LHRoaXMuY29udHJvbGxlcl89ZSx0aGlzLmNhbGxiYWNrQ3R4Xz1ufXJldHVybiB0LnByb3RvdHlwZS5vYnNlcnZlPWZ1bmN0aW9uKHQpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBUeXBlRXJyb3IoIjEgYXJndW1lbnQgcmVxdWlyZWQsIGJ1dCBvbmx5IDAgcHJlc2VudC4iKTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEVsZW1lbnQmJkVsZW1lbnQgaW5zdGFuY2VvZiBPYmplY3Qpe2lmKCEodCBpbnN0YW5jZW9mIEJpKHQpLkVsZW1lbnQpKXRocm93IG5ldyBUeXBlRXJyb3IoJ3BhcmFtZXRlciAxIGlzIG5vdCBvZiB0eXBlICJFbGVtZW50Ii4nKTt2YXIgZT10aGlzLm9ic2VydmF0aW9uc187ZS5oYXModCl8fChlLnNldCh0LG5ldyBYaSh0KSksdGhpcy5jb250cm9sbGVyXy5hZGRPYnNlcnZlcih0aGlzKSx0aGlzLmNvbnRyb2xsZXJfLnJlZnJlc2goKSl9fSx0LnByb3RvdHlwZS51bm9ic2VydmU9ZnVuY3Rpb24odCl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpdGhyb3cgbmV3IFR5cGVFcnJvcigiMSBhcmd1bWVudCByZXF1aXJlZCwgYnV0IG9ubHkgMCBwcmVzZW50LiIpO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgRWxlbWVudCYmRWxlbWVudCBpbnN0YW5jZW9mIE9iamVjdCl7aWYoISh0IGluc3RhbmNlb2YgQmkodCkuRWxlbWVudCkpdGhyb3cgbmV3IFR5cGVFcnJvcigncGFyYW1ldGVyIDEgaXMgbm90IG9mIHR5cGUgIkVsZW1lbnQiLicpO3ZhciBlPXRoaXMub2JzZXJ2YXRpb25zXztlLmhhcyh0KSYmKGUuZGVsZXRlKHQpLGUuc2l6ZXx8dGhpcy5jb250cm9sbGVyXy5yZW1vdmVPYnNlcnZlcih0aGlzKSl9fSx0LnByb3RvdHlwZS5kaXNjb25uZWN0PWZ1bmN0aW9uKCl7dGhpcy5jbGVhckFjdGl2ZSgpLHRoaXMub2JzZXJ2YXRpb25zXy5jbGVhcigpLHRoaXMuY29udHJvbGxlcl8ucmVtb3ZlT2JzZXJ2ZXIodGhpcyl9LHQucHJvdG90eXBlLmdhdGhlckFjdGl2ZT1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5jbGVhckFjdGl2ZSgpLHRoaXMub2JzZXJ2YXRpb25zXy5mb3JFYWNoKChmdW5jdGlvbihlKXtlLmlzQWN0aXZlKCkmJnQuYWN0aXZlT2JzZXJ2YXRpb25zXy5wdXNoKGUpfSkpfSx0LnByb3RvdHlwZS5icm9hZGNhc3RBY3RpdmU9ZnVuY3Rpb24oKXtpZih0aGlzLmhhc0FjdGl2ZSgpKXt2YXIgdD10aGlzLmNhbGxiYWNrQ3R4XyxlPXRoaXMuYWN0aXZlT2JzZXJ2YXRpb25zXy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBuZXcgUWkodC50YXJnZXQsdC5icm9hZGNhc3RSZWN0KCkpfSkpO3RoaXMuY2FsbGJhY2tfLmNhbGwodCxlLHQpLHRoaXMuY2xlYXJBY3RpdmUoKX19LHQucHJvdG90eXBlLmNsZWFyQWN0aXZlPWZ1bmN0aW9uKCl7dGhpcy5hY3RpdmVPYnNlcnZhdGlvbnNfLnNwbGljZSgwKX0sdC5wcm90b3R5cGUuaGFzQWN0aXZlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYWN0aXZlT2JzZXJ2YXRpb25zXy5sZW5ndGg+MH0sdH0oKSxKaT0idW5kZWZpbmVkIiE9dHlwZW9mIFdlYWtNYXA/bmV3IFdlYWtNYXA6bmV3IExpLFppPWZ1bmN0aW9uIHQoZSl7aWYoISh0aGlzIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uLiIpO2lmKCFhcmd1bWVudHMubGVuZ3RoKXRocm93IG5ldyBUeXBlRXJyb3IoIjEgYXJndW1lbnQgcmVxdWlyZWQsIGJ1dCBvbmx5IDAgcHJlc2VudC4iKTt2YXIgbj16aS5nZXRJbnN0YW5jZSgpLGk9bmV3IEtpKGUsbix0aGlzKTtKaS5zZXQodGhpcyxpKX07WyJvYnNlcnZlIiwidW5vYnNlcnZlIiwiZGlzY29ubmVjdCJdLmZvckVhY2goKGZ1bmN0aW9uKHQpe1ppLnByb3RvdHlwZVt0XT1mdW5jdGlvbigpe3ZhciBlO3JldHVybihlPUppLmdldCh0aGlzKSlbdF0uYXBwbHkoZSxhcmd1bWVudHMpfX0pKTt2YXIgdHI9dm9pZCAwIT09RmkuUmVzaXplT2JzZXJ2ZXI/RmkuUmVzaXplT2JzZXJ2ZXI6WmksZXI9bnVsbCxucj1udWxsO2Z1bmN0aW9uIGlyKCl7aWYobnVsbD09PWVyKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIGRvY3VtZW50KXJldHVybiBlcj0wO3ZhciB0PWRvY3VtZW50LmJvZHksZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtlLmNsYXNzTGlzdC5hZGQoInNpbXBsZWJhci1oaWRlLXNjcm9sbGJhciIpLHQuYXBwZW5kQ2hpbGQoZSk7dmFyIG49ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5yaWdodDt0LnJlbW92ZUNoaWxkKGUpLGVyPW59cmV0dXJuIGVyfVl0JiZ3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicmVzaXplIiwoZnVuY3Rpb24oKXtuciE9PXdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvJiYobnI9d2luZG93LmRldmljZVBpeGVsUmF0aW8sZXI9bnVsbCl9KSk7dmFyIHJyPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlLG4saSxyKXtBdChuKTt2YXIgbz1FdChlKSxhPXYobykscz1hdChvLmxlbmd0aCksbD10P3MtMTowLGM9dD8tMToxO2lmKGk8Milmb3IoOzspe2lmKGwgaW4gYSl7cj1hW2xdLGwrPWM7YnJlYWt9aWYobCs9Yyx0P2w8MDpzPD1sKXRocm93IFR5cGVFcnJvcigiUmVkdWNlIG9mIGVtcHR5IGFycmF5IHdpdGggbm8gaW5pdGlhbCB2YWx1ZSIpfWZvcig7dD9sPj0wOnM+bDtsKz1jKWwgaW4gYSYmKHI9bihyLGFbbF0sbCxvKSk7cmV0dXJuIHJ9fSxvcj1bcnIoITEpLHJyKCEwKV1bMF07VHQoe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDp6dCgicmVkdWNlIil9LHtyZWR1Y2U6ZnVuY3Rpb24odCl7cmV0dXJuIG9yKHRoaXMsdCxhcmd1bWVudHMubGVuZ3RoLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KTt2YXIgYXI9SS5mLHNyPUZ1bmN0aW9uLnByb3RvdHlwZSxscj1zci50b1N0cmluZyxjcj0vXlxzKmZ1bmN0aW9uIChbXiAoXSopLzshY3x8Im5hbWUiaW4gc3J8fGFyKHNyLCJuYW1lIix7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3RyeXtyZXR1cm4gbHIuY2FsbCh0aGlzKS5tYXRjaChjcilbMV19Y2F0Y2godCl7cmV0dXJuIiJ9fX0pO3ZhciB1cixkcixocj1mdW5jdGlvbigpe3ZhciB0PU0odGhpcyksZT0iIjtyZXR1cm4gdC5nbG9iYWwmJihlKz0iZyIpLHQuaWdub3JlQ2FzZSYmKGUrPSJpIiksdC5tdWx0aWxpbmUmJihlKz0ibSIpLHQuZG90QWxsJiYoZSs9InMiKSx0LnVuaWNvZGUmJihlKz0idSIpLHQuc3RpY2t5JiYoZSs9InkiKSxlfSxmcj1SZWdFeHAucHJvdG90eXBlLmV4ZWMscHI9U3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlLGdyPWZyLG1yPSh1cj0vYS8sZHI9L2IqL2csZnIuY2FsbCh1ciwiYSIpLGZyLmNhbGwoZHIsImEiKSwwIT09dXIubGFzdEluZGV4fHwwIT09ZHIubGFzdEluZGV4KSx2cj12b2lkIDAhPT0vKCk/Py8uZXhlYygiIilbMV07KG1yfHx2cikmJihncj1mdW5jdGlvbih0KXt2YXIgZSxuLGkscixvPXRoaXM7cmV0dXJuIHZyJiYobj1uZXcgUmVnRXhwKCJeIitvLnNvdXJjZSsiJCg/IVxccykiLGhyLmNhbGwobykpKSxtciYmKGU9by5sYXN0SW5kZXgpLGk9ZnIuY2FsbChvLHQpLG1yJiZpJiYoby5sYXN0SW5kZXg9by5nbG9iYWw/aS5pbmRleCtpWzBdLmxlbmd0aDplKSx2ciYmaSYmaS5sZW5ndGg+MSYmcHIuY2FsbChpWzBdLG4sKGZ1bmN0aW9uKCl7Zm9yKHI9MTtyPGFyZ3VtZW50cy5sZW5ndGgtMjtyKyspdm9pZCAwPT09YXJndW1lbnRzW3JdJiYoaVtyXT12b2lkIDApfSkpLGl9KTt2YXIgeXI9Z3I7VHQoe3RhcmdldDoiUmVnRXhwIixwcm90bzohMCxmb3JjZWQ6Ly4vLmV4ZWMhPT15cn0se2V4ZWM6eXJ9KTt2YXIgYnI9THQoInNwZWNpZXMiKSx3cj0hbCgoZnVuY3Rpb24oKXt2YXIgdD0vLi87cmV0dXJuIHQuZXhlYz1mdW5jdGlvbigpe3ZhciB0PVtdO3JldHVybiB0Lmdyb3Vwcz17YToiNyJ9LHR9LCI3IiE9PSIiLnJlcGxhY2UodCwiJDxhPiIpfSkpLHhyPSFsKChmdW5jdGlvbigpe3ZhciB0PS8oPzopLyxlPXQuZXhlYzt0LmV4ZWM9ZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O3ZhciBuPSJhYiIuc3BsaXQodCk7cmV0dXJuIDIhPT1uLmxlbmd0aHx8ImEiIT09blswXXx8ImIiIT09blsxXX0pKSxfcj1mdW5jdGlvbih0LGUsbixpKXt2YXIgcj1MdCh0KSxvPSFsKChmdW5jdGlvbigpe3ZhciBlPXt9O3JldHVybiBlW3JdPWZ1bmN0aW9uKCl7cmV0dXJuIDd9LDchPSIiW3RdKGUpfSkpLGE9byYmIWwoKGZ1bmN0aW9uKCl7dmFyIGU9ITEsbj0vYS87cmV0dXJuIG4uZXhlYz1mdW5jdGlvbigpe3JldHVybiBlPSEwLG51bGx9LCJzcGxpdCI9PT10JiYobi5jb25zdHJ1Y3Rvcj17fSxuLmNvbnN0cnVjdG9yW2JyXT1mdW5jdGlvbigpe3JldHVybiBufSksbltyXSgiIiksIWV9KSk7aWYoIW98fCFhfHwicmVwbGFjZSI9PT10JiYhd3J8fCJzcGxpdCI9PT10JiYheHIpe3ZhciBzPS8uL1tyXSxjPW4ociwiIlt0XSwoZnVuY3Rpb24odCxlLG4saSxyKXtyZXR1cm4gZS5leGVjPT09eXI/byYmIXI/e2RvbmU6ITAsdmFsdWU6cy5jYWxsKGUsbixpKX06e2RvbmU6ITAsdmFsdWU6dC5jYWxsKG4sZSxpKX06e2RvbmU6ITF9fSkpLHU9Y1swXSxkPWNbMV07SihTdHJpbmcucHJvdG90eXBlLHQsdSksSihSZWdFeHAucHJvdG90eXBlLHIsMj09ZT9mdW5jdGlvbih0LGUpe3JldHVybiBkLmNhbGwodCx0aGlzLGUpfTpmdW5jdGlvbih0KXtyZXR1cm4gZC5jYWxsKHQsdGhpcyl9KSxpJiZQKFJlZ0V4cC5wcm90b3R5cGVbcl0sInNoYW0iLCEwKX19LFNyPVhlLmNoYXJBdCxDcj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIGUrKG4/U3IodCxlKS5sZW5ndGg6MSl9LGtyPWZ1bmN0aW9uKHQsZSl7dmFyIG49dC5leGVjO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBuKXt2YXIgaT1uLmNhbGwodCxlKTtpZigib2JqZWN0IiE9dHlwZW9mIGkpdGhyb3cgVHlwZUVycm9yKCJSZWdFeHAgZXhlYyBtZXRob2QgcmV0dXJuZWQgc29tZXRoaW5nIG90aGVyIHRoYW4gYW4gT2JqZWN0IG9yIG51bGwiKTtyZXR1cm4gaX1pZigiUmVnRXhwIiE9PWcodCkpdGhyb3cgVHlwZUVycm9yKCJSZWdFeHAjZXhlYyBjYWxsZWQgb24gaW5jb21wYXRpYmxlIHJlY2VpdmVyIik7cmV0dXJuIHlyLmNhbGwodCxlKX07X3IoIm1hdGNoIiwxLChmdW5jdGlvbih0LGUsbil7cmV0dXJuW2Z1bmN0aW9uKGUpe3ZhciBuPXkodGhpcyksaT1udWxsPT1lP3ZvaWQgMDplW3RdO3JldHVybiB2b2lkIDAhPT1pP2kuY2FsbChlLG4pOm5ldyBSZWdFeHAoZSlbdF0oU3RyaW5nKG4pKX0sZnVuY3Rpb24odCl7dmFyIGk9bihlLHQsdGhpcyk7aWYoaS5kb25lKXJldHVybiBpLnZhbHVlO3ZhciByPU0odCksbz1TdHJpbmcodGhpcyk7aWYoIXIuZ2xvYmFsKXJldHVybiBrcihyLG8pO3ZhciBhPXIudW5pY29kZTtyLmxhc3RJbmRleD0wO2Zvcih2YXIgcyxsPVtdLGM9MDtudWxsIT09KHM9a3IocixvKSk7KXt2YXIgdT1TdHJpbmcoc1swXSk7bFtjXT11LCIiPT09dSYmKHIubGFzdEluZGV4PUNyKG8sYXQoci5sYXN0SW5kZXgpLGEpKSxjKyt9cmV0dXJuIDA9PT1jP251bGw6bH1dfSkpO3ZhciBUcj1NYXRoLm1heCxBcj1NYXRoLm1pbixEcj1NYXRoLmZsb29yLEVyPS9cJChbJCYnYF18XGRcZD98PFtePl0qPikvZyxNcj0vXCQoWyQmJ2BdfFxkXGQ/KS9nO19yKCJyZXBsYWNlIiwyLChmdW5jdGlvbih0LGUsbil7cmV0dXJuW2Z1bmN0aW9uKG4saSl7dmFyIHI9eSh0aGlzKSxvPW51bGw9PW4/dm9pZCAwOm5bdF07cmV0dXJuIHZvaWQgMCE9PW8/by5jYWxsKG4scixpKTplLmNhbGwoU3RyaW5nKHIpLG4saSl9LGZ1bmN0aW9uKHQscil7dmFyIG89bihlLHQsdGhpcyxyKTtpZihvLmRvbmUpcmV0dXJuIG8udmFsdWU7dmFyIGE9TSh0KSxzPVN0cmluZyh0aGlzKSxsPSJmdW5jdGlvbiI9PXR5cGVvZiByO2x8fChyPVN0cmluZyhyKSk7dmFyIGM9YS5nbG9iYWw7aWYoYyl7dmFyIHU9YS51bmljb2RlO2EubGFzdEluZGV4PTB9Zm9yKHZhciBkPVtdOzspe3ZhciBoPWtyKGEscyk7aWYobnVsbD09PWgpYnJlYWs7aWYoZC5wdXNoKGgpLCFjKWJyZWFrOyIiPT09U3RyaW5nKGhbMF0pJiYoYS5sYXN0SW5kZXg9Q3IocyxhdChhLmxhc3RJbmRleCksdSkpfWZvcih2YXIgZixwPSIiLGc9MCxtPTA7bTxkLmxlbmd0aDttKyspe2g9ZFttXTtmb3IodmFyIHY9U3RyaW5nKGhbMF0pLHk9VHIoQXIocnQoaC5pbmRleCkscy5sZW5ndGgpLDApLGI9W10sdz0xO3c8aC5sZW5ndGg7dysrKWIucHVzaCh2b2lkIDA9PT0oZj1oW3ddKT9mOlN0cmluZyhmKSk7dmFyIHg9aC5ncm91cHM7aWYobCl7dmFyIF89W3ZdLmNvbmNhdChiLHkscyk7dm9pZCAwIT09eCYmXy5wdXNoKHgpO3ZhciBTPVN0cmluZyhyLmFwcGx5KHZvaWQgMCxfKSl9ZWxzZSBTPWkodixzLHksYix4LHIpO3k+PWcmJihwKz1zLnNsaWNlKGcseSkrUyxnPXkrdi5sZW5ndGgpfXJldHVybiBwK3Muc2xpY2UoZyl9XTtmdW5jdGlvbiBpKHQsbixpLHIsbyxhKXt2YXIgcz1pK3QubGVuZ3RoLGw9ci5sZW5ndGgsYz1NcjtyZXR1cm4gdm9pZCAwIT09byYmKG89RXQobyksYz1FciksZS5jYWxsKGEsYywoZnVuY3Rpb24oZSxhKXt2YXIgYztzd2l0Y2goYS5jaGFyQXQoMCkpe2Nhc2UiJCI6cmV0dXJuIiQiO2Nhc2UiJiI6cmV0dXJuIHQ7Y2FzZSJgIjpyZXR1cm4gbi5zbGljZSgwLGkpO2Nhc2UiJyI6cmV0dXJuIG4uc2xpY2Uocyk7Y2FzZSI8IjpjPW9bYS5zbGljZSgxLC0xKV07YnJlYWs7ZGVmYXVsdDp2YXIgdT0rYTtpZigwPT09dSlyZXR1cm4gZTtpZih1Pmwpe3ZhciBkPURyKHUvMTApO3JldHVybiAwPT09ZD9lOmQ8PWw/dm9pZCAwPT09cltkLTFdP2EuY2hhckF0KDEpOnJbZC0xXSthLmNoYXJBdCgxKTplfWM9clt1LTFdfXJldHVybiB2b2lkIDA9PT1jPyIiOmN9KSl9fSkpO3ZhciBPcj1mdW5jdGlvbih0KXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLnJlZHVjZS5jYWxsKHQsKGZ1bmN0aW9uKHQsZSl7dmFyIG49ZS5uYW1lLm1hdGNoKC9kYXRhLXNpbXBsZWJhci0oLispLyk7aWYobil7dmFyIGk9blsxXS5yZXBsYWNlKC9cVysoLikvZywoZnVuY3Rpb24odCxlKXtyZXR1cm4gZS50b1VwcGVyQ2FzZSgpfSkpO3N3aXRjaChlLnZhbHVlKXtjYXNlInRydWUiOnRbaV09ITA7YnJlYWs7Y2FzZSJmYWxzZSI6dFtpXT0hMTticmVhaztjYXNlIHZvaWQgMDp0W2ldPSEwO2JyZWFrO2RlZmF1bHQ6dFtpXT1lLnZhbHVlfX1yZXR1cm4gdH0pLHt9KX07ZnVuY3Rpb24gSXIodCl7cmV0dXJuIHQmJnQub3duZXJEb2N1bWVudCYmdC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3P3Qub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldzp3aW5kb3d9ZnVuY3Rpb24gUHIodCl7cmV0dXJuIHQmJnQub3duZXJEb2N1bWVudD90Lm93bmVyRG9jdW1lbnQ6ZG9jdW1lbnR9dmFyIExyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLG4pe3ZhciBpPXRoaXM7dGhpcy5vblNjcm9sbD1mdW5jdGlvbigpe3ZhciB0PUlyKGkuZWwpO2kuc2Nyb2xsWFRpY2tpbmd8fCh0LnJlcXVlc3RBbmltYXRpb25GcmFtZShpLnNjcm9sbFgpLGkuc2Nyb2xsWFRpY2tpbmc9ITApLGkuc2Nyb2xsWVRpY2tpbmd8fCh0LnJlcXVlc3RBbmltYXRpb25GcmFtZShpLnNjcm9sbFkpLGkuc2Nyb2xsWVRpY2tpbmc9ITApfSx0aGlzLnNjcm9sbFg9ZnVuY3Rpb24oKXtpLmF4aXMueC5pc092ZXJmbG93aW5nJiYoaS5zaG93U2Nyb2xsYmFyKCJ4IiksaS5wb3NpdGlvblNjcm9sbGJhcigieCIpKSxpLnNjcm9sbFhUaWNraW5nPSExfSx0aGlzLnNjcm9sbFk9ZnVuY3Rpb24oKXtpLmF4aXMueS5pc092ZXJmbG93aW5nJiYoaS5zaG93U2Nyb2xsYmFyKCJ5IiksaS5wb3NpdGlvblNjcm9sbGJhcigieSIpKSxpLnNjcm9sbFlUaWNraW5nPSExfSx0aGlzLm9uTW91c2VFbnRlcj1mdW5jdGlvbigpe2kuc2hvd1Njcm9sbGJhcigieCIpLGkuc2hvd1Njcm9sbGJhcigieSIpfSx0aGlzLm9uTW91c2VNb3ZlPWZ1bmN0aW9uKHQpe2kubW91c2VYPXQuY2xpZW50WCxpLm1vdXNlWT10LmNsaWVudFksKGkuYXhpcy54LmlzT3ZlcmZsb3dpbmd8fGkuYXhpcy54LmZvcmNlVmlzaWJsZSkmJmkub25Nb3VzZU1vdmVGb3JBeGlzKCJ4IiksKGkuYXhpcy55LmlzT3ZlcmZsb3dpbmd8fGkuYXhpcy55LmZvcmNlVmlzaWJsZSkmJmkub25Nb3VzZU1vdmVGb3JBeGlzKCJ5Iil9LHRoaXMub25Nb3VzZUxlYXZlPWZ1bmN0aW9uKCl7aS5vbk1vdXNlTW92ZS5jYW5jZWwoKSwoaS5heGlzLnguaXNPdmVyZmxvd2luZ3x8aS5heGlzLnguZm9yY2VWaXNpYmxlKSYmaS5vbk1vdXNlTGVhdmVGb3JBeGlzKCJ4IiksKGkuYXhpcy55LmlzT3ZlcmZsb3dpbmd8fGkuYXhpcy55LmZvcmNlVmlzaWJsZSkmJmkub25Nb3VzZUxlYXZlRm9yQXhpcygieSIpLGkubW91c2VYPS0xLGkubW91c2VZPS0xfSx0aGlzLm9uV2luZG93UmVzaXplPWZ1bmN0aW9uKCl7aS5zY3JvbGxiYXJXaWR0aD1pLmdldFNjcm9sbGJhcldpZHRoKCksaS5oaWRlTmF0aXZlU2Nyb2xsYmFyKCl9LHRoaXMuaGlkZVNjcm9sbGJhcnM9ZnVuY3Rpb24oKXtpLmF4aXMueC50cmFjay5yZWN0PWkuYXhpcy54LnRyYWNrLmVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGkuYXhpcy55LnRyYWNrLnJlY3Q9aS5heGlzLnkudHJhY2suZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksaS5pc1dpdGhpbkJvdW5kcyhpLmF4aXMueS50cmFjay5yZWN0KXx8KGkuYXhpcy55LnNjcm9sbGJhci5lbC5jbGFzc0xpc3QucmVtb3ZlKGkuY2xhc3NOYW1lcy52aXNpYmxlKSxpLmF4aXMueS5pc1Zpc2libGU9ITEpLGkuaXNXaXRoaW5Cb3VuZHMoaS5heGlzLngudHJhY2sucmVjdCl8fChpLmF4aXMueC5zY3JvbGxiYXIuZWwuY2xhc3NMaXN0LnJlbW92ZShpLmNsYXNzTmFtZXMudmlzaWJsZSksaS5heGlzLnguaXNWaXNpYmxlPSExKX0sdGhpcy5vblBvaW50ZXJFdmVudD1mdW5jdGlvbih0KXt2YXIgZSxuO2kuYXhpcy54LnRyYWNrLnJlY3Q9aS5heGlzLngudHJhY2suZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksaS5heGlzLnkudHJhY2sucmVjdD1pLmF4aXMueS50cmFjay5lbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwoaS5heGlzLnguaXNPdmVyZmxvd2luZ3x8aS5heGlzLnguZm9yY2VWaXNpYmxlKSYmKGU9aS5pc1dpdGhpbkJvdW5kcyhpLmF4aXMueC50cmFjay5yZWN0KSksKGkuYXhpcy55LmlzT3ZlcmZsb3dpbmd8fGkuYXhpcy55LmZvcmNlVmlzaWJsZSkmJihuPWkuaXNXaXRoaW5Cb3VuZHMoaS5heGlzLnkudHJhY2sucmVjdCkpLChlfHxuKSYmKHQucHJldmVudERlZmF1bHQoKSx0LnN0b3BQcm9wYWdhdGlvbigpLCJtb3VzZWRvd24iPT09dC50eXBlJiYoZSYmKGkuYXhpcy54LnNjcm9sbGJhci5yZWN0PWkuYXhpcy54LnNjcm9sbGJhci5lbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxpLmlzV2l0aGluQm91bmRzKGkuYXhpcy54LnNjcm9sbGJhci5yZWN0KT9pLm9uRHJhZ1N0YXJ0KHQsIngiKTppLm9uVHJhY2tDbGljayh0LCJ4IikpLG4mJihpLmF4aXMueS5zY3JvbGxiYXIucmVjdD1pLmF4aXMueS5zY3JvbGxiYXIuZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksaS5pc1dpdGhpbkJvdW5kcyhpLmF4aXMueS5zY3JvbGxiYXIucmVjdCk/aS5vbkRyYWdTdGFydCh0LCJ5Iik6aS5vblRyYWNrQ2xpY2sodCwieSIpKSkpfSx0aGlzLmRyYWc9ZnVuY3Rpb24oZSl7dmFyIG49aS5heGlzW2kuZHJhZ2dlZEF4aXNdLnRyYWNrLHI9bi5yZWN0W2kuYXhpc1tpLmRyYWdnZWRBeGlzXS5zaXplQXR0cl0sbz1pLmF4aXNbaS5kcmFnZ2VkQXhpc10uc2Nyb2xsYmFyLGE9aS5jb250ZW50V3JhcHBlckVsW2kuYXhpc1tpLmRyYWdnZWRBeGlzXS5zY3JvbGxTaXplQXR0cl0scz1wYXJzZUludChpLmVsU3R5bGVzW2kuYXhpc1tpLmRyYWdnZWRBeGlzXS5zaXplQXR0cl0sMTApO2UucHJldmVudERlZmF1bHQoKSxlLnN0b3BQcm9wYWdhdGlvbigpO3ZhciBsPSgoInkiPT09aS5kcmFnZ2VkQXhpcz9lLnBhZ2VZOmUucGFnZVgpLW4ucmVjdFtpLmF4aXNbaS5kcmFnZ2VkQXhpc10ub2Zmc2V0QXR0cl0taS5heGlzW2kuZHJhZ2dlZEF4aXNdLmRyYWdPZmZzZXQpLyhyLW8uc2l6ZSkqKGEtcyk7IngiPT09aS5kcmFnZ2VkQXhpcyYmKGw9aS5pc1J0bCYmdC5nZXRSdGxIZWxwZXJzKCkuaXNSdGxTY3JvbGxiYXJJbnZlcnRlZD9sLShyK28uc2l6ZSk6bCxsPWkuaXNSdGwmJnQuZ2V0UnRsSGVscGVycygpLmlzUnRsU2Nyb2xsaW5nSW52ZXJ0ZWQ/LWw6bCksaS5jb250ZW50V3JhcHBlckVsW2kuYXhpc1tpLmRyYWdnZWRBeGlzXS5zY3JvbGxPZmZzZXRBdHRyXT1sfSx0aGlzLm9uRW5kRHJhZz1mdW5jdGlvbih0KXt2YXIgZT1QcihpLmVsKSxuPUlyKGkuZWwpO3QucHJldmVudERlZmF1bHQoKSx0LnN0b3BQcm9wYWdhdGlvbigpLGkuZWwuY2xhc3NMaXN0LnJlbW92ZShpLmNsYXNzTmFtZXMuZHJhZ2dpbmcpLGUucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIixpLmRyYWcsITApLGUucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsaS5vbkVuZERyYWcsITApLGkucmVtb3ZlUHJldmVudENsaWNrSWQ9bi5zZXRUaW1lb3V0KChmdW5jdGlvbigpe2UucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2xpY2siLGkucHJldmVudENsaWNrLCEwKSxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoImRibGNsaWNrIixpLnByZXZlbnRDbGljaywhMCksaS5yZW1vdmVQcmV2ZW50Q2xpY2tJZD1udWxsfSkpfSx0aGlzLnByZXZlbnRDbGljaz1mdW5jdGlvbih0KXt0LnByZXZlbnREZWZhdWx0KCksdC5zdG9wUHJvcGFnYXRpb24oKX0sdGhpcy5lbD1lLHRoaXMubWluU2Nyb2xsYmFyV2lkdGg9MjAsdGhpcy5vcHRpb25zPU9iamVjdC5hc3NpZ24oe30sdC5kZWZhdWx0T3B0aW9ucyx7fSxuKSx0aGlzLmNsYXNzTmFtZXM9T2JqZWN0LmFzc2lnbih7fSx0LmRlZmF1bHRPcHRpb25zLmNsYXNzTmFtZXMse30sdGhpcy5vcHRpb25zLmNsYXNzTmFtZXMpLHRoaXMuYXhpcz17eDp7c2Nyb2xsT2Zmc2V0QXR0cjoic2Nyb2xsTGVmdCIsc2l6ZUF0dHI6IndpZHRoIixzY3JvbGxTaXplQXR0cjoic2Nyb2xsV2lkdGgiLG9mZnNldFNpemVBdHRyOiJvZmZzZXRXaWR0aCIsb2Zmc2V0QXR0cjoibGVmdCIsb3ZlcmZsb3dBdHRyOiJvdmVyZmxvd1giLGRyYWdPZmZzZXQ6MCxpc092ZXJmbG93aW5nOiEwLGlzVmlzaWJsZTohMSxmb3JjZVZpc2libGU6ITEsdHJhY2s6e30sc2Nyb2xsYmFyOnt9fSx5OntzY3JvbGxPZmZzZXRBdHRyOiJzY3JvbGxUb3AiLHNpemVBdHRyOiJoZWlnaHQiLHNjcm9sbFNpemVBdHRyOiJzY3JvbGxIZWlnaHQiLG9mZnNldFNpemVBdHRyOiJvZmZzZXRIZWlnaHQiLG9mZnNldEF0dHI6InRvcCIsb3ZlcmZsb3dBdHRyOiJvdmVyZmxvd1kiLGRyYWdPZmZzZXQ6MCxpc092ZXJmbG93aW5nOiEwLGlzVmlzaWJsZTohMSxmb3JjZVZpc2libGU6ITEsdHJhY2s6e30sc2Nyb2xsYmFyOnt9fX0sdGhpcy5yZW1vdmVQcmV2ZW50Q2xpY2tJZD1udWxsLHQuaW5zdGFuY2VzLmhhcyh0aGlzLmVsKXx8KHRoaXMucmVjYWxjdWxhdGU9Vm4odGhpcy5yZWNhbGN1bGF0ZS5iaW5kKHRoaXMpLDY0KSx0aGlzLm9uTW91c2VNb3ZlPVZuKHRoaXMub25Nb3VzZU1vdmUuYmluZCh0aGlzKSw2NCksdGhpcy5oaWRlU2Nyb2xsYmFycz1zaSh0aGlzLmhpZGVTY3JvbGxiYXJzLmJpbmQodGhpcyksdGhpcy5vcHRpb25zLnRpbWVvdXQpLHRoaXMub25XaW5kb3dSZXNpemU9c2kodGhpcy5vbldpbmRvd1Jlc2l6ZS5iaW5kKHRoaXMpLDY0LHtsZWFkaW5nOiEwfSksdC5nZXRSdGxIZWxwZXJzPVBpKHQuZ2V0UnRsSGVscGVycyksdGhpcy5pbml0KCkpfXQuZ2V0UnRsSGVscGVycz1mdW5jdGlvbigpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2UuaW5uZXJIVE1MPSc8ZGl2IGNsYXNzPSJocy1kdW1teS1zY3JvbGxiYXItc2l6ZSI+PGRpdiBzdHlsZT0iaGVpZ2h0OiAyMDAlOyB3aWR0aDogMjAwJTsgbWFyZ2luOiAxMHB4IDA7Ij48L2Rpdj48L2Rpdj4nO3ZhciBuPWUuZmlyc3RFbGVtZW50Q2hpbGQ7ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChuKTt2YXIgaT1uLmZpcnN0RWxlbWVudENoaWxkO24uc2Nyb2xsTGVmdD0wO3ZhciByPXQuZ2V0T2Zmc2V0KG4pLG89dC5nZXRPZmZzZXQoaSk7bi5zY3JvbGxMZWZ0PTk5OTt2YXIgYT10LmdldE9mZnNldChpKTtyZXR1cm57aXNSdGxTY3JvbGxpbmdJbnZlcnRlZDpyLmxlZnQhPT1vLmxlZnQmJm8ubGVmdC1hLmxlZnQhPTAsaXNSdGxTY3JvbGxiYXJJbnZlcnRlZDpyLmxlZnQhPT1vLmxlZnR9fSx0LmdldE9mZnNldD1mdW5jdGlvbih0KXt2YXIgZT10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49UHIodCksaT1Jcih0KTtyZXR1cm57dG9wOmUudG9wKyhpLnBhZ2VZT2Zmc2V0fHxuLmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3ApLGxlZnQ6ZS5sZWZ0KyhpLnBhZ2VYT2Zmc2V0fHxuLmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0KX19O3ZhciBlPXQucHJvdG90eXBlO3JldHVybiBlLmluaXQ9ZnVuY3Rpb24oKXt0Lmluc3RhbmNlcy5zZXQodGhpcy5lbCx0aGlzKSxZdCYmKHRoaXMuaW5pdERPTSgpLHRoaXMuc2Nyb2xsYmFyV2lkdGg9dGhpcy5nZXRTY3JvbGxiYXJXaWR0aCgpLHRoaXMucmVjYWxjdWxhdGUoKSx0aGlzLmluaXRMaXN0ZW5lcnMoKSl9LGUuaW5pdERPTT1mdW5jdGlvbigpe3ZhciB0PXRoaXM7aWYoQXJyYXkucHJvdG90eXBlLmZpbHRlci5jYWxsKHRoaXMuZWwuY2hpbGRyZW4sKGZ1bmN0aW9uKGUpe3JldHVybiBlLmNsYXNzTGlzdC5jb250YWlucyh0LmNsYXNzTmFtZXMud3JhcHBlcil9KSkubGVuZ3RoKXRoaXMud3JhcHBlckVsPXRoaXMuZWwucXVlcnlTZWxlY3RvcigiLiIrdGhpcy5jbGFzc05hbWVzLndyYXBwZXIpLHRoaXMuY29udGVudFdyYXBwZXJFbD10aGlzLm9wdGlvbnMuc2Nyb2xsYWJsZU5vZGV8fHRoaXMuZWwucXVlcnlTZWxlY3RvcigiLiIrdGhpcy5jbGFzc05hbWVzLmNvbnRlbnRXcmFwcGVyKSx0aGlzLmNvbnRlbnRFbD10aGlzLm9wdGlvbnMuY29udGVudE5vZGV8fHRoaXMuZWwucXVlcnlTZWxlY3RvcigiLiIrdGhpcy5jbGFzc05hbWVzLmNvbnRlbnRFbCksdGhpcy5vZmZzZXRFbD10aGlzLmVsLnF1ZXJ5U2VsZWN0b3IoIi4iK3RoaXMuY2xhc3NOYW1lcy5vZmZzZXQpLHRoaXMubWFza0VsPXRoaXMuZWwucXVlcnlTZWxlY3RvcigiLiIrdGhpcy5jbGFzc05hbWVzLm1hc2spLHRoaXMucGxhY2Vob2xkZXJFbD10aGlzLmZpbmRDaGlsZCh0aGlzLndyYXBwZXJFbCwiLiIrdGhpcy5jbGFzc05hbWVzLnBsYWNlaG9sZGVyKSx0aGlzLmhlaWdodEF1dG9PYnNlcnZlcldyYXBwZXJFbD10aGlzLmVsLnF1ZXJ5U2VsZWN0b3IoIi4iK3RoaXMuY2xhc3NOYW1lcy5oZWlnaHRBdXRvT2JzZXJ2ZXJXcmFwcGVyRWwpLHRoaXMuaGVpZ2h0QXV0b09ic2VydmVyRWw9dGhpcy5lbC5xdWVyeVNlbGVjdG9yKCIuIit0aGlzLmNsYXNzTmFtZXMuaGVpZ2h0QXV0b09ic2VydmVyRWwpLHRoaXMuYXhpcy54LnRyYWNrLmVsPXRoaXMuZmluZENoaWxkKHRoaXMuZWwsIi4iK3RoaXMuY2xhc3NOYW1lcy50cmFjaysiLiIrdGhpcy5jbGFzc05hbWVzLmhvcml6b250YWwpLHRoaXMuYXhpcy55LnRyYWNrLmVsPXRoaXMuZmluZENoaWxkKHRoaXMuZWwsIi4iK3RoaXMuY2xhc3NOYW1lcy50cmFjaysiLiIrdGhpcy5jbGFzc05hbWVzLnZlcnRpY2FsKTtlbHNle2Zvcih0aGlzLndyYXBwZXJFbD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmNvbnRlbnRXcmFwcGVyRWw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5vZmZzZXRFbD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLm1hc2tFbD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLmNvbnRlbnRFbD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLnBsYWNlaG9sZGVyRWw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5oZWlnaHRBdXRvT2JzZXJ2ZXJXcmFwcGVyRWw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdGhpcy5oZWlnaHRBdXRvT2JzZXJ2ZXJFbD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx0aGlzLndyYXBwZXJFbC5jbGFzc0xpc3QuYWRkKHRoaXMuY2xhc3NOYW1lcy53cmFwcGVyKSx0aGlzLmNvbnRlbnRXcmFwcGVyRWwuY2xhc3NMaXN0LmFkZCh0aGlzLmNsYXNzTmFtZXMuY29udGVudFdyYXBwZXIpLHRoaXMub2Zmc2V0RWwuY2xhc3NMaXN0LmFkZCh0aGlzLmNsYXNzTmFtZXMub2Zmc2V0KSx0aGlzLm1hc2tFbC5jbGFzc0xpc3QuYWRkKHRoaXMuY2xhc3NOYW1lcy5tYXNrKSx0aGlzLmNvbnRlbnRFbC5jbGFzc0xpc3QuYWRkKHRoaXMuY2xhc3NOYW1lcy5jb250ZW50RWwpLHRoaXMucGxhY2Vob2xkZXJFbC5jbGFzc0xpc3QuYWRkKHRoaXMuY2xhc3NOYW1lcy5wbGFjZWhvbGRlciksdGhpcy5oZWlnaHRBdXRvT2JzZXJ2ZXJXcmFwcGVyRWwuY2xhc3NMaXN0LmFkZCh0aGlzLmNsYXNzTmFtZXMuaGVpZ2h0QXV0b09ic2VydmVyV3JhcHBlckVsKSx0aGlzLmhlaWdodEF1dG9PYnNlcnZlckVsLmNsYXNzTGlzdC5hZGQodGhpcy5jbGFzc05hbWVzLmhlaWdodEF1dG9PYnNlcnZlckVsKTt0aGlzLmVsLmZpcnN0Q2hpbGQ7KXRoaXMuY29udGVudEVsLmFwcGVuZENoaWxkKHRoaXMuZWwuZmlyc3RDaGlsZCk7dGhpcy5jb250ZW50V3JhcHBlckVsLmFwcGVuZENoaWxkKHRoaXMuY29udGVudEVsKSx0aGlzLm9mZnNldEVsLmFwcGVuZENoaWxkKHRoaXMuY29udGVudFdyYXBwZXJFbCksdGhpcy5tYXNrRWwuYXBwZW5kQ2hpbGQodGhpcy5vZmZzZXRFbCksdGhpcy5oZWlnaHRBdXRvT2JzZXJ2ZXJXcmFwcGVyRWwuYXBwZW5kQ2hpbGQodGhpcy5oZWlnaHRBdXRvT2JzZXJ2ZXJFbCksdGhpcy53cmFwcGVyRWwuYXBwZW5kQ2hpbGQodGhpcy5oZWlnaHRBdXRvT2JzZXJ2ZXJXcmFwcGVyRWwpLHRoaXMud3JhcHBlckVsLmFwcGVuZENoaWxkKHRoaXMubWFza0VsKSx0aGlzLndyYXBwZXJFbC5hcHBlbmRDaGlsZCh0aGlzLnBsYWNlaG9sZGVyRWwpLHRoaXMuZWwuYXBwZW5kQ2hpbGQodGhpcy53cmFwcGVyRWwpfWlmKCF0aGlzLmF4aXMueC50cmFjay5lbHx8IXRoaXMuYXhpcy55LnRyYWNrLmVsKXt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2UuY2xhc3NMaXN0LmFkZCh0aGlzLmNsYXNzTmFtZXMudHJhY2spLG4uY2xhc3NMaXN0LmFkZCh0aGlzLmNsYXNzTmFtZXMuc2Nyb2xsYmFyKSxlLmFwcGVuZENoaWxkKG4pLHRoaXMuYXhpcy54LnRyYWNrLmVsPWUuY2xvbmVOb2RlKCEwKSx0aGlzLmF4aXMueC50cmFjay5lbC5jbGFzc0xpc3QuYWRkKHRoaXMuY2xhc3NOYW1lcy5ob3Jpem9udGFsKSx0aGlzLmF4aXMueS50cmFjay5lbD1lLmNsb25lTm9kZSghMCksdGhpcy5heGlzLnkudHJhY2suZWwuY2xhc3NMaXN0LmFkZCh0aGlzLmNsYXNzTmFtZXMudmVydGljYWwpLHRoaXMuZWwuYXBwZW5kQ2hpbGQodGhpcy5heGlzLngudHJhY2suZWwpLHRoaXMuZWwuYXBwZW5kQ2hpbGQodGhpcy5heGlzLnkudHJhY2suZWwpfXRoaXMuYXhpcy54LnNjcm9sbGJhci5lbD10aGlzLmF4aXMueC50cmFjay5lbC5xdWVyeVNlbGVjdG9yKCIuIit0aGlzLmNsYXNzTmFtZXMuc2Nyb2xsYmFyKSx0aGlzLmF4aXMueS5zY3JvbGxiYXIuZWw9dGhpcy5heGlzLnkudHJhY2suZWwucXVlcnlTZWxlY3RvcigiLiIrdGhpcy5jbGFzc05hbWVzLnNjcm9sbGJhciksdGhpcy5vcHRpb25zLmF1dG9IaWRlfHwodGhpcy5heGlzLnguc2Nyb2xsYmFyLmVsLmNsYXNzTGlzdC5hZGQodGhpcy5jbGFzc05hbWVzLnZpc2libGUpLHRoaXMuYXhpcy55LnNjcm9sbGJhci5lbC5jbGFzc0xpc3QuYWRkKHRoaXMuY2xhc3NOYW1lcy52aXNpYmxlKSksdGhpcy5lbC5zZXRBdHRyaWJ1dGUoImRhdGEtc2ltcGxlYmFyIiwiaW5pdCIpfSxlLmluaXRMaXN0ZW5lcnM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9SXIodGhpcy5lbCk7dGhpcy5vcHRpb25zLmF1dG9IaWRlJiZ0aGlzLmVsLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZW50ZXIiLHRoaXMub25Nb3VzZUVudGVyKSxbIm1vdXNlZG93biIsImNsaWNrIiwiZGJsY2xpY2siXS5mb3JFYWNoKChmdW5jdGlvbihlKXt0LmVsLmFkZEV2ZW50TGlzdGVuZXIoZSx0Lm9uUG9pbnRlckV2ZW50LCEwKX0pKSxbInRvdWNoc3RhcnQiLCJ0b3VjaGVuZCIsInRvdWNobW92ZSJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe3QuZWwuYWRkRXZlbnRMaXN0ZW5lcihlLHQub25Qb2ludGVyRXZlbnQse2NhcHR1cmU6ITAscGFzc2l2ZTohMH0pfSkpLHRoaXMuZWwuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIix0aGlzLm9uTW91c2VNb3ZlKSx0aGlzLmVsLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbGVhdmUiLHRoaXMub25Nb3VzZUxlYXZlKSx0aGlzLmNvbnRlbnRXcmFwcGVyRWwuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIix0aGlzLm9uU2Nyb2xsKSxlLmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsdGhpcy5vbldpbmRvd1Jlc2l6ZSk7dmFyIG49ITEsaT1lLlJlc2l6ZU9ic2VydmVyfHx0cjt0aGlzLnJlc2l6ZU9ic2VydmVyPW5ldyBpKChmdW5jdGlvbigpe24mJnQucmVjYWxjdWxhdGUoKX0pKSx0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5lbCksdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuY29udGVudEVsKSxlLnJlcXVlc3RBbmltYXRpb25GcmFtZSgoZnVuY3Rpb24oKXtuPSEwfSkpLHRoaXMubXV0YXRpb25PYnNlcnZlcj1uZXcgZS5NdXRhdGlvbk9ic2VydmVyKHRoaXMucmVjYWxjdWxhdGUpLHRoaXMubXV0YXRpb25PYnNlcnZlci5vYnNlcnZlKHRoaXMuY29udGVudEVsLHtjaGlsZExpc3Q6ITAsc3VidHJlZTohMCxjaGFyYWN0ZXJEYXRhOiEwfSl9LGUucmVjYWxjdWxhdGU9ZnVuY3Rpb24oKXt2YXIgdD1Jcih0aGlzLmVsKTt0aGlzLmVsU3R5bGVzPXQuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmVsKSx0aGlzLmlzUnRsPSJydGwiPT09dGhpcy5lbFN0eWxlcy5kaXJlY3Rpb247dmFyIGU9dGhpcy5oZWlnaHRBdXRvT2JzZXJ2ZXJFbC5vZmZzZXRIZWlnaHQ8PTEsbj10aGlzLmhlaWdodEF1dG9PYnNlcnZlckVsLm9mZnNldFdpZHRoPD0xLGk9dGhpcy5jb250ZW50RWwub2Zmc2V0V2lkdGgscj10aGlzLmNvbnRlbnRXcmFwcGVyRWwub2Zmc2V0V2lkdGgsbz10aGlzLmVsU3R5bGVzLm92ZXJmbG93WCxhPXRoaXMuZWxTdHlsZXMub3ZlcmZsb3dZO3RoaXMuY29udGVudEVsLnN0eWxlLnBhZGRpbmc9dGhpcy5lbFN0eWxlcy5wYWRkaW5nVG9wKyIgIit0aGlzLmVsU3R5bGVzLnBhZGRpbmdSaWdodCsiICIrdGhpcy5lbFN0eWxlcy5wYWRkaW5nQm90dG9tKyIgIit0aGlzLmVsU3R5bGVzLnBhZGRpbmdMZWZ0LHRoaXMud3JhcHBlckVsLnN0eWxlLm1hcmdpbj0iLSIrdGhpcy5lbFN0eWxlcy5wYWRkaW5nVG9wKyIgLSIrdGhpcy5lbFN0eWxlcy5wYWRkaW5nUmlnaHQrIiAtIit0aGlzLmVsU3R5bGVzLnBhZGRpbmdCb3R0b20rIiAtIit0aGlzLmVsU3R5bGVzLnBhZGRpbmdMZWZ0O3ZhciBzPXRoaXMuY29udGVudEVsLnNjcm9sbEhlaWdodCxsPXRoaXMuY29udGVudEVsLnNjcm9sbFdpZHRoO3RoaXMuY29udGVudFdyYXBwZXJFbC5zdHlsZS5oZWlnaHQ9ZT8iYXV0byI6IjEwMCUiLHRoaXMucGxhY2Vob2xkZXJFbC5zdHlsZS53aWR0aD1uP2krInB4IjoiYXV0byIsdGhpcy5wbGFjZWhvbGRlckVsLnN0eWxlLmhlaWdodD1zKyJweCI7dmFyIGM9dGhpcy5jb250ZW50V3JhcHBlckVsLm9mZnNldEhlaWdodDt0aGlzLmF4aXMueC5pc092ZXJmbG93aW5nPWw+aSx0aGlzLmF4aXMueS5pc092ZXJmbG93aW5nPXM+Yyx0aGlzLmF4aXMueC5pc092ZXJmbG93aW5nPSJoaWRkZW4iIT09byYmdGhpcy5heGlzLnguaXNPdmVyZmxvd2luZyx0aGlzLmF4aXMueS5pc092ZXJmbG93aW5nPSJoaWRkZW4iIT09YSYmdGhpcy5heGlzLnkuaXNPdmVyZmxvd2luZyx0aGlzLmF4aXMueC5mb3JjZVZpc2libGU9IngiPT09dGhpcy5vcHRpb25zLmZvcmNlVmlzaWJsZXx8ITA9PT10aGlzLm9wdGlvbnMuZm9yY2VWaXNpYmxlLHRoaXMuYXhpcy55LmZvcmNlVmlzaWJsZT0ieSI9PT10aGlzLm9wdGlvbnMuZm9yY2VWaXNpYmxlfHwhMD09PXRoaXMub3B0aW9ucy5mb3JjZVZpc2libGUsdGhpcy5oaWRlTmF0aXZlU2Nyb2xsYmFyKCk7dmFyIHU9dGhpcy5heGlzLnguaXNPdmVyZmxvd2luZz90aGlzLnNjcm9sbGJhcldpZHRoOjAsZD10aGlzLmF4aXMueS5pc092ZXJmbG93aW5nP3RoaXMuc2Nyb2xsYmFyV2lkdGg6MDt0aGlzLmF4aXMueC5pc092ZXJmbG93aW5nPXRoaXMuYXhpcy54LmlzT3ZlcmZsb3dpbmcmJmw+ci1kLHRoaXMuYXhpcy55LmlzT3ZlcmZsb3dpbmc9dGhpcy5heGlzLnkuaXNPdmVyZmxvd2luZyYmcz5jLXUsdGhpcy5heGlzLnguc2Nyb2xsYmFyLnNpemU9dGhpcy5nZXRTY3JvbGxiYXJTaXplKCJ4IiksdGhpcy5heGlzLnkuc2Nyb2xsYmFyLnNpemU9dGhpcy5nZXRTY3JvbGxiYXJTaXplKCJ5IiksdGhpcy5heGlzLnguc2Nyb2xsYmFyLmVsLnN0eWxlLndpZHRoPXRoaXMuYXhpcy54LnNjcm9sbGJhci5zaXplKyJweCIsdGhpcy5heGlzLnkuc2Nyb2xsYmFyLmVsLnN0eWxlLmhlaWdodD10aGlzLmF4aXMueS5zY3JvbGxiYXIuc2l6ZSsicHgiLHRoaXMucG9zaXRpb25TY3JvbGxiYXIoIngiKSx0aGlzLnBvc2l0aW9uU2Nyb2xsYmFyKCJ5IiksdGhpcy50b2dnbGVUcmFja1Zpc2liaWxpdHkoIngiKSx0aGlzLnRvZ2dsZVRyYWNrVmlzaWJpbGl0eSgieSIpfSxlLmdldFNjcm9sbGJhclNpemU9ZnVuY3Rpb24odCl7aWYodm9pZCAwPT09dCYmKHQ9InkiKSwhdGhpcy5heGlzW3RdLmlzT3ZlcmZsb3dpbmcpcmV0dXJuIDA7dmFyIGUsbj10aGlzLmNvbnRlbnRFbFt0aGlzLmF4aXNbdF0uc2Nyb2xsU2l6ZUF0dHJdLGk9dGhpcy5heGlzW3RdLnRyYWNrLmVsW3RoaXMuYXhpc1t0XS5vZmZzZXRTaXplQXR0cl0scj1pL247cmV0dXJuIGU9TWF0aC5tYXgofn4ocippKSx0aGlzLm9wdGlvbnMuc2Nyb2xsYmFyTWluU2l6ZSksdGhpcy5vcHRpb25zLnNjcm9sbGJhck1heFNpemUmJihlPU1hdGgubWluKGUsdGhpcy5vcHRpb25zLnNjcm9sbGJhck1heFNpemUpKSxlfSxlLnBvc2l0aW9uU2Nyb2xsYmFyPWZ1bmN0aW9uKGUpe2lmKHZvaWQgMD09PWUmJihlPSJ5IiksdGhpcy5heGlzW2VdLmlzT3ZlcmZsb3dpbmcpe3ZhciBuPXRoaXMuY29udGVudFdyYXBwZXJFbFt0aGlzLmF4aXNbZV0uc2Nyb2xsU2l6ZUF0dHJdLGk9dGhpcy5heGlzW2VdLnRyYWNrLmVsW3RoaXMuYXhpc1tlXS5vZmZzZXRTaXplQXR0cl0scj1wYXJzZUludCh0aGlzLmVsU3R5bGVzW3RoaXMuYXhpc1tlXS5zaXplQXR0cl0sMTApLG89dGhpcy5heGlzW2VdLnNjcm9sbGJhcixhPXRoaXMuY29udGVudFdyYXBwZXJFbFt0aGlzLmF4aXNbZV0uc2Nyb2xsT2Zmc2V0QXR0cl0scz0oYT0ieCI9PT1lJiZ0aGlzLmlzUnRsJiZ0LmdldFJ0bEhlbHBlcnMoKS5pc1J0bFNjcm9sbGluZ0ludmVydGVkPy1hOmEpLyhuLXIpLGw9fn4oKGktby5zaXplKSpzKTtsPSJ4Ij09PWUmJnRoaXMuaXNSdGwmJnQuZ2V0UnRsSGVscGVycygpLmlzUnRsU2Nyb2xsYmFySW52ZXJ0ZWQ/bCsoaS1vLnNpemUpOmwsby5lbC5zdHlsZS50cmFuc2Zvcm09IngiPT09ZT8idHJhbnNsYXRlM2QoIitsKyJweCwgMCwgMCkiOiJ0cmFuc2xhdGUzZCgwLCAiK2wrInB4LCAwKSJ9fSxlLnRvZ2dsZVRyYWNrVmlzaWJpbGl0eT1mdW5jdGlvbih0KXt2b2lkIDA9PT10JiYodD0ieSIpO3ZhciBlPXRoaXMuYXhpc1t0XS50cmFjay5lbCxuPXRoaXMuYXhpc1t0XS5zY3JvbGxiYXIuZWw7dGhpcy5heGlzW3RdLmlzT3ZlcmZsb3dpbmd8fHRoaXMuYXhpc1t0XS5mb3JjZVZpc2libGU/KGUuc3R5bGUudmlzaWJpbGl0eT0idmlzaWJsZSIsdGhpcy5jb250ZW50V3JhcHBlckVsLnN0eWxlW3RoaXMuYXhpc1t0XS5vdmVyZmxvd0F0dHJdPSJzY3JvbGwiKTooZS5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iLHRoaXMuY29udGVudFdyYXBwZXJFbC5zdHlsZVt0aGlzLmF4aXNbdF0ub3ZlcmZsb3dBdHRyXT0iaGlkZGVuIiksdGhpcy5heGlzW3RdLmlzT3ZlcmZsb3dpbmc/bi5zdHlsZS5kaXNwbGF5PSJibG9jayI6bi5zdHlsZS5kaXNwbGF5PSJub25lIn0sZS5oaWRlTmF0aXZlU2Nyb2xsYmFyPWZ1bmN0aW9uKCl7dGhpcy5vZmZzZXRFbC5zdHlsZVt0aGlzLmlzUnRsPyJsZWZ0IjoicmlnaHQiXT10aGlzLmF4aXMueS5pc092ZXJmbG93aW5nfHx0aGlzLmF4aXMueS5mb3JjZVZpc2libGU/Ii0iK3RoaXMuc2Nyb2xsYmFyV2lkdGgrInB4IjowLHRoaXMub2Zmc2V0RWwuc3R5bGUuYm90dG9tPXRoaXMuYXhpcy54LmlzT3ZlcmZsb3dpbmd8fHRoaXMuYXhpcy54LmZvcmNlVmlzaWJsZT8iLSIrdGhpcy5zY3JvbGxiYXJXaWR0aCsicHgiOjB9LGUub25Nb3VzZU1vdmVGb3JBeGlzPWZ1bmN0aW9uKHQpe3ZvaWQgMD09PXQmJih0PSJ5IiksdGhpcy5heGlzW3RdLnRyYWNrLnJlY3Q9dGhpcy5heGlzW3RdLnRyYWNrLmVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHRoaXMuYXhpc1t0XS5zY3JvbGxiYXIucmVjdD10aGlzLmF4aXNbdF0uc2Nyb2xsYmFyLmVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHRoaXMuaXNXaXRoaW5Cb3VuZHModGhpcy5heGlzW3RdLnNjcm9sbGJhci5yZWN0KT90aGlzLmF4aXNbdF0uc2Nyb2xsYmFyLmVsLmNsYXNzTGlzdC5hZGQodGhpcy5jbGFzc05hbWVzLmhvdmVyKTp0aGlzLmF4aXNbdF0uc2Nyb2xsYmFyLmVsLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5jbGFzc05hbWVzLmhvdmVyKSx0aGlzLmlzV2l0aGluQm91bmRzKHRoaXMuYXhpc1t0XS50cmFjay5yZWN0KT8odGhpcy5zaG93U2Nyb2xsYmFyKHQpLHRoaXMuYXhpc1t0XS50cmFjay5lbC5jbGFzc0xpc3QuYWRkKHRoaXMuY2xhc3NOYW1lcy5ob3ZlcikpOnRoaXMuYXhpc1t0XS50cmFjay5lbC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuY2xhc3NOYW1lcy5ob3Zlcil9LGUub25Nb3VzZUxlYXZlRm9yQXhpcz1mdW5jdGlvbih0KXt2b2lkIDA9PT10JiYodD0ieSIpLHRoaXMuYXhpc1t0XS50cmFjay5lbC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuY2xhc3NOYW1lcy5ob3ZlciksdGhpcy5heGlzW3RdLnNjcm9sbGJhci5lbC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuY2xhc3NOYW1lcy5ob3Zlcil9LGUuc2hvd1Njcm9sbGJhcj1mdW5jdGlvbih0KXt2b2lkIDA9PT10JiYodD0ieSIpO3ZhciBlPXRoaXMuYXhpc1t0XS5zY3JvbGxiYXIuZWw7dGhpcy5heGlzW3RdLmlzVmlzaWJsZXx8KGUuY2xhc3NMaXN0LmFkZCh0aGlzLmNsYXNzTmFtZXMudmlzaWJsZSksdGhpcy5heGlzW3RdLmlzVmlzaWJsZT0hMCksdGhpcy5vcHRpb25zLmF1dG9IaWRlJiZ0aGlzLmhpZGVTY3JvbGxiYXJzKCl9LGUub25EcmFnU3RhcnQ9ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT1lJiYoZT0ieSIpO3ZhciBuPVByKHRoaXMuZWwpLGk9SXIodGhpcy5lbCkscj10aGlzLmF4aXNbZV0uc2Nyb2xsYmFyLG89InkiPT09ZT90LnBhZ2VZOnQucGFnZVg7dGhpcy5heGlzW2VdLmRyYWdPZmZzZXQ9by1yLnJlY3RbdGhpcy5heGlzW2VdLm9mZnNldEF0dHJdLHRoaXMuZHJhZ2dlZEF4aXM9ZSx0aGlzLmVsLmNsYXNzTGlzdC5hZGQodGhpcy5jbGFzc05hbWVzLmRyYWdnaW5nKSxuLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsdGhpcy5kcmFnLCEwKSxuLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLHRoaXMub25FbmREcmFnLCEwKSxudWxsPT09dGhpcy5yZW1vdmVQcmV2ZW50Q2xpY2tJZD8obi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5wcmV2ZW50Q2xpY2ssITApLG4uYWRkRXZlbnRMaXN0ZW5lcigiZGJsY2xpY2siLHRoaXMucHJldmVudENsaWNrLCEwKSk6KGkuY2xlYXJUaW1lb3V0KHRoaXMucmVtb3ZlUHJldmVudENsaWNrSWQpLHRoaXMucmVtb3ZlUHJldmVudENsaWNrSWQ9bnVsbCl9LGUub25UcmFja0NsaWNrPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcztpZih2b2lkIDA9PT1lJiYoZT0ieSIpLHRoaXMub3B0aW9ucy5jbGlja09uVHJhY2spe3ZhciBpPUlyKHRoaXMuZWwpO3RoaXMuYXhpc1tlXS5zY3JvbGxiYXIucmVjdD10aGlzLmF4aXNbZV0uc2Nyb2xsYmFyLmVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3ZhciByPXRoaXMuYXhpc1tlXS5zY3JvbGxiYXIucmVjdFt0aGlzLmF4aXNbZV0ub2Zmc2V0QXR0cl0sbz1wYXJzZUludCh0aGlzLmVsU3R5bGVzW3RoaXMuYXhpc1tlXS5zaXplQXR0cl0sMTApLGE9dGhpcy5jb250ZW50V3JhcHBlckVsW3RoaXMuYXhpc1tlXS5zY3JvbGxPZmZzZXRBdHRyXSxzPSgieSI9PT1lP3RoaXMubW91c2VZLXI6dGhpcy5tb3VzZVgtcik8MD8tMToxLGw9LTE9PT1zP2EtbzphK287IWZ1bmN0aW9uIHQoKXt2YXIgcixvOy0xPT09cz9hPmwmJihhLT1uLm9wdGlvbnMuY2xpY2tPblRyYWNrU3BlZWQsbi5jb250ZW50V3JhcHBlckVsLnNjcm9sbFRvKCgocj17fSlbbi5heGlzW2VdLm9mZnNldEF0dHJdPWEscikpLGkucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHQpKTphPGwmJihhKz1uLm9wdGlvbnMuY2xpY2tPblRyYWNrU3BlZWQsbi5jb250ZW50V3JhcHBlckVsLnNjcm9sbFRvKCgobz17fSlbbi5heGlzW2VdLm9mZnNldEF0dHJdPWEsbykpLGkucmVxdWVzdEFuaW1hdGlvbkZyYW1lKHQpKX0oKX19LGUuZ2V0Q29udGVudEVsZW1lbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250ZW50RWx9LGUuZ2V0U2Nyb2xsRWxlbWVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRlbnRXcmFwcGVyRWx9LGUuZ2V0U2Nyb2xsYmFyV2lkdGg9ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIm5vbmUiPT09Z2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmNvbnRlbnRXcmFwcGVyRWwsIjo6LXdlYmtpdC1zY3JvbGxiYXIiKS5kaXNwbGF5fHwic2Nyb2xsYmFyV2lkdGgiaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlfHwiLW1zLW92ZXJmbG93LXN0eWxlImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZT8wOmlyKCl9Y2F0Y2godCl7cmV0dXJuIGlyKCl9fSxlLnJlbW92ZUxpc3RlbmVycz1mdW5jdGlvbigpe3ZhciB0PXRoaXMsZT1Jcih0aGlzLmVsKTt0aGlzLm9wdGlvbnMuYXV0b0hpZGUmJnRoaXMuZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2VlbnRlciIsdGhpcy5vbk1vdXNlRW50ZXIpLFsibW91c2Vkb3duIiwiY2xpY2siLCJkYmxjbGljayJdLmZvckVhY2goKGZ1bmN0aW9uKGUpe3QuZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLHQub25Qb2ludGVyRXZlbnQsITApfSkpLFsidG91Y2hzdGFydCIsInRvdWNoZW5kIiwidG91Y2htb3ZlIl0uZm9yRWFjaCgoZnVuY3Rpb24oZSl7dC5lbC5yZW1vdmVFdmVudExpc3RlbmVyKGUsdC5vblBvaW50ZXJFdmVudCx7Y2FwdHVyZTohMCxwYXNzaXZlOiEwfSl9KSksdGhpcy5lbC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHRoaXMub25Nb3VzZU1vdmUpLHRoaXMuZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2VsZWF2ZSIsdGhpcy5vbk1vdXNlTGVhdmUpLHRoaXMuY29udGVudFdyYXBwZXJFbCYmdGhpcy5jb250ZW50V3JhcHBlckVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5vblNjcm9sbCksZS5yZW1vdmVFdmVudExpc3RlbmVyKCJyZXNpemUiLHRoaXMub25XaW5kb3dSZXNpemUpLHRoaXMubXV0YXRpb25PYnNlcnZlciYmdGhpcy5tdXRhdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKSx0aGlzLnJlc2l6ZU9ic2VydmVyJiZ0aGlzLnJlc2l6ZU9ic2VydmVyLmRpc2Nvbm5lY3QoKSx0aGlzLnJlY2FsY3VsYXRlLmNhbmNlbCgpLHRoaXMub25Nb3VzZU1vdmUuY2FuY2VsKCksdGhpcy5oaWRlU2Nyb2xsYmFycy5jYW5jZWwoKSx0aGlzLm9uV2luZG93UmVzaXplLmNhbmNlbCgpfSxlLnVuTW91bnQ9ZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUxpc3RlbmVycygpLHQuaW5zdGFuY2VzLmRlbGV0ZSh0aGlzLmVsKX0sZS5pc1dpdGhpbkJvdW5kcz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5tb3VzZVg+PXQubGVmdCYmdGhpcy5tb3VzZVg8PXQubGVmdCt0LndpZHRoJiZ0aGlzLm1vdXNlWT49dC50b3AmJnRoaXMubW91c2VZPD10LnRvcCt0LmhlaWdodH0sZS5maW5kQ2hpbGQ9ZnVuY3Rpb24odCxlKXt2YXIgbj10Lm1hdGNoZXN8fHQud2Via2l0TWF0Y2hlc1NlbGVjdG9yfHx0Lm1vek1hdGNoZXNTZWxlY3Rvcnx8dC5tc01hdGNoZXNTZWxlY3RvcjtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmZpbHRlci5jYWxsKHQuY2hpbGRyZW4sKGZ1bmN0aW9uKHQpe3JldHVybiBuLmNhbGwodCxlKX0pKVswXX0sdH0oKTtyZXR1cm4gTHIuZGVmYXVsdE9wdGlvbnM9e2F1dG9IaWRlOiEwLGZvcmNlVmlzaWJsZTohMSxjbGlja09uVHJhY2s6ITAsY2xpY2tPblRyYWNrU3BlZWQ6NDAsY2xhc3NOYW1lczp7Y29udGVudEVsOiJzaW1wbGViYXItY29udGVudCIsY29udGVudFdyYXBwZXI6InNpbXBsZWJhci1jb250ZW50LXdyYXBwZXIiLG9mZnNldDoic2ltcGxlYmFyLW9mZnNldCIsbWFzazoic2ltcGxlYmFyLW1hc2siLHdyYXBwZXI6InNpbXBsZWJhci13cmFwcGVyIixwbGFjZWhvbGRlcjoic2ltcGxlYmFyLXBsYWNlaG9sZGVyIixzY3JvbGxiYXI6InNpbXBsZWJhci1zY3JvbGxiYXIiLHRyYWNrOiJzaW1wbGViYXItdHJhY2siLGhlaWdodEF1dG9PYnNlcnZlcldyYXBwZXJFbDoic2ltcGxlYmFyLWhlaWdodC1hdXRvLW9ic2VydmVyLXdyYXBwZXIiLGhlaWdodEF1dG9PYnNlcnZlckVsOiJzaW1wbGViYXItaGVpZ2h0LWF1dG8tb2JzZXJ2ZXIiLHZpc2libGU6InNpbXBsZWJhci12aXNpYmxlIixob3Jpem9udGFsOiJzaW1wbGViYXItaG9yaXpvbnRhbCIsdmVydGljYWw6InNpbXBsZWJhci12ZXJ0aWNhbCIsaG92ZXI6InNpbXBsZWJhci1ob3ZlciIsZHJhZ2dpbmc6InNpbXBsZWJhci1kcmFnZ2luZyJ9LHNjcm9sbGJhck1pblNpemU6MjUsc2Nyb2xsYmFyTWF4U2l6ZTowLHRpbWVvdXQ6MWUzfSxMci5pbnN0YW5jZXM9bmV3IFdlYWtNYXAsTHIuaW5pdERPTUxvYWRlZEVsZW1lbnRzPWZ1bmN0aW9uKCl7ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsdGhpcy5pbml0RE9NTG9hZGVkRWxlbWVudHMpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIix0aGlzLmluaXRET01Mb2FkZWRFbGVtZW50cyksQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1zaW1wbGViYXJdIiksKGZ1bmN0aW9uKHQpeyJpbml0Ij09PXQuZ2V0QXR0cmlidXRlKCJkYXRhLXNpbXBsZWJhciIpfHxMci5pbnN0YW5jZXMuaGFzKHQpfHxuZXcgTHIodCxPcih0LmF0dHJpYnV0ZXMpKX0pKX0sTHIucmVtb3ZlT2JzZXJ2ZXI9ZnVuY3Rpb24oKXt0aGlzLmdsb2JhbE9ic2VydmVyLmRpc2Nvbm5lY3QoKX0sTHIuaW5pdEh0bWxBcGk9ZnVuY3Rpb24oKXt0aGlzLmluaXRET01Mb2FkZWRFbGVtZW50cz10aGlzLmluaXRET01Mb2FkZWRFbGVtZW50cy5iaW5kKHRoaXMpLCJ1bmRlZmluZWQiIT10eXBlb2YgTXV0YXRpb25PYnNlcnZlciYmKHRoaXMuZ2xvYmFsT2JzZXJ2ZXI9bmV3IE11dGF0aW9uT2JzZXJ2ZXIoTHIuaGFuZGxlTXV0YXRpb25zKSx0aGlzLmdsb2JhbE9ic2VydmVyLm9ic2VydmUoZG9jdW1lbnQse2NoaWxkTGlzdDohMCxzdWJ0cmVlOiEwfSkpLCJjb21wbGV0ZSI9PT1kb2N1bWVudC5yZWFkeVN0YXRlfHwibG9hZGluZyIhPT1kb2N1bWVudC5yZWFkeVN0YXRlJiYhZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsP3dpbmRvdy5zZXRUaW1lb3V0KHRoaXMuaW5pdERPTUxvYWRlZEVsZW1lbnRzKTooZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsdGhpcy5pbml0RE9NTG9hZGVkRWxlbWVudHMpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIix0aGlzLmluaXRET01Mb2FkZWRFbGVtZW50cykpfSxMci5oYW5kbGVNdXRhdGlvbnM9ZnVuY3Rpb24odCl7dC5mb3JFYWNoKChmdW5jdGlvbih0KXtBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKHQuYWRkZWROb2RlcywoZnVuY3Rpb24odCl7MT09PXQubm9kZVR5cGUmJih0Lmhhc0F0dHJpYnV0ZSgiZGF0YS1zaW1wbGViYXIiKT8hTHIuaW5zdGFuY2VzLmhhcyh0KSYmbmV3IExyKHQsT3IodC5hdHRyaWJ1dGVzKSk6QXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbCh0LnF1ZXJ5U2VsZWN0b3JBbGwoIltkYXRhLXNpbXBsZWJhcl0iKSwoZnVuY3Rpb24odCl7ImluaXQiPT09dC5nZXRBdHRyaWJ1dGUoImRhdGEtc2ltcGxlYmFyIil8fExyLmluc3RhbmNlcy5oYXModCl8fG5ldyBMcih0LE9yKHQuYXR0cmlidXRlcykpfSkpKX0pKSxBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKHQucmVtb3ZlZE5vZGVzLChmdW5jdGlvbih0KXsxPT09dC5ub2RlVHlwZSYmKHQuaGFzQXR0cmlidXRlKCdbZGF0YS1zaW1wbGViYXI9ImluaXQiXScpP0xyLmluc3RhbmNlcy5oYXModCkmJkxyLmluc3RhbmNlcy5nZXQodCkudW5Nb3VudCgpOkFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwodC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1zaW1wbGViYXI9ImluaXQiXScpLChmdW5jdGlvbih0KXtMci5pbnN0YW5jZXMuaGFzKHQpJiZMci5pbnN0YW5jZXMuZ2V0KHQpLnVuTW91bnQoKX0pKSl9KSl9KSl9LExyLmdldE9wdGlvbnM9T3IsWXQmJkxyLmluaXRIdG1sQXBpKCksTHJ9KSksZnVuY3Rpb24odCl7ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyJqcXVlcnkiXSx0KToib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9ZnVuY3Rpb24oZSxuKXtyZXR1cm4gdm9pZCAwPT09biYmKG49InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/cmVxdWlyZSgianF1ZXJ5Iik6cmVxdWlyZSgianF1ZXJ5IikoZSkpLHQobiksbn06dChqUXVlcnkpfSgoZnVuY3Rpb24odCl7dmFyIGU9ZnVuY3Rpb24oKXtpZih0JiZ0LmZuJiZ0LmZuLnNlbGVjdDImJnQuZm4uc2VsZWN0Mi5hbWQpdmFyIGU9dC5mbi5zZWxlY3QyLmFtZDt2YXIgbixpLHIsbyxhLHMsbCxjLHUsZCxoLGYscCxnLG0sdjtmdW5jdGlvbiB5KHQsZSl7cmV0dXJuIHAuY2FsbCh0LGUpfWZ1bmN0aW9uIGIodCxlKXt2YXIgbixpLHIsbyxhLHMsbCxjLHUsZCxmLHA9ZSYmZS5zcGxpdCgiLyIpLGc9aC5tYXAsdj1nJiZnWyIqIl18fHt9O2lmKHQpe2ZvcihhPSh0PXQuc3BsaXQoIi8iKSkubGVuZ3RoLTEsaC5ub2RlSWRDb21wYXQmJm0udGVzdCh0W2FdKSYmKHRbYV09dFthXS5yZXBsYWNlKG0sIiIpKSwiLiI9PT10WzBdLmNoYXJBdCgwKSYmcCYmKHQ9cC5zbGljZSgwLHAubGVuZ3RoLTEpLmNvbmNhdCh0KSksdT0wO3U8dC5sZW5ndGg7dSsrKWlmKCIuIj09PShmPXRbdV0pKXQuc3BsaWNlKHUsMSksLS11O2Vsc2UgaWYoIi4uIj09PWYpe2lmKDA9PT11fHwxPT09dSYmIi4uIj09PXRbMl18fCIuLiI9PT10W3UtMV0pY29udGludWU7MDx1JiYodC5zcGxpY2UodS0xLDIpLHUtPTIpfXQ9dC5qb2luKCIvIil9aWYoKHB8fHYpJiZnKXtmb3IodT0obj10LnNwbGl0KCIvIikpLmxlbmd0aDswPHU7LS11KXtpZihpPW4uc2xpY2UoMCx1KS5qb2luKCIvIikscClmb3IoZD1wLmxlbmd0aDswPGQ7LS1kKWlmKHI9KHI9Z1twLnNsaWNlKDAsZCkuam9pbigiLyIpXSkmJnJbaV0pe289cixzPXU7YnJlYWt9aWYobylicmVhazshbCYmdiYmdltpXSYmKGw9dltpXSxjPXUpfSFvJiZsJiYobz1sLHM9YyksbyYmKG4uc3BsaWNlKDAscyxvKSx0PW4uam9pbigiLyIpKX1yZXR1cm4gdH1mdW5jdGlvbiB3KHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49Zy5jYWxsKGFyZ3VtZW50cywwKTtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIG5bMF0mJjE9PT1uLmxlbmd0aCYmbi5wdXNoKG51bGwpLHMuYXBwbHkobyxuLmNvbmNhdChbdCxlXSkpfX1mdW5jdGlvbiB4KHQpe3JldHVybiBmdW5jdGlvbihlKXt1W3RdPWV9fWZ1bmN0aW9uIF8odCl7aWYoeShkLHQpKXt2YXIgZT1kW3RdO2RlbGV0ZSBkW3RdLGZbdF09ITAsYS5hcHBseShvLGUpfWlmKCF5KHUsdCkmJiF5KGYsdCkpdGhyb3cgbmV3IEVycm9yKCJObyAiK3QpO3JldHVybiB1W3RdfWZ1bmN0aW9uIFModCl7dmFyIGUsbj10P3QuaW5kZXhPZigiISIpOi0xO3JldHVybi0xPG4mJihlPXQuc3Vic3RyaW5nKDAsbiksdD10LnN1YnN0cmluZyhuKzEsdC5sZW5ndGgpKSxbZSx0XX1mdW5jdGlvbiBDKHQpe3JldHVybiB0P1ModCk6W119cmV0dXJuIGUmJmUucmVxdWlyZWpzfHwoZT9pPWU6ZT17fSx1PXt9LGQ9e30saD17fSxmPXt9LHA9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxnPVtdLnNsaWNlLG09L1wuanMkLyxsPWZ1bmN0aW9uKHQsZSl7dmFyIG4saSxyPVModCksbz1yWzBdLGE9ZVsxXTtyZXR1cm4gdD1yWzFdLG8mJihuPV8obz1iKG8sYSkpKSxvP3Q9biYmbi5ub3JtYWxpemU/bi5ub3JtYWxpemUodCwoaT1hLGZ1bmN0aW9uKHQpe3JldHVybiBiKHQsaSl9KSk6Yih0LGEpOihvPShyPVModD1iKHQsYSkpKVswXSx0PXJbMV0sbyYmKG49XyhvKSkpLHtmOm8/bysiISIrdDp0LG46dCxwcjpvLHA6bn19LGM9e3JlcXVpcmU6ZnVuY3Rpb24odCl7cmV0dXJuIHcodCl9LGV4cG9ydHM6ZnVuY3Rpb24odCl7dmFyIGU9dVt0XTtyZXR1cm4gdm9pZCAwIT09ZT9lOnVbdF09e319LG1vZHVsZTpmdW5jdGlvbih0KXtyZXR1cm57aWQ6dCx1cmk6IiIsZXhwb3J0czp1W3RdLGNvbmZpZzooZT10LGZ1bmN0aW9uKCl7cmV0dXJuIGgmJmguY29uZmlnJiZoLmNvbmZpZ1tlXXx8e319KX07dmFyIGV9fSxhPWZ1bmN0aW9uKHQsZSxuLGkpe3ZhciByLGEscyxoLHAsZyxtLHY9W10sYj10eXBlb2YgbjtpZihnPUMoaT1pfHx0KSwidW5kZWZpbmVkIj09Ynx8ImZ1bmN0aW9uIj09Yil7Zm9yKGU9IWUubGVuZ3RoJiZuLmxlbmd0aD9bInJlcXVpcmUiLCJleHBvcnRzIiwibW9kdWxlIl06ZSxwPTA7cDxlLmxlbmd0aDtwKz0xKWlmKCJyZXF1aXJlIj09PShhPShoPWwoZVtwXSxnKSkuZikpdltwXT1jLnJlcXVpcmUodCk7ZWxzZSBpZigiZXhwb3J0cyI9PT1hKXZbcF09Yy5leHBvcnRzKHQpLG09ITA7ZWxzZSBpZigibW9kdWxlIj09PWEpcj12W3BdPWMubW9kdWxlKHQpO2Vsc2UgaWYoeSh1LGEpfHx5KGQsYSl8fHkoZixhKSl2W3BdPV8oYSk7ZWxzZXtpZighaC5wKXRocm93IG5ldyBFcnJvcih0KyIgbWlzc2luZyAiK2EpO2gucC5sb2FkKGgubix3KGksITApLHgoYSkse30pLHZbcF09dVthXX1zPW4/bi5hcHBseSh1W3RdLHYpOnZvaWQgMCx0JiYociYmci5leHBvcnRzIT09byYmci5leHBvcnRzIT09dVt0XT91W3RdPXIuZXhwb3J0czpzPT09byYmbXx8KHVbdF09cykpfWVsc2UgdCYmKHVbdF09bil9LG49aT1zPWZ1bmN0aW9uKHQsZSxuLGkscil7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiBjW3RdP2NbdF0oZSk6XyhsKHQsQyhlKSkuZik7aWYoIXQuc3BsaWNlKXtpZigoaD10KS5kZXBzJiZzKGguZGVwcyxoLmNhbGxiYWNrKSwhZSlyZXR1cm47ZS5zcGxpY2U/KHQ9ZSxlPW4sbj1udWxsKTp0PW99cmV0dXJuIGU9ZXx8ZnVuY3Rpb24oKXt9LCJmdW5jdGlvbiI9PXR5cGVvZiBuJiYobj1pLGk9ciksaT9hKG8sdCxlLG4pOnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7YShvLHQsZSxuKX0pLDQpLHN9LHMuY29uZmlnPWZ1bmN0aW9uKHQpe3JldHVybiBzKHQpfSxuLl9kZWZpbmVkPXUsKHI9ZnVuY3Rpb24odCxlLG4pe2lmKCJzdHJpbmciIT10eXBlb2YgdCl0aHJvdyBuZXcgRXJyb3IoIlNlZSBhbG1vbmQgUkVBRE1FOiBpbmNvcnJlY3QgbW9kdWxlIGJ1aWxkLCBubyBtb2R1bGUgbmFtZSIpO2Uuc3BsaWNlfHwobj1lLGU9W10pLHkodSx0KXx8eShkLHQpfHwoZFt0XT1bdCxlLG5dKX0pLmFtZD17alF1ZXJ5OiEwfSxlLnJlcXVpcmVqcz1uLGUucmVxdWlyZT1pLGUuZGVmaW5lPXIpLGUuZGVmaW5lKCJhbG1vbmQiLChmdW5jdGlvbigpe30pKSxlLmRlZmluZSgianF1ZXJ5IixbXSwoZnVuY3Rpb24oKXt2YXIgZT10fHwkO3JldHVybiBudWxsPT1lJiZjb25zb2xlJiZjb25zb2xlLmVycm9yJiZjb25zb2xlLmVycm9yKCJTZWxlY3QyOiBBbiBpbnN0YW5jZSBvZiBqUXVlcnkgb3IgYSBqUXVlcnktY29tcGF0aWJsZSBsaWJyYXJ5IHdhcyBub3QgZm91bmQuIE1ha2Ugc3VyZSB0aGF0IHlvdSBhcmUgaW5jbHVkaW5nIGpRdWVyeSBiZWZvcmUgU2VsZWN0MiBvbiB5b3VyIHdlYiBwYWdlLiIpLGV9KSksZS5kZWZpbmUoInNlbGVjdDIvdXRpbHMiLFsianF1ZXJ5Il0sKGZ1bmN0aW9uKHQpe3ZhciBlPXt9O2Z1bmN0aW9uIG4odCl7dmFyIGU9dC5wcm90b3R5cGUsbj1bXTtmb3IodmFyIGkgaW4gZSkiZnVuY3Rpb24iPT10eXBlb2YgZVtpXSYmImNvbnN0cnVjdG9yIiE9PWkmJm4ucHVzaChpKTtyZXR1cm4gbn1mdW5jdGlvbiBpKCl7dGhpcy5saXN0ZW5lcnM9e319ZS5FeHRlbmQ9ZnVuY3Rpb24odCxlKXt2YXIgbj17fS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBpKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fWZvcih2YXIgciBpbiBlKW4uY2FsbChlLHIpJiYodFtyXT1lW3JdKTtyZXR1cm4gaS5wcm90b3R5cGU9ZS5wcm90b3R5cGUsdC5wcm90b3R5cGU9bmV3IGksdC5fX3N1cGVyX189ZS5wcm90b3R5cGUsdH0sZS5EZWNvcmF0ZT1mdW5jdGlvbih0LGUpe3ZhciBpPW4oZSkscj1uKHQpO2Z1bmN0aW9uIG8oKXt2YXIgbj1BcnJheS5wcm90b3R5cGUudW5zaGlmdCxpPWUucHJvdG90eXBlLmNvbnN0cnVjdG9yLmxlbmd0aCxyPXQucHJvdG90eXBlLmNvbnN0cnVjdG9yOzA8aSYmKG4uY2FsbChhcmd1bWVudHMsdC5wcm90b3R5cGUuY29uc3RydWN0b3IpLHI9ZS5wcm90b3R5cGUuY29uc3RydWN0b3IpLHIuYXBwbHkodGhpcyxhcmd1bWVudHMpfWUuZGlzcGxheU5hbWU9dC5kaXNwbGF5TmFtZSxvLnByb3RvdHlwZT1uZXcgZnVuY3Rpb24oKXt0aGlzLmNvbnN0cnVjdG9yPW99O2Zvcih2YXIgYT0wO2E8ci5sZW5ndGg7YSsrKXt2YXIgcz1yW2FdO28ucHJvdG90eXBlW3NdPXQucHJvdG90eXBlW3NdfWZ1bmN0aW9uIGwodCl7dmFyIG49ZnVuY3Rpb24oKXt9O3QgaW4gby5wcm90b3R5cGUmJihuPW8ucHJvdG90eXBlW3RdKTt2YXIgaT1lLnByb3RvdHlwZVt0XTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuY2FsbChhcmd1bWVudHMsbiksaS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZvcih2YXIgYz0wO2M8aS5sZW5ndGg7YysrKXt2YXIgdT1pW2NdO28ucHJvdG90eXBlW3VdPWwodSl9cmV0dXJuIG99LGkucHJvdG90eXBlLm9uPWZ1bmN0aW9uKHQsZSl7dGhpcy5saXN0ZW5lcnM9dGhpcy5saXN0ZW5lcnN8fHt9LHQgaW4gdGhpcy5saXN0ZW5lcnM/dGhpcy5saXN0ZW5lcnNbdF0ucHVzaChlKTp0aGlzLmxpc3RlbmVyc1t0XT1bZV19LGkucHJvdG90eXBlLnRyaWdnZXI9ZnVuY3Rpb24odCl7dmFyIGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLG49ZS5jYWxsKGFyZ3VtZW50cywxKTt0aGlzLmxpc3RlbmVycz10aGlzLmxpc3RlbmVyc3x8e30sbnVsbD09biYmKG49W10pLDA9PT1uLmxlbmd0aCYmbi5wdXNoKHt9KSwoblswXS5fdHlwZT10KWluIHRoaXMubGlzdGVuZXJzJiZ0aGlzLmludm9rZSh0aGlzLmxpc3RlbmVyc1t0XSxlLmNhbGwoYXJndW1lbnRzLDEpKSwiKiJpbiB0aGlzLmxpc3RlbmVycyYmdGhpcy5pbnZva2UodGhpcy5saXN0ZW5lcnNbIioiXSxhcmd1bWVudHMpfSxpLnByb3RvdHlwZS5pbnZva2U9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49MCxpPXQubGVuZ3RoO248aTtuKyspdFtuXS5hcHBseSh0aGlzLGUpfSxlLk9ic2VydmFibGU9aSxlLmdlbmVyYXRlQ2hhcnM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPSIiLG49MDtuPHQ7bisrKWUrPU1hdGguZmxvb3IoMzYqTWF0aC5yYW5kb20oKSkudG9TdHJpbmcoMzYpO3JldHVybiBlfSxlLmJpbmQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0LmFwcGx5KGUsYXJndW1lbnRzKX19LGUuX2NvbnZlcnREYXRhPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZSBpbiB0KXt2YXIgbj1lLnNwbGl0KCItIiksaT10O2lmKDEhPT1uLmxlbmd0aCl7Zm9yKHZhciByPTA7cjxuLmxlbmd0aDtyKyspe3ZhciBvPW5bcl07KG89by5zdWJzdHJpbmcoMCwxKS50b0xvd2VyQ2FzZSgpK28uc3Vic3RyaW5nKDEpKWluIGl8fChpW29dPXt9KSxyPT1uLmxlbmd0aC0xJiYoaVtvXT10W2VdKSxpPWlbb119ZGVsZXRlIHRbZV19fXJldHVybiB0fSxlLmhhc1Njcm9sbD1mdW5jdGlvbihlLG4pe3ZhciBpPXQobikscj1uLnN0eWxlLm92ZXJmbG93WCxvPW4uc3R5bGUub3ZlcmZsb3dZO3JldHVybihyIT09b3x8ImhpZGRlbiIhPT1vJiYidmlzaWJsZSIhPT1vKSYmKCJzY3JvbGwiPT09cnx8InNjcm9sbCI9PT1vfHxpLmlubmVySGVpZ2h0KCk8bi5zY3JvbGxIZWlnaHR8fGkuaW5uZXJXaWR0aCgpPG4uc2Nyb2xsV2lkdGgpfSxlLmVzY2FwZU1hcmt1cD1mdW5jdGlvbih0KXt2YXIgZT17IlxcIjoiJiM5MjsiLCImIjoiJmFtcDsiLCI8IjoiJmx0OyIsIj4iOiImZ3Q7IiwnIic6IiZxdW90OyIsIiciOiImIzM5OyIsIi8iOiImIzQ3OyJ9O3JldHVybiJzdHJpbmciIT10eXBlb2YgdD90OlN0cmluZyh0KS5yZXBsYWNlKC9bJjw+IidcL1xcXS9nLChmdW5jdGlvbih0KXtyZXR1cm4gZVt0XX0pKX0sZS5hcHBlbmRNYW55PWZ1bmN0aW9uKGUsbil7aWYoIjEuNyI9PT10LmZuLmpxdWVyeS5zdWJzdHIoMCwzKSl7dmFyIGk9dCgpO3QubWFwKG4sKGZ1bmN0aW9uKHQpe2k9aS5hZGQodCl9KSksbj1pfWUuYXBwZW5kKG4pfSxlLl9fY2FjaGU9e307dmFyIHI9MDtyZXR1cm4gZS5HZXRVbmlxdWVFbGVtZW50SWQ9ZnVuY3Rpb24odCl7dmFyIGU9dC5nZXRBdHRyaWJ1dGUoImRhdGEtc2VsZWN0Mi1pZCIpO3JldHVybiBudWxsPT1lJiYodC5pZD8oZT10LmlkLHQuc2V0QXR0cmlidXRlKCJkYXRhLXNlbGVjdDItaWQiLGUpKToodC5zZXRBdHRyaWJ1dGUoImRhdGEtc2VsZWN0Mi1pZCIsKytyKSxlPXIudG9TdHJpbmcoKSkpLGV9LGUuU3RvcmVEYXRhPWZ1bmN0aW9uKHQsbixpKXt2YXIgcj1lLkdldFVuaXF1ZUVsZW1lbnRJZCh0KTtlLl9fY2FjaGVbcl18fChlLl9fY2FjaGVbcl09e30pLGUuX19jYWNoZVtyXVtuXT1pfSxlLkdldERhdGE9ZnVuY3Rpb24obixpKXt2YXIgcj1lLkdldFVuaXF1ZUVsZW1lbnRJZChuKTtyZXR1cm4gaT9lLl9fY2FjaGVbcl0mJm51bGwhPWUuX19jYWNoZVtyXVtpXT9lLl9fY2FjaGVbcl1baV06dChuKS5kYXRhKGkpOmUuX19jYWNoZVtyXX0sZS5SZW1vdmVEYXRhPWZ1bmN0aW9uKHQpe3ZhciBuPWUuR2V0VW5pcXVlRWxlbWVudElkKHQpO251bGwhPWUuX19jYWNoZVtuXSYmZGVsZXRlIGUuX19jYWNoZVtuXSx0LnJlbW92ZUF0dHJpYnV0ZSgiZGF0YS1zZWxlY3QyLWlkIil9LGV9KSksZS5kZWZpbmUoInNlbGVjdDIvcmVzdWx0cyIsWyJqcXVlcnkiLCIuL3V0aWxzIl0sKGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbih0LGUsaSl7dGhpcy4kZWxlbWVudD10LHRoaXMuZGF0YT1pLHRoaXMub3B0aW9ucz1lLG4uX19zdXBlcl9fLmNvbnN0cnVjdG9yLmNhbGwodGhpcyl9cmV0dXJuIGUuRXh0ZW5kKG4sZS5PYnNlcnZhYmxlKSxuLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgZT10KCc8dWwgY2xhc3M9InNlbGVjdDItcmVzdWx0c19fb3B0aW9ucyIgcm9sZT0ibGlzdGJveCI+PC91bD4nKTtyZXR1cm4gdGhpcy5vcHRpb25zLmdldCgibXVsdGlwbGUiKSYmZS5hdHRyKCJhcmlhLW11bHRpc2VsZWN0YWJsZSIsInRydWUiKSx0aGlzLiRyZXN1bHRzPWV9LG4ucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy4kcmVzdWx0cy5lbXB0eSgpfSxuLnByb3RvdHlwZS5kaXNwbGF5TWVzc2FnZT1mdW5jdGlvbihlKXt2YXIgbj10aGlzLm9wdGlvbnMuZ2V0KCJlc2NhcGVNYXJrdXAiKTt0aGlzLmNsZWFyKCksdGhpcy5oaWRlTG9hZGluZygpO3ZhciBpPXQoJzxsaSByb2xlPSJhbGVydCIgYXJpYS1saXZlPSJhc3NlcnRpdmUiIGNsYXNzPSJzZWxlY3QyLXJlc3VsdHNfX29wdGlvbiI+PC9saT4nKSxyPXRoaXMub3B0aW9ucy5nZXQoInRyYW5zbGF0aW9ucyIpLmdldChlLm1lc3NhZ2UpO2kuYXBwZW5kKG4ocihlLmFyZ3MpKSksaVswXS5jbGFzc05hbWUrPSIgc2VsZWN0Mi1yZXN1bHRzX19tZXNzYWdlIix0aGlzLiRyZXN1bHRzLmFwcGVuZChpKX0sbi5wcm90b3R5cGUuaGlkZU1lc3NhZ2VzPWZ1bmN0aW9uKCl7dGhpcy4kcmVzdWx0cy5maW5kKCIuc2VsZWN0Mi1yZXN1bHRzX19tZXNzYWdlIikucmVtb3ZlKCl9LG4ucHJvdG90eXBlLmFwcGVuZD1mdW5jdGlvbih0KXt0aGlzLmhpZGVMb2FkaW5nKCk7dmFyIGU9W107aWYobnVsbCE9dC5yZXN1bHRzJiYwIT09dC5yZXN1bHRzLmxlbmd0aCl7dC5yZXN1bHRzPXRoaXMuc29ydCh0LnJlc3VsdHMpO2Zvcih2YXIgbj0wO248dC5yZXN1bHRzLmxlbmd0aDtuKyspe3ZhciBpPXQucmVzdWx0c1tuXSxyPXRoaXMub3B0aW9uKGkpO2UucHVzaChyKX10aGlzLiRyZXN1bHRzLmFwcGVuZChlKX1lbHNlIDA9PT10aGlzLiRyZXN1bHRzLmNoaWxkcmVuKCkubGVuZ3RoJiZ0aGlzLnRyaWdnZXIoInJlc3VsdHM6bWVzc2FnZSIse21lc3NhZ2U6Im5vUmVzdWx0cyJ9KX0sbi5wcm90b3R5cGUucG9zaXRpb249ZnVuY3Rpb24odCxlKXtlLmZpbmQoIi5zZWxlY3QyLXJlc3VsdHMiKS5hcHBlbmQodCl9LG4ucHJvdG90eXBlLnNvcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMub3B0aW9ucy5nZXQoInNvcnRlciIpKHQpfSxuLnByb3RvdHlwZS5oaWdobGlnaHRGaXJzdEl0ZW09ZnVuY3Rpb24oKXt2YXIgdD10aGlzLiRyZXN1bHRzLmZpbmQoIi5zZWxlY3QyLXJlc3VsdHNfX29wdGlvblthcmlhLXNlbGVjdGVkXSIpLGU9dC5maWx0ZXIoIlthcmlhLXNlbGVjdGVkPXRydWVdIik7MDxlLmxlbmd0aD9lLmZpcnN0KCkudHJpZ2dlcigibW91c2VlbnRlciIpOnQuZmlyc3QoKS50cmlnZ2VyKCJtb3VzZWVudGVyIiksdGhpcy5lbnN1cmVIaWdobGlnaHRWaXNpYmxlKCl9LG4ucHJvdG90eXBlLnNldENsYXNzZXM9ZnVuY3Rpb24oKXt2YXIgbj10aGlzO3RoaXMuZGF0YS5jdXJyZW50KChmdW5jdGlvbihpKXt2YXIgcj10Lm1hcChpLChmdW5jdGlvbih0KXtyZXR1cm4gdC5pZC50b1N0cmluZygpfSkpO24uJHJlc3VsdHMuZmluZCgiLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uW2FyaWEtc2VsZWN0ZWRdIikuZWFjaCgoZnVuY3Rpb24oKXt2YXIgbj10KHRoaXMpLGk9ZS5HZXREYXRhKHRoaXMsImRhdGEiKSxvPSIiK2kuaWQ7bnVsbCE9aS5lbGVtZW50JiZpLmVsZW1lbnQuc2VsZWN0ZWR8fG51bGw9PWkuZWxlbWVudCYmLTE8dC5pbkFycmF5KG8scik/bi5hdHRyKCJhcmlhLXNlbGVjdGVkIiwidHJ1ZSIpOm4uYXR0cigiYXJpYS1zZWxlY3RlZCIsImZhbHNlIil9KSl9KSl9LG4ucHJvdG90eXBlLnNob3dMb2FkaW5nPWZ1bmN0aW9uKHQpe3RoaXMuaGlkZUxvYWRpbmcoKTt2YXIgZT17ZGlzYWJsZWQ6ITAsbG9hZGluZzohMCx0ZXh0OnRoaXMub3B0aW9ucy5nZXQoInRyYW5zbGF0aW9ucyIpLmdldCgic2VhcmNoaW5nIikodCl9LG49dGhpcy5vcHRpb24oZSk7bi5jbGFzc05hbWUrPSIgbG9hZGluZy1yZXN1bHRzIix0aGlzLiRyZXN1bHRzLnByZXBlbmQobil9LG4ucHJvdG90eXBlLmhpZGVMb2FkaW5nPWZ1bmN0aW9uKCl7dGhpcy4kcmVzdWx0cy5maW5kKCIubG9hZGluZy1yZXN1bHRzIikucmVtb3ZlKCl9LG4ucHJvdG90eXBlLm9wdGlvbj1mdW5jdGlvbihuKXt2YXIgaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpO2kuY2xhc3NOYW1lPSJzZWxlY3QyLXJlc3VsdHNfX29wdGlvbiI7dmFyIHI9e3JvbGU6Im9wdGlvbiIsImFyaWEtc2VsZWN0ZWQiOiJmYWxzZSJ9LG89d2luZG93LkVsZW1lbnQucHJvdG90eXBlLm1hdGNoZXN8fHdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5tc01hdGNoZXNTZWxlY3Rvcnx8d2luZG93LkVsZW1lbnQucHJvdG90eXBlLndlYmtpdE1hdGNoZXNTZWxlY3Rvcjtmb3IodmFyIGEgaW4obnVsbCE9bi5lbGVtZW50JiZvLmNhbGwobi5lbGVtZW50LCI6ZGlzYWJsZWQiKXx8bnVsbD09bi5lbGVtZW50JiZuLmRpc2FibGVkKSYmKGRlbGV0ZSByWyJhcmlhLXNlbGVjdGVkIl0sclsiYXJpYS1kaXNhYmxlZCJdPSJ0cnVlIiksbnVsbD09bi5pZCYmZGVsZXRlIHJbImFyaWEtc2VsZWN0ZWQiXSxudWxsIT1uLl9yZXN1bHRJZCYmKGkuaWQ9bi5fcmVzdWx0SWQpLG4udGl0bGUmJihpLnRpdGxlPW4udGl0bGUpLG4uY2hpbGRyZW4mJihyLnJvbGU9Imdyb3VwIixyWyJhcmlhLWxhYmVsIl09bi50ZXh0LGRlbGV0ZSByWyJhcmlhLXNlbGVjdGVkIl0pLHIpe3ZhciBzPXJbYV07aS5zZXRBdHRyaWJ1dGUoYSxzKX1pZihuLmNoaWxkcmVuKXt2YXIgbD10KGkpLGM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3Ryb25nIik7Yy5jbGFzc05hbWU9InNlbGVjdDItcmVzdWx0c19fZ3JvdXAiLHQoYyksdGhpcy50ZW1wbGF0ZShuLGMpO2Zvcih2YXIgdT1bXSxkPTA7ZDxuLmNoaWxkcmVuLmxlbmd0aDtkKyspe3ZhciBoPW4uY2hpbGRyZW5bZF0sZj10aGlzLm9wdGlvbihoKTt1LnB1c2goZil9dmFyIHA9dCgiPHVsPjwvdWw+Iix7Y2xhc3M6InNlbGVjdDItcmVzdWx0c19fb3B0aW9ucyBzZWxlY3QyLXJlc3VsdHNfX29wdGlvbnMtLW5lc3RlZCJ9KTtwLmFwcGVuZCh1KSxsLmFwcGVuZChjKSxsLmFwcGVuZChwKX1lbHNlIHRoaXMudGVtcGxhdGUobixpKTtyZXR1cm4gZS5TdG9yZURhdGEoaSwiZGF0YSIsbiksaX0sbi5wcm90b3R5cGUuYmluZD1mdW5jdGlvbihuLGkpe3ZhciByPXRoaXMsbz1uLmlkKyItcmVzdWx0cyI7dGhpcy4kcmVzdWx0cy5hdHRyKCJpZCIsbyksbi5vbigicmVzdWx0czphbGwiLChmdW5jdGlvbih0KXtyLmNsZWFyKCksci5hcHBlbmQodC5kYXRhKSxuLmlzT3BlbigpJiYoci5zZXRDbGFzc2VzKCksci5oaWdobGlnaHRGaXJzdEl0ZW0oKSl9KSksbi5vbigicmVzdWx0czphcHBlbmQiLChmdW5jdGlvbih0KXtyLmFwcGVuZCh0LmRhdGEpLG4uaXNPcGVuKCkmJnIuc2V0Q2xhc3NlcygpfSkpLG4ub24oInF1ZXJ5IiwoZnVuY3Rpb24odCl7ci5oaWRlTWVzc2FnZXMoKSxyLnNob3dMb2FkaW5nKHQpfSkpLG4ub24oInNlbGVjdCIsKGZ1bmN0aW9uKCl7bi5pc09wZW4oKSYmKHIuc2V0Q2xhc3NlcygpLHIub3B0aW9ucy5nZXQoInNjcm9sbEFmdGVyU2VsZWN0IikmJnIuaGlnaGxpZ2h0Rmlyc3RJdGVtKCkpfSkpLG4ub24oInVuc2VsZWN0IiwoZnVuY3Rpb24oKXtuLmlzT3BlbigpJiYoci5zZXRDbGFzc2VzKCksci5vcHRpb25zLmdldCgic2Nyb2xsQWZ0ZXJTZWxlY3QiKSYmci5oaWdobGlnaHRGaXJzdEl0ZW0oKSl9KSksbi5vbigib3BlbiIsKGZ1bmN0aW9uKCl7ci4kcmVzdWx0cy5hdHRyKCJhcmlhLWV4cGFuZGVkIiwidHJ1ZSIpLHIuJHJlc3VsdHMuYXR0cigiYXJpYS1oaWRkZW4iLCJmYWxzZSIpLHIuc2V0Q2xhc3NlcygpLHIuZW5zdXJlSGlnaGxpZ2h0VmlzaWJsZSgpfSkpLG4ub24oImNsb3NlIiwoZnVuY3Rpb24oKXtyLiRyZXN1bHRzLmF0dHIoImFyaWEtZXhwYW5kZWQiLCJmYWxzZSIpLHIuJHJlc3VsdHMuYXR0cigiYXJpYS1oaWRkZW4iLCJ0cnVlIiksci4kcmVzdWx0cy5yZW1vdmVBdHRyKCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiKX0pKSxuLm9uKCJyZXN1bHRzOnRvZ2dsZSIsKGZ1bmN0aW9uKCl7dmFyIHQ9ci5nZXRIaWdobGlnaHRlZFJlc3VsdHMoKTswIT09dC5sZW5ndGgmJnQudHJpZ2dlcigibW91c2V1cCIpfSkpLG4ub24oInJlc3VsdHM6c2VsZWN0IiwoZnVuY3Rpb24oKXt2YXIgdD1yLmdldEhpZ2hsaWdodGVkUmVzdWx0cygpO2lmKDAhPT10Lmxlbmd0aCl7dmFyIG49ZS5HZXREYXRhKHRbMF0sImRhdGEiKTsidHJ1ZSI9PXQuYXR0cigiYXJpYS1zZWxlY3RlZCIpP3IudHJpZ2dlcigiY2xvc2UiLHt9KTpyLnRyaWdnZXIoInNlbGVjdCIse2RhdGE6bn0pfX0pKSxuLm9uKCJyZXN1bHRzOnByZXZpb3VzIiwoZnVuY3Rpb24oKXt2YXIgdD1yLmdldEhpZ2hsaWdodGVkUmVzdWx0cygpLGU9ci4kcmVzdWx0cy5maW5kKCJbYXJpYS1zZWxlY3RlZF0iKSxuPWUuaW5kZXgodCk7aWYoIShuPD0wKSl7dmFyIGk9bi0xOzA9PT10Lmxlbmd0aCYmKGk9MCk7dmFyIG89ZS5lcShpKTtvLnRyaWdnZXIoIm1vdXNlZW50ZXIiKTt2YXIgYT1yLiRyZXN1bHRzLm9mZnNldCgpLnRvcCxzPW8ub2Zmc2V0KCkudG9wLGw9ci4kcmVzdWx0cy5zY3JvbGxUb3AoKSsocy1hKTswPT09aT9yLiRyZXN1bHRzLnNjcm9sbFRvcCgwKTpzLWE8MCYmci4kcmVzdWx0cy5zY3JvbGxUb3AobCl9fSkpLG4ub24oInJlc3VsdHM6bmV4dCIsKGZ1bmN0aW9uKCl7dmFyIHQ9ci5nZXRIaWdobGlnaHRlZFJlc3VsdHMoKSxlPXIuJHJlc3VsdHMuZmluZCgiW2FyaWEtc2VsZWN0ZWRdIiksbj1lLmluZGV4KHQpKzE7aWYoIShuPj1lLmxlbmd0aCkpe3ZhciBpPWUuZXEobik7aS50cmlnZ2VyKCJtb3VzZWVudGVyIik7dmFyIG89ci4kcmVzdWx0cy5vZmZzZXQoKS50b3Arci4kcmVzdWx0cy5vdXRlckhlaWdodCghMSksYT1pLm9mZnNldCgpLnRvcCtpLm91dGVySGVpZ2h0KCExKSxzPXIuJHJlc3VsdHMuc2Nyb2xsVG9wKCkrYS1vOzA9PT1uP3IuJHJlc3VsdHMuc2Nyb2xsVG9wKDApOm88YSYmci4kcmVzdWx0cy5zY3JvbGxUb3Aocyl9fSkpLG4ub24oInJlc3VsdHM6Zm9jdXMiLChmdW5jdGlvbih0KXt0LmVsZW1lbnQuYWRkQ2xhc3MoInNlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1oaWdobGlnaHRlZCIpfSkpLG4ub24oInJlc3VsdHM6bWVzc2FnZSIsKGZ1bmN0aW9uKHQpe3IuZGlzcGxheU1lc3NhZ2UodCl9KSksdC5mbi5tb3VzZXdoZWVsJiZ0aGlzLiRyZXN1bHRzLm9uKCJtb3VzZXdoZWVsIiwoZnVuY3Rpb24odCl7dmFyIGU9ci4kcmVzdWx0cy5zY3JvbGxUb3AoKSxuPXIuJHJlc3VsdHMuZ2V0KDApLnNjcm9sbEhlaWdodC1lK3QuZGVsdGFZLGk9MDx0LmRlbHRhWSYmZS10LmRlbHRhWTw9MCxvPXQuZGVsdGFZPDAmJm48PXIuJHJlc3VsdHMuaGVpZ2h0KCk7aT8oci4kcmVzdWx0cy5zY3JvbGxUb3AoMCksdC5wcmV2ZW50RGVmYXVsdCgpLHQuc3RvcFByb3BhZ2F0aW9uKCkpOm8mJihyLiRyZXN1bHRzLnNjcm9sbFRvcChyLiRyZXN1bHRzLmdldCgwKS5zY3JvbGxIZWlnaHQtci4kcmVzdWx0cy5oZWlnaHQoKSksdC5wcmV2ZW50RGVmYXVsdCgpLHQuc3RvcFByb3BhZ2F0aW9uKCkpfSkpLHRoaXMuJHJlc3VsdHMub24oIm1vdXNldXAiLCIuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb25bYXJpYS1zZWxlY3RlZF0iLChmdW5jdGlvbihuKXt2YXIgaT10KHRoaXMpLG89ZS5HZXREYXRhKHRoaXMsImRhdGEiKTsidHJ1ZSIhPT1pLmF0dHIoImFyaWEtc2VsZWN0ZWQiKT9yLnRyaWdnZXIoInNlbGVjdCIse29yaWdpbmFsRXZlbnQ6bixkYXRhOm99KTpyLm9wdGlvbnMuZ2V0KCJtdWx0aXBsZSIpP3IudHJpZ2dlcigidW5zZWxlY3QiLHtvcmlnaW5hbEV2ZW50Om4sZGF0YTpvfSk6ci50cmlnZ2VyKCJjbG9zZSIse30pfSkpLHRoaXMuJHJlc3VsdHMub24oIm1vdXNlZW50ZXIiLCIuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb25bYXJpYS1zZWxlY3RlZF0iLChmdW5jdGlvbihuKXt2YXIgaT1lLkdldERhdGEodGhpcywiZGF0YSIpO3IuZ2V0SGlnaGxpZ2h0ZWRSZXN1bHRzKCkucmVtb3ZlQ2xhc3MoInNlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1oaWdobGlnaHRlZCIpLHIudHJpZ2dlcigicmVzdWx0czpmb2N1cyIse2RhdGE6aSxlbGVtZW50OnQodGhpcyl9KX0pKX0sbi5wcm90b3R5cGUuZ2V0SGlnaGxpZ2h0ZWRSZXN1bHRzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHJlc3VsdHMuZmluZCgiLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1oaWdobGlnaHRlZCIpfSxuLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7dGhpcy4kcmVzdWx0cy5yZW1vdmUoKX0sbi5wcm90b3R5cGUuZW5zdXJlSGlnaGxpZ2h0VmlzaWJsZT1mdW5jdGlvbigpe3ZhciB0PXRoaXMuZ2V0SGlnaGxpZ2h0ZWRSZXN1bHRzKCk7aWYoMCE9PXQubGVuZ3RoKXt2YXIgZT10aGlzLiRyZXN1bHRzLmZpbmQoIlthcmlhLXNlbGVjdGVkXSIpLmluZGV4KHQpLG49dGhpcy4kcmVzdWx0cy5vZmZzZXQoKS50b3AsaT10Lm9mZnNldCgpLnRvcCxyPXRoaXMuJHJlc3VsdHMuc2Nyb2xsVG9wKCkrKGktbiksbz1pLW47ci09Mip0Lm91dGVySGVpZ2h0KCExKSxlPD0yP3RoaXMuJHJlc3VsdHMuc2Nyb2xsVG9wKDApOihvPnRoaXMuJHJlc3VsdHMub3V0ZXJIZWlnaHQoKXx8bzwwKSYmdGhpcy4kcmVzdWx0cy5zY3JvbGxUb3Aocil9fSxuLnByb3RvdHlwZS50ZW1wbGF0ZT1mdW5jdGlvbihlLG4pe3ZhciBpPXRoaXMub3B0aW9ucy5nZXQoInRlbXBsYXRlUmVzdWx0Iikscj10aGlzLm9wdGlvbnMuZ2V0KCJlc2NhcGVNYXJrdXAiKSxvPWkoZSxuKTtudWxsPT1vP24uc3R5bGUuZGlzcGxheT0ibm9uZSI6InN0cmluZyI9PXR5cGVvZiBvP24uaW5uZXJIVE1MPXIobyk6dChuKS5hcHBlbmQobyl9LG59KSksZS5kZWZpbmUoInNlbGVjdDIva2V5cyIsW10sKGZ1bmN0aW9uKCl7cmV0dXJue0JBQ0tTUEFDRTo4LFRBQjo5LEVOVEVSOjEzLFNISUZUOjE2LENUUkw6MTcsQUxUOjE4LEVTQzoyNyxTUEFDRTozMixQQUdFX1VQOjMzLFBBR0VfRE9XTjozNCxFTkQ6MzUsSE9NRTozNixMRUZUOjM3LFVQOjM4LFJJR0hUOjM5LERPV046NDAsREVMRVRFOjQ2fX0pKSxlLmRlZmluZSgic2VsZWN0Mi9zZWxlY3Rpb24vYmFzZSIsWyJqcXVlcnkiLCIuLi91dGlscyIsIi4uL2tleXMiXSwoZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIGkodCxlKXt0aGlzLiRlbGVtZW50PXQsdGhpcy5vcHRpb25zPWUsaS5fX3N1cGVyX18uY29uc3RydWN0b3IuY2FsbCh0aGlzKX1yZXR1cm4gZS5FeHRlbmQoaSxlLk9ic2VydmFibGUpLGkucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBuPXQoJzxzcGFuIGNsYXNzPSJzZWxlY3QyLXNlbGVjdGlvbiIgcm9sZT0iY29tYm9ib3giICBhcmlhLWhhc3BvcHVwPSJ0cnVlIiBhcmlhLWV4cGFuZGVkPSJmYWxzZSI+PC9zcGFuPicpO3JldHVybiB0aGlzLl90YWJpbmRleD0wLG51bGwhPWUuR2V0RGF0YSh0aGlzLiRlbGVtZW50WzBdLCJvbGQtdGFiaW5kZXgiKT90aGlzLl90YWJpbmRleD1lLkdldERhdGEodGhpcy4kZWxlbWVudFswXSwib2xkLXRhYmluZGV4Iik6bnVsbCE9dGhpcy4kZWxlbWVudC5hdHRyKCJ0YWJpbmRleCIpJiYodGhpcy5fdGFiaW5kZXg9dGhpcy4kZWxlbWVudC5hdHRyKCJ0YWJpbmRleCIpKSxuLmF0dHIoInRpdGxlIix0aGlzLiRlbGVtZW50LmF0dHIoInRpdGxlIikpLG4uYXR0cigidGFiaW5kZXgiLHRoaXMuX3RhYmluZGV4KSxuLmF0dHIoImFyaWEtZGlzYWJsZWQiLCJmYWxzZSIpLHRoaXMuJHNlbGVjdGlvbj1ufSxpLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcyxyPXQuaWQrIi1yZXN1bHRzIjt0aGlzLmNvbnRhaW5lcj10LHRoaXMuJHNlbGVjdGlvbi5vbigiZm9jdXMiLChmdW5jdGlvbih0KXtpLnRyaWdnZXIoImZvY3VzIix0KX0pKSx0aGlzLiRzZWxlY3Rpb24ub24oImJsdXIiLChmdW5jdGlvbih0KXtpLl9oYW5kbGVCbHVyKHQpfSkpLHRoaXMuJHNlbGVjdGlvbi5vbigia2V5ZG93biIsKGZ1bmN0aW9uKHQpe2kudHJpZ2dlcigia2V5cHJlc3MiLHQpLHQud2hpY2g9PT1uLlNQQUNFJiZ0LnByZXZlbnREZWZhdWx0KCl9KSksdC5vbigicmVzdWx0czpmb2N1cyIsKGZ1bmN0aW9uKHQpe2kuJHNlbGVjdGlvbi5hdHRyKCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiLHQuZGF0YS5fcmVzdWx0SWQpfSkpLHQub24oInNlbGVjdGlvbjp1cGRhdGUiLChmdW5jdGlvbih0KXtpLnVwZGF0ZSh0LmRhdGEpfSkpLHQub24oIm9wZW4iLChmdW5jdGlvbigpe2kuJHNlbGVjdGlvbi5hdHRyKCJhcmlhLWV4cGFuZGVkIiwidHJ1ZSIpLGkuJHNlbGVjdGlvbi5hdHRyKCJhcmlhLW93bnMiLHIpLGkuX2F0dGFjaENsb3NlSGFuZGxlcih0KX0pKSx0Lm9uKCJjbG9zZSIsKGZ1bmN0aW9uKCl7aS4kc2VsZWN0aW9uLmF0dHIoImFyaWEtZXhwYW5kZWQiLCJmYWxzZSIpLGkuJHNlbGVjdGlvbi5yZW1vdmVBdHRyKCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiKSxpLiRzZWxlY3Rpb24ucmVtb3ZlQXR0cigiYXJpYS1vd25zIiksaS4kc2VsZWN0aW9uLnRyaWdnZXIoImZvY3VzIiksaS5fZGV0YWNoQ2xvc2VIYW5kbGVyKHQpfSkpLHQub24oImVuYWJsZSIsKGZ1bmN0aW9uKCl7aS4kc2VsZWN0aW9uLmF0dHIoInRhYmluZGV4IixpLl90YWJpbmRleCksaS4kc2VsZWN0aW9uLmF0dHIoImFyaWEtZGlzYWJsZWQiLCJmYWxzZSIpfSkpLHQub24oImRpc2FibGUiLChmdW5jdGlvbigpe2kuJHNlbGVjdGlvbi5hdHRyKCJ0YWJpbmRleCIsIi0xIiksaS4kc2VsZWN0aW9uLmF0dHIoImFyaWEtZGlzYWJsZWQiLCJ0cnVlIil9KSl9LGkucHJvdG90eXBlLl9oYW5kbGVCbHVyPWZ1bmN0aW9uKGUpe3ZhciBuPXRoaXM7d2luZG93LnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZG9jdW1lbnQuYWN0aXZlRWxlbWVudD09bi4kc2VsZWN0aW9uWzBdfHx0LmNvbnRhaW5zKG4uJHNlbGVjdGlvblswXSxkb2N1bWVudC5hY3RpdmVFbGVtZW50KXx8bi50cmlnZ2VyKCJibHVyIixlKX0pLDEpfSxpLnByb3RvdHlwZS5fYXR0YWNoQ2xvc2VIYW5kbGVyPWZ1bmN0aW9uKG4pe3QoZG9jdW1lbnQuYm9keSkub24oIm1vdXNlZG93bi5zZWxlY3QyLiIrbi5pZCwoZnVuY3Rpb24obil7dmFyIGk9dChuLnRhcmdldCkuY2xvc2VzdCgiLnNlbGVjdDIiKTt0KCIuc2VsZWN0Mi5zZWxlY3QyLWNvbnRhaW5lci0tb3BlbiIpLmVhY2goKGZ1bmN0aW9uKCl7dGhpcyE9aVswXSYmZS5HZXREYXRhKHRoaXMsImVsZW1lbnQiKS5zZWxlY3QyKCJjbG9zZSIpfSkpfSkpfSxpLnByb3RvdHlwZS5fZGV0YWNoQ2xvc2VIYW5kbGVyPWZ1bmN0aW9uKGUpe3QoZG9jdW1lbnQuYm9keSkub2ZmKCJtb3VzZWRvd24uc2VsZWN0Mi4iK2UuaWQpfSxpLnByb3RvdHlwZS5wb3NpdGlvbj1mdW5jdGlvbih0LGUpe2UuZmluZCgiLnNlbGVjdGlvbiIpLmFwcGVuZCh0KX0saS5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMuX2RldGFjaENsb3NlSGFuZGxlcih0aGlzLmNvbnRhaW5lcil9LGkucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbih0KXt0aHJvdyBuZXcgRXJyb3IoIlRoZSBgdXBkYXRlYCBtZXRob2QgbXVzdCBiZSBkZWZpbmVkIGluIGNoaWxkIGNsYXNzZXMuIil9LGkucHJvdG90eXBlLmlzRW5hYmxlZD1mdW5jdGlvbigpe3JldHVybiF0aGlzLmlzRGlzYWJsZWQoKX0saS5wcm90b3R5cGUuaXNEaXNhYmxlZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdGlvbnMuZ2V0KCJkaXNhYmxlZCIpfSxpfSkpLGUuZGVmaW5lKCJzZWxlY3QyL3NlbGVjdGlvbi9zaW5nbGUiLFsianF1ZXJ5IiwiLi9iYXNlIiwiLi4vdXRpbHMiLCIuLi9rZXlzIl0sKGZ1bmN0aW9uKHQsZSxuLGkpe2Z1bmN0aW9uIHIoKXtyLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIG4uRXh0ZW5kKHIsZSksci5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7dmFyIHQ9ci5fX3N1cGVyX18ucmVuZGVyLmNhbGwodGhpcyk7cmV0dXJuIHQuYWRkQ2xhc3MoInNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUiKSx0Lmh0bWwoJzxzcGFuIGNsYXNzPSJzZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQiPjwvc3Bhbj48c3BhbiBjbGFzcz0ic2VsZWN0Mi1zZWxlY3Rpb25fX2Fycm93IiByb2xlPSJwcmVzZW50YXRpb24iPjxiIHJvbGU9InByZXNlbnRhdGlvbiI+PC9iPjwvc3Bhbj4nKSx0fSxyLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcztyLl9fc3VwZXJfXy5iaW5kLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt2YXIgaT10LmlkKyItY29udGFpbmVyIjt0aGlzLiRzZWxlY3Rpb24uZmluZCgiLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCIpLmF0dHIoImlkIixpKS5hdHRyKCJyb2xlIiwidGV4dGJveCIpLmF0dHIoImFyaWEtcmVhZG9ubHkiLCJ0cnVlIiksdGhpcy4kc2VsZWN0aW9uLmF0dHIoImFyaWEtbGFiZWxsZWRieSIsaSksdGhpcy4kc2VsZWN0aW9uLm9uKCJtb3VzZWRvd24iLChmdW5jdGlvbih0KXsxPT09dC53aGljaCYmbi50cmlnZ2VyKCJ0b2dnbGUiLHtvcmlnaW5hbEV2ZW50OnR9KX0pKSx0aGlzLiRzZWxlY3Rpb24ub24oImZvY3VzIiwoZnVuY3Rpb24odCl7fSkpLHRoaXMuJHNlbGVjdGlvbi5vbigiYmx1ciIsKGZ1bmN0aW9uKHQpe30pKSx0Lm9uKCJmb2N1cyIsKGZ1bmN0aW9uKGUpe3QuaXNPcGVuKCl8fG4uJHNlbGVjdGlvbi50cmlnZ2VyKCJmb2N1cyIpfSkpfSxyLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3ZhciB0PXRoaXMuJHNlbGVjdGlvbi5maW5kKCIuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkIik7dC5lbXB0eSgpLHQucmVtb3ZlQXR0cigidGl0bGUiKX0sci5wcm90b3R5cGUuZGlzcGxheT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMub3B0aW9ucy5nZXQoInRlbXBsYXRlU2VsZWN0aW9uIik7cmV0dXJuIHRoaXMub3B0aW9ucy5nZXQoImVzY2FwZU1hcmt1cCIpKG4odCxlKSl9LHIucHJvdG90eXBlLnNlbGVjdGlvbkNvbnRhaW5lcj1mdW5jdGlvbigpe3JldHVybiB0KCI8c3Bhbj48L3NwYW4+Iil9LHIucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbih0KXtpZigwIT09dC5sZW5ndGgpe3ZhciBlPXRbMF0sbj10aGlzLiRzZWxlY3Rpb24uZmluZCgiLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCIpLGk9dGhpcy5kaXNwbGF5KGUsbik7bi5lbXB0eSgpLmFwcGVuZChpKTt2YXIgcj1lLnRpdGxlfHxlLnRleHQ7cj9uLmF0dHIoInRpdGxlIixyKTpuLnJlbW92ZUF0dHIoInRpdGxlIil9ZWxzZSB0aGlzLmNsZWFyKCl9LHJ9KSksZS5kZWZpbmUoInNlbGVjdDIvc2VsZWN0aW9uL211bHRpcGxlIixbImpxdWVyeSIsIi4vYmFzZSIsIi4uL3V0aWxzIl0sKGZ1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiBpKHQsZSl7aS5fX3N1cGVyX18uY29uc3RydWN0b3IuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBuLkV4dGVuZChpLGUpLGkucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3ZhciB0PWkuX19zdXBlcl9fLnJlbmRlci5jYWxsKHRoaXMpO3JldHVybiB0LmFkZENsYXNzKCJzZWxlY3QyLXNlbGVjdGlvbi0tbXVsdGlwbGUiKSx0Lmh0bWwoJzx1bCBjbGFzcz0ic2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkIj48L3VsPicpLHR9LGkucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24oZSxyKXt2YXIgbz10aGlzO2kuX19zdXBlcl9fLmJpbmQuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMuJHNlbGVjdGlvbi5vbigiY2xpY2siLChmdW5jdGlvbih0KXtvLnRyaWdnZXIoInRvZ2dsZSIse29yaWdpbmFsRXZlbnQ6dH0pfSkpLHRoaXMuJHNlbGVjdGlvbi5vbigiY2xpY2siLCIuc2VsZWN0Mi1zZWxlY3Rpb25fX2Nob2ljZV9fcmVtb3ZlIiwoZnVuY3Rpb24oZSl7aWYoIW8uaXNEaXNhYmxlZCgpKXt2YXIgaT10KHRoaXMpLnBhcmVudCgpLHI9bi5HZXREYXRhKGlbMF0sImRhdGEiKTtvLnRyaWdnZXIoInVuc2VsZWN0Iix7b3JpZ2luYWxFdmVudDplLGRhdGE6cn0pfX0pKX0saS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLiRzZWxlY3Rpb24uZmluZCgiLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCIpO3QuZW1wdHkoKSx0LnJlbW92ZUF0dHIoInRpdGxlIil9LGkucHJvdG90eXBlLmRpc3BsYXk9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLm9wdGlvbnMuZ2V0KCJ0ZW1wbGF0ZVNlbGVjdGlvbiIpO3JldHVybiB0aGlzLm9wdGlvbnMuZ2V0KCJlc2NhcGVNYXJrdXAiKShuKHQsZSkpfSxpLnByb3RvdHlwZS5zZWxlY3Rpb25Db250YWluZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdCgnPGxpIGNsYXNzPSJzZWxlY3QyLXNlbGVjdGlvbl9fY2hvaWNlIj48c3BhbiBjbGFzcz0ic2VsZWN0Mi1zZWxlY3Rpb25fX2Nob2ljZV9fcmVtb3ZlIiByb2xlPSJwcmVzZW50YXRpb24iPiZ0aW1lczs8L3NwYW4+PC9saT4nKX0saS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKHQpe2lmKHRoaXMuY2xlYXIoKSwwIT09dC5sZW5ndGgpe2Zvcih2YXIgZT1bXSxpPTA7aTx0Lmxlbmd0aDtpKyspe3ZhciByPXRbaV0sbz10aGlzLnNlbGVjdGlvbkNvbnRhaW5lcigpLGE9dGhpcy5kaXNwbGF5KHIsbyk7by5hcHBlbmQoYSk7dmFyIHM9ci50aXRsZXx8ci50ZXh0O3MmJm8uYXR0cigidGl0bGUiLHMpLG4uU3RvcmVEYXRhKG9bMF0sImRhdGEiLHIpLGUucHVzaChvKX12YXIgbD10aGlzLiRzZWxlY3Rpb24uZmluZCgiLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCIpO24uYXBwZW5kTWFueShsLGUpfX0saX0pKSxlLmRlZmluZSgic2VsZWN0Mi9zZWxlY3Rpb24vcGxhY2Vob2xkZXIiLFsiLi4vdXRpbHMiXSwoZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSh0LGUsbil7dGhpcy5wbGFjZWhvbGRlcj10aGlzLm5vcm1hbGl6ZVBsYWNlaG9sZGVyKG4uZ2V0KCJwbGFjZWhvbGRlciIpKSx0LmNhbGwodGhpcyxlLG4pfXJldHVybiBlLnByb3RvdHlwZS5ub3JtYWxpemVQbGFjZWhvbGRlcj1mdW5jdGlvbih0LGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZSYmKGU9e2lkOiIiLHRleHQ6ZX0pLGV9LGUucHJvdG90eXBlLmNyZWF0ZVBsYWNlaG9sZGVyPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5zZWxlY3Rpb25Db250YWluZXIoKTtyZXR1cm4gbi5odG1sKHRoaXMuZGlzcGxheShlKSksbi5hZGRDbGFzcygic2VsZWN0Mi1zZWxlY3Rpb25fX3BsYWNlaG9sZGVyIikucmVtb3ZlQ2xhc3MoInNlbGVjdDItc2VsZWN0aW9uX19jaG9pY2UiKSxufSxlLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24odCxlKXt2YXIgbj0xPT1lLmxlbmd0aCYmZVswXS5pZCE9dGhpcy5wbGFjZWhvbGRlci5pZDtpZigxPGUubGVuZ3RofHxuKXJldHVybiB0LmNhbGwodGhpcyxlKTt0aGlzLmNsZWFyKCk7dmFyIGk9dGhpcy5jcmVhdGVQbGFjZWhvbGRlcih0aGlzLnBsYWNlaG9sZGVyKTt0aGlzLiRzZWxlY3Rpb24uZmluZCgiLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCIpLmFwcGVuZChpKX0sZX0pKSxlLmRlZmluZSgic2VsZWN0Mi9zZWxlY3Rpb24vYWxsb3dDbGVhciIsWyJqcXVlcnkiLCIuLi9rZXlzIiwiLi4vdXRpbHMiXSwoZnVuY3Rpb24odCxlLG4pe2Z1bmN0aW9uIGkoKXt9cmV0dXJuIGkucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24odCxlLG4pe3ZhciBpPXRoaXM7dC5jYWxsKHRoaXMsZSxuKSxudWxsPT10aGlzLnBsYWNlaG9sZGVyJiZ0aGlzLm9wdGlvbnMuZ2V0KCJkZWJ1ZyIpJiZ3aW5kb3cuY29uc29sZSYmY29uc29sZS5lcnJvciYmY29uc29sZS5lcnJvcigiU2VsZWN0MjogVGhlIGBhbGxvd0NsZWFyYCBvcHRpb24gc2hvdWxkIGJlIHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCB0aGUgYHBsYWNlaG9sZGVyYCBvcHRpb24uIiksdGhpcy4kc2VsZWN0aW9uLm9uKCJtb3VzZWRvd24iLCIuc2VsZWN0Mi1zZWxlY3Rpb25fX2NsZWFyIiwoZnVuY3Rpb24odCl7aS5faGFuZGxlQ2xlYXIodCl9KSksZS5vbigia2V5cHJlc3MiLChmdW5jdGlvbih0KXtpLl9oYW5kbGVLZXlib2FyZENsZWFyKHQsZSl9KSl9LGkucHJvdG90eXBlLl9oYW5kbGVDbGVhcj1mdW5jdGlvbih0LGUpe2lmKCF0aGlzLmlzRGlzYWJsZWQoKSl7dmFyIGk9dGhpcy4kc2VsZWN0aW9uLmZpbmQoIi5zZWxlY3QyLXNlbGVjdGlvbl9fY2xlYXIiKTtpZigwIT09aS5sZW5ndGgpe2Uuc3RvcFByb3BhZ2F0aW9uKCk7dmFyIHI9bi5HZXREYXRhKGlbMF0sImRhdGEiKSxvPXRoaXMuJGVsZW1lbnQudmFsKCk7dGhpcy4kZWxlbWVudC52YWwodGhpcy5wbGFjZWhvbGRlci5pZCk7dmFyIGE9e2RhdGE6cn07aWYodGhpcy50cmlnZ2VyKCJjbGVhciIsYSksYS5wcmV2ZW50ZWQpdGhpcy4kZWxlbWVudC52YWwobyk7ZWxzZXtmb3IodmFyIHM9MDtzPHIubGVuZ3RoO3MrKylpZihhPXtkYXRhOnJbc119LHRoaXMudHJpZ2dlcigidW5zZWxlY3QiLGEpLGEucHJldmVudGVkKXJldHVybiB2b2lkIHRoaXMuJGVsZW1lbnQudmFsKG8pO3RoaXMuJGVsZW1lbnQudHJpZ2dlcigiaW5wdXQiKS50cmlnZ2VyKCJjaGFuZ2UiKSx0aGlzLnRyaWdnZXIoInRvZ2dsZSIse30pfX19fSxpLnByb3RvdHlwZS5faGFuZGxlS2V5Ym9hcmRDbGVhcj1mdW5jdGlvbih0LG4saSl7aS5pc09wZW4oKXx8bi53aGljaCE9ZS5ERUxFVEUmJm4ud2hpY2ghPWUuQkFDS1NQQUNFfHx0aGlzLl9oYW5kbGVDbGVhcihuKX0saS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGUsaSl7aWYoZS5jYWxsKHRoaXMsaSksISgwPHRoaXMuJHNlbGVjdGlvbi5maW5kKCIuc2VsZWN0Mi1zZWxlY3Rpb25fX3BsYWNlaG9sZGVyIikubGVuZ3RofHwwPT09aS5sZW5ndGgpKXt2YXIgcj10aGlzLm9wdGlvbnMuZ2V0KCJ0cmFuc2xhdGlvbnMiKS5nZXQoInJlbW92ZUFsbEl0ZW1zIiksbz10KCc8c3BhbiBjbGFzcz0ic2VsZWN0Mi1zZWxlY3Rpb25fX2NsZWFyIiB0aXRsZT0iJytyKCkrJyI+JnRpbWVzOzwvc3Bhbj4nKTtuLlN0b3JlRGF0YShvWzBdLCJkYXRhIixpKSx0aGlzLiRzZWxlY3Rpb24uZmluZCgiLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCIpLnByZXBlbmQobyl9fSxpfSkpLGUuZGVmaW5lKCJzZWxlY3QyL3NlbGVjdGlvbi9zZWFyY2giLFsianF1ZXJ5IiwiLi4vdXRpbHMiLCIuLi9rZXlzIl0sKGZ1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiBpKHQsZSxuKXt0LmNhbGwodGhpcyxlLG4pfXJldHVybiBpLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oZSl7dmFyIG49dCgnPGxpIGNsYXNzPSJzZWxlY3QyLXNlYXJjaCBzZWxlY3QyLXNlYXJjaC0taW5saW5lIj48aW5wdXQgY2xhc3M9InNlbGVjdDItc2VhcmNoX19maWVsZCIgdHlwZT0ic2VhcmNoIiB0YWJpbmRleD0iLTEiIGF1dG9jb21wbGV0ZT0ib2ZmIiBhdXRvY29ycmVjdD0ib2ZmIiBhdXRvY2FwaXRhbGl6ZT0ibm9uZSIgc3BlbGxjaGVjaz0iZmFsc2UiIHJvbGU9InNlYXJjaGJveCIgYXJpYS1hdXRvY29tcGxldGU9Imxpc3QiIC8+PC9saT4nKTt0aGlzLiRzZWFyY2hDb250YWluZXI9bix0aGlzLiRzZWFyY2g9bi5maW5kKCJpbnB1dCIpO3ZhciBpPWUuY2FsbCh0aGlzKTtyZXR1cm4gdGhpcy5fdHJhbnNmZXJUYWJJbmRleCgpLGl9LGkucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24odCxpLHIpe3ZhciBvPXRoaXMsYT1pLmlkKyItcmVzdWx0cyI7dC5jYWxsKHRoaXMsaSxyKSxpLm9uKCJvcGVuIiwoZnVuY3Rpb24oKXtvLiRzZWFyY2guYXR0cigiYXJpYS1jb250cm9scyIsYSksby4kc2VhcmNoLnRyaWdnZXIoImZvY3VzIil9KSksaS5vbigiY2xvc2UiLChmdW5jdGlvbigpe28uJHNlYXJjaC52YWwoIiIpLG8uJHNlYXJjaC5yZW1vdmVBdHRyKCJhcmlhLWNvbnRyb2xzIiksby4kc2VhcmNoLnJlbW92ZUF0dHIoImFyaWEtYWN0aXZlZGVzY2VuZGFudCIpLG8uJHNlYXJjaC50cmlnZ2VyKCJmb2N1cyIpfSkpLGkub24oImVuYWJsZSIsKGZ1bmN0aW9uKCl7by4kc2VhcmNoLnByb3AoImRpc2FibGVkIiwhMSksby5fdHJhbnNmZXJUYWJJbmRleCgpfSkpLGkub24oImRpc2FibGUiLChmdW5jdGlvbigpe28uJHNlYXJjaC5wcm9wKCJkaXNhYmxlZCIsITApfSkpLGkub24oImZvY3VzIiwoZnVuY3Rpb24odCl7by4kc2VhcmNoLnRyaWdnZXIoImZvY3VzIil9KSksaS5vbigicmVzdWx0czpmb2N1cyIsKGZ1bmN0aW9uKHQpe3QuZGF0YS5fcmVzdWx0SWQ/by4kc2VhcmNoLmF0dHIoImFyaWEtYWN0aXZlZGVzY2VuZGFudCIsdC5kYXRhLl9yZXN1bHRJZCk6by4kc2VhcmNoLnJlbW92ZUF0dHIoImFyaWEtYWN0aXZlZGVzY2VuZGFudCIpfSkpLHRoaXMuJHNlbGVjdGlvbi5vbigiZm9jdXNpbiIsIi5zZWxlY3QyLXNlYXJjaC0taW5saW5lIiwoZnVuY3Rpb24odCl7by50cmlnZ2VyKCJmb2N1cyIsdCl9KSksdGhpcy4kc2VsZWN0aW9uLm9uKCJmb2N1c291dCIsIi5zZWxlY3QyLXNlYXJjaC0taW5saW5lIiwoZnVuY3Rpb24odCl7by5faGFuZGxlQmx1cih0KX0pKSx0aGlzLiRzZWxlY3Rpb24ub24oImtleWRvd24iLCIuc2VsZWN0Mi1zZWFyY2gtLWlubGluZSIsKGZ1bmN0aW9uKHQpe2lmKHQuc3RvcFByb3BhZ2F0aW9uKCksby50cmlnZ2VyKCJrZXlwcmVzcyIsdCksby5fa2V5VXBQcmV2ZW50ZWQ9dC5pc0RlZmF1bHRQcmV2ZW50ZWQoKSx0LndoaWNoPT09bi5CQUNLU1BBQ0UmJiIiPT09by4kc2VhcmNoLnZhbCgpKXt2YXIgaT1vLiRzZWFyY2hDb250YWluZXIucHJldigiLnNlbGVjdDItc2VsZWN0aW9uX19jaG9pY2UiKTtpZigwPGkubGVuZ3RoKXt2YXIgcj1lLkdldERhdGEoaVswXSwiZGF0YSIpO28uc2VhcmNoUmVtb3ZlQ2hvaWNlKHIpLHQucHJldmVudERlZmF1bHQoKX19fSkpLHRoaXMuJHNlbGVjdGlvbi5vbigiY2xpY2siLCIuc2VsZWN0Mi1zZWFyY2gtLWlubGluZSIsKGZ1bmN0aW9uKHQpe28uJHNlYXJjaC52YWwoKSYmdC5zdG9wUHJvcGFnYXRpb24oKX0pKTt2YXIgcz1kb2N1bWVudC5kb2N1bWVudE1vZGUsbD1zJiZzPD0xMTt0aGlzLiRzZWxlY3Rpb24ub24oImlucHV0LnNlYXJjaGNoZWNrIiwiLnNlbGVjdDItc2VhcmNoLS1pbmxpbmUiLChmdW5jdGlvbih0KXtsP28uJHNlbGVjdGlvbi5vZmYoImlucHV0LnNlYXJjaCBpbnB1dC5zZWFyY2hjaGVjayIpOm8uJHNlbGVjdGlvbi5vZmYoImtleXVwLnNlYXJjaCIpfSkpLHRoaXMuJHNlbGVjdGlvbi5vbigia2V5dXAuc2VhcmNoIGlucHV0LnNlYXJjaCIsIi5zZWxlY3QyLXNlYXJjaC0taW5saW5lIiwoZnVuY3Rpb24odCl7aWYobCYmImlucHV0Ij09PXQudHlwZSlvLiRzZWxlY3Rpb24ub2ZmKCJpbnB1dC5zZWFyY2ggaW5wdXQuc2VhcmNoY2hlY2siKTtlbHNle3ZhciBlPXQud2hpY2g7ZSE9bi5TSElGVCYmZSE9bi5DVFJMJiZlIT1uLkFMVCYmZSE9bi5UQUImJm8uaGFuZGxlU2VhcmNoKHQpfX0pKX0saS5wcm90b3R5cGUuX3RyYW5zZmVyVGFiSW5kZXg9ZnVuY3Rpb24odCl7dGhpcy4kc2VhcmNoLmF0dHIoInRhYmluZGV4Iix0aGlzLiRzZWxlY3Rpb24uYXR0cigidGFiaW5kZXgiKSksdGhpcy4kc2VsZWN0aW9uLmF0dHIoInRhYmluZGV4IiwiLTEiKX0saS5wcm90b3R5cGUuY3JlYXRlUGxhY2Vob2xkZXI9ZnVuY3Rpb24odCxlKXt0aGlzLiRzZWFyY2guYXR0cigicGxhY2Vob2xkZXIiLGUudGV4dCl9LGkucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuJHNlYXJjaFswXT09ZG9jdW1lbnQuYWN0aXZlRWxlbWVudDt0aGlzLiRzZWFyY2guYXR0cigicGxhY2Vob2xkZXIiLCIiKSx0LmNhbGwodGhpcyxlKSx0aGlzLiRzZWxlY3Rpb24uZmluZCgiLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCIpLmFwcGVuZCh0aGlzLiRzZWFyY2hDb250YWluZXIpLHRoaXMucmVzaXplU2VhcmNoKCksbiYmdGhpcy4kc2VhcmNoLnRyaWdnZXIoImZvY3VzIil9LGkucHJvdG90eXBlLmhhbmRsZVNlYXJjaD1mdW5jdGlvbigpe2lmKHRoaXMucmVzaXplU2VhcmNoKCksIXRoaXMuX2tleVVwUHJldmVudGVkKXt2YXIgdD10aGlzLiRzZWFyY2gudmFsKCk7dGhpcy50cmlnZ2VyKCJxdWVyeSIse3Rlcm06dH0pfXRoaXMuX2tleVVwUHJldmVudGVkPSExfSxpLnByb3RvdHlwZS5zZWFyY2hSZW1vdmVDaG9pY2U9ZnVuY3Rpb24odCxlKXt0aGlzLnRyaWdnZXIoInVuc2VsZWN0Iix7ZGF0YTplfSksdGhpcy4kc2VhcmNoLnZhbChlLnRleHQpLHRoaXMuaGFuZGxlU2VhcmNoKCl9LGkucHJvdG90eXBlLnJlc2l6ZVNlYXJjaD1mdW5jdGlvbigpe3RoaXMuJHNlYXJjaC5jc3MoIndpZHRoIiwiMjVweCIpO3ZhciB0PSIiO3Q9IiIhPT10aGlzLiRzZWFyY2guYXR0cigicGxhY2Vob2xkZXIiKT90aGlzLiRzZWxlY3Rpb24uZmluZCgiLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCIpLndpZHRoKCk6Ljc1Kih0aGlzLiRzZWFyY2gudmFsKCkubGVuZ3RoKzEpKyJlbSIsdGhpcy4kc2VhcmNoLmNzcygid2lkdGgiLHQpfSxpfSkpLGUuZGVmaW5lKCJzZWxlY3QyL3NlbGVjdGlvbi9ldmVudFJlbGF5IixbImpxdWVyeSJdLChmdW5jdGlvbih0KXtmdW5jdGlvbiBlKCl7fXJldHVybiBlLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKGUsbixpKXt2YXIgcj10aGlzLG89WyJvcGVuIiwib3BlbmluZyIsImNsb3NlIiwiY2xvc2luZyIsInNlbGVjdCIsInNlbGVjdGluZyIsInVuc2VsZWN0IiwidW5zZWxlY3RpbmciLCJjbGVhciIsImNsZWFyaW5nIl0sYT1bIm9wZW5pbmciLCJjbG9zaW5nIiwic2VsZWN0aW5nIiwidW5zZWxlY3RpbmciLCJjbGVhcmluZyJdO2UuY2FsbCh0aGlzLG4saSksbi5vbigiKiIsKGZ1bmN0aW9uKGUsbil7aWYoLTEhPT10LmluQXJyYXkoZSxvKSl7bj1ufHx7fTt2YXIgaT10LkV2ZW50KCJzZWxlY3QyOiIrZSx7cGFyYW1zOm59KTtyLiRlbGVtZW50LnRyaWdnZXIoaSksLTEhPT10LmluQXJyYXkoZSxhKSYmKG4ucHJldmVudGVkPWkuaXNEZWZhdWx0UHJldmVudGVkKCkpfX0pKX0sZX0pKSxlLmRlZmluZSgic2VsZWN0Mi90cmFuc2xhdGlvbiIsWyJqcXVlcnkiLCJyZXF1aXJlIl0sKGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbih0KXt0aGlzLmRpY3Q9dHx8e319cmV0dXJuIG4ucHJvdG90eXBlLmFsbD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRpY3R9LG4ucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kaWN0W3RdfSxuLnByb3RvdHlwZS5leHRlbmQ9ZnVuY3Rpb24oZSl7dGhpcy5kaWN0PXQuZXh0ZW5kKHt9LGUuYWxsKCksdGhpcy5kaWN0KX0sbi5fY2FjaGU9e30sbi5sb2FkUGF0aD1mdW5jdGlvbih0KXtpZighKHQgaW4gbi5fY2FjaGUpKXt2YXIgaT1lKHQpO24uX2NhY2hlW3RdPWl9cmV0dXJuIG5ldyBuKG4uX2NhY2hlW3RdKX0sbn0pKSxlLmRlZmluZSgic2VsZWN0Mi9kaWFjcml0aWNzIixbXSwoZnVuY3Rpb24oKXtyZXR1cm57IuKStiI6IkEiLCLvvKEiOiJBIiwiw4AiOiJBIiwiw4EiOiJBIiwiw4IiOiJBIiwi4bqmIjoiQSIsIuG6pCI6IkEiLCLhuqoiOiJBIiwi4bqoIjoiQSIsIsODIjoiQSIsIsSAIjoiQSIsIsSCIjoiQSIsIuG6sCI6IkEiLCLhuq4iOiJBIiwi4bq0IjoiQSIsIuG6siI6IkEiLCLIpiI6IkEiLCLHoCI6IkEiLCLDhCI6IkEiLCLHniI6IkEiLCLhuqIiOiJBIiwiw4UiOiJBIiwix7oiOiJBIiwix40iOiJBIiwiyIAiOiJBIiwiyIIiOiJBIiwi4bqgIjoiQSIsIuG6rCI6IkEiLCLhurYiOiJBIiwi4biAIjoiQSIsIsSEIjoiQSIsIsi6IjoiQSIsIuKxryI6IkEiLCLqnLIiOiJBQSIsIsOGIjoiQUUiLCLHvCI6IkFFIiwix6IiOiJBRSIsIuqctCI6IkFPIiwi6py2IjoiQVUiLCLqnLgiOiJBViIsIuqcuiI6IkFWIiwi6py8IjoiQVkiLCLikrciOiJCIiwi77yiIjoiQiIsIuG4giI6IkIiLCLhuIQiOiJCIiwi4biGIjoiQiIsIsmDIjoiQiIsIsaCIjoiQiIsIsaBIjoiQiIsIuKSuCI6IkMiLCLvvKMiOiJDIiwixIYiOiJDIiwixIgiOiJDIiwixIoiOiJDIiwixIwiOiJDIiwiw4ciOiJDIiwi4biIIjoiQyIsIsaHIjoiQyIsIsi7IjoiQyIsIuqcviI6IkMiLCLikrkiOiJEIiwi77ykIjoiRCIsIuG4iiI6IkQiLCLEjiI6IkQiLCLhuIwiOiJEIiwi4biQIjoiRCIsIuG4kiI6IkQiLCLhuI4iOiJEIiwixJAiOiJEIiwixosiOiJEIiwixooiOiJEIiwixokiOiJEIiwi6p25IjoiRCIsIsexIjoiRFoiLCLHhCI6IkRaIiwix7IiOiJEeiIsIseFIjoiRHoiLCLikroiOiJFIiwi77ylIjoiRSIsIsOIIjoiRSIsIsOJIjoiRSIsIsOKIjoiRSIsIuG7gCI6IkUiLCLhur4iOiJFIiwi4buEIjoiRSIsIuG7giI6IkUiLCLhurwiOiJFIiwixJIiOiJFIiwi4biUIjoiRSIsIuG4liI6IkUiLCLElCI6IkUiLCLEliI6IkUiLCLDiyI6IkUiLCLhuroiOiJFIiwixJoiOiJFIiwiyIQiOiJFIiwiyIYiOiJFIiwi4bq4IjoiRSIsIuG7hiI6IkUiLCLIqCI6IkUiLCLhuJwiOiJFIiwixJgiOiJFIiwi4biYIjoiRSIsIuG4miI6IkUiLCLGkCI6IkUiLCLGjiI6IkUiLCLikrsiOiJGIiwi77ymIjoiRiIsIuG4niI6IkYiLCLGkSI6IkYiLCLqnbsiOiJGIiwi4pK8IjoiRyIsIu+8pyI6IkciLCLHtCI6IkciLCLEnCI6IkciLCLhuKAiOiJHIiwixJ4iOiJHIiwixKAiOiJHIiwix6YiOiJHIiwixKIiOiJHIiwix6QiOiJHIiwixpMiOiJHIiwi6p6gIjoiRyIsIuqdvSI6IkciLCLqnb4iOiJHIiwi4pK9IjoiSCIsIu+8qCI6IkgiLCLEpCI6IkgiLCLhuKIiOiJIIiwi4bimIjoiSCIsIsieIjoiSCIsIuG4pCI6IkgiLCLhuKgiOiJIIiwi4biqIjoiSCIsIsSmIjoiSCIsIuKxpyI6IkgiLCLisbUiOiJIIiwi6p6NIjoiSCIsIuKSviI6IkkiLCLvvKkiOiJJIiwiw4wiOiJJIiwiw40iOiJJIiwiw44iOiJJIiwixKgiOiJJIiwixKoiOiJJIiwixKwiOiJJIiwixLAiOiJJIiwiw48iOiJJIiwi4biuIjoiSSIsIuG7iCI6IkkiLCLHjyI6IkkiLCLIiCI6IkkiLCLIiiI6IkkiLCLhu4oiOiJJIiwixK4iOiJJIiwi4bisIjoiSSIsIsaXIjoiSSIsIuKSvyI6IkoiLCLvvKoiOiJKIiwixLQiOiJKIiwiyYgiOiJKIiwi4pOAIjoiSyIsIu+8qyI6IksiLCLhuLAiOiJLIiwix6giOiJLIiwi4biyIjoiSyIsIsS2IjoiSyIsIuG4tCI6IksiLCLGmCI6IksiLCLisakiOiJLIiwi6p2AIjoiSyIsIuqdgiI6IksiLCLqnYQiOiJLIiwi6p6iIjoiSyIsIuKTgSI6IkwiLCLvvKwiOiJMIiwixL8iOiJMIiwixLkiOiJMIiwixL0iOiJMIiwi4bi2IjoiTCIsIuG4uCI6IkwiLCLEuyI6IkwiLCLhuLwiOiJMIiwi4bi6IjoiTCIsIsWBIjoiTCIsIsi9IjoiTCIsIuKxoiI6IkwiLCLisaAiOiJMIiwi6p2IIjoiTCIsIuqdhiI6IkwiLCLqnoAiOiJMIiwix4ciOiJMSiIsIseIIjoiTGoiLCLik4IiOiJNIiwi77ytIjoiTSIsIuG4viI6Ik0iLCLhuYAiOiJNIiwi4bmCIjoiTSIsIuKxriI6Ik0iLCLGnCI6Ik0iLCLik4MiOiJOIiwi77yuIjoiTiIsIse4IjoiTiIsIsWDIjoiTiIsIsORIjoiTiIsIuG5hCI6Ik4iLCLFhyI6Ik4iLCLhuYYiOiJOIiwixYUiOiJOIiwi4bmKIjoiTiIsIuG5iCI6Ik4iLCLIoCI6Ik4iLCLGnSI6Ik4iLCLqnpAiOiJOIiwi6p6kIjoiTiIsIseKIjoiTkoiLCLHiyI6Ik5qIiwi4pOEIjoiTyIsIu+8ryI6Ik8iLCLDkiI6Ik8iLCLDkyI6Ik8iLCLDlCI6Ik8iLCLhu5IiOiJPIiwi4buQIjoiTyIsIuG7liI6Ik8iLCLhu5QiOiJPIiwiw5UiOiJPIiwi4bmMIjoiTyIsIsisIjoiTyIsIuG5jiI6Ik8iLCLFjCI6Ik8iLCLhuZAiOiJPIiwi4bmSIjoiTyIsIsWOIjoiTyIsIsiuIjoiTyIsIsiwIjoiTyIsIsOWIjoiTyIsIsiqIjoiTyIsIuG7jiI6Ik8iLCLFkCI6Ik8iLCLHkSI6Ik8iLCLIjCI6Ik8iLCLIjiI6Ik8iLCLGoCI6Ik8iLCLhu5wiOiJPIiwi4buaIjoiTyIsIuG7oCI6Ik8iLCLhu54iOiJPIiwi4buiIjoiTyIsIuG7jCI6Ik8iLCLhu5giOiJPIiwix6oiOiJPIiwix6wiOiJPIiwiw5giOiJPIiwix74iOiJPIiwixoYiOiJPIiwixp8iOiJPIiwi6p2KIjoiTyIsIuqdjCI6Ik8iLCLFkiI6Ik9FIiwixqIiOiJPSSIsIuqdjiI6Ik9PIiwiyKIiOiJPVSIsIuKThSI6IlAiLCLvvLAiOiJQIiwi4bmUIjoiUCIsIuG5liI6IlAiLCLGpCI6IlAiLCLisaMiOiJQIiwi6p2QIjoiUCIsIuqdkiI6IlAiLCLqnZQiOiJQIiwi4pOGIjoiUSIsIu+8sSI6IlEiLCLqnZYiOiJRIiwi6p2YIjoiUSIsIsmKIjoiUSIsIuKThyI6IlIiLCLvvLIiOiJSIiwixZQiOiJSIiwi4bmYIjoiUiIsIsWYIjoiUiIsIsiQIjoiUiIsIsiSIjoiUiIsIuG5miI6IlIiLCLhuZwiOiJSIiwixZYiOiJSIiwi4bmeIjoiUiIsIsmMIjoiUiIsIuKxpCI6IlIiLCLqnZoiOiJSIiwi6p6mIjoiUiIsIuqegiI6IlIiLCLik4giOiJTIiwi77yzIjoiUyIsIuG6niI6IlMiLCLFmiI6IlMiLCLhuaQiOiJTIiwixZwiOiJTIiwi4bmgIjoiUyIsIsWgIjoiUyIsIuG5piI6IlMiLCLhuaIiOiJTIiwi4bmoIjoiUyIsIsiYIjoiUyIsIsWeIjoiUyIsIuKxviI6IlMiLCLqnqgiOiJTIiwi6p6EIjoiUyIsIuKTiSI6IlQiLCLvvLQiOiJUIiwi4bmqIjoiVCIsIsWkIjoiVCIsIuG5rCI6IlQiLCLImiI6IlQiLCLFoiI6IlQiLCLhubAiOiJUIiwi4bmuIjoiVCIsIsWmIjoiVCIsIsasIjoiVCIsIsauIjoiVCIsIsi+IjoiVCIsIuqehiI6IlQiLCLqnKgiOiJUWiIsIuKTiiI6IlUiLCLvvLUiOiJVIiwiw5kiOiJVIiwiw5oiOiJVIiwiw5siOiJVIiwixagiOiJVIiwi4bm4IjoiVSIsIsWqIjoiVSIsIuG5uiI6IlUiLCLFrCI6IlUiLCLDnCI6IlUiLCLHmyI6IlUiLCLHlyI6IlUiLCLHlSI6IlUiLCLHmSI6IlUiLCLhu6YiOiJVIiwixa4iOiJVIiwixbAiOiJVIiwix5MiOiJVIiwiyJQiOiJVIiwiyJYiOiJVIiwixq8iOiJVIiwi4buqIjoiVSIsIuG7qCI6IlUiLCLhu64iOiJVIiwi4busIjoiVSIsIuG7sCI6IlUiLCLhu6QiOiJVIiwi4bmyIjoiVSIsIsWyIjoiVSIsIuG5tiI6IlUiLCLhubQiOiJVIiwiyYQiOiJVIiwi4pOLIjoiViIsIu+8tiI6IlYiLCLhubwiOiJWIiwi4bm+IjoiViIsIsayIjoiViIsIuqdniI6IlYiLCLJhSI6IlYiLCLqnaAiOiJWWSIsIuKTjCI6IlciLCLvvLciOiJXIiwi4bqAIjoiVyIsIuG6giI6IlciLCLFtCI6IlciLCLhuoYiOiJXIiwi4bqEIjoiVyIsIuG6iCI6IlciLCLisbIiOiJXIiwi4pONIjoiWCIsIu+8uCI6IlgiLCLhuooiOiJYIiwi4bqMIjoiWCIsIuKTjiI6IlkiLCLvvLkiOiJZIiwi4buyIjoiWSIsIsOdIjoiWSIsIsW2IjoiWSIsIuG7uCI6IlkiLCLIsiI6IlkiLCLhuo4iOiJZIiwixbgiOiJZIiwi4bu2IjoiWSIsIuG7tCI6IlkiLCLGsyI6IlkiLCLJjiI6IlkiLCLhu74iOiJZIiwi4pOPIjoiWiIsIu+8uiI6IloiLCLFuSI6IloiLCLhupAiOiJaIiwixbsiOiJaIiwixb0iOiJaIiwi4bqSIjoiWiIsIuG6lCI6IloiLCLGtSI6IloiLCLIpCI6IloiLCLisb8iOiJaIiwi4rGrIjoiWiIsIuqdoiI6IloiLCLik5AiOiJhIiwi772BIjoiYSIsIuG6miI6ImEiLCLDoCI6ImEiLCLDoSI6ImEiLCLDoiI6ImEiLCLhuqciOiJhIiwi4bqlIjoiYSIsIuG6qyI6ImEiLCLhuqkiOiJhIiwiw6MiOiJhIiwixIEiOiJhIiwixIMiOiJhIiwi4bqxIjoiYSIsIuG6ryI6ImEiLCLhurUiOiJhIiwi4bqzIjoiYSIsIsinIjoiYSIsIsehIjoiYSIsIsOkIjoiYSIsIsefIjoiYSIsIuG6oyI6ImEiLCLDpSI6ImEiLCLHuyI6ImEiLCLHjiI6ImEiLCLIgSI6ImEiLCLIgyI6ImEiLCLhuqEiOiJhIiwi4bqtIjoiYSIsIuG6tyI6ImEiLCLhuIEiOiJhIiwixIUiOiJhIiwi4rGlIjoiYSIsIsmQIjoiYSIsIuqcsyI6ImFhIiwiw6YiOiJhZSIsIse9IjoiYWUiLCLHoyI6ImFlIiwi6py1IjoiYW8iLCLqnLciOiJhdSIsIuqcuSI6ImF2Iiwi6py7IjoiYXYiLCLqnL0iOiJheSIsIuKTkSI6ImIiLCLvvYIiOiJiIiwi4biDIjoiYiIsIuG4hSI6ImIiLCLhuIciOiJiIiwixoAiOiJiIiwixoMiOiJiIiwiyZMiOiJiIiwi4pOSIjoiYyIsIu+9gyI6ImMiLCLEhyI6ImMiLCLEiSI6ImMiLCLEiyI6ImMiLCLEjSI6ImMiLCLDpyI6ImMiLCLhuIkiOiJjIiwixogiOiJjIiwiyLwiOiJjIiwi6py/IjoiYyIsIuKGhCI6ImMiLCLik5MiOiJkIiwi772EIjoiZCIsIuG4iyI6ImQiLCLEjyI6ImQiLCLhuI0iOiJkIiwi4biRIjoiZCIsIuG4kyI6ImQiLCLhuI8iOiJkIiwixJEiOiJkIiwixowiOiJkIiwiyZYiOiJkIiwiyZciOiJkIiwi6p26IjoiZCIsIsezIjoiZHoiLCLHhiI6ImR6Iiwi4pOUIjoiZSIsIu+9hSI6ImUiLCLDqCI6ImUiLCLDqSI6ImUiLCLDqiI6ImUiLCLhu4EiOiJlIiwi4bq/IjoiZSIsIuG7hSI6ImUiLCLhu4MiOiJlIiwi4bq9IjoiZSIsIsSTIjoiZSIsIuG4lSI6ImUiLCLhuJciOiJlIiwixJUiOiJlIiwixJciOiJlIiwiw6siOiJlIiwi4bq7IjoiZSIsIsSbIjoiZSIsIsiFIjoiZSIsIsiHIjoiZSIsIuG6uSI6ImUiLCLhu4ciOiJlIiwiyKkiOiJlIiwi4bidIjoiZSIsIsSZIjoiZSIsIuG4mSI6ImUiLCLhuJsiOiJlIiwiyYciOiJlIiwiyZsiOiJlIiwix50iOiJlIiwi4pOVIjoiZiIsIu+9hiI6ImYiLCLhuJ8iOiJmIiwixpIiOiJmIiwi6p28IjoiZiIsIuKTliI6ImciLCLvvYciOiJnIiwix7UiOiJnIiwixJ0iOiJnIiwi4bihIjoiZyIsIsSfIjoiZyIsIsShIjoiZyIsIsenIjoiZyIsIsSjIjoiZyIsIselIjoiZyIsIsmgIjoiZyIsIuqeoSI6ImciLCLhtbkiOiJnIiwi6p2/IjoiZyIsIuKTlyI6ImgiLCLvvYgiOiJoIiwixKUiOiJoIiwi4bijIjoiaCIsIuG4pyI6ImgiLCLInyI6ImgiLCLhuKUiOiJoIiwi4bipIjoiaCIsIuG4qyI6ImgiLCLhupYiOiJoIiwixKciOiJoIiwi4rGoIjoiaCIsIuKxtiI6ImgiLCLJpSI6ImgiLCLGlSI6Imh2Iiwi4pOYIjoiaSIsIu+9iSI6ImkiLCLDrCI6ImkiLCLDrSI6ImkiLCLDriI6ImkiLCLEqSI6ImkiLCLEqyI6ImkiLCLErSI6ImkiLCLDryI6ImkiLCLhuK8iOiJpIiwi4buJIjoiaSIsIseQIjoiaSIsIsiJIjoiaSIsIsiLIjoiaSIsIuG7iyI6ImkiLCLEryI6ImkiLCLhuK0iOiJpIiwiyagiOiJpIiwixLEiOiJpIiwi4pOZIjoiaiIsIu+9iiI6ImoiLCLEtSI6ImoiLCLHsCI6ImoiLCLJiSI6ImoiLCLik5oiOiJrIiwi772LIjoiayIsIuG4sSI6ImsiLCLHqSI6ImsiLCLhuLMiOiJrIiwixLciOiJrIiwi4bi1IjoiayIsIsaZIjoiayIsIuKxqiI6ImsiLCLqnYEiOiJrIiwi6p2DIjoiayIsIuqdhSI6ImsiLCLqnqMiOiJrIiwi4pObIjoibCIsIu+9jCI6ImwiLCLFgCI6ImwiLCLEuiI6ImwiLCLEviI6ImwiLCLhuLciOiJsIiwi4bi5IjoibCIsIsS8IjoibCIsIuG4vSI6ImwiLCLhuLsiOiJsIiwixb8iOiJsIiwixYIiOiJsIiwixpoiOiJsIiwiyasiOiJsIiwi4rGhIjoibCIsIuqdiSI6ImwiLCLqnoEiOiJsIiwi6p2HIjoibCIsIseJIjoibGoiLCLik5wiOiJtIiwi772NIjoibSIsIuG4vyI6Im0iLCLhuYEiOiJtIiwi4bmDIjoibSIsIsmxIjoibSIsIsmvIjoibSIsIuKTnSI6Im4iLCLvvY4iOiJuIiwix7kiOiJuIiwixYQiOiJuIiwiw7EiOiJuIiwi4bmFIjoibiIsIsWIIjoibiIsIuG5hyI6Im4iLCLFhiI6Im4iLCLhuYsiOiJuIiwi4bmJIjoibiIsIsaeIjoibiIsIsmyIjoibiIsIsWJIjoibiIsIuqekSI6Im4iLCLqnqUiOiJuIiwix4wiOiJuaiIsIuKTniI6Im8iLCLvvY8iOiJvIiwiw7IiOiJvIiwiw7MiOiJvIiwiw7QiOiJvIiwi4buTIjoibyIsIuG7kSI6Im8iLCLhu5ciOiJvIiwi4buVIjoibyIsIsO1IjoibyIsIuG5jSI6Im8iLCLIrSI6Im8iLCLhuY8iOiJvIiwixY0iOiJvIiwi4bmRIjoibyIsIuG5kyI6Im8iLCLFjyI6Im8iLCLIryI6Im8iLCLIsSI6Im8iLCLDtiI6Im8iLCLIqyI6Im8iLCLhu48iOiJvIiwixZEiOiJvIiwix5IiOiJvIiwiyI0iOiJvIiwiyI8iOiJvIiwixqEiOiJvIiwi4budIjoibyIsIuG7myI6Im8iLCLhu6EiOiJvIiwi4bufIjoibyIsIuG7oyI6Im8iLCLhu40iOiJvIiwi4buZIjoibyIsIserIjoibyIsIsetIjoibyIsIsO4IjoibyIsIse/IjoibyIsIsmUIjoibyIsIuqdiyI6Im8iLCLqnY0iOiJvIiwiybUiOiJvIiwixZMiOiJvZSIsIsajIjoib2kiLCLIoyI6Im91Iiwi6p2PIjoib28iLCLik58iOiJwIiwi772QIjoicCIsIuG5lSI6InAiLCLhuZciOiJwIiwixqUiOiJwIiwi4bW9IjoicCIsIuqdkSI6InAiLCLqnZMiOiJwIiwi6p2VIjoicCIsIuKToCI6InEiLCLvvZEiOiJxIiwiyYsiOiJxIiwi6p2XIjoicSIsIuqdmSI6InEiLCLik6EiOiJyIiwi772SIjoiciIsIsWVIjoiciIsIuG5mSI6InIiLCLFmSI6InIiLCLIkSI6InIiLCLIkyI6InIiLCLhuZsiOiJyIiwi4bmdIjoiciIsIsWXIjoiciIsIuG5nyI6InIiLCLJjSI6InIiLCLJvSI6InIiLCLqnZsiOiJyIiwi6p6nIjoiciIsIuqegyI6InIiLCLik6IiOiJzIiwi772TIjoicyIsIsOfIjoicyIsIsWbIjoicyIsIuG5pSI6InMiLCLFnSI6InMiLCLhuaEiOiJzIiwixaEiOiJzIiwi4bmnIjoicyIsIuG5oyI6InMiLCLhuakiOiJzIiwiyJkiOiJzIiwixZ8iOiJzIiwiyL8iOiJzIiwi6p6pIjoicyIsIuqehSI6InMiLCLhupsiOiJzIiwi4pOjIjoidCIsIu+9lCI6InQiLCLhuasiOiJ0Iiwi4bqXIjoidCIsIsWlIjoidCIsIuG5rSI6InQiLCLImyI6InQiLCLFoyI6InQiLCLhubEiOiJ0Iiwi4bmvIjoidCIsIsWnIjoidCIsIsatIjoidCIsIsqIIjoidCIsIuKxpiI6InQiLCLqnociOiJ0Iiwi6pypIjoidHoiLCLik6QiOiJ1Iiwi772VIjoidSIsIsO5IjoidSIsIsO6IjoidSIsIsO7IjoidSIsIsWpIjoidSIsIuG5uSI6InUiLCLFqyI6InUiLCLhubsiOiJ1Iiwixa0iOiJ1Iiwiw7wiOiJ1Iiwix5wiOiJ1Iiwix5giOiJ1Iiwix5YiOiJ1Iiwix5oiOiJ1Iiwi4bunIjoidSIsIsWvIjoidSIsIsWxIjoidSIsIseUIjoidSIsIsiVIjoidSIsIsiXIjoidSIsIsawIjoidSIsIuG7qyI6InUiLCLhu6kiOiJ1Iiwi4buvIjoidSIsIuG7rSI6InUiLCLhu7EiOiJ1Iiwi4bulIjoidSIsIuG5syI6InUiLCLFsyI6InUiLCLhubciOiJ1Iiwi4bm1IjoidSIsIsqJIjoidSIsIuKTpSI6InYiLCLvvZYiOiJ2Iiwi4bm9IjoidiIsIuG5vyI6InYiLCLKiyI6InYiLCLqnZ8iOiJ2IiwiyowiOiJ2Iiwi6p2hIjoidnkiLCLik6YiOiJ3Iiwi772XIjoidyIsIuG6gSI6InciLCLhuoMiOiJ3IiwixbUiOiJ3Iiwi4bqHIjoidyIsIuG6hSI6InciLCLhupgiOiJ3Iiwi4bqJIjoidyIsIuKxsyI6InciLCLik6ciOiJ4Iiwi772YIjoieCIsIuG6iyI6IngiLCLhuo0iOiJ4Iiwi4pOoIjoieSIsIu+9mSI6InkiLCLhu7MiOiJ5Iiwiw70iOiJ5IiwixbciOiJ5Iiwi4bu5IjoieSIsIsizIjoieSIsIuG6jyI6InkiLCLDvyI6InkiLCLhu7ciOiJ5Iiwi4bqZIjoieSIsIuG7tSI6InkiLCLGtCI6InkiLCLJjyI6InkiLCLhu78iOiJ5Iiwi4pOpIjoieiIsIu+9miI6InoiLCLFuiI6InoiLCLhupEiOiJ6IiwixbwiOiJ6Iiwixb4iOiJ6Iiwi4bqTIjoieiIsIuG6lSI6InoiLCLGtiI6InoiLCLIpSI6InoiLCLJgCI6InoiLCLisawiOiJ6Iiwi6p2jIjoieiIsIs6GIjoizpEiLCLOiCI6Is6VIiwizokiOiLOlyIsIs6KIjoizpkiLCLOqiI6Is6ZIiwizowiOiLOnyIsIs6OIjoizqUiLCLOqyI6Is6lIiwizo8iOiLOqSIsIs6sIjoizrEiLCLOrSI6Is61Iiwizq4iOiLOtyIsIs6vIjoizrkiLCLPiiI6Is65IiwizpAiOiLOuSIsIs+MIjoizr8iLCLPjSI6Is+FIiwiz4siOiLPhSIsIs6wIjoiz4UiLCLPjiI6Is+JIiwiz4IiOiLPgyIsIuKAmSI6IicifX0pKSxlLmRlZmluZSgic2VsZWN0Mi9kYXRhL2Jhc2UiLFsiLi4vdXRpbHMiXSwoZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSh0LG4pe2UuX19zdXBlcl9fLmNvbnN0cnVjdG9yLmNhbGwodGhpcyl9cmV0dXJuIHQuRXh0ZW5kKGUsdC5PYnNlcnZhYmxlKSxlLnByb3RvdHlwZS5jdXJyZW50PWZ1bmN0aW9uKHQpe3Rocm93IG5ldyBFcnJvcigiVGhlIGBjdXJyZW50YCBtZXRob2QgbXVzdCBiZSBkZWZpbmVkIGluIGNoaWxkIGNsYXNzZXMuIil9LGUucHJvdG90eXBlLnF1ZXJ5PWZ1bmN0aW9uKHQsZSl7dGhyb3cgbmV3IEVycm9yKCJUaGUgYHF1ZXJ5YCBtZXRob2QgbXVzdCBiZSBkZWZpbmVkIGluIGNoaWxkIGNsYXNzZXMuIil9LGUucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24odCxlKXt9LGUucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt9LGUucHJvdG90eXBlLmdlbmVyYXRlUmVzdWx0SWQ9ZnVuY3Rpb24oZSxuKXt2YXIgaT1lLmlkKyItcmVzdWx0LSI7cmV0dXJuIGkrPXQuZ2VuZXJhdGVDaGFycyg0KSxudWxsIT1uLmlkP2krPSItIituLmlkLnRvU3RyaW5nKCk6aSs9Ii0iK3QuZ2VuZXJhdGVDaGFycyg0KSxpfSxlfSkpLGUuZGVmaW5lKCJzZWxlY3QyL2RhdGEvc2VsZWN0IixbIi4vYmFzZSIsIi4uL3V0aWxzIiwianF1ZXJ5Il0sKGZ1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiBpKHQsZSl7dGhpcy4kZWxlbWVudD10LHRoaXMub3B0aW9ucz1lLGkuX19zdXBlcl9fLmNvbnN0cnVjdG9yLmNhbGwodGhpcyl9cmV0dXJuIGUuRXh0ZW5kKGksdCksaS5wcm90b3R5cGUuY3VycmVudD1mdW5jdGlvbih0KXt2YXIgZT1bXSxpPXRoaXM7dGhpcy4kZWxlbWVudC5maW5kKCI6c2VsZWN0ZWQiKS5lYWNoKChmdW5jdGlvbigpe3ZhciB0PW4odGhpcykscj1pLml0ZW0odCk7ZS5wdXNoKHIpfSkpLHQoZSl9LGkucHJvdG90eXBlLnNlbGVjdD1mdW5jdGlvbih0KXt2YXIgZT10aGlzO2lmKHQuc2VsZWN0ZWQ9ITAsbih0LmVsZW1lbnQpLmlzKCJvcHRpb24iKSlyZXR1cm4gdC5lbGVtZW50LnNlbGVjdGVkPSEwLHZvaWQgdGhpcy4kZWxlbWVudC50cmlnZ2VyKCJpbnB1dCIpLnRyaWdnZXIoImNoYW5nZSIpO2lmKHRoaXMuJGVsZW1lbnQucHJvcCgibXVsdGlwbGUiKSl0aGlzLmN1cnJlbnQoKGZ1bmN0aW9uKGkpe3ZhciByPVtdOyh0PVt0XSkucHVzaC5hcHBseSh0LGkpO2Zvcih2YXIgbz0wO288dC5sZW5ndGg7bysrKXt2YXIgYT10W29dLmlkOy0xPT09bi5pbkFycmF5KGEscikmJnIucHVzaChhKX1lLiRlbGVtZW50LnZhbChyKSxlLiRlbGVtZW50LnRyaWdnZXIoImlucHV0IikudHJpZ2dlcigiY2hhbmdlIil9KSk7ZWxzZXt2YXIgaT10LmlkO3RoaXMuJGVsZW1lbnQudmFsKGkpLHRoaXMuJGVsZW1lbnQudHJpZ2dlcigiaW5wdXQiKS50cmlnZ2VyKCJjaGFuZ2UiKX19LGkucHJvdG90eXBlLnVuc2VsZWN0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7aWYodGhpcy4kZWxlbWVudC5wcm9wKCJtdWx0aXBsZSIpKXtpZih0LnNlbGVjdGVkPSExLG4odC5lbGVtZW50KS5pcygib3B0aW9uIikpcmV0dXJuIHQuZWxlbWVudC5zZWxlY3RlZD0hMSx2b2lkIHRoaXMuJGVsZW1lbnQudHJpZ2dlcigiaW5wdXQiKS50cmlnZ2VyKCJjaGFuZ2UiKTt0aGlzLmN1cnJlbnQoKGZ1bmN0aW9uKGkpe2Zvcih2YXIgcj1bXSxvPTA7bzxpLmxlbmd0aDtvKyspe3ZhciBhPWlbb10uaWQ7YSE9PXQuaWQmJi0xPT09bi5pbkFycmF5KGEscikmJnIucHVzaChhKX1lLiRlbGVtZW50LnZhbChyKSxlLiRlbGVtZW50LnRyaWdnZXIoImlucHV0IikudHJpZ2dlcigiY2hhbmdlIil9KSl9fSxpLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpczsodGhpcy5jb250YWluZXI9dCkub24oInNlbGVjdCIsKGZ1bmN0aW9uKHQpe24uc2VsZWN0KHQuZGF0YSl9KSksdC5vbigidW5zZWxlY3QiLChmdW5jdGlvbih0KXtuLnVuc2VsZWN0KHQuZGF0YSl9KSl9LGkucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLiRlbGVtZW50LmZpbmQoIioiKS5lYWNoKChmdW5jdGlvbigpe2UuUmVtb3ZlRGF0YSh0aGlzKX0pKX0saS5wcm90b3R5cGUucXVlcnk9ZnVuY3Rpb24odCxlKXt2YXIgaT1bXSxyPXRoaXM7dGhpcy4kZWxlbWVudC5jaGlsZHJlbigpLmVhY2goKGZ1bmN0aW9uKCl7dmFyIGU9bih0aGlzKTtpZihlLmlzKCJvcHRpb24iKXx8ZS5pcygib3B0Z3JvdXAiKSl7dmFyIG89ci5pdGVtKGUpLGE9ci5tYXRjaGVzKHQsbyk7bnVsbCE9PWEmJmkucHVzaChhKX19KSksZSh7cmVzdWx0czppfSl9LGkucHJvdG90eXBlLmFkZE9wdGlvbnM9ZnVuY3Rpb24odCl7ZS5hcHBlbmRNYW55KHRoaXMuJGVsZW1lbnQsdCl9LGkucHJvdG90eXBlLm9wdGlvbj1mdW5jdGlvbih0KXt2YXIgaTt0LmNoaWxkcmVuPyhpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGdyb3VwIikpLmxhYmVsPXQudGV4dDp2b2lkIDAhPT0oaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKSkudGV4dENvbnRlbnQ/aS50ZXh0Q29udGVudD10LnRleHQ6aS5pbm5lclRleHQ9dC50ZXh0LHZvaWQgMCE9PXQuaWQmJihpLnZhbHVlPXQuaWQpLHQuZGlzYWJsZWQmJihpLmRpc2FibGVkPSEwKSx0LnNlbGVjdGVkJiYoaS5zZWxlY3RlZD0hMCksdC50aXRsZSYmKGkudGl0bGU9dC50aXRsZSk7dmFyIHI9bihpKSxvPXRoaXMuX25vcm1hbGl6ZUl0ZW0odCk7cmV0dXJuIG8uZWxlbWVudD1pLGUuU3RvcmVEYXRhKGksImRhdGEiLG8pLHJ9LGkucHJvdG90eXBlLml0ZW09ZnVuY3Rpb24odCl7dmFyIGk9e307aWYobnVsbCE9KGk9ZS5HZXREYXRhKHRbMF0sImRhdGEiKSkpcmV0dXJuIGk7aWYodC5pcygib3B0aW9uIikpaT17aWQ6dC52YWwoKSx0ZXh0OnQudGV4dCgpLGRpc2FibGVkOnQucHJvcCgiZGlzYWJsZWQiKSxzZWxlY3RlZDp0LnByb3AoInNlbGVjdGVkIiksdGl0bGU6dC5wcm9wKCJ0aXRsZSIpfTtlbHNlIGlmKHQuaXMoIm9wdGdyb3VwIikpe2k9e3RleHQ6dC5wcm9wKCJsYWJlbCIpLGNoaWxkcmVuOltdLHRpdGxlOnQucHJvcCgidGl0bGUiKX07Zm9yKHZhciByPXQuY2hpbGRyZW4oIm9wdGlvbiIpLG89W10sYT0wO2E8ci5sZW5ndGg7YSsrKXt2YXIgcz1uKHJbYV0pLGw9dGhpcy5pdGVtKHMpO28ucHVzaChsKX1pLmNoaWxkcmVuPW99cmV0dXJuKGk9dGhpcy5fbm9ybWFsaXplSXRlbShpKSkuZWxlbWVudD10WzBdLGUuU3RvcmVEYXRhKHRbMF0sImRhdGEiLGkpLGl9LGkucHJvdG90eXBlLl9ub3JtYWxpemVJdGVtPWZ1bmN0aW9uKHQpe3JldHVybiB0IT09T2JqZWN0KHQpJiYodD17aWQ6dCx0ZXh0OnR9KSxudWxsIT0odD1uLmV4dGVuZCh7fSx7dGV4dDoiIn0sdCkpLmlkJiYodC5pZD10LmlkLnRvU3RyaW5nKCkpLG51bGwhPXQudGV4dCYmKHQudGV4dD10LnRleHQudG9TdHJpbmcoKSksbnVsbD09dC5fcmVzdWx0SWQmJnQuaWQmJm51bGwhPXRoaXMuY29udGFpbmVyJiYodC5fcmVzdWx0SWQ9dGhpcy5nZW5lcmF0ZVJlc3VsdElkKHRoaXMuY29udGFpbmVyLHQpKSxuLmV4dGVuZCh7fSx7c2VsZWN0ZWQ6ITEsZGlzYWJsZWQ6ITF9LHQpfSxpLnByb3RvdHlwZS5tYXRjaGVzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMub3B0aW9ucy5nZXQoIm1hdGNoZXIiKSh0LGUpfSxpfSkpLGUuZGVmaW5lKCJzZWxlY3QyL2RhdGEvYXJyYXkiLFsiLi9zZWxlY3QiLCIuLi91dGlscyIsImpxdWVyeSJdLChmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gaSh0LGUpe3RoaXMuX2RhdGFUb0NvbnZlcnQ9ZS5nZXQoImRhdGEiKXx8W10saS5fX3N1cGVyX18uY29uc3RydWN0b3IuY2FsbCh0aGlzLHQsZSl9cmV0dXJuIGUuRXh0ZW5kKGksdCksaS5wcm90b3R5cGUuYmluZD1mdW5jdGlvbih0LGUpe2kuX19zdXBlcl9fLmJpbmQuY2FsbCh0aGlzLHQsZSksdGhpcy5hZGRPcHRpb25zKHRoaXMuY29udmVydFRvT3B0aW9ucyh0aGlzLl9kYXRhVG9Db252ZXJ0KSl9LGkucHJvdG90eXBlLnNlbGVjdD1mdW5jdGlvbih0KXt2YXIgZT10aGlzLiRlbGVtZW50LmZpbmQoIm9wdGlvbiIpLmZpbHRlcigoZnVuY3Rpb24oZSxuKXtyZXR1cm4gbi52YWx1ZT09dC5pZC50b1N0cmluZygpfSkpOzA9PT1lLmxlbmd0aCYmKGU9dGhpcy5vcHRpb24odCksdGhpcy5hZGRPcHRpb25zKGUpKSxpLl9fc3VwZXJfXy5zZWxlY3QuY2FsbCh0aGlzLHQpfSxpLnByb3RvdHlwZS5jb252ZXJ0VG9PcHRpb25zPWZ1bmN0aW9uKHQpe3ZhciBpPXRoaXMscj10aGlzLiRlbGVtZW50LmZpbmQoIm9wdGlvbiIpLG89ci5tYXAoKGZ1bmN0aW9uKCl7cmV0dXJuIGkuaXRlbShuKHRoaXMpKS5pZH0pKS5nZXQoKSxhPVtdO2Z1bmN0aW9uIHModCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG4odGhpcykudmFsKCk9PXQuaWR9fWZvcih2YXIgbD0wO2w8dC5sZW5ndGg7bCsrKXt2YXIgYz10aGlzLl9ub3JtYWxpemVJdGVtKHRbbF0pO2lmKDA8PW4uaW5BcnJheShjLmlkLG8pKXt2YXIgdT1yLmZpbHRlcihzKGMpKSxkPXRoaXMuaXRlbSh1KSxoPW4uZXh0ZW5kKCEwLHt9LGMsZCksZj10aGlzLm9wdGlvbihoKTt1LnJlcGxhY2VXaXRoKGYpfWVsc2V7dmFyIHA9dGhpcy5vcHRpb24oYyk7aWYoYy5jaGlsZHJlbil7dmFyIGc9dGhpcy5jb252ZXJ0VG9PcHRpb25zKGMuY2hpbGRyZW4pO2UuYXBwZW5kTWFueShwLGcpfWEucHVzaChwKX19cmV0dXJuIGF9LGl9KSksZS5kZWZpbmUoInNlbGVjdDIvZGF0YS9hamF4IixbIi4vYXJyYXkiLCIuLi91dGlscyIsImpxdWVyeSJdLChmdW5jdGlvbih0LGUsbil7ZnVuY3Rpb24gaSh0LGUpe3RoaXMuYWpheE9wdGlvbnM9dGhpcy5fYXBwbHlEZWZhdWx0cyhlLmdldCgiYWpheCIpKSxudWxsIT10aGlzLmFqYXhPcHRpb25zLnByb2Nlc3NSZXN1bHRzJiYodGhpcy5wcm9jZXNzUmVzdWx0cz10aGlzLmFqYXhPcHRpb25zLnByb2Nlc3NSZXN1bHRzKSxpLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsdCxlKX1yZXR1cm4gZS5FeHRlbmQoaSx0KSxpLnByb3RvdHlwZS5fYXBwbHlEZWZhdWx0cz1mdW5jdGlvbih0KXt2YXIgZT17ZGF0YTpmdW5jdGlvbih0KXtyZXR1cm4gbi5leHRlbmQoe30sdCx7cTp0LnRlcm19KX0sdHJhbnNwb3J0OmZ1bmN0aW9uKHQsZSxpKXt2YXIgcj1uLmFqYXgodCk7cmV0dXJuIHIudGhlbihlKSxyLmZhaWwoaSkscn19O3JldHVybiBuLmV4dGVuZCh7fSxlLHQsITApfSxpLnByb3RvdHlwZS5wcm9jZXNzUmVzdWx0cz1mdW5jdGlvbih0KXtyZXR1cm4gdH0saS5wcm90b3R5cGUucXVlcnk9ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzO251bGwhPXRoaXMuX3JlcXVlc3QmJihuLmlzRnVuY3Rpb24odGhpcy5fcmVxdWVzdC5hYm9ydCkmJnRoaXMuX3JlcXVlc3QuYWJvcnQoKSx0aGlzLl9yZXF1ZXN0PW51bGwpO3ZhciByPW4uZXh0ZW5kKHt0eXBlOiJHRVQifSx0aGlzLmFqYXhPcHRpb25zKTtmdW5jdGlvbiBvKCl7dmFyIG89ci50cmFuc3BvcnQociwoZnVuY3Rpb24ocil7dmFyIG89aS5wcm9jZXNzUmVzdWx0cyhyLHQpO2kub3B0aW9ucy5nZXQoImRlYnVnIikmJndpbmRvdy5jb25zb2xlJiZjb25zb2xlLmVycm9yJiYobyYmby5yZXN1bHRzJiZuLmlzQXJyYXkoby5yZXN1bHRzKXx8Y29uc29sZS5lcnJvcigiU2VsZWN0MjogVGhlIEFKQVggcmVzdWx0cyBkaWQgbm90IHJldHVybiBhbiBhcnJheSBpbiB0aGUgYHJlc3VsdHNgIGtleSBvZiB0aGUgcmVzcG9uc2UuIikpLGUobyl9KSwoZnVuY3Rpb24oKXsic3RhdHVzImluIG8mJigwPT09by5zdGF0dXN8fCIwIj09PW8uc3RhdHVzKXx8aS50cmlnZ2VyKCJyZXN1bHRzOm1lc3NhZ2UiLHttZXNzYWdlOiJlcnJvckxvYWRpbmcifSl9KSk7aS5fcmVxdWVzdD1vfSJmdW5jdGlvbiI9PXR5cGVvZiByLnVybCYmKHIudXJsPXIudXJsLmNhbGwodGhpcy4kZWxlbWVudCx0KSksImZ1bmN0aW9uIj09dHlwZW9mIHIuZGF0YSYmKHIuZGF0YT1yLmRhdGEuY2FsbCh0aGlzLiRlbGVtZW50LHQpKSx0aGlzLmFqYXhPcHRpb25zLmRlbGF5JiZudWxsIT10LnRlcm0/KHRoaXMuX3F1ZXJ5VGltZW91dCYmd2luZG93LmNsZWFyVGltZW91dCh0aGlzLl9xdWVyeVRpbWVvdXQpLHRoaXMuX3F1ZXJ5VGltZW91dD13aW5kb3cuc2V0VGltZW91dChvLHRoaXMuYWpheE9wdGlvbnMuZGVsYXkpKTpvKCl9LGl9KSksZS5kZWZpbmUoInNlbGVjdDIvZGF0YS90YWdzIixbImpxdWVyeSJdLChmdW5jdGlvbih0KXtmdW5jdGlvbiBlKGUsbixpKXt2YXIgcj1pLmdldCgidGFncyIpLG89aS5nZXQoImNyZWF0ZVRhZyIpO3ZvaWQgMCE9PW8mJih0aGlzLmNyZWF0ZVRhZz1vKTt2YXIgYT1pLmdldCgiaW5zZXJ0VGFnIik7aWYodm9pZCAwIT09YSYmKHRoaXMuaW5zZXJ0VGFnPWEpLGUuY2FsbCh0aGlzLG4saSksdC5pc0FycmF5KHIpKWZvcih2YXIgcz0wO3M8ci5sZW5ndGg7cysrKXt2YXIgbD1yW3NdLGM9dGhpcy5fbm9ybWFsaXplSXRlbShsKSx1PXRoaXMub3B0aW9uKGMpO3RoaXMuJGVsZW1lbnQuYXBwZW5kKHUpfX1yZXR1cm4gZS5wcm90b3R5cGUucXVlcnk9ZnVuY3Rpb24odCxlLG4pe3ZhciBpPXRoaXM7dGhpcy5fcmVtb3ZlT2xkVGFncygpLG51bGwhPWUudGVybSYmbnVsbD09ZS5wYWdlP3QuY2FsbCh0aGlzLGUsKGZ1bmN0aW9uIHQocixvKXtmb3IodmFyIGE9ci5yZXN1bHRzLHM9MDtzPGEubGVuZ3RoO3MrKyl7dmFyIGw9YVtzXSxjPW51bGwhPWwuY2hpbGRyZW4mJiF0KHtyZXN1bHRzOmwuY2hpbGRyZW59LCEwKTtpZigobC50ZXh0fHwiIikudG9VcHBlckNhc2UoKT09PShlLnRlcm18fCIiKS50b1VwcGVyQ2FzZSgpfHxjKXJldHVybiFvJiYoci5kYXRhPWEsdm9pZCBuKHIpKX1pZihvKXJldHVybiEwO3ZhciB1PWkuY3JlYXRlVGFnKGUpO2lmKG51bGwhPXUpe3ZhciBkPWkub3B0aW9uKHUpO2QuYXR0cigiZGF0YS1zZWxlY3QyLXRhZyIsITApLGkuYWRkT3B0aW9ucyhbZF0pLGkuaW5zZXJ0VGFnKGEsdSl9ci5yZXN1bHRzPWEsbihyKX0pKTp0LmNhbGwodGhpcyxlLG4pfSxlLnByb3RvdHlwZS5jcmVhdGVUYWc9ZnVuY3Rpb24oZSxuKXt2YXIgaT10LnRyaW0obi50ZXJtKTtyZXR1cm4iIj09PWk/bnVsbDp7aWQ6aSx0ZXh0Oml9fSxlLnByb3RvdHlwZS5pbnNlcnRUYWc9ZnVuY3Rpb24odCxlLG4pe2UudW5zaGlmdChuKX0sZS5wcm90b3R5cGUuX3JlbW92ZU9sZFRhZ3M9ZnVuY3Rpb24oZSl7dGhpcy4kZWxlbWVudC5maW5kKCJvcHRpb25bZGF0YS1zZWxlY3QyLXRhZ10iKS5lYWNoKChmdW5jdGlvbigpe3RoaXMuc2VsZWN0ZWR8fHQodGhpcykucmVtb3ZlKCl9KSl9LGV9KSksZS5kZWZpbmUoInNlbGVjdDIvZGF0YS90b2tlbml6ZXIiLFsianF1ZXJ5Il0sKGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCxlLG4pe3ZhciBpPW4uZ2V0KCJ0b2tlbml6ZXIiKTt2b2lkIDAhPT1pJiYodGhpcy50b2tlbml6ZXI9aSksdC5jYWxsKHRoaXMsZSxuKX1yZXR1cm4gZS5wcm90b3R5cGUuYmluZD1mdW5jdGlvbih0LGUsbil7dC5jYWxsKHRoaXMsZSxuKSx0aGlzLiRzZWFyY2g9ZS5kcm9wZG93bi4kc2VhcmNofHxlLnNlbGVjdGlvbi4kc2VhcmNofHxuLmZpbmQoIi5zZWxlY3QyLXNlYXJjaF9fZmllbGQiKX0sZS5wcm90b3R5cGUucXVlcnk9ZnVuY3Rpb24oZSxuLGkpe3ZhciByPXRoaXM7bi50ZXJtPW4udGVybXx8IiI7dmFyIG89dGhpcy50b2tlbml6ZXIobix0aGlzLm9wdGlvbnMsKGZ1bmN0aW9uKGUpe3ZhciBuLGk9ci5fbm9ybWFsaXplSXRlbShlKTtpZighci4kZWxlbWVudC5maW5kKCJvcHRpb24iKS5maWx0ZXIoKGZ1bmN0aW9uKCl7cmV0dXJuIHQodGhpcykudmFsKCk9PT1pLmlkfSkpLmxlbmd0aCl7dmFyIG89ci5vcHRpb24oaSk7by5hdHRyKCJkYXRhLXNlbGVjdDItdGFnIiwhMCksci5fcmVtb3ZlT2xkVGFncygpLHIuYWRkT3B0aW9ucyhbb10pfW49aSxyLnRyaWdnZXIoInNlbGVjdCIse2RhdGE6bn0pfSkpO28udGVybSE9PW4udGVybSYmKHRoaXMuJHNlYXJjaC5sZW5ndGgmJih0aGlzLiRzZWFyY2gudmFsKG8udGVybSksdGhpcy4kc2VhcmNoLnRyaWdnZXIoImZvY3VzIikpLG4udGVybT1vLnRlcm0pLGUuY2FsbCh0aGlzLG4saSl9LGUucHJvdG90eXBlLnRva2VuaXplcj1mdW5jdGlvbihlLG4saSxyKXtmb3IodmFyIG89aS5nZXQoInRva2VuU2VwYXJhdG9ycyIpfHxbXSxhPW4udGVybSxzPTAsbD10aGlzLmNyZWF0ZVRhZ3x8ZnVuY3Rpb24odCl7cmV0dXJue2lkOnQudGVybSx0ZXh0OnQudGVybX19O3M8YS5sZW5ndGg7KXt2YXIgYz1hW3NdO2lmKC0xIT09dC5pbkFycmF5KGMsbykpe3ZhciB1PWEuc3Vic3RyKDAscyksZD1sKHQuZXh0ZW5kKHt9LG4se3Rlcm06dX0pKTtudWxsIT1kPyhyKGQpLGE9YS5zdWJzdHIocysxKXx8IiIscz0wKTpzKyt9ZWxzZSBzKyt9cmV0dXJue3Rlcm06YX19LGV9KSksZS5kZWZpbmUoInNlbGVjdDIvZGF0YS9taW5pbXVtSW5wdXRMZW5ndGgiLFtdLChmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3RoaXMubWluaW11bUlucHV0TGVuZ3RoPW4uZ2V0KCJtaW5pbXVtSW5wdXRMZW5ndGgiKSx0LmNhbGwodGhpcyxlLG4pfXJldHVybiB0LnByb3RvdHlwZS5xdWVyeT1mdW5jdGlvbih0LGUsbil7ZS50ZXJtPWUudGVybXx8IiIsZS50ZXJtLmxlbmd0aDx0aGlzLm1pbmltdW1JbnB1dExlbmd0aD90aGlzLnRyaWdnZXIoInJlc3VsdHM6bWVzc2FnZSIse21lc3NhZ2U6ImlucHV0VG9vU2hvcnQiLGFyZ3M6e21pbmltdW06dGhpcy5taW5pbXVtSW5wdXRMZW5ndGgsaW5wdXQ6ZS50ZXJtLHBhcmFtczplfX0pOnQuY2FsbCh0aGlzLGUsbil9LHR9KSksZS5kZWZpbmUoInNlbGVjdDIvZGF0YS9tYXhpbXVtSW5wdXRMZW5ndGgiLFtdLChmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3RoaXMubWF4aW11bUlucHV0TGVuZ3RoPW4uZ2V0KCJtYXhpbXVtSW5wdXRMZW5ndGgiKSx0LmNhbGwodGhpcyxlLG4pfXJldHVybiB0LnByb3RvdHlwZS5xdWVyeT1mdW5jdGlvbih0LGUsbil7ZS50ZXJtPWUudGVybXx8IiIsMDx0aGlzLm1heGltdW1JbnB1dExlbmd0aCYmZS50ZXJtLmxlbmd0aD50aGlzLm1heGltdW1JbnB1dExlbmd0aD90aGlzLnRyaWdnZXIoInJlc3VsdHM6bWVzc2FnZSIse21lc3NhZ2U6ImlucHV0VG9vTG9uZyIsYXJnczp7bWF4aW11bTp0aGlzLm1heGltdW1JbnB1dExlbmd0aCxpbnB1dDplLnRlcm0scGFyYW1zOmV9fSk6dC5jYWxsKHRoaXMsZSxuKX0sdH0pKSxlLmRlZmluZSgic2VsZWN0Mi9kYXRhL21heGltdW1TZWxlY3Rpb25MZW5ndGgiLFtdLChmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4pe3RoaXMubWF4aW11bVNlbGVjdGlvbkxlbmd0aD1uLmdldCgibWF4aW11bVNlbGVjdGlvbkxlbmd0aCIpLHQuY2FsbCh0aGlzLGUsbil9cmV0dXJuIHQucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24odCxlLG4pe3ZhciBpPXRoaXM7dC5jYWxsKHRoaXMsZSxuKSxlLm9uKCJzZWxlY3QiLChmdW5jdGlvbigpe2kuX2NoZWNrSWZNYXhpbXVtU2VsZWN0ZWQoKX0pKX0sdC5wcm90b3R5cGUucXVlcnk9ZnVuY3Rpb24odCxlLG4pe3ZhciBpPXRoaXM7dGhpcy5fY2hlY2tJZk1heGltdW1TZWxlY3RlZCgoZnVuY3Rpb24oKXt0LmNhbGwoaSxlLG4pfSkpfSx0LnByb3RvdHlwZS5fY2hlY2tJZk1heGltdW1TZWxlY3RlZD1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7dGhpcy5jdXJyZW50KChmdW5jdGlvbih0KXt2YXIgaT1udWxsIT10P3QubGVuZ3RoOjA7MDxuLm1heGltdW1TZWxlY3Rpb25MZW5ndGgmJmk+PW4ubWF4aW11bVNlbGVjdGlvbkxlbmd0aD9uLnRyaWdnZXIoInJlc3VsdHM6bWVzc2FnZSIse21lc3NhZ2U6Im1heGltdW1TZWxlY3RlZCIsYXJnczp7bWF4aW11bTpuLm1heGltdW1TZWxlY3Rpb25MZW5ndGh9fSk6ZSYmZSgpfSkpfSx0fSkpLGUuZGVmaW5lKCJzZWxlY3QyL2Ryb3Bkb3duIixbImpxdWVyeSIsIi4vdXRpbHMiXSwoZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKHQsZSl7dGhpcy4kZWxlbWVudD10LHRoaXMub3B0aW9ucz1lLG4uX19zdXBlcl9fLmNvbnN0cnVjdG9yLmNhbGwodGhpcyl9cmV0dXJuIGUuRXh0ZW5kKG4sZS5PYnNlcnZhYmxlKSxuLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgZT10KCc8c3BhbiBjbGFzcz0ic2VsZWN0Mi1kcm9wZG93biI+PHNwYW4gY2xhc3M9InNlbGVjdDItcmVzdWx0cyI+PC9zcGFuPjwvc3Bhbj4nKTtyZXR1cm4gZS5hdHRyKCJkaXIiLHRoaXMub3B0aW9ucy5nZXQoImRpciIpKSx0aGlzLiRkcm9wZG93bj1lfSxuLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKCl7fSxuLnByb3RvdHlwZS5wb3NpdGlvbj1mdW5jdGlvbih0LGUpe30sbi5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3RoaXMuJGRyb3Bkb3duLnJlbW92ZSgpfSxufSkpLGUuZGVmaW5lKCJzZWxlY3QyL2Ryb3Bkb3duL3NlYXJjaCIsWyJqcXVlcnkiLCIuLi91dGlscyJdLChmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4oKXt9cmV0dXJuIG4ucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbihlKXt2YXIgbj1lLmNhbGwodGhpcyksaT10KCc8c3BhbiBjbGFzcz0ic2VsZWN0Mi1zZWFyY2ggc2VsZWN0Mi1zZWFyY2gtLWRyb3Bkb3duIj48aW5wdXQgY2xhc3M9InNlbGVjdDItc2VhcmNoX19maWVsZCIgdHlwZT0ic2VhcmNoIiB0YWJpbmRleD0iLTEiIGF1dG9jb21wbGV0ZT0ib2ZmIiBhdXRvY29ycmVjdD0ib2ZmIiBhdXRvY2FwaXRhbGl6ZT0ibm9uZSIgc3BlbGxjaGVjaz0iZmFsc2UiIHJvbGU9InNlYXJjaGJveCIgYXJpYS1hdXRvY29tcGxldGU9Imxpc3QiIC8+PC9zcGFuPicpO3JldHVybiB0aGlzLiRzZWFyY2hDb250YWluZXI9aSx0aGlzLiRzZWFyY2g9aS5maW5kKCJpbnB1dCIpLG4ucHJlcGVuZChpKSxufSxuLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKGUsbixpKXt2YXIgcj10aGlzLG89bi5pZCsiLXJlc3VsdHMiO2UuY2FsbCh0aGlzLG4saSksdGhpcy4kc2VhcmNoLm9uKCJrZXlkb3duIiwoZnVuY3Rpb24odCl7ci50cmlnZ2VyKCJrZXlwcmVzcyIsdCksci5fa2V5VXBQcmV2ZW50ZWQ9dC5pc0RlZmF1bHRQcmV2ZW50ZWQoKX0pKSx0aGlzLiRzZWFyY2gub24oImlucHV0IiwoZnVuY3Rpb24oZSl7dCh0aGlzKS5vZmYoImtleXVwIil9KSksdGhpcy4kc2VhcmNoLm9uKCJrZXl1cCBpbnB1dCIsKGZ1bmN0aW9uKHQpe3IuaGFuZGxlU2VhcmNoKHQpfSkpLG4ub24oIm9wZW4iLChmdW5jdGlvbigpe3IuJHNlYXJjaC5hdHRyKCJ0YWJpbmRleCIsMCksci4kc2VhcmNoLmF0dHIoImFyaWEtY29udHJvbHMiLG8pLHIuJHNlYXJjaC50cmlnZ2VyKCJmb2N1cyIpLHdpbmRvdy5zZXRUaW1lb3V0KChmdW5jdGlvbigpe3IuJHNlYXJjaC50cmlnZ2VyKCJmb2N1cyIpfSksMCl9KSksbi5vbigiY2xvc2UiLChmdW5jdGlvbigpe3IuJHNlYXJjaC5hdHRyKCJ0YWJpbmRleCIsLTEpLHIuJHNlYXJjaC5yZW1vdmVBdHRyKCJhcmlhLWNvbnRyb2xzIiksci4kc2VhcmNoLnJlbW92ZUF0dHIoImFyaWEtYWN0aXZlZGVzY2VuZGFudCIpLHIuJHNlYXJjaC52YWwoIiIpLHIuJHNlYXJjaC50cmlnZ2VyKCJibHVyIil9KSksbi5vbigiZm9jdXMiLChmdW5jdGlvbigpe24uaXNPcGVuKCl8fHIuJHNlYXJjaC50cmlnZ2VyKCJmb2N1cyIpfSkpLG4ub24oInJlc3VsdHM6YWxsIiwoZnVuY3Rpb24odCl7bnVsbCE9dC5xdWVyeS50ZXJtJiYiIiE9PXQucXVlcnkudGVybXx8KHIuc2hvd1NlYXJjaCh0KT9yLiRzZWFyY2hDb250YWluZXIucmVtb3ZlQ2xhc3MoInNlbGVjdDItc2VhcmNoLS1oaWRlIik6ci4kc2VhcmNoQ29udGFpbmVyLmFkZENsYXNzKCJzZWxlY3QyLXNlYXJjaC0taGlkZSIpKX0pKSxuLm9uKCJyZXN1bHRzOmZvY3VzIiwoZnVuY3Rpb24odCl7dC5kYXRhLl9yZXN1bHRJZD9yLiRzZWFyY2guYXR0cigiYXJpYS1hY3RpdmVkZXNjZW5kYW50Iix0LmRhdGEuX3Jlc3VsdElkKTpyLiRzZWFyY2gucmVtb3ZlQXR0cigiYXJpYS1hY3RpdmVkZXNjZW5kYW50Iil9KSl9LG4ucHJvdG90eXBlLmhhbmRsZVNlYXJjaD1mdW5jdGlvbih0KXtpZighdGhpcy5fa2V5VXBQcmV2ZW50ZWQpe3ZhciBlPXRoaXMuJHNlYXJjaC52YWwoKTt0aGlzLnRyaWdnZXIoInF1ZXJ5Iix7dGVybTplfSl9dGhpcy5fa2V5VXBQcmV2ZW50ZWQ9ITF9LG4ucHJvdG90eXBlLnNob3dTZWFyY2g9ZnVuY3Rpb24odCxlKXtyZXR1cm4hMH0sbn0pKSxlLmRlZmluZSgic2VsZWN0Mi9kcm9wZG93bi9oaWRlUGxhY2Vob2xkZXIiLFtdLChmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4saSl7dGhpcy5wbGFjZWhvbGRlcj10aGlzLm5vcm1hbGl6ZVBsYWNlaG9sZGVyKG4uZ2V0KCJwbGFjZWhvbGRlciIpKSx0LmNhbGwodGhpcyxlLG4saSl9cmV0dXJuIHQucHJvdG90eXBlLmFwcGVuZD1mdW5jdGlvbih0LGUpe2UucmVzdWx0cz10aGlzLnJlbW92ZVBsYWNlaG9sZGVyKGUucmVzdWx0cyksdC5jYWxsKHRoaXMsZSl9LHQucHJvdG90eXBlLm5vcm1hbGl6ZVBsYWNlaG9sZGVyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlJiYoZT17aWQ6IiIsdGV4dDplfSksZX0sdC5wcm90b3R5cGUucmVtb3ZlUGxhY2Vob2xkZXI9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49ZS5zbGljZSgwKSxpPWUubGVuZ3RoLTE7MDw9aTtpLS0pe3ZhciByPWVbaV07dGhpcy5wbGFjZWhvbGRlci5pZD09PXIuaWQmJm4uc3BsaWNlKGksMSl9cmV0dXJuIG59LHR9KSksZS5kZWZpbmUoInNlbGVjdDIvZHJvcGRvd24vaW5maW5pdGVTY3JvbGwiLFsianF1ZXJ5Il0sKGZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUodCxlLG4saSl7dGhpcy5sYXN0UGFyYW1zPXt9LHQuY2FsbCh0aGlzLGUsbixpKSx0aGlzLiRsb2FkaW5nTW9yZT10aGlzLmNyZWF0ZUxvYWRpbmdNb3JlKCksdGhpcy5sb2FkaW5nPSExfXJldHVybiBlLnByb3RvdHlwZS5hcHBlbmQ9ZnVuY3Rpb24odCxlKXt0aGlzLiRsb2FkaW5nTW9yZS5yZW1vdmUoKSx0aGlzLmxvYWRpbmc9ITEsdC5jYWxsKHRoaXMsZSksdGhpcy5zaG93TG9hZGluZ01vcmUoZSkmJih0aGlzLiRyZXN1bHRzLmFwcGVuZCh0aGlzLiRsb2FkaW5nTW9yZSksdGhpcy5sb2FkTW9yZUlmTmVlZGVkKCkpfSxlLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKHQsZSxuKXt2YXIgaT10aGlzO3QuY2FsbCh0aGlzLGUsbiksZS5vbigicXVlcnkiLChmdW5jdGlvbih0KXtpLmxhc3RQYXJhbXM9dCxpLmxvYWRpbmc9ITB9KSksZS5vbigicXVlcnk6YXBwZW5kIiwoZnVuY3Rpb24odCl7aS5sYXN0UGFyYW1zPXQsaS5sb2FkaW5nPSEwfSkpLHRoaXMuJHJlc3VsdHMub24oInNjcm9sbCIsdGhpcy5sb2FkTW9yZUlmTmVlZGVkLmJpbmQodGhpcykpfSxlLnByb3RvdHlwZS5sb2FkTW9yZUlmTmVlZGVkPWZ1bmN0aW9uKCl7dmFyIGU9dC5jb250YWlucyhkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsdGhpcy4kbG9hZGluZ01vcmVbMF0pO2lmKCF0aGlzLmxvYWRpbmcmJmUpe3ZhciBuPXRoaXMuJHJlc3VsdHMub2Zmc2V0KCkudG9wK3RoaXMuJHJlc3VsdHMub3V0ZXJIZWlnaHQoITEpO3RoaXMuJGxvYWRpbmdNb3JlLm9mZnNldCgpLnRvcCt0aGlzLiRsb2FkaW5nTW9yZS5vdXRlckhlaWdodCghMSk8PW4rNTAmJnRoaXMubG9hZE1vcmUoKX19LGUucHJvdG90eXBlLmxvYWRNb3JlPWZ1bmN0aW9uKCl7dGhpcy5sb2FkaW5nPSEwO3ZhciBlPXQuZXh0ZW5kKHt9LHtwYWdlOjF9LHRoaXMubGFzdFBhcmFtcyk7ZS5wYWdlKyssdGhpcy50cmlnZ2VyKCJxdWVyeTphcHBlbmQiLGUpfSxlLnByb3RvdHlwZS5zaG93TG9hZGluZ01vcmU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5wYWdpbmF0aW9uJiZlLnBhZ2luYXRpb24ubW9yZX0sZS5wcm90b3R5cGUuY3JlYXRlTG9hZGluZ01vcmU9ZnVuY3Rpb24oKXt2YXIgZT10KCc8bGkgY2xhc3M9InNlbGVjdDItcmVzdWx0c19fb3B0aW9uIHNlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1sb2FkLW1vcmUicm9sZT0ib3B0aW9uIiBhcmlhLWRpc2FibGVkPSJ0cnVlIj48L2xpPicpLG49dGhpcy5vcHRpb25zLmdldCgidHJhbnNsYXRpb25zIikuZ2V0KCJsb2FkaW5nTW9yZSIpO3JldHVybiBlLmh0bWwobih0aGlzLmxhc3RQYXJhbXMpKSxlfSxlfSkpLGUuZGVmaW5lKCJzZWxlY3QyL2Ryb3Bkb3duL2F0dGFjaEJvZHkiLFsianF1ZXJ5IiwiLi4vdXRpbHMiXSwoZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKGUsbixpKXt0aGlzLiRkcm9wZG93blBhcmVudD10KGkuZ2V0KCJkcm9wZG93blBhcmVudCIpfHxkb2N1bWVudC5ib2R5KSxlLmNhbGwodGhpcyxuLGkpfXJldHVybiBuLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKHQsZSxuKXt2YXIgaT10aGlzO3QuY2FsbCh0aGlzLGUsbiksZS5vbigib3BlbiIsKGZ1bmN0aW9uKCl7aS5fc2hvd0Ryb3Bkb3duKCksaS5fYXR0YWNoUG9zaXRpb25pbmdIYW5kbGVyKGUpLGkuX2JpbmRDb250YWluZXJSZXN1bHRIYW5kbGVycyhlKX0pKSxlLm9uKCJjbG9zZSIsKGZ1bmN0aW9uKCl7aS5faGlkZURyb3Bkb3duKCksaS5fZGV0YWNoUG9zaXRpb25pbmdIYW5kbGVyKGUpfSkpLHRoaXMuJGRyb3Bkb3duQ29udGFpbmVyLm9uKCJtb3VzZWRvd24iLChmdW5jdGlvbih0KXt0LnN0b3BQcm9wYWdhdGlvbigpfSkpfSxuLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKHQpe3QuY2FsbCh0aGlzKSx0aGlzLiRkcm9wZG93bkNvbnRhaW5lci5yZW1vdmUoKX0sbi5wcm90b3R5cGUucG9zaXRpb249ZnVuY3Rpb24odCxlLG4pe2UuYXR0cigiY2xhc3MiLG4uYXR0cigiY2xhc3MiKSksZS5yZW1vdmVDbGFzcygic2VsZWN0MiIpLGUuYWRkQ2xhc3MoInNlbGVjdDItY29udGFpbmVyLS1vcGVuIiksZS5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOi05OTk5OTl9KSx0aGlzLiRjb250YWluZXI9bn0sbi5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKGUpe3ZhciBuPXQoIjxzcGFuPjwvc3Bhbj4iKSxpPWUuY2FsbCh0aGlzKTtyZXR1cm4gbi5hcHBlbmQoaSksdGhpcy4kZHJvcGRvd25Db250YWluZXI9bn0sbi5wcm90b3R5cGUuX2hpZGVEcm9wZG93bj1mdW5jdGlvbih0KXt0aGlzLiRkcm9wZG93bkNvbnRhaW5lci5kZXRhY2goKX0sbi5wcm90b3R5cGUuX2JpbmRDb250YWluZXJSZXN1bHRIYW5kbGVycz1mdW5jdGlvbih0LGUpe2lmKCF0aGlzLl9jb250YWluZXJSZXN1bHRzSGFuZGxlcnNCb3VuZCl7dmFyIG49dGhpcztlLm9uKCJyZXN1bHRzOmFsbCIsKGZ1bmN0aW9uKCl7bi5fcG9zaXRpb25Ecm9wZG93bigpLG4uX3Jlc2l6ZURyb3Bkb3duKCl9KSksZS5vbigicmVzdWx0czphcHBlbmQiLChmdW5jdGlvbigpe24uX3Bvc2l0aW9uRHJvcGRvd24oKSxuLl9yZXNpemVEcm9wZG93bigpfSkpLGUub24oInJlc3VsdHM6bWVzc2FnZSIsKGZ1bmN0aW9uKCl7bi5fcG9zaXRpb25Ecm9wZG93bigpLG4uX3Jlc2l6ZURyb3Bkb3duKCl9KSksZS5vbigic2VsZWN0IiwoZnVuY3Rpb24oKXtuLl9wb3NpdGlvbkRyb3Bkb3duKCksbi5fcmVzaXplRHJvcGRvd24oKX0pKSxlLm9uKCJ1bnNlbGVjdCIsKGZ1bmN0aW9uKCl7bi5fcG9zaXRpb25Ecm9wZG93bigpLG4uX3Jlc2l6ZURyb3Bkb3duKCl9KSksdGhpcy5fY29udGFpbmVyUmVzdWx0c0hhbmRsZXJzQm91bmQ9ITB9fSxuLnByb3RvdHlwZS5fYXR0YWNoUG9zaXRpb25pbmdIYW5kbGVyPWZ1bmN0aW9uKG4saSl7dmFyIHI9dGhpcyxvPSJzY3JvbGwuc2VsZWN0Mi4iK2kuaWQsYT0icmVzaXplLnNlbGVjdDIuIitpLmlkLHM9Im9yaWVudGF0aW9uY2hhbmdlLnNlbGVjdDIuIitpLmlkLGw9dGhpcy4kY29udGFpbmVyLnBhcmVudHMoKS5maWx0ZXIoZS5oYXNTY3JvbGwpO2wuZWFjaCgoZnVuY3Rpb24oKXtlLlN0b3JlRGF0YSh0aGlzLCJzZWxlY3QyLXNjcm9sbC1wb3NpdGlvbiIse3g6dCh0aGlzKS5zY3JvbGxMZWZ0KCkseTp0KHRoaXMpLnNjcm9sbFRvcCgpfSl9KSksbC5vbihvLChmdW5jdGlvbihuKXt2YXIgaT1lLkdldERhdGEodGhpcywic2VsZWN0Mi1zY3JvbGwtcG9zaXRpb24iKTt0KHRoaXMpLnNjcm9sbFRvcChpLnkpfSkpLHQod2luZG93KS5vbihvKyIgIithKyIgIitzLChmdW5jdGlvbih0KXtyLl9wb3NpdGlvbkRyb3Bkb3duKCksci5fcmVzaXplRHJvcGRvd24oKX0pKX0sbi5wcm90b3R5cGUuX2RldGFjaFBvc2l0aW9uaW5nSGFuZGxlcj1mdW5jdGlvbihuLGkpe3ZhciByPSJzY3JvbGwuc2VsZWN0Mi4iK2kuaWQsbz0icmVzaXplLnNlbGVjdDIuIitpLmlkLGE9Im9yaWVudGF0aW9uY2hhbmdlLnNlbGVjdDIuIitpLmlkO3RoaXMuJGNvbnRhaW5lci5wYXJlbnRzKCkuZmlsdGVyKGUuaGFzU2Nyb2xsKS5vZmYociksdCh3aW5kb3cpLm9mZihyKyIgIitvKyIgIithKX0sbi5wcm90b3R5cGUuX3Bvc2l0aW9uRHJvcGRvd249ZnVuY3Rpb24oKXt2YXIgZT10KHdpbmRvdyksbj10aGlzLiRkcm9wZG93bi5oYXNDbGFzcygic2VsZWN0Mi1kcm9wZG93bi0tYWJvdmUiKSxpPXRoaXMuJGRyb3Bkb3duLmhhc0NsYXNzKCJzZWxlY3QyLWRyb3Bkb3duLS1iZWxvdyIpLHI9bnVsbCxvPXRoaXMuJGNvbnRhaW5lci5vZmZzZXQoKTtvLmJvdHRvbT1vLnRvcCt0aGlzLiRjb250YWluZXIub3V0ZXJIZWlnaHQoITEpO3ZhciBhPXtoZWlnaHQ6dGhpcy4kY29udGFpbmVyLm91dGVySGVpZ2h0KCExKX07YS50b3A9by50b3AsYS5ib3R0b209by50b3ArYS5oZWlnaHQ7dmFyIHM9dGhpcy4kZHJvcGRvd24ub3V0ZXJIZWlnaHQoITEpLGw9ZS5zY3JvbGxUb3AoKSxjPWUuc2Nyb2xsVG9wKCkrZS5oZWlnaHQoKSx1PWw8by50b3AtcyxkPWM+by5ib3R0b20rcyxoPXtsZWZ0Om8ubGVmdCx0b3A6YS5ib3R0b219LGY9dGhpcy4kZHJvcGRvd25QYXJlbnQ7InN0YXRpYyI9PT1mLmNzcygicG9zaXRpb24iKSYmKGY9Zi5vZmZzZXRQYXJlbnQoKSk7dmFyIHA9e3RvcDowLGxlZnQ6MH07KHQuY29udGFpbnMoZG9jdW1lbnQuYm9keSxmWzBdKXx8ZlswXS5pc0Nvbm5lY3RlZCkmJihwPWYub2Zmc2V0KCkpLGgudG9wLT1wLnRvcCxoLmxlZnQtPXAubGVmdCxufHxpfHwocj0iYmVsb3ciKSxkfHwhdXx8bj8hdSYmZCYmbiYmKHI9ImJlbG93Iik6cj0iYWJvdmUiLCgiYWJvdmUiPT1yfHxuJiYiYmVsb3ciIT09cikmJihoLnRvcD1hLnRvcC1wLnRvcC1zKSxudWxsIT1yJiYodGhpcy4kZHJvcGRvd24ucmVtb3ZlQ2xhc3MoInNlbGVjdDItZHJvcGRvd24tLWJlbG93IHNlbGVjdDItZHJvcGRvd24tLWFib3ZlIikuYWRkQ2xhc3MoInNlbGVjdDItZHJvcGRvd24tLSIrciksdGhpcy4kY29udGFpbmVyLnJlbW92ZUNsYXNzKCJzZWxlY3QyLWNvbnRhaW5lci0tYmVsb3cgc2VsZWN0Mi1jb250YWluZXItLWFib3ZlIikuYWRkQ2xhc3MoInNlbGVjdDItY29udGFpbmVyLS0iK3IpKSx0aGlzLiRkcm9wZG93bkNvbnRhaW5lci5jc3MoaCl9LG4ucHJvdG90eXBlLl9yZXNpemVEcm9wZG93bj1mdW5jdGlvbigpe3ZhciB0PXt3aWR0aDp0aGlzLiRjb250YWluZXIub3V0ZXJXaWR0aCghMSkrInB4In07dGhpcy5vcHRpb25zLmdldCgiZHJvcGRvd25BdXRvV2lkdGgiKSYmKHQubWluV2lkdGg9dC53aWR0aCx0LnBvc2l0aW9uPSJyZWxhdGl2ZSIsdC53aWR0aD0iYXV0byIpLHRoaXMuJGRyb3Bkb3duLmNzcyh0KX0sbi5wcm90b3R5cGUuX3Nob3dEcm9wZG93bj1mdW5jdGlvbih0KXt0aGlzLiRkcm9wZG93bkNvbnRhaW5lci5hcHBlbmRUbyh0aGlzLiRkcm9wZG93blBhcmVudCksdGhpcy5fcG9zaXRpb25Ecm9wZG93bigpLHRoaXMuX3Jlc2l6ZURyb3Bkb3duKCl9LG59KSksZS5kZWZpbmUoInNlbGVjdDIvZHJvcGRvd24vbWluaW11bVJlc3VsdHNGb3JTZWFyY2giLFtdLChmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4saSl7dGhpcy5taW5pbXVtUmVzdWx0c0ZvclNlYXJjaD1uLmdldCgibWluaW11bVJlc3VsdHNGb3JTZWFyY2giKSx0aGlzLm1pbmltdW1SZXN1bHRzRm9yU2VhcmNoPDAmJih0aGlzLm1pbmltdW1SZXN1bHRzRm9yU2VhcmNoPTEvMCksdC5jYWxsKHRoaXMsZSxuLGkpfXJldHVybiB0LnByb3RvdHlwZS5zaG93U2VhcmNoPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIShmdW5jdGlvbiB0KGUpe2Zvcih2YXIgbj0wLGk9MDtpPGUubGVuZ3RoO2krKyl7dmFyIHI9ZVtpXTtyLmNoaWxkcmVuP24rPXQoci5jaGlsZHJlbik6bisrfXJldHVybiBufShlLmRhdGEucmVzdWx0cyk8dGhpcy5taW5pbXVtUmVzdWx0c0ZvclNlYXJjaCkmJnQuY2FsbCh0aGlzLGUpfSx0fSkpLGUuZGVmaW5lKCJzZWxlY3QyL2Ryb3Bkb3duL3NlbGVjdE9uQ2xvc2UiLFsiLi4vdXRpbHMiXSwoZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe31yZXR1cm4gZS5wcm90b3R5cGUuYmluZD1mdW5jdGlvbih0LGUsbil7dmFyIGk9dGhpczt0LmNhbGwodGhpcyxlLG4pLGUub24oImNsb3NlIiwoZnVuY3Rpb24odCl7aS5faGFuZGxlU2VsZWN0T25DbG9zZSh0KX0pKX0sZS5wcm90b3R5cGUuX2hhbmRsZVNlbGVjdE9uQ2xvc2U9ZnVuY3Rpb24oZSxuKXtpZihuJiZudWxsIT1uLm9yaWdpbmFsU2VsZWN0MkV2ZW50KXt2YXIgaT1uLm9yaWdpbmFsU2VsZWN0MkV2ZW50O2lmKCJzZWxlY3QiPT09aS5fdHlwZXx8InVuc2VsZWN0Ij09PWkuX3R5cGUpcmV0dXJufXZhciByPXRoaXMuZ2V0SGlnaGxpZ2h0ZWRSZXN1bHRzKCk7aWYoIShyLmxlbmd0aDwxKSl7dmFyIG89dC5HZXREYXRhKHJbMF0sImRhdGEiKTtudWxsIT1vLmVsZW1lbnQmJm8uZWxlbWVudC5zZWxlY3RlZHx8bnVsbD09by5lbGVtZW50JiZvLnNlbGVjdGVkfHx0aGlzLnRyaWdnZXIoInNlbGVjdCIse2RhdGE6b30pfX0sZX0pKSxlLmRlZmluZSgic2VsZWN0Mi9kcm9wZG93bi9jbG9zZU9uU2VsZWN0IixbXSwoZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKHQsZSxuKXt2YXIgaT10aGlzO3QuY2FsbCh0aGlzLGUsbiksZS5vbigic2VsZWN0IiwoZnVuY3Rpb24odCl7aS5fc2VsZWN0VHJpZ2dlcmVkKHQpfSkpLGUub24oInVuc2VsZWN0IiwoZnVuY3Rpb24odCl7aS5fc2VsZWN0VHJpZ2dlcmVkKHQpfSkpfSx0LnByb3RvdHlwZS5fc2VsZWN0VHJpZ2dlcmVkPWZ1bmN0aW9uKHQsZSl7dmFyIG49ZS5vcmlnaW5hbEV2ZW50O24mJihuLmN0cmxLZXl8fG4ubWV0YUtleSl8fHRoaXMudHJpZ2dlcigiY2xvc2UiLHtvcmlnaW5hbEV2ZW50Om4sb3JpZ2luYWxTZWxlY3QyRXZlbnQ6ZX0pfSx0fSkpLGUuZGVmaW5lKCJzZWxlY3QyL2kxOG4vZW4iLFtdLChmdW5jdGlvbigpe3JldHVybntlcnJvckxvYWRpbmc6ZnVuY3Rpb24oKXtyZXR1cm4iVGhlIHJlc3VsdHMgY291bGQgbm90IGJlIGxvYWRlZC4ifSxpbnB1dFRvb0xvbmc6ZnVuY3Rpb24odCl7dmFyIGU9dC5pbnB1dC5sZW5ndGgtdC5tYXhpbXVtLG49IlBsZWFzZSBkZWxldGUgIitlKyIgY2hhcmFjdGVyIjtyZXR1cm4gMSE9ZSYmKG4rPSJzIiksbn0saW5wdXRUb29TaG9ydDpmdW5jdGlvbih0KXtyZXR1cm4iUGxlYXNlIGVudGVyICIrKHQubWluaW11bS10LmlucHV0Lmxlbmd0aCkrIiBvciBtb3JlIGNoYXJhY3RlcnMifSxsb2FkaW5nTW9yZTpmdW5jdGlvbigpe3JldHVybiJMb2FkaW5nIG1vcmUgcmVzdWx0c+KApiJ9LG1heGltdW1TZWxlY3RlZDpmdW5jdGlvbih0KXt2YXIgZT0iWW91IGNhbiBvbmx5IHNlbGVjdCAiK3QubWF4aW11bSsiIGl0ZW0iO3JldHVybiAxIT10Lm1heGltdW0mJihlKz0icyIpLGV9LG5vUmVzdWx0czpmdW5jdGlvbigpe3JldHVybiJObyByZXN1bHRzIGZvdW5kIn0sc2VhcmNoaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIlNlYXJjaGluZ+KApiJ9LHJlbW92ZUFsbEl0ZW1zOmZ1bmN0aW9uKCl7cmV0dXJuIlJlbW92ZSBhbGwgaXRlbXMifX19KSksZS5kZWZpbmUoInNlbGVjdDIvZGVmYXVsdHMiLFsianF1ZXJ5IiwicmVxdWlyZSIsIi4vcmVzdWx0cyIsIi4vc2VsZWN0aW9uL3NpbmdsZSIsIi4vc2VsZWN0aW9uL211bHRpcGxlIiwiLi9zZWxlY3Rpb24vcGxhY2Vob2xkZXIiLCIuL3NlbGVjdGlvbi9hbGxvd0NsZWFyIiwiLi9zZWxlY3Rpb24vc2VhcmNoIiwiLi9zZWxlY3Rpb24vZXZlbnRSZWxheSIsIi4vdXRpbHMiLCIuL3RyYW5zbGF0aW9uIiwiLi9kaWFjcml0aWNzIiwiLi9kYXRhL3NlbGVjdCIsIi4vZGF0YS9hcnJheSIsIi4vZGF0YS9hamF4IiwiLi9kYXRhL3RhZ3MiLCIuL2RhdGEvdG9rZW5pemVyIiwiLi9kYXRhL21pbmltdW1JbnB1dExlbmd0aCIsIi4vZGF0YS9tYXhpbXVtSW5wdXRMZW5ndGgiLCIuL2RhdGEvbWF4aW11bVNlbGVjdGlvbkxlbmd0aCIsIi4vZHJvcGRvd24iLCIuL2Ryb3Bkb3duL3NlYXJjaCIsIi4vZHJvcGRvd24vaGlkZVBsYWNlaG9sZGVyIiwiLi9kcm9wZG93bi9pbmZpbml0ZVNjcm9sbCIsIi4vZHJvcGRvd24vYXR0YWNoQm9keSIsIi4vZHJvcGRvd24vbWluaW11bVJlc3VsdHNGb3JTZWFyY2giLCIuL2Ryb3Bkb3duL3NlbGVjdE9uQ2xvc2UiLCIuL2Ryb3Bkb3duL2Nsb3NlT25TZWxlY3QiLCIuL2kxOG4vZW4iXSwoZnVuY3Rpb24odCxlLG4saSxyLG8sYSxzLGwsYyx1LGQsaCxmLHAsZyxtLHYseSxiLHcseCxfLFMsQyxrLFQsQSxEKXtmdW5jdGlvbiBFKCl7dGhpcy5yZXNldCgpfXJldHVybiBFLnByb3RvdHlwZS5hcHBseT1mdW5jdGlvbih1KXtpZihudWxsPT0odT10LmV4dGVuZCghMCx7fSx0aGlzLmRlZmF1bHRzLHUpKS5kYXRhQWRhcHRlcil7aWYobnVsbCE9dS5hamF4P3UuZGF0YUFkYXB0ZXI9cDpudWxsIT11LmRhdGE/dS5kYXRhQWRhcHRlcj1mOnUuZGF0YUFkYXB0ZXI9aCwwPHUubWluaW11bUlucHV0TGVuZ3RoJiYodS5kYXRhQWRhcHRlcj1jLkRlY29yYXRlKHUuZGF0YUFkYXB0ZXIsdikpLDA8dS5tYXhpbXVtSW5wdXRMZW5ndGgmJih1LmRhdGFBZGFwdGVyPWMuRGVjb3JhdGUodS5kYXRhQWRhcHRlcix5KSksMDx1Lm1heGltdW1TZWxlY3Rpb25MZW5ndGgmJih1LmRhdGFBZGFwdGVyPWMuRGVjb3JhdGUodS5kYXRhQWRhcHRlcixiKSksdS50YWdzJiYodS5kYXRhQWRhcHRlcj1jLkRlY29yYXRlKHUuZGF0YUFkYXB0ZXIsZykpLG51bGw9PXUudG9rZW5TZXBhcmF0b3JzJiZudWxsPT11LnRva2VuaXplcnx8KHUuZGF0YUFkYXB0ZXI9Yy5EZWNvcmF0ZSh1LmRhdGFBZGFwdGVyLG0pKSxudWxsIT11LnF1ZXJ5KXt2YXIgZD1lKHUuYW1kQmFzZSsiY29tcGF0L3F1ZXJ5Iik7dS5kYXRhQWRhcHRlcj1jLkRlY29yYXRlKHUuZGF0YUFkYXB0ZXIsZCl9aWYobnVsbCE9dS5pbml0U2VsZWN0aW9uKXt2YXIgRD1lKHUuYW1kQmFzZSsiY29tcGF0L2luaXRTZWxlY3Rpb24iKTt1LmRhdGFBZGFwdGVyPWMuRGVjb3JhdGUodS5kYXRhQWRhcHRlcixEKX19aWYobnVsbD09dS5yZXN1bHRzQWRhcHRlciYmKHUucmVzdWx0c0FkYXB0ZXI9bixudWxsIT11LmFqYXgmJih1LnJlc3VsdHNBZGFwdGVyPWMuRGVjb3JhdGUodS5yZXN1bHRzQWRhcHRlcixTKSksbnVsbCE9dS5wbGFjZWhvbGRlciYmKHUucmVzdWx0c0FkYXB0ZXI9Yy5EZWNvcmF0ZSh1LnJlc3VsdHNBZGFwdGVyLF8pKSx1LnNlbGVjdE9uQ2xvc2UmJih1LnJlc3VsdHNBZGFwdGVyPWMuRGVjb3JhdGUodS5yZXN1bHRzQWRhcHRlcixUKSkpLG51bGw9PXUuZHJvcGRvd25BZGFwdGVyKXtpZih1Lm11bHRpcGxlKXUuZHJvcGRvd25BZGFwdGVyPXc7ZWxzZXt2YXIgRT1jLkRlY29yYXRlKHcseCk7dS5kcm9wZG93bkFkYXB0ZXI9RX1pZigwIT09dS5taW5pbXVtUmVzdWx0c0ZvclNlYXJjaCYmKHUuZHJvcGRvd25BZGFwdGVyPWMuRGVjb3JhdGUodS5kcm9wZG93bkFkYXB0ZXIsaykpLHUuY2xvc2VPblNlbGVjdCYmKHUuZHJvcGRvd25BZGFwdGVyPWMuRGVjb3JhdGUodS5kcm9wZG93bkFkYXB0ZXIsQSkpLG51bGwhPXUuZHJvcGRvd25Dc3NDbGFzc3x8bnVsbCE9dS5kcm9wZG93bkNzc3x8bnVsbCE9dS5hZGFwdERyb3Bkb3duQ3NzQ2xhc3Mpe3ZhciBNPWUodS5hbWRCYXNlKyJjb21wYXQvZHJvcGRvd25Dc3MiKTt1LmRyb3Bkb3duQWRhcHRlcj1jLkRlY29yYXRlKHUuZHJvcGRvd25BZGFwdGVyLE0pfXUuZHJvcGRvd25BZGFwdGVyPWMuRGVjb3JhdGUodS5kcm9wZG93bkFkYXB0ZXIsQyl9aWYobnVsbD09dS5zZWxlY3Rpb25BZGFwdGVyKXtpZih1Lm11bHRpcGxlP3Uuc2VsZWN0aW9uQWRhcHRlcj1yOnUuc2VsZWN0aW9uQWRhcHRlcj1pLG51bGwhPXUucGxhY2Vob2xkZXImJih1LnNlbGVjdGlvbkFkYXB0ZXI9Yy5EZWNvcmF0ZSh1LnNlbGVjdGlvbkFkYXB0ZXIsbykpLHUuYWxsb3dDbGVhciYmKHUuc2VsZWN0aW9uQWRhcHRlcj1jLkRlY29yYXRlKHUuc2VsZWN0aW9uQWRhcHRlcixhKSksdS5tdWx0aXBsZSYmKHUuc2VsZWN0aW9uQWRhcHRlcj1jLkRlY29yYXRlKHUuc2VsZWN0aW9uQWRhcHRlcixzKSksbnVsbCE9dS5jb250YWluZXJDc3NDbGFzc3x8bnVsbCE9dS5jb250YWluZXJDc3N8fG51bGwhPXUuYWRhcHRDb250YWluZXJDc3NDbGFzcyl7dmFyIE89ZSh1LmFtZEJhc2UrImNvbXBhdC9jb250YWluZXJDc3MiKTt1LnNlbGVjdGlvbkFkYXB0ZXI9Yy5EZWNvcmF0ZSh1LnNlbGVjdGlvbkFkYXB0ZXIsTyl9dS5zZWxlY3Rpb25BZGFwdGVyPWMuRGVjb3JhdGUodS5zZWxlY3Rpb25BZGFwdGVyLGwpfXUubGFuZ3VhZ2U9dGhpcy5fcmVzb2x2ZUxhbmd1YWdlKHUubGFuZ3VhZ2UpLHUubGFuZ3VhZ2UucHVzaCgiZW4iKTtmb3IodmFyIEk9W10sUD0wO1A8dS5sYW5ndWFnZS5sZW5ndGg7UCsrKXt2YXIgTD11Lmxhbmd1YWdlW1BdOy0xPT09SS5pbmRleE9mKEwpJiZJLnB1c2goTCl9cmV0dXJuIHUubGFuZ3VhZ2U9SSx1LnRyYW5zbGF0aW9ucz10aGlzLl9wcm9jZXNzVHJhbnNsYXRpb25zKHUubGFuZ3VhZ2UsdS5kZWJ1ZyksdX0sRS5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe3JldHVybiB0LnJlcGxhY2UoL1teXHUwMDAwLVx1MDA3RV0vZywoZnVuY3Rpb24odCl7cmV0dXJuIGRbdF18fHR9KSl9dGhpcy5kZWZhdWx0cz17YW1kQmFzZToiLi8iLGFtZExhbmd1YWdlQmFzZToiLi9pMThuLyIsY2xvc2VPblNlbGVjdDohMCxkZWJ1ZzohMSxkcm9wZG93bkF1dG9XaWR0aDohMSxlc2NhcGVNYXJrdXA6Yy5lc2NhcGVNYXJrdXAsbGFuZ3VhZ2U6e30sbWF0Y2hlcjpmdW5jdGlvbiBuKGkscil7aWYoIiI9PT10LnRyaW0oaS50ZXJtKSlyZXR1cm4gcjtpZihyLmNoaWxkcmVuJiYwPHIuY2hpbGRyZW4ubGVuZ3RoKXtmb3IodmFyIG89dC5leHRlbmQoITAse30sciksYT1yLmNoaWxkcmVuLmxlbmd0aC0xOzA8PWE7YS0tKW51bGw9PW4oaSxyLmNoaWxkcmVuW2FdKSYmby5jaGlsZHJlbi5zcGxpY2UoYSwxKTtyZXR1cm4gMDxvLmNoaWxkcmVuLmxlbmd0aD9vOm4oaSxvKX12YXIgcz1lKHIudGV4dCkudG9VcHBlckNhc2UoKSxsPWUoaS50ZXJtKS50b1VwcGVyQ2FzZSgpO3JldHVybi0xPHMuaW5kZXhPZihsKT9yOm51bGx9LG1pbmltdW1JbnB1dExlbmd0aDowLG1heGltdW1JbnB1dExlbmd0aDowLG1heGltdW1TZWxlY3Rpb25MZW5ndGg6MCxtaW5pbXVtUmVzdWx0c0ZvclNlYXJjaDowLHNlbGVjdE9uQ2xvc2U6ITEsc2Nyb2xsQWZ0ZXJTZWxlY3Q6ITEsc29ydGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0fSx0ZW1wbGF0ZVJlc3VsdDpmdW5jdGlvbih0KXtyZXR1cm4gdC50ZXh0fSx0ZW1wbGF0ZVNlbGVjdGlvbjpmdW5jdGlvbih0KXtyZXR1cm4gdC50ZXh0fSx0aGVtZToiZGVmYXVsdCIsd2lkdGg6InJlc29sdmUifX0sRS5wcm90b3R5cGUuYXBwbHlGcm9tRWxlbWVudD1mdW5jdGlvbih0LGUpe3ZhciBuPXQubGFuZ3VhZ2UsaT10aGlzLmRlZmF1bHRzLmxhbmd1YWdlLHI9ZS5wcm9wKCJsYW5nIiksbz1lLmNsb3Nlc3QoIltsYW5nXSIpLnByb3AoImxhbmciKSxhPUFycmF5LnByb3RvdHlwZS5jb25jYXQuY2FsbCh0aGlzLl9yZXNvbHZlTGFuZ3VhZ2UociksdGhpcy5fcmVzb2x2ZUxhbmd1YWdlKG4pLHRoaXMuX3Jlc29sdmVMYW5ndWFnZShpKSx0aGlzLl9yZXNvbHZlTGFuZ3VhZ2UobykpO3JldHVybiB0Lmxhbmd1YWdlPWEsdH0sRS5wcm90b3R5cGUuX3Jlc29sdmVMYW5ndWFnZT1mdW5jdGlvbihlKXtpZighZSlyZXR1cm5bXTtpZih0LmlzRW1wdHlPYmplY3QoZSkpcmV0dXJuW107aWYodC5pc1BsYWluT2JqZWN0KGUpKXJldHVybltlXTt2YXIgbjtuPXQuaXNBcnJheShlKT9lOltlXTtmb3IodmFyIGk9W10scj0wO3I8bi5sZW5ndGg7cisrKWlmKGkucHVzaChuW3JdKSwic3RyaW5nIj09dHlwZW9mIG5bcl0mJjA8bltyXS5pbmRleE9mKCItIikpe3ZhciBvPW5bcl0uc3BsaXQoIi0iKVswXTtpLnB1c2gobyl9cmV0dXJuIGl9LEUucHJvdG90eXBlLl9wcm9jZXNzVHJhbnNsYXRpb25zPWZ1bmN0aW9uKGUsbil7Zm9yKHZhciBpPW5ldyB1LHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG89bmV3IHUsYT1lW3JdO2lmKCJzdHJpbmciPT10eXBlb2YgYSl0cnl7bz11LmxvYWRQYXRoKGEpfWNhdGNoKGUpe3RyeXthPXRoaXMuZGVmYXVsdHMuYW1kTGFuZ3VhZ2VCYXNlK2Esbz11LmxvYWRQYXRoKGEpfWNhdGNoKGUpe24mJndpbmRvdy5jb25zb2xlJiZjb25zb2xlLndhcm4mJmNvbnNvbGUud2FybignU2VsZWN0MjogVGhlIGxhbmd1YWdlIGZpbGUgZm9yICInK2ErJyIgY291bGQgbm90IGJlIGF1dG9tYXRpY2FsbHkgbG9hZGVkLiBBIGZhbGxiYWNrIHdpbGwgYmUgdXNlZCBpbnN0ZWFkLicpfX1lbHNlIG89dC5pc1BsYWluT2JqZWN0KGEpP25ldyB1KGEpOmE7aS5leHRlbmQobyl9cmV0dXJuIGl9LEUucHJvdG90eXBlLnNldD1mdW5jdGlvbihlLG4pe3ZhciBpPXt9O2lbdC5jYW1lbENhc2UoZSldPW47dmFyIHI9Yy5fY29udmVydERhdGEoaSk7dC5leHRlbmQoITAsdGhpcy5kZWZhdWx0cyxyKX0sbmV3IEV9KSksZS5kZWZpbmUoInNlbGVjdDIvb3B0aW9ucyIsWyJyZXF1aXJlIiwianF1ZXJ5IiwiLi9kZWZhdWx0cyIsIi4vdXRpbHMiXSwoZnVuY3Rpb24odCxlLG4saSl7ZnVuY3Rpb24gcihlLHIpe2lmKHRoaXMub3B0aW9ucz1lLG51bGwhPXImJnRoaXMuZnJvbUVsZW1lbnQociksbnVsbCE9ciYmKHRoaXMub3B0aW9ucz1uLmFwcGx5RnJvbUVsZW1lbnQodGhpcy5vcHRpb25zLHIpKSx0aGlzLm9wdGlvbnM9bi5hcHBseSh0aGlzLm9wdGlvbnMpLHImJnIuaXMoImlucHV0Iikpe3ZhciBvPXQodGhpcy5nZXQoImFtZEJhc2UiKSsiY29tcGF0L2lucHV0RGF0YSIpO3RoaXMub3B0aW9ucy5kYXRhQWRhcHRlcj1pLkRlY29yYXRlKHRoaXMub3B0aW9ucy5kYXRhQWRhcHRlcixvKX19cmV0dXJuIHIucHJvdG90eXBlLmZyb21FbGVtZW50PWZ1bmN0aW9uKHQpe3ZhciBuPVsic2VsZWN0MiJdO251bGw9PXRoaXMub3B0aW9ucy5tdWx0aXBsZSYmKHRoaXMub3B0aW9ucy5tdWx0aXBsZT10LnByb3AoIm11bHRpcGxlIikpLG51bGw9PXRoaXMub3B0aW9ucy5kaXNhYmxlZCYmKHRoaXMub3B0aW9ucy5kaXNhYmxlZD10LnByb3AoImRpc2FibGVkIikpLG51bGw9PXRoaXMub3B0aW9ucy5kaXImJih0LnByb3AoImRpciIpP3RoaXMub3B0aW9ucy5kaXI9dC5wcm9wKCJkaXIiKTp0LmNsb3Nlc3QoIltkaXJdIikucHJvcCgiZGlyIik/dGhpcy5vcHRpb25zLmRpcj10LmNsb3Nlc3QoIltkaXJdIikucHJvcCgiZGlyIik6dGhpcy5vcHRpb25zLmRpcj0ibHRyIiksdC5wcm9wKCJkaXNhYmxlZCIsdGhpcy5vcHRpb25zLmRpc2FibGVkKSx0LnByb3AoIm11bHRpcGxlIix0aGlzLm9wdGlvbnMubXVsdGlwbGUpLGkuR2V0RGF0YSh0WzBdLCJzZWxlY3QyVGFncyIpJiYodGhpcy5vcHRpb25zLmRlYnVnJiZ3aW5kb3cuY29uc29sZSYmY29uc29sZS53YXJuJiZjb25zb2xlLndhcm4oJ1NlbGVjdDI6IFRoZSBgZGF0YS1zZWxlY3QyLXRhZ3NgIGF0dHJpYnV0ZSBoYXMgYmVlbiBjaGFuZ2VkIHRvIHVzZSB0aGUgYGRhdGEtZGF0YWAgYW5kIGBkYXRhLXRhZ3M9InRydWUiYCBhdHRyaWJ1dGVzIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gZnV0dXJlIHZlcnNpb25zIG9mIFNlbGVjdDIuJyksaS5TdG9yZURhdGEodFswXSwiZGF0YSIsaS5HZXREYXRhKHRbMF0sInNlbGVjdDJUYWdzIikpLGkuU3RvcmVEYXRhKHRbMF0sInRhZ3MiLCEwKSksaS5HZXREYXRhKHRbMF0sImFqYXhVcmwiKSYmKHRoaXMub3B0aW9ucy5kZWJ1ZyYmd2luZG93LmNvbnNvbGUmJmNvbnNvbGUud2FybiYmY29uc29sZS53YXJuKCJTZWxlY3QyOiBUaGUgYGRhdGEtYWpheC11cmxgIGF0dHJpYnV0ZSBoYXMgYmVlbiBjaGFuZ2VkIHRvIGBkYXRhLWFqYXgtLXVybGAgYW5kIHN1cHBvcnQgZm9yIHRoZSBvbGQgYXR0cmlidXRlIHdpbGwgYmUgcmVtb3ZlZCBpbiBmdXR1cmUgdmVyc2lvbnMgb2YgU2VsZWN0Mi4iKSx0LmF0dHIoImFqYXgtLXVybCIsaS5HZXREYXRhKHRbMF0sImFqYXhVcmwiKSksaS5TdG9yZURhdGEodFswXSwiYWpheC1VcmwiLGkuR2V0RGF0YSh0WzBdLCJhamF4VXJsIikpKTt2YXIgcj17fTtmdW5jdGlvbiBvKHQsZSl7cmV0dXJuIGUudG9VcHBlckNhc2UoKX1mb3IodmFyIGE9MDthPHRbMF0uYXR0cmlidXRlcy5sZW5ndGg7YSsrKXt2YXIgcz10WzBdLmF0dHJpYnV0ZXNbYV0ubmFtZSxsPSJkYXRhLSI7aWYocy5zdWJzdHIoMCxsLmxlbmd0aCk9PWwpe3ZhciBjPXMuc3Vic3RyaW5nKGwubGVuZ3RoKSx1PWkuR2V0RGF0YSh0WzBdLGMpO3JbYy5yZXBsYWNlKC8tKFthLXpdKS9nLG8pXT11fX1lLmZuLmpxdWVyeSYmIjEuIj09ZS5mbi5qcXVlcnkuc3Vic3RyKDAsMikmJnRbMF0uZGF0YXNldCYmKHI9ZS5leHRlbmQoITAse30sdFswXS5kYXRhc2V0LHIpKTt2YXIgZD1lLmV4dGVuZCghMCx7fSxpLkdldERhdGEodFswXSkscik7Zm9yKHZhciBoIGluIGQ9aS5fY29udmVydERhdGEoZCkpLTE8ZS5pbkFycmF5KGgsbil8fChlLmlzUGxhaW5PYmplY3QodGhpcy5vcHRpb25zW2hdKT9lLmV4dGVuZCh0aGlzLm9wdGlvbnNbaF0sZFtoXSk6dGhpcy5vcHRpb25zW2hdPWRbaF0pO3JldHVybiB0aGlzfSxyLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMub3B0aW9uc1t0XX0sci5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHQsZSl7dGhpcy5vcHRpb25zW3RdPWV9LHJ9KSksZS5kZWZpbmUoInNlbGVjdDIvY29yZSIsWyJqcXVlcnkiLCIuL29wdGlvbnMiLCIuL3V0aWxzIiwiLi9rZXlzIl0sKGZ1bmN0aW9uKHQsZSxuLGkpe3ZhciByPWZ1bmN0aW9uKHQsaSl7bnVsbCE9bi5HZXREYXRhKHRbMF0sInNlbGVjdDIiKSYmbi5HZXREYXRhKHRbMF0sInNlbGVjdDIiKS5kZXN0cm95KCksdGhpcy4kZWxlbWVudD10LHRoaXMuaWQ9dGhpcy5fZ2VuZXJhdGVJZCh0KSxpPWl8fHt9LHRoaXMub3B0aW9ucz1uZXcgZShpLHQpLHIuX19zdXBlcl9fLmNvbnN0cnVjdG9yLmNhbGwodGhpcyk7dmFyIG89dC5hdHRyKCJ0YWJpbmRleCIpfHwwO24uU3RvcmVEYXRhKHRbMF0sIm9sZC10YWJpbmRleCIsbyksdC5hdHRyKCJ0YWJpbmRleCIsIi0xIik7dmFyIGE9dGhpcy5vcHRpb25zLmdldCgiZGF0YUFkYXB0ZXIiKTt0aGlzLmRhdGFBZGFwdGVyPW5ldyBhKHQsdGhpcy5vcHRpb25zKTt2YXIgcz10aGlzLnJlbmRlcigpO3RoaXMuX3BsYWNlQ29udGFpbmVyKHMpO3ZhciBsPXRoaXMub3B0aW9ucy5nZXQoInNlbGVjdGlvbkFkYXB0ZXIiKTt0aGlzLnNlbGVjdGlvbj1uZXcgbCh0LHRoaXMub3B0aW9ucyksdGhpcy4kc2VsZWN0aW9uPXRoaXMuc2VsZWN0aW9uLnJlbmRlcigpLHRoaXMuc2VsZWN0aW9uLnBvc2l0aW9uKHRoaXMuJHNlbGVjdGlvbixzKTt2YXIgYz10aGlzLm9wdGlvbnMuZ2V0KCJkcm9wZG93bkFkYXB0ZXIiKTt0aGlzLmRyb3Bkb3duPW5ldyBjKHQsdGhpcy5vcHRpb25zKSx0aGlzLiRkcm9wZG93bj10aGlzLmRyb3Bkb3duLnJlbmRlcigpLHRoaXMuZHJvcGRvd24ucG9zaXRpb24odGhpcy4kZHJvcGRvd24scyk7dmFyIHU9dGhpcy5vcHRpb25zLmdldCgicmVzdWx0c0FkYXB0ZXIiKTt0aGlzLnJlc3VsdHM9bmV3IHUodCx0aGlzLm9wdGlvbnMsdGhpcy5kYXRhQWRhcHRlciksdGhpcy4kcmVzdWx0cz10aGlzLnJlc3VsdHMucmVuZGVyKCksdGhpcy5yZXN1bHRzLnBvc2l0aW9uKHRoaXMuJHJlc3VsdHMsdGhpcy4kZHJvcGRvd24pO3ZhciBkPXRoaXM7dGhpcy5fYmluZEFkYXB0ZXJzKCksdGhpcy5fcmVnaXN0ZXJEb21FdmVudHMoKSx0aGlzLl9yZWdpc3RlckRhdGFFdmVudHMoKSx0aGlzLl9yZWdpc3RlclNlbGVjdGlvbkV2ZW50cygpLHRoaXMuX3JlZ2lzdGVyRHJvcGRvd25FdmVudHMoKSx0aGlzLl9yZWdpc3RlclJlc3VsdHNFdmVudHMoKSx0aGlzLl9yZWdpc3RlckV2ZW50cygpLHRoaXMuZGF0YUFkYXB0ZXIuY3VycmVudCgoZnVuY3Rpb24odCl7ZC50cmlnZ2VyKCJzZWxlY3Rpb246dXBkYXRlIix7ZGF0YTp0fSl9KSksdC5hZGRDbGFzcygic2VsZWN0Mi1oaWRkZW4tYWNjZXNzaWJsZSIpLHQuYXR0cigiYXJpYS1oaWRkZW4iLCJ0cnVlIiksdGhpcy5fc3luY0F0dHJpYnV0ZXMoKSxuLlN0b3JlRGF0YSh0WzBdLCJzZWxlY3QyIix0aGlzKSx0LmRhdGEoInNlbGVjdDIiLHRoaXMpfTtyZXR1cm4gbi5FeHRlbmQocixuLk9ic2VydmFibGUpLHIucHJvdG90eXBlLl9nZW5lcmF0ZUlkPWZ1bmN0aW9uKHQpe3JldHVybiJzZWxlY3QyLSIrKG51bGwhPXQuYXR0cigiaWQiKT90LmF0dHIoImlkIik6bnVsbCE9dC5hdHRyKCJuYW1lIik/dC5hdHRyKCJuYW1lIikrIi0iK24uZ2VuZXJhdGVDaGFycygyKTpuLmdlbmVyYXRlQ2hhcnMoNCkpLnJlcGxhY2UoLyg6fFwufFxbfFxdfCwpL2csIiIpfSxyLnByb3RvdHlwZS5fcGxhY2VDb250YWluZXI9ZnVuY3Rpb24odCl7dC5pbnNlcnRBZnRlcih0aGlzLiRlbGVtZW50KTt2YXIgZT10aGlzLl9yZXNvbHZlV2lkdGgodGhpcy4kZWxlbWVudCx0aGlzLm9wdGlvbnMuZ2V0KCJ3aWR0aCIpKTtudWxsIT1lJiZ0LmNzcygid2lkdGgiLGUpfSxyLnByb3RvdHlwZS5fcmVzb2x2ZVdpZHRoPWZ1bmN0aW9uKHQsZSl7dmFyIG49L153aWR0aDooKFstK10/KFswLTldKlwuKT9bMC05XSspKHB4fGVtfGV4fCV8aW58Y218bW18cHR8cGMpKS9pO2lmKCJyZXNvbHZlIj09ZSl7dmFyIGk9dGhpcy5fcmVzb2x2ZVdpZHRoKHQsInN0eWxlIik7cmV0dXJuIG51bGwhPWk/aTp0aGlzLl9yZXNvbHZlV2lkdGgodCwiZWxlbWVudCIpfWlmKCJlbGVtZW50Ij09ZSl7dmFyIHI9dC5vdXRlcldpZHRoKCExKTtyZXR1cm4gcjw9MD8iYXV0byI6cisicHgifWlmKCJzdHlsZSIhPWUpcmV0dXJuImNvbXB1dGVkc3R5bGUiIT1lP2U6d2luZG93LmdldENvbXB1dGVkU3R5bGUodFswXSkud2lkdGg7dmFyIG89dC5hdHRyKCJzdHlsZSIpO2lmKCJzdHJpbmciIT10eXBlb2YgbylyZXR1cm4gbnVsbDtmb3IodmFyIGE9by5zcGxpdCgiOyIpLHM9MCxsPWEubGVuZ3RoO3M8bDtzKz0xKXt2YXIgYz1hW3NdLnJlcGxhY2UoL1xzL2csIiIpLm1hdGNoKG4pO2lmKG51bGwhPT1jJiYxPD1jLmxlbmd0aClyZXR1cm4gY1sxXX1yZXR1cm4gbnVsbH0sci5wcm90b3R5cGUuX2JpbmRBZGFwdGVycz1mdW5jdGlvbigpe3RoaXMuZGF0YUFkYXB0ZXIuYmluZCh0aGlzLHRoaXMuJGNvbnRhaW5lciksdGhpcy5zZWxlY3Rpb24uYmluZCh0aGlzLHRoaXMuJGNvbnRhaW5lciksdGhpcy5kcm9wZG93bi5iaW5kKHRoaXMsdGhpcy4kY29udGFpbmVyKSx0aGlzLnJlc3VsdHMuYmluZCh0aGlzLHRoaXMuJGNvbnRhaW5lcil9LHIucHJvdG90eXBlLl9yZWdpc3RlckRvbUV2ZW50cz1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy4kZWxlbWVudC5vbigiY2hhbmdlLnNlbGVjdDIiLChmdW5jdGlvbigpe3QuZGF0YUFkYXB0ZXIuY3VycmVudCgoZnVuY3Rpb24oZSl7dC50cmlnZ2VyKCJzZWxlY3Rpb246dXBkYXRlIix7ZGF0YTplfSl9KSl9KSksdGhpcy4kZWxlbWVudC5vbigiZm9jdXMuc2VsZWN0MiIsKGZ1bmN0aW9uKGUpe3QudHJpZ2dlcigiZm9jdXMiLGUpfSkpLHRoaXMuX3N5bmNBPW4uYmluZCh0aGlzLl9zeW5jQXR0cmlidXRlcyx0aGlzKSx0aGlzLl9zeW5jUz1uLmJpbmQodGhpcy5fc3luY1N1YnRyZWUsdGhpcyksdGhpcy4kZWxlbWVudFswXS5hdHRhY2hFdmVudCYmdGhpcy4kZWxlbWVudFswXS5hdHRhY2hFdmVudCgib25wcm9wZXJ0eWNoYW5nZSIsdGhpcy5fc3luY0EpO3ZhciBlPXdpbmRvdy5NdXRhdGlvbk9ic2VydmVyfHx3aW5kb3cuV2ViS2l0TXV0YXRpb25PYnNlcnZlcnx8d2luZG93Lk1vek11dGF0aW9uT2JzZXJ2ZXI7bnVsbCE9ZT8odGhpcy5fb2JzZXJ2ZXI9bmV3IGUoKGZ1bmN0aW9uKGUpe3QuX3N5bmNBKCksdC5fc3luY1MobnVsbCxlKX0pKSx0aGlzLl9vYnNlcnZlci5vYnNlcnZlKHRoaXMuJGVsZW1lbnRbMF0se2F0dHJpYnV0ZXM6ITAsY2hpbGRMaXN0OiEwLHN1YnRyZWU6ITF9KSk6dGhpcy4kZWxlbWVudFswXS5hZGRFdmVudExpc3RlbmVyJiYodGhpcy4kZWxlbWVudFswXS5hZGRFdmVudExpc3RlbmVyKCJET01BdHRyTW9kaWZpZWQiLHQuX3N5bmNBLCExKSx0aGlzLiRlbGVtZW50WzBdLmFkZEV2ZW50TGlzdGVuZXIoIkRPTU5vZGVJbnNlcnRlZCIsdC5fc3luY1MsITEpLHRoaXMuJGVsZW1lbnRbMF0uYWRkRXZlbnRMaXN0ZW5lcigiRE9NTm9kZVJlbW92ZWQiLHQuX3N5bmNTLCExKSl9LHIucHJvdG90eXBlLl9yZWdpc3RlckRhdGFFdmVudHM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuZGF0YUFkYXB0ZXIub24oIioiLChmdW5jdGlvbihlLG4pe3QudHJpZ2dlcihlLG4pfSkpfSxyLnByb3RvdHlwZS5fcmVnaXN0ZXJTZWxlY3Rpb25FdmVudHM9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLG49WyJ0b2dnbGUiLCJmb2N1cyJdO3RoaXMuc2VsZWN0aW9uLm9uKCJ0b2dnbGUiLChmdW5jdGlvbigpe2UudG9nZ2xlRHJvcGRvd24oKX0pKSx0aGlzLnNlbGVjdGlvbi5vbigiZm9jdXMiLChmdW5jdGlvbih0KXtlLmZvY3VzKHQpfSkpLHRoaXMuc2VsZWN0aW9uLm9uKCIqIiwoZnVuY3Rpb24oaSxyKXstMT09PXQuaW5BcnJheShpLG4pJiZlLnRyaWdnZXIoaSxyKX0pKX0sci5wcm90b3R5cGUuX3JlZ2lzdGVyRHJvcGRvd25FdmVudHM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuZHJvcGRvd24ub24oIioiLChmdW5jdGlvbihlLG4pe3QudHJpZ2dlcihlLG4pfSkpfSxyLnByb3RvdHlwZS5fcmVnaXN0ZXJSZXN1bHRzRXZlbnRzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLnJlc3VsdHMub24oIioiLChmdW5jdGlvbihlLG4pe3QudHJpZ2dlcihlLG4pfSkpfSxyLnByb3RvdHlwZS5fcmVnaXN0ZXJFdmVudHM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMub24oIm9wZW4iLChmdW5jdGlvbigpe3QuJGNvbnRhaW5lci5hZGRDbGFzcygic2VsZWN0Mi1jb250YWluZXItLW9wZW4iKX0pKSx0aGlzLm9uKCJjbG9zZSIsKGZ1bmN0aW9uKCl7dC4kY29udGFpbmVyLnJlbW92ZUNsYXNzKCJzZWxlY3QyLWNvbnRhaW5lci0tb3BlbiIpfSkpLHRoaXMub24oImVuYWJsZSIsKGZ1bmN0aW9uKCl7dC4kY29udGFpbmVyLnJlbW92ZUNsYXNzKCJzZWxlY3QyLWNvbnRhaW5lci0tZGlzYWJsZWQiKX0pKSx0aGlzLm9uKCJkaXNhYmxlIiwoZnVuY3Rpb24oKXt0LiRjb250YWluZXIuYWRkQ2xhc3MoInNlbGVjdDItY29udGFpbmVyLS1kaXNhYmxlZCIpfSkpLHRoaXMub24oImJsdXIiLChmdW5jdGlvbigpe3QuJGNvbnRhaW5lci5yZW1vdmVDbGFzcygic2VsZWN0Mi1jb250YWluZXItLWZvY3VzIil9KSksdGhpcy5vbigicXVlcnkiLChmdW5jdGlvbihlKXt0LmlzT3BlbigpfHx0LnRyaWdnZXIoIm9wZW4iLHt9KSx0aGlzLmRhdGFBZGFwdGVyLnF1ZXJ5KGUsKGZ1bmN0aW9uKG4pe3QudHJpZ2dlcigicmVzdWx0czphbGwiLHtkYXRhOm4scXVlcnk6ZX0pfSkpfSkpLHRoaXMub24oInF1ZXJ5OmFwcGVuZCIsKGZ1bmN0aW9uKGUpe3RoaXMuZGF0YUFkYXB0ZXIucXVlcnkoZSwoZnVuY3Rpb24obil7dC50cmlnZ2VyKCJyZXN1bHRzOmFwcGVuZCIse2RhdGE6bixxdWVyeTplfSl9KSl9KSksdGhpcy5vbigia2V5cHJlc3MiLChmdW5jdGlvbihlKXt2YXIgbj1lLndoaWNoO3QuaXNPcGVuKCk/bj09PWkuRVNDfHxuPT09aS5UQUJ8fG49PT1pLlVQJiZlLmFsdEtleT8odC5jbG9zZShlKSxlLnByZXZlbnREZWZhdWx0KCkpOm49PT1pLkVOVEVSPyh0LnRyaWdnZXIoInJlc3VsdHM6c2VsZWN0Iix7fSksZS5wcmV2ZW50RGVmYXVsdCgpKTpuPT09aS5TUEFDRSYmZS5jdHJsS2V5Pyh0LnRyaWdnZXIoInJlc3VsdHM6dG9nZ2xlIix7fSksZS5wcmV2ZW50RGVmYXVsdCgpKTpuPT09aS5VUD8odC50cmlnZ2VyKCJyZXN1bHRzOnByZXZpb3VzIix7fSksZS5wcmV2ZW50RGVmYXVsdCgpKTpuPT09aS5ET1dOJiYodC50cmlnZ2VyKCJyZXN1bHRzOm5leHQiLHt9KSxlLnByZXZlbnREZWZhdWx0KCkpOihuPT09aS5FTlRFUnx8bj09PWkuU1BBQ0V8fG49PT1pLkRPV04mJmUuYWx0S2V5KSYmKHQub3BlbigpLGUucHJldmVudERlZmF1bHQoKSl9KSl9LHIucHJvdG90eXBlLl9zeW5jQXR0cmlidXRlcz1mdW5jdGlvbigpe3RoaXMub3B0aW9ucy5zZXQoImRpc2FibGVkIix0aGlzLiRlbGVtZW50LnByb3AoImRpc2FibGVkIikpLHRoaXMuaXNEaXNhYmxlZCgpPyh0aGlzLmlzT3BlbigpJiZ0aGlzLmNsb3NlKCksdGhpcy50cmlnZ2VyKCJkaXNhYmxlIix7fSkpOnRoaXMudHJpZ2dlcigiZW5hYmxlIix7fSl9LHIucHJvdG90eXBlLl9pc0NoYW5nZU11dGF0aW9uPWZ1bmN0aW9uKGUsbil7dmFyIGk9ITEscj10aGlzO2lmKCFlfHwhZS50YXJnZXR8fCJPUFRJT04iPT09ZS50YXJnZXQubm9kZU5hbWV8fCJPUFRHUk9VUCI9PT1lLnRhcmdldC5ub2RlTmFtZSl7aWYobilpZihuLmFkZGVkTm9kZXMmJjA8bi5hZGRlZE5vZGVzLmxlbmd0aClmb3IodmFyIG89MDtvPG4uYWRkZWROb2Rlcy5sZW5ndGg7bysrKW4uYWRkZWROb2Rlc1tvXS5zZWxlY3RlZCYmKGk9ITApO2Vsc2Ugbi5yZW1vdmVkTm9kZXMmJjA8bi5yZW1vdmVkTm9kZXMubGVuZ3RoP2k9ITA6dC5pc0FycmF5KG4pJiZ0LmVhY2gobiwoZnVuY3Rpb24odCxlKXtpZihyLl9pc0NoYW5nZU11dGF0aW9uKHQsZSkpcmV0dXJuIShpPSEwKX0pKTtlbHNlIGk9ITA7cmV0dXJuIGl9fSxyLnByb3RvdHlwZS5fc3luY1N1YnRyZWU9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLl9pc0NoYW5nZU11dGF0aW9uKHQsZSksaT10aGlzO24mJnRoaXMuZGF0YUFkYXB0ZXIuY3VycmVudCgoZnVuY3Rpb24odCl7aS50cmlnZ2VyKCJzZWxlY3Rpb246dXBkYXRlIix7ZGF0YTp0fSl9KSl9LHIucHJvdG90eXBlLnRyaWdnZXI9ZnVuY3Rpb24odCxlKXt2YXIgbj1yLl9fc3VwZXJfXy50cmlnZ2VyLGk9e29wZW46Im9wZW5pbmciLGNsb3NlOiJjbG9zaW5nIixzZWxlY3Q6InNlbGVjdGluZyIsdW5zZWxlY3Q6InVuc2VsZWN0aW5nIixjbGVhcjoiY2xlYXJpbmcifTtpZih2b2lkIDA9PT1lJiYoZT17fSksdCBpbiBpKXt2YXIgbz1pW3RdLGE9e3ByZXZlbnRlZDohMSxuYW1lOnQsYXJnczplfTtpZihuLmNhbGwodGhpcyxvLGEpLGEucHJldmVudGVkKXJldHVybiB2b2lkKGUucHJldmVudGVkPSEwKX1uLmNhbGwodGhpcyx0LGUpfSxyLnByb3RvdHlwZS50b2dnbGVEcm9wZG93bj1mdW5jdGlvbigpe3RoaXMuaXNEaXNhYmxlZCgpfHwodGhpcy5pc09wZW4oKT90aGlzLmNsb3NlKCk6dGhpcy5vcGVuKCkpfSxyLnByb3RvdHlwZS5vcGVuPWZ1bmN0aW9uKCl7dGhpcy5pc09wZW4oKXx8dGhpcy5pc0Rpc2FibGVkKCl8fHRoaXMudHJpZ2dlcigicXVlcnkiLHt9KX0sci5wcm90b3R5cGUuY2xvc2U9ZnVuY3Rpb24odCl7dGhpcy5pc09wZW4oKSYmdGhpcy50cmlnZ2VyKCJjbG9zZSIse29yaWdpbmFsRXZlbnQ6dH0pfSxyLnByb3RvdHlwZS5pc0VuYWJsZWQ9ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5pc0Rpc2FibGVkKCl9LHIucHJvdG90eXBlLmlzRGlzYWJsZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRpb25zLmdldCgiZGlzYWJsZWQiKX0sci5wcm90b3R5cGUuaXNPcGVuPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGNvbnRhaW5lci5oYXNDbGFzcygic2VsZWN0Mi1jb250YWluZXItLW9wZW4iKX0sci5wcm90b3R5cGUuaGFzRm9jdXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kY29udGFpbmVyLmhhc0NsYXNzKCJzZWxlY3QyLWNvbnRhaW5lci0tZm9jdXMiKX0sci5wcm90b3R5cGUuZm9jdXM9ZnVuY3Rpb24odCl7dGhpcy5oYXNGb2N1cygpfHwodGhpcy4kY29udGFpbmVyLmFkZENsYXNzKCJzZWxlY3QyLWNvbnRhaW5lci0tZm9jdXMiKSx0aGlzLnRyaWdnZXIoImZvY3VzIix7fSkpfSxyLnByb3RvdHlwZS5lbmFibGU9ZnVuY3Rpb24odCl7dGhpcy5vcHRpb25zLmdldCgiZGVidWciKSYmd2luZG93LmNvbnNvbGUmJmNvbnNvbGUud2FybiYmY29uc29sZS53YXJuKCdTZWxlY3QyOiBUaGUgYHNlbGVjdDIoImVuYWJsZSIpYCBtZXRob2QgaGFzIGJlZW4gZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGxhdGVyIFNlbGVjdDIgdmVyc2lvbnMuIFVzZSAkZWxlbWVudC5wcm9wKCJkaXNhYmxlZCIpIGluc3RlYWQuJyksbnVsbCE9dCYmMCE9PXQubGVuZ3RofHwodD1bITBdKTt2YXIgZT0hdFswXTt0aGlzLiRlbGVtZW50LnByb3AoImRpc2FibGVkIixlKX0sci5wcm90b3R5cGUuZGF0YT1mdW5jdGlvbigpe3RoaXMub3B0aW9ucy5nZXQoImRlYnVnIikmJjA8YXJndW1lbnRzLmxlbmd0aCYmd2luZG93LmNvbnNvbGUmJmNvbnNvbGUud2FybiYmY29uc29sZS53YXJuKCdTZWxlY3QyOiBEYXRhIGNhbiBubyBsb25nZXIgYmUgc2V0IHVzaW5nIGBzZWxlY3QyKCJkYXRhIilgLiBZb3Ugc2hvdWxkIGNvbnNpZGVyIHNldHRpbmcgdGhlIHZhbHVlIGluc3RlYWQgdXNpbmcgYCRlbGVtZW50LnZhbCgpYC4nKTt2YXIgdD1bXTtyZXR1cm4gdGhpcy5kYXRhQWRhcHRlci5jdXJyZW50KChmdW5jdGlvbihlKXt0PWV9KSksdH0sci5wcm90b3R5cGUudmFsPWZ1bmN0aW9uKGUpe2lmKHRoaXMub3B0aW9ucy5nZXQoImRlYnVnIikmJndpbmRvdy5jb25zb2xlJiZjb25zb2xlLndhcm4mJmNvbnNvbGUud2FybignU2VsZWN0MjogVGhlIGBzZWxlY3QyKCJ2YWwiKWAgbWV0aG9kIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBsYXRlciBTZWxlY3QyIHZlcnNpb25zLiBVc2UgJGVsZW1lbnQudmFsKCkgaW5zdGVhZC4nKSxudWxsPT1lfHwwPT09ZS5sZW5ndGgpcmV0dXJuIHRoaXMuJGVsZW1lbnQudmFsKCk7dmFyIG49ZVswXTt0LmlzQXJyYXkobikmJihuPXQubWFwKG4sKGZ1bmN0aW9uKHQpe3JldHVybiB0LnRvU3RyaW5nKCl9KSkpLHRoaXMuJGVsZW1lbnQudmFsKG4pLnRyaWdnZXIoImlucHV0IikudHJpZ2dlcigiY2hhbmdlIil9LHIucHJvdG90eXBlLmRlc3Ryb3k9ZnVuY3Rpb24oKXt0aGlzLiRjb250YWluZXIucmVtb3ZlKCksdGhpcy4kZWxlbWVudFswXS5kZXRhY2hFdmVudCYmdGhpcy4kZWxlbWVudFswXS5kZXRhY2hFdmVudCgib25wcm9wZXJ0eWNoYW5nZSIsdGhpcy5fc3luY0EpLG51bGwhPXRoaXMuX29ic2VydmVyPyh0aGlzLl9vYnNlcnZlci5kaXNjb25uZWN0KCksdGhpcy5fb2JzZXJ2ZXI9bnVsbCk6dGhpcy4kZWxlbWVudFswXS5yZW1vdmVFdmVudExpc3RlbmVyJiYodGhpcy4kZWxlbWVudFswXS5yZW1vdmVFdmVudExpc3RlbmVyKCJET01BdHRyTW9kaWZpZWQiLHRoaXMuX3N5bmNBLCExKSx0aGlzLiRlbGVtZW50WzBdLnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTU5vZGVJbnNlcnRlZCIsdGhpcy5fc3luY1MsITEpLHRoaXMuJGVsZW1lbnRbMF0ucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NTm9kZVJlbW92ZWQiLHRoaXMuX3N5bmNTLCExKSksdGhpcy5fc3luY0E9bnVsbCx0aGlzLl9zeW5jUz1udWxsLHRoaXMuJGVsZW1lbnQub2ZmKCIuc2VsZWN0MiIpLHRoaXMuJGVsZW1lbnQuYXR0cigidGFiaW5kZXgiLG4uR2V0RGF0YSh0aGlzLiRlbGVtZW50WzBdLCJvbGQtdGFiaW5kZXgiKSksdGhpcy4kZWxlbWVudC5yZW1vdmVDbGFzcygic2VsZWN0Mi1oaWRkZW4tYWNjZXNzaWJsZSIpLHRoaXMuJGVsZW1lbnQuYXR0cigiYXJpYS1oaWRkZW4iLCJmYWxzZSIpLG4uUmVtb3ZlRGF0YSh0aGlzLiRlbGVtZW50WzBdKSx0aGlzLiRlbGVtZW50LnJlbW92ZURhdGEoInNlbGVjdDIiKSx0aGlzLmRhdGFBZGFwdGVyLmRlc3Ryb3koKSx0aGlzLnNlbGVjdGlvbi5kZXN0cm95KCksdGhpcy5kcm9wZG93bi5kZXN0cm95KCksdGhpcy5yZXN1bHRzLmRlc3Ryb3koKSx0aGlzLmRhdGFBZGFwdGVyPW51bGwsdGhpcy5zZWxlY3Rpb249bnVsbCx0aGlzLmRyb3Bkb3duPW51bGwsdGhpcy5yZXN1bHRzPW51bGx9LHIucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBlPXQoJzxzcGFuIGNsYXNzPSJzZWxlY3QyIHNlbGVjdDItY29udGFpbmVyIj48c3BhbiBjbGFzcz0ic2VsZWN0aW9uIj48L3NwYW4+PHNwYW4gY2xhc3M9ImRyb3Bkb3duLXdyYXBwZXIiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L3NwYW4+PC9zcGFuPicpO3JldHVybiBlLmF0dHIoImRpciIsdGhpcy5vcHRpb25zLmdldCgiZGlyIikpLHRoaXMuJGNvbnRhaW5lcj1lLHRoaXMuJGNvbnRhaW5lci5hZGRDbGFzcygic2VsZWN0Mi1jb250YWluZXItLSIrdGhpcy5vcHRpb25zLmdldCgidGhlbWUiKSksbi5TdG9yZURhdGEoZVswXSwiZWxlbWVudCIsdGhpcy4kZWxlbWVudCksZX0scn0pKSxlLmRlZmluZSgic2VsZWN0Mi9jb21wYXQvdXRpbHMiLFsianF1ZXJ5Il0sKGZ1bmN0aW9uKHQpe3JldHVybntzeW5jQ3NzQ2xhc3NlczpmdW5jdGlvbihlLG4saSl7dmFyIHIsbyxhPVtdOyhyPXQudHJpbShlLmF0dHIoImNsYXNzIikpKSYmdCgocj0iIityKS5zcGxpdCgvXHMrLykpLmVhY2goKGZ1bmN0aW9uKCl7MD09PXRoaXMuaW5kZXhPZigic2VsZWN0Mi0iKSYmYS5wdXNoKHRoaXMpfSkpLChyPXQudHJpbShuLmF0dHIoImNsYXNzIikpKSYmdCgocj0iIityKS5zcGxpdCgvXHMrLykpLmVhY2goKGZ1bmN0aW9uKCl7MCE9PXRoaXMuaW5kZXhPZigic2VsZWN0Mi0iKSYmbnVsbCE9KG89aSh0aGlzKSkmJmEucHVzaChvKX0pKSxlLmF0dHIoImNsYXNzIixhLmpvaW4oIiAiKSl9fX0pKSxlLmRlZmluZSgic2VsZWN0Mi9jb21wYXQvY29udGFpbmVyQ3NzIixbImpxdWVyeSIsIi4vdXRpbHMiXSwoZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKHQpe3JldHVybiBudWxsfWZ1bmN0aW9uIGkoKXt9cmV0dXJuIGkucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbihpKXt2YXIgcj1pLmNhbGwodGhpcyksbz10aGlzLm9wdGlvbnMuZ2V0KCJjb250YWluZXJDc3NDbGFzcyIpfHwiIjt0LmlzRnVuY3Rpb24obykmJihvPW8odGhpcy4kZWxlbWVudCkpO3ZhciBhPXRoaXMub3B0aW9ucy5nZXQoImFkYXB0Q29udGFpbmVyQ3NzQ2xhc3MiKTtpZihhPWF8fG4sLTEhPT1vLmluZGV4T2YoIjphbGw6Iikpe289by5yZXBsYWNlKCI6YWxsOiIsIiIpO3ZhciBzPWE7YT1mdW5jdGlvbih0KXt2YXIgZT1zKHQpO3JldHVybiBudWxsIT1lP2UrIiAiK3Q6dH19dmFyIGw9dGhpcy5vcHRpb25zLmdldCgiY29udGFpbmVyQ3NzIil8fHt9O3JldHVybiB0LmlzRnVuY3Rpb24obCkmJihsPWwodGhpcy4kZWxlbWVudCkpLGUuc3luY0Nzc0NsYXNzZXMocix0aGlzLiRlbGVtZW50LGEpLHIuY3NzKGwpLHIuYWRkQ2xhc3Mobykscn0saX0pKSxlLmRlZmluZSgic2VsZWN0Mi9jb21wYXQvZHJvcGRvd25Dc3MiLFsianF1ZXJ5IiwiLi91dGlscyJdLChmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4odCl7cmV0dXJuIG51bGx9ZnVuY3Rpb24gaSgpe31yZXR1cm4gaS5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKGkpe3ZhciByPWkuY2FsbCh0aGlzKSxvPXRoaXMub3B0aW9ucy5nZXQoImRyb3Bkb3duQ3NzQ2xhc3MiKXx8IiI7dC5pc0Z1bmN0aW9uKG8pJiYobz1vKHRoaXMuJGVsZW1lbnQpKTt2YXIgYT10aGlzLm9wdGlvbnMuZ2V0KCJhZGFwdERyb3Bkb3duQ3NzQ2xhc3MiKTtpZihhPWF8fG4sLTEhPT1vLmluZGV4T2YoIjphbGw6Iikpe289by5yZXBsYWNlKCI6YWxsOiIsIiIpO3ZhciBzPWE7YT1mdW5jdGlvbih0KXt2YXIgZT1zKHQpO3JldHVybiBudWxsIT1lP2UrIiAiK3Q6dH19dmFyIGw9dGhpcy5vcHRpb25zLmdldCgiZHJvcGRvd25Dc3MiKXx8e307cmV0dXJuIHQuaXNGdW5jdGlvbihsKSYmKGw9bCh0aGlzLiRlbGVtZW50KSksZS5zeW5jQ3NzQ2xhc3NlcyhyLHRoaXMuJGVsZW1lbnQsYSksci5jc3MobCksci5hZGRDbGFzcyhvKSxyfSxpfSkpLGUuZGVmaW5lKCJzZWxlY3QyL2NvbXBhdC9pbml0U2VsZWN0aW9uIixbImpxdWVyeSJdLChmdW5jdGlvbih0KXtmdW5jdGlvbiBlKHQsZSxuKXtuLmdldCgiZGVidWciKSYmd2luZG93LmNvbnNvbGUmJmNvbnNvbGUud2FybiYmY29uc29sZS53YXJuKCJTZWxlY3QyOiBUaGUgYGluaXRTZWxlY3Rpb25gIG9wdGlvbiBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGEgY3VzdG9tIGRhdGEgYWRhcHRlciB0aGF0IG92ZXJyaWRlcyB0aGUgYGN1cnJlbnRgIG1ldGhvZC4gVGhpcyBtZXRob2QgaXMgbm93IGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBpbnN0ZWFkIG9mIGEgc2luZ2xlIHRpbWUgd2hlbiB0aGUgaW5zdGFuY2UgaXMgaW5pdGlhbGl6ZWQuIFN1cHBvcnQgd2lsbCBiZSByZW1vdmVkIGZvciB0aGUgYGluaXRTZWxlY3Rpb25gIG9wdGlvbiBpbiBmdXR1cmUgdmVyc2lvbnMgb2YgU2VsZWN0MiIpLHRoaXMuaW5pdFNlbGVjdGlvbj1uLmdldCgiaW5pdFNlbGVjdGlvbiIpLHRoaXMuX2lzSW5pdGlhbGl6ZWQ9ITEsdC5jYWxsKHRoaXMsZSxuKX1yZXR1cm4gZS5wcm90b3R5cGUuY3VycmVudD1mdW5jdGlvbihlLG4pe3ZhciBpPXRoaXM7dGhpcy5faXNJbml0aWFsaXplZD9lLmNhbGwodGhpcyxuKTp0aGlzLmluaXRTZWxlY3Rpb24uY2FsbChudWxsLHRoaXMuJGVsZW1lbnQsKGZ1bmN0aW9uKGUpe2kuX2lzSW5pdGlhbGl6ZWQ9ITAsdC5pc0FycmF5KGUpfHwoZT1bZV0pLG4oZSl9KSl9LGV9KSksZS5kZWZpbmUoInNlbGVjdDIvY29tcGF0L2lucHV0RGF0YSIsWyJqcXVlcnkiLCIuLi91dGlscyJdLChmdW5jdGlvbih0LGUpe2Z1bmN0aW9uIG4odCxlLG4pe3RoaXMuX2N1cnJlbnREYXRhPVtdLHRoaXMuX3ZhbHVlU2VwYXJhdG9yPW4uZ2V0KCJ2YWx1ZVNlcGFyYXRvciIpfHwiLCIsImhpZGRlbiI9PT1lLnByb3AoInR5cGUiKSYmbi5nZXQoImRlYnVnIikmJmNvbnNvbGUmJmNvbnNvbGUud2FybiYmY29uc29sZS53YXJuKCJTZWxlY3QyOiBVc2luZyBhIGhpZGRlbiBpbnB1dCB3aXRoIFNlbGVjdDIgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCBhbmQgbWF5IHN0b3Agd29ya2luZyBpbiB0aGUgZnV0dXJlLiBJdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgYSBgPHNlbGVjdD5gIGVsZW1lbnQgaW5zdGVhZC4iKSx0LmNhbGwodGhpcyxlLG4pfXJldHVybiBuLnByb3RvdHlwZS5jdXJyZW50PWZ1bmN0aW9uKGUsbil7ZnVuY3Rpb24gaShlLG4pe3ZhciByPVtdO3JldHVybiBlLnNlbGVjdGVkfHwtMSE9PXQuaW5BcnJheShlLmlkLG4pPyhlLnNlbGVjdGVkPSEwLHIucHVzaChlKSk6ZS5zZWxlY3RlZD0hMSxlLmNoaWxkcmVuJiZyLnB1c2guYXBwbHkocixpKGUuY2hpbGRyZW4sbikpLHJ9Zm9yKHZhciByPVtdLG89MDtvPHRoaXMuX2N1cnJlbnREYXRhLmxlbmd0aDtvKyspe3ZhciBhPXRoaXMuX2N1cnJlbnREYXRhW29dO3IucHVzaC5hcHBseShyLGkoYSx0aGlzLiRlbGVtZW50LnZhbCgpLnNwbGl0KHRoaXMuX3ZhbHVlU2VwYXJhdG9yKSkpfW4ocil9LG4ucHJvdG90eXBlLnNlbGVjdD1mdW5jdGlvbihlLG4pe2lmKHRoaXMub3B0aW9ucy5nZXQoIm11bHRpcGxlIikpe3ZhciBpPXRoaXMuJGVsZW1lbnQudmFsKCk7aSs9dGhpcy5fdmFsdWVTZXBhcmF0b3Irbi5pZCx0aGlzLiRlbGVtZW50LnZhbChpKSx0aGlzLiRlbGVtZW50LnRyaWdnZXIoImlucHV0IikudHJpZ2dlcigiY2hhbmdlIil9ZWxzZSB0aGlzLmN1cnJlbnQoKGZ1bmN0aW9uKGUpe3QubWFwKGUsKGZ1bmN0aW9uKHQpe3Quc2VsZWN0ZWQ9ITF9KSl9KSksdGhpcy4kZWxlbWVudC52YWwobi5pZCksdGhpcy4kZWxlbWVudC50cmlnZ2VyKCJpbnB1dCIpLnRyaWdnZXIoImNoYW5nZSIpfSxuLnByb3RvdHlwZS51bnNlbGVjdD1mdW5jdGlvbih0LGUpe3ZhciBuPXRoaXM7ZS5zZWxlY3RlZD0hMSx0aGlzLmN1cnJlbnQoKGZ1bmN0aW9uKHQpe2Zvcih2YXIgaT1bXSxyPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBvPXRbcl07ZS5pZCE9by5pZCYmaS5wdXNoKG8uaWQpfW4uJGVsZW1lbnQudmFsKGkuam9pbihuLl92YWx1ZVNlcGFyYXRvcikpLG4uJGVsZW1lbnQudHJpZ2dlcigiaW5wdXQiKS50cmlnZ2VyKCJjaGFuZ2UiKX0pKX0sbi5wcm90b3R5cGUucXVlcnk9ZnVuY3Rpb24odCxlLG4pe2Zvcih2YXIgaT1bXSxyPTA7cjx0aGlzLl9jdXJyZW50RGF0YS5sZW5ndGg7cisrKXt2YXIgbz10aGlzLl9jdXJyZW50RGF0YVtyXSxhPXRoaXMubWF0Y2hlcyhlLG8pO251bGwhPT1hJiZpLnB1c2goYSl9bih7cmVzdWx0czppfSl9LG4ucHJvdG90eXBlLmFkZE9wdGlvbnM9ZnVuY3Rpb24obixpKXt2YXIgcj10Lm1hcChpLChmdW5jdGlvbih0KXtyZXR1cm4gZS5HZXREYXRhKHRbMF0sImRhdGEiKX0pKTt0aGlzLl9jdXJyZW50RGF0YS5wdXNoLmFwcGx5KHRoaXMuX2N1cnJlbnREYXRhLHIpfSxufSkpLGUuZGVmaW5lKCJzZWxlY3QyL2NvbXBhdC9tYXRjaGVyIixbImpxdWVyeSJdLChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKG4saSl7dmFyIHI9dC5leHRlbmQoITAse30saSk7aWYobnVsbD09bi50ZXJtfHwiIj09PXQudHJpbShuLnRlcm0pKXJldHVybiByO2lmKGkuY2hpbGRyZW4pe2Zvcih2YXIgbz1pLmNoaWxkcmVuLmxlbmd0aC0xOzA8PW87by0tKXt2YXIgYT1pLmNoaWxkcmVuW29dO2Uobi50ZXJtLGEudGV4dCxhKXx8ci5jaGlsZHJlbi5zcGxpY2UobywxKX1pZigwPHIuY2hpbGRyZW4ubGVuZ3RoKXJldHVybiByfXJldHVybiBlKG4udGVybSxpLnRleHQsaSk/cjpudWxsfX19KSksZS5kZWZpbmUoInNlbGVjdDIvY29tcGF0L3F1ZXJ5IixbXSwoZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXtuLmdldCgiZGVidWciKSYmd2luZG93LmNvbnNvbGUmJmNvbnNvbGUud2FybiYmY29uc29sZS53YXJuKCJTZWxlY3QyOiBUaGUgYHF1ZXJ5YCBvcHRpb24gaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBhIGN1c3RvbSBkYXRhIGFkYXB0ZXIgdGhhdCBvdmVycmlkZXMgdGhlIGBxdWVyeWAgbWV0aG9kLiBTdXBwb3J0IHdpbGwgYmUgcmVtb3ZlZCBmb3IgdGhlIGBxdWVyeWAgb3B0aW9uIGluIGZ1dHVyZSB2ZXJzaW9ucyBvZiBTZWxlY3QyLiIpLHQuY2FsbCh0aGlzLGUsbil9cmV0dXJuIHQucHJvdG90eXBlLnF1ZXJ5PWZ1bmN0aW9uKHQsZSxuKXtlLmNhbGxiYWNrPW4sdGhpcy5vcHRpb25zLmdldCgicXVlcnkiKS5jYWxsKG51bGwsZSl9LHR9KSksZS5kZWZpbmUoInNlbGVjdDIvZHJvcGRvd24vYXR0YWNoQ29udGFpbmVyIixbXSwoZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt0LmNhbGwodGhpcyxlLG4pfXJldHVybiB0LnByb3RvdHlwZS5wb3NpdGlvbj1mdW5jdGlvbih0LGUsbil7bi5maW5kKCIuZHJvcGRvd24td3JhcHBlciIpLmFwcGVuZChlKSxlLmFkZENsYXNzKCJzZWxlY3QyLWRyb3Bkb3duLS1iZWxvdyIpLG4uYWRkQ2xhc3MoInNlbGVjdDItY29udGFpbmVyLS1iZWxvdyIpfSx0fSkpLGUuZGVmaW5lKCJzZWxlY3QyL2Ryb3Bkb3duL3N0b3BQcm9wYWdhdGlvbiIsW10sKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuYmluZD1mdW5jdGlvbih0LGUsbil7dC5jYWxsKHRoaXMsZSxuKSx0aGlzLiRkcm9wZG93bi5vbihbImJsdXIiLCJjaGFuZ2UiLCJjbGljayIsImRibGNsaWNrIiwiZm9jdXMiLCJmb2N1c2luIiwiZm9jdXNvdXQiLCJpbnB1dCIsImtleWRvd24iLCJrZXl1cCIsImtleXByZXNzIiwibW91c2Vkb3duIiwibW91c2VlbnRlciIsIm1vdXNlbGVhdmUiLCJtb3VzZW1vdmUiLCJtb3VzZW92ZXIiLCJtb3VzZXVwIiwic2VhcmNoIiwidG91Y2hlbmQiLCJ0b3VjaHN0YXJ0Il0uam9pbigiICIpLChmdW5jdGlvbih0KXt0LnN0b3BQcm9wYWdhdGlvbigpfSkpfSx0fSkpLGUuZGVmaW5lKCJzZWxlY3QyL3NlbGVjdGlvbi9zdG9wUHJvcGFnYXRpb24iLFtdLChmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24odCxlLG4pe3QuY2FsbCh0aGlzLGUsbiksdGhpcy4kc2VsZWN0aW9uLm9uKFsiYmx1ciIsImNoYW5nZSIsImNsaWNrIiwiZGJsY2xpY2siLCJmb2N1cyIsImZvY3VzaW4iLCJmb2N1c291dCIsImlucHV0Iiwia2V5ZG93biIsImtleXVwIiwia2V5cHJlc3MiLCJtb3VzZWRvd24iLCJtb3VzZWVudGVyIiwibW91c2VsZWF2ZSIsIm1vdXNlbW92ZSIsIm1vdXNlb3ZlciIsIm1vdXNldXAiLCJzZWFyY2giLCJ0b3VjaGVuZCIsInRvdWNoc3RhcnQiXS5qb2luKCIgIiksKGZ1bmN0aW9uKHQpe3Quc3RvcFByb3BhZ2F0aW9uKCl9KSl9LHR9KSksdj1mdW5jdGlvbih0KXt2YXIgZSxuLGk9WyJ3aGVlbCIsIm1vdXNld2hlZWwiLCJET01Nb3VzZVNjcm9sbCIsIk1vek1vdXNlUGl4ZWxTY3JvbGwiXSxyPSJvbndoZWVsImluIGRvY3VtZW50fHw5PD1kb2N1bWVudC5kb2N1bWVudE1vZGU/WyJ3aGVlbCJdOlsibW91c2V3aGVlbCIsIkRvbU1vdXNlU2Nyb2xsIiwiTW96TW91c2VQaXhlbFNjcm9sbCJdLG89QXJyYXkucHJvdG90eXBlLnNsaWNlO2lmKHQuZXZlbnQuZml4SG9va3MpZm9yKHZhciBhPWkubGVuZ3RoO2E7KXQuZXZlbnQuZml4SG9va3NbaVstLWFdXT10LmV2ZW50Lm1vdXNlSG9va3M7dmFyIHM9dC5ldmVudC5zcGVjaWFsLm1vdXNld2hlZWw9e3ZlcnNpb246IjMuMS4xMiIsc2V0dXA6ZnVuY3Rpb24oKXtpZih0aGlzLmFkZEV2ZW50TGlzdGVuZXIpZm9yKHZhciBlPXIubGVuZ3RoO2U7KXRoaXMuYWRkRXZlbnRMaXN0ZW5lcihyWy0tZV0sbCwhMSk7ZWxzZSB0aGlzLm9ubW91c2V3aGVlbD1sO3QuZGF0YSh0aGlzLCJtb3VzZXdoZWVsLWxpbmUtaGVpZ2h0IixzLmdldExpbmVIZWlnaHQodGhpcykpLHQuZGF0YSh0aGlzLCJtb3VzZXdoZWVsLXBhZ2UtaGVpZ2h0IixzLmdldFBhZ2VIZWlnaHQodGhpcykpfSx0ZWFyZG93bjpmdW5jdGlvbigpe2lmKHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcilmb3IodmFyIGU9ci5sZW5ndGg7ZTspdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyKHJbLS1lXSxsLCExKTtlbHNlIHRoaXMub25tb3VzZXdoZWVsPW51bGw7dC5yZW1vdmVEYXRhKHRoaXMsIm1vdXNld2hlZWwtbGluZS1oZWlnaHQiKSx0LnJlbW92ZURhdGEodGhpcywibW91c2V3aGVlbC1wYWdlLWhlaWdodCIpfSxnZXRMaW5lSGVpZ2h0OmZ1bmN0aW9uKGUpe3ZhciBuPXQoZSksaT1uWyJvZmZzZXRQYXJlbnQiaW4gdC5mbj8ib2Zmc2V0UGFyZW50IjoicGFyZW50Il0oKTtyZXR1cm4gaS5sZW5ndGh8fChpPXQoImJvZHkiKSkscGFyc2VJbnQoaS5jc3MoImZvbnRTaXplIiksMTApfHxwYXJzZUludChuLmNzcygiZm9udFNpemUiKSwxMCl8fDE2fSxnZXRQYWdlSGVpZ2h0OmZ1bmN0aW9uKGUpe3JldHVybiB0KGUpLmhlaWdodCgpfSxzZXR0aW5nczp7YWRqdXN0T2xkRGVsdGFzOiEwLG5vcm1hbGl6ZU9mZnNldDohMH19O2Z1bmN0aW9uIGwoaSl7dmFyIHIsYT1pfHx3aW5kb3cuZXZlbnQsbD1vLmNhbGwoYXJndW1lbnRzLDEpLGQ9MCxoPTAsZj0wLHA9MCxnPTA7aWYoKGk9dC5ldmVudC5maXgoYSkpLnR5cGU9Im1vdXNld2hlZWwiLCJkZXRhaWwiaW4gYSYmKGY9LTEqYS5kZXRhaWwpLCJ3aGVlbERlbHRhImluIGEmJihmPWEud2hlZWxEZWx0YSksIndoZWVsRGVsdGFZImluIGEmJihmPWEud2hlZWxEZWx0YVkpLCJ3aGVlbERlbHRhWCJpbiBhJiYoaD0tMSphLndoZWVsRGVsdGFYKSwiYXhpcyJpbiBhJiZhLmF4aXM9PT1hLkhPUklaT05UQUxfQVhJUyYmKGg9LTEqZixmPTApLGQ9MD09PWY/aDpmLCJkZWx0YVkiaW4gYSYmKGQ9Zj0tMSphLmRlbHRhWSksImRlbHRhWCJpbiBhJiYoaD1hLmRlbHRhWCwwPT09ZiYmKGQ9LTEqaCkpLDAhPT1mfHwwIT09aCl7aWYoMT09PWEuZGVsdGFNb2RlKXt2YXIgbT10LmRhdGEodGhpcywibW91c2V3aGVlbC1saW5lLWhlaWdodCIpO2QqPW0sZio9bSxoKj1tfWVsc2UgaWYoMj09PWEuZGVsdGFNb2RlKXt2YXIgdj10LmRhdGEodGhpcywibW91c2V3aGVlbC1wYWdlLWhlaWdodCIpO2QqPXYsZio9dixoKj12fWlmKHI9TWF0aC5tYXgoTWF0aC5hYnMoZiksTWF0aC5hYnMoaCkpLCghbnx8cjxuKSYmdShhLG49cikmJihuLz00MCksdShhLHIpJiYoZC89NDAsaC89NDAsZi89NDApLGQ9TWF0aFsxPD1kPyJmbG9vciI6ImNlaWwiXShkL24pLGg9TWF0aFsxPD1oPyJmbG9vciI6ImNlaWwiXShoL24pLGY9TWF0aFsxPD1mPyJmbG9vciI6ImNlaWwiXShmL24pLHMuc2V0dGluZ3Mubm9ybWFsaXplT2Zmc2V0JiZ0aGlzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCl7dmFyIHk9dGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtwPWkuY2xpZW50WC15LmxlZnQsZz1pLmNsaWVudFkteS50b3B9cmV0dXJuIGkuZGVsdGFYPWgsaS5kZWx0YVk9ZixpLmRlbHRhRmFjdG9yPW4saS5vZmZzZXRYPXAsaS5vZmZzZXRZPWcsaS5kZWx0YU1vZGU9MCxsLnVuc2hpZnQoaSxkLGgsZiksZSYmY2xlYXJUaW1lb3V0KGUpLGU9c2V0VGltZW91dChjLDIwMCksKHQuZXZlbnQuZGlzcGF0Y2h8fHQuZXZlbnQuaGFuZGxlKS5hcHBseSh0aGlzLGwpfX1mdW5jdGlvbiBjKCl7bj1udWxsfWZ1bmN0aW9uIHUodCxlKXtyZXR1cm4gcy5zZXR0aW5ncy5hZGp1c3RPbGREZWx0YXMmJiJtb3VzZXdoZWVsIj09PXQudHlwZSYmZSUxMjA9PTB9dC5mbi5leHRlbmQoe21vdXNld2hlZWw6ZnVuY3Rpb24odCl7cmV0dXJuIHQ/dGhpcy5iaW5kKCJtb3VzZXdoZWVsIix0KTp0aGlzLnRyaWdnZXIoIm1vdXNld2hlZWwiKX0sdW5tb3VzZXdoZWVsOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnVuYmluZCgibW91c2V3aGVlbCIsdCl9fSl9LCJmdW5jdGlvbiI9PXR5cGVvZiBlLmRlZmluZSYmZS5kZWZpbmUuYW1kP2UuZGVmaW5lKCJqcXVlcnktbW91c2V3aGVlbCIsWyJqcXVlcnkiXSx2KToib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9djp2KHQpLGUuZGVmaW5lKCJqcXVlcnkuc2VsZWN0MiIsWyJqcXVlcnkiLCJqcXVlcnktbW91c2V3aGVlbCIsIi4vc2VsZWN0Mi9jb3JlIiwiLi9zZWxlY3QyL2RlZmF1bHRzIiwiLi9zZWxlY3QyL3V0aWxzIl0sKGZ1bmN0aW9uKHQsZSxuLGkscil7aWYobnVsbD09dC5mbi5zZWxlY3QyKXt2YXIgbz1bIm9wZW4iLCJjbG9zZSIsImRlc3Ryb3kiXTt0LmZuLnNlbGVjdDI9ZnVuY3Rpb24oZSl7aWYoIm9iamVjdCI9PXR5cGVvZihlPWV8fHt9KSlyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpe3ZhciBpPXQuZXh0ZW5kKCEwLHt9LGUpO25ldyBuKHQodGhpcyksaSl9KSksdGhpcztpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGFyZ3VtZW50cyBmb3IgU2VsZWN0MjogIitlKTt2YXIgaSxhPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKTtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpe3ZhciB0PXIuR2V0RGF0YSh0aGlzLCJzZWxlY3QyIik7bnVsbD09dCYmd2luZG93LmNvbnNvbGUmJmNvbnNvbGUuZXJyb3ImJmNvbnNvbGUuZXJyb3IoIlRoZSBzZWxlY3QyKCciK2UrIicpIG1ldGhvZCB3YXMgY2FsbGVkIG9uIGFuIGVsZW1lbnQgdGhhdCBpcyBub3QgdXNpbmcgU2VsZWN0Mi4iKSxpPXRbZV0uYXBwbHkodCxhKX0pKSwtMTx0LmluQXJyYXkoZSxvKT90aGlzOml9fXJldHVybiBudWxsPT10LmZuLnNlbGVjdDIuZGVmYXVsdHMmJih0LmZuLnNlbGVjdDIuZGVmYXVsdHM9aSksbn0pKSx7ZGVmaW5lOmUuZGVmaW5lLHJlcXVpcmU6ZS5yZXF1aXJlfX0oKSxuPWUucmVxdWlyZSgianF1ZXJ5LnNlbGVjdDIiKTtyZXR1cm4gdC5mbi5zZWxlY3QyLmFtZD1lLG59KSksZnVuY3Rpb24odCxlKXsib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMmJiJ1bmRlZmluZWQiIT10eXBlb2YgbW9kdWxlP21vZHVsZS5leHBvcnRzPWUoKToiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShlKToodD10fHxzZWxmKS5Td2VldGFsZXJ0Mj1lKCl9KHRoaXMsKGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQoZSl7cmV0dXJuKHQ9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdC5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmdCE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIHR9KShlKX1mdW5jdGlvbiBlKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gbih0LGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgaT1lW25dO2kuZW51bWVyYWJsZT1pLmVudW1lcmFibGV8fCExLGkuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBpJiYoaS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsaS5rZXksaSl9fWZ1bmN0aW9uIGkodCxlLGkpe3JldHVybiBlJiZuKHQucHJvdG90eXBlLGUpLGkmJm4odCxpKSx0fWZ1bmN0aW9uIHIoKXtyZXR1cm4ocj1PYmplY3QuYXNzaWdufHxmdW5jdGlvbih0KXtmb3IodmFyIGU9MTtlPGFyZ3VtZW50cy5sZW5ndGg7ZSsrKXt2YXIgbj1hcmd1bWVudHNbZV07Zm9yKHZhciBpIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4saSkmJih0W2ldPW5baV0pfXJldHVybiB0fSkuYXBwbHkodGhpcyxhcmd1bWVudHMpfWZ1bmN0aW9uIG8odCl7cmV0dXJuKG89T2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5nZXRQcm90b3R5cGVPZjpmdW5jdGlvbih0KXtyZXR1cm4gdC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KX0pKHQpfWZ1bmN0aW9uIGEodCxlKXtyZXR1cm4oYT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuX19wcm90b19fPWUsdH0pKHQsZSl9ZnVuY3Rpb24gcygpe2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgUmVmbGVjdHx8IVJlZmxlY3QuY29uc3RydWN0KXJldHVybiExO2lmKFJlZmxlY3QuY29uc3RydWN0LnNoYW0pcmV0dXJuITE7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFByb3h5KXJldHVybiEwO3RyeXtyZXR1cm4gRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChEYXRlLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2godCl7cmV0dXJuITF9fWZ1bmN0aW9uIGwodCxlLG4pe3JldHVybihsPXMoKT9SZWZsZWN0LmNvbnN0cnVjdDpmdW5jdGlvbih0LGUsbil7dmFyIGk9W251bGxdO2kucHVzaC5hcHBseShpLGUpO3ZhciByPW5ldyhGdW5jdGlvbi5iaW5kLmFwcGx5KHQsaSkpO3JldHVybiBuJiZhKHIsbi5wcm90b3R5cGUpLHJ9KS5hcHBseShudWxsLGFyZ3VtZW50cyl9ZnVuY3Rpb24gYyh0LGUpe3JldHVybiFlfHwib2JqZWN0IiE9dHlwZW9mIGUmJiJmdW5jdGlvbiIhPXR5cGVvZiBlP2Z1bmN0aW9uKHQpe2lmKHZvaWQgMD09PXQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gdH0odCk6ZX1mdW5jdGlvbiB1KHQsZSxuKXtyZXR1cm4odT0idW5kZWZpbmVkIiE9dHlwZW9mIFJlZmxlY3QmJlJlZmxlY3QuZ2V0P1JlZmxlY3QuZ2V0OmZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1mdW5jdGlvbih0LGUpe2Zvcig7IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LGUpJiZudWxsIT09KHQ9byh0KSk7KTtyZXR1cm4gdH0odCxlKTtpZihpKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGksZSk7cmV0dXJuIHIuZ2V0P3IuZ2V0LmNhbGwobik6ci52YWx1ZX19KSh0LGUsbnx8dCl9ZnVuY3Rpb24gZCh0KXtyZXR1cm4gT2JqZWN0LmtleXModCkubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdFtlXX0pKX1mdW5jdGlvbiBoKHQpe3JldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0KX1mdW5jdGlvbiBmKHQsZSl7dmFyIG47bj0nIicuY29uY2F0KHQsJyIgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UuIFBsZWFzZSB1c2UgIicpLmNvbmNhdChlLCciIGluc3RlYWQuJyksLTE9PT1XLmluZGV4T2YobikmJihXLnB1c2gobiksQihuKSl9ZnVuY3Rpb24gcCh0KXtyZXR1cm4gdCYmImZ1bmN0aW9uIj09dHlwZW9mIHQudG9Qcm9taXNlfWZ1bmN0aW9uIGcodCl7cmV0dXJuIHAodCk/dC50b1Byb21pc2UoKTpQcm9taXNlLnJlc29sdmUodCl9ZnVuY3Rpb24gbSh0KXtyZXR1cm4gdCYmUHJvbWlzZS5yZXNvbHZlKHQpPT09dH1mdW5jdGlvbiB2KGUpe3JldHVybiBlIGluc3RhbmNlb2YgRWxlbWVudHx8Im9iamVjdCI9PT10KG49ZSkmJm4uanF1ZXJ5O3ZhciBufWZ1bmN0aW9uIHkodCl7dmFyIGU9e307Zm9yKHZhciBuIGluIHQpZVt0W25dXT0ic3dhbDItIit0W25dO3JldHVybiBlfWZ1bmN0aW9uIGIodCl7dmFyIGU9WCgpO3JldHVybiBlP2UucXVlcnlTZWxlY3Rvcih0KTpudWxsfWZ1bmN0aW9uIHcodCl7cmV0dXJuIGIoIi4iLmNvbmNhdCh0KSl9ZnVuY3Rpb24geCgpe3JldHVybiBoKFEoKS5xdWVyeVNlbGVjdG9yQWxsKCIuIi5jb25jYXQoWS5pY29uKSkpfWZ1bmN0aW9uIF8oKXt2YXIgdD14KCkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gbXQodCl9KSk7cmV0dXJuIHQubGVuZ3RoP3RbMF06bnVsbH1mdW5jdGlvbiBTKCl7cmV0dXJuIHcoWS50aXRsZSl9ZnVuY3Rpb24gQygpe3JldHVybiB3KFkuY29udGVudCl9ZnVuY3Rpb24gaygpe3JldHVybiB3KFkuaW1hZ2UpfWZ1bmN0aW9uIFQoKXtyZXR1cm4gdyhZWyJwcm9ncmVzcy1zdGVwcyJdKX1mdW5jdGlvbiBBKCl7cmV0dXJuIHcoWVsidmFsaWRhdGlvbi1tZXNzYWdlIl0pfWZ1bmN0aW9uIEQoKXtyZXR1cm4gYigiLiIuY29uY2F0KFkuYWN0aW9ucywiIC4iKS5jb25jYXQoWS5jb25maXJtKSl9ZnVuY3Rpb24gRSgpe3JldHVybiBiKCIuIi5jb25jYXQoWS5hY3Rpb25zLCIgLiIpLmNvbmNhdChZLmNhbmNlbCkpfWZ1bmN0aW9uIE0oKXtyZXR1cm4gdyhZLmFjdGlvbnMpfWZ1bmN0aW9uIE8oKXtyZXR1cm4gdyhZLmhlYWRlcil9ZnVuY3Rpb24gSSgpe3JldHVybiB3KFkuZm9vdGVyKX1mdW5jdGlvbiBQKCl7cmV0dXJuIHcoWVsidGltZXItcHJvZ3Jlc3MtYmFyIl0pfWZ1bmN0aW9uIEwoKXtyZXR1cm4gdyhZLmNsb3NlKX1mdW5jdGlvbiBOKCl7dmFyIHQ9aChRKCkucXVlcnlTZWxlY3RvckFsbCgnW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PSItMSJdKTpub3QoW3RhYmluZGV4PSIwIl0pJykpLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9cGFyc2VJbnQodC5nZXRBdHRyaWJ1dGUoInRhYmluZGV4IikpLChlPXBhcnNlSW50KGUuZ2V0QXR0cmlidXRlKCJ0YWJpbmRleCIpKSk8dD8xOnQ8ZT8tMTowfSkpLGU9aChRKCkucXVlcnlTZWxlY3RvckFsbCgnXG4gIGFbaHJlZl0sXG4gIGFyZWFbaHJlZl0sXG4gIGlucHV0Om5vdChbZGlzYWJsZWRdKSxcbiAgc2VsZWN0Om5vdChbZGlzYWJsZWRdKSxcbiAgdGV4dGFyZWE6bm90KFtkaXNhYmxlZF0pLFxuICBidXR0b246bm90KFtkaXNhYmxlZF0pLFxuICBpZnJhbWUsXG4gIG9iamVjdCxcbiAgZW1iZWQsXG4gIFt0YWJpbmRleD0iMCJdLFxuICBbY29udGVudGVkaXRhYmxlXSxcbiAgYXVkaW9bY29udHJvbHNdLFxuICB2aWRlb1tjb250cm9sc10sXG4gIHN1bW1hcnlcbicpKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiItMSIhPT10LmdldEF0dHJpYnV0ZSgidGFiaW5kZXgiKX0pKTtyZXR1cm4gZnVuY3Rpb24odCl7Zm9yKHZhciBlPVtdLG49MDtuPHQubGVuZ3RoO24rKyktMT09PWUuaW5kZXhPZih0W25dKSYmZS5wdXNoKHRbbl0pO3JldHVybiBlfSh0LmNvbmNhdChlKSkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gbXQodCl9KSl9ZnVuY3Rpb24gRigpe3JldHVybiFLKCkmJiFkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5jb250YWlucyhZWyJuby1iYWNrZHJvcCJdKX1mdW5jdGlvbiBSKCl7cmV0dXJuIFEoKS5oYXNBdHRyaWJ1dGUoImRhdGEtbG9hZGluZyIpfWZ1bmN0aW9uIGoodCxlKXt2YXIgbjt0LnRleHRDb250ZW50PSIiLGUmJihoKChuPShuZXcgRE9NUGFyc2VyKS5wYXJzZUZyb21TdHJpbmcoZSwidGV4dC9odG1sIikpLnF1ZXJ5U2VsZWN0b3IoImhlYWQiKS5jaGlsZE5vZGVzKS5mb3JFYWNoKChmdW5jdGlvbihlKXt0LmFwcGVuZENoaWxkKGUpfSkpLGgobi5xdWVyeVNlbGVjdG9yKCJib2R5IikuY2hpbGROb2RlcykuZm9yRWFjaCgoZnVuY3Rpb24oZSl7dC5hcHBlbmRDaGlsZChlKX0pKSl9ZnVuY3Rpb24gJCh0LGUpe2lmKGUpe2Zvcih2YXIgbj1lLnNwbGl0KC9ccysvKSxpPTA7aTxuLmxlbmd0aDtpKyspaWYoIXQuY2xhc3NMaXN0LmNvbnRhaW5zKG5baV0pKXJldHVybjtyZXR1cm4gMX19ZnVuY3Rpb24geihlLG4saSl7dmFyIHIsbztpZihvPW4saCgocj1lKS5jbGFzc0xpc3QpLmZvckVhY2goKGZ1bmN0aW9uKHQpey0xPT09ZChZKS5pbmRleE9mKHQpJiYtMT09PWQoRykuaW5kZXhPZih0KSYmLTE9PT1kKG8uc2hvd0NsYXNzKS5pbmRleE9mKHQpJiZyLmNsYXNzTGlzdC5yZW1vdmUodCl9KSksbi5jdXN0b21DbGFzcyYmbi5jdXN0b21DbGFzc1tpXSl7aWYoInN0cmluZyIhPXR5cGVvZiBuLmN1c3RvbUNsYXNzW2ldJiYhbi5jdXN0b21DbGFzc1tpXS5mb3JFYWNoKXJldHVybiBCKCJJbnZhbGlkIHR5cGUgb2YgY3VzdG9tQ2xhc3MuIi5jb25jYXQoaSwnISBFeHBlY3RlZCBzdHJpbmcgb3IgaXRlcmFibGUgb2JqZWN0LCBnb3QgIicpLmNvbmNhdCh0KG4uY3VzdG9tQ2xhc3NbaV0pLCciJykpO2Z0KGUsbi5jdXN0b21DbGFzc1tpXSl9fXZhciBIPSJTd2VldEFsZXJ0MjoiLEI9ZnVuY3Rpb24odCl7Y29uc29sZS53YXJuKCIiLmNvbmNhdChILCIgIikuY29uY2F0KHQpKX0scT1mdW5jdGlvbih0KXtjb25zb2xlLmVycm9yKCIiLmNvbmNhdChILCIgIikuY29uY2F0KHQpKX0sVz1bXSxVPWZ1bmN0aW9uKHQpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0P3QoKTp0fSxWPU9iamVjdC5mcmVlemUoe2NhbmNlbDoiY2FuY2VsIixiYWNrZHJvcDoiYmFja2Ryb3AiLGNsb3NlOiJjbG9zZSIsZXNjOiJlc2MiLHRpbWVyOiJ0aW1lciJ9KSxZPXkoWyJjb250YWluZXIiLCJzaG93biIsImhlaWdodC1hdXRvIiwiaW9zZml4IiwicG9wdXAiLCJtb2RhbCIsIm5vLWJhY2tkcm9wIiwibm8tdHJhbnNpdGlvbiIsInRvYXN0IiwidG9hc3Qtc2hvd24iLCJ0b2FzdC1jb2x1bW4iLCJzaG93IiwiaGlkZSIsImNsb3NlIiwidGl0bGUiLCJoZWFkZXIiLCJjb250ZW50IiwiaHRtbC1jb250YWluZXIiLCJhY3Rpb25zIiwiY29uZmlybSIsImNhbmNlbCIsImZvb3RlciIsImljb24iLCJpY29uLWNvbnRlbnQiLCJpbWFnZSIsImlucHV0IiwiZmlsZSIsInJhbmdlIiwic2VsZWN0IiwicmFkaW8iLCJjaGVja2JveCIsImxhYmVsIiwidGV4dGFyZWEiLCJpbnB1dGVycm9yIiwidmFsaWRhdGlvbi1tZXNzYWdlIiwicHJvZ3Jlc3Mtc3RlcHMiLCJhY3RpdmUtcHJvZ3Jlc3Mtc3RlcCIsInByb2dyZXNzLXN0ZXAiLCJwcm9ncmVzcy1zdGVwLWxpbmUiLCJsb2FkaW5nIiwic3R5bGVkIiwidG9wIiwidG9wLXN0YXJ0IiwidG9wLWVuZCIsInRvcC1sZWZ0IiwidG9wLXJpZ2h0IiwiY2VudGVyIiwiY2VudGVyLXN0YXJ0IiwiY2VudGVyLWVuZCIsImNlbnRlci1sZWZ0IiwiY2VudGVyLXJpZ2h0IiwiYm90dG9tIiwiYm90dG9tLXN0YXJ0IiwiYm90dG9tLWVuZCIsImJvdHRvbS1sZWZ0IiwiYm90dG9tLXJpZ2h0IiwiZ3Jvdy1yb3ciLCJncm93LWNvbHVtbiIsImdyb3ctZnVsbHNjcmVlbiIsInJ0bCIsInRpbWVyLXByb2dyZXNzLWJhciIsInRpbWVyLXByb2dyZXNzLWJhci1jb250YWluZXIiLCJzY3JvbGxiYXItbWVhc3VyZSIsImljb24tc3VjY2VzcyIsImljb24td2FybmluZyIsImljb24taW5mbyIsImljb24tcXVlc3Rpb24iLCJpY29uLWVycm9yIl0pLEc9eShbInN1Y2Nlc3MiLCJ3YXJuaW5nIiwiaW5mbyIsInF1ZXN0aW9uIiwiZXJyb3IiXSksWD1mdW5jdGlvbigpe3JldHVybiBkb2N1bWVudC5ib2R5LnF1ZXJ5U2VsZWN0b3IoIi4iLmNvbmNhdChZLmNvbnRhaW5lcikpfSxRPWZ1bmN0aW9uKCl7cmV0dXJuIHcoWS5wb3B1cCl9LEs9ZnVuY3Rpb24oKXtyZXR1cm4gZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoWVsidG9hc3Qtc2hvd24iXSl9LEo9e3ByZXZpb3VzQm9keVBhZGRpbmc6bnVsbH07ZnVuY3Rpb24gWih0LGUpe2lmKCFlKXJldHVybiBudWxsO3N3aXRjaChlKXtjYXNlInNlbGVjdCI6Y2FzZSJ0ZXh0YXJlYSI6Y2FzZSJmaWxlIjpyZXR1cm4gZ3QodCxZW2VdKTtjYXNlImNoZWNrYm94IjpyZXR1cm4gdC5xdWVyeVNlbGVjdG9yKCIuIi5jb25jYXQoWS5jaGVja2JveCwiIGlucHV0IikpO2Nhc2UicmFkaW8iOnJldHVybiB0LnF1ZXJ5U2VsZWN0b3IoIi4iLmNvbmNhdChZLnJhZGlvLCIgaW5wdXQ6Y2hlY2tlZCIpKXx8dC5xdWVyeVNlbGVjdG9yKCIuIi5jb25jYXQoWS5yYWRpbywiIGlucHV0OmZpcnN0LWNoaWxkIikpO2Nhc2UicmFuZ2UiOnJldHVybiB0LnF1ZXJ5U2VsZWN0b3IoIi4iLmNvbmNhdChZLnJhbmdlLCIgaW5wdXQiKSk7ZGVmYXVsdDpyZXR1cm4gZ3QodCxZLmlucHV0KX19ZnVuY3Rpb24gdHQodCl7dmFyIGU7dC5mb2N1cygpLCJmaWxlIiE9PXQudHlwZSYmKGU9dC52YWx1ZSx0LnZhbHVlPSIiLHQudmFsdWU9ZSl9ZnVuY3Rpb24gZXQodCxlLG4pe3QmJmUmJigic3RyaW5nIj09dHlwZW9mIGUmJihlPWUuc3BsaXQoL1xzKy8pLmZpbHRlcihCb29sZWFuKSksZS5mb3JFYWNoKChmdW5jdGlvbihlKXt0LmZvckVhY2g/dC5mb3JFYWNoKChmdW5jdGlvbih0KXtuP3QuY2xhc3NMaXN0LmFkZChlKTp0LmNsYXNzTGlzdC5yZW1vdmUoZSl9KSk6bj90LmNsYXNzTGlzdC5hZGQoZSk6dC5jbGFzc0xpc3QucmVtb3ZlKGUpfSkpKX1mdW5jdGlvbiBudCh0LGUsbil7bnx8MD09PXBhcnNlSW50KG4pP3Quc3R5bGVbZV09Im51bWJlciI9PXR5cGVvZiBuPyIiLmNvbmNhdChuLCJweCIpOm46dC5zdHlsZS5yZW1vdmVQcm9wZXJ0eShlKX1mdW5jdGlvbiBpdCh0LGUpe3ZhciBuPTE8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09ZT9lOiJmbGV4Ijt0LnN0eWxlLm9wYWNpdHk9IiIsdC5zdHlsZS5kaXNwbGF5PW59ZnVuY3Rpb24gcnQodCl7dC5zdHlsZS5vcGFjaXR5PSIiLHQuc3R5bGUuZGlzcGxheT0ibm9uZSJ9ZnVuY3Rpb24gb3QodCxlLG4pe2U/aXQodCxuKTpydCh0KX1mdW5jdGlvbiBhdCh0KXtyZXR1cm4hISh0LnNjcm9sbEhlaWdodD50LmNsaWVudEhlaWdodCl9ZnVuY3Rpb24gc3QodCl7dmFyIGU9d2luZG93LmdldENvbXB1dGVkU3R5bGUodCksbj1wYXJzZUZsb2F0KGUuZ2V0UHJvcGVydHlWYWx1ZSgiYW5pbWF0aW9uLWR1cmF0aW9uIil8fCIwIiksaT1wYXJzZUZsb2F0KGUuZ2V0UHJvcGVydHlWYWx1ZSgidHJhbnNpdGlvbi1kdXJhdGlvbiIpfHwiMCIpO3JldHVybiAwPG58fDA8aX1mdW5jdGlvbiBsdCh0LGUpe3ZhciBuPTE8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09ZSYmZSxpPVAoKTttdChpKSYmKG4mJihpLnN0eWxlLnRyYW5zaXRpb249Im5vbmUiLGkuc3R5bGUud2lkdGg9IjEwMCUiKSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe2kuc3R5bGUudHJhbnNpdGlvbj0id2lkdGggIi5jb25jYXQodC8xZTMsInMgbGluZWFyIiksaS5zdHlsZS53aWR0aD0iMCUifSksMTApKX1mdW5jdGlvbiBjdCgpe3JldHVybiJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93fHwidW5kZWZpbmVkIj09dHlwZW9mIGRvY3VtZW50fWZ1bmN0aW9uIHV0KHQpe2plLmlzVmlzaWJsZSgpJiZodCE9PXQudGFyZ2V0LnZhbHVlJiZqZS5yZXNldFZhbGlkYXRpb25NZXNzYWdlKCksaHQ9dC50YXJnZXQudmFsdWV9ZnVuY3Rpb24gZHQoZSxuKXtlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQ/bi5hcHBlbmRDaGlsZChlKToib2JqZWN0Ij09PXQoZSk/eXQoZSxuKTplJiZqKG4sZSl9dmFyIGh0LGZ0PWZ1bmN0aW9uKHQsZSl7ZXQodCxlLCEwKX0scHQ9ZnVuY3Rpb24odCxlKXtldCh0LGUsITEpfSxndD1mdW5jdGlvbih0LGUpe2Zvcih2YXIgbj0wO248dC5jaGlsZE5vZGVzLmxlbmd0aDtuKyspaWYoJCh0LmNoaWxkTm9kZXNbbl0sZSkpcmV0dXJuIHQuY2hpbGROb2Rlc1tuXX0sbXQ9ZnVuY3Rpb24odCl7cmV0dXJuISghdHx8ISh0Lm9mZnNldFdpZHRofHx0Lm9mZnNldEhlaWdodHx8dC5nZXRDbGllbnRSZWN0cygpLmxlbmd0aCkpfSx2dD0nXG4gPGRpdiBhcmlhLWxhYmVsbGVkYnk9IicuY29uY2F0KFkudGl0bGUsJyIgYXJpYS1kZXNjcmliZWRieT0iJykuY29uY2F0KFkuY29udGVudCwnIiBjbGFzcz0iJykuY29uY2F0KFkucG9wdXAsJyIgdGFiaW5kZXg9Ii0xIj5cbiAgIDxkaXYgY2xhc3M9IicpLmNvbmNhdChZLmhlYWRlciwnIj5cbiAgICAgPHVsIGNsYXNzPSInKS5jb25jYXQoWVsicHJvZ3Jlc3Mtc3RlcHMiXSwnIj48L3VsPlxuICAgICA8ZGl2IGNsYXNzPSInKS5jb25jYXQoWS5pY29uLCIgIikuY29uY2F0KEcuZXJyb3IsJyI+PC9kaXY+XG4gICAgIDxkaXYgY2xhc3M9IicpLmNvbmNhdChZLmljb24sIiAiKS5jb25jYXQoRy5xdWVzdGlvbiwnIj48L2Rpdj5cbiAgICAgPGRpdiBjbGFzcz0iJykuY29uY2F0KFkuaWNvbiwiICIpLmNvbmNhdChHLndhcm5pbmcsJyI+PC9kaXY+XG4gICAgIDxkaXYgY2xhc3M9IicpLmNvbmNhdChZLmljb24sIiAiKS5jb25jYXQoRy5pbmZvLCciPjwvZGl2PlxuICAgICA8ZGl2IGNsYXNzPSInKS5jb25jYXQoWS5pY29uLCIgIikuY29uY2F0KEcuc3VjY2VzcywnIj48L2Rpdj5cbiAgICAgPGltZyBjbGFzcz0iJykuY29uY2F0KFkuaW1hZ2UsJyIgLz5cbiAgICAgPGgyIGNsYXNzPSInKS5jb25jYXQoWS50aXRsZSwnIiBpZD0iJykuY29uY2F0KFkudGl0bGUsJyI+PC9oMj5cbiAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSInKS5jb25jYXQoWS5jbG9zZSwnIj48L2J1dHRvbj5cbiAgIDwvZGl2PlxuICAgPGRpdiBjbGFzcz0iJykuY29uY2F0KFkuY29udGVudCwnIj5cbiAgICAgPGRpdiBpZD0iJykuY29uY2F0KFkuY29udGVudCwnIiBjbGFzcz0iJykuY29uY2F0KFlbImh0bWwtY29udGFpbmVyIl0sJyI+PC9kaXY+XG4gICAgIDxpbnB1dCBjbGFzcz0iJykuY29uY2F0KFkuaW5wdXQsJyIgLz5cbiAgICAgPGlucHV0IHR5cGU9ImZpbGUiIGNsYXNzPSInKS5jb25jYXQoWS5maWxlLCciIC8+XG4gICAgIDxkaXYgY2xhc3M9IicpLmNvbmNhdChZLnJhbmdlLCciPlxuICAgICAgIDxpbnB1dCB0eXBlPSJyYW5nZSIgLz5cbiAgICAgICA8b3V0cHV0Pjwvb3V0cHV0PlxuICAgICA8L2Rpdj5cbiAgICAgPHNlbGVjdCBjbGFzcz0iJykuY29uY2F0KFkuc2VsZWN0LCciPjwvc2VsZWN0PlxuICAgICA8ZGl2IGNsYXNzPSInKS5jb25jYXQoWS5yYWRpbywnIj48L2Rpdj5cbiAgICAgPGxhYmVsIGZvcj0iJykuY29uY2F0KFkuY2hlY2tib3gsJyIgY2xhc3M9IicpLmNvbmNhdChZLmNoZWNrYm94LCciPlxuICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgLz5cbiAgICAgICA8c3BhbiBjbGFzcz0iJykuY29uY2F0KFkubGFiZWwsJyI+PC9zcGFuPlxuICAgICA8L2xhYmVsPlxuICAgICA8dGV4dGFyZWEgY2xhc3M9IicpLmNvbmNhdChZLnRleHRhcmVhLCciPjwvdGV4dGFyZWE+XG4gICAgIDxkaXYgY2xhc3M9IicpLmNvbmNhdChZWyJ2YWxpZGF0aW9uLW1lc3NhZ2UiXSwnIiBpZD0iJykuY29uY2F0KFlbInZhbGlkYXRpb24tbWVzc2FnZSJdLCciPjwvZGl2PlxuICAgPC9kaXY+XG4gICA8ZGl2IGNsYXNzPSInKS5jb25jYXQoWS5hY3Rpb25zLCciPlxuICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9IicpLmNvbmNhdChZLmNvbmZpcm0sJyI+T0s8L2J1dHRvbj5cbiAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSInKS5jb25jYXQoWS5jYW5jZWwsJyI+Q2FuY2VsPC9idXR0b24+XG4gICA8L2Rpdj5cbiAgIDxkaXYgY2xhc3M9IicpLmNvbmNhdChZLmZvb3RlciwnIj48L2Rpdj5cbiAgIDxkaXYgY2xhc3M9IicpLmNvbmNhdChZWyJ0aW1lci1wcm9ncmVzcy1iYXItY29udGFpbmVyIl0sJyI+XG4gICAgIDxkaXYgY2xhc3M9IicpLmNvbmNhdChZWyJ0aW1lci1wcm9ncmVzcy1iYXIiXSwnIj48L2Rpdj5cbiAgIDwvZGl2PlxuIDwvZGl2PlxuJykucmVwbGFjZSgvKF58XG4pXHMqL2csIiIpLHl0PWZ1bmN0aW9uKHQsZSl7dC5qcXVlcnk/YnQoZSx0KTpqKGUsdC50b1N0cmluZygpKX0sYnQ9ZnVuY3Rpb24odCxlKXtpZih0LnRleHRDb250ZW50PSIiLDAgaW4gZSlmb3IodmFyIG49MDtuIGluIGU7bisrKXQuYXBwZW5kQ2hpbGQoZVtuXS5jbG9uZU5vZGUoITApKTtlbHNlIHQuYXBwZW5kQ2hpbGQoZS5jbG9uZU5vZGUoITApKX0sd3Q9ZnVuY3Rpb24oKXtpZihjdCgpKXJldHVybiExO3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGU9e1dlYmtpdEFuaW1hdGlvbjoid2Via2l0QW5pbWF0aW9uRW5kIixPQW5pbWF0aW9uOiJvQW5pbWF0aW9uRW5kIG9hbmltYXRpb25lbmQiLGFuaW1hdGlvbjoiYW5pbWF0aW9uZW5kIn07Zm9yKHZhciBuIGluIGUpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbikmJnZvaWQgMCE9PXQuc3R5bGVbbl0pcmV0dXJuIGVbbl07cmV0dXJuITF9KCk7ZnVuY3Rpb24geHQodCxlLG4pe3ZhciBpO290KHQsblsic2hvdyIuY29uY2F0KChpPWUpLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2kuc2xpY2UoMSksIkJ1dHRvbiIpXSwiaW5saW5lLWJsb2NrIiksaih0LG5bIiIuY29uY2F0KGUsIkJ1dHRvblRleHQiKV0pLHQuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIixuWyIiLmNvbmNhdChlLCJCdXR0b25BcmlhTGFiZWwiKV0pLHQuY2xhc3NOYW1lPVlbZV0seih0LG4sIiIuY29uY2F0KGUsIkJ1dHRvbiIpKSxmdCh0LG5bIiIuY29uY2F0KGUsIkJ1dHRvbkNsYXNzIildKX1mdW5jdGlvbiBfdCh0LGUpe3QucGxhY2Vob2xkZXImJiFlLmlucHV0UGxhY2Vob2xkZXJ8fCh0LnBsYWNlaG9sZGVyPWUuaW5wdXRQbGFjZWhvbGRlcil9dmFyIFN0PXtwcm9taXNlOm5ldyBXZWFrTWFwLGlubmVyUGFyYW1zOm5ldyBXZWFrTWFwLGRvbUNhY2hlOm5ldyBXZWFrTWFwfSxDdD1bImlucHV0IiwiZmlsZSIsInJhbmdlIiwic2VsZWN0IiwicmFkaW8iLCJjaGVja2JveCIsInRleHRhcmVhIl0sa3Q9ZnVuY3Rpb24odCl7dmFyIGU9WVt0XT9ZW3RdOlkuaW5wdXQ7cmV0dXJuIGd0KEMoKSxlKX0sVHQ9e307ZnVuY3Rpb24gQXQodCxlKXt2YXIgbixpLHIsbyxhLHM9QygpLnF1ZXJ5U2VsZWN0b3IoIiMiLmNvbmNhdChZLmNvbnRlbnQpKTtlLmh0bWw/KGR0KGUuaHRtbCxzKSxpdChzLCJibG9jayIpKTplLnRleHQ/KHMudGV4dENvbnRlbnQ9ZS50ZXh0LGl0KHMsImJsb2NrIikpOnJ0KHMpLG49dCxpPWUscj1DKCksbz1TdC5pbm5lclBhcmFtcy5nZXQobiksYT0hb3x8aS5pbnB1dCE9PW8uaW5wdXQsQ3QuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9WVt0XSxuPWd0KHIsZSk7KGZ1bmN0aW9uKHQsZSl7dmFyIG49WihDKCksdCk7aWYobilmb3IodmFyIGkgaW4gZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTx0LmF0dHJpYnV0ZXMubGVuZ3RoO2UrKyl7dmFyIG49dC5hdHRyaWJ1dGVzW2VdLm5hbWU7LTE9PT1bInR5cGUiLCJ2YWx1ZSIsInN0eWxlIl0uaW5kZXhPZihuKSYmdC5yZW1vdmVBdHRyaWJ1dGUobil9fShuKSxlKSJyYW5nZSI9PT10JiYicGxhY2Vob2xkZXIiPT09aXx8bi5zZXRBdHRyaWJ1dGUoaSxlW2ldKX0pKHQsaS5pbnB1dEF0dHJpYnV0ZXMpLG4uY2xhc3NOYW1lPWUsYSYmcnQobil9KSksaS5pbnB1dCYmKGEmJmZ1bmN0aW9uKHQpe2lmKCFUdFt0LmlucHV0XSlyZXR1cm4gcSgnVW5leHBlY3RlZCB0eXBlIG9mIGlucHV0ISBFeHBlY3RlZCAidGV4dCIsICJlbWFpbCIsICJwYXNzd29yZCIsICJudW1iZXIiLCAidGVsIiwgInNlbGVjdCIsICJyYWRpbyIsICJjaGVja2JveCIsICJ0ZXh0YXJlYSIsICJmaWxlIiBvciAidXJsIiwgZ290ICInLmNvbmNhdCh0LmlucHV0LCciJykpO3ZhciBlPWt0KHQuaW5wdXQpLG49VHRbdC5pbnB1dF0oZSx0KTtpdChuKSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe3R0KG4pfSkpfShpKSxmdW5jdGlvbih0KXt2YXIgZT1rdCh0LmlucHV0KTt0LmN1c3RvbUNsYXNzJiZmdChlLHQuY3VzdG9tQ2xhc3MuaW5wdXQpfShpKSkseihDKCksZSwiY29udGVudCIpfWZ1bmN0aW9uIER0KCl7cmV0dXJuIFgoKSYmWCgpLmdldEF0dHJpYnV0ZSgiZGF0YS1xdWV1ZS1zdGVwIil9ZnVuY3Rpb24gRXQodCxlKXt2YXIgbixpLHIsbyxhLHMsbCxjO3ooTygpLGUsImhlYWRlciIpLGZ1bmN0aW9uKHQsZSl7dmFyIG49VCgpO2lmKCFlLnByb2dyZXNzU3RlcHN8fDA9PT1lLnByb2dyZXNzU3RlcHMubGVuZ3RoKXJldHVybiBydChuKSwwO2l0KG4pLG4udGV4dENvbnRlbnQ9IiI7dmFyIGk9cGFyc2VJbnQodm9pZCAwPT09ZS5jdXJyZW50UHJvZ3Jlc3NTdGVwP0R0KCk6ZS5jdXJyZW50UHJvZ3Jlc3NTdGVwKTtpPj1lLnByb2dyZXNzU3RlcHMubGVuZ3RoJiZCKCJJbnZhbGlkIGN1cnJlbnRQcm9ncmVzc1N0ZXAgcGFyYW1ldGVyLCBpdCBzaG91bGQgYmUgbGVzcyB0aGFuIHByb2dyZXNzU3RlcHMubGVuZ3RoIChjdXJyZW50UHJvZ3Jlc3NTdGVwIGxpa2UgSlMgYXJyYXlzIHN0YXJ0cyBmcm9tIDApIiksZS5wcm9ncmVzc1N0ZXBzLmZvckVhY2goKGZ1bmN0aW9uKHQscil7dmFyIG8sYSxzLGwsYyx1PShvPXQsYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpLGZ0KGEsWVsicHJvZ3Jlc3Mtc3RlcCJdKSxqKGEsbyksYSk7bi5hcHBlbmRDaGlsZCh1KSxyPT09aSYmZnQodSxZWyJhY3RpdmUtcHJvZ3Jlc3Mtc3RlcCJdKSxyIT09ZS5wcm9ncmVzc1N0ZXBzLmxlbmd0aC0xJiYobD1lLGM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKSxmdChjLFlbInByb2dyZXNzLXN0ZXAtbGluZSJdKSxsLnByb2dyZXNzU3RlcHNEaXN0YW5jZSYmKGMuc3R5bGUud2lkdGg9bC5wcm9ncmVzc1N0ZXBzRGlzdGFuY2UpLHM9YyxuLmFwcGVuZENoaWxkKHMpKX0pKX0oMCxlKSxuPXQsaT1lLChvPVN0LmlubmVyUGFyYW1zLmdldChuKSkmJmkuaWNvbj09PW8uaWNvbiYmXygpP3ooXygpLGksImljb24iKTooSXQoKSxpLmljb24mJigtMSE9PU9iamVjdC5rZXlzKEcpLmluZGV4T2YoaS5pY29uKT8oaXQocj1iKCIuIi5jb25jYXQoWS5pY29uLCIuIikuY29uY2F0KEdbaS5pY29uXSkpKSxMdChyLGkpLFB0KCkseihyLGksImljb24iKSxmdChyLGkuc2hvd0NsYXNzLmljb24pKTpxKCdVbmtub3duIGljb24hIEV4cGVjdGVkICJzdWNjZXNzIiwgImVycm9yIiwgIndhcm5pbmciLCAiaW5mbyIgb3IgInF1ZXN0aW9uIiwgZ290ICInLmNvbmNhdChpLmljb24sJyInKSkpKSxmdW5jdGlvbih0KXt2YXIgZT1rKCk7aWYoIXQuaW1hZ2VVcmwpcmV0dXJuIHJ0KGUpO2l0KGUsIiIpLGUuc2V0QXR0cmlidXRlKCJzcmMiLHQuaW1hZ2VVcmwpLGUuc2V0QXR0cmlidXRlKCJhbHQiLHQuaW1hZ2VBbHQpLG50KGUsIndpZHRoIix0LmltYWdlV2lkdGgpLG50KGUsImhlaWdodCIsdC5pbWFnZUhlaWdodCksZS5jbGFzc05hbWU9WS5pbWFnZSx6KGUsdCwiaW1hZ2UiKX0oZSksYT1lLG90KHM9UygpLGEudGl0bGV8fGEudGl0bGVUZXh0KSxhLnRpdGxlJiZkdChhLnRpdGxlLHMpLGEudGl0bGVUZXh0JiYocy5pbm5lclRleHQ9YS50aXRsZVRleHQpLHoocyxhLCJ0aXRsZSIpLGw9ZSxqKGM9TCgpLGwuY2xvc2VCdXR0b25IdG1sKSx6KGMsbCwiY2xvc2VCdXR0b24iKSxvdChjLGwuc2hvd0Nsb3NlQnV0dG9uKSxjLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsbC5jbG9zZUJ1dHRvbkFyaWFMYWJlbCl9ZnVuY3Rpb24gTXQodCxlKXt2YXIgbixpLHIsbztuPWUsbnQoaT1RKCksIndpZHRoIixuLndpZHRoKSxudChpLCJwYWRkaW5nIixuLnBhZGRpbmcpLG4uYmFja2dyb3VuZCYmKGkuc3R5bGUuYmFja2dyb3VuZD1uLmJhY2tncm91bmQpLFJ0KGksbiksZnVuY3Rpb24odCxlKXt2YXIgbixpLHIsbyxhLHMsbCxjLHU9WCgpO3UmJihuPXUsInN0cmluZyI9PXR5cGVvZihpPWUuYmFja2Ryb3ApP24uc3R5bGUuYmFja2dyb3VuZD1pOml8fGZ0KFtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsZG9jdW1lbnQuYm9keV0sWVsibm8tYmFja2Ryb3AiXSksIWUuYmFja2Ryb3AmJmUuYWxsb3dPdXRzaWRlQ2xpY2smJkIoJyJhbGxvd091dHNpZGVDbGljayIgcGFyYW1ldGVyIHJlcXVpcmVzIGBiYWNrZHJvcGAgcGFyYW1ldGVyIHRvIGJlIHNldCB0byBgdHJ1ZWAnKSxyPXUsKG89ZS5wb3NpdGlvbilpbiBZP2Z0KHIsWVtvXSk6KEIoJ1RoZSAicG9zaXRpb24iIHBhcmFtZXRlciBpcyBub3QgdmFsaWQsIGRlZmF1bHRpbmcgdG8gImNlbnRlciInKSxmdChyLFkuY2VudGVyKSksYT11LCEocz1lLmdyb3cpfHwic3RyaW5nIiE9dHlwZW9mIHN8fChsPSJncm93LSIuY29uY2F0KHMpKWluIFkmJmZ0KGEsWVtsXSkseih1LGUsImNvbnRhaW5lciIpLChjPWRvY3VtZW50LmJvZHkuZ2V0QXR0cmlidXRlKCJkYXRhLXN3YWwyLXF1ZXVlLXN0ZXAiKSkmJih1LnNldEF0dHJpYnV0ZSgiZGF0YS1xdWV1ZS1zdGVwIixjKSxkb2N1bWVudC5ib2R5LnJlbW92ZUF0dHJpYnV0ZSgiZGF0YS1zd2FsMi1xdWV1ZS1zdGVwIikpKX0oMCxlKSxFdCh0LGUpLEF0KHQsZSksZnVuY3Rpb24odCxlKXt2YXIgbj1NKCksaT1EKCkscj1FKCk7ZS5zaG93Q29uZmlybUJ1dHRvbnx8ZS5zaG93Q2FuY2VsQnV0dG9ufHxydChuKSx6KG4sZSwiYWN0aW9ucyIpLHh0KGksImNvbmZpcm0iLGUpLHh0KHIsImNhbmNlbCIsZSksZS5idXR0b25zU3R5bGluZz9mdW5jdGlvbih0LGUsbil7dmFyIGk7ZnQoW3QsZV0sWS5zdHlsZWQpLG4uY29uZmlybUJ1dHRvbkNvbG9yJiYodC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9bi5jb25maXJtQnV0dG9uQ29sb3IpLG4uY2FuY2VsQnV0dG9uQ29sb3ImJihlLnN0eWxlLmJhY2tncm91bmRDb2xvcj1uLmNhbmNlbEJ1dHRvbkNvbG9yKSxSKCl8fChpPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpLmdldFByb3BlcnR5VmFsdWUoImJhY2tncm91bmQtY29sb3IiKSx0LnN0eWxlLmJvcmRlckxlZnRDb2xvcj1pLHQuc3R5bGUuYm9yZGVyUmlnaHRDb2xvcj1pKX0oaSxyLGUpOihwdChbaSxyXSxZLnN0eWxlZCksaS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9aS5zdHlsZS5ib3JkZXJMZWZ0Q29sb3I9aS5zdHlsZS5ib3JkZXJSaWdodENvbG9yPSIiLHIuc3R5bGUuYmFja2dyb3VuZENvbG9yPXIuc3R5bGUuYm9yZGVyTGVmdENvbG9yPXIuc3R5bGUuYm9yZGVyUmlnaHRDb2xvcj0iIiksZS5yZXZlcnNlQnV0dG9ucyYmaS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShyLGkpfSgwLGUpLHI9ZSxvdChvPUkoKSxyLmZvb3Rlciksci5mb290ZXImJmR0KHIuZm9vdGVyLG8pLHoobyxyLCJmb290ZXIiKSwiZnVuY3Rpb24iPT10eXBlb2YgZS5vblJlbmRlciYmZS5vblJlbmRlcihRKCkpfWZ1bmN0aW9uIE90KCl7cmV0dXJuIEQoKSYmRCgpLmNsaWNrKCl9VHQudGV4dD1UdC5lbWFpbD1UdC5wYXNzd29yZD1UdC5udW1iZXI9VHQudGVsPVR0LnVybD1mdW5jdGlvbihlLG4pe3JldHVybiJzdHJpbmciPT10eXBlb2Ygbi5pbnB1dFZhbHVlfHwibnVtYmVyIj09dHlwZW9mIG4uaW5wdXRWYWx1ZT9lLnZhbHVlPW4uaW5wdXRWYWx1ZTptKG4uaW5wdXRWYWx1ZSl8fEIoJ1VuZXhwZWN0ZWQgdHlwZSBvZiBpbnB1dFZhbHVlISBFeHBlY3RlZCAic3RyaW5nIiwgIm51bWJlciIgb3IgIlByb21pc2UiLCBnb3QgIicuY29uY2F0KHQobi5pbnB1dFZhbHVlKSwnIicpKSxfdChlLG4pLGUudHlwZT1uLmlucHV0LGV9LFR0LmZpbGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gX3QodCxlKSx0fSxUdC5yYW5nZT1mdW5jdGlvbih0LGUpe3ZhciBuPXQucXVlcnlTZWxlY3RvcigiaW5wdXQiKSxpPXQucXVlcnlTZWxlY3Rvcigib3V0cHV0Iik7cmV0dXJuIG4udmFsdWU9ZS5pbnB1dFZhbHVlLG4udHlwZT1lLmlucHV0LGkudmFsdWU9ZS5pbnB1dFZhbHVlLHR9LFR0LnNlbGVjdD1mdW5jdGlvbih0LGUpe3ZhciBuO3JldHVybiB0LnRleHRDb250ZW50PSIiLGUuaW5wdXRQbGFjZWhvbGRlciYmKGoobj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKSxlLmlucHV0UGxhY2Vob2xkZXIpLG4udmFsdWU9IiIsbi5kaXNhYmxlZD0hMCxuLnNlbGVjdGVkPSEwLHQuYXBwZW5kQ2hpbGQobikpLHR9LFR0LnJhZGlvPWZ1bmN0aW9uKHQpe3JldHVybiB0LnRleHRDb250ZW50PSIiLHR9LFR0LmNoZWNrYm94PWZ1bmN0aW9uKHQsZSl7dmFyIG49WihDKCksImNoZWNrYm94Iik7cmV0dXJuIG4udmFsdWU9MSxuLmlkPVkuY2hlY2tib3gsbi5jaGVja2VkPUJvb2xlYW4oZS5pbnB1dFZhbHVlKSxqKHQucXVlcnlTZWxlY3Rvcigic3BhbiIpLGUuaW5wdXRQbGFjZWhvbGRlciksdH0sVHQudGV4dGFyZWE9ZnVuY3Rpb24odCxlKXt2YXIgbixpO3JldHVybiB0LnZhbHVlPWUuaW5wdXRWYWx1ZSxfdCh0LGUpLCJNdXRhdGlvbk9ic2VydmVyImluIHdpbmRvdyYmKG49cGFyc2VJbnQod2luZG93LmdldENvbXB1dGVkU3R5bGUoUSgpKS53aWR0aCksaT1wYXJzZUludCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShRKCkpLnBhZGRpbmdMZWZ0KStwYXJzZUludCh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShRKCkpLnBhZGRpbmdSaWdodCksbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKGZ1bmN0aW9uKCl7dmFyIGU9dC5vZmZzZXRXaWR0aCtpO1EoKS5zdHlsZS53aWR0aD1uPGU/IiIuY29uY2F0KGUsInB4Iik6bnVsbH0pKS5vYnNlcnZlKHQse2F0dHJpYnV0ZXM6ITAsYXR0cmlidXRlRmlsdGVyOlsic3R5bGUiXX0pKSx0fTt2YXIgSXQ9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9eCgpLGU9MDtlPHQubGVuZ3RoO2UrKylydCh0W2VdKX0sUHQ9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9USgpLGU9d2luZG93LmdldENvbXB1dGVkU3R5bGUodCkuZ2V0UHJvcGVydHlWYWx1ZSgiYmFja2dyb3VuZC1jb2xvciIpLG49dC5xdWVyeVNlbGVjdG9yQWxsKCJbY2xhc3NePXN3YWwyLXN1Y2Nlc3MtY2lyY3VsYXItbGluZV0sIC5zd2FsMi1zdWNjZXNzLWZpeCIpLGk9MDtpPG4ubGVuZ3RoO2krKyluW2ldLnN0eWxlLmJhY2tncm91bmRDb2xvcj1lfSxMdD1mdW5jdGlvbih0LGUpe3QudGV4dENvbnRlbnQ9IiIsZS5pY29uSHRtbD9qKHQsTnQoZS5pY29uSHRtbCkpOiJzdWNjZXNzIj09PWUuaWNvbj9qKHQsJ1xuICAgICAgPGRpdiBjbGFzcz0ic3dhbDItc3VjY2Vzcy1jaXJjdWxhci1saW5lLWxlZnQiPjwvZGl2PlxuICAgICAgPHNwYW4gY2xhc3M9InN3YWwyLXN1Y2Nlc3MtbGluZS10aXAiPjwvc3Bhbj4gPHNwYW4gY2xhc3M9InN3YWwyLXN1Y2Nlc3MtbGluZS1sb25nIj48L3NwYW4+XG4gICAgICA8ZGl2IGNsYXNzPSJzd2FsMi1zdWNjZXNzLXJpbmciPjwvZGl2PiA8ZGl2IGNsYXNzPSJzd2FsMi1zdWNjZXNzLWZpeCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPSJzd2FsMi1zdWNjZXNzLWNpcmN1bGFyLWxpbmUtcmlnaHQiPjwvZGl2PlxuICAgICcpOiJlcnJvciI9PT1lLmljb24/aih0LCdcbiAgICAgIDxzcGFuIGNsYXNzPSJzd2FsMi14LW1hcmsiPlxuICAgICAgICA8c3BhbiBjbGFzcz0ic3dhbDIteC1tYXJrLWxpbmUtbGVmdCI+PC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz0ic3dhbDIteC1tYXJrLWxpbmUtcmlnaHQiPjwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICAnKTpqKHQsTnQoe3F1ZXN0aW9uOiI/Iix3YXJuaW5nOiIhIixpbmZvOiJpIn1bZS5pY29uXSkpfSxOdD1mdW5jdGlvbih0KXtyZXR1cm4nPGRpdiBjbGFzcz0iJy5jb25jYXQoWVsiaWNvbi1jb250ZW50Il0sJyI+JykuY29uY2F0KHQsIjwvZGl2PiIpfSxGdD1bXSxSdD1mdW5jdGlvbih0LGUpe3QuY2xhc3NOYW1lPSIiLmNvbmNhdChZLnBvcHVwLCIgIikuY29uY2F0KG10KHQpP2Uuc2hvd0NsYXNzLnBvcHVwOiIiKSxlLnRvYXN0PyhmdChbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGRvY3VtZW50LmJvZHldLFlbInRvYXN0LXNob3duIl0pLGZ0KHQsWS50b2FzdCkpOmZ0KHQsWS5tb2RhbCkseih0LGUsInBvcHVwIiksInN0cmluZyI9PXR5cGVvZiBlLmN1c3RvbUNsYXNzJiZmdCh0LGUuY3VzdG9tQ2xhc3MpLGUuaWNvbiYmZnQodCxZWyJpY29uLSIuY29uY2F0KGUuaWNvbildKX07ZnVuY3Rpb24ganQoKXt2YXIgdD1RKCk7dHx8amUuZmlyZSgpLHQ9USgpO3ZhciBlPU0oKSxuPUQoKTtpdChlKSxpdChuLCJpbmxpbmUtYmxvY2siKSxmdChbdCxlXSxZLmxvYWRpbmcpLG4uZGlzYWJsZWQ9ITAsdC5zZXRBdHRyaWJ1dGUoImRhdGEtbG9hZGluZyIsITApLHQuc2V0QXR0cmlidXRlKCJhcmlhLWJ1c3kiLCEwKSx0LmZvY3VzKCl9ZnVuY3Rpb24gJHQoKXtpZihxdC50aW1lb3V0KXJldHVybiBmdW5jdGlvbigpe3ZhciB0PVAoKSxlPXBhcnNlSW50KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpLndpZHRoKTt0LnN0eWxlLnJlbW92ZVByb3BlcnR5KCJ0cmFuc2l0aW9uIiksdC5zdHlsZS53aWR0aD0iMTAwJSI7dmFyIG49cGFyc2VJbnQod2luZG93LmdldENvbXB1dGVkU3R5bGUodCkud2lkdGgpLGk9cGFyc2VJbnQoZS9uKjEwMCk7dC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgidHJhbnNpdGlvbiIpLHQuc3R5bGUud2lkdGg9IiIuY29uY2F0KGksIiUiKX0oKSxxdC50aW1lb3V0LnN0b3AoKX1mdW5jdGlvbiB6dCgpe2lmKHF0LnRpbWVvdXQpe3ZhciB0PXF0LnRpbWVvdXQuc3RhcnQoKTtyZXR1cm4gbHQodCksdH19ZnVuY3Rpb24gSHQodCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChXdCx0KX1mdW5jdGlvbiBCdCh0KXtyZXR1cm4gVnRbdF19dmFyIHF0PXt9LFd0PXt0aXRsZToiIix0aXRsZVRleHQ6IiIsdGV4dDoiIixodG1sOiIiLGZvb3RlcjoiIixpY29uOnZvaWQgMCxpY29uSHRtbDp2b2lkIDAsdG9hc3Q6ITEsYW5pbWF0aW9uOiEwLHNob3dDbGFzczp7cG9wdXA6InN3YWwyLXNob3ciLGJhY2tkcm9wOiJzd2FsMi1iYWNrZHJvcC1zaG93IixpY29uOiJzd2FsMi1pY29uLXNob3cifSxoaWRlQ2xhc3M6e3BvcHVwOiJzd2FsMi1oaWRlIixiYWNrZHJvcDoic3dhbDItYmFja2Ryb3AtaGlkZSIsaWNvbjoic3dhbDItaWNvbi1oaWRlIn0sY3VzdG9tQ2xhc3M6dm9pZCAwLHRhcmdldDoiYm9keSIsYmFja2Ryb3A6ITAsaGVpZ2h0QXV0bzohMCxhbGxvd091dHNpZGVDbGljazohMCxhbGxvd0VzY2FwZUtleTohMCxhbGxvd0VudGVyS2V5OiEwLHN0b3BLZXlkb3duUHJvcGFnYXRpb246ITAsa2V5ZG93bkxpc3RlbmVyQ2FwdHVyZTohMSxzaG93Q29uZmlybUJ1dHRvbjohMCxzaG93Q2FuY2VsQnV0dG9uOiExLHByZUNvbmZpcm06dm9pZCAwLGNvbmZpcm1CdXR0b25UZXh0OiJPSyIsY29uZmlybUJ1dHRvbkFyaWFMYWJlbDoiIixjb25maXJtQnV0dG9uQ29sb3I6dm9pZCAwLGNhbmNlbEJ1dHRvblRleHQ6IkNhbmNlbCIsY2FuY2VsQnV0dG9uQXJpYUxhYmVsOiIiLGNhbmNlbEJ1dHRvbkNvbG9yOnZvaWQgMCxidXR0b25zU3R5bGluZzohMCxyZXZlcnNlQnV0dG9uczohMSxmb2N1c0NvbmZpcm06ITAsZm9jdXNDYW5jZWw6ITEsc2hvd0Nsb3NlQnV0dG9uOiExLGNsb3NlQnV0dG9uSHRtbDoiJnRpbWVzOyIsY2xvc2VCdXR0b25BcmlhTGFiZWw6IkNsb3NlIHRoaXMgZGlhbG9nIixzaG93TG9hZGVyT25Db25maXJtOiExLGltYWdlVXJsOnZvaWQgMCxpbWFnZVdpZHRoOnZvaWQgMCxpbWFnZUhlaWdodDp2b2lkIDAsaW1hZ2VBbHQ6IiIsdGltZXI6dm9pZCAwLHRpbWVyUHJvZ3Jlc3NCYXI6ITEsd2lkdGg6dm9pZCAwLHBhZGRpbmc6dm9pZCAwLGJhY2tncm91bmQ6dm9pZCAwLGlucHV0OnZvaWQgMCxpbnB1dFBsYWNlaG9sZGVyOiIiLGlucHV0VmFsdWU6IiIsaW5wdXRPcHRpb25zOnt9LGlucHV0QXV0b1RyaW06ITAsaW5wdXRBdHRyaWJ1dGVzOnt9LGlucHV0VmFsaWRhdG9yOnZvaWQgMCx2YWxpZGF0aW9uTWVzc2FnZTp2b2lkIDAsZ3JvdzohMSxwb3NpdGlvbjoiY2VudGVyIixwcm9ncmVzc1N0ZXBzOltdLGN1cnJlbnRQcm9ncmVzc1N0ZXA6dm9pZCAwLHByb2dyZXNzU3RlcHNEaXN0YW5jZTp2b2lkIDAsb25CZWZvcmVPcGVuOnZvaWQgMCxvbk9wZW46dm9pZCAwLG9uUmVuZGVyOnZvaWQgMCxvbkNsb3NlOnZvaWQgMCxvbkFmdGVyQ2xvc2U6dm9pZCAwLG9uRGVzdHJveTp2b2lkIDAsc2Nyb2xsYmFyUGFkZGluZzohMH0sVXQ9WyJhbGxvd0VzY2FwZUtleSIsImFsbG93T3V0c2lkZUNsaWNrIiwiYnV0dG9uc1N0eWxpbmciLCJjYW5jZWxCdXR0b25BcmlhTGFiZWwiLCJjYW5jZWxCdXR0b25Db2xvciIsImNhbmNlbEJ1dHRvblRleHQiLCJjbG9zZUJ1dHRvbkFyaWFMYWJlbCIsImNsb3NlQnV0dG9uSHRtbCIsImNvbmZpcm1CdXR0b25BcmlhTGFiZWwiLCJjb25maXJtQnV0dG9uQ29sb3IiLCJjb25maXJtQnV0dG9uVGV4dCIsImN1cnJlbnRQcm9ncmVzc1N0ZXAiLCJjdXN0b21DbGFzcyIsImZvb3RlciIsImhpZGVDbGFzcyIsImh0bWwiLCJpY29uIiwiaW1hZ2VBbHQiLCJpbWFnZUhlaWdodCIsImltYWdlVXJsIiwiaW1hZ2VXaWR0aCIsIm9uQWZ0ZXJDbG9zZSIsIm9uQ2xvc2UiLCJvbkRlc3Ryb3kiLCJwcm9ncmVzc1N0ZXBzIiwicmV2ZXJzZUJ1dHRvbnMiLCJzaG93Q2FuY2VsQnV0dG9uIiwic2hvd0Nsb3NlQnV0dG9uIiwic2hvd0NvbmZpcm1CdXR0b24iLCJ0ZXh0IiwidGl0bGUiLCJ0aXRsZVRleHQiXSxWdD17YW5pbWF0aW9uOidzaG93Q2xhc3MiIGFuZCAiaGlkZUNsYXNzJ30sWXQ9WyJhbGxvd091dHNpZGVDbGljayIsImFsbG93RW50ZXJLZXkiLCJiYWNrZHJvcCIsImZvY3VzQ29uZmlybSIsImZvY3VzQ2FuY2VsIiwiaGVpZ2h0QXV0byIsImtleWRvd25MaXN0ZW5lckNhcHR1cmUiXSxHdD1PYmplY3QuZnJlZXplKHtpc1ZhbGlkUGFyYW1ldGVyOkh0LGlzVXBkYXRhYmxlUGFyYW1ldGVyOmZ1bmN0aW9uKHQpe3JldHVybi0xIT09VXQuaW5kZXhPZih0KX0saXNEZXByZWNhdGVkUGFyYW1ldGVyOkJ0LGFyZ3NUb1BhcmFtczpmdW5jdGlvbihlKXt2YXIgbj17fTtyZXR1cm4ib2JqZWN0IiE9PXQoZVswXSl8fHYoZVswXSk/WyJ0aXRsZSIsImh0bWwiLCJpY29uIl0uZm9yRWFjaCgoZnVuY3Rpb24oaSxyKXt2YXIgbz1lW3JdOyJzdHJpbmciPT10eXBlb2Ygb3x8dihvKT9uW2ldPW86dm9pZCAwIT09byYmcSgiVW5leHBlY3RlZCB0eXBlIG9mICIuY29uY2F0KGksJyEgRXhwZWN0ZWQgInN0cmluZyIgb3IgIkVsZW1lbnQiLCBnb3QgJykuY29uY2F0KHQobykpKX0pKTpyKG4sZVswXSksbn0saXNWaXNpYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIG10KFEoKSl9LGNsaWNrQ29uZmlybTpPdCxjbGlja0NhbmNlbDpmdW5jdGlvbigpe3JldHVybiBFKCkmJkUoKS5jbGljaygpfSxnZXRDb250YWluZXI6WCxnZXRQb3B1cDpRLGdldFRpdGxlOlMsZ2V0Q29udGVudDpDLGdldEh0bWxDb250YWluZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdyhZWyJodG1sLWNvbnRhaW5lciJdKX0sZ2V0SW1hZ2U6ayxnZXRJY29uOl8sZ2V0SWNvbnM6eCxnZXRDbG9zZUJ1dHRvbjpMLGdldEFjdGlvbnM6TSxnZXRDb25maXJtQnV0dG9uOkQsZ2V0Q2FuY2VsQnV0dG9uOkUsZ2V0SGVhZGVyOk8sZ2V0Rm9vdGVyOkksZ2V0VGltZXJQcm9ncmVzc0JhcjpQLGdldEZvY3VzYWJsZUVsZW1lbnRzOk4sZ2V0VmFsaWRhdGlvbk1lc3NhZ2U6QSxpc0xvYWRpbmc6UixmaXJlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsZT1uZXcgQXJyYXkodCksbj0wO248dDtuKyspZVtuXT1hcmd1bWVudHNbbl07cmV0dXJuIGwodGhpcyxlKX0sbWl4aW46ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKG4peyFmdW5jdGlvbih0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlJiZudWxsIT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO3QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTp0LHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxlJiZhKHQsZSl9KGYsbik7dmFyIGwsZCxoPShsPWYsZD1zKCksZnVuY3Rpb24oKXt2YXIgdCxlPW8obCk7cmV0dXJuIGModGhpcyxkPyh0PW8odGhpcykuY29uc3RydWN0b3IsUmVmbGVjdC5jb25zdHJ1Y3QoZSxhcmd1bWVudHMsdCkpOmUuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0pO2Z1bmN0aW9uIGYoKXtyZXR1cm4gZSh0aGlzLGYpLGguYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBpKGYsW3trZXk6Il9tYWluIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdShvKGYucHJvdG90eXBlKSwiX21haW4iLHRoaXMpLmNhbGwodGhpcyxyKHt9LHQsZSkpfX1dKSxmfSh0aGlzKX0scXVldWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztmdW5jdGlvbiBuKHQsZSl7RnQ9W10sdChlKX1GdD10O3ZhciBpPVtdO3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24odCl7IWZ1bmN0aW9uIHIobyxhKXtvPEZ0Lmxlbmd0aD8oZG9jdW1lbnQuYm9keS5zZXRBdHRyaWJ1dGUoImRhdGEtc3dhbDItcXVldWUtc3RlcCIsbyksZS5maXJlKEZ0W29dKS50aGVuKChmdW5jdGlvbihlKXt2b2lkIDAhPT1lLnZhbHVlPyhpLnB1c2goZS52YWx1ZSkscihvKzEsYSkpOm4odCx7ZGlzbWlzczplLmRpc21pc3N9KX0pKSk6bih0LHt2YWx1ZTppfSl9KDApfSkpfSxnZXRRdWV1ZVN0ZXA6RHQsaW5zZXJ0UXVldWVTdGVwOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUmJmU8RnQubGVuZ3RoP0Z0LnNwbGljZShlLDAsdCk6RnQucHVzaCh0KX0sZGVsZXRlUXVldWVTdGVwOmZ1bmN0aW9uKHQpe3ZvaWQgMCE9PUZ0W3RdJiZGdC5zcGxpY2UodCwxKX0sc2hvd0xvYWRpbmc6anQsZW5hYmxlTG9hZGluZzpqdCxnZXRUaW1lckxlZnQ6ZnVuY3Rpb24oKXtyZXR1cm4gcXQudGltZW91dCYmcXQudGltZW91dC5nZXRUaW1lckxlZnQoKX0sc3RvcFRpbWVyOiR0LHJlc3VtZVRpbWVyOnp0LHRvZ2dsZVRpbWVyOmZ1bmN0aW9uKCl7dmFyIHQ9cXQudGltZW91dDtyZXR1cm4gdCYmKHQucnVubmluZz8kdDp6dCkoKX0saW5jcmVhc2VUaW1lcjpmdW5jdGlvbih0KXtpZihxdC50aW1lb3V0KXt2YXIgZT1xdC50aW1lb3V0LmluY3JlYXNlKHQpO3JldHVybiBsdChlLCEwKSxlfX0saXNUaW1lclJ1bm5pbmc6ZnVuY3Rpb24oKXtyZXR1cm4gcXQudGltZW91dCYmcXQudGltZW91dC5pc1J1bm5pbmcoKX19KTtmdW5jdGlvbiBYdCgpe3ZhciB0LGU9U3QuaW5uZXJQYXJhbXMuZ2V0KHRoaXMpO2UmJih0PVN0LmRvbUNhY2hlLmdldCh0aGlzKSxlLnNob3dDb25maXJtQnV0dG9ufHwocnQodC5jb25maXJtQnV0dG9uKSxlLnNob3dDYW5jZWxCdXR0b258fHJ0KHQuYWN0aW9ucykpLHB0KFt0LnBvcHVwLHQuYWN0aW9uc10sWS5sb2FkaW5nKSx0LnBvcHVwLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1idXN5IiksdC5wb3B1cC5yZW1vdmVBdHRyaWJ1dGUoImRhdGEtbG9hZGluZyIpLHQuY29uZmlybUJ1dHRvbi5kaXNhYmxlZD0hMSx0LmNhbmNlbEJ1dHRvbi5kaXNhYmxlZD0hMSl9ZnVuY3Rpb24gUXQoKXtyZXR1cm4hIXdpbmRvdy5NU0lucHV0TWV0aG9kQ29udGV4dCYmISFkb2N1bWVudC5kb2N1bWVudE1vZGV9ZnVuY3Rpb24gS3QoKXt2YXIgdD1YKCksZT1RKCk7dC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgiYWxpZ24taXRlbXMiKSxlLm9mZnNldFRvcDwwJiYodC5zdHlsZS5hbGlnbkl0ZW1zPSJmbGV4LXN0YXJ0Iil9dmFyIEp0PWZ1bmN0aW9uKHQpe3ZhciBlPVgoKTtyZXR1cm4gdD09PWV8fCEoYXQoZSl8fCJJTlBVVCI9PT10LnRhZ05hbWV8fGF0KEMoKSkmJkMoKS5jb250YWlucyh0KSl9LFp0PXtzd2FsUHJvbWlzZVJlc29sdmU6bmV3IFdlYWtNYXB9O2Z1bmN0aW9uIHRlKHQsZSxuLGkpe3ZhciByO24/aWUodCxpKToobmV3IFByb21pc2UoKGZ1bmN0aW9uKHQpe3ZhciBlPXdpbmRvdy5zY3JvbGxYLG49d2luZG93LnNjcm9sbFk7cXQucmVzdG9yZUZvY3VzVGltZW91dD1zZXRUaW1lb3V0KChmdW5jdGlvbigpe3F0LnByZXZpb3VzQWN0aXZlRWxlbWVudCYmcXQucHJldmlvdXNBY3RpdmVFbGVtZW50LmZvY3VzPyhxdC5wcmV2aW91c0FjdGl2ZUVsZW1lbnQuZm9jdXMoKSxxdC5wcmV2aW91c0FjdGl2ZUVsZW1lbnQ9bnVsbCk6ZG9jdW1lbnQuYm9keSYmZG9jdW1lbnQuYm9keS5mb2N1cygpLHQoKX0pLDEwMCksdm9pZCAwIT09ZSYmdm9pZCAwIT09biYmd2luZG93LnNjcm9sbFRvKGUsbil9KSkudGhlbigoZnVuY3Rpb24oKXtyZXR1cm4gaWUodCxpKX0pKSxxdC5rZXlkb3duVGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleWRvd24iLHF0LmtleWRvd25IYW5kbGVyLHtjYXB0dXJlOnF0LmtleWRvd25MaXN0ZW5lckNhcHR1cmV9KSxxdC5rZXlkb3duSGFuZGxlckFkZGVkPSExKSxlLnBhcmVudE5vZGUmJiFkb2N1bWVudC5ib2R5LmdldEF0dHJpYnV0ZSgiZGF0YS1zd2FsMi1xdWV1ZS1zdGVwIikmJmUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKSxGKCkmJihudWxsIT09Si5wcmV2aW91c0JvZHlQYWRkaW5nJiYoZG9jdW1lbnQuYm9keS5zdHlsZS5wYWRkaW5nUmlnaHQ9IiIuY29uY2F0KEoucHJldmlvdXNCb2R5UGFkZGluZywicHgiKSxKLnByZXZpb3VzQm9keVBhZGRpbmc9bnVsbCksJChkb2N1bWVudC5ib2R5LFkuaW9zZml4KSYmKHI9cGFyc2VJbnQoZG9jdW1lbnQuYm9keS5zdHlsZS50b3AsMTApLHB0KGRvY3VtZW50LmJvZHksWS5pb3NmaXgpLGRvY3VtZW50LmJvZHkuc3R5bGUudG9wPSIiLGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wPS0xKnIpLCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiZRdCgpJiZ3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicmVzaXplIixLdCksaChkb2N1bWVudC5ib2R5LmNoaWxkcmVuKS5mb3JFYWNoKChmdW5jdGlvbih0KXt0Lmhhc0F0dHJpYnV0ZSgiZGF0YS1wcmV2aW91cy1hcmlhLWhpZGRlbiIpPyh0LnNldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iLHQuZ2V0QXR0cmlidXRlKCJkYXRhLXByZXZpb3VzLWFyaWEtaGlkZGVuIikpLHQucmVtb3ZlQXR0cmlidXRlKCJkYXRhLXByZXZpb3VzLWFyaWEtaGlkZGVuIikpOnQucmVtb3ZlQXR0cmlidXRlKCJhcmlhLWhpZGRlbiIpfSkpKSxwdChbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGRvY3VtZW50LmJvZHldLFtZLnNob3duLFlbImhlaWdodC1hdXRvIl0sWVsibm8tYmFja2Ryb3AiXSxZWyJ0b2FzdC1zaG93biJdLFlbInRvYXN0LWNvbHVtbiJdXSl9ZnVuY3Rpb24gZWUodCl7dmFyIGUsbixpLHI9USgpO3ImJihlPVN0LmlubmVyUGFyYW1zLmdldCh0aGlzKSkmJiEkKHIsZS5oaWRlQ2xhc3MucG9wdXApJiYobj1adC5zd2FsUHJvbWlzZVJlc29sdmUuZ2V0KHRoaXMpLHB0KHIsZS5zaG93Q2xhc3MucG9wdXApLGZ0KHIsZS5oaWRlQ2xhc3MucG9wdXApLGk9WCgpLHB0KGksZS5zaG93Q2xhc3MuYmFja2Ryb3ApLGZ0KGksZS5oaWRlQ2xhc3MuYmFja2Ryb3ApLGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1YKCkscj13dCYmc3QoZSksbz1uLm9uQ2xvc2UsYT1uLm9uQWZ0ZXJDbG9zZTtudWxsIT09byYmImZ1bmN0aW9uIj09dHlwZW9mIG8mJm8oZSkscj9uZSh0LGUsaSxhKTp0ZSh0LGksSygpLGEpfSh0aGlzLHIsZSksdm9pZCAwIT09dD8odC5pc0Rpc21pc3NlZD12b2lkIDAhPT10LmRpc21pc3MsdC5pc0NvbmZpcm1lZD12b2lkIDA9PT10LmRpc21pc3MpOnQ9e2lzRGlzbWlzc2VkOiEwLGlzQ29uZmlybWVkOiExfSxuKHR8fHt9KSl9dmFyIG5lPWZ1bmN0aW9uKHQsZSxuLGkpe3F0LnN3YWxDbG9zZUV2ZW50RmluaXNoZWRDYWxsYmFjaz10ZS5iaW5kKG51bGwsdCxuLEsoKSxpKSxlLmFkZEV2ZW50TGlzdGVuZXIod3QsKGZ1bmN0aW9uKHQpe3QudGFyZ2V0PT09ZSYmKHF0LnN3YWxDbG9zZUV2ZW50RmluaXNoZWRDYWxsYmFjaygpLGRlbGV0ZSBxdC5zd2FsQ2xvc2VFdmVudEZpbmlzaGVkQ2FsbGJhY2spfSkpfSxpZT1mdW5jdGlvbih0LGUpe3NldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ImZ1bmN0aW9uIj09dHlwZW9mIGUmJmUoKSx0Ll9kZXN0cm95KCl9KSl9O2Z1bmN0aW9uIHJlKHQsZSxuKXt2YXIgaT1TdC5kb21DYWNoZS5nZXQodCk7ZS5mb3JFYWNoKChmdW5jdGlvbih0KXtpW3RdLmRpc2FibGVkPW59KSl9ZnVuY3Rpb24gb2UodCxlKXtpZighdClyZXR1cm4hMTtpZigicmFkaW8iPT09dC50eXBlKWZvcih2YXIgbj10LnBhcmVudE5vZGUucGFyZW50Tm9kZS5xdWVyeVNlbGVjdG9yQWxsKCJpbnB1dCIpLGk9MDtpPG4ubGVuZ3RoO2krKyluW2ldLmRpc2FibGVkPWU7ZWxzZSB0LmRpc2FibGVkPWV9dmFyIGFlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChuLGkpe2UodGhpcyx0KSx0aGlzLmNhbGxiYWNrPW4sdGhpcy5yZW1haW5pbmc9aSx0aGlzLnJ1bm5pbmc9ITEsdGhpcy5zdGFydCgpfXJldHVybiBpKHQsW3trZXk6InN0YXJ0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJ1bm5pbmd8fCh0aGlzLnJ1bm5pbmc9ITAsdGhpcy5zdGFydGVkPW5ldyBEYXRlLHRoaXMuaWQ9c2V0VGltZW91dCh0aGlzLmNhbGxiYWNrLHRoaXMucmVtYWluaW5nKSksdGhpcy5yZW1haW5pbmd9fSx7a2V5OiJzdG9wIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJ1bm5pbmcmJih0aGlzLnJ1bm5pbmc9ITEsY2xlYXJUaW1lb3V0KHRoaXMuaWQpLHRoaXMucmVtYWluaW5nLT1uZXcgRGF0ZS10aGlzLnN0YXJ0ZWQpLHRoaXMucmVtYWluaW5nfX0se2tleToiaW5jcmVhc2UiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMucnVubmluZztyZXR1cm4gZSYmdGhpcy5zdG9wKCksdGhpcy5yZW1haW5pbmcrPXQsZSYmdGhpcy5zdGFydCgpLHRoaXMucmVtYWluaW5nfX0se2tleToiZ2V0VGltZXJMZWZ0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJ1bm5pbmcmJih0aGlzLnN0b3AoKSx0aGlzLnN0YXJ0KCkpLHRoaXMucmVtYWluaW5nfX0se2tleToiaXNSdW5uaW5nIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJ1bm5pbmd9fV0pLHR9KCksc2U9e2VtYWlsOmZ1bmN0aW9uKHQsZSl7cmV0dXJuL15bYS16QS1aMC05LitfLV0rQFthLXpBLVowLTkuLV0rXC5bYS16QS1aMC05LV17MiwyNH0kLy50ZXN0KHQpP1Byb21pc2UucmVzb2x2ZSgpOlByb21pc2UucmVzb2x2ZShlfHwiSW52YWxpZCBlbWFpbCBhZGRyZXNzIil9LHVybDpmdW5jdGlvbih0LGUpe3JldHVybi9eaHR0cHM/OlwvXC8od3d3XC4pP1stYS16QS1aMC05QDolLl8rfiM9XXsxLDI1Nn1cLlthLXpdezIsNjN9XGIoWy1hLXpBLVowLTlAOiVfKy5+Iz8mLz1dKikkLy50ZXN0KHQpP1Byb21pc2UucmVzb2x2ZSgpOlByb21pc2UucmVzb2x2ZShlfHwiSW52YWxpZCBVUkwiKX19O2Z1bmN0aW9uIGxlKHQpe3ZhciBlLG47KGU9dCkuaW5wdXRWYWxpZGF0b3J8fE9iamVjdC5rZXlzKHNlKS5mb3JFYWNoKChmdW5jdGlvbih0KXtlLmlucHV0PT09dCYmKGUuaW5wdXRWYWxpZGF0b3I9c2VbdF0pfSkpLHQuc2hvd0xvYWRlck9uQ29uZmlybSYmIXQucHJlQ29uZmlybSYmQigic2hvd0xvYWRlck9uQ29uZmlybSBpcyBzZXQgdG8gdHJ1ZSwgYnV0IHByZUNvbmZpcm0gaXMgbm90IGRlZmluZWQuXG5zaG93TG9hZGVyT25Db25maXJtIHNob3VsZCBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggcHJlQ29uZmlybSwgc2VlIHVzYWdlIGV4YW1wbGU6XG5odHRwczovL3N3ZWV0YWxlcnQyLmdpdGh1Yi5pby8jYWpheC1yZXF1ZXN0IiksdC5hbmltYXRpb249VSh0LmFuaW1hdGlvbiksKG49dCkudGFyZ2V0JiYoInN0cmluZyIhPXR5cGVvZiBuLnRhcmdldHx8ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihuLnRhcmdldCkpJiYoInN0cmluZyI9PXR5cGVvZiBuLnRhcmdldHx8bi50YXJnZXQuYXBwZW5kQ2hpbGQpfHwoQignVGFyZ2V0IHBhcmFtZXRlciBpcyBub3QgdmFsaWQsIGRlZmF1bHRpbmcgdG8gImJvZHkiJyksbi50YXJnZXQ9ImJvZHkiKSwic3RyaW5nIj09dHlwZW9mIHQudGl0bGUmJih0LnRpdGxlPXQudGl0bGUuc3BsaXQoIlxuIikuam9pbigiPGJyIC8+IikpLGZ1bmN0aW9uKHQpe3ZhciBlLG4saSxyLG8sYSxzLGwsYyx1LGQsaCxmLHAsZyxtPSEhKGU9WCgpKSYmKGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKSxwdChbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGRvY3VtZW50LmJvZHldLFtZWyJuby1iYWNrZHJvcCJdLFlbInRvYXN0LXNob3duIl0sWVsiaGFzLWNvbHVtbiJdXSksITApO2N0KCk/cSgiU3dlZXRBbGVydDIgcmVxdWlyZXMgZG9jdW1lbnQgdG8gaW5pdGlhbGl6ZSIpOigobj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSkuY2xhc3NOYW1lPVkuY29udGFpbmVyLG0mJmZ0KG4sWVsibm8tdHJhbnNpdGlvbiJdKSxqKG4sdnQpLChpPSJzdHJpbmciPT10eXBlb2Yocj10LnRhcmdldCk/ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihyKTpyKS5hcHBlbmRDaGlsZChuKSxvPXQsKGE9USgpKS5zZXRBdHRyaWJ1dGUoInJvbGUiLG8udG9hc3Q/ImFsZXJ0IjoiZGlhbG9nIiksYS5zZXRBdHRyaWJ1dGUoImFyaWEtbGl2ZSIsby50b2FzdD8icG9saXRlIjoiYXNzZXJ0aXZlIiksby50b2FzdHx8YS5zZXRBdHRyaWJ1dGUoImFyaWEtbW9kYWwiLCJ0cnVlIikscz1pLCJydGwiPT09d2luZG93LmdldENvbXB1dGVkU3R5bGUocykuZGlyZWN0aW9uJiZmdChYKCksWS5ydGwpLGw9QygpLGM9Z3QobCxZLmlucHV0KSx1PWd0KGwsWS5maWxlKSxkPWwucXVlcnlTZWxlY3RvcigiLiIuY29uY2F0KFkucmFuZ2UsIiBpbnB1dCIpKSxoPWwucXVlcnlTZWxlY3RvcigiLiIuY29uY2F0KFkucmFuZ2UsIiBvdXRwdXQiKSksZj1ndChsLFkuc2VsZWN0KSxwPWwucXVlcnlTZWxlY3RvcigiLiIuY29uY2F0KFkuY2hlY2tib3gsIiBpbnB1dCIpKSxnPWd0KGwsWS50ZXh0YXJlYSksYy5vbmlucHV0PXV0LHUub25jaGFuZ2U9dXQsZi5vbmNoYW5nZT11dCxwLm9uY2hhbmdlPXV0LGcub25pbnB1dD11dCxkLm9uaW5wdXQ9ZnVuY3Rpb24odCl7dXQodCksaC52YWx1ZT1kLnZhbHVlfSxkLm9uY2hhbmdlPWZ1bmN0aW9uKHQpe3V0KHQpLGQubmV4dFNpYmxpbmcudmFsdWU9ZC52YWx1ZX0pfSh0KX1mdW5jdGlvbiBjZSh0KXt2YXIgZSxuPVEoKTt0LnRhcmdldD09PW4mJihlPVgoKSxuLnJlbW92ZUV2ZW50TGlzdGVuZXIod3QsY2UpLGUuc3R5bGUub3ZlcmZsb3dZPSJhdXRvIil9ZnVuY3Rpb24gdWUodCxlKXt0LmNsb3NlUG9wdXAoe3ZhbHVlOmV9KX1mdW5jdGlvbiBkZSh0LGUsbil7dmFyIGk9TigpO2lmKDA8aS5sZW5ndGgpcmV0dXJuKGUrPW4pPT09aS5sZW5ndGg/ZT0wOi0xPT09ZSYmKGU9aS5sZW5ndGgtMSksaVtlXS5mb2N1cygpO1EoKS5mb2N1cygpfXZhciBoZSxmZT1mdW5jdGlvbih0LGUpe3d0JiZzdChlKT8odC5zdHlsZS5vdmVyZmxvd1k9ImhpZGRlbiIsZS5hZGRFdmVudExpc3RlbmVyKHd0LGNlKSk6dC5zdHlsZS5vdmVyZmxvd1k9ImF1dG8ifSxwZT1mdW5jdGlvbih0LGUsbil7dmFyIGk7KC9pUGFkfGlQaG9uZXxpUG9kLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpJiYhd2luZG93Lk1TU3RyZWFtfHwiTWFjSW50ZWwiPT09bmF2aWdhdG9yLnBsYXRmb3JtJiYxPG5hdmlnYXRvci5tYXhUb3VjaFBvaW50cykmJiEkKGRvY3VtZW50LmJvZHksWS5pb3NmaXgpJiYoaT1kb2N1bWVudC5ib2R5LnNjcm9sbFRvcCxkb2N1bWVudC5ib2R5LnN0eWxlLnRvcD0iIi5jb25jYXQoLTEqaSwicHgiKSxmdChkb2N1bWVudC5ib2R5LFkuaW9zZml4KSxmdW5jdGlvbigpe3ZhciB0LGU9WCgpO2Uub250b3VjaHN0YXJ0PWZ1bmN0aW9uKGUpe3Q9SnQoZS50YXJnZXQpfSxlLm9udG91Y2htb3ZlPWZ1bmN0aW9uKGUpe3QmJihlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wUHJvcGFnYXRpb24oKSl9fSgpLG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goLyhDcmlPU3xGeGlPU3xFZGdpT1N8WWFCcm93c2VyfFVDQnJvd3NlcikvaSl8fFEoKS5zY3JvbGxIZWlnaHQ+d2luZG93LmlubmVySGVpZ2h0LTQ0JiYoWCgpLnN0eWxlLnBhZGRpbmdCb3R0b209IiIuY29uY2F0KDQ0LCJweCIpKSksInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJlF0KCkmJihLdCgpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLEt0KSksZSYmImhpZGRlbiIhPT1uJiZudWxsPT09Si5wcmV2aW91c0JvZHlQYWRkaW5nJiZkb2N1bWVudC5ib2R5LnNjcm9sbEhlaWdodD53aW5kb3cuaW5uZXJIZWlnaHQmJihKLnByZXZpb3VzQm9keVBhZGRpbmc9cGFyc2VJbnQod2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSkuZ2V0UHJvcGVydHlWYWx1ZSgicGFkZGluZy1yaWdodCIpKSxkb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmdSaWdodD0iIi5jb25jYXQoSi5wcmV2aW91c0JvZHlQYWRkaW5nK2Z1bmN0aW9uKCl7dmFyIHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dC5jbGFzc05hbWU9WVsic2Nyb2xsYmFyLW1lYXN1cmUiXSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHQpO3ZhciBlPXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgtdC5jbGllbnRXaWR0aDtyZXR1cm4gZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0KSxlfSgpLCJweCIpKSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe3Quc2Nyb2xsVG9wPTB9KSl9LGdlPWZ1bmN0aW9uKHQsZSxuKXtmdCh0LG4uc2hvd0NsYXNzLmJhY2tkcm9wKSxpdChlKSxmdChlLG4uc2hvd0NsYXNzLnBvcHVwKSxmdChbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGRvY3VtZW50LmJvZHldLFkuc2hvd24pLG4uaGVpZ2h0QXV0byYmbi5iYWNrZHJvcCYmIW4udG9hc3QmJmZ0KFtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsZG9jdW1lbnQuYm9keV0sWVsiaGVpZ2h0LWF1dG8iXSl9LG1lPWZ1bmN0aW9uKGUsbil7ZnVuY3Rpb24gaSh0KXtyZXR1cm4geWVbbi5pbnB1dF0ocixiZSh0KSxuKX12YXIgcj1DKCk7cChuLmlucHV0T3B0aW9ucyl8fG0obi5pbnB1dE9wdGlvbnMpPyhqdCgpLGcobi5pbnB1dE9wdGlvbnMpLnRoZW4oKGZ1bmN0aW9uKHQpe2UuaGlkZUxvYWRpbmcoKSxpKHQpfSkpKToib2JqZWN0Ij09PXQobi5pbnB1dE9wdGlvbnMpP2kobi5pbnB1dE9wdGlvbnMpOnEoIlVuZXhwZWN0ZWQgdHlwZSBvZiBpbnB1dE9wdGlvbnMhIEV4cGVjdGVkIG9iamVjdCwgTWFwIG9yIFByb21pc2UsIGdvdCAiLmNvbmNhdCh0KG4uaW5wdXRPcHRpb25zKSkpfSx2ZT1mdW5jdGlvbih0LGUpe3ZhciBuPXQuZ2V0SW5wdXQoKTtydChuKSxnKGUuaW5wdXRWYWx1ZSkudGhlbigoZnVuY3Rpb24oaSl7bi52YWx1ZT0ibnVtYmVyIj09PWUuaW5wdXQ/cGFyc2VGbG9hdChpKXx8MDoiIi5jb25jYXQoaSksaXQobiksbi5mb2N1cygpLHQuaGlkZUxvYWRpbmcoKX0pKS5jYXRjaCgoZnVuY3Rpb24oZSl7cSgiRXJyb3IgaW4gaW5wdXRWYWx1ZSBwcm9taXNlOiAiLmNvbmNhdChlKSksbi52YWx1ZT0iIixpdChuKSxuLmZvY3VzKCksdC5oaWRlTG9hZGluZygpfSkpfSx5ZT17c2VsZWN0OmZ1bmN0aW9uKHQsZSxuKXtmdW5jdGlvbiBpKHQsZSxpKXt2YXIgcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTtyLnZhbHVlPWksaihyLGUpLG4uaW5wdXRWYWx1ZS50b1N0cmluZygpPT09aS50b1N0cmluZygpJiYoci5zZWxlY3RlZD0hMCksdC5hcHBlbmRDaGlsZChyKX12YXIgcj1ndCh0LFkuc2VsZWN0KTtlLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlLG49dFswXSxvPXRbMV07QXJyYXkuaXNBcnJheShvKT8oKGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0Z3JvdXAiKSkubGFiZWw9bixlLmRpc2FibGVkPSExLHIuYXBwZW5kQ2hpbGQoZSksby5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gaShlLHRbMV0sdFswXSl9KSkpOmkocixvLG4pfSkpLHIuZm9jdXMoKX0scmFkaW86ZnVuY3Rpb24odCxlLG4pe3ZhciBpPWd0KHQsWS5yYWRpbyk7ZS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT10WzBdLHI9dFsxXSxvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0IiksYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsYWJlbCIpO28udHlwZT0icmFkaW8iLG8ubmFtZT1ZLnJhZGlvLG8udmFsdWU9ZSxuLmlucHV0VmFsdWUudG9TdHJpbmcoKT09PWUudG9TdHJpbmcoKSYmKG8uY2hlY2tlZD0hMCk7dmFyIHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpO2oocyxyKSxzLmNsYXNzTmFtZT1ZLmxhYmVsLGEuYXBwZW5kQ2hpbGQobyksYS5hcHBlbmRDaGlsZChzKSxpLmFwcGVuZENoaWxkKGEpfSkpO3ZhciByPWkucXVlcnlTZWxlY3RvckFsbCgiaW5wdXQiKTtyLmxlbmd0aCYmclswXS5mb2N1cygpfX0sYmU9ZnVuY3Rpb24gZShuKXt2YXIgaT1bXTtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIE1hcCYmbiBpbnN0YW5jZW9mIE1hcD9uLmZvckVhY2goKGZ1bmN0aW9uKG4scil7dmFyIG89bjsib2JqZWN0Ij09PXQobykmJihvPWUobykpLGkucHVzaChbcixvXSl9KSk6T2JqZWN0LmtleXMobikuZm9yRWFjaCgoZnVuY3Rpb24ocil7dmFyIG89bltyXTsib2JqZWN0Ij09PXQobykmJihvPWUobykpLGkucHVzaChbcixvXSl9KSksaX0sd2U9ZnVuY3Rpb24odCxlKXt2YXIgbj1mdW5jdGlvbih0LGUpe3ZhciBuPXQuZ2V0SW5wdXQoKTtpZighbilyZXR1cm4gbnVsbDtzd2l0Y2goZS5pbnB1dCl7Y2FzZSJjaGVja2JveCI6cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiB0LmNoZWNrZWQ/MTowfShuKTtjYXNlInJhZGlvIjpyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHQuY2hlY2tlZD90LnZhbHVlOm51bGx9KG4pO2Nhc2UiZmlsZSI6cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiB0LmZpbGVzLmxlbmd0aD9udWxsIT09dC5nZXRBdHRyaWJ1dGUoIm11bHRpcGxlIik/dC5maWxlczp0LmZpbGVzWzBdOm51bGx9KG4pO2RlZmF1bHQ6cmV0dXJuIGUuaW5wdXRBdXRvVHJpbT9uLnZhbHVlLnRyaW0oKTpuLnZhbHVlfX0odCxlKTtlLmlucHV0VmFsaWRhdG9yPyh0LmRpc2FibGVJbnB1dCgpLFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKGZ1bmN0aW9uKCl7cmV0dXJuIGcoZS5pbnB1dFZhbGlkYXRvcihuLGUudmFsaWRhdGlvbk1lc3NhZ2UpKX0pKS50aGVuKChmdW5jdGlvbihpKXt0LmVuYWJsZUJ1dHRvbnMoKSx0LmVuYWJsZUlucHV0KCksaT90LnNob3dWYWxpZGF0aW9uTWVzc2FnZShpKTp4ZSh0LGUsbil9KSkpOnQuZ2V0SW5wdXQoKS5jaGVja1ZhbGlkaXR5KCk/eGUodCxlLG4pOih0LmVuYWJsZUJ1dHRvbnMoKSx0LnNob3dWYWxpZGF0aW9uTWVzc2FnZShlLnZhbGlkYXRpb25NZXNzYWdlKSl9LHhlPWZ1bmN0aW9uKHQsZSxuKXtlLnNob3dMb2FkZXJPbkNvbmZpcm0mJmp0KCksZS5wcmVDb25maXJtPyh0LnJlc2V0VmFsaWRhdGlvbk1lc3NhZ2UoKSxQcm9taXNlLnJlc29sdmUoKS50aGVuKChmdW5jdGlvbigpe3JldHVybiBnKGUucHJlQ29uZmlybShuLGUudmFsaWRhdGlvbk1lc3NhZ2UpKX0pKS50aGVuKChmdW5jdGlvbihlKXttdChBKCkpfHwhMT09PWU/dC5oaWRlTG9hZGluZygpOnVlKHQsdm9pZCAwPT09ZT9uOmUpfSkpKTp1ZSh0LG4pfSxfZT1bIkFycm93TGVmdCIsIkFycm93UmlnaHQiLCJBcnJvd1VwIiwiQXJyb3dEb3duIiwiTGVmdCIsIlJpZ2h0IiwiVXAiLCJEb3duIl0sU2U9WyJFc2NhcGUiLCJFc2MiXSxDZT1mdW5jdGlvbih0LGUsbil7dmFyIGk9U3QuaW5uZXJQYXJhbXMuZ2V0KHQpO2kuc3RvcEtleWRvd25Qcm9wYWdhdGlvbiYmZS5zdG9wUHJvcGFnYXRpb24oKSwiRW50ZXIiPT09ZS5rZXk/a2UodCxlLGkpOiJUYWIiPT09ZS5rZXk/VGUoZSxpKTotMSE9PV9lLmluZGV4T2YoZS5rZXkpP0FlKCk6LTEhPT1TZS5pbmRleE9mKGUua2V5KSYmRGUoZSxpLG4pfSxrZT1mdW5jdGlvbih0LGUsbil7aWYoIWUuaXNDb21wb3NpbmcmJmUudGFyZ2V0JiZ0LmdldElucHV0KCkmJmUudGFyZ2V0Lm91dGVySFRNTD09PXQuZ2V0SW5wdXQoKS5vdXRlckhUTUwpe2lmKC0xIT09WyJ0ZXh0YXJlYSIsImZpbGUiXS5pbmRleE9mKG4uaW5wdXQpKXJldHVybjtPdCgpLGUucHJldmVudERlZmF1bHQoKX19LFRlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10LnRhcmdldCxuPU4oKSxpPS0xLHI9MDtyPG4ubGVuZ3RoO3IrKylpZihlPT09bltyXSl7aT1yO2JyZWFrfXQuc2hpZnRLZXk/ZGUoMCxpLC0xKTpkZSgwLGksMSksdC5zdG9wUHJvcGFnYXRpb24oKSx0LnByZXZlbnREZWZhdWx0KCl9LEFlPWZ1bmN0aW9uKCl7dmFyIHQ9RCgpLGU9RSgpO2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQ9PT10JiZtdChlKT9lLmZvY3VzKCk6ZG9jdW1lbnQuYWN0aXZlRWxlbWVudD09PWUmJm10KHQpJiZ0LmZvY3VzKCl9LERlPWZ1bmN0aW9uKHQsZSxuKXtVKGUuYWxsb3dFc2NhcGVLZXkpJiYodC5wcmV2ZW50RGVmYXVsdCgpLG4oVi5lc2MpKX0sRWU9ZnVuY3Rpb24odCxlLG4pe2UucG9wdXAub25jbGljaz1mdW5jdGlvbigpe3ZhciBlPVN0LmlubmVyUGFyYW1zLmdldCh0KTtlLnNob3dDb25maXJtQnV0dG9ufHxlLnNob3dDYW5jZWxCdXR0b258fGUuc2hvd0Nsb3NlQnV0dG9ufHxlLmlucHV0fHxuKFYuY2xvc2UpfX0sTWU9ITEsT2U9ZnVuY3Rpb24odCl7dC5wb3B1cC5vbm1vdXNlZG93bj1mdW5jdGlvbigpe3QuY29udGFpbmVyLm9ubW91c2V1cD1mdW5jdGlvbihlKXt0LmNvbnRhaW5lci5vbm1vdXNldXA9dm9pZCAwLGUudGFyZ2V0PT09dC5jb250YWluZXImJihNZT0hMCl9fX0sSWU9ZnVuY3Rpb24odCl7dC5jb250YWluZXIub25tb3VzZWRvd249ZnVuY3Rpb24oKXt0LnBvcHVwLm9ubW91c2V1cD1mdW5jdGlvbihlKXt0LnBvcHVwLm9ubW91c2V1cD12b2lkIDAsZS50YXJnZXQhPT10LnBvcHVwJiYhdC5wb3B1cC5jb250YWlucyhlLnRhcmdldCl8fChNZT0hMCl9fX0sUGU9ZnVuY3Rpb24odCxlLG4pe2UuY29udGFpbmVyLm9uY2xpY2s9ZnVuY3Rpb24oaSl7dmFyIHI9U3QuaW5uZXJQYXJhbXMuZ2V0KHQpO01lP01lPSExOmkudGFyZ2V0PT09ZS5jb250YWluZXImJlUoci5hbGxvd091dHNpZGVDbGljaykmJm4oVi5iYWNrZHJvcCl9fSxMZT1mdW5jdGlvbigpe2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQmJiJmdW5jdGlvbiI9PXR5cGVvZiBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmJsdXImJmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuYmx1cigpfSxOZT1mdW5jdGlvbih0KXtmb3IodmFyIGUgaW4gdCl0W2VdPW5ldyBXZWFrTWFwfSxGZT1PYmplY3QuZnJlZXplKHtoaWRlTG9hZGluZzpYdCxkaXNhYmxlTG9hZGluZzpYdCxnZXRJbnB1dDpmdW5jdGlvbih0KXt2YXIgZT1TdC5pbm5lclBhcmFtcy5nZXQodHx8dGhpcyksbj1TdC5kb21DYWNoZS5nZXQodHx8dGhpcyk7cmV0dXJuIG4/WihuLmNvbnRlbnQsZS5pbnB1dCk6bnVsbH0sY2xvc2U6ZWUsY2xvc2VQb3B1cDplZSxjbG9zZU1vZGFsOmVlLGNsb3NlVG9hc3Q6ZWUsZW5hYmxlQnV0dG9uczpmdW5jdGlvbigpe3JlKHRoaXMsWyJjb25maXJtQnV0dG9uIiwiY2FuY2VsQnV0dG9uIl0sITEpfSxkaXNhYmxlQnV0dG9uczpmdW5jdGlvbigpe3JlKHRoaXMsWyJjb25maXJtQnV0dG9uIiwiY2FuY2VsQnV0dG9uIl0sITApfSxlbmFibGVJbnB1dDpmdW5jdGlvbigpe3JldHVybiBvZSh0aGlzLmdldElucHV0KCksITEpfSxkaXNhYmxlSW5wdXQ6ZnVuY3Rpb24oKXtyZXR1cm4gb2UodGhpcy5nZXRJbnB1dCgpLCEwKX0sc2hvd1ZhbGlkYXRpb25NZXNzYWdlOmZ1bmN0aW9uKHQpe3ZhciBlPVN0LmRvbUNhY2hlLmdldCh0aGlzKTtqKGUudmFsaWRhdGlvbk1lc3NhZ2UsdCk7dmFyIG49d2luZG93LmdldENvbXB1dGVkU3R5bGUoZS5wb3B1cCk7ZS52YWxpZGF0aW9uTWVzc2FnZS5zdHlsZS5tYXJnaW5MZWZ0PSItIi5jb25jYXQobi5nZXRQcm9wZXJ0eVZhbHVlKCJwYWRkaW5nLWxlZnQiKSksZS52YWxpZGF0aW9uTWVzc2FnZS5zdHlsZS5tYXJnaW5SaWdodD0iLSIuY29uY2F0KG4uZ2V0UHJvcGVydHlWYWx1ZSgicGFkZGluZy1yaWdodCIpKSxpdChlLnZhbGlkYXRpb25NZXNzYWdlKTt2YXIgaT10aGlzLmdldElucHV0KCk7aSYmKGkuc2V0QXR0cmlidXRlKCJhcmlhLWludmFsaWQiLCEwKSxpLnNldEF0dHJpYnV0ZSgiYXJpYS1kZXNjcmliZWRCeSIsWVsidmFsaWRhdGlvbi1tZXNzYWdlIl0pLHR0KGkpLGZ0KGksWS5pbnB1dGVycm9yKSl9LHJlc2V0VmFsaWRhdGlvbk1lc3NhZ2U6ZnVuY3Rpb24oKXt2YXIgdD1TdC5kb21DYWNoZS5nZXQodGhpcyk7dC52YWxpZGF0aW9uTWVzc2FnZSYmcnQodC52YWxpZGF0aW9uTWVzc2FnZSk7dmFyIGU9dGhpcy5nZXRJbnB1dCgpO2UmJihlLnJlbW92ZUF0dHJpYnV0ZSgiYXJpYS1pbnZhbGlkIiksZS5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtZGVzY3JpYmVkQnkiKSxwdChlLFkuaW5wdXRlcnJvcikpfSxnZXRQcm9ncmVzc1N0ZXBzOmZ1bmN0aW9uKCl7cmV0dXJuIFN0LmRvbUNhY2hlLmdldCh0aGlzKS5wcm9ncmVzc1N0ZXBzfSxfbWFpbjpmdW5jdGlvbih0KXsoZnVuY3Rpb24odCl7Zm9yKHZhciBlIGluIHQpSHQocj1lKXx8QignVW5rbm93biBwYXJhbWV0ZXIgIicuY29uY2F0KHIsJyInKSksdC50b2FzdCYmKGk9ZSwtMSE9PVl0LmluZGV4T2YoaSkmJkIoJ1RoZSBwYXJhbWV0ZXIgIicuY29uY2F0KGksJyIgaXMgaW5jb21wYXRpYmxlIHdpdGggdG9hc3RzJykpKSxCdChuPWUpJiZmKG4sQnQobikpO3ZhciBuLGkscn0pKHQpLHF0LmN1cnJlbnRJbnN0YW5jZSYmcXQuY3VycmVudEluc3RhbmNlLl9kZXN0cm95KCkscXQuY3VycmVudEluc3RhbmNlPXRoaXM7dmFyIGU9ZnVuY3Rpb24odCl7dmFyIGU9cih7fSxXdC5zaG93Q2xhc3MsdC5zaG93Q2xhc3MpLG49cih7fSxXdC5oaWRlQ2xhc3MsdC5oaWRlQ2xhc3MpLGk9cih7fSxXdCx0KTtyZXR1cm4gaS5zaG93Q2xhc3M9ZSxpLmhpZGVDbGFzcz1uLCExPT09dC5hbmltYXRpb24mJihpLnNob3dDbGFzcz17cG9wdXA6InN3YWwyLW5vYW5pbWF0aW9uIixiYWNrZHJvcDoic3dhbDItbm9hbmltYXRpb24ifSxpLmhpZGVDbGFzcz17fSksaX0odCk7bGUoZSksT2JqZWN0LmZyZWV6ZShlKSxxdC50aW1lb3V0JiYocXQudGltZW91dC5zdG9wKCksZGVsZXRlIHF0LnRpbWVvdXQpLGNsZWFyVGltZW91dChxdC5yZXN0b3JlRm9jdXNUaW1lb3V0KTt2YXIgbj1mdW5jdGlvbih0KXt2YXIgZT17cG9wdXA6USgpLGNvbnRhaW5lcjpYKCksY29udGVudDpDKCksYWN0aW9uczpNKCksY29uZmlybUJ1dHRvbjpEKCksY2FuY2VsQnV0dG9uOkUoKSxjbG9zZUJ1dHRvbjpMKCksdmFsaWRhdGlvbk1lc3NhZ2U6QSgpLHByb2dyZXNzU3RlcHM6VCgpfTtyZXR1cm4gU3QuZG9tQ2FjaGUuc2V0KHQsZSksZX0odGhpcyk7cmV0dXJuIE10KHRoaXMsZSksU3QuaW5uZXJQYXJhbXMuc2V0KHRoaXMsZSksZnVuY3Rpb24odCxlLG4pe3JldHVybiBuZXcgUHJvbWlzZSgoZnVuY3Rpb24oaSl7dmFyIHI9ZnVuY3Rpb24oZSl7dC5jbG9zZVBvcHVwKHtkaXNtaXNzOmV9KX07WnQuc3dhbFByb21pc2VSZXNvbHZlLnNldCh0LGkpLGUuY29uZmlybUJ1dHRvbi5vbmNsaWNrPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7dC5kaXNhYmxlQnV0dG9ucygpLGUuaW5wdXQ/d2UodCxlKTp4ZSh0LGUsITApfSh0LG4pfSxlLmNhbmNlbEJ1dHRvbi5vbmNsaWNrPWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7dC5kaXNhYmxlQnV0dG9ucygpLGUoVi5jYW5jZWwpfSh0LHIpfSxlLmNsb3NlQnV0dG9uLm9uY2xpY2s9ZnVuY3Rpb24oKXtyZXR1cm4gcihWLmNsb3NlKX0sZnVuY3Rpb24odCxlLG4pe1N0LmlubmVyUGFyYW1zLmdldCh0KS50b2FzdD9FZSh0LGUsbik6KE9lKGUpLEllKGUpLFBlKHQsZSxuKSl9KHQsZSxyKSxmdW5jdGlvbih0LGUsbixpKXtlLmtleWRvd25UYXJnZXQmJmUua2V5ZG93bkhhbmRsZXJBZGRlZCYmKGUua2V5ZG93blRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIixlLmtleWRvd25IYW5kbGVyLHtjYXB0dXJlOmUua2V5ZG93bkxpc3RlbmVyQ2FwdHVyZX0pLGUua2V5ZG93bkhhbmRsZXJBZGRlZD0hMSksbi50b2FzdHx8KGUua2V5ZG93bkhhbmRsZXI9ZnVuY3Rpb24oZSl7cmV0dXJuIENlKHQsZSxpKX0sZS5rZXlkb3duVGFyZ2V0PW4ua2V5ZG93bkxpc3RlbmVyQ2FwdHVyZT93aW5kb3c6USgpLGUua2V5ZG93bkxpc3RlbmVyQ2FwdHVyZT1uLmtleWRvd25MaXN0ZW5lckNhcHR1cmUsZS5rZXlkb3duVGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLGUua2V5ZG93bkhhbmRsZXIse2NhcHR1cmU6ZS5rZXlkb3duTGlzdGVuZXJDYXB0dXJlfSksZS5rZXlkb3duSGFuZGxlckFkZGVkPSEwKX0odCxxdCxuLHIpLG4udG9hc3QmJihuLmlucHV0fHxuLmZvb3Rlcnx8bi5zaG93Q2xvc2VCdXR0b24pP2Z0KGRvY3VtZW50LmJvZHksWVsidG9hc3QtY29sdW1uIl0pOnB0KGRvY3VtZW50LmJvZHksWVsidG9hc3QtY29sdW1uIl0pLGZ1bmN0aW9uKHQsZSl7InNlbGVjdCI9PT1lLmlucHV0fHwicmFkaW8iPT09ZS5pbnB1dD9tZSh0LGUpOi0xIT09WyJ0ZXh0IiwiZW1haWwiLCJudW1iZXIiLCJ0ZWwiLCJ0ZXh0YXJlYSJdLmluZGV4T2YoZS5pbnB1dCkmJihwKGUuaW5wdXRWYWx1ZSl8fG0oZS5pbnB1dFZhbHVlKSkmJnZlKHQsZSl9KHQsbiksZnVuY3Rpb24odCl7dmFyIGU9WCgpLG49USgpOyJmdW5jdGlvbiI9PXR5cGVvZiB0Lm9uQmVmb3JlT3BlbiYmdC5vbkJlZm9yZU9wZW4obik7dmFyIGk9d2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuYm9keSkub3ZlcmZsb3dZO2dlKGUsbix0KSxmZShlLG4pLEYoKSYmKHBlKGUsdC5zY3JvbGxiYXJQYWRkaW5nLGkpLGgoZG9jdW1lbnQuYm9keS5jaGlsZHJlbikuZm9yRWFjaCgoZnVuY3Rpb24odCl7dD09PVgoKXx8ZnVuY3Rpb24odCxlKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgdC5jb250YWlucylyZXR1cm4gdC5jb250YWlucyhlKX0odCxYKCkpfHwodC5oYXNBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIikmJnQuc2V0QXR0cmlidXRlKCJkYXRhLXByZXZpb3VzLWFyaWEtaGlkZGVuIix0LmdldEF0dHJpYnV0ZSgiYXJpYS1oaWRkZW4iKSksdC5zZXRBdHRyaWJ1dGUoImFyaWEtaGlkZGVuIiwidHJ1ZSIpKX0pKSksSygpfHxxdC5wcmV2aW91c0FjdGl2ZUVsZW1lbnR8fChxdC5wcmV2aW91c0FjdGl2ZUVsZW1lbnQ9ZG9jdW1lbnQuYWN0aXZlRWxlbWVudCksImZ1bmN0aW9uIj09dHlwZW9mIHQub25PcGVuJiZzZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiB0Lm9uT3BlbihuKX0pKSxwdChlLFlbIm5vLXRyYW5zaXRpb24iXSl9KG4pLGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1QKCk7cnQoaSksZS50aW1lciYmKHQudGltZW91dD1uZXcgYWUoKGZ1bmN0aW9uKCl7bigidGltZXIiKSxkZWxldGUgdC50aW1lb3V0fSksZS50aW1lciksZS50aW1lclByb2dyZXNzQmFyJiYoaXQoaSksc2V0VGltZW91dCgoZnVuY3Rpb24oKXt0LnRpbWVvdXQucnVubmluZyYmbHQoZS50aW1lcil9KSkpKX0ocXQsbixyKSxmdW5jdGlvbih0LGUpe2lmKCFlLnRvYXN0KVUoZS5hbGxvd0VudGVyS2V5KT9lLmZvY3VzQ2FuY2VsJiZtdCh0LmNhbmNlbEJ1dHRvbik/dC5jYW5jZWxCdXR0b24uZm9jdXMoKTplLmZvY3VzQ29uZmlybSYmbXQodC5jb25maXJtQnV0dG9uKT90LmNvbmZpcm1CdXR0b24uZm9jdXMoKTpkZSgwLC0xLDEpOkxlKCl9KGUsbiksc2V0VGltZW91dCgoZnVuY3Rpb24oKXtlLmNvbnRhaW5lci5zY3JvbGxUb3A9MH0pKX0pKX0odGhpcyxuLGUpfSx1cGRhdGU6ZnVuY3Rpb24odCl7dmFyIGU9USgpLG49U3QuaW5uZXJQYXJhbXMuZ2V0KHRoaXMpO2lmKCFlfHwkKGUsbi5oaWRlQ2xhc3MucG9wdXApKXJldHVybiBCKCJZb3UncmUgdHJ5aW5nIHRvIHVwZGF0ZSB0aGUgY2xvc2VkIG9yIGNsb3NpbmcgcG9wdXAsIHRoYXQgd29uJ3Qgd29yay4gVXNlIHRoZSB1cGRhdGUoKSBtZXRob2QgaW4gcHJlQ29uZmlybSBwYXJhbWV0ZXIgb3Igc2hvdyBhIG5ldyBwb3B1cC4iKTt2YXIgaT17fTtPYmplY3Qua2V5cyh0KS5mb3JFYWNoKChmdW5jdGlvbihlKXtqZS5pc1VwZGF0YWJsZVBhcmFtZXRlcihlKT9pW2VdPXRbZV06QignSW52YWxpZCBwYXJhbWV0ZXIgdG8gdXBkYXRlOiAiJy5jb25jYXQoZSwnIi4gVXBkYXRhYmxlIHBhcmFtcyBhcmUgbGlzdGVkIGhlcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9zd2VldGFsZXJ0Mi9zd2VldGFsZXJ0Mi9ibG9iL21hc3Rlci9zcmMvdXRpbHMvcGFyYW1zLmpzJykpfSkpO3ZhciBvPXIoe30sbixpKTtNdCh0aGlzLG8pLFN0LmlubmVyUGFyYW1zLnNldCh0aGlzLG8pLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRoaXMse3BhcmFtczp7dmFsdWU6cih7fSx0aGlzLnBhcmFtcyx0KSx3cml0YWJsZTohMSxlbnVtZXJhYmxlOiEwfX0pfSxfZGVzdHJveTpmdW5jdGlvbigpe3ZhciB0PVN0LmRvbUNhY2hlLmdldCh0aGlzKSxlPVN0LmlubmVyUGFyYW1zLmdldCh0aGlzKTtlJiYodC5wb3B1cCYmcXQuc3dhbENsb3NlRXZlbnRGaW5pc2hlZENhbGxiYWNrJiYocXQuc3dhbENsb3NlRXZlbnRGaW5pc2hlZENhbGxiYWNrKCksZGVsZXRlIHF0LnN3YWxDbG9zZUV2ZW50RmluaXNoZWRDYWxsYmFjaykscXQuZGVmZXJEaXNwb3NhbFRpbWVyJiYoY2xlYXJUaW1lb3V0KHF0LmRlZmVyRGlzcG9zYWxUaW1lciksZGVsZXRlIHF0LmRlZmVyRGlzcG9zYWxUaW1lciksImZ1bmN0aW9uIj09dHlwZW9mIGUub25EZXN0cm95JiZlLm9uRGVzdHJveSgpLGRlbGV0ZSB0aGlzLnBhcmFtcyxkZWxldGUgcXQua2V5ZG93bkhhbmRsZXIsZGVsZXRlIHF0LmtleWRvd25UYXJnZXQsTmUoU3QpLE5lKFp0KSl9fSksUmU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7aWYoZSh0aGlzLHQpLCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93KXsidW5kZWZpbmVkIj09dHlwZW9mIFByb21pc2UmJnEoIlRoaXMgcGFja2FnZSByZXF1aXJlcyBhIFByb21pc2UgbGlicmFyeSwgcGxlYXNlIGluY2x1ZGUgYSBzaGltIHRvIGVuYWJsZSBpdCBpbiB0aGlzIGJyb3dzZXIgKFNlZTogaHR0cHM6Ly9naXRodWIuY29tL3N3ZWV0YWxlcnQyL3N3ZWV0YWxlcnQyL3dpa2kvTWlncmF0aW9uLWZyb20tU3dlZXRBbGVydC10by1Td2VldEFsZXJ0MiMxLWllLXN1cHBvcnQpIiksaGU9dGhpcztmb3IodmFyIG49YXJndW1lbnRzLmxlbmd0aCxpPW5ldyBBcnJheShuKSxyPTA7cjxuO3IrKylpW3JdPWFyZ3VtZW50c1tyXTt2YXIgbz1PYmplY3QuZnJlZXplKHRoaXMuY29uc3RydWN0b3IuYXJnc1RvUGFyYW1zKGkpKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0aGlzLHtwYXJhbXM6e3ZhbHVlOm8sd3JpdGFibGU6ITEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9fSk7dmFyIGE9dGhpcy5fbWFpbih0aGlzLnBhcmFtcyk7U3QucHJvbWlzZS5zZXQodGhpcyxhKX19cmV0dXJuIGkodCxbe2tleToidGhlbiIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIFN0LnByb21pc2UuZ2V0KHRoaXMpLnRoZW4odCl9fSx7a2V5OiJmaW5hbGx5Iix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gU3QucHJvbWlzZS5nZXQodGhpcykuZmluYWxseSh0KX19XSksdH0oKTtyKFJlLnByb3RvdHlwZSxGZSkscihSZSxHdCksT2JqZWN0LmtleXMoRmUpLmZvckVhY2goKGZ1bmN0aW9uKHQpe1JlW3RdPWZ1bmN0aW9uKCl7aWYoaGUpcmV0dXJuIGhlW3RdLmFwcGx5KGhlLGFyZ3VtZW50cyl9fSkpLFJlLkRpc21pc3NSZWFzb249VixSZS52ZXJzaW9uPSI5LjE3LjIiO3ZhciBqZT1SZTtyZXR1cm4gamUuZGVmYXVsdD1qZX0pKSx2b2lkIDAhPT10aGlzJiZ0aGlzLlN3ZWV0YWxlcnQyJiYodGhpcy5zd2FsPXRoaXMuc3dlZXRBbGVydD10aGlzLlN3YWw9dGhpcy5Td2VldEFsZXJ0PXRoaXMuU3dlZXRhbGVydDIpLGZ1bmN0aW9uKHQpe3QoWyJqcXVlcnkiXSwoZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLG4pe3JldHVybiBlfHwoZT1hKCkpLChsPXQoIiMiK2UuY29udGFpbmVySWQpKS5sZW5ndGh8fG4mJihsPWZ1bmN0aW9uKGUpe3JldHVybihsPXQoIjxkaXYvPiIpLmF0dHIoImlkIixlLmNvbnRhaW5lcklkKS5hZGRDbGFzcyhlLnBvc2l0aW9uQ2xhc3MpKS5hcHBlbmRUbyh0KGUudGFyZ2V0KSksbH0oZSkpLGx9ZnVuY3Rpb24gbihlKXtmb3IodmFyIG49bC5jaGlsZHJlbigpLHI9bi5sZW5ndGgtMTtyPj0wO3ItLSlpKHQobltyXSksZSl9ZnVuY3Rpb24gaShlLG4saSl7dmFyIHI9ISghaXx8IWkuZm9yY2UpJiZpLmZvcmNlO3JldHVybiEoIWV8fCFyJiYwIT09dCgiOmZvY3VzIixlKS5sZW5ndGh8fChlW24uaGlkZU1ldGhvZF0oe2R1cmF0aW9uOm4uaGlkZUR1cmF0aW9uLGVhc2luZzpuLmhpZGVFYXNpbmcsY29tcGxldGU6ZnVuY3Rpb24oKXtzKGUpfX0pLDApKX1mdW5jdGlvbiByKHQpe2MmJmModCl9ZnVuY3Rpb24gbyhuKXtmdW5jdGlvbiBpKHQpe3JldHVybiBudWxsPT10JiYodD0iIiksdC5yZXBsYWNlKC8mL2csIiZhbXA7IikucmVwbGFjZSgvIi9nLCImcXVvdDsiKS5yZXBsYWNlKC8nL2csIiYjMzk7IikucmVwbGFjZSgvPC9nLCImbHQ7IikucmVwbGFjZSgvPi9nLCImZ3Q7Iil9ZnVuY3Rpb24gbyhlKXt2YXIgbj1lJiYhMSE9PXAuY2xvc2VNZXRob2Q/cC5jbG9zZU1ldGhvZDpwLmhpZGVNZXRob2QsaT1lJiYhMSE9PXAuY2xvc2VEdXJhdGlvbj9wLmNsb3NlRHVyYXRpb246cC5oaWRlRHVyYXRpb24sbz1lJiYhMSE9PXAuY2xvc2VFYXNpbmc/cC5jbG9zZUVhc2luZzpwLmhpZGVFYXNpbmc7aWYoIXQoIjpmb2N1cyIsdikubGVuZ3RofHxlKXJldHVybiBjbGVhclRpbWVvdXQoXy5pbnRlcnZhbElkKSx2W25dKHtkdXJhdGlvbjppLGVhc2luZzpvLGNvbXBsZXRlOmZ1bmN0aW9uKCl7cyh2KSxjbGVhclRpbWVvdXQobSkscC5vbkhpZGRlbiYmImhpZGRlbiIhPT1TLnN0YXRlJiZwLm9uSGlkZGVuKCksUy5zdGF0ZT0iaGlkZGVuIixTLmVuZFRpbWU9bmV3IERhdGUscihTKX19KX1mdW5jdGlvbiBjKCl7KHAudGltZU91dD4wfHxwLmV4dGVuZGVkVGltZU91dD4wKSYmKG09c2V0VGltZW91dChvLHAuZXh0ZW5kZWRUaW1lT3V0KSxfLm1heEhpZGVUaW1lPXBhcnNlRmxvYXQocC5leHRlbmRlZFRpbWVPdXQpLF8uaGlkZUV0YT0obmV3IERhdGUpLmdldFRpbWUoKStfLm1heEhpZGVUaW1lKX1mdW5jdGlvbiBoKCl7Y2xlYXJUaW1lb3V0KG0pLF8uaGlkZUV0YT0wLHYuc3RvcCghMCwhMClbcC5zaG93TWV0aG9kXSh7ZHVyYXRpb246cC5zaG93RHVyYXRpb24sZWFzaW5nOnAuc2hvd0Vhc2luZ30pfWZ1bmN0aW9uIGYoKXt2YXIgdD0oXy5oaWRlRXRhLShuZXcgRGF0ZSkuZ2V0VGltZSgpKS9fLm1heEhpZGVUaW1lKjEwMDt3LndpZHRoKHQrIiUiKX12YXIgcD1hKCksZz1uLmljb25DbGFzc3x8cC5pY29uQ2xhc3M7aWYodm9pZCAwIT09bi5vcHRpb25zT3ZlcnJpZGUmJihwPXQuZXh0ZW5kKHAsbi5vcHRpb25zT3ZlcnJpZGUpLGc9bi5vcHRpb25zT3ZlcnJpZGUuaWNvbkNsYXNzfHxnKSwhZnVuY3Rpb24odCxlKXtpZih0LnByZXZlbnREdXBsaWNhdGVzKXtpZihlLm1lc3NhZ2U9PT11KXJldHVybiEwO3U9ZS5tZXNzYWdlfXJldHVybiExfShwLG4pKXtkKyssbD1lKHAsITApO3ZhciBtPW51bGwsdj10KCI8ZGl2Lz4iKSx5PXQoIjxkaXYvPiIpLGI9dCgiPGRpdi8+Iiksdz10KCI8ZGl2Lz4iKSx4PXQocC5jbG9zZUh0bWwpLF89e2ludGVydmFsSWQ6bnVsbCxoaWRlRXRhOm51bGwsbWF4SGlkZVRpbWU6bnVsbH0sUz17dG9hc3RJZDpkLHN0YXRlOiJ2aXNpYmxlIixzdGFydFRpbWU6bmV3IERhdGUsb3B0aW9uczpwLG1hcDpufTtyZXR1cm4gbi5pY29uQ2xhc3MmJnYuYWRkQ2xhc3MocC50b2FzdENsYXNzKS5hZGRDbGFzcyhnKSxmdW5jdGlvbigpe2lmKG4udGl0bGUpe3ZhciB0PW4udGl0bGU7cC5lc2NhcGVIdG1sJiYodD1pKG4udGl0bGUpKSx5LmFwcGVuZCh0KS5hZGRDbGFzcyhwLnRpdGxlQ2xhc3MpLHYuYXBwZW5kKHkpfX0oKSxmdW5jdGlvbigpe2lmKG4ubWVzc2FnZSl7dmFyIHQ9bi5tZXNzYWdlO3AuZXNjYXBlSHRtbCYmKHQ9aShuLm1lc3NhZ2UpKSxiLmFwcGVuZCh0KS5hZGRDbGFzcyhwLm1lc3NhZ2VDbGFzcyksdi5hcHBlbmQoYil9fSgpLHAuY2xvc2VCdXR0b24mJih4LmFkZENsYXNzKHAuY2xvc2VDbGFzcykuYXR0cigicm9sZSIsImJ1dHRvbiIpLHYucHJlcGVuZCh4KSkscC5wcm9ncmVzc0JhciYmKHcuYWRkQ2xhc3MocC5wcm9ncmVzc0NsYXNzKSx2LnByZXBlbmQodykpLHAucnRsJiZ2LmFkZENsYXNzKCJydGwiKSxwLm5ld2VzdE9uVG9wP2wucHJlcGVuZCh2KTpsLmFwcGVuZCh2KSxmdW5jdGlvbigpe3ZhciB0PSIiO3N3aXRjaChuLmljb25DbGFzcyl7Y2FzZSJ0b2FzdC1zdWNjZXNzIjpjYXNlInRvYXN0LWluZm8iOnQ9InBvbGl0ZSI7YnJlYWs7ZGVmYXVsdDp0PSJhc3NlcnRpdmUifXYuYXR0cigiYXJpYS1saXZlIix0KX0oKSx2LmhpZGUoKSx2W3Auc2hvd01ldGhvZF0oe2R1cmF0aW9uOnAuc2hvd0R1cmF0aW9uLGVhc2luZzpwLnNob3dFYXNpbmcsY29tcGxldGU6cC5vblNob3dufSkscC50aW1lT3V0PjAmJihtPXNldFRpbWVvdXQobyxwLnRpbWVPdXQpLF8ubWF4SGlkZVRpbWU9cGFyc2VGbG9hdChwLnRpbWVPdXQpLF8uaGlkZUV0YT0obmV3IERhdGUpLmdldFRpbWUoKStfLm1heEhpZGVUaW1lLHAucHJvZ3Jlc3NCYXImJihfLmludGVydmFsSWQ9c2V0SW50ZXJ2YWwoZiwxMCkpKSxwLmNsb3NlT25Ib3ZlciYmdi5ob3ZlcihoLGMpLCFwLm9uY2xpY2smJnAudGFwVG9EaXNtaXNzJiZ2LmNsaWNrKG8pLHAuY2xvc2VCdXR0b24mJngmJnguY2xpY2soKGZ1bmN0aW9uKHQpe3Quc3RvcFByb3BhZ2F0aW9uP3Quc3RvcFByb3BhZ2F0aW9uKCk6dm9pZCAwIT09dC5jYW5jZWxCdWJibGUmJiEwIT09dC5jYW5jZWxCdWJibGUmJih0LmNhbmNlbEJ1YmJsZT0hMCkscC5vbkNsb3NlQ2xpY2smJnAub25DbG9zZUNsaWNrKHQpLG8oITApfSkpLHAub25jbGljayYmdi5jbGljaygoZnVuY3Rpb24odCl7cC5vbmNsaWNrKHQpLG8oKX0pKSxyKFMpLHAuZGVidWcmJmNvbnNvbGUmJmNvbnNvbGUubG9nKFMpLHZ9fWZ1bmN0aW9uIGEoKXtyZXR1cm4gdC5leHRlbmQoe30se3RhcFRvRGlzbWlzczohMCx0b2FzdENsYXNzOiJ0b2FzdCIsY29udGFpbmVySWQ6InRvYXN0LWNvbnRhaW5lciIsZGVidWc6ITEsc2hvd01ldGhvZDoiZmFkZUluIixzaG93RHVyYXRpb246MzAwLHNob3dFYXNpbmc6InN3aW5nIixvblNob3duOnZvaWQgMCxoaWRlTWV0aG9kOiJmYWRlT3V0IixoaWRlRHVyYXRpb246MWUzLGhpZGVFYXNpbmc6InN3aW5nIixvbkhpZGRlbjp2b2lkIDAsY2xvc2VNZXRob2Q6ITEsY2xvc2VEdXJhdGlvbjohMSxjbG9zZUVhc2luZzohMSxjbG9zZU9uSG92ZXI6ITAsZXh0ZW5kZWRUaW1lT3V0OjFlMyxpY29uQ2xhc3Nlczp7ZXJyb3I6InRvYXN0LWVycm9yIixpbmZvOiJ0b2FzdC1pbmZvIixzdWNjZXNzOiJ0b2FzdC1zdWNjZXNzIix3YXJuaW5nOiJ0b2FzdC13YXJuaW5nIn0saWNvbkNsYXNzOiJ0b2FzdC1pbmZvIixwb3NpdGlvbkNsYXNzOiJ0b2FzdC10b3AtcmlnaHQiLHRpbWVPdXQ6NWUzLHRpdGxlQ2xhc3M6InRvYXN0LXRpdGxlIixtZXNzYWdlQ2xhc3M6InRvYXN0LW1lc3NhZ2UiLGVzY2FwZUh0bWw6ITEsdGFyZ2V0OiJib2R5IixjbG9zZUh0bWw6JzxidXR0b24gdHlwZT0iYnV0dG9uIj4mdGltZXM7PC9idXR0b24+JyxjbG9zZUNsYXNzOiJ0b2FzdC1jbG9zZS1idXR0b24iLG5ld2VzdE9uVG9wOiEwLHByZXZlbnREdXBsaWNhdGVzOiExLHByb2dyZXNzQmFyOiExLHByb2dyZXNzQ2xhc3M6InRvYXN0LXByb2dyZXNzIixydGw6ITF9LGYub3B0aW9ucyl9ZnVuY3Rpb24gcyh0KXtsfHwobD1lKCkpLHQuaXMoIjp2aXNpYmxlIil8fCh0LnJlbW92ZSgpLHQ9bnVsbCwwPT09bC5jaGlsZHJlbigpLmxlbmd0aCYmKGwucmVtb3ZlKCksdT12b2lkIDApKX12YXIgbCxjLHUsZD0wLGg9e2Vycm9yOiJlcnJvciIsaW5mbzoiaW5mbyIsc3VjY2Vzczoic3VjY2VzcyIsd2FybmluZzoid2FybmluZyJ9LGY9e2NsZWFyOmZ1bmN0aW9uKHQscil7dmFyIG89YSgpO2x8fGUobyksaSh0LG8scil8fG4obyl9LHJlbW92ZTpmdW5jdGlvbihuKXt2YXIgaT1hKCk7cmV0dXJuIGx8fGUoaSksbiYmMD09PXQoIjpmb2N1cyIsbikubGVuZ3RoP3ZvaWQgcyhuKTp2b2lkKGwuY2hpbGRyZW4oKS5sZW5ndGgmJmwucmVtb3ZlKCkpfSxlcnJvcjpmdW5jdGlvbih0LGUsbil7cmV0dXJuIG8oe3R5cGU6aC5lcnJvcixpY29uQ2xhc3M6YSgpLmljb25DbGFzc2VzLmVycm9yLG1lc3NhZ2U6dCxvcHRpb25zT3ZlcnJpZGU6bix0aXRsZTplfSl9LGdldENvbnRhaW5lcjplLGluZm86ZnVuY3Rpb24odCxlLG4pe3JldHVybiBvKHt0eXBlOmguaW5mbyxpY29uQ2xhc3M6YSgpLmljb25DbGFzc2VzLmluZm8sbWVzc2FnZTp0LG9wdGlvbnNPdmVycmlkZTpuLHRpdGxlOmV9KX0sb3B0aW9uczp7fSxzdWJzY3JpYmU6ZnVuY3Rpb24odCl7Yz10fSxzdWNjZXNzOmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gbyh7dHlwZTpoLnN1Y2Nlc3MsaWNvbkNsYXNzOmEoKS5pY29uQ2xhc3Nlcy5zdWNjZXNzLG1lc3NhZ2U6dCxvcHRpb25zT3ZlcnJpZGU6bix0aXRsZTplfSl9LHZlcnNpb246IjIuMS40Iix3YXJuaW5nOmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gbyh7dHlwZTpoLndhcm5pbmcsaWNvbkNsYXNzOmEoKS5pY29uQ2xhc3Nlcy53YXJuaW5nLG1lc3NhZ2U6dCxvcHRpb25zT3ZlcnJpZGU6bix0aXRsZTplfSl9fTtyZXR1cm4gZn0oKX0pKX0oImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmU6ZnVuY3Rpb24odCxlKXsidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9ZShyZXF1aXJlKCJqcXVlcnkiKSk6d2luZG93LnRvYXN0cj1lKHdpbmRvdy5qUXVlcnkpfSksZnVuY3Rpb24odCl7ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyJqcXVlcnkiXSx0KToib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9dChyZXF1aXJlKCJqcXVlcnkiKSk6dChqUXVlcnkpfSgoZnVuY3Rpb24odCl7dC5leHRlbmQodC5mbix7dmFsaWRhdGU6ZnVuY3Rpb24oZSl7aWYodGhpcy5sZW5ndGgpe3ZhciBuPXQuZGF0YSh0aGlzWzBdLCJ2YWxpZGF0b3IiKTtyZXR1cm4gbnx8KHRoaXMuYXR0cigibm92YWxpZGF0ZSIsIm5vdmFsaWRhdGUiKSxuPW5ldyB0LnZhbGlkYXRvcihlLHRoaXNbMF0pLHQuZGF0YSh0aGlzWzBdLCJ2YWxpZGF0b3IiLG4pLG4uc2V0dGluZ3Mub25zdWJtaXQmJih0aGlzLm9uKCJjbGljay52YWxpZGF0ZSIsIjpzdWJtaXQiLChmdW5jdGlvbihlKXtuLnN1Ym1pdEJ1dHRvbj1lLmN1cnJlbnRUYXJnZXQsdCh0aGlzKS5oYXNDbGFzcygiY2FuY2VsIikmJihuLmNhbmNlbFN1Ym1pdD0hMCksdm9pZCAwIT09dCh0aGlzKS5hdHRyKCJmb3Jtbm92YWxpZGF0ZSIpJiYobi5jYW5jZWxTdWJtaXQ9ITApfSkpLHRoaXMub24oInN1Ym1pdC52YWxpZGF0ZSIsKGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIGkoKXt2YXIgaSxyO3JldHVybiBuLnN1Ym1pdEJ1dHRvbiYmKG4uc2V0dGluZ3Muc3VibWl0SGFuZGxlcnx8bi5mb3JtU3VibWl0dGVkKSYmKGk9dCgiPGlucHV0IHR5cGU9J2hpZGRlbicvPiIpLmF0dHIoIm5hbWUiLG4uc3VibWl0QnV0dG9uLm5hbWUpLnZhbCh0KG4uc3VibWl0QnV0dG9uKS52YWwoKSkuYXBwZW5kVG8obi5jdXJyZW50Rm9ybSkpLCEobi5zZXR0aW5ncy5zdWJtaXRIYW5kbGVyJiYhbi5zZXR0aW5ncy5kZWJ1Zyl8fChyPW4uc2V0dGluZ3Muc3VibWl0SGFuZGxlci5jYWxsKG4sbi5jdXJyZW50Rm9ybSxlKSxpJiZpLnJlbW92ZSgpLHZvaWQgMCE9PXImJnIpfXJldHVybiBuLnNldHRpbmdzLmRlYnVnJiZlLnByZXZlbnREZWZhdWx0KCksbi5jYW5jZWxTdWJtaXQ/KG4uY2FuY2VsU3VibWl0PSExLGkoKSk6bi5mb3JtKCk/bi5wZW5kaW5nUmVxdWVzdD8obi5mb3JtU3VibWl0dGVkPSEwLCExKTppKCk6KG4uZm9jdXNJbnZhbGlkKCksITEpfSkpKSxuKX1lJiZlLmRlYnVnJiZ3aW5kb3cuY29uc29sZSYmY29uc29sZS53YXJuKCJOb3RoaW5nIHNlbGVjdGVkLCBjYW4ndCB2YWxpZGF0ZSwgcmV0dXJuaW5nIG5vdGhpbmcuIil9LHZhbGlkOmZ1bmN0aW9uKCl7dmFyIGUsbixpO3JldHVybiB0KHRoaXNbMF0pLmlzKCJmb3JtIik/ZT10aGlzLnZhbGlkYXRlKCkuZm9ybSgpOihpPVtdLGU9ITAsbj10KHRoaXNbMF0uZm9ybSkudmFsaWRhdGUoKSx0aGlzLmVhY2goKGZ1bmN0aW9uKCl7KGU9bi5lbGVtZW50KHRoaXMpJiZlKXx8KGk9aS5jb25jYXQobi5lcnJvckxpc3QpKX0pKSxuLmVycm9yTGlzdD1pKSxlfSxydWxlczpmdW5jdGlvbihlLG4pe3ZhciBpLHIsbyxhLHMsbCxjPXRoaXNbMF0sdT12b2lkIDAhPT10aGlzLmF0dHIoImNvbnRlbnRlZGl0YWJsZSIpJiYiZmFsc2UiIT09dGhpcy5hdHRyKCJjb250ZW50ZWRpdGFibGUiKTtpZihudWxsIT1jJiYoIWMuZm9ybSYmdSYmKGMuZm9ybT10aGlzLmNsb3Nlc3QoImZvcm0iKVswXSxjLm5hbWU9dGhpcy5hdHRyKCJuYW1lIikpLG51bGwhPWMuZm9ybSkpe2lmKGUpc3dpdGNoKGk9dC5kYXRhKGMuZm9ybSwidmFsaWRhdG9yIikuc2V0dGluZ3Mscj1pLnJ1bGVzLG89dC52YWxpZGF0b3Iuc3RhdGljUnVsZXMoYyksZSl7Y2FzZSJhZGQiOnQuZXh0ZW5kKG8sdC52YWxpZGF0b3Iubm9ybWFsaXplUnVsZShuKSksZGVsZXRlIG8ubWVzc2FnZXMscltjLm5hbWVdPW8sbi5tZXNzYWdlcyYmKGkubWVzc2FnZXNbYy5uYW1lXT10LmV4dGVuZChpLm1lc3NhZ2VzW2MubmFtZV0sbi5tZXNzYWdlcykpO2JyZWFrO2Nhc2UicmVtb3ZlIjpyZXR1cm4gbj8obD17fSx0LmVhY2gobi5zcGxpdCgvXHMvKSwoZnVuY3Rpb24odCxlKXtsW2VdPW9bZV0sZGVsZXRlIG9bZV19KSksbCk6KGRlbGV0ZSByW2MubmFtZV0sbyl9cmV0dXJuKGE9dC52YWxpZGF0b3Iubm9ybWFsaXplUnVsZXModC5leHRlbmQoe30sdC52YWxpZGF0b3IuY2xhc3NSdWxlcyhjKSx0LnZhbGlkYXRvci5hdHRyaWJ1dGVSdWxlcyhjKSx0LnZhbGlkYXRvci5kYXRhUnVsZXMoYyksdC52YWxpZGF0b3Iuc3RhdGljUnVsZXMoYykpLGMpKS5yZXF1aXJlZCYmKHM9YS5yZXF1aXJlZCxkZWxldGUgYS5yZXF1aXJlZCxhPXQuZXh0ZW5kKHtyZXF1aXJlZDpzfSxhKSksYS5yZW1vdGUmJihzPWEucmVtb3RlLGRlbGV0ZSBhLnJlbW90ZSxhPXQuZXh0ZW5kKGEse3JlbW90ZTpzfSkpLGF9fX0pO3ZhciBlPWZ1bmN0aW9uKHQpe3JldHVybiB0LnJlcGxhY2UoL15bXHNcdUZFRkZceEEwXSt8W1xzXHVGRUZGXHhBMF0rJC9nLCIiKX07dC5leHRlbmQodC5leHByLnBzZXVkb3N8fHQuZXhwclsiOiJdLHtibGFuazpmdW5jdGlvbihuKXtyZXR1cm4hZSgiIit0KG4pLnZhbCgpKX0sZmlsbGVkOmZ1bmN0aW9uKG4pe3ZhciBpPXQobikudmFsKCk7cmV0dXJuIG51bGwhPT1pJiYhIWUoIiIraSl9LHVuY2hlY2tlZDpmdW5jdGlvbihlKXtyZXR1cm4hdChlKS5wcm9wKCJjaGVja2VkIil9fSksdC52YWxpZGF0b3I9ZnVuY3Rpb24oZSxuKXt0aGlzLnNldHRpbmdzPXQuZXh0ZW5kKCEwLHt9LHQudmFsaWRhdG9yLmRlZmF1bHRzLGUpLHRoaXMuY3VycmVudEZvcm09bix0aGlzLmluaXQoKX0sdC52YWxpZGF0b3IuZm9ybWF0PWZ1bmN0aW9uKGUsbil7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP2Z1bmN0aW9uKCl7dmFyIG49dC5tYWtlQXJyYXkoYXJndW1lbnRzKTtyZXR1cm4gbi51bnNoaWZ0KGUpLHQudmFsaWRhdG9yLmZvcm1hdC5hcHBseSh0aGlzLG4pfToodm9pZCAwPT09bnx8KGFyZ3VtZW50cy5sZW5ndGg+MiYmbi5jb25zdHJ1Y3RvciE9PUFycmF5JiYobj10Lm1ha2VBcnJheShhcmd1bWVudHMpLnNsaWNlKDEpKSxuLmNvbnN0cnVjdG9yIT09QXJyYXkmJihuPVtuXSksdC5lYWNoKG4sKGZ1bmN0aW9uKHQsbil7ZT1lLnJlcGxhY2UobmV3IFJlZ0V4cCgiXFx7Iit0KyJcXH0iLCJnIiksKGZ1bmN0aW9uKCl7cmV0dXJuIG59KSl9KSkpLGUpfSx0LmV4dGVuZCh0LnZhbGlkYXRvcix7ZGVmYXVsdHM6e21lc3NhZ2VzOnt9LGdyb3Vwczp7fSxydWxlczp7fSxlcnJvckNsYXNzOiJlcnJvciIscGVuZGluZ0NsYXNzOiJwZW5kaW5nIix2YWxpZENsYXNzOiJ2YWxpZCIsZXJyb3JFbGVtZW50OiJsYWJlbCIsZm9jdXNDbGVhbnVwOiExLGZvY3VzSW52YWxpZDohMCxlcnJvckNvbnRhaW5lcjp0KFtdKSxlcnJvckxhYmVsQ29udGFpbmVyOnQoW10pLG9uc3VibWl0OiEwLGlnbm9yZToiOmhpZGRlbiIsaWdub3JlVGl0bGU6ITEsb25mb2N1c2luOmZ1bmN0aW9uKHQpe3RoaXMubGFzdEFjdGl2ZT10LHRoaXMuc2V0dGluZ3MuZm9jdXNDbGVhbnVwJiYodGhpcy5zZXR0aW5ncy51bmhpZ2hsaWdodCYmdGhpcy5zZXR0aW5ncy51bmhpZ2hsaWdodC5jYWxsKHRoaXMsdCx0aGlzLnNldHRpbmdzLmVycm9yQ2xhc3MsdGhpcy5zZXR0aW5ncy52YWxpZENsYXNzKSx0aGlzLmhpZGVUaGVzZSh0aGlzLmVycm9yc0Zvcih0KSkpfSxvbmZvY3Vzb3V0OmZ1bmN0aW9uKHQpe3RoaXMuY2hlY2thYmxlKHQpfHwhKHQubmFtZSBpbiB0aGlzLnN1Ym1pdHRlZCkmJnRoaXMub3B0aW9uYWwodCl8fHRoaXMuZWxlbWVudCh0KX0sb25rZXl1cDpmdW5jdGlvbihlLG4pezk9PT1uLndoaWNoJiYiIj09PXRoaXMuZWxlbWVudFZhbHVlKGUpfHwtMSE9PXQuaW5BcnJheShuLmtleUNvZGUsWzE2LDE3LDE4LDIwLDM1LDM2LDM3LDM4LDM5LDQwLDQ1LDE0NCwyMjVdKXx8KGUubmFtZSBpbiB0aGlzLnN1Ym1pdHRlZHx8ZS5uYW1lIGluIHRoaXMuaW52YWxpZCkmJnRoaXMuZWxlbWVudChlKX0sb25jbGljazpmdW5jdGlvbih0KXt0Lm5hbWUgaW4gdGhpcy5zdWJtaXR0ZWQ/dGhpcy5lbGVtZW50KHQpOnQucGFyZW50Tm9kZS5uYW1lIGluIHRoaXMuc3VibWl0dGVkJiZ0aGlzLmVsZW1lbnQodC5wYXJlbnROb2RlKX0saGlnaGxpZ2h0OmZ1bmN0aW9uKGUsbixpKXsicmFkaW8iPT09ZS50eXBlP3RoaXMuZmluZEJ5TmFtZShlLm5hbWUpLmFkZENsYXNzKG4pLnJlbW92ZUNsYXNzKGkpOnQoZSkuYWRkQ2xhc3MobikucmVtb3ZlQ2xhc3MoaSl9LHVuaGlnaGxpZ2h0OmZ1bmN0aW9uKGUsbixpKXsicmFkaW8iPT09ZS50eXBlP3RoaXMuZmluZEJ5TmFtZShlLm5hbWUpLnJlbW92ZUNsYXNzKG4pLmFkZENsYXNzKGkpOnQoZSkucmVtb3ZlQ2xhc3MobikuYWRkQ2xhc3MoaSl9fSxzZXREZWZhdWx0czpmdW5jdGlvbihlKXt0LmV4dGVuZCh0LnZhbGlkYXRvci5kZWZhdWx0cyxlKX0sbWVzc2FnZXM6e3JlcXVpcmVkOiJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIscmVtb3RlOiJQbGVhc2UgZml4IHRoaXMgZmllbGQuIixlbWFpbDoiUGxlYXNlIGVudGVyIGEgdmFsaWQgZW1haWwgYWRkcmVzcy4iLHVybDoiUGxlYXNlIGVudGVyIGEgdmFsaWQgVVJMLiIsZGF0ZToiUGxlYXNlIGVudGVyIGEgdmFsaWQgZGF0ZS4iLGRhdGVJU086IlBsZWFzZSBlbnRlciBhIHZhbGlkIGRhdGUgKElTTykuIixudW1iZXI6IlBsZWFzZSBlbnRlciBhIHZhbGlkIG51bWJlci4iLGRpZ2l0czoiUGxlYXNlIGVudGVyIG9ubHkgZGlnaXRzLiIsZXF1YWxUbzoiUGxlYXNlIGVudGVyIHRoZSBzYW1lIHZhbHVlIGFnYWluLiIsbWF4bGVuZ3RoOnQudmFsaWRhdG9yLmZvcm1hdCgiUGxlYXNlIGVudGVyIG5vIG1vcmUgdGhhbiB7MH0gY2hhcmFjdGVycy4iKSxtaW5sZW5ndGg6dC52YWxpZGF0b3IuZm9ybWF0KCJQbGVhc2UgZW50ZXIgYXQgbGVhc3QgezB9IGNoYXJhY3RlcnMuIikscmFuZ2VsZW5ndGg6dC52YWxpZGF0b3IuZm9ybWF0KCJQbGVhc2UgZW50ZXIgYSB2YWx1ZSBiZXR3ZWVuIHswfSBhbmQgezF9IGNoYXJhY3RlcnMgbG9uZy4iKSxyYW5nZTp0LnZhbGlkYXRvci5mb3JtYXQoIlBsZWFzZSBlbnRlciBhIHZhbHVlIGJldHdlZW4gezB9IGFuZCB7MX0uIiksbWF4OnQudmFsaWRhdG9yLmZvcm1hdCgiUGxlYXNlIGVudGVyIGEgdmFsdWUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHswfS4iKSxtaW46dC52YWxpZGF0b3IuZm9ybWF0KCJQbGVhc2UgZW50ZXIgYSB2YWx1ZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gezB9LiIpLHN0ZXA6dC52YWxpZGF0b3IuZm9ybWF0KCJQbGVhc2UgZW50ZXIgYSBtdWx0aXBsZSBvZiB7MH0uIil9LGF1dG9DcmVhdGVSYW5nZXM6ITEscHJvdG90eXBlOntpbml0OmZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt2YXIgbj12b2lkIDAhPT10KHRoaXMpLmF0dHIoImNvbnRlbnRlZGl0YWJsZSIpJiYiZmFsc2UiIT09dCh0aGlzKS5hdHRyKCJjb250ZW50ZWRpdGFibGUiKTtpZighdGhpcy5mb3JtJiZuJiYodGhpcy5mb3JtPXQodGhpcykuY2xvc2VzdCgiZm9ybSIpWzBdLHRoaXMubmFtZT10KHRoaXMpLmF0dHIoIm5hbWUiKSksaT09PXRoaXMuZm9ybSl7dmFyIHI9dC5kYXRhKHRoaXMuZm9ybSwidmFsaWRhdG9yIiksbz0ib24iK2UudHlwZS5yZXBsYWNlKC9edmFsaWRhdGUvLCIiKSxhPXIuc2V0dGluZ3M7YVtvXSYmIXQodGhpcykuaXMoYS5pZ25vcmUpJiZhW29dLmNhbGwocix0aGlzLGUpfX10aGlzLmxhYmVsQ29udGFpbmVyPXQodGhpcy5zZXR0aW5ncy5lcnJvckxhYmVsQ29udGFpbmVyKSx0aGlzLmVycm9yQ29udGV4dD10aGlzLmxhYmVsQ29udGFpbmVyLmxlbmd0aCYmdGhpcy5sYWJlbENvbnRhaW5lcnx8dCh0aGlzLmN1cnJlbnRGb3JtKSx0aGlzLmNvbnRhaW5lcnM9dCh0aGlzLnNldHRpbmdzLmVycm9yQ29udGFpbmVyKS5hZGQodGhpcy5zZXR0aW5ncy5lcnJvckxhYmVsQ29udGFpbmVyKSx0aGlzLnN1Ym1pdHRlZD17fSx0aGlzLnZhbHVlQ2FjaGU9e30sdGhpcy5wZW5kaW5nUmVxdWVzdD0wLHRoaXMucGVuZGluZz17fSx0aGlzLmludmFsaWQ9e30sdGhpcy5yZXNldCgpO3ZhciBuLGk9dGhpcy5jdXJyZW50Rm9ybSxyPXRoaXMuZ3JvdXBzPXt9O3QuZWFjaCh0aGlzLnNldHRpbmdzLmdyb3VwcywoZnVuY3Rpb24oZSxuKXsic3RyaW5nIj09dHlwZW9mIG4mJihuPW4uc3BsaXQoL1xzLykpLHQuZWFjaChuLChmdW5jdGlvbih0LG4pe3Jbbl09ZX0pKX0pKSxuPXRoaXMuc2V0dGluZ3MucnVsZXMsdC5lYWNoKG4sKGZ1bmN0aW9uKGUsaSl7bltlXT10LnZhbGlkYXRvci5ub3JtYWxpemVSdWxlKGkpfSkpLHQodGhpcy5jdXJyZW50Rm9ybSkub24oImZvY3VzaW4udmFsaWRhdGUgZm9jdXNvdXQudmFsaWRhdGUga2V5dXAudmFsaWRhdGUiLCI6dGV4dCwgW3R5cGU9J3Bhc3N3b3JkJ10sIFt0eXBlPSdmaWxlJ10sIHNlbGVjdCwgdGV4dGFyZWEsIFt0eXBlPSdudW1iZXInXSwgW3R5cGU9J3NlYXJjaCddLCBbdHlwZT0ndGVsJ10sIFt0eXBlPSd1cmwnXSwgW3R5cGU9J2VtYWlsJ10sIFt0eXBlPSdkYXRldGltZSddLCBbdHlwZT0nZGF0ZSddLCBbdHlwZT0nbW9udGgnXSwgW3R5cGU9J3dlZWsnXSwgW3R5cGU9J3RpbWUnXSwgW3R5cGU9J2RhdGV0aW1lLWxvY2FsJ10sIFt0eXBlPSdyYW5nZSddLCBbdHlwZT0nY29sb3InXSwgW3R5cGU9J3JhZGlvJ10sIFt0eXBlPSdjaGVja2JveCddLCBbY29udGVudGVkaXRhYmxlXSwgW3R5cGU9J2J1dHRvbiddIixlKS5vbigiY2xpY2sudmFsaWRhdGUiLCJzZWxlY3QsIG9wdGlvbiwgW3R5cGU9J3JhZGlvJ10sIFt0eXBlPSdjaGVja2JveCddIixlKSx0aGlzLnNldHRpbmdzLmludmFsaWRIYW5kbGVyJiZ0KHRoaXMuY3VycmVudEZvcm0pLm9uKCJpbnZhbGlkLWZvcm0udmFsaWRhdGUiLHRoaXMuc2V0dGluZ3MuaW52YWxpZEhhbmRsZXIpfSxmb3JtOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2hlY2tGb3JtKCksdC5leHRlbmQodGhpcy5zdWJtaXR0ZWQsdGhpcy5lcnJvck1hcCksdGhpcy5pbnZhbGlkPXQuZXh0ZW5kKHt9LHRoaXMuZXJyb3JNYXApLHRoaXMudmFsaWQoKXx8dCh0aGlzLmN1cnJlbnRGb3JtKS50cmlnZ2VySGFuZGxlcigiaW52YWxpZC1mb3JtIixbdGhpc10pLHRoaXMuc2hvd0Vycm9ycygpLHRoaXMudmFsaWQoKX0sY2hlY2tGb3JtOmZ1bmN0aW9uKCl7dGhpcy5wcmVwYXJlRm9ybSgpO2Zvcih2YXIgdD0wLGU9dGhpcy5jdXJyZW50RWxlbWVudHM9dGhpcy5lbGVtZW50cygpO2VbdF07dCsrKXRoaXMuY2hlY2soZVt0XSk7cmV0dXJuIHRoaXMudmFsaWQoKX0sZWxlbWVudDpmdW5jdGlvbihlKXt2YXIgbixpLHI9dGhpcy5jbGVhbihlKSxvPXRoaXMudmFsaWRhdGlvblRhcmdldEZvcihyKSxhPXRoaXMscz0hMDtyZXR1cm4gdm9pZCAwPT09bz9kZWxldGUgdGhpcy5pbnZhbGlkW3IubmFtZV06KHRoaXMucHJlcGFyZUVsZW1lbnQobyksdGhpcy5jdXJyZW50RWxlbWVudHM9dChvKSwoaT10aGlzLmdyb3Vwc1tvLm5hbWVdKSYmdC5lYWNoKHRoaXMuZ3JvdXBzLChmdW5jdGlvbih0LGUpe2U9PT1pJiZ0IT09by5uYW1lJiYoKHI9YS52YWxpZGF0aW9uVGFyZ2V0Rm9yKGEuY2xlYW4oYS5maW5kQnlOYW1lKHQpKSkpJiZyLm5hbWUgaW4gYS5pbnZhbGlkJiYoYS5jdXJyZW50RWxlbWVudHMucHVzaChyKSxzPWEuY2hlY2socikmJnMpKX0pKSxuPSExIT09dGhpcy5jaGVjayhvKSxzPXMmJm4sdGhpcy5pbnZhbGlkW28ubmFtZV09IW4sdGhpcy5udW1iZXJPZkludmFsaWRzKCl8fCh0aGlzLnRvSGlkZT10aGlzLnRvSGlkZS5hZGQodGhpcy5jb250YWluZXJzKSksdGhpcy5zaG93RXJyb3JzKCksdChlKS5hdHRyKCJhcmlhLWludmFsaWQiLCFuKSksc30sc2hvd0Vycm9yczpmdW5jdGlvbihlKXtpZihlKXt2YXIgbj10aGlzO3QuZXh0ZW5kKHRoaXMuZXJyb3JNYXAsZSksdGhpcy5lcnJvckxpc3Q9dC5tYXAodGhpcy5lcnJvck1hcCwoZnVuY3Rpb24odCxlKXtyZXR1cm57bWVzc2FnZTp0LGVsZW1lbnQ6bi5maW5kQnlOYW1lKGUpWzBdfX0pKSx0aGlzLnN1Y2Nlc3NMaXN0PXQuZ3JlcCh0aGlzLnN1Y2Nlc3NMaXN0LChmdW5jdGlvbih0KXtyZXR1cm4hKHQubmFtZSBpbiBlKX0pKX10aGlzLnNldHRpbmdzLnNob3dFcnJvcnM/dGhpcy5zZXR0aW5ncy5zaG93RXJyb3JzLmNhbGwodGhpcyx0aGlzLmVycm9yTWFwLHRoaXMuZXJyb3JMaXN0KTp0aGlzLmRlZmF1bHRTaG93RXJyb3JzKCl9LHJlc2V0Rm9ybTpmdW5jdGlvbigpe3QuZm4ucmVzZXRGb3JtJiZ0KHRoaXMuY3VycmVudEZvcm0pLnJlc2V0Rm9ybSgpLHRoaXMuaW52YWxpZD17fSx0aGlzLnN1Ym1pdHRlZD17fSx0aGlzLnByZXBhcmVGb3JtKCksdGhpcy5oaWRlRXJyb3JzKCk7dmFyIGU9dGhpcy5lbGVtZW50cygpLnJlbW92ZURhdGEoInByZXZpb3VzVmFsdWUiKS5yZW1vdmVBdHRyKCJhcmlhLWludmFsaWQiKTt0aGlzLnJlc2V0RWxlbWVudHMoZSl9LHJlc2V0RWxlbWVudHM6ZnVuY3Rpb24odCl7dmFyIGU7aWYodGhpcy5zZXR0aW5ncy51bmhpZ2hsaWdodClmb3IoZT0wO3RbZV07ZSsrKXRoaXMuc2V0dGluZ3MudW5oaWdobGlnaHQuY2FsbCh0aGlzLHRbZV0sdGhpcy5zZXR0aW5ncy5lcnJvckNsYXNzLCIiKSx0aGlzLmZpbmRCeU5hbWUodFtlXS5uYW1lKS5yZW1vdmVDbGFzcyh0aGlzLnNldHRpbmdzLnZhbGlkQ2xhc3MpO2Vsc2UgdC5yZW1vdmVDbGFzcyh0aGlzLnNldHRpbmdzLmVycm9yQ2xhc3MpLnJlbW92ZUNsYXNzKHRoaXMuc2V0dGluZ3MudmFsaWRDbGFzcyl9LG51bWJlck9mSW52YWxpZHM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vYmplY3RMZW5ndGgodGhpcy5pbnZhbGlkKX0sb2JqZWN0TGVuZ3RoOmZ1bmN0aW9uKHQpe3ZhciBlLG49MDtmb3IoZSBpbiB0KXZvaWQgMCE9PXRbZV0mJm51bGwhPT10W2VdJiYhMSE9PXRbZV0mJm4rKztyZXR1cm4gbn0saGlkZUVycm9yczpmdW5jdGlvbigpe3RoaXMuaGlkZVRoZXNlKHRoaXMudG9IaWRlKX0saGlkZVRoZXNlOmZ1bmN0aW9uKHQpe3Qubm90KHRoaXMuY29udGFpbmVycykudGV4dCgiIiksdGhpcy5hZGRXcmFwcGVyKHQpLmhpZGUoKX0sdmFsaWQ6ZnVuY3Rpb24oKXtyZXR1cm4gMD09PXRoaXMuc2l6ZSgpfSxzaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXJyb3JMaXN0Lmxlbmd0aH0sZm9jdXNJbnZhbGlkOmZ1bmN0aW9uKCl7aWYodGhpcy5zZXR0aW5ncy5mb2N1c0ludmFsaWQpdHJ5e3QodGhpcy5maW5kTGFzdEFjdGl2ZSgpfHx0aGlzLmVycm9yTGlzdC5sZW5ndGgmJnRoaXMuZXJyb3JMaXN0WzBdLmVsZW1lbnR8fFtdKS5maWx0ZXIoIjp2aXNpYmxlIikudHJpZ2dlcigiZm9jdXMiKS50cmlnZ2VyKCJmb2N1c2luIil9Y2F0Y2godCl7fX0sZmluZExhc3RBY3RpdmU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmxhc3RBY3RpdmU7cmV0dXJuIGUmJjE9PT10LmdyZXAodGhpcy5lcnJvckxpc3QsKGZ1bmN0aW9uKHQpe3JldHVybiB0LmVsZW1lbnQubmFtZT09PWUubmFtZX0pKS5sZW5ndGgmJmV9LGVsZW1lbnRzOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxuPXt9O3JldHVybiB0KHRoaXMuY3VycmVudEZvcm0pLmZpbmQoImlucHV0LCBzZWxlY3QsIHRleHRhcmVhLCBbY29udGVudGVkaXRhYmxlXSIpLm5vdCgiOnN1Ym1pdCwgOnJlc2V0LCA6aW1hZ2UsIDpkaXNhYmxlZCIpLm5vdCh0aGlzLnNldHRpbmdzLmlnbm9yZSkuZmlsdGVyKChmdW5jdGlvbigpe3ZhciBpPXRoaXMubmFtZXx8dCh0aGlzKS5hdHRyKCJuYW1lIikscj12b2lkIDAhPT10KHRoaXMpLmF0dHIoImNvbnRlbnRlZGl0YWJsZSIpJiYiZmFsc2UiIT09dCh0aGlzKS5hdHRyKCJjb250ZW50ZWRpdGFibGUiKTtyZXR1cm4haSYmZS5zZXR0aW5ncy5kZWJ1ZyYmd2luZG93LmNvbnNvbGUmJmNvbnNvbGUuZXJyb3IoIiVvIGhhcyBubyBuYW1lIGFzc2lnbmVkIix0aGlzKSxyJiYodGhpcy5mb3JtPXQodGhpcykuY2xvc2VzdCgiZm9ybSIpWzBdLHRoaXMubmFtZT1pKSwhKHRoaXMuZm9ybSE9PWUuY3VycmVudEZvcm18fGkgaW4gbnx8IWUub2JqZWN0TGVuZ3RoKHQodGhpcykucnVsZXMoKSl8fChuW2ldPSEwLDApKX0pKX0sY2xlYW46ZnVuY3Rpb24oZSl7cmV0dXJuIHQoZSlbMF19LGVycm9yczpmdW5jdGlvbigpe3ZhciBlPXRoaXMuc2V0dGluZ3MuZXJyb3JDbGFzcy5zcGxpdCgiICIpLmpvaW4oIi4iKTtyZXR1cm4gdCh0aGlzLnNldHRpbmdzLmVycm9yRWxlbWVudCsiLiIrZSx0aGlzLmVycm9yQ29udGV4dCl9LHJlc2V0SW50ZXJuYWxzOmZ1bmN0aW9uKCl7dGhpcy5zdWNjZXNzTGlzdD1bXSx0aGlzLmVycm9yTGlzdD1bXSx0aGlzLmVycm9yTWFwPXt9LHRoaXMudG9TaG93PXQoW10pLHRoaXMudG9IaWRlPXQoW10pfSxyZXNldDpmdW5jdGlvbigpe3RoaXMucmVzZXRJbnRlcm5hbHMoKSx0aGlzLmN1cnJlbnRFbGVtZW50cz10KFtdKX0scHJlcGFyZUZvcm06ZnVuY3Rpb24oKXt0aGlzLnJlc2V0KCksdGhpcy50b0hpZGU9dGhpcy5lcnJvcnMoKS5hZGQodGhpcy5jb250YWluZXJzKX0scHJlcGFyZUVsZW1lbnQ6ZnVuY3Rpb24odCl7dGhpcy5yZXNldCgpLHRoaXMudG9IaWRlPXRoaXMuZXJyb3JzRm9yKHQpfSxlbGVtZW50VmFsdWU6ZnVuY3Rpb24oZSl7dmFyIG4saSxyPXQoZSksbz1lLnR5cGUsYT12b2lkIDAhPT1yLmF0dHIoImNvbnRlbnRlZGl0YWJsZSIpJiYiZmFsc2UiIT09ci5hdHRyKCJjb250ZW50ZWRpdGFibGUiKTtyZXR1cm4icmFkaW8iPT09b3x8ImNoZWNrYm94Ij09PW8/dGhpcy5maW5kQnlOYW1lKGUubmFtZSkuZmlsdGVyKCI6Y2hlY2tlZCIpLnZhbCgpOiJudW1iZXIiPT09byYmdm9pZCAwIT09ZS52YWxpZGl0eT9lLnZhbGlkaXR5LmJhZElucHV0PyJOYU4iOnIudmFsKCk6KG49YT9yLnRleHQoKTpyLnZhbCgpLCJmaWxlIj09PW8/IkM6XFxmYWtlcGF0aFxcIj09PW4uc3Vic3RyKDAsMTIpP24uc3Vic3RyKDEyKTooaT1uLmxhc3RJbmRleE9mKCIvIikpPj0wP24uc3Vic3RyKGkrMSk6KGk9bi5sYXN0SW5kZXhPZigiXFwiKSk+PTA/bi5zdWJzdHIoaSsxKTpuOiJzdHJpbmciPT10eXBlb2Ygbj9uLnJlcGxhY2UoL1xyL2csIiIpOm4pfSxjaGVjazpmdW5jdGlvbihlKXtlPXRoaXMudmFsaWRhdGlvblRhcmdldEZvcih0aGlzLmNsZWFuKGUpKTt2YXIgbixpLHIsbyxhPXQoZSkucnVsZXMoKSxzPXQubWFwKGEsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGV9KSkubGVuZ3RoLGw9ITEsYz10aGlzLmVsZW1lbnRWYWx1ZShlKTtmb3IoaSBpbiJmdW5jdGlvbiI9PXR5cGVvZiBhLm5vcm1hbGl6ZXI/bz1hLm5vcm1hbGl6ZXI6ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuc2V0dGluZ3Mubm9ybWFsaXplciYmKG89dGhpcy5zZXR0aW5ncy5ub3JtYWxpemVyKSxvJiYoYz1vLmNhbGwoZSxjKSxkZWxldGUgYS5ub3JtYWxpemVyKSxhKXtyPXttZXRob2Q6aSxwYXJhbWV0ZXJzOmFbaV19O3RyeXtpZigiZGVwZW5kZW5jeS1taXNtYXRjaCI9PT0obj10LnZhbGlkYXRvci5tZXRob2RzW2ldLmNhbGwodGhpcyxjLGUsci5wYXJhbWV0ZXJzKSkmJjE9PT1zKXtsPSEwO2NvbnRpbnVlfWlmKGw9ITEsInBlbmRpbmciPT09bilyZXR1cm4gdm9pZCh0aGlzLnRvSGlkZT10aGlzLnRvSGlkZS5ub3QodGhpcy5lcnJvcnNGb3IoZSkpKTtpZighbilyZXR1cm4gdGhpcy5mb3JtYXRBbmRBZGQoZSxyKSwhMX1jYXRjaCh0KXt0aHJvdyB0aGlzLnNldHRpbmdzLmRlYnVnJiZ3aW5kb3cuY29uc29sZSYmY29uc29sZS5sb2coIkV4Y2VwdGlvbiBvY2N1cnJlZCB3aGVuIGNoZWNraW5nIGVsZW1lbnQgIitlLmlkKyIsIGNoZWNrIHRoZSAnIityLm1ldGhvZCsiJyBtZXRob2QuIix0KSx0IGluc3RhbmNlb2YgVHlwZUVycm9yJiYodC5tZXNzYWdlKz0iLiAgRXhjZXB0aW9uIG9jY3VycmVkIHdoZW4gY2hlY2tpbmcgZWxlbWVudCAiK2UuaWQrIiwgY2hlY2sgdGhlICciK3IubWV0aG9kKyInIG1ldGhvZC4iKSx0fX1pZighbClyZXR1cm4gdGhpcy5vYmplY3RMZW5ndGgoYSkmJnRoaXMuc3VjY2Vzc0xpc3QucHVzaChlKSwhMH0sY3VzdG9tRGF0YU1lc3NhZ2U6ZnVuY3Rpb24oZSxuKXtyZXR1cm4gdChlKS5kYXRhKCJtc2ciK24uY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrbi5zdWJzdHJpbmcoMSkudG9Mb3dlckNhc2UoKSl8fHQoZSkuZGF0YSgibXNnIil9LGN1c3RvbU1lc3NhZ2U6ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLnNldHRpbmdzLm1lc3NhZ2VzW3RdO3JldHVybiBuJiYobi5jb25zdHJ1Y3Rvcj09PVN0cmluZz9uOm5bZV0pfSxmaW5kRGVmaW5lZDpmdW5jdGlvbigpe2Zvcih2YXIgdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0KyspaWYodm9pZCAwIT09YXJndW1lbnRzW3RdKXJldHVybiBhcmd1bWVudHNbdF19LGRlZmF1bHRNZXNzYWdlOmZ1bmN0aW9uKGUsbil7InN0cmluZyI9PXR5cGVvZiBuJiYobj17bWV0aG9kOm59KTt2YXIgaT10aGlzLmZpbmREZWZpbmVkKHRoaXMuY3VzdG9tTWVzc2FnZShlLm5hbWUsbi5tZXRob2QpLHRoaXMuY3VzdG9tRGF0YU1lc3NhZ2UoZSxuLm1ldGhvZCksIXRoaXMuc2V0dGluZ3MuaWdub3JlVGl0bGUmJmUudGl0bGV8fHZvaWQgMCx0LnZhbGlkYXRvci5tZXNzYWdlc1tuLm1ldGhvZF0sIjxzdHJvbmc+V2FybmluZzogTm8gbWVzc2FnZSBkZWZpbmVkIGZvciAiK2UubmFtZSsiPC9zdHJvbmc+Iikscj0vXCQ/XHsoXGQrKVx9L2c7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGk/aT1pLmNhbGwodGhpcyxuLnBhcmFtZXRlcnMsZSk6ci50ZXN0KGkpJiYoaT10LnZhbGlkYXRvci5mb3JtYXQoaS5yZXBsYWNlKHIsInskMX0iKSxuLnBhcmFtZXRlcnMpKSxpfSxmb3JtYXRBbmRBZGQ6ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLmRlZmF1bHRNZXNzYWdlKHQsZSk7dGhpcy5lcnJvckxpc3QucHVzaCh7bWVzc2FnZTpuLGVsZW1lbnQ6dCxtZXRob2Q6ZS5tZXRob2R9KSx0aGlzLmVycm9yTWFwW3QubmFtZV09bix0aGlzLnN1Ym1pdHRlZFt0Lm5hbWVdPW59LGFkZFdyYXBwZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc2V0dGluZ3Mud3JhcHBlciYmKHQ9dC5hZGQodC5wYXJlbnQodGhpcy5zZXR0aW5ncy53cmFwcGVyKSkpLHR9LGRlZmF1bHRTaG93RXJyb3JzOmZ1bmN0aW9uKCl7dmFyIHQsZSxuO2Zvcih0PTA7dGhpcy5lcnJvckxpc3RbdF07dCsrKW49dGhpcy5lcnJvckxpc3RbdF0sdGhpcy5zZXR0aW5ncy5oaWdobGlnaHQmJnRoaXMuc2V0dGluZ3MuaGlnaGxpZ2h0LmNhbGwodGhpcyxuLmVsZW1lbnQsdGhpcy5zZXR0aW5ncy5lcnJvckNsYXNzLHRoaXMuc2V0dGluZ3MudmFsaWRDbGFzcyksdGhpcy5zaG93TGFiZWwobi5lbGVtZW50LG4ubWVzc2FnZSk7aWYodGhpcy5lcnJvckxpc3QubGVuZ3RoJiYodGhpcy50b1Nob3c9dGhpcy50b1Nob3cuYWRkKHRoaXMuY29udGFpbmVycykpLHRoaXMuc2V0dGluZ3Muc3VjY2Vzcylmb3IodD0wO3RoaXMuc3VjY2Vzc0xpc3RbdF07dCsrKXRoaXMuc2hvd0xhYmVsKHRoaXMuc3VjY2Vzc0xpc3RbdF0pO2lmKHRoaXMuc2V0dGluZ3MudW5oaWdobGlnaHQpZm9yKHQ9MCxlPXRoaXMudmFsaWRFbGVtZW50cygpO2VbdF07dCsrKXRoaXMuc2V0dGluZ3MudW5oaWdobGlnaHQuY2FsbCh0aGlzLGVbdF0sdGhpcy5zZXR0aW5ncy5lcnJvckNsYXNzLHRoaXMuc2V0dGluZ3MudmFsaWRDbGFzcyk7dGhpcy50b0hpZGU9dGhpcy50b0hpZGUubm90KHRoaXMudG9TaG93KSx0aGlzLmhpZGVFcnJvcnMoKSx0aGlzLmFkZFdyYXBwZXIodGhpcy50b1Nob3cpLnNob3coKX0sdmFsaWRFbGVtZW50czpmdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnJlbnRFbGVtZW50cy5ub3QodGhpcy5pbnZhbGlkRWxlbWVudHMoKSl9LGludmFsaWRFbGVtZW50czpmdW5jdGlvbigpe3JldHVybiB0KHRoaXMuZXJyb3JMaXN0KS5tYXAoKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWxlbWVudH0pKX0sc2hvd0xhYmVsOmZ1bmN0aW9uKGUsbil7dmFyIGkscixvLGEscz10aGlzLmVycm9yc0ZvcihlKSxsPXRoaXMuaWRPck5hbWUoZSksYz10KGUpLmF0dHIoImFyaWEtZGVzY3JpYmVkYnkiKTtzLmxlbmd0aD8ocy5yZW1vdmVDbGFzcyh0aGlzLnNldHRpbmdzLnZhbGlkQ2xhc3MpLmFkZENsYXNzKHRoaXMuc2V0dGluZ3MuZXJyb3JDbGFzcykscy5odG1sKG4pKTooaT1zPXQoIjwiK3RoaXMuc2V0dGluZ3MuZXJyb3JFbGVtZW50KyI+IikuYXR0cigiaWQiLGwrIi1lcnJvciIpLmFkZENsYXNzKHRoaXMuc2V0dGluZ3MuZXJyb3JDbGFzcykuaHRtbChufHwiIiksdGhpcy5zZXR0aW5ncy53cmFwcGVyJiYoaT1zLmhpZGUoKS5zaG93KCkud3JhcCgiPCIrdGhpcy5zZXR0aW5ncy53cmFwcGVyKyIvPiIpLnBhcmVudCgpKSx0aGlzLmxhYmVsQ29udGFpbmVyLmxlbmd0aD90aGlzLmxhYmVsQ29udGFpbmVyLmFwcGVuZChpKTp0aGlzLnNldHRpbmdzLmVycm9yUGxhY2VtZW50P3RoaXMuc2V0dGluZ3MuZXJyb3JQbGFjZW1lbnQuY2FsbCh0aGlzLGksdChlKSk6aS5pbnNlcnRBZnRlcihlKSxzLmlzKCJsYWJlbCIpP3MuYXR0cigiZm9yIixsKTowPT09cy5wYXJlbnRzKCJsYWJlbFtmb3I9JyIrdGhpcy5lc2NhcGVDc3NNZXRhKGwpKyInXSIpLmxlbmd0aCYmKG89cy5hdHRyKCJpZCIpLGM/Yy5tYXRjaChuZXcgUmVnRXhwKCJcXGIiK3RoaXMuZXNjYXBlQ3NzTWV0YShvKSsiXFxiIikpfHwoYys9IiAiK28pOmM9byx0KGUpLmF0dHIoImFyaWEtZGVzY3JpYmVkYnkiLGMpLChyPXRoaXMuZ3JvdXBzW2UubmFtZV0pJiYoYT10aGlzLHQuZWFjaChhLmdyb3VwcywoZnVuY3Rpb24oZSxuKXtuPT09ciYmdCgiW25hbWU9JyIrYS5lc2NhcGVDc3NNZXRhKGUpKyInXSIsYS5jdXJyZW50Rm9ybSkuYXR0cigiYXJpYS1kZXNjcmliZWRieSIscy5hdHRyKCJpZCIpKX0pKSkpKSwhbiYmdGhpcy5zZXR0aW5ncy5zdWNjZXNzJiYocy50ZXh0KCIiKSwic3RyaW5nIj09dHlwZW9mIHRoaXMuc2V0dGluZ3Muc3VjY2Vzcz9zLmFkZENsYXNzKHRoaXMuc2V0dGluZ3Muc3VjY2Vzcyk6dGhpcy5zZXR0aW5ncy5zdWNjZXNzKHMsZSkpLHRoaXMudG9TaG93PXRoaXMudG9TaG93LmFkZChzKX0sZXJyb3JzRm9yOmZ1bmN0aW9uKGUpe3ZhciBuPXRoaXMuZXNjYXBlQ3NzTWV0YSh0aGlzLmlkT3JOYW1lKGUpKSxpPXQoZSkuYXR0cigiYXJpYS1kZXNjcmliZWRieSIpLHI9ImxhYmVsW2Zvcj0nIituKyInXSwgbGFiZWxbZm9yPSciK24rIiddICoiO3JldHVybiBpJiYocj1yKyIsICMiK3RoaXMuZXNjYXBlQ3NzTWV0YShpKS5yZXBsYWNlKC9ccysvZywiLCAjIikpLHRoaXMuZXJyb3JzKCkuZmlsdGVyKHIpfSxlc2NhcGVDc3NNZXRhOmZ1bmN0aW9uKHQpe3JldHVybiB0LnJlcGxhY2UoLyhbXFwhIiMkJSYnKCkqKywuXC86Ozw9Pj9AXFtcXV5ge3x9fl0pL2csIlxcJDEiKX0saWRPck5hbWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZ3JvdXBzW3QubmFtZV18fCh0aGlzLmNoZWNrYWJsZSh0KT90Lm5hbWU6dC5pZHx8dC5uYW1lKX0sdmFsaWRhdGlvblRhcmdldEZvcjpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5jaGVja2FibGUoZSkmJihlPXRoaXMuZmluZEJ5TmFtZShlLm5hbWUpKSx0KGUpLm5vdCh0aGlzLnNldHRpbmdzLmlnbm9yZSlbMF19LGNoZWNrYWJsZTpmdW5jdGlvbih0KXtyZXR1cm4vcmFkaW98Y2hlY2tib3gvaS50ZXN0KHQudHlwZSl9LGZpbmRCeU5hbWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHQodGhpcy5jdXJyZW50Rm9ybSkuZmluZCgiW25hbWU9JyIrdGhpcy5lc2NhcGVDc3NNZXRhKGUpKyInXSIpfSxnZXRMZW5ndGg6ZnVuY3Rpb24oZSxuKXtzd2l0Y2gobi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKXtjYXNlInNlbGVjdCI6cmV0dXJuIHQoIm9wdGlvbjpzZWxlY3RlZCIsbikubGVuZ3RoO2Nhc2UiaW5wdXQiOmlmKHRoaXMuY2hlY2thYmxlKG4pKXJldHVybiB0aGlzLmZpbmRCeU5hbWUobi5uYW1lKS5maWx0ZXIoIjpjaGVja2VkIikubGVuZ3RofXJldHVybiBlLmxlbmd0aH0sZGVwZW5kOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIXRoaXMuZGVwZW5kVHlwZXNbdHlwZW9mIHRdfHx0aGlzLmRlcGVuZFR5cGVzW3R5cGVvZiB0XSh0LGUpfSxkZXBlbmRUeXBlczp7Ym9vbGVhbjpmdW5jdGlvbih0KXtyZXR1cm4gdH0sc3RyaW5nOmZ1bmN0aW9uKGUsbil7cmV0dXJuISF0KGUsbi5mb3JtKS5sZW5ndGh9LGZ1bmN0aW9uOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQoZSl9fSxvcHRpb25hbDpmdW5jdGlvbihlKXt2YXIgbj10aGlzLmVsZW1lbnRWYWx1ZShlKTtyZXR1cm4hdC52YWxpZGF0b3IubWV0aG9kcy5yZXF1aXJlZC5jYWxsKHRoaXMsbixlKSYmImRlcGVuZGVuY3ktbWlzbWF0Y2gifSxzdGFydFJlcXVlc3Q6ZnVuY3Rpb24oZSl7dGhpcy5wZW5kaW5nW2UubmFtZV18fCh0aGlzLnBlbmRpbmdSZXF1ZXN0KyssdChlKS5hZGRDbGFzcyh0aGlzLnNldHRpbmdzLnBlbmRpbmdDbGFzcyksdGhpcy5wZW5kaW5nW2UubmFtZV09ITApfSxzdG9wUmVxdWVzdDpmdW5jdGlvbihlLG4pe3RoaXMucGVuZGluZ1JlcXVlc3QtLSx0aGlzLnBlbmRpbmdSZXF1ZXN0PDAmJih0aGlzLnBlbmRpbmdSZXF1ZXN0PTApLGRlbGV0ZSB0aGlzLnBlbmRpbmdbZS5uYW1lXSx0KGUpLnJlbW92ZUNsYXNzKHRoaXMuc2V0dGluZ3MucGVuZGluZ0NsYXNzKSxuJiYwPT09dGhpcy5wZW5kaW5nUmVxdWVzdCYmdGhpcy5mb3JtU3VibWl0dGVkJiZ0aGlzLmZvcm0oKT8odCh0aGlzLmN1cnJlbnRGb3JtKS5zdWJtaXQoKSx0aGlzLnN1Ym1pdEJ1dHRvbiYmdCgiaW5wdXQ6aGlkZGVuW25hbWU9JyIrdGhpcy5zdWJtaXRCdXR0b24ubmFtZSsiJ10iLHRoaXMuY3VycmVudEZvcm0pLnJlbW92ZSgpLHRoaXMuZm9ybVN1Ym1pdHRlZD0hMSk6IW4mJjA9PT10aGlzLnBlbmRpbmdSZXF1ZXN0JiZ0aGlzLmZvcm1TdWJtaXR0ZWQmJih0KHRoaXMuY3VycmVudEZvcm0pLnRyaWdnZXJIYW5kbGVyKCJpbnZhbGlkLWZvcm0iLFt0aGlzXSksdGhpcy5mb3JtU3VibWl0dGVkPSExKX0scHJldmlvdXNWYWx1ZTpmdW5jdGlvbihlLG4pe3JldHVybiBuPSJzdHJpbmciPT10eXBlb2YgbiYmbnx8InJlbW90ZSIsdC5kYXRhKGUsInByZXZpb3VzVmFsdWUiKXx8dC5kYXRhKGUsInByZXZpb3VzVmFsdWUiLHtvbGQ6bnVsbCx2YWxpZDohMCxtZXNzYWdlOnRoaXMuZGVmYXVsdE1lc3NhZ2UoZSx7bWV0aG9kOm59KX0pfSxkZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5yZXNldEZvcm0oKSx0KHRoaXMuY3VycmVudEZvcm0pLm9mZigiLnZhbGlkYXRlIikucmVtb3ZlRGF0YSgidmFsaWRhdG9yIikuZmluZCgiLnZhbGlkYXRlLWVxdWFsVG8tYmx1ciIpLm9mZigiLnZhbGlkYXRlLWVxdWFsVG8iKS5yZW1vdmVDbGFzcygidmFsaWRhdGUtZXF1YWxUby1ibHVyIikuZmluZCgiLnZhbGlkYXRlLWxlc3NUaGFuLWJsdXIiKS5vZmYoIi52YWxpZGF0ZS1sZXNzVGhhbiIpLnJlbW92ZUNsYXNzKCJ2YWxpZGF0ZS1sZXNzVGhhbi1ibHVyIikuZmluZCgiLnZhbGlkYXRlLWxlc3NUaGFuRXF1YWwtYmx1ciIpLm9mZigiLnZhbGlkYXRlLWxlc3NUaGFuRXF1YWwiKS5yZW1vdmVDbGFzcygidmFsaWRhdGUtbGVzc1RoYW5FcXVhbC1ibHVyIikuZmluZCgiLnZhbGlkYXRlLWdyZWF0ZXJUaGFuRXF1YWwtYmx1ciIpLm9mZigiLnZhbGlkYXRlLWdyZWF0ZXJUaGFuRXF1YWwiKS5yZW1vdmVDbGFzcygidmFsaWRhdGUtZ3JlYXRlclRoYW5FcXVhbC1ibHVyIikuZmluZCgiLnZhbGlkYXRlLWdyZWF0ZXJUaGFuLWJsdXIiKS5vZmYoIi52YWxpZGF0ZS1ncmVhdGVyVGhhbiIpLnJlbW92ZUNsYXNzKCJ2YWxpZGF0ZS1ncmVhdGVyVGhhbi1ibHVyIil9fSxjbGFzc1J1bGVTZXR0aW5nczp7cmVxdWlyZWQ6e3JlcXVpcmVkOiEwfSxlbWFpbDp7ZW1haWw6ITB9LHVybDp7dXJsOiEwfSxkYXRlOntkYXRlOiEwfSxkYXRlSVNPOntkYXRlSVNPOiEwfSxudW1iZXI6e251bWJlcjohMH0sZGlnaXRzOntkaWdpdHM6ITB9LGNyZWRpdGNhcmQ6e2NyZWRpdGNhcmQ6ITB9fSxhZGRDbGFzc1J1bGVzOmZ1bmN0aW9uKGUsbil7ZS5jb25zdHJ1Y3Rvcj09PVN0cmluZz90aGlzLmNsYXNzUnVsZVNldHRpbmdzW2VdPW46dC5leHRlbmQodGhpcy5jbGFzc1J1bGVTZXR0aW5ncyxlKX0sY2xhc3NSdWxlczpmdW5jdGlvbihlKXt2YXIgbj17fSxpPXQoZSkuYXR0cigiY2xhc3MiKTtyZXR1cm4gaSYmdC5lYWNoKGkuc3BsaXQoIiAiKSwoZnVuY3Rpb24oKXt0aGlzIGluIHQudmFsaWRhdG9yLmNsYXNzUnVsZVNldHRpbmdzJiZ0LmV4dGVuZChuLHQudmFsaWRhdG9yLmNsYXNzUnVsZVNldHRpbmdzW3RoaXNdKX0pKSxufSxub3JtYWxpemVBdHRyaWJ1dGVSdWxlOmZ1bmN0aW9uKHQsZSxuLGkpey9taW58bWF4fHN0ZXAvLnRlc3QobikmJihudWxsPT09ZXx8L251bWJlcnxyYW5nZXx0ZXh0Ly50ZXN0KGUpKSYmKGk9TnVtYmVyKGkpLGlzTmFOKGkpJiYoaT12b2lkIDApKSxpfHwwPT09aT90W25dPWk6ZT09PW4mJiJyYW5nZSIhPT1lJiYodFtuXT0hMCl9LGF0dHJpYnV0ZVJ1bGVzOmZ1bmN0aW9uKGUpe3ZhciBuLGkscj17fSxvPXQoZSksYT1lLmdldEF0dHJpYnV0ZSgidHlwZSIpO2ZvcihuIGluIHQudmFsaWRhdG9yLm1ldGhvZHMpInJlcXVpcmVkIj09PW4/KCIiPT09KGk9ZS5nZXRBdHRyaWJ1dGUobikpJiYoaT0hMCksaT0hIWkpOmk9by5hdHRyKG4pLHRoaXMubm9ybWFsaXplQXR0cmlidXRlUnVsZShyLGEsbixpKTtyZXR1cm4gci5tYXhsZW5ndGgmJi8tMXwyMTQ3NDgzNjQ3fDUyNDI4OC8udGVzdChyLm1heGxlbmd0aCkmJmRlbGV0ZSByLm1heGxlbmd0aCxyfSxkYXRhUnVsZXM6ZnVuY3Rpb24oZSl7dmFyIG4saSxyPXt9LG89dChlKSxhPWUuZ2V0QXR0cmlidXRlKCJ0eXBlIik7Zm9yKG4gaW4gdC52YWxpZGF0b3IubWV0aG9kcykiIj09PShpPW8uZGF0YSgicnVsZSIrbi5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStuLnN1YnN0cmluZygxKS50b0xvd2VyQ2FzZSgpKSkmJihpPSEwKSx0aGlzLm5vcm1hbGl6ZUF0dHJpYnV0ZVJ1bGUocixhLG4saSk7cmV0dXJuIHJ9LHN0YXRpY1J1bGVzOmZ1bmN0aW9uKGUpe3ZhciBuPXt9LGk9dC5kYXRhKGUuZm9ybSwidmFsaWRhdG9yIik7cmV0dXJuIGkuc2V0dGluZ3MucnVsZXMmJihuPXQudmFsaWRhdG9yLm5vcm1hbGl6ZVJ1bGUoaS5zZXR0aW5ncy5ydWxlc1tlLm5hbWVdKXx8e30pLG59LG5vcm1hbGl6ZVJ1bGVzOmZ1bmN0aW9uKGUsbil7cmV0dXJuIHQuZWFjaChlLChmdW5jdGlvbihpLHIpe2lmKCExIT09cil7aWYoci5wYXJhbXx8ci5kZXBlbmRzKXt2YXIgbz0hMDtzd2l0Y2godHlwZW9mIHIuZGVwZW5kcyl7Y2FzZSJzdHJpbmciOm89ISF0KHIuZGVwZW5kcyxuLmZvcm0pLmxlbmd0aDticmVhaztjYXNlImZ1bmN0aW9uIjpvPXIuZGVwZW5kcy5jYWxsKG4sbil9bz9lW2ldPXZvaWQgMD09PXIucGFyYW18fHIucGFyYW06KHQuZGF0YShuLmZvcm0sInZhbGlkYXRvciIpLnJlc2V0RWxlbWVudHModChuKSksZGVsZXRlIGVbaV0pfX1lbHNlIGRlbGV0ZSBlW2ldfSkpLHQuZWFjaChlLChmdW5jdGlvbih0LGkpe2VbdF09ImZ1bmN0aW9uIj09dHlwZW9mIGkmJiJub3JtYWxpemVyIiE9PXQ/aShuKTppfSkpLHQuZWFjaChbIm1pbmxlbmd0aCIsIm1heGxlbmd0aCJdLChmdW5jdGlvbigpe2VbdGhpc10mJihlW3RoaXNdPU51bWJlcihlW3RoaXNdKSl9KSksdC5lYWNoKFsicmFuZ2VsZW5ndGgiLCJyYW5nZSJdLChmdW5jdGlvbigpe3ZhciB0O2VbdGhpc10mJihBcnJheS5pc0FycmF5KGVbdGhpc10pP2VbdGhpc109W051bWJlcihlW3RoaXNdWzBdKSxOdW1iZXIoZVt0aGlzXVsxXSldOiJzdHJpbmciPT10eXBlb2YgZVt0aGlzXSYmKHQ9ZVt0aGlzXS5yZXBsYWNlKC9bXFtcXV0vZywiIikuc3BsaXQoL1tccyxdKy8pLGVbdGhpc109W051bWJlcih0WzBdKSxOdW1iZXIodFsxXSldKSl9KSksdC52YWxpZGF0b3IuYXV0b0NyZWF0ZVJhbmdlcyYmKG51bGwhPWUubWluJiZudWxsIT1lLm1heCYmKGUucmFuZ2U9W2UubWluLGUubWF4XSxkZWxldGUgZS5taW4sZGVsZXRlIGUubWF4KSxudWxsIT1lLm1pbmxlbmd0aCYmbnVsbCE9ZS5tYXhsZW5ndGgmJihlLnJhbmdlbGVuZ3RoPVtlLm1pbmxlbmd0aCxlLm1heGxlbmd0aF0sZGVsZXRlIGUubWlubGVuZ3RoLGRlbGV0ZSBlLm1heGxlbmd0aCkpLGV9LG5vcm1hbGl6ZVJ1bGU6ZnVuY3Rpb24oZSl7aWYoInN0cmluZyI9PXR5cGVvZiBlKXt2YXIgbj17fTt0LmVhY2goZS5zcGxpdCgvXHMvKSwoZnVuY3Rpb24oKXtuW3RoaXNdPSEwfSkpLGU9bn1yZXR1cm4gZX0sYWRkTWV0aG9kOmZ1bmN0aW9uKGUsbixpKXt0LnZhbGlkYXRvci5tZXRob2RzW2VdPW4sdC52YWxpZGF0b3IubWVzc2FnZXNbZV09dm9pZCAwIT09aT9pOnQudmFsaWRhdG9yLm1lc3NhZ2VzW2VdLG4ubGVuZ3RoPDMmJnQudmFsaWRhdG9yLmFkZENsYXNzUnVsZXMoZSx0LnZhbGlkYXRvci5ub3JtYWxpemVSdWxlKGUpKX0sbWV0aG9kczp7cmVxdWlyZWQ6ZnVuY3Rpb24oZSxuLGkpe2lmKCF0aGlzLmRlcGVuZChpLG4pKXJldHVybiJkZXBlbmRlbmN5LW1pc21hdGNoIjtpZigic2VsZWN0Ij09PW4ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSl7dmFyIHI9dChuKS52YWwoKTtyZXR1cm4gciYmci5sZW5ndGg+MH1yZXR1cm4gdGhpcy5jaGVja2FibGUobik/dGhpcy5nZXRMZW5ndGgoZSxuKT4wOm51bGwhPWUmJmUubGVuZ3RoPjB9LGVtYWlsOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMub3B0aW9uYWwoZSl8fC9eW2EtekEtWjAtOS4hIyQlJicqK1wvPT9eX2B7fH1+LV0rQFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlwuW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KSokLy50ZXN0KHQpfSx1cmw6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5vcHRpb25hbChlKXx8L14oPzooPzooPzpodHRwcz98ZnRwKTopP1wvXC8pKD86XFMrKD86OlxTKik/QCk/KD86KD8hKD86MTB8MTI3KSg/OlwuXGR7MSwzfSl7M30pKD8hKD86MTY5XC4yNTR8MTkyXC4xNjgpKD86XC5cZHsxLDN9KXsyfSkoPyExNzJcLig/OjFbNi05XXwyXGR8M1swLTFdKSg/OlwuXGR7MSwzfSl7Mn0pKD86WzEtOV1cZD98MVxkXGR8MlswMV1cZHwyMlswLTNdKSg/OlwuKD86MT9cZHsxLDJ9fDJbMC00XVxkfDI1WzAtNV0pKXsyfSg/OlwuKD86WzEtOV1cZD98MVxkXGR8MlswLTRdXGR8MjVbMC00XSkpfCg/Oig/OlthLXowLTlcdTAwYTEtXHVmZmZmXVthLXowLTlcdTAwYTEtXHVmZmZmXy1dezAsNjJ9KT9bYS16MC05XHUwMGExLVx1ZmZmZl1cLikrKD86W2Etelx1MDBhMS1cdWZmZmZdezIsfVwuPykpKD86OlxkezIsNX0pPyg/OltcLz8jXVxTKik/JC9pLnRlc3QodCl9LGRhdGU6ZnVuY3Rpb24oKXt2YXIgdD0hMTtyZXR1cm4gZnVuY3Rpb24oZSxuKXtyZXR1cm4gdHx8KHQ9ITAsdGhpcy5zZXR0aW5ncy5kZWJ1ZyYmd2luZG93LmNvbnNvbGUmJmNvbnNvbGUud2FybigiVGhlIGBkYXRlYCBtZXRob2QgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHZlcnNpb24gJzIuMC4wJy5cblBsZWFzZSBkb24ndCB1c2UgaXQsIHNpbmNlIGl0IHJlbGllcyBvbiB0aGUgRGF0ZSBjb25zdHJ1Y3Rvciwgd2hpY2hcbmJlaGF2ZXMgdmVyeSBkaWZmZXJlbnRseSBhY3Jvc3MgYnJvd3NlcnMgYW5kIGxvY2FsZXMuIFVzZSBgZGF0ZUlTT2Bcbmluc3RlYWQgb3Igb25lIG9mIHRoZSBsb2NhbGUgc3BlY2lmaWMgbWV0aG9kcyBpbiBgbG9jYWxpemF0aW9ucy9gXG5hbmQgYGFkZGl0aW9uYWwtbWV0aG9kcy5qc2AuIikpLHRoaXMub3B0aW9uYWwobil8fCEvSW52YWxpZHxOYU4vLnRlc3QobmV3IERhdGUoZSkudG9TdHJpbmcoKSl9fSgpLGRhdGVJU086ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5vcHRpb25hbChlKXx8L15cZHs0fVtcL1wtXSgwP1sxLTldfDFbMDEyXSlbXC9cLV0oMD9bMS05XXxbMTJdWzAtOV18M1swMV0pJC8udGVzdCh0KX0sbnVtYmVyOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMub3B0aW9uYWwoZSl8fC9eKD86LT9cZCt8LT9cZHsxLDN9KD86LFxkezN9KSspPyg/OlwuXGQrKT8kLy50ZXN0KHQpfSxkaWdpdHM6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5vcHRpb25hbChlKXx8L15cZCskLy50ZXN0KHQpfSxtaW5sZW5ndGg6ZnVuY3Rpb24odCxlLG4pe3ZhciBpPUFycmF5LmlzQXJyYXkodCk/dC5sZW5ndGg6dGhpcy5nZXRMZW5ndGgodCxlKTtyZXR1cm4gdGhpcy5vcHRpb25hbChlKXx8aT49bn0sbWF4bGVuZ3RoOmZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1BcnJheS5pc0FycmF5KHQpP3QubGVuZ3RoOnRoaXMuZ2V0TGVuZ3RoKHQsZSk7cmV0dXJuIHRoaXMub3B0aW9uYWwoZSl8fGk8PW59LHJhbmdlbGVuZ3RoOmZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1BcnJheS5pc0FycmF5KHQpP3QubGVuZ3RoOnRoaXMuZ2V0TGVuZ3RoKHQsZSk7cmV0dXJuIHRoaXMub3B0aW9uYWwoZSl8fGk+PW5bMF0mJmk8PW5bMV19LG1pbjpmdW5jdGlvbih0LGUsbil7cmV0dXJuIHRoaXMub3B0aW9uYWwoZSl8fHQ+PW59LG1heDpmdW5jdGlvbih0LGUsbil7cmV0dXJuIHRoaXMub3B0aW9uYWwoZSl8fHQ8PW59LHJhbmdlOmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdGhpcy5vcHRpb25hbChlKXx8dD49blswXSYmdDw9blsxXX0sc3RlcDpmdW5jdGlvbihlLG4saSl7dmFyIHIsbz10KG4pLmF0dHIoInR5cGUiKSxhPSJTdGVwIGF0dHJpYnV0ZSBvbiBpbnB1dCB0eXBlICIrbysiIGlzIG5vdCBzdXBwb3J0ZWQuIixzPW5ldyBSZWdFeHAoIlxcYiIrbysiXFxiIiksbD1mdW5jdGlvbih0KXt2YXIgZT0oIiIrdCkubWF0Y2goLyg/OlwuKFxkKykpPyQvKTtyZXR1cm4gZSYmZVsxXT9lWzFdLmxlbmd0aDowfSxjPWZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnJvdW5kKHQqTWF0aC5wb3coMTAscikpfSx1PSEwO2lmKG8mJiFzLnRlc3QoWyJ0ZXh0IiwibnVtYmVyIiwicmFuZ2UiXS5qb2luKCkpKXRocm93IG5ldyBFcnJvcihhKTtyZXR1cm4gcj1sKGkpLChsKGUpPnJ8fGMoZSklYyhpKSE9MCkmJih1PSExKSx0aGlzLm9wdGlvbmFsKG4pfHx1fSxlcXVhbFRvOmZ1bmN0aW9uKGUsbixpKXt2YXIgcj10KGkpO3JldHVybiB0aGlzLnNldHRpbmdzLm9uZm9jdXNvdXQmJnIubm90KCIudmFsaWRhdGUtZXF1YWxUby1ibHVyIikubGVuZ3RoJiZyLmFkZENsYXNzKCJ2YWxpZGF0ZS1lcXVhbFRvLWJsdXIiKS5vbigiYmx1ci52YWxpZGF0ZS1lcXVhbFRvIiwoZnVuY3Rpb24oKXt0KG4pLnZhbGlkKCl9KSksZT09PXIudmFsKCl9LHJlbW90ZTpmdW5jdGlvbihlLG4saSxyKXtpZih0aGlzLm9wdGlvbmFsKG4pKXJldHVybiJkZXBlbmRlbmN5LW1pc21hdGNoIjtyPSJzdHJpbmciPT10eXBlb2YgciYmcnx8InJlbW90ZSI7dmFyIG8sYSxzLGw9dGhpcy5wcmV2aW91c1ZhbHVlKG4scik7cmV0dXJuIHRoaXMuc2V0dGluZ3MubWVzc2FnZXNbbi5uYW1lXXx8KHRoaXMuc2V0dGluZ3MubWVzc2FnZXNbbi5uYW1lXT17fSksbC5vcmlnaW5hbE1lc3NhZ2U9bC5vcmlnaW5hbE1lc3NhZ2V8fHRoaXMuc2V0dGluZ3MubWVzc2FnZXNbbi5uYW1lXVtyXSx0aGlzLnNldHRpbmdzLm1lc3NhZ2VzW24ubmFtZV1bcl09bC5tZXNzYWdlLGk9InN0cmluZyI9PXR5cGVvZiBpJiZ7dXJsOml9fHxpLHM9dC5wYXJhbSh0LmV4dGVuZCh7ZGF0YTplfSxpLmRhdGEpKSxsLm9sZD09PXM/bC52YWxpZDoobC5vbGQ9cyxvPXRoaXMsdGhpcy5zdGFydFJlcXVlc3QobiksKGE9e30pW24ubmFtZV09ZSx0LmFqYXgodC5leHRlbmQoITAse21vZGU6ImFib3J0Iixwb3J0OiJ2YWxpZGF0ZSIrbi5uYW1lLGRhdGFUeXBlOiJqc29uIixkYXRhOmEsY29udGV4dDpvLmN1cnJlbnRGb3JtLHN1Y2Nlc3M6ZnVuY3Rpb24odCl7dmFyIGksYSxzLGM9ITA9PT10fHwidHJ1ZSI9PT10O28uc2V0dGluZ3MubWVzc2FnZXNbbi5uYW1lXVtyXT1sLm9yaWdpbmFsTWVzc2FnZSxjPyhzPW8uZm9ybVN1Ym1pdHRlZCxvLnJlc2V0SW50ZXJuYWxzKCksby50b0hpZGU9by5lcnJvcnNGb3Iobiksby5mb3JtU3VibWl0dGVkPXMsby5zdWNjZXNzTGlzdC5wdXNoKG4pLG8uaW52YWxpZFtuLm5hbWVdPSExLG8uc2hvd0Vycm9ycygpKTooaT17fSxhPXR8fG8uZGVmYXVsdE1lc3NhZ2Uobix7bWV0aG9kOnIscGFyYW1ldGVyczplfSksaVtuLm5hbWVdPWwubWVzc2FnZT1hLG8uaW52YWxpZFtuLm5hbWVdPSEwLG8uc2hvd0Vycm9ycyhpKSksbC52YWxpZD1jLG8uc3RvcFJlcXVlc3QobixjKX19LGkpKSwicGVuZGluZyIpfX19KTt2YXIgbixpPXt9O3JldHVybiB0LmFqYXhQcmVmaWx0ZXI/dC5hamF4UHJlZmlsdGVyKChmdW5jdGlvbih0LGUsbil7dmFyIHI9dC5wb3J0OyJhYm9ydCI9PT10Lm1vZGUmJihpW3JdJiZpW3JdLmFib3J0KCksaVtyXT1uKX0pKToobj10LmFqYXgsdC5hamF4PWZ1bmN0aW9uKGUpe3ZhciByPSgibW9kZSJpbiBlP2U6dC5hamF4U2V0dGluZ3MpLm1vZGUsbz0oInBvcnQiaW4gZT9lOnQuYWpheFNldHRpbmdzKS5wb3J0O3JldHVybiJhYm9ydCI9PT1yPyhpW29dJiZpW29dLmFib3J0KCksaVtvXT1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxpW29dKTpuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pLHR9KSksZnVuY3Rpb24odCl7InVzZSBzdHJpY3QiOyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5Il0sdCk6InVuZGVmaW5lZCIhPXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPXQocmVxdWlyZSgianF1ZXJ5IikpOnQoalF1ZXJ5KX0oKGZ1bmN0aW9uKHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT13aW5kb3cuU2xpY2t8fHt9OyhlPWZ1bmN0aW9uKCl7dmFyIGU9MDtyZXR1cm4gZnVuY3Rpb24obixpKXt2YXIgcixvPXRoaXM7by5kZWZhdWx0cz17YWNjZXNzaWJpbGl0eTohMCxhZGFwdGl2ZUhlaWdodDohMSxhcHBlbmRBcnJvd3M6dChuKSxhcHBlbmREb3RzOnQobiksYXJyb3dzOiEwLGFzTmF2Rm9yOm51bGwscHJldkFycm93Oic8YnV0dG9uIGNsYXNzPSJzbGljay1wcmV2IiBhcmlhLWxhYmVsPSJQcmV2aW91cyIgdHlwZT0iYnV0dG9uIj5QcmV2aW91czwvYnV0dG9uPicsbmV4dEFycm93Oic8YnV0dG9uIGNsYXNzPSJzbGljay1uZXh0IiBhcmlhLWxhYmVsPSJOZXh0IiB0eXBlPSJidXR0b24iPk5leHQ8L2J1dHRvbj4nLGF1dG9wbGF5OiExLGF1dG9wbGF5U3BlZWQ6M2UzLGNlbnRlck1vZGU6ITEsY2VudGVyUGFkZGluZzoiNTBweCIsY3NzRWFzZToiZWFzZSIsY3VzdG9tUGFnaW5nOmZ1bmN0aW9uKGUsbil7cmV0dXJuIHQoJzxidXR0b24gdHlwZT0iYnV0dG9uIiAvPicpLnRleHQobisxKX0sZG90czohMSxkb3RzQ2xhc3M6InNsaWNrLWRvdHMiLGRyYWdnYWJsZTohMCxlYXNpbmc6ImxpbmVhciIsZWRnZUZyaWN0aW9uOi4zNSxmYWRlOiExLGZvY3VzT25TZWxlY3Q6ITEsZm9jdXNPbkNoYW5nZTohMSxpbmZpbml0ZTohMCxpbml0aWFsU2xpZGU6MCxsYXp5TG9hZDoib25kZW1hbmQiLG1vYmlsZUZpcnN0OiExLHBhdXNlT25Ib3ZlcjohMCxwYXVzZU9uRm9jdXM6ITAscGF1c2VPbkRvdHNIb3ZlcjohMSxyZXNwb25kVG86IndpbmRvdyIscmVzcG9uc2l2ZTpudWxsLHJvd3M6MSxydGw6ITEsc2xpZGU6IiIsc2xpZGVzUGVyUm93OjEsc2xpZGVzVG9TaG93OjEsc2xpZGVzVG9TY3JvbGw6MSxzcGVlZDo1MDAsc3dpcGU6ITAsc3dpcGVUb1NsaWRlOiExLHRvdWNoTW92ZTohMCx0b3VjaFRocmVzaG9sZDo1LHVzZUNTUzohMCx1c2VUcmFuc2Zvcm06ITAsdmFyaWFibGVXaWR0aDohMSx2ZXJ0aWNhbDohMSx2ZXJ0aWNhbFN3aXBpbmc6ITEsd2FpdEZvckFuaW1hdGU6ITAsekluZGV4OjFlM30sby5pbml0aWFscz17YW5pbWF0aW5nOiExLGRyYWdnaW5nOiExLGF1dG9QbGF5VGltZXI6bnVsbCxjdXJyZW50RGlyZWN0aW9uOjAsY3VycmVudExlZnQ6bnVsbCxjdXJyZW50U2xpZGU6MCxkaXJlY3Rpb246MSwkZG90czpudWxsLGxpc3RXaWR0aDpudWxsLGxpc3RIZWlnaHQ6bnVsbCxsb2FkSW5kZXg6MCwkbmV4dEFycm93Om51bGwsJHByZXZBcnJvdzpudWxsLHNjcm9sbGluZzohMSxzbGlkZUNvdW50Om51bGwsc2xpZGVXaWR0aDpudWxsLCRzbGlkZVRyYWNrOm51bGwsJHNsaWRlczpudWxsLHNsaWRpbmc6ITEsc2xpZGVPZmZzZXQ6MCxzd2lwZUxlZnQ6bnVsbCxzd2lwaW5nOiExLCRsaXN0Om51bGwsdG91Y2hPYmplY3Q6e30sdHJhbnNmb3Jtc0VuYWJsZWQ6ITEsdW5zbGlja2VkOiExfSx0LmV4dGVuZChvLG8uaW5pdGlhbHMpLG8uYWN0aXZlQnJlYWtwb2ludD1udWxsLG8uYW5pbVR5cGU9bnVsbCxvLmFuaW1Qcm9wPW51bGwsby5icmVha3BvaW50cz1bXSxvLmJyZWFrcG9pbnRTZXR0aW5ncz1bXSxvLmNzc1RyYW5zaXRpb25zPSExLG8uZm9jdXNzZWQ9ITEsby5pbnRlcnJ1cHRlZD0hMSxvLmhpZGRlbj0iaGlkZGVuIixvLnBhdXNlZD0hMCxvLnBvc2l0aW9uUHJvcD1udWxsLG8ucmVzcG9uZFRvPW51bGwsby5yb3dDb3VudD0xLG8uc2hvdWxkQ2xpY2s9ITAsby4kc2xpZGVyPXQobiksby4kc2xpZGVzQ2FjaGU9bnVsbCxvLnRyYW5zZm9ybVR5cGU9bnVsbCxvLnRyYW5zaXRpb25UeXBlPW51bGwsby52aXNpYmlsaXR5Q2hhbmdlPSJ2aXNpYmlsaXR5Y2hhbmdlIixvLndpbmRvd1dpZHRoPTAsby53aW5kb3dUaW1lcj1udWxsLHI9dChuKS5kYXRhKCJzbGljayIpfHx7fSxvLm9wdGlvbnM9dC5leHRlbmQoe30sby5kZWZhdWx0cyxpLHIpLG8uY3VycmVudFNsaWRlPW8ub3B0aW9ucy5pbml0aWFsU2xpZGUsby5vcmlnaW5hbFNldHRpbmdzPW8ub3B0aW9ucyx2b2lkIDAhPT1kb2N1bWVudC5tb3pIaWRkZW4/KG8uaGlkZGVuPSJtb3pIaWRkZW4iLG8udmlzaWJpbGl0eUNoYW5nZT0ibW96dmlzaWJpbGl0eWNoYW5nZSIpOnZvaWQgMCE9PWRvY3VtZW50LndlYmtpdEhpZGRlbiYmKG8uaGlkZGVuPSJ3ZWJraXRIaWRkZW4iLG8udmlzaWJpbGl0eUNoYW5nZT0id2Via2l0dmlzaWJpbGl0eWNoYW5nZSIpLG8uYXV0b1BsYXk9dC5wcm94eShvLmF1dG9QbGF5LG8pLG8uYXV0b1BsYXlDbGVhcj10LnByb3h5KG8uYXV0b1BsYXlDbGVhcixvKSxvLmF1dG9QbGF5SXRlcmF0b3I9dC5wcm94eShvLmF1dG9QbGF5SXRlcmF0b3Isbyksby5jaGFuZ2VTbGlkZT10LnByb3h5KG8uY2hhbmdlU2xpZGUsbyksby5jbGlja0hhbmRsZXI9dC5wcm94eShvLmNsaWNrSGFuZGxlcixvKSxvLnNlbGVjdEhhbmRsZXI9dC5wcm94eShvLnNlbGVjdEhhbmRsZXIsbyksby5zZXRQb3NpdGlvbj10LnByb3h5KG8uc2V0UG9zaXRpb24sbyksby5zd2lwZUhhbmRsZXI9dC5wcm94eShvLnN3aXBlSGFuZGxlcixvKSxvLmRyYWdIYW5kbGVyPXQucHJveHkoby5kcmFnSGFuZGxlcixvKSxvLmtleUhhbmRsZXI9dC5wcm94eShvLmtleUhhbmRsZXIsbyksby5pbnN0YW5jZVVpZD1lKyssby5odG1sRXhwcj0vXig/OlxzKig8W1x3XFddKz4pW14+XSopJC8sby5yZWdpc3RlckJyZWFrcG9pbnRzKCksby5pbml0KCEwKX19KCkpLnByb3RvdHlwZS5hY3RpdmF0ZUFEQT1mdW5jdGlvbigpe3RoaXMuJHNsaWRlVHJhY2suZmluZCgiLnNsaWNrLWFjdGl2ZSIpLmF0dHIoeyJhcmlhLWhpZGRlbiI6ImZhbHNlIn0pLmZpbmQoImEsIGlucHV0LCBidXR0b24sIHNlbGVjdCIpLmF0dHIoe3RhYmluZGV4OiIwIn0pfSxlLnByb3RvdHlwZS5hZGRTbGlkZT1lLnByb3RvdHlwZS5zbGlja0FkZD1mdW5jdGlvbihlLG4saSl7dmFyIHI9dGhpcztpZigiYm9vbGVhbiI9PXR5cGVvZiBuKWk9bixuPW51bGw7ZWxzZSBpZihuPDB8fG4+PXIuc2xpZGVDb3VudClyZXR1cm4hMTtyLnVubG9hZCgpLCJudW1iZXIiPT10eXBlb2Ygbj8wPT09biYmMD09PXIuJHNsaWRlcy5sZW5ndGg/dChlKS5hcHBlbmRUbyhyLiRzbGlkZVRyYWNrKTppP3QoZSkuaW5zZXJ0QmVmb3JlKHIuJHNsaWRlcy5lcShuKSk6dChlKS5pbnNlcnRBZnRlcihyLiRzbGlkZXMuZXEobikpOiEwPT09aT90KGUpLnByZXBlbmRUbyhyLiRzbGlkZVRyYWNrKTp0KGUpLmFwcGVuZFRvKHIuJHNsaWRlVHJhY2spLHIuJHNsaWRlcz1yLiRzbGlkZVRyYWNrLmNoaWxkcmVuKHRoaXMub3B0aW9ucy5zbGlkZSksci4kc2xpZGVUcmFjay5jaGlsZHJlbih0aGlzLm9wdGlvbnMuc2xpZGUpLmRldGFjaCgpLHIuJHNsaWRlVHJhY2suYXBwZW5kKHIuJHNsaWRlcyksci4kc2xpZGVzLmVhY2goKGZ1bmN0aW9uKGUsbil7dChuKS5hdHRyKCJkYXRhLXNsaWNrLWluZGV4IixlKX0pKSxyLiRzbGlkZXNDYWNoZT1yLiRzbGlkZXMsci5yZWluaXQoKX0sZS5wcm90b3R5cGUuYW5pbWF0ZUhlaWdodD1mdW5jdGlvbigpe3ZhciB0PXRoaXM7aWYoMT09PXQub3B0aW9ucy5zbGlkZXNUb1Nob3cmJiEwPT09dC5vcHRpb25zLmFkYXB0aXZlSGVpZ2h0JiYhMT09PXQub3B0aW9ucy52ZXJ0aWNhbCl7dmFyIGU9dC4kc2xpZGVzLmVxKHQuY3VycmVudFNsaWRlKS5vdXRlckhlaWdodCghMCk7dC4kbGlzdC5hbmltYXRlKHtoZWlnaHQ6ZX0sdC5vcHRpb25zLnNwZWVkKX19LGUucHJvdG90eXBlLmFuaW1hdGVTbGlkZT1mdW5jdGlvbihlLG4pe3ZhciBpPXt9LHI9dGhpcztyLmFuaW1hdGVIZWlnaHQoKSwhMD09PXIub3B0aW9ucy5ydGwmJiExPT09ci5vcHRpb25zLnZlcnRpY2FsJiYoZT0tZSksITE9PT1yLnRyYW5zZm9ybXNFbmFibGVkPyExPT09ci5vcHRpb25zLnZlcnRpY2FsP3IuJHNsaWRlVHJhY2suYW5pbWF0ZSh7bGVmdDplfSxyLm9wdGlvbnMuc3BlZWQsci5vcHRpb25zLmVhc2luZyxuKTpyLiRzbGlkZVRyYWNrLmFuaW1hdGUoe3RvcDplfSxyLm9wdGlvbnMuc3BlZWQsci5vcHRpb25zLmVhc2luZyxuKTohMT09PXIuY3NzVHJhbnNpdGlvbnM/KCEwPT09ci5vcHRpb25zLnJ0bCYmKHIuY3VycmVudExlZnQ9LXIuY3VycmVudExlZnQpLHQoe2FuaW1TdGFydDpyLmN1cnJlbnRMZWZ0fSkuYW5pbWF0ZSh7YW5pbVN0YXJ0OmV9LHtkdXJhdGlvbjpyLm9wdGlvbnMuc3BlZWQsZWFzaW5nOnIub3B0aW9ucy5lYXNpbmcsc3RlcDpmdW5jdGlvbih0KXt0PU1hdGguY2VpbCh0KSwhMT09PXIub3B0aW9ucy52ZXJ0aWNhbD8oaVtyLmFuaW1UeXBlXT0idHJhbnNsYXRlKCIrdCsicHgsIDBweCkiLHIuJHNsaWRlVHJhY2suY3NzKGkpKTooaVtyLmFuaW1UeXBlXT0idHJhbnNsYXRlKDBweCwiK3QrInB4KSIsci4kc2xpZGVUcmFjay5jc3MoaSkpfSxjb21wbGV0ZTpmdW5jdGlvbigpe24mJm4uY2FsbCgpfX0pKTooci5hcHBseVRyYW5zaXRpb24oKSxlPU1hdGguY2VpbChlKSwhMT09PXIub3B0aW9ucy52ZXJ0aWNhbD9pW3IuYW5pbVR5cGVdPSJ0cmFuc2xhdGUzZCgiK2UrInB4LCAwcHgsIDBweCkiOmlbci5hbmltVHlwZV09InRyYW5zbGF0ZTNkKDBweCwiK2UrInB4LCAwcHgpIixyLiRzbGlkZVRyYWNrLmNzcyhpKSxuJiZzZXRUaW1lb3V0KChmdW5jdGlvbigpe3IuZGlzYWJsZVRyYW5zaXRpb24oKSxuLmNhbGwoKX0pLHIub3B0aW9ucy5zcGVlZCkpfSxlLnByb3RvdHlwZS5nZXROYXZUYXJnZXQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9wdGlvbnMuYXNOYXZGb3I7cmV0dXJuIGUmJm51bGwhPT1lJiYoZT10KGUpLm5vdCh0aGlzLiRzbGlkZXIpKSxlfSxlLnByb3RvdHlwZS5hc05hdkZvcj1mdW5jdGlvbihlKXt2YXIgbj10aGlzLmdldE5hdlRhcmdldCgpO251bGwhPT1uJiYib2JqZWN0Ij09dHlwZW9mIG4mJm4uZWFjaCgoZnVuY3Rpb24oKXt2YXIgbj10KHRoaXMpLnNsaWNrKCJnZXRTbGljayIpO24udW5zbGlja2VkfHxuLnNsaWRlSGFuZGxlcihlLCEwKX0pKX0sZS5wcm90b3R5cGUuYXBwbHlUcmFuc2l0aW9uPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj17fTshMT09PWUub3B0aW9ucy5mYWRlP25bZS50cmFuc2l0aW9uVHlwZV09ZS50cmFuc2Zvcm1UeXBlKyIgIitlLm9wdGlvbnMuc3BlZWQrIm1zICIrZS5vcHRpb25zLmNzc0Vhc2U6bltlLnRyYW5zaXRpb25UeXBlXT0ib3BhY2l0eSAiK2Uub3B0aW9ucy5zcGVlZCsibXMgIitlLm9wdGlvbnMuY3NzRWFzZSwhMT09PWUub3B0aW9ucy5mYWRlP2UuJHNsaWRlVHJhY2suY3NzKG4pOmUuJHNsaWRlcy5lcSh0KS5jc3Mobil9LGUucHJvdG90eXBlLmF1dG9QbGF5PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0LmF1dG9QbGF5Q2xlYXIoKSx0LnNsaWRlQ291bnQ+dC5vcHRpb25zLnNsaWRlc1RvU2hvdyYmKHQuYXV0b1BsYXlUaW1lcj1zZXRJbnRlcnZhbCh0LmF1dG9QbGF5SXRlcmF0b3IsdC5vcHRpb25zLmF1dG9wbGF5U3BlZWQpKX0sZS5wcm90b3R5cGUuYXV0b1BsYXlDbGVhcj1mdW5jdGlvbigpe3RoaXMuYXV0b1BsYXlUaW1lciYmY2xlYXJJbnRlcnZhbCh0aGlzLmF1dG9QbGF5VGltZXIpfSxlLnByb3RvdHlwZS5hdXRvUGxheUl0ZXJhdG9yPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXQuY3VycmVudFNsaWRlK3Qub3B0aW9ucy5zbGlkZXNUb1Njcm9sbDt0LnBhdXNlZHx8dC5pbnRlcnJ1cHRlZHx8dC5mb2N1c3NlZHx8KCExPT09dC5vcHRpb25zLmluZmluaXRlJiYoMT09PXQuZGlyZWN0aW9uJiZ0LmN1cnJlbnRTbGlkZSsxPT09dC5zbGlkZUNvdW50LTE/dC5kaXJlY3Rpb249MDowPT09dC5kaXJlY3Rpb24mJihlPXQuY3VycmVudFNsaWRlLXQub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCx0LmN1cnJlbnRTbGlkZS0xPT0wJiYodC5kaXJlY3Rpb249MSkpKSx0LnNsaWRlSGFuZGxlcihlKSl9LGUucHJvdG90eXBlLmJ1aWxkQXJyb3dzPWZ1bmN0aW9uKCl7dmFyIGU9dGhpczshMD09PWUub3B0aW9ucy5hcnJvd3MmJihlLiRwcmV2QXJyb3c9dChlLm9wdGlvbnMucHJldkFycm93KS5hZGRDbGFzcygic2xpY2stYXJyb3ciKSxlLiRuZXh0QXJyb3c9dChlLm9wdGlvbnMubmV4dEFycm93KS5hZGRDbGFzcygic2xpY2stYXJyb3ciKSxlLnNsaWRlQ291bnQ+ZS5vcHRpb25zLnNsaWRlc1RvU2hvdz8oZS4kcHJldkFycm93LnJlbW92ZUNsYXNzKCJzbGljay1oaWRkZW4iKS5yZW1vdmVBdHRyKCJhcmlhLWhpZGRlbiB0YWJpbmRleCIpLGUuJG5leHRBcnJvdy5yZW1vdmVDbGFzcygic2xpY2staGlkZGVuIikucmVtb3ZlQXR0cigiYXJpYS1oaWRkZW4gdGFiaW5kZXgiKSxlLmh0bWxFeHByLnRlc3QoZS5vcHRpb25zLnByZXZBcnJvdykmJmUuJHByZXZBcnJvdy5wcmVwZW5kVG8oZS5vcHRpb25zLmFwcGVuZEFycm93cyksZS5odG1sRXhwci50ZXN0KGUub3B0aW9ucy5uZXh0QXJyb3cpJiZlLiRuZXh0QXJyb3cuYXBwZW5kVG8oZS5vcHRpb25zLmFwcGVuZEFycm93cyksITAhPT1lLm9wdGlvbnMuaW5maW5pdGUmJmUuJHByZXZBcnJvdy5hZGRDbGFzcygic2xpY2stZGlzYWJsZWQiKS5hdHRyKCJhcmlhLWRpc2FibGVkIiwidHJ1ZSIpKTplLiRwcmV2QXJyb3cuYWRkKGUuJG5leHRBcnJvdykuYWRkQ2xhc3MoInNsaWNrLWhpZGRlbiIpLmF0dHIoeyJhcmlhLWRpc2FibGVkIjoidHJ1ZSIsdGFiaW5kZXg6Ii0xIn0pKX0sZS5wcm90b3R5cGUuYnVpbGREb3RzPWZ1bmN0aW9uKCl7dmFyIGUsbixpPXRoaXM7aWYoITA9PT1pLm9wdGlvbnMuZG90cyl7Zm9yKGkuJHNsaWRlci5hZGRDbGFzcygic2xpY2stZG90dGVkIiksbj10KCI8dWwgLz4iKS5hZGRDbGFzcyhpLm9wdGlvbnMuZG90c0NsYXNzKSxlPTA7ZTw9aS5nZXREb3RDb3VudCgpO2UrPTEpbi5hcHBlbmQodCgiPGxpIC8+IikuYXBwZW5kKGkub3B0aW9ucy5jdXN0b21QYWdpbmcuY2FsbCh0aGlzLGksZSkpKTtpLiRkb3RzPW4uYXBwZW5kVG8oaS5vcHRpb25zLmFwcGVuZERvdHMpLGkuJGRvdHMuZmluZCgibGkiKS5maXJzdCgpLmFkZENsYXNzKCJzbGljay1hY3RpdmUiKX19LGUucHJvdG90eXBlLmJ1aWxkT3V0PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztlLiRzbGlkZXM9ZS4kc2xpZGVyLmNoaWxkcmVuKGUub3B0aW9ucy5zbGlkZSsiOm5vdCguc2xpY2stY2xvbmVkKSIpLmFkZENsYXNzKCJzbGljay1zbGlkZSIpLGUuc2xpZGVDb3VudD1lLiRzbGlkZXMubGVuZ3RoLGUuJHNsaWRlcy5lYWNoKChmdW5jdGlvbihlLG4pe3QobikuYXR0cigiZGF0YS1zbGljay1pbmRleCIsZSkuZGF0YSgib3JpZ2luYWxTdHlsaW5nIix0KG4pLmF0dHIoInN0eWxlIil8fCIiKX0pKSxlLiRzbGlkZXIuYWRkQ2xhc3MoInNsaWNrLXNsaWRlciIpLGUuJHNsaWRlVHJhY2s9MD09PWUuc2xpZGVDb3VudD90KCc8ZGl2IGNsYXNzPSJzbGljay10cmFjayIvPicpLmFwcGVuZFRvKGUuJHNsaWRlcik6ZS4kc2xpZGVzLndyYXBBbGwoJzxkaXYgY2xhc3M9InNsaWNrLXRyYWNrIi8+JykucGFyZW50KCksZS4kbGlzdD1lLiRzbGlkZVRyYWNrLndyYXAoJzxkaXYgY2xhc3M9InNsaWNrLWxpc3QiLz4nKS5wYXJlbnQoKSxlLiRzbGlkZVRyYWNrLmNzcygib3BhY2l0eSIsMCksITAhPT1lLm9wdGlvbnMuY2VudGVyTW9kZSYmITAhPT1lLm9wdGlvbnMuc3dpcGVUb1NsaWRlfHwoZS5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsPTEpLHQoImltZ1tkYXRhLWxhenldIixlLiRzbGlkZXIpLm5vdCgiW3NyY10iKS5hZGRDbGFzcygic2xpY2stbG9hZGluZyIpLGUuc2V0dXBJbmZpbml0ZSgpLGUuYnVpbGRBcnJvd3MoKSxlLmJ1aWxkRG90cygpLGUudXBkYXRlRG90cygpLGUuc2V0U2xpZGVDbGFzc2VzKCJudW1iZXIiPT10eXBlb2YgZS5jdXJyZW50U2xpZGU/ZS5jdXJyZW50U2xpZGU6MCksITA9PT1lLm9wdGlvbnMuZHJhZ2dhYmxlJiZlLiRsaXN0LmFkZENsYXNzKCJkcmFnZ2FibGUiKX0sZS5wcm90b3R5cGUuYnVpbGRSb3dzPWZ1bmN0aW9uKCl7dmFyIHQsZSxuLGkscixvLGEscz10aGlzO2lmKGk9ZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLG89cy4kc2xpZGVyLmNoaWxkcmVuKCkscy5vcHRpb25zLnJvd3M+MSl7Zm9yKGE9cy5vcHRpb25zLnNsaWRlc1BlclJvdypzLm9wdGlvbnMucm93cyxyPU1hdGguY2VpbChvLmxlbmd0aC9hKSx0PTA7dDxyO3QrKyl7dmFyIGw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Zm9yKGU9MDtlPHMub3B0aW9ucy5yb3dzO2UrKyl7dmFyIGM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Zm9yKG49MDtuPHMub3B0aW9ucy5zbGlkZXNQZXJSb3c7bisrKXt2YXIgdT10KmErKGUqcy5vcHRpb25zLnNsaWRlc1BlclJvdytuKTtvLmdldCh1KSYmYy5hcHBlbmRDaGlsZChvLmdldCh1KSl9bC5hcHBlbmRDaGlsZChjKX1pLmFwcGVuZENoaWxkKGwpfXMuJHNsaWRlci5lbXB0eSgpLmFwcGVuZChpKSxzLiRzbGlkZXIuY2hpbGRyZW4oKS5jaGlsZHJlbigpLmNoaWxkcmVuKCkuY3NzKHt3aWR0aDoxMDAvcy5vcHRpb25zLnNsaWRlc1BlclJvdysiJSIsZGlzcGxheToiaW5saW5lLWJsb2NrIn0pfX0sZS5wcm90b3R5cGUuY2hlY2tSZXNwb25zaXZlPWZ1bmN0aW9uKGUsbil7dmFyIGkscixvLGE9dGhpcyxzPSExLGw9YS4kc2xpZGVyLndpZHRoKCksYz13aW5kb3cuaW5uZXJXaWR0aHx8dCh3aW5kb3cpLndpZHRoKCk7aWYoIndpbmRvdyI9PT1hLnJlc3BvbmRUbz9vPWM6InNsaWRlciI9PT1hLnJlc3BvbmRUbz9vPWw6Im1pbiI9PT1hLnJlc3BvbmRUbyYmKG89TWF0aC5taW4oYyxsKSksYS5vcHRpb25zLnJlc3BvbnNpdmUmJmEub3B0aW9ucy5yZXNwb25zaXZlLmxlbmd0aCYmbnVsbCE9PWEub3B0aW9ucy5yZXNwb25zaXZlKXtmb3IoaSBpbiByPW51bGwsYS5icmVha3BvaW50cylhLmJyZWFrcG9pbnRzLmhhc093blByb3BlcnR5KGkpJiYoITE9PT1hLm9yaWdpbmFsU2V0dGluZ3MubW9iaWxlRmlyc3Q/bzxhLmJyZWFrcG9pbnRzW2ldJiYocj1hLmJyZWFrcG9pbnRzW2ldKTpvPmEuYnJlYWtwb2ludHNbaV0mJihyPWEuYnJlYWtwb2ludHNbaV0pKTtudWxsIT09cj9udWxsIT09YS5hY3RpdmVCcmVha3BvaW50PyhyIT09YS5hY3RpdmVCcmVha3BvaW50fHxuKSYmKGEuYWN0aXZlQnJlYWtwb2ludD1yLCJ1bnNsaWNrIj09PWEuYnJlYWtwb2ludFNldHRpbmdzW3JdP2EudW5zbGljayhyKTooYS5vcHRpb25zPXQuZXh0ZW5kKHt9LGEub3JpZ2luYWxTZXR0aW5ncyxhLmJyZWFrcG9pbnRTZXR0aW5nc1tyXSksITA9PT1lJiYoYS5jdXJyZW50U2xpZGU9YS5vcHRpb25zLmluaXRpYWxTbGlkZSksYS5yZWZyZXNoKGUpKSxzPXIpOihhLmFjdGl2ZUJyZWFrcG9pbnQ9ciwidW5zbGljayI9PT1hLmJyZWFrcG9pbnRTZXR0aW5nc1tyXT9hLnVuc2xpY2socik6KGEub3B0aW9ucz10LmV4dGVuZCh7fSxhLm9yaWdpbmFsU2V0dGluZ3MsYS5icmVha3BvaW50U2V0dGluZ3Nbcl0pLCEwPT09ZSYmKGEuY3VycmVudFNsaWRlPWEub3B0aW9ucy5pbml0aWFsU2xpZGUpLGEucmVmcmVzaChlKSkscz1yKTpudWxsIT09YS5hY3RpdmVCcmVha3BvaW50JiYoYS5hY3RpdmVCcmVha3BvaW50PW51bGwsYS5vcHRpb25zPWEub3JpZ2luYWxTZXR0aW5ncywhMD09PWUmJihhLmN1cnJlbnRTbGlkZT1hLm9wdGlvbnMuaW5pdGlhbFNsaWRlKSxhLnJlZnJlc2goZSkscz1yKSxlfHwhMT09PXN8fGEuJHNsaWRlci50cmlnZ2VyKCJicmVha3BvaW50IixbYSxzXSl9fSxlLnByb3RvdHlwZS5jaGFuZ2VTbGlkZT1mdW5jdGlvbihlLG4pe3ZhciBpLHIsbz10aGlzLGE9dChlLmN1cnJlbnRUYXJnZXQpO3N3aXRjaChhLmlzKCJhIikmJmUucHJldmVudERlZmF1bHQoKSxhLmlzKCJsaSIpfHwoYT1hLmNsb3Nlc3QoImxpIikpLGk9by5zbGlkZUNvdW50JW8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCE9MD8wOihvLnNsaWRlQ291bnQtby5jdXJyZW50U2xpZGUpJW8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCxlLmRhdGEubWVzc2FnZSl7Y2FzZSJwcmV2aW91cyI6cj0wPT09aT9vLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGw6by5vcHRpb25zLnNsaWRlc1RvU2hvdy1pLG8uc2xpZGVDb3VudD5vLm9wdGlvbnMuc2xpZGVzVG9TaG93JiZvLnNsaWRlSGFuZGxlcihvLmN1cnJlbnRTbGlkZS1yLCExLG4pO2JyZWFrO2Nhc2UibmV4dCI6cj0wPT09aT9vLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGw6aSxvLnNsaWRlQ291bnQ+by5vcHRpb25zLnNsaWRlc1RvU2hvdyYmby5zbGlkZUhhbmRsZXIoby5jdXJyZW50U2xpZGUrciwhMSxuKTticmVhaztjYXNlImluZGV4Ijp2YXIgcz0wPT09ZS5kYXRhLmluZGV4PzA6ZS5kYXRhLmluZGV4fHxhLmluZGV4KCkqby5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsO28uc2xpZGVIYW5kbGVyKG8uY2hlY2tOYXZpZ2FibGUocyksITEsbiksYS5jaGlsZHJlbigpLnRyaWdnZXIoImZvY3VzIik7YnJlYWs7ZGVmYXVsdDpyZXR1cm59fSxlLnByb3RvdHlwZS5jaGVja05hdmlnYWJsZT1mdW5jdGlvbih0KXt2YXIgZSxuO2lmKG49MCx0PihlPXRoaXMuZ2V0TmF2aWdhYmxlSW5kZXhlcygpKVtlLmxlbmd0aC0xXSl0PWVbZS5sZW5ndGgtMV07ZWxzZSBmb3IodmFyIGkgaW4gZSl7aWYodDxlW2ldKXt0PW47YnJlYWt9bj1lW2ldfXJldHVybiB0fSxlLnByb3RvdHlwZS5jbGVhblVwRXZlbnRzPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztlLm9wdGlvbnMuZG90cyYmbnVsbCE9PWUuJGRvdHMmJih0KCJsaSIsZS4kZG90cykub2ZmKCJjbGljay5zbGljayIsZS5jaGFuZ2VTbGlkZSkub2ZmKCJtb3VzZWVudGVyLnNsaWNrIix0LnByb3h5KGUuaW50ZXJydXB0LGUsITApKS5vZmYoIm1vdXNlbGVhdmUuc2xpY2siLHQucHJveHkoZS5pbnRlcnJ1cHQsZSwhMSkpLCEwPT09ZS5vcHRpb25zLmFjY2Vzc2liaWxpdHkmJmUuJGRvdHMub2ZmKCJrZXlkb3duLnNsaWNrIixlLmtleUhhbmRsZXIpKSxlLiRzbGlkZXIub2ZmKCJmb2N1cy5zbGljayBibHVyLnNsaWNrIiksITA9PT1lLm9wdGlvbnMuYXJyb3dzJiZlLnNsaWRlQ291bnQ+ZS5vcHRpb25zLnNsaWRlc1RvU2hvdyYmKGUuJHByZXZBcnJvdyYmZS4kcHJldkFycm93Lm9mZigiY2xpY2suc2xpY2siLGUuY2hhbmdlU2xpZGUpLGUuJG5leHRBcnJvdyYmZS4kbmV4dEFycm93Lm9mZigiY2xpY2suc2xpY2siLGUuY2hhbmdlU2xpZGUpLCEwPT09ZS5vcHRpb25zLmFjY2Vzc2liaWxpdHkmJihlLiRwcmV2QXJyb3cmJmUuJHByZXZBcnJvdy5vZmYoImtleWRvd24uc2xpY2siLGUua2V5SGFuZGxlciksZS4kbmV4dEFycm93JiZlLiRuZXh0QXJyb3cub2ZmKCJrZXlkb3duLnNsaWNrIixlLmtleUhhbmRsZXIpKSksZS4kbGlzdC5vZmYoInRvdWNoc3RhcnQuc2xpY2sgbW91c2Vkb3duLnNsaWNrIixlLnN3aXBlSGFuZGxlciksZS4kbGlzdC5vZmYoInRvdWNobW92ZS5zbGljayBtb3VzZW1vdmUuc2xpY2siLGUuc3dpcGVIYW5kbGVyKSxlLiRsaXN0Lm9mZigidG91Y2hlbmQuc2xpY2sgbW91c2V1cC5zbGljayIsZS5zd2lwZUhhbmRsZXIpLGUuJGxpc3Qub2ZmKCJ0b3VjaGNhbmNlbC5zbGljayBtb3VzZWxlYXZlLnNsaWNrIixlLnN3aXBlSGFuZGxlciksZS4kbGlzdC5vZmYoImNsaWNrLnNsaWNrIixlLmNsaWNrSGFuZGxlciksdChkb2N1bWVudCkub2ZmKGUudmlzaWJpbGl0eUNoYW5nZSxlLnZpc2liaWxpdHkpLGUuY2xlYW5VcFNsaWRlRXZlbnRzKCksITA9PT1lLm9wdGlvbnMuYWNjZXNzaWJpbGl0eSYmZS4kbGlzdC5vZmYoImtleWRvd24uc2xpY2siLGUua2V5SGFuZGxlciksITA9PT1lLm9wdGlvbnMuZm9jdXNPblNlbGVjdCYmdChlLiRzbGlkZVRyYWNrKS5jaGlsZHJlbigpLm9mZigiY2xpY2suc2xpY2siLGUuc2VsZWN0SGFuZGxlciksdCh3aW5kb3cpLm9mZigib3JpZW50YXRpb25jaGFuZ2Uuc2xpY2suc2xpY2stIitlLmluc3RhbmNlVWlkLGUub3JpZW50YXRpb25DaGFuZ2UpLHQod2luZG93KS5vZmYoInJlc2l6ZS5zbGljay5zbGljay0iK2UuaW5zdGFuY2VVaWQsZS5yZXNpemUpLHQoIltkcmFnZ2FibGUhPXRydWVdIixlLiRzbGlkZVRyYWNrKS5vZmYoImRyYWdzdGFydCIsZS5wcmV2ZW50RGVmYXVsdCksdCh3aW5kb3cpLm9mZigibG9hZC5zbGljay5zbGljay0iK2UuaW5zdGFuY2VVaWQsZS5zZXRQb3NpdGlvbil9LGUucHJvdG90eXBlLmNsZWFuVXBTbGlkZUV2ZW50cz1mdW5jdGlvbigpe3ZhciBlPXRoaXM7ZS4kbGlzdC5vZmYoIm1vdXNlZW50ZXIuc2xpY2siLHQucHJveHkoZS5pbnRlcnJ1cHQsZSwhMCkpLGUuJGxpc3Qub2ZmKCJtb3VzZWxlYXZlLnNsaWNrIix0LnByb3h5KGUuaW50ZXJydXB0LGUsITEpKX0sZS5wcm90b3R5cGUuY2xlYW5VcFJvd3M9ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXM7ZS5vcHRpb25zLnJvd3M+MSYmKCh0PWUuJHNsaWRlcy5jaGlsZHJlbigpLmNoaWxkcmVuKCkpLnJlbW92ZUF0dHIoInN0eWxlIiksZS4kc2xpZGVyLmVtcHR5KCkuYXBwZW5kKHQpKX0sZS5wcm90b3R5cGUuY2xpY2tIYW5kbGVyPWZ1bmN0aW9uKHQpeyExPT09dGhpcy5zaG91bGRDbGljayYmKHQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksdC5zdG9wUHJvcGFnYXRpb24oKSx0LnByZXZlbnREZWZhdWx0KCkpfSxlLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKGUpe3ZhciBuPXRoaXM7bi5hdXRvUGxheUNsZWFyKCksbi50b3VjaE9iamVjdD17fSxuLmNsZWFuVXBFdmVudHMoKSx0KCIuc2xpY2stY2xvbmVkIixuLiRzbGlkZXIpLmRldGFjaCgpLG4uJGRvdHMmJm4uJGRvdHMucmVtb3ZlKCksbi4kcHJldkFycm93JiZuLiRwcmV2QXJyb3cubGVuZ3RoJiYobi4kcHJldkFycm93LnJlbW92ZUNsYXNzKCJzbGljay1kaXNhYmxlZCBzbGljay1hcnJvdyBzbGljay1oaWRkZW4iKS5yZW1vdmVBdHRyKCJhcmlhLWhpZGRlbiBhcmlhLWRpc2FibGVkIHRhYmluZGV4IikuY3NzKCJkaXNwbGF5IiwiIiksbi5odG1sRXhwci50ZXN0KG4ub3B0aW9ucy5wcmV2QXJyb3cpJiZuLiRwcmV2QXJyb3cucmVtb3ZlKCkpLG4uJG5leHRBcnJvdyYmbi4kbmV4dEFycm93Lmxlbmd0aCYmKG4uJG5leHRBcnJvdy5yZW1vdmVDbGFzcygic2xpY2stZGlzYWJsZWQgc2xpY2stYXJyb3cgc2xpY2staGlkZGVuIikucmVtb3ZlQXR0cigiYXJpYS1oaWRkZW4gYXJpYS1kaXNhYmxlZCB0YWJpbmRleCIpLmNzcygiZGlzcGxheSIsIiIpLG4uaHRtbEV4cHIudGVzdChuLm9wdGlvbnMubmV4dEFycm93KSYmbi4kbmV4dEFycm93LnJlbW92ZSgpKSxuLiRzbGlkZXMmJihuLiRzbGlkZXMucmVtb3ZlQ2xhc3MoInNsaWNrLXNsaWRlIHNsaWNrLWFjdGl2ZSBzbGljay1jZW50ZXIgc2xpY2stdmlzaWJsZSBzbGljay1jdXJyZW50IikucmVtb3ZlQXR0cigiYXJpYS1oaWRkZW4iKS5yZW1vdmVBdHRyKCJkYXRhLXNsaWNrLWluZGV4IikuZWFjaCgoZnVuY3Rpb24oKXt0KHRoaXMpLmF0dHIoInN0eWxlIix0KHRoaXMpLmRhdGEoIm9yaWdpbmFsU3R5bGluZyIpKX0pKSxuLiRzbGlkZVRyYWNrLmNoaWxkcmVuKHRoaXMub3B0aW9ucy5zbGlkZSkuZGV0YWNoKCksbi4kc2xpZGVUcmFjay5kZXRhY2goKSxuLiRsaXN0LmRldGFjaCgpLG4uJHNsaWRlci5hcHBlbmQobi4kc2xpZGVzKSksbi5jbGVhblVwUm93cygpLG4uJHNsaWRlci5yZW1vdmVDbGFzcygic2xpY2stc2xpZGVyIiksbi4kc2xpZGVyLnJlbW92ZUNsYXNzKCJzbGljay1pbml0aWFsaXplZCIpLG4uJHNsaWRlci5yZW1vdmVDbGFzcygic2xpY2stZG90dGVkIiksbi51bnNsaWNrZWQ9ITAsZXx8bi4kc2xpZGVyLnRyaWdnZXIoImRlc3Ryb3kiLFtuXSl9LGUucHJvdG90eXBlLmRpc2FibGVUcmFuc2l0aW9uPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj17fTtuW2UudHJhbnNpdGlvblR5cGVdPSIiLCExPT09ZS5vcHRpb25zLmZhZGU/ZS4kc2xpZGVUcmFjay5jc3Mobik6ZS4kc2xpZGVzLmVxKHQpLmNzcyhuKX0sZS5wcm90b3R5cGUuZmFkZVNsaWRlPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpczshMT09PW4uY3NzVHJhbnNpdGlvbnM/KG4uJHNsaWRlcy5lcSh0KS5jc3Moe3pJbmRleDpuLm9wdGlvbnMuekluZGV4fSksbi4kc2xpZGVzLmVxKHQpLmFuaW1hdGUoe29wYWNpdHk6MX0sbi5vcHRpb25zLnNwZWVkLG4ub3B0aW9ucy5lYXNpbmcsZSkpOihuLmFwcGx5VHJhbnNpdGlvbih0KSxuLiRzbGlkZXMuZXEodCkuY3NzKHtvcGFjaXR5OjEsekluZGV4Om4ub3B0aW9ucy56SW5kZXh9KSxlJiZzZXRUaW1lb3V0KChmdW5jdGlvbigpe24uZGlzYWJsZVRyYW5zaXRpb24odCksZS5jYWxsKCl9KSxuLm9wdGlvbnMuc3BlZWQpKX0sZS5wcm90b3R5cGUuZmFkZVNsaWRlT3V0PWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7ITE9PT1lLmNzc1RyYW5zaXRpb25zP2UuJHNsaWRlcy5lcSh0KS5hbmltYXRlKHtvcGFjaXR5OjAsekluZGV4OmUub3B0aW9ucy56SW5kZXgtMn0sZS5vcHRpb25zLnNwZWVkLGUub3B0aW9ucy5lYXNpbmcpOihlLmFwcGx5VHJhbnNpdGlvbih0KSxlLiRzbGlkZXMuZXEodCkuY3NzKHtvcGFjaXR5OjAsekluZGV4OmUub3B0aW9ucy56SW5kZXgtMn0pKX0sZS5wcm90b3R5cGUuZmlsdGVyU2xpZGVzPWUucHJvdG90eXBlLnNsaWNrRmlsdGVyPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7bnVsbCE9PXQmJihlLiRzbGlkZXNDYWNoZT1lLiRzbGlkZXMsZS51bmxvYWQoKSxlLiRzbGlkZVRyYWNrLmNoaWxkcmVuKHRoaXMub3B0aW9ucy5zbGlkZSkuZGV0YWNoKCksZS4kc2xpZGVzQ2FjaGUuZmlsdGVyKHQpLmFwcGVuZFRvKGUuJHNsaWRlVHJhY2spLGUucmVpbml0KCkpfSxlLnByb3RvdHlwZS5mb2N1c0hhbmRsZXI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2UuJHNsaWRlci5vZmYoImZvY3VzLnNsaWNrIGJsdXIuc2xpY2siKS5vbigiZm9jdXMuc2xpY2sgYmx1ci5zbGljayIsIioiLChmdW5jdGlvbihuKXtuLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO3ZhciBpPXQodGhpcyk7c2V0VGltZW91dCgoZnVuY3Rpb24oKXtlLm9wdGlvbnMucGF1c2VPbkZvY3VzJiYoZS5mb2N1c3NlZD1pLmlzKCI6Zm9jdXMiKSxlLmF1dG9QbGF5KCkpfSksMCl9KSl9LGUucHJvdG90eXBlLmdldEN1cnJlbnQ9ZS5wcm90b3R5cGUuc2xpY2tDdXJyZW50U2xpZGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJyZW50U2xpZGV9LGUucHJvdG90eXBlLmdldERvdENvdW50PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPTAsbj0wLGk9MDtpZighMD09PXQub3B0aW9ucy5pbmZpbml0ZSlpZih0LnNsaWRlQ291bnQ8PXQub3B0aW9ucy5zbGlkZXNUb1Nob3cpKytpO2Vsc2UgZm9yKDtlPHQuc2xpZGVDb3VudDspKytpLGU9bit0Lm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwsbis9dC5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsPD10Lm9wdGlvbnMuc2xpZGVzVG9TaG93P3Qub3B0aW9ucy5zbGlkZXNUb1Njcm9sbDp0Lm9wdGlvbnMuc2xpZGVzVG9TaG93O2Vsc2UgaWYoITA9PT10Lm9wdGlvbnMuY2VudGVyTW9kZSlpPXQuc2xpZGVDb3VudDtlbHNlIGlmKHQub3B0aW9ucy5hc05hdkZvcilmb3IoO2U8dC5zbGlkZUNvdW50OykrK2ksZT1uK3Qub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCxuKz10Lm9wdGlvbnMuc2xpZGVzVG9TY3JvbGw8PXQub3B0aW9ucy5zbGlkZXNUb1Nob3c/dC5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsOnQub3B0aW9ucy5zbGlkZXNUb1Nob3c7ZWxzZSBpPTErTWF0aC5jZWlsKCh0LnNsaWRlQ291bnQtdC5vcHRpb25zLnNsaWRlc1RvU2hvdykvdC5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsKTtyZXR1cm4gaS0xfSxlLnByb3RvdHlwZS5nZXRMZWZ0PWZ1bmN0aW9uKHQpe3ZhciBlLG4saSxyLG89dGhpcyxhPTA7cmV0dXJuIG8uc2xpZGVPZmZzZXQ9MCxuPW8uJHNsaWRlcy5maXJzdCgpLm91dGVySGVpZ2h0KCEwKSwhMD09PW8ub3B0aW9ucy5pbmZpbml0ZT8oby5zbGlkZUNvdW50Pm8ub3B0aW9ucy5zbGlkZXNUb1Nob3cmJihvLnNsaWRlT2Zmc2V0PW8uc2xpZGVXaWR0aCpvLm9wdGlvbnMuc2xpZGVzVG9TaG93Ki0xLHI9LTEsITA9PT1vLm9wdGlvbnMudmVydGljYWwmJiEwPT09by5vcHRpb25zLmNlbnRlck1vZGUmJigyPT09by5vcHRpb25zLnNsaWRlc1RvU2hvdz9yPS0xLjU6MT09PW8ub3B0aW9ucy5zbGlkZXNUb1Nob3cmJihyPS0yKSksYT1uKm8ub3B0aW9ucy5zbGlkZXNUb1Nob3cqciksby5zbGlkZUNvdW50JW8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCE9MCYmdCtvLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGw+by5zbGlkZUNvdW50JiZvLnNsaWRlQ291bnQ+by5vcHRpb25zLnNsaWRlc1RvU2hvdyYmKHQ+by5zbGlkZUNvdW50PyhvLnNsaWRlT2Zmc2V0PShvLm9wdGlvbnMuc2xpZGVzVG9TaG93LSh0LW8uc2xpZGVDb3VudCkpKm8uc2xpZGVXaWR0aCotMSxhPShvLm9wdGlvbnMuc2xpZGVzVG9TaG93LSh0LW8uc2xpZGVDb3VudCkpKm4qLTEpOihvLnNsaWRlT2Zmc2V0PW8uc2xpZGVDb3VudCVvLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwqby5zbGlkZVdpZHRoKi0xLGE9by5zbGlkZUNvdW50JW8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCpuKi0xKSkpOnQrby5vcHRpb25zLnNsaWRlc1RvU2hvdz5vLnNsaWRlQ291bnQmJihvLnNsaWRlT2Zmc2V0PSh0K28ub3B0aW9ucy5zbGlkZXNUb1Nob3ctby5zbGlkZUNvdW50KSpvLnNsaWRlV2lkdGgsYT0odCtvLm9wdGlvbnMuc2xpZGVzVG9TaG93LW8uc2xpZGVDb3VudCkqbiksby5zbGlkZUNvdW50PD1vLm9wdGlvbnMuc2xpZGVzVG9TaG93JiYoby5zbGlkZU9mZnNldD0wLGE9MCksITA9PT1vLm9wdGlvbnMuY2VudGVyTW9kZSYmby5zbGlkZUNvdW50PD1vLm9wdGlvbnMuc2xpZGVzVG9TaG93P28uc2xpZGVPZmZzZXQ9by5zbGlkZVdpZHRoKk1hdGguZmxvb3Ioby5vcHRpb25zLnNsaWRlc1RvU2hvdykvMi1vLnNsaWRlV2lkdGgqby5zbGlkZUNvdW50LzI6ITA9PT1vLm9wdGlvbnMuY2VudGVyTW9kZSYmITA9PT1vLm9wdGlvbnMuaW5maW5pdGU/by5zbGlkZU9mZnNldCs9by5zbGlkZVdpZHRoKk1hdGguZmxvb3Ioby5vcHRpb25zLnNsaWRlc1RvU2hvdy8yKS1vLnNsaWRlV2lkdGg6ITA9PT1vLm9wdGlvbnMuY2VudGVyTW9kZSYmKG8uc2xpZGVPZmZzZXQ9MCxvLnNsaWRlT2Zmc2V0Kz1vLnNsaWRlV2lkdGgqTWF0aC5mbG9vcihvLm9wdGlvbnMuc2xpZGVzVG9TaG93LzIpKSxlPSExPT09by5vcHRpb25zLnZlcnRpY2FsP3Qqby5zbGlkZVdpZHRoKi0xK28uc2xpZGVPZmZzZXQ6dCpuKi0xK2EsITA9PT1vLm9wdGlvbnMudmFyaWFibGVXaWR0aCYmKGk9by5zbGlkZUNvdW50PD1vLm9wdGlvbnMuc2xpZGVzVG9TaG93fHwhMT09PW8ub3B0aW9ucy5pbmZpbml0ZT9vLiRzbGlkZVRyYWNrLmNoaWxkcmVuKCIuc2xpY2stc2xpZGUiKS5lcSh0KTpvLiRzbGlkZVRyYWNrLmNoaWxkcmVuKCIuc2xpY2stc2xpZGUiKS5lcSh0K28ub3B0aW9ucy5zbGlkZXNUb1Nob3cpLGU9ITA9PT1vLm9wdGlvbnMucnRsP2lbMF0/LTEqKG8uJHNsaWRlVHJhY2sud2lkdGgoKS1pWzBdLm9mZnNldExlZnQtaS53aWR0aCgpKTowOmlbMF0/LTEqaVswXS5vZmZzZXRMZWZ0OjAsITA9PT1vLm9wdGlvbnMuY2VudGVyTW9kZSYmKGk9by5zbGlkZUNvdW50PD1vLm9wdGlvbnMuc2xpZGVzVG9TaG93fHwhMT09PW8ub3B0aW9ucy5pbmZpbml0ZT9vLiRzbGlkZVRyYWNrLmNoaWxkcmVuKCIuc2xpY2stc2xpZGUiKS5lcSh0KTpvLiRzbGlkZVRyYWNrLmNoaWxkcmVuKCIuc2xpY2stc2xpZGUiKS5lcSh0K28ub3B0aW9ucy5zbGlkZXNUb1Nob3crMSksZT0hMD09PW8ub3B0aW9ucy5ydGw/aVswXT8tMSooby4kc2xpZGVUcmFjay53aWR0aCgpLWlbMF0ub2Zmc2V0TGVmdC1pLndpZHRoKCkpOjA6aVswXT8tMSppWzBdLm9mZnNldExlZnQ6MCxlKz0oby4kbGlzdC53aWR0aCgpLWkub3V0ZXJXaWR0aCgpKS8yKSksZX0sZS5wcm90b3R5cGUuZ2V0T3B0aW9uPWUucHJvdG90eXBlLnNsaWNrR2V0T3B0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm9wdGlvbnNbdF19LGUucHJvdG90eXBlLmdldE5hdmlnYWJsZUluZGV4ZXM9ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMsbj0wLGk9MCxyPVtdO2ZvcighMT09PWUub3B0aW9ucy5pbmZpbml0ZT90PWUuc2xpZGVDb3VudDoobj0tMSplLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwsaT0tMSplLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwsdD0yKmUuc2xpZGVDb3VudCk7bjx0OylyLnB1c2gobiksbj1pK2Uub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCxpKz1lLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGw8PWUub3B0aW9ucy5zbGlkZXNUb1Nob3c/ZS5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsOmUub3B0aW9ucy5zbGlkZXNUb1Nob3c7cmV0dXJuIHJ9LGUucHJvdG90eXBlLmdldFNsaWNrPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGUucHJvdG90eXBlLmdldFNsaWRlQ291bnQ9ZnVuY3Rpb24oKXt2YXIgZSxuLGk9dGhpcztyZXR1cm4gbj0hMD09PWkub3B0aW9ucy5jZW50ZXJNb2RlP2kuc2xpZGVXaWR0aCpNYXRoLmZsb29yKGkub3B0aW9ucy5zbGlkZXNUb1Nob3cvMik6MCwhMD09PWkub3B0aW9ucy5zd2lwZVRvU2xpZGU/KGkuJHNsaWRlVHJhY2suZmluZCgiLnNsaWNrLXNsaWRlIikuZWFjaCgoZnVuY3Rpb24ocixvKXtpZihvLm9mZnNldExlZnQtbit0KG8pLm91dGVyV2lkdGgoKS8yPi0xKmkuc3dpcGVMZWZ0KXJldHVybiBlPW8sITF9KSksTWF0aC5hYnModChlKS5hdHRyKCJkYXRhLXNsaWNrLWluZGV4IiktaS5jdXJyZW50U2xpZGUpfHwxKTppLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGx9LGUucHJvdG90eXBlLmdvVG89ZS5wcm90b3R5cGUuc2xpY2tHb1RvPWZ1bmN0aW9uKHQsZSl7dGhpcy5jaGFuZ2VTbGlkZSh7ZGF0YTp7bWVzc2FnZToiaW5kZXgiLGluZGV4OnBhcnNlSW50KHQpfX0sZSl9LGUucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oZSl7dmFyIG49dGhpczt0KG4uJHNsaWRlcikuaGFzQ2xhc3MoInNsaWNrLWluaXRpYWxpemVkIil8fCh0KG4uJHNsaWRlcikuYWRkQ2xhc3MoInNsaWNrLWluaXRpYWxpemVkIiksbi5idWlsZFJvd3MoKSxuLmJ1aWxkT3V0KCksbi5zZXRQcm9wcygpLG4uc3RhcnRMb2FkKCksbi5sb2FkU2xpZGVyKCksbi5pbml0aWFsaXplRXZlbnRzKCksbi51cGRhdGVBcnJvd3MoKSxuLnVwZGF0ZURvdHMoKSxuLmNoZWNrUmVzcG9uc2l2ZSghMCksbi5mb2N1c0hhbmRsZXIoKSksZSYmbi4kc2xpZGVyLnRyaWdnZXIoImluaXQiLFtuXSksITA9PT1uLm9wdGlvbnMuYWNjZXNzaWJpbGl0eSYmbi5pbml0QURBKCksbi5vcHRpb25zLmF1dG9wbGF5JiYobi5wYXVzZWQ9ITEsbi5hdXRvUGxheSgpKX0sZS5wcm90b3R5cGUuaW5pdEFEQT1mdW5jdGlvbigpe3ZhciBlPXRoaXMsbj1NYXRoLmNlaWwoZS5zbGlkZUNvdW50L2Uub3B0aW9ucy5zbGlkZXNUb1Nob3cpLGk9ZS5nZXROYXZpZ2FibGVJbmRleGVzKCkuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdD49MCYmdDxlLnNsaWRlQ291bnR9KSk7ZS4kc2xpZGVzLmFkZChlLiRzbGlkZVRyYWNrLmZpbmQoIi5zbGljay1jbG9uZWQiKSkuYXR0cih7ImFyaWEtaGlkZGVuIjoidHJ1ZSIsdGFiaW5kZXg6Ii0xIn0pLmZpbmQoImEsIGlucHV0LCBidXR0b24sIHNlbGVjdCIpLmF0dHIoe3RhYmluZGV4OiItMSJ9KSxudWxsIT09ZS4kZG90cyYmKGUuJHNsaWRlcy5ub3QoZS4kc2xpZGVUcmFjay5maW5kKCIuc2xpY2stY2xvbmVkIikpLmVhY2goKGZ1bmN0aW9uKG4pe3ZhciByPWkuaW5kZXhPZihuKTt0KHRoaXMpLmF0dHIoe3JvbGU6InRhYnBhbmVsIixpZDoic2xpY2stc2xpZGUiK2UuaW5zdGFuY2VVaWQrbix0YWJpbmRleDotMX0pLC0xIT09ciYmdCh0aGlzKS5hdHRyKHsiYXJpYS1kZXNjcmliZWRieSI6InNsaWNrLXNsaWRlLWNvbnRyb2wiK2UuaW5zdGFuY2VVaWQrcn0pfSkpLGUuJGRvdHMuYXR0cigicm9sZSIsInRhYmxpc3QiKS5maW5kKCJsaSIpLmVhY2goKGZ1bmN0aW9uKHIpe3ZhciBvPWlbcl07dCh0aGlzKS5hdHRyKHtyb2xlOiJwcmVzZW50YXRpb24ifSksdCh0aGlzKS5maW5kKCJidXR0b24iKS5maXJzdCgpLmF0dHIoe3JvbGU6InRhYiIsaWQ6InNsaWNrLXNsaWRlLWNvbnRyb2wiK2UuaW5zdGFuY2VVaWQrciwiYXJpYS1jb250cm9scyI6InNsaWNrLXNsaWRlIitlLmluc3RhbmNlVWlkK28sImFyaWEtbGFiZWwiOnIrMSsiIG9mICIrbiwiYXJpYS1zZWxlY3RlZCI6bnVsbCx0YWJpbmRleDoiLTEifSl9KSkuZXEoZS5jdXJyZW50U2xpZGUpLmZpbmQoImJ1dHRvbiIpLmF0dHIoeyJhcmlhLXNlbGVjdGVkIjoidHJ1ZSIsdGFiaW5kZXg6IjAifSkuZW5kKCkpO2Zvcih2YXIgcj1lLmN1cnJlbnRTbGlkZSxvPXIrZS5vcHRpb25zLnNsaWRlc1RvU2hvdztyPG87cisrKWUuJHNsaWRlcy5lcShyKS5hdHRyKCJ0YWJpbmRleCIsMCk7ZS5hY3RpdmF0ZUFEQSgpfSxlLnByb3RvdHlwZS5pbml0QXJyb3dFdmVudHM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzOyEwPT09dC5vcHRpb25zLmFycm93cyYmdC5zbGlkZUNvdW50PnQub3B0aW9ucy5zbGlkZXNUb1Nob3cmJih0LiRwcmV2QXJyb3cub2ZmKCJjbGljay5zbGljayIpLm9uKCJjbGljay5zbGljayIse21lc3NhZ2U6InByZXZpb3VzIn0sdC5jaGFuZ2VTbGlkZSksdC4kbmV4dEFycm93Lm9mZigiY2xpY2suc2xpY2siKS5vbigiY2xpY2suc2xpY2siLHttZXNzYWdlOiJuZXh0In0sdC5jaGFuZ2VTbGlkZSksITA9PT10Lm9wdGlvbnMuYWNjZXNzaWJpbGl0eSYmKHQuJHByZXZBcnJvdy5vbigia2V5ZG93bi5zbGljayIsdC5rZXlIYW5kbGVyKSx0LiRuZXh0QXJyb3cub24oImtleWRvd24uc2xpY2siLHQua2V5SGFuZGxlcikpKX0sZS5wcm90b3R5cGUuaW5pdERvdEV2ZW50cz1mdW5jdGlvbigpe3ZhciBlPXRoaXM7ITA9PT1lLm9wdGlvbnMuZG90cyYmKHQoImxpIixlLiRkb3RzKS5vbigiY2xpY2suc2xpY2siLHttZXNzYWdlOiJpbmRleCJ9LGUuY2hhbmdlU2xpZGUpLCEwPT09ZS5vcHRpb25zLmFjY2Vzc2liaWxpdHkmJmUuJGRvdHMub24oImtleWRvd24uc2xpY2siLGUua2V5SGFuZGxlcikpLCEwPT09ZS5vcHRpb25zLmRvdHMmJiEwPT09ZS5vcHRpb25zLnBhdXNlT25Eb3RzSG92ZXImJnQoImxpIixlLiRkb3RzKS5vbigibW91c2VlbnRlci5zbGljayIsdC5wcm94eShlLmludGVycnVwdCxlLCEwKSkub24oIm1vdXNlbGVhdmUuc2xpY2siLHQucHJveHkoZS5pbnRlcnJ1cHQsZSwhMSkpfSxlLnByb3RvdHlwZS5pbml0U2xpZGVFdmVudHM9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2Uub3B0aW9ucy5wYXVzZU9uSG92ZXImJihlLiRsaXN0Lm9uKCJtb3VzZWVudGVyLnNsaWNrIix0LnByb3h5KGUuaW50ZXJydXB0LGUsITApKSxlLiRsaXN0Lm9uKCJtb3VzZWxlYXZlLnNsaWNrIix0LnByb3h5KGUuaW50ZXJydXB0LGUsITEpKSl9LGUucHJvdG90eXBlLmluaXRpYWxpemVFdmVudHM9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2UuaW5pdEFycm93RXZlbnRzKCksZS5pbml0RG90RXZlbnRzKCksZS5pbml0U2xpZGVFdmVudHMoKSxlLiRsaXN0Lm9uKCJ0b3VjaHN0YXJ0LnNsaWNrIG1vdXNlZG93bi5zbGljayIse2FjdGlvbjoic3RhcnQifSxlLnN3aXBlSGFuZGxlciksZS4kbGlzdC5vbigidG91Y2htb3ZlLnNsaWNrIG1vdXNlbW92ZS5zbGljayIse2FjdGlvbjoibW92ZSJ9LGUuc3dpcGVIYW5kbGVyKSxlLiRsaXN0Lm9uKCJ0b3VjaGVuZC5zbGljayBtb3VzZXVwLnNsaWNrIix7YWN0aW9uOiJlbmQifSxlLnN3aXBlSGFuZGxlciksZS4kbGlzdC5vbigidG91Y2hjYW5jZWwuc2xpY2sgbW91c2VsZWF2ZS5zbGljayIse2FjdGlvbjoiZW5kIn0sZS5zd2lwZUhhbmRsZXIpLGUuJGxpc3Qub24oImNsaWNrLnNsaWNrIixlLmNsaWNrSGFuZGxlciksdChkb2N1bWVudCkub24oZS52aXNpYmlsaXR5Q2hhbmdlLHQucHJveHkoZS52aXNpYmlsaXR5LGUpKSwhMD09PWUub3B0aW9ucy5hY2Nlc3NpYmlsaXR5JiZlLiRsaXN0Lm9uKCJrZXlkb3duLnNsaWNrIixlLmtleUhhbmRsZXIpLCEwPT09ZS5vcHRpb25zLmZvY3VzT25TZWxlY3QmJnQoZS4kc2xpZGVUcmFjaykuY2hpbGRyZW4oKS5vbigiY2xpY2suc2xpY2siLGUuc2VsZWN0SGFuZGxlciksdCh3aW5kb3cpLm9uKCJvcmllbnRhdGlvbmNoYW5nZS5zbGljay5zbGljay0iK2UuaW5zdGFuY2VVaWQsdC5wcm94eShlLm9yaWVudGF0aW9uQ2hhbmdlLGUpKSx0KHdpbmRvdykub24oInJlc2l6ZS5zbGljay5zbGljay0iK2UuaW5zdGFuY2VVaWQsdC5wcm94eShlLnJlc2l6ZSxlKSksdCgiW2RyYWdnYWJsZSE9dHJ1ZV0iLGUuJHNsaWRlVHJhY2spLm9uKCJkcmFnc3RhcnQiLGUucHJldmVudERlZmF1bHQpLHQod2luZG93KS5vbigibG9hZC5zbGljay5zbGljay0iK2UuaW5zdGFuY2VVaWQsZS5zZXRQb3NpdGlvbiksdChlLnNldFBvc2l0aW9uKX0sZS5wcm90b3R5cGUuaW5pdFVJPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczshMD09PXQub3B0aW9ucy5hcnJvd3MmJnQuc2xpZGVDb3VudD50Lm9wdGlvbnMuc2xpZGVzVG9TaG93JiYodC4kcHJldkFycm93LnNob3coKSx0LiRuZXh0QXJyb3cuc2hvdygpKSwhMD09PXQub3B0aW9ucy5kb3RzJiZ0LnNsaWRlQ291bnQ+dC5vcHRpb25zLnNsaWRlc1RvU2hvdyYmdC4kZG90cy5zaG93KCl9LGUucHJvdG90eXBlLmtleUhhbmRsZXI9ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0LnRhcmdldC50YWdOYW1lLm1hdGNoKCJURVhUQVJFQXxJTlBVVHxTRUxFQ1QiKXx8KDM3PT09dC5rZXlDb2RlJiYhMD09PWUub3B0aW9ucy5hY2Nlc3NpYmlsaXR5P2UuY2hhbmdlU2xpZGUoe2RhdGE6e21lc3NhZ2U6ITA9PT1lLm9wdGlvbnMucnRsPyJuZXh0IjoicHJldmlvdXMifX0pOjM5PT09dC5rZXlDb2RlJiYhMD09PWUub3B0aW9ucy5hY2Nlc3NpYmlsaXR5JiZlLmNoYW5nZVNsaWRlKHtkYXRhOnttZXNzYWdlOiEwPT09ZS5vcHRpb25zLnJ0bD8icHJldmlvdXMiOiJuZXh0In19KSl9LGUucHJvdG90eXBlLmxhenlMb2FkPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXt0KCJpbWdbZGF0YS1sYXp5XSIsZSkuZWFjaCgoZnVuY3Rpb24oKXt2YXIgZT10KHRoaXMpLG49dCh0aGlzKS5hdHRyKCJkYXRhLWxhenkiKSxpPXQodGhpcykuYXR0cigiZGF0YS1zcmNzZXQiKSxyPXQodGhpcykuYXR0cigiZGF0YS1zaXplcyIpfHxvLiRzbGlkZXIuYXR0cigiZGF0YS1zaXplcyIpLGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIik7YS5vbmxvYWQ9ZnVuY3Rpb24oKXtlLmFuaW1hdGUoe29wYWNpdHk6MH0sMTAwLChmdW5jdGlvbigpe2kmJihlLmF0dHIoInNyY3NldCIsaSksciYmZS5hdHRyKCJzaXplcyIscikpLGUuYXR0cigic3JjIixuKS5hbmltYXRlKHtvcGFjaXR5OjF9LDIwMCwoZnVuY3Rpb24oKXtlLnJlbW92ZUF0dHIoImRhdGEtbGF6eSBkYXRhLXNyY3NldCBkYXRhLXNpemVzIikucmVtb3ZlQ2xhc3MoInNsaWNrLWxvYWRpbmciKX0pKSxvLiRzbGlkZXIudHJpZ2dlcigibGF6eUxvYWRlZCIsW28sZSxuXSl9KSl9LGEub25lcnJvcj1mdW5jdGlvbigpe2UucmVtb3ZlQXR0cigiZGF0YS1sYXp5IikucmVtb3ZlQ2xhc3MoInNsaWNrLWxvYWRpbmciKS5hZGRDbGFzcygic2xpY2stbGF6eWxvYWQtZXJyb3IiKSxvLiRzbGlkZXIudHJpZ2dlcigibGF6eUxvYWRFcnJvciIsW28sZSxuXSl9LGEuc3JjPW59KSl9dmFyIG4saSxyLG89dGhpcztpZighMD09PW8ub3B0aW9ucy5jZW50ZXJNb2RlPyEwPT09by5vcHRpb25zLmluZmluaXRlP3I9KGk9by5jdXJyZW50U2xpZGUrKG8ub3B0aW9ucy5zbGlkZXNUb1Nob3cvMisxKSkrby5vcHRpb25zLnNsaWRlc1RvU2hvdysyOihpPU1hdGgubWF4KDAsby5jdXJyZW50U2xpZGUtKG8ub3B0aW9ucy5zbGlkZXNUb1Nob3cvMisxKSkscj1vLm9wdGlvbnMuc2xpZGVzVG9TaG93LzIrMSsyK28uY3VycmVudFNsaWRlKTooaT1vLm9wdGlvbnMuaW5maW5pdGU/by5vcHRpb25zLnNsaWRlc1RvU2hvdytvLmN1cnJlbnRTbGlkZTpvLmN1cnJlbnRTbGlkZSxyPU1hdGguY2VpbChpK28ub3B0aW9ucy5zbGlkZXNUb1Nob3cpLCEwPT09by5vcHRpb25zLmZhZGUmJihpPjAmJmktLSxyPD1vLnNsaWRlQ291bnQmJnIrKykpLG49by4kc2xpZGVyLmZpbmQoIi5zbGljay1zbGlkZSIpLnNsaWNlKGksciksImFudGljaXBhdGVkIj09PW8ub3B0aW9ucy5sYXp5TG9hZClmb3IodmFyIGE9aS0xLHM9cixsPW8uJHNsaWRlci5maW5kKCIuc2xpY2stc2xpZGUiKSxjPTA7YzxvLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGw7YysrKWE8MCYmKGE9by5zbGlkZUNvdW50LTEpLG49KG49bi5hZGQobC5lcShhKSkpLmFkZChsLmVxKHMpKSxhLS0scysrO2Uobiksby5zbGlkZUNvdW50PD1vLm9wdGlvbnMuc2xpZGVzVG9TaG93P2Uoby4kc2xpZGVyLmZpbmQoIi5zbGljay1zbGlkZSIpKTpvLmN1cnJlbnRTbGlkZT49by5zbGlkZUNvdW50LW8ub3B0aW9ucy5zbGlkZXNUb1Nob3c/ZShvLiRzbGlkZXIuZmluZCgiLnNsaWNrLWNsb25lZCIpLnNsaWNlKDAsby5vcHRpb25zLnNsaWRlc1RvU2hvdykpOjA9PT1vLmN1cnJlbnRTbGlkZSYmZShvLiRzbGlkZXIuZmluZCgiLnNsaWNrLWNsb25lZCIpLnNsaWNlKC0xKm8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpKX0sZS5wcm90b3R5cGUubG9hZFNsaWRlcj1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dC5zZXRQb3NpdGlvbigpLHQuJHNsaWRlVHJhY2suY3NzKHtvcGFjaXR5OjF9KSx0LiRzbGlkZXIucmVtb3ZlQ2xhc3MoInNsaWNrLWxvYWRpbmciKSx0LmluaXRVSSgpLCJwcm9ncmVzc2l2ZSI9PT10Lm9wdGlvbnMubGF6eUxvYWQmJnQucHJvZ3Jlc3NpdmVMYXp5TG9hZCgpfSxlLnByb3RvdHlwZS5uZXh0PWUucHJvdG90eXBlLnNsaWNrTmV4dD1mdW5jdGlvbigpe3RoaXMuY2hhbmdlU2xpZGUoe2RhdGE6e21lc3NhZ2U6Im5leHQifX0pfSxlLnByb3RvdHlwZS5vcmllbnRhdGlvbkNoYW5nZT1mdW5jdGlvbigpe3RoaXMuY2hlY2tSZXNwb25zaXZlKCksdGhpcy5zZXRQb3NpdGlvbigpfSxlLnByb3RvdHlwZS5wYXVzZT1lLnByb3RvdHlwZS5zbGlja1BhdXNlPWZ1bmN0aW9uKCl7dGhpcy5hdXRvUGxheUNsZWFyKCksdGhpcy5wYXVzZWQ9ITB9LGUucHJvdG90eXBlLnBsYXk9ZS5wcm90b3R5cGUuc2xpY2tQbGF5PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0LmF1dG9QbGF5KCksdC5vcHRpb25zLmF1dG9wbGF5PSEwLHQucGF1c2VkPSExLHQuZm9jdXNzZWQ9ITEsdC5pbnRlcnJ1cHRlZD0hMX0sZS5wcm90b3R5cGUucG9zdFNsaWRlPWZ1bmN0aW9uKGUpe3ZhciBuPXRoaXM7bi51bnNsaWNrZWR8fChuLiRzbGlkZXIudHJpZ2dlcigiYWZ0ZXJDaGFuZ2UiLFtuLGVdKSxuLmFuaW1hdGluZz0hMSxuLnNsaWRlQ291bnQ+bi5vcHRpb25zLnNsaWRlc1RvU2hvdyYmbi5zZXRQb3NpdGlvbigpLG4uc3dpcGVMZWZ0PW51bGwsbi5vcHRpb25zLmF1dG9wbGF5JiZuLmF1dG9QbGF5KCksITA9PT1uLm9wdGlvbnMuYWNjZXNzaWJpbGl0eSYmKG4uaW5pdEFEQSgpLG4ub3B0aW9ucy5mb2N1c09uQ2hhbmdlJiZ0KG4uJHNsaWRlcy5nZXQobi5jdXJyZW50U2xpZGUpKS5hdHRyKCJ0YWJpbmRleCIsMCkuZm9jdXMoKSkpfSxlLnByb3RvdHlwZS5wcmV2PWUucHJvdG90eXBlLnNsaWNrUHJldj1mdW5jdGlvbigpe3RoaXMuY2hhbmdlU2xpZGUoe2RhdGE6e21lc3NhZ2U6InByZXZpb3VzIn19KX0sZS5wcm90b3R5cGUucHJldmVudERlZmF1bHQ9ZnVuY3Rpb24odCl7dC5wcmV2ZW50RGVmYXVsdCgpfSxlLnByb3RvdHlwZS5wcm9ncmVzc2l2ZUxhenlMb2FkPWZ1bmN0aW9uKGUpe2U9ZXx8MTt2YXIgbixpLHIsbyxhLHM9dGhpcyxsPXQoImltZ1tkYXRhLWxhenldIixzLiRzbGlkZXIpO2wubGVuZ3RoPyhuPWwuZmlyc3QoKSxpPW4uYXR0cigiZGF0YS1sYXp5Iikscj1uLmF0dHIoImRhdGEtc3Jjc2V0Iiksbz1uLmF0dHIoImRhdGEtc2l6ZXMiKXx8cy4kc2xpZGVyLmF0dHIoImRhdGEtc2l6ZXMiKSwoYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKSkub25sb2FkPWZ1bmN0aW9uKCl7ciYmKG4uYXR0cigic3Jjc2V0IixyKSxvJiZuLmF0dHIoInNpemVzIixvKSksbi5hdHRyKCJzcmMiLGkpLnJlbW92ZUF0dHIoImRhdGEtbGF6eSBkYXRhLXNyY3NldCBkYXRhLXNpemVzIikucmVtb3ZlQ2xhc3MoInNsaWNrLWxvYWRpbmciKSwhMD09PXMub3B0aW9ucy5hZGFwdGl2ZUhlaWdodCYmcy5zZXRQb3NpdGlvbigpLHMuJHNsaWRlci50cmlnZ2VyKCJsYXp5TG9hZGVkIixbcyxuLGldKSxzLnByb2dyZXNzaXZlTGF6eUxvYWQoKX0sYS5vbmVycm9yPWZ1bmN0aW9uKCl7ZTwzP3NldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cy5wcm9ncmVzc2l2ZUxhenlMb2FkKGUrMSl9KSw1MDApOihuLnJlbW92ZUF0dHIoImRhdGEtbGF6eSIpLnJlbW92ZUNsYXNzKCJzbGljay1sb2FkaW5nIikuYWRkQ2xhc3MoInNsaWNrLWxhenlsb2FkLWVycm9yIikscy4kc2xpZGVyLnRyaWdnZXIoImxhenlMb2FkRXJyb3IiLFtzLG4saV0pLHMucHJvZ3Jlc3NpdmVMYXp5TG9hZCgpKX0sYS5zcmM9aSk6cy4kc2xpZGVyLnRyaWdnZXIoImFsbEltYWdlc0xvYWRlZCIsW3NdKX0sZS5wcm90b3R5cGUucmVmcmVzaD1mdW5jdGlvbihlKXt2YXIgbixpLHI9dGhpcztpPXIuc2xpZGVDb3VudC1yLm9wdGlvbnMuc2xpZGVzVG9TaG93LCFyLm9wdGlvbnMuaW5maW5pdGUmJnIuY3VycmVudFNsaWRlPmkmJihyLmN1cnJlbnRTbGlkZT1pKSxyLnNsaWRlQ291bnQ8PXIub3B0aW9ucy5zbGlkZXNUb1Nob3cmJihyLmN1cnJlbnRTbGlkZT0wKSxuPXIuY3VycmVudFNsaWRlLHIuZGVzdHJveSghMCksdC5leHRlbmQocixyLmluaXRpYWxzLHtjdXJyZW50U2xpZGU6bn0pLHIuaW5pdCgpLGV8fHIuY2hhbmdlU2xpZGUoe2RhdGE6e21lc3NhZ2U6ImluZGV4IixpbmRleDpufX0sITEpfSxlLnByb3RvdHlwZS5yZWdpc3RlckJyZWFrcG9pbnRzPWZ1bmN0aW9uKCl7dmFyIGUsbixpLHI9dGhpcyxvPXIub3B0aW9ucy5yZXNwb25zaXZlfHxudWxsO2lmKCJhcnJheSI9PT10LnR5cGUobykmJm8ubGVuZ3RoKXtmb3IoZSBpbiByLnJlc3BvbmRUbz1yLm9wdGlvbnMucmVzcG9uZFRvfHwid2luZG93IixvKWlmKGk9ci5icmVha3BvaW50cy5sZW5ndGgtMSxvLmhhc093blByb3BlcnR5KGUpKXtmb3Iobj1vW2VdLmJyZWFrcG9pbnQ7aT49MDspci5icmVha3BvaW50c1tpXSYmci5icmVha3BvaW50c1tpXT09PW4mJnIuYnJlYWtwb2ludHMuc3BsaWNlKGksMSksaS0tO3IuYnJlYWtwb2ludHMucHVzaChuKSxyLmJyZWFrcG9pbnRTZXR0aW5nc1tuXT1vW2VdLnNldHRpbmdzfXIuYnJlYWtwb2ludHMuc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gci5vcHRpb25zLm1vYmlsZUZpcnN0P3QtZTplLXR9KSl9fSxlLnByb3RvdHlwZS5yZWluaXQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2UuJHNsaWRlcz1lLiRzbGlkZVRyYWNrLmNoaWxkcmVuKGUub3B0aW9ucy5zbGlkZSkuYWRkQ2xhc3MoInNsaWNrLXNsaWRlIiksZS5zbGlkZUNvdW50PWUuJHNsaWRlcy5sZW5ndGgsZS5jdXJyZW50U2xpZGU+PWUuc2xpZGVDb3VudCYmMCE9PWUuY3VycmVudFNsaWRlJiYoZS5jdXJyZW50U2xpZGU9ZS5jdXJyZW50U2xpZGUtZS5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsKSxlLnNsaWRlQ291bnQ8PWUub3B0aW9ucy5zbGlkZXNUb1Nob3cmJihlLmN1cnJlbnRTbGlkZT0wKSxlLnJlZ2lzdGVyQnJlYWtwb2ludHMoKSxlLnNldFByb3BzKCksZS5zZXR1cEluZmluaXRlKCksZS5idWlsZEFycm93cygpLGUudXBkYXRlQXJyb3dzKCksZS5pbml0QXJyb3dFdmVudHMoKSxlLmJ1aWxkRG90cygpLGUudXBkYXRlRG90cygpLGUuaW5pdERvdEV2ZW50cygpLGUuY2xlYW5VcFNsaWRlRXZlbnRzKCksZS5pbml0U2xpZGVFdmVudHMoKSxlLmNoZWNrUmVzcG9uc2l2ZSghMSwhMCksITA9PT1lLm9wdGlvbnMuZm9jdXNPblNlbGVjdCYmdChlLiRzbGlkZVRyYWNrKS5jaGlsZHJlbigpLm9uKCJjbGljay5zbGljayIsZS5zZWxlY3RIYW5kbGVyKSxlLnNldFNsaWRlQ2xhc3NlcygibnVtYmVyIj09dHlwZW9mIGUuY3VycmVudFNsaWRlP2UuY3VycmVudFNsaWRlOjApLGUuc2V0UG9zaXRpb24oKSxlLmZvY3VzSGFuZGxlcigpLGUucGF1c2VkPSFlLm9wdGlvbnMuYXV0b3BsYXksZS5hdXRvUGxheSgpLGUuJHNsaWRlci50cmlnZ2VyKCJyZUluaXQiLFtlXSl9LGUucHJvdG90eXBlLnJlc2l6ZT1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dCh3aW5kb3cpLndpZHRoKCkhPT1lLndpbmRvd1dpZHRoJiYoY2xlYXJUaW1lb3V0KGUud2luZG93RGVsYXkpLGUud2luZG93RGVsYXk9d2luZG93LnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7ZS53aW5kb3dXaWR0aD10KHdpbmRvdykud2lkdGgoKSxlLmNoZWNrUmVzcG9uc2l2ZSgpLGUudW5zbGlja2VkfHxlLnNldFBvc2l0aW9uKCl9KSw1MCkpfSxlLnByb3RvdHlwZS5yZW1vdmVTbGlkZT1lLnByb3RvdHlwZS5zbGlja1JlbW92ZT1mdW5jdGlvbih0LGUsbil7dmFyIGk9dGhpcztpZih0PSJib29sZWFuIj09dHlwZW9mIHQ/ITA9PT0oZT10KT8wOmkuc2xpZGVDb3VudC0xOiEwPT09ZT8tLXQ6dCxpLnNsaWRlQ291bnQ8MXx8dDwwfHx0Pmkuc2xpZGVDb3VudC0xKXJldHVybiExO2kudW5sb2FkKCksITA9PT1uP2kuJHNsaWRlVHJhY2suY2hpbGRyZW4oKS5yZW1vdmUoKTppLiRzbGlkZVRyYWNrLmNoaWxkcmVuKHRoaXMub3B0aW9ucy5zbGlkZSkuZXEodCkucmVtb3ZlKCksaS4kc2xpZGVzPWkuJHNsaWRlVHJhY2suY2hpbGRyZW4odGhpcy5vcHRpb25zLnNsaWRlKSxpLiRzbGlkZVRyYWNrLmNoaWxkcmVuKHRoaXMub3B0aW9ucy5zbGlkZSkuZGV0YWNoKCksaS4kc2xpZGVUcmFjay5hcHBlbmQoaS4kc2xpZGVzKSxpLiRzbGlkZXNDYWNoZT1pLiRzbGlkZXMsaS5yZWluaXQoKX0sZS5wcm90b3R5cGUuc2V0Q1NTPWZ1bmN0aW9uKHQpe3ZhciBlLG4saT10aGlzLHI9e307ITA9PT1pLm9wdGlvbnMucnRsJiYodD0tdCksZT0ibGVmdCI9PWkucG9zaXRpb25Qcm9wP01hdGguY2VpbCh0KSsicHgiOiIwcHgiLG49InRvcCI9PWkucG9zaXRpb25Qcm9wP01hdGguY2VpbCh0KSsicHgiOiIwcHgiLHJbaS5wb3NpdGlvblByb3BdPXQsITE9PT1pLnRyYW5zZm9ybXNFbmFibGVkP2kuJHNsaWRlVHJhY2suY3NzKHIpOihyPXt9LCExPT09aS5jc3NUcmFuc2l0aW9ucz8ocltpLmFuaW1UeXBlXT0idHJhbnNsYXRlKCIrZSsiLCAiK24rIikiLGkuJHNsaWRlVHJhY2suY3NzKHIpKToocltpLmFuaW1UeXBlXT0idHJhbnNsYXRlM2QoIitlKyIsICIrbisiLCAwcHgpIixpLiRzbGlkZVRyYWNrLmNzcyhyKSkpfSxlLnByb3RvdHlwZS5zZXREaW1lbnNpb25zPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczshMT09PXQub3B0aW9ucy52ZXJ0aWNhbD8hMD09PXQub3B0aW9ucy5jZW50ZXJNb2RlJiZ0LiRsaXN0LmNzcyh7cGFkZGluZzoiMHB4ICIrdC5vcHRpb25zLmNlbnRlclBhZGRpbmd9KToodC4kbGlzdC5oZWlnaHQodC4kc2xpZGVzLmZpcnN0KCkub3V0ZXJIZWlnaHQoITApKnQub3B0aW9ucy5zbGlkZXNUb1Nob3cpLCEwPT09dC5vcHRpb25zLmNlbnRlck1vZGUmJnQuJGxpc3QuY3NzKHtwYWRkaW5nOnQub3B0aW9ucy5jZW50ZXJQYWRkaW5nKyIgMHB4In0pKSx0Lmxpc3RXaWR0aD10LiRsaXN0LndpZHRoKCksdC5saXN0SGVpZ2h0PXQuJGxpc3QuaGVpZ2h0KCksITE9PT10Lm9wdGlvbnMudmVydGljYWwmJiExPT09dC5vcHRpb25zLnZhcmlhYmxlV2lkdGg/KHQuc2xpZGVXaWR0aD1NYXRoLmNlaWwodC5saXN0V2lkdGgvdC5vcHRpb25zLnNsaWRlc1RvU2hvdyksdC4kc2xpZGVUcmFjay53aWR0aChNYXRoLmNlaWwodC5zbGlkZVdpZHRoKnQuJHNsaWRlVHJhY2suY2hpbGRyZW4oIi5zbGljay1zbGlkZSIpLmxlbmd0aCkpKTohMD09PXQub3B0aW9ucy52YXJpYWJsZVdpZHRoP3QuJHNsaWRlVHJhY2sud2lkdGgoNWUzKnQuc2xpZGVDb3VudCk6KHQuc2xpZGVXaWR0aD1NYXRoLmNlaWwodC5saXN0V2lkdGgpLHQuJHNsaWRlVHJhY2suaGVpZ2h0KE1hdGguY2VpbCh0LiRzbGlkZXMuZmlyc3QoKS5vdXRlckhlaWdodCghMCkqdC4kc2xpZGVUcmFjay5jaGlsZHJlbigiLnNsaWNrLXNsaWRlIikubGVuZ3RoKSkpO3ZhciBlPXQuJHNsaWRlcy5maXJzdCgpLm91dGVyV2lkdGgoITApLXQuJHNsaWRlcy5maXJzdCgpLndpZHRoKCk7ITE9PT10Lm9wdGlvbnMudmFyaWFibGVXaWR0aCYmdC4kc2xpZGVUcmFjay5jaGlsZHJlbigiLnNsaWNrLXNsaWRlIikud2lkdGgodC5zbGlkZVdpZHRoLWUpfSxlLnByb3RvdHlwZS5zZXRGYWRlPWZ1bmN0aW9uKCl7dmFyIGUsbj10aGlzO24uJHNsaWRlcy5lYWNoKChmdW5jdGlvbihpLHIpe2U9bi5zbGlkZVdpZHRoKmkqLTEsITA9PT1uLm9wdGlvbnMucnRsP3QocikuY3NzKHtwb3NpdGlvbjoicmVsYXRpdmUiLHJpZ2h0OmUsdG9wOjAsekluZGV4Om4ub3B0aW9ucy56SW5kZXgtMixvcGFjaXR5OjB9KTp0KHIpLmNzcyh7cG9zaXRpb246InJlbGF0aXZlIixsZWZ0OmUsdG9wOjAsekluZGV4Om4ub3B0aW9ucy56SW5kZXgtMixvcGFjaXR5OjB9KX0pKSxuLiRzbGlkZXMuZXEobi5jdXJyZW50U2xpZGUpLmNzcyh7ekluZGV4Om4ub3B0aW9ucy56SW5kZXgtMSxvcGFjaXR5OjF9KX0sZS5wcm90b3R5cGUuc2V0SGVpZ2h0PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztpZigxPT09dC5vcHRpb25zLnNsaWRlc1RvU2hvdyYmITA9PT10Lm9wdGlvbnMuYWRhcHRpdmVIZWlnaHQmJiExPT09dC5vcHRpb25zLnZlcnRpY2FsKXt2YXIgZT10LiRzbGlkZXMuZXEodC5jdXJyZW50U2xpZGUpLm91dGVySGVpZ2h0KCEwKTt0LiRsaXN0LmNzcygiaGVpZ2h0IixlKX19LGUucHJvdG90eXBlLnNldE9wdGlvbj1lLnByb3RvdHlwZS5zbGlja1NldE9wdGlvbj1mdW5jdGlvbigpe3ZhciBlLG4saSxyLG8sYT10aGlzLHM9ITE7aWYoIm9iamVjdCI9PT10LnR5cGUoYXJndW1lbnRzWzBdKT8oaT1hcmd1bWVudHNbMF0scz1hcmd1bWVudHNbMV0sbz0ibXVsdGlwbGUiKToic3RyaW5nIj09PXQudHlwZShhcmd1bWVudHNbMF0pJiYoaT1hcmd1bWVudHNbMF0scj1hcmd1bWVudHNbMV0scz1hcmd1bWVudHNbMl0sInJlc3BvbnNpdmUiPT09YXJndW1lbnRzWzBdJiYiYXJyYXkiPT09dC50eXBlKGFyZ3VtZW50c1sxXSk/bz0icmVzcG9uc2l2ZSI6dm9pZCAwIT09YXJndW1lbnRzWzFdJiYobz0ic2luZ2xlIikpLCJzaW5nbGUiPT09bylhLm9wdGlvbnNbaV09cjtlbHNlIGlmKCJtdWx0aXBsZSI9PT1vKXQuZWFjaChpLChmdW5jdGlvbih0LGUpe2Eub3B0aW9uc1t0XT1lfSkpO2Vsc2UgaWYoInJlc3BvbnNpdmUiPT09bylmb3IobiBpbiByKWlmKCJhcnJheSIhPT10LnR5cGUoYS5vcHRpb25zLnJlc3BvbnNpdmUpKWEub3B0aW9ucy5yZXNwb25zaXZlPVtyW25dXTtlbHNle2ZvcihlPWEub3B0aW9ucy5yZXNwb25zaXZlLmxlbmd0aC0xO2U+PTA7KWEub3B0aW9ucy5yZXNwb25zaXZlW2VdLmJyZWFrcG9pbnQ9PT1yW25dLmJyZWFrcG9pbnQmJmEub3B0aW9ucy5yZXNwb25zaXZlLnNwbGljZShlLDEpLGUtLTthLm9wdGlvbnMucmVzcG9uc2l2ZS5wdXNoKHJbbl0pfXMmJihhLnVubG9hZCgpLGEucmVpbml0KCkpfSxlLnByb3RvdHlwZS5zZXRQb3NpdGlvbj1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dC5zZXREaW1lbnNpb25zKCksdC5zZXRIZWlnaHQoKSwhMT09PXQub3B0aW9ucy5mYWRlP3Quc2V0Q1NTKHQuZ2V0TGVmdCh0LmN1cnJlbnRTbGlkZSkpOnQuc2V0RmFkZSgpLHQuJHNsaWRlci50cmlnZ2VyKCJzZXRQb3NpdGlvbiIsW3RdKX0sZS5wcm90b3R5cGUuc2V0UHJvcHM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9ZG9jdW1lbnQuYm9keS5zdHlsZTt0LnBvc2l0aW9uUHJvcD0hMD09PXQub3B0aW9ucy52ZXJ0aWNhbD8idG9wIjoibGVmdCIsInRvcCI9PT10LnBvc2l0aW9uUHJvcD90LiRzbGlkZXIuYWRkQ2xhc3MoInNsaWNrLXZlcnRpY2FsIik6dC4kc2xpZGVyLnJlbW92ZUNsYXNzKCJzbGljay12ZXJ0aWNhbCIpLHZvaWQgMD09PWUuV2Via2l0VHJhbnNpdGlvbiYmdm9pZCAwPT09ZS5Nb3pUcmFuc2l0aW9uJiZ2b2lkIDA9PT1lLm1zVHJhbnNpdGlvbnx8ITA9PT10Lm9wdGlvbnMudXNlQ1NTJiYodC5jc3NUcmFuc2l0aW9ucz0hMCksdC5vcHRpb25zLmZhZGUmJigibnVtYmVyIj09dHlwZW9mIHQub3B0aW9ucy56SW5kZXg/dC5vcHRpb25zLnpJbmRleDwzJiYodC5vcHRpb25zLnpJbmRleD0zKTp0Lm9wdGlvbnMuekluZGV4PXQuZGVmYXVsdHMuekluZGV4KSx2b2lkIDAhPT1lLk9UcmFuc2Zvcm0mJih0LmFuaW1UeXBlPSJPVHJhbnNmb3JtIix0LnRyYW5zZm9ybVR5cGU9Ii1vLXRyYW5zZm9ybSIsdC50cmFuc2l0aW9uVHlwZT0iT1RyYW5zaXRpb24iLHZvaWQgMD09PWUucGVyc3BlY3RpdmVQcm9wZXJ0eSYmdm9pZCAwPT09ZS53ZWJraXRQZXJzcGVjdGl2ZSYmKHQuYW5pbVR5cGU9ITEpKSx2b2lkIDAhPT1lLk1velRyYW5zZm9ybSYmKHQuYW5pbVR5cGU9Ik1velRyYW5zZm9ybSIsdC50cmFuc2Zvcm1UeXBlPSItbW96LXRyYW5zZm9ybSIsdC50cmFuc2l0aW9uVHlwZT0iTW96VHJhbnNpdGlvbiIsdm9pZCAwPT09ZS5wZXJzcGVjdGl2ZVByb3BlcnR5JiZ2b2lkIDA9PT1lLk1velBlcnNwZWN0aXZlJiYodC5hbmltVHlwZT0hMSkpLHZvaWQgMCE9PWUud2Via2l0VHJhbnNmb3JtJiYodC5hbmltVHlwZT0id2Via2l0VHJhbnNmb3JtIix0LnRyYW5zZm9ybVR5cGU9Ii13ZWJraXQtdHJhbnNmb3JtIix0LnRyYW5zaXRpb25UeXBlPSJ3ZWJraXRUcmFuc2l0aW9uIix2b2lkIDA9PT1lLnBlcnNwZWN0aXZlUHJvcGVydHkmJnZvaWQgMD09PWUud2Via2l0UGVyc3BlY3RpdmUmJih0LmFuaW1UeXBlPSExKSksdm9pZCAwIT09ZS5tc1RyYW5zZm9ybSYmKHQuYW5pbVR5cGU9Im1zVHJhbnNmb3JtIix0LnRyYW5zZm9ybVR5cGU9Ii1tcy10cmFuc2Zvcm0iLHQudHJhbnNpdGlvblR5cGU9Im1zVHJhbnNpdGlvbiIsdm9pZCAwPT09ZS5tc1RyYW5zZm9ybSYmKHQuYW5pbVR5cGU9ITEpKSx2b2lkIDAhPT1lLnRyYW5zZm9ybSYmITEhPT10LmFuaW1UeXBlJiYodC5hbmltVHlwZT0idHJhbnNmb3JtIix0LnRyYW5zZm9ybVR5cGU9InRyYW5zZm9ybSIsdC50cmFuc2l0aW9uVHlwZT0idHJhbnNpdGlvbiIpLHQudHJhbnNmb3Jtc0VuYWJsZWQ9dC5vcHRpb25zLnVzZVRyYW5zZm9ybSYmbnVsbCE9PXQuYW5pbVR5cGUmJiExIT09dC5hbmltVHlwZX0sZS5wcm90b3R5cGUuc2V0U2xpZGVDbGFzc2VzPWZ1bmN0aW9uKHQpe3ZhciBlLG4saSxyLG89dGhpcztpZihuPW8uJHNsaWRlci5maW5kKCIuc2xpY2stc2xpZGUiKS5yZW1vdmVDbGFzcygic2xpY2stYWN0aXZlIHNsaWNrLWNlbnRlciBzbGljay1jdXJyZW50IikuYXR0cigiYXJpYS1oaWRkZW4iLCJ0cnVlIiksby4kc2xpZGVzLmVxKHQpLmFkZENsYXNzKCJzbGljay1jdXJyZW50IiksITA9PT1vLm9wdGlvbnMuY2VudGVyTW9kZSl7dmFyIGE9by5vcHRpb25zLnNsaWRlc1RvU2hvdyUyPT0wPzE6MDtlPU1hdGguZmxvb3Ioby5vcHRpb25zLnNsaWRlc1RvU2hvdy8yKSwhMD09PW8ub3B0aW9ucy5pbmZpbml0ZSYmKHQ+PWUmJnQ8PW8uc2xpZGVDb3VudC0xLWU/by4kc2xpZGVzLnNsaWNlKHQtZSthLHQrZSsxKS5hZGRDbGFzcygic2xpY2stYWN0aXZlIikuYXR0cigiYXJpYS1oaWRkZW4iLCJmYWxzZSIpOihpPW8ub3B0aW9ucy5zbGlkZXNUb1Nob3crdCxuLnNsaWNlKGktZSsxK2EsaStlKzIpLmFkZENsYXNzKCJzbGljay1hY3RpdmUiKS5hdHRyKCJhcmlhLWhpZGRlbiIsImZhbHNlIikpLDA9PT10P24uZXEobi5sZW5ndGgtMS1vLm9wdGlvbnMuc2xpZGVzVG9TaG93KS5hZGRDbGFzcygic2xpY2stY2VudGVyIik6dD09PW8uc2xpZGVDb3VudC0xJiZuLmVxKG8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpLmFkZENsYXNzKCJzbGljay1jZW50ZXIiKSksby4kc2xpZGVzLmVxKHQpLmFkZENsYXNzKCJzbGljay1jZW50ZXIiKX1lbHNlIHQ+PTAmJnQ8PW8uc2xpZGVDb3VudC1vLm9wdGlvbnMuc2xpZGVzVG9TaG93P28uJHNsaWRlcy5zbGljZSh0LHQrby5vcHRpb25zLnNsaWRlc1RvU2hvdykuYWRkQ2xhc3MoInNsaWNrLWFjdGl2ZSIpLmF0dHIoImFyaWEtaGlkZGVuIiwiZmFsc2UiKTpuLmxlbmd0aDw9by5vcHRpb25zLnNsaWRlc1RvU2hvdz9uLmFkZENsYXNzKCJzbGljay1hY3RpdmUiKS5hdHRyKCJhcmlhLWhpZGRlbiIsImZhbHNlIik6KHI9by5zbGlkZUNvdW50JW8ub3B0aW9ucy5zbGlkZXNUb1Nob3csaT0hMD09PW8ub3B0aW9ucy5pbmZpbml0ZT9vLm9wdGlvbnMuc2xpZGVzVG9TaG93K3Q6dCxvLm9wdGlvbnMuc2xpZGVzVG9TaG93PT1vLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwmJm8uc2xpZGVDb3VudC10PG8ub3B0aW9ucy5zbGlkZXNUb1Nob3c/bi5zbGljZShpLShvLm9wdGlvbnMuc2xpZGVzVG9TaG93LXIpLGkrcikuYWRkQ2xhc3MoInNsaWNrLWFjdGl2ZSIpLmF0dHIoImFyaWEtaGlkZGVuIiwiZmFsc2UiKTpuLnNsaWNlKGksaStvLm9wdGlvbnMuc2xpZGVzVG9TaG93KS5hZGRDbGFzcygic2xpY2stYWN0aXZlIikuYXR0cigiYXJpYS1oaWRkZW4iLCJmYWxzZSIpKTsib25kZW1hbmQiIT09by5vcHRpb25zLmxhenlMb2FkJiYiYW50aWNpcGF0ZWQiIT09by5vcHRpb25zLmxhenlMb2FkfHxvLmxhenlMb2FkKCl9LGUucHJvdG90eXBlLnNldHVwSW5maW5pdGU9ZnVuY3Rpb24oKXt2YXIgZSxuLGkscj10aGlzO2lmKCEwPT09ci5vcHRpb25zLmZhZGUmJihyLm9wdGlvbnMuY2VudGVyTW9kZT0hMSksITA9PT1yLm9wdGlvbnMuaW5maW5pdGUmJiExPT09ci5vcHRpb25zLmZhZGUmJihuPW51bGwsci5zbGlkZUNvdW50PnIub3B0aW9ucy5zbGlkZXNUb1Nob3cpKXtmb3IoaT0hMD09PXIub3B0aW9ucy5jZW50ZXJNb2RlP3Iub3B0aW9ucy5zbGlkZXNUb1Nob3crMTpyLm9wdGlvbnMuc2xpZGVzVG9TaG93LGU9ci5zbGlkZUNvdW50O2U+ci5zbGlkZUNvdW50LWk7ZS09MSluPWUtMSx0KHIuJHNsaWRlc1tuXSkuY2xvbmUoITApLmF0dHIoImlkIiwiIikuYXR0cigiZGF0YS1zbGljay1pbmRleCIsbi1yLnNsaWRlQ291bnQpLnByZXBlbmRUbyhyLiRzbGlkZVRyYWNrKS5hZGRDbGFzcygic2xpY2stY2xvbmVkIik7Zm9yKGU9MDtlPGkrci5zbGlkZUNvdW50O2UrPTEpbj1lLHQoci4kc2xpZGVzW25dKS5jbG9uZSghMCkuYXR0cigiaWQiLCIiKS5hdHRyKCJkYXRhLXNsaWNrLWluZGV4IixuK3Iuc2xpZGVDb3VudCkuYXBwZW5kVG8oci4kc2xpZGVUcmFjaykuYWRkQ2xhc3MoInNsaWNrLWNsb25lZCIpO3IuJHNsaWRlVHJhY2suZmluZCgiLnNsaWNrLWNsb25lZCIpLmZpbmQoIltpZF0iKS5lYWNoKChmdW5jdGlvbigpe3QodGhpcykuYXR0cigiaWQiLCIiKX0pKX19LGUucHJvdG90eXBlLmludGVycnVwdD1mdW5jdGlvbih0KXt0fHx0aGlzLmF1dG9QbGF5KCksdGhpcy5pbnRlcnJ1cHRlZD10fSxlLnByb3RvdHlwZS5zZWxlY3RIYW5kbGVyPWZ1bmN0aW9uKGUpe3ZhciBuPXRoaXMsaT10KGUudGFyZ2V0KS5pcygiLnNsaWNrLXNsaWRlIik/dChlLnRhcmdldCk6dChlLnRhcmdldCkucGFyZW50cygiLnNsaWNrLXNsaWRlIikscj1wYXJzZUludChpLmF0dHIoImRhdGEtc2xpY2staW5kZXgiKSk7cnx8KHI9MCksbi5zbGlkZUNvdW50PD1uLm9wdGlvbnMuc2xpZGVzVG9TaG93P24uc2xpZGVIYW5kbGVyKHIsITEsITApOm4uc2xpZGVIYW5kbGVyKHIpfSxlLnByb3RvdHlwZS5zbGlkZUhhbmRsZXI9ZnVuY3Rpb24odCxlLG4pe3ZhciBpLHIsbyxhLHMsbD1udWxsLGM9dGhpcztpZihlPWV8fCExLCEoITA9PT1jLmFuaW1hdGluZyYmITA9PT1jLm9wdGlvbnMud2FpdEZvckFuaW1hdGV8fCEwPT09Yy5vcHRpb25zLmZhZGUmJmMuY3VycmVudFNsaWRlPT09dCkpaWYoITE9PT1lJiZjLmFzTmF2Rm9yKHQpLGk9dCxsPWMuZ2V0TGVmdChpKSxhPWMuZ2V0TGVmdChjLmN1cnJlbnRTbGlkZSksYy5jdXJyZW50TGVmdD1udWxsPT09Yy5zd2lwZUxlZnQ/YTpjLnN3aXBlTGVmdCwhMT09PWMub3B0aW9ucy5pbmZpbml0ZSYmITE9PT1jLm9wdGlvbnMuY2VudGVyTW9kZSYmKHQ8MHx8dD5jLmdldERvdENvdW50KCkqYy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsKSkhMT09PWMub3B0aW9ucy5mYWRlJiYoaT1jLmN1cnJlbnRTbGlkZSwhMCE9PW4/Yy5hbmltYXRlU2xpZGUoYSwoZnVuY3Rpb24oKXtjLnBvc3RTbGlkZShpKX0pKTpjLnBvc3RTbGlkZShpKSk7ZWxzZSBpZighMT09PWMub3B0aW9ucy5pbmZpbml0ZSYmITA9PT1jLm9wdGlvbnMuY2VudGVyTW9kZSYmKHQ8MHx8dD5jLnNsaWRlQ291bnQtYy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsKSkhMT09PWMub3B0aW9ucy5mYWRlJiYoaT1jLmN1cnJlbnRTbGlkZSwhMCE9PW4/Yy5hbmltYXRlU2xpZGUoYSwoZnVuY3Rpb24oKXtjLnBvc3RTbGlkZShpKX0pKTpjLnBvc3RTbGlkZShpKSk7ZWxzZXtpZihjLm9wdGlvbnMuYXV0b3BsYXkmJmNsZWFySW50ZXJ2YWwoYy5hdXRvUGxheVRpbWVyKSxyPWk8MD9jLnNsaWRlQ291bnQlYy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsIT0wP2Muc2xpZGVDb3VudC1jLnNsaWRlQ291bnQlYy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsOmMuc2xpZGVDb3VudCtpOmk+PWMuc2xpZGVDb3VudD9jLnNsaWRlQ291bnQlYy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsIT0wPzA6aS1jLnNsaWRlQ291bnQ6aSxjLmFuaW1hdGluZz0hMCxjLiRzbGlkZXIudHJpZ2dlcigiYmVmb3JlQ2hhbmdlIixbYyxjLmN1cnJlbnRTbGlkZSxyXSksbz1jLmN1cnJlbnRTbGlkZSxjLmN1cnJlbnRTbGlkZT1yLGMuc2V0U2xpZGVDbGFzc2VzKGMuY3VycmVudFNsaWRlKSxjLm9wdGlvbnMuYXNOYXZGb3ImJihzPShzPWMuZ2V0TmF2VGFyZ2V0KCkpLnNsaWNrKCJnZXRTbGljayIpKS5zbGlkZUNvdW50PD1zLm9wdGlvbnMuc2xpZGVzVG9TaG93JiZzLnNldFNsaWRlQ2xhc3NlcyhjLmN1cnJlbnRTbGlkZSksYy51cGRhdGVEb3RzKCksYy51cGRhdGVBcnJvd3MoKSwhMD09PWMub3B0aW9ucy5mYWRlKXJldHVybiEwIT09bj8oYy5mYWRlU2xpZGVPdXQobyksYy5mYWRlU2xpZGUociwoZnVuY3Rpb24oKXtjLnBvc3RTbGlkZShyKX0pKSk6Yy5wb3N0U2xpZGUociksdm9pZCBjLmFuaW1hdGVIZWlnaHQoKTshMCE9PW4/Yy5hbmltYXRlU2xpZGUobCwoZnVuY3Rpb24oKXtjLnBvc3RTbGlkZShyKX0pKTpjLnBvc3RTbGlkZShyKX19LGUucHJvdG90eXBlLnN0YXJ0TG9hZD1mdW5jdGlvbigpe3ZhciB0PXRoaXM7ITA9PT10Lm9wdGlvbnMuYXJyb3dzJiZ0LnNsaWRlQ291bnQ+dC5vcHRpb25zLnNsaWRlc1RvU2hvdyYmKHQuJHByZXZBcnJvdy5oaWRlKCksdC4kbmV4dEFycm93LmhpZGUoKSksITA9PT10Lm9wdGlvbnMuZG90cyYmdC5zbGlkZUNvdW50PnQub3B0aW9ucy5zbGlkZXNUb1Nob3cmJnQuJGRvdHMuaGlkZSgpLHQuJHNsaWRlci5hZGRDbGFzcygic2xpY2stbG9hZGluZyIpfSxlLnByb3RvdHlwZS5zd2lwZURpcmVjdGlvbj1mdW5jdGlvbigpe3ZhciB0LGUsbixpLHI9dGhpcztyZXR1cm4gdD1yLnRvdWNoT2JqZWN0LnN0YXJ0WC1yLnRvdWNoT2JqZWN0LmN1clgsZT1yLnRvdWNoT2JqZWN0LnN0YXJ0WS1yLnRvdWNoT2JqZWN0LmN1clksbj1NYXRoLmF0YW4yKGUsdCksKGk9TWF0aC5yb3VuZCgxODAqbi9NYXRoLlBJKSk8MCYmKGk9MzYwLU1hdGguYWJzKGkpKSxpPD00NSYmaT49MHx8aTw9MzYwJiZpPj0zMTU/ITE9PT1yLm9wdGlvbnMucnRsPyJsZWZ0IjoicmlnaHQiOmk+PTEzNSYmaTw9MjI1PyExPT09ci5vcHRpb25zLnJ0bD8icmlnaHQiOiJsZWZ0IjohMD09PXIub3B0aW9ucy52ZXJ0aWNhbFN3aXBpbmc/aT49MzUmJmk8PTEzNT8iZG93biI6InVwIjoidmVydGljYWwifSxlLnByb3RvdHlwZS5zd2lwZUVuZD1mdW5jdGlvbih0KXt2YXIgZSxuLGk9dGhpcztpZihpLmRyYWdnaW5nPSExLGkuc3dpcGluZz0hMSxpLnNjcm9sbGluZylyZXR1cm4gaS5zY3JvbGxpbmc9ITEsITE7aWYoaS5pbnRlcnJ1cHRlZD0hMSxpLnNob3VsZENsaWNrPSEoaS50b3VjaE9iamVjdC5zd2lwZUxlbmd0aD4xMCksdm9pZCAwPT09aS50b3VjaE9iamVjdC5jdXJYKXJldHVybiExO2lmKCEwPT09aS50b3VjaE9iamVjdC5lZGdlSGl0JiZpLiRzbGlkZXIudHJpZ2dlcigiZWRnZSIsW2ksaS5zd2lwZURpcmVjdGlvbigpXSksaS50b3VjaE9iamVjdC5zd2lwZUxlbmd0aD49aS50b3VjaE9iamVjdC5taW5Td2lwZSl7c3dpdGNoKG49aS5zd2lwZURpcmVjdGlvbigpKXtjYXNlImxlZnQiOmNhc2UiZG93biI6ZT1pLm9wdGlvbnMuc3dpcGVUb1NsaWRlP2kuY2hlY2tOYXZpZ2FibGUoaS5jdXJyZW50U2xpZGUraS5nZXRTbGlkZUNvdW50KCkpOmkuY3VycmVudFNsaWRlK2kuZ2V0U2xpZGVDb3VudCgpLGkuY3VycmVudERpcmVjdGlvbj0wO2JyZWFrO2Nhc2UicmlnaHQiOmNhc2UidXAiOmU9aS5vcHRpb25zLnN3aXBlVG9TbGlkZT9pLmNoZWNrTmF2aWdhYmxlKGkuY3VycmVudFNsaWRlLWkuZ2V0U2xpZGVDb3VudCgpKTppLmN1cnJlbnRTbGlkZS1pLmdldFNsaWRlQ291bnQoKSxpLmN1cnJlbnREaXJlY3Rpb249MX0idmVydGljYWwiIT1uJiYoaS5zbGlkZUhhbmRsZXIoZSksaS50b3VjaE9iamVjdD17fSxpLiRzbGlkZXIudHJpZ2dlcigic3dpcGUiLFtpLG5dKSl9ZWxzZSBpLnRvdWNoT2JqZWN0LnN0YXJ0WCE9PWkudG91Y2hPYmplY3QuY3VyWCYmKGkuc2xpZGVIYW5kbGVyKGkuY3VycmVudFNsaWRlKSxpLnRvdWNoT2JqZWN0PXt9KX0sZS5wcm90b3R5cGUuc3dpcGVIYW5kbGVyPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7aWYoISghMT09PWUub3B0aW9ucy5zd2lwZXx8Im9udG91Y2hlbmQiaW4gZG9jdW1lbnQmJiExPT09ZS5vcHRpb25zLnN3aXBlfHwhMT09PWUub3B0aW9ucy5kcmFnZ2FibGUmJi0xIT09dC50eXBlLmluZGV4T2YoIm1vdXNlIikpKXN3aXRjaChlLnRvdWNoT2JqZWN0LmZpbmdlckNvdW50PXQub3JpZ2luYWxFdmVudCYmdm9pZCAwIT09dC5vcmlnaW5hbEV2ZW50LnRvdWNoZXM/dC5vcmlnaW5hbEV2ZW50LnRvdWNoZXMubGVuZ3RoOjEsZS50b3VjaE9iamVjdC5taW5Td2lwZT1lLmxpc3RXaWR0aC9lLm9wdGlvbnMudG91Y2hUaHJlc2hvbGQsITA9PT1lLm9wdGlvbnMudmVydGljYWxTd2lwaW5nJiYoZS50b3VjaE9iamVjdC5taW5Td2lwZT1lLmxpc3RIZWlnaHQvZS5vcHRpb25zLnRvdWNoVGhyZXNob2xkKSx0LmRhdGEuYWN0aW9uKXtjYXNlInN0YXJ0IjplLnN3aXBlU3RhcnQodCk7YnJlYWs7Y2FzZSJtb3ZlIjplLnN3aXBlTW92ZSh0KTticmVhaztjYXNlImVuZCI6ZS5zd2lwZUVuZCh0KX19LGUucHJvdG90eXBlLnN3aXBlTW92ZT1mdW5jdGlvbih0KXt2YXIgZSxuLGkscixvLGEscz10aGlzO3JldHVybiBvPXZvaWQgMCE9PXQub3JpZ2luYWxFdmVudD90Lm9yaWdpbmFsRXZlbnQudG91Y2hlczpudWxsLCEoIXMuZHJhZ2dpbmd8fHMuc2Nyb2xsaW5nfHxvJiYxIT09by5sZW5ndGgpJiYoZT1zLmdldExlZnQocy5jdXJyZW50U2xpZGUpLHMudG91Y2hPYmplY3QuY3VyWD12b2lkIDAhPT1vP29bMF0ucGFnZVg6dC5jbGllbnRYLHMudG91Y2hPYmplY3QuY3VyWT12b2lkIDAhPT1vP29bMF0ucGFnZVk6dC5jbGllbnRZLHMudG91Y2hPYmplY3Quc3dpcGVMZW5ndGg9TWF0aC5yb3VuZChNYXRoLnNxcnQoTWF0aC5wb3cocy50b3VjaE9iamVjdC5jdXJYLXMudG91Y2hPYmplY3Quc3RhcnRYLDIpKSksYT1NYXRoLnJvdW5kKE1hdGguc3FydChNYXRoLnBvdyhzLnRvdWNoT2JqZWN0LmN1clktcy50b3VjaE9iamVjdC5zdGFydFksMikpKSwhcy5vcHRpb25zLnZlcnRpY2FsU3dpcGluZyYmIXMuc3dpcGluZyYmYT40PyhzLnNjcm9sbGluZz0hMCwhMSk6KCEwPT09cy5vcHRpb25zLnZlcnRpY2FsU3dpcGluZyYmKHMudG91Y2hPYmplY3Quc3dpcGVMZW5ndGg9YSksbj1zLnN3aXBlRGlyZWN0aW9uKCksdm9pZCAwIT09dC5vcmlnaW5hbEV2ZW50JiZzLnRvdWNoT2JqZWN0LnN3aXBlTGVuZ3RoPjQmJihzLnN3aXBpbmc9ITAsdC5wcmV2ZW50RGVmYXVsdCgpKSxyPSghMT09PXMub3B0aW9ucy5ydGw/MTotMSkqKHMudG91Y2hPYmplY3QuY3VyWD5zLnRvdWNoT2JqZWN0LnN0YXJ0WD8xOi0xKSwhMD09PXMub3B0aW9ucy52ZXJ0aWNhbFN3aXBpbmcmJihyPXMudG91Y2hPYmplY3QuY3VyWT5zLnRvdWNoT2JqZWN0LnN0YXJ0WT8xOi0xKSxpPXMudG91Y2hPYmplY3Quc3dpcGVMZW5ndGgscy50b3VjaE9iamVjdC5lZGdlSGl0PSExLCExPT09cy5vcHRpb25zLmluZmluaXRlJiYoMD09PXMuY3VycmVudFNsaWRlJiYicmlnaHQiPT09bnx8cy5jdXJyZW50U2xpZGU+PXMuZ2V0RG90Q291bnQoKSYmImxlZnQiPT09bikmJihpPXMudG91Y2hPYmplY3Quc3dpcGVMZW5ndGgqcy5vcHRpb25zLmVkZ2VGcmljdGlvbixzLnRvdWNoT2JqZWN0LmVkZ2VIaXQ9ITApLCExPT09cy5vcHRpb25zLnZlcnRpY2FsP3Muc3dpcGVMZWZ0PWUraSpyOnMuc3dpcGVMZWZ0PWUraSoocy4kbGlzdC5oZWlnaHQoKS9zLmxpc3RXaWR0aCkqciwhMD09PXMub3B0aW9ucy52ZXJ0aWNhbFN3aXBpbmcmJihzLnN3aXBlTGVmdD1lK2kqciksITAhPT1zLm9wdGlvbnMuZmFkZSYmITEhPT1zLm9wdGlvbnMudG91Y2hNb3ZlJiYoITA9PT1zLmFuaW1hdGluZz8ocy5zd2lwZUxlZnQ9bnVsbCwhMSk6dm9pZCBzLnNldENTUyhzLnN3aXBlTGVmdCkpKSl9LGUucHJvdG90eXBlLnN3aXBlU3RhcnQ9ZnVuY3Rpb24odCl7dmFyIGUsbj10aGlzO2lmKG4uaW50ZXJydXB0ZWQ9ITAsMSE9PW4udG91Y2hPYmplY3QuZmluZ2VyQ291bnR8fG4uc2xpZGVDb3VudDw9bi5vcHRpb25zLnNsaWRlc1RvU2hvdylyZXR1cm4gbi50b3VjaE9iamVjdD17fSwhMTt2b2lkIDAhPT10Lm9yaWdpbmFsRXZlbnQmJnZvaWQgMCE9PXQub3JpZ2luYWxFdmVudC50b3VjaGVzJiYoZT10Lm9yaWdpbmFsRXZlbnQudG91Y2hlc1swXSksbi50b3VjaE9iamVjdC5zdGFydFg9bi50b3VjaE9iamVjdC5jdXJYPXZvaWQgMCE9PWU/ZS5wYWdlWDp0LmNsaWVudFgsbi50b3VjaE9iamVjdC5zdGFydFk9bi50b3VjaE9iamVjdC5jdXJZPXZvaWQgMCE9PWU/ZS5wYWdlWTp0LmNsaWVudFksbi5kcmFnZ2luZz0hMH0sZS5wcm90b3R5cGUudW5maWx0ZXJTbGlkZXM9ZS5wcm90b3R5cGUuc2xpY2tVbmZpbHRlcj1mdW5jdGlvbigpe3ZhciB0PXRoaXM7bnVsbCE9PXQuJHNsaWRlc0NhY2hlJiYodC51bmxvYWQoKSx0LiRzbGlkZVRyYWNrLmNoaWxkcmVuKHRoaXMub3B0aW9ucy5zbGlkZSkuZGV0YWNoKCksdC4kc2xpZGVzQ2FjaGUuYXBwZW5kVG8odC4kc2xpZGVUcmFjayksdC5yZWluaXQoKSl9LGUucHJvdG90eXBlLnVubG9hZD1mdW5jdGlvbigpe3ZhciBlPXRoaXM7dCgiLnNsaWNrLWNsb25lZCIsZS4kc2xpZGVyKS5yZW1vdmUoKSxlLiRkb3RzJiZlLiRkb3RzLnJlbW92ZSgpLGUuJHByZXZBcnJvdyYmZS5odG1sRXhwci50ZXN0KGUub3B0aW9ucy5wcmV2QXJyb3cpJiZlLiRwcmV2QXJyb3cucmVtb3ZlKCksZS4kbmV4dEFycm93JiZlLmh0bWxFeHByLnRlc3QoZS5vcHRpb25zLm5leHRBcnJvdykmJmUuJG5leHRBcnJvdy5yZW1vdmUoKSxlLiRzbGlkZXMucmVtb3ZlQ2xhc3MoInNsaWNrLXNsaWRlIHNsaWNrLWFjdGl2ZSBzbGljay12aXNpYmxlIHNsaWNrLWN1cnJlbnQiKS5hdHRyKCJhcmlhLWhpZGRlbiIsInRydWUiKS5jc3MoIndpZHRoIiwiIil9LGUucHJvdG90eXBlLnVuc2xpY2s9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztlLiRzbGlkZXIudHJpZ2dlcigidW5zbGljayIsW2UsdF0pLGUuZGVzdHJveSgpfSxlLnByb3RvdHlwZS51cGRhdGVBcnJvd3M9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO01hdGguZmxvb3IodC5vcHRpb25zLnNsaWRlc1RvU2hvdy8yKSwhMD09PXQub3B0aW9ucy5hcnJvd3MmJnQuc2xpZGVDb3VudD50Lm9wdGlvbnMuc2xpZGVzVG9TaG93JiYhdC5vcHRpb25zLmluZmluaXRlJiYodC4kcHJldkFycm93LnJlbW92ZUNsYXNzKCJzbGljay1kaXNhYmxlZCIpLmF0dHIoImFyaWEtZGlzYWJsZWQiLCJmYWxzZSIpLHQuJG5leHRBcnJvdy5yZW1vdmVDbGFzcygic2xpY2stZGlzYWJsZWQiKS5hdHRyKCJhcmlhLWRpc2FibGVkIiwiZmFsc2UiKSwwPT09dC5jdXJyZW50U2xpZGU/KHQuJHByZXZBcnJvdy5hZGRDbGFzcygic2xpY2stZGlzYWJsZWQiKS5hdHRyKCJhcmlhLWRpc2FibGVkIiwidHJ1ZSIpLHQuJG5leHRBcnJvdy5yZW1vdmVDbGFzcygic2xpY2stZGlzYWJsZWQiKS5hdHRyKCJhcmlhLWRpc2FibGVkIiwiZmFsc2UiKSk6KHQuY3VycmVudFNsaWRlPj10LnNsaWRlQ291bnQtdC5vcHRpb25zLnNsaWRlc1RvU2hvdyYmITE9PT10Lm9wdGlvbnMuY2VudGVyTW9kZXx8dC5jdXJyZW50U2xpZGU+PXQuc2xpZGVDb3VudC0xJiYhMD09PXQub3B0aW9ucy5jZW50ZXJNb2RlKSYmKHQuJG5leHRBcnJvdy5hZGRDbGFzcygic2xpY2stZGlzYWJsZWQiKS5hdHRyKCJhcmlhLWRpc2FibGVkIiwidHJ1ZSIpLHQuJHByZXZBcnJvdy5yZW1vdmVDbGFzcygic2xpY2stZGlzYWJsZWQiKS5hdHRyKCJhcmlhLWRpc2FibGVkIiwiZmFsc2UiKSkpfSxlLnByb3RvdHlwZS51cGRhdGVEb3RzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztudWxsIT09dC4kZG90cyYmKHQuJGRvdHMuZmluZCgibGkiKS5yZW1vdmVDbGFzcygic2xpY2stYWN0aXZlIikuZW5kKCksdC4kZG90cy5maW5kKCJsaSIpLmVxKE1hdGguZmxvb3IodC5jdXJyZW50U2xpZGUvdC5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsKSkuYWRkQ2xhc3MoInNsaWNrLWFjdGl2ZSIpKX0sZS5wcm90b3R5cGUudmlzaWJpbGl0eT1mdW5jdGlvbigpe3ZhciB0PXRoaXM7dC5vcHRpb25zLmF1dG9wbGF5JiYoZG9jdW1lbnRbdC5oaWRkZW5dP3QuaW50ZXJydXB0ZWQ9ITA6dC5pbnRlcnJ1cHRlZD0hMSl9LHQuZm4uc2xpY2s9ZnVuY3Rpb24oKXt2YXIgdCxuLGk9dGhpcyxyPWFyZ3VtZW50c1swXSxvPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSxhPWkubGVuZ3RoO2Zvcih0PTA7dDxhO3QrKylpZigib2JqZWN0Ij09dHlwZW9mIHJ8fHZvaWQgMD09PXI/aVt0XS5zbGljaz1uZXcgZShpW3RdLHIpOm49aVt0XS5zbGlja1tyXS5hcHBseShpW3RdLnNsaWNrLG8pLHZvaWQgMCE9PW4pcmV0dXJuIG47cmV0dXJuIGl9fSkpLGZ1bmN0aW9uKHQsZSl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz1lKCk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoW10sZSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP2V4cG9ydHMuQ2xpcGJvYXJkSlM9ZSgpOnQuQ2xpcGJvYXJkSlM9ZSgpfSh0aGlzLChmdW5jdGlvbigpe3JldHVybiBuPXt9LHQubT1lPVtmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZTtpZigiU0VMRUNUIj09PXQubm9kZU5hbWUpdC5mb2N1cygpLGU9dC52YWx1ZTtlbHNlIGlmKCJJTlBVVCI9PT10Lm5vZGVOYW1lfHwiVEVYVEFSRUEiPT09dC5ub2RlTmFtZSl7dmFyIG49dC5oYXNBdHRyaWJ1dGUoInJlYWRvbmx5Iik7bnx8dC5zZXRBdHRyaWJ1dGUoInJlYWRvbmx5IiwiIiksdC5zZWxlY3QoKSx0LnNldFNlbGVjdGlvblJhbmdlKDAsdC52YWx1ZS5sZW5ndGgpLG58fHQucmVtb3ZlQXR0cmlidXRlKCJyZWFkb25seSIpLGU9dC52YWx1ZX1lbHNle3QuaGFzQXR0cmlidXRlKCJjb250ZW50ZWRpdGFibGUiKSYmdC5mb2N1cygpO3ZhciBpPXdpbmRvdy5nZXRTZWxlY3Rpb24oKSxyPWRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7ci5zZWxlY3ROb2RlQ29udGVudHModCksaS5yZW1vdmVBbGxSYW5nZXMoKSxpLmFkZFJhbmdlKHIpLGU9aS50b1N0cmluZygpfXJldHVybiBlfX0sZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKCl7fW4ucHJvdG90eXBlPXtvbjpmdW5jdGlvbih0LGUsbil7dmFyIGk9dGhpcy5lfHwodGhpcy5lPXt9KTtyZXR1cm4oaVt0XXx8KGlbdF09W10pKS5wdXNoKHtmbjplLGN0eDpufSksdGhpc30sb25jZTpmdW5jdGlvbih0LGUsbil7dmFyIGk9dGhpcztmdW5jdGlvbiByKCl7aS5vZmYodCxyKSxlLmFwcGx5KG4sYXJndW1lbnRzKX1yZXR1cm4gci5fPWUsdGhpcy5vbih0LHIsbil9LGVtaXQ6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpLG49KCh0aGlzLmV8fCh0aGlzLmU9e30pKVt0XXx8W10pLnNsaWNlKCksaT0wLHI9bi5sZW5ndGg7aTxyO2krKyluW2ldLmZuLmFwcGx5KG5baV0uY3R4LGUpO3JldHVybiB0aGlzfSxvZmY6ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLmV8fCh0aGlzLmU9e30pLGk9blt0XSxyPVtdO2lmKGkmJmUpZm9yKHZhciBvPTAsYT1pLmxlbmd0aDtvPGE7bysrKWlbb10uZm4hPT1lJiZpW29dLmZuLl8hPT1lJiZyLnB1c2goaVtvXSk7cmV0dXJuIHIubGVuZ3RoP25bdF09cjpkZWxldGUgblt0XSx0aGlzfX0sdC5leHBvcnRzPW4sdC5leHBvcnRzLlRpbnlFbWl0dGVyPW59LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDMpLHI9big0KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe2lmKCF0JiYhZSYmIW4pdGhyb3cgbmV3IEVycm9yKCJNaXNzaW5nIHJlcXVpcmVkIGFyZ3VtZW50cyIpO2lmKCFpLnN0cmluZyhlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJTZWNvbmQgYXJndW1lbnQgbXVzdCBiZSBhIFN0cmluZyIpO2lmKCFpLmZuKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIlRoaXJkIGFyZ3VtZW50IG11c3QgYmUgYSBGdW5jdGlvbiIpO2lmKGkubm9kZSh0KSlyZXR1cm4gaD1lLGY9biwoZD10KS5hZGRFdmVudExpc3RlbmVyKGgsZikse2Rlc3Ryb3k6ZnVuY3Rpb24oKXtkLnJlbW92ZUV2ZW50TGlzdGVuZXIoaCxmKX19O2lmKGkubm9kZUxpc3QodCkpcmV0dXJuIGw9dCxjPWUsdT1uLEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwobCwoZnVuY3Rpb24odCl7dC5hZGRFdmVudExpc3RlbmVyKGMsdSl9KSkse2Rlc3Ryb3k6ZnVuY3Rpb24oKXtBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGwsKGZ1bmN0aW9uKHQpe3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihjLHUpfSkpfX07aWYoaS5zdHJpbmcodCkpcmV0dXJuIG89dCxhPWUscz1uLHIoZG9jdW1lbnQuYm9keSxvLGEscyk7dGhyb3cgbmV3IFR5cGVFcnJvcigiRmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIFN0cmluZywgSFRNTEVsZW1lbnQsIEhUTUxDb2xsZWN0aW9uLCBvciBOb2RlTGlzdCIpO3ZhciBvLGEscyxsLGMsdSxkLGgsZn19LGZ1bmN0aW9uKHQsZSl7ZS5ub2RlPWZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDAhPT10JiZ0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnQmJjE9PT10Lm5vZGVUeXBlfSxlLm5vZGVMaXN0PWZ1bmN0aW9uKHQpe3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KTtyZXR1cm4gdm9pZCAwIT09dCYmKCJbb2JqZWN0IE5vZGVMaXN0XSI9PT1ufHwiW29iamVjdCBIVE1MQ29sbGVjdGlvbl0iPT09bikmJiJsZW5ndGgiaW4gdCYmKDA9PT10Lmxlbmd0aHx8ZS5ub2RlKHRbMF0pKX0sZS5zdHJpbmc9ZnVuY3Rpb24odCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0fHx0IGluc3RhbmNlb2YgU3RyaW5nfSxlLmZuPWZ1bmN0aW9uKHQpe3JldHVybiJbb2JqZWN0IEZ1bmN0aW9uXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9fSxmdW5jdGlvbih0LGUsbil7dmFyIGk9big1KTtmdW5jdGlvbiByKHQsZSxuLHIsbyl7dmFyIGE9ZnVuY3Rpb24odCxlLG4scil7cmV0dXJuIGZ1bmN0aW9uKG4pe24uZGVsZWdhdGVUYXJnZXQ9aShuLnRhcmdldCxlKSxuLmRlbGVnYXRlVGFyZ2V0JiZyLmNhbGwodCxuKX19LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gdC5hZGRFdmVudExpc3RlbmVyKG4sYSxvKSx7ZGVzdHJveTpmdW5jdGlvbigpe3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihuLGEsbyl9fX10LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4saSxvKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdC5hZGRFdmVudExpc3RlbmVyP3IuYXBwbHkobnVsbCxhcmd1bWVudHMpOiJmdW5jdGlvbiI9PXR5cGVvZiBuP3IuYmluZChudWxsLGRvY3VtZW50KS5hcHBseShudWxsLGFyZ3VtZW50cyk6KCJzdHJpbmciPT10eXBlb2YgdCYmKHQ9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCh0KSksQXJyYXkucHJvdG90eXBlLm1hcC5jYWxsKHQsKGZ1bmN0aW9uKHQpe3JldHVybiByKHQsZSxuLGksbyl9KSkpfX0sZnVuY3Rpb24odCxlKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEVsZW1lbnQmJiFFbGVtZW50LnByb3RvdHlwZS5tYXRjaGVzKXt2YXIgbj1FbGVtZW50LnByb3RvdHlwZTtuLm1hdGNoZXM9bi5tYXRjaGVzU2VsZWN0b3J8fG4ubW96TWF0Y2hlc1NlbGVjdG9yfHxuLm1zTWF0Y2hlc1NlbGVjdG9yfHxuLm9NYXRjaGVzU2VsZWN0b3J8fG4ud2Via2l0TWF0Y2hlc1NlbGVjdG9yfXQuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2Zvcig7dCYmOSE9PXQubm9kZVR5cGU7KXtpZigiZnVuY3Rpb24iPT10eXBlb2YgdC5tYXRjaGVzJiZ0Lm1hdGNoZXMoZSkpcmV0dXJuIHQ7dD10LnBhcmVudE5vZGV9fX0sZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuLnIoZSk7dmFyIGk9bigwKSxyPW4ubihpKSxvPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fTtmdW5jdGlvbiBhKHQsZSl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciBpPWVbbl07aS5lbnVtZXJhYmxlPWkuZW51bWVyYWJsZXx8ITEsaS5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGkmJihpLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxpLmtleSxpKX19ZnVuY3Rpb24gcyh0KXshZnVuY3Rpb24odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX0odGhpcyxzKSx0aGlzLnJlc29sdmVPcHRpb25zKHQpLHRoaXMuaW5pdFNlbGVjdGlvbigpfXZhciBsPShmdW5jdGlvbih0LGUsbil7ZSYmYSh0LnByb3RvdHlwZSxlKX0ocyxbe2tleToicmVzb2x2ZU9wdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPTA8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09dD90Ont9O3RoaXMuYWN0aW9uPWUuYWN0aW9uLHRoaXMuY29udGFpbmVyPWUuY29udGFpbmVyLHRoaXMuZW1pdHRlcj1lLmVtaXR0ZXIsdGhpcy50YXJnZXQ9ZS50YXJnZXQsdGhpcy50ZXh0PWUudGV4dCx0aGlzLnRyaWdnZXI9ZS50cmlnZ2VyLHRoaXMuc2VsZWN0ZWRUZXh0PSIifX0se2tleToiaW5pdFNlbGVjdGlvbiIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnRleHQ/dGhpcy5zZWxlY3RGYWtlKCk6dGhpcy50YXJnZXQmJnRoaXMuc2VsZWN0VGFyZ2V0KCl9fSx7a2V5OiJzZWxlY3RGYWtlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT0icnRsIj09ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZSgiZGlyIik7dGhpcy5yZW1vdmVGYWtlKCksdGhpcy5mYWtlSGFuZGxlckNhbGxiYWNrPWZ1bmN0aW9uKCl7cmV0dXJuIHQucmVtb3ZlRmFrZSgpfSx0aGlzLmZha2VIYW5kbGVyPXRoaXMuY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIix0aGlzLmZha2VIYW5kbGVyQ2FsbGJhY2spfHwhMCx0aGlzLmZha2VFbGVtPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRleHRhcmVhIiksdGhpcy5mYWtlRWxlbS5zdHlsZS5mb250U2l6ZT0iMTJwdCIsdGhpcy5mYWtlRWxlbS5zdHlsZS5ib3JkZXI9IjAiLHRoaXMuZmFrZUVsZW0uc3R5bGUucGFkZGluZz0iMCIsdGhpcy5mYWtlRWxlbS5zdHlsZS5tYXJnaW49IjAiLHRoaXMuZmFrZUVsZW0uc3R5bGUucG9zaXRpb249ImFic29sdXRlIix0aGlzLmZha2VFbGVtLnN0eWxlW2U/InJpZ2h0IjoibGVmdCJdPSItOTk5OXB4Ijt2YXIgbj13aW5kb3cucGFnZVlPZmZzZXR8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3A7dGhpcy5mYWtlRWxlbS5zdHlsZS50b3A9bisicHgiLHRoaXMuZmFrZUVsZW0uc2V0QXR0cmlidXRlKCJyZWFkb25seSIsIiIpLHRoaXMuZmFrZUVsZW0udmFsdWU9dGhpcy50ZXh0LHRoaXMuY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuZmFrZUVsZW0pLHRoaXMuc2VsZWN0ZWRUZXh0PXIoKSh0aGlzLmZha2VFbGVtKSx0aGlzLmNvcHlUZXh0KCl9fSx7a2V5OiJyZW1vdmVGYWtlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZmFrZUhhbmRsZXImJih0aGlzLmNvbnRhaW5lci5yZW1vdmVFdmVudExpc3RlbmVyKCJjbGljayIsdGhpcy5mYWtlSGFuZGxlckNhbGxiYWNrKSx0aGlzLmZha2VIYW5kbGVyPW51bGwsdGhpcy5mYWtlSGFuZGxlckNhbGxiYWNrPW51bGwpLHRoaXMuZmFrZUVsZW0mJih0aGlzLmNvbnRhaW5lci5yZW1vdmVDaGlsZCh0aGlzLmZha2VFbGVtKSx0aGlzLmZha2VFbGVtPW51bGwpfX0se2tleToic2VsZWN0VGFyZ2V0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuc2VsZWN0ZWRUZXh0PXIoKSh0aGlzLnRhcmdldCksdGhpcy5jb3B5VGV4dCgpfX0se2tleToiY29weVRleHQiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dm9pZCAwO3RyeXt0PWRvY3VtZW50LmV4ZWNDb21tYW5kKHRoaXMuYWN0aW9uKX1jYXRjaChlKXt0PSExfXRoaXMuaGFuZGxlUmVzdWx0KHQpfX0se2tleToiaGFuZGxlUmVzdWx0Iix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLmVtaXR0ZXIuZW1pdCh0PyJzdWNjZXNzIjoiZXJyb3IiLHthY3Rpb246dGhpcy5hY3Rpb24sdGV4dDp0aGlzLnNlbGVjdGVkVGV4dCx0cmlnZ2VyOnRoaXMudHJpZ2dlcixjbGVhclNlbGVjdGlvbjp0aGlzLmNsZWFyU2VsZWN0aW9uLmJpbmQodGhpcyl9KX19LHtrZXk6ImNsZWFyU2VsZWN0aW9uIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMudHJpZ2dlciYmdGhpcy50cmlnZ2VyLmZvY3VzKCksZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5ibHVyKCksd2luZG93LmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpfX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUZha2UoKX19LHtrZXk6ImFjdGlvbiIsc2V0OmZ1bmN0aW9uKHQpe3ZhciBlPTA8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09dD90OiJjb3B5IjtpZih0aGlzLl9hY3Rpb249ZSwiY29weSIhPT10aGlzLl9hY3Rpb24mJiJjdXQiIT09dGhpcy5fYWN0aW9uKXRocm93IG5ldyBFcnJvcignSW52YWxpZCAiYWN0aW9uIiB2YWx1ZSwgdXNlIGVpdGhlciAiY29weSIgb3IgImN1dCInKX0sZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2FjdGlvbn19LHtrZXk6InRhcmdldCIsc2V0OmZ1bmN0aW9uKHQpe2lmKHZvaWQgMCE9PXQpe2lmKCF0fHwib2JqZWN0IiE9PSh2b2lkIDA9PT10PyJ1bmRlZmluZWQiOm8odCkpfHwxIT09dC5ub2RlVHlwZSl0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgInRhcmdldCIgdmFsdWUsIHVzZSBhIHZhbGlkIEVsZW1lbnQnKTtpZigiY29weSI9PT10aGlzLmFjdGlvbiYmdC5oYXNBdHRyaWJ1dGUoImRpc2FibGVkIikpdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkICJ0YXJnZXQiIGF0dHJpYnV0ZS4gUGxlYXNlIHVzZSAicmVhZG9ubHkiIGluc3RlYWQgb2YgImRpc2FibGVkIiBhdHRyaWJ1dGUnKTtpZigiY3V0Ij09PXRoaXMuYWN0aW9uJiYodC5oYXNBdHRyaWJ1dGUoInJlYWRvbmx5Iil8fHQuaGFzQXR0cmlidXRlKCJkaXNhYmxlZCIpKSl0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgInRhcmdldCIgYXR0cmlidXRlLiBZb3UgY2FuXCd0IGN1dCB0ZXh0IGZyb20gZWxlbWVudHMgd2l0aCAicmVhZG9ubHkiIG9yICJkaXNhYmxlZCIgYXR0cmlidXRlcycpO3RoaXMuX3RhcmdldD10fX0sZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3RhcmdldH19XSkscyksYz1uKDEpLHU9bi5uKGMpLGQ9bigyKSxoPW4ubihkKSxmPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fTtmdW5jdGlvbiBwKHQsZSl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciBpPWVbbl07aS5lbnVtZXJhYmxlPWkuZW51bWVyYWJsZXx8ITEsaS5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGkmJihpLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxpLmtleSxpKX19dmFyIGc9KGZ1bmN0aW9uKHQsZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUmJm51bGwhPT1lKXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgZSk7dC5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShlJiZlLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOnQsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksZSYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YodCxlKTp0Ll9fcHJvdG9fXz1lKX0obSx1LmEpLGZ1bmN0aW9uKHQsZSxuKXtlJiZwKHQucHJvdG90eXBlLGUpLG4mJnAodCxuKX0obSxbe2tleToicmVzb2x2ZU9wdGlvbnMiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPTA8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09dD90Ont9O3RoaXMuYWN0aW9uPSJmdW5jdGlvbiI9PXR5cGVvZiBlLmFjdGlvbj9lLmFjdGlvbjp0aGlzLmRlZmF1bHRBY3Rpb24sdGhpcy50YXJnZXQ9ImZ1bmN0aW9uIj09dHlwZW9mIGUudGFyZ2V0P2UudGFyZ2V0OnRoaXMuZGVmYXVsdFRhcmdldCx0aGlzLnRleHQ9ImZ1bmN0aW9uIj09dHlwZW9mIGUudGV4dD9lLnRleHQ6dGhpcy5kZWZhdWx0VGV4dCx0aGlzLmNvbnRhaW5lcj0ib2JqZWN0Ij09PWYoZS5jb250YWluZXIpP2UuY29udGFpbmVyOmRvY3VtZW50LmJvZHl9fSx7a2V5OiJsaXN0ZW5DbGljayIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpczt0aGlzLmxpc3RlbmVyPWgoKSh0LCJjbGljayIsKGZ1bmN0aW9uKHQpe3JldHVybiBlLm9uQ2xpY2sodCl9KSl9fSx7a2V5OiJvbkNsaWNrIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10LmRlbGVnYXRlVGFyZ2V0fHx0LmN1cnJlbnRUYXJnZXQ7dGhpcy5jbGlwYm9hcmRBY3Rpb24mJih0aGlzLmNsaXBib2FyZEFjdGlvbj1udWxsKSx0aGlzLmNsaXBib2FyZEFjdGlvbj1uZXcgbCh7YWN0aW9uOnRoaXMuYWN0aW9uKGUpLHRhcmdldDp0aGlzLnRhcmdldChlKSx0ZXh0OnRoaXMudGV4dChlKSxjb250YWluZXI6dGhpcy5jb250YWluZXIsdHJpZ2dlcjplLGVtaXR0ZXI6dGhpc30pfX0se2tleToiZGVmYXVsdEFjdGlvbiIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHYoImFjdGlvbiIsdCl9fSx7a2V5OiJkZWZhdWx0VGFyZ2V0Iix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT12KCJ0YXJnZXQiLHQpO2lmKGUpcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZSl9fSx7a2V5OiJkZWZhdWx0VGV4dCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHYoInRleHQiLHQpfX0se2tleToiZGVzdHJveSIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLmxpc3RlbmVyLmRlc3Ryb3koKSx0aGlzLmNsaXBib2FyZEFjdGlvbiYmKHRoaXMuY2xpcGJvYXJkQWN0aW9uLmRlc3Ryb3koKSx0aGlzLmNsaXBib2FyZEFjdGlvbj1udWxsKX19XSxbe2tleToiaXNTdXBwb3J0ZWQiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPTA8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09dD90OlsiY29weSIsImN1dCJdLG49InN0cmluZyI9PXR5cGVvZiBlP1tlXTplLGk9ISFkb2N1bWVudC5xdWVyeUNvbW1hbmRTdXBwb3J0ZWQ7cmV0dXJuIG4uZm9yRWFjaCgoZnVuY3Rpb24odCl7aT1pJiYhIWRvY3VtZW50LnF1ZXJ5Q29tbWFuZFN1cHBvcnRlZCh0KX0pKSxpfX1dKSxtKTtmdW5jdGlvbiBtKHQsZSl7IWZ1bmN0aW9uKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9KHRoaXMsbSk7dmFyIG49ZnVuY3Rpb24odCxlKXtpZighdCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiFlfHwib2JqZWN0IiE9dHlwZW9mIGUmJiJmdW5jdGlvbiIhPXR5cGVvZiBlP3Q6ZX0odGhpcywobS5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihtKSkuY2FsbCh0aGlzKSk7cmV0dXJuIG4ucmVzb2x2ZU9wdGlvbnMoZSksbi5saXN0ZW5DbGljayh0KSxufWZ1bmN0aW9uIHYodCxlKXt2YXIgbj0iZGF0YS1jbGlwYm9hcmQtIit0O2lmKGUuaGFzQXR0cmlidXRlKG4pKXJldHVybiBlLmdldEF0dHJpYnV0ZShuKX1lLmRlZmF1bHQ9Z31dLHQuYz1uLHQuZD1mdW5jdGlvbihlLG4saSl7dC5vKGUsbil8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4se2VudW1lcmFibGU6ITAsZ2V0Oml9KX0sdC5yPWZ1bmN0aW9uKHQpeyJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wudG9TdHJpbmdUYWcmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LHQudD1mdW5jdGlvbihlLG4pe2lmKDEmbiYmKGU9dChlKSksOCZuKXJldHVybiBlO2lmKDQmbiYmIm9iamVjdCI9PXR5cGVvZiBlJiZlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIGk9T2JqZWN0LmNyZWF0ZShudWxsKTtpZih0LnIoaSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGksImRlZmF1bHQiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOmV9KSwyJm4mJiJzdHJpbmciIT10eXBlb2YgZSlmb3IodmFyIHIgaW4gZSl0LmQoaSxyLGZ1bmN0aW9uKHQpe3JldHVybiBlW3RdfS5iaW5kKG51bGwscikpO3JldHVybiBpfSx0Lm49ZnVuY3Rpb24oZSl7dmFyIG49ZSYmZS5fX2VzTW9kdWxlP2Z1bmN0aW9uKCl7cmV0dXJuIGUuZGVmYXVsdH06ZnVuY3Rpb24oKXtyZXR1cm4gZX07cmV0dXJuIHQuZChuLCJhIixuKSxufSx0Lm89ZnVuY3Rpb24odCxlKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsZSl9LHQucD0iIix0KHQucz02KS5kZWZhdWx0O2Z1bmN0aW9uIHQoaSl7aWYobltpXSlyZXR1cm4gbltpXS5leHBvcnRzO3ZhciByPW5baV09e2k6aSxsOiExLGV4cG9ydHM6e319O3JldHVybiBlW2ldLmNhbGwoci5leHBvcnRzLHIsci5leHBvcnRzLHQpLHIubD0hMCxyLmV4cG9ydHN9dmFyIGUsbn0pKSxmdW5jdGlvbih0LGUpeyJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmInVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGU/bW9kdWxlLmV4cG9ydHM9ZShmdW5jdGlvbigpe3RyeXtyZXR1cm4gcmVxdWlyZSgibW9tZW50Iil9Y2F0Y2godCl7fX0oKSk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyJyZXF1aXJlIl0sKGZ1bmN0aW9uKHQpe3JldHVybiBlKGZ1bmN0aW9uKCl7dHJ5e3JldHVybiB0KCJtb21lbnQiKX1jYXRjaCh0KXt9fSgpKX0pKToodD10fHxzZWxmKS5DaGFydD1lKHQubW9tZW50KX0odGhpcywoZnVuY3Rpb24odCl7InVzZSBzdHJpY3QiO3Q9dCYmdC5oYXNPd25Qcm9wZXJ0eSgiZGVmYXVsdCIpP3QuZGVmYXVsdDp0O3ZhciBlPXthbGljZWJsdWU6WzI0MCwyNDgsMjU1XSxhbnRpcXVld2hpdGU6WzI1MCwyMzUsMjE1XSxhcXVhOlswLDI1NSwyNTVdLGFxdWFtYXJpbmU6WzEyNywyNTUsMjEyXSxhenVyZTpbMjQwLDI1NSwyNTVdLGJlaWdlOlsyNDUsMjQ1LDIyMF0sYmlzcXVlOlsyNTUsMjI4LDE5Nl0sYmxhY2s6WzAsMCwwXSxibGFuY2hlZGFsbW9uZDpbMjU1LDIzNSwyMDVdLGJsdWU6WzAsMCwyNTVdLGJsdWV2aW9sZXQ6WzEzOCw0MywyMjZdLGJyb3duOlsxNjUsNDIsNDJdLGJ1cmx5d29vZDpbMjIyLDE4NCwxMzVdLGNhZGV0Ymx1ZTpbOTUsMTU4LDE2MF0sY2hhcnRyZXVzZTpbMTI3LDI1NSwwXSxjaG9jb2xhdGU6WzIxMCwxMDUsMzBdLGNvcmFsOlsyNTUsMTI3LDgwXSxjb3JuZmxvd2VyYmx1ZTpbMTAwLDE0OSwyMzddLGNvcm5zaWxrOlsyNTUsMjQ4LDIyMF0sY3JpbXNvbjpbMjIwLDIwLDYwXSxjeWFuOlswLDI1NSwyNTVdLGRhcmtibHVlOlswLDAsMTM5XSxkYXJrY3lhbjpbMCwxMzksMTM5XSxkYXJrZ29sZGVucm9kOlsxODQsMTM0LDExXSxkYXJrZ3JheTpbMTY5LDE2OSwxNjldLGRhcmtncmVlbjpbMCwxMDAsMF0sZGFya2dyZXk6WzE2OSwxNjksMTY5XSxkYXJra2hha2k6WzE4OSwxODMsMTA3XSxkYXJrbWFnZW50YTpbMTM5LDAsMTM5XSxkYXJrb2xpdmVncmVlbjpbODUsMTA3LDQ3XSxkYXJrb3JhbmdlOlsyNTUsMTQwLDBdLGRhcmtvcmNoaWQ6WzE1Myw1MCwyMDRdLGRhcmtyZWQ6WzEzOSwwLDBdLGRhcmtzYWxtb246WzIzMywxNTAsMTIyXSxkYXJrc2VhZ3JlZW46WzE0MywxODgsMTQzXSxkYXJrc2xhdGVibHVlOls3Miw2MSwxMzldLGRhcmtzbGF0ZWdyYXk6WzQ3LDc5LDc5XSxkYXJrc2xhdGVncmV5Ols0Nyw3OSw3OV0sZGFya3R1cnF1b2lzZTpbMCwyMDYsMjA5XSxkYXJrdmlvbGV0OlsxNDgsMCwyMTFdLGRlZXBwaW5rOlsyNTUsMjAsMTQ3XSxkZWVwc2t5Ymx1ZTpbMCwxOTEsMjU1XSxkaW1ncmF5OlsxMDUsMTA1LDEwNV0sZGltZ3JleTpbMTA1LDEwNSwxMDVdLGRvZGdlcmJsdWU6WzMwLDE0NCwyNTVdLGZpcmVicmljazpbMTc4LDM0LDM0XSxmbG9yYWx3aGl0ZTpbMjU1LDI1MCwyNDBdLGZvcmVzdGdyZWVuOlszNCwxMzksMzRdLGZ1Y2hzaWE6WzI1NSwwLDI1NV0sZ2FpbnNib3JvOlsyMjAsMjIwLDIyMF0sZ2hvc3R3aGl0ZTpbMjQ4LDI0OCwyNTVdLGdvbGQ6WzI1NSwyMTUsMF0sZ29sZGVucm9kOlsyMTgsMTY1LDMyXSxncmF5OlsxMjgsMTI4LDEyOF0sZ3JlZW46WzAsMTI4LDBdLGdyZWVueWVsbG93OlsxNzMsMjU1LDQ3XSxncmV5OlsxMjgsMTI4LDEyOF0saG9uZXlkZXc6WzI0MCwyNTUsMjQwXSxob3RwaW5rOlsyNTUsMTA1LDE4MF0saW5kaWFucmVkOlsyMDUsOTIsOTJdLGluZGlnbzpbNzUsMCwxMzBdLGl2b3J5OlsyNTUsMjU1LDI0MF0sa2hha2k6WzI0MCwyMzAsMTQwXSxsYXZlbmRlcjpbMjMwLDIzMCwyNTBdLGxhdmVuZGVyYmx1c2g6WzI1NSwyNDAsMjQ1XSxsYXduZ3JlZW46WzEyNCwyNTIsMF0sbGVtb25jaGlmZm9uOlsyNTUsMjUwLDIwNV0sbGlnaHRibHVlOlsxNzMsMjE2LDIzMF0sbGlnaHRjb3JhbDpbMjQwLDEyOCwxMjhdLGxpZ2h0Y3lhbjpbMjI0LDI1NSwyNTVdLGxpZ2h0Z29sZGVucm9keWVsbG93OlsyNTAsMjUwLDIxMF0sbGlnaHRncmF5OlsyMTEsMjExLDIxMV0sbGlnaHRncmVlbjpbMTQ0LDIzOCwxNDRdLGxpZ2h0Z3JleTpbMjExLDIxMSwyMTFdLGxpZ2h0cGluazpbMjU1LDE4MiwxOTNdLGxpZ2h0c2FsbW9uOlsyNTUsMTYwLDEyMl0sbGlnaHRzZWFncmVlbjpbMzIsMTc4LDE3MF0sbGlnaHRza3libHVlOlsxMzUsMjA2LDI1MF0sbGlnaHRzbGF0ZWdyYXk6WzExOSwxMzYsMTUzXSxsaWdodHNsYXRlZ3JleTpbMTE5LDEzNiwxNTNdLGxpZ2h0c3RlZWxibHVlOlsxNzYsMTk2LDIyMl0sbGlnaHR5ZWxsb3c6WzI1NSwyNTUsMjI0XSxsaW1lOlswLDI1NSwwXSxsaW1lZ3JlZW46WzUwLDIwNSw1MF0sbGluZW46WzI1MCwyNDAsMjMwXSxtYWdlbnRhOlsyNTUsMCwyNTVdLG1hcm9vbjpbMTI4LDAsMF0sbWVkaXVtYXF1YW1hcmluZTpbMTAyLDIwNSwxNzBdLG1lZGl1bWJsdWU6WzAsMCwyMDVdLG1lZGl1bW9yY2hpZDpbMTg2LDg1LDIxMV0sbWVkaXVtcHVycGxlOlsxNDcsMTEyLDIxOV0sbWVkaXVtc2VhZ3JlZW46WzYwLDE3OSwxMTNdLG1lZGl1bXNsYXRlYmx1ZTpbMTIzLDEwNCwyMzhdLG1lZGl1bXNwcmluZ2dyZWVuOlswLDI1MCwxNTRdLG1lZGl1bXR1cnF1b2lzZTpbNzIsMjA5LDIwNF0sbWVkaXVtdmlvbGV0cmVkOlsxOTksMjEsMTMzXSxtaWRuaWdodGJsdWU6WzI1LDI1LDExMl0sbWludGNyZWFtOlsyNDUsMjU1LDI1MF0sbWlzdHlyb3NlOlsyNTUsMjI4LDIyNV0sbW9jY2FzaW46WzI1NSwyMjgsMTgxXSxuYXZham93aGl0ZTpbMjU1LDIyMiwxNzNdLG5hdnk6WzAsMCwxMjhdLG9sZGxhY2U6WzI1MywyNDUsMjMwXSxvbGl2ZTpbMTI4LDEyOCwwXSxvbGl2ZWRyYWI6WzEwNywxNDIsMzVdLG9yYW5nZTpbMjU1LDE2NSwwXSxvcmFuZ2VyZWQ6WzI1NSw2OSwwXSxvcmNoaWQ6WzIxOCwxMTIsMjE0XSxwYWxlZ29sZGVucm9kOlsyMzgsMjMyLDE3MF0scGFsZWdyZWVuOlsxNTIsMjUxLDE1Ml0scGFsZXR1cnF1b2lzZTpbMTc1LDIzOCwyMzhdLHBhbGV2aW9sZXRyZWQ6WzIxOSwxMTIsMTQ3XSxwYXBheWF3aGlwOlsyNTUsMjM5LDIxM10scGVhY2hwdWZmOlsyNTUsMjE4LDE4NV0scGVydTpbMjA1LDEzMyw2M10scGluazpbMjU1LDE5MiwyMDNdLHBsdW06WzIyMSwxNjAsMjIxXSxwb3dkZXJibHVlOlsxNzYsMjI0LDIzMF0scHVycGxlOlsxMjgsMCwxMjhdLHJlYmVjY2FwdXJwbGU6WzEwMiw1MSwxNTNdLHJlZDpbMjU1LDAsMF0scm9zeWJyb3duOlsxODgsMTQzLDE0M10scm95YWxibHVlOls2NSwxMDUsMjI1XSxzYWRkbGVicm93bjpbMTM5LDY5LDE5XSxzYWxtb246WzI1MCwxMjgsMTE0XSxzYW5keWJyb3duOlsyNDQsMTY0LDk2XSxzZWFncmVlbjpbNDYsMTM5LDg3XSxzZWFzaGVsbDpbMjU1LDI0NSwyMzhdLHNpZW5uYTpbMTYwLDgyLDQ1XSxzaWx2ZXI6WzE5MiwxOTIsMTkyXSxza3libHVlOlsxMzUsMjA2LDIzNV0sc2xhdGVibHVlOlsxMDYsOTAsMjA1XSxzbGF0ZWdyYXk6WzExMiwxMjgsMTQ0XSxzbGF0ZWdyZXk6WzExMiwxMjgsMTQ0XSxzbm93OlsyNTUsMjUwLDI1MF0sc3ByaW5nZ3JlZW46WzAsMjU1LDEyN10sc3RlZWxibHVlOls3MCwxMzAsMTgwXSx0YW46WzIxMCwxODAsMTQwXSx0ZWFsOlswLDEyOCwxMjhdLHRoaXN0bGU6WzIxNiwxOTEsMjE2XSx0b21hdG86WzI1NSw5OSw3MV0sdHVycXVvaXNlOls2NCwyMjQsMjA4XSx2aW9sZXQ6WzIzOCwxMzAsMjM4XSx3aGVhdDpbMjQ1LDIyMiwxNzldLHdoaXRlOlsyNTUsMjU1LDI1NV0sd2hpdGVzbW9rZTpbMjQ1LDI0NSwyNDVdLHllbGxvdzpbMjU1LDI1NSwwXSx5ZWxsb3dncmVlbjpbMTU0LDIwNSw1MF19LG49ZnVuY3Rpb24odCxlKXtyZXR1cm4gdChlPXtleHBvcnRzOnt9fSksZS5leHBvcnRzfSgoZnVuY3Rpb24odCl7dmFyIG49e307Zm9yKHZhciBpIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShpKSYmKG5bZVtpXV09aSk7dmFyIHI9dC5leHBvcnRzPXtyZ2I6e2NoYW5uZWxzOjMsbGFiZWxzOiJyZ2IifSxoc2w6e2NoYW5uZWxzOjMsbGFiZWxzOiJoc2wifSxoc3Y6e2NoYW5uZWxzOjMsbGFiZWxzOiJoc3YifSxod2I6e2NoYW5uZWxzOjMsbGFiZWxzOiJod2IifSxjbXlrOntjaGFubmVsczo0LGxhYmVsczoiY215ayJ9LHh5ejp7Y2hhbm5lbHM6MyxsYWJlbHM6Inh5eiJ9LGxhYjp7Y2hhbm5lbHM6MyxsYWJlbHM6ImxhYiJ9LGxjaDp7Y2hhbm5lbHM6MyxsYWJlbHM6ImxjaCJ9LGhleDp7Y2hhbm5lbHM6MSxsYWJlbHM6WyJoZXgiXX0sa2V5d29yZDp7Y2hhbm5lbHM6MSxsYWJlbHM6WyJrZXl3b3JkIl19LGFuc2kxNjp7Y2hhbm5lbHM6MSxsYWJlbHM6WyJhbnNpMTYiXX0sYW5zaTI1Njp7Y2hhbm5lbHM6MSxsYWJlbHM6WyJhbnNpMjU2Il19LGhjZzp7Y2hhbm5lbHM6MyxsYWJlbHM6WyJoIiwiYyIsImciXX0sYXBwbGU6e2NoYW5uZWxzOjMsbGFiZWxzOlsicjE2IiwiZzE2IiwiYjE2Il19LGdyYXk6e2NoYW5uZWxzOjEsbGFiZWxzOlsiZ3JheSJdfX07Zm9yKHZhciBvIGluIHIpaWYoci5oYXNPd25Qcm9wZXJ0eShvKSl7aWYoISgiY2hhbm5lbHMiaW4gcltvXSkpdGhyb3cgbmV3IEVycm9yKCJtaXNzaW5nIGNoYW5uZWxzIHByb3BlcnR5OiAiK28pO2lmKCEoImxhYmVscyJpbiByW29dKSl0aHJvdyBuZXcgRXJyb3IoIm1pc3NpbmcgY2hhbm5lbCBsYWJlbHMgcHJvcGVydHk6ICIrbyk7aWYocltvXS5sYWJlbHMubGVuZ3RoIT09cltvXS5jaGFubmVscyl0aHJvdyBuZXcgRXJyb3IoImNoYW5uZWwgYW5kIGxhYmVsIGNvdW50cyBtaXNtYXRjaDogIitvKTt2YXIgYT1yW29dLmNoYW5uZWxzLHM9cltvXS5sYWJlbHM7ZGVsZXRlIHJbb10uY2hhbm5lbHMsZGVsZXRlIHJbb10ubGFiZWxzLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyW29dLCJjaGFubmVscyIse3ZhbHVlOmF9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkocltvXSwibGFiZWxzIix7dmFsdWU6c30pfXIucmdiLmhzbD1mdW5jdGlvbih0KXt2YXIgZSxuLGk9dFswXS8yNTUscj10WzFdLzI1NSxvPXRbMl0vMjU1LGE9TWF0aC5taW4oaSxyLG8pLHM9TWF0aC5tYXgoaSxyLG8pLGw9cy1hO3JldHVybiBzPT09YT9lPTA6aT09PXM/ZT0oci1vKS9sOnI9PT1zP2U9Misoby1pKS9sOm89PT1zJiYoZT00KyhpLXIpL2wpLChlPU1hdGgubWluKDYwKmUsMzYwKSk8MCYmKGUrPTM2MCksbj0oYStzKS8yLFtlLDEwMCoocz09PWE/MDpuPD0uNT9sLyhzK2EpOmwvKDItcy1hKSksMTAwKm5dfSxyLnJnYi5oc3Y9ZnVuY3Rpb24odCl7dmFyIGUsbixpLHIsbyxhPXRbMF0vMjU1LHM9dFsxXS8yNTUsbD10WzJdLzI1NSxjPU1hdGgubWF4KGEscyxsKSx1PWMtTWF0aC5taW4oYSxzLGwpLGQ9ZnVuY3Rpb24odCl7cmV0dXJuKGMtdCkvNi91Ky41fTtyZXR1cm4gMD09PXU/cj1vPTA6KG89dS9jLGU9ZChhKSxuPWQocyksaT1kKGwpLGE9PT1jP3I9aS1uOnM9PT1jP3I9MS8zK2UtaTpsPT09YyYmKHI9Mi8zK24tZSkscjwwP3IrPTE6cj4xJiYoci09MSkpLFszNjAqciwxMDAqbywxMDAqY119LHIucmdiLmh3Yj1mdW5jdGlvbih0KXt2YXIgZT10WzBdLG49dFsxXSxpPXRbMl07cmV0dXJuW3IucmdiLmhzbCh0KVswXSwxLzI1NSpNYXRoLm1pbihlLE1hdGgubWluKG4saSkpKjEwMCwxMDAqKGk9MS0xLzI1NSpNYXRoLm1heChlLE1hdGgubWF4KG4saSkpKV19LHIucmdiLmNteWs9ZnVuY3Rpb24odCl7dmFyIGUsbj10WzBdLzI1NSxpPXRbMV0vMjU1LHI9dFsyXS8yNTU7cmV0dXJuWzEwMCooKDEtbi0oZT1NYXRoLm1pbigxLW4sMS1pLDEtcikpKS8oMS1lKXx8MCksMTAwKigoMS1pLWUpLygxLWUpfHwwKSwxMDAqKCgxLXItZSkvKDEtZSl8fDApLDEwMCplXX0sci5yZ2Iua2V5d29yZD1mdW5jdGlvbih0KXt2YXIgaT1uW3RdO2lmKGkpcmV0dXJuIGk7dmFyIHIsbyxhLHM9MS8wO2Zvcih2YXIgbCBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkobCkpe3ZhciBjPShvPXQsYT1lW2xdLE1hdGgucG93KG9bMF0tYVswXSwyKStNYXRoLnBvdyhvWzFdLWFbMV0sMikrTWF0aC5wb3cob1syXS1hWzJdLDIpKTtjPHMmJihzPWMscj1sKX1yZXR1cm4gcn0sci5rZXl3b3JkLnJnYj1mdW5jdGlvbih0KXtyZXR1cm4gZVt0XX0sci5yZ2IueHl6PWZ1bmN0aW9uKHQpe3ZhciBlPXRbMF0vMjU1LG49dFsxXS8yNTUsaT10WzJdLzI1NTtyZXR1cm5bMTAwKiguNDEyNCooZT1lPi4wNDA0NT9NYXRoLnBvdygoZSsuMDU1KS8xLjA1NSwyLjQpOmUvMTIuOTIpKy4zNTc2KihuPW4+LjA0MDQ1P01hdGgucG93KChuKy4wNTUpLzEuMDU1LDIuNCk6bi8xMi45MikrLjE4MDUqKGk9aT4uMDQwNDU/TWF0aC5wb3coKGkrLjA1NSkvMS4wNTUsMi40KTppLzEyLjkyKSksMTAwKiguMjEyNiplKy43MTUyKm4rLjA3MjIqaSksMTAwKiguMDE5MyplKy4xMTkyKm4rLjk1MDUqaSldfSxyLnJnYi5sYWI9ZnVuY3Rpb24odCl7dmFyIGU9ci5yZ2IueHl6KHQpLG49ZVswXSxpPWVbMV0sbz1lWzJdO3JldHVybiBpLz0xMDAsby89MTA4Ljg4MyxuPShuLz05NS4wNDcpPi4wMDg4NTY/TWF0aC5wb3cobiwxLzMpOjcuNzg3Km4rMTYvMTE2LFsxMTYqKGk9aT4uMDA4ODU2P01hdGgucG93KGksMS8zKTo3Ljc4NyppKzE2LzExNiktMTYsNTAwKihuLWkpLDIwMCooaS0obz1vPi4wMDg4NTY/TWF0aC5wb3cobywxLzMpOjcuNzg3Km8rMTYvMTE2KSldfSxyLmhzbC5yZ2I9ZnVuY3Rpb24odCl7dmFyIGUsbixpLHIsbyxhPXRbMF0vMzYwLHM9dFsxXS8xMDAsbD10WzJdLzEwMDtpZigwPT09cylyZXR1cm5bbz0yNTUqbCxvLG9dO2U9MipsLShuPWw8LjU/bCooMStzKTpsK3MtbCpzKSxyPVswLDAsMF07Zm9yKHZhciBjPTA7YzwzO2MrKykoaT1hKzEvMyotKGMtMSkpPDAmJmkrKyxpPjEmJmktLSxvPTYqaTwxP2UrNioobi1lKSppOjIqaTwxP246MyppPDI/ZSsobi1lKSooMi8zLWkpKjY6ZSxyW2NdPTI1NSpvO3JldHVybiByfSxyLmhzbC5oc3Y9ZnVuY3Rpb24odCl7dmFyIGU9dFswXSxuPXRbMV0vMTAwLGk9dFsyXS8xMDAscj1uLG89TWF0aC5tYXgoaSwuMDEpO3JldHVybiBuKj0oaSo9Mik8PTE/aToyLWkscio9bzw9MT9vOjItbyxbZSwxMDAqKDA9PT1pPzIqci8obytyKToyKm4vKGkrbikpLChpK24pLzIqMTAwXX0sci5oc3YucmdiPWZ1bmN0aW9uKHQpe3ZhciBlPXRbMF0vNjAsbj10WzFdLzEwMCxpPXRbMl0vMTAwLHI9TWF0aC5mbG9vcihlKSU2LG89ZS1NYXRoLmZsb29yKGUpLGE9MjU1KmkqKDEtbikscz0yNTUqaSooMS1uKm8pLGw9MjU1KmkqKDEtbiooMS1vKSk7c3dpdGNoKGkqPTI1NSxyKXtjYXNlIDA6cmV0dXJuW2ksbCxhXTtjYXNlIDE6cmV0dXJuW3MsaSxhXTtjYXNlIDI6cmV0dXJuW2EsaSxsXTtjYXNlIDM6cmV0dXJuW2EscyxpXTtjYXNlIDQ6cmV0dXJuW2wsYSxpXTtjYXNlIDU6cmV0dXJuW2ksYSxzXX19LHIuaHN2LmhzbD1mdW5jdGlvbih0KXt2YXIgZSxuLGkscj10WzBdLG89dFsxXS8xMDAsYT10WzJdLzEwMCxzPU1hdGgubWF4KGEsLjAxKTtyZXR1cm4gaT0oMi1vKSphLG49bypzLFtyLDEwMCoobj0obi89KGU9KDItbykqcyk8PTE/ZToyLWUpfHwwKSwxMDAqKGkvPTIpXX0sci5od2IucmdiPWZ1bmN0aW9uKHQpe3ZhciBlLG4saSxyLG8sYSxzLGw9dFswXS8zNjAsYz10WzFdLzEwMCx1PXRbMl0vMTAwLGQ9Yyt1O3N3aXRjaChkPjEmJihjLz1kLHUvPWQpLGk9NipsLShlPU1hdGguZmxvb3IoNipsKSksMCE9KDEmZSkmJihpPTEtaSkscj1jK2kqKChuPTEtdSktYyksZSl7ZGVmYXVsdDpjYXNlIDY6Y2FzZSAwOm89bixhPXIscz1jO2JyZWFrO2Nhc2UgMTpvPXIsYT1uLHM9YzticmVhaztjYXNlIDI6bz1jLGE9bixzPXI7YnJlYWs7Y2FzZSAzOm89YyxhPXIscz1uO2JyZWFrO2Nhc2UgNDpvPXIsYT1jLHM9bjticmVhaztjYXNlIDU6bz1uLGE9YyxzPXJ9cmV0dXJuWzI1NSpvLDI1NSphLDI1NSpzXX0sci5jbXlrLnJnYj1mdW5jdGlvbih0KXt2YXIgZT10WzBdLzEwMCxuPXRbMV0vMTAwLGk9dFsyXS8xMDAscj10WzNdLzEwMDtyZXR1cm5bMjU1KigxLU1hdGgubWluKDEsZSooMS1yKStyKSksMjU1KigxLU1hdGgubWluKDEsbiooMS1yKStyKSksMjU1KigxLU1hdGgubWluKDEsaSooMS1yKStyKSldfSxyLnh5ei5yZ2I9ZnVuY3Rpb24odCl7dmFyIGUsbixpLHI9dFswXS8xMDAsbz10WzFdLzEwMCxhPXRbMl0vMTAwO3JldHVybiBuPS0uOTY4OSpyKzEuODc1OCpvKy4wNDE1KmEsaT0uMDU1NypyKy0uMjA0Km8rMS4wNTcqYSxlPShlPTMuMjQwNipyKy0xLjUzNzIqbystLjQ5ODYqYSk+LjAwMzEzMDg/MS4wNTUqTWF0aC5wb3coZSwxLzIuNCktLjA1NToxMi45MiplLG49bj4uMDAzMTMwOD8xLjA1NSpNYXRoLnBvdyhuLDEvMi40KS0uMDU1OjEyLjkyKm4saT1pPi4wMDMxMzA4PzEuMDU1Kk1hdGgucG93KGksMS8yLjQpLS4wNTU6MTIuOTIqaSxbMjU1KihlPU1hdGgubWluKE1hdGgubWF4KDAsZSksMSkpLDI1NSoobj1NYXRoLm1pbihNYXRoLm1heCgwLG4pLDEpKSwyNTUqKGk9TWF0aC5taW4oTWF0aC5tYXgoMCxpKSwxKSldfSxyLnh5ei5sYWI9ZnVuY3Rpb24odCl7dmFyIGU9dFswXSxuPXRbMV0saT10WzJdO3JldHVybiBuLz0xMDAsaS89MTA4Ljg4MyxlPShlLz05NS4wNDcpPi4wMDg4NTY/TWF0aC5wb3coZSwxLzMpOjcuNzg3KmUrMTYvMTE2LFsxMTYqKG49bj4uMDA4ODU2P01hdGgucG93KG4sMS8zKTo3Ljc4NypuKzE2LzExNiktMTYsNTAwKihlLW4pLDIwMCoobi0oaT1pPi4wMDg4NTY/TWF0aC5wb3coaSwxLzMpOjcuNzg3KmkrMTYvMTE2KSldfSxyLmxhYi54eXo9ZnVuY3Rpb24odCl7dmFyIGUsbixpLHI9dFswXTtlPXRbMV0vNTAwKyhuPShyKzE2KS8xMTYpLGk9bi10WzJdLzIwMDt2YXIgbz1NYXRoLnBvdyhuLDMpLGE9TWF0aC5wb3coZSwzKSxzPU1hdGgucG93KGksMyk7cmV0dXJuIG49bz4uMDA4ODU2P286KG4tMTYvMTE2KS83Ljc4NyxlPWE+LjAwODg1Nj9hOihlLTE2LzExNikvNy43ODcsaT1zPi4wMDg4NTY/czooaS0xNi8xMTYpLzcuNzg3LFtlKj05NS4wNDcsbio9MTAwLGkqPTEwOC44ODNdfSxyLmxhYi5sY2g9ZnVuY3Rpb24odCl7dmFyIGUsbj10WzBdLGk9dFsxXSxyPXRbMl07cmV0dXJuKGU9MzYwKk1hdGguYXRhbjIocixpKS8yL01hdGguUEkpPDAmJihlKz0zNjApLFtuLE1hdGguc3FydChpKmkrcipyKSxlXX0sci5sY2gubGFiPWZ1bmN0aW9uKHQpe3ZhciBlLG49dFswXSxpPXRbMV07cmV0dXJuIGU9dFsyXS8zNjAqMipNYXRoLlBJLFtuLGkqTWF0aC5jb3MoZSksaSpNYXRoLnNpbihlKV19LHIucmdiLmFuc2kxNj1mdW5jdGlvbih0KXt2YXIgZT10WzBdLG49dFsxXSxpPXRbMl0sbz0xIGluIGFyZ3VtZW50cz9hcmd1bWVudHNbMV06ci5yZ2IuaHN2KHQpWzJdO2lmKDA9PT0obz1NYXRoLnJvdW5kKG8vNTApKSlyZXR1cm4gMzA7dmFyIGE9MzArKE1hdGgucm91bmQoaS8yNTUpPDwyfE1hdGgucm91bmQobi8yNTUpPDwxfE1hdGgucm91bmQoZS8yNTUpKTtyZXR1cm4gMj09PW8mJihhKz02MCksYX0sci5oc3YuYW5zaTE2PWZ1bmN0aW9uKHQpe3JldHVybiByLnJnYi5hbnNpMTYoci5oc3YucmdiKHQpLHRbMl0pfSxyLnJnYi5hbnNpMjU2PWZ1bmN0aW9uKHQpe3ZhciBlPXRbMF0sbj10WzFdLGk9dFsyXTtyZXR1cm4gZT09PW4mJm49PT1pP2U8OD8xNjplPjI0OD8yMzE6TWF0aC5yb3VuZCgoZS04KS8yNDcqMjQpKzIzMjoxNiszNipNYXRoLnJvdW5kKGUvMjU1KjUpKzYqTWF0aC5yb3VuZChuLzI1NSo1KStNYXRoLnJvdW5kKGkvMjU1KjUpfSxyLmFuc2kxNi5yZ2I9ZnVuY3Rpb24odCl7dmFyIGU9dCUxMDtpZigwPT09ZXx8Nz09PWUpcmV0dXJuIHQ+NTAmJihlKz0zLjUpLFtlPWUvMTAuNSoyNTUsZSxlXTt2YXIgbj0uNSooMSt+fih0PjUwKSk7cmV0dXJuWygxJmUpKm4qMjU1LChlPj4xJjEpKm4qMjU1LChlPj4yJjEpKm4qMjU1XX0sci5hbnNpMjU2LnJnYj1mdW5jdGlvbih0KXtpZih0Pj0yMzIpe3ZhciBlPTEwKih0LTIzMikrODtyZXR1cm5bZSxlLGVdfXZhciBuO3JldHVybiB0LT0xNixbTWF0aC5mbG9vcih0LzM2KS81KjI1NSxNYXRoLmZsb29yKChuPXQlMzYpLzYpLzUqMjU1LG4lNi81KjI1NV19LHIucmdiLmhleD1mdW5jdGlvbih0KXt2YXIgZT0oKCgyNTUmTWF0aC5yb3VuZCh0WzBdKSk8PDE2KSsoKDI1NSZNYXRoLnJvdW5kKHRbMV0pKTw8OCkrKDI1NSZNYXRoLnJvdW5kKHRbMl0pKSkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7cmV0dXJuIjAwMDAwMCIuc3Vic3RyaW5nKGUubGVuZ3RoKStlfSxyLmhleC5yZ2I9ZnVuY3Rpb24odCl7dmFyIGU9dC50b1N0cmluZygxNikubWF0Y2goL1thLWYwLTldezZ9fFthLWYwLTldezN9L2kpO2lmKCFlKXJldHVyblswLDAsMF07dmFyIG49ZVswXTszPT09ZVswXS5sZW5ndGgmJihuPW4uc3BsaXQoIiIpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHQrdH0pKS5qb2luKCIiKSk7dmFyIGk9cGFyc2VJbnQobiwxNik7cmV0dXJuW2k+PjE2JjI1NSxpPj44JjI1NSwyNTUmaV19LHIucmdiLmhjZz1mdW5jdGlvbih0KXt2YXIgZSxuPXRbMF0vMjU1LGk9dFsxXS8yNTUscj10WzJdLzI1NSxvPU1hdGgubWF4KE1hdGgubWF4KG4saSksciksYT1NYXRoLm1pbihNYXRoLm1pbihuLGkpLHIpLHM9by1hO3JldHVybiBlPXM8PTA/MDpvPT09bj8oaS1yKS9zJTY6bz09PWk/Misoci1uKS9zOjQrKG4taSkvcys0LGUvPTYsWzM2MCooZSU9MSksMTAwKnMsMTAwKihzPDE/YS8oMS1zKTowKV19LHIuaHNsLmhjZz1mdW5jdGlvbih0KXt2YXIgZSxuPXRbMV0vMTAwLGk9dFsyXS8xMDAscj0wO3JldHVybihlPWk8LjU/MipuKmk6MipuKigxLWkpKTwxJiYocj0oaS0uNSplKS8oMS1lKSksW3RbMF0sMTAwKmUsMTAwKnJdfSxyLmhzdi5oY2c9ZnVuY3Rpb24odCl7dmFyIGU9dFsxXS8xMDAsbj10WzJdLzEwMCxpPWUqbixyPTA7cmV0dXJuIGk8MSYmKHI9KG4taSkvKDEtaSkpLFt0WzBdLDEwMCppLDEwMCpyXX0sci5oY2cucmdiPWZ1bmN0aW9uKHQpe3ZhciBlPXRbMF0vMzYwLG49dFsxXS8xMDAsaT10WzJdLzEwMDtpZigwPT09bilyZXR1cm5bMjU1KmksMjU1KmksMjU1KmldO3ZhciByLG89WzAsMCwwXSxhPWUlMSo2LHM9YSUxLGw9MS1zO3N3aXRjaChNYXRoLmZsb29yKGEpKXtjYXNlIDA6b1swXT0xLG9bMV09cyxvWzJdPTA7YnJlYWs7Y2FzZSAxOm9bMF09bCxvWzFdPTEsb1syXT0wO2JyZWFrO2Nhc2UgMjpvWzBdPTAsb1sxXT0xLG9bMl09czticmVhaztjYXNlIDM6b1swXT0wLG9bMV09bCxvWzJdPTE7YnJlYWs7Y2FzZSA0Om9bMF09cyxvWzFdPTAsb1syXT0xO2JyZWFrO2RlZmF1bHQ6b1swXT0xLG9bMV09MCxvWzJdPWx9cmV0dXJuIHI9KDEtbikqaSxbMjU1KihuKm9bMF0rciksMjU1KihuKm9bMV0rciksMjU1KihuKm9bMl0rcildfSxyLmhjZy5oc3Y9ZnVuY3Rpb24odCl7dmFyIGU9dFsxXS8xMDAsbj1lK3RbMl0vMTAwKigxLWUpLGk9MDtyZXR1cm4gbj4wJiYoaT1lL24pLFt0WzBdLDEwMCppLDEwMCpuXX0sci5oY2cuaHNsPWZ1bmN0aW9uKHQpe3ZhciBlPXRbMV0vMTAwLG49dFsyXS8xMDAqKDEtZSkrLjUqZSxpPTA7cmV0dXJuIG4+MCYmbjwuNT9pPWUvKDIqbik6bj49LjUmJm48MSYmKGk9ZS8oMiooMS1uKSkpLFt0WzBdLDEwMCppLDEwMCpuXX0sci5oY2cuaHdiPWZ1bmN0aW9uKHQpe3ZhciBlPXRbMV0vMTAwLG49ZSt0WzJdLzEwMCooMS1lKTtyZXR1cm5bdFswXSwxMDAqKG4tZSksMTAwKigxLW4pXX0sci5od2IuaGNnPWZ1bmN0aW9uKHQpe3ZhciBlPXRbMV0vMTAwLG49MS10WzJdLzEwMCxpPW4tZSxyPTA7cmV0dXJuIGk8MSYmKHI9KG4taSkvKDEtaSkpLFt0WzBdLDEwMCppLDEwMCpyXX0sci5hcHBsZS5yZ2I9ZnVuY3Rpb24odCl7cmV0dXJuW3RbMF0vNjU1MzUqMjU1LHRbMV0vNjU1MzUqMjU1LHRbMl0vNjU1MzUqMjU1XX0sci5yZ2IuYXBwbGU9ZnVuY3Rpb24odCl7cmV0dXJuW3RbMF0vMjU1KjY1NTM1LHRbMV0vMjU1KjY1NTM1LHRbMl0vMjU1KjY1NTM1XX0sci5ncmF5LnJnYj1mdW5jdGlvbih0KXtyZXR1cm5bdFswXS8xMDAqMjU1LHRbMF0vMTAwKjI1NSx0WzBdLzEwMCoyNTVdfSxyLmdyYXkuaHNsPXIuZ3JheS5oc3Y9ZnVuY3Rpb24odCl7cmV0dXJuWzAsMCx0WzBdXX0sci5ncmF5Lmh3Yj1mdW5jdGlvbih0KXtyZXR1cm5bMCwxMDAsdFswXV19LHIuZ3JheS5jbXlrPWZ1bmN0aW9uKHQpe3JldHVyblswLDAsMCx0WzBdXX0sci5ncmF5LmxhYj1mdW5jdGlvbih0KXtyZXR1cm5bdFswXSwwLDBdfSxyLmdyYXkuaGV4PWZ1bmN0aW9uKHQpe3ZhciBlPTI1NSZNYXRoLnJvdW5kKHRbMF0vMTAwKjI1NSksbj0oKGU8PDE2KSsoZTw8OCkrZSkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7cmV0dXJuIjAwMDAwMCIuc3Vic3RyaW5nKG4ubGVuZ3RoKStufSxyLnJnYi5ncmF5PWZ1bmN0aW9uKHQpe3JldHVyblsodFswXSt0WzFdK3RbMl0pLzMvMjU1KjEwMF19fSkpO2Z1bmN0aW9uIGkodCl7dmFyIGU9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9e30sZT1PYmplY3Qua2V5cyhuKSxpPWUubGVuZ3RoLHI9MDtyPGk7cisrKXRbZVtyXV09e2Rpc3RhbmNlOi0xLHBhcmVudDpudWxsfTtyZXR1cm4gdH0oKSxpPVt0XTtmb3IoZVt0XS5kaXN0YW5jZT0wO2kubGVuZ3RoOylmb3IodmFyIHI9aS5wb3AoKSxvPU9iamVjdC5rZXlzKG5bcl0pLGE9by5sZW5ndGgscz0wO3M8YTtzKyspe3ZhciBsPW9bc10sYz1lW2xdOy0xPT09Yy5kaXN0YW5jZSYmKGMuZGlzdGFuY2U9ZVtyXS5kaXN0YW5jZSsxLGMucGFyZW50PXIsaS51bnNoaWZ0KGwpKX1yZXR1cm4gZX1mdW5jdGlvbiByKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBlKHQobikpfX1mdW5jdGlvbiBvKHQsZSl7Zm9yKHZhciBpPVtlW3RdLnBhcmVudCx0XSxvPW5bZVt0XS5wYXJlbnRdW3RdLGE9ZVt0XS5wYXJlbnQ7ZVthXS5wYXJlbnQ7KWkudW5zaGlmdChlW2FdLnBhcmVudCksbz1yKG5bZVthXS5wYXJlbnRdW2FdLG8pLGE9ZVthXS5wYXJlbnQ7cmV0dXJuIG8uY29udmVyc2lvbj1pLG99bi5yZ2Isbi5oc2wsbi5oc3Ysbi5od2Isbi5jbXlrLG4ueHl6LG4ubGFiLG4ubGNoLG4uaGV4LG4ua2V5d29yZCxuLmFuc2kxNixuLmFuc2kyNTYsbi5oY2csbi5hcHBsZSxuLmdyYXk7dmFyIGE9e307T2JqZWN0LmtleXMobikuZm9yRWFjaCgoZnVuY3Rpb24odCl7YVt0XT17fSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYVt0XSwiY2hhbm5lbHMiLHt2YWx1ZTpuW3RdLmNoYW5uZWxzfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGFbdF0sImxhYmVscyIse3ZhbHVlOm5bdF0ubGFiZWxzfSk7dmFyIGU9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPWkodCksbj17fSxyPU9iamVjdC5rZXlzKGUpLGE9ci5sZW5ndGgscz0wO3M8YTtzKyspe3ZhciBsPXJbc107bnVsbCE9PWVbbF0ucGFyZW50JiYobltsXT1vKGwsZSkpfXJldHVybiBufSh0KTtPYmplY3Qua2V5cyhlKS5mb3JFYWNoKChmdW5jdGlvbihuKXt2YXIgaT1lW25dO2FbdF1bbl09ZnVuY3Rpb24odCl7dmFyIGU9ZnVuY3Rpb24oZSl7aWYobnVsbD09ZSlyZXR1cm4gZTthcmd1bWVudHMubGVuZ3RoPjEmJihlPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpO3ZhciBuPXQoZSk7aWYoIm9iamVjdCI9PXR5cGVvZiBuKWZvcih2YXIgaT1uLmxlbmd0aCxyPTA7cjxpO3IrKyluW3JdPU1hdGgucm91bmQobltyXSk7cmV0dXJuIG59O3JldHVybiJjb252ZXJzaW9uImluIHQmJihlLmNvbnZlcnNpb249dC5jb252ZXJzaW9uKSxlfShpKSxhW3RdW25dLnJhdz1mdW5jdGlvbih0KXt2YXIgZT1mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT9lOihhcmd1bWVudHMubGVuZ3RoPjEmJihlPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpLHQoZSkpfTtyZXR1cm4iY29udmVyc2lvbiJpbiB0JiYoZS5jb252ZXJzaW9uPXQuY29udmVyc2lvbiksZX0oaSl9KSl9KSk7dmFyIHM9YSxsPXthbGljZWJsdWU6WzI0MCwyNDgsMjU1XSxhbnRpcXVld2hpdGU6WzI1MCwyMzUsMjE1XSxhcXVhOlswLDI1NSwyNTVdLGFxdWFtYXJpbmU6WzEyNywyNTUsMjEyXSxhenVyZTpbMjQwLDI1NSwyNTVdLGJlaWdlOlsyNDUsMjQ1LDIyMF0sYmlzcXVlOlsyNTUsMjI4LDE5Nl0sYmxhY2s6WzAsMCwwXSxibGFuY2hlZGFsbW9uZDpbMjU1LDIzNSwyMDVdLGJsdWU6WzAsMCwyNTVdLGJsdWV2aW9sZXQ6WzEzOCw0MywyMjZdLGJyb3duOlsxNjUsNDIsNDJdLGJ1cmx5d29vZDpbMjIyLDE4NCwxMzVdLGNhZGV0Ymx1ZTpbOTUsMTU4LDE2MF0sY2hhcnRyZXVzZTpbMTI3LDI1NSwwXSxjaG9jb2xhdGU6WzIxMCwxMDUsMzBdLGNvcmFsOlsyNTUsMTI3LDgwXSxjb3JuZmxvd2VyYmx1ZTpbMTAwLDE0OSwyMzddLGNvcm5zaWxrOlsyNTUsMjQ4LDIyMF0sY3JpbXNvbjpbMjIwLDIwLDYwXSxjeWFuOlswLDI1NSwyNTVdLGRhcmtibHVlOlswLDAsMTM5XSxkYXJrY3lhbjpbMCwxMzksMTM5XSxkYXJrZ29sZGVucm9kOlsxODQsMTM0LDExXSxkYXJrZ3JheTpbMTY5LDE2OSwxNjldLGRhcmtncmVlbjpbMCwxMDAsMF0sZGFya2dyZXk6WzE2OSwxNjksMTY5XSxkYXJra2hha2k6WzE4OSwxODMsMTA3XSxkYXJrbWFnZW50YTpbMTM5LDAsMTM5XSxkYXJrb2xpdmVncmVlbjpbODUsMTA3LDQ3XSxkYXJrb3JhbmdlOlsyNTUsMTQwLDBdLGRhcmtvcmNoaWQ6WzE1Myw1MCwyMDRdLGRhcmtyZWQ6WzEzOSwwLDBdLGRhcmtzYWxtb246WzIzMywxNTAsMTIyXSxkYXJrc2VhZ3JlZW46WzE0MywxODgsMTQzXSxkYXJrc2xhdGVibHVlOls3Miw2MSwxMzldLGRhcmtzbGF0ZWdyYXk6WzQ3LDc5LDc5XSxkYXJrc2xhdGVncmV5Ols0Nyw3OSw3OV0sZGFya3R1cnF1b2lzZTpbMCwyMDYsMjA5XSxkYXJrdmlvbGV0OlsxNDgsMCwyMTFdLGRlZXBwaW5rOlsyNTUsMjAsMTQ3XSxkZWVwc2t5Ymx1ZTpbMCwxOTEsMjU1XSxkaW1ncmF5OlsxMDUsMTA1LDEwNV0sZGltZ3JleTpbMTA1LDEwNSwxMDVdLGRvZGdlcmJsdWU6WzMwLDE0NCwyNTVdLGZpcmVicmljazpbMTc4LDM0LDM0XSxmbG9yYWx3aGl0ZTpbMjU1LDI1MCwyNDBdLGZvcmVzdGdyZWVuOlszNCwxMzksMzRdLGZ1Y2hzaWE6WzI1NSwwLDI1NV0sZ2FpbnNib3JvOlsyMjAsMjIwLDIyMF0sZ2hvc3R3aGl0ZTpbMjQ4LDI0OCwyNTVdLGdvbGQ6WzI1NSwyMTUsMF0sZ29sZGVucm9kOlsyMTgsMTY1LDMyXSxncmF5OlsxMjgsMTI4LDEyOF0sZ3JlZW46WzAsMTI4LDBdLGdyZWVueWVsbG93OlsxNzMsMjU1LDQ3XSxncmV5OlsxMjgsMTI4LDEyOF0saG9uZXlkZXc6WzI0MCwyNTUsMjQwXSxob3RwaW5rOlsyNTUsMTA1LDE4MF0saW5kaWFucmVkOlsyMDUsOTIsOTJdLGluZGlnbzpbNzUsMCwxMzBdLGl2b3J5OlsyNTUsMjU1LDI0MF0sa2hha2k6WzI0MCwyMzAsMTQwXSxsYXZlbmRlcjpbMjMwLDIzMCwyNTBdLGxhdmVuZGVyYmx1c2g6WzI1NSwyNDAsMjQ1XSxsYXduZ3JlZW46WzEyNCwyNTIsMF0sbGVtb25jaGlmZm9uOlsyNTUsMjUwLDIwNV0sbGlnaHRibHVlOlsxNzMsMjE2LDIzMF0sbGlnaHRjb3JhbDpbMjQwLDEyOCwxMjhdLGxpZ2h0Y3lhbjpbMjI0LDI1NSwyNTVdLGxpZ2h0Z29sZGVucm9keWVsbG93OlsyNTAsMjUwLDIxMF0sbGlnaHRncmF5OlsyMTEsMjExLDIxMV0sbGlnaHRncmVlbjpbMTQ0LDIzOCwxNDRdLGxpZ2h0Z3JleTpbMjExLDIxMSwyMTFdLGxpZ2h0cGluazpbMjU1LDE4MiwxOTNdLGxpZ2h0c2FsbW9uOlsyNTUsMTYwLDEyMl0sbGlnaHRzZWFncmVlbjpbMzIsMTc4LDE3MF0sbGlnaHRza3libHVlOlsxMzUsMjA2LDI1MF0sbGlnaHRzbGF0ZWdyYXk6WzExOSwxMzYsMTUzXSxsaWdodHNsYXRlZ3JleTpbMTE5LDEzNiwxNTNdLGxpZ2h0c3RlZWxibHVlOlsxNzYsMTk2LDIyMl0sbGlnaHR5ZWxsb3c6WzI1NSwyNTUsMjI0XSxsaW1lOlswLDI1NSwwXSxsaW1lZ3JlZW46WzUwLDIwNSw1MF0sbGluZW46WzI1MCwyNDAsMjMwXSxtYWdlbnRhOlsyNTUsMCwyNTVdLG1hcm9vbjpbMTI4LDAsMF0sbWVkaXVtYXF1YW1hcmluZTpbMTAyLDIwNSwxNzBdLG1lZGl1bWJsdWU6WzAsMCwyMDVdLG1lZGl1bW9yY2hpZDpbMTg2LDg1LDIxMV0sbWVkaXVtcHVycGxlOlsxNDcsMTEyLDIxOV0sbWVkaXVtc2VhZ3JlZW46WzYwLDE3OSwxMTNdLG1lZGl1bXNsYXRlYmx1ZTpbMTIzLDEwNCwyMzhdLG1lZGl1bXNwcmluZ2dyZWVuOlswLDI1MCwxNTRdLG1lZGl1bXR1cnF1b2lzZTpbNzIsMjA5LDIwNF0sbWVkaXVtdmlvbGV0cmVkOlsxOTksMjEsMTMzXSxtaWRuaWdodGJsdWU6WzI1LDI1LDExMl0sbWludGNyZWFtOlsyNDUsMjU1LDI1MF0sbWlzdHlyb3NlOlsyNTUsMjI4LDIyNV0sbW9jY2FzaW46WzI1NSwyMjgsMTgxXSxuYXZham93aGl0ZTpbMjU1LDIyMiwxNzNdLG5hdnk6WzAsMCwxMjhdLG9sZGxhY2U6WzI1MywyNDUsMjMwXSxvbGl2ZTpbMTI4LDEyOCwwXSxvbGl2ZWRyYWI6WzEwNywxNDIsMzVdLG9yYW5nZTpbMjU1LDE2NSwwXSxvcmFuZ2VyZWQ6WzI1NSw2OSwwXSxvcmNoaWQ6WzIxOCwxMTIsMjE0XSxwYWxlZ29sZGVucm9kOlsyMzgsMjMyLDE3MF0scGFsZWdyZWVuOlsxNTIsMjUxLDE1Ml0scGFsZXR1cnF1b2lzZTpbMTc1LDIzOCwyMzhdLHBhbGV2aW9sZXRyZWQ6WzIxOSwxMTIsMTQ3XSxwYXBheWF3aGlwOlsyNTUsMjM5LDIxM10scGVhY2hwdWZmOlsyNTUsMjE4LDE4NV0scGVydTpbMjA1LDEzMyw2M10scGluazpbMjU1LDE5MiwyMDNdLHBsdW06WzIyMSwxNjAsMjIxXSxwb3dkZXJibHVlOlsxNzYsMjI0LDIzMF0scHVycGxlOlsxMjgsMCwxMjhdLHJlYmVjY2FwdXJwbGU6WzEwMiw1MSwxNTNdLHJlZDpbMjU1LDAsMF0scm9zeWJyb3duOlsxODgsMTQzLDE0M10scm95YWxibHVlOls2NSwxMDUsMjI1XSxzYWRkbGVicm93bjpbMTM5LDY5LDE5XSxzYWxtb246WzI1MCwxMjgsMTE0XSxzYW5keWJyb3duOlsyNDQsMTY0LDk2XSxzZWFncmVlbjpbNDYsMTM5LDg3XSxzZWFzaGVsbDpbMjU1LDI0NSwyMzhdLHNpZW5uYTpbMTYwLDgyLDQ1XSxzaWx2ZXI6WzE5MiwxOTIsMTkyXSxza3libHVlOlsxMzUsMjA2LDIzNV0sc2xhdGVibHVlOlsxMDYsOTAsMjA1XSxzbGF0ZWdyYXk6WzExMiwxMjgsMTQ0XSxzbGF0ZWdyZXk6WzExMiwxMjgsMTQ0XSxzbm93OlsyNTUsMjUwLDI1MF0sc3ByaW5nZ3JlZW46WzAsMjU1LDEyN10sc3RlZWxibHVlOls3MCwxMzAsMTgwXSx0YW46WzIxMCwxODAsMTQwXSx0ZWFsOlswLDEyOCwxMjhdLHRoaXN0bGU6WzIxNiwxOTEsMjE2XSx0b21hdG86WzI1NSw5OSw3MV0sdHVycXVvaXNlOls2NCwyMjQsMjA4XSx2aW9sZXQ6WzIzOCwxMzAsMjM4XSx3aGVhdDpbMjQ1LDIyMiwxNzldLHdoaXRlOlsyNTUsMjU1LDI1NV0sd2hpdGVzbW9rZTpbMjQ1LDI0NSwyNDVdLHllbGxvdzpbMjU1LDI1NSwwXSx5ZWxsb3dncmVlbjpbMTU0LDIwNSw1MF19LGM9e2dldFJnYmE6dSxnZXRIc2xhOmQsZ2V0UmdiOmZ1bmN0aW9uKHQpe3ZhciBlPXUodCk7cmV0dXJuIGUmJmUuc2xpY2UoMCwzKX0sZ2V0SHNsOmZ1bmN0aW9uKHQpe3ZhciBlPWQodCk7cmV0dXJuIGUmJmUuc2xpY2UoMCwzKX0sZ2V0SHdiOmgsZ2V0QWxwaGE6ZnVuY3Rpb24odCl7dmFyIGU9dSh0KTtyZXR1cm4gZXx8KGU9ZCh0KSl8fChlPWgodCkpP2VbM106dm9pZCAwfSxoZXhTdHJpbmc6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZT12b2lkIDAhPT1lJiYzPT09dC5sZW5ndGg/ZTp0WzNdLCIjIit2KHRbMF0pK3YodFsxXSkrdih0WzJdKSsoZT49MCYmZTwxP3YoTWF0aC5yb3VuZCgyNTUqZSkpOiIiKX0scmdiU3RyaW5nOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGU8MXx8dFszXSYmdFszXTwxP2YodCxlKToicmdiKCIrdFswXSsiLCAiK3RbMV0rIiwgIit0WzJdKyIpIn0scmdiYVN0cmluZzpmLHBlcmNlbnRTdHJpbmc6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZTwxfHx0WzNdJiZ0WzNdPDE/cCh0LGUpOiJyZ2IoIitNYXRoLnJvdW5kKHRbMF0vMjU1KjEwMCkrIiUsICIrTWF0aC5yb3VuZCh0WzFdLzI1NSoxMDApKyIlLCAiK01hdGgucm91bmQodFsyXS8yNTUqMTAwKSsiJSkifSxwZXJjZW50YVN0cmluZzpwLGhzbFN0cmluZzpmdW5jdGlvbih0LGUpe3JldHVybiBlPDF8fHRbM10mJnRbM108MT9nKHQsZSk6ImhzbCgiK3RbMF0rIiwgIit0WzFdKyIlLCAiK3RbMl0rIiUpIn0saHNsYVN0cmluZzpnLGh3YlN0cmluZzpmdW5jdGlvbih0LGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT12b2lkIDAhPT10WzNdP3RbM106MSksImh3YigiK3RbMF0rIiwgIit0WzFdKyIlLCAiK3RbMl0rIiUiKyh2b2lkIDAhPT1lJiYxIT09ZT8iLCAiK2U6IiIpKyIpIn0sa2V5d29yZDpmdW5jdGlvbih0KXtyZXR1cm4geVt0LnNsaWNlKDAsMyldfX07ZnVuY3Rpb24gdSh0KXtpZih0KXt2YXIgZT1bMCwwLDBdLG49MSxpPXQubWF0Y2goL14jKFthLWZBLUYwLTldezMsNH0pJC9pKSxyPSIiO2lmKGkpe3I9KGk9aVsxXSlbM107Zm9yKHZhciBvPTA7bzxlLmxlbmd0aDtvKyspZVtvXT1wYXJzZUludChpW29dK2lbb10sMTYpO3ImJihuPU1hdGgucm91bmQocGFyc2VJbnQocityLDE2KS8yNTUqMTAwKS8xMDApfWVsc2UgaWYoaT10Lm1hdGNoKC9eIyhbYS1mQS1GMC05XXs2fShbYS1mQS1GMC05XXsyfSk/KSQvaSkpe2ZvcihyPWlbMl0saT1pWzFdLG89MDtvPGUubGVuZ3RoO28rKyllW29dPXBhcnNlSW50KGkuc2xpY2UoMipvLDIqbysyKSwxNik7ciYmKG49TWF0aC5yb3VuZChwYXJzZUludChyLDE2KS8yNTUqMTAwKS8xMDApfWVsc2UgaWYoaT10Lm1hdGNoKC9ecmdiYT9cKFxzKihbKy1dP1xkKylccyosXHMqKFsrLV0/XGQrKVxzKixccyooWystXT9cZCspXHMqKD86LFxzKihbKy1dP1tcZFwuXSspXHMqKT9cKSQvaSkpe2ZvcihvPTA7bzxlLmxlbmd0aDtvKyspZVtvXT1wYXJzZUludChpW28rMV0pO249cGFyc2VGbG9hdChpWzRdKX1lbHNlIGlmKGk9dC5tYXRjaCgvXnJnYmE/XChccyooWystXT9bXGRcLl0rKVwlXHMqLFxzKihbKy1dP1tcZFwuXSspXCVccyosXHMqKFsrLV0/W1xkXC5dKylcJVxzKig/OixccyooWystXT9bXGRcLl0rKVxzKik/XCkkL2kpKXtmb3Iobz0wO288ZS5sZW5ndGg7bysrKWVbb109TWF0aC5yb3VuZCgyLjU1KnBhcnNlRmxvYXQoaVtvKzFdKSk7bj1wYXJzZUZsb2F0KGlbNF0pfWVsc2UgaWYoaT10Lm1hdGNoKC8oXHcrKS8pKXtpZigidHJhbnNwYXJlbnQiPT1pWzFdKXJldHVyblswLDAsMCwwXTtpZighKGU9bFtpWzFdXSkpcmV0dXJufWZvcihvPTA7bzxlLmxlbmd0aDtvKyspZVtvXT1tKGVbb10sMCwyNTUpO3JldHVybiBuPW58fDA9PW4/bShuLDAsMSk6MSxlWzNdPW4sZX19ZnVuY3Rpb24gZCh0KXtpZih0KXt2YXIgZT10Lm1hdGNoKC9eaHNsYT9cKFxzKihbKy1dP1xkKykoPzpkZWcpP1xzKixccyooWystXT9bXGRcLl0rKSVccyosXHMqKFsrLV0/W1xkXC5dKyklXHMqKD86LFxzKihbKy1dP1tcZFwuXSspXHMqKT9cKS8pO2lmKGUpe3ZhciBuPXBhcnNlRmxvYXQoZVs0XSk7cmV0dXJuW20ocGFyc2VJbnQoZVsxXSksMCwzNjApLG0ocGFyc2VGbG9hdChlWzJdKSwwLDEwMCksbShwYXJzZUZsb2F0KGVbM10pLDAsMTAwKSxtKGlzTmFOKG4pPzE6biwwLDEpXX19fWZ1bmN0aW9uIGgodCl7aWYodCl7dmFyIGU9dC5tYXRjaCgvXmh3YlwoXHMqKFsrLV0/XGQrKSg/OmRlZyk/XHMqLFxzKihbKy1dP1tcZFwuXSspJVxzKixccyooWystXT9bXGRcLl0rKSVccyooPzosXHMqKFsrLV0/W1xkXC5dKylccyopP1wpLyk7aWYoZSl7dmFyIG49cGFyc2VGbG9hdChlWzRdKTtyZXR1cm5bbShwYXJzZUludChlWzFdKSwwLDM2MCksbShwYXJzZUZsb2F0KGVbMl0pLDAsMTAwKSxtKHBhcnNlRmxvYXQoZVszXSksMCwxMDApLG0oaXNOYU4obik/MTpuLDAsMSldfX19ZnVuY3Rpb24gZih0LGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT12b2lkIDAhPT10WzNdP3RbM106MSksInJnYmEoIit0WzBdKyIsICIrdFsxXSsiLCAiK3RbMl0rIiwgIitlKyIpIn1mdW5jdGlvbiBwKHQsZSl7cmV0dXJuInJnYmEoIitNYXRoLnJvdW5kKHRbMF0vMjU1KjEwMCkrIiUsICIrTWF0aC5yb3VuZCh0WzFdLzI1NSoxMDApKyIlLCAiK01hdGgucm91bmQodFsyXS8yNTUqMTAwKSsiJSwgIisoZXx8dFszXXx8MSkrIikifWZ1bmN0aW9uIGcodCxlKXtyZXR1cm4gdm9pZCAwPT09ZSYmKGU9dm9pZCAwIT09dFszXT90WzNdOjEpLCJoc2xhKCIrdFswXSsiLCAiK3RbMV0rIiUsICIrdFsyXSsiJSwgIitlKyIpIn1mdW5jdGlvbiBtKHQsZSxuKXtyZXR1cm4gTWF0aC5taW4oTWF0aC5tYXgoZSx0KSxuKX1mdW5jdGlvbiB2KHQpe3ZhciBlPXQudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7cmV0dXJuIGUubGVuZ3RoPDI/IjAiK2U6ZX12YXIgeT17fTtmb3IodmFyIGIgaW4gbCl5W2xbYl1dPWI7dmFyIHc9ZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiB3P3Q6dGhpcyBpbnN0YW5jZW9mIHc/KHRoaXMudmFsaWQ9ITEsdGhpcy52YWx1ZXM9e3JnYjpbMCwwLDBdLGhzbDpbMCwwLDBdLGhzdjpbMCwwLDBdLGh3YjpbMCwwLDBdLGNteWs6WzAsMCwwLDBdLGFscGhhOjF9LHZvaWQoInN0cmluZyI9PXR5cGVvZiB0PyhlPWMuZ2V0UmdiYSh0KSk/dGhpcy5zZXRWYWx1ZXMoInJnYiIsZSk6KGU9Yy5nZXRIc2xhKHQpKT90aGlzLnNldFZhbHVlcygiaHNsIixlKTooZT1jLmdldEh3Yih0KSkmJnRoaXMuc2V0VmFsdWVzKCJod2IiLGUpOiJvYmplY3QiPT10eXBlb2YgdCYmKHZvaWQgMCE9PShlPXQpLnJ8fHZvaWQgMCE9PWUucmVkP3RoaXMuc2V0VmFsdWVzKCJyZ2IiLGUpOnZvaWQgMCE9PWUubHx8dm9pZCAwIT09ZS5saWdodG5lc3M/dGhpcy5zZXRWYWx1ZXMoImhzbCIsZSk6dm9pZCAwIT09ZS52fHx2b2lkIDAhPT1lLnZhbHVlP3RoaXMuc2V0VmFsdWVzKCJoc3YiLGUpOnZvaWQgMCE9PWUud3x8dm9pZCAwIT09ZS53aGl0ZW5lc3M/dGhpcy5zZXRWYWx1ZXMoImh3YiIsZSk6dm9pZCAwPT09ZS5jJiZ2b2lkIDA9PT1lLmN5YW58fHRoaXMuc2V0VmFsdWVzKCJjbXlrIixlKSkpKTpuZXcgdyh0KTt2YXIgZX07dy5wcm90b3R5cGU9e2lzVmFsaWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWxpZH0scmdiOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2V0U3BhY2UoInJnYiIsYXJndW1lbnRzKX0saHNsOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2V0U3BhY2UoImhzbCIsYXJndW1lbnRzKX0saHN2OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2V0U3BhY2UoImhzdiIsYXJndW1lbnRzKX0saHdiOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2V0U3BhY2UoImh3YiIsYXJndW1lbnRzKX0sY215azpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNldFNwYWNlKCJjbXlrIixhcmd1bWVudHMpfSxyZ2JBcnJheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlcy5yZ2J9LGhzbEFycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWVzLmhzbH0saHN2QXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZXMuaHN2fSxod2JBcnJheTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudmFsdWVzO3JldHVybiAxIT09dC5hbHBoYT90Lmh3Yi5jb25jYXQoW3QuYWxwaGFdKTp0Lmh3Yn0sY215a0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWVzLmNteWt9LHJnYmFBcnJheTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudmFsdWVzO3JldHVybiB0LnJnYi5jb25jYXQoW3QuYWxwaGFdKX0saHNsYUFycmF5OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy52YWx1ZXM7cmV0dXJuIHQuaHNsLmNvbmNhdChbdC5hbHBoYV0pfSxhbHBoYTpmdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwPT09dD90aGlzLnZhbHVlcy5hbHBoYToodGhpcy5zZXRWYWx1ZXMoImFscGhhIix0KSx0aGlzKX0scmVkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNldENoYW5uZWwoInJnYiIsMCx0KX0sZ3JlZW46ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc2V0Q2hhbm5lbCgicmdiIiwxLHQpfSxibHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNldENoYW5uZWwoInJnYiIsMix0KX0saHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0JiYodD0odCU9MzYwKTwwPzM2MCt0OnQpLHRoaXMuc2V0Q2hhbm5lbCgiaHNsIiwwLHQpfSxzYXR1cmF0aW9uOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNldENoYW5uZWwoImhzbCIsMSx0KX0sbGlnaHRuZXNzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNldENoYW5uZWwoImhzbCIsMix0KX0sc2F0dXJhdGlvbnY6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc2V0Q2hhbm5lbCgiaHN2IiwxLHQpfSx3aGl0ZW5lc3M6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc2V0Q2hhbm5lbCgiaHdiIiwxLHQpfSxibGFja25lc3M6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc2V0Q2hhbm5lbCgiaHdiIiwyLHQpfSx2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zZXRDaGFubmVsKCJoc3YiLDIsdCl9LGN5YW46ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc2V0Q2hhbm5lbCgiY215ayIsMCx0KX0sbWFnZW50YTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zZXRDaGFubmVsKCJjbXlrIiwxLHQpfSx5ZWxsb3c6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc2V0Q2hhbm5lbCgiY215ayIsMix0KX0sYmxhY2s6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuc2V0Q2hhbm5lbCgiY215ayIsMyx0KX0saGV4U3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIGMuaGV4U3RyaW5nKHRoaXMudmFsdWVzLnJnYil9LHJnYlN0cmluZzpmdW5jdGlvbigpe3JldHVybiBjLnJnYlN0cmluZyh0aGlzLnZhbHVlcy5yZ2IsdGhpcy52YWx1ZXMuYWxwaGEpfSxyZ2JhU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIGMucmdiYVN0cmluZyh0aGlzLnZhbHVlcy5yZ2IsdGhpcy52YWx1ZXMuYWxwaGEpfSxwZXJjZW50U3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIGMucGVyY2VudFN0cmluZyh0aGlzLnZhbHVlcy5yZ2IsdGhpcy52YWx1ZXMuYWxwaGEpfSxoc2xTdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gYy5oc2xTdHJpbmcodGhpcy52YWx1ZXMuaHNsLHRoaXMudmFsdWVzLmFscGhhKX0saHNsYVN0cmluZzpmdW5jdGlvbigpe3JldHVybiBjLmhzbGFTdHJpbmcodGhpcy52YWx1ZXMuaHNsLHRoaXMudmFsdWVzLmFscGhhKX0saHdiU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIGMuaHdiU3RyaW5nKHRoaXMudmFsdWVzLmh3Yix0aGlzLnZhbHVlcy5hbHBoYSl9LGtleXdvcmQ6ZnVuY3Rpb24oKXtyZXR1cm4gYy5rZXl3b3JkKHRoaXMudmFsdWVzLnJnYix0aGlzLnZhbHVlcy5hbHBoYSl9LHJnYk51bWJlcjpmdW5jdGlvbigpe3ZhciB0PXRoaXMudmFsdWVzLnJnYjtyZXR1cm4gdFswXTw8MTZ8dFsxXTw8OHx0WzJdfSxsdW1pbm9zaXR5OmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMudmFsdWVzLnJnYixlPVtdLG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIGk9dFtuXS8yNTU7ZVtuXT1pPD0uMDM5Mjg/aS8xMi45MjpNYXRoLnBvdygoaSsuMDU1KS8xLjA1NSwyLjQpfXJldHVybi4yMTI2KmVbMF0rLjcxNTIqZVsxXSsuMDcyMiplWzJdfSxjb250cmFzdDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmx1bWlub3NpdHkoKSxuPXQubHVtaW5vc2l0eSgpO3JldHVybiBlPm4/KGUrLjA1KS8obisuMDUpOihuKy4wNSkvKGUrLjA1KX0sbGV2ZWw6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5jb250cmFzdCh0KTtyZXR1cm4gZT49Ny4xPyJBQUEiOmU+PTQuNT8iQUEiOiIifSxkYXJrOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy52YWx1ZXMucmdiO3JldHVybigyOTkqdFswXSs1ODcqdFsxXSsxMTQqdFsyXSkvMWUzPDEyOH0sbGlnaHQ6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5kYXJrKCl9LG5lZ2F0ZTpmdW5jdGlvbigpe2Zvcih2YXIgdD1bXSxlPTA7ZTwzO2UrKyl0W2VdPTI1NS10aGlzLnZhbHVlcy5yZ2JbZV07cmV0dXJuIHRoaXMuc2V0VmFsdWVzKCJyZ2IiLHQpLHRoaXN9LGxpZ2h0ZW46ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy52YWx1ZXMuaHNsO3JldHVybiBlWzJdKz1lWzJdKnQsdGhpcy5zZXRWYWx1ZXMoImhzbCIsZSksdGhpc30sZGFya2VuOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudmFsdWVzLmhzbDtyZXR1cm4gZVsyXS09ZVsyXSp0LHRoaXMuc2V0VmFsdWVzKCJoc2wiLGUpLHRoaXN9LHNhdHVyYXRlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudmFsdWVzLmhzbDtyZXR1cm4gZVsxXSs9ZVsxXSp0LHRoaXMuc2V0VmFsdWVzKCJoc2wiLGUpLHRoaXN9LGRlc2F0dXJhdGU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy52YWx1ZXMuaHNsO3JldHVybiBlWzFdLT1lWzFdKnQsdGhpcy5zZXRWYWx1ZXMoImhzbCIsZSksdGhpc30sd2hpdGVuOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudmFsdWVzLmh3YjtyZXR1cm4gZVsxXSs9ZVsxXSp0LHRoaXMuc2V0VmFsdWVzKCJod2IiLGUpLHRoaXN9LGJsYWNrZW46ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy52YWx1ZXMuaHdiO3JldHVybiBlWzJdKz1lWzJdKnQsdGhpcy5zZXRWYWx1ZXMoImh3YiIsZSksdGhpc30sZ3JleXNjYWxlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy52YWx1ZXMucmdiLGU9LjMqdFswXSsuNTkqdFsxXSsuMTEqdFsyXTtyZXR1cm4gdGhpcy5zZXRWYWx1ZXMoInJnYiIsW2UsZSxlXSksdGhpc30sY2xlYXJlcjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnZhbHVlcy5hbHBoYTtyZXR1cm4gdGhpcy5zZXRWYWx1ZXMoImFscGhhIixlLWUqdCksdGhpc30sb3BhcXVlcjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnZhbHVlcy5hbHBoYTtyZXR1cm4gdGhpcy5zZXRWYWx1ZXMoImFscGhhIixlK2UqdCksdGhpc30scm90YXRlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMudmFsdWVzLmhzbCxuPShlWzBdK3QpJTM2MDtyZXR1cm4gZVswXT1uPDA/MzYwK246bix0aGlzLnNldFZhbHVlcygiaHNsIixlKSx0aGlzfSxtaXg6ZnVuY3Rpb24odCxlKXt2YXIgbj10LGk9dm9pZCAwPT09ZT8uNTplLHI9MippLTEsbz10aGlzLmFscGhhKCktbi5hbHBoYSgpLGE9KChyKm89PS0xP3I6KHIrbykvKDErcipvKSkrMSkvMixzPTEtYTtyZXR1cm4gdGhpcy5yZ2IoYSp0aGlzLnJlZCgpK3Mqbi5yZWQoKSxhKnRoaXMuZ3JlZW4oKStzKm4uZ3JlZW4oKSxhKnRoaXMuYmx1ZSgpK3Mqbi5ibHVlKCkpLmFscGhhKHRoaXMuYWxwaGEoKSppK24uYWxwaGEoKSooMS1pKSl9LHRvSlNPTjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJnYigpfSxjbG9uZTpmdW5jdGlvbigpe3ZhciB0LGUsbj1uZXcgdyxpPXRoaXMudmFsdWVzLHI9bi52YWx1ZXM7Zm9yKHZhciBvIGluIGkpaS5oYXNPd25Qcm9wZXJ0eShvKSYmKHQ9aVtvXSwiW29iamVjdCBBcnJheV0iPT09KGU9e30udG9TdHJpbmcuY2FsbCh0KSk/cltvXT10LnNsaWNlKDApOiJbb2JqZWN0IE51bWJlcl0iPT09ZT9yW29dPXQ6Y29uc29sZS5lcnJvcigidW5leHBlY3RlZCBjb2xvciB2YWx1ZToiLHQpKTtyZXR1cm4gbn19LHcucHJvdG90eXBlLnNwYWNlcz17cmdiOlsicmVkIiwiZ3JlZW4iLCJibHVlIl0saHNsOlsiaHVlIiwic2F0dXJhdGlvbiIsImxpZ2h0bmVzcyJdLGhzdjpbImh1ZSIsInNhdHVyYXRpb24iLCJ2YWx1ZSJdLGh3YjpbImh1ZSIsIndoaXRlbmVzcyIsImJsYWNrbmVzcyJdLGNteWs6WyJjeWFuIiwibWFnZW50YSIsInllbGxvdyIsImJsYWNrIl19LHcucHJvdG90eXBlLm1heGVzPXtyZ2I6WzI1NSwyNTUsMjU1XSxoc2w6WzM2MCwxMDAsMTAwXSxoc3Y6WzM2MCwxMDAsMTAwXSxod2I6WzM2MCwxMDAsMTAwXSxjbXlrOlsxMDAsMTAwLDEwMCwxMDBdfSx3LnByb3RvdHlwZS5nZXRWYWx1ZXM9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXRoaXMudmFsdWVzLG49e30saT0wO2k8dC5sZW5ndGg7aSsrKW5bdC5jaGFyQXQoaSldPWVbdF1baV07cmV0dXJuIDEhPT1lLmFscGhhJiYobi5hPWUuYWxwaGEpLG59LHcucHJvdG90eXBlLnNldFZhbHVlcz1mdW5jdGlvbih0LGUpe3ZhciBuLGkscj10aGlzLnZhbHVlcyxvPXRoaXMuc3BhY2VzLGE9dGhpcy5tYXhlcyxsPTE7aWYodGhpcy52YWxpZD0hMCwiYWxwaGEiPT09dClsPWU7ZWxzZSBpZihlLmxlbmd0aClyW3RdPWUuc2xpY2UoMCx0Lmxlbmd0aCksbD1lW3QubGVuZ3RoXTtlbHNlIGlmKHZvaWQgMCE9PWVbdC5jaGFyQXQoMCldKXtmb3Iobj0wO248dC5sZW5ndGg7bisrKXJbdF1bbl09ZVt0LmNoYXJBdChuKV07bD1lLmF9ZWxzZSBpZih2b2lkIDAhPT1lW29bdF1bMF1dKXt2YXIgYz1vW3RdO2ZvcihuPTA7bjx0Lmxlbmd0aDtuKyspclt0XVtuXT1lW2Nbbl1dO2w9ZS5hbHBoYX1pZihyLmFscGhhPU1hdGgubWF4KDAsTWF0aC5taW4oMSx2b2lkIDA9PT1sP3IuYWxwaGE6bCkpLCJhbHBoYSI9PT10KXJldHVybiExO2ZvcihuPTA7bjx0Lmxlbmd0aDtuKyspaT1NYXRoLm1heCgwLE1hdGgubWluKGFbdF1bbl0sclt0XVtuXSkpLHJbdF1bbl09TWF0aC5yb3VuZChpKTtmb3IodmFyIHUgaW4gbyl1IT09dCYmKHJbdV09c1t0XVt1XShyW3RdKSk7cmV0dXJuITB9LHcucHJvdG90eXBlLnNldFNwYWNlPWZ1bmN0aW9uKHQsZSl7dmFyIG49ZVswXTtyZXR1cm4gdm9pZCAwPT09bj90aGlzLmdldFZhbHVlcyh0KTooIm51bWJlciI9PXR5cGVvZiBuJiYobj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlKSksdGhpcy5zZXRWYWx1ZXModCxuKSx0aGlzKX0sdy5wcm90b3R5cGUuc2V0Q2hhbm5lbD1mdW5jdGlvbih0LGUsbil7dmFyIGk9dGhpcy52YWx1ZXNbdF07cmV0dXJuIHZvaWQgMD09PW4/aVtlXToobj09PWlbZV18fChpW2VdPW4sdGhpcy5zZXRWYWx1ZXModCxpKSksdGhpcyl9LCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93JiYod2luZG93LkNvbG9yPXcpO3ZhciB4PXc7ZnVuY3Rpb24gXyh0KXtyZXR1cm4tMT09PVsiX19wcm90b19fIiwicHJvdG90eXBlIiwiY29uc3RydWN0b3IiXS5pbmRleE9mKHQpfXZhciBTLEM9e25vb3A6ZnVuY3Rpb24oKXt9LHVpZDooUz0wLGZ1bmN0aW9uKCl7cmV0dXJuIFMrK30pLGlzTnVsbE9yVW5kZWY6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXR9LGlzQXJyYXk6ZnVuY3Rpb24odCl7aWYoQXJyYXkuaXNBcnJheSYmQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4hMDt2YXIgZT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCk7cmV0dXJuIltvYmplY3QiPT09ZS5zdWJzdHIoMCw3KSYmIkFycmF5XSI9PT1lLnN1YnN0cigtNil9LGlzT2JqZWN0OmZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT09dCYmIltvYmplY3QgT2JqZWN0XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9LGlzRmluaXRlOmZ1bmN0aW9uKHQpe3JldHVybigibnVtYmVyIj09dHlwZW9mIHR8fHQgaW5zdGFuY2VvZiBOdW1iZXIpJiZpc0Zpbml0ZSh0KX0sdmFsdWVPckRlZmF1bHQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdm9pZCAwPT09dD9lOnR9LHZhbHVlQXRJbmRleE9yRGVmYXVsdDpmdW5jdGlvbih0LGUsbil7cmV0dXJuIEMudmFsdWVPckRlZmF1bHQoQy5pc0FycmF5KHQpP3RbZV06dCxuKX0sY2FsbGJhY2s6ZnVuY3Rpb24odCxlLG4pe2lmKHQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LmNhbGwpcmV0dXJuIHQuYXBwbHkobixlKX0sZWFjaDpmdW5jdGlvbih0LGUsbixpKXt2YXIgcixvLGE7aWYoQy5pc0FycmF5KHQpKWlmKG89dC5sZW5ndGgsaSlmb3Iocj1vLTE7cj49MDtyLS0pZS5jYWxsKG4sdFtyXSxyKTtlbHNlIGZvcihyPTA7cjxvO3IrKyllLmNhbGwobix0W3JdLHIpO2Vsc2UgaWYoQy5pc09iamVjdCh0KSlmb3Iobz0oYT1PYmplY3Qua2V5cyh0KSkubGVuZ3RoLHI9MDtyPG87cisrKWUuY2FsbChuLHRbYVtyXV0sYVtyXSl9LGFycmF5RXF1YWxzOmZ1bmN0aW9uKHQsZSl7dmFyIG4saSxyLG87aWYoIXR8fCFlfHx0Lmxlbmd0aCE9PWUubGVuZ3RoKXJldHVybiExO2ZvcihuPTAsaT10Lmxlbmd0aDtuPGk7KytuKWlmKHI9dFtuXSxvPWVbbl0sciBpbnN0YW5jZW9mIEFycmF5JiZvIGluc3RhbmNlb2YgQXJyYXkpe2lmKCFDLmFycmF5RXF1YWxzKHIsbykpcmV0dXJuITF9ZWxzZSBpZihyIT09bylyZXR1cm4hMTtyZXR1cm4hMH0sY2xvbmU6ZnVuY3Rpb24odCl7aWYoQy5pc0FycmF5KHQpKXJldHVybiB0Lm1hcChDLmNsb25lKTtpZihDLmlzT2JqZWN0KHQpKXtmb3IodmFyIGU9T2JqZWN0LmNyZWF0ZSh0KSxuPU9iamVjdC5rZXlzKHQpLGk9bi5sZW5ndGgscj0wO3I8aTsrK3IpZVtuW3JdXT1DLmNsb25lKHRbbltyXV0pO3JldHVybiBlfXJldHVybiB0fSxfbWVyZ2VyOmZ1bmN0aW9uKHQsZSxuLGkpe2lmKF8odCkpe3ZhciByPWVbdF0sbz1uW3RdO0MuaXNPYmplY3QocikmJkMuaXNPYmplY3Qobyk/Qy5tZXJnZShyLG8saSk6ZVt0XT1DLmNsb25lKG8pfX0sX21lcmdlcklmOmZ1bmN0aW9uKHQsZSxuKXtpZihfKHQpKXt2YXIgaT1lW3RdLHI9blt0XTtDLmlzT2JqZWN0KGkpJiZDLmlzT2JqZWN0KHIpP0MubWVyZ2VJZihpLHIpOmUuaGFzT3duUHJvcGVydHkodCl8fChlW3RdPUMuY2xvbmUocikpfX0sbWVyZ2U6ZnVuY3Rpb24odCxlLG4pe3ZhciBpLHIsbyxhLHMsbD1DLmlzQXJyYXkoZSk/ZTpbZV0sYz1sLmxlbmd0aDtpZighQy5pc09iamVjdCh0KSlyZXR1cm4gdDtmb3IoaT0obj1ufHx7fSkubWVyZ2VyfHxDLl9tZXJnZXIscj0wO3I8YzsrK3IpaWYoZT1sW3JdLEMuaXNPYmplY3QoZSkpZm9yKHM9MCxhPShvPU9iamVjdC5rZXlzKGUpKS5sZW5ndGg7czxhOysrcylpKG9bc10sdCxlLG4pO3JldHVybiB0fSxtZXJnZUlmOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIEMubWVyZ2UodCxlLHttZXJnZXI6Qy5fbWVyZ2VySWZ9KX0sZXh0ZW5kOk9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKHQpe3JldHVybiBDLm1lcmdlKHQsW10uc2xpY2UuY2FsbChhcmd1bWVudHMsMSkse21lcmdlcjpmdW5jdGlvbih0LGUsbil7ZVt0XT1uW3RdfX0pfSxpbmhlcml0czpmdW5jdGlvbih0KXt2YXIgZT10aGlzLG49dCYmdC5oYXNPd25Qcm9wZXJ0eSgiY29uc3RydWN0b3IiKT90LmNvbnN0cnVjdG9yOmZ1bmN0aW9uKCl7cmV0dXJuIGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxpPWZ1bmN0aW9uKCl7dGhpcy5jb25zdHJ1Y3Rvcj1ufTtyZXR1cm4gaS5wcm90b3R5cGU9ZS5wcm90b3R5cGUsbi5wcm90b3R5cGU9bmV3IGksbi5leHRlbmQ9Qy5pbmhlcml0cyx0JiZDLmV4dGVuZChuLnByb3RvdHlwZSx0KSxuLl9fc3VwZXJfXz1lLnByb3RvdHlwZSxufSxfZGVwcmVjYXRlZDpmdW5jdGlvbih0LGUsbixpKXt2b2lkIDAhPT1lJiZjb25zb2xlLndhcm4odCsnOiAiJytuKyciIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgIicraSsnIiBpbnN0ZWFkJyl9fSxrPUM7Qy5jYWxsQ2FsbGJhY2s9Qy5jYWxsYmFjayxDLmluZGV4T2Y9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKHQsZSxuKX0sQy5nZXRWYWx1ZU9yRGVmYXVsdD1DLnZhbHVlT3JEZWZhdWx0LEMuZ2V0VmFsdWVBdEluZGV4T3JEZWZhdWx0PUMudmFsdWVBdEluZGV4T3JEZWZhdWx0O3ZhciBUPXtsaW5lYXI6ZnVuY3Rpb24odCl7cmV0dXJuIHR9LGVhc2VJblF1YWQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQqdH0sZWFzZU91dFF1YWQ6ZnVuY3Rpb24odCl7cmV0dXJuLXQqKHQtMil9LGVhc2VJbk91dFF1YWQ6ZnVuY3Rpb24odCl7cmV0dXJuKHQvPS41KTwxPy41KnQqdDotLjUqKC0tdCoodC0yKS0xKX0sZWFzZUluQ3ViaWM6ZnVuY3Rpb24odCl7cmV0dXJuIHQqdCp0fSxlYXNlT3V0Q3ViaWM6ZnVuY3Rpb24odCl7cmV0dXJuKHQtPTEpKnQqdCsxfSxlYXNlSW5PdXRDdWJpYzpmdW5jdGlvbih0KXtyZXR1cm4odC89LjUpPDE/LjUqdCp0KnQ6LjUqKCh0LT0yKSp0KnQrMil9LGVhc2VJblF1YXJ0OmZ1bmN0aW9uKHQpe3JldHVybiB0KnQqdCp0fSxlYXNlT3V0UXVhcnQ6ZnVuY3Rpb24odCl7cmV0dXJuLSgodC09MSkqdCp0KnQtMSl9LGVhc2VJbk91dFF1YXJ0OmZ1bmN0aW9uKHQpe3JldHVybih0Lz0uNSk8MT8uNSp0KnQqdCp0Oi0uNSooKHQtPTIpKnQqdCp0LTIpfSxlYXNlSW5RdWludDpmdW5jdGlvbih0KXtyZXR1cm4gdCp0KnQqdCp0fSxlYXNlT3V0UXVpbnQ6ZnVuY3Rpb24odCl7cmV0dXJuKHQtPTEpKnQqdCp0KnQrMX0sZWFzZUluT3V0UXVpbnQ6ZnVuY3Rpb24odCl7cmV0dXJuKHQvPS41KTwxPy41KnQqdCp0KnQqdDouNSooKHQtPTIpKnQqdCp0KnQrMil9LGVhc2VJblNpbmU6ZnVuY3Rpb24odCl7cmV0dXJuIDEtTWF0aC5jb3ModCooTWF0aC5QSS8yKSl9LGVhc2VPdXRTaW5lOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnNpbih0KihNYXRoLlBJLzIpKX0sZWFzZUluT3V0U2luZTpmdW5jdGlvbih0KXtyZXR1cm4tLjUqKE1hdGguY29zKE1hdGguUEkqdCktMSl9LGVhc2VJbkV4cG86ZnVuY3Rpb24odCl7cmV0dXJuIDA9PT10PzA6TWF0aC5wb3coMiwxMCoodC0xKSl9LGVhc2VPdXRFeHBvOmZ1bmN0aW9uKHQpe3JldHVybiAxPT09dD8xOjEtTWF0aC5wb3coMiwtMTAqdCl9LGVhc2VJbk91dEV4cG86ZnVuY3Rpb24odCl7cmV0dXJuIDA9PT10PzA6MT09PXQ/MToodC89LjUpPDE/LjUqTWF0aC5wb3coMiwxMCoodC0xKSk6LjUqKDItTWF0aC5wb3coMiwtMTAqLS10KSl9LGVhc2VJbkNpcmM6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PTE/dDotKE1hdGguc3FydCgxLXQqdCktMSl9LGVhc2VPdXRDaXJjOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnNxcnQoMS0odC09MSkqdCl9LGVhc2VJbk91dENpcmM6ZnVuY3Rpb24odCl7cmV0dXJuKHQvPS41KTwxPy0uNSooTWF0aC5zcXJ0KDEtdCp0KS0xKTouNSooTWF0aC5zcXJ0KDEtKHQtPTIpKnQpKzEpfSxlYXNlSW5FbGFzdGljOmZ1bmN0aW9uKHQpe3ZhciBlPTEuNzAxNTgsbj0wLGk9MTtyZXR1cm4gMD09PXQ/MDoxPT09dD8xOihufHwobj0uMyksaTwxPyhpPTEsZT1uLzQpOmU9bi8oMipNYXRoLlBJKSpNYXRoLmFzaW4oMS9pKSwtaSpNYXRoLnBvdygyLDEwKih0LT0xKSkqTWF0aC5zaW4oKHQtZSkqKDIqTWF0aC5QSSkvbikpfSxlYXNlT3V0RWxhc3RpYzpmdW5jdGlvbih0KXt2YXIgZT0xLjcwMTU4LG49MCxpPTE7cmV0dXJuIDA9PT10PzA6MT09PXQ/MToobnx8KG49LjMpLGk8MT8oaT0xLGU9bi80KTplPW4vKDIqTWF0aC5QSSkqTWF0aC5hc2luKDEvaSksaSpNYXRoLnBvdygyLC0xMCp0KSpNYXRoLnNpbigodC1lKSooMipNYXRoLlBJKS9uKSsxKX0sZWFzZUluT3V0RWxhc3RpYzpmdW5jdGlvbih0KXt2YXIgZT0xLjcwMTU4LG49MCxpPTE7cmV0dXJuIDA9PT10PzA6Mj09KHQvPS41KT8xOihufHwobj0uNDUpLGk8MT8oaT0xLGU9bi80KTplPW4vKDIqTWF0aC5QSSkqTWF0aC5hc2luKDEvaSksdDwxP2kqTWF0aC5wb3coMiwxMCoodC09MSkpKk1hdGguc2luKCh0LWUpKigyKk1hdGguUEkpL24pKi0uNTppKk1hdGgucG93KDIsLTEwKih0LT0xKSkqTWF0aC5zaW4oKHQtZSkqKDIqTWF0aC5QSSkvbikqLjUrMSl9LGVhc2VJbkJhY2s6ZnVuY3Rpb24odCl7dmFyIGU9MS43MDE1ODtyZXR1cm4gdCp0KigoZSsxKSp0LWUpfSxlYXNlT3V0QmFjazpmdW5jdGlvbih0KXt2YXIgZT0xLjcwMTU4O3JldHVybih0LT0xKSp0KigoZSsxKSp0K2UpKzF9LGVhc2VJbk91dEJhY2s6ZnVuY3Rpb24odCl7dmFyIGU9MS43MDE1ODtyZXR1cm4odC89LjUpPDE/dCp0KigoMSsoZSo9MS41MjUpKSp0LWUpKi41Oi41KigodC09MikqdCooKDErKGUqPTEuNTI1KSkqdCtlKSsyKX0sZWFzZUluQm91bmNlOmZ1bmN0aW9uKHQpe3JldHVybiAxLVQuZWFzZU91dEJvdW5jZSgxLXQpfSxlYXNlT3V0Qm91bmNlOmZ1bmN0aW9uKHQpe3JldHVybiB0PDEvMi43NT83LjU2MjUqdCp0OnQ8Mi8yLjc1PzcuNTYyNSoodC09MS41LzIuNzUpKnQrLjc1OnQ8Mi41LzIuNzU/Ny41NjI1Kih0LT0yLjI1LzIuNzUpKnQrLjkzNzU6Ny41NjI1Kih0LT0yLjYyNS8yLjc1KSp0Ky45ODQzNzV9LGVhc2VJbk91dEJvdW5jZTpmdW5jdGlvbih0KXtyZXR1cm4gdDwuNT8uNSpULmVhc2VJbkJvdW5jZSgyKnQpOi41KlQuZWFzZU91dEJvdW5jZSgyKnQtMSkrLjV9fSxBPXtlZmZlY3RzOlR9O2suZWFzaW5nRWZmZWN0cz1UO3ZhciBEPU1hdGguUEksRT1ELzE4MCxNPTIqRCxPPUQvMixJPUQvNCxQPTIqRC8zLEw9e2NsZWFyOmZ1bmN0aW9uKHQpe3QuY3R4LmNsZWFyUmVjdCgwLDAsdC53aWR0aCx0LmhlaWdodCl9LHJvdW5kZWRSZWN0OmZ1bmN0aW9uKHQsZSxuLGkscixvKXtpZihvKXt2YXIgYT1NYXRoLm1pbihvLHIvMixpLzIpLHM9ZSthLGw9bithLGM9ZStpLWEsdT1uK3ItYTt0Lm1vdmVUbyhlLGwpLHM8YyYmbDx1Pyh0LmFyYyhzLGwsYSwtRCwtTyksdC5hcmMoYyxsLGEsLU8sMCksdC5hcmMoYyx1LGEsMCxPKSx0LmFyYyhzLHUsYSxPLEQpKTpzPGM/KHQubW92ZVRvKHMsbiksdC5hcmMoYyxsLGEsLU8sTyksdC5hcmMocyxsLGEsTyxEK08pKTpsPHU/KHQuYXJjKHMsbCxhLC1ELDApLHQuYXJjKHMsdSxhLDAsRCkpOnQuYXJjKHMsbCxhLC1ELEQpLHQuY2xvc2VQYXRoKCksdC5tb3ZlVG8oZSxuKX1lbHNlIHQucmVjdChlLG4saSxyKX0sZHJhd1BvaW50OmZ1bmN0aW9uKHQsZSxuLGkscixvKXt2YXIgYSxzLGwsYyx1LGQ9KG98fDApKkU7aWYoZSYmIm9iamVjdCI9PXR5cGVvZiBlJiYoIltvYmplY3QgSFRNTEltYWdlRWxlbWVudF0iPT09KGE9ZS50b1N0cmluZygpKXx8IltvYmplY3QgSFRNTENhbnZhc0VsZW1lbnRdIj09PWEpKXJldHVybiB0LnNhdmUoKSx0LnRyYW5zbGF0ZShpLHIpLHQucm90YXRlKGQpLHQuZHJhd0ltYWdlKGUsLWUud2lkdGgvMiwtZS5oZWlnaHQvMixlLndpZHRoLGUuaGVpZ2h0KSx2b2lkIHQucmVzdG9yZSgpO2lmKCEoaXNOYU4obil8fG48PTApKXtzd2l0Y2godC5iZWdpblBhdGgoKSxlKXtkZWZhdWx0OnQuYXJjKGkscixuLDAsTSksdC5jbG9zZVBhdGgoKTticmVhaztjYXNlInRyaWFuZ2xlIjp0Lm1vdmVUbyhpK01hdGguc2luKGQpKm4sci1NYXRoLmNvcyhkKSpuKSxkKz1QLHQubGluZVRvKGkrTWF0aC5zaW4oZCkqbixyLU1hdGguY29zKGQpKm4pLGQrPVAsdC5saW5lVG8oaStNYXRoLnNpbihkKSpuLHItTWF0aC5jb3MoZCkqbiksdC5jbG9zZVBhdGgoKTticmVhaztjYXNlInJlY3RSb3VuZGVkIjpjPW4tKHU9LjUxNipuKSxzPU1hdGguY29zKGQrSSkqYyxsPU1hdGguc2luKGQrSSkqYyx0LmFyYyhpLXMsci1sLHUsZC1ELGQtTyksdC5hcmMoaStsLHItcyx1LGQtTyxkKSx0LmFyYyhpK3MscitsLHUsZCxkK08pLHQuYXJjKGktbCxyK3MsdSxkK08sZCtEKSx0LmNsb3NlUGF0aCgpO2JyZWFrO2Nhc2UicmVjdCI6aWYoIW8pe2M9TWF0aC5TUVJUMV8yKm4sdC5yZWN0KGktYyxyLWMsMipjLDIqYyk7YnJlYWt9ZCs9STtjYXNlInJlY3RSb3QiOnM9TWF0aC5jb3MoZCkqbixsPU1hdGguc2luKGQpKm4sdC5tb3ZlVG8oaS1zLHItbCksdC5saW5lVG8oaStsLHItcyksdC5saW5lVG8oaStzLHIrbCksdC5saW5lVG8oaS1sLHIrcyksdC5jbG9zZVBhdGgoKTticmVhaztjYXNlImNyb3NzUm90IjpkKz1JO2Nhc2UiY3Jvc3MiOnM9TWF0aC5jb3MoZCkqbixsPU1hdGguc2luKGQpKm4sdC5tb3ZlVG8oaS1zLHItbCksdC5saW5lVG8oaStzLHIrbCksdC5tb3ZlVG8oaStsLHItcyksdC5saW5lVG8oaS1sLHIrcyk7YnJlYWs7Y2FzZSJzdGFyIjpzPU1hdGguY29zKGQpKm4sbD1NYXRoLnNpbihkKSpuLHQubW92ZVRvKGktcyxyLWwpLHQubGluZVRvKGkrcyxyK2wpLHQubW92ZVRvKGkrbCxyLXMpLHQubGluZVRvKGktbCxyK3MpLGQrPUkscz1NYXRoLmNvcyhkKSpuLGw9TWF0aC5zaW4oZCkqbix0Lm1vdmVUbyhpLXMsci1sKSx0LmxpbmVUbyhpK3MscitsKSx0Lm1vdmVUbyhpK2wsci1zKSx0LmxpbmVUbyhpLWwscitzKTticmVhaztjYXNlImxpbmUiOnM9TWF0aC5jb3MoZCkqbixsPU1hdGguc2luKGQpKm4sdC5tb3ZlVG8oaS1zLHItbCksdC5saW5lVG8oaStzLHIrbCk7YnJlYWs7Y2FzZSJkYXNoIjp0Lm1vdmVUbyhpLHIpLHQubGluZVRvKGkrTWF0aC5jb3MoZCkqbixyK01hdGguc2luKGQpKm4pfXQuZmlsbCgpLHQuc3Ryb2tlKCl9fSxfaXNQb2ludEluQXJlYTpmdW5jdGlvbih0LGUpe3JldHVybiB0Lng+ZS5sZWZ0LTFlLTYmJnQueDxlLnJpZ2h0KzFlLTYmJnQueT5lLnRvcC0xZS02JiZ0Lnk8ZS5ib3R0b20rMWUtNn0sY2xpcEFyZWE6ZnVuY3Rpb24odCxlKXt0LnNhdmUoKSx0LmJlZ2luUGF0aCgpLHQucmVjdChlLmxlZnQsZS50b3AsZS5yaWdodC1lLmxlZnQsZS5ib3R0b20tZS50b3ApLHQuY2xpcCgpfSx1bmNsaXBBcmVhOmZ1bmN0aW9uKHQpe3QucmVzdG9yZSgpfSxsaW5lVG86ZnVuY3Rpb24odCxlLG4saSl7dmFyIHI9bi5zdGVwcGVkTGluZTtpZihyKXtpZigibWlkZGxlIj09PXIpe3ZhciBvPShlLngrbi54KS8yO3QubGluZVRvKG8saT9uLnk6ZS55KSx0LmxpbmVUbyhvLGk/ZS55Om4ueSl9ZWxzZSJhZnRlciI9PT1yJiYhaXx8ImFmdGVyIiE9PXImJmk/dC5saW5lVG8oZS54LG4ueSk6dC5saW5lVG8obi54LGUueSk7dC5saW5lVG8obi54LG4ueSl9ZWxzZSBuLnRlbnNpb24/dC5iZXppZXJDdXJ2ZVRvKGk/ZS5jb250cm9sUG9pbnRQcmV2aW91c1g6ZS5jb250cm9sUG9pbnROZXh0WCxpP2UuY29udHJvbFBvaW50UHJldmlvdXNZOmUuY29udHJvbFBvaW50TmV4dFksaT9uLmNvbnRyb2xQb2ludE5leHRYOm4uY29udHJvbFBvaW50UHJldmlvdXNYLGk/bi5jb250cm9sUG9pbnROZXh0WTpuLmNvbnRyb2xQb2ludFByZXZpb3VzWSxuLngsbi55KTp0LmxpbmVUbyhuLngsbi55KX19LE49TDtrLmNsZWFyPUwuY2xlYXIsay5kcmF3Um91bmRlZFJlY3RhbmdsZT1mdW5jdGlvbih0KXt0LmJlZ2luUGF0aCgpLEwucm91bmRlZFJlY3QuYXBwbHkoTCxhcmd1bWVudHMpfTt2YXIgRj17X3NldDpmdW5jdGlvbih0LGUpe3JldHVybiBrLm1lcmdlKHRoaXNbdF18fCh0aGlzW3RdPXt9KSxlKX19O0YuX3NldCgiZ2xvYmFsIix7ZGVmYXVsdENvbG9yOiJyZ2JhKDAsMCwwLDAuMSkiLGRlZmF1bHRGb250Q29sb3I6IiM2NjYiLGRlZmF1bHRGb250RmFtaWx5OiInSGVsdmV0aWNhIE5ldWUnLCAnSGVsdmV0aWNhJywgJ0FyaWFsJywgc2Fucy1zZXJpZiIsZGVmYXVsdEZvbnRTaXplOjEyLGRlZmF1bHRGb250U3R5bGU6Im5vcm1hbCIsZGVmYXVsdExpbmVIZWlnaHQ6MS4yLHNob3dMaW5lczohMH0pO3ZhciBSPUYsaj1rLnZhbHVlT3JEZWZhdWx0LCQ9e3RvTGluZUhlaWdodDpmdW5jdGlvbih0LGUpe3ZhciBuPSgiIit0KS5tYXRjaCgvXihub3JtYWx8KFxkKyg/OlwuXGQrKT8pKHB4fGVtfCUpPykkLyk7aWYoIW58fCJub3JtYWwiPT09blsxXSlyZXR1cm4gMS4yKmU7c3dpdGNoKHQ9K25bMl0sblszXSl7Y2FzZSJweCI6cmV0dXJuIHQ7Y2FzZSIlIjp0Lz0xMDB9cmV0dXJuIGUqdH0sdG9QYWRkaW5nOmZ1bmN0aW9uKHQpe3ZhciBlLG4saSxyO3JldHVybiBrLmlzT2JqZWN0KHQpPyhlPSt0LnRvcHx8MCxuPSt0LnJpZ2h0fHwwLGk9K3QuYm90dG9tfHwwLHI9K3QubGVmdHx8MCk6ZT1uPWk9cj0rdHx8MCx7dG9wOmUscmlnaHQ6bixib3R0b206aSxsZWZ0OnIsaGVpZ2h0OmUraSx3aWR0aDpyK259fSxfcGFyc2VGb250OmZ1bmN0aW9uKHQpe3ZhciBlPVIuZ2xvYmFsLG49aih0LmZvbnRTaXplLGUuZGVmYXVsdEZvbnRTaXplKSxpPXtmYW1pbHk6aih0LmZvbnRGYW1pbHksZS5kZWZhdWx0Rm9udEZhbWlseSksbGluZUhlaWdodDprLm9wdGlvbnMudG9MaW5lSGVpZ2h0KGoodC5saW5lSGVpZ2h0LGUuZGVmYXVsdExpbmVIZWlnaHQpLG4pLHNpemU6bixzdHlsZTpqKHQuZm9udFN0eWxlLGUuZGVmYXVsdEZvbnRTdHlsZSksd2VpZ2h0Om51bGwsc3RyaW5nOiIifTtyZXR1cm4gaS5zdHJpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIXR8fGsuaXNOdWxsT3JVbmRlZih0LnNpemUpfHxrLmlzTnVsbE9yVW5kZWYodC5mYW1pbHkpP251bGw6KHQuc3R5bGU/dC5zdHlsZSsiICI6IiIpKyh0LndlaWdodD90LndlaWdodCsiICI6IiIpK3Quc2l6ZSsicHggIit0LmZhbWlseX0oaSksaX0scmVzb2x2ZTpmdW5jdGlvbih0LGUsbixpKXt2YXIgcixvLGEscz0hMDtmb3Iocj0wLG89dC5sZW5ndGg7cjxvOysrcilpZih2b2lkIDAhPT0oYT10W3JdKSYmKHZvaWQgMCE9PWUmJiJmdW5jdGlvbiI9PXR5cGVvZiBhJiYoYT1hKGUpLHM9ITEpLHZvaWQgMCE9PW4mJmsuaXNBcnJheShhKSYmKGE9YVtuXSxzPSExKSx2b2lkIDAhPT1hKSlyZXR1cm4gaSYmIXMmJihpLmNhY2hlYWJsZT0hMSksYX19LHo9e19mYWN0b3JpemU6ZnVuY3Rpb24odCl7dmFyIGUsbj1bXSxpPU1hdGguc3FydCh0KTtmb3IoZT0xO2U8aTtlKyspdCVlPT0wJiYobi5wdXNoKGUpLG4ucHVzaCh0L2UpKTtyZXR1cm4gaT09PSgwfGkpJiZuLnB1c2goaSksbi5zb3J0KChmdW5jdGlvbih0LGUpe3JldHVybiB0LWV9KSkucG9wKCksbn0sbG9nMTA6TWF0aC5sb2cxMHx8ZnVuY3Rpb24odCl7dmFyIGU9TWF0aC5sb2codCkqTWF0aC5MT0cxMEUsbj1NYXRoLnJvdW5kKGUpO3JldHVybiB0PT09TWF0aC5wb3coMTAsbik/bjplfX0sSD16O2subG9nMTA9ei5sb2cxMDt2YXIgQj1rLHE9QSxXPU4sVT0kLFY9SDtCLmVhc2luZz1xLEIuY2FudmFzPVcsQi5vcHRpb25zPVUsQi5tYXRoPVYsQi5ydGw9e2dldFJ0bEFkYXB0ZXI6ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0P2Z1bmN0aW9uKHQsZSl7cmV0dXJue3g6ZnVuY3Rpb24obil7cmV0dXJuIHQrdCtlLW59LHNldFdpZHRoOmZ1bmN0aW9uKHQpe2U9dH0sdGV4dEFsaWduOmZ1bmN0aW9uKHQpe3JldHVybiJjZW50ZXIiPT09dD90OiJyaWdodCI9PT10PyJsZWZ0IjoicmlnaHQifSx4UGx1czpmdW5jdGlvbih0LGUpe3JldHVybiB0LWV9LGxlZnRGb3JMdHI6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC1lfX19KGUsbik6e3g6ZnVuY3Rpb24odCl7cmV0dXJuIHR9LHNldFdpZHRoOmZ1bmN0aW9uKHQpe30sdGV4dEFsaWduOmZ1bmN0aW9uKHQpe3JldHVybiB0fSx4UGx1czpmdW5jdGlvbih0LGUpe3JldHVybiB0K2V9LGxlZnRGb3JMdHI6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdH19fSxvdmVycmlkZVRleHREaXJlY3Rpb246ZnVuY3Rpb24odCxlKXt2YXIgbixpOyJsdHIiIT09ZSYmInJ0bCIhPT1lfHwoaT1bKG49dC5jYW52YXMuc3R5bGUpLmdldFByb3BlcnR5VmFsdWUoImRpcmVjdGlvbiIpLG4uZ2V0UHJvcGVydHlQcmlvcml0eSgiZGlyZWN0aW9uIildLG4uc2V0UHJvcGVydHkoImRpcmVjdGlvbiIsZSwiaW1wb3J0YW50IiksdC5wcmV2VGV4dERpcmVjdGlvbj1pKX0scmVzdG9yZVRleHREaXJlY3Rpb246ZnVuY3Rpb24odCl7dmFyIGU9dC5wcmV2VGV4dERpcmVjdGlvbjt2b2lkIDAhPT1lJiYoZGVsZXRlIHQucHJldlRleHREaXJlY3Rpb24sdC5jYW52YXMuc3R5bGUuc2V0UHJvcGVydHkoImRpcmVjdGlvbiIsZVswXSxlWzFdKSl9fTt2YXIgWT1mdW5jdGlvbih0KXtCLmV4dGVuZCh0aGlzLHQpLHRoaXMuaW5pdGlhbGl6ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O0IuZXh0ZW5kKFkucHJvdG90eXBlLHtfdHlwZTp2b2lkIDAsaW5pdGlhbGl6ZTpmdW5jdGlvbigpe3RoaXMuaGlkZGVuPSExfSxwaXZvdDpmdW5jdGlvbigpe3ZhciB0PXRoaXM7cmV0dXJuIHQuX3ZpZXd8fCh0Ll92aWV3PUIuZXh0ZW5kKHt9LHQuX21vZGVsKSksdC5fc3RhcnQ9e30sdH0sdHJhbnNpdGlvbjpmdW5jdGlvbih0KXt2YXIgZT10aGlzLG49ZS5fbW9kZWwsaT1lLl9zdGFydCxyPWUuX3ZpZXc7cmV0dXJuIG4mJjEhPT10PyhyfHwocj1lLl92aWV3PXt9KSxpfHwoaT1lLl9zdGFydD17fSksZnVuY3Rpb24odCxlLG4saSl7dmFyIHIsbyxhLHMsbCxjLHUsZCxoLGY9T2JqZWN0LmtleXMobik7Zm9yKHI9MCxvPWYubGVuZ3RoO3I8bzsrK3IpaWYoYz1uW2E9ZltyXV0sZS5oYXNPd25Qcm9wZXJ0eShhKXx8KGVbYV09YyksKHM9ZVthXSkhPT1jJiYiXyIhPT1hWzBdKXtpZih0Lmhhc093blByb3BlcnR5KGEpfHwodFthXT1zKSwodT10eXBlb2YgYyk9PXR5cGVvZihsPXRbYV0pKWlmKCJzdHJpbmciPT09dSl7aWYoKGQ9eChsKSkudmFsaWQmJihoPXgoYykpLnZhbGlkKXtlW2FdPWgubWl4KGQsaSkucmdiU3RyaW5nKCk7Y29udGludWV9fWVsc2UgaWYoQi5pc0Zpbml0ZShsKSYmQi5pc0Zpbml0ZShjKSl7ZVthXT1sKyhjLWwpKmk7Y29udGludWV9ZVthXT1jfX0oaSxyLG4sdCksZSk6KGUuX3ZpZXc9Qi5leHRlbmQoe30sbiksZS5fc3RhcnQ9bnVsbCxlKX0sdG9vbHRpcFBvc2l0aW9uOmZ1bmN0aW9uKCl7cmV0dXJue3g6dGhpcy5fbW9kZWwueCx5OnRoaXMuX21vZGVsLnl9fSxoYXNWYWx1ZTpmdW5jdGlvbigpe3JldHVybiBCLmlzTnVtYmVyKHRoaXMuX21vZGVsLngpJiZCLmlzTnVtYmVyKHRoaXMuX21vZGVsLnkpfX0pLFkuZXh0ZW5kPUIuaW5oZXJpdHM7dmFyIEc9WSxYPUcuZXh0ZW5kKHtjaGFydDpudWxsLGN1cnJlbnRTdGVwOjAsbnVtU3RlcHM6NjAsZWFzaW5nOiIiLHJlbmRlcjpudWxsLG9uQW5pbWF0aW9uUHJvZ3Jlc3M6bnVsbCxvbkFuaW1hdGlvbkNvbXBsZXRlOm51bGx9KSxRPVg7T2JqZWN0LmRlZmluZVByb3BlcnR5KFgucHJvdG90eXBlLCJhbmltYXRpb25PYmplY3QiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc319KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoWC5wcm90b3R5cGUsImNoYXJ0SW5zdGFuY2UiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jaGFydH0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMuY2hhcnQ9dH19KSxSLl9zZXQoImdsb2JhbCIse2FuaW1hdGlvbjp7ZHVyYXRpb246MWUzLGVhc2luZzoiZWFzZU91dFF1YXJ0IixvblByb2dyZXNzOkIubm9vcCxvbkNvbXBsZXRlOkIubm9vcH19KTt2YXIgSz17YW5pbWF0aW9uczpbXSxyZXF1ZXN0Om51bGwsYWRkQW5pbWF0aW9uOmZ1bmN0aW9uKHQsZSxuLGkpe3ZhciByLG8sYT10aGlzLmFuaW1hdGlvbnM7Zm9yKGUuY2hhcnQ9dCxlLnN0YXJ0VGltZT1EYXRlLm5vdygpLGUuZHVyYXRpb249bixpfHwodC5hbmltYXRpbmc9ITApLHI9MCxvPWEubGVuZ3RoO3I8bzsrK3IpaWYoYVtyXS5jaGFydD09PXQpcmV0dXJuIHZvaWQoYVtyXT1lKTthLnB1c2goZSksMT09PWEubGVuZ3RoJiZ0aGlzLnJlcXVlc3RBbmltYXRpb25GcmFtZSgpfSxjYW5jZWxBbmltYXRpb246ZnVuY3Rpb24odCl7dmFyIGU9Qi5maW5kSW5kZXgodGhpcy5hbmltYXRpb25zLChmdW5jdGlvbihlKXtyZXR1cm4gZS5jaGFydD09PXR9KSk7LTEhPT1lJiYodGhpcy5hbmltYXRpb25zLnNwbGljZShlLDEpLHQuYW5pbWF0aW5nPSExKX0scmVxdWVzdEFuaW1hdGlvbkZyYW1lOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztudWxsPT09dC5yZXF1ZXN0JiYodC5yZXF1ZXN0PUIucmVxdWVzdEFuaW1GcmFtZS5jYWxsKHdpbmRvdywoZnVuY3Rpb24oKXt0LnJlcXVlc3Q9bnVsbCx0LnN0YXJ0RGlnZXN0KCl9KSkpfSxzdGFydERpZ2VzdDpmdW5jdGlvbigpe3RoaXMuYWR2YW5jZSgpLHRoaXMuYW5pbWF0aW9ucy5sZW5ndGg+MCYmdGhpcy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKX0sYWR2YW5jZTpmdW5jdGlvbigpe2Zvcih2YXIgdCxlLG4saSxyPXRoaXMuYW5pbWF0aW9ucyxvPTA7bzxyLmxlbmd0aDspZT0odD1yW29dKS5jaGFydCxuPXQubnVtU3RlcHMsaT1NYXRoLmZsb29yKChEYXRlLm5vdygpLXQuc3RhcnRUaW1lKS90LmR1cmF0aW9uKm4pKzEsdC5jdXJyZW50U3RlcD1NYXRoLm1pbihpLG4pLEIuY2FsbGJhY2sodC5yZW5kZXIsW2UsdF0sZSksQi5jYWxsYmFjayh0Lm9uQW5pbWF0aW9uUHJvZ3Jlc3MsW3RdLGUpLHQuY3VycmVudFN0ZXA+PW4/KEIuY2FsbGJhY2sodC5vbkFuaW1hdGlvbkNvbXBsZXRlLFt0XSxlKSxlLmFuaW1hdGluZz0hMSxyLnNwbGljZShvLDEpKTorK299fSxKPUIub3B0aW9ucy5yZXNvbHZlLFo9WyJwdXNoIiwicG9wIiwic2hpZnQiLCJzcGxpY2UiLCJ1bnNoaWZ0Il07ZnVuY3Rpb24gdHQodCxlKXt2YXIgbj10Ll9jaGFydGpzO2lmKG4pe3ZhciBpPW4ubGlzdGVuZXJzLHI9aS5pbmRleE9mKGUpOy0xIT09ciYmaS5zcGxpY2UociwxKSxpLmxlbmd0aD4wfHwoWi5mb3JFYWNoKChmdW5jdGlvbihlKXtkZWxldGUgdFtlXX0pKSxkZWxldGUgdC5fY2hhcnRqcyl9fXZhciBldD1mdW5jdGlvbih0LGUpe3RoaXMuaW5pdGlhbGl6ZSh0LGUpfTtCLmV4dGVuZChldC5wcm90b3R5cGUse2RhdGFzZXRFbGVtZW50VHlwZTpudWxsLGRhdGFFbGVtZW50VHlwZTpudWxsLF9kYXRhc2V0RWxlbWVudE9wdGlvbnM6WyJiYWNrZ3JvdW5kQ29sb3IiLCJib3JkZXJDYXBTdHlsZSIsImJvcmRlckNvbG9yIiwiYm9yZGVyRGFzaCIsImJvcmRlckRhc2hPZmZzZXQiLCJib3JkZXJKb2luU3R5bGUiLCJib3JkZXJXaWR0aCJdLF9kYXRhRWxlbWVudE9wdGlvbnM6WyJiYWNrZ3JvdW5kQ29sb3IiLCJib3JkZXJDb2xvciIsImJvcmRlcldpZHRoIiwicG9pbnRTdHlsZSJdLGluaXRpYWxpemU6ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO24uY2hhcnQ9dCxuLmluZGV4PWUsbi5saW5rU2NhbGVzKCksbi5hZGRFbGVtZW50cygpLG4uX3R5cGU9bi5nZXRNZXRhKCkudHlwZX0sdXBkYXRlSW5kZXg6ZnVuY3Rpb24odCl7dGhpcy5pbmRleD10fSxsaW5rU2NhbGVzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5nZXRNZXRhKCksZT10aGlzLmNoYXJ0LG49ZS5zY2FsZXMsaT10aGlzLmdldERhdGFzZXQoKSxyPWUub3B0aW9ucy5zY2FsZXM7bnVsbCE9PXQueEF4aXNJRCYmdC54QXhpc0lEIGluIG4mJiFpLnhBeGlzSUR8fCh0LnhBeGlzSUQ9aS54QXhpc0lEfHxyLnhBeGVzWzBdLmlkKSxudWxsIT09dC55QXhpc0lEJiZ0LnlBeGlzSUQgaW4gbiYmIWkueUF4aXNJRHx8KHQueUF4aXNJRD1pLnlBeGlzSUR8fHIueUF4ZXNbMF0uaWQpfSxnZXREYXRhc2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2hhcnQuZGF0YS5kYXRhc2V0c1t0aGlzLmluZGV4XX0sZ2V0TWV0YTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNoYXJ0LmdldERhdGFzZXRNZXRhKHRoaXMuaW5kZXgpfSxnZXRTY2FsZUZvcklkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNoYXJ0LnNjYWxlc1t0XX0sX2dldFZhbHVlU2NhbGVJZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldE1ldGEoKS55QXhpc0lEfSxfZ2V0SW5kZXhTY2FsZUlkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0TWV0YSgpLnhBeGlzSUR9LF9nZXRWYWx1ZVNjYWxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0U2NhbGVGb3JJZCh0aGlzLl9nZXRWYWx1ZVNjYWxlSWQoKSl9LF9nZXRJbmRleFNjYWxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0U2NhbGVGb3JJZCh0aGlzLl9nZXRJbmRleFNjYWxlSWQoKSl9LHJlc2V0OmZ1bmN0aW9uKCl7dGhpcy5fdXBkYXRlKCEwKX0sZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuX2RhdGEmJnR0KHRoaXMuX2RhdGEsdGhpcyl9LGNyZWF0ZU1ldGFEYXRhc2V0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5kYXRhc2V0RWxlbWVudFR5cGU7cmV0dXJuIHQmJm5ldyB0KHtfY2hhcnQ6dGhpcy5jaGFydCxfZGF0YXNldEluZGV4OnRoaXMuaW5kZXh9KX0sY3JlYXRlTWV0YURhdGE6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5kYXRhRWxlbWVudFR5cGU7cmV0dXJuIGUmJm5ldyBlKHtfY2hhcnQ6dGhpcy5jaGFydCxfZGF0YXNldEluZGV4OnRoaXMuaW5kZXgsX2luZGV4OnR9KX0sYWRkRWxlbWVudHM6ZnVuY3Rpb24oKXt2YXIgdCxlLG49dGhpcy5nZXRNZXRhKCksaT10aGlzLmdldERhdGFzZXQoKS5kYXRhfHxbXSxyPW4uZGF0YTtmb3IodD0wLGU9aS5sZW5ndGg7dDxlOysrdClyW3RdPXJbdF18fHRoaXMuY3JlYXRlTWV0YURhdGEodCk7bi5kYXRhc2V0PW4uZGF0YXNldHx8dGhpcy5jcmVhdGVNZXRhRGF0YXNldCgpfSxhZGRFbGVtZW50QW5kUmVzZXQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5jcmVhdGVNZXRhRGF0YSh0KTt0aGlzLmdldE1ldGEoKS5kYXRhLnNwbGljZSh0LDAsZSksdGhpcy51cGRhdGVFbGVtZW50KGUsdCwhMCl9LGJ1aWxkT3JVcGRhdGVFbGVtZW50czpmdW5jdGlvbigpe3ZhciB0LGUsbj10aGlzLGk9bi5nZXREYXRhc2V0KCkscj1pLmRhdGF8fChpLmRhdGE9W10pO24uX2RhdGEhPT1yJiYobi5fZGF0YSYmdHQobi5fZGF0YSxuKSxyJiZPYmplY3QuaXNFeHRlbnNpYmxlKHIpJiYoZT1uLCh0PXIpLl9jaGFydGpzP3QuX2NoYXJ0anMubGlzdGVuZXJzLnB1c2goZSk6KE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfY2hhcnRqcyIse2NvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiExLHZhbHVlOntsaXN0ZW5lcnM6W2VdfX0pLFouZm9yRWFjaCgoZnVuY3Rpb24oZSl7dmFyIG49Im9uRGF0YSIrZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStlLnNsaWNlKDEpLGk9dFtlXTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykscj1pLmFwcGx5KHRoaXMsZSk7cmV0dXJuIEIuZWFjaCh0Ll9jaGFydGpzLmxpc3RlbmVycywoZnVuY3Rpb24odCl7ImZ1bmN0aW9uIj09dHlwZW9mIHRbbl0mJnRbbl0uYXBwbHkodCxlKX0pKSxyfX0pfSkpKSksbi5fZGF0YT1yKSxuLnJlc3luY0VsZW1lbnRzKCl9LF9jb25maWd1cmU6ZnVuY3Rpb24oKXt0aGlzLl9jb25maWc9Qi5tZXJnZShPYmplY3QuY3JlYXRlKG51bGwpLFt0aGlzLmNoYXJ0Lm9wdGlvbnMuZGF0YXNldHNbdGhpcy5fdHlwZV0sdGhpcy5nZXREYXRhc2V0KCldLHttZXJnZXI6ZnVuY3Rpb24odCxlLG4peyJfbWV0YSIhPT10JiYiZGF0YSIhPT10JiZCLl9tZXJnZXIodCxlLG4pfX0pfSxfdXBkYXRlOmZ1bmN0aW9uKHQpe3RoaXMuX2NvbmZpZ3VyZSgpLHRoaXMuX2NhY2hlZERhdGFPcHRzPW51bGwsdGhpcy51cGRhdGUodCl9LHVwZGF0ZTpCLm5vb3AsdHJhbnNpdGlvbjpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5nZXRNZXRhKCksbj1lLmRhdGF8fFtdLGk9bi5sZW5ndGgscj0wO3I8aTsrK3IpbltyXS50cmFuc2l0aW9uKHQpO2UuZGF0YXNldCYmZS5kYXRhc2V0LnRyYW5zaXRpb24odCl9LGRyYXc6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmdldE1ldGEoKSxlPXQuZGF0YXx8W10sbj1lLmxlbmd0aCxpPTA7Zm9yKHQuZGF0YXNldCYmdC5kYXRhc2V0LmRyYXcoKTtpPG47KytpKWVbaV0uZHJhdygpfSxnZXRTdHlsZTpmdW5jdGlvbih0KXt2YXIgZSxuPXRoaXMuZ2V0TWV0YSgpLGk9bi5kYXRhc2V0O3JldHVybiB0aGlzLl9jb25maWd1cmUoKSxpJiZ2b2lkIDA9PT10P2U9dGhpcy5fcmVzb2x2ZURhdGFzZXRFbGVtZW50T3B0aW9ucyhpfHx7fSk6KHQ9dHx8MCxlPXRoaXMuX3Jlc29sdmVEYXRhRWxlbWVudE9wdGlvbnMobi5kYXRhW3RdfHx7fSx0KSksITEhPT1lLmZpbGwmJm51bGwhPT1lLmZpbGx8fChlLmJhY2tncm91bmRDb2xvcj1lLmJvcmRlckNvbG9yKSxlfSxfcmVzb2x2ZURhdGFzZXRFbGVtZW50T3B0aW9uczpmdW5jdGlvbih0LGUpe3ZhciBuLGkscixvLGE9dGhpcyxzPWEuY2hhcnQsbD1hLl9jb25maWcsYz10LmN1c3RvbXx8e30sdT1zLm9wdGlvbnMuZWxlbWVudHNbYS5kYXRhc2V0RWxlbWVudFR5cGUucHJvdG90eXBlLl90eXBlXXx8e30sZD1hLl9kYXRhc2V0RWxlbWVudE9wdGlvbnMsaD17fSxmPXtjaGFydDpzLGRhdGFzZXQ6YS5nZXREYXRhc2V0KCksZGF0YXNldEluZGV4OmEuaW5kZXgsaG92ZXI6ZX07Zm9yKG49MCxpPWQubGVuZ3RoO248aTsrK24pcj1kW25dLG89ZT8iaG92ZXIiK3IuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrci5zbGljZSgxKTpyLGhbcl09SihbY1tvXSxsW29dLHVbb11dLGYpO3JldHVybiBofSxfcmVzb2x2ZURhdGFFbGVtZW50T3B0aW9uczpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMsaT10JiZ0LmN1c3RvbSxyPW4uX2NhY2hlZERhdGFPcHRzO2lmKHImJiFpKXJldHVybiByO3ZhciBvLGEscyxsLGM9bi5jaGFydCx1PW4uX2NvbmZpZyxkPWMub3B0aW9ucy5lbGVtZW50c1tuLmRhdGFFbGVtZW50VHlwZS5wcm90b3R5cGUuX3R5cGVdfHx7fSxoPW4uX2RhdGFFbGVtZW50T3B0aW9ucyxmPXt9LHA9e2NoYXJ0OmMsZGF0YUluZGV4OmUsZGF0YXNldDpuLmdldERhdGFzZXQoKSxkYXRhc2V0SW5kZXg6bi5pbmRleH0sZz17Y2FjaGVhYmxlOiFpfTtpZihpPWl8fHt9LEIuaXNBcnJheShoKSlmb3IoYT0wLHM9aC5sZW5ndGg7YTxzOysrYSlmW2w9aFthXV09SihbaVtsXSx1W2xdLGRbbF1dLHAsZSxnKTtlbHNlIGZvcihhPTAscz0obz1PYmplY3Qua2V5cyhoKSkubGVuZ3RoO2E8czsrK2EpZltsPW9bYV1dPUooW2lbbF0sdVtoW2xdXSx1W2xdLGRbbF1dLHAsZSxnKTtyZXR1cm4gZy5jYWNoZWFibGUmJihuLl9jYWNoZWREYXRhT3B0cz1PYmplY3QuZnJlZXplKGYpKSxmfSxyZW1vdmVIb3ZlclN0eWxlOmZ1bmN0aW9uKHQpe0IubWVyZ2UodC5fbW9kZWwsdC4kcHJldmlvdXNTdHlsZXx8e30pLGRlbGV0ZSB0LiRwcmV2aW91c1N0eWxlfSxzZXRIb3ZlclN0eWxlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuY2hhcnQuZGF0YS5kYXRhc2V0c1t0Ll9kYXRhc2V0SW5kZXhdLG49dC5faW5kZXgsaT10LmN1c3RvbXx8e30scj10Ll9tb2RlbCxvPUIuZ2V0SG92ZXJDb2xvcjt0LiRwcmV2aW91c1N0eWxlPXtiYWNrZ3JvdW5kQ29sb3I6ci5iYWNrZ3JvdW5kQ29sb3IsYm9yZGVyQ29sb3I6ci5ib3JkZXJDb2xvcixib3JkZXJXaWR0aDpyLmJvcmRlcldpZHRofSxyLmJhY2tncm91bmRDb2xvcj1KKFtpLmhvdmVyQmFja2dyb3VuZENvbG9yLGUuaG92ZXJCYWNrZ3JvdW5kQ29sb3IsbyhyLmJhY2tncm91bmRDb2xvcildLHZvaWQgMCxuKSxyLmJvcmRlckNvbG9yPUooW2kuaG92ZXJCb3JkZXJDb2xvcixlLmhvdmVyQm9yZGVyQ29sb3IsbyhyLmJvcmRlckNvbG9yKV0sdm9pZCAwLG4pLHIuYm9yZGVyV2lkdGg9SihbaS5ob3ZlckJvcmRlcldpZHRoLGUuaG92ZXJCb3JkZXJXaWR0aCxyLmJvcmRlcldpZHRoXSx2b2lkIDAsbil9LF9yZW1vdmVEYXRhc2V0SG92ZXJTdHlsZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZ2V0TWV0YSgpLmRhdGFzZXQ7dCYmdGhpcy5yZW1vdmVIb3ZlclN0eWxlKHQpfSxfc2V0RGF0YXNldEhvdmVyU3R5bGU6ZnVuY3Rpb24oKXt2YXIgdCxlLG4saSxyLG8sYT10aGlzLmdldE1ldGEoKS5kYXRhc2V0LHM9e307aWYoYSl7Zm9yKG89YS5fbW9kZWwscj10aGlzLl9yZXNvbHZlRGF0YXNldEVsZW1lbnRPcHRpb25zKGEsITApLHQ9MCxlPShpPU9iamVjdC5rZXlzKHIpKS5sZW5ndGg7dDxlOysrdClzW249aVt0XV09b1tuXSxvW25dPXJbbl07YS4kcHJldmlvdXNTdHlsZT1zfX0scmVzeW5jRWxlbWVudHM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmdldE1ldGEoKSxlPXRoaXMuZ2V0RGF0YXNldCgpLmRhdGEsbj10LmRhdGEubGVuZ3RoLGk9ZS5sZW5ndGg7aTxuP3QuZGF0YS5zcGxpY2UoaSxuLWkpOmk+biYmdGhpcy5pbnNlcnRFbGVtZW50cyhuLGktbil9LGluc2VydEVsZW1lbnRzOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPTA7bjxlOysrbil0aGlzLmFkZEVsZW1lbnRBbmRSZXNldCh0K24pfSxvbkRhdGFQdXNoOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aDt0aGlzLmluc2VydEVsZW1lbnRzKHRoaXMuZ2V0RGF0YXNldCgpLmRhdGEubGVuZ3RoLXQsdCl9LG9uRGF0YVBvcDpmdW5jdGlvbigpe3RoaXMuZ2V0TWV0YSgpLmRhdGEucG9wKCl9LG9uRGF0YVNoaWZ0OmZ1bmN0aW9uKCl7dGhpcy5nZXRNZXRhKCkuZGF0YS5zaGlmdCgpfSxvbkRhdGFTcGxpY2U6ZnVuY3Rpb24odCxlKXt0aGlzLmdldE1ldGEoKS5kYXRhLnNwbGljZSh0LGUpLHRoaXMuaW5zZXJ0RWxlbWVudHModCxhcmd1bWVudHMubGVuZ3RoLTIpfSxvbkRhdGFVbnNoaWZ0OmZ1bmN0aW9uKCl7dGhpcy5pbnNlcnRFbGVtZW50cygwLGFyZ3VtZW50cy5sZW5ndGgpfX0pLGV0LmV4dGVuZD1CLmluaGVyaXRzO3ZhciBudD1ldCxpdD0yKk1hdGguUEk7ZnVuY3Rpb24gcnQodCxlKXt2YXIgbj1lLnN0YXJ0QW5nbGUsaT1lLmVuZEFuZ2xlLHI9ZS5waXhlbE1hcmdpbixvPXIvZS5vdXRlclJhZGl1cyxhPWUueCxzPWUueTt0LmJlZ2luUGF0aCgpLHQuYXJjKGEscyxlLm91dGVyUmFkaXVzLG4tbyxpK28pLGUuaW5uZXJSYWRpdXM+cj8obz1yL2UuaW5uZXJSYWRpdXMsdC5hcmMoYSxzLGUuaW5uZXJSYWRpdXMtcixpK28sbi1vLCEwKSk6dC5hcmMoYSxzLHIsaStNYXRoLlBJLzIsbi1NYXRoLlBJLzIpLHQuY2xvc2VQYXRoKCksdC5jbGlwKCl9Ui5fc2V0KCJnbG9iYWwiLHtlbGVtZW50czp7YXJjOntiYWNrZ3JvdW5kQ29sb3I6Ui5nbG9iYWwuZGVmYXVsdENvbG9yLGJvcmRlckNvbG9yOiIjZmZmIixib3JkZXJXaWR0aDoyLGJvcmRlckFsaWduOiJjZW50ZXIifX19KTt2YXIgb3Q9Ry5leHRlbmQoe190eXBlOiJhcmMiLGluTGFiZWxSYW5nZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl92aWV3O3JldHVybiEhZSYmTWF0aC5wb3codC1lLngsMik8TWF0aC5wb3coZS5yYWRpdXMrZS5ob3ZlclJhZGl1cywyKX0saW5SYW5nZTpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX3ZpZXc7aWYobil7Zm9yKHZhciBpPUIuZ2V0QW5nbGVGcm9tUG9pbnQobix7eDp0LHk6ZX0pLHI9aS5hbmdsZSxvPWkuZGlzdGFuY2UsYT1uLnN0YXJ0QW5nbGUscz1uLmVuZEFuZ2xlO3M8YTspcys9aXQ7Zm9yKDtyPnM7KXItPWl0O2Zvcig7cjxhOylyKz1pdDt2YXIgbD1yPj1hJiZyPD1zLGM9bz49bi5pbm5lclJhZGl1cyYmbzw9bi5vdXRlclJhZGl1cztyZXR1cm4gbCYmY31yZXR1cm4hMX0sZ2V0Q2VudGVyUG9pbnQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl92aWV3LGU9KHQuc3RhcnRBbmdsZSt0LmVuZEFuZ2xlKS8yLG49KHQuaW5uZXJSYWRpdXMrdC5vdXRlclJhZGl1cykvMjtyZXR1cm57eDp0LngrTWF0aC5jb3MoZSkqbix5OnQueStNYXRoLnNpbihlKSpufX0sZ2V0QXJlYTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3ZpZXc7cmV0dXJuIE1hdGguUEkqKCh0LmVuZEFuZ2xlLXQuc3RhcnRBbmdsZSkvKDIqTWF0aC5QSSkpKihNYXRoLnBvdyh0Lm91dGVyUmFkaXVzLDIpLU1hdGgucG93KHQuaW5uZXJSYWRpdXMsMikpfSx0b29sdGlwUG9zaXRpb246ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl92aWV3LGU9dC5zdGFydEFuZ2xlKyh0LmVuZEFuZ2xlLXQuc3RhcnRBbmdsZSkvMixuPSh0Lm91dGVyUmFkaXVzLXQuaW5uZXJSYWRpdXMpLzIrdC5pbm5lclJhZGl1cztyZXR1cm57eDp0LngrTWF0aC5jb3MoZSkqbix5OnQueStNYXRoLnNpbihlKSpufX0sZHJhdzpmdW5jdGlvbigpe3ZhciB0LGU9dGhpcy5fY2hhcnQuY3R4LG49dGhpcy5fdmlldyxpPSJpbm5lciI9PT1uLmJvcmRlckFsaWduPy4zMzowLHI9e3g6bi54LHk6bi55LGlubmVyUmFkaXVzOm4uaW5uZXJSYWRpdXMsb3V0ZXJSYWRpdXM6TWF0aC5tYXgobi5vdXRlclJhZGl1cy1pLDApLHBpeGVsTWFyZ2luOmksc3RhcnRBbmdsZTpuLnN0YXJ0QW5nbGUsZW5kQW5nbGU6bi5lbmRBbmdsZSxmdWxsQ2lyY2xlczpNYXRoLmZsb29yKG4uY2lyY3VtZmVyZW5jZS9pdCl9O2lmKGUuc2F2ZSgpLGUuZmlsbFN0eWxlPW4uYmFja2dyb3VuZENvbG9yLGUuc3Ryb2tlU3R5bGU9bi5ib3JkZXJDb2xvcixyLmZ1bGxDaXJjbGVzKXtmb3Ioci5lbmRBbmdsZT1yLnN0YXJ0QW5nbGUraXQsZS5iZWdpblBhdGgoKSxlLmFyYyhyLngsci55LHIub3V0ZXJSYWRpdXMsci5zdGFydEFuZ2xlLHIuZW5kQW5nbGUpLGUuYXJjKHIueCxyLnksci5pbm5lclJhZGl1cyxyLmVuZEFuZ2xlLHIuc3RhcnRBbmdsZSwhMCksZS5jbG9zZVBhdGgoKSx0PTA7dDxyLmZ1bGxDaXJjbGVzOysrdCllLmZpbGwoKTtyLmVuZEFuZ2xlPXIuc3RhcnRBbmdsZStuLmNpcmN1bWZlcmVuY2UlaXR9ZS5iZWdpblBhdGgoKSxlLmFyYyhyLngsci55LHIub3V0ZXJSYWRpdXMsci5zdGFydEFuZ2xlLHIuZW5kQW5nbGUpLGUuYXJjKHIueCxyLnksci5pbm5lclJhZGl1cyxyLmVuZEFuZ2xlLHIuc3RhcnRBbmdsZSwhMCksZS5jbG9zZVBhdGgoKSxlLmZpbGwoKSxuLmJvcmRlcldpZHRoJiZmdW5jdGlvbih0LGUsbil7dmFyIGk9ImlubmVyIj09PWUuYm9yZGVyQWxpZ247aT8odC5saW5lV2lkdGg9MiplLmJvcmRlcldpZHRoLHQubGluZUpvaW49InJvdW5kIik6KHQubGluZVdpZHRoPWUuYm9yZGVyV2lkdGgsdC5saW5lSm9pbj0iYmV2ZWwiKSxuLmZ1bGxDaXJjbGVzJiZmdW5jdGlvbih0LGUsbixpKXt2YXIgcixvPW4uZW5kQW5nbGU7Zm9yKGkmJihuLmVuZEFuZ2xlPW4uc3RhcnRBbmdsZStpdCxydCh0LG4pLG4uZW5kQW5nbGU9byxuLmVuZEFuZ2xlPT09bi5zdGFydEFuZ2xlJiZuLmZ1bGxDaXJjbGVzJiYobi5lbmRBbmdsZSs9aXQsbi5mdWxsQ2lyY2xlcy0tKSksdC5iZWdpblBhdGgoKSx0LmFyYyhuLngsbi55LG4uaW5uZXJSYWRpdXMsbi5zdGFydEFuZ2xlK2l0LG4uc3RhcnRBbmdsZSwhMCkscj0wO3I8bi5mdWxsQ2lyY2xlczsrK3IpdC5zdHJva2UoKTtmb3IodC5iZWdpblBhdGgoKSx0LmFyYyhuLngsbi55LGUub3V0ZXJSYWRpdXMsbi5zdGFydEFuZ2xlLG4uc3RhcnRBbmdsZStpdCkscj0wO3I8bi5mdWxsQ2lyY2xlczsrK3IpdC5zdHJva2UoKX0odCxlLG4saSksaSYmcnQodCxuKSx0LmJlZ2luUGF0aCgpLHQuYXJjKG4ueCxuLnksZS5vdXRlclJhZGl1cyxuLnN0YXJ0QW5nbGUsbi5lbmRBbmdsZSksdC5hcmMobi54LG4ueSxuLmlubmVyUmFkaXVzLG4uZW5kQW5nbGUsbi5zdGFydEFuZ2xlLCEwKSx0LmNsb3NlUGF0aCgpLHQuc3Ryb2tlKCl9KGUsbixyKSxlLnJlc3RvcmUoKX19KSxhdD1CLnZhbHVlT3JEZWZhdWx0LHN0PVIuZ2xvYmFsLmRlZmF1bHRDb2xvcjtSLl9zZXQoImdsb2JhbCIse2VsZW1lbnRzOntsaW5lOnt0ZW5zaW9uOi40LGJhY2tncm91bmRDb2xvcjpzdCxib3JkZXJXaWR0aDozLGJvcmRlckNvbG9yOnN0LGJvcmRlckNhcFN0eWxlOiJidXR0Iixib3JkZXJEYXNoOltdLGJvcmRlckRhc2hPZmZzZXQ6MCxib3JkZXJKb2luU3R5bGU6Im1pdGVyIixjYXBCZXppZXJQb2ludHM6ITAsZmlsbDohMH19fSk7dmFyIGx0PUcuZXh0ZW5kKHtfdHlwZToibGluZSIsZHJhdzpmdW5jdGlvbigpe3ZhciB0LGUsbixpPXRoaXMscj1pLl92aWV3LG89aS5fY2hhcnQuY3R4LGE9ci5zcGFuR2FwcyxzPWkuX2NoaWxkcmVuLnNsaWNlKCksbD1SLmdsb2JhbCxjPWwuZWxlbWVudHMubGluZSx1PS0xLGQ9aS5fbG9vcDtpZihzLmxlbmd0aCl7aWYoaS5fbG9vcCl7Zm9yKHQ9MDt0PHMubGVuZ3RoOysrdClpZihlPUIucHJldmlvdXNJdGVtKHMsdCksIXNbdF0uX3ZpZXcuc2tpcCYmZS5fdmlldy5za2lwKXtzPXMuc2xpY2UodCkuY29uY2F0KHMuc2xpY2UoMCx0KSksZD1hO2JyZWFrfWQmJnMucHVzaChzWzBdKX1mb3Ioby5zYXZlKCksby5saW5lQ2FwPXIuYm9yZGVyQ2FwU3R5bGV8fGMuYm9yZGVyQ2FwU3R5bGUsby5zZXRMaW5lRGFzaCYmby5zZXRMaW5lRGFzaChyLmJvcmRlckRhc2h8fGMuYm9yZGVyRGFzaCksby5saW5lRGFzaE9mZnNldD1hdChyLmJvcmRlckRhc2hPZmZzZXQsYy5ib3JkZXJEYXNoT2Zmc2V0KSxvLmxpbmVKb2luPXIuYm9yZGVySm9pblN0eWxlfHxjLmJvcmRlckpvaW5TdHlsZSxvLmxpbmVXaWR0aD1hdChyLmJvcmRlcldpZHRoLGMuYm9yZGVyV2lkdGgpLG8uc3Ryb2tlU3R5bGU9ci5ib3JkZXJDb2xvcnx8bC5kZWZhdWx0Q29sb3Isby5iZWdpblBhdGgoKSwobj1zWzBdLl92aWV3KS5za2lwfHwoby5tb3ZlVG8obi54LG4ueSksdT0wKSx0PTE7dDxzLmxlbmd0aDsrK3Qpbj1zW3RdLl92aWV3LGU9LTE9PT11P0IucHJldmlvdXNJdGVtKHMsdCk6c1t1XSxuLnNraXB8fCh1IT09dC0xJiYhYXx8LTE9PT11P28ubW92ZVRvKG4ueCxuLnkpOkIuY2FudmFzLmxpbmVUbyhvLGUuX3ZpZXcsbiksdT10KTtkJiZvLmNsb3NlUGF0aCgpLG8uc3Ryb2tlKCksby5yZXN0b3JlKCl9fX0pLGN0PUIudmFsdWVPckRlZmF1bHQsdXQ9Ui5nbG9iYWwuZGVmYXVsdENvbG9yO2Z1bmN0aW9uIGR0KHQpe3ZhciBlPXRoaXMuX3ZpZXc7cmV0dXJuISFlJiZNYXRoLmFicyh0LWUueCk8ZS5yYWRpdXMrZS5oaXRSYWRpdXN9Ui5fc2V0KCJnbG9iYWwiLHtlbGVtZW50czp7cG9pbnQ6e3JhZGl1czozLHBvaW50U3R5bGU6ImNpcmNsZSIsYmFja2dyb3VuZENvbG9yOnV0LGJvcmRlckNvbG9yOnV0LGJvcmRlcldpZHRoOjEsaGl0UmFkaXVzOjEsaG92ZXJSYWRpdXM6NCxob3ZlckJvcmRlcldpZHRoOjF9fX0pO3ZhciBodD1HLmV4dGVuZCh7X3R5cGU6InBvaW50IixpblJhbmdlOmZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5fdmlldztyZXR1cm4hIW4mJk1hdGgucG93KHQtbi54LDIpK01hdGgucG93KGUtbi55LDIpPE1hdGgucG93KG4uaGl0UmFkaXVzK24ucmFkaXVzLDIpfSxpbkxhYmVsUmFuZ2U6ZHQsaW5YUmFuZ2U6ZHQsaW5ZUmFuZ2U6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fdmlldztyZXR1cm4hIWUmJk1hdGguYWJzKHQtZS55KTxlLnJhZGl1cytlLmhpdFJhZGl1c30sZ2V0Q2VudGVyUG9pbnQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl92aWV3O3JldHVybnt4OnQueCx5OnQueX19LGdldEFyZWE6ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5QSSpNYXRoLnBvdyh0aGlzLl92aWV3LnJhZGl1cywyKX0sdG9vbHRpcFBvc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fdmlldztyZXR1cm57eDp0LngseTp0LnkscGFkZGluZzp0LnJhZGl1cyt0LmJvcmRlcldpZHRofX0sZHJhdzpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl92aWV3LG49dGhpcy5fY2hhcnQuY3R4LGk9ZS5wb2ludFN0eWxlLHI9ZS5yb3RhdGlvbixvPWUucmFkaXVzLGE9ZS54LHM9ZS55LGw9Ui5nbG9iYWwsYz1sLmRlZmF1bHRDb2xvcjtlLnNraXB8fCh2b2lkIDA9PT10fHxCLmNhbnZhcy5faXNQb2ludEluQXJlYShlLHQpKSYmKG4uc3Ryb2tlU3R5bGU9ZS5ib3JkZXJDb2xvcnx8YyxuLmxpbmVXaWR0aD1jdChlLmJvcmRlcldpZHRoLGwuZWxlbWVudHMucG9pbnQuYm9yZGVyV2lkdGgpLG4uZmlsbFN0eWxlPWUuYmFja2dyb3VuZENvbG9yfHxjLEIuY2FudmFzLmRyYXdQb2ludChuLGksbyxhLHMscikpfX0pLGZ0PVIuZ2xvYmFsLmRlZmF1bHRDb2xvcjtmdW5jdGlvbiBwdCh0KXtyZXR1cm4gdCYmdm9pZCAwIT09dC53aWR0aH1mdW5jdGlvbiBndCh0KXt2YXIgZSxuLGkscixvO3JldHVybiBwdCh0KT8obz10LndpZHRoLzIsZT10LngtbyxuPXQueCtvLGk9TWF0aC5taW4odC55LHQuYmFzZSkscj1NYXRoLm1heCh0LnksdC5iYXNlKSk6KG89dC5oZWlnaHQvMixlPU1hdGgubWluKHQueCx0LmJhc2UpLG49TWF0aC5tYXgodC54LHQuYmFzZSksaT10LnktbyxyPXQueStvKSx7bGVmdDplLHRvcDppLHJpZ2h0Om4sYm90dG9tOnJ9fWZ1bmN0aW9uIG10KHQsZSxuKXtyZXR1cm4gdD09PWU/bjp0PT09bj9lOnR9ZnVuY3Rpb24gdnQodCxlLG4pe3ZhciBpPW51bGw9PT1lLHI9bnVsbD09PW4sbz0hKCF0fHxpJiZyKSYmZ3QodCk7cmV0dXJuIG8mJihpfHxlPj1vLmxlZnQmJmU8PW8ucmlnaHQpJiYocnx8bj49by50b3AmJm48PW8uYm90dG9tKX1SLl9zZXQoImdsb2JhbCIse2VsZW1lbnRzOntyZWN0YW5nbGU6e2JhY2tncm91bmRDb2xvcjpmdCxib3JkZXJDb2xvcjpmdCxib3JkZXJTa2lwcGVkOiJib3R0b20iLGJvcmRlcldpZHRoOjB9fX0pO3ZhciB5dD1HLmV4dGVuZCh7X3R5cGU6InJlY3RhbmdsZSIsZHJhdzpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2NoYXJ0LmN0eCxlPXRoaXMuX3ZpZXcsbj1mdW5jdGlvbih0KXt2YXIgZT1ndCh0KSxuPWUucmlnaHQtZS5sZWZ0LGk9ZS5ib3R0b20tZS50b3Ascj1mdW5jdGlvbih0LGUsbil7dmFyIGkscixvLGEscz10LmJvcmRlcldpZHRoLGw9ZnVuY3Rpb24odCl7dmFyIGU9dC5ib3JkZXJTa2lwcGVkLG49e307cmV0dXJuIGU/KHQuaG9yaXpvbnRhbD90LmJhc2U+dC54JiYoZT1tdChlLCJsZWZ0IiwicmlnaHQiKSk6dC5iYXNlPHQueSYmKGU9bXQoZSwiYm90dG9tIiwidG9wIikpLG5bZV09ITAsbik6bn0odCk7cmV0dXJuIEIuaXNPYmplY3Qocyk/KGk9K3MudG9wfHwwLHI9K3MucmlnaHR8fDAsbz0rcy5ib3R0b218fDAsYT0rcy5sZWZ0fHwwKTppPXI9bz1hPStzfHwwLHt0OmwudG9wfHxpPDA/MDppPm4/bjppLHI6bC5yaWdodHx8cjwwPzA6cj5lP2U6cixiOmwuYm90dG9tfHxvPDA/MDpvPm4/bjpvLGw6bC5sZWZ0fHxhPDA/MDphPmU/ZTphfX0odCxuLzIsaS8yKTtyZXR1cm57b3V0ZXI6e3g6ZS5sZWZ0LHk6ZS50b3AsdzpuLGg6aX0saW5uZXI6e3g6ZS5sZWZ0K3IubCx5OmUudG9wK3IudCx3Om4tci5sLXIucixoOmktci50LXIuYn19fShlKSxpPW4ub3V0ZXIscj1uLmlubmVyO3QuZmlsbFN0eWxlPWUuYmFja2dyb3VuZENvbG9yLHQuZmlsbFJlY3QoaS54LGkueSxpLncsaS5oKSxpLnc9PT1yLncmJmkuaD09PXIuaHx8KHQuc2F2ZSgpLHQuYmVnaW5QYXRoKCksdC5yZWN0KGkueCxpLnksaS53LGkuaCksdC5jbGlwKCksdC5maWxsU3R5bGU9ZS5ib3JkZXJDb2xvcix0LnJlY3Qoci54LHIueSxyLncsci5oKSx0LmZpbGwoImV2ZW5vZGQiKSx0LnJlc3RvcmUoKSl9LGhlaWdodDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3ZpZXc7cmV0dXJuIHQuYmFzZS10Lnl9LGluUmFuZ2U6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdnQodGhpcy5fdmlldyx0LGUpfSxpbkxhYmVsUmFuZ2U6ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLl92aWV3O3JldHVybiBwdChuKT92dChuLHQsbnVsbCk6dnQobixudWxsLGUpfSxpblhSYW5nZTpmdW5jdGlvbih0KXtyZXR1cm4gdnQodGhpcy5fdmlldyx0LG51bGwpfSxpbllSYW5nZTpmdW5jdGlvbih0KXtyZXR1cm4gdnQodGhpcy5fdmlldyxudWxsLHQpfSxnZXRDZW50ZXJQb2ludDpmdW5jdGlvbigpe3ZhciB0LGUsbj10aGlzLl92aWV3O3JldHVybiBwdChuKT8odD1uLngsZT0obi55K24uYmFzZSkvMik6KHQ9KG4ueCtuLmJhc2UpLzIsZT1uLnkpLHt4OnQseTplfX0sZ2V0QXJlYTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3ZpZXc7cmV0dXJuIHB0KHQpP3Qud2lkdGgqTWF0aC5hYnModC55LXQuYmFzZSk6dC5oZWlnaHQqTWF0aC5hYnModC54LXQuYmFzZSl9LHRvb2x0aXBQb3NpdGlvbjpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3ZpZXc7cmV0dXJue3g6dC54LHk6dC55fX19KSxidD17fSx3dD1vdCx4dD1sdCxfdD1odCxTdD15dDtidC5BcmM9d3QsYnQuTGluZT14dCxidC5Qb2ludD1fdCxidC5SZWN0YW5nbGU9U3Q7dmFyIEN0PUIuX2RlcHJlY2F0ZWQsa3Q9Qi52YWx1ZU9yRGVmYXVsdDtSLl9zZXQoImJhciIse2hvdmVyOnttb2RlOiJsYWJlbCJ9LHNjYWxlczp7eEF4ZXM6W3t0eXBlOiJjYXRlZ29yeSIsb2Zmc2V0OiEwLGdyaWRMaW5lczp7b2Zmc2V0R3JpZExpbmVzOiEwfX1dLHlBeGVzOlt7dHlwZToibGluZWFyIn1dfX0pLFIuX3NldCgiZ2xvYmFsIix7ZGF0YXNldHM6e2Jhcjp7Y2F0ZWdvcnlQZXJjZW50YWdlOi44LGJhclBlcmNlbnRhZ2U6Ljl9fX0pO3ZhciBUdD1udC5leHRlbmQoe2RhdGFFbGVtZW50VHlwZTpidC5SZWN0YW5nbGUsX2RhdGFFbGVtZW50T3B0aW9uczpbImJhY2tncm91bmRDb2xvciIsImJvcmRlckNvbG9yIiwiYm9yZGVyU2tpcHBlZCIsImJvcmRlcldpZHRoIiwiYmFyUGVyY2VudGFnZSIsImJhclRoaWNrbmVzcyIsImNhdGVnb3J5UGVyY2VudGFnZSIsIm1heEJhclRoaWNrbmVzcyIsIm1pbkJhckxlbmd0aCJdLGluaXRpYWxpemU6ZnVuY3Rpb24oKXt2YXIgdCxlLG49dGhpcztudC5wcm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBseShuLGFyZ3VtZW50cyksKHQ9bi5nZXRNZXRhKCkpLnN0YWNrPW4uZ2V0RGF0YXNldCgpLnN0YWNrLHQuYmFyPSEwLGU9bi5fZ2V0SW5kZXhTY2FsZSgpLm9wdGlvbnMsQ3QoImJhciBjaGFydCIsZS5iYXJQZXJjZW50YWdlLCJzY2FsZXMuW3gveV1BeGVzLmJhclBlcmNlbnRhZ2UiLCJkYXRhc2V0LmJhclBlcmNlbnRhZ2UiKSxDdCgiYmFyIGNoYXJ0IixlLmJhclRoaWNrbmVzcywic2NhbGVzLlt4L3ldQXhlcy5iYXJUaGlja25lc3MiLCJkYXRhc2V0LmJhclRoaWNrbmVzcyIpLEN0KCJiYXIgY2hhcnQiLGUuY2F0ZWdvcnlQZXJjZW50YWdlLCJzY2FsZXMuW3gveV1BeGVzLmNhdGVnb3J5UGVyY2VudGFnZSIsImRhdGFzZXQuY2F0ZWdvcnlQZXJjZW50YWdlIiksQ3QoImJhciBjaGFydCIsbi5fZ2V0VmFsdWVTY2FsZSgpLm9wdGlvbnMubWluQmFyTGVuZ3RoLCJzY2FsZXMuW3gveV1BeGVzLm1pbkJhckxlbmd0aCIsImRhdGFzZXQubWluQmFyTGVuZ3RoIiksQ3QoImJhciBjaGFydCIsZS5tYXhCYXJUaGlja25lc3MsInNjYWxlcy5beC95XUF4ZXMubWF4QmFyVGhpY2tuZXNzIiwiZGF0YXNldC5tYXhCYXJUaGlja25lc3MiKX0sdXBkYXRlOmZ1bmN0aW9uKHQpe3ZhciBlLG4saT10aGlzLmdldE1ldGEoKS5kYXRhO2Zvcih0aGlzLl9ydWxlcj10aGlzLmdldFJ1bGVyKCksZT0wLG49aS5sZW5ndGg7ZTxuOysrZSl0aGlzLnVwZGF0ZUVsZW1lbnQoaVtlXSxlLHQpfSx1cGRhdGVFbGVtZW50OmZ1bmN0aW9uKHQsZSxuKXt2YXIgaT10aGlzLHI9aS5nZXRNZXRhKCksbz1pLmdldERhdGFzZXQoKSxhPWkuX3Jlc29sdmVEYXRhRWxlbWVudE9wdGlvbnModCxlKTt0Ll94U2NhbGU9aS5nZXRTY2FsZUZvcklkKHIueEF4aXNJRCksdC5feVNjYWxlPWkuZ2V0U2NhbGVGb3JJZChyLnlBeGlzSUQpLHQuX2RhdGFzZXRJbmRleD1pLmluZGV4LHQuX2luZGV4PWUsdC5fbW9kZWw9e2JhY2tncm91bmRDb2xvcjphLmJhY2tncm91bmRDb2xvcixib3JkZXJDb2xvcjphLmJvcmRlckNvbG9yLGJvcmRlclNraXBwZWQ6YS5ib3JkZXJTa2lwcGVkLGJvcmRlcldpZHRoOmEuYm9yZGVyV2lkdGgsZGF0YXNldExhYmVsOm8ubGFiZWwsbGFiZWw6aS5jaGFydC5kYXRhLmxhYmVsc1tlXX0sQi5pc0FycmF5KG8uZGF0YVtlXSkmJih0Ll9tb2RlbC5ib3JkZXJTa2lwcGVkPW51bGwpLGkuX3VwZGF0ZUVsZW1lbnRHZW9tZXRyeSh0LGUsbixhKSx0LnBpdm90KCl9LF91cGRhdGVFbGVtZW50R2VvbWV0cnk6ZnVuY3Rpb24odCxlLG4saSl7dmFyIHI9dGhpcyxvPXQuX21vZGVsLGE9ci5fZ2V0VmFsdWVTY2FsZSgpLHM9YS5nZXRCYXNlUGl4ZWwoKSxsPWEuaXNIb3Jpem9udGFsKCksYz1yLl9ydWxlcnx8ci5nZXRSdWxlcigpLHU9ci5jYWxjdWxhdGVCYXJWYWx1ZVBpeGVscyhyLmluZGV4LGUsaSksZD1yLmNhbGN1bGF0ZUJhckluZGV4UGl4ZWxzKHIuaW5kZXgsZSxjLGkpO28uaG9yaXpvbnRhbD1sLG8uYmFzZT1uP3M6dS5iYXNlLG8ueD1sP24/czp1LmhlYWQ6ZC5jZW50ZXIsby55PWw/ZC5jZW50ZXI6bj9zOnUuaGVhZCxvLmhlaWdodD1sP2Quc2l6ZTp2b2lkIDAsby53aWR0aD1sP3ZvaWQgMDpkLnNpemV9LF9nZXRTdGFja3M6ZnVuY3Rpb24odCl7dmFyIGUsbixpPXRoaXMuX2dldEluZGV4U2NhbGUoKSxyPWkuX2dldE1hdGNoaW5nVmlzaWJsZU1ldGFzKHRoaXMuX3R5cGUpLG89aS5vcHRpb25zLnN0YWNrZWQsYT1yLmxlbmd0aCxzPVtdO2ZvcihlPTA7ZTxhJiYobj1yW2VdLCghMT09PW98fC0xPT09cy5pbmRleE9mKG4uc3RhY2spfHx2b2lkIDA9PT1vJiZ2b2lkIDA9PT1uLnN0YWNrKSYmcy5wdXNoKG4uc3RhY2spLG4uaW5kZXghPT10KTsrK2UpO3JldHVybiBzfSxnZXRTdGFja0NvdW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2dldFN0YWNrcygpLmxlbmd0aH0sZ2V0U3RhY2tJbmRleDpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX2dldFN0YWNrcyh0KSxpPXZvaWQgMCE9PWU/bi5pbmRleE9mKGUpOi0xO3JldHVybi0xPT09aT9uLmxlbmd0aC0xOml9LGdldFJ1bGVyOmZ1bmN0aW9uKCl7dmFyIHQsZSxuPXRoaXMuX2dldEluZGV4U2NhbGUoKSxpPVtdO2Zvcih0PTAsZT10aGlzLmdldE1ldGEoKS5kYXRhLmxlbmd0aDt0PGU7Kyt0KWkucHVzaChuLmdldFBpeGVsRm9yVmFsdWUobnVsbCx0LHRoaXMuaW5kZXgpKTtyZXR1cm57cGl4ZWxzOmksc3RhcnQ6bi5fc3RhcnRQaXhlbCxlbmQ6bi5fZW5kUGl4ZWwsc3RhY2tDb3VudDp0aGlzLmdldFN0YWNrQ291bnQoKSxzY2FsZTpufX0sY2FsY3VsYXRlQmFyVmFsdWVQaXhlbHM6ZnVuY3Rpb24odCxlLG4pe3ZhciBpLHIsbyxhLHMsbCxjLHU9dGhpcy5jaGFydCxkPXRoaXMuX2dldFZhbHVlU2NhbGUoKSxoPWQuaXNIb3Jpem9udGFsKCksZj11LmRhdGEuZGF0YXNldHMscD1kLl9nZXRNYXRjaGluZ1Zpc2libGVNZXRhcyh0aGlzLl90eXBlKSxnPWQuX3BhcnNlVmFsdWUoZlt0XS5kYXRhW2VdKSxtPW4ubWluQmFyTGVuZ3RoLHY9ZC5vcHRpb25zLnN0YWNrZWQseT10aGlzLmdldE1ldGEoKS5zdGFjayxiPXZvaWQgMD09PWcuc3RhcnQ/MDpnLm1heD49MCYmZy5taW4+PTA/Zy5taW46Zy5tYXgsdz12b2lkIDA9PT1nLnN0YXJ0P2cuZW5kOmcubWF4Pj0wJiZnLm1pbj49MD9nLm1heC1nLm1pbjpnLm1pbi1nLm1heCx4PXAubGVuZ3RoO2lmKHZ8fHZvaWQgMD09PXYmJnZvaWQgMCE9PXkpZm9yKGk9MDtpPHgmJihyPXBbaV0pLmluZGV4IT09dDsrK2kpci5zdGFjaz09PXkmJihvPXZvaWQgMD09PShjPWQuX3BhcnNlVmFsdWUoZltyLmluZGV4XS5kYXRhW2VdKSkuc3RhcnQ/Yy5lbmQ6Yy5taW4+PTAmJmMubWF4Pj0wP2MubWF4OmMubWluLChnLm1pbjwwJiZvPDB8fGcubWF4Pj0wJiZvPjApJiYoYis9bykpO3JldHVybiBhPWQuZ2V0UGl4ZWxGb3JWYWx1ZShiKSxsPShzPWQuZ2V0UGl4ZWxGb3JWYWx1ZShiK3cpKS1hLHZvaWQgMCE9PW0mJk1hdGguYWJzKGwpPG0mJihsPW0scz13Pj0wJiYhaHx8dzwwJiZoP2EtbTphK20pLHtzaXplOmwsYmFzZTphLGhlYWQ6cyxjZW50ZXI6cytsLzJ9fSxjYWxjdWxhdGVCYXJJbmRleFBpeGVsczpmdW5jdGlvbih0LGUsbixpKXt2YXIgcj0iZmxleCI9PT1pLmJhclRoaWNrbmVzcz9mdW5jdGlvbih0LGUsbil7dmFyIGkscj1lLnBpeGVscyxvPXJbdF0sYT10PjA/clt0LTFdOm51bGwscz10PHIubGVuZ3RoLTE/clt0KzFdOm51bGwsbD1uLmNhdGVnb3J5UGVyY2VudGFnZTtyZXR1cm4gbnVsbD09PWEmJihhPW8tKG51bGw9PT1zP2UuZW5kLWUuc3RhcnQ6cy1vKSksbnVsbD09PXMmJihzPW8rby1hKSxpPW8tKG8tTWF0aC5taW4oYSxzKSkvMipsLHtjaHVuazpNYXRoLmFicyhzLWEpLzIqbC9lLnN0YWNrQ291bnQscmF0aW86bi5iYXJQZXJjZW50YWdlLHN0YXJ0Oml9fShlLG4saSk6ZnVuY3Rpb24odCxlLG4pe3ZhciBpLHIsbz1uLmJhclRoaWNrbmVzcyxhPWUuc3RhY2tDb3VudCxzPWUucGl4ZWxzW3RdLGw9Qi5pc051bGxPclVuZGVmKG8pP2Z1bmN0aW9uKHQsZSl7dmFyIG4saSxyLG8sYT10Ll9sZW5ndGg7Zm9yKHI9MSxvPWUubGVuZ3RoO3I8bzsrK3IpYT1NYXRoLm1pbihhLE1hdGguYWJzKGVbcl0tZVtyLTFdKSk7Zm9yKHI9MCxvPXQuZ2V0VGlja3MoKS5sZW5ndGg7cjxvOysrcilpPXQuZ2V0UGl4ZWxGb3JUaWNrKHIpLGE9cj4wP01hdGgubWluKGEsTWF0aC5hYnMoaS1uKSk6YSxuPWk7cmV0dXJuIGF9KGUuc2NhbGUsZS5waXhlbHMpOi0xO3JldHVybiBCLmlzTnVsbE9yVW5kZWYobyk/KGk9bCpuLmNhdGVnb3J5UGVyY2VudGFnZSxyPW4uYmFyUGVyY2VudGFnZSk6KGk9byphLHI9MSkse2NodW5rOmkvYSxyYXRpbzpyLHN0YXJ0OnMtaS8yfX0oZSxuLGkpLG89dGhpcy5nZXRTdGFja0luZGV4KHQsdGhpcy5nZXRNZXRhKCkuc3RhY2spLGE9ci5zdGFydCtyLmNodW5rKm8rci5jaHVuay8yLHM9TWF0aC5taW4oa3QoaS5tYXhCYXJUaGlja25lc3MsMS8wKSxyLmNodW5rKnIucmF0aW8pO3JldHVybntiYXNlOmEtcy8yLGhlYWQ6YStzLzIsY2VudGVyOmEsc2l6ZTpzfX0sZHJhdzpmdW5jdGlvbigpe3ZhciB0PXRoaXMuY2hhcnQsZT10aGlzLl9nZXRWYWx1ZVNjYWxlKCksbj10aGlzLmdldE1ldGEoKS5kYXRhLGk9dGhpcy5nZXREYXRhc2V0KCkscj1uLmxlbmd0aCxvPTA7Zm9yKEIuY2FudmFzLmNsaXBBcmVhKHQuY3R4LHQuY2hhcnRBcmVhKTtvPHI7KytvKXt2YXIgYT1lLl9wYXJzZVZhbHVlKGkuZGF0YVtvXSk7aXNOYU4oYS5taW4pfHxpc05hTihhLm1heCl8fG5bb10uZHJhdygpfUIuY2FudmFzLnVuY2xpcEFyZWEodC5jdHgpfSxfcmVzb2x2ZURhdGFFbGVtZW50T3B0aW9uczpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT1CLmV4dGVuZCh7fSxudC5wcm90b3R5cGUuX3Jlc29sdmVEYXRhRWxlbWVudE9wdGlvbnMuYXBwbHkodCxhcmd1bWVudHMpKSxuPXQuX2dldEluZGV4U2NhbGUoKS5vcHRpb25zLGk9dC5fZ2V0VmFsdWVTY2FsZSgpLm9wdGlvbnM7cmV0dXJuIGUuYmFyUGVyY2VudGFnZT1rdChuLmJhclBlcmNlbnRhZ2UsZS5iYXJQZXJjZW50YWdlKSxlLmJhclRoaWNrbmVzcz1rdChuLmJhclRoaWNrbmVzcyxlLmJhclRoaWNrbmVzcyksZS5jYXRlZ29yeVBlcmNlbnRhZ2U9a3Qobi5jYXRlZ29yeVBlcmNlbnRhZ2UsZS5jYXRlZ29yeVBlcmNlbnRhZ2UpLGUubWF4QmFyVGhpY2tuZXNzPWt0KG4ubWF4QmFyVGhpY2tuZXNzLGUubWF4QmFyVGhpY2tuZXNzKSxlLm1pbkJhckxlbmd0aD1rdChpLm1pbkJhckxlbmd0aCxlLm1pbkJhckxlbmd0aCksZX19KSxBdD1CLnZhbHVlT3JEZWZhdWx0LER0PUIub3B0aW9ucy5yZXNvbHZlO1IuX3NldCgiYnViYmxlIix7aG92ZXI6e21vZGU6InNpbmdsZSJ9LHNjYWxlczp7eEF4ZXM6W3t0eXBlOiJsaW5lYXIiLHBvc2l0aW9uOiJib3R0b20iLGlkOiJ4LWF4aXMtMCJ9XSx5QXhlczpbe3R5cGU6ImxpbmVhciIscG9zaXRpb246ImxlZnQiLGlkOiJ5LWF4aXMtMCJ9XX0sdG9vbHRpcHM6e2NhbGxiYWNrczp7dGl0bGU6ZnVuY3Rpb24oKXtyZXR1cm4iIn0sbGFiZWw6ZnVuY3Rpb24odCxlKXt2YXIgbj1lLmRhdGFzZXRzW3QuZGF0YXNldEluZGV4XS5sYWJlbHx8IiIsaT1lLmRhdGFzZXRzW3QuZGF0YXNldEluZGV4XS5kYXRhW3QuaW5kZXhdO3JldHVybiBuKyI6ICgiK3QueExhYmVsKyIsICIrdC55TGFiZWwrIiwgIitpLnIrIikifX19fSk7dmFyIEV0PW50LmV4dGVuZCh7ZGF0YUVsZW1lbnRUeXBlOmJ0LlBvaW50LF9kYXRhRWxlbWVudE9wdGlvbnM6WyJiYWNrZ3JvdW5kQ29sb3IiLCJib3JkZXJDb2xvciIsImJvcmRlcldpZHRoIiwiaG92ZXJCYWNrZ3JvdW5kQ29sb3IiLCJob3ZlckJvcmRlckNvbG9yIiwiaG92ZXJCb3JkZXJXaWR0aCIsImhvdmVyUmFkaXVzIiwiaGl0UmFkaXVzIiwicG9pbnRTdHlsZSIsInJvdGF0aW9uIl0sdXBkYXRlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj1lLmdldE1ldGEoKS5kYXRhO0IuZWFjaChuLChmdW5jdGlvbihuLGkpe2UudXBkYXRlRWxlbWVudChuLGksdCl9KSl9LHVwZGF0ZUVsZW1lbnQ6ZnVuY3Rpb24odCxlLG4pe3ZhciBpPXRoaXMscj1pLmdldE1ldGEoKSxvPXQuY3VzdG9tfHx7fSxhPWkuZ2V0U2NhbGVGb3JJZChyLnhBeGlzSUQpLHM9aS5nZXRTY2FsZUZvcklkKHIueUF4aXNJRCksbD1pLl9yZXNvbHZlRGF0YUVsZW1lbnRPcHRpb25zKHQsZSksYz1pLmdldERhdGFzZXQoKS5kYXRhW2VdLHU9aS5pbmRleCxkPW4/YS5nZXRQaXhlbEZvckRlY2ltYWwoLjUpOmEuZ2V0UGl4ZWxGb3JWYWx1ZSgib2JqZWN0Ij09dHlwZW9mIGM/YzpOYU4sZSx1KSxoPW4/cy5nZXRCYXNlUGl4ZWwoKTpzLmdldFBpeGVsRm9yVmFsdWUoYyxlLHUpO3QuX3hTY2FsZT1hLHQuX3lTY2FsZT1zLHQuX29wdGlvbnM9bCx0Ll9kYXRhc2V0SW5kZXg9dSx0Ll9pbmRleD1lLHQuX21vZGVsPXtiYWNrZ3JvdW5kQ29sb3I6bC5iYWNrZ3JvdW5kQ29sb3IsYm9yZGVyQ29sb3I6bC5ib3JkZXJDb2xvcixib3JkZXJXaWR0aDpsLmJvcmRlcldpZHRoLGhpdFJhZGl1czpsLmhpdFJhZGl1cyxwb2ludFN0eWxlOmwucG9pbnRTdHlsZSxyb3RhdGlvbjpsLnJvdGF0aW9uLHJhZGl1czpuPzA6bC5yYWRpdXMsc2tpcDpvLnNraXB8fGlzTmFOKGQpfHxpc05hTihoKSx4OmQseTpofSx0LnBpdm90KCl9LHNldEhvdmVyU3R5bGU6ZnVuY3Rpb24odCl7dmFyIGU9dC5fbW9kZWwsbj10Ll9vcHRpb25zLGk9Qi5nZXRIb3ZlckNvbG9yO3QuJHByZXZpb3VzU3R5bGU9e2JhY2tncm91bmRDb2xvcjplLmJhY2tncm91bmRDb2xvcixib3JkZXJDb2xvcjplLmJvcmRlckNvbG9yLGJvcmRlcldpZHRoOmUuYm9yZGVyV2lkdGgscmFkaXVzOmUucmFkaXVzfSxlLmJhY2tncm91bmRDb2xvcj1BdChuLmhvdmVyQmFja2dyb3VuZENvbG9yLGkobi5iYWNrZ3JvdW5kQ29sb3IpKSxlLmJvcmRlckNvbG9yPUF0KG4uaG92ZXJCb3JkZXJDb2xvcixpKG4uYm9yZGVyQ29sb3IpKSxlLmJvcmRlcldpZHRoPUF0KG4uaG92ZXJCb3JkZXJXaWR0aCxuLmJvcmRlcldpZHRoKSxlLnJhZGl1cz1uLnJhZGl1cytuLmhvdmVyUmFkaXVzfSxfcmVzb2x2ZURhdGFFbGVtZW50T3B0aW9uczpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMsaT1uLmNoYXJ0LHI9bi5nZXREYXRhc2V0KCksbz10LmN1c3RvbXx8e30sYT1yLmRhdGFbZV18fHt9LHM9bnQucHJvdG90eXBlLl9yZXNvbHZlRGF0YUVsZW1lbnRPcHRpb25zLmFwcGx5KG4sYXJndW1lbnRzKSxsPXtjaGFydDppLGRhdGFJbmRleDplLGRhdGFzZXQ6cixkYXRhc2V0SW5kZXg6bi5pbmRleH07cmV0dXJuIG4uX2NhY2hlZERhdGFPcHRzPT09cyYmKHM9Qi5leHRlbmQoe30scykpLHMucmFkaXVzPUR0KFtvLnJhZGl1cyxhLnIsbi5fY29uZmlnLnJhZGl1cyxpLm9wdGlvbnMuZWxlbWVudHMucG9pbnQucmFkaXVzXSxsLGUpLHN9fSksTXQ9Qi52YWx1ZU9yRGVmYXVsdCxPdD1NYXRoLlBJLEl0PTIqT3QsUHQ9T3QvMjtSLl9zZXQoImRvdWdobnV0Iix7YW5pbWF0aW9uOnthbmltYXRlUm90YXRlOiEwLGFuaW1hdGVTY2FsZTohMX0saG92ZXI6e21vZGU6InNpbmdsZSJ9LGxlZ2VuZENhbGxiYWNrOmZ1bmN0aW9uKHQpe3ZhciBlLG4saSxyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInVsIiksbz10LmRhdGEsYT1vLmRhdGFzZXRzLHM9by5sYWJlbHM7aWYoci5zZXRBdHRyaWJ1dGUoImNsYXNzIix0LmlkKyItbGVnZW5kIiksYS5sZW5ndGgpZm9yKGU9MCxuPWFbMF0uZGF0YS5sZW5ndGg7ZTxuOysrZSkoaT1yLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIikpKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIikpLnN0eWxlLmJhY2tncm91bmRDb2xvcj1hWzBdLmJhY2tncm91bmRDb2xvcltlXSxzW2VdJiZpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHNbZV0pKTtyZXR1cm4gci5vdXRlckhUTUx9LGxlZ2VuZDp7bGFiZWxzOntnZW5lcmF0ZUxhYmVsczpmdW5jdGlvbih0KXt2YXIgZT10LmRhdGE7cmV0dXJuIGUubGFiZWxzLmxlbmd0aCYmZS5kYXRhc2V0cy5sZW5ndGg/ZS5sYWJlbHMubWFwKChmdW5jdGlvbihuLGkpe3ZhciByPXQuZ2V0RGF0YXNldE1ldGEoMCksbz1yLmNvbnRyb2xsZXIuZ2V0U3R5bGUoaSk7cmV0dXJue3RleHQ6bixmaWxsU3R5bGU6by5iYWNrZ3JvdW5kQ29sb3Isc3Ryb2tlU3R5bGU6by5ib3JkZXJDb2xvcixsaW5lV2lkdGg6by5ib3JkZXJXaWR0aCxoaWRkZW46aXNOYU4oZS5kYXRhc2V0c1swXS5kYXRhW2ldKXx8ci5kYXRhW2ldLmhpZGRlbixpbmRleDppfX0pKTpbXX19LG9uQ2xpY2s6ZnVuY3Rpb24odCxlKXt2YXIgbixpLHIsbz1lLmluZGV4LGE9dGhpcy5jaGFydDtmb3Iobj0wLGk9KGEuZGF0YS5kYXRhc2V0c3x8W10pLmxlbmd0aDtuPGk7KytuKShyPWEuZ2V0RGF0YXNldE1ldGEobikpLmRhdGFbb10mJihyLmRhdGFbb10uaGlkZGVuPSFyLmRhdGFbb10uaGlkZGVuKTthLnVwZGF0ZSgpfX0sY3V0b3V0UGVyY2VudGFnZTo1MCxyb3RhdGlvbjotUHQsY2lyY3VtZmVyZW5jZTpJdCx0b29sdGlwczp7Y2FsbGJhY2tzOnt0aXRsZTpmdW5jdGlvbigpe3JldHVybiIifSxsYWJlbDpmdW5jdGlvbih0LGUpe3ZhciBuPWUubGFiZWxzW3QuaW5kZXhdLGk9IjogIitlLmRhdGFzZXRzW3QuZGF0YXNldEluZGV4XS5kYXRhW3QuaW5kZXhdO3JldHVybiBCLmlzQXJyYXkobik/KG49bi5zbGljZSgpKVswXSs9aTpuKz1pLG59fX19KTt2YXIgTHQ9bnQuZXh0ZW5kKHtkYXRhRWxlbWVudFR5cGU6YnQuQXJjLGxpbmtTY2FsZXM6Qi5ub29wLF9kYXRhRWxlbWVudE9wdGlvbnM6WyJiYWNrZ3JvdW5kQ29sb3IiLCJib3JkZXJDb2xvciIsImJvcmRlcldpZHRoIiwiYm9yZGVyQWxpZ24iLCJob3ZlckJhY2tncm91bmRDb2xvciIsImhvdmVyQm9yZGVyQ29sb3IiLCJob3ZlckJvcmRlcldpZHRoIl0sZ2V0UmluZ0luZGV4OmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0wLG49MDtuPHQ7KytuKXRoaXMuY2hhcnQuaXNEYXRhc2V0VmlzaWJsZShuKSYmKytlO3JldHVybiBlfSx1cGRhdGU6ZnVuY3Rpb24odCl7dmFyIGUsbixpLHIsbz10aGlzLGE9by5jaGFydCxzPWEuY2hhcnRBcmVhLGw9YS5vcHRpb25zLGM9MSx1PTEsZD0wLGg9MCxmPW8uZ2V0TWV0YSgpLHA9Zi5kYXRhLGc9bC5jdXRvdXRQZXJjZW50YWdlLzEwMHx8MCxtPWwuY2lyY3VtZmVyZW5jZSx2PW8uX2dldFJpbmdXZWlnaHQoby5pbmRleCk7aWYobTxJdCl7dmFyIHk9bC5yb3RhdGlvbiVJdCxiPSh5Kz15Pj1PdD8tSXQ6eTwtT3Q/SXQ6MCkrbSx3PU1hdGguY29zKHkpLHg9TWF0aC5zaW4oeSksXz1NYXRoLmNvcyhiKSxTPU1hdGguc2luKGIpLEM9eTw9MCYmYj49MHx8Yj49SXQsaz15PD1QdCYmYj49UHR8fGI+PUl0K1B0LFQ9eTw9LVB0JiZiPj0tUHR8fGI+PU90K1B0LEE9eT09PS1PdHx8Yj49T3Q/LTE6TWF0aC5taW4odyx3KmcsXyxfKmcpLEQ9VD8tMTpNYXRoLm1pbih4LHgqZyxTLFMqZyksRT1DPzE6TWF0aC5tYXgodyx3KmcsXyxfKmcpLE09az8xOk1hdGgubWF4KHgseCpnLFMsUypnKTtjPShFLUEpLzIsdT0oTS1EKS8yLGQ9LShFK0EpLzIsaD0tKE0rRCkvMn1mb3IoaT0wLHI9cC5sZW5ndGg7aTxyOysraSlwW2ldLl9vcHRpb25zPW8uX3Jlc29sdmVEYXRhRWxlbWVudE9wdGlvbnMocFtpXSxpKTtmb3IoYS5ib3JkZXJXaWR0aD1vLmdldE1heEJvcmRlcldpZHRoKCksZT0ocy5yaWdodC1zLmxlZnQtYS5ib3JkZXJXaWR0aCkvYyxuPShzLmJvdHRvbS1zLnRvcC1hLmJvcmRlcldpZHRoKS91LGEub3V0ZXJSYWRpdXM9TWF0aC5tYXgoTWF0aC5taW4oZSxuKS8yLDApLGEuaW5uZXJSYWRpdXM9TWF0aC5tYXgoYS5vdXRlclJhZGl1cypnLDApLGEucmFkaXVzTGVuZ3RoPShhLm91dGVyUmFkaXVzLWEuaW5uZXJSYWRpdXMpLyhvLl9nZXRWaXNpYmxlRGF0YXNldFdlaWdodFRvdGFsKCl8fDEpLGEub2Zmc2V0WD1kKmEub3V0ZXJSYWRpdXMsYS5vZmZzZXRZPWgqYS5vdXRlclJhZGl1cyxmLnRvdGFsPW8uY2FsY3VsYXRlVG90YWwoKSxvLm91dGVyUmFkaXVzPWEub3V0ZXJSYWRpdXMtYS5yYWRpdXNMZW5ndGgqby5fZ2V0UmluZ1dlaWdodE9mZnNldChvLmluZGV4KSxvLmlubmVyUmFkaXVzPU1hdGgubWF4KG8ub3V0ZXJSYWRpdXMtYS5yYWRpdXNMZW5ndGgqdiwwKSxpPTAscj1wLmxlbmd0aDtpPHI7KytpKW8udXBkYXRlRWxlbWVudChwW2ldLGksdCl9LHVwZGF0ZUVsZW1lbnQ6ZnVuY3Rpb24odCxlLG4pe3ZhciBpPXRoaXMscj1pLmNoYXJ0LG89ci5jaGFydEFyZWEsYT1yLm9wdGlvbnMscz1hLmFuaW1hdGlvbixsPShvLmxlZnQrby5yaWdodCkvMixjPShvLnRvcCtvLmJvdHRvbSkvMix1PWEucm90YXRpb24sZD1hLnJvdGF0aW9uLGg9aS5nZXREYXRhc2V0KCksZj1uJiZzLmFuaW1hdGVSb3RhdGV8fHQuaGlkZGVuPzA6aS5jYWxjdWxhdGVDaXJjdW1mZXJlbmNlKGguZGF0YVtlXSkqKGEuY2lyY3VtZmVyZW5jZS9JdCkscD1uJiZzLmFuaW1hdGVTY2FsZT8wOmkuaW5uZXJSYWRpdXMsZz1uJiZzLmFuaW1hdGVTY2FsZT8wOmkub3V0ZXJSYWRpdXMsbT10Ll9vcHRpb25zfHx7fTtCLmV4dGVuZCh0LHtfZGF0YXNldEluZGV4OmkuaW5kZXgsX2luZGV4OmUsX21vZGVsOntiYWNrZ3JvdW5kQ29sb3I6bS5iYWNrZ3JvdW5kQ29sb3IsYm9yZGVyQ29sb3I6bS5ib3JkZXJDb2xvcixib3JkZXJXaWR0aDptLmJvcmRlcldpZHRoLGJvcmRlckFsaWduOm0uYm9yZGVyQWxpZ24seDpsK3Iub2Zmc2V0WCx5OmMrci5vZmZzZXRZLHN0YXJ0QW5nbGU6dSxlbmRBbmdsZTpkLGNpcmN1bWZlcmVuY2U6ZixvdXRlclJhZGl1czpnLGlubmVyUmFkaXVzOnAsbGFiZWw6Qi52YWx1ZUF0SW5kZXhPckRlZmF1bHQoaC5sYWJlbCxlLHIuZGF0YS5sYWJlbHNbZV0pfX0pO3ZhciB2PXQuX21vZGVsO24mJnMuYW5pbWF0ZVJvdGF0ZXx8KHYuc3RhcnRBbmdsZT0wPT09ZT9hLnJvdGF0aW9uOmkuZ2V0TWV0YSgpLmRhdGFbZS0xXS5fbW9kZWwuZW5kQW5nbGUsdi5lbmRBbmdsZT12LnN0YXJ0QW5nbGUrdi5jaXJjdW1mZXJlbmNlKSx0LnBpdm90KCl9LGNhbGN1bGF0ZVRvdGFsOmZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLmdldERhdGFzZXQoKSxuPXRoaXMuZ2V0TWV0YSgpLGk9MDtyZXR1cm4gQi5lYWNoKG4uZGF0YSwoZnVuY3Rpb24obixyKXt0PWUuZGF0YVtyXSxpc05hTih0KXx8bi5oaWRkZW58fChpKz1NYXRoLmFicyh0KSl9KSksaX0sY2FsY3VsYXRlQ2lyY3VtZmVyZW5jZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmdldE1ldGEoKS50b3RhbDtyZXR1cm4gZT4wJiYhaXNOYU4odCk/SXQqKE1hdGguYWJzKHQpL2UpOjB9LGdldE1heEJvcmRlcldpZHRoOmZ1bmN0aW9uKHQpe3ZhciBlLG4saSxyLG8sYSxzLGwsYz0wLHU9dGhpcy5jaGFydDtpZighdClmb3IoZT0wLG49dS5kYXRhLmRhdGFzZXRzLmxlbmd0aDtlPG47KytlKWlmKHUuaXNEYXRhc2V0VmlzaWJsZShlKSl7dD0oaT11LmdldERhdGFzZXRNZXRhKGUpKS5kYXRhLGUhPT10aGlzLmluZGV4JiYobz1pLmNvbnRyb2xsZXIpO2JyZWFrfWlmKCF0KXJldHVybiAwO2ZvcihlPTAsbj10Lmxlbmd0aDtlPG47KytlKXI9dFtlXSxvPyhvLl9jb25maWd1cmUoKSxhPW8uX3Jlc29sdmVEYXRhRWxlbWVudE9wdGlvbnMocixlKSk6YT1yLl9vcHRpb25zLCJpbm5lciIhPT1hLmJvcmRlckFsaWduJiYocz1hLmJvcmRlcldpZHRoLGM9KGw9YS5ob3ZlckJvcmRlcldpZHRoKT4oYz1zPmM/czpjKT9sOmMpO3JldHVybiBjfSxzZXRIb3ZlclN0eWxlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuX21vZGVsLG49dC5fb3B0aW9ucyxpPUIuZ2V0SG92ZXJDb2xvcjt0LiRwcmV2aW91c1N0eWxlPXtiYWNrZ3JvdW5kQ29sb3I6ZS5iYWNrZ3JvdW5kQ29sb3IsYm9yZGVyQ29sb3I6ZS5ib3JkZXJDb2xvcixib3JkZXJXaWR0aDplLmJvcmRlcldpZHRofSxlLmJhY2tncm91bmRDb2xvcj1NdChuLmhvdmVyQmFja2dyb3VuZENvbG9yLGkobi5iYWNrZ3JvdW5kQ29sb3IpKSxlLmJvcmRlckNvbG9yPU10KG4uaG92ZXJCb3JkZXJDb2xvcixpKG4uYm9yZGVyQ29sb3IpKSxlLmJvcmRlcldpZHRoPU10KG4uaG92ZXJCb3JkZXJXaWR0aCxuLmJvcmRlcldpZHRoKX0sX2dldFJpbmdXZWlnaHRPZmZzZXQ6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAsbj0wO248dDsrK24pdGhpcy5jaGFydC5pc0RhdGFzZXRWaXNpYmxlKG4pJiYoZSs9dGhpcy5fZ2V0UmluZ1dlaWdodChuKSk7cmV0dXJuIGV9LF9nZXRSaW5nV2VpZ2h0OmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLm1heChNdCh0aGlzLmNoYXJ0LmRhdGEuZGF0YXNldHNbdF0ud2VpZ2h0LDEpLDApfSxfZ2V0VmlzaWJsZURhdGFzZXRXZWlnaHRUb3RhbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9nZXRSaW5nV2VpZ2h0T2Zmc2V0KHRoaXMuY2hhcnQuZGF0YS5kYXRhc2V0cy5sZW5ndGgpfX0pO1IuX3NldCgiaG9yaXpvbnRhbEJhciIse2hvdmVyOnttb2RlOiJpbmRleCIsYXhpczoieSJ9LHNjYWxlczp7eEF4ZXM6W3t0eXBlOiJsaW5lYXIiLHBvc2l0aW9uOiJib3R0b20ifV0seUF4ZXM6W3t0eXBlOiJjYXRlZ29yeSIscG9zaXRpb246ImxlZnQiLG9mZnNldDohMCxncmlkTGluZXM6e29mZnNldEdyaWRMaW5lczohMH19XX0sZWxlbWVudHM6e3JlY3RhbmdsZTp7Ym9yZGVyU2tpcHBlZDoibGVmdCJ9fSx0b29sdGlwczp7bW9kZToiaW5kZXgiLGF4aXM6InkifX0pLFIuX3NldCgiZ2xvYmFsIix7ZGF0YXNldHM6e2hvcml6b250YWxCYXI6e2NhdGVnb3J5UGVyY2VudGFnZTouOCxiYXJQZXJjZW50YWdlOi45fX19KTt2YXIgTnQ9VHQuZXh0ZW5kKHtfZ2V0VmFsdWVTY2FsZUlkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0TWV0YSgpLnhBeGlzSUR9LF9nZXRJbmRleFNjYWxlSWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRNZXRhKCkueUF4aXNJRH19KSxGdD1CLnZhbHVlT3JEZWZhdWx0LFJ0PUIub3B0aW9ucy5yZXNvbHZlLGp0PUIuY2FudmFzLl9pc1BvaW50SW5BcmVhO2Z1bmN0aW9uICR0KHQsZSl7dmFyIG49dCYmdC5vcHRpb25zLnRpY2tzfHx7fSxpPW4ucmV2ZXJzZSxyPXZvaWQgMD09PW4ubWluP2U6MCxvPXZvaWQgMD09PW4ubWF4P2U6MDtyZXR1cm57c3RhcnQ6aT9vOnIsZW5kOmk/cjpvfX1mdW5jdGlvbiB6dCh0LGUsbil7dmFyIGk9bi8yLHI9JHQodCxpKSxvPSR0KGUsaSk7cmV0dXJue3RvcDpvLmVuZCxyaWdodDpyLmVuZCxib3R0b206by5zdGFydCxsZWZ0OnIuc3RhcnR9fWZ1bmN0aW9uIEh0KHQpe3ZhciBlLG4saSxyO3JldHVybiBCLmlzT2JqZWN0KHQpPyhlPXQudG9wLG49dC5yaWdodCxpPXQuYm90dG9tLHI9dC5sZWZ0KTplPW49aT1yPXQse3RvcDplLHJpZ2h0Om4sYm90dG9tOmksbGVmdDpyfX1SLl9zZXQoImxpbmUiLHtzaG93TGluZXM6ITAsc3BhbkdhcHM6ITEsaG92ZXI6e21vZGU6ImxhYmVsIn0sc2NhbGVzOnt4QXhlczpbe3R5cGU6ImNhdGVnb3J5IixpZDoieC1heGlzLTAifV0seUF4ZXM6W3t0eXBlOiJsaW5lYXIiLGlkOiJ5LWF4aXMtMCJ9XX19KTt2YXIgQnQ9bnQuZXh0ZW5kKHtkYXRhc2V0RWxlbWVudFR5cGU6YnQuTGluZSxkYXRhRWxlbWVudFR5cGU6YnQuUG9pbnQsX2RhdGFzZXRFbGVtZW50T3B0aW9uczpbImJhY2tncm91bmRDb2xvciIsImJvcmRlckNhcFN0eWxlIiwiYm9yZGVyQ29sb3IiLCJib3JkZXJEYXNoIiwiYm9yZGVyRGFzaE9mZnNldCIsImJvcmRlckpvaW5TdHlsZSIsImJvcmRlcldpZHRoIiwiY3ViaWNJbnRlcnBvbGF0aW9uTW9kZSIsImZpbGwiXSxfZGF0YUVsZW1lbnRPcHRpb25zOntiYWNrZ3JvdW5kQ29sb3I6InBvaW50QmFja2dyb3VuZENvbG9yIixib3JkZXJDb2xvcjoicG9pbnRCb3JkZXJDb2xvciIsYm9yZGVyV2lkdGg6InBvaW50Qm9yZGVyV2lkdGgiLGhpdFJhZGl1czoicG9pbnRIaXRSYWRpdXMiLGhvdmVyQmFja2dyb3VuZENvbG9yOiJwb2ludEhvdmVyQmFja2dyb3VuZENvbG9yIixob3ZlckJvcmRlckNvbG9yOiJwb2ludEhvdmVyQm9yZGVyQ29sb3IiLGhvdmVyQm9yZGVyV2lkdGg6InBvaW50SG92ZXJCb3JkZXJXaWR0aCIsaG92ZXJSYWRpdXM6InBvaW50SG92ZXJSYWRpdXMiLHBvaW50U3R5bGU6InBvaW50U3R5bGUiLHJhZGl1czoicG9pbnRSYWRpdXMiLHJvdGF0aW9uOiJwb2ludFJvdGF0aW9uIn0sdXBkYXRlOmZ1bmN0aW9uKHQpe3ZhciBlLG4saT10aGlzLHI9aS5nZXRNZXRhKCksbz1yLmRhdGFzZXQsYT1yLmRhdGF8fFtdLHM9aS5jaGFydC5vcHRpb25zLGw9aS5fY29uZmlnLGM9aS5fc2hvd0xpbmU9RnQobC5zaG93TGluZSxzLnNob3dMaW5lcyk7Zm9yKGkuX3hTY2FsZT1pLmdldFNjYWxlRm9ySWQoci54QXhpc0lEKSxpLl95U2NhbGU9aS5nZXRTY2FsZUZvcklkKHIueUF4aXNJRCksYyYmKHZvaWQgMCE9PWwudGVuc2lvbiYmdm9pZCAwPT09bC5saW5lVGVuc2lvbiYmKGwubGluZVRlbnNpb249bC50ZW5zaW9uKSxvLl9zY2FsZT1pLl95U2NhbGUsby5fZGF0YXNldEluZGV4PWkuaW5kZXgsby5fY2hpbGRyZW49YSxvLl9tb2RlbD1pLl9yZXNvbHZlRGF0YXNldEVsZW1lbnRPcHRpb25zKG8pLG8ucGl2b3QoKSksZT0wLG49YS5sZW5ndGg7ZTxuOysrZSlpLnVwZGF0ZUVsZW1lbnQoYVtlXSxlLHQpO2ZvcihjJiYwIT09by5fbW9kZWwudGVuc2lvbiYmaS51cGRhdGVCZXppZXJDb250cm9sUG9pbnRzKCksZT0wLG49YS5sZW5ndGg7ZTxuOysrZSlhW2VdLnBpdm90KCl9LHVwZGF0ZUVsZW1lbnQ6ZnVuY3Rpb24odCxlLG4pe3ZhciBpLHIsbz10aGlzLGE9by5nZXRNZXRhKCkscz10LmN1c3RvbXx8e30sbD1vLmdldERhdGFzZXQoKSxjPW8uaW5kZXgsdT1sLmRhdGFbZV0sZD1vLl94U2NhbGUsaD1vLl95U2NhbGUsZj1hLmRhdGFzZXQuX21vZGVsLHA9by5fcmVzb2x2ZURhdGFFbGVtZW50T3B0aW9ucyh0LGUpO2k9ZC5nZXRQaXhlbEZvclZhbHVlKCJvYmplY3QiPT10eXBlb2YgdT91Ok5hTixlLGMpLHI9bj9oLmdldEJhc2VQaXhlbCgpOm8uY2FsY3VsYXRlUG9pbnRZKHUsZSxjKSx0Ll94U2NhbGU9ZCx0Ll95U2NhbGU9aCx0Ll9vcHRpb25zPXAsdC5fZGF0YXNldEluZGV4PWMsdC5faW5kZXg9ZSx0Ll9tb2RlbD17eDppLHk6cixza2lwOnMuc2tpcHx8aXNOYU4oaSl8fGlzTmFOKHIpLHJhZGl1czpwLnJhZGl1cyxwb2ludFN0eWxlOnAucG9pbnRTdHlsZSxyb3RhdGlvbjpwLnJvdGF0aW9uLGJhY2tncm91bmRDb2xvcjpwLmJhY2tncm91bmRDb2xvcixib3JkZXJDb2xvcjpwLmJvcmRlckNvbG9yLGJvcmRlcldpZHRoOnAuYm9yZGVyV2lkdGgsdGVuc2lvbjpGdChzLnRlbnNpb24sZj9mLnRlbnNpb246MCksc3RlcHBlZExpbmU6ISFmJiZmLnN0ZXBwZWRMaW5lLGhpdFJhZGl1czpwLmhpdFJhZGl1c319LF9yZXNvbHZlRGF0YXNldEVsZW1lbnRPcHRpb25zOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj1lLl9jb25maWcsaT10LmN1c3RvbXx8e30scj1lLmNoYXJ0Lm9wdGlvbnMsbz1yLmVsZW1lbnRzLmxpbmUsYT1udC5wcm90b3R5cGUuX3Jlc29sdmVEYXRhc2V0RWxlbWVudE9wdGlvbnMuYXBwbHkoZSxhcmd1bWVudHMpO3JldHVybiBhLnNwYW5HYXBzPUZ0KG4uc3BhbkdhcHMsci5zcGFuR2FwcyksYS50ZW5zaW9uPUZ0KG4ubGluZVRlbnNpb24sby50ZW5zaW9uKSxhLnN0ZXBwZWRMaW5lPVJ0KFtpLnN0ZXBwZWRMaW5lLG4uc3RlcHBlZExpbmUsby5zdGVwcGVkXSksYS5jbGlwPUh0KEZ0KG4uY2xpcCx6dChlLl94U2NhbGUsZS5feVNjYWxlLGEuYm9yZGVyV2lkdGgpKSksYX0sY2FsY3VsYXRlUG9pbnRZOmZ1bmN0aW9uKHQsZSxuKXt2YXIgaSxyLG8sYSxzLGwsYyx1PXRoaXMuY2hhcnQsZD10aGlzLl95U2NhbGUsaD0wLGY9MDtpZihkLm9wdGlvbnMuc3RhY2tlZCl7Zm9yKHM9K2QuZ2V0UmlnaHRWYWx1ZSh0KSxjPShsPXUuX2dldFNvcnRlZFZpc2libGVEYXRhc2V0TWV0YXMoKSkubGVuZ3RoLGk9MDtpPGMmJihvPWxbaV0pLmluZGV4IT09bjsrK2kpcj11LmRhdGEuZGF0YXNldHNbby5pbmRleF0sImxpbmUiPT09by50eXBlJiZvLnlBeGlzSUQ9PT1kLmlkJiYoKGE9K2QuZ2V0UmlnaHRWYWx1ZShyLmRhdGFbZV0pKTwwP2YrPWF8fDA6aCs9YXx8MCk7cmV0dXJuIHM8MD9kLmdldFBpeGVsRm9yVmFsdWUoZitzKTpkLmdldFBpeGVsRm9yVmFsdWUoaCtzKX1yZXR1cm4gZC5nZXRQaXhlbEZvclZhbHVlKHQpfSx1cGRhdGVCZXppZXJDb250cm9sUG9pbnRzOmZ1bmN0aW9uKCl7dmFyIHQsZSxuLGkscj10aGlzLmNoYXJ0LG89dGhpcy5nZXRNZXRhKCksYT1vLmRhdGFzZXQuX21vZGVsLHM9ci5jaGFydEFyZWEsbD1vLmRhdGF8fFtdO2Z1bmN0aW9uIGModCxlLG4pe3JldHVybiBNYXRoLm1heChNYXRoLm1pbih0LG4pLGUpfWlmKGEuc3BhbkdhcHMmJihsPWwuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4hdC5fbW9kZWwuc2tpcH0pKSksIm1vbm90b25lIj09PWEuY3ViaWNJbnRlcnBvbGF0aW9uTW9kZSlCLnNwbGluZUN1cnZlTW9ub3RvbmUobCk7ZWxzZSBmb3IodD0wLGU9bC5sZW5ndGg7dDxlOysrdCluPWxbdF0uX21vZGVsLGk9Qi5zcGxpbmVDdXJ2ZShCLnByZXZpb3VzSXRlbShsLHQpLl9tb2RlbCxuLEIubmV4dEl0ZW0obCx0KS5fbW9kZWwsYS50ZW5zaW9uKSxuLmNvbnRyb2xQb2ludFByZXZpb3VzWD1pLnByZXZpb3VzLngsbi5jb250cm9sUG9pbnRQcmV2aW91c1k9aS5wcmV2aW91cy55LG4uY29udHJvbFBvaW50TmV4dFg9aS5uZXh0Lngsbi5jb250cm9sUG9pbnROZXh0WT1pLm5leHQueTtpZihyLm9wdGlvbnMuZWxlbWVudHMubGluZS5jYXBCZXppZXJQb2ludHMpZm9yKHQ9MCxlPWwubGVuZ3RoO3Q8ZTsrK3Qpbj1sW3RdLl9tb2RlbCxqdChuLHMpJiYodD4wJiZqdChsW3QtMV0uX21vZGVsLHMpJiYobi5jb250cm9sUG9pbnRQcmV2aW91c1g9YyhuLmNvbnRyb2xQb2ludFByZXZpb3VzWCxzLmxlZnQscy5yaWdodCksbi5jb250cm9sUG9pbnRQcmV2aW91c1k9YyhuLmNvbnRyb2xQb2ludFByZXZpb3VzWSxzLnRvcCxzLmJvdHRvbSkpLHQ8bC5sZW5ndGgtMSYmanQobFt0KzFdLl9tb2RlbCxzKSYmKG4uY29udHJvbFBvaW50TmV4dFg9YyhuLmNvbnRyb2xQb2ludE5leHRYLHMubGVmdCxzLnJpZ2h0KSxuLmNvbnRyb2xQb2ludE5leHRZPWMobi5jb250cm9sUG9pbnROZXh0WSxzLnRvcCxzLmJvdHRvbSkpKX0sZHJhdzpmdW5jdGlvbigpe3ZhciB0LGU9dGhpcy5jaGFydCxuPXRoaXMuZ2V0TWV0YSgpLGk9bi5kYXRhfHxbXSxyPWUuY2hhcnRBcmVhLG89ZS5jYW52YXMsYT0wLHM9aS5sZW5ndGg7Zm9yKHRoaXMuX3Nob3dMaW5lJiYodD1uLmRhdGFzZXQuX21vZGVsLmNsaXAsQi5jYW52YXMuY2xpcEFyZWEoZS5jdHgse2xlZnQ6ITE9PT10LmxlZnQ/MDpyLmxlZnQtdC5sZWZ0LHJpZ2h0OiExPT09dC5yaWdodD9vLndpZHRoOnIucmlnaHQrdC5yaWdodCx0b3A6ITE9PT10LnRvcD8wOnIudG9wLXQudG9wLGJvdHRvbTohMT09PXQuYm90dG9tP28uaGVpZ2h0OnIuYm90dG9tK3QuYm90dG9tfSksbi5kYXRhc2V0LmRyYXcoKSxCLmNhbnZhcy51bmNsaXBBcmVhKGUuY3R4KSk7YTxzOysrYSlpW2FdLmRyYXcocil9LHNldEhvdmVyU3R5bGU6ZnVuY3Rpb24odCl7dmFyIGU9dC5fbW9kZWwsbj10Ll9vcHRpb25zLGk9Qi5nZXRIb3ZlckNvbG9yO3QuJHByZXZpb3VzU3R5bGU9e2JhY2tncm91bmRDb2xvcjplLmJhY2tncm91bmRDb2xvcixib3JkZXJDb2xvcjplLmJvcmRlckNvbG9yLGJvcmRlcldpZHRoOmUuYm9yZGVyV2lkdGgscmFkaXVzOmUucmFkaXVzfSxlLmJhY2tncm91bmRDb2xvcj1GdChuLmhvdmVyQmFja2dyb3VuZENvbG9yLGkobi5iYWNrZ3JvdW5kQ29sb3IpKSxlLmJvcmRlckNvbG9yPUZ0KG4uaG92ZXJCb3JkZXJDb2xvcixpKG4uYm9yZGVyQ29sb3IpKSxlLmJvcmRlcldpZHRoPUZ0KG4uaG92ZXJCb3JkZXJXaWR0aCxuLmJvcmRlcldpZHRoKSxlLnJhZGl1cz1GdChuLmhvdmVyUmFkaXVzLG4ucmFkaXVzKX19KSxxdD1CLm9wdGlvbnMucmVzb2x2ZTtSLl9zZXQoInBvbGFyQXJlYSIse3NjYWxlOnt0eXBlOiJyYWRpYWxMaW5lYXIiLGFuZ2xlTGluZXM6e2Rpc3BsYXk6ITF9LGdyaWRMaW5lczp7Y2lyY3VsYXI6ITB9LHBvaW50TGFiZWxzOntkaXNwbGF5OiExfSx0aWNrczp7YmVnaW5BdFplcm86ITB9fSxhbmltYXRpb246e2FuaW1hdGVSb3RhdGU6ITAsYW5pbWF0ZVNjYWxlOiEwfSxzdGFydEFuZ2xlOi0uNSpNYXRoLlBJLGxlZ2VuZENhbGxiYWNrOmZ1bmN0aW9uKHQpe3ZhciBlLG4saSxyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInVsIiksbz10LmRhdGEsYT1vLmRhdGFzZXRzLHM9by5sYWJlbHM7aWYoci5zZXRBdHRyaWJ1dGUoImNsYXNzIix0LmlkKyItbGVnZW5kIiksYS5sZW5ndGgpZm9yKGU9MCxuPWFbMF0uZGF0YS5sZW5ndGg7ZTxuOysrZSkoaT1yLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIikpKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIikpLnN0eWxlLmJhY2tncm91bmRDb2xvcj1hWzBdLmJhY2tncm91bmRDb2xvcltlXSxzW2VdJiZpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHNbZV0pKTtyZXR1cm4gci5vdXRlckhUTUx9LGxlZ2VuZDp7bGFiZWxzOntnZW5lcmF0ZUxhYmVsczpmdW5jdGlvbih0KXt2YXIgZT10LmRhdGE7cmV0dXJuIGUubGFiZWxzLmxlbmd0aCYmZS5kYXRhc2V0cy5sZW5ndGg/ZS5sYWJlbHMubWFwKChmdW5jdGlvbihuLGkpe3ZhciByPXQuZ2V0RGF0YXNldE1ldGEoMCksbz1yLmNvbnRyb2xsZXIuZ2V0U3R5bGUoaSk7cmV0dXJue3RleHQ6bixmaWxsU3R5bGU6by5iYWNrZ3JvdW5kQ29sb3Isc3Ryb2tlU3R5bGU6by5ib3JkZXJDb2xvcixsaW5lV2lkdGg6by5ib3JkZXJXaWR0aCxoaWRkZW46aXNOYU4oZS5kYXRhc2V0c1swXS5kYXRhW2ldKXx8ci5kYXRhW2ldLmhpZGRlbixpbmRleDppfX0pKTpbXX19LG9uQ2xpY2s6ZnVuY3Rpb24odCxlKXt2YXIgbixpLHIsbz1lLmluZGV4LGE9dGhpcy5jaGFydDtmb3Iobj0wLGk9KGEuZGF0YS5kYXRhc2V0c3x8W10pLmxlbmd0aDtuPGk7KytuKShyPWEuZ2V0RGF0YXNldE1ldGEobikpLmRhdGFbb10uaGlkZGVuPSFyLmRhdGFbb10uaGlkZGVuO2EudXBkYXRlKCl9fSx0b29sdGlwczp7Y2FsbGJhY2tzOnt0aXRsZTpmdW5jdGlvbigpe3JldHVybiIifSxsYWJlbDpmdW5jdGlvbih0LGUpe3JldHVybiBlLmxhYmVsc1t0LmluZGV4XSsiOiAiK3QueUxhYmVsfX19fSk7dmFyIFd0PW50LmV4dGVuZCh7ZGF0YUVsZW1lbnRUeXBlOmJ0LkFyYyxsaW5rU2NhbGVzOkIubm9vcCxfZGF0YUVsZW1lbnRPcHRpb25zOlsiYmFja2dyb3VuZENvbG9yIiwiYm9yZGVyQ29sb3IiLCJib3JkZXJXaWR0aCIsImJvcmRlckFsaWduIiwiaG92ZXJCYWNrZ3JvdW5kQ29sb3IiLCJob3ZlckJvcmRlckNvbG9yIiwiaG92ZXJCb3JkZXJXaWR0aCJdLF9nZXRJbmRleFNjYWxlSWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jaGFydC5zY2FsZS5pZH0sX2dldFZhbHVlU2NhbGVJZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNoYXJ0LnNjYWxlLmlkfSx1cGRhdGU6ZnVuY3Rpb24odCl7dmFyIGUsbixpLHI9dGhpcyxvPXIuZ2V0RGF0YXNldCgpLGE9ci5nZXRNZXRhKCkscz1yLmNoYXJ0Lm9wdGlvbnMuc3RhcnRBbmdsZXx8MCxsPXIuX3N0YXJ0cz1bXSxjPXIuX2FuZ2xlcz1bXSx1PWEuZGF0YTtmb3Ioci5fdXBkYXRlUmFkaXVzKCksYS5jb3VudD1yLmNvdW50VmlzaWJsZUVsZW1lbnRzKCksZT0wLG49by5kYXRhLmxlbmd0aDtlPG47ZSsrKWxbZV09cyxpPXIuX2NvbXB1dGVBbmdsZShlKSxjW2VdPWkscys9aTtmb3IoZT0wLG49dS5sZW5ndGg7ZTxuOysrZSl1W2VdLl9vcHRpb25zPXIuX3Jlc29sdmVEYXRhRWxlbWVudE9wdGlvbnModVtlXSxlKSxyLnVwZGF0ZUVsZW1lbnQodVtlXSxlLHQpfSxfdXBkYXRlUmFkaXVzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXQuY2hhcnQsbj1lLmNoYXJ0QXJlYSxpPWUub3B0aW9ucyxyPU1hdGgubWluKG4ucmlnaHQtbi5sZWZ0LG4uYm90dG9tLW4udG9wKTtlLm91dGVyUmFkaXVzPU1hdGgubWF4KHIvMiwwKSxlLmlubmVyUmFkaXVzPU1hdGgubWF4KGkuY3V0b3V0UGVyY2VudGFnZT9lLm91dGVyUmFkaXVzLzEwMCppLmN1dG91dFBlcmNlbnRhZ2U6MSwwKSxlLnJhZGl1c0xlbmd0aD0oZS5vdXRlclJhZGl1cy1lLmlubmVyUmFkaXVzKS9lLmdldFZpc2libGVEYXRhc2V0Q291bnQoKSx0Lm91dGVyUmFkaXVzPWUub3V0ZXJSYWRpdXMtZS5yYWRpdXNMZW5ndGgqdC5pbmRleCx0LmlubmVyUmFkaXVzPXQub3V0ZXJSYWRpdXMtZS5yYWRpdXNMZW5ndGh9LHVwZGF0ZUVsZW1lbnQ6ZnVuY3Rpb24odCxlLG4pe3ZhciBpPXRoaXMscj1pLmNoYXJ0LG89aS5nZXREYXRhc2V0KCksYT1yLm9wdGlvbnMscz1hLmFuaW1hdGlvbixsPXIuc2NhbGUsYz1yLmRhdGEubGFiZWxzLHU9bC54Q2VudGVyLGQ9bC55Q2VudGVyLGg9YS5zdGFydEFuZ2xlLGY9dC5oaWRkZW4/MDpsLmdldERpc3RhbmNlRnJvbUNlbnRlckZvclZhbHVlKG8uZGF0YVtlXSkscD1pLl9zdGFydHNbZV0sZz1wKyh0LmhpZGRlbj8wOmkuX2FuZ2xlc1tlXSksbT1zLmFuaW1hdGVTY2FsZT8wOmwuZ2V0RGlzdGFuY2VGcm9tQ2VudGVyRm9yVmFsdWUoby5kYXRhW2VdKSx2PXQuX29wdGlvbnN8fHt9O0IuZXh0ZW5kKHQse19kYXRhc2V0SW5kZXg6aS5pbmRleCxfaW5kZXg6ZSxfc2NhbGU6bCxfbW9kZWw6e2JhY2tncm91bmRDb2xvcjp2LmJhY2tncm91bmRDb2xvcixib3JkZXJDb2xvcjp2LmJvcmRlckNvbG9yLGJvcmRlcldpZHRoOnYuYm9yZGVyV2lkdGgsYm9yZGVyQWxpZ246di5ib3JkZXJBbGlnbix4OnUseTpkLGlubmVyUmFkaXVzOjAsb3V0ZXJSYWRpdXM6bj9tOmYsc3RhcnRBbmdsZTpuJiZzLmFuaW1hdGVSb3RhdGU/aDpwLGVuZEFuZ2xlOm4mJnMuYW5pbWF0ZVJvdGF0ZT9oOmcsbGFiZWw6Qi52YWx1ZUF0SW5kZXhPckRlZmF1bHQoYyxlLGNbZV0pfX0pLHQucGl2b3QoKX0sY291bnRWaXNpYmxlRWxlbWVudHM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmdldERhdGFzZXQoKSxlPXRoaXMuZ2V0TWV0YSgpLG49MDtyZXR1cm4gQi5lYWNoKGUuZGF0YSwoZnVuY3Rpb24oZSxpKXtpc05hTih0LmRhdGFbaV0pfHxlLmhpZGRlbnx8bisrfSkpLG59LHNldEhvdmVyU3R5bGU6ZnVuY3Rpb24odCl7dmFyIGU9dC5fbW9kZWwsbj10Ll9vcHRpb25zLGk9Qi5nZXRIb3ZlckNvbG9yLHI9Qi52YWx1ZU9yRGVmYXVsdDt0LiRwcmV2aW91c1N0eWxlPXtiYWNrZ3JvdW5kQ29sb3I6ZS5iYWNrZ3JvdW5kQ29sb3IsYm9yZGVyQ29sb3I6ZS5ib3JkZXJDb2xvcixib3JkZXJXaWR0aDplLmJvcmRlcldpZHRofSxlLmJhY2tncm91bmRDb2xvcj1yKG4uaG92ZXJCYWNrZ3JvdW5kQ29sb3IsaShuLmJhY2tncm91bmRDb2xvcikpLGUuYm9yZGVyQ29sb3I9cihuLmhvdmVyQm9yZGVyQ29sb3IsaShuLmJvcmRlckNvbG9yKSksZS5ib3JkZXJXaWR0aD1yKG4uaG92ZXJCb3JkZXJXaWR0aCxuLmJvcmRlcldpZHRoKX0sX2NvbXB1dGVBbmdsZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLG49dGhpcy5nZXRNZXRhKCkuY291bnQsaT1lLmdldERhdGFzZXQoKSxyPWUuZ2V0TWV0YSgpO2lmKGlzTmFOKGkuZGF0YVt0XSl8fHIuZGF0YVt0XS5oaWRkZW4pcmV0dXJuIDA7dmFyIG89e2NoYXJ0OmUuY2hhcnQsZGF0YUluZGV4OnQsZGF0YXNldDppLGRhdGFzZXRJbmRleDplLmluZGV4fTtyZXR1cm4gcXQoW2UuY2hhcnQub3B0aW9ucy5lbGVtZW50cy5hcmMuYW5nbGUsMipNYXRoLlBJL25dLG8sdCl9fSk7Ui5fc2V0KCJwaWUiLEIuY2xvbmUoUi5kb3VnaG51dCkpLFIuX3NldCgicGllIix7Y3V0b3V0UGVyY2VudGFnZTowfSk7dmFyIFV0PUx0LFZ0PUIudmFsdWVPckRlZmF1bHQ7Ui5fc2V0KCJyYWRhciIse3NwYW5HYXBzOiExLHNjYWxlOnt0eXBlOiJyYWRpYWxMaW5lYXIifSxlbGVtZW50czp7bGluZTp7ZmlsbDoic3RhcnQiLHRlbnNpb246MH19fSk7dmFyIFl0PW50LmV4dGVuZCh7ZGF0YXNldEVsZW1lbnRUeXBlOmJ0LkxpbmUsZGF0YUVsZW1lbnRUeXBlOmJ0LlBvaW50LGxpbmtTY2FsZXM6Qi5ub29wLF9kYXRhc2V0RWxlbWVudE9wdGlvbnM6WyJiYWNrZ3JvdW5kQ29sb3IiLCJib3JkZXJXaWR0aCIsImJvcmRlckNvbG9yIiwiYm9yZGVyQ2FwU3R5bGUiLCJib3JkZXJEYXNoIiwiYm9yZGVyRGFzaE9mZnNldCIsImJvcmRlckpvaW5TdHlsZSIsImZpbGwiXSxfZGF0YUVsZW1lbnRPcHRpb25zOntiYWNrZ3JvdW5kQ29sb3I6InBvaW50QmFja2dyb3VuZENvbG9yIixib3JkZXJDb2xvcjoicG9pbnRCb3JkZXJDb2xvciIsYm9yZGVyV2lkdGg6InBvaW50Qm9yZGVyV2lkdGgiLGhpdFJhZGl1czoicG9pbnRIaXRSYWRpdXMiLGhvdmVyQmFja2dyb3VuZENvbG9yOiJwb2ludEhvdmVyQmFja2dyb3VuZENvbG9yIixob3ZlckJvcmRlckNvbG9yOiJwb2ludEhvdmVyQm9yZGVyQ29sb3IiLGhvdmVyQm9yZGVyV2lkdGg6InBvaW50SG92ZXJCb3JkZXJXaWR0aCIsaG92ZXJSYWRpdXM6InBvaW50SG92ZXJSYWRpdXMiLHBvaW50U3R5bGU6InBvaW50U3R5bGUiLHJhZGl1czoicG9pbnRSYWRpdXMiLHJvdGF0aW9uOiJwb2ludFJvdGF0aW9uIn0sX2dldEluZGV4U2NhbGVJZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNoYXJ0LnNjYWxlLmlkfSxfZ2V0VmFsdWVTY2FsZUlkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2hhcnQuc2NhbGUuaWR9LHVwZGF0ZTpmdW5jdGlvbih0KXt2YXIgZSxuLGk9dGhpcyxyPWkuZ2V0TWV0YSgpLG89ci5kYXRhc2V0LGE9ci5kYXRhfHxbXSxzPWkuY2hhcnQuc2NhbGUsbD1pLl9jb25maWc7Zm9yKHZvaWQgMCE9PWwudGVuc2lvbiYmdm9pZCAwPT09bC5saW5lVGVuc2lvbiYmKGwubGluZVRlbnNpb249bC50ZW5zaW9uKSxvLl9zY2FsZT1zLG8uX2RhdGFzZXRJbmRleD1pLmluZGV4LG8uX2NoaWxkcmVuPWEsby5fbG9vcD0hMCxvLl9tb2RlbD1pLl9yZXNvbHZlRGF0YXNldEVsZW1lbnRPcHRpb25zKG8pLG8ucGl2b3QoKSxlPTAsbj1hLmxlbmd0aDtlPG47KytlKWkudXBkYXRlRWxlbWVudChhW2VdLGUsdCk7Zm9yKGkudXBkYXRlQmV6aWVyQ29udHJvbFBvaW50cygpLGU9MCxuPWEubGVuZ3RoO2U8bjsrK2UpYVtlXS5waXZvdCgpfSx1cGRhdGVFbGVtZW50OmZ1bmN0aW9uKHQsZSxuKXt2YXIgaT10aGlzLHI9dC5jdXN0b218fHt9LG89aS5nZXREYXRhc2V0KCksYT1pLmNoYXJ0LnNjYWxlLHM9YS5nZXRQb2ludFBvc2l0aW9uRm9yVmFsdWUoZSxvLmRhdGFbZV0pLGw9aS5fcmVzb2x2ZURhdGFFbGVtZW50T3B0aW9ucyh0LGUpLGM9aS5nZXRNZXRhKCkuZGF0YXNldC5fbW9kZWwsdT1uP2EueENlbnRlcjpzLngsZD1uP2EueUNlbnRlcjpzLnk7dC5fc2NhbGU9YSx0Ll9vcHRpb25zPWwsdC5fZGF0YXNldEluZGV4PWkuaW5kZXgsdC5faW5kZXg9ZSx0Ll9tb2RlbD17eDp1LHk6ZCxza2lwOnIuc2tpcHx8aXNOYU4odSl8fGlzTmFOKGQpLHJhZGl1czpsLnJhZGl1cyxwb2ludFN0eWxlOmwucG9pbnRTdHlsZSxyb3RhdGlvbjpsLnJvdGF0aW9uLGJhY2tncm91bmRDb2xvcjpsLmJhY2tncm91bmRDb2xvcixib3JkZXJDb2xvcjpsLmJvcmRlckNvbG9yLGJvcmRlcldpZHRoOmwuYm9yZGVyV2lkdGgsdGVuc2lvbjpWdChyLnRlbnNpb24sYz9jLnRlbnNpb246MCksaGl0UmFkaXVzOmwuaGl0UmFkaXVzfX0sX3Jlc29sdmVEYXRhc2V0RWxlbWVudE9wdGlvbnM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dC5fY29uZmlnLG49dC5jaGFydC5vcHRpb25zLGk9bnQucHJvdG90eXBlLl9yZXNvbHZlRGF0YXNldEVsZW1lbnRPcHRpb25zLmFwcGx5KHQsYXJndW1lbnRzKTtyZXR1cm4gaS5zcGFuR2Fwcz1WdChlLnNwYW5HYXBzLG4uc3BhbkdhcHMpLGkudGVuc2lvbj1WdChlLmxpbmVUZW5zaW9uLG4uZWxlbWVudHMubGluZS50ZW5zaW9uKSxpfSx1cGRhdGVCZXppZXJDb250cm9sUG9pbnRzOmZ1bmN0aW9uKCl7dmFyIHQsZSxuLGkscj10aGlzLmdldE1ldGEoKSxvPXRoaXMuY2hhcnQuY2hhcnRBcmVhLGE9ci5kYXRhfHxbXTtmdW5jdGlvbiBzKHQsZSxuKXtyZXR1cm4gTWF0aC5tYXgoTWF0aC5taW4odCxuKSxlKX1mb3Ioci5kYXRhc2V0Ll9tb2RlbC5zcGFuR2FwcyYmKGE9YS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiF0Ll9tb2RlbC5za2lwfSkpKSx0PTAsZT1hLmxlbmd0aDt0PGU7Kyt0KW49YVt0XS5fbW9kZWwsaT1CLnNwbGluZUN1cnZlKEIucHJldmlvdXNJdGVtKGEsdCwhMCkuX21vZGVsLG4sQi5uZXh0SXRlbShhLHQsITApLl9tb2RlbCxuLnRlbnNpb24pLG4uY29udHJvbFBvaW50UHJldmlvdXNYPXMoaS5wcmV2aW91cy54LG8ubGVmdCxvLnJpZ2h0KSxuLmNvbnRyb2xQb2ludFByZXZpb3VzWT1zKGkucHJldmlvdXMueSxvLnRvcCxvLmJvdHRvbSksbi5jb250cm9sUG9pbnROZXh0WD1zKGkubmV4dC54LG8ubGVmdCxvLnJpZ2h0KSxuLmNvbnRyb2xQb2ludE5leHRZPXMoaS5uZXh0Lnksby50b3Asby5ib3R0b20pfSxzZXRIb3ZlclN0eWxlOmZ1bmN0aW9uKHQpe3ZhciBlPXQuX21vZGVsLG49dC5fb3B0aW9ucyxpPUIuZ2V0SG92ZXJDb2xvcjt0LiRwcmV2aW91c1N0eWxlPXtiYWNrZ3JvdW5kQ29sb3I6ZS5iYWNrZ3JvdW5kQ29sb3IsYm9yZGVyQ29sb3I6ZS5ib3JkZXJDb2xvcixib3JkZXJXaWR0aDplLmJvcmRlcldpZHRoLHJhZGl1czplLnJhZGl1c30sZS5iYWNrZ3JvdW5kQ29sb3I9VnQobi5ob3ZlckJhY2tncm91bmRDb2xvcixpKG4uYmFja2dyb3VuZENvbG9yKSksZS5ib3JkZXJDb2xvcj1WdChuLmhvdmVyQm9yZGVyQ29sb3IsaShuLmJvcmRlckNvbG9yKSksZS5ib3JkZXJXaWR0aD1WdChuLmhvdmVyQm9yZGVyV2lkdGgsbi5ib3JkZXJXaWR0aCksZS5yYWRpdXM9VnQobi5ob3ZlclJhZGl1cyxuLnJhZGl1cyl9fSk7Ui5fc2V0KCJzY2F0dGVyIix7aG92ZXI6e21vZGU6InNpbmdsZSJ9LHNjYWxlczp7eEF4ZXM6W3tpZDoieC1heGlzLTEiLHR5cGU6ImxpbmVhciIscG9zaXRpb246ImJvdHRvbSJ9XSx5QXhlczpbe2lkOiJ5LWF4aXMtMSIsdHlwZToibGluZWFyIixwb3NpdGlvbjoibGVmdCJ9XX0sdG9vbHRpcHM6e2NhbGxiYWNrczp7dGl0bGU6ZnVuY3Rpb24oKXtyZXR1cm4iIn0sbGFiZWw6ZnVuY3Rpb24odCl7cmV0dXJuIigiK3QueExhYmVsKyIsICIrdC55TGFiZWwrIikifX19fSksUi5fc2V0KCJnbG9iYWwiLHtkYXRhc2V0czp7c2NhdHRlcjp7c2hvd0xpbmU6ITF9fX0pO3ZhciBHdD17YmFyOlR0LGJ1YmJsZTpFdCxkb3VnaG51dDpMdCxob3Jpem9udGFsQmFyOk50LGxpbmU6QnQscG9sYXJBcmVhOld0LHBpZTpVdCxyYWRhcjpZdCxzY2F0dGVyOkJ0fTtmdW5jdGlvbiBYdCh0LGUpe3JldHVybiB0Lm5hdGl2ZT97eDp0LngseTp0Lnl9OkIuZ2V0UmVsYXRpdmVQb3NpdGlvbih0LGUpfWZ1bmN0aW9uIFF0KHQsZSl7dmFyIG4saSxyLG8sYSxzLGw9dC5fZ2V0U29ydGVkVmlzaWJsZURhdGFzZXRNZXRhcygpO2ZvcihpPTAsbz1sLmxlbmd0aDtpPG87KytpKWZvcihyPTAsYT0obj1sW2ldLmRhdGEpLmxlbmd0aDtyPGE7KytyKShzPW5bcl0pLl92aWV3LnNraXB8fGUocyl9ZnVuY3Rpb24gS3QodCxlKXt2YXIgbj1bXTtyZXR1cm4gUXQodCwoZnVuY3Rpb24odCl7dC5pblJhbmdlKGUueCxlLnkpJiZuLnB1c2godCl9KSksbn1mdW5jdGlvbiBKdCh0LGUsbixpKXt2YXIgcj1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksbz1bXTtyZXR1cm4gUXQodCwoZnVuY3Rpb24odCl7aWYoIW58fHQuaW5SYW5nZShlLngsZS55KSl7dmFyIGE9dC5nZXRDZW50ZXJQb2ludCgpLHM9aShlLGEpO3M8cj8obz1bdF0scj1zKTpzPT09ciYmby5wdXNoKHQpfX0pKSxvfWZ1bmN0aW9uIFp0KHQpe3ZhciBlPS0xIT09dC5pbmRleE9mKCJ4Iiksbj0tMSE9PXQuaW5kZXhPZigieSIpO3JldHVybiBmdW5jdGlvbih0LGkpe3ZhciByPWU/TWF0aC5hYnModC54LWkueCk6MCxvPW4/TWF0aC5hYnModC55LWkueSk6MDtyZXR1cm4gTWF0aC5zcXJ0KE1hdGgucG93KHIsMikrTWF0aC5wb3cobywyKSl9fWZ1bmN0aW9uIHRlKHQsZSxuKXt2YXIgaT1YdChlLHQpO24uYXhpcz1uLmF4aXN8fCJ4Ijt2YXIgcj1adChuLmF4aXMpLG89bi5pbnRlcnNlY3Q/S3QodCxpKTpKdCh0LGksITEsciksYT1bXTtyZXR1cm4gby5sZW5ndGg/KHQuX2dldFNvcnRlZFZpc2libGVEYXRhc2V0TWV0YXMoKS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT10LmRhdGFbb1swXS5faW5kZXhdO2UmJiFlLl92aWV3LnNraXAmJmEucHVzaChlKX0pKSxhKTpbXX12YXIgZWU9e21vZGVzOntzaW5nbGU6ZnVuY3Rpb24odCxlKXt2YXIgbj1YdChlLHQpLGk9W107cmV0dXJuIFF0KHQsKGZ1bmN0aW9uKHQpe2lmKHQuaW5SYW5nZShuLngsbi55KSlyZXR1cm4gaS5wdXNoKHQpLGl9KSksaS5zbGljZSgwLDEpfSxsYWJlbDp0ZSxpbmRleDp0ZSxkYXRhc2V0OmZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1YdChlLHQpO24uYXhpcz1uLmF4aXN8fCJ4eSI7dmFyIHI9WnQobi5heGlzKSxvPW4uaW50ZXJzZWN0P0t0KHQsaSk6SnQodCxpLCExLHIpO3JldHVybiBvLmxlbmd0aD4wJiYobz10LmdldERhdGFzZXRNZXRhKG9bMF0uX2RhdGFzZXRJbmRleCkuZGF0YSksb30sIngtYXhpcyI6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGUodCxlLHtpbnRlcnNlY3Q6ITF9KX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gS3QodCxYdChlLHQpKX0sbmVhcmVzdDpmdW5jdGlvbih0LGUsbil7dmFyIGk9WHQoZSx0KTtuLmF4aXM9bi5heGlzfHwieHkiO3ZhciByPVp0KG4uYXhpcyk7cmV0dXJuIEp0KHQsaSxuLmludGVyc2VjdCxyKX0seDpmdW5jdGlvbih0LGUsbil7dmFyIGk9WHQoZSx0KSxyPVtdLG89ITE7cmV0dXJuIFF0KHQsKGZ1bmN0aW9uKHQpe3QuaW5YUmFuZ2UoaS54KSYmci5wdXNoKHQpLHQuaW5SYW5nZShpLngsaS55KSYmKG89ITApfSkpLG4uaW50ZXJzZWN0JiYhbyYmKHI9W10pLHJ9LHk6ZnVuY3Rpb24odCxlLG4pe3ZhciBpPVh0KGUsdCkscj1bXSxvPSExO3JldHVybiBRdCh0LChmdW5jdGlvbih0KXt0LmluWVJhbmdlKGkueSkmJnIucHVzaCh0KSx0LmluUmFuZ2UoaS54LGkueSkmJihvPSEwKX0pKSxuLmludGVyc2VjdCYmIW8mJihyPVtdKSxyfX19LG5lPUIuZXh0ZW5kO2Z1bmN0aW9uIGllKHQsZSl7cmV0dXJuIEIud2hlcmUodCwoZnVuY3Rpb24odCl7cmV0dXJuIHQucG9zPT09ZX0pKX1mdW5jdGlvbiByZSh0LGUpe3JldHVybiB0LnNvcnQoKGZ1bmN0aW9uKHQsbil7dmFyIGk9ZT9uOnQscj1lP3Q6bjtyZXR1cm4gaS53ZWlnaHQ9PT1yLndlaWdodD9pLmluZGV4LXIuaW5kZXg6aS53ZWlnaHQtci53ZWlnaHR9KSl9ZnVuY3Rpb24gb2UodCxlLG4saSl7cmV0dXJuIE1hdGgubWF4KHRbbl0sZVtuXSkrTWF0aC5tYXgodFtpXSxlW2ldKX1mdW5jdGlvbiBhZSh0LGUsbil7dmFyIGkscixvPW4uYm94LGE9dC5tYXhQYWRkaW5nO2lmKG4uc2l6ZSYmKHRbbi5wb3NdLT1uLnNpemUpLG4uc2l6ZT1uLmhvcml6b250YWw/by5oZWlnaHQ6by53aWR0aCx0W24ucG9zXSs9bi5zaXplLG8uZ2V0UGFkZGluZyl7dmFyIHM9by5nZXRQYWRkaW5nKCk7YS50b3A9TWF0aC5tYXgoYS50b3Ascy50b3ApLGEubGVmdD1NYXRoLm1heChhLmxlZnQscy5sZWZ0KSxhLmJvdHRvbT1NYXRoLm1heChhLmJvdHRvbSxzLmJvdHRvbSksYS5yaWdodD1NYXRoLm1heChhLnJpZ2h0LHMucmlnaHQpfWlmKGk9ZS5vdXRlcldpZHRoLW9lKGEsdCwibGVmdCIsInJpZ2h0Iikscj1lLm91dGVySGVpZ2h0LW9lKGEsdCwidG9wIiwiYm90dG9tIiksaSE9PXQud3x8ciE9PXQuaCl7dC53PWksdC5oPXI7dmFyIGw9bi5ob3Jpem9udGFsP1tpLHQud106W3IsdC5oXTtyZXR1cm4hKGxbMF09PT1sWzFdfHxpc05hTihsWzBdKSYmaXNOYU4obFsxXSkpfX1mdW5jdGlvbiBzZSh0LGUpe3ZhciBuPWUubWF4UGFkZGluZztyZXR1cm4gZnVuY3Rpb24odCl7dmFyIGk9e2xlZnQ6MCx0b3A6MCxyaWdodDowLGJvdHRvbTowfTtyZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtpW3RdPU1hdGgubWF4KGVbdF0sblt0XSl9KSksaX0odD9bImxlZnQiLCJyaWdodCJdOlsidG9wIiwiYm90dG9tIl0pfWZ1bmN0aW9uIGxlKHQsZSxuKXt2YXIgaSxyLG8sYSxzLGwsYz1bXTtmb3IoaT0wLHI9dC5sZW5ndGg7aTxyOysraSkoYT0obz10W2ldKS5ib3gpLnVwZGF0ZShvLndpZHRofHxlLncsby5oZWlnaHR8fGUuaCxzZShvLmhvcml6b250YWwsZSkpLGFlKGUsbixvKSYmKGw9ITAsYy5sZW5ndGgmJihzPSEwKSksYS5mdWxsV2lkdGh8fGMucHVzaChvKTtyZXR1cm4gcyYmbGUoYyxlLG4pfHxsfWZ1bmN0aW9uIGNlKHQsZSxuKXt2YXIgaSxyLG8sYSxzPW4ucGFkZGluZyxsPWUueCxjPWUueTtmb3IoaT0wLHI9dC5sZW5ndGg7aTxyOysraSlhPShvPXRbaV0pLmJveCxvLmhvcml6b250YWw/KGEubGVmdD1hLmZ1bGxXaWR0aD9zLmxlZnQ6ZS5sZWZ0LGEucmlnaHQ9YS5mdWxsV2lkdGg/bi5vdXRlcldpZHRoLXMucmlnaHQ6ZS5sZWZ0K2UudyxhLnRvcD1jLGEuYm90dG9tPWMrYS5oZWlnaHQsYS53aWR0aD1hLnJpZ2h0LWEubGVmdCxjPWEuYm90dG9tKTooYS5sZWZ0PWwsYS5yaWdodD1sK2Eud2lkdGgsYS50b3A9ZS50b3AsYS5ib3R0b209ZS50b3ArZS5oLGEuaGVpZ2h0PWEuYm90dG9tLWEudG9wLGw9YS5yaWdodCk7ZS54PWwsZS55PWN9Ui5fc2V0KCJnbG9iYWwiLHtsYXlvdXQ6e3BhZGRpbmc6e3RvcDowLHJpZ2h0OjAsYm90dG9tOjAsbGVmdDowfX19KTt2YXIgdWUsZGU9e2RlZmF1bHRzOnt9LGFkZEJveDpmdW5jdGlvbih0LGUpe3QuYm94ZXN8fCh0LmJveGVzPVtdKSxlLmZ1bGxXaWR0aD1lLmZ1bGxXaWR0aHx8ITEsZS5wb3NpdGlvbj1lLnBvc2l0aW9ufHwidG9wIixlLndlaWdodD1lLndlaWdodHx8MCxlLl9sYXllcnM9ZS5fbGF5ZXJzfHxmdW5jdGlvbigpe3JldHVyblt7ejowLGRyYXc6ZnVuY3Rpb24oKXtlLmRyYXcuYXBwbHkoZSxhcmd1bWVudHMpfX1dfSx0LmJveGVzLnB1c2goZSl9LHJlbW92ZUJveDpmdW5jdGlvbih0LGUpe3ZhciBuPXQuYm94ZXM/dC5ib3hlcy5pbmRleE9mKGUpOi0xOy0xIT09biYmdC5ib3hlcy5zcGxpY2UobiwxKX0sY29uZmlndXJlOmZ1bmN0aW9uKHQsZSxuKXtmb3IodmFyIGkscj1bImZ1bGxXaWR0aCIsInBvc2l0aW9uIiwid2VpZ2h0Il0sbz1yLmxlbmd0aCxhPTA7YTxvOysrYSlpPXJbYV0sbi5oYXNPd25Qcm9wZXJ0eShpKSYmKGVbaV09bltpXSl9LHVwZGF0ZTpmdW5jdGlvbih0LGUsbil7aWYodCl7dmFyIGk9dC5vcHRpb25zLmxheW91dHx8e30scj1CLm9wdGlvbnMudG9QYWRkaW5nKGkucGFkZGluZyksbz1lLXIud2lkdGgsYT1uLXIuaGVpZ2h0LHM9ZnVuY3Rpb24odCl7dmFyIGU9ZnVuY3Rpb24odCl7dmFyIGUsbixpLHI9W107Zm9yKGU9MCxuPSh0fHxbXSkubGVuZ3RoO2U8bjsrK2UpaT10W2VdLHIucHVzaCh7aW5kZXg6ZSxib3g6aSxwb3M6aS5wb3NpdGlvbixob3Jpem9udGFsOmkuaXNIb3Jpem9udGFsKCksd2VpZ2h0Omkud2VpZ2h0fSk7cmV0dXJuIHJ9KHQpLG49cmUoaWUoZSwibGVmdCIpLCEwKSxpPXJlKGllKGUsInJpZ2h0IikpLHI9cmUoaWUoZSwidG9wIiksITApLG89cmUoaWUoZSwiYm90dG9tIikpO3JldHVybntsZWZ0QW5kVG9wOm4uY29uY2F0KHIpLHJpZ2h0QW5kQm90dG9tOmkuY29uY2F0KG8pLGNoYXJ0QXJlYTppZShlLCJjaGFydEFyZWEiKSx2ZXJ0aWNhbDpuLmNvbmNhdChpKSxob3Jpem9udGFsOnIuY29uY2F0KG8pfX0odC5ib3hlcyksbD1zLnZlcnRpY2FsLGM9cy5ob3Jpem9udGFsLHU9T2JqZWN0LmZyZWV6ZSh7b3V0ZXJXaWR0aDplLG91dGVySGVpZ2h0Om4scGFkZGluZzpyLGF2YWlsYWJsZVdpZHRoOm8sdkJveE1heFdpZHRoOm8vMi9sLmxlbmd0aCxoQm94TWF4SGVpZ2h0OmEvMn0pLGQ9bmUoe21heFBhZGRpbmc6bmUoe30sciksdzpvLGg6YSx4OnIubGVmdCx5OnIudG9wfSxyKTshZnVuY3Rpb24odCxlKXt2YXIgbixpLHI7Zm9yKG49MCxpPXQubGVuZ3RoO248aTsrK24pKHI9dFtuXSkud2lkdGg9ci5ob3Jpem9udGFsP3IuYm94LmZ1bGxXaWR0aCYmZS5hdmFpbGFibGVXaWR0aDplLnZCb3hNYXhXaWR0aCxyLmhlaWdodD1yLmhvcml6b250YWwmJmUuaEJveE1heEhlaWdodH0obC5jb25jYXQoYyksdSksbGUobCxkLHUpLGxlKGMsZCx1KSYmbGUobCxkLHUpLGZ1bmN0aW9uKHQpe3ZhciBlPXQubWF4UGFkZGluZztmdW5jdGlvbiBuKG4pe3ZhciBpPU1hdGgubWF4KGVbbl0tdFtuXSwwKTtyZXR1cm4gdFtuXSs9aSxpfXQueSs9bigidG9wIiksdC54Kz1uKCJsZWZ0IiksbigicmlnaHQiKSxuKCJib3R0b20iKX0oZCksY2Uocy5sZWZ0QW5kVG9wLGQsdSksZC54Kz1kLncsZC55Kz1kLmgsY2Uocy5yaWdodEFuZEJvdHRvbSxkLHUpLHQuY2hhcnRBcmVhPXtsZWZ0OmQubGVmdCx0b3A6ZC50b3AscmlnaHQ6ZC5sZWZ0K2Qudyxib3R0b206ZC50b3ArZC5ofSxCLmVhY2gocy5jaGFydEFyZWEsKGZ1bmN0aW9uKGUpe3ZhciBuPWUuYm94O25lKG4sdC5jaGFydEFyZWEpLG4udXBkYXRlKGQudyxkLmgpfSkpfX19LGhlPSh1ZT1PYmplY3QuZnJlZXplKHtfX3Byb3RvX186bnVsbCxkZWZhdWx0OiJAa2V5ZnJhbWVzIGNoYXJ0anMtcmVuZGVyLWFuaW1hdGlvbntmcm9te29wYWNpdHk6Ljk5fXRve29wYWNpdHk6MX19LmNoYXJ0anMtcmVuZGVyLW1vbml0b3J7YW5pbWF0aW9uOmNoYXJ0anMtcmVuZGVyLWFuaW1hdGlvbiAxbXN9LmNoYXJ0anMtc2l6ZS1tb25pdG9yLC5jaGFydGpzLXNpemUtbW9uaXRvci1leHBhbmQsLmNoYXJ0anMtc2l6ZS1tb25pdG9yLXNocmlua3twb3NpdGlvbjphYnNvbHV0ZTtkaXJlY3Rpb246bHRyO2xlZnQ6MDt0b3A6MDtyaWdodDowO2JvdHRvbTowO292ZXJmbG93OmhpZGRlbjtwb2ludGVyLWV2ZW50czpub25lO3Zpc2liaWxpdHk6aGlkZGVuO3otaW5kZXg6LTF9LmNoYXJ0anMtc2l6ZS1tb25pdG9yLWV4cGFuZD5kaXZ7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwMDAwMHB4O2hlaWdodDoxMDAwMDAwcHg7bGVmdDowO3RvcDowfS5jaGFydGpzLXNpemUtbW9uaXRvci1zaHJpbms+ZGl2e3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjIwMCU7aGVpZ2h0OjIwMCU7bGVmdDowO3RvcDowfSJ9KSkmJnVlLmRlZmF1bHR8fHVlLGZlPSIkY2hhcnRqcyIscGU9ImNoYXJ0anMtc2l6ZS1tb25pdG9yIixnZT0iY2hhcnRqcy1yZW5kZXItbW9uaXRvciIsbWU9WyJhbmltYXRpb25zdGFydCIsIndlYmtpdEFuaW1hdGlvblN0YXJ0Il0sdmU9e3RvdWNoc3RhcnQ6Im1vdXNlZG93biIsdG91Y2htb3ZlOiJtb3VzZW1vdmUiLHRvdWNoZW5kOiJtb3VzZXVwIixwb2ludGVyZW50ZXI6Im1vdXNlZW50ZXIiLHBvaW50ZXJkb3duOiJtb3VzZWRvd24iLHBvaW50ZXJtb3ZlOiJtb3VzZW1vdmUiLHBvaW50ZXJ1cDoibW91c2V1cCIscG9pbnRlcmxlYXZlOiJtb3VzZW91dCIscG9pbnRlcm91dDoibW91c2VvdXQifTtmdW5jdGlvbiB5ZSh0LGUpe3ZhciBuPUIuZ2V0U3R5bGUodCxlKSxpPW4mJm4ubWF0Y2goL14oXGQrKShcLlxkKyk/cHgkLyk7cmV0dXJuIGk/TnVtYmVyKGlbMV0pOnZvaWQgMH12YXIgYmU9ISFmdW5jdGlvbigpe3ZhciB0PSExO3RyeXt2YXIgZT1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sInBhc3NpdmUiLHtnZXQ6ZnVuY3Rpb24oKXt0PSEwfX0pO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJlIixudWxsLGUpfWNhdGNoKHQpe31yZXR1cm4gdH0oKSYme3Bhc3NpdmU6ITB9O2Z1bmN0aW9uIHdlKHQsZSxuKXt0LmFkZEV2ZW50TGlzdGVuZXIoZSxuLGJlKX1mdW5jdGlvbiB4ZSh0LGUsbil7dC5yZW1vdmVFdmVudExpc3RlbmVyKGUsbixiZSl9ZnVuY3Rpb24gX2UodCxlLG4saSxyKXtyZXR1cm57dHlwZTp0LGNoYXJ0OmUsbmF0aXZlOnJ8fG51bGwseDp2b2lkIDAhPT1uP246bnVsbCx5OnZvaWQgMCE9PWk/aTpudWxsfX1mdW5jdGlvbiBTZSh0KXt2YXIgZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gZS5jbGFzc05hbWU9dHx8IiIsZX12YXIgQ2U9e2Rpc2FibGVDU1NJbmplY3Rpb246ITEsX2VuYWJsZWQ6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJiJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQsX2Vuc3VyZUxvYWRlZDpmdW5jdGlvbih0KXtpZighdGhpcy5kaXNhYmxlQ1NTSW5qZWN0aW9uKXt2YXIgZT10LmdldFJvb3ROb2RlP3QuZ2V0Um9vdE5vZGUoKTpkb2N1bWVudDshZnVuY3Rpb24odCxlKXt2YXIgbj10W2ZlXXx8KHRbZmVdPXt9KTtpZighbi5jb250YWluc1N0eWxlcyl7bi5jb250YWluc1N0eWxlcz0hMCxlPSIvKiBDaGFydC5qcyAqL1xuIitlO3ZhciBpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7aS5zZXRBdHRyaWJ1dGUoInR5cGUiLCJ0ZXh0L2NzcyIpLGkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZSkpLHQuYXBwZW5kQ2hpbGQoaSl9fShlLmhvc3Q/ZTpkb2N1bWVudC5oZWFkLGhlKX19LGFjcXVpcmVDb250ZXh0OmZ1bmN0aW9uKHQsZSl7InN0cmluZyI9PXR5cGVvZiB0P3Q9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodCk6dC5sZW5ndGgmJih0PXRbMF0pLHQmJnQuY2FudmFzJiYodD10LmNhbnZhcyk7dmFyIG49dCYmdC5nZXRDb250ZXh0JiZ0LmdldENvbnRleHQoIjJkIik7cmV0dXJuIG4mJm4uY2FudmFzPT09dD8odGhpcy5fZW5zdXJlTG9hZGVkKHQpLGZ1bmN0aW9uKHQsZSl7dmFyIG49dC5zdHlsZSxpPXQuZ2V0QXR0cmlidXRlKCJoZWlnaHQiKSxyPXQuZ2V0QXR0cmlidXRlKCJ3aWR0aCIpO2lmKHRbZmVdPXtpbml0aWFsOntoZWlnaHQ6aSx3aWR0aDpyLHN0eWxlOntkaXNwbGF5Om4uZGlzcGxheSxoZWlnaHQ6bi5oZWlnaHQsd2lkdGg6bi53aWR0aH19fSxuLmRpc3BsYXk9bi5kaXNwbGF5fHwiYmxvY2siLG51bGw9PT1yfHwiIj09PXIpe3ZhciBvPXllKHQsIndpZHRoIik7dm9pZCAwIT09byYmKHQud2lkdGg9byl9aWYobnVsbD09PWl8fCIiPT09aSlpZigiIj09PXQuc3R5bGUuaGVpZ2h0KXQuaGVpZ2h0PXQud2lkdGgvKGUub3B0aW9ucy5hc3BlY3RSYXRpb3x8Mik7ZWxzZXt2YXIgYT15ZSh0LCJoZWlnaHQiKTt2b2lkIDAhPT1vJiYodC5oZWlnaHQ9YSl9fSh0LGUpLG4pOm51bGx9LHJlbGVhc2VDb250ZXh0OmZ1bmN0aW9uKHQpe3ZhciBlPXQuY2FudmFzO2lmKGVbZmVdKXt2YXIgbj1lW2ZlXS5pbml0aWFsO1siaGVpZ2h0Iiwid2lkdGgiXS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgaT1uW3RdO0IuaXNOdWxsT3JVbmRlZihpKT9lLnJlbW92ZUF0dHJpYnV0ZSh0KTplLnNldEF0dHJpYnV0ZSh0LGkpfSkpLEIuZWFjaChuLnN0eWxlfHx7fSwoZnVuY3Rpb24odCxuKXtlLnN0eWxlW25dPXR9KSksZS53aWR0aD1lLndpZHRoLGRlbGV0ZSBlW2ZlXX19LGFkZEV2ZW50TGlzdGVuZXI6ZnVuY3Rpb24odCxlLG4pe3ZhciBpPXQuY2FudmFzO2lmKCJyZXNpemUiIT09ZSl7dmFyIHI9bltmZV18fChuW2ZlXT17fSk7d2UoaSxlLChyLnByb3hpZXN8fChyLnByb3hpZXM9e30pKVt0LmlkKyJfIitlXT1mdW5jdGlvbihlKXtuKGZ1bmN0aW9uKHQsZSl7dmFyIG49dmVbdC50eXBlXXx8dC50eXBlLGk9Qi5nZXRSZWxhdGl2ZVBvc2l0aW9uKHQsZSk7cmV0dXJuIF9lKG4sZSxpLngsaS55LHQpfShlLHQpKX0pfWVsc2UhZnVuY3Rpb24odCxlLG4pe3ZhciBpLHIsbyxhLHM9dFtmZV18fCh0W2ZlXT17fSksbD1zLnJlc2l6ZXI9ZnVuY3Rpb24odCl7dmFyIGU9U2UocGUpLG49U2UocGUrIi1leHBhbmQiKSxpPVNlKHBlKyItc2hyaW5rIik7bi5hcHBlbmRDaGlsZChTZSgpKSxpLmFwcGVuZENoaWxkKFNlKCkpLGUuYXBwZW5kQ2hpbGQobiksZS5hcHBlbmRDaGlsZChpKSxlLl9yZXNldD1mdW5jdGlvbigpe24uc2Nyb2xsTGVmdD0xZTYsbi5zY3JvbGxUb3A9MWU2LGkuc2Nyb2xsTGVmdD0xZTYsaS5zY3JvbGxUb3A9MWU2fTt2YXIgcj1mdW5jdGlvbigpe2UuX3Jlc2V0KCksdCgpfTtyZXR1cm4gd2Uobiwic2Nyb2xsIixyLmJpbmQobiwiZXhwYW5kIikpLHdlKGksInNjcm9sbCIsci5iaW5kKGksInNocmluayIpKSxlfSgoaT1mdW5jdGlvbigpe2lmKHMucmVzaXplcil7dmFyIGk9bi5vcHRpb25zLm1haW50YWluQXNwZWN0UmF0aW8mJnQucGFyZW50Tm9kZSxyPWk/aS5jbGllbnRXaWR0aDowO2UoX2UoInJlc2l6ZSIsbikpLGkmJmkuY2xpZW50V2lkdGg8ciYmbi5jYW52YXMmJmUoX2UoInJlc2l6ZSIsbikpfX0sbz0hMSxhPVtdLGZ1bmN0aW9uKCl7YT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpLHI9cnx8dGhpcyxvfHwobz0hMCxCLnJlcXVlc3RBbmltRnJhbWUuY2FsbCh3aW5kb3csKGZ1bmN0aW9uKCl7bz0hMSxpLmFwcGx5KHIsYSl9KSkpfSkpOyFmdW5jdGlvbih0LGUpe3ZhciBuPXRbZmVdfHwodFtmZV09e30pLGk9bi5yZW5kZXJQcm94eT1mdW5jdGlvbih0KXsiY2hhcnRqcy1yZW5kZXItYW5pbWF0aW9uIj09PXQuYW5pbWF0aW9uTmFtZSYmZSgpfTtCLmVhY2gobWUsKGZ1bmN0aW9uKGUpe3dlKHQsZSxpKX0pKSxuLnJlZmxvdz0hIXQub2Zmc2V0UGFyZW50LHQuY2xhc3NMaXN0LmFkZChnZSl9KHQsKGZ1bmN0aW9uKCl7aWYocy5yZXNpemVyKXt2YXIgZT10LnBhcmVudE5vZGU7ZSYmZSE9PWwucGFyZW50Tm9kZSYmZS5pbnNlcnRCZWZvcmUobCxlLmZpcnN0Q2hpbGQpLGwuX3Jlc2V0KCl9fSkpfShpLG4sdCl9LHJlbW92ZUV2ZW50TGlzdGVuZXI6ZnVuY3Rpb24odCxlLG4pe3ZhciBpPXQuY2FudmFzO2lmKCJyZXNpemUiIT09ZSl7dmFyIHI9KChuW2ZlXXx8e30pLnByb3hpZXN8fHt9KVt0LmlkKyJfIitlXTtyJiZ4ZShpLGUscil9ZWxzZSFmdW5jdGlvbih0KXt2YXIgZT10W2ZlXXx8e30sbj1lLnJlc2l6ZXI7ZGVsZXRlIGUucmVzaXplcixmdW5jdGlvbih0KXt2YXIgZT10W2ZlXXx8e30sbj1lLnJlbmRlclByb3h5O24mJihCLmVhY2gobWUsKGZ1bmN0aW9uKGUpe3hlKHQsZSxuKX0pKSxkZWxldGUgZS5yZW5kZXJQcm94eSksdC5jbGFzc0xpc3QucmVtb3ZlKGdlKX0odCksbiYmbi5wYXJlbnROb2RlJiZuLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobil9KGkpfX07Qi5hZGRFdmVudD13ZSxCLnJlbW92ZUV2ZW50PXhlO3ZhciBrZT1DZS5fZW5hYmxlZD9DZTp7YWNxdWlyZUNvbnRleHQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQmJnQuY2FudmFzJiYodD10LmNhbnZhcyksdCYmdC5nZXRDb250ZXh0KCIyZCIpfHxudWxsfX0sVGU9Qi5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24oKXt9LGFjcXVpcmVDb250ZXh0OmZ1bmN0aW9uKCl7fSxyZWxlYXNlQ29udGV4dDpmdW5jdGlvbigpe30sYWRkRXZlbnRMaXN0ZW5lcjpmdW5jdGlvbigpe30scmVtb3ZlRXZlbnRMaXN0ZW5lcjpmdW5jdGlvbigpe319LGtlKTtSLl9zZXQoImdsb2JhbCIse3BsdWdpbnM6e319KTt2YXIgQWU9e19wbHVnaW5zOltdLF9jYWNoZUlkOjAscmVnaXN0ZXI6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fcGx1Z2lucztbXS5jb25jYXQodCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7LTE9PT1lLmluZGV4T2YodCkmJmUucHVzaCh0KX0pKSx0aGlzLl9jYWNoZUlkKyt9LHVucmVnaXN0ZXI6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fcGx1Z2lucztbXS5jb25jYXQodCkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIG49ZS5pbmRleE9mKHQpOy0xIT09biYmZS5zcGxpY2UobiwxKX0pKSx0aGlzLl9jYWNoZUlkKyt9LGNsZWFyOmZ1bmN0aW9uKCl7dGhpcy5fcGx1Z2lucz1bXSx0aGlzLl9jYWNoZUlkKyt9LGNvdW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BsdWdpbnMubGVuZ3RofSxnZXRBbGw6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGx1Z2luc30sbm90aWZ5OmZ1bmN0aW9uKHQsZSxuKXt2YXIgaSxyLG8sYSxzLGw9dGhpcy5kZXNjcmlwdG9ycyh0KSxjPWwubGVuZ3RoO2ZvcihpPTA7aTxjOysraSlpZigiZnVuY3Rpb24iPT10eXBlb2Yocz0obz0ocj1sW2ldKS5wbHVnaW4pW2VdKSYmKChhPVt0XS5jb25jYXQobnx8W10pKS5wdXNoKHIub3B0aW9ucyksITE9PT1zLmFwcGx5KG8sYSkpKXJldHVybiExO3JldHVybiEwfSxkZXNjcmlwdG9yczpmdW5jdGlvbih0KXt2YXIgZT10LiRwbHVnaW5zfHwodC4kcGx1Z2lucz17fSk7aWYoZS5pZD09PXRoaXMuX2NhY2hlSWQpcmV0dXJuIGUuZGVzY3JpcHRvcnM7dmFyIG49W10saT1bXSxyPXQmJnQuY29uZmlnfHx7fSxvPXIub3B0aW9ucyYmci5vcHRpb25zLnBsdWdpbnN8fHt9O3JldHVybiB0aGlzLl9wbHVnaW5zLmNvbmNhdChyLnBsdWdpbnN8fFtdKS5mb3JFYWNoKChmdW5jdGlvbih0KXtpZigtMT09PW4uaW5kZXhPZih0KSl7dmFyIGU9dC5pZCxyPW9bZV07ITEhPT1yJiYoITA9PT1yJiYocj1CLmNsb25lKFIuZ2xvYmFsLnBsdWdpbnNbZV0pKSxuLnB1c2godCksaS5wdXNoKHtwbHVnaW46dCxvcHRpb25zOnJ8fHt9fSkpfX0pKSxlLmRlc2NyaXB0b3JzPWksZS5pZD10aGlzLl9jYWNoZUlkLGl9LF9pbnZhbGlkYXRlOmZ1bmN0aW9uKHQpe2RlbGV0ZSB0LiRwbHVnaW5zfX0sRGU9e2NvbnN0cnVjdG9yczp7fSxkZWZhdWx0czp7fSxyZWdpc3RlclNjYWxlVHlwZTpmdW5jdGlvbih0LGUsbil7dGhpcy5jb25zdHJ1Y3RvcnNbdF09ZSx0aGlzLmRlZmF1bHRzW3RdPUIuY2xvbmUobil9LGdldFNjYWxlQ29uc3RydWN0b3I6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuY29uc3RydWN0b3JzLmhhc093blByb3BlcnR5KHQpP3RoaXMuY29uc3RydWN0b3JzW3RdOnZvaWQgMH0sZ2V0U2NhbGVEZWZhdWx0czpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5kZWZhdWx0cy5oYXNPd25Qcm9wZXJ0eSh0KT9CLm1lcmdlKE9iamVjdC5jcmVhdGUobnVsbCksW1Iuc2NhbGUsdGhpcy5kZWZhdWx0c1t0XV0pOnt9fSx1cGRhdGVTY2FsZURlZmF1bHRzOmZ1bmN0aW9uKHQsZSl7dGhpcy5kZWZhdWx0cy5oYXNPd25Qcm9wZXJ0eSh0KSYmKHRoaXMuZGVmYXVsdHNbdF09Qi5leHRlbmQodGhpcy5kZWZhdWx0c1t0XSxlKSl9LGFkZFNjYWxlc1RvTGF5b3V0OmZ1bmN0aW9uKHQpe0IuZWFjaCh0LnNjYWxlcywoZnVuY3Rpb24oZSl7ZS5mdWxsV2lkdGg9ZS5vcHRpb25zLmZ1bGxXaWR0aCxlLnBvc2l0aW9uPWUub3B0aW9ucy5wb3NpdGlvbixlLndlaWdodD1lLm9wdGlvbnMud2VpZ2h0LGRlLmFkZEJveCh0LGUpfSkpfX0sRWU9Qi52YWx1ZU9yRGVmYXVsdCxNZT1CLnJ0bC5nZXRSdGxBZGFwdGVyO1IuX3NldCgiZ2xvYmFsIix7dG9vbHRpcHM6e2VuYWJsZWQ6ITAsY3VzdG9tOm51bGwsbW9kZToibmVhcmVzdCIscG9zaXRpb246ImF2ZXJhZ2UiLGludGVyc2VjdDohMCxiYWNrZ3JvdW5kQ29sb3I6InJnYmEoMCwwLDAsMC44KSIsdGl0bGVGb250U3R5bGU6ImJvbGQiLHRpdGxlU3BhY2luZzoyLHRpdGxlTWFyZ2luQm90dG9tOjYsdGl0bGVGb250Q29sb3I6IiNmZmYiLHRpdGxlQWxpZ246ImxlZnQiLGJvZHlTcGFjaW5nOjIsYm9keUZvbnRDb2xvcjoiI2ZmZiIsYm9keUFsaWduOiJsZWZ0Iixmb290ZXJGb250U3R5bGU6ImJvbGQiLGZvb3RlclNwYWNpbmc6Mixmb290ZXJNYXJnaW5Ub3A6Nixmb290ZXJGb250Q29sb3I6IiNmZmYiLGZvb3RlckFsaWduOiJsZWZ0Iix5UGFkZGluZzo2LHhQYWRkaW5nOjYsY2FyZXRQYWRkaW5nOjIsY2FyZXRTaXplOjUsY29ybmVyUmFkaXVzOjYsbXVsdGlLZXlCYWNrZ3JvdW5kOiIjZmZmIixkaXNwbGF5Q29sb3JzOiEwLGJvcmRlckNvbG9yOiJyZ2JhKDAsMCwwLDApIixib3JkZXJXaWR0aDowLGNhbGxiYWNrczp7YmVmb3JlVGl0bGU6Qi5ub29wLHRpdGxlOmZ1bmN0aW9uKHQsZSl7dmFyIG49IiIsaT1lLmxhYmVscyxyPWk/aS5sZW5ndGg6MDtpZih0Lmxlbmd0aD4wKXt2YXIgbz10WzBdO28ubGFiZWw/bj1vLmxhYmVsOm8ueExhYmVsP249by54TGFiZWw6cj4wJiZvLmluZGV4PHImJihuPWlbby5pbmRleF0pfXJldHVybiBufSxhZnRlclRpdGxlOkIubm9vcCxiZWZvcmVCb2R5OkIubm9vcCxiZWZvcmVMYWJlbDpCLm5vb3AsbGFiZWw6ZnVuY3Rpb24odCxlKXt2YXIgbj1lLmRhdGFzZXRzW3QuZGF0YXNldEluZGV4XS5sYWJlbHx8IiI7cmV0dXJuIG4mJihuKz0iOiAiKSxCLmlzTnVsbE9yVW5kZWYodC52YWx1ZSk/bis9dC55TGFiZWw6bis9dC52YWx1ZSxufSxsYWJlbENvbG9yOmZ1bmN0aW9uKHQsZSl7dmFyIG49ZS5nZXREYXRhc2V0TWV0YSh0LmRhdGFzZXRJbmRleCkuZGF0YVt0LmluZGV4XS5fdmlldztyZXR1cm57Ym9yZGVyQ29sb3I6bi5ib3JkZXJDb2xvcixiYWNrZ3JvdW5kQ29sb3I6bi5iYWNrZ3JvdW5kQ29sb3J9fSxsYWJlbFRleHRDb2xvcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vcHRpb25zLmJvZHlGb250Q29sb3J9LGFmdGVyTGFiZWw6Qi5ub29wLGFmdGVyQm9keTpCLm5vb3AsYmVmb3JlRm9vdGVyOkIubm9vcCxmb290ZXI6Qi5ub29wLGFmdGVyRm9vdGVyOkIubm9vcH19fSk7dmFyIE9lPXthdmVyYWdlOmZ1bmN0aW9uKHQpe2lmKCF0Lmxlbmd0aClyZXR1cm4hMTt2YXIgZSxuLGk9MCxyPTAsbz0wO2ZvcihlPTAsbj10Lmxlbmd0aDtlPG47KytlKXt2YXIgYT10W2VdO2lmKGEmJmEuaGFzVmFsdWUoKSl7dmFyIHM9YS50b29sdGlwUG9zaXRpb24oKTtpKz1zLngscis9cy55LCsrb319cmV0dXJue3g6aS9vLHk6ci9vfX0sbmVhcmVzdDpmdW5jdGlvbih0LGUpe3ZhciBuLGkscixvPWUueCxhPWUueSxzPU51bWJlci5QT1NJVElWRV9JTkZJTklUWTtmb3Iobj0wLGk9dC5sZW5ndGg7bjxpOysrbil7dmFyIGw9dFtuXTtpZihsJiZsLmhhc1ZhbHVlKCkpe3ZhciBjPWwuZ2V0Q2VudGVyUG9pbnQoKSx1PUIuZGlzdGFuY2VCZXR3ZWVuUG9pbnRzKGUsYyk7dTxzJiYocz11LHI9bCl9fWlmKHIpe3ZhciBkPXIudG9vbHRpcFBvc2l0aW9uKCk7bz1kLngsYT1kLnl9cmV0dXJue3g6byx5OmF9fX07ZnVuY3Rpb24gSWUodCxlKXtyZXR1cm4gZSYmKEIuaXNBcnJheShlKT9BcnJheS5wcm90b3R5cGUucHVzaC5hcHBseSh0LGUpOnQucHVzaChlKSksdH1mdW5jdGlvbiBQZSh0KXtyZXR1cm4oInN0cmluZyI9PXR5cGVvZiB0fHx0IGluc3RhbmNlb2YgU3RyaW5nKSYmdC5pbmRleE9mKCJcbiIpPi0xP3Quc3BsaXQoIlxuIik6dH1mdW5jdGlvbiBMZSh0KXt2YXIgZT1SLmdsb2JhbDtyZXR1cm57eFBhZGRpbmc6dC54UGFkZGluZyx5UGFkZGluZzp0LnlQYWRkaW5nLHhBbGlnbjp0LnhBbGlnbix5QWxpZ246dC55QWxpZ24scnRsOnQucnRsLHRleHREaXJlY3Rpb246dC50ZXh0RGlyZWN0aW9uLGJvZHlGb250Q29sb3I6dC5ib2R5Rm9udENvbG9yLF9ib2R5Rm9udEZhbWlseTpFZSh0LmJvZHlGb250RmFtaWx5LGUuZGVmYXVsdEZvbnRGYW1pbHkpLF9ib2R5Rm9udFN0eWxlOkVlKHQuYm9keUZvbnRTdHlsZSxlLmRlZmF1bHRGb250U3R5bGUpLF9ib2R5QWxpZ246dC5ib2R5QWxpZ24sYm9keUZvbnRTaXplOkVlKHQuYm9keUZvbnRTaXplLGUuZGVmYXVsdEZvbnRTaXplKSxib2R5U3BhY2luZzp0LmJvZHlTcGFjaW5nLHRpdGxlRm9udENvbG9yOnQudGl0bGVGb250Q29sb3IsX3RpdGxlRm9udEZhbWlseTpFZSh0LnRpdGxlRm9udEZhbWlseSxlLmRlZmF1bHRGb250RmFtaWx5KSxfdGl0bGVGb250U3R5bGU6RWUodC50aXRsZUZvbnRTdHlsZSxlLmRlZmF1bHRGb250U3R5bGUpLHRpdGxlRm9udFNpemU6RWUodC50aXRsZUZvbnRTaXplLGUuZGVmYXVsdEZvbnRTaXplKSxfdGl0bGVBbGlnbjp0LnRpdGxlQWxpZ24sdGl0bGVTcGFjaW5nOnQudGl0bGVTcGFjaW5nLHRpdGxlTWFyZ2luQm90dG9tOnQudGl0bGVNYXJnaW5Cb3R0b20sZm9vdGVyRm9udENvbG9yOnQuZm9vdGVyRm9udENvbG9yLF9mb290ZXJGb250RmFtaWx5OkVlKHQuZm9vdGVyRm9udEZhbWlseSxlLmRlZmF1bHRGb250RmFtaWx5KSxfZm9vdGVyRm9udFN0eWxlOkVlKHQuZm9vdGVyRm9udFN0eWxlLGUuZGVmYXVsdEZvbnRTdHlsZSksZm9vdGVyRm9udFNpemU6RWUodC5mb290ZXJGb250U2l6ZSxlLmRlZmF1bHRGb250U2l6ZSksX2Zvb3RlckFsaWduOnQuZm9vdGVyQWxpZ24sZm9vdGVyU3BhY2luZzp0LmZvb3RlclNwYWNpbmcsZm9vdGVyTWFyZ2luVG9wOnQuZm9vdGVyTWFyZ2luVG9wLGNhcmV0U2l6ZTp0LmNhcmV0U2l6ZSxjb3JuZXJSYWRpdXM6dC5jb3JuZXJSYWRpdXMsYmFja2dyb3VuZENvbG9yOnQuYmFja2dyb3VuZENvbG9yLG9wYWNpdHk6MCxsZWdlbmRDb2xvckJhY2tncm91bmQ6dC5tdWx0aUtleUJhY2tncm91bmQsZGlzcGxheUNvbG9yczp0LmRpc3BsYXlDb2xvcnMsYm9yZGVyQ29sb3I6dC5ib3JkZXJDb2xvcixib3JkZXJXaWR0aDp0LmJvcmRlcldpZHRofX1mdW5jdGlvbiBOZSh0LGUpe3JldHVybiJjZW50ZXIiPT09ZT90LngrdC53aWR0aC8yOiJyaWdodCI9PT1lP3QueCt0LndpZHRoLXQueFBhZGRpbmc6dC54K3QueFBhZGRpbmd9ZnVuY3Rpb24gRmUodCl7cmV0dXJuIEllKFtdLFBlKHQpKX12YXIgUmU9Ry5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24oKXt0aGlzLl9tb2RlbD1MZSh0aGlzLl9vcHRpb25zKSx0aGlzLl9sYXN0QWN0aXZlPVtdfSxnZXRUaXRsZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10Ll9vcHRpb25zLG49ZS5jYWxsYmFja3MsaT1uLmJlZm9yZVRpdGxlLmFwcGx5KHQsYXJndW1lbnRzKSxyPW4udGl0bGUuYXBwbHkodCxhcmd1bWVudHMpLG89bi5hZnRlclRpdGxlLmFwcGx5KHQsYXJndW1lbnRzKSxhPVtdO3JldHVybiBhPUllKGEsUGUoaSkpLGE9SWUoYSxQZShyKSksSWUoYSxQZShvKSl9LGdldEJlZm9yZUJvZHk6ZnVuY3Rpb24oKXtyZXR1cm4gRmUodGhpcy5fb3B0aW9ucy5jYWxsYmFja3MuYmVmb3JlQm9keS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSxnZXRCb2R5OmZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcyxpPW4uX29wdGlvbnMuY2FsbGJhY2tzLHI9W107cmV0dXJuIEIuZWFjaCh0LChmdW5jdGlvbih0KXt2YXIgbz17YmVmb3JlOltdLGxpbmVzOltdLGFmdGVyOltdfTtJZShvLmJlZm9yZSxQZShpLmJlZm9yZUxhYmVsLmNhbGwobix0LGUpKSksSWUoby5saW5lcyxpLmxhYmVsLmNhbGwobix0LGUpKSxJZShvLmFmdGVyLFBlKGkuYWZ0ZXJMYWJlbC5jYWxsKG4sdCxlKSkpLHIucHVzaChvKX0pKSxyfSxnZXRBZnRlckJvZHk6ZnVuY3Rpb24oKXtyZXR1cm4gRmUodGhpcy5fb3B0aW9ucy5jYWxsYmFja3MuYWZ0ZXJCb2R5LmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9LGdldEZvb3RlcjpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10Ll9vcHRpb25zLmNhbGxiYWNrcyxuPWUuYmVmb3JlRm9vdGVyLmFwcGx5KHQsYXJndW1lbnRzKSxpPWUuZm9vdGVyLmFwcGx5KHQsYXJndW1lbnRzKSxyPWUuYWZ0ZXJGb290ZXIuYXBwbHkodCxhcmd1bWVudHMpLG89W107cmV0dXJuIG89SWUobyxQZShuKSksbz1JZShvLFBlKGkpKSxJZShvLFBlKHIpKX0sdXBkYXRlOmZ1bmN0aW9uKHQpe3ZhciBlLG4saSxyLG8sYSxzLGwsYyx1LGQ9dGhpcyxoPWQuX29wdGlvbnMsZj1kLl9tb2RlbCxwPWQuX21vZGVsPUxlKGgpLGc9ZC5fYWN0aXZlLG09ZC5fZGF0YSx2PXt4QWxpZ246Zi54QWxpZ24seUFsaWduOmYueUFsaWdufSx5PXt4OmYueCx5OmYueX0sYj17d2lkdGg6Zi53aWR0aCxoZWlnaHQ6Zi5oZWlnaHR9LHc9e3g6Zi5jYXJldFgseTpmLmNhcmV0WX07aWYoZy5sZW5ndGgpe3Aub3BhY2l0eT0xO3ZhciB4PVtdLF89W107dz1PZVtoLnBvc2l0aW9uXS5jYWxsKGQsZyxkLl9ldmVudFBvc2l0aW9uKTt2YXIgUz1bXTtmb3IoZT0wLG49Zy5sZW5ndGg7ZTxuOysrZSlTLnB1c2goKHI9dm9pZCAwLG89dm9pZCAwLHZvaWQgMCx2b2lkIDAsbD12b2lkIDAsYz12b2lkIDAsdT12b2lkIDAscj0oaT1nW2VdKS5feFNjYWxlLG89aS5feVNjYWxlfHxpLl9zY2FsZSxhPWkuX2luZGV4LHM9aS5fZGF0YXNldEluZGV4LGM9KGw9aS5fY2hhcnQuZ2V0RGF0YXNldE1ldGEocykuY29udHJvbGxlcikuX2dldEluZGV4U2NhbGUoKSx1PWwuX2dldFZhbHVlU2NhbGUoKSx7eExhYmVsOnI/ci5nZXRMYWJlbEZvckluZGV4KGEscyk6IiIseUxhYmVsOm8/by5nZXRMYWJlbEZvckluZGV4KGEscyk6IiIsbGFiZWw6Yz8iIitjLmdldExhYmVsRm9ySW5kZXgoYSxzKToiIix2YWx1ZTp1PyIiK3UuZ2V0TGFiZWxGb3JJbmRleChhLHMpOiIiLGluZGV4OmEsZGF0YXNldEluZGV4OnMseDppLl9tb2RlbC54LHk6aS5fbW9kZWwueX0pKTtoLmZpbHRlciYmKFM9Uy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBoLmZpbHRlcih0LG0pfSkpKSxoLml0ZW1Tb3J0JiYoUz1TLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGguaXRlbVNvcnQodCxlLG0pfSkpKSxCLmVhY2goUywoZnVuY3Rpb24odCl7eC5wdXNoKGguY2FsbGJhY2tzLmxhYmVsQ29sb3IuY2FsbChkLHQsZC5fY2hhcnQpKSxfLnB1c2goaC5jYWxsYmFja3MubGFiZWxUZXh0Q29sb3IuY2FsbChkLHQsZC5fY2hhcnQpKX0pKSxwLnRpdGxlPWQuZ2V0VGl0bGUoUyxtKSxwLmJlZm9yZUJvZHk9ZC5nZXRCZWZvcmVCb2R5KFMsbSkscC5ib2R5PWQuZ2V0Qm9keShTLG0pLHAuYWZ0ZXJCb2R5PWQuZ2V0QWZ0ZXJCb2R5KFMsbSkscC5mb290ZXI9ZC5nZXRGb290ZXIoUyxtKSxwLng9dy54LHAueT13LnkscC5jYXJldFBhZGRpbmc9aC5jYXJldFBhZGRpbmcscC5sYWJlbENvbG9ycz14LHAubGFiZWxUZXh0Q29sb3JzPV8scC5kYXRhUG9pbnRzPVMseT1mdW5jdGlvbih0LGUsbixpKXt2YXIgcj10Lngsbz10LnksYT10LmNhcmV0U2l6ZSxzPXQuY2FyZXRQYWRkaW5nLGw9dC5jb3JuZXJSYWRpdXMsYz1uLnhBbGlnbix1PW4ueUFsaWduLGQ9YStzLGg9bCtzO3JldHVybiJyaWdodCI9PT1jP3ItPWUud2lkdGg6ImNlbnRlciI9PT1jJiYoKHItPWUud2lkdGgvMikrZS53aWR0aD5pLndpZHRoJiYocj1pLndpZHRoLWUud2lkdGgpLHI8MCYmKHI9MCkpLCJ0b3AiPT09dT9vKz1kOm8tPSJib3R0b20iPT09dT9lLmhlaWdodCtkOmUuaGVpZ2h0LzIsImNlbnRlciI9PT11PyJsZWZ0Ij09PWM/cis9ZDoicmlnaHQiPT09YyYmKHItPWQpOiJsZWZ0Ij09PWM/ci09aDoicmlnaHQiPT09YyYmKHIrPWgpLHt4OnIseTpvfX0ocCxiPWZ1bmN0aW9uKHQsZSl7dmFyIG49dC5fY2hhcnQuY3R4LGk9MiplLnlQYWRkaW5nLHI9MCxvPWUuYm9keSxhPW8ucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2UuYmVmb3JlLmxlbmd0aCtlLmxpbmVzLmxlbmd0aCtlLmFmdGVyLmxlbmd0aH0pLDApO2ErPWUuYmVmb3JlQm9keS5sZW5ndGgrZS5hZnRlckJvZHkubGVuZ3RoO3ZhciBzPWUudGl0bGUubGVuZ3RoLGw9ZS5mb290ZXIubGVuZ3RoLGM9ZS50aXRsZUZvbnRTaXplLHU9ZS5ib2R5Rm9udFNpemUsZD1lLmZvb3RlckZvbnRTaXplO2krPXMqYyxpKz1zPyhzLTEpKmUudGl0bGVTcGFjaW5nOjAsaSs9cz9lLnRpdGxlTWFyZ2luQm90dG9tOjAsaSs9YSp1LGkrPWE/KGEtMSkqZS5ib2R5U3BhY2luZzowLGkrPWw/ZS5mb290ZXJNYXJnaW5Ub3A6MCxpKz1sKmQsaSs9bD8obC0xKSplLmZvb3RlclNwYWNpbmc6MDt2YXIgaD0wLGY9ZnVuY3Rpb24odCl7cj1NYXRoLm1heChyLG4ubWVhc3VyZVRleHQodCkud2lkdGgraCl9O3JldHVybiBuLmZvbnQ9Qi5mb250U3RyaW5nKGMsZS5fdGl0bGVGb250U3R5bGUsZS5fdGl0bGVGb250RmFtaWx5KSxCLmVhY2goZS50aXRsZSxmKSxuLmZvbnQ9Qi5mb250U3RyaW5nKHUsZS5fYm9keUZvbnRTdHlsZSxlLl9ib2R5Rm9udEZhbWlseSksQi5lYWNoKGUuYmVmb3JlQm9keS5jb25jYXQoZS5hZnRlckJvZHkpLGYpLGg9ZS5kaXNwbGF5Q29sb3JzP3UrMjowLEIuZWFjaChvLChmdW5jdGlvbih0KXtCLmVhY2godC5iZWZvcmUsZiksQi5lYWNoKHQubGluZXMsZiksQi5lYWNoKHQuYWZ0ZXIsZil9KSksaD0wLG4uZm9udD1CLmZvbnRTdHJpbmcoZCxlLl9mb290ZXJGb250U3R5bGUsZS5fZm9vdGVyRm9udEZhbWlseSksQi5lYWNoKGUuZm9vdGVyLGYpLHt3aWR0aDpyKz0yKmUueFBhZGRpbmcsaGVpZ2h0Oml9fSh0aGlzLHApLHY9ZnVuY3Rpb24odCxlKXt2YXIgbixpLHIsbyxhLHM9dC5fbW9kZWwsbD10Ll9jaGFydCxjPXQuX2NoYXJ0LmNoYXJ0QXJlYSx1PSJjZW50ZXIiLGQ9ImNlbnRlciI7cy55PGUuaGVpZ2h0P2Q9InRvcCI6cy55PmwuaGVpZ2h0LWUuaGVpZ2h0JiYoZD0iYm90dG9tIik7dmFyIGg9KGMubGVmdCtjLnJpZ2h0KS8yLGY9KGMudG9wK2MuYm90dG9tKS8yOyJjZW50ZXIiPT09ZD8obj1mdW5jdGlvbih0KXtyZXR1cm4gdDw9aH0saT1mdW5jdGlvbih0KXtyZXR1cm4gdD5ofSk6KG49ZnVuY3Rpb24odCl7cmV0dXJuIHQ8PWUud2lkdGgvMn0saT1mdW5jdGlvbih0KXtyZXR1cm4gdD49bC53aWR0aC1lLndpZHRoLzJ9KSxyPWZ1bmN0aW9uKHQpe3JldHVybiB0K2Uud2lkdGgrcy5jYXJldFNpemUrcy5jYXJldFBhZGRpbmc+bC53aWR0aH0sbz1mdW5jdGlvbih0KXtyZXR1cm4gdC1lLndpZHRoLXMuY2FyZXRTaXplLXMuY2FyZXRQYWRkaW5nPDB9LGE9ZnVuY3Rpb24odCl7cmV0dXJuIHQ8PWY/InRvcCI6ImJvdHRvbSJ9LG4ocy54KT8odT0ibGVmdCIscihzLngpJiYodT0iY2VudGVyIixkPWEocy55KSkpOmkocy54KSYmKHU9InJpZ2h0IixvKHMueCkmJih1PSJjZW50ZXIiLGQ9YShzLnkpKSk7dmFyIHA9dC5fb3B0aW9ucztyZXR1cm57eEFsaWduOnAueEFsaWduP3AueEFsaWduOnUseUFsaWduOnAueUFsaWduP3AueUFsaWduOmR9fSh0aGlzLGIpLGQuX2NoYXJ0KX1lbHNlIHAub3BhY2l0eT0wO3JldHVybiBwLnhBbGlnbj12LnhBbGlnbixwLnlBbGlnbj12LnlBbGlnbixwLng9eS54LHAueT15LnkscC53aWR0aD1iLndpZHRoLHAuaGVpZ2h0PWIuaGVpZ2h0LHAuY2FyZXRYPXcueCxwLmNhcmV0WT13LnksZC5fbW9kZWw9cCx0JiZoLmN1c3RvbSYmaC5jdXN0b20uY2FsbChkLHApLGR9LGRyYXdDYXJldDpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuX2NoYXJ0LmN0eCxpPXRoaXMuX3ZpZXcscj10aGlzLmdldENhcmV0UG9zaXRpb24odCxlLGkpO24ubGluZVRvKHIueDEsci55MSksbi5saW5lVG8oci54MixyLnkyKSxuLmxpbmVUbyhyLngzLHIueTMpfSxnZXRDYXJldFBvc2l0aW9uOmZ1bmN0aW9uKHQsZSxuKXt2YXIgaSxyLG8sYSxzLGwsYz1uLmNhcmV0U2l6ZSx1PW4uY29ybmVyUmFkaXVzLGQ9bi54QWxpZ24saD1uLnlBbGlnbixmPXQueCxwPXQueSxnPWUud2lkdGgsbT1lLmhlaWdodDtpZigiY2VudGVyIj09PWgpcz1wK20vMiwibGVmdCI9PT1kPyhyPShpPWYpLWMsbz1pLGE9cytjLGw9cy1jKToocj0oaT1mK2cpK2Msbz1pLGE9cy1jLGw9cytjKTtlbHNlIGlmKCJsZWZ0Ij09PWQ/KGk9KHI9Zit1K2MpLWMsbz1yK2MpOiJyaWdodCI9PT1kPyhpPShyPWYrZy11LWMpLWMsbz1yK2MpOihpPShyPW4uY2FyZXRYKS1jLG89citjKSwidG9wIj09PWgpcz0oYT1wKS1jLGw9YTtlbHNle3M9KGE9cCttKStjLGw9YTt2YXIgdj1vO289aSxpPXZ9cmV0dXJue3gxOmkseDI6cix4MzpvLHkxOmEseTI6cyx5MzpsfX0sZHJhd1RpdGxlOmZ1bmN0aW9uKHQsZSxuKXt2YXIgaSxyLG8sYT1lLnRpdGxlLHM9YS5sZW5ndGg7aWYocyl7dmFyIGw9TWUoZS5ydGwsZS54LGUud2lkdGgpO2Zvcih0Lng9TmUoZSxlLl90aXRsZUFsaWduKSxuLnRleHRBbGlnbj1sLnRleHRBbGlnbihlLl90aXRsZUFsaWduKSxuLnRleHRCYXNlbGluZT0ibWlkZGxlIixpPWUudGl0bGVGb250U2l6ZSxyPWUudGl0bGVTcGFjaW5nLG4uZmlsbFN0eWxlPWUudGl0bGVGb250Q29sb3Isbi5mb250PUIuZm9udFN0cmluZyhpLGUuX3RpdGxlRm9udFN0eWxlLGUuX3RpdGxlRm9udEZhbWlseSksbz0wO288czsrK28pbi5maWxsVGV4dChhW29dLGwueCh0LngpLHQueStpLzIpLHQueSs9aStyLG8rMT09PXMmJih0LnkrPWUudGl0bGVNYXJnaW5Cb3R0b20tcil9fSxkcmF3Qm9keTpmdW5jdGlvbih0LGUsbil7dmFyIGkscixvLGEscyxsLGMsdSxkPWUuYm9keUZvbnRTaXplLGg9ZS5ib2R5U3BhY2luZyxmPWUuX2JvZHlBbGlnbixwPWUuYm9keSxnPWUuZGlzcGxheUNvbG9ycyxtPTAsdj1nP05lKGUsImxlZnQiKTowLHk9TWUoZS5ydGwsZS54LGUud2lkdGgpLGI9ZnVuY3Rpb24oZSl7bi5maWxsVGV4dChlLHkueCh0LngrbSksdC55K2QvMiksdC55Kz1kK2h9LHc9eS50ZXh0QWxpZ24oZik7Zm9yKG4udGV4dEFsaWduPWYsbi50ZXh0QmFzZWxpbmU9Im1pZGRsZSIsbi5mb250PUIuZm9udFN0cmluZyhkLGUuX2JvZHlGb250U3R5bGUsZS5fYm9keUZvbnRGYW1pbHkpLHQueD1OZShlLHcpLG4uZmlsbFN0eWxlPWUuYm9keUZvbnRDb2xvcixCLmVhY2goZS5iZWZvcmVCb2R5LGIpLG09ZyYmInJpZ2h0IiE9PXc/ImNlbnRlciI9PT1mP2QvMisxOmQrMjowLHM9MCxjPXAubGVuZ3RoO3M8YzsrK3Mpe2ZvcihpPXBbc10scj1lLmxhYmVsVGV4dENvbG9yc1tzXSxvPWUubGFiZWxDb2xvcnNbc10sbi5maWxsU3R5bGU9cixCLmVhY2goaS5iZWZvcmUsYiksbD0wLHU9KGE9aS5saW5lcykubGVuZ3RoO2w8dTsrK2wpe2lmKGcpe3ZhciB4PXkueCh2KTtuLmZpbGxTdHlsZT1lLmxlZ2VuZENvbG9yQmFja2dyb3VuZCxuLmZpbGxSZWN0KHkubGVmdEZvckx0cih4LGQpLHQueSxkLGQpLG4ubGluZVdpZHRoPTEsbi5zdHJva2VTdHlsZT1vLmJvcmRlckNvbG9yLG4uc3Ryb2tlUmVjdCh5LmxlZnRGb3JMdHIoeCxkKSx0LnksZCxkKSxuLmZpbGxTdHlsZT1vLmJhY2tncm91bmRDb2xvcixuLmZpbGxSZWN0KHkubGVmdEZvckx0cih5LnhQbHVzKHgsMSksZC0yKSx0LnkrMSxkLTIsZC0yKSxuLmZpbGxTdHlsZT1yfWIoYVtsXSl9Qi5lYWNoKGkuYWZ0ZXIsYil9bT0wLEIuZWFjaChlLmFmdGVyQm9keSxiKSx0LnktPWh9LGRyYXdGb290ZXI6ZnVuY3Rpb24odCxlLG4pe3ZhciBpLHIsbz1lLmZvb3RlcixhPW8ubGVuZ3RoO2lmKGEpe3ZhciBzPU1lKGUucnRsLGUueCxlLndpZHRoKTtmb3IodC54PU5lKGUsZS5fZm9vdGVyQWxpZ24pLHQueSs9ZS5mb290ZXJNYXJnaW5Ub3Asbi50ZXh0QWxpZ249cy50ZXh0QWxpZ24oZS5fZm9vdGVyQWxpZ24pLG4udGV4dEJhc2VsaW5lPSJtaWRkbGUiLGk9ZS5mb290ZXJGb250U2l6ZSxuLmZpbGxTdHlsZT1lLmZvb3RlckZvbnRDb2xvcixuLmZvbnQ9Qi5mb250U3RyaW5nKGksZS5fZm9vdGVyRm9udFN0eWxlLGUuX2Zvb3RlckZvbnRGYW1pbHkpLHI9MDtyPGE7KytyKW4uZmlsbFRleHQob1tyXSxzLngodC54KSx0LnkraS8yKSx0LnkrPWkrZS5mb290ZXJTcGFjaW5nfX0sZHJhd0JhY2tncm91bmQ6ZnVuY3Rpb24odCxlLG4saSl7bi5maWxsU3R5bGU9ZS5iYWNrZ3JvdW5kQ29sb3Isbi5zdHJva2VTdHlsZT1lLmJvcmRlckNvbG9yLG4ubGluZVdpZHRoPWUuYm9yZGVyV2lkdGg7dmFyIHI9ZS54QWxpZ24sbz1lLnlBbGlnbixhPXQueCxzPXQueSxsPWkud2lkdGgsYz1pLmhlaWdodCx1PWUuY29ybmVyUmFkaXVzO24uYmVnaW5QYXRoKCksbi5tb3ZlVG8oYSt1LHMpLCJ0b3AiPT09byYmdGhpcy5kcmF3Q2FyZXQodCxpKSxuLmxpbmVUbyhhK2wtdSxzKSxuLnF1YWRyYXRpY0N1cnZlVG8oYStsLHMsYStsLHMrdSksImNlbnRlciI9PT1vJiYicmlnaHQiPT09ciYmdGhpcy5kcmF3Q2FyZXQodCxpKSxuLmxpbmVUbyhhK2wscytjLXUpLG4ucXVhZHJhdGljQ3VydmVUbyhhK2wscytjLGErbC11LHMrYyksImJvdHRvbSI9PT1vJiZ0aGlzLmRyYXdDYXJldCh0LGkpLG4ubGluZVRvKGErdSxzK2MpLG4ucXVhZHJhdGljQ3VydmVUbyhhLHMrYyxhLHMrYy11KSwiY2VudGVyIj09PW8mJiJsZWZ0Ij09PXImJnRoaXMuZHJhd0NhcmV0KHQsaSksbi5saW5lVG8oYSxzK3UpLG4ucXVhZHJhdGljQ3VydmVUbyhhLHMsYSt1LHMpLG4uY2xvc2VQYXRoKCksbi5maWxsKCksZS5ib3JkZXJXaWR0aD4wJiZuLnN0cm9rZSgpfSxkcmF3OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fY2hhcnQuY3R4LGU9dGhpcy5fdmlldztpZigwIT09ZS5vcGFjaXR5KXt2YXIgbj17d2lkdGg6ZS53aWR0aCxoZWlnaHQ6ZS5oZWlnaHR9LGk9e3g6ZS54LHk6ZS55fSxyPU1hdGguYWJzKGUub3BhY2l0eTwuMDAxKT8wOmUub3BhY2l0eSxvPWUudGl0bGUubGVuZ3RofHxlLmJlZm9yZUJvZHkubGVuZ3RofHxlLmJvZHkubGVuZ3RofHxlLmFmdGVyQm9keS5sZW5ndGh8fGUuZm9vdGVyLmxlbmd0aDt0aGlzLl9vcHRpb25zLmVuYWJsZWQmJm8mJih0LnNhdmUoKSx0Lmdsb2JhbEFscGhhPXIsdGhpcy5kcmF3QmFja2dyb3VuZChpLGUsdCxuKSxpLnkrPWUueVBhZGRpbmcsQi5ydGwub3ZlcnJpZGVUZXh0RGlyZWN0aW9uKHQsZS50ZXh0RGlyZWN0aW9uKSx0aGlzLmRyYXdUaXRsZShpLGUsdCksdGhpcy5kcmF3Qm9keShpLGUsdCksdGhpcy5kcmF3Rm9vdGVyKGksZSx0KSxCLnJ0bC5yZXN0b3JlVGV4dERpcmVjdGlvbih0LGUudGV4dERpcmVjdGlvbiksdC5yZXN0b3JlKCkpfX0saGFuZGxlRXZlbnQ6ZnVuY3Rpb24odCl7dmFyIGUsbj10aGlzLGk9bi5fb3B0aW9ucztyZXR1cm4gbi5fbGFzdEFjdGl2ZT1uLl9sYXN0QWN0aXZlfHxbXSwibW91c2VvdXQiPT09dC50eXBlP24uX2FjdGl2ZT1bXToobi5fYWN0aXZlPW4uX2NoYXJ0LmdldEVsZW1lbnRzQXRFdmVudEZvck1vZGUodCxpLm1vZGUsaSksaS5yZXZlcnNlJiZuLl9hY3RpdmUucmV2ZXJzZSgpKSwoZT0hQi5hcnJheUVxdWFscyhuLl9hY3RpdmUsbi5fbGFzdEFjdGl2ZSkpJiYobi5fbGFzdEFjdGl2ZT1uLl9hY3RpdmUsKGkuZW5hYmxlZHx8aS5jdXN0b20pJiYobi5fZXZlbnRQb3NpdGlvbj17eDp0LngseTp0Lnl9LG4udXBkYXRlKCEwKSxuLnBpdm90KCkpKSxlfX0pLGplPU9lLCRlPVJlOyRlLnBvc2l0aW9uZXJzPWplO3ZhciB6ZT1CLnZhbHVlT3JEZWZhdWx0O2Z1bmN0aW9uIEhlKCl7cmV0dXJuIEIubWVyZ2UoT2JqZWN0LmNyZWF0ZShudWxsKSxbXS5zbGljZS5jYWxsKGFyZ3VtZW50cykse21lcmdlcjpmdW5jdGlvbih0LGUsbixpKXtpZigieEF4ZXMiPT09dHx8InlBeGVzIj09PXQpe3ZhciByLG8sYSxzPW5bdF0ubGVuZ3RoO2ZvcihlW3RdfHwoZVt0XT1bXSkscj0wO3I8czsrK3IpYT1uW3RdW3JdLG89emUoYS50eXBlLCJ4QXhlcyI9PT10PyJjYXRlZ29yeSI6ImxpbmVhciIpLHI+PWVbdF0ubGVuZ3RoJiZlW3RdLnB1c2goe30pLCFlW3RdW3JdLnR5cGV8fGEudHlwZSYmYS50eXBlIT09ZVt0XVtyXS50eXBlP0IubWVyZ2UoZVt0XVtyXSxbRGUuZ2V0U2NhbGVEZWZhdWx0cyhvKSxhXSk6Qi5tZXJnZShlW3RdW3JdLGEpfWVsc2UgQi5fbWVyZ2VyKHQsZSxuLGkpfX0pfWZ1bmN0aW9uIEJlKCl7cmV0dXJuIEIubWVyZ2UoT2JqZWN0LmNyZWF0ZShudWxsKSxbXS5zbGljZS5jYWxsKGFyZ3VtZW50cykse21lcmdlcjpmdW5jdGlvbih0LGUsbixpKXt2YXIgcj1lW3RdfHxPYmplY3QuY3JlYXRlKG51bGwpLG89blt0XTsic2NhbGVzIj09PXQ/ZVt0XT1IZShyLG8pOiJzY2FsZSI9PT10P2VbdF09Qi5tZXJnZShyLFtEZS5nZXRTY2FsZURlZmF1bHRzKG8udHlwZSksb10pOkIuX21lcmdlcih0LGUsbixpKX19KX1mdW5jdGlvbiBxZSh0KXt2YXIgZT10Lm9wdGlvbnM7Qi5lYWNoKHQuc2NhbGVzLChmdW5jdGlvbihlKXtkZS5yZW1vdmVCb3godCxlKX0pKSxlPUJlKFIuZ2xvYmFsLFJbdC5jb25maWcudHlwZV0sZSksdC5vcHRpb25zPXQuY29uZmlnLm9wdGlvbnM9ZSx0LmVuc3VyZVNjYWxlc0hhdmVJRHMoKSx0LmJ1aWxkT3JVcGRhdGVTY2FsZXMoKSx0LnRvb2x0aXAuX29wdGlvbnM9ZS50b29sdGlwcyx0LnRvb2x0aXAuaW5pdGlhbGl6ZSgpfWZ1bmN0aW9uIFdlKHQsZSxuKXt2YXIgaSxyPWZ1bmN0aW9uKHQpe3JldHVybiB0LmlkPT09aX07ZG97aT1lK24rK313aGlsZShCLmZpbmRJbmRleCh0LHIpPj0wKTtyZXR1cm4gaX1mdW5jdGlvbiBVZSh0KXtyZXR1cm4idG9wIj09PXR8fCJib3R0b20iPT09dH1mdW5jdGlvbiBWZSh0LGUpe3JldHVybiBmdW5jdGlvbihuLGkpe3JldHVybiBuW3RdPT09aVt0XT9uW2VdLWlbZV06blt0XS1pW3RdfX1SLl9zZXQoImdsb2JhbCIse2VsZW1lbnRzOnt9LGV2ZW50czpbIm1vdXNlbW92ZSIsIm1vdXNlb3V0IiwiY2xpY2siLCJ0b3VjaHN0YXJ0IiwidG91Y2htb3ZlIl0saG92ZXI6e29uSG92ZXI6bnVsbCxtb2RlOiJuZWFyZXN0IixpbnRlcnNlY3Q6ITAsYW5pbWF0aW9uRHVyYXRpb246NDAwfSxvbkNsaWNrOm51bGwsbWFpbnRhaW5Bc3BlY3RSYXRpbzohMCxyZXNwb25zaXZlOiEwLHJlc3BvbnNpdmVBbmltYXRpb25EdXJhdGlvbjowfSk7dmFyIFllPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuY29uc3RydWN0KHQsZSksdGhpc307Qi5leHRlbmQoWWUucHJvdG90eXBlLHtjb25zdHJ1Y3Q6ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzO2U9ZnVuY3Rpb24odCl7dmFyIGU9KHQ9dHx8T2JqZWN0LmNyZWF0ZShudWxsKSkuZGF0YT10LmRhdGF8fHt9O3JldHVybiBlLmRhdGFzZXRzPWUuZGF0YXNldHN8fFtdLGUubGFiZWxzPWUubGFiZWxzfHxbXSx0Lm9wdGlvbnM9QmUoUi5nbG9iYWwsUlt0LnR5cGVdLHQub3B0aW9uc3x8e30pLHR9KGUpO3ZhciBpPVRlLmFjcXVpcmVDb250ZXh0KHQsZSkscj1pJiZpLmNhbnZhcyxvPXImJnIuaGVpZ2h0LGE9ciYmci53aWR0aDtuLmlkPUIudWlkKCksbi5jdHg9aSxuLmNhbnZhcz1yLG4uY29uZmlnPWUsbi53aWR0aD1hLG4uaGVpZ2h0PW8sbi5hc3BlY3RSYXRpbz1vP2EvbzpudWxsLG4ub3B0aW9ucz1lLm9wdGlvbnMsbi5fYnVmZmVyZWRSZW5kZXI9ITEsbi5fbGF5ZXJzPVtdLG4uY2hhcnQ9bixuLmNvbnRyb2xsZXI9bixZZS5pbnN0YW5jZXNbbi5pZF09bixPYmplY3QuZGVmaW5lUHJvcGVydHkobiwiZGF0YSIse2dldDpmdW5jdGlvbigpe3JldHVybiBuLmNvbmZpZy5kYXRhfSxzZXQ6ZnVuY3Rpb24odCl7bi5jb25maWcuZGF0YT10fX0pLGkmJnI/KG4uaW5pdGlhbGl6ZSgpLG4udXBkYXRlKCkpOmNvbnNvbGUuZXJyb3IoIkZhaWxlZCB0byBjcmVhdGUgY2hhcnQ6IGNhbid0IGFjcXVpcmUgY29udGV4dCBmcm9tIHRoZSBnaXZlbiBpdGVtIil9LGluaXRpYWxpemU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybiBBZS5ub3RpZnkodCwiYmVmb3JlSW5pdCIpLEIucmV0aW5hU2NhbGUodCx0Lm9wdGlvbnMuZGV2aWNlUGl4ZWxSYXRpbyksdC5iaW5kRXZlbnRzKCksdC5vcHRpb25zLnJlc3BvbnNpdmUmJnQucmVzaXplKCEwKSx0LmluaXRUb29sVGlwKCksQWUubm90aWZ5KHQsImFmdGVySW5pdCIpLHR9LGNsZWFyOmZ1bmN0aW9uKCl7cmV0dXJuIEIuY2FudmFzLmNsZWFyKHRoaXMpLHRoaXN9LHN0b3A6ZnVuY3Rpb24oKXtyZXR1cm4gSy5jYW5jZWxBbmltYXRpb24odGhpcyksdGhpc30scmVzaXplOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj1lLm9wdGlvbnMsaT1lLmNhbnZhcyxyPW4ubWFpbnRhaW5Bc3BlY3RSYXRpbyYmZS5hc3BlY3RSYXRpb3x8bnVsbCxvPU1hdGgubWF4KDAsTWF0aC5mbG9vcihCLmdldE1heGltdW1XaWR0aChpKSkpLGE9TWF0aC5tYXgoMCxNYXRoLmZsb29yKHI/by9yOkIuZ2V0TWF4aW11bUhlaWdodChpKSkpO2lmKChlLndpZHRoIT09b3x8ZS5oZWlnaHQhPT1hKSYmKGkud2lkdGg9ZS53aWR0aD1vLGkuaGVpZ2h0PWUuaGVpZ2h0PWEsaS5zdHlsZS53aWR0aD1vKyJweCIsaS5zdHlsZS5oZWlnaHQ9YSsicHgiLEIucmV0aW5hU2NhbGUoZSxuLmRldmljZVBpeGVsUmF0aW8pLCF0KSl7dmFyIHM9e3dpZHRoOm8saGVpZ2h0OmF9O0FlLm5vdGlmeShlLCJyZXNpemUiLFtzXSksbi5vblJlc2l6ZSYmbi5vblJlc2l6ZShlLHMpLGUuc3RvcCgpLGUudXBkYXRlKHtkdXJhdGlvbjpuLnJlc3BvbnNpdmVBbmltYXRpb25EdXJhdGlvbn0pfX0sZW5zdXJlU2NhbGVzSGF2ZUlEczpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3B0aW9ucyxlPXQuc2NhbGVzfHx7fSxuPXQuc2NhbGU7Qi5lYWNoKGUueEF4ZXMsKGZ1bmN0aW9uKHQsbil7dC5pZHx8KHQuaWQ9V2UoZS54QXhlcywieC1heGlzLSIsbikpfSkpLEIuZWFjaChlLnlBeGVzLChmdW5jdGlvbih0LG4pe3QuaWR8fCh0LmlkPVdlKGUueUF4ZXMsInktYXhpcy0iLG4pKX0pKSxuJiYobi5pZD1uLmlkfHwic2NhbGUiKX0sYnVpbGRPclVwZGF0ZVNjYWxlczpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10Lm9wdGlvbnMsbj10LnNjYWxlc3x8e30saT1bXSxyPU9iamVjdC5rZXlzKG4pLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdFtlXT0hMSx0fSkse30pO2Uuc2NhbGVzJiYoaT1pLmNvbmNhdCgoZS5zY2FsZXMueEF4ZXN8fFtdKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybntvcHRpb25zOnQsZHR5cGU6ImNhdGVnb3J5IixkcG9zaXRpb246ImJvdHRvbSJ9fSkpLChlLnNjYWxlcy55QXhlc3x8W10pLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJue29wdGlvbnM6dCxkdHlwZToibGluZWFyIixkcG9zaXRpb246ImxlZnQifX0pKSkpLGUuc2NhbGUmJmkucHVzaCh7b3B0aW9uczplLnNjYWxlLGR0eXBlOiJyYWRpYWxMaW5lYXIiLGlzRGVmYXVsdDohMCxkcG9zaXRpb246ImNoYXJ0QXJlYSJ9KSxCLmVhY2goaSwoZnVuY3Rpb24oZSl7dmFyIGk9ZS5vcHRpb25zLG89aS5pZCxhPXplKGkudHlwZSxlLmR0eXBlKTtVZShpLnBvc2l0aW9uKSE9PVVlKGUuZHBvc2l0aW9uKSYmKGkucG9zaXRpb249ZS5kcG9zaXRpb24pLHJbb109ITA7dmFyIHM9bnVsbDtpZihvIGluIG4mJm5bb10udHlwZT09PWEpKHM9bltvXSkub3B0aW9ucz1pLHMuY3R4PXQuY3R4LHMuY2hhcnQ9dDtlbHNle3ZhciBsPURlLmdldFNjYWxlQ29uc3RydWN0b3IoYSk7aWYoIWwpcmV0dXJuO3M9bmV3IGwoe2lkOm8sdHlwZTphLG9wdGlvbnM6aSxjdHg6dC5jdHgsY2hhcnQ6dH0pLG5bcy5pZF09c31zLm1lcmdlVGlja3NPcHRpb25zKCksZS5pc0RlZmF1bHQmJih0LnNjYWxlPXMpfSkpLEIuZWFjaChyLChmdW5jdGlvbih0LGUpe3R8fGRlbGV0ZSBuW2VdfSkpLHQuc2NhbGVzPW4sRGUuYWRkU2NhbGVzVG9MYXlvdXQodGhpcyl9LGJ1aWxkT3JVcGRhdGVDb250cm9sbGVyczpmdW5jdGlvbigpe3ZhciB0LGUsbj10aGlzLGk9W10scj1uLmRhdGEuZGF0YXNldHM7Zm9yKHQ9MCxlPXIubGVuZ3RoO3Q8ZTt0Kyspe3ZhciBvPXJbdF0sYT1uLmdldERhdGFzZXRNZXRhKHQpLHM9by50eXBlfHxuLmNvbmZpZy50eXBlO2lmKGEudHlwZSYmYS50eXBlIT09cyYmKG4uZGVzdHJveURhdGFzZXRNZXRhKHQpLGE9bi5nZXREYXRhc2V0TWV0YSh0KSksYS50eXBlPXMsYS5vcmRlcj1vLm9yZGVyfHwwLGEuaW5kZXg9dCxhLmNvbnRyb2xsZXIpYS5jb250cm9sbGVyLnVwZGF0ZUluZGV4KHQpLGEuY29udHJvbGxlci5saW5rU2NhbGVzKCk7ZWxzZXt2YXIgbD1HdFthLnR5cGVdO2lmKHZvaWQgMD09PWwpdGhyb3cgbmV3IEVycm9yKCciJythLnR5cGUrJyIgaXMgbm90IGEgY2hhcnQgdHlwZS4nKTthLmNvbnRyb2xsZXI9bmV3IGwobix0KSxpLnB1c2goYS5jb250cm9sbGVyKX19cmV0dXJuIGl9LHJlc2V0RWxlbWVudHM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO0IuZWFjaCh0LmRhdGEuZGF0YXNldHMsKGZ1bmN0aW9uKGUsbil7dC5nZXREYXRhc2V0TWV0YShuKS5jb250cm9sbGVyLnJlc2V0KCl9KSx0KX0scmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLnJlc2V0RWxlbWVudHMoKSx0aGlzLnRvb2x0aXAuaW5pdGlhbGl6ZSgpfSx1cGRhdGU6ZnVuY3Rpb24odCl7dmFyIGUsbixpPXRoaXM7aWYodCYmIm9iamVjdCI9PXR5cGVvZiB0fHwodD17ZHVyYXRpb246dCxsYXp5OmFyZ3VtZW50c1sxXX0pLHFlKGkpLEFlLl9pbnZhbGlkYXRlKGkpLCExIT09QWUubm90aWZ5KGksImJlZm9yZVVwZGF0ZSIpKXtpLnRvb2x0aXAuX2RhdGE9aS5kYXRhO3ZhciByPWkuYnVpbGRPclVwZGF0ZUNvbnRyb2xsZXJzKCk7Zm9yKGU9MCxuPWkuZGF0YS5kYXRhc2V0cy5sZW5ndGg7ZTxuO2UrKylpLmdldERhdGFzZXRNZXRhKGUpLmNvbnRyb2xsZXIuYnVpbGRPclVwZGF0ZUVsZW1lbnRzKCk7aS51cGRhdGVMYXlvdXQoKSxpLm9wdGlvbnMuYW5pbWF0aW9uJiZpLm9wdGlvbnMuYW5pbWF0aW9uLmR1cmF0aW9uJiZCLmVhY2gociwoZnVuY3Rpb24odCl7dC5yZXNldCgpfSkpLGkudXBkYXRlRGF0YXNldHMoKSxpLnRvb2x0aXAuaW5pdGlhbGl6ZSgpLGkubGFzdEFjdGl2ZT1bXSxBZS5ub3RpZnkoaSwiYWZ0ZXJVcGRhdGUiKSxpLl9sYXllcnMuc29ydChWZSgieiIsIl9pZHgiKSksaS5fYnVmZmVyZWRSZW5kZXI/aS5fYnVmZmVyZWRSZXF1ZXN0PXtkdXJhdGlvbjp0LmR1cmF0aW9uLGVhc2luZzp0LmVhc2luZyxsYXp5OnQubGF6eX06aS5yZW5kZXIodCl9fSx1cGRhdGVMYXlvdXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzOyExIT09QWUubm90aWZ5KHQsImJlZm9yZUxheW91dCIpJiYoZGUudXBkYXRlKHRoaXMsdGhpcy53aWR0aCx0aGlzLmhlaWdodCksdC5fbGF5ZXJzPVtdLEIuZWFjaCh0LmJveGVzLChmdW5jdGlvbihlKXtlLl9jb25maWd1cmUmJmUuX2NvbmZpZ3VyZSgpLHQuX2xheWVycy5wdXNoLmFwcGx5KHQuX2xheWVycyxlLl9sYXllcnMoKSl9KSx0KSx0Ll9sYXllcnMuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt0Ll9pZHg9ZX0pKSxBZS5ub3RpZnkodCwiYWZ0ZXJTY2FsZVVwZGF0ZSIpLEFlLm5vdGlmeSh0LCJhZnRlckxheW91dCIpKX0sdXBkYXRlRGF0YXNldHM6ZnVuY3Rpb24oKXtpZighMSE9PUFlLm5vdGlmeSh0aGlzLCJiZWZvcmVEYXRhc2V0c1VwZGF0ZSIpKXtmb3IodmFyIHQ9MCxlPXRoaXMuZGF0YS5kYXRhc2V0cy5sZW5ndGg7dDxlOysrdCl0aGlzLnVwZGF0ZURhdGFzZXQodCk7QWUubm90aWZ5KHRoaXMsImFmdGVyRGF0YXNldHNVcGRhdGUiKX19LHVwZGF0ZURhdGFzZXQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXREYXRhc2V0TWV0YSh0KSxuPXttZXRhOmUsaW5kZXg6dH07ITEhPT1BZS5ub3RpZnkodGhpcywiYmVmb3JlRGF0YXNldFVwZGF0ZSIsW25dKSYmKGUuY29udHJvbGxlci5fdXBkYXRlKCksQWUubm90aWZ5KHRoaXMsImFmdGVyRGF0YXNldFVwZGF0ZSIsW25dKSl9LHJlbmRlcjpmdW5jdGlvbih0KXt2YXIgZT10aGlzO3QmJiJvYmplY3QiPT10eXBlb2YgdHx8KHQ9e2R1cmF0aW9uOnQsbGF6eTphcmd1bWVudHNbMV19KTt2YXIgbj1lLm9wdGlvbnMuYW5pbWF0aW9uLGk9emUodC5kdXJhdGlvbixuJiZuLmR1cmF0aW9uKSxyPXQubGF6eTtpZighMSE9PUFlLm5vdGlmeShlLCJiZWZvcmVSZW5kZXIiKSl7dmFyIG89ZnVuY3Rpb24odCl7QWUubm90aWZ5KGUsImFmdGVyUmVuZGVyIiksQi5jYWxsYmFjayhuJiZuLm9uQ29tcGxldGUsW3RdLGUpfTtpZihuJiZpKXt2YXIgYT1uZXcgUSh7bnVtU3RlcHM6aS8xNi42NixlYXNpbmc6dC5lYXNpbmd8fG4uZWFzaW5nLHJlbmRlcjpmdW5jdGlvbih0LGUpe3ZhciBuPUIuZWFzaW5nLmVmZmVjdHNbZS5lYXNpbmddLGk9ZS5jdXJyZW50U3RlcCxyPWkvZS5udW1TdGVwczt0LmRyYXcobihyKSxyLGkpfSxvbkFuaW1hdGlvblByb2dyZXNzOm4ub25Qcm9ncmVzcyxvbkFuaW1hdGlvbkNvbXBsZXRlOm99KTtLLmFkZEFuaW1hdGlvbihlLGEsaSxyKX1lbHNlIGUuZHJhdygpLG8obmV3IFEoe251bVN0ZXBzOjAsY2hhcnQ6ZX0pKTtyZXR1cm4gZX19LGRyYXc6ZnVuY3Rpb24odCl7dmFyIGUsbixpPXRoaXM7aWYoaS5jbGVhcigpLEIuaXNOdWxsT3JVbmRlZih0KSYmKHQ9MSksaS50cmFuc2l0aW9uKHQpLCEoaS53aWR0aDw9MHx8aS5oZWlnaHQ8PTApJiYhMSE9PUFlLm5vdGlmeShpLCJiZWZvcmVEcmF3IixbdF0pKXtmb3Iobj1pLl9sYXllcnMsZT0wO2U8bi5sZW5ndGgmJm5bZV0uejw9MDsrK2UpbltlXS5kcmF3KGkuY2hhcnRBcmVhKTtmb3IoaS5kcmF3RGF0YXNldHModCk7ZTxuLmxlbmd0aDsrK2UpbltlXS5kcmF3KGkuY2hhcnRBcmVhKTtpLl9kcmF3VG9vbHRpcCh0KSxBZS5ub3RpZnkoaSwiYWZ0ZXJEcmF3IixbdF0pfX0sdHJhbnNpdGlvbjpmdW5jdGlvbih0KXtmb3IodmFyIGU9MCxuPSh0aGlzLmRhdGEuZGF0YXNldHN8fFtdKS5sZW5ndGg7ZTxuOysrZSl0aGlzLmlzRGF0YXNldFZpc2libGUoZSkmJnRoaXMuZ2V0RGF0YXNldE1ldGEoZSkuY29udHJvbGxlci50cmFuc2l0aW9uKHQpO3RoaXMudG9vbHRpcC50cmFuc2l0aW9uKHQpfSxfZ2V0U29ydGVkRGF0YXNldE1ldGFzOmZ1bmN0aW9uKHQpe3ZhciBlLG4saT1bXTtmb3IoZT0wLG49KHRoaXMuZGF0YS5kYXRhc2V0c3x8W10pLmxlbmd0aDtlPG47KytlKXQmJiF0aGlzLmlzRGF0YXNldFZpc2libGUoZSl8fGkucHVzaCh0aGlzLmdldERhdGFzZXRNZXRhKGUpKTtyZXR1cm4gaS5zb3J0KFZlKCJvcmRlciIsImluZGV4IikpLGl9LF9nZXRTb3J0ZWRWaXNpYmxlRGF0YXNldE1ldGFzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2dldFNvcnRlZERhdGFzZXRNZXRhcyghMCl9LGRyYXdEYXRhc2V0czpmdW5jdGlvbih0KXt2YXIgZSxuO2lmKCExIT09QWUubm90aWZ5KHRoaXMsImJlZm9yZURhdGFzZXRzRHJhdyIsW3RdKSl7Zm9yKG49KGU9dGhpcy5fZ2V0U29ydGVkVmlzaWJsZURhdGFzZXRNZXRhcygpKS5sZW5ndGgtMTtuPj0wOy0tbil0aGlzLmRyYXdEYXRhc2V0KGVbbl0sdCk7QWUubm90aWZ5KHRoaXMsImFmdGVyRGF0YXNldHNEcmF3IixbdF0pfX0sZHJhd0RhdGFzZXQ6ZnVuY3Rpb24odCxlKXt2YXIgbj17bWV0YTp0LGluZGV4OnQuaW5kZXgsZWFzaW5nVmFsdWU6ZX07ITEhPT1BZS5ub3RpZnkodGhpcywiYmVmb3JlRGF0YXNldERyYXciLFtuXSkmJih0LmNvbnRyb2xsZXIuZHJhdyhlKSxBZS5ub3RpZnkodGhpcywiYWZ0ZXJEYXRhc2V0RHJhdyIsW25dKSl9LF9kcmF3VG9vbHRpcDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnRvb2x0aXAsbj17dG9vbHRpcDplLGVhc2luZ1ZhbHVlOnR9OyExIT09QWUubm90aWZ5KHRoaXMsImJlZm9yZVRvb2x0aXBEcmF3Iixbbl0pJiYoZS5kcmF3KCksQWUubm90aWZ5KHRoaXMsImFmdGVyVG9vbHRpcERyYXciLFtuXSkpfSxnZXRFbGVtZW50QXRFdmVudDpmdW5jdGlvbih0KXtyZXR1cm4gZWUubW9kZXMuc2luZ2xlKHRoaXMsdCl9LGdldEVsZW1lbnRzQXRFdmVudDpmdW5jdGlvbih0KXtyZXR1cm4gZWUubW9kZXMubGFiZWwodGhpcyx0LHtpbnRlcnNlY3Q6ITB9KX0sZ2V0RWxlbWVudHNBdFhBeGlzOmZ1bmN0aW9uKHQpe3JldHVybiBlZS5tb2Rlc1sieC1heGlzIl0odGhpcyx0LHtpbnRlcnNlY3Q6ITB9KX0sZ2V0RWxlbWVudHNBdEV2ZW50Rm9yTW9kZTpmdW5jdGlvbih0LGUsbil7dmFyIGk9ZWUubW9kZXNbZV07cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGk/aSh0aGlzLHQsbik6W119LGdldERhdGFzZXRBdEV2ZW50OmZ1bmN0aW9uKHQpe3JldHVybiBlZS5tb2Rlcy5kYXRhc2V0KHRoaXMsdCx7aW50ZXJzZWN0OiEwfSl9LGdldERhdGFzZXRNZXRhOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuZGF0YS5kYXRhc2V0c1t0XTtlLl9tZXRhfHwoZS5fbWV0YT17fSk7dmFyIG49ZS5fbWV0YVt0aGlzLmlkXTtyZXR1cm4gbnx8KG49ZS5fbWV0YVt0aGlzLmlkXT17dHlwZTpudWxsLGRhdGE6W10sZGF0YXNldDpudWxsLGNvbnRyb2xsZXI6bnVsbCxoaWRkZW46bnVsbCx4QXhpc0lEOm51bGwseUF4aXNJRDpudWxsLG9yZGVyOmUub3JkZXJ8fDAsaW5kZXg6dH0pLG59LGdldFZpc2libGVEYXRhc2V0Q291bnQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MCxlPTAsbj10aGlzLmRhdGEuZGF0YXNldHMubGVuZ3RoO2U8bjsrK2UpdGhpcy5pc0RhdGFzZXRWaXNpYmxlKGUpJiZ0Kys7cmV0dXJuIHR9LGlzRGF0YXNldFZpc2libGU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXREYXRhc2V0TWV0YSh0KTtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBlLmhpZGRlbj8hZS5oaWRkZW46IXRoaXMuZGF0YS5kYXRhc2V0c1t0XS5oaWRkZW59LGdlbmVyYXRlTGVnZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5sZWdlbmRDYWxsYmFjayh0aGlzKX0sZGVzdHJveURhdGFzZXRNZXRhOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuaWQsbj10aGlzLmRhdGEuZGF0YXNldHNbdF0saT1uLl9tZXRhJiZuLl9tZXRhW2VdO2kmJihpLmNvbnRyb2xsZXIuZGVzdHJveSgpLGRlbGV0ZSBuLl9tZXRhW2VdKX0sZGVzdHJveTpmdW5jdGlvbigpe3ZhciB0LGUsbj10aGlzLGk9bi5jYW52YXM7Zm9yKG4uc3RvcCgpLHQ9MCxlPW4uZGF0YS5kYXRhc2V0cy5sZW5ndGg7dDxlOysrdCluLmRlc3Ryb3lEYXRhc2V0TWV0YSh0KTtpJiYobi51bmJpbmRFdmVudHMoKSxCLmNhbnZhcy5jbGVhcihuKSxUZS5yZWxlYXNlQ29udGV4dChuLmN0eCksbi5jYW52YXM9bnVsbCxuLmN0eD1udWxsKSxBZS5ub3RpZnkobiwiZGVzdHJveSIpLGRlbGV0ZSBZZS5pbnN0YW5jZXNbbi5pZF19LHRvQmFzZTY0SW1hZ2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jYW52YXMudG9EYXRhVVJMLmFwcGx5KHRoaXMuY2FudmFzLGFyZ3VtZW50cyl9LGluaXRUb29sVGlwOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0LnRvb2x0aXA9bmV3ICRlKHtfY2hhcnQ6dCxfY2hhcnRJbnN0YW5jZTp0LF9kYXRhOnQuZGF0YSxfb3B0aW9uczp0Lm9wdGlvbnMudG9vbHRpcHN9LHQpfSxiaW5kRXZlbnRzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXQuX2xpc3RlbmVycz17fSxuPWZ1bmN0aW9uKCl7dC5ldmVudEhhbmRsZXIuYXBwbHkodCxhcmd1bWVudHMpfTtCLmVhY2godC5vcHRpb25zLmV2ZW50cywoZnVuY3Rpb24oaSl7VGUuYWRkRXZlbnRMaXN0ZW5lcih0LGksbiksZVtpXT1ufSkpLHQub3B0aW9ucy5yZXNwb25zaXZlJiYobj1mdW5jdGlvbigpe3QucmVzaXplKCl9LFRlLmFkZEV2ZW50TGlzdGVuZXIodCwicmVzaXplIixuKSxlLnJlc2l6ZT1uKX0sdW5iaW5kRXZlbnRzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXQuX2xpc3RlbmVycztlJiYoZGVsZXRlIHQuX2xpc3RlbmVycyxCLmVhY2goZSwoZnVuY3Rpb24oZSxuKXtUZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsbixlKX0pKSl9LHVwZGF0ZUhvdmVyU3R5bGU6ZnVuY3Rpb24odCxlLG4pe3ZhciBpLHIsbyxhPW4/InNldCI6InJlbW92ZSI7Zm9yKHI9MCxvPXQubGVuZ3RoO3I8bzsrK3IpKGk9dFtyXSkmJnRoaXMuZ2V0RGF0YXNldE1ldGEoaS5fZGF0YXNldEluZGV4KS5jb250cm9sbGVyW2ErIkhvdmVyU3R5bGUiXShpKTsiZGF0YXNldCI9PT1lJiZ0aGlzLmdldERhdGFzZXRNZXRhKHRbMF0uX2RhdGFzZXRJbmRleCkuY29udHJvbGxlclsiXyIrYSsiRGF0YXNldEhvdmVyU3R5bGUiXSgpfSxldmVudEhhbmRsZXI6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPWUudG9vbHRpcDtpZighMSE9PUFlLm5vdGlmeShlLCJiZWZvcmVFdmVudCIsW3RdKSl7ZS5fYnVmZmVyZWRSZW5kZXI9ITAsZS5fYnVmZmVyZWRSZXF1ZXN0PW51bGw7dmFyIGk9ZS5oYW5kbGVFdmVudCh0KTtuJiYoaT1uLl9zdGFydD9uLmhhbmRsZUV2ZW50KHQpOml8bi5oYW5kbGVFdmVudCh0KSksQWUubm90aWZ5KGUsImFmdGVyRXZlbnQiLFt0XSk7dmFyIHI9ZS5fYnVmZmVyZWRSZXF1ZXN0O3JldHVybiByP2UucmVuZGVyKHIpOmkmJiFlLmFuaW1hdGluZyYmKGUuc3RvcCgpLGUucmVuZGVyKHtkdXJhdGlvbjplLm9wdGlvbnMuaG92ZXIuYW5pbWF0aW9uRHVyYXRpb24sbGF6eTohMH0pKSxlLl9idWZmZXJlZFJlbmRlcj0hMSxlLl9idWZmZXJlZFJlcXVlc3Q9bnVsbCxlfX0saGFuZGxlRXZlbnQ6ZnVuY3Rpb24odCl7dmFyIGUsbj10aGlzLGk9bi5vcHRpb25zfHx7fSxyPWkuaG92ZXI7cmV0dXJuIG4ubGFzdEFjdGl2ZT1uLmxhc3RBY3RpdmV8fFtdLCJtb3VzZW91dCI9PT10LnR5cGU/bi5hY3RpdmU9W106bi5hY3RpdmU9bi5nZXRFbGVtZW50c0F0RXZlbnRGb3JNb2RlKHQsci5tb2RlLHIpLEIuY2FsbGJhY2soaS5vbkhvdmVyfHxpLmhvdmVyLm9uSG92ZXIsW3QubmF0aXZlLG4uYWN0aXZlXSxuKSwibW91c2V1cCIhPT10LnR5cGUmJiJjbGljayIhPT10LnR5cGV8fGkub25DbGljayYmaS5vbkNsaWNrLmNhbGwobix0Lm5hdGl2ZSxuLmFjdGl2ZSksbi5sYXN0QWN0aXZlLmxlbmd0aCYmbi51cGRhdGVIb3ZlclN0eWxlKG4ubGFzdEFjdGl2ZSxyLm1vZGUsITEpLG4uYWN0aXZlLmxlbmd0aCYmci5tb2RlJiZuLnVwZGF0ZUhvdmVyU3R5bGUobi5hY3RpdmUsci5tb2RlLCEwKSxlPSFCLmFycmF5RXF1YWxzKG4uYWN0aXZlLG4ubGFzdEFjdGl2ZSksbi5sYXN0QWN0aXZlPW4uYWN0aXZlLGV9fSksWWUuaW5zdGFuY2VzPXt9O3ZhciBHZT1ZZTtmdW5jdGlvbiBYZSgpe3Rocm93IG5ldyBFcnJvcigiVGhpcyBtZXRob2QgaXMgbm90IGltcGxlbWVudGVkOiBlaXRoZXIgbm8gYWRhcHRlciBjYW4gYmUgZm91bmQgb3IgYW4gaW5jb21wbGV0ZSBpbnRlZ3JhdGlvbiB3YXMgcHJvdmlkZWQuIil9ZnVuY3Rpb24gUWUodCl7dGhpcy5vcHRpb25zPXR8fHt9fVllLkNvbnRyb2xsZXI9WWUsWWUudHlwZXM9e30sQi5jb25maWdNZXJnZT1CZSxCLnNjYWxlTWVyZ2U9SGUsQi5leHRlbmQoUWUucHJvdG90eXBlLHtmb3JtYXRzOlhlLHBhcnNlOlhlLGZvcm1hdDpYZSxhZGQ6WGUsZGlmZjpYZSxzdGFydE9mOlhlLGVuZE9mOlhlLF9jcmVhdGU6ZnVuY3Rpb24odCl7cmV0dXJuIHR9fSksUWUub3ZlcnJpZGU9ZnVuY3Rpb24odCl7Qi5leHRlbmQoUWUucHJvdG90eXBlLHQpfTt2YXIgS2U9e19kYXRlOlFlfSxKZT17Zm9ybWF0dGVyczp7dmFsdWVzOmZ1bmN0aW9uKHQpe3JldHVybiBCLmlzQXJyYXkodCk/dDoiIit0fSxsaW5lYXI6ZnVuY3Rpb24odCxlLG4pe3ZhciBpPW4ubGVuZ3RoPjM/blsyXS1uWzFdOm5bMV0tblswXTtNYXRoLmFicyhpKT4xJiZ0IT09TWF0aC5mbG9vcih0KSYmKGk9dC1NYXRoLmZsb29yKHQpKTt2YXIgcj1CLmxvZzEwKE1hdGguYWJzKGkpKSxvPSIiO2lmKDAhPT10KWlmKE1hdGgubWF4KE1hdGguYWJzKG5bMF0pLE1hdGguYWJzKG5bbi5sZW5ndGgtMV0pKTwxZS00KXt2YXIgYT1CLmxvZzEwKE1hdGguYWJzKHQpKSxzPU1hdGguZmxvb3IoYSktTWF0aC5mbG9vcihyKTtzPU1hdGgubWF4KE1hdGgubWluKHMsMjApLDApLG89dC50b0V4cG9uZW50aWFsKHMpfWVsc2V7dmFyIGw9LTEqTWF0aC5mbG9vcihyKTtsPU1hdGgubWF4KE1hdGgubWluKGwsMjApLDApLG89dC50b0ZpeGVkKGwpfWVsc2Ugbz0iMCI7cmV0dXJuIG99LGxvZ2FyaXRobWljOmZ1bmN0aW9uKHQsZSxuKXt2YXIgaT10L01hdGgucG93KDEwLE1hdGguZmxvb3IoQi5sb2cxMCh0KSkpO3JldHVybiAwPT09dD8iMCI6MT09PWl8fDI9PT1pfHw1PT09aXx8MD09PWV8fGU9PT1uLmxlbmd0aC0xP3QudG9FeHBvbmVudGlhbCgpOiIifX19LFplPUIuaXNBcnJheSx0bj1CLmlzTnVsbE9yVW5kZWYsZW49Qi52YWx1ZU9yRGVmYXVsdCxubj1CLnZhbHVlQXRJbmRleE9yRGVmYXVsdDtmdW5jdGlvbiBybih0LGUsbil7dmFyIGkscj10LmdldFRpY2tzKCkubGVuZ3RoLG89TWF0aC5taW4oZSxyLTEpLGE9dC5nZXRQaXhlbEZvclRpY2sobykscz10Ll9zdGFydFBpeGVsLGw9dC5fZW5kUGl4ZWw7aWYoIShuJiYoaT0xPT09cj9NYXRoLm1heChhLXMsbC1hKTowPT09ZT8odC5nZXRQaXhlbEZvclRpY2soMSktYSkvMjooYS10LmdldFBpeGVsRm9yVGljayhvLTEpKS8yLChhKz1vPGU/aTotaSk8cy0xZS02fHxhPmwrMWUtNikpKXJldHVybiBhfWZ1bmN0aW9uIG9uKHQpe3JldHVybiB0LmRyYXdUaWNrcz90LnRpY2tNYXJrTGVuZ3RoOjB9ZnVuY3Rpb24gYW4odCl7dmFyIGUsbjtyZXR1cm4gdC5kaXNwbGF5PyhlPUIub3B0aW9ucy5fcGFyc2VGb250KHQpLG49Qi5vcHRpb25zLnRvUGFkZGluZyh0LnBhZGRpbmcpLGUubGluZUhlaWdodCtuLmhlaWdodCk6MH1mdW5jdGlvbiBzbih0LGUpe3JldHVybiBCLmV4dGVuZChCLm9wdGlvbnMuX3BhcnNlRm9udCh7Zm9udEZhbWlseTplbihlLmZvbnRGYW1pbHksdC5mb250RmFtaWx5KSxmb250U2l6ZTplbihlLmZvbnRTaXplLHQuZm9udFNpemUpLGZvbnRTdHlsZTplbihlLmZvbnRTdHlsZSx0LmZvbnRTdHlsZSksbGluZUhlaWdodDplbihlLmxpbmVIZWlnaHQsdC5saW5lSGVpZ2h0KX0pLHtjb2xvcjpCLm9wdGlvbnMucmVzb2x2ZShbZS5mb250Q29sb3IsdC5mb250Q29sb3IsUi5nbG9iYWwuZGVmYXVsdEZvbnRDb2xvcl0pfSl9ZnVuY3Rpb24gbG4odCl7dmFyIGU9c24odCx0Lm1pbm9yKTtyZXR1cm57bWlub3I6ZSxtYWpvcjp0Lm1ham9yLmVuYWJsZWQ/c24odCx0Lm1ham9yKTplfX1mdW5jdGlvbiBjbih0KXt2YXIgZSxuLGkscj1bXTtmb3Iobj0wLGk9dC5sZW5ndGg7bjxpOysrbil2b2lkIDAhPT0oZT10W25dKS5faW5kZXgmJnIucHVzaChlKTtyZXR1cm4gcn1mdW5jdGlvbiB1bih0LGUsbixpKXt2YXIgcixvLGEscyxsPWVuKG4sMCksYz1NYXRoLm1pbihlbihpLHQubGVuZ3RoKSx0Lmxlbmd0aCksdT0wO2ZvcihlPU1hdGguY2VpbChlKSxpJiYoZT0ocj1pLW4pL01hdGguZmxvb3Ioci9lKSkscz1sO3M8MDspdSsrLHM9TWF0aC5yb3VuZChsK3UqZSk7Zm9yKG89TWF0aC5tYXgobCwwKTtvPGM7bysrKWE9dFtvXSxvPT09cz8oYS5faW5kZXg9byx1Kysscz1NYXRoLnJvdW5kKGwrdSplKSk6ZGVsZXRlIGEubGFiZWx9Ui5fc2V0KCJzY2FsZSIse2Rpc3BsYXk6ITAscG9zaXRpb246ImxlZnQiLG9mZnNldDohMSxncmlkTGluZXM6e2Rpc3BsYXk6ITAsY29sb3I6InJnYmEoMCwwLDAsMC4xKSIsbGluZVdpZHRoOjEsZHJhd0JvcmRlcjohMCxkcmF3T25DaGFydEFyZWE6ITAsZHJhd1RpY2tzOiEwLHRpY2tNYXJrTGVuZ3RoOjEwLHplcm9MaW5lV2lkdGg6MSx6ZXJvTGluZUNvbG9yOiJyZ2JhKDAsMCwwLDAuMjUpIix6ZXJvTGluZUJvcmRlckRhc2g6W10semVyb0xpbmVCb3JkZXJEYXNoT2Zmc2V0OjAsb2Zmc2V0R3JpZExpbmVzOiExLGJvcmRlckRhc2g6W10sYm9yZGVyRGFzaE9mZnNldDowfSxzY2FsZUxhYmVsOntkaXNwbGF5OiExLGxhYmVsU3RyaW5nOiIiLHBhZGRpbmc6e3RvcDo0LGJvdHRvbTo0fX0sdGlja3M6e2JlZ2luQXRaZXJvOiExLG1pblJvdGF0aW9uOjAsbWF4Um90YXRpb246NTAsbWlycm9yOiExLHBhZGRpbmc6MCxyZXZlcnNlOiExLGRpc3BsYXk6ITAsYXV0b1NraXA6ITAsYXV0b1NraXBQYWRkaW5nOjAsbGFiZWxPZmZzZXQ6MCxjYWxsYmFjazpKZS5mb3JtYXR0ZXJzLnZhbHVlcyxtaW5vcjp7fSxtYWpvcjp7fX19KTt2YXIgZG49Ry5leHRlbmQoe3plcm9MaW5lSW5kZXg6MCxnZXRQYWRkaW5nOmZ1bmN0aW9uKCl7cmV0dXJue2xlZnQ6dGhpcy5wYWRkaW5nTGVmdHx8MCx0b3A6dGhpcy5wYWRkaW5nVG9wfHwwLHJpZ2h0OnRoaXMucGFkZGluZ1JpZ2h0fHwwLGJvdHRvbTp0aGlzLnBhZGRpbmdCb3R0b218fDB9fSxnZXRUaWNrczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl90aWNrc30sX2dldExhYmVsczpmdW5jdGlvbigpe3ZhciB0PXRoaXMuY2hhcnQuZGF0YTtyZXR1cm4gdGhpcy5vcHRpb25zLmxhYmVsc3x8KHRoaXMuaXNIb3Jpem9udGFsKCk/dC54TGFiZWxzOnQueUxhYmVscyl8fHQubGFiZWxzfHxbXX0sbWVyZ2VUaWNrc09wdGlvbnM6ZnVuY3Rpb24oKXt9LGJlZm9yZVVwZGF0ZTpmdW5jdGlvbigpe0IuY2FsbGJhY2sodGhpcy5vcHRpb25zLmJlZm9yZVVwZGF0ZSxbdGhpc10pfSx1cGRhdGU6ZnVuY3Rpb24odCxlLG4pe3ZhciBpLHIsbyxhLHMsbD10aGlzLGM9bC5vcHRpb25zLnRpY2tzLHU9Yy5zYW1wbGVTaXplO2lmKGwuYmVmb3JlVXBkYXRlKCksbC5tYXhXaWR0aD10LGwubWF4SGVpZ2h0PWUsbC5tYXJnaW5zPUIuZXh0ZW5kKHtsZWZ0OjAscmlnaHQ6MCx0b3A6MCxib3R0b206MH0sbiksbC5fdGlja3M9bnVsbCxsLnRpY2tzPW51bGwsbC5fbGFiZWxTaXplcz1udWxsLGwuX21heExhYmVsTGluZXM9MCxsLmxvbmdlc3RMYWJlbFdpZHRoPTAsbC5sb25nZXN0VGV4dENhY2hlPWwubG9uZ2VzdFRleHRDYWNoZXx8e30sbC5fZ3JpZExpbmVJdGVtcz1udWxsLGwuX2xhYmVsSXRlbXM9bnVsbCxsLmJlZm9yZVNldERpbWVuc2lvbnMoKSxsLnNldERpbWVuc2lvbnMoKSxsLmFmdGVyU2V0RGltZW5zaW9ucygpLGwuYmVmb3JlRGF0YUxpbWl0cygpLGwuZGV0ZXJtaW5lRGF0YUxpbWl0cygpLGwuYWZ0ZXJEYXRhTGltaXRzKCksbC5iZWZvcmVCdWlsZFRpY2tzKCksYT1sLmJ1aWxkVGlja3MoKXx8W10sKCEoYT1sLmFmdGVyQnVpbGRUaWNrcyhhKXx8YSl8fCFhLmxlbmd0aCkmJmwudGlja3MpZm9yKGE9W10saT0wLHI9bC50aWNrcy5sZW5ndGg7aTxyOysraSlhLnB1c2goe3ZhbHVlOmwudGlja3NbaV0sbWFqb3I6ITF9KTtyZXR1cm4gbC5fdGlja3M9YSxzPXU8YS5sZW5ndGgsbz1sLl9jb252ZXJ0VGlja3NUb0xhYmVscyhzP2Z1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPVtdLGk9dC5sZW5ndGgvZSxyPTAsbz10Lmxlbmd0aDtyPG87cis9aSluLnB1c2godFtNYXRoLmZsb29yKHIpXSk7cmV0dXJuIG59KGEsdSk6YSksbC5fY29uZmlndXJlKCksbC5iZWZvcmVDYWxjdWxhdGVUaWNrUm90YXRpb24oKSxsLmNhbGN1bGF0ZVRpY2tSb3RhdGlvbigpLGwuYWZ0ZXJDYWxjdWxhdGVUaWNrUm90YXRpb24oKSxsLmJlZm9yZUZpdCgpLGwuZml0KCksbC5hZnRlckZpdCgpLGwuX3RpY2tzVG9EcmF3PWMuZGlzcGxheSYmKGMuYXV0b1NraXB8fCJhdXRvIj09PWMuc291cmNlKT9sLl9hdXRvU2tpcChhKTphLHMmJihvPWwuX2NvbnZlcnRUaWNrc1RvTGFiZWxzKGwuX3RpY2tzVG9EcmF3KSksbC50aWNrcz1vLGwuYWZ0ZXJVcGRhdGUoKSxsLm1pblNpemV9LF9jb25maWd1cmU6ZnVuY3Rpb24oKXt2YXIgdCxlLG49dGhpcyxpPW4ub3B0aW9ucy50aWNrcy5yZXZlcnNlO24uaXNIb3Jpem9udGFsKCk/KHQ9bi5sZWZ0LGU9bi5yaWdodCk6KHQ9bi50b3AsZT1uLmJvdHRvbSxpPSFpKSxuLl9zdGFydFBpeGVsPXQsbi5fZW5kUGl4ZWw9ZSxuLl9yZXZlcnNlUGl4ZWxzPWksbi5fbGVuZ3RoPWUtdH0sYWZ0ZXJVcGRhdGU6ZnVuY3Rpb24oKXtCLmNhbGxiYWNrKHRoaXMub3B0aW9ucy5hZnRlclVwZGF0ZSxbdGhpc10pfSxiZWZvcmVTZXREaW1lbnNpb25zOmZ1bmN0aW9uKCl7Qi5jYWxsYmFjayh0aGlzLm9wdGlvbnMuYmVmb3JlU2V0RGltZW5zaW9ucyxbdGhpc10pfSxzZXREaW1lbnNpb25zOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0LmlzSG9yaXpvbnRhbCgpPyh0LndpZHRoPXQubWF4V2lkdGgsdC5sZWZ0PTAsdC5yaWdodD10LndpZHRoKToodC5oZWlnaHQ9dC5tYXhIZWlnaHQsdC50b3A9MCx0LmJvdHRvbT10LmhlaWdodCksdC5wYWRkaW5nTGVmdD0wLHQucGFkZGluZ1RvcD0wLHQucGFkZGluZ1JpZ2h0PTAsdC5wYWRkaW5nQm90dG9tPTB9LGFmdGVyU2V0RGltZW5zaW9uczpmdW5jdGlvbigpe0IuY2FsbGJhY2sodGhpcy5vcHRpb25zLmFmdGVyU2V0RGltZW5zaW9ucyxbdGhpc10pfSxiZWZvcmVEYXRhTGltaXRzOmZ1bmN0aW9uKCl7Qi5jYWxsYmFjayh0aGlzLm9wdGlvbnMuYmVmb3JlRGF0YUxpbWl0cyxbdGhpc10pfSxkZXRlcm1pbmVEYXRhTGltaXRzOkIubm9vcCxhZnRlckRhdGFMaW1pdHM6ZnVuY3Rpb24oKXtCLmNhbGxiYWNrKHRoaXMub3B0aW9ucy5hZnRlckRhdGFMaW1pdHMsW3RoaXNdKX0sYmVmb3JlQnVpbGRUaWNrczpmdW5jdGlvbigpe0IuY2FsbGJhY2sodGhpcy5vcHRpb25zLmJlZm9yZUJ1aWxkVGlja3MsW3RoaXNdKX0sYnVpbGRUaWNrczpCLm5vb3AsYWZ0ZXJCdWlsZFRpY2tzOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7cmV0dXJuIFplKHQpJiZ0Lmxlbmd0aD9CLmNhbGxiYWNrKGUub3B0aW9ucy5hZnRlckJ1aWxkVGlja3MsW2UsdF0pOihlLnRpY2tzPUIuY2FsbGJhY2soZS5vcHRpb25zLmFmdGVyQnVpbGRUaWNrcyxbZSxlLnRpY2tzXSl8fGUudGlja3MsdCl9LGJlZm9yZVRpY2tUb0xhYmVsQ29udmVyc2lvbjpmdW5jdGlvbigpe0IuY2FsbGJhY2sodGhpcy5vcHRpb25zLmJlZm9yZVRpY2tUb0xhYmVsQ29udmVyc2lvbixbdGhpc10pfSxjb252ZXJ0VGlja3NUb0xhYmVsczpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3B0aW9ucy50aWNrczt0aGlzLnRpY2tzPXRoaXMudGlja3MubWFwKHQudXNlckNhbGxiYWNrfHx0LmNhbGxiYWNrLHRoaXMpfSxhZnRlclRpY2tUb0xhYmVsQ29udmVyc2lvbjpmdW5jdGlvbigpe0IuY2FsbGJhY2sodGhpcy5vcHRpb25zLmFmdGVyVGlja1RvTGFiZWxDb252ZXJzaW9uLFt0aGlzXSl9LGJlZm9yZUNhbGN1bGF0ZVRpY2tSb3RhdGlvbjpmdW5jdGlvbigpe0IuY2FsbGJhY2sodGhpcy5vcHRpb25zLmJlZm9yZUNhbGN1bGF0ZVRpY2tSb3RhdGlvbixbdGhpc10pfSxjYWxjdWxhdGVUaWNrUm90YXRpb246ZnVuY3Rpb24oKXt2YXIgdCxlLG4saSxyLG8sYSxzPXRoaXMsbD1zLm9wdGlvbnMsYz1sLnRpY2tzLHU9cy5nZXRUaWNrcygpLmxlbmd0aCxkPWMubWluUm90YXRpb258fDAsaD1jLm1heFJvdGF0aW9uLGY9ZDshcy5faXNWaXNpYmxlKCl8fCFjLmRpc3BsYXl8fGQ+PWh8fHU8PTF8fCFzLmlzSG9yaXpvbnRhbCgpP3MubGFiZWxSb3RhdGlvbj1kOihlPSh0PXMuX2dldExhYmVsU2l6ZXMoKSkud2lkZXN0LndpZHRoLG49dC5oaWdoZXN0LmhlaWdodC10LmhpZ2hlc3Qub2Zmc2V0LGk9TWF0aC5taW4ocy5tYXhXaWR0aCxzLmNoYXJ0LndpZHRoLWUpLGUrNj4ocj1sLm9mZnNldD9zLm1heFdpZHRoL3U6aS8odS0xKSkmJihyPWkvKHUtKGwub2Zmc2V0Py41OjEpKSxvPXMubWF4SGVpZ2h0LW9uKGwuZ3JpZExpbmVzKS1jLnBhZGRpbmctYW4obC5zY2FsZUxhYmVsKSxhPU1hdGguc3FydChlKmUrbipuKSxmPUIudG9EZWdyZWVzKE1hdGgubWluKE1hdGguYXNpbihNYXRoLm1pbigodC5oaWdoZXN0LmhlaWdodCs2KS9yLDEpKSxNYXRoLmFzaW4oTWF0aC5taW4oby9hLDEpKS1NYXRoLmFzaW4obi9hKSkpLGY9TWF0aC5tYXgoZCxNYXRoLm1pbihoLGYpKSkscy5sYWJlbFJvdGF0aW9uPWYpfSxhZnRlckNhbGN1bGF0ZVRpY2tSb3RhdGlvbjpmdW5jdGlvbigpe0IuY2FsbGJhY2sodGhpcy5vcHRpb25zLmFmdGVyQ2FsY3VsYXRlVGlja1JvdGF0aW9uLFt0aGlzXSl9LGJlZm9yZUZpdDpmdW5jdGlvbigpe0IuY2FsbGJhY2sodGhpcy5vcHRpb25zLmJlZm9yZUZpdCxbdGhpc10pfSxmaXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dC5taW5TaXplPXt3aWR0aDowLGhlaWdodDowfSxuPXQuY2hhcnQsaT10Lm9wdGlvbnMscj1pLnRpY2tzLG89aS5zY2FsZUxhYmVsLGE9aS5ncmlkTGluZXMscz10Ll9pc1Zpc2libGUoKSxsPSJib3R0b20iPT09aS5wb3NpdGlvbixjPXQuaXNIb3Jpem9udGFsKCk7aWYoYz9lLndpZHRoPXQubWF4V2lkdGg6cyYmKGUud2lkdGg9b24oYSkrYW4obykpLGM/cyYmKGUuaGVpZ2h0PW9uKGEpK2FuKG8pKTplLmhlaWdodD10Lm1heEhlaWdodCxyLmRpc3BsYXkmJnMpe3ZhciB1PWxuKHIpLGQ9dC5fZ2V0TGFiZWxTaXplcygpLGg9ZC5maXJzdCxmPWQubGFzdCxwPWQud2lkZXN0LGc9ZC5oaWdoZXN0LG09LjQqdS5taW5vci5saW5lSGVpZ2h0LHY9ci5wYWRkaW5nO2lmKGMpe3ZhciB5PTAhPT10LmxhYmVsUm90YXRpb24sYj1CLnRvUmFkaWFucyh0LmxhYmVsUm90YXRpb24pLHc9TWF0aC5jb3MoYikseD1NYXRoLnNpbihiKSxfPXgqcC53aWR0aCt3KihnLmhlaWdodC0oeT9nLm9mZnNldDowKSkrKHk/MDptKTtlLmhlaWdodD1NYXRoLm1pbih0Lm1heEhlaWdodCxlLmhlaWdodCtfK3YpO3ZhciBTLEMsaz10LmdldFBpeGVsRm9yVGljaygwKS10LmxlZnQsVD10LnJpZ2h0LXQuZ2V0UGl4ZWxGb3JUaWNrKHQuZ2V0VGlja3MoKS5sZW5ndGgtMSk7eT8oUz1sP3cqaC53aWR0aCt4Kmgub2Zmc2V0OngqKGguaGVpZ2h0LWgub2Zmc2V0KSxDPWw/eCooZi5oZWlnaHQtZi5vZmZzZXQpOncqZi53aWR0aCt4KmYub2Zmc2V0KTooUz1oLndpZHRoLzIsQz1mLndpZHRoLzIpLHQucGFkZGluZ0xlZnQ9TWF0aC5tYXgoKFMtaykqdC53aWR0aC8odC53aWR0aC1rKSwwKSszLHQucGFkZGluZ1JpZ2h0PU1hdGgubWF4KChDLVQpKnQud2lkdGgvKHQud2lkdGgtVCksMCkrM31lbHNle3ZhciBBPXIubWlycm9yPzA6cC53aWR0aCt2K207ZS53aWR0aD1NYXRoLm1pbih0Lm1heFdpZHRoLGUud2lkdGgrQSksdC5wYWRkaW5nVG9wPWguaGVpZ2h0LzIsdC5wYWRkaW5nQm90dG9tPWYuaGVpZ2h0LzJ9fXQuaGFuZGxlTWFyZ2lucygpLGM/KHQud2lkdGg9dC5fbGVuZ3RoPW4ud2lkdGgtdC5tYXJnaW5zLmxlZnQtdC5tYXJnaW5zLnJpZ2h0LHQuaGVpZ2h0PWUuaGVpZ2h0KToodC53aWR0aD1lLndpZHRoLHQuaGVpZ2h0PXQuX2xlbmd0aD1uLmhlaWdodC10Lm1hcmdpbnMudG9wLXQubWFyZ2lucy5ib3R0b20pfSxoYW5kbGVNYXJnaW5zOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0Lm1hcmdpbnMmJih0Lm1hcmdpbnMubGVmdD1NYXRoLm1heCh0LnBhZGRpbmdMZWZ0LHQubWFyZ2lucy5sZWZ0KSx0Lm1hcmdpbnMudG9wPU1hdGgubWF4KHQucGFkZGluZ1RvcCx0Lm1hcmdpbnMudG9wKSx0Lm1hcmdpbnMucmlnaHQ9TWF0aC5tYXgodC5wYWRkaW5nUmlnaHQsdC5tYXJnaW5zLnJpZ2h0KSx0Lm1hcmdpbnMuYm90dG9tPU1hdGgubWF4KHQucGFkZGluZ0JvdHRvbSx0Lm1hcmdpbnMuYm90dG9tKSl9LGFmdGVyRml0OmZ1bmN0aW9uKCl7Qi5jYWxsYmFjayh0aGlzLm9wdGlvbnMuYWZ0ZXJGaXQsW3RoaXNdKX0saXNIb3Jpem9udGFsOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zLnBvc2l0aW9uO3JldHVybiJ0b3AiPT09dHx8ImJvdHRvbSI9PT10fSxpc0Z1bGxXaWR0aDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9wdGlvbnMuZnVsbFdpZHRofSxnZXRSaWdodFZhbHVlOmZ1bmN0aW9uKHQpe2lmKHRuKHQpKXJldHVybiBOYU47aWYoKCJudW1iZXIiPT10eXBlb2YgdHx8dCBpbnN0YW5jZW9mIE51bWJlcikmJiFpc0Zpbml0ZSh0KSlyZXR1cm4gTmFOO2lmKHQpaWYodGhpcy5pc0hvcml6b250YWwoKSl7aWYodm9pZCAwIT09dC54KXJldHVybiB0aGlzLmdldFJpZ2h0VmFsdWUodC54KX1lbHNlIGlmKHZvaWQgMCE9PXQueSlyZXR1cm4gdGhpcy5nZXRSaWdodFZhbHVlKHQueSk7cmV0dXJuIHR9LF9jb252ZXJ0VGlja3NUb0xhYmVsczpmdW5jdGlvbih0KXt2YXIgZSxuLGkscj10aGlzO2ZvcihyLnRpY2tzPXQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdC52YWx1ZX0pKSxyLmJlZm9yZVRpY2tUb0xhYmVsQ29udmVyc2lvbigpLGU9ci5jb252ZXJ0VGlja3NUb0xhYmVscyh0KXx8ci50aWNrcyxyLmFmdGVyVGlja1RvTGFiZWxDb252ZXJzaW9uKCksbj0wLGk9dC5sZW5ndGg7bjxpOysrbil0W25dLmxhYmVsPWVbbl07cmV0dXJuIGV9LF9nZXRMYWJlbFNpemVzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXQuX2xhYmVsU2l6ZXM7cmV0dXJuIGV8fCh0Ll9sYWJlbFNpemVzPWU9ZnVuY3Rpb24odCxlLG4saSl7dmFyIHIsbyxhLHMsbCxjLHUsZCxoLGYscCxnLG0sdj1uLmxlbmd0aCx5PVtdLGI9W10sdz1bXSx4PTAsXz0wO2ZvcihyPTA7cjx2Oysrcil7aWYocz1uW3JdLmxhYmVsLGw9bltyXS5tYWpvcj9lLm1ham9yOmUubWlub3IsdC5mb250PWM9bC5zdHJpbmcsdT1pW2NdPWlbY118fHtkYXRhOnt9LGdjOltdfSxkPWwubGluZUhlaWdodCxoPWY9MCx0bihzKXx8WmUocykpe2lmKFplKHMpKWZvcihvPTAsYT1zLmxlbmd0aDtvPGE7KytvKXA9c1tvXSx0bihwKXx8WmUocCl8fChoPUIubWVhc3VyZVRleHQodCx1LmRhdGEsdS5nYyxoLHApLGYrPWQpfWVsc2UgaD1CLm1lYXN1cmVUZXh0KHQsdS5kYXRhLHUuZ2MsaCxzKSxmPWQ7eS5wdXNoKGgpLGIucHVzaChmKSx3LnB1c2goZC8yKSx4PU1hdGgubWF4KGgseCksXz1NYXRoLm1heChmLF8pfWZ1bmN0aW9uIFModCl7cmV0dXJue3dpZHRoOnlbdF18fDAsaGVpZ2h0OmJbdF18fDAsb2Zmc2V0OndbdF18fDB9fXJldHVybiBmdW5jdGlvbih0LGUpe0IuZWFjaCh0LChmdW5jdGlvbih0KXt2YXIgbixpPXQuZ2Mscj1pLmxlbmd0aC8yO2lmKHI+ZSl7Zm9yKG49MDtuPHI7KytuKWRlbGV0ZSB0LmRhdGFbaVtuXV07aS5zcGxpY2UoMCxyKX19KSl9KGksdiksZz15LmluZGV4T2YoeCksbT1iLmluZGV4T2YoXykse2ZpcnN0OlMoMCksbGFzdDpTKHYtMSksd2lkZXN0OlMoZyksaGlnaGVzdDpTKG0pfX0odC5jdHgsbG4odC5vcHRpb25zLnRpY2tzKSx0LmdldFRpY2tzKCksdC5sb25nZXN0VGV4dENhY2hlKSx0Lmxvbmdlc3RMYWJlbFdpZHRoPWUud2lkZXN0LndpZHRoKSxlfSxfcGFyc2VWYWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxuLGkscjtyZXR1cm4gWmUodCk/KGU9K3RoaXMuZ2V0UmlnaHRWYWx1ZSh0WzBdKSxuPSt0aGlzLmdldFJpZ2h0VmFsdWUodFsxXSksaT1NYXRoLm1pbihlLG4pLHI9TWF0aC5tYXgoZSxuKSk6KGU9dm9pZCAwLG49dD0rdGhpcy5nZXRSaWdodFZhbHVlKHQpLGk9dCxyPXQpLHttaW46aSxtYXg6cixzdGFydDplLGVuZDpufX0sX2dldFNjYWxlTGFiZWw6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fcGFyc2VWYWx1ZSh0KTtyZXR1cm4gdm9pZCAwIT09ZS5zdGFydD8iWyIrZS5zdGFydCsiLCAiK2UuZW5kKyJdIjordGhpcy5nZXRSaWdodFZhbHVlKHQpfSxnZXRMYWJlbEZvckluZGV4OkIubm9vcCxnZXRQaXhlbEZvclZhbHVlOkIubm9vcCxnZXRWYWx1ZUZvclBpeGVsOkIubm9vcCxnZXRQaXhlbEZvclRpY2s6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5vcHRpb25zLm9mZnNldCxuPXRoaXMuX3RpY2tzLmxlbmd0aCxpPTEvTWF0aC5tYXgobi0oZT8wOjEpLDEpO3JldHVybiB0PDB8fHQ+bi0xP251bGw6dGhpcy5nZXRQaXhlbEZvckRlY2ltYWwodCppKyhlP2kvMjowKSl9LGdldFBpeGVsRm9yRGVjaW1hbDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcmV2ZXJzZVBpeGVscyYmKHQ9MS10KSx0aGlzLl9zdGFydFBpeGVsK3QqdGhpcy5fbGVuZ3RofSxnZXREZWNpbWFsRm9yUGl4ZWw6ZnVuY3Rpb24odCl7dmFyIGU9KHQtdGhpcy5fc3RhcnRQaXhlbCkvdGhpcy5fbGVuZ3RoO3JldHVybiB0aGlzLl9yZXZlcnNlUGl4ZWxzPzEtZTplfSxnZXRCYXNlUGl4ZWw6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRQaXhlbEZvclZhbHVlKHRoaXMuZ2V0QmFzZVZhbHVlKCkpfSxnZXRCYXNlVmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm1pbixlPXRoaXMubWF4O3JldHVybiB0aGlzLmJlZ2luQXRaZXJvPzA6dDwwJiZlPDA/ZTp0PjAmJmU+MD90OjB9LF9hdXRvU2tpcDpmdW5jdGlvbih0KXt2YXIgZSxuLGkscixvPXRoaXMub3B0aW9ucy50aWNrcyxhPXRoaXMuX2xlbmd0aCxzPW8ubWF4VGlja3NMaW1pdHx8YS90aGlzLl90aWNrU2l6ZSgpKzEsbD1vLm1ham9yLmVuYWJsZWQ/ZnVuY3Rpb24odCl7dmFyIGUsbixpPVtdO2ZvcihlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXRbZV0ubWFqb3ImJmkucHVzaChlKTtyZXR1cm4gaX0odCk6W10sYz1sLmxlbmd0aCx1PWxbMF0sZD1sW2MtMV07aWYoYz5zKXJldHVybiBmdW5jdGlvbih0LGUsbil7dmFyIGkscixvPTAsYT1lWzBdO2ZvcihuPU1hdGguY2VpbChuKSxpPTA7aTx0Lmxlbmd0aDtpKyspcj10W2ldLGk9PT1hPyhyLl9pbmRleD1pLGE9ZVsrK28qbl0pOmRlbGV0ZSByLmxhYmVsfSh0LGwsYy9zKSxjbih0KTtpZihpPWZ1bmN0aW9uKHQsZSxuLGkpe3ZhciByLG8sYSxzLGw9ZnVuY3Rpb24odCl7dmFyIGUsbixpPXQubGVuZ3RoO2lmKGk8MilyZXR1cm4hMTtmb3Iobj10WzBdLGU9MTtlPGk7KytlKWlmKHRbZV0tdFtlLTFdIT09bilyZXR1cm4hMTtyZXR1cm4gbn0odCksYz0oZS5sZW5ndGgtMSkvaTtpZighbClyZXR1cm4gTWF0aC5tYXgoYywxKTtmb3IoYT0wLHM9KHI9Qi5tYXRoLl9mYWN0b3JpemUobCkpLmxlbmd0aC0xO2E8czthKyspaWYoKG89clthXSk+YylyZXR1cm4gbztyZXR1cm4gTWF0aC5tYXgoYywxKX0obCx0LDAscyksYz4wKXtmb3IoZT0wLG49Yy0xO2U8bjtlKyspdW4odCxpLGxbZV0sbFtlKzFdKTtyZXR1cm4gcj1jPjE/KGQtdSkvKGMtMSk6bnVsbCx1bih0LGksQi5pc051bGxPclVuZGVmKHIpPzA6dS1yLHUpLHVuKHQsaSxkLEIuaXNOdWxsT3JVbmRlZihyKT90Lmxlbmd0aDpkK3IpLGNuKHQpfXJldHVybiB1bih0LGkpLGNuKHQpfSxfdGlja1NpemU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnMudGlja3MsZT1CLnRvUmFkaWFucyh0aGlzLmxhYmVsUm90YXRpb24pLG49TWF0aC5hYnMoTWF0aC5jb3MoZSkpLGk9TWF0aC5hYnMoTWF0aC5zaW4oZSkpLHI9dGhpcy5fZ2V0TGFiZWxTaXplcygpLG89dC5hdXRvU2tpcFBhZGRpbmd8fDAsYT1yP3Iud2lkZXN0LndpZHRoK286MCxzPXI/ci5oaWdoZXN0LmhlaWdodCtvOjA7cmV0dXJuIHRoaXMuaXNIb3Jpem9udGFsKCk/cypuPmEqaT9hL246cy9pOnMqaTxhKm4/cy9uOmEvaX0sX2lzVmlzaWJsZTpmdW5jdGlvbigpe3ZhciB0LGUsbixpPXRoaXMuY2hhcnQscj10aGlzLm9wdGlvbnMuZGlzcGxheTtpZigiYXV0byIhPT1yKXJldHVybiEhcjtmb3IodD0wLGU9aS5kYXRhLmRhdGFzZXRzLmxlbmd0aDt0PGU7Kyt0KWlmKGkuaXNEYXRhc2V0VmlzaWJsZSh0KSYmKChuPWkuZ2V0RGF0YXNldE1ldGEodCkpLnhBeGlzSUQ9PT10aGlzLmlkfHxuLnlBeGlzSUQ9PT10aGlzLmlkKSlyZXR1cm4hMDtyZXR1cm4hMX0sX2NvbXB1dGVHcmlkTGluZUl0ZW1zOmZ1bmN0aW9uKHQpe3ZhciBlLG4saSxyLG8sYSxzLGwsYyx1LGQsaCxmLHAsZyxtLHYseT10aGlzLGI9eS5jaGFydCx3PXkub3B0aW9ucyx4PXcuZ3JpZExpbmVzLF89dy5wb3NpdGlvbixTPXgub2Zmc2V0R3JpZExpbmVzLEM9eS5pc0hvcml6b250YWwoKSxrPXkuX3RpY2tzVG9EcmF3LFQ9ay5sZW5ndGgrKFM/MTowKSxBPW9uKHgpLEQ9W10sRT14LmRyYXdCb3JkZXI/bm4oeC5saW5lV2lkdGgsMCwwKTowLE09RS8yLE89Qi5fYWxpZ25QaXhlbCxJPWZ1bmN0aW9uKHQpe3JldHVybiBPKGIsdCxFKX07Zm9yKCJ0b3AiPT09Xz8oZT1JKHkuYm90dG9tKSxzPXkuYm90dG9tLUEsYz1lLU0sZD1JKHQudG9wKStNLGY9dC5ib3R0b20pOiJib3R0b20iPT09Xz8oZT1JKHkudG9wKSxkPXQudG9wLGY9SSh0LmJvdHRvbSktTSxzPWUrTSxjPXkudG9wK0EpOiJsZWZ0Ij09PV8/KGU9SSh5LnJpZ2h0KSxhPXkucmlnaHQtQSxsPWUtTSx1PUkodC5sZWZ0KStNLGg9dC5yaWdodCk6KGU9SSh5LmxlZnQpLHU9dC5sZWZ0LGg9SSh0LnJpZ2h0KS1NLGE9ZStNLGw9eS5sZWZ0K0EpLG49MDtuPFQ7KytuKWk9a1tuXXx8e30sdG4oaS5sYWJlbCkmJm48ay5sZW5ndGh8fChuPT09eS56ZXJvTGluZUluZGV4JiZ3Lm9mZnNldD09PVM/KHA9eC56ZXJvTGluZVdpZHRoLGc9eC56ZXJvTGluZUNvbG9yLG09eC56ZXJvTGluZUJvcmRlckRhc2h8fFtdLHY9eC56ZXJvTGluZUJvcmRlckRhc2hPZmZzZXR8fDApOihwPW5uKHgubGluZVdpZHRoLG4sMSksZz1ubih4LmNvbG9yLG4sInJnYmEoMCwwLDAsMC4xKSIpLG09eC5ib3JkZXJEYXNofHxbXSx2PXguYm9yZGVyRGFzaE9mZnNldHx8MCksdm9pZCAwIT09KHI9cm4oeSxpLl9pbmRleHx8bixTKSkmJihvPU8oYixyLHApLEM/YT1sPXU9aD1vOnM9Yz1kPWY9byxELnB1c2goe3R4MTphLHR5MTpzLHR4MjpsLHR5MjpjLHgxOnUseTE6ZCx4MjpoLHkyOmYsd2lkdGg6cCxjb2xvcjpnLGJvcmRlckRhc2g6bSxib3JkZXJEYXNoT2Zmc2V0OnZ9KSkpO3JldHVybiBELnRpY2tzTGVuZ3RoPVQsRC5ib3JkZXJWYWx1ZT1lLER9LF9jb21wdXRlTGFiZWxJdGVtczpmdW5jdGlvbigpe3ZhciB0LGUsbixpLHIsbyxhLHMsbCxjLHUsZCxoPXRoaXMsZj1oLm9wdGlvbnMscD1mLnRpY2tzLGc9Zi5wb3NpdGlvbixtPXAubWlycm9yLHY9aC5pc0hvcml6b250YWwoKSx5PWguX3RpY2tzVG9EcmF3LGI9bG4ocCksdz1wLnBhZGRpbmcseD1vbihmLmdyaWRMaW5lcyksXz0tQi50b1JhZGlhbnMoaC5sYWJlbFJvdGF0aW9uKSxTPVtdO2ZvcigidG9wIj09PWc/KG89aC5ib3R0b20teC13LGE9Xz8ibGVmdCI6ImNlbnRlciIpOiJib3R0b20iPT09Zz8obz1oLnRvcCt4K3csYT1fPyJyaWdodCI6ImNlbnRlciIpOiJsZWZ0Ij09PWc/KHI9aC5yaWdodC0obT8wOngpLXcsYT1tPyJsZWZ0IjoicmlnaHQiKToocj1oLmxlZnQrKG0/MDp4KSt3LGE9bT8icmlnaHQiOiJsZWZ0IiksdD0wLGU9eS5sZW5ndGg7dDxlOysrdClpPShuPXlbdF0pLmxhYmVsLHRuKGkpfHwocz1oLmdldFBpeGVsRm9yVGljayhuLl9pbmRleHx8dCkrcC5sYWJlbE9mZnNldCxjPShsPW4ubWFqb3I/Yi5tYWpvcjpiLm1pbm9yKS5saW5lSGVpZ2h0LHU9WmUoaSk/aS5sZW5ndGg6MSx2PyhyPXMsZD0idG9wIj09PWc/KChfPzE6LjUpLXUpKmM6KF8/MDouNSkqYyk6KG89cyxkPSgxLXUpKmMvMiksUy5wdXNoKHt4OnIseTpvLHJvdGF0aW9uOl8sbGFiZWw6aSxmb250OmwsdGV4dE9mZnNldDpkLHRleHRBbGlnbjphfSkpO3JldHVybiBTfSxfZHJhd0dyaWQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcyxuPWUub3B0aW9ucy5ncmlkTGluZXM7aWYobi5kaXNwbGF5KXt2YXIgaSxyLG8sYSxzLGw9ZS5jdHgsYz1lLmNoYXJ0LHU9Qi5fYWxpZ25QaXhlbCxkPW4uZHJhd0JvcmRlcj9ubihuLmxpbmVXaWR0aCwwLDApOjAsaD1lLl9ncmlkTGluZUl0ZW1zfHwoZS5fZ3JpZExpbmVJdGVtcz1lLl9jb21wdXRlR3JpZExpbmVJdGVtcyh0KSk7Zm9yKG89MCxhPWgubGVuZ3RoO288YTsrK28paT0ocz1oW29dKS53aWR0aCxyPXMuY29sb3IsaSYmciYmKGwuc2F2ZSgpLGwubGluZVdpZHRoPWksbC5zdHJva2VTdHlsZT1yLGwuc2V0TGluZURhc2gmJihsLnNldExpbmVEYXNoKHMuYm9yZGVyRGFzaCksbC5saW5lRGFzaE9mZnNldD1zLmJvcmRlckRhc2hPZmZzZXQpLGwuYmVnaW5QYXRoKCksbi5kcmF3VGlja3MmJihsLm1vdmVUbyhzLnR4MSxzLnR5MSksbC5saW5lVG8ocy50eDIscy50eTIpKSxuLmRyYXdPbkNoYXJ0QXJlYSYmKGwubW92ZVRvKHMueDEscy55MSksbC5saW5lVG8ocy54MixzLnkyKSksbC5zdHJva2UoKSxsLnJlc3RvcmUoKSk7aWYoZCl7dmFyIGYscCxnLG0sdj1kLHk9bm4obi5saW5lV2lkdGgsaC50aWNrc0xlbmd0aC0xLDEpLGI9aC5ib3JkZXJWYWx1ZTtlLmlzSG9yaXpvbnRhbCgpPyhmPXUoYyxlLmxlZnQsdiktdi8yLHA9dShjLGUucmlnaHQseSkreS8yLGc9bT1iKTooZz11KGMsZS50b3Asdiktdi8yLG09dShjLGUuYm90dG9tLHkpK3kvMixmPXA9YiksbC5saW5lV2lkdGg9ZCxsLnN0cm9rZVN0eWxlPW5uKG4uY29sb3IsMCksbC5iZWdpblBhdGgoKSxsLm1vdmVUbyhmLGcpLGwubGluZVRvKHAsbSksbC5zdHJva2UoKX19fSxfZHJhd0xhYmVsczpmdW5jdGlvbigpe3ZhciB0PXRoaXM7aWYodC5vcHRpb25zLnRpY2tzLmRpc3BsYXkpe3ZhciBlLG4saSxyLG8sYSxzLGwsYz10LmN0eCx1PXQuX2xhYmVsSXRlbXN8fCh0Ll9sYWJlbEl0ZW1zPXQuX2NvbXB1dGVMYWJlbEl0ZW1zKCkpO2ZvcihlPTAsaT11Lmxlbmd0aDtlPGk7KytlKXtpZihhPShvPXVbZV0pLmZvbnQsYy5zYXZlKCksYy50cmFuc2xhdGUoby54LG8ueSksYy5yb3RhdGUoby5yb3RhdGlvbiksYy5mb250PWEuc3RyaW5nLGMuZmlsbFN0eWxlPWEuY29sb3IsYy50ZXh0QmFzZWxpbmU9Im1pZGRsZSIsYy50ZXh0QWxpZ249by50ZXh0QWxpZ24scz1vLmxhYmVsLGw9by50ZXh0T2Zmc2V0LFplKHMpKWZvcihuPTAscj1zLmxlbmd0aDtuPHI7KytuKWMuZmlsbFRleHQoIiIrc1tuXSwwLGwpLGwrPWEubGluZUhlaWdodDtlbHNlIGMuZmlsbFRleHQocywwLGwpO2MucmVzdG9yZSgpfX19LF9kcmF3VGl0bGU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dC5jdHgsbj10Lm9wdGlvbnMsaT1uLnNjYWxlTGFiZWw7aWYoaS5kaXNwbGF5KXt2YXIgcixvLGE9ZW4oaS5mb250Q29sb3IsUi5nbG9iYWwuZGVmYXVsdEZvbnRDb2xvcikscz1CLm9wdGlvbnMuX3BhcnNlRm9udChpKSxsPUIub3B0aW9ucy50b1BhZGRpbmcoaS5wYWRkaW5nKSxjPXMubGluZUhlaWdodC8yLHU9bi5wb3NpdGlvbixkPTA7aWYodC5pc0hvcml6b250YWwoKSlyPXQubGVmdCt0LndpZHRoLzIsbz0iYm90dG9tIj09PXU/dC5ib3R0b20tYy1sLmJvdHRvbTp0LnRvcCtjK2wudG9wO2Vsc2V7dmFyIGg9ImxlZnQiPT09dTtyPWg/dC5sZWZ0K2MrbC50b3A6dC5yaWdodC1jLWwudG9wLG89dC50b3ArdC5oZWlnaHQvMixkPWg/LS41Kk1hdGguUEk6LjUqTWF0aC5QSX1lLnNhdmUoKSxlLnRyYW5zbGF0ZShyLG8pLGUucm90YXRlKGQpLGUudGV4dEFsaWduPSJjZW50ZXIiLGUudGV4dEJhc2VsaW5lPSJtaWRkbGUiLGUuZmlsbFN0eWxlPWEsZS5mb250PXMuc3RyaW5nLGUuZmlsbFRleHQoaS5sYWJlbFN0cmluZywwLDApLGUucmVzdG9yZSgpfX0sZHJhdzpmdW5jdGlvbih0KXt0aGlzLl9pc1Zpc2libGUoKSYmKHRoaXMuX2RyYXdHcmlkKHQpLHRoaXMuX2RyYXdUaXRsZSgpLHRoaXMuX2RyYXdMYWJlbHMoKSl9LF9sYXllcnM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dC5vcHRpb25zLG49ZS50aWNrcyYmZS50aWNrcy56fHwwLGk9ZS5ncmlkTGluZXMmJmUuZ3JpZExpbmVzLnp8fDA7cmV0dXJuIHQuX2lzVmlzaWJsZSgpJiZuIT09aSYmdC5kcmF3PT09dC5fZHJhdz9be3o6aSxkcmF3OmZ1bmN0aW9uKCl7dC5fZHJhd0dyaWQuYXBwbHkodCxhcmd1bWVudHMpLHQuX2RyYXdUaXRsZS5hcHBseSh0LGFyZ3VtZW50cyl9fSx7ejpuLGRyYXc6ZnVuY3Rpb24oKXt0Ll9kcmF3TGFiZWxzLmFwcGx5KHQsYXJndW1lbnRzKX19XTpbe3o6bixkcmF3OmZ1bmN0aW9uKCl7dC5kcmF3LmFwcGx5KHQsYXJndW1lbnRzKX19XX0sX2dldE1hdGNoaW5nVmlzaWJsZU1ldGFzOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj1lLmlzSG9yaXpvbnRhbCgpO3JldHVybiBlLmNoYXJ0Ll9nZXRTb3J0ZWRWaXNpYmxlRGF0YXNldE1ldGFzKCkuZmlsdGVyKChmdW5jdGlvbihpKXtyZXR1cm4oIXR8fGkudHlwZT09PXQpJiYobj9pLnhBeGlzSUQ9PT1lLmlkOmkueUF4aXNJRD09PWUuaWQpfSkpfX0pO2RuLnByb3RvdHlwZS5fZHJhdz1kbi5wcm90b3R5cGUuZHJhdzt2YXIgaG49ZG4sZm49Qi5pc051bGxPclVuZGVmLHBuPWhuLmV4dGVuZCh7ZGV0ZXJtaW5lRGF0YUxpbWl0czpmdW5jdGlvbigpe3ZhciB0LGU9dGhpcyxuPWUuX2dldExhYmVscygpLGk9ZS5vcHRpb25zLnRpY2tzLHI9aS5taW4sbz1pLm1heCxhPTAscz1uLmxlbmd0aC0xO3ZvaWQgMCE9PXImJih0PW4uaW5kZXhPZihyKSk+PTAmJihhPXQpLHZvaWQgMCE9PW8mJih0PW4uaW5kZXhPZihvKSk+PTAmJihzPXQpLGUubWluSW5kZXg9YSxlLm1heEluZGV4PXMsZS5taW49blthXSxlLm1heD1uW3NdfSxidWlsZFRpY2tzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZ2V0TGFiZWxzKCksZT10aGlzLm1pbkluZGV4LG49dGhpcy5tYXhJbmRleDt0aGlzLnRpY2tzPTA9PT1lJiZuPT09dC5sZW5ndGgtMT90OnQuc2xpY2UoZSxuKzEpfSxnZXRMYWJlbEZvckluZGV4OmZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5jaGFydDtyZXR1cm4gbi5nZXREYXRhc2V0TWV0YShlKS5jb250cm9sbGVyLl9nZXRWYWx1ZVNjYWxlSWQoKT09PXRoaXMuaWQ/dGhpcy5nZXRSaWdodFZhbHVlKG4uZGF0YS5kYXRhc2V0c1tlXS5kYXRhW3RdKTp0aGlzLl9nZXRMYWJlbHMoKVt0XX0sX2NvbmZpZ3VyZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10Lm9wdGlvbnMub2Zmc2V0LG49dC50aWNrcztobi5wcm90b3R5cGUuX2NvbmZpZ3VyZS5jYWxsKHQpLHQuaXNIb3Jpem9udGFsKCl8fCh0Ll9yZXZlcnNlUGl4ZWxzPSF0Ll9yZXZlcnNlUGl4ZWxzKSxuJiYodC5fc3RhcnRWYWx1ZT10Lm1pbkluZGV4LShlPy41OjApLHQuX3ZhbHVlUmFuZ2U9TWF0aC5tYXgobi5sZW5ndGgtKGU/MDoxKSwxKSl9LGdldFBpeGVsRm9yVmFsdWU6ZnVuY3Rpb24odCxlLG4pe3ZhciBpLHIsbyxhPXRoaXM7cmV0dXJuIGZuKGUpfHxmbihuKXx8KHQ9YS5jaGFydC5kYXRhLmRhdGFzZXRzW25dLmRhdGFbZV0pLGZuKHQpfHwoaT1hLmlzSG9yaXpvbnRhbCgpP3QueDp0LnkpLCh2b2lkIDAhPT1pfHx2b2lkIDAhPT10JiZpc05hTihlKSkmJihyPWEuX2dldExhYmVscygpLHQ9Qi52YWx1ZU9yRGVmYXVsdChpLHQpLGU9LTEhPT0obz1yLmluZGV4T2YodCkpP286ZSxpc05hTihlKSYmKGU9dCkpLGEuZ2V0UGl4ZWxGb3JEZWNpbWFsKChlLWEuX3N0YXJ0VmFsdWUpL2EuX3ZhbHVlUmFuZ2UpfSxnZXRQaXhlbEZvclRpY2s6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy50aWNrcztyZXR1cm4gdDwwfHx0PmUubGVuZ3RoLTE/bnVsbDp0aGlzLmdldFBpeGVsRm9yVmFsdWUoZVt0XSx0K3RoaXMubWluSW5kZXgpfSxnZXRWYWx1ZUZvclBpeGVsOmZ1bmN0aW9uKHQpe3ZhciBlPU1hdGgucm91bmQodGhpcy5fc3RhcnRWYWx1ZSt0aGlzLmdldERlY2ltYWxGb3JQaXhlbCh0KSp0aGlzLl92YWx1ZVJhbmdlKTtyZXR1cm4gTWF0aC5taW4oTWF0aC5tYXgoZSwwKSx0aGlzLnRpY2tzLmxlbmd0aC0xKX0sZ2V0QmFzZVBpeGVsOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYm90dG9tfX0pO3BuLl9kZWZhdWx0cz17cG9zaXRpb246ImJvdHRvbSJ9O3ZhciBnbj1CLm5vb3AsbW49Qi5pc051bGxPclVuZGVmLHZuPWhuLmV4dGVuZCh7Z2V0UmlnaHRWYWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/K3Q6aG4ucHJvdG90eXBlLmdldFJpZ2h0VmFsdWUuY2FsbCh0aGlzLHQpfSxoYW5kbGVUaWNrUmFuZ2VPcHRpb25zOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXQub3B0aW9ucy50aWNrcztpZihlLmJlZ2luQXRaZXJvKXt2YXIgbj1CLnNpZ24odC5taW4pLGk9Qi5zaWduKHQubWF4KTtuPDAmJmk8MD90Lm1heD0wOm4+MCYmaT4wJiYodC5taW49MCl9dmFyIHI9dm9pZCAwIT09ZS5taW58fHZvaWQgMCE9PWUuc3VnZ2VzdGVkTWluLG89dm9pZCAwIT09ZS5tYXh8fHZvaWQgMCE9PWUuc3VnZ2VzdGVkTWF4O3ZvaWQgMCE9PWUubWluP3QubWluPWUubWluOnZvaWQgMCE9PWUuc3VnZ2VzdGVkTWluJiYobnVsbD09PXQubWluP3QubWluPWUuc3VnZ2VzdGVkTWluOnQubWluPU1hdGgubWluKHQubWluLGUuc3VnZ2VzdGVkTWluKSksdm9pZCAwIT09ZS5tYXg/dC5tYXg9ZS5tYXg6dm9pZCAwIT09ZS5zdWdnZXN0ZWRNYXgmJihudWxsPT09dC5tYXg/dC5tYXg9ZS5zdWdnZXN0ZWRNYXg6dC5tYXg9TWF0aC5tYXgodC5tYXgsZS5zdWdnZXN0ZWRNYXgpKSxyIT09byYmdC5taW4+PXQubWF4JiYocj90Lm1heD10Lm1pbisxOnQubWluPXQubWF4LTEpLHQubWluPT09dC5tYXgmJih0Lm1heCsrLGUuYmVnaW5BdFplcm98fHQubWluLS0pfSxnZXRUaWNrTGltaXQ6ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMub3B0aW9ucy50aWNrcyxuPWUuc3RlcFNpemUsaT1lLm1heFRpY2tzTGltaXQ7cmV0dXJuIG4/dD1NYXRoLmNlaWwodGhpcy5tYXgvbiktTWF0aC5mbG9vcih0aGlzLm1pbi9uKSsxOih0PXRoaXMuX2NvbXB1dGVUaWNrTGltaXQoKSxpPWl8fDExKSxpJiYodD1NYXRoLm1pbihpLHQpKSx0fSxfY29tcHV0ZVRpY2tMaW1pdDpmdW5jdGlvbigpe3JldHVybiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFl9LGhhbmRsZURpcmVjdGlvbmFsQ2hhbmdlczpnbixidWlsZFRpY2tzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXQub3B0aW9ucy50aWNrcyxuPXQuZ2V0VGlja0xpbWl0KCksaT17bWF4VGlja3M6bj1NYXRoLm1heCgyLG4pLG1pbjplLm1pbixtYXg6ZS5tYXgscHJlY2lzaW9uOmUucHJlY2lzaW9uLHN0ZXBTaXplOkIudmFsdWVPckRlZmF1bHQoZS5maXhlZFN0ZXBTaXplLGUuc3RlcFNpemUpfSxyPXQudGlja3M9ZnVuY3Rpb24odCxlKXt2YXIgbixpLHIsbyxhPVtdLHM9dC5zdGVwU2l6ZSxsPXN8fDEsYz10Lm1heFRpY2tzLTEsdT10Lm1pbixkPXQubWF4LGg9dC5wcmVjaXNpb24sZj1lLm1pbixwPWUubWF4LGc9Qi5uaWNlTnVtKChwLWYpL2MvbCkqbDtpZihnPDFlLTE0JiZtbih1KSYmbW4oZCkpcmV0dXJuW2YscF07KG89TWF0aC5jZWlsKHAvZyktTWF0aC5mbG9vcihmL2cpKT5jJiYoZz1CLm5pY2VOdW0obypnL2MvbCkqbCksc3x8bW4oaCk/bj1NYXRoLnBvdygxMCxCLl9kZWNpbWFsUGxhY2VzKGcpKToobj1NYXRoLnBvdygxMCxoKSxnPU1hdGguY2VpbChnKm4pL24pLGk9TWF0aC5mbG9vcihmL2cpKmcscj1NYXRoLmNlaWwocC9nKSpnLHMmJighbW4odSkmJkIuYWxtb3N0V2hvbGUodS9nLGcvMWUzKSYmKGk9dSksIW1uKGQpJiZCLmFsbW9zdFdob2xlKGQvZyxnLzFlMykmJihyPWQpKSxvPShyLWkpL2csbz1CLmFsbW9zdEVxdWFscyhvLE1hdGgucm91bmQobyksZy8xZTMpP01hdGgucm91bmQobyk6TWF0aC5jZWlsKG8pLGk9TWF0aC5yb3VuZChpKm4pL24scj1NYXRoLnJvdW5kKHIqbikvbixhLnB1c2gobW4odSk/aTp1KTtmb3IodmFyIG09MTttPG87KyttKWEucHVzaChNYXRoLnJvdW5kKChpK20qZykqbikvbik7cmV0dXJuIGEucHVzaChtbihkKT9yOmQpLGF9KGksdCk7dC5oYW5kbGVEaXJlY3Rpb25hbENoYW5nZXMoKSx0Lm1heD1CLm1heChyKSx0Lm1pbj1CLm1pbihyKSxlLnJldmVyc2U/KHIucmV2ZXJzZSgpLHQuc3RhcnQ9dC5tYXgsdC5lbmQ9dC5taW4pOih0LnN0YXJ0PXQubWluLHQuZW5kPXQubWF4KX0sY29udmVydFRpY2tzVG9MYWJlbHM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3QudGlja3NBc051bWJlcnM9dC50aWNrcy5zbGljZSgpLHQuemVyb0xpbmVJbmRleD10LnRpY2tzLmluZGV4T2YoMCksaG4ucHJvdG90eXBlLmNvbnZlcnRUaWNrc1RvTGFiZWxzLmNhbGwodCl9LF9jb25maWd1cmU6ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMsbj1lLmdldFRpY2tzKCksaT1lLm1pbixyPWUubWF4O2huLnByb3RvdHlwZS5fY29uZmlndXJlLmNhbGwoZSksZS5vcHRpb25zLm9mZnNldCYmbi5sZW5ndGgmJihpLT10PShyLWkpL01hdGgubWF4KG4ubGVuZ3RoLTEsMSkvMixyKz10KSxlLl9zdGFydFZhbHVlPWksZS5fZW5kVmFsdWU9cixlLl92YWx1ZVJhbmdlPXItaX19KSx5bj17cG9zaXRpb246ImxlZnQiLHRpY2tzOntjYWxsYmFjazpKZS5mb3JtYXR0ZXJzLmxpbmVhcn19O2Z1bmN0aW9uIGJuKHQsZSxuLGkpe3ZhciByLG8sYT10Lm9wdGlvbnMscz1mdW5jdGlvbih0LGUsbil7dmFyIGk9W24udHlwZSx2b2lkIDA9PT1lJiZ2b2lkIDA9PT1uLnN0YWNrP24uaW5kZXg6IiIsbi5zdGFja10uam9pbigiLiIpO3JldHVybiB2b2lkIDA9PT10W2ldJiYodFtpXT17cG9zOltdLG5lZzpbXX0pLHRbaV19KGUsYS5zdGFja2VkLG4pLGw9cy5wb3MsYz1zLm5lZyx1PWkubGVuZ3RoO2ZvcihyPTA7cjx1OysrcilvPXQuX3BhcnNlVmFsdWUoaVtyXSksaXNOYU4oby5taW4pfHxpc05hTihvLm1heCl8fG4uZGF0YVtyXS5oaWRkZW58fChsW3JdPWxbcl18fDAsY1tyXT1jW3JdfHwwLGEucmVsYXRpdmVQb2ludHM/bFtyXT0xMDA6by5taW48MHx8by5tYXg8MD9jW3JdKz1vLm1pbjpsW3JdKz1vLm1heCl9ZnVuY3Rpb24gd24odCxlLG4pe3ZhciBpLHIsbz1uLmxlbmd0aDtmb3IoaT0wO2k8bzsrK2kpcj10Ll9wYXJzZVZhbHVlKG5baV0pLGlzTmFOKHIubWluKXx8aXNOYU4oci5tYXgpfHxlLmRhdGFbaV0uaGlkZGVufHwodC5taW49TWF0aC5taW4odC5taW4sci5taW4pLHQubWF4PU1hdGgubWF4KHQubWF4LHIubWF4KSl9dmFyIHhuPXZuLmV4dGVuZCh7ZGV0ZXJtaW5lRGF0YUxpbWl0czpmdW5jdGlvbigpe3ZhciB0LGUsbixpLHI9dGhpcyxvPXIub3B0aW9ucyxhPXIuY2hhcnQuZGF0YS5kYXRhc2V0cyxzPXIuX2dldE1hdGNoaW5nVmlzaWJsZU1ldGFzKCksbD1vLnN0YWNrZWQsYz17fSx1PXMubGVuZ3RoO2lmKHIubWluPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxyLm1heD1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksdm9pZCAwPT09bClmb3IodD0wOyFsJiZ0PHU7Kyt0KWw9dm9pZCAwIT09KGU9c1t0XSkuc3RhY2s7Zm9yKHQ9MDt0PHU7Kyt0KW49YVsoZT1zW3RdKS5pbmRleF0uZGF0YSxsP2JuKHIsYyxlLG4pOnduKHIsZSxuKTtCLmVhY2goYywoZnVuY3Rpb24odCl7aT10LnBvcy5jb25jYXQodC5uZWcpLHIubWluPU1hdGgubWluKHIubWluLEIubWluKGkpKSxyLm1heD1NYXRoLm1heChyLm1heCxCLm1heChpKSl9KSksci5taW49Qi5pc0Zpbml0ZShyLm1pbikmJiFpc05hTihyLm1pbik/ci5taW46MCxyLm1heD1CLmlzRmluaXRlKHIubWF4KSYmIWlzTmFOKHIubWF4KT9yLm1heDoxLHIuaGFuZGxlVGlja1JhbmdlT3B0aW9ucygpfSxfY29tcHV0ZVRpY2tMaW1pdDpmdW5jdGlvbigpe3ZhciB0O3JldHVybiB0aGlzLmlzSG9yaXpvbnRhbCgpP01hdGguY2VpbCh0aGlzLndpZHRoLzQwKToodD1CLm9wdGlvbnMuX3BhcnNlRm9udCh0aGlzLm9wdGlvbnMudGlja3MpLE1hdGguY2VpbCh0aGlzLmhlaWdodC90LmxpbmVIZWlnaHQpKX0saGFuZGxlRGlyZWN0aW9uYWxDaGFuZ2VzOmZ1bmN0aW9uKCl7dGhpcy5pc0hvcml6b250YWwoKXx8dGhpcy50aWNrcy5yZXZlcnNlKCl9LGdldExhYmVsRm9ySW5kZXg6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fZ2V0U2NhbGVMYWJlbCh0aGlzLmNoYXJ0LmRhdGEuZGF0YXNldHNbZV0uZGF0YVt0XSl9LGdldFBpeGVsRm9yVmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZ2V0UGl4ZWxGb3JEZWNpbWFsKCgrdGhpcy5nZXRSaWdodFZhbHVlKHQpLXRoaXMuX3N0YXJ0VmFsdWUpL3RoaXMuX3ZhbHVlUmFuZ2UpfSxnZXRWYWx1ZUZvclBpeGVsOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9zdGFydFZhbHVlK3RoaXMuZ2V0RGVjaW1hbEZvclBpeGVsKHQpKnRoaXMuX3ZhbHVlUmFuZ2V9LGdldFBpeGVsRm9yVGljazpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnRpY2tzQXNOdW1iZXJzO3JldHVybiB0PDB8fHQ+ZS5sZW5ndGgtMT9udWxsOnRoaXMuZ2V0UGl4ZWxGb3JWYWx1ZShlW3RdKX19KSxfbj15bjt4bi5fZGVmYXVsdHM9X247dmFyIFNuPUIudmFsdWVPckRlZmF1bHQsQ249Qi5tYXRoLmxvZzEwLGtuPXtwb3NpdGlvbjoibGVmdCIsdGlja3M6e2NhbGxiYWNrOkplLmZvcm1hdHRlcnMubG9nYXJpdGhtaWN9fTtmdW5jdGlvbiBUbih0LGUpe3JldHVybiBCLmlzRmluaXRlKHQpJiZ0Pj0wP3Q6ZX12YXIgQW49aG4uZXh0ZW5kKHtkZXRlcm1pbmVEYXRhTGltaXRzOmZ1bmN0aW9uKCl7dmFyIHQsZSxuLGkscixvLGE9dGhpcyxzPWEub3B0aW9ucyxsPWEuY2hhcnQsYz1sLmRhdGEuZGF0YXNldHMsdT1hLmlzSG9yaXpvbnRhbCgpO2Z1bmN0aW9uIGQodCl7cmV0dXJuIHU/dC54QXhpc0lEPT09YS5pZDp0LnlBeGlzSUQ9PT1hLmlkfWEubWluPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxhLm1heD1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksYS5taW5Ob3RaZXJvPU51bWJlci5QT1NJVElWRV9JTkZJTklUWTt2YXIgaD1zLnN0YWNrZWQ7aWYodm9pZCAwPT09aClmb3IodD0wO3Q8Yy5sZW5ndGg7dCsrKWlmKGU9bC5nZXREYXRhc2V0TWV0YSh0KSxsLmlzRGF0YXNldFZpc2libGUodCkmJmQoZSkmJnZvaWQgMCE9PWUuc3RhY2spe2g9ITA7YnJlYWt9aWYocy5zdGFja2VkfHxoKXt2YXIgZj17fTtmb3IodD0wO3Q8Yy5sZW5ndGg7dCsrKXt2YXIgcD1bKGU9bC5nZXREYXRhc2V0TWV0YSh0KSkudHlwZSx2b2lkIDA9PT1zLnN0YWNrZWQmJnZvaWQgMD09PWUuc3RhY2s/dDoiIixlLnN0YWNrXS5qb2luKCIuIik7aWYobC5pc0RhdGFzZXRWaXNpYmxlKHQpJiZkKGUpKWZvcih2b2lkIDA9PT1mW3BdJiYoZltwXT1bXSkscj0wLG89KGk9Y1t0XS5kYXRhKS5sZW5ndGg7cjxvO3IrKyl7dmFyIGc9ZltwXTtuPWEuX3BhcnNlVmFsdWUoaVtyXSksaXNOYU4obi5taW4pfHxpc05hTihuLm1heCl8fGUuZGF0YVtyXS5oaWRkZW58fG4ubWluPDB8fG4ubWF4PDB8fChnW3JdPWdbcl18fDAsZ1tyXSs9bi5tYXgpfX1CLmVhY2goZiwoZnVuY3Rpb24odCl7aWYodC5sZW5ndGg+MCl7dmFyIGU9Qi5taW4odCksbj1CLm1heCh0KTthLm1pbj1NYXRoLm1pbihhLm1pbixlKSxhLm1heD1NYXRoLm1heChhLm1heCxuKX19KSl9ZWxzZSBmb3IodD0wO3Q8Yy5sZW5ndGg7dCsrKWlmKGU9bC5nZXREYXRhc2V0TWV0YSh0KSxsLmlzRGF0YXNldFZpc2libGUodCkmJmQoZSkpZm9yKHI9MCxvPShpPWNbdF0uZGF0YSkubGVuZ3RoO3I8bztyKyspbj1hLl9wYXJzZVZhbHVlKGlbcl0pLGlzTmFOKG4ubWluKXx8aXNOYU4obi5tYXgpfHxlLmRhdGFbcl0uaGlkZGVufHxuLm1pbjwwfHxuLm1heDwwfHwoYS5taW49TWF0aC5taW4obi5taW4sYS5taW4pLGEubWF4PU1hdGgubWF4KG4ubWF4LGEubWF4KSwwIT09bi5taW4mJihhLm1pbk5vdFplcm89TWF0aC5taW4obi5taW4sYS5taW5Ob3RaZXJvKSkpO2EubWluPUIuaXNGaW5pdGUoYS5taW4pP2EubWluOm51bGwsYS5tYXg9Qi5pc0Zpbml0ZShhLm1heCk/YS5tYXg6bnVsbCxhLm1pbk5vdFplcm89Qi5pc0Zpbml0ZShhLm1pbk5vdFplcm8pP2EubWluTm90WmVybzpudWxsLHRoaXMuaGFuZGxlVGlja1JhbmdlT3B0aW9ucygpfSxoYW5kbGVUaWNrUmFuZ2VPcHRpb25zOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXQub3B0aW9ucy50aWNrczt0Lm1pbj1UbihlLm1pbix0Lm1pbiksdC5tYXg9VG4oZS5tYXgsdC5tYXgpLHQubWluPT09dC5tYXgmJigwIT09dC5taW4mJm51bGwhPT10Lm1pbj8odC5taW49TWF0aC5wb3coMTAsTWF0aC5mbG9vcihDbih0Lm1pbikpLTEpLHQubWF4PU1hdGgucG93KDEwLE1hdGguZmxvb3IoQ24odC5tYXgpKSsxKSk6KHQubWluPTEsdC5tYXg9MTApKSxudWxsPT09dC5taW4mJih0Lm1pbj1NYXRoLnBvdygxMCxNYXRoLmZsb29yKENuKHQubWF4KSktMSkpLG51bGw9PT10Lm1heCYmKHQubWF4PTAhPT10Lm1pbj9NYXRoLnBvdygxMCxNYXRoLmZsb29yKENuKHQubWluKSkrMSk6MTApLG51bGw9PT10Lm1pbk5vdFplcm8mJih0Lm1pbj4wP3QubWluTm90WmVybz10Lm1pbjp0Lm1heDwxP3QubWluTm90WmVybz1NYXRoLnBvdygxMCxNYXRoLmZsb29yKENuKHQubWF4KSkpOnQubWluTm90WmVybz0xKX0sYnVpbGRUaWNrczpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10Lm9wdGlvbnMudGlja3Msbj0hdC5pc0hvcml6b250YWwoKSxpPXttaW46VG4oZS5taW4pLG1heDpUbihlLm1heCl9LHI9dC50aWNrcz1mdW5jdGlvbih0LGUpe3ZhciBuLGkscj1bXSxvPVNuKHQubWluLE1hdGgucG93KDEwLE1hdGguZmxvb3IoQ24oZS5taW4pKSkpLGE9TWF0aC5mbG9vcihDbihlLm1heCkpLHM9TWF0aC5jZWlsKGUubWF4L01hdGgucG93KDEwLGEpKTswPT09bz8obj1NYXRoLmZsb29yKENuKGUubWluTm90WmVybykpLGk9TWF0aC5mbG9vcihlLm1pbk5vdFplcm8vTWF0aC5wb3coMTAsbikpLHIucHVzaChvKSxvPWkqTWF0aC5wb3coMTAsbikpOihuPU1hdGguZmxvb3IoQ24obykpLGk9TWF0aC5mbG9vcihvL01hdGgucG93KDEwLG4pKSk7dmFyIGw9bjwwP01hdGgucG93KDEwLE1hdGguYWJzKG4pKToxO2Rve3IucHVzaChvKSwxMD09KytpJiYoaT0xLGw9KytuPj0wPzE6bCksbz1NYXRoLnJvdW5kKGkqTWF0aC5wb3coMTAsbikqbCkvbH13aGlsZShuPGF8fG49PT1hJiZpPHMpO3ZhciBjPVNuKHQubWF4LG8pO3JldHVybiByLnB1c2goYykscn0oaSx0KTt0Lm1heD1CLm1heChyKSx0Lm1pbj1CLm1pbihyKSxlLnJldmVyc2U/KG49IW4sdC5zdGFydD10Lm1heCx0LmVuZD10Lm1pbik6KHQuc3RhcnQ9dC5taW4sdC5lbmQ9dC5tYXgpLG4mJnIucmV2ZXJzZSgpfSxjb252ZXJ0VGlja3NUb0xhYmVsczpmdW5jdGlvbigpe3RoaXMudGlja1ZhbHVlcz10aGlzLnRpY2tzLnNsaWNlKCksaG4ucHJvdG90eXBlLmNvbnZlcnRUaWNrc1RvTGFiZWxzLmNhbGwodGhpcyl9LGdldExhYmVsRm9ySW5kZXg6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fZ2V0U2NhbGVMYWJlbCh0aGlzLmNoYXJ0LmRhdGEuZGF0YXNldHNbZV0uZGF0YVt0XSl9LGdldFBpeGVsRm9yVGljazpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnRpY2tWYWx1ZXM7cmV0dXJuIHQ8MHx8dD5lLmxlbmd0aC0xP251bGw6dGhpcy5nZXRQaXhlbEZvclZhbHVlKGVbdF0pfSxfZ2V0Rmlyc3RUaWNrVmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9TWF0aC5mbG9vcihDbih0KSk7cmV0dXJuIE1hdGguZmxvb3IodC9NYXRoLnBvdygxMCxlKSkqTWF0aC5wb3coMTAsZSl9LF9jb25maWd1cmU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dC5taW4sbj0wO2huLnByb3RvdHlwZS5fY29uZmlndXJlLmNhbGwodCksMD09PWUmJihlPXQuX2dldEZpcnN0VGlja1ZhbHVlKHQubWluTm90WmVybyksbj1Tbih0Lm9wdGlvbnMudGlja3MuZm9udFNpemUsUi5nbG9iYWwuZGVmYXVsdEZvbnRTaXplKS90Ll9sZW5ndGgpLHQuX3N0YXJ0VmFsdWU9Q24oZSksdC5fdmFsdWVPZmZzZXQ9bix0Ll92YWx1ZVJhbmdlPShDbih0Lm1heCktQ24oZSkpLygxLW4pfSxnZXRQaXhlbEZvclZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMsbj0wO3JldHVybih0PStlLmdldFJpZ2h0VmFsdWUodCkpPmUubWluJiZ0PjAmJihuPShDbih0KS1lLl9zdGFydFZhbHVlKS9lLl92YWx1ZVJhbmdlK2UuX3ZhbHVlT2Zmc2V0KSxlLmdldFBpeGVsRm9yRGVjaW1hbChuKX0sZ2V0VmFsdWVGb3JQaXhlbDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLG49ZS5nZXREZWNpbWFsRm9yUGl4ZWwodCk7cmV0dXJuIDA9PT1uJiYwPT09ZS5taW4/MDpNYXRoLnBvdygxMCxlLl9zdGFydFZhbHVlKyhuLWUuX3ZhbHVlT2Zmc2V0KSplLl92YWx1ZVJhbmdlKX19KSxEbj1rbjtBbi5fZGVmYXVsdHM9RG47dmFyIEVuPUIudmFsdWVPckRlZmF1bHQsTW49Qi52YWx1ZUF0SW5kZXhPckRlZmF1bHQsT249Qi5vcHRpb25zLnJlc29sdmUsSW49e2Rpc3BsYXk6ITAsYW5pbWF0ZTohMCxwb3NpdGlvbjoiY2hhcnRBcmVhIixhbmdsZUxpbmVzOntkaXNwbGF5OiEwLGNvbG9yOiJyZ2JhKDAsMCwwLDAuMSkiLGxpbmVXaWR0aDoxLGJvcmRlckRhc2g6W10sYm9yZGVyRGFzaE9mZnNldDowfSxncmlkTGluZXM6e2NpcmN1bGFyOiExfSx0aWNrczp7c2hvd0xhYmVsQmFja2Ryb3A6ITAsYmFja2Ryb3BDb2xvcjoicmdiYSgyNTUsMjU1LDI1NSwwLjc1KSIsYmFja2Ryb3BQYWRkaW5nWToyLGJhY2tkcm9wUGFkZGluZ1g6MixjYWxsYmFjazpKZS5mb3JtYXR0ZXJzLmxpbmVhcn0scG9pbnRMYWJlbHM6e2Rpc3BsYXk6ITAsZm9udFNpemU6MTAsY2FsbGJhY2s6ZnVuY3Rpb24odCl7cmV0dXJuIHR9fX07ZnVuY3Rpb24gUG4odCl7dmFyIGU9dC50aWNrcztyZXR1cm4gZS5kaXNwbGF5JiZ0LmRpc3BsYXk/RW4oZS5mb250U2l6ZSxSLmdsb2JhbC5kZWZhdWx0Rm9udFNpemUpKzIqZS5iYWNrZHJvcFBhZGRpbmdZOjB9ZnVuY3Rpb24gTG4odCxlLG4saSxyKXtyZXR1cm4gdD09PWl8fHQ9PT1yP3tzdGFydDplLW4vMixlbmQ6ZStuLzJ9OnQ8aXx8dD5yP3tzdGFydDplLW4sZW5kOmV9OntzdGFydDplLGVuZDplK259fWZ1bmN0aW9uIE5uKHQpe3JldHVybiAwPT09dHx8MTgwPT09dD8iY2VudGVyIjp0PDE4MD8ibGVmdCI6InJpZ2h0In1mdW5jdGlvbiBGbih0LGUsbixpKXt2YXIgcixvLGE9bi55K2kvMjtpZihCLmlzQXJyYXkoZSkpZm9yKHI9MCxvPWUubGVuZ3RoO3I8bzsrK3IpdC5maWxsVGV4dChlW3JdLG4ueCxhKSxhKz1pO2Vsc2UgdC5maWxsVGV4dChlLG4ueCxhKX1mdW5jdGlvbiBSbih0LGUsbil7OTA9PT10fHwyNzA9PT10P24ueS09ZS5oLzI6KHQ+MjcwfHx0PDkwKSYmKG4ueS09ZS5oKX1mdW5jdGlvbiBqbih0KXtyZXR1cm4gQi5pc051bWJlcih0KT90OjB9dmFyICRuPXZuLmV4dGVuZCh7c2V0RGltZW5zaW9uczpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dC53aWR0aD10Lm1heFdpZHRoLHQuaGVpZ2h0PXQubWF4SGVpZ2h0LHQucGFkZGluZ1RvcD1Qbih0Lm9wdGlvbnMpLzIsdC54Q2VudGVyPU1hdGguZmxvb3IodC53aWR0aC8yKSx0LnlDZW50ZXI9TWF0aC5mbG9vcigodC5oZWlnaHQtdC5wYWRkaW5nVG9wKS8yKSx0LmRyYXdpbmdBcmVhPU1hdGgubWluKHQuaGVpZ2h0LXQucGFkZGluZ1RvcCx0LndpZHRoKS8yfSxkZXRlcm1pbmVEYXRhTGltaXRzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXQuY2hhcnQsbj1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksaT1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7Qi5lYWNoKGUuZGF0YS5kYXRhc2V0cywoZnVuY3Rpb24ocixvKXtpZihlLmlzRGF0YXNldFZpc2libGUobykpe3ZhciBhPWUuZ2V0RGF0YXNldE1ldGEobyk7Qi5lYWNoKHIuZGF0YSwoZnVuY3Rpb24oZSxyKXt2YXIgbz0rdC5nZXRSaWdodFZhbHVlKGUpO2lzTmFOKG8pfHxhLmRhdGFbcl0uaGlkZGVufHwobj1NYXRoLm1pbihvLG4pLGk9TWF0aC5tYXgobyxpKSl9KSl9fSkpLHQubWluPW49PT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk/MDpuLHQubWF4PWk9PT1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk/MDppLHQuaGFuZGxlVGlja1JhbmdlT3B0aW9ucygpfSxfY29tcHV0ZVRpY2tMaW1pdDpmdW5jdGlvbigpe3JldHVybiBNYXRoLmNlaWwodGhpcy5kcmF3aW5nQXJlYS9Qbih0aGlzLm9wdGlvbnMpKX0sY29udmVydFRpY2tzVG9MYWJlbHM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3ZuLnByb3RvdHlwZS5jb252ZXJ0VGlja3NUb0xhYmVscy5jYWxsKHQpLHQucG9pbnRMYWJlbHM9dC5jaGFydC5kYXRhLmxhYmVscy5tYXAoKGZ1bmN0aW9uKCl7dmFyIGU9Qi5jYWxsYmFjayh0Lm9wdGlvbnMucG9pbnRMYWJlbHMuY2FsbGJhY2ssYXJndW1lbnRzLHQpO3JldHVybiBlfHwwPT09ZT9lOiIifSkpfSxnZXRMYWJlbEZvckluZGV4OmZ1bmN0aW9uKHQsZSl7cmV0dXJuK3RoaXMuZ2V0UmlnaHRWYWx1ZSh0aGlzLmNoYXJ0LmRhdGEuZGF0YXNldHNbZV0uZGF0YVt0XSl9LGZpdDpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3B0aW9uczt0LmRpc3BsYXkmJnQucG9pbnRMYWJlbHMuZGlzcGxheT9mdW5jdGlvbih0KXt2YXIgZSxuLGkscj1CLm9wdGlvbnMuX3BhcnNlRm9udCh0Lm9wdGlvbnMucG9pbnRMYWJlbHMpLG89e2w6MCxyOnQud2lkdGgsdDowLGI6dC5oZWlnaHQtdC5wYWRkaW5nVG9wfSxhPXt9O3QuY3R4LmZvbnQ9ci5zdHJpbmcsdC5fcG9pbnRMYWJlbFNpemVzPVtdO3ZhciBzLGwsYyx1PXQuY2hhcnQuZGF0YS5sYWJlbHMubGVuZ3RoO2ZvcihlPTA7ZTx1O2UrKyl7aT10LmdldFBvaW50UG9zaXRpb24oZSx0LmRyYXdpbmdBcmVhKzUpLHM9dC5jdHgsbD1yLmxpbmVIZWlnaHQsYz10LnBvaW50TGFiZWxzW2VdLG49Qi5pc0FycmF5KGMpP3t3OkIubG9uZ2VzdFRleHQocyxzLmZvbnQsYyksaDpjLmxlbmd0aCpsfTp7dzpzLm1lYXN1cmVUZXh0KGMpLndpZHRoLGg6bH0sdC5fcG9pbnRMYWJlbFNpemVzW2VdPW47dmFyIGQ9dC5nZXRJbmRleEFuZ2xlKGUpLGg9Qi50b0RlZ3JlZXMoZCklMzYwLGY9TG4oaCxpLngsbi53LDAsMTgwKSxwPUxuKGgsaS55LG4uaCw5MCwyNzApO2Yuc3RhcnQ8by5sJiYoby5sPWYuc3RhcnQsYS5sPWQpLGYuZW5kPm8uciYmKG8ucj1mLmVuZCxhLnI9ZCkscC5zdGFydDxvLnQmJihvLnQ9cC5zdGFydCxhLnQ9ZCkscC5lbmQ+by5iJiYoby5iPXAuZW5kLGEuYj1kKX10LnNldFJlZHVjdGlvbnModC5kcmF3aW5nQXJlYSxvLGEpfSh0aGlzKTp0aGlzLnNldENlbnRlclBvaW50KDAsMCwwLDApfSxzZXRSZWR1Y3Rpb25zOmZ1bmN0aW9uKHQsZSxuKXt2YXIgaT10aGlzLHI9ZS5sL01hdGguc2luKG4ubCksbz1NYXRoLm1heChlLnItaS53aWR0aCwwKS9NYXRoLnNpbihuLnIpLGE9LWUudC9NYXRoLmNvcyhuLnQpLHM9LU1hdGgubWF4KGUuYi0oaS5oZWlnaHQtaS5wYWRkaW5nVG9wKSwwKS9NYXRoLmNvcyhuLmIpO3I9am4ociksbz1qbihvKSxhPWpuKGEpLHM9am4ocyksaS5kcmF3aW5nQXJlYT1NYXRoLm1pbihNYXRoLmZsb29yKHQtKHIrbykvMiksTWF0aC5mbG9vcih0LShhK3MpLzIpKSxpLnNldENlbnRlclBvaW50KHIsbyxhLHMpfSxzZXRDZW50ZXJQb2ludDpmdW5jdGlvbih0LGUsbixpKXt2YXIgcj10aGlzLG89ci53aWR0aC1lLXIuZHJhd2luZ0FyZWEsYT10K3IuZHJhd2luZ0FyZWEscz1uK3IuZHJhd2luZ0FyZWEsbD1yLmhlaWdodC1yLnBhZGRpbmdUb3AtaS1yLmRyYXdpbmdBcmVhO3IueENlbnRlcj1NYXRoLmZsb29yKChhK28pLzIrci5sZWZ0KSxyLnlDZW50ZXI9TWF0aC5mbG9vcigocytsKS8yK3IudG9wK3IucGFkZGluZ1RvcCl9LGdldEluZGV4QW5nbGU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5jaGFydCxuPSh0KigzNjAvZS5kYXRhLmxhYmVscy5sZW5ndGgpKygoZS5vcHRpb25zfHx7fSkuc3RhcnRBbmdsZXx8MCkpJTM2MDtyZXR1cm4objwwP24rMzYwOm4pKk1hdGguUEkqMi8zNjB9LGdldERpc3RhbmNlRnJvbUNlbnRlckZvclZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7aWYoQi5pc051bGxPclVuZGVmKHQpKXJldHVybiBOYU47dmFyIG49ZS5kcmF3aW5nQXJlYS8oZS5tYXgtZS5taW4pO3JldHVybiBlLm9wdGlvbnMudGlja3MucmV2ZXJzZT8oZS5tYXgtdCkqbjoodC1lLm1pbikqbn0sZ2V0UG9pbnRQb3NpdGlvbjpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuZ2V0SW5kZXhBbmdsZSh0KS1NYXRoLlBJLzI7cmV0dXJue3g6TWF0aC5jb3MobikqZSt0aGlzLnhDZW50ZXIseTpNYXRoLnNpbihuKSplK3RoaXMueUNlbnRlcn19LGdldFBvaW50UG9zaXRpb25Gb3JWYWx1ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmdldFBvaW50UG9zaXRpb24odCx0aGlzLmdldERpc3RhbmNlRnJvbUNlbnRlckZvclZhbHVlKGUpKX0sZ2V0QmFzZVBvc2l0aW9uOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMubWluLG49dGhpcy5tYXg7cmV0dXJuIHRoaXMuZ2V0UG9pbnRQb3NpdGlvbkZvclZhbHVlKHR8fDAsdGhpcy5iZWdpbkF0WmVybz8wOmU8MCYmbjwwP246ZT4wJiZuPjA/ZTowKX0sX2RyYXdHcmlkOmZ1bmN0aW9uKCl7dmFyIHQsZSxuLGk9dGhpcyxyPWkuY3R4LG89aS5vcHRpb25zLGE9by5ncmlkTGluZXMscz1vLmFuZ2xlTGluZXMsbD1FbihzLmxpbmVXaWR0aCxhLmxpbmVXaWR0aCksYz1FbihzLmNvbG9yLGEuY29sb3IpO2lmKG8ucG9pbnRMYWJlbHMuZGlzcGxheSYmZnVuY3Rpb24odCl7dmFyIGU9dC5jdHgsbj10Lm9wdGlvbnMsaT1uLnBvaW50TGFiZWxzLHI9UG4obiksbz10LmdldERpc3RhbmNlRnJvbUNlbnRlckZvclZhbHVlKG4udGlja3MucmV2ZXJzZT90Lm1pbjp0Lm1heCksYT1CLm9wdGlvbnMuX3BhcnNlRm9udChpKTtlLnNhdmUoKSxlLmZvbnQ9YS5zdHJpbmcsZS50ZXh0QmFzZWxpbmU9Im1pZGRsZSI7Zm9yKHZhciBzPXQuY2hhcnQuZGF0YS5sYWJlbHMubGVuZ3RoLTE7cz49MDtzLS0pe3ZhciBsPTA9PT1zP3IvMjowLGM9dC5nZXRQb2ludFBvc2l0aW9uKHMsbytsKzUpLHU9TW4oaS5mb250Q29sb3IscyxSLmdsb2JhbC5kZWZhdWx0Rm9udENvbG9yKTtlLmZpbGxTdHlsZT11O3ZhciBkPXQuZ2V0SW5kZXhBbmdsZShzKSxoPUIudG9EZWdyZWVzKGQpO2UudGV4dEFsaWduPU5uKGgpLFJuKGgsdC5fcG9pbnRMYWJlbFNpemVzW3NdLGMpLEZuKGUsdC5wb2ludExhYmVsc1tzXSxjLGEubGluZUhlaWdodCl9ZS5yZXN0b3JlKCl9KGkpLGEuZGlzcGxheSYmQi5lYWNoKGkudGlja3MsKGZ1bmN0aW9uKHQsbil7MCE9PW4mJihlPWkuZ2V0RGlzdGFuY2VGcm9tQ2VudGVyRm9yVmFsdWUoaS50aWNrc0FzTnVtYmVyc1tuXSksZnVuY3Rpb24odCxlLG4saSl7dmFyIHIsbz10LmN0eCxhPWUuY2lyY3VsYXIscz10LmNoYXJ0LmRhdGEubGFiZWxzLmxlbmd0aCxsPU1uKGUuY29sb3IsaS0xKSxjPU1uKGUubGluZVdpZHRoLGktMSk7aWYoKGF8fHMpJiZsJiZjKXtpZihvLnNhdmUoKSxvLnN0cm9rZVN0eWxlPWwsby5saW5lV2lkdGg9YyxvLnNldExpbmVEYXNoJiYoby5zZXRMaW5lRGFzaChlLmJvcmRlckRhc2h8fFtdKSxvLmxpbmVEYXNoT2Zmc2V0PWUuYm9yZGVyRGFzaE9mZnNldHx8MCksby5iZWdpblBhdGgoKSxhKW8uYXJjKHQueENlbnRlcix0LnlDZW50ZXIsbiwwLDIqTWF0aC5QSSk7ZWxzZXtyPXQuZ2V0UG9pbnRQb3NpdGlvbigwLG4pLG8ubW92ZVRvKHIueCxyLnkpO2Zvcih2YXIgdT0xO3U8czt1Kyspcj10LmdldFBvaW50UG9zaXRpb24odSxuKSxvLmxpbmVUbyhyLngsci55KX1vLmNsb3NlUGF0aCgpLG8uc3Ryb2tlKCksby5yZXN0b3JlKCl9fShpLGEsZSxuKSl9KSkscy5kaXNwbGF5JiZsJiZjKXtmb3Ioci5zYXZlKCksci5saW5lV2lkdGg9bCxyLnN0cm9rZVN0eWxlPWMsci5zZXRMaW5lRGFzaCYmKHIuc2V0TGluZURhc2goT24oW3MuYm9yZGVyRGFzaCxhLmJvcmRlckRhc2gsW11dKSksci5saW5lRGFzaE9mZnNldD1Pbihbcy5ib3JkZXJEYXNoT2Zmc2V0LGEuYm9yZGVyRGFzaE9mZnNldCwwXSkpLHQ9aS5jaGFydC5kYXRhLmxhYmVscy5sZW5ndGgtMTt0Pj0wO3QtLSllPWkuZ2V0RGlzdGFuY2VGcm9tQ2VudGVyRm9yVmFsdWUoby50aWNrcy5yZXZlcnNlP2kubWluOmkubWF4KSxuPWkuZ2V0UG9pbnRQb3NpdGlvbih0LGUpLHIuYmVnaW5QYXRoKCksci5tb3ZlVG8oaS54Q2VudGVyLGkueUNlbnRlciksci5saW5lVG8obi54LG4ueSksci5zdHJva2UoKTtyLnJlc3RvcmUoKX19LF9kcmF3TGFiZWxzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXQuY3R4LG49dC5vcHRpb25zLnRpY2tzO2lmKG4uZGlzcGxheSl7dmFyIGkscixvPXQuZ2V0SW5kZXhBbmdsZSgwKSxhPUIub3B0aW9ucy5fcGFyc2VGb250KG4pLHM9RW4obi5mb250Q29sb3IsUi5nbG9iYWwuZGVmYXVsdEZvbnRDb2xvcik7ZS5zYXZlKCksZS5mb250PWEuc3RyaW5nLGUudHJhbnNsYXRlKHQueENlbnRlcix0LnlDZW50ZXIpLGUucm90YXRlKG8pLGUudGV4dEFsaWduPSJjZW50ZXIiLGUudGV4dEJhc2VsaW5lPSJtaWRkbGUiLEIuZWFjaCh0LnRpY2tzLChmdW5jdGlvbihvLGwpeygwIT09bHx8bi5yZXZlcnNlKSYmKGk9dC5nZXREaXN0YW5jZUZyb21DZW50ZXJGb3JWYWx1ZSh0LnRpY2tzQXNOdW1iZXJzW2xdKSxuLnNob3dMYWJlbEJhY2tkcm9wJiYocj1lLm1lYXN1cmVUZXh0KG8pLndpZHRoLGUuZmlsbFN0eWxlPW4uYmFja2Ryb3BDb2xvcixlLmZpbGxSZWN0KC1yLzItbi5iYWNrZHJvcFBhZGRpbmdYLC1pLWEuc2l6ZS8yLW4uYmFja2Ryb3BQYWRkaW5nWSxyKzIqbi5iYWNrZHJvcFBhZGRpbmdYLGEuc2l6ZSsyKm4uYmFja2Ryb3BQYWRkaW5nWSkpLGUuZmlsbFN0eWxlPXMsZS5maWxsVGV4dChvLDAsLWkpKX0pKSxlLnJlc3RvcmUoKX19LF9kcmF3VGl0bGU6Qi5ub29wfSksem49SW47JG4uX2RlZmF1bHRzPXpuO3ZhciBIbj1CLl9kZXByZWNhdGVkLEJuPUIub3B0aW9ucy5yZXNvbHZlLHFuPUIudmFsdWVPckRlZmF1bHQsV249TnVtYmVyLk1JTl9TQUZFX0lOVEVHRVJ8fC05MDA3MTk5MjU0NzQwOTkxLFVuPU51bWJlci5NQVhfU0FGRV9JTlRFR0VSfHw5MDA3MTk5MjU0NzQwOTkxLFZuPXttaWxsaXNlY29uZDp7Y29tbW9uOiEwLHNpemU6MSxzdGVwczoxZTN9LHNlY29uZDp7Y29tbW9uOiEwLHNpemU6MWUzLHN0ZXBzOjYwfSxtaW51dGU6e2NvbW1vbjohMCxzaXplOjZlNCxzdGVwczo2MH0saG91cjp7Y29tbW9uOiEwLHNpemU6MzZlNSxzdGVwczoyNH0sZGF5Ontjb21tb246ITAsc2l6ZTo4NjRlNSxzdGVwczozMH0sd2Vlazp7Y29tbW9uOiExLHNpemU6NjA0OGU1LHN0ZXBzOjR9LG1vbnRoOntjb21tb246ITAsc2l6ZToyNjI4ZTYsc3RlcHM6MTJ9LHF1YXJ0ZXI6e2NvbW1vbjohMSxzaXplOjc4ODRlNixzdGVwczo0fSx5ZWFyOntjb21tb246ITAsc2l6ZTozMTU0ZTd9fSxZbj1PYmplY3Qua2V5cyhWbik7ZnVuY3Rpb24gR24odCxlKXtyZXR1cm4gdC1lfWZ1bmN0aW9uIFhuKHQpe3JldHVybiBCLnZhbHVlT3JEZWZhdWx0KHQudGltZS5taW4sdC50aWNrcy5taW4pfWZ1bmN0aW9uIFFuKHQpe3JldHVybiBCLnZhbHVlT3JEZWZhdWx0KHQudGltZS5tYXgsdC50aWNrcy5tYXgpfWZ1bmN0aW9uIEtuKHQsZSxuLGkpe3ZhciByPWZ1bmN0aW9uKHQsZSxuKXtmb3IodmFyIGkscixvLGE9MCxzPXQubGVuZ3RoLTE7YT49MCYmYTw9czspe2lmKHI9dFsoaT1hK3M+PjEpLTFdfHxudWxsLG89dFtpXSwhcilyZXR1cm57bG86bnVsbCxoaTpvfTtpZihvW2VdPG4pYT1pKzE7ZWxzZXtpZighKHJbZV0+bikpcmV0dXJue2xvOnIsaGk6b307cz1pLTF9fXJldHVybntsbzpvLGhpOm51bGx9fSh0LGUsbiksbz1yLmxvP3IuaGk/ci5sbzp0W3QubGVuZ3RoLTJdOnRbMF0sYT1yLmxvP3IuaGk/ci5oaTp0W3QubGVuZ3RoLTFdOnRbMV0scz1hW2VdLW9bZV0sbD1zPyhuLW9bZV0pL3M6MCxjPShhW2ldLW9baV0pKmw7cmV0dXJuIG9baV0rY31mdW5jdGlvbiBKbih0LGUpe3ZhciBuPXQuX2FkYXB0ZXIsaT10Lm9wdGlvbnMudGltZSxyPWkucGFyc2VyLG89cnx8aS5mb3JtYXQsYT1lO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiByJiYoYT1yKGEpKSxCLmlzRmluaXRlKGEpfHwoYT0ic3RyaW5nIj09dHlwZW9mIG8/bi5wYXJzZShhLG8pOm4ucGFyc2UoYSkpLG51bGwhPT1hPythOihyfHwiZnVuY3Rpb24iIT10eXBlb2Ygb3x8KGE9byhlKSxCLmlzRmluaXRlKGEpfHwoYT1uLnBhcnNlKGEpKSksYSl9ZnVuY3Rpb24gWm4odCxlKXtpZihCLmlzTnVsbE9yVW5kZWYoZSkpcmV0dXJuIG51bGw7dmFyIG49dC5vcHRpb25zLnRpbWUsaT1Kbih0LHQuZ2V0UmlnaHRWYWx1ZShlKSk7cmV0dXJuIG51bGw9PT1pfHxuLnJvdW5kJiYoaT0rdC5fYWRhcHRlci5zdGFydE9mKGksbi5yb3VuZCkpLGl9ZnVuY3Rpb24gdGkodCxlLG4saSl7dmFyIHIsbyxhLHM9WW4ubGVuZ3RoO2ZvcihyPVluLmluZGV4T2YodCk7cjxzLTE7KytyKWlmKGE9KG89Vm5bWW5bcl1dKS5zdGVwcz9vLnN0ZXBzOlVuLG8uY29tbW9uJiZNYXRoLmNlaWwoKG4tZSkvKGEqby5zaXplKSk8PWkpcmV0dXJuIFluW3JdO3JldHVybiBZbltzLTFdfWZ1bmN0aW9uIGVpKHQsZSxuKXt2YXIgaSxyLG89W10sYT17fSxzPWUubGVuZ3RoO2ZvcihpPTA7aTxzOysraSlhW3I9ZVtpXV09aSxvLnB1c2goe3ZhbHVlOnIsbWFqb3I6ITF9KTtyZXR1cm4gMCE9PXMmJm4/ZnVuY3Rpb24odCxlLG4saSl7dmFyIHIsbyxhPXQuX2FkYXB0ZXIscz0rYS5zdGFydE9mKGVbMF0udmFsdWUsaSksbD1lW2UubGVuZ3RoLTFdLnZhbHVlO2ZvcihyPXM7cjw9bDtyPSthLmFkZChyLDEsaSkpKG89bltyXSk+PTAmJihlW29dLm1ham9yPSEwKTtyZXR1cm4gZX0odCxvLGEsbik6b312YXIgbmk9aG4uZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKCl7dGhpcy5tZXJnZVRpY2tzT3B0aW9ucygpLGhuLnByb3RvdHlwZS5pbml0aWFsaXplLmNhbGwodGhpcyl9LHVwZGF0ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsZT10Lm9wdGlvbnMsbj1lLnRpbWV8fChlLnRpbWU9e30pLGk9dC5fYWRhcHRlcj1uZXcgS2UuX2RhdGUoZS5hZGFwdGVycy5kYXRlKTtyZXR1cm4gSG4oInRpbWUgc2NhbGUiLG4uZm9ybWF0LCJ0aW1lLmZvcm1hdCIsInRpbWUucGFyc2VyIiksSG4oInRpbWUgc2NhbGUiLG4ubWluLCJ0aW1lLm1pbiIsInRpY2tzLm1pbiIpLEhuKCJ0aW1lIHNjYWxlIixuLm1heCwidGltZS5tYXgiLCJ0aWNrcy5tYXgiKSxCLm1lcmdlSWYobi5kaXNwbGF5Rm9ybWF0cyxpLmZvcm1hdHMoKSksaG4ucHJvdG90eXBlLnVwZGF0ZS5hcHBseSh0LGFyZ3VtZW50cyl9LGdldFJpZ2h0VmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQmJnZvaWQgMCE9PXQudCYmKHQ9dC50KSxobi5wcm90b3R5cGUuZ2V0UmlnaHRWYWx1ZS5jYWxsKHRoaXMsdCl9LGRldGVybWluZURhdGFMaW1pdHM6ZnVuY3Rpb24oKXt2YXIgdCxlLG4saSxyLG8sYSxzPXRoaXMsbD1zLmNoYXJ0LGM9cy5fYWRhcHRlcix1PXMub3B0aW9ucyxkPXUudGltZS51bml0fHwiZGF5IixoPVVuLGY9V24scD1bXSxnPVtdLG09W10sdj1zLl9nZXRMYWJlbHMoKTtmb3IodD0wLG49di5sZW5ndGg7dDxuOysrdCltLnB1c2goWm4ocyx2W3RdKSk7Zm9yKHQ9MCxuPShsLmRhdGEuZGF0YXNldHN8fFtdKS5sZW5ndGg7dDxuOysrdClpZihsLmlzRGF0YXNldFZpc2libGUodCkpaWYocj1sLmRhdGEuZGF0YXNldHNbdF0uZGF0YSxCLmlzT2JqZWN0KHJbMF0pKWZvcihnW3RdPVtdLGU9MCxpPXIubGVuZ3RoO2U8aTsrK2Upbz1abihzLHJbZV0pLHAucHVzaChvKSxnW3RdW2VdPW87ZWxzZSBnW3RdPW0uc2xpY2UoMCksYXx8KHA9cC5jb25jYXQobSksYT0hMCk7ZWxzZSBnW3RdPVtdO20ubGVuZ3RoJiYoaD1NYXRoLm1pbihoLG1bMF0pLGY9TWF0aC5tYXgoZixtW20ubGVuZ3RoLTFdKSkscC5sZW5ndGgmJihwPW4+MT9mdW5jdGlvbih0KXt2YXIgZSxuLGkscj17fSxvPVtdO2ZvcihlPTAsbj10Lmxlbmd0aDtlPG47KytlKXJbaT10W2VdXXx8KHJbaV09ITAsby5wdXNoKGkpKTtyZXR1cm4gb30ocCkuc29ydChHbik6cC5zb3J0KEduKSxoPU1hdGgubWluKGgscFswXSksZj1NYXRoLm1heChmLHBbcC5sZW5ndGgtMV0pKSxoPVpuKHMsWG4odSkpfHxoLGY9Wm4ocyxRbih1KSl8fGYsaD1oPT09VW4/K2Muc3RhcnRPZihEYXRlLm5vdygpLGQpOmgsZj1mPT09V24/K2MuZW5kT2YoRGF0ZS5ub3coKSxkKSsxOmYscy5taW49TWF0aC5taW4oaCxmKSxzLm1heD1NYXRoLm1heChoKzEsZikscy5fdGFibGU9W10scy5fdGltZXN0YW1wcz17ZGF0YTpwLGRhdGFzZXRzOmcsbGFiZWxzOm19fSxidWlsZFRpY2tzOmZ1bmN0aW9uKCl7dmFyIHQsZSxuLGk9dGhpcyxyPWkubWluLG89aS5tYXgsYT1pLm9wdGlvbnMscz1hLnRpY2tzLGw9YS50aW1lLGM9aS5fdGltZXN0YW1wcyx1PVtdLGQ9aS5nZXRMYWJlbENhcGFjaXR5KHIpLGg9cy5zb3VyY2UsZj1hLmRpc3RyaWJ1dGlvbjtmb3IoYz0iZGF0YSI9PT1ofHwiYXV0byI9PT1oJiYic2VyaWVzIj09PWY/Yy5kYXRhOiJsYWJlbHMiPT09aD9jLmxhYmVsczpmdW5jdGlvbih0LGUsbixpKXt2YXIgcixvPXQuX2FkYXB0ZXIsYT10Lm9wdGlvbnMscz1hLnRpbWUsbD1zLnVuaXR8fHRpKHMubWluVW5pdCxlLG4saSksYz1Cbihbcy5zdGVwU2l6ZSxzLnVuaXRTdGVwU2l6ZSwxXSksdT0id2VlayI9PT1sJiZzLmlzb1dlZWtkYXksZD1lLGg9W107aWYodSYmKGQ9K28uc3RhcnRPZihkLCJpc29XZWVrIix1KSksZD0rby5zdGFydE9mKGQsdT8iZGF5IjpsKSxvLmRpZmYobixlLGwpPjFlNSpjKXRocm93IGUrIiBhbmQgIituKyIgYXJlIHRvbyBmYXIgYXBhcnQgd2l0aCBzdGVwU2l6ZSBvZiAiK2MrIiAiK2w7Zm9yKHI9ZDtyPG47cj0rby5hZGQocixjLGwpKWgucHVzaChyKTtyZXR1cm4gciE9PW4mJiJ0aWNrcyIhPT1hLmJvdW5kc3x8aC5wdXNoKHIpLGh9KGkscixvLGQpLCJ0aWNrcyI9PT1hLmJvdW5kcyYmYy5sZW5ndGgmJihyPWNbMF0sbz1jW2MubGVuZ3RoLTFdKSxyPVpuKGksWG4oYSkpfHxyLG89Wm4oaSxRbihhKSl8fG8sdD0wLGU9Yy5sZW5ndGg7dDxlOysrdCkobj1jW3RdKT49ciYmbjw9byYmdS5wdXNoKG4pO3JldHVybiBpLm1pbj1yLGkubWF4PW8saS5fdW5pdD1sLnVuaXR8fChzLmF1dG9Ta2lwP3RpKGwubWluVW5pdCxpLm1pbixpLm1heCxkKTpmdW5jdGlvbih0LGUsbixpLHIpe3ZhciBvLGE7Zm9yKG89WW4ubGVuZ3RoLTE7bz49WW4uaW5kZXhPZihuKTtvLS0paWYoYT1ZbltvXSxWblthXS5jb21tb24mJnQuX2FkYXB0ZXIuZGlmZihyLGksYSk+PWUtMSlyZXR1cm4gYTtyZXR1cm4gWW5bbj9Zbi5pbmRleE9mKG4pOjBdfShpLHUubGVuZ3RoLGwubWluVW5pdCxpLm1pbixpLm1heCkpLGkuX21ham9yVW5pdD1zLm1ham9yLmVuYWJsZWQmJiJ5ZWFyIiE9PWkuX3VuaXQ/ZnVuY3Rpb24odCl7Zm9yKHZhciBlPVluLmluZGV4T2YodCkrMSxuPVluLmxlbmd0aDtlPG47KytlKWlmKFZuW1luW2VdXS5jb21tb24pcmV0dXJuIFluW2VdfShpLl91bml0KTp2b2lkIDAsaS5fdGFibGU9ZnVuY3Rpb24odCxlLG4saSl7aWYoImxpbmVhciI9PT1pfHwhdC5sZW5ndGgpcmV0dXJuW3t0aW1lOmUscG9zOjB9LHt0aW1lOm4scG9zOjF9XTt2YXIgcixvLGEscyxsLGM9W10sdT1bZV07Zm9yKHI9MCxvPXQubGVuZ3RoO3I8bzsrK3IpKHM9dFtyXSk+ZSYmczxuJiZ1LnB1c2gocyk7Zm9yKHUucHVzaChuKSxyPTAsbz11Lmxlbmd0aDtyPG87KytyKWw9dVtyKzFdLGE9dVtyLTFdLHM9dVtyXSx2b2lkIDAhPT1hJiZ2b2lkIDAhPT1sJiZNYXRoLnJvdW5kKChsK2EpLzIpPT09c3x8Yy5wdXNoKHt0aW1lOnMscG9zOnIvKG8tMSl9KTtyZXR1cm4gY30oaS5fdGltZXN0YW1wcy5kYXRhLHIsbyxmKSxpLl9vZmZzZXRzPWZ1bmN0aW9uKHQsZSxuLGkscil7dmFyIG8sYSxzPTAsbD0wO3JldHVybiByLm9mZnNldCYmZS5sZW5ndGgmJihvPUtuKHQsInRpbWUiLGVbMF0sInBvcyIpLHM9MT09PWUubGVuZ3RoPzEtbzooS24odCwidGltZSIsZVsxXSwicG9zIiktbykvMixhPUtuKHQsInRpbWUiLGVbZS5sZW5ndGgtMV0sInBvcyIpLGw9MT09PWUubGVuZ3RoP2E6KGEtS24odCwidGltZSIsZVtlLmxlbmd0aC0yXSwicG9zIikpLzIpLHtzdGFydDpzLGVuZDpsLGZhY3RvcjoxLyhzKzErbCl9fShpLl90YWJsZSx1LDAsMCxhKSxzLnJldmVyc2UmJnUucmV2ZXJzZSgpLGVpKGksdSxpLl9tYWpvclVuaXQpfSxnZXRMYWJlbEZvckluZGV4OmZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcyxpPW4uX2FkYXB0ZXIscj1uLmNoYXJ0LmRhdGEsbz1uLm9wdGlvbnMudGltZSxhPXIubGFiZWxzJiZ0PHIubGFiZWxzLmxlbmd0aD9yLmxhYmVsc1t0XToiIixzPXIuZGF0YXNldHNbZV0uZGF0YVt0XTtyZXR1cm4gQi5pc09iamVjdChzKSYmKGE9bi5nZXRSaWdodFZhbHVlKHMpKSxvLnRvb2x0aXBGb3JtYXQ/aS5mb3JtYXQoSm4obixhKSxvLnRvb2x0aXBGb3JtYXQpOiJzdHJpbmciPT10eXBlb2YgYT9hOmkuZm9ybWF0KEpuKG4sYSksby5kaXNwbGF5Rm9ybWF0cy5kYXRldGltZSl9LHRpY2tGb3JtYXRGdW5jdGlvbjpmdW5jdGlvbih0LGUsbixpKXt2YXIgcj10aGlzLl9hZGFwdGVyLG89dGhpcy5vcHRpb25zLGE9by50aW1lLmRpc3BsYXlGb3JtYXRzLHM9YVt0aGlzLl91bml0XSxsPXRoaXMuX21ham9yVW5pdCxjPWFbbF0sdT1uW2VdLGQ9by50aWNrcyxoPWwmJmMmJnUmJnUubWFqb3IsZj1yLmZvcm1hdCh0LGl8fChoP2M6cykpLHA9aD9kLm1ham9yOmQubWlub3IsZz1CbihbcC5jYWxsYmFjayxwLnVzZXJDYWxsYmFjayxkLmNhbGxiYWNrLGQudXNlckNhbGxiYWNrXSk7cmV0dXJuIGc/ZyhmLGUsbik6Zn0sY29udmVydFRpY2tzVG9MYWJlbHM6ZnVuY3Rpb24odCl7dmFyIGUsbixpPVtdO2ZvcihlPTAsbj10Lmxlbmd0aDtlPG47KytlKWkucHVzaCh0aGlzLnRpY2tGb3JtYXRGdW5jdGlvbih0W2VdLnZhbHVlLGUsdCkpO3JldHVybiBpfSxnZXRQaXhlbEZvck9mZnNldDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9vZmZzZXRzLG49S24odGhpcy5fdGFibGUsInRpbWUiLHQsInBvcyIpO3JldHVybiB0aGlzLmdldFBpeGVsRm9yRGVjaW1hbCgoZS5zdGFydCtuKSplLmZhY3Rvcil9LGdldFBpeGVsRm9yVmFsdWU6ZnVuY3Rpb24odCxlLG4pe3ZhciBpPW51bGw7aWYodm9pZCAwIT09ZSYmdm9pZCAwIT09biYmKGk9dGhpcy5fdGltZXN0YW1wcy5kYXRhc2V0c1tuXVtlXSksbnVsbD09PWkmJihpPVpuKHRoaXMsdCkpLG51bGwhPT1pKXJldHVybiB0aGlzLmdldFBpeGVsRm9yT2Zmc2V0KGkpfSxnZXRQaXhlbEZvclRpY2s6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5nZXRUaWNrcygpO3JldHVybiB0Pj0wJiZ0PGUubGVuZ3RoP3RoaXMuZ2V0UGl4ZWxGb3JPZmZzZXQoZVt0XS52YWx1ZSk6bnVsbH0sZ2V0VmFsdWVGb3JQaXhlbDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9vZmZzZXRzLG49dGhpcy5nZXREZWNpbWFsRm9yUGl4ZWwodCkvZS5mYWN0b3ItZS5lbmQsaT1Lbih0aGlzLl90YWJsZSwicG9zIixuLCJ0aW1lIik7cmV0dXJuIHRoaXMuX2FkYXB0ZXIuX2NyZWF0ZShpKX0sX2dldExhYmVsU2l6ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLm9wdGlvbnMudGlja3Msbj10aGlzLmN0eC5tZWFzdXJlVGV4dCh0KS53aWR0aCxpPUIudG9SYWRpYW5zKHRoaXMuaXNIb3Jpem9udGFsKCk/ZS5tYXhSb3RhdGlvbjplLm1pblJvdGF0aW9uKSxyPU1hdGguY29zKGkpLG89TWF0aC5zaW4oaSksYT1xbihlLmZvbnRTaXplLFIuZ2xvYmFsLmRlZmF1bHRGb250U2l6ZSk7cmV0dXJue3c6bipyK2EqbyxoOm4qbythKnJ9fSxnZXRMYWJlbFdpZHRoOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9nZXRMYWJlbFNpemUodCkud30sZ2V0TGFiZWxDYXBhY2l0eTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLG49ZS5vcHRpb25zLnRpbWUsaT1uLmRpc3BsYXlGb3JtYXRzLHI9aVtuLnVuaXRdfHxpLm1pbGxpc2Vjb25kLG89ZS50aWNrRm9ybWF0RnVuY3Rpb24odCwwLGVpKGUsW3RdLGUuX21ham9yVW5pdCksciksYT1lLl9nZXRMYWJlbFNpemUobykscz1NYXRoLmZsb29yKGUuaXNIb3Jpem9udGFsKCk/ZS53aWR0aC9hLnc6ZS5oZWlnaHQvYS5oKTtyZXR1cm4gZS5vcHRpb25zLm9mZnNldCYmcy0tLHM+MD9zOjF9fSk7bmkuX2RlZmF1bHRzPXtwb3NpdGlvbjoiYm90dG9tIixkaXN0cmlidXRpb246ImxpbmVhciIsYm91bmRzOiJkYXRhIixhZGFwdGVyczp7fSx0aW1lOntwYXJzZXI6ITEsdW5pdDohMSxyb3VuZDohMSxkaXNwbGF5Rm9ybWF0OiExLGlzb1dlZWtkYXk6ITEsbWluVW5pdDoibWlsbGlzZWNvbmQiLGRpc3BsYXlGb3JtYXRzOnt9fSx0aWNrczp7YXV0b1NraXA6ITEsc291cmNlOiJhdXRvIixtYWpvcjp7ZW5hYmxlZDohMX19fTt2YXIgaWk9e2NhdGVnb3J5OnBuLGxpbmVhcjp4bixsb2dhcml0aG1pYzpBbixyYWRpYWxMaW5lYXI6JG4sdGltZTpuaX0scmk9e2RhdGV0aW1lOiJNTU0gRCwgWVlZWSwgaDptbTpzcyBhIixtaWxsaXNlY29uZDoiaDptbTpzcy5TU1MgYSIsc2Vjb25kOiJoOm1tOnNzIGEiLG1pbnV0ZToiaDptbSBhIixob3VyOiJoQSIsZGF5OiJNTU0gRCIsd2VlazoibGwiLG1vbnRoOiJNTU0gWVlZWSIscXVhcnRlcjoiW1FdUSAtIFlZWVkiLHllYXI6IllZWVkifTtLZS5fZGF0ZS5vdmVycmlkZSgiZnVuY3Rpb24iPT10eXBlb2YgdD97X2lkOiJtb21lbnQiLGZvcm1hdHM6ZnVuY3Rpb24oKXtyZXR1cm4gcml9LHBhcnNlOmZ1bmN0aW9uKGUsbil7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlJiYic3RyaW5nIj09dHlwZW9mIG4/ZT10KGUsbik6ZSBpbnN0YW5jZW9mIHR8fChlPXQoZSkpLGUuaXNWYWxpZCgpP2UudmFsdWVPZigpOm51bGx9LGZvcm1hdDpmdW5jdGlvbihlLG4pe3JldHVybiB0KGUpLmZvcm1hdChuKX0sYWRkOmZ1bmN0aW9uKGUsbixpKXtyZXR1cm4gdChlKS5hZGQobixpKS52YWx1ZU9mKCl9LGRpZmY6ZnVuY3Rpb24oZSxuLGkpe3JldHVybiB0KGUpLmRpZmYodChuKSxpKX0sc3RhcnRPZjpmdW5jdGlvbihlLG4saSl7cmV0dXJuIGU9dChlKSwiaXNvV2VlayI9PT1uP2UuaXNvV2Vla2RheShpKS52YWx1ZU9mKCk6ZS5zdGFydE9mKG4pLnZhbHVlT2YoKX0sZW5kT2Y6ZnVuY3Rpb24oZSxuKXtyZXR1cm4gdChlKS5lbmRPZihuKS52YWx1ZU9mKCl9LF9jcmVhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIHQoZSl9fTp7fSksUi5fc2V0KCJnbG9iYWwiLHtwbHVnaW5zOntmaWxsZXI6e3Byb3BhZ2F0ZTohMH19fSk7dmFyIG9pPXtkYXRhc2V0OmZ1bmN0aW9uKHQpe3ZhciBlPXQuZmlsbCxuPXQuY2hhcnQsaT1uLmdldERhdGFzZXRNZXRhKGUpLHI9aSYmbi5pc0RhdGFzZXRWaXNpYmxlKGUpJiZpLmRhdGFzZXQuX2NoaWxkcmVufHxbXSxvPXIubGVuZ3RofHwwO3JldHVybiBvP2Z1bmN0aW9uKHQsZSl7cmV0dXJuIGU8byYmcltlXS5fdmlld3x8bnVsbH06bnVsbH0sYm91bmRhcnk6ZnVuY3Rpb24odCl7dmFyIGU9dC5ib3VuZGFyeSxuPWU/ZS54Om51bGwsaT1lP2UueTpudWxsO3JldHVybiBCLmlzQXJyYXkoZSk/ZnVuY3Rpb24odCxuKXtyZXR1cm4gZVtuXX06ZnVuY3Rpb24odCl7cmV0dXJue3g6bnVsbD09PW4/dC54Om4seTpudWxsPT09aT90Lnk6aX19fX07ZnVuY3Rpb24gYWkodCxlLG4pe3ZhciBpLHI9dC5fbW9kZWx8fHt9LG89ci5maWxsO2lmKHZvaWQgMD09PW8mJihvPSEhci5iYWNrZ3JvdW5kQ29sb3IpLCExPT09b3x8bnVsbD09PW8pcmV0dXJuITE7aWYoITA9PT1vKXJldHVybiJvcmlnaW4iO2lmKGk9cGFyc2VGbG9hdChvLDEwKSxpc0Zpbml0ZShpKSYmTWF0aC5mbG9vcihpKT09PWkpcmV0dXJuIi0iIT09b1swXSYmIisiIT09b1swXXx8KGk9ZStpKSwhKGk9PT1lfHxpPDB8fGk+PW4pJiZpO3N3aXRjaChvKXtjYXNlImJvdHRvbSI6cmV0dXJuInN0YXJ0IjtjYXNlInRvcCI6cmV0dXJuImVuZCI7Y2FzZSJ6ZXJvIjpyZXR1cm4ib3JpZ2luIjtjYXNlIm9yaWdpbiI6Y2FzZSJzdGFydCI6Y2FzZSJlbmQiOnJldHVybiBvO2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIHNpKHQpe3JldHVybih0LmVsLl9zY2FsZXx8e30pLmdldFBvaW50UG9zaXRpb25Gb3JWYWx1ZT9mdW5jdGlvbih0KXt2YXIgZSxuLGkscixvLGE9dC5lbC5fc2NhbGUscz1hLm9wdGlvbnMsbD1hLmNoYXJ0LmRhdGEubGFiZWxzLmxlbmd0aCxjPXQuZmlsbCx1PVtdO2lmKCFsKXJldHVybiBudWxsO2ZvcihlPXMudGlja3MucmV2ZXJzZT9hLm1heDphLm1pbixuPXMudGlja3MucmV2ZXJzZT9hLm1pbjphLm1heCxpPWEuZ2V0UG9pbnRQb3NpdGlvbkZvclZhbHVlKDAsZSkscj0wO3I8bDsrK3Ipbz0ic3RhcnQiPT09Y3x8ImVuZCI9PT1jP2EuZ2V0UG9pbnRQb3NpdGlvbkZvclZhbHVlKHIsInN0YXJ0Ij09PWM/ZTpuKTphLmdldEJhc2VQb3NpdGlvbihyKSxzLmdyaWRMaW5lcy5jaXJjdWxhciYmKG8uY3g9aS54LG8uY3k9aS55LG8uYW5nbGU9YS5nZXRJbmRleEFuZ2xlKHIpLU1hdGguUEkvMiksdS5wdXNoKG8pO3JldHVybiB1fSh0KTpmdW5jdGlvbih0KXt2YXIgZSxuPXQuZWwuX21vZGVsfHx7fSxpPXQuZWwuX3NjYWxlfHx7fSxyPXQuZmlsbCxvPW51bGw7aWYoaXNGaW5pdGUocikpcmV0dXJuIG51bGw7aWYoInN0YXJ0Ij09PXI/bz12b2lkIDA9PT1uLnNjYWxlQm90dG9tP2kuYm90dG9tOm4uc2NhbGVCb3R0b206ImVuZCI9PT1yP289dm9pZCAwPT09bi5zY2FsZVRvcD9pLnRvcDpuLnNjYWxlVG9wOnZvaWQgMCE9PW4uc2NhbGVaZXJvP289bi5zY2FsZVplcm86aS5nZXRCYXNlUGl4ZWwmJihvPWkuZ2V0QmFzZVBpeGVsKCkpLG51bGwhPW8pe2lmKHZvaWQgMCE9PW8ueCYmdm9pZCAwIT09by55KXJldHVybiBvO2lmKEIuaXNGaW5pdGUobykpcmV0dXJue3g6KGU9aS5pc0hvcml6b250YWwoKSk/bzpudWxsLHk6ZT9udWxsOm99fXJldHVybiBudWxsfSh0KX1mdW5jdGlvbiBsaSh0LGUsbil7dmFyIGkscj10W2VdLmZpbGwsbz1bZV07aWYoIW4pcmV0dXJuIHI7Zm9yKDshMSE9PXImJi0xPT09by5pbmRleE9mKHIpOyl7aWYoIWlzRmluaXRlKHIpKXJldHVybiByO2lmKCEoaT10W3JdKSlyZXR1cm4hMTtpZihpLnZpc2libGUpcmV0dXJuIHI7by5wdXNoKHIpLHI9aS5maWxsfXJldHVybiExfWZ1bmN0aW9uIGNpKHQpe3ZhciBlPXQuZmlsbCxuPSJkYXRhc2V0IjtyZXR1cm4hMT09PWU/bnVsbDooaXNGaW5pdGUoZSl8fChuPSJib3VuZGFyeSIpLG9pW25dKHQpKX1mdW5jdGlvbiB1aSh0KXtyZXR1cm4gdCYmIXQuc2tpcH1mdW5jdGlvbiBkaSh0LGUsbixpLHIpe3ZhciBvLGEscyxsO2lmKGkmJnIpe2Zvcih0Lm1vdmVUbyhlWzBdLngsZVswXS55KSxvPTE7bzxpOysrbylCLmNhbnZhcy5saW5lVG8odCxlW28tMV0sZVtvXSk7aWYodm9pZCAwPT09blswXS5hbmdsZSlmb3IodC5saW5lVG8obltyLTFdLngsbltyLTFdLnkpLG89ci0xO28+MDstLW8pQi5jYW52YXMubGluZVRvKHQsbltvXSxuW28tMV0sITApO2Vsc2UgZm9yKGE9blswXS5jeCxzPW5bMF0uY3ksbD1NYXRoLnNxcnQoTWF0aC5wb3coblswXS54LWEsMikrTWF0aC5wb3coblswXS55LXMsMikpLG89ci0xO28+MDstLW8pdC5hcmMoYSxzLGwsbltvXS5hbmdsZSxuW28tMV0uYW5nbGUsITApfX1mdW5jdGlvbiBoaSh0LGUsbixpLHIsbyl7dmFyIGEscyxsLGMsdSxkLGgsZixwPWUubGVuZ3RoLGc9aS5zcGFuR2FwcyxtPVtdLHY9W10seT0wLGI9MDtmb3IodC5iZWdpblBhdGgoKSxhPTAscz1wO2E8czsrK2EpdT1uKGM9ZVtsPWElcF0uX3ZpZXcsbCxpKSxkPXVpKGMpLGg9dWkodSksbyYmdm9pZCAwPT09ZiYmZCYmKHM9cCsoZj1hKzEpKSxkJiZoPyh5PW0ucHVzaChjKSxiPXYucHVzaCh1KSk6eSYmYiYmKGc/KGQmJm0ucHVzaChjKSxoJiZ2LnB1c2godSkpOihkaSh0LG0sdix5LGIpLHk9Yj0wLG09W10sdj1bXSkpO2RpKHQsbSx2LHksYiksdC5jbG9zZVBhdGgoKSx0LmZpbGxTdHlsZT1yLHQuZmlsbCgpfXZhciBmaT17aWQ6ImZpbGxlciIsYWZ0ZXJEYXRhc2V0c1VwZGF0ZTpmdW5jdGlvbih0LGUpe3ZhciBuLGkscixvLGE9KHQuZGF0YS5kYXRhc2V0c3x8W10pLmxlbmd0aCxzPWUucHJvcGFnYXRlLGw9W107Zm9yKGk9MDtpPGE7KytpKW89bnVsbCwocj0obj10LmdldERhdGFzZXRNZXRhKGkpKS5kYXRhc2V0KSYmci5fbW9kZWwmJnIgaW5zdGFuY2VvZiBidC5MaW5lJiYobz17dmlzaWJsZTp0LmlzRGF0YXNldFZpc2libGUoaSksZmlsbDphaShyLGksYSksY2hhcnQ6dCxlbDpyfSksbi4kZmlsbGVyPW8sbC5wdXNoKG8pO2ZvcihpPTA7aTxhOysraSkobz1sW2ldKSYmKG8uZmlsbD1saShsLGkscyksby5ib3VuZGFyeT1zaShvKSxvLm1hcHBlcj1jaShvKSl9LGJlZm9yZURhdGFzZXRzRHJhdzpmdW5jdGlvbih0KXt2YXIgZSxuLGkscixvLGEscyxsPXQuX2dldFNvcnRlZFZpc2libGVEYXRhc2V0TWV0YXMoKSxjPXQuY3R4O2ZvcihuPWwubGVuZ3RoLTE7bj49MDstLW4pKGU9bFtuXS4kZmlsbGVyKSYmZS52aXNpYmxlJiYocj0oaT1lLmVsKS5fdmlldyxvPWkuX2NoaWxkcmVufHxbXSxhPWUubWFwcGVyLHM9ci5iYWNrZ3JvdW5kQ29sb3J8fFIuZ2xvYmFsLmRlZmF1bHRDb2xvcixhJiZzJiZvLmxlbmd0aCYmKEIuY2FudmFzLmNsaXBBcmVhKGMsdC5jaGFydEFyZWEpLGhpKGMsbyxhLHIscyxpLl9sb29wKSxCLmNhbnZhcy51bmNsaXBBcmVhKGMpKSl9fSxwaT1CLnJ0bC5nZXRSdGxBZGFwdGVyLGdpPUIubm9vcCxtaT1CLnZhbHVlT3JEZWZhdWx0O2Z1bmN0aW9uIHZpKHQsZSl7cmV0dXJuIHQudXNlUG9pbnRTdHlsZSYmdC5ib3hXaWR0aD5lP2U6dC5ib3hXaWR0aH1SLl9zZXQoImdsb2JhbCIse2xlZ2VuZDp7ZGlzcGxheTohMCxwb3NpdGlvbjoidG9wIixhbGlnbjoiY2VudGVyIixmdWxsV2lkdGg6ITAscmV2ZXJzZTohMSx3ZWlnaHQ6MWUzLG9uQ2xpY2s6ZnVuY3Rpb24odCxlKXt2YXIgbj1lLmRhdGFzZXRJbmRleCxpPXRoaXMuY2hhcnQscj1pLmdldERhdGFzZXRNZXRhKG4pO3IuaGlkZGVuPW51bGw9PT1yLmhpZGRlbj8haS5kYXRhLmRhdGFzZXRzW25dLmhpZGRlbjpudWxsLGkudXBkYXRlKCl9LG9uSG92ZXI6bnVsbCxvbkxlYXZlOm51bGwsbGFiZWxzOntib3hXaWR0aDo0MCxwYWRkaW5nOjEwLGdlbmVyYXRlTGFiZWxzOmZ1bmN0aW9uKHQpe3ZhciBlPXQuZGF0YS5kYXRhc2V0cyxuPXQub3B0aW9ucy5sZWdlbmR8fHt9LGk9bi5sYWJlbHMmJm4ubGFiZWxzLnVzZVBvaW50U3R5bGU7cmV0dXJuIHQuX2dldFNvcnRlZERhdGFzZXRNZXRhcygpLm1hcCgoZnVuY3Rpb24obil7dmFyIHI9bi5jb250cm9sbGVyLmdldFN0eWxlKGk/MDp2b2lkIDApO3JldHVybnt0ZXh0OmVbbi5pbmRleF0ubGFiZWwsZmlsbFN0eWxlOnIuYmFja2dyb3VuZENvbG9yLGhpZGRlbjohdC5pc0RhdGFzZXRWaXNpYmxlKG4uaW5kZXgpLGxpbmVDYXA6ci5ib3JkZXJDYXBTdHlsZSxsaW5lRGFzaDpyLmJvcmRlckRhc2gsbGluZURhc2hPZmZzZXQ6ci5ib3JkZXJEYXNoT2Zmc2V0LGxpbmVKb2luOnIuYm9yZGVySm9pblN0eWxlLGxpbmVXaWR0aDpyLmJvcmRlcldpZHRoLHN0cm9rZVN0eWxlOnIuYm9yZGVyQ29sb3IscG9pbnRTdHlsZTpyLnBvaW50U3R5bGUscm90YXRpb246ci5yb3RhdGlvbixkYXRhc2V0SW5kZXg6bi5pbmRleH19KSx0aGlzKX19fSxsZWdlbmRDYWxsYmFjazpmdW5jdGlvbih0KXt2YXIgZSxuLGkscj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ1bCIpLG89dC5kYXRhLmRhdGFzZXRzO2ZvcihyLnNldEF0dHJpYnV0ZSgiY2xhc3MiLHQuaWQrIi1sZWdlbmQiKSxlPTAsbj1vLmxlbmd0aDtlPG47ZSsrKShpPXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKSkpLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKSkuc3R5bGUuYmFja2dyb3VuZENvbG9yPW9bZV0uYmFja2dyb3VuZENvbG9yLG9bZV0ubGFiZWwmJmkuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUob1tlXS5sYWJlbCkpO3JldHVybiByLm91dGVySFRNTH19KTt2YXIgeWk9Ry5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24odCl7Qi5leHRlbmQodGhpcyx0KSx0aGlzLmxlZ2VuZEhpdEJveGVzPVtdLHRoaXMuX2hvdmVyZWRJdGVtPW51bGwsdGhpcy5kb3VnaG51dE1vZGU9ITF9LGJlZm9yZVVwZGF0ZTpnaSx1cGRhdGU6ZnVuY3Rpb24odCxlLG4pe3ZhciBpPXRoaXM7cmV0dXJuIGkuYmVmb3JlVXBkYXRlKCksaS5tYXhXaWR0aD10LGkubWF4SGVpZ2h0PWUsaS5tYXJnaW5zPW4saS5iZWZvcmVTZXREaW1lbnNpb25zKCksaS5zZXREaW1lbnNpb25zKCksaS5hZnRlclNldERpbWVuc2lvbnMoKSxpLmJlZm9yZUJ1aWxkTGFiZWxzKCksaS5idWlsZExhYmVscygpLGkuYWZ0ZXJCdWlsZExhYmVscygpLGkuYmVmb3JlRml0KCksaS5maXQoKSxpLmFmdGVyRml0KCksaS5hZnRlclVwZGF0ZSgpLGkubWluU2l6ZX0sYWZ0ZXJVcGRhdGU6Z2ksYmVmb3JlU2V0RGltZW5zaW9uczpnaSxzZXREaW1lbnNpb25zOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0LmlzSG9yaXpvbnRhbCgpPyh0LndpZHRoPXQubWF4V2lkdGgsdC5sZWZ0PTAsdC5yaWdodD10LndpZHRoKToodC5oZWlnaHQ9dC5tYXhIZWlnaHQsdC50b3A9MCx0LmJvdHRvbT10LmhlaWdodCksdC5wYWRkaW5nTGVmdD0wLHQucGFkZGluZ1RvcD0wLHQucGFkZGluZ1JpZ2h0PTAsdC5wYWRkaW5nQm90dG9tPTAsdC5taW5TaXplPXt3aWR0aDowLGhlaWdodDowfX0sYWZ0ZXJTZXREaW1lbnNpb25zOmdpLGJlZm9yZUJ1aWxkTGFiZWxzOmdpLGJ1aWxkTGFiZWxzOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXQub3B0aW9ucy5sYWJlbHN8fHt9LG49Qi5jYWxsYmFjayhlLmdlbmVyYXRlTGFiZWxzLFt0LmNoYXJ0XSx0KXx8W107ZS5maWx0ZXImJihuPW4uZmlsdGVyKChmdW5jdGlvbihuKXtyZXR1cm4gZS5maWx0ZXIobix0LmNoYXJ0LmRhdGEpfSkpKSx0Lm9wdGlvbnMucmV2ZXJzZSYmbi5yZXZlcnNlKCksdC5sZWdlbmRJdGVtcz1ufSxhZnRlckJ1aWxkTGFiZWxzOmdpLGJlZm9yZUZpdDpnaSxmaXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dC5vcHRpb25zLG49ZS5sYWJlbHMsaT1lLmRpc3BsYXkscj10LmN0eCxvPUIub3B0aW9ucy5fcGFyc2VGb250KG4pLGE9by5zaXplLHM9dC5sZWdlbmRIaXRCb3hlcz1bXSxsPXQubWluU2l6ZSxjPXQuaXNIb3Jpem9udGFsKCk7aWYoYz8obC53aWR0aD10Lm1heFdpZHRoLGwuaGVpZ2h0PWk/MTA6MCk6KGwud2lkdGg9aT8xMDowLGwuaGVpZ2h0PXQubWF4SGVpZ2h0KSxpKXtpZihyLmZvbnQ9by5zdHJpbmcsYyl7dmFyIHU9dC5saW5lV2lkdGhzPVswXSxkPTA7ci50ZXh0QWxpZ249ImxlZnQiLHIudGV4dEJhc2VsaW5lPSJtaWRkbGUiLEIuZWFjaCh0LmxlZ2VuZEl0ZW1zLChmdW5jdGlvbih0LGUpe3ZhciBpPXZpKG4sYSkrYS8yK3IubWVhc3VyZVRleHQodC50ZXh0KS53aWR0aDsoMD09PWV8fHVbdS5sZW5ndGgtMV0raSsyKm4ucGFkZGluZz5sLndpZHRoKSYmKGQrPWErbi5wYWRkaW5nLHVbdS5sZW5ndGgtKGU+MD8wOjEpXT0wKSxzW2VdPXtsZWZ0OjAsdG9wOjAsd2lkdGg6aSxoZWlnaHQ6YX0sdVt1Lmxlbmd0aC0xXSs9aStuLnBhZGRpbmd9KSksbC5oZWlnaHQrPWR9ZWxzZXt2YXIgaD1uLnBhZGRpbmcsZj10LmNvbHVtbldpZHRocz1bXSxwPXQuY29sdW1uSGVpZ2h0cz1bXSxnPW4ucGFkZGluZyxtPTAsdj0wO0IuZWFjaCh0LmxlZ2VuZEl0ZW1zLChmdW5jdGlvbih0LGUpe3ZhciBpPXZpKG4sYSkrYS8yK3IubWVhc3VyZVRleHQodC50ZXh0KS53aWR0aDtlPjAmJnYrYSsyKmg+bC5oZWlnaHQmJihnKz1tK24ucGFkZGluZyxmLnB1c2gobSkscC5wdXNoKHYpLG09MCx2PTApLG09TWF0aC5tYXgobSxpKSx2Kz1hK2gsc1tlXT17bGVmdDowLHRvcDowLHdpZHRoOmksaGVpZ2h0OmF9fSkpLGcrPW0sZi5wdXNoKG0pLHAucHVzaCh2KSxsLndpZHRoKz1nfXQud2lkdGg9bC53aWR0aCx0LmhlaWdodD1sLmhlaWdodH1lbHNlIHQud2lkdGg9bC53aWR0aD10LmhlaWdodD1sLmhlaWdodD0wfSxhZnRlckZpdDpnaSxpc0hvcml6b250YWw6ZnVuY3Rpb24oKXtyZXR1cm4idG9wIj09PXRoaXMub3B0aW9ucy5wb3NpdGlvbnx8ImJvdHRvbSI9PT10aGlzLm9wdGlvbnMucG9zaXRpb259LGRyYXc6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dC5vcHRpb25zLG49ZS5sYWJlbHMsaT1SLmdsb2JhbCxyPWkuZGVmYXVsdENvbG9yLG89aS5lbGVtZW50cy5saW5lLGE9dC5oZWlnaHQscz10LmNvbHVtbkhlaWdodHMsbD10LndpZHRoLGM9dC5saW5lV2lkdGhzO2lmKGUuZGlzcGxheSl7dmFyIHUsZD1waShlLnJ0bCx0LmxlZnQsdC5taW5TaXplLndpZHRoKSxoPXQuY3R4LGY9bWkobi5mb250Q29sb3IsaS5kZWZhdWx0Rm9udENvbG9yKSxwPUIub3B0aW9ucy5fcGFyc2VGb250KG4pLGc9cC5zaXplO2gudGV4dEFsaWduPWQudGV4dEFsaWduKCJsZWZ0IiksaC50ZXh0QmFzZWxpbmU9Im1pZGRsZSIsaC5saW5lV2lkdGg9LjUsaC5zdHJva2VTdHlsZT1mLGguZmlsbFN0eWxlPWYsaC5mb250PXAuc3RyaW5nO3ZhciBtPXZpKG4sZyksdj10LmxlZ2VuZEhpdEJveGVzLHk9ZnVuY3Rpb24odCxpKXtzd2l0Y2goZS5hbGlnbil7Y2FzZSJzdGFydCI6cmV0dXJuIG4ucGFkZGluZztjYXNlImVuZCI6cmV0dXJuIHQtaTtkZWZhdWx0OnJldHVybih0LWkrbi5wYWRkaW5nKS8yfX0sYj10LmlzSG9yaXpvbnRhbCgpO3U9Yj97eDp0LmxlZnQreShsLGNbMF0pLHk6dC50b3Arbi5wYWRkaW5nLGxpbmU6MH06e3g6dC5sZWZ0K24ucGFkZGluZyx5OnQudG9wK3koYSxzWzBdKSxsaW5lOjB9LEIucnRsLm92ZXJyaWRlVGV4dERpcmVjdGlvbih0LmN0eCxlLnRleHREaXJlY3Rpb24pO3ZhciB3PWcrbi5wYWRkaW5nO0IuZWFjaCh0LmxlZ2VuZEl0ZW1zLChmdW5jdGlvbihlLGkpe3ZhciBmPWgubWVhc3VyZVRleHQoZS50ZXh0KS53aWR0aCxwPW0rZy8yK2YseD11LngsXz11Lnk7ZC5zZXRXaWR0aCh0Lm1pblNpemUud2lkdGgpLGI/aT4wJiZ4K3Arbi5wYWRkaW5nPnQubGVmdCt0Lm1pblNpemUud2lkdGgmJihfPXUueSs9dyx1LmxpbmUrKyx4PXUueD10LmxlZnQreShsLGNbdS5saW5lXSkpOmk+MCYmXyt3PnQudG9wK3QubWluU2l6ZS5oZWlnaHQmJih4PXUueD14K3QuY29sdW1uV2lkdGhzW3UubGluZV0rbi5wYWRkaW5nLHUubGluZSsrLF89dS55PXQudG9wK3koYSxzW3UubGluZV0pKTt2YXIgUz1kLngoeCk7IWZ1bmN0aW9uKHQsZSxpKXtpZighKGlzTmFOKG0pfHxtPD0wKSl7aC5zYXZlKCk7dmFyIGE9bWkoaS5saW5lV2lkdGgsby5ib3JkZXJXaWR0aCk7aWYoaC5maWxsU3R5bGU9bWkoaS5maWxsU3R5bGUsciksaC5saW5lQ2FwPW1pKGkubGluZUNhcCxvLmJvcmRlckNhcFN0eWxlKSxoLmxpbmVEYXNoT2Zmc2V0PW1pKGkubGluZURhc2hPZmZzZXQsby5ib3JkZXJEYXNoT2Zmc2V0KSxoLmxpbmVKb2luPW1pKGkubGluZUpvaW4sby5ib3JkZXJKb2luU3R5bGUpLGgubGluZVdpZHRoPWEsaC5zdHJva2VTdHlsZT1taShpLnN0cm9rZVN0eWxlLHIpLGguc2V0TGluZURhc2gmJmguc2V0TGluZURhc2gobWkoaS5saW5lRGFzaCxvLmJvcmRlckRhc2gpKSxuJiZuLnVzZVBvaW50U3R5bGUpe3ZhciBzPW0qTWF0aC5TUVJUMi8yLGw9ZC54UGx1cyh0LG0vMiksYz1lK2cvMjtCLmNhbnZhcy5kcmF3UG9pbnQoaCxpLnBvaW50U3R5bGUscyxsLGMsaS5yb3RhdGlvbil9ZWxzZSBoLmZpbGxSZWN0KGQubGVmdEZvckx0cih0LG0pLGUsbSxnKSwwIT09YSYmaC5zdHJva2VSZWN0KGQubGVmdEZvckx0cih0LG0pLGUsbSxnKTtoLnJlc3RvcmUoKX19KFMsXyxlKSx2W2ldLmxlZnQ9ZC5sZWZ0Rm9yTHRyKFMsdltpXS53aWR0aCksdltpXS50b3A9XyxmdW5jdGlvbih0LGUsbixpKXt2YXIgcj1nLzIsbz1kLnhQbHVzKHQsbStyKSxhPWUrcjtoLmZpbGxUZXh0KG4udGV4dCxvLGEpLG4uaGlkZGVuJiYoaC5iZWdpblBhdGgoKSxoLmxpbmVXaWR0aD0yLGgubW92ZVRvKG8sYSksaC5saW5lVG8oZC54UGx1cyhvLGkpLGEpLGguc3Ryb2tlKCkpfShTLF8sZSxmKSxiP3UueCs9cCtuLnBhZGRpbmc6dS55Kz13fSkpLEIucnRsLnJlc3RvcmVUZXh0RGlyZWN0aW9uKHQuY3R4LGUudGV4dERpcmVjdGlvbil9fSxfZ2V0TGVnZW5kSXRlbUF0OmZ1bmN0aW9uKHQsZSl7dmFyIG4saSxyLG89dGhpcztpZih0Pj1vLmxlZnQmJnQ8PW8ucmlnaHQmJmU+PW8udG9wJiZlPD1vLmJvdHRvbSlmb3Iocj1vLmxlZ2VuZEhpdEJveGVzLG49MDtuPHIubGVuZ3RoOysrbilpZih0Pj0oaT1yW25dKS5sZWZ0JiZ0PD1pLmxlZnQraS53aWR0aCYmZT49aS50b3AmJmU8PWkudG9wK2kuaGVpZ2h0KXJldHVybiBvLmxlZ2VuZEl0ZW1zW25dO3JldHVybiBudWxsfSxoYW5kbGVFdmVudDpmdW5jdGlvbih0KXt2YXIgZSxuPXRoaXMsaT1uLm9wdGlvbnMscj0ibW91c2V1cCI9PT10LnR5cGU/ImNsaWNrIjp0LnR5cGU7aWYoIm1vdXNlbW92ZSI9PT1yKXtpZighaS5vbkhvdmVyJiYhaS5vbkxlYXZlKXJldHVybn1lbHNle2lmKCJjbGljayIhPT1yKXJldHVybjtpZighaS5vbkNsaWNrKXJldHVybn1lPW4uX2dldExlZ2VuZEl0ZW1BdCh0LngsdC55KSwiY2xpY2siPT09cj9lJiZpLm9uQ2xpY2smJmkub25DbGljay5jYWxsKG4sdC5uYXRpdmUsZSk6KGkub25MZWF2ZSYmZSE9PW4uX2hvdmVyZWRJdGVtJiYobi5faG92ZXJlZEl0ZW0mJmkub25MZWF2ZS5jYWxsKG4sdC5uYXRpdmUsbi5faG92ZXJlZEl0ZW0pLG4uX2hvdmVyZWRJdGVtPWUpLGkub25Ib3ZlciYmZSYmaS5vbkhvdmVyLmNhbGwobix0Lm5hdGl2ZSxlKSl9fSk7ZnVuY3Rpb24gYmkodCxlKXt2YXIgbj1uZXcgeWkoe2N0eDp0LmN0eCxvcHRpb25zOmUsY2hhcnQ6dH0pO2RlLmNvbmZpZ3VyZSh0LG4sZSksZGUuYWRkQm94KHQsbiksdC5sZWdlbmQ9bn12YXIgd2k9e2lkOiJsZWdlbmQiLF9lbGVtZW50OnlpLGJlZm9yZUluaXQ6ZnVuY3Rpb24odCl7dmFyIGU9dC5vcHRpb25zLmxlZ2VuZDtlJiZiaSh0LGUpfSxiZWZvcmVVcGRhdGU6ZnVuY3Rpb24odCl7dmFyIGU9dC5vcHRpb25zLmxlZ2VuZCxuPXQubGVnZW5kO2U/KEIubWVyZ2VJZihlLFIuZ2xvYmFsLmxlZ2VuZCksbj8oZGUuY29uZmlndXJlKHQsbixlKSxuLm9wdGlvbnM9ZSk6YmkodCxlKSk6biYmKGRlLnJlbW92ZUJveCh0LG4pLGRlbGV0ZSB0LmxlZ2VuZCl9LGFmdGVyRXZlbnQ6ZnVuY3Rpb24odCxlKXt2YXIgbj10LmxlZ2VuZDtuJiZuLmhhbmRsZUV2ZW50KGUpfX0seGk9Qi5ub29wO1IuX3NldCgiZ2xvYmFsIix7dGl0bGU6e2Rpc3BsYXk6ITEsZm9udFN0eWxlOiJib2xkIixmdWxsV2lkdGg6ITAscGFkZGluZzoxMCxwb3NpdGlvbjoidG9wIix0ZXh0OiIiLHdlaWdodDoyZTN9fSk7dmFyIF9pPUcuZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKHQpe0IuZXh0ZW5kKHRoaXMsdCksdGhpcy5sZWdlbmRIaXRCb3hlcz1bXX0sYmVmb3JlVXBkYXRlOnhpLHVwZGF0ZTpmdW5jdGlvbih0LGUsbil7dmFyIGk9dGhpcztyZXR1cm4gaS5iZWZvcmVVcGRhdGUoKSxpLm1heFdpZHRoPXQsaS5tYXhIZWlnaHQ9ZSxpLm1hcmdpbnM9bixpLmJlZm9yZVNldERpbWVuc2lvbnMoKSxpLnNldERpbWVuc2lvbnMoKSxpLmFmdGVyU2V0RGltZW5zaW9ucygpLGkuYmVmb3JlQnVpbGRMYWJlbHMoKSxpLmJ1aWxkTGFiZWxzKCksaS5hZnRlckJ1aWxkTGFiZWxzKCksaS5iZWZvcmVGaXQoKSxpLmZpdCgpLGkuYWZ0ZXJGaXQoKSxpLmFmdGVyVXBkYXRlKCksaS5taW5TaXplfSxhZnRlclVwZGF0ZTp4aSxiZWZvcmVTZXREaW1lbnNpb25zOnhpLHNldERpbWVuc2lvbnM6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3QuaXNIb3Jpem9udGFsKCk/KHQud2lkdGg9dC5tYXhXaWR0aCx0LmxlZnQ9MCx0LnJpZ2h0PXQud2lkdGgpOih0LmhlaWdodD10Lm1heEhlaWdodCx0LnRvcD0wLHQuYm90dG9tPXQuaGVpZ2h0KSx0LnBhZGRpbmdMZWZ0PTAsdC5wYWRkaW5nVG9wPTAsdC5wYWRkaW5nUmlnaHQ9MCx0LnBhZGRpbmdCb3R0b209MCx0Lm1pblNpemU9e3dpZHRoOjAsaGVpZ2h0OjB9fSxhZnRlclNldERpbWVuc2lvbnM6eGksYmVmb3JlQnVpbGRMYWJlbHM6eGksYnVpbGRMYWJlbHM6eGksYWZ0ZXJCdWlsZExhYmVsczp4aSxiZWZvcmVGaXQ6eGksZml0OmZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLG49ZS5vcHRpb25zLGk9ZS5taW5TaXplPXt9LHI9ZS5pc0hvcml6b250YWwoKTtuLmRpc3BsYXk/KHQ9KEIuaXNBcnJheShuLnRleHQpP24udGV4dC5sZW5ndGg6MSkqQi5vcHRpb25zLl9wYXJzZUZvbnQobikubGluZUhlaWdodCsyKm4ucGFkZGluZyxlLndpZHRoPWkud2lkdGg9cj9lLm1heFdpZHRoOnQsZS5oZWlnaHQ9aS5oZWlnaHQ9cj90OmUubWF4SGVpZ2h0KTplLndpZHRoPWkud2lkdGg9ZS5oZWlnaHQ9aS5oZWlnaHQ9MH0sYWZ0ZXJGaXQ6eGksaXNIb3Jpem9udGFsOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zLnBvc2l0aW9uO3JldHVybiJ0b3AiPT09dHx8ImJvdHRvbSI9PT10fSxkcmF3OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXQuY3R4LG49dC5vcHRpb25zO2lmKG4uZGlzcGxheSl7dmFyIGkscixvLGE9Qi5vcHRpb25zLl9wYXJzZUZvbnQobikscz1hLmxpbmVIZWlnaHQsbD1zLzIrbi5wYWRkaW5nLGM9MCx1PXQudG9wLGQ9dC5sZWZ0LGg9dC5ib3R0b20sZj10LnJpZ2h0O2UuZmlsbFN0eWxlPUIudmFsdWVPckRlZmF1bHQobi5mb250Q29sb3IsUi5nbG9iYWwuZGVmYXVsdEZvbnRDb2xvciksZS5mb250PWEuc3RyaW5nLHQuaXNIb3Jpem9udGFsKCk/KHI9ZCsoZi1kKS8yLG89dStsLGk9Zi1kKToocj0ibGVmdCI9PT1uLnBvc2l0aW9uP2QrbDpmLWwsbz11KyhoLXUpLzIsaT1oLXUsYz1NYXRoLlBJKigibGVmdCI9PT1uLnBvc2l0aW9uPy0uNTouNSkpLGUuc2F2ZSgpLGUudHJhbnNsYXRlKHIsbyksZS5yb3RhdGUoYyksZS50ZXh0QWxpZ249ImNlbnRlciIsZS50ZXh0QmFzZWxpbmU9Im1pZGRsZSI7dmFyIHA9bi50ZXh0O2lmKEIuaXNBcnJheShwKSlmb3IodmFyIGc9MCxtPTA7bTxwLmxlbmd0aDsrK20pZS5maWxsVGV4dChwW21dLDAsZyxpKSxnKz1zO2Vsc2UgZS5maWxsVGV4dChwLDAsMCxpKTtlLnJlc3RvcmUoKX19fSk7ZnVuY3Rpb24gU2kodCxlKXt2YXIgbj1uZXcgX2koe2N0eDp0LmN0eCxvcHRpb25zOmUsY2hhcnQ6dH0pO2RlLmNvbmZpZ3VyZSh0LG4sZSksZGUuYWRkQm94KHQsbiksdC50aXRsZUJsb2NrPW59dmFyIENpPXt9LGtpPWZpLFRpPXdpLEFpPXtpZDoidGl0bGUiLF9lbGVtZW50Ol9pLGJlZm9yZUluaXQ6ZnVuY3Rpb24odCl7dmFyIGU9dC5vcHRpb25zLnRpdGxlO2UmJlNpKHQsZSl9LGJlZm9yZVVwZGF0ZTpmdW5jdGlvbih0KXt2YXIgZT10Lm9wdGlvbnMudGl0bGUsbj10LnRpdGxlQmxvY2s7ZT8oQi5tZXJnZUlmKGUsUi5nbG9iYWwudGl0bGUpLG4/KGRlLmNvbmZpZ3VyZSh0LG4sZSksbi5vcHRpb25zPWUpOlNpKHQsZSkpOm4mJihkZS5yZW1vdmVCb3godCxuKSxkZWxldGUgdC50aXRsZUJsb2NrKX19O2Zvcih2YXIgRGkgaW4gQ2kuZmlsbGVyPWtpLENpLmxlZ2VuZD1UaSxDaS50aXRsZT1BaSxHZS5oZWxwZXJzPUIsZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxuKXt2YXIgaTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/KGk9cGFyc2VJbnQodCwxMCksLTEhPT10LmluZGV4T2YoIiUiKSYmKGk9aS8xMDAqZS5wYXJlbnROb2RlW25dKSk6aT10LGl9ZnVuY3Rpb24gZSh0KXtyZXR1cm4gbnVsbCE9dCYmIm5vbmUiIT09dH1mdW5jdGlvbiBuKG4saSxyKXt2YXIgbz1kb2N1bWVudC5kZWZhdWx0VmlldyxhPUIuX2dldFBhcmVudE5vZGUobikscz1vLmdldENvbXB1dGVkU3R5bGUobilbaV0sbD1vLmdldENvbXB1dGVkU3R5bGUoYSlbaV0sYz1lKHMpLHU9ZShsKSxkPU51bWJlci5QT1NJVElWRV9JTkZJTklUWTtyZXR1cm4gY3x8dT9NYXRoLm1pbihjP3QocyxuLHIpOmQsdT90KGwsYSxyKTpkKToibm9uZSJ9Qi53aGVyZT1mdW5jdGlvbih0LGUpe2lmKEIuaXNBcnJheSh0KSYmQXJyYXkucHJvdG90eXBlLmZpbHRlcilyZXR1cm4gdC5maWx0ZXIoZSk7dmFyIG49W107cmV0dXJuIEIuZWFjaCh0LChmdW5jdGlvbih0KXtlKHQpJiZuLnB1c2godCl9KSksbn0sQi5maW5kSW5kZXg9QXJyYXkucHJvdG90eXBlLmZpbmRJbmRleD9mdW5jdGlvbih0LGUsbil7cmV0dXJuIHQuZmluZEluZGV4KGUsbil9OmZ1bmN0aW9uKHQsZSxuKXtuPXZvaWQgMD09PW4/dDpuO2Zvcih2YXIgaT0wLHI9dC5sZW5ndGg7aTxyOysraSlpZihlLmNhbGwobix0W2ldLGksdCkpcmV0dXJuIGk7cmV0dXJuLTF9LEIuZmluZE5leHRXaGVyZT1mdW5jdGlvbih0LGUsbil7Qi5pc051bGxPclVuZGVmKG4pJiYobj0tMSk7Zm9yKHZhciBpPW4rMTtpPHQubGVuZ3RoO2krKyl7dmFyIHI9dFtpXTtpZihlKHIpKXJldHVybiByfX0sQi5maW5kUHJldmlvdXNXaGVyZT1mdW5jdGlvbih0LGUsbil7Qi5pc051bGxPclVuZGVmKG4pJiYobj10Lmxlbmd0aCk7Zm9yKHZhciBpPW4tMTtpPj0wO2ktLSl7dmFyIHI9dFtpXTtpZihlKHIpKXJldHVybiByfX0sQi5pc051bWJlcj1mdW5jdGlvbih0KXtyZXR1cm4haXNOYU4ocGFyc2VGbG9hdCh0KSkmJmlzRmluaXRlKHQpfSxCLmFsbW9zdEVxdWFscz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIE1hdGguYWJzKHQtZSk8bn0sQi5hbG1vc3RXaG9sZT1mdW5jdGlvbih0LGUpe3ZhciBuPU1hdGgucm91bmQodCk7cmV0dXJuIG4tZTw9dCYmbitlPj10fSxCLm1heD1mdW5jdGlvbih0KXtyZXR1cm4gdC5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGlzTmFOKGUpP3Q6TWF0aC5tYXgodCxlKX0pLE51bWJlci5ORUdBVElWRV9JTkZJTklUWSl9LEIubWluPWZ1bmN0aW9uKHQpe3JldHVybiB0LnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gaXNOYU4oZSk/dDpNYXRoLm1pbih0LGUpfSksTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKX0sQi5zaWduPU1hdGguc2lnbj9mdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5zaWduKHQpfTpmdW5jdGlvbih0KXtyZXR1cm4gMD09KHQ9K3QpfHxpc05hTih0KT90OnQ+MD8xOi0xfSxCLnRvUmFkaWFucz1mdW5jdGlvbih0KXtyZXR1cm4gdCooTWF0aC5QSS8xODApfSxCLnRvRGVncmVlcz1mdW5jdGlvbih0KXtyZXR1cm4gdCooMTgwL01hdGguUEkpfSxCLl9kZWNpbWFsUGxhY2VzPWZ1bmN0aW9uKHQpe2lmKEIuaXNGaW5pdGUodCkpe2Zvcih2YXIgZT0xLG49MDtNYXRoLnJvdW5kKHQqZSkvZSE9PXQ7KWUqPTEwLG4rKztyZXR1cm4gbn19LEIuZ2V0QW5nbGVGcm9tUG9pbnQ9ZnVuY3Rpb24odCxlKXt2YXIgbj1lLngtdC54LGk9ZS55LXQueSxyPU1hdGguc3FydChuKm4raSppKSxvPU1hdGguYXRhbjIoaSxuKTtyZXR1cm4gbzwtLjUqTWF0aC5QSSYmKG8rPTIqTWF0aC5QSSkse2FuZ2xlOm8sZGlzdGFuY2U6cn19LEIuZGlzdGFuY2VCZXR3ZWVuUG9pbnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIE1hdGguc3FydChNYXRoLnBvdyhlLngtdC54LDIpK01hdGgucG93KGUueS10LnksMikpfSxCLmFsaWFzUGl4ZWw9ZnVuY3Rpb24odCl7cmV0dXJuIHQlMj09MD8wOi41fSxCLl9hbGlnblBpeGVsPWZ1bmN0aW9uKHQsZSxuKXt2YXIgaT10LmN1cnJlbnREZXZpY2VQaXhlbFJhdGlvLHI9bi8yO3JldHVybiBNYXRoLnJvdW5kKChlLXIpKmkpL2krcn0sQi5zcGxpbmVDdXJ2ZT1mdW5jdGlvbih0LGUsbixpKXt2YXIgcj10LnNraXA/ZTp0LG89ZSxhPW4uc2tpcD9lOm4scz1NYXRoLnNxcnQoTWF0aC5wb3coby54LXIueCwyKStNYXRoLnBvdyhvLnktci55LDIpKSxsPU1hdGguc3FydChNYXRoLnBvdyhhLngtby54LDIpK01hdGgucG93KGEueS1vLnksMikpLGM9cy8ocytsKSx1PWwvKHMrbCksZD1pKihjPWlzTmFOKGMpPzA6YyksaD1pKih1PWlzTmFOKHUpPzA6dSk7cmV0dXJue3ByZXZpb3VzOnt4Om8ueC1kKihhLngtci54KSx5Om8ueS1kKihhLnktci55KX0sbmV4dDp7eDpvLngraCooYS54LXIueCkseTpvLnkraCooYS55LXIueSl9fX0sQi5FUFNJTE9OPU51bWJlci5FUFNJTE9OfHwxZS0xNCxCLnNwbGluZUN1cnZlTW9ub3RvbmU9ZnVuY3Rpb24odCl7dmFyIGUsbixpLHIsbyxhLHMsbCxjLHU9KHR8fFtdKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybnttb2RlbDp0Ll9tb2RlbCxkZWx0YUs6MCxtSzowfX0pKSxkPXUubGVuZ3RoO2ZvcihlPTA7ZTxkOysrZSlpZighKGk9dVtlXSkubW9kZWwuc2tpcCl7aWYobj1lPjA/dVtlLTFdOm51bGwsKHI9ZTxkLTE/dVtlKzFdOm51bGwpJiYhci5tb2RlbC5za2lwKXt2YXIgaD1yLm1vZGVsLngtaS5tb2RlbC54O2kuZGVsdGFLPTAhPT1oPyhyLm1vZGVsLnktaS5tb2RlbC55KS9oOjB9IW58fG4ubW9kZWwuc2tpcD9pLm1LPWkuZGVsdGFLOiFyfHxyLm1vZGVsLnNraXA/aS5tSz1uLmRlbHRhSzp0aGlzLnNpZ24obi5kZWx0YUspIT09dGhpcy5zaWduKGkuZGVsdGFLKT9pLm1LPTA6aS5tSz0obi5kZWx0YUsraS5kZWx0YUspLzJ9Zm9yKGU9MDtlPGQtMTsrK2UpaT11W2VdLHI9dVtlKzFdLGkubW9kZWwuc2tpcHx8ci5tb2RlbC5za2lwfHwoQi5hbG1vc3RFcXVhbHMoaS5kZWx0YUssMCx0aGlzLkVQU0lMT04pP2kubUs9ci5tSz0wOihvPWkubUsvaS5kZWx0YUssYT1yLm1LL2kuZGVsdGFLLChsPU1hdGgucG93KG8sMikrTWF0aC5wb3coYSwyKSk8PTl8fChzPTMvTWF0aC5zcXJ0KGwpLGkubUs9bypzKmkuZGVsdGFLLHIubUs9YSpzKmkuZGVsdGFLKSkpO2ZvcihlPTA7ZTxkOysrZSkoaT11W2VdKS5tb2RlbC5za2lwfHwobj1lPjA/dVtlLTFdOm51bGwscj1lPGQtMT91W2UrMV06bnVsbCxuJiYhbi5tb2RlbC5za2lwJiYoYz0oaS5tb2RlbC54LW4ubW9kZWwueCkvMyxpLm1vZGVsLmNvbnRyb2xQb2ludFByZXZpb3VzWD1pLm1vZGVsLngtYyxpLm1vZGVsLmNvbnRyb2xQb2ludFByZXZpb3VzWT1pLm1vZGVsLnktYyppLm1LKSxyJiYhci5tb2RlbC5za2lwJiYoYz0oci5tb2RlbC54LWkubW9kZWwueCkvMyxpLm1vZGVsLmNvbnRyb2xQb2ludE5leHRYPWkubW9kZWwueCtjLGkubW9kZWwuY29udHJvbFBvaW50TmV4dFk9aS5tb2RlbC55K2MqaS5tSykpfSxCLm5leHRJdGVtPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gbj9lPj10Lmxlbmd0aC0xP3RbMF06dFtlKzFdOmU+PXQubGVuZ3RoLTE/dFt0Lmxlbmd0aC0xXTp0W2UrMV19LEIucHJldmlvdXNJdGVtPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gbj9lPD0wP3RbdC5sZW5ndGgtMV06dFtlLTFdOmU8PTA/dFswXTp0W2UtMV19LEIubmljZU51bT1mdW5jdGlvbih0LGUpe3ZhciBuPU1hdGguZmxvb3IoQi5sb2cxMCh0KSksaT10L01hdGgucG93KDEwLG4pO3JldHVybihlP2k8MS41PzE6aTwzPzI6aTw3PzU6MTA6aTw9MT8xOmk8PTI/MjppPD01PzU6MTApKk1hdGgucG93KDEwLG4pfSxCLnJlcXVlc3RBbmltRnJhbWU9InVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3c/ZnVuY3Rpb24odCl7dCgpfTp3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lfHx3aW5kb3cud2Via2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lfHx3aW5kb3cubW96UmVxdWVzdEFuaW1hdGlvbkZyYW1lfHx3aW5kb3cub1JlcXVlc3RBbmltYXRpb25GcmFtZXx8d2luZG93Lm1zUmVxdWVzdEFuaW1hdGlvbkZyYW1lfHxmdW5jdGlvbih0KXtyZXR1cm4gd2luZG93LnNldFRpbWVvdXQodCwxZTMvNjApfSxCLmdldFJlbGF0aXZlUG9zaXRpb249ZnVuY3Rpb24odCxlKXt2YXIgbixpLHI9dC5vcmlnaW5hbEV2ZW50fHx0LG89dC50YXJnZXR8fHQuc3JjRWxlbWVudCxhPW8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscz1yLnRvdWNoZXM7cyYmcy5sZW5ndGg+MD8obj1zWzBdLmNsaWVudFgsaT1zWzBdLmNsaWVudFkpOihuPXIuY2xpZW50WCxpPXIuY2xpZW50WSk7dmFyIGw9cGFyc2VGbG9hdChCLmdldFN0eWxlKG8sInBhZGRpbmctbGVmdCIpKSxjPXBhcnNlRmxvYXQoQi5nZXRTdHlsZShvLCJwYWRkaW5nLXRvcCIpKSx1PXBhcnNlRmxvYXQoQi5nZXRTdHlsZShvLCJwYWRkaW5nLXJpZ2h0IikpLGQ9cGFyc2VGbG9hdChCLmdldFN0eWxlKG8sInBhZGRpbmctYm90dG9tIikpLGg9YS5yaWdodC1hLmxlZnQtbC11LGY9YS5ib3R0b20tYS50b3AtYy1kO3JldHVybnt4Om49TWF0aC5yb3VuZCgobi1hLmxlZnQtbCkvaCpvLndpZHRoL2UuY3VycmVudERldmljZVBpeGVsUmF0aW8pLHk6aT1NYXRoLnJvdW5kKChpLWEudG9wLWMpL2Yqby5oZWlnaHQvZS5jdXJyZW50RGV2aWNlUGl4ZWxSYXRpbyl9fSxCLmdldENvbnN0cmFpbnRXaWR0aD1mdW5jdGlvbih0KXtyZXR1cm4gbih0LCJtYXgtd2lkdGgiLCJjbGllbnRXaWR0aCIpfSxCLmdldENvbnN0cmFpbnRIZWlnaHQ9ZnVuY3Rpb24odCl7cmV0dXJuIG4odCwibWF4LWhlaWdodCIsImNsaWVudEhlaWdodCIpfSxCLl9jYWxjdWxhdGVQYWRkaW5nPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4oZT1CLmdldFN0eWxlKHQsZSkpLmluZGV4T2YoIiUiKT4tMT9uKnBhcnNlSW50KGUsMTApLzEwMDpwYXJzZUludChlLDEwKX0sQi5fZ2V0UGFyZW50Tm9kZT1mdW5jdGlvbih0KXt2YXIgZT10LnBhcmVudE5vZGU7cmV0dXJuIGUmJiJbb2JqZWN0IFNoYWRvd1Jvb3RdIj09PWUudG9TdHJpbmcoKSYmKGU9ZS5ob3N0KSxlfSxCLmdldE1heGltdW1XaWR0aD1mdW5jdGlvbih0KXt2YXIgZT1CLl9nZXRQYXJlbnROb2RlKHQpO2lmKCFlKXJldHVybiB0LmNsaWVudFdpZHRoO3ZhciBuPWUuY2xpZW50V2lkdGgsaT1uLUIuX2NhbGN1bGF0ZVBhZGRpbmcoZSwicGFkZGluZy1sZWZ0IixuKS1CLl9jYWxjdWxhdGVQYWRkaW5nKGUsInBhZGRpbmctcmlnaHQiLG4pLHI9Qi5nZXRDb25zdHJhaW50V2lkdGgodCk7cmV0dXJuIGlzTmFOKHIpP2k6TWF0aC5taW4oaSxyKX0sQi5nZXRNYXhpbXVtSGVpZ2h0PWZ1bmN0aW9uKHQpe3ZhciBlPUIuX2dldFBhcmVudE5vZGUodCk7aWYoIWUpcmV0dXJuIHQuY2xpZW50SGVpZ2h0O3ZhciBuPWUuY2xpZW50SGVpZ2h0LGk9bi1CLl9jYWxjdWxhdGVQYWRkaW5nKGUsInBhZGRpbmctdG9wIixuKS1CLl9jYWxjdWxhdGVQYWRkaW5nKGUsInBhZGRpbmctYm90dG9tIixuKSxyPUIuZ2V0Q29uc3RyYWludEhlaWdodCh0KTtyZXR1cm4gaXNOYU4ocik/aTpNYXRoLm1pbihpLHIpfSxCLmdldFN0eWxlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuY3VycmVudFN0eWxlP3QuY3VycmVudFN0eWxlW2VdOmRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUodCxudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKGUpfSxCLnJldGluYVNjYWxlPWZ1bmN0aW9uKHQsZSl7dmFyIG49dC5jdXJyZW50RGV2aWNlUGl4ZWxSYXRpbz1lfHwidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93LmRldmljZVBpeGVsUmF0aW98fDE7aWYoMSE9PW4pe3ZhciBpPXQuY2FudmFzLHI9dC5oZWlnaHQsbz10LndpZHRoO2kuaGVpZ2h0PXIqbixpLndpZHRoPW8qbix0LmN0eC5zY2FsZShuLG4pLGkuc3R5bGUuaGVpZ2h0fHxpLnN0eWxlLndpZHRofHwoaS5zdHlsZS5oZWlnaHQ9cisicHgiLGkuc3R5bGUud2lkdGg9bysicHgiKX19LEIuZm9udFN0cmluZz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIGUrIiAiK3QrInB4ICIrbn0sQi5sb25nZXN0VGV4dD1mdW5jdGlvbih0LGUsbixpKXt2YXIgcj0oaT1pfHx7fSkuZGF0YT1pLmRhdGF8fHt9LG89aS5nYXJiYWdlQ29sbGVjdD1pLmdhcmJhZ2VDb2xsZWN0fHxbXTtpLmZvbnQhPT1lJiYocj1pLmRhdGE9e30sbz1pLmdhcmJhZ2VDb2xsZWN0PVtdLGkuZm9udD1lKSx0LmZvbnQ9ZTt2YXIgYSxzLGwsYyx1LGQ9MCxoPW4ubGVuZ3RoO2ZvcihhPTA7YTxoO2ErKylpZihudWxsIT0oYz1uW2FdKSYmITAhPT1CLmlzQXJyYXkoYykpZD1CLm1lYXN1cmVUZXh0KHQscixvLGQsYyk7ZWxzZSBpZihCLmlzQXJyYXkoYykpZm9yKHM9MCxsPWMubGVuZ3RoO3M8bDtzKyspbnVsbD09KHU9Y1tzXSl8fEIuaXNBcnJheSh1KXx8KGQ9Qi5tZWFzdXJlVGV4dCh0LHIsbyxkLHUpKTt2YXIgZj1vLmxlbmd0aC8yO2lmKGY+bi5sZW5ndGgpe2ZvcihhPTA7YTxmO2ErKylkZWxldGUgcltvW2FdXTtvLnNwbGljZSgwLGYpfXJldHVybiBkfSxCLm1lYXN1cmVUZXh0PWZ1bmN0aW9uKHQsZSxuLGkscil7dmFyIG89ZVtyXTtyZXR1cm4gb3x8KG89ZVtyXT10Lm1lYXN1cmVUZXh0KHIpLndpZHRoLG4ucHVzaChyKSksbz5pJiYoaT1vKSxpfSxCLm51bWJlck9mTGFiZWxMaW5lcz1mdW5jdGlvbih0KXt2YXIgZT0xO3JldHVybiBCLmVhY2godCwoZnVuY3Rpb24odCl7Qi5pc0FycmF5KHQpJiZ0Lmxlbmd0aD5lJiYoZT10Lmxlbmd0aCl9KSksZX0sQi5jb2xvcj14P2Z1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgQ2FudmFzR3JhZGllbnQmJih0PVIuZ2xvYmFsLmRlZmF1bHRDb2xvcikseCh0KX06ZnVuY3Rpb24odCl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoIkNvbG9yLmpzIG5vdCBmb3VuZCEiKSx0fSxCLmdldEhvdmVyQ29sb3I9ZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBDYW52YXNQYXR0ZXJufHx0IGluc3RhbmNlb2YgQ2FudmFzR3JhZGllbnQ/dDpCLmNvbG9yKHQpLnNhdHVyYXRlKC41KS5kYXJrZW4oLjEpLnJnYlN0cmluZygpfX0oKSxHZS5fYWRhcHRlcnM9S2UsR2UuQW5pbWF0aW9uPVEsR2UuYW5pbWF0aW9uU2VydmljZT1LLEdlLmNvbnRyb2xsZXJzPUd0LEdlLkRhdGFzZXRDb250cm9sbGVyPW50LEdlLmRlZmF1bHRzPVIsR2UuRWxlbWVudD1HLEdlLmVsZW1lbnRzPWJ0LEdlLkludGVyYWN0aW9uPWVlLEdlLmxheW91dHM9ZGUsR2UucGxhdGZvcm09VGUsR2UucGx1Z2lucz1BZSxHZS5TY2FsZT1obixHZS5zY2FsZVNlcnZpY2U9RGUsR2UuVGlja3M9SmUsR2UuVG9vbHRpcD0kZSxHZS5oZWxwZXJzLmVhY2goaWksKGZ1bmN0aW9uKHQsZSl7R2Uuc2NhbGVTZXJ2aWNlLnJlZ2lzdGVyU2NhbGVUeXBlKGUsdCx0Ll9kZWZhdWx0cyl9KSksQ2kpQ2kuaGFzT3duUHJvcGVydHkoRGkpJiZHZS5wbHVnaW5zLnJlZ2lzdGVyKENpW0RpXSk7R2UucGxhdGZvcm0uaW5pdGlhbGl6ZSgpO3ZhciBFaT1HZTtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmKHdpbmRvdy5DaGFydD1HZSksR2UuQ2hhcnQ9R2UsR2UuTGVnZW5kPUNpLmxlZ2VuZC5fZWxlbWVudCxHZS5UaXRsZT1DaS50aXRsZS5fZWxlbWVudCxHZS5wbHVnaW5TZXJ2aWNlPUdlLnBsdWdpbnMsR2UuUGx1Z2luQmFzZT1HZS5FbGVtZW50LmV4dGVuZCh7fSksR2UuY2FudmFzSGVscGVycz1HZS5oZWxwZXJzLmNhbnZhcyxHZS5sYXlvdXRTZXJ2aWNlPUdlLmxheW91dHMsR2UuTGluZWFyU2NhbGVCYXNlPXZuLEdlLmhlbHBlcnMuZWFjaChbIkJhciIsIkJ1YmJsZSIsIkRvdWdobnV0IiwiTGluZSIsIlBvbGFyQXJlYSIsIlJhZGFyIiwiU2NhdHRlciJdLChmdW5jdGlvbih0KXtHZVt0XT1mdW5jdGlvbihlLG4pe3JldHVybiBuZXcgR2UoZSxHZS5oZWxwZXJzLm1lcmdlKG58fHt9LHt0eXBlOnQuY2hhckF0KDApLnRvTG93ZXJDYXNlKCkrdC5zbGljZSgxKX0pKX19KSksRWl9KSksZnVuY3Rpb24odCl7ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoW10sdCk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPXQoKTp3aW5kb3cubm9VaVNsaWRlcj10KCl9KChmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0Ijt2YXIgdD0iMTQuNi4zIjtmdW5jdGlvbiBlKHQpe3QucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZCh0KX1mdW5jdGlvbiBuKHQpe3JldHVybiBudWxsIT10fWZ1bmN0aW9uIGkodCl7dC5wcmV2ZW50RGVmYXVsdCgpfWZ1bmN0aW9uIHIodCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB0JiYhaXNOYU4odCkmJmlzRmluaXRlKHQpfWZ1bmN0aW9uIG8odCxlLG4pezA8biYmKGModCxlKSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe3UodCxlKX0pLG4pKX1mdW5jdGlvbiBhKHQpe3JldHVybiBNYXRoLm1heChNYXRoLm1pbih0LDEwMCksMCl9ZnVuY3Rpb24gcyh0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KT90Olt0XX1mdW5jdGlvbiBsKHQpe3ZhciBlPSh0PVN0cmluZyh0KSkuc3BsaXQoIi4iKTtyZXR1cm4gMTxlLmxlbmd0aD9lWzFdLmxlbmd0aDowfWZ1bmN0aW9uIGModCxlKXt0LmNsYXNzTGlzdCYmIS9ccy8udGVzdChlKT90LmNsYXNzTGlzdC5hZGQoZSk6dC5jbGFzc05hbWUrPSIgIitlfWZ1bmN0aW9uIHUodCxlKXt0LmNsYXNzTGlzdCYmIS9ccy8udGVzdChlKT90LmNsYXNzTGlzdC5yZW1vdmUoZSk6dC5jbGFzc05hbWU9dC5jbGFzc05hbWUucmVwbGFjZShuZXcgUmVnRXhwKCIoXnxcXGIpIitlLnNwbGl0KCIgIikuam9pbigifCIpKyIoXFxifCQpIiwiZ2kiKSwiICIpfWZ1bmN0aW9uIGQodCl7dmFyIGU9dm9pZCAwIT09d2luZG93LnBhZ2VYT2Zmc2V0LG49IkNTUzFDb21wYXQiPT09KHQuY29tcGF0TW9kZXx8IiIpO3JldHVybnt4OmU/d2luZG93LnBhZ2VYT2Zmc2V0Om4/dC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdDp0LmJvZHkuc2Nyb2xsTGVmdCx5OmU/d2luZG93LnBhZ2VZT2Zmc2V0Om4/dC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wOnQuYm9keS5zY3JvbGxUb3B9fWZ1bmN0aW9uIGgodCxlKXtyZXR1cm4gMTAwLyhlLXQpfWZ1bmN0aW9uIGYodCxlLG4pe3JldHVybiAxMDAqZS8odFtuKzFdLXRbbl0pfWZ1bmN0aW9uIHAodCxlKXtmb3IodmFyIG49MTt0Pj1lW25dOyluKz0xO3JldHVybiBufWZ1bmN0aW9uIGcodCxlLG4pe3ZhciBpO2lmKCJudW1iZXIiPT10eXBlb2YgZSYmKGU9W2VdKSwhQXJyYXkuaXNBcnJheShlKSl0aHJvdyBuZXcgRXJyb3IoIm5vVWlTbGlkZXIgKDE0LjYuMyk6ICdyYW5nZScgY29udGFpbnMgaW52YWxpZCB2YWx1ZS4iKTtpZighcihpPSJtaW4iPT09dD8wOiJtYXgiPT09dD8xMDA6cGFyc2VGbG9hdCh0KSl8fCFyKGVbMF0pKXRocm93IG5ldyBFcnJvcigibm9VaVNsaWRlciAoMTQuNi4zKTogJ3JhbmdlJyB2YWx1ZSBpc24ndCBudW1lcmljLiIpO24ueFBjdC5wdXNoKGkpLG4ueFZhbC5wdXNoKGVbMF0pLGk/bi54U3RlcHMucHVzaCghaXNOYU4oZVsxXSkmJmVbMV0pOmlzTmFOKGVbMV0pfHwobi54U3RlcHNbMF09ZVsxXSksbi54SGlnaGVzdENvbXBsZXRlU3RlcC5wdXNoKDApfWZ1bmN0aW9uIG0odCxlLG4pe2lmKGUpaWYobi54VmFsW3RdIT09bi54VmFsW3QrMV0pe24ueFN0ZXBzW3RdPWYoW24ueFZhbFt0XSxuLnhWYWxbdCsxXV0sZSwwKS9oKG4ueFBjdFt0XSxuLnhQY3RbdCsxXSk7dmFyIGk9KG4ueFZhbFt0KzFdLW4ueFZhbFt0XSkvbi54TnVtU3RlcHNbdF0scj1NYXRoLmNlaWwoTnVtYmVyKGkudG9GaXhlZCgzKSktMSksbz1uLnhWYWxbdF0rbi54TnVtU3RlcHNbdF0qcjtuLnhIaWdoZXN0Q29tcGxldGVTdGVwW3RdPW99ZWxzZSBuLnhTdGVwc1t0XT1uLnhIaWdoZXN0Q29tcGxldGVTdGVwW3RdPW4ueFZhbFt0XX1mdW5jdGlvbiB2KHQsZSxuKXt2YXIgaTt0aGlzLnhQY3Q9W10sdGhpcy54VmFsPVtdLHRoaXMueFN0ZXBzPVtufHwhMV0sdGhpcy54TnVtU3RlcHM9WyExXSx0aGlzLnhIaWdoZXN0Q29tcGxldGVTdGVwPVtdLHRoaXMuc25hcD1lO3ZhciByPVtdO2ZvcihpIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShpKSYmci5wdXNoKFt0W2ldLGldKTtmb3Ioci5sZW5ndGgmJiJvYmplY3QiPT10eXBlb2YgclswXVswXT9yLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRbMF1bMF0tZVswXVswXX0pKTpyLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRbMF0tZVswXX0pKSxpPTA7aTxyLmxlbmd0aDtpKyspZyhyW2ldWzFdLHJbaV1bMF0sdGhpcyk7Zm9yKHRoaXMueE51bVN0ZXBzPXRoaXMueFN0ZXBzLnNsaWNlKDApLGk9MDtpPHRoaXMueE51bVN0ZXBzLmxlbmd0aDtpKyspbShpLHRoaXMueE51bVN0ZXBzW2ldLHRoaXMpfXYucHJvdG90eXBlLmdldERpc3RhbmNlPWZ1bmN0aW9uKHQpe3ZhciBlLG49W107Zm9yKGU9MDtlPHRoaXMueE51bVN0ZXBzLmxlbmd0aC0xO2UrKyl7dmFyIGk9dGhpcy54TnVtU3RlcHNbZV07aWYoaSYmdC9pJTEhPTApdGhyb3cgbmV3IEVycm9yKCJub1VpU2xpZGVyICgxNC42LjMpOiAnbGltaXQnLCAnbWFyZ2luJyBhbmQgJ3BhZGRpbmcnIG9mICIrdGhpcy54UGN0W2VdKyIlIHJhbmdlIG11c3QgYmUgZGl2aXNpYmxlIGJ5IHN0ZXAuIik7bltlXT1mKHRoaXMueFZhbCx0LGUpfXJldHVybiBufSx2LnByb3RvdHlwZS5nZXRBYnNvbHV0ZURpc3RhbmNlPWZ1bmN0aW9uKHQsZSxuKXt2YXIgaSxyPTA7aWYodDx0aGlzLnhQY3RbdGhpcy54UGN0Lmxlbmd0aC0xXSlmb3IoO3Q+dGhpcy54UGN0W3IrMV07KXIrKztlbHNlIHQ9PT10aGlzLnhQY3RbdGhpcy54UGN0Lmxlbmd0aC0xXSYmKHI9dGhpcy54UGN0Lmxlbmd0aC0yKTtufHx0IT09dGhpcy54UGN0W3IrMV18fHIrKzt2YXIgbz0xLGE9ZVtyXSxzPTAsbD0wLGM9MCx1PTA7Zm9yKGk9bj8odC10aGlzLnhQY3Rbcl0pLyh0aGlzLnhQY3RbcisxXS10aGlzLnhQY3Rbcl0pOih0aGlzLnhQY3RbcisxXS10KS8odGhpcy54UGN0W3IrMV0tdGhpcy54UGN0W3JdKTswPGE7KXM9dGhpcy54UGN0W3IrMSt1XS10aGlzLnhQY3Rbcit1XSwxMDA8ZVtyK3VdKm8rMTAwLTEwMCppPyhsPXMqaSxvPShhLTEwMCppKS9lW3IrdV0saT0xKToobD1lW3IrdV0qcy8xMDAqbyxvPTApLG4/KGMtPWwsMTw9dGhpcy54UGN0Lmxlbmd0aCt1JiZ1LS0pOihjKz1sLDE8PXRoaXMueFBjdC5sZW5ndGgtdSYmdSsrKSxhPWVbcit1XSpvO3JldHVybiB0K2N9LHYucHJvdG90eXBlLnRvU3RlcHBpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHQsZSxuKXtpZihuPj10LnNsaWNlKC0xKVswXSlyZXR1cm4gMTAwO3ZhciBpLHIsbz1wKG4sdCksYT10W28tMV0scz10W29dLGw9ZVtvLTFdLGM9ZVtvXTtyZXR1cm4gbCsocj1uLGYoaT1bYSxzXSxpWzBdPDA/citNYXRoLmFicyhpWzBdKTpyLWlbMF0sMCkvaChsLGMpKX0odGhpcy54VmFsLHRoaXMueFBjdCx0KX0sdi5wcm90b3R5cGUuZnJvbVN0ZXBwaW5nPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbih0LGUsbil7aWYoMTAwPD1uKXJldHVybiB0LnNsaWNlKC0xKVswXTt2YXIgaSxyPXAobixlKSxvPXRbci0xXSxhPXRbcl0scz1lW3ItMV07cmV0dXJuIGk9W28sYV0sKG4tcykqaChzLGVbcl0pKihpWzFdLWlbMF0pLzEwMCtpWzBdfSh0aGlzLnhWYWwsdGhpcy54UGN0LHQpfSx2LnByb3RvdHlwZS5nZXRTdGVwPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbih0LGUsbixpKXtpZigxMDA9PT1pKXJldHVybiBpO3ZhciByLG8sYT1wKGksdCkscz10W2EtMV0sbD10W2FdO3JldHVybiBuPyhsLXMpLzI8aS1zP2w6czplW2EtMV0/dFthLTFdKyhyPWktdFthLTFdLG89ZVthLTFdLE1hdGgucm91bmQoci9vKSpvKTppfSh0aGlzLnhQY3QsdGhpcy54U3RlcHMsdGhpcy5zbmFwLHQpfSx2LnByb3RvdHlwZS5nZXREZWZhdWx0U3RlcD1mdW5jdGlvbih0LGUsbil7dmFyIGk9cCh0LHRoaXMueFBjdCk7cmV0dXJuKDEwMD09PXR8fGUmJnQ9PT10aGlzLnhQY3RbaS0xXSkmJihpPU1hdGgubWF4KGktMSwxKSksKHRoaXMueFZhbFtpXS10aGlzLnhWYWxbaS0xXSkvbn0sdi5wcm90b3R5cGUuZ2V0TmVhcmJ5U3RlcHM9ZnVuY3Rpb24odCl7dmFyIGU9cCh0LHRoaXMueFBjdCk7cmV0dXJue3N0ZXBCZWZvcmU6e3N0YXJ0VmFsdWU6dGhpcy54VmFsW2UtMl0sc3RlcDp0aGlzLnhOdW1TdGVwc1tlLTJdLGhpZ2hlc3RTdGVwOnRoaXMueEhpZ2hlc3RDb21wbGV0ZVN0ZXBbZS0yXX0sdGhpc1N0ZXA6e3N0YXJ0VmFsdWU6dGhpcy54VmFsW2UtMV0sc3RlcDp0aGlzLnhOdW1TdGVwc1tlLTFdLGhpZ2hlc3RTdGVwOnRoaXMueEhpZ2hlc3RDb21wbGV0ZVN0ZXBbZS0xXX0sc3RlcEFmdGVyOntzdGFydFZhbHVlOnRoaXMueFZhbFtlXSxzdGVwOnRoaXMueE51bVN0ZXBzW2VdLGhpZ2hlc3RTdGVwOnRoaXMueEhpZ2hlc3RDb21wbGV0ZVN0ZXBbZV19fX0sdi5wcm90b3R5cGUuY291bnRTdGVwRGVjaW1hbHM9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnhOdW1TdGVwcy5tYXAobCk7cmV0dXJuIE1hdGgubWF4LmFwcGx5KG51bGwsdCl9LHYucHJvdG90eXBlLmNvbnZlcnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZ2V0U3RlcCh0aGlzLnRvU3RlcHBpbmcodCkpfTt2YXIgeT17dG86ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMCE9PXQmJnQudG9GaXhlZCgyKX0sZnJvbTpOdW1iZXJ9LGI9e3RhcmdldDoidGFyZ2V0IixiYXNlOiJiYXNlIixvcmlnaW46Im9yaWdpbiIsaGFuZGxlOiJoYW5kbGUiLGhhbmRsZUxvd2VyOiJoYW5kbGUtbG93ZXIiLGhhbmRsZVVwcGVyOiJoYW5kbGUtdXBwZXIiLHRvdWNoQXJlYToidG91Y2gtYXJlYSIsaG9yaXpvbnRhbDoiaG9yaXpvbnRhbCIsdmVydGljYWw6InZlcnRpY2FsIixiYWNrZ3JvdW5kOiJiYWNrZ3JvdW5kIixjb25uZWN0OiJjb25uZWN0Iixjb25uZWN0czoiY29ubmVjdHMiLGx0cjoibHRyIixydGw6InJ0bCIsdGV4dERpcmVjdGlvbkx0cjoidHh0LWRpci1sdHIiLHRleHREaXJlY3Rpb25SdGw6InR4dC1kaXItcnRsIixkcmFnZ2FibGU6ImRyYWdnYWJsZSIsZHJhZzoic3RhdGUtZHJhZyIsdGFwOiJzdGF0ZS10YXAiLGFjdGl2ZToiYWN0aXZlIix0b29sdGlwOiJ0b29sdGlwIixwaXBzOiJwaXBzIixwaXBzSG9yaXpvbnRhbDoicGlwcy1ob3Jpem9udGFsIixwaXBzVmVydGljYWw6InBpcHMtdmVydGljYWwiLG1hcmtlcjoibWFya2VyIixtYXJrZXJIb3Jpem9udGFsOiJtYXJrZXItaG9yaXpvbnRhbCIsbWFya2VyVmVydGljYWw6Im1hcmtlci12ZXJ0aWNhbCIsbWFya2VyTm9ybWFsOiJtYXJrZXItbm9ybWFsIixtYXJrZXJMYXJnZToibWFya2VyLWxhcmdlIixtYXJrZXJTdWI6Im1hcmtlci1zdWIiLHZhbHVlOiJ2YWx1ZSIsdmFsdWVIb3Jpem9udGFsOiJ2YWx1ZS1ob3Jpem9udGFsIix2YWx1ZVZlcnRpY2FsOiJ2YWx1ZS12ZXJ0aWNhbCIsdmFsdWVOb3JtYWw6InZhbHVlLW5vcm1hbCIsdmFsdWVMYXJnZToidmFsdWUtbGFyZ2UiLHZhbHVlU3ViOiJ2YWx1ZS1zdWIifSx3PSIuX190b29sdGlwcyIseD0iLl9fYXJpYSI7ZnVuY3Rpb24gXyh0KXtpZigib2JqZWN0Ij09dHlwZW9mKGU9dCkmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLnRvJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5mcm9tKXJldHVybiEwO3ZhciBlO3Rocm93IG5ldyBFcnJvcigibm9VaVNsaWRlciAoMTQuNi4zKTogJ2Zvcm1hdCcgcmVxdWlyZXMgJ3RvJyBhbmQgJ2Zyb20nIG1ldGhvZHMuIil9ZnVuY3Rpb24gUyh0LGUpe2lmKCFyKGUpKXRocm93IG5ldyBFcnJvcigibm9VaVNsaWRlciAoMTQuNi4zKTogJ3N0ZXAnIGlzIG5vdCBudW1lcmljLiIpO3Quc2luZ2xlU3RlcD1lfWZ1bmN0aW9uIEModCxlKXtpZighcihlKSl0aHJvdyBuZXcgRXJyb3IoIm5vVWlTbGlkZXIgKDE0LjYuMyk6ICdrZXlib2FyZFBhZ2VNdWx0aXBsaWVyJyBpcyBub3QgbnVtZXJpYy4iKTt0LmtleWJvYXJkUGFnZU11bHRpcGxpZXI9ZX1mdW5jdGlvbiBrKHQsZSl7aWYoIXIoZSkpdGhyb3cgbmV3IEVycm9yKCJub1VpU2xpZGVyICgxNC42LjMpOiAna2V5Ym9hcmREZWZhdWx0U3RlcCcgaXMgbm90IG51bWVyaWMuIik7dC5rZXlib2FyZERlZmF1bHRTdGVwPWV9ZnVuY3Rpb24gVCh0LGUpe2lmKCJvYmplY3QiIT10eXBlb2YgZXx8QXJyYXkuaXNBcnJheShlKSl0aHJvdyBuZXcgRXJyb3IoIm5vVWlTbGlkZXIgKDE0LjYuMyk6ICdyYW5nZScgaXMgbm90IGFuIG9iamVjdC4iKTtpZih2b2lkIDA9PT1lLm1pbnx8dm9pZCAwPT09ZS5tYXgpdGhyb3cgbmV3IEVycm9yKCJub1VpU2xpZGVyICgxNC42LjMpOiBNaXNzaW5nICdtaW4nIG9yICdtYXgnIGluICdyYW5nZScuIik7aWYoZS5taW49PT1lLm1heCl0aHJvdyBuZXcgRXJyb3IoIm5vVWlTbGlkZXIgKDE0LjYuMyk6ICdyYW5nZScgJ21pbicgYW5kICdtYXgnIGNhbm5vdCBiZSBlcXVhbC4iKTt0LnNwZWN0cnVtPW5ldyB2KGUsdC5zbmFwLHQuc2luZ2xlU3RlcCl9ZnVuY3Rpb24gQSh0LGUpe2lmKGU9cyhlKSwhQXJyYXkuaXNBcnJheShlKXx8IWUubGVuZ3RoKXRocm93IG5ldyBFcnJvcigibm9VaVNsaWRlciAoMTQuNi4zKTogJ3N0YXJ0JyBvcHRpb24gaXMgaW5jb3JyZWN0LiIpO3QuaGFuZGxlcz1lLmxlbmd0aCx0LnN0YXJ0PWV9ZnVuY3Rpb24gRCh0LGUpe2lmKCJib29sZWFuIiE9dHlwZW9mKHQuc25hcD1lKSl0aHJvdyBuZXcgRXJyb3IoIm5vVWlTbGlkZXIgKDE0LjYuMyk6ICdzbmFwJyBvcHRpb24gbXVzdCBiZSBhIGJvb2xlYW4uIil9ZnVuY3Rpb24gRSh0LGUpe2lmKCJib29sZWFuIiE9dHlwZW9mKHQuYW5pbWF0ZT1lKSl0aHJvdyBuZXcgRXJyb3IoIm5vVWlTbGlkZXIgKDE0LjYuMyk6ICdhbmltYXRlJyBvcHRpb24gbXVzdCBiZSBhIGJvb2xlYW4uIil9ZnVuY3Rpb24gTSh0LGUpe2lmKCJudW1iZXIiIT10eXBlb2YodC5hbmltYXRpb25EdXJhdGlvbj1lKSl0aHJvdyBuZXcgRXJyb3IoIm5vVWlTbGlkZXIgKDE0LjYuMyk6ICdhbmltYXRpb25EdXJhdGlvbicgb3B0aW9uIG11c3QgYmUgYSBudW1iZXIuIil9ZnVuY3Rpb24gTyh0LGUpe3ZhciBuLGk9WyExXTtpZigibG93ZXIiPT09ZT9lPVshMCwhMV06InVwcGVyIj09PWUmJihlPVshMSwhMF0pLCEwPT09ZXx8ITE9PT1lKXtmb3Iobj0xO248dC5oYW5kbGVzO24rKylpLnB1c2goZSk7aS5wdXNoKCExKX1lbHNle2lmKCFBcnJheS5pc0FycmF5KGUpfHwhZS5sZW5ndGh8fGUubGVuZ3RoIT09dC5oYW5kbGVzKzEpdGhyb3cgbmV3IEVycm9yKCJub1VpU2xpZGVyICgxNC42LjMpOiAnY29ubmVjdCcgb3B0aW9uIGRvZXNuJ3QgbWF0Y2ggaGFuZGxlIGNvdW50LiIpO2k9ZX10LmNvbm5lY3Q9aX1mdW5jdGlvbiBJKHQsZSl7c3dpdGNoKGUpe2Nhc2UiaG9yaXpvbnRhbCI6dC5vcnQ9MDticmVhaztjYXNlInZlcnRpY2FsIjp0Lm9ydD0xO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEVycm9yKCJub1VpU2xpZGVyICgxNC42LjMpOiAnb3JpZW50YXRpb24nIG9wdGlvbiBpcyBpbnZhbGlkLiIpfX1mdW5jdGlvbiBQKHQsZSl7aWYoIXIoZSkpdGhyb3cgbmV3IEVycm9yKCJub1VpU2xpZGVyICgxNC42LjMpOiAnbWFyZ2luJyBvcHRpb24gbXVzdCBiZSBudW1lcmljLiIpOzAhPT1lJiYodC5tYXJnaW49dC5zcGVjdHJ1bS5nZXREaXN0YW5jZShlKSl9ZnVuY3Rpb24gTCh0LGUpe2lmKCFyKGUpKXRocm93IG5ldyBFcnJvcigibm9VaVNsaWRlciAoMTQuNi4zKTogJ2xpbWl0JyBvcHRpb24gbXVzdCBiZSBudW1lcmljLiIpO2lmKHQubGltaXQ9dC5zcGVjdHJ1bS5nZXREaXN0YW5jZShlKSwhdC5saW1pdHx8dC5oYW5kbGVzPDIpdGhyb3cgbmV3IEVycm9yKCJub1VpU2xpZGVyICgxNC42LjMpOiAnbGltaXQnIG9wdGlvbiBpcyBvbmx5IHN1cHBvcnRlZCBvbiBsaW5lYXIgc2xpZGVycyB3aXRoIDIgb3IgbW9yZSBoYW5kbGVzLiIpfWZ1bmN0aW9uIE4odCxlKXt2YXIgbjtpZighcihlKSYmIUFycmF5LmlzQXJyYXkoZSkpdGhyb3cgbmV3IEVycm9yKCJub1VpU2xpZGVyICgxNC42LjMpOiAncGFkZGluZycgb3B0aW9uIG11c3QgYmUgbnVtZXJpYyBvciBhcnJheSBvZiBleGFjdGx5IDIgbnVtYmVycy4iKTtpZihBcnJheS5pc0FycmF5KGUpJiYyIT09ZS5sZW5ndGgmJiFyKGVbMF0pJiYhcihlWzFdKSl0aHJvdyBuZXcgRXJyb3IoIm5vVWlTbGlkZXIgKDE0LjYuMyk6ICdwYWRkaW5nJyBvcHRpb24gbXVzdCBiZSBudW1lcmljIG9yIGFycmF5IG9mIGV4YWN0bHkgMiBudW1iZXJzLiIpO2lmKDAhPT1lKXtmb3IoQXJyYXkuaXNBcnJheShlKXx8KGU9W2UsZV0pLHQucGFkZGluZz1bdC5zcGVjdHJ1bS5nZXREaXN0YW5jZShlWzBdKSx0LnNwZWN0cnVtLmdldERpc3RhbmNlKGVbMV0pXSxuPTA7bjx0LnNwZWN0cnVtLnhOdW1TdGVwcy5sZW5ndGgtMTtuKyspaWYodC5wYWRkaW5nWzBdW25dPDB8fHQucGFkZGluZ1sxXVtuXTwwKXRocm93IG5ldyBFcnJvcigibm9VaVNsaWRlciAoMTQuNi4zKTogJ3BhZGRpbmcnIG9wdGlvbiBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyKHMpLiIpO3ZhciBpPWVbMF0rZVsxXSxvPXQuc3BlY3RydW0ueFZhbFswXTtpZigxPGkvKHQuc3BlY3RydW0ueFZhbFt0LnNwZWN0cnVtLnhWYWwubGVuZ3RoLTFdLW8pKXRocm93IG5ldyBFcnJvcigibm9VaVNsaWRlciAoMTQuNi4zKTogJ3BhZGRpbmcnIG9wdGlvbiBtdXN0IG5vdCBleGNlZWQgMTAwJSBvZiB0aGUgcmFuZ2UuIil9fWZ1bmN0aW9uIEYodCxlKXtzd2l0Y2goZSl7Y2FzZSJsdHIiOnQuZGlyPTA7YnJlYWs7Y2FzZSJydGwiOnQuZGlyPTE7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoIm5vVWlTbGlkZXIgKDE0LjYuMyk6ICdkaXJlY3Rpb24nIG9wdGlvbiB3YXMgbm90IHJlY29nbml6ZWQuIil9fWZ1bmN0aW9uIFIodCxlKXtpZigic3RyaW5nIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCJub1VpU2xpZGVyICgxNC42LjMpOiAnYmVoYXZpb3VyJyBtdXN0IGJlIGEgc3RyaW5nIGNvbnRhaW5pbmcgb3B0aW9ucy4iKTt2YXIgbj0wPD1lLmluZGV4T2YoInRhcCIpLGk9MDw9ZS5pbmRleE9mKCJkcmFnIikscj0wPD1lLmluZGV4T2YoImZpeGVkIiksbz0wPD1lLmluZGV4T2YoInNuYXAiKSxhPTA8PWUuaW5kZXhPZigiaG92ZXIiKSxzPTA8PWUuaW5kZXhPZigidW5jb25zdHJhaW5lZCIpO2lmKHIpe2lmKDIhPT10LmhhbmRsZXMpdGhyb3cgbmV3IEVycm9yKCJub1VpU2xpZGVyICgxNC42LjMpOiAnZml4ZWQnIGJlaGF2aW91ciBtdXN0IGJlIHVzZWQgd2l0aCAyIGhhbmRsZXMiKTtQKHQsdC5zdGFydFsxXS10LnN0YXJ0WzBdKX1pZihzJiYodC5tYXJnaW58fHQubGltaXQpKXRocm93IG5ldyBFcnJvcigibm9VaVNsaWRlciAoMTQuNi4zKTogJ3VuY29uc3RyYWluZWQnIGJlaGF2aW91ciBjYW5ub3QgYmUgdXNlZCB3aXRoIG1hcmdpbiBvciBsaW1pdCIpO3QuZXZlbnRzPXt0YXA6bnx8byxkcmFnOmksZml4ZWQ6cixzbmFwOm8saG92ZXI6YSx1bmNvbnN0cmFpbmVkOnN9fWZ1bmN0aW9uIGoodCxlKXtpZighMSE9PWUpaWYoITA9PT1lKXt0LnRvb2x0aXBzPVtdO2Zvcih2YXIgbj0wO248dC5oYW5kbGVzO24rKyl0LnRvb2x0aXBzLnB1c2goITApfWVsc2V7aWYodC50b29sdGlwcz1zKGUpLHQudG9vbHRpcHMubGVuZ3RoIT09dC5oYW5kbGVzKXRocm93IG5ldyBFcnJvcigibm9VaVNsaWRlciAoMTQuNi4zKTogbXVzdCBwYXNzIGEgZm9ybWF0dGVyIGZvciBhbGwgaGFuZGxlcy4iKTt0LnRvb2x0aXBzLmZvckVhY2goKGZ1bmN0aW9uKHQpe2lmKCJib29sZWFuIiE9dHlwZW9mIHQmJigib2JqZWN0IiE9dHlwZW9mIHR8fCJmdW5jdGlvbiIhPXR5cGVvZiB0LnRvKSl0aHJvdyBuZXcgRXJyb3IoIm5vVWlTbGlkZXIgKDE0LjYuMyk6ICd0b29sdGlwcycgbXVzdCBiZSBwYXNzZWQgYSBmb3JtYXR0ZXIgb3IgJ2ZhbHNlJy4iKX0pKX19ZnVuY3Rpb24gJCh0LGUpe18odC5hcmlhRm9ybWF0PWUpfWZ1bmN0aW9uIHoodCxlKXtfKHQuZm9ybWF0PWUpfWZ1bmN0aW9uIEgodCxlKXtpZigiYm9vbGVhbiIhPXR5cGVvZih0LmtleWJvYXJkU3VwcG9ydD1lKSl0aHJvdyBuZXcgRXJyb3IoIm5vVWlTbGlkZXIgKDE0LjYuMyk6ICdrZXlib2FyZFN1cHBvcnQnIG9wdGlvbiBtdXN0IGJlIGEgYm9vbGVhbi4iKX1mdW5jdGlvbiBCKHQsZSl7dC5kb2N1bWVudEVsZW1lbnQ9ZX1mdW5jdGlvbiBxKHQsZSl7aWYoInN0cmluZyIhPXR5cGVvZiBlJiYhMSE9PWUpdGhyb3cgbmV3IEVycm9yKCJub1VpU2xpZGVyICgxNC42LjMpOiAnY3NzUHJlZml4JyBtdXN0IGJlIGEgc3RyaW5nIG9yIGBmYWxzZWAuIik7dC5jc3NQcmVmaXg9ZX1mdW5jdGlvbiBXKHQsZSl7aWYoIm9iamVjdCIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcigibm9VaVNsaWRlciAoMTQuNi4zKTogJ2Nzc0NsYXNzZXMnIG11c3QgYmUgYW4gb2JqZWN0LiIpO2lmKCJzdHJpbmciPT10eXBlb2YgdC5jc3NQcmVmaXgpZm9yKHZhciBuIGluIHQuY3NzQ2xhc3Nlcz17fSxlKWUuaGFzT3duUHJvcGVydHkobikmJih0LmNzc0NsYXNzZXNbbl09dC5jc3NQcmVmaXgrZVtuXSk7ZWxzZSB0LmNzc0NsYXNzZXM9ZX1mdW5jdGlvbiBVKHQpe3ZhciBlPXttYXJnaW46MCxsaW1pdDowLHBhZGRpbmc6MCxhbmltYXRlOiEwLGFuaW1hdGlvbkR1cmF0aW9uOjMwMCxhcmlhRm9ybWF0OnksZm9ybWF0Onl9LGk9e3N0ZXA6e3I6ITEsdDpTfSxrZXlib2FyZFBhZ2VNdWx0aXBsaWVyOntyOiExLHQ6Q30sa2V5Ym9hcmREZWZhdWx0U3RlcDp7cjohMSx0Omt9LHN0YXJ0OntyOiEwLHQ6QX0sY29ubmVjdDp7cjohMCx0Ok99LGRpcmVjdGlvbjp7cjohMCx0OkZ9LHNuYXA6e3I6ITEsdDpEfSxhbmltYXRlOntyOiExLHQ6RX0sYW5pbWF0aW9uRHVyYXRpb246e3I6ITEsdDpNfSxyYW5nZTp7cjohMCx0OlR9LG9yaWVudGF0aW9uOntyOiExLHQ6SX0sbWFyZ2luOntyOiExLHQ6UH0sbGltaXQ6e3I6ITEsdDpMfSxwYWRkaW5nOntyOiExLHQ6Tn0sYmVoYXZpb3VyOntyOiEwLHQ6Un0sYXJpYUZvcm1hdDp7cjohMSx0OiR9LGZvcm1hdDp7cjohMSx0Onp9LHRvb2x0aXBzOntyOiExLHQ6an0sa2V5Ym9hcmRTdXBwb3J0OntyOiEwLHQ6SH0sZG9jdW1lbnRFbGVtZW50OntyOiExLHQ6Qn0sY3NzUHJlZml4OntyOiEwLHQ6cX0sY3NzQ2xhc3Nlczp7cjohMCx0Old9fSxyPXtjb25uZWN0OiExLGRpcmVjdGlvbjoibHRyIixiZWhhdmlvdXI6InRhcCIsb3JpZW50YXRpb246Imhvcml6b250YWwiLGtleWJvYXJkU3VwcG9ydDohMCxjc3NQcmVmaXg6Im5vVWktIixjc3NDbGFzc2VzOmIsa2V5Ym9hcmRQYWdlTXVsdGlwbGllcjo1LGtleWJvYXJkRGVmYXVsdFN0ZXA6MTB9O3QuZm9ybWF0JiYhdC5hcmlhRm9ybWF0JiYodC5hcmlhRm9ybWF0PXQuZm9ybWF0KSxPYmplY3Qua2V5cyhpKS5mb3JFYWNoKChmdW5jdGlvbihvKXtpZighbih0W29dKSYmdm9pZCAwPT09cltvXSl7aWYoaVtvXS5yKXRocm93IG5ldyBFcnJvcigibm9VaVNsaWRlciAoMTQuNi4zKTogJyIrbysiJyBpcyByZXF1aXJlZC4iKTtyZXR1cm4hMH1pW29dLnQoZSxuKHRbb10pP3Rbb106cltvXSl9KSksZS5waXBzPXQucGlwczt2YXIgbz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxhPXZvaWQgMCE9PW8uc3R5bGUubXNUcmFuc2Zvcm0scz12b2lkIDAhPT1vLnN0eWxlLnRyYW5zZm9ybTtyZXR1cm4gZS50cmFuc2Zvcm1SdWxlPXM/InRyYW5zZm9ybSI6YT8ibXNUcmFuc2Zvcm0iOiJ3ZWJraXRUcmFuc2Zvcm0iLGUuc3R5bGU9W1sibGVmdCIsInRvcCJdLFsicmlnaHQiLCJib3R0b20iXV1bZS5kaXJdW2Uub3J0XSxlfXJldHVybntfX3NwZWN0cnVtOnYsdmVyc2lvbjp0LGNzc0NsYXNzZXM6YixjcmVhdGU6ZnVuY3Rpb24odCxuKXtpZighdHx8IXQubm9kZU5hbWUpdGhyb3cgbmV3IEVycm9yKCJub1VpU2xpZGVyICgxNC42LjMpOiBjcmVhdGUgcmVxdWlyZXMgYSBzaW5nbGUgZWxlbWVudCwgZ290OiAiK3QpO2lmKHQubm9VaVNsaWRlcil0aHJvdyBuZXcgRXJyb3IoIm5vVWlTbGlkZXIgKDE0LjYuMyk6IFNsaWRlciB3YXMgYWxyZWFkeSBpbml0aWFsaXplZC4iKTt2YXIgcj1mdW5jdGlvbih0LG4scil7dmFyIGwsaCxmLHAsZyxtLHYseSxiPXdpbmRvdy5uYXZpZ2F0b3IucG9pbnRlckVuYWJsZWQ/e3N0YXJ0OiJwb2ludGVyZG93biIsbW92ZToicG9pbnRlcm1vdmUiLGVuZDoicG9pbnRlcnVwIn06d2luZG93Lm5hdmlnYXRvci5tc1BvaW50ZXJFbmFibGVkP3tzdGFydDoiTVNQb2ludGVyRG93biIsbW92ZToiTVNQb2ludGVyTW92ZSIsZW5kOiJNU1BvaW50ZXJVcCJ9OntzdGFydDoibW91c2Vkb3duIHRvdWNoc3RhcnQiLG1vdmU6Im1vdXNlbW92ZSB0b3VjaG1vdmUiLGVuZDoibW91c2V1cCB0b3VjaGVuZCJ9LF89d2luZG93LkNTUyYmQ1NTLnN1cHBvcnRzJiZDU1Muc3VwcG9ydHMoInRvdWNoLWFjdGlvbiIsIm5vbmUiKSYmZnVuY3Rpb24oKXt2YXIgdD0hMTt0cnl7dmFyIGU9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCJwYXNzaXZlIix7Z2V0OmZ1bmN0aW9uKCl7dD0hMH19KTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidGVzdCIsbnVsbCxlKX1jYXRjaCh0KXt9cmV0dXJuIHR9KCksUz10LEM9bi5zcGVjdHJ1bSxrPVtdLFQ9W10sQT1bXSxEPTAsRT17fSxNPXQub3duZXJEb2N1bWVudCxPPW4uZG9jdW1lbnRFbGVtZW50fHxNLmRvY3VtZW50RWxlbWVudCxJPU0uYm9keSxQPSJydGwiPT09TS5kaXJ8fDE9PT1uLm9ydD8wOjEwMDtmdW5jdGlvbiBMKHQsZSl7dmFyIG49TS5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gZSYmYyhuLGUpLHQuYXBwZW5kQ2hpbGQobiksbn1mdW5jdGlvbiBOKHQsZSl7dmFyIGk9TCh0LG4uY3NzQ2xhc3Nlcy5vcmlnaW4pLHI9TChpLG4uY3NzQ2xhc3Nlcy5oYW5kbGUpO3JldHVybiBMKHIsbi5jc3NDbGFzc2VzLnRvdWNoQXJlYSksci5zZXRBdHRyaWJ1dGUoImRhdGEtaGFuZGxlIixlKSxuLmtleWJvYXJkU3VwcG9ydCYmKHIuc2V0QXR0cmlidXRlKCJ0YWJpbmRleCIsIjAiKSxyLmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24odCxlKXtpZihqKCl8fCQoZSkpcmV0dXJuITE7dmFyIGk9WyJMZWZ0IiwiUmlnaHQiXSxyPVsiRG93biIsIlVwIl0sbz1bIlBhZ2VEb3duIiwiUGFnZVVwIl0sYT1bIkhvbWUiLCJFbmQiXTtuLmRpciYmIW4ub3J0P2kucmV2ZXJzZSgpOm4ub3J0JiYhbi5kaXImJihyLnJldmVyc2UoKSxvLnJldmVyc2UoKSk7dmFyIHMsbD10LmtleS5yZXBsYWNlKCJBcnJvdyIsIiIpLGM9bD09PW9bMF0sdT1sPT09b1sxXSxkPWw9PT1yWzBdfHxsPT09aVswXXx8YyxoPWw9PT1yWzFdfHxsPT09aVsxXXx8dSxmPWw9PT1hWzFdO2lmKCEoZHx8aHx8bD09PWFbMF18fGYpKXJldHVybiEwO2lmKHQucHJldmVudERlZmF1bHQoKSxofHxkKXt2YXIgcD1uLmtleWJvYXJkUGFnZU11bHRpcGxpZXIsZz1kPzA6MSxtPWh0KGUpW2ddO2lmKG51bGw9PT1tKXJldHVybiExOyExPT09bSYmKG09Qy5nZXREZWZhdWx0U3RlcChUW2VdLGQsbi5rZXlib2FyZERlZmF1bHRTdGVwKSksKHV8fGMpJiYobSo9cCksbT1NYXRoLm1heChtLDFlLTcpLG0qPWQ/LTE6MSxzPWtbZV0rbX1lbHNlIHM9Zj9uLnNwZWN0cnVtLnhWYWxbbi5zcGVjdHJ1bS54VmFsLmxlbmd0aC0xXTpuLnNwZWN0cnVtLnhWYWxbMF07cmV0dXJuIHN0KGUsQy50b1N0ZXBwaW5nKHMpLCEwLCEwKSxldCgic2xpZGUiLGUpLGV0KCJ1cGRhdGUiLGUpLGV0KCJjaGFuZ2UiLGUpLGV0KCJzZXQiLGUpLCExfSh0LGUpfSkpKSxyLnNldEF0dHJpYnV0ZSgicm9sZSIsInNsaWRlciIpLHIuc2V0QXR0cmlidXRlKCJhcmlhLW9yaWVudGF0aW9uIixuLm9ydD8idmVydGljYWwiOiJob3Jpem9udGFsIiksMD09PWU/YyhyLG4uY3NzQ2xhc3Nlcy5oYW5kbGVMb3dlcik6ZT09PW4uaGFuZGxlcy0xJiZjKHIsbi5jc3NDbGFzc2VzLmhhbmRsZVVwcGVyKSxpfWZ1bmN0aW9uIEYodCxlKXtyZXR1cm4hIWUmJkwodCxuLmNzc0NsYXNzZXMuY29ubmVjdCl9ZnVuY3Rpb24gUih0LGUpe3JldHVybiEhbi50b29sdGlwc1tlXSYmTCh0LmZpcnN0Q2hpbGQsbi5jc3NDbGFzc2VzLnRvb2x0aXApfWZ1bmN0aW9uIGooKXtyZXR1cm4gUy5oYXNBdHRyaWJ1dGUoImRpc2FibGVkIil9ZnVuY3Rpb24gJCh0KXtyZXR1cm4gaFt0XS5oYXNBdHRyaWJ1dGUoImRpc2FibGVkIil9ZnVuY3Rpb24geigpe2cmJih0dCgidXBkYXRlIit3KSxnLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QmJmUodCl9KSksZz1udWxsKX1mdW5jdGlvbiBIKCl7eigpLGc9aC5tYXAoUiksWigidXBkYXRlIit3LChmdW5jdGlvbih0LGUsaSl7aWYoZ1tlXSl7dmFyIHI9dFtlXTshMCE9PW4udG9vbHRpcHNbZV0mJihyPW4udG9vbHRpcHNbZV0udG8oaVtlXSkpLGdbZV0uaW5uZXJIVE1MPXJ9fSkpfWZ1bmN0aW9uIEIodCxlLGkpe3ZhciByPU0uY3JlYXRlRWxlbWVudCgiZGl2Iiksbz1bXTtvWzBdPW4uY3NzQ2xhc3Nlcy52YWx1ZU5vcm1hbCxvWzFdPW4uY3NzQ2xhc3Nlcy52YWx1ZUxhcmdlLG9bMl09bi5jc3NDbGFzc2VzLnZhbHVlU3ViO3ZhciBhPVtdO2FbMF09bi5jc3NDbGFzc2VzLm1hcmtlck5vcm1hbCxhWzFdPW4uY3NzQ2xhc3Nlcy5tYXJrZXJMYXJnZSxhWzJdPW4uY3NzQ2xhc3Nlcy5tYXJrZXJTdWI7dmFyIHM9W24uY3NzQ2xhc3Nlcy52YWx1ZUhvcml6b250YWwsbi5jc3NDbGFzc2VzLnZhbHVlVmVydGljYWxdLGw9W24uY3NzQ2xhc3Nlcy5tYXJrZXJIb3Jpem9udGFsLG4uY3NzQ2xhc3Nlcy5tYXJrZXJWZXJ0aWNhbF07ZnVuY3Rpb24gdSh0LGUpe3ZhciBpPWU9PT1uLmNzc0NsYXNzZXMudmFsdWUscj1pP286YTtyZXR1cm4gZSsiICIrKGk/czpsKVtuLm9ydF0rIiAiK3JbdF19cmV0dXJuIGMocixuLmNzc0NsYXNzZXMucGlwcyksYyhyLDA9PT1uLm9ydD9uLmNzc0NsYXNzZXMucGlwc0hvcml6b250YWw6bi5jc3NDbGFzc2VzLnBpcHNWZXJ0aWNhbCksT2JqZWN0LmtleXModCkuZm9yRWFjaCgoZnVuY3Rpb24obyl7IWZ1bmN0aW9uKHQsbyxhKXtpZigtMSE9PShhPWU/ZShvLGEpOmEpKXt2YXIgcz1MKHIsITEpO3MuY2xhc3NOYW1lPXUoYSxuLmNzc0NsYXNzZXMubWFya2VyKSxzLnN0eWxlW24uc3R5bGVdPXQrIiUiLDA8YSYmKChzPUwociwhMSkpLmNsYXNzTmFtZT11KGEsbi5jc3NDbGFzc2VzLnZhbHVlKSxzLnNldEF0dHJpYnV0ZSgiZGF0YS12YWx1ZSIsbykscy5zdHlsZVtuLnN0eWxlXT10KyIlIixzLmlubmVySFRNTD1pLnRvKG8pKX19KG8sdFtvXVswXSx0W29dWzFdKX0pKSxyfWZ1bmN0aW9uIHEoKXtwJiYoZShwKSxwPW51bGwpfWZ1bmN0aW9uIFcodCl7cSgpO3ZhciBlLG4saSxyLG8sYSxzLGwsYyx1PXQubW9kZSxkPXQuZGVuc2l0eXx8MSxoPXQuZmlsdGVyfHwhMSxmPWZ1bmN0aW9uKHQsZSxuKXtpZigicmFuZ2UiPT09dHx8InN0ZXBzIj09PXQpcmV0dXJuIEMueFZhbDtpZigiY291bnQiPT09dCl7aWYoZTwyKXRocm93IG5ldyBFcnJvcigibm9VaVNsaWRlciAoMTQuNi4zKTogJ3ZhbHVlcycgKD49IDIpIHJlcXVpcmVkIGZvciBtb2RlICdjb3VudCcuIik7dmFyIGk9ZS0xLHI9MTAwL2k7Zm9yKGU9W107aS0tOyllW2ldPWkqcjtlLnB1c2goMTAwKSx0PSJwb3NpdGlvbnMifXJldHVybiJwb3NpdGlvbnMiPT09dD9lLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIEMuZnJvbVN0ZXBwaW5nKG4/Qy5nZXRTdGVwKHQpOnQpfSkpOiJ2YWx1ZXMiPT09dD9uP2UubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gQy5mcm9tU3RlcHBpbmcoQy5nZXRTdGVwKEMudG9TdGVwcGluZyh0KSkpfSkpOmU6dm9pZCAwfSh1LHQudmFsdWVzfHwhMSx0LnN0ZXBwZWR8fCExKSxnPShlPWQsbj11LGk9ZixyPXt9LG89Qy54VmFsWzBdLGE9Qy54VmFsW0MueFZhbC5sZW5ndGgtMV0sbD1zPSExLGM9MCwoaT1pLnNsaWNlKCkuc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC1lfSkpLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIXRoaXNbdF0mJih0aGlzW3RdPSEwKX0pLHt9KSlbMF0hPT1vJiYoaS51bnNoaWZ0KG8pLHM9ITApLGlbaS5sZW5ndGgtMV0hPT1hJiYoaS5wdXNoKGEpLGw9ITApLGkuZm9yRWFjaCgoZnVuY3Rpb24odCxvKXt2YXIgYSx1LGQsaCxmLHAsZyxtLHYseSxiPXQsdz1pW28rMV0seD0ic3RlcHMiPT09bjtpZih4JiYoYT1DLnhOdW1TdGVwc1tvXSksYXx8KGE9dy1iKSwhMSE9PWIpZm9yKHZvaWQgMD09PXcmJih3PWIpLGE9TWF0aC5tYXgoYSwxZS03KSx1PWI7dTw9dzt1PSh1K2EpLnRvRml4ZWQoNykvMSl7Zm9yKG09KGY9KGg9Qy50b1N0ZXBwaW5nKHUpKS1jKS9lLHk9Zi8odj1NYXRoLnJvdW5kKG0pKSxkPTE7ZDw9djtkKz0xKXJbKHA9YytkKnkpLnRvRml4ZWQoNSldPVtDLmZyb21TdGVwcGluZyhwKSwwXTtnPS0xPGkuaW5kZXhPZih1KT8xOng/MjowLCFvJiZzJiZ1IT09dyYmKGc9MCksdT09PXcmJmx8fChyW2gudG9GaXhlZCg1KV09W3UsZ10pLGM9aH19KSksciksbT10LmZvcm1hdHx8e3RvOk1hdGgucm91bmR9O3JldHVybiBwPVMuYXBwZW5kQ2hpbGQoQihnLGgsbSkpfWZ1bmN0aW9uIFYoKXt2YXIgdD1sLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGU9Im9mZnNldCIrWyJXaWR0aCIsIkhlaWdodCJdW24ub3J0XTtyZXR1cm4gMD09PW4ub3J0P3Qud2lkdGh8fGxbZV06dC5oZWlnaHR8fGxbZV19ZnVuY3Rpb24gWSh0LGUsaSxyKXt2YXIgbz1mdW5jdGlvbihvKXtyZXR1cm4hIShvPWZ1bmN0aW9uKHQsZSxuKXt2YXIgaSxyLG89MD09PXQudHlwZS5pbmRleE9mKCJ0b3VjaCIpLGE9MD09PXQudHlwZS5pbmRleE9mKCJtb3VzZSIpLHM9MD09PXQudHlwZS5pbmRleE9mKCJwb2ludGVyIik7aWYoMD09PXQudHlwZS5pbmRleE9mKCJNU1BvaW50ZXIiKSYmKHM9ITApLCJtb3VzZWRvd24iPT09dC50eXBlJiYhdC5idXR0b25zJiYhdC50b3VjaGVzKXJldHVybiExO2lmKG8pe3ZhciBsPWZ1bmN0aW9uKHQpe3JldHVybiB0LnRhcmdldD09PW58fG4uY29udGFpbnModC50YXJnZXQpfHx0LnRhcmdldC5zaGFkb3dSb290JiZ0LnRhcmdldC5zaGFkb3dSb290LmNvbnRhaW5zKG4pfTtpZigidG91Y2hzdGFydCI9PT10LnR5cGUpe3ZhciBjPUFycmF5LnByb3RvdHlwZS5maWx0ZXIuY2FsbCh0LnRvdWNoZXMsbCk7aWYoMTxjLmxlbmd0aClyZXR1cm4hMTtpPWNbMF0ucGFnZVgscj1jWzBdLnBhZ2VZfWVsc2V7dmFyIHU9QXJyYXkucHJvdG90eXBlLmZpbmQuY2FsbCh0LmNoYW5nZWRUb3VjaGVzLGwpO2lmKCF1KXJldHVybiExO2k9dS5wYWdlWCxyPXUucGFnZVl9fXJldHVybiBlPWV8fGQoTSksKGF8fHMpJiYoaT10LmNsaWVudFgrZS54LHI9dC5jbGllbnRZK2UueSksdC5wYWdlT2Zmc2V0PWUsdC5wb2ludHM9W2kscl0sdC5jdXJzb3I9YXx8cyx0fShvLHIucGFnZU9mZnNldCxyLnRhcmdldHx8ZSkpJiYhKGooKSYmIXIuZG9Ob3RSZWplY3QpJiYoYT1TLHM9bi5jc3NDbGFzc2VzLnRhcCwhKChhLmNsYXNzTGlzdD9hLmNsYXNzTGlzdC5jb250YWlucyhzKTpuZXcgUmVnRXhwKCJcXGIiK3MrIlxcYiIpLnRlc3QoYS5jbGFzc05hbWUpKSYmIXIuZG9Ob3RSZWplY3QpJiYhKHQ9PT1iLnN0YXJ0JiZ2b2lkIDAhPT1vLmJ1dHRvbnMmJjE8by5idXR0b25zKSYmKCFyLmhvdmVyfHwhby5idXR0b25zKSYmKF98fG8ucHJldmVudERlZmF1bHQoKSxvLmNhbGNQb2ludD1vLnBvaW50c1tuLm9ydF0sdm9pZCBpKG8scikpKTt2YXIgYSxzfSxhPVtdO3JldHVybiB0LnNwbGl0KCIgIikuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZS5hZGRFdmVudExpc3RlbmVyKHQsbywhIV8mJntwYXNzaXZlOiEwfSksYS5wdXNoKFt0LG9dKX0pKSxhfWZ1bmN0aW9uIEcodCl7dmFyIGUsaSxyLG8scyxjLHU9MTAwKih0LShlPWwsaT1uLm9ydCxyPWUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscz0obz1lLm93bmVyRG9jdW1lbnQpLmRvY3VtZW50RWxlbWVudCxjPWQobyksL3dlYmtpdC4qQ2hyb21lLipNb2JpbGUvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpJiYoYy54PTApLGk/ci50b3ArYy55LXMuY2xpZW50VG9wOnIubGVmdCtjLngtcy5jbGllbnRMZWZ0KSkvVigpO3JldHVybiB1PWEodSksbi5kaXI/MTAwLXU6dX1mdW5jdGlvbiBYKHQsZSl7Im1vdXNlb3V0Ij09PXQudHlwZSYmIkhUTUwiPT09dC50YXJnZXQubm9kZU5hbWUmJm51bGw9PT10LnJlbGF0ZWRUYXJnZXQmJksodCxlKX1mdW5jdGlvbiBRKHQsZSl7aWYoLTE9PT1uYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmRleE9mKCJNU0lFIDkiKSYmMD09PXQuYnV0dG9ucyYmMCE9PWUuYnV0dG9uc1Byb3BlcnR5KXJldHVybiBLKHQsZSk7dmFyIGk9KG4uZGlyPy0xOjEpKih0LmNhbGNQb2ludC1lLnN0YXJ0Q2FsY1BvaW50KTtydCgwPGksMTAwKmkvZS5iYXNlU2l6ZSxlLmxvY2F0aW9ucyxlLmhhbmRsZU51bWJlcnMpfWZ1bmN0aW9uIEsodCxlKXtlLmhhbmRsZSYmKHUoZS5oYW5kbGUsbi5jc3NDbGFzc2VzLmFjdGl2ZSksRC09MSksZS5saXN0ZW5lcnMuZm9yRWFjaCgoZnVuY3Rpb24odCl7Ty5yZW1vdmVFdmVudExpc3RlbmVyKHRbMF0sdFsxXSl9KSksMD09PUQmJih1KFMsbi5jc3NDbGFzc2VzLmRyYWcpLGF0KCksdC5jdXJzb3ImJihJLnN0eWxlLmN1cnNvcj0iIixJLnJlbW92ZUV2ZW50TGlzdGVuZXIoInNlbGVjdHN0YXJ0IixpKSkpLGUuaGFuZGxlTnVtYmVycy5mb3JFYWNoKChmdW5jdGlvbih0KXtldCgiY2hhbmdlIix0KSxldCgic2V0Iix0KSxldCgiZW5kIix0KX0pKX1mdW5jdGlvbiBKKHQsZSl7aWYoZS5oYW5kbGVOdW1iZXJzLnNvbWUoJCkpcmV0dXJuITE7dmFyIHI7MT09PWUuaGFuZGxlTnVtYmVycy5sZW5ndGgmJihyPWhbZS5oYW5kbGVOdW1iZXJzWzBdXS5jaGlsZHJlblswXSxEKz0xLGMocixuLmNzc0NsYXNzZXMuYWN0aXZlKSksdC5zdG9wUHJvcGFnYXRpb24oKTt2YXIgbz1bXSxhPVkoYi5tb3ZlLE8sUSx7dGFyZ2V0OnQudGFyZ2V0LGhhbmRsZTpyLGxpc3RlbmVyczpvLHN0YXJ0Q2FsY1BvaW50OnQuY2FsY1BvaW50LGJhc2VTaXplOlYoKSxwYWdlT2Zmc2V0OnQucGFnZU9mZnNldCxoYW5kbGVOdW1iZXJzOmUuaGFuZGxlTnVtYmVycyxidXR0b25zUHJvcGVydHk6dC5idXR0b25zLGxvY2F0aW9uczpULnNsaWNlKCl9KSxzPVkoYi5lbmQsTyxLLHt0YXJnZXQ6dC50YXJnZXQsaGFuZGxlOnIsbGlzdGVuZXJzOm8sZG9Ob3RSZWplY3Q6ITAsaGFuZGxlTnVtYmVyczplLmhhbmRsZU51bWJlcnN9KSxsPVkoIm1vdXNlb3V0IixPLFgse3RhcmdldDp0LnRhcmdldCxoYW5kbGU6cixsaXN0ZW5lcnM6byxkb05vdFJlamVjdDohMCxoYW5kbGVOdW1iZXJzOmUuaGFuZGxlTnVtYmVyc30pO28ucHVzaC5hcHBseShvLGEuY29uY2F0KHMsbCkpLHQuY3Vyc29yJiYoSS5zdHlsZS5jdXJzb3I9Z2V0Q29tcHV0ZWRTdHlsZSh0LnRhcmdldCkuY3Vyc29yLDE8aC5sZW5ndGgmJmMoUyxuLmNzc0NsYXNzZXMuZHJhZyksSS5hZGRFdmVudExpc3RlbmVyKCJzZWxlY3RzdGFydCIsaSwhMSkpLGUuaGFuZGxlTnVtYmVycy5mb3JFYWNoKChmdW5jdGlvbih0KXtldCgic3RhcnQiLHQpfSkpfWZ1bmN0aW9uIFoodCxlKXtFW3RdPUVbdF18fFtdLEVbdF0ucHVzaChlKSwidXBkYXRlIj09PXQuc3BsaXQoIi4iKVswXSYmaC5mb3JFYWNoKChmdW5jdGlvbih0LGUpe2V0KCJ1cGRhdGUiLGUpfSkpfWZ1bmN0aW9uIHR0KHQpe3ZhciBlPXQmJnQuc3BsaXQoIi4iKVswXSxuPWU/dC5zdWJzdHJpbmcoZS5sZW5ndGgpOnQ7T2JqZWN0LmtleXMoRSkuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGkscj10LnNwbGl0KCIuIilbMF0sbz10LnN1YnN0cmluZyhyLmxlbmd0aCk7ZSYmZSE9PXJ8fG4mJm4hPT1vfHwoKGk9bykhPT14JiZpIT09d3x8bj09PW8pJiZkZWxldGUgRVt0XX0pKX1mdW5jdGlvbiBldCh0LGUsaSl7T2JqZWN0LmtleXMoRSkuZm9yRWFjaCgoZnVuY3Rpb24ocil7dmFyIG89ci5zcGxpdCgiLiIpWzBdO3Q9PT1vJiZFW3JdLmZvckVhY2goKGZ1bmN0aW9uKHQpe3QuY2FsbChtLGsubWFwKG4uZm9ybWF0LnRvKSxlLGsuc2xpY2UoKSxpfHwhMSxULnNsaWNlKCksbSl9KSl9KSl9ZnVuY3Rpb24gbnQodCxlLGkscixvLHMpe3ZhciBsO3JldHVybiAxPGgubGVuZ3RoJiYhbi5ldmVudHMudW5jb25zdHJhaW5lZCYmKHImJjA8ZSYmKGw9Qy5nZXRBYnNvbHV0ZURpc3RhbmNlKHRbZS0xXSxuLm1hcmdpbiwwKSxpPU1hdGgubWF4KGksbCkpLG8mJmU8aC5sZW5ndGgtMSYmKGw9Qy5nZXRBYnNvbHV0ZURpc3RhbmNlKHRbZSsxXSxuLm1hcmdpbiwxKSxpPU1hdGgubWluKGksbCkpKSwxPGgubGVuZ3RoJiZuLmxpbWl0JiYociYmMDxlJiYobD1DLmdldEFic29sdXRlRGlzdGFuY2UodFtlLTFdLG4ubGltaXQsMCksaT1NYXRoLm1pbihpLGwpKSxvJiZlPGgubGVuZ3RoLTEmJihsPUMuZ2V0QWJzb2x1dGVEaXN0YW5jZSh0W2UrMV0sbi5saW1pdCwxKSxpPU1hdGgubWF4KGksbCkpKSxuLnBhZGRpbmcmJigwPT09ZSYmKGw9Qy5nZXRBYnNvbHV0ZURpc3RhbmNlKDAsbi5wYWRkaW5nWzBdLDApLGk9TWF0aC5tYXgoaSxsKSksZT09PWgubGVuZ3RoLTEmJihsPUMuZ2V0QWJzb2x1dGVEaXN0YW5jZSgxMDAsbi5wYWRkaW5nWzFdLDEpLGk9TWF0aC5taW4oaSxsKSkpLCEoKGk9YShpPUMuZ2V0U3RlcChpKSkpPT09dFtlXSYmIXMpJiZpfWZ1bmN0aW9uIGl0KHQsZSl7dmFyIGk9bi5vcnQ7cmV0dXJuKGk/ZTp0KSsiLCAiKyhpP3Q6ZSl9ZnVuY3Rpb24gcnQodCxlLG4saSl7dmFyIHI9bi5zbGljZSgpLG89WyF0LHRdLGE9W3QsIXRdO2k9aS5zbGljZSgpLHQmJmkucmV2ZXJzZSgpLDE8aS5sZW5ndGg/aS5mb3JFYWNoKChmdW5jdGlvbih0LG4pe3ZhciBpPW50KHIsdCxyW3RdK2Usb1tuXSxhW25dLCExKTshMT09PWk/ZT0wOihlPWktclt0XSxyW3RdPWkpfSkpOm89YT1bITBdO3ZhciBzPSExO2kuZm9yRWFjaCgoZnVuY3Rpb24odCxpKXtzPXN0KHQsblt0XStlLG9baV0sYVtpXSl8fHN9KSkscyYmaS5mb3JFYWNoKChmdW5jdGlvbih0KXtldCgidXBkYXRlIix0KSxldCgic2xpZGUiLHQpfSkpfWZ1bmN0aW9uIG90KHQsZSl7cmV0dXJuIG4uZGlyPzEwMC10LWU6dH1mdW5jdGlvbiBhdCgpe0EuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9NTA8VFt0XT8tMToxLG49MysoaC5sZW5ndGgrZSp0KTtoW3RdLnN0eWxlLnpJbmRleD1ufSkpfWZ1bmN0aW9uIHN0KHQsZSxpLHIsbyl7cmV0dXJuIG98fChlPW50KFQsdCxlLGksciwhMSkpLCExIT09ZSYmKGZ1bmN0aW9uKHQsZSl7VFt0XT1lLGtbdF09Qy5mcm9tU3RlcHBpbmcoZSk7dmFyIGk9InRyYW5zbGF0ZSgiK2l0KDEwKihvdChlLDApLVApKyIlIiwiMCIpKyIpIjtoW3RdLnN0eWxlW24udHJhbnNmb3JtUnVsZV09aSxsdCh0KSxsdCh0KzEpfSh0LGUpLCEwKX1mdW5jdGlvbiBsdCh0KXtpZihmW3RdKXt2YXIgZT0wLGk9MTAwOzAhPT10JiYoZT1UW3QtMV0pLHQhPT1mLmxlbmd0aC0xJiYoaT1UW3RdKTt2YXIgcj1pLWUsbz0idHJhbnNsYXRlKCIraXQob3QoZSxyKSsiJSIsIjAiKSsiKSIsYT0ic2NhbGUoIitpdChyLzEwMCwiMSIpKyIpIjtmW3RdLnN0eWxlW24udHJhbnNmb3JtUnVsZV09bysiICIrYX19ZnVuY3Rpb24gY3QodCxlKXtyZXR1cm4gbnVsbD09PXR8fCExPT09dHx8dm9pZCAwPT09dD9UW2VdOigibnVtYmVyIj09dHlwZW9mIHQmJih0PVN0cmluZyh0KSksdD1uLmZvcm1hdC5mcm9tKHQpLCExPT09KHQ9Qy50b1N0ZXBwaW5nKHQpKXx8aXNOYU4odCk/VFtlXTp0KX1mdW5jdGlvbiB1dCh0LGUsaSl7dmFyIHI9cyh0KSxhPXZvaWQgMD09PVRbMF07ZT12b2lkIDA9PT1lfHwhIWUsbi5hbmltYXRlJiYhYSYmbyhTLG4uY3NzQ2xhc3Nlcy50YXAsbi5hbmltYXRpb25EdXJhdGlvbiksQS5mb3JFYWNoKChmdW5jdGlvbih0KXtzdCh0LGN0KHJbdF0sdCksITAsITEsaSl9KSk7Zm9yKHZhciBsPTE9PT1BLmxlbmd0aD8wOjE7bDxBLmxlbmd0aDsrK2wpQS5mb3JFYWNoKChmdW5jdGlvbih0KXtzdCh0LFRbdF0sITAsITAsaSl9KSk7YXQoKSxBLmZvckVhY2goKGZ1bmN0aW9uKHQpe2V0KCJ1cGRhdGUiLHQpLG51bGwhPT1yW3RdJiZlJiZldCgic2V0Iix0KX0pKX1mdW5jdGlvbiBkdCgpe3ZhciB0PWsubWFwKG4uZm9ybWF0LnRvKTtyZXR1cm4gMT09PXQubGVuZ3RoP3RbMF06dH1mdW5jdGlvbiBodCh0KXt2YXIgZT1UW3RdLGk9Qy5nZXROZWFyYnlTdGVwcyhlKSxyPWtbdF0sbz1pLnRoaXNTdGVwLnN0ZXAsYT1udWxsO2lmKG4uc25hcClyZXR1cm5bci1pLnN0ZXBCZWZvcmUuc3RhcnRWYWx1ZXx8bnVsbCxpLnN0ZXBBZnRlci5zdGFydFZhbHVlLXJ8fG51bGxdOyExIT09byYmcitvPmkuc3RlcEFmdGVyLnN0YXJ0VmFsdWUmJihvPWkuc3RlcEFmdGVyLnN0YXJ0VmFsdWUtciksYT1yPmkudGhpc1N0ZXAuc3RhcnRWYWx1ZT9pLnRoaXNTdGVwLnN0ZXA6ITEhPT1pLnN0ZXBCZWZvcmUuc3RlcCYmci1pLnN0ZXBCZWZvcmUuaGlnaGVzdFN0ZXAsMTAwPT09ZT9vPW51bGw6MD09PWUmJihhPW51bGwpO3ZhciBzPUMuY291bnRTdGVwRGVjaW1hbHMoKTtyZXR1cm4gbnVsbCE9PW8mJiExIT09byYmKG89TnVtYmVyKG8udG9GaXhlZChzKSkpLG51bGwhPT1hJiYhMSE9PWEmJihhPU51bWJlcihhLnRvRml4ZWQocykpKSxbYSxvXX1yZXR1cm4gYyh2PVMsbi5jc3NDbGFzc2VzLnRhcmdldCksMD09PW4uZGlyP2ModixuLmNzc0NsYXNzZXMubHRyKTpjKHYsbi5jc3NDbGFzc2VzLnJ0bCksMD09PW4ub3J0P2ModixuLmNzc0NsYXNzZXMuaG9yaXpvbnRhbCk6Yyh2LG4uY3NzQ2xhc3Nlcy52ZXJ0aWNhbCksYyh2LCJydGwiPT09Z2V0Q29tcHV0ZWRTdHlsZSh2KS5kaXJlY3Rpb24/bi5jc3NDbGFzc2VzLnRleHREaXJlY3Rpb25SdGw6bi5jc3NDbGFzc2VzLnRleHREaXJlY3Rpb25MdHIpLGw9TCh2LG4uY3NzQ2xhc3Nlcy5iYXNlKSxmdW5jdGlvbih0LGUpe3ZhciBpPUwoZSxuLmNzc0NsYXNzZXMuY29ubmVjdHMpO2g9W10sKGY9W10pLnB1c2goRihpLHRbMF0pKTtmb3IodmFyIHI9MDtyPG4uaGFuZGxlcztyKyspaC5wdXNoKE4oZSxyKSksQVtyXT1yLGYucHVzaChGKGksdFtyKzFdKSl9KG4uY29ubmVjdCxsKSwoeT1uLmV2ZW50cykuZml4ZWR8fGguZm9yRWFjaCgoZnVuY3Rpb24odCxlKXtZKGIuc3RhcnQsdC5jaGlsZHJlblswXSxKLHtoYW5kbGVOdW1iZXJzOltlXX0pfSkpLHkudGFwJiZZKGIuc3RhcnQsbCwoZnVuY3Rpb24odCl7dC5zdG9wUHJvcGFnYXRpb24oKTt2YXIgZSxpLHIsYT1HKHQuY2FsY1BvaW50KSxzPShlPWEscj0hKGk9MTAwKSxoLmZvckVhY2goKGZ1bmN0aW9uKHQsbil7aWYoISQobikpe3ZhciBvPVRbbl0sYT1NYXRoLmFicyhvLWUpOyhhPGl8fGE8PWkmJm88ZXx8MTAwPT09YSYmMTAwPT09aSkmJihyPW4saT1hKX19KSkscik7aWYoITE9PT1zKXJldHVybiExO24uZXZlbnRzLnNuYXB8fG8oUyxuLmNzc0NsYXNzZXMudGFwLG4uYW5pbWF0aW9uRHVyYXRpb24pLHN0KHMsYSwhMCwhMCksYXQoKSxldCgic2xpZGUiLHMsITApLGV0KCJ1cGRhdGUiLHMsITApLGV0KCJjaGFuZ2UiLHMsITApLGV0KCJzZXQiLHMsITApLG4uZXZlbnRzLnNuYXAmJkoodCx7aGFuZGxlTnVtYmVyczpbc119KX0pLHt9KSx5LmhvdmVyJiZZKGIubW92ZSxsLChmdW5jdGlvbih0KXt2YXIgZT1HKHQuY2FsY1BvaW50KSxuPUMuZ2V0U3RlcChlKSxpPUMuZnJvbVN0ZXBwaW5nKG4pO09iamVjdC5rZXlzKEUpLmZvckVhY2goKGZ1bmN0aW9uKHQpeyJob3ZlciI9PT10LnNwbGl0KCIuIilbMF0mJkVbdF0uZm9yRWFjaCgoZnVuY3Rpb24odCl7dC5jYWxsKG0saSl9KSl9KSl9KSx7aG92ZXI6ITB9KSx5LmRyYWcmJmYuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXtpZighMSE9PXQmJjAhPT1lJiZlIT09Zi5sZW5ndGgtMSl7dmFyIGk9aFtlLTFdLHI9aFtlXSxvPVt0XTtjKHQsbi5jc3NDbGFzc2VzLmRyYWdnYWJsZSkseS5maXhlZCYmKG8ucHVzaChpLmNoaWxkcmVuWzBdKSxvLnB1c2goci5jaGlsZHJlblswXSkpLG8uZm9yRWFjaCgoZnVuY3Rpb24odCl7WShiLnN0YXJ0LHQsSix7aGFuZGxlczpbaSxyXSxoYW5kbGVOdW1iZXJzOltlLTEsZV19KX0pKX19KSksdXQobi5zdGFydCksbi5waXBzJiZXKG4ucGlwcyksbi50b29sdGlwcyYmSCgpLHR0KCJ1cGRhdGUiK3gpLFooInVwZGF0ZSIreCwoZnVuY3Rpb24odCxlLGkscixvKXtBLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBlPWhbdF0scj1udChULHQsMCwhMCwhMCwhMCksYT1udChULHQsMTAwLCEwLCEwLCEwKSxzPW9bdF0sbD1uLmFyaWFGb3JtYXQudG8oaVt0XSk7cj1DLmZyb21TdGVwcGluZyhyKS50b0ZpeGVkKDEpLGE9Qy5mcm9tU3RlcHBpbmcoYSkudG9GaXhlZCgxKSxzPUMuZnJvbVN0ZXBwaW5nKHMpLnRvRml4ZWQoMSksZS5jaGlsZHJlblswXS5zZXRBdHRyaWJ1dGUoImFyaWEtdmFsdWVtaW4iLHIpLGUuY2hpbGRyZW5bMF0uc2V0QXR0cmlidXRlKCJhcmlhLXZhbHVlbWF4IixhKSxlLmNoaWxkcmVuWzBdLnNldEF0dHJpYnV0ZSgiYXJpYS12YWx1ZW5vdyIscyksZS5jaGlsZHJlblswXS5zZXRBdHRyaWJ1dGUoImFyaWEtdmFsdWV0ZXh0IixsKX0pKX0pKSxtPXtkZXN0cm95OmZ1bmN0aW9uKCl7Zm9yKHZhciB0IGluIHR0KHgpLHR0KHcpLG4uY3NzQ2xhc3NlcyluLmNzc0NsYXNzZXMuaGFzT3duUHJvcGVydHkodCkmJnUoUyxuLmNzc0NsYXNzZXNbdF0pO2Zvcig7Uy5maXJzdENoaWxkOylTLnJlbW92ZUNoaWxkKFMuZmlyc3RDaGlsZCk7ZGVsZXRlIFMubm9VaVNsaWRlcn0sc3RlcHM6ZnVuY3Rpb24oKXtyZXR1cm4gQS5tYXAoaHQpfSxvbjpaLG9mZjp0dCxnZXQ6ZHQsc2V0OnV0LHNldEhhbmRsZTpmdW5jdGlvbih0LGUsbixpKXtpZighKDA8PSh0PU51bWJlcih0KSkmJnQ8QS5sZW5ndGgpKXRocm93IG5ldyBFcnJvcigibm9VaVNsaWRlciAoMTQuNi4zKTogaW52YWxpZCBoYW5kbGUgbnVtYmVyLCBnb3Q6ICIrdCk7c3QodCxjdChlLHQpLCEwLCEwLGkpLGV0KCJ1cGRhdGUiLHQpLG4mJmV0KCJzZXQiLHQpfSxyZXNldDpmdW5jdGlvbih0KXt1dChuLnN0YXJ0LHQpfSxfX21vdmVIYW5kbGVzOmZ1bmN0aW9uKHQsZSxuKXtydCh0LGUsVCxuKX0sb3B0aW9uczpyLHVwZGF0ZU9wdGlvbnM6ZnVuY3Rpb24odCxlKXt2YXIgaT1kdCgpLG89WyJtYXJnaW4iLCJsaW1pdCIsInBhZGRpbmciLCJyYW5nZSIsImFuaW1hdGUiLCJzbmFwIiwic3RlcCIsImZvcm1hdCIsInBpcHMiLCJ0b29sdGlwcyJdO28uZm9yRWFjaCgoZnVuY3Rpb24oZSl7dm9pZCAwIT09dFtlXSYmKHJbZV09dFtlXSl9KSk7dmFyIGE9VShyKTtvLmZvckVhY2goKGZ1bmN0aW9uKGUpe3ZvaWQgMCE9PXRbZV0mJihuW2VdPWFbZV0pfSkpLEM9YS5zcGVjdHJ1bSxuLm1hcmdpbj1hLm1hcmdpbixuLmxpbWl0PWEubGltaXQsbi5wYWRkaW5nPWEucGFkZGluZyxuLnBpcHM/VyhuLnBpcHMpOnEoKSxuLnRvb2x0aXBzP0goKTp6KCksVD1bXSx1dCh0LnN0YXJ0fHxpLGUpfSx0YXJnZXQ6UyxyZW1vdmVQaXBzOnEscmVtb3ZlVG9vbHRpcHM6eixnZXRUb29sdGlwczpmdW5jdGlvbigpe3JldHVybiBnfSxnZXRPcmlnaW5zOmZ1bmN0aW9uKCl7cmV0dXJuIGh9LHBpcHM6V319KHQsVShuKSxuKTtyZXR1cm4gdC5ub1VpU2xpZGVyPXJ9fX0pKSxmdW5jdGlvbih0KXsiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbImpxdWVyeSJdLChmdW5jdGlvbihlKXtyZXR1cm4gdChlLHdpbmRvdyxkb2N1bWVudCl9KSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWZ1bmN0aW9uKGUsbil7cmV0dXJuIGV8fChlPXdpbmRvdyksbnx8KG49InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/cmVxdWlyZSgianF1ZXJ5Iik6cmVxdWlyZSgianF1ZXJ5IikoZSkpLHQobixlLGUuZG9jdW1lbnQpfTp0KGpRdWVyeSx3aW5kb3csZG9jdW1lbnQpfSgoZnVuY3Rpb24odCxlLG4saSl7ZnVuY3Rpb24gcihlKXt2YXIgbixpLG89e307dC5lYWNoKGUsKGZ1bmN0aW9uKHQpeyhuPXQubWF0Y2goL14oW15BLVpdKz8pKFtBLVpdKS8pKSYmLTEhPT0iYSBhYSBhaSBhbyBhcyBiIGZuIGkgbSBvIHMgIi5pbmRleE9mKG5bMV0rIiAiKSYmKGk9dC5yZXBsYWNlKG5bMF0sblsyXS50b0xvd2VyQ2FzZSgpKSxvW2ldPXQsIm8iPT09blsxXSYmcihlW3RdKSl9KSksZS5faHVuZ2FyaWFuTWFwPW99ZnVuY3Rpb24gbyhlLG4sYSl7dmFyIHM7ZS5faHVuZ2FyaWFuTWFwfHxyKGUpLHQuZWFjaChuLChmdW5jdGlvbihyKXsocz1lLl9odW5nYXJpYW5NYXBbcl0pPT09aXx8IWEmJm5bc10hPT1pfHwoIm8iPT09cy5jaGFyQXQoMCk/KG5bc118fChuW3NdPXt9KSx0LmV4dGVuZCghMCxuW3NdLG5bcl0pLG8oZVtzXSxuW3NdLGEpKTpuW3NdPW5bcl0pfSkpfWZ1bmN0aW9uIGEodCl7dmFyIGU9VnQuZGVmYXVsdHMub0xhbmd1YWdlLG49ZS5zRGVjaW1hbDtpZihuJiZ6dChuKSx0KXt2YXIgaT10LnNaZXJvUmVjb3JkczshdC5zRW1wdHlUYWJsZSYmaSYmIk5vIGRhdGEgYXZhaWxhYmxlIGluIHRhYmxlIj09PWUuc0VtcHR5VGFibGUmJk90KHQsdCwic1plcm9SZWNvcmRzIiwic0VtcHR5VGFibGUiKSwhdC5zTG9hZGluZ1JlY29yZHMmJmkmJiJMb2FkaW5nLi4uIj09PWUuc0xvYWRpbmdSZWNvcmRzJiZPdCh0LHQsInNaZXJvUmVjb3JkcyIsInNMb2FkaW5nUmVjb3JkcyIpLHQuc0luZm9UaG91c2FuZHMmJih0LnNUaG91c2FuZHM9dC5zSW5mb1Rob3VzYW5kcyksKHQ9dC5zRGVjaW1hbCkmJm4hPT10JiZ6dCh0KX19ZnVuY3Rpb24gcyh0KXtpZih1ZSh0LCJvcmRlcmluZyIsImJTb3J0IiksdWUodCwib3JkZXJNdWx0aSIsImJTb3J0TXVsdGkiKSx1ZSh0LCJvcmRlckNsYXNzZXMiLCJiU29ydENsYXNzZXMiKSx1ZSh0LCJvcmRlckNlbGxzVG9wIiwiYlNvcnRDZWxsc1RvcCIpLHVlKHQsIm9yZGVyIiwiYWFTb3J0aW5nIiksdWUodCwib3JkZXJGaXhlZCIsImFhU29ydGluZ0ZpeGVkIiksdWUodCwicGFnaW5nIiwiYlBhZ2luYXRlIiksdWUodCwicGFnaW5nVHlwZSIsInNQYWdpbmF0aW9uVHlwZSIpLHVlKHQsInBhZ2VMZW5ndGgiLCJpRGlzcGxheUxlbmd0aCIpLHVlKHQsInNlYXJjaGluZyIsImJGaWx0ZXIiKSwiYm9vbGVhbiI9PXR5cGVvZiB0LnNTY3JvbGxYJiYodC5zU2Nyb2xsWD10LnNTY3JvbGxYPyIxMDAlIjoiIiksImJvb2xlYW4iPT10eXBlb2YgdC5zY3JvbGxYJiYodC5zY3JvbGxYPXQuc2Nyb2xsWD8iMTAwJSI6IiIpLHQ9dC5hb1NlYXJjaENvbHMpZm9yKHZhciBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXRbZV0mJm8oVnQubW9kZWxzLm9TZWFyY2gsdFtlXSl9ZnVuY3Rpb24gbCh0KXt1ZSh0LCJvcmRlcmFibGUiLCJiU29ydGFibGUiKSx1ZSh0LCJvcmRlckRhdGEiLCJhRGF0YVNvcnQiKSx1ZSh0LCJvcmRlclNlcXVlbmNlIiwiYXNTb3J0aW5nIiksdWUodCwib3JkZXJEYXRhVHlwZSIsInNvcnREYXRhVHlwZSIpO3ZhciBlPXQuYURhdGFTb3J0OyJudW1iZXIiPT10eXBlb2YgZSYmIUFycmF5LmlzQXJyYXkoZSkmJih0LmFEYXRhU29ydD1bZV0pfWZ1bmN0aW9uIGMobil7aWYoIVZ0Ll9fYnJvd3Nlcil7dmFyIGk9e307VnQuX19icm93c2VyPWk7dmFyIHI9dCgiPGRpdi8+IikuY3NzKHtwb3NpdGlvbjoiZml4ZWQiLHRvcDowLGxlZnQ6LTEqdChlKS5zY3JvbGxMZWZ0KCksaGVpZ2h0OjEsd2lkdGg6MSxvdmVyZmxvdzoiaGlkZGVuIn0pLmFwcGVuZCh0KCI8ZGl2Lz4iKS5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOjEsbGVmdDoxLHdpZHRoOjEwMCxvdmVyZmxvdzoic2Nyb2xsIn0pLmFwcGVuZCh0KCI8ZGl2Lz4iKS5jc3Moe3dpZHRoOiIxMDAlIixoZWlnaHQ6MTB9KSkpLmFwcGVuZFRvKCJib2R5Iiksbz1yLmNoaWxkcmVuKCksYT1vLmNoaWxkcmVuKCk7aS5iYXJXaWR0aD1vWzBdLm9mZnNldFdpZHRoLW9bMF0uY2xpZW50V2lkdGgsaS5iU2Nyb2xsT3ZlcnNpemU9MTAwPT09YVswXS5vZmZzZXRXaWR0aCYmMTAwIT09b1swXS5jbGllbnRXaWR0aCxpLmJTY3JvbGxiYXJMZWZ0PTEhPT1NYXRoLnJvdW5kKGEub2Zmc2V0KCkubGVmdCksaS5iQm91bmRpbmc9ISFyWzBdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoLHIucmVtb3ZlKCl9dC5leHRlbmQobi5vQnJvd3NlcixWdC5fX2Jyb3dzZXIpLG4ub1Njcm9sbC5pQmFyV2lkdGg9VnQuX19icm93c2VyLmJhcldpZHRofWZ1bmN0aW9uIHUodCxlLG4scixvLGEpe3ZhciBzLGw9ITE7Zm9yKG4hPT1pJiYocz1uLGw9ITApO3IhPT1vOyl0Lmhhc093blByb3BlcnR5KHIpJiYocz1sP2Uocyx0W3JdLHIsdCk6dFtyXSxsPSEwLHIrPWEpO3JldHVybiBzfWZ1bmN0aW9uIGQoZSxpKXt2YXIgcj1WdC5kZWZhdWx0cy5jb2x1bW4sbz1lLmFvQ29sdW1ucy5sZW5ndGg7cj10LmV4dGVuZCh7fSxWdC5tb2RlbHMub0NvbHVtbixyLHtuVGg6aXx8bi5jcmVhdGVFbGVtZW50KCJ0aCIpLHNUaXRsZTpyLnNUaXRsZT9yLnNUaXRsZTppP2kuaW5uZXJIVE1MOiIiLGFEYXRhU29ydDpyLmFEYXRhU29ydD9yLmFEYXRhU29ydDpbb10sbURhdGE6ci5tRGF0YT9yLm1EYXRhOm8saWR4Om99KTtlLmFvQ29sdW1ucy5wdXNoKHIpLChyPWUuYW9QcmVTZWFyY2hDb2xzKVtvXT10LmV4dGVuZCh7fSxWdC5tb2RlbHMub1NlYXJjaCxyW29dKSxoKGUsbyx0KGkpLmRhdGEoKSl9ZnVuY3Rpb24gaChlLG4scil7bj1lLmFvQ29sdW1uc1tuXTt2YXIgYT1lLm9DbGFzc2VzLHM9dChuLm5UaCk7aWYoIW4uc1dpZHRoT3JpZyl7bi5zV2lkdGhPcmlnPXMuYXR0cigid2lkdGgiKXx8bnVsbDt2YXIgYz0ocy5hdHRyKCJzdHlsZSIpfHwiIikubWF0Y2goL3dpZHRoOlxzKihcZCtbcHhlbSVdKykvKTtjJiYobi5zV2lkdGhPcmlnPWNbMV0pfXIhPT1pJiZudWxsIT09ciYmKGwociksbyhWdC5kZWZhdWx0cy5jb2x1bW4sciwhMCksci5tRGF0YVByb3AhPT1pJiYhci5tRGF0YSYmKHIubURhdGE9ci5tRGF0YVByb3ApLHIuc1R5cGUmJihuLl9zTWFudWFsVHlwZT1yLnNUeXBlKSxyLmNsYXNzTmFtZSYmIXIuc0NsYXNzJiYoci5zQ2xhc3M9ci5jbGFzc05hbWUpLHIuc0NsYXNzJiZzLmFkZENsYXNzKHIuc0NsYXNzKSx0LmV4dGVuZChuLHIpLE90KG4sciwic1dpZHRoIiwic1dpZHRoT3JpZyIpLHIuaURhdGFTb3J0IT09aSYmKG4uYURhdGFTb3J0PVtyLmlEYXRhU29ydF0pLE90KG4sciwiYURhdGFTb3J0IikpO3ZhciB1PW4ubURhdGEsZD1rKHUpLGg9bi5tUmVuZGVyP2sobi5tUmVuZGVyKTpudWxsO3I9ZnVuY3Rpb24odCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0JiYtMSE9PXQuaW5kZXhPZigiQCIpfTtuLl9iQXR0clNyYz10LmlzUGxhaW5PYmplY3QodSkmJihyKHUuc29ydCl8fHIodS50eXBlKXx8cih1LmZpbHRlcikpLG4uX3NldHRlcj1udWxsLG4uZm5HZXREYXRhPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj1kKHQsZSxpLG4pO3JldHVybiBoJiZlP2gocixlLHQsbik6cn0sbi5mblNldERhdGE9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBUKHUpKHQsZSxuKX0sIm51bWJlciIhPXR5cGVvZiB1JiYoZS5fcm93UmVhZE9iamVjdD0hMCksZS5vRmVhdHVyZXMuYlNvcnR8fChuLmJTb3J0YWJsZT0hMSxzLmFkZENsYXNzKGEuc1NvcnRhYmxlTm9uZSkpLGU9LTEhPT10LmluQXJyYXkoImFzYyIsbi5hc1NvcnRpbmcpLHI9LTEhPT10LmluQXJyYXkoImRlc2MiLG4uYXNTb3J0aW5nKSxuLmJTb3J0YWJsZSYmKGV8fHIpP2UmJiFyPyhuLnNTb3J0aW5nQ2xhc3M9YS5zU29ydGFibGVBc2Msbi5zU29ydGluZ0NsYXNzSlVJPWEuc1NvcnRKVUlBc2NBbGxvd2VkKTohZSYmcj8obi5zU29ydGluZ0NsYXNzPWEuc1NvcnRhYmxlRGVzYyxuLnNTb3J0aW5nQ2xhc3NKVUk9YS5zU29ydEpVSURlc2NBbGxvd2VkKToobi5zU29ydGluZ0NsYXNzPWEuc1NvcnRhYmxlLG4uc1NvcnRpbmdDbGFzc0pVST1hLnNTb3J0SlVJKToobi5zU29ydGluZ0NsYXNzPWEuc1NvcnRhYmxlTm9uZSxuLnNTb3J0aW5nQ2xhc3NKVUk9IiIpfWZ1bmN0aW9uIGYodCl7aWYoITEhPT10Lm9GZWF0dXJlcy5iQXV0b1dpZHRoKXt2YXIgZT10LmFvQ29sdW1ucztndCh0KTtmb3IodmFyIG49MCxpPWUubGVuZ3RoO248aTtuKyspZVtuXS5uVGguc3R5bGUud2lkdGg9ZVtuXS5zV2lkdGh9KCIiIT09KGU9dC5vU2Nyb2xsKS5zWXx8IiIhPT1lLnNYKSYmZnQodCksTnQodCxudWxsLCJjb2x1bW4tc2l6aW5nIixbdF0pfWZ1bmN0aW9uIHAodCxlKXt2YXIgbj12KHQsImJWaXNpYmxlIik7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBuW2VdP25bZV06bnVsbH1mdW5jdGlvbiBnKGUsbil7dmFyIGk9dihlLCJiVmlzaWJsZSIpO3JldHVybi0xIT09KGk9dC5pbkFycmF5KG4saSkpP2k6bnVsbH1mdW5jdGlvbiBtKGUpe3ZhciBuPTA7cmV0dXJuIHQuZWFjaChlLmFvQ29sdW1ucywoZnVuY3Rpb24oZSxpKXtpLmJWaXNpYmxlJiYibm9uZSIhPT10KGkublRoKS5jc3MoImRpc3BsYXkiKSYmbisrfSkpLG59ZnVuY3Rpb24gdihlLG4pe3ZhciBpPVtdO3JldHVybiB0Lm1hcChlLmFvQ29sdW1ucywoZnVuY3Rpb24odCxlKXt0W25dJiZpLnB1c2goZSl9KSksaX1mdW5jdGlvbiB5KHQpe3ZhciBlLG4scixvLGEscyxsLGMsdSxkPXQuYW9Db2x1bW5zLGg9dC5hb0RhdGEsZj1WdC5leHQudHlwZS5kZXRlY3Q7Zm9yKGU9MCxuPWQubGVuZ3RoO2U8bjtlKyspaWYodT1bXSwhKGw9ZFtlXSkuc1R5cGUmJmwuX3NNYW51YWxUeXBlKWwuc1R5cGU9bC5fc01hbnVhbFR5cGU7ZWxzZSBpZighbC5zVHlwZSl7Zm9yKHI9MCxvPWYubGVuZ3RoO3I8bztyKyspe2ZvcihhPTAscz1oLmxlbmd0aDthPHMmJih1W2FdPT09aSYmKHVbYV09Xyh0LGEsZSwidHlwZSIpKSwoYz1mW3JdKHVbYV0sdCkpfHxyPT09Zi5sZW5ndGgtMSkmJiJodG1sIiE9PWM7YSsrKTtpZihjKXtsLnNUeXBlPWM7YnJlYWt9fWwuc1R5cGV8fChsLnNUeXBlPSJzdHJpbmciKX19ZnVuY3Rpb24gYihlLG4scixvKXt2YXIgYSxzLGwsYyx1LGgsZj1lLmFvQ29sdW1ucztpZihuKWZvcihhPW4ubGVuZ3RoLTE7MDw9YTthLS0pe3ZhciBwPShoPW5bYV0pLnRhcmdldHMhPT1pP2gudGFyZ2V0czpoLmFUYXJnZXRzO2ZvcihBcnJheS5pc0FycmF5KHApfHwocD1bcF0pLHM9MCxsPXAubGVuZ3RoO3M8bDtzKyspaWYoIm51bWJlciI9PXR5cGVvZiBwW3NdJiYwPD1wW3NdKXtmb3IoO2YubGVuZ3RoPD1wW3NdOylkKGUpO28ocFtzXSxoKX1lbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgcFtzXSYmMD5wW3NdKW8oZi5sZW5ndGgrcFtzXSxoKTtlbHNlIGlmKCJzdHJpbmciPT10eXBlb2YgcFtzXSlmb3IoYz0wLHU9Zi5sZW5ndGg7Yzx1O2MrKykoIl9hbGwiPT1wW3NdfHx0KGZbY10ublRoKS5oYXNDbGFzcyhwW3NdKSkmJm8oYyxoKX1pZihyKWZvcihhPTAsZT1yLmxlbmd0aDthPGU7YSsrKW8oYSxyW2FdKX1mdW5jdGlvbiB3KGUsbixyLG8pe3ZhciBhPWUuYW9EYXRhLmxlbmd0aCxzPXQuZXh0ZW5kKCEwLHt9LFZ0Lm1vZGVscy5vUm93LHtzcmM6cj8iZG9tIjoiZGF0YSIsaWR4OmF9KTtzLl9hRGF0YT1uLGUuYW9EYXRhLnB1c2gocyk7Zm9yKHZhciBsPWUuYW9Db2x1bW5zLGM9MCx1PWwubGVuZ3RoO2M8dTtjKyspbFtjXS5zVHlwZT1udWxsO3JldHVybiBlLmFpRGlzcGxheU1hc3Rlci5wdXNoKGEpLChuPWUucm93SWRGbihuKSkhPT1pJiYoZS5hSWRzW25dPXMpLChyfHwhZS5vRmVhdHVyZXMuYkRlZmVyUmVuZGVyKSYmSShlLGEscixvKSxhfWZ1bmN0aW9uIHgoZSxuKXt2YXIgaTtyZXR1cm4gbiBpbnN0YW5jZW9mIHR8fChuPXQobikpLG4ubWFwKChmdW5jdGlvbih0LG4pe3JldHVybiBpPU8oZSxuKSx3KGUsaS5kYXRhLG4saS5jZWxscyl9KSl9ZnVuY3Rpb24gXyh0LGUsbixyKXt2YXIgbz10LmlEcmF3LGE9dC5hb0NvbHVtbnNbbl0scz10LmFvRGF0YVtlXS5fYURhdGEsbD1hLnNEZWZhdWx0Q29udGVudCxjPWEuZm5HZXREYXRhKHMscix7c2V0dGluZ3M6dCxyb3c6ZSxjb2w6bn0pO2lmKGM9PT1pKXJldHVybiB0LmlEcmF3RXJyb3IhPW8mJm51bGw9PT1sJiYoTXQodCwwLCJSZXF1ZXN0ZWQgdW5rbm93biBwYXJhbWV0ZXIgIisoImZ1bmN0aW9uIj09dHlwZW9mIGEubURhdGE/IntmdW5jdGlvbn0iOiInIithLm1EYXRhKyInIikrIiBmb3Igcm93ICIrZSsiLCBjb2x1bW4gIituLDQpLHQuaURyYXdFcnJvcj1vKSxsO2lmKGMhPT1zJiZudWxsIT09Y3x8bnVsbD09PWx8fHI9PT1pKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgYylyZXR1cm4gYy5jYWxsKHMpfWVsc2UgYz1sO3JldHVybiBudWxsPT09YyYmImRpc3BsYXkiPT1yPyIiOmN9ZnVuY3Rpb24gUyh0LGUsbixpKXt0LmFvQ29sdW1uc1tuXS5mblNldERhdGEodC5hb0RhdGFbZV0uX2FEYXRhLGkse3NldHRpbmdzOnQscm93OmUsY29sOm59KX1mdW5jdGlvbiBDKGUpe3JldHVybiB0Lm1hcChlLm1hdGNoKC8oXFwufFteXC5dKSsvZyl8fFsiIl0sKGZ1bmN0aW9uKHQpe3JldHVybiB0LnJlcGxhY2UoL1xcXC4vZywiLiIpfSkpfWZ1bmN0aW9uIGsoZSl7aWYodC5pc1BsYWluT2JqZWN0KGUpKXt2YXIgbj17fTtyZXR1cm4gdC5lYWNoKGUsKGZ1bmN0aW9uKHQsZSl7ZSYmKG5bdF09ayhlKSl9KSksZnVuY3Rpb24odCxlLHIsbyl7dmFyIGE9bltlXXx8bi5fO3JldHVybiBhIT09aT9hKHQsZSxyLG8pOnR9fWlmKG51bGw9PT1lKXJldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gdH07aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUpcmV0dXJuIGZ1bmN0aW9uKHQsbixpLHIpe3JldHVybiBlKHQsbixpLHIpfTtpZigic3RyaW5nIj09dHlwZW9mIGUmJigtMSE9PWUuaW5kZXhPZigiLiIpfHwtMSE9PWUuaW5kZXhPZigiWyIpfHwtMSE9PWUuaW5kZXhPZigiKCIpKSl7dmFyIHI9ZnVuY3Rpb24odCxlLG4pe3ZhciBvLGE7aWYoIiIhPT1uKWZvcih2YXIgcz0wLGw9KGE9QyhuKSkubGVuZ3RoO3M8bDtzKyspe2lmKG49YVtzXS5tYXRjaChkZSksbz1hW3NdLm1hdGNoKGhlKSxuKXtpZihhW3NdPWFbc10ucmVwbGFjZShkZSwiIiksIiIhPT1hW3NdJiYodD10W2Fbc11dKSxvPVtdLGEuc3BsaWNlKDAscysxKSxhPWEuam9pbigiLiIpLEFycmF5LmlzQXJyYXkodCkpZm9yKHM9MCxsPXQubGVuZ3RoO3M8bDtzKyspby5wdXNoKHIodFtzXSxlLGEpKTt0PSIiPT09KHQ9blswXS5zdWJzdHJpbmcoMSxuWzBdLmxlbmd0aC0xKSk/bzpvLmpvaW4odCk7YnJlYWt9aWYobylhW3NdPWFbc10ucmVwbGFjZShoZSwiIiksdD10W2Fbc11dKCk7ZWxzZXtpZihudWxsPT09dHx8dFthW3NdXT09PWkpcmV0dXJuIGk7dD10W2Fbc11dfX1yZXR1cm4gdH07cmV0dXJuIGZ1bmN0aW9uKHQsbil7cmV0dXJuIHIodCxuLGUpfX1yZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHRbZV19fWZ1bmN0aW9uIFQoZSl7aWYodC5pc1BsYWluT2JqZWN0KGUpKXJldHVybiBUKGUuXyk7aWYobnVsbD09PWUpcmV0dXJuIGZ1bmN0aW9uKCl7fTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZSlyZXR1cm4gZnVuY3Rpb24odCxuLGkpe2UodCwic2V0IixuLGkpfTtpZigic3RyaW5nIj09dHlwZW9mIGUmJigtMSE9PWUuaW5kZXhPZigiLiIpfHwtMSE9PWUuaW5kZXhPZigiWyIpfHwtMSE9PWUuaW5kZXhPZigiKCIpKSl7dmFyIG49ZnVuY3Rpb24odCxlLHIpe3ZhciBvO289KHI9QyhyKSlbci5sZW5ndGgtMV07Zm9yKHZhciBhLHMsbD0wLGM9ci5sZW5ndGgtMTtsPGM7bCsrKXtpZigiX19wcm90b19fIj09PXJbbF18fCJjb25zdHJ1Y3RvciI9PT1yW2xdKXRocm93IEVycm9yKCJDYW5ub3Qgc2V0IHByb3RvdHlwZSB2YWx1ZXMiKTtpZihhPXJbbF0ubWF0Y2goZGUpLHM9cltsXS5tYXRjaChoZSksYSl7aWYocltsXT1yW2xdLnJlcGxhY2UoZGUsIiIpLHRbcltsXV09W10sKG89ci5zbGljZSgpKS5zcGxpY2UoMCxsKzEpLGE9by5qb2luKCIuIiksQXJyYXkuaXNBcnJheShlKSlmb3Iocz0wLGM9ZS5sZW5ndGg7czxjO3MrKyluKG89e30sZVtzXSxhKSx0W3JbbF1dLnB1c2gobyk7ZWxzZSB0W3JbbF1dPWU7cmV0dXJufXMmJihyW2xdPXJbbF0ucmVwbGFjZShoZSwiIiksdD10W3JbbF1dKGUpKSxudWxsIT09dFtyW2xdXSYmdFtyW2xdXSE9PWl8fCh0W3JbbF1dPXt9KSx0PXRbcltsXV19by5tYXRjaChoZSk/dFtvLnJlcGxhY2UoaGUsIiIpXShlKTp0W28ucmVwbGFjZShkZSwiIildPWV9O3JldHVybiBmdW5jdGlvbih0LGkpe3JldHVybiBuKHQsaSxlKX19cmV0dXJuIGZ1bmN0aW9uKHQsbil7dFtlXT1ufX1mdW5jdGlvbiBBKHQpe3JldHVybiByZSh0LmFvRGF0YSwiX2FEYXRhIil9ZnVuY3Rpb24gRCh0KXt0LmFvRGF0YS5sZW5ndGg9MCx0LmFpRGlzcGxheU1hc3Rlci5sZW5ndGg9MCx0LmFpRGlzcGxheS5sZW5ndGg9MCx0LmFJZHM9e319ZnVuY3Rpb24gRSh0LGUsbil7Zm9yKHZhciByPS0xLG89MCxhPXQubGVuZ3RoO288YTtvKyspdFtvXT09ZT9yPW86dFtvXT5lJiZ0W29dLS07LTEhPXImJm49PT1pJiZ0LnNwbGljZShyLDEpfWZ1bmN0aW9uIE0odCxlLG4scil7dmFyIG8sYT10LmFvRGF0YVtlXSxzPWZ1bmN0aW9uKG4saSl7Zm9yKDtuLmNoaWxkTm9kZXMubGVuZ3RoOyluLnJlbW92ZUNoaWxkKG4uZmlyc3RDaGlsZCk7bi5pbm5lckhUTUw9Xyh0LGUsaSwiZGlzcGxheSIpfTtpZigiZG9tIiE9PW4mJihuJiYiYXV0byIhPT1ufHwiZG9tIiE9PWEuc3JjKSl7dmFyIGw9YS5hbkNlbGxzO2lmKGwpaWYociE9PWkpcyhsW3JdLHIpO2Vsc2UgZm9yKG49MCxvPWwubGVuZ3RoO248bztuKyspcyhsW25dLG4pfWVsc2UgYS5fYURhdGE9Tyh0LGEscixyPT09aT9pOmEuX2FEYXRhKS5kYXRhO2lmKGEuX2FTb3J0RGF0YT1udWxsLGEuX2FGaWx0ZXJEYXRhPW51bGwscz10LmFvQ29sdW1ucyxyIT09aSlzW3JdLnNUeXBlPW51bGw7ZWxzZXtmb3Iobj0wLG89cy5sZW5ndGg7bjxvO24rKylzW25dLnNUeXBlPW51bGw7UCh0LGEpfX1mdW5jdGlvbiBPKHQsZSxuLHIpe3ZhciBvLGEscyxsPVtdLGM9ZS5maXJzdENoaWxkLHU9MCxkPXQuYW9Db2x1bW5zLGg9dC5fcm93UmVhZE9iamVjdCxmPShyPXIhPT1pP3I6aD97fTpbXSxmdW5jdGlvbih0LGUpe2lmKCJzdHJpbmciPT10eXBlb2YgdCl7dmFyIG49dC5pbmRleE9mKCJAIik7LTEhPT1uJiYobj10LnN1YnN0cmluZyhuKzEpLFQodCkocixlLmdldEF0dHJpYnV0ZShuKSkpfX0pLHA9ZnVuY3Rpb24odCl7biE9PWkmJm4hPT11fHwoYT1kW3VdLHM9dC5pbm5lckhUTUwudHJpbSgpLGEmJmEuX2JBdHRyU3JjPyhUKGEubURhdGEuXykocixzKSxmKGEubURhdGEuc29ydCx0KSxmKGEubURhdGEudHlwZSx0KSxmKGEubURhdGEuZmlsdGVyLHQpKTpoPyhhLl9zZXR0ZXJ8fChhLl9zZXR0ZXI9VChhLm1EYXRhKSksYS5fc2V0dGVyKHIscykpOnJbdV09cyksdSsrfTtpZihjKWZvcig7YzspIlREIiE9KG89Yy5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpKSYmIlRIIiE9b3x8KHAoYyksbC5wdXNoKGMpKSxjPWMubmV4dFNpYmxpbmc7ZWxzZSBmb3IoYz0wLG89KGw9ZS5hbkNlbGxzKS5sZW5ndGg7YzxvO2MrKylwKGxbY10pO3JldHVybihlPWUuZmlyc3RDaGlsZD9lOmUublRyKSYmKGU9ZS5nZXRBdHRyaWJ1dGUoImlkIikpJiZUKHQucm93SWQpKHIsZSkse2RhdGE6cixjZWxsczpsfX1mdW5jdGlvbiBJKGUsaSxyLG8pe3ZhciBhLHMsbCxjLHUsZD1lLmFvRGF0YVtpXSxoPWQuX2FEYXRhLGY9W107aWYobnVsbD09PWQublRyKXtmb3IoYT1yfHxuLmNyZWF0ZUVsZW1lbnQoInRyIiksZC5uVHI9YSxkLmFuQ2VsbHM9ZixhLl9EVF9Sb3dJbmRleD1pLFAoZSxkKSxsPTAsYz1lLmFvQ29sdW1ucy5sZW5ndGg7bDxjO2wrKylzPWUuYW9Db2x1bW5zW2xdLChkPSh1PSFyKT9uLmNyZWF0ZUVsZW1lbnQocy5zQ2VsbFR5cGUpOm9bbF0pLl9EVF9DZWxsSW5kZXg9e3JvdzppLGNvbHVtbjpsfSxmLnB1c2goZCksIXUmJighcy5tUmVuZGVyJiZzLm1EYXRhPT09bHx8dC5pc1BsYWluT2JqZWN0KHMubURhdGEpJiZzLm1EYXRhLl89PT1sKyIuZGlzcGxheSIpfHwoZC5pbm5lckhUTUw9XyhlLGksbCwiZGlzcGxheSIpKSxzLnNDbGFzcyYmKGQuY2xhc3NOYW1lKz0iICIrcy5zQ2xhc3MpLHMuYlZpc2libGUmJiFyP2EuYXBwZW5kQ2hpbGQoZCk6IXMuYlZpc2libGUmJnImJmQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChkKSxzLmZuQ3JlYXRlZENlbGwmJnMuZm5DcmVhdGVkQ2VsbC5jYWxsKGUub0luc3RhbmNlLGQsXyhlLGksbCksaCxpLGwpO050KGUsImFvUm93Q3JlYXRlZENhbGxiYWNrIixudWxsLFthLGgsaSxmXSl9fWZ1bmN0aW9uIFAoZSxuKXt2YXIgaT1uLm5UcixyPW4uX2FEYXRhO2lmKGkpe3ZhciBvPWUucm93SWRGbihyKTtvJiYoaS5pZD1vKSxyLkRUX1Jvd0NsYXNzJiYobz1yLkRUX1Jvd0NsYXNzLnNwbGl0KCIgIiksbi5fX3Jvd2M9bi5fX3Jvd2M/bGUobi5fX3Jvd2MuY29uY2F0KG8pKTpvLHQoaSkucmVtb3ZlQ2xhc3Mobi5fX3Jvd2Muam9pbigiICIpKS5hZGRDbGFzcyhyLkRUX1Jvd0NsYXNzKSksci5EVF9Sb3dBdHRyJiZ0KGkpLmF0dHIoci5EVF9Sb3dBdHRyKSxyLkRUX1Jvd0RhdGEmJnQoaSkuZGF0YShyLkRUX1Jvd0RhdGEpfX1mdW5jdGlvbiBMKGUpe3ZhciBuLGkscixvLGEscz1lLm5USGVhZCxsPWUublRGb290LGM9MD09PXQoInRoLCB0ZCIscykubGVuZ3RoLHU9ZS5vQ2xhc3NlcyxkPWUuYW9Db2x1bW5zO2ZvcihjJiYobz10KCI8dHIvPiIpLmFwcGVuZFRvKHMpKSxuPTAsaT1kLmxlbmd0aDtuPGk7bisrKWE9ZFtuXSxyPXQoYS5uVGgpLmFkZENsYXNzKGEuc0NsYXNzKSxjJiZyLmFwcGVuZFRvKG8pLGUub0ZlYXR1cmVzLmJTb3J0JiYoci5hZGRDbGFzcyhhLnNTb3J0aW5nQ2xhc3MpLCExIT09YS5iU29ydGFibGUmJihyLmF0dHIoInRhYmluZGV4IixlLmlUYWJJbmRleCkuYXR0cigiYXJpYS1jb250cm9scyIsZS5zVGFibGVJZCksQ3QoZSxhLm5UaCxuKSkpLGEuc1RpdGxlIT1yWzBdLmlubmVySFRNTCYmci5odG1sKGEuc1RpdGxlKSxSdChlLCJoZWFkZXIiKShlLHIsYSx1KTtpZihjJiYkKGUuYW9IZWFkZXIscyksdChzKS5jaGlsZHJlbigidHIiKS5hdHRyKCJyb2xlIiwicm93IiksdChzKS5jaGlsZHJlbigidHIiKS5jaGlsZHJlbigidGgsIHRkIikuYWRkQ2xhc3ModS5zSGVhZGVyVEgpLHQobCkuY2hpbGRyZW4oInRyIikuY2hpbGRyZW4oInRoLCB0ZCIpLmFkZENsYXNzKHUuc0Zvb3RlclRIKSxudWxsIT09bClmb3Iobj0wLGk9KGU9ZS5hb0Zvb3RlclswXSkubGVuZ3RoO248aTtuKyspKGE9ZFtuXSkublRmPWVbbl0uY2VsbCxhLnNDbGFzcyYmdChhLm5UZikuYWRkQ2xhc3MoYS5zQ2xhc3MpfWZ1bmN0aW9uIE4oZSxuLHIpe3ZhciBvLGEscyxsLGM9W10sdT1bXSxkPWUuYW9Db2x1bW5zLmxlbmd0aDtpZihuKXtmb3Iocj09PWkmJihyPSExKSxvPTAsYT1uLmxlbmd0aDtvPGE7bysrKXtmb3IoY1tvXT1uW29dLnNsaWNlKCksY1tvXS5uVHI9bltvXS5uVHIscz1kLTE7MDw9cztzLS0pIWUuYW9Db2x1bW5zW3NdLmJWaXNpYmxlJiYhciYmY1tvXS5zcGxpY2UocywxKTt1LnB1c2goW10pfWZvcihvPTAsYT1jLmxlbmd0aDtvPGE7bysrKXtpZihlPWNbb10ublRyKWZvcig7cz1lLmZpcnN0Q2hpbGQ7KWUucmVtb3ZlQ2hpbGQocyk7Zm9yKHM9MCxuPWNbb10ubGVuZ3RoO3M8bjtzKyspaWYobD1kPTEsdVtvXVtzXT09PWkpe2ZvcihlLmFwcGVuZENoaWxkKGNbb11bc10uY2VsbCksdVtvXVtzXT0xO2NbbytkXSE9PWkmJmNbb11bc10uY2VsbD09Y1tvK2RdW3NdLmNlbGw7KXVbbytkXVtzXT0xLGQrKztmb3IoO2Nbb11bcytsXSE9PWkmJmNbb11bc10uY2VsbD09Y1tvXVtzK2xdLmNlbGw7KXtmb3Iocj0wO3I8ZDtyKyspdVtvK3JdW3MrbF09MTtsKyt9dChjW29dW3NdLmNlbGwpLmF0dHIoInJvd3NwYW4iLGQpLmF0dHIoImNvbHNwYW4iLGwpfX19fWZ1bmN0aW9uIEYoZSl7dmFyIG49TnQoZSwiYW9QcmVEcmF3Q2FsbGJhY2siLCJwcmVEcmF3IixbZV0pO2lmKC0xIT09dC5pbkFycmF5KCExLG4pKWR0KGUsITEpO2Vsc2V7bj1bXTt2YXIgcj0wLG89ZS5hc1N0cmlwZUNsYXNzZXMsYT1vLmxlbmd0aCxzPWUub0xhbmd1YWdlLGw9ZS5pSW5pdERpc3BsYXlTdGFydCxjPSJzc3AiPT1qdChlKSx1PWUuYWlEaXNwbGF5O2UuYkRyYXdpbmc9ITAsbCE9PWkmJi0xIT09bCYmKGUuX2lEaXNwbGF5U3RhcnQ9Yz9sOmw+PWUuZm5SZWNvcmRzRGlzcGxheSgpPzA6bCxlLmlJbml0RGlzcGxheVN0YXJ0PS0xKTtsPWUuX2lEaXNwbGF5U3RhcnQ7dmFyIGQ9ZS5mbkRpc3BsYXlFbmQoKTtpZihlLmJEZWZlckxvYWRpbmcpZS5iRGVmZXJMb2FkaW5nPSExLGUuaURyYXcrKyxkdChlLCExKTtlbHNlIGlmKGMpe2lmKCFlLmJEZXN0cm95aW5nJiYhQihlKSlyZXR1cm59ZWxzZSBlLmlEcmF3Kys7aWYoMCE9PXUubGVuZ3RoKWZvcihzPWM/ZS5hb0RhdGEubGVuZ3RoOmQsYz1jPzA6bDtjPHM7YysrKXt2YXIgaD11W2NdLGY9ZS5hb0RhdGFbaF07bnVsbD09PWYublRyJiZJKGUsaCk7dmFyIHA9Zi5uVHI7aWYoMCE9PWEpe3ZhciBnPW9bciVhXTtmLl9zUm93U3RyaXBlIT1nJiYodChwKS5yZW1vdmVDbGFzcyhmLl9zUm93U3RyaXBlKS5hZGRDbGFzcyhnKSxmLl9zUm93U3RyaXBlPWcpfU50KGUsImFvUm93Q2FsbGJhY2siLG51bGwsW3AsZi5fYURhdGEscixjLGhdKSxuLnB1c2gocCkscisrfWVsc2Ugcj1zLnNaZXJvUmVjb3JkcywxPT1lLmlEcmF3JiYiYWpheCI9PWp0KGUpP3I9cy5zTG9hZGluZ1JlY29yZHM6cy5zRW1wdHlUYWJsZSYmMD09PWUuZm5SZWNvcmRzVG90YWwoKSYmKHI9cy5zRW1wdHlUYWJsZSksblswXT10KCI8dHIvPiIse2NsYXNzOmE/b1swXToiIn0pLmFwcGVuZCh0KCI8dGQgLz4iLHt2YWxpZ246InRvcCIsY29sU3BhbjptKGUpLGNsYXNzOmUub0NsYXNzZXMuc1Jvd0VtcHR5fSkuaHRtbChyKSlbMF07TnQoZSwiYW9IZWFkZXJDYWxsYmFjayIsImhlYWRlciIsW3QoZS5uVEhlYWQpLmNoaWxkcmVuKCJ0ciIpWzBdLEEoZSksbCxkLHVdKSxOdChlLCJhb0Zvb3RlckNhbGxiYWNrIiwiZm9vdGVyIixbdChlLm5URm9vdCkuY2hpbGRyZW4oInRyIilbMF0sQShlKSxsLGQsdV0pLChvPXQoZS5uVEJvZHkpKS5jaGlsZHJlbigpLmRldGFjaCgpLG8uYXBwZW5kKHQobikpLE50KGUsImFvRHJhd0NhbGxiYWNrIiwiZHJhdyIsW2VdKSxlLmJTb3J0ZWQ9ITEsZS5iRmlsdGVyZWQ9ITEsZS5iRHJhd2luZz0hMX19ZnVuY3Rpb24gUih0LGUpe3ZhciBuPXQub0ZlYXR1cmVzLGk9bi5iRmlsdGVyO24uYlNvcnQmJnh0KHQpLGk/WSh0LHQub1ByZXZpb3VzU2VhcmNoKTp0LmFpRGlzcGxheT10LmFpRGlzcGxheU1hc3Rlci5zbGljZSgpLCEwIT09ZSYmKHQuX2lEaXNwbGF5U3RhcnQ9MCksdC5fZHJhd0hvbGQ9ZSxGKHQpLHQuX2RyYXdIb2xkPSExfWZ1bmN0aW9uIGooZSl7dmFyIG49ZS5vQ2xhc3NlcyxpPXQoZS5uVGFibGUpLHI9KGk9dCgiPGRpdi8+IikuaW5zZXJ0QmVmb3JlKGkpLGUub0ZlYXR1cmVzKSxvPXQoIjxkaXYvPiIse2lkOmUuc1RhYmxlSWQrIl93cmFwcGVyIixjbGFzczpuLnNXcmFwcGVyKyhlLm5URm9vdD8iIjoiICIrbi5zTm9Gb290ZXIpfSk7ZS5uSG9sZGluZz1pWzBdLGUublRhYmxlV3JhcHBlcj1vWzBdLGUublRhYmxlUmVpbnNlcnRCZWZvcmU9ZS5uVGFibGUubmV4dFNpYmxpbmc7Zm9yKHZhciBhLHMsbCxjLHUsZCxoPWUuc0RvbS5zcGxpdCgiIiksZj0wO2Y8aC5sZW5ndGg7ZisrKXtpZihhPW51bGwsIjwiPT0ocz1oW2ZdKSl7aWYobD10KCI8ZGl2Lz4iKVswXSwiJyI9PShjPWhbZisxXSl8fCciJz09Yyl7Zm9yKHU9IiIsZD0yO2hbZitkXSE9YzspdSs9aFtmK2RdLGQrKzsiSCI9PXU/dT1uLnNKVUlIZWFkZXI6IkYiPT11JiYodT1uLnNKVUlGb290ZXIpLC0xIT11LmluZGV4T2YoIi4iKT8oYz11LnNwbGl0KCIuIiksbC5pZD1jWzBdLnN1YnN0cigxLGNbMF0ubGVuZ3RoLTEpLGwuY2xhc3NOYW1lPWNbMV0pOiIjIj09dS5jaGFyQXQoMCk/bC5pZD11LnN1YnN0cigxLHUubGVuZ3RoLTEpOmwuY2xhc3NOYW1lPXUsZis9ZH1vLmFwcGVuZChsKSxvPXQobCl9ZWxzZSBpZigiPiI9PXMpbz1vLnBhcmVudCgpO2Vsc2UgaWYoImwiPT1zJiZyLmJQYWdpbmF0ZSYmci5iTGVuZ3RoQ2hhbmdlKWE9c3QoZSk7ZWxzZSBpZigiZiI9PXMmJnIuYkZpbHRlcilhPVYoZSk7ZWxzZSBpZigiciI9PXMmJnIuYlByb2Nlc3NpbmcpYT11dChlKTtlbHNlIGlmKCJ0Ij09cylhPWh0KGUpO2Vsc2UgaWYoImkiPT1zJiZyLmJJbmZvKWE9ZXQoZSk7ZWxzZSBpZigicCI9PXMmJnIuYlBhZ2luYXRlKWE9bHQoZSk7ZWxzZSBpZigwIT09VnQuZXh0LmZlYXR1cmUubGVuZ3RoKWZvcihkPTAsYz0obD1WdC5leHQuZmVhdHVyZSkubGVuZ3RoO2Q8YztkKyspaWYocz09bFtkXS5jRmVhdHVyZSl7YT1sW2RdLmZuSW5pdChlKTticmVha31hJiYoKGw9ZS5hYW5GZWF0dXJlcylbc118fChsW3NdPVtdKSxsW3NdLnB1c2goYSksby5hcHBlbmQoYSkpfWkucmVwbGFjZVdpdGgobyksZS5uSG9sZGluZz1udWxsfWZ1bmN0aW9uICQoZSxuKXt2YXIgaSxyLG8sYSxzLGwsYyx1LGQsaCxmPXQobikuY2hpbGRyZW4oInRyIik7Zm9yKGUuc3BsaWNlKDAsZS5sZW5ndGgpLG89MCxsPWYubGVuZ3RoO288bDtvKyspZS5wdXNoKFtdKTtmb3Iobz0wLGw9Zi5sZW5ndGg7bzxsO28rKylmb3Iocj0oaT1mW29dKS5maXJzdENoaWxkO3I7KXtpZigiVEQiPT1yLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCl8fCJUSCI9PXIubm9kZU5hbWUudG9VcHBlckNhc2UoKSl7Zm9yKHU9KHU9MSpyLmdldEF0dHJpYnV0ZSgiY29sc3BhbiIpKSYmMCE9PXUmJjEhPT11P3U6MSxkPShkPTEqci5nZXRBdHRyaWJ1dGUoInJvd3NwYW4iKSkmJjAhPT1kJiYxIT09ZD9kOjEsYT0wLHM9ZVtvXTtzW2FdOylhKys7Zm9yKGM9YSxoPTE9PT11LHM9MDtzPHU7cysrKWZvcihhPTA7YTxkO2ErKyllW28rYV1bYytzXT17Y2VsbDpyLHVuaXF1ZTpofSxlW28rYV0ublRyPWl9cj1yLm5leHRTaWJsaW5nfX1mdW5jdGlvbiB6KHQsZSxuKXt2YXIgaT1bXTtufHwobj10LmFvSGVhZGVyLGUmJiQobj1bXSxlKSk7ZT0wO2Zvcih2YXIgcj1uLmxlbmd0aDtlPHI7ZSsrKWZvcih2YXIgbz0wLGE9bltlXS5sZW5ndGg7bzxhO28rKykhbltlXVtvXS51bmlxdWV8fGlbb10mJnQuYlNvcnRDZWxsc1RvcHx8KGlbb109bltlXVtvXS5jZWxsKTtyZXR1cm4gaX1mdW5jdGlvbiBIKGUsbixpKXtpZihOdChlLCJhb1NlcnZlclBhcmFtcyIsInNlcnZlclBhcmFtcyIsW25dKSxuJiZBcnJheS5pc0FycmF5KG4pKXt2YXIgcj17fSxvPS8oLio/KVxbXF0kLzt0LmVhY2gobiwoZnVuY3Rpb24odCxlKXt2YXIgbj1lLm5hbWUubWF0Y2gobyk7bj8obj1uWzBdLHJbbl18fChyW25dPVtdKSxyW25dLnB1c2goZS52YWx1ZSkpOnJbZS5uYW1lXT1lLnZhbHVlfSkpLG49cn12YXIgYSxzPWUuYWpheCxsPWUub0luc3RhbmNlLGM9ZnVuY3Rpb24odCl7TnQoZSxudWxsLCJ4aHIiLFtlLHQsZS5qcVhIUl0pLGkodCl9O2lmKHQuaXNQbGFpbk9iamVjdChzKSYmcy5kYXRhKXt2YXIgdT0iZnVuY3Rpb24iPT10eXBlb2YoYT1zLmRhdGEpP2EobixlKTphO249ImZ1bmN0aW9uIj09dHlwZW9mIGEmJnU/dTp0LmV4dGVuZCghMCxuLHUpO2RlbGV0ZSBzLmRhdGF9dT17ZGF0YTpuLHN1Y2Nlc3M6ZnVuY3Rpb24odCl7dmFyIG49dC5lcnJvcnx8dC5zRXJyb3I7biYmTXQoZSwwLG4pLGUuanNvbj10LGModCl9LGRhdGFUeXBlOiJqc29uIixjYWNoZTohMSx0eXBlOmUuc1NlcnZlck1ldGhvZCxlcnJvcjpmdW5jdGlvbihuLGkpe3ZhciByPU50KGUsbnVsbCwieGhyIixbZSxudWxsLGUuanFYSFJdKTstMT09PXQuaW5BcnJheSghMCxyKSYmKCJwYXJzZXJlcnJvciI9PWk/TXQoZSwwLCJJbnZhbGlkIEpTT04gcmVzcG9uc2UiLDEpOjQ9PT1uLnJlYWR5U3RhdGUmJk10KGUsMCwiQWpheCBlcnJvciIsNykpLGR0KGUsITEpfX0sZS5vQWpheERhdGE9bixOdChlLG51bGwsInByZVhociIsW2Usbl0pLGUuZm5TZXJ2ZXJEYXRhP2UuZm5TZXJ2ZXJEYXRhLmNhbGwobCxlLnNBamF4U291cmNlLHQubWFwKG4sKGZ1bmN0aW9uKHQsZSl7cmV0dXJue25hbWU6ZSx2YWx1ZTp0fX0pKSxjLGUpOmUuc0FqYXhTb3VyY2V8fCJzdHJpbmciPT10eXBlb2Ygcz9lLmpxWEhSPXQuYWpheCh0LmV4dGVuZCh1LHt1cmw6c3x8ZS5zQWpheFNvdXJjZX0pKToiZnVuY3Rpb24iPT10eXBlb2Ygcz9lLmpxWEhSPXMuY2FsbChsLG4sYyxlKTooZS5qcVhIUj10LmFqYXgodC5leHRlbmQodSxzKSkscy5kYXRhPWEpfWZ1bmN0aW9uIEIodCl7cmV0dXJuIXQuYkFqYXhEYXRhR2V0fHwodC5pRHJhdysrLGR0KHQsITApLEgodCxxKHQpLChmdW5jdGlvbihlKXtXKHQsZSl9KSksITEpfWZ1bmN0aW9uIHEoZSl7dmFyIG4saSxyLG8sYT1lLmFvQ29sdW1ucyxzPWEubGVuZ3RoLGw9ZS5vRmVhdHVyZXMsYz1lLm9QcmV2aW91c1NlYXJjaCx1PWUuYW9QcmVTZWFyY2hDb2xzLGQ9W10saD13dChlKTtuPWUuX2lEaXNwbGF5U3RhcnQsaT0hMSE9PWwuYlBhZ2luYXRlP2UuX2lEaXNwbGF5TGVuZ3RoOi0xO3ZhciBmPWZ1bmN0aW9uKHQsZSl7ZC5wdXNoKHtuYW1lOnQsdmFsdWU6ZX0pfTtmKCJzRWNobyIsZS5pRHJhdyksZigiaUNvbHVtbnMiLHMpLGYoInNDb2x1bW5zIixyZShhLCJzTmFtZSIpLmpvaW4oIiwiKSksZigiaURpc3BsYXlTdGFydCIsbiksZigiaURpc3BsYXlMZW5ndGgiLGkpO3ZhciBwPXtkcmF3OmUuaURyYXcsY29sdW1uczpbXSxvcmRlcjpbXSxzdGFydDpuLGxlbmd0aDppLHNlYXJjaDp7dmFsdWU6Yy5zU2VhcmNoLHJlZ2V4OmMuYlJlZ2V4fX07Zm9yKG49MDtuPHM7bisrKXI9YVtuXSxvPXVbbl0saT0iZnVuY3Rpb24iPT10eXBlb2Ygci5tRGF0YT8iZnVuY3Rpb24iOnIubURhdGEscC5jb2x1bW5zLnB1c2goe2RhdGE6aSxuYW1lOnIuc05hbWUsc2VhcmNoYWJsZTpyLmJTZWFyY2hhYmxlLG9yZGVyYWJsZTpyLmJTb3J0YWJsZSxzZWFyY2g6e3ZhbHVlOm8uc1NlYXJjaCxyZWdleDpvLmJSZWdleH19KSxmKCJtRGF0YVByb3BfIituLGkpLGwuYkZpbHRlciYmKGYoInNTZWFyY2hfIituLG8uc1NlYXJjaCksZigiYlJlZ2V4XyIrbixvLmJSZWdleCksZigiYlNlYXJjaGFibGVfIituLHIuYlNlYXJjaGFibGUpKSxsLmJTb3J0JiZmKCJiU29ydGFibGVfIituLHIuYlNvcnRhYmxlKTtyZXR1cm4gbC5iRmlsdGVyJiYoZigic1NlYXJjaCIsYy5zU2VhcmNoKSxmKCJiUmVnZXgiLGMuYlJlZ2V4KSksbC5iU29ydCYmKHQuZWFjaChoLChmdW5jdGlvbih0LGUpe3Aub3JkZXIucHVzaCh7Y29sdW1uOmUuY29sLGRpcjplLmRpcn0pLGYoImlTb3J0Q29sXyIrdCxlLmNvbCksZigic1NvcnREaXJfIit0LGUuZGlyKX0pKSxmKCJpU29ydGluZ0NvbHMiLGgubGVuZ3RoKSksbnVsbD09PShhPVZ0LmV4dC5sZWdhY3kuYWpheCk/ZS5zQWpheFNvdXJjZT9kOnA6YT9kOnB9ZnVuY3Rpb24gVyh0LGUpe3ZhciBuPVUodCxlKSxyPWUuc0VjaG8hPT1pP2Uuc0VjaG86ZS5kcmF3LG89ZS5pVG90YWxSZWNvcmRzIT09aT9lLmlUb3RhbFJlY29yZHM6ZS5yZWNvcmRzVG90YWwsYT1lLmlUb3RhbERpc3BsYXlSZWNvcmRzIT09aT9lLmlUb3RhbERpc3BsYXlSZWNvcmRzOmUucmVjb3Jkc0ZpbHRlcmVkO2lmKHIhPT1pKXtpZigxKnI8dC5pRHJhdylyZXR1cm47dC5pRHJhdz0xKnJ9Zm9yKEQodCksdC5faVJlY29yZHNUb3RhbD1wYXJzZUludChvLDEwKSx0Ll9pUmVjb3Jkc0Rpc3BsYXk9cGFyc2VJbnQoYSwxMCkscj0wLG89bi5sZW5ndGg7cjxvO3IrKyl3KHQsbltyXSk7dC5haURpc3BsYXk9dC5haURpc3BsYXlNYXN0ZXIuc2xpY2UoKSx0LmJBamF4RGF0YUdldD0hMSxGKHQpLHQuX2JJbml0Q29tcGxldGV8fG90KHQsZSksdC5iQWpheERhdGFHZXQ9ITAsZHQodCwhMSl9ZnVuY3Rpb24gVShlLG4pe3ZhciByPXQuaXNQbGFpbk9iamVjdChlLmFqYXgpJiZlLmFqYXguZGF0YVNyYyE9PWk/ZS5hamF4LmRhdGFTcmM6ZS5zQWpheERhdGFQcm9wO3JldHVybiJkYXRhIj09PXI/bi5hYURhdGF8fG5bcl06IiIhPT1yP2socikobik6bn1mdW5jdGlvbiBWKGUpe3ZhciBpPWUub0NsYXNzZXMscj1lLnNUYWJsZUlkLG89ZS5vTGFuZ3VhZ2UsYT1lLm9QcmV2aW91c1NlYXJjaCxzPWUuYWFuRmVhdHVyZXMsbD0nPGlucHV0IHR5cGU9InNlYXJjaCIgY2xhc3M9IicraS5zRmlsdGVySW5wdXQrJyIvPicsYz0oYz1vLnNTZWFyY2gpLm1hdGNoKC9fSU5QVVRfLyk/Yy5yZXBsYWNlKCJfSU5QVVRfIixsKTpjK2wsdT0oaT10KCI8ZGl2Lz4iLHtpZDpzLmY/bnVsbDpyKyJfZmlsdGVyIixjbGFzczppLnNGaWx0ZXJ9KS5hcHBlbmQodCgiPGxhYmVsLz4iKS5hcHBlbmQoYykpLGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy52YWx1ZT90aGlzLnZhbHVlOiIiO3QhPWEuc1NlYXJjaCYmKFkoZSx7c1NlYXJjaDp0LGJSZWdleDphLmJSZWdleCxiU21hcnQ6YS5iU21hcnQsYkNhc2VJbnNlbnNpdGl2ZTphLmJDYXNlSW5zZW5zaXRpdmV9KSxlLl9pRGlzcGxheVN0YXJ0PTAsRihlKSl9KSxkPShzPW51bGwhPT1lLnNlYXJjaERlbGF5P2Uuc2VhcmNoRGVsYXk6InNzcCI9PT1qdChlKT80MDA6MCx0KCJpbnB1dCIsaSkudmFsKGEuc1NlYXJjaCkuYXR0cigicGxhY2Vob2xkZXIiLG8uc1NlYXJjaFBsYWNlaG9sZGVyKS5vbigia2V5dXAuRFQgc2VhcmNoLkRUIGlucHV0LkRUIHBhc3RlLkRUIGN1dC5EVCIscz92ZSh1LHMpOnUpLm9uKCJtb3VzZXVwIiwoZnVuY3Rpb24oKXtzZXRUaW1lb3V0KChmdW5jdGlvbigpe3UuY2FsbChkWzBdKX0pLDEwKX0pKS5vbigia2V5cHJlc3MuRFQiLChmdW5jdGlvbih0KXtpZigxMz09dC5rZXlDb2RlKXJldHVybiExfSkpLmF0dHIoImFyaWEtY29udHJvbHMiLHIpKTtyZXR1cm4gdChlLm5UYWJsZSkub24oInNlYXJjaC5kdC5EVCIsKGZ1bmN0aW9uKHQsaSl7aWYoZT09PWkpdHJ5e2RbMF0hPT1uLmFjdGl2ZUVsZW1lbnQmJmQudmFsKGEuc1NlYXJjaCl9Y2F0Y2godCl7fX0pKSxpWzBdfWZ1bmN0aW9uIFkodCxlLG4pe3ZhciByPXQub1ByZXZpb3VzU2VhcmNoLG89dC5hb1ByZVNlYXJjaENvbHMsYT1mdW5jdGlvbih0KXtyLnNTZWFyY2g9dC5zU2VhcmNoLHIuYlJlZ2V4PXQuYlJlZ2V4LHIuYlNtYXJ0PXQuYlNtYXJ0LHIuYkNhc2VJbnNlbnNpdGl2ZT10LmJDYXNlSW5zZW5zaXRpdmV9O2lmKHkodCksInNzcCIhPWp0KHQpKXtmb3IoUSh0LGUuc1NlYXJjaCxuLGUuYkVzY2FwZVJlZ2V4IT09aT8hZS5iRXNjYXBlUmVnZXg6ZS5iUmVnZXgsZS5iU21hcnQsZS5iQ2FzZUluc2Vuc2l0aXZlKSxhKGUpLGU9MDtlPG8ubGVuZ3RoO2UrKylYKHQsb1tlXS5zU2VhcmNoLGUsb1tlXS5iRXNjYXBlUmVnZXghPT1pPyFvW2VdLmJFc2NhcGVSZWdleDpvW2VdLmJSZWdleCxvW2VdLmJTbWFydCxvW2VdLmJDYXNlSW5zZW5zaXRpdmUpO0codCl9ZWxzZSBhKGUpO3QuYkZpbHRlcmVkPSEwLE50KHQsbnVsbCwic2VhcmNoIixbdF0pfWZ1bmN0aW9uIEcoZSl7Zm9yKHZhciBuLGkscj1WdC5leHQuc2VhcmNoLG89ZS5haURpc3BsYXksYT0wLHM9ci5sZW5ndGg7YTxzO2ErKyl7Zm9yKHZhciBsPVtdLGM9MCx1PW8ubGVuZ3RoO2M8dTtjKyspaT1vW2NdLG49ZS5hb0RhdGFbaV0sclthXShlLG4uX2FGaWx0ZXJEYXRhLGksbi5fYURhdGEsYykmJmwucHVzaChpKTtvLmxlbmd0aD0wLHQubWVyZ2UobyxsKX19ZnVuY3Rpb24gWCh0LGUsbixpLHIsbyl7aWYoIiIhPT1lKXt2YXIgYT1bXSxzPXQuYWlEaXNwbGF5O2ZvcihpPUsoZSxpLHIsbykscj0wO3I8cy5sZW5ndGg7cisrKWU9dC5hb0RhdGFbc1tyXV0uX2FGaWx0ZXJEYXRhW25dLGkudGVzdChlKSYmYS5wdXNoKHNbcl0pO3QuYWlEaXNwbGF5PWF9fWZ1bmN0aW9uIFEodCxlLG4saSxyLG8pe3I9SyhlLGkscixvKTt2YXIgYSxzPXQub1ByZXZpb3VzU2VhcmNoLnNTZWFyY2gsbD10LmFpRGlzcGxheU1hc3RlcjtvPVtdO2lmKDAhPT1WdC5leHQuc2VhcmNoLmxlbmd0aCYmKG49ITApLGE9Sih0KSwwPj1lLmxlbmd0aCl0LmFpRGlzcGxheT1sLnNsaWNlKCk7ZWxzZXtmb3IoKGF8fG58fGl8fHMubGVuZ3RoPmUubGVuZ3RofHwwIT09ZS5pbmRleE9mKHMpfHx0LmJTb3J0ZWQpJiYodC5haURpc3BsYXk9bC5zbGljZSgpKSxlPXQuYWlEaXNwbGF5LG49MDtuPGUubGVuZ3RoO24rKylyLnRlc3QodC5hb0RhdGFbZVtuXV0uX3NGaWx0ZXJSb3cpJiZvLnB1c2goZVtuXSk7dC5haURpc3BsYXk9b319ZnVuY3Rpb24gSyhlLG4saSxyKXtyZXR1cm4gZT1uP2U6ZmUoZSksaSYmKGU9Il4oPz0uKj8iK3QubWFwKGUubWF0Y2goLyJbXiJdKyJ8W14gXSsvZyl8fFsiIl0sKGZ1bmN0aW9uKHQpe2lmKCciJz09PXQuY2hhckF0KDApKXt2YXIgZT10Lm1hdGNoKC9eIiguKikiJC8pO3Q9ZT9lWzFdOnR9cmV0dXJuIHQucmVwbGFjZSgnIicsIiIpfSkpLmpvaW4oIikoPz0uKj8iKSsiKS4qJCIpLFJlZ0V4cChlLHI/ImkiOiIiKX1mdW5jdGlvbiBKKHQpe3ZhciBlLG4saSxyLG8sYSxzLGwsYz10LmFvQ29sdW1ucyx1PVZ0LmV4dC50eXBlLnNlYXJjaDtmb3IoZT0hMSxuPTAscj10LmFvRGF0YS5sZW5ndGg7bjxyO24rKylpZighKGw9dC5hb0RhdGFbbl0pLl9hRmlsdGVyRGF0YSl7Zm9yKGE9W10saT0wLG89Yy5sZW5ndGg7aTxvO2krKykoZT1jW2ldKS5iU2VhcmNoYWJsZT8ocz1fKHQsbixpLCJmaWx0ZXIiKSx1W2Uuc1R5cGVdJiYocz11W2Uuc1R5cGVdKHMpKSxudWxsPT09cyYmKHM9IiIpLCJzdHJpbmciIT10eXBlb2YgcyYmcy50b1N0cmluZyYmKHM9cy50b1N0cmluZygpKSk6cz0iIixzLmluZGV4T2YmJi0xIT09cy5pbmRleE9mKCImIikmJihwZS5pbm5lckhUTUw9cyxzPWdlP3BlLnRleHRDb250ZW50OnBlLmlubmVyVGV4dCkscy5yZXBsYWNlJiYocz1zLnJlcGxhY2UoL1tcclxuXHUyMDI4XS9nLCIiKSksYS5wdXNoKHMpO2wuX2FGaWx0ZXJEYXRhPWEsbC5fc0ZpbHRlclJvdz1hLmpvaW4oIiAgIiksZT0hMH1yZXR1cm4gZX1mdW5jdGlvbiBaKHQpe3JldHVybntzZWFyY2g6dC5zU2VhcmNoLHNtYXJ0OnQuYlNtYXJ0LHJlZ2V4OnQuYlJlZ2V4LGNhc2VJbnNlbnNpdGl2ZTp0LmJDYXNlSW5zZW5zaXRpdmV9fWZ1bmN0aW9uIHR0KHQpe3JldHVybntzU2VhcmNoOnQuc2VhcmNoLGJTbWFydDp0LnNtYXJ0LGJSZWdleDp0LnJlZ2V4LGJDYXNlSW5zZW5zaXRpdmU6dC5jYXNlSW5zZW5zaXRpdmV9fWZ1bmN0aW9uIGV0KGUpe3ZhciBuPWUuc1RhYmxlSWQsaT1lLmFhbkZlYXR1cmVzLmkscj10KCI8ZGl2Lz4iLHtjbGFzczplLm9DbGFzc2VzLnNJbmZvLGlkOmk/bnVsbDpuKyJfaW5mbyJ9KTtyZXR1cm4gaXx8KGUuYW9EcmF3Q2FsbGJhY2sucHVzaCh7Zm46bnQsc05hbWU6ImluZm9ybWF0aW9uIn0pLHIuYXR0cigicm9sZSIsInN0YXR1cyIpLmF0dHIoImFyaWEtbGl2ZSIsInBvbGl0ZSIpLHQoZS5uVGFibGUpLmF0dHIoImFyaWEtZGVzY3JpYmVkYnkiLG4rIl9pbmZvIikpLHJbMF19ZnVuY3Rpb24gbnQoZSl7dmFyIG49ZS5hYW5GZWF0dXJlcy5pO2lmKDAhPT1uLmxlbmd0aCl7dmFyIGk9ZS5vTGFuZ3VhZ2Uscj1lLl9pRGlzcGxheVN0YXJ0KzEsbz1lLmZuRGlzcGxheUVuZCgpLGE9ZS5mblJlY29yZHNUb3RhbCgpLHM9ZS5mblJlY29yZHNEaXNwbGF5KCksbD1zP2kuc0luZm86aS5zSW5mb0VtcHR5O3MhPT1hJiYobCs9IiAiK2kuc0luZm9GaWx0ZXJlZCksbD1pdChlLGwrPWkuc0luZm9Qb3N0Rml4KSxudWxsIT09KGk9aS5mbkluZm9DYWxsYmFjaykmJihsPWkuY2FsbChlLm9JbnN0YW5jZSxlLHIsbyxhLHMsbCkpLHQobikuaHRtbChsKX19ZnVuY3Rpb24gaXQodCxlKXt2YXIgbj10LmZuRm9ybWF0TnVtYmVyLGk9dC5faURpc3BsYXlTdGFydCsxLHI9dC5faURpc3BsYXlMZW5ndGgsbz10LmZuUmVjb3Jkc0Rpc3BsYXkoKSxhPS0xPT09cjtyZXR1cm4gZS5yZXBsYWNlKC9fU1RBUlRfL2csbi5jYWxsKHQsaSkpLnJlcGxhY2UoL19FTkRfL2csbi5jYWxsKHQsdC5mbkRpc3BsYXlFbmQoKSkpLnJlcGxhY2UoL19NQVhfL2csbi5jYWxsKHQsdC5mblJlY29yZHNUb3RhbCgpKSkucmVwbGFjZSgvX1RPVEFMXy9nLG4uY2FsbCh0LG8pKS5yZXBsYWNlKC9fUEFHRV8vZyxuLmNhbGwodCxhPzE6TWF0aC5jZWlsKGkvcikpKS5yZXBsYWNlKC9fUEFHRVNfL2csbi5jYWxsKHQsYT8xOk1hdGguY2VpbChvL3IpKSl9ZnVuY3Rpb24gcnQodCl7dmFyIGUsbixpLHI9dC5pSW5pdERpc3BsYXlTdGFydCxvPXQuYW9Db2x1bW5zO249dC5vRmVhdHVyZXM7dmFyIGE9dC5iRGVmZXJMb2FkaW5nO2lmKHQuYkluaXRpYWxpc2VkKXtmb3Ioaih0KSxMKHQpLE4odCx0LmFvSGVhZGVyKSxOKHQsdC5hb0Zvb3RlciksZHQodCwhMCksbi5iQXV0b1dpZHRoJiZndCh0KSxlPTAsbj1vLmxlbmd0aDtlPG47ZSsrKShpPW9bZV0pLnNXaWR0aCYmKGkublRoLnN0eWxlLndpZHRoPWJ0KGkuc1dpZHRoKSk7TnQodCxudWxsLCJwcmVJbml0IixbdF0pLFIodCksKCJzc3AiIT0obz1qdCh0KSl8fGEpJiYoImFqYXgiPT1vP0godCxbXSwoZnVuY3Rpb24obil7dmFyIGk9VSh0LG4pO2ZvcihlPTA7ZTxpLmxlbmd0aDtlKyspdyh0LGlbZV0pO3QuaUluaXREaXNwbGF5U3RhcnQ9cixSKHQpLGR0KHQsITEpLG90KHQsbil9KSk6KGR0KHQsITEpLG90KHQpKSl9ZWxzZSBzZXRUaW1lb3V0KChmdW5jdGlvbigpe3J0KHQpfSksMjAwKX1mdW5jdGlvbiBvdCh0LGUpe3QuX2JJbml0Q29tcGxldGU9ITAsKGV8fHQub0luaXQuYWFEYXRhKSYmZih0KSxOdCh0LG51bGwsInBsdWdpbi1pbml0IixbdCxlXSksTnQodCwiYW9Jbml0Q29tcGxldGUiLCJpbml0IixbdCxlXSl9ZnVuY3Rpb24gYXQodCxlKXt2YXIgbj1wYXJzZUludChlLDEwKTt0Ll9pRGlzcGxheUxlbmd0aD1uLEZ0KHQpLE50KHQsbnVsbCwibGVuZ3RoIixbdCxuXSl9ZnVuY3Rpb24gc3QoZSl7Zm9yKHZhciBuPWUub0NsYXNzZXMsaT1lLnNUYWJsZUlkLHI9ZS5hTGVuZ3RoTWVudSxvPShhPUFycmF5LmlzQXJyYXkoclswXSkpP3JbMF06cixhPShyPWE/clsxXTpyLHQoIjxzZWxlY3QvPiIse25hbWU6aSsiX2xlbmd0aCIsImFyaWEtY29udHJvbHMiOmksY2xhc3M6bi5zTGVuZ3RoU2VsZWN0fSkpLHM9MCxsPW8ubGVuZ3RoO3M8bDtzKyspYVswXVtzXT1uZXcgT3B0aW9uKCJudW1iZXIiPT10eXBlb2YgcltzXT9lLmZuRm9ybWF0TnVtYmVyKHJbc10pOnJbc10sb1tzXSk7dmFyIGM9dCgiPGRpdj48bGFiZWwvPjwvZGl2PiIpLmFkZENsYXNzKG4uc0xlbmd0aCk7cmV0dXJuIGUuYWFuRmVhdHVyZXMubHx8KGNbMF0uaWQ9aSsiX2xlbmd0aCIpLGMuY2hpbGRyZW4oKS5hcHBlbmQoZS5vTGFuZ3VhZ2Uuc0xlbmd0aE1lbnUucmVwbGFjZSgiX01FTlVfIixhWzBdLm91dGVySFRNTCkpLHQoInNlbGVjdCIsYykudmFsKGUuX2lEaXNwbGF5TGVuZ3RoKS5vbigiY2hhbmdlLkRUIiwoZnVuY3Rpb24oKXthdChlLHQodGhpcykudmFsKCkpLEYoZSl9KSksdChlLm5UYWJsZSkub24oImxlbmd0aC5kdC5EVCIsKGZ1bmN0aW9uKG4saSxyKXtlPT09aSYmdCgic2VsZWN0IixjKS52YWwocil9KSksY1swXX1mdW5jdGlvbiBsdChlKXt2YXIgbj1lLnNQYWdpbmF0aW9uVHlwZSxpPVZ0LmV4dC5wYWdlcltuXSxyPSJmdW5jdGlvbiI9PXR5cGVvZiBpLG89ZnVuY3Rpb24odCl7Rih0KX0sYT0obj10KCI8ZGl2Lz4iKS5hZGRDbGFzcyhlLm9DbGFzc2VzLnNQYWdpbmcrbilbMF0sZS5hYW5GZWF0dXJlcyk7cmV0dXJuIHJ8fGkuZm5Jbml0KGUsbixvKSxhLnB8fChuLmlkPWUuc1RhYmxlSWQrIl9wYWdpbmF0ZSIsZS5hb0RyYXdDYWxsYmFjay5wdXNoKHtmbjpmdW5jdGlvbih0KXtpZihyKXt2YXIgZSxuPXQuX2lEaXNwbGF5U3RhcnQscz10Ll9pRGlzcGxheUxlbmd0aCxsPXQuZm5SZWNvcmRzRGlzcGxheSgpLGM9KG49KGM9LTE9PT1zKT8wOk1hdGguY2VpbChuL3MpLHM9Yz8xOk1hdGguY2VpbChsL3MpLGw9aShuLHMpLDApO2ZvcihlPWEucC5sZW5ndGg7YzxlO2MrKylSdCh0LCJwYWdlQnV0dG9uIikodCxhLnBbY10sYyxsLG4scyl9ZWxzZSBpLmZuVXBkYXRlKHQsbyl9LHNOYW1lOiJwYWdpbmF0aW9uIn0pKSxufWZ1bmN0aW9uIGN0KHQsZSxuKXt2YXIgaT10Ll9pRGlzcGxheVN0YXJ0LHI9dC5faURpc3BsYXlMZW5ndGgsbz10LmZuUmVjb3Jkc0Rpc3BsYXkoKTtyZXR1cm4gMD09PW98fC0xPT09cj9pPTA6Im51bWJlciI9PXR5cGVvZiBlPyhpPWUqcik+byYmKGk9MCk6ImZpcnN0Ij09ZT9pPTA6InByZXZpb3VzIj09ZT8wPihpPTA8PXI/aS1yOjApJiYoaT0wKToibmV4dCI9PWU/aStyPG8mJihpKz1yKToibGFzdCI9PWU/aT1NYXRoLmZsb29yKChvLTEpL3IpKnI6TXQodCwwLCJVbmtub3duIHBhZ2luZyBhY3Rpb246ICIrZSw1KSxlPXQuX2lEaXNwbGF5U3RhcnQhPT1pLHQuX2lEaXNwbGF5U3RhcnQ9aSxlJiYoTnQodCxudWxsLCJwYWdlIixbdF0pLG4mJkYodCkpLGV9ZnVuY3Rpb24gdXQoZSl7cmV0dXJuIHQoIjxkaXYvPiIse2lkOmUuYWFuRmVhdHVyZXMucj9udWxsOmUuc1RhYmxlSWQrIl9wcm9jZXNzaW5nIixjbGFzczplLm9DbGFzc2VzLnNQcm9jZXNzaW5nfSkuaHRtbChlLm9MYW5ndWFnZS5zUHJvY2Vzc2luZykuaW5zZXJ0QmVmb3JlKGUublRhYmxlKVswXX1mdW5jdGlvbiBkdChlLG4pe2Uub0ZlYXR1cmVzLmJQcm9jZXNzaW5nJiZ0KGUuYWFuRmVhdHVyZXMucikuY3NzKCJkaXNwbGF5IixuPyJibG9jayI6Im5vbmUiKSxOdChlLG51bGwsInByb2Nlc3NpbmciLFtlLG5dKX1mdW5jdGlvbiBodChlKXsoZD10KGUublRhYmxlKSkuYXR0cigicm9sZSIsImdyaWQiKTt2YXIgbj1lLm9TY3JvbGw7aWYoIiI9PT1uLnNYJiYiIj09PW4uc1kpcmV0dXJuIGUublRhYmxlO3ZhciBpPW4uc1gscj1uLnNZLG89ZS5vQ2xhc3NlcyxhPWQuY2hpbGRyZW4oImNhcHRpb24iKSxzPWEubGVuZ3RoP2FbMF0uX2NhcHRpb25TaWRlOm51bGwsbD10KGRbMF0uY2xvbmVOb2RlKCExKSksYz10KGRbMF0uY2xvbmVOb2RlKCExKSksdT1kLmNoaWxkcmVuKCJ0Zm9vdCIpO3UubGVuZ3RofHwodT1udWxsKSxsPXQoIjxkaXYvPiIse2NsYXNzOm8uc1Njcm9sbFdyYXBwZXJ9KS5hcHBlbmQodCgiPGRpdi8+Iix7Y2xhc3M6by5zU2Nyb2xsSGVhZH0pLmNzcyh7b3ZlcmZsb3c6ImhpZGRlbiIscG9zaXRpb246InJlbGF0aXZlIixib3JkZXI6MCx3aWR0aDppP2k/YnQoaSk6bnVsbDoiMTAwJSJ9KS5hcHBlbmQodCgiPGRpdi8+Iix7Y2xhc3M6by5zU2Nyb2xsSGVhZElubmVyfSkuY3NzKHsiYm94LXNpemluZyI6ImNvbnRlbnQtYm94Iix3aWR0aDpuLnNYSW5uZXJ8fCIxMDAlIn0pLmFwcGVuZChsLnJlbW92ZUF0dHIoImlkIikuY3NzKCJtYXJnaW4tbGVmdCIsMCkuYXBwZW5kKCJ0b3AiPT09cz9hOm51bGwpLmFwcGVuZChkLmNoaWxkcmVuKCJ0aGVhZCIpKSkpKS5hcHBlbmQodCgiPGRpdi8+Iix7Y2xhc3M6by5zU2Nyb2xsQm9keX0pLmNzcyh7cG9zaXRpb246InJlbGF0aXZlIixvdmVyZmxvdzoiYXV0byIsd2lkdGg6aT9idChpKTpudWxsfSkuYXBwZW5kKGQpKSx1JiZsLmFwcGVuZCh0KCI8ZGl2Lz4iLHtjbGFzczpvLnNTY3JvbGxGb290fSkuY3NzKHtvdmVyZmxvdzoiaGlkZGVuIixib3JkZXI6MCx3aWR0aDppP2k/YnQoaSk6bnVsbDoiMTAwJSJ9KS5hcHBlbmQodCgiPGRpdi8+Iix7Y2xhc3M6by5zU2Nyb2xsRm9vdElubmVyfSkuYXBwZW5kKGMucmVtb3ZlQXR0cigiaWQiKS5jc3MoIm1hcmdpbi1sZWZ0IiwwKS5hcHBlbmQoImJvdHRvbSI9PT1zP2E6bnVsbCkuYXBwZW5kKGQuY2hpbGRyZW4oInRmb290IikpKSkpO3ZhciBkLGg9KGQ9bC5jaGlsZHJlbigpKVswXSxmPShvPWRbMV0sdT9kWzJdOm51bGwpO3JldHVybiBpJiZ0KG8pLm9uKCJzY3JvbGwuRFQiLChmdW5jdGlvbigpe3ZhciB0PXRoaXMuc2Nyb2xsTGVmdDtoLnNjcm9sbExlZnQ9dCx1JiYoZi5zY3JvbGxMZWZ0PXQpfSkpLHQobykuY3NzKCJtYXgtaGVpZ2h0IixyKSxuLmJDb2xsYXBzZXx8dChvKS5jc3MoImhlaWdodCIsciksZS5uU2Nyb2xsSGVhZD1oLGUublNjcm9sbEJvZHk9byxlLm5TY3JvbGxGb290PWYsZS5hb0RyYXdDYWxsYmFjay5wdXNoKHtmbjpmdCxzTmFtZToic2Nyb2xsaW5nIn0pLGxbMF19ZnVuY3Rpb24gZnQoZSl7dmFyIG4scixvLGEscyxsPShkPWUub1Njcm9sbCkuc1gsYz1kLnNYSW5uZXIsdT1kLnNZLGQ9ZC5pQmFyV2lkdGgsaD10KGUublNjcm9sbEhlYWQpLGc9aFswXS5zdHlsZSxtPSh5PWguY2hpbGRyZW4oImRpdiIpKVswXS5zdHlsZSx2PXkuY2hpbGRyZW4oInRhYmxlIikseT1lLm5TY3JvbGxCb2R5LGI9dCh5KSx3PXkuc3R5bGUseD10KGUublNjcm9sbEZvb3QpLmNoaWxkcmVuKCJkaXYiKSxfPXguY2hpbGRyZW4oInRhYmxlIiksUz10KGUublRIZWFkKSxDPXQoZS5uVGFibGUpLGs9Q1swXSxUPWsuc3R5bGUsQT1lLm5URm9vdD90KGUublRGb290KTpudWxsLEQ9ZS5vQnJvd3NlcixFPUQuYlNjcm9sbE92ZXJzaXplLE09cmUoZS5hb0NvbHVtbnMsIm5UaCIpLE89W10sST1bXSxQPVtdLEw9W10sTj1mdW5jdGlvbih0KXsodD10LnN0eWxlKS5wYWRkaW5nVG9wPSIwIix0LnBhZGRpbmdCb3R0b209IjAiLHQuYm9yZGVyVG9wV2lkdGg9IjAiLHQuYm9yZGVyQm90dG9tV2lkdGg9IjAiLHQuaGVpZ2h0PTB9O3I9eS5zY3JvbGxIZWlnaHQ+eS5jbGllbnRIZWlnaHQsZS5zY3JvbGxCYXJWaXMhPT1yJiZlLnNjcm9sbEJhclZpcyE9PWk/KGUuc2Nyb2xsQmFyVmlzPXIsZihlKSk6KGUuc2Nyb2xsQmFyVmlzPXIsQy5jaGlsZHJlbigidGhlYWQsIHRmb290IikucmVtb3ZlKCksQSYmKG89QS5jbG9uZSgpLnByZXBlbmRUbyhDKSxuPUEuZmluZCgidHIiKSxvPW8uZmluZCgidHIiKSksYT1TLmNsb25lKCkucHJlcGVuZFRvKEMpLFM9Uy5maW5kKCJ0ciIpLHI9YS5maW5kKCJ0ciIpLGEuZmluZCgidGgsIHRkIikucmVtb3ZlQXR0cigidGFiaW5kZXgiKSxsfHwody53aWR0aD0iMTAwJSIsaFswXS5zdHlsZS53aWR0aD0iMTAwJSIpLHQuZWFjaCh6KGUsYSksKGZ1bmN0aW9uKHQsbil7cz1wKGUsdCksbi5zdHlsZS53aWR0aD1lLmFvQ29sdW1uc1tzXS5zV2lkdGh9KSksQSYmcHQoKGZ1bmN0aW9uKHQpe3Quc3R5bGUud2lkdGg9IiJ9KSxvKSxoPUMub3V0ZXJXaWR0aCgpLCIiPT09bD8oVC53aWR0aD0iMTAwJSIsRSYmKEMuZmluZCgidGJvZHkiKS5oZWlnaHQoKT55Lm9mZnNldEhlaWdodHx8InNjcm9sbCI9PWIuY3NzKCJvdmVyZmxvdy15IikpJiYoVC53aWR0aD1idChDLm91dGVyV2lkdGgoKS1kKSksaD1DLm91dGVyV2lkdGgoKSk6IiIhPT1jJiYoVC53aWR0aD1idChjKSxoPUMub3V0ZXJXaWR0aCgpKSxwdChOLHIpLHB0KChmdW5jdGlvbihlKXtQLnB1c2goZS5pbm5lckhUTUwpLE8ucHVzaChidCh0KGUpLmNzcygid2lkdGgiKSkpfSkscikscHQoKGZ1bmN0aW9uKGUsbil7LTEhPT10LmluQXJyYXkoZSxNKSYmKGUuc3R5bGUud2lkdGg9T1tuXSl9KSxTKSx0KHIpLmhlaWdodCgwKSxBJiYocHQoTixvKSxwdCgoZnVuY3Rpb24oZSl7TC5wdXNoKGUuaW5uZXJIVE1MKSxJLnB1c2goYnQodChlKS5jc3MoIndpZHRoIikpKX0pLG8pLHB0KChmdW5jdGlvbih0LGUpe3Quc3R5bGUud2lkdGg9SVtlXX0pLG4pLHQobykuaGVpZ2h0KDApKSxwdCgoZnVuY3Rpb24odCxlKXt0LmlubmVySFRNTD0nPGRpdiBjbGFzcz0iZGF0YVRhYmxlc19zaXppbmciPicrUFtlXSsiPC9kaXY+Iix0LmNoaWxkTm9kZXNbMF0uc3R5bGUuaGVpZ2h0PSIwIix0LmNoaWxkTm9kZXNbMF0uc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIsdC5zdHlsZS53aWR0aD1PW2VdfSksciksQSYmcHQoKGZ1bmN0aW9uKHQsZSl7dC5pbm5lckhUTUw9JzxkaXYgY2xhc3M9ImRhdGFUYWJsZXNfc2l6aW5nIj4nK0xbZV0rIjwvZGl2PiIsdC5jaGlsZE5vZGVzWzBdLnN0eWxlLmhlaWdodD0iMCIsdC5jaGlsZE5vZGVzWzBdLnN0eWxlLm92ZXJmbG93PSJoaWRkZW4iLHQuc3R5bGUud2lkdGg9SVtlXX0pLG8pLEMub3V0ZXJXaWR0aCgpPGg/KG49eS5zY3JvbGxIZWlnaHQ+eS5vZmZzZXRIZWlnaHR8fCJzY3JvbGwiPT1iLmNzcygib3ZlcmZsb3cteSIpP2grZDpoLEUmJih5LnNjcm9sbEhlaWdodD55Lm9mZnNldEhlaWdodHx8InNjcm9sbCI9PWIuY3NzKCJvdmVyZmxvdy15IikpJiYoVC53aWR0aD1idChuLWQpKSwoIiI9PT1sfHwiIiE9PWMpJiZNdChlLDEsIlBvc3NpYmxlIGNvbHVtbiBtaXNhbGlnbm1lbnQiLDYpKTpuPSIxMDAlIix3LndpZHRoPWJ0KG4pLGcud2lkdGg9YnQobiksQSYmKGUublNjcm9sbEZvb3Quc3R5bGUud2lkdGg9YnQobikpLCF1JiZFJiYody5oZWlnaHQ9YnQoay5vZmZzZXRIZWlnaHQrZCkpLGw9Qy5vdXRlcldpZHRoKCksdlswXS5zdHlsZS53aWR0aD1idChsKSxtLndpZHRoPWJ0KGwpLGM9Qy5oZWlnaHQoKT55LmNsaWVudEhlaWdodHx8InNjcm9sbCI9PWIuY3NzKCJvdmVyZmxvdy15IiksbVt1PSJwYWRkaW5nIisoRC5iU2Nyb2xsYmFyTGVmdD8iTGVmdCI6IlJpZ2h0IildPWM/ZCsicHgiOiIwcHgiLEEmJihfWzBdLnN0eWxlLndpZHRoPWJ0KGwpLHhbMF0uc3R5bGUud2lkdGg9YnQobCkseFswXS5zdHlsZVt1XT1jP2QrInB4IjoiMHB4IiksQy5jaGlsZHJlbigiY29sZ3JvdXAiKS5pbnNlcnRCZWZvcmUoQy5jaGlsZHJlbigidGhlYWQiKSksYi50cmlnZ2VyKCJzY3JvbGwiKSwhZS5iU29ydGVkJiYhZS5iRmlsdGVyZWR8fGUuX2RyYXdIb2xkfHwoeS5zY3JvbGxUb3A9MCkpfWZ1bmN0aW9uIHB0KHQsZSxuKXtmb3IodmFyIGkscixvPTAsYT0wLHM9ZS5sZW5ndGg7YTxzOyl7Zm9yKGk9ZVthXS5maXJzdENoaWxkLHI9bj9uW2FdLmZpcnN0Q2hpbGQ6bnVsbDtpOykxPT09aS5ub2RlVHlwZSYmKG4/dChpLHIsbyk6dChpLG8pLG8rKyksaT1pLm5leHRTaWJsaW5nLHI9bj9yLm5leHRTaWJsaW5nOm51bGw7YSsrfX1mdW5jdGlvbiBndChuKXt2YXIgaSxyLG89bi5uVGFibGUsYT1uLmFvQ29sdW1ucyxzPSh4PW4ub1Njcm9sbCkuc1ksbD14LnNYLGM9eC5zWElubmVyLHU9YS5sZW5ndGgsZD12KG4sImJWaXNpYmxlIiksaD10KCJ0aCIsbi5uVEhlYWQpLGc9by5nZXRBdHRyaWJ1dGUoIndpZHRoIikseT1vLnBhcmVudE5vZGUsYj0hMSx3PW4ub0Jyb3dzZXIseD13LmJTY3JvbGxPdmVyc2l6ZTtmb3IoKGk9by5zdHlsZS53aWR0aCkmJi0xIT09aS5pbmRleE9mKCIlIikmJihnPWkpLGk9MDtpPGQubGVuZ3RoO2krKyludWxsIT09KHI9YVtkW2ldXSkuc1dpZHRoJiYoci5zV2lkdGg9bXQoci5zV2lkdGhPcmlnLHkpLGI9ITApO2lmKHh8fCFiJiYhbCYmIXMmJnU9PW0obikmJnU9PWgubGVuZ3RoKWZvcihpPTA7aTx1O2krKyludWxsIT09KGQ9cChuLGkpKSYmKGFbZF0uc1dpZHRoPWJ0KGguZXEoaSkud2lkdGgoKSkpO2Vsc2V7KHU9dChvKS5jbG9uZSgpLmNzcygidmlzaWJpbGl0eSIsImhpZGRlbiIpLnJlbW92ZUF0dHIoImlkIikpLmZpbmQoInRib2R5IHRyIikucmVtb3ZlKCk7dmFyIF89dCgiPHRyLz4iKS5hcHBlbmRUbyh1LmZpbmQoInRib2R5IikpO2Zvcih1LmZpbmQoInRoZWFkLCB0Zm9vdCIpLnJlbW92ZSgpLHUuYXBwZW5kKHQobi5uVEhlYWQpLmNsb25lKCkpLmFwcGVuZCh0KG4ublRGb290KS5jbG9uZSgpKSx1LmZpbmQoInRmb290IHRoLCB0Zm9vdCB0ZCIpLmNzcygid2lkdGgiLCIiKSxoPXoobix1LmZpbmQoInRoZWFkIilbMF0pLGk9MDtpPGQubGVuZ3RoO2krKylyPWFbZFtpXV0saFtpXS5zdHlsZS53aWR0aD1udWxsIT09ci5zV2lkdGhPcmlnJiYiIiE9PXIuc1dpZHRoT3JpZz9idChyLnNXaWR0aE9yaWcpOiIiLHIuc1dpZHRoT3JpZyYmbCYmdChoW2ldKS5hcHBlbmQodCgiPGRpdi8+IikuY3NzKHt3aWR0aDpyLnNXaWR0aE9yaWcsbWFyZ2luOjAscGFkZGluZzowLGJvcmRlcjowLGhlaWdodDoxfSkpO2lmKG4uYW9EYXRhLmxlbmd0aClmb3IoaT0wO2k8ZC5sZW5ndGg7aSsrKXI9YVtiPWRbaV1dLHQodnQobixiKSkuY2xvbmUoITEpLmFwcGVuZChyLnNDb250ZW50UGFkZGluZykuYXBwZW5kVG8oXyk7Zm9yKHQoIltuYW1lXSIsdSkucmVtb3ZlQXR0cigibmFtZSIpLHI9dCgiPGRpdi8+IikuY3NzKGx8fHM/e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOjAsbGVmdDowLGhlaWdodDoxLHJpZ2h0OjAsb3ZlcmZsb3c6ImhpZGRlbiJ9Ont9KS5hcHBlbmQodSkuYXBwZW5kVG8oeSksbCYmYz91LndpZHRoKGMpOmw/KHUuY3NzKCJ3aWR0aCIsImF1dG8iKSx1LnJlbW92ZUF0dHIoIndpZHRoIiksdS53aWR0aCgpPHkuY2xpZW50V2lkdGgmJmcmJnUud2lkdGgoeS5jbGllbnRXaWR0aCkpOnM/dS53aWR0aCh5LmNsaWVudFdpZHRoKTpnJiZ1LndpZHRoKGcpLGk9cz0wO2k8ZC5sZW5ndGg7aSsrKWM9KHk9dChoW2ldKSkub3V0ZXJXaWR0aCgpLXkud2lkdGgoKSxzKz15PXcuYkJvdW5kaW5nP01hdGguY2VpbChoW2ldLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoKTp5Lm91dGVyV2lkdGgoKSxhW2RbaV1dLnNXaWR0aD1idCh5LWMpO28uc3R5bGUud2lkdGg9YnQocyksci5yZW1vdmUoKX1nJiYoby5zdHlsZS53aWR0aD1idChnKSksIWcmJiFsfHxuLl9yZXN6RXZ0fHwobz1mdW5jdGlvbigpe3QoZSkub24oInJlc2l6ZS5EVC0iK24uc0luc3RhbmNlLHZlKChmdW5jdGlvbigpe2Yobil9KSkpfSx4P3NldFRpbWVvdXQobywxZTMpOm8oKSxuLl9yZXN6RXZ0PSEwKX1mdW5jdGlvbiBtdChlLGkpe2lmKCFlKXJldHVybiAwO3ZhciByPXQoIjxkaXYvPiIpLmNzcygid2lkdGgiLGJ0KGUpKS5hcHBlbmRUbyhpfHxuLmJvZHkpLG89clswXS5vZmZzZXRXaWR0aDtyZXR1cm4gci5yZW1vdmUoKSxvfWZ1bmN0aW9uIHZ0KGUsbil7dmFyIGk9eXQoZSxuKTtpZigwPmkpcmV0dXJuIG51bGw7dmFyIHI9ZS5hb0RhdGFbaV07cmV0dXJuIHIublRyP3IuYW5DZWxsc1tuXTp0KCI8dGQvPiIpLmh0bWwoXyhlLGksbiwiZGlzcGxheSIpKVswXX1mdW5jdGlvbiB5dCh0LGUpe2Zvcih2YXIgbixpPS0xLHI9LTEsbz0wLGE9dC5hb0RhdGEubGVuZ3RoO288YTtvKyspKG49KG49KG49Xyh0LG8sZSwiZGlzcGxheSIpKyIiKS5yZXBsYWNlKG1lLCIiKSkucmVwbGFjZSgvJm5ic3A7L2csIiAiKSkubGVuZ3RoPmkmJihpPW4ubGVuZ3RoLHI9byk7cmV0dXJuIHJ9ZnVuY3Rpb24gYnQodCl7cmV0dXJuIG51bGw9PT10PyIwcHgiOiJudW1iZXIiPT10eXBlb2YgdD8wPnQ/IjBweCI6dCsicHgiOnQubWF0Y2goL1xkJC8pP3QrInB4Ijp0fWZ1bmN0aW9uIHd0KGUpe3ZhciBuLHIsbyxhLHMsbCxjPVtdLHU9ZS5hb0NvbHVtbnM7bj1lLmFhU29ydGluZ0ZpeGVkLHI9dC5pc1BsYWluT2JqZWN0KG4pO3ZhciBkPVtdO2ZvcihvPWZ1bmN0aW9uKGUpe2UubGVuZ3RoJiYhQXJyYXkuaXNBcnJheShlWzBdKT9kLnB1c2goZSk6dC5tZXJnZShkLGUpfSxBcnJheS5pc0FycmF5KG4pJiZvKG4pLHImJm4ucHJlJiZvKG4ucHJlKSxvKGUuYWFTb3J0aW5nKSxyJiZuLnBvc3QmJm8obi5wb3N0KSxlPTA7ZTxkLmxlbmd0aDtlKyspZm9yKG49MCxyPShvPXVbbD1kW2VdWzBdXS5hRGF0YVNvcnQpLmxlbmd0aDtuPHI7bisrKXM9dVthPW9bbl1dLnNUeXBlfHwic3RyaW5nIixkW2VdLl9pZHg9PT1pJiYoZFtlXS5faWR4PXQuaW5BcnJheShkW2VdWzFdLHVbYV0uYXNTb3J0aW5nKSksYy5wdXNoKHtzcmM6bCxjb2w6YSxkaXI6ZFtlXVsxXSxpbmRleDpkW2VdLl9pZHgsdHlwZTpzLGZvcm1hdHRlcjpWdC5leHQudHlwZS5vcmRlcltzKyItcHJlIl19KTtyZXR1cm4gY31mdW5jdGlvbiB4dCh0KXt2YXIgZSxuLGkscixvPVtdLGE9VnQuZXh0LnR5cGUub3JkZXIscz10LmFvRGF0YSxsPTAsYz10LmFpRGlzcGxheU1hc3Rlcjtmb3IoeSh0KSxlPTAsbj0ocj13dCh0KSkubGVuZ3RoO2U8bjtlKyspKGk9cltlXSkuZm9ybWF0dGVyJiZsKyssVHQodCxpLmNvbCk7aWYoInNzcCIhPWp0KHQpJiYwIT09ci5sZW5ndGgpe2ZvcihlPTAsbj1jLmxlbmd0aDtlPG47ZSsrKW9bY1tlXV09ZTtsPT09ci5sZW5ndGg/Yy5zb3J0KChmdW5jdGlvbih0LGUpe3ZhciBuLGksYSxsLGM9ci5sZW5ndGgsdT1zW3RdLl9hU29ydERhdGEsZD1zW2VdLl9hU29ydERhdGE7Zm9yKGE9MDthPGM7YSsrKWlmKDAhPT0obj0obj11WyhsPXJbYV0pLmNvbF0pPChpPWRbbC5jb2xdKT8tMTpuPmk/MTowKSlyZXR1cm4iYXNjIj09PWwuZGlyP246LW47cmV0dXJuKG49b1t0XSk8KGk9b1tlXSk/LTE6bj5pPzE6MH0pKTpjLnNvcnQoKGZ1bmN0aW9uKHQsZSl7dmFyIG4saSxsLGMsdT1yLmxlbmd0aCxkPXNbdF0uX2FTb3J0RGF0YSxoPXNbZV0uX2FTb3J0RGF0YTtmb3IobD0wO2w8dTtsKyspaWYobj1kWyhjPXJbbF0pLmNvbF0saT1oW2MuY29sXSwwIT09KG49KGM9YVtjLnR5cGUrIi0iK2MuZGlyXXx8YVsic3RyaW5nLSIrYy5kaXJdKShuLGkpKSlyZXR1cm4gbjtyZXR1cm4obj1vW3RdKTwoaT1vW2VdKT8tMTpuPmk/MTowfSkpfXQuYlNvcnRlZD0hMH1mdW5jdGlvbiBfdCh0KXtmb3IodmFyIGUsbixpPXQuYW9Db2x1bW5zLHI9d3QodCksbz0odD10Lm9MYW5ndWFnZS5vQXJpYSwwKSxhPWkubGVuZ3RoO288YTtvKyspe3ZhciBzPShuPWlbb10pLmFzU29ydGluZztlPW4uc1RpdGxlLnJlcGxhY2UoLzwuKj8+L2csIiIpO3ZhciBsPW4ublRoO2wucmVtb3ZlQXR0cmlidXRlKCJhcmlhLXNvcnQiKSxuLmJTb3J0YWJsZSYmKDA8ci5sZW5ndGgmJnJbMF0uY29sPT1vPyhsLnNldEF0dHJpYnV0ZSgiYXJpYS1zb3J0IiwiYXNjIj09clswXS5kaXI/ImFzY2VuZGluZyI6ImRlc2NlbmRpbmciKSxuPXNbclswXS5pbmRleCsxXXx8c1swXSk6bj1zWzBdLGUrPSJhc2MiPT09bj90LnNTb3J0QXNjZW5kaW5nOnQuc1NvcnREZXNjZW5kaW5nKSxsLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsZSl9fWZ1bmN0aW9uIFN0KGUsbixyLG8pe3ZhciBhPWUuYWFTb3J0aW5nLHM9ZS5hb0NvbHVtbnNbbl0uYXNTb3J0aW5nLGw9ZnVuY3Rpb24oZSxuKXt2YXIgcj1lLl9pZHg7cmV0dXJuIHI9PT1pJiYocj10LmluQXJyYXkoZVsxXSxzKSkscisxPHMubGVuZ3RoP3IrMTpuP251bGw6MH07Im51bWJlciI9PXR5cGVvZiBhWzBdJiYoYT1lLmFhU29ydGluZz1bYV0pLHImJmUub0ZlYXR1cmVzLmJTb3J0TXVsdGk/LTEhPT0ocj10LmluQXJyYXkobixyZShhLCIwIikpKT8obnVsbD09PShuPWwoYVtyXSwhMCkpJiYxPT09YS5sZW5ndGgmJihuPTApLG51bGw9PT1uP2Euc3BsaWNlKHIsMSk6KGFbcl1bMV09c1tuXSxhW3JdLl9pZHg9bikpOihhLnB1c2goW24sc1swXSwwXSksYVthLmxlbmd0aC0xXS5faWR4PTApOmEubGVuZ3RoJiZhWzBdWzBdPT1uPyhuPWwoYVswXSksYS5sZW5ndGg9MSxhWzBdWzFdPXNbbl0sYVswXS5faWR4PW4pOihhLmxlbmd0aD0wLGEucHVzaChbbixzWzBdXSksYVswXS5faWR4PTApLFIoZSksImZ1bmN0aW9uIj09dHlwZW9mIG8mJm8oZSl9ZnVuY3Rpb24gQ3QodCxlLG4saSl7dmFyIHI9dC5hb0NvbHVtbnNbbl07UHQoZSx7fSwoZnVuY3Rpb24oZSl7ITEhPT1yLmJTb3J0YWJsZSYmKHQub0ZlYXR1cmVzLmJQcm9jZXNzaW5nPyhkdCh0LCEwKSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe1N0KHQsbixlLnNoaWZ0S2V5LGkpLCJzc3AiIT09anQodCkmJmR0KHQsITEpfSksMCkpOlN0KHQsbixlLnNoaWZ0S2V5LGkpKX0pKX1mdW5jdGlvbiBrdChlKXt2YXIgbixpLHI9ZS5hTGFzdFNvcnQsbz1lLm9DbGFzc2VzLnNTb3J0Q29sdW1uLGE9d3QoZSkscz1lLm9GZWF0dXJlcztpZihzLmJTb3J0JiZzLmJTb3J0Q2xhc3Nlcyl7Zm9yKHM9MCxuPXIubGVuZ3RoO3M8bjtzKyspaT1yW3NdLnNyYyx0KHJlKGUuYW9EYXRhLCJhbkNlbGxzIixpKSkucmVtb3ZlQ2xhc3MobysoMj5zP3MrMTozKSk7Zm9yKHM9MCxuPWEubGVuZ3RoO3M8bjtzKyspaT1hW3NdLnNyYyx0KHJlKGUuYW9EYXRhLCJhbkNlbGxzIixpKSkuYWRkQ2xhc3MobysoMj5zP3MrMTozKSl9ZS5hTGFzdFNvcnQ9YX1mdW5jdGlvbiBUdCh0LGUpe3ZhciBuLGk9dC5hb0NvbHVtbnNbZV0scj1WdC5leHQub3JkZXJbaS5zU29ydERhdGFUeXBlXTtyJiYobj1yLmNhbGwodC5vSW5zdGFuY2UsdCxlLGcodCxlKSkpO2Zvcih2YXIgbyxhPVZ0LmV4dC50eXBlLm9yZGVyW2kuc1R5cGUrIi1wcmUiXSxzPTAsbD10LmFvRGF0YS5sZW5ndGg7czxsO3MrKykoaT10LmFvRGF0YVtzXSkuX2FTb3J0RGF0YXx8KGkuX2FTb3J0RGF0YT1bXSksKCFpLl9hU29ydERhdGFbZV18fHIpJiYobz1yP25bc106Xyh0LHMsZSwic29ydCIpLGkuX2FTb3J0RGF0YVtlXT1hP2Eobyk6byl9ZnVuY3Rpb24gQXQoZSl7aWYoZS5vRmVhdHVyZXMuYlN0YXRlU2F2ZSYmIWUuYkRlc3Ryb3lpbmcpe3ZhciBuPXt0aW1lOituZXcgRGF0ZSxzdGFydDplLl9pRGlzcGxheVN0YXJ0LGxlbmd0aDplLl9pRGlzcGxheUxlbmd0aCxvcmRlcjp0LmV4dGVuZCghMCxbXSxlLmFhU29ydGluZyksc2VhcmNoOlooZS5vUHJldmlvdXNTZWFyY2gpLGNvbHVtbnM6dC5tYXAoZS5hb0NvbHVtbnMsKGZ1bmN0aW9uKHQsbil7cmV0dXJue3Zpc2libGU6dC5iVmlzaWJsZSxzZWFyY2g6WihlLmFvUHJlU2VhcmNoQ29sc1tuXSl9fSkpfTtOdChlLCJhb1N0YXRlU2F2ZVBhcmFtcyIsInN0YXRlU2F2ZVBhcmFtcyIsW2Usbl0pLGUub1NhdmVkU3RhdGU9bixlLmZuU3RhdGVTYXZlQ2FsbGJhY2suY2FsbChlLm9JbnN0YW5jZSxlLG4pfX1mdW5jdGlvbiBEdChlLG4scil7dmFyIG8sYSxzPWUuYW9Db2x1bW5zO249ZnVuY3Rpb24obil7aWYobiYmbi50aW1lKXt2YXIgbD1OdChlLCJhb1N0YXRlTG9hZFBhcmFtcyIsInN0YXRlTG9hZFBhcmFtcyIsW2Usbl0pO2lmKC0xPT09dC5pbkFycmF5KCExLGwpJiYhKDA8KGw9ZS5pU3RhdGVEdXJhdGlvbikmJm4udGltZTwrbmV3IERhdGUtMWUzKmx8fG4uY29sdW1ucyYmcy5sZW5ndGghPT1uLmNvbHVtbnMubGVuZ3RoKSl7aWYoZS5vTG9hZGVkU3RhdGU9dC5leHRlbmQoITAse30sbiksbi5zdGFydCE9PWkmJihlLl9pRGlzcGxheVN0YXJ0PW4uc3RhcnQsZS5pSW5pdERpc3BsYXlTdGFydD1uLnN0YXJ0KSxuLmxlbmd0aCE9PWkmJihlLl9pRGlzcGxheUxlbmd0aD1uLmxlbmd0aCksbi5vcmRlciE9PWkmJihlLmFhU29ydGluZz1bXSx0LmVhY2gobi5vcmRlciwoZnVuY3Rpb24odCxuKXtlLmFhU29ydGluZy5wdXNoKG5bMF0+PXMubGVuZ3RoP1swLG5bMV1dOm4pfSkpKSxuLnNlYXJjaCE9PWkmJnQuZXh0ZW5kKGUub1ByZXZpb3VzU2VhcmNoLHR0KG4uc2VhcmNoKSksbi5jb2x1bW5zKWZvcihvPTAsYT1uLmNvbHVtbnMubGVuZ3RoO288YTtvKyspKGw9bi5jb2x1bW5zW29dKS52aXNpYmxlIT09aSYmKHNbb10uYlZpc2libGU9bC52aXNpYmxlKSxsLnNlYXJjaCE9PWkmJnQuZXh0ZW5kKGUuYW9QcmVTZWFyY2hDb2xzW29dLHR0KGwuc2VhcmNoKSk7TnQoZSwiYW9TdGF0ZUxvYWRlZCIsInN0YXRlTG9hZGVkIixbZSxuXSl9fXIoKX07aWYoZS5vRmVhdHVyZXMuYlN0YXRlU2F2ZSl7dmFyIGw9ZS5mblN0YXRlTG9hZENhbGxiYWNrLmNhbGwoZS5vSW5zdGFuY2UsZSxuKTtsIT09aSYmbihsKX1lbHNlIHIoKX1mdW5jdGlvbiBFdChlKXt2YXIgbj1WdC5zZXR0aW5ncztyZXR1cm4tMSE9PShlPXQuaW5BcnJheShlLHJlKG4sIm5UYWJsZSIpKSk/bltlXTpudWxsfWZ1bmN0aW9uIE10KHQsbixpLHIpe2lmKGk9IkRhdGFUYWJsZXMgd2FybmluZzogIisodD8idGFibGUgaWQ9Iit0LnNUYWJsZUlkKyIgLSAiOiIiKStpLHImJihpKz0iLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIGVycm9yLCBwbGVhc2Ugc2VlIGh0dHA6Ly9kYXRhdGFibGVzLm5ldC90bi8iK3IpLG4pZS5jb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coaSk7ZWxzZSBpZihuPShuPVZ0LmV4dCkuc0Vyck1vZGV8fG4uZXJyTW9kZSx0JiZOdCh0LG51bGwsImVycm9yIixbdCxyLGldKSwiYWxlcnQiPT1uKWFsZXJ0KGkpO2Vsc2V7aWYoInRocm93Ij09bil0aHJvdyBFcnJvcihpKTsiZnVuY3Rpb24iPT10eXBlb2YgbiYmbih0LHIsaSl9fWZ1bmN0aW9uIE90KGUsbixyLG8pe0FycmF5LmlzQXJyYXkocik/dC5lYWNoKHIsKGZ1bmN0aW9uKHQsaSl7QXJyYXkuaXNBcnJheShpKT9PdChlLG4saVswXSxpWzFdKTpPdChlLG4saSl9KSk6KG89PT1pJiYobz1yKSxuW3JdIT09aSYmKGVbb109bltyXSkpfWZ1bmN0aW9uIEl0KGUsbixpKXt2YXIgcixvO2ZvcihvIGluIG4pbi5oYXNPd25Qcm9wZXJ0eShvKSYmKHI9bltvXSx0LmlzUGxhaW5PYmplY3Qocik/KHQuaXNQbGFpbk9iamVjdChlW29dKXx8KGVbb109e30pLHQuZXh0ZW5kKCEwLGVbb10scikpOmVbb109aSYmImRhdGEiIT09byYmImFhRGF0YSIhPT1vJiZBcnJheS5pc0FycmF5KHIpP3Iuc2xpY2UoKTpyKTtyZXR1cm4gZX1mdW5jdGlvbiBQdChlLG4saSl7dChlKS5vbigiY2xpY2suRFQiLG4sKGZ1bmN0aW9uKG4pe3QoZSkudHJpZ2dlcigiYmx1ciIpLGkobil9KSkub24oImtleXByZXNzLkRUIixuLChmdW5jdGlvbih0KXsxMz09PXQud2hpY2gmJih0LnByZXZlbnREZWZhdWx0KCksaSh0KSl9KSkub24oInNlbGVjdHN0YXJ0LkRUIiwoZnVuY3Rpb24oKXtyZXR1cm4hMX0pKX1mdW5jdGlvbiBMdCh0LGUsbixpKXtuJiZ0W2VdLnB1c2goe2ZuOm4sc05hbWU6aX0pfWZ1bmN0aW9uIE50KGUsbixpLHIpe3ZhciBvPVtdO3JldHVybiBuJiYobz10Lm1hcChlW25dLnNsaWNlKCkucmV2ZXJzZSgpLChmdW5jdGlvbih0KXtyZXR1cm4gdC5mbi5hcHBseShlLm9JbnN0YW5jZSxyKX0pKSksbnVsbCE9PWkmJihuPXQuRXZlbnQoaSsiLmR0IiksdChlLm5UYWJsZSkudHJpZ2dlcihuLHIpLG8ucHVzaChuLnJlc3VsdCkpLG99ZnVuY3Rpb24gRnQodCl7dmFyIGU9dC5faURpc3BsYXlTdGFydCxuPXQuZm5EaXNwbGF5RW5kKCksaT10Ll9pRGlzcGxheUxlbmd0aDtlPj1uJiYoZT1uLWkpLGUtPWUlaSwoLTE9PT1pfHwwPmUpJiYoZT0wKSx0Ll9pRGlzcGxheVN0YXJ0PWV9ZnVuY3Rpb24gUnQoZSxuKXt2YXIgaT1lLnJlbmRlcmVyLHI9VnQuZXh0LnJlbmRlcmVyW25dO3JldHVybiB0LmlzUGxhaW5PYmplY3QoaSkmJmlbbl0/cltpW25dXXx8ci5fOiJzdHJpbmciPT10eXBlb2YgaSYmcltpXXx8ci5ffWZ1bmN0aW9uIGp0KHQpe3JldHVybiB0Lm9GZWF0dXJlcy5iU2VydmVyU2lkZT8ic3NwIjp0LmFqYXh8fHQuc0FqYXhTb3VyY2U/ImFqYXgiOiJkb20ifWZ1bmN0aW9uICR0KHQsZSl7dmFyIG49W10saT0obj1NZS5udW1iZXJzX2xlbmd0aCxNYXRoLmZsb29yKG4vMikpO3JldHVybiBlPD1uP249YWUoMCxlKTp0PD1pPygobj1hZSgwLG4tMikpLnB1c2goImVsbGlwc2lzIiksbi5wdXNoKGUtMSkpOih0Pj1lLTEtaT9uPWFlKGUtKG4tMiksZSk6KChuPWFlKHQtaSsyLHQraS0xKSkucHVzaCgiZWxsaXBzaXMiKSxuLnB1c2goZS0xKSksbi5zcGxpY2UoMCwwLCJlbGxpcHNpcyIpLG4uc3BsaWNlKDAsMCwwKSksbi5EVF9lbD0ic3BhbiIsbn1mdW5jdGlvbiB6dChlKXt0LmVhY2goe251bTpmdW5jdGlvbih0KXtyZXR1cm4gT2UodCxlKX0sIm51bS1mbXQiOmZ1bmN0aW9uKHQpe3JldHVybiBPZSh0LGUsSnQpfSwiaHRtbC1udW0iOmZ1bmN0aW9uKHQpe3JldHVybiBPZSh0LGUsWHQpfSwiaHRtbC1udW0tZm10IjpmdW5jdGlvbih0KXtyZXR1cm4gT2UodCxlLFh0LEp0KX19LChmdW5jdGlvbih0LG4pe0J0LnR5cGUub3JkZXJbdCtlKyItcHJlIl09bix0Lm1hdGNoKC9eaHRtbFwtLykmJihCdC50eXBlLnNlYXJjaFt0K2VdPUJ0LnR5cGUuc2VhcmNoLmh0bWwpfSkpfWZ1bmN0aW9uIEh0KHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPVtFdCh0aGlzW1Z0LmV4dC5pQXBpSW5kZXhdKV0uY29uY2F0KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykpO3JldHVybiBWdC5leHQuaW50ZXJuYWxbdF0uYXBwbHkodGhpcyxlKX19dmFyIEJ0LHF0LFd0LFV0LFZ0PWZ1bmN0aW9uKGUpe3RoaXMuJD1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmFwaSghMCkuJCh0LGUpfSx0aGlzLl89ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5hcGkoITApLnJvd3ModCxlKS5kYXRhKCl9LHRoaXMuYXBpPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgcXQodD9FdCh0aGlzW0J0LmlBcGlJbmRleF0pOnRoaXMpfSx0aGlzLmZuQWRkRGF0YT1mdW5jdGlvbihlLG4pe3ZhciByPXRoaXMuYXBpKCEwKSxvPUFycmF5LmlzQXJyYXkoZSkmJihBcnJheS5pc0FycmF5KGVbMF0pfHx0LmlzUGxhaW5PYmplY3QoZVswXSkpP3Iucm93cy5hZGQoZSk6ci5yb3cuYWRkKGUpO3JldHVybihuPT09aXx8bikmJnIuZHJhdygpLG8uZmxhdHRlbigpLnRvQXJyYXkoKX0sdGhpcy5mbkFkanVzdENvbHVtblNpemluZz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmFwaSghMCkuY29sdW1ucy5hZGp1c3QoKSxuPWUuc2V0dGluZ3MoKVswXSxyPW4ub1Njcm9sbDt0PT09aXx8dD9lLmRyYXcoITEpOigiIiE9PXIuc1h8fCIiIT09ci5zWSkmJmZ0KG4pfSx0aGlzLmZuQ2xlYXJUYWJsZT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmFwaSghMCkuY2xlYXIoKTsodD09PWl8fHQpJiZlLmRyYXcoKX0sdGhpcy5mbkNsb3NlPWZ1bmN0aW9uKHQpe3RoaXMuYXBpKCEwKS5yb3codCkuY2hpbGQuaGlkZSgpfSx0aGlzLmZuRGVsZXRlUm93PWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj10aGlzLmFwaSghMCksbz0odD1yLnJvd3ModCkpLnNldHRpbmdzKClbMF0sYT1vLmFvRGF0YVt0WzBdWzBdXTtyZXR1cm4gdC5yZW1vdmUoKSxlJiZlLmNhbGwodGhpcyxvLGEpLChuPT09aXx8bikmJnIuZHJhdygpLGF9LHRoaXMuZm5EZXN0cm95PWZ1bmN0aW9uKHQpe3RoaXMuYXBpKCEwKS5kZXN0cm95KHQpfSx0aGlzLmZuRHJhdz1mdW5jdGlvbih0KXt0aGlzLmFwaSghMCkuZHJhdyh0KX0sdGhpcy5mbkZpbHRlcj1mdW5jdGlvbih0LGUsbixyLG8sYSl7bz10aGlzLmFwaSghMCksbnVsbD09PWV8fGU9PT1pP28uc2VhcmNoKHQsbixyLGEpOm8uY29sdW1uKGUpLnNlYXJjaCh0LG4scixhKSxvLmRyYXcoKX0sdGhpcy5mbkdldERhdGE9ZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLmFwaSghMCk7aWYodCE9PWkpe3ZhciByPXQubm9kZU5hbWU/dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOiIiO3JldHVybiBlIT09aXx8InRkIj09cnx8InRoIj09cj9uLmNlbGwodCxlKS5kYXRhKCk6bi5yb3codCkuZGF0YSgpfHxudWxsfXJldHVybiBuLmRhdGEoKS50b0FycmF5KCl9LHRoaXMuZm5HZXROb2Rlcz1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmFwaSghMCk7cmV0dXJuIHQhPT1pP2Uucm93KHQpLm5vZGUoKTplLnJvd3MoKS5ub2RlcygpLmZsYXR0ZW4oKS50b0FycmF5KCl9LHRoaXMuZm5HZXRQb3NpdGlvbj1mdW5jdGlvbih0KXt2YXIgZT10aGlzLmFwaSghMCksbj10Lm5vZGVOYW1lLnRvVXBwZXJDYXNlKCk7cmV0dXJuIlRSIj09bj9lLnJvdyh0KS5pbmRleCgpOiJURCI9PW58fCJUSCI9PW4/Wyh0PWUuY2VsbCh0KS5pbmRleCgpKS5yb3csdC5jb2x1bW5WaXNpYmxlLHQuY29sdW1uXTpudWxsfSx0aGlzLmZuSXNPcGVuPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmFwaSghMCkucm93KHQpLmNoaWxkLmlzU2hvd24oKX0sdGhpcy5mbk9wZW49ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0aGlzLmFwaSghMCkucm93KHQpLmNoaWxkKGUsbikuc2hvdygpLmNoaWxkKClbMF19LHRoaXMuZm5QYWdlQ2hhbmdlPWZ1bmN0aW9uKHQsZSl7dmFyIG49dGhpcy5hcGkoITApLnBhZ2UodCk7KGU9PT1pfHxlKSYmbi5kcmF3KCExKX0sdGhpcy5mblNldENvbHVtblZpcz1mdW5jdGlvbih0LGUsbil7dD10aGlzLmFwaSghMCkuY29sdW1uKHQpLnZpc2libGUoZSksKG49PT1pfHxuKSYmdC5jb2x1bW5zLmFkanVzdCgpLmRyYXcoKX0sdGhpcy5mblNldHRpbmdzPWZ1bmN0aW9uKCl7cmV0dXJuIEV0KHRoaXNbQnQuaUFwaUluZGV4XSl9LHRoaXMuZm5Tb3J0PWZ1bmN0aW9uKHQpe3RoaXMuYXBpKCEwKS5vcmRlcih0KS5kcmF3KCl9LHRoaXMuZm5Tb3J0TGlzdGVuZXI9ZnVuY3Rpb24odCxlLG4pe3RoaXMuYXBpKCEwKS5vcmRlci5saXN0ZW5lcih0LGUsbil9LHRoaXMuZm5VcGRhdGU9ZnVuY3Rpb24odCxlLG4scixvKXt2YXIgYT10aGlzLmFwaSghMCk7cmV0dXJuIG49PT1pfHxudWxsPT09bj9hLnJvdyhlKS5kYXRhKHQpOmEuY2VsbChlLG4pLmRhdGEodCksKG89PT1pfHxvKSYmYS5jb2x1bW5zLmFkanVzdCgpLChyPT09aXx8cikmJmEuZHJhdygpLDB9LHRoaXMuZm5WZXJzaW9uQ2hlY2s9QnQuZm5WZXJzaW9uQ2hlY2s7dmFyIG49dGhpcyxyPWU9PT1pLHU9dGhpcy5sZW5ndGg7Zm9yKHZhciBmIGluIHImJihlPXt9KSx0aGlzLm9BcGk9dGhpcy5pbnRlcm5hbD1CdC5pbnRlcm5hbCxWdC5leHQuaW50ZXJuYWwpZiYmKHRoaXNbZl09SHQoZikpO3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7dmFyIGYscD17fSxnPTE8dT9JdChwLGUsITApOmUsbT0wLHY9KHA9dGhpcy5nZXRBdHRyaWJ1dGUoImlkIiksITEpLHk9VnQuZGVmYXVsdHMsXz10KHRoaXMpO2lmKCJ0YWJsZSIhPXRoaXMubm9kZU5hbWUudG9Mb3dlckNhc2UoKSlNdChudWxsLDAsIk5vbi10YWJsZSBub2RlIGluaXRpYWxpc2F0aW9uICgiK3RoaXMubm9kZU5hbWUrIikiLDIpO2Vsc2V7cyh5KSxsKHkuY29sdW1uKSxvKHkseSwhMCksbyh5LmNvbHVtbix5LmNvbHVtbiwhMCksbyh5LHQuZXh0ZW5kKGcsXy5kYXRhKCkpLCEwKTt2YXIgUz1WdC5zZXR0aW5nczttPTA7Zm9yKGY9Uy5sZW5ndGg7bTxmO20rKyl7dmFyIEM9U1ttXTtpZihDLm5UYWJsZT09dGhpc3x8Qy5uVEhlYWQmJkMublRIZWFkLnBhcmVudE5vZGU9PXRoaXN8fEMublRGb290JiZDLm5URm9vdC5wYXJlbnROb2RlPT10aGlzKXt2YXIgVD1nLmJSZXRyaWV2ZSE9PWk/Zy5iUmV0cmlldmU6eS5iUmV0cmlldmU7aWYocnx8VClyZXR1cm4gQy5vSW5zdGFuY2U7aWYoZy5iRGVzdHJveSE9PWk/Zy5iRGVzdHJveTp5LmJEZXN0cm95KXtDLm9JbnN0YW5jZS5mbkRlc3Ryb3koKTticmVha31yZXR1cm4gdm9pZCBNdChDLDAsIkNhbm5vdCByZWluaXRpYWxpc2UgRGF0YVRhYmxlIiwzKX1pZihDLnNUYWJsZUlkPT10aGlzLmlkKXtTLnNwbGljZShtLDEpO2JyZWFrfX1udWxsIT09cCYmIiIhPT1wfHwodGhpcy5pZD1wPSJEYXRhVGFibGVzX1RhYmxlXyIrVnQuZXh0Ll91bmlxdWUrKyk7dmFyIEE9dC5leHRlbmQoITAse30sVnQubW9kZWxzLm9TZXR0aW5ncyx7c0Rlc3Ryb3lXaWR0aDpfWzBdLnN0eWxlLndpZHRoLHNJbnN0YW5jZTpwLHNUYWJsZUlkOnB9KTtBLm5UYWJsZT10aGlzLEEub0FwaT1uLmludGVybmFsLEEub0luaXQ9ZyxTLnB1c2goQSksQS5vSW5zdGFuY2U9MT09PW4ubGVuZ3RoP246Xy5kYXRhVGFibGUoKSxzKGcpLGEoZy5vTGFuZ3VhZ2UpLGcuYUxlbmd0aE1lbnUmJiFnLmlEaXNwbGF5TGVuZ3RoJiYoZy5pRGlzcGxheUxlbmd0aD1BcnJheS5pc0FycmF5KGcuYUxlbmd0aE1lbnVbMF0pP2cuYUxlbmd0aE1lbnVbMF1bMF06Zy5hTGVuZ3RoTWVudVswXSksZz1JdCh0LmV4dGVuZCghMCx7fSx5KSxnKSxPdChBLm9GZWF0dXJlcyxnLCJiUGFnaW5hdGUgYkxlbmd0aENoYW5nZSBiRmlsdGVyIGJTb3J0IGJTb3J0TXVsdGkgYkluZm8gYlByb2Nlc3NpbmcgYkF1dG9XaWR0aCBiU29ydENsYXNzZXMgYlNlcnZlclNpZGUgYkRlZmVyUmVuZGVyIi5zcGxpdCgiICIpKSxPdChBLGcsWyJhc1N0cmlwZUNsYXNzZXMiLCJhamF4IiwiZm5TZXJ2ZXJEYXRhIiwiZm5Gb3JtYXROdW1iZXIiLCJzU2VydmVyTWV0aG9kIiwiYWFTb3J0aW5nIiwiYWFTb3J0aW5nRml4ZWQiLCJhTGVuZ3RoTWVudSIsInNQYWdpbmF0aW9uVHlwZSIsInNBamF4U291cmNlIiwic0FqYXhEYXRhUHJvcCIsImlTdGF0ZUR1cmF0aW9uIiwic0RvbSIsImJTb3J0Q2VsbHNUb3AiLCJpVGFiSW5kZXgiLCJmblN0YXRlTG9hZENhbGxiYWNrIiwiZm5TdGF0ZVNhdmVDYWxsYmFjayIsInJlbmRlcmVyIiwic2VhcmNoRGVsYXkiLCJyb3dJZCIsWyJpQ29va2llRHVyYXRpb24iLCJpU3RhdGVEdXJhdGlvbiJdLFsib1NlYXJjaCIsIm9QcmV2aW91c1NlYXJjaCJdLFsiYW9TZWFyY2hDb2xzIiwiYW9QcmVTZWFyY2hDb2xzIl0sWyJpRGlzcGxheUxlbmd0aCIsIl9pRGlzcGxheUxlbmd0aCJdXSksT3QoQS5vU2Nyb2xsLGcsW1sic1Njcm9sbFgiLCJzWCJdLFsic1Njcm9sbFhJbm5lciIsInNYSW5uZXIiXSxbInNTY3JvbGxZIiwic1kiXSxbImJTY3JvbGxDb2xsYXBzZSIsImJDb2xsYXBzZSJdXSksT3QoQS5vTGFuZ3VhZ2UsZywiZm5JbmZvQ2FsbGJhY2siKSxMdChBLCJhb0RyYXdDYWxsYmFjayIsZy5mbkRyYXdDYWxsYmFjaywidXNlciIpLEx0KEEsImFvU2VydmVyUGFyYW1zIixnLmZuU2VydmVyUGFyYW1zLCJ1c2VyIiksTHQoQSwiYW9TdGF0ZVNhdmVQYXJhbXMiLGcuZm5TdGF0ZVNhdmVQYXJhbXMsInVzZXIiKSxMdChBLCJhb1N0YXRlTG9hZFBhcmFtcyIsZy5mblN0YXRlTG9hZFBhcmFtcywidXNlciIpLEx0KEEsImFvU3RhdGVMb2FkZWQiLGcuZm5TdGF0ZUxvYWRlZCwidXNlciIpLEx0KEEsImFvUm93Q2FsbGJhY2siLGcuZm5Sb3dDYWxsYmFjaywidXNlciIpLEx0KEEsImFvUm93Q3JlYXRlZENhbGxiYWNrIixnLmZuQ3JlYXRlZFJvdywidXNlciIpLEx0KEEsImFvSGVhZGVyQ2FsbGJhY2siLGcuZm5IZWFkZXJDYWxsYmFjaywidXNlciIpLEx0KEEsImFvRm9vdGVyQ2FsbGJhY2siLGcuZm5Gb290ZXJDYWxsYmFjaywidXNlciIpLEx0KEEsImFvSW5pdENvbXBsZXRlIixnLmZuSW5pdENvbXBsZXRlLCJ1c2VyIiksTHQoQSwiYW9QcmVEcmF3Q2FsbGJhY2siLGcuZm5QcmVEcmF3Q2FsbGJhY2ssInVzZXIiKSxBLnJvd0lkRm49ayhnLnJvd0lkKSxjKEEpO3ZhciBEPUEub0NsYXNzZXM7dC5leHRlbmQoRCxWdC5leHQuY2xhc3NlcyxnLm9DbGFzc2VzKSxfLmFkZENsYXNzKEQuc1RhYmxlKSxBLmlJbml0RGlzcGxheVN0YXJ0PT09aSYmKEEuaUluaXREaXNwbGF5U3RhcnQ9Zy5pRGlzcGxheVN0YXJ0LEEuX2lEaXNwbGF5U3RhcnQ9Zy5pRGlzcGxheVN0YXJ0KSxudWxsIT09Zy5pRGVmZXJMb2FkaW5nJiYoQS5iRGVmZXJMb2FkaW5nPSEwLHA9QXJyYXkuaXNBcnJheShnLmlEZWZlckxvYWRpbmcpLEEuX2lSZWNvcmRzRGlzcGxheT1wP2cuaURlZmVyTG9hZGluZ1swXTpnLmlEZWZlckxvYWRpbmcsQS5faVJlY29yZHNUb3RhbD1wP2cuaURlZmVyTG9hZGluZ1sxXTpnLmlEZWZlckxvYWRpbmcpO3ZhciBFPUEub0xhbmd1YWdlO3QuZXh0ZW5kKCEwLEUsZy5vTGFuZ3VhZ2UpLEUuc1VybCYmKHQuYWpheCh7ZGF0YVR5cGU6Impzb24iLHVybDpFLnNVcmwsc3VjY2VzczpmdW5jdGlvbihlKXthKGUpLG8oeS5vTGFuZ3VhZ2UsZSksdC5leHRlbmQoITAsRSxlKSxydChBKX0sZXJyb3I6ZnVuY3Rpb24oKXtydChBKX19KSx2PSEwKSxudWxsPT09Zy5hc1N0cmlwZUNsYXNzZXMmJihBLmFzU3RyaXBlQ2xhc3Nlcz1bRC5zU3RyaXBlT2RkLEQuc1N0cmlwZUV2ZW5dKTtwPUEuYXNTdHJpcGVDbGFzc2VzO3ZhciBNPV8uY2hpbGRyZW4oInRib2R5IikuZmluZCgidHIiKS5lcSgwKTtpZigtMSE9PXQuaW5BcnJheSghMCx0Lm1hcChwLChmdW5jdGlvbih0KXtyZXR1cm4gTS5oYXNDbGFzcyh0KX0pKSkmJih0KCJ0Ym9keSB0ciIsdGhpcykucmVtb3ZlQ2xhc3MocC5qb2luKCIgIikpLEEuYXNEZXN0cm95U3RyaXBlcz1wLnNsaWNlKCkpLHA9W10sMCE9PShTPXRoaXMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRoZWFkIikpLmxlbmd0aCYmKCQoQS5hb0hlYWRlcixTWzBdKSxwPXooQSkpLG51bGw9PT1nLmFvQ29sdW1ucylmb3IoUz1bXSxtPTAsZj1wLmxlbmd0aDttPGY7bSsrKVMucHVzaChudWxsKTtlbHNlIFM9Zy5hb0NvbHVtbnM7Zm9yKG09MCxmPVMubGVuZ3RoO208ZjttKyspZChBLHA/cFttXTpudWxsKTtpZihiKEEsZy5hb0NvbHVtbkRlZnMsUywoZnVuY3Rpb24odCxlKXtoKEEsdCxlKX0pKSxNLmxlbmd0aCl7dmFyIE89ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbCE9PXQuZ2V0QXR0cmlidXRlKCJkYXRhLSIrZSk/ZTpudWxsfTt0KE1bMF0pLmNoaWxkcmVuKCJ0aCwgdGQiKS5lYWNoKChmdW5jdGlvbih0LGUpe3ZhciBuPUEuYW9Db2x1bW5zW3RdO2lmKG4ubURhdGE9PT10KXt2YXIgcj1PKGUsInNvcnQiKXx8TyhlLCJvcmRlciIpLG89TyhlLCJmaWx0ZXIiKXx8TyhlLCJzZWFyY2giKTtudWxsPT09ciYmbnVsbD09PW98fChuLm1EYXRhPXtfOnQrIi5kaXNwbGF5Iixzb3J0Om51bGwhPT1yP3QrIi5AZGF0YS0iK3I6aSx0eXBlOm51bGwhPT1yP3QrIi5AZGF0YS0iK3I6aSxmaWx0ZXI6bnVsbCE9PW8/dCsiLkBkYXRhLSIrbzppfSxoKEEsdCkpfX0pKX12YXIgST1BLm9GZWF0dXJlcztwPWZ1bmN0aW9uKCl7aWYoZy5hYVNvcnRpbmc9PT1pKXt2YXIgZT1BLmFhU29ydGluZztmb3IobT0wLGY9ZS5sZW5ndGg7bTxmO20rKyllW21dWzFdPUEuYW9Db2x1bW5zW21dLmFzU29ydGluZ1swXX1rdChBKSxJLmJTb3J0JiZMdChBLCJhb0RyYXdDYWxsYmFjayIsKGZ1bmN0aW9uKCl7aWYoQS5iU29ydGVkKXt2YXIgZT13dChBKSxuPXt9O3QuZWFjaChlLChmdW5jdGlvbih0LGUpe25bZS5zcmNdPWUuZGlyfSkpLE50KEEsbnVsbCwib3JkZXIiLFtBLGUsbl0pLF90KEEpfX0pKSxMdChBLCJhb0RyYXdDYWxsYmFjayIsKGZ1bmN0aW9uKCl7KEEuYlNvcnRlZHx8InNzcCI9PT1qdChBKXx8SS5iRGVmZXJSZW5kZXIpJiZrdChBKX0pLCJzYyIpO2U9Xy5jaGlsZHJlbigiY2FwdGlvbiIpLmVhY2goKGZ1bmN0aW9uKCl7dGhpcy5fY2FwdGlvblNpZGU9dCh0aGlzKS5jc3MoImNhcHRpb24tc2lkZSIpfSkpO3ZhciBuPV8uY2hpbGRyZW4oInRoZWFkIik7aWYoMD09PW4ubGVuZ3RoJiYobj10KCI8dGhlYWQvPiIpLmFwcGVuZFRvKF8pKSxBLm5USGVhZD1uWzBdLDA9PT0obj1fLmNoaWxkcmVuKCJ0Ym9keSIpKS5sZW5ndGgmJihuPXQoIjx0Ym9keS8+IikuYXBwZW5kVG8oXykpLEEublRCb2R5PW5bMF0sMD09PShuPV8uY2hpbGRyZW4oInRmb290IikpLmxlbmd0aCYmZS5sZW5ndGg+MCYmKCIiIT09QS5vU2Nyb2xsLnNYfHwiIiE9PUEub1Njcm9sbC5zWSkmJihuPXQoIjx0Zm9vdC8+IikuYXBwZW5kVG8oXykpLDA9PT1uLmxlbmd0aHx8MD09PW4uY2hpbGRyZW4oKS5sZW5ndGg/Xy5hZGRDbGFzcyhELnNOb0Zvb3Rlcik6bi5sZW5ndGg+MCYmKEEublRGb290PW5bMF0sJChBLmFvRm9vdGVyLEEublRGb290KSksZy5hYURhdGEpZm9yKG09MDttPGcuYWFEYXRhLmxlbmd0aDttKyspdyhBLGcuYWFEYXRhW21dKTtlbHNlKEEuYkRlZmVyTG9hZGluZ3x8ImRvbSI9PWp0KEEpKSYmeChBLHQoQS5uVEJvZHkpLmNoaWxkcmVuKCJ0ciIpKTtBLmFpRGlzcGxheT1BLmFpRGlzcGxheU1hc3Rlci5zbGljZSgpLEEuYkluaXRpYWxpc2VkPSEwLCExPT09diYmcnQoQSl9O2cuYlN0YXRlU2F2ZT8oSS5iU3RhdGVTYXZlPSEwLEx0KEEsImFvRHJhd0NhbGxiYWNrIixBdCwic3RhdGVfc2F2ZSIpLER0KEEsZyxwKSk6cCgpfX0pKSxuPW51bGwsdGhpc30sWXQ9e30sR3Q9L1tcclxuXHUyMDI4XS9nLFh0PS88Lio/Pi9nLFF0PS9eXGR7Miw0fVtcLlwvXC1dXGR7MSwyfVtcLlwvXC1dXGR7MSwyfShbVCBdezF9XGR7MSwyfVs6XC5dXGR7Mn0oW1wuOl1cZHsyfSk/KT8kLyxLdD1SZWdFeHAoIihcXC98XFwufFxcKnxcXCt8XFw/fFxcfHxcXCh8XFwpfFxcW3xcXF18XFx7fFxcfXxcXFxcfFxcJHxcXF58XFwtKSIsImciKSxKdD0vWydcdTAwQTAsJMKj4oKswqUlXHUyMDA5XHUyMDJGXHUyMEJEXHUyMGE5XHUyMEJBcmZryYPOnl0vZ2ksWnQ9ZnVuY3Rpb24odCl7cmV0dXJuIXR8fCEwPT09dHx8Ii0iPT09dH0sdGU9ZnVuY3Rpb24odCl7dmFyIGU9cGFyc2VJbnQodCwxMCk7cmV0dXJuIWlzTmFOKGUpJiZpc0Zpbml0ZSh0KT9lOm51bGx9LGVlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFl0W2VdfHwoWXRbZV09UmVnRXhwKGZlKGUpLCJnIikpLCJzdHJpbmciPT10eXBlb2YgdCYmIi4iIT09ZT90LnJlcGxhY2UoL1wuL2csIiIpLnJlcGxhY2UoWXRbZV0sIi4iKTp0fSxuZT1mdW5jdGlvbih0LGUsbil7dmFyIGk9InN0cmluZyI9PXR5cGVvZiB0O3JldHVybiEhWnQodCl8fChlJiZpJiYodD1lZSh0LGUpKSxuJiZpJiYodD10LnJlcGxhY2UoSnQsIiIpKSwhaXNOYU4ocGFyc2VGbG9hdCh0KSkmJmlzRmluaXRlKHQpKX0saWU9ZnVuY3Rpb24odCxlLG4pe3JldHVybiEhWnQodCl8fCgoWnQodCl8fCJzdHJpbmciPT10eXBlb2YgdCkmJiEhbmUodC5yZXBsYWNlKFh0LCIiKSxlLG4pfHxudWxsKX0scmU9ZnVuY3Rpb24odCxlLG4pe3ZhciByPVtdLG89MCxhPXQubGVuZ3RoO2lmKG4hPT1pKWZvcig7bzxhO28rKyl0W29dJiZ0W29dW2VdJiZyLnB1c2godFtvXVtlXVtuXSk7ZWxzZSBmb3IoO288YTtvKyspdFtvXSYmci5wdXNoKHRbb11bZV0pO3JldHVybiByfSxvZT1mdW5jdGlvbih0LGUsbixyKXt2YXIgbz1bXSxhPTAscz1lLmxlbmd0aDtpZihyIT09aSlmb3IoO2E8czthKyspdFtlW2FdXVtuXSYmby5wdXNoKHRbZVthXV1bbl1bcl0pO2Vsc2UgZm9yKDthPHM7YSsrKW8ucHVzaCh0W2VbYV1dW25dKTtyZXR1cm4gb30sYWU9ZnVuY3Rpb24odCxlKXt2YXIgbixyPVtdO2U9PT1pPyhlPTAsbj10KToobj1lLGU9dCk7Zm9yKHZhciBvPWU7bzxuO28rKylyLnB1c2gobyk7cmV0dXJuIHJ9LHNlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1bXSxuPTAsaT10Lmxlbmd0aDtuPGk7bisrKXRbbl0mJmUucHVzaCh0W25dKTtyZXR1cm4gZX0sbGU9ZnVuY3Rpb24odCl7dmFyIGU7dDp7aWYoISgyPnQubGVuZ3RoKSlmb3IodmFyIG49KGU9dC5zbGljZSgpLnNvcnQoKSlbMF0saT0xLHI9ZS5sZW5ndGg7aTxyO2krKyl7aWYoZVtpXT09PW4pe2U9ITE7YnJlYWsgdH1uPWVbaV19ZT0hMH1pZihlKXJldHVybiB0LnNsaWNlKCk7ZT1bXTtyPXQubGVuZ3RoO3ZhciBvLGE9MDtpPTA7dDpmb3IoO2k8cjtpKyspe2ZvcihuPXRbaV0sbz0wO288YTtvKyspaWYoZVtvXT09PW4pY29udGludWUgdDtlLnB1c2gobiksYSsrfXJldHVybiBlfSxjZT1mdW5jdGlvbih0LGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspY2UodCxlW25dKTtlbHNlIHQucHVzaChlKTtyZXR1cm4gdH07QXJyYXkuaXNBcnJheXx8KEFycmF5LmlzQXJyYXk9ZnVuY3Rpb24odCl7cmV0dXJuIltvYmplY3QgQXJyYXldIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KX0pLFN0cmluZy5wcm90b3R5cGUudHJpbXx8KFN0cmluZy5wcm90b3R5cGUudHJpbT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlcGxhY2UoL15bXHNcdUZFRkZceEEwXSt8W1xzXHVGRUZGXHhBMF0rJC9nLCIiKX0pLFZ0LnV0aWw9e3Rocm90dGxlOmZ1bmN0aW9uKHQsZSl7dmFyIG4scixvPWUhPT1pP2U6MjAwO3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXRoaXMsYT0rbmV3IERhdGUscz1hcmd1bWVudHM7biYmYTxuK28/KGNsZWFyVGltZW91dChyKSxyPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7bj1pLHQuYXBwbHkoZSxzKX0pLG8pKToobj1hLHQuYXBwbHkoZSxzKSl9fSxlc2NhcGVSZWdleDpmdW5jdGlvbih0KXtyZXR1cm4gdC5yZXBsYWNlKEt0LCJcXCQxIil9fTt2YXIgdWU9ZnVuY3Rpb24odCxlLG4pe3RbZV0hPT1pJiYodFtuXT10W2VdKX0sZGU9L1xbLio/XF0kLyxoZT0vXChcKSQvLGZlPVZ0LnV0aWwuZXNjYXBlUmVnZXgscGU9dCgiPGRpdj4iKVswXSxnZT1wZS50ZXh0Q29udGVudCE9PWksbWU9LzwuKj8+L2csdmU9VnQudXRpbC50aHJvdHRsZSx5ZT1bXSxiZT1BcnJheS5wcm90b3R5cGU7cXQ9ZnVuY3Rpb24oZSxuKXtpZighKHRoaXMgaW5zdGFuY2VvZiBxdCkpcmV0dXJuIG5ldyBxdChlLG4pO3ZhciBpPVtdLHI9ZnVuY3Rpb24oZSl7KGU9ZnVuY3Rpb24oZSl7dmFyIG4saSxyPVZ0LnNldHRpbmdzLG89dC5tYXAociwoZnVuY3Rpb24odCl7cmV0dXJuIHQublRhYmxlfSkpO3JldHVybiBlP2UublRhYmxlJiZlLm9BcGk/W2VdOmUubm9kZU5hbWUmJiJ0YWJsZSI9PT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk/LTEhPT0obj10LmluQXJyYXkoZSxvKSk/W3Jbbl1dOm51bGw6ZSYmImZ1bmN0aW9uIj09dHlwZW9mIGUuc2V0dGluZ3M/ZS5zZXR0aW5ncygpLnRvQXJyYXkoKTooInN0cmluZyI9PXR5cGVvZiBlP2k9dChlKTplIGluc3RhbmNlb2YgdCYmKGk9ZSksaT9pLm1hcCgoZnVuY3Rpb24oKXtyZXR1cm4tMSE9PShuPXQuaW5BcnJheSh0aGlzLG8pKT9yW25dOm51bGx9KSkudG9BcnJheSgpOnZvaWQgMCk6W119KGUpKSYmaS5wdXNoLmFwcGx5KGksZSl9O2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKHZhciBvPTAsYT1lLmxlbmd0aDtvPGE7bysrKXIoZVtvXSk7ZWxzZSByKGUpO3RoaXMuY29udGV4dD1sZShpKSxuJiZ0Lm1lcmdlKHRoaXMsbiksdGhpcy5zZWxlY3Rvcj17cm93czpudWxsLGNvbHM6bnVsbCxvcHRzOm51bGx9LHF0LmV4dGVuZCh0aGlzLHRoaXMseWUpfSxWdC5BcGk9cXQsdC5leHRlbmQocXQucHJvdG90eXBlLHthbnk6ZnVuY3Rpb24oKXtyZXR1cm4gMCE9PXRoaXMuY291bnQoKX0sY29uY2F0OmJlLmNvbmNhdCxjb250ZXh0OltdLGNvdW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmxhdHRlbigpLmxlbmd0aH0sZWFjaDpmdW5jdGlvbih0KXtmb3IodmFyIGU9MCxuPXRoaXMubGVuZ3RoO2U8bjtlKyspdC5jYWxsKHRoaXMsdGhpc1tlXSxlLHRoaXMpO3JldHVybiB0aGlzfSxlcTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmNvbnRleHQ7cmV0dXJuIGUubGVuZ3RoPnQ/bmV3IHF0KGVbdF0sdGhpc1t0XSk6bnVsbH0sZmlsdGVyOmZ1bmN0aW9uKHQpe3ZhciBlPVtdO2lmKGJlLmZpbHRlcillPWJlLmZpbHRlci5jYWxsKHRoaXMsdCx0aGlzKTtlbHNlIGZvcih2YXIgbj0wLGk9dGhpcy5sZW5ndGg7bjxpO24rKyl0LmNhbGwodGhpcyx0aGlzW25dLG4sdGhpcykmJmUucHVzaCh0aGlzW25dKTtyZXR1cm4gbmV3IHF0KHRoaXMuY29udGV4dCxlKX0sZmxhdHRlbjpmdW5jdGlvbigpe3ZhciB0PVtdO3JldHVybiBuZXcgcXQodGhpcy5jb250ZXh0LHQuY29uY2F0LmFwcGx5KHQsdGhpcy50b0FycmF5KCkpKX0sam9pbjpiZS5qb2luLGluZGV4T2Y6YmUuaW5kZXhPZnx8ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49ZXx8MCxpPXRoaXMubGVuZ3RoO248aTtuKyspaWYodGhpc1tuXT09PXQpcmV0dXJuIG47cmV0dXJuLTF9LGl0ZXJhdG9yOmZ1bmN0aW9uKHQsZSxuLHIpe3ZhciBvLGEscyxsLGMsdSxkLGg9W10sZj10aGlzLmNvbnRleHQscD10aGlzLnNlbGVjdG9yO2Zvcigic3RyaW5nIj09dHlwZW9mIHQmJihyPW4sbj1lLGU9dCx0PSExKSxhPTAscz1mLmxlbmd0aDthPHM7YSsrKXt2YXIgZz1uZXcgcXQoZlthXSk7aWYoInRhYmxlIj09PWUpKG89bi5jYWxsKGcsZlthXSxhKSkhPT1pJiZoLnB1c2gobyk7ZWxzZSBpZigiY29sdW1ucyI9PT1lfHwicm93cyI9PT1lKShvPW4uY2FsbChnLGZbYV0sdGhpc1thXSxhKSkhPT1pJiZoLnB1c2gobyk7ZWxzZSBpZigiY29sdW1uIj09PWV8fCJjb2x1bW4tcm93cyI9PT1lfHwicm93Ij09PWV8fCJjZWxsIj09PWUpZm9yKGQ9dGhpc1thXSwiY29sdW1uLXJvd3MiPT09ZSYmKHU9a2UoZlthXSxwLm9wdHMpKSxsPTAsYz1kLmxlbmd0aDtsPGM7bCsrKW89ZFtsXSwobz0iY2VsbCI9PT1lP24uY2FsbChnLGZbYV0sby5yb3csby5jb2x1bW4sYSxsKTpuLmNhbGwoZyxmW2FdLG8sYSxsLHUpKSE9PWkmJmgucHVzaChvKX1yZXR1cm4gaC5sZW5ndGh8fHI/KChlPSh0PW5ldyBxdChmLHQ/aC5jb25jYXQuYXBwbHkoW10saCk6aCkpLnNlbGVjdG9yKS5yb3dzPXAucm93cyxlLmNvbHM9cC5jb2xzLGUub3B0cz1wLm9wdHMsdCk6dGhpc30sbGFzdEluZGV4T2Y6YmUubGFzdEluZGV4T2Z8fGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuaW5kZXhPZi5hcHBseSh0aGlzLnRvQXJyYXkucmV2ZXJzZSgpLGFyZ3VtZW50cyl9LGxlbmd0aDowLG1hcDpmdW5jdGlvbih0KXt2YXIgZT1bXTtpZihiZS5tYXApZT1iZS5tYXAuY2FsbCh0aGlzLHQsdGhpcyk7ZWxzZSBmb3IodmFyIG49MCxpPXRoaXMubGVuZ3RoO248aTtuKyspZS5wdXNoKHQuY2FsbCh0aGlzLHRoaXNbbl0sbikpO3JldHVybiBuZXcgcXQodGhpcy5jb250ZXh0LGUpfSxwbHVjazpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiBlW3RdfSkpfSxwb3A6YmUucG9wLHB1c2g6YmUucHVzaCxyZWR1Y2U6YmUucmVkdWNlfHxmdW5jdGlvbih0LGUpe3JldHVybiB1KHRoaXMsdCxlLDAsdGhpcy5sZW5ndGgsMSl9LHJlZHVjZVJpZ2h0OmJlLnJlZHVjZVJpZ2h0fHxmdW5jdGlvbih0LGUpe3JldHVybiB1KHRoaXMsdCxlLHRoaXMubGVuZ3RoLTEsLTEsLTEpfSxyZXZlcnNlOmJlLnJldmVyc2Usc2VsZWN0b3I6bnVsbCxzaGlmdDpiZS5zaGlmdCxzbGljZTpmdW5jdGlvbigpe3JldHVybiBuZXcgcXQodGhpcy5jb250ZXh0LHRoaXMpfSxzb3J0OmJlLnNvcnQsc3BsaWNlOmJlLnNwbGljZSx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIGJlLnNsaWNlLmNhbGwodGhpcyl9LHRvJDpmdW5jdGlvbigpe3JldHVybiB0KHRoaXMpfSx0b0pRdWVyeTpmdW5jdGlvbigpe3JldHVybiB0KHRoaXMpfSx1bmlxdWU6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHF0KHRoaXMuY29udGV4dCxsZSh0aGlzKSl9LHVuc2hpZnQ6YmUudW5zaGlmdH0pLHF0LmV4dGVuZD1mdW5jdGlvbih0LGUsbil7aWYobi5sZW5ndGgmJmUmJihlIGluc3RhbmNlb2YgcXR8fGUuX19kdF93cmFwcGVyKSl7dmFyIGkscixvLGE9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBmdW5jdGlvbigpe3ZhciBpPWUuYXBwbHkodCxhcmd1bWVudHMpO3JldHVybiBxdC5leHRlbmQoaSxpLG4ubWV0aG9kRXh0KSxpfX07Zm9yKGk9MCxyPW4ubGVuZ3RoO2k8cjtpKyspZVsobz1uW2ldKS5uYW1lXT0iZnVuY3Rpb24iPT09by50eXBlP2EodCxvLnZhbCxvKToib2JqZWN0Ij09PW8udHlwZT97fTpvLnZhbCxlW28ubmFtZV0uX19kdF93cmFwcGVyPSEwLHF0LmV4dGVuZCh0LGVbby5uYW1lXSxvLnByb3BFeHQpfX0scXQucmVnaXN0ZXI9V3Q9ZnVuY3Rpb24oZSxuKXtpZihBcnJheS5pc0FycmF5KGUpKWZvcih2YXIgaT0wLHI9ZS5sZW5ndGg7aTxyO2krKylxdC5yZWdpc3RlcihlW2ldLG4pO2Vsc2V7dmFyIG8sYSxzPWUuc3BsaXQoIi4iKSxsPXllO2ZvcihpPTAscj1zLmxlbmd0aDtpPHI7aSsrKXt2YXIgYztvPShhPS0xIT09c1tpXS5pbmRleE9mKCIoKSIpKT9zW2ldLnJlcGxhY2UoIigpIiwiIik6c1tpXTt0OntjPTA7Zm9yKHZhciB1PWwubGVuZ3RoO2M8dTtjKyspaWYobFtjXS5uYW1lPT09byl7Yz1sW2NdO2JyZWFrIHR9Yz1udWxsfWN8fChjPXtuYW1lOm8sdmFsOnt9LG1ldGhvZEV4dDpbXSxwcm9wRXh0OltdLHR5cGU6Im9iamVjdCJ9LGwucHVzaChjKSksaT09PXItMT8oYy52YWw9bixjLnR5cGU9ImZ1bmN0aW9uIj09dHlwZW9mIG4/ImZ1bmN0aW9uIjp0LmlzUGxhaW5PYmplY3Qobik/Im9iamVjdCI6Im90aGVyIik6bD1hP2MubWV0aG9kRXh0OmMucHJvcEV4dH19fSxxdC5yZWdpc3RlclBsdXJhbD1VdD1mdW5jdGlvbih0LGUsbil7cXQucmVnaXN0ZXIodCxuKSxxdC5yZWdpc3RlcihlLChmdW5jdGlvbigpe3ZhciB0PW4uYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiB0PT09dGhpcz90aGlzOnQgaW5zdGFuY2VvZiBxdD90Lmxlbmd0aD9BcnJheS5pc0FycmF5KHRbMF0pP25ldyBxdCh0LmNvbnRleHQsdFswXSk6dFswXTppOnR9KSl9O3ZhciB3ZT1mdW5jdGlvbihlLG4pe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIHQubWFwKGUsKGZ1bmN0aW9uKHQpe3JldHVybiB3ZSh0LG4pfSkpO2lmKCJudW1iZXIiPT10eXBlb2YgZSlyZXR1cm5bbltlXV07dmFyIGk9dC5tYXAobiwoZnVuY3Rpb24odCl7cmV0dXJuIHQublRhYmxlfSkpO3JldHVybiB0KGkpLmZpbHRlcihlKS5tYXAoKGZ1bmN0aW9uKCl7dmFyIGU9dC5pbkFycmF5KHRoaXMsaSk7cmV0dXJuIG5bZV19KSkudG9BcnJheSgpfTtXdCgidGFibGVzKCkiLChmdW5jdGlvbih0KXtyZXR1cm4gdCE9PWkmJm51bGwhPT10P25ldyBxdCh3ZSh0LHRoaXMuY29udGV4dCkpOnRoaXN9KSksV3QoInRhYmxlKCkiLChmdW5jdGlvbih0KXt2YXIgZT0odD10aGlzLnRhYmxlcyh0KSkuY29udGV4dDtyZXR1cm4gZS5sZW5ndGg/bmV3IHF0KGVbMF0pOnR9KSksVXQoInRhYmxlcygpLm5vZGVzKCkiLCJ0YWJsZSgpLm5vZGUoKSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoInRhYmxlIiwoZnVuY3Rpb24odCl7cmV0dXJuIHQublRhYmxlfSksMSl9KSksVXQoInRhYmxlcygpLmJvZHkoKSIsInRhYmxlKCkuYm9keSgpIiwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigidGFibGUiLChmdW5jdGlvbih0KXtyZXR1cm4gdC5uVEJvZHl9KSwxKX0pKSxVdCgidGFibGVzKCkuaGVhZGVyKCkiLCJ0YWJsZSgpLmhlYWRlcigpIiwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigidGFibGUiLChmdW5jdGlvbih0KXtyZXR1cm4gdC5uVEhlYWR9KSwxKX0pKSxVdCgidGFibGVzKCkuZm9vdGVyKCkiLCJ0YWJsZSgpLmZvb3RlcigpIiwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigidGFibGUiLChmdW5jdGlvbih0KXtyZXR1cm4gdC5uVEZvb3R9KSwxKX0pKSxVdCgidGFibGVzKCkuY29udGFpbmVycygpIiwidGFibGUoKS5jb250YWluZXIoKSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoInRhYmxlIiwoZnVuY3Rpb24odCl7cmV0dXJuIHQublRhYmxlV3JhcHBlcn0pLDEpfSkpLFd0KCJkcmF3KCkiLChmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pdGVyYXRvcigidGFibGUiLChmdW5jdGlvbihlKXsicGFnZSI9PT10P0YoZSk6KCJzdHJpbmciPT10eXBlb2YgdCYmKHQ9ImZ1bGwtaG9sZCIhPT10KSxSKGUsITE9PT10KSl9KSl9KSksV3QoInBhZ2UoKSIsKGZ1bmN0aW9uKHQpe3JldHVybiB0PT09aT90aGlzLnBhZ2UuaW5mbygpLnBhZ2U6dGhpcy5pdGVyYXRvcigidGFibGUiLChmdW5jdGlvbihlKXtjdChlLHQpfSkpfSkpLFd0KCJwYWdlLmluZm8oKSIsKGZ1bmN0aW9uKCl7aWYoMD09PXRoaXMuY29udGV4dC5sZW5ndGgpcmV0dXJuIGk7dmFyIHQ9dGhpcy5jb250ZXh0WzBdLGU9dC5faURpc3BsYXlTdGFydCxuPXQub0ZlYXR1cmVzLmJQYWdpbmF0ZT90Ll9pRGlzcGxheUxlbmd0aDotMSxyPXQuZm5SZWNvcmRzRGlzcGxheSgpLG89LTE9PT1uO3JldHVybntwYWdlOm8/MDpNYXRoLmZsb29yKGUvbikscGFnZXM6bz8xOk1hdGguY2VpbChyL24pLHN0YXJ0OmUsZW5kOnQuZm5EaXNwbGF5RW5kKCksbGVuZ3RoOm4scmVjb3Jkc1RvdGFsOnQuZm5SZWNvcmRzVG90YWwoKSxyZWNvcmRzRGlzcGxheTpyLHNlcnZlclNpZGU6InNzcCI9PT1qdCh0KX19KSksV3QoInBhZ2UubGVuKCkiLChmdW5jdGlvbih0KXtyZXR1cm4gdD09PWk/MCE9PXRoaXMuY29udGV4dC5sZW5ndGg/dGhpcy5jb250ZXh0WzBdLl9pRGlzcGxheUxlbmd0aDppOnRoaXMuaXRlcmF0b3IoInRhYmxlIiwoZnVuY3Rpb24oZSl7YXQoZSx0KX0pKX0pKTt2YXIgeGU9ZnVuY3Rpb24odCxlLG4pe2lmKG4pe3ZhciBpPW5ldyBxdCh0KTtpLm9uZSgiZHJhdyIsKGZ1bmN0aW9uKCl7bihpLmFqYXguanNvbigpKX0pKX1pZigic3NwIj09anQodCkpUih0LGUpO2Vsc2V7ZHQodCwhMCk7dmFyIHI9dC5qcVhIUjtyJiY0IT09ci5yZWFkeVN0YXRlJiZyLmFib3J0KCksSCh0LFtdLChmdW5jdGlvbihuKXtEKHQpO2Zvcih2YXIgaT0wLHI9KG49VSh0LG4pKS5sZW5ndGg7aTxyO2krKyl3KHQsbltpXSk7Uih0LGUpLGR0KHQsITEpfSkpfX07V3QoImFqYXguanNvbigpIiwoZnVuY3Rpb24oKXt2YXIgdD10aGlzLmNvbnRleHQ7aWYodC5sZW5ndGg+MClyZXR1cm4gdFswXS5qc29ufSkpLFd0KCJhamF4LnBhcmFtcygpIiwoZnVuY3Rpb24oKXt2YXIgdD10aGlzLmNvbnRleHQ7aWYodC5sZW5ndGg+MClyZXR1cm4gdFswXS5vQWpheERhdGF9KSksV3QoImFqYXgucmVsb2FkKCkiLChmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsKGZ1bmN0aW9uKG4pe3hlKG4sITE9PT1lLHQpfSkpfSkpLFd0KCJhamF4LnVybCgpIiwoZnVuY3Rpb24oZSl7dmFyIG49dGhpcy5jb250ZXh0O3JldHVybiBlPT09aT8wPT09bi5sZW5ndGg/aToobj1uWzBdKS5hamF4P3QuaXNQbGFpbk9iamVjdChuLmFqYXgpP24uYWpheC51cmw6bi5hamF4Om4uc0FqYXhTb3VyY2U6dGhpcy5pdGVyYXRvcigidGFibGUiLChmdW5jdGlvbihuKXt0LmlzUGxhaW5PYmplY3Qobi5hamF4KT9uLmFqYXgudXJsPWU6bi5hamF4PWV9KSl9KSksV3QoImFqYXgudXJsKCkubG9hZCgpIiwoZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigidGFibGUiLChmdW5jdGlvbihuKXt4ZShuLCExPT09ZSx0KX0pKX0pKTt2YXIgX2U9ZnVuY3Rpb24odCxlLG4scixvKXt2YXIgYSxzLGwsYyx1LGQsaD1bXTtmb3IobD10eXBlb2YgZSxlJiYic3RyaW5nIiE9PWwmJiJmdW5jdGlvbiIhPT1sJiZlLmxlbmd0aCE9PWl8fChlPVtlXSksbD0wLGM9ZS5sZW5ndGg7bDxjO2wrKylmb3IodT0wLGQ9KHM9ZVtsXSYmZVtsXS5zcGxpdCYmIWVbbF0ubWF0Y2goL1tcW1woOl0vKT9lW2xdLnNwbGl0KCIsIik6W2VbbF1dKS5sZW5ndGg7dTxkO3UrKykoYT1uKCJzdHJpbmciPT10eXBlb2Ygc1t1XT9zW3VdLnRyaW0oKTpzW3VdKSkmJmEubGVuZ3RoJiYoaD1oLmNvbmNhdChhKSk7aWYoKHQ9QnQuc2VsZWN0b3JbdF0pLmxlbmd0aClmb3IobD0wLGM9dC5sZW5ndGg7bDxjO2wrKyloPXRbbF0ocixvLGgpO3JldHVybiBsZShoKX0sU2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGV8fChlPXt9KSxlLmZpbHRlciYmZS5zZWFyY2g9PT1pJiYoZS5zZWFyY2g9ZS5maWx0ZXIpLHQuZXh0ZW5kKHtzZWFyY2g6Im5vbmUiLG9yZGVyOiJjdXJyZW50IixwYWdlOiJhbGwifSxlKX0sQ2U9ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKWlmKHRbZV0ubGVuZ3RoPjApcmV0dXJuIHRbMF09dFtlXSx0WzBdLmxlbmd0aD0xLHQubGVuZ3RoPTEsdC5jb250ZXh0PVt0LmNvbnRleHRbZV1dLHQ7cmV0dXJuIHQubGVuZ3RoPTAsdH0sa2U9ZnVuY3Rpb24oZSxuKXt2YXIgaSxyLG8sYT1bXSxzPWUuYWlEaXNwbGF5O289ZS5haURpc3BsYXlNYXN0ZXI7dmFyIGw9bi5zZWFyY2g7aWYoaT1uLm9yZGVyLHI9bi5wYWdlLCJzc3AiPT1qdChlKSlyZXR1cm4icmVtb3ZlZCI9PT1sP1tdOmFlKDAsby5sZW5ndGgpO2lmKCJjdXJyZW50Ij09cilmb3IoaT1lLl9pRGlzcGxheVN0YXJ0LHI9ZS5mbkRpc3BsYXlFbmQoKTtpPHI7aSsrKWEucHVzaChzW2ldKTtlbHNlIGlmKCJjdXJyZW50Ij09aXx8ImFwcGxpZWQiPT1pKXtpZigibm9uZSI9PWwpYT1vLnNsaWNlKCk7ZWxzZSBpZigiYXBwbGllZCI9PWwpYT1zLnNsaWNlKCk7ZWxzZSBpZigicmVtb3ZlZCI9PWwpe3ZhciBjPXt9O2ZvcihpPTAscj1zLmxlbmd0aDtpPHI7aSsrKWNbc1tpXV09bnVsbDthPXQubWFwKG8sKGZ1bmN0aW9uKHQpe3JldHVybiBjLmhhc093blByb3BlcnR5KHQpP251bGw6dH0pKX19ZWxzZSBpZigiaW5kZXgiPT1pfHwib3JpZ2luYWwiPT1pKWZvcihpPTAscj1lLmFvRGF0YS5sZW5ndGg7aTxyO2krKykoIm5vbmUiPT1sfHwtMT09PShvPXQuaW5BcnJheShpLHMpKSYmInJlbW92ZWQiPT1sfHxvPj0wJiYiYXBwbGllZCI9PWwpJiZhLnB1c2goaSk7cmV0dXJuIGF9O1d0KCJyb3dzKCkiLChmdW5jdGlvbihlLG4pe2U9PT1pP2U9IiI6dC5pc1BsYWluT2JqZWN0KGUpJiYobj1lLGU9IiIpO249U2Uobik7dmFyIHI9dGhpcy5pdGVyYXRvcigidGFibGUiLChmdW5jdGlvbihyKXt2YXIgbyxhPW47cmV0dXJuIF9lKCJyb3ciLGUsKGZ1bmN0aW9uKGUpe3ZhciBuPXRlKGUpLHM9ci5hb0RhdGE7aWYobnVsbCE9PW4mJiFhKXJldHVybltuXTtpZihvfHwobz1rZShyLGEpKSxudWxsIT09biYmLTEhPT10LmluQXJyYXkobixvKSlyZXR1cm5bbl07aWYobnVsbD09PWV8fGU9PT1pfHwiIj09PWUpcmV0dXJuIG87aWYoImZ1bmN0aW9uIj09dHlwZW9mIGUpcmV0dXJuIHQubWFwKG8sKGZ1bmN0aW9uKHQpe3ZhciBuPXNbdF07cmV0dXJuIGUodCxuLl9hRGF0YSxuLm5Ucik/dDpudWxsfSkpO2lmKGUubm9kZU5hbWUpe249ZS5fRFRfUm93SW5kZXg7dmFyIGw9ZS5fRFRfQ2VsbEluZGV4O3JldHVybiBuIT09aT9zW25dJiZzW25dLm5Ucj09PWU/W25dOltdOmw/c1tsLnJvd10mJnNbbC5yb3ddLm5Ucj09PWUucGFyZW50Tm9kZT9bbC5yb3ddOltdOihuPXQoZSkuY2xvc2VzdCgiKltkYXRhLWR0LXJvd10iKSkubGVuZ3RoP1tuLmRhdGEoImR0LXJvdyIpXTpbXX1yZXR1cm4ic3RyaW5nIj09dHlwZW9mIGUmJiIjIj09PWUuY2hhckF0KDApJiYobj1yLmFJZHNbZS5yZXBsYWNlKC9eIy8sIiIpXSkhPT1pP1tuLmlkeF06KG49c2Uob2Uoci5hb0RhdGEsbywiblRyIikpLHQobikuZmlsdGVyKGUpLm1hcCgoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fRFRfUm93SW5kZXh9KSkudG9BcnJheSgpKX0pLHIsYSl9KSwxKTtyZXR1cm4gci5zZWxlY3Rvci5yb3dzPWUsci5zZWxlY3Rvci5vcHRzPW4scn0pKSxXdCgicm93cygpLm5vZGVzKCkiLChmdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJyb3ciLChmdW5jdGlvbih0LGUpe3JldHVybiB0LmFvRGF0YVtlXS5uVHJ8fGl9KSwxKX0pKSxXdCgicm93cygpLmRhdGEoKSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoITAsInJvd3MiLChmdW5jdGlvbih0LGUpe3JldHVybiBvZSh0LmFvRGF0YSxlLCJfYURhdGEiKX0pLDEpfSkpLFV0KCJyb3dzKCkuY2FjaGUoKSIsInJvdygpLmNhY2hlKCkiLChmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pdGVyYXRvcigicm93IiwoZnVuY3Rpb24oZSxuKXt2YXIgaT1lLmFvRGF0YVtuXTtyZXR1cm4ic2VhcmNoIj09PXQ/aS5fYUZpbHRlckRhdGE6aS5fYVNvcnREYXRhfSksMSl9KSksVXQoInJvd3MoKS5pbnZhbGlkYXRlKCkiLCJyb3coKS5pbnZhbGlkYXRlKCkiLChmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pdGVyYXRvcigicm93IiwoZnVuY3Rpb24oZSxuKXtNKGUsbix0KX0pKX0pKSxVdCgicm93cygpLmluZGV4ZXMoKSIsInJvdygpLmluZGV4KCkiLChmdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJyb3ciLChmdW5jdGlvbih0LGUpe3JldHVybiBlfSksMSl9KSksVXQoInJvd3MoKS5pZHMoKSIsInJvdygpLmlkKCkiLChmdW5jdGlvbih0KXtmb3IodmFyIGU9W10sbj10aGlzLmNvbnRleHQsaT0wLHI9bi5sZW5ndGg7aTxyO2krKylmb3IodmFyIG89MCxhPXRoaXNbaV0ubGVuZ3RoO288YTtvKyspe3ZhciBzPW5baV0ucm93SWRGbihuW2ldLmFvRGF0YVt0aGlzW2ldW29dXS5fYURhdGEpO2UucHVzaCgoITA9PT10PyIjIjoiIikrcyl9cmV0dXJuIG5ldyBxdChuLGUpfSkpLFV0KCJyb3dzKCkucmVtb3ZlKCkiLCJyb3coKS5yZW1vdmUoKSIsKGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gdGhpcy5pdGVyYXRvcigicm93IiwoZnVuY3Rpb24oZSxuLHIpe3ZhciBvLGEscyxsLGMsdT1lLmFvRGF0YSxkPXVbbl07Zm9yKHUuc3BsaWNlKG4sMSksbz0wLGE9dS5sZW5ndGg7bzxhO28rKylpZihjPShzPXVbb10pLmFuQ2VsbHMsbnVsbCE9PXMublRyJiYocy5uVHIuX0RUX1Jvd0luZGV4PW8pLG51bGwhPT1jKWZvcihzPTAsbD1jLmxlbmd0aDtzPGw7cysrKWNbc10uX0RUX0NlbGxJbmRleC5yb3c9bztFKGUuYWlEaXNwbGF5TWFzdGVyLG4pLEUoZS5haURpc3BsYXksbiksRSh0W3JdLG4sITEpLGUuX2lSZWNvcmRzRGlzcGxheT4wJiZlLl9pUmVjb3Jkc0Rpc3BsYXktLSxGdChlKSwobj1lLnJvd0lkRm4oZC5fYURhdGEpKSE9PWkmJmRlbGV0ZSBlLmFJZHNbbl19KSksdGhpcy5pdGVyYXRvcigidGFibGUiLChmdW5jdGlvbih0KXtmb3IodmFyIGU9MCxuPXQuYW9EYXRhLmxlbmd0aDtlPG47ZSsrKXQuYW9EYXRhW2VdLmlkeD1lfSkpLHRoaXN9KSksV3QoInJvd3MuYWRkKCkiLChmdW5jdGlvbihlKXt2YXIgbj10aGlzLml0ZXJhdG9yKCJ0YWJsZSIsKGZ1bmN0aW9uKHQpe3ZhciBuLGkscixvPVtdO2ZvcihpPTAscj1lLmxlbmd0aDtpPHI7aSsrKShuPWVbaV0pLm5vZGVOYW1lJiYiVFIiPT09bi5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpP28ucHVzaCh4KHQsbilbMF0pOm8ucHVzaCh3KHQsbikpO3JldHVybiBvfSksMSksaT10aGlzLnJvd3MoLTEpO3JldHVybiBpLnBvcCgpLHQubWVyZ2UoaSxuKSxpfSkpLFd0KCJyb3coKSIsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIENlKHRoaXMucm93cyh0LGUpKX0pKSxXdCgicm93KCkuZGF0YSgpIiwoZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5jb250ZXh0O2lmKHQ9PT1pKXJldHVybiBlLmxlbmd0aCYmdGhpcy5sZW5ndGg/ZVswXS5hb0RhdGFbdGhpc1swXV0uX2FEYXRhOmk7dmFyIG49ZVswXS5hb0RhdGFbdGhpc1swXV07cmV0dXJuIG4uX2FEYXRhPXQsQXJyYXkuaXNBcnJheSh0KSYmbi5uVHImJm4ublRyLmlkJiZUKGVbMF0ucm93SWQpKHQsbi5uVHIuaWQpLE0oZVswXSx0aGlzWzBdLCJkYXRhIiksdGhpc30pKSxXdCgicm93KCkubm9kZSgpIiwoZnVuY3Rpb24oKXt2YXIgdD10aGlzLmNvbnRleHQ7cmV0dXJuIHQubGVuZ3RoJiZ0aGlzLmxlbmd0aCYmdFswXS5hb0RhdGFbdGhpc1swXV0ublRyfHxudWxsfSkpLFd0KCJyb3cuYWRkKCkiLChmdW5jdGlvbihlKXtlIGluc3RhbmNlb2YgdCYmZS5sZW5ndGgmJihlPWVbMF0pO3ZhciBuPXRoaXMuaXRlcmF0b3IoInRhYmxlIiwoZnVuY3Rpb24odCl7cmV0dXJuIGUubm9kZU5hbWUmJiJUUiI9PT1lLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCk/eCh0LGUpWzBdOncodCxlKX0pKTtyZXR1cm4gdGhpcy5yb3coblswXSl9KSk7dmFyIFRlPWZ1bmN0aW9uKHQsZSl7dmFyIG49dC5jb250ZXh0O24ubGVuZ3RoJiYobj1uWzBdLmFvRGF0YVtlIT09aT9lOnRbMF1dKSYmbi5fZGV0YWlscyYmKG4uX2RldGFpbHMucmVtb3ZlKCksbi5fZGV0YWlsc1Nob3c9aSxuLl9kZXRhaWxzPWkpfSxBZT1mdW5jdGlvbih0LGUpe3ZhciBuPXQuY29udGV4dDtpZihuLmxlbmd0aCYmdC5sZW5ndGgpe3ZhciBpPW5bMF0uYW9EYXRhW3RbMF1dO2lmKGkuX2RldGFpbHMpeyhpLl9kZXRhaWxzU2hvdz1lKT9pLl9kZXRhaWxzLmluc2VydEFmdGVyKGkublRyKTppLl9kZXRhaWxzLmRldGFjaCgpO3ZhciByPW5bMF0sbz1uZXcgcXQociksYT1yLmFvRGF0YTtvLm9mZigiZHJhdy5kdC5EVF9kZXRhaWxzIGNvbHVtbi12aXNpYmlsaXR5LmR0LkRUX2RldGFpbHMgZGVzdHJveS5kdC5EVF9kZXRhaWxzIikscmUoYSwiX2RldGFpbHMiKS5sZW5ndGg+MCYmKG8ub24oImRyYXcuZHQuRFRfZGV0YWlscyIsKGZ1bmN0aW9uKHQsZSl7cj09PWUmJm8ucm93cyh7cGFnZToiY3VycmVudCJ9KS5lcSgwKS5lYWNoKChmdW5jdGlvbih0KXsodD1hW3RdKS5fZGV0YWlsc1Nob3cmJnQuX2RldGFpbHMuaW5zZXJ0QWZ0ZXIodC5uVHIpfSkpfSkpLG8ub24oImNvbHVtbi12aXNpYmlsaXR5LmR0LkRUX2RldGFpbHMiLChmdW5jdGlvbih0LGUpe2lmKHI9PT1lKWZvcih2YXIgbixpPW0oZSksbz0wLHM9YS5sZW5ndGg7bzxzO28rKykobj1hW29dKS5fZGV0YWlscyYmbi5fZGV0YWlscy5jaGlsZHJlbigidGRbY29sc3Bhbl0iKS5hdHRyKCJjb2xzcGFuIixpKX0pKSxvLm9uKCJkZXN0cm95LmR0LkRUX2RldGFpbHMiLChmdW5jdGlvbih0LGUpe2lmKHI9PT1lKWZvcih2YXIgbj0wLGk9YS5sZW5ndGg7bjxpO24rKylhW25dLl9kZXRhaWxzJiZUZShvLG4pfSkpKX19fTtXdCgicm93KCkuY2hpbGQoKSIsKGZ1bmN0aW9uKGUsbil7dmFyIHI9dGhpcy5jb250ZXh0O2lmKGU9PT1pKXJldHVybiByLmxlbmd0aCYmdGhpcy5sZW5ndGg/clswXS5hb0RhdGFbdGhpc1swXV0uX2RldGFpbHM6aTtpZighMD09PWUpdGhpcy5jaGlsZC5zaG93KCk7ZWxzZSBpZighMT09PWUpVGUodGhpcyk7ZWxzZSBpZihyLmxlbmd0aCYmdGhpcy5sZW5ndGgpe3ZhciBvPXJbMF0sYT0ocj1yWzBdLmFvRGF0YVt0aGlzWzBdXSxbXSkscz1mdW5jdGlvbihlLG4pe2lmKEFycmF5LmlzQXJyYXkoZSl8fGUgaW5zdGFuY2VvZiB0KWZvcih2YXIgaT0wLHI9ZS5sZW5ndGg7aTxyO2krKylzKGVbaV0sbik7ZWxzZSBlLm5vZGVOYW1lJiYidHIiPT09ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpP2EucHVzaChlKTooaT10KCI8dHI+PHRkPjwvdGQ+PC90cj4iKS5hZGRDbGFzcyhuKSx0KCJ0ZCIsaSkuYWRkQ2xhc3MobikuaHRtbChlKVswXS5jb2xTcGFuPW0obyksYS5wdXNoKGlbMF0pKX07cyhlLG4pLHIuX2RldGFpbHMmJnIuX2RldGFpbHMuZGV0YWNoKCksci5fZGV0YWlscz10KGEpLHIuX2RldGFpbHNTaG93JiZyLl9kZXRhaWxzLmluc2VydEFmdGVyKHIublRyKX1yZXR1cm4gdGhpc30pKSxXdChbInJvdygpLmNoaWxkLnNob3coKSIsInJvdygpLmNoaWxkKCkuc2hvdygpIl0sKGZ1bmN0aW9uKCl7cmV0dXJuIEFlKHRoaXMsITApLHRoaXN9KSksV3QoWyJyb3coKS5jaGlsZC5oaWRlKCkiLCJyb3coKS5jaGlsZCgpLmhpZGUoKSJdLChmdW5jdGlvbigpe3JldHVybiBBZSh0aGlzLCExKSx0aGlzfSkpLFd0KFsicm93KCkuY2hpbGQucmVtb3ZlKCkiLCJyb3coKS5jaGlsZCgpLnJlbW92ZSgpIl0sKGZ1bmN0aW9uKCl7cmV0dXJuIFRlKHRoaXMpLHRoaXN9KSksV3QoInJvdygpLmNoaWxkLmlzU2hvd24oKSIsKGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5jb250ZXh0O3JldHVybiB0Lmxlbmd0aCYmdGhpcy5sZW5ndGgmJnRbMF0uYW9EYXRhW3RoaXNbMF1dLl9kZXRhaWxzU2hvd3x8ITF9KSk7dmFyIERlPS9eKFteOl0rKToobmFtZXx2aXNJZHh8dmlzaWJsZSkkLyxFZT1mdW5jdGlvbih0LGUsbixpLHIpe249W10saT0wO2Zvcih2YXIgbz1yLmxlbmd0aDtpPG87aSsrKW4ucHVzaChfKHQscltpXSxlKSk7cmV0dXJuIG59O1d0KCJjb2x1bW5zKCkiLChmdW5jdGlvbihlLG4pe2U9PT1pP2U9IiI6dC5pc1BsYWluT2JqZWN0KGUpJiYobj1lLGU9IiIpO249U2Uobik7dmFyIHI9dGhpcy5pdGVyYXRvcigidGFibGUiLChmdW5jdGlvbihpKXt2YXIgcj1lLG89bixhPWkuYW9Db2x1bW5zLHM9cmUoYSwic05hbWUiKSxsPXJlKGEsIm5UaCIpO3JldHVybiBfZSgiY29sdW1uIixyLChmdW5jdGlvbihlKXt2YXIgbj10ZShlKTtpZigiIj09PWUpcmV0dXJuIGFlKGEubGVuZ3RoKTtpZihudWxsIT09bilyZXR1cm5bbj49MD9uOmEubGVuZ3RoK25dO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlKXt2YXIgcj1rZShpLG8pO3JldHVybiB0Lm1hcChhLChmdW5jdGlvbih0LG4pe3JldHVybiBlKG4sRWUoaSxuLDAsMCxyKSxsW25dKT9uOm51bGx9KSl9dmFyIGM9InN0cmluZyI9PXR5cGVvZiBlP2UubWF0Y2goRGUpOiIiO2lmKGMpc3dpdGNoKGNbMl0pe2Nhc2UidmlzSWR4IjpjYXNlInZpc2libGUiOmlmKChuPXBhcnNlSW50KGNbMV0sMTApKTwwKXt2YXIgdT10Lm1hcChhLChmdW5jdGlvbih0LGUpe3JldHVybiB0LmJWaXNpYmxlP2U6bnVsbH0pKTtyZXR1cm5bdVt1Lmxlbmd0aCtuXV19cmV0dXJuW3AoaSxuKV07Y2FzZSJuYW1lIjpyZXR1cm4gdC5tYXAocywoZnVuY3Rpb24odCxlKXtyZXR1cm4gdD09PWNbMV0/ZTpudWxsfSkpO2RlZmF1bHQ6cmV0dXJuW119cmV0dXJuIGUubm9kZU5hbWUmJmUuX0RUX0NlbGxJbmRleD9bZS5fRFRfQ2VsbEluZGV4LmNvbHVtbl06KG49dChsKS5maWx0ZXIoZSkubWFwKChmdW5jdGlvbigpe3JldHVybiB0LmluQXJyYXkodGhpcyxsKX0pKS50b0FycmF5KCkpLmxlbmd0aHx8IWUubm9kZU5hbWU/bjoobj10KGUpLmNsb3Nlc3QoIipbZGF0YS1kdC1jb2x1bW5dIikpLmxlbmd0aD9bbi5kYXRhKCJkdC1jb2x1bW4iKV06W119KSxpLG8pfSksMSk7cmV0dXJuIHIuc2VsZWN0b3IuY29scz1lLHIuc2VsZWN0b3Iub3B0cz1uLHJ9KSksVXQoImNvbHVtbnMoKS5oZWFkZXIoKSIsImNvbHVtbigpLmhlYWRlcigpIiwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigiY29sdW1uIiwoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5hb0NvbHVtbnNbZV0ublRofSksMSl9KSksVXQoImNvbHVtbnMoKS5mb290ZXIoKSIsImNvbHVtbigpLmZvb3RlcigpIiwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigiY29sdW1uIiwoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5hb0NvbHVtbnNbZV0ublRmfSksMSl9KSksVXQoImNvbHVtbnMoKS5kYXRhKCkiLCJjb2x1bW4oKS5kYXRhKCkiLChmdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJjb2x1bW4tcm93cyIsRWUsMSl9KSksVXQoImNvbHVtbnMoKS5kYXRhU3JjKCkiLCJjb2x1bW4oKS5kYXRhU3JjKCkiLChmdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJjb2x1bW4iLChmdW5jdGlvbih0LGUpe3JldHVybiB0LmFvQ29sdW1uc1tlXS5tRGF0YX0pLDEpfSkpLFV0KCJjb2x1bW5zKCkuY2FjaGUoKSIsImNvbHVtbigpLmNhY2hlKCkiLChmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pdGVyYXRvcigiY29sdW1uLXJvd3MiLChmdW5jdGlvbihlLG4saSxyLG8pe3JldHVybiBvZShlLmFvRGF0YSxvLCJzZWFyY2giPT09dD8iX2FGaWx0ZXJEYXRhIjoiX2FTb3J0RGF0YSIsbil9KSwxKX0pKSxVdCgiY29sdW1ucygpLm5vZGVzKCkiLCJjb2x1bW4oKS5ub2RlcygpIiwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigiY29sdW1uLXJvd3MiLChmdW5jdGlvbih0LGUsbixpLHIpe3JldHVybiBvZSh0LmFvRGF0YSxyLCJhbkNlbGxzIixlKX0pLDEpfSkpLFV0KCJjb2x1bW5zKCkudmlzaWJsZSgpIiwiY29sdW1uKCkudmlzaWJsZSgpIiwoZnVuY3Rpb24oZSxuKXt2YXIgcj10aGlzLG89dGhpcy5pdGVyYXRvcigiY29sdW1uIiwoZnVuY3Rpb24obixyKXtpZihlPT09aSlyZXR1cm4gbi5hb0NvbHVtbnNbcl0uYlZpc2libGU7dmFyIG8sYSxzLGw9bi5hb0NvbHVtbnMsYz1sW3JdLHU9bi5hb0RhdGE7aWYoZSE9PWkmJmMuYlZpc2libGUhPT1lKXtpZihlKXt2YXIgZD10LmluQXJyYXkoITAscmUobCwiYlZpc2libGUiKSxyKzEpO2ZvcihvPTAsYT11Lmxlbmd0aDtvPGE7bysrKXM9dVtvXS5uVHIsbD11W29dLmFuQ2VsbHMscyYmcy5pbnNlcnRCZWZvcmUobFtyXSxsW2RdfHxudWxsKX1lbHNlIHQocmUobi5hb0RhdGEsImFuQ2VsbHMiLHIpKS5kZXRhY2goKTtjLmJWaXNpYmxlPWV9fSkpO3JldHVybiBlIT09aSYmdGhpcy5pdGVyYXRvcigidGFibGUiLChmdW5jdGlvbihvKXtOKG8sby5hb0hlYWRlciksTihvLG8uYW9Gb290ZXIpLG8uYWlEaXNwbGF5Lmxlbmd0aHx8dChvLm5UQm9keSkuZmluZCgidGRbY29sc3Bhbl0iKS5hdHRyKCJjb2xzcGFuIixtKG8pKSxBdChvKSxyLml0ZXJhdG9yKCJjb2x1bW4iLChmdW5jdGlvbih0LGkpe050KHQsbnVsbCwiY29sdW1uLXZpc2liaWxpdHkiLFt0LGksZSxuXSl9KSksKG49PT1pfHxuKSYmci5jb2x1bW5zLmFkanVzdCgpfSkpLG99KSksVXQoImNvbHVtbnMoKS5pbmRleGVzKCkiLCJjb2x1bW4oKS5pbmRleCgpIiwoZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoImNvbHVtbiIsKGZ1bmN0aW9uKGUsbil7cmV0dXJuInZpc2libGUiPT09dD9nKGUsbik6bn0pLDEpfSkpLFd0KCJjb2x1bW5zLmFkanVzdCgpIiwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigidGFibGUiLChmdW5jdGlvbih0KXtmKHQpfSksMSl9KSksV3QoImNvbHVtbi5pbmRleCgpIiwoZnVuY3Rpb24odCxlKXtpZigwIT09dGhpcy5jb250ZXh0Lmxlbmd0aCl7dmFyIG49dGhpcy5jb250ZXh0WzBdO2lmKCJmcm9tVmlzaWJsZSI9PT10fHwidG9EYXRhIj09PXQpcmV0dXJuIHAobixlKTtpZigiZnJvbURhdGEiPT09dHx8InRvVmlzaWJsZSI9PT10KXJldHVybiBnKG4sZSl9fSkpLFd0KCJjb2x1bW4oKSIsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIENlKHRoaXMuY29sdW1ucyh0LGUpKX0pKSxXdCgiY2VsbHMoKSIsKGZ1bmN0aW9uKGUsbixyKXtpZih0LmlzUGxhaW5PYmplY3QoZSkmJihlLnJvdz09PWk/KHI9ZSxlPW51bGwpOihyPW4sbj1udWxsKSksdC5pc1BsYWluT2JqZWN0KG4pJiYocj1uLG49bnVsbCksbnVsbD09PW58fG49PT1pKXJldHVybiB0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsKGZ1bmN0aW9uKG4pe3ZhciBvLGEscyxsLGMsdSxkLGg9ZSxmPVNlKHIpLHA9bi5hb0RhdGEsZz1rZShuLGYpLG09c2Uob2UocCxnLCJhbkNlbGxzIikpLHY9dChjZShbXSxtKSkseT1uLmFvQ29sdW1ucy5sZW5ndGg7cmV0dXJuIF9lKCJjZWxsIixoLChmdW5jdGlvbihlKXt2YXIgcj0iZnVuY3Rpb24iPT10eXBlb2YgZTtpZihudWxsPT09ZXx8ZT09PWl8fHIpe2ZvcihhPVtdLHM9MCxsPWcubGVuZ3RoO3M8bDtzKyspZm9yKG89Z1tzXSxjPTA7Yzx5O2MrKyl1PXtyb3c6byxjb2x1bW46Y30scj8oZD1wW29dLGUodSxfKG4sbyxjKSxkLmFuQ2VsbHM/ZC5hbkNlbGxzW2NdOm51bGwpJiZhLnB1c2godSkpOmEucHVzaCh1KTtyZXR1cm4gYX1yZXR1cm4gdC5pc1BsYWluT2JqZWN0KGUpP2UuY29sdW1uIT09aSYmZS5yb3chPT1pJiYtMSE9PXQuaW5BcnJheShlLnJvdyxnKT9bZV06W106KHI9di5maWx0ZXIoZSkubWFwKChmdW5jdGlvbih0LGUpe3JldHVybntyb3c6ZS5fRFRfQ2VsbEluZGV4LnJvdyxjb2x1bW46ZS5fRFRfQ2VsbEluZGV4LmNvbHVtbn19KSkudG9BcnJheSgpKS5sZW5ndGh8fCFlLm5vZGVOYW1lP3I6KGQ9dChlKS5jbG9zZXN0KCIqW2RhdGEtZHQtcm93XSIpKS5sZW5ndGg/W3tyb3c6ZC5kYXRhKCJkdC1yb3ciKSxjb2x1bW46ZC5kYXRhKCJkdC1jb2x1bW4iKX1dOltdfSksbixmKX0pKTt2YXIgbyxhLHMsbCxjPXI/e3BhZ2U6ci5wYWdlLG9yZGVyOnIub3JkZXIsc2VhcmNoOnIuc2VhcmNofTp7fSx1PXRoaXMuY29sdW1ucyhuLGMpLGQ9dGhpcy5yb3dzKGUsYyk7Yz10aGlzLml0ZXJhdG9yKCJ0YWJsZSIsKGZ1bmN0aW9uKHQsZSl7dmFyIG49W107Zm9yKG89MCxhPWRbZV0ubGVuZ3RoO288YTtvKyspZm9yKHM9MCxsPXVbZV0ubGVuZ3RoO3M8bDtzKyspbi5wdXNoKHtyb3c6ZFtlXVtvXSxjb2x1bW46dVtlXVtzXX0pO3JldHVybiBufSksMSksYz1yJiZyLnNlbGVjdGVkP3RoaXMuY2VsbHMoYyxyKTpjO3JldHVybiB0LmV4dGVuZChjLnNlbGVjdG9yLHtjb2xzOm4scm93czplLG9wdHM6cn0pLGN9KSksVXQoImNlbGxzKCkubm9kZXMoKSIsImNlbGwoKS5ub2RlKCkiLChmdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJjZWxsIiwoZnVuY3Rpb24odCxlLG4pe3JldHVybih0PXQuYW9EYXRhW2VdKSYmdC5hbkNlbGxzP3QuYW5DZWxsc1tuXTppfSksMSl9KSksV3QoImNlbGxzKCkuZGF0YSgpIiwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigiY2VsbCIsKGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gXyh0LGUsbil9KSwxKX0pKSxVdCgiY2VsbHMoKS5jYWNoZSgpIiwiY2VsbCgpLmNhY2hlKCkiLChmdW5jdGlvbih0KXtyZXR1cm4gdD0ic2VhcmNoIj09PXQ/Il9hRmlsdGVyRGF0YSI6Il9hU29ydERhdGEiLHRoaXMuaXRlcmF0b3IoImNlbGwiLChmdW5jdGlvbihlLG4saSl7cmV0dXJuIGUuYW9EYXRhW25dW3RdW2ldfSksMSl9KSksVXQoImNlbGxzKCkucmVuZGVyKCkiLCJjZWxsKCkucmVuZGVyKCkiLChmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pdGVyYXRvcigiY2VsbCIsKGZ1bmN0aW9uKGUsbixpKXtyZXR1cm4gXyhlLG4saSx0KX0pLDEpfSkpLFV0KCJjZWxscygpLmluZGV4ZXMoKSIsImNlbGwoKS5pbmRleCgpIiwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigiY2VsbCIsKGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm57cm93OmUsY29sdW1uOm4sY29sdW1uVmlzaWJsZTpnKHQsbil9fSksMSl9KSksVXQoImNlbGxzKCkuaW52YWxpZGF0ZSgpIiwiY2VsbCgpLmludmFsaWRhdGUoKSIsKGZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJjZWxsIiwoZnVuY3Rpb24oZSxuLGkpe00oZSxuLHQsaSl9KSl9KSksV3QoImNlbGwoKSIsKGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gQ2UodGhpcy5jZWxscyh0LGUsbikpfSkpLFd0KCJjZWxsKCkuZGF0YSgpIiwoZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5jb250ZXh0LG49dGhpc1swXTtyZXR1cm4gdD09PWk/ZS5sZW5ndGgmJm4ubGVuZ3RoP18oZVswXSxuWzBdLnJvdyxuWzBdLmNvbHVtbik6aTooUyhlWzBdLG5bMF0ucm93LG5bMF0uY29sdW1uLHQpLE0oZVswXSxuWzBdLnJvdywiZGF0YSIsblswXS5jb2x1bW4pLHRoaXMpfSkpLFd0KCJvcmRlcigpIiwoZnVuY3Rpb24odCxlKXt2YXIgbj10aGlzLmNvbnRleHQ7cmV0dXJuIHQ9PT1pPzAhPT1uLmxlbmd0aD9uWzBdLmFhU29ydGluZzppOigibnVtYmVyIj09dHlwZW9mIHQ/dD1bW3QsZV1dOnQubGVuZ3RoJiYhQXJyYXkuaXNBcnJheSh0WzBdKSYmKHQ9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSksdGhpcy5pdGVyYXRvcigidGFibGUiLChmdW5jdGlvbihlKXtlLmFhU29ydGluZz10LnNsaWNlKCl9KSkpfSkpLFd0KCJvcmRlci5saXN0ZW5lcigpIiwoZnVuY3Rpb24odCxlLG4pe3JldHVybiB0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsKGZ1bmN0aW9uKGkpe0N0KGksdCxlLG4pfSkpfSkpLFd0KCJvcmRlci5maXhlZCgpIiwoZnVuY3Rpb24oZSl7aWYoIWUpe3ZhciBuPShuPXRoaXMuY29udGV4dCkubGVuZ3RoP25bMF0uYWFTb3J0aW5nRml4ZWQ6aTtyZXR1cm4gQXJyYXkuaXNBcnJheShuKT97cHJlOm59Om59cmV0dXJuIHRoaXMuaXRlcmF0b3IoInRhYmxlIiwoZnVuY3Rpb24obil7bi5hYVNvcnRpbmdGaXhlZD10LmV4dGVuZCghMCx7fSxlKX0pKX0pKSxXdChbImNvbHVtbnMoKS5vcmRlcigpIiwiY29sdW1uKCkub3JkZXIoKSJdLChmdW5jdGlvbihlKXt2YXIgbj10aGlzO3JldHVybiB0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsKGZ1bmN0aW9uKGkscil7dmFyIG89W107dC5lYWNoKG5bcl0sKGZ1bmN0aW9uKHQsbil7by5wdXNoKFtuLGVdKX0pKSxpLmFhU29ydGluZz1vfSkpfSkpLFd0KCJzZWFyY2goKSIsKGZ1bmN0aW9uKGUsbixyLG8pe3ZhciBhPXRoaXMuY29udGV4dDtyZXR1cm4gZT09PWk/MCE9PWEubGVuZ3RoP2FbMF0ub1ByZXZpb3VzU2VhcmNoLnNTZWFyY2g6aTp0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsKGZ1bmN0aW9uKGkpe2kub0ZlYXR1cmVzLmJGaWx0ZXImJlkoaSx0LmV4dGVuZCh7fSxpLm9QcmV2aW91c1NlYXJjaCx7c1NlYXJjaDplKyIiLGJSZWdleDpudWxsIT09biYmbixiU21hcnQ6bnVsbD09PXJ8fHIsYkNhc2VJbnNlbnNpdGl2ZTpudWxsPT09b3x8b30pLDEpfSkpfSkpLFV0KCJjb2x1bW5zKCkuc2VhcmNoKCkiLCJjb2x1bW4oKS5zZWFyY2goKSIsKGZ1bmN0aW9uKGUsbixyLG8pe3JldHVybiB0aGlzLml0ZXJhdG9yKCJjb2x1bW4iLChmdW5jdGlvbihhLHMpe3ZhciBsPWEuYW9QcmVTZWFyY2hDb2xzO2lmKGU9PT1pKXJldHVybiBsW3NdLnNTZWFyY2g7YS5vRmVhdHVyZXMuYkZpbHRlciYmKHQuZXh0ZW5kKGxbc10se3NTZWFyY2g6ZSsiIixiUmVnZXg6bnVsbCE9PW4mJm4sYlNtYXJ0Om51bGw9PT1yfHxyLGJDYXNlSW5zZW5zaXRpdmU6bnVsbD09PW98fG99KSxZKGEsYS5vUHJldmlvdXNTZWFyY2gsMSkpfSkpfSkpLFd0KCJzdGF0ZSgpIiwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250ZXh0Lmxlbmd0aD90aGlzLmNvbnRleHRbMF0ub1NhdmVkU3RhdGU6bnVsbH0pKSxXdCgic3RhdGUuY2xlYXIoKSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoInRhYmxlIiwoZnVuY3Rpb24odCl7dC5mblN0YXRlU2F2ZUNhbGxiYWNrLmNhbGwodC5vSW5zdGFuY2UsdCx7fSl9KSl9KSksV3QoInN0YXRlLmxvYWRlZCgpIiwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250ZXh0Lmxlbmd0aD90aGlzLmNvbnRleHRbMF0ub0xvYWRlZFN0YXRlOm51bGx9KSksV3QoInN0YXRlLnNhdmUoKSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoInRhYmxlIiwoZnVuY3Rpb24odCl7QXQodCl9KSl9KSksVnQudmVyc2lvbkNoZWNrPVZ0LmZuVmVyc2lvbkNoZWNrPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZSxuLGk9VnQudmVyc2lvbi5zcGxpdCgiLiIpLHI9MCxvPSh0PXQuc3BsaXQoIi4iKSkubGVuZ3RoO3I8bztyKyspaWYoKGU9cGFyc2VJbnQoaVtyXSwxMCl8fDApIT09KG49cGFyc2VJbnQodFtyXSwxMCl8fDApKXJldHVybiBlPm47cmV0dXJuITB9LFZ0LmlzRGF0YVRhYmxlPVZ0LmZuSXNEYXRhVGFibGU9ZnVuY3Rpb24oZSl7dmFyIG49dChlKS5nZXQoMCksaT0hMTtyZXR1cm4gZSBpbnN0YW5jZW9mIFZ0LkFwaXx8KHQuZWFjaChWdC5zZXR0aW5ncywoZnVuY3Rpb24oZSxyKXt2YXIgbz1yLm5TY3JvbGxIZWFkP3QoInRhYmxlIixyLm5TY3JvbGxIZWFkKVswXTpudWxsLGE9ci5uU2Nyb2xsRm9vdD90KCJ0YWJsZSIsci5uU2Nyb2xsRm9vdClbMF06bnVsbDtyLm5UYWJsZSE9PW4mJm8hPT1uJiZhIT09bnx8KGk9ITApfSkpLGkpfSxWdC50YWJsZXM9VnQuZm5UYWJsZXM9ZnVuY3Rpb24oZSl7dmFyIG49ITE7dC5pc1BsYWluT2JqZWN0KGUpJiYobj1lLmFwaSxlPWUudmlzaWJsZSk7dmFyIGk9dC5tYXAoVnQuc2V0dGluZ3MsKGZ1bmN0aW9uKG4pe2lmKCFlfHxlJiZ0KG4ublRhYmxlKS5pcygiOnZpc2libGUiKSlyZXR1cm4gbi5uVGFibGV9KSk7cmV0dXJuIG4/bmV3IHF0KGkpOml9LFZ0LmNhbWVsVG9IdW5nYXJpYW49byxXdCgiJCgpIiwoZnVuY3Rpb24oZSxuKXt2YXIgaT10aGlzLnJvd3Mobikubm9kZXMoKTtpPXQoaSk7cmV0dXJuIHQoW10uY29uY2F0KGkuZmlsdGVyKGUpLnRvQXJyYXkoKSxpLmZpbmQoZSkudG9BcnJheSgpKSl9KSksdC5lYWNoKFsib24iLCJvbmUiLCJvZmYiXSwoZnVuY3Rpb24oZSxuKXtXdChuKyIoKSIsKGZ1bmN0aW9uKCl7dmFyIGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtlWzBdPXQubWFwKGVbMF0uc3BsaXQoL1xzLyksKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm1hdGNoKC9cLmR0XGIvKT90OnQrIi5kdCJ9KSkuam9pbigiICIpO3ZhciBpPXQodGhpcy50YWJsZXMoKS5ub2RlcygpKTtyZXR1cm4gaVtuXS5hcHBseShpLGUpLHRoaXN9KSl9KSksV3QoImNsZWFyKCkiLChmdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsKGZ1bmN0aW9uKHQpe0QodCl9KSl9KSksV3QoInNldHRpbmdzKCkiLChmdW5jdGlvbigpe3JldHVybiBuZXcgcXQodGhpcy5jb250ZXh0LHRoaXMuY29udGV4dCl9KSksV3QoImluaXQoKSIsKGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5jb250ZXh0O3JldHVybiB0Lmxlbmd0aD90WzBdLm9Jbml0Om51bGx9KSksV3QoImRhdGEoKSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoInRhYmxlIiwoZnVuY3Rpb24odCl7cmV0dXJuIHJlKHQuYW9EYXRhLCJfYURhdGEiKX0pKS5mbGF0dGVuKCl9KSksV3QoImRlc3Ryb3koKSIsKGZ1bmN0aW9uKG4pe3JldHVybiBuPW58fCExLHRoaXMuaXRlcmF0b3IoInRhYmxlIiwoZnVuY3Rpb24oaSl7dmFyIHIsbz1pLm5UYWJsZVdyYXBwZXIucGFyZW50Tm9kZSxhPWkub0NsYXNzZXMscz1pLm5UYWJsZSxsPWkublRCb2R5LGM9aS5uVEhlYWQsdT1pLm5URm9vdCxkPXQocyksaD0obD10KGwpLHQoaS5uVGFibGVXcmFwcGVyKSksZj10Lm1hcChpLmFvRGF0YSwoZnVuY3Rpb24odCl7cmV0dXJuIHQublRyfSkpO2kuYkRlc3Ryb3lpbmc9ITAsTnQoaSwiYW9EZXN0cm95Q2FsbGJhY2siLCJkZXN0cm95IixbaV0pLG58fG5ldyBxdChpKS5jb2x1bW5zKCkudmlzaWJsZSghMCksaC5vZmYoIi5EVCIpLmZpbmQoIjpub3QodGJvZHkgKikiKS5vZmYoIi5EVCIpLHQoZSkub2ZmKCIuRFQtIitpLnNJbnN0YW5jZSkscyE9Yy5wYXJlbnROb2RlJiYoZC5jaGlsZHJlbigidGhlYWQiKS5kZXRhY2goKSxkLmFwcGVuZChjKSksdSYmcyE9dS5wYXJlbnROb2RlJiYoZC5jaGlsZHJlbigidGZvb3QiKS5kZXRhY2goKSxkLmFwcGVuZCh1KSksaS5hYVNvcnRpbmc9W10saS5hYVNvcnRpbmdGaXhlZD1bXSxrdChpKSx0KGYpLnJlbW92ZUNsYXNzKGkuYXNTdHJpcGVDbGFzc2VzLmpvaW4oIiAiKSksdCgidGgsIHRkIixjKS5yZW1vdmVDbGFzcyhhLnNTb3J0YWJsZSsiICIrYS5zU29ydGFibGVBc2MrIiAiK2Euc1NvcnRhYmxlRGVzYysiICIrYS5zU29ydGFibGVOb25lKSxsLmNoaWxkcmVuKCkuZGV0YWNoKCksbC5hcHBlbmQoZiksZFtjPW4/InJlbW92ZSI6ImRldGFjaCJdKCksaFtjXSgpLCFuJiZvJiYoby5pbnNlcnRCZWZvcmUocyxpLm5UYWJsZVJlaW5zZXJ0QmVmb3JlKSxkLmNzcygid2lkdGgiLGkuc0Rlc3Ryb3lXaWR0aCkucmVtb3ZlQ2xhc3MoYS5zVGFibGUpLChyPWkuYXNEZXN0cm95U3RyaXBlcy5sZW5ndGgpJiZsLmNoaWxkcmVuKCkuZWFjaCgoZnVuY3Rpb24oZSl7dCh0aGlzKS5hZGRDbGFzcyhpLmFzRGVzdHJveVN0cmlwZXNbZSVyXSl9KSkpLC0xIT09KG89dC5pbkFycmF5KGksVnQuc2V0dGluZ3MpKSYmVnQuc2V0dGluZ3Muc3BsaWNlKG8sMSl9KSl9KSksdC5lYWNoKFsiY29sdW1uIiwicm93IiwiY2VsbCJdLChmdW5jdGlvbih0LGUpe1d0KGUrInMoKS5ldmVyeSgpIiwoZnVuY3Rpb24odCl7dmFyIG49dGhpcy5zZWxlY3Rvci5vcHRzLHI9dGhpcztyZXR1cm4gdGhpcy5pdGVyYXRvcihlLChmdW5jdGlvbihvLGEscyxsLGMpe3QuY2FsbChyW2VdKGEsImNlbGwiPT09ZT9zOm4sImNlbGwiPT09ZT9uOmkpLGEscyxsLGMpfSkpfSkpfSkpLFd0KCJpMThuKCkiLChmdW5jdGlvbihlLG4scil7dmFyIG89dGhpcy5jb250ZXh0WzBdO3JldHVybihlPWsoZSkoby5vTGFuZ3VhZ2UpKT09PWkmJihlPW4pLHIhPT1pJiZ0LmlzUGxhaW5PYmplY3QoZSkmJihlPWVbcl0hPT1pP2Vbcl06ZS5fKSxlLnJlcGxhY2UoIiVkIixyKX0pKSxWdC52ZXJzaW9uPSIxLjEwLjIzIixWdC5zZXR0aW5ncz1bXSxWdC5tb2RlbHM9e30sVnQubW9kZWxzLm9TZWFyY2g9e2JDYXNlSW5zZW5zaXRpdmU6ITAsc1NlYXJjaDoiIixiUmVnZXg6ITEsYlNtYXJ0OiEwfSxWdC5tb2RlbHMub1Jvdz17blRyOm51bGwsYW5DZWxsczpudWxsLF9hRGF0YTpbXSxfYVNvcnREYXRhOm51bGwsX2FGaWx0ZXJEYXRhOm51bGwsX3NGaWx0ZXJSb3c6bnVsbCxfc1Jvd1N0cmlwZToiIixzcmM6bnVsbCxpZHg6LTF9LFZ0Lm1vZGVscy5vQ29sdW1uPXtpZHg6bnVsbCxhRGF0YVNvcnQ6bnVsbCxhc1NvcnRpbmc6bnVsbCxiU2VhcmNoYWJsZTpudWxsLGJTb3J0YWJsZTpudWxsLGJWaXNpYmxlOm51bGwsX3NNYW51YWxUeXBlOm51bGwsX2JBdHRyU3JjOiExLGZuQ3JlYXRlZENlbGw6bnVsbCxmbkdldERhdGE6bnVsbCxmblNldERhdGE6bnVsbCxtRGF0YTpudWxsLG1SZW5kZXI6bnVsbCxuVGg6bnVsbCxuVGY6bnVsbCxzQ2xhc3M6bnVsbCxzQ29udGVudFBhZGRpbmc6bnVsbCxzRGVmYXVsdENvbnRlbnQ6bnVsbCxzTmFtZTpudWxsLHNTb3J0RGF0YVR5cGU6InN0ZCIsc1NvcnRpbmdDbGFzczpudWxsLHNTb3J0aW5nQ2xhc3NKVUk6bnVsbCxzVGl0bGU6bnVsbCxzVHlwZTpudWxsLHNXaWR0aDpudWxsLHNXaWR0aE9yaWc6bnVsbH0sVnQuZGVmYXVsdHM9e2FhRGF0YTpudWxsLGFhU29ydGluZzpbWzAsImFzYyJdXSxhYVNvcnRpbmdGaXhlZDpbXSxhamF4Om51bGwsYUxlbmd0aE1lbnU6WzEwLDI1LDUwLDEwMF0sYW9Db2x1bW5zOm51bGwsYW9Db2x1bW5EZWZzOm51bGwsYW9TZWFyY2hDb2xzOltdLGFzU3RyaXBlQ2xhc3NlczpudWxsLGJBdXRvV2lkdGg6ITAsYkRlZmVyUmVuZGVyOiExLGJEZXN0cm95OiExLGJGaWx0ZXI6ITAsYkluZm86ITAsYkxlbmd0aENoYW5nZTohMCxiUGFnaW5hdGU6ITAsYlByb2Nlc3Npbmc6ITEsYlJldHJpZXZlOiExLGJTY3JvbGxDb2xsYXBzZTohMSxiU2VydmVyU2lkZTohMSxiU29ydDohMCxiU29ydE11bHRpOiEwLGJTb3J0Q2VsbHNUb3A6ITEsYlNvcnRDbGFzc2VzOiEwLGJTdGF0ZVNhdmU6ITEsZm5DcmVhdGVkUm93Om51bGwsZm5EcmF3Q2FsbGJhY2s6bnVsbCxmbkZvb3RlckNhbGxiYWNrOm51bGwsZm5Gb3JtYXROdW1iZXI6ZnVuY3Rpb24odCl7cmV0dXJuIHQudG9TdHJpbmcoKS5yZXBsYWNlKC9cQig/PShcZHszfSkrKD8hXGQpKS9nLHRoaXMub0xhbmd1YWdlLnNUaG91c2FuZHMpfSxmbkhlYWRlckNhbGxiYWNrOm51bGwsZm5JbmZvQ2FsbGJhY2s6bnVsbCxmbkluaXRDb21wbGV0ZTpudWxsLGZuUHJlRHJhd0NhbGxiYWNrOm51bGwsZm5Sb3dDYWxsYmFjazpudWxsLGZuU2VydmVyRGF0YTpudWxsLGZuU2VydmVyUGFyYW1zOm51bGwsZm5TdGF0ZUxvYWRDYWxsYmFjazpmdW5jdGlvbih0KXt0cnl7cmV0dXJuIEpTT04ucGFyc2UoKC0xPT09dC5pU3RhdGVEdXJhdGlvbj9zZXNzaW9uU3RvcmFnZTpsb2NhbFN0b3JhZ2UpLmdldEl0ZW0oIkRhdGFUYWJsZXNfIit0LnNJbnN0YW5jZSsiXyIrbG9jYXRpb24ucGF0aG5hbWUpKX1jYXRjaCh0KXtyZXR1cm57fX19LGZuU3RhdGVMb2FkUGFyYW1zOm51bGwsZm5TdGF0ZUxvYWRlZDpudWxsLGZuU3RhdGVTYXZlQ2FsbGJhY2s6ZnVuY3Rpb24odCxlKXt0cnl7KC0xPT09dC5pU3RhdGVEdXJhdGlvbj9zZXNzaW9uU3RvcmFnZTpsb2NhbFN0b3JhZ2UpLnNldEl0ZW0oIkRhdGFUYWJsZXNfIit0LnNJbnN0YW5jZSsiXyIrbG9jYXRpb24ucGF0aG5hbWUsSlNPTi5zdHJpbmdpZnkoZSkpfWNhdGNoKHQpe319LGZuU3RhdGVTYXZlUGFyYW1zOm51bGwsaVN0YXRlRHVyYXRpb246NzIwMCxpRGVmZXJMb2FkaW5nOm51bGwsaURpc3BsYXlMZW5ndGg6MTAsaURpc3BsYXlTdGFydDowLGlUYWJJbmRleDowLG9DbGFzc2VzOnt9LG9MYW5ndWFnZTp7b0FyaWE6e3NTb3J0QXNjZW5kaW5nOiI6IGFjdGl2YXRlIHRvIHNvcnQgY29sdW1uIGFzY2VuZGluZyIsc1NvcnREZXNjZW5kaW5nOiI6IGFjdGl2YXRlIHRvIHNvcnQgY29sdW1uIGRlc2NlbmRpbmcifSxvUGFnaW5hdGU6e3NGaXJzdDoiRmlyc3QiLHNMYXN0OiJMYXN0IixzTmV4dDoiTmV4dCIsc1ByZXZpb3VzOiJQcmV2aW91cyJ9LHNFbXB0eVRhYmxlOiJObyBkYXRhIGF2YWlsYWJsZSBpbiB0YWJsZSIsc0luZm86IlNob3dpbmcgX1NUQVJUXyB0byBfRU5EXyBvZiBfVE9UQUxfIGVudHJpZXMiLHNJbmZvRW1wdHk6IlNob3dpbmcgMCB0byAwIG9mIDAgZW50cmllcyIsc0luZm9GaWx0ZXJlZDoiKGZpbHRlcmVkIGZyb20gX01BWF8gdG90YWwgZW50cmllcykiLHNJbmZvUG9zdEZpeDoiIixzRGVjaW1hbDoiIixzVGhvdXNhbmRzOiIsIixzTGVuZ3RoTWVudToiU2hvdyBfTUVOVV8gZW50cmllcyIsc0xvYWRpbmdSZWNvcmRzOiJMb2FkaW5nLi4uIixzUHJvY2Vzc2luZzoiUHJvY2Vzc2luZy4uLiIsc1NlYXJjaDoiU2VhcmNoOiIsc1NlYXJjaFBsYWNlaG9sZGVyOiIiLHNVcmw6IiIsc1plcm9SZWNvcmRzOiJObyBtYXRjaGluZyByZWNvcmRzIGZvdW5kIn0sb1NlYXJjaDp0LmV4dGVuZCh7fSxWdC5tb2RlbHMub1NlYXJjaCksc0FqYXhEYXRhUHJvcDoiZGF0YSIsc0FqYXhTb3VyY2U6bnVsbCxzRG9tOiJsZnJ0aXAiLHNlYXJjaERlbGF5Om51bGwsc1BhZ2luYXRpb25UeXBlOiJzaW1wbGVfbnVtYmVycyIsc1Njcm9sbFg6IiIsc1Njcm9sbFhJbm5lcjoiIixzU2Nyb2xsWToiIixzU2VydmVyTWV0aG9kOiJHRVQiLHJlbmRlcmVyOm51bGwscm93SWQ6IkRUX1Jvd0lkIn0scihWdC5kZWZhdWx0cyksVnQuZGVmYXVsdHMuY29sdW1uPXthRGF0YVNvcnQ6bnVsbCxpRGF0YVNvcnQ6LTEsYXNTb3J0aW5nOlsiYXNjIiwiZGVzYyJdLGJTZWFyY2hhYmxlOiEwLGJTb3J0YWJsZTohMCxiVmlzaWJsZTohMCxmbkNyZWF0ZWRDZWxsOm51bGwsbURhdGE6bnVsbCxtUmVuZGVyOm51bGwsc0NlbGxUeXBlOiJ0ZCIsc0NsYXNzOiIiLHNDb250ZW50UGFkZGluZzoiIixzRGVmYXVsdENvbnRlbnQ6bnVsbCxzTmFtZToiIixzU29ydERhdGFUeXBlOiJzdGQiLHNUaXRsZTpudWxsLHNUeXBlOm51bGwsc1dpZHRoOm51bGx9LHIoVnQuZGVmYXVsdHMuY29sdW1uKSxWdC5tb2RlbHMub1NldHRpbmdzPXtvRmVhdHVyZXM6e2JBdXRvV2lkdGg6bnVsbCxiRGVmZXJSZW5kZXI6bnVsbCxiRmlsdGVyOm51bGwsYkluZm86bnVsbCxiTGVuZ3RoQ2hhbmdlOm51bGwsYlBhZ2luYXRlOm51bGwsYlByb2Nlc3Npbmc6bnVsbCxiU2VydmVyU2lkZTpudWxsLGJTb3J0Om51bGwsYlNvcnRNdWx0aTpudWxsLGJTb3J0Q2xhc3NlczpudWxsLGJTdGF0ZVNhdmU6bnVsbH0sb1Njcm9sbDp7YkNvbGxhcHNlOm51bGwsaUJhcldpZHRoOjAsc1g6bnVsbCxzWElubmVyOm51bGwsc1k6bnVsbH0sb0xhbmd1YWdlOntmbkluZm9DYWxsYmFjazpudWxsfSxvQnJvd3Nlcjp7YlNjcm9sbE92ZXJzaXplOiExLGJTY3JvbGxiYXJMZWZ0OiExLGJCb3VuZGluZzohMSxiYXJXaWR0aDowfSxhamF4Om51bGwsYWFuRmVhdHVyZXM6W10sYW9EYXRhOltdLGFpRGlzcGxheTpbXSxhaURpc3BsYXlNYXN0ZXI6W10sYUlkczp7fSxhb0NvbHVtbnM6W10sYW9IZWFkZXI6W10sYW9Gb290ZXI6W10sb1ByZXZpb3VzU2VhcmNoOnt9LGFvUHJlU2VhcmNoQ29sczpbXSxhYVNvcnRpbmc6bnVsbCxhYVNvcnRpbmdGaXhlZDpbXSxhc1N0cmlwZUNsYXNzZXM6bnVsbCxhc0Rlc3Ryb3lTdHJpcGVzOltdLHNEZXN0cm95V2lkdGg6MCxhb1Jvd0NhbGxiYWNrOltdLGFvSGVhZGVyQ2FsbGJhY2s6W10sYW9Gb290ZXJDYWxsYmFjazpbXSxhb0RyYXdDYWxsYmFjazpbXSxhb1Jvd0NyZWF0ZWRDYWxsYmFjazpbXSxhb1ByZURyYXdDYWxsYmFjazpbXSxhb0luaXRDb21wbGV0ZTpbXSxhb1N0YXRlU2F2ZVBhcmFtczpbXSxhb1N0YXRlTG9hZFBhcmFtczpbXSxhb1N0YXRlTG9hZGVkOltdLHNUYWJsZUlkOiIiLG5UYWJsZTpudWxsLG5USGVhZDpudWxsLG5URm9vdDpudWxsLG5UQm9keTpudWxsLG5UYWJsZVdyYXBwZXI6bnVsbCxiRGVmZXJMb2FkaW5nOiExLGJJbml0aWFsaXNlZDohMSxhb09wZW5Sb3dzOltdLHNEb206bnVsbCxzZWFyY2hEZWxheTpudWxsLHNQYWdpbmF0aW9uVHlwZToidHdvX2J1dHRvbiIsaVN0YXRlRHVyYXRpb246MCxhb1N0YXRlU2F2ZTpbXSxhb1N0YXRlTG9hZDpbXSxvU2F2ZWRTdGF0ZTpudWxsLG9Mb2FkZWRTdGF0ZTpudWxsLHNBamF4U291cmNlOm51bGwsc0FqYXhEYXRhUHJvcDpudWxsLGJBamF4RGF0YUdldDohMCxqcVhIUjpudWxsLGpzb246aSxvQWpheERhdGE6aSxmblNlcnZlckRhdGE6bnVsbCxhb1NlcnZlclBhcmFtczpbXSxzU2VydmVyTWV0aG9kOm51bGwsZm5Gb3JtYXROdW1iZXI6bnVsbCxhTGVuZ3RoTWVudTpudWxsLGlEcmF3OjAsYkRyYXdpbmc6ITEsaURyYXdFcnJvcjotMSxfaURpc3BsYXlMZW5ndGg6MTAsX2lEaXNwbGF5U3RhcnQ6MCxfaVJlY29yZHNUb3RhbDowLF9pUmVjb3Jkc0Rpc3BsYXk6MCxvQ2xhc3Nlczp7fSxiRmlsdGVyZWQ6ITEsYlNvcnRlZDohMSxiU29ydENlbGxzVG9wOm51bGwsb0luaXQ6bnVsbCxhb0Rlc3Ryb3lDYWxsYmFjazpbXSxmblJlY29yZHNUb3RhbDpmdW5jdGlvbigpe3JldHVybiJzc3AiPT1qdCh0aGlzKT8xKnRoaXMuX2lSZWNvcmRzVG90YWw6dGhpcy5haURpc3BsYXlNYXN0ZXIubGVuZ3RofSxmblJlY29yZHNEaXNwbGF5OmZ1bmN0aW9uKCl7cmV0dXJuInNzcCI9PWp0KHRoaXMpPzEqdGhpcy5faVJlY29yZHNEaXNwbGF5OnRoaXMuYWlEaXNwbGF5Lmxlbmd0aH0sZm5EaXNwbGF5RW5kOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5faURpc3BsYXlMZW5ndGgsZT10aGlzLl9pRGlzcGxheVN0YXJ0LG49ZSt0LGk9dGhpcy5haURpc3BsYXkubGVuZ3RoLHI9dGhpcy5vRmVhdHVyZXMsbz1yLmJQYWdpbmF0ZTtyZXR1cm4gci5iU2VydmVyU2lkZT8hMT09PW98fC0xPT09dD9lK2k6TWF0aC5taW4oZSt0LHRoaXMuX2lSZWNvcmRzRGlzcGxheSk6IW98fG4+aXx8LTE9PT10P2k6bn0sb0luc3RhbmNlOm51bGwsc0luc3RhbmNlOm51bGwsaVRhYkluZGV4OjAsblNjcm9sbEhlYWQ6bnVsbCxuU2Nyb2xsRm9vdDpudWxsLGFMYXN0U29ydDpbXSxvUGx1Z2luczp7fSxyb3dJZEZuOm51bGwscm93SWQ6bnVsbH0sVnQuZXh0PUJ0PXtidXR0b25zOnt9LGNsYXNzZXM6e30sYnVpbGRlcjoiLXNvdXJjZS0iLGVyck1vZGU6ImFsZXJ0IixmZWF0dXJlOltdLHNlYXJjaDpbXSxzZWxlY3Rvcjp7Y2VsbDpbXSxjb2x1bW46W10scm93OltdfSxpbnRlcm5hbDp7fSxsZWdhY3k6e2FqYXg6bnVsbH0scGFnZXI6e30scmVuZGVyZXI6e3BhZ2VCdXR0b246e30saGVhZGVyOnt9fSxvcmRlcjp7fSx0eXBlOntkZXRlY3Q6W10sc2VhcmNoOnt9LG9yZGVyOnt9fSxfdW5pcXVlOjAsZm5WZXJzaW9uQ2hlY2s6VnQuZm5WZXJzaW9uQ2hlY2ssaUFwaUluZGV4OjAsb0pVSUNsYXNzZXM6e30sc1ZlcnNpb246VnQudmVyc2lvbn0sdC5leHRlbmQoQnQse2FmbkZpbHRlcmluZzpCdC5zZWFyY2gsYVR5cGVzOkJ0LnR5cGUuZGV0ZWN0LG9mblNlYXJjaDpCdC50eXBlLnNlYXJjaCxvU29ydDpCdC50eXBlLm9yZGVyLGFmblNvcnREYXRhOkJ0Lm9yZGVyLGFvRmVhdHVyZXM6QnQuZmVhdHVyZSxvQXBpOkJ0LmludGVybmFsLG9TdGRDbGFzc2VzOkJ0LmNsYXNzZXMsb1BhZ2luYXRpb246QnQucGFnZXJ9KSx0LmV4dGVuZChWdC5leHQuY2xhc3Nlcyx7c1RhYmxlOiJkYXRhVGFibGUiLHNOb0Zvb3Rlcjoibm8tZm9vdGVyIixzUGFnZUJ1dHRvbjoicGFnaW5hdGVfYnV0dG9uIixzUGFnZUJ1dHRvbkFjdGl2ZToiY3VycmVudCIsc1BhZ2VCdXR0b25EaXNhYmxlZDoiZGlzYWJsZWQiLHNTdHJpcGVPZGQ6Im9kZCIsc1N0cmlwZUV2ZW46ImV2ZW4iLHNSb3dFbXB0eToiZGF0YVRhYmxlc19lbXB0eSIsc1dyYXBwZXI6ImRhdGFUYWJsZXNfd3JhcHBlciIsc0ZpbHRlcjoiZGF0YVRhYmxlc19maWx0ZXIiLHNJbmZvOiJkYXRhVGFibGVzX2luZm8iLHNQYWdpbmc6ImRhdGFUYWJsZXNfcGFnaW5hdGUgcGFnaW5nXyIsc0xlbmd0aDoiZGF0YVRhYmxlc19sZW5ndGgiLHNQcm9jZXNzaW5nOiJkYXRhVGFibGVzX3Byb2Nlc3NpbmciLHNTb3J0QXNjOiJzb3J0aW5nX2FzYyIsc1NvcnREZXNjOiJzb3J0aW5nX2Rlc2MiLHNTb3J0YWJsZToic29ydGluZyIsc1NvcnRhYmxlQXNjOiJzb3J0aW5nX2FzY19kaXNhYmxlZCIsc1NvcnRhYmxlRGVzYzoic29ydGluZ19kZXNjX2Rpc2FibGVkIixzU29ydGFibGVOb25lOiJzb3J0aW5nX2Rpc2FibGVkIixzU29ydENvbHVtbjoic29ydGluZ18iLHNGaWx0ZXJJbnB1dDoiIixzTGVuZ3RoU2VsZWN0OiIiLHNTY3JvbGxXcmFwcGVyOiJkYXRhVGFibGVzX3Njcm9sbCIsc1Njcm9sbEhlYWQ6ImRhdGFUYWJsZXNfc2Nyb2xsSGVhZCIsc1Njcm9sbEhlYWRJbm5lcjoiZGF0YVRhYmxlc19zY3JvbGxIZWFkSW5uZXIiLHNTY3JvbGxCb2R5OiJkYXRhVGFibGVzX3Njcm9sbEJvZHkiLHNTY3JvbGxGb290OiJkYXRhVGFibGVzX3Njcm9sbEZvb3QiLHNTY3JvbGxGb290SW5uZXI6ImRhdGFUYWJsZXNfc2Nyb2xsRm9vdElubmVyIixzSGVhZGVyVEg6IiIsc0Zvb3RlclRIOiIiLHNTb3J0SlVJQXNjOiIiLHNTb3J0SlVJRGVzYzoiIixzU29ydEpVSToiIixzU29ydEpVSUFzY0FsbG93ZWQ6IiIsc1NvcnRKVUlEZXNjQWxsb3dlZDoiIixzU29ydEpVSVdyYXBwZXI6IiIsc1NvcnRJY29uOiIiLHNKVUlIZWFkZXI6IiIsc0pVSUZvb3RlcjoiIn0pO3ZhciBNZT1WdC5leHQucGFnZXI7dC5leHRlbmQoTWUse3NpbXBsZTpmdW5jdGlvbigpe3JldHVyblsicHJldmlvdXMiLCJuZXh0Il19LGZ1bGw6ZnVuY3Rpb24oKXtyZXR1cm5bImZpcnN0IiwicHJldmlvdXMiLCJuZXh0IiwibGFzdCJdfSxudW1iZXJzOmZ1bmN0aW9uKHQsZSl7cmV0dXJuWyR0KHQsZSldfSxzaW1wbGVfbnVtYmVyczpmdW5jdGlvbih0LGUpe3JldHVyblsicHJldmlvdXMiLCR0KHQsZSksIm5leHQiXX0sZnVsbF9udW1iZXJzOmZ1bmN0aW9uKHQsZSl7cmV0dXJuWyJmaXJzdCIsInByZXZpb3VzIiwkdCh0LGUpLCJuZXh0IiwibGFzdCJdfSxmaXJzdF9sYXN0X251bWJlcnM6ZnVuY3Rpb24odCxlKXtyZXR1cm5bImZpcnN0IiwkdCh0LGUpLCJsYXN0Il19LF9udW1iZXJzOiR0LG51bWJlcnNfbGVuZ3RoOjd9KSx0LmV4dGVuZCghMCxWdC5leHQucmVuZGVyZXIse3BhZ2VCdXR0b246e186ZnVuY3Rpb24oZSxyLG8sYSxzLGwpe3ZhciBjLHUsZCxoPWUub0NsYXNzZXMsZj1lLm9MYW5ndWFnZS5vUGFnaW5hdGUscD1lLm9MYW5ndWFnZS5vQXJpYS5wYWdpbmF0ZXx8e30sZz0wLG09ZnVuY3Rpb24obixpKXt2YXIgcixhLGQsdix5PWguc1BhZ2VCdXR0b25EaXNhYmxlZCxiPWZ1bmN0aW9uKHQpe2N0KGUsdC5kYXRhLmFjdGlvbiwhMCl9O2ZvcihyPTAsYT1pLmxlbmd0aDtyPGE7cisrKWlmKHY9aVtyXSxBcnJheS5pc0FycmF5KHYpKWQ9dCgiPCIrKHYuRFRfZWx8fCJkaXYiKSsiLz4iKS5hcHBlbmRUbyhuKSxtKGQsdik7ZWxzZXtzd2l0Y2goYz1udWxsLHU9dixkPWUuaVRhYkluZGV4LHYpe2Nhc2UiZWxsaXBzaXMiOm4uYXBwZW5kKCc8c3BhbiBjbGFzcz0iZWxsaXBzaXMiPiYjeDIwMjY7PC9zcGFuPicpO2JyZWFrO2Nhc2UiZmlyc3QiOmM9Zi5zRmlyc3QsMD09PXMmJihkPS0xLHU9dSsiICIreSk7YnJlYWs7Y2FzZSJwcmV2aW91cyI6Yz1mLnNQcmV2aW91cywwPT09cyYmKGQ9LTEsdT11KyIgIit5KTticmVhaztjYXNlIm5leHQiOmM9Zi5zTmV4dCwwIT09bCYmcyE9PWwtMXx8KGQ9LTEsdT11KyIgIit5KTticmVhaztjYXNlImxhc3QiOmM9Zi5zTGFzdCwwIT09bCYmcyE9PWwtMXx8KGQ9LTEsdT11KyIgIit5KTticmVhaztkZWZhdWx0OmM9ZS5mbkZvcm1hdE51bWJlcih2KzEpLHU9cz09PXY/aC5zUGFnZUJ1dHRvbkFjdGl2ZToiIn1udWxsIT09YyYmKFB0KGQ9dCgiPGE+Iix7Y2xhc3M6aC5zUGFnZUJ1dHRvbisiICIrdSwiYXJpYS1jb250cm9scyI6ZS5zVGFibGVJZCwiYXJpYS1sYWJlbCI6cFt2XSwiZGF0YS1kdC1pZHgiOmcsdGFiaW5kZXg6ZCxpZDowPT09byYmInN0cmluZyI9PXR5cGVvZiB2P2Uuc1RhYmxlSWQrIl8iK3Y6bnVsbH0pLmh0bWwoYykuYXBwZW5kVG8obikse2FjdGlvbjp2fSxiKSxnKyspfX07dHJ5e2Q9dChyKS5maW5kKG4uYWN0aXZlRWxlbWVudCkuZGF0YSgiZHQtaWR4Iil9Y2F0Y2godCl7fW0odChyKS5lbXB0eSgpLGEpLGQhPT1pJiZ0KHIpLmZpbmQoIltkYXRhLWR0LWlkeD0iK2QrIl0iKS50cmlnZ2VyKCJmb2N1cyIpfX19KSx0LmV4dGVuZChWdC5leHQudHlwZS5kZXRlY3QsW2Z1bmN0aW9uKHQsZSl7dmFyIG49ZS5vTGFuZ3VhZ2Uuc0RlY2ltYWw7cmV0dXJuIG5lKHQsbik/Im51bSIrbjpudWxsfSxmdW5jdGlvbih0KXtpZih0JiYhKHQgaW5zdGFuY2VvZiBEYXRlKSYmIVF0LnRlc3QodCkpcmV0dXJuIG51bGw7dmFyIGU9RGF0ZS5wYXJzZSh0KTtyZXR1cm4gbnVsbCE9PWUmJiFpc05hTihlKXx8WnQodCk/ImRhdGUiOm51bGx9LGZ1bmN0aW9uKHQsZSl7dmFyIG49ZS5vTGFuZ3VhZ2Uuc0RlY2ltYWw7cmV0dXJuIG5lKHQsbiwhMCk/Im51bS1mbXQiK246bnVsbH0sZnVuY3Rpb24odCxlKXt2YXIgbj1lLm9MYW5ndWFnZS5zRGVjaW1hbDtyZXR1cm4gaWUodCxuKT8iaHRtbC1udW0iK246bnVsbH0sZnVuY3Rpb24odCxlKXt2YXIgbj1lLm9MYW5ndWFnZS5zRGVjaW1hbDtyZXR1cm4gaWUodCxuLCEwKT8iaHRtbC1udW0tZm10IituOm51bGx9LGZ1bmN0aW9uKHQpe3JldHVybiBadCh0KXx8InN0cmluZyI9PXR5cGVvZiB0JiYtMSE9PXQuaW5kZXhPZigiPCIpPyJodG1sIjpudWxsfV0pLHQuZXh0ZW5kKFZ0LmV4dC50eXBlLnNlYXJjaCx7aHRtbDpmdW5jdGlvbih0KXtyZXR1cm4gWnQodCk/dDoic3RyaW5nIj09dHlwZW9mIHQ/dC5yZXBsYWNlKEd0LCIgIikucmVwbGFjZShYdCwiIik6IiJ9LHN0cmluZzpmdW5jdGlvbih0KXtyZXR1cm4gWnQodCk/dDoic3RyaW5nIj09dHlwZW9mIHQ/dC5yZXBsYWNlKEd0LCIgIik6dH19KTt2YXIgT2U9ZnVuY3Rpb24odCxlLG4saSl7cmV0dXJuIDA9PT10fHx0JiYiLSIhPT10PyhlJiYodD1lZSh0LGUpKSx0LnJlcGxhY2UmJihuJiYodD10LnJlcGxhY2UobiwiIikpLGkmJih0PXQucmVwbGFjZShpLCIiKSkpLDEqdCk6LTEvMH07dC5leHRlbmQoQnQudHlwZS5vcmRlcix7ImRhdGUtcHJlIjpmdW5jdGlvbih0KXtyZXR1cm4gdD1EYXRlLnBhcnNlKHQpLGlzTmFOKHQpPy0xLzA6dH0sImh0bWwtcHJlIjpmdW5jdGlvbih0KXtyZXR1cm4gWnQodCk/IiI6dC5yZXBsYWNlP3QucmVwbGFjZSgvPC4qPz4vZywiIikudG9Mb3dlckNhc2UoKTp0KyIifSwic3RyaW5nLXByZSI6ZnVuY3Rpb24odCl7cmV0dXJuIFp0KHQpPyIiOiJzdHJpbmciPT10eXBlb2YgdD90LnRvTG93ZXJDYXNlKCk6dC50b1N0cmluZz90LnRvU3RyaW5nKCk6IiJ9LCJzdHJpbmctYXNjIjpmdW5jdGlvbih0LGUpe3JldHVybiB0PGU/LTE6dD5lPzE6MH0sInN0cmluZy1kZXNjIjpmdW5jdGlvbih0LGUpe3JldHVybiB0PGU/MTp0PmU/LTE6MH19KSx6dCgiIiksdC5leHRlbmQoITAsVnQuZXh0LnJlbmRlcmVyLHtoZWFkZXI6e186ZnVuY3Rpb24oZSxuLGkscil7dChlLm5UYWJsZSkub24oIm9yZGVyLmR0LkRUIiwoZnVuY3Rpb24odCxvLGEscyl7ZT09PW8mJih0PWkuaWR4LG4ucmVtb3ZlQ2xhc3MoaS5zU29ydGluZ0NsYXNzKyIgIityLnNTb3J0QXNjKyIgIityLnNTb3J0RGVzYykuYWRkQ2xhc3MoImFzYyI9PXNbdF0/ci5zU29ydEFzYzoiZGVzYyI9PXNbdF0/ci5zU29ydERlc2M6aS5zU29ydGluZ0NsYXNzKSl9KSl9LGpxdWVyeXVpOmZ1bmN0aW9uKGUsbixpLHIpe3QoIjxkaXYvPiIpLmFkZENsYXNzKHIuc1NvcnRKVUlXcmFwcGVyKS5hcHBlbmQobi5jb250ZW50cygpKS5hcHBlbmQodCgiPHNwYW4vPiIpLmFkZENsYXNzKHIuc1NvcnRJY29uKyIgIitpLnNTb3J0aW5nQ2xhc3NKVUkpKS5hcHBlbmRUbyhuKSx0KGUublRhYmxlKS5vbigib3JkZXIuZHQuRFQiLChmdW5jdGlvbih0LG8sYSxzKXtlPT09byYmKHQ9aS5pZHgsbi5yZW1vdmVDbGFzcyhyLnNTb3J0QXNjKyIgIityLnNTb3J0RGVzYykuYWRkQ2xhc3MoImFzYyI9PXNbdF0/ci5zU29ydEFzYzoiZGVzYyI9PXNbdF0/ci5zU29ydERlc2M6aS5zU29ydGluZ0NsYXNzKSxuLmZpbmQoInNwYW4uIityLnNTb3J0SWNvbikucmVtb3ZlQ2xhc3Moci5zU29ydEpVSUFzYysiICIrci5zU29ydEpVSURlc2MrIiAiK3Iuc1NvcnRKVUkrIiAiK3Iuc1NvcnRKVUlBc2NBbGxvd2VkKyIgIityLnNTb3J0SlVJRGVzY0FsbG93ZWQpLmFkZENsYXNzKCJhc2MiPT1zW3RdP3Iuc1NvcnRKVUlBc2M6ImRlc2MiPT1zW3RdP3Iuc1NvcnRKVUlEZXNjOmkuc1NvcnRpbmdDbGFzc0pVSSkpfSkpfX19KTt2YXIgSWU9ZnVuY3Rpb24odCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P3QucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7Iik6dH07cmV0dXJuIFZ0LnJlbmRlcj17bnVtYmVyOmZ1bmN0aW9uKHQsZSxuLGkscil7cmV0dXJue2Rpc3BsYXk6ZnVuY3Rpb24obyl7aWYoIm51bWJlciIhPXR5cGVvZiBvJiYic3RyaW5nIiE9dHlwZW9mIG8pcmV0dXJuIG87dmFyIGE9bzwwPyItIjoiIixzPXBhcnNlRmxvYXQobyk7cmV0dXJuIGlzTmFOKHMpP0llKG8pOihzPXMudG9GaXhlZChuKSxvPU1hdGguYWJzKHMpLHM9cGFyc2VJbnQobywxMCksbz1uP2UrKG8tcykudG9GaXhlZChuKS5zdWJzdHJpbmcoMik6IiIsYSsoaXx8IiIpK3MudG9TdHJpbmcoKS5yZXBsYWNlKC9cQig/PShcZHszfSkrKD8hXGQpKS9nLHQpK28rKHJ8fCIiKSl9fX0sdGV4dDpmdW5jdGlvbigpe3JldHVybntkaXNwbGF5OkllLGZpbHRlcjpJZX19fSx0LmV4dGVuZChWdC5leHQuaW50ZXJuYWwse19mbkV4dGVybkFwaUZ1bmM6SHQsX2ZuQnVpbGRBamF4OkgsX2ZuQWpheFVwZGF0ZTpCLF9mbkFqYXhQYXJhbWV0ZXJzOnEsX2ZuQWpheFVwZGF0ZURyYXc6VyxfZm5BamF4RGF0YVNyYzpVLF9mbkFkZENvbHVtbjpkLF9mbkNvbHVtbk9wdGlvbnM6aCxfZm5BZGp1c3RDb2x1bW5TaXppbmc6ZixfZm5WaXNpYmxlVG9Db2x1bW5JbmRleDpwLF9mbkNvbHVtbkluZGV4VG9WaXNpYmxlOmcsX2ZuVmlzYmxlQ29sdW1uczptLF9mbkdldENvbHVtbnM6dixfZm5Db2x1bW5UeXBlczp5LF9mbkFwcGx5Q29sdW1uRGVmczpiLF9mbkh1bmdhcmlhbk1hcDpyLF9mbkNhbWVsVG9IdW5nYXJpYW46byxfZm5MYW5ndWFnZUNvbXBhdDphLF9mbkJyb3dzZXJEZXRlY3Q6YyxfZm5BZGREYXRhOncsX2ZuQWRkVHI6eCxfZm5Ob2RlVG9EYXRhSW5kZXg6ZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5fRFRfUm93SW5kZXghPT1pP2UuX0RUX1Jvd0luZGV4Om51bGx9LF9mbk5vZGVUb0NvbHVtbkluZGV4OmZ1bmN0aW9uKGUsbixpKXtyZXR1cm4gdC5pbkFycmF5KGksZS5hb0RhdGFbbl0uYW5DZWxscyl9LF9mbkdldENlbGxEYXRhOl8sX2ZuU2V0Q2VsbERhdGE6UyxfZm5TcGxpdE9iak5vdGF0aW9uOkMsX2ZuR2V0T2JqZWN0RGF0YUZuOmssX2ZuU2V0T2JqZWN0RGF0YUZuOlQsX2ZuR2V0RGF0YU1hc3RlcjpBLF9mbkNsZWFyVGFibGU6RCxfZm5EZWxldGVJbmRleDpFLF9mbkludmFsaWRhdGU6TSxfZm5HZXRSb3dFbGVtZW50czpPLF9mbkNyZWF0ZVRyOkksX2ZuQnVpbGRIZWFkOkwsX2ZuRHJhd0hlYWQ6TixfZm5EcmF3OkYsX2ZuUmVEcmF3OlIsX2ZuQWRkT3B0aW9uc0h0bWw6aixfZm5EZXRlY3RIZWFkZXI6JCxfZm5HZXRVbmlxdWVUaHM6eixfZm5GZWF0dXJlSHRtbEZpbHRlcjpWLF9mbkZpbHRlckNvbXBsZXRlOlksX2ZuRmlsdGVyQ3VzdG9tOkcsX2ZuRmlsdGVyQ29sdW1uOlgsX2ZuRmlsdGVyOlEsX2ZuRmlsdGVyQ3JlYXRlU2VhcmNoOkssX2ZuRXNjYXBlUmVnZXg6ZmUsX2ZuRmlsdGVyRGF0YTpKLF9mbkZlYXR1cmVIdG1sSW5mbzpldCxfZm5VcGRhdGVJbmZvOm50LF9mbkluZm9NYWNyb3M6aXQsX2ZuSW5pdGlhbGlzZTpydCxfZm5Jbml0Q29tcGxldGU6b3QsX2ZuTGVuZ3RoQ2hhbmdlOmF0LF9mbkZlYXR1cmVIdG1sTGVuZ3RoOnN0LF9mbkZlYXR1cmVIdG1sUGFnaW5hdGU6bHQsX2ZuUGFnZUNoYW5nZTpjdCxfZm5GZWF0dXJlSHRtbFByb2Nlc3Npbmc6dXQsX2ZuUHJvY2Vzc2luZ0Rpc3BsYXk6ZHQsX2ZuRmVhdHVyZUh0bWxUYWJsZTpodCxfZm5TY3JvbGxEcmF3OmZ0LF9mbkFwcGx5VG9DaGlsZHJlbjpwdCxfZm5DYWxjdWxhdGVDb2x1bW5XaWR0aHM6Z3QsX2ZuVGhyb3R0bGU6dmUsX2ZuQ29udmVydFRvV2lkdGg6bXQsX2ZuR2V0V2lkZXN0Tm9kZTp2dCxfZm5HZXRNYXhMZW5TdHJpbmc6eXQsX2ZuU3RyaW5nVG9Dc3M6YnQsX2ZuU29ydEZsYXR0ZW46d3QsX2ZuU29ydDp4dCxfZm5Tb3J0QXJpYTpfdCxfZm5Tb3J0TGlzdGVuZXI6U3QsX2ZuU29ydEF0dGFjaExpc3RlbmVyOkN0LF9mblNvcnRpbmdDbGFzc2VzOmt0LF9mblNvcnREYXRhOlR0LF9mblNhdmVTdGF0ZTpBdCxfZm5Mb2FkU3RhdGU6RHQsX2ZuU2V0dGluZ3NGcm9tTm9kZTpFdCxfZm5Mb2c6TXQsX2ZuTWFwOk90LF9mbkJpbmRBY3Rpb246UHQsX2ZuQ2FsbGJhY2tSZWc6THQsX2ZuQ2FsbGJhY2tGaXJlOk50LF9mbkxlbmd0aE92ZXJmbG93OkZ0LF9mblJlbmRlcmVyOlJ0LF9mbkRhdGFTb3VyY2U6anQsX2ZuUm93QXR0cmlidXRlczpQLF9mbkV4dGVuZDpJdCxfZm5DYWxjdWxhdGVFbmQ6ZnVuY3Rpb24oKXt9fSksdC5mbi5kYXRhVGFibGU9VnQsVnQuJD10LHQuZm4uZGF0YVRhYmxlU2V0dGluZ3M9VnQuc2V0dGluZ3MsdC5mbi5kYXRhVGFibGVFeHQ9VnQuZXh0LHQuZm4uRGF0YVRhYmxlPWZ1bmN0aW9uKGUpe3JldHVybiB0KHRoaXMpLmRhdGFUYWJsZShlKS5hcGkoKX0sdC5lYWNoKFZ0LChmdW5jdGlvbihlLG4pe3QuZm4uRGF0YVRhYmxlW2VdPW59KSksdC5mbi5kYXRhVGFibGV9KSksZnVuY3Rpb24odCl7ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyJqcXVlcnkiLCJkYXRhdGFibGVzLm5ldCJdLChmdW5jdGlvbihlKXtyZXR1cm4gdChlLHdpbmRvdyxkb2N1bWVudCl9KSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWZ1bmN0aW9uKGUsbil7cmV0dXJuIGV8fChlPXdpbmRvdyksbiYmbi5mbi5kYXRhVGFibGV8fChuPXJlcXVpcmUoImRhdGF0YWJsZXMubmV0IikoZSxuKS4kKSx0KG4sZSxlLmRvY3VtZW50KX06dChqUXVlcnksd2luZG93LGRvY3VtZW50KX0oKGZ1bmN0aW9uKHQsZSxuLGkpe2Z1bmN0aW9uIHIodCxlLG4pe3ZhciByPWUrIi0iK247aWYoc1tyXSl7dD10LmNlbGwoZSxuKS5ub2RlKCksZT1bXTtmb3IodmFyIG89MCxhPShuPXNbcl1bMF0ucGFyZW50Tm9kZS5jaGlsZE5vZGVzKS5sZW5ndGg7bzxhO28rKyllLnB1c2gobltvXSk7Zm9yKG49MCxvPWUubGVuZ3RoO248bztuKyspdC5hcHBlbmRDaGlsZChlW25dKTtzW3JdPWl9fXZhciBvPXQuZm4uZGF0YVRhYmxlLGE9ZnVuY3Rpb24oZSxuKXtpZighby52ZXJzaW9uQ2hlY2t8fCFvLnZlcnNpb25DaGVjaygiMS4xMC4xMCIpKXRocm93IkRhdGFUYWJsZXMgUmVzcG9uc2l2ZSByZXF1aXJlcyBEYXRhVGFibGVzIDEuMTAuMTAgb3IgbmV3ZXIiO3RoaXMucz17ZHQ6bmV3IG8uQXBpKGUpLGNvbHVtbnM6W10sY3VycmVudDpbXX0sdGhpcy5zLmR0LnNldHRpbmdzKClbMF0ucmVzcG9uc2l2ZXx8KG4mJiJzdHJpbmciPT10eXBlb2Ygbi5kZXRhaWxzP24uZGV0YWlscz17dHlwZTpuLmRldGFpbHN9Om4mJiExPT09bi5kZXRhaWxzP24uZGV0YWlscz17dHlwZTohMX06biYmITA9PT1uLmRldGFpbHMmJihuLmRldGFpbHM9e3R5cGU6ImlubGluZSJ9KSx0aGlzLmM9dC5leHRlbmQoITAse30sYS5kZWZhdWx0cyxvLmRlZmF1bHRzLnJlc3BvbnNpdmUsbiksZS5yZXNwb25zaXZlPXRoaXMsdGhpcy5fY29uc3RydWN0b3IoKSl9O3QuZXh0ZW5kKGEucHJvdG90eXBlLHtfY29uc3RydWN0b3I6ZnVuY3Rpb24oKXt2YXIgbj10aGlzLGk9dGhpcy5zLmR0LHI9aS5zZXR0aW5ncygpWzBdLGE9dChlKS5pbm5lcldpZHRoKCk7aS5zZXR0aW5ncygpWzBdLl9yZXNwb25zaXZlPXRoaXMsdChlKS5vbigicmVzaXplLmR0ciBvcmllbnRhdGlvbmNoYW5nZS5kdHIiLG8udXRpbC50aHJvdHRsZSgoZnVuY3Rpb24oKXt2YXIgaT10KGUpLmlubmVyV2lkdGgoKTtpIT09YSYmKG4uX3Jlc2l6ZSgpLGE9aSl9KSkpLHIub0FwaS5fZm5DYWxsYmFja1JlZyhyLCJhb1Jvd0NyZWF0ZWRDYWxsYmFjayIsKGZ1bmN0aW9uKGUpey0xIT09dC5pbkFycmF5KCExLG4ucy5jdXJyZW50KSYmdCgiPnRkLCA+dGgiLGUpLmVhY2goKGZ1bmN0aW9uKGUpe2U9aS5jb2x1bW4uaW5kZXgoInRvRGF0YSIsZSksITE9PT1uLnMuY3VycmVudFtlXSYmdCh0aGlzKS5jc3MoImRpc3BsYXkiLCJub25lIil9KSl9KSksaS5vbigiZGVzdHJveS5kdHIiLChmdW5jdGlvbigpe2kub2ZmKCIuZHRyIiksdChpLnRhYmxlKCkuYm9keSgpKS5vZmYoIi5kdHIiKSx0KGUpLm9mZigicmVzaXplLmR0ciBvcmllbnRhdGlvbmNoYW5nZS5kdHIiKSxpLmNlbGxzKCIuZHRyLWNvbnRyb2wiKS5ub2RlcygpLnRvJCgpLnJlbW92ZUNsYXNzKCJkdHItY29udHJvbCIpLHQuZWFjaChuLnMuY3VycmVudCwoZnVuY3Rpb24odCxlKXshMT09PWUmJm4uX3NldENvbHVtblZpcyh0LCEwKX0pKX0pKSx0aGlzLmMuYnJlYWtwb2ludHMuc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC53aWR0aDxlLndpZHRoPzE6dC53aWR0aD5lLndpZHRoPy0xOjB9KSksdGhpcy5fY2xhc3NMb2dpYygpLHRoaXMuX3Jlc2l6ZUF1dG8oKSwhMSE9PShyPXRoaXMuYy5kZXRhaWxzKS50eXBlJiYobi5fZGV0YWlsc0luaXQoKSxpLm9uKCJjb2x1bW4tdmlzaWJpbGl0eS5kdHIiLChmdW5jdGlvbigpe24uX3RpbWVyJiZjbGVhclRpbWVvdXQobi5fdGltZXIpLG4uX3RpbWVyPXNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7bi5fdGltZXI9bnVsbCxuLl9jbGFzc0xvZ2ljKCksbi5fcmVzaXplQXV0bygpLG4uX3Jlc2l6ZSghMCksbi5fcmVkcmF3Q2hpbGRyZW4oKX0pLDEwMCl9KSksaS5vbigiZHJhdy5kdHIiLChmdW5jdGlvbigpe24uX3JlZHJhd0NoaWxkcmVuKCl9KSksdChpLnRhYmxlKCkubm9kZSgpKS5hZGRDbGFzcygiZHRyLSIrci50eXBlKSksaS5vbigiY29sdW1uLXJlb3JkZXIuZHRyIiwoZnVuY3Rpb24oKXtuLl9jbGFzc0xvZ2ljKCksbi5fcmVzaXplQXV0bygpLG4uX3Jlc2l6ZSghMCl9KSksaS5vbigiY29sdW1uLXNpemluZy5kdHIiLChmdW5jdGlvbigpe24uX3Jlc2l6ZUF1dG8oKSxuLl9yZXNpemUoKX0pKSxpLm9uKCJwcmVYaHIuZHRyIiwoZnVuY3Rpb24oKXt2YXIgdD1bXTtpLnJvd3MoKS5ldmVyeSgoZnVuY3Rpb24oKXt0aGlzLmNoaWxkLmlzU2hvd24oKSYmdC5wdXNoKHRoaXMuaWQoITApKX0pKSxpLm9uZSgiZHJhdy5kdHIiLChmdW5jdGlvbigpe24uX3Jlc2l6ZUF1dG8oKSxuLl9yZXNpemUoKSxpLnJvd3ModCkuZXZlcnkoKGZ1bmN0aW9uKCl7bi5fZGV0YWlsc0Rpc3BsYXkodGhpcywhMSl9KSl9KSl9KSksaS5vbigiZHJhdy5kdHIiLChmdW5jdGlvbigpe24uX2NvbnRyb2xDbGFzcygpfSkpLm9uKCJpbml0LmR0ciIsKGZ1bmN0aW9uKGUpeyJkdCI9PT1lLm5hbWVzcGFjZSYmKG4uX3Jlc2l6ZUF1dG8oKSxuLl9yZXNpemUoKSx0LmluQXJyYXkoITEsbi5zLmN1cnJlbnQpJiZpLmNvbHVtbnMuYWRqdXN0KCkpfSkpLHRoaXMuX3Jlc2l6ZSgpfSxfY29sdW1uc1Zpc2libGl0eTpmdW5jdGlvbihlKXt2YXIgbixpLHI9dGhpcy5zLmR0LG89dGhpcy5zLmNvbHVtbnMsYT1vLm1hcCgoZnVuY3Rpb24odCxlKXtyZXR1cm57Y29sdW1uSWR4OmUscHJpb3JpdHk6dC5wcmlvcml0eX19KSkuc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5wcmlvcml0eSE9PWUucHJpb3JpdHk/dC5wcmlvcml0eS1lLnByaW9yaXR5OnQuY29sdW1uSWR4LWUuY29sdW1uSWR4fSkpLHM9dC5tYXAobywoZnVuY3Rpb24obixpKXtyZXR1cm4hMT09PXIuY29sdW1uKGkpLnZpc2libGUoKT8ibm90LXZpc2libGUiOighbi5hdXRvfHxudWxsIT09bi5taW5XaWR0aCkmJighMD09PW4uYXV0bz8iLSI6LTEhPT10LmluQXJyYXkoZSxuLmluY2x1ZGVJbikpfSkpLGw9MDtmb3Iobj0wLGk9cy5sZW5ndGg7bjxpO24rKykhMD09PXNbbl0mJihsKz1vW25dLm1pbldpZHRoKTtmb3Iobj0obj1yLnNldHRpbmdzKClbMF0ub1Njcm9sbCkuc1l8fG4uc1g/bi5pQmFyV2lkdGg6MCxsPXIudGFibGUoKS5jb250YWluZXIoKS5vZmZzZXRXaWR0aC1uLWwsbj0wLGk9cy5sZW5ndGg7bjxpO24rKylvW25dLmNvbnRyb2wmJihsLT1vW25dLm1pbldpZHRoKTt2YXIgYz0hMTtmb3Iobj0wLGk9YS5sZW5ndGg7bjxpO24rKyl7dmFyIHU9YVtuXS5jb2x1bW5JZHg7Ii0iPT09c1t1XSYmIW9bdV0uY29udHJvbCYmb1t1XS5taW5XaWR0aCYmKGN8fDA+bC1vW3VdLm1pbldpZHRoPyhjPSEwLHNbdV09ITEpOnNbdV09ITAsbC09b1t1XS5taW5XaWR0aCl9Zm9yKGE9ITEsbj0wLGk9by5sZW5ndGg7bjxpO24rKylpZighb1tuXS5jb250cm9sJiYhb1tuXS5uZXZlciYmITE9PT1zW25dKXthPSEwO2JyZWFrfWZvcihuPTAsaT1vLmxlbmd0aDtuPGk7bisrKW9bbl0uY29udHJvbCYmKHNbbl09YSksIm5vdC12aXNpYmxlIj09PXNbbl0mJihzW25dPSExKTtyZXR1cm4tMT09PXQuaW5BcnJheSghMCxzKSYmKHNbMF09ITApLHN9LF9jbGFzc0xvZ2ljOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyxuPXRoaXMuYy5icmVha3BvaW50cyxyPXRoaXMucy5kdCxvPXIuY29sdW1ucygpLmVxKDApLm1hcCgoZnVuY3Rpb24odCl7dmFyIGU9KG49dGhpcy5jb2x1bW4odCkpLmhlYWRlcigpLmNsYXNzTmFtZSxuPSh0PXIuc2V0dGluZ3MoKVswXS5hb0NvbHVtbnNbdF0ucmVzcG9uc2l2ZVByaW9yaXR5LG4uaGVhZGVyKCkuZ2V0QXR0cmlidXRlKCJkYXRhLXByaW9yaXR5IikpO3JldHVybiB0PT09aSYmKHQ9bj09PWl8fG51bGw9PT1uPzFlNDoxKm4pLHtjbGFzc05hbWU6ZSxpbmNsdWRlSW46W10sYXV0bzohMSxjb250cm9sOiExLG5ldmVyOiEhZS5tYXRjaCgvXGJuZXZlclxiLykscHJpb3JpdHk6dH19KSksYT1mdW5jdGlvbihlLG4pe3ZhciBpPW9bZV0uaW5jbHVkZUluOy0xPT09dC5pbkFycmF5KG4saSkmJmkucHVzaChuKX0scz1mdW5jdGlvbih0LGkscixzKXtpZihyKXtpZigibWF4LSI9PT1yKWZvcihzPWUuX2ZpbmQoaSkud2lkdGgsaT0wLHI9bi5sZW5ndGg7aTxyO2krKyluW2ldLndpZHRoPD1zJiZhKHQsbltpXS5uYW1lKTtlbHNlIGlmKCJtaW4tIj09PXIpZm9yKHM9ZS5fZmluZChpKS53aWR0aCxpPTAscj1uLmxlbmd0aDtpPHI7aSsrKW5baV0ud2lkdGg+PXMmJmEodCxuW2ldLm5hbWUpO2Vsc2UgaWYoIm5vdC0iPT09cilmb3IoaT0wLHI9bi5sZW5ndGg7aTxyO2krKyktMT09PW5baV0ubmFtZS5pbmRleE9mKHMpJiZhKHQsbltpXS5uYW1lKX1lbHNlIG9bdF0uaW5jbHVkZUluLnB1c2goaSl9O28uZWFjaCgoZnVuY3Rpb24oZSxpKXtmb3IodmFyIHI9ZS5jbGFzc05hbWUuc3BsaXQoIiAiKSxvPSExLGE9MCxsPXIubGVuZ3RoO2E8bDthKyspe3ZhciBjPXJbYV0udHJpbSgpO2lmKCJhbGwiPT09YylyZXR1cm4gbz0hMCx2b2lkKGUuaW5jbHVkZUluPXQubWFwKG4sKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm5hbWV9KSkpO2lmKCJub25lIj09PWN8fGUubmV2ZXIpcmV0dXJuIHZvaWQobz0hMCk7aWYoImNvbnRyb2wiPT09Y3x8ImR0ci1jb250cm9sIj09PWMpcmV0dXJuIG89ITAsdm9pZChlLmNvbnRyb2w9ITApO3QuZWFjaChuLChmdW5jdGlvbih0LGUpe3ZhciBuPWUubmFtZS5zcGxpdCgiLSIpLHI9Yy5tYXRjaChSZWdFeHAoIihtaW5cXC18bWF4XFwtfG5vdFxcLSk/KCIrblswXSsiKShcXC1bX2EtekEtWjAtOV0pPyIpKTtyJiYobz0hMCxyWzJdPT09blswXSYmclszXT09PSItIituWzFdP3MoaSxlLm5hbWUsclsxXSxyWzJdK3JbM10pOnJbMl09PT1uWzBdJiYhclszXSYmcyhpLGUubmFtZSxyWzFdLHJbMl0pKX0pKX1vfHwoZS5hdXRvPSEwKX0pKSx0aGlzLnMuY29sdW1ucz1vfSxfY29udHJvbENsYXNzOmZ1bmN0aW9uKCl7aWYoImlubGluZSI9PT10aGlzLmMuZGV0YWlscy50eXBlKXt2YXIgZT10aGlzLnMuZHQsbj10LmluQXJyYXkoITAsdGhpcy5zLmN1cnJlbnQpO2UuY2VsbHMobnVsbCwoZnVuY3Rpb24odCl7cmV0dXJuIHQhPT1ufSkse3BhZ2U6ImN1cnJlbnQifSkubm9kZXMoKS50byQoKS5maWx0ZXIoIi5kdHItY29udHJvbCIpLnJlbW92ZUNsYXNzKCJkdHItY29udHJvbCIpLGUuY2VsbHMobnVsbCxuLHtwYWdlOiJjdXJyZW50In0pLm5vZGVzKCkudG8kKCkuYWRkQ2xhc3MoImR0ci1jb250cm9sIil9fSxfZGV0YWlsc0Rpc3BsYXk6ZnVuY3Rpb24oZSxuKXt2YXIgaT10aGlzLHI9dGhpcy5zLmR0LG89dGhpcy5jLmRldGFpbHM7aWYobyYmITEhPT1vLnR5cGUpe3ZhciBhPW8uZGlzcGxheShlLG4sKGZ1bmN0aW9uKCl7cmV0dXJuIG8ucmVuZGVyZXIocixlWzBdLGkuX2RldGFpbHNPYmooZVswXSkpfSkpOyghMD09PWF8fCExPT09YSkmJnQoci50YWJsZSgpLm5vZGUoKSkudHJpZ2dlckhhbmRsZXIoInJlc3BvbnNpdmUtZGlzcGxheS5kdCIsW3IsZSxhLG5dKX19LF9kZXRhaWxzSW5pdDpmdW5jdGlvbigpe3ZhciBlPXRoaXMsbj10aGlzLnMuZHQscj10aGlzLmMuZGV0YWlsczsiaW5saW5lIj09PXIudHlwZSYmKHIudGFyZ2V0PSJ0ZC5kdHItY29udHJvbCwgdGguZHRyLWNvbnRyb2wiKSxuLm9uKCJkcmF3LmR0ciIsKGZ1bmN0aW9uKCl7ZS5fdGFiSW5kZXhlcygpfSkpLGUuX3RhYkluZGV4ZXMoKSx0KG4udGFibGUoKS5ib2R5KCkpLm9uKCJrZXl1cC5kdHIiLCJ0ZCwgdGgiLChmdW5jdGlvbihlKXsxMz09PWUua2V5Q29kZSYmdCh0aGlzKS5kYXRhKCJkdHIta2V5Ym9hcmQiKSYmdCh0aGlzKS5jbGljaygpfSkpO3ZhciBvPXIudGFyZ2V0O289PT1pJiZudWxsPT09b3x8dChuLnRhYmxlKCkuYm9keSgpKS5vbigiY2xpY2suZHRyIG1vdXNlZG93bi5kdHIgbW91c2V1cC5kdHIiLCJzdHJpbmciPT10eXBlb2Ygbz9vOiJ0ZCwgdGgiLChmdW5jdGlvbihpKXtpZih0KG4udGFibGUoKS5ub2RlKCkpLmhhc0NsYXNzKCJjb2xsYXBzZWQiKSYmLTEhPT10LmluQXJyYXkodCh0aGlzKS5jbG9zZXN0KCJ0ciIpLmdldCgwKSxuLnJvd3MoKS5ub2RlcygpLnRvQXJyYXkoKSkpe2lmKCJudW1iZXIiPT10eXBlb2Ygbyl7dmFyIHI9bzwwP24uY29sdW1ucygpLmVxKDApLmxlbmd0aCtvOm87aWYobi5jZWxsKHRoaXMpLmluZGV4KCkuY29sdW1uIT09cilyZXR1cm59cj1uLnJvdyh0KHRoaXMpLmNsb3Nlc3QoInRyIikpLCJjbGljayI9PT1pLnR5cGU/ZS5fZGV0YWlsc0Rpc3BsYXkociwhMSk6Im1vdXNlZG93biI9PT1pLnR5cGU/dCh0aGlzKS5jc3MoIm91dGxpbmUiLCJub25lIik6Im1vdXNldXAiPT09aS50eXBlJiZ0KHRoaXMpLnRyaWdnZXIoImJsdXIiKS5jc3MoIm91dGxpbmUiLCIiKX19KSl9LF9kZXRhaWxzT2JqOmZ1bmN0aW9uKGUpe3ZhciBuPXRoaXMsaT10aGlzLnMuZHQ7cmV0dXJuIHQubWFwKHRoaXMucy5jb2x1bW5zLChmdW5jdGlvbihyLG8pe2lmKCFyLm5ldmVyJiYhci5jb250cm9sKXt2YXIgYT1pLnNldHRpbmdzKClbMF0uYW9Db2x1bW5zW29dO3JldHVybntjbGFzc05hbWU6YS5zQ2xhc3MsY29sdW1uSW5kZXg6byxkYXRhOmkuY2VsbChlLG8pLnJlbmRlcihuLmMub3J0aG9nb25hbCksaGlkZGVuOmkuY29sdW1uKG8pLnZpc2libGUoKSYmIW4ucy5jdXJyZW50W29dLHJvd0luZGV4OmUsdGl0bGU6bnVsbCE9PWEuc1RpdGxlP2Euc1RpdGxlOnQoaS5jb2x1bW4obykuaGVhZGVyKCkpLnRleHQoKX19fSkpfSxfZmluZDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5jLmJyZWFrcG9pbnRzLG49MCxpPWUubGVuZ3RoO248aTtuKyspaWYoZVtuXS5uYW1lPT09dClyZXR1cm4gZVtuXX0sX3JlZHJhd0NoaWxkcmVuOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPXRoaXMucy5kdDtlLnJvd3Moe3BhZ2U6ImN1cnJlbnQifSkuaXRlcmF0b3IoInJvdyIsKGZ1bmN0aW9uKG4saSl7ZS5yb3coaSksdC5fZGV0YWlsc0Rpc3BsYXkoZS5yb3coaSksITApfSkpfSxfcmVzaXplOmZ1bmN0aW9uKG4pe3ZhciBpLHI9dGhpcyxvPXRoaXMucy5kdCxhPXQoZSkuaW5uZXJXaWR0aCgpLHM9dGhpcy5jLmJyZWFrcG9pbnRzLGw9c1swXS5uYW1lLGM9dGhpcy5zLmNvbHVtbnMsdT10aGlzLnMuY3VycmVudC5zbGljZSgpO2ZvcihpPXMubGVuZ3RoLTE7MDw9aTtpLS0paWYoYTw9c1tpXS53aWR0aCl7bD1zW2ldLm5hbWU7YnJlYWt9dmFyIGQ9dGhpcy5fY29sdW1uc1Zpc2libGl0eShsKTtmb3IodGhpcy5zLmN1cnJlbnQ9ZCxzPSExLGk9MCxhPWMubGVuZ3RoO2k8YTtpKyspaWYoITE9PT1kW2ldJiYhY1tpXS5uZXZlciYmIWNbaV0uY29udHJvbCYmITE9PSFvLmNvbHVtbihpKS52aXNpYmxlKCkpe3M9ITA7YnJlYWt9dChvLnRhYmxlKCkubm9kZSgpKS50b2dnbGVDbGFzcygiY29sbGFwc2VkIixzKTt2YXIgaD0hMSxmPTA7by5jb2x1bW5zKCkuZXEoMCkuZWFjaCgoZnVuY3Rpb24odCxlKXshMD09PWRbZV0mJmYrKywobnx8ZFtlXSE9PXVbZV0pJiYoaD0hMCxyLl9zZXRDb2x1bW5WaXModCxkW2VdKSl9KSksaCYmKHRoaXMuX3JlZHJhd0NoaWxkcmVuKCksdChvLnRhYmxlKCkubm9kZSgpKS50cmlnZ2VyKCJyZXNwb25zaXZlLXJlc2l6ZS5kdCIsW28sdGhpcy5zLmN1cnJlbnRdKSwwPT09by5wYWdlLmluZm8oKS5yZWNvcmRzRGlzcGxheSYmdCgidGQiLG8udGFibGUoKS5ib2R5KCkpLmVxKDApLmF0dHIoImNvbHNwYW4iLGYpKSxyLl9jb250cm9sQ2xhc3MoKX0sX3Jlc2l6ZUF1dG86ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnMuZHQsbj10aGlzLnMuY29sdW1ucztpZih0aGlzLmMuYXV0byYmLTEhPT10LmluQXJyYXkoITAsdC5tYXAobiwoZnVuY3Rpb24odCl7cmV0dXJuIHQuYXV0b30pKSkpe3QuaXNFbXB0eU9iamVjdChzKXx8dC5lYWNoKHMsKGZ1bmN0aW9uKHQpe3Q9dC5zcGxpdCgiLSIpLHIoZSwxKnRbMF0sMSp0WzFdKX0pKSxlLnRhYmxlKCkubm9kZSgpO3ZhciBpPWUudGFibGUoKS5ub2RlKCkuY2xvbmVOb2RlKCExKSxvPXQoZS50YWJsZSgpLmhlYWRlcigpLmNsb25lTm9kZSghMSkpLmFwcGVuZFRvKGkpLGE9dChlLnRhYmxlKCkuYm9keSgpKS5jbG9uZSghMSwhMSkuZW1wdHkoKS5hcHBlbmRUbyhpKTtpLnN0eWxlLndpZHRoPSJhdXRvIjt2YXIgbD1lLmNvbHVtbnMoKS5oZWFkZXIoKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBlLmNvbHVtbih0KS52aXNpYmxlKCl9KSkudG8kKCkuY2xvbmUoITEpLmNzcygiZGlzcGxheSIsInRhYmxlLWNlbGwiKS5jc3MoIndpZHRoIiwiYXV0byIpLmNzcygibWluLXdpZHRoIiwwKTtpZih0KGEpLmFwcGVuZCh0KGUucm93cyh7cGFnZToiY3VycmVudCJ9KS5ub2RlcygpKS5jbG9uZSghMSkpLmZpbmQoInRoLCB0ZCIpLmNzcygiZGlzcGxheSIsIiIpLGE9ZS50YWJsZSgpLmZvb3RlcigpKXthPXQoYS5jbG9uZU5vZGUoITEpKS5hcHBlbmRUbyhpKTt2YXIgYz1lLmNvbHVtbnMoKS5mb290ZXIoKS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiBlLmNvbHVtbih0KS52aXNpYmxlKCl9KSkudG8kKCkuY2xvbmUoITEpLmNzcygiZGlzcGxheSIsInRhYmxlLWNlbGwiKTt0KCI8dHIvPiIpLmFwcGVuZChjKS5hcHBlbmRUbyhhKX10KCI8dHIvPiIpLmFwcGVuZChsKS5hcHBlbmRUbyhvKSwiaW5saW5lIj09PXRoaXMuYy5kZXRhaWxzLnR5cGUmJnQoaSkuYWRkQ2xhc3MoImR0ci1pbmxpbmUgY29sbGFwc2VkIiksdChpKS5maW5kKCJbbmFtZV0iKS5yZW1vdmVBdHRyKCJuYW1lIiksdChpKS5jc3MoInBvc2l0aW9uIiwicmVsYXRpdmUiKSwoaT10KCI8ZGl2Lz4iKS5jc3Moe3dpZHRoOjEsaGVpZ2h0OjEsb3ZlcmZsb3c6ImhpZGRlbiIsY2xlYXI6ImJvdGgifSkuYXBwZW5kKGkpKS5pbnNlcnRCZWZvcmUoZS50YWJsZSgpLm5vZGUoKSksbC5lYWNoKChmdW5jdGlvbih0KXt0PWUuY29sdW1uLmluZGV4KCJmcm9tVmlzaWJsZSIsdCksblt0XS5taW5XaWR0aD10aGlzLm9mZnNldFdpZHRofHwwfSkpLGkucmVtb3ZlKCl9fSxfcmVzcG9uc2l2ZU9ubHlIaWRkZW46ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnMuZHQ7cmV0dXJuIHQubWFwKHRoaXMucy5jdXJyZW50LChmdW5jdGlvbih0LG4pe3JldHVybiExPT09ZS5jb2x1bW4obikudmlzaWJsZSgpfHx0fSkpfSxfc2V0Q29sdW1uVmlzOmZ1bmN0aW9uKGUsbil7dmFyIGk9dGhpcy5zLmR0LG89bj8iIjoibm9uZSI7dChpLmNvbHVtbihlKS5oZWFkZXIoKSkuY3NzKCJkaXNwbGF5IixvKSx0KGkuY29sdW1uKGUpLmZvb3RlcigpKS5jc3MoImRpc3BsYXkiLG8pLGkuY29sdW1uKGUpLm5vZGVzKCkudG8kKCkuY3NzKCJkaXNwbGF5IixvKSx0LmlzRW1wdHlPYmplY3Qocyl8fGkuY2VsbHMobnVsbCxlKS5pbmRleGVzKCkuZWFjaCgoZnVuY3Rpb24odCl7cihpLHQucm93LHQuY29sdW1uKX0pKX0sX3RhYkluZGV4ZXM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnMuZHQsbj1lLmNlbGxzKHtwYWdlOiJjdXJyZW50In0pLm5vZGVzKCkudG8kKCksaT1lLnNldHRpbmdzKClbMF0scj10aGlzLmMuZGV0YWlscy50YXJnZXQ7bi5maWx0ZXIoIltkYXRhLWR0ci1rZXlib2FyZF0iKS5yZW1vdmVEYXRhKCJbZGF0YS1kdHIta2V5Ym9hcmRdIiksIm51bWJlciI9PXR5cGVvZiByP2UuY2VsbHMobnVsbCxyLHtwYWdlOiJjdXJyZW50In0pLm5vZGVzKCkudG8kKCkuYXR0cigidGFiSW5kZXgiLGkuaVRhYkluZGV4KS5kYXRhKCJkdHIta2V5Ym9hcmQiLDEpOigidGQ6Zmlyc3QtY2hpbGQsIHRoOmZpcnN0LWNoaWxkIj09PXImJihyPSI+dGQ6Zmlyc3QtY2hpbGQsID50aDpmaXJzdC1jaGlsZCIpLHQocixlLnJvd3Moe3BhZ2U6ImN1cnJlbnQifSkubm9kZXMoKSkuYXR0cigidGFiSW5kZXgiLGkuaVRhYkluZGV4KS5kYXRhKCJkdHIta2V5Ym9hcmQiLDEpKX19KSxhLmJyZWFrcG9pbnRzPVt7bmFtZToiZGVza3RvcCIsd2lkdGg6MS8wfSx7bmFtZToidGFibGV0LWwiLHdpZHRoOjEwMjR9LHtuYW1lOiJ0YWJsZXQtcCIsd2lkdGg6NzY4fSx7bmFtZToibW9iaWxlLWwiLHdpZHRoOjQ4MH0se25hbWU6Im1vYmlsZS1wIix3aWR0aDozMjB9XSxhLmRpc3BsYXk9e2NoaWxkUm93OmZ1bmN0aW9uKGUsbixpKXtyZXR1cm4gbj90KGUubm9kZSgpKS5oYXNDbGFzcygicGFyZW50Iik/KGUuY2hpbGQoaSgpLCJjaGlsZCIpLnNob3coKSwhMCk6dm9pZCAwOmUuY2hpbGQuaXNTaG93bigpPyhlLmNoaWxkKCExKSx0KGUubm9kZSgpKS5yZW1vdmVDbGFzcygicGFyZW50IiksITEpOihlLmNoaWxkKGkoKSwiY2hpbGQiKS5zaG93KCksdChlLm5vZGUoKSkuYWRkQ2xhc3MoInBhcmVudCIpLCEwKX0sY2hpbGRSb3dJbW1lZGlhdGU6ZnVuY3Rpb24oZSxuLGkpe3JldHVybiFuJiZlLmNoaWxkLmlzU2hvd24oKXx8IWUucmVzcG9uc2l2ZS5oYXNIaWRkZW4oKT8oZS5jaGlsZCghMSksdChlLm5vZGUoKSkucmVtb3ZlQ2xhc3MoInBhcmVudCIpLCExKTooZS5jaGlsZChpKCksImNoaWxkIikuc2hvdygpLHQoZS5ub2RlKCkpLmFkZENsYXNzKCJwYXJlbnQiKSwhMCl9LG1vZGFsOmZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihpLHIsbyl7aWYocil0KCJkaXYuZHRyLW1vZGFsLWNvbnRlbnQiKS5lbXB0eSgpLmFwcGVuZChvKCkpO2Vsc2V7dmFyIGE9ZnVuY3Rpb24oKXtzLnJlbW92ZSgpLHQobikub2ZmKCJrZXlwcmVzcy5kdHIiKX0scz10KCc8ZGl2IGNsYXNzPSJkdHItbW9kYWwiLz4nKS5hcHBlbmQodCgnPGRpdiBjbGFzcz0iZHRyLW1vZGFsLWRpc3BsYXkiLz4nKS5hcHBlbmQodCgnPGRpdiBjbGFzcz0iZHRyLW1vZGFsLWNvbnRlbnQiLz4nKS5hcHBlbmQobygpKSkuYXBwZW5kKHQoJzxkaXYgY2xhc3M9ImR0ci1tb2RhbC1jbG9zZSI+JnRpbWVzOzwvZGl2PicpLmNsaWNrKChmdW5jdGlvbigpe2EoKX0pKSkpLmFwcGVuZCh0KCc8ZGl2IGNsYXNzPSJkdHItbW9kYWwtYmFja2dyb3VuZCIvPicpLmNsaWNrKChmdW5jdGlvbigpe2EoKX0pKSkuYXBwZW5kVG8oImJvZHkiKTt0KG4pLm9uKCJrZXl1cC5kdHIiLChmdW5jdGlvbih0KXsyNz09PXQua2V5Q29kZSYmKHQuc3RvcFByb3BhZ2F0aW9uKCksYSgpKX0pKX1lJiZlLmhlYWRlciYmdCgiZGl2LmR0ci1tb2RhbC1jb250ZW50IikucHJlcGVuZCgiPGgyPiIrZS5oZWFkZXIoaSkrIjwvaDI+Iil9fX07dmFyIHM9e307YS5yZW5kZXJlcj17bGlzdEhpZGRlbk5vZGVzOmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGUsbixpKXt2YXIgcj10KCc8dWwgZGF0YS1kdHItaW5kZXg9IicrbisnIiBjbGFzcz0iZHRyLWRldGFpbHMiLz4nKSxvPSExO3JldHVybiB0LmVhY2goaSwoZnVuY3Rpb24obixpKXtpLmhpZGRlbiYmKHQoIjxsaSAiKyhpLmNsYXNzTmFtZT8nY2xhc3M9IicraS5jbGFzc05hbWUrJyInOiIiKSsnIGRhdGEtZHRyLWluZGV4PSInK2kuY29sdW1uSW5kZXgrJyIgZGF0YS1kdC1yb3c9IicraS5yb3dJbmRleCsnIiBkYXRhLWR0LWNvbHVtbj0iJytpLmNvbHVtbkluZGV4KyciPjxzcGFuIGNsYXNzPSJkdHItdGl0bGUiPicraS50aXRsZSsiPC9zcGFuPiA8L2xpPiIpLmFwcGVuZCh0KCc8c3BhbiBjbGFzcz0iZHRyLWRhdGEiLz4nKS5hcHBlbmQoZnVuY3Rpb24odCxlLG4pe3ZhciBpPWUrIi0iK247aWYoc1tpXSlyZXR1cm4gc1tpXTt2YXIgcj1bXTtmb3IodD10LmNlbGwoZSxuKS5ub2RlKCkuY2hpbGROb2RlcyxlPTAsbj10Lmxlbmd0aDtlPG47ZSsrKXIucHVzaCh0W2VdKTtyZXR1cm4gc1tpXT1yfShlLGkucm93SW5kZXgsaS5jb2x1bW5JbmRleCkpKS5hcHBlbmRUbyhyKSxvPSEwKX0pKSwhIW8mJnJ9fSxsaXN0SGlkZGVuOmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGUsbixpKXtyZXR1cm4hIShlPXQubWFwKGksKGZ1bmN0aW9uKHQpe3ZhciBlPXQuY2xhc3NOYW1lPydjbGFzcz0iJyt0LmNsYXNzTmFtZSsnIic6IiI7cmV0dXJuIHQuaGlkZGVuPyI8bGkgIitlKycgZGF0YS1kdHItaW5kZXg9IicrdC5jb2x1bW5JbmRleCsnIiBkYXRhLWR0LXJvdz0iJyt0LnJvd0luZGV4KyciIGRhdGEtZHQtY29sdW1uPSInK3QuY29sdW1uSW5kZXgrJyI+PHNwYW4gY2xhc3M9ImR0ci10aXRsZSI+Jyt0LnRpdGxlKyc8L3NwYW4+IDxzcGFuIGNsYXNzPSJkdHItZGF0YSI+Jyt0LmRhdGErIjwvc3Bhbj48L2xpPiI6IiJ9KSkuam9pbigiIikpJiZ0KCc8dWwgZGF0YS1kdHItaW5kZXg9IicrbisnIiBjbGFzcz0iZHRyLWRldGFpbHMiLz4nKS5hcHBlbmQoZSl9fSx0YWJsZUFsbDpmdW5jdGlvbihlKXtyZXR1cm4gZT10LmV4dGVuZCh7dGFibGVDbGFzczoiIn0sZSksZnVuY3Rpb24obixpLHIpe3JldHVybiBuPXQubWFwKHIsKGZ1bmN0aW9uKHQpe3JldHVybiI8dHIgIisodC5jbGFzc05hbWU/J2NsYXNzPSInK3QuY2xhc3NOYW1lKyciJzoiIikrJyBkYXRhLWR0LXJvdz0iJyt0LnJvd0luZGV4KyciIGRhdGEtZHQtY29sdW1uPSInK3QuY29sdW1uSW5kZXgrJyI+PHRkPicrdC50aXRsZSsiOjwvdGQ+IDx0ZD4iK3QuZGF0YSsiPC90ZD48L3RyPiJ9KSkuam9pbigiIiksdCgnPHRhYmxlIGNsYXNzPSInK2UudGFibGVDbGFzcysnIGR0ci1kZXRhaWxzIiB3aWR0aD0iMTAwJSIvPicpLmFwcGVuZChuKX19fSxhLmRlZmF1bHRzPXticmVha3BvaW50czphLmJyZWFrcG9pbnRzLGF1dG86ITAsZGV0YWlsczp7ZGlzcGxheTphLmRpc3BsYXkuY2hpbGRSb3cscmVuZGVyZXI6YS5yZW5kZXJlci5saXN0SGlkZGVuKCksdGFyZ2V0OjAsdHlwZToiaW5saW5lIn0sb3J0aG9nb25hbDoiZGlzcGxheSJ9O3ZhciBsPXQuZm4uZGF0YVRhYmxlLkFwaTtyZXR1cm4gbC5yZWdpc3RlcigicmVzcG9uc2l2ZSgpIiwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKSxsLnJlZ2lzdGVyKCJyZXNwb25zaXZlLmluZGV4KCkiLChmdW5jdGlvbihlKXtyZXR1cm57Y29sdW1uOihlPXQoZSkpLmRhdGEoImR0ci1pbmRleCIpLHJvdzplLnBhcmVudCgpLmRhdGEoImR0ci1pbmRleCIpfX0pKSxsLnJlZ2lzdGVyKCJyZXNwb25zaXZlLnJlYnVpbGQoKSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoInRhYmxlIiwoZnVuY3Rpb24odCl7dC5fcmVzcG9uc2l2ZSYmdC5fcmVzcG9uc2l2ZS5fY2xhc3NMb2dpYygpfSkpfSkpLGwucmVnaXN0ZXIoInJlc3BvbnNpdmUucmVjYWxjKCkiLChmdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsKGZ1bmN0aW9uKHQpe3QuX3Jlc3BvbnNpdmUmJih0Ll9yZXNwb25zaXZlLl9yZXNpemVBdXRvKCksdC5fcmVzcG9uc2l2ZS5fcmVzaXplKCkpfSkpfSkpLGwucmVnaXN0ZXIoInJlc3BvbnNpdmUuaGFzSGlkZGVuKCkiLChmdW5jdGlvbigpe3ZhciBlPXRoaXMuY29udGV4dFswXTtyZXR1cm4hIWUuX3Jlc3BvbnNpdmUmJi0xIT09dC5pbkFycmF5KCExLGUuX3Jlc3BvbnNpdmUuX3Jlc3BvbnNpdmVPbmx5SGlkZGVuKCkpfSkpLGwucmVnaXN0ZXJQbHVyYWwoImNvbHVtbnMoKS5yZXNwb25zaXZlSGlkZGVuKCkiLCJjb2x1bW4oKS5yZXNwb25zaXZlSGlkZGVuKCkiLChmdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJjb2x1bW4iLChmdW5jdGlvbih0LGUpe3JldHVybiEhdC5fcmVzcG9uc2l2ZSYmdC5fcmVzcG9uc2l2ZS5fcmVzcG9uc2l2ZU9ubHlIaWRkZW4oKVtlXX0pLDEpfSkpLGEudmVyc2lvbj0iMi4yLjciLHQuZm4uZGF0YVRhYmxlLlJlc3BvbnNpdmU9YSx0LmZuLkRhdGFUYWJsZS5SZXNwb25zaXZlPWEsdChuKS5vbigicHJlSW5pdC5kdC5kdHIiLChmdW5jdGlvbihlLG4pe2lmKCJkdCI9PT1lLm5hbWVzcGFjZSYmKHQobi5uVGFibGUpLmhhc0NsYXNzKCJyZXNwb25zaXZlIil8fHQobi5uVGFibGUpLmhhc0NsYXNzKCJkdC1yZXNwb25zaXZlIil8fG4ub0luaXQucmVzcG9uc2l2ZXx8by5kZWZhdWx0cy5yZXNwb25zaXZlKSl7dmFyIGk9bi5vSW5pdC5yZXNwb25zaXZlOyExIT09aSYmbmV3IGEobix0LmlzUGxhaW5PYmplY3QoaSk/aTp7fSl9fSkpLGF9KSksZnVuY3Rpb24odCl7ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyJqcXVlcnkiLCJkYXRhdGFibGVzLm5ldCJdLChmdW5jdGlvbihlKXtyZXR1cm4gdChlLHdpbmRvdyxkb2N1bWVudCl9KSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWZ1bmN0aW9uKGUsbil7cmV0dXJuIGV8fChlPXdpbmRvdyksbiYmbi5mbi5kYXRhVGFibGV8fChuPXJlcXVpcmUoImRhdGF0YWJsZXMubmV0IikoZSxuKS4kKSx0KG4sZSxlLmRvY3VtZW50KX06dChqUXVlcnksd2luZG93LGRvY3VtZW50KX0oKGZ1bmN0aW9uKHQsZSxuLGkpe3ZhciByPXQuZm4uZGF0YVRhYmxlO3JldHVybiB0LmV4dGVuZCghMCxyLmRlZmF1bHRzLHtkb206Ijwncm93JzwnY29sLXNtLTEyIGNvbC1tZC02J2w+PCdjb2wtc20tMTIgY29sLW1kLTYnZj4+PCdyb3cnPCdjb2wtc20tMTIndHI+Pjwncm93JzwnY29sLXNtLTEyIGNvbC1tZC01J2k+PCdjb2wtc20tMTIgY29sLW1kLTcncD4+IixyZW5kZXJlcjoiYm9vdHN0cmFwIn0pLHQuZXh0ZW5kKHIuZXh0LmNsYXNzZXMse3NXcmFwcGVyOiJkYXRhVGFibGVzX3dyYXBwZXIgZHQtYm9vdHN0cmFwNCIsc0ZpbHRlcklucHV0OiJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtIixzTGVuZ3RoU2VsZWN0OiJjdXN0b20tc2VsZWN0IGN1c3RvbS1zZWxlY3Qtc20gZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSIsc1Byb2Nlc3Npbmc6ImRhdGFUYWJsZXNfcHJvY2Vzc2luZyBjYXJkIixzUGFnZUJ1dHRvbjoicGFnaW5hdGVfYnV0dG9uIHBhZ2UtaXRlbSJ9KSxyLmV4dC5yZW5kZXJlci5wYWdlQnV0dG9uLmJvb3RzdHJhcD1mdW5jdGlvbihlLG8sYSxzLGwsYyl7dmFyIHUsZCxoLGY9bmV3IHIuQXBpKGUpLHA9ZS5vQ2xhc3NlcyxnPWUub0xhbmd1YWdlLm9QYWdpbmF0ZSxtPWUub0xhbmd1YWdlLm9BcmlhLnBhZ2luYXRlfHx7fSx2PTAseT1mdW5jdGlvbihuLGkpe3ZhciByLG8scyxoLGI9ZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpLCF0KGUuY3VycmVudFRhcmdldCkuaGFzQ2xhc3MoImRpc2FibGVkIikmJmYucGFnZSgpIT1lLmRhdGEuYWN0aW9uJiZmLnBhZ2UoZS5kYXRhLmFjdGlvbikuZHJhdygicGFnZSIpfTtmb3Iocj0wLG89aS5sZW5ndGg7cjxvO3IrKylpZihoPWlbcl0sQXJyYXkuaXNBcnJheShoKSl5KG4saCk7ZWxzZXtzd2l0Y2goZD11PSIiLGgpe2Nhc2UiZWxsaXBzaXMiOnU9IiYjeDIwMjY7IixkPSJkaXNhYmxlZCI7YnJlYWs7Y2FzZSJmaXJzdCI6dT1nLnNGaXJzdCxkPWgrKDA8bD8iIjoiIGRpc2FibGVkIik7YnJlYWs7Y2FzZSJwcmV2aW91cyI6dT1nLnNQcmV2aW91cyxkPWgrKDA8bD8iIjoiIGRpc2FibGVkIik7YnJlYWs7Y2FzZSJuZXh0Ijp1PWcuc05leHQsZD1oKyhsPGMtMT8iIjoiIGRpc2FibGVkIik7YnJlYWs7Y2FzZSJsYXN0Ijp1PWcuc0xhc3QsZD1oKyhsPGMtMT8iIjoiIGRpc2FibGVkIik7YnJlYWs7ZGVmYXVsdDp1PWgrMSxkPWw9PT1oPyJhY3RpdmUiOiIifXUmJihzPXQoIjxsaT4iLHtjbGFzczpwLnNQYWdlQnV0dG9uKyIgIitkLGlkOjA9PT1hJiYic3RyaW5nIj09dHlwZW9mIGg/ZS5zVGFibGVJZCsiXyIraDpudWxsfSkuYXBwZW5kKHQoIjxhPiIse2hyZWY6IiMiLCJhcmlhLWNvbnRyb2xzIjplLnNUYWJsZUlkLCJhcmlhLWxhYmVsIjptW2hdLCJkYXRhLWR0LWlkeCI6dix0YWJpbmRleDplLmlUYWJJbmRleCxjbGFzczoicGFnZS1saW5rIn0pLmh0bWwodSkpLmFwcGVuZFRvKG4pLGUub0FwaS5fZm5CaW5kQWN0aW9uKHMse2FjdGlvbjpofSxiKSx2KyspfX07dHJ5e2g9dChvKS5maW5kKG4uYWN0aXZlRWxlbWVudCkuZGF0YSgiZHQtaWR4Iil9Y2F0Y2godCl7fXkodChvKS5lbXB0eSgpLmh0bWwoJzx1bCBjbGFzcz0icGFnaW5hdGlvbiIvPicpLmNoaWxkcmVuKCJ1bCIpLHMpLGghPT1pJiZ0KG8pLmZpbmQoIltkYXRhLWR0LWlkeD0iK2grIl0iKS50cmlnZ2VyKCJmb2N1cyIpfSxyfSkpLGZ1bmN0aW9uKHQpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5IiwiZGF0YXRhYmxlcy5uZXQtYnM0IiwiZGF0YXRhYmxlcy5uZXQtcmVzcG9uc2l2ZSJdLChmdW5jdGlvbihlKXtyZXR1cm4gdChlLHdpbmRvdyxkb2N1bWVudCl9KSk6Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWZ1bmN0aW9uKGUsbil7cmV0dXJuIGV8fChlPXdpbmRvdyksbiYmbi5mbi5kYXRhVGFibGV8fChuPXJlcXVpcmUoImRhdGF0YWJsZXMubmV0LWJzNCIpKGUsbikuJCksbi5mbi5kYXRhVGFibGUuUmVzcG9uc2l2ZXx8cmVxdWlyZSgiZGF0YXRhYmxlcy5uZXQtcmVzcG9uc2l2ZSIpKGUsbiksdChuLGUuZG9jdW1lbnQpfTp0KGpRdWVyeSx3aW5kb3csZG9jdW1lbnQpfSgoZnVuY3Rpb24odCl7dmFyIGU9dC5mbi5kYXRhVGFibGUsbj1lLlJlc3BvbnNpdmUuZGlzcGxheSxpPW4ubW9kYWwscj10KCc8ZGl2IGNsYXNzPSJtb2RhbCBmYWRlIGR0ci1icy1tb2RhbCIgcm9sZT0iZGlhbG9nIj48ZGl2IGNsYXNzPSJtb2RhbC1kaWFsb2ciIHJvbGU9ImRvY3VtZW50Ij48ZGl2IGNsYXNzPSJtb2RhbC1jb250ZW50Ij48ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPjxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2xvc2UiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtbGFiZWw9IkNsb3NlIj48c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+JnRpbWVzOzwvc3Bhbj48L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ii8+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7cmV0dXJuIG4ubW9kYWw9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKG4sbyxhKXtpZih0LmZuLm1vZGFsKXtpZighbyl7aWYoZSYmZS5oZWFkZXIpe3ZhciBzPShvPXIuZmluZCgiZGl2Lm1vZGFsLWhlYWRlciIpKS5maW5kKCJidXR0b24iKS5kZXRhY2goKTtvLmVtcHR5KCkuYXBwZW5kKCc8aDQgY2xhc3M9Im1vZGFsLXRpdGxlIj4nK2UuaGVhZGVyKG4pKyI8L2g0PiIpLmFwcGVuZChzKX1yLmZpbmQoImRpdi5tb2RhbC1ib2R5IikuZW1wdHkoKS5hcHBlbmQoYSgpKSxyLmFwcGVuZFRvKCJib2R5IikubW9kYWwoKX19ZWxzZSBpKG4sbyxhKX19LGUuUmVzcG9uc2l2ZX0pKSxmdW5jdGlvbih0LGUpe2lmKCJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmIm9iamVjdCI9PXR5cGVvZiBtb2R1bGUpbW9kdWxlLmV4cG9ydHM9ZSgpO2Vsc2UgaWYoImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZClkZWZpbmUoW10sZSk7ZWxzZXt2YXIgbj1lKCk7Zm9yKHZhciBpIGluIG4pKCJvYmplY3QiPT10eXBlb2YgZXhwb3J0cz9leHBvcnRzOnQpW2ldPW5baV19fSh3aW5kb3csKGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBlPXt9O2Z1bmN0aW9uIG4oaSl7aWYoZVtpXSlyZXR1cm4gZVtpXS5leHBvcnRzO3ZhciByPWVbaV09e2k6aSxsOiExLGV4cG9ydHM6e319O3JldHVybiB0W2ldLmNhbGwoci5leHBvcnRzLHIsci5leHBvcnRzLG4pLHIubD0hMCxyLmV4cG9ydHN9cmV0dXJuIG4ubT10LG4uYz1lLG4uZD1mdW5jdGlvbih0LGUsaSl7bi5vKHQsZSl8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse2VudW1lcmFibGU6ITAsZ2V0Oml9KX0sbi5yPWZ1bmN0aW9uKHQpeyJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wudG9TdHJpbmdUYWcmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LG4udD1mdW5jdGlvbih0LGUpe2lmKDEmZSYmKHQ9bih0KSksOCZlKXJldHVybiB0O2lmKDQmZSYmIm9iamVjdCI9PXR5cGVvZiB0JiZ0JiZ0Ll9fZXNNb2R1bGUpcmV0dXJuIHQ7dmFyIGk9T2JqZWN0LmNyZWF0ZShudWxsKTtpZihuLnIoaSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGksImRlZmF1bHQiLHtlbnVtZXJhYmxlOiEwLHZhbHVlOnR9KSwyJmUmJiJzdHJpbmciIT10eXBlb2YgdClmb3IodmFyIHIgaW4gdCluLmQoaSxyLGZ1bmN0aW9uKGUpe3JldHVybiB0W2VdfS5iaW5kKG51bGwscikpO3JldHVybiBpfSxuLm49ZnVuY3Rpb24odCl7dmFyIGU9dCYmdC5fX2VzTW9kdWxlP2Z1bmN0aW9uKCl7cmV0dXJuIHQuZGVmYXVsdH06ZnVuY3Rpb24oKXtyZXR1cm4gdH07cmV0dXJuIG4uZChlLCJhIixlKSxlfSxuLm89ZnVuY3Rpb24odCxlKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsZSl9LG4ucD0iIixuKG4ucz05NCl9KFtmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0KXt0cnl7cmV0dXJuISF0KCl9Y2F0Y2godCl7cmV0dXJuITB9fX0sZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgaSxyPW4oNzgpLG89big4KSxhPW4oMikscz1uKDkpLGw9big3KSxjPW4oMzApLHU9bigxMSksZD1uKDE0KSxoPW4oMTIpLmYsZj1uKDI3KSxwPW4oMjkpLGc9bigzKSxtPW4oNDYpLHY9YS5JbnQ4QXJyYXkseT12JiZ2LnByb3RvdHlwZSxiPWEuVWludDhDbGFtcGVkQXJyYXksdz1iJiZiLnByb3RvdHlwZSx4PXYmJmYodiksXz15JiZmKHkpLFM9T2JqZWN0LnByb3RvdHlwZSxDPVMuaXNQcm90b3R5cGVPZixrPWcoInRvU3RyaW5nVGFnIiksVD1tKCJUWVBFRF9BUlJBWV9UQUciKSxBPXImJiEhcCYmIk9wZXJhIiE9PWMoYS5vcGVyYSksRD0hMSxFPXtJbnQ4QXJyYXk6MSxVaW50OEFycmF5OjEsVWludDhDbGFtcGVkQXJyYXk6MSxJbnQxNkFycmF5OjIsVWludDE2QXJyYXk6MixJbnQzMkFycmF5OjQsVWludDMyQXJyYXk6NCxGbG9hdDMyQXJyYXk6NCxGbG9hdDY0QXJyYXk6OH0sTT17QmlnSW50NjRBcnJheTo4LEJpZ1VpbnQ2NEFycmF5Ojh9LE89ZnVuY3Rpb24odCl7aWYoIXModCkpcmV0dXJuITE7dmFyIGU9Yyh0KTtyZXR1cm4gbChFLGUpfHxsKE0sZSl9O2ZvcihpIGluIEUpYVtpXXx8KEE9ITEpO2lmKCghQXx8ImZ1bmN0aW9uIiE9dHlwZW9mIHh8fHg9PT1GdW5jdGlvbi5wcm90b3R5cGUpJiYoeD1mdW5jdGlvbigpe3Rocm93IFR5cGVFcnJvcigiSW5jb3JyZWN0IGludm9jYXRpb24iKX0sQSkpZm9yKGkgaW4gRSlhW2ldJiZwKGFbaV0seCk7aWYoKCFBfHwhX3x8Xz09PVMpJiYoXz14LnByb3RvdHlwZSxBKSlmb3IoaSBpbiBFKWFbaV0mJnAoYVtpXS5wcm90b3R5cGUsXyk7aWYoQSYmZih3KSE9PV8mJnAodyxfKSxvJiYhbChfLGspKWZvcihpIGluIEQ9ITAsaChfLGsse2dldDpmdW5jdGlvbigpe3JldHVybiBzKHRoaXMpP3RoaXNbVF06dm9pZCAwfX0pLEUpYVtpXSYmdShhW2ldLFQsaSk7dC5leHBvcnRzPXtOQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTOkEsVFlQRURfQVJSQVlfVEFHOkQmJlQsYVR5cGVkQXJyYXk6ZnVuY3Rpb24odCl7aWYoTyh0KSlyZXR1cm4gdDt0aHJvdyBUeXBlRXJyb3IoIlRhcmdldCBpcyBub3QgYSB0eXBlZCBhcnJheSIpfSxhVHlwZWRBcnJheUNvbnN0cnVjdG9yOmZ1bmN0aW9uKHQpe2lmKHApe2lmKEMuY2FsbCh4LHQpKXJldHVybiB0fWVsc2UgZm9yKHZhciBlIGluIEUpaWYobChFLGkpKXt2YXIgbj1hW2VdO2lmKG4mJih0PT09bnx8Qy5jYWxsKG4sdCkpKXJldHVybiB0fXRocm93IFR5cGVFcnJvcigiVGFyZ2V0IGlzIG5vdCBhIHR5cGVkIGFycmF5IGNvbnN0cnVjdG9yIil9LGV4cG9ydFR5cGVkQXJyYXlNZXRob2Q6ZnVuY3Rpb24odCxlLG4pe2lmKG8pe2lmKG4pZm9yKHZhciBpIGluIEUpe3ZhciByPWFbaV07ciYmbChyLnByb3RvdHlwZSx0KSYmZGVsZXRlIHIucHJvdG90eXBlW3RdfV9bdF0mJiFufHxkKF8sdCxuP2U6QSYmeVt0XXx8ZSl9fSxleHBvcnRUeXBlZEFycmF5U3RhdGljTWV0aG9kOmZ1bmN0aW9uKHQsZSxuKXt2YXIgaSxyO2lmKG8pe2lmKHApe2lmKG4pZm9yKGkgaW4gRSkocj1hW2ldKSYmbChyLHQpJiZkZWxldGUgclt0XTtpZih4W3RdJiYhbilyZXR1cm47dHJ5e3JldHVybiBkKHgsdCxuP2U6QSYmdlt0XXx8ZSl9Y2F0Y2godCl7fX1mb3IoaSBpbiBFKSEocj1hW2ldKXx8clt0XSYmIW58fGQocix0LGUpfX0saXNWaWV3OmZ1bmN0aW9uKHQpe2lmKCFzKHQpKXJldHVybiExO3ZhciBlPWModCk7cmV0dXJuIkRhdGFWaWV3Ij09PWV8fGwoRSxlKXx8bChNLGUpfSxpc1R5cGVkQXJyYXk6TyxUeXBlZEFycmF5OngsVHlwZWRBcnJheVByb3RvdHlwZTpffX0sZnVuY3Rpb24odCxlLG4peyhmdW5jdGlvbihlKXt2YXIgbj1mdW5jdGlvbih0KXtyZXR1cm4gdCYmdC5NYXRoPT1NYXRoJiZ0fTt0LmV4cG9ydHM9bigib2JqZWN0Ij09dHlwZW9mIGdsb2JhbFRoaXMmJmdsb2JhbFRoaXMpfHxuKCJvYmplY3QiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cpfHxuKCJvYmplY3QiPT10eXBlb2Ygc2VsZiYmc2VsZil8fG4oIm9iamVjdCI9PXR5cGVvZiBlJiZlKXx8ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30oKXx8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKX0pLmNhbGwodGhpcyxuKDk2KSl9LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDIpLHI9big2NSksbz1uKDcpLGE9big0Nikscz1uKDY4KSxsPW4oMTAyKSxjPXIoIndrcyIpLHU9aS5TeW1ib2wsZD1sP3U6dSYmdS53aXRob3V0U2V0dGVyfHxhO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gbyhjLHQpfHwocyYmbyh1LHQpP2NbdF09dVt0XTpjW3RdPWQoIlN5bWJvbC4iK3QpKSxjW3RdfX0sZnVuY3Rpb24odCxlLG4pe3ZhciBpPW4oMTUpLHI9TWF0aC5taW47dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB0PjA/cihpKHQpLDkwMDcxOTkyNTQ3NDA5OTEpOjB9fSxmdW5jdGlvbih0LGUsbil7dmFyIGk9bigyKSxyPW4oNDIpLmYsbz1uKDExKSxhPW4oMTQpLHM9big0MyksbD1uKDk4KSxjPW4oMTAxKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgbix1LGQsaCxmLHA9dC50YXJnZXQsZz10Lmdsb2JhbCxtPXQuc3RhdDtpZihuPWc/aTptP2lbcF18fHMocCx7fSk6KGlbcF18fHt9KS5wcm90b3R5cGUpZm9yKHUgaW4gZSl7aWYoaD1lW3VdLGQ9dC5ub1RhcmdldEdldD8oZj1yKG4sdSkpJiZmLnZhbHVlOm5bdV0sIWMoZz91OnArKG0/Ii4iOiIjIikrdSx0LmZvcmNlZCkmJnZvaWQgMCE9PWQpe2lmKHR5cGVvZiBoPT10eXBlb2YgZCljb250aW51ZTtsKGgsZCl9KHQuc2hhbXx8ZCYmZC5zaGFtKSYmbyhoLCJzaGFtIiwhMCksYShuLHUsaCx0KX19fSxmdW5jdGlvbih0LGUsbil7dmFyIGk9big5KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoIWkodCkpdGhyb3cgVHlwZUVycm9yKFN0cmluZyh0KSsiIGlzIG5vdCBhbiBvYmplY3QiKTtyZXR1cm4gdH19LGZ1bmN0aW9uKHQsZSl7dmFyIG49e30uaGFzT3duUHJvcGVydHk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4uY2FsbCh0LGUpfX0sZnVuY3Rpb24odCxlLG4pe3ZhciBpPW4oMCk7dC5leHBvcnRzPSFpKChmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sMSx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSlbMV19KSl9LGZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiJvYmplY3QiPT10eXBlb2YgdD9udWxsIT09dDoiZnVuY3Rpb24iPT10eXBlb2YgdH19LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDE2KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdChpKHQpKX19LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDgpLHI9bigxMiksbz1uKDIwKTt0LmV4cG9ydHM9aT9mdW5jdGlvbih0LGUsbil7cmV0dXJuIHIuZih0LGUsbygxLG4pKX06ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0W2VdPW4sdH19LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDgpLHI9big2Miksbz1uKDYpLGE9bigzMikscz1PYmplY3QuZGVmaW5lUHJvcGVydHk7ZS5mPWk/czpmdW5jdGlvbih0LGUsbil7aWYobyh0KSxlPWEoZSwhMCksbyhuKSxyKXRyeXtyZXR1cm4gcyh0LGUsbil9Y2F0Y2godCl7fWlmKCJnZXQiaW4gbnx8InNldCJpbiBuKXRocm93IFR5cGVFcnJvcigiQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQiKTtyZXR1cm4idmFsdWUiaW4gbiYmKHRbZV09bi52YWx1ZSksdH19LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDM2KSxyPW4oMzEpLG89bigxMCksYT1uKDQpLHM9big1MSksbD1bXS5wdXNoLGM9ZnVuY3Rpb24odCl7dmFyIGU9MT09dCxuPTI9PXQsYz0zPT10LHU9ND09dCxkPTY9PXQsaD03PT10LGY9NT09dHx8ZDtyZXR1cm4gZnVuY3Rpb24ocCxnLG0sdil7Zm9yKHZhciB5LGIsdz1vKHApLHg9cih3KSxfPWkoZyxtLDMpLFM9YSh4Lmxlbmd0aCksQz0wLGs9dnx8cyxUPWU/ayhwLFMpOm58fGg/ayhwLDApOnZvaWQgMDtTPkM7QysrKWlmKChmfHxDIGluIHgpJiYoYj1fKHk9eFtDXSxDLHcpLHQpKWlmKGUpVFtDXT1iO2Vsc2UgaWYoYilzd2l0Y2godCl7Y2FzZSAzOnJldHVybiEwO2Nhc2UgNTpyZXR1cm4geTtjYXNlIDY6cmV0dXJuIEM7Y2FzZSAyOmwuY2FsbChULHkpfWVsc2Ugc3dpdGNoKHQpe2Nhc2UgNDpyZXR1cm4hMTtjYXNlIDc6bC5jYWxsKFQseSl9cmV0dXJuIGQ/LTE6Y3x8dT91OlR9fTt0LmV4cG9ydHM9e2ZvckVhY2g6YygwKSxtYXA6YygxKSxmaWx0ZXI6YygyKSxzb21lOmMoMyksZXZlcnk6Yyg0KSxmaW5kOmMoNSksZmluZEluZGV4OmMoNiksZmlsdGVyT3V0OmMoNyl9fSxmdW5jdGlvbih0LGUsbil7dmFyIGk9bigyKSxyPW4oMTEpLG89big3KSxhPW4oNDMpLHM9big2NCksbD1uKDE3KSxjPWwuZ2V0LHU9bC5lbmZvcmNlLGQ9U3RyaW5nKFN0cmluZykuc3BsaXQoIlN0cmluZyIpOyh0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4scyl7dmFyIGwsYz0hIXMmJiEhcy51bnNhZmUsaD0hIXMmJiEhcy5lbnVtZXJhYmxlLGY9ISFzJiYhIXMubm9UYXJnZXRHZXQ7ImZ1bmN0aW9uIj09dHlwZW9mIG4mJigic3RyaW5nIiE9dHlwZW9mIGV8fG8obiwibmFtZSIpfHxyKG4sIm5hbWUiLGUpLChsPXUobikpLnNvdXJjZXx8KGwuc291cmNlPWQuam9pbigic3RyaW5nIj09dHlwZW9mIGU/ZToiIikpKSx0IT09aT8oYz8hZiYmdFtlXSYmKGg9ITApOmRlbGV0ZSB0W2VdLGg/dFtlXT1uOnIodCxlLG4pKTpoP3RbZV09bjphKGUsbil9KShGdW5jdGlvbi5wcm90b3R5cGUsInRvU3RyaW5nIiwoZnVuY3Rpb24oKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdGhpcyYmYyh0aGlzKS5zb3VyY2V8fHModGhpcyl9KSl9LGZ1bmN0aW9uKHQsZSl7dmFyIG49TWF0aC5jZWlsLGk9TWF0aC5mbG9vcjt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGlzTmFOKHQ9K3QpPzA6KHQ+MD9pOm4pKHQpfX0sZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYobnVsbD09dCl0aHJvdyBUeXBlRXJyb3IoIkNhbid0IGNhbGwgbWV0aG9kIG9uICIrdCk7cmV0dXJuIHR9fSxmdW5jdGlvbih0LGUsbil7dmFyIGkscixvLGE9big5Nykscz1uKDIpLGw9big5KSxjPW4oMTEpLHU9big3KSxkPW4oNDQpLGg9big0NSksZj1uKDQ3KSxwPXMuV2Vha01hcDtpZihhKXt2YXIgZz1kLnN0YXRlfHwoZC5zdGF0ZT1uZXcgcCksbT1nLmdldCx2PWcuaGFzLHk9Zy5zZXQ7aT1mdW5jdGlvbih0LGUpe3JldHVybiBlLmZhY2FkZT10LHkuY2FsbChnLHQsZSksZX0scj1mdW5jdGlvbih0KXtyZXR1cm4gbS5jYWxsKGcsdCl8fHt9fSxvPWZ1bmN0aW9uKHQpe3JldHVybiB2LmNhbGwoZyx0KX19ZWxzZXt2YXIgYj1oKCJzdGF0ZSIpO2ZbYl09ITAsaT1mdW5jdGlvbih0LGUpe3JldHVybiBlLmZhY2FkZT10LGModCxiLGUpLGV9LHI9ZnVuY3Rpb24odCl7cmV0dXJuIHUodCxiKT90W2JdOnt9fSxvPWZ1bmN0aW9uKHQpe3JldHVybiB1KHQsYil9fXQuZXhwb3J0cz17c2V0OmksZ2V0OnIsaGFzOm8sZW5mb3JjZTpmdW5jdGlvbih0KXtyZXR1cm4gbyh0KT9yKHQpOmkodCx7fSl9LGdldHRlckZvcjpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIG47aWYoIWwoZSl8fChuPXIoZSkpLnR5cGUhPT10KXRocm93IFR5cGVFcnJvcigiSW5jb21wYXRpYmxlIHJlY2VpdmVyLCAiK3QrIiByZXF1aXJlZCIpO3JldHVybiBufX19fSxmdW5jdGlvbih0LGUsbil7dmFyIGk9bigxNSkscj1NYXRoLm1heCxvPU1hdGgubWluO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuPWkodCk7cmV0dXJuIG48MD9yKG4rZSwwKTpvKG4sZSl9fSxmdW5jdGlvbih0LGUsbil7dmFyIGk9big4KSxyPW4oMCksbz1uKDcpLGE9T2JqZWN0LmRlZmluZVByb3BlcnR5LHM9e30sbD1mdW5jdGlvbih0KXt0aHJvdyB0fTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtpZihvKHMsdCkpcmV0dXJuIHNbdF07ZXx8KGU9e30pO3ZhciBuPVtdW3RdLGM9ISFvKGUsIkFDQ0VTU09SUyIpJiZlLkFDQ0VTU09SUyx1PW8oZSwwKT9lWzBdOmwsZD1vKGUsMSk/ZVsxXTp2b2lkIDA7cmV0dXJuIHNbdF09ISFuJiYhcigoZnVuY3Rpb24oKXtpZihjJiYhaSlyZXR1cm4hMDt2YXIgdD17bGVuZ3RoOi0xfTtjP2EodCwxLHtlbnVtZXJhYmxlOiEwLGdldDpsfSk6dFsxXT0xLG4uY2FsbCh0LHUsZCl9KSl9fSxmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3JldHVybntlbnVtZXJhYmxlOiEoMSZ0KSxjb25maWd1cmFibGU6ISgyJnQpLHdyaXRhYmxlOiEoNCZ0KSx2YWx1ZTplfX19LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDMxKSxyPW4oMTYpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gaShyKHQpKX19LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDYpLHI9big1Miksbz1uKDMpKCJzcGVjaWVzIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG4sYT1pKHQpLmNvbnN0cnVjdG9yO3JldHVybiB2b2lkIDA9PT1hfHxudWxsPT0obj1pKGEpW29dKT9lOnIobil9fSxmdW5jdGlvbih0LGUpe3ZhciBuPXt9LnRvU3RyaW5nO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gbi5jYWxsKHQpLnNsaWNlKDgsLTEpfX0sZnVuY3Rpb24odCxlLG4pe3ZhciBpPW4oMTAwKSxyPW4oMiksbz1mdW5jdGlvbih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdD90OnZvaWQgMH07dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj9vKGlbdF0pfHxvKHJbdF0pOmlbdF0mJmlbdF1bZV18fHJbdF0mJnJbdF1bZV19fSxmdW5jdGlvbih0LGUsbil7dmFyIGk9bigwKSxyPW4oMyksbz1uKDY5KSxhPXIoInNwZWNpZXMiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIG8+PTUxfHwhaSgoZnVuY3Rpb24oKXt2YXIgZT1bXTtyZXR1cm4oZS5jb25zdHJ1Y3Rvcj17fSlbYV09ZnVuY3Rpb24oKXtyZXR1cm57Zm9vOjF9fSwxIT09ZVt0XShCb29sZWFuKS5mb299KSl9fSxmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz17fX0sZnVuY3Rpb24odCxlLG4pe3ZhciBpPW4oNykscj1uKDEwKSxvPW4oNDUpLGE9big3Nikscz1vKCJJRV9QUk9UTyIpLGw9T2JqZWN0LnByb3RvdHlwZTt0LmV4cG9ydHM9YT9PYmplY3QuZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24odCl7cmV0dXJuIHQ9cih0KSxpKHQscyk/dFtzXToiZnVuY3Rpb24iPT10eXBlb2YgdC5jb25zdHJ1Y3RvciYmdCBpbnN0YW5jZW9mIHQuY29uc3RydWN0b3I/dC5jb25zdHJ1Y3Rvci5wcm90b3R5cGU6dCBpbnN0YW5jZW9mIE9iamVjdD9sOm51bGx9fSxmdW5jdGlvbih0LGUsbil7dmFyIGk9bigxMikuZixyPW4oNyksbz1uKDMpKCJ0b1N0cmluZ1RhZyIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7dCYmIXIodD1uP3Q6dC5wcm90b3R5cGUsbykmJmkodCxvLHtjb25maWd1cmFibGU6ITAsdmFsdWU6ZX0pfX0sZnVuY3Rpb24odCxlLG4pe3ZhciBpPW4oNikscj1uKDEwOSk7dC5leHBvcnRzPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8KCJfX3Byb3RvX18iaW57fT9mdW5jdGlvbigpe3ZhciB0LGU9ITEsbj17fTt0cnl7KHQ9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPYmplY3QucHJvdG90eXBlLCJfX3Byb3RvX18iKS5zZXQpLmNhbGwobixbXSksZT1uIGluc3RhbmNlb2YgQXJyYXl9Y2F0Y2godCl7fXJldHVybiBmdW5jdGlvbihuLG8pe3JldHVybiBpKG4pLHIobyksZT90LmNhbGwobixvKTpuLl9fcHJvdG9fXz1vLG59fSgpOnZvaWQgMCl9LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDU1KSxyPW4oMjMpLG89bigzKSgidG9TdHJpbmdUYWciKSxhPSJBcmd1bWVudHMiPT1yKGZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30oKSk7dC5leHBvcnRzPWk/cjpmdW5jdGlvbih0KXt2YXIgZSxuLGk7cmV0dXJuIHZvaWQgMD09PXQ/IlVuZGVmaW5lZCI6bnVsbD09PXQ/Ik51bGwiOiJzdHJpbmciPT10eXBlb2Yobj1mdW5jdGlvbih0LGUpe3RyeXtyZXR1cm4gdFtlXX1jYXRjaCh0KXt9fShlPU9iamVjdCh0KSxvKSk/bjphP3IoZSk6Ik9iamVjdCI9PShpPXIoZSkpJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5jYWxsZWU/IkFyZ3VtZW50cyI6aX19LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDApLHI9bigyMyksbz0iIi5zcGxpdDt0LmV4cG9ydHM9aSgoZnVuY3Rpb24oKXtyZXR1cm4hT2JqZWN0KCJ6IikucHJvcGVydHlJc0VudW1lcmFibGUoMCl9KSk/ZnVuY3Rpb24odCl7cmV0dXJuIlN0cmluZyI9PXIodCk/by5jYWxsKHQsIiIpOk9iamVjdCh0KX06T2JqZWN0fSxmdW5jdGlvbih0LGUsbil7dmFyIGk9big5KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtpZighaSh0KSlyZXR1cm4gdDt2YXIgbixyO2lmKGUmJiJmdW5jdGlvbiI9PXR5cGVvZihuPXQudG9TdHJpbmcpJiYhaShyPW4uY2FsbCh0KSkpcmV0dXJuIHI7aWYoImZ1bmN0aW9uIj09dHlwZW9mKG49dC52YWx1ZU9mKSYmIWkocj1uLmNhbGwodCkpKXJldHVybiByO2lmKCFlJiYiZnVuY3Rpb24iPT10eXBlb2Yobj10LnRvU3RyaW5nKSYmIWkocj1uLmNhbGwodCkpKXJldHVybiByO3Rocm93IFR5cGVFcnJvcigiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlIil9fSxmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz0hMX0sZnVuY3Rpb24odCxlLG4pe3ZhciBpPW4oMjEpLHI9big0KSxvPW4oMTgpLGE9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUsbixhKXt2YXIgcyxsPWkoZSksYz1yKGwubGVuZ3RoKSx1PW8oYSxjKTtpZih0JiZuIT1uKXtmb3IoO2M+dTspaWYoKHM9bFt1KytdKSE9cylyZXR1cm4hMH1lbHNlIGZvcig7Yz51O3UrKylpZigodHx8dSBpbiBsKSYmbFt1XT09PW4pcmV0dXJuIHR8fHV8fDA7cmV0dXJuIXQmJi0xfX07dC5leHBvcnRzPXtpbmNsdWRlczphKCEwKSxpbmRleE9mOmEoITEpfX0sZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgaT1uKDMyKSxyPW4oMTIpLG89bigyMCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgYT1pKGUpO2EgaW4gdD9yLmYodCxhLG8oMCxuKSk6dFthXT1ufX0sZnVuY3Rpb24odCxlLG4pe3ZhciBpPW4oNTIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7aWYoaSh0KSx2b2lkIDA9PT1lKXJldHVybiB0O3N3aXRjaChuKXtjYXNlIDA6cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQuY2FsbChlKX07Y2FzZSAxOnJldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdC5jYWxsKGUsbil9O2Nhc2UgMjpyZXR1cm4gZnVuY3Rpb24obixpKXtyZXR1cm4gdC5jYWxsKGUsbixpKX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbihuLGkscil7cmV0dXJuIHQuY2FsbChlLG4saSxyKX19cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBwbHkoZSxhcmd1bWVudHMpfX19LGZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIGk9bigyMSkscj1uKDEwNyksbz1uKDI2KSxhPW4oMTcpLHM9big3MyksbD1hLnNldCxjPWEuZ2V0dGVyRm9yKCJBcnJheSBJdGVyYXRvciIpO3QuZXhwb3J0cz1zKEFycmF5LCJBcnJheSIsKGZ1bmN0aW9uKHQsZSl7bCh0aGlzLHt0eXBlOiJBcnJheSBJdGVyYXRvciIsdGFyZ2V0OmkodCksaW5kZXg6MCxraW5kOmV9KX0pLChmdW5jdGlvbigpe3ZhciB0PWModGhpcyksZT10LnRhcmdldCxuPXQua2luZCxpPXQuaW5kZXgrKztyZXR1cm4hZXx8aT49ZS5sZW5ndGg/KHQudGFyZ2V0PXZvaWQgMCx7dmFsdWU6dm9pZCAwLGRvbmU6ITB9KToia2V5cyI9PW4/e3ZhbHVlOmksZG9uZTohMX06InZhbHVlcyI9PW4/e3ZhbHVlOmVbaV0sZG9uZTohMX06e3ZhbHVlOltpLGVbaV1dLGRvbmU6ITF9fSksInZhbHVlcyIpLG8uQXJndW1lbnRzPW8uQXJyYXkscigia2V5cyIpLHIoInZhbHVlcyIpLHIoImVudHJpZXMiKX0sZnVuY3Rpb24odCxlLG4pe3ZhciBpLHI9big2KSxvPW4oNzEpLGE9big0OSkscz1uKDQ3KSxsPW4oMTA4KSxjPW4oNjMpLHU9big0NSkoIklFX1BST1RPIiksZD1mdW5jdGlvbigpe30saD1mdW5jdGlvbih0KXtyZXR1cm4iPHNjcmlwdD4iK3QrIjxcL3NjcmlwdD4ifSxmPWZ1bmN0aW9uKCl7dHJ5e2k9ZG9jdW1lbnQuZG9tYWluJiZuZXcgQWN0aXZlWE9iamVjdCgiaHRtbGZpbGUiKX1jYXRjaCh0KXt9dmFyIHQsZTtmPWk/ZnVuY3Rpb24odCl7dC53cml0ZShoKCIiKSksdC5jbG9zZSgpO3ZhciBlPXQucGFyZW50V2luZG93Lk9iamVjdDtyZXR1cm4gdD1udWxsLGV9KGkpOigoZT1jKCJpZnJhbWUiKSkuc3R5bGUuZGlzcGxheT0ibm9uZSIsbC5hcHBlbmRDaGlsZChlKSxlLnNyYz1TdHJpbmcoImphdmFzY3JpcHQ6IiksKHQ9ZS5jb250ZW50V2luZG93LmRvY3VtZW50KS5vcGVuKCksdC53cml0ZShoKCJkb2N1bWVudC5GPU9iamVjdCIpKSx0LmNsb3NlKCksdC5GKTtmb3IodmFyIG49YS5sZW5ndGg7bi0tOylkZWxldGUgZi5wcm90b3R5cGVbYVtuXV07cmV0dXJuIGYoKX07c1t1XT0hMCx0LmV4cG9ydHM9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24odCxlKXt2YXIgbjtyZXR1cm4gbnVsbCE9PXQ/KGQucHJvdG90eXBlPXIodCksbj1uZXcgZCxkLnByb3RvdHlwZT1udWxsLG5bdV09dCk6bj1mKCksdm9pZCAwPT09ZT9uOm8obixlKX19LGZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBUeXBlRXJyb3IoIkluY29ycmVjdCAiKyhuP24rIiAiOiIiKSsiaW52b2NhdGlvbiIpO3JldHVybiB0fX0sZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgaSxyLG89big4NCksYT1uKDExOCkscz1SZWdFeHAucHJvdG90eXBlLmV4ZWMsbD1TdHJpbmcucHJvdG90eXBlLnJlcGxhY2UsYz1zLHU9KGk9L2EvLHI9L2IqL2cscy5jYWxsKGksImEiKSxzLmNhbGwociwiYSIpLDAhPT1pLmxhc3RJbmRleHx8MCE9PXIubGFzdEluZGV4KSxkPWEuVU5TVVBQT1JURURfWXx8YS5CUk9LRU5fQ0FSRVQsaD12b2lkIDAhPT0vKCk/Py8uZXhlYygiIilbMV07KHV8fGh8fGQpJiYoYz1mdW5jdGlvbih0KXt2YXIgZSxuLGkscixhPXRoaXMsYz1kJiZhLnN0aWNreSxmPW8uY2FsbChhKSxwPWEuc291cmNlLGc9MCxtPXQ7cmV0dXJuIGMmJigtMT09PShmPWYucmVwbGFjZSgieSIsIiIpKS5pbmRleE9mKCJnIikmJihmKz0iZyIpLG09U3RyaW5nKHQpLnNsaWNlKGEubGFzdEluZGV4KSxhLmxhc3RJbmRleD4wJiYoIWEubXVsdGlsaW5lfHxhLm11bHRpbGluZSYmIlxuIiE9PXRbYS5sYXN0SW5kZXgtMV0pJiYocD0iKD86ICIrcCsiKSIsbT0iICIrbSxnKyspLG49bmV3IFJlZ0V4cCgiXig/OiIrcCsiKSIsZikpLGgmJihuPW5ldyBSZWdFeHAoIl4iK3ArIiQoPyFcXHMpIixmKSksdSYmKGU9YS5sYXN0SW5kZXgpLGk9cy5jYWxsKGM/bjphLG0pLGM/aT8oaS5pbnB1dD1pLmlucHV0LnNsaWNlKGcpLGlbMF09aVswXS5zbGljZShnKSxpLmluZGV4PWEubGFzdEluZGV4LGEubGFzdEluZGV4Kz1pWzBdLmxlbmd0aCk6YS5sYXN0SW5kZXg9MDp1JiZpJiYoYS5sYXN0SW5kZXg9YS5nbG9iYWw/aS5pbmRleCtpWzBdLmxlbmd0aDplKSxoJiZpJiZpLmxlbmd0aD4xJiZsLmNhbGwoaVswXSxuLChmdW5jdGlvbigpe2ZvcihyPTE7cjxhcmd1bWVudHMubGVuZ3RoLTI7cisrKXZvaWQgMD09PWFyZ3VtZW50c1tyXSYmKGlbcl09dm9pZCAwKX0pKSxpfSksdC5leHBvcnRzPWN9LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDMwKSxyPW4oMjYpLG89bigzKSgiaXRlcmF0b3IiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYobnVsbCE9dClyZXR1cm4gdFtvXXx8dFsiQEBpdGVyYXRvciJdfHxyW2kodCldfX0sZnVuY3Rpb24odCxlLG4pe3ZhciBpPW4oOCkscj1uKDYxKSxvPW4oMjApLGE9bigyMSkscz1uKDMyKSxsPW4oNyksYz1uKDYyKSx1PU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7ZS5mPWk/dTpmdW5jdGlvbih0LGUpe2lmKHQ9YSh0KSxlPXMoZSwhMCksYyl0cnl7cmV0dXJuIHUodCxlKX1jYXRjaCh0KXt9aWYobCh0LGUpKXJldHVybiBvKCFyLmYuY2FsbCh0LGUpLHRbZV0pfX0sZnVuY3Rpb24odCxlLG4pe3ZhciBpPW4oMikscj1uKDExKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt0cnl7cihpLHQsZSl9Y2F0Y2gobil7aVt0XT1lfXJldHVybiBlfX0sZnVuY3Rpb24odCxlLG4pe3ZhciBpPW4oMikscj1uKDQzKSxvPWlbIl9fY29yZS1qc19zaGFyZWRfXyJdfHxyKCJfX2NvcmUtanNfc2hhcmVkX18iLHt9KTt0LmV4cG9ydHM9b30sZnVuY3Rpb24odCxlLG4pe3ZhciBpPW4oNjUpLHI9big0Niksbz1pKCJrZXlzIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBvW3RdfHwob1t0XT1yKHQpKX19LGZ1bmN0aW9uKHQsZSl7dmFyIG49MCxpPU1hdGgucmFuZG9tKCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiJTeW1ib2woIitTdHJpbmcodm9pZCAwPT09dD8iIjp0KSsiKV8iKygrK24raSkudG9TdHJpbmcoMzYpfX0sZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9e319LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDY2KSxyPW4oNDkpLmNvbmNhdCgibGVuZ3RoIiwicHJvdG90eXBlIik7ZS5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzfHxmdW5jdGlvbih0KXtyZXR1cm4gaSh0LHIpfX0sZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9WyJjb25zdHJ1Y3RvciIsImhhc093blByb3BlcnR5IiwiaXNQcm90b3R5cGVPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwidG9Mb2NhbGVTdHJpbmciLCJ0b1N0cmluZyIsInZhbHVlT2YiXX0sZnVuY3Rpb24odCxlLG4pe3ZhciBpPW4oMjMpO3QuZXhwb3J0cz1BcnJheS5pc0FycmF5fHxmdW5jdGlvbih0KXtyZXR1cm4iQXJyYXkiPT1pKHQpfX0sZnVuY3Rpb24odCxlLG4pe3ZhciBpPW4oOSkscj1uKDUwKSxvPW4oMykoInNwZWNpZXMiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgbjtyZXR1cm4gcih0KSYmKCJmdW5jdGlvbiIhPXR5cGVvZihuPXQuY29uc3RydWN0b3IpfHxuIT09QXJyYXkmJiFyKG4ucHJvdG90eXBlKT9pKG4pJiZudWxsPT09KG49bltvXSkmJihuPXZvaWQgMCk6bj12b2lkIDApLG5ldyh2b2lkIDA9PT1uP0FycmF5Om4pKDA9PT1lPzA6ZSl9fSxmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz1mdW5jdGlvbih0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCl0aHJvdyBUeXBlRXJyb3IoU3RyaW5nKHQpKyIgaXMgbm90IGEgZnVuY3Rpb24iKTtyZXR1cm4gdH19LGZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIGk9bigwKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgbj1bXVt0XTtyZXR1cm4hIW4mJmkoKGZ1bmN0aW9uKCl7bi5jYWxsKG51bGwsZXx8ZnVuY3Rpb24oKXt0aHJvdyAxfSwxKX0pKX19LGZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIGk9bigyKSxyPW4oOCksbz1uKDc4KSxhPW4oMTEpLHM9big3OSksbD1uKDApLGM9bigzOSksdT1uKDE1KSxkPW4oNCksaD1uKDgwKSxmPW4oMTEzKSxwPW4oMjcpLGc9bigyOSksbT1uKDQ4KS5mLHY9bigxMikuZix5PW4oODEpLGI9bigyOCksdz1uKDE3KSx4PXcuZ2V0LF89dy5zZXQsUz1pLkFycmF5QnVmZmVyLEM9UyxrPWkuRGF0YVZpZXcsVD1rJiZrLnByb3RvdHlwZSxBPU9iamVjdC5wcm90b3R5cGUsRD1pLlJhbmdlRXJyb3IsRT1mLnBhY2ssTT1mLnVucGFjayxPPWZ1bmN0aW9uKHQpe3JldHVyblsyNTUmdF19LEk9ZnVuY3Rpb24odCl7cmV0dXJuWzI1NSZ0LHQ+PjgmMjU1XX0sUD1mdW5jdGlvbih0KXtyZXR1cm5bMjU1JnQsdD4+OCYyNTUsdD4+MTYmMjU1LHQ+PjI0JjI1NV19LEw9ZnVuY3Rpb24odCl7cmV0dXJuIHRbM108PDI0fHRbMl08PDE2fHRbMV08PDh8dFswXX0sTj1mdW5jdGlvbih0KXtyZXR1cm4gRSh0LDIzLDQpfSxGPWZ1bmN0aW9uKHQpe3JldHVybiBFKHQsNTIsOCl9LFI9ZnVuY3Rpb24odCxlKXt2KHQucHJvdG90eXBlLGUse2dldDpmdW5jdGlvbigpe3JldHVybiB4KHRoaXMpW2VdfX0pfSxqPWZ1bmN0aW9uKHQsZSxuLGkpe3ZhciByPWgobiksbz14KHQpO2lmKHIrZT5vLmJ5dGVMZW5ndGgpdGhyb3cgRCgiV3JvbmcgaW5kZXgiKTt2YXIgYT14KG8uYnVmZmVyKS5ieXRlcyxzPXIrby5ieXRlT2Zmc2V0LGw9YS5zbGljZShzLHMrZSk7cmV0dXJuIGk/bDpsLnJldmVyc2UoKX0sJD1mdW5jdGlvbih0LGUsbixpLHIsbyl7dmFyIGE9aChuKSxzPXgodCk7aWYoYStlPnMuYnl0ZUxlbmd0aCl0aHJvdyBEKCJXcm9uZyBpbmRleCIpO2Zvcih2YXIgbD14KHMuYnVmZmVyKS5ieXRlcyxjPWErcy5ieXRlT2Zmc2V0LHU9aSgrciksZD0wO2Q8ZTtkKyspbFtjK2RdPXVbbz9kOmUtZC0xXX07aWYobyl7aWYoIWwoKGZ1bmN0aW9uKCl7UygxKX0pKXx8IWwoKGZ1bmN0aW9uKCl7bmV3IFMoLTEpfSkpfHxsKChmdW5jdGlvbigpe3JldHVybiBuZXcgUyxuZXcgUygxLjUpLG5ldyBTKE5hTiksIkFycmF5QnVmZmVyIiE9Uy5uYW1lfSkpKXtmb3IodmFyIHosSD0oQz1mdW5jdGlvbih0KXtyZXR1cm4gYyh0aGlzLEMpLG5ldyBTKGgodCkpfSkucHJvdG90eXBlPVMucHJvdG90eXBlLEI9bShTKSxxPTA7Qi5sZW5ndGg+cTspKHo9QltxKytdKWluIEN8fGEoQyx6LFNbel0pO0guY29uc3RydWN0b3I9Q31nJiZwKFQpIT09QSYmZyhULEEpO3ZhciBXPW5ldyBrKG5ldyBDKDIpKSxVPVQuc2V0SW50ODtXLnNldEludDgoMCwyMTQ3NDgzNjQ4KSxXLnNldEludDgoMSwyMTQ3NDgzNjQ5KSwhVy5nZXRJbnQ4KDApJiZXLmdldEludDgoMSl8fHMoVCx7c2V0SW50ODpmdW5jdGlvbih0LGUpe1UuY2FsbCh0aGlzLHQsZTw8MjQ+PjI0KX0sc2V0VWludDg6ZnVuY3Rpb24odCxlKXtVLmNhbGwodGhpcyx0LGU8PDI0Pj4yNCl9fSx7dW5zYWZlOiEwfSl9ZWxzZSBDPWZ1bmN0aW9uKHQpe2ModGhpcyxDLCJBcnJheUJ1ZmZlciIpO3ZhciBlPWgodCk7Xyh0aGlzLHtieXRlczp5LmNhbGwobmV3IEFycmF5KGUpLDApLGJ5dGVMZW5ndGg6ZX0pLHJ8fCh0aGlzLmJ5dGVMZW5ndGg9ZSl9LGs9ZnVuY3Rpb24odCxlLG4pe2ModGhpcyxrLCJEYXRhVmlldyIpLGModCxDLCJEYXRhVmlldyIpO3ZhciBpPXgodCkuYnl0ZUxlbmd0aCxvPXUoZSk7aWYobzwwfHxvPmkpdGhyb3cgRCgiV3Jvbmcgb2Zmc2V0Iik7aWYobysobj12b2lkIDA9PT1uP2ktbzpkKG4pKT5pKXRocm93IEQoIldyb25nIGxlbmd0aCIpO18odGhpcyx7YnVmZmVyOnQsYnl0ZUxlbmd0aDpuLGJ5dGVPZmZzZXQ6b30pLHJ8fCh0aGlzLmJ1ZmZlcj10LHRoaXMuYnl0ZUxlbmd0aD1uLHRoaXMuYnl0ZU9mZnNldD1vKX0sciYmKFIoQywiYnl0ZUxlbmd0aCIpLFIoaywiYnVmZmVyIiksUihrLCJieXRlTGVuZ3RoIiksUihrLCJieXRlT2Zmc2V0IikpLHMoay5wcm90b3R5cGUse2dldEludDg6ZnVuY3Rpb24odCl7cmV0dXJuIGoodGhpcywxLHQpWzBdPDwyND4+MjR9LGdldFVpbnQ4OmZ1bmN0aW9uKHQpe3JldHVybiBqKHRoaXMsMSx0KVswXX0sZ2V0SW50MTY6ZnVuY3Rpb24odCl7dmFyIGU9aih0aGlzLDIsdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCk7cmV0dXJuKGVbMV08PDh8ZVswXSk8PDE2Pj4xNn0sZ2V0VWludDE2OmZ1bmN0aW9uKHQpe3ZhciBlPWoodGhpcywyLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApO3JldHVybiBlWzFdPDw4fGVbMF19LGdldEludDMyOmZ1bmN0aW9uKHQpe3JldHVybiBMKGoodGhpcyw0LHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApKX0sZ2V0VWludDMyOmZ1bmN0aW9uKHQpe3JldHVybiBMKGoodGhpcyw0LHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApKT4+PjB9LGdldEZsb2F0MzI6ZnVuY3Rpb24odCl7cmV0dXJuIE0oaih0aGlzLDQsdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCksMjMpfSxnZXRGbG9hdDY0OmZ1bmN0aW9uKHQpe3JldHVybiBNKGoodGhpcyw4LHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApLDUyKX0sc2V0SW50ODpmdW5jdGlvbih0LGUpeyQodGhpcywxLHQsTyxlKX0sc2V0VWludDg6ZnVuY3Rpb24odCxlKXskKHRoaXMsMSx0LE8sZSl9LHNldEludDE2OmZ1bmN0aW9uKHQsZSl7JCh0aGlzLDIsdCxJLGUsYXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDApfSxzZXRVaW50MTY6ZnVuY3Rpb24odCxlKXskKHRoaXMsMix0LEksZSxhcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMCl9LHNldEludDMyOmZ1bmN0aW9uKHQsZSl7JCh0aGlzLDQsdCxQLGUsYXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDApfSxzZXRVaW50MzI6ZnVuY3Rpb24odCxlKXskKHRoaXMsNCx0LFAsZSxhcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMCl9LHNldEZsb2F0MzI6ZnVuY3Rpb24odCxlKXskKHRoaXMsNCx0LE4sZSxhcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMCl9LHNldEZsb2F0NjQ6ZnVuY3Rpb24odCxlKXskKHRoaXMsOCx0LEYsZSxhcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMCl9fSk7YihDLCJBcnJheUJ1ZmZlciIpLGIoaywiRGF0YVZpZXciKSx0LmV4cG9ydHM9e0FycmF5QnVmZmVyOkMsRGF0YVZpZXc6a319LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT17fTtpW24oMykoInRvU3RyaW5nVGFnIildPSJ6Iix0LmV4cG9ydHM9IltvYmplY3Qgel0iPT09U3RyaW5nKGkpfSxmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciBpPW4oNSkscj1uKDQwKTtpKHt0YXJnZXQ6IlJlZ0V4cCIscHJvdG86ITAsZm9yY2VkOi8uLy5leGVjIT09cn0se2V4ZWM6cn0pfSxmdW5jdGlvbih0LGUsbil7dmFyIGk9bigxNSkscj1uKDE2KSxvPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlLG4pe3ZhciBvLGEscz1TdHJpbmcocihlKSksbD1pKG4pLGM9cy5sZW5ndGg7cmV0dXJuIGw8MHx8bD49Yz90PyIiOnZvaWQgMDoobz1zLmNoYXJDb2RlQXQobCkpPDU1Mjk2fHxvPjU2MzE5fHxsKzE9PT1jfHwoYT1zLmNoYXJDb2RlQXQobCsxKSk8NTYzMjB8fGE+NTczNDM/dD9zLmNoYXJBdChsKTpvOnQ/cy5zbGljZShsLGwrMik6YS01NjMyMCsoby01NTI5Njw8MTApKzY1NTM2fX07dC5leHBvcnRzPXtjb2RlQXQ6byghMSksY2hhckF0Om8oITApfX0sZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0IjtuKDU2KTt2YXIgaT1uKDE0KSxyPW4oMCksbz1uKDMpLGE9big0MCkscz1uKDExKSxsPW8oInNwZWNpZXMiKSxjPSFyKChmdW5jdGlvbigpe3ZhciB0PS8uLztyZXR1cm4gdC5leGVjPWZ1bmN0aW9uKCl7dmFyIHQ9W107cmV0dXJuIHQuZ3JvdXBzPXthOiI3In0sdH0sIjciIT09IiIucmVwbGFjZSh0LCIkPGE+Iil9KSksdT0iJDAiPT09ImEiLnJlcGxhY2UoLy4vLCIkMCIpLGQ9bygicmVwbGFjZSIpLGg9ISEvLi9bZF0mJiIiPT09Ly4vW2RdKCJhIiwiJDAiKSxmPSFyKChmdW5jdGlvbigpe3ZhciB0PS8oPzopLyxlPXQuZXhlYzt0LmV4ZWM9ZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O3ZhciBuPSJhYiIuc3BsaXQodCk7cmV0dXJuIDIhPT1uLmxlbmd0aHx8ImEiIT09blswXXx8ImIiIT09blsxXX0pKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4sZCl7dmFyIHA9byh0KSxnPSFyKChmdW5jdGlvbigpe3ZhciBlPXt9O3JldHVybiBlW3BdPWZ1bmN0aW9uKCl7cmV0dXJuIDd9LDchPSIiW3RdKGUpfSkpLG09ZyYmIXIoKGZ1bmN0aW9uKCl7dmFyIGU9ITEsbj0vYS87cmV0dXJuInNwbGl0Ij09PXQmJigobj17fSkuY29uc3RydWN0b3I9e30sbi5jb25zdHJ1Y3RvcltsXT1mdW5jdGlvbigpe3JldHVybiBufSxuLmZsYWdzPSIiLG5bcF09Ly4vW3BdKSxuLmV4ZWM9ZnVuY3Rpb24oKXtyZXR1cm4gZT0hMCxudWxsfSxuW3BdKCIiKSwhZX0pKTtpZighZ3x8IW18fCJyZXBsYWNlIj09PXQmJighY3x8IXV8fGgpfHwic3BsaXQiPT09dCYmIWYpe3ZhciB2PS8uL1twXSx5PW4ocCwiIlt0XSwoZnVuY3Rpb24odCxlLG4saSxyKXtyZXR1cm4gZS5leGVjPT09YT9nJiYhcj97ZG9uZTohMCx2YWx1ZTp2LmNhbGwoZSxuLGkpfTp7ZG9uZTohMCx2YWx1ZTp0LmNhbGwobixlLGkpfTp7ZG9uZTohMX19KSx7UkVQTEFDRV9LRUVQU18kMDp1LFJFR0VYUF9SRVBMQUNFX1NVQlNUSVRVVEVTX1VOREVGSU5FRF9DQVBUVVJFOmh9KSxiPXlbMF0sdz15WzFdO2koU3RyaW5nLnByb3RvdHlwZSx0LGIpLGkoUmVnRXhwLnByb3RvdHlwZSxwLDI9PWU/ZnVuY3Rpb24odCxlKXtyZXR1cm4gdy5jYWxsKHQsdGhpcyxlKX06ZnVuY3Rpb24odCl7cmV0dXJuIHcuY2FsbCh0LHRoaXMpfSl9ZCYmcyhSZWdFeHAucHJvdG90eXBlW3BdLCJzaGFtIiwhMCl9fSxmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciBpPW4oNTcpLmNoYXJBdDt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBlKyhuP2kodCxlKS5sZW5ndGg6MSl9fSxmdW5jdGlvbih0LGUsbil7dmFyIGk9bigyMykscj1uKDQwKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXt2YXIgbj10LmV4ZWM7aWYoImZ1bmN0aW9uIj09dHlwZW9mIG4pe3ZhciBvPW4uY2FsbCh0LGUpO2lmKCJvYmplY3QiIT10eXBlb2Ygbyl0aHJvdyBUeXBlRXJyb3IoIlJlZ0V4cCBleGVjIG1ldGhvZCByZXR1cm5lZCBzb21ldGhpbmcgb3RoZXIgdGhhbiBhbiBPYmplY3Qgb3IgbnVsbCIpO3JldHVybiBvfWlmKCJSZWdFeHAiIT09aSh0KSl0aHJvdyBUeXBlRXJyb3IoIlJlZ0V4cCNleGVjIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgcmVjZWl2ZXIiKTtyZXR1cm4gci5jYWxsKHQsZSl9fSxmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciBpPXt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLHI9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixvPXImJiFpLmNhbGwoezE6Mn0sMSk7ZS5mPW8/ZnVuY3Rpb24odCl7dmFyIGU9cih0aGlzLHQpO3JldHVybiEhZSYmZS5lbnVtZXJhYmxlfTppfSxmdW5jdGlvbih0LGUsbil7dmFyIGk9big4KSxyPW4oMCksbz1uKDYzKTt0LmV4cG9ydHM9IWkmJiFyKChmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkobygiZGl2IiksImEiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gN319KS5hfSkpfSxmdW5jdGlvbih0LGUsbil7dmFyIGk9bigyKSxyPW4oOSksbz1pLmRvY3VtZW50LGE9cihvKSYmcihvLmNyZWF0ZUVsZW1lbnQpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gYT9vLmNyZWF0ZUVsZW1lbnQodCk6e319fSxmdW5jdGlvbih0LGUsbil7dmFyIGk9big0NCkscj1GdW5jdGlvbi50b1N0cmluZzsiZnVuY3Rpb24iIT10eXBlb2YgaS5pbnNwZWN0U291cmNlJiYoaS5pbnNwZWN0U291cmNlPWZ1bmN0aW9uKHQpe3JldHVybiByLmNhbGwodCl9KSx0LmV4cG9ydHM9aS5pbnNwZWN0U291cmNlfSxmdW5jdGlvbih0LGUsbil7dmFyIGk9bigzMykscj1uKDQ0KTsodC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHJbdF18fChyW3RdPXZvaWQgMCE9PWU/ZTp7fSl9KSgidmVyc2lvbnMiLFtdKS5wdXNoKHt2ZXJzaW9uOiIzLjguMyIsbW9kZTppPyJwdXJlIjoiZ2xvYmFsIixjb3B5cmlnaHQ6IsKpIDIwMjEgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSkifSl9LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDcpLHI9bigyMSksbz1uKDM0KS5pbmRleE9mLGE9big0Nyk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7dmFyIG4scz1yKHQpLGw9MCxjPVtdO2ZvcihuIGluIHMpIWkoYSxuKSYmaShzLG4pJiZjLnB1c2gobik7Zm9yKDtlLmxlbmd0aD5sOylpKHMsbj1lW2wrK10pJiYofm8oYyxuKXx8Yy5wdXNoKG4pKTtyZXR1cm4gY319LGZ1bmN0aW9uKHQsZSl7ZS5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHN9LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDApO3QuZXhwb3J0cz0hIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJiFpKChmdW5jdGlvbigpe3JldHVybiFTdHJpbmcoU3ltYm9sKCkpfSkpfSxmdW5jdGlvbih0LGUsbil7dmFyIGkscixvPW4oMiksYT1uKDEwMykscz1vLnByb2Nlc3MsbD1zJiZzLnZlcnNpb25zLGM9bCYmbC52ODtjP3I9KGk9Yy5zcGxpdCgiLiIpKVswXStpWzFdOmEmJighKGk9YS5tYXRjaCgvRWRnZVwvKFxkKykvKSl8fGlbMV0+PTc0KSYmKGk9YS5tYXRjaCgvQ2hyb21lXC8oXGQrKS8pKSYmKHI9aVsxXSksdC5leHBvcnRzPXImJityfSxmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciBpPW4oMTMpLmZvckVhY2gscj1uKDUzKSxvPW4oMTkpLGE9cigiZm9yRWFjaCIpLHM9bygiZm9yRWFjaCIpO3QuZXhwb3J0cz1hJiZzP1tdLmZvckVhY2g6ZnVuY3Rpb24odCl7cmV0dXJuIGkodGhpcyx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDgpLHI9bigxMiksbz1uKDYpLGE9big3Mik7dC5leHBvcnRzPWk/T2JqZWN0LmRlZmluZVByb3BlcnRpZXM6ZnVuY3Rpb24odCxlKXtvKHQpO2Zvcih2YXIgbixpPWEoZSkscz1pLmxlbmd0aCxsPTA7cz5sOylyLmYodCxuPWlbbCsrXSxlW25dKTtyZXR1cm4gdH19LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDY2KSxyPW4oNDkpO3QuZXhwb3J0cz1PYmplY3Qua2V5c3x8ZnVuY3Rpb24odCl7cmV0dXJuIGkodCxyKX19LGZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIGk9big1KSxyPW4oNzQpLG89bigyNyksYT1uKDI5KSxzPW4oMjgpLGw9bigxMSksYz1uKDE0KSx1PW4oMyksZD1uKDMzKSxoPW4oMjYpLGY9big3NSkscD1mLkl0ZXJhdG9yUHJvdG90eXBlLGc9Zi5CVUdHWV9TQUZBUklfSVRFUkFUT1JTLG09dSgiaXRlcmF0b3IiKSx2PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9O3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbix1LGYseSxiKXtyKG4sZSx1KTt2YXIgdyx4LF8sUz1mdW5jdGlvbih0KXtpZih0PT09ZiYmRClyZXR1cm4gRDtpZighZyYmdCBpbiBUKXJldHVybiBUW3RdO3N3aXRjaCh0KXtjYXNlImtleXMiOmNhc2UidmFsdWVzIjpjYXNlImVudHJpZXMiOnJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgbih0aGlzLHQpfX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IG4odGhpcyl9fSxDPWUrIiBJdGVyYXRvciIsaz0hMSxUPXQucHJvdG90eXBlLEE9VFttXXx8VFsiQEBpdGVyYXRvciJdfHxmJiZUW2ZdLEQ9IWcmJkF8fFMoZiksRT0iQXJyYXkiPT1lJiZULmVudHJpZXN8fEE7aWYoRSYmKHc9byhFLmNhbGwobmV3IHQpKSxwIT09T2JqZWN0LnByb3RvdHlwZSYmdy5uZXh0JiYoZHx8byh3KT09PXB8fChhP2EodyxwKToiZnVuY3Rpb24iIT10eXBlb2Ygd1ttXSYmbCh3LG0sdikpLHModyxDLCEwLCEwKSxkJiYoaFtDXT12KSkpLCJ2YWx1ZXMiPT1mJiZBJiYidmFsdWVzIiE9PUEubmFtZSYmKGs9ITAsRD1mdW5jdGlvbigpe3JldHVybiBBLmNhbGwodGhpcyl9KSxkJiYhYnx8VFttXT09PUR8fGwoVCxtLEQpLGhbZV09RCxmKWlmKHg9e3ZhbHVlczpTKCJ2YWx1ZXMiKSxrZXlzOnk/RDpTKCJrZXlzIiksZW50cmllczpTKCJlbnRyaWVzIil9LGIpZm9yKF8gaW4geCkoZ3x8a3x8IShfIGluIFQpKSYmYyhULF8seFtfXSk7ZWxzZSBpKHt0YXJnZXQ6ZSxwcm90bzohMCxmb3JjZWQ6Z3x8a30seCk7cmV0dXJuIHh9fSxmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciBpPW4oNzUpLkl0ZXJhdG9yUHJvdG90eXBlLHI9bigzOCksbz1uKDIwKSxhPW4oMjgpLHM9bigyNiksbD1mdW5jdGlvbigpe3JldHVybiB0aGlzfTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlLG4pe3ZhciBjPWUrIiBJdGVyYXRvciI7cmV0dXJuIHQucHJvdG90eXBlPXIoaSx7bmV4dDpvKDEsbil9KSxhKHQsYywhMSwhMCksc1tjXT1sLHR9fSxmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciBpLHIsbyxhPW4oMCkscz1uKDI3KSxsPW4oMTEpLGM9big3KSx1PW4oMyksZD1uKDMzKSxoPXUoIml0ZXJhdG9yIiksZj0hMTtbXS5rZXlzJiYoIm5leHQiaW4obz1bXS5rZXlzKCkpPyhyPXMocyhvKSkpIT09T2JqZWN0LnByb3RvdHlwZSYmKGk9cik6Zj0hMCk7dmFyIHA9bnVsbD09aXx8YSgoZnVuY3Rpb24oKXt2YXIgdD17fTtyZXR1cm4gaVtoXS5jYWxsKHQpIT09dH0pKTtwJiYoaT17fSksZCYmIXB8fGMoaSxoKXx8bChpLGgsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSksdC5leHBvcnRzPXtJdGVyYXRvclByb3RvdHlwZTppLEJVR0dZX1NBRkFSSV9JVEVSQVRPUlM6Zn19LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDApO3QuZXhwb3J0cz0haSgoZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1udWxsLE9iamVjdC5nZXRQcm90b3R5cGVPZihuZXcgdCkhPT10LnByb3RvdHlwZX0pKX0sZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgaT1uKDUpLHI9bigxOCksbz1uKDE1KSxhPW4oNCkscz1uKDEwKSxsPW4oNTEpLGM9bigzNSksdT1uKDI1KSxkPW4oMTkpLGg9dSgic3BsaWNlIiksZj1kKCJzcGxpY2UiLHtBQ0NFU1NPUlM6ITAsMDowLDE6Mn0pLHA9TWF0aC5tYXgsZz1NYXRoLm1pbjtpKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6IWh8fCFmfSx7c3BsaWNlOmZ1bmN0aW9uKHQsZSl7dmFyIG4saSx1LGQsaCxmLG09cyh0aGlzKSx2PWEobS5sZW5ndGgpLHk9cih0LHYpLGI9YXJndW1lbnRzLmxlbmd0aDtpZigwPT09Yj9uPWk9MDoxPT09Yj8obj0wLGk9di15KToobj1iLTIsaT1nKHAobyhlKSwwKSx2LXkpKSx2K24taT45MDA3MTk5MjU0NzQwOTkxKXRocm93IFR5cGVFcnJvcigiTWF4aW11bSBhbGxvd2VkIGxlbmd0aCBleGNlZWRlZCIpO2Zvcih1PWwobSxpKSxkPTA7ZDxpO2QrKykoaD15K2QpaW4gbSYmYyh1LGQsbVtoXSk7aWYodS5sZW5ndGg9aSxuPGkpe2ZvcihkPXk7ZDx2LWk7ZCsrKWY9ZCtuLChoPWQraSlpbiBtP21bZl09bVtoXTpkZWxldGUgbVtmXTtmb3IoZD12O2Q+di1pK247ZC0tKWRlbGV0ZSBtW2QtMV19ZWxzZSBpZihuPmkpZm9yKGQ9di1pO2Q+eTtkLS0pZj1kK24tMSwoaD1kK2ktMSlpbiBtP21bZl09bVtoXTpkZWxldGUgbVtmXTtmb3IoZD0wO2Q8bjtkKyspbVtkK3ldPWFyZ3VtZW50c1tkKzJdO3JldHVybiBtLmxlbmd0aD12LWkrbix1fX0pfSxmdW5jdGlvbih0LGUpe3QuZXhwb3J0cz0idW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiYidW5kZWZpbmVkIiE9dHlwZW9mIERhdGFWaWV3fSxmdW5jdGlvbih0LGUsbil7dmFyIGk9bigxNCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXtmb3IodmFyIHIgaW4gZSlpKHQscixlW3JdLG4pO3JldHVybiB0fX0sZnVuY3Rpb24odCxlLG4pe3ZhciBpPW4oMTUpLHI9big0KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYodm9pZCAwPT09dClyZXR1cm4gMDt2YXIgZT1pKHQpLG49cihlKTtpZihlIT09bil0aHJvdyBSYW5nZUVycm9yKCJXcm9uZyBsZW5ndGggb3IgaW5kZXgiKTtyZXR1cm4gbn19LGZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIGk9bigxMCkscj1uKDE4KSxvPW4oNCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1pKHRoaXMpLG49byhlLmxlbmd0aCksYT1hcmd1bWVudHMubGVuZ3RoLHM9cihhPjE/YXJndW1lbnRzWzFdOnZvaWQgMCxuKSxsPWE+Mj9hcmd1bWVudHNbMl06dm9pZCAwLGM9dm9pZCAwPT09bD9uOnIobCxuKTtjPnM7KWVbcysrXT10O3JldHVybiBlfX0sZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgaT1uKDI0KSxyPW4oMTIpLG89bigzKSxhPW4oOCkscz1vKCJzcGVjaWVzIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPWkodCksbj1yLmY7YSYmZSYmIWVbc10mJm4oZSxzLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9fSl9fSxmdW5jdGlvbih0LGUsbil7dmFyIGk9big4KSxyPW4oMTIpLmYsbz1GdW5jdGlvbi5wcm90b3R5cGUsYT1vLnRvU3RyaW5nLHM9L15ccypmdW5jdGlvbiAoW14gKF0qKS87aSYmISgibmFtZSJpbiBvKSYmcihvLCJuYW1lIix7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3RyeXtyZXR1cm4gYS5jYWxsKHRoaXMpLm1hdGNoKHMpWzFdfWNhdGNoKHQpe3JldHVybiIifX19KX0sZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgaT1uKDYpO3QuZXhwb3J0cz1mdW5jdGlvbigpe3ZhciB0PWkodGhpcyksZT0iIjtyZXR1cm4gdC5nbG9iYWwmJihlKz0iZyIpLHQuaWdub3JlQ2FzZSYmKGUrPSJpIiksdC5tdWx0aWxpbmUmJihlKz0ibSIpLHQuZG90QWxsJiYoZSs9InMiKSx0LnVuaWNvZGUmJihlKz0idSIpLHQuc3RpY2t5JiYoZSs9InkiKSxlfX0sZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgaT1uKDU3KS5jaGFyQXQscj1uKDE3KSxvPW4oNzMpLGE9ci5zZXQscz1yLmdldHRlckZvcigiU3RyaW5nIEl0ZXJhdG9yIik7byhTdHJpbmcsIlN0cmluZyIsKGZ1bmN0aW9uKHQpe2EodGhpcyx7dHlwZToiU3RyaW5nIEl0ZXJhdG9yIixzdHJpbmc6U3RyaW5nKHQpLGluZGV4OjB9KX0pLChmdW5jdGlvbigpe3ZhciB0LGU9cyh0aGlzKSxuPWUuc3RyaW5nLHI9ZS5pbmRleDtyZXR1cm4gcj49bi5sZW5ndGg/e3ZhbHVlOnZvaWQgMCxkb25lOiEwfToodD1pKG4sciksZS5pbmRleCs9dC5sZW5ndGgse3ZhbHVlOnQsZG9uZTohMX0pfSkpfSxmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciBpPW4oNTgpLHI9big2KSxvPW4oNCksYT1uKDE2KSxzPW4oNTkpLGw9big2MCk7aSgibWF0Y2giLDEsKGZ1bmN0aW9uKHQsZSxuKXtyZXR1cm5bZnVuY3Rpb24oZSl7dmFyIG49YSh0aGlzKSxpPW51bGw9PWU/dm9pZCAwOmVbdF07cmV0dXJuIHZvaWQgMCE9PWk/aS5jYWxsKGUsbik6bmV3IFJlZ0V4cChlKVt0XShTdHJpbmcobikpfSxmdW5jdGlvbih0KXt2YXIgaT1uKGUsdCx0aGlzKTtpZihpLmRvbmUpcmV0dXJuIGkudmFsdWU7dmFyIGE9cih0KSxjPVN0cmluZyh0aGlzKTtpZighYS5nbG9iYWwpcmV0dXJuIGwoYSxjKTt2YXIgdT1hLnVuaWNvZGU7YS5sYXN0SW5kZXg9MDtmb3IodmFyIGQsaD1bXSxmPTA7bnVsbCE9PShkPWwoYSxjKSk7KXt2YXIgcD1TdHJpbmcoZFswXSk7aFtmXT1wLCIiPT09cCYmKGEubGFzdEluZGV4PXMoYyxvKGEubGFzdEluZGV4KSx1KSksZisrfXJldHVybiAwPT09Zj9udWxsOmh9XX0pKX0sZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgaT1uKDUpLHI9bigxMjQpLnRyaW07aSh7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDpuKDEyNSkoInRyaW0iKX0se3RyaW06ZnVuY3Rpb24oKXtyZXR1cm4gcih0aGlzKX19KX0sZnVuY3Rpb24odCxlKXt0LmV4cG9ydHM9Ilx0XG5cdlxmXHIgwqDhmoDigIDigIHigILigIPigITigIXigIbigIfigIjigInigIrigK/igZ/jgIBcdTIwMjhcdTIwMjlcdWZlZmYifSxmdW5jdGlvbih0LGUsbil7dmFyIGk9bigxMzApO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUpe3ZhciBuPWkodCk7aWYobiVlKXRocm93IFJhbmdlRXJyb3IoIldyb25nIG9mZnNldCIpO3JldHVybiBufX0sZnVuY3Rpb24odCxlLG4pe3ZhciBpPW4oMykscj1uKDI2KSxvPWkoIml0ZXJhdG9yIiksYT1BcnJheS5wcm90b3R5cGU7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDAhPT10JiYoci5BcnJheT09PXR8fGFbb109PT10KX19LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDUyKSxyPW4oMTApLG89bigzMSksYT1uKDQpLHM9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUsbixzLGwpe2kobik7dmFyIGM9cihlKSx1PW8oYyksZD1hKGMubGVuZ3RoKSxoPXQ/ZC0xOjAsZj10Py0xOjE7aWYoczwyKWZvcig7Oyl7aWYoaCBpbiB1KXtsPXVbaF0saCs9ZjticmVha31pZihoKz1mLHQ/aDwwOmQ8PWgpdGhyb3cgVHlwZUVycm9yKCJSZWR1Y2Ugb2YgZW1wdHkgYXJyYXkgd2l0aCBubyBpbml0aWFsIHZhbHVlIil9Zm9yKDt0P2g+PTA6ZD5oO2grPWYpaCBpbiB1JiYobD1uKGwsdVtoXSxoLGMpKTtyZXR1cm4gbH19O3QuZXhwb3J0cz17bGVmdDpzKCExKSxyaWdodDpzKCEwKX19LGZ1bmN0aW9uKHQsZSl7dC5leHBvcnRzPXtDU1NSdWxlTGlzdDowLENTU1N0eWxlRGVjbGFyYXRpb246MCxDU1NWYWx1ZUxpc3Q6MCxDbGllbnRSZWN0TGlzdDowLERPTVJlY3RMaXN0OjAsRE9NU3RyaW5nTGlzdDowLERPTVRva2VuTGlzdDoxLERhdGFUcmFuc2Zlckl0ZW1MaXN0OjAsRmlsZUxpc3Q6MCxIVE1MQWxsQ29sbGVjdGlvbjowLEhUTUxDb2xsZWN0aW9uOjAsSFRNTEZvcm1FbGVtZW50OjAsSFRNTFNlbGVjdEVsZW1lbnQ6MCxNZWRpYUxpc3Q6MCxNaW1lVHlwZUFycmF5OjAsTmFtZWROb2RlTWFwOjAsTm9kZUxpc3Q6MSxQYWludFJlcXVlc3RMaXN0OjAsUGx1Z2luOjAsUGx1Z2luQXJyYXk6MCxTVkdMZW5ndGhMaXN0OjAsU1ZHTnVtYmVyTGlzdDowLFNWR1BhdGhTZWdMaXN0OjAsU1ZHUG9pbnRMaXN0OjAsU1ZHU3RyaW5nTGlzdDowLFNWR1RyYW5zZm9ybUxpc3Q6MCxTb3VyY2VCdWZmZXJMaXN0OjAsU3R5bGVTaGVldExpc3Q6MCxUZXh0VHJhY2tDdWVMaXN0OjAsVGV4dFRyYWNrTGlzdDowLFRvdWNoTGlzdDowfX0sZnVuY3Rpb24odCxlLG4pe3ZhciBpPW4oMCkscj1uKDMpLG89bigzMyksYT1yKCJpdGVyYXRvciIpO3QuZXhwb3J0cz0haSgoZnVuY3Rpb24oKXt2YXIgdD1uZXcgVVJMKCJiP2E9MSZiPTImYz0zIiwiaHR0cDovL2EiKSxlPXQuc2VhcmNoUGFyYW1zLG49IiI7cmV0dXJuIHQucGF0aG5hbWU9ImMlMjBkIixlLmZvckVhY2goKGZ1bmN0aW9uKHQsaSl7ZS5kZWxldGUoImIiKSxuKz1pK3R9KSksbyYmIXQudG9KU09OfHwhZS5zb3J0fHwiaHR0cDovL2EvYyUyMGQ/YT0xJmM9MyIhPT10LmhyZWZ8fCIzIiE9PWUuZ2V0KCJjIil8fCJhPTEiIT09U3RyaW5nKG5ldyBVUkxTZWFyY2hQYXJhbXMoIj9hPTEiKSl8fCFlW2FdfHwiYSIhPT1uZXcgVVJMKCJodHRwczovL2FAYiIpLnVzZXJuYW1lfHwiYiIhPT1uZXcgVVJMU2VhcmNoUGFyYW1zKG5ldyBVUkxTZWFyY2hQYXJhbXMoImE9YiIpKS5nZXQoImEiKXx8InhuLS1lMWF5YmMiIT09bmV3IFVSTCgiaHR0cDovL9GC0LXRgdGCIikuaG9zdHx8IiMlRDAlQjEiIT09bmV3IFVSTCgiaHR0cDovL2Ej0LEiKS5oYXNofHwiYTFjMyIhPT1ufHwieCIhPT1uZXcgVVJMKCJodHRwOi8veCIsdm9pZCAwKS5ob3N0fSkpfSxmdW5jdGlvbih0LGUsbil7dC5leHBvcnRzPW4oMTY4KX0sZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgaT1uKDUpLHI9bigwKSxvPW4oNTApLGE9big5KSxzPW4oMTApLGw9big0KSxjPW4oMzUpLHU9big1MSksZD1uKDI1KSxoPW4oMyksZj1uKDY5KSxwPWgoImlzQ29uY2F0U3ByZWFkYWJsZSIpLGc9Zj49NTF8fCFyKChmdW5jdGlvbigpe3ZhciB0PVtdO3JldHVybiB0W3BdPSExLHQuY29uY2F0KClbMF0hPT10fSkpLG09ZCgiY29uY2F0Iiksdj1mdW5jdGlvbih0KXtpZighYSh0KSlyZXR1cm4hMTt2YXIgZT10W3BdO3JldHVybiB2b2lkIDAhPT1lPyEhZTpvKHQpfTtpKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6IWd8fCFtfSx7Y29uY2F0OmZ1bmN0aW9uKHQpe3ZhciBlLG4saSxyLG8sYT1zKHRoaXMpLGQ9dShhLDApLGg9MDtmb3IoZT0tMSxpPWFyZ3VtZW50cy5sZW5ndGg7ZTxpO2UrKylpZih2KG89LTE9PT1lP2E6YXJndW1lbnRzW2VdKSl7aWYoaCsocj1sKG8ubGVuZ3RoKSk+OTAwNzE5OTI1NDc0MDk5MSl0aHJvdyBUeXBlRXJyb3IoIk1heGltdW0gYWxsb3dlZCBpbmRleCBleGNlZWRlZCIpO2ZvcihuPTA7bjxyO24rKyxoKyspbiBpbiBvJiZjKGQsaCxvW25dKX1lbHNle2lmKGg+PTkwMDcxOTkyNTQ3NDA5OTEpdGhyb3cgVHlwZUVycm9yKCJNYXhpbXVtIGFsbG93ZWQgaW5kZXggZXhjZWVkZWQiKTtjKGQsaCsrLG8pfXJldHVybiBkLmxlbmd0aD1oLGR9fSl9LGZ1bmN0aW9uKHQsZSl7dmFyIG47bj1mdW5jdGlvbigpe3JldHVybiB0aGlzfSgpO3RyeXtuPW58fG5ldyBGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpfWNhdGNoKHQpeyJvYmplY3QiPT10eXBlb2Ygd2luZG93JiYobj13aW5kb3cpfXQuZXhwb3J0cz1ufSxmdW5jdGlvbih0LGUsbil7dmFyIGk9bigyKSxyPW4oNjQpLG89aS5XZWFrTWFwO3QuZXhwb3J0cz0iZnVuY3Rpb24iPT10eXBlb2YgbyYmL25hdGl2ZSBjb2RlLy50ZXN0KHIobykpfSxmdW5jdGlvbih0LGUsbil7dmFyIGk9big3KSxyPW4oOTkpLG89big0MiksYT1uKDEyKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG49cihlKSxzPWEuZixsPW8uZixjPTA7YzxuLmxlbmd0aDtjKyspe3ZhciB1PW5bY107aSh0LHUpfHxzKHQsdSxsKGUsdSkpfX19LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDI0KSxyPW4oNDgpLG89big2NyksYT1uKDYpO3QuZXhwb3J0cz1pKCJSZWZsZWN0Iiwib3duS2V5cyIpfHxmdW5jdGlvbih0KXt2YXIgZT1yLmYoYSh0KSksbj1vLmY7cmV0dXJuIG4/ZS5jb25jYXQobih0KSk6ZX19LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDIpO3QuZXhwb3J0cz1pfSxmdW5jdGlvbih0LGUsbil7dmFyIGk9bigwKSxyPS8jfFwucHJvdG90eXBlXC4vLG89ZnVuY3Rpb24odCxlKXt2YXIgbj1zW2EodCldO3JldHVybiBuPT1jfHxuIT1sJiYoImZ1bmN0aW9uIj09dHlwZW9mIGU/aShlKTohIWUpfSxhPW8ubm9ybWFsaXplPWZ1bmN0aW9uKHQpe3JldHVybiBTdHJpbmcodCkucmVwbGFjZShyLCIuIikudG9Mb3dlckNhc2UoKX0scz1vLmRhdGE9e30sbD1vLk5BVElWRT0iTiIsYz1vLlBPTFlGSUxMPSJQIjt0LmV4cG9ydHM9b30sZnVuY3Rpb24odCxlLG4pe3ZhciBpPW4oNjgpO3QuZXhwb3J0cz1pJiYhU3ltYm9sLnNoYW0mJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yfSxmdW5jdGlvbih0LGUsbil7dmFyIGk9bigyNCk7dC5leHBvcnRzPWkoIm5hdmlnYXRvciIsInVzZXJBZ2VudCIpfHwiIn0sZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgaT1uKDUpLHI9bigxMykuZmlsdGVyLG89bigyNSksYT1uKDE5KSxzPW8oImZpbHRlciIpLGw9YSgiZmlsdGVyIik7aSh7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOiFzfHwhbH0se2ZpbHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gcih0aGlzLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pfSxmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciBpPW4oNSkscj1uKDcwKTtpKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6W10uZm9yRWFjaCE9cn0se2ZvckVhY2g6cn0pfSxmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciBpPW4oNSkscj1uKDM0KS5pbmRleE9mLG89big1MyksYT1uKDE5KSxzPVtdLmluZGV4T2YsbD0hIXMmJjEvWzFdLmluZGV4T2YoMSwtMCk8MCxjPW8oImluZGV4T2YiKSx1PWEoImluZGV4T2YiLHtBQ0NFU1NPUlM6ITAsMTowfSk7aSh7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOmx8fCFjfHwhdX0se2luZGV4T2Y6ZnVuY3Rpb24odCl7cmV0dXJuIGw/cy5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fDA6cih0aGlzLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pfSxmdW5jdGlvbih0LGUsbil7dmFyIGk9bigzKSxyPW4oMzgpLG89bigxMiksYT1pKCJ1bnNjb3BhYmxlcyIpLHM9QXJyYXkucHJvdG90eXBlO251bGw9PXNbYV0mJm8uZihzLGEse2NvbmZpZ3VyYWJsZTohMCx2YWx1ZTpyKG51bGwpfSksdC5leHBvcnRzPWZ1bmN0aW9uKHQpe3NbYV1bdF09ITB9fSxmdW5jdGlvbih0LGUsbil7dmFyIGk9bigyNCk7dC5leHBvcnRzPWkoImRvY3VtZW50IiwiZG9jdW1lbnRFbGVtZW50Iil9LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDkpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtpZighaSh0KSYmbnVsbCE9PXQpdGhyb3cgVHlwZUVycm9yKCJDYW4ndCBzZXQgIitTdHJpbmcodCkrIiBhcyBhIHByb3RvdHlwZSIpO3JldHVybiB0fX0sZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgaT1uKDUpLHI9bigxMykubWFwLG89bigyNSksYT1uKDE5KSxzPW8oIm1hcCIpLGw9YSgibWFwIik7aSh7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOiFzfHwhbH0se21hcDpmdW5jdGlvbih0KXtyZXR1cm4gcih0aGlzLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pfSxmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciBpPW4oNSkscj1uKDkpLG89big1MCksYT1uKDE4KSxzPW4oNCksbD1uKDIxKSxjPW4oMzUpLHU9bigzKSxkPW4oMjUpLGg9bigxOSksZj1kKCJzbGljZSIpLHA9aCgic2xpY2UiLHtBQ0NFU1NPUlM6ITAsMDowLDE6Mn0pLGc9dSgic3BlY2llcyIpLG09W10uc2xpY2Usdj1NYXRoLm1heDtpKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6IWZ8fCFwfSx7c2xpY2U6ZnVuY3Rpb24odCxlKXt2YXIgbixpLHUsZD1sKHRoaXMpLGg9cyhkLmxlbmd0aCksZj1hKHQsaCkscD1hKHZvaWQgMD09PWU/aDplLGgpO2lmKG8oZCkmJigiZnVuY3Rpb24iIT10eXBlb2Yobj1kLmNvbnN0cnVjdG9yKXx8biE9PUFycmF5JiYhbyhuLnByb3RvdHlwZSk/cihuKSYmbnVsbD09PShuPW5bZ10pJiYobj12b2lkIDApOm49dm9pZCAwLG49PT1BcnJheXx8dm9pZCAwPT09bikpcmV0dXJuIG0uY2FsbChkLGYscCk7Zm9yKGk9bmV3KHZvaWQgMD09PW4/QXJyYXk6bikodihwLWYsMCkpLHU9MDtmPHA7ZisrLHUrKylmIGluIGQmJmMoaSx1LGRbZl0pO3JldHVybiBpLmxlbmd0aD11LGl9fSl9LGZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIGk9big1KSxyPW4oMiksbz1uKDU0KSxhPW4oODIpLHM9by5BcnJheUJ1ZmZlcjtpKHtnbG9iYWw6ITAsZm9yY2VkOnIuQXJyYXlCdWZmZXIhPT1zfSx7QXJyYXlCdWZmZXI6c30pLGEoIkFycmF5QnVmZmVyIil9LGZ1bmN0aW9uKHQsZSl7dmFyIG49TWF0aC5hYnMsaT1NYXRoLnBvdyxyPU1hdGguZmxvb3Isbz1NYXRoLmxvZyxhPU1hdGguTE4yO3QuZXhwb3J0cz17cGFjazpmdW5jdGlvbih0LGUscyl7dmFyIGwsYyx1LGQ9bmV3IEFycmF5KHMpLGg9OCpzLWUtMSxmPSgxPDxoKS0xLHA9Zj4+MSxnPTIzPT09ZT9pKDIsLTI0KS1pKDIsLTc3KTowLG09dDwwfHwwPT09dCYmMS90PDA/MTowLHY9MDtmb3IoKHQ9bih0KSkhPXR8fHQ9PT0xLzA/KGM9dCE9dD8xOjAsbD1mKToobD1yKG8odCkvYSksdCoodT1pKDIsLWwpKTwxJiYobC0tLHUqPTIpLCh0Kz1sK3A+PTE/Zy91OmcqaSgyLDEtcCkpKnU+PTImJihsKyssdS89MiksbCtwPj1mPyhjPTAsbD1mKTpsK3A+PTE/KGM9KHQqdS0xKSppKDIsZSksbCs9cCk6KGM9dCppKDIscC0xKSppKDIsZSksbD0wKSk7ZT49ODtkW3YrK109MjU1JmMsYy89MjU2LGUtPTgpO2ZvcihsPWw8PGV8YyxoKz1lO2g+MDtkW3YrK109MjU1JmwsbC89MjU2LGgtPTgpO3JldHVybiBkWy0tdl18PTEyOCptLGR9LHVucGFjazpmdW5jdGlvbih0LGUpe3ZhciBuLHI9dC5sZW5ndGgsbz04KnItZS0xLGE9KDE8PG8pLTEscz1hPj4xLGw9by03LGM9ci0xLHU9dFtjLS1dLGQ9MTI3JnU7Zm9yKHU+Pj03O2w+MDtkPTI1NipkK3RbY10sYy0tLGwtPTgpO2ZvcihuPWQmKDE8PC1sKS0xLGQ+Pj0tbCxsKz1lO2w+MDtuPTI1NipuK3RbY10sYy0tLGwtPTgpO2lmKDA9PT1kKWQ9MS1zO2Vsc2V7aWYoZD09PWEpcmV0dXJuIG4/TmFOOnU/LTEvMDoxLzA7bis9aSgyLGUpLGQtPXN9cmV0dXJuKHU/LTE6MSkqbippKDIsZC1lKX19fSxmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciBpPW4oNSkscj1uKDApLG89big1NCksYT1uKDYpLHM9bigxOCksbD1uKDQpLGM9bigyMiksdT1vLkFycmF5QnVmZmVyLGQ9by5EYXRhVmlldyxoPXUucHJvdG90eXBlLnNsaWNlO2koe3RhcmdldDoiQXJyYXlCdWZmZXIiLHByb3RvOiEwLHVuc2FmZTohMCxmb3JjZWQ6cigoZnVuY3Rpb24oKXtyZXR1cm4hbmV3IHUoMikuc2xpY2UoMSx2b2lkIDApLmJ5dGVMZW5ndGh9KSl9LHtzbGljZTpmdW5jdGlvbih0LGUpe2lmKHZvaWQgMCE9PWgmJnZvaWQgMD09PWUpcmV0dXJuIGguY2FsbChhKHRoaXMpLHQpO2Zvcih2YXIgbj1hKHRoaXMpLmJ5dGVMZW5ndGgsaT1zKHQsbikscj1zKHZvaWQgMD09PWU/bjplLG4pLG89bmV3KGModGhpcyx1KSkobChyLWkpKSxmPW5ldyBkKHRoaXMpLHA9bmV3IGQobyksZz0wO2k8cjspcC5zZXRVaW50OChnKyssZi5nZXRVaW50OChpKyspKTtyZXR1cm4gb319KX0sZnVuY3Rpb24odCxlLG4pe3ZhciBpPW4oNSkscj1uKDApLG89bigxMCksYT1uKDI3KSxzPW4oNzYpO2koe3RhcmdldDoiT2JqZWN0IixzdGF0OiEwLGZvcmNlZDpyKChmdW5jdGlvbigpe2EoMSl9KSksc2hhbTohc30se2dldFByb3RvdHlwZU9mOmZ1bmN0aW9uKHQpe3JldHVybiBhKG8odCkpfX0pfSxmdW5jdGlvbih0LGUsbil7dmFyIGk9big1NSkscj1uKDE0KSxvPW4oMTE3KTtpfHxyKE9iamVjdC5wcm90b3R5cGUsInRvU3RyaW5nIixvLHt1bnNhZmU6ITB9KX0sZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgaT1uKDU1KSxyPW4oMzApO3QuZXhwb3J0cz1pP3t9LnRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIltvYmplY3QgIityKHRoaXMpKyJdIn19LGZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIGk9bigwKTtmdW5jdGlvbiByKHQsZSl7cmV0dXJuIFJlZ0V4cCh0LGUpfWUuVU5TVVBQT1JURURfWT1pKChmdW5jdGlvbigpe3ZhciB0PXIoImEiLCJ5Iik7cmV0dXJuIHQubGFzdEluZGV4PTIsbnVsbCE9dC5leGVjKCJhYmNkIil9KSksZS5CUk9LRU5fQ0FSRVQ9aSgoZnVuY3Rpb24oKXt2YXIgdD1yKCJeciIsImd5Iik7cmV0dXJuIHQubGFzdEluZGV4PTIsbnVsbCE9dC5leGVjKCJzdHIiKX0pKX0sZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgaT1uKDE0KSxyPW4oNiksbz1uKDApLGE9big4NCkscz1SZWdFeHAucHJvdG90eXBlLGw9cy50b1N0cmluZyxjPW8oKGZ1bmN0aW9uKCl7cmV0dXJuIi9hL2IiIT1sLmNhbGwoe3NvdXJjZToiYSIsZmxhZ3M6ImIifSl9KSksdT0idG9TdHJpbmciIT1sLm5hbWU7KGN8fHUpJiZpKFJlZ0V4cC5wcm90b3R5cGUsInRvU3RyaW5nIiwoZnVuY3Rpb24oKXt2YXIgdD1yKHRoaXMpLGU9U3RyaW5nKHQuc291cmNlKSxuPXQuZmxhZ3M7cmV0dXJuIi8iK2UrIi8iK1N0cmluZyh2b2lkIDA9PT1uJiZ0IGluc3RhbmNlb2YgUmVnRXhwJiYhKCJmbGFncyJpbiBzKT9hLmNhbGwodCk6bil9KSx7dW5zYWZlOiEwfSl9LGZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIGk9big1OCkscj1uKDYpLG89big0KSxhPW4oMTUpLHM9bigxNiksbD1uKDU5KSxjPW4oMTIxKSx1PW4oNjApLGQ9TWF0aC5tYXgsaD1NYXRoLm1pbjtpKCJyZXBsYWNlIiwyLChmdW5jdGlvbih0LGUsbixpKXt2YXIgZj1pLlJFR0VYUF9SRVBMQUNFX1NVQlNUSVRVVEVTX1VOREVGSU5FRF9DQVBUVVJFLHA9aS5SRVBMQUNFX0tFRVBTXyQwLGc9Zj8iJCI6IiQwIjtyZXR1cm5bZnVuY3Rpb24obixpKXt2YXIgcj1zKHRoaXMpLG89bnVsbD09bj92b2lkIDA6blt0XTtyZXR1cm4gdm9pZCAwIT09bz9vLmNhbGwobixyLGkpOmUuY2FsbChTdHJpbmcociksbixpKX0sZnVuY3Rpb24odCxpKXtpZighZiYmcHx8InN0cmluZyI9PXR5cGVvZiBpJiYtMT09PWkuaW5kZXhPZihnKSl7dmFyIHM9bihlLHQsdGhpcyxpKTtpZihzLmRvbmUpcmV0dXJuIHMudmFsdWV9dmFyIG09cih0KSx2PVN0cmluZyh0aGlzKSx5PSJmdW5jdGlvbiI9PXR5cGVvZiBpO3l8fChpPVN0cmluZyhpKSk7dmFyIGI9bS5nbG9iYWw7aWYoYil7dmFyIHc9bS51bmljb2RlO20ubGFzdEluZGV4PTB9Zm9yKHZhciB4PVtdOzspe3ZhciBfPXUobSx2KTtpZihudWxsPT09XylicmVhaztpZih4LnB1c2goXyksIWIpYnJlYWs7IiI9PT1TdHJpbmcoX1swXSkmJihtLmxhc3RJbmRleD1sKHYsbyhtLmxhc3RJbmRleCksdykpfWZvcih2YXIgUyxDPSIiLGs9MCxUPTA7VDx4Lmxlbmd0aDtUKyspe189eFtUXTtmb3IodmFyIEE9U3RyaW5nKF9bMF0pLEQ9ZChoKGEoXy5pbmRleCksdi5sZW5ndGgpLDApLEU9W10sTT0xO008Xy5sZW5ndGg7TSsrKUUucHVzaCh2b2lkIDA9PT0oUz1fW01dKT9TOlN0cmluZyhTKSk7dmFyIE89Xy5ncm91cHM7aWYoeSl7dmFyIEk9W0FdLmNvbmNhdChFLEQsdik7dm9pZCAwIT09TyYmSS5wdXNoKE8pO3ZhciBQPVN0cmluZyhpLmFwcGx5KHZvaWQgMCxJKSl9ZWxzZSBQPWMoQSx2LEQsRSxPLGkpO0Q+PWsmJihDKz12LnNsaWNlKGssRCkrUCxrPUQrQS5sZW5ndGgpfXJldHVybiBDK3Yuc2xpY2Uoayl9XX0pKX0sZnVuY3Rpb24odCxlLG4pe3ZhciBpPW4oMTApLHI9TWF0aC5mbG9vcixvPSIiLnJlcGxhY2UsYT0vXCQoWyQmJ2BdfFxkXGQ/fDxbXj5dKj4pL2cscz0vXCQoWyQmJ2BdfFxkXGQ/KS9nO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbixsLGMsdSl7dmFyIGQ9bit0Lmxlbmd0aCxoPWwubGVuZ3RoLGY9cztyZXR1cm4gdm9pZCAwIT09YyYmKGM9aShjKSxmPWEpLG8uY2FsbCh1LGYsKGZ1bmN0aW9uKGksbyl7dmFyIGE7c3dpdGNoKG8uY2hhckF0KDApKXtjYXNlIiQiOnJldHVybiIkIjtjYXNlIiYiOnJldHVybiB0O2Nhc2UiYCI6cmV0dXJuIGUuc2xpY2UoMCxuKTtjYXNlIiciOnJldHVybiBlLnNsaWNlKGQpO2Nhc2UiPCI6YT1jW28uc2xpY2UoMSwtMSldO2JyZWFrO2RlZmF1bHQ6dmFyIHM9K287aWYoMD09PXMpcmV0dXJuIGk7aWYocz5oKXt2YXIgdT1yKHMvMTApO3JldHVybiAwPT09dT9pOnU8PWg/dm9pZCAwPT09bFt1LTFdP28uY2hhckF0KDEpOmxbdS0xXStvLmNoYXJBdCgxKTppfWE9bFtzLTFdfXJldHVybiB2b2lkIDA9PT1hPyIiOmF9KSl9fSxmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciBpPW4oNTgpLHI9bigxMjMpLG89big2KSxhPW4oMTYpLHM9bigyMiksbD1uKDU5KSxjPW4oNCksdT1uKDYwKSxkPW4oNDApLGg9bigwKSxmPVtdLnB1c2gscD1NYXRoLm1pbixnPSFoKChmdW5jdGlvbigpe3JldHVybiFSZWdFeHAoNDI5NDk2NzI5NSwieSIpfSkpO2koInNwbGl0IiwyLChmdW5jdGlvbih0LGUsbil7dmFyIGk7cmV0dXJuIGk9ImMiPT0iYWJiYyIuc3BsaXQoLyhiKSovKVsxXXx8NCE9InRlc3QiLnNwbGl0KC8oPzopLywtMSkubGVuZ3RofHwyIT0iYWIiLnNwbGl0KC8oPzphYikqLykubGVuZ3RofHw0IT0iLiIuc3BsaXQoLyguPykoLj8pLykubGVuZ3RofHwiLiIuc3BsaXQoLygpKCkvKS5sZW5ndGg+MXx8IiIuc3BsaXQoLy4/LykubGVuZ3RoP2Z1bmN0aW9uKHQsbil7dmFyIGk9U3RyaW5nKGEodGhpcykpLG89dm9pZCAwPT09bj80Mjk0OTY3Mjk1Om4+Pj4wO2lmKDA9PT1vKXJldHVybltdO2lmKHZvaWQgMD09PXQpcmV0dXJuW2ldO2lmKCFyKHQpKXJldHVybiBlLmNhbGwoaSx0LG8pO2Zvcih2YXIgcyxsLGMsdT1bXSxoPSh0Lmlnbm9yZUNhc2U/ImkiOiIiKSsodC5tdWx0aWxpbmU/Im0iOiIiKSsodC51bmljb2RlPyJ1IjoiIikrKHQuc3RpY2t5PyJ5IjoiIikscD0wLGc9bmV3IFJlZ0V4cCh0LnNvdXJjZSxoKyJnIik7KHM9ZC5jYWxsKGcsaSkpJiYhKChsPWcubGFzdEluZGV4KT5wJiYodS5wdXNoKGkuc2xpY2UocCxzLmluZGV4KSkscy5sZW5ndGg+MSYmcy5pbmRleDxpLmxlbmd0aCYmZi5hcHBseSh1LHMuc2xpY2UoMSkpLGM9c1swXS5sZW5ndGgscD1sLHUubGVuZ3RoPj1vKSk7KWcubGFzdEluZGV4PT09cy5pbmRleCYmZy5sYXN0SW5kZXgrKztyZXR1cm4gcD09PWkubGVuZ3RoPyFjJiZnLnRlc3QoIiIpfHx1LnB1c2goIiIpOnUucHVzaChpLnNsaWNlKHApKSx1Lmxlbmd0aD5vP3Uuc2xpY2UoMCxvKTp1fToiMCIuc3BsaXQodm9pZCAwLDApLmxlbmd0aD9mdW5jdGlvbih0LG4pe3JldHVybiB2b2lkIDA9PT10JiYwPT09bj9bXTplLmNhbGwodGhpcyx0LG4pfTplLFtmdW5jdGlvbihlLG4pe3ZhciByPWEodGhpcyksbz1udWxsPT1lP3ZvaWQgMDplW3RdO3JldHVybiB2b2lkIDAhPT1vP28uY2FsbChlLHIsbik6aS5jYWxsKFN0cmluZyhyKSxlLG4pfSxmdW5jdGlvbih0LHIpe3ZhciBhPW4oaSx0LHRoaXMscixpIT09ZSk7aWYoYS5kb25lKXJldHVybiBhLnZhbHVlO3ZhciBkPW8odCksaD1TdHJpbmcodGhpcyksZj1zKGQsUmVnRXhwKSxtPWQudW5pY29kZSx2PShkLmlnbm9yZUNhc2U/ImkiOiIiKSsoZC5tdWx0aWxpbmU/Im0iOiIiKSsoZC51bmljb2RlPyJ1IjoiIikrKGc/InkiOiJnIikseT1uZXcgZihnP2Q6Il4oPzoiK2Quc291cmNlKyIpIix2KSxiPXZvaWQgMD09PXI/NDI5NDk2NzI5NTpyPj4+MDtpZigwPT09YilyZXR1cm5bXTtpZigwPT09aC5sZW5ndGgpcmV0dXJuIG51bGw9PT11KHksaCk/W2hdOltdO2Zvcih2YXIgdz0wLHg9MCxfPVtdO3g8aC5sZW5ndGg7KXt5Lmxhc3RJbmRleD1nP3g6MDt2YXIgUyxDPXUoeSxnP2g6aC5zbGljZSh4KSk7aWYobnVsbD09PUN8fChTPXAoYyh5Lmxhc3RJbmRleCsoZz8wOngpKSxoLmxlbmd0aCkpPT09dyl4PWwoaCx4LG0pO2Vsc2V7aWYoXy5wdXNoKGguc2xpY2Uodyx4KSksXy5sZW5ndGg9PT1iKXJldHVybiBfO2Zvcih2YXIgaz0xO2s8PUMubGVuZ3RoLTE7aysrKWlmKF8ucHVzaChDW2tdKSxfLmxlbmd0aD09PWIpcmV0dXJuIF87eD13PVN9fXJldHVybiBfLnB1c2goaC5zbGljZSh3KSksX31dfSksIWcpfSxmdW5jdGlvbih0LGUsbil7dmFyIGk9big5KSxyPW4oMjMpLG89bigzKSgibWF0Y2giKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuIGkodCkmJih2b2lkIDAhPT0oZT10W29dKT8hIWU6IlJlZ0V4cCI9PXIodCkpfX0sZnVuY3Rpb24odCxlLG4pe3ZhciBpPW4oMTYpLHI9IlsiK24oODgpKyJdIixvPVJlZ0V4cCgiXiIrcityKyIqIiksYT1SZWdFeHAocityKyIqJCIpLHM9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBuPVN0cmluZyhpKGUpKTtyZXR1cm4gMSZ0JiYobj1uLnJlcGxhY2UobywiIikpLDImdCYmKG49bi5yZXBsYWNlKGEsIiIpKSxufX07dC5leHBvcnRzPXtzdGFydDpzKDEpLGVuZDpzKDIpLHRyaW06cygzKX19LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDApLHI9big4OCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBpKChmdW5jdGlvbigpe3JldHVybiEhclt0XSgpfHwi4oCLwoXhoI4iIT0i4oCLwoXhoI4iW3RdKCl8fHJbdF0ubmFtZSE9PXR9KSl9fSxmdW5jdGlvbih0LGUsbil7bigxMjcpKCJVaW50OCIsKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlLG4saSl7cmV0dXJuIHQodGhpcyxlLG4saSl9fSkpfSxmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciBpPW4oNSkscj1uKDIpLG89big4KSxhPW4oMTI4KSxzPW4oMSksbD1uKDU0KSxjPW4oMzkpLHU9bigyMCksZD1uKDExKSxoPW4oNCksZj1uKDgwKSxwPW4oODkpLGc9bigzMiksbT1uKDcpLHY9bigzMCkseT1uKDkpLGI9bigzOCksdz1uKDI5KSx4PW4oNDgpLmYsXz1uKDEzMSksUz1uKDEzKS5mb3JFYWNoLEM9big4Miksaz1uKDEyKSxUPW4oNDIpLEE9bigxNyksRD1uKDEzMiksRT1BLmdldCxNPUEuc2V0LE89ay5mLEk9VC5mLFA9TWF0aC5yb3VuZCxMPXIuUmFuZ2VFcnJvcixOPWwuQXJyYXlCdWZmZXIsRj1sLkRhdGFWaWV3LFI9cy5OQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTLGo9cy5UWVBFRF9BUlJBWV9UQUcsJD1zLlR5cGVkQXJyYXksej1zLlR5cGVkQXJyYXlQcm90b3R5cGUsSD1zLmFUeXBlZEFycmF5Q29uc3RydWN0b3IsQj1zLmlzVHlwZWRBcnJheSxxPWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPTAsaT1lLmxlbmd0aCxyPW5ldyhIKHQpKShpKTtpPm47KXJbbl09ZVtuKytdO3JldHVybiByfSxXPWZ1bmN0aW9uKHQsZSl7Tyh0LGUse2dldDpmdW5jdGlvbigpe3JldHVybiBFKHRoaXMpW2VdfX0pfSxVPWZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiB0IGluc3RhbmNlb2YgTnx8IkFycmF5QnVmZmVyIj09KGU9dih0KSl8fCJTaGFyZWRBcnJheUJ1ZmZlciI9PWV9LFY9ZnVuY3Rpb24odCxlKXtyZXR1cm4gQih0KSYmInN5bWJvbCIhPXR5cGVvZiBlJiZlIGluIHQmJlN0cmluZygrZSk9PVN0cmluZyhlKX0sWT1mdW5jdGlvbih0LGUpe3JldHVybiBWKHQsZT1nKGUsITApKT91KDIsdFtlXSk6SSh0LGUpfSxHPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4hKFYodCxlPWcoZSwhMCkpJiZ5KG4pJiZtKG4sInZhbHVlIikpfHxtKG4sImdldCIpfHxtKG4sInNldCIpfHxuLmNvbmZpZ3VyYWJsZXx8bShuLCJ3cml0YWJsZSIpJiYhbi53cml0YWJsZXx8bShuLCJlbnVtZXJhYmxlIikmJiFuLmVudW1lcmFibGU/Tyh0LGUsbik6KHRbZV09bi52YWx1ZSx0KX07bz8oUnx8KFQuZj1ZLGsuZj1HLFcoeiwiYnVmZmVyIiksVyh6LCJieXRlT2Zmc2V0IiksVyh6LCJieXRlTGVuZ3RoIiksVyh6LCJsZW5ndGgiKSksaSh7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOiFSfSx7Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOlksZGVmaW5lUHJvcGVydHk6R30pLHQuZXhwb3J0cz1mdW5jdGlvbih0LGUsbil7dmFyIG89dC5tYXRjaCgvXGQrJC8pWzBdLzgscz10KyhuPyJDbGFtcGVkIjoiIikrIkFycmF5IixsPSJnZXQiK3QsdT0ic2V0Iit0LGc9cltzXSxtPWcsdj1tJiZtLnByb3RvdHlwZSxrPXt9LFQ9ZnVuY3Rpb24odCxlKXtPKHQsZSx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7dmFyIG49RSh0KTtyZXR1cm4gbi52aWV3W2xdKGUqbytuLmJ5dGVPZmZzZXQsITApfSh0aGlzLGUpfSxzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHQsZSxpKXt2YXIgcj1FKHQpO24mJihpPShpPVAoaSkpPDA/MDppPjI1NT8yNTU6MjU1JmkpLHIudmlld1t1XShlKm8rci5ieXRlT2Zmc2V0LGksITApfSh0aGlzLGUsdCl9LGVudW1lcmFibGU6ITB9KX07Uj9hJiYobT1lKChmdW5jdGlvbih0LGUsbixpKXtyZXR1cm4gYyh0LG0scyksRCh5KGUpP1UoZSk/dm9pZCAwIT09aT9uZXcgZyhlLHAobixvKSxpKTp2b2lkIDAhPT1uP25ldyBnKGUscChuLG8pKTpuZXcgZyhlKTpCKGUpP3EobSxlKTpfLmNhbGwobSxlKTpuZXcgZyhmKGUpKSx0LG0pfSkpLHcmJncobSwkKSxTKHgoZyksKGZ1bmN0aW9uKHQpe3QgaW4gbXx8ZChtLHQsZ1t0XSl9KSksbS5wcm90b3R5cGU9dik6KG09ZSgoZnVuY3Rpb24odCxlLG4saSl7Yyh0LG0scyk7dmFyIHIsYSxsLHU9MCxkPTA7aWYoeShlKSl7aWYoIVUoZSkpcmV0dXJuIEIoZSk/cShtLGUpOl8uY2FsbChtLGUpO3I9ZSxkPXAobixvKTt2YXIgZz1lLmJ5dGVMZW5ndGg7aWYodm9pZCAwPT09aSl7aWYoZyVvKXRocm93IEwoIldyb25nIGxlbmd0aCIpO2lmKChhPWctZCk8MCl0aHJvdyBMKCJXcm9uZyBsZW5ndGgiKX1lbHNlIGlmKChhPWgoaSkqbykrZD5nKXRocm93IEwoIldyb25nIGxlbmd0aCIpO2w9YS9vfWVsc2UgbD1mKGUpLHI9bmV3IE4oYT1sKm8pO2ZvcihNKHQse2J1ZmZlcjpyLGJ5dGVPZmZzZXQ6ZCxieXRlTGVuZ3RoOmEsbGVuZ3RoOmwsdmlldzpuZXcgRihyKX0pO3U8bDspVCh0LHUrKyl9KSksdyYmdyhtLCQpLHY9bS5wcm90b3R5cGU9Yih6KSksdi5jb25zdHJ1Y3RvciE9PW0mJmQodiwiY29uc3RydWN0b3IiLG0pLGomJmQodixqLHMpLGtbc109bSxpKHtnbG9iYWw6ITAsZm9yY2VkOm0hPWcsc2hhbTohUn0sayksIkJZVEVTX1BFUl9FTEVNRU5UImluIG18fGQobSwiQllURVNfUEVSX0VMRU1FTlQiLG8pLCJCWVRFU19QRVJfRUxFTUVOVCJpbiB2fHxkKHYsIkJZVEVTX1BFUl9FTEVNRU5UIixvKSxDKHMpfSk6dC5leHBvcnRzPWZ1bmN0aW9uKCl7fX0sZnVuY3Rpb24odCxlLG4pe3ZhciBpPW4oMikscj1uKDApLG89bigxMjkpLGE9bigxKS5OQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTLHM9aS5BcnJheUJ1ZmZlcixsPWkuSW50OEFycmF5O3QuZXhwb3J0cz0hYXx8IXIoKGZ1bmN0aW9uKCl7bCgxKX0pKXx8IXIoKGZ1bmN0aW9uKCl7bmV3IGwoLTEpfSkpfHwhbygoZnVuY3Rpb24odCl7bmV3IGwsbmV3IGwobnVsbCksbmV3IGwoMS41KSxuZXcgbCh0KX0pLCEwKXx8cigoZnVuY3Rpb24oKXtyZXR1cm4gMSE9PW5ldyBsKG5ldyBzKDIpLDEsdm9pZCAwKS5sZW5ndGh9KSl9LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDMpKCJpdGVyYXRvciIpLHI9ITE7dHJ5e3ZhciBvPTAsYT17bmV4dDpmdW5jdGlvbigpe3JldHVybntkb25lOiEhbysrfX0scmV0dXJuOmZ1bmN0aW9uKCl7cj0hMH19O2FbaV09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sQXJyYXkuZnJvbShhLChmdW5jdGlvbigpe3Rocm93IDJ9KSl9Y2F0Y2godCl7fXQuZXhwb3J0cz1mdW5jdGlvbih0LGUpe2lmKCFlJiYhcilyZXR1cm4hMTt2YXIgbj0hMTt0cnl7dmFyIG89e307b1tpXT1mdW5jdGlvbigpe3JldHVybntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJue2RvbmU6bj0hMH19fX0sdChvKX1jYXRjaCh0KXt9cmV0dXJuIG59fSxmdW5jdGlvbih0LGUsbil7dmFyIGk9bigxNSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPWkodCk7aWYoZTwwKXRocm93IFJhbmdlRXJyb3IoIlRoZSBhcmd1bWVudCBjYW4ndCBiZSBsZXNzIHRoYW4gMCIpO3JldHVybiBlfX0sZnVuY3Rpb24odCxlLG4pe3ZhciBpPW4oMTApLHI9big0KSxvPW4oNDEpLGE9big5MCkscz1uKDM2KSxsPW4oMSkuYVR5cGVkQXJyYXlDb25zdHJ1Y3Rvcjt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGUsbixjLHUsZCxoLGY9aSh0KSxwPWFyZ3VtZW50cy5sZW5ndGgsZz1wPjE/YXJndW1lbnRzWzFdOnZvaWQgMCxtPXZvaWQgMCE9PWcsdj1vKGYpO2lmKG51bGwhPXYmJiFhKHYpKWZvcihoPShkPXYuY2FsbChmKSkubmV4dCxmPVtdOyEodT1oLmNhbGwoZCkpLmRvbmU7KWYucHVzaCh1LnZhbHVlKTtmb3IobSYmcD4yJiYoZz1zKGcsYXJndW1lbnRzWzJdLDIpKSxuPXIoZi5sZW5ndGgpLGM9bmV3KGwodGhpcykpKG4pLGU9MDtuPmU7ZSsrKWNbZV09bT9nKGZbZV0sZSk6ZltlXTtyZXR1cm4gY319LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDkpLHI9bigyOSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxuKXt2YXIgbyxhO3JldHVybiByJiYiZnVuY3Rpb24iPT10eXBlb2Yobz1lLmNvbnN0cnVjdG9yKSYmbyE9PW4mJmkoYT1vLnByb3RvdHlwZSkmJmEhPT1uLnByb3RvdHlwZSYmcih0LGEpLHR9fSxmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciBpPW4oMSkscj1uKDEzNCksbz1pLmFUeXBlZEFycmF5OygwLGkuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoImNvcHlXaXRoaW4iLChmdW5jdGlvbih0LGUpe3JldHVybiByLmNhbGwobyh0aGlzKSx0LGUsYXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDApfSkpfSxmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciBpPW4oMTApLHI9bigxOCksbz1uKDQpLGE9TWF0aC5taW47dC5leHBvcnRzPVtdLmNvcHlXaXRoaW58fGZ1bmN0aW9uKHQsZSl7dmFyIG49aSh0aGlzKSxzPW8obi5sZW5ndGgpLGw9cih0LHMpLGM9cihlLHMpLHU9YXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDAsZD1hKCh2b2lkIDA9PT11P3M6cih1LHMpKS1jLHMtbCksaD0xO2ZvcihjPGwmJmw8YytkJiYoaD0tMSxjKz1kLTEsbCs9ZC0xKTtkLS0gPjA7KWMgaW4gbj9uW2xdPW5bY106ZGVsZXRlIG5bbF0sbCs9aCxjKz1oO3JldHVybiBufX0sZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgaT1uKDEpLHI9bigxMykuZXZlcnksbz1pLmFUeXBlZEFycmF5OygwLGkuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoImV2ZXJ5IiwoZnVuY3Rpb24odCl7cmV0dXJuIHIobyh0aGlzKSx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX0pKX0sZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgaT1uKDEpLHI9big4MSksbz1pLmFUeXBlZEFycmF5OygwLGkuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoImZpbGwiLChmdW5jdGlvbih0KXtyZXR1cm4gci5hcHBseShvKHRoaXMpLGFyZ3VtZW50cyl9KSl9LGZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIGk9bigxKSxyPW4oMTMpLmZpbHRlcixvPW4oMjIpLGE9aS5hVHlwZWRBcnJheSxzPWkuYVR5cGVkQXJyYXlDb25zdHJ1Y3RvcjsoMCxpLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QpKCJmaWx0ZXIiLChmdW5jdGlvbih0KXtmb3IodmFyIGU9cihhKHRoaXMpLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApLG49byh0aGlzLHRoaXMuY29uc3RydWN0b3IpLGk9MCxsPWUubGVuZ3RoLGM9bmV3KHMobikpKGwpO2w+aTspY1tpXT1lW2krK107cmV0dXJuIGN9KSl9LGZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIGk9bigxKSxyPW4oMTMpLmZpbmQsbz1pLmFUeXBlZEFycmF5OygwLGkuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoImZpbmQiLChmdW5jdGlvbih0KXtyZXR1cm4gcihvKHRoaXMpLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfSkpfSxmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciBpPW4oMSkscj1uKDEzKS5maW5kSW5kZXgsbz1pLmFUeXBlZEFycmF5OygwLGkuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoImZpbmRJbmRleCIsKGZ1bmN0aW9uKHQpe3JldHVybiByKG8odGhpcyksdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9KSl9LGZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIGk9bigxKSxyPW4oMTMpLmZvckVhY2gsbz1pLmFUeXBlZEFycmF5OygwLGkuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoImZvckVhY2giLChmdW5jdGlvbih0KXtyKG8odGhpcyksdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9KSl9LGZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIGk9bigxKSxyPW4oMzQpLmluY2x1ZGVzLG89aS5hVHlwZWRBcnJheTsoMCxpLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QpKCJpbmNsdWRlcyIsKGZ1bmN0aW9uKHQpe3JldHVybiByKG8odGhpcyksdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9KSl9LGZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIGk9bigxKSxyPW4oMzQpLmluZGV4T2Ysbz1pLmFUeXBlZEFycmF5OygwLGkuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoImluZGV4T2YiLChmdW5jdGlvbih0KXtyZXR1cm4gcihvKHRoaXMpLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfSkpfSxmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciBpPW4oMikscj1uKDEpLG89bigzNyksYT1uKDMpKCJpdGVyYXRvciIpLHM9aS5VaW50OEFycmF5LGw9by52YWx1ZXMsYz1vLmtleXMsdT1vLmVudHJpZXMsZD1yLmFUeXBlZEFycmF5LGg9ci5leHBvcnRUeXBlZEFycmF5TWV0aG9kLGY9cyYmcy5wcm90b3R5cGVbYV0scD0hIWYmJigidmFsdWVzIj09Zi5uYW1lfHxudWxsPT1mLm5hbWUpLGc9ZnVuY3Rpb24oKXtyZXR1cm4gbC5jYWxsKGQodGhpcykpfTtoKCJlbnRyaWVzIiwoZnVuY3Rpb24oKXtyZXR1cm4gdS5jYWxsKGQodGhpcykpfSkpLGgoImtleXMiLChmdW5jdGlvbigpe3JldHVybiBjLmNhbGwoZCh0aGlzKSl9KSksaCgidmFsdWVzIixnLCFwKSxoKGEsZywhcCl9LGZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIGk9bigxKSxyPWkuYVR5cGVkQXJyYXksbz1pLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QsYT1bXS5qb2luO28oImpvaW4iLChmdW5jdGlvbih0KXtyZXR1cm4gYS5hcHBseShyKHRoaXMpLGFyZ3VtZW50cyl9KSl9LGZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIGk9bigxKSxyPW4oMTQ2KSxvPWkuYVR5cGVkQXJyYXk7KDAsaS5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgibGFzdEluZGV4T2YiLChmdW5jdGlvbih0KXtyZXR1cm4gci5hcHBseShvKHRoaXMpLGFyZ3VtZW50cyl9KSl9LGZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIGk9bigyMSkscj1uKDE1KSxvPW4oNCksYT1uKDUzKSxzPW4oMTkpLGw9TWF0aC5taW4sYz1bXS5sYXN0SW5kZXhPZix1PSEhYyYmMS9bMV0ubGFzdEluZGV4T2YoMSwtMCk8MCxkPWEoImxhc3RJbmRleE9mIiksaD1zKCJpbmRleE9mIix7QUNDRVNTT1JTOiEwLDE6MH0pLGY9dXx8IWR8fCFoO3QuZXhwb3J0cz1mP2Z1bmN0aW9uKHQpe2lmKHUpcmV0dXJuIGMuYXBwbHkodGhpcyxhcmd1bWVudHMpfHwwO3ZhciBlPWkodGhpcyksbj1vKGUubGVuZ3RoKSxhPW4tMTtmb3IoYXJndW1lbnRzLmxlbmd0aD4xJiYoYT1sKGEscihhcmd1bWVudHNbMV0pKSksYTwwJiYoYT1uK2EpO2E+PTA7YS0tKWlmKGEgaW4gZSYmZVthXT09PXQpcmV0dXJuIGF8fDA7cmV0dXJuLTF9OmN9LGZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIGk9bigxKSxyPW4oMTMpLm1hcCxvPW4oMjIpLGE9aS5hVHlwZWRBcnJheSxzPWkuYVR5cGVkQXJyYXlDb25zdHJ1Y3RvcjsoMCxpLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QpKCJtYXAiLChmdW5jdGlvbih0KXtyZXR1cm4gcihhKHRoaXMpLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyhzKG8odCx0LmNvbnN0cnVjdG9yKSkpKGUpfSkpfSkpfSxmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciBpPW4oMSkscj1uKDkxKS5sZWZ0LG89aS5hVHlwZWRBcnJheTsoMCxpLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QpKCJyZWR1Y2UiLChmdW5jdGlvbih0KXtyZXR1cm4gcihvKHRoaXMpLHQsYXJndW1lbnRzLmxlbmd0aCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9KSl9LGZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIGk9bigxKSxyPW4oOTEpLnJpZ2h0LG89aS5hVHlwZWRBcnJheTsoMCxpLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QpKCJyZWR1Y2VSaWdodCIsKGZ1bmN0aW9uKHQpe3JldHVybiByKG8odGhpcyksdCxhcmd1bWVudHMubGVuZ3RoLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX0pKX0sZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgaT1uKDEpLHI9aS5hVHlwZWRBcnJheSxvPWkuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCxhPU1hdGguZmxvb3I7bygicmV2ZXJzZSIsKGZ1bmN0aW9uKCl7Zm9yKHZhciB0LGU9cih0aGlzKS5sZW5ndGgsbj1hKGUvMiksaT0wO2k8bjspdD10aGlzW2ldLHRoaXNbaSsrXT10aGlzWy0tZV0sdGhpc1tlXT10O3JldHVybiB0aGlzfSkpfSxmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciBpPW4oMSkscj1uKDQpLG89big4OSksYT1uKDEwKSxzPW4oMCksbD1pLmFUeXBlZEFycmF5OygwLGkuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoInNldCIsKGZ1bmN0aW9uKHQpe2wodGhpcyk7dmFyIGU9byhhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCwxKSxuPXRoaXMubGVuZ3RoLGk9YSh0KSxzPXIoaS5sZW5ndGgpLGM9MDtpZihzK2U+bil0aHJvdyBSYW5nZUVycm9yKCJXcm9uZyBsZW5ndGgiKTtmb3IoO2M8czspdGhpc1tlK2NdPWlbYysrXX0pLHMoKGZ1bmN0aW9uKCl7bmV3IEludDhBcnJheSgxKS5zZXQoe30pfSkpKX0sZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgaT1uKDEpLHI9bigyMiksbz1uKDApLGE9aS5hVHlwZWRBcnJheSxzPWkuYVR5cGVkQXJyYXlDb25zdHJ1Y3RvcixsPWkuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCxjPVtdLnNsaWNlO2woInNsaWNlIiwoZnVuY3Rpb24odCxlKXtmb3IodmFyIG49Yy5jYWxsKGEodGhpcyksdCxlKSxpPXIodGhpcyx0aGlzLmNvbnN0cnVjdG9yKSxvPTAsbD1uLmxlbmd0aCx1PW5ldyhzKGkpKShsKTtsPm87KXVbb109bltvKytdO3JldHVybiB1fSksbygoZnVuY3Rpb24oKXtuZXcgSW50OEFycmF5KDEpLnNsaWNlKCl9KSkpfSxmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciBpPW4oMSkscj1uKDEzKS5zb21lLG89aS5hVHlwZWRBcnJheTsoMCxpLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QpKCJzb21lIiwoZnVuY3Rpb24odCl7cmV0dXJuIHIobyh0aGlzKSx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX0pKX0sZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgaT1uKDEpLHI9aS5hVHlwZWRBcnJheSxvPWkuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCxhPVtdLnNvcnQ7bygic29ydCIsKGZ1bmN0aW9uKHQpe3JldHVybiBhLmNhbGwocih0aGlzKSx0KX0pKX0sZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgaT1uKDEpLHI9big0KSxvPW4oMTgpLGE9bigyMikscz1pLmFUeXBlZEFycmF5OygwLGkuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoInN1YmFycmF5IiwoZnVuY3Rpb24odCxlKXt2YXIgbj1zKHRoaXMpLGk9bi5sZW5ndGgsbD1vKHQsaSk7cmV0dXJuIG5ldyhhKG4sbi5jb25zdHJ1Y3RvcikpKG4uYnVmZmVyLG4uYnl0ZU9mZnNldCtsKm4uQllURVNfUEVSX0VMRU1FTlQscigodm9pZCAwPT09ZT9pOm8oZSxpKSktbCkpfSkpfSxmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciBpPW4oMikscj1uKDEpLG89bigwKSxhPWkuSW50OEFycmF5LHM9ci5hVHlwZWRBcnJheSxsPXIuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCxjPVtdLnRvTG9jYWxlU3RyaW5nLHU9W10uc2xpY2UsZD0hIWEmJm8oKGZ1bmN0aW9uKCl7Yy5jYWxsKG5ldyBhKDEpKX0pKTtsKCJ0b0xvY2FsZVN0cmluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuIGMuYXBwbHkoZD91LmNhbGwocyh0aGlzKSk6cyh0aGlzKSxhcmd1bWVudHMpfSksbygoZnVuY3Rpb24oKXtyZXR1cm5bMSwyXS50b0xvY2FsZVN0cmluZygpIT1uZXcgYShbMSwyXSkudG9Mb2NhbGVTdHJpbmcoKX0pKXx8IW8oKGZ1bmN0aW9uKCl7YS5wcm90b3R5cGUudG9Mb2NhbGVTdHJpbmcuY2FsbChbMSwyXSl9KSkpfSxmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciBpPW4oMSkuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCxyPW4oMCksbz1uKDIpLlVpbnQ4QXJyYXksYT1vJiZvLnByb3RvdHlwZXx8e30scz1bXS50b1N0cmluZyxsPVtdLmpvaW47cigoZnVuY3Rpb24oKXtzLmNhbGwoe30pfSkpJiYocz1mdW5jdGlvbigpe3JldHVybiBsLmNhbGwodGhpcyl9KTt2YXIgYz1hLnRvU3RyaW5nIT1zO2koInRvU3RyaW5nIixzLGMpfSxmdW5jdGlvbih0LGUsbil7dmFyIGk9bigyKSxyPW4oOTIpLG89big3MCksYT1uKDExKTtmb3IodmFyIHMgaW4gcil7dmFyIGw9aVtzXSxjPWwmJmwucHJvdG90eXBlO2lmKGMmJmMuZm9yRWFjaCE9PW8pdHJ5e2EoYywiZm9yRWFjaCIsbyl9Y2F0Y2godCl7Yy5mb3JFYWNoPW99fX0sZnVuY3Rpb24odCxlLG4pe3ZhciBpPW4oMikscj1uKDkyKSxvPW4oMzcpLGE9bigxMSkscz1uKDMpLGw9cygiaXRlcmF0b3IiKSxjPXMoInRvU3RyaW5nVGFnIiksdT1vLnZhbHVlcztmb3IodmFyIGQgaW4gcil7dmFyIGg9aVtkXSxmPWgmJmgucHJvdG90eXBlO2lmKGYpe2lmKGZbbF0hPT11KXRyeXthKGYsbCx1KX1jYXRjaCh0KXtmW2xdPXV9aWYoZltjXXx8YShmLGMsZCkscltkXSlmb3IodmFyIHAgaW4gbylpZihmW3BdIT09b1twXSl0cnl7YShmLHAsb1twXSl9Y2F0Y2godCl7ZltwXT1vW3BdfX19fSxmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO24oODUpO3ZhciBpLHI9big1KSxvPW4oOCksYT1uKDkzKSxzPW4oMiksbD1uKDcxKSxjPW4oMTQpLHU9bigzOSksZD1uKDcpLGg9bigxNjEpLGY9bigxNjIpLHA9big1NykuY29kZUF0LGc9bigxNjUpLG09bigyOCksdj1uKDE2NikseT1uKDE3KSxiPXMuVVJMLHc9di5VUkxTZWFyY2hQYXJhbXMseD12LmdldFN0YXRlLF89eS5zZXQsUz15LmdldHRlckZvcigiVVJMIiksQz1NYXRoLmZsb29yLGs9TWF0aC5wb3csVD0vW0EtWmEtel0vLEE9L1tcZCstLkEtWmEtel0vLEQ9L1xkLyxFPS9eKDB4fDBYKS8sTT0vXlswLTddKyQvLE89L15cZCskLyxJPS9eW1xkQS1GYS1mXSskLyxQPS9bXHUwMDAwXHUwMDA5XHUwMDBBXHUwMDBEICMlLzo/QFtcXF1dLyxMPS9bXHUwMDAwXHUwMDA5XHUwMDBBXHUwMDBEICMvOj9AW1xcXV0vLE49L15bXHUwMDAwLVx1MDAxRiBdK3xbXHUwMDAwLVx1MDAxRiBdKyQvZyxGPS9bXHUwMDA5XHUwMDBBXHUwMDBEXS9nLFI9ZnVuY3Rpb24odCxlKXt2YXIgbixpLHI7aWYoIlsiPT1lLmNoYXJBdCgwKSl7aWYoIl0iIT1lLmNoYXJBdChlLmxlbmd0aC0xKSlyZXR1cm4iSW52YWxpZCBob3N0IjtpZighKG49JChlLnNsaWNlKDEsLTEpKSkpcmV0dXJuIkludmFsaWQgaG9zdCI7dC5ob3N0PW59ZWxzZSBpZihZKHQpKXtpZihlPWcoZSksUC50ZXN0KGUpKXJldHVybiJJbnZhbGlkIGhvc3QiO2lmKG51bGw9PT0obj1qKGUpKSlyZXR1cm4iSW52YWxpZCBob3N0Ijt0Lmhvc3Q9bn1lbHNle2lmKEwudGVzdChlKSlyZXR1cm4iSW52YWxpZCBob3N0Ijtmb3Iobj0iIixpPWYoZSkscj0wO3I8aS5sZW5ndGg7cisrKW4rPVUoaVtyXSxIKTt0Lmhvc3Q9bn19LGo9ZnVuY3Rpb24odCl7dmFyIGUsbixpLHIsbyxhLHMsbD10LnNwbGl0KCIuIik7aWYobC5sZW5ndGgmJiIiPT1sW2wubGVuZ3RoLTFdJiZsLnBvcCgpLChlPWwubGVuZ3RoKT40KXJldHVybiB0O2ZvcihuPVtdLGk9MDtpPGU7aSsrKXtpZigiIj09KHI9bFtpXSkpcmV0dXJuIHQ7aWYobz0xMCxyLmxlbmd0aD4xJiYiMCI9PXIuY2hhckF0KDApJiYobz1FLnRlc3Qocik/MTY6OCxyPXIuc2xpY2UoOD09bz8xOjIpKSwiIj09PXIpYT0wO2Vsc2V7aWYoISgxMD09bz9POjg9PW8/TTpJKS50ZXN0KHIpKXJldHVybiB0O2E9cGFyc2VJbnQocixvKX1uLnB1c2goYSl9Zm9yKGk9MDtpPGU7aSsrKWlmKGE9bltpXSxpPT1lLTEpe2lmKGE+PWsoMjU2LDUtZSkpcmV0dXJuIG51bGx9ZWxzZSBpZihhPjI1NSlyZXR1cm4gbnVsbDtmb3Iocz1uLnBvcCgpLGk9MDtpPG4ubGVuZ3RoO2krKylzKz1uW2ldKmsoMjU2LDMtaSk7cmV0dXJuIHN9LCQ9ZnVuY3Rpb24odCl7dmFyIGUsbixpLHIsbyxhLHMsbD1bMCwwLDAsMCwwLDAsMCwwXSxjPTAsdT1udWxsLGQ9MCxoPWZ1bmN0aW9uKCl7cmV0dXJuIHQuY2hhckF0KGQpfTtpZigiOiI9PWgoKSl7aWYoIjoiIT10LmNoYXJBdCgxKSlyZXR1cm47ZCs9Mix1PSsrY31mb3IoO2goKTspe2lmKDg9PWMpcmV0dXJuO2lmKCI6IiE9aCgpKXtmb3IoZT1uPTA7bjw0JiZJLnRlc3QoaCgpKTspZT0xNiplK3BhcnNlSW50KGgoKSwxNiksZCsrLG4rKztpZigiLiI9PWgoKSl7aWYoMD09bilyZXR1cm47aWYoZC09bixjPjYpcmV0dXJuO2ZvcihpPTA7aCgpOyl7aWYocj1udWxsLGk+MCl7aWYoISgiLiI9PWgoKSYmaTw0KSlyZXR1cm47ZCsrfWlmKCFELnRlc3QoaCgpKSlyZXR1cm47Zm9yKDtELnRlc3QoaCgpKTspe2lmKG89cGFyc2VJbnQoaCgpLDEwKSxudWxsPT09cilyPW87ZWxzZXtpZigwPT1yKXJldHVybjtyPTEwKnIrb31pZihyPjI1NSlyZXR1cm47ZCsrfWxbY109MjU2KmxbY10rciwyIT0rK2kmJjQhPWl8fGMrK31pZig0IT1pKXJldHVybjticmVha31pZigiOiI9PWgoKSl7aWYoZCsrLCFoKCkpcmV0dXJufWVsc2UgaWYoaCgpKXJldHVybjtsW2MrK109ZX1lbHNle2lmKG51bGwhPT11KXJldHVybjtkKyssdT0rK2N9fWlmKG51bGwhPT11KWZvcihhPWMtdSxjPTc7MCE9YyYmYT4wOylzPWxbY10sbFtjLS1dPWxbdSthLTFdLGxbdSstLWFdPXM7ZWxzZSBpZig4IT1jKXJldHVybjtyZXR1cm4gbH0sej1mdW5jdGlvbih0KXt2YXIgZSxuLGkscjtpZigibnVtYmVyIj09dHlwZW9mIHQpe2ZvcihlPVtdLG49MDtuPDQ7bisrKWUudW5zaGlmdCh0JTI1NiksdD1DKHQvMjU2KTtyZXR1cm4gZS5qb2luKCIuIil9aWYoIm9iamVjdCI9PXR5cGVvZiB0KXtmb3IoZT0iIixpPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1udWxsLG49MSxpPW51bGwscj0wLG89MDtvPDg7bysrKTAhPT10W29dPyhyPm4mJihlPWksbj1yKSxpPW51bGwscj0wKToobnVsbD09PWkmJihpPW8pLCsrcik7cmV0dXJuIHI+biYmKGU9aSxuPXIpLGV9KHQpLG49MDtuPDg7bisrKXImJjA9PT10W25dfHwociYmKHI9ITEpLGk9PT1uPyhlKz1uPyI6IjoiOjoiLHI9ITApOihlKz10W25dLnRvU3RyaW5nKDE2KSxuPDcmJihlKz0iOiIpKSk7cmV0dXJuIlsiK2UrIl0ifXJldHVybiB0fSxIPXt9LEI9aCh7fSxILHsiICI6MSwnIic6MSwiPCI6MSwiPiI6MSwiYCI6MX0pLHE9aCh7fSxCLHsiIyI6MSwiPyI6MSwieyI6MSwifSI6MX0pLFc9aCh7fSxxLHsiLyI6MSwiOiI6MSwiOyI6MSwiPSI6MSwiQCI6MSwiWyI6MSwiXFwiOjEsIl0iOjEsIl4iOjEsInwiOjF9KSxVPWZ1bmN0aW9uKHQsZSl7dmFyIG49cCh0LDApO3JldHVybiBuPjMyJiZuPDEyNyYmIWQoZSx0KT90OmVuY29kZVVSSUNvbXBvbmVudCh0KX0sVj17ZnRwOjIxLGZpbGU6bnVsbCxodHRwOjgwLGh0dHBzOjQ0Myx3czo4MCx3c3M6NDQzfSxZPWZ1bmN0aW9uKHQpe3JldHVybiBkKFYsdC5zY2hlbWUpfSxHPWZ1bmN0aW9uKHQpe3JldHVybiIiIT10LnVzZXJuYW1lfHwiIiE9dC5wYXNzd29yZH0sWD1mdW5jdGlvbih0KXtyZXR1cm4hdC5ob3N0fHx0LmNhbm5vdEJlQUJhc2VVUkx8fCJmaWxlIj09dC5zY2hlbWV9LFE9ZnVuY3Rpb24odCxlKXt2YXIgbjtyZXR1cm4gMj09dC5sZW5ndGgmJlQudGVzdCh0LmNoYXJBdCgwKSkmJigiOiI9PShuPXQuY2hhckF0KDEpKXx8IWUmJiJ8Ij09bil9LEs9ZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuIHQubGVuZ3RoPjEmJlEodC5zbGljZSgwLDIpKSYmKDI9PXQubGVuZ3RofHwiLyI9PT0oZT10LmNoYXJBdCgyKSl8fCJcXCI9PT1lfHwiPyI9PT1lfHwiIyI9PT1lKX0sSj1mdW5jdGlvbih0KXt2YXIgZT10LnBhdGgsbj1lLmxlbmd0aDshbnx8ImZpbGUiPT10LnNjaGVtZSYmMT09biYmUShlWzBdLCEwKXx8ZS5wb3AoKX0sWj1mdW5jdGlvbih0KXtyZXR1cm4iLiI9PT10fHwiJTJlIj09PXQudG9Mb3dlckNhc2UoKX0sdHQ9e30sZXQ9e30sbnQ9e30saXQ9e30scnQ9e30sb3Q9e30sYXQ9e30sc3Q9e30sbHQ9e30sY3Q9e30sdXQ9e30sZHQ9e30saHQ9e30sZnQ9e30scHQ9e30sZ3Q9e30sbXQ9e30sdnQ9e30seXQ9e30sYnQ9e30sd3Q9e30seHQ9ZnVuY3Rpb24odCxlLG4scil7dmFyIG8sYSxzLGwsYyx1PW58fHR0LGg9MCxwPSIiLGc9ITEsbT0hMSx2PSExO2ZvcihufHwodC5zY2hlbWU9IiIsdC51c2VybmFtZT0iIix0LnBhc3N3b3JkPSIiLHQuaG9zdD1udWxsLHQucG9ydD1udWxsLHQucGF0aD1bXSx0LnF1ZXJ5PW51bGwsdC5mcmFnbWVudD1udWxsLHQuY2Fubm90QmVBQmFzZVVSTD0hMSxlPWUucmVwbGFjZShOLCIiKSksZT1lLnJlcGxhY2UoRiwiIiksbz1mKGUpO2g8PW8ubGVuZ3RoOyl7c3dpdGNoKGE9b1toXSx1KXtjYXNlIHR0OmlmKCFhfHwhVC50ZXN0KGEpKXtpZihuKXJldHVybiJJbnZhbGlkIHNjaGVtZSI7dT1udDtjb250aW51ZX1wKz1hLnRvTG93ZXJDYXNlKCksdT1ldDticmVhaztjYXNlIGV0OmlmKGEmJihBLnRlc3QoYSl8fCIrIj09YXx8Ii0iPT1hfHwiLiI9PWEpKXArPWEudG9Mb3dlckNhc2UoKTtlbHNle2lmKCI6IiE9YSl7aWYobilyZXR1cm4iSW52YWxpZCBzY2hlbWUiO3A9IiIsdT1udCxoPTA7Y29udGludWV9aWYobiYmKFkodCkhPWQoVixwKXx8ImZpbGUiPT1wJiYoRyh0KXx8bnVsbCE9PXQucG9ydCl8fCJmaWxlIj09dC5zY2hlbWUmJiF0Lmhvc3QpKXJldHVybjtpZih0LnNjaGVtZT1wLG4pcmV0dXJuIHZvaWQoWSh0KSYmVlt0LnNjaGVtZV09PXQucG9ydCYmKHQucG9ydD1udWxsKSk7cD0iIiwiZmlsZSI9PXQuc2NoZW1lP3U9ZnQ6WSh0KSYmciYmci5zY2hlbWU9PXQuc2NoZW1lP3U9aXQ6WSh0KT91PXN0OiIvIj09b1toKzFdPyh1PXJ0LGgrKyk6KHQuY2Fubm90QmVBQmFzZVVSTD0hMCx0LnBhdGgucHVzaCgiIiksdT15dCl9YnJlYWs7Y2FzZSBudDppZighcnx8ci5jYW5ub3RCZUFCYXNlVVJMJiYiIyIhPWEpcmV0dXJuIkludmFsaWQgc2NoZW1lIjtpZihyLmNhbm5vdEJlQUJhc2VVUkwmJiIjIj09YSl7dC5zY2hlbWU9ci5zY2hlbWUsdC5wYXRoPXIucGF0aC5zbGljZSgpLHQucXVlcnk9ci5xdWVyeSx0LmZyYWdtZW50PSIiLHQuY2Fubm90QmVBQmFzZVVSTD0hMCx1PXd0O2JyZWFrfXU9ImZpbGUiPT1yLnNjaGVtZT9mdDpvdDtjb250aW51ZTtjYXNlIGl0OmlmKCIvIiE9YXx8Ii8iIT1vW2grMV0pe3U9b3Q7Y29udGludWV9dT1sdCxoKys7YnJlYWs7Y2FzZSBydDppZigiLyI9PWEpe3U9Y3Q7YnJlYWt9dT12dDtjb250aW51ZTtjYXNlIG90OmlmKHQuc2NoZW1lPXIuc2NoZW1lLGE9PWkpdC51c2VybmFtZT1yLnVzZXJuYW1lLHQucGFzc3dvcmQ9ci5wYXNzd29yZCx0Lmhvc3Q9ci5ob3N0LHQucG9ydD1yLnBvcnQsdC5wYXRoPXIucGF0aC5zbGljZSgpLHQucXVlcnk9ci5xdWVyeTtlbHNlIGlmKCIvIj09YXx8IlxcIj09YSYmWSh0KSl1PWF0O2Vsc2UgaWYoIj8iPT1hKXQudXNlcm5hbWU9ci51c2VybmFtZSx0LnBhc3N3b3JkPXIucGFzc3dvcmQsdC5ob3N0PXIuaG9zdCx0LnBvcnQ9ci5wb3J0LHQucGF0aD1yLnBhdGguc2xpY2UoKSx0LnF1ZXJ5PSIiLHU9YnQ7ZWxzZXtpZigiIyIhPWEpe3QudXNlcm5hbWU9ci51c2VybmFtZSx0LnBhc3N3b3JkPXIucGFzc3dvcmQsdC5ob3N0PXIuaG9zdCx0LnBvcnQ9ci5wb3J0LHQucGF0aD1yLnBhdGguc2xpY2UoKSx0LnBhdGgucG9wKCksdT12dDtjb250aW51ZX10LnVzZXJuYW1lPXIudXNlcm5hbWUsdC5wYXNzd29yZD1yLnBhc3N3b3JkLHQuaG9zdD1yLmhvc3QsdC5wb3J0PXIucG9ydCx0LnBhdGg9ci5wYXRoLnNsaWNlKCksdC5xdWVyeT1yLnF1ZXJ5LHQuZnJhZ21lbnQ9IiIsdT13dH1icmVhaztjYXNlIGF0OmlmKCFZKHQpfHwiLyIhPWEmJiJcXCIhPWEpe2lmKCIvIiE9YSl7dC51c2VybmFtZT1yLnVzZXJuYW1lLHQucGFzc3dvcmQ9ci5wYXNzd29yZCx0Lmhvc3Q9ci5ob3N0LHQucG9ydD1yLnBvcnQsdT12dDtjb250aW51ZX11PWN0fWVsc2UgdT1sdDticmVhaztjYXNlIHN0OmlmKHU9bHQsIi8iIT1hfHwiLyIhPXAuY2hhckF0KGgrMSkpY29udGludWU7aCsrO2JyZWFrO2Nhc2UgbHQ6aWYoIi8iIT1hJiYiXFwiIT1hKXt1PWN0O2NvbnRpbnVlfWJyZWFrO2Nhc2UgY3Q6aWYoIkAiPT1hKXtnJiYocD0iJTQwIitwKSxnPSEwLHM9ZihwKTtmb3IodmFyIHk9MDt5PHMubGVuZ3RoO3krKyl7dmFyIGI9c1t5XTtpZigiOiIhPWJ8fHYpe3ZhciB3PVUoYixXKTt2P3QucGFzc3dvcmQrPXc6dC51c2VybmFtZSs9d31lbHNlIHY9ITB9cD0iIn1lbHNlIGlmKGE9PWl8fCIvIj09YXx8Ij8iPT1hfHwiIyI9PWF8fCJcXCI9PWEmJlkodCkpe2lmKGcmJiIiPT1wKXJldHVybiJJbnZhbGlkIGF1dGhvcml0eSI7aC09ZihwKS5sZW5ndGgrMSxwPSIiLHU9dXR9ZWxzZSBwKz1hO2JyZWFrO2Nhc2UgdXQ6Y2FzZSBkdDppZihuJiYiZmlsZSI9PXQuc2NoZW1lKXt1PWd0O2NvbnRpbnVlfWlmKCI6IiE9YXx8bSl7aWYoYT09aXx8Ii8iPT1hfHwiPyI9PWF8fCIjIj09YXx8IlxcIj09YSYmWSh0KSl7aWYoWSh0KSYmIiI9PXApcmV0dXJuIkludmFsaWQgaG9zdCI7aWYobiYmIiI9PXAmJihHKHQpfHxudWxsIT09dC5wb3J0KSlyZXR1cm47aWYobD1SKHQscCkpcmV0dXJuIGw7aWYocD0iIix1PW10LG4pcmV0dXJuO2NvbnRpbnVlfSJbIj09YT9tPSEwOiJdIj09YSYmKG09ITEpLHArPWF9ZWxzZXtpZigiIj09cClyZXR1cm4iSW52YWxpZCBob3N0IjtpZihsPVIodCxwKSlyZXR1cm4gbDtpZihwPSIiLHU9aHQsbj09ZHQpcmV0dXJufWJyZWFrO2Nhc2UgaHQ6aWYoIUQudGVzdChhKSl7aWYoYT09aXx8Ii8iPT1hfHwiPyI9PWF8fCIjIj09YXx8IlxcIj09YSYmWSh0KXx8bil7aWYoIiIhPXApe3ZhciB4PXBhcnNlSW50KHAsMTApO2lmKHg+NjU1MzUpcmV0dXJuIkludmFsaWQgcG9ydCI7dC5wb3J0PVkodCkmJng9PT1WW3Quc2NoZW1lXT9udWxsOngscD0iIn1pZihuKXJldHVybjt1PW10O2NvbnRpbnVlfXJldHVybiJJbnZhbGlkIHBvcnQifXArPWE7YnJlYWs7Y2FzZSBmdDppZih0LnNjaGVtZT0iZmlsZSIsIi8iPT1hfHwiXFwiPT1hKXU9cHQ7ZWxzZXtpZighcnx8ImZpbGUiIT1yLnNjaGVtZSl7dT12dDtjb250aW51ZX1pZihhPT1pKXQuaG9zdD1yLmhvc3QsdC5wYXRoPXIucGF0aC5zbGljZSgpLHQucXVlcnk9ci5xdWVyeTtlbHNlIGlmKCI/Ij09YSl0Lmhvc3Q9ci5ob3N0LHQucGF0aD1yLnBhdGguc2xpY2UoKSx0LnF1ZXJ5PSIiLHU9YnQ7ZWxzZXtpZigiIyIhPWEpe0soby5zbGljZShoKS5qb2luKCIiKSl8fCh0Lmhvc3Q9ci5ob3N0LHQucGF0aD1yLnBhdGguc2xpY2UoKSxKKHQpKSx1PXZ0O2NvbnRpbnVlfXQuaG9zdD1yLmhvc3QsdC5wYXRoPXIucGF0aC5zbGljZSgpLHQucXVlcnk9ci5xdWVyeSx0LmZyYWdtZW50PSIiLHU9d3R9fWJyZWFrO2Nhc2UgcHQ6aWYoIi8iPT1hfHwiXFwiPT1hKXt1PWd0O2JyZWFrfXImJiJmaWxlIj09ci5zY2hlbWUmJiFLKG8uc2xpY2UoaCkuam9pbigiIikpJiYoUShyLnBhdGhbMF0sITApP3QucGF0aC5wdXNoKHIucGF0aFswXSk6dC5ob3N0PXIuaG9zdCksdT12dDtjb250aW51ZTtjYXNlIGd0OmlmKGE9PWl8fCIvIj09YXx8IlxcIj09YXx8Ij8iPT1hfHwiIyI9PWEpe2lmKCFuJiZRKHApKXU9dnQ7ZWxzZSBpZigiIj09cCl7aWYodC5ob3N0PSIiLG4pcmV0dXJuO3U9bXR9ZWxzZXtpZihsPVIodCxwKSlyZXR1cm4gbDtpZigibG9jYWxob3N0Ij09dC5ob3N0JiYodC5ob3N0PSIiKSxuKXJldHVybjtwPSIiLHU9bXR9Y29udGludWV9cCs9YTticmVhaztjYXNlIG10OmlmKFkodCkpe2lmKHU9dnQsIi8iIT1hJiYiXFwiIT1hKWNvbnRpbnVlfWVsc2UgaWYobnx8Ij8iIT1hKWlmKG58fCIjIiE9YSl7aWYoYSE9aSYmKHU9dnQsIi8iIT1hKSljb250aW51ZX1lbHNlIHQuZnJhZ21lbnQ9IiIsdT13dDtlbHNlIHQucXVlcnk9IiIsdT1idDticmVhaztjYXNlIHZ0OmlmKGE9PWl8fCIvIj09YXx8IlxcIj09YSYmWSh0KXx8IW4mJigiPyI9PWF8fCIjIj09YSkpe2lmKCIuLiI9PT0oYz0oYz1wKS50b0xvd2VyQ2FzZSgpKXx8IiUyZS4iPT09Y3x8Ii4lMmUiPT09Y3x8IiUyZSUyZSI9PT1jPyhKKHQpLCIvIj09YXx8IlxcIj09YSYmWSh0KXx8dC5wYXRoLnB1c2goIiIpKTpaKHApPyIvIj09YXx8IlxcIj09YSYmWSh0KXx8dC5wYXRoLnB1c2goIiIpOigiZmlsZSI9PXQuc2NoZW1lJiYhdC5wYXRoLmxlbmd0aCYmUShwKSYmKHQuaG9zdCYmKHQuaG9zdD0iIikscD1wLmNoYXJBdCgwKSsiOiIpLHQucGF0aC5wdXNoKHApKSxwPSIiLCJmaWxlIj09dC5zY2hlbWUmJihhPT1pfHwiPyI9PWF8fCIjIj09YSkpZm9yKDt0LnBhdGgubGVuZ3RoPjEmJiIiPT09dC5wYXRoWzBdOyl0LnBhdGguc2hpZnQoKTsiPyI9PWE/KHQucXVlcnk9IiIsdT1idCk6IiMiPT1hJiYodC5mcmFnbWVudD0iIix1PXd0KX1lbHNlIHArPVUoYSxxKTticmVhaztjYXNlIHl0OiI/Ij09YT8odC5xdWVyeT0iIix1PWJ0KToiIyI9PWE/KHQuZnJhZ21lbnQ9IiIsdT13dCk6YSE9aSYmKHQucGF0aFswXSs9VShhLEgpKTticmVhaztjYXNlIGJ0Om58fCIjIiE9YT9hIT1pJiYoIiciPT1hJiZZKHQpP3QucXVlcnkrPSIlMjciOnQucXVlcnkrPSIjIj09YT8iJTIzIjpVKGEsSCkpOih0LmZyYWdtZW50PSIiLHU9d3QpO2JyZWFrO2Nhc2Ugd3Q6YSE9aSYmKHQuZnJhZ21lbnQrPVUoYSxCKSl9aCsrfX0sX3Q9ZnVuY3Rpb24odCl7dmFyIGUsbixpPXUodGhpcyxfdCwiVVJMIikscj1hcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCxhPVN0cmluZyh0KSxzPV8oaSx7dHlwZToiVVJMIn0pO2lmKHZvaWQgMCE9PXIpaWYociBpbnN0YW5jZW9mIF90KWU9UyhyKTtlbHNlIGlmKG49eHQoZT17fSxTdHJpbmcocikpKXRocm93IFR5cGVFcnJvcihuKTtpZihuPXh0KHMsYSxudWxsLGUpKXRocm93IFR5cGVFcnJvcihuKTt2YXIgbD1zLnNlYXJjaFBhcmFtcz1uZXcgdyxjPXgobCk7Yy51cGRhdGVTZWFyY2hQYXJhbXMocy5xdWVyeSksYy51cGRhdGVVUkw9ZnVuY3Rpb24oKXtzLnF1ZXJ5PVN0cmluZyhsKXx8bnVsbH0sb3x8KGkuaHJlZj1DdC5jYWxsKGkpLGkub3JpZ2luPWt0LmNhbGwoaSksaS5wcm90b2NvbD1UdC5jYWxsKGkpLGkudXNlcm5hbWU9QXQuY2FsbChpKSxpLnBhc3N3b3JkPUR0LmNhbGwoaSksaS5ob3N0PUV0LmNhbGwoaSksaS5ob3N0bmFtZT1NdC5jYWxsKGkpLGkucG9ydD1PdC5jYWxsKGkpLGkucGF0aG5hbWU9SXQuY2FsbChpKSxpLnNlYXJjaD1QdC5jYWxsKGkpLGkuc2VhcmNoUGFyYW1zPUx0LmNhbGwoaSksaS5oYXNoPU50LmNhbGwoaSkpfSxTdD1fdC5wcm90b3R5cGUsQ3Q9ZnVuY3Rpb24oKXt2YXIgdD1TKHRoaXMpLGU9dC5zY2hlbWUsbj10LnVzZXJuYW1lLGk9dC5wYXNzd29yZCxyPXQuaG9zdCxvPXQucG9ydCxhPXQucGF0aCxzPXQucXVlcnksbD10LmZyYWdtZW50LGM9ZSsiOiI7cmV0dXJuIG51bGwhPT1yPyhjKz0iLy8iLEcodCkmJihjKz1uKyhpPyI6IitpOiIiKSsiQCIpLGMrPXoociksbnVsbCE9PW8mJihjKz0iOiIrbykpOiJmaWxlIj09ZSYmKGMrPSIvLyIpLGMrPXQuY2Fubm90QmVBQmFzZVVSTD9hWzBdOmEubGVuZ3RoPyIvIithLmpvaW4oIi8iKToiIixudWxsIT09cyYmKGMrPSI/IitzKSxudWxsIT09bCYmKGMrPSIjIitsKSxjfSxrdD1mdW5jdGlvbigpe3ZhciB0PVModGhpcyksZT10LnNjaGVtZSxuPXQucG9ydDtpZigiYmxvYiI9PWUpdHJ5e3JldHVybiBuZXcgVVJMKGUucGF0aFswXSkub3JpZ2lufWNhdGNoKHQpe3JldHVybiJudWxsIn1yZXR1cm4iZmlsZSIhPWUmJlkodCk/ZSsiOi8vIit6KHQuaG9zdCkrKG51bGwhPT1uPyI6IituOiIiKToibnVsbCJ9LFR0PWZ1bmN0aW9uKCl7cmV0dXJuIFModGhpcykuc2NoZW1lKyI6In0sQXQ9ZnVuY3Rpb24oKXtyZXR1cm4gUyh0aGlzKS51c2VybmFtZX0sRHQ9ZnVuY3Rpb24oKXtyZXR1cm4gUyh0aGlzKS5wYXNzd29yZH0sRXQ9ZnVuY3Rpb24oKXt2YXIgdD1TKHRoaXMpLGU9dC5ob3N0LG49dC5wb3J0O3JldHVybiBudWxsPT09ZT8iIjpudWxsPT09bj96KGUpOnooZSkrIjoiK259LE10PWZ1bmN0aW9uKCl7dmFyIHQ9Uyh0aGlzKS5ob3N0O3JldHVybiBudWxsPT09dD8iIjp6KHQpfSxPdD1mdW5jdGlvbigpe3ZhciB0PVModGhpcykucG9ydDtyZXR1cm4gbnVsbD09PXQ/IiI6U3RyaW5nKHQpfSxJdD1mdW5jdGlvbigpe3ZhciB0PVModGhpcyksZT10LnBhdGg7cmV0dXJuIHQuY2Fubm90QmVBQmFzZVVSTD9lWzBdOmUubGVuZ3RoPyIvIitlLmpvaW4oIi8iKToiIn0sUHQ9ZnVuY3Rpb24oKXt2YXIgdD1TKHRoaXMpLnF1ZXJ5O3JldHVybiB0PyI/Iit0OiIifSxMdD1mdW5jdGlvbigpe3JldHVybiBTKHRoaXMpLnNlYXJjaFBhcmFtc30sTnQ9ZnVuY3Rpb24oKXt2YXIgdD1TKHRoaXMpLmZyYWdtZW50O3JldHVybiB0PyIjIit0OiIifSxGdD1mdW5jdGlvbih0LGUpe3JldHVybntnZXQ6dCxzZXQ6ZSxjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMH19O2lmKG8mJmwoU3Qse2hyZWY6RnQoQ3QsKGZ1bmN0aW9uKHQpe3ZhciBlPVModGhpcyksbj1TdHJpbmcodCksaT14dChlLG4pO2lmKGkpdGhyb3cgVHlwZUVycm9yKGkpO3goZS5zZWFyY2hQYXJhbXMpLnVwZGF0ZVNlYXJjaFBhcmFtcyhlLnF1ZXJ5KX0pKSxvcmlnaW46RnQoa3QpLHByb3RvY29sOkZ0KFR0LChmdW5jdGlvbih0KXt2YXIgZT1TKHRoaXMpO3h0KGUsU3RyaW5nKHQpKyI6Iix0dCl9KSksdXNlcm5hbWU6RnQoQXQsKGZ1bmN0aW9uKHQpe3ZhciBlPVModGhpcyksbj1mKFN0cmluZyh0KSk7aWYoIVgoZSkpe2UudXNlcm5hbWU9IiI7Zm9yKHZhciBpPTA7aTxuLmxlbmd0aDtpKyspZS51c2VybmFtZSs9VShuW2ldLFcpfX0pKSxwYXNzd29yZDpGdChEdCwoZnVuY3Rpb24odCl7dmFyIGU9Uyh0aGlzKSxuPWYoU3RyaW5nKHQpKTtpZighWChlKSl7ZS5wYXNzd29yZD0iIjtmb3IodmFyIGk9MDtpPG4ubGVuZ3RoO2krKyllLnBhc3N3b3JkKz1VKG5baV0sVyl9fSkpLGhvc3Q6RnQoRXQsKGZ1bmN0aW9uKHQpe3ZhciBlPVModGhpcyk7ZS5jYW5ub3RCZUFCYXNlVVJMfHx4dChlLFN0cmluZyh0KSx1dCl9KSksaG9zdG5hbWU6RnQoTXQsKGZ1bmN0aW9uKHQpe3ZhciBlPVModGhpcyk7ZS5jYW5ub3RCZUFCYXNlVVJMfHx4dChlLFN0cmluZyh0KSxkdCl9KSkscG9ydDpGdChPdCwoZnVuY3Rpb24odCl7dmFyIGU9Uyh0aGlzKTtYKGUpfHwoIiI9PSh0PVN0cmluZyh0KSk/ZS5wb3J0PW51bGw6eHQoZSx0LGh0KSl9KSkscGF0aG5hbWU6RnQoSXQsKGZ1bmN0aW9uKHQpe3ZhciBlPVModGhpcyk7ZS5jYW5ub3RCZUFCYXNlVVJMfHwoZS5wYXRoPVtdLHh0KGUsdCsiIixtdCkpfSkpLHNlYXJjaDpGdChQdCwoZnVuY3Rpb24odCl7dmFyIGU9Uyh0aGlzKTsiIj09KHQ9U3RyaW5nKHQpKT9lLnF1ZXJ5PW51bGw6KCI/Ij09dC5jaGFyQXQoMCkmJih0PXQuc2xpY2UoMSkpLGUucXVlcnk9IiIseHQoZSx0LGJ0KSkseChlLnNlYXJjaFBhcmFtcykudXBkYXRlU2VhcmNoUGFyYW1zKGUucXVlcnkpfSkpLHNlYXJjaFBhcmFtczpGdChMdCksaGFzaDpGdChOdCwoZnVuY3Rpb24odCl7dmFyIGU9Uyh0aGlzKTsiIiE9KHQ9U3RyaW5nKHQpKT8oIiMiPT10LmNoYXJBdCgwKSYmKHQ9dC5zbGljZSgxKSksZS5mcmFnbWVudD0iIix4dChlLHQsd3QpKTplLmZyYWdtZW50PW51bGx9KSl9KSxjKFN0LCJ0b0pTT04iLChmdW5jdGlvbigpe3JldHVybiBDdC5jYWxsKHRoaXMpfSkse2VudW1lcmFibGU6ITB9KSxjKFN0LCJ0b1N0cmluZyIsKGZ1bmN0aW9uKCl7cmV0dXJuIEN0LmNhbGwodGhpcyl9KSx7ZW51bWVyYWJsZTohMH0pLGIpe3ZhciBSdD1iLmNyZWF0ZU9iamVjdFVSTCxqdD1iLnJldm9rZU9iamVjdFVSTDtSdCYmYyhfdCwiY3JlYXRlT2JqZWN0VVJMIiwoZnVuY3Rpb24odCl7cmV0dXJuIFJ0LmFwcGx5KGIsYXJndW1lbnRzKX0pKSxqdCYmYyhfdCwicmV2b2tlT2JqZWN0VVJMIiwoZnVuY3Rpb24odCl7cmV0dXJuIGp0LmFwcGx5KGIsYXJndW1lbnRzKX0pKX1tKF90LCJVUkwiKSxyKHtnbG9iYWw6ITAsZm9yY2VkOiFhLHNoYW06IW99LHtVUkw6X3R9KX0sZnVuY3Rpb24odCxlLG4peyJ1c2Ugc3RyaWN0Ijt2YXIgaT1uKDgpLHI9bigwKSxvPW4oNzIpLGE9big2Nykscz1uKDYxKSxsPW4oMTApLGM9bigzMSksdT1PYmplY3QuYXNzaWduLGQ9T2JqZWN0LmRlZmluZVByb3BlcnR5O3QuZXhwb3J0cz0hdXx8cigoZnVuY3Rpb24oKXtpZihpJiYxIT09dSh7YjoxfSx1KGQoe30sImEiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe2QodGhpcywiYiIse3ZhbHVlOjMsZW51bWVyYWJsZTohMX0pfX0pLHtiOjJ9KSkuYilyZXR1cm4hMDt2YXIgdD17fSxlPXt9LG49U3ltYm9sKCk7cmV0dXJuIHRbbl09NywiYWJjZGVmZ2hpamtsbW5vcHFyc3QiLnNwbGl0KCIiKS5mb3JFYWNoKChmdW5jdGlvbih0KXtlW3RdPXR9KSksNyE9dSh7fSx0KVtuXXx8ImFiY2RlZmdoaWprbG1ub3BxcnN0IiE9byh1KHt9LGUpKS5qb2luKCIiKX0pKT9mdW5jdGlvbih0LGUpe2Zvcih2YXIgbj1sKHQpLHI9YXJndW1lbnRzLmxlbmd0aCx1PTEsZD1hLmYsaD1zLmY7cj51Oylmb3IodmFyIGYscD1jKGFyZ3VtZW50c1t1KytdKSxnPWQ/byhwKS5jb25jYXQoZChwKSk6byhwKSxtPWcubGVuZ3RoLHY9MDttPnY7KWY9Z1t2KytdLGkmJiFoLmNhbGwocCxmKXx8KG5bZl09cFtmXSk7cmV0dXJuIG59OnV9LGZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7dmFyIGk9bigzNikscj1uKDEwKSxvPW4oMTYzKSxhPW4oOTApLHM9big0KSxsPW4oMzUpLGM9big0MSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlLG4sdSxkLGgsZixwPXIodCksZz0iZnVuY3Rpb24iPT10eXBlb2YgdGhpcz90aGlzOkFycmF5LG09YXJndW1lbnRzLmxlbmd0aCx2PW0+MT9hcmd1bWVudHNbMV06dm9pZCAwLHk9dm9pZCAwIT09dixiPWMocCksdz0wO2lmKHkmJih2PWkodixtPjI/YXJndW1lbnRzWzJdOnZvaWQgMCwyKSksbnVsbD09Ynx8Zz09QXJyYXkmJmEoYikpZm9yKG49bmV3IGcoZT1zKHAubGVuZ3RoKSk7ZT53O3crKylmPXk/dihwW3ddLHcpOnBbd10sbChuLHcsZik7ZWxzZSBmb3IoaD0oZD1iLmNhbGwocCkpLm5leHQsbj1uZXcgZzshKHU9aC5jYWxsKGQpKS5kb25lO3crKylmPXk/byhkLHYsW3UudmFsdWUsd10sITApOnUudmFsdWUsbChuLHcsZik7cmV0dXJuIG4ubGVuZ3RoPXcsbn19LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDYpLHI9bigxNjQpO3QuZXhwb3J0cz1mdW5jdGlvbih0LGUsbixvKXt0cnl7cmV0dXJuIG8/ZShpKG4pWzBdLG5bMV0pOmUobil9Y2F0Y2goZSl7dGhyb3cgcih0KSxlfX19LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDYpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZT10LnJldHVybjtpZih2b2lkIDAhPT1lKXJldHVybiBpKGUuY2FsbCh0KSkudmFsdWV9fSxmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO3ZhciBpPS9bXlwwLVx1MDA3RV0vLHI9L1suXHUzMDAyXHVGRjBFXHVGRjYxXS9nLG89Ik92ZXJmbG93OiBpbnB1dCBuZWVkcyB3aWRlciBpbnRlZ2VycyB0byBwcm9jZXNzIixhPU1hdGguZmxvb3Iscz1TdHJpbmcuZnJvbUNoYXJDb2RlLGw9ZnVuY3Rpb24odCl7cmV0dXJuIHQrMjIrNzUqKHQ8MjYpfSxjPWZ1bmN0aW9uKHQsZSxuKXt2YXIgaT0wO2Zvcih0PW4/YSh0LzcwMCk6dD4+MSx0Kz1hKHQvZSk7dD40NTU7aSs9MzYpdD1hKHQvMzUpO3JldHVybiBhKGkrMzYqdC8odCszOCkpfSx1PWZ1bmN0aW9uKHQpe3ZhciBlLG4saT1bXSxyPSh0PWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1bXSxuPTAsaT10Lmxlbmd0aDtuPGk7KXt2YXIgcj10LmNoYXJDb2RlQXQobisrKTtpZihyPj01NTI5NiYmcjw9NTYzMTkmJm48aSl7dmFyIG89dC5jaGFyQ29kZUF0KG4rKyk7NTYzMjA9PSg2NDUxMiZvKT9lLnB1c2goKCgxMDIzJnIpPDwxMCkrKDEwMjMmbykrNjU1MzYpOihlLnB1c2gociksbi0tKX1lbHNlIGUucHVzaChyKX1yZXR1cm4gZX0odCkpLmxlbmd0aCx1PTEyOCxkPTAsaD03Mjtmb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKShuPXRbZV0pPDEyOCYmaS5wdXNoKHMobikpO3ZhciBmPWkubGVuZ3RoLHA9Zjtmb3IoZiYmaS5wdXNoKCItIik7cDxyOyl7dmFyIGc9MjE0NzQ4MzY0Nztmb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKShuPXRbZV0pPj11JiZuPGcmJihnPW4pO3ZhciBtPXArMTtpZihnLXU+YSgoMjE0NzQ4MzY0Ny1kKS9tKSl0aHJvdyBSYW5nZUVycm9yKG8pO2ZvcihkKz0oZy11KSptLHU9ZyxlPTA7ZTx0Lmxlbmd0aDtlKyspe2lmKChuPXRbZV0pPHUmJisrZD4yMTQ3NDgzNjQ3KXRocm93IFJhbmdlRXJyb3Iobyk7aWYobj09dSl7Zm9yKHZhciB2PWQseT0zNjs7eSs9MzYpe3ZhciBiPXk8PWg/MTp5Pj1oKzI2PzI2OnktaDtpZih2PGIpYnJlYWs7dmFyIHc9di1iLHg9MzYtYjtpLnB1c2gocyhsKGIrdyV4KSkpLHY9YSh3L3gpfWkucHVzaChzKGwodikpKSxoPWMoZCxtLHA9PWYpLGQ9MCwrK3B9fSsrZCwrK3V9cmV0dXJuIGkuam9pbigiIil9O3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgZSxuLG89W10sYT10LnRvTG93ZXJDYXNlKCkucmVwbGFjZShyLCIuIikuc3BsaXQoIi4iKTtmb3IoZT0wO2U8YS5sZW5ndGg7ZSsrKW49YVtlXSxvLnB1c2goaS50ZXN0KG4pPyJ4bi0tIit1KG4pOm4pO3JldHVybiBvLmpvaW4oIi4iKX19LGZ1bmN0aW9uKHQsZSxuKXsidXNlIHN0cmljdCI7bigzNyk7dmFyIGk9big1KSxyPW4oMjQpLG89big5MyksYT1uKDE0KSxzPW4oNzkpLGw9bigyOCksYz1uKDc0KSx1PW4oMTcpLGQ9bigzOSksaD1uKDcpLGY9bigzNikscD1uKDMwKSxnPW4oNiksbT1uKDkpLHY9bigzOCkseT1uKDIwKSxiPW4oMTY3KSx3PW4oNDEpLHg9bigzKSxfPXIoImZldGNoIiksUz1yKCJIZWFkZXJzIiksQz14KCJpdGVyYXRvciIpLGs9dS5zZXQsVD11LmdldHRlckZvcigiVVJMU2VhcmNoUGFyYW1zIiksQT11LmdldHRlckZvcigiVVJMU2VhcmNoUGFyYW1zSXRlcmF0b3IiKSxEPS9cKy9nLEU9QXJyYXkoNCksTT1mdW5jdGlvbih0KXtyZXR1cm4gRVt0LTFdfHwoRVt0LTFdPVJlZ0V4cCgiKCg/OiVbXFxkYS1mXXsyfSl7Iit0KyJ9KSIsImdpIikpfSxPPWZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHQpfWNhdGNoKGUpe3JldHVybiB0fX0sST1mdW5jdGlvbih0KXt2YXIgZT10LnJlcGxhY2UoRCwiICIpLG49NDt0cnl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlKX1jYXRjaCh0KXtmb3IoO247KWU9ZS5yZXBsYWNlKE0obi0tKSxPKTtyZXR1cm4gZX19LFA9L1shJygpfl18JTIwL2csTD17IiEiOiIlMjEiLCInIjoiJTI3IiwiKCI6IiUyOCIsIikiOiIlMjkiLCJ+IjoiJTdFIiwiJTIwIjoiKyJ9LE49ZnVuY3Rpb24odCl7cmV0dXJuIExbdF19LEY9ZnVuY3Rpb24odCl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudCh0KS5yZXBsYWNlKFAsTil9LFI9ZnVuY3Rpb24odCxlKXtpZihlKWZvcih2YXIgbixpLHI9ZS5zcGxpdCgiJiIpLG89MDtvPHIubGVuZ3RoOykobj1yW28rK10pLmxlbmd0aCYmKGk9bi5zcGxpdCgiPSIpLHQucHVzaCh7a2V5OkkoaS5zaGlmdCgpKSx2YWx1ZTpJKGkuam9pbigiPSIpKX0pKX0saj1mdW5jdGlvbih0KXt0aGlzLmVudHJpZXMubGVuZ3RoPTAsUih0aGlzLmVudHJpZXMsdCl9LCQ9ZnVuY3Rpb24odCxlKXtpZih0PGUpdGhyb3cgVHlwZUVycm9yKCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIpfSx6PWMoKGZ1bmN0aW9uKHQsZSl7ayh0aGlzLHt0eXBlOiJVUkxTZWFyY2hQYXJhbXNJdGVyYXRvciIsaXRlcmF0b3I6YihUKHQpLmVudHJpZXMpLGtpbmQ6ZX0pfSksIkl0ZXJhdG9yIiwoZnVuY3Rpb24oKXt2YXIgdD1BKHRoaXMpLGU9dC5raW5kLG49dC5pdGVyYXRvci5uZXh0KCksaT1uLnZhbHVlO3JldHVybiBuLmRvbmV8fChuLnZhbHVlPSJrZXlzIj09PWU/aS5rZXk6InZhbHVlcyI9PT1lP2kudmFsdWU6W2kua2V5LGkudmFsdWVdKSxufSkpLEg9ZnVuY3Rpb24oKXtkKHRoaXMsSCwiVVJMU2VhcmNoUGFyYW1zIik7dmFyIHQsZSxuLGkscixvLGEscyxsLGM9YXJndW1lbnRzLmxlbmd0aD4wP2FyZ3VtZW50c1swXTp2b2lkIDAsdT10aGlzLGY9W107aWYoayh1LHt0eXBlOiJVUkxTZWFyY2hQYXJhbXMiLGVudHJpZXM6Zix1cGRhdGVVUkw6ZnVuY3Rpb24oKXt9LHVwZGF0ZVNlYXJjaFBhcmFtczpqfSksdm9pZCAwIT09YylpZihtKGMpKWlmKCJmdW5jdGlvbiI9PXR5cGVvZih0PXcoYykpKWZvcihuPShlPXQuY2FsbChjKSkubmV4dDshKGk9bi5jYWxsKGUpKS5kb25lOyl7aWYoKGE9KG89KHI9YihnKGkudmFsdWUpKSkubmV4dCkuY2FsbChyKSkuZG9uZXx8KHM9by5jYWxsKHIpKS5kb25lfHwhby5jYWxsKHIpLmRvbmUpdGhyb3cgVHlwZUVycm9yKCJFeHBlY3RlZCBzZXF1ZW5jZSB3aXRoIGxlbmd0aCAyIik7Zi5wdXNoKHtrZXk6YS52YWx1ZSsiIix2YWx1ZTpzLnZhbHVlKyIifSl9ZWxzZSBmb3IobCBpbiBjKWgoYyxsKSYmZi5wdXNoKHtrZXk6bCx2YWx1ZTpjW2xdKyIifSk7ZWxzZSBSKGYsInN0cmluZyI9PXR5cGVvZiBjPyI/Ij09PWMuY2hhckF0KDApP2Muc2xpY2UoMSk6YzpjKyIiKX0sQj1ILnByb3RvdHlwZTtzKEIse2FwcGVuZDpmdW5jdGlvbih0LGUpeyQoYXJndW1lbnRzLmxlbmd0aCwyKTt2YXIgbj1UKHRoaXMpO24uZW50cmllcy5wdXNoKHtrZXk6dCsiIix2YWx1ZTplKyIifSksbi51cGRhdGVVUkwoKX0sZGVsZXRlOmZ1bmN0aW9uKHQpeyQoYXJndW1lbnRzLmxlbmd0aCwxKTtmb3IodmFyIGU9VCh0aGlzKSxuPWUuZW50cmllcyxpPXQrIiIscj0wO3I8bi5sZW5ndGg7KW5bcl0ua2V5PT09aT9uLnNwbGljZShyLDEpOnIrKztlLnVwZGF0ZVVSTCgpfSxnZXQ6ZnVuY3Rpb24odCl7JChhcmd1bWVudHMubGVuZ3RoLDEpO2Zvcih2YXIgZT1UKHRoaXMpLmVudHJpZXMsbj10KyIiLGk9MDtpPGUubGVuZ3RoO2krKylpZihlW2ldLmtleT09PW4pcmV0dXJuIGVbaV0udmFsdWU7cmV0dXJuIG51bGx9LGdldEFsbDpmdW5jdGlvbih0KXskKGFyZ3VtZW50cy5sZW5ndGgsMSk7Zm9yKHZhciBlPVQodGhpcykuZW50cmllcyxuPXQrIiIsaT1bXSxyPTA7cjxlLmxlbmd0aDtyKyspZVtyXS5rZXk9PT1uJiZpLnB1c2goZVtyXS52YWx1ZSk7cmV0dXJuIGl9LGhhczpmdW5jdGlvbih0KXskKGFyZ3VtZW50cy5sZW5ndGgsMSk7Zm9yKHZhciBlPVQodGhpcykuZW50cmllcyxuPXQrIiIsaT0wO2k8ZS5sZW5ndGg7KWlmKGVbaSsrXS5rZXk9PT1uKXJldHVybiEwO3JldHVybiExfSxzZXQ6ZnVuY3Rpb24odCxlKXskKGFyZ3VtZW50cy5sZW5ndGgsMSk7Zm9yKHZhciBuLGk9VCh0aGlzKSxyPWkuZW50cmllcyxvPSExLGE9dCsiIixzPWUrIiIsbD0wO2w8ci5sZW5ndGg7bCsrKShuPXJbbF0pLmtleT09PWEmJihvP3Iuc3BsaWNlKGwtLSwxKToobz0hMCxuLnZhbHVlPXMpKTtvfHxyLnB1c2goe2tleTphLHZhbHVlOnN9KSxpLnVwZGF0ZVVSTCgpfSxzb3J0OmZ1bmN0aW9uKCl7dmFyIHQsZSxuLGk9VCh0aGlzKSxyPWkuZW50cmllcyxvPXIuc2xpY2UoKTtmb3Ioci5sZW5ndGg9MCxuPTA7bjxvLmxlbmd0aDtuKyspe2Zvcih0PW9bbl0sZT0wO2U8bjtlKyspaWYocltlXS5rZXk+dC5rZXkpe3Iuc3BsaWNlKGUsMCx0KTticmVha31lPT09biYmci5wdXNoKHQpfWkudXBkYXRlVVJMKCl9LGZvckVhY2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBlLG49VCh0aGlzKS5lbnRyaWVzLGk9Zih0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLDMpLHI9MDtyPG4ubGVuZ3RoOylpKChlPW5bcisrXSkudmFsdWUsZS5rZXksdGhpcyl9LGtleXM6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHoodGhpcywia2V5cyIpfSx2YWx1ZXM6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHoodGhpcywidmFsdWVzIil9LGVudHJpZXM6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHoodGhpcywiZW50cmllcyIpfX0se2VudW1lcmFibGU6ITB9KSxhKEIsQyxCLmVudHJpZXMpLGEoQiwidG9TdHJpbmciLChmdW5jdGlvbigpe2Zvcih2YXIgdCxlPVQodGhpcykuZW50cmllcyxuPVtdLGk9MDtpPGUubGVuZ3RoOyl0PWVbaSsrXSxuLnB1c2goRih0LmtleSkrIj0iK0YodC52YWx1ZSkpO3JldHVybiBuLmpvaW4oIiYiKX0pLHtlbnVtZXJhYmxlOiEwfSksbChILCJVUkxTZWFyY2hQYXJhbXMiKSxpKHtnbG9iYWw6ITAsZm9yY2VkOiFvfSx7VVJMU2VhcmNoUGFyYW1zOkh9KSxvfHwiZnVuY3Rpb24iIT10eXBlb2YgX3x8ImZ1bmN0aW9uIiE9dHlwZW9mIFN8fGkoe2dsb2JhbDohMCxlbnVtZXJhYmxlOiEwLGZvcmNlZDohMH0se2ZldGNoOmZ1bmN0aW9uKHQpe3ZhciBlLG4saSxyPVt0XTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xJiYobShlPWFyZ3VtZW50c1sxXSkmJihuPWUuYm9keSwiVVJMU2VhcmNoUGFyYW1zIj09PXAobikmJigoaT1lLmhlYWRlcnM/bmV3IFMoZS5oZWFkZXJzKTpuZXcgUykuaGFzKCJjb250ZW50LXR5cGUiKXx8aS5zZXQoImNvbnRlbnQtdHlwZSIsImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PVVURi04IiksZT12KGUse2JvZHk6eSgwLFN0cmluZyhuKSksaGVhZGVyczp5KDAsaSl9KSkpLHIucHVzaChlKSksXy5hcHBseSh0aGlzLHIpfX0pLHQuZXhwb3J0cz17VVJMU2VhcmNoUGFyYW1zOkgsZ2V0U3RhdGU6VH19LGZ1bmN0aW9uKHQsZSxuKXt2YXIgaT1uKDYpLHI9big0MSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlPXIodCk7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgVHlwZUVycm9yKFN0cmluZyh0KSsiIGlzIG5vdCBpdGVyYWJsZSIpO3JldHVybiBpKGUuY2FsbCh0KSl9fSxmdW5jdGlvbih0LGUsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkodCxlKXt2YXIgbjtpZigidW5kZWZpbmVkIj09dHlwZW9mIFN5bWJvbHx8bnVsbD09dFtTeW1ib2wuaXRlcmF0b3JdKXtpZihBcnJheS5pc0FycmF5KHQpfHwobj1mdW5jdGlvbih0LGUpe2lmKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gcih0LGUpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PW4mJnQuY29uc3RydWN0b3ImJihuPXQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ufHwiU2V0Ij09PW4/QXJyYXkuZnJvbSh0KToiQXJndW1lbnRzIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pP3IodCxlKTp2b2lkIDB9fSh0KSl8fGUmJnQmJiJudW1iZXIiPT10eXBlb2YgdC5sZW5ndGgpe24mJih0PW4pO3ZhciBpPTAsbz1mdW5jdGlvbigpe307cmV0dXJue3M6byxuOmZ1bmN0aW9uKCl7cmV0dXJuIGk+PXQubGVuZ3RoP3tkb25lOiEwfTp7ZG9uZTohMSx2YWx1ZTp0W2krK119fSxlOmZ1bmN0aW9uKHQpe3Rocm93IHR9LGY6b319dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfXZhciBhLHM9ITAsbD0hMTtyZXR1cm57czpmdW5jdGlvbigpe249dFtTeW1ib2wuaXRlcmF0b3JdKCl9LG46ZnVuY3Rpb24oKXt2YXIgdD1uLm5leHQoKTtyZXR1cm4gcz10LmRvbmUsdH0sZTpmdW5jdGlvbih0KXtsPSEwLGE9dH0sZjpmdW5jdGlvbigpe3RyeXtzfHxudWxsPT1uLnJldHVybnx8bi5yZXR1cm4oKX1maW5hbGx5e2lmKGwpdGhyb3cgYX19fX1mdW5jdGlvbiByKHQsZSl7KG51bGw9PWV8fGU+dC5sZW5ndGgpJiYoZT10Lmxlbmd0aCk7Zm9yKHZhciBuPTAsaT1uZXcgQXJyYXkoZSk7bjxlO24rKylpW25dPXRbbl07cmV0dXJuIGl9ZnVuY3Rpb24gbyh0LGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgaT1lW25dO2kuZW51bWVyYWJsZT1pLmVudW1lcmFibGV8fCExLGkuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBpJiYoaS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsaS5rZXksaSl9fW4ucihlKSxuLmQoZSwiRHJvcHpvbmUiLChmdW5jdGlvbigpe3JldHVybiB3fSkpLG4oOTUpLG4oMTA0KSxuKDEwNSksbigxMDYpLG4oMzcpLG4oMTEwKSxuKDExMSksbig3NyksbigxMTIpLG4oMTE0KSxuKDgzKSxuKDExNSksbigxMTYpLG4oNTYpLG4oMTE5KSxuKDg1KSxuKDg2KSxuKDEyMCksbigxMjIpLG4oODcpLG4oMTI2KSxuKDEzMyksbigxMzUpLG4oMTM2KSxuKDEzNyksbigxMzgpLG4oMTM5KSxuKDE0MCksbigxNDEpLG4oMTQyKSxuKDE0MyksbigxNDQpLG4oMTQ1KSxuKDE0NyksbigxNDgpLG4oMTQ5KSxuKDE1MCksbigxNTEpLG4oMTUyKSxuKDE1MyksbigxNTQpLG4oMTU1KSxuKDE1NiksbigxNTcpLG4oMTU4KSxuKDE1OSksbigxNjApO3ZhciBhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpeyFmdW5jdGlvbih0LGUpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfSh0aGlzLHQpfXZhciBlLG47cmV0dXJuIGU9dCwobj1be2tleToib24iLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX2NhbGxiYWNrcz10aGlzLl9jYWxsYmFja3N8fHt9LHRoaXMuX2NhbGxiYWNrc1t0XXx8KHRoaXMuX2NhbGxiYWNrc1t0XT1bXSksdGhpcy5fY2FsbGJhY2tzW3RdLnB1c2goZSksdGhpc319LHtrZXk6ImVtaXQiLHZhbHVlOmZ1bmN0aW9uKHQpe3RoaXMuX2NhbGxiYWNrcz10aGlzLl9jYWxsYmFja3N8fHt9O3ZhciBlPXRoaXMuX2NhbGxiYWNrc1t0XTtpZihlKXtmb3IodmFyIG49YXJndW1lbnRzLmxlbmd0aCxyPW5ldyBBcnJheShuPjE/bi0xOjApLG89MTtvPG47bysrKXJbby0xXT1hcmd1bWVudHNbb107dmFyIGEscz1pKGUsITApO3RyeXtmb3Iocy5zKCk7IShhPXMubigpKS5kb25lOyl7dmFyIGw9YS52YWx1ZTtsLmFwcGx5KHRoaXMscil9fWNhdGNoKHQpe3MuZSh0KX1maW5hbGx5e3MuZigpfX1yZXR1cm4gdGhpc319LHtrZXk6Im9mZiIsdmFsdWU6ZnVuY3Rpb24odCxlKXtpZighdGhpcy5fY2FsbGJhY2tzfHwwPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdGhpcy5fY2FsbGJhY2tzPXt9LHRoaXM7dmFyIG49dGhpcy5fY2FsbGJhY2tzW3RdO2lmKCFuKXJldHVybiB0aGlzO2lmKDE9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiBkZWxldGUgdGhpcy5fY2FsbGJhY2tzW3RdLHRoaXM7Zm9yKHZhciBpPTA7aTxuLmxlbmd0aDtpKyspe3ZhciByPW5baV07aWYocj09PWUpe24uc3BsaWNlKGksMSk7YnJlYWt9fXJldHVybiB0aGlzfX1dKSYmbyhlLnByb3RvdHlwZSxuKSx0fSgpO2Z1bmN0aW9uIHModCxlKXt2YXIgbjtpZigidW5kZWZpbmVkIj09dHlwZW9mIFN5bWJvbHx8bnVsbD09dFtTeW1ib2wuaXRlcmF0b3JdKXtpZihBcnJheS5pc0FycmF5KHQpfHwobj1mdW5jdGlvbih0LGUpe2lmKHQpe2lmKCJzdHJpbmciPT10eXBlb2YgdClyZXR1cm4gbCh0LGUpO3ZhciBuPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KS5zbGljZSg4LC0xKTtyZXR1cm4iT2JqZWN0Ij09PW4mJnQuY29uc3RydWN0b3ImJihuPXQuY29uc3RydWN0b3IubmFtZSksIk1hcCI9PT1ufHwiU2V0Ij09PW4/QXJyYXkuZnJvbSh0KToiQXJndW1lbnRzIj09PW58fC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pP2wodCxlKTp2b2lkIDB9fSh0KSl8fGUmJnQmJiJudW1iZXIiPT10eXBlb2YgdC5sZW5ndGgpe24mJih0PW4pO3ZhciBpPTAscj1mdW5jdGlvbigpe307cmV0dXJue3M6cixuOmZ1bmN0aW9uKCl7cmV0dXJuIGk+PXQubGVuZ3RoP3tkb25lOiEwfTp7ZG9uZTohMSx2YWx1ZTp0W2krK119fSxlOmZ1bmN0aW9uKHQpe3Rocm93IHR9LGY6cn19dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGl0ZXJhdGUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLiIpfXZhciBvLGE9ITAscz0hMTtyZXR1cm57czpmdW5jdGlvbigpe249dFtTeW1ib2wuaXRlcmF0b3JdKCl9LG46ZnVuY3Rpb24oKXt2YXIgdD1uLm5leHQoKTtyZXR1cm4gYT10LmRvbmUsdH0sZTpmdW5jdGlvbih0KXtzPSEwLG89dH0sZjpmdW5jdGlvbigpe3RyeXthfHxudWxsPT1uLnJldHVybnx8bi5yZXR1cm4oKX1maW5hbGx5e2lmKHMpdGhyb3cgb319fX1mdW5jdGlvbiBsKHQsZSl7KG51bGw9PWV8fGU+dC5sZW5ndGgpJiYoZT10Lmxlbmd0aCk7Zm9yKHZhciBuPTAsaT1uZXcgQXJyYXkoZSk7bjxlO24rKylpW25dPXRbbl07cmV0dXJuIGl9dmFyIGM9e3VybDpudWxsLG1ldGhvZDoicG9zdCIsd2l0aENyZWRlbnRpYWxzOiExLHRpbWVvdXQ6M2U0LHBhcmFsbGVsVXBsb2FkczoyLHVwbG9hZE11bHRpcGxlOiExLGNodW5raW5nOiExLGZvcmNlQ2h1bmtpbmc6ITEsY2h1bmtTaXplOjJlNixwYXJhbGxlbENodW5rVXBsb2FkczohMSxyZXRyeUNodW5rczohMSxyZXRyeUNodW5rc0xpbWl0OjMsbWF4RmlsZXNpemU6MjU2LHBhcmFtTmFtZToiZmlsZSIsY3JlYXRlSW1hZ2VUaHVtYm5haWxzOiEwLG1heFRodW1ibmFpbEZpbGVzaXplOjEwLHRodW1ibmFpbFdpZHRoOjEyMCx0aHVtYm5haWxIZWlnaHQ6MTIwLHRodW1ibmFpbE1ldGhvZDoiY3JvcCIscmVzaXplV2lkdGg6bnVsbCxyZXNpemVIZWlnaHQ6bnVsbCxyZXNpemVNaW1lVHlwZTpudWxsLHJlc2l6ZVF1YWxpdHk6LjgscmVzaXplTWV0aG9kOiJjb250YWluIixmaWxlc2l6ZUJhc2U6MWUzLG1heEZpbGVzOm51bGwsaGVhZGVyczpudWxsLGNsaWNrYWJsZTohMCxpZ25vcmVIaWRkZW5GaWxlczohMCxhY2NlcHRlZEZpbGVzOm51bGwsYWNjZXB0ZWRNaW1lVHlwZXM6bnVsbCxhdXRvUHJvY2Vzc1F1ZXVlOiEwLGF1dG9RdWV1ZTohMCxhZGRSZW1vdmVMaW5rczohMSxwcmV2aWV3c0NvbnRhaW5lcjpudWxsLGRpc2FibGVQcmV2aWV3czohMSxoaWRkZW5JbnB1dENvbnRhaW5lcjoiYm9keSIsY2FwdHVyZTpudWxsLHJlbmFtZUZpbGVuYW1lOm51bGwscmVuYW1lRmlsZTpudWxsLGZvcmNlRmFsbGJhY2s6ITEsZGljdERlZmF1bHRNZXNzYWdlOiJEcm9wIGZpbGVzIGhlcmUgdG8gdXBsb2FkIixkaWN0RmFsbGJhY2tNZXNzYWdlOiJZb3VyIGJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBkcmFnJ24nZHJvcCBmaWxlIHVwbG9hZHMuIixkaWN0RmFsbGJhY2tUZXh0OiJQbGVhc2UgdXNlIHRoZSBmYWxsYmFjayBmb3JtIGJlbG93IHRvIHVwbG9hZCB5b3VyIGZpbGVzIGxpa2UgaW4gdGhlIG9sZGVuIGRheXMuIixkaWN0RmlsZVRvb0JpZzoiRmlsZSBpcyB0b28gYmlnICh7e2ZpbGVzaXplfX1NaUIpLiBNYXggZmlsZXNpemU6IHt7bWF4RmlsZXNpemV9fU1pQi4iLGRpY3RJbnZhbGlkRmlsZVR5cGU6IllvdSBjYW4ndCB1cGxvYWQgZmlsZXMgb2YgdGhpcyB0eXBlLiIsZGljdFJlc3BvbnNlRXJyb3I6IlNlcnZlciByZXNwb25kZWQgd2l0aCB7e3N0YXR1c0NvZGV9fSBjb2RlLiIsZGljdENhbmNlbFVwbG9hZDoiQ2FuY2VsIHVwbG9hZCIsZGljdFVwbG9hZENhbmNlbGVkOiJVcGxvYWQgY2FuY2VsZWQuIixkaWN0Q2FuY2VsVXBsb2FkQ29uZmlybWF0aW9uOiJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gY2FuY2VsIHRoaXMgdXBsb2FkPyIsZGljdFJlbW92ZUZpbGU6IlJlbW92ZSBmaWxlIixkaWN0UmVtb3ZlRmlsZUNvbmZpcm1hdGlvbjpudWxsLGRpY3RNYXhGaWxlc0V4Y2VlZGVkOiJZb3UgY2FuIG5vdCB1cGxvYWQgYW55IG1vcmUgZmlsZXMuIixkaWN0RmlsZVNpemVVbml0czp7dGI6IlRCIixnYjoiR0IiLG1iOiJNQiIsa2I6IktCIixiOiJiIn0saW5pdDpmdW5jdGlvbigpe30scGFyYW1zOmZ1bmN0aW9uKHQsZSxuKXtpZihuKXJldHVybntkenV1aWQ6bi5maWxlLnVwbG9hZC51dWlkLGR6Y2h1bmtpbmRleDpuLmluZGV4LGR6dG90YWxmaWxlc2l6ZTpuLmZpbGUuc2l6ZSxkemNodW5rc2l6ZTp0aGlzLm9wdGlvbnMuY2h1bmtTaXplLGR6dG90YWxjaHVua2NvdW50Om4uZmlsZS51cGxvYWQudG90YWxDaHVua0NvdW50LGR6Y2h1bmtieXRlb2Zmc2V0Om4uaW5kZXgqdGhpcy5vcHRpb25zLmNodW5rU2l6ZX19LGFjY2VwdDpmdW5jdGlvbih0LGUpe3JldHVybiBlKCl9LGNodW5rc1VwbG9hZGVkOmZ1bmN0aW9uKHQsZSl7ZSgpfSxmYWxsYmFjazpmdW5jdGlvbigpe3ZhciB0O3RoaXMuZWxlbWVudC5jbGFzc05hbWU9IiIuY29uY2F0KHRoaXMuZWxlbWVudC5jbGFzc05hbWUsIiBkei1icm93c2VyLW5vdC1zdXBwb3J0ZWQiKTt2YXIgZSxuPXModGhpcy5lbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJkaXYiKSwhMCk7dHJ5e2ZvcihuLnMoKTshKGU9bi5uKCkpLmRvbmU7KXt2YXIgaT1lLnZhbHVlO2lmKC8oXnwgKWR6LW1lc3NhZ2UoJHwgKS8udGVzdChpLmNsYXNzTmFtZSkpe3Q9aSxpLmNsYXNzTmFtZT0iZHotbWVzc2FnZSI7YnJlYWt9fX1jYXRjaCh0KXtuLmUodCl9ZmluYWxseXtuLmYoKX10fHwodD13LmNyZWF0ZUVsZW1lbnQoJzxkaXYgY2xhc3M9ImR6LW1lc3NhZ2UiPjxzcGFuPjwvc3Bhbj48L2Rpdj4nKSx0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodCkpO3ZhciByPXQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNwYW4iKVswXTtyZXR1cm4gciYmKG51bGwhPXIudGV4dENvbnRlbnQ/ci50ZXh0Q29udGVudD10aGlzLm9wdGlvbnMuZGljdEZhbGxiYWNrTWVzc2FnZTpudWxsIT1yLmlubmVyVGV4dCYmKHIuaW5uZXJUZXh0PXRoaXMub3B0aW9ucy5kaWN0RmFsbGJhY2tNZXNzYWdlKSksdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuZ2V0RmFsbGJhY2tGb3JtKCkpfSxyZXNpemU6ZnVuY3Rpb24odCxlLG4saSl7dmFyIHI9e3NyY1g6MCxzcmNZOjAsc3JjV2lkdGg6dC53aWR0aCxzcmNIZWlnaHQ6dC5oZWlnaHR9LG89dC53aWR0aC90LmhlaWdodDtudWxsPT1lJiZudWxsPT1uPyhlPXIuc3JjV2lkdGgsbj1yLnNyY0hlaWdodCk6bnVsbD09ZT9lPW4qbzpudWxsPT1uJiYobj1lL28pO3ZhciBhPShlPU1hdGgubWluKGUsci5zcmNXaWR0aCkpLyhuPU1hdGgubWluKG4sci5zcmNIZWlnaHQpKTtpZihyLnNyY1dpZHRoPmV8fHIuc3JjSGVpZ2h0Pm4paWYoImNyb3AiPT09aSlvPmE/KHIuc3JjSGVpZ2h0PXQuaGVpZ2h0LHIuc3JjV2lkdGg9ci5zcmNIZWlnaHQqYSk6KHIuc3JjV2lkdGg9dC53aWR0aCxyLnNyY0hlaWdodD1yLnNyY1dpZHRoL2EpO2Vsc2V7aWYoImNvbnRhaW4iIT09aSl0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gcmVzaXplTWV0aG9kICciLmNvbmNhdChpLCInIikpO28+YT9uPWUvbzplPW4qb31yZXR1cm4gci5zcmNYPSh0LndpZHRoLXIuc3JjV2lkdGgpLzIsci5zcmNZPSh0LmhlaWdodC1yLnNyY0hlaWdodCkvMixyLnRyZ1dpZHRoPWUsci50cmdIZWlnaHQ9bixyfSx0cmFuc2Zvcm1GaWxlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuKHRoaXMub3B0aW9ucy5yZXNpemVXaWR0aHx8dGhpcy5vcHRpb25zLnJlc2l6ZUhlaWdodCkmJnQudHlwZS5tYXRjaCgvaW1hZ2UuKi8pP3RoaXMucmVzaXplSW1hZ2UodCx0aGlzLm9wdGlvbnMucmVzaXplV2lkdGgsdGhpcy5vcHRpb25zLnJlc2l6ZUhlaWdodCx0aGlzLm9wdGlvbnMucmVzaXplTWV0aG9kLGUpOmUodCl9LHByZXZpZXdUZW1wbGF0ZTonPGRpdiBjbGFzcz0iZHotcHJldmlldyBkei1maWxlLXByZXZpZXciPlxuPGRpdiBjbGFzcz0iZHotaW1hZ2UiPjxpbWcgZGF0YS1kei10aHVtYm5haWwgLz48L2Rpdj5cbjxkaXYgY2xhc3M9ImR6LWRldGFpbHMiPlxuPGRpdiBjbGFzcz0iZHotc2l6ZSI+PHNwYW4gZGF0YS1kei1zaXplPjwvc3Bhbj48L2Rpdj5cbjxkaXYgY2xhc3M9ImR6LWZpbGVuYW1lIj48c3BhbiBkYXRhLWR6LW5hbWU+PC9zcGFuPjwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPSJkei1wcm9ncmVzcyI+PHNwYW4gY2xhc3M9ImR6LXVwbG9hZCIgZGF0YS1kei11cGxvYWRwcm9ncmVzcz48L3NwYW4+PC9kaXY+XG48ZGl2IGNsYXNzPSJkei1lcnJvci1tZXNzYWdlIj48c3BhbiBkYXRhLWR6LWVycm9ybWVzc2FnZT48L3NwYW4+PC9kaXY+XG48ZGl2IGNsYXNzPSJkei1zdWNjZXNzLW1hcmsiPlxuPHN2ZyB3aWR0aD0iNTRweCIgaGVpZ2h0PSI1NHB4IiB2aWV3Qm94PSIwIDAgNTQgNTQiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+XG4gIDx0aXRsZT5DaGVjazwvdGl0bGU+XG4gIDxnIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPlxuICAgIDxwYXRoIGQ9Ik0yMy41LDMxLjg0MzE0NTggTDE3LjU4NTI0MTksMjUuOTI4Mzg3NyBDMTYuMDI0ODI1MywyNC4zNjc5NzExIDEzLjQ5MTAyOTQsMjQuMzY2ODM1IDExLjkyODkzMjIsMjUuOTI4OTMyMiBDMTAuMzcwMDEzNiwyNy40ODc4NTA4IDEwLjM2NjU5MTIsMzAuMDIzNDQ1NSAxMS45MjgzODc3LDMxLjU4NTI0MTkgTDIwLjQxNDc1ODEsNDAuMDcxNjEyMyBDMjAuNTEzMzk5OSw0MC4xNzAyNTQxIDIwLjYxNTkzMTUsNDAuMjYyNjY0OSAyMC43MjE4NjE1LDQwLjM0ODg0MzUgQzIyLjI4MzU2NjksNDEuODcyNTY1MSAyNC43OTQyMzQsNDEuODYyNjIwMiAyNi4zNDYxNTY0LDQwLjMxMDY5NzggTDQzLjMxMDY5NzgsMjMuMzQ2MTU2NCBDNDQuODc3MTAyMSwyMS43Nzk3NTIxIDQ0Ljg3NTgwNTcsMTkuMjQ4Mzg4NyA0My4zMTM3MDg1LDE3LjY4NjI5MTUgQzQxLjc1NDc4OTksMTYuMTI3MzcyOSAzOS4yMTc2MDM1LDE2LjEyNTU0MjIgMzcuNjUzODQzNiwxNy42ODkzMDIyIEwyMy41LDMxLjg0MzE0NTggWiBNMjcsNTMgQzQxLjM1OTQwMzUsNTMgNTMsNDEuMzU5NDAzNSA1MywyNyBDNTMsMTIuNjQwNTk2NSA0MS4zNTk0MDM1LDEgMjcsMSBDMTIuNjQwNTk2NSwxIDEsMTIuNjQwNTk2NSAxLDI3IEMxLDQxLjM1OTQwMzUgMTIuNjQwNTk2NSw1MyAyNyw1MyBaIiBzdHJva2Utb3BhY2l0eT0iMC4xOTg3OTQxNTgiIHN0cm9rZT0iIzc0NzQ3NCIgZmlsbC1vcGFjaXR5PSIwLjgxNjUxOTQ3NSIgZmlsbD0iI0ZGRkZGRiI+PC9wYXRoPlxuICA8L2c+XG48L3N2Zz5cbjwvZGl2PlxuPGRpdiBjbGFzcz0iZHotZXJyb3ItbWFyayI+XG48c3ZnIHdpZHRoPSI1NHB4IiBoZWlnaHQ9IjU0cHgiIHZpZXdCb3g9IjAgMCA1NCA1NCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj5cbiAgPHRpdGxlPkVycm9yPC90aXRsZT5cbiAgPGcgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+XG4gICAgPGcgc3Ryb2tlPSIjNzQ3NDc0IiBzdHJva2Utb3BhY2l0eT0iMC4xOTg3OTQxNTgiIGZpbGw9IiNGRkZGRkYiIGZpbGwtb3BhY2l0eT0iMC44MTY1MTk0NzUiPlxuICAgICAgPHBhdGggZD0iTTMyLjY1Njg1NDIsMjkgTDM4LjMxMDY5NzgsMjMuMzQ2MTU2NCBDMzkuODc3MTAyMSwyMS43Nzk3NTIxIDM5Ljg3NTgwNTcsMTkuMjQ4Mzg4NyAzOC4zMTM3MDg1LDE3LjY4NjI5MTUgQzM2Ljc1NDc4OTksMTYuMTI3MzcyOSAzNC4yMTc2MDM1LDE2LjEyNTU0MjIgMzIuNjUzODQzNiwxNy42ODkzMDIyIEwyNywyMy4zNDMxNDU4IEwyMS4zNDYxNTY0LDE3LjY4OTMwMjIgQzE5Ljc4MjM5NjUsMTYuMTI1NTQyMiAxNy4yNDUyMTAxLDE2LjEyNzM3MjkgMTUuNjg2MjkxNSwxNy42ODYyOTE1IEMxNC4xMjQxOTQzLDE5LjI0ODM4ODcgMTQuMTIyODk3OSwyMS43Nzk3NTIxIDE1LjY4OTMwMjIsMjMuMzQ2MTU2NCBMMjEuMzQzMTQ1OCwyOSBMMTUuNjg5MzAyMiwzNC42NTM4NDM2IEMxNC4xMjI4OTc5LDM2LjIyMDI0NzkgMTQuMTI0MTk0MywzOC43NTE2MTEzIDE1LjY4NjI5MTUsNDAuMzEzNzA4NSBDMTcuMjQ1MjEwMSw0MS44NzI2MjcxIDE5Ljc4MjM5NjUsNDEuODc0NDU3OCAyMS4zNDYxNTY0LDQwLjMxMDY5NzggTDI3LDM0LjY1Njg1NDIgTDMyLjY1Mzg0MzYsNDAuMzEwNjk3OCBDMzQuMjE3NjAzNSw0MS44NzQ0NTc4IDM2Ljc1NDc4OTksNDEuODcyNjI3MSAzOC4zMTM3MDg1LDQwLjMxMzcwODUgQzM5Ljg3NTgwNTcsMzguNzUxNjExMyAzOS44NzcxMDIxLDM2LjIyMDI0NzkgMzguMzEwNjk3OCwzNC42NTM4NDM2IEwzMi42NTY4NTQyLDI5IFogTTI3LDUzIEM0MS4zNTk0MDM1LDUzIDUzLDQxLjM1OTQwMzUgNTMsMjcgQzUzLDEyLjY0MDU5NjUgNDEuMzU5NDAzNSwxIDI3LDEgQzEyLjY0MDU5NjUsMSAxLDEyLjY0MDU5NjUgMSwyNyBDMSw0MS4zNTk0MDM1IDEyLjY0MDU5NjUsNTMgMjcsNTMgWiI+PC9wYXRoPlxuICAgIDwvZz5cbiAgPC9nPlxuPC9zdmc+XG48L2Rpdj5cbjwvZGl2PicsZHJvcDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImR6LWRyYWctaG92ZXIiKX0sZHJhZ3N0YXJ0OmZ1bmN0aW9uKHQpe30sZHJhZ2VuZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImR6LWRyYWctaG92ZXIiKX0sZHJhZ2VudGVyOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiZHotZHJhZy1ob3ZlciIpfSxkcmFnb3ZlcjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImR6LWRyYWctaG92ZXIiKX0sZHJhZ2xlYXZlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiZHotZHJhZy1ob3ZlciIpfSxwYXN0ZTpmdW5jdGlvbih0KXt9LHJlc2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJkei1zdGFydGVkIil9LGFkZGVkZmlsZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzO2lmKHRoaXMuZWxlbWVudD09PXRoaXMucHJldmlld3NDb250YWluZXImJnRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJkei1zdGFydGVkIiksdGhpcy5wcmV2aWV3c0NvbnRhaW5lciYmIXRoaXMub3B0aW9ucy5kaXNhYmxlUHJldmlld3Mpe3QucHJldmlld0VsZW1lbnQ9dy5jcmVhdGVFbGVtZW50KHRoaXMub3B0aW9ucy5wcmV2aWV3VGVtcGxhdGUudHJpbSgpKSx0LnByZXZpZXdUZW1wbGF0ZT10LnByZXZpZXdFbGVtZW50LHRoaXMucHJldmlld3NDb250YWluZXIuYXBwZW5kQ2hpbGQodC5wcmV2aWV3RWxlbWVudCk7dmFyIG4saT1zKHQucHJldmlld0VsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtZHotbmFtZV0iKSwhMCk7dHJ5e2ZvcihpLnMoKTshKG49aS5uKCkpLmRvbmU7KXt2YXIgcj1uLnZhbHVlO3IudGV4dENvbnRlbnQ9dC5uYW1lfX1jYXRjaCh0KXtpLmUodCl9ZmluYWxseXtpLmYoKX12YXIgbyxhPXModC5wcmV2aWV3RWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1kei1zaXplXSIpLCEwKTt0cnl7Zm9yKGEucygpOyEobz1hLm4oKSkuZG9uZTspKHI9by52YWx1ZSkuaW5uZXJIVE1MPXRoaXMuZmlsZXNpemUodC5zaXplKX1jYXRjaCh0KXthLmUodCl9ZmluYWxseXthLmYoKX10aGlzLm9wdGlvbnMuYWRkUmVtb3ZlTGlua3MmJih0Ll9yZW1vdmVMaW5rPXcuY3JlYXRlRWxlbWVudCgnPGEgY2xhc3M9ImR6LXJlbW92ZSIgaHJlZj0iamF2YXNjcmlwdDp1bmRlZmluZWQ7IiBkYXRhLWR6LXJlbW92ZT4nLmNvbmNhdCh0aGlzLm9wdGlvbnMuZGljdFJlbW92ZUZpbGUsIjwvYT4iKSksdC5wcmV2aWV3RWxlbWVudC5hcHBlbmRDaGlsZCh0Ll9yZW1vdmVMaW5rKSk7dmFyIGwsYz1mdW5jdGlvbihuKXtyZXR1cm4gbi5wcmV2ZW50RGVmYXVsdCgpLG4uc3RvcFByb3BhZ2F0aW9uKCksdC5zdGF0dXM9PT13LlVQTE9BRElORz93LmNvbmZpcm0oZS5vcHRpb25zLmRpY3RDYW5jZWxVcGxvYWRDb25maXJtYXRpb24sKGZ1bmN0aW9uKCl7cmV0dXJuIGUucmVtb3ZlRmlsZSh0KX0pKTplLm9wdGlvbnMuZGljdFJlbW92ZUZpbGVDb25maXJtYXRpb24/dy5jb25maXJtKGUub3B0aW9ucy5kaWN0UmVtb3ZlRmlsZUNvbmZpcm1hdGlvbiwoZnVuY3Rpb24oKXtyZXR1cm4gZS5yZW1vdmVGaWxlKHQpfSkpOmUucmVtb3ZlRmlsZSh0KX0sdT1zKHQucHJldmlld0VsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtZHotcmVtb3ZlXSIpLCEwKTt0cnl7Zm9yKHUucygpOyEobD11Lm4oKSkuZG9uZTspbC52YWx1ZS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsYyl9Y2F0Y2godCl7dS5lKHQpfWZpbmFsbHl7dS5mKCl9fX0scmVtb3ZlZGZpbGU6ZnVuY3Rpb24odCl7cmV0dXJuIG51bGwhPXQucHJldmlld0VsZW1lbnQmJm51bGwhPXQucHJldmlld0VsZW1lbnQucGFyZW50Tm9kZSYmdC5wcmV2aWV3RWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQucHJldmlld0VsZW1lbnQpLHRoaXMuX3VwZGF0ZU1heEZpbGVzUmVhY2hlZENsYXNzKCl9LHRodW1ibmFpbDpmdW5jdGlvbih0LGUpe2lmKHQucHJldmlld0VsZW1lbnQpe3QucHJldmlld0VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiZHotZmlsZS1wcmV2aWV3Iik7dmFyIG4saT1zKHQucHJldmlld0VsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtZHotdGh1bWJuYWlsXSIpLCEwKTt0cnl7Zm9yKGkucygpOyEobj1pLm4oKSkuZG9uZTspe3ZhciByPW4udmFsdWU7ci5hbHQ9dC5uYW1lLHIuc3JjPWV9fWNhdGNoKHQpe2kuZSh0KX1maW5hbGx5e2kuZigpfXJldHVybiBzZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiB0LnByZXZpZXdFbGVtZW50LmNsYXNzTGlzdC5hZGQoImR6LWltYWdlLXByZXZpZXciKX0pLDEpfX0sZXJyb3I6ZnVuY3Rpb24odCxlKXtpZih0LnByZXZpZXdFbGVtZW50KXt0LnByZXZpZXdFbGVtZW50LmNsYXNzTGlzdC5hZGQoImR6LWVycm9yIiksInN0cmluZyIhPXR5cGVvZiBlJiZlLmVycm9yJiYoZT1lLmVycm9yKTt2YXIgbixpPXModC5wcmV2aWV3RWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1kei1lcnJvcm1lc3NhZ2VdIiksITApO3RyeXtmb3IoaS5zKCk7IShuPWkubigpKS5kb25lOyluLnZhbHVlLnRleHRDb250ZW50PWV9Y2F0Y2godCl7aS5lKHQpfWZpbmFsbHl7aS5mKCl9fX0sZXJyb3JtdWx0aXBsZTpmdW5jdGlvbigpe30scHJvY2Vzc2luZzpmdW5jdGlvbih0KXtpZih0LnByZXZpZXdFbGVtZW50JiYodC5wcmV2aWV3RWxlbWVudC5jbGFzc0xpc3QuYWRkKCJkei1wcm9jZXNzaW5nIiksdC5fcmVtb3ZlTGluaykpcmV0dXJuIHQuX3JlbW92ZUxpbmsuaW5uZXJIVE1MPXRoaXMub3B0aW9ucy5kaWN0Q2FuY2VsVXBsb2FkfSxwcm9jZXNzaW5nbXVsdGlwbGU6ZnVuY3Rpb24oKXt9LHVwbG9hZHByb2dyZXNzOmZ1bmN0aW9uKHQsZSxuKXtpZih0LnByZXZpZXdFbGVtZW50KXt2YXIgaSxyPXModC5wcmV2aWV3RWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1kei11cGxvYWRwcm9ncmVzc10iKSwhMCk7dHJ5e2ZvcihyLnMoKTshKGk9ci5uKCkpLmRvbmU7KXt2YXIgbz1pLnZhbHVlOyJQUk9HUkVTUyI9PT1vLm5vZGVOYW1lP28udmFsdWU9ZTpvLnN0eWxlLndpZHRoPSIiLmNvbmNhdChlLCIlIil9fWNhdGNoKHQpe3IuZSh0KX1maW5hbGx5e3IuZigpfX19LHRvdGFsdXBsb2FkcHJvZ3Jlc3M6ZnVuY3Rpb24oKXt9LHNlbmRpbmc6ZnVuY3Rpb24oKXt9LHNlbmRpbmdtdWx0aXBsZTpmdW5jdGlvbigpe30sc3VjY2VzczpmdW5jdGlvbih0KXtpZih0LnByZXZpZXdFbGVtZW50KXJldHVybiB0LnByZXZpZXdFbGVtZW50LmNsYXNzTGlzdC5hZGQoImR6LXN1Y2Nlc3MiKX0sc3VjY2Vzc211bHRpcGxlOmZ1bmN0aW9uKCl7fSxjYW5jZWxlZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5lbWl0KCJlcnJvciIsdCx0aGlzLm9wdGlvbnMuZGljdFVwbG9hZENhbmNlbGVkKX0sY2FuY2VsZWRtdWx0aXBsZTpmdW5jdGlvbigpe30sY29tcGxldGU6ZnVuY3Rpb24odCl7aWYodC5fcmVtb3ZlTGluayYmKHQuX3JlbW92ZUxpbmsuaW5uZXJIVE1MPXRoaXMub3B0aW9ucy5kaWN0UmVtb3ZlRmlsZSksdC5wcmV2aWV3RWxlbWVudClyZXR1cm4gdC5wcmV2aWV3RWxlbWVudC5jbGFzc0xpc3QuYWRkKCJkei1jb21wbGV0ZSIpfSxjb21wbGV0ZW11bHRpcGxlOmZ1bmN0aW9uKCl7fSxtYXhmaWxlc2V4Y2VlZGVkOmZ1bmN0aW9uKCl7fSxtYXhmaWxlc3JlYWNoZWQ6ZnVuY3Rpb24oKXt9LHF1ZXVlY29tcGxldGU6ZnVuY3Rpb24oKXt9LGFkZGVkZmlsZXM6ZnVuY3Rpb24oKXt9fTtmdW5jdGlvbiB1KHQpe3JldHVybih1PSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnQuY29uc3RydWN0b3I9PT1TeW1ib2wmJnQhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB0fSkodCl9ZnVuY3Rpb24gZCh0LGUpe3ZhciBuO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgU3ltYm9sfHxudWxsPT10W1N5bWJvbC5pdGVyYXRvcl0pe2lmKEFycmF5LmlzQXJyYXkodCl8fChuPWZ1bmN0aW9uKHQsZSl7aWYodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiBoKHQsZSk7dmFyIG49T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09biYmdC5jb25zdHJ1Y3RvciYmKG49dC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PW58fCJTZXQiPT09bj9BcnJheS5mcm9tKHQpOiJBcmd1bWVudHMiPT09bnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qobik/aCh0LGUpOnZvaWQgMH19KHQpKXx8ZSYmdCYmIm51bWJlciI9PXR5cGVvZiB0Lmxlbmd0aCl7biYmKHQ9bik7dmFyIGk9MCxyPWZ1bmN0aW9uKCl7fTtyZXR1cm57czpyLG46ZnVuY3Rpb24oKXtyZXR1cm4gaT49dC5sZW5ndGg/e2RvbmU6ITB9Ontkb25lOiExLHZhbHVlOnRbaSsrXX19LGU6ZnVuY3Rpb24odCl7dGhyb3cgdH0sZjpyfX10aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gaXRlcmF0ZSBub24taXRlcmFibGUgaW5zdGFuY2UuXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuIil9dmFyIG8sYT0hMCxzPSExO3JldHVybntzOmZ1bmN0aW9uKCl7bj10W1N5bWJvbC5pdGVyYXRvcl0oKX0sbjpmdW5jdGlvbigpe3ZhciB0PW4ubmV4dCgpO3JldHVybiBhPXQuZG9uZSx0fSxlOmZ1bmN0aW9uKHQpe3M9ITAsbz10fSxmOmZ1bmN0aW9uKCl7dHJ5e2F8fG51bGw9PW4ucmV0dXJufHxuLnJldHVybigpfWZpbmFsbHl7aWYocyl0aHJvdyBvfX19fWZ1bmN0aW9uIGgodCxlKXsobnVsbD09ZXx8ZT50Lmxlbmd0aCkmJihlPXQubGVuZ3RoKTtmb3IodmFyIG49MCxpPW5ldyBBcnJheShlKTtuPGU7bisrKWlbbl09dFtuXTtyZXR1cm4gaX1mdW5jdGlvbiBmKHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gcCh0LGUpe2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgaT1lW25dO2kuZW51bWVyYWJsZT1pLmVudW1lcmFibGV8fCExLGkuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBpJiYoaS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsaS5rZXksaSl9fWZ1bmN0aW9uIGcodCxlLG4pe3JldHVybiBlJiZwKHQucHJvdG90eXBlLGUpLG4mJnAodCxuKSx0fWZ1bmN0aW9uIG0odCxlKXtyZXR1cm4obT1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuX19wcm90b19fPWUsdH0pKHQsZSl9ZnVuY3Rpb24gdih0LGUpe3JldHVybiFlfHwib2JqZWN0IiE9PXUoZSkmJiJmdW5jdGlvbiIhPXR5cGVvZiBlP3kodCk6ZX1mdW5jdGlvbiB5KHQpe2lmKHZvaWQgMD09PXQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4gdH1mdW5jdGlvbiBiKHQpe3JldHVybihiPU9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3QuZ2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24odCl7cmV0dXJuIHQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCl9KSh0KX12YXIgdz1mdW5jdGlvbih0KXshZnVuY3Rpb24odCxlKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSYmbnVsbCE9PWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24iKTt0LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGUmJmUucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksZSYmbSh0LGUpfShuLHQpO3ZhciBlPWZ1bmN0aW9uKHQpe3ZhciBlPWZ1bmN0aW9uKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBSZWZsZWN0fHwhUmVmbGVjdC5jb25zdHJ1Y3QpcmV0dXJuITE7aWYoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSlyZXR1cm4hMTtpZigiZnVuY3Rpb24iPT10eXBlb2YgUHJveHkpcmV0dXJuITA7dHJ5e3JldHVybiBEYXRlLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKFJlZmxlY3QuY29uc3RydWN0KERhdGUsW10sKGZ1bmN0aW9uKCl7fSkpKSwhMH1jYXRjaCh0KXtyZXR1cm4hMX19KCk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG4saT1iKHQpO2lmKGUpe3ZhciByPWIodGhpcykuY29uc3RydWN0b3I7bj1SZWZsZWN0LmNvbnN0cnVjdChpLGFyZ3VtZW50cyxyKX1lbHNlIG49aS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIHYodGhpcyxuKX19KG4pO2Z1bmN0aW9uIG4odCxpKXt2YXIgcixvLGE7aWYoZih0aGlzLG4pLChyPWUuY2FsbCh0aGlzKSkuZWxlbWVudD10LHIudmVyc2lvbj1uLnZlcnNpb24sci5jbGlja2FibGVFbGVtZW50cz1bXSxyLmxpc3RlbmVycz1bXSxyLmZpbGVzPVtdLCJzdHJpbmciPT10eXBlb2Ygci5lbGVtZW50JiYoci5lbGVtZW50PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioci5lbGVtZW50KSksIXIuZWxlbWVudHx8bnVsbD09ci5lbGVtZW50Lm5vZGVUeXBlKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBkcm9wem9uZSBlbGVtZW50LiIpO2lmKHIuZWxlbWVudC5kcm9wem9uZSl0aHJvdyBuZXcgRXJyb3IoIkRyb3B6b25lIGFscmVhZHkgYXR0YWNoZWQuIik7bi5pbnN0YW5jZXMucHVzaCh5KHIpKSxyLmVsZW1lbnQuZHJvcHpvbmU9eShyKTt2YXIgcz1udWxsIT0oYT1uLm9wdGlvbnNGb3JFbGVtZW50KHIuZWxlbWVudCkpP2E6e307aWYoci5vcHRpb25zPW4uZXh0ZW5kKHt9LGMscyxudWxsIT1pP2k6e30pLHIub3B0aW9ucy5wcmV2aWV3VGVtcGxhdGU9ci5vcHRpb25zLnByZXZpZXdUZW1wbGF0ZS5yZXBsYWNlKC9cbiovZywiIiksci5vcHRpb25zLmZvcmNlRmFsbGJhY2t8fCFuLmlzQnJvd3NlclN1cHBvcnRlZCgpKXJldHVybiB2KHIsci5vcHRpb25zLmZhbGxiYWNrLmNhbGwoeShyKSkpO2lmKG51bGw9PXIub3B0aW9ucy51cmwmJihyLm9wdGlvbnMudXJsPXIuZWxlbWVudC5nZXRBdHRyaWJ1dGUoImFjdGlvbiIpKSwhci5vcHRpb25zLnVybCl0aHJvdyBuZXcgRXJyb3IoIk5vIFVSTCBwcm92aWRlZC4iKTtpZihyLm9wdGlvbnMuYWNjZXB0ZWRGaWxlcyYmci5vcHRpb25zLmFjY2VwdGVkTWltZVR5cGVzKXRocm93IG5ldyBFcnJvcigiWW91IGNhbid0IHByb3ZpZGUgYm90aCAnYWNjZXB0ZWRGaWxlcycgYW5kICdhY2NlcHRlZE1pbWVUeXBlcycuICdhY2NlcHRlZE1pbWVUeXBlcycgaXMgZGVwcmVjYXRlZC4iKTtpZihyLm9wdGlvbnMudXBsb2FkTXVsdGlwbGUmJnIub3B0aW9ucy5jaHVua2luZyl0aHJvdyBuZXcgRXJyb3IoIllvdSBjYW5ub3Qgc2V0IGJvdGg6IHVwbG9hZE11bHRpcGxlIGFuZCBjaHVua2luZy4iKTtyZXR1cm4gci5vcHRpb25zLmFjY2VwdGVkTWltZVR5cGVzJiYoci5vcHRpb25zLmFjY2VwdGVkRmlsZXM9ci5vcHRpb25zLmFjY2VwdGVkTWltZVR5cGVzLGRlbGV0ZSByLm9wdGlvbnMuYWNjZXB0ZWRNaW1lVHlwZXMpLG51bGwhPXIub3B0aW9ucy5yZW5hbWVGaWxlbmFtZSYmKHIub3B0aW9ucy5yZW5hbWVGaWxlPWZ1bmN0aW9uKHQpe3JldHVybiByLm9wdGlvbnMucmVuYW1lRmlsZW5hbWUuY2FsbCh5KHIpLHQubmFtZSx0KX0pLCJzdHJpbmciPT10eXBlb2Ygci5vcHRpb25zLm1ldGhvZCYmKHIub3B0aW9ucy5tZXRob2Q9ci5vcHRpb25zLm1ldGhvZC50b1VwcGVyQ2FzZSgpKSwobz1yLmdldEV4aXN0aW5nRmFsbGJhY2soKSkmJm8ucGFyZW50Tm9kZSYmby5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG8pLCExIT09ci5vcHRpb25zLnByZXZpZXdzQ29udGFpbmVyJiYoci5vcHRpb25zLnByZXZpZXdzQ29udGFpbmVyP3IucHJldmlld3NDb250YWluZXI9bi5nZXRFbGVtZW50KHIub3B0aW9ucy5wcmV2aWV3c0NvbnRhaW5lciwicHJldmlld3NDb250YWluZXIiKTpyLnByZXZpZXdzQ29udGFpbmVyPXIuZWxlbWVudCksci5vcHRpb25zLmNsaWNrYWJsZSYmKCEwPT09ci5vcHRpb25zLmNsaWNrYWJsZT9yLmNsaWNrYWJsZUVsZW1lbnRzPVtyLmVsZW1lbnRdOnIuY2xpY2thYmxlRWxlbWVudHM9bi5nZXRFbGVtZW50cyhyLm9wdGlvbnMuY2xpY2thYmxlLCJjbGlja2FibGUiKSksci5pbml0KCkscn1yZXR1cm4gZyhuLFt7a2V5OiJnZXRBY2NlcHRlZEZpbGVzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmZpbGVzLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHQuYWNjZXB0ZWR9KSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdH0pKX19LHtrZXk6ImdldFJlamVjdGVkRmlsZXMiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsZXMuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4hdC5hY2NlcHRlZH0pKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0fSkpfX0se2tleToiZ2V0RmlsZXNXaXRoU3RhdHVzIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5maWxlcy5maWx0ZXIoKGZ1bmN0aW9uKGUpe3JldHVybiBlLnN0YXR1cz09PXR9KSkubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gdH0pKX19LHtrZXk6ImdldFF1ZXVlZEZpbGVzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldEZpbGVzV2l0aFN0YXR1cyhuLlFVRVVFRCl9fSx7a2V5OiJnZXRVcGxvYWRpbmdGaWxlcyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRGaWxlc1dpdGhTdGF0dXMobi5VUExPQURJTkcpfX0se2tleToiZ2V0QWRkZWRGaWxlcyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRGaWxlc1dpdGhTdGF0dXMobi5BRERFRCl9fSx7a2V5OiJnZXRBY3RpdmVGaWxlcyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5maWxlcy5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnN0YXR1cz09PW4uVVBMT0FESU5HfHx0LnN0YXR1cz09PW4uUVVFVUVEfSkpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHR9KSl9fSx7a2V5OiJpbml0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7ImZvcm0iPT09dGhpcy5lbGVtZW50LnRhZ05hbWUmJnRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoImVuY3R5cGUiLCJtdWx0aXBhcnQvZm9ybS1kYXRhIiksdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygiZHJvcHpvbmUiKSYmIXRoaXMuZWxlbWVudC5xdWVyeVNlbGVjdG9yKCIuZHotbWVzc2FnZSIpJiZ0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQobi5jcmVhdGVFbGVtZW50KCc8ZGl2IGNsYXNzPSJkei1kZWZhdWx0IGR6LW1lc3NhZ2UiPjxidXR0b24gY2xhc3M9ImR6LWJ1dHRvbiIgdHlwZT0iYnV0dG9uIj4nLmNvbmNhdCh0aGlzLm9wdGlvbnMuZGljdERlZmF1bHRNZXNzYWdlLCI8L2J1dHRvbj48L2Rpdj4iKSkpLHRoaXMuY2xpY2thYmxlRWxlbWVudHMubGVuZ3RoJiZmdW5jdGlvbiBlKCl7dC5oaWRkZW5GaWxlSW5wdXQmJnQuaGlkZGVuRmlsZUlucHV0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodC5oaWRkZW5GaWxlSW5wdXQpLHQuaGlkZGVuRmlsZUlucHV0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0IiksdC5oaWRkZW5GaWxlSW5wdXQuc2V0QXR0cmlidXRlKCJ0eXBlIiwiZmlsZSIpLChudWxsPT09dC5vcHRpb25zLm1heEZpbGVzfHx0Lm9wdGlvbnMubWF4RmlsZXM+MSkmJnQuaGlkZGVuRmlsZUlucHV0LnNldEF0dHJpYnV0ZSgibXVsdGlwbGUiLCJtdWx0aXBsZSIpLHQuaGlkZGVuRmlsZUlucHV0LmNsYXNzTmFtZT0iZHotaGlkZGVuLWlucHV0IixudWxsIT09dC5vcHRpb25zLmFjY2VwdGVkRmlsZXMmJnQuaGlkZGVuRmlsZUlucHV0LnNldEF0dHJpYnV0ZSgiYWNjZXB0Iix0Lm9wdGlvbnMuYWNjZXB0ZWRGaWxlcyksbnVsbCE9PXQub3B0aW9ucy5jYXB0dXJlJiZ0LmhpZGRlbkZpbGVJbnB1dC5zZXRBdHRyaWJ1dGUoImNhcHR1cmUiLHQub3B0aW9ucy5jYXB0dXJlKSx0LmhpZGRlbkZpbGVJbnB1dC5zZXRBdHRyaWJ1dGUoInRhYmluZGV4IiwiLTEiKSx0LmhpZGRlbkZpbGVJbnB1dC5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iLHQuaGlkZGVuRmlsZUlucHV0LnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsdC5oaWRkZW5GaWxlSW5wdXQuc3R5bGUudG9wPSIwIix0LmhpZGRlbkZpbGVJbnB1dC5zdHlsZS5sZWZ0PSIwIix0LmhpZGRlbkZpbGVJbnB1dC5zdHlsZS5oZWlnaHQ9IjAiLHQuaGlkZGVuRmlsZUlucHV0LnN0eWxlLndpZHRoPSIwIixuLmdldEVsZW1lbnQodC5vcHRpb25zLmhpZGRlbklucHV0Q29udGFpbmVyLCJoaWRkZW5JbnB1dENvbnRhaW5lciIpLmFwcGVuZENoaWxkKHQuaGlkZGVuRmlsZUlucHV0KSx0LmhpZGRlbkZpbGVJbnB1dC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLChmdW5jdGlvbigpe3ZhciBuPXQuaGlkZGVuRmlsZUlucHV0LmZpbGVzO2lmKG4ubGVuZ3RoKXt2YXIgaSxyPWQobiwhMCk7dHJ5e2ZvcihyLnMoKTshKGk9ci5uKCkpLmRvbmU7KXt2YXIgbz1pLnZhbHVlO3QuYWRkRmlsZShvKX19Y2F0Y2godCl7ci5lKHQpfWZpbmFsbHl7ci5mKCl9fXQuZW1pdCgiYWRkZWRmaWxlcyIsbiksZSgpfSkpfSgpLHRoaXMuVVJMPW51bGwhPT13aW5kb3cuVVJMP3dpbmRvdy5VUkw6d2luZG93LndlYmtpdFVSTDt2YXIgZSxpPWQodGhpcy5ldmVudHMsITApO3RyeXtmb3IoaS5zKCk7IShlPWkubigpKS5kb25lOyl7dmFyIHI9ZS52YWx1ZTt0aGlzLm9uKHIsdGhpcy5vcHRpb25zW3JdKX19Y2F0Y2godCl7aS5lKHQpfWZpbmFsbHl7aS5mKCl9dGhpcy5vbigidXBsb2FkcHJvZ3Jlc3MiLChmdW5jdGlvbigpe3JldHVybiB0LnVwZGF0ZVRvdGFsVXBsb2FkUHJvZ3Jlc3MoKX0pKSx0aGlzLm9uKCJyZW1vdmVkZmlsZSIsKGZ1bmN0aW9uKCl7cmV0dXJuIHQudXBkYXRlVG90YWxVcGxvYWRQcm9ncmVzcygpfSkpLHRoaXMub24oImNhbmNlbGVkIiwoZnVuY3Rpb24oZSl7cmV0dXJuIHQuZW1pdCgiY29tcGxldGUiLGUpfSkpLHRoaXMub24oImNvbXBsZXRlIiwoZnVuY3Rpb24oZSl7aWYoMD09PXQuZ2V0QWRkZWRGaWxlcygpLmxlbmd0aCYmMD09PXQuZ2V0VXBsb2FkaW5nRmlsZXMoKS5sZW5ndGgmJjA9PT10LmdldFF1ZXVlZEZpbGVzKCkubGVuZ3RoKXJldHVybiBzZXRUaW1lb3V0KChmdW5jdGlvbigpe3JldHVybiB0LmVtaXQoInF1ZXVlY29tcGxldGUiKX0pLDApfSkpO3ZhciBvPWZ1bmN0aW9uKHQpe2lmKGZ1bmN0aW9uKHQpe2lmKHQuZGF0YVRyYW5zZmVyLnR5cGVzKWZvcih2YXIgZT0wO2U8dC5kYXRhVHJhbnNmZXIudHlwZXMubGVuZ3RoO2UrKylpZigiRmlsZXMiPT09dC5kYXRhVHJhbnNmZXIudHlwZXNbZV0pcmV0dXJuITA7cmV0dXJuITF9KHQpKXJldHVybiB0LnN0b3BQcm9wYWdhdGlvbigpLHQucHJldmVudERlZmF1bHQ/dC5wcmV2ZW50RGVmYXVsdCgpOnQucmV0dXJuVmFsdWU9ITF9O3JldHVybiB0aGlzLmxpc3RlbmVycz1be2VsZW1lbnQ6dGhpcy5lbGVtZW50LGV2ZW50czp7ZHJhZ3N0YXJ0OmZ1bmN0aW9uKGUpe3JldHVybiB0LmVtaXQoImRyYWdzdGFydCIsZSl9LGRyYWdlbnRlcjpmdW5jdGlvbihlKXtyZXR1cm4gbyhlKSx0LmVtaXQoImRyYWdlbnRlciIsZSl9LGRyYWdvdmVyOmZ1bmN0aW9uKGUpe3ZhciBuO3RyeXtuPWUuZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWR9Y2F0Y2godCl7fXJldHVybiBlLmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0PSJtb3ZlIj09PW58fCJsaW5rTW92ZSI9PT1uPyJtb3ZlIjoiY29weSIsbyhlKSx0LmVtaXQoImRyYWdvdmVyIixlKX0sZHJhZ2xlYXZlOmZ1bmN0aW9uKGUpe3JldHVybiB0LmVtaXQoImRyYWdsZWF2ZSIsZSl9LGRyb3A6ZnVuY3Rpb24oZSl7cmV0dXJuIG8oZSksdC5kcm9wKGUpfSxkcmFnZW5kOmZ1bmN0aW9uKGUpe3JldHVybiB0LmVtaXQoImRyYWdlbmQiLGUpfX19XSx0aGlzLmNsaWNrYWJsZUVsZW1lbnRzLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiB0Lmxpc3RlbmVycy5wdXNoKHtlbGVtZW50OmUsZXZlbnRzOntjbGljazpmdW5jdGlvbihpKXtyZXR1cm4oZSE9PXQuZWxlbWVudHx8aS50YXJnZXQ9PT10LmVsZW1lbnR8fG4uZWxlbWVudEluc2lkZShpLnRhcmdldCx0LmVsZW1lbnQucXVlcnlTZWxlY3RvcigiLmR6LW1lc3NhZ2UiKSkpJiZ0LmhpZGRlbkZpbGVJbnB1dC5jbGljaygpLCEwfX19KX0pKSx0aGlzLmVuYWJsZSgpLHRoaXMub3B0aW9ucy5pbml0LmNhbGwodGhpcyl9fSx7a2V5OiJkZXN0cm95Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRpc2FibGUoKSx0aGlzLnJlbW92ZUFsbEZpbGVzKCEwKSwobnVsbCE9dGhpcy5oaWRkZW5GaWxlSW5wdXQ/dGhpcy5oaWRkZW5GaWxlSW5wdXQucGFyZW50Tm9kZTp2b2lkIDApJiYodGhpcy5oaWRkZW5GaWxlSW5wdXQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmhpZGRlbkZpbGVJbnB1dCksdGhpcy5oaWRkZW5GaWxlSW5wdXQ9bnVsbCksZGVsZXRlIHRoaXMuZWxlbWVudC5kcm9wem9uZSxuLmluc3RhbmNlcy5zcGxpY2Uobi5pbnN0YW5jZXMuaW5kZXhPZih0aGlzKSwxKX19LHtrZXk6InVwZGF0ZVRvdGFsVXBsb2FkUHJvZ3Jlc3MiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQsZT0wLG49MDtpZih0aGlzLmdldEFjdGl2ZUZpbGVzKCkubGVuZ3RoKXt2YXIgaSxyPWQodGhpcy5nZXRBY3RpdmVGaWxlcygpLCEwKTt0cnl7Zm9yKHIucygpOyEoaT1yLm4oKSkuZG9uZTspe3ZhciBvPWkudmFsdWU7ZSs9by51cGxvYWQuYnl0ZXNTZW50LG4rPW8udXBsb2FkLnRvdGFsfX1jYXRjaCh0KXtyLmUodCl9ZmluYWxseXtyLmYoKX10PTEwMCplL259ZWxzZSB0PTEwMDtyZXR1cm4gdGhpcy5lbWl0KCJ0b3RhbHVwbG9hZHByb2dyZXNzIix0LG4sZSl9fSx7a2V5OiJfZ2V0UGFyYW1OYW1lIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5vcHRpb25zLnBhcmFtTmFtZT90aGlzLm9wdGlvbnMucGFyYW1OYW1lKHQpOiIiLmNvbmNhdCh0aGlzLm9wdGlvbnMucGFyYW1OYW1lKS5jb25jYXQodGhpcy5vcHRpb25zLnVwbG9hZE11bHRpcGxlPyJbIi5jb25jYXQodCwiXSIpOiIiKX19LHtrZXk6Il9yZW5hbWVGaWxlIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgdGhpcy5vcHRpb25zLnJlbmFtZUZpbGU/dC5uYW1lOnRoaXMub3B0aW9ucy5yZW5hbWVGaWxlKHQpfX0se2tleToiZ2V0RmFsbGJhY2tGb3JtIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0LGU7aWYodD10aGlzLmdldEV4aXN0aW5nRmFsbGJhY2soKSlyZXR1cm4gdDt2YXIgaT0nPGRpdiBjbGFzcz0iZHotZmFsbGJhY2siPic7dGhpcy5vcHRpb25zLmRpY3RGYWxsYmFja1RleHQmJihpKz0iPHA+Ii5jb25jYXQodGhpcy5vcHRpb25zLmRpY3RGYWxsYmFja1RleHQsIjwvcD4iKSksaSs9JzxpbnB1dCB0eXBlPSJmaWxlIiBuYW1lPSInLmNvbmNhdCh0aGlzLl9nZXRQYXJhbU5hbWUoMCksJyIgJykuY29uY2F0KHRoaXMub3B0aW9ucy51cGxvYWRNdWx0aXBsZT8nbXVsdGlwbGU9Im11bHRpcGxlIic6dm9pZCAwLCcgLz48aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iVXBsb2FkISI+PC9kaXY+Jyk7dmFyIHI9bi5jcmVhdGVFbGVtZW50KGkpO3JldHVybiJGT1JNIiE9PXRoaXMuZWxlbWVudC50YWdOYW1lPyhlPW4uY3JlYXRlRWxlbWVudCgnPGZvcm0gYWN0aW9uPSInLmNvbmNhdCh0aGlzLm9wdGlvbnMudXJsLCciIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG1ldGhvZD0iJykuY29uY2F0KHRoaXMub3B0aW9ucy5tZXRob2QsJyI+PC9mb3JtPicpKSkuYXBwZW5kQ2hpbGQocik6KHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoImVuY3R5cGUiLCJtdWx0aXBhcnQvZm9ybS1kYXRhIiksdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgibWV0aG9kIix0aGlzLm9wdGlvbnMubWV0aG9kKSksbnVsbCE9ZT9lOnJ9fSx7a2V5OiJnZXRFeGlzdGluZ0ZhbGxiYWNrIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgdD1mdW5jdGlvbih0KXt2YXIgZSxuPWQodCwhMCk7dHJ5e2ZvcihuLnMoKTshKGU9bi5uKCkpLmRvbmU7KXt2YXIgaT1lLnZhbHVlO2lmKC8oXnwgKWZhbGxiYWNrKCR8ICkvLnRlc3QoaS5jbGFzc05hbWUpKXJldHVybiBpfX1jYXRjaCh0KXtuLmUodCl9ZmluYWxseXtuLmYoKX19LGU9MCxuPVsiZGl2IiwiZm9ybSJdO2U8bi5sZW5ndGg7ZSsrKXt2YXIgaSxyPW5bZV07aWYoaT10KHRoaXMuZWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShyKSkpcmV0dXJuIGl9fX0se2tleToic2V0dXBFdmVudExpc3RlbmVycyIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5saXN0ZW5lcnMubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT1bXTtmb3IodmFyIG4gaW4gdC5ldmVudHMpe3ZhciBpPXQuZXZlbnRzW25dO2UucHVzaCh0LmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihuLGksITEpKX1yZXR1cm4gZX0oKX0pKX19LHtrZXk6InJlbW92ZUV2ZW50TGlzdGVuZXJzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxpc3RlbmVycy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPVtdO2Zvcih2YXIgbiBpbiB0LmV2ZW50cyl7dmFyIGk9dC5ldmVudHNbbl07ZS5wdXNoKHQuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKG4saSwhMSkpfXJldHVybiBlfSgpfSkpfX0se2tleToiZGlzYWJsZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3JldHVybiB0aGlzLmNsaWNrYWJsZUVsZW1lbnRzLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiB0LmNsYXNzTGlzdC5yZW1vdmUoImR6LWNsaWNrYWJsZSIpfSkpLHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKSx0aGlzLmRpc2FibGVkPSEwLHRoaXMuZmlsZXMubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdC5jYW5jZWxVcGxvYWQoZSl9KSl9fSx7a2V5OiJlbmFibGUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGRlbGV0ZSB0aGlzLmRpc2FibGVkLHRoaXMuY2xpY2thYmxlRWxlbWVudHMuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIHQuY2xhc3NMaXN0LmFkZCgiZHotY2xpY2thYmxlIil9KSksdGhpcy5zZXR1cEV2ZW50TGlzdGVuZXJzKCl9fSx7a2V5OiJmaWxlc2l6ZSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9MCxuPSJiIjtpZih0PjApe2Zvcih2YXIgaT1bInRiIiwiZ2IiLCJtYiIsImtiIiwiYiJdLHI9MDtyPGkubGVuZ3RoO3IrKyl7dmFyIG89aVtyXTtpZih0Pj1NYXRoLnBvdyh0aGlzLm9wdGlvbnMuZmlsZXNpemVCYXNlLDQtcikvMTApe2U9dC9NYXRoLnBvdyh0aGlzLm9wdGlvbnMuZmlsZXNpemVCYXNlLDQtciksbj1vO2JyZWFrfX1lPU1hdGgucm91bmQoMTAqZSkvMTB9cmV0dXJuIjxzdHJvbmc+Ii5jb25jYXQoZSwiPC9zdHJvbmc+ICIpLmNvbmNhdCh0aGlzLm9wdGlvbnMuZGljdEZpbGVTaXplVW5pdHNbbl0pfX0se2tleToiX3VwZGF0ZU1heEZpbGVzUmVhY2hlZENsYXNzIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBudWxsIT10aGlzLm9wdGlvbnMubWF4RmlsZXMmJnRoaXMuZ2V0QWNjZXB0ZWRGaWxlcygpLmxlbmd0aD49dGhpcy5vcHRpb25zLm1heEZpbGVzPyh0aGlzLmdldEFjY2VwdGVkRmlsZXMoKS5sZW5ndGg9PT10aGlzLm9wdGlvbnMubWF4RmlsZXMmJnRoaXMuZW1pdCgibWF4ZmlsZXNyZWFjaGVkIix0aGlzLmZpbGVzKSx0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiZHotbWF4LWZpbGVzLXJlYWNoZWQiKSk6dGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImR6LW1heC1maWxlcy1yZWFjaGVkIil9fSx7a2V5OiJkcm9wIix2YWx1ZTpmdW5jdGlvbih0KXtpZih0LmRhdGFUcmFuc2Zlcil7dGhpcy5lbWl0KCJkcm9wIix0KTtmb3IodmFyIGU9W10sbj0wO248dC5kYXRhVHJhbnNmZXIuZmlsZXMubGVuZ3RoO24rKyllW25dPXQuZGF0YVRyYW5zZmVyLmZpbGVzW25dO2lmKGUubGVuZ3RoKXt2YXIgaT10LmRhdGFUcmFuc2Zlci5pdGVtcztpJiZpLmxlbmd0aCYmbnVsbCE9aVswXS53ZWJraXRHZXRBc0VudHJ5P3RoaXMuX2FkZEZpbGVzRnJvbUl0ZW1zKGkpOnRoaXMuaGFuZGxlRmlsZXMoZSl9dGhpcy5lbWl0KCJhZGRlZGZpbGVzIixlKX19fSx7a2V5OiJwYXN0ZSIsdmFsdWU6ZnVuY3Rpb24odCl7aWYobnVsbCE9KG51bGwhPShlPW51bGwhPXQ/dC5jbGlwYm9hcmREYXRhOnZvaWQgMCk/ZnVuY3Rpb24odCl7cmV0dXJuIHQuaXRlbXN9KGUpOnZvaWQgMCkpe3ZhciBlO3RoaXMuZW1pdCgicGFzdGUiLHQpO3ZhciBuPXQuY2xpcGJvYXJkRGF0YS5pdGVtcztyZXR1cm4gbi5sZW5ndGg/dGhpcy5fYWRkRmlsZXNGcm9tSXRlbXMobik6dm9pZCAwfX19LHtrZXk6ImhhbmRsZUZpbGVzIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxuPWQodCwhMCk7dHJ5e2ZvcihuLnMoKTshKGU9bi5uKCkpLmRvbmU7KXt2YXIgaT1lLnZhbHVlO3RoaXMuYWRkRmlsZShpKX19Y2F0Y2godCl7bi5lKHQpfWZpbmFsbHl7bi5mKCl9fX0se2tleToiX2FkZEZpbGVzRnJvbUl0ZW1zIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzO3JldHVybiBmdW5jdGlvbigpe3ZhciBuLGk9W10scj1kKHQsITApO3RyeXtmb3Ioci5zKCk7IShuPXIubigpKS5kb25lOyl7dmFyIG8sYT1uLnZhbHVlO251bGwhPWEud2Via2l0R2V0QXNFbnRyeSYmKG89YS53ZWJraXRHZXRBc0VudHJ5KCkpP28uaXNGaWxlP2kucHVzaChlLmFkZEZpbGUoYS5nZXRBc0ZpbGUoKSkpOm8uaXNEaXJlY3Rvcnk/aS5wdXNoKGUuX2FkZEZpbGVzRnJvbURpcmVjdG9yeShvLG8ubmFtZSkpOmkucHVzaCh2b2lkIDApOm51bGw9PWEuZ2V0QXNGaWxlfHxudWxsIT1hLmtpbmQmJiJmaWxlIiE9PWEua2luZD9pLnB1c2godm9pZCAwKTppLnB1c2goZS5hZGRGaWxlKGEuZ2V0QXNGaWxlKCkpKX19Y2F0Y2godCl7ci5lKHQpfWZpbmFsbHl7ci5mKCl9cmV0dXJuIGl9KCl9fSx7a2V5OiJfYWRkRmlsZXNGcm9tRGlyZWN0b3J5Iix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMsaT10LmNyZWF0ZVJlYWRlcigpLHI9ZnVuY3Rpb24odCl7cmV0dXJuImxvZyIsbj1mdW5jdGlvbihlKXtyZXR1cm4gZS5sb2codCl9LG51bGwhPShlPWNvbnNvbGUpJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5sb2c/bihlKTp2b2lkIDA7dmFyIGUsbn07cmV0dXJuIGZ1bmN0aW9uIHQoKXtyZXR1cm4gaS5yZWFkRW50cmllcygoZnVuY3Rpb24oaSl7aWYoaS5sZW5ndGg+MCl7dmFyIHIsbz1kKGksITApO3RyeXtmb3Ioby5zKCk7IShyPW8ubigpKS5kb25lOyl7dmFyIGE9ci52YWx1ZTthLmlzRmlsZT9hLmZpbGUoKGZ1bmN0aW9uKHQpe2lmKCFuLm9wdGlvbnMuaWdub3JlSGlkZGVuRmlsZXN8fCIuIiE9PXQubmFtZS5zdWJzdHJpbmcoMCwxKSlyZXR1cm4gdC5mdWxsUGF0aD0iIi5jb25jYXQoZSwiLyIpLmNvbmNhdCh0Lm5hbWUpLG4uYWRkRmlsZSh0KX0pKTphLmlzRGlyZWN0b3J5JiZuLl9hZGRGaWxlc0Zyb21EaXJlY3RvcnkoYSwiIi5jb25jYXQoZSwiLyIpLmNvbmNhdChhLm5hbWUpKX19Y2F0Y2godCl7by5lKHQpfWZpbmFsbHl7by5mKCl9dCgpfXJldHVybiBudWxsfSkscil9KCl9fSx7a2V5OiJhY2NlcHQiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dGhpcy5vcHRpb25zLm1heEZpbGVzaXplJiZ0LnNpemU+MTAyNCp0aGlzLm9wdGlvbnMubWF4RmlsZXNpemUqMTAyND9lKHRoaXMub3B0aW9ucy5kaWN0RmlsZVRvb0JpZy5yZXBsYWNlKCJ7e2ZpbGVzaXplfX0iLE1hdGgucm91bmQodC5zaXplLzEwMjQvMTAuMjQpLzEwMCkucmVwbGFjZSgie3ttYXhGaWxlc2l6ZX19Iix0aGlzLm9wdGlvbnMubWF4RmlsZXNpemUpKTpuLmlzVmFsaWRGaWxlKHQsdGhpcy5vcHRpb25zLmFjY2VwdGVkRmlsZXMpP251bGwhPXRoaXMub3B0aW9ucy5tYXhGaWxlcyYmdGhpcy5nZXRBY2NlcHRlZEZpbGVzKCkubGVuZ3RoPj10aGlzLm9wdGlvbnMubWF4RmlsZXM/KGUodGhpcy5vcHRpb25zLmRpY3RNYXhGaWxlc0V4Y2VlZGVkLnJlcGxhY2UoInt7bWF4RmlsZXN9fSIsdGhpcy5vcHRpb25zLm1heEZpbGVzKSksdGhpcy5lbWl0KCJtYXhmaWxlc2V4Y2VlZGVkIix0KSk6dGhpcy5vcHRpb25zLmFjY2VwdC5jYWxsKHRoaXMsdCxlKTplKHRoaXMub3B0aW9ucy5kaWN0SW52YWxpZEZpbGVUeXBlKX19LHtrZXk6ImFkZEZpbGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dC51cGxvYWQ9e3V1aWQ6bi51dWlkdjQoKSxwcm9ncmVzczowLHRvdGFsOnQuc2l6ZSxieXRlc1NlbnQ6MCxmaWxlbmFtZTp0aGlzLl9yZW5hbWVGaWxlKHQpfSx0aGlzLmZpbGVzLnB1c2godCksdC5zdGF0dXM9bi5BRERFRCx0aGlzLmVtaXQoImFkZGVkZmlsZSIsdCksdGhpcy5fZW5xdWV1ZVRodW1ibmFpbCh0KSx0aGlzLmFjY2VwdCh0LChmdW5jdGlvbihuKXtuPyh0LmFjY2VwdGVkPSExLGUuX2Vycm9yUHJvY2Vzc2luZyhbdF0sbikpOih0LmFjY2VwdGVkPSEwLGUub3B0aW9ucy5hdXRvUXVldWUmJmUuZW5xdWV1ZUZpbGUodCkpLGUuX3VwZGF0ZU1heEZpbGVzUmVhY2hlZENsYXNzKCl9KSl9fSx7a2V5OiJlbnF1ZXVlRmlsZXMiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLG49ZCh0LCEwKTt0cnl7Zm9yKG4ucygpOyEoZT1uLm4oKSkuZG9uZTspe3ZhciBpPWUudmFsdWU7dGhpcy5lbnF1ZXVlRmlsZShpKX19Y2F0Y2godCl7bi5lKHQpfWZpbmFsbHl7bi5mKCl9cmV0dXJuIG51bGx9fSx7a2V5OiJlbnF1ZXVlRmlsZSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZih0LnN0YXR1cyE9PW4uQURERUR8fCEwIT09dC5hY2NlcHRlZCl0aHJvdyBuZXcgRXJyb3IoIlRoaXMgZmlsZSBjYW4ndCBiZSBxdWV1ZWQgYmVjYXVzZSBpdCBoYXMgYWxyZWFkeSBiZWVuIHByb2Nlc3NlZCBvciB3YXMgcmVqZWN0ZWQuIik7aWYodC5zdGF0dXM9bi5RVUVVRUQsdGhpcy5vcHRpb25zLmF1dG9Qcm9jZXNzUXVldWUpcmV0dXJuIHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7cmV0dXJuIGUucHJvY2Vzc1F1ZXVlKCl9KSwwKX19LHtrZXk6Il9lbnF1ZXVlVGh1bWJuYWlsIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzO2lmKHRoaXMub3B0aW9ucy5jcmVhdGVJbWFnZVRodW1ibmFpbHMmJnQudHlwZS5tYXRjaCgvaW1hZ2UuKi8pJiZ0LnNpemU8PTEwMjQqdGhpcy5vcHRpb25zLm1heFRodW1ibmFpbEZpbGVzaXplKjEwMjQpcmV0dXJuIHRoaXMuX3RodW1ibmFpbFF1ZXVlLnB1c2godCksc2V0VGltZW91dCgoZnVuY3Rpb24oKXtyZXR1cm4gZS5fcHJvY2Vzc1RodW1ibmFpbFF1ZXVlKCl9KSwwKX19LHtrZXk6Il9wcm9jZXNzVGh1bWJuYWlsUXVldWUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztpZighdGhpcy5fcHJvY2Vzc2luZ1RodW1ibmFpbCYmMCE9PXRoaXMuX3RodW1ibmFpbFF1ZXVlLmxlbmd0aCl7dGhpcy5fcHJvY2Vzc2luZ1RodW1ibmFpbD0hMDt2YXIgZT10aGlzLl90aHVtYm5haWxRdWV1ZS5zaGlmdCgpO3JldHVybiB0aGlzLmNyZWF0ZVRodW1ibmFpbChlLHRoaXMub3B0aW9ucy50aHVtYm5haWxXaWR0aCx0aGlzLm9wdGlvbnMudGh1bWJuYWlsSGVpZ2h0LHRoaXMub3B0aW9ucy50aHVtYm5haWxNZXRob2QsITAsKGZ1bmN0aW9uKG4pe3JldHVybiB0LmVtaXQoInRodW1ibmFpbCIsZSxuKSx0Ll9wcm9jZXNzaW5nVGh1bWJuYWlsPSExLHQuX3Byb2Nlc3NUaHVtYm5haWxRdWV1ZSgpfSkpfX19LHtrZXk6InJlbW92ZUZpbGUiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKHQuc3RhdHVzPT09bi5VUExPQURJTkcmJnRoaXMuY2FuY2VsVXBsb2FkKHQpLHRoaXMuZmlsZXM9eCh0aGlzLmZpbGVzLHQpLHRoaXMuZW1pdCgicmVtb3ZlZGZpbGUiLHQpLDA9PT10aGlzLmZpbGVzLmxlbmd0aClyZXR1cm4gdGhpcy5lbWl0KCJyZXNldCIpfX0se2tleToicmVtb3ZlQWxsRmlsZXMiLHZhbHVlOmZ1bmN0aW9uKHQpe251bGw9PXQmJih0PSExKTt2YXIgZSxpPWQodGhpcy5maWxlcy5zbGljZSgpLCEwKTt0cnl7Zm9yKGkucygpOyEoZT1pLm4oKSkuZG9uZTspe3ZhciByPWUudmFsdWU7KHIuc3RhdHVzIT09bi5VUExPQURJTkd8fHQpJiZ0aGlzLnJlbW92ZUZpbGUocil9fWNhdGNoKHQpe2kuZSh0KX1maW5hbGx5e2kuZigpfXJldHVybiBudWxsfX0se2tleToicmVzaXplSW1hZ2UiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpLHIsbyl7dmFyIGE9dGhpcztyZXR1cm4gdGhpcy5jcmVhdGVUaHVtYm5haWwodCxlLGksciwhMCwoZnVuY3Rpb24oZSxpKXtpZihudWxsPT1pKXJldHVybiBvKHQpO3ZhciByPWEub3B0aW9ucy5yZXNpemVNaW1lVHlwZTtudWxsPT1yJiYocj10LnR5cGUpO3ZhciBzPWkudG9EYXRhVVJMKHIsYS5vcHRpb25zLnJlc2l6ZVF1YWxpdHkpO3JldHVybiJpbWFnZS9qcGVnIiE9PXImJiJpbWFnZS9qcGciIT09cnx8KHM9Qy5yZXN0b3JlKHQuZGF0YVVSTCxzKSksbyhuLmRhdGFVUkl0b0Jsb2IocykpfSkpfX0se2tleToiY3JlYXRlVGh1bWJuYWlsIix2YWx1ZTpmdW5jdGlvbih0LGUsbixpLHIsbyl7dmFyIGE9dGhpcyxzPW5ldyBGaWxlUmVhZGVyO3Mub25sb2FkPWZ1bmN0aW9uKCl7dC5kYXRhVVJMPXMucmVzdWx0LCJpbWFnZS9zdmcreG1sIiE9PXQudHlwZT9hLmNyZWF0ZVRodW1ibmFpbEZyb21VcmwodCxlLG4saSxyLG8pOm51bGwhPW8mJm8ocy5yZXN1bHQpfSxzLnJlYWRBc0RhdGFVUkwodCl9fSx7a2V5OiJkaXNwbGF5RXhpc3RpbmdGaWxlIix2YWx1ZTpmdW5jdGlvbih0LGUsbixpKXt2YXIgcj10aGlzLG89IShhcmd1bWVudHMubGVuZ3RoPjQmJnZvaWQgMCE9PWFyZ3VtZW50c1s0XSl8fGFyZ3VtZW50c1s0XTtpZih0aGlzLmVtaXQoImFkZGVkZmlsZSIsdCksdGhpcy5lbWl0KCJjb21wbGV0ZSIsdCksbyl7dmFyIGE9ZnVuY3Rpb24oZSl7ci5lbWl0KCJ0aHVtYm5haWwiLHQsZSksbiYmbigpfTt0LmRhdGFVUkw9ZSx0aGlzLmNyZWF0ZVRodW1ibmFpbEZyb21VcmwodCx0aGlzLm9wdGlvbnMudGh1bWJuYWlsV2lkdGgsdGhpcy5vcHRpb25zLnRodW1ibmFpbEhlaWdodCx0aGlzLm9wdGlvbnMucmVzaXplTWV0aG9kLHRoaXMub3B0aW9ucy5maXhPcmllbnRhdGlvbixhLGkpfWVsc2UgdGhpcy5lbWl0KCJ0aHVtYm5haWwiLHQsZSksbiYmbigpfX0se2tleToiY3JlYXRlVGh1bWJuYWlsRnJvbVVybCIsdmFsdWU6ZnVuY3Rpb24odCxlLG4saSxyLG8sYSl7dmFyIHM9dGhpcyxsPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpO3JldHVybiBhJiYobC5jcm9zc09yaWdpbj1hKSxyPSJmcm9tLWltYWdlIiE9Z2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5ib2R5KS5pbWFnZU9yaWVudGF0aW9uJiZyLGwub25sb2FkPWZ1bmN0aW9uKCl7dmFyIGE9ZnVuY3Rpb24odCl7cmV0dXJuIHQoMSl9O3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgRVhJRiYmbnVsbCE9PUVYSUYmJnImJihhPWZ1bmN0aW9uKHQpe3JldHVybiBFWElGLmdldERhdGEobCwoZnVuY3Rpb24oKXtyZXR1cm4gdChFWElGLmdldFRhZyh0aGlzLCJPcmllbnRhdGlvbiIpKX0pKX0pLGEoKGZ1bmN0aW9uKHIpe3Qud2lkdGg9bC53aWR0aCx0LmhlaWdodD1sLmhlaWdodDt2YXIgYT1zLm9wdGlvbnMucmVzaXplLmNhbGwocyx0LGUsbixpKSxjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLHU9Yy5nZXRDb250ZXh0KCIyZCIpO3N3aXRjaChjLndpZHRoPWEudHJnV2lkdGgsYy5oZWlnaHQ9YS50cmdIZWlnaHQscj40JiYoYy53aWR0aD1hLnRyZ0hlaWdodCxjLmhlaWdodD1hLnRyZ1dpZHRoKSxyKXtjYXNlIDI6dS50cmFuc2xhdGUoYy53aWR0aCwwKSx1LnNjYWxlKC0xLDEpO2JyZWFrO2Nhc2UgMzp1LnRyYW5zbGF0ZShjLndpZHRoLGMuaGVpZ2h0KSx1LnJvdGF0ZShNYXRoLlBJKTticmVhaztjYXNlIDQ6dS50cmFuc2xhdGUoMCxjLmhlaWdodCksdS5zY2FsZSgxLC0xKTticmVhaztjYXNlIDU6dS5yb3RhdGUoLjUqTWF0aC5QSSksdS5zY2FsZSgxLC0xKTticmVhaztjYXNlIDY6dS5yb3RhdGUoLjUqTWF0aC5QSSksdS50cmFuc2xhdGUoMCwtYy53aWR0aCk7YnJlYWs7Y2FzZSA3OnUucm90YXRlKC41Kk1hdGguUEkpLHUudHJhbnNsYXRlKGMuaGVpZ2h0LC1jLndpZHRoKSx1LnNjYWxlKC0xLDEpO2JyZWFrO2Nhc2UgODp1LnJvdGF0ZSgtLjUqTWF0aC5QSSksdS50cmFuc2xhdGUoLWMuaGVpZ2h0LDApfVModSxsLG51bGwhPWEuc3JjWD9hLnNyY1g6MCxudWxsIT1hLnNyY1k/YS5zcmNZOjAsYS5zcmNXaWR0aCxhLnNyY0hlaWdodCxudWxsIT1hLnRyZ1g/YS50cmdYOjAsbnVsbCE9YS50cmdZP2EudHJnWTowLGEudHJnV2lkdGgsYS50cmdIZWlnaHQpO3ZhciBkPWMudG9EYXRhVVJMKCJpbWFnZS9wbmciKTtpZihudWxsIT1vKXJldHVybiBvKGQsYyl9KSl9LG51bGwhPW8mJihsLm9uZXJyb3I9byksbC5zcmM9dC5kYXRhVVJMfX0se2tleToicHJvY2Vzc1F1ZXVlIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3B0aW9ucy5wYXJhbGxlbFVwbG9hZHMsZT10aGlzLmdldFVwbG9hZGluZ0ZpbGVzKCkubGVuZ3RoLG49ZTtpZighKGU+PXQpKXt2YXIgaT10aGlzLmdldFF1ZXVlZEZpbGVzKCk7aWYoaS5sZW5ndGg+MCl7aWYodGhpcy5vcHRpb25zLnVwbG9hZE11bHRpcGxlKXJldHVybiB0aGlzLnByb2Nlc3NGaWxlcyhpLnNsaWNlKDAsdC1lKSk7Zm9yKDtuPHQ7KXtpZighaS5sZW5ndGgpcmV0dXJuO3RoaXMucHJvY2Vzc0ZpbGUoaS5zaGlmdCgpKSxuKyt9fX19fSx7a2V5OiJwcm9jZXNzRmlsZSIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucHJvY2Vzc0ZpbGVzKFt0XSl9fSx7a2V5OiJwcm9jZXNzRmlsZXMiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLGk9ZCh0LCEwKTt0cnl7Zm9yKGkucygpOyEoZT1pLm4oKSkuZG9uZTspe3ZhciByPWUudmFsdWU7ci5wcm9jZXNzaW5nPSEwLHIuc3RhdHVzPW4uVVBMT0FESU5HLHRoaXMuZW1pdCgicHJvY2Vzc2luZyIscil9fWNhdGNoKHQpe2kuZSh0KX1maW5hbGx5e2kuZigpfXJldHVybiB0aGlzLm9wdGlvbnMudXBsb2FkTXVsdGlwbGUmJnRoaXMuZW1pdCgicHJvY2Vzc2luZ211bHRpcGxlIix0KSx0aGlzLnVwbG9hZEZpbGVzKHQpfX0se2tleToiX2dldEZpbGVzV2l0aFhociIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZmlsZXMuZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gZS54aHI9PT10fSkpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHR9KSl9fSx7a2V5OiJjYW5jZWxVcGxvYWQiLHZhbHVlOmZ1bmN0aW9uKHQpe2lmKHQuc3RhdHVzPT09bi5VUExPQURJTkcpe3ZhciBlLGk9dGhpcy5fZ2V0RmlsZXNXaXRoWGhyKHQueGhyKSxyPWQoaSwhMCk7dHJ5e2ZvcihyLnMoKTshKGU9ci5uKCkpLmRvbmU7KWUudmFsdWUuc3RhdHVzPW4uQ0FOQ0VMRUR9Y2F0Y2godCl7ci5lKHQpfWZpbmFsbHl7ci5mKCl9dm9pZCAwIT09dC54aHImJnQueGhyLmFib3J0KCk7dmFyIG8sYT1kKGksITApO3RyeXtmb3IoYS5zKCk7IShvPWEubigpKS5kb25lOyl7dmFyIHM9by52YWx1ZTt0aGlzLmVtaXQoImNhbmNlbGVkIixzKX19Y2F0Y2godCl7YS5lKHQpfWZpbmFsbHl7YS5mKCl9dGhpcy5vcHRpb25zLnVwbG9hZE11bHRpcGxlJiZ0aGlzLmVtaXQoImNhbmNlbGVkbXVsdGlwbGUiLGkpfWVsc2UgdC5zdGF0dXMhPT1uLkFEREVEJiZ0LnN0YXR1cyE9PW4uUVVFVUVEfHwodC5zdGF0dXM9bi5DQU5DRUxFRCx0aGlzLmVtaXQoImNhbmNlbGVkIix0KSx0aGlzLm9wdGlvbnMudXBsb2FkTXVsdGlwbGUmJnRoaXMuZW1pdCgiY2FuY2VsZWRtdWx0aXBsZSIsW3RdKSk7aWYodGhpcy5vcHRpb25zLmF1dG9Qcm9jZXNzUXVldWUpcmV0dXJuIHRoaXMucHJvY2Vzc1F1ZXVlKCl9fSx7a2V5OiJyZXNvbHZlT3B0aW9uIix2YWx1ZTpmdW5jdGlvbih0KXtpZigiZnVuY3Rpb24iPT10eXBlb2YgdCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsbj1uZXcgQXJyYXkoZT4xP2UtMTowKSxpPTE7aTxlO2krKyluW2ktMV09YXJndW1lbnRzW2ldO3JldHVybiB0LmFwcGx5KHRoaXMsbil9cmV0dXJuIHR9fSx7a2V5OiJ1cGxvYWRGaWxlIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy51cGxvYWRGaWxlcyhbdF0pfX0se2tleToidXBsb2FkRmlsZXMiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXM7dGhpcy5fdHJhbnNmb3JtRmlsZXModCwoZnVuY3Rpb24oaSl7aWYoZS5vcHRpb25zLmNodW5raW5nKXt2YXIgcj1pWzBdO3RbMF0udXBsb2FkLmNodW5rZWQ9ZS5vcHRpb25zLmNodW5raW5nJiYoZS5vcHRpb25zLmZvcmNlQ2h1bmtpbmd8fHIuc2l6ZT5lLm9wdGlvbnMuY2h1bmtTaXplKSx0WzBdLnVwbG9hZC50b3RhbENodW5rQ291bnQ9TWF0aC5jZWlsKHIuc2l6ZS9lLm9wdGlvbnMuY2h1bmtTaXplKX1pZih0WzBdLnVwbG9hZC5jaHVua2VkKXt2YXIgbz10WzBdLGE9aVswXTtvLnVwbG9hZC5jaHVua3M9W107dmFyIHM9ZnVuY3Rpb24oKXtmb3IodmFyIGk9MDt2b2lkIDAhPT1vLnVwbG9hZC5jaHVua3NbaV07KWkrKztpZighKGk+PW8udXBsb2FkLnRvdGFsQ2h1bmtDb3VudCkpe3ZhciByPWkqZS5vcHRpb25zLmNodW5rU2l6ZSxzPU1hdGgubWluKHIrZS5vcHRpb25zLmNodW5rU2l6ZSxhLnNpemUpLGw9e25hbWU6ZS5fZ2V0UGFyYW1OYW1lKDApLGRhdGE6YS53ZWJraXRTbGljZT9hLndlYmtpdFNsaWNlKHIscyk6YS5zbGljZShyLHMpLGZpbGVuYW1lOm8udXBsb2FkLmZpbGVuYW1lLGNodW5rSW5kZXg6aX07by51cGxvYWQuY2h1bmtzW2ldPXtmaWxlOm8saW5kZXg6aSxkYXRhQmxvY2s6bCxzdGF0dXM6bi5VUExPQURJTkcscHJvZ3Jlc3M6MCxyZXRyaWVzOjB9LGUuX3VwbG9hZERhdGEodCxbbF0pfX07aWYoby51cGxvYWQuZmluaXNoZWRDaHVua1VwbG9hZD1mdW5jdGlvbihpKXt2YXIgcj0hMDtpLnN0YXR1cz1uLlNVQ0NFU1MsaS5kYXRhQmxvY2s9bnVsbCxpLnhocj1udWxsO2Zvcih2YXIgYT0wO2E8by51cGxvYWQudG90YWxDaHVua0NvdW50O2ErKyl7aWYodm9pZCAwPT09by51cGxvYWQuY2h1bmtzW2FdKXJldHVybiBzKCk7by51cGxvYWQuY2h1bmtzW2FdLnN0YXR1cyE9PW4uU1VDQ0VTUyYmKHI9ITEpfXImJmUub3B0aW9ucy5jaHVua3NVcGxvYWRlZChvLChmdW5jdGlvbigpe2UuX2ZpbmlzaGVkKHQsIiIsbnVsbCl9KSl9LGUub3B0aW9ucy5wYXJhbGxlbENodW5rVXBsb2Fkcylmb3IodmFyIGw9MDtsPG8udXBsb2FkLnRvdGFsQ2h1bmtDb3VudDtsKyspcygpO2Vsc2UgcygpfWVsc2V7Zm9yKHZhciBjPVtdLHU9MDt1PHQubGVuZ3RoO3UrKyljW3VdPXtuYW1lOmUuX2dldFBhcmFtTmFtZSh1KSxkYXRhOmlbdV0sZmlsZW5hbWU6dFt1XS51cGxvYWQuZmlsZW5hbWV9O2UuX3VwbG9hZERhdGEodCxjKX19KSl9fSx7a2V5OiJfZ2V0Q2h1bmsiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPTA7bjx0LnVwbG9hZC50b3RhbENodW5rQ291bnQ7bisrKWlmKHZvaWQgMCE9PXQudXBsb2FkLmNodW5rc1tuXSYmdC51cGxvYWQuY2h1bmtzW25dLnhocj09PWUpcmV0dXJuIHQudXBsb2FkLmNodW5rc1tuXX19LHtrZXk6Il91cGxvYWREYXRhIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBpLHI9dGhpcyxvPW5ldyBYTUxIdHRwUmVxdWVzdCxhPWQodCwhMCk7dHJ5e2ZvcihhLnMoKTshKGk9YS5uKCkpLmRvbmU7KWkudmFsdWUueGhyPW99Y2F0Y2godCl7YS5lKHQpfWZpbmFsbHl7YS5mKCl9dFswXS51cGxvYWQuY2h1bmtlZCYmKHRbMF0udXBsb2FkLmNodW5rc1tlWzBdLmNodW5rSW5kZXhdLnhocj1vKTt2YXIgcz10aGlzLnJlc29sdmVPcHRpb24odGhpcy5vcHRpb25zLm1ldGhvZCx0KSxsPXRoaXMucmVzb2x2ZU9wdGlvbih0aGlzLm9wdGlvbnMudXJsLHQpO28ub3BlbihzLGwsITApLG8udGltZW91dD10aGlzLnJlc29sdmVPcHRpb24odGhpcy5vcHRpb25zLnRpbWVvdXQsdCksby53aXRoQ3JlZGVudGlhbHM9ISF0aGlzLm9wdGlvbnMud2l0aENyZWRlbnRpYWxzLG8ub25sb2FkPWZ1bmN0aW9uKGUpe3IuX2ZpbmlzaGVkVXBsb2FkaW5nKHQsbyxlKX0sby5vbnRpbWVvdXQ9ZnVuY3Rpb24oKXtyLl9oYW5kbGVVcGxvYWRFcnJvcih0LG8sIlJlcXVlc3QgdGltZWRvdXQgYWZ0ZXIgIi5jb25jYXQoci5vcHRpb25zLnRpbWVvdXQvMWUzLCIgc2Vjb25kcyIpKX0sby5vbmVycm9yPWZ1bmN0aW9uKCl7ci5faGFuZGxlVXBsb2FkRXJyb3IodCxvKX0sKG51bGwhPW8udXBsb2FkP28udXBsb2FkOm8pLm9ucHJvZ3Jlc3M9ZnVuY3Rpb24oZSl7cmV0dXJuIHIuX3VwZGF0ZUZpbGVzVXBsb2FkUHJvZ3Jlc3ModCxvLGUpfTt2YXIgYz17QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uIiwiQ2FjaGUtQ29udHJvbCI6Im5vLWNhY2hlIiwiWC1SZXF1ZXN0ZWQtV2l0aCI6IlhNTEh0dHBSZXF1ZXN0In07Zm9yKHZhciB1IGluIHRoaXMub3B0aW9ucy5oZWFkZXJzJiZuLmV4dGVuZChjLHRoaXMub3B0aW9ucy5oZWFkZXJzKSxjKXt2YXIgaD1jW3VdO2gmJm8uc2V0UmVxdWVzdEhlYWRlcih1LGgpfXZhciBmPW5ldyBGb3JtRGF0YTtpZih0aGlzLm9wdGlvbnMucGFyYW1zKXt2YXIgcD10aGlzLm9wdGlvbnMucGFyYW1zO2Zvcih2YXIgZyBpbiJmdW5jdGlvbiI9PXR5cGVvZiBwJiYocD1wLmNhbGwodGhpcyx0LG8sdFswXS51cGxvYWQuY2h1bmtlZD90aGlzLl9nZXRDaHVuayh0WzBdLG8pOm51bGwpKSxwKXt2YXIgbT1wW2ddO2lmKEFycmF5LmlzQXJyYXkobSkpZm9yKHZhciB2PTA7djxtLmxlbmd0aDt2KyspZi5hcHBlbmQoZyxtW3ZdKTtlbHNlIGYuYXBwZW5kKGcsbSl9fXZhciB5LGI9ZCh0LCEwKTt0cnl7Zm9yKGIucygpOyEoeT1iLm4oKSkuZG9uZTspe3ZhciB3PXkudmFsdWU7dGhpcy5lbWl0KCJzZW5kaW5nIix3LG8sZil9fWNhdGNoKHQpe2IuZSh0KX1maW5hbGx5e2IuZigpfXRoaXMub3B0aW9ucy51cGxvYWRNdWx0aXBsZSYmdGhpcy5lbWl0KCJzZW5kaW5nbXVsdGlwbGUiLHQsbyxmKSx0aGlzLl9hZGRGb3JtRWxlbWVudERhdGEoZik7Zm9yKHZhciB4PTA7eDxlLmxlbmd0aDt4Kyspe3ZhciBfPWVbeF07Zi5hcHBlbmQoXy5uYW1lLF8uZGF0YSxfLmZpbGVuYW1lKX10aGlzLnN1Ym1pdFJlcXVlc3QobyxmLHQpfX0se2tleToiX3RyYW5zZm9ybUZpbGVzIix2YWx1ZTpmdW5jdGlvbih0LGUpe2Zvcih2YXIgbj10aGlzLGk9W10scj0wLG89ZnVuY3Rpb24obyl7bi5vcHRpb25zLnRyYW5zZm9ybUZpbGUuY2FsbChuLHRbb10sKGZ1bmN0aW9uKG4pe2lbb109biwrK3I9PT10Lmxlbmd0aCYmZShpKX0pKX0sYT0wO2E8dC5sZW5ndGg7YSsrKW8oYSl9fSx7a2V5OiJfYWRkRm9ybUVsZW1lbnREYXRhIix2YWx1ZTpmdW5jdGlvbih0KXtpZigiRk9STSI9PT10aGlzLmVsZW1lbnQudGFnTmFtZSl7dmFyIGUsbj1kKHRoaXMuZWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCJpbnB1dCwgdGV4dGFyZWEsIHNlbGVjdCwgYnV0dG9uIiksITApO3RyeXtmb3Iobi5zKCk7IShlPW4ubigpKS5kb25lOyl7dmFyIGk9ZS52YWx1ZSxyPWkuZ2V0QXR0cmlidXRlKCJuYW1lIiksbz1pLmdldEF0dHJpYnV0ZSgidHlwZSIpO2lmKG8mJihvPW8udG9Mb3dlckNhc2UoKSksbnVsbCE9cilpZigiU0VMRUNUIj09PWkudGFnTmFtZSYmaS5oYXNBdHRyaWJ1dGUoIm11bHRpcGxlIikpe3ZhciBhLHM9ZChpLm9wdGlvbnMsITApO3RyeXtmb3Iocy5zKCk7IShhPXMubigpKS5kb25lOyl7dmFyIGw9YS52YWx1ZTtsLnNlbGVjdGVkJiZ0LmFwcGVuZChyLGwudmFsdWUpfX1jYXRjaCh0KXtzLmUodCl9ZmluYWxseXtzLmYoKX19ZWxzZSghb3x8ImNoZWNrYm94IiE9PW8mJiJyYWRpbyIhPT1vfHxpLmNoZWNrZWQpJiZ0LmFwcGVuZChyLGkudmFsdWUpfX1jYXRjaCh0KXtuLmUodCl9ZmluYWxseXtuLmYoKX19fX0se2tleToiX3VwZGF0ZUZpbGVzVXBsb2FkUHJvZ3Jlc3MiLHZhbHVlOmZ1bmN0aW9uKHQsZSxuKXt2YXIgaTtpZih2b2lkIDAhPT1uKXtpZihpPTEwMCpuLmxvYWRlZC9uLnRvdGFsLHRbMF0udXBsb2FkLmNodW5rZWQpe3ZhciByPXRbMF0sbz10aGlzLl9nZXRDaHVuayhyLGUpO28ucHJvZ3Jlc3M9aSxvLnRvdGFsPW4udG90YWwsby5ieXRlc1NlbnQ9bi5sb2FkZWQsci51cGxvYWQucHJvZ3Jlc3M9MCxyLnVwbG9hZC50b3RhbD0wLHIudXBsb2FkLmJ5dGVzU2VudD0wO2Zvcih2YXIgYT0wO2E8ci51cGxvYWQudG90YWxDaHVua0NvdW50O2ErKyl2b2lkIDAhPT1yLnVwbG9hZC5jaHVua3NbYV0mJnZvaWQgMCE9PXIudXBsb2FkLmNodW5rc1thXS5wcm9ncmVzcyYmKHIudXBsb2FkLnByb2dyZXNzKz1yLnVwbG9hZC5jaHVua3NbYV0ucHJvZ3Jlc3Msci51cGxvYWQudG90YWwrPXIudXBsb2FkLmNodW5rc1thXS50b3RhbCxyLnVwbG9hZC5ieXRlc1NlbnQrPXIudXBsb2FkLmNodW5rc1thXS5ieXRlc1NlbnQpO3IudXBsb2FkLnByb2dyZXNzPXIudXBsb2FkLnByb2dyZXNzL3IudXBsb2FkLnRvdGFsQ2h1bmtDb3VudH1lbHNle3ZhciBzLGw9ZCh0LCEwKTt0cnl7Zm9yKGwucygpOyEocz1sLm4oKSkuZG9uZTspe3ZhciBjPXMudmFsdWU7Yy51cGxvYWQucHJvZ3Jlc3M9aSxjLnVwbG9hZC50b3RhbD1uLnRvdGFsLGMudXBsb2FkLmJ5dGVzU2VudD1uLmxvYWRlZH19Y2F0Y2godCl7bC5lKHQpfWZpbmFsbHl7bC5mKCl9fXZhciB1LGg9ZCh0LCEwKTt0cnl7Zm9yKGgucygpOyEodT1oLm4oKSkuZG9uZTspe3ZhciBmPXUudmFsdWU7dGhpcy5lbWl0KCJ1cGxvYWRwcm9ncmVzcyIsZixmLnVwbG9hZC5wcm9ncmVzcyxmLnVwbG9hZC5ieXRlc1NlbnQpfX1jYXRjaCh0KXtoLmUodCl9ZmluYWxseXtoLmYoKX19ZWxzZXt2YXIgcD0hMDtpPTEwMDt2YXIgZyxtPWQodCwhMCk7dHJ5e2ZvcihtLnMoKTshKGc9bS5uKCkpLmRvbmU7KXt2YXIgdj1nLnZhbHVlOzEwMD09PXYudXBsb2FkLnByb2dyZXNzJiZ2LnVwbG9hZC5ieXRlc1NlbnQ9PT12LnVwbG9hZC50b3RhbHx8KHA9ITEpLHYudXBsb2FkLnByb2dyZXNzPWksdi51cGxvYWQuYnl0ZXNTZW50PXYudXBsb2FkLnRvdGFsfX1jYXRjaCh0KXttLmUodCl9ZmluYWxseXttLmYoKX1pZihwKXJldHVybjt2YXIgeSxiPWQodCwhMCk7dHJ5e2ZvcihiLnMoKTshKHk9Yi5uKCkpLmRvbmU7KXt2YXIgdz15LnZhbHVlO3RoaXMuZW1pdCgidXBsb2FkcHJvZ3Jlc3MiLHcsaSx3LnVwbG9hZC5ieXRlc1NlbnQpfX1jYXRjaCh0KXtiLmUodCl9ZmluYWxseXtiLmYoKX19fX0se2tleToiX2ZpbmlzaGVkVXBsb2FkaW5nIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7dmFyIHI7aWYodFswXS5zdGF0dXMhPT1uLkNBTkNFTEVEJiY0PT09ZS5yZWFkeVN0YXRlKXtpZigiYXJyYXlidWZmZXIiIT09ZS5yZXNwb25zZVR5cGUmJiJibG9iIiE9PWUucmVzcG9uc2VUeXBlJiYocj1lLnJlc3BvbnNlVGV4dCxlLmdldFJlc3BvbnNlSGVhZGVyKCJjb250ZW50LXR5cGUiKSYmfmUuZ2V0UmVzcG9uc2VIZWFkZXIoImNvbnRlbnQtdHlwZSIpLmluZGV4T2YoImFwcGxpY2F0aW9uL2pzb24iKSkpdHJ5e3I9SlNPTi5wYXJzZShyKX1jYXRjaCh0KXtpPXQscj0iSW52YWxpZCBKU09OIHJlc3BvbnNlIGZyb20gc2VydmVyLiJ9dGhpcy5fdXBkYXRlRmlsZXNVcGxvYWRQcm9ncmVzcyh0KSwyMDA8PWUuc3RhdHVzJiZlLnN0YXR1czwzMDA/dFswXS51cGxvYWQuY2h1bmtlZD90WzBdLnVwbG9hZC5maW5pc2hlZENodW5rVXBsb2FkKHRoaXMuX2dldENodW5rKHRbMF0sZSkpOnRoaXMuX2ZpbmlzaGVkKHQscixpKTp0aGlzLl9oYW5kbGVVcGxvYWRFcnJvcih0LGUscil9fX0se2tleToiX2hhbmRsZVVwbG9hZEVycm9yIix2YWx1ZTpmdW5jdGlvbih0LGUsaSl7aWYodFswXS5zdGF0dXMhPT1uLkNBTkNFTEVEKXtpZih0WzBdLnVwbG9hZC5jaHVua2VkJiZ0aGlzLm9wdGlvbnMucmV0cnlDaHVua3Mpe3ZhciByPXRoaXMuX2dldENodW5rKHRbMF0sZSk7aWYoci5yZXRyaWVzKys8dGhpcy5vcHRpb25zLnJldHJ5Q2h1bmtzTGltaXQpcmV0dXJuIHZvaWQgdGhpcy5fdXBsb2FkRGF0YSh0LFtyLmRhdGFCbG9ja10pO2NvbnNvbGUud2FybigiUmV0cmllZCB0aGlzIGNodW5rIHRvbyBvZnRlbi4gR2l2aW5nIHVwLiIpfXRoaXMuX2Vycm9yUHJvY2Vzc2luZyh0LGl8fHRoaXMub3B0aW9ucy5kaWN0UmVzcG9uc2VFcnJvci5yZXBsYWNlKCJ7e3N0YXR1c0NvZGV9fSIsZS5zdGF0dXMpLGUpfX19LHtrZXk6InN1Ym1pdFJlcXVlc3QiLHZhbHVlOmZ1bmN0aW9uKHQsZSxuKXt0LnNlbmQoZSl9fSx7a2V5OiJfZmluaXNoZWQiLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgcixvPWQodCwhMCk7dHJ5e2ZvcihvLnMoKTshKHI9by5uKCkpLmRvbmU7KXt2YXIgYT1yLnZhbHVlO2Euc3RhdHVzPW4uU1VDQ0VTUyx0aGlzLmVtaXQoInN1Y2Nlc3MiLGEsZSxpKSx0aGlzLmVtaXQoImNvbXBsZXRlIixhKX19Y2F0Y2godCl7by5lKHQpfWZpbmFsbHl7by5mKCl9aWYodGhpcy5vcHRpb25zLnVwbG9hZE11bHRpcGxlJiYodGhpcy5lbWl0KCJzdWNjZXNzbXVsdGlwbGUiLHQsZSxpKSx0aGlzLmVtaXQoImNvbXBsZXRlbXVsdGlwbGUiLHQpKSx0aGlzLm9wdGlvbnMuYXV0b1Byb2Nlc3NRdWV1ZSlyZXR1cm4gdGhpcy5wcm9jZXNzUXVldWUoKX19LHtrZXk6Il9lcnJvclByb2Nlc3NpbmciLHZhbHVlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgcixvPWQodCwhMCk7dHJ5e2ZvcihvLnMoKTshKHI9by5uKCkpLmRvbmU7KXt2YXIgYT1yLnZhbHVlO2Euc3RhdHVzPW4uRVJST1IsdGhpcy5lbWl0KCJlcnJvciIsYSxlLGkpLHRoaXMuZW1pdCgiY29tcGxldGUiLGEpfX1jYXRjaCh0KXtvLmUodCl9ZmluYWxseXtvLmYoKX1pZih0aGlzLm9wdGlvbnMudXBsb2FkTXVsdGlwbGUmJih0aGlzLmVtaXQoImVycm9ybXVsdGlwbGUiLHQsZSxpKSx0aGlzLmVtaXQoImNvbXBsZXRlbXVsdGlwbGUiLHQpKSx0aGlzLm9wdGlvbnMuYXV0b1Byb2Nlc3NRdWV1ZSlyZXR1cm4gdGhpcy5wcm9jZXNzUXVldWUoKX19XSxbe2tleToiaW5pdENsYXNzIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMucHJvdG90eXBlLkVtaXR0ZXI9YSx0aGlzLnByb3RvdHlwZS5ldmVudHM9WyJkcm9wIiwiZHJhZ3N0YXJ0IiwiZHJhZ2VuZCIsImRyYWdlbnRlciIsImRyYWdvdmVyIiwiZHJhZ2xlYXZlIiwiYWRkZWRmaWxlIiwiYWRkZWRmaWxlcyIsInJlbW92ZWRmaWxlIiwidGh1bWJuYWlsIiwiZXJyb3IiLCJlcnJvcm11bHRpcGxlIiwicHJvY2Vzc2luZyIsInByb2Nlc3NpbmdtdWx0aXBsZSIsInVwbG9hZHByb2dyZXNzIiwidG90YWx1cGxvYWRwcm9ncmVzcyIsInNlbmRpbmciLCJzZW5kaW5nbXVsdGlwbGUiLCJzdWNjZXNzIiwic3VjY2Vzc211bHRpcGxlIiwiY2FuY2VsZWQiLCJjYW5jZWxlZG11bHRpcGxlIiwiY29tcGxldGUiLCJjb21wbGV0ZW11bHRpcGxlIiwicmVzZXQiLCJtYXhmaWxlc2V4Y2VlZGVkIiwibWF4ZmlsZXNyZWFjaGVkIiwicXVldWVjb21wbGV0ZSJdLHRoaXMucHJvdG90eXBlLl90aHVtYm5haWxRdWV1ZT1bXSx0aGlzLnByb3RvdHlwZS5fcHJvY2Vzc2luZ1RodW1ibmFpbD0hMX19LHtrZXk6ImV4dGVuZCIsdmFsdWU6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsbj1uZXcgQXJyYXkoZT4xP2UtMTowKSxpPTE7aTxlO2krKyluW2ktMV09YXJndW1lbnRzW2ldO2Zvcih2YXIgcj0wLG89bjtyPG8ubGVuZ3RoO3IrKyl7dmFyIGE9b1tyXTtmb3IodmFyIHMgaW4gYSl7dmFyIGw9YVtzXTt0W3NdPWx9fXJldHVybiB0fX0se2tleToidXVpZHY0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiJ4eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHgiLnJlcGxhY2UoL1t4eV0vZywoZnVuY3Rpb24odCl7dmFyIGU9MTYqTWF0aC5yYW5kb20oKXwwO3JldHVybigieCI9PT10P2U6MyZlfDgpLnRvU3RyaW5nKDE2KX0pKX19XSksbn0oYSk7dy5pbml0Q2xhc3MoKSx3LnZlcnNpb249IjUuNy42Iix3Lm9wdGlvbnM9e30sdy5vcHRpb25zRm9yRWxlbWVudD1mdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRBdHRyaWJ1dGUoImlkIik/dy5vcHRpb25zW18odC5nZXRBdHRyaWJ1dGUoImlkIikpXTp2b2lkIDB9LHcuaW5zdGFuY2VzPVtdLHcuZm9yRWxlbWVudD1mdW5jdGlvbih0KXtpZigic3RyaW5nIj09dHlwZW9mIHQmJih0PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodCkpLG51bGw9PShudWxsIT10P3QuZHJvcHpvbmU6dm9pZCAwKSl0aHJvdyBuZXcgRXJyb3IoIk5vIERyb3B6b25lIGZvdW5kIGZvciBnaXZlbiBlbGVtZW50LiBUaGlzIGlzIHByb2JhYmx5IGJlY2F1c2UgeW91J3JlIHRyeWluZyB0byBhY2Nlc3MgaXQgYmVmb3JlIERyb3B6b25lIGhhZCB0aGUgdGltZSB0byBpbml0aWFsaXplLiBVc2UgdGhlIGBpbml0YCBvcHRpb24gdG8gc2V0dXAgYW55IGFkZGl0aW9uYWwgb2JzZXJ2ZXJzIG9uIHlvdXIgRHJvcHpvbmUuIik7cmV0dXJuIHQuZHJvcHpvbmV9LHcuYXV0b0Rpc2NvdmVyPSEwLHcuZGlzY292ZXI9ZnVuY3Rpb24oKXt2YXIgdDtpZihkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKXQ9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLmRyb3B6b25lIik7ZWxzZXt0PVtdO3ZhciBlPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuLGk9W10scj1kKGUsITApO3RyeXtmb3Ioci5zKCk7IShuPXIubigpKS5kb25lOyl7dmFyIG89bi52YWx1ZTsvKF58IClkcm9wem9uZSgkfCApLy50ZXN0KG8uY2xhc3NOYW1lKT9pLnB1c2godC5wdXNoKG8pKTppLnB1c2godm9pZCAwKX19Y2F0Y2godCl7ci5lKHQpfWZpbmFsbHl7ci5mKCl9cmV0dXJuIGl9KCl9O2UoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImRpdiIpKSxlKGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJmb3JtIikpfXJldHVybiBmdW5jdGlvbigpe3ZhciBlLG49W10saT1kKHQsITApO3RyeXtmb3IoaS5zKCk7IShlPWkubigpKS5kb25lOyl7dmFyIHI9ZS52YWx1ZTshMSE9PXcub3B0aW9uc0ZvckVsZW1lbnQocik/bi5wdXNoKG5ldyB3KHIpKTpuLnB1c2godm9pZCAwKX19Y2F0Y2godCl7aS5lKHQpfWZpbmFsbHl7aS5mKCl9cmV0dXJuIG59KCl9LHcuYmxvY2tlZEJyb3dzZXJzPVsvb3BlcmEuKihNYWNpbnRvc2h8V2luZG93cyBQaG9uZSkuKnZlcnNpb25cLzEyL2ldLHcuaXNCcm93c2VyU3VwcG9ydGVkPWZ1bmN0aW9uKCl7dmFyIHQ9ITA7aWYod2luZG93LkZpbGUmJndpbmRvdy5GaWxlUmVhZGVyJiZ3aW5kb3cuRmlsZUxpc3QmJndpbmRvdy5CbG9iJiZ3aW5kb3cuRm9ybURhdGEmJmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IpaWYoImNsYXNzTGlzdCJpbiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIikpe3ZvaWQgMCE9PXcuYmxhY2tsaXN0ZWRCcm93c2VycyYmKHcuYmxvY2tlZEJyb3dzZXJzPXcuYmxhY2tsaXN0ZWRCcm93c2Vycyk7dmFyIGUsbj1kKHcuYmxvY2tlZEJyb3dzZXJzLCEwKTt0cnl7Zm9yKG4ucygpOyEoZT1uLm4oKSkuZG9uZTspZS52YWx1ZS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpJiYodD0hMSl9Y2F0Y2godCl7bi5lKHQpfWZpbmFsbHl7bi5mKCl9fWVsc2UgdD0hMTtlbHNlIHQ9ITE7cmV0dXJuIHR9LHcuZGF0YVVSSXRvQmxvYj1mdW5jdGlvbih0KXtmb3IodmFyIGU9YXRvYih0LnNwbGl0KCIsIilbMV0pLG49dC5zcGxpdCgiLCIpWzBdLnNwbGl0KCI6IilbMV0uc3BsaXQoIjsiKVswXSxpPW5ldyBBcnJheUJ1ZmZlcihlLmxlbmd0aCkscj1uZXcgVWludDhBcnJheShpKSxvPTAsYT1lLmxlbmd0aCxzPTA8PWE7cz9vPD1hOm8+PWE7cz9vKys6by0tKXJbb109ZS5jaGFyQ29kZUF0KG8pO3JldHVybiBuZXcgQmxvYihbaV0se3R5cGU6bn0pfTt2YXIgeD1mdW5jdGlvbih0LGUpe3JldHVybiB0LmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHQhPT1lfSkpLm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHR9KSl9LF89ZnVuY3Rpb24odCl7cmV0dXJuIHQucmVwbGFjZSgvW1wtX10oXHcpL2csKGZ1bmN0aW9uKHQpe3JldHVybiB0LmNoYXJBdCgxKS50b1VwcGVyQ2FzZSgpfSkpfTt3LmNyZWF0ZUVsZW1lbnQ9ZnVuY3Rpb24odCl7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIGUuaW5uZXJIVE1MPXQsZS5jaGlsZE5vZGVzWzBdfSx3LmVsZW1lbnRJbnNpZGU9ZnVuY3Rpb24odCxlKXtpZih0PT09ZSlyZXR1cm4hMDtmb3IoO3Q9dC5wYXJlbnROb2RlOylpZih0PT09ZSlyZXR1cm4hMDtyZXR1cm4hMX0sdy5nZXRFbGVtZW50PWZ1bmN0aW9uKHQsZSl7dmFyIG47aWYoInN0cmluZyI9PXR5cGVvZiB0P249ZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0KTpudWxsIT10Lm5vZGVUeXBlJiYobj10KSxudWxsPT1uKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBgIi5jb25jYXQoZSwiYCBvcHRpb24gcHJvdmlkZWQuIFBsZWFzZSBwcm92aWRlIGEgQ1NTIHNlbGVjdG9yIG9yIGEgcGxhaW4gSFRNTCBlbGVtZW50LiIpKTtyZXR1cm4gbn0sdy5nZXRFbGVtZW50cz1mdW5jdGlvbih0LGUpe3ZhciBuLGk7aWYodCBpbnN0YW5jZW9mIEFycmF5KXtpPVtdO3RyeXt2YXIgcixvPWQodCwhMCk7dHJ5e2ZvcihvLnMoKTshKHI9by5uKCkpLmRvbmU7KW49ci52YWx1ZSxpLnB1c2godGhpcy5nZXRFbGVtZW50KG4sZSkpfWNhdGNoKHQpe28uZSh0KX1maW5hbGx5e28uZigpfX1jYXRjaCh0KXtpPW51bGx9fWVsc2UgaWYoInN0cmluZyI9PXR5cGVvZiB0KXtpPVtdO3ZhciBhLHM9ZChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHQpLCEwKTt0cnl7Zm9yKHMucygpOyEoYT1zLm4oKSkuZG9uZTspbj1hLnZhbHVlLGkucHVzaChuKX1jYXRjaCh0KXtzLmUodCl9ZmluYWxseXtzLmYoKX19ZWxzZSBudWxsIT10Lm5vZGVUeXBlJiYoaT1bdF0pO2lmKG51bGw9PWl8fCFpLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgYCIuY29uY2F0KGUsImAgb3B0aW9uIHByb3ZpZGVkLiBQbGVhc2UgcHJvdmlkZSBhIENTUyBzZWxlY3RvciwgYSBwbGFpbiBIVE1MIGVsZW1lbnQgb3IgYSBsaXN0IG9mIHRob3NlLiIpKTtyZXR1cm4gaX0sdy5jb25maXJtPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gd2luZG93LmNvbmZpcm0odCk/ZSgpOm51bGwhPW4/bigpOnZvaWQgMH0sdy5pc1ZhbGlkRmlsZT1mdW5jdGlvbih0LGUpe2lmKCFlKXJldHVybiEwO2U9ZS5zcGxpdCgiLCIpO3ZhciBuLGk9dC50eXBlLHI9aS5yZXBsYWNlKC9cLy4qJC8sIiIpLG89ZChlLCEwKTt0cnl7Zm9yKG8ucygpOyEobj1vLm4oKSkuZG9uZTspe3ZhciBhPW4udmFsdWU7aWYoIi4iPT09KGE9YS50cmltKCkpLmNoYXJBdCgwKSl7aWYoLTEhPT10Lm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKGEudG9Mb3dlckNhc2UoKSx0Lm5hbWUubGVuZ3RoLWEubGVuZ3RoKSlyZXR1cm4hMH1lbHNlIGlmKC9cL1wqJC8udGVzdChhKSl7aWYocj09PWEucmVwbGFjZSgvXC8uKiQvLCIiKSlyZXR1cm4hMH1lbHNlIGlmKGk9PT1hKXJldHVybiEwfX1jYXRjaCh0KXtvLmUodCl9ZmluYWxseXtvLmYoKX1yZXR1cm4hMX0sInVuZGVmaW5lZCIhPXR5cGVvZiBqUXVlcnkmJm51bGwhPT1qUXVlcnkmJihqUXVlcnkuZm4uZHJvcHpvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHcodGhpcyx0KX0pKX0pLHcuQURERUQ9ImFkZGVkIix3LlFVRVVFRD0icXVldWVkIix3LkFDQ0VQVEVEPXcuUVVFVUVELHcuVVBMT0FESU5HPSJ1cGxvYWRpbmciLHcuUFJPQ0VTU0lORz13LlVQTE9BRElORyx3LkNBTkNFTEVEPSJjYW5jZWxlZCIsdy5FUlJPUj0iZXJyb3IiLHcuU1VDQ0VTUz0ic3VjY2VzcyI7dmFyIFM9ZnVuY3Rpb24odCxlLG4saSxyLG8sYSxzLGwsYyl7dmFyIHU9ZnVuY3Rpb24odCl7dC5uYXR1cmFsV2lkdGg7dmFyIGU9dC5uYXR1cmFsSGVpZ2h0LG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7bi53aWR0aD0xLG4uaGVpZ2h0PWU7dmFyIGk9bi5nZXRDb250ZXh0KCIyZCIpO2kuZHJhd0ltYWdlKHQsMCwwKTtmb3IodmFyIHI9aS5nZXRJbWFnZURhdGEoMSwwLDEsZSkuZGF0YSxvPTAsYT1lLHM9ZTtzPm87KTA9PT1yWzQqKHMtMSkrM10/YT1zOm89cyxzPWErbz4+MTt2YXIgbD1zL2U7cmV0dXJuIDA9PT1sPzE6bH0oZSk7cmV0dXJuIHQuZHJhd0ltYWdlKGUsbixpLHIsbyxhLHMsbCxjL3UpfSxDPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe2YodGhpcyx0KX1yZXR1cm4gZyh0LG51bGwsW3trZXk6ImluaXRDbGFzcyIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLktFWV9TVFI9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89In19LHtrZXk6ImVuY29kZTY0Iix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9IiIsbj12b2lkIDAsaT12b2lkIDAscj0iIixvPXZvaWQgMCxhPXZvaWQgMCxzPXZvaWQgMCxsPSIiLGM9MDtvPShuPXRbYysrXSk+PjIsYT0oMyZuKTw8NHwoaT10W2MrK10pPj40LHM9KDE1JmkpPDwyfChyPXRbYysrXSk+PjYsbD02MyZyLGlzTmFOKGkpP3M9bD02NDppc05hTihyKSYmKGw9NjQpLGU9ZSt0aGlzLktFWV9TVFIuY2hhckF0KG8pK3RoaXMuS0VZX1NUUi5jaGFyQXQoYSkrdGhpcy5LRVlfU1RSLmNoYXJBdChzKSt0aGlzLktFWV9TVFIuY2hhckF0KGwpLG49aT1yPSIiLG89YT1zPWw9IiIsYzx0Lmxlbmd0aDspO3JldHVybiBlfX0se2tleToicmVzdG9yZSIsdmFsdWU6ZnVuY3Rpb24odCxlKXtpZighdC5tYXRjaCgiZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwiKSlyZXR1cm4gZTt2YXIgbj10aGlzLmRlY29kZTY0KHQucmVwbGFjZSgiZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwiLCIiKSksaT10aGlzLnNsaWNlMlNlZ21lbnRzKG4pLHI9dGhpcy5leGlmTWFuaXB1bGF0aW9uKGUsaSk7cmV0dXJuImRhdGE6aW1hZ2UvanBlZztiYXNlNjQsIi5jb25jYXQodGhpcy5lbmNvZGU2NChyKSl9fSx7a2V5OiJleGlmTWFuaXB1bGF0aW9uIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBuPXRoaXMuZ2V0RXhpZkFycmF5KGUpLGk9dGhpcy5pbnNlcnRFeGlmKHQsbik7cmV0dXJuIG5ldyBVaW50OEFycmF5KGkpfX0se2tleToiZ2V0RXhpZkFycmF5Iix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dm9pZCAwLG49MDtuPHQubGVuZ3RoOyl7aWYoMjU1PT09KGU9dFtuXSlbMF0mMjI1PT09ZVsxXSlyZXR1cm4gZTtuKyt9cmV0dXJuW119fSx7a2V5OiJpbnNlcnRFeGlmIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciBuPXQucmVwbGFjZSgiZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwiLCIiKSxpPXRoaXMuZGVjb2RlNjQobikscj1pLmluZGV4T2YoMjU1LDMpLG89aS5zbGljZSgwLHIpLGE9aS5zbGljZShyKSxzPW87cmV0dXJuKHM9cy5jb25jYXQoZSkpLmNvbmNhdChhKX19LHtrZXk6InNsaWNlMlNlZ21lbnRzIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9MCxuPVtdOyEoMjU1PT09dFtlXSYyMTg9PT10W2UrMV0pOyl7aWYoMjU1PT09dFtlXSYyMTY9PT10W2UrMV0pZSs9MjtlbHNle3ZhciBpPWUrKDI1Nip0W2UrMl0rdFtlKzNdKSsyLHI9dC5zbGljZShlLGkpO24ucHVzaChyKSxlPWl9aWYoZT50Lmxlbmd0aClicmVha31yZXR1cm4gbn19LHtrZXk6ImRlY29kZTY0Iix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT12b2lkIDAsbj12b2lkIDAsaT0iIixyPXZvaWQgMCxvPXZvaWQgMCxhPSIiLHM9MCxsPVtdO2ZvcigvW15BLVphLXowLTlcK1wvXD1dL2cuZXhlYyh0KSYmY29uc29sZS53YXJuKCJUaGVyZSB3ZXJlIGludmFsaWQgYmFzZTY0IGNoYXJhY3RlcnMgaW4gdGhlIGlucHV0IHRleHQuXG5WYWxpZCBiYXNlNjQgY2hhcmFjdGVycyBhcmUgQS1aLCBhLXosIDAtOSwgJysnLCAnLycsYW5kICc9J1xuRXhwZWN0IGVycm9ycyBpbiBkZWNvZGluZy4iKSx0PXQucmVwbGFjZSgvW15BLVphLXowLTlcK1wvXD1dL2csIiIpO2U9dGhpcy5LRVlfU1RSLmluZGV4T2YodC5jaGFyQXQocysrKSk8PDJ8KHI9dGhpcy5LRVlfU1RSLmluZGV4T2YodC5jaGFyQXQocysrKSkpPj40LG49KDE1JnIpPDw0fChvPXRoaXMuS0VZX1NUUi5pbmRleE9mKHQuY2hhckF0KHMrKykpKT4+MixpPSgzJm8pPDw2fChhPXRoaXMuS0VZX1NUUi5pbmRleE9mKHQuY2hhckF0KHMrKykpKSxsLnB1c2goZSksNjQhPT1vJiZsLnB1c2gobiksNjQhPT1hJiZsLnB1c2goaSksZT1uPWk9IiIscj1vPWE9IiIsczx0Lmxlbmd0aDspO3JldHVybiBsfX1dKSx0fSgpO0MuaW5pdENsYXNzKCksdy5fYXV0b0Rpc2NvdmVyRnVuY3Rpb249ZnVuY3Rpb24oKXtpZih3LmF1dG9EaXNjb3ZlcilyZXR1cm4gdy5kaXNjb3ZlcigpfSxmdW5jdGlvbih0LGUpe3ZhciBuPSExLGk9ITAscj10LmRvY3VtZW50LG89ci5kb2N1bWVudEVsZW1lbnQsYT1yLmFkZEV2ZW50TGlzdGVuZXI/ImFkZEV2ZW50TGlzdGVuZXIiOiJhdHRhY2hFdmVudCIscz1yLmFkZEV2ZW50TGlzdGVuZXI/InJlbW92ZUV2ZW50TGlzdGVuZXIiOiJkZXRhY2hFdmVudCIsbD1yLmFkZEV2ZW50TGlzdGVuZXI/IiI6Im9uIixjPWZ1bmN0aW9uIGkobyl7aWYoInJlYWR5c3RhdGVjaGFuZ2UiIT09by50eXBlfHwiY29tcGxldGUiPT09ci5yZWFkeVN0YXRlKXJldHVybigibG9hZCI9PT1vLnR5cGU/dDpyKVtzXShsK28udHlwZSxpLCExKSwhbiYmKG49ITApP2UuY2FsbCh0LG8udHlwZXx8byk6dm9pZCAwfTtpZigiY29tcGxldGUiIT09ci5yZWFkeVN0YXRlKXtpZihyLmNyZWF0ZUV2ZW50T2JqZWN0JiZvLmRvU2Nyb2xsKXt0cnl7aT0hdC5mcmFtZUVsZW1lbnR9Y2F0Y2godCl7fWkmJmZ1bmN0aW9uIHQoKXt0cnl7by5kb1Njcm9sbCgibGVmdCIpfWNhdGNoKGUpe3JldHVybiB2b2lkIHNldFRpbWVvdXQodCw1MCl9cmV0dXJuIGMoInBvbGwiKX0oKX1yW2FdKGwrIkRPTUNvbnRlbnRMb2FkZWQiLGMsITEpLHJbYV0obCsicmVhZHlzdGF0ZWNoYW5nZSIsYywhMSksdFthXShsKyJsb2FkIixjLCExKX19KHdpbmRvdyx3Ll9hdXRvRGlzY292ZXJGdW5jdGlvbiksd2luZG93LkRyb3B6b25lPXcsZS5kZWZhdWx0PXd9XSl9KSksZnVuY3Rpb24odCl7ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyJqcXVlcnkiXSx0KTp0KCJvYmplY3QiPT10eXBlb2YgZXhwb3J0cz9yZXF1aXJlKCJqcXVlcnkiKTpqUXVlcnkpfSgoZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKCl7cmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDLmFwcGx5KERhdGUsYXJndW1lbnRzKSl9ZnVuY3Rpb24gaSgpe3ZhciB0PW5ldyBEYXRlO3JldHVybiBuKHQuZ2V0RnVsbFllYXIoKSx0LmdldE1vbnRoKCksdC5nZXREYXRlKCkpfWZ1bmN0aW9uIHIodCxlKXtyZXR1cm4gdC5nZXRVVENGdWxsWWVhcigpPT09ZS5nZXRVVENGdWxsWWVhcigpJiZ0LmdldFVUQ01vbnRoKCk9PT1lLmdldFVUQ01vbnRoKCkmJnQuZ2V0VVRDRGF0ZSgpPT09ZS5nZXRVVENEYXRlKCl9ZnVuY3Rpb24gbyhuLGkpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBpIT09ZSYmdC5mbi5kYXRlcGlja2VyLmRlcHJlY2F0ZWQoaSksdGhpc1tuXS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIGEoZSxuKXtmdW5jdGlvbiBpKHQsZSl7cmV0dXJuIGUudG9Mb3dlckNhc2UoKX12YXIgcj10KGUpLmRhdGEoKSxvPXt9LGE9bmV3IFJlZ0V4cCgiXiIrbi50b0xvd2VyQ2FzZSgpKyIoW0EtWl0pIik7Zm9yKHZhciBzIGluIG49bmV3IFJlZ0V4cCgiXiIrbi50b0xvd2VyQ2FzZSgpKSxyKW4udGVzdChzKSYmKG9bcy5yZXBsYWNlKGEsaSldPXJbc10pO3JldHVybiBvfWZ1bmN0aW9uIHMoZSl7dmFyIG49e307aWYoZ1tlXXx8KGU9ZS5zcGxpdCgiLSIpWzBdLGdbZV0pKXt2YXIgaT1nW2VdO3JldHVybiB0LmVhY2gocCwoZnVuY3Rpb24odCxlKXtlIGluIGkmJihuW2VdPWlbZV0pfSkpLG59fXZhciBsPWZ1bmN0aW9uKCl7dmFyIGU9e2dldDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5zbGljZSh0KVswXX0sY29udGFpbnM6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQmJnQudmFsdWVPZigpLG49MCxpPXRoaXMubGVuZ3RoO248aTtuKyspaWYoMDw9dGhpc1tuXS52YWx1ZU9mKCktZSYmdGhpc1tuXS52YWx1ZU9mKCktZTw4NjRlNSlyZXR1cm4gbjtyZXR1cm4tMX0scmVtb3ZlOmZ1bmN0aW9uKHQpe3RoaXMuc3BsaWNlKHQsMSl9LHJlcGxhY2U6ZnVuY3Rpb24oZSl7ZSYmKHQuaXNBcnJheShlKXx8KGU9W2VdKSx0aGlzLmNsZWFyKCksdGhpcy5wdXNoLmFwcGx5KHRoaXMsZSkpfSxjbGVhcjpmdW5jdGlvbigpe3RoaXMubGVuZ3RoPTB9LGNvcHk6ZnVuY3Rpb24oKXt2YXIgdD1uZXcgbDtyZXR1cm4gdC5yZXBsYWNlKHRoaXMpLHR9fTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1bXTtyZXR1cm4gbi5wdXNoLmFwcGx5KG4sYXJndW1lbnRzKSx0LmV4dGVuZChuLGUpLG59fSgpLGM9ZnVuY3Rpb24oZSxuKXt0LmRhdGEoZSwiZGF0ZXBpY2tlciIsdGhpcyksdGhpcy5fZXZlbnRzPVtdLHRoaXMuX3NlY29uZGFyeUV2ZW50cz1bXSx0aGlzLl9wcm9jZXNzX29wdGlvbnMobiksdGhpcy5kYXRlcz1uZXcgbCx0aGlzLnZpZXdEYXRlPXRoaXMuby5kZWZhdWx0Vmlld0RhdGUsdGhpcy5mb2N1c0RhdGU9bnVsbCx0aGlzLmVsZW1lbnQ9dChlKSx0aGlzLmlzSW5wdXQ9dGhpcy5lbGVtZW50LmlzKCJpbnB1dCIpLHRoaXMuaW5wdXRGaWVsZD10aGlzLmlzSW5wdXQ/dGhpcy5lbGVtZW50OnRoaXMuZWxlbWVudC5maW5kKCJpbnB1dCIpLHRoaXMuY29tcG9uZW50PSEhdGhpcy5lbGVtZW50Lmhhc0NsYXNzKCJkYXRlIikmJnRoaXMuZWxlbWVudC5maW5kKCIuYWRkLW9uLCAuaW5wdXQtZ3JvdXAtYWRkb24sIC5pbnB1dC1ncm91cC1hcHBlbmQsIC5pbnB1dC1ncm91cC1wcmVwZW5kLCAuYnRuIiksdGhpcy5jb21wb25lbnQmJjA9PT10aGlzLmNvbXBvbmVudC5sZW5ndGgmJih0aGlzLmNvbXBvbmVudD0hMSksdGhpcy5pc0lubGluZT0hdGhpcy5jb21wb25lbnQmJnRoaXMuZWxlbWVudC5pcygiZGl2IiksdGhpcy5waWNrZXI9dChtLnRlbXBsYXRlKSx0aGlzLl9jaGVja190ZW1wbGF0ZSh0aGlzLm8udGVtcGxhdGVzLmxlZnRBcnJvdykmJnRoaXMucGlja2VyLmZpbmQoIi5wcmV2IikuaHRtbCh0aGlzLm8udGVtcGxhdGVzLmxlZnRBcnJvdyksdGhpcy5fY2hlY2tfdGVtcGxhdGUodGhpcy5vLnRlbXBsYXRlcy5yaWdodEFycm93KSYmdGhpcy5waWNrZXIuZmluZCgiLm5leHQiKS5odG1sKHRoaXMuby50ZW1wbGF0ZXMucmlnaHRBcnJvdyksdGhpcy5fYnVpbGRFdmVudHMoKSx0aGlzLl9hdHRhY2hFdmVudHMoKSx0aGlzLmlzSW5saW5lP3RoaXMucGlja2VyLmFkZENsYXNzKCJkYXRlcGlja2VyLWlubGluZSIpLmFwcGVuZFRvKHRoaXMuZWxlbWVudCk6dGhpcy5waWNrZXIuYWRkQ2xhc3MoImRhdGVwaWNrZXItZHJvcGRvd24gZHJvcGRvd24tbWVudSIpLHRoaXMuby5ydGwmJnRoaXMucGlja2VyLmFkZENsYXNzKCJkYXRlcGlja2VyLXJ0bCIpLHRoaXMuby5jYWxlbmRhcldlZWtzJiZ0aGlzLnBpY2tlci5maW5kKCIuZGF0ZXBpY2tlci1kYXlzIC5kYXRlcGlja2VyLXN3aXRjaCwgdGhlYWQgLmRhdGVwaWNrZXItdGl0bGUsIHRmb290IC50b2RheSwgdGZvb3QgLmNsZWFyIikuYXR0cigiY29sc3BhbiIsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIE51bWJlcihlKSsxfSkpLHRoaXMuX3Byb2Nlc3Nfb3B0aW9ucyh7c3RhcnREYXRlOnRoaXMuX28uc3RhcnREYXRlLGVuZERhdGU6dGhpcy5fby5lbmREYXRlLGRheXNPZldlZWtEaXNhYmxlZDp0aGlzLm8uZGF5c09mV2Vla0Rpc2FibGVkLGRheXNPZldlZWtIaWdobGlnaHRlZDp0aGlzLm8uZGF5c09mV2Vla0hpZ2hsaWdodGVkLGRhdGVzRGlzYWJsZWQ6dGhpcy5vLmRhdGVzRGlzYWJsZWR9KSx0aGlzLl9hbGxvd191cGRhdGU9ITEsdGhpcy5zZXRWaWV3TW9kZSh0aGlzLm8uc3RhcnRWaWV3KSx0aGlzLl9hbGxvd191cGRhdGU9ITAsdGhpcy5maWxsRG93KCksdGhpcy5maWxsTW9udGhzKCksdGhpcy51cGRhdGUoKSx0aGlzLmlzSW5saW5lJiZ0aGlzLnNob3coKX07Yy5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmMsX3Jlc29sdmVWaWV3TmFtZTpmdW5jdGlvbihlKXtyZXR1cm4gdC5lYWNoKG0udmlld01vZGVzLChmdW5jdGlvbihuLGkpe2lmKGU9PT1ufHwtMSE9PXQuaW5BcnJheShlLGkubmFtZXMpKXJldHVybiBlPW4sITF9KSksZX0sX3Jlc29sdmVEYXlzT2ZXZWVrOmZ1bmN0aW9uKGUpe3JldHVybiB0LmlzQXJyYXkoZSl8fChlPWUuc3BsaXQoL1ssXHNdKi8pKSx0Lm1hcChlLE51bWJlcil9LF9jaGVja190ZW1wbGF0ZTpmdW5jdGlvbihuKXt0cnl7cmV0dXJuIG4hPT1lJiYiIiE9PW4mJigobi5tYXRjaCgvWzw+XS9nKXx8W10pLmxlbmd0aDw9MHx8dChuKS5sZW5ndGg+MCl9Y2F0Y2godCl7cmV0dXJuITF9fSxfcHJvY2Vzc19vcHRpb25zOmZ1bmN0aW9uKGUpe3RoaXMuX289dC5leHRlbmQoe30sdGhpcy5fbyxlKTt2YXIgcj10aGlzLm89dC5leHRlbmQoe30sdGhpcy5fbyksbz1yLmxhbmd1YWdlO2dbb118fChvPW8uc3BsaXQoIi0iKVswXSxnW29dfHwobz1mLmxhbmd1YWdlKSksci5sYW5ndWFnZT1vLHIuc3RhcnRWaWV3PXRoaXMuX3Jlc29sdmVWaWV3TmFtZShyLnN0YXJ0Vmlldyksci5taW5WaWV3TW9kZT10aGlzLl9yZXNvbHZlVmlld05hbWUoci5taW5WaWV3TW9kZSksci5tYXhWaWV3TW9kZT10aGlzLl9yZXNvbHZlVmlld05hbWUoci5tYXhWaWV3TW9kZSksci5zdGFydFZpZXc9TWF0aC5tYXgodGhpcy5vLm1pblZpZXdNb2RlLE1hdGgubWluKHRoaXMuby5tYXhWaWV3TW9kZSxyLnN0YXJ0VmlldykpLCEwIT09ci5tdWx0aWRhdGUmJihyLm11bHRpZGF0ZT1OdW1iZXIoci5tdWx0aWRhdGUpfHwhMSwhMSE9PXIubXVsdGlkYXRlJiYoci5tdWx0aWRhdGU9TWF0aC5tYXgoMCxyLm11bHRpZGF0ZSkpKSxyLm11bHRpZGF0ZVNlcGFyYXRvcj1TdHJpbmcoci5tdWx0aWRhdGVTZXBhcmF0b3IpLHIud2Vla1N0YXJ0JT03LHIud2Vla0VuZD0oci53ZWVrU3RhcnQrNiklNzt2YXIgYT1tLnBhcnNlRm9ybWF0KHIuZm9ybWF0KTtyLnN0YXJ0RGF0ZSE9PS0xLzAmJihyLnN0YXJ0RGF0ZT9yLnN0YXJ0RGF0ZSBpbnN0YW5jZW9mIERhdGU/ci5zdGFydERhdGU9dGhpcy5fbG9jYWxfdG9fdXRjKHRoaXMuX3plcm9fdGltZShyLnN0YXJ0RGF0ZSkpOnIuc3RhcnREYXRlPW0ucGFyc2VEYXRlKHIuc3RhcnREYXRlLGEsci5sYW5ndWFnZSxyLmFzc3VtZU5lYXJieVllYXIpOnIuc3RhcnREYXRlPS0xLzApLHIuZW5kRGF0ZSE9PTEvMCYmKHIuZW5kRGF0ZT9yLmVuZERhdGUgaW5zdGFuY2VvZiBEYXRlP3IuZW5kRGF0ZT10aGlzLl9sb2NhbF90b191dGModGhpcy5femVyb190aW1lKHIuZW5kRGF0ZSkpOnIuZW5kRGF0ZT1tLnBhcnNlRGF0ZShyLmVuZERhdGUsYSxyLmxhbmd1YWdlLHIuYXNzdW1lTmVhcmJ5WWVhcik6ci5lbmREYXRlPTEvMCksci5kYXlzT2ZXZWVrRGlzYWJsZWQ9dGhpcy5fcmVzb2x2ZURheXNPZldlZWsoci5kYXlzT2ZXZWVrRGlzYWJsZWR8fFtdKSxyLmRheXNPZldlZWtIaWdobGlnaHRlZD10aGlzLl9yZXNvbHZlRGF5c09mV2VlayhyLmRheXNPZldlZWtIaWdobGlnaHRlZHx8W10pLHIuZGF0ZXNEaXNhYmxlZD1yLmRhdGVzRGlzYWJsZWR8fFtdLHQuaXNBcnJheShyLmRhdGVzRGlzYWJsZWQpfHwoci5kYXRlc0Rpc2FibGVkPXIuZGF0ZXNEaXNhYmxlZC5zcGxpdCgiLCIpKSxyLmRhdGVzRGlzYWJsZWQ9dC5tYXAoci5kYXRlc0Rpc2FibGVkLChmdW5jdGlvbih0KXtyZXR1cm4gbS5wYXJzZURhdGUodCxhLHIubGFuZ3VhZ2Usci5hc3N1bWVOZWFyYnlZZWFyKX0pKTt2YXIgcz1TdHJpbmcoci5vcmllbnRhdGlvbikudG9Mb3dlckNhc2UoKS5zcGxpdCgvXHMrL2cpLGw9ci5vcmllbnRhdGlvbi50b0xvd2VyQ2FzZSgpO2lmKHM9dC5ncmVwKHMsKGZ1bmN0aW9uKHQpe3JldHVybi9eYXV0b3xsZWZ0fHJpZ2h0fHRvcHxib3R0b20kLy50ZXN0KHQpfSkpLHIub3JpZW50YXRpb249e3g6ImF1dG8iLHk6ImF1dG8ifSxsJiYiYXV0byIhPT1sKWlmKDE9PT1zLmxlbmd0aClzd2l0Y2goc1swXSl7Y2FzZSJ0b3AiOmNhc2UiYm90dG9tIjpyLm9yaWVudGF0aW9uLnk9c1swXTticmVhaztjYXNlImxlZnQiOmNhc2UicmlnaHQiOnIub3JpZW50YXRpb24ueD1zWzBdfWVsc2UgbD10LmdyZXAocywoZnVuY3Rpb24odCl7cmV0dXJuL15sZWZ0fHJpZ2h0JC8udGVzdCh0KX0pKSxyLm9yaWVudGF0aW9uLng9bFswXXx8ImF1dG8iLGw9dC5ncmVwKHMsKGZ1bmN0aW9uKHQpe3JldHVybi9edG9wfGJvdHRvbSQvLnRlc3QodCl9KSksci5vcmllbnRhdGlvbi55PWxbMF18fCJhdXRvIjtpZihyLmRlZmF1bHRWaWV3RGF0ZSBpbnN0YW5jZW9mIERhdGV8fCJzdHJpbmciPT10eXBlb2Ygci5kZWZhdWx0Vmlld0RhdGUpci5kZWZhdWx0Vmlld0RhdGU9bS5wYXJzZURhdGUoci5kZWZhdWx0Vmlld0RhdGUsYSxyLmxhbmd1YWdlLHIuYXNzdW1lTmVhcmJ5WWVhcik7ZWxzZSBpZihyLmRlZmF1bHRWaWV3RGF0ZSl7dmFyIGM9ci5kZWZhdWx0Vmlld0RhdGUueWVhcnx8KG5ldyBEYXRlKS5nZXRGdWxsWWVhcigpLHU9ci5kZWZhdWx0Vmlld0RhdGUubW9udGh8fDAsZD1yLmRlZmF1bHRWaWV3RGF0ZS5kYXl8fDE7ci5kZWZhdWx0Vmlld0RhdGU9bihjLHUsZCl9ZWxzZSByLmRlZmF1bHRWaWV3RGF0ZT1pKCl9LF9hcHBseUV2ZW50czpmdW5jdGlvbih0KXtmb3IodmFyIG4saSxyLG89MDtvPHQubGVuZ3RoO28rKyluPXRbb11bMF0sMj09PXRbb10ubGVuZ3RoPyhpPWUscj10W29dWzFdKTozPT09dFtvXS5sZW5ndGgmJihpPXRbb11bMV0scj10W29dWzJdKSxuLm9uKHIsaSl9LF91bmFwcGx5RXZlbnRzOmZ1bmN0aW9uKHQpe2Zvcih2YXIgbixpLHIsbz0wO288dC5sZW5ndGg7bysrKW49dFtvXVswXSwyPT09dFtvXS5sZW5ndGg/KHI9ZSxpPXRbb11bMV0pOjM9PT10W29dLmxlbmd0aCYmKHI9dFtvXVsxXSxpPXRbb11bMl0pLG4ub2ZmKGkscil9LF9idWlsZEV2ZW50czpmdW5jdGlvbigpe3ZhciBlPXtrZXl1cDp0LnByb3h5KChmdW5jdGlvbihlKXstMT09PXQuaW5BcnJheShlLmtleUNvZGUsWzI3LDM3LDM5LDM4LDQwLDMyLDEzLDldKSYmdGhpcy51cGRhdGUoKX0pLHRoaXMpLGtleWRvd246dC5wcm94eSh0aGlzLmtleWRvd24sdGhpcykscGFzdGU6dC5wcm94eSh0aGlzLnBhc3RlLHRoaXMpfTshMD09PXRoaXMuby5zaG93T25Gb2N1cyYmKGUuZm9jdXM9dC5wcm94eSh0aGlzLnNob3csdGhpcykpLHRoaXMuaXNJbnB1dD90aGlzLl9ldmVudHM9W1t0aGlzLmVsZW1lbnQsZV1dOnRoaXMuY29tcG9uZW50JiZ0aGlzLmlucHV0RmllbGQubGVuZ3RoP3RoaXMuX2V2ZW50cz1bW3RoaXMuaW5wdXRGaWVsZCxlXSxbdGhpcy5jb21wb25lbnQse2NsaWNrOnQucHJveHkodGhpcy5zaG93LHRoaXMpfV1dOnRoaXMuX2V2ZW50cz1bW3RoaXMuZWxlbWVudCx7Y2xpY2s6dC5wcm94eSh0aGlzLnNob3csdGhpcyksa2V5ZG93bjp0LnByb3h5KHRoaXMua2V5ZG93bix0aGlzKX1dXSx0aGlzLl9ldmVudHMucHVzaChbdGhpcy5lbGVtZW50LCIqIix7Ymx1cjp0LnByb3h5KChmdW5jdGlvbih0KXt0aGlzLl9mb2N1c2VkX2Zyb209dC50YXJnZXR9KSx0aGlzKX1dLFt0aGlzLmVsZW1lbnQse2JsdXI6dC5wcm94eSgoZnVuY3Rpb24odCl7dGhpcy5fZm9jdXNlZF9mcm9tPXQudGFyZ2V0fSksdGhpcyl9XSksdGhpcy5vLmltbWVkaWF0ZVVwZGF0ZXMmJnRoaXMuX2V2ZW50cy5wdXNoKFt0aGlzLmVsZW1lbnQseyJjaGFuZ2VZZWFyIGNoYW5nZU1vbnRoIjp0LnByb3h5KChmdW5jdGlvbih0KXt0aGlzLnVwZGF0ZSh0LmRhdGUpfSksdGhpcyl9XSksdGhpcy5fc2Vjb25kYXJ5RXZlbnRzPVtbdGhpcy5waWNrZXIse2NsaWNrOnQucHJveHkodGhpcy5jbGljayx0aGlzKX1dLFt0aGlzLnBpY2tlciwiLnByZXYsIC5uZXh0Iix7Y2xpY2s6dC5wcm94eSh0aGlzLm5hdkFycm93c0NsaWNrLHRoaXMpfV0sW3RoaXMucGlja2VyLCIuZGF5Om5vdCguZGlzYWJsZWQpIix7Y2xpY2s6dC5wcm94eSh0aGlzLmRheUNlbGxDbGljayx0aGlzKX1dLFt0KHdpbmRvdykse3Jlc2l6ZTp0LnByb3h5KHRoaXMucGxhY2UsdGhpcyl9XSxbdChkb2N1bWVudCkseyJtb3VzZWRvd24gdG91Y2hzdGFydCI6dC5wcm94eSgoZnVuY3Rpb24odCl7dGhpcy5lbGVtZW50LmlzKHQudGFyZ2V0KXx8dGhpcy5lbGVtZW50LmZpbmQodC50YXJnZXQpLmxlbmd0aHx8dGhpcy5waWNrZXIuaXModC50YXJnZXQpfHx0aGlzLnBpY2tlci5maW5kKHQudGFyZ2V0KS5sZW5ndGh8fHRoaXMuaXNJbmxpbmV8fHRoaXMuaGlkZSgpfSksdGhpcyl9XV19LF9hdHRhY2hFdmVudHM6ZnVuY3Rpb24oKXt0aGlzLl9kZXRhY2hFdmVudHMoKSx0aGlzLl9hcHBseUV2ZW50cyh0aGlzLl9ldmVudHMpfSxfZGV0YWNoRXZlbnRzOmZ1bmN0aW9uKCl7dGhpcy5fdW5hcHBseUV2ZW50cyh0aGlzLl9ldmVudHMpfSxfYXR0YWNoU2Vjb25kYXJ5RXZlbnRzOmZ1bmN0aW9uKCl7dGhpcy5fZGV0YWNoU2Vjb25kYXJ5RXZlbnRzKCksdGhpcy5fYXBwbHlFdmVudHModGhpcy5fc2Vjb25kYXJ5RXZlbnRzKX0sX2RldGFjaFNlY29uZGFyeUV2ZW50czpmdW5jdGlvbigpe3RoaXMuX3VuYXBwbHlFdmVudHModGhpcy5fc2Vjb25kYXJ5RXZlbnRzKX0sX3RyaWdnZXI6ZnVuY3Rpb24oZSxuKXt2YXIgaT1ufHx0aGlzLmRhdGVzLmdldCgtMSkscj10aGlzLl91dGNfdG9fbG9jYWwoaSk7dGhpcy5lbGVtZW50LnRyaWdnZXIoe3R5cGU6ZSxkYXRlOnIsdmlld01vZGU6dGhpcy52aWV3TW9kZSxkYXRlczp0Lm1hcCh0aGlzLmRhdGVzLHRoaXMuX3V0Y190b19sb2NhbCksZm9ybWF0OnQucHJveHkoKGZ1bmN0aW9uKHQsZSl7MD09PWFyZ3VtZW50cy5sZW5ndGg/KHQ9dGhpcy5kYXRlcy5sZW5ndGgtMSxlPXRoaXMuby5mb3JtYXQpOiJzdHJpbmciPT10eXBlb2YgdCYmKGU9dCx0PXRoaXMuZGF0ZXMubGVuZ3RoLTEpLGU9ZXx8dGhpcy5vLmZvcm1hdDt2YXIgbj10aGlzLmRhdGVzLmdldCh0KTtyZXR1cm4gbS5mb3JtYXREYXRlKG4sZSx0aGlzLm8ubGFuZ3VhZ2UpfSksdGhpcyl9KX0sc2hvdzpmdW5jdGlvbigpe2lmKCEodGhpcy5pbnB1dEZpZWxkLmlzKCI6ZGlzYWJsZWQiKXx8dGhpcy5pbnB1dEZpZWxkLnByb3AoInJlYWRvbmx5IikmJiExPT09dGhpcy5vLmVuYWJsZU9uUmVhZG9ubHkpKXJldHVybiB0aGlzLmlzSW5saW5lfHx0aGlzLnBpY2tlci5hcHBlbmRUbyh0aGlzLm8uY29udGFpbmVyKSx0aGlzLnBsYWNlKCksdGhpcy5waWNrZXIuc2hvdygpLHRoaXMuX2F0dGFjaFNlY29uZGFyeUV2ZW50cygpLHRoaXMuX3RyaWdnZXIoInNob3ciKSwod2luZG93Lm5hdmlnYXRvci5tc01heFRvdWNoUG9pbnRzfHwib250b3VjaHN0YXJ0ImluIGRvY3VtZW50KSYmdGhpcy5vLmRpc2FibGVUb3VjaEtleWJvYXJkJiZ0KHRoaXMuZWxlbWVudCkuYmx1cigpLHRoaXN9LGhpZGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0lubGluZXx8IXRoaXMucGlja2VyLmlzKCI6dmlzaWJsZSIpfHwodGhpcy5mb2N1c0RhdGU9bnVsbCx0aGlzLnBpY2tlci5oaWRlKCkuZGV0YWNoKCksdGhpcy5fZGV0YWNoU2Vjb25kYXJ5RXZlbnRzKCksdGhpcy5zZXRWaWV3TW9kZSh0aGlzLm8uc3RhcnRWaWV3KSx0aGlzLm8uZm9yY2VQYXJzZSYmdGhpcy5pbnB1dEZpZWxkLnZhbCgpJiZ0aGlzLnNldFZhbHVlKCksdGhpcy5fdHJpZ2dlcigiaGlkZSIpKSx0aGlzfSxkZXN0cm95OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaGlkZSgpLHRoaXMuX2RldGFjaEV2ZW50cygpLHRoaXMuX2RldGFjaFNlY29uZGFyeUV2ZW50cygpLHRoaXMucGlja2VyLnJlbW92ZSgpLGRlbGV0ZSB0aGlzLmVsZW1lbnQuZGF0YSgpLmRhdGVwaWNrZXIsdGhpcy5pc0lucHV0fHxkZWxldGUgdGhpcy5lbGVtZW50LmRhdGEoKS5kYXRlLHRoaXN9LHBhc3RlOmZ1bmN0aW9uKGUpe3ZhciBuO2lmKGUub3JpZ2luYWxFdmVudC5jbGlwYm9hcmREYXRhJiZlLm9yaWdpbmFsRXZlbnQuY2xpcGJvYXJkRGF0YS50eXBlcyYmLTEhPT10LmluQXJyYXkoInRleHQvcGxhaW4iLGUub3JpZ2luYWxFdmVudC5jbGlwYm9hcmREYXRhLnR5cGVzKSluPWUub3JpZ2luYWxFdmVudC5jbGlwYm9hcmREYXRhLmdldERhdGEoInRleHQvcGxhaW4iKTtlbHNle2lmKCF3aW5kb3cuY2xpcGJvYXJkRGF0YSlyZXR1cm47bj13aW5kb3cuY2xpcGJvYXJkRGF0YS5nZXREYXRhKCJUZXh0Iil9dGhpcy5zZXREYXRlKG4pLHRoaXMudXBkYXRlKCksZS5wcmV2ZW50RGVmYXVsdCgpfSxfdXRjX3RvX2xvY2FsOmZ1bmN0aW9uKHQpe2lmKCF0KXJldHVybiB0O3ZhciBlPW5ldyBEYXRlKHQuZ2V0VGltZSgpKzZlNCp0LmdldFRpbWV6b25lT2Zmc2V0KCkpO3JldHVybiBlLmdldFRpbWV6b25lT2Zmc2V0KCkhPT10LmdldFRpbWV6b25lT2Zmc2V0KCkmJihlPW5ldyBEYXRlKHQuZ2V0VGltZSgpKzZlNCplLmdldFRpbWV6b25lT2Zmc2V0KCkpKSxlfSxfbG9jYWxfdG9fdXRjOmZ1bmN0aW9uKHQpe3JldHVybiB0JiZuZXcgRGF0ZSh0LmdldFRpbWUoKS02ZTQqdC5nZXRUaW1lem9uZU9mZnNldCgpKX0sX3plcm9fdGltZTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmbmV3IERhdGUodC5nZXRGdWxsWWVhcigpLHQuZ2V0TW9udGgoKSx0LmdldERhdGUoKSl9LF96ZXJvX3V0Y190aW1lOmZ1bmN0aW9uKHQpe3JldHVybiB0JiZuKHQuZ2V0VVRDRnVsbFllYXIoKSx0LmdldFVUQ01vbnRoKCksdC5nZXRVVENEYXRlKCkpfSxnZXREYXRlczpmdW5jdGlvbigpe3JldHVybiB0Lm1hcCh0aGlzLmRhdGVzLHRoaXMuX3V0Y190b19sb2NhbCl9LGdldFVUQ0RhdGVzOmZ1bmN0aW9uKCl7cmV0dXJuIHQubWFwKHRoaXMuZGF0ZXMsKGZ1bmN0aW9uKHQpe3JldHVybiBuZXcgRGF0ZSh0KX0pKX0sZ2V0RGF0ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl91dGNfdG9fbG9jYWwodGhpcy5nZXRVVENEYXRlKCkpfSxnZXRVVENEYXRlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5kYXRlcy5nZXQoLTEpO3JldHVybiB0IT09ZT9uZXcgRGF0ZSh0KTpudWxsfSxjbGVhckRhdGVzOmZ1bmN0aW9uKCl7dGhpcy5pbnB1dEZpZWxkLnZhbCgiIiksdGhpcy51cGRhdGUoKSx0aGlzLl90cmlnZ2VyKCJjaGFuZ2VEYXRlIiksdGhpcy5vLmF1dG9jbG9zZSYmdGhpcy5oaWRlKCl9LHNldERhdGVzOmZ1bmN0aW9uKCl7dmFyIGU9dC5pc0FycmF5KGFyZ3VtZW50c1swXSk/YXJndW1lbnRzWzBdOmFyZ3VtZW50cztyZXR1cm4gdGhpcy51cGRhdGUuYXBwbHkodGhpcyxlKSx0aGlzLl90cmlnZ2VyKCJjaGFuZ2VEYXRlIiksdGhpcy5zZXRWYWx1ZSgpLHRoaXN9LHNldFVUQ0RhdGVzOmZ1bmN0aW9uKCl7dmFyIGU9dC5pc0FycmF5KGFyZ3VtZW50c1swXSk/YXJndW1lbnRzWzBdOmFyZ3VtZW50cztyZXR1cm4gdGhpcy5zZXREYXRlcy5hcHBseSh0aGlzLHQubWFwKGUsdGhpcy5fdXRjX3RvX2xvY2FsKSksdGhpc30sc2V0RGF0ZTpvKCJzZXREYXRlcyIpLHNldFVUQ0RhdGU6bygic2V0VVRDRGF0ZXMiKSxyZW1vdmU6bygiZGVzdHJveSIsIk1ldGhvZCBgcmVtb3ZlYCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdmVyc2lvbiAyLjAuIFVzZSBgZGVzdHJveWAgaW5zdGVhZCIpLHNldFZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5nZXRGb3JtYXR0ZWREYXRlKCk7cmV0dXJuIHRoaXMuaW5wdXRGaWVsZC52YWwodCksdGhpc30sZ2V0Rm9ybWF0dGVkRGF0ZTpmdW5jdGlvbihuKXtuPT09ZSYmKG49dGhpcy5vLmZvcm1hdCk7dmFyIGk9dGhpcy5vLmxhbmd1YWdlO3JldHVybiB0Lm1hcCh0aGlzLmRhdGVzLChmdW5jdGlvbih0KXtyZXR1cm4gbS5mb3JtYXREYXRlKHQsbixpKX0pKS5qb2luKHRoaXMuby5tdWx0aWRhdGVTZXBhcmF0b3IpfSxnZXRTdGFydERhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vLnN0YXJ0RGF0ZX0sc2V0U3RhcnREYXRlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wcm9jZXNzX29wdGlvbnMoe3N0YXJ0RGF0ZTp0fSksdGhpcy51cGRhdGUoKSx0aGlzLnVwZGF0ZU5hdkFycm93cygpLHRoaXN9LGdldEVuZERhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vLmVuZERhdGV9LHNldEVuZERhdGU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3Byb2Nlc3Nfb3B0aW9ucyh7ZW5kRGF0ZTp0fSksdGhpcy51cGRhdGUoKSx0aGlzLnVwZGF0ZU5hdkFycm93cygpLHRoaXN9LHNldERheXNPZldlZWtEaXNhYmxlZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcHJvY2Vzc19vcHRpb25zKHtkYXlzT2ZXZWVrRGlzYWJsZWQ6dH0pLHRoaXMudXBkYXRlKCksdGhpc30sc2V0RGF5c09mV2Vla0hpZ2hsaWdodGVkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wcm9jZXNzX29wdGlvbnMoe2RheXNPZldlZWtIaWdobGlnaHRlZDp0fSksdGhpcy51cGRhdGUoKSx0aGlzfSxzZXREYXRlc0Rpc2FibGVkOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wcm9jZXNzX29wdGlvbnMoe2RhdGVzRGlzYWJsZWQ6dH0pLHRoaXMudXBkYXRlKCksdGhpc30scGxhY2U6ZnVuY3Rpb24oKXtpZih0aGlzLmlzSW5saW5lKXJldHVybiB0aGlzO3ZhciBlPXRoaXMucGlja2VyLm91dGVyV2lkdGgoKSxuPXRoaXMucGlja2VyLm91dGVySGVpZ2h0KCksaT10KHRoaXMuby5jb250YWluZXIpLHI9aS53aWR0aCgpLG89ImJvZHkiPT09dGhpcy5vLmNvbnRhaW5lcj90KGRvY3VtZW50KS5zY3JvbGxUb3AoKTppLnNjcm9sbFRvcCgpLGE9aS5vZmZzZXQoKSxzPVswXTt0aGlzLmVsZW1lbnQucGFyZW50cygpLmVhY2goKGZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzKS5jc3MoInotaW5kZXgiKTsiYXV0byIhPT1lJiYwIT09TnVtYmVyKGUpJiZzLnB1c2goTnVtYmVyKGUpKX0pKTt2YXIgbD1NYXRoLm1heC5hcHBseShNYXRoLHMpK3RoaXMuby56SW5kZXhPZmZzZXQsYz10aGlzLmNvbXBvbmVudD90aGlzLmNvbXBvbmVudC5wYXJlbnQoKS5vZmZzZXQoKTp0aGlzLmVsZW1lbnQub2Zmc2V0KCksdT10aGlzLmNvbXBvbmVudD90aGlzLmNvbXBvbmVudC5vdXRlckhlaWdodCghMCk6dGhpcy5lbGVtZW50Lm91dGVySGVpZ2h0KCExKSxkPXRoaXMuY29tcG9uZW50P3RoaXMuY29tcG9uZW50Lm91dGVyV2lkdGgoITApOnRoaXMuZWxlbWVudC5vdXRlcldpZHRoKCExKSxoPWMubGVmdC1hLmxlZnQsZj1jLnRvcC1hLnRvcDsiYm9keSIhPT10aGlzLm8uY29udGFpbmVyJiYoZis9byksdGhpcy5waWNrZXIucmVtb3ZlQ2xhc3MoImRhdGVwaWNrZXItb3JpZW50LXRvcCBkYXRlcGlja2VyLW9yaWVudC1ib3R0b20gZGF0ZXBpY2tlci1vcmllbnQtcmlnaHQgZGF0ZXBpY2tlci1vcmllbnQtbGVmdCIpLCJhdXRvIiE9PXRoaXMuby5vcmllbnRhdGlvbi54Pyh0aGlzLnBpY2tlci5hZGRDbGFzcygiZGF0ZXBpY2tlci1vcmllbnQtIit0aGlzLm8ub3JpZW50YXRpb24ueCksInJpZ2h0Ij09PXRoaXMuby5vcmllbnRhdGlvbi54JiYoaC09ZS1kKSk6Yy5sZWZ0PDA/KHRoaXMucGlja2VyLmFkZENsYXNzKCJkYXRlcGlja2VyLW9yaWVudC1sZWZ0IiksaC09Yy5sZWZ0LTEwKTpoK2U+cj8odGhpcy5waWNrZXIuYWRkQ2xhc3MoImRhdGVwaWNrZXItb3JpZW50LXJpZ2h0IiksaCs9ZC1lKTp0aGlzLm8ucnRsP3RoaXMucGlja2VyLmFkZENsYXNzKCJkYXRlcGlja2VyLW9yaWVudC1yaWdodCIpOnRoaXMucGlja2VyLmFkZENsYXNzKCJkYXRlcGlja2VyLW9yaWVudC1sZWZ0Iik7dmFyIHA9dGhpcy5vLm9yaWVudGF0aW9uLnk7aWYoImF1dG8iPT09cCYmKHA9LW8rZi1uPDA/ImJvdHRvbSI6InRvcCIpLHRoaXMucGlja2VyLmFkZENsYXNzKCJkYXRlcGlja2VyLW9yaWVudC0iK3ApLCJ0b3AiPT09cD9mLT1uK3BhcnNlSW50KHRoaXMucGlja2VyLmNzcygicGFkZGluZy10b3AiKSk6Zis9dSx0aGlzLm8ucnRsKXt2YXIgZz1yLShoK2QpO3RoaXMucGlja2VyLmNzcyh7dG9wOmYscmlnaHQ6Zyx6SW5kZXg6bH0pfWVsc2UgdGhpcy5waWNrZXIuY3NzKHt0b3A6ZixsZWZ0OmgsekluZGV4Omx9KTtyZXR1cm4gdGhpc30sX2FsbG93X3VwZGF0ZTohMCx1cGRhdGU6ZnVuY3Rpb24oKXtpZighdGhpcy5fYWxsb3dfdXBkYXRlKXJldHVybiB0aGlzO3ZhciBlPXRoaXMuZGF0ZXMuY29weSgpLG49W10saT0hMTtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odC5lYWNoKGFyZ3VtZW50cyx0LnByb3h5KChmdW5jdGlvbih0LGUpe2UgaW5zdGFuY2VvZiBEYXRlJiYoZT10aGlzLl9sb2NhbF90b191dGMoZSkpLG4ucHVzaChlKX0pLHRoaXMpKSxpPSEwKToobj0obj10aGlzLmlzSW5wdXQ/dGhpcy5lbGVtZW50LnZhbCgpOnRoaXMuZWxlbWVudC5kYXRhKCJkYXRlIil8fHRoaXMuaW5wdXRGaWVsZC52YWwoKSkmJnRoaXMuby5tdWx0aWRhdGU/bi5zcGxpdCh0aGlzLm8ubXVsdGlkYXRlU2VwYXJhdG9yKTpbbl0sZGVsZXRlIHRoaXMuZWxlbWVudC5kYXRhKCkuZGF0ZSksbj10Lm1hcChuLHQucHJveHkoKGZ1bmN0aW9uKHQpe3JldHVybiBtLnBhcnNlRGF0ZSh0LHRoaXMuby5mb3JtYXQsdGhpcy5vLmxhbmd1YWdlLHRoaXMuby5hc3N1bWVOZWFyYnlZZWFyKX0pLHRoaXMpKSxuPXQuZ3JlcChuLHQucHJveHkoKGZ1bmN0aW9uKHQpe3JldHVybiF0aGlzLmRhdGVXaXRoaW5SYW5nZSh0KXx8IXR9KSx0aGlzKSwhMCksdGhpcy5kYXRlcy5yZXBsYWNlKG4pLHRoaXMuby51cGRhdGVWaWV3RGF0ZSYmKHRoaXMuZGF0ZXMubGVuZ3RoP3RoaXMudmlld0RhdGU9bmV3IERhdGUodGhpcy5kYXRlcy5nZXQoLTEpKTp0aGlzLnZpZXdEYXRlPHRoaXMuby5zdGFydERhdGU/dGhpcy52aWV3RGF0ZT1uZXcgRGF0ZSh0aGlzLm8uc3RhcnREYXRlKTp0aGlzLnZpZXdEYXRlPnRoaXMuby5lbmREYXRlP3RoaXMudmlld0RhdGU9bmV3IERhdGUodGhpcy5vLmVuZERhdGUpOnRoaXMudmlld0RhdGU9dGhpcy5vLmRlZmF1bHRWaWV3RGF0ZSksaT8odGhpcy5zZXRWYWx1ZSgpLHRoaXMuZWxlbWVudC5jaGFuZ2UoKSk6dGhpcy5kYXRlcy5sZW5ndGgmJlN0cmluZyhlKSE9PVN0cmluZyh0aGlzLmRhdGVzKSYmaSYmKHRoaXMuX3RyaWdnZXIoImNoYW5nZURhdGUiKSx0aGlzLmVsZW1lbnQuY2hhbmdlKCkpLCF0aGlzLmRhdGVzLmxlbmd0aCYmZS5sZW5ndGgmJih0aGlzLl90cmlnZ2VyKCJjbGVhckRhdGUiKSx0aGlzLmVsZW1lbnQuY2hhbmdlKCkpLHRoaXMuZmlsbCgpLHRoaXN9LGZpbGxEb3c6ZnVuY3Rpb24oKXtpZih0aGlzLm8uc2hvd1dlZWtEYXlzKXt2YXIgZT10aGlzLm8ud2Vla1N0YXJ0LG49Ijx0cj4iO2Zvcih0aGlzLm8uY2FsZW5kYXJXZWVrcyYmKG4rPSc8dGggY2xhc3M9ImN3Ij4mIzE2MDs8L3RoPicpO2U8dGhpcy5vLndlZWtTdGFydCs3OyluKz0nPHRoIGNsYXNzPSJkb3cnLC0xIT09dC5pbkFycmF5KGUsdGhpcy5vLmRheXNPZldlZWtEaXNhYmxlZCkmJihuKz0iIGRpc2FibGVkIiksbis9JyI+JytnW3RoaXMuby5sYW5ndWFnZV0uZGF5c01pbltlKyslN10rIjwvdGg+IjtuKz0iPC90cj4iLHRoaXMucGlja2VyLmZpbmQoIi5kYXRlcGlja2VyLWRheXMgdGhlYWQiKS5hcHBlbmQobil9fSxmaWxsTW9udGhzOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuX3V0Y190b19sb2NhbCh0aGlzLnZpZXdEYXRlKSxlPSIiLG49MDtuPDEyO24rKyllKz0nPHNwYW4gY2xhc3M9Im1vbnRoJysodCYmdC5nZXRNb250aCgpPT09bj8iIGZvY3VzZWQiOiIiKSsnIj4nK2dbdGhpcy5vLmxhbmd1YWdlXS5tb250aHNTaG9ydFtuXSsiPC9zcGFuPiI7dGhpcy5waWNrZXIuZmluZCgiLmRhdGVwaWNrZXItbW9udGhzIHRkIikuaHRtbChlKX0sc2V0UmFuZ2U6ZnVuY3Rpb24oZSl7ZSYmZS5sZW5ndGg/dGhpcy5yYW5nZT10Lm1hcChlLChmdW5jdGlvbih0KXtyZXR1cm4gdC52YWx1ZU9mKCl9KSk6ZGVsZXRlIHRoaXMucmFuZ2UsdGhpcy5maWxsKCl9LGdldENsYXNzTmFtZXM6ZnVuY3Rpb24oZSl7dmFyIG49W10sbz10aGlzLnZpZXdEYXRlLmdldFVUQ0Z1bGxZZWFyKCksYT10aGlzLnZpZXdEYXRlLmdldFVUQ01vbnRoKCkscz1pKCk7cmV0dXJuIGUuZ2V0VVRDRnVsbFllYXIoKTxvfHxlLmdldFVUQ0Z1bGxZZWFyKCk9PT1vJiZlLmdldFVUQ01vbnRoKCk8YT9uLnB1c2goIm9sZCIpOihlLmdldFVUQ0Z1bGxZZWFyKCk+b3x8ZS5nZXRVVENGdWxsWWVhcigpPT09byYmZS5nZXRVVENNb250aCgpPmEpJiZuLnB1c2goIm5ldyIpLHRoaXMuZm9jdXNEYXRlJiZlLnZhbHVlT2YoKT09PXRoaXMuZm9jdXNEYXRlLnZhbHVlT2YoKSYmbi5wdXNoKCJmb2N1c2VkIiksdGhpcy5vLnRvZGF5SGlnaGxpZ2h0JiZyKGUscykmJm4ucHVzaCgidG9kYXkiKSwtMSE9PXRoaXMuZGF0ZXMuY29udGFpbnMoZSkmJm4ucHVzaCgiYWN0aXZlIiksdGhpcy5kYXRlV2l0aGluUmFuZ2UoZSl8fG4ucHVzaCgiZGlzYWJsZWQiKSx0aGlzLmRhdGVJc0Rpc2FibGVkKGUpJiZuLnB1c2goImRpc2FibGVkIiwiZGlzYWJsZWQtZGF0ZSIpLC0xIT09dC5pbkFycmF5KGUuZ2V0VVRDRGF5KCksdGhpcy5vLmRheXNPZldlZWtIaWdobGlnaHRlZCkmJm4ucHVzaCgiaGlnaGxpZ2h0ZWQiKSx0aGlzLnJhbmdlJiYoZT50aGlzLnJhbmdlWzBdJiZlPHRoaXMucmFuZ2VbdGhpcy5yYW5nZS5sZW5ndGgtMV0mJm4ucHVzaCgicmFuZ2UiKSwtMSE9PXQuaW5BcnJheShlLnZhbHVlT2YoKSx0aGlzLnJhbmdlKSYmbi5wdXNoKCJzZWxlY3RlZCIpLGUudmFsdWVPZigpPT09dGhpcy5yYW5nZVswXSYmbi5wdXNoKCJyYW5nZS1zdGFydCIpLGUudmFsdWVPZigpPT09dGhpcy5yYW5nZVt0aGlzLnJhbmdlLmxlbmd0aC0xXSYmbi5wdXNoKCJyYW5nZS1lbmQiKSksbn0sX2ZpbGxfeWVhcnNWaWV3OmZ1bmN0aW9uKG4saSxyLG8sYSxzLGwpe2Zvcih2YXIgYyx1LGQsaD0iIixmPXIvMTAscD10aGlzLnBpY2tlci5maW5kKG4pLGc9TWF0aC5mbG9vcihvL3IpKnIsbT1nKzkqZix2PU1hdGguZmxvb3IodGhpcy52aWV3RGF0ZS5nZXRGdWxsWWVhcigpL2YpKmYseT10Lm1hcCh0aGlzLmRhdGVzLChmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5mbG9vcih0LmdldFVUQ0Z1bGxZZWFyKCkvZikqZn0pKSxiPWctZjtiPD1tK2Y7Yis9ZiljPVtpXSx1PW51bGwsYj09PWctZj9jLnB1c2goIm9sZCIpOmI9PT1tK2YmJmMucHVzaCgibmV3IiksLTEhPT10LmluQXJyYXkoYix5KSYmYy5wdXNoKCJhY3RpdmUiKSwoYjxhfHxiPnMpJiZjLnB1c2goImRpc2FibGVkIiksYj09PXYmJmMucHVzaCgiZm9jdXNlZCIpLGwhPT10Lm5vb3AmJigoZD1sKG5ldyBEYXRlKGIsMCwxKSkpPT09ZT9kPXt9OiJib29sZWFuIj09dHlwZW9mIGQ/ZD17ZW5hYmxlZDpkfToic3RyaW5nIj09dHlwZW9mIGQmJihkPXtjbGFzc2VzOmR9KSwhMT09PWQuZW5hYmxlZCYmYy5wdXNoKCJkaXNhYmxlZCIpLGQuY2xhc3NlcyYmKGM9Yy5jb25jYXQoZC5jbGFzc2VzLnNwbGl0KC9ccysvKSkpLGQudG9vbHRpcCYmKHU9ZC50b29sdGlwKSksaCs9JzxzcGFuIGNsYXNzPSInK2Muam9pbigiICIpKyciJysodT8nIHRpdGxlPSInK3UrJyInOiIiKSsiPiIrYisiPC9zcGFuPiI7cC5maW5kKCIuZGF0ZXBpY2tlci1zd2l0Y2giKS50ZXh0KGcrIi0iK20pLHAuZmluZCgidGQiKS5odG1sKGgpfSxmaWxsOmZ1bmN0aW9uKCl7dmFyIHIsbyxhPW5ldyBEYXRlKHRoaXMudmlld0RhdGUpLHM9YS5nZXRVVENGdWxsWWVhcigpLGw9YS5nZXRVVENNb250aCgpLGM9dGhpcy5vLnN0YXJ0RGF0ZSE9PS0xLzA/dGhpcy5vLnN0YXJ0RGF0ZS5nZXRVVENGdWxsWWVhcigpOi0xLzAsdT10aGlzLm8uc3RhcnREYXRlIT09LTEvMD90aGlzLm8uc3RhcnREYXRlLmdldFVUQ01vbnRoKCk6LTEvMCxkPXRoaXMuby5lbmREYXRlIT09MS8wP3RoaXMuby5lbmREYXRlLmdldFVUQ0Z1bGxZZWFyKCk6MS8wLGg9dGhpcy5vLmVuZERhdGUhPT0xLzA/dGhpcy5vLmVuZERhdGUuZ2V0VVRDTW9udGgoKToxLzAsZj1nW3RoaXMuby5sYW5ndWFnZV0udG9kYXl8fGcuZW4udG9kYXl8fCIiLHA9Z1t0aGlzLm8ubGFuZ3VhZ2VdLmNsZWFyfHxnLmVuLmNsZWFyfHwiIix2PWdbdGhpcy5vLmxhbmd1YWdlXS50aXRsZUZvcm1hdHx8Zy5lbi50aXRsZUZvcm1hdCx5PWkoKSxiPSghMD09PXRoaXMuby50b2RheUJ0bnx8ImxpbmtlZCI9PT10aGlzLm8udG9kYXlCdG4pJiZ5Pj10aGlzLm8uc3RhcnREYXRlJiZ5PD10aGlzLm8uZW5kRGF0ZSYmIXRoaXMud2Vla09mRGF0ZUlzRGlzYWJsZWQoeSk7aWYoIWlzTmFOKHMpJiYhaXNOYU4obCkpe3RoaXMucGlja2VyLmZpbmQoIi5kYXRlcGlja2VyLWRheXMgLmRhdGVwaWNrZXItc3dpdGNoIikudGV4dChtLmZvcm1hdERhdGUoYSx2LHRoaXMuby5sYW5ndWFnZSkpLHRoaXMucGlja2VyLmZpbmQoInRmb290IC50b2RheSIpLnRleHQoZikuY3NzKCJkaXNwbGF5IixiPyJ0YWJsZS1jZWxsIjoibm9uZSIpLHRoaXMucGlja2VyLmZpbmQoInRmb290IC5jbGVhciIpLnRleHQocCkuY3NzKCJkaXNwbGF5IiwhMD09PXRoaXMuby5jbGVhckJ0bj8idGFibGUtY2VsbCI6Im5vbmUiKSx0aGlzLnBpY2tlci5maW5kKCJ0aGVhZCAuZGF0ZXBpY2tlci10aXRsZSIpLnRleHQodGhpcy5vLnRpdGxlKS5jc3MoImRpc3BsYXkiLCJzdHJpbmciPT10eXBlb2YgdGhpcy5vLnRpdGxlJiYiIiE9PXRoaXMuby50aXRsZT8idGFibGUtY2VsbCI6Im5vbmUiKSx0aGlzLnVwZGF0ZU5hdkFycm93cygpLHRoaXMuZmlsbE1vbnRocygpO3ZhciB3PW4ocyxsLDApLHg9dy5nZXRVVENEYXRlKCk7dy5zZXRVVENEYXRlKHgtKHcuZ2V0VVRDRGF5KCktdGhpcy5vLndlZWtTdGFydCs3KSU3KTt2YXIgXz1uZXcgRGF0ZSh3KTt3LmdldFVUQ0Z1bGxZZWFyKCk8MTAwJiZfLnNldFVUQ0Z1bGxZZWFyKHcuZ2V0VVRDRnVsbFllYXIoKSksXy5zZXRVVENEYXRlKF8uZ2V0VVRDRGF0ZSgpKzQyKSxfPV8udmFsdWVPZigpO2Zvcih2YXIgUyxDLGs9W107dy52YWx1ZU9mKCk8Xzspe2lmKChTPXcuZ2V0VVRDRGF5KCkpPT09dGhpcy5vLndlZWtTdGFydCYmKGsucHVzaCgiPHRyPiIpLHRoaXMuby5jYWxlbmRhcldlZWtzKSl7dmFyIFQ9bmV3IERhdGUoK3crKHRoaXMuby53ZWVrU3RhcnQtUy03KSU3Kjg2NGU1KSxBPW5ldyBEYXRlKE51bWJlcihUKSsoMTEtVC5nZXRVVENEYXkoKSklNyo4NjRlNSksRD1uZXcgRGF0ZShOdW1iZXIoRD1uKEEuZ2V0VVRDRnVsbFllYXIoKSwwLDEpKSsoMTEtRC5nZXRVVENEYXkoKSklNyo4NjRlNSksRT0oQS1EKS84NjRlNS83KzE7ay5wdXNoKCc8dGQgY2xhc3M9ImN3Ij4nK0UrIjwvdGQ+Iil9KEM9dGhpcy5nZXRDbGFzc05hbWVzKHcpKS5wdXNoKCJkYXkiKTt2YXIgTT13LmdldFVUQ0RhdGUoKTt0aGlzLm8uYmVmb3JlU2hvd0RheSE9PXQubm9vcCYmKChvPXRoaXMuby5iZWZvcmVTaG93RGF5KHRoaXMuX3V0Y190b19sb2NhbCh3KSkpPT09ZT9vPXt9OiJib29sZWFuIj09dHlwZW9mIG8/bz17ZW5hYmxlZDpvfToic3RyaW5nIj09dHlwZW9mIG8mJihvPXtjbGFzc2VzOm99KSwhMT09PW8uZW5hYmxlZCYmQy5wdXNoKCJkaXNhYmxlZCIpLG8uY2xhc3NlcyYmKEM9Qy5jb25jYXQoby5jbGFzc2VzLnNwbGl0KC9ccysvKSkpLG8udG9vbHRpcCYmKHI9by50b29sdGlwKSxvLmNvbnRlbnQmJihNPW8uY29udGVudCkpLEM9dC5pc0Z1bmN0aW9uKHQudW5pcXVlU29ydCk/dC51bmlxdWVTb3J0KEMpOnQudW5pcXVlKEMpLGsucHVzaCgnPHRkIGNsYXNzPSInK0Muam9pbigiICIpKyciJysocj8nIHRpdGxlPSInK3IrJyInOiIiKSsnIGRhdGEtZGF0ZT0iJyt3LmdldFRpbWUoKS50b1N0cmluZygpKyciPicrTSsiPC90ZD4iKSxyPW51bGwsUz09PXRoaXMuby53ZWVrRW5kJiZrLnB1c2goIjwvdHI+Iiksdy5zZXRVVENEYXRlKHcuZ2V0VVRDRGF0ZSgpKzEpfXRoaXMucGlja2VyLmZpbmQoIi5kYXRlcGlja2VyLWRheXMgdGJvZHkiKS5odG1sKGsuam9pbigiIikpO3ZhciBPPWdbdGhpcy5vLmxhbmd1YWdlXS5tb250aHNUaXRsZXx8Zy5lbi5tb250aHNUaXRsZXx8Ik1vbnRocyIsST10aGlzLnBpY2tlci5maW5kKCIuZGF0ZXBpY2tlci1tb250aHMiKS5maW5kKCIuZGF0ZXBpY2tlci1zd2l0Y2giKS50ZXh0KHRoaXMuby5tYXhWaWV3TW9kZTwyP086cykuZW5kKCkuZmluZCgidGJvZHkgc3BhbiIpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKTtpZih0LmVhY2godGhpcy5kYXRlcywoZnVuY3Rpb24odCxlKXtlLmdldFVUQ0Z1bGxZZWFyKCk9PT1zJiZJLmVxKGUuZ2V0VVRDTW9udGgoKSkuYWRkQ2xhc3MoImFjdGl2ZSIpfSkpLChzPGN8fHM+ZCkmJkkuYWRkQ2xhc3MoImRpc2FibGVkIikscz09PWMmJkkuc2xpY2UoMCx1KS5hZGRDbGFzcygiZGlzYWJsZWQiKSxzPT09ZCYmSS5zbGljZShoKzEpLmFkZENsYXNzKCJkaXNhYmxlZCIpLHRoaXMuby5iZWZvcmVTaG93TW9udGghPT10Lm5vb3Ape3ZhciBQPXRoaXM7dC5lYWNoKEksKGZ1bmN0aW9uKG4saSl7dmFyIHI9bmV3IERhdGUocyxuLDEpLG89UC5vLmJlZm9yZVNob3dNb250aChyKTtvPT09ZT9vPXt9OiJib29sZWFuIj09dHlwZW9mIG8/bz17ZW5hYmxlZDpvfToic3RyaW5nIj09dHlwZW9mIG8mJihvPXtjbGFzc2VzOm99KSwhMSE9PW8uZW5hYmxlZHx8dChpKS5oYXNDbGFzcygiZGlzYWJsZWQiKXx8dChpKS5hZGRDbGFzcygiZGlzYWJsZWQiKSxvLmNsYXNzZXMmJnQoaSkuYWRkQ2xhc3Moby5jbGFzc2VzKSxvLnRvb2x0aXAmJnQoaSkucHJvcCgidGl0bGUiLG8udG9vbHRpcCl9KSl9dGhpcy5fZmlsbF95ZWFyc1ZpZXcoIi5kYXRlcGlja2VyLXllYXJzIiwieWVhciIsMTAscyxjLGQsdGhpcy5vLmJlZm9yZVNob3dZZWFyKSx0aGlzLl9maWxsX3llYXJzVmlldygiLmRhdGVwaWNrZXItZGVjYWRlcyIsImRlY2FkZSIsMTAwLHMsYyxkLHRoaXMuby5iZWZvcmVTaG93RGVjYWRlKSx0aGlzLl9maWxsX3llYXJzVmlldygiLmRhdGVwaWNrZXItY2VudHVyaWVzIiwiY2VudHVyeSIsMWUzLHMsYyxkLHRoaXMuby5iZWZvcmVTaG93Q2VudHVyeSl9fSx1cGRhdGVOYXZBcnJvd3M6ZnVuY3Rpb24oKXtpZih0aGlzLl9hbGxvd191cGRhdGUpe3ZhciB0LGUsbj1uZXcgRGF0ZSh0aGlzLnZpZXdEYXRlKSxpPW4uZ2V0VVRDRnVsbFllYXIoKSxyPW4uZ2V0VVRDTW9udGgoKSxvPXRoaXMuby5zdGFydERhdGUhPT0tMS8wP3RoaXMuby5zdGFydERhdGUuZ2V0VVRDRnVsbFllYXIoKTotMS8wLGE9dGhpcy5vLnN0YXJ0RGF0ZSE9PS0xLzA/dGhpcy5vLnN0YXJ0RGF0ZS5nZXRVVENNb250aCgpOi0xLzAscz10aGlzLm8uZW5kRGF0ZSE9PTEvMD90aGlzLm8uZW5kRGF0ZS5nZXRVVENGdWxsWWVhcigpOjEvMCxsPXRoaXMuby5lbmREYXRlIT09MS8wP3RoaXMuby5lbmREYXRlLmdldFVUQ01vbnRoKCk6MS8wLGM9MTtzd2l0Y2godGhpcy52aWV3TW9kZSl7Y2FzZSA0OmMqPTEwO2Nhc2UgMzpjKj0xMDtjYXNlIDI6Yyo9MTA7Y2FzZSAxOnQ9TWF0aC5mbG9vcihpL2MpKmM8PW8sZT1NYXRoLmZsb29yKGkvYykqYytjPnM7YnJlYWs7Y2FzZSAwOnQ9aTw9byYmcjw9YSxlPWk+PXMmJnI+PWx9dGhpcy5waWNrZXIuZmluZCgiLnByZXYiKS50b2dnbGVDbGFzcygiZGlzYWJsZWQiLHQpLHRoaXMucGlja2VyLmZpbmQoIi5uZXh0IikudG9nZ2xlQ2xhc3MoImRpc2FibGVkIixlKX19LGNsaWNrOmZ1bmN0aW9uKGUpe3ZhciByLG8sYTtlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wUHJvcGFnYXRpb24oKSwocj10KGUudGFyZ2V0KSkuaGFzQ2xhc3MoImRhdGVwaWNrZXItc3dpdGNoIikmJnRoaXMudmlld01vZGUhPT10aGlzLm8ubWF4Vmlld01vZGUmJnRoaXMuc2V0Vmlld01vZGUodGhpcy52aWV3TW9kZSsxKSxyLmhhc0NsYXNzKCJ0b2RheSIpJiYhci5oYXNDbGFzcygiZGF5IikmJih0aGlzLnNldFZpZXdNb2RlKDApLHRoaXMuX3NldERhdGUoaSgpLCJsaW5rZWQiPT09dGhpcy5vLnRvZGF5QnRuP251bGw6InZpZXciKSksci5oYXNDbGFzcygiY2xlYXIiKSYmdGhpcy5jbGVhckRhdGVzKCksci5oYXNDbGFzcygiZGlzYWJsZWQiKXx8KHIuaGFzQ2xhc3MoIm1vbnRoIil8fHIuaGFzQ2xhc3MoInllYXIiKXx8ci5oYXNDbGFzcygiZGVjYWRlIil8fHIuaGFzQ2xhc3MoImNlbnR1cnkiKSkmJih0aGlzLnZpZXdEYXRlLnNldFVUQ0RhdGUoMSksMSwxPT09dGhpcy52aWV3TW9kZT8oYT1yLnBhcmVudCgpLmZpbmQoInNwYW4iKS5pbmRleChyKSxvPXRoaXMudmlld0RhdGUuZ2V0VVRDRnVsbFllYXIoKSx0aGlzLnZpZXdEYXRlLnNldFVUQ01vbnRoKGEpKTooYT0wLG89TnVtYmVyKHIudGV4dCgpKSx0aGlzLnZpZXdEYXRlLnNldFVUQ0Z1bGxZZWFyKG8pKSx0aGlzLl90cmlnZ2VyKG0udmlld01vZGVzW3RoaXMudmlld01vZGUtMV0uZSx0aGlzLnZpZXdEYXRlKSx0aGlzLnZpZXdNb2RlPT09dGhpcy5vLm1pblZpZXdNb2RlP3RoaXMuX3NldERhdGUobihvLGEsMSkpOih0aGlzLnNldFZpZXdNb2RlKHRoaXMudmlld01vZGUtMSksdGhpcy5maWxsKCkpKSx0aGlzLnBpY2tlci5pcygiOnZpc2libGUiKSYmdGhpcy5fZm9jdXNlZF9mcm9tJiZ0aGlzLl9mb2N1c2VkX2Zyb20uZm9jdXMoKSxkZWxldGUgdGhpcy5fZm9jdXNlZF9mcm9tfSxkYXlDZWxsQ2xpY2s6ZnVuY3Rpb24oZSl7dmFyIG49dChlLmN1cnJlbnRUYXJnZXQpLmRhdGEoImRhdGUiKSxpPW5ldyBEYXRlKG4pO3RoaXMuby51cGRhdGVWaWV3RGF0ZSYmKGkuZ2V0VVRDRnVsbFllYXIoKSE9PXRoaXMudmlld0RhdGUuZ2V0VVRDRnVsbFllYXIoKSYmdGhpcy5fdHJpZ2dlcigiY2hhbmdlWWVhciIsdGhpcy52aWV3RGF0ZSksaS5nZXRVVENNb250aCgpIT09dGhpcy52aWV3RGF0ZS5nZXRVVENNb250aCgpJiZ0aGlzLl90cmlnZ2VyKCJjaGFuZ2VNb250aCIsdGhpcy52aWV3RGF0ZSkpLHRoaXMuX3NldERhdGUoaSl9LG5hdkFycm93c0NsaWNrOmZ1bmN0aW9uKGUpe3ZhciBuPXQoZS5jdXJyZW50VGFyZ2V0KS5oYXNDbGFzcygicHJldiIpPy0xOjE7MCE9PXRoaXMudmlld01vZGUmJihuKj0xMiptLnZpZXdNb2Rlc1t0aGlzLnZpZXdNb2RlXS5uYXZTdGVwKSx0aGlzLnZpZXdEYXRlPXRoaXMubW92ZU1vbnRoKHRoaXMudmlld0RhdGUsbiksdGhpcy5fdHJpZ2dlcihtLnZpZXdNb2Rlc1t0aGlzLnZpZXdNb2RlXS5lLHRoaXMudmlld0RhdGUpLHRoaXMuZmlsbCgpfSxfdG9nZ2xlX211bHRpZGF0ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLmRhdGVzLmNvbnRhaW5zKHQpO2lmKHR8fHRoaXMuZGF0ZXMuY2xlYXIoKSwtMSE9PWU/KCEwPT09dGhpcy5vLm11bHRpZGF0ZXx8dGhpcy5vLm11bHRpZGF0ZT4xfHx0aGlzLm8udG9nZ2xlQWN0aXZlKSYmdGhpcy5kYXRlcy5yZW1vdmUoZSk6ITE9PT10aGlzLm8ubXVsdGlkYXRlPyh0aGlzLmRhdGVzLmNsZWFyKCksdGhpcy5kYXRlcy5wdXNoKHQpKTp0aGlzLmRhdGVzLnB1c2godCksIm51bWJlciI9PXR5cGVvZiB0aGlzLm8ubXVsdGlkYXRlKWZvcig7dGhpcy5kYXRlcy5sZW5ndGg+dGhpcy5vLm11bHRpZGF0ZTspdGhpcy5kYXRlcy5yZW1vdmUoMCl9LF9zZXREYXRlOmZ1bmN0aW9uKHQsZSl7ZSYmImRhdGUiIT09ZXx8dGhpcy5fdG9nZ2xlX211bHRpZGF0ZSh0JiZuZXcgRGF0ZSh0KSksKCFlJiZ0aGlzLm8udXBkYXRlVmlld0RhdGV8fCJ2aWV3Ij09PWUpJiYodGhpcy52aWV3RGF0ZT10JiZuZXcgRGF0ZSh0KSksdGhpcy5maWxsKCksdGhpcy5zZXRWYWx1ZSgpLGUmJiJ2aWV3Ij09PWV8fHRoaXMuX3RyaWdnZXIoImNoYW5nZURhdGUiKSx0aGlzLmlucHV0RmllbGQudHJpZ2dlcigiY2hhbmdlIiksIXRoaXMuby5hdXRvY2xvc2V8fGUmJiJkYXRlIiE9PWV8fHRoaXMuaGlkZSgpfSxtb3ZlRGF5OmZ1bmN0aW9uKHQsZSl7dmFyIG49bmV3IERhdGUodCk7cmV0dXJuIG4uc2V0VVRDRGF0ZSh0LmdldFVUQ0RhdGUoKStlKSxufSxtb3ZlV2VlazpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLm1vdmVEYXkodCw3KmUpfSxtb3ZlTW9udGg6ZnVuY3Rpb24odCxlKXtpZighZnVuY3Rpb24odCl7cmV0dXJuIHQmJiFpc05hTih0LmdldFRpbWUoKSl9KHQpKXJldHVybiB0aGlzLm8uZGVmYXVsdFZpZXdEYXRlO2lmKCFlKXJldHVybiB0O3ZhciBuLGkscj1uZXcgRGF0ZSh0LnZhbHVlT2YoKSksbz1yLmdldFVUQ0RhdGUoKSxhPXIuZ2V0VVRDTW9udGgoKSxzPU1hdGguYWJzKGUpO2lmKGU9ZT4wPzE6LTEsMT09PXMpaT0tMT09PWU/ZnVuY3Rpb24oKXtyZXR1cm4gci5nZXRVVENNb250aCgpPT09YX06ZnVuY3Rpb24oKXtyZXR1cm4gci5nZXRVVENNb250aCgpIT09bn0sbj1hK2Usci5zZXRVVENNb250aChuKSxuPShuKzEyKSUxMjtlbHNle2Zvcih2YXIgbD0wO2w8cztsKyspcj10aGlzLm1vdmVNb250aChyLGUpO249ci5nZXRVVENNb250aCgpLHIuc2V0VVRDRGF0ZShvKSxpPWZ1bmN0aW9uKCl7cmV0dXJuIG4hPT1yLmdldFVUQ01vbnRoKCl9fWZvcig7aSgpOylyLnNldFVUQ0RhdGUoLS1vKSxyLnNldFVUQ01vbnRoKG4pO3JldHVybiByfSxtb3ZlWWVhcjpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLm1vdmVNb250aCh0LDEyKmUpfSxtb3ZlQXZhaWxhYmxlRGF0ZTpmdW5jdGlvbih0LGUsbil7ZG97aWYodD10aGlzW25dKHQsZSksIXRoaXMuZGF0ZVdpdGhpblJhbmdlKHQpKXJldHVybiExO249Im1vdmVEYXkifXdoaWxlKHRoaXMuZGF0ZUlzRGlzYWJsZWQodCkpO3JldHVybiB0fSx3ZWVrT2ZEYXRlSXNEaXNhYmxlZDpmdW5jdGlvbihlKXtyZXR1cm4tMSE9PXQuaW5BcnJheShlLmdldFVUQ0RheSgpLHRoaXMuby5kYXlzT2ZXZWVrRGlzYWJsZWQpfSxkYXRlSXNEaXNhYmxlZDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy53ZWVrT2ZEYXRlSXNEaXNhYmxlZChlKXx8dC5ncmVwKHRoaXMuby5kYXRlc0Rpc2FibGVkLChmdW5jdGlvbih0KXtyZXR1cm4gcihlLHQpfSkpLmxlbmd0aD4wfSxkYXRlV2l0aGluUmFuZ2U6ZnVuY3Rpb24odCl7cmV0dXJuIHQ+PXRoaXMuby5zdGFydERhdGUmJnQ8PXRoaXMuby5lbmREYXRlfSxrZXlkb3duOmZ1bmN0aW9uKHQpe2lmKHRoaXMucGlja2VyLmlzKCI6dmlzaWJsZSIpKXt2YXIgZSxuLGk9ITEscj10aGlzLmZvY3VzRGF0ZXx8dGhpcy52aWV3RGF0ZTtzd2l0Y2godC5rZXlDb2RlKXtjYXNlIDI3OnRoaXMuZm9jdXNEYXRlPyh0aGlzLmZvY3VzRGF0ZT1udWxsLHRoaXMudmlld0RhdGU9dGhpcy5kYXRlcy5nZXQoLTEpfHx0aGlzLnZpZXdEYXRlLHRoaXMuZmlsbCgpKTp0aGlzLmhpZGUoKSx0LnByZXZlbnREZWZhdWx0KCksdC5zdG9wUHJvcGFnYXRpb24oKTticmVhaztjYXNlIDM3OmNhc2UgMzg6Y2FzZSAzOTpjYXNlIDQwOmlmKCF0aGlzLm8ua2V5Ym9hcmROYXZpZ2F0aW9ufHw3PT09dGhpcy5vLmRheXNPZldlZWtEaXNhYmxlZC5sZW5ndGgpYnJlYWs7ZT0zNz09PXQua2V5Q29kZXx8Mzg9PT10LmtleUNvZGU/LTE6MSwwPT09dGhpcy52aWV3TW9kZT90LmN0cmxLZXk/KG49dGhpcy5tb3ZlQXZhaWxhYmxlRGF0ZShyLGUsIm1vdmVZZWFyIikpJiZ0aGlzLl90cmlnZ2VyKCJjaGFuZ2VZZWFyIix0aGlzLnZpZXdEYXRlKTp0LnNoaWZ0S2V5PyhuPXRoaXMubW92ZUF2YWlsYWJsZURhdGUocixlLCJtb3ZlTW9udGgiKSkmJnRoaXMuX3RyaWdnZXIoImNoYW5nZU1vbnRoIix0aGlzLnZpZXdEYXRlKTozNz09PXQua2V5Q29kZXx8Mzk9PT10LmtleUNvZGU/bj10aGlzLm1vdmVBdmFpbGFibGVEYXRlKHIsZSwibW92ZURheSIpOnRoaXMud2Vla09mRGF0ZUlzRGlzYWJsZWQocil8fChuPXRoaXMubW92ZUF2YWlsYWJsZURhdGUocixlLCJtb3ZlV2VlayIpKToxPT09dGhpcy52aWV3TW9kZT8oMzghPT10LmtleUNvZGUmJjQwIT09dC5rZXlDb2RlfHwoZSo9NCksbj10aGlzLm1vdmVBdmFpbGFibGVEYXRlKHIsZSwibW92ZU1vbnRoIikpOjI9PT10aGlzLnZpZXdNb2RlJiYoMzghPT10LmtleUNvZGUmJjQwIT09dC5rZXlDb2RlfHwoZSo9NCksbj10aGlzLm1vdmVBdmFpbGFibGVEYXRlKHIsZSwibW92ZVllYXIiKSksbiYmKHRoaXMuZm9jdXNEYXRlPXRoaXMudmlld0RhdGU9bix0aGlzLnNldFZhbHVlKCksdGhpcy5maWxsKCksdC5wcmV2ZW50RGVmYXVsdCgpKTticmVhaztjYXNlIDEzOmlmKCF0aGlzLm8uZm9yY2VQYXJzZSlicmVhaztyPXRoaXMuZm9jdXNEYXRlfHx0aGlzLmRhdGVzLmdldCgtMSl8fHRoaXMudmlld0RhdGUsdGhpcy5vLmtleWJvYXJkTmF2aWdhdGlvbiYmKHRoaXMuX3RvZ2dsZV9tdWx0aWRhdGUociksaT0hMCksdGhpcy5mb2N1c0RhdGU9bnVsbCx0aGlzLnZpZXdEYXRlPXRoaXMuZGF0ZXMuZ2V0KC0xKXx8dGhpcy52aWV3RGF0ZSx0aGlzLnNldFZhbHVlKCksdGhpcy5maWxsKCksdGhpcy5waWNrZXIuaXMoIjp2aXNpYmxlIikmJih0LnByZXZlbnREZWZhdWx0KCksdC5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLm8uYXV0b2Nsb3NlJiZ0aGlzLmhpZGUoKSk7YnJlYWs7Y2FzZSA5OnRoaXMuZm9jdXNEYXRlPW51bGwsdGhpcy52aWV3RGF0ZT10aGlzLmRhdGVzLmdldCgtMSl8fHRoaXMudmlld0RhdGUsdGhpcy5maWxsKCksdGhpcy5oaWRlKCl9aSYmKHRoaXMuZGF0ZXMubGVuZ3RoP3RoaXMuX3RyaWdnZXIoImNoYW5nZURhdGUiKTp0aGlzLl90cmlnZ2VyKCJjbGVhckRhdGUiKSx0aGlzLmlucHV0RmllbGQudHJpZ2dlcigiY2hhbmdlIikpfWVsc2UgNDAhPT10LmtleUNvZGUmJjI3IT09dC5rZXlDb2RlfHwodGhpcy5zaG93KCksdC5zdG9wUHJvcGFnYXRpb24oKSl9LHNldFZpZXdNb2RlOmZ1bmN0aW9uKHQpe3RoaXMudmlld01vZGU9dCx0aGlzLnBpY2tlci5jaGlsZHJlbigiZGl2IikuaGlkZSgpLmZpbHRlcigiLmRhdGVwaWNrZXItIittLnZpZXdNb2Rlc1t0aGlzLnZpZXdNb2RlXS5jbHNOYW1lKS5zaG93KCksdGhpcy51cGRhdGVOYXZBcnJvd3MoKSx0aGlzLl90cmlnZ2VyKCJjaGFuZ2VWaWV3TW9kZSIsbmV3IERhdGUodGhpcy52aWV3RGF0ZSkpfX07dmFyIHU9ZnVuY3Rpb24oZSxuKXt0LmRhdGEoZSwiZGF0ZXBpY2tlciIsdGhpcyksdGhpcy5lbGVtZW50PXQoZSksdGhpcy5pbnB1dHM9dC5tYXAobi5pbnB1dHMsKGZ1bmN0aW9uKHQpe3JldHVybiB0LmpxdWVyeT90WzBdOnR9KSksZGVsZXRlIG4uaW5wdXRzLHRoaXMua2VlcEVtcHR5VmFsdWVzPW4ua2VlcEVtcHR5VmFsdWVzLGRlbGV0ZSBuLmtlZXBFbXB0eVZhbHVlcyxoLmNhbGwodCh0aGlzLmlucHV0cyksbikub24oImNoYW5nZURhdGUiLHQucHJveHkodGhpcy5kYXRlVXBkYXRlZCx0aGlzKSksdGhpcy5waWNrZXJzPXQubWFwKHRoaXMuaW5wdXRzLChmdW5jdGlvbihlKXtyZXR1cm4gdC5kYXRhKGUsImRhdGVwaWNrZXIiKX0pKSx0aGlzLnVwZGF0ZURhdGVzKCl9O3UucHJvdG90eXBlPXt1cGRhdGVEYXRlczpmdW5jdGlvbigpe3RoaXMuZGF0ZXM9dC5tYXAodGhpcy5waWNrZXJzLChmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENEYXRlKCl9KSksdGhpcy51cGRhdGVSYW5nZXMoKX0sdXBkYXRlUmFuZ2VzOmZ1bmN0aW9uKCl7dmFyIGU9dC5tYXAodGhpcy5kYXRlcywoZnVuY3Rpb24odCl7cmV0dXJuIHQudmFsdWVPZigpfSkpO3QuZWFjaCh0aGlzLnBpY2tlcnMsKGZ1bmN0aW9uKHQsbil7bi5zZXRSYW5nZShlKX0pKX0sY2xlYXJEYXRlczpmdW5jdGlvbigpe3QuZWFjaCh0aGlzLnBpY2tlcnMsKGZ1bmN0aW9uKHQsZSl7ZS5jbGVhckRhdGVzKCl9KSl9LGRhdGVVcGRhdGVkOmZ1bmN0aW9uKG4pe2lmKCF0aGlzLnVwZGF0aW5nKXt0aGlzLnVwZGF0aW5nPSEwO3ZhciBpPXQuZGF0YShuLnRhcmdldCwiZGF0ZXBpY2tlciIpO2lmKGkhPT1lKXt2YXIgcj1pLmdldFVUQ0RhdGUoKSxvPXRoaXMua2VlcEVtcHR5VmFsdWVzLGE9dC5pbkFycmF5KG4udGFyZ2V0LHRoaXMuaW5wdXRzKSxzPWEtMSxsPWErMSxjPXRoaXMuaW5wdXRzLmxlbmd0aDtpZigtMSE9PWEpe2lmKHQuZWFjaCh0aGlzLnBpY2tlcnMsKGZ1bmN0aW9uKHQsZSl7ZS5nZXRVVENEYXRlKCl8fGUhPT1pJiZvfHxlLnNldFVUQ0RhdGUocil9KSkscjx0aGlzLmRhdGVzW3NdKWZvcig7cz49MCYmcjx0aGlzLmRhdGVzW3NdOyl0aGlzLnBpY2tlcnNbcy0tXS5zZXRVVENEYXRlKHIpO2Vsc2UgaWYocj50aGlzLmRhdGVzW2xdKWZvcig7bDxjJiZyPnRoaXMuZGF0ZXNbbF07KXRoaXMucGlja2Vyc1tsKytdLnNldFVUQ0RhdGUocik7dGhpcy51cGRhdGVEYXRlcygpLGRlbGV0ZSB0aGlzLnVwZGF0aW5nfX19fSxkZXN0cm95OmZ1bmN0aW9uKCl7dC5tYXAodGhpcy5waWNrZXJzLChmdW5jdGlvbih0KXt0LmRlc3Ryb3koKX0pKSx0KHRoaXMuaW5wdXRzKS5vZmYoImNoYW5nZURhdGUiLHRoaXMuZGF0ZVVwZGF0ZWQpLGRlbGV0ZSB0aGlzLmVsZW1lbnQuZGF0YSgpLmRhdGVwaWNrZXJ9LHJlbW92ZTpvKCJkZXN0cm95IiwiTWV0aG9kIGByZW1vdmVgIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB2ZXJzaW9uIDIuMC4gVXNlIGBkZXN0cm95YCBpbnN0ZWFkIil9O3ZhciBkPXQuZm4uZGF0ZXBpY2tlcixoPWZ1bmN0aW9uKG4pe3ZhciBpLHI9QXJyYXkuYXBwbHkobnVsbCxhcmd1bWVudHMpO2lmKHIuc2hpZnQoKSx0aGlzLmVhY2goKGZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzKSxvPWUuZGF0YSgiZGF0ZXBpY2tlciIpLGw9Im9iamVjdCI9PXR5cGVvZiBuJiZuO2lmKCFvKXt2YXIgZD1hKHRoaXMsImRhdGUiKSxoPXModC5leHRlbmQoe30sZixkLGwpLmxhbmd1YWdlKSxwPXQuZXh0ZW5kKHt9LGYsaCxkLGwpO2UuaGFzQ2xhc3MoImlucHV0LWRhdGVyYW5nZSIpfHxwLmlucHV0cz8odC5leHRlbmQocCx7aW5wdXRzOnAuaW5wdXRzfHxlLmZpbmQoImlucHV0IikudG9BcnJheSgpfSksbz1uZXcgdSh0aGlzLHApKTpvPW5ldyBjKHRoaXMscCksZS5kYXRhKCJkYXRlcGlja2VyIixvKX0ic3RyaW5nIj09dHlwZW9mIG4mJiJmdW5jdGlvbiI9PXR5cGVvZiBvW25dJiYoaT1vW25dLmFwcGx5KG8scikpfSkpLGk9PT1lfHxpIGluc3RhbmNlb2YgY3x8aSBpbnN0YW5jZW9mIHUpcmV0dXJuIHRoaXM7aWYodGhpcy5sZW5ndGg+MSl0aHJvdyBuZXcgRXJyb3IoIlVzaW5nIG9ubHkgYWxsb3dlZCBmb3IgdGhlIGNvbGxlY3Rpb24gb2YgYSBzaW5nbGUgZWxlbWVudCAoIituKyIgZnVuY3Rpb24pIik7cmV0dXJuIGl9O3QuZm4uZGF0ZXBpY2tlcj1oO3ZhciBmPXQuZm4uZGF0ZXBpY2tlci5kZWZhdWx0cz17YXNzdW1lTmVhcmJ5WWVhcjohMSxhdXRvY2xvc2U6ITEsYmVmb3JlU2hvd0RheTp0Lm5vb3AsYmVmb3JlU2hvd01vbnRoOnQubm9vcCxiZWZvcmVTaG93WWVhcjp0Lm5vb3AsYmVmb3JlU2hvd0RlY2FkZTp0Lm5vb3AsYmVmb3JlU2hvd0NlbnR1cnk6dC5ub29wLGNhbGVuZGFyV2Vla3M6ITEsY2xlYXJCdG46ITEsdG9nZ2xlQWN0aXZlOiExLGRheXNPZldlZWtEaXNhYmxlZDpbXSxkYXlzT2ZXZWVrSGlnaGxpZ2h0ZWQ6W10sZGF0ZXNEaXNhYmxlZDpbXSxlbmREYXRlOjEvMCxmb3JjZVBhcnNlOiEwLGZvcm1hdDoibW0vZGQveXl5eSIsa2VlcEVtcHR5VmFsdWVzOiExLGtleWJvYXJkTmF2aWdhdGlvbjohMCxsYW5ndWFnZToiZW4iLG1pblZpZXdNb2RlOjAsbWF4Vmlld01vZGU6NCxtdWx0aWRhdGU6ITEsbXVsdGlkYXRlU2VwYXJhdG9yOiIsIixvcmllbnRhdGlvbjoiYXV0byIscnRsOiExLHN0YXJ0RGF0ZTotMS8wLHN0YXJ0VmlldzowLHRvZGF5QnRuOiExLHRvZGF5SGlnaGxpZ2h0OiExLHVwZGF0ZVZpZXdEYXRlOiEwLHdlZWtTdGFydDowLGRpc2FibGVUb3VjaEtleWJvYXJkOiExLGVuYWJsZU9uUmVhZG9ubHk6ITAsc2hvd09uRm9jdXM6ITAsekluZGV4T2Zmc2V0OjEwLGNvbnRhaW5lcjoiYm9keSIsaW1tZWRpYXRlVXBkYXRlczohMSx0aXRsZToiIix0ZW1wbGF0ZXM6e2xlZnRBcnJvdzoiJiN4MDBBQjsiLHJpZ2h0QXJyb3c6IiYjeDAwQkI7In0sc2hvd1dlZWtEYXlzOiEwfSxwPXQuZm4uZGF0ZXBpY2tlci5sb2NhbGVfb3B0cz1bImZvcm1hdCIsInJ0bCIsIndlZWtTdGFydCJdO3QuZm4uZGF0ZXBpY2tlci5Db25zdHJ1Y3Rvcj1jO3ZhciBnPXQuZm4uZGF0ZXBpY2tlci5kYXRlcz17ZW46e2RheXM6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLGRheXNTaG9ydDpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLGRheXNNaW46WyJTdSIsIk1vIiwiVHUiLCJXZSIsIlRoIiwiRnIiLCJTYSJdLG1vbnRoczpbIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl0sbW9udGhzU2hvcnQ6WyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLCJBdWciLCJTZXAiLCJPY3QiLCJOb3YiLCJEZWMiXSx0b2RheToiVG9kYXkiLGNsZWFyOiJDbGVhciIsdGl0bGVGb3JtYXQ6Ik1NIHl5eXkifX0sbT17dmlld01vZGVzOlt7bmFtZXM6WyJkYXlzIiwibW9udGgiXSxjbHNOYW1lOiJkYXlzIixlOiJjaGFuZ2VNb250aCJ9LHtuYW1lczpbIm1vbnRocyIsInllYXIiXSxjbHNOYW1lOiJtb250aHMiLGU6ImNoYW5nZVllYXIiLG5hdlN0ZXA6MX0se25hbWVzOlsieWVhcnMiLCJkZWNhZGUiXSxjbHNOYW1lOiJ5ZWFycyIsZToiY2hhbmdlRGVjYWRlIixuYXZTdGVwOjEwfSx7bmFtZXM6WyJkZWNhZGVzIiwiY2VudHVyeSJdLGNsc05hbWU6ImRlY2FkZXMiLGU6ImNoYW5nZUNlbnR1cnkiLG5hdlN0ZXA6MTAwfSx7bmFtZXM6WyJjZW50dXJpZXMiLCJtaWxsZW5uaXVtIl0sY2xzTmFtZToiY2VudHVyaWVzIixlOiJjaGFuZ2VNaWxsZW5uaXVtIixuYXZTdGVwOjFlM31dLHZhbGlkUGFydHM6L2RkP3xERD98bW0/fE1NP3x5eSg/Onl5KT8vZyxub25wdW5jdHVhdGlvbjovW14gLVwvOi1AXHU1ZTc0XHU2NzA4XHU2NWU1XFstYHstflx0XG5ccl0rL2cscGFyc2VGb3JtYXQ6ZnVuY3Rpb24odCl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQudG9WYWx1ZSYmImZ1bmN0aW9uIj09dHlwZW9mIHQudG9EaXNwbGF5KXJldHVybiB0O3ZhciBlPXQucmVwbGFjZSh0aGlzLnZhbGlkUGFydHMsIlwwIikuc3BsaXQoIlwwIiksbj10Lm1hdGNoKHRoaXMudmFsaWRQYXJ0cyk7aWYoIWV8fCFlLmxlbmd0aHx8IW58fDA9PT1uLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgZGF0ZSBmb3JtYXQuIik7cmV0dXJue3NlcGFyYXRvcnM6ZSxwYXJ0czpufX0scGFyc2VEYXRlOmZ1bmN0aW9uKG4scixvLGEpe2Z1bmN0aW9uIHMoKXt2YXIgdD10aGlzLnNsaWNlKDAsbFtoXS5sZW5ndGgpLGU9bFtoXS5zbGljZSgwLHQubGVuZ3RoKTtyZXR1cm4gdC50b0xvd2VyQ2FzZSgpPT09ZS50b0xvd2VyQ2FzZSgpfWlmKCFuKXJldHVybiBlO2lmKG4gaW5zdGFuY2VvZiBEYXRlKXJldHVybiBuO2lmKCJzdHJpbmciPT10eXBlb2YgciYmKHI9bS5wYXJzZUZvcm1hdChyKSksci50b1ZhbHVlKXJldHVybiByLnRvVmFsdWUobixyLG8pO3ZhciBsLHUsZCxoLGYscD17ZDoibW92ZURheSIsbToibW92ZU1vbnRoIix3OiJtb3ZlV2VlayIseToibW92ZVllYXIifSx2PXt5ZXN0ZXJkYXk6Ii0xZCIsdG9kYXk6IiswZCIsdG9tb3Jyb3c6IisxZCJ9O2lmKG4gaW4gdiYmKG49dltuXSksL15bXC0rXVxkK1tkbXd5XShbXHMsXStbXC0rXVxkK1tkbXd5XSkqJC9pLnRlc3Qobikpe2ZvcihsPW4ubWF0Y2goLyhbXC0rXVxkKykoW2Rtd3ldKS9naSksbj1uZXcgRGF0ZSxoPTA7aDxsLmxlbmd0aDtoKyspdT1sW2hdLm1hdGNoKC8oW1wtK11cZCspKFtkbXd5XSkvaSksZD1OdW1iZXIodVsxXSksZj1wW3VbMl0udG9Mb3dlckNhc2UoKV0sbj1jLnByb3RvdHlwZVtmXShuLGQpO3JldHVybiBjLnByb3RvdHlwZS5femVyb191dGNfdGltZShuKX1sPW4mJm4ubWF0Y2godGhpcy5ub25wdW5jdHVhdGlvbil8fFtdO3ZhciB5LGIsdz17fSx4PVsieXl5eSIsInl5IiwiTSIsIk1NIiwibSIsIm1tIiwiZCIsImRkIl0sXz17eXl5eTpmdW5jdGlvbih0LGUpe3JldHVybiB0LnNldFVUQ0Z1bGxZZWFyKGE/ZnVuY3Rpb24odCxlKXtyZXR1cm4hMD09PWUmJihlPTEwKSx0PDEwMCYmKHQrPTJlMyk+KG5ldyBEYXRlKS5nZXRGdWxsWWVhcigpK2UmJih0LT0xMDApLHR9KGUsYSk6ZSl9LG06ZnVuY3Rpb24odCxlKXtpZihpc05hTih0KSlyZXR1cm4gdDtmb3IoZS09MTtlPDA7KWUrPTEyO2ZvcihlJT0xMix0LnNldFVUQ01vbnRoKGUpO3QuZ2V0VVRDTW9udGgoKSE9PWU7KXQuc2V0VVRDRGF0ZSh0LmdldFVUQ0RhdGUoKS0xKTtyZXR1cm4gdH0sZDpmdW5jdGlvbih0LGUpe3JldHVybiB0LnNldFVUQ0RhdGUoZSl9fTtfLnl5PV8ueXl5eSxfLk09Xy5NTT1fLm1tPV8ubSxfLmRkPV8uZCxuPWkoKTt2YXIgUz1yLnBhcnRzLnNsaWNlKCk7aWYobC5sZW5ndGghPT1TLmxlbmd0aCYmKFM9dChTKS5maWx0ZXIoKGZ1bmN0aW9uKGUsbil7cmV0dXJuLTEhPT10LmluQXJyYXkobix4KX0pKS50b0FycmF5KCkpLGwubGVuZ3RoPT09Uy5sZW5ndGgpe3ZhciBDLGssVDtmb3IoaD0wLEM9Uy5sZW5ndGg7aDxDO2grKyl7aWYoeT1wYXJzZUludChsW2hdLDEwKSx1PVNbaF0saXNOYU4oeSkpc3dpdGNoKHUpe2Nhc2UiTU0iOmI9dChnW29dLm1vbnRocykuZmlsdGVyKHMpLHk9dC5pbkFycmF5KGJbMF0sZ1tvXS5tb250aHMpKzE7YnJlYWs7Y2FzZSJNIjpiPXQoZ1tvXS5tb250aHNTaG9ydCkuZmlsdGVyKHMpLHk9dC5pbkFycmF5KGJbMF0sZ1tvXS5tb250aHNTaG9ydCkrMX13W3VdPXl9Zm9yKGg9MDtoPHgubGVuZ3RoO2grKykoVD14W2hdKWluIHcmJiFpc05hTih3W1RdKSYmKGs9bmV3IERhdGUobiksX1tUXShrLHdbVF0pLGlzTmFOKGspfHwobj1rKSl9cmV0dXJuIG59LGZvcm1hdERhdGU6ZnVuY3Rpb24oZSxuLGkpe2lmKCFlKXJldHVybiIiO2lmKCJzdHJpbmciPT10eXBlb2YgbiYmKG49bS5wYXJzZUZvcm1hdChuKSksbi50b0Rpc3BsYXkpcmV0dXJuIG4udG9EaXNwbGF5KGUsbixpKTt2YXIgcj17ZDplLmdldFVUQ0RhdGUoKSxEOmdbaV0uZGF5c1Nob3J0W2UuZ2V0VVRDRGF5KCldLEREOmdbaV0uZGF5c1tlLmdldFVUQ0RheSgpXSxtOmUuZ2V0VVRDTW9udGgoKSsxLE06Z1tpXS5tb250aHNTaG9ydFtlLmdldFVUQ01vbnRoKCldLE1NOmdbaV0ubW9udGhzW2UuZ2V0VVRDTW9udGgoKV0seXk6ZS5nZXRVVENGdWxsWWVhcigpLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDIpLHl5eXk6ZS5nZXRVVENGdWxsWWVhcigpfTtyLmRkPShyLmQ8MTA/IjAiOiIiKStyLmQsci5tbT0oci5tPDEwPyIwIjoiIikrci5tLGU9W107Zm9yKHZhciBvPXQuZXh0ZW5kKFtdLG4uc2VwYXJhdG9ycyksYT0wLHM9bi5wYXJ0cy5sZW5ndGg7YTw9czthKyspby5sZW5ndGgmJmUucHVzaChvLnNoaWZ0KCkpLGUucHVzaChyW24ucGFydHNbYV1dKTtyZXR1cm4gZS5qb2luKCIiKX0saGVhZFRlbXBsYXRlOic8dGhlYWQ+PHRyPjx0aCBjb2xzcGFuPSI3IiBjbGFzcz0iZGF0ZXBpY2tlci10aXRsZSI+PC90aD48L3RyPjx0cj48dGggY2xhc3M9InByZXYiPicrZi50ZW1wbGF0ZXMubGVmdEFycm93Kyc8L3RoPjx0aCBjb2xzcGFuPSI1IiBjbGFzcz0iZGF0ZXBpY2tlci1zd2l0Y2giPjwvdGg+PHRoIGNsYXNzPSJuZXh0Ij4nK2YudGVtcGxhdGVzLnJpZ2h0QXJyb3crIjwvdGg+PC90cj48L3RoZWFkPiIsY29udFRlbXBsYXRlOic8dGJvZHk+PHRyPjx0ZCBjb2xzcGFuPSI3Ij48L3RkPjwvdHI+PC90Ym9keT4nLGZvb3RUZW1wbGF0ZTonPHRmb290Pjx0cj48dGggY29sc3Bhbj0iNyIgY2xhc3M9InRvZGF5Ij48L3RoPjwvdHI+PHRyPjx0aCBjb2xzcGFuPSI3IiBjbGFzcz0iY2xlYXIiPjwvdGg+PC90cj48L3Rmb290Pid9O20udGVtcGxhdGU9JzxkaXYgY2xhc3M9ImRhdGVwaWNrZXIiPjxkaXYgY2xhc3M9ImRhdGVwaWNrZXItZGF5cyI+PHRhYmxlIGNsYXNzPSJ0YWJsZS1jb25kZW5zZWQiPicrbS5oZWFkVGVtcGxhdGUrIjx0Ym9keT48L3Rib2R5PiIrbS5mb290VGVtcGxhdGUrJzwvdGFibGU+PC9kaXY+PGRpdiBjbGFzcz0iZGF0ZXBpY2tlci1tb250aHMiPjx0YWJsZSBjbGFzcz0idGFibGUtY29uZGVuc2VkIj4nK20uaGVhZFRlbXBsYXRlK20uY29udFRlbXBsYXRlK20uZm9vdFRlbXBsYXRlKyc8L3RhYmxlPjwvZGl2PjxkaXYgY2xhc3M9ImRhdGVwaWNrZXIteWVhcnMiPjx0YWJsZSBjbGFzcz0idGFibGUtY29uZGVuc2VkIj4nK20uaGVhZFRlbXBsYXRlK20uY29udFRlbXBsYXRlK20uZm9vdFRlbXBsYXRlKyc8L3RhYmxlPjwvZGl2PjxkaXYgY2xhc3M9ImRhdGVwaWNrZXItZGVjYWRlcyI+PHRhYmxlIGNsYXNzPSJ0YWJsZS1jb25kZW5zZWQiPicrbS5oZWFkVGVtcGxhdGUrbS5jb250VGVtcGxhdGUrbS5mb290VGVtcGxhdGUrJzwvdGFibGU+PC9kaXY+PGRpdiBjbGFzcz0iZGF0ZXBpY2tlci1jZW50dXJpZXMiPjx0YWJsZSBjbGFzcz0idGFibGUtY29uZGVuc2VkIj4nK20uaGVhZFRlbXBsYXRlK20uY29udFRlbXBsYXRlK20uZm9vdFRlbXBsYXRlKyI8L3RhYmxlPjwvZGl2PjwvZGl2PiIsdC5mbi5kYXRlcGlja2VyLkRQR2xvYmFsPW0sdC5mbi5kYXRlcGlja2VyLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdC5mbi5kYXRlcGlja2VyPWQsdGhpc30sdC5mbi5kYXRlcGlja2VyLnZlcnNpb249IjEuOS4wIix0LmZuLmRhdGVwaWNrZXIuZGVwcmVjYXRlZD1mdW5jdGlvbih0KXt2YXIgZT13aW5kb3cuY29uc29sZTtlJiZlLndhcm4mJmUud2FybigiREVQUkVDQVRFRDogIit0KX0sdChkb2N1bWVudCkub24oImZvY3VzLmRhdGVwaWNrZXIuZGF0YS1hcGkgY2xpY2suZGF0ZXBpY2tlci5kYXRhLWFwaSIsJ1tkYXRhLXByb3ZpZGU9ImRhdGVwaWNrZXIiXScsKGZ1bmN0aW9uKGUpe3ZhciBuPXQodGhpcyk7bi5kYXRhKCJkYXRlcGlja2VyIil8fChlLnByZXZlbnREZWZhdWx0KCksaC5jYWxsKG4sInNob3ciKSl9KSksdCgoZnVuY3Rpb24oKXtoLmNhbGwodCgnW2RhdGEtcHJvdmlkZT0iZGF0ZXBpY2tlci1pbmxpbmUiXScpKX0pKX0pKSwidW5kZWZpbmVkIiE9dHlwZW9mIGpRdWVyeSYmZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBuKHQsZSxuKXtyZXR1cm4gbmV3IEFycmF5KG4rMS10Lmxlbmd0aCkuam9pbihlKSt0fWZ1bmN0aW9uIGkoKXtpZigxPT09YXJndW1lbnRzLmxlbmd0aCl7dmFyIGU9YXJndW1lbnRzWzBdO3JldHVybiJzdHJpbmciPT10eXBlb2YgZSYmKGU9dC5mbi50aW1lcGlja2VyLnBhcnNlVGltZShlKSksbmV3IERhdGUoMCwwLDAsZS5nZXRIb3VycygpLGUuZ2V0TWludXRlcygpLGUuZ2V0U2Vjb25kcygpKX1yZXR1cm4gMz09PWFyZ3VtZW50cy5sZW5ndGg/bmV3IERhdGUoMCwwLDAsYXJndW1lbnRzWzBdLGFyZ3VtZW50c1sxXSxhcmd1bWVudHNbMl0pOjI9PT1hcmd1bWVudHMubGVuZ3RoP25ldyBEYXRlKDAsMCwwLGFyZ3VtZW50c1swXSxhcmd1bWVudHNbMV0sMCk6bmV3IERhdGUoMCwwLDApfXZhciByLG87dC5UaW1lUGlja2VyPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztlLmNvbnRhaW5lcj10KCIudWktdGltZXBpY2tlci1jb250YWluZXIiKSxlLnVpPWUuY29udGFpbmVyLmZpbmQoIi51aS10aW1lcGlja2VyIiksMD09PWUuY29udGFpbmVyLmxlbmd0aCYmKGUuY29udGFpbmVyPXQoIjxkaXY+PC9kaXY+IikuYWRkQ2xhc3MoInVpLXRpbWVwaWNrZXItY29udGFpbmVyIikuYWRkQ2xhc3MoInVpLXRpbWVwaWNrZXItaGlkZGVuIHVpLWhlbHBlci1oaWRkZW4iKS5hcHBlbmRUbygiYm9keSIpLmhpZGUoKSxlLnVpPXQoIjxkaXY+PC9kaXY+IikuYWRkQ2xhc3MoInVpLXRpbWVwaWNrZXIiKS5hZGRDbGFzcygidWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLW1lbnUiKS5hZGRDbGFzcygidWktY29ybmVyLWFsbCIpLmFwcGVuZFRvKGUuY29udGFpbmVyKSxlLnZpZXdwb3J0PXQoIjx1bD48L3VsPiIpLmFkZENsYXNzKCJ1aS10aW1lcGlja2VyLXZpZXdwb3J0IikuYXBwZW5kVG8oZS51aSksdC5mbi5qcXVlcnk+PSIxLjQuMiImJmUudWkuZGVsZWdhdGUoImEiLCJtb3VzZWVudGVyLnRpbWVwaWNrZXIiLChmdW5jdGlvbigpe2UuYWN0aXZhdGUoITEsdCh0aGlzKS5wYXJlbnQoKSl9KSkuZGVsZWdhdGUoImEiLCJtb3VzZWxlYXZlLnRpbWVwaWNrZXIiLChmdW5jdGlvbigpe2UuZGVhY3RpdmF0ZSghMSl9KSkuZGVsZWdhdGUoImEiLCJjbGljay50aW1lcGlja2VyIiwoZnVuY3Rpb24obil7bi5wcmV2ZW50RGVmYXVsdCgpLGUuc2VsZWN0KCExLHQodGhpcykucGFyZW50KCkpfSkpKX0sdC5UaW1lUGlja2VyLmNvdW50PTAsdC5UaW1lUGlja2VyLmluc3RhbmNlPWZ1bmN0aW9uKCl7cmV0dXJuIHQuVGltZVBpY2tlci5faW5zdGFuY2V8fCh0LlRpbWVQaWNrZXIuX2luc3RhbmNlPW5ldyB0LlRpbWVQaWNrZXIpLHQuVGltZVBpY2tlci5faW5zdGFuY2V9LHQuVGltZVBpY2tlci5wcm90b3R5cGU9e2tleUNvZGU6e0FMVDoxOCxCTE9RX01BWVVTOjIwLENUUkw6MTcsRE9XTjo0MCxFTkQ6MzUsRU5URVI6MTMsSE9NRTozNixMRUZUOjM3LE5VTVBBRF9FTlRFUjoxMDgsUEFHRV9ET1dOOjM0LFBBR0VfVVA6MzMsUklHSFQ6MzksU0hJRlQ6MTYsVEFCOjksVVA6Mzh9LF9pdGVtczpmdW5jdGlvbihlLG4pe3ZhciByLG8sYT10KCI8dWw+PC91bD4iKSxzPW51bGw7Zm9yKC0xPT09ZS5vcHRpb25zLnRpbWVGb3JtYXQuaW5kZXhPZigibSIpJiZlLm9wdGlvbnMuaW50ZXJ2YWwlNjAhPTAmJihlLm9wdGlvbnMuaW50ZXJ2YWw9NjAqTWF0aC5tYXgoTWF0aC5yb3VuZChlLm9wdGlvbnMuaW50ZXJ2YWwvNjApLDEpKSxyPW4/aShuKTplLm9wdGlvbnMuc3RhcnRUaW1lP2koZS5vcHRpb25zLnN0YXJ0VGltZSk6aShlLm9wdGlvbnMuc3RhcnRIb3VyLGUub3B0aW9ucy5zdGFydE1pbnV0ZXMpLG89bmV3IERhdGUoci5nZXRUaW1lKCkrODY0ZTUpO3I8bzspdGhpcy5faXNWYWxpZFRpbWUoZSxyKSYmKHM9dCgiPGxpPiIpLmFkZENsYXNzKCJ1aS1tZW51LWl0ZW0iKS5hcHBlbmRUbyhhKSx0KCI8YT4iKS5hZGRDbGFzcygidWktY29ybmVyLWFsbCIpLnRleHQodC5mbi50aW1lcGlja2VyLmZvcm1hdFRpbWUoZS5vcHRpb25zLnRpbWVGb3JtYXQscikpLmFwcGVuZFRvKHMpLHMuZGF0YSgidGltZS12YWx1ZSIscikpLHI9bmV3IERhdGUoci5nZXRUaW1lKCkrNjAqZS5vcHRpb25zLmludGVydmFsKjFlMyk7cmV0dXJuIGEuY2hpbGRyZW4oKX0sX2lzVmFsaWRUaW1lOmZ1bmN0aW9uKHQsZSl7dmFyIG49bnVsbCxyPW51bGw7cmV0dXJuIGU9aShlKSxudWxsIT09dC5vcHRpb25zLm1pblRpbWU/bj1pKHQub3B0aW9ucy5taW5UaW1lKTpudWxsPT09dC5vcHRpb25zLm1pbkhvdXImJm51bGw9PT10Lm9wdGlvbnMubWluTWludXRlc3x8KG49aSh0Lm9wdGlvbnMubWluSG91cix0Lm9wdGlvbnMubWluTWludXRlcykpLG51bGwhPT10Lm9wdGlvbnMubWF4VGltZT9yPWkodC5vcHRpb25zLm1heFRpbWUpOm51bGw9PT10Lm9wdGlvbnMubWF4SG91ciYmbnVsbD09PXQub3B0aW9ucy5tYXhNaW51dGVzfHwocj1pKHQub3B0aW9ucy5tYXhIb3VyLHQub3B0aW9ucy5tYXhNaW51dGVzKSksbnVsbCE9PW4mJm51bGwhPT1yP2U+PW4mJmU8PXI6bnVsbCE9PW4/ZT49bjpudWxsPT09cnx8ZTw9cn0sX2hhc1Njcm9sbDpmdW5jdGlvbigpe3ZhciB0PXZvaWQgMCE9PXRoaXMudWkucHJvcD8icHJvcCI6ImF0dHIiO3JldHVybiB0aGlzLnVpLmhlaWdodCgpPHRoaXMudWlbdF0oInNjcm9sbEhlaWdodCIpfSxfbW92ZTpmdW5jdGlvbih0LGUsbil7aWYodGhpcy5jbG9zZWQoKSYmdGhpcy5vcGVuKHQpLHRoaXMuYWN0aXZlKXt2YXIgaT10aGlzLmFjdGl2ZVtlKyJBbGwiXSgiLnVpLW1lbnUtaXRlbSIpLmVxKDApO2kubGVuZ3RoP3RoaXMuYWN0aXZhdGUodCxpKTp0aGlzLmFjdGl2YXRlKHQsdGhpcy52aWV3cG9ydC5jaGlsZHJlbihuKSl9ZWxzZSB0aGlzLmFjdGl2YXRlKHQsdGhpcy52aWV3cG9ydC5jaGlsZHJlbihuKSl9LHJlZ2lzdGVyOmZ1bmN0aW9uKGUsbil7dmFyIGk9dGhpcyxyPXt9O3IuZWxlbWVudD10KGUpLHIuZWxlbWVudC5kYXRhKCJUaW1lUGlja2VyIil8fChyLm9wdGlvbnM9dC5tZXRhZGF0YT90LmV4dGVuZCh7fSxuLHIuZWxlbWVudC5tZXRhZGF0YSgpKTp0LmV4dGVuZCh7fSxuKSxyLndpZGdldD1pLHQuZXh0ZW5kKHIse25leHQ6ZnVuY3Rpb24oKXtyZXR1cm4gaS5uZXh0KHIpfSxwcmV2aW91czpmdW5jdGlvbigpe3JldHVybiBpLnByZXZpb3VzKHIpfSxmaXJzdDpmdW5jdGlvbigpe3JldHVybiBpLmZpcnN0KHIpfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIGkubGFzdChyKX0sc2VsZWN0ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gaS5zZWxlY3RlZChyKX0sb3BlbjpmdW5jdGlvbigpe3JldHVybiBpLm9wZW4ocil9LGNsb3NlOmZ1bmN0aW9uKCl7cmV0dXJuIGkuY2xvc2Uocil9LGNsb3NlZDpmdW5jdGlvbigpe3JldHVybiBpLmNsb3NlZChyKX0sZGVzdHJveTpmdW5jdGlvbigpe3JldHVybiBpLmRlc3Ryb3kocil9LHBhcnNlOmZ1bmN0aW9uKHQpe3JldHVybiBpLnBhcnNlKHIsdCl9LGZvcm1hdDpmdW5jdGlvbih0LGUpe3JldHVybiBpLmZvcm1hdChyLHQsZSl9LGdldFRpbWU6ZnVuY3Rpb24oKXtyZXR1cm4gaS5nZXRUaW1lKHIpfSxzZXRUaW1lOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGkuc2V0VGltZShyLHQsZSl9LG9wdGlvbjpmdW5jdGlvbih0LGUpe3JldHVybiBpLm9wdGlvbihyLHQsZSl9fSksaS5fc2V0RGVmYXVsdFRpbWUociksaS5fYWRkSW5wdXRFdmVudHNIYW5kbGVycyhyKSxyLmVsZW1lbnQuZGF0YSgiVGltZVBpY2tlciIscikpfSxfc2V0RGVmYXVsdFRpbWU6ZnVuY3Rpb24oZSl7Im5vdyI9PT1lLm9wdGlvbnMuZGVmYXVsdFRpbWU/ZS5zZXRUaW1lKGkobmV3IERhdGUpKTplLm9wdGlvbnMuZGVmYXVsdFRpbWUmJmUub3B0aW9ucy5kZWZhdWx0VGltZS5nZXRGdWxsWWVhcj9lLnNldFRpbWUoaShlLm9wdGlvbnMuZGVmYXVsdFRpbWUpKTplLm9wdGlvbnMuZGVmYXVsdFRpbWUmJmUuc2V0VGltZSh0LmZuLnRpbWVwaWNrZXIucGFyc2VUaW1lKGUub3B0aW9ucy5kZWZhdWx0VGltZSkpfSxfYWRkSW5wdXRFdmVudHNIYW5kbGVyczpmdW5jdGlvbihlKXt2YXIgbj10aGlzO2UuZWxlbWVudC5iaW5kKCJrZXlkb3duLnRpbWVwaWNrZXIiLChmdW5jdGlvbih0KXtzd2l0Y2godC53aGljaHx8dC5rZXlDb2RlKXtjYXNlIG4ua2V5Q29kZS5FTlRFUjpjYXNlIG4ua2V5Q29kZS5OVU1QQURfRU5URVI6dC5wcmV2ZW50RGVmYXVsdCgpLG4uY2xvc2VkKCk/ZS5lbGVtZW50LnRyaWdnZXIoImNoYW5nZS50aW1lcGlja2VyIik6bi5zZWxlY3QoZSxuLmFjdGl2ZSk7YnJlYWs7Y2FzZSBuLmtleUNvZGUuVVA6ZS5wcmV2aW91cygpO2JyZWFrO2Nhc2Ugbi5rZXlDb2RlLkRPV046ZS5uZXh0KCk7YnJlYWs7ZGVmYXVsdDpuLmNsb3NlZCgpfHxlLmNsb3NlKCEwKX19KSkuYmluZCgiZm9jdXMudGltZXBpY2tlciIsKGZ1bmN0aW9uKCl7ZS5vcGVuKCl9KSkuYmluZCgiYmx1ci50aW1lcGlja2VyIiwoZnVuY3Rpb24oKXtzZXRUaW1lb3V0KChmdW5jdGlvbigpe2UuZWxlbWVudC5kYXRhKCJ0aW1lcGlja2VyLXVzZXItY2xpY2tlZC1vdXRzaWRlIikmJmUuY2xvc2UoKX0pKX0pKS5iaW5kKCJjaGFuZ2UudGltZXBpY2tlciIsKGZ1bmN0aW9uKCl7ZS5jbG9zZWQoKSYmZS5zZXRUaW1lKHQuZm4udGltZXBpY2tlci5wYXJzZVRpbWUoZS5lbGVtZW50LnZhbCgpKSl9KSl9LHNlbGVjdDpmdW5jdGlvbihlLG4pe3ZhciBpPSExPT09ZT90aGlzLmluc3RhbmNlOmU7dGhpcy5zZXRUaW1lKGksdC5mbi50aW1lcGlja2VyLnBhcnNlVGltZShuLmNoaWxkcmVuKCJhIikudGV4dCgpKSksdGhpcy5jbG9zZShpLCEwKX0sYWN0aXZhdGU6ZnVuY3Rpb24odCxlKXtpZigoITE9PT10P3RoaXMuaW5zdGFuY2U6dCk9PT10aGlzLmluc3RhbmNlKXtpZih0aGlzLmRlYWN0aXZhdGUoKSx0aGlzLl9oYXNTY3JvbGwoKSl7dmFyIG49ZS5vZmZzZXQoKS50b3AtdGhpcy51aS5vZmZzZXQoKS50b3AsaT10aGlzLnVpLnNjcm9sbFRvcCgpLHI9dGhpcy51aS5oZWlnaHQoKTtuPDA/dGhpcy51aS5zY3JvbGxUb3AoaStuKTpuPj1yJiZ0aGlzLnVpLnNjcm9sbFRvcChpK24tcitlLmhlaWdodCgpKX10aGlzLmFjdGl2ZT1lLmVxKDApLmNoaWxkcmVuKCJhIikuYWRkQ2xhc3MoInVpLXN0YXRlLWhvdmVyIikuYXR0cigiaWQiLCJ1aS1hY3RpdmUtaXRlbSIpLmVuZCgpfX0sZGVhY3RpdmF0ZTpmdW5jdGlvbigpe3RoaXMuYWN0aXZlJiYodGhpcy5hY3RpdmUuY2hpbGRyZW4oImEiKS5yZW1vdmVDbGFzcygidWktc3RhdGUtaG92ZXIiKS5yZW1vdmVBdHRyKCJpZCIpLHRoaXMuYWN0aXZlPW51bGwpfSxuZXh0OmZ1bmN0aW9uKHQpe3JldHVybih0aGlzLmNsb3NlZCgpfHx0aGlzLmluc3RhbmNlPT09dCkmJnRoaXMuX21vdmUodCwibmV4dCIsIi51aS1tZW51LWl0ZW06Zmlyc3QiKSx0LmVsZW1lbnR9LHByZXZpb3VzOmZ1bmN0aW9uKHQpe3JldHVybih0aGlzLmNsb3NlZCgpfHx0aGlzLmluc3RhbmNlPT09dCkmJnRoaXMuX21vdmUodCwicHJldiIsIi51aS1tZW51LWl0ZW06bGFzdCIpLHQuZWxlbWVudH0sZmlyc3Q6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaW5zdGFuY2U9PT10JiYodGhpcy5hY3RpdmUmJjA9PT10aGlzLmFjdGl2ZS5wcmV2QWxsKCIudWktbWVudS1pdGVtIikubGVuZ3RoKX0sbGFzdDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pbnN0YW5jZT09PXQmJih0aGlzLmFjdGl2ZSYmMD09PXRoaXMuYWN0aXZlLm5leHRBbGwoIi51aS1tZW51LWl0ZW0iKS5sZW5ndGgpfSxzZWxlY3RlZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5pbnN0YW5jZT09PXQmJnRoaXMuYWN0aXZlP3RoaXMuYWN0aXZlOm51bGx9LG9wZW46ZnVuY3Rpb24oZSl7dmFyIG49dGhpcyxpPWUuZ2V0VGltZSgpLHI9ZS5vcHRpb25zLmR5bmFtaWMmJmk7aWYoIWUub3B0aW9ucy5kcm9wZG93bilyZXR1cm4gZS5lbGVtZW50O3N3aXRjaChlLmVsZW1lbnQuZGF0YSgidGltZXBpY2tlci1ldmVudC1uYW1lc3BhY2UiLE1hdGgucmFuZG9tKCkpLHQoZG9jdW1lbnQpLmJpbmQoImNsaWNrLnRpbWVwaWNrZXItIitlLmVsZW1lbnQuZGF0YSgidGltZXBpY2tlci1ldmVudC1uYW1lc3BhY2UiKSwoZnVuY3Rpb24odCl7ZS5lbGVtZW50LmdldCgwKT09PXQudGFyZ2V0P2UuZWxlbWVudC5kYXRhKCJ0aW1lcGlja2VyLXVzZXItY2xpY2tlZC1vdXRzaWRlIiwhMSk6ZS5lbGVtZW50LmRhdGEoInRpbWVwaWNrZXItdXNlci1jbGlja2VkLW91dHNpZGUiLCEwKS5ibHVyKCl9KSksKGUucmVidWlsZHx8IWUuaXRlbXN8fHIpJiYoZS5pdGVtcz1uLl9pdGVtcyhlLHI/aTpudWxsKSksKGUucmVidWlsZHx8bi5pbnN0YW5jZSE9PWV8fHIpJiYodC5mbi5qcXVlcnk8IjEuNC4yIj8obi52aWV3cG9ydC5jaGlsZHJlbigpLnJlbW92ZSgpLG4udmlld3BvcnQuYXBwZW5kKGUuaXRlbXMpLG4udmlld3BvcnQuZmluZCgiYSIpLmJpbmQoIm1vdXNlb3Zlci50aW1lcGlja2VyIiwoZnVuY3Rpb24oKXtuLmFjdGl2YXRlKGUsdCh0aGlzKS5wYXJlbnQoKSl9KSkuYmluZCgibW91c2VvdXQudGltZXBpY2tlciIsKGZ1bmN0aW9uKCl7bi5kZWFjdGl2YXRlKGUpfSkpLmJpbmQoImNsaWNrLnRpbWVwaWNrZXIiLChmdW5jdGlvbihpKXtpLnByZXZlbnREZWZhdWx0KCksbi5zZWxlY3QoZSx0KHRoaXMpLnBhcmVudCgpKX0pKSk6KG4udmlld3BvcnQuY2hpbGRyZW4oKS5kZXRhY2goKSxuLnZpZXdwb3J0LmFwcGVuZChlLml0ZW1zKSkpLGUucmVidWlsZD0hMSxuLmNvbnRhaW5lci5yZW1vdmVDbGFzcygidWktaGVscGVyLWhpZGRlbiB1aS10aW1lcGlja2VyLWhpZGRlbiB1aS10aW1lcGlja2VyLXN0YW5kYXJkIHVpLXRpbWVwaWNrZXItY29ybmVycyIpLnNob3coKSxlLm9wdGlvbnMudGhlbWUpe2Nhc2Uic3RhbmRhcmQiOm4uY29udGFpbmVyLmFkZENsYXNzKCJ1aS10aW1lcGlja2VyLXN0YW5kYXJkIik7YnJlYWs7Y2FzZSJzdGFuZGFyZC1yb3VuZGVkLWNvcm5lcnMiOm4uY29udGFpbmVyLmFkZENsYXNzKCJ1aS10aW1lcGlja2VyLXN0YW5kYXJkIHVpLXRpbWVwaWNrZXItY29ybmVycyIpfW4uY29udGFpbmVyLmhhc0NsYXNzKCJ1aS10aW1lcGlja2VyLW5vLXNjcm9sbGJhciIpfHxlLm9wdGlvbnMuc2Nyb2xsYmFyfHwobi5jb250YWluZXIuYWRkQ2xhc3MoInVpLXRpbWVwaWNrZXItbm8tc2Nyb2xsYmFyIiksbi52aWV3cG9ydC5jc3Moe3BhZGRpbmdSaWdodDo0MH0pKTt2YXIgbz1uLmNvbnRhaW5lci5vdXRlckhlaWdodCgpLW4uY29udGFpbmVyLmhlaWdodCgpLGE9ZS5vcHRpb25zLnppbmRleD9lLm9wdGlvbnMuemluZGV4OmUuZWxlbWVudC5vZmZzZXRQYXJlbnQoKS5jc3MoInotaW5kZXgiKSxzPWUuZWxlbWVudC5vZmZzZXQoKTtuLmNvbnRhaW5lci5jc3Moe3RvcDpzLnRvcCtlLmVsZW1lbnQub3V0ZXJIZWlnaHQoKSxsZWZ0OnMubGVmdH0pLG4uY29udGFpbmVyLnNob3coKSxuLmNvbnRhaW5lci5jc3Moe2xlZnQ6ZS5lbGVtZW50Lm9mZnNldCgpLmxlZnQsaGVpZ2h0Om4udWkub3V0ZXJIZWlnaHQoKStvLHdpZHRoOmUuZWxlbWVudC5vdXRlcldpZHRoKCksekluZGV4OmEsY3Vyc29yOiJkZWZhdWx0In0pO3ZhciBsPW4uY29udGFpbmVyLndpZHRoKCktKG4udWkub3V0ZXJXaWR0aCgpLW4udWkud2lkdGgoKSk7cmV0dXJuIG4udWkuY3NzKHt3aWR0aDpsfSksbi52aWV3cG9ydC5jc3Moe3dpZHRoOmx9KSxlLml0ZW1zLmNzcyh7d2lkdGg6bH0pLG4uaW5zdGFuY2U9ZSxpP2UuaXRlbXMuZWFjaCgoZnVuY3Rpb24oKXt2YXIgcj10KHRoaXMpO3JldHVybih0LmZuLmpxdWVyeTwiMS40LjIiP3QuZm4udGltZXBpY2tlci5wYXJzZVRpbWUoci5maW5kKCJhIikudGV4dCgpKTpyLmRhdGEoInRpbWUtdmFsdWUiKSkuZ2V0VGltZSgpIT09aS5nZXRUaW1lKCl8fChuLmFjdGl2YXRlKGUsciksITEpfSkpOm4uZGVhY3RpdmF0ZShlKSxlLmVsZW1lbnR9LGNsb3NlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmluc3RhbmNlPT09ZSYmKHRoaXMuY29udGFpbmVyLmFkZENsYXNzKCJ1aS1oZWxwZXItaGlkZGVuIHVpLXRpbWVwaWNrZXItaGlkZGVuIikuaGlkZSgpLHRoaXMudWkuc2Nyb2xsVG9wKDApLHRoaXMudWkuY2hpbGRyZW4oKS5yZW1vdmVDbGFzcygidWktc3RhdGUtaG92ZXIiKSksdChkb2N1bWVudCkudW5iaW5kKCJjbGljay50aW1lcGlja2VyLSIrZS5lbGVtZW50LmRhdGEoInRpbWVwaWNrZXItZXZlbnQtbmFtZXNwYWNlIikpLGUuZWxlbWVudH0sY2xvc2VkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudWkuaXMoIjpoaWRkZW4iKX0sZGVzdHJveTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jbG9zZSh0LCEwKSx0LmVsZW1lbnQudW5iaW5kKCIudGltZXBpY2tlciIpLmRhdGEoIlRpbWVQaWNrZXIiLG51bGwpfSxwYXJzZTpmdW5jdGlvbihlLG4pe3JldHVybiB0LmZuLnRpbWVwaWNrZXIucGFyc2VUaW1lKG4pfSxmb3JtYXQ6ZnVuY3Rpb24oZSxuLGkpe3JldHVybiBpPWl8fGUub3B0aW9ucy50aW1lRm9ybWF0LHQuZm4udGltZXBpY2tlci5mb3JtYXRUaW1lKGksbil9LGdldFRpbWU6ZnVuY3Rpb24oZSl7dmFyIG49dC5mbi50aW1lcGlja2VyLnBhcnNlVGltZShlLmVsZW1lbnQudmFsKCkpO3JldHVybiBuIGluc3RhbmNlb2YgRGF0ZSYmIXRoaXMuX2lzVmFsaWRUaW1lKGUsbik/bnVsbDpuIGluc3RhbmNlb2YgRGF0ZSYmZS5zZWxlY3RlZFRpbWU/ZS5mb3JtYXQobik9PT1lLmZvcm1hdChlLnNlbGVjdGVkVGltZSk/ZS5zZWxlY3RlZFRpbWU6bjpuIGluc3RhbmNlb2YgRGF0ZT9uOm51bGx9LHNldFRpbWU6ZnVuY3Rpb24oZSxuLHIpe3ZhciBvPWUuc2VsZWN0ZWRUaW1lO2lmKCJzdHJpbmciPT10eXBlb2YgbiYmKG49ZS5wYXJzZShuKSksbiYmbi5nZXRNaW51dGVzJiZ0aGlzLl9pc1ZhbGlkVGltZShlLG4pKXtpZihuPWkobiksZS5zZWxlY3RlZFRpbWU9bixlLmVsZW1lbnQudmFsKGUuZm9ybWF0KG4sZS5vcHRpb25zLnRpbWVGb3JtYXQpKSxyKXJldHVybiBlfWVsc2UgZS5zZWxlY3RlZFRpbWU9bnVsbDtyZXR1cm4gbnVsbD09PW8mJm51bGw9PT1lLnNlbGVjdGVkVGltZXx8KGUuZWxlbWVudC50cmlnZ2VyKCJ0aW1lLWNoYW5nZSIsW25dKSx0LmlzRnVuY3Rpb24oZS5vcHRpb25zLmNoYW5nZSkmJmUub3B0aW9ucy5jaGFuZ2UuYXBwbHkoZS5lbGVtZW50LFtuXSkpLGUuZWxlbWVudH0sb3B0aW9uOmZ1bmN0aW9uKGUsbixpKXtpZih2b2lkIDA9PT1pKXJldHVybiBlLm9wdGlvbnNbbl07dmFyIHIsbyxhPWUuZ2V0VGltZSgpOyJzdHJpbmciPT10eXBlb2Ygbj8ocj17fSlbbl09aTpyPW4sbz1bIm1pbkhvdXIiLCJtaW5NaW51dGVzIiwibWluVGltZSIsIm1heEhvdXIiLCJtYXhNaW51dGVzIiwibWF4VGltZSIsInN0YXJ0SG91ciIsInN0YXJ0TWludXRlcyIsInN0YXJ0VGltZSIsInRpbWVGb3JtYXQiLCJpbnRlcnZhbCIsImRyb3Bkb3duIl0sdC5lYWNoKHIsKGZ1bmN0aW9uKG4pe2Uub3B0aW9uc1tuXT1yW25dLGUucmVidWlsZD1lLnJlYnVpbGR8fHQuaW5BcnJheShuLG8pPi0xfSkpLGUucmVidWlsZCYmZS5zZXRUaW1lKGEpfX0sdC5UaW1lUGlja2VyLmRlZmF1bHRzPXt0aW1lRm9ybWF0OiJoaDptbSBwIixtaW5Ib3VyOm51bGwsbWluTWludXRlczpudWxsLG1pblRpbWU6bnVsbCxtYXhIb3VyOm51bGwsbWF4TWludXRlczpudWxsLG1heFRpbWU6bnVsbCxzdGFydEhvdXI6bnVsbCxzdGFydE1pbnV0ZXM6bnVsbCxzdGFydFRpbWU6bnVsbCxpbnRlcnZhbDozMCxkeW5hbWljOiEwLHRoZW1lOiJzdGFuZGFyZCIsemluZGV4Om51bGwsZHJvcGRvd246ITAsc2Nyb2xsYmFyOiExLGNoYW5nZTpmdW5jdGlvbigpe319LHQuVGltZVBpY2tlci5tZXRob2RzPXtjaGFpbmFibGU6WyJuZXh0IiwicHJldmlvdXMiLCJvcGVuIiwiY2xvc2UiLCJkZXN0cm95Iiwic2V0VGltZSJdfSx0LmZuLnRpbWVwaWNrZXI9ZnVuY3Rpb24oZSl7aWYoInN0cmluZyI9PXR5cGVvZiBlKXt2YXIgbixpLHI9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpO3JldHVybiBpPXRoaXNbbj0ib3B0aW9uIj09PWUmJmFyZ3VtZW50cy5sZW5ndGg+Mnx8LTEhPT10LmluQXJyYXkoZSx0LlRpbWVQaWNrZXIubWV0aG9kcy5jaGFpbmFibGUpPyJlYWNoIjoibWFwIl0oKGZ1bmN0aW9uKCl7dmFyIG49dCh0aGlzKS5kYXRhKCJUaW1lUGlja2VyIik7aWYoIm9iamVjdCI9PXR5cGVvZiBuKXJldHVybiBuW2VdLmFwcGx5KG4scil9KSksIm1hcCI9PT1uJiYxPT09dGhpcy5sZW5ndGg/dC5tYWtlQXJyYXkoaSkuc2hpZnQoKToibWFwIj09PW4/dC5tYWtlQXJyYXkoaSk6aX1pZigxPT09dGhpcy5sZW5ndGgmJnRoaXMuZGF0YSgiVGltZVBpY2tlciIpKXJldHVybiB0aGlzLmRhdGEoIlRpbWVQaWNrZXIiKTt2YXIgbz10LmV4dGVuZCh7fSx0LlRpbWVQaWNrZXIuZGVmYXVsdHMsZSk7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXt0LlRpbWVQaWNrZXIuaW5zdGFuY2UoKS5yZWdpc3Rlcih0aGlzLG8pfSkpfSx0LmZuLnRpbWVwaWNrZXIuZm9ybWF0VGltZT1mdW5jdGlvbih0LGUpe3ZhciBpPWUuZ2V0SG91cnMoKSxyPWklMTIsbz1lLmdldE1pbnV0ZXMoKSxhPWUuZ2V0U2Vjb25kcygpLHM9e2hoOm4oKDA9PT1yPzEyOnIpLnRvU3RyaW5nKCksIjAiLDIpLEhIOm4oaS50b1N0cmluZygpLCIwIiwyKSxtbTpuKG8udG9TdHJpbmcoKSwiMCIsMiksc3M6bihhLnRvU3RyaW5nKCksIjAiLDIpLGg6MD09PXI/MTI6cixIOmksbTpvLHM6YSxwOmk+MTE/IlBNIjoiQU0ifSxsPXQsYz0iIjtmb3IoYyBpbiBzKXMuaGFzT3duUHJvcGVydHkoYykmJihsPWwucmVwbGFjZShuZXcgUmVnRXhwKGMsImciKSxzW2NdKSk7cmV0dXJuIGw9bC5yZXBsYWNlKG5ldyBSZWdFeHAoImEiLCJnIiksaT4xMT8icG0iOiJhbSIpfSx0LmZuLnRpbWVwaWNrZXIucGFyc2VUaW1lPShvPShyPVtbL14oXGQrKSQvLCIkMSJdLFsvXjooXGQpJC8sIiQxMCJdLFsvXjooXGQrKS8sIiQxIl0sWy9eKFxkKTooWzctOV0pJC8sIjAkMTAkMiJdLFsvXihcZCk6KFxkXGQpJC8sIiQxJDIiXSxbL14oXGQpOihcZHsxLH0pJC8sIjAkMSQyMCJdLFsvXihcZFxkKTooWzctOV0pJC8sIiQxMCQyIl0sWy9eKFxkXGQpOihcZCkkLywiJDEkMjAiXSxbL14oXGRcZCk6KFxkKikkLywiJDEkMiJdLFsvXihcZHszLH0pOihcZCkkLywiJDEwJDIiXSxbL14oXGR7Myx9KTooXGR7Mix9KS8sIiQxJDIiXSxbL14oXGQpOihcZCk6KFxkKSQvLCIwJDEwJDIwJDMiXSxbL14oXGR7MSwyfSk6KFxkKTooXGRcZCkvLCIkMTAkMiQzIl1dKS5sZW5ndGgsZnVuY3Rpb24oZSl7dmFyIG4sYSxzPWkobmV3IERhdGUpLGw9ITEsYz0hMSx1PSExO2lmKHZvaWQgMD09PWV8fCFlLnRvTG93ZXJDYXNlKXJldHVybiBudWxsO2U9ZS50b0xvd2VyQ2FzZSgpLGE9IShuPS9hLy50ZXN0KGUpKSYmL3AvLnRlc3QoZSksZT1lLnJlcGxhY2UoL1teMC05Ol0vZywiIikucmVwbGFjZSgvOisvZywiOiIpO2Zvcih2YXIgZD0wO2Q8bztkKz0xKWlmKHJbZF1bMF0udGVzdChlKSl7ZT1lLnJlcGxhY2UocltkXVswXSxyW2RdWzFdKTticmVha31yZXR1cm4gMT09PShlPWUucmVwbGFjZSgvOi9nLCIiKSkubGVuZ3RofHwyPT09ZS5sZW5ndGg/bD1lOjM9PT1lLmxlbmd0aHx8NT09PWUubGVuZ3RoPyhsPWUuc3Vic3RyKDAsMSksYz1lLnN1YnN0cigxLDIpLHU9ZS5zdWJzdHIoMywyKSk6KDQ9PT1lLmxlbmd0aHx8ZS5sZW5ndGg+NSkmJihsPWUuc3Vic3RyKDAsMiksYz1lLnN1YnN0cigyLDIpLHU9ZS5zdWJzdHIoNCwyKSksZS5sZW5ndGg+MCYmZS5sZW5ndGg8NSYmKGUubGVuZ3RoPDMmJihjPTApLHU9MCksITEhPT1sJiYhMSE9PWMmJiExIT09dSYmKGw9cGFyc2VJbnQobCwxMCksYz1wYXJzZUludChjLDEwKSx1PXBhcnNlSW50KHUsMTApLG4mJjEyPT09bD9sPTA6YSYmbDwxMiYmKGwrPTEyKSxsPjI0P2UubGVuZ3RoPj02P3QuZm4udGltZXBpY2tlci5wYXJzZVRpbWUoZS5zdWJzdHIoMCw1KSk6dC5mbi50aW1lcGlja2VyLnBhcnNlVGltZShlKyIwIisobj8iYSI6IiIpKyhhPyJwIjoiIikpOihzLnNldEhvdXJzKGwsYyx1KSxzKSl9KX0oalF1ZXJ5KSxmdW5jdGlvbih0KXsiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbImpxdWVyeSJdLHQpOnQoalF1ZXJ5KX0oKGZ1bmN0aW9uKHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT17fSxuPU1hdGgubWF4LGk9TWF0aC5taW47ZS5jPXt9LGUuYy5kPXQoZG9jdW1lbnQpLGUuYy50PWZ1bmN0aW9uKHQpe3JldHVybiB0Lm9yaWdpbmFsRXZlbnQudG91Y2hlcy5sZW5ndGgtMX0sZS5vPWZ1bmN0aW9uKCl7dmFyIG49dGhpczt0aGlzLm89bnVsbCx0aGlzLiQ9bnVsbCx0aGlzLmk9bnVsbCx0aGlzLmc9bnVsbCx0aGlzLnY9bnVsbCx0aGlzLmN2PW51bGwsdGhpcy54PTAsdGhpcy55PTAsdGhpcy53PTAsdGhpcy5oPTAsdGhpcy4kYz1udWxsLHRoaXMuYz1udWxsLHRoaXMudD0wLHRoaXMuaXNJbml0PSExLHRoaXMuZmdDb2xvcj1udWxsLHRoaXMucENvbG9yPW51bGwsdGhpcy5kSD1udWxsLHRoaXMuY0g9bnVsbCx0aGlzLmVIPW51bGwsdGhpcy5ySD1udWxsLHRoaXMuc2NhbGU9MSx0aGlzLnJlbGF0aXZlPSExLHRoaXMucmVsYXRpdmVXaWR0aD0hMSx0aGlzLnJlbGF0aXZlSGVpZ2h0PSExLHRoaXMuJGRpdj1udWxsLHRoaXMucnVuPWZ1bmN0aW9uKCl7dmFyIGU9ZnVuY3Rpb24odCxlKXt2YXIgaTtmb3IoaSBpbiBlKW4ub1tpXT1lW2ldO24uX2NhcnZlKCkuaW5pdCgpLG4uX2NvbmZpZ3VyZSgpLl9kcmF3KCl9O2lmKCF0aGlzLiQuZGF0YSgia29udHJvbGVkIikpe2lmKHRoaXMuJC5kYXRhKCJrb250cm9sZWQiLCEwKSx0aGlzLmV4dGVuZCgpLHRoaXMubz10LmV4dGVuZCh7bWluOnZvaWQgMCE9PXRoaXMuJC5kYXRhKCJtaW4iKT90aGlzLiQuZGF0YSgibWluIik6MCxtYXg6dm9pZCAwIT09dGhpcy4kLmRhdGEoIm1heCIpP3RoaXMuJC5kYXRhKCJtYXgiKToxMDAsc3RvcHBlcjohMCxyZWFkT25seTp0aGlzLiQuZGF0YSgicmVhZG9ubHkiKXx8InJlYWRvbmx5Ij09PXRoaXMuJC5hdHRyKCJyZWFkb25seSIpLGN1cnNvcjooITA9PT10aGlzLiQuZGF0YSgiY3Vyc29yIik/MzA6dGhpcy4kLmRhdGEoImN1cnNvciIpKXx8MCx0aGlja25lc3M6dGhpcy4kLmRhdGEoInRoaWNrbmVzcyIpJiZNYXRoLm1heChNYXRoLm1pbih0aGlzLiQuZGF0YSgidGhpY2tuZXNzIiksMSksLjAxKXx8LjM1LGxpbmVDYXA6dGhpcy4kLmRhdGEoImxpbmVjYXAiKXx8ImJ1dHQiLHdpZHRoOnRoaXMuJC5kYXRhKCJ3aWR0aCIpfHwyMDAsaGVpZ2h0OnRoaXMuJC5kYXRhKCJoZWlnaHQiKXx8MjAwLGRpc3BsYXlJbnB1dDpudWxsPT10aGlzLiQuZGF0YSgiZGlzcGxheWlucHV0Iil8fHRoaXMuJC5kYXRhKCJkaXNwbGF5aW5wdXQiKSxkaXNwbGF5UHJldmlvdXM6dGhpcy4kLmRhdGEoImRpc3BsYXlwcmV2aW91cyIpLGZnQ29sb3I6dGhpcy4kLmRhdGEoImZnY29sb3IiKXx8IiM4N0NFRUIiLGlucHV0Q29sb3I6dGhpcy4kLmRhdGEoImlucHV0Y29sb3IiKSxmb250OnRoaXMuJC5kYXRhKCJmb250Iil8fCJBcmlhbCIsZm9udFdlaWdodDp0aGlzLiQuZGF0YSgiZm9udC13ZWlnaHQiKXx8ImJvbGQiLGlubGluZTohMSxzdGVwOnRoaXMuJC5kYXRhKCJzdGVwIil8fDEscm90YXRpb246dGhpcy4kLmRhdGEoInJvdGF0aW9uIiksZHJhdzpudWxsLGNoYW5nZTpudWxsLGNhbmNlbDpudWxsLHJlbGVhc2U6bnVsbCxmb3JtYXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHR9LHBhcnNlOmZ1bmN0aW9uKHQpe3JldHVybiBwYXJzZUZsb2F0KHQpfX0sdGhpcy5vKSx0aGlzLm8uZmxpcD0iYW50aWNsb2Nrd2lzZSI9PT10aGlzLm8ucm90YXRpb258fCJhY3ciPT09dGhpcy5vLnJvdGF0aW9uLHRoaXMuby5pbnB1dENvbG9yfHwodGhpcy5vLmlucHV0Q29sb3I9dGhpcy5vLmZnQ29sb3IpLHRoaXMuJC5pcygiZmllbGRzZXQiKT8odGhpcy52PXt9LHRoaXMuaT10aGlzLiQuZmluZCgiaW5wdXQiKSx0aGlzLmkuZWFjaCgoZnVuY3Rpb24oZSl7dmFyIGk9dCh0aGlzKTtuLmlbZV09aSxuLnZbZV09bi5vLnBhcnNlKGkudmFsKCkpLGkuYmluZCgiY2hhbmdlIGJsdXIiLChmdW5jdGlvbigpe3ZhciB0PXt9O3RbZV09aS52YWwoKSxuLnZhbChuLl92YWxpZGF0ZSh0KSl9KSl9KSksdGhpcy4kLmZpbmQoImxlZ2VuZCIpLnJlbW92ZSgpKToodGhpcy5pPXRoaXMuJCx0aGlzLnY9dGhpcy5vLnBhcnNlKHRoaXMuJC52YWwoKSksIiI9PT10aGlzLnYmJih0aGlzLnY9dGhpcy5vLm1pbiksdGhpcy4kLmJpbmQoImNoYW5nZSBibHVyIiwoZnVuY3Rpb24oKXtuLnZhbChuLl92YWxpZGF0ZShuLm8ucGFyc2Uobi4kLnZhbCgpKSkpfSkpKSwhdGhpcy5vLmRpc3BsYXlJbnB1dCYmdGhpcy4kLmhpZGUoKSx0aGlzLiRjPXQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIikpLmF0dHIoe3dpZHRoOnRoaXMuby53aWR0aCxoZWlnaHQ6dGhpcy5vLmhlaWdodH0pLHRoaXMuJGRpdj10KCc8ZGl2IHN0eWxlPSInKyh0aGlzLm8uaW5saW5lPyJkaXNwbGF5OmlubGluZTsiOiIiKSsid2lkdGg6Iit0aGlzLm8ud2lkdGgrInB4O2hlaWdodDoiK3RoaXMuby5oZWlnaHQrJ3B4OyI+PC9kaXY+JyksdGhpcy4kLndyYXAodGhpcy4kZGl2KS5iZWZvcmUodGhpcy4kYyksdGhpcy4kZGl2PXRoaXMuJC5wYXJlbnQoKSwidW5kZWZpbmVkIiE9dHlwZW9mIEdfdm1sQ2FudmFzTWFuYWdlciYmR192bWxDYW52YXNNYW5hZ2VyLmluaXRFbGVtZW50KHRoaXMuJGNbMF0pLHRoaXMuYz10aGlzLiRjWzBdLmdldENvbnRleHQ/dGhpcy4kY1swXS5nZXRDb250ZXh0KCIyZCIpOm51bGwsIXRoaXMuYyl0aHJvd3tuYW1lOiJDYW52YXNOb3RTdXBwb3J0ZWRFeGNlcHRpb24iLG1lc3NhZ2U6IkNhbnZhcyBub3Qgc3VwcG9ydGVkLiBQbGVhc2UgdXNlIGV4Y2FudmFzIG9uIElFOC4wLiIsdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uYW1lKyI6ICIrdGhpcy5tZXNzYWdlfX07cmV0dXJuIHRoaXMuc2NhbGU9KHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvfHwxKS8odGhpcy5jLndlYmtpdEJhY2tpbmdTdG9yZVBpeGVsUmF0aW98fHRoaXMuYy5tb3pCYWNraW5nU3RvcmVQaXhlbFJhdGlvfHx0aGlzLmMubXNCYWNraW5nU3RvcmVQaXhlbFJhdGlvfHx0aGlzLmMub0JhY2tpbmdTdG9yZVBpeGVsUmF0aW98fHRoaXMuYy5iYWNraW5nU3RvcmVQaXhlbFJhdGlvfHwxKSx0aGlzLnJlbGF0aXZlV2lkdGg9dGhpcy5vLndpZHRoJTEhPTAmJnRoaXMuby53aWR0aC5pbmRleE9mKCIlIiksdGhpcy5yZWxhdGl2ZUhlaWdodD10aGlzLm8uaGVpZ2h0JTEhPTAmJnRoaXMuby5oZWlnaHQuaW5kZXhPZigiJSIpLHRoaXMucmVsYXRpdmU9dGhpcy5yZWxhdGl2ZVdpZHRofHx0aGlzLnJlbGF0aXZlSGVpZ2h0LHRoaXMuX2NhcnZlKCksdGhpcy52IGluc3RhbmNlb2YgT2JqZWN0Pyh0aGlzLmN2PXt9LHRoaXMuY29weSh0aGlzLnYsdGhpcy5jdikpOnRoaXMuY3Y9dGhpcy52LHRoaXMuJC5iaW5kKCJjb25maWd1cmUiLGUpLnBhcmVudCgpLmJpbmQoImNvbmZpZ3VyZSIsZSksdGhpcy5fbGlzdGVuKCkuX2NvbmZpZ3VyZSgpLl94eSgpLmluaXQoKSx0aGlzLmlzSW5pdD0hMCx0aGlzLiQudmFsKHRoaXMuby5mb3JtYXQodGhpcy52KSksdGhpcy5fZHJhdygpLHRoaXN9fSx0aGlzLl9jYXJ2ZT1mdW5jdGlvbigpe2lmKHRoaXMucmVsYXRpdmUpe3ZhciB0PXRoaXMucmVsYXRpdmVXaWR0aD90aGlzLiRkaXYucGFyZW50KCkud2lkdGgoKSpwYXJzZUludCh0aGlzLm8ud2lkdGgpLzEwMDp0aGlzLiRkaXYucGFyZW50KCkud2lkdGgoKSxlPXRoaXMucmVsYXRpdmVIZWlnaHQ/dGhpcy4kZGl2LnBhcmVudCgpLmhlaWdodCgpKnBhcnNlSW50KHRoaXMuby5oZWlnaHQpLzEwMDp0aGlzLiRkaXYucGFyZW50KCkuaGVpZ2h0KCk7dGhpcy53PXRoaXMuaD1NYXRoLm1pbih0LGUpfWVsc2UgdGhpcy53PXRoaXMuby53aWR0aCx0aGlzLmg9dGhpcy5vLmhlaWdodDtyZXR1cm4gdGhpcy4kZGl2LmNzcyh7d2lkdGg6dGhpcy53KyJweCIsaGVpZ2h0OnRoaXMuaCsicHgifSksdGhpcy4kYy5hdHRyKHt3aWR0aDp0aGlzLncsaGVpZ2h0OnRoaXMuaH0pLDEhPT10aGlzLnNjYWxlJiYodGhpcy4kY1swXS53aWR0aD10aGlzLiRjWzBdLndpZHRoKnRoaXMuc2NhbGUsdGhpcy4kY1swXS5oZWlnaHQ9dGhpcy4kY1swXS5oZWlnaHQqdGhpcy5zY2FsZSx0aGlzLiRjLndpZHRoKHRoaXMudyksdGhpcy4kYy5oZWlnaHQodGhpcy5oKSksdGhpc30sdGhpcy5fZHJhdz1mdW5jdGlvbigpe3ZhciB0PSEwO24uZz1uLmMsbi5jbGVhcigpLG4uZEgmJih0PW4uZEgoKSksITEhPT10JiZuLmRyYXcoKX0sdGhpcy5fdG91Y2g9ZnVuY3Rpb24odCl7dmFyIGk9ZnVuY3Rpb24odCl7dmFyIGU9bi54eTJ2YWwodC5vcmlnaW5hbEV2ZW50LnRvdWNoZXNbbi50XS5wYWdlWCx0Lm9yaWdpbmFsRXZlbnQudG91Y2hlc1tuLnRdLnBhZ2VZKTtlIT1uLmN2JiYobi5jSCYmITE9PT1uLmNIKGUpfHwobi5jaGFuZ2Uobi5fdmFsaWRhdGUoZSkpLG4uX2RyYXcoKSkpfTtyZXR1cm4gdGhpcy50PWUuYy50KHQpLGkodCksZS5jLmQuYmluZCgidG91Y2htb3ZlLmsiLGkpLmJpbmQoInRvdWNoZW5kLmsiLChmdW5jdGlvbigpe2UuYy5kLnVuYmluZCgidG91Y2htb3ZlLmsgdG91Y2hlbmQuayIpLG4udmFsKG4uY3YpfSkpLHRoaXN9LHRoaXMuX21vdXNlPWZ1bmN0aW9uKHQpe3ZhciBpPWZ1bmN0aW9uKHQpe3ZhciBlPW4ueHkydmFsKHQucGFnZVgsdC5wYWdlWSk7ZSE9bi5jdiYmKG4uY0gmJiExPT09bi5jSChlKXx8KG4uY2hhbmdlKG4uX3ZhbGlkYXRlKGUpKSxuLl9kcmF3KCkpKX07cmV0dXJuIGkodCksZS5jLmQuYmluZCgibW91c2Vtb3ZlLmsiLGkpLmJpbmQoImtleXVwLmsiLChmdW5jdGlvbih0KXtpZigyNz09PXQua2V5Q29kZSl7aWYoZS5jLmQudW5iaW5kKCJtb3VzZXVwLmsgbW91c2Vtb3ZlLmsga2V5dXAuayIpLG4uZUgmJiExPT09bi5lSCgpKXJldHVybjtuLmNhbmNlbCgpfX0pKS5iaW5kKCJtb3VzZXVwLmsiLChmdW5jdGlvbih0KXtlLmMuZC51bmJpbmQoIm1vdXNlbW92ZS5rIG1vdXNldXAuayBrZXl1cC5rIiksbi52YWwobi5jdil9KSksdGhpc30sdGhpcy5feHk9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLiRjLm9mZnNldCgpO3JldHVybiB0aGlzLng9dC5sZWZ0LHRoaXMueT10LnRvcCx0aGlzfSx0aGlzLl9saXN0ZW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vLnJlYWRPbmx5P3RoaXMuJC5hdHRyKCJyZWFkb25seSIsInJlYWRvbmx5Iik6KHRoaXMuJGMuYmluZCgibW91c2Vkb3duIiwoZnVuY3Rpb24odCl7dC5wcmV2ZW50RGVmYXVsdCgpLG4uX3h5KCkuX21vdXNlKHQpfSkpLmJpbmQoInRvdWNoc3RhcnQiLChmdW5jdGlvbih0KXt0LnByZXZlbnREZWZhdWx0KCksbi5feHkoKS5fdG91Y2godCl9KSksdGhpcy5saXN0ZW4oKSksdGhpcy5yZWxhdGl2ZSYmdCh3aW5kb3cpLnJlc2l6ZSgoZnVuY3Rpb24oKXtuLl9jYXJ2ZSgpLmluaXQoKSxuLl9kcmF3KCl9KSksdGhpc30sdGhpcy5fY29uZmlndXJlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuby5kcmF3JiYodGhpcy5kSD10aGlzLm8uZHJhdyksdGhpcy5vLmNoYW5nZSYmKHRoaXMuY0g9dGhpcy5vLmNoYW5nZSksdGhpcy5vLmNhbmNlbCYmKHRoaXMuZUg9dGhpcy5vLmNhbmNlbCksdGhpcy5vLnJlbGVhc2UmJih0aGlzLnJIPXRoaXMuby5yZWxlYXNlKSx0aGlzLm8uZGlzcGxheVByZXZpb3VzPyh0aGlzLnBDb2xvcj10aGlzLmgycmdiYSh0aGlzLm8uZmdDb2xvciwiMC40IiksdGhpcy5mZ0NvbG9yPXRoaXMuaDJyZ2JhKHRoaXMuby5mZ0NvbG9yLCIwLjYiKSk6dGhpcy5mZ0NvbG9yPXRoaXMuby5mZ0NvbG9yLHRoaXN9LHRoaXMuX2NsZWFyPWZ1bmN0aW9uKCl7dGhpcy4kY1swXS53aWR0aD10aGlzLiRjWzBdLndpZHRofSx0aGlzLl92YWxpZGF0ZT1mdW5jdGlvbih0KXt2YXIgZT1+figodDwwPy0uNTouNSkrdC90aGlzLm8uc3RlcCkqdGhpcy5vLnN0ZXA7cmV0dXJuIE1hdGgucm91bmQoMTAwKmUpLzEwMH0sdGhpcy5saXN0ZW49ZnVuY3Rpb24oKXt9LHRoaXMuZXh0ZW5kPWZ1bmN0aW9uKCl7fSx0aGlzLmluaXQ9ZnVuY3Rpb24oKXt9LHRoaXMuY2hhbmdlPWZ1bmN0aW9uKHQpe30sdGhpcy52YWw9ZnVuY3Rpb24odCl7fSx0aGlzLnh5MnZhbD1mdW5jdGlvbih0LGUpe30sdGhpcy5kcmF3PWZ1bmN0aW9uKCl7fSx0aGlzLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5fY2xlYXIoKX0sdGhpcy5oMnJnYmE9ZnVuY3Rpb24odCxlKXt2YXIgbjtyZXR1cm4gdD10LnN1YnN0cmluZygxLDcpLCJyZ2JhKCIrKG49W3BhcnNlSW50KHQuc3Vic3RyaW5nKDAsMiksMTYpLHBhcnNlSW50KHQuc3Vic3RyaW5nKDIsNCksMTYpLHBhcnNlSW50KHQuc3Vic3RyaW5nKDQsNiksMTYpXSlbMF0rIiwiK25bMV0rIiwiK25bMl0rIiwiK2UrIikifSx0aGlzLmNvcHk9ZnVuY3Rpb24odCxlKXtmb3IodmFyIG4gaW4gdCllW25dPXRbbl19fSxlLkRpYWw9ZnVuY3Rpb24oKXtlLm8uY2FsbCh0aGlzKSx0aGlzLnN0YXJ0QW5nbGU9bnVsbCx0aGlzLnh5PW51bGwsdGhpcy5yYWRpdXM9bnVsbCx0aGlzLmxpbmVXaWR0aD1udWxsLHRoaXMuY3Vyc29yRXh0PW51bGwsdGhpcy53Mj1udWxsLHRoaXMuUEkyPTIqTWF0aC5QSSx0aGlzLmV4dGVuZD1mdW5jdGlvbigpe3RoaXMubz10LmV4dGVuZCh7YmdDb2xvcjp0aGlzLiQuZGF0YSgiYmdjb2xvciIpfHwiI0VFRUVFRSIsYW5nbGVPZmZzZXQ6dGhpcy4kLmRhdGEoImFuZ2xlb2Zmc2V0Iil8fDAsYW5nbGVBcmM6dGhpcy4kLmRhdGEoImFuZ2xlYXJjIil8fDM2MCxpbmxpbmU6ITB9LHRoaXMubyl9LHRoaXMudmFsPWZ1bmN0aW9uKHQsZSl7aWYobnVsbD09dClyZXR1cm4gdGhpcy52O3Q9dGhpcy5vLnBhcnNlKHQpLCExIT09ZSYmdCE9dGhpcy52JiZ0aGlzLnJIJiYhMT09PXRoaXMuckgodCl8fCh0aGlzLmN2PXRoaXMuby5zdG9wcGVyP24oaSh0LHRoaXMuby5tYXgpLHRoaXMuby5taW4pOnQsdGhpcy52PXRoaXMuY3YsdGhpcy4kLnZhbCh0aGlzLm8uZm9ybWF0KHRoaXMudikpLHRoaXMuX2RyYXcoKSl9LHRoaXMueHkydmFsPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbztyZXR1cm4gcj1NYXRoLmF0YW4yKHQtKHRoaXMueCt0aGlzLncyKSwtKGUtdGhpcy55LXRoaXMudzIpKS10aGlzLmFuZ2xlT2Zmc2V0LHRoaXMuby5mbGlwJiYocj10aGlzLmFuZ2xlQXJjLXItdGhpcy5QSTIpLHRoaXMuYW5nbGVBcmMhPXRoaXMuUEkyJiZyPDAmJnI+LS41P3I9MDpyPDAmJihyKz10aGlzLlBJMiksbz1yKih0aGlzLm8ubWF4LXRoaXMuby5taW4pL3RoaXMuYW5nbGVBcmMrdGhpcy5vLm1pbix0aGlzLm8uc3RvcHBlciYmKG89bihpKG8sdGhpcy5vLm1heCksdGhpcy5vLm1pbikpLG99LHRoaXMubGlzdGVuPWZ1bmN0aW9uKCl7dmFyIGUscixvLGEscz10aGlzLGw9ZnVuY3Rpb24odCl7dC5wcmV2ZW50RGVmYXVsdCgpO3ZhciBvPXQub3JpZ2luYWxFdmVudCxhPW8uZGV0YWlsfHxvLndoZWVsRGVsdGFYLGw9by5kZXRhaWx8fG8ud2hlZWxEZWx0YVksYz1zLl92YWxpZGF0ZShzLm8ucGFyc2Uocy4kLnZhbCgpKSkrKGE+MHx8bD4wP3Muby5zdGVwOmE8MHx8bDwwPy1zLm8uc3RlcDowKTtjPW4oaShjLHMuby5tYXgpLHMuby5taW4pLHMudmFsKGMsITEpLHMuckgmJihjbGVhclRpbWVvdXQoZSksZT1zZXRUaW1lb3V0KChmdW5jdGlvbigpe3MuckgoYyksZT1udWxsfSksMTAwKSxyfHwocj1zZXRUaW1lb3V0KChmdW5jdGlvbigpe2UmJnMuckgoYykscj1udWxsfSksMjAwKSkpfSxjPTEsdT17Mzc6LXMuby5zdGVwLDM4OnMuby5zdGVwLDM5OnMuby5zdGVwLDQwOi1zLm8uc3RlcH07dGhpcy4kLmJpbmQoImtleWRvd24iLChmdW5jdGlvbihlKXt2YXIgcj1lLmtleUNvZGU7aWYocj49OTYmJnI8PTEwNSYmKHI9ZS5rZXlDb2RlPXItNDgpLG89cGFyc2VJbnQoU3RyaW5nLmZyb21DaGFyQ29kZShyKSksaXNOYU4obykmJigxMyE9PXImJjghPT1yJiY5IT09ciYmMTg5IT09ciYmKDE5MCE9PXJ8fHMuJC52YWwoKS5tYXRjaCgvXC4vKSkmJmUucHJldmVudERlZmF1bHQoKSx0LmluQXJyYXkocixbMzcsMzgsMzksNDBdKT4tMSkpe2UucHJldmVudERlZmF1bHQoKTt2YXIgbD1zLm8ucGFyc2Uocy4kLnZhbCgpKSt1W3JdKmM7cy5vLnN0b3BwZXImJihsPW4oaShsLHMuby5tYXgpLHMuby5taW4pKSxzLmNoYW5nZShzLl92YWxpZGF0ZShsKSkscy5fZHJhdygpLGE9d2luZG93LnNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7Yyo9Mn0pLDMwKX19KSkuYmluZCgia2V5dXAiLChmdW5jdGlvbih0KXtpc05hTihvKT9hJiYod2luZG93LmNsZWFyVGltZW91dChhKSxhPW51bGwsYz0xLHMudmFsKHMuJC52YWwoKSkpOnMuJC52YWwoKT5zLm8ubWF4JiZzLiQudmFsKHMuby5tYXgpfHxzLiQudmFsKCk8cy5vLm1pbiYmcy4kLnZhbChzLm8ubWluKX0pKSx0aGlzLiRjLmJpbmQoIm1vdXNld2hlZWwgRE9NTW91c2VTY3JvbGwiLGwpLHRoaXMuJC5iaW5kKCJtb3VzZXdoZWVsIERPTU1vdXNlU2Nyb2xsIixsKX0sdGhpcy5pbml0PWZ1bmN0aW9uKCl7KHRoaXMudjx0aGlzLm8ubWlufHx0aGlzLnY+dGhpcy5vLm1heCkmJih0aGlzLnY9dGhpcy5vLm1pbiksdGhpcy4kLnZhbCh0aGlzLnYpLHRoaXMudzI9dGhpcy53LzIsdGhpcy5jdXJzb3JFeHQ9dGhpcy5vLmN1cnNvci8xMDAsdGhpcy54eT10aGlzLncyKnRoaXMuc2NhbGUsdGhpcy5saW5lV2lkdGg9dGhpcy54eSp0aGlzLm8udGhpY2tuZXNzLHRoaXMubGluZUNhcD10aGlzLm8ubGluZUNhcCx0aGlzLnJhZGl1cz10aGlzLnh5LXRoaXMubGluZVdpZHRoLzIsdGhpcy5vLmFuZ2xlT2Zmc2V0JiYodGhpcy5vLmFuZ2xlT2Zmc2V0PWlzTmFOKHRoaXMuby5hbmdsZU9mZnNldCk/MDp0aGlzLm8uYW5nbGVPZmZzZXQpLHRoaXMuby5hbmdsZUFyYyYmKHRoaXMuby5hbmdsZUFyYz1pc05hTih0aGlzLm8uYW5nbGVBcmMpP3RoaXMuUEkyOnRoaXMuby5hbmdsZUFyYyksdGhpcy5hbmdsZU9mZnNldD10aGlzLm8uYW5nbGVPZmZzZXQqTWF0aC5QSS8xODAsdGhpcy5hbmdsZUFyYz10aGlzLm8uYW5nbGVBcmMqTWF0aC5QSS8xODAsdGhpcy5zdGFydEFuZ2xlPTEuNSpNYXRoLlBJK3RoaXMuYW5nbGVPZmZzZXQsdGhpcy5lbmRBbmdsZT0xLjUqTWF0aC5QSSt0aGlzLmFuZ2xlT2Zmc2V0K3RoaXMuYW5nbGVBcmM7dmFyIHQ9bihTdHJpbmcoTWF0aC5hYnModGhpcy5vLm1heCkpLmxlbmd0aCxTdHJpbmcoTWF0aC5hYnModGhpcy5vLm1pbikpLmxlbmd0aCwyKSsyO3RoaXMuby5kaXNwbGF5SW5wdXQmJnRoaXMuaS5jc3Moe3dpZHRoOih0aGlzLncvMis0Pj4wKSsicHgiLGhlaWdodDoodGhpcy53LzM+PjApKyJweCIscG9zaXRpb246ImFic29sdXRlIiwidmVydGljYWwtYWxpZ24iOiJtaWRkbGUiLCJtYXJnaW4tdG9wIjoodGhpcy53LzM+PjApKyJweCIsIm1hcmdpbi1sZWZ0IjoiLSIrKDMqdGhpcy53LzQrMj4+MCkrInB4Iixib3JkZXI6MCxiYWNrZ3JvdW5kOiJub25lIixmb250OnRoaXMuby5mb250V2VpZ2h0KyIgIisodGhpcy53L3Q+PjApKyJweCAiK3RoaXMuby5mb250LCJ0ZXh0LWFsaWduIjoiY2VudGVyIixjb2xvcjp0aGlzLm8uaW5wdXRDb2xvcnx8dGhpcy5vLmZnQ29sb3IscGFkZGluZzoiMHB4IiwiLXdlYmtpdC1hcHBlYXJhbmNlIjoibm9uZSJ9KXx8dGhpcy5pLmNzcyh7d2lkdGg6IjBweCIsdmlzaWJpbGl0eToiaGlkZGVuIn0pfSx0aGlzLmNoYW5nZT1mdW5jdGlvbih0KXt0aGlzLmN2PXQsdGhpcy4kLnZhbCh0aGlzLm8uZm9ybWF0KHQpKX0sdGhpcy5hbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4odC10aGlzLm8ubWluKSp0aGlzLmFuZ2xlQXJjLyh0aGlzLm8ubWF4LXRoaXMuby5taW4pfSx0aGlzLmFyYz1mdW5jdGlvbih0KXt2YXIgZSxuO3JldHVybiB0PXRoaXMuYW5nbGUodCksbj10aGlzLm8uZmxpcD8oZT10aGlzLmVuZEFuZ2xlKzFlLTUpLXQtMWUtNTooZT10aGlzLnN0YXJ0QW5nbGUtMWUtNSkrdCsxZS01LHRoaXMuby5jdXJzb3ImJihlPW4tdGhpcy5jdXJzb3JFeHQpJiYobis9dGhpcy5jdXJzb3JFeHQpLHtzOmUsZTpuLGQ6dGhpcy5vLmZsaXAmJiF0aGlzLm8uY3Vyc29yfX0sdGhpcy5kcmF3PWZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLmcsbj10aGlzLmFyYyh0aGlzLmN2KSxpPTE7ZS5saW5lV2lkdGg9dGhpcy5saW5lV2lkdGgsZS5saW5lQ2FwPXRoaXMubGluZUNhcCwibm9uZSIhPT10aGlzLm8uYmdDb2xvciYmKGUuYmVnaW5QYXRoKCksZS5zdHJva2VTdHlsZT10aGlzLm8uYmdDb2xvcixlLmFyYyh0aGlzLnh5LHRoaXMueHksdGhpcy5yYWRpdXMsdGhpcy5lbmRBbmdsZS0xZS01LHRoaXMuc3RhcnRBbmdsZSsxZS01LCEwKSxlLnN0cm9rZSgpKSx0aGlzLm8uZGlzcGxheVByZXZpb3VzJiYodD10aGlzLmFyYyh0aGlzLnYpLGUuYmVnaW5QYXRoKCksZS5zdHJva2VTdHlsZT10aGlzLnBDb2xvcixlLmFyYyh0aGlzLnh5LHRoaXMueHksdGhpcy5yYWRpdXMsdC5zLHQuZSx0LmQpLGUuc3Ryb2tlKCksaT10aGlzLmN2PT10aGlzLnYpLGUuYmVnaW5QYXRoKCksZS5zdHJva2VTdHlsZT1pP3RoaXMuby5mZ0NvbG9yOnRoaXMuZmdDb2xvcixlLmFyYyh0aGlzLnh5LHRoaXMueHksdGhpcy5yYWRpdXMsbi5zLG4uZSxuLmQpLGUuc3Ryb2tlKCl9LHRoaXMuY2FuY2VsPWZ1bmN0aW9uKCl7dGhpcy52YWwodGhpcy52KX19LHQuZm4uZGlhbD10LmZuLmtub2I9ZnVuY3Rpb24obil7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXt2YXIgaT1uZXcgZS5EaWFsO2kubz1uLGkuJD10KHRoaXMpLGkucnVuKCl9KSkucGFyZW50KCl9fSkpLGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbihuLGkscil7dmFyIG89bi5jaGlsZHJlbihpLmhlYWRlclRhZyksYT1uLmNoaWxkcmVuKGkuYm9keVRhZyk7by5sZW5ndGg+YS5sZW5ndGg/TygkLCJjb250ZW50cyIpOm8ubGVuZ3RoPGEubGVuZ3RoJiZPKCQsInRpdGxlcyIpO3ZhciBzPWkuc3RhcnRJbmRleDtpZihyLnN0ZXBDb3VudD1vLmxlbmd0aCxpLnNhdmVTdGF0ZSYmdC5jb29raWUpe3ZhciBsPXQuY29va2llKEwrZChuKSksdT1wYXJzZUludChsLDApOyFpc05hTih1KSYmdTxyLnN0ZXBDb3VudCYmKHM9dSl9ci5jdXJyZW50SW5kZXg9cyxvLmVhY2goKGZ1bmN0aW9uKGkpe3ZhciByPXQodGhpcyksbz1hLmVxKGkpLHM9by5kYXRhKCJtb2RlIiksbD1udWxsPT1zP3ouaHRtbDpoKHosL15ccyokLy50ZXN0KHMpfHxpc05hTihzKT9zOnBhcnNlSW50KHMsMCkpLHU9bD09PXouaHRtbHx8by5kYXRhKCJ1cmwiKT09PWU/IiI6by5kYXRhKCJ1cmwiKSxkPWwhPT16Lmh0bWwmJiIxIj09PW8uZGF0YSgibG9hZGVkIiksZj10LmV4dGVuZCh7fSxxLHt0aXRsZTpyLmh0bWwoKSxjb250ZW50Omw9PT16Lmh0bWw/by5odG1sKCk6IiIsY29udGVudFVybDp1LGNvbnRlbnRNb2RlOmwsY29udGVudExvYWRlZDpkfSk7IWZ1bmN0aW9uKHQsZSl7Yyh0KS5wdXNoKGUpfShuLGYpfSkpfWZ1bmN0aW9uIGkodCxlKXt2YXIgbj10LmZpbmQoIi5zdGVwcyBsaSIpLmVxKGUuY3VycmVudEluZGV4KTt0LnRyaWdnZXJIYW5kbGVyKCJmaW5pc2hpbmciLFtlLmN1cnJlbnRJbmRleF0pPyhuLmFkZENsYXNzKCJkb25lIikucmVtb3ZlQ2xhc3MoImVycm9yIiksdC50cmlnZ2VySGFuZGxlcigiZmluaXNoZWQiLFtlLmN1cnJlbnRJbmRleF0pKTpuLmFkZENsYXNzKCJlcnJvciIpfWZ1bmN0aW9uIHIodCl7dmFyIGU9dC5kYXRhKCJldmVudE5hbWVzcGFjZSIpO3JldHVybiBudWxsPT1lJiYoZT0iLiIrZCh0KSx0LmRhdGEoImV2ZW50TmFtZXNwYWNlIixlKSksZX1mdW5jdGlvbiBvKHQsZSl7dmFyIG49ZCh0KTtyZXR1cm4gdC5maW5kKCIjIituK04rZSl9ZnVuY3Rpb24gYSh0LGUpe3ZhciBuPWQodCk7cmV0dXJuIHQuZmluZCgiIyIrbitGK2UpfWZ1bmN0aW9uIHModCl7cmV0dXJuIHQuZGF0YSgib3B0aW9ucyIpfWZ1bmN0aW9uIGwodCl7cmV0dXJuIHQuZGF0YSgic3RhdGUiKX1mdW5jdGlvbiBjKHQpe3JldHVybiB0LmRhdGEoInN0ZXBzIil9ZnVuY3Rpb24gdSh0LGUpe3ZhciBuPWModCk7cmV0dXJuKDA+ZXx8ZT49bi5sZW5ndGgpJiZPKGopLG5bZV19ZnVuY3Rpb24gZCh0KXt2YXIgZT10LmRhdGEoInVpZCIpO3JldHVybiBudWxsPT1lJiYobnVsbD09KGU9dC5faWQoKSkmJihlPSJzdGVwcy11aWQtIi5jb25jYXQoUCksdC5faWQoZSkpLFArKyx0LmRhdGEoInVpZCIsZSkpLGV9ZnVuY3Rpb24gaCh0LG4pe2lmKEkoImVudW1UeXBlIix0KSxJKCJrZXlPclZhbHVlIixuKSwic3RyaW5nIj09dHlwZW9mIG4pe3ZhciBpPXRbbl07cmV0dXJuIGk9PT1lJiZPKCJUaGUgZW51bSBrZXkgJ3swfScgZG9lcyBub3QgZXhpc3QuIixuKSxpfWlmKCJudW1iZXIiPT10eXBlb2Ygbil7Zm9yKHZhciByIGluIHQpaWYodFtyXT09PW4pcmV0dXJuIG47TygiSW52YWxpZCBlbnVtIHZhbHVlICd7MH0nLiIsbil9ZWxzZSBPKCJJbnZhbGlkIGtleSBvciB2YWx1ZSB0eXBlLiIpfWZ1bmN0aW9uIGYodCxlLG4pe3JldHVybiBiKHQsZSxuLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuY3VycmVudEluZGV4K2V9KG4sMSkpfWZ1bmN0aW9uIHAodCxlLG4pe3JldHVybiBiKHQsZSxuLGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuY3VycmVudEluZGV4LWV9KG4sMSkpfWZ1bmN0aW9uIGcoZSl7dmFyIGk9dC5leHRlbmQoITAse30sVyxlKTtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpe3ZhciBlPXQodGhpcyksYT17Y3VycmVudEluZGV4Omkuc3RhcnRJbmRleCxjdXJyZW50U3RlcDpudWxsLHN0ZXBDb3VudDowLHRyYW5zaXRpb25FbGVtZW50Om51bGx9O2UuZGF0YSgib3B0aW9ucyIsaSksZS5kYXRhKCJzdGF0ZSIsYSksZS5kYXRhKCJzdGVwcyIsW10pLG4oZSxpLGEpLGZ1bmN0aW9uKGUsbixpKXt2YXIgcj0nPHswfSBjbGFzcz0iezF9Ij57Mn08L3swfT4nLG89aChILG4uc3RlcHNPcmllbnRhdGlvbik9PT1ILnZlcnRpY2FsPyIgdmVydGljYWwiOiIiLGE9dChyLmZvcm1hdChuLmNvbnRlbnRDb250YWluZXJUYWcsImNvbnRlbnQgIituLmNsZWFyRml4Q3NzQ2xhc3MsZS5odG1sKCkpKSxzPXQoci5mb3JtYXQobi5zdGVwc0NvbnRhaW5lclRhZywic3RlcHMgIituLmNsZWFyRml4Q3NzQ2xhc3MsJzx1bCByb2xlPSJ0YWJsaXN0Ij48L3VsPicpKSxsPWEuY2hpbGRyZW4obi5oZWFkZXJUYWcpLGM9YS5jaGlsZHJlbihuLmJvZHlUYWcpO2UuYXR0cigicm9sZSIsImFwcGxpY2F0aW9uIikuZW1wdHkoKS5hcHBlbmQocykuYXBwZW5kKGEpLmFkZENsYXNzKG4uY3NzQ2xhc3MrIiAiK24uY2xlYXJGaXhDc3NDbGFzcytvKSxjLmVhY2goKGZ1bmN0aW9uKG4pe2soZSxpLHQodGhpcyksbil9KSksbC5lYWNoKChmdW5jdGlvbihyKXtBKGUsbixpLHQodGhpcykscil9KSksXyhlLG4saSksZnVuY3Rpb24odCxlLG4pe2lmKGUuZW5hYmxlUGFnaW5hdGlvbil7dmFyIGk9JzxsaT48YSBocmVmPSIjezB9IiByb2xlPSJtZW51aXRlbSI+ezF9PC9hPjwvbGk+JyxyPSIiO2UuZm9yY2VNb3ZlRm9yd2FyZHx8KHIrPWkuZm9ybWF0KCJwcmV2aW91cyIsZS5sYWJlbHMucHJldmlvdXMpKSxyKz1pLmZvcm1hdCgibmV4dCIsZS5sYWJlbHMubmV4dCksZS5lbmFibGVGaW5pc2hCdXR0b24mJihyKz1pLmZvcm1hdCgiZmluaXNoIixlLmxhYmVscy5maW5pc2gpKSxlLmVuYWJsZUNhbmNlbEJ1dHRvbiYmKHIrPWkuZm9ybWF0KCJjYW5jZWwiLGUubGFiZWxzLmNhbmNlbCkpLHQuYXBwZW5kKCc8ezB9IGNsYXNzPSJhY3Rpb25zIHsxfSI+PHVsIHJvbGU9Im1lbnUiIGFyaWEtbGFiZWw9InsyfSI+ezN9PC91bD48L3swfT4nLmZvcm1hdChlLmFjdGlvbkNvbnRhaW5lclRhZyxlLmNsZWFyRml4Q3NzQ2xhc3MsZS5sYWJlbHMucGFnaW5hdGlvbixyKSkseCh0LGUsbikseSh0LGUsbil9fShlLG4saSl9KGUsaSxhKSxmdW5jdGlvbih0LGUpe3ZhciBuPXIodCk7dC5iaW5kKCJjYW5jZWxlZCIrbixlLm9uQ2FuY2VsZWQpLHQuYmluZCgiY29udGVudExvYWRlZCIrbixlLm9uQ29udGVudExvYWRlZCksdC5iaW5kKCJmaW5pc2hpbmciK24sZS5vbkZpbmlzaGluZyksdC5iaW5kKCJmaW5pc2hlZCIrbixlLm9uRmluaXNoZWQpLHQuYmluZCgiaW5pdCIrbixlLm9uSW5pdCksdC5iaW5kKCJzdGVwQ2hhbmdpbmciK24sZS5vblN0ZXBDaGFuZ2luZyksdC5iaW5kKCJzdGVwQ2hhbmdlZCIrbixlLm9uU3RlcENoYW5nZWQpLGUuZW5hYmxlS2V5TmF2aWdhdGlvbiYmdC5iaW5kKCJrZXl1cCIrbix2KSx0LmZpbmQoIi5hY3Rpb25zIGEiKS5iaW5kKCJjbGljayIrbix3KX0oZSxpKSxpLmF1dG9Gb2N1cyYmMD09PVAmJm8oZSxpLnN0YXJ0SW5kZXgpLmZvY3VzKCksZS50cmlnZ2VySGFuZGxlcigiaW5pdCIsW2kuc3RhcnRJbmRleF0pfSkpfWZ1bmN0aW9uIG0oZSxuLGkscixvKXsoMD5yfHxyPmkuc3RlcENvdW50KSYmTyhqKSxmdW5jdGlvbih0LGUsbil7Yyh0KS5zcGxpY2UoZSwwLG4pfShlLHIsbz10LmV4dGVuZCh7fSxxLG8pKSxpLmN1cnJlbnRJbmRleCE9PWkuc3RlcENvdW50JiZpLmN1cnJlbnRJbmRleD49ciYmKGkuY3VycmVudEluZGV4KyssRChlLG4saSkpLGkuc3RlcENvdW50Kys7dmFyIHM9ZS5maW5kKCIuY29udGVudCIpLGw9dCgiPHswfT57MX08L3swfT4iLmZvcm1hdChuLmhlYWRlclRhZyxvLnRpdGxlKSksdT10KCI8ezB9PjwvezB9PiIuZm9ybWF0KG4uYm9keVRhZykpO3JldHVybihudWxsPT1vLmNvbnRlbnRNb2RlfHxvLmNvbnRlbnRNb2RlPT09ei5odG1sKSYmdS5odG1sKG8uY29udGVudCksMD09PXI/cy5wcmVwZW5kKHUpLnByZXBlbmQobCk6YShlLHItMSkuYWZ0ZXIodSkuYWZ0ZXIobCksayhlLGksdSxyKSxBKGUsbixpLGwsciksUyhlLG4saSxyKSxyPT09aS5jdXJyZW50SW5kZXgmJl8oZSxuLGkpLHgoZSxuLGkpLGV9ZnVuY3Rpb24gdihlKXt2YXIgbj10KHRoaXMpLGk9cyhuKSxyPWwobik7aWYoaS5zdXBwcmVzc1BhZ2luYXRpb25PbkZvY3VzJiZuLmZpbmQoIjpmb2N1cyIpLmlzKCI6aW5wdXQiKSlyZXR1cm4gZS5wcmV2ZW50RGVmYXVsdCgpLCExO3ZhciBvPTM3LGE9Mzk7ZS5rZXlDb2RlPT09bz8oZS5wcmV2ZW50RGVmYXVsdCgpLHAobixpLHIpKTplLmtleUNvZGU9PT1hJiYoZS5wcmV2ZW50RGVmYXVsdCgpLGYobixpLHIpKX1mdW5jdGlvbiB5KGUsbixpKXtpZihpLnN0ZXBDb3VudD4wKXt2YXIgcj1pLmN1cnJlbnRJbmRleCxvPXUoZSxyKTtpZighbi5lbmFibGVDb250ZW50Q2FjaGV8fCFvLmNvbnRlbnRMb2FkZWQpc3dpdGNoKGgoeixvLmNvbnRlbnRNb2RlKSl7Y2FzZSB6LmlmcmFtZTplLmZpbmQoIi5jb250ZW50ID4gLmJvZHkiKS5lcShpLmN1cnJlbnRJbmRleCkuZW1wdHkoKS5odG1sKCc8aWZyYW1lIHNyYz0iJytvLmNvbnRlbnRVcmwrJyIgZnJhbWVib3JkZXI9IjAiIHNjcm9sbGluZz0ibm8iIC8+JykuZGF0YSgibG9hZGVkIiwiMSIpO2JyZWFrO2Nhc2Ugei5hc3luYzp2YXIgcz1hKGUscikuX2FyaWEoImJ1c3kiLCJ0cnVlIikuZW1wdHkoKS5hcHBlbmQoVChuLmxvYWRpbmdUZW1wbGF0ZSx7dGV4dDpuLmxhYmVscy5sb2FkaW5nfSkpO3QuYWpheCh7dXJsOm8uY29udGVudFVybCxjYWNoZTohMX0pLmRvbmUoKGZ1bmN0aW9uKHQpe3MuZW1wdHkoKS5odG1sKHQpLl9hcmlhKCJidXN5IiwiZmFsc2UiKS5kYXRhKCJsb2FkZWQiLCIxIiksZS50cmlnZ2VySGFuZGxlcigiY29udGVudExvYWRlZCIsW3JdKX0pKX19fWZ1bmN0aW9uIGIodCxlLG4saSl7dmFyIHI9bi5jdXJyZW50SW5kZXg7aWYoaT49MCYmaTxuLnN0ZXBDb3VudCYmIShlLmZvcmNlTW92ZUZvcndhcmQmJmk8bi5jdXJyZW50SW5kZXgpKXt2YXIgYT1vKHQsaSkscz1hLnBhcmVudCgpLGw9cy5oYXNDbGFzcygiZGlzYWJsZWQiKTtyZXR1cm4gcy5fZW5hYmxlQXJpYSgpLGEuY2xpY2soKSxyIT09bi5jdXJyZW50SW5kZXh8fCFsfHwocy5fZW5hYmxlQXJpYSghMSksITEpfXJldHVybiExfWZ1bmN0aW9uIHcoZSl7ZS5wcmV2ZW50RGVmYXVsdCgpO3ZhciBuPXQodGhpcykscj1uLnBhcmVudCgpLnBhcmVudCgpLnBhcmVudCgpLnBhcmVudCgpLG89cyhyKSxhPWwociksYz1uLmF0dHIoImhyZWYiKTtzd2l0Y2goYy5zdWJzdHJpbmcoYy5sYXN0SW5kZXhPZigiIyIpKzEpKXtjYXNlImNhbmNlbCI6IWZ1bmN0aW9uKHQpe3QudHJpZ2dlckhhbmRsZXIoImNhbmNlbGVkIil9KHIpO2JyZWFrO2Nhc2UiZmluaXNoIjppKHIsYSk7YnJlYWs7Y2FzZSJuZXh0IjpmKHIsbyxhKTticmVhaztjYXNlInByZXZpb3VzIjpwKHIsbyxhKX19ZnVuY3Rpb24geCh0LGUsbil7aWYoZS5lbmFibGVQYWdpbmF0aW9uKXt2YXIgaT10LmZpbmQoIi5hY3Rpb25zIGFbaHJlZiQ9JyNmaW5pc2gnXSIpLnBhcmVudCgpLHI9dC5maW5kKCIuYWN0aW9ucyBhW2hyZWYkPScjbmV4dCddIikucGFyZW50KCk7aWYoIWUuZm9yY2VNb3ZlRm9yd2FyZCl0LmZpbmQoIi5hY3Rpb25zIGFbaHJlZiQ9JyNwcmV2aW91cyddIikucGFyZW50KCkuX2VuYWJsZUFyaWEobi5jdXJyZW50SW5kZXg+MCk7ZS5lbmFibGVGaW5pc2hCdXR0b24mJmUuc2hvd0ZpbmlzaEJ1dHRvbkFsd2F5cz8oaS5fZW5hYmxlQXJpYShuLnN0ZXBDb3VudD4wKSxyLl9lbmFibGVBcmlhKG4uc3RlcENvdW50PjEmJm4uc3RlcENvdW50Pm4uY3VycmVudEluZGV4KzEpKTooaS5fc2hvd0FyaWEoZS5lbmFibGVGaW5pc2hCdXR0b24mJm4uc3RlcENvdW50PT09bi5jdXJyZW50SW5kZXgrMSksci5fc2hvd0FyaWEoMD09PW4uc3RlcENvdW50fHxuLnN0ZXBDb3VudD5uLmN1cnJlbnRJbmRleCsxKS5fZW5hYmxlQXJpYShuLnN0ZXBDb3VudD5uLmN1cnJlbnRJbmRleCsxfHwhZS5lbmFibGVGaW5pc2hCdXR0b24pKX19ZnVuY3Rpb24gXyhlLG4saSxyKXt2YXIgYT1vKGUsaS5jdXJyZW50SW5kZXgpLHM9dCgnPHNwYW4gY2xhc3M9ImN1cnJlbnQtaW5mbyBhdWRpYmxlIj4nK24ubGFiZWxzLmN1cnJlbnQrIiA8L3NwYW4+IiksbD1lLmZpbmQoIi5jb250ZW50ID4gLnRpdGxlIik7aWYobnVsbCE9cil7dmFyIGM9byhlLHIpO2MucGFyZW50KCkuYWRkQ2xhc3MoImRvbmUiKS5yZW1vdmVDbGFzcygiZXJyb3IiKS5fc2VsZWN0QXJpYSghMSksbC5lcShyKS5yZW1vdmVDbGFzcygiY3VycmVudCIpLm5leHQoIi5ib2R5IikucmVtb3ZlQ2xhc3MoImN1cnJlbnQiKSxzPWMuZmluZCgiLmN1cnJlbnQtaW5mbyIpLGEuZm9jdXMoKX1hLnByZXBlbmQocykucGFyZW50KCkuX3NlbGVjdEFyaWEoKS5yZW1vdmVDbGFzcygiZG9uZSIpLl9lbmFibGVBcmlhKCksbC5lcShpLmN1cnJlbnRJbmRleCkuYWRkQ2xhc3MoImN1cnJlbnQiKS5uZXh0KCIuYm9keSIpLmFkZENsYXNzKCJjdXJyZW50Iil9ZnVuY3Rpb24gUyh0LGUsbixpKXtmb3IodmFyIHI9ZCh0KSxvPWk7bzxuLnN0ZXBDb3VudDtvKyspe3ZhciBhPXIrTitvLHM9citGK28sbD1yK1IrbyxjPXQuZmluZCgiLnRpdGxlIikuZXEobykuX2lkKGwpO3QuZmluZCgiLnN0ZXBzIGEiKS5lcShvKS5faWQoYSkuX2FyaWEoImNvbnRyb2xzIixzKS5hdHRyKCJocmVmIiwiIyIrbCkuaHRtbChUKGUudGl0bGVUZW1wbGF0ZSx7aW5kZXg6bysxLHRpdGxlOmMuaHRtbCgpfSkpLHQuZmluZCgiLmJvZHkiKS5lcShvKS5faWQocykuX2FyaWEoImxhYmVsbGVkYnkiLGwpfX1mdW5jdGlvbiBDKHQsZSxuLGkpe3JldHVybiEoMD5pfHxpPj1uLnN0ZXBDb3VudHx8bi5jdXJyZW50SW5kZXg9PT1pKSYmKGZ1bmN0aW9uKHQsZSl7Yyh0KS5zcGxpY2UoZSwxKX0odCxpKSxuLmN1cnJlbnRJbmRleD5pJiYobi5jdXJyZW50SW5kZXgtLSxEKHQsZSxuKSksbi5zdGVwQ291bnQtLSxmdW5jdGlvbih0LGUpe3ZhciBuPWQodCk7cmV0dXJuIHQuZmluZCgiIyIrbitSK2UpfSh0LGkpLnJlbW92ZSgpLGEodCxpKS5yZW1vdmUoKSxvKHQsaSkucGFyZW50KCkucmVtb3ZlKCksMD09PWkmJnQuZmluZCgiLnN0ZXBzIGxpIikuZmlyc3QoKS5hZGRDbGFzcygiZmlyc3QiKSxpPT09bi5zdGVwQ291bnQmJnQuZmluZCgiLnN0ZXBzIGxpIikuZXEoaSkuYWRkQ2xhc3MoImxhc3QiKSxTKHQsZSxuLGkpLHgodCxlLG4pLCEwKX1mdW5jdGlvbiBrKHQsZSxuLGkpe3ZhciByPWQodCksbz1yK0YraSxhPXIrUitpO24uX2lkKG8pLmF0dHIoInJvbGUiLCJ0YWJwYW5lbCIpLl9hcmlhKCJsYWJlbGxlZGJ5IixhKS5hZGRDbGFzcygiYm9keSIpLl9zaG93QXJpYShlLmN1cnJlbnRJbmRleD09PWkpfWZ1bmN0aW9uIFQodCxuKXtmb3IodmFyIGk9dC5tYXRjaCgvIyhbYS16XSopIy9naSkscj0wO3I8aS5sZW5ndGg7cisrKXt2YXIgbz1pW3JdLGE9by5zdWJzdHJpbmcoMSxvLmxlbmd0aC0xKTtuW2FdPT09ZSYmTygiVGhlIGtleSAnezB9JyBkb2VzIG5vdCBleGlzdCBpbiB0aGUgc3Vic3RpdHV0ZSBjb2xsZWN0aW9uISIsYSksdD10LnJlcGxhY2UobyxuW2FdKX1yZXR1cm4gdH1mdW5jdGlvbiBBKGUsbixpLG8sYSl7dmFyIHM9ZChlKSxsPXMrTithLGM9cytGK2EsdT1zK1IrYSxoPWUuZmluZCgiLnN0ZXBzID4gdWwiKSxmPVQobi50aXRsZVRlbXBsYXRlLHtpbmRleDphKzEsdGl0bGU6by5odG1sKCl9KSxwPXQoJzxsaSByb2xlPSJ0YWIiPjxhIGlkPSInK2wrJyIgaHJlZj0iIycrdSsnIiBhcmlhLWNvbnRyb2xzPSInK2MrJyI+JytmKyI8L2E+PC9saT4iKTtwLl9lbmFibGVBcmlhKG4uZW5hYmxlQWxsU3RlcHN8fGkuY3VycmVudEluZGV4PmEpLGkuY3VycmVudEluZGV4PmEmJnAuYWRkQ2xhc3MoImRvbmUiKSxvLl9pZCh1KS5hdHRyKCJ0YWJpbmRleCIsIi0xIikuYWRkQ2xhc3MoInRpdGxlIiksMD09PWE/aC5wcmVwZW5kKHApOmguZmluZCgibGkiKS5lcShhLTEpLmFmdGVyKHApLDA9PT1hJiZoLmZpbmQoImxpIikucmVtb3ZlQ2xhc3MoImZpcnN0IikuZXEoYSkuYWRkQ2xhc3MoImZpcnN0IiksYT09PWkuc3RlcENvdW50LTEmJmguZmluZCgibGkiKS5yZW1vdmVDbGFzcygibGFzdCIpLmVxKGEpLmFkZENsYXNzKCJsYXN0IikscC5jaGlsZHJlbigiYSIpLmJpbmQoImNsaWNrIityKGUpLE0pfWZ1bmN0aW9uIEQoZSxuLGkpe24uc2F2ZVN0YXRlJiZ0LmNvb2tpZSYmdC5jb29raWUoTCtkKGUpLGkuY3VycmVudEluZGV4KX1mdW5jdGlvbiBFKGUsbixpLHIsbyxhKXt2YXIgcz1lLmZpbmQoIi5jb250ZW50ID4gLmJvZHkiKSxjPWgoQixuLnRyYW5zaXRpb25FZmZlY3QpLHU9bi50cmFuc2l0aW9uRWZmZWN0U3BlZWQsZD1zLmVxKHIpLGY9cy5lcShvKTtzd2l0Y2goYyl7Y2FzZSBCLmZhZGU6Y2FzZSBCLnNsaWRlOnZhciBwPWM9PT1CLmZhZGU/ImZhZGVPdXQiOiJzbGlkZVVwIixnPWM9PT1CLmZhZGU/ImZhZGVJbiI6InNsaWRlRG93biI7aS50cmFuc2l0aW9uRWxlbWVudD1kLGZbcF0odSwoZnVuY3Rpb24oKXt2YXIgZT1sKHQodGhpcykuX3Nob3dBcmlhKCExKS5wYXJlbnQoKS5wYXJlbnQoKSk7ZS50cmFuc2l0aW9uRWxlbWVudCYmKGUudHJhbnNpdGlvbkVsZW1lbnRbZ10odSwoZnVuY3Rpb24oKXt0KHRoaXMpLl9zaG93QXJpYSgpfSkpLnByb21pc2UoKS5kb25lKGEpLGUudHJhbnNpdGlvbkVsZW1lbnQ9bnVsbCl9KSk7YnJlYWs7Y2FzZSBCLnNsaWRlTGVmdDp2YXIgbT1mLm91dGVyV2lkdGgoITApLHY9cj5vPy1tOm0seT1yPm8/bTotbTt0LndoZW4oZi5hbmltYXRlKHtsZWZ0OnZ9LHUsKGZ1bmN0aW9uKCl7dCh0aGlzKS5fc2hvd0FyaWEoITEpfSkpLGQuY3NzKCJsZWZ0Iix5KyJweCIpLl9zaG93QXJpYSgpLmFuaW1hdGUoe2xlZnQ6MH0sdSkpLmRvbmUoYSk7YnJlYWs7ZGVmYXVsdDp0LndoZW4oZi5fc2hvd0FyaWEoITEpLGQuX3Nob3dBcmlhKCkpLmRvbmUoYSl9fWZ1bmN0aW9uIE0oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpO3ZhciBuPXQodGhpcyksaT1uLnBhcmVudCgpLnBhcmVudCgpLnBhcmVudCgpLnBhcmVudCgpLHI9cyhpKSxhPWwoaSksYz1hLmN1cnJlbnRJbmRleDtpZihuLnBhcmVudCgpLmlzKCI6bm90KC5kaXNhYmxlZCk6bm90KC5jdXJyZW50KSIpKXt2YXIgdT1uLmF0dHIoImhyZWYiKTshZnVuY3Rpb24odCxlLG4saSl7aWYoKDA+aXx8aT49bi5zdGVwQ291bnQpJiZPKGopLCEoZS5mb3JjZU1vdmVGb3J3YXJkJiZpPG4uY3VycmVudEluZGV4KSl7dmFyIHI9bi5jdXJyZW50SW5kZXg7dC50cmlnZ2VySGFuZGxlcigic3RlcENoYW5naW5nIixbbi5jdXJyZW50SW5kZXgsaV0pPyhuLmN1cnJlbnRJbmRleD1pLEQodCxlLG4pLF8odCxlLG4scikseCh0LGUsbikseSh0LGUsbiksRSh0LGUsbixpLHIsKGZ1bmN0aW9uKCl7dC50cmlnZ2VySGFuZGxlcigic3RlcENoYW5nZWQiLFtpLHJdKX0pKSk6dC5maW5kKCIuc3RlcHMgbGkiKS5lcShyKS5hZGRDbGFzcygiZXJyb3IiKX19KGkscixhLHBhcnNlSW50KHUuc3Vic3RyaW5nKHUubGFzdEluZGV4T2YoIi0iKSsxKSwwKSl9cmV0dXJuIGM9PT1hLmN1cnJlbnRJbmRleD8obyhpLGMpLmZvY3VzKCksITEpOnZvaWQgMH1mdW5jdGlvbiBPKHQpe3Rocm93IGFyZ3VtZW50cy5sZW5ndGg+MSYmKHQ9dC5mb3JtYXQoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKSksbmV3IEVycm9yKHQpfWZ1bmN0aW9uIEkodCxlKXtudWxsPT1lJiZPKCJUaGUgYXJndW1lbnQgJ3swfScgaXMgbnVsbCBvciB1bmRlZmluZWQuIix0KX10LmZuLmV4dGVuZCh7X2FyaWE6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5hdHRyKCJhcmlhLSIrdCxlKX0sX3JlbW92ZUFyaWE6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucmVtb3ZlQXR0cigiYXJpYS0iK3QpfSxfZW5hYmxlQXJpYTpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dHx8dD90aGlzLnJlbW92ZUNsYXNzKCJkaXNhYmxlZCIpLl9hcmlhKCJkaXNhYmxlZCIsImZhbHNlIik6dGhpcy5hZGRDbGFzcygiZGlzYWJsZWQiKS5fYXJpYSgiZGlzYWJsZWQiLCJ0cnVlIil9LF9zaG93QXJpYTpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dHx8dD90aGlzLnNob3coKS5fYXJpYSgiaGlkZGVuIiwiZmFsc2UiKTp0aGlzLmhpZGUoKS5fYXJpYSgiaGlkZGVuIiwidHJ1ZSIpfSxfc2VsZWN0QXJpYTpmdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dHx8dD90aGlzLmFkZENsYXNzKCJjdXJyZW50IikuX2FyaWEoInNlbGVjdGVkIiwidHJ1ZSIpOnRoaXMucmVtb3ZlQ2xhc3MoImN1cnJlbnQiKS5fYXJpYSgic2VsZWN0ZWQiLCJmYWxzZSIpfSxfaWQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQ/dGhpcy5hdHRyKCJpZCIsdCk6dGhpcy5hdHRyKCJpZCIpfX0pLFN0cmluZy5wcm90b3R5cGUuZm9ybWF0fHwoU3RyaW5nLnByb3RvdHlwZS5mb3JtYXQ9ZnVuY3Rpb24oKXtmb3IodmFyIGU9MT09PWFyZ3VtZW50cy5sZW5ndGgmJnQuaXNBcnJheShhcmd1bWVudHNbMF0pP2FyZ3VtZW50c1swXTphcmd1bWVudHMsbj10aGlzLGk9MDtpPGUubGVuZ3RoO2krKyl7dmFyIHI9bmV3IFJlZ0V4cCgiXFx7IitpKyJcXH0iLCJnbSIpO249bi5yZXBsYWNlKHIsZVtpXSl9cmV0dXJuIG59KTt2YXIgUD0wLEw9ImpRdTNyeV81dGVwc19TdEB0ZV8iLE49Ii10LSIsRj0iLXAtIixSPSItaC0iLGo9IkluZGV4IG91dCBvZiByYW5nZS4iLCQ9Ik9uZSBvciBtb3JlIGNvcnJlc3BvbmRpbmcgc3RlcCB7MH0gYXJlIG1pc3NpbmcuIjt0LmZuLnN0ZXBzPWZ1bmN0aW9uKGUpe3JldHVybiB0LmZuLnN0ZXBzW2VdP3QuZm4uc3RlcHNbZV0uYXBwbHkodGhpcyxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSkpOiJvYmplY3QiIT10eXBlb2YgZSYmZT92b2lkIHQuZXJyb3IoIk1ldGhvZCAiK2UrIiBkb2VzIG5vdCBleGlzdCBvbiBqUXVlcnkuc3RlcHMiKTpnLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sdC5mbi5zdGVwcy5hZGQ9ZnVuY3Rpb24odCl7dmFyIGU9bCh0aGlzKTtyZXR1cm4gbSh0aGlzLHModGhpcyksZSxlLnN0ZXBDb3VudCx0KX0sdC5mbi5zdGVwcy5kZXN0cm95PWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGUsbil7dmFyIGk9cihlKTtlLnVuYmluZChpKS5yZW1vdmVEYXRhKCJ1aWQiKS5yZW1vdmVEYXRhKCJvcHRpb25zIikucmVtb3ZlRGF0YSgic3RhdGUiKS5yZW1vdmVEYXRhKCJzdGVwcyIpLnJlbW92ZURhdGEoImV2ZW50TmFtZXNwYWNlIikuZmluZCgiLmFjdGlvbnMgYSIpLnVuYmluZChpKSxlLnJlbW92ZUNsYXNzKG4uY2xlYXJGaXhDc3NDbGFzcysiIHZlcnRpY2FsIik7dmFyIG89ZS5maW5kKCIuY29udGVudCA+ICoiKTtvLnJlbW92ZURhdGEoImxvYWRlZCIpLnJlbW92ZURhdGEoIm1vZGUiKS5yZW1vdmVEYXRhKCJ1cmwiKSxvLnJlbW92ZUF0dHIoImlkIikucmVtb3ZlQXR0cigicm9sZSIpLnJlbW92ZUF0dHIoInRhYmluZGV4IikucmVtb3ZlQXR0cigiY2xhc3MiKS5yZW1vdmVBdHRyKCJzdHlsZSIpLl9yZW1vdmVBcmlhKCJsYWJlbGxlZGJ5IikuX3JlbW92ZUFyaWEoImhpZGRlbiIpLGUuZmluZCgiLmNvbnRlbnQgPiBbZGF0YS1tb2RlPSdhc3luYyddLC5jb250ZW50ID4gW2RhdGEtbW9kZT0naWZyYW1lJ10iKS5lbXB0eSgpO3ZhciBhPXQoJzx7MH0gY2xhc3M9InsxfSI+PC97MH0+Jy5mb3JtYXQoZS5nZXQoMCkudGFnTmFtZSxlLmF0dHIoImNsYXNzIikpKSxzPWUuX2lkKCk7cmV0dXJuIG51bGwhPXMmJiIiIT09cyYmYS5faWQocyksYS5odG1sKGUuZmluZCgiLmNvbnRlbnQiKS5odG1sKCkpLGUuYWZ0ZXIoYSksZS5yZW1vdmUoKSxhfSh0aGlzLHModGhpcykpfSx0LmZuLnN0ZXBzLmZpbmlzaD1mdW5jdGlvbigpe2kodGhpcyxsKHRoaXMpKX0sdC5mbi5zdGVwcy5nZXRDdXJyZW50SW5kZXg9ZnVuY3Rpb24oKXtyZXR1cm4gbCh0aGlzKS5jdXJyZW50SW5kZXh9LHQuZm4uc3RlcHMuZ2V0Q3VycmVudFN0ZXA9ZnVuY3Rpb24oKXtyZXR1cm4gdSh0aGlzLGwodGhpcykuY3VycmVudEluZGV4KX0sdC5mbi5zdGVwcy5nZXRTdGVwPWZ1bmN0aW9uKHQpe3JldHVybiB1KHRoaXMsdCl9LHQuZm4uc3RlcHMuaW5zZXJ0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG0odGhpcyxzKHRoaXMpLGwodGhpcyksdCxlKX0sdC5mbi5zdGVwcy5uZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIGYodGhpcyxzKHRoaXMpLGwodGhpcykpfSx0LmZuLnN0ZXBzLnByZXZpb3VzPWZ1bmN0aW9uKCl7cmV0dXJuIHAodGhpcyxzKHRoaXMpLGwodGhpcykpfSx0LmZuLnN0ZXBzLnJlbW92ZT1mdW5jdGlvbih0KXtyZXR1cm4gQyh0aGlzLHModGhpcyksbCh0aGlzKSx0KX0sdC5mbi5zdGVwcy5zZXRTdGVwPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJOb3QgeWV0IGltcGxlbWVudGVkISIpfSx0LmZuLnN0ZXBzLnNraXA9ZnVuY3Rpb24oKXt0aHJvdyBuZXcgRXJyb3IoIk5vdCB5ZXQgaW1wbGVtZW50ZWQhIil9O3ZhciB6PXQuZm4uc3RlcHMuY29udGVudE1vZGU9e2h0bWw6MCxpZnJhbWU6MSxhc3luYzoyfSxIPXQuZm4uc3RlcHMuc3RlcHNPcmllbnRhdGlvbj17aG9yaXpvbnRhbDowLHZlcnRpY2FsOjF9LEI9dC5mbi5zdGVwcy50cmFuc2l0aW9uRWZmZWN0PXtub25lOjAsZmFkZToxLHNsaWRlOjIsc2xpZGVMZWZ0OjN9LHE9dC5mbi5zdGVwcy5zdGVwTW9kZWw9e3RpdGxlOiIiLGNvbnRlbnQ6IiIsY29udGVudFVybDoiIixjb250ZW50TW9kZTp6Lmh0bWwsY29udGVudExvYWRlZDohMX0sVz10LmZuLnN0ZXBzLmRlZmF1bHRzPXtoZWFkZXJUYWc6ImgxIixib2R5VGFnOiJkaXYiLGNvbnRlbnRDb250YWluZXJUYWc6ImRpdiIsYWN0aW9uQ29udGFpbmVyVGFnOiJkaXYiLHN0ZXBzQ29udGFpbmVyVGFnOiJkaXYiLGNzc0NsYXNzOiJ3aXphcmQiLGNsZWFyRml4Q3NzQ2xhc3M6ImNsZWFyZml4IixzdGVwc09yaWVudGF0aW9uOkguaG9yaXpvbnRhbCx0aXRsZVRlbXBsYXRlOic8c3BhbiBjbGFzcz0ibnVtYmVyIj4jaW5kZXgjLjwvc3Bhbj4gI3RpdGxlIycsbG9hZGluZ1RlbXBsYXRlOic8c3BhbiBjbGFzcz0ic3Bpbm5lciI+PC9zcGFuPiAjdGV4dCMnLGF1dG9Gb2N1czohMSxlbmFibGVBbGxTdGVwczohMSxlbmFibGVLZXlOYXZpZ2F0aW9uOiEwLGVuYWJsZVBhZ2luYXRpb246ITAsc3VwcHJlc3NQYWdpbmF0aW9uT25Gb2N1czohMCxlbmFibGVDb250ZW50Q2FjaGU6ITAsZW5hYmxlQ2FuY2VsQnV0dG9uOiExLGVuYWJsZUZpbmlzaEJ1dHRvbjohMCxwcmVsb2FkQ29udGVudDohMSxzaG93RmluaXNoQnV0dG9uQWx3YXlzOiExLGZvcmNlTW92ZUZvcndhcmQ6ITEsc2F2ZVN0YXRlOiExLHN0YXJ0SW5kZXg6MCx0cmFuc2l0aW9uRWZmZWN0OkIubm9uZSx0cmFuc2l0aW9uRWZmZWN0U3BlZWQ6MjAwLG9uU3RlcENoYW5naW5nOmZ1bmN0aW9uKCl7cmV0dXJuITB9LG9uU3RlcENoYW5nZWQ6ZnVuY3Rpb24oKXt9LG9uQ2FuY2VsZWQ6ZnVuY3Rpb24oKXt9LG9uRmluaXNoaW5nOmZ1bmN0aW9uKCl7cmV0dXJuITB9LG9uRmluaXNoZWQ6ZnVuY3Rpb24oKXt9LG9uQ29udGVudExvYWRlZDpmdW5jdGlvbigpe30sb25Jbml0OmZ1bmN0aW9uKCl7fSxsYWJlbHM6e2NhbmNlbDoiQ2FuY2VsIixjdXJyZW50OiJjdXJyZW50IHN0ZXA6IixwYWdpbmF0aW9uOiJQYWdpbmF0aW9uIixmaW5pc2g6IkZpbmlzaCIsbmV4dDoiTmV4dCIscHJldmlvdXM6IlByZXZpb3VzIixsb2FkaW5nOiJMb2FkaW5nIC4uLiJ9fX0oalF1ZXJ5KTt2YXIgcT1udWxsO3dpbmRvdy5QUl9TSE9VTERfVVNFX0NPTlRJTlVBVElPTj0hMCxmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLG4saSl7ZSYmKG4odD17YTplLGQ6dH0pLGkucHVzaC5hcHBseShpLHQuZSkpfWZ1bmN0aW9uIGUoZSxuKXt2YXIgaSxyPXt9OyFmdW5jdGlvbigpe2Zvcih2YXIgdD1lLmNvbmNhdChuKSxvPVtdLGE9e30scz0wLGw9dC5sZW5ndGg7czxsOysrcyl7dmFyIGM9dFtzXSx1PWNbM107aWYodSlmb3IodmFyIGQ9dS5sZW5ndGg7LS1kPj0wOylyW3UuY2hhckF0KGQpXT1jO3U9IiIrKGM9Y1sxXSksYS5oYXNPd25Qcm9wZXJ0eSh1KXx8KG8ucHVzaChjKSxhW3VdPXEpfW8ucHVzaCgvW1xTXHNdLyksaT1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKHQpe3ZhciBlPXQuY2hhckNvZGVBdCgwKTtpZig5MiE9PWUpcmV0dXJuIGU7dmFyIG49dC5jaGFyQXQoMSk7cmV0dXJuKGU9ZFtuXSk/ZToiMCI8PW4mJm48PSI3Ij9wYXJzZUludCh0LnN1YnN0cmluZygxKSw4KToidSI9PT1ufHwieCI9PT1uP3BhcnNlSW50KHQuc3Vic3RyaW5nKDIpLDE2KTp0LmNoYXJDb2RlQXQoMSl9ZnVuY3Rpb24gbih0KXtyZXR1cm4gdDwzMj8odDwxNj8iXFx4MCI6IlxceCIpK3QudG9TdHJpbmcoMTYpOigiXFwiIT09KHQ9U3RyaW5nLmZyb21DaGFyQ29kZSh0KSkmJiItIiE9PXQmJiJbIiE9PXQmJiJdIiE9PXR8fCh0PSJcXCIrdCksdCl9ZnVuY3Rpb24gaSh0KXtmb3IodmFyIGk9dC5zdWJzdHJpbmcoMSx0Lmxlbmd0aC0xKS5tYXRjaCgvXFx1W1xkQS1GYS1mXXs0fXxcXHhbXGRBLUZhLWZdezJ9fFxcWzAtM11bMC03XXswLDJ9fFxcWzAtN117MSwyfXxcXFtcU1xzXXxbXlxcXS9nKSxyPSh0PVtdLFtdKSxvPSJeIj09PWlbMF0sYT1vPzE6MCxzPWkubGVuZ3RoO2E8czsrK2Epe3ZhciBsPWlbYV07aWYoL1xcW2Jkc3ddL2kudGVzdChsKSl0LnB1c2gobCk7ZWxzZXt2YXIgYztsPWUobCk7YSsyPHMmJiItIj09PWlbYSsxXT8oYz1lKGlbYSsyXSksYSs9Mik6Yz1sLHIucHVzaChbbCxjXSksYzw2NXx8bD4xMjJ8fChjPDY1fHxsPjkwfHxyLnB1c2goWzMyfE1hdGgubWF4KDY1LGwpLDMyfE1hdGgubWluKGMsOTApXSksYzw5N3x8bD4xMjJ8fHIucHVzaChbLTMzJk1hdGgubWF4KDk3LGwpLC0zMyZNYXRoLm1pbihjLDEyMildKSl9fWZvcihyLnNvcnQoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRbMF0tZVswXXx8ZVsxXS10WzFdfSkpLGk9W10sbD1bTmFOLE5hTl0sYT0wO2E8ci5sZW5ndGg7KythKShzPXJbYV0pWzBdPD1sWzFdKzE/bFsxXT1NYXRoLm1heChsWzFdLHNbMV0pOmkucHVzaChsPXMpO2ZvcihyPVsiWyJdLG8mJnIucHVzaCgiXiIpLHIucHVzaC5hcHBseShyLHQpLGE9MDthPGkubGVuZ3RoOysrYSlzPWlbYV0sci5wdXNoKG4oc1swXSkpLHNbMV0+c1swXSYmKHNbMV0rMT5zWzBdJiZyLnB1c2goIi0iKSxyLnB1c2gobihzWzFdKSkpO3JldHVybiByLnB1c2goIl0iKSxyLmpvaW4oIiIpfWZ1bmN0aW9uIHIodCl7Zm9yKHZhciBlPXQuc291cmNlLm1hdGNoKC9cWyg/OlteXFxcXV18XFxbXFNcc10pKl18XFx1W1xkQS1GYS1mXXs0fXxcXHhbXGRBLUZhLWZdezJ9fFxcXGQrfFxcW15cZHV4XXxcKFw/WyE6PV18WygpXl18W14oKVtcXF5dKy9nKSxuPWUubGVuZ3RoLHI9W10scz0wLGw9MDtzPG47KytzKXt2YXIgYz1lW3NdOyIoIj09PWM/KytsOiJcXCI9PT1jLmNoYXJBdCgwKSYmKGM9K2Muc3Vic3RyaW5nKDEpKSYmYzw9bCYmKHJbY109LTEpfWZvcihzPTE7czxyLmxlbmd0aDsrK3MpLTE9PT1yW3NdJiYocltzXT0rK28pO2ZvcihsPXM9MDtzPG47KytzKSIoIj09PShjPWVbc10pP3ZvaWQgMD09PXJbKytsXSYmKGVbc109Iig/OiIpOiJcXCI9PT1jLmNoYXJBdCgwKSYmKGM9K2Muc3Vic3RyaW5nKDEpKSYmYzw9bCYmKGVbc109IlxcIityW2xdKTtmb3IobD1zPTA7czxuOysrcykiXiI9PT1lW3NdJiYiXiIhPT1lW3MrMV0mJihlW3NdPSIiKTtpZih0Lmlnbm9yZUNhc2UmJmEpZm9yKHM9MDtzPG47KytzKXQ9KGM9ZVtzXSkuY2hhckF0KDApLGMubGVuZ3RoPj0yJiYiWyI9PT10P2Vbc109aShjKToiXFwiIT09dCYmKGVbc109Yy5yZXBsYWNlKC9bQS1aYS16XS9nLChmdW5jdGlvbih0KXtyZXR1cm4gdD10LmNoYXJDb2RlQXQoMCksIlsiK1N0cmluZy5mcm9tQ2hhckNvZGUoLTMzJnQsMzJ8dCkrIl0ifSkpKTtyZXR1cm4gZS5qb2luKCIiKX1mb3IodmFyIG89MCxhPSExLHM9ITEsbD0wLGM9dC5sZW5ndGg7bDxjOysrbCl7dmFyIHU9dFtsXTtpZih1Lmlnbm9yZUNhc2Upcz0hMDtlbHNlIGlmKC9bYS16XS9pLnRlc3QodS5zb3VyY2UucmVwbGFjZSgvXFx1W1xkYS1mXXs0fXxcXHhbXGRhLWZdezJ9fFxcW15VWHV4XS9naSwiIikpKXthPSEwLHM9ITE7YnJlYWt9fXZhciBkPXtiOjgsdDo5LG46MTAsdjoxMSxmOjEyLHI6MTN9LGg9W107Zm9yKGw9MCxjPXQubGVuZ3RoO2w8YzsrK2wpe2lmKCh1PXRbbF0pLmdsb2JhbHx8dS5tdWx0aWxpbmUpdGhyb3cgRXJyb3IoIiIrdSk7aC5wdXNoKCIoPzoiK3IodSkrIikiKX1yZXR1cm4gUmVnRXhwKGguam9pbigifCIpLHM/ImdpIjoiZyIpfShvKX0oKTt2YXIgYT1uLmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24gZShzKXtmb3IodmFyIGw9cy5kLGM9W2wsInBsbiJdLHU9MCxkPXMuYS5tYXRjaChpKXx8W10saD17fSxmPTAscD1kLmxlbmd0aDtmPHA7KytmKXt2YXIgZyxtPWRbZl0sdj1oW21dLHk9dm9pZCAwO2lmKCJzdHJpbmciPT10eXBlb2YgdilnPSExO2Vsc2V7dmFyIGI9clttLmNoYXJBdCgwKV07aWYoYil5PW0ubWF0Y2goYlsxXSksdj1iWzBdO2Vsc2V7Zm9yKGc9MDtnPGE7KytnKWlmKGI9bltnXSx5PW0ubWF0Y2goYlsxXSkpe3Y9YlswXTticmVha315fHwodj0icGxuIil9IShnPXYubGVuZ3RoPj01JiYibGFuZy0iPT09di5zdWJzdHJpbmcoMCw1KSl8fHkmJiJzdHJpbmciPT10eXBlb2YgeVsxXXx8KGc9ITEsdj0ic3JjIiksZ3x8KGhbbV09dil9aWYoYj11LHUrPW0ubGVuZ3RoLGcpe2c9eVsxXTt2YXIgdz1tLmluZGV4T2YoZykseD13K2cubGVuZ3RoO3lbMl0mJih3PSh4PW0ubGVuZ3RoLXlbMl0ubGVuZ3RoKS1nLmxlbmd0aCksdj12LnN1YnN0cmluZyg1KSx0KGwrYixtLnN1YnN0cmluZygwLHcpLGUsYyksdChsK2IrdyxnLG8odixnKSxjKSx0KGwrYit4LG0uc3Vic3RyaW5nKHgpLGUsYyl9ZWxzZSBjLnB1c2gobCtiLHYpfXMuZT1jfX1mdW5jdGlvbiBuKHQpe3ZhciBuPVtdLGk9W107dC50cmlwbGVRdW90ZWRTdHJpbmdzP24ucHVzaChbInN0ciIsL14oPzonJycoPzpbXidcXF18XFxbXFNcc118Jyc/KD89W14nXSkpKig/OicnJ3wkKXwiIiIoPzpbXiJcXF18XFxbXFNcc118IiI/KD89W14iXSkpKig/OiIiInwkKXwnKD86W14nXFxdfFxcW1xTXHNdKSooPzonfCQpfCIoPzpbXiJcXF18XFxbXFNcc10pKig/OiJ8JCkpLyxxLCInXCIiXSk6dC5tdWx0aUxpbmVTdHJpbmdzP24ucHVzaChbInN0ciIsL14oPzonKD86W14nXFxdfFxcW1xTXHNdKSooPzonfCQpfCIoPzpbXiJcXF18XFxbXFNcc10pKig/OiJ8JCl8YCg/OlteXFxgXXxcXFtcU1xzXSkqKD86YHwkKSkvLHEsIidcImAiXSk6bi5wdXNoKFsic3RyIiwvXig/OicoPzpbXlxuXHInXFxdfFxcLikqKD86J3wkKXwiKD86W15cblxyIlxcXXxcXC4pKig/OiJ8JCkpLyxxLCJcIiciXSksdC52ZXJiYXRpbVN0cmluZ3MmJmkucHVzaChbInN0ciIsL15AIig/OlteIl18IiIpKig/OiJ8JCkvLHFdKTt2YXIgcj10Lmhhc2hDb21tZW50cztyZXR1cm4gciYmKHQuY1N0eWxlQ29tbWVudHM/KHI+MT9uLnB1c2goWyJjb20iLC9eIyg/OiMjKD86W14jXXwjKD8hIyMpKSooPzojIyN8JCl8LiopLyxxLCIjIl0pOm4ucHVzaChbImNvbSIsL14jKD86KD86ZGVmaW5lfGVsaWZ8ZWxzZXxlbmRpZnxlcnJvcnxpZmRlZnxpbmNsdWRlfGlmbmRlZnxsaW5lfHByYWdtYXx1bmRlZnx3YXJuaW5nKVxifFteXG5ccl0qKS8scSwiIyJdKSxpLnB1c2goWyJzdHIiLC9ePCg/Oig/Oig/OlwuXC5cLykqfFwvPykoPzpbXHctXSsoPzpcL1tcdy1dKykrKT9bXHctXStcLmh8W2Etel1cdyopPi8scV0pKTpuLnB1c2goWyJjb20iLC9eI1teXG5ccl0qLyxxLCIjIl0pKSx0LmNTdHlsZUNvbW1lbnRzJiYoaS5wdXNoKFsiY29tIiwvXlwvXC9bXlxuXHJdKi8scV0pLGkucHVzaChbImNvbSIsL15cL1wqW1xTXHNdKj8oPzpcKlwvfCQpLyxxXSkpLHQucmVnZXhMaXRlcmFscyYmaS5wdXNoKFsibGFuZy1yZWdleCIsL14oPzpeXlwuP3xbISstXXwhPXwhPT18I3wlfCU9fCZ8JiZ8JiY9fCY9fFwofFwqfFwqPXxcKz18LHwtPXwtPnxcL3xcLz18Onw6Onw7fDx8PDx8PDw9fDw9fD18PT18PT09fD58Pj18Pj58Pj49fD4+Pnw+Pj49fFs/QFteXXxcXj18XF5cXnxcXlxePXx7fFx8fFx8PXxcfFx8fFx8XHw9fH58YnJlYWt8Y2FzZXxjb250aW51ZXxkZWxldGV8ZG98ZWxzZXxmaW5hbGx5fGluc3RhbmNlb2Z8cmV0dXJufHRocm93fHRyeXx0eXBlb2YpXHMqKFwvKD89W14qL10pKD86W14vW1xcXXxcXFtcU1xzXXxcWyg/OlteXFxcXV18XFxbXFNcc10pKig/Ol18JCkpK1wvKS9dKSwocj10LnR5cGVzKSYmaS5wdXNoKFsidHlwIixyXSksKHQ9KCIiK3Qua2V5d29yZHMpLnJlcGxhY2UoL14gfCAkL2csIiIpKS5sZW5ndGgmJmkucHVzaChbImt3ZCIsUmVnRXhwKCJeKD86Iit0LnJlcGxhY2UoL1tccyxdKy9nLCJ8IikrIilcXGIiKSxxXSksbi5wdXNoKFsicGxuIiwvXlxzKy8scSwiIFxyXG5cdMKgIl0pLGkucHVzaChbImxpdCIsL15AWyRfYS16XVtcdyRAXSovaSxxXSxbInR5cCIsL14oPzpbQF9dP1tBLVpdK1thLXpdW1x3JEBdKnxcdytfdFxiKS8scV0sWyJwbG4iLC9eWyRfYS16XVtcdyRAXSovaSxxXSxbImxpdCIsL14oPzoweFtcZGEtZl0rfCg/OlxkKD86X1xkKykqXGQqKD86XC5cZCopP3xcLlxkXCspKD86ZVsrLV0/XGQrKT8pW2Etel0qL2kscSwiMDEyMzQ1Njc4OSJdLFsicGxuIiwvXlxcW1xTXHNdPy8scV0sWyJwdW4iLC9eLlteXHNcdyItJCcuL0BcXGBdKi8scV0pLGUobixpKX1mdW5jdGlvbiBpKHQsZSl7ZnVuY3Rpb24gbih0KXtzd2l0Y2godC5ub2RlVHlwZSl7Y2FzZSAxOmlmKG8udGVzdCh0LmNsYXNzTmFtZSkpYnJlYWs7aWYoIkJSIj09PXQubm9kZU5hbWUpaSh0KSx0LnBhcmVudE5vZGUmJnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KTtlbHNlIGZvcih0PXQuZmlyc3RDaGlsZDt0O3Q9dC5uZXh0U2libGluZyluKHQpO2JyZWFrO2Nhc2UgMzpjYXNlIDQ6aWYobCl7dmFyIGU9dC5ub2RlVmFsdWUscj1lLm1hdGNoKGEpO2lmKHIpe3ZhciBjPWUuc3Vic3RyaW5nKDAsci5pbmRleCk7dC5ub2RlVmFsdWU9YywoZT1lLnN1YnN0cmluZyhyLmluZGV4K3JbMF0ubGVuZ3RoKSkmJnQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocy5jcmVhdGVUZXh0Tm9kZShlKSx0Lm5leHRTaWJsaW5nKSxpKHQpLGN8fHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KX19fX1mdW5jdGlvbiBpKHQpe2Zvcig7IXQubmV4dFNpYmxpbmc7KWlmKCEodD10LnBhcmVudE5vZGUpKXJldHVybjt2YXIgZTtmb3IodD1mdW5jdGlvbiB0KGUsbil7dmFyIGk9bj9lLmNsb25lTm9kZSghMSk6ZTtpZihyPWUucGFyZW50Tm9kZSl7dmFyIHI9dChyLDEpLG89ZS5uZXh0U2libGluZztyLmFwcGVuZENoaWxkKGkpO2Zvcih2YXIgYT1vO2E7YT1vKW89YS5uZXh0U2libGluZyxyLmFwcGVuZENoaWxkKGEpfXJldHVybiBpfSh0Lm5leHRTaWJsaW5nLDApOyhlPXQucGFyZW50Tm9kZSkmJjE9PT1lLm5vZGVUeXBlOyl0PWU7Yy5wdXNoKHQpfXZhciByLG89Lyg/Ol58XHMpbm9jb2RlKD86XHN8JCkvLGE9L1xyXG4/fFxuLyxzPXQub3duZXJEb2N1bWVudDt0LmN1cnJlbnRTdHlsZT9yPXQuY3VycmVudFN0eWxlLndoaXRlU3BhY2U6d2luZG93LmdldENvbXB1dGVkU3R5bGUmJihyPXMuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSh0LHEpLmdldFByb3BlcnR5VmFsdWUoIndoaXRlLXNwYWNlIikpO3ZhciBsPXImJiJwcmUiPT09ci5zdWJzdHJpbmcoMCwzKTtmb3Iocj1zLmNyZWF0ZUVsZW1lbnQoIkxJIik7dC5maXJzdENoaWxkOylyLmFwcGVuZENoaWxkKHQuZmlyc3RDaGlsZCk7Zm9yKHZhciBjPVtyXSx1PTA7dTxjLmxlbmd0aDsrK3UpbihjW3VdKTtlPT09KDB8ZSkmJmNbMF0uc2V0QXR0cmlidXRlKCJ2YWx1ZSIsZSk7dmFyIGQ9cy5jcmVhdGVFbGVtZW50KCJPTCIpO2QuY2xhc3NOYW1lPSJsaW5lbnVtcyI7Zm9yKHZhciBoPU1hdGgubWF4KDAsZS0xfDApfHwwLGY9KHU9MCxjLmxlbmd0aCk7dTxmOysrdSkocj1jW3VdKS5jbGFzc05hbWU9IkwiKyh1K2gpJTEwLHIuZmlyc3RDaGlsZHx8ci5hcHBlbmRDaGlsZChzLmNyZWF0ZVRleHROb2RlKCLCoCIpKSxkLmFwcGVuZENoaWxkKHIpO3QuYXBwZW5kQ2hpbGQoZCl9ZnVuY3Rpb24gcih0LGUpe2Zvcih2YXIgbj1lLmxlbmd0aDstLW4+PTA7KXt2YXIgaT1lW25dO3YuaGFzT3duUHJvcGVydHkoaSk/d2luZG93LmNvbnNvbGUmJmNvbnNvbGUud2FybigiY2Fubm90IG92ZXJyaWRlIGxhbmd1YWdlIGhhbmRsZXIgJXMiLGkpOnZbaV09dH19ZnVuY3Rpb24gbyh0LGUpe3JldHVybiB0JiZ2Lmhhc093blByb3BlcnR5KHQpfHwodD0vXlxzKjwvLnRlc3QoZSk/ImRlZmF1bHQtbWFya3VwIjoiZGVmYXVsdC1jb2RlIiksdlt0XX1mdW5jdGlvbiBhKHQpe3ZhciBlPXQuZzt0cnl7dmFyIG49KGM9ZnVuY3Rpb24odCl7dmFyIGUsbj0vKD86Xnxccylub2NvZGUoPzpcc3wkKS8saT1bXSxyPTAsbz1bXSxhPTA7dC5jdXJyZW50U3R5bGU/ZT10LmN1cnJlbnRTdHlsZS53aGl0ZVNwYWNlOndpbmRvdy5nZXRDb21wdXRlZFN0eWxlJiYoZT1kb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHQscSkuZ2V0UHJvcGVydHlWYWx1ZSgid2hpdGUtc3BhY2UiKSk7dmFyIHM9ZSYmInByZSI9PT1lLnN1YnN0cmluZygwLDMpO3JldHVybiBmdW5jdGlvbiB0KGUpe3N3aXRjaChlLm5vZGVUeXBlKXtjYXNlIDE6aWYobi50ZXN0KGUuY2xhc3NOYW1lKSlicmVhaztmb3IodmFyIGw9ZS5maXJzdENoaWxkO2w7bD1sLm5leHRTaWJsaW5nKXQobCk7IkJSIiE9PShsPWUubm9kZU5hbWUpJiYiTEkiIT09bHx8KGlbYV09IlxuIixvW2E8PDFdPXIrKyxvW2ErKzw8MXwxXT1lKTticmVhaztjYXNlIDM6Y2FzZSA0OihsPWUubm9kZVZhbHVlKS5sZW5ndGgmJihsPXM/bC5yZXBsYWNlKC9cclxuPy9nLCJcbiIpOmwucmVwbGFjZSgvW1x0XG5cciBdKy9nLCIgIiksaVthXT1sLG9bYTw8MV09cixyKz1sLmxlbmd0aCxvW2ErKzw8MXwxXT1lKX19KHQpLHthOmkuam9pbigiIikucmVwbGFjZSgvXG4kLywiIiksYzpvfX0odC5oKSkuYTt0LmE9bix0LmM9Yy5jLHQuZD0wLG8oZSxuKSh0KTt2YXIgaSxyLGE9L1xiTVNJRVxiLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLHM9KGU9L1xuL2csdC5hKSxsPXMubGVuZ3RoLGM9MCx1PXQuYyxkPXUubGVuZ3RoLGg9KG49MCx0LmUpLGY9aC5sZW5ndGg7dD0wO2ZvcihoW2ZdPWwscj1pPTA7cjxmOyloW3JdIT09aFtyKzJdPyhoW2krK109aFtyKytdLGhbaSsrXT1oW3IrK10pOnIrPTI7Zm9yKGY9aSxyPWk9MDtyPGY7KXtmb3IodmFyIHA9aFtyXSxnPWhbcisxXSxtPXIrMjttKzI8PWYmJmhbbSsxXT09PWc7KW0rPTI7aFtpKytdPXAsaFtpKytdPWcscj1tfWZvcihoLmxlbmd0aD1pO248ZDspe3ZhciB2LHk9dVtuKzJdfHxsLGI9aFt0KzJdfHxsLHc9KG09TWF0aC5taW4oeSxiKSx1W24rMV0pO2lmKDEhPT13Lm5vZGVUeXBlJiYodj1zLnN1YnN0cmluZyhjLG0pKSl7YSYmKHY9di5yZXBsYWNlKGUsIlxyIikpLHcubm9kZVZhbHVlPXY7dmFyIHg9dy5vd25lckRvY3VtZW50LF89eC5jcmVhdGVFbGVtZW50KCJTUEFOIik7Xy5jbGFzc05hbWU9aFt0KzFdO3ZhciBTPXcucGFyZW50Tm9kZTtTLnJlcGxhY2VDaGlsZChfLHcpLF8uYXBwZW5kQ2hpbGQodyksYzx5JiYodVtuKzFdPXc9eC5jcmVhdGVUZXh0Tm9kZShzLnN1YnN0cmluZyhtLHkpKSxTLmluc2VydEJlZm9yZSh3LF8ubmV4dFNpYmxpbmcpKX0oYz1tKT49eSYmKG4rPTIpLGM+PWImJih0Kz0yKX19Y2F0Y2godCl7ImNvbnNvbGUiaW4gd2luZG93JiZjb25zb2xlLmxvZyh0JiZ0LnN0YWNrP3Quc3RhY2s6dCl9fXZhciBzLGwsYz1bcz1bW2w9WyJicmVhayxjb250aW51ZSxkbyxlbHNlLGZvcixpZixyZXR1cm4sd2hpbGUiXSwiYXV0byxjYXNlLGNoYXIsY29uc3QsZGVmYXVsdCxkb3VibGUsZW51bSxleHRlcm4sZmxvYXQsZ290byxpbnQsbG9uZyxyZWdpc3RlcixzaG9ydCxzaWduZWQsc2l6ZW9mLHN0YXRpYyxzdHJ1Y3Qsc3dpdGNoLHR5cGVkZWYsdW5pb24sdW5zaWduZWQsdm9pZCx2b2xhdGlsZSJdLCJjYXRjaCxjbGFzcyxkZWxldGUsZmFsc2UsaW1wb3J0LG5ldyxvcGVyYXRvcixwcml2YXRlLHByb3RlY3RlZCxwdWJsaWMsdGhpcyx0aHJvdyx0cnVlLHRyeSx0eXBlb2YiXSwiYWxpZ25vZixhbGlnbl91bmlvbixhc20sYXhpb20sYm9vbCxjb25jZXB0LGNvbmNlcHRfbWFwLGNvbnN0X2Nhc3QsY29uc3RleHByLGRlY2x0eXBlLGR5bmFtaWNfY2FzdCxleHBsaWNpdCxleHBvcnQsZnJpZW5kLGlubGluZSxsYXRlX2NoZWNrLG11dGFibGUsbmFtZXNwYWNlLG51bGxwdHIscmVpbnRlcnByZXRfY2FzdCxzdGF0aWNfYXNzZXJ0LHN0YXRpY19jYXN0LHRlbXBsYXRlLHR5cGVpZCx0eXBlbmFtZSx1c2luZyx2aXJ0dWFsLHdoZXJlIl0sdT1bcywiYWJzdHJhY3QsYm9vbGVhbixieXRlLGV4dGVuZHMsZmluYWwsZmluYWxseSxpbXBsZW1lbnRzLGltcG9ydCxpbnN0YW5jZW9mLG51bGwsbmF0aXZlLHBhY2thZ2Usc3RyaWN0ZnAsc3VwZXIsc3luY2hyb25pemVkLHRocm93cyx0cmFuc2llbnQiXSxkPVt1LCJhcyxiYXNlLGJ5LGNoZWNrZWQsZGVjaW1hbCxkZWxlZ2F0ZSxkZXNjZW5kaW5nLGR5bmFtaWMsZXZlbnQsZml4ZWQsZm9yZWFjaCxmcm9tLGdyb3VwLGltcGxpY2l0LGluLGludGVyZmFjZSxpbnRlcm5hbCxpbnRvLGlzLGxvY2ssb2JqZWN0LG91dCxvdmVycmlkZSxvcmRlcmJ5LHBhcmFtcyxwYXJ0aWFsLHJlYWRvbmx5LHJlZixzYnl0ZSxzZWFsZWQsc3RhY2thbGxvYyxzdHJpbmcsc2VsZWN0LHVpbnQsdWxvbmcsdW5jaGVja2VkLHVuc2FmZSx1c2hvcnQsdmFyIl0saD1bbCwiYW5kLGFzLGFzc2VydCxjbGFzcyxkZWYsZGVsLGVsaWYsZXhjZXB0LGV4ZWMsZmluYWxseSxmcm9tLGdsb2JhbCxpbXBvcnQsaW4saXMsbGFtYmRhLG5vbmxvY2FsLG5vdCxvcixwYXNzLHByaW50LHJhaXNlLHRyeSx3aXRoLHlpZWxkLEZhbHNlLFRydWUsTm9uZSJdLGY9W2wsImFsaWFzLGFuZCxiZWdpbixjYXNlLGNsYXNzLGRlZixkZWZpbmVkLGVsc2lmLGVuZCxlbnN1cmUsZmFsc2UsaW4sbW9kdWxlLG5leHQsbmlsLG5vdCxvcixyZWRvLHJlc2N1ZSxyZXRyeSxzZWxmLHN1cGVyLHRoZW4sdHJ1ZSx1bmRlZix1bmxlc3MsdW50aWwsd2hlbix5aWVsZCxCRUdJTixFTkQiXSxwPS9eKERJUnxGSUxFfHZlY3RvcnwoZGV8cHJpb3JpdHlfKT9xdWV1ZXxsaXN0fHN0YWNrfChjb25zdF8pP2l0ZXJhdG9yfChtdWx0aSk/KHNldHxtYXApfGJpdHNldHx1PyhpbnR8ZmxvYXQpXGQqKS8sZz0vXFMvLG09bih7a2V5d29yZHM6W2MsZCxzPVtzLCJkZWJ1Z2dlcixldmFsLGV4cG9ydCxmdW5jdGlvbixnZXQsbnVsbCxzZXQsdW5kZWZpbmVkLHZhcix3aXRoLEluZmluaXR5LE5hTiJdLCJjYWxsZXIsZGVsZXRlLGRpZSxkbyxkdW1wLGVsc2lmLGV2YWwsZXhpdCxmb3JlYWNoLGZvcixnb3RvLGlmLGltcG9ydCxsYXN0LGxvY2FsLG15LG5leHQsbm8sb3VyLHByaW50LHBhY2thZ2UscmVkbyxyZXF1aXJlLHN1Yix1bmRlZix1bmxlc3MsdW50aWwsdXNlLHdhbnRhcnJheSx3aGlsZSxCRUdJTixFTkQiK2gsZixsPVtsLCJjYXNlLGRvbmUsZWxpZixlc2FjLGV2YWwsZmksZnVuY3Rpb24saW4sbG9jYWwsc2V0LHRoZW4sdW50aWwiXV0saGFzaENvbW1lbnRzOiEwLGNTdHlsZUNvbW1lbnRzOiEwLG11bHRpTGluZVN0cmluZ3M6ITAscmVnZXhMaXRlcmFsczohMH0pLHY9e307cihtLFsiZGVmYXVsdC1jb2RlIl0pLHIoZShbXSxbWyJwbG4iLC9eW148P10rL10sWyJkZWMiLC9ePCFcd1tePl0qKD86PnwkKS9dLFsiY29tIiwvXjxcIS0tW1xTXHNdKj8oPzotLVw+fCQpL10sWyJsYW5nLSIsL148XD8oW1xTXHNdKz8pKD86XD8+fCQpL10sWyJsYW5nLSIsL148JShbXFNcc10rPykoPzolPnwkKS9dLFsicHVuIiwvXig/OjxbJT9dfFslP10+KS9dLFsibGFuZy0iLC9ePHhtcFxiW14+XSo+KFtcU1xzXSs/KTxcL3htcFxiW14+XSo+L2ldLFsibGFuZy1qcyIsL148c2NyaXB0XGJbXj5dKj4oW1xTXHNdKj8pKDxcL3NjcmlwdFxiW14+XSo+KS9pXSxbImxhbmctY3NzIiwvXjxzdHlsZVxiW14+XSo+KFtcU1xzXSo/KSg8XC9zdHlsZVxiW14+XSo+KS9pXSxbImxhbmctaW4udGFnIiwvXig8XC8/W2Etel1bXjw+XSo+KS9pXV0pLFsiZGVmYXVsdC1tYXJrdXAiLCJodG0iLCJodG1sIiwibXhtbCIsInhodG1sIiwieG1sIiwieHNsIl0pLHIoZShbWyJwbG4iLC9eXHMrLyxxLCIgXHRcclxuIl0sWyJhdHYiLC9eKD86IlteIl0qIj98J1teJ10qJz8pLyxxLCJcIiciXV0sW1sidGFnIiwvXl48XC8/W2Etel0oPzpbXHctLjpdKlx3KT98XC8/PiQvaV0sWyJhdG4iLC9eKD8hc3R5bGVbXHM9XXxvbilbYS16XSg/OltcdzotXSpcdyk/L2ldLFsibGFuZy11cS52YWwiLC9ePVxzKihbXlxzIic+XSooPzpbXlxzIicvPl18XC8oPz1ccykpKS9dLFsicHVuIiwvXlsvPC0+XSsvXSxbImxhbmctanMiLC9eb25cdytccyo9XHMqIihbXiJdKykiL2ldLFsibGFuZy1qcyIsL15vblx3K1xzKj1ccyonKFteJ10rKScvaV0sWyJsYW5nLWpzIiwvXm9uXHcrXHMqPVxzKihbXlxzIic+XSspL2ldLFsibGFuZy1jc3MiLC9ec3R5bGVccyo9XHMqIihbXiJdKykiL2ldLFsibGFuZy1jc3MiLC9ec3R5bGVccyo9XHMqJyhbXiddKyknL2ldLFsibGFuZy1jc3MiLC9ec3R5bGVccyo9XHMqKFteXHMiJz5dKykvaV1dKSxbImluLnRhZyJdKSxyKGUoW10sW1siYXR2IiwvXltcU1xzXSsvXV0pLFsidXEudmFsIl0pLHIobih7a2V5d29yZHM6YyxoYXNoQ29tbWVudHM6ITAsY1N0eWxlQ29tbWVudHM6ITAsdHlwZXM6cH0pLFsiYyIsImNjIiwiY3BwIiwiY3h4IiwiY3ljIiwibSJdKSxyKG4oe2tleXdvcmRzOiJudWxsLHRydWUsZmFsc2UifSksWyJqc29uIl0pLHIobih7a2V5d29yZHM6ZCxoYXNoQ29tbWVudHM6ITAsY1N0eWxlQ29tbWVudHM6ITAsdmVyYmF0aW1TdHJpbmdzOiEwLHR5cGVzOnB9KSxbImNzIl0pLHIobih7a2V5d29yZHM6dSxjU3R5bGVDb21tZW50czohMH0pLFsiamF2YSJdKSxyKG4oe2tleXdvcmRzOmwsaGFzaENvbW1lbnRzOiEwLG11bHRpTGluZVN0cmluZ3M6ITB9KSxbImJzaCIsImNzaCIsInNoIl0pLHIobih7a2V5d29yZHM6aCxoYXNoQ29tbWVudHM6ITAsbXVsdGlMaW5lU3RyaW5nczohMCx0cmlwbGVRdW90ZWRTdHJpbmdzOiEwfSksWyJjdiIsInB5Il0pLHIobih7a2V5d29yZHM6ImNhbGxlcixkZWxldGUsZGllLGRvLGR1bXAsZWxzaWYsZXZhbCxleGl0LGZvcmVhY2gsZm9yLGdvdG8saWYsaW1wb3J0LGxhc3QsbG9jYWwsbXksbmV4dCxubyxvdXIscHJpbnQscGFja2FnZSxyZWRvLHJlcXVpcmUsc3ViLHVuZGVmLHVubGVzcyx1bnRpbCx1c2Usd2FudGFycmF5LHdoaWxlLEJFR0lOLEVORCIsaGFzaENvbW1lbnRzOiEwLG11bHRpTGluZVN0cmluZ3M6ITAscmVnZXhMaXRlcmFsczohMH0pLFsicGVybCIsInBsIiwicG0iXSkscihuKHtrZXl3b3JkczpmLGhhc2hDb21tZW50czohMCxtdWx0aUxpbmVTdHJpbmdzOiEwLHJlZ2V4TGl0ZXJhbHM6ITB9KSxbInJiIl0pLHIobih7a2V5d29yZHM6cyxjU3R5bGVDb21tZW50czohMCxyZWdleExpdGVyYWxzOiEwfSksWyJqcyJdKSxyKG4oe2tleXdvcmRzOiJhbGwsYW5kLGJ5LGNhdGNoLGNsYXNzLGVsc2UsZXh0ZW5kcyxmYWxzZSxmaW5hbGx5LGZvcixpZixpbixpcyxpc250LGxvb3AsbmV3LG5vLG5vdCxudWxsLG9mLG9mZixvbixvcixyZXR1cm4sc3VwZXIsdGhlbix0cnVlLHRyeSx1bmxlc3MsdW50aWwsd2hlbix3aGlsZSx5ZXMiLGhhc2hDb21tZW50czozLGNTdHlsZUNvbW1lbnRzOiEwLG11bHRpbGluZVN0cmluZ3M6ITAsdHJpcGxlUXVvdGVkU3RyaW5nczohMCxyZWdleExpdGVyYWxzOiEwfSksWyJjb2ZmZWUiXSkscihlKFtdLFtbInN0ciIsL15bXFNcc10rL11dKSxbInJlZ2V4Il0pLHdpbmRvdy5wcmV0dHlQcmludE9uZT1mdW5jdGlvbih0LGUsbil7dmFyIHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiUFJFIik7cmV0dXJuIHIuaW5uZXJIVE1MPXQsbiYmaShyLG4pLGEoe2c6ZSxpOm4saDpyfSksci5pbm5lckhUTUx9LHdpbmRvdy5wcmV0dHlQcmludD1mdW5jdGlvbih0KXtmb3IodmFyIGU9W2RvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwcmUiKSxkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiY29kZSIpLGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ4bXAiKV0sbj1bXSxyPTA7cjxlLmxlbmd0aDsrK3IpZm9yKHZhciBvPTAscz1lW3JdLmxlbmd0aDtvPHM7KytvKW4ucHVzaChlW3JdW29dKTtlPXE7dmFyIGw9RGF0ZTtsLm5vd3x8KGw9e25vdzpmdW5jdGlvbigpe3JldHVybituZXcgRGF0ZX19KTt2YXIgYz0wLHU9L1xibGFuZyg/OnVhZ2UpPy0oW1x3Ll0rKSg/IVxTKS87IWZ1bmN0aW9uIGUoKXtmb3IodmFyIHI9d2luZG93LlBSX1NIT1VMRF9VU0VfQ09OVElOVUFUSU9OP2wubm93KCkrMjUwOjEvMDtjPG4ubGVuZ3RoJiZsLm5vdygpPHI7YysrKXt2YXIgbz1uW2NdO2lmKChzPW8uY2xhc3NOYW1lKS5pbmRleE9mKCJwcmV0dHlwcmludCIpPj0wKXt2YXIgcyxkLGg7aWYoaD0hKHM9cy5tYXRjaCh1KSkpe2Zvcih2YXIgZj12b2lkIDAscD0oaD1vKS5maXJzdENoaWxkO3A7cD1wLm5leHRTaWJsaW5nKXt2YXIgbT1wLm5vZGVUeXBlO2Y9MT09PW0/Zj9oOnA6Mz09PW0mJmcudGVzdChwLm5vZGVWYWx1ZSk/aDpmfWg9KGQ9Zj09PWg/dm9pZCAwOmYpJiYiQ09ERSI9PT1kLnRhZ05hbWV9Zm9yKGgmJihzPWQuY2xhc3NOYW1lLm1hdGNoKHUpKSxzJiYocz1zWzFdKSxoPSExLGY9by5wYXJlbnROb2RlO2Y7Zj1mLnBhcmVudE5vZGUpaWYoKCJwcmUiPT09Zi50YWdOYW1lfHwiY29kZSI9PT1mLnRhZ05hbWV8fCJ4bXAiPT09Zi50YWdOYW1lKSYmZi5jbGFzc05hbWUmJmYuY2xhc3NOYW1lLmluZGV4T2YoInByZXR0eXByaW50Iik+PTApe2g9ITA7YnJlYWt9aHx8KChoPSEhKGg9by5jbGFzc05hbWUubWF0Y2goL1xibGluZW51bXNcYig/OjooXGQrKSk/LykpJiYoIWhbMV18fCFoWzFdLmxlbmd0aHx8K2hbMV0pKSYmaShvLGgpLGEoe2c6cyxoOm8saTpofSkpfX1jPG4ubGVuZ3RoP3NldFRpbWVvdXQoZSwyNTApOnQmJnQoKX0oKX0sd2luZG93LlBSPXtjcmVhdGVTaW1wbGVMZXhlcjplLHJlZ2lzdGVyTGFuZ0hhbmRsZXI6cixzb3VyY2VEZWNvcmF0b3I6bixQUl9BVFRSSUJfTkFNRToiYXRuIixQUl9BVFRSSUJfVkFMVUU6ImF0diIsUFJfQ09NTUVOVDoiY29tIixQUl9ERUNMQVJBVElPTjoiZGVjIixQUl9LRVlXT1JEOiJrd2QiLFBSX0xJVEVSQUw6ImxpdCIsUFJfTk9DT0RFOiJub2NvZGUiLFBSX1BMQUlOOiJwbG4iLFBSX1BVTkNUVUFUSU9OOiJwdW4iLFBSX1NPVVJDRToic3JjIixQUl9TVFJJTkc6InN0ciIsUFJfVEFHOiJ0YWciLFBSX1RZUEU6InR5cCJ9fSgpOw=="}},"time_used":470,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":303,"receive":167,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"clear-vault.online/myaccount/assets/fonts/Nunito-Bold.woff2","fqdn":"clear-vault.online","domain":"clear-vault.online","tld":"online"},"ip":{"addr":"163.61.188.222","port":443,"asn":0,"as":"","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"font","requested_by":"https://clear-vault.online/","date":"2025-08-07T20:48:21.731Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.clear-vault.online","organization":""},"issuer":{"commonName":"R10","organization":"Let's Encrypt"},"validity":{"start":"Mon, 16 Jun 2025 11:19:04 GMT","end":"Sun, 14 Sep 2025 11:19:03 GMT"},"fingerprint":{"sha1":"B5:E4:FF:81:2F:18:5B:84:17:4F:FD:F3:B1:30:00:31:3C:9C:0B:6F","sha256":"D8:BC:E6:FB:32:84:D6:43:47:2F:20:BA:56:C3:6C:DA:94:89:5F:DD:A3:3B:02:B9:36:2B:50:1E:79:03:E9:D6"}}},"request":{"raw":"GET /myaccount/assets/fonts/Nunito-Bold.woff2 HTTP/1.1\r\nHost: clear-vault.online\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.5\r\nAccept-Encoding: identity\r\nDNT: 1\r\nConnection: keep-alive\r\nReferer: https://clear-vault.online/myaccount/assets/css/dashlite.css?ver=2.4.0\r\nCookie: PHPSESSID=1f922d27e0c65bdcb87ee1a396055a92\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/3 200 OK\r\ncache-control: public, max-age=604800\r\nexpires: Thu, 14 Aug 2025 20:48:21 GMT\r\ncontent-type: font/woff2\r\nlast-modified: Thu, 11 May 2023 18:14:16 GMT\r\naccept-ranges: bytes\r\ncontent-length: 43608\r\ndate: Thu, 07 Aug 2025 20:48:21 GMT\r\nserver: LiteSpeed\r\nstrict-transport-security: max-age=16070400;\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","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":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":43608,"size_decoded":0,"mime_type":"font/woff2","magic":"Web Open Font Format (Version 2), TrueType, length 43608, version 1.0","md5":"28a6dc5d5990b88cf70a9faff2b32c73","sha1":"a34abc66b1a704d5ad70bfcb75a9939ffee1f350","sha256":"bbac27a12c4dbc1f1605db29f666da787ba3d0a16b6668526906d94a53307a0c","sha512":"96503282a5dc6e492e974f6ac5170e67a508e325369922867779b18b7221e8ced4a859375e4d270c4ffbc46e70958016d95eca0f6f15a4b22bccdef660e2e1d4","ssdeep":"768:9VvmRZHH/qIXFyzto85USEl4o6savszM0ROZdO28tteKHABL0wKCzeQ5dexHBTgv:2RQIVu5eCogsTAzjm5ABneS4xHoLb","tlshash":"3713f1078c091c98d9d3b916f99b7ef302da24b6fbd6a919f9363407813be4b06105e1","first_seen":"2023-05-04T19:11:18Z","last_seen":"2026-08-11T12:54:12.907031Z","times_seen":788,"resource_available":false,"data":"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"}},"time_used":109,"timings":{"blocked":1,"dns":0,"connect":0,"send":0,"wait":99,"receive":9,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"clear-vault.online/myaccount/images/favicon.png","fqdn":"clear-vault.online","domain":"clear-vault.online","tld":"online"},"ip":{"addr":"163.61.188.222","port":443,"asn":0,"as":"","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://clear-vault.online/","date":"2025-08-07T20:48:22.043Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.clear-vault.online","organization":""},"issuer":{"commonName":"R10","organization":"Let's Encrypt"},"validity":{"start":"Mon, 16 Jun 2025 11:19:04 GMT","end":"Sun, 14 Sep 2025 11:19:03 GMT"},"fingerprint":{"sha1":"B5:E4:FF:81:2F:18:5B:84:17:4F:FD:F3:B1:30:00:31:3C:9C:0B:6F","sha256":"D8:BC:E6:FB:32:84:D6:43:47:2F:20:BA:56:C3:6C:DA:94:89:5F:DD:A3:3B:02:B9:36:2B:50:1E:79:03:E9:D6"}}},"request":{"raw":"GET /myaccount/images/favicon.png HTTP/1.1\r\nHost: clear-vault.online\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,*/*\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate, br\r\nDNT: 1\r\nConnection: keep-alive\r\nReferer: https://clear-vault.online/\r\nCookie: PHPSESSID=1f922d27e0c65bdcb87ee1a396055a92\r\nSec-Fetch-Dest: image\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/3 200 OK\r\ncache-control: public, max-age=604800\r\nexpires: Thu, 14 Aug 2025 20:48:22 GMT\r\ncontent-type: image/png\r\nlast-modified: Thu, 11 May 2023 18:14:16 GMT\r\naccept-ranges: bytes\r\ncontent-length: 24231\r\ndate: Thu, 07 Aug 2025 20:48:22 GMT\r\nserver: LiteSpeed\r\nstrict-transport-security: max-age=16070400;\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]},{"name":"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":24231,"size_decoded":0,"mime_type":"image/png","magic":"PNG image data, 239 x 229, 8-bit/color RGBA, non-interlaced","md5":"13343fc1df626eb130c6fbffbb3102e1","sha1":"880f96c0fabef29bf4594f46d3c96217a7c543d3","sha256":"2fe3b4d4b8fcb1a1b3b9d7eefb25b1930e9d725ef04392ad3a270278b7bd52b0","sha512":"47069ecd1b34d4fa405543f4b3a3a15c5b788ce41073e008772b477ccdc36e1861f7b6d05e5195079e37f936713f1784bda71e7d6dbdd6638dc007d94ed48c9b","ssdeep":"384:KLeelaZjrp1xBSepobqiFzhbgNT5h0//eO74cCl9LZ/1T14hEO7BmZbQU/ic+lye:8e0UjTJpobq4zhbgln2WO74cCLJ1OhfN","tlshash":"29b2f1f95b58d05f34c8bec83ab7a311c5d86b9345321a714f3f1c9e0c99a36ac0a999","first_seen":"2023-08-17T01:46:59Z","last_seen":"2026-08-05T14:02:57.191497Z","times_seen":74,"resource_available":false,"data":"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"}},"time_used":101,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":99,"receive":2,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"clear-vault.online/myaccount/assets/css/dashlite.css?ver=2.4.0","fqdn":"clear-vault.online","domain":"clear-vault.online","tld":"online"},"ip":{"addr":"163.61.188.222","port":443,"asn":0,"as":"","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://clear-vault.online/","date":"2025-08-07T20:48:21.178Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.clear-vault.online","organization":""},"issuer":{"commonName":"R10","organization":"Let's Encrypt"},"validity":{"start":"Mon, 16 Jun 2025 11:19:04 GMT","end":"Sun, 14 Sep 2025 11:19:03 GMT"},"fingerprint":{"sha1":"B5:E4:FF:81:2F:18:5B:84:17:4F:FD:F3:B1:30:00:31:3C:9C:0B:6F","sha256":"D8:BC:E6:FB:32:84:D6:43:47:2F:20:BA:56:C3:6C:DA:94:89:5F:DD:A3:3B:02:B9:36:2B:50:1E:79:03:E9:D6"}}},"request":{"raw":"GET /myaccount/assets/css/dashlite.css?ver=2.4.0 HTTP/1.1\r\nHost: clear-vault.online\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.5\r\nAccept-Encoding: gzip, deflate, br\r\nDNT: 1\r\nConnection: keep-alive\r\nReferer: https://clear-vault.online/\r\nCookie: PHPSESSID=1f922d27e0c65bdcb87ee1a396055a92\r\nSec-Fetch-Dest: style\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/3 200 OK\r\ncache-control: public, max-age=604800\r\nexpires: Thu, 14 Aug 2025 20:48:21 GMT\r\ncontent-type: text/css\r\nlast-modified: Thu, 11 May 2023 18:14:16 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 106861\r\ndate: Thu, 07 Aug 2025 20:48:21 GMT\r\nserver: LiteSpeed\r\nstrict-transport-security: max-age=16070400;\r\nalt-svc: h3=\":443\"; ma=2592000, h3-29=\":443\"; ma=2592000, h3-Q050=\":443\"; ma=2592000, h3-Q046=\":443\"; ma=2592000, h3-Q043=\":443\"; ma=2592000, quic=\":443\"; ma=2592000; v=\"43,46\"\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","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":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":734027,"size_decoded":0,"mime_type":"text/css","magic":"ASCII text, with very long lines (996)","md5":"29f51dcb633172ba30546d7f29f9ce23","sha1":"f51083d81304330a5b39367b5fd8a32cf72966ea","sha256":"2c501ba3e7a82a112add188936f2bdca54a148d9b9f19d8656a145e3a7b89779","sha512":"0a0d291b72c7c06834c44f113bede5f10a82dd07b9e6defee5c4700da17f48c177539e2177a58b8f808237a533ff48b6a856b53f95a71fd5aeeb7262c74e22e7","ssdeep":"6144:JdN+B/KrB7OGB5ONIbhlyMmkQOFri0LEO:EhIbu0LN","tlshash":"e2f4c7fbb29121002167878875d3fbe5873e6194e1554ebee492290cc3cd6d839b7eca","first_seen":"2025-08-07T20:48:57.541254Z","last_seen":"2025-08-07T20:48:57.541254Z","times_seen":1,"resource_available":false,"data":"LyohCiogVGVtcGxhdGUgTmFtZTogRGFzaExpdGUKKiBBdXRob3I6IFNvZnRuaW8KKiBBdXRob3IgVVJJOiBodHRwOi8vdGhlbWVmb3Jlc3QubmV0L3VzZXIvc29mdG5pbwoqIFZlcnNpb246IDIuNC4wCiogVXBkYXRlZDogMDMuMDMuMjAyMQoqKi8KCgovKiAgSU1QT1JUQU5UIE5PVEU6IERPIE5PVCBFZGl0IHRoaXMgZmlsZS4gQmVzdCB0byB3cml0ZSBvd24gY29kZSBpbiBjc3MvdGhlbWUuY3NzIGZpbGUuIEl0IHdpbGwgaGVscHMgeW91IHRvIGVhc3kgdXBkYXRlIG9mIHRoZSB0ZW1wbGF0ZS4gKi8KLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIyBUYWJsZSBDb250ZW50cyAjIyAwMS4gRk9OVFMgMDIuIFZFTkRPUlMgKEJvb3RzdHJhcHMsIE5pb0ljb24sIFNlbGVjdDIgZXRjKSAwMy4gTEFZT1VUUyAwNC4gVVRJTElURVMgMDUuIENPTVBPTkVOVFMgMDYuIElORElWSURVTCBDT05DRVBUUyAwNy4gUFJFVklFV1MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqKi8KLyoqIDAxLiBGT05UUyAqLwpAZm9udC1mYWNlIHsgZm9udC1mYW1pbHk6ICdSb2JvdG8nOyBzcmM6IHVybCgiLi4vZm9udHMvUm9ib3RvLUxpZ2h0LmVvdCIpOyBzcmM6IGxvY2FsKCJSb2JvdG8gTGlnaHQiKSwgbG9jYWwoIlJvYm90by1MaWdodCIpLCB1cmwoIi4uL2ZvbnRzL1JvYm90by1MaWdodC5lb3QjaWVmaXgiKSBmb3JtYXQoImVtYmVkZGVkLW9wZW50eXBlIiksIHVybCgiLi4vZm9udHMvUm9ib3RvLUxpZ2h0LndvZmYyIikgZm9ybWF0KCJ3b2ZmMiIpLCB1cmwoIi4uL2ZvbnRzL1JvYm90by1MaWdodC53b2ZmIikgZm9ybWF0KCJ3b2ZmIiksIHVybCgiLi4vZm9udHMvUm9ib3RvLUxpZ2h0LnR0ZiIpIGZvcm1hdCgidHJ1ZXR5cGUiKTsgZm9udC13ZWlnaHQ6IDMwMDsgZm9udC1zdHlsZTogbm9ybWFsOyB9CgpAZm9udC1mYWNlIHsgZm9udC1mYW1pbHk6ICdSb2JvdG8nOyBzcmM6IHVybCgiLi4vZm9udHMvUm9ib3RvLVJlZ3VsYXIuZW90Iik7IHNyYzogbG9jYWwoIlJvYm90byIpLCBsb2NhbCgiUm9ib3RvLVJlZ3VsYXIiKSwgdXJsKCIuLi9mb250cy9Sb2JvdG8tUmVndWxhci5lb3QjaWVmaXgiKSBmb3JtYXQoImVtYmVkZGVkLW9wZW50eXBlIiksIHVybCgiLi4vZm9udHMvUm9ib3RvLVJlZ3VsYXIud29mZjIiKSBmb3JtYXQoIndvZmYyIiksIHVybCgiLi4vZm9udHMvUm9ib3RvLVJlZ3VsYXIud29mZiIpIGZvcm1hdCgid29mZiIpLCB1cmwoIi4uL2ZvbnRzL1JvYm90by1SZWd1bGFyLnR0ZiIpIGZvcm1hdCgidHJ1ZXR5cGUiKTsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgZm9udC1zdHlsZTogbm9ybWFsOyB9CgpAZm9udC1mYWNlIHsgZm9udC1mYW1pbHk6ICdSb2JvdG8nOyBzcmM6IHVybCgiLi4vZm9udHMvUm9ib3RvLU1lZGl1bS5lb3QiKTsgc3JjOiBsb2NhbCgiUm9ib3RvIE1lZGl1bSIpLCBsb2NhbCgiUm9ib3RvLU1lZGl1bSIpLCB1cmwoIi4uL2ZvbnRzL1JvYm90by1NZWRpdW0uZW90I2llZml4IikgZm9ybWF0KCJlbWJlZGRlZC1vcGVudHlwZSIpLCB1cmwoIi4uL2ZvbnRzL1JvYm90by1NZWRpdW0ud29mZjIiKSBmb3JtYXQoIndvZmYyIiksIHVybCgiLi4vZm9udHMvUm9ib3RvLU1lZGl1bS53b2ZmIikgZm9ybWF0KCJ3b2ZmIiksIHVybCgiLi4vZm9udHMvUm9ib3RvLU1lZGl1bS50dGYiKSBmb3JtYXQoInRydWV0eXBlIik7IGZvbnQtd2VpZ2h0OiA1MDA7IGZvbnQtc3R5bGU6IG5vcm1hbDsgfQoKQGZvbnQtZmFjZSB7IGZvbnQtZmFtaWx5OiAnUm9ib3RvJzsgc3JjOiB1cmwoIi4uL2ZvbnRzL1JvYm90by1Cb2xkLmVvdCIpOyBzcmM6IGxvY2FsKCJSb2JvdG8gQm9sZCIpLCBsb2NhbCgiUm9ib3RvLU1lZGl1bSIpLCB1cmwoIi4uL2ZvbnRzL1JvYm90by1Cb2xkLmVvdCNpZWZpeCIpIGZvcm1hdCgiZW1iZWRkZWQtb3BlbnR5cGUiKSwgdXJsKCIuLi9mb250cy9Sb2JvdG8tQm9sZC53b2ZmMiIpIGZvcm1hdCgid29mZjIiKSwgdXJsKCIuLi9mb250cy9Sb2JvdG8tQm9sZC53b2ZmIikgZm9ybWF0KCJ3b2ZmIiksIHVybCgiLi4vZm9udHMvUm9ib3RvLUJvbGQudHRmIikgZm9ybWF0KCJ0cnVldHlwZSIpOyBmb250LXdlaWdodDogNzAwOyBmb250LXN0eWxlOiBub3JtYWw7IH0KCkBmb250LWZhY2UgeyBmb250LWZhbWlseTogJ051bml0byc7IHNyYzogdXJsKCIuLi9mb250cy9OdW5pdG8tUmVndWxhci5lb3QiKTsgc3JjOiBsb2NhbCgiTnVuaXRvIFJlZ3VsYXIiKSwgbG9jYWwoIk51bml0by1SZWd1bGFyIiksIHVybCgiLi4vZm9udHMvTnVuaXRvLVJlZ3VsYXIuZW90I2llZml4IikgZm9ybWF0KCJlbWJlZGRlZC1vcGVudHlwZSIpLCB1cmwoIi4uL2ZvbnRzL051bml0by1SZWd1bGFyLndvZmYyIikgZm9ybWF0KCJ3b2ZmMiIpLCB1cmwoIi4uL2ZvbnRzL051bml0by1SZWd1bGFyLndvZmYiKSBmb3JtYXQoIndvZmYiKSwgdXJsKCIuLi9mb250cy9OdW5pdG8tUmVndWxhci50dGYiKSBmb3JtYXQoInRydWV0eXBlIik7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGZvbnQtc3R5bGU6IG5vcm1hbDsgfQoKQGZvbnQtZmFjZSB7IGZvbnQtZmFtaWx5OiAnTnVuaXRvJzsgc3JjOiB1cmwoIi4uL2ZvbnRzL051bml0by1Cb2xkLmVvdCIpOyBzcmM6IGxvY2FsKCJOdW5pdG8gQm9sZCIpLCBsb2NhbCgiTnVuaXRvLUJvbGQiKSwgdXJsKCIuLi9mb250cy9OdW5pdG8tQm9sZC5lb3QjaWVmaXgiKSBmb3JtYXQoImVtYmVkZGVkLW9wZW50eXBlIiksIHVybCgiLi4vZm9udHMvTnVuaXRvLUJvbGQud29mZjIiKSBmb3JtYXQoIndvZmYyIiksIHVybCgiLi4vZm9udHMvTnVuaXRvLUJvbGQud29mZiIpIGZvcm1hdCgid29mZiIpLCB1cmwoIi4uL2ZvbnRzL051bml0by1Cb2xkLnR0ZiIpIGZvcm1hdCgidHJ1ZXR5cGUiKTsgZm9udC13ZWlnaHQ6IGJvbGQ7IGZvbnQtc3R5bGU6IG5vcm1hbDsgfQoKLyoqIEJvb3RzdHJhcCAoaHR0cHM6Ly9nZXRib290c3RyYXAuY29tLykgICovCjpyb290IHsgLS1ibHVlOiAjNTU5YmZiOyAtLWluZGlnbzogIzJjMzc4MjsgLS1wdXJwbGU6ICM4MTZiZmY7IC0tcGluazogI2ZmNjNhNTsgLS1yZWQ6ICNlODUzNDc7IC0tb3JhbmdlOiAjZmZhMzUzOyAtLXllbGxvdzogI2Y0YmQwZTsgLS1ncmVlbjogIzFlZTBhYzsgLS10ZWFsOiAjMjBjOTk3OyAtLWN5YW46ICMwOWMyZGU7IC0td2hpdGU6ICNmZmY7IC0tZ3JheTogIzZjNzU3ZDsgLS1ncmF5LWRhcms6ICMzNDNhNDA7IC0tcHJpbWFyeTogIzA5NzFmZTsgLS1zZWNvbmRhcnk6ICMzNjRhNjM7IC0tc3VjY2VzczogIzFlZTBhYzsgLS1pbmZvOiAjMDljMmRlOyAtLXdhcm5pbmc6ICNmNGJkMGU7IC0tZGFuZ2VyOiAjZTg1MzQ3OyAtLWRhcms6ICMxYzJiNDY7IC0tZ3JheTogIzgwOTFhNzsgLS1saWdodDogI2U1ZTlmMjsgLS1saWdodGVyOiAjZjVmNmZhOyAtLWJyZWFrcG9pbnQteHM6IDA7IC0tYnJlYWtwb2ludC1zbTogNTc2cHg7IC0tYnJlYWtwb2ludC1tZDogNzY4cHg7IC0tYnJlYWtwb2ludC1sZzogOTkycHg7IC0tYnJlYWtwb2ludC14bDogMTIwMHB4OyAtLWJyZWFrcG9pbnQteHhsOiAxNTQwcHg7IC0tZm9udC1mYW1pbHktc2Fucy1zZXJpZjogKFJvYm90bywgc2Fucy1zZXJpZiksICJIZWx2ZXRpY2EgTmV1ZSIsIEFyaWFsLCAiTm90byBTYW5zIiwgc2Fucy1zZXJpZjsgLS1mb250LWZhbWlseS1tb25vc3BhY2U6IFNGTW9uby1SZWd1bGFyLCBNZW5sbywgTW9uYWNvLCBDb25zb2xhcywgIkxpYmVyYXRpb24gTW9ubyIsICJDb3VyaWVyIE5ldyIsIG1vbm9zcGFjZTsgfQoKKiwgKjo6YmVmb3JlLCAqOjphZnRlciB7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH0KCmh0bWwgeyBmb250LWZhbWlseTogc2Fucy1zZXJpZjsgbGluZS1oZWlnaHQ6IDEuMTU7IC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogMTAwJTsgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiByZ2JhKDAsIDAsIDAsIDApOyB9CgphcnRpY2xlLCBhc2lkZSwgZmlnY2FwdGlvbiwgZmlndXJlLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLCBtYWluLCBuYXYsIHNlY3Rpb24geyBkaXNwbGF5OiBibG9jazsgfQoKYm9keSB7IG1hcmdpbjogMDsgZm9udC1mYW1pbHk6IFJvYm90bywgc2Fucy1zZXJpZiwgIkhlbHZldGljYSBOZXVlIiwgQXJpYWwsICJOb3RvIFNhbnMiLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDAuODc1cmVtOyBmb250LXdlaWdodDogNDAwOyBsaW5lLWhlaWdodDogMS42NTsgY29sb3I6ICM1MjY0ODQ7IHRleHQtYWxpZ246IGxlZnQ7IGJhY2tncm91bmQtY29sb3I6ICNmNWY2ZmE7IH0KClt0YWJpbmRleD0iLTEiXTpmb2N1czpub3QoOmZvY3VzLXZpc2libGUpIHsgb3V0bGluZTogMCAhaW1wb3J0YW50OyB9CgpociB7IGJveC1zaXppbmc6IGNvbnRlbnQtYm94OyBoZWlnaHQ6IDA7IG92ZXJmbG93OiB2aXNpYmxlOyB9CgpoMSwgaDIsIGgzLCBoNCwgaDUsIGg2IHsgbWFyZ2luLXRvcDogMDsgbWFyZ2luLWJvdHRvbTogMC41cmVtOyB9CgpwIHsgbWFyZ2luLXRvcDogMDsgbWFyZ2luLWJvdHRvbTogMXJlbTsgfQoKYWJiclt0aXRsZV0sIGFiYnJbZGF0YS1vcmlnaW5hbC10aXRsZV0geyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgZG90dGVkOyBjdXJzb3I6IGhlbHA7IGJvcmRlci1ib3R0b206IDA7IHRleHQtZGVjb3JhdGlvbi1za2lwLWluazogbm9uZTsgfQoKYWRkcmVzcyB7IG1hcmdpbi1ib3R0b206IDFyZW07IGZvbnQtc3R5bGU6IG5vcm1hbDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IH0KCm9sLCB1bCwgZGwgeyBtYXJnaW4tdG9wOiAwOyBtYXJnaW4tYm90dG9tOiAxcmVtOyB9CgpvbCBvbCwgdWwgdWwsIG9sIHVsLCB1bCBvbCB7IG1hcmdpbi1ib3R0b206IDA7IH0KCmR0IHsgZm9udC13ZWlnaHQ6IDcwMDsgfQoKZGQgeyBtYXJnaW4tYm90dG9tOiAuNXJlbTsgbWFyZ2luLWxlZnQ6IDA7IH0KCmJsb2NrcXVvdGUgeyBtYXJnaW46IDAgMCAxcmVtOyB9CgpiLCBzdHJvbmcgeyBmb250LXdlaWdodDogYm9sZGVyOyB9CgpzbWFsbCB7IGZvbnQtc2l6ZTogODAlOyB9CgpzdWIsIHN1cCB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgZm9udC1zaXplOiA3NSU7IGxpbmUtaGVpZ2h0OiAwOyB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IH0KCnN1YiB7IGJvdHRvbTogLS4yNWVtOyB9CgpzdXAgeyB0b3A6IC0uNWVtOyB9CgphIHsgY29sb3I6ICMzMTQwZmM7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH0KCmE6aG92ZXIgeyBjb2xvcjogcmVkOyBvcGFjaXR5OiAwLjg7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9CgphOm5vdChbaHJlZl0pIHsgY29sb3I6IGluaGVyaXQ7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfQoKYTpub3QoW2hyZWZdKTpob3ZlciB7IGNvbG9yOiBpbmhlcml0OyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH0KCnByZSwgY29kZSwga2JkLCBzYW1wIHsgZm9udC1mYW1pbHk6IFNGTW9uby1SZWd1bGFyLCBNZW5sbywgTW9uYWNvLCBDb25zb2xhcywgIkxpYmVyYXRpb24gTW9ubyIsICJDb3VyaWVyIE5ldyIsIG1vbm9zcGFjZTsgZm9udC1zaXplOiAxZW07IH0KCnByZSB7IG1hcmdpbi10b3A6IDA7IG1hcmdpbi1ib3R0b206IDFyZW07IG92ZXJmbG93OiBhdXRvOyAtbXMtb3ZlcmZsb3ctc3R5bGU6IHNjcm9sbGJhcjsgfQoKZmlndXJlIHsgbWFyZ2luOiAwIDAgMXJlbTsgfQoKaW1nIHsgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgYm9yZGVyLXN0eWxlOiBub25lOyB9CgpzdmcgeyBvdmVyZmxvdzogaGlkZGVuOyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9Cgp0YWJsZSB7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7IH0KCmNhcHRpb24geyBwYWRkaW5nLXRvcDogMC41cmVtOyBwYWRkaW5nLWJvdHRvbTogMC41cmVtOyBjb2xvcjogIzgwOTRhZTsgdGV4dC1hbGlnbjogbGVmdDsgY2FwdGlvbi1zaWRlOiBib3R0b207IH0KCnRoIHsgdGV4dC1hbGlnbjogaW5oZXJpdDsgfQoKbGFiZWwgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IG1hcmdpbi1ib3R0b206IDE2cHg7IH0KCmJ1dHRvbiB7IGJvcmRlci1yYWRpdXM6IDJweDsgfQoKYnV0dG9uOmZvY3VzIHsgb3V0bGluZTogMnB4IGRvdHRlZDsgb3V0bGluZTogNXB4IGF1dG8gLXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yOyB9CgppbnB1dCwgYnV0dG9uLCBzZWxlY3QsIG9wdGdyb3VwLCB0ZXh0YXJlYSB7IG1hcmdpbjogMDsgZm9udC1mYW1pbHk6IGluaGVyaXQ7IGZvbnQtc2l6ZTogaW5oZXJpdDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IH0KCmJ1dHRvbiwgaW5wdXQgeyBvdmVyZmxvdzogdmlzaWJsZTsgfQoKYnV0dG9uLCBzZWxlY3QgeyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgfQoKW3JvbGU9ImJ1dHRvbiJdIHsgY3Vyc29yOiBwb2ludGVyOyB9CgpzZWxlY3QgeyB3b3JkLXdyYXA6IG5vcm1hbDsgfQoKYnV0dG9uLCBbdHlwZT0iYnV0dG9uIl0sIFt0eXBlPSJyZXNldCJdLCBbdHlwZT0ic3VibWl0Il0geyAtd2Via2l0LWFwcGVhcmFuY2U6IGJ1dHRvbjsgfQoKYnV0dG9uOm5vdCg6ZGlzYWJsZWQpLCBbdHlwZT0iYnV0dG9uIl06bm90KDpkaXNhYmxlZCksIFt0eXBlPSJyZXNldCJdOm5vdCg6ZGlzYWJsZWQpLCBbdHlwZT0ic3VibWl0Il06bm90KDpkaXNhYmxlZCkgeyBjdXJzb3I6IHBvaW50ZXI7IH0KCmJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciwgW3R5cGU9ImJ1dHRvbiJdOjotbW96LWZvY3VzLWlubmVyLCBbdHlwZT0icmVzZXQiXTo6LW1vei1mb2N1cy1pbm5lciwgW3R5cGU9InN1Ym1pdCJdOjotbW96LWZvY3VzLWlubmVyIHsgcGFkZGluZzogMDsgYm9yZGVyLXN0eWxlOiBub25lOyB9CgppbnB1dFt0eXBlPSJyYWRpbyJdLCBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsgYm94LXNpemluZzogYm9yZGVyLWJveDsgcGFkZGluZzogMDsgfQoKdGV4dGFyZWEgeyBvdmVyZmxvdzogYXV0bzsgcmVzaXplOiB2ZXJ0aWNhbDsgfQoKZmllbGRzZXQgeyBtaW4td2lkdGg6IDA7IHBhZGRpbmc6IDA7IG1hcmdpbjogMDsgYm9yZGVyOiAwOyB9CgpsZWdlbmQgeyBkaXNwbGF5OiBibG9jazsgd2lkdGg6IDEwMCU7IG1heC13aWR0aDogMTAwJTsgcGFkZGluZzogMDsgbWFyZ2luLWJvdHRvbTogLjVyZW07IGZvbnQtc2l6ZTogMS41cmVtOyBsaW5lLWhlaWdodDogaW5oZXJpdDsgY29sb3I6IGluaGVyaXQ7IHdoaXRlLXNwYWNlOiBub3JtYWw7IH0KCnByb2dyZXNzIHsgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOyB9CgpbdHlwZT0ibnVtYmVyIl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sIFt0eXBlPSJudW1iZXIiXTo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7IGhlaWdodDogYXV0bzsgfQoKW3R5cGU9InNlYXJjaCJdIHsgb3V0bGluZS1vZmZzZXQ6IC0ycHg7IC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsgfQoKW3R5cGU9InNlYXJjaCJdOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uIHsgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOyB9Cgo6Oi13ZWJraXQtZmlsZS11cGxvYWQtYnV0dG9uIHsgZm9udDogaW5oZXJpdDsgLXdlYmtpdC1hcHBlYXJhbmNlOiBidXR0b247IH0KCm91dHB1dCB7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgfQoKc3VtbWFyeSB7IGRpc3BsYXk6IGxpc3QtaXRlbTsgY3Vyc29yOiBwb2ludGVyOyB9Cgp0ZW1wbGF0ZSB7IGRpc3BsYXk6IG5vbmU7IH0KCltoaWRkZW5dIHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9CgpoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCAuaDEsIC5oMiwgLmgzLCAuaDQsIC5oNSwgLmg2IHsgbWFyZ2luLWJvdHRvbTogMC41cmVtOyBmb250LWZhbWlseTogTnVuaXRvLCBzYW5zLXNlcmlmOyBmb250LXdlaWdodDogNzAwOyBsaW5lLWhlaWdodDogMS4xOyBjb2xvcjogIzM2NGE2MzsgfQoKaDEsIC5oMSB7IGZvbnQtc2l6ZTogMnJlbTsgfQoKaDIsIC5oMiB7IGZvbnQtc2l6ZTogMS43NXJlbTsgfQoKaDMsIC5oMyB7IGZvbnQtc2l6ZTogMS41cmVtOyB9CgpoNCwgLmg0IHsgZm9udC1zaXplOiAxLjI1cmVtOyB9CgpoNSwgLmg1IHsgZm9udC1zaXplOiAxLjE1cmVtOyB9CgpoNiwgLmg2IHsgZm9udC1zaXplOiAxcmVtOyB9CgoubGVhZCB7IGZvbnQtc2l6ZTogMS4wMDYyNXJlbTsgZm9udC13ZWlnaHQ6IDQwMDsgfQoKLmRpc3BsYXktMSB7IGZvbnQtc2l6ZTogNnJlbTsgZm9udC13ZWlnaHQ6IDMwMDsgbGluZS1oZWlnaHQ6IDEuMTsgfQoKLmRpc3BsYXktMiB7IGZvbnQtc2l6ZTogNS41cmVtOyBmb250LXdlaWdodDogMzAwOyBsaW5lLWhlaWdodDogMS4xOyB9CgouZGlzcGxheS0zIHsgZm9udC1zaXplOiA0LjVyZW07IGZvbnQtd2VpZ2h0OiAzMDA7IGxpbmUtaGVpZ2h0OiAxLjE7IH0KCi5kaXNwbGF5LTQgeyBmb250LXNpemU6IDMuNXJlbTsgZm9udC13ZWlnaHQ6IDMwMDsgbGluZS1oZWlnaHQ6IDEuMTsgfQoKaHIgeyBtYXJnaW4tdG9wOiAxcmVtOyBtYXJnaW4tYm90dG9tOiAxcmVtOyBib3JkZXI6IDA7IGJvcmRlci10b3A6IDFweCBzb2xpZCAjYjdjMmQwOyB9CgpzbWFsbCwgLnNtYWxsIHsgZm9udC1zaXplOiA4NSU7IGZvbnQtd2VpZ2h0OiA0MDA7IH0KCm1hcmssIC5tYXJrIHsgcGFkZGluZzogMC4yZW07IGJhY2tncm91bmQtY29sb3I6ICNmY2Y4ZTM7IH0KCi5saXN0LXVuc3R5bGVkIHsgcGFkZGluZy1sZWZ0OiAwOyBsaXN0LXN0eWxlOiBub25lOyB9CgoubGlzdC1pbmxpbmUgeyBwYWRkaW5nLWxlZnQ6IDA7IGxpc3Qtc3R5bGU6IG5vbmU7IH0KCi5saXN0LWlubGluZS1pdGVtIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB9CgoubGlzdC1pbmxpbmUtaXRlbTpub3QoOmxhc3QtY2hpbGQpIHsgbWFyZ2luLXJpZ2h0OiAwLjVyZW07IH0KCi5pbml0aWFsaXNtIHsgZm9udC1zaXplOiA5MCU7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH0KCi5ibG9ja3F1b3RlIHsgbWFyZ2luLWJvdHRvbTogMXJlbTsgZm9udC1zaXplOiAxLjA5Mzc1cmVtOyB9CgouYmxvY2txdW90ZS1mb290ZXIgeyBkaXNwbGF5OiBibG9jazsgZm9udC1zaXplOiA4NSU7IGNvbG9yOiAjYjZjNmUzOyB9CgouYmxvY2txdW90ZS1mb290ZXI6OmJlZm9yZSB7IGNvbnRlbnQ6ICJcMjAxNFwwMEEwIjsgfQoKLmltZy1mbHVpZCB7IG1heC13aWR0aDogMTAwJTsgaGVpZ2h0OiBhdXRvOyB9CgouaW1nLXRodW1ibmFpbCB7IHBhZGRpbmc6IDAuMjVyZW07IGJhY2tncm91bmQtY29sb3I6ICNmNWY2ZmE7IGJvcmRlcjogMXB4IHNvbGlkICNkZWUyZTY7IGJvcmRlci1yYWRpdXM6IDRweDsgbWF4LXdpZHRoOiAxMDAlOyBoZWlnaHQ6IGF1dG87IH0KCi5maWd1cmUgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH0KCi5maWd1cmUtaW1nIHsgbWFyZ2luLWJvdHRvbTogMC41cmVtOyBsaW5lLWhlaWdodDogMTsgfQoKLmZpZ3VyZS1jYXB0aW9uIHsgZm9udC1zaXplOiA5MCU7IGNvbG9yOiAjNmM3NTdkOyB9Cgpjb2RlIHsgZm9udC1zaXplOiA4Ny41JTsgY29sb3I6ICNmZjYzYTU7IHdvcmQtd3JhcDogYnJlYWstd29yZDsgfQoKYSA+IGNvZGUgeyBjb2xvcjogaW5oZXJpdDsgfQoKa2JkIHsgcGFkZGluZzogMC4ycmVtIDAuNHJlbTsgZm9udC1zaXplOiA4Ny41JTsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICMyMTI1Mjk7IGJvcmRlci1yYWRpdXM6IDNweDsgfQoKa2JkIGtiZCB7IHBhZGRpbmc6IDA7IGZvbnQtc2l6ZTogMTAwJTsgZm9udC13ZWlnaHQ6IDcwMDsgfQoKcHJlIHsgZGlzcGxheTogYmxvY2s7IGZvbnQtc2l6ZTogODcuNSU7IGNvbG9yOiAjMjEyNTI5OyB9CgpwcmUgY29kZSB7IGZvbnQtc2l6ZTogaW5oZXJpdDsgY29sb3I6IGluaGVyaXQ7IHdvcmQtYnJlYWs6IG5vcm1hbDsgfQoKLnByZS1zY3JvbGxhYmxlIHsgbWF4LWhlaWdodDogMzQwcHg7IG92ZXJmbG93LXk6IHNjcm9sbDsgfQoKLmNvbnRhaW5lciwgLmNvbnRhaW5lci1mbHVpZCwgLmNvbnRhaW5lci1zbSwgLmNvbnRhaW5lci1tZCwgLmNvbnRhaW5lci1sZywgLmNvbnRhaW5lci14bCwgLmNvbnRhaW5lci14eGwgeyB3aWR0aDogMTAwJTsgcGFkZGluZy1yaWdodDogMTRweDsgcGFkZGluZy1sZWZ0OiAxNHB4OyBtYXJnaW4tcmlnaHQ6IGF1dG87IG1hcmdpbi1sZWZ0OiBhdXRvOyB9CgpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsgLmNvbnRhaW5lciwgLmNvbnRhaW5lci1zbSB7IG1heC13aWR0aDogNTQwcHg7IH0gfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7IC5jb250YWluZXIsIC5jb250YWluZXItc20sIC5jb250YWluZXItbWQgeyBtYXgtd2lkdGg6IDcyMHB4OyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgeyAuY29udGFpbmVyLCAuY29udGFpbmVyLXNtLCAuY29udGFpbmVyLW1kLCAuY29udGFpbmVyLWxnIHsgbWF4LXdpZHRoOiA5NjBweDsgfSB9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7IC5jb250YWluZXIsIC5jb250YWluZXItc20sIC5jb250YWluZXItbWQsIC5jb250YWluZXItbGcsIC5jb250YWluZXIteGwgeyBtYXgtd2lkdGg6IDExNDBweDsgfSB9CgpAbWVkaWEgKG1pbi13aWR0aDogMTU0MHB4KSB7IC5jb250YWluZXIsIC5jb250YWluZXItc20sIC5jb250YWluZXItbWQsIC5jb250YWluZXItbGcsIC5jb250YWluZXIteGwsIC5jb250YWluZXIteHhsIHsgbWF4LXdpZHRoOiAxNDQwcHg7IH0gfQoKLnJvdyB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtd3JhcDogd3JhcDsgbWFyZ2luLXJpZ2h0OiAtMTRweDsgbWFyZ2luLWxlZnQ6IC0xNHB4OyB9Cgoubm8tZ3V0dGVycyB7IG1hcmdpbi1yaWdodDogMDsgbWFyZ2luLWxlZnQ6IDA7IH0KCi5uby1ndXR0ZXJzID4gLmNvbCwgLm5vLWd1dHRlcnMgPiBbY2xhc3MqPSJjb2wtIl0geyBwYWRkaW5nLXJpZ2h0OiAwOyBwYWRkaW5nLWxlZnQ6IDA7IH0KCi5jb2wtMSwgLmNvbC0yLCAuY29sLTMsIC5jb2wtNCwgLmNvbC01LCAuY29sLTYsIC5jb2wtNywgLmNvbC04LCAuY29sLTksIC5jb2wtMTAsIC5jb2wtMTEsIC5jb2wtMTIsIC5jb2wsIC5jb2wtYXV0bywgLmNvbC1zbS0xLCAuY29sLXNtLTIsIC5jb2wtc20tMywgLmNvbC1zbS00LCAuY29sLXNtLTUsIC5jb2wtc20tNiwgLmNvbC1zbS03LCAuY29sLXNtLTgsIC5jb2wtc20tOSwgLmNvbC1zbS0xMCwgLmNvbC1zbS0xMSwgLmNvbC1zbS0xMiwgLmNvbC1zbSwgLmNvbC1zbS1hdXRvLCAuY29sLW1kLTEsIC5jb2wtbWQtMiwgLmNvbC1tZC0zLCAuY29sLW1kLTQsIC5jb2wtbWQtNSwgLmNvbC1tZC02LCAuY29sLW1kLTcsIC5jb2wtbWQtOCwgLmNvbC1tZC05LCAuY29sLW1kLTEwLCAuY29sLW1kLTExLCAuY29sLW1kLTEyLCAuY29sLW1kLCAuY29sLW1kLWF1dG8sIC5jb2wtbGctMSwgLmNvbC1sZy0yLCAuY29sLWxnLTMsIC5jb2wtbGctNCwgLmNvbC1sZy01LCAuY29sLWxnLTYsIC5jb2wtbGctNywgLmNvbC1sZy04LCAuY29sLWxnLTksIC5jb2wtbGctMTAsIC5jb2wtbGctMTEsIC5jb2wtbGctMTIsIC5jb2wtbGcsIC5jb2wtbGctYXV0bywgLmNvbC14bC0xLCAuY29sLXhsLTIsIC5jb2wteGwtMywgLmNvbC14bC00LCAuY29sLXhsLTUsIC5jb2wteGwtNiwgLmNvbC14bC03LCAuY29sLXhsLTgsIC5jb2wteGwtOSwgLmNvbC14bC0xMCwgLmNvbC14bC0xMSwgLmNvbC14bC0xMiwgLmNvbC14bCwgLmNvbC14bC1hdXRvLCAuY29sLXh4bC0xLCAuY29sLXh4bC0yLCAuY29sLXh4bC0zLCAuY29sLXh4bC00LCAuY29sLXh4bC01LCAuY29sLXh4bC02LCAuY29sLXh4bC03LCAuY29sLXh4bC04LCAuY29sLXh4bC05LCAuY29sLXh4bC0xMCwgLmNvbC14eGwtMTEsIC5jb2wteHhsLTEyLCAuY29sLXh4bCwgLmNvbC14eGwtYXV0byB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDEwMCU7IHBhZGRpbmctcmlnaHQ6IDE0cHg7IHBhZGRpbmctbGVmdDogMTRweDsgfQoKLmNvbCB7IGZsZXgtYmFzaXM6IDA7IGZsZXgtZ3JvdzogMTsgbWF4LXdpZHRoOiAxMDAlOyB9Cgoucm93LWNvbHMtMSA+ICogeyBmbGV4OiAwIDAgMTAwJTsgbWF4LXdpZHRoOiAxMDAlOyB9Cgoucm93LWNvbHMtMiA+ICogeyBmbGV4OiAwIDAgNTAlOyBtYXgtd2lkdGg6IDUwJTsgfQoKLnJvdy1jb2xzLTMgPiAqIHsgZmxleDogMCAwIDMzLjMzMzMzJTsgbWF4LXdpZHRoOiAzMy4zMzMzMyU7IH0KCi5yb3ctY29scy00ID4gKiB7IGZsZXg6IDAgMCAyNSU7IG1heC13aWR0aDogMjUlOyB9Cgoucm93LWNvbHMtNSA+ICogeyBmbGV4OiAwIDAgMjAlOyBtYXgtd2lkdGg6IDIwJTsgfQoKLnJvdy1jb2xzLTYgPiAqIHsgZmxleDogMCAwIDE2LjY2NjY3JTsgbWF4LXdpZHRoOiAxNi42NjY2NyU7IH0KCi5jb2wtYXV0byB7IGZsZXg6IDAgMCBhdXRvOyB3aWR0aDogYXV0bzsgbWF4LXdpZHRoOiAxMDAlOyB9CgouY29sLTEgeyBmbGV4OiAwIDAgOC4zMzMzMyU7IG1heC13aWR0aDogOC4zMzMzMyU7IH0KCi5jb2wtMiB7IGZsZXg6IDAgMCAxNi42NjY2NyU7IG1heC13aWR0aDogMTYuNjY2NjclOyB9CgouY29sLTMgeyBmbGV4OiAwIDAgMjUlOyBtYXgtd2lkdGg6IDI1JTsgfQoKLmNvbC00IHsgZmxleDogMCAwIDMzLjMzMzMzJTsgbWF4LXdpZHRoOiAzMy4zMzMzMyU7IH0KCi5jb2wtNSB7IGZsZXg6IDAgMCA0MS42NjY2NyU7IG1heC13aWR0aDogNDEuNjY2NjclOyB9CgouY29sLTYgeyBmbGV4OiAwIDAgNTAlOyBtYXgtd2lkdGg6IDUwJTsgfQoKLmNvbC03IHsgZmxleDogMCAwIDU4LjMzMzMzJTsgbWF4LXdpZHRoOiA1OC4zMzMzMyU7IH0KCi5jb2wtOCB7IGZsZXg6IDAgMCA2Ni42NjY2NyU7IG1heC13aWR0aDogNjYuNjY2NjclOyB9CgouY29sLTkgeyBmbGV4OiAwIDAgNzUlOyBtYXgtd2lkdGg6IDc1JTsgfQoKLmNvbC0xMCB7IGZsZXg6IDAgMCA4My4zMzMzMyU7IG1heC13aWR0aDogODMuMzMzMzMlOyB9CgouY29sLTExIHsgZmxleDogMCAwIDkxLjY2NjY3JTsgbWF4LXdpZHRoOiA5MS42NjY2NyU7IH0KCi5jb2wtMTIgeyBmbGV4OiAwIDAgMTAwJTsgbWF4LXdpZHRoOiAxMDAlOyB9Cgoub3JkZXItZmlyc3QgeyBvcmRlcjogLTE7IH0KCi5vcmRlci1sYXN0IHsgb3JkZXI6IDEzOyB9Cgoub3JkZXItMCB7IG9yZGVyOiAwOyB9Cgoub3JkZXItMSB7IG9yZGVyOiAxOyB9Cgoub3JkZXItMiB7IG9yZGVyOiAyOyB9Cgoub3JkZXItMyB7IG9yZGVyOiAzOyB9Cgoub3JkZXItNCB7IG9yZGVyOiA0OyB9Cgoub3JkZXItNSB7IG9yZGVyOiA1OyB9Cgoub3JkZXItNiB7IG9yZGVyOiA2OyB9Cgoub3JkZXItNyB7IG9yZGVyOiA3OyB9Cgoub3JkZXItOCB7IG9yZGVyOiA4OyB9Cgoub3JkZXItOSB7IG9yZGVyOiA5OyB9Cgoub3JkZXItMTAgeyBvcmRlcjogMTA7IH0KCi5vcmRlci0xMSB7IG9yZGVyOiAxMTsgfQoKLm9yZGVyLTEyIHsgb3JkZXI6IDEyOyB9Cgoub2Zmc2V0LTEgeyBtYXJnaW4tbGVmdDogOC4zMzMzMyU7IH0KCi5vZmZzZXQtMiB7IG1hcmdpbi1sZWZ0OiAxNi42NjY2NyU7IH0KCi5vZmZzZXQtMyB7IG1hcmdpbi1sZWZ0OiAyNSU7IH0KCi5vZmZzZXQtNCB7IG1hcmdpbi1sZWZ0OiAzMy4zMzMzMyU7IH0KCi5vZmZzZXQtNSB7IG1hcmdpbi1sZWZ0OiA0MS42NjY2NyU7IH0KCi5vZmZzZXQtNiB7IG1hcmdpbi1sZWZ0OiA1MCU7IH0KCi5vZmZzZXQtNyB7IG1hcmdpbi1sZWZ0OiA1OC4zMzMzMyU7IH0KCi5vZmZzZXQtOCB7IG1hcmdpbi1sZWZ0OiA2Ni42NjY2NyU7IH0KCi5vZmZzZXQtOSB7IG1hcmdpbi1sZWZ0OiA3NSU7IH0KCi5vZmZzZXQtMTAgeyBtYXJnaW4tbGVmdDogODMuMzMzMzMlOyB9Cgoub2Zmc2V0LTExIHsgbWFyZ2luLWxlZnQ6IDkxLjY2NjY3JTsgfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7IC5jb2wtc20geyBmbGV4LWJhc2lzOiAwOyBmbGV4LWdyb3c6IDE7IG1heC13aWR0aDogMTAwJTsgfQogIC5yb3ctY29scy1zbS0xID4gKiB7IGZsZXg6IDAgMCAxMDAlOyBtYXgtd2lkdGg6IDEwMCU7IH0KICAucm93LWNvbHMtc20tMiA+ICogeyBmbGV4OiAwIDAgNTAlOyBtYXgtd2lkdGg6IDUwJTsgfQogIC5yb3ctY29scy1zbS0zID4gKiB7IGZsZXg6IDAgMCAzMy4zMzMzMyU7IG1heC13aWR0aDogMzMuMzMzMzMlOyB9CiAgLnJvdy1jb2xzLXNtLTQgPiAqIHsgZmxleDogMCAwIDI1JTsgbWF4LXdpZHRoOiAyNSU7IH0KICAucm93LWNvbHMtc20tNSA+ICogeyBmbGV4OiAwIDAgMjAlOyBtYXgtd2lkdGg6IDIwJTsgfQogIC5yb3ctY29scy1zbS02ID4gKiB7IGZsZXg6IDAgMCAxNi42NjY2NyU7IG1heC13aWR0aDogMTYuNjY2NjclOyB9CiAgLmNvbC1zbS1hdXRvIHsgZmxleDogMCAwIGF1dG87IHdpZHRoOiBhdXRvOyBtYXgtd2lkdGg6IDEwMCU7IH0KICAuY29sLXNtLTEgeyBmbGV4OiAwIDAgOC4zMzMzMyU7IG1heC13aWR0aDogOC4zMzMzMyU7IH0KICAuY29sLXNtLTIgeyBmbGV4OiAwIDAgMTYuNjY2NjclOyBtYXgtd2lkdGg6IDE2LjY2NjY3JTsgfQogIC5jb2wtc20tMyB7IGZsZXg6IDAgMCAyNSU7IG1heC13aWR0aDogMjUlOyB9CiAgLmNvbC1zbS00IHsgZmxleDogMCAwIDMzLjMzMzMzJTsgbWF4LXdpZHRoOiAzMy4zMzMzMyU7IH0KICAuY29sLXNtLTUgeyBmbGV4OiAwIDAgNDEuNjY2NjclOyBtYXgtd2lkdGg6IDQxLjY2NjY3JTsgfQogIC5jb2wtc20tNiB7IGZsZXg6IDAgMCA1MCU7IG1heC13aWR0aDogNTAlOyB9CiAgLmNvbC1zbS03IHsgZmxleDogMCAwIDU4LjMzMzMzJTsgbWF4LXdpZHRoOiA1OC4zMzMzMyU7IH0KICAuY29sLXNtLTggeyBmbGV4OiAwIDAgNjYuNjY2NjclOyBtYXgtd2lkdGg6IDY2LjY2NjY3JTsgfQogIC5jb2wtc20tOSB7IGZsZXg6IDAgMCA3NSU7IG1heC13aWR0aDogNzUlOyB9CiAgLmNvbC1zbS0xMCB7IGZsZXg6IDAgMCA4My4zMzMzMyU7IG1heC13aWR0aDogODMuMzMzMzMlOyB9CiAgLmNvbC1zbS0xMSB7IGZsZXg6IDAgMCA5MS42NjY2NyU7IG1heC13aWR0aDogOTEuNjY2NjclOyB9CiAgLmNvbC1zbS0xMiB7IGZsZXg6IDAgMCAxMDAlOyBtYXgtd2lkdGg6IDEwMCU7IH0KICAub3JkZXItc20tZmlyc3QgeyBvcmRlcjogLTE7IH0KICAub3JkZXItc20tbGFzdCB7IG9yZGVyOiAxMzsgfQogIC5vcmRlci1zbS0wIHsgb3JkZXI6IDA7IH0KICAub3JkZXItc20tMSB7IG9yZGVyOiAxOyB9CiAgLm9yZGVyLXNtLTIgeyBvcmRlcjogMjsgfQogIC5vcmRlci1zbS0zIHsgb3JkZXI6IDM7IH0KICAub3JkZXItc20tNCB7IG9yZGVyOiA0OyB9CiAgLm9yZGVyLXNtLTUgeyBvcmRlcjogNTsgfQogIC5vcmRlci1zbS02IHsgb3JkZXI6IDY7IH0KICAub3JkZXItc20tNyB7IG9yZGVyOiA3OyB9CiAgLm9yZGVyLXNtLTggeyBvcmRlcjogODsgfQogIC5vcmRlci1zbS05IHsgb3JkZXI6IDk7IH0KICAub3JkZXItc20tMTAgeyBvcmRlcjogMTA7IH0KICAub3JkZXItc20tMTEgeyBvcmRlcjogMTE7IH0KICAub3JkZXItc20tMTIgeyBvcmRlcjogMTI7IH0KICAub2Zmc2V0LXNtLTAgeyBtYXJnaW4tbGVmdDogMDsgfQogIC5vZmZzZXQtc20tMSB7IG1hcmdpbi1sZWZ0OiA4LjMzMzMzJTsgfQogIC5vZmZzZXQtc20tMiB7IG1hcmdpbi1sZWZ0OiAxNi42NjY2NyU7IH0KICAub2Zmc2V0LXNtLTMgeyBtYXJnaW4tbGVmdDogMjUlOyB9CiAgLm9mZnNldC1zbS00IHsgbWFyZ2luLWxlZnQ6IDMzLjMzMzMzJTsgfQogIC5vZmZzZXQtc20tNSB7IG1hcmdpbi1sZWZ0OiA0MS42NjY2NyU7IH0KICAub2Zmc2V0LXNtLTYgeyBtYXJnaW4tbGVmdDogNTAlOyB9CiAgLm9mZnNldC1zbS03IHsgbWFyZ2luLWxlZnQ6IDU4LjMzMzMzJTsgfQogIC5vZmZzZXQtc20tOCB7IG1hcmdpbi1sZWZ0OiA2Ni42NjY2NyU7IH0KICAub2Zmc2V0LXNtLTkgeyBtYXJnaW4tbGVmdDogNzUlOyB9CiAgLm9mZnNldC1zbS0xMCB7IG1hcmdpbi1sZWZ0OiA4My4zMzMzMyU7IH0KICAub2Zmc2V0LXNtLTExIHsgbWFyZ2luLWxlZnQ6IDkxLjY2NjY3JTsgfSB9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsgLmNvbC1tZCB7IGZsZXgtYmFzaXM6IDA7IGZsZXgtZ3JvdzogMTsgbWF4LXdpZHRoOiAxMDAlOyB9CiAgLnJvdy1jb2xzLW1kLTEgPiAqIHsgZmxleDogMCAwIDEwMCU7IG1heC13aWR0aDogMTAwJTsgfQogIC5yb3ctY29scy1tZC0yID4gKiB7IGZsZXg6IDAgMCA1MCU7IG1heC13aWR0aDogNTAlOyB9CiAgLnJvdy1jb2xzLW1kLTMgPiAqIHsgZmxleDogMCAwIDMzLjMzMzMzJTsgbWF4LXdpZHRoOiAzMy4zMzMzMyU7IH0KICAucm93LWNvbHMtbWQtNCA+ICogeyBmbGV4OiAwIDAgMjUlOyBtYXgtd2lkdGg6IDI1JTsgfQogIC5yb3ctY29scy1tZC01ID4gKiB7IGZsZXg6IDAgMCAyMCU7IG1heC13aWR0aDogMjAlOyB9CiAgLnJvdy1jb2xzLW1kLTYgPiAqIHsgZmxleDogMCAwIDE2LjY2NjY3JTsgbWF4LXdpZHRoOiAxNi42NjY2NyU7IH0KICAuY29sLW1kLWF1dG8geyBmbGV4OiAwIDAgYXV0bzsgd2lkdGg6IGF1dG87IG1heC13aWR0aDogMTAwJTsgfQogIC5jb2wtbWQtMSB7IGZsZXg6IDAgMCA4LjMzMzMzJTsgbWF4LXdpZHRoOiA4LjMzMzMzJTsgfQogIC5jb2wtbWQtMiB7IGZsZXg6IDAgMCAxNi42NjY2NyU7IG1heC13aWR0aDogMTYuNjY2NjclOyB9CiAgLmNvbC1tZC0zIHsgZmxleDogMCAwIDI1JTsgbWF4LXdpZHRoOiAyNSU7IH0KICAuY29sLW1kLTQgeyBmbGV4OiAwIDAgMzMuMzMzMzMlOyBtYXgtd2lkdGg6IDMzLjMzMzMzJTsgfQogIC5jb2wtbWQtNSB7IGZsZXg6IDAgMCA0MS42NjY2NyU7IG1heC13aWR0aDogNDEuNjY2NjclOyB9CiAgLmNvbC1tZC02IHsgZmxleDogMCAwIDUwJTsgbWF4LXdpZHRoOiA1MCU7IH0KICAuY29sLW1kLTcgeyBmbGV4OiAwIDAgNTguMzMzMzMlOyBtYXgtd2lkdGg6IDU4LjMzMzMzJTsgfQogIC5jb2wtbWQtOCB7IGZsZXg6IDAgMCA2Ni42NjY2NyU7IG1heC13aWR0aDogNjYuNjY2NjclOyB9CiAgLmNvbC1tZC05IHsgZmxleDogMCAwIDc1JTsgbWF4LXdpZHRoOiA3NSU7IH0KICAuY29sLW1kLTEwIHsgZmxleDogMCAwIDgzLjMzMzMzJTsgbWF4LXdpZHRoOiA4My4zMzMzMyU7IH0KICAuY29sLW1kLTExIHsgZmxleDogMCAwIDkxLjY2NjY3JTsgbWF4LXdpZHRoOiA5MS42NjY2NyU7IH0KICAuY29sLW1kLTEyIHsgZmxleDogMCAwIDEwMCU7IG1heC13aWR0aDogMTAwJTsgfQogIC5vcmRlci1tZC1maXJzdCB7IG9yZGVyOiAtMTsgfQogIC5vcmRlci1tZC1sYXN0IHsgb3JkZXI6IDEzOyB9CiAgLm9yZGVyLW1kLTAgeyBvcmRlcjogMDsgfQogIC5vcmRlci1tZC0xIHsgb3JkZXI6IDE7IH0KICAub3JkZXItbWQtMiB7IG9yZGVyOiAyOyB9CiAgLm9yZGVyLW1kLTMgeyBvcmRlcjogMzsgfQogIC5vcmRlci1tZC00IHsgb3JkZXI6IDQ7IH0KICAub3JkZXItbWQtNSB7IG9yZGVyOiA1OyB9CiAgLm9yZGVyLW1kLTYgeyBvcmRlcjogNjsgfQogIC5vcmRlci1tZC03IHsgb3JkZXI6IDc7IH0KICAub3JkZXItbWQtOCB7IG9yZGVyOiA4OyB9CiAgLm9yZGVyLW1kLTkgeyBvcmRlcjogOTsgfQogIC5vcmRlci1tZC0xMCB7IG9yZGVyOiAxMDsgfQogIC5vcmRlci1tZC0xMSB7IG9yZGVyOiAxMTsgfQogIC5vcmRlci1tZC0xMiB7IG9yZGVyOiAxMjsgfQogIC5vZmZzZXQtbWQtMCB7IG1hcmdpbi1sZWZ0OiAwOyB9CiAgLm9mZnNldC1tZC0xIHsgbWFyZ2luLWxlZnQ6IDguMzMzMzMlOyB9CiAgLm9mZnNldC1tZC0yIHsgbWFyZ2luLWxlZnQ6IDE2LjY2NjY3JTsgfQogIC5vZmZzZXQtbWQtMyB7IG1hcmdpbi1sZWZ0OiAyNSU7IH0KICAub2Zmc2V0LW1kLTQgeyBtYXJnaW4tbGVmdDogMzMuMzMzMzMlOyB9CiAgLm9mZnNldC1tZC01IHsgbWFyZ2luLWxlZnQ6IDQxLjY2NjY3JTsgfQogIC5vZmZzZXQtbWQtNiB7IG1hcmdpbi1sZWZ0OiA1MCU7IH0KICAub2Zmc2V0LW1kLTcgeyBtYXJnaW4tbGVmdDogNTguMzMzMzMlOyB9CiAgLm9mZnNldC1tZC04IHsgbWFyZ2luLWxlZnQ6IDY2LjY2NjY3JTsgfQogIC5vZmZzZXQtbWQtOSB7IG1hcmdpbi1sZWZ0OiA3NSU7IH0KICAub2Zmc2V0LW1kLTEwIHsgbWFyZ2luLWxlZnQ6IDgzLjMzMzMzJTsgfQogIC5vZmZzZXQtbWQtMTEgeyBtYXJnaW4tbGVmdDogOTEuNjY2NjclOyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgeyAuY29sLWxnIHsgZmxleC1iYXNpczogMDsgZmxleC1ncm93OiAxOyBtYXgtd2lkdGg6IDEwMCU7IH0KICAucm93LWNvbHMtbGctMSA+ICogeyBmbGV4OiAwIDAgMTAwJTsgbWF4LXdpZHRoOiAxMDAlOyB9CiAgLnJvdy1jb2xzLWxnLTIgPiAqIHsgZmxleDogMCAwIDUwJTsgbWF4LXdpZHRoOiA1MCU7IH0KICAucm93LWNvbHMtbGctMyA+ICogeyBmbGV4OiAwIDAgMzMuMzMzMzMlOyBtYXgtd2lkdGg6IDMzLjMzMzMzJTsgfQogIC5yb3ctY29scy1sZy00ID4gKiB7IGZsZXg6IDAgMCAyNSU7IG1heC13aWR0aDogMjUlOyB9CiAgLnJvdy1jb2xzLWxnLTUgPiAqIHsgZmxleDogMCAwIDIwJTsgbWF4LXdpZHRoOiAyMCU7IH0KICAucm93LWNvbHMtbGctNiA+ICogeyBmbGV4OiAwIDAgMTYuNjY2NjclOyBtYXgtd2lkdGg6IDE2LjY2NjY3JTsgfQogIC5jb2wtbGctYXV0byB7IGZsZXg6IDAgMCBhdXRvOyB3aWR0aDogYXV0bzsgbWF4LXdpZHRoOiAxMDAlOyB9CiAgLmNvbC1sZy0xIHsgZmxleDogMCAwIDguMzMzMzMlOyBtYXgtd2lkdGg6IDguMzMzMzMlOyB9CiAgLmNvbC1sZy0yIHsgZmxleDogMCAwIDE2LjY2NjY3JTsgbWF4LXdpZHRoOiAxNi42NjY2NyU7IH0KICAuY29sLWxnLTMgeyBmbGV4OiAwIDAgMjUlOyBtYXgtd2lkdGg6IDI1JTsgfQogIC5jb2wtbGctNCB7IGZsZXg6IDAgMCAzMy4zMzMzMyU7IG1heC13aWR0aDogMzMuMzMzMzMlOyB9CiAgLmNvbC1sZy01IHsgZmxleDogMCAwIDQxLjY2NjY3JTsgbWF4LXdpZHRoOiA0MS42NjY2NyU7IH0KICAuY29sLWxnLTYgeyBmbGV4OiAwIDAgNTAlOyBtYXgtd2lkdGg6IDUwJTsgfQogIC5jb2wtbGctNyB7IGZsZXg6IDAgMCA1OC4zMzMzMyU7IG1heC13aWR0aDogNTguMzMzMzMlOyB9CiAgLmNvbC1sZy04IHsgZmxleDogMCAwIDY2LjY2NjY3JTsgbWF4LXdpZHRoOiA2Ni42NjY2NyU7IH0KICAuY29sLWxnLTkgeyBmbGV4OiAwIDAgNzUlOyBtYXgtd2lkdGg6IDc1JTsgfQogIC5jb2wtbGctMTAgeyBmbGV4OiAwIDAgODMuMzMzMzMlOyBtYXgtd2lkdGg6IDgzLjMzMzMzJTsgfQogIC5jb2wtbGctMTEgeyBmbGV4OiAwIDAgOTEuNjY2NjclOyBtYXgtd2lkdGg6IDkxLjY2NjY3JTsgfQogIC5jb2wtbGctMTIgeyBmbGV4OiAwIDAgMTAwJTsgbWF4LXdpZHRoOiAxMDAlOyB9CiAgLm9yZGVyLWxnLWZpcnN0IHsgb3JkZXI6IC0xOyB9CiAgLm9yZGVyLWxnLWxhc3QgeyBvcmRlcjogMTM7IH0KICAub3JkZXItbGctMCB7IG9yZGVyOiAwOyB9CiAgLm9yZGVyLWxnLTEgeyBvcmRlcjogMTsgfQogIC5vcmRlci1sZy0yIHsgb3JkZXI6IDI7IH0KICAub3JkZXItbGctMyB7IG9yZGVyOiAzOyB9CiAgLm9yZGVyLWxnLTQgeyBvcmRlcjogNDsgfQogIC5vcmRlci1sZy01IHsgb3JkZXI6IDU7IH0KICAub3JkZXItbGctNiB7IG9yZGVyOiA2OyB9CiAgLm9yZGVyLWxnLTcgeyBvcmRlcjogNzsgfQogIC5vcmRlci1sZy04IHsgb3JkZXI6IDg7IH0KICAub3JkZXItbGctOSB7IG9yZGVyOiA5OyB9CiAgLm9yZGVyLWxnLTEwIHsgb3JkZXI6IDEwOyB9CiAgLm9yZGVyLWxnLTExIHsgb3JkZXI6IDExOyB9CiAgLm9yZGVyLWxnLTEyIHsgb3JkZXI6IDEyOyB9CiAgLm9mZnNldC1sZy0wIHsgbWFyZ2luLWxlZnQ6IDA7IH0KICAub2Zmc2V0LWxnLTEgeyBtYXJnaW4tbGVmdDogOC4zMzMzMyU7IH0KICAub2Zmc2V0LWxnLTIgeyBtYXJnaW4tbGVmdDogMTYuNjY2NjclOyB9CiAgLm9mZnNldC1sZy0zIHsgbWFyZ2luLWxlZnQ6IDI1JTsgfQogIC5vZmZzZXQtbGctNCB7IG1hcmdpbi1sZWZ0OiAzMy4zMzMzMyU7IH0KICAub2Zmc2V0LWxnLTUgeyBtYXJnaW4tbGVmdDogNDEuNjY2NjclOyB9CiAgLm9mZnNldC1sZy02IHsgbWFyZ2luLWxlZnQ6IDUwJTsgfQogIC5vZmZzZXQtbGctNyB7IG1hcmdpbi1sZWZ0OiA1OC4zMzMzMyU7IH0KICAub2Zmc2V0LWxnLTggeyBtYXJnaW4tbGVmdDogNjYuNjY2NjclOyB9CiAgLm9mZnNldC1sZy05IHsgbWFyZ2luLWxlZnQ6IDc1JTsgfQogIC5vZmZzZXQtbGctMTAgeyBtYXJnaW4tbGVmdDogODMuMzMzMzMlOyB9CiAgLm9mZnNldC1sZy0xMSB7IG1hcmdpbi1sZWZ0OiA5MS42NjY2NyU7IH0gfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgeyAuY29sLXhsIHsgZmxleC1iYXNpczogMDsgZmxleC1ncm93OiAxOyBtYXgtd2lkdGg6IDEwMCU7IH0KICAucm93LWNvbHMteGwtMSA+ICogeyBmbGV4OiAwIDAgMTAwJTsgbWF4LXdpZHRoOiAxMDAlOyB9CiAgLnJvdy1jb2xzLXhsLTIgPiAqIHsgZmxleDogMCAwIDUwJTsgbWF4LXdpZHRoOiA1MCU7IH0KICAucm93LWNvbHMteGwtMyA+ICogeyBmbGV4OiAwIDAgMzMuMzMzMzMlOyBtYXgtd2lkdGg6IDMzLjMzMzMzJTsgfQogIC5yb3ctY29scy14bC00ID4gKiB7IGZsZXg6IDAgMCAyNSU7IG1heC13aWR0aDogMjUlOyB9CiAgLnJvdy1jb2xzLXhsLTUgPiAqIHsgZmxleDogMCAwIDIwJTsgbWF4LXdpZHRoOiAyMCU7IH0KICAucm93LWNvbHMteGwtNiA+ICogeyBmbGV4OiAwIDAgMTYuNjY2NjclOyBtYXgtd2lkdGg6IDE2LjY2NjY3JTsgfQogIC5jb2wteGwtYXV0byB7IGZsZXg6IDAgMCBhdXRvOyB3aWR0aDogYXV0bzsgbWF4LXdpZHRoOiAxMDAlOyB9CiAgLmNvbC14bC0xIHsgZmxleDogMCAwIDguMzMzMzMlOyBtYXgtd2lkdGg6IDguMzMzMzMlOyB9CiAgLmNvbC14bC0yIHsgZmxleDogMCAwIDE2LjY2NjY3JTsgbWF4LXdpZHRoOiAxNi42NjY2NyU7IH0KICAuY29sLXhsLTMgeyBmbGV4OiAwIDAgMjUlOyBtYXgtd2lkdGg6IDI1JTsgfQogIC5jb2wteGwtNCB7IGZsZXg6IDAgMCAzMy4zMzMzMyU7IG1heC13aWR0aDogMzMuMzMzMzMlOyB9CiAgLmNvbC14bC01IHsgZmxleDogMCAwIDQxLjY2NjY3JTsgbWF4LXdpZHRoOiA0MS42NjY2NyU7IH0KICAuY29sLXhsLTYgeyBmbGV4OiAwIDAgNTAlOyBtYXgtd2lkdGg6IDUwJTsgfQogIC5jb2wteGwtNyB7IGZsZXg6IDAgMCA1OC4zMzMzMyU7IG1heC13aWR0aDogNTguMzMzMzMlOyB9CiAgLmNvbC14bC04IHsgZmxleDogMCAwIDY2LjY2NjY3JTsgbWF4LXdpZHRoOiA2Ni42NjY2NyU7IH0KICAuY29sLXhsLTkgeyBmbGV4OiAwIDAgNzUlOyBtYXgtd2lkdGg6IDc1JTsgfQogIC5jb2wteGwtMTAgeyBmbGV4OiAwIDAgODMuMzMzMzMlOyBtYXgtd2lkdGg6IDgzLjMzMzMzJTsgfQogIC5jb2wteGwtMTEgeyBmbGV4OiAwIDAgOTEuNjY2NjclOyBtYXgtd2lkdGg6IDkxLjY2NjY3JTsgfQogIC5jb2wteGwtMTIgeyBmbGV4OiAwIDAgMTAwJTsgbWF4LXdpZHRoOiAxMDAlOyB9CiAgLm9yZGVyLXhsLWZpcnN0IHsgb3JkZXI6IC0xOyB9CiAgLm9yZGVyLXhsLWxhc3QgeyBvcmRlcjogMTM7IH0KICAub3JkZXIteGwtMCB7IG9yZGVyOiAwOyB9CiAgLm9yZGVyLXhsLTEgeyBvcmRlcjogMTsgfQogIC5vcmRlci14bC0yIHsgb3JkZXI6IDI7IH0KICAub3JkZXIteGwtMyB7IG9yZGVyOiAzOyB9CiAgLm9yZGVyLXhsLTQgeyBvcmRlcjogNDsgfQogIC5vcmRlci14bC01IHsgb3JkZXI6IDU7IH0KICAub3JkZXIteGwtNiB7IG9yZGVyOiA2OyB9CiAgLm9yZGVyLXhsLTcgeyBvcmRlcjogNzsgfQogIC5vcmRlci14bC04IHsgb3JkZXI6IDg7IH0KICAub3JkZXIteGwtOSB7IG9yZGVyOiA5OyB9CiAgLm9yZGVyLXhsLTEwIHsgb3JkZXI6IDEwOyB9CiAgLm9yZGVyLXhsLTExIHsgb3JkZXI6IDExOyB9CiAgLm9yZGVyLXhsLTEyIHsgb3JkZXI6IDEyOyB9CiAgLm9mZnNldC14bC0wIHsgbWFyZ2luLWxlZnQ6IDA7IH0KICAub2Zmc2V0LXhsLTEgeyBtYXJnaW4tbGVmdDogOC4zMzMzMyU7IH0KICAub2Zmc2V0LXhsLTIgeyBtYXJnaW4tbGVmdDogMTYuNjY2NjclOyB9CiAgLm9mZnNldC14bC0zIHsgbWFyZ2luLWxlZnQ6IDI1JTsgfQogIC5vZmZzZXQteGwtNCB7IG1hcmdpbi1sZWZ0OiAzMy4zMzMzMyU7IH0KICAub2Zmc2V0LXhsLTUgeyBtYXJnaW4tbGVmdDogNDEuNjY2NjclOyB9CiAgLm9mZnNldC14bC02IHsgbWFyZ2luLWxlZnQ6IDUwJTsgfQogIC5vZmZzZXQteGwtNyB7IG1hcmdpbi1sZWZ0OiA1OC4zMzMzMyU7IH0KICAub2Zmc2V0LXhsLTggeyBtYXJnaW4tbGVmdDogNjYuNjY2NjclOyB9CiAgLm9mZnNldC14bC05IHsgbWFyZ2luLWxlZnQ6IDc1JTsgfQogIC5vZmZzZXQteGwtMTAgeyBtYXJnaW4tbGVmdDogODMuMzMzMzMlOyB9CiAgLm9mZnNldC14bC0xMSB7IG1hcmdpbi1sZWZ0OiA5MS42NjY2NyU7IH0gfQoKQG1lZGlhIChtaW4td2lkdGg6IDE1NDBweCkgeyAuY29sLXh4bCB7IGZsZXgtYmFzaXM6IDA7IGZsZXgtZ3JvdzogMTsgbWF4LXdpZHRoOiAxMDAlOyB9CiAgLnJvdy1jb2xzLXh4bC0xID4gKiB7IGZsZXg6IDAgMCAxMDAlOyBtYXgtd2lkdGg6IDEwMCU7IH0KICAucm93LWNvbHMteHhsLTIgPiAqIHsgZmxleDogMCAwIDUwJTsgbWF4LXdpZHRoOiA1MCU7IH0KICAucm93LWNvbHMteHhsLTMgPiAqIHsgZmxleDogMCAwIDMzLjMzMzMzJTsgbWF4LXdpZHRoOiAzMy4zMzMzMyU7IH0KICAucm93LWNvbHMteHhsLTQgPiAqIHsgZmxleDogMCAwIDI1JTsgbWF4LXdpZHRoOiAyNSU7IH0KICAucm93LWNvbHMteHhsLTUgPiAqIHsgZmxleDogMCAwIDIwJTsgbWF4LXdpZHRoOiAyMCU7IH0KICAucm93LWNvbHMteHhsLTYgPiAqIHsgZmxleDogMCAwIDE2LjY2NjY3JTsgbWF4LXdpZHRoOiAxNi42NjY2NyU7IH0KICAuY29sLXh4bC1hdXRvIHsgZmxleDogMCAwIGF1dG87IHdpZHRoOiBhdXRvOyBtYXgtd2lkdGg6IDEwMCU7IH0KICAuY29sLXh4bC0xIHsgZmxleDogMCAwIDguMzMzMzMlOyBtYXgtd2lkdGg6IDguMzMzMzMlOyB9CiAgLmNvbC14eGwtMiB7IGZsZXg6IDAgMCAxNi42NjY2NyU7IG1heC13aWR0aDogMTYuNjY2NjclOyB9CiAgLmNvbC14eGwtMyB7IGZsZXg6IDAgMCAyNSU7IG1heC13aWR0aDogMjUlOyB9CiAgLmNvbC14eGwtNCB7IGZsZXg6IDAgMCAzMy4zMzMzMyU7IG1heC13aWR0aDogMzMuMzMzMzMlOyB9CiAgLmNvbC14eGwtNSB7IGZsZXg6IDAgMCA0MS42NjY2NyU7IG1heC13aWR0aDogNDEuNjY2NjclOyB9CiAgLmNvbC14eGwtNiB7IGZsZXg6IDAgMCA1MCU7IG1heC13aWR0aDogNTAlOyB9CiAgLmNvbC14eGwtNyB7IGZsZXg6IDAgMCA1OC4zMzMzMyU7IG1heC13aWR0aDogNTguMzMzMzMlOyB9CiAgLmNvbC14eGwtOCB7IGZsZXg6IDAgMCA2Ni42NjY2NyU7IG1heC13aWR0aDogNjYuNjY2NjclOyB9CiAgLmNvbC14eGwtOSB7IGZsZXg6IDAgMCA3NSU7IG1heC13aWR0aDogNzUlOyB9CiAgLmNvbC14eGwtMTAgeyBmbGV4OiAwIDAgODMuMzMzMzMlOyBtYXgtd2lkdGg6IDgzLjMzMzMzJTsgfQogIC5jb2wteHhsLTExIHsgZmxleDogMCAwIDkxLjY2NjY3JTsgbWF4LXdpZHRoOiA5MS42NjY2NyU7IH0KICAuY29sLXh4bC0xMiB7IGZsZXg6IDAgMCAxMDAlOyBtYXgtd2lkdGg6IDEwMCU7IH0KICAub3JkZXIteHhsLWZpcnN0IHsgb3JkZXI6IC0xOyB9CiAgLm9yZGVyLXh4bC1sYXN0IHsgb3JkZXI6IDEzOyB9CiAgLm9yZGVyLXh4bC0wIHsgb3JkZXI6IDA7IH0KICAub3JkZXIteHhsLTEgeyBvcmRlcjogMTsgfQogIC5vcmRlci14eGwtMiB7IG9yZGVyOiAyOyB9CiAgLm9yZGVyLXh4bC0zIHsgb3JkZXI6IDM7IH0KICAub3JkZXIteHhsLTQgeyBvcmRlcjogNDsgfQogIC5vcmRlci14eGwtNSB7IG9yZGVyOiA1OyB9CiAgLm9yZGVyLXh4bC02IHsgb3JkZXI6IDY7IH0KICAub3JkZXIteHhsLTcgeyBvcmRlcjogNzsgfQogIC5vcmRlci14eGwtOCB7IG9yZGVyOiA4OyB9CiAgLm9yZGVyLXh4bC05IHsgb3JkZXI6IDk7IH0KICAub3JkZXIteHhsLTEwIHsgb3JkZXI6IDEwOyB9CiAgLm9yZGVyLXh4bC0xMSB7IG9yZGVyOiAxMTsgfQogIC5vcmRlci14eGwtMTIgeyBvcmRlcjogMTI7IH0KICAub2Zmc2V0LXh4bC0wIHsgbWFyZ2luLWxlZnQ6IDA7IH0KICAub2Zmc2V0LXh4bC0xIHsgbWFyZ2luLWxlZnQ6IDguMzMzMzMlOyB9CiAgLm9mZnNldC14eGwtMiB7IG1hcmdpbi1sZWZ0OiAxNi42NjY2NyU7IH0KICAub2Zmc2V0LXh4bC0zIHsgbWFyZ2luLWxlZnQ6IDI1JTsgfQogIC5vZmZzZXQteHhsLTQgeyBtYXJnaW4tbGVmdDogMzMuMzMzMzMlOyB9CiAgLm9mZnNldC14eGwtNSB7IG1hcmdpbi1sZWZ0OiA0MS42NjY2NyU7IH0KICAub2Zmc2V0LXh4bC02IHsgbWFyZ2luLWxlZnQ6IDUwJTsgfQogIC5vZmZzZXQteHhsLTcgeyBtYXJnaW4tbGVmdDogNTguMzMzMzMlOyB9CiAgLm9mZnNldC14eGwtOCB7IG1hcmdpbi1sZWZ0OiA2Ni42NjY2NyU7IH0KICAub2Zmc2V0LXh4bC05IHsgbWFyZ2luLWxlZnQ6IDc1JTsgfQogIC5vZmZzZXQteHhsLTEwIHsgbWFyZ2luLWxlZnQ6IDgzLjMzMzMzJTsgfQogIC5vZmZzZXQteHhsLTExIHsgbWFyZ2luLWxlZnQ6IDkxLjY2NjY3JTsgfSB9CgoudGFibGUgeyB3aWR0aDogMTAwJTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgY29sb3I6ICM1MjY0ODQ7IH0KCi50YWJsZSB0aCwgLnRhYmxlIHRkIHsgcGFkZGluZzogMC41cmVtOyB2ZXJ0aWNhbC1hbGlnbjogdG9wOyBib3JkZXItdG9wOiAxcHggc29saWQgI2RiZGZlYTsgfQoKLnRhYmxlIHRoZWFkIHRoIHsgdmVydGljYWwtYWxpZ246IGJvdHRvbTsgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICNkYmRmZWE7IH0KCi50YWJsZSB0Ym9keSArIHRib2R5IHsgYm9yZGVyLXRvcDogMnB4IHNvbGlkICNkYmRmZWE7IH0KCi50YWJsZS1zbSB0aCwgLnRhYmxlLXNtIHRkIHsgcGFkZGluZzogMC4yNXJlbTsgfQoKLnRhYmxlLWJvcmRlcmVkIHsgYm9yZGVyOiAxcHggc29saWQgI2RiZGZlYTsgfQoKLnRhYmxlLWJvcmRlcmVkIHRoLCAudGFibGUtYm9yZGVyZWQgdGQgeyBib3JkZXI6IDFweCBzb2xpZCAjZGJkZmVhOyB9CgoudGFibGUtYm9yZGVyZWQgdGhlYWQgdGgsIC50YWJsZS1ib3JkZXJlZCB0aGVhZCB0ZCB7IGJvcmRlci1ib3R0b20td2lkdGg6IDJweDsgfQoKLnRhYmxlLWJvcmRlcmxlc3MgdGgsIC50YWJsZS1ib3JkZXJsZXNzIHRkLCAudGFibGUtYm9yZGVybGVzcyB0aGVhZCB0aCwgLnRhYmxlLWJvcmRlcmxlc3MgdGJvZHkgKyB0Ym9keSB7IGJvcmRlcjogMDsgfQoKLnRhYmxlLXN0cmlwZWQgdGJvZHkgdHI6bnRoLW9mLXR5cGUob2RkKSB7IGJhY2tncm91bmQtY29sb3I6ICNmNWY2ZmE7IH0KCi50YWJsZS1ob3ZlciB0Ym9keSB0cjpob3ZlciB7IGNvbG9yOiAjNTI2NDg0OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNmZhOyB9CgoudGFibGUtcHJpbWFyeSwgLnRhYmxlLXByaW1hcnkgPiB0aCwgLnRhYmxlLXByaW1hcnkgPiB0ZCB7IGJhY2tncm91bmQtY29sb3I6ICNiYWQ3ZmY7IH0KCi50YWJsZS1wcmltYXJ5IHRoLCAudGFibGUtcHJpbWFyeSB0ZCwgLnRhYmxlLXByaW1hcnkgdGhlYWQgdGgsIC50YWJsZS1wcmltYXJ5IHRib2R5ICsgdGJvZHkgeyBib3JkZXItY29sb3I6ICM3ZmI1ZmU7IH0KCi50YWJsZS1ob3ZlciAudGFibGUtcHJpbWFyeTpob3ZlciB7IGJhY2tncm91bmQtY29sb3I6ICNhMWM4ZmY7IH0KCi50YWJsZS1ob3ZlciAudGFibGUtcHJpbWFyeTpob3ZlciA+IHRkLCAudGFibGUtaG92ZXIgLnRhYmxlLXByaW1hcnk6aG92ZXIgPiB0aCB7IGJhY2tncm91bmQtY29sb3I6ICNhMWM4ZmY7IH0KCi50YWJsZS1zZWNvbmRhcnksIC50YWJsZS1zZWNvbmRhcnkgPiB0aCwgLnRhYmxlLXNlY29uZGFyeSA+IHRkIHsgYmFja2dyb3VuZC1jb2xvcjogI2M3Y2NkMzsgfQoKLnRhYmxlLXNlY29uZGFyeSB0aCwgLnRhYmxlLXNlY29uZGFyeSB0ZCwgLnRhYmxlLXNlY29uZGFyeSB0aGVhZCB0aCwgLnRhYmxlLXNlY29uZGFyeSB0Ym9keSArIHRib2R5IHsgYm9yZGVyLWNvbG9yOiAjOTZhMWFlOyB9CgoudGFibGUtaG92ZXIgLnRhYmxlLXNlY29uZGFyeTpob3ZlciB7IGJhY2tncm91bmQtY29sb3I6ICNiOWJmYzg7IH0KCi50YWJsZS1ob3ZlciAudGFibGUtc2Vjb25kYXJ5OmhvdmVyID4gdGQsIC50YWJsZS1ob3ZlciAudGFibGUtc2Vjb25kYXJ5OmhvdmVyID4gdGggeyBiYWNrZ3JvdW5kLWNvbG9yOiAjYjliZmM4OyB9CgoudGFibGUtc3VjY2VzcywgLnRhYmxlLXN1Y2Nlc3MgPiB0aCwgLnRhYmxlLXN1Y2Nlc3MgPiB0ZCB7IGJhY2tncm91bmQtY29sb3I6ICNjMGY2ZTg7IH0KCi50YWJsZS1zdWNjZXNzIHRoLCAudGFibGUtc3VjY2VzcyB0ZCwgLnRhYmxlLXN1Y2Nlc3MgdGhlYWQgdGgsIC50YWJsZS1zdWNjZXNzIHRib2R5ICsgdGJvZHkgeyBib3JkZXItY29sb3I6ICM4YWVmZDQ7IH0KCi50YWJsZS1ob3ZlciAudGFibGUtc3VjY2Vzczpob3ZlciB7IGJhY2tncm91bmQtY29sb3I6ICNhYWYzZTA7IH0KCi50YWJsZS1ob3ZlciAudGFibGUtc3VjY2Vzczpob3ZlciA+IHRkLCAudGFibGUtaG92ZXIgLnRhYmxlLXN1Y2Nlc3M6aG92ZXIgPiB0aCB7IGJhY2tncm91bmQtY29sb3I6ICNhYWYzZTA7IH0KCi50YWJsZS1pbmZvLCAudGFibGUtaW5mbyA+IHRoLCAudGFibGUtaW5mbyA+IHRkIHsgYmFja2dyb3VuZC1jb2xvcjogI2JhZWVmNjsgfQoKLnRhYmxlLWluZm8gdGgsIC50YWJsZS1pbmZvIHRkLCAudGFibGUtaW5mbyB0aGVhZCB0aCwgLnRhYmxlLWluZm8gdGJvZHkgKyB0Ym9keSB7IGJvcmRlci1jb2xvcjogIzdmZGZlZTsgfQoKLnRhYmxlLWhvdmVyIC50YWJsZS1pbmZvOmhvdmVyIHsgYmFja2dyb3VuZC1jb2xvcjogI2EzZThmMzsgfQoKLnRhYmxlLWhvdmVyIC50YWJsZS1pbmZvOmhvdmVyID4gdGQsIC50YWJsZS1ob3ZlciAudGFibGUtaW5mbzpob3ZlciA+IHRoIHsgYmFja2dyb3VuZC1jb2xvcjogI2EzZThmMzsgfQoKLnRhYmxlLXdhcm5pbmcsIC50YWJsZS13YXJuaW5nID4gdGgsIC50YWJsZS13YXJuaW5nID4gdGQgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmNlZGJjOyB9CgoudGFibGUtd2FybmluZyB0aCwgLnRhYmxlLXdhcm5pbmcgdGQsIC50YWJsZS13YXJuaW5nIHRoZWFkIHRoLCAudGFibGUtd2FybmluZyB0Ym9keSArIHRib2R5IHsgYm9yZGVyLWNvbG9yOiAjZjlkZDgyOyB9CgoudGFibGUtaG92ZXIgLnRhYmxlLXdhcm5pbmc6aG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmJlNmE0OyB9CgoudGFibGUtaG92ZXIgLnRhYmxlLXdhcm5pbmc6aG92ZXIgPiB0ZCwgLnRhYmxlLWhvdmVyIC50YWJsZS13YXJuaW5nOmhvdmVyID4gdGggeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmJlNmE0OyB9CgoudGFibGUtZGFuZ2VyLCAudGFibGUtZGFuZ2VyID4gdGgsIC50YWJsZS1kYW5nZXIgPiB0ZCB7IGJhY2tncm91bmQtY29sb3I6ICNmOWNmY2I7IH0KCi50YWJsZS1kYW5nZXIgdGgsIC50YWJsZS1kYW5nZXIgdGQsIC50YWJsZS1kYW5nZXIgdGhlYWQgdGgsIC50YWJsZS1kYW5nZXIgdGJvZHkgKyB0Ym9keSB7IGJvcmRlci1jb2xvcjogI2YzYTY5ZjsgfQoKLnRhYmxlLWhvdmVyIC50YWJsZS1kYW5nZXI6aG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjZiYWI0OyB9CgoudGFibGUtaG92ZXIgLnRhYmxlLWRhbmdlcjpob3ZlciA+IHRkLCAudGFibGUtaG92ZXIgLnRhYmxlLWRhbmdlcjpob3ZlciA+IHRoIHsgYmFja2dyb3VuZC1jb2xvcjogI2Y2YmFiNDsgfQoKLnRhYmxlLWRhcmssIC50YWJsZS1kYXJrID4gdGgsIC50YWJsZS1kYXJrID4gdGQgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjYmZjNGNiOyB9CgoudGFibGUtZGFyayB0aCwgLnRhYmxlLWRhcmsgdGQsIC50YWJsZS1kYXJrIHRoZWFkIHRoLCAudGFibGUtZGFyayB0Ym9keSArIHRib2R5IHsgYm9yZGVyLWNvbG9yOiAjODk5MTlmOyB9CgoudGFibGUtaG92ZXIgLnRhYmxlLWRhcms6aG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjYjFiN2MwOyB9CgoudGFibGUtaG92ZXIgLnRhYmxlLWRhcms6aG92ZXIgPiB0ZCwgLnRhYmxlLWhvdmVyIC50YWJsZS1kYXJrOmhvdmVyID4gdGggeyBiYWNrZ3JvdW5kLWNvbG9yOiAjYjFiN2MwOyB9CgoudGFibGUtZ3JheSwgLnRhYmxlLWdyYXkgPiB0aCwgLnRhYmxlLWdyYXkgPiB0ZCB7IGJhY2tncm91bmQtY29sb3I6ICNkYmUwZTY7IH0KCi50YWJsZS1ncmF5IHRoLCAudGFibGUtZ3JheSB0ZCwgLnRhYmxlLWdyYXkgdGhlYWQgdGgsIC50YWJsZS1ncmF5IHRib2R5ICsgdGJvZHkgeyBib3JkZXItY29sb3I6ICNiZGM2ZDE7IH0KCi50YWJsZS1ob3ZlciAudGFibGUtZ3JheTpob3ZlciB7IGJhY2tncm91bmQtY29sb3I6ICNjY2QzZGM7IH0KCi50YWJsZS1ob3ZlciAudGFibGUtZ3JheTpob3ZlciA+IHRkLCAudGFibGUtaG92ZXIgLnRhYmxlLWdyYXk6aG92ZXIgPiB0aCB7IGJhY2tncm91bmQtY29sb3I6ICNjY2QzZGM7IH0KCi50YWJsZS1saWdodCwgLnRhYmxlLWxpZ2h0ID4gdGgsIC50YWJsZS1saWdodCA+IHRkIHsgYmFja2dyb3VuZC1jb2xvcjogI2Y4ZjlmYjsgfQoKLnRhYmxlLWxpZ2h0IHRoLCAudGFibGUtbGlnaHQgdGQsIC50YWJsZS1saWdodCB0aGVhZCB0aCwgLnRhYmxlLWxpZ2h0IHRib2R5ICsgdGJvZHkgeyBib3JkZXItY29sb3I6ICNmMWY0Zjg7IH0KCi50YWJsZS1ob3ZlciAudGFibGUtbGlnaHQ6aG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZThlYmYyOyB9CgoudGFibGUtaG92ZXIgLnRhYmxlLWxpZ2h0OmhvdmVyID4gdGQsIC50YWJsZS1ob3ZlciAudGFibGUtbGlnaHQ6aG92ZXIgPiB0aCB7IGJhY2tncm91bmQtY29sb3I6ICNlOGViZjI7IH0KCi50YWJsZS1saWdodGVyLCAudGFibGUtbGlnaHRlciA+IHRoLCAudGFibGUtbGlnaHRlciA+IHRkIHsgYmFja2dyb3VuZC1jb2xvcjogI2ZjZmNmZTsgfQoKLnRhYmxlLWxpZ2h0ZXIgdGgsIC50YWJsZS1saWdodGVyIHRkLCAudGFibGUtbGlnaHRlciB0aGVhZCB0aCwgLnRhYmxlLWxpZ2h0ZXIgdGJvZHkgKyB0Ym9keSB7IGJvcmRlci1jb2xvcjogI2ZhZmFmYzsgfQoKLnRhYmxlLWhvdmVyIC50YWJsZS1saWdodGVyOmhvdmVyIHsgYmFja2dyb3VuZC1jb2xvcjogI2U5ZTlmODsgfQoKLnRhYmxlLWhvdmVyIC50YWJsZS1saWdodGVyOmhvdmVyID4gdGQsIC50YWJsZS1ob3ZlciAudGFibGUtbGlnaHRlcjpob3ZlciA+IHRoIHsgYmFja2dyb3VuZC1jb2xvcjogI2U5ZTlmODsgfQoKLnRhYmxlLWFjdGl2ZSwgLnRhYmxlLWFjdGl2ZSA+IHRoLCAudGFibGUtYWN0aXZlID4gdGQgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNmZhOyB9CgoudGFibGUtaG92ZXIgLnRhYmxlLWFjdGl2ZTpob3ZlciB7IGJhY2tncm91bmQtY29sb3I6ICNlNGU3ZjI7IH0KCi50YWJsZS1ob3ZlciAudGFibGUtYWN0aXZlOmhvdmVyID4gdGQsIC50YWJsZS1ob3ZlciAudGFibGUtYWN0aXZlOmhvdmVyID4gdGggeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZTRlN2YyOyB9CgoudGFibGUgLnRoZWFkLWRhcmsgdGggeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogIzJiMzc0ODsgYm9yZGVyLWNvbG9yOiAjM2M0ZDYyOyB9CgoudGFibGUgLnRoZWFkLWxpZ2h0IHRoIHsgY29sb3I6ICMzNjRhNjM7IGJhY2tncm91bmQtY29sb3I6ICNmNWY2ZmE7IGJvcmRlci1jb2xvcjogI2RiZGZlYTsgfQoKLnRhYmxlLWRhcmsgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogIzJiMzc0ODsgfQoKLnRhYmxlLWRhcmsgdGgsIC50YWJsZS1kYXJrIHRkLCAudGFibGUtZGFyayB0aGVhZCB0aCB7IGJvcmRlci1jb2xvcjogIzNjNGQ2MjsgfQoKLnRhYmxlLWRhcmsudGFibGUtYm9yZGVyZWQgeyBib3JkZXI6IDA7IH0KCi50YWJsZS1kYXJrLnRhYmxlLXN0cmlwZWQgdGJvZHkgdHI6bnRoLW9mLXR5cGUob2RkKSB7IGJhY2tncm91bmQtY29sb3I6ICMzNDQzNTc7IH0KCi50YWJsZS1kYXJrLnRhYmxlLWhvdmVyIHRib2R5IHRyOmhvdmVyIHsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICMzNDQzNTc7IH0KCkBtZWRpYSAobWF4LXdpZHRoOiA1NzUuOThweCkgeyAudGFibGUtcmVzcG9uc2l2ZS1zbSB7IGRpc3BsYXk6IGJsb2NrOyB3aWR0aDogMTAwJTsgb3ZlcmZsb3cteDogYXV0bzsgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOyB9CiAgLnRhYmxlLXJlc3BvbnNpdmUtc20gPiAudGFibGUtYm9yZGVyZWQgeyBib3JkZXI6IDA7IH0gfQoKQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7IC50YWJsZS1yZXNwb25zaXZlLW1kIHsgZGlzcGxheTogYmxvY2s7IHdpZHRoOiAxMDAlOyBvdmVyZmxvdy14OiBhdXRvOyAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7IH0KICAudGFibGUtcmVzcG9uc2l2ZS1tZCA+IC50YWJsZS1ib3JkZXJlZCB7IGJvcmRlcjogMDsgfSB9CgpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsgLnRhYmxlLXJlc3BvbnNpdmUtbGcgeyBkaXNwbGF5OiBibG9jazsgd2lkdGg6IDEwMCU7IG92ZXJmbG93LXg6IGF1dG87IC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsgfQogIC50YWJsZS1yZXNwb25zaXZlLWxnID4gLnRhYmxlLWJvcmRlcmVkIHsgYm9yZGVyOiAwOyB9IH0KCkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsgLnRhYmxlLXJlc3BvbnNpdmUteGwgeyBkaXNwbGF5OiBibG9jazsgd2lkdGg6IDEwMCU7IG92ZXJmbG93LXg6IGF1dG87IC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsgfQogIC50YWJsZS1yZXNwb25zaXZlLXhsID4gLnRhYmxlLWJvcmRlcmVkIHsgYm9yZGVyOiAwOyB9IH0KCkBtZWRpYSAobWF4LXdpZHRoOiAxNTM5Ljk4cHgpIHsgLnRhYmxlLXJlc3BvbnNpdmUteHhsIHsgZGlzcGxheTogYmxvY2s7IHdpZHRoOiAxMDAlOyBvdmVyZmxvdy14OiBhdXRvOyAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7IH0KICAudGFibGUtcmVzcG9uc2l2ZS14eGwgPiAudGFibGUtYm9yZGVyZWQgeyBib3JkZXI6IDA7IH0gfQoKLnRhYmxlLXJlc3BvbnNpdmUgeyBkaXNwbGF5OiBibG9jazsgd2lkdGg6IDEwMCU7IG92ZXJmbG93LXg6IGF1dG87IC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsgfQoKLnRhYmxlLXJlc3BvbnNpdmUgPiAudGFibGUtYm9yZGVyZWQgeyBib3JkZXI6IDA7IH0KCi5mb3JtLWNvbnRyb2wsIC5kdWFsLWxpc3Rib3ggLmR1YWwtbGlzdGJveF9fc2VhcmNoIHsgZGlzcGxheTogYmxvY2s7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IGNhbGMoMi4xMjVyZW0gKyAycHgpOyBwYWRkaW5nOiAwLjQzNzVyZW0gMXJlbTsgZm9udC1zaXplOiAwLjgxMjVyZW07IGZvbnQtd2VpZ2h0OiA0MDA7IGxpbmUtaGVpZ2h0OiAxLjI1cmVtOyBjb2xvcjogIzNjNGQ2MjsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDsgYm9yZGVyOiAxcHggc29saWQgI2RiZGZlYTsgYm9yZGVyLXJhZGl1czogNHB4OyB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgMC4xNXMgZWFzZS1pbi1vdXQ7IH0KCkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7IC5mb3JtLWNvbnRyb2wsIC5kdWFsLWxpc3Rib3ggLmR1YWwtbGlzdGJveF9fc2VhcmNoIHsgdHJhbnNpdGlvbjogbm9uZTsgfSB9CgouZm9ybS1jb250cm9sOjotbXMtZXhwYW5kLCAuZHVhbC1saXN0Ym94IC5kdWFsLWxpc3Rib3hfX3NlYXJjaDo6LW1zLWV4cGFuZCB7IGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyBib3JkZXI6IDA7IH0KCi5mb3JtLWNvbnRyb2w6LW1vei1mb2N1c3JpbmcsIC5kdWFsLWxpc3Rib3ggLmR1YWwtbGlzdGJveF9fc2VhcmNoOi1tb3otZm9jdXNyaW5nIHsgY29sb3I6IHRyYW5zcGFyZW50OyB0ZXh0LXNoYWRvdzogMCAwIDAgIzNjNGQ2MjsgfQoKLmZvcm0tY29udHJvbDpmb2N1cywgLmR1YWwtbGlzdGJveCAuZHVhbC1saXN0Ym94X19zZWFyY2g6Zm9jdXMgeyBjb2xvcjogIzNjNGQ2MjsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgYm9yZGVyLWNvbG9yOiAjMDk3MWZlOyBvdXRsaW5lOiAwOyBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSg5LCAxMTMsIDI1NCwgMC4xKTsgfQoKLmZvcm0tY29udHJvbDo6cGxhY2Vob2xkZXIsIC5kdWFsLWxpc3Rib3ggLmR1YWwtbGlzdGJveF9fc2VhcmNoOjpwbGFjZWhvbGRlciB7IGNvbG9yOiAjYjZjNmUzOyBvcGFjaXR5OiAxOyB9CgouZm9ybS1jb250cm9sOmRpc2FibGVkLCAuZHVhbC1saXN0Ym94IC5kdWFsLWxpc3Rib3hfX3NlYXJjaDpkaXNhYmxlZCwgLmZvcm0tY29udHJvbFtyZWFkb25seV0sIC5kdWFsLWxpc3Rib3ggLmR1YWwtbGlzdGJveF9fc2VhcmNoW3JlYWRvbmx5XSB7IGJhY2tncm91bmQtY29sb3I6ICNmNWY2ZmE7IG9wYWNpdHk6IDE7IH0KCmlucHV0W3R5cGU9ImRhdGUiXS5mb3JtLWNvbnRyb2wsIC5kdWFsLWxpc3Rib3ggaW5wdXQuZHVhbC1saXN0Ym94X19zZWFyY2hbdHlwZT0iZGF0ZSJdLCBpbnB1dFt0eXBlPSJ0aW1lIl0uZm9ybS1jb250cm9sLCAuZHVhbC1saXN0Ym94IGlucHV0LmR1YWwtbGlzdGJveF9fc2VhcmNoW3R5cGU9InRpbWUiXSwgaW5wdXRbdHlwZT0iZGF0ZXRpbWUtbG9jYWwiXS5mb3JtLWNvbnRyb2wsIC5kdWFsLWxpc3Rib3ggaW5wdXQuZHVhbC1saXN0Ym94X19zZWFyY2hbdHlwZT0iZGF0ZXRpbWUtbG9jYWwiXSwgaW5wdXRbdHlwZT0ibW9udGgiXS5mb3JtLWNvbnRyb2wsIC5kdWFsLWxpc3Rib3ggaW5wdXQuZHVhbC1saXN0Ym94X19zZWFyY2hbdHlwZT0ibW9udGgiXSB7IGFwcGVhcmFuY2U6IG5vbmU7IH0KCnNlbGVjdC5mb3JtLWNvbnRyb2w6Zm9jdXM6Oi1tcy12YWx1ZSwgLmR1YWwtbGlzdGJveCBzZWxlY3QuZHVhbC1saXN0Ym94X19zZWFyY2g6Zm9jdXM6Oi1tcy12YWx1ZSB7IGNvbG9yOiAjM2M0ZDYyOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyB9CgouZm9ybS1jb250cm9sLWZpbGUsIC5mb3JtLWNvbnRyb2wtcmFuZ2UgeyBkaXNwbGF5OiBibG9jazsgd2lkdGg6IDEwMCU7IH0KCi5jb2wtZm9ybS1sYWJlbCB7IHBhZGRpbmctdG9wOiBjYWxjKDAuNDM3NXJlbSArIDFweCk7IHBhZGRpbmctYm90dG9tOiBjYWxjKDAuNDM3NXJlbSArIDFweCk7IG1hcmdpbi1ib3R0b206IDA7IGZvbnQtc2l6ZTogaW5oZXJpdDsgbGluZS1oZWlnaHQ6IDEuMjVyZW07IH0KCi5jb2wtZm9ybS1sYWJlbC1sZyB7IHBhZGRpbmctdG9wOiBjYWxjKDAuNjg3NXJlbSArIDFweCk7IHBhZGRpbmctYm90dG9tOiBjYWxjKDAuNjg3NXJlbSArIDFweCk7IGZvbnQtc2l6ZTogMC45Mzc1cmVtOyBsaW5lLWhlaWdodDogMS4yNXJlbTsgfQoKLmNvbC1mb3JtLWxhYmVsLXNtIHsgcGFkZGluZy10b3A6IGNhbGMoMC4yNXJlbSArIDFweCk7IHBhZGRpbmctYm90dG9tOiBjYWxjKDAuMjVyZW0gKyAxcHgpOyBmb250LXNpemU6IDAuNzVyZW07IGxpbmUtaGVpZ2h0OiAxLjI1cmVtOyB9CgouZm9ybS1jb250cm9sLXBsYWludGV4dCB7IGRpc3BsYXk6IGJsb2NrOyB3aWR0aDogMTAwJTsgcGFkZGluZzogMC40Mzc1cmVtIDA7IG1hcmdpbi1ib3R0b206IDA7IGZvbnQtc2l6ZTogMC44MTI1cmVtOyBsaW5lLWhlaWdodDogMS4yNXJlbTsgY29sb3I6ICMzNjRhNjM7IGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyBib3JkZXI6IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItd2lkdGg6IDFweCAwOyB9CgouZm9ybS1jb250cm9sLXBsYWludGV4dC5mb3JtLWNvbnRyb2wtc20sIC5mb3JtLWNvbnRyb2wtcGxhaW50ZXh0LmZvcm0tY29udHJvbC1sZyB7IHBhZGRpbmctcmlnaHQ6IDA7IHBhZGRpbmctbGVmdDogMDsgfQoKLmZvcm0tY29udHJvbC1zbSB7IGhlaWdodDogY2FsYygxLjc1cmVtICsgMnB4KTsgcGFkZGluZzogMC4yNXJlbSAxcmVtOyBmb250LXNpemU6IDAuNzVyZW07IGxpbmUtaGVpZ2h0OiAxLjI1cmVtOyBib3JkZXItcmFkaXVzOiAzcHg7IH0KCi5mb3JtLWNvbnRyb2wtbGcgeyBoZWlnaHQ6IGNhbGMoMi42MjVyZW0gKyAycHgpOyBwYWRkaW5nOiAwLjY4NzVyZW0gMXJlbTsgZm9udC1zaXplOiAwLjkzNzVyZW07IGxpbmUtaGVpZ2h0OiAxLjI1cmVtOyBib3JkZXItcmFkaXVzOiA1cHg7IH0KCnNlbGVjdC5mb3JtLWNvbnRyb2xbc2l6ZV0sIC5kdWFsLWxpc3Rib3ggc2VsZWN0LmR1YWwtbGlzdGJveF9fc2VhcmNoW3NpemVdLCBzZWxlY3QuZm9ybS1jb250cm9sW211bHRpcGxlXSwgLmR1YWwtbGlzdGJveCBzZWxlY3QuZHVhbC1saXN0Ym94X19zZWFyY2hbbXVsdGlwbGVdIHsgaGVpZ2h0OiBhdXRvOyB9Cgp0ZXh0YXJlYS5mb3JtLWNvbnRyb2wsIC5kdWFsLWxpc3Rib3ggdGV4dGFyZWEuZHVhbC1saXN0Ym94X19zZWFyY2ggeyBoZWlnaHQ6IGF1dG87IH0KCi5mb3JtLWdyb3VwIHsgbWFyZ2luLWJvdHRvbTogMXJlbTsgfQoKLmZvcm0tdGV4dCB7IGRpc3BsYXk6IGJsb2NrOyBtYXJnaW4tdG9wOiAwLjI1cmVtOyB9CgouZm9ybS1yb3cgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LXdyYXA6IHdyYXA7IG1hcmdpbi1yaWdodDogLTVweDsgbWFyZ2luLWxlZnQ6IC01cHg7IH0KCi5mb3JtLXJvdyA+IC5jb2wsIC5mb3JtLXJvdyA+IFtjbGFzcyo9ImNvbC0iXSB7IHBhZGRpbmctcmlnaHQ6IDVweDsgcGFkZGluZy1sZWZ0OiA1cHg7IH0KCi5mb3JtLWNoZWNrIHsgcG9zaXRpb246IHJlbGF0aXZlOyBkaXNwbGF5OiBibG9jazsgcGFkZGluZy1sZWZ0OiAxLjI1cmVtOyB9CgouZm9ybS1jaGVjay1pbnB1dCB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgbWFyZ2luLXRvcDogMC4zcmVtOyBtYXJnaW4tbGVmdDogLTEuMjVyZW07IH0KCi5mb3JtLWNoZWNrLWlucHV0W2Rpc2FibGVkXSB+IC5mb3JtLWNoZWNrLWxhYmVsLCAuZm9ybS1jaGVjay1pbnB1dDpkaXNhYmxlZCB+IC5mb3JtLWNoZWNrLWxhYmVsIHsgY29sb3I6ICM4MDk0YWU7IH0KCi5mb3JtLWNoZWNrLWxhYmVsIHsgbWFyZ2luLWJvdHRvbTogMDsgfQoKLmZvcm0tY2hlY2staW5saW5lIHsgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IHBhZGRpbmctbGVmdDogMDsgbWFyZ2luLXJpZ2h0OiAwLjc1cmVtOyB9CgouZm9ybS1jaGVjay1pbmxpbmUgLmZvcm0tY2hlY2staW5wdXQgeyBwb3NpdGlvbjogc3RhdGljOyBtYXJnaW4tdG9wOiAwOyBtYXJnaW4tcmlnaHQ6IDAuMzEyNXJlbTsgbWFyZ2luLWxlZnQ6IDA7IH0KCi52YWxpZC1mZWVkYmFjayB7IGRpc3BsYXk6IG5vbmU7IHdpZHRoOiAxMDAlOyBtYXJnaW4tdG9wOiAwLjI1cmVtOyBmb250LXNpemU6IDgwJTsgY29sb3I6ICMxZWUwYWM7IH0KCi52YWxpZC10b29sdGlwIHsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDEwMCU7IGxlZnQ6IDA7IHotaW5kZXg6IDU7IGRpc3BsYXk6IG5vbmU7IG1heC13aWR0aDogMTAwJTsgcGFkZGluZzogMC4yNXJlbSAwLjc1cmVtOyBtYXJnaW4tdG9wOiAuMXJlbTsgZm9udC1zaXplOiAwLjgxMjVyZW07IGxpbmUtaGVpZ2h0OiAxLjU7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDMwLCAyMjQsIDE3MiwgMC45KTsgYm9yZGVyLXJhZGl1czogM3B4OyB9CgouZm9ybS1yb3cgPiAuY29sID4gLnZhbGlkLXRvb2x0aXAsIC5mb3JtLXJvdyA+IFtjbGFzcyo9ImNvbC0iXSA+IC52YWxpZC10b29sdGlwIHsgbGVmdDogNXB4OyB9Cgoud2FzLXZhbGlkYXRlZCA6dmFsaWQgfiAudmFsaWQtZmVlZGJhY2ssIC53YXMtdmFsaWRhdGVkIDp2YWxpZCB+IC52YWxpZC10b29sdGlwLCAuaXMtdmFsaWQgfiAudmFsaWQtZmVlZGJhY2ssIC5pcy12YWxpZCB+IC52YWxpZC10b29sdGlwIHsgZGlzcGxheTogYmxvY2s7IH0KCi53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2w6dmFsaWQsIC53YXMtdmFsaWRhdGVkIC5kdWFsLWxpc3Rib3ggLmR1YWwtbGlzdGJveF9fc2VhcmNoOnZhbGlkLCAuZHVhbC1saXN0Ym94IC53YXMtdmFsaWRhdGVkIC5kdWFsLWxpc3Rib3hfX3NlYXJjaDp2YWxpZCwgLmZvcm0tY29udHJvbC5pcy12YWxpZCwgLmR1YWwtbGlzdGJveCAuaXMtdmFsaWQuZHVhbC1saXN0Ym94X19zZWFyY2ggeyBib3JkZXItY29sb3I6ICMxZWUwYWM7IHBhZGRpbmctcmlnaHQ6IDIuMTI1cmVtOyBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM2NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nOCcgaGVpZ2h0PSc4JyB2aWV3Qm94PScwIDAgOCA4JyUzZSUzY3BhdGggZmlsbD0nJTIzMWVlMGFjJyBkPSdNMi4zIDYuNzNMLjYgNC41M2MtLjQtMS4wNC40Ni0xLjQgMS4xLS44bDEuMSAxLjQgMy40LTMuOGMuNi0uNjMgMS42LS4yNyAxLjIuN2wtNCA0LjZjLS40My41LS44LjQtMS4xLjF6Jy8lM2UlM2Mvc3ZnJTNlIik7IGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7IGJhY2tncm91bmQtcG9zaXRpb246IHJpZ2h0IGFkZCgwLjMxMjVyZW0sIDAuMjE4NzVyZW0pIGNlbnRlcjsgYmFja2dyb3VuZC1zaXplOiBhZGQoMC42MjVyZW0sIDAuNDM3NXJlbSkgYWRkKDAuNjI1cmVtLCAwLjQzNzVyZW0pOyB9Cgoud2FzLXZhbGlkYXRlZCAuZm9ybS1jb250cm9sOnZhbGlkOmZvY3VzLCAud2FzLXZhbGlkYXRlZCAuZHVhbC1saXN0Ym94IC5kdWFsLWxpc3Rib3hfX3NlYXJjaDp2YWxpZDpmb2N1cywgLmR1YWwtbGlzdGJveCAud2FzLXZhbGlkYXRlZCAuZHVhbC1saXN0Ym94X19zZWFyY2g6dmFsaWQ6Zm9jdXMsIC5mb3JtLWNvbnRyb2wuaXMtdmFsaWQ6Zm9jdXMsIC5kdWFsLWxpc3Rib3ggLmlzLXZhbGlkLmR1YWwtbGlzdGJveF9fc2VhcmNoOmZvY3VzIHsgYm9yZGVyLWNvbG9yOiAjMWVlMGFjOyBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgzMCwgMjI0LCAxNzIsIDAuMjUpOyB9Cgoud2FzLXZhbGlkYXRlZCB0ZXh0YXJlYS5mb3JtLWNvbnRyb2w6dmFsaWQsIC53YXMtdmFsaWRhdGVkIC5kdWFsLWxpc3Rib3ggdGV4dGFyZWEuZHVhbC1saXN0Ym94X19zZWFyY2g6dmFsaWQsIC5kdWFsLWxpc3Rib3ggLndhcy12YWxpZGF0ZWQgdGV4dGFyZWEuZHVhbC1saXN0Ym94X19zZWFyY2g6dmFsaWQsIHRleHRhcmVhLmZvcm0tY29udHJvbC5pcy12YWxpZCwgLmR1YWwtbGlzdGJveCB0ZXh0YXJlYS5pcy12YWxpZC5kdWFsLWxpc3Rib3hfX3NlYXJjaCB7IHBhZGRpbmctcmlnaHQ6IDIuMTI1cmVtOyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiB0b3AgYWRkKDAuMzEyNXJlbSwgMC4yMTg3NXJlbSkgcmlnaHQgYWRkKDAuMzEyNXJlbSwgMC4yMTg3NXJlbSk7IH0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tc2VsZWN0OnZhbGlkLCAuY3VzdG9tLXNlbGVjdC5pcy12YWxpZCB7IGJvcmRlci1jb2xvcjogIzFlZTBhYzsgcGFkZGluZy1yaWdodDogY2FsYygwLjc1ZW0gKyAyLjY1NjI1cmVtKTsgYmFja2dyb3VuZDogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNjc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzQnIGhlaWdodD0nNScgdmlld0JveD0nMCAwIDQgNSclM2UlM2NwYXRoIGZpbGw9JyUyMzM0M2E0MCcgZD0nTTIgMEwwIDJoNHptMCA1TDAgM2g0eicvJTNlJTNjL3N2ZyUzZSIpIHJpZ2h0IDFyZW0gY2VudGVyLzhweCAxMHB4IG5vLXJlcGVhdCwgI2ZmZiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM2NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nOCcgaGVpZ2h0PSc4JyB2aWV3Qm94PScwIDAgOCA4JyUzZSUzY3BhdGggZmlsbD0nJTIzMWVlMGFjJyBkPSdNMi4zIDYuNzNMLjYgNC41M2MtLjQtMS4wNC40Ni0xLjQgMS4xLS44bDEuMSAxLjQgMy40LTMuOGMuNi0uNjMgMS42LS4yNyAxLjIuN2wtNCA0LjZjLS40My41LS44LjQtMS4xLjF6Jy8lM2UlM2Mvc3ZnJTNlIikgY2VudGVyIHJpZ2h0IDJyZW0vYWRkKDAuNjI1cmVtLCAwLjQzNzVyZW0pIGFkZCgwLjYyNXJlbSwgMC40Mzc1cmVtKSBuby1yZXBlYXQ7IH0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tc2VsZWN0OnZhbGlkOmZvY3VzLCAuY3VzdG9tLXNlbGVjdC5pcy12YWxpZDpmb2N1cyB7IGJvcmRlci1jb2xvcjogIzFlZTBhYzsgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMzAsIDIyNCwgMTcyLCAwLjI1KTsgfQoKLndhcy12YWxpZGF0ZWQgLmZvcm0tY2hlY2staW5wdXQ6dmFsaWQgfiAuZm9ybS1jaGVjay1sYWJlbCwgLmZvcm0tY2hlY2staW5wdXQuaXMtdmFsaWQgfiAuZm9ybS1jaGVjay1sYWJlbCB7IGNvbG9yOiAjMWVlMGFjOyB9Cgoud2FzLXZhbGlkYXRlZCAuZm9ybS1jaGVjay1pbnB1dDp2YWxpZCB+IC52YWxpZC1mZWVkYmFjaywgLndhcy12YWxpZGF0ZWQgLmZvcm0tY2hlY2staW5wdXQ6dmFsaWQgfiAudmFsaWQtdG9vbHRpcCwgLmZvcm0tY2hlY2staW5wdXQuaXMtdmFsaWQgfiAudmFsaWQtZmVlZGJhY2ssIC5mb3JtLWNoZWNrLWlucHV0LmlzLXZhbGlkIH4gLnZhbGlkLXRvb2x0aXAgeyBkaXNwbGF5OiBibG9jazsgfQoKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OnZhbGlkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWwgeyBjb2xvcjogIzFlZTBhYzsgfQoKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OnZhbGlkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsIC5jdXN0b20tY29udHJvbC1pbnB1dC5pcy12YWxpZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsgYm9yZGVyLWNvbG9yOiAjMWVlMGFjOyB9Cgoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6dmFsaWQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsgYm9yZGVyLWNvbG9yOiAjNGFlN2JkOyBiYWNrZ3JvdW5kLWNvbG9yOiAjNGFlN2JkOyB9Cgoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6dmFsaWQ6Zm9jdXMgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSwgLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLXZhbGlkOmZvY3VzIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgeyBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgzMCwgMjI0LCAxNzIsIDAuMjUpOyB9Cgoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6dmFsaWQ6Zm9jdXM6bm90KDpjaGVja2VkKSB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtdmFsaWQ6Zm9jdXM6bm90KDpjaGVja2VkKSB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsgYm9yZGVyLWNvbG9yOiAjMWVlMGFjOyB9Cgoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWZpbGUtaW5wdXQ6dmFsaWQgfiAuY3VzdG9tLWZpbGUtbGFiZWwsIC5jdXN0b20tZmlsZS1pbnB1dC5pcy12YWxpZCB+IC5jdXN0b20tZmlsZS1sYWJlbCB7IGJvcmRlci1jb2xvcjogIzFlZTBhYzsgfQoKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1maWxlLWlucHV0OnZhbGlkOmZvY3VzIH4gLmN1c3RvbS1maWxlLWxhYmVsLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtdmFsaWQ6Zm9jdXMgfiAuY3VzdG9tLWZpbGUtbGFiZWwgeyBib3JkZXItY29sb3I6ICMxZWUwYWM7IGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDMwLCAyMjQsIDE3MiwgMC4yNSk7IH0KCi5pbnZhbGlkLWZlZWRiYWNrIHsgZGlzcGxheTogbm9uZTsgd2lkdGg6IDEwMCU7IG1hcmdpbi10b3A6IDAuMjVyZW07IGZvbnQtc2l6ZTogODAlOyBjb2xvcjogI2U4NTM0NzsgfQoKLmludmFsaWQtdG9vbHRpcCB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAxMDAlOyBsZWZ0OiAwOyB6LWluZGV4OiA1OyBkaXNwbGF5OiBub25lOyBtYXgtd2lkdGg6IDEwMCU7IHBhZGRpbmc6IDAuMjVyZW0gMC43NXJlbTsgbWFyZ2luLXRvcDogLjFyZW07IGZvbnQtc2l6ZTogMC44MTI1cmVtOyBsaW5lLWhlaWdodDogMS41OyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyMzIsIDgzLCA3MSwgMC45KTsgYm9yZGVyLXJhZGl1czogM3B4OyB9CgouZm9ybS1yb3cgPiAuY29sID4gLmludmFsaWQtdG9vbHRpcCwgLmZvcm0tcm93ID4gW2NsYXNzKj0iY29sLSJdID4gLmludmFsaWQtdG9vbHRpcCB7IGxlZnQ6IDVweDsgfQoKLndhcy12YWxpZGF0ZWQgOmludmFsaWQgfiAuaW52YWxpZC1mZWVkYmFjaywgLndhcy12YWxpZGF0ZWQgOmludmFsaWQgfiAuaW52YWxpZC10b29sdGlwLCAuaXMtaW52YWxpZCB+IC5pbnZhbGlkLWZlZWRiYWNrLCAuaXMtaW52YWxpZCB+IC5pbnZhbGlkLXRvb2x0aXAgeyBkaXNwbGF5OiBibG9jazsgfQoKLndhcy12YWxpZGF0ZWQgLmZvcm0tY29udHJvbDppbnZhbGlkLCAud2FzLXZhbGlkYXRlZCAuZHVhbC1saXN0Ym94IC5kdWFsLWxpc3Rib3hfX3NlYXJjaDppbnZhbGlkLCAuZHVhbC1saXN0Ym94IC53YXMtdmFsaWRhdGVkIC5kdWFsLWxpc3Rib3hfX3NlYXJjaDppbnZhbGlkLCAuZm9ybS1jb250cm9sLmlzLWludmFsaWQsIC5kdWFsLWxpc3Rib3ggLmlzLWludmFsaWQuZHVhbC1saXN0Ym94X19zZWFyY2ggeyBib3JkZXItY29sb3I6ICNlODUzNDc7IHBhZGRpbmctcmlnaHQ6IDIuMTI1cmVtOyBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM2NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMTInIGhlaWdodD0nMTInIGZpbGw9J25vbmUnIHN0cm9rZT0nJTIzZTg1MzQ3JyB2aWV3Qm94PScwIDAgMTIgMTInJTNlJTNjY2lyY2xlIGN4PSc2JyBjeT0nNicgcj0nNC41Jy8lM2UlM2NwYXRoIHN0cm9rZS1saW5lam9pbj0ncm91bmQnIGQ9J001LjggMy42aC40TDYgNi41eicvJTNlJTNjY2lyY2xlIGN4PSc2JyBjeT0nOC4yJyByPScuNicgZmlsbD0nJTIzZTg1MzQ3JyBzdHJva2U9J25vbmUnLyUzZSUzYy9zdmclM2UiKTsgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsgYmFja2dyb3VuZC1wb3NpdGlvbjogcmlnaHQgYWRkKDAuMzEyNXJlbSwgMC4yMTg3NXJlbSkgY2VudGVyOyBiYWNrZ3JvdW5kLXNpemU6IGFkZCgwLjYyNXJlbSwgMC40Mzc1cmVtKSBhZGQoMC42MjVyZW0sIDAuNDM3NXJlbSk7IH0KCi53YXMtdmFsaWRhdGVkIC5mb3JtLWNvbnRyb2w6aW52YWxpZDpmb2N1cywgLndhcy12YWxpZGF0ZWQgLmR1YWwtbGlzdGJveCAuZHVhbC1saXN0Ym94X19zZWFyY2g6aW52YWxpZDpmb2N1cywgLmR1YWwtbGlzdGJveCAud2FzLXZhbGlkYXRlZCAuZHVhbC1saXN0Ym94X19zZWFyY2g6aW52YWxpZDpmb2N1cywgLmZvcm0tY29udHJvbC5pcy1pbnZhbGlkOmZvY3VzLCAuZHVhbC1saXN0Ym94IC5pcy1pbnZhbGlkLmR1YWwtbGlzdGJveF9fc2VhcmNoOmZvY3VzIHsgYm9yZGVyLWNvbG9yOiAjZTg1MzQ3OyBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMzIsIDgzLCA3MSwgMC4yNSk7IH0KCi53YXMtdmFsaWRhdGVkIHRleHRhcmVhLmZvcm0tY29udHJvbDppbnZhbGlkLCAud2FzLXZhbGlkYXRlZCAuZHVhbC1saXN0Ym94IHRleHRhcmVhLmR1YWwtbGlzdGJveF9fc2VhcmNoOmludmFsaWQsIC5kdWFsLWxpc3Rib3ggLndhcy12YWxpZGF0ZWQgdGV4dGFyZWEuZHVhbC1saXN0Ym94X19zZWFyY2g6aW52YWxpZCwgdGV4dGFyZWEuZm9ybS1jb250cm9sLmlzLWludmFsaWQsIC5kdWFsLWxpc3Rib3ggdGV4dGFyZWEuaXMtaW52YWxpZC5kdWFsLWxpc3Rib3hfX3NlYXJjaCB7IHBhZGRpbmctcmlnaHQ6IDIuMTI1cmVtOyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiB0b3AgYWRkKDAuMzEyNXJlbSwgMC4yMTg3NXJlbSkgcmlnaHQgYWRkKDAuMzEyNXJlbSwgMC4yMTg3NXJlbSk7IH0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tc2VsZWN0OmludmFsaWQsIC5jdXN0b20tc2VsZWN0LmlzLWludmFsaWQgeyBib3JkZXItY29sb3I6ICNlODUzNDc7IHBhZGRpbmctcmlnaHQ6IGNhbGMoMC43NWVtICsgMi42NTYyNXJlbSk7IGJhY2tncm91bmQ6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sLCUzY3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPSc0JyBoZWlnaHQ9JzUnIHZpZXdCb3g9JzAgMCA0IDUnJTNlJTNjcGF0aCBmaWxsPSclMjMzNDNhNDAnIGQ9J00yIDBMMCAyaDR6bTAgNUwwIDNoNHonLyUzZSUzYy9zdmclM2UiKSByaWdodCAxcmVtIGNlbnRlci84cHggMTBweCBuby1yZXBlYXQsICNmZmYgdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNjc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zycgd2lkdGg9JzEyJyBoZWlnaHQ9JzEyJyBmaWxsPSdub25lJyBzdHJva2U9JyUyM2U4NTM0Nycgdmlld0JveD0nMCAwIDEyIDEyJyUzZSUzY2NpcmNsZSBjeD0nNicgY3k9JzYnIHI9JzQuNScvJTNlJTNjcGF0aCBzdHJva2UtbGluZWpvaW49J3JvdW5kJyBkPSdNNS44IDMuNmguNEw2IDYuNXonLyUzZSUzY2NpcmNsZSBjeD0nNicgY3k9JzguMicgcj0nLjYnIGZpbGw9JyUyM2U4NTM0Nycgc3Ryb2tlPSdub25lJy8lM2UlM2Mvc3ZnJTNlIikgY2VudGVyIHJpZ2h0IDJyZW0vYWRkKDAuNjI1cmVtLCAwLjQzNzVyZW0pIGFkZCgwLjYyNXJlbSwgMC40Mzc1cmVtKSBuby1yZXBlYXQ7IH0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tc2VsZWN0OmludmFsaWQ6Zm9jdXMsIC5jdXN0b20tc2VsZWN0LmlzLWludmFsaWQ6Zm9jdXMgeyBib3JkZXItY29sb3I6ICNlODUzNDc7IGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDIzMiwgODMsIDcxLCAwLjI1KTsgfQoKLndhcy12YWxpZGF0ZWQgLmZvcm0tY2hlY2staW5wdXQ6aW52YWxpZCB+IC5mb3JtLWNoZWNrLWxhYmVsLCAuZm9ybS1jaGVjay1pbnB1dC5pcy1pbnZhbGlkIH4gLmZvcm0tY2hlY2stbGFiZWwgeyBjb2xvcjogI2U4NTM0NzsgfQoKLndhcy12YWxpZGF0ZWQgLmZvcm0tY2hlY2staW5wdXQ6aW52YWxpZCB+IC5pbnZhbGlkLWZlZWRiYWNrLCAud2FzLXZhbGlkYXRlZCAuZm9ybS1jaGVjay1pbnB1dDppbnZhbGlkIH4gLmludmFsaWQtdG9vbHRpcCwgLmZvcm0tY2hlY2staW5wdXQuaXMtaW52YWxpZCB+IC5pbnZhbGlkLWZlZWRiYWNrLCAuZm9ybS1jaGVjay1pbnB1dC5pcy1pbnZhbGlkIH4gLmludmFsaWQtdG9vbHRpcCB7IGRpc3BsYXk6IGJsb2NrOyB9Cgoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6aW52YWxpZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbCwgLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLWludmFsaWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWwgeyBjb2xvcjogI2U4NTM0NzsgfQoKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OmludmFsaWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSwgLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLWludmFsaWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7IGJvcmRlci1jb2xvcjogI2U4NTM0NzsgfQoKLndhcy12YWxpZGF0ZWQgLmN1c3RvbS1jb250cm9sLWlucHV0OmludmFsaWQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQuaXMtaW52YWxpZDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgeyBib3JkZXItY29sb3I6ICNlZTdkNzQ7IGJhY2tncm91bmQtY29sb3I6ICNlZTdkNzQ7IH0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDppbnZhbGlkOmZvY3VzIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsIC5jdXN0b20tY29udHJvbC1pbnB1dC5pcy1pbnZhbGlkOmZvY3VzIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgeyBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMzIsIDgzLCA3MSwgMC4yNSk7IH0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tY29udHJvbC1pbnB1dDppbnZhbGlkOmZvY3VzOm5vdCg6Y2hlY2tlZCkgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSwgLmN1c3RvbS1jb250cm9sLWlucHV0LmlzLWludmFsaWQ6Zm9jdXM6bm90KDpjaGVja2VkKSB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsgYm9yZGVyLWNvbG9yOiAjZTg1MzQ3OyB9Cgoud2FzLXZhbGlkYXRlZCAuY3VzdG9tLWZpbGUtaW5wdXQ6aW52YWxpZCB+IC5jdXN0b20tZmlsZS1sYWJlbCwgLmN1c3RvbS1maWxlLWlucHV0LmlzLWludmFsaWQgfiAuY3VzdG9tLWZpbGUtbGFiZWwgeyBib3JkZXItY29sb3I6ICNlODUzNDc7IH0KCi53YXMtdmFsaWRhdGVkIC5jdXN0b20tZmlsZS1pbnB1dDppbnZhbGlkOmZvY3VzIH4gLmN1c3RvbS1maWxlLWxhYmVsLCAuY3VzdG9tLWZpbGUtaW5wdXQuaXMtaW52YWxpZDpmb2N1cyB+IC5jdXN0b20tZmlsZS1sYWJlbCB7IGJvcmRlci1jb2xvcjogI2U4NTM0NzsgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjMyLCA4MywgNzEsIDAuMjUpOyB9CgouZm9ybS1pbmxpbmUgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWZsb3c6IHJvdyB3cmFwOyBhbGlnbi1pdGVtczogY2VudGVyOyB9CgouZm9ybS1pbmxpbmUgLmZvcm0tY2hlY2sgeyB3aWR0aDogMTAwJTsgfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7IC5mb3JtLWlubGluZSBsYWJlbCB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyOyBtYXJnaW4tYm90dG9tOiAwOyB9CiAgLmZvcm0taW5saW5lIC5mb3JtLWdyb3VwIHsgZGlzcGxheTogZmxleDsgZmxleDogMCAwIGF1dG87IGZsZXgtZmxvdzogcm93IHdyYXA7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IG1hcmdpbi1ib3R0b206IDA7IH0KICAuZm9ybS1pbmxpbmUgLmZvcm0tY29udHJvbCwgLmZvcm0taW5saW5lIC5kdWFsLWxpc3Rib3ggLmR1YWwtbGlzdGJveF9fc2VhcmNoLCAuZHVhbC1saXN0Ym94IC5mb3JtLWlubGluZSAuZHVhbC1saXN0Ym94X19zZWFyY2ggeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHdpZHRoOiBhdXRvOyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9CiAgLmZvcm0taW5saW5lIC5mb3JtLWNvbnRyb2wtcGxhaW50ZXh0IHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB9CiAgLmZvcm0taW5saW5lIC5pbnB1dC1ncm91cCwgLmZvcm0taW5saW5lIC5jdXN0b20tc2VsZWN0IHsgd2lkdGg6IGF1dG87IH0KICAuZm9ybS1pbmxpbmUgLmZvcm0tY2hlY2sgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgd2lkdGg6IGF1dG87IHBhZGRpbmctbGVmdDogMDsgfQogIC5mb3JtLWlubGluZSAuZm9ybS1jaGVjay1pbnB1dCB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgZmxleC1zaHJpbms6IDA7IG1hcmdpbi10b3A6IDA7IG1hcmdpbi1yaWdodDogMC4yNXJlbTsgbWFyZ2luLWxlZnQ6IDA7IH0KICAuZm9ybS1pbmxpbmUgLmN1c3RvbS1jb250cm9sIHsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IH0KICAuZm9ybS1pbmxpbmUgLmN1c3RvbS1jb250cm9sLWxhYmVsIHsgbWFyZ2luLWJvdHRvbTogMDsgfSB9CgouYnRuLCAuZHVhbC1saXN0Ym94IC5kdWFsLWxpc3Rib3hfX2J1dHRvbiB7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1mYW1pbHk6IE51bml0bywgc2Fucy1zZXJpZjsgZm9udC13ZWlnaHQ6IDcwMDsgY29sb3I6ICM1MjY0ODQ7IHRleHQtYWxpZ246IGNlbnRlcjsgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgdXNlci1zZWxlY3Q6IG5vbmU7IGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsgcGFkZGluZzogMC40Mzc1cmVtIDEuMTI1cmVtOyBmb250LXNpemU6IDAuODEyNXJlbTsgbGluZS1oZWlnaHQ6IDEuMjVyZW07IGJvcmRlci1yYWRpdXM6IDRweDsgdHJhbnNpdGlvbjogY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dDsgfQoKQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHsgLmJ0biwgLmR1YWwtbGlzdGJveCAuZHVhbC1saXN0Ym94X19idXR0b24geyB0cmFuc2l0aW9uOiBub25lOyB9IH0KCi5idG46aG92ZXIsIC5kdWFsLWxpc3Rib3ggLmR1YWwtbGlzdGJveF9fYnV0dG9uOmhvdmVyIHsgY29sb3I6ICM1MjY0ODQ7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfQoKLmJ0bjpmb2N1cywgLmR1YWwtbGlzdGJveCAuZHVhbC1saXN0Ym94X19idXR0b246Zm9jdXMsIC5idG4uZm9jdXMsIC5kdWFsLWxpc3Rib3ggLmZvY3VzLmR1YWwtbGlzdGJveF9fYnV0dG9uIHsgb3V0bGluZTogMDsgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoOSwgMTEzLCAyNTQsIDAuMSk7IH0KCi5idG4uZGlzYWJsZWQsIC5kdWFsLWxpc3Rib3ggLmRpc2FibGVkLmR1YWwtbGlzdGJveF9fYnV0dG9uLCAuYnRuOmRpc2FibGVkLCAuZHVhbC1saXN0Ym94IC5kdWFsLWxpc3Rib3hfX2J1dHRvbjpkaXNhYmxlZCB7IG9wYWNpdHk6IDAuNTsgfQoKLmJ0bjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKSwgLmR1YWwtbGlzdGJveCAuZHVhbC1saXN0Ym94X19idXR0b246bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkgeyBjdXJzb3I6IHBvaW50ZXI7IH0KCmEuYnRuLmRpc2FibGVkLCAuZHVhbC1saXN0Ym94IGEuZGlzYWJsZWQuZHVhbC1saXN0Ym94X19idXR0b24sIGZpZWxkc2V0OmRpc2FibGVkIGEuYnRuLCBmaWVsZHNldDpkaXNhYmxlZCAuZHVhbC1saXN0Ym94IGEuZHVhbC1saXN0Ym94X19idXR0b24sIC5kdWFsLWxpc3Rib3ggZmllbGRzZXQ6ZGlzYWJsZWQgYS5kdWFsLWxpc3Rib3hfX2J1dHRvbiB7IHBvaW50ZXItZXZlbnRzOiBub25lOyB9CgouYnRuLXByaW1hcnkgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogIzA5NzFmZTsgYm9yZGVyLWNvbG9yOiAjMDk3MWZlOyB9CgouYnRuLXByaW1hcnk6aG92ZXIgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogIzMxNDBmYzsgYm9yZGVyLWNvbG9yOiAjMDE1YWQzOyB9CgouYnRuLXByaW1hcnk6Zm9jdXMsIC5idG4tcHJpbWFyeS5mb2N1cyB7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMzE0MGZjOyBib3JkZXItY29sb3I6ICMwMTVhZDM7IGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDQ2LCAxMzQsIDI1NCwgMC41KTsgfQoKLmJ0bi1wcmltYXJ5LmRpc2FibGVkLCAuYnRuLXByaW1hcnk6ZGlzYWJsZWQgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogIzA5NzFmZTsgYm9yZGVyLWNvbG9yOiAjMDk3MWZlOyB9CgouYnRuLXByaW1hcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLXByaW1hcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLCAuc2hvdyA+IC5idG4tcHJpbWFyeS5kcm9wZG93bi10b2dnbGUgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogIzAxNWFkMzsgYm9yZGVyLWNvbG9yOiAjMDE1NWM2OyB9CgouYnRuLXByaW1hcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLXByaW1hcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLCAuc2hvdyA+IC5idG4tcHJpbWFyeS5kcm9wZG93bi10b2dnbGU6Zm9jdXMgeyBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSg0NiwgMTM0LCAyNTQsIDAuNSk7IH0KCi5idG4tc2Vjb25kYXJ5IHsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICNmZTQ3M2E7IGJvcmRlci1jb2xvcjogI2ZlNDczYTsgfQoKLmJ0bi1zZWNvbmRhcnk6aG92ZXIgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogI2ZlNDczYTsgYm9yZGVyLWNvbG9yOiAjZmU0NzNhOyB9CgouYnRuLXNlY29uZGFyeTpmb2N1cywgLmJ0bi1zZWNvbmRhcnkuZm9jdXMgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogIzI5Mzg0YTsgYm9yZGVyLWNvbG9yOiAjMjQzMTQyOyBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSg4NCwgMTAxLCAxMjIsIDAuNSk7IH0KCi5idG4tc2Vjb25kYXJ5LmRpc2FibGVkLCAuYnRuLXNlY29uZGFyeTpkaXNhYmxlZCB7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMzY0YTYzOyBib3JkZXItY29sb3I6ICMzNjRhNjM7IH0KCi5idG4tc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1zZWNvbmRhcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLCAuc2hvdyA+IC5idG4tc2Vjb25kYXJ5LmRyb3Bkb3duLXRvZ2dsZSB7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMjQzMTQyOyBib3JkZXItY29sb3I6ICMyMDJiM2E7IH0KCi5idG4tc2Vjb25kYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1zZWNvbmRhcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLCAuc2hvdyA+IC5idG4tc2Vjb25kYXJ5LmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7IGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDg0LCAxMDEsIDEyMiwgMC41KTsgfQoKLmJ0bi1zdWNjZXNzIHsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICMxZWUwYWM7IGJvcmRlci1jb2xvcjogIzFlZTBhYzsgfQoKLmJ0bi1zdWNjZXNzOmhvdmVyIHsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICMxOWJlOTI7IGJvcmRlci1jb2xvcjogIzE4YjM4OTsgfQoKLmJ0bi1zdWNjZXNzOmZvY3VzLCAuYnRuLXN1Y2Nlc3MuZm9jdXMgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogIzE5YmU5MjsgYm9yZGVyLWNvbG9yOiAjMThiMzg5OyBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSg2NCwgMjI5LCAxODQsIDAuNSk7IH0KCi5idG4tc3VjY2Vzcy5kaXNhYmxlZCwgLmJ0bi1zdWNjZXNzOmRpc2FibGVkIHsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICMxZWUwYWM7IGJvcmRlci1jb2xvcjogIzFlZTBhYzsgfQoKLmJ0bi1zdWNjZXNzOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1zdWNjZXNzOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwgLnNob3cgPiAuYnRuLXN1Y2Nlc3MuZHJvcGRvd24tdG9nZ2xlIHsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICMxOGIzODk7IGJvcmRlci1jb2xvcjogIzE2YTg4MTsgfQoKLmJ0bi1zdWNjZXNzOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1zdWNjZXNzOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywgLnNob3cgPiAuYnRuLXN1Y2Nlc3MuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoNjQsIDIyOSwgMTg0LCAwLjUpOyB9CgouYnRuLWluZm8geyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogIzA5YzJkZTsgYm9yZGVyLWNvbG9yOiAjMDljMmRlOyB9CgouYnRuLWluZm86aG92ZXIgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogIzA4YTJiOTsgYm9yZGVyLWNvbG9yOiAjMDc5N2FkOyB9CgouYnRuLWluZm86Zm9jdXMsIC5idG4taW5mby5mb2N1cyB7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDhhMmI5OyBib3JkZXItY29sb3I6ICMwNzk3YWQ7IGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDQ2LCAyMDMsIDIyNywgMC41KTsgfQoKLmJ0bi1pbmZvLmRpc2FibGVkLCAuYnRuLWluZm86ZGlzYWJsZWQgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogIzA5YzJkZTsgYm9yZGVyLWNvbG9yOiAjMDljMmRlOyB9CgouYnRuLWluZm86bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLWluZm86bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLCAuc2hvdyA+IC5idG4taW5mby5kcm9wZG93bi10b2dnbGUgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogIzA3OTdhZDsgYm9yZGVyLWNvbG9yOiAjMDc4Y2ExOyB9CgouYnRuLWluZm86bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLWluZm86bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLCAuc2hvdyA+IC5idG4taW5mby5kcm9wZG93bi10b2dnbGU6Zm9jdXMgeyBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSg0NiwgMjAzLCAyMjcsIDAuNSk7IH0KCi5idG4td2FybmluZyB7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjRiZDBlOyBib3JkZXItY29sb3I6ICNmNGJkMGU7IH0KCi5idG4td2FybmluZzpob3ZlciB7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZDJhMjBhOyBib3JkZXItY29sb3I6ICNjNjk5MDk7IH0KCi5idG4td2FybmluZzpmb2N1cywgLmJ0bi13YXJuaW5nLmZvY3VzIHsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICNkMmEyMGE7IGJvcmRlci1jb2xvcjogI2M2OTkwOTsgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjQ2LCAxOTksIDUwLCAwLjUpOyB9CgouYnRuLXdhcm5pbmcuZGlzYWJsZWQsIC5idG4td2FybmluZzpkaXNhYmxlZCB7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjRiZDBlOyBib3JkZXItY29sb3I6ICNmNGJkMGU7IH0KCi5idG4td2FybmluZzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4td2FybmluZzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi13YXJuaW5nLmRyb3Bkb3duLXRvZ2dsZSB7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjYzY5OTA5OyBib3JkZXItY29sb3I6ICNiYThmMDg7IH0KCi5idG4td2FybmluZzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4td2FybmluZzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi13YXJuaW5nLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7IGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDI0NiwgMTk5LCA1MCwgMC41KTsgfQoKLmJ0bi1kYW5nZXIgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogI2U4NTM0NzsgYm9yZGVyLWNvbG9yOiAjZTg1MzQ3OyB9CgouYnRuLWRhbmdlcjpob3ZlciB7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZTQzMzI1OyBib3JkZXItY29sb3I6ICNlMDJiMWM7IH0KCi5idG4tZGFuZ2VyOmZvY3VzLCAuYnRuLWRhbmdlci5mb2N1cyB7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZTQzMzI1OyBib3JkZXItY29sb3I6ICNlMDJiMWM7IGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDIzNSwgMTA5LCA5OSwgMC41KTsgfQoKLmJ0bi1kYW5nZXIuZGlzYWJsZWQsIC5idG4tZGFuZ2VyOmRpc2FibGVkIHsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICNlODUzNDc7IGJvcmRlci1jb2xvcjogI2U4NTM0NzsgfQoKLmJ0bi1kYW5nZXI6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLWRhbmdlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1kYW5nZXIuZHJvcGRvd24tdG9nZ2xlIHsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICNlMDJiMWM7IGJvcmRlci1jb2xvcjogI2Q1MjgxYjsgfQoKLmJ0bi1kYW5nZXI6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLWRhbmdlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1kYW5nZXIuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjM1LCAxMDksIDk5LCAwLjUpOyB9CgouYnRuLWRhcmsgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogIzFjMmI0NjsgYm9yZGVyLWNvbG9yOiAjMWMyYjQ2OyB9CgouYnRuLWRhcms6aG92ZXIgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogIzExMWEyYjsgYm9yZGVyLWNvbG9yOiAjMGQxNTIyOyB9CgouYnRuLWRhcms6Zm9jdXMsIC5idG4tZGFyay5mb2N1cyB7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMTExYTJiOyBib3JkZXItY29sb3I6ICMwZDE1MjI7IGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDYyLCA3NSwgOTgsIDAuNSk7IH0KCi5idG4tZGFyay5kaXNhYmxlZCwgLmJ0bi1kYXJrOmRpc2FibGVkIHsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICMxYzJiNDY7IGJvcmRlci1jb2xvcjogIzFjMmI0NjsgfQoKLmJ0bi1kYXJrOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1kYXJrOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwgLnNob3cgPiAuYnRuLWRhcmsuZHJvcGRvd24tdG9nZ2xlIHsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICMwZDE1MjI7IGJvcmRlci1jb2xvcjogIzBhMGYxODsgfQoKLmJ0bi1kYXJrOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1kYXJrOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywgLnNob3cgPiAuYnRuLWRhcmsuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoNjIsIDc1LCA5OCwgMC41KTsgfQoKLmJ0bi1ncmF5IHsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICM4MDkxYTc7IGJvcmRlci1jb2xvcjogIzgwOTFhNzsgfQoKLmJ0bi1ncmF5OmhvdmVyIHsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICM2OTdkOTc7IGJvcmRlci1jb2xvcjogIzY0Nzc5MDsgfQoKLmJ0bi1ncmF5OmZvY3VzLCAuYnRuLWdyYXkuZm9jdXMgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogIzY5N2Q5NzsgYm9yZGVyLWNvbG9yOiAjNjQ3NzkwOyBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgxNDcsIDE2MiwgMTgwLCAwLjUpOyB9CgouYnRuLWdyYXkuZGlzYWJsZWQsIC5idG4tZ3JheTpkaXNhYmxlZCB7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjODA5MWE3OyBib3JkZXItY29sb3I6ICM4MDkxYTc7IH0KCi5idG4tZ3JheTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tZ3JheTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1ncmF5LmRyb3Bkb3duLXRvZ2dsZSB7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjNjQ3NzkwOyBib3JkZXItY29sb3I6ICM1ZjcxODk7IH0KCi5idG4tZ3JheTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tZ3JheTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1ncmF5LmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7IGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDE0NywgMTYyLCAxODAsIDAuNSk7IH0KCi5idG4tbGlnaHQsIC5kdWFsLWxpc3Rib3ggLmR1YWwtbGlzdGJveF9fYnV0dG9uIHsgY29sb3I6ICMxMDE5MjQ7IGJhY2tncm91bmQtY29sb3I6ICNlNWU5ZjI7IGJvcmRlci1jb2xvcjogI2U1ZTlmMjsgfQoKLmJ0bi1saWdodDpob3ZlciwgLmR1YWwtbGlzdGJveCAuZHVhbC1saXN0Ym94X19idXR0b246aG92ZXIgeyBjb2xvcjogIzEwMTkyNDsgYmFja2dyb3VuZC1jb2xvcjogI2NjZDNlNTsgYm9yZGVyLWNvbG9yOiAjYzNjY2UxOyB9CgouYnRuLWxpZ2h0OmZvY3VzLCAuZHVhbC1saXN0Ym94IC5kdWFsLWxpc3Rib3hfX2J1dHRvbjpmb2N1cywgLmJ0bi1saWdodC5mb2N1cywgLmR1YWwtbGlzdGJveCAuZm9jdXMuZHVhbC1saXN0Ym94X19idXR0b24geyBjb2xvcjogIzEwMTkyNDsgYmFja2dyb3VuZC1jb2xvcjogI2NjZDNlNTsgYm9yZGVyLWNvbG9yOiAjYzNjY2UxOyBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgxOTcsIDIwMiwgMjExLCAwLjUpOyB9CgouYnRuLWxpZ2h0LmRpc2FibGVkLCAuZHVhbC1saXN0Ym94IC5kaXNhYmxlZC5kdWFsLWxpc3Rib3hfX2J1dHRvbiwgLmJ0bi1saWdodDpkaXNhYmxlZCwgLmR1YWwtbGlzdGJveCAuZHVhbC1saXN0Ym94X19idXR0b246ZGlzYWJsZWQgeyBjb2xvcjogIzEwMTkyNDsgYmFja2dyb3VuZC1jb2xvcjogI2U1ZTlmMjsgYm9yZGVyLWNvbG9yOiAjZTVlOWYyOyB9CgouYnRuLWxpZ2h0Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmR1YWwtbGlzdGJveCAuZHVhbC1saXN0Ym94X19idXR0b246bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLWxpZ2h0Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwgLmR1YWwtbGlzdGJveCAuZHVhbC1saXN0Ym94X19idXR0b246bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLCAuc2hvdyA+IC5idG4tbGlnaHQuZHJvcGRvd24tdG9nZ2xlLCAuZHVhbC1saXN0Ym94IC5zaG93ID4gLmRyb3Bkb3duLXRvZ2dsZS5kdWFsLWxpc3Rib3hfX2J1dHRvbiB7IGNvbG9yOiAjMTAxOTI0OyBiYWNrZ3JvdW5kLWNvbG9yOiAjYzNjY2UxOyBib3JkZXItY29sb3I6ICNiYmM1ZGQ7IH0KCi5idG4tbGlnaHQ6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuZHVhbC1saXN0Ym94IC5kdWFsLWxpc3Rib3hfX2J1dHRvbjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tbGlnaHQ6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLCAuZHVhbC1saXN0Ym94IC5kdWFsLWxpc3Rib3hfX2J1dHRvbjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1saWdodC5kcm9wZG93bi10b2dnbGU6Zm9jdXMsIC5kdWFsLWxpc3Rib3ggLnNob3cgPiAuZHJvcGRvd24tdG9nZ2xlLmR1YWwtbGlzdGJveF9fYnV0dG9uOmZvY3VzIHsgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMTk3LCAyMDIsIDIxMSwgMC41KTsgfQoKLmJ0bi1saWdodGVyIHsgY29sb3I6ICMxMDE5MjQ7IGJhY2tncm91bmQtY29sb3I6ICNmNWY2ZmE7IGJvcmRlci1jb2xvcjogI2Y1ZjZmYTsgfQoKLmJ0bi1saWdodGVyOmhvdmVyIHsgY29sb3I6ICMxMDE5MjQ7IGJhY2tncm91bmQtY29sb3I6ICNkY2RmZWQ7IGJvcmRlci1jb2xvcjogI2QzZDdlOTsgfQoKLmJ0bi1saWdodGVyOmZvY3VzLCAuYnRuLWxpZ2h0ZXIuZm9jdXMgeyBjb2xvcjogIzEwMTkyNDsgYmFja2dyb3VuZC1jb2xvcjogI2RjZGZlZDsgYm9yZGVyLWNvbG9yOiAjZDNkN2U5OyBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMTEsIDIxMywgMjE4LCAwLjUpOyB9CgouYnRuLWxpZ2h0ZXIuZGlzYWJsZWQsIC5idG4tbGlnaHRlcjpkaXNhYmxlZCB7IGNvbG9yOiAjMTAxOTI0OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNmZhOyBib3JkZXItY29sb3I6ICNmNWY2ZmE7IH0KCi5idG4tbGlnaHRlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tbGlnaHRlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1saWdodGVyLmRyb3Bkb3duLXRvZ2dsZSB7IGNvbG9yOiAjMTAxOTI0OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZDNkN2U5OyBib3JkZXItY29sb3I6ICNjYmQwZTU7IH0KCi5idG4tbGlnaHRlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tbGlnaHRlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1saWdodGVyLmRyb3Bkb3duLXRvZ2dsZTpmb2N1cyB7IGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDIxMSwgMjEzLCAyMTgsIDAuNSk7IH0KCi5idG4tb3V0bGluZS1wcmltYXJ5IHsgY29sb3I6ICMwOTcxZmU7IGJvcmRlci1jb2xvcjogIzA5NzFmZTsgfQoKLmJ0bi1vdXRsaW5lLXByaW1hcnk6aG92ZXIgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogIzA5NzFmZTsgYm9yZGVyLWNvbG9yOiAjMDk3MWZlOyB9CgouYnRuLW91dGxpbmUtcHJpbWFyeTpmb2N1cywgLmJ0bi1vdXRsaW5lLXByaW1hcnkuZm9jdXMgeyBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSg5LCAxMTMsIDI1NCwgMC41KTsgfQoKLmJ0bi1vdXRsaW5lLXByaW1hcnkuZGlzYWJsZWQsIC5idG4tb3V0bGluZS1wcmltYXJ5OmRpc2FibGVkIHsgY29sb3I6ICMwOTcxZmU7IGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9CgouYnRuLW91dGxpbmUtcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tb3V0bGluZS1wcmltYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwgLnNob3cgPiAuYnRuLW91dGxpbmUtcHJpbWFyeS5kcm9wZG93bi10b2dnbGUgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogIzA5NzFmZTsgYm9yZGVyLWNvbG9yOiAjMDk3MWZlOyB9CgouYnRuLW91dGxpbmUtcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tb3V0bGluZS1wcmltYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywgLnNob3cgPiAuYnRuLW91dGxpbmUtcHJpbWFyeS5kcm9wZG93bi10b2dnbGU6Zm9jdXMgeyBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSg5LCAxMTMsIDI1NCwgMC41KTsgfQoKLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSB7IGNvbG9yOiAjMzY0YTYzOyBib3JkZXItY29sb3I6ICMzNjRhNjM7IH0KCi5idG4tb3V0bGluZS1zZWNvbmRhcnk6aG92ZXIgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogIzM2NGE2MzsgYm9yZGVyLWNvbG9yOiAjMzY0YTYzOyB9CgouYnRuLW91dGxpbmUtc2Vjb25kYXJ5OmZvY3VzLCAuYnRuLW91dGxpbmUtc2Vjb25kYXJ5LmZvY3VzIHsgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoNTQsIDc0LCA5OSwgMC41KTsgfQoKLmJ0bi1vdXRsaW5lLXNlY29uZGFyeS5kaXNhYmxlZCwgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpkaXNhYmxlZCB7IGNvbG9yOiAjMzY0YTYzOyBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfQoKLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tb3V0bGluZS1zZWNvbmRhcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlLCAuc2hvdyA+IC5idG4tb3V0bGluZS1zZWNvbmRhcnkuZHJvcGRvd24tdG9nZ2xlIHsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICMzNjRhNjM7IGJvcmRlci1jb2xvcjogIzM2NGE2MzsgfQoKLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tb3V0bGluZS1zZWNvbmRhcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlOmZvY3VzLCAuc2hvdyA+IC5idG4tb3V0bGluZS1zZWNvbmRhcnkuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoNTQsIDc0LCA5OSwgMC41KTsgfQoKLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MgeyBjb2xvcjogIzFlZTBhYzsgYm9yZGVyLWNvbG9yOiAjMWVlMGFjOyB9CgouYnRuLW91dGxpbmUtc3VjY2Vzczpob3ZlciB7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMWVlMGFjOyBib3JkZXItY29sb3I6ICMxZWUwYWM7IH0KCi5idG4tb3V0bGluZS1zdWNjZXNzOmZvY3VzLCAuYnRuLW91dGxpbmUtc3VjY2Vzcy5mb2N1cyB7IGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDMwLCAyMjQsIDE3MiwgMC41KTsgfQoKLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MuZGlzYWJsZWQsIC5idG4tb3V0bGluZS1zdWNjZXNzOmRpc2FibGVkIHsgY29sb3I6ICMxZWUwYWM7IGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9CgouYnRuLW91dGxpbmUtc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tb3V0bGluZS1zdWNjZXNzOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwgLnNob3cgPiAuYnRuLW91dGxpbmUtc3VjY2Vzcy5kcm9wZG93bi10b2dnbGUgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogIzFlZTBhYzsgYm9yZGVyLWNvbG9yOiAjMWVlMGFjOyB9CgouYnRuLW91dGxpbmUtc3VjY2Vzczpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tb3V0bGluZS1zdWNjZXNzOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywgLnNob3cgPiAuYnRuLW91dGxpbmUtc3VjY2Vzcy5kcm9wZG93bi10b2dnbGU6Zm9jdXMgeyBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgzMCwgMjI0LCAxNzIsIDAuNSk7IH0KCi5idG4tb3V0bGluZS1pbmZvIHsgY29sb3I6ICMwOWMyZGU7IGJvcmRlci1jb2xvcjogIzA5YzJkZTsgfQoKLmJ0bi1vdXRsaW5lLWluZm86aG92ZXIgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogIzA5YzJkZTsgYm9yZGVyLWNvbG9yOiAjMDljMmRlOyB9CgouYnRuLW91dGxpbmUtaW5mbzpmb2N1cywgLmJ0bi1vdXRsaW5lLWluZm8uZm9jdXMgeyBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSg5LCAxOTQsIDIyMiwgMC41KTsgfQoKLmJ0bi1vdXRsaW5lLWluZm8uZGlzYWJsZWQsIC5idG4tb3V0bGluZS1pbmZvOmRpc2FibGVkIHsgY29sb3I6ICMwOWMyZGU7IGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9CgouYnRuLW91dGxpbmUtaW5mbzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tb3V0bGluZS1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwgLnNob3cgPiAuYnRuLW91dGxpbmUtaW5mby5kcm9wZG93bi10b2dnbGUgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogIzA5YzJkZTsgYm9yZGVyLWNvbG9yOiAjMDljMmRlOyB9CgouYnRuLW91dGxpbmUtaW5mbzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tb3V0bGluZS1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywgLnNob3cgPiAuYnRuLW91dGxpbmUtaW5mby5kcm9wZG93bi10b2dnbGU6Zm9jdXMgeyBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSg5LCAxOTQsIDIyMiwgMC41KTsgfQoKLmJ0bi1vdXRsaW5lLXdhcm5pbmcgeyBjb2xvcjogI2Y0YmQwZTsgYm9yZGVyLWNvbG9yOiAjZjRiZDBlOyB9CgouYnRuLW91dGxpbmUtd2FybmluZzpob3ZlciB7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjRiZDBlOyBib3JkZXItY29sb3I6ICNmNGJkMGU7IH0KCi5idG4tb3V0bGluZS13YXJuaW5nOmZvY3VzLCAuYnRuLW91dGxpbmUtd2FybmluZy5mb2N1cyB7IGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDI0NCwgMTg5LCAxNCwgMC41KTsgfQoKLmJ0bi1vdXRsaW5lLXdhcm5pbmcuZGlzYWJsZWQsIC5idG4tb3V0bGluZS13YXJuaW5nOmRpc2FibGVkIHsgY29sb3I6ICNmNGJkMGU7IGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9CgouYnRuLW91dGxpbmUtd2FybmluZzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5idG4tb3V0bGluZS13YXJuaW5nOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwgLnNob3cgPiAuYnRuLW91dGxpbmUtd2FybmluZy5kcm9wZG93bi10b2dnbGUgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogI2Y0YmQwZTsgYm9yZGVyLWNvbG9yOiAjZjRiZDBlOyB9CgouYnRuLW91dGxpbmUtd2FybmluZzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5idG4tb3V0bGluZS13YXJuaW5nOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywgLnNob3cgPiAuYnRuLW91dGxpbmUtd2FybmluZy5kcm9wZG93bi10b2dnbGU6Zm9jdXMgeyBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyNDQsIDE4OSwgMTQsIDAuNSk7IH0KCi5idG4tb3V0bGluZS1kYW5nZXIgeyBjb2xvcjogI2U4NTM0NzsgYm9yZGVyLWNvbG9yOiAjZTg1MzQ3OyB9CgouYnRuLW91dGxpbmUtZGFuZ2VyOmhvdmVyIHsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICNlODUzNDc7IGJvcmRlci1jb2xvcjogI2U4NTM0NzsgfQoKLmJ0bi1vdXRsaW5lLWRhbmdlcjpmb2N1cywgLmJ0bi1vdXRsaW5lLWRhbmdlci5mb2N1cyB7IGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDIzMiwgODMsIDcxLCAwLjUpOyB9CgouYnRuLW91dGxpbmUtZGFuZ2VyLmRpc2FibGVkLCAuYnRuLW91dGxpbmUtZGFuZ2VyOmRpc2FibGVkIHsgY29sb3I6ICNlODUzNDc7IGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9CgouYnRuLW91dGxpbmUtZGFuZ2VyOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1vdXRsaW5lLWRhbmdlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLWRhbmdlci5kcm9wZG93bi10b2dnbGUgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogI2U4NTM0NzsgYm9yZGVyLWNvbG9yOiAjZTg1MzQ3OyB9CgouYnRuLW91dGxpbmUtZGFuZ2VyOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1vdXRsaW5lLWRhbmdlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLWRhbmdlci5kcm9wZG93bi10b2dnbGU6Zm9jdXMgeyBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMzIsIDgzLCA3MSwgMC41KTsgfQoKLmJ0bi1vdXRsaW5lLWRhcmsgeyBjb2xvcjogIzFjMmI0NjsgYm9yZGVyLWNvbG9yOiAjMWMyYjQ2OyB9CgouYnRuLW91dGxpbmUtZGFyazpob3ZlciB7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMWMyYjQ2OyBib3JkZXItY29sb3I6ICMxYzJiNDY7IH0KCi5idG4tb3V0bGluZS1kYXJrOmZvY3VzLCAuYnRuLW91dGxpbmUtZGFyay5mb2N1cyB7IGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDI4LCA0MywgNzAsIDAuNSk7IH0KCi5idG4tb3V0bGluZS1kYXJrLmRpc2FibGVkLCAuYnRuLW91dGxpbmUtZGFyazpkaXNhYmxlZCB7IGNvbG9yOiAjMWMyYjQ2OyBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfQoKLmJ0bi1vdXRsaW5lLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLW91dGxpbmUtZGFyazpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLWRhcmsuZHJvcGRvd24tdG9nZ2xlIHsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICMxYzJiNDY7IGJvcmRlci1jb2xvcjogIzFjMmI0NjsgfQoKLmJ0bi1vdXRsaW5lLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLW91dGxpbmUtZGFyazpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLWRhcmsuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjgsIDQzLCA3MCwgMC41KTsgfQoKLmJ0bi1vdXRsaW5lLWdyYXkgeyBjb2xvcjogIzgwOTFhNzsgYm9yZGVyLWNvbG9yOiAjODA5MWE3OyB9CgouYnRuLW91dGxpbmUtZ3JheTpob3ZlciB7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjODA5MWE3OyBib3JkZXItY29sb3I6ICM4MDkxYTc7IH0KCi5idG4tb3V0bGluZS1ncmF5OmZvY3VzLCAuYnRuLW91dGxpbmUtZ3JheS5mb2N1cyB7IGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDEyOCwgMTQ1LCAxNjcsIDAuNSk7IH0KCi5idG4tb3V0bGluZS1ncmF5LmRpc2FibGVkLCAuYnRuLW91dGxpbmUtZ3JheTpkaXNhYmxlZCB7IGNvbG9yOiAjODA5MWE3OyBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfQoKLmJ0bi1vdXRsaW5lLWdyYXk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLW91dGxpbmUtZ3JheTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLWdyYXkuZHJvcGRvd24tdG9nZ2xlIHsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICM4MDkxYTc7IGJvcmRlci1jb2xvcjogIzgwOTFhNzsgfQoKLmJ0bi1vdXRsaW5lLWdyYXk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLW91dGxpbmUtZ3JheTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLWdyYXkuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMTI4LCAxNDUsIDE2NywgMC41KTsgfQoKLmJ0bi1vdXRsaW5lLWxpZ2h0IHsgY29sb3I6ICNlNWU5ZjI7IGJvcmRlci1jb2xvcjogI2U1ZTlmMjsgfQoKLmJ0bi1vdXRsaW5lLWxpZ2h0OmhvdmVyIHsgY29sb3I6ICMxMDE5MjQ7IGJhY2tncm91bmQtY29sb3I6ICNlNWU5ZjI7IGJvcmRlci1jb2xvcjogI2U1ZTlmMjsgfQoKLmJ0bi1vdXRsaW5lLWxpZ2h0OmZvY3VzLCAuYnRuLW91dGxpbmUtbGlnaHQuZm9jdXMgeyBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyMjksIDIzMywgMjQyLCAwLjUpOyB9CgouYnRuLW91dGxpbmUtbGlnaHQuZGlzYWJsZWQsIC5idG4tb3V0bGluZS1saWdodDpkaXNhYmxlZCB7IGNvbG9yOiAjZTVlOWYyOyBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfQoKLmJ0bi1vdXRsaW5lLWxpZ2h0Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmJ0bi1vdXRsaW5lLWxpZ2h0Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwgLnNob3cgPiAuYnRuLW91dGxpbmUtbGlnaHQuZHJvcGRvd24tdG9nZ2xlIHsgY29sb3I6ICMxMDE5MjQ7IGJhY2tncm91bmQtY29sb3I6ICNlNWU5ZjI7IGJvcmRlci1jb2xvcjogI2U1ZTlmMjsgfQoKLmJ0bi1vdXRsaW5lLWxpZ2h0Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZTpmb2N1cywgLmJ0bi1vdXRsaW5lLWxpZ2h0Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZTpmb2N1cywgLnNob3cgPiAuYnRuLW91dGxpbmUtbGlnaHQuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjI5LCAyMzMsIDI0MiwgMC41KTsgfQoKLmJ0bi1vdXRsaW5lLWxpZ2h0ZXIgeyBjb2xvcjogI2Y1ZjZmYTsgYm9yZGVyLWNvbG9yOiAjZjVmNmZhOyB9CgouYnRuLW91dGxpbmUtbGlnaHRlcjpob3ZlciB7IGNvbG9yOiAjMTAxOTI0OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNmZhOyBib3JkZXItY29sb3I6ICNmNWY2ZmE7IH0KCi5idG4tb3V0bGluZS1saWdodGVyOmZvY3VzLCAuYnRuLW91dGxpbmUtbGlnaHRlci5mb2N1cyB7IGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDI0NSwgMjQ2LCAyNTAsIDAuNSk7IH0KCi5idG4tb3V0bGluZS1saWdodGVyLmRpc2FibGVkLCAuYnRuLW91dGxpbmUtbGlnaHRlcjpkaXNhYmxlZCB7IGNvbG9yOiAjZjVmNmZhOyBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfQoKLmJ0bi1vdXRsaW5lLWxpZ2h0ZXI6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuYnRuLW91dGxpbmUtbGlnaHRlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLWxpZ2h0ZXIuZHJvcGRvd24tdG9nZ2xlIHsgY29sb3I6ICMxMDE5MjQ7IGJhY2tncm91bmQtY29sb3I6ICNmNWY2ZmE7IGJvcmRlci1jb2xvcjogI2Y1ZjZmYTsgfQoKLmJ0bi1vdXRsaW5lLWxpZ2h0ZXI6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlOmZvY3VzLCAuYnRuLW91dGxpbmUtbGlnaHRlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmU6Zm9jdXMsIC5zaG93ID4gLmJ0bi1vdXRsaW5lLWxpZ2h0ZXIuZHJvcGRvd24tdG9nZ2xlOmZvY3VzIHsgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjQ1LCAyNDYsIDI1MCwgMC41KTsgfQoKLmJ0bi1saW5rIHsgZm9udC13ZWlnaHQ6IDQwMDsgY29sb3I6ICMzYThkZmU7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfQoKLmJ0bi1saW5rOmhvdmVyIHsgY29sb3I6ICMwNzcwZmU7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9CgouYnRuLWxpbms6Zm9jdXMsIC5idG4tbGluay5mb2N1cyB7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9CgouYnRuLWxpbms6ZGlzYWJsZWQsIC5idG4tbGluay5kaXNhYmxlZCB7IGNvbG9yOiAjZjVmNmZhOyBwb2ludGVyLWV2ZW50czogbm9uZTsgfQoKLmJ0bi1sZywgLmJ0bi1ncm91cC1sZyA+IC5idG4sIC5kdWFsLWxpc3Rib3ggLmJ0bi1ncm91cC1sZyA+IC5kdWFsLWxpc3Rib3hfX2J1dHRvbiB7IHBhZGRpbmc6IDAuNjg3NXJlbSAxLjVyZW07IGZvbnQtc2l6ZTogMC45Mzc1cmVtOyBsaW5lLWhlaWdodDogMS4yNXJlbTsgYm9yZGVyLXJhZGl1czogNXB4OyB9CgouYnRuLXNtLCAuYnRuLWdyb3VwLXNtID4gLmJ0biwgLmR1YWwtbGlzdGJveCAuYnRuLWdyb3VwLXNtID4gLmR1YWwtbGlzdGJveF9fYnV0dG9uIHsgcGFkZGluZzogMC4yNXJlbSAwLjc1cmVtOyBmb250LXNpemU6IDAuNzVyZW07IGxpbmUtaGVpZ2h0OiAxLjI1cmVtOyBib3JkZXItcmFkaXVzOiAzcHg7IH0KCi5idG4tYmxvY2sgeyBkaXNwbGF5OiBibG9jazsgd2lkdGg6IDEwMCU7IH0KCi5idG4tYmxvY2sgKyAuYnRuLWJsb2NrIHsgbWFyZ2luLXRvcDogMC41cmVtOyB9CgppbnB1dFt0eXBlPSJzdWJtaXQiXS5idG4tYmxvY2ssIGlucHV0W3R5cGU9InJlc2V0Il0uYnRuLWJsb2NrLCBpbnB1dFt0eXBlPSJidXR0b24iXS5idG4tYmxvY2sgeyB3aWR0aDogMTAwJTsgfQoKLmZhZGUgeyB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTVzIGxpbmVhcjsgfQoKQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHsgLmZhZGUgeyB0cmFuc2l0aW9uOiBub25lOyB9IH0KCi5mYWRlOm5vdCguc2hvdykgeyBvcGFjaXR5OiAwOyB9CgouY29sbGFwc2U6bm90KC5zaG93KSB7IGRpc3BsYXk6IG5vbmU7IH0KCi5jb2xsYXBzaW5nIHsgcG9zaXRpb246IHJlbGF0aXZlOyBoZWlnaHQ6IDA7IG92ZXJmbG93OiBoaWRkZW47IHRyYW5zaXRpb246IGhlaWdodCAwLjM1cyBlYXNlOyB9CgpAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgeyAuY29sbGFwc2luZyB7IHRyYW5zaXRpb246IG5vbmU7IH0gfQoKLmRyb3B1cCwgLmRyb3ByaWdodCwgLmRyb3Bkb3duLCAuZHJvcGxlZnQgeyBwb3NpdGlvbjogcmVsYXRpdmU7IH0KCi5kcm9wZG93bi10b2dnbGUgeyB3aGl0ZS1zcGFjZTogbm93cmFwOyB9CgouZHJvcGRvd24tdG9nZ2xlOjphZnRlciB7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgbWFyZ2luLWxlZnQ6IDAuMjU1ZW07IHZlcnRpY2FsLWFsaWduOiAwLjI1NWVtOyBjb250ZW50OiAiIjsgYm9yZGVyLXRvcDogMC4zZW0gc29saWQ7IGJvcmRlci1yaWdodDogMC4zZW0gc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1ib3R0b206IDA7IGJvcmRlci1sZWZ0OiAwLjNlbSBzb2xpZCB0cmFuc3BhcmVudDsgfQoKLmRyb3Bkb3duLXRvZ2dsZTplbXB0eTo6YWZ0ZXIgeyBtYXJnaW4tbGVmdDogMDsgfQoKLmRyb3Bkb3duLW1lbnUgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMTAwJTsgbGVmdDogMDsgei1pbmRleDogMTAwMDsgZGlzcGxheTogbm9uZTsgZmxvYXQ6IGxlZnQ7IHRleHQtYWxpZ246IGxlZnQ7IG1pbi13aWR0aDogMTgwcHg7IHBhZGRpbmc6IDAgMDsgbWFyZ2luOiAwLjEyNXJlbSAwIDA7IGZvbnQtc2l6ZTogMC44MTI1cmVtOyBjb2xvcjogIzUyNjQ4NDsgbGlzdC1zdHlsZTogbm9uZTsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDsgYm9yZGVyOiAxcHggc29saWQgI2U1ZTlmMjsgYm9yZGVyLXJhZGl1czogNHB4OyB9CgouZHJvcGRvd24tbWVudS1sZWZ0IHsgcmlnaHQ6IGF1dG87IGxlZnQ6IDA7IH0KCi5kcm9wZG93bi1tZW51LXJpZ2h0IHsgcmlnaHQ6IDA7IGxlZnQ6IGF1dG87IH0KCkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgeyAuZHJvcGRvd24tbWVudS1zbS1sZWZ0IHsgcmlnaHQ6IGF1dG87IGxlZnQ6IDA7IH0KICAuZHJvcGRvd24tbWVudS1zbS1yaWdodCB7IHJpZ2h0OiAwOyBsZWZ0OiBhdXRvOyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgeyAuZHJvcGRvd24tbWVudS1tZC1sZWZ0IHsgcmlnaHQ6IGF1dG87IGxlZnQ6IDA7IH0KICAuZHJvcGRvd24tbWVudS1tZC1yaWdodCB7IHJpZ2h0OiAwOyBsZWZ0OiBhdXRvOyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgeyAuZHJvcGRvd24tbWVudS1sZy1sZWZ0IHsgcmlnaHQ6IGF1dG87IGxlZnQ6IDA7IH0KICAuZHJvcGRvd24tbWVudS1sZy1yaWdodCB7IHJpZ2h0OiAwOyBsZWZ0OiBhdXRvOyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsgLmRyb3Bkb3duLW1lbnUteGwtbGVmdCB7IHJpZ2h0OiBhdXRvOyBsZWZ0OiAwOyB9CiAgLmRyb3Bkb3duLW1lbnUteGwtcmlnaHQgeyByaWdodDogMDsgbGVmdDogYXV0bzsgfSB9CgpAbWVkaWEgKG1pbi13aWR0aDogMTU0MHB4KSB7IC5kcm9wZG93bi1tZW51LXh4bC1sZWZ0IHsgcmlnaHQ6IGF1dG87IGxlZnQ6IDA7IH0KICAuZHJvcGRvd24tbWVudS14eGwtcmlnaHQgeyByaWdodDogMDsgbGVmdDogYXV0bzsgfSB9CgouZHJvcHVwIC5kcm9wZG93bi1tZW51IHsgdG9wOiBhdXRvOyBib3R0b206IDEwMCU7IG1hcmdpbi10b3A6IDA7IG1hcmdpbi1ib3R0b206IDAuMTI1cmVtOyB9CgouZHJvcHVwIC5kcm9wZG93bi10b2dnbGU6OmFmdGVyIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBtYXJnaW4tbGVmdDogMC4yNTVlbTsgdmVydGljYWwtYWxpZ246IDAuMjU1ZW07IGNvbnRlbnQ6ICIiOyBib3JkZXItdG9wOiAwOyBib3JkZXItcmlnaHQ6IDAuM2VtIHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItYm90dG9tOiAwLjNlbSBzb2xpZDsgYm9yZGVyLWxlZnQ6IDAuM2VtIHNvbGlkIHRyYW5zcGFyZW50OyB9CgouZHJvcHVwIC5kcm9wZG93bi10b2dnbGU6ZW1wdHk6OmFmdGVyIHsgbWFyZ2luLWxlZnQ6IDA7IH0KCi5kcm9wcmlnaHQgLmRyb3Bkb3duLW1lbnUgeyB0b3A6IDA7IG1hcmdpbi10b3A6IDA7IHJpZ2h0OiBhdXRvOyBsZWZ0OiAxMDAlOyBtYXJnaW4tbGVmdDogMC4xMjVyZW07IH0KCi5kcm9wcmlnaHQgLmRyb3Bkb3duLXRvZ2dsZTo6YWZ0ZXIgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IG1hcmdpbi1sZWZ0OiAwLjI1NWVtOyB2ZXJ0aWNhbC1hbGlnbjogMC4yNTVlbTsgY29udGVudDogIiI7IGJvcmRlci10b3A6IDAuM2VtIHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItcmlnaHQ6IDA7IGJvcmRlci1ib3R0b206IDAuM2VtIHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItbGVmdDogMC4zZW0gc29saWQ7IH0KCi5kcm9wcmlnaHQgLmRyb3Bkb3duLXRvZ2dsZTplbXB0eTo6YWZ0ZXIgeyBtYXJnaW4tbGVmdDogMDsgfQoKLmRyb3ByaWdodCAuZHJvcGRvd24tdG9nZ2xlOjphZnRlciB7IHZlcnRpY2FsLWFsaWduOiAwOyB9CgouZHJvcGxlZnQgLmRyb3Bkb3duLW1lbnUgeyB0b3A6IDA7IG1hcmdpbi10b3A6IDA7IHJpZ2h0OiAxMDAlOyBsZWZ0OiBhdXRvOyBtYXJnaW4tcmlnaHQ6IDAuMTI1cmVtOyB9CgouZHJvcGxlZnQgLmRyb3Bkb3duLXRvZ2dsZTo6YWZ0ZXIgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IG1hcmdpbi1sZWZ0OiAwLjI1NWVtOyB2ZXJ0aWNhbC1hbGlnbjogMC4yNTVlbTsgY29udGVudDogIiI7IH0KCi5kcm9wbGVmdCAuZHJvcGRvd24tdG9nZ2xlOjphZnRlciB7IGRpc3BsYXk6IG5vbmU7IH0KCi5kcm9wbGVmdCAuZHJvcGRvd24tdG9nZ2xlOjpiZWZvcmUgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IG1hcmdpbi1yaWdodDogMC4yNTVlbTsgdmVydGljYWwtYWxpZ246IDAuMjU1ZW07IGNvbnRlbnQ6ICIiOyBib3JkZXItdG9wOiAwLjNlbSBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXJpZ2h0OiAwLjNlbSBzb2xpZDsgYm9yZGVyLWJvdHRvbTogMC4zZW0gc29saWQgdHJhbnNwYXJlbnQ7IH0KCi5kcm9wbGVmdCAuZHJvcGRvd24tdG9nZ2xlOmVtcHR5OjphZnRlciB7IG1hcmdpbi1sZWZ0OiAwOyB9CgouZHJvcGxlZnQgLmRyb3Bkb3duLXRvZ2dsZTo6YmVmb3JlIHsgdmVydGljYWwtYWxpZ246IDA7IH0KCi5kcm9wZG93bi1tZW51W3gtcGxhY2VtZW50Xj0idG9wIl0sIC5kcm9wZG93bi1tZW51W3gtcGxhY2VtZW50Xj0icmlnaHQiXSwgLmRyb3Bkb3duLW1lbnVbeC1wbGFjZW1lbnRePSJib3R0b20iXSwgLmRyb3Bkb3duLW1lbnVbeC1wbGFjZW1lbnRePSJsZWZ0Il0geyByaWdodDogYXV0bzsgYm90dG9tOiBhdXRvOyB9CgouZHJvcGRvd24tZGl2aWRlciB7IGhlaWdodDogMDsgbWFyZ2luOiAxMnB4IDA7IG92ZXJmbG93OiBoaWRkZW47IGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTVlOWYyOyB9CgouZHJvcGRvd24taXRlbSB7IGRpc3BsYXk6IGJsb2NrOyB3aWR0aDogMTAwJTsgcGFkZGluZzogOHB4IDE0cHg7IGNsZWFyOiBib3RoOyBmb250LXdlaWdodDogNDAwOyBjb2xvcjogIzM2NGE2MzsgdGV4dC1hbGlnbjogaW5oZXJpdDsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IGJvcmRlcjogMDsgfQoKLmRyb3Bkb3duLWl0ZW06Zmlyc3QtY2hpbGQgeyBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiBjYWxjKDRweCAtIDFweCk7IGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiBjYWxjKDRweCAtIDFweCk7IH0KCi5kcm9wZG93bi1pdGVtOmxhc3QtY2hpbGQgeyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogY2FsYyg0cHggLSAxcHgpOyBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiBjYWxjKDRweCAtIDFweCk7IH0KCi5kcm9wZG93bi1pdGVtOmhvdmVyLCAuZHJvcGRvd24taXRlbTpmb2N1cyB7IGNvbG9yOiAjMDk3MWZlOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGJhY2tncm91bmQtY29sb3I6ICNlYmVlZjI7IH0KCi5kcm9wZG93bi1pdGVtLmFjdGl2ZSwgLmRyb3Bkb3duLWl0ZW06YWN0aXZlIHsgY29sb3I6ICMwOTcxZmU7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgYmFja2dyb3VuZC1jb2xvcjogI2RiZGZlYTsgfQoKLmRyb3Bkb3duLWl0ZW0uZGlzYWJsZWQsIC5kcm9wZG93bi1pdGVtOmRpc2FibGVkIHsgY29sb3I6ICNlYmVlZjI7IHBvaW50ZXItZXZlbnRzOiBub25lOyBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfQoKLmRyb3Bkb3duLW1lbnUuc2hvdyB7IGRpc3BsYXk6IGJsb2NrOyB9CgouZHJvcGRvd24taGVhZGVyIHsgZGlzcGxheTogYmxvY2s7IHBhZGRpbmc6IDAgMTRweDsgbWFyZ2luLWJvdHRvbTogMDsgZm9udC1zaXplOiAwLjc1cmVtOyBjb2xvcjogIzgwOTFhNzsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfQoKLmRyb3Bkb3duLWl0ZW0tdGV4dCB7IGRpc3BsYXk6IGJsb2NrOyBwYWRkaW5nOiA4cHggMTRweDsgY29sb3I6ICMzNjRhNjM7IH0KCi5idG4tZ3JvdXAsIC5idG4tZ3JvdXAtdmVydGljYWwgeyBwb3NpdGlvbjogcmVsYXRpdmU7IGRpc3BsYXk6IGlubGluZS1mbGV4OyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9CgouYnRuLWdyb3VwID4gLmJ0biwgLmR1YWwtbGlzdGJveCAuYnRuLWdyb3VwID4gLmR1YWwtbGlzdGJveF9fYnV0dG9uLCAuYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0biwgLmR1YWwtbGlzdGJveCAuYnRuLWdyb3VwLXZlcnRpY2FsID4gLmR1YWwtbGlzdGJveF9fYnV0dG9uIHsgcG9zaXRpb246IHJlbGF0aXZlOyBmbGV4OiAxIDEgYXV0bzsgfQoKLmJ0bi1ncm91cCA+IC5idG46aG92ZXIsIC5kdWFsLWxpc3Rib3ggLmJ0bi1ncm91cCA+IC5kdWFsLWxpc3Rib3hfX2J1dHRvbjpob3ZlciwgLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46aG92ZXIsIC5kdWFsLWxpc3Rib3ggLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5kdWFsLWxpc3Rib3hfX2J1dHRvbjpob3ZlciB7IHotaW5kZXg6IDE7IH0KCi5idG4tZ3JvdXAgPiAuYnRuOmZvY3VzLCAuZHVhbC1saXN0Ym94IC5idG4tZ3JvdXAgPiAuZHVhbC1saXN0Ym94X19idXR0b246Zm9jdXMsIC5idG4tZ3JvdXAgPiAuYnRuOmFjdGl2ZSwgLmR1YWwtbGlzdGJveCAuYnRuLWdyb3VwID4gLmR1YWwtbGlzdGJveF9fYnV0dG9uOmFjdGl2ZSwgLmJ0bi1ncm91cCA+IC5idG4uYWN0aXZlLCAuZHVhbC1saXN0Ym94IC5idG4tZ3JvdXAgPiAuYWN0aXZlLmR1YWwtbGlzdGJveF9fYnV0dG9uLCAuYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bjpmb2N1cywgLmR1YWwtbGlzdGJveCAuYnRuLWdyb3VwLXZlcnRpY2FsID4gLmR1YWwtbGlzdGJveF9fYnV0dG9uOmZvY3VzLCAuYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bjphY3RpdmUsIC5kdWFsLWxpc3Rib3ggLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5kdWFsLWxpc3Rib3hfX2J1dHRvbjphY3RpdmUsIC5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLmFjdGl2ZSwgLmR1YWwtbGlzdGJveCAuYnRuLWdyb3VwLXZlcnRpY2FsID4gLmFjdGl2ZS5kdWFsLWxpc3Rib3hfX2J1dHRvbiB7IHotaW5kZXg6IDE7IH0KCi5idG4tdG9vbGJhciB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtd3JhcDogd3JhcDsganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OyB9CgouYnRuLXRvb2xiYXIgLmlucHV0LWdyb3VwIHsgd2lkdGg6IGF1dG87IH0KCi5idG4tZ3JvdXAgPiAuYnRuOm5vdCg6Zmlyc3QtY2hpbGQpLCAuZHVhbC1saXN0Ym94IC5idG4tZ3JvdXAgPiAuZHVhbC1saXN0Ym94X19idXR0b246bm90KDpmaXJzdC1jaGlsZCksIC5idG4tZ3JvdXAgPiAuYnRuLWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpIHsgbWFyZ2luLWxlZnQ6IC0xcHg7IH0KCi5idG4tZ3JvdXAgPiAuYnRuOm5vdCg6bGFzdC1jaGlsZCk6bm90KC5kcm9wZG93bi10b2dnbGUpLCAuZHVhbC1saXN0Ym94IC5idG4tZ3JvdXAgPiAuZHVhbC1saXN0Ym94X19idXR0b246bm90KDpsYXN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLXRvZ2dsZSksIC5idG4tZ3JvdXAgPiAuYnRuLWdyb3VwOm5vdCg6bGFzdC1jaGlsZCkgPiAuYnRuLCAuZHVhbC1saXN0Ym94IC5idG4tZ3JvdXAgPiAuYnRuLWdyb3VwOm5vdCg6bGFzdC1jaGlsZCkgPiAuZHVhbC1saXN0Ym94X19idXR0b24geyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7IH0KCi5idG4tZ3JvdXAgPiAuYnRuOm5vdCg6Zmlyc3QtY2hpbGQpLCAuZHVhbC1saXN0Ym94IC5idG4tZ3JvdXAgPiAuZHVhbC1saXN0Ym94X19idXR0b246bm90KDpmaXJzdC1jaGlsZCksIC5idG4tZ3JvdXAgPiAuYnRuLWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpID4gLmJ0biwgLmR1YWwtbGlzdGJveCAuYnRuLWdyb3VwID4gLmJ0bi1ncm91cDpub3QoOmZpcnN0LWNoaWxkKSA+IC5kdWFsLWxpc3Rib3hfX2J1dHRvbiB7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7IH0KCi5kcm9wZG93bi10b2dnbGUtc3BsaXQgeyBwYWRkaW5nLXJpZ2h0OiAwLjg0Mzc1cmVtOyBwYWRkaW5nLWxlZnQ6IDAuODQzNzVyZW07IH0KCi5kcm9wZG93bi10b2dnbGUtc3BsaXQ6OmFmdGVyLCAuZHJvcHVwIC5kcm9wZG93bi10b2dnbGUtc3BsaXQ6OmFmdGVyLCAuZHJvcHJpZ2h0IC5kcm9wZG93bi10b2dnbGUtc3BsaXQ6OmFmdGVyIHsgbWFyZ2luLWxlZnQ6IDA7IH0KCi5kcm9wbGVmdCAuZHJvcGRvd24tdG9nZ2xlLXNwbGl0OjpiZWZvcmUgeyBtYXJnaW4tcmlnaHQ6IDA7IH0KCi5idG4tc20gKyAuZHJvcGRvd24tdG9nZ2xlLXNwbGl0LCAuYnRuLWdyb3VwLXNtID4gLmJ0biArIC5kcm9wZG93bi10b2dnbGUtc3BsaXQsIC5kdWFsLWxpc3Rib3ggLmJ0bi1ncm91cC1zbSA+IC5kdWFsLWxpc3Rib3hfX2J1dHRvbiArIC5kcm9wZG93bi10b2dnbGUtc3BsaXQgeyBwYWRkaW5nLXJpZ2h0OiAwLjU2MjVyZW07IHBhZGRpbmctbGVmdDogMC41NjI1cmVtOyB9CgouYnRuLWxnICsgLmRyb3Bkb3duLXRvZ2dsZS1zcGxpdCwgLmJ0bi1ncm91cC1sZyA+IC5idG4gKyAuZHJvcGRvd24tdG9nZ2xlLXNwbGl0LCAuZHVhbC1saXN0Ym94IC5idG4tZ3JvdXAtbGcgPiAuZHVhbC1saXN0Ym94X19idXR0b24gKyAuZHJvcGRvd24tdG9nZ2xlLXNwbGl0IHsgcGFkZGluZy1yaWdodDogMS4xMjVyZW07IHBhZGRpbmctbGVmdDogMS4xMjVyZW07IH0KCi5idG4tZ3JvdXAtdmVydGljYWwgeyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBhbGlnbi1pdGVtczogZmxleC1zdGFydDsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IH0KCi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLCAuZHVhbC1saXN0Ym94IC5idG4tZ3JvdXAtdmVydGljYWwgPiAuZHVhbC1saXN0Ym94X19idXR0b24sIC5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwIHsgd2lkdGg6IDEwMCU7IH0KCi5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuOm5vdCg6Zmlyc3QtY2hpbGQpLCAuZHVhbC1saXN0Ym94IC5idG4tZ3JvdXAtdmVydGljYWwgPiAuZHVhbC1saXN0Ym94X19idXR0b246bm90KDpmaXJzdC1jaGlsZCksIC5idG4tZ3JvdXAtdmVydGljYWwgPiAuYnRuLWdyb3VwOm5vdCg6Zmlyc3QtY2hpbGQpIHsgbWFyZ2luLXRvcDogLTFweDsgfQoKLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG46bm90KDpsYXN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLXRvZ2dsZSksIC5kdWFsLWxpc3Rib3ggLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5kdWFsLWxpc3Rib3hfX2J1dHRvbjpub3QoOmxhc3QtY2hpbGQpOm5vdCguZHJvcGRvd24tdG9nZ2xlKSwgLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXA6bm90KDpsYXN0LWNoaWxkKSA+IC5idG4sIC5kdWFsLWxpc3Rib3ggLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXA6bm90KDpsYXN0LWNoaWxkKSA+IC5kdWFsLWxpc3Rib3hfX2J1dHRvbiB7IGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOyBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOyB9CgouYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bjpub3QoOmZpcnN0LWNoaWxkKSwgLmR1YWwtbGlzdGJveCAuYnRuLWdyb3VwLXZlcnRpY2FsID4gLmR1YWwtbGlzdGJveF9fYnV0dG9uOm5vdCg6Zmlyc3QtY2hpbGQpLCAuYnRuLWdyb3VwLXZlcnRpY2FsID4gLmJ0bi1ncm91cDpub3QoOmZpcnN0LWNoaWxkKSA+IC5idG4sIC5kdWFsLWxpc3Rib3ggLmJ0bi1ncm91cC12ZXJ0aWNhbCA+IC5idG4tZ3JvdXA6bm90KDpmaXJzdC1jaGlsZCkgPiAuZHVhbC1saXN0Ym94X19idXR0b24geyBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsgfQoKLmJ0bi1ncm91cC10b2dnbGUgPiAuYnRuLCAuZHVhbC1saXN0Ym94IC5idG4tZ3JvdXAtdG9nZ2xlID4gLmR1YWwtbGlzdGJveF9fYnV0dG9uLCAuYnRuLWdyb3VwLXRvZ2dsZSA+IC5idG4tZ3JvdXAgPiAuYnRuLCAuZHVhbC1saXN0Ym94IC5idG4tZ3JvdXAtdG9nZ2xlID4gLmJ0bi1ncm91cCA+IC5kdWFsLWxpc3Rib3hfX2J1dHRvbiB7IG1hcmdpbi1ib3R0b206IDA7IH0KCi5idG4tZ3JvdXAtdG9nZ2xlID4gLmJ0biBpbnB1dFt0eXBlPSJyYWRpbyJdLCAuZHVhbC1saXN0Ym94IC5idG4tZ3JvdXAtdG9nZ2xlID4gLmR1YWwtbGlzdGJveF9fYnV0dG9uIGlucHV0W3R5cGU9InJhZGlvIl0sIC5idG4tZ3JvdXAtdG9nZ2xlID4gLmJ0biBpbnB1dFt0eXBlPSJjaGVja2JveCJdLCAuZHVhbC1saXN0Ym94IC5idG4tZ3JvdXAtdG9nZ2xlID4gLmR1YWwtbGlzdGJveF9fYnV0dG9uIGlucHV0W3R5cGU9ImNoZWNrYm94Il0sIC5idG4tZ3JvdXAtdG9nZ2xlID4gLmJ0bi1ncm91cCA+IC5idG4gaW5wdXRbdHlwZT0icmFkaW8iXSwgLmR1YWwtbGlzdGJveCAuYnRuLWdyb3VwLXRvZ2dsZSA+IC5idG4tZ3JvdXAgPiAuZHVhbC1saXN0Ym94X19idXR0b24gaW5wdXRbdHlwZT0icmFkaW8iXSwgLmJ0bi1ncm91cC10b2dnbGUgPiAuYnRuLWdyb3VwID4gLmJ0biBpbnB1dFt0eXBlPSJjaGVja2JveCJdLCAuZHVhbC1saXN0Ym94IC5idG4tZ3JvdXAtdG9nZ2xlID4gLmJ0bi1ncm91cCA+IC5kdWFsLWxpc3Rib3hfX2J1dHRvbiBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsgcG9zaXRpb246IGFic29sdXRlOyBjbGlwOiByZWN0KDAsIDAsIDAsIDApOyBwb2ludGVyLWV2ZW50czogbm9uZTsgfQoKLmlucHV0LWdyb3VwIHsgcG9zaXRpb246IHJlbGF0aXZlOyBkaXNwbGF5OiBmbGV4OyBmbGV4LXdyYXA6IHdyYXA7IGFsaWduLWl0ZW1zOiBzdHJldGNoOyB3aWR0aDogMTAwJTsgfQoKLmlucHV0LWdyb3VwID4gLmZvcm0tY29udHJvbCwgLmR1YWwtbGlzdGJveCAuaW5wdXQtZ3JvdXAgPiAuZHVhbC1saXN0Ym94X19zZWFyY2gsIC5pbnB1dC1ncm91cCA+IC5mb3JtLWNvbnRyb2wtcGxhaW50ZXh0LCAuaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLXNlbGVjdCwgLmlucHV0LWdyb3VwID4gLmN1c3RvbS1maWxlIHsgcG9zaXRpb246IHJlbGF0aXZlOyBmbGV4OiAxIDEgYXV0bzsgd2lkdGg6IDElOyBtaW4td2lkdGg6IDA7IG1hcmdpbi1ib3R0b206IDA7IH0KCi5pbnB1dC1ncm91cCA+IC5mb3JtLWNvbnRyb2wgKyAuZm9ybS1jb250cm9sLCAuZHVhbC1saXN0Ym94IC5pbnB1dC1ncm91cCA+IC5kdWFsLWxpc3Rib3hfX3NlYXJjaCArIC5mb3JtLWNvbnRyb2wsIC5kdWFsLWxpc3Rib3ggLmlucHV0LWdyb3VwID4gLmZvcm0tY29udHJvbCArIC5kdWFsLWxpc3Rib3hfX3NlYXJjaCwgLmR1YWwtbGlzdGJveCAuaW5wdXQtZ3JvdXAgPiAuZHVhbC1saXN0Ym94X19zZWFyY2ggKyAuZHVhbC1saXN0Ym94X19zZWFyY2gsIC5pbnB1dC1ncm91cCA+IC5mb3JtLWNvbnRyb2wgKyAuY3VzdG9tLXNlbGVjdCwgLmR1YWwtbGlzdGJveCAuaW5wdXQtZ3JvdXAgPiAuZHVhbC1saXN0Ym94X19zZWFyY2ggKyAuY3VzdG9tLXNlbGVjdCwgLmlucHV0LWdyb3VwID4gLmZvcm0tY29udHJvbCArIC5jdXN0b20tZmlsZSwgLmR1YWwtbGlzdGJveCAuaW5wdXQtZ3JvdXAgPiAuZHVhbC1saXN0Ym94X19zZWFyY2ggKyAuY3VzdG9tLWZpbGUsIC5pbnB1dC1ncm91cCA+IC5mb3JtLWNvbnRyb2wtcGxhaW50ZXh0ICsgLmZvcm0tY29udHJvbCwgLmR1YWwtbGlzdGJveCAuaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sLXBsYWludGV4dCArIC5kdWFsLWxpc3Rib3hfX3NlYXJjaCwgLmlucHV0LWdyb3VwID4gLmZvcm0tY29udHJvbC1wbGFpbnRleHQgKyAuY3VzdG9tLXNlbGVjdCwgLmlucHV0LWdyb3VwID4gLmZvcm0tY29udHJvbC1wbGFpbnRleHQgKyAuY3VzdG9tLWZpbGUsIC5pbnB1dC1ncm91cCA+IC5jdXN0b20tc2VsZWN0ICsgLmZvcm0tY29udHJvbCwgLmR1YWwtbGlzdGJveCAuaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLXNlbGVjdCArIC5kdWFsLWxpc3Rib3hfX3NlYXJjaCwgLmlucHV0LWdyb3VwID4gLmN1c3RvbS1zZWxlY3QgKyAuY3VzdG9tLXNlbGVjdCwgLmlucHV0LWdyb3VwID4gLmN1c3RvbS1zZWxlY3QgKyAuY3VzdG9tLWZpbGUsIC5pbnB1dC1ncm91cCA+IC5jdXN0b20tZmlsZSArIC5mb3JtLWNvbnRyb2wsIC5kdWFsLWxpc3Rib3ggLmlucHV0LWdyb3VwID4gLmN1c3RvbS1maWxlICsgLmR1YWwtbGlzdGJveF9fc2VhcmNoLCAuaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLWZpbGUgKyAuY3VzdG9tLXNlbGVjdCwgLmlucHV0LWdyb3VwID4gLmN1c3RvbS1maWxlICsgLmN1c3RvbS1maWxlIHsgbWFyZ2luLWxlZnQ6IC0xcHg7IH0KCi5pbnB1dC1ncm91cCA+IC5mb3JtLWNvbnRyb2w6Zm9jdXMsIC5kdWFsLWxpc3Rib3ggLmlucHV0LWdyb3VwID4gLmR1YWwtbGlzdGJveF9fc2VhcmNoOmZvY3VzLCAuaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLXNlbGVjdDpmb2N1cywgLmlucHV0LWdyb3VwID4gLmN1c3RvbS1maWxlIC5jdXN0b20tZmlsZS1pbnB1dDpmb2N1cyB+IC5jdXN0b20tZmlsZS1sYWJlbCB7IHotaW5kZXg6IDM7IH0KCi5pbnB1dC1ncm91cCA+IC5jdXN0b20tZmlsZSAuY3VzdG9tLWZpbGUtaW5wdXQ6Zm9jdXMgeyB6LWluZGV4OiA0OyB9CgouaW5wdXQtZ3JvdXAgPiAuZm9ybS1jb250cm9sOm5vdCg6bGFzdC1jaGlsZCksIC5kdWFsLWxpc3Rib3ggLmlucHV0LWdyb3VwID4gLmR1YWwtbGlzdGJveF9fc2VhcmNoOm5vdCg6bGFzdC1jaGlsZCksIC5pbnB1dC1ncm91cCA+IC5jdXN0b20tc2VsZWN0Om5vdCg6bGFzdC1jaGlsZCkgeyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7IH0KCi5pbnB1dC1ncm91cCA+IC5mb3JtLWNvbnRyb2w6bm90KDpmaXJzdC1jaGlsZCksIC5kdWFsLWxpc3Rib3ggLmlucHV0LWdyb3VwID4gLmR1YWwtbGlzdGJveF9fc2VhcmNoOm5vdCg6Zmlyc3QtY2hpbGQpLCAuaW5wdXQtZ3JvdXAgPiAuY3VzdG9tLXNlbGVjdDpub3QoOmZpcnN0LWNoaWxkKSB7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7IH0KCi5pbnB1dC1ncm91cCA+IC5jdXN0b20tZmlsZSB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IH0KCi5pbnB1dC1ncm91cCA+IC5jdXN0b20tZmlsZTpub3QoOmxhc3QtY2hpbGQpIC5jdXN0b20tZmlsZS1sYWJlbCwgLmlucHV0LWdyb3VwID4gLmN1c3RvbS1maWxlOm5vdCg6bGFzdC1jaGlsZCkgLmN1c3RvbS1maWxlLWxhYmVsOjphZnRlciB7IGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsgfQoKLmlucHV0LWdyb3VwID4gLmN1c3RvbS1maWxlOm5vdCg6Zmlyc3QtY2hpbGQpIC5jdXN0b20tZmlsZS1sYWJlbCB7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7IH0KCi5pbnB1dC1ncm91cC1wcmVwZW5kLCAuaW5wdXQtZ3JvdXAtYXBwZW5kIHsgZGlzcGxheTogZmxleDsgfQoKLmlucHV0LWdyb3VwLXByZXBlbmQgLmJ0biwgLmlucHV0LWdyb3VwLXByZXBlbmQgLmR1YWwtbGlzdGJveCAuZHVhbC1saXN0Ym94X19idXR0b24sIC5kdWFsLWxpc3Rib3ggLmlucHV0LWdyb3VwLXByZXBlbmQgLmR1YWwtbGlzdGJveF9fYnV0dG9uLCAuaW5wdXQtZ3JvdXAtYXBwZW5kIC5idG4sIC5pbnB1dC1ncm91cC1hcHBlbmQgLmR1YWwtbGlzdGJveCAuZHVhbC1saXN0Ym94X19idXR0b24sIC5kdWFsLWxpc3Rib3ggLmlucHV0LWdyb3VwLWFwcGVuZCAuZHVhbC1saXN0Ym94X19idXR0b24geyBwb3NpdGlvbjogcmVsYXRpdmU7IHotaW5kZXg6IDI7IH0KCi5pbnB1dC1ncm91cC1wcmVwZW5kIC5idG46Zm9jdXMsIC5pbnB1dC1ncm91cC1wcmVwZW5kIC5kdWFsLWxpc3Rib3ggLmR1YWwtbGlzdGJveF9fYnV0dG9uOmZvY3VzLCAuZHVhbC1saXN0Ym94IC5pbnB1dC1ncm91cC1wcmVwZW5kIC5kdWFsLWxpc3Rib3hfX2J1dHRvbjpmb2N1cywgLmlucHV0LWdyb3VwLWFwcGVuZCAuYnRuOmZvY3VzLCAuaW5wdXQtZ3JvdXAtYXBwZW5kIC5kdWFsLWxpc3Rib3ggLmR1YWwtbGlzdGJveF9fYnV0dG9uOmZvY3VzLCAuZHVhbC1saXN0Ym94IC5pbnB1dC1ncm91cC1hcHBlbmQgLmR1YWwtbGlzdGJveF9fYnV0dG9uOmZvY3VzIHsgei1pbmRleDogMzsgfQoKLmlucHV0LWdyb3VwLXByZXBlbmQgLmJ0biArIC5idG4sIC5pbnB1dC1ncm91cC1wcmVwZW5kIC5kdWFsLWxpc3Rib3ggLmR1YWwtbGlzdGJveF9fYnV0dG9uICsgLmJ0biwgLmR1YWwtbGlzdGJveCAuaW5wdXQtZ3JvdXAtcHJlcGVuZCAuZHVhbC1saXN0Ym94X19idXR0b24gKyAuYnRuLCAuaW5wdXQtZ3JvdXAtcHJlcGVuZCAuZHVhbC1saXN0Ym94IC5idG4gKyAuZHVhbC1saXN0Ym94X19idXR0b24sIC5kdWFsLWxpc3Rib3ggLmlucHV0LWdyb3VwLXByZXBlbmQgLmJ0biArIC5kdWFsLWxpc3Rib3hfX2J1dHRvbiwgLmlucHV0LWdyb3VwLXByZXBlbmQgLmR1YWwtbGlzdGJveCAuZHVhbC1saXN0Ym94X19idXR0b24gKyAuZHVhbC1saXN0Ym94X19idXR0b24sIC5kdWFsLWxpc3Rib3ggLmlucHV0LWdyb3VwLXByZXBlbmQgLmR1YWwtbGlzdGJveF9fYnV0dG9uICsgLmR1YWwtbGlzdGJveF9fYnV0dG9uLCAuaW5wdXQtZ3JvdXAtcHJlcGVuZCAuYnRuICsgLmlucHV0LWdyb3VwLXRleHQsIC5pbnB1dC1ncm91cC1wcmVwZW5kIC5kdWFsLWxpc3Rib3ggLmR1YWwtbGlzdGJveF9fYnV0dG9uICsgLmlucHV0LWdyb3VwLXRleHQsIC5kdWFsLWxpc3Rib3ggLmlucHV0LWdyb3VwLXByZXBlbmQgLmR1YWwtbGlzdGJveF9fYnV0dG9uICsgLmlucHV0LWdyb3VwLXRleHQsIC5pbnB1dC1ncm91cC1wcmVwZW5kIC5pbnB1dC1ncm91cC10ZXh0ICsgLmlucHV0LWdyb3VwLXRleHQsIC5pbnB1dC1ncm91cC1wcmVwZW5kIC5pbnB1dC1ncm91cC10ZXh0ICsgLmJ0biwgLmlucHV0LWdyb3VwLXByZXBlbmQgLmR1YWwtbGlzdGJveCAuaW5wdXQtZ3JvdXAtdGV4dCArIC5kdWFsLWxpc3Rib3hfX2J1dHRvbiwgLmR1YWwtbGlzdGJveCAuaW5wdXQtZ3JvdXAtcHJlcGVuZCAuaW5wdXQtZ3JvdXAtdGV4dCArIC5kdWFsLWxpc3Rib3hfX2J1dHRvbiwgLmlucHV0LWdyb3VwLWFwcGVuZCAuYnRuICsgLmJ0biwgLmlucHV0LWdyb3VwLWFwcGVuZCAuZHVhbC1saXN0Ym94IC5kdWFsLWxpc3Rib3hfX2J1dHRvbiArIC5idG4sIC5kdWFsLWxpc3Rib3ggLmlucHV0LWdyb3VwLWFwcGVuZCAuZHVhbC1saXN0Ym94X19idXR0b24gKyAuYnRuLCAuaW5wdXQtZ3JvdXAtYXBwZW5kIC5kdWFsLWxpc3Rib3ggLmJ0biArIC5kdWFsLWxpc3Rib3hfX2J1dHRvbiwgLmR1YWwtbGlzdGJveCAuaW5wdXQtZ3JvdXAtYXBwZW5kIC5idG4gKyAuZHVhbC1saXN0Ym94X19idXR0b24sIC5pbnB1dC1ncm91cC1hcHBlbmQgLmR1YWwtbGlzdGJveCAuZHVhbC1saXN0Ym94X19idXR0b24gKyAuZHVhbC1saXN0Ym94X19idXR0b24sIC5kdWFsLWxpc3Rib3ggLmlucHV0LWdyb3VwLWFwcGVuZCAuZHVhbC1saXN0Ym94X19idXR0b24gKyAuZHVhbC1saXN0Ym94X19idXR0b24sIC5pbnB1dC1ncm91cC1hcHBlbmQgLmJ0biArIC5pbnB1dC1ncm91cC10ZXh0LCAuaW5wdXQtZ3JvdXAtYXBwZW5kIC5kdWFsLWxpc3Rib3ggLmR1YWwtbGlzdGJveF9fYnV0dG9uICsgLmlucHV0LWdyb3VwLXRleHQsIC5kdWFsLWxpc3Rib3ggLmlucHV0LWdyb3VwLWFwcGVuZCAuZHVhbC1saXN0Ym94X19idXR0b24gKyAuaW5wdXQtZ3JvdXAtdGV4dCwgLmlucHV0LWdyb3VwLWFwcGVuZCAuaW5wdXQtZ3JvdXAtdGV4dCArIC5pbnB1dC1ncm91cC10ZXh0LCAuaW5wdXQtZ3JvdXAtYXBwZW5kIC5pbnB1dC1ncm91cC10ZXh0ICsgLmJ0biwgLmlucHV0LWdyb3VwLWFwcGVuZCAuZHVhbC1saXN0Ym94IC5pbnB1dC1ncm91cC10ZXh0ICsgLmR1YWwtbGlzdGJveF9fYnV0dG9uLCAuZHVhbC1saXN0Ym94IC5pbnB1dC1ncm91cC1hcHBlbmQgLmlucHV0LWdyb3VwLXRleHQgKyAuZHVhbC1saXN0Ym94X19idXR0b24geyBtYXJnaW4tbGVmdDogLTFweDsgfQoKLmlucHV0LWdyb3VwLXByZXBlbmQgeyBtYXJnaW4tcmlnaHQ6IC0xcHg7IH0KCi5pbnB1dC1ncm91cC1hcHBlbmQgeyBtYXJnaW4tbGVmdDogLTFweDsgfQoKLmlucHV0LWdyb3VwLXRleHQgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBwYWRkaW5nOiAwLjQzNzVyZW0gMXJlbTsgbWFyZ2luLWJvdHRvbTogMDsgZm9udC1zaXplOiAwLjgxMjVyZW07IGZvbnQtd2VpZ2h0OiA0MDA7IGxpbmUtaGVpZ2h0OiAxLjI1cmVtOyBjb2xvcjogIzNjNGQ2MjsgdGV4dC1hbGlnbjogY2VudGVyOyB3aGl0ZS1zcGFjZTogbm93cmFwOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmOyBib3JkZXI6IDFweCBzb2xpZCAjZGJkZmVhOyBib3JkZXItcmFkaXVzOiA0cHg7IH0KCi5pbnB1dC1ncm91cC10ZXh0IGlucHV0W3R5cGU9InJhZGlvIl0sIC5pbnB1dC1ncm91cC10ZXh0IGlucHV0W3R5cGU9ImNoZWNrYm94Il0geyBtYXJnaW4tdG9wOiAwOyB9CgouaW5wdXQtZ3JvdXAtbGcgPiAuZm9ybS1jb250cm9sOm5vdCh0ZXh0YXJlYSksIC5kdWFsLWxpc3Rib3ggLmlucHV0LWdyb3VwLWxnID4gLmR1YWwtbGlzdGJveF9fc2VhcmNoOm5vdCh0ZXh0YXJlYSksIC5pbnB1dC1ncm91cC1sZyA+IC5jdXN0b20tc2VsZWN0IHsgaGVpZ2h0OiBjYWxjKDIuNjI1cmVtICsgMnB4KTsgfQoKLmlucHV0LWdyb3VwLWxnID4gLmZvcm0tY29udHJvbCwgLmR1YWwtbGlzdGJveCAuaW5wdXQtZ3JvdXAtbGcgPiAuZHVhbC1saXN0Ym94X19zZWFyY2gsIC5pbnB1dC1ncm91cC1sZyA+IC5jdXN0b20tc2VsZWN0LCAuaW5wdXQtZ3JvdXAtbGcgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZCA+IC5pbnB1dC1ncm91cC10ZXh0LCAuaW5wdXQtZ3JvdXAtbGcgPiAuaW5wdXQtZ3JvdXAtYXBwZW5kID4gLmlucHV0LWdyb3VwLXRleHQsIC5pbnB1dC1ncm91cC1sZyA+IC5pbnB1dC1ncm91cC1wcmVwZW5kID4gLmJ0biwgLmR1YWwtbGlzdGJveCAuaW5wdXQtZ3JvdXAtbGcgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZCA+IC5kdWFsLWxpc3Rib3hfX2J1dHRvbiwgLmlucHV0LWdyb3VwLWxnID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5idG4sIC5kdWFsLWxpc3Rib3ggLmlucHV0LWdyb3VwLWxnID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5kdWFsLWxpc3Rib3hfX2J1dHRvbiB7IHBhZGRpbmc6IDAuNjg3NXJlbSAxcmVtOyBmb250LXNpemU6IDAuOTM3NXJlbTsgbGluZS1oZWlnaHQ6IDEuMjVyZW07IGJvcmRlci1yYWRpdXM6IDVweDsgfQoKLmlucHV0LWdyb3VwLXNtID4gLmZvcm0tY29udHJvbDpub3QodGV4dGFyZWEpLCAuZHVhbC1saXN0Ym94IC5pbnB1dC1ncm91cC1zbSA+IC5kdWFsLWxpc3Rib3hfX3NlYXJjaDpub3QodGV4dGFyZWEpLCAuaW5wdXQtZ3JvdXAtc20gPiAuY3VzdG9tLXNlbGVjdCB7IGhlaWdodDogY2FsYygxLjc1cmVtICsgMnB4KTsgfQoKLmlucHV0LWdyb3VwLXNtID4gLmZvcm0tY29udHJvbCwgLmR1YWwtbGlzdGJveCAuaW5wdXQtZ3JvdXAtc20gPiAuZHVhbC1saXN0Ym94X19zZWFyY2gsIC5pbnB1dC1ncm91cC1zbSA+IC5jdXN0b20tc2VsZWN0LCAuaW5wdXQtZ3JvdXAtc20gPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZCA+IC5pbnB1dC1ncm91cC10ZXh0LCAuaW5wdXQtZ3JvdXAtc20gPiAuaW5wdXQtZ3JvdXAtYXBwZW5kID4gLmlucHV0LWdyb3VwLXRleHQsIC5pbnB1dC1ncm91cC1zbSA+IC5pbnB1dC1ncm91cC1wcmVwZW5kID4gLmJ0biwgLmR1YWwtbGlzdGJveCAuaW5wdXQtZ3JvdXAtc20gPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZCA+IC5kdWFsLWxpc3Rib3hfX2J1dHRvbiwgLmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5idG4sIC5kdWFsLWxpc3Rib3ggLmlucHV0LWdyb3VwLXNtID4gLmlucHV0LWdyb3VwLWFwcGVuZCA+IC5kdWFsLWxpc3Rib3hfX2J1dHRvbiB7IHBhZGRpbmc6IDAuMjVyZW0gMXJlbTsgZm9udC1zaXplOiAwLjc1cmVtOyBsaW5lLWhlaWdodDogMS4yNXJlbTsgYm9yZGVyLXJhZGl1czogM3B4OyB9CgouaW5wdXQtZ3JvdXAtbGcgPiAuY3VzdG9tLXNlbGVjdCwgLmlucHV0LWdyb3VwLXNtID4gLmN1c3RvbS1zZWxlY3QgeyBwYWRkaW5nLXJpZ2h0OiAycmVtOyB9CgouaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZCA+IC5idG4sIC5kdWFsLWxpc3Rib3ggLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLXByZXBlbmQgPiAuZHVhbC1saXN0Ym94X19idXR0b24sIC5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1wcmVwZW5kID4gLmlucHV0LWdyb3VwLXRleHQsIC5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1hcHBlbmQ6bm90KDpsYXN0LWNoaWxkKSA+IC5idG4sIC5kdWFsLWxpc3Rib3ggLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLWFwcGVuZDpub3QoOmxhc3QtY2hpbGQpID4gLmR1YWwtbGlzdGJveF9fYnV0dG9uLCAuaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtYXBwZW5kOm5vdCg6bGFzdC1jaGlsZCkgPiAuaW5wdXQtZ3JvdXAtdGV4dCwgLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLWFwcGVuZDpsYXN0LWNoaWxkID4gLmJ0bjpub3QoOmxhc3QtY2hpbGQpOm5vdCguZHJvcGRvd24tdG9nZ2xlKSwgLmR1YWwtbGlzdGJveCAuaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtYXBwZW5kOmxhc3QtY2hpbGQgPiAuZHVhbC1saXN0Ym94X19idXR0b246bm90KDpsYXN0LWNoaWxkKTpub3QoLmRyb3Bkb3duLXRvZ2dsZSksIC5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1hcHBlbmQ6bGFzdC1jaGlsZCA+IC5pbnB1dC1ncm91cC10ZXh0Om5vdCg6bGFzdC1jaGlsZCkgeyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7IH0KCi5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1hcHBlbmQgPiAuYnRuLCAuZHVhbC1saXN0Ym94IC5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1hcHBlbmQgPiAuZHVhbC1saXN0Ym94X19idXR0b24sIC5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1hcHBlbmQgPiAuaW5wdXQtZ3JvdXAtdGV4dCwgLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLXByZXBlbmQ6bm90KDpmaXJzdC1jaGlsZCkgPiAuYnRuLCAuZHVhbC1saXN0Ym94IC5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1wcmVwZW5kOm5vdCg6Zmlyc3QtY2hpbGQpID4gLmR1YWwtbGlzdGJveF9fYnV0dG9uLCAuaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZDpub3QoOmZpcnN0LWNoaWxkKSA+IC5pbnB1dC1ncm91cC10ZXh0LCAuaW5wdXQtZ3JvdXAgPiAuaW5wdXQtZ3JvdXAtcHJlcGVuZDpmaXJzdC1jaGlsZCA+IC5idG46bm90KDpmaXJzdC1jaGlsZCksIC5kdWFsLWxpc3Rib3ggLmlucHV0LWdyb3VwID4gLmlucHV0LWdyb3VwLXByZXBlbmQ6Zmlyc3QtY2hpbGQgPiAuZHVhbC1saXN0Ym94X19idXR0b246bm90KDpmaXJzdC1jaGlsZCksIC5pbnB1dC1ncm91cCA+IC5pbnB1dC1ncm91cC1wcmVwZW5kOmZpcnN0LWNoaWxkID4gLmlucHV0LWdyb3VwLXRleHQ6bm90KDpmaXJzdC1jaGlsZCkgeyBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOyBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOyB9CgouY3VzdG9tLWNvbnRyb2wgeyBwb3NpdGlvbjogcmVsYXRpdmU7IHotaW5kZXg6IDE7IGRpc3BsYXk6IGJsb2NrOyBtaW4taGVpZ2h0OiAxLjQ0Mzc1cmVtOyBwYWRkaW5nLWxlZnQ6IDIuMjVyZW07IH0KCi5jdXN0b20tY29udHJvbC1pbmxpbmUgeyBkaXNwbGF5OiBpbmxpbmUtZmxleDsgbWFyZ2luLXJpZ2h0OiAxcmVtOyB9CgouY3VzdG9tLWNvbnRyb2wtaW5wdXQgeyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDA7IHotaW5kZXg6IC0xOyB3aWR0aDogMS41cmVtOyBoZWlnaHQ6IDEuNDcxODdyZW07IG9wYWNpdHk6IDA7IH0KCi5jdXN0b20tY29udHJvbC1pbnB1dDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgeyBjb2xvcjogI2ZmZjsgYm9yZGVyLWNvbG9yOiAjMDk3MWZlOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDk3MWZlOyB9CgouY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Zm9jdXMgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7IGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDksIDExMywgMjU0LCAwLjEpOyB9CgouY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Zm9jdXM6bm90KDpjaGVja2VkKSB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsgYm9yZGVyLWNvbG9yOiAjMDk3MWZlOyB9CgouY3VzdG9tLWNvbnRyb2wtaW5wdXQ6bm90KDpkaXNhYmxlZCk6YWN0aXZlIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogIzA5NzFmZTsgYm9yZGVyLWNvbG9yOiAjMDk3MWZlOyB9CgouY3VzdG9tLWNvbnRyb2wtaW5wdXRbZGlzYWJsZWRdIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6ZGlzYWJsZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWwgeyBjb2xvcjogIzZjNzU3ZDsgfQoKLmN1c3RvbS1jb250cm9sLWlucHV0W2Rpc2FibGVkXSB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6ZGlzYWJsZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7IGJhY2tncm91bmQtY29sb3I6ICNmNWY2ZmE7IH0KCi5jdXN0b20tY29udHJvbC1sYWJlbCB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgbWFyZ2luLWJvdHRvbTogMDsgdmVydGljYWwtYWxpZ246IHRvcDsgfQoKLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogLTAuMDI4MTNyZW07IGxlZnQ6IC0yLjI1cmVtOyBkaXNwbGF5OiBibG9jazsgd2lkdGg6IDEuNXJlbTsgaGVpZ2h0OiAxLjVyZW07IHBvaW50ZXItZXZlbnRzOiBub25lOyBjb250ZW50OiAiIjsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgYm9yZGVyOiAjZGJkZmVhIHNvbGlkIDJweDsgfQoKLmN1c3RvbS1jb250cm9sLWxhYmVsOjphZnRlciB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAtMC4wMjgxM3JlbTsgbGVmdDogLTIuMjVyZW07IGRpc3BsYXk6IGJsb2NrOyB3aWR0aDogMS41cmVtOyBoZWlnaHQ6IDEuNXJlbTsgY29udGVudDogIiI7IGJhY2tncm91bmQ6IG5vLXJlcGVhdCA1MCUgLyA1MCUgNTAlOyB9CgouY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsgYm9yZGVyLXJhZGl1czogNHB4OyB9CgouY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1pbnB1dDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjphZnRlciB7IGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sLCUzY3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPSc4JyBoZWlnaHQ9JzgnIHZpZXdCb3g9JzAgMCA4IDgnJTNlJTNjcGF0aCBmaWxsPSclMjNmZmYnIGQ9J002LjU2NC43NWwtMy41OSAzLjYxMi0xLjUzOC0xLjU1TDAgNC4yNmwyLjk3NCAyLjk5TDggMi4xOTN6Jy8lM2UlM2Mvc3ZnJTNlIik7IH0KCi5jdXN0b20tY2hlY2tib3ggLmN1c3RvbS1jb250cm9sLWlucHV0OmluZGV0ZXJtaW5hdGUgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7IGJvcmRlci1jb2xvcjogIzU1OWJmYjsgYmFja2dyb3VuZC1jb2xvcjogIzU1OWJmYjsgfQoKLmN1c3RvbS1jaGVja2JveCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6aW5kZXRlcm1pbmF0ZSB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YWZ0ZXIgeyBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM2NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nNCcgaGVpZ2h0PSc0JyB2aWV3Qm94PScwIDAgNCA0JyUzZSUzY3BhdGggc3Ryb2tlPSclMjNmZmYnIGQ9J00wIDJoNCcvJTNlJTNjL3N2ZyUzZSIpOyB9CgouY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1pbnB1dDpkaXNhYmxlZDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDksIDExMywgMjU0LCAwLjgpOyB9CgouY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1pbnB1dDpkaXNhYmxlZDppbmRldGVybWluYXRlIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDksIDExMywgMjU0LCAwLjgpOyB9CgouY3VzdG9tLXJhZGlvIC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsgYm9yZGVyLXJhZGl1czogNTAlOyB9CgouY3VzdG9tLXJhZGlvIC5jdXN0b20tY29udHJvbC1pbnB1dDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjphZnRlciB7IGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sLCUzY3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMicgaGVpZ2h0PScxMicgdmlld0JveD0nLTQgLTQgOCA4JyUzZSUzY2NpcmNsZSByPSczJyBmaWxsPSclMjNmZmYnLyUzZSUzYy9zdmclM2UiKTsgfQoKLmN1c3RvbS1yYWRpbyAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6ZGlzYWJsZWQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg5LCAxMTMsIDI1NCwgMC44KTsgfQoKLmN1c3RvbS1zd2l0Y2ggeyBwYWRkaW5nLWxlZnQ6IDMuNzVyZW07IH0KCi5jdXN0b20tc3dpdGNoIC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsgbGVmdDogLTMuNzVyZW07IHdpZHRoOiAzcmVtOyBwb2ludGVyLWV2ZW50czogYWxsOyBib3JkZXItcmFkaXVzOiAxLjVyZW07IH0KCi5jdXN0b20tc3dpdGNoIC5jdXN0b20tY29udHJvbC1sYWJlbDo6YWZ0ZXIgeyB0b3A6IGNhbGMoLTAuMDI4MTNyZW0gKyA0cHgpOyBsZWZ0OiBjYWxjKC0zLjc1cmVtICsgNHB4KTsgd2lkdGg6IDFyZW07IGhlaWdodDogMXJlbTsgYmFja2dyb3VuZC1jb2xvcjogI2RiZGZlYTsgYm9yZGVyLXJhZGl1czogMS41cmVtOyB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xNXMgZWFzZS1pbi1vdXQsIGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dDsgfQoKQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHsgLmN1c3RvbS1zd2l0Y2ggLmN1c3RvbS1jb250cm9sLWxhYmVsOjphZnRlciB7IHRyYW5zaXRpb246IG5vbmU7IH0gfQoKLmN1c3RvbS1zd2l0Y2ggLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmFmdGVyIHsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEuNXJlbSk7IH0KCi5jdXN0b20tc3dpdGNoIC5jdXN0b20tY29udHJvbC1pbnB1dDpkaXNhYmxlZDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDksIDExMywgMjU0LCAwLjgpOyB9CgouY3VzdG9tLXNlbGVjdCB7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgd2lkdGg6IDEwMCU7IGhlaWdodDogY2FsYygyLjEyNXJlbSArIDJweCk7IHBhZGRpbmc6IDAuNDM3NXJlbSAycmVtIDAuNDM3NXJlbSAxcmVtOyBmb250LXNpemU6IDAuODEyNXJlbTsgZm9udC13ZWlnaHQ6IDQwMDsgbGluZS1oZWlnaHQ6IDEuMjVyZW07IGNvbG9yOiAjM2M0ZDYyOyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyBiYWNrZ3JvdW5kOiAjZmZmIHVybCgiZGF0YTppbWFnZS9zdmcreG1sLCUzY3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPSc0JyBoZWlnaHQ9JzUnIHZpZXdCb3g9JzAgMCA0IDUnJTNlJTNjcGF0aCBmaWxsPSclMjMzNDNhNDAnIGQ9J00yIDBMMCAyaDR6bTAgNUwwIDNoNHonLyUzZSUzYy9zdmclM2UiKSByaWdodCAxcmVtIGNlbnRlci84cHggMTBweCBuby1yZXBlYXQ7IGJvcmRlcjogMXB4IHNvbGlkICNkYmRmZWE7IGJvcmRlci1yYWRpdXM6IDRweDsgYXBwZWFyYW5jZTogbm9uZTsgfQoKLmN1c3RvbS1zZWxlY3Q6Zm9jdXMgeyBib3JkZXItY29sb3I6ICMwOTcxZmU7IG91dGxpbmU6IDA7IGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDg1LCAxNTUsIDI1MSwgMC4yNSk7IH0KCi5jdXN0b20tc2VsZWN0OmZvY3VzOjotbXMtdmFsdWUgeyBjb2xvcjogIzNjNGQ2MjsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgfQoKLmN1c3RvbS1zZWxlY3RbbXVsdGlwbGVdLCAuY3VzdG9tLXNlbGVjdFtzaXplXTpub3QoW3NpemU9IjEiXSkgeyBoZWlnaHQ6IGF1dG87IHBhZGRpbmctcmlnaHQ6IDFyZW07IGJhY2tncm91bmQtaW1hZ2U6IG5vbmU7IH0KCi5jdXN0b20tc2VsZWN0OmRpc2FibGVkIHsgY29sb3I6ICM2Yzc1N2Q7IGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7IH0KCi5jdXN0b20tc2VsZWN0OjotbXMtZXhwYW5kIHsgZGlzcGxheTogbm9uZTsgfQoKLmN1c3RvbS1zZWxlY3Q6LW1vei1mb2N1c3JpbmcgeyBjb2xvcjogdHJhbnNwYXJlbnQ7IHRleHQtc2hhZG93OiAwIDAgMCAjM2M0ZDYyOyB9CgouY3VzdG9tLXNlbGVjdC1zbSB7IGhlaWdodDogY2FsYygxLjc1cmVtICsgMnB4KTsgcGFkZGluZy10b3A6IDAuMjVyZW07IHBhZGRpbmctYm90dG9tOiAwLjI1cmVtOyBwYWRkaW5nLWxlZnQ6IDFyZW07IGZvbnQtc2l6ZTogMC43NXJlbTsgfQoKLmN1c3RvbS1zZWxlY3QtbGcgeyBoZWlnaHQ6IGNhbGMoMi42MjVyZW0gKyAycHgpOyBwYWRkaW5nLXRvcDogMC42ODc1cmVtOyBwYWRkaW5nLWJvdHRvbTogMC42ODc1cmVtOyBwYWRkaW5nLWxlZnQ6IDFyZW07IGZvbnQtc2l6ZTogMC45Mzc1cmVtOyB9CgouY3VzdG9tLWZpbGUgeyBwb3NpdGlvbjogcmVsYXRpdmU7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgd2lkdGg6IDEwMCU7IGhlaWdodDogY2FsYygyLjEyNXJlbSArIDJweCk7IG1hcmdpbi1ib3R0b206IDA7IH0KCi5jdXN0b20tZmlsZS1pbnB1dCB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgei1pbmRleDogMjsgd2lkdGg6IDEwMCU7IGhlaWdodDogY2FsYygyLjEyNXJlbSArIDJweCk7IG1hcmdpbjogMDsgb3BhY2l0eTogMDsgfQoKLmN1c3RvbS1maWxlLWlucHV0OmZvY3VzIH4gLmN1c3RvbS1maWxlLWxhYmVsIHsgYm9yZGVyLWNvbG9yOiAjMDk3MWZlOyBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSg5LCAxMTMsIDI1NCwgMC4xKTsgfQoKLmN1c3RvbS1maWxlLWlucHV0W2Rpc2FibGVkXSB+IC5jdXN0b20tZmlsZS1sYWJlbCwgLmN1c3RvbS1maWxlLWlucHV0OmRpc2FibGVkIH4gLmN1c3RvbS1maWxlLWxhYmVsIHsgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjZmYTsgfQoKLmN1c3RvbS1maWxlLWlucHV0OmxhbmcoZW4pIH4gLmN1c3RvbS1maWxlLWxhYmVsOjphZnRlciB7IGNvbnRlbnQ6ICJCcm93c2UiOyB9CgouY3VzdG9tLWZpbGUtaW5wdXQgfiAuY3VzdG9tLWZpbGUtbGFiZWxbZGF0YS1icm93c2VdOjphZnRlciB7IGNvbnRlbnQ6IGF0dHIoZGF0YS1icm93c2UpOyB9CgouY3VzdG9tLWZpbGUtbGFiZWwgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgcmlnaHQ6IDA7IGxlZnQ6IDA7IHotaW5kZXg6IDE7IGhlaWdodDogY2FsYygyLjEyNXJlbSArIDJweCk7IHBhZGRpbmc6IDAuNDM3NXJlbSAxcmVtOyBmb250LXdlaWdodDogNDAwOyBsaW5lLWhlaWdodDogMS4yNXJlbTsgY29sb3I6ICMzYzRkNjI7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlcjogMXB4IHNvbGlkICNkYmRmZWE7IGJvcmRlci1yYWRpdXM6IDRweDsgfQoKLmN1c3RvbS1maWxlLWxhYmVsOjphZnRlciB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyByaWdodDogMDsgYm90dG9tOiAwOyB6LWluZGV4OiAzOyBkaXNwbGF5OiBibG9jazsgaGVpZ2h0OiAyLjEyNXJlbTsgcGFkZGluZzogMC40Mzc1cmVtIDFyZW07IGxpbmUtaGVpZ2h0OiAxLjI1cmVtOyBjb2xvcjogIzNjNGQ2MjsgY29udGVudDogIkJyb3dzZSI7IGJhY2tncm91bmQtY29sb3I6ICNlOWVjZWY7IGJvcmRlci1sZWZ0OiBpbmhlcml0OyBib3JkZXItcmFkaXVzOiAwIDRweCA0cHggMDsgfQoKLmN1c3RvbS1yYW5nZSB7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEuNHJlbTsgcGFkZGluZzogMDsgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IGFwcGVhcmFuY2U6IG5vbmU7IH0KCi5jdXN0b20tcmFuZ2U6Zm9jdXMgeyBvdXRsaW5lOiBub25lOyB9CgouY3VzdG9tLXJhbmdlOmZvY3VzOjotd2Via2l0LXNsaWRlci10aHVtYiB7IGJveC1zaGFkb3c6IDAgMCAwIDFweCAjZjVmNmZhLCAwIDAgMCAzcHggcmdiYSg5LCAxMTMsIDI1NCwgMC4xKTsgfQoKLmN1c3RvbS1yYW5nZTpmb2N1czo6LW1vei1yYW5nZS10aHVtYiB7IGJveC1zaGFkb3c6IDAgMCAwIDFweCAjZjVmNmZhLCAwIDAgMCAzcHggcmdiYSg5LCAxMTMsIDI1NCwgMC4xKTsgfQoKLmN1c3RvbS1yYW5nZTpmb2N1czo6LW1zLXRodW1iIHsgYm94LXNoYWRvdzogMCAwIDAgMXB4ICNmNWY2ZmEsIDAgMCAwIDNweCByZ2JhKDksIDExMywgMjU0LCAwLjEpOyB9CgouY3VzdG9tLXJhbmdlOjotbW96LWZvY3VzLW91dGVyIHsgYm9yZGVyOiAwOyB9CgouY3VzdG9tLXJhbmdlOjotd2Via2l0LXNsaWRlci10aHVtYiB7IHdpZHRoOiAxcmVtOyBoZWlnaHQ6IDFyZW07IG1hcmdpbi10b3A6IC0wLjI1cmVtOyBiYWNrZ3JvdW5kLWNvbG9yOiAjNTU5YmZiOyBib3JkZXI6IDA7IGJvcmRlci1yYWRpdXM6IDFyZW07IHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dDsgYXBwZWFyYW5jZTogbm9uZTsgfQoKQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHsgLmN1c3RvbS1yYW5nZTo6LXdlYmtpdC1zbGlkZXItdGh1bWIgeyB0cmFuc2l0aW9uOiBub25lOyB9IH0KCi5jdXN0b20tcmFuZ2U6Oi13ZWJraXQtc2xpZGVyLXRodW1iOmFjdGl2ZSB7IGJhY2tncm91bmQtY29sb3I6IHdoaXRlOyB9CgouY3VzdG9tLXJhbmdlOjotd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFjayB7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDAuNXJlbTsgY29sb3I6IHRyYW5zcGFyZW50OyBjdXJzb3I6IHBvaW50ZXI7IGJhY2tncm91bmQtY29sb3I6ICNkZWUyZTY7IGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7IGJvcmRlci1yYWRpdXM6IDFyZW07IH0KCi5jdXN0b20tcmFuZ2U6Oi1tb3otcmFuZ2UtdGh1bWIgeyB3aWR0aDogMXJlbTsgaGVpZ2h0OiAxcmVtOyBiYWNrZ3JvdW5kLWNvbG9yOiAjNTU5YmZiOyBib3JkZXI6IDA7IGJvcmRlci1yYWRpdXM6IDFyZW07IHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dDsgYXBwZWFyYW5jZTogbm9uZTsgfQoKQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHsgLmN1c3RvbS1yYW5nZTo6LW1vei1yYW5nZS10aHVtYiB7IHRyYW5zaXRpb246IG5vbmU7IH0gfQoKLmN1c3RvbS1yYW5nZTo6LW1vei1yYW5nZS10aHVtYjphY3RpdmUgeyBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsgfQoKLmN1c3RvbS1yYW5nZTo6LW1vei1yYW5nZS10cmFjayB7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDAuNXJlbTsgY29sb3I6IHRyYW5zcGFyZW50OyBjdXJzb3I6IHBvaW50ZXI7IGJhY2tncm91bmQtY29sb3I6ICNkZWUyZTY7IGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7IGJvcmRlci1yYWRpdXM6IDFyZW07IH0KCi5jdXN0b20tcmFuZ2U6Oi1tcy10aHVtYiB7IHdpZHRoOiAxcmVtOyBoZWlnaHQ6IDFyZW07IG1hcmdpbi10b3A6IDA7IG1hcmdpbi1yaWdodDogMC4ycmVtOyBtYXJnaW4tbGVmdDogMC4ycmVtOyBiYWNrZ3JvdW5kLWNvbG9yOiAjNTU5YmZiOyBib3JkZXI6IDA7IGJvcmRlci1yYWRpdXM6IDFyZW07IHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dDsgYXBwZWFyYW5jZTogbm9uZTsgfQoKQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHsgLmN1c3RvbS1yYW5nZTo6LW1zLXRodW1iIHsgdHJhbnNpdGlvbjogbm9uZTsgfSB9CgouY3VzdG9tLXJhbmdlOjotbXMtdGh1bWI6YWN0aXZlIHsgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7IH0KCi5jdXN0b20tcmFuZ2U6Oi1tcy10cmFjayB7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDAuNXJlbTsgY29sb3I6IHRyYW5zcGFyZW50OyBjdXJzb3I6IHBvaW50ZXI7IGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OyBib3JkZXItd2lkdGg6IDAuNXJlbTsgfQoKLmN1c3RvbS1yYW5nZTo6LW1zLWZpbGwtbG93ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZGVlMmU2OyBib3JkZXItcmFkaXVzOiAxcmVtOyB9CgouY3VzdG9tLXJhbmdlOjotbXMtZmlsbC11cHBlciB7IG1hcmdpbi1yaWdodDogMTVweDsgYmFja2dyb3VuZC1jb2xvcjogI2RlZTJlNjsgYm9yZGVyLXJhZGl1czogMXJlbTsgfQoKLmN1c3RvbS1yYW5nZTpkaXNhYmxlZDo6LXdlYmtpdC1zbGlkZXItdGh1bWIgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjYWRiNWJkOyB9CgouY3VzdG9tLXJhbmdlOmRpc2FibGVkOjotd2Via2l0LXNsaWRlci1ydW5uYWJsZS10cmFjayB7IGN1cnNvcjogZGVmYXVsdDsgfQoKLmN1c3RvbS1yYW5nZTpkaXNhYmxlZDo6LW1vei1yYW5nZS10aHVtYiB7IGJhY2tncm91bmQtY29sb3I6ICNhZGI1YmQ7IH0KCi5jdXN0b20tcmFuZ2U6ZGlzYWJsZWQ6Oi1tb3otcmFuZ2UtdHJhY2sgeyBjdXJzb3I6IGRlZmF1bHQ7IH0KCi5jdXN0b20tcmFuZ2U6ZGlzYWJsZWQ6Oi1tcy10aHVtYiB7IGJhY2tncm91bmQtY29sb3I6ICNhZGI1YmQ7IH0KCi5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlLCAuY3VzdG9tLWZpbGUtbGFiZWwsIC5jdXN0b20tc2VsZWN0IHsgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IDAuMTVzIGVhc2UtaW4tb3V0OyB9CgpAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgeyAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSwgLmN1c3RvbS1maWxlLWxhYmVsLCAuY3VzdG9tLXNlbGVjdCB7IHRyYW5zaXRpb246IG5vbmU7IH0gfQoKLm5hdiB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtd3JhcDogd3JhcDsgcGFkZGluZy1sZWZ0OiAwOyBtYXJnaW4tYm90dG9tOiAwOyBsaXN0LXN0eWxlOiBub25lOyB9CgoubmF2LWxpbmsgeyBkaXNwbGF5OiBibG9jazsgcGFkZGluZzogMC41cmVtIDFyZW07IH0KCi5uYXYtbGluazpob3ZlciwgLm5hdi1saW5rOmZvY3VzIHsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9CgoubmF2LWxpbmsuZGlzYWJsZWQgeyBjb2xvcjogIzZjNzU3ZDsgcG9pbnRlci1ldmVudHM6IG5vbmU7IGN1cnNvcjogZGVmYXVsdDsgfQoKLm5hdi10YWJzIHsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZWUyZTY7IH0KCi5uYXYtdGFicyAubmF2LWxpbmsgeyBtYXJnaW4tYm90dG9tOiAtMXB4OyBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNHB4OyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNHB4OyB9CgoubmF2LXRhYnMgLm5hdi1saW5rOmhvdmVyLCAubmF2LXRhYnMgLm5hdi1saW5rOmZvY3VzIHsgYm9yZGVyLWNvbG9yOiAjZTllY2VmICNlOWVjZWYgI2RlZTJlNjsgfQoKLm5hdi10YWJzIC5uYXYtbGluay5kaXNhYmxlZCB7IGNvbG9yOiAjNmM3NTdkOyBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsgfQoKLm5hdi10YWJzIC5uYXYtbGluay5hY3RpdmUsIC5uYXYtdGFicyAubmF2LWl0ZW0uc2hvdyAubmF2LWxpbmsgeyBjb2xvcjogIzQ5NTA1NzsgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjZmYTsgYm9yZGVyLWNvbG9yOiAjZGVlMmU2ICNkZWUyZTYgI2Y1ZjZmYTsgfQoKLm5hdi10YWJzIC5kcm9wZG93bi1tZW51IHsgbWFyZ2luLXRvcDogLTFweDsgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7IH0KCi5uYXYtcGlsbHMgLm5hdi1saW5rIHsgYm9yZGVyLXJhZGl1czogNHB4OyB9CgoubmF2LXBpbGxzIC5uYXYtbGluay5hY3RpdmUsIC5uYXYtcGlsbHMgLnNob3cgPiAubmF2LWxpbmsgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogIzU1OWJmYjsgfQoKLm5hdi1maWxsID4gLm5hdi1saW5rLCAubmF2LWZpbGwgLm5hdi1pdGVtIHsgZmxleDogMSAxIGF1dG87IHRleHQtYWxpZ246IGNlbnRlcjsgfQoKLm5hdi1qdXN0aWZpZWQgPiAubmF2LWxpbmssIC5uYXYtanVzdGlmaWVkIC5uYXYtaXRlbSB7IGZsZXgtYmFzaXM6IDA7IGZsZXgtZ3JvdzogMTsgdGV4dC1hbGlnbjogY2VudGVyOyB9CgoudGFiLWNvbnRlbnQgPiAudGFiLXBhbmUgeyBkaXNwbGF5OiBub25lOyB9CgoudGFiLWNvbnRlbnQgPiAuYWN0aXZlIHsgZGlzcGxheTogYmxvY2s7IH0KCi5uYXZiYXIgeyBwb3NpdGlvbjogcmVsYXRpdmU7IGRpc3BsYXk6IGZsZXg7IGZsZXgtd3JhcDogd3JhcDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyBwYWRkaW5nOiAwLjVyZW0gMXJlbTsgfQoKLm5hdmJhciAuY29udGFpbmVyLCAubmF2YmFyIC5jb250YWluZXItZmx1aWQsIC5uYXZiYXIgLmNvbnRhaW5lci1zbSwgLm5hdmJhciAuY29udGFpbmVyLW1kLCAubmF2YmFyIC5jb250YWluZXItbGcsIC5uYXZiYXIgLmNvbnRhaW5lci14bCwgLm5hdmJhciAuY29udGFpbmVyLXh4bCB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtd3JhcDogd3JhcDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyB9CgoubmF2YmFyLWJyYW5kIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBwYWRkaW5nLXRvcDogMC4zMTI1cmVtOyBwYWRkaW5nLWJvdHRvbTogMC4zMTI1cmVtOyBtYXJnaW4tcmlnaHQ6IDFyZW07IGZvbnQtc2l6ZTogMS4yNXJlbTsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IHdoaXRlLXNwYWNlOiBub3dyYXA7IH0KCi5uYXZiYXItYnJhbmQ6aG92ZXIsIC5uYXZiYXItYnJhbmQ6Zm9jdXMgeyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH0KCi5uYXZiYXItbmF2IHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgcGFkZGluZy1sZWZ0OiAwOyBtYXJnaW4tYm90dG9tOiAwOyBsaXN0LXN0eWxlOiBub25lOyB9CgoubmF2YmFyLW5hdiAubmF2LWxpbmsgeyBwYWRkaW5nLXJpZ2h0OiAwOyBwYWRkaW5nLWxlZnQ6IDA7IH0KCi5uYXZiYXItbmF2IC5kcm9wZG93bi1tZW51IHsgcG9zaXRpb246IHN0YXRpYzsgZmxvYXQ6IG5vbmU7IH0KCi5uYXZiYXItdGV4dCB7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgcGFkZGluZy10b3A6IDAuNXJlbTsgcGFkZGluZy1ib3R0b206IDAuNXJlbTsgfQoKLm5hdmJhci1jb2xsYXBzZSB7IGZsZXgtYmFzaXM6IDEwMCU7IGZsZXgtZ3JvdzogMTsgYWxpZ24taXRlbXM6IGNlbnRlcjsgfQoKLm5hdmJhci10b2dnbGVyIHsgcGFkZGluZzogMC4yNXJlbSAwLjc1cmVtOyBmb250LXNpemU6IDEuMjVyZW07IGxpbmUtaGVpZ2h0OiAxOyBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1yYWRpdXM6IDRweDsgfQoKLm5hdmJhci10b2dnbGVyOmhvdmVyLCAubmF2YmFyLXRvZ2dsZXI6Zm9jdXMgeyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH0KCi5uYXZiYXItdG9nZ2xlci1pY29uIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogMS41ZW07IGhlaWdodDogMS41ZW07IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IGNvbnRlbnQ6ICIiOyBiYWNrZ3JvdW5kOiBuby1yZXBlYXQgY2VudGVyIGNlbnRlcjsgYmFja2dyb3VuZC1zaXplOiAxMDAlIDEwMCU7IH0KCkBtZWRpYSAobWF4LXdpZHRoOiA1NzUuOThweCkgeyAubmF2YmFyLWV4cGFuZC1zbSA+IC5jb250YWluZXIsIC5uYXZiYXItZXhwYW5kLXNtID4gLmNvbnRhaW5lci1mbHVpZCwgLm5hdmJhci1leHBhbmQtc20gPiAuY29udGFpbmVyLXNtLCAubmF2YmFyLWV4cGFuZC1zbSA+IC5jb250YWluZXItbWQsIC5uYXZiYXItZXhwYW5kLXNtID4gLmNvbnRhaW5lci1sZywgLm5hdmJhci1leHBhbmQtc20gPiAuY29udGFpbmVyLXhsLCAubmF2YmFyLWV4cGFuZC1zbSA+IC5jb250YWluZXIteHhsIHsgcGFkZGluZy1yaWdodDogMDsgcGFkZGluZy1sZWZ0OiAwOyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgeyAubmF2YmFyLWV4cGFuZC1zbSB7IGZsZXgtZmxvdzogcm93IG5vd3JhcDsganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OyB9CiAgLm5hdmJhci1leHBhbmQtc20gLm5hdmJhci1uYXYgeyBmbGV4LWRpcmVjdGlvbjogcm93OyB9CiAgLm5hdmJhci1leHBhbmQtc20gLm5hdmJhci1uYXYgLmRyb3Bkb3duLW1lbnUgeyBwb3NpdGlvbjogYWJzb2x1dGU7IH0KICAubmF2YmFyLWV4cGFuZC1zbSAubmF2YmFyLW5hdiAubmF2LWxpbmsgeyBwYWRkaW5nLXJpZ2h0OiAwLjVyZW07IHBhZGRpbmctbGVmdDogMC41cmVtOyB9CiAgLm5hdmJhci1leHBhbmQtc20gPiAuY29udGFpbmVyLCAubmF2YmFyLWV4cGFuZC1zbSA+IC5jb250YWluZXItZmx1aWQsIC5uYXZiYXItZXhwYW5kLXNtID4gLmNvbnRhaW5lci1zbSwgLm5hdmJhci1leHBhbmQtc20gPiAuY29udGFpbmVyLW1kLCAubmF2YmFyLWV4cGFuZC1zbSA+IC5jb250YWluZXItbGcsIC5uYXZiYXItZXhwYW5kLXNtID4gLmNvbnRhaW5lci14bCwgLm5hdmJhci1leHBhbmQtc20gPiAuY29udGFpbmVyLXh4bCB7IGZsZXgtd3JhcDogbm93cmFwOyB9CiAgLm5hdmJhci1leHBhbmQtc20gLm5hdmJhci1jb2xsYXBzZSB7IGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsgZmxleC1iYXNpczogYXV0bzsgfQogIC5uYXZiYXItZXhwYW5kLXNtIC5uYXZiYXItdG9nZ2xlciB7IGRpc3BsYXk6IG5vbmU7IH0gfQoKQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7IC5uYXZiYXItZXhwYW5kLW1kID4gLmNvbnRhaW5lciwgLm5hdmJhci1leHBhbmQtbWQgPiAuY29udGFpbmVyLWZsdWlkLCAubmF2YmFyLWV4cGFuZC1tZCA+IC5jb250YWluZXItc20sIC5uYXZiYXItZXhwYW5kLW1kID4gLmNvbnRhaW5lci1tZCwgLm5hdmJhci1leHBhbmQtbWQgPiAuY29udGFpbmVyLWxnLCAubmF2YmFyLWV4cGFuZC1tZCA+IC5jb250YWluZXIteGwsIC5uYXZiYXItZXhwYW5kLW1kID4gLmNvbnRhaW5lci14eGwgeyBwYWRkaW5nLXJpZ2h0OiAwOyBwYWRkaW5nLWxlZnQ6IDA7IH0gfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7IC5uYXZiYXItZXhwYW5kLW1kIHsgZmxleC1mbG93OiByb3cgbm93cmFwOyBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7IH0KICAubmF2YmFyLWV4cGFuZC1tZCAubmF2YmFyLW5hdiB7IGZsZXgtZGlyZWN0aW9uOiByb3c7IH0KICAubmF2YmFyLWV4cGFuZC1tZCAubmF2YmFyLW5hdiAuZHJvcGRvd24tbWVudSB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgfQogIC5uYXZiYXItZXhwYW5kLW1kIC5uYXZiYXItbmF2IC5uYXYtbGluayB7IHBhZGRpbmctcmlnaHQ6IDAuNXJlbTsgcGFkZGluZy1sZWZ0OiAwLjVyZW07IH0KICAubmF2YmFyLWV4cGFuZC1tZCA+IC5jb250YWluZXIsIC5uYXZiYXItZXhwYW5kLW1kID4gLmNvbnRhaW5lci1mbHVpZCwgLm5hdmJhci1leHBhbmQtbWQgPiAuY29udGFpbmVyLXNtLCAubmF2YmFyLWV4cGFuZC1tZCA+IC5jb250YWluZXItbWQsIC5uYXZiYXItZXhwYW5kLW1kID4gLmNvbnRhaW5lci1sZywgLm5hdmJhci1leHBhbmQtbWQgPiAuY29udGFpbmVyLXhsLCAubmF2YmFyLWV4cGFuZC1tZCA+IC5jb250YWluZXIteHhsIHsgZmxleC13cmFwOiBub3dyYXA7IH0KICAubmF2YmFyLWV4cGFuZC1tZCAubmF2YmFyLWNvbGxhcHNlIHsgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OyBmbGV4LWJhc2lzOiBhdXRvOyB9CiAgLm5hdmJhci1leHBhbmQtbWQgLm5hdmJhci10b2dnbGVyIHsgZGlzcGxheTogbm9uZTsgfSB9CgpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsgLm5hdmJhci1leHBhbmQtbGcgPiAuY29udGFpbmVyLCAubmF2YmFyLWV4cGFuZC1sZyA+IC5jb250YWluZXItZmx1aWQsIC5uYXZiYXItZXhwYW5kLWxnID4gLmNvbnRhaW5lci1zbSwgLm5hdmJhci1leHBhbmQtbGcgPiAuY29udGFpbmVyLW1kLCAubmF2YmFyLWV4cGFuZC1sZyA+IC5jb250YWluZXItbGcsIC5uYXZiYXItZXhwYW5kLWxnID4gLmNvbnRhaW5lci14bCwgLm5hdmJhci1leHBhbmQtbGcgPiAuY29udGFpbmVyLXh4bCB7IHBhZGRpbmctcmlnaHQ6IDA7IHBhZGRpbmctbGVmdDogMDsgfSB9CgpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHsgLm5hdmJhci1leHBhbmQtbGcgeyBmbGV4LWZsb3c6IHJvdyBub3dyYXA7IGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsgfQogIC5uYXZiYXItZXhwYW5kLWxnIC5uYXZiYXItbmF2IHsgZmxleC1kaXJlY3Rpb246IHJvdzsgfQogIC5uYXZiYXItZXhwYW5kLWxnIC5uYXZiYXItbmF2IC5kcm9wZG93bi1tZW51IHsgcG9zaXRpb246IGFic29sdXRlOyB9CiAgLm5hdmJhci1leHBhbmQtbGcgLm5hdmJhci1uYXYgLm5hdi1saW5rIHsgcGFkZGluZy1yaWdodDogMC41cmVtOyBwYWRkaW5nLWxlZnQ6IDAuNXJlbTsgfQogIC5uYXZiYXItZXhwYW5kLWxnID4gLmNvbnRhaW5lciwgLm5hdmJhci1leHBhbmQtbGcgPiAuY29udGFpbmVyLWZsdWlkLCAubmF2YmFyLWV4cGFuZC1sZyA+IC5jb250YWluZXItc20sIC5uYXZiYXItZXhwYW5kLWxnID4gLmNvbnRhaW5lci1tZCwgLm5hdmJhci1leHBhbmQtbGcgPiAuY29udGFpbmVyLWxnLCAubmF2YmFyLWV4cGFuZC1sZyA+IC5jb250YWluZXIteGwsIC5uYXZiYXItZXhwYW5kLWxnID4gLmNvbnRhaW5lci14eGwgeyBmbGV4LXdyYXA6IG5vd3JhcDsgfQogIC5uYXZiYXItZXhwYW5kLWxnIC5uYXZiYXItY29sbGFwc2UgeyBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7IGZsZXgtYmFzaXM6IGF1dG87IH0KICAubmF2YmFyLWV4cGFuZC1sZyAubmF2YmFyLXRvZ2dsZXIgeyBkaXNwbGF5OiBub25lOyB9IH0KCkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsgLm5hdmJhci1leHBhbmQteGwgPiAuY29udGFpbmVyLCAubmF2YmFyLWV4cGFuZC14bCA+IC5jb250YWluZXItZmx1aWQsIC5uYXZiYXItZXhwYW5kLXhsID4gLmNvbnRhaW5lci1zbSwgLm5hdmJhci1leHBhbmQteGwgPiAuY29udGFpbmVyLW1kLCAubmF2YmFyLWV4cGFuZC14bCA+IC5jb250YWluZXItbGcsIC5uYXZiYXItZXhwYW5kLXhsID4gLmNvbnRhaW5lci14bCwgLm5hdmJhci1leHBhbmQteGwgPiAuY29udGFpbmVyLXh4bCB7IHBhZGRpbmctcmlnaHQ6IDA7IHBhZGRpbmctbGVmdDogMDsgfSB9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7IC5uYXZiYXItZXhwYW5kLXhsIHsgZmxleC1mbG93OiByb3cgbm93cmFwOyBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7IH0KICAubmF2YmFyLWV4cGFuZC14bCAubmF2YmFyLW5hdiB7IGZsZXgtZGlyZWN0aW9uOiByb3c7IH0KICAubmF2YmFyLWV4cGFuZC14bCAubmF2YmFyLW5hdiAuZHJvcGRvd24tbWVudSB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgfQogIC5uYXZiYXItZXhwYW5kLXhsIC5uYXZiYXItbmF2IC5uYXYtbGluayB7IHBhZGRpbmctcmlnaHQ6IDAuNXJlbTsgcGFkZGluZy1sZWZ0OiAwLjVyZW07IH0KICAubmF2YmFyLWV4cGFuZC14bCA+IC5jb250YWluZXIsIC5uYXZiYXItZXhwYW5kLXhsID4gLmNvbnRhaW5lci1mbHVpZCwgLm5hdmJhci1leHBhbmQteGwgPiAuY29udGFpbmVyLXNtLCAubmF2YmFyLWV4cGFuZC14bCA+IC5jb250YWluZXItbWQsIC5uYXZiYXItZXhwYW5kLXhsID4gLmNvbnRhaW5lci1sZywgLm5hdmJhci1leHBhbmQteGwgPiAuY29udGFpbmVyLXhsLCAubmF2YmFyLWV4cGFuZC14bCA+IC5jb250YWluZXIteHhsIHsgZmxleC13cmFwOiBub3dyYXA7IH0KICAubmF2YmFyLWV4cGFuZC14bCAubmF2YmFyLWNvbGxhcHNlIHsgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OyBmbGV4LWJhc2lzOiBhdXRvOyB9CiAgLm5hdmJhci1leHBhbmQteGwgLm5hdmJhci10b2dnbGVyIHsgZGlzcGxheTogbm9uZTsgfSB9CgpAbWVkaWEgKG1heC13aWR0aDogMTUzOS45OHB4KSB7IC5uYXZiYXItZXhwYW5kLXh4bCA+IC5jb250YWluZXIsIC5uYXZiYXItZXhwYW5kLXh4bCA+IC5jb250YWluZXItZmx1aWQsIC5uYXZiYXItZXhwYW5kLXh4bCA+IC5jb250YWluZXItc20sIC5uYXZiYXItZXhwYW5kLXh4bCA+IC5jb250YWluZXItbWQsIC5uYXZiYXItZXhwYW5kLXh4bCA+IC5jb250YWluZXItbGcsIC5uYXZiYXItZXhwYW5kLXh4bCA+IC5jb250YWluZXIteGwsIC5uYXZiYXItZXhwYW5kLXh4bCA+IC5jb250YWluZXIteHhsIHsgcGFkZGluZy1yaWdodDogMDsgcGFkZGluZy1sZWZ0OiAwOyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiAxNTQwcHgpIHsgLm5hdmJhci1leHBhbmQteHhsIHsgZmxleC1mbG93OiByb3cgbm93cmFwOyBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7IH0KICAubmF2YmFyLWV4cGFuZC14eGwgLm5hdmJhci1uYXYgeyBmbGV4LWRpcmVjdGlvbjogcm93OyB9CiAgLm5hdmJhci1leHBhbmQteHhsIC5uYXZiYXItbmF2IC5kcm9wZG93bi1tZW51IHsgcG9zaXRpb246IGFic29sdXRlOyB9CiAgLm5hdmJhci1leHBhbmQteHhsIC5uYXZiYXItbmF2IC5uYXYtbGluayB7IHBhZGRpbmctcmlnaHQ6IDAuNXJlbTsgcGFkZGluZy1sZWZ0OiAwLjVyZW07IH0KICAubmF2YmFyLWV4cGFuZC14eGwgPiAuY29udGFpbmVyLCAubmF2YmFyLWV4cGFuZC14eGwgPiAuY29udGFpbmVyLWZsdWlkLCAubmF2YmFyLWV4cGFuZC14eGwgPiAuY29udGFpbmVyLXNtLCAubmF2YmFyLWV4cGFuZC14eGwgPiAuY29udGFpbmVyLW1kLCAubmF2YmFyLWV4cGFuZC14eGwgPiAuY29udGFpbmVyLWxnLCAubmF2YmFyLWV4cGFuZC14eGwgPiAuY29udGFpbmVyLXhsLCAubmF2YmFyLWV4cGFuZC14eGwgPiAuY29udGFpbmVyLXh4bCB7IGZsZXgtd3JhcDogbm93cmFwOyB9CiAgLm5hdmJhci1leHBhbmQteHhsIC5uYXZiYXItY29sbGFwc2UgeyBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7IGZsZXgtYmFzaXM6IGF1dG87IH0KICAubmF2YmFyLWV4cGFuZC14eGwgLm5hdmJhci10b2dnbGVyIHsgZGlzcGxheTogbm9uZTsgfSB9CgoubmF2YmFyLWV4cGFuZCB7IGZsZXgtZmxvdzogcm93IG5vd3JhcDsganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OyB9CgoubmF2YmFyLWV4cGFuZCA+IC5jb250YWluZXIsIC5uYXZiYXItZXhwYW5kID4gLmNvbnRhaW5lci1mbHVpZCwgLm5hdmJhci1leHBhbmQgPiAuY29udGFpbmVyLXNtLCAubmF2YmFyLWV4cGFuZCA+IC5jb250YWluZXItbWQsIC5uYXZiYXItZXhwYW5kID4gLmNvbnRhaW5lci1sZywgLm5hdmJhci1leHBhbmQgPiAuY29udGFpbmVyLXhsLCAubmF2YmFyLWV4cGFuZCA+IC5jb250YWluZXIteHhsIHsgcGFkZGluZy1yaWdodDogMDsgcGFkZGluZy1sZWZ0OiAwOyB9CgoubmF2YmFyLWV4cGFuZCAubmF2YmFyLW5hdiB7IGZsZXgtZGlyZWN0aW9uOiByb3c7IH0KCi5uYXZiYXItZXhwYW5kIC5uYXZiYXItbmF2IC5kcm9wZG93bi1tZW51IHsgcG9zaXRpb246IGFic29sdXRlOyB9CgoubmF2YmFyLWV4cGFuZCAubmF2YmFyLW5hdiAubmF2LWxpbmsgeyBwYWRkaW5nLXJpZ2h0OiAwLjVyZW07IHBhZGRpbmctbGVmdDogMC41cmVtOyB9CgoubmF2YmFyLWV4cGFuZCA+IC5jb250YWluZXIsIC5uYXZiYXItZXhwYW5kID4gLmNvbnRhaW5lci1mbHVpZCwgLm5hdmJhci1leHBhbmQgPiAuY29udGFpbmVyLXNtLCAubmF2YmFyLWV4cGFuZCA+IC5jb250YWluZXItbWQsIC5uYXZiYXItZXhwYW5kID4gLmNvbnRhaW5lci1sZywgLm5hdmJhci1leHBhbmQgPiAuY29udGFpbmVyLXhsLCAubmF2YmFyLWV4cGFuZCA+IC5jb250YWluZXIteHhsIHsgZmxleC13cmFwOiBub3dyYXA7IH0KCi5uYXZiYXItZXhwYW5kIC5uYXZiYXItY29sbGFwc2UgeyBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7IGZsZXgtYmFzaXM6IGF1dG87IH0KCi5uYXZiYXItZXhwYW5kIC5uYXZiYXItdG9nZ2xlciB7IGRpc3BsYXk6IG5vbmU7IH0KCi5uYXZiYXItbGlnaHQgLm5hdmJhci1icmFuZCB7IGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuOSk7IH0KCi5uYXZiYXItbGlnaHQgLm5hdmJhci1icmFuZDpob3ZlciwgLm5hdmJhci1saWdodCAubmF2YmFyLWJyYW5kOmZvY3VzIHsgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC45KTsgfQoKLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAubmF2LWxpbmsgeyBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjUpOyB9CgoubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5uYXYtbGluazpob3ZlciwgLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAubmF2LWxpbms6Zm9jdXMgeyBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjcpOyB9CgoubmF2YmFyLWxpZ2h0IC5uYXZiYXItbmF2IC5uYXYtbGluay5kaXNhYmxlZCB7IGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMyk7IH0KCi5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLnNob3cgPiAubmF2LWxpbmssIC5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLmFjdGl2ZSA+IC5uYXYtbGluaywgLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAubmF2LWxpbmsuc2hvdywgLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAubmF2LWxpbmsuYWN0aXZlIHsgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC45KTsgfQoKLm5hdmJhci1saWdodCAubmF2YmFyLXRvZ2dsZXIgeyBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjUpOyBib3JkZXItY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xKTsgfQoKLm5hdmJhci1saWdodCAubmF2YmFyLXRvZ2dsZXItaWNvbiB7IGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sLCUzY3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPSczMCcgaGVpZ2h0PSczMCcgdmlld0JveD0nMCAwIDMwIDMwJyUzZSUzY3BhdGggc3Ryb2tlPSdyZ2JhJTI4MCwgMCwgMCwgMC41JTI5JyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1taXRlcmxpbWl0PScxMCcgc3Ryb2tlLXdpZHRoPScyJyBkPSdNNCA3aDIyTTQgMTVoMjJNNCAyM2gyMicvJTNlJTNjL3N2ZyUzZSIpOyB9CgoubmF2YmFyLWxpZ2h0IC5uYXZiYXItdGV4dCB7IGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7IH0KCi5uYXZiYXItbGlnaHQgLm5hdmJhci10ZXh0IGEgeyBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjkpOyB9CgoubmF2YmFyLWxpZ2h0IC5uYXZiYXItdGV4dCBhOmhvdmVyLCAubmF2YmFyLWxpZ2h0IC5uYXZiYXItdGV4dCBhOmZvY3VzIHsgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC45KTsgfQoKLm5hdmJhci1kYXJrIC5uYXZiYXItYnJhbmQgeyBjb2xvcjogI2ZmZjsgfQoKLm5hdmJhci1kYXJrIC5uYXZiYXItYnJhbmQ6aG92ZXIsIC5uYXZiYXItZGFyayAubmF2YmFyLWJyYW5kOmZvY3VzIHsgY29sb3I6ICNmZmY7IH0KCi5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbmsgeyBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpOyB9CgoubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLm5hdi1saW5rOmhvdmVyLCAubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLm5hdi1saW5rOmZvY3VzIHsgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43NSk7IH0KCi5uYXZiYXItZGFyayAubmF2YmFyLW5hdiAubmF2LWxpbmsuZGlzYWJsZWQgeyBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI1KTsgfQoKLm5hdmJhci1kYXJrIC5uYXZiYXItbmF2IC5zaG93ID4gLm5hdi1saW5rLCAubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLmFjdGl2ZSA+IC5uYXYtbGluaywgLm5hdmJhci1kYXJrIC5uYXZiYXItbmF2IC5uYXYtbGluay5zaG93LCAubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLm5hdi1saW5rLmFjdGl2ZSB7IGNvbG9yOiAjZmZmOyB9CgoubmF2YmFyLWRhcmsgLm5hdmJhci10b2dnbGVyIHsgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTsgYm9yZGVyLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7IH0KCi5uYXZiYXItZGFyayAubmF2YmFyLXRvZ2dsZXItaWNvbiB7IGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sLCUzY3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPSczMCcgaGVpZ2h0PSczMCcgdmlld0JveD0nMCAwIDMwIDMwJyUzZSUzY3BhdGggc3Ryb2tlPSdyZ2JhJTI4MjU1LCAyNTUsIDI1NSwgMC41JTI5JyBzdHJva2UtbGluZWNhcD0ncm91bmQnIHN0cm9rZS1taXRlcmxpbWl0PScxMCcgc3Ryb2tlLXdpZHRoPScyJyBkPSdNNCA3aDIyTTQgMTVoMjJNNCAyM2gyMicvJTNlJTNjL3N2ZyUzZSIpOyB9CgoubmF2YmFyLWRhcmsgLm5hdmJhci10ZXh0IHsgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KTsgfQoKLm5hdmJhci1kYXJrIC5uYXZiYXItdGV4dCBhIHsgY29sb3I6ICNmZmY7IH0KCi5uYXZiYXItZGFyayAubmF2YmFyLXRleHQgYTpob3ZlciwgLm5hdmJhci1kYXJrIC5uYXZiYXItdGV4dCBhOmZvY3VzIHsgY29sb3I6ICNmZmY7IH0KCi5jYXJkIHsgcG9zaXRpb246IHJlbGF0aXZlOyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBtaW4td2lkdGg6IDA7IHdvcmQtd3JhcDogYnJlYWstd29yZDsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jbGlwOiBib3JkZXItYm94OyBib3JkZXI6IDAgc29saWQgcmdiYSgwLCAwLCAwLCAwLjEyNSk7IGJvcmRlci1yYWRpdXM6IDRweDsgfQoKLmNhcmQgPiBociB7IG1hcmdpbi1yaWdodDogMDsgbWFyZ2luLWxlZnQ6IDA7IH0KCi5jYXJkID4gLmxpc3QtZ3JvdXAgeyBib3JkZXItdG9wOiBpbmhlcml0OyBib3JkZXItYm90dG9tOiBpbmhlcml0OyB9CgouY2FyZCA+IC5saXN0LWdyb3VwOmZpcnN0LWNoaWxkIHsgYm9yZGVyLXRvcC13aWR0aDogMDsgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogM3B4OyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogM3B4OyB9CgouY2FyZCA+IC5saXN0LWdyb3VwOmxhc3QtY2hpbGQgeyBib3JkZXItYm90dG9tLXdpZHRoOiAwOyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogM3B4OyBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAzcHg7IH0KCi5jYXJkID4gLmNhcmQtaGVhZGVyICsgLmxpc3QtZ3JvdXAsIC5jYXJkID4gLmxpc3QtZ3JvdXAgKyAuY2FyZC1mb290ZXIgeyBib3JkZXItdG9wOiAwOyB9CgouY2FyZC1ib2R5IHsgZmxleDogMSAxIGF1dG87IG1pbi1oZWlnaHQ6IDFweDsgcGFkZGluZzogMS4yNXJlbTsgfQoKLmNhcmQtdGl0bGUgeyBtYXJnaW4tYm90dG9tOiAwLjc1cmVtOyB9CgouY2FyZC1zdWJ0aXRsZSB7IG1hcmdpbi10b3A6IC0wLjM3NXJlbTsgbWFyZ2luLWJvdHRvbTogMDsgfQoKLmNhcmQtdGV4dDpsYXN0LWNoaWxkIHsgbWFyZ2luLWJvdHRvbTogMDsgfQoKLmNhcmQtbGluazpob3ZlciB7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfQoKLmNhcmQtbGluayArIC5jYXJkLWxpbmsgeyBtYXJnaW4tbGVmdDogMS4yNXJlbTsgfQoKLmNhcmQtaGVhZGVyIHsgcGFkZGluZzogMC43NXJlbSAxLjI1cmVtOyBtYXJnaW4tYm90dG9tOiAwOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDcpOyBib3JkZXItYm90dG9tOiAwIHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xMjUpOyB9CgouY2FyZC1oZWFkZXI6Zmlyc3QtY2hpbGQgeyBib3JkZXItcmFkaXVzOiAzcHggM3B4IDAgMDsgfQoKLmNhcmQtZm9vdGVyIHsgcGFkZGluZzogMC43NXJlbSAxLjI1cmVtOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDcpOyBib3JkZXItdG9wOiAwIHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xMjUpOyB9CgouY2FyZC1mb290ZXI6bGFzdC1jaGlsZCB7IGJvcmRlci1yYWRpdXM6IDAgMCAzcHggM3B4OyB9CgouY2FyZC1oZWFkZXItdGFicyB7IG1hcmdpbi1yaWdodDogLTAuNjI1cmVtOyBtYXJnaW4tYm90dG9tOiAtMC43NXJlbTsgbWFyZ2luLWxlZnQ6IC0wLjYyNXJlbTsgYm9yZGVyLWJvdHRvbTogMDsgfQoKLmNhcmQtaGVhZGVyLXBpbGxzIHsgbWFyZ2luLXJpZ2h0OiAtMC42MjVyZW07IG1hcmdpbi1sZWZ0OiAtMC42MjVyZW07IH0KCi5jYXJkLWltZy1vdmVybGF5IHsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IHJpZ2h0OiAwOyBib3R0b206IDA7IGxlZnQ6IDA7IHBhZGRpbmc6IDEuMjVyZW07IGJvcmRlci1yYWRpdXM6IDNweDsgfQoKLmNhcmQtaW1nLCAuY2FyZC1pbWctdG9wLCAuY2FyZC1pbWctYm90dG9tIHsgZmxleC1zaHJpbms6IDA7IHdpZHRoOiAxMDAlOyB9CgouY2FyZC1pbWcsIC5jYXJkLWltZy10b3AgeyBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAzcHg7IGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAzcHg7IH0KCi5jYXJkLWltZywgLmNhcmQtaW1nLWJvdHRvbSB7IGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAzcHg7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDNweDsgfQoKLmNhcmQtZGVjayAuY2FyZCB7IG1hcmdpbi1ib3R0b206IDE0cHg7IH0KCkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgeyAuY2FyZC1kZWNrIHsgZGlzcGxheTogZmxleDsgZmxleC1mbG93OiByb3cgd3JhcDsgbWFyZ2luLXJpZ2h0OiAtMTRweDsgbWFyZ2luLWxlZnQ6IC0xNHB4OyB9CiAgLmNhcmQtZGVjayAuY2FyZCB7IGZsZXg6IDEgMCAwJTsgbWFyZ2luLXJpZ2h0OiAxNHB4OyBtYXJnaW4tYm90dG9tOiAwOyBtYXJnaW4tbGVmdDogMTRweDsgfSB9CgouY2FyZC1ncm91cCA+IC5jYXJkIHsgbWFyZ2luLWJvdHRvbTogMTRweDsgfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7IC5jYXJkLWdyb3VwIHsgZGlzcGxheTogZmxleDsgZmxleC1mbG93OiByb3cgd3JhcDsgfQogIC5jYXJkLWdyb3VwID4gLmNhcmQgeyBmbGV4OiAxIDAgMCU7IG1hcmdpbi1ib3R0b206IDA7IH0KICAuY2FyZC1ncm91cCA+IC5jYXJkICsgLmNhcmQgeyBtYXJnaW4tbGVmdDogMDsgYm9yZGVyLWxlZnQ6IDA7IH0KICAuY2FyZC1ncm91cCA+IC5jYXJkOm5vdCg6bGFzdC1jaGlsZCkgeyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7IH0KICAuY2FyZC1ncm91cCA+IC5jYXJkOm5vdCg6bGFzdC1jaGlsZCkgLmNhcmQtaW1nLXRvcCwgLmNhcmQtZ3JvdXAgPiAuY2FyZDpub3QoOmxhc3QtY2hpbGQpIC5jYXJkLWhlYWRlciB7IGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOyB9CiAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpub3QoOmxhc3QtY2hpbGQpIC5jYXJkLWltZy1ib3R0b20sIC5jYXJkLWdyb3VwID4gLmNhcmQ6bm90KDpsYXN0LWNoaWxkKSAuY2FyZC1mb290ZXIgeyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsgfQogIC5jYXJkLWdyb3VwID4gLmNhcmQ6bm90KDpmaXJzdC1jaGlsZCkgeyBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOyBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOyB9CiAgLmNhcmQtZ3JvdXAgPiAuY2FyZDpub3QoOmZpcnN0LWNoaWxkKSAuY2FyZC1pbWctdG9wLCAuY2FyZC1ncm91cCA+IC5jYXJkOm5vdCg6Zmlyc3QtY2hpbGQpIC5jYXJkLWhlYWRlciB7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7IH0KICAuY2FyZC1ncm91cCA+IC5jYXJkOm5vdCg6Zmlyc3QtY2hpbGQpIC5jYXJkLWltZy1ib3R0b20sIC5jYXJkLWdyb3VwID4gLmNhcmQ6bm90KDpmaXJzdC1jaGlsZCkgLmNhcmQtZm9vdGVyIHsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsgfSB9CgouY2FyZC1jb2x1bW5zIC5jYXJkIHsgbWFyZ2luLWJvdHRvbTogMC43NXJlbTsgfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7IC5jYXJkLWNvbHVtbnMgeyBjb2x1bW4tY291bnQ6IDM7IGNvbHVtbi1nYXA6IDEuMjVyZW07IG9ycGhhbnM6IDE7IHdpZG93czogMTsgfQogIC5jYXJkLWNvbHVtbnMgLmNhcmQgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHdpZHRoOiAxMDAlOyB9IH0KCi5hY2NvcmRpb24geyBvdmVyZmxvdy1hbmNob3I6IG5vbmU7IH0KCi5hY2NvcmRpb24gPiAuY2FyZCB7IG92ZXJmbG93OiBoaWRkZW47IH0KCi5hY2NvcmRpb24gPiAuY2FyZDpub3QoOmxhc3Qtb2YtdHlwZSkgeyBib3JkZXItYm90dG9tOiAwOyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsgfQoKLmFjY29yZGlvbiA+IC5jYXJkOm5vdCg6Zmlyc3Qtb2YtdHlwZSkgeyBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsgfQoKLmFjY29yZGlvbiA+IC5jYXJkID4gLmNhcmQtaGVhZGVyIHsgYm9yZGVyLXJhZGl1czogMDsgbWFyZ2luLWJvdHRvbTogMDsgfQoKLmJyZWFkY3J1bWIgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LXdyYXA6IHdyYXA7IHBhZGRpbmc6IDAuMjVyZW0gMDsgbWFyZ2luLWJvdHRvbTogMDsgZm9udC1zaXplOiAwLjY4NzVyZW07IGxpc3Qtc3R5bGU6IG5vbmU7IGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyBib3JkZXItcmFkaXVzOiA0cHg7IH0KCi5icmVhZGNydW1iLWl0ZW0geyBkaXNwbGF5OiBmbGV4OyB9CgouYnJlYWRjcnVtYi1pdGVtICsgLmJyZWFkY3J1bWItaXRlbSB7IHBhZGRpbmctbGVmdDogMC41cmVtOyB9CgouYnJlYWRjcnVtYi1pdGVtICsgLmJyZWFkY3J1bWItaXRlbTo6YmVmb3JlIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBwYWRkaW5nLXJpZ2h0OiAwLjVyZW07IGNvbG9yOiAjODA5MWE3OyBjb250ZW50OiAiLyI7IH0KCi5icmVhZGNydW1iLWl0ZW0gKyAuYnJlYWRjcnVtYi1pdGVtOmhvdmVyOjpiZWZvcmUgeyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgfQoKLmJyZWFkY3J1bWItaXRlbSArIC5icmVhZGNydW1iLWl0ZW06aG92ZXI6OmJlZm9yZSB7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfQoKLmJyZWFkY3J1bWItaXRlbS5hY3RpdmUgeyBjb2xvcjogI2I3YzJkMDsgfQoKLnBhZ2luYXRpb24geyBkaXNwbGF5OiBmbGV4OyBwYWRkaW5nLWxlZnQ6IDA7IGxpc3Qtc3R5bGU6IG5vbmU7IGJvcmRlci1yYWRpdXM6IDRweDsgfQoKLnBhZ2UtbGluayB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgZGlzcGxheTogYmxvY2s7IHBhZGRpbmc6IDAuNTYyNXJlbSAwLjYyNXJlbTsgbWFyZ2luLWxlZnQ6IC0xcHg7IGxpbmUtaGVpZ2h0OiAxcmVtOyBjb2xvcjogIzUyNjQ4NDsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgYm9yZGVyOiAxcHggc29saWQgI2U1ZTlmMjsgfQoKLnBhZ2UtbGluazpob3ZlciB7IHotaW5kZXg6IDI7IGNvbG9yOiAjMDc3MGZlOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGJhY2tncm91bmQtY29sb3I6ICNlYmVlZjI7IGJvcmRlci1jb2xvcjogI2U1ZTlmMjsgfQoKLnBhZ2UtbGluazpmb2N1cyB7IHotaW5kZXg6IDM7IG91dGxpbmU6IDA7IGJveC1zaGFkb3c6IG5vbmU7IH0KCi5wYWdlLWl0ZW06Zmlyc3QtY2hpbGQgLnBhZ2UtbGluayB7IG1hcmdpbi1sZWZ0OiAwOyBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweDsgfQoKLnBhZ2UtaXRlbTpsYXN0LWNoaWxkIC5wYWdlLWxpbmsgeyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNHB4OyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4OyB9CgoucGFnZS1pdGVtLmFjdGl2ZSAucGFnZS1saW5rIHsgei1pbmRleDogMzsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICMwOTcxZmU7IGJvcmRlci1jb2xvcjogIzA5NzFmZTsgfQoKLnBhZ2UtaXRlbS5kaXNhYmxlZCAucGFnZS1saW5rIHsgY29sb3I6ICNkYmRmZWE7IHBvaW50ZXItZXZlbnRzOiBub25lOyBjdXJzb3I6IGF1dG87IGJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1jb2xvcjogI2U1ZTlmMjsgfQoKLnBhZ2luYXRpb24tbGcgLnBhZ2UtbGluayB7IHBhZGRpbmc6IDAuNTYyNXJlbSAwLjc1cmVtOyBmb250LXNpemU6IDEuMjVyZW07IGxpbmUtaGVpZ2h0OiAxLjU7IH0KCi5wYWdpbmF0aW9uLWxnIC5wYWdlLWl0ZW06Zmlyc3QtY2hpbGQgLnBhZ2UtbGluayB7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDVweDsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNXB4OyB9CgoucGFnaW5hdGlvbi1sZyAucGFnZS1pdGVtOmxhc3QtY2hpbGQgLnBhZ2UtbGluayB7IGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA1cHg7IGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA1cHg7IH0KCi5wYWdpbmF0aW9uLXNtIC5wYWdlLWxpbmsgeyBwYWRkaW5nOiAwLjQzNzVyZW0gMC41cmVtOyBmb250LXNpemU6IDAuNzVyZW07IGxpbmUtaGVpZ2h0OiAxLjU7IH0KCi5wYWdpbmF0aW9uLXNtIC5wYWdlLWl0ZW06Zmlyc3QtY2hpbGQgLnBhZ2UtbGluayB7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDNweDsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogM3B4OyB9CgoucGFnaW5hdGlvbi1zbSAucGFnZS1pdGVtOmxhc3QtY2hpbGQgLnBhZ2UtbGluayB7IGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAzcHg7IGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAzcHg7IH0KCi5iYWRnZSB7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgcGFkZGluZzogMCAwLjM3NXJlbTsgZm9udC1zaXplOiAwLjY3NXJlbTsgZm9udC13ZWlnaHQ6IDUwMDsgbGluZS1oZWlnaHQ6IDE7IHRleHQtYWxpZ246IGNlbnRlcjsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOyBib3JkZXItcmFkaXVzOiAzcHg7IHRyYW5zaXRpb246IGNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBiYWNrZ3JvdW5kLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBib3JkZXItY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgMC4xNXMgZWFzZS1pbi1vdXQ7IH0KCkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7IC5iYWRnZSB7IHRyYW5zaXRpb246IG5vbmU7IH0gfQoKYS5iYWRnZTpob3ZlciwgYS5iYWRnZTpmb2N1cyB7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfQoKLmJhZGdlOmVtcHR5IHsgZGlzcGxheTogbm9uZTsgfQoKLmJ0biAuYmFkZ2UsIC5kdWFsLWxpc3Rib3ggLmR1YWwtbGlzdGJveF9fYnV0dG9uIC5iYWRnZSB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgdG9wOiAtMXB4OyB9CgouYmFkZ2UtcGlsbCB7IHBhZGRpbmctcmlnaHQ6IDAuNXJlbTsgcGFkZGluZy1sZWZ0OiAwLjVyZW07IGJvcmRlci1yYWRpdXM6IDEwcmVtOyB9CgouYmFkZ2UtcHJpbWFyeSB7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDk3MWZlOyB9CgphLmJhZGdlLXByaW1hcnk6aG92ZXIsIGEuYmFkZ2UtcHJpbWFyeTpmb2N1cyB7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDE1YWQzOyB9CgphLmJhZGdlLXByaW1hcnk6Zm9jdXMsIGEuYmFkZ2UtcHJpbWFyeS5mb2N1cyB7IG91dGxpbmU6IDA7IGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDksIDExMywgMjU0LCAwLjUpOyB9CgouYmFkZ2Utc2Vjb25kYXJ5IHsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICMzNjRhNjM7IH0KCmEuYmFkZ2Utc2Vjb25kYXJ5OmhvdmVyLCBhLmJhZGdlLXNlY29uZGFyeTpmb2N1cyB7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMjQzMTQyOyB9CgphLmJhZGdlLXNlY29uZGFyeTpmb2N1cywgYS5iYWRnZS1zZWNvbmRhcnkuZm9jdXMgeyBvdXRsaW5lOiAwOyBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSg1NCwgNzQsIDk5LCAwLjUpOyB9CgouYmFkZ2Utc3VjY2VzcyB7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMWVlMGFjOyB9CgphLmJhZGdlLXN1Y2Nlc3M6aG92ZXIsIGEuYmFkZ2Utc3VjY2Vzczpmb2N1cyB7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMThiMzg5OyB9CgphLmJhZGdlLXN1Y2Nlc3M6Zm9jdXMsIGEuYmFkZ2Utc3VjY2Vzcy5mb2N1cyB7IG91dGxpbmU6IDA7IGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDMwLCAyMjQsIDE3MiwgMC41KTsgfQoKLmJhZGdlLWluZm8geyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogIzA5YzJkZTsgfQoKYS5iYWRnZS1pbmZvOmhvdmVyLCBhLmJhZGdlLWluZm86Zm9jdXMgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogIzA3OTdhZDsgfQoKYS5iYWRnZS1pbmZvOmZvY3VzLCBhLmJhZGdlLWluZm8uZm9jdXMgeyBvdXRsaW5lOiAwOyBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSg5LCAxOTQsIDIyMiwgMC41KTsgfQoKLmJhZGdlLXdhcm5pbmcgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogI2Y0YmQwZTsgfQoKYS5iYWRnZS13YXJuaW5nOmhvdmVyLCBhLmJhZGdlLXdhcm5pbmc6Zm9jdXMgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogI2M2OTkwOTsgfQoKYS5iYWRnZS13YXJuaW5nOmZvY3VzLCBhLmJhZGdlLXdhcm5pbmcuZm9jdXMgeyBvdXRsaW5lOiAwOyBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyNDQsIDE4OSwgMTQsIDAuNSk7IH0KCi5iYWRnZS1kYW5nZXIgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogI2U4NTM0NzsgfQoKYS5iYWRnZS1kYW5nZXI6aG92ZXIsIGEuYmFkZ2UtZGFuZ2VyOmZvY3VzIHsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICNlMDJiMWM7IH0KCmEuYmFkZ2UtZGFuZ2VyOmZvY3VzLCBhLmJhZGdlLWRhbmdlci5mb2N1cyB7IG91dGxpbmU6IDA7IGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDIzMiwgODMsIDcxLCAwLjUpOyB9CgouYmFkZ2UtZGFyayB7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMWMyYjQ2OyB9CgphLmJhZGdlLWRhcms6aG92ZXIsIGEuYmFkZ2UtZGFyazpmb2N1cyB7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMGQxNTIyOyB9CgphLmJhZGdlLWRhcms6Zm9jdXMsIGEuYmFkZ2UtZGFyay5mb2N1cyB7IG91dGxpbmU6IDA7IGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDI4LCA0MywgNzAsIDAuNSk7IH0KCi5iYWRnZS1ncmF5IHsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICM4MDkxYTc7IH0KCmEuYmFkZ2UtZ3JheTpob3ZlciwgYS5iYWRnZS1ncmF5OmZvY3VzIHsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICM2NDc3OTA7IH0KCmEuYmFkZ2UtZ3JheTpmb2N1cywgYS5iYWRnZS1ncmF5LmZvY3VzIHsgb3V0bGluZTogMDsgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMTI4LCAxNDUsIDE2NywgMC41KTsgfQoKLmJhZGdlLWxpZ2h0IHsgY29sb3I6ICMxMDE5MjQ7IGJhY2tncm91bmQtY29sb3I6ICNlNWU5ZjI7IH0KCmEuYmFkZ2UtbGlnaHQ6aG92ZXIsIGEuYmFkZ2UtbGlnaHQ6Zm9jdXMgeyBjb2xvcjogIzEwMTkyNDsgYmFja2dyb3VuZC1jb2xvcjogI2MzY2NlMTsgfQoKYS5iYWRnZS1saWdodDpmb2N1cywgYS5iYWRnZS1saWdodC5mb2N1cyB7IG91dGxpbmU6IDA7IGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDIyOSwgMjMzLCAyNDIsIDAuNSk7IH0KCi5iYWRnZS1saWdodGVyIHsgY29sb3I6ICMxMDE5MjQ7IGJhY2tncm91bmQtY29sb3I6ICNmNWY2ZmE7IH0KCmEuYmFkZ2UtbGlnaHRlcjpob3ZlciwgYS5iYWRnZS1saWdodGVyOmZvY3VzIHsgY29sb3I6ICMxMDE5MjQ7IGJhY2tncm91bmQtY29sb3I6ICNkM2Q3ZTk7IH0KCmEuYmFkZ2UtbGlnaHRlcjpmb2N1cywgYS5iYWRnZS1saWdodGVyLmZvY3VzIHsgb3V0bGluZTogMDsgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjQ1LCAyNDYsIDI1MCwgMC41KTsgfQoKLmp1bWJvdHJvbiB7IHBhZGRpbmc6IDJyZW0gMXJlbTsgbWFyZ2luLWJvdHRvbTogMnJlbTsgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWNlZjsgYm9yZGVyLXJhZGl1czogNXB4OyB9CgpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsgLmp1bWJvdHJvbiB7IHBhZGRpbmc6IDRyZW0gMnJlbTsgfSB9CgouanVtYm90cm9uLWZsdWlkIHsgcGFkZGluZy1yaWdodDogMDsgcGFkZGluZy1sZWZ0OiAwOyBib3JkZXItcmFkaXVzOiAwOyB9CgouYWxlcnQgeyBwb3NpdGlvbjogcmVsYXRpdmU7IHBhZGRpbmc6IDFyZW0gMS4yNXJlbTsgbWFyZ2luLWJvdHRvbTogMnJlbTsgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1yYWRpdXM6IDRweDsgfQoKLmFsZXJ0LWhlYWRpbmcgeyBjb2xvcjogaW5oZXJpdDsgfQoKLmFsZXJ0LWxpbmsgeyBmb250LXdlaWdodDogNzAwOyB9CgouYWxlcnQtZGlzbWlzc2libGUgeyBwYWRkaW5nLXJpZ2h0OiA0cmVtOyB9CgouYWxlcnQtZGlzbWlzc2libGUgLmNsb3NlIHsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IHJpZ2h0OiAwOyBwYWRkaW5nOiAxcmVtIDEuMjVyZW07IGNvbG9yOiBpbmhlcml0OyB9CgouYWxlcnQtcHJpbWFyeSB7IGNvbG9yOiAjMDg1ZmQ1OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZTFlZWZmOyBib3JkZXItY29sb3I6ICNhNmNjZmY7IH0KCi5hbGVydC1wcmltYXJ5IGhyIHsgYm9yZGVyLXRvcC1jb2xvcjogIzhkYmRmZjsgfQoKLmFsZXJ0LXByaW1hcnkgLmFsZXJ0LWxpbmsgeyBjb2xvcjogIzA2NDlhNDsgfQoKLmFsZXJ0LXNlY29uZGFyeSB7IGNvbG9yOiAjMmQzZTUzOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZTdlOWVjOyBib3JkZXItY29sb3I6ICNiN2JlYzc7IH0KCi5hbGVydC1zZWNvbmRhcnkgaHIgeyBib3JkZXItdG9wLWNvbG9yOiAjYTliMWJjOyB9CgouYWxlcnQtc2Vjb25kYXJ5IC5hbGVydC1saW5rIHsgY29sb3I6ICMxYjI1MzI7IH0KCi5hbGVydC1zdWNjZXNzIHsgY29sb3I6ICMxOWJjOTA7IGJhY2tncm91bmQtY29sb3I6ICNlNGZiZjU7IGJvcmRlci1jb2xvcjogI2FlZjRlMTsgfQoKLmFsZXJ0LXN1Y2Nlc3MgaHIgeyBib3JkZXItdG9wLWNvbG9yOiAjOThmMWQ5OyB9CgouYWxlcnQtc3VjY2VzcyAuYWxlcnQtbGluayB7IGNvbG9yOiAjMTM4ZjZlOyB9CgouYWxlcnQtaW5mbyB7IGNvbG9yOiAjMDhhM2JhOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZTFmOGZiOyBib3JkZXItY29sb3I6ICNhNmU5ZjM7IH0KCi5hbGVydC1pbmZvIGhyIHsgYm9yZGVyLXRvcC1jb2xvcjogIzkwZTNmMDsgfQoKLmFsZXJ0LWluZm8gLmFsZXJ0LWxpbmsgeyBjb2xvcjogIzA2Nzg4OTsgfQoKLmFsZXJ0LXdhcm5pbmcgeyBjb2xvcjogI2NkOWYwYzsgYmFja2dyb3VuZC1jb2xvcjogI2ZlZjdlMjsgYm9yZGVyLWNvbG9yOiAjZmJlN2E4OyB9CgouYWxlcnQtd2FybmluZyBociB7IGJvcmRlci10b3AtY29sb3I6ICNmYWUwOTA7IH0KCi5hbGVydC13YXJuaW5nIC5hbGVydC1saW5rIHsgY29sb3I6ICM5ZDdhMDk7IH0KCi5hbGVydC1kYW5nZXIgeyBjb2xvcjogI2MzNDYzYzsgYmFja2dyb3VuZC1jb2xvcjogI2ZjZWFlOTsgYm9yZGVyLWNvbG9yOiAjZjdjMWJkOyB9CgouYWxlcnQtZGFuZ2VyIGhyIHsgYm9yZGVyLXRvcC1jb2xvcjogI2Y0YWNhNjsgfQoKLmFsZXJ0LWRhbmdlciAuYWxlcnQtbGluayB7IGNvbG9yOiAjOWMzODMwOyB9CgouYWxlcnQtZGFyayB7IGNvbG9yOiAjMTgyNDNiOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZTRlNmU5OyBib3JkZXItY29sb3I6ICNhZGIzYmM7IH0KCi5hbGVydC1kYXJrIGhyIHsgYm9yZGVyLXRvcC1jb2xvcjogIzlmYTZiMTsgfQoKLmFsZXJ0LWRhcmsgLmFsZXJ0LWxpbmsgeyBjb2xvcjogIzA5MGUxNzsgfQoKLmFsZXJ0LWdyYXkgeyBjb2xvcjogIzZjN2E4YzsgYmFja2dyb3VuZC1jb2xvcjogI2YwZjJmNDsgYm9yZGVyLWNvbG9yOiAjZDFkN2RmOyB9CgouYWxlcnQtZ3JheSBociB7IGJvcmRlci10b3AtY29sb3I6ICNjMmNhZDU7IH0KCi5hbGVydC1ncmF5IC5hbGVydC1saW5rIHsgY29sb3I6ICM1NjYxNmY7IH0KCi5hbGVydC1saWdodCB7IGNvbG9yOiAjYzBjNGNiOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmNmY2ZkOyBib3JkZXItY29sb3I6ICNmNmY3ZmE7IH0KCi5hbGVydC1saWdodCBociB7IGJvcmRlci10b3AtY29sb3I6ICNlNmU4ZjE7IH0KCi5hbGVydC1saWdodCAuYWxlcnQtbGluayB7IGNvbG9yOiAjYTRhYWI0OyB9CgouYWxlcnQtbGlnaHRlciB7IGNvbG9yOiAjY2VjZmQyOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmVmZWZlOyBib3JkZXItY29sb3I6ICNmYmZjZmQ7IH0KCi5hbGVydC1saWdodGVyIGhyIHsgYm9yZGVyLXRvcC1jb2xvcjogI2VhZWZmNTsgfQoKLmFsZXJ0LWxpZ2h0ZXIgLmFsZXJ0LWxpbmsgeyBjb2xvcjogI2IzYjViYTsgfQoKQGtleWZyYW1lcyBwcm9ncmVzcy1iYXItc3RyaXBlcyB7IGZyb20geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwLjVyZW0gMDsgfQogIHRvIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAwOyB9IH0KCi5wcm9ncmVzcyB7IGRpc3BsYXk6IGZsZXg7IGhlaWdodDogMC41cmVtOyBvdmVyZmxvdzogaGlkZGVuOyBsaW5lLWhlaWdodDogMDsgZm9udC1zaXplOiAwLjc1cmVtOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNmZhOyBib3JkZXItcmFkaXVzOiAycHg7IH0KCi5wcm9ncmVzcy1iYXIgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgb3ZlcmZsb3c6IGhpZGRlbjsgY29sb3I6ICNmZmY7IHRleHQtYWxpZ246IGNlbnRlcjsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgYmFja2dyb3VuZC1jb2xvcjogIzA5NzFmZTsgdHJhbnNpdGlvbjogd2lkdGggMC42cyBlYXNlOyB9CgpAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgeyAucHJvZ3Jlc3MtYmFyIHsgdHJhbnNpdGlvbjogbm9uZTsgfSB9CgoucHJvZ3Jlc3MtYmFyLXN0cmlwZWQgeyBiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQoNDVkZWcsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KSA1MCUsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSkgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KTsgYmFja2dyb3VuZC1zaXplOiAwLjVyZW0gMC41cmVtOyB9CgoucHJvZ3Jlc3MtYmFyLWFuaW1hdGVkIHsgYW5pbWF0aW9uOiAxcyBsaW5lYXIgaW5maW5pdGUgcHJvZ3Jlc3MtYmFyLXN0cmlwZXM7IH0KCkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7IC5wcm9ncmVzcy1iYXItYW5pbWF0ZWQgeyBhbmltYXRpb246IG5vbmU7IH0gfQoKLm1lZGlhIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IH0KCi5tZWRpYS1ib2R5IHsgZmxleDogMTsgfQoKLmxpc3QtZ3JvdXAgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBwYWRkaW5nLWxlZnQ6IDA7IG1hcmdpbi1ib3R0b206IDA7IGJvcmRlci1yYWRpdXM6IDRweDsgfQoKLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24geyB3aWR0aDogMTAwJTsgY29sb3I6ICM0OTUwNTc7IHRleHQtYWxpZ246IGluaGVyaXQ7IH0KCi5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmhvdmVyLCAubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cyB7IHotaW5kZXg6IDE7IGNvbG9yOiAjNDk1MDU3OyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7IH0KCi5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmFjdGl2ZSB7IGNvbG9yOiAjNTI2NDg0OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllY2VmOyB9CgoubGlzdC1ncm91cC1pdGVtIHsgcG9zaXRpb246IHJlbGF0aXZlOyBkaXNwbGF5OiBibG9jazsgcGFkZGluZzogMC43NXJlbSAxLjI1cmVtOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMTI1KTsgfQoKLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZCB7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IGluaGVyaXQ7IGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiBpbmhlcml0OyB9CgoubGlzdC1ncm91cC1pdGVtOmxhc3QtY2hpbGQgeyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogaW5oZXJpdDsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogaW5oZXJpdDsgfQoKLmxpc3QtZ3JvdXAtaXRlbS5kaXNhYmxlZCwgLmxpc3QtZ3JvdXAtaXRlbTpkaXNhYmxlZCB7IGNvbG9yOiAjNmM3NTdkOyBwb2ludGVyLWV2ZW50czogbm9uZTsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgfQoKLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmUgeyB6LWluZGV4OiAyOyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogIzU1OWJmYjsgYm9yZGVyLWNvbG9yOiAjNTU5YmZiOyB9CgoubGlzdC1ncm91cC1pdGVtICsgLmxpc3QtZ3JvdXAtaXRlbSB7IGJvcmRlci10b3Atd2lkdGg6IDA7IH0KCi5saXN0LWdyb3VwLWl0ZW0gKyAubGlzdC1ncm91cC1pdGVtLmFjdGl2ZSB7IG1hcmdpbi10b3A6IC0xcHg7IGJvcmRlci10b3Atd2lkdGg6IDFweDsgfQoKLmxpc3QtZ3JvdXAtaG9yaXpvbnRhbCB7IGZsZXgtZGlyZWN0aW9uOiByb3c7IH0KCi5saXN0LWdyb3VwLWhvcml6b250YWwgPiAubGlzdC1ncm91cC1pdGVtOmZpcnN0LWNoaWxkIHsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4OyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsgfQoKLmxpc3QtZ3JvdXAtaG9yaXpvbnRhbCA+IC5saXN0LWdyb3VwLWl0ZW06bGFzdC1jaGlsZCB7IGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7IH0KCi5saXN0LWdyb3VwLWhvcml6b250YWwgPiAubGlzdC1ncm91cC1pdGVtLmFjdGl2ZSB7IG1hcmdpbi10b3A6IDA7IH0KCi5saXN0LWdyb3VwLWhvcml6b250YWwgPiAubGlzdC1ncm91cC1pdGVtICsgLmxpc3QtZ3JvdXAtaXRlbSB7IGJvcmRlci10b3Atd2lkdGg6IDFweDsgYm9yZGVyLWxlZnQtd2lkdGg6IDA7IH0KCi5saXN0LWdyb3VwLWhvcml6b250YWwgPiAubGlzdC1ncm91cC1pdGVtICsgLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmUgeyBtYXJnaW4tbGVmdDogLTFweDsgYm9yZGVyLWxlZnQtd2lkdGg6IDFweDsgfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7IC5saXN0LWdyb3VwLWhvcml6b250YWwtc20geyBmbGV4LWRpcmVjdGlvbjogcm93OyB9CiAgLmxpc3QtZ3JvdXAtaG9yaXpvbnRhbC1zbSA+IC5saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGQgeyBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA0cHg7IGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOyB9CiAgLmxpc3QtZ3JvdXAtaG9yaXpvbnRhbC1zbSA+IC5saXN0LWdyb3VwLWl0ZW06bGFzdC1jaGlsZCB7IGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7IH0KICAubGlzdC1ncm91cC1ob3Jpem9udGFsLXNtID4gLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmUgeyBtYXJnaW4tdG9wOiAwOyB9CiAgLmxpc3QtZ3JvdXAtaG9yaXpvbnRhbC1zbSA+IC5saXN0LWdyb3VwLWl0ZW0gKyAubGlzdC1ncm91cC1pdGVtIHsgYm9yZGVyLXRvcC13aWR0aDogMXB4OyBib3JkZXItbGVmdC13aWR0aDogMDsgfQogIC5saXN0LWdyb3VwLWhvcml6b250YWwtc20gPiAubGlzdC1ncm91cC1pdGVtICsgLmxpc3QtZ3JvdXAtaXRlbS5hY3RpdmUgeyBtYXJnaW4tbGVmdDogLTFweDsgYm9yZGVyLWxlZnQtd2lkdGg6IDFweDsgfSB9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsgLmxpc3QtZ3JvdXAtaG9yaXpvbnRhbC1tZCB7IGZsZXgtZGlyZWN0aW9uOiByb3c7IH0KICAubGlzdC1ncm91cC1ob3Jpem9udGFsLW1kID4gLmxpc3QtZ3JvdXAtaXRlbTpmaXJzdC1jaGlsZCB7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweDsgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7IH0KICAubGlzdC1ncm91cC1ob3Jpem9udGFsLW1kID4gLmxpc3QtZ3JvdXAtaXRlbTpsYXN0LWNoaWxkIHsgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsgfQogIC5saXN0LWdyb3VwLWhvcml6b250YWwtbWQgPiAubGlzdC1ncm91cC1pdGVtLmFjdGl2ZSB7IG1hcmdpbi10b3A6IDA7IH0KICAubGlzdC1ncm91cC1ob3Jpem9udGFsLW1kID4gLmxpc3QtZ3JvdXAtaXRlbSArIC5saXN0LWdyb3VwLWl0ZW0geyBib3JkZXItdG9wLXdpZHRoOiAxcHg7IGJvcmRlci1sZWZ0LXdpZHRoOiAwOyB9CiAgLmxpc3QtZ3JvdXAtaG9yaXpvbnRhbC1tZCA+IC5saXN0LWdyb3VwLWl0ZW0gKyAubGlzdC1ncm91cC1pdGVtLmFjdGl2ZSB7IG1hcmdpbi1sZWZ0OiAtMXB4OyBib3JkZXItbGVmdC13aWR0aDogMXB4OyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgeyAubGlzdC1ncm91cC1ob3Jpem9udGFsLWxnIHsgZmxleC1kaXJlY3Rpb246IHJvdzsgfQogIC5saXN0LWdyb3VwLWhvcml6b250YWwtbGcgPiAubGlzdC1ncm91cC1pdGVtOmZpcnN0LWNoaWxkIHsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4OyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsgfQogIC5saXN0LWdyb3VwLWhvcml6b250YWwtbGcgPiAubGlzdC1ncm91cC1pdGVtOmxhc3QtY2hpbGQgeyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNHB4OyBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOyB9CiAgLmxpc3QtZ3JvdXAtaG9yaXpvbnRhbC1sZyA+IC5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlIHsgbWFyZ2luLXRvcDogMDsgfQogIC5saXN0LWdyb3VwLWhvcml6b250YWwtbGcgPiAubGlzdC1ncm91cC1pdGVtICsgLmxpc3QtZ3JvdXAtaXRlbSB7IGJvcmRlci10b3Atd2lkdGg6IDFweDsgYm9yZGVyLWxlZnQtd2lkdGg6IDA7IH0KICAubGlzdC1ncm91cC1ob3Jpem9udGFsLWxnID4gLmxpc3QtZ3JvdXAtaXRlbSArIC5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlIHsgbWFyZ2luLWxlZnQ6IC0xcHg7IGJvcmRlci1sZWZ0LXdpZHRoOiAxcHg7IH0gfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgeyAubGlzdC1ncm91cC1ob3Jpem9udGFsLXhsIHsgZmxleC1kaXJlY3Rpb246IHJvdzsgfQogIC5saXN0LWdyb3VwLWhvcml6b250YWwteGwgPiAubGlzdC1ncm91cC1pdGVtOmZpcnN0LWNoaWxkIHsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4OyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsgfQogIC5saXN0LWdyb3VwLWhvcml6b250YWwteGwgPiAubGlzdC1ncm91cC1pdGVtOmxhc3QtY2hpbGQgeyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNHB4OyBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOyB9CiAgLmxpc3QtZ3JvdXAtaG9yaXpvbnRhbC14bCA+IC5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlIHsgbWFyZ2luLXRvcDogMDsgfQogIC5saXN0LWdyb3VwLWhvcml6b250YWwteGwgPiAubGlzdC1ncm91cC1pdGVtICsgLmxpc3QtZ3JvdXAtaXRlbSB7IGJvcmRlci10b3Atd2lkdGg6IDFweDsgYm9yZGVyLWxlZnQtd2lkdGg6IDA7IH0KICAubGlzdC1ncm91cC1ob3Jpem9udGFsLXhsID4gLmxpc3QtZ3JvdXAtaXRlbSArIC5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlIHsgbWFyZ2luLWxlZnQ6IC0xcHg7IGJvcmRlci1sZWZ0LXdpZHRoOiAxcHg7IH0gfQoKQG1lZGlhIChtaW4td2lkdGg6IDE1NDBweCkgeyAubGlzdC1ncm91cC1ob3Jpem9udGFsLXh4bCB7IGZsZXgtZGlyZWN0aW9uOiByb3c7IH0KICAubGlzdC1ncm91cC1ob3Jpem9udGFsLXh4bCA+IC5saXN0LWdyb3VwLWl0ZW06Zmlyc3QtY2hpbGQgeyBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA0cHg7IGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOyB9CiAgLmxpc3QtZ3JvdXAtaG9yaXpvbnRhbC14eGwgPiAubGlzdC1ncm91cC1pdGVtOmxhc3QtY2hpbGQgeyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNHB4OyBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOyB9CiAgLmxpc3QtZ3JvdXAtaG9yaXpvbnRhbC14eGwgPiAubGlzdC1ncm91cC1pdGVtLmFjdGl2ZSB7IG1hcmdpbi10b3A6IDA7IH0KICAubGlzdC1ncm91cC1ob3Jpem9udGFsLXh4bCA+IC5saXN0LWdyb3VwLWl0ZW0gKyAubGlzdC1ncm91cC1pdGVtIHsgYm9yZGVyLXRvcC13aWR0aDogMXB4OyBib3JkZXItbGVmdC13aWR0aDogMDsgfQogIC5saXN0LWdyb3VwLWhvcml6b250YWwteHhsID4gLmxpc3QtZ3JvdXAtaXRlbSArIC5saXN0LWdyb3VwLWl0ZW0uYWN0aXZlIHsgbWFyZ2luLWxlZnQ6IC0xcHg7IGJvcmRlci1sZWZ0LXdpZHRoOiAxcHg7IH0gfQoKLmxpc3QtZ3JvdXAtZmx1c2ggeyBib3JkZXItcmFkaXVzOiAwOyB9CgoubGlzdC1ncm91cC1mbHVzaCA+IC5saXN0LWdyb3VwLWl0ZW0geyBib3JkZXItd2lkdGg6IDAgMCAxcHg7IH0KCi5saXN0LWdyb3VwLWZsdXNoID4gLmxpc3QtZ3JvdXAtaXRlbTpsYXN0LWNoaWxkIHsgYm9yZGVyLWJvdHRvbS13aWR0aDogMDsgfQoKLmxpc3QtZ3JvdXAtaXRlbS1wcmltYXJ5IHsgY29sb3I6ICMwNTNiODQ7IGJhY2tncm91bmQtY29sb3I6ICNiYWQ3ZmY7IH0KCi5saXN0LWdyb3VwLWl0ZW0tcHJpbWFyeS5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmhvdmVyLCAubGlzdC1ncm91cC1pdGVtLXByaW1hcnkubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cyB7IGNvbG9yOiAjMDUzYjg0OyBiYWNrZ3JvdW5kLWNvbG9yOiAjYTFjOGZmOyB9CgoubGlzdC1ncm91cC1pdGVtLXByaW1hcnkubGlzdC1ncm91cC1pdGVtLWFjdGlvbi5hY3RpdmUgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogIzA1M2I4NDsgYm9yZGVyLWNvbG9yOiAjMDUzYjg0OyB9CgoubGlzdC1ncm91cC1pdGVtLXNlY29uZGFyeSB7IGNvbG9yOiAjMWMyNjMzOyBiYWNrZ3JvdW5kLWNvbG9yOiAjYzdjY2QzOyB9CgoubGlzdC1ncm91cC1pdGVtLXNlY29uZGFyeS5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmhvdmVyLCAubGlzdC1ncm91cC1pdGVtLXNlY29uZGFyeS5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzIHsgY29sb3I6ICMxYzI2MzM7IGJhY2tncm91bmQtY29sb3I6ICNiOWJmYzg7IH0KCi5saXN0LWdyb3VwLWl0ZW0tc2Vjb25kYXJ5Lmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZlIHsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICMxYzI2MzM7IGJvcmRlci1jb2xvcjogIzFjMjYzMzsgfQoKLmxpc3QtZ3JvdXAtaXRlbS1zdWNjZXNzIHsgY29sb3I6ICMxMDc0NTk7IGJhY2tncm91bmQtY29sb3I6ICNjMGY2ZTg7IH0KCi5saXN0LWdyb3VwLWl0ZW0tc3VjY2Vzcy5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmhvdmVyLCAubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3MubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cyB7IGNvbG9yOiAjMTA3NDU5OyBiYWNrZ3JvdW5kLWNvbG9yOiAjYWFmM2UwOyB9CgoubGlzdC1ncm91cC1pdGVtLXN1Y2Nlc3MubGlzdC1ncm91cC1pdGVtLWFjdGlvbi5hY3RpdmUgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogIzEwNzQ1OTsgYm9yZGVyLWNvbG9yOiAjMTA3NDU5OyB9CgoubGlzdC1ncm91cC1pdGVtLWluZm8geyBjb2xvcjogIzA1NjU3MzsgYmFja2dyb3VuZC1jb2xvcjogI2JhZWVmNjsgfQoKLmxpc3QtZ3JvdXAtaXRlbS1pbmZvLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW0taW5mby5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzIHsgY29sb3I6ICMwNTY1NzM7IGJhY2tncm91bmQtY29sb3I6ICNhM2U4ZjM7IH0KCi5saXN0LWdyb3VwLWl0ZW0taW5mby5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uLmFjdGl2ZSB7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDU2NTczOyBib3JkZXItY29sb3I6ICMwNTY1NzM7IH0KCi5saXN0LWdyb3VwLWl0ZW0td2FybmluZyB7IGNvbG9yOiAjN2Y2MjA3OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmNlZGJjOyB9CgoubGlzdC1ncm91cC1pdGVtLXdhcm5pbmcubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpob3ZlciwgLmxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246Zm9jdXMgeyBjb2xvcjogIzdmNjIwNzsgYmFja2dyb3VuZC1jb2xvcjogI2ZiZTZhNDsgfQoKLmxpc3QtZ3JvdXAtaXRlbS13YXJuaW5nLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZlIHsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICM3ZjYyMDc7IGJvcmRlci1jb2xvcjogIzdmNjIwNzsgfQoKLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIgeyBjb2xvcjogIzc5MmIyNTsgYmFja2dyb3VuZC1jb2xvcjogI2Y5Y2ZjYjsgfQoKLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpob3ZlciwgLmxpc3QtZ3JvdXAtaXRlbS1kYW5nZXIubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cyB7IGNvbG9yOiAjNzkyYjI1OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjZiYWI0OyB9CgoubGlzdC1ncm91cC1pdGVtLWRhbmdlci5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uLmFjdGl2ZSB7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjNzkyYjI1OyBib3JkZXItY29sb3I6ICM3OTJiMjU7IH0KCi5saXN0LWdyb3VwLWl0ZW0tZGFyayB7IGNvbG9yOiAjMGYxNjI0OyBiYWNrZ3JvdW5kLWNvbG9yOiAjYmZjNGNiOyB9CgoubGlzdC1ncm91cC1pdGVtLWRhcmsubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpob3ZlciwgLmxpc3QtZ3JvdXAtaXRlbS1kYXJrLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246Zm9jdXMgeyBjb2xvcjogIzBmMTYyNDsgYmFja2dyb3VuZC1jb2xvcjogI2IxYjdjMDsgfQoKLmxpc3QtZ3JvdXAtaXRlbS1kYXJrLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb24uYWN0aXZlIHsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICMwZjE2MjQ7IGJvcmRlci1jb2xvcjogIzBmMTYyNDsgfQoKLmxpc3QtZ3JvdXAtaXRlbS1ncmF5IHsgY29sb3I6ICM0MzRiNTc7IGJhY2tncm91bmQtY29sb3I6ICNkYmUwZTY7IH0KCi5saXN0LWdyb3VwLWl0ZW0tZ3JheS5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmhvdmVyLCAubGlzdC1ncm91cC1pdGVtLWdyYXkubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpmb2N1cyB7IGNvbG9yOiAjNDM0YjU3OyBiYWNrZ3JvdW5kLWNvbG9yOiAjY2NkM2RjOyB9CgoubGlzdC1ncm91cC1pdGVtLWdyYXkubGlzdC1ncm91cC1pdGVtLWFjdGlvbi5hY3RpdmUgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogIzQzNGI1NzsgYm9yZGVyLWNvbG9yOiAjNDM0YjU3OyB9CgoubGlzdC1ncm91cC1pdGVtLWxpZ2h0IHsgY29sb3I6ICM3Nzc5N2U7IGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmI7IH0KCi5saXN0LWdyb3VwLWl0ZW0tbGlnaHQubGlzdC1ncm91cC1pdGVtLWFjdGlvbjpob3ZlciwgLmxpc3QtZ3JvdXAtaXRlbS1saWdodC5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzIHsgY29sb3I6ICM3Nzc5N2U7IGJhY2tncm91bmQtY29sb3I6ICNlOGViZjI7IH0KCi5saXN0LWdyb3VwLWl0ZW0tbGlnaHQubGlzdC1ncm91cC1pdGVtLWFjdGlvbi5hY3RpdmUgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogIzc3Nzk3ZTsgYm9yZGVyLWNvbG9yOiAjNzc3OTdlOyB9CgoubGlzdC1ncm91cC1pdGVtLWxpZ2h0ZXIgeyBjb2xvcjogIzdmODA4MjsgYmFja2dyb3VuZC1jb2xvcjogI2ZjZmNmZTsgfQoKLmxpc3QtZ3JvdXAtaXRlbS1saWdodGVyLmxpc3QtZ3JvdXAtaXRlbS1hY3Rpb246aG92ZXIsIC5saXN0LWdyb3VwLWl0ZW0tbGlnaHRlci5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uOmZvY3VzIHsgY29sb3I6ICM3ZjgwODI7IGJhY2tncm91bmQtY29sb3I6ICNlOWU5Zjg7IH0KCi5saXN0LWdyb3VwLWl0ZW0tbGlnaHRlci5saXN0LWdyb3VwLWl0ZW0tYWN0aW9uLmFjdGl2ZSB7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjN2Y4MDgyOyBib3JkZXItY29sb3I6ICM3ZjgwODI7IH0KCi5jbG9zZSB7IGZsb2F0OiByaWdodDsgZm9udC1zaXplOiAxLjVyZW07IGZvbnQtd2VpZ2h0OiA3MDA7IGxpbmUtaGVpZ2h0OiAxOyBjb2xvcjogIzAwMDsgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI2ZmZjsgb3BhY2l0eTogLjU7IH0KCi5jbG9zZTpob3ZlciB7IGNvbG9yOiAjMDAwOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH0KCi5jbG9zZTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTpob3ZlciwgLmNsb3NlOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmZvY3VzIHsgb3BhY2l0eTogLjc1OyB9CgpidXR0b24uY2xvc2UgeyBwYWRkaW5nOiAwOyBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgYm9yZGVyOiAwOyB9CgphLmNsb3NlLmRpc2FibGVkIHsgcG9pbnRlci1ldmVudHM6IG5vbmU7IH0KCi50b2FzdCB7IGZsZXgtYmFzaXM6IDM1MHB4OyBtYXgtd2lkdGg6IDM1MHB4OyBmb250LXNpemU6IDAuODc1cmVtOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODUpOyBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94OyBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMSk7IGJveC1zaGFkb3c6IDAgMC4yNXJlbSAwLjc1cmVtIHJnYmEoMCwgMCwgMCwgMC4xKTsgb3BhY2l0eTogMDsgYm9yZGVyLXJhZGl1czogMC4yNXJlbTsgfQoKLnRvYXN0Om5vdCg6bGFzdC1jaGlsZCkgeyBtYXJnaW4tYm90dG9tOiAwLjc1cmVtOyB9CgoudG9hc3Quc2hvd2luZyB7IG9wYWNpdHk6IDE7IH0KCi50b2FzdC5zaG93IHsgZGlzcGxheTogYmxvY2s7IG9wYWNpdHk6IDE7IH0KCi50b2FzdC5oaWRlIHsgZGlzcGxheTogbm9uZTsgfQoKLnRvYXN0LWhlYWRlciB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IHBhZGRpbmc6IDAuMjVyZW0gMC43NXJlbTsgY29sb3I6ICM2Yzc1N2Q7IGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44NSk7IGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMDUpOyBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiBjYWxjKDAuMjVyZW0gLSAxcHgpOyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogY2FsYygwLjI1cmVtIC0gMXB4KTsgfQoKLnRvYXN0LWJvZHkgeyBwYWRkaW5nOiAwLjc1cmVtOyB9CgoubW9kYWwtb3BlbiB7IG92ZXJmbG93OiBoaWRkZW47IH0KCi5tb2RhbC1vcGVuIC5tb2RhbCB7IG92ZXJmbG93LXg6IGhpZGRlbjsgb3ZlcmZsb3cteTogYXV0bzsgfQoKLm1vZGFsIHsgcG9zaXRpb246IGZpeGVkOyB0b3A6IDA7IGxlZnQ6IDA7IHotaW5kZXg6IDEwNTA7IGRpc3BsYXk6IG5vbmU7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7IG92ZXJmbG93OiBoaWRkZW47IG91dGxpbmU6IDA7IH0KCi5tb2RhbC1kaWFsb2cgeyBwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiBhdXRvOyBtYXJnaW46IDAuNXJlbTsgcG9pbnRlci1ldmVudHM6IG5vbmU7IH0KCi5tb2RhbC5mYWRlIC5tb2RhbC1kaWFsb2cgeyB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyBlYXNlLW91dDsgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTMwcHgpOyB9CgpAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgeyAubW9kYWwuZmFkZSAubW9kYWwtZGlhbG9nIHsgdHJhbnNpdGlvbjogbm9uZTsgfSB9CgoubW9kYWwuc2hvdyAubW9kYWwtZGlhbG9nIHsgdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7IH0KCi5tb2RhbC5tb2RhbC1zdGF0aWMgLm1vZGFsLWRpYWxvZyB7IHRyYW5zZm9ybTogc2NhbGUoMC45NSk7IH0KCi5tb2RhbC1kaWFsb2ctc2Nyb2xsYWJsZSB7IGRpc3BsYXk6IGZsZXg7IG1heC1oZWlnaHQ6IGNhbGMoMTAwJSAtIDFyZW0pOyB9CgoubW9kYWwtZGlhbG9nLXNjcm9sbGFibGUgLm1vZGFsLWNvbnRlbnQgeyBtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gMXJlbSk7IG92ZXJmbG93OiBoaWRkZW47IH0KCi5tb2RhbC1kaWFsb2ctc2Nyb2xsYWJsZSAubW9kYWwtaGVhZGVyLCAubW9kYWwtZGlhbG9nLXNjcm9sbGFibGUgLm1vZGFsLWZvb3RlciB7IGZsZXgtc2hyaW5rOiAwOyB9CgoubW9kYWwtZGlhbG9nLXNjcm9sbGFibGUgLm1vZGFsLWJvZHkgeyBvdmVyZmxvdy15OiBhdXRvOyB9CgoubW9kYWwtZGlhbG9nLWNlbnRlcmVkIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgbWluLWhlaWdodDogY2FsYygxMDAlIC0gMXJlbSk7IH0KCi5tb2RhbC1kaWFsb2ctY2VudGVyZWQ6OmJlZm9yZSB7IGRpc3BsYXk6IGJsb2NrOyBoZWlnaHQ6IGNhbGMoMTAwdmggLSAxcmVtKTsgaGVpZ2h0OiBtaW4tY29udGVudDsgY29udGVudDogIiI7IH0KCi5tb2RhbC1kaWFsb2ctY2VudGVyZWQubW9kYWwtZGlhbG9nLXNjcm9sbGFibGUgeyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgaGVpZ2h0OiAxMDAlOyB9CgoubW9kYWwtZGlhbG9nLWNlbnRlcmVkLm1vZGFsLWRpYWxvZy1zY3JvbGxhYmxlIC5tb2RhbC1jb250ZW50IHsgbWF4LWhlaWdodDogbm9uZTsgfQoKLm1vZGFsLWRpYWxvZy1jZW50ZXJlZC5tb2RhbC1kaWFsb2ctc2Nyb2xsYWJsZTo6YmVmb3JlIHsgY29udGVudDogbm9uZTsgfQoKLm1vZGFsLWNvbnRlbnQgeyBwb3NpdGlvbjogcmVsYXRpdmU7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IHdpZHRoOiAxMDAlOyBwb2ludGVyLWV2ZW50czogYXV0bzsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDsgYm9yZGVyOiAwIHNvbGlkIHJnYmEoMCwgMCwgMCwgMCk7IGJvcmRlci1yYWRpdXM6IDVweDsgb3V0bGluZTogMDsgfQoKLm1vZGFsLWJhY2tkcm9wIHsgcG9zaXRpb246IGZpeGVkOyB0b3A6IDA7IGxlZnQ6IDA7IHotaW5kZXg6IDEwNDA7IHdpZHRoOiAxMDB2dzsgaGVpZ2h0OiAxMDB2aDsgYmFja2dyb3VuZC1jb2xvcjogIzM2NGE2MzsgfQoKLm1vZGFsLWJhY2tkcm9wLmZhZGUgeyBvcGFjaXR5OiAwOyB9CgoubW9kYWwtYmFja2Ryb3Auc2hvdyB7IG9wYWNpdHk6IDAuNTsgfQoKLm1vZGFsLWhlYWRlciB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IHBhZGRpbmc6IDFyZW0gMS4yNXJlbTsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkYmRmZWE7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDRweDsgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDsgfQoKLm1vZGFsLWhlYWRlciAuY2xvc2UgeyBwYWRkaW5nOiAxcmVtIDEuMjVyZW07IG1hcmdpbjogLTFyZW0gLTEuMjVyZW0gLTFyZW0gYXV0bzsgfQoKLm1vZGFsLXRpdGxlIHsgbWFyZ2luLWJvdHRvbTogMDsgbGluZS1oZWlnaHQ6IDEuNTsgfQoKLm1vZGFsLWJvZHkgeyBwb3NpdGlvbjogcmVsYXRpdmU7IGZsZXg6IDEgMSBhdXRvOyBwYWRkaW5nOiAxLjI1cmVtOyB9CgoubW9kYWwtZm9vdGVyIHsgZGlzcGxheTogZmxleDsgZmxleC13cmFwOiB3cmFwOyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOyBwYWRkaW5nOiAxcmVtOyBib3JkZXItdG9wOiAxcHggc29saWQgI2RiZGZlYTsgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDRweDsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4OyB9CgoubW9kYWwtZm9vdGVyID4gKiB7IG1hcmdpbjogMC4yNXJlbTsgfQoKLm1vZGFsLXNjcm9sbGJhci1tZWFzdXJlIHsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IC05OTk5cHg7IHdpZHRoOiA1MHB4OyBoZWlnaHQ6IDUwcHg7IG92ZXJmbG93OiBzY3JvbGw7IH0KCkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgeyAubW9kYWwtZGlhbG9nIHsgbWF4LXdpZHRoOiA1MjBweDsgbWFyZ2luOiAxLjc1cmVtIGF1dG87IH0KICAubW9kYWwtZGlhbG9nLXNjcm9sbGFibGUgeyBtYXgtaGVpZ2h0OiBjYWxjKDEwMCUgLSAzLjVyZW0pOyB9CiAgLm1vZGFsLWRpYWxvZy1zY3JvbGxhYmxlIC5tb2RhbC1jb250ZW50IHsgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtIDMuNXJlbSk7IH0KICAubW9kYWwtZGlhbG9nLWNlbnRlcmVkIHsgbWluLWhlaWdodDogY2FsYygxMDAlIC0gMy41cmVtKTsgfQogIC5tb2RhbC1kaWFsb2ctY2VudGVyZWQ6OmJlZm9yZSB7IGhlaWdodDogY2FsYygxMDB2aCAtIDMuNXJlbSk7IGhlaWdodDogbWluLWNvbnRlbnQ7IH0KICAubW9kYWwtc20geyBtYXgtd2lkdGg6IDM2MHB4OyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgeyAubW9kYWwtbGcsIC5tb2RhbC14bCB7IG1heC13aWR0aDogNzIwcHg7IH0gfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgeyAubW9kYWwteGwgeyBtYXgtd2lkdGg6IDk4MHB4OyB9IH0KCi50b29sdGlwIHsgcG9zaXRpb246IGFic29sdXRlOyB6LWluZGV4OiAxMDcwOyBkaXNwbGF5OiBibG9jazsgbWFyZ2luOiAwOyBmb250LWZhbWlseTogUm9ib3RvLCBzYW5zLXNlcmlmLCAiSGVsdmV0aWNhIE5ldWUiLCBBcmlhbCwgIk5vdG8gU2FucyIsIHNhbnMtc2VyaWY7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IDQwMDsgbGluZS1oZWlnaHQ6IDEuNjU7IHRleHQtYWxpZ246IGxlZnQ7IHRleHQtYWxpZ246IHN0YXJ0OyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IHRleHQtc2hhZG93OiBub25lOyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgd29yZC1icmVhazogbm9ybWFsOyB3b3JkLXNwYWNpbmc6IG5vcm1hbDsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgbGluZS1icmVhazogYXV0bzsgZm9udC1zaXplOiAwLjgxMjVyZW07IHdvcmQtd3JhcDogYnJlYWstd29yZDsgb3BhY2l0eTogMDsgfQoKLnRvb2x0aXAuc2hvdyB7IG9wYWNpdHk6IDAuOTsgfQoKLnRvb2x0aXAgLmFycm93IHsgcG9zaXRpb246IGFic29sdXRlOyBkaXNwbGF5OiBibG9jazsgd2lkdGg6IDAuOHJlbTsgaGVpZ2h0OiAwLjRyZW07IH0KCi50b29sdGlwIC5hcnJvdzo6YmVmb3JlIHsgcG9zaXRpb246IGFic29sdXRlOyBjb250ZW50OiAiIjsgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsgYm9yZGVyLXN0eWxlOiBzb2xpZDsgfQoKLmJzLXRvb2x0aXAtdG9wLCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0idG9wIl0geyBwYWRkaW5nOiAwLjRyZW0gMDsgfQoKLmJzLXRvb2x0aXAtdG9wIC5hcnJvdywgLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49InRvcCJdIC5hcnJvdyB7IGJvdHRvbTogMDsgfQoKLmJzLXRvb2x0aXAtdG9wIC5hcnJvdzo6YmVmb3JlLCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0idG9wIl0gLmFycm93OjpiZWZvcmUgeyB0b3A6IDA7IGJvcmRlci13aWR0aDogMC40cmVtIDAuNHJlbSAwOyBib3JkZXItdG9wLWNvbG9yOiAjMWYyYjNhOyB9CgouYnMtdG9vbHRpcC1yaWdodCwgLmJzLXRvb2x0aXAtYXV0b1t4LXBsYWNlbWVudF49InJpZ2h0Il0geyBwYWRkaW5nOiAwIDAuNHJlbTsgfQoKLmJzLXRvb2x0aXAtcmlnaHQgLmFycm93LCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0icmlnaHQiXSAuYXJyb3cgeyBsZWZ0OiAwOyB3aWR0aDogMC40cmVtOyBoZWlnaHQ6IDAuOHJlbTsgfQoKLmJzLXRvb2x0aXAtcmlnaHQgLmFycm93OjpiZWZvcmUsIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJyaWdodCJdIC5hcnJvdzo6YmVmb3JlIHsgcmlnaHQ6IDA7IGJvcmRlci13aWR0aDogMC40cmVtIDAuNHJlbSAwLjRyZW0gMDsgYm9yZGVyLXJpZ2h0LWNvbG9yOiAjMWYyYjNhOyB9CgouYnMtdG9vbHRpcC1ib3R0b20sIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJib3R0b20iXSB7IHBhZGRpbmc6IDAuNHJlbSAwOyB9CgouYnMtdG9vbHRpcC1ib3R0b20gLmFycm93LCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0iYm90dG9tIl0gLmFycm93IHsgdG9wOiAwOyB9CgouYnMtdG9vbHRpcC1ib3R0b20gLmFycm93OjpiZWZvcmUsIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJib3R0b20iXSAuYXJyb3c6OmJlZm9yZSB7IGJvdHRvbTogMDsgYm9yZGVyLXdpZHRoOiAwIDAuNHJlbSAwLjRyZW07IGJvcmRlci1ib3R0b20tY29sb3I6ICMxZjJiM2E7IH0KCi5icy10b29sdGlwLWxlZnQsIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJsZWZ0Il0geyBwYWRkaW5nOiAwIDAuNHJlbTsgfQoKLmJzLXRvb2x0aXAtbGVmdCAuYXJyb3csIC5icy10b29sdGlwLWF1dG9beC1wbGFjZW1lbnRePSJsZWZ0Il0gLmFycm93IHsgcmlnaHQ6IDA7IHdpZHRoOiAwLjRyZW07IGhlaWdodDogMC44cmVtOyB9CgouYnMtdG9vbHRpcC1sZWZ0IC5hcnJvdzo6YmVmb3JlLCAuYnMtdG9vbHRpcC1hdXRvW3gtcGxhY2VtZW50Xj0ibGVmdCJdIC5hcnJvdzo6YmVmb3JlIHsgbGVmdDogMDsgYm9yZGVyLXdpZHRoOiAwLjRyZW0gMCAwLjRyZW0gMC40cmVtOyBib3JkZXItbGVmdC1jb2xvcjogIzFmMmIzYTsgfQoKLnRvb2x0aXAtaW5uZXIgeyBtYXgtd2lkdGg6IDIwMHB4OyBwYWRkaW5nOiAwLjI1cmVtIDAuNzVyZW07IGNvbG9yOiAjZmZmOyB0ZXh0LWFsaWduOiBjZW50ZXI7IGJhY2tncm91bmQtY29sb3I6ICMxZjJiM2E7IGJvcmRlci1yYWRpdXM6IDNweDsgfQoKLnBvcG92ZXIgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgbGVmdDogMDsgei1pbmRleDogMTA2MDsgZGlzcGxheTogYmxvY2s7IG1heC13aWR0aDogMjc2cHg7IGZvbnQtZmFtaWx5OiBSb2JvdG8sIHNhbnMtc2VyaWYsICJIZWx2ZXRpY2EgTmV1ZSIsIEFyaWFsLCAiTm90byBTYW5zIiwgc2Fucy1zZXJpZjsgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXdlaWdodDogNDAwOyBsaW5lLWhlaWdodDogMS42NTsgdGV4dC1hbGlnbjogbGVmdDsgdGV4dC1hbGlnbjogc3RhcnQ7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgdGV4dC1zaGFkb3c6IG5vbmU7IHRleHQtdHJhbnNmb3JtOiBub25lOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB3b3JkLWJyZWFrOiBub3JtYWw7IHdvcmQtc3BhY2luZzogbm9ybWFsOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyBsaW5lLWJyZWFrOiBhdXRvOyBmb250LXNpemU6IDAuODc1cmVtOyB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7IGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4yKTsgYm9yZGVyLXJhZGl1czogNXB4OyB9CgoucG9wb3ZlciAuYXJyb3cgeyBwb3NpdGlvbjogYWJzb2x1dGU7IGRpc3BsYXk6IGJsb2NrOyB3aWR0aDogMXJlbTsgaGVpZ2h0OiAwLjVyZW07IG1hcmdpbjogMCA1cHg7IH0KCi5wb3BvdmVyIC5hcnJvdzo6YmVmb3JlLCAucG9wb3ZlciAuYXJyb3c6OmFmdGVyIHsgcG9zaXRpb246IGFic29sdXRlOyBkaXNwbGF5OiBibG9jazsgY29udGVudDogIiI7IGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7IGJvcmRlci1zdHlsZTogc29saWQ7IH0KCi5icy1wb3BvdmVyLXRvcCwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InRvcCJdIHsgbWFyZ2luLWJvdHRvbTogMC41cmVtOyB9CgouYnMtcG9wb3Zlci10b3AgPiAuYXJyb3csIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJ0b3AiXSA+IC5hcnJvdyB7IGJvdHRvbTogY2FsYygtMC41cmVtIC0gMXB4KTsgfQoKLmJzLXBvcG92ZXItdG9wID4gLmFycm93OjpiZWZvcmUsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJ0b3AiXSA+IC5hcnJvdzo6YmVmb3JlIHsgYm90dG9tOiAwOyBib3JkZXItd2lkdGg6IDAuNXJlbSAwLjVyZW0gMDsgYm9yZGVyLXRvcC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI1KTsgfQoKLmJzLXBvcG92ZXItdG9wID4gLmFycm93OjphZnRlciwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InRvcCJdID4gLmFycm93OjphZnRlciB7IGJvdHRvbTogMXB4OyBib3JkZXItd2lkdGg6IDAuNXJlbSAwLjVyZW0gMDsgYm9yZGVyLXRvcC1jb2xvcjogI2ZmZjsgfQoKLmJzLXBvcG92ZXItcmlnaHQsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJyaWdodCJdIHsgbWFyZ2luLWxlZnQ6IDAuNXJlbTsgfQoKLmJzLXBvcG92ZXItcmlnaHQgPiAuYXJyb3csIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJyaWdodCJdID4gLmFycm93IHsgbGVmdDogY2FsYygtMC41cmVtIC0gMXB4KTsgd2lkdGg6IDAuNXJlbTsgaGVpZ2h0OiAxcmVtOyBtYXJnaW46IDVweCAwOyB9CgouYnMtcG9wb3Zlci1yaWdodCA+IC5hcnJvdzo6YmVmb3JlLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0icmlnaHQiXSA+IC5hcnJvdzo6YmVmb3JlIHsgbGVmdDogMDsgYm9yZGVyLXdpZHRoOiAwLjVyZW0gMC41cmVtIDAuNXJlbSAwOyBib3JkZXItcmlnaHQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yNSk7IH0KCi5icy1wb3BvdmVyLXJpZ2h0ID4gLmFycm93OjphZnRlciwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InJpZ2h0Il0gPiAuYXJyb3c6OmFmdGVyIHsgbGVmdDogMXB4OyBib3JkZXItd2lkdGg6IDAuNXJlbSAwLjVyZW0gMC41cmVtIDA7IGJvcmRlci1yaWdodC1jb2xvcjogI2ZmZjsgfQoKLmJzLXBvcG92ZXItYm90dG9tLCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0iYm90dG9tIl0geyBtYXJnaW4tdG9wOiAwLjVyZW07IH0KCi5icy1wb3BvdmVyLWJvdHRvbSA+IC5hcnJvdywgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImJvdHRvbSJdID4gLmFycm93IHsgdG9wOiBjYWxjKC0wLjVyZW0gLSAxcHgpOyB9CgouYnMtcG9wb3Zlci1ib3R0b20gPiAuYXJyb3c6OmJlZm9yZSwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImJvdHRvbSJdID4gLmFycm93OjpiZWZvcmUgeyB0b3A6IDA7IGJvcmRlci13aWR0aDogMCAwLjVyZW0gMC41cmVtIDAuNXJlbTsgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjI1KTsgfQoKLmJzLXBvcG92ZXItYm90dG9tID4gLmFycm93OjphZnRlciwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImJvdHRvbSJdID4gLmFycm93OjphZnRlciB7IHRvcDogMXB4OyBib3JkZXItd2lkdGg6IDAgMC41cmVtIDAuNXJlbSAwLjVyZW07IGJvcmRlci1ib3R0b20tY29sb3I6ICNmZmY7IH0KCi5icy1wb3BvdmVyLWJvdHRvbSAucG9wb3Zlci1oZWFkZXI6OmJlZm9yZSwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImJvdHRvbSJdIC5wb3BvdmVyLWhlYWRlcjo6YmVmb3JlIHsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IGxlZnQ6IDUwJTsgZGlzcGxheTogYmxvY2s7IHdpZHRoOiAxcmVtOyBtYXJnaW4tbGVmdDogLTAuNXJlbTsgY29udGVudDogIiI7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZjdmN2Y3OyB9CgouYnMtcG9wb3Zlci1sZWZ0LCAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0ibGVmdCJdIHsgbWFyZ2luLXJpZ2h0OiAwLjVyZW07IH0KCi5icy1wb3BvdmVyLWxlZnQgPiAuYXJyb3csIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJsZWZ0Il0gPiAuYXJyb3cgeyByaWdodDogY2FsYygtMC41cmVtIC0gMXB4KTsgd2lkdGg6IDAuNXJlbTsgaGVpZ2h0OiAxcmVtOyBtYXJnaW46IDVweCAwOyB9CgouYnMtcG9wb3Zlci1sZWZ0ID4gLmFycm93OjpiZWZvcmUsIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJsZWZ0Il0gPiAuYXJyb3c6OmJlZm9yZSB7IHJpZ2h0OiAwOyBib3JkZXItd2lkdGg6IDAuNXJlbSAwIDAuNXJlbSAwLjVyZW07IGJvcmRlci1sZWZ0LWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMjUpOyB9CgouYnMtcG9wb3Zlci1sZWZ0ID4gLmFycm93OjphZnRlciwgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImxlZnQiXSA+IC5hcnJvdzo6YWZ0ZXIgeyByaWdodDogMXB4OyBib3JkZXItd2lkdGg6IDAuNXJlbSAwIDAuNXJlbSAwLjVyZW07IGJvcmRlci1sZWZ0LWNvbG9yOiAjZmZmOyB9CgoucG9wb3Zlci1oZWFkZXIgeyBwYWRkaW5nOiAwLjVyZW0gMC43NXJlbTsgbWFyZ2luLWJvdHRvbTogMDsgZm9udC1zaXplOiAwLjg3NXJlbTsgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjdmNzsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlYmViZWI7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDRweDsgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDsgfQoKLnBvcG92ZXItaGVhZGVyOmVtcHR5IHsgZGlzcGxheTogbm9uZTsgfQoKLnBvcG92ZXItYm9keSB7IHBhZGRpbmc6IDAuNXJlbSAwLjc1cmVtOyBjb2xvcjogIzUyNjQ4NDsgfQoKLmNhcm91c2VsIHsgcG9zaXRpb246IHJlbGF0aXZlOyB9CgouY2Fyb3VzZWwucG9pbnRlci1ldmVudCB7IHRvdWNoLWFjdGlvbjogcGFuLXk7IH0KCi5jYXJvdXNlbC1pbm5lciB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDEwMCU7IG92ZXJmbG93OiBoaWRkZW47IH0KCi5jYXJvdXNlbC1pbm5lcjo6YWZ0ZXIgeyBkaXNwbGF5OiBibG9jazsgY2xlYXI6IGJvdGg7IGNvbnRlbnQ6ICIiOyB9CgouY2Fyb3VzZWwtaXRlbSB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgZGlzcGxheTogbm9uZTsgZmxvYXQ6IGxlZnQ7IHdpZHRoOiAxMDAlOyBtYXJnaW4tcmlnaHQ6IC0xMDAlOyBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47IHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjZzIGVhc2UtaW4tb3V0OyB9CgpAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgeyAuY2Fyb3VzZWwtaXRlbSB7IHRyYW5zaXRpb246IG5vbmU7IH0gfQoKLmNhcm91c2VsLWl0ZW0uYWN0aXZlLCAuY2Fyb3VzZWwtaXRlbS1uZXh0LCAuY2Fyb3VzZWwtaXRlbS1wcmV2IHsgZGlzcGxheTogYmxvY2s7IH0KCi5jYXJvdXNlbC1pdGVtLW5leHQ6bm90KC5jYXJvdXNlbC1pdGVtLWxlZnQpLCAuYWN0aXZlLmNhcm91c2VsLWl0ZW0tcmlnaHQgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7IH0KCi5jYXJvdXNlbC1pdGVtLXByZXY6bm90KC5jYXJvdXNlbC1pdGVtLXJpZ2h0KSwgLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLWxlZnQgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpOyB9CgouY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbSB7IG9wYWNpdHk6IDA7IHRyYW5zaXRpb24tcHJvcGVydHk6IG9wYWNpdHk7IHRyYW5zZm9ybTogbm9uZTsgfQoKLmNhcm91c2VsLWZhZGUgLmNhcm91c2VsLWl0ZW0uYWN0aXZlLCAuY2Fyb3VzZWwtZmFkZSAuY2Fyb3VzZWwtaXRlbS1uZXh0LmNhcm91c2VsLWl0ZW0tbGVmdCwgLmNhcm91c2VsLWZhZGUgLmNhcm91c2VsLWl0ZW0tcHJldi5jYXJvdXNlbC1pdGVtLXJpZ2h0IHsgei1pbmRleDogMTsgb3BhY2l0eTogMTsgfQoKLmNhcm91c2VsLWZhZGUgLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLWxlZnQsIC5jYXJvdXNlbC1mYWRlIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1yaWdodCB7IHotaW5kZXg6IDA7IG9wYWNpdHk6IDA7IHRyYW5zaXRpb246IG9wYWNpdHkgMHMgMC42czsgfQoKQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHsgLmNhcm91c2VsLWZhZGUgLmFjdGl2ZS5jYXJvdXNlbC1pdGVtLWxlZnQsIC5jYXJvdXNlbC1mYWRlIC5hY3RpdmUuY2Fyb3VzZWwtaXRlbS1yaWdodCB7IHRyYW5zaXRpb246IG5vbmU7IH0gfQoKLmNhcm91c2VsLWNvbnRyb2wtcHJldiwgLmNhcm91c2VsLWNvbnRyb2wtbmV4dCB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyBib3R0b206IDA7IHotaW5kZXg6IDE7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyOyB3aWR0aDogMTUlOyBjb2xvcjogI2ZmZjsgdGV4dC1hbGlnbjogY2VudGVyOyBvcGFjaXR5OiAwLjU7IHRyYW5zaXRpb246IG9wYWNpdHkgMC4xNXMgZWFzZTsgfQoKQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHsgLmNhcm91c2VsLWNvbnRyb2wtcHJldiwgLmNhcm91c2VsLWNvbnRyb2wtbmV4dCB7IHRyYW5zaXRpb246IG5vbmU7IH0gfQoKLmNhcm91c2VsLWNvbnRyb2wtcHJldjpob3ZlciwgLmNhcm91c2VsLWNvbnRyb2wtcHJldjpmb2N1cywgLmNhcm91c2VsLWNvbnRyb2wtbmV4dDpob3ZlciwgLmNhcm91c2VsLWNvbnRyb2wtbmV4dDpmb2N1cyB7IGNvbG9yOiAjZmZmOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IG91dGxpbmU6IDA7IG9wYWNpdHk6IDAuOTsgfQoKLmNhcm91c2VsLWNvbnRyb2wtcHJldiB7IGxlZnQ6IDA7IH0KCi5jYXJvdXNlbC1jb250cm9sLW5leHQgeyByaWdodDogMDsgfQoKLmNhcm91c2VsLWNvbnRyb2wtcHJldi1pY29uLCAuY2Fyb3VzZWwtY29udHJvbC1uZXh0LWljb24geyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHdpZHRoOiAyMHB4OyBoZWlnaHQ6IDIwcHg7IGJhY2tncm91bmQ6IDUwJSAvIDEwMCUgMTAwJSBuby1yZXBlYXQ7IH0KCi5jYXJvdXNlbC1jb250cm9sLXByZXYtaWNvbiB7IGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sLCUzY3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIGZpbGw9JyUyM2ZmZicgd2lkdGg9JzgnIGhlaWdodD0nOCcgdmlld0JveD0nMCAwIDggOCclM2UlM2NwYXRoIGQ9J001LjI1IDBsLTQgNCA0IDQgMS41LTEuNUw0LjI1IDRsMi41LTIuNUw1LjI1IDB6Jy8lM2UlM2Mvc3ZnJTNlIik7IH0KCi5jYXJvdXNlbC1jb250cm9sLW5leHQtaWNvbiB7IGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sLCUzY3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIGZpbGw9JyUyM2ZmZicgd2lkdGg9JzgnIGhlaWdodD0nOCcgdmlld0JveD0nMCAwIDggOCclM2UlM2NwYXRoIGQ9J00yLjc1IDBsLTEuNSAxLjVMMy43NSA0bC0yLjUgMi41TDIuNzUgOGw0LTQtNC00eicvJTNlJTNjL3N2ZyUzZSIpOyB9CgouY2Fyb3VzZWwtaW5kaWNhdG9ycyB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgcmlnaHQ6IDA7IGJvdHRvbTogMDsgbGVmdDogMDsgei1pbmRleDogMTU7IGRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogY2VudGVyOyBwYWRkaW5nLWxlZnQ6IDA7IG1hcmdpbi1yaWdodDogMTUlOyBtYXJnaW4tbGVmdDogMTUlOyBsaXN0LXN0eWxlOiBub25lOyB9CgouY2Fyb3VzZWwtaW5kaWNhdG9ycyBsaSB7IGJveC1zaXppbmc6IGNvbnRlbnQtYm94OyBmbGV4OiAwIDEgYXV0bzsgd2lkdGg6IDMwcHg7IGhlaWdodDogM3B4OyBtYXJnaW4tcmlnaHQ6IDNweDsgbWFyZ2luLWxlZnQ6IDNweDsgdGV4dC1pbmRlbnQ6IC05OTlweDsgY3Vyc29yOiBwb2ludGVyOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94OyBib3JkZXItdG9wOiAxMHB4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItYm90dG9tOiAxMHB4IHNvbGlkIHRyYW5zcGFyZW50OyBvcGFjaXR5OiAuNTsgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjZzIGVhc2U7IH0KCkBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7IC5jYXJvdXNlbC1pbmRpY2F0b3JzIGxpIHsgdHJhbnNpdGlvbjogbm9uZTsgfSB9CgouY2Fyb3VzZWwtaW5kaWNhdG9ycyAuYWN0aXZlIHsgb3BhY2l0eTogMTsgfQoKLmNhcm91c2VsLWNhcHRpb24geyBwb3NpdGlvbjogYWJzb2x1dGU7IHJpZ2h0OiAxNSU7IGJvdHRvbTogMjBweDsgbGVmdDogMTUlOyB6LWluZGV4OiAxMDsgcGFkZGluZy10b3A6IDIwcHg7IHBhZGRpbmctYm90dG9tOiAyMHB4OyBjb2xvcjogI2ZmZjsgdGV4dC1hbGlnbjogY2VudGVyOyB9CgpAa2V5ZnJhbWVzIHNwaW5uZXItYm9yZGVyIHsgdG8geyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB9IH0KCi5zcGlubmVyLWJvcmRlciB7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgd2lkdGg6IDJyZW07IGhlaWdodDogMnJlbTsgdmVydGljYWwtYWxpZ246IHRleHQtYm90dG9tOyBib3JkZXI6IDAuMjVlbSBzb2xpZCBjdXJyZW50Q29sb3I7IGJvcmRlci1yaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7IGJvcmRlci1yYWRpdXM6IDUwJTsgYW5pbWF0aW9uOiAuNzVzIGxpbmVhciBpbmZpbml0ZSBzcGlubmVyLWJvcmRlcjsgfQoKLnNwaW5uZXItYm9yZGVyLXNtIHsgd2lkdGg6IDFyZW07IGhlaWdodDogMXJlbTsgYm9yZGVyLXdpZHRoOiAwLjJlbTsgfQoKQGtleWZyYW1lcyBzcGlubmVyLWdyb3cgeyAwJSB7IHRyYW5zZm9ybTogc2NhbGUoMCk7IH0KICA1MCUgeyBvcGFjaXR5OiAxOwogICAgdHJhbnNmb3JtOiBub25lOyB9IH0KCi5zcGlubmVyLWdyb3cgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHdpZHRoOiAycmVtOyBoZWlnaHQ6IDJyZW07IHZlcnRpY2FsLWFsaWduOiB0ZXh0LWJvdHRvbTsgYmFja2dyb3VuZC1jb2xvcjogY3VycmVudENvbG9yOyBib3JkZXItcmFkaXVzOiA1MCU7IG9wYWNpdHk6IDA7IGFuaW1hdGlvbjogLjc1cyBsaW5lYXIgaW5maW5pdGUgc3Bpbm5lci1ncm93OyB9Cgouc3Bpbm5lci1ncm93LXNtIHsgd2lkdGg6IDFyZW07IGhlaWdodDogMXJlbTsgfQoKQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHsgLnNwaW5uZXItYm9yZGVyLCAuc3Bpbm5lci1ncm93IHsgYW5pbWF0aW9uLWR1cmF0aW9uOiAxLjVzOyB9IH0KCi5hbGlnbi1iYXNlbGluZSB7IHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZSAhaW1wb3J0YW50OyB9CgouYWxpZ24tdG9wIHsgdmVydGljYWwtYWxpZ246IHRvcCAhaW1wb3J0YW50OyB9CgouYWxpZ24tbWlkZGxlIHsgdmVydGljYWwtYWxpZ246IG1pZGRsZSAhaW1wb3J0YW50OyB9CgouYWxpZ24tYm90dG9tIHsgdmVydGljYWwtYWxpZ246IGJvdHRvbSAhaW1wb3J0YW50OyB9CgouYWxpZ24tdGV4dC1ib3R0b20geyB2ZXJ0aWNhbC1hbGlnbjogdGV4dC1ib3R0b20gIWltcG9ydGFudDsgfQoKLmFsaWduLXRleHQtdG9wIHsgdmVydGljYWwtYWxpZ246IHRleHQtdG9wICFpbXBvcnRhbnQ7IH0KCi5iZy1wcmltYXJ5IHsgYmFja2dyb3VuZC1jb2xvcjogIzMxNDBmYyAhaW1wb3J0YW50OyB9CgphLmJnLXByaW1hcnk6aG92ZXIsIGEuYmctcHJpbWFyeTpmb2N1cywgYnV0dG9uLmJnLXByaW1hcnk6aG92ZXIsIGJ1dHRvbi5iZy1wcmltYXJ5OmZvY3VzIHsgYmFja2dyb3VuZC1jb2xvcjogIzMxNDBmYyAhaW1wb3J0YW50OyB9CgouYmctc2Vjb25kYXJ5IHsgYmFja2dyb3VuZC1jb2xvcjogIzM2NGE2MyAhaW1wb3J0YW50OyB9CgphLmJnLXNlY29uZGFyeTpob3ZlciwgYS5iZy1zZWNvbmRhcnk6Zm9jdXMsIGJ1dHRvbi5iZy1zZWNvbmRhcnk6aG92ZXIsIGJ1dHRvbi5iZy1zZWNvbmRhcnk6Zm9jdXMgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMjQzMTQyICFpbXBvcnRhbnQ7IH0KCi5iZy1zdWNjZXNzIHsgYmFja2dyb3VuZC1jb2xvcjogIzFlZTBhYyAhaW1wb3J0YW50OyB9CgphLmJnLXN1Y2Nlc3M6aG92ZXIsIGEuYmctc3VjY2Vzczpmb2N1cywgYnV0dG9uLmJnLXN1Y2Nlc3M6aG92ZXIsIGJ1dHRvbi5iZy1zdWNjZXNzOmZvY3VzIHsgYmFja2dyb3VuZC1jb2xvcjogIzE4YjM4OSAhaW1wb3J0YW50OyB9CgouYmctaW5mbyB7IGJhY2tncm91bmQtY29sb3I6ICMwOWMyZGUgIWltcG9ydGFudDsgfQoKYS5iZy1pbmZvOmhvdmVyLCBhLmJnLWluZm86Zm9jdXMsIGJ1dHRvbi5iZy1pbmZvOmhvdmVyLCBidXR0b24uYmctaW5mbzpmb2N1cyB7IGJhY2tncm91bmQtY29sb3I6ICMwNzk3YWQgIWltcG9ydGFudDsgfQoKLmJnLXdhcm5pbmcgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjRiZDBlICFpbXBvcnRhbnQ7IH0KCmEuYmctd2FybmluZzpob3ZlciwgYS5iZy13YXJuaW5nOmZvY3VzLCBidXR0b24uYmctd2FybmluZzpob3ZlciwgYnV0dG9uLmJnLXdhcm5pbmc6Zm9jdXMgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjYzY5OTA5ICFpbXBvcnRhbnQ7IH0KCi5iZy1kYW5nZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZTg1MzQ3ICFpbXBvcnRhbnQ7IH0KCmEuYmctZGFuZ2VyOmhvdmVyLCBhLmJnLWRhbmdlcjpmb2N1cywgYnV0dG9uLmJnLWRhbmdlcjpob3ZlciwgYnV0dG9uLmJnLWRhbmdlcjpmb2N1cyB7IGJhY2tncm91bmQtY29sb3I6ICNlMDJiMWMgIWltcG9ydGFudDsgfQoKLmJnLWRhcmsgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMWMyYjQ2ICFpbXBvcnRhbnQ7IH0KCmEuYmctZGFyazpob3ZlciwgYS5iZy1kYXJrOmZvY3VzLCBidXR0b24uYmctZGFyazpob3ZlciwgYnV0dG9uLmJnLWRhcms6Zm9jdXMgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMGQxNTIyICFpbXBvcnRhbnQ7IH0KCi5iZy1ncmF5IHsgYmFja2dyb3VuZC1jb2xvcjogIzgwOTFhNyAhaW1wb3J0YW50OyB9CgphLmJnLWdyYXk6aG92ZXIsIGEuYmctZ3JheTpmb2N1cywgYnV0dG9uLmJnLWdyYXk6aG92ZXIsIGJ1dHRvbi5iZy1ncmF5OmZvY3VzIHsgYmFja2dyb3VuZC1jb2xvcjogIzY0Nzc5MCAhaW1wb3J0YW50OyB9CgouYmctbGlnaHQgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZTVlOWYyICFpbXBvcnRhbnQ7IH0KCmEuYmctbGlnaHQ6aG92ZXIsIGEuYmctbGlnaHQ6Zm9jdXMsIGJ1dHRvbi5iZy1saWdodDpob3ZlciwgYnV0dG9uLmJnLWxpZ2h0OmZvY3VzIHsgYmFja2dyb3VuZC1jb2xvcjogI2MzY2NlMSAhaW1wb3J0YW50OyB9CgouYmctbGlnaHRlciwgLmR1YWwtbGlzdGJveCAuZHVhbC1saXN0Ym94X19pdGVtOmhvdmVyIHsgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjZmYSAhaW1wb3J0YW50OyB9CgphLmJnLWxpZ2h0ZXI6aG92ZXIsIC5kdWFsLWxpc3Rib3ggYS5kdWFsLWxpc3Rib3hfX2l0ZW06aG92ZXIsIGEuYmctbGlnaHRlcjpmb2N1cywgLmR1YWwtbGlzdGJveCBhLmR1YWwtbGlzdGJveF9faXRlbTpmb2N1czpob3ZlciwgYnV0dG9uLmJnLWxpZ2h0ZXI6aG92ZXIsIC5kdWFsLWxpc3Rib3ggYnV0dG9uLmR1YWwtbGlzdGJveF9faXRlbTpob3ZlciwgYnV0dG9uLmJnLWxpZ2h0ZXI6Zm9jdXMsIC5kdWFsLWxpc3Rib3ggYnV0dG9uLmR1YWwtbGlzdGJveF9faXRlbTpmb2N1czpob3ZlciB7IGJhY2tncm91bmQtY29sb3I6ICNkM2Q3ZTkgIWltcG9ydGFudDsgfQoKLmJnLXdoaXRlIHsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZiAhaW1wb3J0YW50OyB9CgouYmctdHJhbnNwYXJlbnQgeyBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OyB9CgouYm9yZGVyIHsgYm9yZGVyOiAxcHggc29saWQgI2RiZGZlYSAhaW1wb3J0YW50OyB9CgouYm9yZGVyLXRvcCB7IGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGJkZmVhICFpbXBvcnRhbnQ7IH0KCi5ib3JkZXItcmlnaHQgeyBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZGJkZmVhICFpbXBvcnRhbnQ7IH0KCi5ib3JkZXItYm90dG9tIHsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkYmRmZWEgIWltcG9ydGFudDsgfQoKLmJvcmRlci1sZWZ0IHsgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZGJkZmVhICFpbXBvcnRhbnQ7IH0KCi5ib3JkZXItMCwgLm5vLWJkciB7IGJvcmRlcjogMCAhaW1wb3J0YW50OyB9CgouYm9yZGVyLXRvcC0wLCAubm8tYmRyLXQsIC5uby1iZHIteSB7IGJvcmRlci10b3A6IDAgIWltcG9ydGFudDsgfQoKLmJvcmRlci1yaWdodC0wLCAubm8tYmRyLXIsIC5uby1iZHIteCB7IGJvcmRlci1yaWdodDogMCAhaW1wb3J0YW50OyB9CgouYm9yZGVyLWJvdHRvbS0wLCAubm8tYmRyLWIsIC5uby1iZHIteSB7IGJvcmRlci1ib3R0b206IDAgIWltcG9ydGFudDsgfQoKLmJvcmRlci1sZWZ0LTAsIC5uby1iZHItbCwgLm5vLWJkci14IHsgYm9yZGVyLWxlZnQ6IDAgIWltcG9ydGFudDsgfQoKLmJvcmRlci1wcmltYXJ5IHsgYm9yZGVyLWNvbG9yOiAjMDk3MWZlICFpbXBvcnRhbnQ7IH0KCi5ib3JkZXItc2Vjb25kYXJ5IHsgYm9yZGVyLWNvbG9yOiAjMzY0YTYzICFpbXBvcnRhbnQ7IH0KCi5ib3JkZXItc3VjY2VzcyB7IGJvcmRlci1jb2xvcjogIzFlZTBhYyAhaW1wb3J0YW50OyB9CgouYm9yZGVyLWluZm8geyBib3JkZXItY29sb3I6ICMwOWMyZGUgIWltcG9ydGFudDsgfQoKLmJvcmRlci13YXJuaW5nIHsgYm9yZGVyLWNvbG9yOiAjZjRiZDBlICFpbXBvcnRhbnQ7IH0KCi5ib3JkZXItZGFuZ2VyIHsgYm9yZGVyLWNvbG9yOiAjZTg1MzQ3ICFpbXBvcnRhbnQ7IH0KCi5ib3JkZXItZGFyayB7IGJvcmRlci1jb2xvcjogIzFjMmI0NiAhaW1wb3J0YW50OyB9CgouYm9yZGVyLWdyYXkgeyBib3JkZXItY29sb3I6ICM4MDkxYTcgIWltcG9ydGFudDsgfQoKLmJvcmRlci1saWdodCB7IGJvcmRlci1jb2xvcjogI2U1ZTlmMiAhaW1wb3J0YW50OyB9CgouYm9yZGVyLWxpZ2h0ZXIgeyBib3JkZXItY29sb3I6ICNmNWY2ZmEgIWltcG9ydGFudDsgfQoKLmJvcmRlci13aGl0ZSB7IGJvcmRlci1jb2xvcjogI2ZmZiAhaW1wb3J0YW50OyB9Cgoucm91bmRlZC1zbSB7IGJvcmRlci1yYWRpdXM6IDNweCAhaW1wb3J0YW50OyB9Cgoucm91bmRlZCB7IGJvcmRlci1yYWRpdXM6IDRweCAhaW1wb3J0YW50OyB9Cgoucm91bmRlZC10b3AgeyBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHggIWltcG9ydGFudDsgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweCAhaW1wb3J0YW50OyB9Cgoucm91bmRlZC1yaWdodCB7IGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHggIWltcG9ydGFudDsgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDRweCAhaW1wb3J0YW50OyB9Cgoucm91bmRlZC1ib3R0b20geyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4ICFpbXBvcnRhbnQ7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweCAhaW1wb3J0YW50OyB9Cgoucm91bmRlZC1sZWZ0IHsgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNHB4ICFpbXBvcnRhbnQ7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweCAhaW1wb3J0YW50OyB9Cgoucm91bmRlZC1sZyB7IGJvcmRlci1yYWRpdXM6IDVweCAhaW1wb3J0YW50OyB9Cgoucm91bmRlZC1jaXJjbGUgeyBib3JkZXItcmFkaXVzOiA1MCUgIWltcG9ydGFudDsgfQoKLnJvdW5kZWQtcGlsbCB7IGJvcmRlci1yYWRpdXM6IDEuNXJlbSAhaW1wb3J0YW50OyB9Cgoucm91bmRlZC0wIHsgYm9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50OyB9CgouY2xlYXJmaXg6OmFmdGVyIHsgZGlzcGxheTogYmxvY2s7IGNsZWFyOiBib3RoOyBjb250ZW50OiAiIjsgfQoKLmQtbm9uZSB7IGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfQoKLmQtaW5saW5lIHsgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7IH0KCi5kLWlubGluZS1ibG9jayB7IGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50OyB9CgouZC1ibG9jayB7IGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IH0KCi5kLXRhYmxlIHsgZGlzcGxheTogdGFibGUgIWltcG9ydGFudDsgfQoKLmQtdGFibGUtcm93IHsgZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7IH0KCi5kLXRhYmxlLWNlbGwgeyBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7IH0KCi5kLWZsZXgsIC5hbGlnbi1zdGFydCwgLmFsaWduLWVuZCwgLmFsaWduLWNlbnRlciwgLmp1c3RpZnktc3RhcnQsIC5qdXN0aWZ5LWVuZCwgLmp1c3RpZnktY2VudGVyLCAuanVzdGlmeS1iZXR3ZWVuLCAuanVzdGlmeS1hcm91bmQsIC5iZXR3ZWVuLXN0YXJ0LCAuYmV0d2Vlbi1jZW50ZXIsIC5jZW50ZXIsIC5zdHJldGNoIHsgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OyB9CgouZC1pbmxpbmUtZmxleCB7IGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7IH0KCkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgeyAuZC1zbS1ub25lIHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9CiAgLmQtc20taW5saW5lIHsgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7IH0KICAuZC1zbS1pbmxpbmUtYmxvY2sgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2sgIWltcG9ydGFudDsgfQogIC5kLXNtLWJsb2NrIHsgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgfQogIC5kLXNtLXRhYmxlIHsgZGlzcGxheTogdGFibGUgIWltcG9ydGFudDsgfQogIC5kLXNtLXRhYmxlLXJvdyB7IGRpc3BsYXk6IHRhYmxlLXJvdyAhaW1wb3J0YW50OyB9CiAgLmQtc20tdGFibGUtY2VsbCB7IGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsgfQogIC5kLXNtLWZsZXggeyBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7IH0KICAuZC1zbS1pbmxpbmUtZmxleCB7IGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7IH0gfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7IC5kLW1kLW5vbmUgeyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0KICAuZC1tZC1pbmxpbmUgeyBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsgfQogIC5kLW1kLWlubGluZS1ibG9jayB7IGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50OyB9CiAgLmQtbWQtYmxvY2sgeyBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OyB9CiAgLmQtbWQtdGFibGUgeyBkaXNwbGF5OiB0YWJsZSAhaW1wb3J0YW50OyB9CiAgLmQtbWQtdGFibGUtcm93IHsgZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7IH0KICAuZC1tZC10YWJsZS1jZWxsIHsgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OyB9CiAgLmQtbWQtZmxleCB7IGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsgfQogIC5kLW1kLWlubGluZS1mbGV4IHsgZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDsgfSB9CgpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHsgLmQtbGctbm9uZSB7IGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfQogIC5kLWxnLWlubGluZSB7IGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyB9CiAgLmQtbGctaW5saW5lLWJsb2NrIHsgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7IH0KICAuZC1sZy1ibG9jayB7IGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IH0KICAuZC1sZy10YWJsZSB7IGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7IH0KICAuZC1sZy10YWJsZS1yb3cgeyBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsgfQogIC5kLWxnLXRhYmxlLWNlbGwgeyBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7IH0KICAuZC1sZy1mbGV4IHsgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OyB9CiAgLmQtbGctaW5saW5lLWZsZXggeyBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50OyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsgLmQteGwtbm9uZSB7IGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfQogIC5kLXhsLWlubGluZSB7IGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyB9CiAgLmQteGwtaW5saW5lLWJsb2NrIHsgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7IH0KICAuZC14bC1ibG9jayB7IGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IH0KICAuZC14bC10YWJsZSB7IGRpc3BsYXk6IHRhYmxlICFpbXBvcnRhbnQ7IH0KICAuZC14bC10YWJsZS1yb3cgeyBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsgfQogIC5kLXhsLXRhYmxlLWNlbGwgeyBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7IH0KICAuZC14bC1mbGV4IHsgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OyB9CiAgLmQteGwtaW5saW5lLWZsZXggeyBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50OyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiAxNTQwcHgpIHsgLmQteHhsLW5vbmUgeyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0KICAuZC14eGwtaW5saW5lIHsgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7IH0KICAuZC14eGwtaW5saW5lLWJsb2NrIHsgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7IH0KICAuZC14eGwtYmxvY2sgeyBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OyB9CiAgLmQteHhsLXRhYmxlIHsgZGlzcGxheTogdGFibGUgIWltcG9ydGFudDsgfQogIC5kLXh4bC10YWJsZS1yb3cgeyBkaXNwbGF5OiB0YWJsZS1yb3cgIWltcG9ydGFudDsgfQogIC5kLXh4bC10YWJsZS1jZWxsIHsgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OyB9CiAgLmQteHhsLWZsZXggeyBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7IH0KICAuZC14eGwtaW5saW5lLWZsZXggeyBkaXNwbGF5OiBpbmxpbmUtZmxleCAhaW1wb3J0YW50OyB9IH0KCkBtZWRpYSBwcmludCB7IC5kLXByaW50LW5vbmUgeyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0KICAuZC1wcmludC1pbmxpbmUgeyBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsgfQogIC5kLXByaW50LWlubGluZS1ibG9jayB7IGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50OyB9CiAgLmQtcHJpbnQtYmxvY2sgeyBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OyB9CiAgLmQtcHJpbnQtdGFibGUgeyBkaXNwbGF5OiB0YWJsZSAhaW1wb3J0YW50OyB9CiAgLmQtcHJpbnQtdGFibGUtcm93IHsgZGlzcGxheTogdGFibGUtcm93ICFpbXBvcnRhbnQ7IH0KICAuZC1wcmludC10YWJsZS1jZWxsIHsgZGlzcGxheTogdGFibGUtY2VsbCAhaW1wb3J0YW50OyB9CiAgLmQtcHJpbnQtZmxleCB7IGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsgfQogIC5kLXByaW50LWlubGluZS1mbGV4IHsgZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDsgfSB9CgouZW1iZWQtcmVzcG9uc2l2ZSB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgZGlzcGxheTogYmxvY2s7IHdpZHRoOiAxMDAlOyBwYWRkaW5nOiAwOyBvdmVyZmxvdzogaGlkZGVuOyB9CgouZW1iZWQtcmVzcG9uc2l2ZTo6YmVmb3JlIHsgZGlzcGxheTogYmxvY2s7IGNvbnRlbnQ6ICIiOyB9CgouZW1iZWQtcmVzcG9uc2l2ZSAuZW1iZWQtcmVzcG9uc2l2ZS1pdGVtLCAuZW1iZWQtcmVzcG9uc2l2ZSBpZnJhbWUsIC5lbWJlZC1yZXNwb25zaXZlIGVtYmVkLCAuZW1iZWQtcmVzcG9uc2l2ZSBvYmplY3QsIC5lbWJlZC1yZXNwb25zaXZlIHZpZGVvIHsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IGJvdHRvbTogMDsgbGVmdDogMDsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsgYm9yZGVyOiAwOyB9CgouZW1iZWQtcmVzcG9uc2l2ZS0yMWJ5OTo6YmVmb3JlIHsgcGFkZGluZy10b3A6IDQyLjg1NzE0JTsgfQoKLmVtYmVkLXJlc3BvbnNpdmUtMTZieTk6OmJlZm9yZSB7IHBhZGRpbmctdG9wOiA1Ni4yNSU7IH0KCi5lbWJlZC1yZXNwb25zaXZlLTRieTM6OmJlZm9yZSB7IHBhZGRpbmctdG9wOiA3NSU7IH0KCi5lbWJlZC1yZXNwb25zaXZlLTFieTE6OmJlZm9yZSB7IHBhZGRpbmctdG9wOiAxMDAlOyB9CgouZmxleC1yb3cgeyBmbGV4LWRpcmVjdGlvbjogcm93ICFpbXBvcnRhbnQ7IH0KCi5mbGV4LWNvbHVtbiB7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsgfQoKLmZsZXgtcm93LXJldmVyc2UgeyBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsgfQoKLmZsZXgtY29sdW1uLXJldmVyc2UgeyBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsgfQoKLmZsZXgtd3JhcCB7IGZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50OyB9CgouZmxleC1ub3dyYXAgeyBmbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50OyB9CgouZmxleC13cmFwLXJldmVyc2UgeyBmbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZSAhaW1wb3J0YW50OyB9CgouZmxleC1maWxsIHsgZmxleDogMSAxIGF1dG8gIWltcG9ydGFudDsgfQoKLmZsZXgtZ3Jvdy0wIHsgZmxleC1ncm93OiAwICFpbXBvcnRhbnQ7IH0KCi5mbGV4LWdyb3ctMSB7IGZsZXgtZ3JvdzogMSAhaW1wb3J0YW50OyB9CgouZmxleC1zaHJpbmstMCB7IGZsZXgtc2hyaW5rOiAwICFpbXBvcnRhbnQ7IH0KCi5mbGV4LXNocmluay0xIHsgZmxleC1zaHJpbms6IDEgIWltcG9ydGFudDsgfQoKLmp1c3RpZnktY29udGVudC1zdGFydCwgLmp1c3RpZnktc3RhcnQgeyBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsgfQoKLmp1c3RpZnktY29udGVudC1lbmQsIC5qdXN0aWZ5LWVuZCB7IGp1c3RpZnktY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsgfQoKLmp1c3RpZnktY29udGVudC1jZW50ZXIsIC5qdXN0aWZ5LWNlbnRlciwgLmNlbnRlciB7IGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7IH0KCi5qdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiwgLmp1c3RpZnktYmV0d2VlbiwgLmJldHdlZW4tc3RhcnQsIC5iZXR3ZWVuLWNlbnRlciB7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50OyB9CgouanVzdGlmeS1jb250ZW50LWFyb3VuZCwgLmp1c3RpZnktYXJvdW5kIHsganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsgfQoKLmFsaWduLWl0ZW1zLXN0YXJ0LCAuYWxpZ24tc3RhcnQsIC5iZXR3ZWVuLXN0YXJ0IHsgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsgfQoKLmFsaWduLWl0ZW1zLWVuZCwgLmFsaWduLWVuZCB7IGFsaWduLWl0ZW1zOiBmbGV4LWVuZCAhaW1wb3J0YW50OyB9CgouYWxpZ24taXRlbXMtY2VudGVyLCAuYWxpZ24tY2VudGVyLCAuYmV0d2Vlbi1jZW50ZXIsIC5jZW50ZXIgeyBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7IH0KCi5hbGlnbi1pdGVtcy1iYXNlbGluZSB7IGFsaWduLWl0ZW1zOiBiYXNlbGluZSAhaW1wb3J0YW50OyB9CgouYWxpZ24taXRlbXMtc3RyZXRjaCwgLnN0cmV0Y2ggeyBhbGlnbi1pdGVtczogc3RyZXRjaCAhaW1wb3J0YW50OyB9CgouYWxpZ24tY29udGVudC1zdGFydCB7IGFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsgfQoKLmFsaWduLWNvbnRlbnQtZW5kIHsgYWxpZ24tY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsgfQoKLmFsaWduLWNvbnRlbnQtY2VudGVyIHsgYWxpZ24tY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7IH0KCi5hbGlnbi1jb250ZW50LWJldHdlZW4geyBhbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7IH0KCi5hbGlnbi1jb250ZW50LWFyb3VuZCB7IGFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50OyB9CgouYWxpZ24tY29udGVudC1zdHJldGNoIHsgYWxpZ24tY29udGVudDogc3RyZXRjaCAhaW1wb3J0YW50OyB9CgouYWxpZ24tc2VsZi1hdXRvIHsgYWxpZ24tc2VsZjogYXV0byAhaW1wb3J0YW50OyB9CgouYWxpZ24tc2VsZi1zdGFydCB7IGFsaWduLXNlbGY6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsgfQoKLmFsaWduLXNlbGYtZW5kIHsgYWxpZ24tc2VsZjogZmxleC1lbmQgIWltcG9ydGFudDsgfQoKLmFsaWduLXNlbGYtY2VudGVyIHsgYWxpZ24tc2VsZjogY2VudGVyICFpbXBvcnRhbnQ7IH0KCi5hbGlnbi1zZWxmLWJhc2VsaW5lIHsgYWxpZ24tc2VsZjogYmFzZWxpbmUgIWltcG9ydGFudDsgfQoKLmFsaWduLXNlbGYtc3RyZXRjaCB7IGFsaWduLXNlbGY6IHN0cmV0Y2ggIWltcG9ydGFudDsgfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7IC5mbGV4LXNtLXJvdyB7IGZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsgfQogIC5mbGV4LXNtLWNvbHVtbiB7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsgfQogIC5mbGV4LXNtLXJvdy1yZXZlcnNlIHsgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlICFpbXBvcnRhbnQ7IH0KICAuZmxleC1zbS1jb2x1bW4tcmV2ZXJzZSB7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZSAhaW1wb3J0YW50OyB9CiAgLmZsZXgtc20td3JhcCB7IGZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50OyB9CiAgLmZsZXgtc20tbm93cmFwIHsgZmxleC13cmFwOiBub3dyYXAgIWltcG9ydGFudDsgfQogIC5mbGV4LXNtLXdyYXAtcmV2ZXJzZSB7IGZsZXgtd3JhcDogd3JhcC1yZXZlcnNlICFpbXBvcnRhbnQ7IH0KICAuZmxleC1zbS1maWxsIHsgZmxleDogMSAxIGF1dG8gIWltcG9ydGFudDsgfQogIC5mbGV4LXNtLWdyb3ctMCB7IGZsZXgtZ3JvdzogMCAhaW1wb3J0YW50OyB9CiAgLmZsZXgtc20tZ3Jvdy0xIHsgZmxleC1ncm93OiAxICFpbXBvcnRhbnQ7IH0KICAuZmxleC1zbS1zaHJpbmstMCB7IGZsZXgtc2hyaW5rOiAwICFpbXBvcnRhbnQ7IH0KICAuZmxleC1zbS1zaHJpbmstMSB7IGZsZXgtc2hyaW5rOiAxICFpbXBvcnRhbnQ7IH0KICAuanVzdGlmeS1jb250ZW50LXNtLXN0YXJ0IHsganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7IH0KICAuanVzdGlmeS1jb250ZW50LXNtLWVuZCB7IGp1c3RpZnktY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsgfQogIC5qdXN0aWZ5LWNvbnRlbnQtc20tY2VudGVyIHsganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsgfQogIC5qdXN0aWZ5LWNvbnRlbnQtc20tYmV0d2VlbiB7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50OyB9CiAgLmp1c3RpZnktY29udGVudC1zbS1hcm91bmQgeyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50OyB9CiAgLmFsaWduLWl0ZW1zLXNtLXN0YXJ0IHsgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsgfQogIC5hbGlnbi1pdGVtcy1zbS1lbmQgeyBhbGlnbi1pdGVtczogZmxleC1lbmQgIWltcG9ydGFudDsgfQogIC5hbGlnbi1pdGVtcy1zbS1jZW50ZXIgeyBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7IH0KICAuYWxpZ24taXRlbXMtc20tYmFzZWxpbmUgeyBhbGlnbi1pdGVtczogYmFzZWxpbmUgIWltcG9ydGFudDsgfQogIC5hbGlnbi1pdGVtcy1zbS1zdHJldGNoIHsgYWxpZ24taXRlbXM6IHN0cmV0Y2ggIWltcG9ydGFudDsgfQogIC5hbGlnbi1jb250ZW50LXNtLXN0YXJ0IHsgYWxpZ24tY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50OyB9CiAgLmFsaWduLWNvbnRlbnQtc20tZW5kIHsgYWxpZ24tY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsgfQogIC5hbGlnbi1jb250ZW50LXNtLWNlbnRlciB7IGFsaWduLWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OyB9CiAgLmFsaWduLWNvbnRlbnQtc20tYmV0d2VlbiB7IGFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsgfQogIC5hbGlnbi1jb250ZW50LXNtLWFyb3VuZCB7IGFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50OyB9CiAgLmFsaWduLWNvbnRlbnQtc20tc3RyZXRjaCB7IGFsaWduLWNvbnRlbnQ6IHN0cmV0Y2ggIWltcG9ydGFudDsgfQogIC5hbGlnbi1zZWxmLXNtLWF1dG8geyBhbGlnbi1zZWxmOiBhdXRvICFpbXBvcnRhbnQ7IH0KICAuYWxpZ24tc2VsZi1zbS1zdGFydCB7IGFsaWduLXNlbGY6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsgfQogIC5hbGlnbi1zZWxmLXNtLWVuZCB7IGFsaWduLXNlbGY6IGZsZXgtZW5kICFpbXBvcnRhbnQ7IH0KICAuYWxpZ24tc2VsZi1zbS1jZW50ZXIgeyBhbGlnbi1zZWxmOiBjZW50ZXIgIWltcG9ydGFudDsgfQogIC5hbGlnbi1zZWxmLXNtLWJhc2VsaW5lIHsgYWxpZ24tc2VsZjogYmFzZWxpbmUgIWltcG9ydGFudDsgfQogIC5hbGlnbi1zZWxmLXNtLXN0cmV0Y2ggeyBhbGlnbi1zZWxmOiBzdHJldGNoICFpbXBvcnRhbnQ7IH0gfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7IC5mbGV4LW1kLXJvdyB7IGZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsgfQogIC5mbGV4LW1kLWNvbHVtbiB7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsgfQogIC5mbGV4LW1kLXJvdy1yZXZlcnNlIHsgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlICFpbXBvcnRhbnQ7IH0KICAuZmxleC1tZC1jb2x1bW4tcmV2ZXJzZSB7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZSAhaW1wb3J0YW50OyB9CiAgLmZsZXgtbWQtd3JhcCB7IGZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50OyB9CiAgLmZsZXgtbWQtbm93cmFwIHsgZmxleC13cmFwOiBub3dyYXAgIWltcG9ydGFudDsgfQogIC5mbGV4LW1kLXdyYXAtcmV2ZXJzZSB7IGZsZXgtd3JhcDogd3JhcC1yZXZlcnNlICFpbXBvcnRhbnQ7IH0KICAuZmxleC1tZC1maWxsIHsgZmxleDogMSAxIGF1dG8gIWltcG9ydGFudDsgfQogIC5mbGV4LW1kLWdyb3ctMCB7IGZsZXgtZ3JvdzogMCAhaW1wb3J0YW50OyB9CiAgLmZsZXgtbWQtZ3Jvdy0xIHsgZmxleC1ncm93OiAxICFpbXBvcnRhbnQ7IH0KICAuZmxleC1tZC1zaHJpbmstMCB7IGZsZXgtc2hyaW5rOiAwICFpbXBvcnRhbnQ7IH0KICAuZmxleC1tZC1zaHJpbmstMSB7IGZsZXgtc2hyaW5rOiAxICFpbXBvcnRhbnQ7IH0KICAuanVzdGlmeS1jb250ZW50LW1kLXN0YXJ0IHsganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7IH0KICAuanVzdGlmeS1jb250ZW50LW1kLWVuZCB7IGp1c3RpZnktY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsgfQogIC5qdXN0aWZ5LWNvbnRlbnQtbWQtY2VudGVyIHsganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsgfQogIC5qdXN0aWZ5LWNvbnRlbnQtbWQtYmV0d2VlbiB7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50OyB9CiAgLmp1c3RpZnktY29udGVudC1tZC1hcm91bmQgeyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50OyB9CiAgLmFsaWduLWl0ZW1zLW1kLXN0YXJ0IHsgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsgfQogIC5hbGlnbi1pdGVtcy1tZC1lbmQgeyBhbGlnbi1pdGVtczogZmxleC1lbmQgIWltcG9ydGFudDsgfQogIC5hbGlnbi1pdGVtcy1tZC1jZW50ZXIgeyBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7IH0KICAuYWxpZ24taXRlbXMtbWQtYmFzZWxpbmUgeyBhbGlnbi1pdGVtczogYmFzZWxpbmUgIWltcG9ydGFudDsgfQogIC5hbGlnbi1pdGVtcy1tZC1zdHJldGNoIHsgYWxpZ24taXRlbXM6IHN0cmV0Y2ggIWltcG9ydGFudDsgfQogIC5hbGlnbi1jb250ZW50LW1kLXN0YXJ0IHsgYWxpZ24tY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50OyB9CiAgLmFsaWduLWNvbnRlbnQtbWQtZW5kIHsgYWxpZ24tY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsgfQogIC5hbGlnbi1jb250ZW50LW1kLWNlbnRlciB7IGFsaWduLWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OyB9CiAgLmFsaWduLWNvbnRlbnQtbWQtYmV0d2VlbiB7IGFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsgfQogIC5hbGlnbi1jb250ZW50LW1kLWFyb3VuZCB7IGFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50OyB9CiAgLmFsaWduLWNvbnRlbnQtbWQtc3RyZXRjaCB7IGFsaWduLWNvbnRlbnQ6IHN0cmV0Y2ggIWltcG9ydGFudDsgfQogIC5hbGlnbi1zZWxmLW1kLWF1dG8geyBhbGlnbi1zZWxmOiBhdXRvICFpbXBvcnRhbnQ7IH0KICAuYWxpZ24tc2VsZi1tZC1zdGFydCB7IGFsaWduLXNlbGY6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsgfQogIC5hbGlnbi1zZWxmLW1kLWVuZCB7IGFsaWduLXNlbGY6IGZsZXgtZW5kICFpbXBvcnRhbnQ7IH0KICAuYWxpZ24tc2VsZi1tZC1jZW50ZXIgeyBhbGlnbi1zZWxmOiBjZW50ZXIgIWltcG9ydGFudDsgfQogIC5hbGlnbi1zZWxmLW1kLWJhc2VsaW5lIHsgYWxpZ24tc2VsZjogYmFzZWxpbmUgIWltcG9ydGFudDsgfQogIC5hbGlnbi1zZWxmLW1kLXN0cmV0Y2ggeyBhbGlnbi1zZWxmOiBzdHJldGNoICFpbXBvcnRhbnQ7IH0gfQoKQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7IC5mbGV4LWxnLXJvdyB7IGZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsgfQogIC5mbGV4LWxnLWNvbHVtbiB7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4gIWltcG9ydGFudDsgfQogIC5mbGV4LWxnLXJvdy1yZXZlcnNlIHsgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlICFpbXBvcnRhbnQ7IH0KICAuZmxleC1sZy1jb2x1bW4tcmV2ZXJzZSB7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZSAhaW1wb3J0YW50OyB9CiAgLmZsZXgtbGctd3JhcCB7IGZsZXgtd3JhcDogd3JhcCAhaW1wb3J0YW50OyB9CiAgLmZsZXgtbGctbm93cmFwIHsgZmxleC13cmFwOiBub3dyYXAgIWltcG9ydGFudDsgfQogIC5mbGV4LWxnLXdyYXAtcmV2ZXJzZSB7IGZsZXgtd3JhcDogd3JhcC1yZXZlcnNlICFpbXBvcnRhbnQ7IH0KICAuZmxleC1sZy1maWxsIHsgZmxleDogMSAxIGF1dG8gIWltcG9ydGFudDsgfQogIC5mbGV4LWxnLWdyb3ctMCB7IGZsZXgtZ3JvdzogMCAhaW1wb3J0YW50OyB9CiAgLmZsZXgtbGctZ3Jvdy0xIHsgZmxleC1ncm93OiAxICFpbXBvcnRhbnQ7IH0KICAuZmxleC1sZy1zaHJpbmstMCB7IGZsZXgtc2hyaW5rOiAwICFpbXBvcnRhbnQ7IH0KICAuZmxleC1sZy1zaHJpbmstMSB7IGZsZXgtc2hyaW5rOiAxICFpbXBvcnRhbnQ7IH0KICAuanVzdGlmeS1jb250ZW50LWxnLXN0YXJ0IHsganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7IH0KICAuanVzdGlmeS1jb250ZW50LWxnLWVuZCB7IGp1c3RpZnktY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsgfQogIC5qdXN0aWZ5LWNvbnRlbnQtbGctY2VudGVyIHsganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsgfQogIC5qdXN0aWZ5LWNvbnRlbnQtbGctYmV0d2VlbiB7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50OyB9CiAgLmp1c3RpZnktY29udGVudC1sZy1hcm91bmQgeyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50OyB9CiAgLmFsaWduLWl0ZW1zLWxnLXN0YXJ0IHsgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsgfQogIC5hbGlnbi1pdGVtcy1sZy1lbmQgeyBhbGlnbi1pdGVtczogZmxleC1lbmQgIWltcG9ydGFudDsgfQogIC5hbGlnbi1pdGVtcy1sZy1jZW50ZXIgeyBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7IH0KICAuYWxpZ24taXRlbXMtbGctYmFzZWxpbmUgeyBhbGlnbi1pdGVtczogYmFzZWxpbmUgIWltcG9ydGFudDsgfQogIC5hbGlnbi1pdGVtcy1sZy1zdHJldGNoIHsgYWxpZ24taXRlbXM6IHN0cmV0Y2ggIWltcG9ydGFudDsgfQogIC5hbGlnbi1jb250ZW50LWxnLXN0YXJ0IHsgYWxpZ24tY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50OyB9CiAgLmFsaWduLWNvbnRlbnQtbGctZW5kIHsgYWxpZ24tY29udGVudDogZmxleC1lbmQgIWltcG9ydGFudDsgfQogIC5hbGlnbi1jb250ZW50LWxnLWNlbnRlciB7IGFsaWduLWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OyB9CiAgLmFsaWduLWNvbnRlbnQtbGctYmV0d2VlbiB7IGFsaWduLWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsgfQogIC5hbGlnbi1jb250ZW50LWxnLWFyb3VuZCB7IGFsaWduLWNvbnRlbnQ6IHNwYWNlLWFyb3VuZCAhaW1wb3J0YW50OyB9CiAgLmFsaWduLWNvbnRlbnQtbGctc3RyZXRjaCB7IGFsaWduLWNvbnRlbnQ6IHN0cmV0Y2ggIWltcG9ydGFudDsgfQogIC5hbGlnbi1zZWxmLWxnLWF1dG8geyBhbGlnbi1zZWxmOiBhdXRvICFpbXBvcnRhbnQ7IH0KICAuYWxpZ24tc2VsZi1sZy1zdGFydCB7IGFsaWduLXNlbGY6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsgfQogIC5hbGlnbi1zZWxmLWxnLWVuZCB7IGFsaWduLXNlbGY6IGZsZXgtZW5kICFpbXBvcnRhbnQ7IH0KICAuYWxpZ24tc2VsZi1sZy1jZW50ZXIgeyBhbGlnbi1zZWxmOiBjZW50ZXIgIWltcG9ydGFudDsgfQogIC5hbGlnbi1zZWxmLWxnLWJhc2VsaW5lIHsgYWxpZ24tc2VsZjogYmFzZWxpbmUgIWltcG9ydGFudDsgfQogIC5hbGlnbi1zZWxmLWxnLXN0cmV0Y2ggeyBhbGlnbi1zZWxmOiBzdHJldGNoICFpbXBvcnRhbnQ7IH0gfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgeyAuZmxleC14bC1yb3cgeyBmbGV4LWRpcmVjdGlvbjogcm93ICFpbXBvcnRhbnQ7IH0KICAuZmxleC14bC1jb2x1bW4geyBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7IH0KICAuZmxleC14bC1yb3ctcmV2ZXJzZSB7IGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZSAhaW1wb3J0YW50OyB9CiAgLmZsZXgteGwtY29sdW1uLXJldmVyc2UgeyBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2UgIWltcG9ydGFudDsgfQogIC5mbGV4LXhsLXdyYXAgeyBmbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDsgfQogIC5mbGV4LXhsLW5vd3JhcCB7IGZsZXgtd3JhcDogbm93cmFwICFpbXBvcnRhbnQ7IH0KICAuZmxleC14bC13cmFwLXJldmVyc2UgeyBmbGV4LXdyYXA6IHdyYXAtcmV2ZXJzZSAhaW1wb3J0YW50OyB9CiAgLmZsZXgteGwtZmlsbCB7IGZsZXg6IDEgMSBhdXRvICFpbXBvcnRhbnQ7IH0KICAuZmxleC14bC1ncm93LTAgeyBmbGV4LWdyb3c6IDAgIWltcG9ydGFudDsgfQogIC5mbGV4LXhsLWdyb3ctMSB7IGZsZXgtZ3JvdzogMSAhaW1wb3J0YW50OyB9CiAgLmZsZXgteGwtc2hyaW5rLTAgeyBmbGV4LXNocmluazogMCAhaW1wb3J0YW50OyB9CiAgLmZsZXgteGwtc2hyaW5rLTEgeyBmbGV4LXNocmluazogMSAhaW1wb3J0YW50OyB9CiAgLmp1c3RpZnktY29udGVudC14bC1zdGFydCB7IGp1c3RpZnktY29udGVudDogZmxleC1zdGFydCAhaW1wb3J0YW50OyB9CiAgLmp1c3RpZnktY29udGVudC14bC1lbmQgeyBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7IH0KICAuanVzdGlmeS1jb250ZW50LXhsLWNlbnRlciB7IGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7IH0KICAuanVzdGlmeS1jb250ZW50LXhsLWJldHdlZW4geyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW4gIWltcG9ydGFudDsgfQogIC5qdXN0aWZ5LWNvbnRlbnQteGwtYXJvdW5kIHsganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsgfQogIC5hbGlnbi1pdGVtcy14bC1zdGFydCB7IGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7IH0KICAuYWxpZ24taXRlbXMteGwtZW5kIHsgYWxpZ24taXRlbXM6IGZsZXgtZW5kICFpbXBvcnRhbnQ7IH0KICAuYWxpZ24taXRlbXMteGwtY2VudGVyIHsgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OyB9CiAgLmFsaWduLWl0ZW1zLXhsLWJhc2VsaW5lIHsgYWxpZ24taXRlbXM6IGJhc2VsaW5lICFpbXBvcnRhbnQ7IH0KICAuYWxpZ24taXRlbXMteGwtc3RyZXRjaCB7IGFsaWduLWl0ZW1zOiBzdHJldGNoICFpbXBvcnRhbnQ7IH0KICAuYWxpZ24tY29udGVudC14bC1zdGFydCB7IGFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsgfQogIC5hbGlnbi1jb250ZW50LXhsLWVuZCB7IGFsaWduLWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7IH0KICAuYWxpZ24tY29udGVudC14bC1jZW50ZXIgeyBhbGlnbi1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDsgfQogIC5hbGlnbi1jb250ZW50LXhsLWJldHdlZW4geyBhbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7IH0KICAuYWxpZ24tY29udGVudC14bC1hcm91bmQgeyBhbGlnbi1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsgfQogIC5hbGlnbi1jb250ZW50LXhsLXN0cmV0Y2ggeyBhbGlnbi1jb250ZW50OiBzdHJldGNoICFpbXBvcnRhbnQ7IH0KICAuYWxpZ24tc2VsZi14bC1hdXRvIHsgYWxpZ24tc2VsZjogYXV0byAhaW1wb3J0YW50OyB9CiAgLmFsaWduLXNlbGYteGwtc3RhcnQgeyBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7IH0KICAuYWxpZ24tc2VsZi14bC1lbmQgeyBhbGlnbi1zZWxmOiBmbGV4LWVuZCAhaW1wb3J0YW50OyB9CiAgLmFsaWduLXNlbGYteGwtY2VudGVyIHsgYWxpZ24tc2VsZjogY2VudGVyICFpbXBvcnRhbnQ7IH0KICAuYWxpZ24tc2VsZi14bC1iYXNlbGluZSB7IGFsaWduLXNlbGY6IGJhc2VsaW5lICFpbXBvcnRhbnQ7IH0KICAuYWxpZ24tc2VsZi14bC1zdHJldGNoIHsgYWxpZ24tc2VsZjogc3RyZXRjaCAhaW1wb3J0YW50OyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiAxNTQwcHgpIHsgLmZsZXgteHhsLXJvdyB7IGZsZXgtZGlyZWN0aW9uOiByb3cgIWltcG9ydGFudDsgfQogIC5mbGV4LXh4bC1jb2x1bW4geyBmbGV4LWRpcmVjdGlvbjogY29sdW1uICFpbXBvcnRhbnQ7IH0KICAuZmxleC14eGwtcm93LXJldmVyc2UgeyBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDsgfQogIC5mbGV4LXh4bC1jb2x1bW4tcmV2ZXJzZSB7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZSAhaW1wb3J0YW50OyB9CiAgLmZsZXgteHhsLXdyYXAgeyBmbGV4LXdyYXA6IHdyYXAgIWltcG9ydGFudDsgfQogIC5mbGV4LXh4bC1ub3dyYXAgeyBmbGV4LXdyYXA6IG5vd3JhcCAhaW1wb3J0YW50OyB9CiAgLmZsZXgteHhsLXdyYXAtcmV2ZXJzZSB7IGZsZXgtd3JhcDogd3JhcC1yZXZlcnNlICFpbXBvcnRhbnQ7IH0KICAuZmxleC14eGwtZmlsbCB7IGZsZXg6IDEgMSBhdXRvICFpbXBvcnRhbnQ7IH0KICAuZmxleC14eGwtZ3Jvdy0wIHsgZmxleC1ncm93OiAwICFpbXBvcnRhbnQ7IH0KICAuZmxleC14eGwtZ3Jvdy0xIHsgZmxleC1ncm93OiAxICFpbXBvcnRhbnQ7IH0KICAuZmxleC14eGwtc2hyaW5rLTAgeyBmbGV4LXNocmluazogMCAhaW1wb3J0YW50OyB9CiAgLmZsZXgteHhsLXNocmluay0xIHsgZmxleC1zaHJpbms6IDEgIWltcG9ydGFudDsgfQogIC5qdXN0aWZ5LWNvbnRlbnQteHhsLXN0YXJ0IHsganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0ICFpbXBvcnRhbnQ7IH0KICAuanVzdGlmeS1jb250ZW50LXh4bC1lbmQgeyBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kICFpbXBvcnRhbnQ7IH0KICAuanVzdGlmeS1jb250ZW50LXh4bC1jZW50ZXIgeyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OyB9CiAgLmp1c3RpZnktY29udGVudC14eGwtYmV0d2VlbiB7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbiAhaW1wb3J0YW50OyB9CiAgLmp1c3RpZnktY29udGVudC14eGwtYXJvdW5kIHsganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQgIWltcG9ydGFudDsgfQogIC5hbGlnbi1pdGVtcy14eGwtc3RhcnQgeyBhbGlnbi1pdGVtczogZmxleC1zdGFydCAhaW1wb3J0YW50OyB9CiAgLmFsaWduLWl0ZW1zLXh4bC1lbmQgeyBhbGlnbi1pdGVtczogZmxleC1lbmQgIWltcG9ydGFudDsgfQogIC5hbGlnbi1pdGVtcy14eGwtY2VudGVyIHsgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50OyB9CiAgLmFsaWduLWl0ZW1zLXh4bC1iYXNlbGluZSB7IGFsaWduLWl0ZW1zOiBiYXNlbGluZSAhaW1wb3J0YW50OyB9CiAgLmFsaWduLWl0ZW1zLXh4bC1zdHJldGNoIHsgYWxpZ24taXRlbXM6IHN0cmV0Y2ggIWltcG9ydGFudDsgfQogIC5hbGlnbi1jb250ZW50LXh4bC1zdGFydCB7IGFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQgIWltcG9ydGFudDsgfQogIC5hbGlnbi1jb250ZW50LXh4bC1lbmQgeyBhbGlnbi1jb250ZW50OiBmbGV4LWVuZCAhaW1wb3J0YW50OyB9CiAgLmFsaWduLWNvbnRlbnQteHhsLWNlbnRlciB7IGFsaWduLWNvbnRlbnQ6IGNlbnRlciAhaW1wb3J0YW50OyB9CiAgLmFsaWduLWNvbnRlbnQteHhsLWJldHdlZW4geyBhbGlnbi1jb250ZW50OiBzcGFjZS1iZXR3ZWVuICFpbXBvcnRhbnQ7IH0KICAuYWxpZ24tY29udGVudC14eGwtYXJvdW5kIHsgYWxpZ24tY29udGVudDogc3BhY2UtYXJvdW5kICFpbXBvcnRhbnQ7IH0KICAuYWxpZ24tY29udGVudC14eGwtc3RyZXRjaCB7IGFsaWduLWNvbnRlbnQ6IHN0cmV0Y2ggIWltcG9ydGFudDsgfQogIC5hbGlnbi1zZWxmLXh4bC1hdXRvIHsgYWxpZ24tc2VsZjogYXV0byAhaW1wb3J0YW50OyB9CiAgLmFsaWduLXNlbGYteHhsLXN0YXJ0IHsgYWxpZ24tc2VsZjogZmxleC1zdGFydCAhaW1wb3J0YW50OyB9CiAgLmFsaWduLXNlbGYteHhsLWVuZCB7IGFsaWduLXNlbGY6IGZsZXgtZW5kICFpbXBvcnRhbnQ7IH0KICAuYWxpZ24tc2VsZi14eGwtY2VudGVyIHsgYWxpZ24tc2VsZjogY2VudGVyICFpbXBvcnRhbnQ7IH0KICAuYWxpZ24tc2VsZi14eGwtYmFzZWxpbmUgeyBhbGlnbi1zZWxmOiBiYXNlbGluZSAhaW1wb3J0YW50OyB9CiAgLmFsaWduLXNlbGYteHhsLXN0cmV0Y2ggeyBhbGlnbi1zZWxmOiBzdHJldGNoICFpbXBvcnRhbnQ7IH0gfQoKLmZsb2F0LWxlZnQgeyBmbG9hdDogbGVmdCAhaW1wb3J0YW50OyB9CgouZmxvYXQtcmlnaHQgeyBmbG9hdDogcmlnaHQgIWltcG9ydGFudDsgfQoKLmZsb2F0LW5vbmUgeyBmbG9hdDogbm9uZSAhaW1wb3J0YW50OyB9CgpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsgLmZsb2F0LXNtLWxlZnQgeyBmbG9hdDogbGVmdCAhaW1wb3J0YW50OyB9CiAgLmZsb2F0LXNtLXJpZ2h0IHsgZmxvYXQ6IHJpZ2h0ICFpbXBvcnRhbnQ7IH0KICAuZmxvYXQtc20tbm9uZSB7IGZsb2F0OiBub25lICFpbXBvcnRhbnQ7IH0gfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7IC5mbG9hdC1tZC1sZWZ0IHsgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsgfQogIC5mbG9hdC1tZC1yaWdodCB7IGZsb2F0OiByaWdodCAhaW1wb3J0YW50OyB9CiAgLmZsb2F0LW1kLW5vbmUgeyBmbG9hdDogbm9uZSAhaW1wb3J0YW50OyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgeyAuZmxvYXQtbGctbGVmdCB7IGZsb2F0OiBsZWZ0ICFpbXBvcnRhbnQ7IH0KICAuZmxvYXQtbGctcmlnaHQgeyBmbG9hdDogcmlnaHQgIWltcG9ydGFudDsgfQogIC5mbG9hdC1sZy1ub25lIHsgZmxvYXQ6IG5vbmUgIWltcG9ydGFudDsgfSB9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7IC5mbG9hdC14bC1sZWZ0IHsgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsgfQogIC5mbG9hdC14bC1yaWdodCB7IGZsb2F0OiByaWdodCAhaW1wb3J0YW50OyB9CiAgLmZsb2F0LXhsLW5vbmUgeyBmbG9hdDogbm9uZSAhaW1wb3J0YW50OyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiAxNTQwcHgpIHsgLmZsb2F0LXh4bC1sZWZ0IHsgZmxvYXQ6IGxlZnQgIWltcG9ydGFudDsgfQogIC5mbG9hdC14eGwtcmlnaHQgeyBmbG9hdDogcmlnaHQgIWltcG9ydGFudDsgfQogIC5mbG9hdC14eGwtbm9uZSB7IGZsb2F0OiBub25lICFpbXBvcnRhbnQ7IH0gfQoKLnVzZXItc2VsZWN0LWFsbCB7IHVzZXItc2VsZWN0OiBhbGwgIWltcG9ydGFudDsgfQoKLnVzZXItc2VsZWN0LWF1dG8geyB1c2VyLXNlbGVjdDogYXV0byAhaW1wb3J0YW50OyB9CgoudXNlci1zZWxlY3Qtbm9uZSB7IHVzZXItc2VsZWN0OiBub25lICFpbXBvcnRhbnQ7IH0KCi5vdmVyZmxvdy1hdXRvIHsgb3ZlcmZsb3c6IGF1dG8gIWltcG9ydGFudDsgfQoKLm92ZXJmbG93LWhpZGRlbiB7IG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDsgfQoKLnBvc2l0aW9uLXN0YXRpYyB7IHBvc2l0aW9uOiBzdGF0aWMgIWltcG9ydGFudDsgfQoKLnBvc2l0aW9uLXJlbGF0aXZlLCAucG9zLXJlbCB7IHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50OyB9CgoucG9zaXRpb24tYWJzb2x1dGUsIC5wb3MtYWJzIHsgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7IH0KCi5wb3NpdGlvbi1maXhlZCB7IHBvc2l0aW9uOiBmaXhlZCAhaW1wb3J0YW50OyB9CgoucG9zaXRpb24tc3RpY2t5IHsgcG9zaXRpb246IHN0aWNreSAhaW1wb3J0YW50OyB9CgouZml4ZWQtdG9wIHsgcG9zaXRpb246IGZpeGVkOyB0b3A6IDA7IHJpZ2h0OiAwOyBsZWZ0OiAwOyB6LWluZGV4OiAxMDMwOyB9CgouZml4ZWQtYm90dG9tIHsgcG9zaXRpb246IGZpeGVkOyByaWdodDogMDsgYm90dG9tOiAwOyBsZWZ0OiAwOyB6LWluZGV4OiAxMDMwOyB9CgpAc3VwcG9ydHMgKHBvc2l0aW9uOiBzdGlja3kpIHsgLnN0aWNreS10b3AgeyBwb3NpdGlvbjogc3RpY2t5OyB0b3A6IDA7IHotaW5kZXg6IDEwMjA7IH0gfQoKLnNyLW9ubHkgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHdpZHRoOiAxcHg7IGhlaWdodDogMXB4OyBwYWRkaW5nOiAwOyBtYXJnaW46IC0xcHg7IG92ZXJmbG93OiBoaWRkZW47IGNsaXA6IHJlY3QoMCwgMCwgMCwgMCk7IHdoaXRlLXNwYWNlOiBub3dyYXA7IGJvcmRlcjogMDsgfQoKLnNyLW9ubHktZm9jdXNhYmxlOmFjdGl2ZSwgLnNyLW9ubHktZm9jdXNhYmxlOmZvY3VzIHsgcG9zaXRpb246IHN0YXRpYzsgd2lkdGg6IGF1dG87IGhlaWdodDogYXV0bzsgb3ZlcmZsb3c6IHZpc2libGU7IGNsaXA6IGF1dG87IHdoaXRlLXNwYWNlOiBub3JtYWw7IH0KCi5zaGFkb3ctc20geyBib3gtc2hhZG93OiAwIDAuMTI1cmVtIDAuMjVyZW0gcmdiYSg0MywgNTUsIDcyLCAwLjE1KSAhaW1wb3J0YW50OyB9Cgouc2hhZG93IHsgYm94LXNoYWRvdzogMCAzcHggMTJweCAxcHggcmdiYSg0MywgNTUsIDcyLCAwLjE1KSAhaW1wb3J0YW50OyB9Cgouc2hhZG93LWxnIHsgYm94LXNoYWRvdzogMCAxcmVtIDNyZW0gcmdiYSg0MywgNTUsIDcyLCAwLjI1KSAhaW1wb3J0YW50OyB9Cgouc2hhZG93LW5vbmUgeyBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7IH0KCi53LTI1IHsgd2lkdGg6IDI1JSAhaW1wb3J0YW50OyB9Cgoudy01MCB7IHdpZHRoOiA1MCUgIWltcG9ydGFudDsgfQoKLnctNzUgeyB3aWR0aDogNzUlICFpbXBvcnRhbnQ7IH0KCi53LTEwMCB7IHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IH0KCi53LWF1dG8geyB3aWR0aDogYXV0byAhaW1wb3J0YW50OyB9CgouaC0yNSB7IGhlaWdodDogMjUlICFpbXBvcnRhbnQ7IH0KCi5oLTUwIHsgaGVpZ2h0OiA1MCUgIWltcG9ydGFudDsgfQoKLmgtNzUgeyBoZWlnaHQ6IDc1JSAhaW1wb3J0YW50OyB9CgouaC0xMDAgeyBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsgfQoKLmgtYXV0byB7IGhlaWdodDogYXV0byAhaW1wb3J0YW50OyB9CgoubXctMTAwIHsgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IH0KCi5taC0xMDAgeyBtYXgtaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7IH0KCi5taW4tdnctMTAwIHsgbWluLXdpZHRoOiAxMDB2dyAhaW1wb3J0YW50OyB9CgoubWluLXZoLTEwMCB7IG1pbi1oZWlnaHQ6IDEwMHZoICFpbXBvcnRhbnQ7IH0KCi52dy0xMDAgeyB3aWR0aDogMTAwdncgIWltcG9ydGFudDsgfQoKLnZoLTEwMCB7IGhlaWdodDogMTAwdmggIWltcG9ydGFudDsgfQoKLm0tMCB7IG1hcmdpbjogMCAhaW1wb3J0YW50OyB9CgoubXQtMCwgLm15LTAgeyBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7IH0KCi5tci0wLCAubXgtMCB7IG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50OyB9CgoubWItMCwgLm15LTAgeyBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7IH0KCi5tbC0wLCAubXgtMCB7IG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7IH0KCi5tLTEgeyBtYXJnaW46IDAuMzc1cmVtICFpbXBvcnRhbnQ7IH0KCi5tdC0xLCAubXktMSB7IG1hcmdpbi10b3A6IDAuMzc1cmVtICFpbXBvcnRhbnQ7IH0KCi5tci0xLCAubXgtMSB7IG1hcmdpbi1yaWdodDogMC4zNzVyZW0gIWltcG9ydGFudDsgfQoKLm1iLTEsIC5teS0xIHsgbWFyZ2luLWJvdHRvbTogMC4zNzVyZW0gIWltcG9ydGFudDsgfQoKLm1sLTEsIC5teC0xIHsgbWFyZ2luLWxlZnQ6IDAuMzc1cmVtICFpbXBvcnRhbnQ7IH0KCi5tLTIgeyBtYXJnaW46IDAuNzVyZW0gIWltcG9ydGFudDsgfQoKLm10LTIsIC5teS0yIHsgbWFyZ2luLXRvcDogMC43NXJlbSAhaW1wb3J0YW50OyB9CgoubXItMiwgLm14LTIgeyBtYXJnaW4tcmlnaHQ6IDAuNzVyZW0gIWltcG9ydGFudDsgfQoKLm1iLTIsIC5teS0yIHsgbWFyZ2luLWJvdHRvbTogMC43NXJlbSAhaW1wb3J0YW50OyB9CgoubWwtMiwgLm14LTIgeyBtYXJnaW4tbGVmdDogMC43NXJlbSAhaW1wb3J0YW50OyB9CgoubS0zIHsgbWFyZ2luOiAxcmVtICFpbXBvcnRhbnQ7IH0KCi5tdC0zLCAubXktMyB7IG1hcmdpbi10b3A6IDFyZW0gIWltcG9ydGFudDsgfQoKLm1yLTMsIC5teC0zIHsgbWFyZ2luLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7IH0KCi5tYi0zLCAubXktMyB7IG1hcmdpbi1ib3R0b206IDFyZW0gIWltcG9ydGFudDsgfQoKLm1sLTMsIC5teC0zIHsgbWFyZ2luLWxlZnQ6IDFyZW0gIWltcG9ydGFudDsgfQoKLm0tNCB7IG1hcmdpbjogMS41cmVtICFpbXBvcnRhbnQ7IH0KCi5tdC00LCAubXktNCB7IG1hcmdpbi10b3A6IDEuNXJlbSAhaW1wb3J0YW50OyB9CgoubXItNCwgLm14LTQgeyBtYXJnaW4tcmlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50OyB9CgoubWItNCwgLm15LTQgeyBtYXJnaW4tYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsgfQoKLm1sLTQsIC5teC00IHsgbWFyZ2luLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50OyB9CgoubS01IHsgbWFyZ2luOiAyLjc1cmVtICFpbXBvcnRhbnQ7IH0KCi5tdC01LCAubXktNSB7IG1hcmdpbi10b3A6IDIuNzVyZW0gIWltcG9ydGFudDsgfQoKLm1yLTUsIC5teC01IHsgbWFyZ2luLXJpZ2h0OiAyLjc1cmVtICFpbXBvcnRhbnQ7IH0KCi5tYi01LCAubXktNSB7IG1hcmdpbi1ib3R0b206IDIuNzVyZW0gIWltcG9ydGFudDsgfQoKLm1sLTUsIC5teC01IHsgbWFyZ2luLWxlZnQ6IDIuNzVyZW0gIWltcG9ydGFudDsgfQoKLm0tZ3MgeyBtYXJnaW46IDI4cHggIWltcG9ydGFudDsgfQoKLm10LWdzLCAubXktZ3MgeyBtYXJnaW4tdG9wOiAyOHB4ICFpbXBvcnRhbnQ7IH0KCi5tci1ncywgLm14LWdzIHsgbWFyZ2luLXJpZ2h0OiAyOHB4ICFpbXBvcnRhbnQ7IH0KCi5tYi1ncywgLm15LWdzIHsgbWFyZ2luLWJvdHRvbTogMjhweCAhaW1wb3J0YW50OyB9CgoubWwtZ3MsIC5teC1ncyB7IG1hcmdpbi1sZWZ0OiAyOHB4ICFpbXBvcnRhbnQ7IH0KCi5wLTAgeyBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7IH0KCi5wdC0wLCAucHktMCB7IHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7IH0KCi5wci0wLCAucHgtMCB7IHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDsgfQoKLnBiLTAsIC5weS0wIHsgcGFkZGluZy1ib3R0b206IDAgIWltcG9ydGFudDsgfQoKLnBsLTAsIC5weC0wIHsgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7IH0KCi5wLTEgeyBwYWRkaW5nOiAwLjM3NXJlbSAhaW1wb3J0YW50OyB9CgoucHQtMSwgLnB5LTEgeyBwYWRkaW5nLXRvcDogMC4zNzVyZW0gIWltcG9ydGFudDsgfQoKLnByLTEsIC5weC0xIHsgcGFkZGluZy1yaWdodDogMC4zNzVyZW0gIWltcG9ydGFudDsgfQoKLnBiLTEsIC5weS0xIHsgcGFkZGluZy1ib3R0b206IDAuMzc1cmVtICFpbXBvcnRhbnQ7IH0KCi5wbC0xLCAucHgtMSB7IHBhZGRpbmctbGVmdDogMC4zNzVyZW0gIWltcG9ydGFudDsgfQoKLnAtMiB7IHBhZGRpbmc6IDAuNzVyZW0gIWltcG9ydGFudDsgfQoKLnB0LTIsIC5weS0yIHsgcGFkZGluZy10b3A6IDAuNzVyZW0gIWltcG9ydGFudDsgfQoKLnByLTIsIC5weC0yIHsgcGFkZGluZy1yaWdodDogMC43NXJlbSAhaW1wb3J0YW50OyB9CgoucGItMiwgLnB5LTIgeyBwYWRkaW5nLWJvdHRvbTogMC43NXJlbSAhaW1wb3J0YW50OyB9CgoucGwtMiwgLnB4LTIgeyBwYWRkaW5nLWxlZnQ6IDAuNzVyZW0gIWltcG9ydGFudDsgfQoKLnAtMyB7IHBhZGRpbmc6IDFyZW0gIWltcG9ydGFudDsgfQoKLnB0LTMsIC5weS0zIHsgcGFkZGluZy10b3A6IDFyZW0gIWltcG9ydGFudDsgfQoKLnByLTMsIC5weC0zIHsgcGFkZGluZy1yaWdodDogMXJlbSAhaW1wb3J0YW50OyB9CgoucGItMywgLnB5LTMgeyBwYWRkaW5nLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50OyB9CgoucGwtMywgLnB4LTMgeyBwYWRkaW5nLWxlZnQ6IDFyZW0gIWltcG9ydGFudDsgfQoKLnAtNCB7IHBhZGRpbmc6IDEuNXJlbSAhaW1wb3J0YW50OyB9CgoucHQtNCwgLnB5LTQgeyBwYWRkaW5nLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7IH0KCi5wci00LCAucHgtNCB7IHBhZGRpbmctcmlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50OyB9CgoucGItNCwgLnB5LTQgeyBwYWRkaW5nLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7IH0KCi5wbC00LCAucHgtNCB7IHBhZGRpbmctbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7IH0KCi5wLTUgeyBwYWRkaW5nOiAyLjc1cmVtICFpbXBvcnRhbnQ7IH0KCi5wdC01LCAucHktNSB7IHBhZGRpbmctdG9wOiAyLjc1cmVtICFpbXBvcnRhbnQ7IH0KCi5wci01LCAucHgtNSB7IHBhZGRpbmctcmlnaHQ6IDIuNzVyZW0gIWltcG9ydGFudDsgfQoKLnBiLTUsIC5weS01IHsgcGFkZGluZy1ib3R0b206IDIuNzVyZW0gIWltcG9ydGFudDsgfQoKLnBsLTUsIC5weC01IHsgcGFkZGluZy1sZWZ0OiAyLjc1cmVtICFpbXBvcnRhbnQ7IH0KCi5wLWdzIHsgcGFkZGluZzogMjhweCAhaW1wb3J0YW50OyB9CgoucHQtZ3MsIC5weS1ncyB7IHBhZGRpbmctdG9wOiAyOHB4ICFpbXBvcnRhbnQ7IH0KCi5wci1ncywgLnB4LWdzIHsgcGFkZGluZy1yaWdodDogMjhweCAhaW1wb3J0YW50OyB9CgoucGItZ3MsIC5weS1ncyB7IHBhZGRpbmctYm90dG9tOiAyOHB4ICFpbXBvcnRhbnQ7IH0KCi5wbC1ncywgLnB4LWdzIHsgcGFkZGluZy1sZWZ0OiAyOHB4ICFpbXBvcnRhbnQ7IH0KCi5tLW4xIHsgbWFyZ2luOiAtMC4zNzVyZW0gIWltcG9ydGFudDsgfQoKLm10LW4xLCAubXktbjEgeyBtYXJnaW4tdG9wOiAtMC4zNzVyZW0gIWltcG9ydGFudDsgfQoKLm1yLW4xLCAubXgtbjEgeyBtYXJnaW4tcmlnaHQ6IC0wLjM3NXJlbSAhaW1wb3J0YW50OyB9CgoubWItbjEsIC5teS1uMSB7IG1hcmdpbi1ib3R0b206IC0wLjM3NXJlbSAhaW1wb3J0YW50OyB9CgoubWwtbjEsIC5teC1uMSB7IG1hcmdpbi1sZWZ0OiAtMC4zNzVyZW0gIWltcG9ydGFudDsgfQoKLm0tbjIgeyBtYXJnaW46IC0wLjc1cmVtICFpbXBvcnRhbnQ7IH0KCi5tdC1uMiwgLm15LW4yIHsgbWFyZ2luLXRvcDogLTAuNzVyZW0gIWltcG9ydGFudDsgfQoKLm1yLW4yLCAubXgtbjIgeyBtYXJnaW4tcmlnaHQ6IC0wLjc1cmVtICFpbXBvcnRhbnQ7IH0KCi5tYi1uMiwgLm15LW4yIHsgbWFyZ2luLWJvdHRvbTogLTAuNzVyZW0gIWltcG9ydGFudDsgfQoKLm1sLW4yLCAubXgtbjIgeyBtYXJnaW4tbGVmdDogLTAuNzVyZW0gIWltcG9ydGFudDsgfQoKLm0tbjMgeyBtYXJnaW46IC0xcmVtICFpbXBvcnRhbnQ7IH0KCi5tdC1uMywgLm15LW4zIHsgbWFyZ2luLXRvcDogLTFyZW0gIWltcG9ydGFudDsgfQoKLm1yLW4zLCAubXgtbjMgeyBtYXJnaW4tcmlnaHQ6IC0xcmVtICFpbXBvcnRhbnQ7IH0KCi5tYi1uMywgLm15LW4zIHsgbWFyZ2luLWJvdHRvbTogLTFyZW0gIWltcG9ydGFudDsgfQoKLm1sLW4zLCAubXgtbjMgeyBtYXJnaW4tbGVmdDogLTFyZW0gIWltcG9ydGFudDsgfQoKLm0tbjQgeyBtYXJnaW46IC0xLjVyZW0gIWltcG9ydGFudDsgfQoKLm10LW40LCAubXktbjQgeyBtYXJnaW4tdG9wOiAtMS41cmVtICFpbXBvcnRhbnQ7IH0KCi5tci1uNCwgLm14LW40IHsgbWFyZ2luLXJpZ2h0OiAtMS41cmVtICFpbXBvcnRhbnQ7IH0KCi5tYi1uNCwgLm15LW40IHsgbWFyZ2luLWJvdHRvbTogLTEuNXJlbSAhaW1wb3J0YW50OyB9CgoubWwtbjQsIC5teC1uNCB7IG1hcmdpbi1sZWZ0OiAtMS41cmVtICFpbXBvcnRhbnQ7IH0KCi5tLW41IHsgbWFyZ2luOiAtMi43NXJlbSAhaW1wb3J0YW50OyB9CgoubXQtbjUsIC5teS1uNSB7IG1hcmdpbi10b3A6IC0yLjc1cmVtICFpbXBvcnRhbnQ7IH0KCi5tci1uNSwgLm14LW41IHsgbWFyZ2luLXJpZ2h0OiAtMi43NXJlbSAhaW1wb3J0YW50OyB9CgoubWItbjUsIC5teS1uNSB7IG1hcmdpbi1ib3R0b206IC0yLjc1cmVtICFpbXBvcnRhbnQ7IH0KCi5tbC1uNSwgLm14LW41IHsgbWFyZ2luLWxlZnQ6IC0yLjc1cmVtICFpbXBvcnRhbnQ7IH0KCi5tLW5ncyB7IG1hcmdpbjogLTI4cHggIWltcG9ydGFudDsgfQoKLm10LW5ncywgLm15LW5ncyB7IG1hcmdpbi10b3A6IC0yOHB4ICFpbXBvcnRhbnQ7IH0KCi5tci1uZ3MsIC5teC1uZ3MgeyBtYXJnaW4tcmlnaHQ6IC0yOHB4ICFpbXBvcnRhbnQ7IH0KCi5tYi1uZ3MsIC5teS1uZ3MgeyBtYXJnaW4tYm90dG9tOiAtMjhweCAhaW1wb3J0YW50OyB9CgoubWwtbmdzLCAubXgtbmdzIHsgbWFyZ2luLWxlZnQ6IC0yOHB4ICFpbXBvcnRhbnQ7IH0KCi5tLWF1dG8geyBtYXJnaW46IGF1dG8gIWltcG9ydGFudDsgfQoKLm10LWF1dG8sIC5teS1hdXRvIHsgbWFyZ2luLXRvcDogYXV0byAhaW1wb3J0YW50OyB9CgoubXItYXV0bywgLm14LWF1dG8geyBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsgfQoKLm1iLWF1dG8sIC5teS1hdXRvIHsgbWFyZ2luLWJvdHRvbTogYXV0byAhaW1wb3J0YW50OyB9CgoubWwtYXV0bywgLm14LWF1dG8geyBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OyB9CgpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsgLm0tc20tMCB7IG1hcmdpbjogMCAhaW1wb3J0YW50OyB9CiAgLm10LXNtLTAsIC5teS1zbS0wIHsgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50OyB9CiAgLm1yLXNtLTAsIC5teC1zbS0wIHsgbWFyZ2luLXJpZ2h0OiAwICFpbXBvcnRhbnQ7IH0KICAubWItc20tMCwgLm15LXNtLTAgeyBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7IH0KICAubWwtc20tMCwgLm14LXNtLTAgeyBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50OyB9CiAgLm0tc20tMSB7IG1hcmdpbjogMC4zNzVyZW0gIWltcG9ydGFudDsgfQogIC5tdC1zbS0xLCAubXktc20tMSB7IG1hcmdpbi10b3A6IDAuMzc1cmVtICFpbXBvcnRhbnQ7IH0KICAubXItc20tMSwgLm14LXNtLTEgeyBtYXJnaW4tcmlnaHQ6IDAuMzc1cmVtICFpbXBvcnRhbnQ7IH0KICAubWItc20tMSwgLm15LXNtLTEgeyBtYXJnaW4tYm90dG9tOiAwLjM3NXJlbSAhaW1wb3J0YW50OyB9CiAgLm1sLXNtLTEsIC5teC1zbS0xIHsgbWFyZ2luLWxlZnQ6IDAuMzc1cmVtICFpbXBvcnRhbnQ7IH0KICAubS1zbS0yIHsgbWFyZ2luOiAwLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAubXQtc20tMiwgLm15LXNtLTIgeyBtYXJnaW4tdG9wOiAwLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAubXItc20tMiwgLm14LXNtLTIgeyBtYXJnaW4tcmlnaHQ6IDAuNzVyZW0gIWltcG9ydGFudDsgfQogIC5tYi1zbS0yLCAubXktc20tMiB7IG1hcmdpbi1ib3R0b206IDAuNzVyZW0gIWltcG9ydGFudDsgfQogIC5tbC1zbS0yLCAubXgtc20tMiB7IG1hcmdpbi1sZWZ0OiAwLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAubS1zbS0zIHsgbWFyZ2luOiAxcmVtICFpbXBvcnRhbnQ7IH0KICAubXQtc20tMywgLm15LXNtLTMgeyBtYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7IH0KICAubXItc20tMywgLm14LXNtLTMgeyBtYXJnaW4tcmlnaHQ6IDFyZW0gIWltcG9ydGFudDsgfQogIC5tYi1zbS0zLCAubXktc20tMyB7IG1hcmdpbi1ib3R0b206IDFyZW0gIWltcG9ydGFudDsgfQogIC5tbC1zbS0zLCAubXgtc20tMyB7IG1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IH0KICAubS1zbS00IHsgbWFyZ2luOiAxLjVyZW0gIWltcG9ydGFudDsgfQogIC5tdC1zbS00LCAubXktc20tNCB7IG1hcmdpbi10b3A6IDEuNXJlbSAhaW1wb3J0YW50OyB9CiAgLm1yLXNtLTQsIC5teC1zbS00IHsgbWFyZ2luLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsgfQogIC5tYi1zbS00LCAubXktc20tNCB7IG1hcmdpbi1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50OyB9CiAgLm1sLXNtLTQsIC5teC1zbS00IHsgbWFyZ2luLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50OyB9CiAgLm0tc20tNSB7IG1hcmdpbjogMi43NXJlbSAhaW1wb3J0YW50OyB9CiAgLm10LXNtLTUsIC5teS1zbS01IHsgbWFyZ2luLXRvcDogMi43NXJlbSAhaW1wb3J0YW50OyB9CiAgLm1yLXNtLTUsIC5teC1zbS01IHsgbWFyZ2luLXJpZ2h0OiAyLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAubWItc20tNSwgLm15LXNtLTUgeyBtYXJnaW4tYm90dG9tOiAyLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAubWwtc20tNSwgLm14LXNtLTUgeyBtYXJnaW4tbGVmdDogMi43NXJlbSAhaW1wb3J0YW50OyB9CiAgLm0tc20tZ3MgeyBtYXJnaW46IDI4cHggIWltcG9ydGFudDsgfQogIC5tdC1zbS1ncywgLm15LXNtLWdzIHsgbWFyZ2luLXRvcDogMjhweCAhaW1wb3J0YW50OyB9CiAgLm1yLXNtLWdzLCAubXgtc20tZ3MgeyBtYXJnaW4tcmlnaHQ6IDI4cHggIWltcG9ydGFudDsgfQogIC5tYi1zbS1ncywgLm15LXNtLWdzIHsgbWFyZ2luLWJvdHRvbTogMjhweCAhaW1wb3J0YW50OyB9CiAgLm1sLXNtLWdzLCAubXgtc20tZ3MgeyBtYXJnaW4tbGVmdDogMjhweCAhaW1wb3J0YW50OyB9CiAgLnAtc20tMCB7IHBhZGRpbmc6IDAgIWltcG9ydGFudDsgfQogIC5wdC1zbS0wLCAucHktc20tMCB7IHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7IH0KICAucHItc20tMCwgLnB4LXNtLTAgeyBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7IH0KICAucGItc20tMCwgLnB5LXNtLTAgeyBwYWRkaW5nLWJvdHRvbTogMCAhaW1wb3J0YW50OyB9CiAgLnBsLXNtLTAsIC5weC1zbS0wIHsgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7IH0KICAucC1zbS0xIHsgcGFkZGluZzogMC4zNzVyZW0gIWltcG9ydGFudDsgfQogIC5wdC1zbS0xLCAucHktc20tMSB7IHBhZGRpbmctdG9wOiAwLjM3NXJlbSAhaW1wb3J0YW50OyB9CiAgLnByLXNtLTEsIC5weC1zbS0xIHsgcGFkZGluZy1yaWdodDogMC4zNzVyZW0gIWltcG9ydGFudDsgfQogIC5wYi1zbS0xLCAucHktc20tMSB7IHBhZGRpbmctYm90dG9tOiAwLjM3NXJlbSAhaW1wb3J0YW50OyB9CiAgLnBsLXNtLTEsIC5weC1zbS0xIHsgcGFkZGluZy1sZWZ0OiAwLjM3NXJlbSAhaW1wb3J0YW50OyB9CiAgLnAtc20tMiB7IHBhZGRpbmc6IDAuNzVyZW0gIWltcG9ydGFudDsgfQogIC5wdC1zbS0yLCAucHktc20tMiB7IHBhZGRpbmctdG9wOiAwLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAucHItc20tMiwgLnB4LXNtLTIgeyBwYWRkaW5nLXJpZ2h0OiAwLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAucGItc20tMiwgLnB5LXNtLTIgeyBwYWRkaW5nLWJvdHRvbTogMC43NXJlbSAhaW1wb3J0YW50OyB9CiAgLnBsLXNtLTIsIC5weC1zbS0yIHsgcGFkZGluZy1sZWZ0OiAwLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAucC1zbS0zIHsgcGFkZGluZzogMXJlbSAhaW1wb3J0YW50OyB9CiAgLnB0LXNtLTMsIC5weS1zbS0zIHsgcGFkZGluZy10b3A6IDFyZW0gIWltcG9ydGFudDsgfQogIC5wci1zbS0zLCAucHgtc20tMyB7IHBhZGRpbmctcmlnaHQ6IDFyZW0gIWltcG9ydGFudDsgfQogIC5wYi1zbS0zLCAucHktc20tMyB7IHBhZGRpbmctYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7IH0KICAucGwtc20tMywgLnB4LXNtLTMgeyBwYWRkaW5nLWxlZnQ6IDFyZW0gIWltcG9ydGFudDsgfQogIC5wLXNtLTQgeyBwYWRkaW5nOiAxLjVyZW0gIWltcG9ydGFudDsgfQogIC5wdC1zbS00LCAucHktc20tNCB7IHBhZGRpbmctdG9wOiAxLjVyZW0gIWltcG9ydGFudDsgfQogIC5wci1zbS00LCAucHgtc20tNCB7IHBhZGRpbmctcmlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50OyB9CiAgLnBiLXNtLTQsIC5weS1zbS00IHsgcGFkZGluZy1ib3R0b206IDEuNXJlbSAhaW1wb3J0YW50OyB9CiAgLnBsLXNtLTQsIC5weC1zbS00IHsgcGFkZGluZy1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDsgfQogIC5wLXNtLTUgeyBwYWRkaW5nOiAyLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAucHQtc20tNSwgLnB5LXNtLTUgeyBwYWRkaW5nLXRvcDogMi43NXJlbSAhaW1wb3J0YW50OyB9CiAgLnByLXNtLTUsIC5weC1zbS01IHsgcGFkZGluZy1yaWdodDogMi43NXJlbSAhaW1wb3J0YW50OyB9CiAgLnBiLXNtLTUsIC5weS1zbS01IHsgcGFkZGluZy1ib3R0b206IDIuNzVyZW0gIWltcG9ydGFudDsgfQogIC5wbC1zbS01LCAucHgtc20tNSB7IHBhZGRpbmctbGVmdDogMi43NXJlbSAhaW1wb3J0YW50OyB9CiAgLnAtc20tZ3MgeyBwYWRkaW5nOiAyOHB4ICFpbXBvcnRhbnQ7IH0KICAucHQtc20tZ3MsIC5weS1zbS1ncyB7IHBhZGRpbmctdG9wOiAyOHB4ICFpbXBvcnRhbnQ7IH0KICAucHItc20tZ3MsIC5weC1zbS1ncyB7IHBhZGRpbmctcmlnaHQ6IDI4cHggIWltcG9ydGFudDsgfQogIC5wYi1zbS1ncywgLnB5LXNtLWdzIHsgcGFkZGluZy1ib3R0b206IDI4cHggIWltcG9ydGFudDsgfQogIC5wbC1zbS1ncywgLnB4LXNtLWdzIHsgcGFkZGluZy1sZWZ0OiAyOHB4ICFpbXBvcnRhbnQ7IH0KICAubS1zbS1uMSB7IG1hcmdpbjogLTAuMzc1cmVtICFpbXBvcnRhbnQ7IH0KICAubXQtc20tbjEsIC5teS1zbS1uMSB7IG1hcmdpbi10b3A6IC0wLjM3NXJlbSAhaW1wb3J0YW50OyB9CiAgLm1yLXNtLW4xLCAubXgtc20tbjEgeyBtYXJnaW4tcmlnaHQ6IC0wLjM3NXJlbSAhaW1wb3J0YW50OyB9CiAgLm1iLXNtLW4xLCAubXktc20tbjEgeyBtYXJnaW4tYm90dG9tOiAtMC4zNzVyZW0gIWltcG9ydGFudDsgfQogIC5tbC1zbS1uMSwgLm14LXNtLW4xIHsgbWFyZ2luLWxlZnQ6IC0wLjM3NXJlbSAhaW1wb3J0YW50OyB9CiAgLm0tc20tbjIgeyBtYXJnaW46IC0wLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAubXQtc20tbjIsIC5teS1zbS1uMiB7IG1hcmdpbi10b3A6IC0wLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAubXItc20tbjIsIC5teC1zbS1uMiB7IG1hcmdpbi1yaWdodDogLTAuNzVyZW0gIWltcG9ydGFudDsgfQogIC5tYi1zbS1uMiwgLm15LXNtLW4yIHsgbWFyZ2luLWJvdHRvbTogLTAuNzVyZW0gIWltcG9ydGFudDsgfQogIC5tbC1zbS1uMiwgLm14LXNtLW4yIHsgbWFyZ2luLWxlZnQ6IC0wLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAubS1zbS1uMyB7IG1hcmdpbjogLTFyZW0gIWltcG9ydGFudDsgfQogIC5tdC1zbS1uMywgLm15LXNtLW4zIHsgbWFyZ2luLXRvcDogLTFyZW0gIWltcG9ydGFudDsgfQogIC5tci1zbS1uMywgLm14LXNtLW4zIHsgbWFyZ2luLXJpZ2h0OiAtMXJlbSAhaW1wb3J0YW50OyB9CiAgLm1iLXNtLW4zLCAubXktc20tbjMgeyBtYXJnaW4tYm90dG9tOiAtMXJlbSAhaW1wb3J0YW50OyB9CiAgLm1sLXNtLW4zLCAubXgtc20tbjMgeyBtYXJnaW4tbGVmdDogLTFyZW0gIWltcG9ydGFudDsgfQogIC5tLXNtLW40IHsgbWFyZ2luOiAtMS41cmVtICFpbXBvcnRhbnQ7IH0KICAubXQtc20tbjQsIC5teS1zbS1uNCB7IG1hcmdpbi10b3A6IC0xLjVyZW0gIWltcG9ydGFudDsgfQogIC5tci1zbS1uNCwgLm14LXNtLW40IHsgbWFyZ2luLXJpZ2h0OiAtMS41cmVtICFpbXBvcnRhbnQ7IH0KICAubWItc20tbjQsIC5teS1zbS1uNCB7IG1hcmdpbi1ib3R0b206IC0xLjVyZW0gIWltcG9ydGFudDsgfQogIC5tbC1zbS1uNCwgLm14LXNtLW40IHsgbWFyZ2luLWxlZnQ6IC0xLjVyZW0gIWltcG9ydGFudDsgfQogIC5tLXNtLW41IHsgbWFyZ2luOiAtMi43NXJlbSAhaW1wb3J0YW50OyB9CiAgLm10LXNtLW41LCAubXktc20tbjUgeyBtYXJnaW4tdG9wOiAtMi43NXJlbSAhaW1wb3J0YW50OyB9CiAgLm1yLXNtLW41LCAubXgtc20tbjUgeyBtYXJnaW4tcmlnaHQ6IC0yLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAubWItc20tbjUsIC5teS1zbS1uNSB7IG1hcmdpbi1ib3R0b206IC0yLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAubWwtc20tbjUsIC5teC1zbS1uNSB7IG1hcmdpbi1sZWZ0OiAtMi43NXJlbSAhaW1wb3J0YW50OyB9CiAgLm0tc20tbmdzIHsgbWFyZ2luOiAtMjhweCAhaW1wb3J0YW50OyB9CiAgLm10LXNtLW5ncywgLm15LXNtLW5ncyB7IG1hcmdpbi10b3A6IC0yOHB4ICFpbXBvcnRhbnQ7IH0KICAubXItc20tbmdzLCAubXgtc20tbmdzIHsgbWFyZ2luLXJpZ2h0OiAtMjhweCAhaW1wb3J0YW50OyB9CiAgLm1iLXNtLW5ncywgLm15LXNtLW5ncyB7IG1hcmdpbi1ib3R0b206IC0yOHB4ICFpbXBvcnRhbnQ7IH0KICAubWwtc20tbmdzLCAubXgtc20tbmdzIHsgbWFyZ2luLWxlZnQ6IC0yOHB4ICFpbXBvcnRhbnQ7IH0KICAubS1zbS1hdXRvIHsgbWFyZ2luOiBhdXRvICFpbXBvcnRhbnQ7IH0KICAubXQtc20tYXV0bywgLm15LXNtLWF1dG8geyBtYXJnaW4tdG9wOiBhdXRvICFpbXBvcnRhbnQ7IH0KICAubXItc20tYXV0bywgLm14LXNtLWF1dG8geyBtYXJnaW4tcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsgfQogIC5tYi1zbS1hdXRvLCAubXktc20tYXV0byB7IG1hcmdpbi1ib3R0b206IGF1dG8gIWltcG9ydGFudDsgfQogIC5tbC1zbS1hdXRvLCAubXgtc20tYXV0byB7IG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7IH0gfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7IC5tLW1kLTAgeyBtYXJnaW46IDAgIWltcG9ydGFudDsgfQogIC5tdC1tZC0wLCAubXktbWQtMCB7IG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsgfQogIC5tci1tZC0wLCAubXgtbWQtMCB7IG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50OyB9CiAgLm1iLW1kLTAsIC5teS1tZC0wIHsgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50OyB9CiAgLm1sLW1kLTAsIC5teC1tZC0wIHsgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDsgfQogIC5tLW1kLTEgeyBtYXJnaW46IDAuMzc1cmVtICFpbXBvcnRhbnQ7IH0KICAubXQtbWQtMSwgLm15LW1kLTEgeyBtYXJnaW4tdG9wOiAwLjM3NXJlbSAhaW1wb3J0YW50OyB9CiAgLm1yLW1kLTEsIC5teC1tZC0xIHsgbWFyZ2luLXJpZ2h0OiAwLjM3NXJlbSAhaW1wb3J0YW50OyB9CiAgLm1iLW1kLTEsIC5teS1tZC0xIHsgbWFyZ2luLWJvdHRvbTogMC4zNzVyZW0gIWltcG9ydGFudDsgfQogIC5tbC1tZC0xLCAubXgtbWQtMSB7IG1hcmdpbi1sZWZ0OiAwLjM3NXJlbSAhaW1wb3J0YW50OyB9CiAgLm0tbWQtMiB7IG1hcmdpbjogMC43NXJlbSAhaW1wb3J0YW50OyB9CiAgLm10LW1kLTIsIC5teS1tZC0yIHsgbWFyZ2luLXRvcDogMC43NXJlbSAhaW1wb3J0YW50OyB9CiAgLm1yLW1kLTIsIC5teC1tZC0yIHsgbWFyZ2luLXJpZ2h0OiAwLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAubWItbWQtMiwgLm15LW1kLTIgeyBtYXJnaW4tYm90dG9tOiAwLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAubWwtbWQtMiwgLm14LW1kLTIgeyBtYXJnaW4tbGVmdDogMC43NXJlbSAhaW1wb3J0YW50OyB9CiAgLm0tbWQtMyB7IG1hcmdpbjogMXJlbSAhaW1wb3J0YW50OyB9CiAgLm10LW1kLTMsIC5teS1tZC0zIHsgbWFyZ2luLXRvcDogMXJlbSAhaW1wb3J0YW50OyB9CiAgLm1yLW1kLTMsIC5teC1tZC0zIHsgbWFyZ2luLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7IH0KICAubWItbWQtMywgLm15LW1kLTMgeyBtYXJnaW4tYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7IH0KICAubWwtbWQtMywgLm14LW1kLTMgeyBtYXJnaW4tbGVmdDogMXJlbSAhaW1wb3J0YW50OyB9CiAgLm0tbWQtNCB7IG1hcmdpbjogMS41cmVtICFpbXBvcnRhbnQ7IH0KICAubXQtbWQtNCwgLm15LW1kLTQgeyBtYXJnaW4tdG9wOiAxLjVyZW0gIWltcG9ydGFudDsgfQogIC5tci1tZC00LCAubXgtbWQtNCB7IG1hcmdpbi1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7IH0KICAubWItbWQtNCwgLm15LW1kLTQgeyBtYXJnaW4tYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsgfQogIC5tbC1tZC00LCAubXgtbWQtNCB7IG1hcmdpbi1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDsgfQogIC5tLW1kLTUgeyBtYXJnaW46IDIuNzVyZW0gIWltcG9ydGFudDsgfQogIC5tdC1tZC01LCAubXktbWQtNSB7IG1hcmdpbi10b3A6IDIuNzVyZW0gIWltcG9ydGFudDsgfQogIC5tci1tZC01LCAubXgtbWQtNSB7IG1hcmdpbi1yaWdodDogMi43NXJlbSAhaW1wb3J0YW50OyB9CiAgLm1iLW1kLTUsIC5teS1tZC01IHsgbWFyZ2luLWJvdHRvbTogMi43NXJlbSAhaW1wb3J0YW50OyB9CiAgLm1sLW1kLTUsIC5teC1tZC01IHsgbWFyZ2luLWxlZnQ6IDIuNzVyZW0gIWltcG9ydGFudDsgfQogIC5tLW1kLWdzIHsgbWFyZ2luOiAyOHB4ICFpbXBvcnRhbnQ7IH0KICAubXQtbWQtZ3MsIC5teS1tZC1ncyB7IG1hcmdpbi10b3A6IDI4cHggIWltcG9ydGFudDsgfQogIC5tci1tZC1ncywgLm14LW1kLWdzIHsgbWFyZ2luLXJpZ2h0OiAyOHB4ICFpbXBvcnRhbnQ7IH0KICAubWItbWQtZ3MsIC5teS1tZC1ncyB7IG1hcmdpbi1ib3R0b206IDI4cHggIWltcG9ydGFudDsgfQogIC5tbC1tZC1ncywgLm14LW1kLWdzIHsgbWFyZ2luLWxlZnQ6IDI4cHggIWltcG9ydGFudDsgfQogIC5wLW1kLTAgeyBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7IH0KICAucHQtbWQtMCwgLnB5LW1kLTAgeyBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OyB9CiAgLnByLW1kLTAsIC5weC1tZC0wIHsgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50OyB9CiAgLnBiLW1kLTAsIC5weS1tZC0wIHsgcGFkZGluZy1ib3R0b206IDAgIWltcG9ydGFudDsgfQogIC5wbC1tZC0wLCAucHgtbWQtMCB7IHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OyB9CiAgLnAtbWQtMSB7IHBhZGRpbmc6IDAuMzc1cmVtICFpbXBvcnRhbnQ7IH0KICAucHQtbWQtMSwgLnB5LW1kLTEgeyBwYWRkaW5nLXRvcDogMC4zNzVyZW0gIWltcG9ydGFudDsgfQogIC5wci1tZC0xLCAucHgtbWQtMSB7IHBhZGRpbmctcmlnaHQ6IDAuMzc1cmVtICFpbXBvcnRhbnQ7IH0KICAucGItbWQtMSwgLnB5LW1kLTEgeyBwYWRkaW5nLWJvdHRvbTogMC4zNzVyZW0gIWltcG9ydGFudDsgfQogIC5wbC1tZC0xLCAucHgtbWQtMSB7IHBhZGRpbmctbGVmdDogMC4zNzVyZW0gIWltcG9ydGFudDsgfQogIC5wLW1kLTIgeyBwYWRkaW5nOiAwLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAucHQtbWQtMiwgLnB5LW1kLTIgeyBwYWRkaW5nLXRvcDogMC43NXJlbSAhaW1wb3J0YW50OyB9CiAgLnByLW1kLTIsIC5weC1tZC0yIHsgcGFkZGluZy1yaWdodDogMC43NXJlbSAhaW1wb3J0YW50OyB9CiAgLnBiLW1kLTIsIC5weS1tZC0yIHsgcGFkZGluZy1ib3R0b206IDAuNzVyZW0gIWltcG9ydGFudDsgfQogIC5wbC1tZC0yLCAucHgtbWQtMiB7IHBhZGRpbmctbGVmdDogMC43NXJlbSAhaW1wb3J0YW50OyB9CiAgLnAtbWQtMyB7IHBhZGRpbmc6IDFyZW0gIWltcG9ydGFudDsgfQogIC5wdC1tZC0zLCAucHktbWQtMyB7IHBhZGRpbmctdG9wOiAxcmVtICFpbXBvcnRhbnQ7IH0KICAucHItbWQtMywgLnB4LW1kLTMgeyBwYWRkaW5nLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7IH0KICAucGItbWQtMywgLnB5LW1kLTMgeyBwYWRkaW5nLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50OyB9CiAgLnBsLW1kLTMsIC5weC1tZC0zIHsgcGFkZGluZy1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IH0KICAucC1tZC00IHsgcGFkZGluZzogMS41cmVtICFpbXBvcnRhbnQ7IH0KICAucHQtbWQtNCwgLnB5LW1kLTQgeyBwYWRkaW5nLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7IH0KICAucHItbWQtNCwgLnB4LW1kLTQgeyBwYWRkaW5nLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsgfQogIC5wYi1tZC00LCAucHktbWQtNCB7IHBhZGRpbmctYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsgfQogIC5wbC1tZC00LCAucHgtbWQtNCB7IHBhZGRpbmctbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7IH0KICAucC1tZC01IHsgcGFkZGluZzogMi43NXJlbSAhaW1wb3J0YW50OyB9CiAgLnB0LW1kLTUsIC5weS1tZC01IHsgcGFkZGluZy10b3A6IDIuNzVyZW0gIWltcG9ydGFudDsgfQogIC5wci1tZC01LCAucHgtbWQtNSB7IHBhZGRpbmctcmlnaHQ6IDIuNzVyZW0gIWltcG9ydGFudDsgfQogIC5wYi1tZC01LCAucHktbWQtNSB7IHBhZGRpbmctYm90dG9tOiAyLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAucGwtbWQtNSwgLnB4LW1kLTUgeyBwYWRkaW5nLWxlZnQ6IDIuNzVyZW0gIWltcG9ydGFudDsgfQogIC5wLW1kLWdzIHsgcGFkZGluZzogMjhweCAhaW1wb3J0YW50OyB9CiAgLnB0LW1kLWdzLCAucHktbWQtZ3MgeyBwYWRkaW5nLXRvcDogMjhweCAhaW1wb3J0YW50OyB9CiAgLnByLW1kLWdzLCAucHgtbWQtZ3MgeyBwYWRkaW5nLXJpZ2h0OiAyOHB4ICFpbXBvcnRhbnQ7IH0KICAucGItbWQtZ3MsIC5weS1tZC1ncyB7IHBhZGRpbmctYm90dG9tOiAyOHB4ICFpbXBvcnRhbnQ7IH0KICAucGwtbWQtZ3MsIC5weC1tZC1ncyB7IHBhZGRpbmctbGVmdDogMjhweCAhaW1wb3J0YW50OyB9CiAgLm0tbWQtbjEgeyBtYXJnaW46IC0wLjM3NXJlbSAhaW1wb3J0YW50OyB9CiAgLm10LW1kLW4xLCAubXktbWQtbjEgeyBtYXJnaW4tdG9wOiAtMC4zNzVyZW0gIWltcG9ydGFudDsgfQogIC5tci1tZC1uMSwgLm14LW1kLW4xIHsgbWFyZ2luLXJpZ2h0OiAtMC4zNzVyZW0gIWltcG9ydGFudDsgfQogIC5tYi1tZC1uMSwgLm15LW1kLW4xIHsgbWFyZ2luLWJvdHRvbTogLTAuMzc1cmVtICFpbXBvcnRhbnQ7IH0KICAubWwtbWQtbjEsIC5teC1tZC1uMSB7IG1hcmdpbi1sZWZ0OiAtMC4zNzVyZW0gIWltcG9ydGFudDsgfQogIC5tLW1kLW4yIHsgbWFyZ2luOiAtMC43NXJlbSAhaW1wb3J0YW50OyB9CiAgLm10LW1kLW4yLCAubXktbWQtbjIgeyBtYXJnaW4tdG9wOiAtMC43NXJlbSAhaW1wb3J0YW50OyB9CiAgLm1yLW1kLW4yLCAubXgtbWQtbjIgeyBtYXJnaW4tcmlnaHQ6IC0wLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAubWItbWQtbjIsIC5teS1tZC1uMiB7IG1hcmdpbi1ib3R0b206IC0wLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAubWwtbWQtbjIsIC5teC1tZC1uMiB7IG1hcmdpbi1sZWZ0OiAtMC43NXJlbSAhaW1wb3J0YW50OyB9CiAgLm0tbWQtbjMgeyBtYXJnaW46IC0xcmVtICFpbXBvcnRhbnQ7IH0KICAubXQtbWQtbjMsIC5teS1tZC1uMyB7IG1hcmdpbi10b3A6IC0xcmVtICFpbXBvcnRhbnQ7IH0KICAubXItbWQtbjMsIC5teC1tZC1uMyB7IG1hcmdpbi1yaWdodDogLTFyZW0gIWltcG9ydGFudDsgfQogIC5tYi1tZC1uMywgLm15LW1kLW4zIHsgbWFyZ2luLWJvdHRvbTogLTFyZW0gIWltcG9ydGFudDsgfQogIC5tbC1tZC1uMywgLm14LW1kLW4zIHsgbWFyZ2luLWxlZnQ6IC0xcmVtICFpbXBvcnRhbnQ7IH0KICAubS1tZC1uNCB7IG1hcmdpbjogLTEuNXJlbSAhaW1wb3J0YW50OyB9CiAgLm10LW1kLW40LCAubXktbWQtbjQgeyBtYXJnaW4tdG9wOiAtMS41cmVtICFpbXBvcnRhbnQ7IH0KICAubXItbWQtbjQsIC5teC1tZC1uNCB7IG1hcmdpbi1yaWdodDogLTEuNXJlbSAhaW1wb3J0YW50OyB9CiAgLm1iLW1kLW40LCAubXktbWQtbjQgeyBtYXJnaW4tYm90dG9tOiAtMS41cmVtICFpbXBvcnRhbnQ7IH0KICAubWwtbWQtbjQsIC5teC1tZC1uNCB7IG1hcmdpbi1sZWZ0OiAtMS41cmVtICFpbXBvcnRhbnQ7IH0KICAubS1tZC1uNSB7IG1hcmdpbjogLTIuNzVyZW0gIWltcG9ydGFudDsgfQogIC5tdC1tZC1uNSwgLm15LW1kLW41IHsgbWFyZ2luLXRvcDogLTIuNzVyZW0gIWltcG9ydGFudDsgfQogIC5tci1tZC1uNSwgLm14LW1kLW41IHsgbWFyZ2luLXJpZ2h0OiAtMi43NXJlbSAhaW1wb3J0YW50OyB9CiAgLm1iLW1kLW41LCAubXktbWQtbjUgeyBtYXJnaW4tYm90dG9tOiAtMi43NXJlbSAhaW1wb3J0YW50OyB9CiAgLm1sLW1kLW41LCAubXgtbWQtbjUgeyBtYXJnaW4tbGVmdDogLTIuNzVyZW0gIWltcG9ydGFudDsgfQogIC5tLW1kLW5ncyB7IG1hcmdpbjogLTI4cHggIWltcG9ydGFudDsgfQogIC5tdC1tZC1uZ3MsIC5teS1tZC1uZ3MgeyBtYXJnaW4tdG9wOiAtMjhweCAhaW1wb3J0YW50OyB9CiAgLm1yLW1kLW5ncywgLm14LW1kLW5ncyB7IG1hcmdpbi1yaWdodDogLTI4cHggIWltcG9ydGFudDsgfQogIC5tYi1tZC1uZ3MsIC5teS1tZC1uZ3MgeyBtYXJnaW4tYm90dG9tOiAtMjhweCAhaW1wb3J0YW50OyB9CiAgLm1sLW1kLW5ncywgLm14LW1kLW5ncyB7IG1hcmdpbi1sZWZ0OiAtMjhweCAhaW1wb3J0YW50OyB9CiAgLm0tbWQtYXV0byB7IG1hcmdpbjogYXV0byAhaW1wb3J0YW50OyB9CiAgLm10LW1kLWF1dG8sIC5teS1tZC1hdXRvIHsgbWFyZ2luLXRvcDogYXV0byAhaW1wb3J0YW50OyB9CiAgLm1yLW1kLWF1dG8sIC5teC1tZC1hdXRvIHsgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7IH0KICAubWItbWQtYXV0bywgLm15LW1kLWF1dG8geyBtYXJnaW4tYm90dG9tOiBhdXRvICFpbXBvcnRhbnQ7IH0KICAubWwtbWQtYXV0bywgLm14LW1kLWF1dG8geyBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgeyAubS1sZy0wIHsgbWFyZ2luOiAwICFpbXBvcnRhbnQ7IH0KICAubXQtbGctMCwgLm15LWxnLTAgeyBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7IH0KICAubXItbGctMCwgLm14LWxnLTAgeyBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDsgfQogIC5tYi1sZy0wLCAubXktbGctMCB7IG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDsgfQogIC5tbC1sZy0wLCAubXgtbGctMCB7IG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7IH0KICAubS1sZy0xIHsgbWFyZ2luOiAwLjM3NXJlbSAhaW1wb3J0YW50OyB9CiAgLm10LWxnLTEsIC5teS1sZy0xIHsgbWFyZ2luLXRvcDogMC4zNzVyZW0gIWltcG9ydGFudDsgfQogIC5tci1sZy0xLCAubXgtbGctMSB7IG1hcmdpbi1yaWdodDogMC4zNzVyZW0gIWltcG9ydGFudDsgfQogIC5tYi1sZy0xLCAubXktbGctMSB7IG1hcmdpbi1ib3R0b206IDAuMzc1cmVtICFpbXBvcnRhbnQ7IH0KICAubWwtbGctMSwgLm14LWxnLTEgeyBtYXJnaW4tbGVmdDogMC4zNzVyZW0gIWltcG9ydGFudDsgfQogIC5tLWxnLTIgeyBtYXJnaW46IDAuNzVyZW0gIWltcG9ydGFudDsgfQogIC5tdC1sZy0yLCAubXktbGctMiB7IG1hcmdpbi10b3A6IDAuNzVyZW0gIWltcG9ydGFudDsgfQogIC5tci1sZy0yLCAubXgtbGctMiB7IG1hcmdpbi1yaWdodDogMC43NXJlbSAhaW1wb3J0YW50OyB9CiAgLm1iLWxnLTIsIC5teS1sZy0yIHsgbWFyZ2luLWJvdHRvbTogMC43NXJlbSAhaW1wb3J0YW50OyB9CiAgLm1sLWxnLTIsIC5teC1sZy0yIHsgbWFyZ2luLWxlZnQ6IDAuNzVyZW0gIWltcG9ydGFudDsgfQogIC5tLWxnLTMgeyBtYXJnaW46IDFyZW0gIWltcG9ydGFudDsgfQogIC5tdC1sZy0zLCAubXktbGctMyB7IG1hcmdpbi10b3A6IDFyZW0gIWltcG9ydGFudDsgfQogIC5tci1sZy0zLCAubXgtbGctMyB7IG1hcmdpbi1yaWdodDogMXJlbSAhaW1wb3J0YW50OyB9CiAgLm1iLWxnLTMsIC5teS1sZy0zIHsgbWFyZ2luLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50OyB9CiAgLm1sLWxnLTMsIC5teC1sZy0zIHsgbWFyZ2luLWxlZnQ6IDFyZW0gIWltcG9ydGFudDsgfQogIC5tLWxnLTQgeyBtYXJnaW46IDEuNXJlbSAhaW1wb3J0YW50OyB9CiAgLm10LWxnLTQsIC5teS1sZy00IHsgbWFyZ2luLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7IH0KICAubXItbGctNCwgLm14LWxnLTQgeyBtYXJnaW4tcmlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50OyB9CiAgLm1iLWxnLTQsIC5teS1sZy00IHsgbWFyZ2luLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7IH0KICAubWwtbGctNCwgLm14LWxnLTQgeyBtYXJnaW4tbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7IH0KICAubS1sZy01IHsgbWFyZ2luOiAyLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAubXQtbGctNSwgLm15LWxnLTUgeyBtYXJnaW4tdG9wOiAyLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAubXItbGctNSwgLm14LWxnLTUgeyBtYXJnaW4tcmlnaHQ6IDIuNzVyZW0gIWltcG9ydGFudDsgfQogIC5tYi1sZy01LCAubXktbGctNSB7IG1hcmdpbi1ib3R0b206IDIuNzVyZW0gIWltcG9ydGFudDsgfQogIC5tbC1sZy01LCAubXgtbGctNSB7IG1hcmdpbi1sZWZ0OiAyLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAubS1sZy1ncyB7IG1hcmdpbjogMjhweCAhaW1wb3J0YW50OyB9CiAgLm10LWxnLWdzLCAubXktbGctZ3MgeyBtYXJnaW4tdG9wOiAyOHB4ICFpbXBvcnRhbnQ7IH0KICAubXItbGctZ3MsIC5teC1sZy1ncyB7IG1hcmdpbi1yaWdodDogMjhweCAhaW1wb3J0YW50OyB9CiAgLm1iLWxnLWdzLCAubXktbGctZ3MgeyBtYXJnaW4tYm90dG9tOiAyOHB4ICFpbXBvcnRhbnQ7IH0KICAubWwtbGctZ3MsIC5teC1sZy1ncyB7IG1hcmdpbi1sZWZ0OiAyOHB4ICFpbXBvcnRhbnQ7IH0KICAucC1sZy0wIHsgcGFkZGluZzogMCAhaW1wb3J0YW50OyB9CiAgLnB0LWxnLTAsIC5weS1sZy0wIHsgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDsgfQogIC5wci1sZy0wLCAucHgtbGctMCB7IHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDsgfQogIC5wYi1sZy0wLCAucHktbGctMCB7IHBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnQ7IH0KICAucGwtbGctMCwgLnB4LWxnLTAgeyBwYWRkaW5nLWxlZnQ6IDAgIWltcG9ydGFudDsgfQogIC5wLWxnLTEgeyBwYWRkaW5nOiAwLjM3NXJlbSAhaW1wb3J0YW50OyB9CiAgLnB0LWxnLTEsIC5weS1sZy0xIHsgcGFkZGluZy10b3A6IDAuMzc1cmVtICFpbXBvcnRhbnQ7IH0KICAucHItbGctMSwgLnB4LWxnLTEgeyBwYWRkaW5nLXJpZ2h0OiAwLjM3NXJlbSAhaW1wb3J0YW50OyB9CiAgLnBiLWxnLTEsIC5weS1sZy0xIHsgcGFkZGluZy1ib3R0b206IDAuMzc1cmVtICFpbXBvcnRhbnQ7IH0KICAucGwtbGctMSwgLnB4LWxnLTEgeyBwYWRkaW5nLWxlZnQ6IDAuMzc1cmVtICFpbXBvcnRhbnQ7IH0KICAucC1sZy0yIHsgcGFkZGluZzogMC43NXJlbSAhaW1wb3J0YW50OyB9CiAgLnB0LWxnLTIsIC5weS1sZy0yIHsgcGFkZGluZy10b3A6IDAuNzVyZW0gIWltcG9ydGFudDsgfQogIC5wci1sZy0yLCAucHgtbGctMiB7IHBhZGRpbmctcmlnaHQ6IDAuNzVyZW0gIWltcG9ydGFudDsgfQogIC5wYi1sZy0yLCAucHktbGctMiB7IHBhZGRpbmctYm90dG9tOiAwLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAucGwtbGctMiwgLnB4LWxnLTIgeyBwYWRkaW5nLWxlZnQ6IDAuNzVyZW0gIWltcG9ydGFudDsgfQogIC5wLWxnLTMgeyBwYWRkaW5nOiAxcmVtICFpbXBvcnRhbnQ7IH0KICAucHQtbGctMywgLnB5LWxnLTMgeyBwYWRkaW5nLXRvcDogMXJlbSAhaW1wb3J0YW50OyB9CiAgLnByLWxnLTMsIC5weC1sZy0zIHsgcGFkZGluZy1yaWdodDogMXJlbSAhaW1wb3J0YW50OyB9CiAgLnBiLWxnLTMsIC5weS1sZy0zIHsgcGFkZGluZy1ib3R0b206IDFyZW0gIWltcG9ydGFudDsgfQogIC5wbC1sZy0zLCAucHgtbGctMyB7IHBhZGRpbmctbGVmdDogMXJlbSAhaW1wb3J0YW50OyB9CiAgLnAtbGctNCB7IHBhZGRpbmc6IDEuNXJlbSAhaW1wb3J0YW50OyB9CiAgLnB0LWxnLTQsIC5weS1sZy00IHsgcGFkZGluZy10b3A6IDEuNXJlbSAhaW1wb3J0YW50OyB9CiAgLnByLWxnLTQsIC5weC1sZy00IHsgcGFkZGluZy1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7IH0KICAucGItbGctNCwgLnB5LWxnLTQgeyBwYWRkaW5nLWJvdHRvbTogMS41cmVtICFpbXBvcnRhbnQ7IH0KICAucGwtbGctNCwgLnB4LWxnLTQgeyBwYWRkaW5nLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50OyB9CiAgLnAtbGctNSB7IHBhZGRpbmc6IDIuNzVyZW0gIWltcG9ydGFudDsgfQogIC5wdC1sZy01LCAucHktbGctNSB7IHBhZGRpbmctdG9wOiAyLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAucHItbGctNSwgLnB4LWxnLTUgeyBwYWRkaW5nLXJpZ2h0OiAyLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAucGItbGctNSwgLnB5LWxnLTUgeyBwYWRkaW5nLWJvdHRvbTogMi43NXJlbSAhaW1wb3J0YW50OyB9CiAgLnBsLWxnLTUsIC5weC1sZy01IHsgcGFkZGluZy1sZWZ0OiAyLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAucC1sZy1ncyB7IHBhZGRpbmc6IDI4cHggIWltcG9ydGFudDsgfQogIC5wdC1sZy1ncywgLnB5LWxnLWdzIHsgcGFkZGluZy10b3A6IDI4cHggIWltcG9ydGFudDsgfQogIC5wci1sZy1ncywgLnB4LWxnLWdzIHsgcGFkZGluZy1yaWdodDogMjhweCAhaW1wb3J0YW50OyB9CiAgLnBiLWxnLWdzLCAucHktbGctZ3MgeyBwYWRkaW5nLWJvdHRvbTogMjhweCAhaW1wb3J0YW50OyB9CiAgLnBsLWxnLWdzLCAucHgtbGctZ3MgeyBwYWRkaW5nLWxlZnQ6IDI4cHggIWltcG9ydGFudDsgfQogIC5tLWxnLW4xIHsgbWFyZ2luOiAtMC4zNzVyZW0gIWltcG9ydGFudDsgfQogIC5tdC1sZy1uMSwgLm15LWxnLW4xIHsgbWFyZ2luLXRvcDogLTAuMzc1cmVtICFpbXBvcnRhbnQ7IH0KICAubXItbGctbjEsIC5teC1sZy1uMSB7IG1hcmdpbi1yaWdodDogLTAuMzc1cmVtICFpbXBvcnRhbnQ7IH0KICAubWItbGctbjEsIC5teS1sZy1uMSB7IG1hcmdpbi1ib3R0b206IC0wLjM3NXJlbSAhaW1wb3J0YW50OyB9CiAgLm1sLWxnLW4xLCAubXgtbGctbjEgeyBtYXJnaW4tbGVmdDogLTAuMzc1cmVtICFpbXBvcnRhbnQ7IH0KICAubS1sZy1uMiB7IG1hcmdpbjogLTAuNzVyZW0gIWltcG9ydGFudDsgfQogIC5tdC1sZy1uMiwgLm15LWxnLW4yIHsgbWFyZ2luLXRvcDogLTAuNzVyZW0gIWltcG9ydGFudDsgfQogIC5tci1sZy1uMiwgLm14LWxnLW4yIHsgbWFyZ2luLXJpZ2h0OiAtMC43NXJlbSAhaW1wb3J0YW50OyB9CiAgLm1iLWxnLW4yLCAubXktbGctbjIgeyBtYXJnaW4tYm90dG9tOiAtMC43NXJlbSAhaW1wb3J0YW50OyB9CiAgLm1sLWxnLW4yLCAubXgtbGctbjIgeyBtYXJnaW4tbGVmdDogLTAuNzVyZW0gIWltcG9ydGFudDsgfQogIC5tLWxnLW4zIHsgbWFyZ2luOiAtMXJlbSAhaW1wb3J0YW50OyB9CiAgLm10LWxnLW4zLCAubXktbGctbjMgeyBtYXJnaW4tdG9wOiAtMXJlbSAhaW1wb3J0YW50OyB9CiAgLm1yLWxnLW4zLCAubXgtbGctbjMgeyBtYXJnaW4tcmlnaHQ6IC0xcmVtICFpbXBvcnRhbnQ7IH0KICAubWItbGctbjMsIC5teS1sZy1uMyB7IG1hcmdpbi1ib3R0b206IC0xcmVtICFpbXBvcnRhbnQ7IH0KICAubWwtbGctbjMsIC5teC1sZy1uMyB7IG1hcmdpbi1sZWZ0OiAtMXJlbSAhaW1wb3J0YW50OyB9CiAgLm0tbGctbjQgeyBtYXJnaW46IC0xLjVyZW0gIWltcG9ydGFudDsgfQogIC5tdC1sZy1uNCwgLm15LWxnLW40IHsgbWFyZ2luLXRvcDogLTEuNXJlbSAhaW1wb3J0YW50OyB9CiAgLm1yLWxnLW40LCAubXgtbGctbjQgeyBtYXJnaW4tcmlnaHQ6IC0xLjVyZW0gIWltcG9ydGFudDsgfQogIC5tYi1sZy1uNCwgLm15LWxnLW40IHsgbWFyZ2luLWJvdHRvbTogLTEuNXJlbSAhaW1wb3J0YW50OyB9CiAgLm1sLWxnLW40LCAubXgtbGctbjQgeyBtYXJnaW4tbGVmdDogLTEuNXJlbSAhaW1wb3J0YW50OyB9CiAgLm0tbGctbjUgeyBtYXJnaW46IC0yLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAubXQtbGctbjUsIC5teS1sZy1uNSB7IG1hcmdpbi10b3A6IC0yLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAubXItbGctbjUsIC5teC1sZy1uNSB7IG1hcmdpbi1yaWdodDogLTIuNzVyZW0gIWltcG9ydGFudDsgfQogIC5tYi1sZy1uNSwgLm15LWxnLW41IHsgbWFyZ2luLWJvdHRvbTogLTIuNzVyZW0gIWltcG9ydGFudDsgfQogIC5tbC1sZy1uNSwgLm14LWxnLW41IHsgbWFyZ2luLWxlZnQ6IC0yLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAubS1sZy1uZ3MgeyBtYXJnaW46IC0yOHB4ICFpbXBvcnRhbnQ7IH0KICAubXQtbGctbmdzLCAubXktbGctbmdzIHsgbWFyZ2luLXRvcDogLTI4cHggIWltcG9ydGFudDsgfQogIC5tci1sZy1uZ3MsIC5teC1sZy1uZ3MgeyBtYXJnaW4tcmlnaHQ6IC0yOHB4ICFpbXBvcnRhbnQ7IH0KICAubWItbGctbmdzLCAubXktbGctbmdzIHsgbWFyZ2luLWJvdHRvbTogLTI4cHggIWltcG9ydGFudDsgfQogIC5tbC1sZy1uZ3MsIC5teC1sZy1uZ3MgeyBtYXJnaW4tbGVmdDogLTI4cHggIWltcG9ydGFudDsgfQogIC5tLWxnLWF1dG8geyBtYXJnaW46IGF1dG8gIWltcG9ydGFudDsgfQogIC5tdC1sZy1hdXRvLCAubXktbGctYXV0byB7IG1hcmdpbi10b3A6IGF1dG8gIWltcG9ydGFudDsgfQogIC5tci1sZy1hdXRvLCAubXgtbGctYXV0byB7IG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OyB9CiAgLm1iLWxnLWF1dG8sIC5teS1sZy1hdXRvIHsgbWFyZ2luLWJvdHRvbTogYXV0byAhaW1wb3J0YW50OyB9CiAgLm1sLWxnLWF1dG8sIC5teC1sZy1hdXRvIHsgbWFyZ2luLWxlZnQ6IGF1dG8gIWltcG9ydGFudDsgfSB9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7IC5tLXhsLTAgeyBtYXJnaW46IDAgIWltcG9ydGFudDsgfQogIC5tdC14bC0wLCAubXkteGwtMCB7IG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsgfQogIC5tci14bC0wLCAubXgteGwtMCB7IG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50OyB9CiAgLm1iLXhsLTAsIC5teS14bC0wIHsgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50OyB9CiAgLm1sLXhsLTAsIC5teC14bC0wIHsgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDsgfQogIC5tLXhsLTEgeyBtYXJnaW46IDAuMzc1cmVtICFpbXBvcnRhbnQ7IH0KICAubXQteGwtMSwgLm15LXhsLTEgeyBtYXJnaW4tdG9wOiAwLjM3NXJlbSAhaW1wb3J0YW50OyB9CiAgLm1yLXhsLTEsIC5teC14bC0xIHsgbWFyZ2luLXJpZ2h0OiAwLjM3NXJlbSAhaW1wb3J0YW50OyB9CiAgLm1iLXhsLTEsIC5teS14bC0xIHsgbWFyZ2luLWJvdHRvbTogMC4zNzVyZW0gIWltcG9ydGFudDsgfQogIC5tbC14bC0xLCAubXgteGwtMSB7IG1hcmdpbi1sZWZ0OiAwLjM3NXJlbSAhaW1wb3J0YW50OyB9CiAgLm0teGwtMiB7IG1hcmdpbjogMC43NXJlbSAhaW1wb3J0YW50OyB9CiAgLm10LXhsLTIsIC5teS14bC0yIHsgbWFyZ2luLXRvcDogMC43NXJlbSAhaW1wb3J0YW50OyB9CiAgLm1yLXhsLTIsIC5teC14bC0yIHsgbWFyZ2luLXJpZ2h0OiAwLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAubWIteGwtMiwgLm15LXhsLTIgeyBtYXJnaW4tYm90dG9tOiAwLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAubWwteGwtMiwgLm14LXhsLTIgeyBtYXJnaW4tbGVmdDogMC43NXJlbSAhaW1wb3J0YW50OyB9CiAgLm0teGwtMyB7IG1hcmdpbjogMXJlbSAhaW1wb3J0YW50OyB9CiAgLm10LXhsLTMsIC5teS14bC0zIHsgbWFyZ2luLXRvcDogMXJlbSAhaW1wb3J0YW50OyB9CiAgLm1yLXhsLTMsIC5teC14bC0zIHsgbWFyZ2luLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7IH0KICAubWIteGwtMywgLm15LXhsLTMgeyBtYXJnaW4tYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7IH0KICAubWwteGwtMywgLm14LXhsLTMgeyBtYXJnaW4tbGVmdDogMXJlbSAhaW1wb3J0YW50OyB9CiAgLm0teGwtNCB7IG1hcmdpbjogMS41cmVtICFpbXBvcnRhbnQ7IH0KICAubXQteGwtNCwgLm15LXhsLTQgeyBtYXJnaW4tdG9wOiAxLjVyZW0gIWltcG9ydGFudDsgfQogIC5tci14bC00LCAubXgteGwtNCB7IG1hcmdpbi1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7IH0KICAubWIteGwtNCwgLm15LXhsLTQgeyBtYXJnaW4tYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsgfQogIC5tbC14bC00LCAubXgteGwtNCB7IG1hcmdpbi1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDsgfQogIC5tLXhsLTUgeyBtYXJnaW46IDIuNzVyZW0gIWltcG9ydGFudDsgfQogIC5tdC14bC01LCAubXkteGwtNSB7IG1hcmdpbi10b3A6IDIuNzVyZW0gIWltcG9ydGFudDsgfQogIC5tci14bC01LCAubXgteGwtNSB7IG1hcmdpbi1yaWdodDogMi43NXJlbSAhaW1wb3J0YW50OyB9CiAgLm1iLXhsLTUsIC5teS14bC01IHsgbWFyZ2luLWJvdHRvbTogMi43NXJlbSAhaW1wb3J0YW50OyB9CiAgLm1sLXhsLTUsIC5teC14bC01IHsgbWFyZ2luLWxlZnQ6IDIuNzVyZW0gIWltcG9ydGFudDsgfQogIC5tLXhsLWdzIHsgbWFyZ2luOiAyOHB4ICFpbXBvcnRhbnQ7IH0KICAubXQteGwtZ3MsIC5teS14bC1ncyB7IG1hcmdpbi10b3A6IDI4cHggIWltcG9ydGFudDsgfQogIC5tci14bC1ncywgLm14LXhsLWdzIHsgbWFyZ2luLXJpZ2h0OiAyOHB4ICFpbXBvcnRhbnQ7IH0KICAubWIteGwtZ3MsIC5teS14bC1ncyB7IG1hcmdpbi1ib3R0b206IDI4cHggIWltcG9ydGFudDsgfQogIC5tbC14bC1ncywgLm14LXhsLWdzIHsgbWFyZ2luLWxlZnQ6IDI4cHggIWltcG9ydGFudDsgfQogIC5wLXhsLTAgeyBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7IH0KICAucHQteGwtMCwgLnB5LXhsLTAgeyBwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50OyB9CiAgLnByLXhsLTAsIC5weC14bC0wIHsgcGFkZGluZy1yaWdodDogMCAhaW1wb3J0YW50OyB9CiAgLnBiLXhsLTAsIC5weS14bC0wIHsgcGFkZGluZy1ib3R0b206IDAgIWltcG9ydGFudDsgfQogIC5wbC14bC0wLCAucHgteGwtMCB7IHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OyB9CiAgLnAteGwtMSB7IHBhZGRpbmc6IDAuMzc1cmVtICFpbXBvcnRhbnQ7IH0KICAucHQteGwtMSwgLnB5LXhsLTEgeyBwYWRkaW5nLXRvcDogMC4zNzVyZW0gIWltcG9ydGFudDsgfQogIC5wci14bC0xLCAucHgteGwtMSB7IHBhZGRpbmctcmlnaHQ6IDAuMzc1cmVtICFpbXBvcnRhbnQ7IH0KICAucGIteGwtMSwgLnB5LXhsLTEgeyBwYWRkaW5nLWJvdHRvbTogMC4zNzVyZW0gIWltcG9ydGFudDsgfQogIC5wbC14bC0xLCAucHgteGwtMSB7IHBhZGRpbmctbGVmdDogMC4zNzVyZW0gIWltcG9ydGFudDsgfQogIC5wLXhsLTIgeyBwYWRkaW5nOiAwLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAucHQteGwtMiwgLnB5LXhsLTIgeyBwYWRkaW5nLXRvcDogMC43NXJlbSAhaW1wb3J0YW50OyB9CiAgLnByLXhsLTIsIC5weC14bC0yIHsgcGFkZGluZy1yaWdodDogMC43NXJlbSAhaW1wb3J0YW50OyB9CiAgLnBiLXhsLTIsIC5weS14bC0yIHsgcGFkZGluZy1ib3R0b206IDAuNzVyZW0gIWltcG9ydGFudDsgfQogIC5wbC14bC0yLCAucHgteGwtMiB7IHBhZGRpbmctbGVmdDogMC43NXJlbSAhaW1wb3J0YW50OyB9CiAgLnAteGwtMyB7IHBhZGRpbmc6IDFyZW0gIWltcG9ydGFudDsgfQogIC5wdC14bC0zLCAucHkteGwtMyB7IHBhZGRpbmctdG9wOiAxcmVtICFpbXBvcnRhbnQ7IH0KICAucHIteGwtMywgLnB4LXhsLTMgeyBwYWRkaW5nLXJpZ2h0OiAxcmVtICFpbXBvcnRhbnQ7IH0KICAucGIteGwtMywgLnB5LXhsLTMgeyBwYWRkaW5nLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50OyB9CiAgLnBsLXhsLTMsIC5weC14bC0zIHsgcGFkZGluZy1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IH0KICAucC14bC00IHsgcGFkZGluZzogMS41cmVtICFpbXBvcnRhbnQ7IH0KICAucHQteGwtNCwgLnB5LXhsLTQgeyBwYWRkaW5nLXRvcDogMS41cmVtICFpbXBvcnRhbnQ7IH0KICAucHIteGwtNCwgLnB4LXhsLTQgeyBwYWRkaW5nLXJpZ2h0OiAxLjVyZW0gIWltcG9ydGFudDsgfQogIC5wYi14bC00LCAucHkteGwtNCB7IHBhZGRpbmctYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsgfQogIC5wbC14bC00LCAucHgteGwtNCB7IHBhZGRpbmctbGVmdDogMS41cmVtICFpbXBvcnRhbnQ7IH0KICAucC14bC01IHsgcGFkZGluZzogMi43NXJlbSAhaW1wb3J0YW50OyB9CiAgLnB0LXhsLTUsIC5weS14bC01IHsgcGFkZGluZy10b3A6IDIuNzVyZW0gIWltcG9ydGFudDsgfQogIC5wci14bC01LCAucHgteGwtNSB7IHBhZGRpbmctcmlnaHQ6IDIuNzVyZW0gIWltcG9ydGFudDsgfQogIC5wYi14bC01LCAucHkteGwtNSB7IHBhZGRpbmctYm90dG9tOiAyLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAucGwteGwtNSwgLnB4LXhsLTUgeyBwYWRkaW5nLWxlZnQ6IDIuNzVyZW0gIWltcG9ydGFudDsgfQogIC5wLXhsLWdzIHsgcGFkZGluZzogMjhweCAhaW1wb3J0YW50OyB9CiAgLnB0LXhsLWdzLCAucHkteGwtZ3MgeyBwYWRkaW5nLXRvcDogMjhweCAhaW1wb3J0YW50OyB9CiAgLnByLXhsLWdzLCAucHgteGwtZ3MgeyBwYWRkaW5nLXJpZ2h0OiAyOHB4ICFpbXBvcnRhbnQ7IH0KICAucGIteGwtZ3MsIC5weS14bC1ncyB7IHBhZGRpbmctYm90dG9tOiAyOHB4ICFpbXBvcnRhbnQ7IH0KICAucGwteGwtZ3MsIC5weC14bC1ncyB7IHBhZGRpbmctbGVmdDogMjhweCAhaW1wb3J0YW50OyB9CiAgLm0teGwtbjEgeyBtYXJnaW46IC0wLjM3NXJlbSAhaW1wb3J0YW50OyB9CiAgLm10LXhsLW4xLCAubXkteGwtbjEgeyBtYXJnaW4tdG9wOiAtMC4zNzVyZW0gIWltcG9ydGFudDsgfQogIC5tci14bC1uMSwgLm14LXhsLW4xIHsgbWFyZ2luLXJpZ2h0OiAtMC4zNzVyZW0gIWltcG9ydGFudDsgfQogIC5tYi14bC1uMSwgLm15LXhsLW4xIHsgbWFyZ2luLWJvdHRvbTogLTAuMzc1cmVtICFpbXBvcnRhbnQ7IH0KICAubWwteGwtbjEsIC5teC14bC1uMSB7IG1hcmdpbi1sZWZ0OiAtMC4zNzVyZW0gIWltcG9ydGFudDsgfQogIC5tLXhsLW4yIHsgbWFyZ2luOiAtMC43NXJlbSAhaW1wb3J0YW50OyB9CiAgLm10LXhsLW4yLCAubXkteGwtbjIgeyBtYXJnaW4tdG9wOiAtMC43NXJlbSAhaW1wb3J0YW50OyB9CiAgLm1yLXhsLW4yLCAubXgteGwtbjIgeyBtYXJnaW4tcmlnaHQ6IC0wLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAubWIteGwtbjIsIC5teS14bC1uMiB7IG1hcmdpbi1ib3R0b206IC0wLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAubWwteGwtbjIsIC5teC14bC1uMiB7IG1hcmdpbi1sZWZ0OiAtMC43NXJlbSAhaW1wb3J0YW50OyB9CiAgLm0teGwtbjMgeyBtYXJnaW46IC0xcmVtICFpbXBvcnRhbnQ7IH0KICAubXQteGwtbjMsIC5teS14bC1uMyB7IG1hcmdpbi10b3A6IC0xcmVtICFpbXBvcnRhbnQ7IH0KICAubXIteGwtbjMsIC5teC14bC1uMyB7IG1hcmdpbi1yaWdodDogLTFyZW0gIWltcG9ydGFudDsgfQogIC5tYi14bC1uMywgLm15LXhsLW4zIHsgbWFyZ2luLWJvdHRvbTogLTFyZW0gIWltcG9ydGFudDsgfQogIC5tbC14bC1uMywgLm14LXhsLW4zIHsgbWFyZ2luLWxlZnQ6IC0xcmVtICFpbXBvcnRhbnQ7IH0KICAubS14bC1uNCB7IG1hcmdpbjogLTEuNXJlbSAhaW1wb3J0YW50OyB9CiAgLm10LXhsLW40LCAubXkteGwtbjQgeyBtYXJnaW4tdG9wOiAtMS41cmVtICFpbXBvcnRhbnQ7IH0KICAubXIteGwtbjQsIC5teC14bC1uNCB7IG1hcmdpbi1yaWdodDogLTEuNXJlbSAhaW1wb3J0YW50OyB9CiAgLm1iLXhsLW40LCAubXkteGwtbjQgeyBtYXJnaW4tYm90dG9tOiAtMS41cmVtICFpbXBvcnRhbnQ7IH0KICAubWwteGwtbjQsIC5teC14bC1uNCB7IG1hcmdpbi1sZWZ0OiAtMS41cmVtICFpbXBvcnRhbnQ7IH0KICAubS14bC1uNSB7IG1hcmdpbjogLTIuNzVyZW0gIWltcG9ydGFudDsgfQogIC5tdC14bC1uNSwgLm15LXhsLW41IHsgbWFyZ2luLXRvcDogLTIuNzVyZW0gIWltcG9ydGFudDsgfQogIC5tci14bC1uNSwgLm14LXhsLW41IHsgbWFyZ2luLXJpZ2h0OiAtMi43NXJlbSAhaW1wb3J0YW50OyB9CiAgLm1iLXhsLW41LCAubXkteGwtbjUgeyBtYXJnaW4tYm90dG9tOiAtMi43NXJlbSAhaW1wb3J0YW50OyB9CiAgLm1sLXhsLW41LCAubXgteGwtbjUgeyBtYXJnaW4tbGVmdDogLTIuNzVyZW0gIWltcG9ydGFudDsgfQogIC5tLXhsLW5ncyB7IG1hcmdpbjogLTI4cHggIWltcG9ydGFudDsgfQogIC5tdC14bC1uZ3MsIC5teS14bC1uZ3MgeyBtYXJnaW4tdG9wOiAtMjhweCAhaW1wb3J0YW50OyB9CiAgLm1yLXhsLW5ncywgLm14LXhsLW5ncyB7IG1hcmdpbi1yaWdodDogLTI4cHggIWltcG9ydGFudDsgfQogIC5tYi14bC1uZ3MsIC5teS14bC1uZ3MgeyBtYXJnaW4tYm90dG9tOiAtMjhweCAhaW1wb3J0YW50OyB9CiAgLm1sLXhsLW5ncywgLm14LXhsLW5ncyB7IG1hcmdpbi1sZWZ0OiAtMjhweCAhaW1wb3J0YW50OyB9CiAgLm0teGwtYXV0byB7IG1hcmdpbjogYXV0byAhaW1wb3J0YW50OyB9CiAgLm10LXhsLWF1dG8sIC5teS14bC1hdXRvIHsgbWFyZ2luLXRvcDogYXV0byAhaW1wb3J0YW50OyB9CiAgLm1yLXhsLWF1dG8sIC5teC14bC1hdXRvIHsgbWFyZ2luLXJpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7IH0KICAubWIteGwtYXV0bywgLm15LXhsLWF1dG8geyBtYXJnaW4tYm90dG9tOiBhdXRvICFpbXBvcnRhbnQ7IH0KICAubWwteGwtYXV0bywgLm14LXhsLWF1dG8geyBtYXJnaW4tbGVmdDogYXV0byAhaW1wb3J0YW50OyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiAxNTQwcHgpIHsgLm0teHhsLTAgeyBtYXJnaW46IDAgIWltcG9ydGFudDsgfQogIC5tdC14eGwtMCwgLm15LXh4bC0wIHsgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50OyB9CiAgLm1yLXh4bC0wLCAubXgteHhsLTAgeyBtYXJnaW4tcmlnaHQ6IDAgIWltcG9ydGFudDsgfQogIC5tYi14eGwtMCwgLm15LXh4bC0wIHsgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50OyB9CiAgLm1sLXh4bC0wLCAubXgteHhsLTAgeyBtYXJnaW4tbGVmdDogMCAhaW1wb3J0YW50OyB9CiAgLm0teHhsLTEgeyBtYXJnaW46IDAuMzc1cmVtICFpbXBvcnRhbnQ7IH0KICAubXQteHhsLTEsIC5teS14eGwtMSB7IG1hcmdpbi10b3A6IDAuMzc1cmVtICFpbXBvcnRhbnQ7IH0KICAubXIteHhsLTEsIC5teC14eGwtMSB7IG1hcmdpbi1yaWdodDogMC4zNzVyZW0gIWltcG9ydGFudDsgfQogIC5tYi14eGwtMSwgLm15LXh4bC0xIHsgbWFyZ2luLWJvdHRvbTogMC4zNzVyZW0gIWltcG9ydGFudDsgfQogIC5tbC14eGwtMSwgLm14LXh4bC0xIHsgbWFyZ2luLWxlZnQ6IDAuMzc1cmVtICFpbXBvcnRhbnQ7IH0KICAubS14eGwtMiB7IG1hcmdpbjogMC43NXJlbSAhaW1wb3J0YW50OyB9CiAgLm10LXh4bC0yLCAubXkteHhsLTIgeyBtYXJnaW4tdG9wOiAwLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAubXIteHhsLTIsIC5teC14eGwtMiB7IG1hcmdpbi1yaWdodDogMC43NXJlbSAhaW1wb3J0YW50OyB9CiAgLm1iLXh4bC0yLCAubXkteHhsLTIgeyBtYXJnaW4tYm90dG9tOiAwLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAubWwteHhsLTIsIC5teC14eGwtMiB7IG1hcmdpbi1sZWZ0OiAwLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAubS14eGwtMyB7IG1hcmdpbjogMXJlbSAhaW1wb3J0YW50OyB9CiAgLm10LXh4bC0zLCAubXkteHhsLTMgeyBtYXJnaW4tdG9wOiAxcmVtICFpbXBvcnRhbnQ7IH0KICAubXIteHhsLTMsIC5teC14eGwtMyB7IG1hcmdpbi1yaWdodDogMXJlbSAhaW1wb3J0YW50OyB9CiAgLm1iLXh4bC0zLCAubXkteHhsLTMgeyBtYXJnaW4tYm90dG9tOiAxcmVtICFpbXBvcnRhbnQ7IH0KICAubWwteHhsLTMsIC5teC14eGwtMyB7IG1hcmdpbi1sZWZ0OiAxcmVtICFpbXBvcnRhbnQ7IH0KICAubS14eGwtNCB7IG1hcmdpbjogMS41cmVtICFpbXBvcnRhbnQ7IH0KICAubXQteHhsLTQsIC5teS14eGwtNCB7IG1hcmdpbi10b3A6IDEuNXJlbSAhaW1wb3J0YW50OyB9CiAgLm1yLXh4bC00LCAubXgteHhsLTQgeyBtYXJnaW4tcmlnaHQ6IDEuNXJlbSAhaW1wb3J0YW50OyB9CiAgLm1iLXh4bC00LCAubXkteHhsLTQgeyBtYXJnaW4tYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsgfQogIC5tbC14eGwtNCwgLm14LXh4bC00IHsgbWFyZ2luLWxlZnQ6IDEuNXJlbSAhaW1wb3J0YW50OyB9CiAgLm0teHhsLTUgeyBtYXJnaW46IDIuNzVyZW0gIWltcG9ydGFudDsgfQogIC5tdC14eGwtNSwgLm15LXh4bC01IHsgbWFyZ2luLXRvcDogMi43NXJlbSAhaW1wb3J0YW50OyB9CiAgLm1yLXh4bC01LCAubXgteHhsLTUgeyBtYXJnaW4tcmlnaHQ6IDIuNzVyZW0gIWltcG9ydGFudDsgfQogIC5tYi14eGwtNSwgLm15LXh4bC01IHsgbWFyZ2luLWJvdHRvbTogMi43NXJlbSAhaW1wb3J0YW50OyB9CiAgLm1sLXh4bC01LCAubXgteHhsLTUgeyBtYXJnaW4tbGVmdDogMi43NXJlbSAhaW1wb3J0YW50OyB9CiAgLm0teHhsLWdzIHsgbWFyZ2luOiAyOHB4ICFpbXBvcnRhbnQ7IH0KICAubXQteHhsLWdzLCAubXkteHhsLWdzIHsgbWFyZ2luLXRvcDogMjhweCAhaW1wb3J0YW50OyB9CiAgLm1yLXh4bC1ncywgLm14LXh4bC1ncyB7IG1hcmdpbi1yaWdodDogMjhweCAhaW1wb3J0YW50OyB9CiAgLm1iLXh4bC1ncywgLm15LXh4bC1ncyB7IG1hcmdpbi1ib3R0b206IDI4cHggIWltcG9ydGFudDsgfQogIC5tbC14eGwtZ3MsIC5teC14eGwtZ3MgeyBtYXJnaW4tbGVmdDogMjhweCAhaW1wb3J0YW50OyB9CiAgLnAteHhsLTAgeyBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7IH0KICAucHQteHhsLTAsIC5weS14eGwtMCB7IHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7IH0KICAucHIteHhsLTAsIC5weC14eGwtMCB7IHBhZGRpbmctcmlnaHQ6IDAgIWltcG9ydGFudDsgfQogIC5wYi14eGwtMCwgLnB5LXh4bC0wIHsgcGFkZGluZy1ib3R0b206IDAgIWltcG9ydGFudDsgfQogIC5wbC14eGwtMCwgLnB4LXh4bC0wIHsgcGFkZGluZy1sZWZ0OiAwICFpbXBvcnRhbnQ7IH0KICAucC14eGwtMSB7IHBhZGRpbmc6IDAuMzc1cmVtICFpbXBvcnRhbnQ7IH0KICAucHQteHhsLTEsIC5weS14eGwtMSB7IHBhZGRpbmctdG9wOiAwLjM3NXJlbSAhaW1wb3J0YW50OyB9CiAgLnByLXh4bC0xLCAucHgteHhsLTEgeyBwYWRkaW5nLXJpZ2h0OiAwLjM3NXJlbSAhaW1wb3J0YW50OyB9CiAgLnBiLXh4bC0xLCAucHkteHhsLTEgeyBwYWRkaW5nLWJvdHRvbTogMC4zNzVyZW0gIWltcG9ydGFudDsgfQogIC5wbC14eGwtMSwgLnB4LXh4bC0xIHsgcGFkZGluZy1sZWZ0OiAwLjM3NXJlbSAhaW1wb3J0YW50OyB9CiAgLnAteHhsLTIgeyBwYWRkaW5nOiAwLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAucHQteHhsLTIsIC5weS14eGwtMiB7IHBhZGRpbmctdG9wOiAwLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAucHIteHhsLTIsIC5weC14eGwtMiB7IHBhZGRpbmctcmlnaHQ6IDAuNzVyZW0gIWltcG9ydGFudDsgfQogIC5wYi14eGwtMiwgLnB5LXh4bC0yIHsgcGFkZGluZy1ib3R0b206IDAuNzVyZW0gIWltcG9ydGFudDsgfQogIC5wbC14eGwtMiwgLnB4LXh4bC0yIHsgcGFkZGluZy1sZWZ0OiAwLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAucC14eGwtMyB7IHBhZGRpbmc6IDFyZW0gIWltcG9ydGFudDsgfQogIC5wdC14eGwtMywgLnB5LXh4bC0zIHsgcGFkZGluZy10b3A6IDFyZW0gIWltcG9ydGFudDsgfQogIC5wci14eGwtMywgLnB4LXh4bC0zIHsgcGFkZGluZy1yaWdodDogMXJlbSAhaW1wb3J0YW50OyB9CiAgLnBiLXh4bC0zLCAucHkteHhsLTMgeyBwYWRkaW5nLWJvdHRvbTogMXJlbSAhaW1wb3J0YW50OyB9CiAgLnBsLXh4bC0zLCAucHgteHhsLTMgeyBwYWRkaW5nLWxlZnQ6IDFyZW0gIWltcG9ydGFudDsgfQogIC5wLXh4bC00IHsgcGFkZGluZzogMS41cmVtICFpbXBvcnRhbnQ7IH0KICAucHQteHhsLTQsIC5weS14eGwtNCB7IHBhZGRpbmctdG9wOiAxLjVyZW0gIWltcG9ydGFudDsgfQogIC5wci14eGwtNCwgLnB4LXh4bC00IHsgcGFkZGluZy1yaWdodDogMS41cmVtICFpbXBvcnRhbnQ7IH0KICAucGIteHhsLTQsIC5weS14eGwtNCB7IHBhZGRpbmctYm90dG9tOiAxLjVyZW0gIWltcG9ydGFudDsgfQogIC5wbC14eGwtNCwgLnB4LXh4bC00IHsgcGFkZGluZy1sZWZ0OiAxLjVyZW0gIWltcG9ydGFudDsgfQogIC5wLXh4bC01IHsgcGFkZGluZzogMi43NXJlbSAhaW1wb3J0YW50OyB9CiAgLnB0LXh4bC01LCAucHkteHhsLTUgeyBwYWRkaW5nLXRvcDogMi43NXJlbSAhaW1wb3J0YW50OyB9CiAgLnByLXh4bC01LCAucHgteHhsLTUgeyBwYWRkaW5nLXJpZ2h0OiAyLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAucGIteHhsLTUsIC5weS14eGwtNSB7IHBhZGRpbmctYm90dG9tOiAyLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAucGwteHhsLTUsIC5weC14eGwtNSB7IHBhZGRpbmctbGVmdDogMi43NXJlbSAhaW1wb3J0YW50OyB9CiAgLnAteHhsLWdzIHsgcGFkZGluZzogMjhweCAhaW1wb3J0YW50OyB9CiAgLnB0LXh4bC1ncywgLnB5LXh4bC1ncyB7IHBhZGRpbmctdG9wOiAyOHB4ICFpbXBvcnRhbnQ7IH0KICAucHIteHhsLWdzLCAucHgteHhsLWdzIHsgcGFkZGluZy1yaWdodDogMjhweCAhaW1wb3J0YW50OyB9CiAgLnBiLXh4bC1ncywgLnB5LXh4bC1ncyB7IHBhZGRpbmctYm90dG9tOiAyOHB4ICFpbXBvcnRhbnQ7IH0KICAucGwteHhsLWdzLCAucHgteHhsLWdzIHsgcGFkZGluZy1sZWZ0OiAyOHB4ICFpbXBvcnRhbnQ7IH0KICAubS14eGwtbjEgeyBtYXJnaW46IC0wLjM3NXJlbSAhaW1wb3J0YW50OyB9CiAgLm10LXh4bC1uMSwgLm15LXh4bC1uMSB7IG1hcmdpbi10b3A6IC0wLjM3NXJlbSAhaW1wb3J0YW50OyB9CiAgLm1yLXh4bC1uMSwgLm14LXh4bC1uMSB7IG1hcmdpbi1yaWdodDogLTAuMzc1cmVtICFpbXBvcnRhbnQ7IH0KICAubWIteHhsLW4xLCAubXkteHhsLW4xIHsgbWFyZ2luLWJvdHRvbTogLTAuMzc1cmVtICFpbXBvcnRhbnQ7IH0KICAubWwteHhsLW4xLCAubXgteHhsLW4xIHsgbWFyZ2luLWxlZnQ6IC0wLjM3NXJlbSAhaW1wb3J0YW50OyB9CiAgLm0teHhsLW4yIHsgbWFyZ2luOiAtMC43NXJlbSAhaW1wb3J0YW50OyB9CiAgLm10LXh4bC1uMiwgLm15LXh4bC1uMiB7IG1hcmdpbi10b3A6IC0wLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAubXIteHhsLW4yLCAubXgteHhsLW4yIHsgbWFyZ2luLXJpZ2h0OiAtMC43NXJlbSAhaW1wb3J0YW50OyB9CiAgLm1iLXh4bC1uMiwgLm15LXh4bC1uMiB7IG1hcmdpbi1ib3R0b206IC0wLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAubWwteHhsLW4yLCAubXgteHhsLW4yIHsgbWFyZ2luLWxlZnQ6IC0wLjc1cmVtICFpbXBvcnRhbnQ7IH0KICAubS14eGwtbjMgeyBtYXJnaW46IC0xcmVtICFpbXBvcnRhbnQ7IH0KICAubXQteHhsLW4zLCAubXkteHhsLW4zIHsgbWFyZ2luLXRvcDogLTFyZW0gIWltcG9ydGFudDsgfQogIC5tci14eGwtbjMsIC5teC14eGwtbjMgeyBtYXJnaW4tcmlnaHQ6IC0xcmVtICFpbXBvcnRhbnQ7IH0KICAubWIteHhsLW4zLCAubXkteHhsLW4zIHsgbWFyZ2luLWJvdHRvbTogLTFyZW0gIWltcG9ydGFudDsgfQogIC5tbC14eGwtbjMsIC5teC14eGwtbjMgeyBtYXJnaW4tbGVmdDogLTFyZW0gIWltcG9ydGFudDsgfQogIC5tLXh4bC1uNCB7IG1hcmdpbjogLTEuNXJlbSAhaW1wb3J0YW50OyB9CiAgLm10LXh4bC1uNCwgLm15LXh4bC1uNCB7IG1hcmdpbi10b3A6IC0xLjVyZW0gIWltcG9ydGFudDsgfQogIC5tci14eGwtbjQsIC5teC14eGwtbjQgeyBtYXJnaW4tcmlnaHQ6IC0xLjVyZW0gIWltcG9ydGFudDsgfQogIC5tYi14eGwtbjQsIC5teS14eGwtbjQgeyBtYXJnaW4tYm90dG9tOiAtMS41cmVtICFpbXBvcnRhbnQ7IH0KICAubWwteHhsLW40LCAubXgteHhsLW40IHsgbWFyZ2luLWxlZnQ6IC0xLjVyZW0gIWltcG9ydGFudDsgfQogIC5tLXh4bC1uNSB7IG1hcmdpbjogLTIuNzVyZW0gIWltcG9ydGFudDsgfQogIC5tdC14eGwtbjUsIC5teS14eGwtbjUgeyBtYXJnaW4tdG9wOiAtMi43NXJlbSAhaW1wb3J0YW50OyB9CiAgLm1yLXh4bC1uNSwgLm14LXh4bC1uNSB7IG1hcmdpbi1yaWdodDogLTIuNzVyZW0gIWltcG9ydGFudDsgfQogIC5tYi14eGwtbjUsIC5teS14eGwtbjUgeyBtYXJnaW4tYm90dG9tOiAtMi43NXJlbSAhaW1wb3J0YW50OyB9CiAgLm1sLXh4bC1uNSwgLm14LXh4bC1uNSB7IG1hcmdpbi1sZWZ0OiAtMi43NXJlbSAhaW1wb3J0YW50OyB9CiAgLm0teHhsLW5ncyB7IG1hcmdpbjogLTI4cHggIWltcG9ydGFudDsgfQogIC5tdC14eGwtbmdzLCAubXkteHhsLW5ncyB7IG1hcmdpbi10b3A6IC0yOHB4ICFpbXBvcnRhbnQ7IH0KICAubXIteHhsLW5ncywgLm14LXh4bC1uZ3MgeyBtYXJnaW4tcmlnaHQ6IC0yOHB4ICFpbXBvcnRhbnQ7IH0KICAubWIteHhsLW5ncywgLm15LXh4bC1uZ3MgeyBtYXJnaW4tYm90dG9tOiAtMjhweCAhaW1wb3J0YW50OyB9CiAgLm1sLXh4bC1uZ3MsIC5teC14eGwtbmdzIHsgbWFyZ2luLWxlZnQ6IC0yOHB4ICFpbXBvcnRhbnQ7IH0KICAubS14eGwtYXV0byB7IG1hcmdpbjogYXV0byAhaW1wb3J0YW50OyB9CiAgLm10LXh4bC1hdXRvLCAubXkteHhsLWF1dG8geyBtYXJnaW4tdG9wOiBhdXRvICFpbXBvcnRhbnQ7IH0KICAubXIteHhsLWF1dG8sIC5teC14eGwtYXV0byB7IG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OyB9CiAgLm1iLXh4bC1hdXRvLCAubXkteHhsLWF1dG8geyBtYXJnaW4tYm90dG9tOiBhdXRvICFpbXBvcnRhbnQ7IH0KICAubWwteHhsLWF1dG8sIC5teC14eGwtYXV0byB7IG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7IH0gfQoKLnN0cmV0Y2hlZC1saW5rOjphZnRlciB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyByaWdodDogMDsgYm90dG9tOiAwOyBsZWZ0OiAwOyB6LWluZGV4OiAxOyBwb2ludGVyLWV2ZW50czogYXV0bzsgY29udGVudDogIiI7IGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMCk7IH0KCi50ZXh0LW1vbm9zcGFjZSwgLmZmLW1vbm8geyBmb250LWZhbWlseTogU0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCAiTGliZXJhdGlvbiBNb25vIiwgIkNvdXJpZXIgTmV3IiwgbW9ub3NwYWNlICFpbXBvcnRhbnQ7IH0KCi50ZXh0LWp1c3RpZnkgeyB0ZXh0LWFsaWduOiBqdXN0aWZ5ICFpbXBvcnRhbnQ7IH0KCi50ZXh0LXdyYXAgeyB3aGl0ZS1zcGFjZTogbm9ybWFsICFpbXBvcnRhbnQ7IH0KCi50ZXh0LW5vd3JhcCB7IHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDsgfQoKLnRleHQtdHJ1bmNhdGUgeyBvdmVyZmxvdzogaGlkZGVuOyB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfQoKLnRleHQtbGVmdCB7IHRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudDsgfQoKLnRleHQtcmlnaHQgeyB0ZXh0LWFsaWduOiByaWdodCAhaW1wb3J0YW50OyB9CgoudGV4dC1jZW50ZXIgeyB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsgfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7IC50ZXh0LXNtLWxlZnQgeyB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7IH0KICAudGV4dC1zbS1yaWdodCB7IHRleHQtYWxpZ246IHJpZ2h0ICFpbXBvcnRhbnQ7IH0KICAudGV4dC1zbS1jZW50ZXIgeyB0ZXh0LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDsgfSB9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsgLnRleHQtbWQtbGVmdCB7IHRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudDsgfQogIC50ZXh0LW1kLXJpZ2h0IHsgdGV4dC1hbGlnbjogcmlnaHQgIWltcG9ydGFudDsgfQogIC50ZXh0LW1kLWNlbnRlciB7IHRleHQtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50OyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgeyAudGV4dC1sZy1sZWZ0IHsgdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50OyB9CiAgLnRleHQtbGctcmlnaHQgeyB0ZXh0LWFsaWduOiByaWdodCAhaW1wb3J0YW50OyB9CiAgLnRleHQtbGctY2VudGVyIHsgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7IH0gfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgeyAudGV4dC14bC1sZWZ0IHsgdGV4dC1hbGlnbjogbGVmdCAhaW1wb3J0YW50OyB9CiAgLnRleHQteGwtcmlnaHQgeyB0ZXh0LWFsaWduOiByaWdodCAhaW1wb3J0YW50OyB9CiAgLnRleHQteGwtY2VudGVyIHsgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7IH0gfQoKQG1lZGlhIChtaW4td2lkdGg6IDE1NDBweCkgeyAudGV4dC14eGwtbGVmdCB7IHRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudDsgfQogIC50ZXh0LXh4bC1yaWdodCB7IHRleHQtYWxpZ246IHJpZ2h0ICFpbXBvcnRhbnQ7IH0KICAudGV4dC14eGwtY2VudGVyIHsgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7IH0gfQoKLnRleHQtbG93ZXJjYXNlLCAubGNhcCB7IHRleHQtdHJhbnNmb3JtOiBsb3dlcmNhc2UgIWltcG9ydGFudDsgfQoKLnRleHQtdXBwZXJjYXNlLCAudWNhcCB7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2UgIWltcG9ydGFudDsgfQoKLnRleHQtY2FwaXRhbGl6ZSwgLmNjYXAgeyB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZSAhaW1wb3J0YW50OyB9CgouZm9udC13ZWlnaHQtbGlnaHQsIC5mdy1saWdodCB7IGZvbnQtd2VpZ2h0OiAzMDAgIWltcG9ydGFudDsgfQoKLmZvbnQtd2VpZ2h0LWxpZ2h0ZXIsIC5mdy1saWdodGVyIHsgZm9udC13ZWlnaHQ6IGxpZ2h0ZXIgIWltcG9ydGFudDsgfQoKLmZvbnQtd2VpZ2h0LW5vcm1hbCwgLmZ3LW5vcm1hbCB7IGZvbnQtd2VpZ2h0OiA0MDAgIWltcG9ydGFudDsgfQoKLmZvbnQtd2VpZ2h0LWJvbGQsIC5mdy1ib2xkIHsgZm9udC13ZWlnaHQ6IDcwMCAhaW1wb3J0YW50OyB9CgouZm9udC13ZWlnaHQtYm9sZGVyLCAuZnctYm9sZGVyIHsgZm9udC13ZWlnaHQ6IGJvbGRlciAhaW1wb3J0YW50OyB9CgouZm9udC1pdGFsaWMsIC5mZi1pdGFsaWMgeyBmb250LXN0eWxlOiBpdGFsaWMgIWltcG9ydGFudDsgfQoKLnRleHQtd2hpdGUgeyBjb2xvcjogI2ZmZiAhaW1wb3J0YW50OyB9CgoudGV4dC1wcmltYXJ5IHsgY29sb3I6ICMwOTcxZmUgIWltcG9ydGFudDsgfQoKYS50ZXh0LXByaW1hcnk6aG92ZXIsIGEudGV4dC1wcmltYXJ5OmZvY3VzIHsgY29sb3I6ICMwMTRmYmEgIWltcG9ydGFudDsgfQoKLnRleHQtc2Vjb25kYXJ5IHsgY29sb3I6ICMzNjRhNjMgIWltcG9ydGFudDsgfQoKYS50ZXh0LXNlY29uZGFyeTpob3ZlciwgYS50ZXh0LXNlY29uZGFyeTpmb2N1cyB7IGNvbG9yOiAjMWIyNTMyICFpbXBvcnRhbnQ7IH0KCi50ZXh0LXN1Y2Nlc3MgeyBjb2xvcjogIzFlZTBhYyAhaW1wb3J0YW50OyB9CgphLnRleHQtc3VjY2Vzczpob3ZlciwgYS50ZXh0LXN1Y2Nlc3M6Zm9jdXMgeyBjb2xvcjogIzE1OWQ3OCAhaW1wb3J0YW50OyB9CgoudGV4dC1pbmZvIHsgY29sb3I6ICMwOWMyZGUgIWltcG9ydGFudDsgfQoKYS50ZXh0LWluZm86aG92ZXIsIGEudGV4dC1pbmZvOmZvY3VzIHsgY29sb3I6ICMwNjgyOTQgIWltcG9ydGFudDsgfQoKLnRleHQtd2FybmluZyB7IGNvbG9yOiAjZjRiZDBlICFpbXBvcnRhbnQ7IH0KCmEudGV4dC13YXJuaW5nOmhvdmVyLCBhLnRleHQtd2FybmluZzpmb2N1cyB7IGNvbG9yOiAjYWU4NjA4ICFpbXBvcnRhbnQ7IH0KCi50ZXh0LWRhbmdlciB7IGNvbG9yOiAjZTg1MzQ3ICFpbXBvcnRhbnQ7IH0KCmEudGV4dC1kYW5nZXI6aG92ZXIsIGEudGV4dC1kYW5nZXI6Zm9jdXMgeyBjb2xvcjogI2M5MjYxOSAhaW1wb3J0YW50OyB9CgoudGV4dC1kYXJrIHsgY29sb3I6ICMxYzJiNDYgIWltcG9ydGFudDsgfQoKYS50ZXh0LWRhcms6aG92ZXIsIGEudGV4dC1kYXJrOmZvY3VzIHsgY29sb3I6ICMwNjA5MGYgIWltcG9ydGFudDsgfQoKLnRleHQtZ3JheSB7IGNvbG9yOiAjODA5MWE3ICFpbXBvcnRhbnQ7IH0KCmEudGV4dC1ncmF5OmhvdmVyLCBhLnRleHQtZ3JheTpmb2N1cyB7IGNvbG9yOiAjNTk2YjgxICFpbXBvcnRhbnQ7IH0KCi50ZXh0LWxpZ2h0IHsgY29sb3I6ICNlNWU5ZjIgIWltcG9ydGFudDsgfQoKYS50ZXh0LWxpZ2h0OmhvdmVyLCBhLnRleHQtbGlnaHQ6Zm9jdXMgeyBjb2xvcjogI2IyYmVkOSAhaW1wb3J0YW50OyB9CgoudGV4dC1saWdodGVyIHsgY29sb3I6ICNmNWY2ZmEgIWltcG9ydGFudDsgfQoKYS50ZXh0LWxpZ2h0ZXI6aG92ZXIsIGEudGV4dC1saWdodGVyOmZvY3VzIHsgY29sb3I6ICNjMmM4ZTEgIWltcG9ydGFudDsgfQoKLnRleHQtYm9keSB7IGNvbG9yOiAjNTI2NDg0ICFpbXBvcnRhbnQ7IH0KCi50ZXh0LW11dGVkIHsgY29sb3I6ICM4MDk0YWUgIWltcG9ydGFudDsgfQoKLnRleHQtYmxhY2stNTAgeyBjb2xvcjogcmdiYSgwLCAwLCAwLCAwLjUpICFpbXBvcnRhbnQ7IH0KCi50ZXh0LXdoaXRlLTUwIHsgY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41KSAhaW1wb3J0YW50OyB9CgoudGV4dC1oaWRlIHsgZm9udDogMC8wIGE7IGNvbG9yOiB0cmFuc3BhcmVudDsgdGV4dC1zaGFkb3c6IG5vbmU7IGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyBib3JkZXI6IDA7IH0KCi50ZXh0LWRlY29yYXRpb24tbm9uZSB7IHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50OyB9CgoudGV4dC1icmVhayB7IHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQgIWltcG9ydGFudDsgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZCAhaW1wb3J0YW50OyB9CgoudGV4dC1yZXNldCB7IGNvbG9yOiBpbmhlcml0ICFpbXBvcnRhbnQ7IH0KCi52aXNpYmxlIHsgdmlzaWJpbGl0eTogdmlzaWJsZSAhaW1wb3J0YW50OyB9CgouaW52aXNpYmxlIHsgdmlzaWJpbGl0eTogaGlkZGVuICFpbXBvcnRhbnQ7IH0KCkBtZWRpYSBwcmludCB7ICosICo6OmJlZm9yZSwgKjo6YWZ0ZXIgeyB0ZXh0LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50OyBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7IH0KICBhOm5vdCguYnRuKSB7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9CiAgYWJiclt0aXRsZV06OmFmdGVyIHsgY29udGVudDogIiAoIiBhdHRyKHRpdGxlKSAiKSI7IH0KICBwcmUgeyB3aGl0ZS1zcGFjZTogcHJlLXdyYXAgIWltcG9ydGFudDsgfQogIHByZSwgYmxvY2txdW90ZSB7IGJvcmRlcjogMXB4IHNvbGlkICM4MDkxYTc7IHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsgfQogIHRoZWFkIHsgZGlzcGxheTogdGFibGUtaGVhZGVyLWdyb3VwOyB9CiAgdHIsIGltZyB7IHBhZ2UtYnJlYWstaW5zaWRlOiBhdm9pZDsgfQogIHAsIGgyLCBoMyB7IG9ycGhhbnM6IDM7IHdpZG93czogMzsgfQogIGgyLCBoMyB7IHBhZ2UtYnJlYWstYWZ0ZXI6IGF2b2lkOyB9CiAgQHBhZ2UgeyBzaXplOiBhMzsgfQogIGJvZHkgeyBtaW4td2lkdGg6IDk5MnB4ICFpbXBvcnRhbnQ7IH0KICAuY29udGFpbmVyIHsgbWluLXdpZHRoOiA5OTJweCAhaW1wb3J0YW50OyB9CiAgLm5hdmJhciB7IGRpc3BsYXk6IG5vbmU7IH0KICAuYmFkZ2UgeyBib3JkZXI6IDFweCBzb2xpZCAjMDAwOyB9CiAgLnRhYmxlIHsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZSAhaW1wb3J0YW50OyB9CiAgLnRhYmxlIHRkLCAudGFibGUgdGggeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7IH0KICAudGFibGUtYm9yZGVyZWQgdGgsIC50YWJsZS1ib3JkZXJlZCB0ZCB7IGJvcmRlcjogMXB4IHNvbGlkICNkYmRmZWEgIWltcG9ydGFudDsgfQogIC50YWJsZS1kYXJrIHsgY29sb3I6IGluaGVyaXQ7IH0KICAudGFibGUtZGFyayB0aCwgLnRhYmxlLWRhcmsgdGQsIC50YWJsZS1kYXJrIHRoZWFkIHRoLCAudGFibGUtZGFyayB0Ym9keSArIHRib2R5IHsgYm9yZGVyLWNvbG9yOiAjZGJkZmVhOyB9CiAgLnRhYmxlIC50aGVhZC1kYXJrIHRoIHsgY29sb3I6IGluaGVyaXQ7IGJvcmRlci1jb2xvcjogI2RiZGZlYTsgfSB9CgpodG1sIHsgZm9udC1zaXplOiAxNnB4OyB9CgpvbCwgdWwgeyBsaXN0LXN0eWxlOiBub25lOyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7IH0KCmEgeyB0cmFuc2l0aW9uOiBjb2xvciAuNHMsIGJhY2tncm91bmQtY29sb3IgLjRzLCBib3JkZXIgLjRzLCBib3gtc2hhZG93IC40czsgfQoKYTpmb2N1cyB7IG91dGxpbmU6IG5vbmU7IH0KCmltZyB7IG1heC13aWR0aDogMTAwJTsgfQoKc3Ryb25nIHsgZm9udC13ZWlnaHQ6IDUwMDsgfQoKaDE6bGFzdC1jaGlsZCwgaDI6bGFzdC1jaGlsZCwgaDM6bGFzdC1jaGlsZCwgaDQ6bGFzdC1jaGlsZCwgaDU6bGFzdC1jaGlsZCwgaDY6bGFzdC1jaGlsZCwgLmgxOmxhc3QtY2hpbGQsIC5oMjpsYXN0LWNoaWxkLCAuaDM6bGFzdC1jaGlsZCwgLmg0Omxhc3QtY2hpbGQsIC5oNTpsYXN0LWNoaWxkLCAuaDY6bGFzdC1jaGlsZCwgcDpsYXN0LWNoaWxkIHsgbWFyZ2luLWJvdHRvbTogMDsgfQoKaDEsIC5oMSwgaDIsIC5oMiB7IGxldHRlci1zcGFjaW5nOiAtMC4wM2VtOyB9CgpoMywgLmgzLCBoNCwgLmg0IHsgbGV0dGVyLXNwYWNpbmc6IC0wLjAyZW07IH0KCmg1LCAuaDUsIGg2LCAuaDYgeyBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTsgfQoKQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7IGgxLCAuaDEgeyBmb250LXNpemU6IDMuNzVyZW07IGZvbnQtd2VpZ2h0OiA0MDA7IGxldHRlci1zcGFjaW5nOiAtMC4wNGVtOyB9CiAgaDIsIC5oMiB7IGZvbnQtc2l6ZTogMi41cmVtOyBsZXR0ZXItc3BhY2luZzogLTAuMDNlbTsgfQogIGgzLCAuaDMgeyBmb250LXNpemU6IDJyZW07IGxldHRlci1zcGFjaW5nOiAtMC4wM2VtOyB9CiAgaDQsIC5oNCB7IGZvbnQtc2l6ZTogMS41cmVtOyB9CiAgaDUsIC5oNSB7IGZvbnQtc2l6ZTogMS4yNXJlbTsgfQogIGg2LCAuaDYgeyBmb250LXNpemU6IDEuMDVyZW07IH0gfQoKLmxpc3QtaW5saW5lIGxpIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB9CgoubGlzdC1pbmxpbmUgbGk6bm90KDpsYXN0LWNoaWxkKSB7IG1hcmdpbi1yaWdodDogMXJlbTsgfQoKLmVsbGlwc2lzLCAudGV4dC1lbGxpcHNpcywgLnRiLXRueC1pdGVtIC50Yi10bngtZGVzYywgLnRiLW9kci1pdGVtIC50Yi1vZHItaW5mbywgLmF0dGFjaC1pdGVtIHNwYW4sIC5uay1tc2ctdGV4dCAudGl0bGUgeyB3aGl0ZS1zcGFjZTogbm93cmFwOyBvdmVyZmxvdzogaGlkZGVuOyB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsgfQoKLmZmLWJhc2UgeyBmb250LWZhbWlseTogUm9ib3RvLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7IH0KCi5mZi1hbHQgeyBmb250LWZhbWlseTogTnVuaXRvLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7IH0KCi5mdy1tZWRpdW0geyBmb250LXdlaWdodDogNTAwICFpbXBvcnRhbnQ7IH0KCi50ZXh0LXdoaXRlIGgxLCAudGV4dC13aGl0ZSBoMiwgLnRleHQtd2hpdGUgaDMsIC50ZXh0LXdoaXRlIGg0LCAudGV4dC13aGl0ZSBoNSwgLnRleHQtd2hpdGUgaDYsIC50ZXh0LXdoaXRlIC5oMSwgLnRleHQtd2hpdGUgLmgyLCAudGV4dC13aGl0ZSAuaDMsIC50ZXh0LXdoaXRlIC5oNCwgLnRleHQtd2hpdGUgLmg1LCAudGV4dC13aGl0ZSAuaDYgeyBjb2xvcjogI2ZmZjsgfQoKQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7IC5sZWFkIHsgZm9udC1zaXplOiAxLjA5Mzc1cmVtOyB9IH0KCi50ZXh0LXNvZnQgeyBjb2xvcjogIzgwOTRhZSAhaW1wb3J0YW50OyB9CgoudGV4dC1iYXNlIHsgY29sb3I6ICM1MjY0ODQgIWltcG9ydGFudDsgfQoKLnRleHQtaGVhZCB7IGNvbG9yOiAjMzY0YTYzICFpbXBvcnRhbnQ7IH0KCi5jaXJjbGUgeyBib3JkZXItcmFkaXVzOiA1MCU7IH0KCi5yb3VuZCB7IGJvcmRlci1yYWRpdXM6IDRweDsgfQoKLnJvdW5kLXNtIHsgYm9yZGVyLXJhZGl1czogM3B4OyB9Cgoucm91bmQtbGcgeyBib3JkZXItcmFkaXVzOiA1cHg7IH0KCi5yb3VuZC14bCB7IGJvcmRlci1yYWRpdXM6IDEwcHg7IH0KCnN2ZyB7IGhlaWdodDogMTAwJTsgbWF4LXdpZHRoOiAxMDAlOyB9Cgouc3EgeyBoZWlnaHQ6IDQwcHg7IHdpZHRoOiA0MHB4OyB9Cgouc3EteHMgeyBoZWlnaHQ6IDE4cHg7IHdpZHRoOiAxOHB4OyB9Cgouc3Etc20geyBoZWlnaHQ6IDI0cHg7IHdpZHRoOiAyNHB4OyB9Cgouc3EtbWQgeyBoZWlnaHQ6IDMycHg7IHdpZHRoOiAzMnB4OyB9Cgouc3EtbGcgeyBoZWlnaHQ6IDYwcHg7IHdpZHRoOiA2MHB4OyB9Cgouc3EteGwgeyBoZWlnaHQ6IDgwcHg7IHdpZHRoOiA4MHB4OyB9CgouZGl2aWRlciB7IGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTVlOWYyICFpbXBvcnRhbnQ7IG1hcmdpbjogMjhweCAwOyBkaXNwbGF5OiBibG9jazsgfQoKLmRpdmlkZXIueHMgeyBtYXJnaW46IC41cmVtIDA7IH0KCi5kaXZpZGVyLnNtIHsgbWFyZ2luOiAxcmVtIDA7IH0KCi5kaXZpZGVyLm1kIHsgbWFyZ2luOiAxLjVyZW0gMDsgfQoKLmRpdmlkZXIubGcgeyBtYXJnaW46IDIuMjVyZW0gMDsgfQoKLmRpdmlkZXIueGwgeyBtYXJnaW46IDIuNzVyZW0gMDsgfQoKLmJnLWJsdWUgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjNTU5YmZiICFpbXBvcnRhbnQ7IH0KCi50ZXh0LWJsdWUgeyBjb2xvcjogIzU1OWJmYiAhaW1wb3J0YW50OyB9CgouYmctYXp1cmUgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMTY3NmZiICFpbXBvcnRhbnQ7IH0KCi50ZXh0LWF6dXJlIHsgY29sb3I6ICMxNjc2ZmIgIWltcG9ydGFudDsgfQoKLmJnLWluZGlnbyB7IGJhY2tncm91bmQtY29sb3I6ICMyYzM3ODIgIWltcG9ydGFudDsgfQoKLnRleHQtaW5kaWdvIHsgY29sb3I6ICMyYzM3ODIgIWltcG9ydGFudDsgfQoKLmJnLXB1cnBsZSB7IGJhY2tncm91bmQtY29sb3I6ICM4MTZiZmYgIWltcG9ydGFudDsgfQoKLnRleHQtcHVycGxlIHsgY29sb3I6ICM4MTZiZmYgIWltcG9ydGFudDsgfQoKLmJnLXBpbmsgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY2M2E1ICFpbXBvcnRhbnQ7IH0KCi50ZXh0LXBpbmsgeyBjb2xvcjogI2ZmNjNhNSAhaW1wb3J0YW50OyB9CgouYmctb3JhbmdlIHsgYmFja2dyb3VuZC1jb2xvcjogI2ZmYTM1MyAhaW1wb3J0YW50OyB9CgoudGV4dC1vcmFuZ2UgeyBjb2xvcjogI2ZmYTM1MyAhaW1wb3J0YW50OyB9CgouYmctdGVhbCB7IGJhY2tncm91bmQtY29sb3I6ICMyMGM5OTcgIWltcG9ydGFudDsgfQoKLnRleHQtdGVhbCB7IGNvbG9yOiAjMjBjOTk3ICFpbXBvcnRhbnQ7IH0KCi5iZy1ibHVlLWRpbSB7IGJhY2tncm91bmQtY29sb3I6ICNlOWYyZmUgIWltcG9ydGFudDsgfQoKLnRleHQtYmx1ZS1kaW0geyBjb2xvcjogI2U5ZjJmZSAhaW1wb3J0YW50OyB9CgouYmctYXp1cmUtZGltIHsgYmFja2dyb3VuZC1jb2xvcjogI2UxZWRmZSAhaW1wb3J0YW50OyB9CgoudGV4dC1henVyZS1kaW0geyBjb2xvcjogI2UxZWRmZSAhaW1wb3J0YW50OyB9CgouYmctaW5kaWdvLWRpbSB7IGJhY2tncm91bmQtY29sb3I6ICNlNGU1ZWYgIWltcG9ydGFudDsgfQoKLnRleHQtaW5kaWdvLWRpbSB7IGNvbG9yOiAjZTRlNWVmICFpbXBvcnRhbnQ7IH0KCi5iZy1wdXJwbGUtZGltIHsgYmFja2dyb3VuZC1jb2xvcjogI2VmZWNmZiAhaW1wb3J0YW50OyB9CgoudGV4dC1wdXJwbGUtZGltIHsgY29sb3I6ICNlZmVjZmYgIWltcG9ydGFudDsgfQoKLmJnLXBpbmstZGltIHsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZWJmMyAhaW1wb3J0YW50OyB9CgoudGV4dC1waW5rLWRpbSB7IGNvbG9yOiAjZmZlYmYzICFpbXBvcnRhbnQ7IH0KCi5iZy1vcmFuZ2UtZGltIHsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjNlOSAhaW1wb3J0YW50OyB9CgoudGV4dC1vcmFuZ2UtZGltIHsgY29sb3I6ICNmZmYzZTkgIWltcG9ydGFudDsgfQoKLmJnLXRlYWwtZGltIHsgYmFja2dyb3VuZC1jb2xvcjogI2UyZjhmMSAhaW1wb3J0YW50OyB9CgoudGV4dC10ZWFsLWRpbSB7IGNvbG9yOiAjZTJmOGYxICFpbXBvcnRhbnQ7IH0KCi5iZy1wcmltYXJ5LWRpbSwgLmR1YWwtbGlzdGJveCAuZHVhbC1saXN0Ym94X19pdGVtOmFjdGl2ZSwgLmR1YWwtbGlzdGJveCAuZHVhbC1saXN0Ym94X19pdGVtLmR1YWwtbGlzdGJveF9faXRlbS0tc2VsZWN0ZWQgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZGZlZGZmICFpbXBvcnRhbnQ7IH0KCi50ZXh0LXByaW1hcnktZGltIHsgY29sb3I6ICNkZmVkZmYgIWltcG9ydGFudDsgfQoKLmJnLXN1Y2Nlc3MtZGltIHsgYmFja2dyb3VuZC1jb2xvcjogI2UyZmJmNCAhaW1wb3J0YW50OyB9CgoudGV4dC1zdWNjZXNzLWRpbSB7IGNvbG9yOiAjZTJmYmY0ICFpbXBvcnRhbnQ7IH0KCi5iZy1pbmZvLWRpbSB7IGJhY2tncm91bmQtY29sb3I6ICNkZmY3ZmIgIWltcG9ydGFudDsgfQoKLnRleHQtaW5mby1kaW0geyBjb2xvcjogI2RmZjdmYiAhaW1wb3J0YW50OyB9CgouYmctd2FybmluZy1kaW0geyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmVmNmUwICFpbXBvcnRhbnQ7IH0KCi50ZXh0LXdhcm5pbmctZGltIHsgY29sb3I6ICNmZWY2ZTAgIWltcG9ydGFudDsgfQoKLmJnLWRhbmdlci1kaW0geyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmNlOWU3ICFpbXBvcnRhbnQ7IH0KCi50ZXh0LWRhbmdlci1kaW0geyBjb2xvcjogI2ZjZTllNyAhaW1wb3J0YW50OyB9CgouYmctc2Vjb25kYXJ5LWRpbSB7IGJhY2tncm91bmQtY29sb3I6ICNlNWVjZjUgIWltcG9ydGFudDsgfQoKLnRleHQtc2Vjb25kYXJ5LWRpbSB7IGNvbG9yOiAjZTVlY2Y1ICFpbXBvcnRhbnQ7IH0KCi5iZy1kYXJrLWRpbSB7IGJhY2tncm91bmQtY29sb3I6ICNkOWUxZWYgIWltcG9ydGFudDsgfQoKLnRleHQtZGFyay1kaW0geyBjb2xvcjogI2Q5ZTFlZiAhaW1wb3J0YW50OyB9CgouYmctZ3JheS1kaW0geyBiYWNrZ3JvdW5kLWNvbG9yOiAjZWRmMmY5ICFpbXBvcnRhbnQ7IH0KCi50ZXh0LWdyYXktZGltIHsgY29sb3I6ICNlZGYyZjkgIWltcG9ydGFudDsgfQoKLmJnLWdyYXktMTAwIHsgYmFja2dyb3VuZC1jb2xvcjogI2ViZWVmMiAhaW1wb3J0YW50OyB9CgouYmctZ3JheS0yMDAgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZTVlOWYyICFpbXBvcnRhbnQ7IH0KCi5iZy1ncmF5LTMwMCB7IGJhY2tncm91bmQtY29sb3I6ICNkYmRmZWEgIWltcG9ydGFudDsgfQoKLmJnLWdyYXktNDAwIHsgYmFja2dyb3VuZC1jb2xvcjogI2I3YzJkMCAhaW1wb3J0YW50OyB9CgouYmctZ3JheS01MDAgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjODA5MWE3ICFpbXBvcnRhbnQ7IH0KCi5iZy1ncmF5LTYwMCB7IGJhY2tncm91bmQtY29sb3I6ICMzYzRkNjIgIWltcG9ydGFudDsgfQoKLmJnLWdyYXktNzAwIHsgYmFja2dyb3VuZC1jb2xvcjogIzM0NDM1NyAhaW1wb3J0YW50OyB9CgouYmctZ3JheS04MDAgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMmIzNzQ4ICFpbXBvcnRhbnQ7IH0KCi5iZy1ncmF5LTkwMCB7IGJhY2tncm91bmQtY29sb3I6ICMxZjJiM2EgIWltcG9ydGFudDsgfQoKLmJnLWFic3RyYWN0IHsgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAjMmMzNzgyIGNhbGMoNjAlIC0gMTUwcHgpLCAjMzk0NjlmIGNhbGMoNjAlIC0gMTUwcHgpLCAjMzk0NjlmIDYwJSwgIzQ4NTZiNSA2MCUsICM0ODU2YjUgY2FsYyg2MCUgKyAxNTBweCksICM1YjZhYzYgY2FsYyg2MCUgKyAxNTBweCksICM1YjZhYzYgMTAwJSk7IH0KCi5iZy13aGl0ZS0xIHsgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpICFpbXBvcnRhbnQ7IH0KCi5iZy13aGl0ZS0yIHsgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpICFpbXBvcnRhbnQ7IH0KCi5iZy13aGl0ZS0zIHsgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpICFpbXBvcnRhbnQ7IH0KCi5iZy13aGl0ZS00IHsgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpICFpbXBvcnRhbnQ7IH0KCi5iZy13aGl0ZS01IHsgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpICFpbXBvcnRhbnQ7IH0KCi5iZy13aGl0ZS02IHsgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjYpICFpbXBvcnRhbnQ7IH0KCi5iZy13aGl0ZS03IHsgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcpICFpbXBvcnRhbnQ7IH0KCi5iZy13aGl0ZS04IHsgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpICFpbXBvcnRhbnQ7IH0KCi5iZy13aGl0ZS05IHsgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpICFpbXBvcnRhbnQ7IH0KCi5ib3JkZXItdHJhbnNwYXJlbnQgeyBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OyB9Cgoudy04MHB4IHsgd2lkdGg6IDgwcHggIWltcG9ydGFudDsgfQoKLnctbWluLTgwcHggeyBtaW4td2lkdGg6IDgwcHggIWltcG9ydGFudDsgfQoKLnctbWF4LTgwcHggeyBtYXgtd2lkdGg6IDgwcHggIWltcG9ydGFudDsgfQoKLnctOTBweCB7IHdpZHRoOiA5MHB4ICFpbXBvcnRhbnQ7IH0KCi53LW1pbi05MHB4IHsgbWluLXdpZHRoOiA5MHB4ICFpbXBvcnRhbnQ7IH0KCi53LW1heC05MHB4IHsgbWF4LXdpZHRoOiA5MHB4ICFpbXBvcnRhbnQ7IH0KCi53LTEwMHB4IHsgd2lkdGg6IDEwMHB4ICFpbXBvcnRhbnQ7IH0KCi53LW1pbi0xMDBweCB7IG1pbi13aWR0aDogMTAwcHggIWltcG9ydGFudDsgfQoKLnctbWF4LTEwMHB4IHsgbWF4LXdpZHRoOiAxMDBweCAhaW1wb3J0YW50OyB9Cgoudy0xMTBweCB7IHdpZHRoOiAxMTBweCAhaW1wb3J0YW50OyB9Cgoudy1taW4tMTEwcHggeyBtaW4td2lkdGg6IDExMHB4ICFpbXBvcnRhbnQ7IH0KCi53LW1heC0xMTBweCB7IG1heC13aWR0aDogMTEwcHggIWltcG9ydGFudDsgfQoKLnctMTIwcHggeyB3aWR0aDogMTIwcHggIWltcG9ydGFudDsgfQoKLnctbWluLTEyMHB4IHsgbWluLXdpZHRoOiAxMjBweCAhaW1wb3J0YW50OyB9Cgoudy1tYXgtMTIwcHggeyBtYXgtd2lkdGg6IDEyMHB4ICFpbXBvcnRhbnQ7IH0KCi53LTEyNXB4IHsgd2lkdGg6IDEyNXB4ICFpbXBvcnRhbnQ7IH0KCi53LW1pbi0xMjVweCB7IG1pbi13aWR0aDogMTI1cHggIWltcG9ydGFudDsgfQoKLnctbWF4LTEyNXB4IHsgbWF4LXdpZHRoOiAxMjVweCAhaW1wb3J0YW50OyB9Cgoudy0xMzBweCB7IHdpZHRoOiAxMzBweCAhaW1wb3J0YW50OyB9Cgoudy1taW4tMTMwcHggeyBtaW4td2lkdGg6IDEzMHB4ICFpbXBvcnRhbnQ7IH0KCi53LW1heC0xMzBweCB7IG1heC13aWR0aDogMTMwcHggIWltcG9ydGFudDsgfQoKLnctMTQwcHggeyB3aWR0aDogMTQwcHggIWltcG9ydGFudDsgfQoKLnctbWluLTE0MHB4IHsgbWluLXdpZHRoOiAxNDBweCAhaW1wb3J0YW50OyB9Cgoudy1tYXgtMTQwcHggeyBtYXgtd2lkdGg6IDE0MHB4ICFpbXBvcnRhbnQ7IH0KCi53LTE1MHB4IHsgd2lkdGg6IDE1MHB4ICFpbXBvcnRhbnQ7IH0KCi53LW1pbi0xNTBweCB7IG1pbi13aWR0aDogMTUwcHggIWltcG9ydGFudDsgfQoKLnctbWF4LTE1MHB4IHsgbWF4LXdpZHRoOiAxNTBweCAhaW1wb3J0YW50OyB9Cgoudy0xNzVweCB7IHdpZHRoOiAxNzVweCAhaW1wb3J0YW50OyB9Cgoudy1taW4tMTc1cHggeyBtaW4td2lkdGg6IDE3NXB4ICFpbXBvcnRhbnQ7IH0KCi53LW1heC0xNzVweCB7IG1heC13aWR0aDogMTc1cHggIWltcG9ydGFudDsgfQoKLnctMjAwcHggeyB3aWR0aDogMjAwcHggIWltcG9ydGFudDsgfQoKLnctbWluLTIwMHB4IHsgbWluLXdpZHRoOiAyMDBweCAhaW1wb3J0YW50OyB9Cgoudy1tYXgtMjAwcHggeyBtYXgtd2lkdGg6IDIwMHB4ICFpbXBvcnRhbnQ7IH0KCi53LTIyMHB4IHsgd2lkdGg6IDIyMHB4ICFpbXBvcnRhbnQ7IH0KCi53LW1pbi0yMjBweCB7IG1pbi13aWR0aDogMjIwcHggIWltcG9ydGFudDsgfQoKLnctbWF4LTIyMHB4IHsgbWF4LXdpZHRoOiAyMjBweCAhaW1wb3J0YW50OyB9Cgoudy0yMjVweCB7IHdpZHRoOiAyMjVweCAhaW1wb3J0YW50OyB9Cgoudy1taW4tMjI1cHggeyBtaW4td2lkdGg6IDIyNXB4ICFpbXBvcnRhbnQ7IH0KCi53LW1heC0yMjVweCB7IG1heC13aWR0aDogMjI1cHggIWltcG9ydGFudDsgfQoKLnctMjUwcHggeyB3aWR0aDogMjUwcHggIWltcG9ydGFudDsgfQoKLnctbWluLTI1MHB4IHsgbWluLXdpZHRoOiAyNTBweCAhaW1wb3J0YW50OyB9Cgoudy1tYXgtMjUwcHggeyBtYXgtd2lkdGg6IDI1MHB4ICFpbXBvcnRhbnQ7IH0KCi53LTMwMHB4IHsgd2lkdGg6IDMwMHB4ICFpbXBvcnRhbnQ7IH0KCi53LW1pbi0zMDBweCB7IG1pbi13aWR0aDogMzAwcHggIWltcG9ydGFudDsgfQoKLnctbWF4LTMwMHB4IHsgbWF4LXdpZHRoOiAzMDBweCAhaW1wb3J0YW50OyB9Cgoudy0zNTBweCB7IHdpZHRoOiAzNTBweCAhaW1wb3J0YW50OyB9Cgoudy1taW4tMzUwcHggeyBtaW4td2lkdGg6IDM1MHB4ICFpbXBvcnRhbnQ7IH0KCi53LW1heC0zNTBweCB7IG1heC13aWR0aDogMzUwcHggIWltcG9ydGFudDsgfQoKLnctNDAwcHggeyB3aWR0aDogNDAwcHggIWltcG9ydGFudDsgfQoKLnctbWluLTQwMHB4IHsgbWluLXdpZHRoOiA0MDBweCAhaW1wb3J0YW50OyB9Cgoudy1tYXgtNDAwcHggeyBtYXgtd2lkdGg6IDQwMHB4ICFpbXBvcnRhbnQ7IH0KCi53LTU1MHB4IHsgd2lkdGg6IDU1MHB4ICFpbXBvcnRhbnQ7IH0KCi53LW1pbi01NTBweCB7IG1pbi13aWR0aDogNTUwcHggIWltcG9ydGFudDsgfQoKLnctbWF4LTU1MHB4IHsgbWF4LXdpZHRoOiA1NTBweCAhaW1wb3J0YW50OyB9Cgoudy1tYXgtMTAwLCAud2lkZS14cy1maXgsIC53aWRlLXNtLWZpeCwgLndpZGUtbWQtZml4LCAud2lkZS1sZy1maXggeyBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgfQoKLnctbWluLTEwMCB7IG1pbi13aWR0aDogMTAwJSAhaW1wb3J0YW50OyB9Cgoudy1tYXgtYXV0byB7IG1heC13aWR0aDogaW5oZXJpdCAhaW1wb3J0YW50OyB9Cgoudy1taW4tYXV0byB7IG1pbi13aWR0aDogYXV0byAhaW1wb3J0YW50OyB9Cgoudy0xNSB7IHdpZHRoOiAxNSUgIWltcG9ydGFudDsgfQoKLnctMjAgeyB3aWR0aDogMjAlICFpbXBvcnRhbnQ7IH0KCi53LTMwIHsgd2lkdGg6IDMwJSAhaW1wb3J0YW50OyB9Cgoudy0zNSB7IHdpZHRoOiAzNSUgIWltcG9ydGFudDsgfQoKLnctNDAgeyB3aWR0aDogNDAlICFpbXBvcnRhbnQ7IH0KCi53LTQ1IHsgd2lkdGg6IDQ1JSAhaW1wb3J0YW50OyB9Cgoudy01NSB7IHdpZHRoOiA1NSUgIWltcG9ydGFudDsgfQoKLnctNjAgeyB3aWR0aDogNjAlICFpbXBvcnRhbnQ7IH0KCi53LTY1IHsgd2lkdGg6IDY1JSAhaW1wb3J0YW50OyB9Cgoudy03MCB7IHdpZHRoOiA3MCUgIWltcG9ydGFudDsgfQoKLnctODAgeyB3aWR0aDogODAlICFpbXBvcnRhbnQ7IH0KCi53LTg1IHsgd2lkdGg6IDg1JSAhaW1wb3J0YW50OyB9Cgoudy05MCB7IHdpZHRoOiA5MCUgIWltcG9ydGFudDsgfQoKLnctOTUgeyB3aWR0aDogOTUlICFpbXBvcnRhbnQ7IH0KCkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgeyAud2lkZS14cyB7IG1heC13aWR0aDogNTIwcHggIWltcG9ydGFudDsgfQogIC53aWRlLXhzLWZpeCB7IHdpZHRoOiA1MjBweCAhaW1wb3J0YW50OyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgeyAud2lkZS1zbSB7IG1heC13aWR0aDogNzIwcHggIWltcG9ydGFudDsgfQogIC53aWRlLXNtLWZpeCB7IHdpZHRoOiA3MjBweCAhaW1wb3J0YW50OyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgeyAud2lkZS1tZCB7IG1heC13aWR0aDogOTYwcHggIWltcG9ydGFudDsgfQogIC53aWRlLW1kLWZpeCB7IHdpZHRoOiA5NjBweCAhaW1wb3J0YW50OyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsgLndpZGUtbGcgeyBtYXgtd2lkdGg6IDExNDBweCAhaW1wb3J0YW50OyB9CiAgLndpZGUtbGctZml4IHsgd2lkdGg6IDExNDBweCAhaW1wb3J0YW50OyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjgwcHgpIHsgLndpZGUteGwgeyBtYXgtd2lkdGg6IDEyNDBweCAhaW1wb3J0YW50OyB9CiAgLndpZGUteGwtZml4IHsgd2lkdGg6IDEyNDBweCAhaW1wb3J0YW50OyB9IH0KCi53aWRlLXhzLWZpeCB7IHdpZHRoOiA1MjBweCAhaW1wb3J0YW50OyB9Cgoud2lkZS1zbS1maXggeyB3aWR0aDogNzIwcHggIWltcG9ydGFudDsgfQoKLndpZGUtbWQtZml4IHsgd2lkdGg6IDk2MHB4ICFpbXBvcnRhbnQ7IH0KCi53aWRlLWxnLWZpeCB7IHdpZHRoOiAxMTQwcHggIWltcG9ydGFudDsgfQoKLndpZGUteGwtZml4IHsgd2lkdGg6IDEyNDBweCAhaW1wb3J0YW50OyB9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSBhbmQgKG1heC13aWR0aDogMTY2MHB4KSB7IC53aWRlLWZpdCB7IG1heC13aWR0aDogMTE0MHB4OyB9IH0KCi5oLTEwMHB4IHsgaGVpZ2h0OiAxMDBweCAhaW1wb3J0YW50OyB9CgouaC1taW4tMTAwcHggeyBtaW4taGVpZ2h0OiAxMDBweCAhaW1wb3J0YW50OyB9CgouaC1tYXgtMTAwcHggeyBtYXgtaGVpZ2h0OiAxMDBweCAhaW1wb3J0YW50OyB9CgouaC0xNTBweCB7IGhlaWdodDogMTUwcHggIWltcG9ydGFudDsgfQoKLmgtbWluLTE1MHB4IHsgbWluLWhlaWdodDogMTUwcHggIWltcG9ydGFudDsgfQoKLmgtbWF4LTE1MHB4IHsgbWF4LWhlaWdodDogMTUwcHggIWltcG9ydGFudDsgfQoKLmgtMTc1cHggeyBoZWlnaHQ6IDE3NXB4ICFpbXBvcnRhbnQ7IH0KCi5oLW1pbi0xNzVweCB7IG1pbi1oZWlnaHQ6IDE3NXB4ICFpbXBvcnRhbnQ7IH0KCi5oLW1heC0xNzVweCB7IG1heC1oZWlnaHQ6IDE3NXB4ICFpbXBvcnRhbnQ7IH0KCi5oLTIwMHB4IHsgaGVpZ2h0OiAyMDBweCAhaW1wb3J0YW50OyB9CgouaC1taW4tMjAwcHggeyBtaW4taGVpZ2h0OiAyMDBweCAhaW1wb3J0YW50OyB9CgouaC1tYXgtMjAwcHggeyBtYXgtaGVpZ2h0OiAyMDBweCAhaW1wb3J0YW50OyB9CgouaC0yMjVweCB7IGhlaWdodDogMjI1cHggIWltcG9ydGFudDsgfQoKLmgtbWluLTIyNXB4IHsgbWluLWhlaWdodDogMjI1cHggIWltcG9ydGFudDsgfQoKLmgtbWF4LTIyNXB4IHsgbWF4LWhlaWdodDogMjI1cHggIWltcG9ydGFudDsgfQoKLmgtMjUwcHggeyBoZWlnaHQ6IDI1MHB4ICFpbXBvcnRhbnQ7IH0KCi5oLW1pbi0yNTBweCB7IG1pbi1oZWlnaHQ6IDI1MHB4ICFpbXBvcnRhbnQ7IH0KCi5oLW1heC0yNTBweCB7IG1heC1oZWlnaHQ6IDI1MHB4ICFpbXBvcnRhbnQ7IH0KCi5oLTI3NXB4IHsgaGVpZ2h0OiAyNzVweCAhaW1wb3J0YW50OyB9CgouaC1taW4tMjc1cHggeyBtaW4taGVpZ2h0OiAyNzVweCAhaW1wb3J0YW50OyB9CgouaC1tYXgtMjc1cHggeyBtYXgtaGVpZ2h0OiAyNzVweCAhaW1wb3J0YW50OyB9CgouaC0zMDBweCB7IGhlaWdodDogMzAwcHggIWltcG9ydGFudDsgfQoKLmgtbWluLTMwMHB4IHsgbWluLWhlaWdodDogMzAwcHggIWltcG9ydGFudDsgfQoKLmgtbWF4LTMwMHB4IHsgbWF4LWhlaWdodDogMzAwcHggIWltcG9ydGFudDsgfQoKLmgtMzI1cHggeyBoZWlnaHQ6IDMyNXB4ICFpbXBvcnRhbnQ7IH0KCi5oLW1pbi0zMjVweCB7IG1pbi1oZWlnaHQ6IDMyNXB4ICFpbXBvcnRhbnQ7IH0KCi5oLW1heC0zMjVweCB7IG1heC1oZWlnaHQ6IDMyNXB4ICFpbXBvcnRhbnQ7IH0KCi5oLTM1MHB4IHsgaGVpZ2h0OiAzNTBweCAhaW1wb3J0YW50OyB9CgouaC1taW4tMzUwcHggeyBtaW4taGVpZ2h0OiAzNTBweCAhaW1wb3J0YW50OyB9CgouaC1tYXgtMzUwcHggeyBtYXgtaGVpZ2h0OiAzNTBweCAhaW1wb3J0YW50OyB9CgouaC0zNzVweCB7IGhlaWdodDogMzc1cHggIWltcG9ydGFudDsgfQoKLmgtbWluLTM3NXB4IHsgbWluLWhlaWdodDogMzc1cHggIWltcG9ydGFudDsgfQoKLmgtbWF4LTM3NXB4IHsgbWF4LWhlaWdodDogMzc1cHggIWltcG9ydGFudDsgfQoKLmgtNDAwcHggeyBoZWlnaHQ6IDQwMHB4ICFpbXBvcnRhbnQ7IH0KCi5oLW1pbi00MDBweCB7IG1pbi1oZWlnaHQ6IDQwMHB4ICFpbXBvcnRhbnQ7IH0KCi5oLW1heC00MDBweCB7IG1heC1oZWlnaHQ6IDQwMHB4ICFpbXBvcnRhbnQ7IH0KCi5oLTQyNXB4IHsgaGVpZ2h0OiA0MjVweCAhaW1wb3J0YW50OyB9CgouaC1taW4tNDI1cHggeyBtaW4taGVpZ2h0OiA0MjVweCAhaW1wb3J0YW50OyB9CgouaC1tYXgtNDI1cHggeyBtYXgtaGVpZ2h0OiA0MjVweCAhaW1wb3J0YW50OyB9CgouaC00NTBweCB7IGhlaWdodDogNDUwcHggIWltcG9ydGFudDsgfQoKLmgtbWluLTQ1MHB4IHsgbWluLWhlaWdodDogNDUwcHggIWltcG9ydGFudDsgfQoKLmgtbWF4LTQ1MHB4IHsgbWF4LWhlaWdodDogNDUwcHggIWltcG9ydGFudDsgfQoKLmgtNDc1cHggeyBoZWlnaHQ6IDQ3NXB4ICFpbXBvcnRhbnQ7IH0KCi5oLW1pbi00NzVweCB7IG1pbi1oZWlnaHQ6IDQ3NXB4ICFpbXBvcnRhbnQ7IH0KCi5oLW1heC00NzVweCB7IG1heC1oZWlnaHQ6IDQ3NXB4ICFpbXBvcnRhbnQ7IH0KCi5oLTUwMHB4IHsgaGVpZ2h0OiA1MDBweCAhaW1wb3J0YW50OyB9CgouaC1taW4tNTAwcHggeyBtaW4taGVpZ2h0OiA1MDBweCAhaW1wb3J0YW50OyB9CgouaC1tYXgtNTAwcHggeyBtYXgtaGVpZ2h0OiA1MDBweCAhaW1wb3J0YW50OyB9CgouYWJzb2x1dGUtdG9wLWxlZnQgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgbGVmdDogMDsgfQoKLmFic29sdXRlLXRvcC1yaWdodCB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyByaWdodDogMDsgfQoKLmFic29sdXRlLWJvdHRvbS1sZWZ0IHsgcG9zaXRpb246IGFic29sdXRlOyBib3R0b206IDA7IGxlZnQ6IDA7IH0KCi5hYnNvbHV0ZS1ib3R0b20tcmlnaHQgeyBwb3NpdGlvbjogYWJzb2x1dGU7IGJvdHRvbTogMDsgcmlnaHQ6IDA7IH0KCi5zaHJpbmstMCB7IGZsZXgtc2hyaW5rOiAwOyB9CgouYmFkZ2UgeyBwb3NpdGlvbjogcmVsYXRpdmU7IGJvcmRlcjogMXB4IHNvbGlkIGN1cnJlbnRDb2xvcjsgbGluZS1oZWlnaHQ6IDEuMTI1cmVtOyBmb250LWZhbWlseTogUm9ib3RvLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMC4wMWVtOyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyBkaXNwbGF5OiBpbmxpbmUtZmxleDsgfQoKLmJhZGdlIC5pY29uICsgc3BhbiwgLmJhZGdlIHNwYW4gKyAuaWNvbiB7IHBhZGRpbmctbGVmdDogNHB4OyB9CgouYmFkZ2Utc20geyBwYWRkaW5nOiAwLjMxMjVyZW0gMC43NXJlbTsgZm9udC1zaXplOiAwLjc1cmVtOyB9CgouYmFkZ2Utc20uYmFkZ2UtcGlsbCB7IHBhZGRpbmc6IDAuMzEyNXJlbSAwLjg3NXJlbTsgfQoKLmJhZGdlLW1kIHsgcGFkZGluZzogMC40N3JlbSAxcmVtOyBmb250LXNpemU6IDAuODEyNXJlbSAhaW1wb3J0YW50OyB9CgouYmFkZ2UtbGcgeyBwYWRkaW5nOiAwLjc1cmVtIDEuMjVyZW07IGZvbnQtc2l6ZTogMC45M3JlbSAhaW1wb3J0YW50OyB9CgouYmFkZ2UteGwgeyBwYWRkaW5nOiAwLjg3NXJlbSAxLjVyZW07IGZvbnQtc2l6ZTogMS4xMjVyZW0gIWltcG9ydGFudDsgfQoKLmJhZGdlLWxpZ2h0IHsgY29sb3I6ICMzNjRhNjM7IH0KCi5iYWRnZS1saWdodGVyIHsgY29sb3I6ICM1MjY0ODQ7IH0KCi5iYWRnZSAuaWNvbiB7IGZvbnQtc2l6ZTogMXJlbTsgfQoKLmJhZGdlLXByaW1hcnkgeyBib3JkZXItY29sb3I6ICMwOTcxZmU7IH0KCi5iYWRnZS1zZWNvbmRhcnkgeyBib3JkZXItY29sb3I6ICMzNjRhNjM7IH0KCi5iYWRnZS1zdWNjZXNzIHsgYm9yZGVyLWNvbG9yOiAjMWVlMGFjOyB9CgouYmFkZ2UtaW5mbyB7IGJvcmRlci1jb2xvcjogIzA5YzJkZTsgfQoKLmJhZGdlLXdhcm5pbmcgeyBib3JkZXItY29sb3I6ICNmNGJkMGU7IH0KCi5iYWRnZS1kYW5nZXIgeyBib3JkZXItY29sb3I6ICNlODUzNDc7IH0KCi5iYWRnZS1kYXJrIHsgYm9yZGVyLWNvbG9yOiAjMWMyYjQ2OyB9CgouYmFkZ2UtZ3JheSB7IGJvcmRlci1jb2xvcjogIzgwOTFhNzsgfQoKLmJhZGdlLWxpZ2h0IHsgYm9yZGVyLWNvbG9yOiAjZTVlOWYyOyB9CgouYmFkZ2UtbGlnaHRlciB7IGJvcmRlci1jb2xvcjogI2Y1ZjZmYTsgfQoKLmJhZGdlLW91dGxpbmUtcHJpbWFyeSB7IGNvbG9yOiAjMDk3MWZlOyBib3JkZXItY29sb3I6ICM2YmFhZmU7IH0KCi5iYWRnZS1vdXRsaW5lLXNlY29uZGFyeSB7IGNvbG9yOiAjMzY0YTYzOyBib3JkZXItY29sb3I6ICM4NjkyYTE7IH0KCi5iYWRnZS1vdXRsaW5lLXN1Y2Nlc3MgeyBjb2xvcjogIzFlZTBhYzsgYm9yZGVyLWNvbG9yOiAjNzhlY2NkOyB9CgouYmFkZ2Utb3V0bGluZS1pbmZvIHsgY29sb3I6ICMwOWMyZGU7IGJvcmRlci1jb2xvcjogIzZiZGFlYjsgfQoKLmJhZGdlLW91dGxpbmUtd2FybmluZyB7IGNvbG9yOiAjZjRiZDBlOyBib3JkZXItY29sb3I6ICNmOGQ3NmU7IH0KCi5iYWRnZS1vdXRsaW5lLWRhbmdlciB7IGNvbG9yOiAjZTg1MzQ3OyBib3JkZXItY29sb3I6ICNmMTk4OTE7IH0KCi5iYWRnZS1vdXRsaW5lLWRhcmsgeyBjb2xvcjogIzFjMmI0NjsgYm9yZGVyLWNvbG9yOiAjNzc4MDkwOyB9CgouYmFkZ2Utb3V0bGluZS1ncmF5IHsgY29sb3I6ICM4MDkxYTc7IGJvcmRlci1jb2xvcjogI2IzYmRjYTsgfQoKLmJhZGdlLW91dGxpbmUtbGlnaHQgeyBjb2xvcjogI2I3YzJkMDsgYm9yZGVyLWNvbG9yOiAjZDRkYWUzOyB9CgouYmFkZ2Utb3V0bGluZS1saWdodGVyIHsgY29sb3I6ICNlNWU5ZjI7IGJvcmRlci1jb2xvcjogI2VmZjJmNzsgfQoKLmJhZGdlLWRpbS5iYWRnZS1wcmltYXJ5IHsgY29sb3I6ICMwOTcxZmU7IGJhY2tncm91bmQtY29sb3I6ICNlNGVmZmY7IGJvcmRlci1jb2xvcjogI2U0ZWZmZjsgfQoKLmJhZGdlLWRpbS5iYWRnZS1vdXRsaW5lLXByaW1hcnkgeyBjb2xvcjogIzA5NzFmZTsgYmFja2dyb3VuZC1jb2xvcjogI2U0ZWZmZjsgYm9yZGVyLWNvbG9yOiAjOWRjNmZmOyB9CgouYmFkZ2UtZGltLmJhZGdlLXNlY29uZGFyeSB7IGNvbG9yOiAjMzY0YTYzOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZTllYmVlOyBib3JkZXItY29sb3I6ICNlOWViZWU7IH0KCi5iYWRnZS1kaW0uYmFkZ2Utb3V0bGluZS1zZWNvbmRhcnkgeyBjb2xvcjogIzM2NGE2MzsgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWJlZTsgYm9yZGVyLWNvbG9yOiAjYWZiN2MxOyB9CgouYmFkZ2UtZGltLmJhZGdlLXN1Y2Nlc3MgeyBjb2xvcjogIzFlZTBhYzsgYmFja2dyb3VuZC1jb2xvcjogI2U2ZmNmNjsgYm9yZGVyLWNvbG9yOiAjZTZmY2Y2OyB9CgouYmFkZ2UtZGltLmJhZGdlLW91dGxpbmUtc3VjY2VzcyB7IGNvbG9yOiAjMWVlMGFjOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZTZmY2Y2OyBib3JkZXItY29sb3I6ICNhNWYzZGU7IH0KCi5iYWRnZS1kaW0uYmFkZ2UtaW5mbyB7IGNvbG9yOiAjMDljMmRlOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZTRmOGZiOyBib3JkZXItY29sb3I6ICNlNGY4ZmI7IH0KCi5iYWRnZS1kaW0uYmFkZ2Utb3V0bGluZS1pbmZvIHsgY29sb3I6ICMwOWMyZGU7IGJhY2tncm91bmQtY29sb3I6ICNlNGY4ZmI7IGJvcmRlci1jb2xvcjogIzlkZTdmMjsgfQoKLmJhZGdlLWRpbS5iYWRnZS13YXJuaW5nIHsgY29sb3I6ICNmNGJkMGU7IGJhY2tncm91bmQtY29sb3I6ICNmZWY4ZTQ7IGJvcmRlci1jb2xvcjogI2ZlZjhlNDsgfQoKLmJhZGdlLWRpbS5iYWRnZS1vdXRsaW5lLXdhcm5pbmcgeyBjb2xvcjogI2Y0YmQwZTsgYmFja2dyb3VuZC1jb2xvcjogI2ZlZjhlNDsgYm9yZGVyLWNvbG9yOiAjZmJlNTlmOyB9CgouYmFkZ2UtZGltLmJhZGdlLWRhbmdlciB7IGNvbG9yOiAjZTg1MzQ3OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmNlY2ViOyBib3JkZXItY29sb3I6ICNmY2VjZWI7IH0KCi5iYWRnZS1kaW0uYmFkZ2Utb3V0bGluZS1kYW5nZXIgeyBjb2xvcjogI2U4NTM0NzsgYmFja2dyb3VuZC1jb2xvcjogI2ZjZWNlYjsgYm9yZGVyLWNvbG9yOiAjZjZiYWI1OyB9CgouYmFkZ2UtZGltLmJhZGdlLWRhcmsgeyBjb2xvcjogIzFjMmI0NjsgYmFja2dyb3VuZC1jb2xvcjogI2U2ZThlYjsgYm9yZGVyLWNvbG9yOiAjZTZlOGViOyB9CgouYmFkZ2UtZGltLmJhZGdlLW91dGxpbmUtZGFyayB7IGNvbG9yOiAjMWMyYjQ2OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZTZlOGViOyBib3JkZXItY29sb3I6ICNhNGFhYjU7IH0KCi5iYWRnZS1kaW0uYmFkZ2UtZ3JheSB7IGNvbG9yOiAjODA5MWE3OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjFmM2Y1OyBib3JkZXItY29sb3I6ICNmMWYzZjU7IH0KCi5iYWRnZS1kaW0uYmFkZ2Utb3V0bGluZS1ncmF5IHsgY29sb3I6ICM4MDkxYTc7IGJhY2tncm91bmQtY29sb3I6ICNmMWYzZjU7IGJvcmRlci1jb2xvcjogI2NjZDNkYzsgfQoKLmJhZGdlLWRpbS5iYWRnZS1saWdodCB7IGNvbG9yOiAjYjdjMmQwOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmOGZhOyBib3JkZXItY29sb3I6ICNmN2Y4ZmE7IH0KCi5iYWRnZS1kaW0uYmFkZ2Utb3V0bGluZS1saWdodCB7IGNvbG9yOiAjYjdjMmQwOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmOGZhOyBib3JkZXItY29sb3I6ICNlMmU3ZWM7IH0KCi5iYWRnZS1kaW0uYmFkZ2UtbGlnaHRlciB7IGNvbG9yOiAjZTVlOWYyOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmNmZGZlOyBib3JkZXItY29sb3I6ICNmY2ZkZmU7IH0KCi5iYWRnZS1kaW0uYmFkZ2Utb3V0bGluZS1saWdodGVyIHsgY29sb3I6ICNlNWU5ZjI7IGJhY2tncm91bmQtY29sb3I6ICNmY2ZkZmU7IGJvcmRlci1jb2xvcjogI2Y1ZjZmYTsgfQoKLmJhZGdlLWRvdCB7IGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgYm9yZGVyOiBub25lOyBwYWRkaW5nLWxlZnQ6IDEycHg7IHBhZGRpbmctcmlnaHQ6IDA7IGZvbnQtc2l6ZTogMTJweDsgfQoKLmJhZGdlLWRvdDpiZWZvcmUgeyBwb3NpdGlvbjogYWJzb2x1dGU7IGNvbnRlbnQ6ICIiOyBsZWZ0OiAwOyB0b3A6IDUwJTsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGhlaWdodDogNnB4OyB3aWR0aDogNnB4OyBtYXJnaW4tdG9wOiAtMXB4OyBib3JkZXItcmFkaXVzOiA1MCU7IGJhY2tncm91bmQ6IGN1cnJlbnRDb2xvcjsgfQoKLmJhZGdlLWRvdC5iYWRnZS1zbSwgLmJhZGdlLWRvdC5iYWRnZS1tZCB7IHBhZGRpbmctbGVmdDogMTZweDsgfQoKLmJhZGdlLWRvdC5iYWRnZS1zbTpiZWZvcmUsIC5iYWRnZS1kb3QuYmFkZ2UtbWQ6YmVmb3JlIHsgaGVpZ2h0OiA4cHg7IHdpZHRoOiA4cHg7IG1hcmdpbi10b3A6IDA7IH0KCi5iYWRnZS1kb3QuYmFkZ2UtbGcsIC5iYWRnZS1kb3QuYmFkZ2UteGwgeyBwYWRkaW5nLWxlZnQ6IDI0cHg7IH0KCi5iYWRnZS1kb3QuYmFkZ2UtbGc6YmVmb3JlLCAuYmFkZ2UtZG90LmJhZGdlLXhsOmJlZm9yZSB7IGhlaWdodDogMTJweDsgd2lkdGg6IDEycHg7IG1hcmdpbi10b3A6IDA7IH0KCi5iYWRnZS1kb3QuYmFkZ2UtcHJpbWFyeSB7IGNvbG9yOiAjMDk3MWZlOyB9CgouYmFkZ2UtZG90LmJhZGdlLXNlY29uZGFyeSB7IGNvbG9yOiAjMzY0YTYzOyB9CgouYmFkZ2UtZG90LmJhZGdlLXN1Y2Nlc3MgeyBjb2xvcjogIzFlZTBhYzsgfQoKLmJhZGdlLWRvdC5iYWRnZS1pbmZvIHsgY29sb3I6ICMwOWMyZGU7IH0KCi5iYWRnZS1kb3QuYmFkZ2Utd2FybmluZyB7IGNvbG9yOiAjZjRiZDBlOyB9CgouYmFkZ2UtZG90LmJhZGdlLWRhbmdlciB7IGNvbG9yOiAjZTg1MzQ3OyB9CgouYmFkZ2UtZG90LmJhZGdlLWRhcmsgeyBjb2xvcjogIzFjMmI0NjsgfQoKLmJhZGdlLWRvdC5iYWRnZS1ncmF5IHsgY29sb3I6ICM4MDkxYTc7IH0KCi5iYWRnZS1kb3QuYmFkZ2UtbGlnaHQgeyBjb2xvcjogI2I3YzJkMDsgfQoKLmJhZGdlLWRvdC5iYWRnZS1saWdodGVyIHsgY29sb3I6ICNlNWU5ZjI7IH0KCkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgeyAuYmFkZ2UtZG90LXNtIHsgd2lkdGg6IDA7IG92ZXJmbG93OiBoaWRkZW47IH0gfQoKQG1lZGlhIChtYXgtd2lkdGg6IDQxM3B4KSB7IC5iYWRnZS1kb3QtbWIgeyB3aWR0aDogMDsgb3ZlcmZsb3c6IGhpZGRlbjsgfSB9CgpAbWVkaWEgKG1heC13aWR0aDogMzY5cHgpIHsgLmJhZGdlLWRvdC14cyB7IHdpZHRoOiAwOyBvdmVyZmxvdzogaGlkZGVuOyB9IH0KCi5hbGVydDpsYXN0LWNoaWxkIHsgbWFyZ2luLWJvdHRvbTogMDsgfQoKLmFsZXJ0LWxpbmsgeyBib3gtc2hhZG93OiAwIDFweCAwIGN1cnJlbnRDb2xvcjsgfQoKLmFsZXJ0LWxpbms6aG92ZXIgeyBib3gtc2hhZG93OiBub25lOyB9CgouYWxlcnQgaDUsIC5hbGVydCBoNiwgLmFsZXJ0IC50aXRsZSB7IGZvbnQtc2l6ZTogMS4wNXJlbTsgfQoKLmFsZXJ0LmFsZXJ0LWljb24geyBwYWRkaW5nLWxlZnQ6IDMuMjVyZW07IH0KCi5hbGVydC5hbGVydC1pY29uID4gLmljb24geyBwb3NpdGlvbjogYWJzb2x1dGU7IGZvbnQtc2l6ZTogMS4yNXJlbTsgbGluZS1oZWlnaHQ6IDE7IHdpZHRoOiAycmVtOyB0b3A6IDFyZW07IGxlZnQ6IDEuMjVyZW07IG1hcmdpbi1sZWZ0OiAtMXB4OyB9CgouYWxlcnQtZGlzbWlzc2libGUgLmNsb3NlIHsgdG9wOiA1MCU7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsgdHJhbnNpdGlvbjogLjNzIGVhc2U7IG1hcmdpbi10b3A6IC0xcHg7IH0KCi5hbGVydC1kaXNtaXNzaWJsZSAuY2xvc2U6Zm9jdXMgeyBvdXRsaW5lOiBub25lOyB9CgouYWxlcnQtZGlzbWlzc2libGUgLmNsb3NlOmhvdmVyIHsgY29sb3I6IGN1cnJlbnRDb2xvcjsgfQoKLmFsZXJ0LWRpc21pc3NpYmxlIC5jbG9zZTphZnRlciB7IGZvbnQtZmFtaWx5OiAiTmlvaWNvbiI7IGNvbnRlbnQ6ICLuqIYiOyBmb250LXNpemU6IDEuMXJlbTsgfQoKLmFsZXJ0LWxpZ2h0LCAuYWxlcnQtbGlnaHRlciwgLmFsZXJ0LWdyYXkgeyBib3JkZXItY29sb3I6ICNlNWU5ZjI7IGNvbG9yOiAjNTI2NDg0OyB9CgouYWxlcnQtbGlnaHQgLmFsZXJ0LWxpbmssIC5hbGVydC1saWdodGVyIC5hbGVydC1saW5rLCAuYWxlcnQtZ3JheSAuYWxlcnQtbGluayB7IGNvbG9yOiAjNTI2NDg0OyB9CgouYWxlcnQtYWx0IHsgcG9zaXRpb246IHJlbGF0aXZlOyBwYWRkaW5nOiAuODc1cmVtOyBib3JkZXItcmFkaXVzOiAxMnB4OyB9CgouYWxlcnQtYWx0LmFsZXJ0LWljb24geyBwYWRkaW5nLWxlZnQ6IDRyZW07IH0KCi5hbGVydC1hbHQuYWxlcnQtaWNvbiA+IC5pY29uIHsgcG9zaXRpb246IGFic29sdXRlOyBmb250LXNpemU6IDJyZW07IGxpbmUtaGVpZ2h0OiAxOyB3aWR0aDogNHJlbTsgdG9wOiA1MCU7IGxlZnQ6IDA7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsgdGV4dC1hbGlnbjogY2VudGVyOyBvcGFjaXR5OiAwLjU7IH0KCmEuYWxlcnQ6aG92ZXIgeyBjb2xvcjogY3VycmVudENvbG9yOyB9CgouYWxlcnQtZmlsbC5hbGVydC1wcmltYXJ5IHsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQ6ICMwOTcxZmU7IH0KCi5hbGVydC1maWxsLmFsZXJ0LXNlY29uZGFyeSB7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kOiAjMzY0YTYzOyB9CgouYWxlcnQtZmlsbC5hbGVydC1zdWNjZXNzIHsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQ6ICMxZWUwYWM7IH0KCi5hbGVydC1maWxsLmFsZXJ0LWluZm8geyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZDogIzA5YzJkZTsgfQoKLmFsZXJ0LWZpbGwuYWxlcnQtd2FybmluZyB7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kOiAjZjRiZDBlOyB9CgouYWxlcnQtZmlsbC5hbGVydC1kYW5nZXIgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZDogI2U4NTM0NzsgfQoKLmFsZXJ0LWZpbGwuYWxlcnQtZGFyayB7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kOiAjMWMyYjQ2OyB9CgouYWxlcnQtZmlsbC5hbGVydC1ncmF5IHsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQ6ICM4MDkxYTc7IH0KCi5hbGVydC1maWxsLmFsZXJ0LWxpZ2h0IHsgY29sb3I6ICMxMDE5MjQ7IGJhY2tncm91bmQ6ICNlNWU5ZjI7IH0KCi5hbGVydC1maWxsLmFsZXJ0LWxpZ2h0ZXIgeyBjb2xvcjogIzEwMTkyNDsgYmFja2dyb3VuZDogI2ViZWVmMjsgfQoKLmFsZXJ0LWZpbGwgeyBib3JkZXItd2lkdGg6IDA7IH0KCi5hbGVydC1maWxsIC5hbGVydC1saW5rLCAuYWxlcnQtZmlsbCAuaWNvbiwgLmFsZXJ0LWZpbGwgaDQsIC5hbGVydC1maWxsIGg1LCAuYWxlcnQtZmlsbCBoNiB7IGNvbG9yOiBjdXJyZW50Q29sb3I7IH0KCi5hbGVydC1maWxsLmFsZXJ0LWxpZ2h0IHsgY29sb3I6ICMzNjRhNjM7IH0KCi5hbGVydC1maWxsLmFsZXJ0LWxpZ2h0ZXIgeyBjb2xvcjogIzUyNjQ4NDsgfQoKLmFsZXJ0LXBybyB7IGJveC1zaGFkb3c6IDAgNHB4IDE1cHggMCByZ2JhKDMxLCA0MywgNTgsIDAuMSk7IGJvcmRlcjogbm9uZTsgYm9yZGVyLWxlZnQ6IDRweCBzb2xpZCB0cmFuc3BhcmVudDsgY29sb3I6ICM1MjY0ODQ7IGxpbmUtaGVpZ2h0OiAxLjU7IGJhY2tncm91bmQ6ICNmZmY7IH0KCi5hbGVydC1wcm8ubm8tc2hhZG93IHsgYm94LXNoYWRvdzogbm9uZTsgfQoKLmFsZXJ0LXByby5uby1ib3JkZXIgeyBib3JkZXItbGVmdDogMDsgfQoKLmFsZXJ0LXByby5hbGVydC1pY29uIHsgcGFkZGluZy1sZWZ0OiA0cmVtOyB9CgouYWxlcnQtcHJvLmFsZXJ0LWljb24gPiAuaWNvbiB7IGZvbnQtc2l6ZTogMS43NXJlbTsgdG9wOiA1MCU7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsgfQoKLmFsZXJ0LXByby5hbGVydC1wcmltYXJ5IHsgYm9yZGVyLWNvbG9yOiAjMDk3MWZlOyB9CgouYWxlcnQtcHJvLmFsZXJ0LXByaW1hcnkgPiAuaWNvbiB7IGNvbG9yOiAjMDk3MWZlOyB9CgouYWxlcnQtcHJvLmFsZXJ0LXNlY29uZGFyeSB7IGJvcmRlci1jb2xvcjogIzM2NGE2MzsgfQoKLmFsZXJ0LXByby5hbGVydC1zZWNvbmRhcnkgPiAuaWNvbiB7IGNvbG9yOiAjMzY0YTYzOyB9CgouYWxlcnQtcHJvLmFsZXJ0LXN1Y2Nlc3MgeyBib3JkZXItY29sb3I6ICMxZWUwYWM7IH0KCi5hbGVydC1wcm8uYWxlcnQtc3VjY2VzcyA+IC5pY29uIHsgY29sb3I6ICMxZWUwYWM7IH0KCi5hbGVydC1wcm8uYWxlcnQtaW5mbyB7IGJvcmRlci1jb2xvcjogIzA5YzJkZTsgfQoKLmFsZXJ0LXByby5hbGVydC1pbmZvID4gLmljb24geyBjb2xvcjogIzA5YzJkZTsgfQoKLmFsZXJ0LXByby5hbGVydC13YXJuaW5nIHsgYm9yZGVyLWNvbG9yOiAjZjRiZDBlOyB9CgouYWxlcnQtcHJvLmFsZXJ0LXdhcm5pbmcgPiAuaWNvbiB7IGNvbG9yOiAjZjRiZDBlOyB9CgouYWxlcnQtcHJvLmFsZXJ0LWRhbmdlciB7IGJvcmRlci1jb2xvcjogI2U4NTM0NzsgfQoKLmFsZXJ0LXByby5hbGVydC1kYW5nZXIgPiAuaWNvbiB7IGNvbG9yOiAjZTg1MzQ3OyB9CgouYWxlcnQtcHJvLmFsZXJ0LWRhcmsgeyBib3JkZXItY29sb3I6ICMxYzJiNDY7IH0KCi5hbGVydC1wcm8uYWxlcnQtZGFyayA+IC5pY29uIHsgY29sb3I6ICMxYzJiNDY7IH0KCi5hbGVydC1wcm8uYWxlcnQtZ3JheSB7IGJvcmRlci1jb2xvcjogIzgwOTFhNzsgfQoKLmFsZXJ0LXByby5hbGVydC1ncmF5ID4gLmljb24geyBjb2xvcjogIzgwOTFhNzsgfQoKLmFsZXJ0LXByby5hbGVydC1saWdodCB7IGJvcmRlci1jb2xvcjogI2I3YzJkMDsgfQoKLmFsZXJ0LXByby5hbGVydC1saWdodCA+IC5pY29uIHsgY29sb3I6ICNiN2MyZDA7IH0KCi5hbGVydC1wcm8uYWxlcnQtbGlnaHRlciB7IGJvcmRlci1jb2xvcjogI2I3YzJkMDsgfQoKLmFsZXJ0LXByby5hbGVydC1saWdodGVyID4gLmljb24geyBjb2xvcjogI2I3YzJkMDsgfQoKLmJyZWFkY3J1bWItaXRlbSB7IGZvbnQtc2l6ZTogMTFweDsgZm9udC13ZWlnaHQ6IDUwMDsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgbGV0dGVyLXNwYWNpbmc6IDAuMDVyZW07IH0KCi5icmVhZGNydW1iLWl0ZW0gYTpub3QoOmhvdmVyKSB7IGNvbG9yOiAjODA5NGFlOyB9CgouYnJlYWRjcnVtYi1waXBlIC5icmVhZGNydW1iLWl0ZW0gKyAuYnJlYWRjcnVtYi1pdGVtOjpiZWZvcmUgeyBjb250ZW50OiAnfCc7IH0KCi5icmVhZGNydW1iLWFycm93IC5icmVhZGNydW1iLWl0ZW0gKyAuYnJlYWRjcnVtYi1pdGVtOjpiZWZvcmUgeyBmb250LWZhbWlseTogIk5pb2ljb24iOyBjb250ZW50OiAi7qmtIjsgfQoKLmJyZWFkY3J1bWItaXRlbS5hY3RpdmU6bm90KDpvbmx5LWNoaWxkKSB7IGZvbnQtd2VpZ2h0OiA0MDA7IH0KCi5icmVhZGNydW1iLWFsdCAuYnJlYWRjcnVtYi1pdGVtIHsgdGV4dC10cmFuc2Zvcm06IHVuc2V0OyBsZXR0ZXItc3BhY2luZzogMDsgY29sb3I6ICM4MDk0YWU7IH0KCi5icmVhZGNydW1iLXhzIC5icmVhZGNydW1iLWl0ZW0gKyAuYnJlYWRjcnVtYi1pdGVtIHsgcGFkZGluZy1sZWZ0OiAwLjI1cmVtOyB9CgouYnJlYWRjcnVtYi14cyAuYnJlYWRjcnVtYi1pdGVtICsgLmJyZWFkY3J1bWItaXRlbTpiZWZvcmUgeyBwYWRkaW5nLXJpZ2h0OiAwLjI1cmVtOyBmb250LXNpemU6IDAuOGVtOyB9CgouYnJlYWRjcnVtYi1zbSAuYnJlYWRjcnVtYi1pdGVtIHsgZm9udC1zaXplOiAxM3B4OyB9CgoubGluayB7IGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBmb250LXNpemU6IDAuODVyZW07IGZvbnQtd2VpZ2h0OiA1MDA7IGZvbnQtZmFtaWx5OiBSb2JvdG8sIHNhbnMtc2VyaWY7IGxpbmUtaGVpZ2h0OiAxOyBib3JkZXI6IG5vbmU7IGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OyB0cmFuc2l0aW9uOiBhbGwgLjNzIGVhc2U7IHdoaXRlLXNwYWNlOiBub3dyYXA7IH0KCi5saW5rOmZvY3VzIHsgYm94LXNoYWRvdzogbm9uZTsgb3V0bGluZTogbm9uZTsgfQoKLmxpbmsgLmljb24geyBmb250LXNpemU6IDEuM2VtOyB9CgoubGluayBzcGFuLCAubGluayAuaWNvbiB7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgfQoKLmxpbmsgLmljb24tY2lyY2xlIHsgZGlzcGxheTogaW5saW5lLWZsZXg7IH0KCi5saW5rIC5pY29uICsgc3BhbiwgLmxpbmsgc3BhbiArIC5pY29uIHsgcGFkZGluZy1sZWZ0OiAxMHB4OyB9CgoubGluay1tZCB7IGZvbnQtc2l6ZTogMS4yNXJlbTsgfQoKLmxpbmstc20geyBmb250LXNpemU6IC43NXJlbTsgfQoKLmxpbmstZGltIHsgb3BhY2l0eTogLjc7IH0KCi5saW5rLWRpbTpob3ZlciB7IG9wYWNpdHk6IDE7IH0KCi5saW5rLWJsb2NrIHsgZGlzcGxheTogZmxleDsgfQoKLmxpbmstYmV0d2VlbiB7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgfQoKLmxpbmstcHJpbWFyeSB7IGNvbG9yOiAjMDk3MWZlICFpbXBvcnRhbnQ7IH0KCi5saW5rLW9uLXByaW1hcnk6aG92ZXIgeyBjb2xvcjogIzA5NzFmZSAhaW1wb3J0YW50OyB9CgoubGluay1zZWNvbmRhcnkgeyBjb2xvcjogIzM2NGE2MyAhaW1wb3J0YW50OyB9CgoubGluay1vbi1zZWNvbmRhcnk6aG92ZXIgeyBjb2xvcjogIzM2NGE2MyAhaW1wb3J0YW50OyB9CgoubGluay1zdWNjZXNzIHsgY29sb3I6ICMxZWUwYWMgIWltcG9ydGFudDsgfQoKLmxpbmstb24tc3VjY2Vzczpob3ZlciB7IGNvbG9yOiAjMWVlMGFjICFpbXBvcnRhbnQ7IH0KCi5saW5rLWluZm8geyBjb2xvcjogIzA5YzJkZSAhaW1wb3J0YW50OyB9CgoubGluay1vbi1pbmZvOmhvdmVyIHsgY29sb3I6ICMwOWMyZGUgIWltcG9ydGFudDsgfQoKLmxpbmstd2FybmluZyB7IGNvbG9yOiAjZjRiZDBlICFpbXBvcnRhbnQ7IH0KCi5saW5rLW9uLXdhcm5pbmc6aG92ZXIgeyBjb2xvcjogI2Y0YmQwZSAhaW1wb3J0YW50OyB9CgoubGluay1kYW5nZXIgeyBjb2xvcjogI2U4NTM0NyAhaW1wb3J0YW50OyB9CgoubGluay1vbi1kYW5nZXI6aG92ZXIgeyBjb2xvcjogI2U4NTM0NyAhaW1wb3J0YW50OyB9CgoubGluay1kYXJrIHsgY29sb3I6ICMxYzJiNDYgIWltcG9ydGFudDsgfQoKLmxpbmstb24tZGFyazpob3ZlciB7IGNvbG9yOiAjMWMyYjQ2ICFpbXBvcnRhbnQ7IH0KCi5saW5rLWdyYXkgeyBjb2xvcjogIzgwOTFhNyAhaW1wb3J0YW50OyB9CgoubGluay1vbi1ncmF5OmhvdmVyIHsgY29sb3I6ICM4MDkxYTcgIWltcG9ydGFudDsgfQoKLmxpbmstbGlnaHQgeyBjb2xvcjogIzgwOTRhZSAhaW1wb3J0YW50OyB9CgoubGluay1vbi1saWdodDpob3ZlciB7IGNvbG9yOiAjODA5NGFlICFpbXBvcnRhbnQ7IH0KCi5saW5rLWxpZ2h0ZXIgeyBjb2xvcjogI2I3YzJkMCAhaW1wb3J0YW50OyB9CgoubGluay1vbi1saWdodGVyOmhvdmVyIHsgY29sb3I6ICNiN2MyZDAgIWltcG9ydGFudDsgfQoKLmxpbmstdGV4dCB7IGNvbG9yOiAjNTI2NDg0ICFpbXBvcnRhbnQ7IH0KCi5saW5rLW9uLXRleHQ6aG92ZXIgeyBjb2xvcjogIzUyNjQ4NCAhaW1wb3J0YW50OyB9CgoubGluay1kYW5nZXI6aG92ZXIsIC5saW5rLXdhcm5pbmc6aG92ZXIsIC5saW5rLXN1Y2Nlc3M6aG92ZXIsIC5saW5rLWluZm86aG92ZXIgeyBjb2xvcjogIzUyNjQ4NCAhaW1wb3J0YW50OyB9CgouYnRuLCAuZHVhbC1saXN0Ym94IC5kdWFsLWxpc3Rib3hfX2J1dHRvbiB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgbGV0dGVyLXNwYWNpbmc6IDAuMDJlbTsgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IH0KCi5idG4teGwgeyBwYWRkaW5nOiAwLjY4NzVyZW0gMS41cmVtOyBmb250LXNpemU6IDAuOTM3NXJlbTsgbGluZS1oZWlnaHQ6IDEuMjVyZW07IGJvcmRlci1yYWRpdXM6IDVweDsgfQoKLmJ0bi14cyB7IHBhZGRpbmc6IDAuMTI1cmVtIDAuNXJlbTsgZm9udC1zaXplOiAwLjY4NzVyZW07IGxpbmUtaGVpZ2h0OiAxcmVtOyBib3JkZXItcmFkaXVzOiAzcHg7IH0KCi5idG4gLmljb24sIC5kdWFsLWxpc3Rib3ggLmR1YWwtbGlzdGJveF9fYnV0dG9uIC5pY29uIHsgZm9udC1zaXplOiAxLjRlbTsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IH0KCi5idG4gPiBzcGFuLCAuZHVhbC1saXN0Ym94IC5kdWFsLWxpc3Rib3hfX2J1dHRvbiA+IHNwYW4geyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHdoaXRlLXNwYWNlOiBub3dyYXA7IH0KCi5idG4gPiBzcGFuOm9ubHktY2hpbGQsIC5kdWFsLWxpc3Rib3ggLmR1YWwtbGlzdGJveF9fYnV0dG9uID4gc3Bhbjpvbmx5LWNoaWxkIHsgd2lkdGg6IDEwMCU7IH0KCi5idG4gLmljb24gKyBzcGFuLCAuZHVhbC1saXN0Ym94IC5kdWFsLWxpc3Rib3hfX2J1dHRvbiAuaWNvbiArIHNwYW4sIC5idG4gc3BhbiArIC5pY29uLCAuZHVhbC1saXN0Ym94IC5kdWFsLWxpc3Rib3hfX2J1dHRvbiBzcGFuICsgLmljb24geyBwYWRkaW5nLWxlZnQ6IDhweDsgfQoKLmJ0biAuZGQtaW5kYywgLmR1YWwtbGlzdGJveCAuZHVhbC1saXN0Ym94X19idXR0b24gLmRkLWluZGMgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLThweCk7IH0KCi5idG4gc3BhbiArIC5kZC1pbmRjLCAuZHVhbC1saXN0Ym94IC5kdWFsLWxpc3Rib3hfX2J1dHRvbiBzcGFuICsgLmRkLWluZGMgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoOHB4KTsgfQoKLmJ0bi1sZyAuaWNvbiArIHNwYW4sIC5idG4tZ3JvdXAtbGcgPiAuYnRuIC5pY29uICsgc3BhbiwgLmR1YWwtbGlzdGJveCAuYnRuLWdyb3VwLWxnID4gLmR1YWwtbGlzdGJveF9fYnV0dG9uIC5pY29uICsgc3BhbiwgLmJ0bi1sZyBzcGFuICsgLmljb24sIC5idG4tZ3JvdXAtbGcgPiAuYnRuIHNwYW4gKyAuaWNvbiwgLmR1YWwtbGlzdGJveCAuYnRuLWdyb3VwLWxnID4gLmR1YWwtbGlzdGJveF9fYnV0dG9uIHNwYW4gKyAuaWNvbiB7IHBhZGRpbmctbGVmdDogMTJweDsgfQoKLmJ0bi1yb3VuZCB7IGJvcmRlci1yYWRpdXM6IDIuMTI1cmVtOyB9CgouYnRuLWJsb2NrIHsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IH0KCi5idG4tdWNhcCwgLmJ0bi51Y2FwLCAuZHVhbC1saXN0Ym94IC51Y2FwLmR1YWwtbGlzdGJveF9fYnV0dG9uIHsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgZm9udC1zaXplOiAxMnB4OyBsZXR0ZXItc3BhY2luZzogMC4wNWVtOyB9CgouYnRuLWljb246bm90KFtjbGFzcyo9ImJ0bi1pY29uLWJyZWFrIl0pIHsgcGFkZGluZy1sZWZ0OiAwOyBwYWRkaW5nLXJpZ2h0OiAwOyB9CgouYnRuLWljb24gLmljb24geyB3aWR0aDogMi4xMjVyZW07IH0KCi5idG4taWNvbi5idG4teGwgLmljb24geyB3aWR0aDogMi42MjVyZW07IH0KCi5idG4taWNvbi5idG4tbGcgLmljb24sIC5idG4tZ3JvdXAtbGcgPiAuYnRuLWljb24uYnRuIC5pY29uLCAuZHVhbC1saXN0Ym94IC5idG4tZ3JvdXAtbGcgPiAuYnRuLWljb24uZHVhbC1saXN0Ym94X19idXR0b24gLmljb24geyB3aWR0aDogMi42MjVyZW07IH0KCi5idG4taWNvbi5idG4tc20gLmljb24sIC5idG4tZ3JvdXAtc20gPiAuYnRuLWljb24uYnRuIC5pY29uLCAuZHVhbC1saXN0Ym94IC5idG4tZ3JvdXAtc20gPiAuYnRuLWljb24uZHVhbC1saXN0Ym94X19idXR0b24gLmljb24geyB3aWR0aDogMS43NXJlbTsgfQoKLmJ0bi1pY29uLmJ0bi14cyAuaWNvbiB7IHdpZHRoOiAxLjI1cmVtOyBmb250LXNpemU6IDEuMWVtOyB9CgouYnRuLWljb24gLmRvdCB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAuMzVyZW07IHJpZ2h0OiAuMzVyZW07IHRyYW5zZm9ybTogdHJhbnNsYXRlKDUwJSwgLTUwJSk7IH0KCi5idG4taWNvbiAuYmFkZ2UgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogLjI1cmVtOyByaWdodDogLjI1cmVtOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZSg1MCUsIC01MCUpOyB9CgouYnRuLWljb24gLmJhZGdlLWNpcmNsZSB7IGJvcmRlci1yYWRpdXM6IDUwJTsgaGVpZ2h0OiAxLjEyNXJlbTsgd2lkdGg6IDEuMTI1cmVtOyBwYWRkaW5nOiAwOyBmb250LXdlaWdodDogNzAwOyBmb250LXNpemU6IDExcHg7IHRleHQtYWxpZ246IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IH0KCi5idG4tbXcgeyBtaW4td2lkdGg6IDEyMHB4OyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgfQoKLmJ0bi13cmFwIHsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZmxleC1ncm93OiAwOyB9CgouYnRuLWV4dGV4dCB7IGZvbnQtc2l6ZTogMTJweDsgZm9udC13ZWlnaHQ6IDUwMDsgdGV4dC1hbGlnbjogY2VudGVyOyBtYXJnaW4tdG9wOiAwLjI1cmVtOyBjb2xvcjogIzgwOTRhZTsgfQoKLmJ0bi13aWRlciB7IGRpc3BsYXk6IGZsZXg7IH0KCi5idG4td2lkZXIgLmljb24gKyBzcGFuLCAuYnRuLXdpZGVyIHNwYW4gKyAuaWNvbiB7IG1hcmdpbi1sZWZ0OiBhdXRvOyB9CgouYnRuLWF1dG8geyBtaW4td2lkdGg6IGF1dG87IH0KCi5idG4tcGQtYXV0byB7IHBhZGRpbmctbGVmdDogMC4yNXJlbTsgcGFkZGluZy1yaWdodDogMC4yNXJlbTsgfQoKLmJ0biAuc3Bpbm5lci1ib3JkZXIsIC5kdWFsLWxpc3Rib3ggLmR1YWwtbGlzdGJveF9fYnV0dG9uIC5zcGlubmVyLWJvcmRlciwgLmJ0biAuc3Bpbm5lci1ncm93LCAuZHVhbC1saXN0Ym94IC5kdWFsLWxpc3Rib3hfX2J1dHRvbiAuc3Bpbm5lci1ncm93IHsgbWFyZ2luOiAuMTI1cmVtOyB9CgouYnRuIC5zcGlubmVyLWJvcmRlciArIHNwYW4sIC5kdWFsLWxpc3Rib3ggLmR1YWwtbGlzdGJveF9fYnV0dG9uIC5zcGlubmVyLWJvcmRlciArIHNwYW4sIC5idG4gLnNwaW5uZXItZ3JvdyArIHNwYW4sIC5kdWFsLWxpc3Rib3ggLmR1YWwtbGlzdGJveF9fYnV0dG9uIC5zcGlubmVyLWdyb3cgKyBzcGFuIHsgbWFyZ2luLWxlZnQ6IDAuMjVyZW07IH0KCi5idG4taW5kYyB7IHdpZHRoOiAxMDAlOyB9CgouYnRuLWluZGMgLmljb24geyBmb250LXNpemU6IDEuNDNlbTsgfQoKLmJ0bi1pbmRjIC5pbmRjIHsgb3BhY2l0eTogLjY7IG1hcmdpbi1sZWZ0OiAtOHB4OyBtYXJnaW4tcmlnaHQ6IGF1dG87IH0KCi5idG4taW5kYyBzcGFuICsgLmluZGMgeyBtYXJnaW4tbGVmdDogYXV0bzsgbWFyZ2luLXJpZ2h0OiAtOHB4OyB9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsgLmJ0bi14bCB7IHBhZGRpbmc6IDAuNjI1cmVtIDJyZW07IGZvbnQtc2l6ZTogMS4xMjVyZW07IGxpbmUtaGVpZ2h0OiAycmVtOyBib3JkZXItcmFkaXVzOiA1cHg7IH0KICAuYnRuLXhsLmJ0bi1yb3VuZCB7IGJvcmRlci1yYWRpdXM6IDMuMjVyZW07IH0KICAuYnRuLWljb24uYnRuLXhsIC5pY29uIHsgd2lkdGg6IDMuMjVyZW07IH0gfQoKLmJ0bi10cmlnZ2VyIHsgcG9zaXRpb246IHJlbGF0aXZlOyB6LWluZGV4OiAxOyBjb2xvcjogIzUyNjQ4NDsgfQoKLmJ0bi10cmlnZ2VyOmZvY3VzIHsgYm94LXNoYWRvdzogbm9uZTsgfQoKLmJ0bi10cmlnZ2VyOmJlZm9yZSB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgei1pbmRleDogLTE7IGhlaWdodDogMjBweDsgd2lkdGg6IDIwcHg7IHRvcDogNTAlOyBsZWZ0OiA1MCU7IHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOyB0cmFuc2Zvcm0tb3JpZ2luOiA1MCUgNTAlOyBjb250ZW50OiAnJzsgYmFja2dyb3VuZC1jb2xvcjogI2U1ZTlmMjsgYm9yZGVyLXJhZGl1czogNTAlOyBvcGFjaXR5OiAwOyB0cmFuc2l0aW9uOiBhbGwgLjNzOyB9CgouaXMtZGFyayAuYnRuLXRyaWdnZXI6YmVmb3JlIHsgYmFja2dyb3VuZC1jb2xvcjogIzA3MWQ0NjsgfQoKLnNob3cgPiAuYnRuLXRyaWdnZXI6YmVmb3JlIHsgb3BhY2l0eTogMTsgaGVpZ2h0OiAxMjAlOyB3aWR0aDogMTIwJTsgfQoKLmJ0bi10cmlnZ2VyOmhvdmVyOmJlZm9yZSwgLmJ0bi10cmlnZ2VyOmZvY3VzOmJlZm9yZSwgLmJ0bi10cmlnZ2VyLmFjdGl2ZTpub3QoLnJldmFyc2UpOmJlZm9yZSB7IG9wYWNpdHk6IDE7IGhlaWdodDogMTIwJTsgd2lkdGg6IDEyMCU7IH0KCi5idG4tdHJpZ2dlci5hY3RpdmU6aG92ZXI6YmVmb3JlIHsgYmFja2dyb3VuZC1jb2xvcjogI2RiZGZlYTsgfQoKYTpob3ZlciAuYnRuLXRyaWdnZXI6YmVmb3JlIHsgb3BhY2l0eTogMTsgaGVpZ2h0OiAxMjAlOyB3aWR0aDogMTIwJTsgfQoKLmJ0bi1kaW0uYnRuLW91dGxpbmUtcHJpbWFyeSB7IGNvbG9yOiAjMDk3MWZlOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZTRlZmZmOyBib3JkZXItY29sb3I6ICM5ZGM2ZmY7IH0KCi5idG4tZGltLmJ0bi1vdXRsaW5lLXByaW1hcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6aG92ZXIgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogIzA5NzFmZTsgYm9yZGVyLWNvbG9yOiAjMDk3MWZlOyB9CgouYnRuLXdoaXRlLmJ0bi1vdXRsaW5lLXByaW1hcnk6bm90KC5idG4tZGltKTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTpob3ZlciwgLmJ0bi10cmFucy5idG4tb3V0bGluZS1wcmltYXJ5Om5vdCguYnRuLWRpbSk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6aG92ZXIgeyBjb2xvcjogIzA5NzFmZTsgYmFja2dyb3VuZDogI2U0ZWZmZjsgfQoKLmJ0bi1kaW0uYnRuLW91dGxpbmUtc3VjY2VzcyB7IGNvbG9yOiAjMWVlMGFjOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZTZmY2Y2OyBib3JkZXItY29sb3I6ICNhNWYzZGU7IH0KCi5idG4tZGltLmJ0bi1vdXRsaW5lLXN1Y2Nlc3M6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6aG92ZXIgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogIzFlZTBhYzsgYm9yZGVyLWNvbG9yOiAjMWVlMGFjOyB9CgouYnRuLXdoaXRlLmJ0bi1vdXRsaW5lLXN1Y2Nlc3M6bm90KC5idG4tZGltKTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTpob3ZlciwgLmJ0bi10cmFucy5idG4tb3V0bGluZS1zdWNjZXNzOm5vdCguYnRuLWRpbSk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6aG92ZXIgeyBjb2xvcjogIzFlZTBhYzsgYmFja2dyb3VuZDogI2U2ZmNmNjsgfQoKLmJ0bi1kaW0uYnRuLW91dGxpbmUtd2FybmluZyB7IGNvbG9yOiAjZjRiZDBlOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmVmOGU0OyBib3JkZXItY29sb3I6ICNmYmU1OWY7IH0KCi5idG4tZGltLmJ0bi1vdXRsaW5lLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6aG92ZXIgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogI2Y0YmQwZTsgYm9yZGVyLWNvbG9yOiAjZjRiZDBlOyB9CgouYnRuLXdoaXRlLmJ0bi1vdXRsaW5lLXdhcm5pbmc6bm90KC5idG4tZGltKTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTpob3ZlciwgLmJ0bi10cmFucy5idG4tb3V0bGluZS13YXJuaW5nOm5vdCguYnRuLWRpbSk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6aG92ZXIgeyBjb2xvcjogI2Y0YmQwZTsgYmFja2dyb3VuZDogI2ZlZjhlNDsgfQoKLmJ0bi1kaW0uYnRuLW91dGxpbmUtaW5mbyB7IGNvbG9yOiAjMDljMmRlOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZTRmOGZiOyBib3JkZXItY29sb3I6ICM5ZGU3ZjI7IH0KCi5idG4tZGltLmJ0bi1vdXRsaW5lLWluZm86bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6aG92ZXIgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogIzA5YzJkZTsgYm9yZGVyLWNvbG9yOiAjMDljMmRlOyB9CgouYnRuLXdoaXRlLmJ0bi1vdXRsaW5lLWluZm86bm90KC5idG4tZGltKTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTpob3ZlciwgLmJ0bi10cmFucy5idG4tb3V0bGluZS1pbmZvOm5vdCguYnRuLWRpbSk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6aG92ZXIgeyBjb2xvcjogIzA5YzJkZTsgYmFja2dyb3VuZDogI2U0ZjhmYjsgfQoKLmJ0bi1kaW0uYnRuLW91dGxpbmUtZGFuZ2VyIHsgY29sb3I6ICNlODUzNDc7IGJhY2tncm91bmQtY29sb3I6ICNmY2VjZWI7IGJvcmRlci1jb2xvcjogI2Y2YmFiNTsgfQoKLmJ0bi1kaW0uYnRuLW91dGxpbmUtZGFuZ2VyOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmhvdmVyIHsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICNlODUzNDc7IGJvcmRlci1jb2xvcjogI2U4NTM0NzsgfQoKLmJ0bi13aGl0ZS5idG4tb3V0bGluZS1kYW5nZXI6bm90KC5idG4tZGltKTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTpob3ZlciwgLmJ0bi10cmFucy5idG4tb3V0bGluZS1kYW5nZXI6bm90KC5idG4tZGltKTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTpob3ZlciB7IGNvbG9yOiAjZTg1MzQ3OyBiYWNrZ3JvdW5kOiAjZmNlY2ViOyB9CgouYnRuLWRpbS5idG4tb3V0bGluZS1zZWNvbmRhcnkgeyBjb2xvcjogIzM2NGE2MzsgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWJlZTsgYm9yZGVyLWNvbG9yOiAjYjljMGM4OyB9CgouYnRuLWRpbS5idG4tb3V0bGluZS1zZWNvbmRhcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6aG92ZXIgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogIzM2NGE2MzsgYm9yZGVyLWNvbG9yOiAjMzY0YTYzOyB9CgouYnRuLXdoaXRlLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpub3QoLmJ0bi1kaW0pOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmhvdmVyLCAuYnRuLXRyYW5zLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpub3QoLmJ0bi1kaW0pOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmhvdmVyIHsgY29sb3I6ICMzNjRhNjM7IGJhY2tncm91bmQ6ICNlOWViZWU7IH0KCi5idG4tZGltLmJ0bi1vdXRsaW5lLWdyYXkgeyBjb2xvcjogIzNjNGQ2MjsgYmFja2dyb3VuZC1jb2xvcjogI2YxZjNmNTsgYm9yZGVyLWNvbG9yOiAjZDNkOWUwOyB9CgouYnRuLWRpbS5idG4tb3V0bGluZS1ncmF5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmhvdmVyIHsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICMzYzRkNjI7IGJvcmRlci1jb2xvcjogIzNjNGQ2MjsgfQoKLmJ0bi13aGl0ZS5idG4tb3V0bGluZS1ncmF5Om5vdCguYnRuLWRpbSk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6aG92ZXIsIC5idG4tdHJhbnMuYnRuLW91dGxpbmUtZ3JheTpub3QoLmJ0bi1kaW0pOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmhvdmVyIHsgY29sb3I6ICMzYzRkNjI7IGJhY2tncm91bmQ6ICNmMWYzZjU7IH0KCi5idG4tZGltLmJ0bi1vdXRsaW5lLWRhcmsgeyBjb2xvcjogIzFmMmIzYTsgYmFja2dyb3VuZC1jb2xvcjogI2U2ZThlOTsgYm9yZGVyLWNvbG9yOiAjYjFiNWJhOyB9CgouYnRuLWRpbS5idG4tb3V0bGluZS1kYXJrOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmhvdmVyIHsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICMxZjJiM2E7IGJvcmRlci1jb2xvcjogIzFmMmIzYTsgfQoKLmJ0bi13aGl0ZS5idG4tb3V0bGluZS1kYXJrOm5vdCguYnRuLWRpbSk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6aG92ZXIsIC5idG4tdHJhbnMuYnRuLW91dGxpbmUtZGFyazpub3QoLmJ0bi1kaW0pOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmhvdmVyIHsgY29sb3I6ICMxZjJiM2E7IGJhY2tncm91bmQ6ICNlNmU4ZTk7IH0KCi5idG4tZGltLmJ0bi1vdXRsaW5lLWxpZ2h0IHsgY29sb3I6ICM1MjY0ODQ7IGJhY2tncm91bmQtY29sb3I6ICNmNWY2ZmE7IGJvcmRlci1jb2xvcjogI2RiZGZlYTsgfQoKLmJ0bi1kaW0uYnRuLW91dGxpbmUtbGlnaHQ6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6aG92ZXIgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogIzUyNjQ4NDsgYm9yZGVyLWNvbG9yOiAjNTI2NDg0OyB9CgouYnRuLXdoaXRlLmJ0bi1vdXRsaW5lLWxpZ2h0Om5vdCguYnRuLWRpbSk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6aG92ZXIsIC5idG4tdHJhbnMuYnRuLW91dGxpbmUtbGlnaHQ6bm90KC5idG4tZGltKTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTpob3ZlciB7IGNvbG9yOiAjNTI2NDg0OyBiYWNrZ3JvdW5kOiAjZjVmNmZhOyB9CgouYnRuLWRpbS5idG4tcHJpbWFyeSB7IGNvbG9yOiAjMDk3MWZlOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZTRlZmZmOyBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OyB9CgouYnRuLWRpbS5idG4tcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTpob3ZlciB7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDk3MWZlOyBib3JkZXItY29sb3I6ICMwOTcxZmU7IH0KCi5idG4tZGltLmJ0bi1zZWNvbmRhcnkgeyBjb2xvcjogIzM2NGE2MzsgYmFja2dyb3VuZC1jb2xvcjogI2U5ZWJlZTsgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsgfQoKLmJ0bi1kaW0uYnRuLXNlY29uZGFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTpob3ZlciB7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMzY0YTYzOyBib3JkZXItY29sb3I6ICMzNjRhNjM7IH0KCi5idG4tZGltLmJ0bi1zdWNjZXNzIHsgY29sb3I6ICMxZWUwYWM7IGJhY2tncm91bmQtY29sb3I6ICNlNmZjZjY7IGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7IH0KCi5idG4tZGltLmJ0bi1zdWNjZXNzOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmhvdmVyIHsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICMxZWUwYWM7IGJvcmRlci1jb2xvcjogIzFlZTBhYzsgfQoKLmJ0bi1kaW0uYnRuLXdhcm5pbmcgeyBjb2xvcjogI2Y0YmQwZTsgYmFja2dyb3VuZC1jb2xvcjogI2ZlZjhlNDsgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsgfQoKLmJ0bi1kaW0uYnRuLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6aG92ZXIgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogI2Y0YmQwZTsgYm9yZGVyLWNvbG9yOiAjZjRiZDBlOyB9CgouYnRuLWRpbS5idG4taW5mbyB7IGNvbG9yOiAjMDljMmRlOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZTRmOGZiOyBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OyB9CgouYnRuLWRpbS5idG4taW5mbzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTpob3ZlciB7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDljMmRlOyBib3JkZXItY29sb3I6ICMwOWMyZGU7IH0KCi5idG4tZGltLmJ0bi1kYW5nZXIgeyBjb2xvcjogI2U4NTM0NzsgYmFja2dyb3VuZC1jb2xvcjogI2ZjZWNlYjsgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsgfQoKLmJ0bi1kaW0uYnRuLWRhbmdlcjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTpob3ZlciB7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZTg1MzQ3OyBib3JkZXItY29sb3I6ICNlODUzNDc7IH0KCi5idG4tZGltLmJ0bi1ncmF5IHsgY29sb3I6ICMzYzRkNjI7IGJhY2tncm91bmQtY29sb3I6ICNlYWViZWU7IGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7IH0KCi5idG4tZGltLmJ0bi1ncmF5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmhvdmVyIHsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICMzYzRkNjI7IGJvcmRlci1jb2xvcjogIzNjNGQ2MjsgfQoKLmJ0bi1kaW0uYnRuLWRhcmsgeyBjb2xvcjogIzFmMmIzYTsgYmFja2dyb3VuZC1jb2xvcjogI2U2ZThlOTsgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsgfQoKLmJ0bi1kaW0uYnRuLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6aG92ZXIgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogIzFmMmIzYTsgYm9yZGVyLWNvbG9yOiAjMWYyYjNhOyB9CgouYnRuLWRpbS5idG4tbGlnaHQsIC5kdWFsLWxpc3Rib3ggLmJ0bi1kaW0uZHVhbC1saXN0Ym94X19idXR0b24geyBjb2xvcjogIzgwOTFhNzsgYmFja2dyb3VuZC1jb2xvcjogI2YxZjNmNTsgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsgfQoKLmJ0bi1kaW0uYnRuLWxpZ2h0Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmhvdmVyLCAuZHVhbC1saXN0Ym94IC5idG4tZGltLmR1YWwtbGlzdGJveF9fYnV0dG9uOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmhvdmVyIHsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICM4MDkxYTc7IGJvcmRlci1jb2xvcjogIzgwOTFhNzsgfQoKLmJ0bi1kaW0uYnRuLWxpZ2h0ZXIgeyBjb2xvcjogI2I3YzJkMDsgYmFja2dyb3VuZC1jb2xvcjogI2Y3ZjhmYTsgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsgfQoKLmJ0bi1kaW0uYnRuLWxpZ2h0ZXI6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6aG92ZXIgeyBjb2xvcjogIzEwMTkyNDsgYmFja2dyb3VuZC1jb2xvcjogI2I3YzJkMDsgYm9yZGVyLWNvbG9yOiAjYjdjMmQwOyB9CgouYnRuLXRyYW5zLmJ0biwgLmR1YWwtbGlzdGJveCAuYnRuLXRyYW5zLmR1YWwtbGlzdGJveF9fYnV0dG9uIHsgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7IH0KCi5idG4tb3V0bGluZS1saWdodCB7IGJvcmRlci1jb2xvcjogI2RiZGZlYTsgfQoKLmJ0bi1vdXRsaW5lLWxpZ2h0ZXIgeyBib3JkZXItY29sb3I6ICNlNWU5ZjI7IH0KCi5idG4tb3V0bGluZS1saWdodCwgLmJ0bi1vdXRsaW5lLWxpZ2h0ZXIgeyBjb2xvcjogIzUyNjQ4NDsgfQoKLmJ0bi13aGl0ZSwgLmJ0bi13aGl0ZS5idG4tZGltIHsgYmFja2dyb3VuZDogI2ZmZjsgfQoKLmJ0bi13aGl0ZS5idG4tb3V0bGluZS1saWdodDpub3QoLmJ0bi1kaW0pOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmhvdmVyIHsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQ6ICM1MjY0ODQ7IGJvcmRlci1jb2xvcjogIzUyNjQ4NDsgfQoKLmJ0bi10b29sYmFyLXNlcCB7IGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNlNWU5ZjI7IG1hcmdpbi1sZWZ0OiAuNzVyZW07IG1hcmdpbi1yaWdodDogLjc1cmVtOyB9CgouY2FyZC10b29scyAuYnRuLXRvb2xiYXItc2VwIHsgcGFkZGluZzogMCAhaW1wb3J0YW50OyBtYXJnaW4tbGVmdDogLjVyZW07IG1hcmdpbi1yaWdodDogLjVyZW07IH0KCi5idG4tZ3JvdXAuaXMtdGFncyAuYnRuLXhzOmZpcnN0LWNoaWxkIHsgcGFkZGluZy1sZWZ0OiAwLjI1cmVtOyBwYWRkaW5nLXJpZ2h0OiAwLjI1cmVtOyB9CgouYnRuLWdyb3VwLmlzLXRhZ3MgLmJ0bi14czpsYXN0LWNoaWxkIHsgbWFyZ2luLWxlZnQ6IDA7IH0KCi5idG4tZ3JvdXAuaXMtdGFncyAuYnRuLXhzIC5pY29uIHsgd2lkdGg6IDFyZW07IH0KCi5idG4tZ3JvdXAuaXMtdGFncyAuYnRuLWRpbTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTpob3ZlciB7IGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7IH0KCi5kcm9wdXAsIC5kcm9wcmlnaHQsIC5kcm9wZG93biwgLmRyb3BsZWZ0IHsgZGlzcGxheTogaW5saW5lLWZsZXg7IH0KCi5kcm9wZG93bi10b2dnbGUgeyBjdXJzb3I6IHBvaW50ZXI7IGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBtYXJnaW4tYm90dG9tOiAwOyB9CgouZHJvcGRvd24tdG9nZ2xlOm5vdChbY2xhc3MqPSJpbmRpY2F0b3IiXSk6YWZ0ZXIgeyBkaXNwbGF5OiBub25lOyB9CgouY2xpY2thYmxlICogeyBwb2ludGVyLWV2ZW50czogbm9uZTsgfQoKLmRyb3Bkb3duLW1lbnUgeyBvdmVyZmxvdzogaGlkZGVuOyBib3JkZXI6IDFweCBzb2xpZCAjZTVlOWYyOyBib3gtc2hhZG93OiAwIDNweCAxMnB4IDFweCByZ2JhKDExLCA0OSwgMTE3LCAwLjE1KTsgfQoKLmRyb3Bkb3duLWlubmVyIHsgcGFkZGluZzogMCAxLjc1cmVtOyB9CgouZHJvcGRvd24taW5uZXIgKyAuZHJvcGRvd24taW5uZXIgeyBib3JkZXItdG9wOiAxcHggc29saWQgI2U1ZTlmMjsgfQoKLmRyb3Bkb3duLWhlYWQsIC5kcm9wZG93bi1mb290IHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyBwYWRkaW5nOiAwLjc1cmVtIDEuMjVyZW07IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTVlOWYyOyB9CgouZHJvcGRvd24taGVhZC5jZW50ZXIsIC5kcm9wZG93bi1mb290LmNlbnRlciB7IGp1c3RpZnktY29udGVudDogY2VudGVyOyB9CgouZHJvcGRvd24taGVhZCB7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTVlOWYyOyB9CgouZHJvcGRvd24tZm9vdCB7IGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTVlOWYyOyB9CgouZHJvcGRvd24tYm9keS1zbSB7IHBhZGRpbmc6IC43NXJlbTsgfQoKLmRyb3Bkb3duLWJvZHktcmcgeyBwYWRkaW5nOiAxLjI1cmVtOyB9CgouZHJvcGRvd24tYm9keS1tZCB7IHBhZGRpbmc6IDEuNXJlbTsgfQoKLmRyb3Bkb3duLWJvZHktbGcgeyBwYWRkaW5nOiAyLjI1cmVtOyB9CgouZHJvcGRvd24tdGl0bGUgeyBmb250LXdlaWdodDogNTAwOyBjb2xvcjogIzM2NGE2MzsgfQoKW2NsYXNzKj0iZHJvcGRvd24taW5kaWNhdG9yIl06YWZ0ZXIgeyBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsgZm9udC1mYW1pbHk6ICJOaW9pY29uIjsgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgY29udGVudDogIu6nhSI7IG1hcmdpbi1sZWZ0OiAwLjI1cmVtOyBsaW5lLWhlaWdodDogMTsgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGZvbnQtc2l6ZTogMTRweDsgfQoKLmRyb3B1cCBbY2xhc3MqPSJkcm9wZG93bi1pbmRpY2F0b3IiXTphZnRlciB7IGNvbnRlbnQ6ICLup5oiOyB9CgouZHJvcGRvd24taW5kaWNhdG9yLWNhcmV0OmFmdGVyIHsgY29udGVudDogIu6mmCI7IH0KCi5kcm9wdXAgLmRyb3Bkb3duLWluZGljYXRvci1jYXJldDphZnRlciB7IGNvbnRlbnQ6ICLuppgiOyB9CgouZHJvcGRvd24taW5kaWNhdG9yLWNhcmV0LXVwOmFmdGVyIHsgY29udGVudDogIu6mniI7IH0KCi5kcm9wdXAgLmRyb3Bkb3duLWluZGljYXRvci1jYXJldC11cDphZnRlciB7IGNvbnRlbnQ6ICLupp4iOyB9CgouZHJvcGRvd24taW5kaWNhdG9yLXVwOmFmdGVyIHsgY29udGVudDogIu6kvCI7IH0KCi5kcm9wdXAgLmRyb3Bkb3duLWluZGljYXRvci11cDphZnRlciB7IGNvbnRlbnQ6ICLupLwiOyB9CgouZHJvcGRvd24taW5kaWNhdG9yLWRvd246YWZ0ZXIgeyBjb250ZW50OiAi7qS5IjsgfQoKLmRyb3B1cCAuZHJvcGRvd24taW5kaWNhdG9yLWRvd246YWZ0ZXIgeyBjb250ZW50OiAi7qS5IjsgfQoKLmRyb3Bkb3duLWluZGljYXRvci1kdWJibGU6YWZ0ZXIgeyBjb250ZW50OiAi7qebIjsgfQoKLmRyb3B1cCAuZHJvcGRvd24taW5kaWNhdG9yLWR1YmJsZTphZnRlciB7IGNvbnRlbnQ6ICLup54iOyB9CgouZHJvcGRvd24taW5kaWNhdG9yLXVuZm9sZDphZnRlciB7IGNvbnRlbnQ6ICLusJYiOyB9CgouZHJvcHVwIC5kcm9wZG93bi1pbmRpY2F0b3ItdW5mb2xkOmFmdGVyIHsgY29udGVudDogIu6wliI7IH0KCi5kcm9wZG93bi1tZW51LWNlbnRlciB7IGxlZnQ6IDUwJSAhaW1wb3J0YW50OyB9CgouZHJvcGRvd24tbWVudS1ib3R0b20geyBib3R0b206IDAgIWltcG9ydGFudDsgfQoKLmRyb3Bkb3duLW1lbnUteHhzIHsgbWluLXdpZHRoOiA3MHB4OyBtYXgtd2lkdGg6IDcwcHg7IH0KCi5kcm9wZG93bi1tZW51LXh4cy5kcm9wZG93bi1tZW51LWNlbnRlciB7IG1hcmdpbi1sZWZ0OiAtMzVweDsgfQoKLmRyb3Bkb3duLW1lbnUteHMgeyBtaW4td2lkdGg6IDEyMHB4OyBtYXgtd2lkdGg6IDEyMHB4OyB9CgouZHJvcGRvd24tbWVudS14cy5kcm9wZG93bi1tZW51LWNlbnRlciB7IG1hcmdpbi1sZWZ0OiAtNjBweDsgfQoKLmRyb3Bkb3duLW1lbnUtbWQgeyBtaW4td2lkdGg6IDI4MHB4OyBtYXgtd2lkdGg6IDI4MHB4OyB9CgouZHJvcGRvd24tbWVudS1tZC5kcm9wZG93bi1tZW51LWNlbnRlciB7IG1hcmdpbi1sZWZ0OiAtMTQwcHg7IH0KCi5kcm9wZG93bi1tZW51LXNtIHsgbWluLXdpZHRoOiAxNDBweDsgbWF4LXdpZHRoOiAxNDBweDsgfQoKLmRyb3Bkb3duLW1lbnUtc20uZHJvcGRvd24tbWVudS1jZW50ZXIgeyBtYXJnaW4tbGVmdDogLTcwcHg7IH0KCi5kcm9wZG93bi1tZW51LWxnIHsgbWluLXdpZHRoOiAzMjBweDsgbWF4LXdpZHRoOiAzMjBweDsgfQoKLmRyb3Bkb3duLW1lbnUtbGcuZHJvcGRvd24tbWVudS1jZW50ZXIgeyBtYXJnaW4tbGVmdDogLTE2MHB4OyB9CgouZHJvcGRvd24tbWVudS14bCB7IG1pbi13aWR0aDogMzYwcHg7IG1heC13aWR0aDogMzYwcHg7IH0KCi5kcm9wZG93bi1tZW51LXhsLmRyb3Bkb3duLW1lbnUtY2VudGVyIHsgbWFyZ2luLWxlZnQ6IC0xODBweDsgfQoKLmRyb3Bkb3duLW1lbnUtYXV0byB7IG1pbi13aWR0aDogMTAwJTsgbWF4LXdpZHRoOiAxMDAlOyB9CgouZHJvcGRvd24tbWVudS1teGggeyBtYXgtaGVpZ2h0OiA0MDBweDsgb3ZlcmZsb3c6IGF1dG87IH0KCi5uay1xdWljay1uYXYgLmRyb3Bkb3duLW1lbnUgeyBtYXJnaW4tdG9wOiAxMXB4OyBtYXJnaW4tcmlnaHQ6IC02cHg7IH0KCkBtZWRpYSAobWF4LXdpZHRoOiA0MjBweCkgeyAuZHJvcGRvd24tbWVudS14bCwgLmRyb3Bkb3duLW1lbnUtbGcsIC5kcm9wZG93bi1tZW51LW1kIHsgbWluLXdpZHRoOiBjYWxjKDEwMHZ3IC0gNDBweCk7IG1heC13aWR0aDogY2FsYygxMDB2dyAtIDQwcHgpOyB9CiAgLm5rLXF1aWNrLW5hdiAuZHJvcGRvd24tbWVudS14bCwgLm5rLXF1aWNrLW5hdiAuZHJvcGRvd24tbWVudS1sZywgLm5rLXF1aWNrLW5hdiAuZHJvcGRvd24tbWVudS1tZCB7IG1hcmdpbi1yaWdodDogMDsgbWFyZ2luLWxlZnQ6IDE2cHg7IH0KICAubmstcXVpY2stbmF2IGxpOmxhc3QtY2hpbGQgLmRyb3Bkb3duLW1lbnUteGwsIC5uay1xdWljay1uYXYgbGk6bGFzdC1jaGlsZCAuZHJvcGRvd24tbWVudS1sZywgLm5rLXF1aWNrLW5hdiBsaTpsYXN0LWNoaWxkIC5kcm9wZG93bi1tZW51LW1kIHsgbWFyZ2luLWxlZnQ6IDA7IG1hcmdpbi1yaWdodDogM3B4OyB9IH0KCi5kcm9wZG93bi1tZW51LXMxIHsgYm9yZGVyLXRvcDogM3B4IHNvbGlkICMwOTcxZmU7IH0KCi5kcm9wZG93bi10b2dnbGUtc3BsaXQgPiAuaWNvbiB7IG1hcmdpbi1sZWZ0OiAtMC4yNXJlbTsgbWFyZ2luLXJpZ2h0OiAtMC4yNXJlbTsgfQoKLmNhcmQgKyAuY2FyZCB7IG1hcmdpbi10b3A6IDI4cHg7IH0KCi5jYXJkICsgLm5rLWJsb2NrLWhlYWQgeyBwYWRkaW5nLXRvcDogMi41cmVtOyB9CgouY2FyZC1mdWxsIHsgaGVpZ2h0OiAxMDAlOyB9CgouY2FyZC5pcy1kYXJrIHsgYmFja2dyb3VuZDogIzBiMzE3NTsgfQoKLmNhcmQtYm9yZGVyZWQgeyBib3JkZXI6IDFweCBzb2xpZCAjZGJkZmVhOyB9CgouY2FyZC1ib3JkZXJlZC5pcy1kYXJrIHsgYm9yZGVyLWNvbG9yOiAjMGIzMTc1OyB9CgouY2FyZC1ib3JkZXJlZC5kYXNoZWQgeyBib3JkZXItc3R5bGU6IGRhc2hlZDsgfQoKLmNhcmQtaW5uZXIgeyBwYWRkaW5nOiAxLjI1cmVtOyB9CgouY2FyZC1pbm5lci1zbSB7IHBhZGRpbmctdG9wOiAuNzVyZW07IHBhZGRpbmctYm90dG9tOiAuNzVyZW07IH0KCi5jYXJkLWlubmVyLWdyb3VwIC5jYXJkLWlubmVyOm5vdCg6bGFzdC1jaGlsZCkgeyBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RiZGZlYTsgfQoKLmNhcmQtaGVhZCB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGZsZXgtd3JhcDogd3JhcDsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyBtYXJnaW46IC0uMjVyZW0gLTAuNXJlbSAxcmVtOyB9CgouY2FyZC1oZWFkID4gKiB7IHBhZGRpbmc6IDAuMjVyZW0gLjVyZW07IH0KCi5jYXJkLWhlYWQgPiAudGl0bGU6b25seS1jaGlsZCB7IHdpZHRoOiAxMDAlOyB9CgouY2FyZC10aXRsZS1ncm91cCB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgcG9zaXRpb246IHJlbGF0aXZlOyB9CgouY2FyZC10aXRsZS1ncm91cCAuY2FyZC10aXRsZSB7IG1hcmdpbi1ib3R0b206IDA7IH0KCi5jYXJkLXRpdGxlLWdyb3VwOm9ubHktY2hpbGQsIC5jYXJkLXRpdGxlLWdyb3VwIC5jYXJkLXNlYXJjaCB7IG1hcmdpbi10b3A6IC0uMjVyZW07IG1hcmdpbi1ib3R0b206IC0uMjVyZW07IH0KCi5jYXJkLXRpdGxlIGg2LnRpdGxlOm5vdCg6bGFzdC1jaGlsZCkgeyBtYXJnaW4tYm90dG9tOiAwLjI1cmVtOyB9CgouY2FyZC10aXRsZSBwIHsgZm9udC1zaXplOiAxMnB4OyBjb2xvcjogIzgwOTRhZTsgfQoKLmNhcmQtdGl0bGUgcCAuaWNvbiB7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9CgouY2FyZC10aXRsZS1zbSAudGl0bGUgeyBmb250LXNpemU6IDE0cHg7IH0KCi5jYXJkLXRpdGxlIHNtYWxsIHsgZm9udC13ZWlnaHQ6IDUwMDsgY29sb3I6ICM4MDk0YWU7IH0KCi5jYXJkLXN1YnRpdGxlIHsgY29sb3I6ICM4MDk0YWU7IGZvbnQtZmFtaWx5OiBSb2JvdG8sIHNhbnMtc2VyaWY7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IH0KCi5jYXJkLXRvb2xzLW5hdiB7IGRpc3BsYXk6IGZsZXg7IG1hcmdpbjogLTZweCAtMTBweCAtNXB4OyB9CgouY2FyZC10b29scy1uYXYgbGkgeyBwYWRkaW5nOiAwIDEwcHg7IH0KCi5jYXJkLXRvb2xzLW5hdiBsaSBhIHsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogIzgwOTRhZTsgcGFkZGluZzogMTBweCAwOyBkaXNwbGF5OiBibG9jazsgbGluZS1oZWlnaHQ6IDE7IH0KCi5jYXJkLXRvb2xzLW5hdiBsaSBhOmJlZm9yZSB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgYm90dG9tOiAwOyBsZWZ0OiAwOyByaWdodDogMDsgaGVpZ2h0OiAycHg7IGNvbnRlbnQ6ICcnOyBiYWNrZ3JvdW5kOiAjMDk3MWZlOyBvcGFjaXR5OiAwOyB9CgouY2FyZC10b29scy1uYXYgbGkgYTpob3ZlciwgLmNhcmQtdG9vbHMtbmF2IGxpIGEuYWN0aXZlIHsgY29sb3I6ICM1MjY0ODQ7IH0KCi5jYXJkLXRvb2xzLW5hdiBsaSBhLmFjdGl2ZTo6YmVmb3JlIHsgb3BhY2l0eTogMTsgfQoKLmNhcmQtdG9vbHMtbmF2IGxpLmFjdGl2ZSBhIHsgY29sb3I6ICM1MjY0ODQ7IH0KCi5jYXJkLXRvb2xzLW5hdiBsaS5hY3RpdmUgYTo6YmVmb3JlIHsgb3BhY2l0eTogMTsgfQoKLmNhcmQtdG9vbHMubXItbjEgeyBtYXJnaW4tcmlnaHQ6IC0wLjVyZW0gIWltcG9ydGFudDsgfQoKLmNhcmQtaGludCB7IGZvbnQtc2l6ZTogMXJlbTsgY29sb3I6ICNkYmRmZWE7IH0KCkBtZWRpYSAobWF4LXdpZHRoOiA1NzUuOThweCkgeyAuY2FyZC1oZWFkLnVpLXYyIC5jYXJkLXRvb2xzIHsgd2lkdGg6IGNhbGMoMTAwJSArIDIwcHgpOyBtYXJnaW46IDAgLTEwcHg7IHBhZGRpbmctdG9wOiAuNXJlbTsgfQogIC5jYXJkLWhlYWQudWktdjIgLmNhcmQtdG9vbHMtbmF2IHsgcGFkZGluZzogMCAuNzVyZW07IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTVlOWYyOyB9CiAgLmNhcmQtaGVhZC51aS12MiAuY2FyZC10b29scy1uYXYgbGkgYSB7IHBhZGRpbmctYm90dG9tOiAxcmVtOyB9CiAgLmNhcmQtc3RyZXRjaCB7IG1hcmdpbi1sZWZ0OiAtMThweDsgbWFyZ2luLXJpZ2h0OiAtMThweDsgYm9yZGVyLWxlZnQ6IDA7IGJvcmRlci1yaWdodDogMDsgYm9yZGVyLXJhZGl1czogMDsgfSB9CgpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsgLmNhcmQtaW5uZXIgeyBwYWRkaW5nOiAxLjVyZW07IH0KICAuY2FyZC1pbm5lci1zbSB7IHBhZGRpbmctdG9wOiAuNzVyZW07IHBhZGRpbmctYm90dG9tOiAuNzVyZW07IH0KICAuY2FyZC1pbm5lci1tZCB7IHBhZGRpbmctdG9wOiAxcmVtOyBwYWRkaW5nLWJvdHRvbTogMXJlbTsgfQogIC5jYXJkLWhlYWRlciB7IHBhZGRpbmctbGVmdDogMS41cmVtOyBwYWRkaW5nLXJpZ2h0OiAxLjVyZW07IH0gfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7IC5jYXJkLWlubmVyLWxnIHsgcGFkZGluZzogMi41cmVtOyB9CiAgLmNhcmQtaW5uZXIteGwgeyBwYWRkaW5nOiAzLjc1cmVtOyB9IH0KCi5mb3JtLWljb24geyBwb3NpdGlvbjogYWJzb2x1dGU7IGRpc3BsYXk6IGlubGluZS1mbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgYWxpZ24taXRlbXM6IGNlbnRlcjsgdG9wOiA1MCU7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsgd2lkdGg6IGNhbGMoMXJlbSArIDI0cHgpOyBoZWlnaHQ6IGNhbGMoMXJlbSArIDI0cHgpOyB9CgouZm9ybS1pY29uIC5pY29uIHsgZm9udC1zaXplOiAxNnB4OyBjb2xvcjogIzgwOTRhZTsgfQoKLmZvcm0taWNvbiArIC5mb3JtLWNvbnRyb2wsIC5kdWFsLWxpc3Rib3ggLmZvcm0taWNvbiArIC5kdWFsLWxpc3Rib3hfX3NlYXJjaCB7IHBhZGRpbmctbGVmdDogY2FsYygxcmVtICsgMjRweCk7IH0KCi5mb3JtLWljb24tcmlnaHQgeyBsZWZ0OiBhdXRvOyByaWdodDogLTFweDsgfQoKLmZvcm0taWNvbi1yaWdodCArIC5mb3JtLWNvbnRyb2wsIC5kdWFsLWxpc3Rib3ggLmZvcm0taWNvbi1yaWdodCArIC5kdWFsLWxpc3Rib3hfX3NlYXJjaCB7IHBhZGRpbmctbGVmdDogMXJlbTsgcGFkZGluZy1yaWdodDogY2FsYygxcmVtICsgMjRweCk7IH0KCi5mb3JtLWluZm8geyBwb3NpdGlvbjogYWJzb2x1dGU7IGRpc3BsYXk6IGlubGluZS1mbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgYWxpZ24taXRlbXM6IGNlbnRlcjsgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZGJkZmVhOyByaWdodDogMDsgdG9wOiA1MCU7IHBhZGRpbmc6IC4xMjVyZW0gMS4yNXJlbTsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOyBjb2xvcjogIzgwOTRhZTsgfQoKLmZvcm0taW5mbyArIC5mb3JtLWNvbnRyb2wsIC5kdWFsLWxpc3Rib3ggLmZvcm0taW5mbyArIC5kdWFsLWxpc3Rib3hfX3NlYXJjaCB7IHBhZGRpbmctcmlnaHQ6IGNhbGMoMXJlbSArIDI0cHgpOyB9CgouZm9ybS1sYWJlbCB7IGZvbnQtc2l6ZTogMC44NzVyZW07IGZvbnQtd2VpZ2h0OiA1MDA7IGNvbG9yOiAjMzQ0MzU3OyBtYXJnaW4tYm90dG9tOiAuNXJlbTsgfQoKLmZvcm0tbGFiZWwtZ3JvdXAgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IG1hcmdpbi1ib3R0b206IC41cmVtOyB9CgouZm9ybS1sYWJlbC1ncm91cCAuZm9ybS1sYWJlbCB7IG1hcmdpbi1ib3R0b206IDA7IH0KCi5mb3JtLWxhYmVsICsgLmZvcm0tbm90ZSB7IG1hcmdpbi10b3A6IC0wLjM1cmVtOyB9CgouZm9ybS1sYWJlbC1vdXRsaW5lZCB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwLjQzNzVyZW07IGxlZnQ6IDAuNjY2NjdyZW07IHRyYW5zZm9ybS1vcmlnaW46IGxlZnQ7IHBhZGRpbmc6IDAgMC40cmVtOyBmb250LXdlaWdodDogNDAwOyBsaW5lLWhlaWdodDogMS4yNXJlbTsgY29sb3I6ICMzYzRkNjI7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7IHotaW5kZXg6IDE7IHRyYW5zaXRpb246IGFsbCAuM3MgZWFzZTsgbWFyZ2luLWJvdHRvbTogMDsgZm9udC1zaXplOiAwLjgxMjVyZW07IH0KCi5mb3JtLWNvbnRyb2wtbGcgfiAuZm9ybS1sYWJlbC1vdXRsaW5lZCB7IHRvcDogMC42ODc1cmVtOyBwYWRkaW5nOiAwIDAuMzc3MzZyZW07IGZvbnQtc2l6ZTogMC45Mzc1cmVtOyB9CgouZm9ybS1jb250cm9sLXNtIH4gLmZvcm0tbGFiZWwtb3V0bGluZWQgeyBmb250LXNpemU6IDAuNzVyZW07IHRvcDogMC4yNXJlbTsgbGVmdDogMC40cmVtOyB9CgouZm9jdXNlZCAuZm9ybS1jb250cm9sLXNtIH4gLmZvcm0tbGFiZWwtb3V0bGluZWQsIC5mb3JtLXNlbGVjdC5mb3JtLWNvbnRyb2wtc20gfiAuZm9ybS1sYWJlbC1vdXRsaW5lZCB7IGZvbnQtc2l6ZTogMTFweDsgfQoKLmZvY3VzZWQgLmZvcm0tbGFiZWwtb3V0bGluZWQsIC5mb3JtLXNlbGVjdCB+IC5mb3JtLWxhYmVsLW91dGxpbmVkIHsgdG9wOiBjYWxjKC0wLjQzNzVyZW0gKyAtMnB4KTsgZm9udC1zaXplOiAxMXB4OyB9CgouZm9ybS1jb250cm9sLXhsIH4gLmZvcm0tbGFiZWwtb3V0bGluZWQgeyBmb250LXNpemU6IDAuOTM3NXJlbTsgbGluZS1oZWlnaHQ6IDJyZW07IHRvcDogMC42MjVyZW07IHBhZGRpbmc6IDAgMC41cmVtOyBsZWZ0OiAwLjgzMzMzcmVtOyB9CgouZm9jdXNlZCAuZm9ybS1jb250cm9sLXhsIH4gLmZvcm0tbGFiZWwtb3V0bGluZWQsIC5mb3JtLXNlbGVjdC5mb3JtLWNvbnRyb2wteGwgfiAuZm9ybS1sYWJlbC1vdXRsaW5lZCB7IHRvcDogY2FsYygtMC42MjVyZW0gKyAtNXB4KTsgfQoKLmZvY3VzZWQgLmZvcm0tY29udHJvbC1sZyB+IC5mb3JtLWxhYmVsLW91dGxpbmVkLCAuZm9jdXNlZCAuZm9ybS1jb250cm9sLXhsIH4gLmZvcm0tbGFiZWwtb3V0bGluZWQsIC5mb3JtLXNlbGVjdC5mb3JtLWNvbnRyb2wtbGcgfiAuZm9ybS1sYWJlbC1vdXRsaW5lZCwgLmZvcm0tc2VsZWN0LmZvcm0tY29udHJvbC14bCB+IC5mb3JtLWxhYmVsLW91dGxpbmVkIHsgZm9udC1zaXplOiAxMnB4OyB9CgouZm9ybS1ub3RlIHsgZm9udC1zaXplOiAxMnB4OyBjb2xvcjogIzgwOTRhZTsgZm9udC1zdHlsZTogaXRhbGljOyBkaXNwbGF5OiBibG9jazsgfQoKLmZvcm0tbm90ZS1hbHQgeyBmb250LXNpemU6IDEycHg7IGNvbG9yOiAjODA5NGFlOyB9CgouZm9ybS1ub3RlLWdyb3VwIHsgZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyBtYXJnaW4tdG9wOiAwLjVyZW07IG1hcmdpbi1ib3R0b206IC0wLjI1cmVtOyB9CgouZm9ybS1jb250cm9sLXhsIHsgaGVpZ2h0OiBjYWxjKDMuMjVyZW0gKyAycHgpOyBwYWRkaW5nOiAwLjYyNXJlbSAxLjI1cmVtOyBmb250LXNpemU6IDAuOTM3NXJlbTsgbGluZS1oZWlnaHQ6IDJyZW07IGJvcmRlci1yYWRpdXM6IDVweDsgfQoKLmZvcm0tY29udHJvbC1vdXRsaW5lZCB7IGN1cnNvcjogcG9pbnRlcjsgfQoKLmZvY3VzZWQgLmZvcm0tY29udHJvbC1vdXRsaW5lZCB7IGN1cnNvcjogYXV0bzsgfQoKLmZvcm0tY29udHJvbC13cmFwLCAuZm9ybS1jb250cm9sLWdyb3VwIHsgcG9zaXRpb246IHJlbGF0aXZlOyB9CgouZm9ybS1jb250cm9sLXdyYXAgKyAuZm9ybS1ub3RlLCAuZm9ybS1jb250cm9sLWdyb3VwICsgLmZvcm0tbm90ZSB7IG1hcmdpbi10b3A6IDAuNXJlbTsgfQoKLmZvcm0tY29udHJvbC1ub2JvcmRlciB7IGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7IH0KCi5mb3JtLWNvbnRyb2wtbm9ib3JkZXI6Zm9jdXMgeyBib3JkZXItY29sb3I6ICNkYmRmZWE7IGJveC1zaGFkb3c6IG5vbmU7IH0KCi5mb3JtLWNvbnRyb2wtc29saWQgeyBib3JkZXItY29sb3I6ICNmZmY7IH0KCi5mb3JtLWNvbnRyb2wtc29saWQ6Zm9jdXMgeyBib3gtc2hhZG93OiBub25lOyBib3JkZXItY29sb3I6ICNkYmRmZWE7IH0KCi5mb3JtLWNvbnRyb2wtbnVtYmVyIHsgZm9udC1zaXplOiAyMHB4OyBwYWRkaW5nOiAyMHB4OyBoZWlnaHQ6IDc0cHg7IH0KCi5mb3JtLWNvbnRyb2wtcGFzc3dvcmQtYmlnIHsgZm9udC1zaXplOiA0NHB4OyBoZWlnaHQ6IGNhbGMoMXJlbSoyICsgMS4yNXJlbSArIDFweCk7IHBhZGRpbmc6IDFyZW0gMXJlbTsgfQoKLmZvcm0tY29udHJvbC5lcnJvciwgLmR1YWwtbGlzdGJveCAuZXJyb3IuZHVhbC1saXN0Ym94X19zZWFyY2ggeyBib3JkZXItY29sb3I6ICNlODUzNDc7IH0KCi5mb3JtLWNvbnRyb2wuZXJyb3I6Zm9jdXMsIC5kdWFsLWxpc3Rib3ggLmVycm9yLmR1YWwtbGlzdGJveF9fc2VhcmNoOmZvY3VzIHsgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMjMyLCA4MywgNzEsIDAuMSk7IH0KCi5mb3JtLWNvbnRyb2wuZm9jdXMsIC5kdWFsLWxpc3Rib3ggLmZvY3VzLmR1YWwtbGlzdGJveF9fc2VhcmNoIHsgYm9yZGVyLWNvbG9yOiAjMDk3MWZlOyBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSg5LCAxMTMsIDI1NCwgMC4xKTsgfQoKLmZvcm0tY29udHJvbC1zaW1wbGUgeyBib3JkZXI6IG5vbmU7IHBhZGRpbmc6IDA7IH0KCi5mb3JtLWNvbnRyb2wtc2ltcGxlOmZvY3VzIHsgYm94LXNoYWRvdzogbm9uZTsgfQoKLmZvcm0tZ3JvdXAgeyBwb3NpdGlvbjogcmVsYXRpdmU7IG1hcmdpbi1ib3R0b206IDEuMjVyZW07IH0KCi5mb3JtLWdyb3VwOmxhc3QtY2hpbGQgeyBtYXJnaW4tYm90dG9tOiAwOyB9CgouZm9ybS1zZWxlY3QgeyBoZWlnaHQ6IGNhbGMoMi4xMjVyZW0gKyAycHgpOyB9CgouZm9ybS1zZWxlY3Q6bm90KC5mb3JtLWNvbnRyb2wpIHsgb3BhY2l0eTogMDsgfQoKLmZvcm0tc2VsZWN0LXNtLCAuZm9ybS1zZWxlY3RbZGF0YS11aSo9InNtIl0geyBoZWlnaHQ6IGNhbGMoMS43NXJlbSArIDJweCk7IH0KCi5mb3JtLXNlbGVjdC1sZywgLmZvcm0tc2VsZWN0W2RhdGEtdWkqPSJsZyJdIHsgaGVpZ2h0OiBjYWxjKDIuNjI1cmVtICsgMnB4KTsgfQoKLmZvcm0tc2VsZWN0LXhsLCAuZm9ybS1zZWxlY3RbZGF0YS11aSo9InhsIl0geyBoZWlnaHQ6IGNhbGMoMy4yNXJlbSArIDJweCk7IH0KCi5mb3JtLWZvY3VzLW5vbmU6Zm9jdXMgeyBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OyBib3gtc2hhZG93OiBub25lOyB9CgouZm9ybS1hY3Rpb24gLmJ0biArIC5idG4sIC5mb3JtLWFjdGlvbiAuZHVhbC1saXN0Ym94IC5kdWFsLWxpc3Rib3hfX2J1dHRvbiArIC5idG4sIC5kdWFsLWxpc3Rib3ggLmZvcm0tYWN0aW9uIC5kdWFsLWxpc3Rib3hfX2J1dHRvbiArIC5idG4sIC5mb3JtLWFjdGlvbiAuZHVhbC1saXN0Ym94IC5idG4gKyAuZHVhbC1saXN0Ym94X19idXR0b24sIC5kdWFsLWxpc3Rib3ggLmZvcm0tYWN0aW9uIC5idG4gKyAuZHVhbC1saXN0Ym94X19idXR0b24sIC5mb3JtLWFjdGlvbiAuZHVhbC1saXN0Ym94IC5kdWFsLWxpc3Rib3hfX2J1dHRvbiArIC5kdWFsLWxpc3Rib3hfX2J1dHRvbiwgLmR1YWwtbGlzdGJveCAuZm9ybS1hY3Rpb24gLmR1YWwtbGlzdGJveF9fYnV0dG9uICsgLmR1YWwtbGlzdGJveF9fYnV0dG9uIHsgbWFyZ2luLWxlZnQ6IDEuMjVyZW07IH0KCi5mb3JtLXJvdW5kIHsgYm9yZGVyLXJhZGl1czogMTAwcHg7IH0KCi5jdXN0b20tc2VsZWN0IHsgYXBwZWFyYW5jZTogbm9uZTsgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOyB9CgouY3VzdG9tLXNlbGVjdCBvcHRpb24geyBib3JkZXItcmFkaXVzOiAzcHg7IHBhZGRpbmc6IDVweCAuNXJlbTsgbWFyZ2luOiAycHggLS41cmVtOyBjdXJzb3I6IHBvaW50ZXI7IGNvbG9yOiAjNTI2NDg0OyB9CgouY3VzdG9tLXNlbGVjdCBvcHRpb246bGFzdC1jaGlsZCB7IG1hcmdpbi1ib3R0b206IC0wLjVyZW07IH0KCi5mb3JtLWNvbnRyb2wtc2VsZWN0IHsgcG9zaXRpb246IHJlbGF0aXZlOyB9CgouZm9ybS1jb250cm9sLXNlbGVjdCAuZm9ybS1jb250cm9sLCAuZm9ybS1jb250cm9sLXNlbGVjdCAuZHVhbC1saXN0Ym94IC5kdWFsLWxpc3Rib3hfX3NlYXJjaCwgLmR1YWwtbGlzdGJveCAuZm9ybS1jb250cm9sLXNlbGVjdCAuZHVhbC1saXN0Ym94X19zZWFyY2ggeyBhcHBlYXJhbmNlOiBub25lOyAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7IH0KCi5mb3JtLWNvbnRyb2wtc2VsZWN0LW11bHRpcGxlIC5jdXN0b20tc2VsZWN0IHsgcGFkZGluZy10b3A6IDAuMzc1cmVtOyBwYWRkaW5nLWJvdHRvbTogMC44NzVyZW07IH0KCi5mb3JtLWNvbnRyb2wtc2VsZWN0LW11bHRpcGxlIC5jdXN0b20tc2VsZWN0IG9wdGlvbiB7IGJvcmRlci1yYWRpdXM6IDNweDsgcGFkZGluZzogNXB4IC41cmVtOyBtYXJnaW46IDJweCAtLjVyZW07IGN1cnNvcjogcG9pbnRlcjsgY29sb3I6ICM1MjY0ODQ7IH0KCi5mb3JtLWNvbnRyb2wtc2VsZWN0LW11bHRpcGxlIC5jdXN0b20tc2VsZWN0IG9wdGlvbjpsYXN0LWNoaWxkIHsgbWFyZ2luLWJvdHRvbTogLTAuNXJlbTsgfQoKLmZvcm0tY29udHJvbC1zZWxlY3Q6YWZ0ZXIgeyBmb250LWZhbWlseTogIk5pb2ljb24iOyBjb250ZW50OiAi7qeFIjsgcG9pbnRlci1ldmVudHM6IG5vbmU7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgZGlzcGxheTogaW5saW5lLWZsZXg7IGp1c3RpZnktY29udGVudDogY2VudGVyOyBhbGlnbi1pdGVtczogY2VudGVyOyByaWdodDogMDsgdG9wOiA1MCU7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsgd2lkdGg6IGNhbGMoMXJlbSArIDEycHgpOyBoZWlnaHQ6IGNhbGMoMXJlbSArIDEycHgpOyB9Cgp0ZXh0YXJlYS5uby1yZXNpemUgeyByZXNpemU6IG5vbmU7IH0KCnRleHRhcmVhLmZvcm0tY29udHJvbCwgLmR1YWwtbGlzdGJveCB0ZXh0YXJlYS5kdWFsLWxpc3Rib3hfX3NlYXJjaCB7IG1pbi1oZWlnaHQ6IDEyMnB4OyBwYWRkaW5nLXRvcDogMC42NTYyNXJlbTsgfQoKdGV4dGFyZWEudGV4dGFyZWEtc20geyBtaW4taGVpZ2h0OiA5MnB4OyB9Cgp0ZXh0YXJlYS50ZXh0YXJlYS1sZyB7IG1pbi1oZWlnaHQ6IDIwOHB4OyB9Cgp0ZXh0YXJlYS50ZXh0YXJlYS1hdXRvIHsgbWluLWhlaWdodDogMDsgfQoKLmN1c3RvbS1maWxlLWlucHV0IH4gLmVycm9yLCAuY3VzdG9tLWZpbGUtaW5wdXQgfiAuaW52YWxpZCwgLmZvcm0tY29udHJvbCB+IC5lcnJvciwgLmR1YWwtbGlzdGJveCAuZHVhbC1saXN0Ym94X19zZWFyY2ggfiAuZXJyb3IsIC5mb3JtLWNvbnRyb2wgfiAuaW52YWxpZCwgLmR1YWwtbGlzdGJveCAuZHVhbC1saXN0Ym94X19zZWFyY2ggfiAuaW52YWxpZCB7IGNvbG9yOiAjZTg1MzQ3OyBmb250LXNpemU6IDExcHg7IGZvbnQtc3R5bGU6IGl0YWxpYzsgfQoKLmN1c3RvbS1idG4tY2hlY2sgeyBwb3NpdGlvbjogcmVsYXRpdmU7IH0KCi5jdXN0b20tYnRuLWNoZWNrIGlucHV0IHsgcG9zaXRpb246IGFic29sdXRlOyBvcGFjaXR5OiAwOyBoZWlnaHQ6IDFweDsgd2lkdGg6IDFweDsgfQoKLmN1c3RvbS1idG4tY2hlY2sgaW5wdXQ6Y2hlY2tlZCB+IGxhYmVsIHsgY29sb3I6ICNmZmY7IGJvcmRlci1jb2xvcjogIzA5NzFmZTsgYmFja2dyb3VuZC1jb2xvcjogIzA5NzFmZTsgfQoKLmN1c3RvbS1idG4tY2hlY2sgbGFiZWwgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGJvcmRlcjogMnB4IHNvbGlkICNlYmVlZjI7IGJhY2tncm91bmQtY29sb3I6ICNlYmVlZjI7IGZvbnQtd2VpZ2h0OiA1MDA7IGNvbG9yOiAjNTI2NDg0OyB0ZXh0LWFsaWduOiBjZW50ZXI7IHBhZGRpbmc6IDAuNDM3NXJlbSAxLjEyNXJlbTsgZm9udC1zaXplOiAwLjgxMjVyZW07IGxpbmUtaGVpZ2h0OiAxLjI1cmVtOyBib3JkZXItcmFkaXVzOiA0cHg7IHRyYW5zaXRpb246IGFsbCAuM3M7IG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDsgfQoKLmN1c3RvbS1idG4tc20gbGFiZWwgeyBwYWRkaW5nOiAwLjI1cmVtIDFyZW07IGZvbnQtc2l6ZTogMC43NXJlbTsgbGluZS1oZWlnaHQ6IDEuMjVyZW07IH0KCi5jdXN0b20tYnRuLXJvdW5kIGxhYmVsIHsgYm9yZGVyLXJhZGl1czogNjBweDsgfQoKLmN1c3RvbS1idG4tb3V0bGluZSBsYWJlbCB7IGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyB9CgouY3VzdG9tLWNvbnRyb2wgeyBkaXNwbGF5OiBpbmxpbmUtZmxleDsgbWluLWhlaWdodDogMS41cmVtOyB9CgouY3VzdG9tLWNvbnRyb2wubm90ZXh0IHsgbWFyZ2luLWxlZnQ6IC0wLjc1cmVtOyB9CgouY3VzdG9tLWNvbnRyb2wubm90ZXh0IC5jdXN0b20tY29udHJvbC1sYWJlbCB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgbGVmdDogMC43NXJlbTsgfQoKLmN1c3RvbS1jb250cm9sLWxhYmVsIHsgZm9udC1zaXplOiAxNHB4OyBsaW5lLWhlaWdodDogMS4yNXJlbTsgcGFkZGluZy10b3A6IDAuMTI1cmVtOyB9CgouY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSwgLmN1c3RvbS1jb250cm9sLWxhYmVsOjphZnRlciB7IHRvcDogMDsgfQoKLmN1c3RvbS1jb250cm9sLWxhYmVsOmFmdGVyIHsgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyOyBiYWNrZ3JvdW5kLWltYWdlOiBub25lICFpbXBvcnRhbnQ7IGZvbnQtZmFtaWx5OiAiTmlvaWNvbiI7IGNvbG9yOiAjZmZmOyBvcGFjaXR5OiAwOyB9CgouY3VzdG9tLWNoZWNrYm94IC5jdXN0b20tY29udHJvbC1sYWJlbDphZnRlciB7IGNvbnRlbnQ6ICLupr0iOyB9CgouY3VzdG9tLXJhZGlvIC5jdXN0b20tY29udHJvbC1sYWJlbDphZnRlciB7IGNvbnRlbnQ6ICLupoAiOyB9CgouY3VzdG9tLWNvbnRyb2wgLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmFmdGVyIHsgb3BhY2l0eTogMTsgfQoKLmN1c3RvbS1jb250cm9sIC5jdXN0b20tY29udHJvbC1pbnB1dFtkaXNhYmxlZF0gfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWwsIC5jdXN0b20tY29udHJvbCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6ZGlzYWJsZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWwgeyBvcGFjaXR5OiAuNzsgY29sb3I6ICMzNjRhNjM7IH0KCi5jdXN0b20tY29udHJvbC1zbSB7IG1pbi1oZWlnaHQ6IDEuMTI1cmVtOyBwYWRkaW5nLWxlZnQ6IDEuNjI1cmVtOyB9CgouY3VzdG9tLWNvbnRyb2wtc20ubm90ZXh0IHsgbWFyZ2luLWxlZnQ6IC0wLjVyZW07IH0KCi5jdXN0b20tY29udHJvbC1zbS5ub3RleHQgLmN1c3RvbS1jb250cm9sLWxhYmVsIHsgbGVmdDogMC41cmVtOyB9CgouY3VzdG9tLWNvbnRyb2wtc20gLmN1c3RvbS1jb250cm9sLWxhYmVsIHsgZm9udC1zaXplOiAxMnB4OyBsaW5lLWhlaWdodDogMS4xMjVyZW07IHBhZGRpbmctdG9wOiAwOyB9CgouY3VzdG9tLWNvbnRyb2wtc20gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsIC5jdXN0b20tY29udHJvbC1zbSAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmFmdGVyIHsgbGVmdDogLTEuNjI1cmVtOyB3aWR0aDogMS4xMjVyZW07IGhlaWdodDogMS4xMjVyZW07IH0KCi5jdXN0b20tY29udHJvbC1zbSAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6YWZ0ZXIgeyBmb250LXNpemU6IDAuOWVtOyB9CgouY3VzdG9tLWNvbnRyb2wtbGcgeyBtaW4taGVpZ2h0OiAycmVtOyBwYWRkaW5nLWxlZnQ6IDNyZW07IH0KCi5jdXN0b20tY29udHJvbC1sZy5ub3RleHQgeyBtYXJnaW4tbGVmdDogLTFyZW07IH0KCi5jdXN0b20tY29udHJvbC1sZy5ub3RleHQgLmN1c3RvbS1jb250cm9sLWxhYmVsIHsgbGVmdDogMXJlbTsgfQoKLmN1c3RvbS1jb250cm9sLWxnIC5jdXN0b20tY29udHJvbC1sYWJlbCB7IGZvbnQtc2l6ZTogMTVweDsgbGluZS1oZWlnaHQ6IDEuMzc1cmVtOyBwYWRkaW5nLXRvcDogMC4zMTI1cmVtOyB9CgouY3VzdG9tLWNvbnRyb2wtbGcgLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsIC5jdXN0b20tY29udHJvbC1sZyAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmFmdGVyIHsgbGVmdDogLTNyZW07IHdpZHRoOiAycmVtOyBoZWlnaHQ6IDJyZW07IH0KCi5jdXN0b20tY29udHJvbC1sZyAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6YWZ0ZXIgeyBmb250LXNpemU6IDEuMmVtOyB9CgouY3VzdG9tLWNvbnRyb2wtaW5wdXQgeyBwb3NpdGlvbjogYWJzb2x1dGU7IGhlaWdodDogMXB4OyB3aWR0aDogMXB4OyBvcGFjaXR5OiAwOyB9CgouY3VzdG9tLWNvbnRyb2wuaXMtcmlnaHQgeyBwYWRkaW5nLWxlZnQ6IDA7IHBhZGRpbmctcmlnaHQ6IDIuMjVyZW07IH0KCi5jdXN0b20tY29udHJvbC5pcy1yaWdodCAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6YmVmb3JlLCAuY3VzdG9tLWNvbnRyb2wuaXMtcmlnaHQgLmN1c3RvbS1jb250cm9sLWxhYmVsOmFmdGVyIHsgbGVmdDogYXV0bzsgcmlnaHQ6IC0yLjI1cmVtOyB9CgouY3VzdG9tLWNvbnRyb2wuaXMtcmlnaHQuY3VzdG9tLWNvbnRyb2wtc20geyBwYWRkaW5nLXJpZ2h0OiAxLjYyNXJlbTsgfQoKLmN1c3RvbS1jb250cm9sLmlzLXJpZ2h0LmN1c3RvbS1jb250cm9sLXNtIC5jdXN0b20tY29udHJvbC1sYWJlbDpiZWZvcmUsIC5jdXN0b20tY29udHJvbC5pcy1yaWdodC5jdXN0b20tY29udHJvbC1zbSAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6YWZ0ZXIgeyByaWdodDogLTEuNjI1cmVtOyB9CgouY3VzdG9tLWNvbnRyb2wuaXMtcmlnaHQuY3VzdG9tLWNvbnRyb2wtbGcgeyBwYWRkaW5nLXJpZ2h0OiAzcmVtOyB9CgouY3VzdG9tLWNvbnRyb2wuaXMtcmlnaHQuY3VzdG9tLWNvbnRyb2wtbGcgLmN1c3RvbS1jb250cm9sLWxhYmVsOmJlZm9yZSwgLmN1c3RvbS1jb250cm9sLmlzLXJpZ2h0LmN1c3RvbS1jb250cm9sLWxnIC5jdXN0b20tY29udHJvbC1sYWJlbDphZnRlciB7IHJpZ2h0OiAtM3JlbTsgfQoKLmN1c3RvbS1maWxlLWxhYmVsIHsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgb3ZlcmZsb3c6IGhpZGRlbjsgfQoKLmN1c3RvbS1zZWxlY3QgeyBiYWNrZ3JvdW5kOiAjZmZmOyB9CgouY3VzdG9tLXN3aXRjaCB7IHBhZGRpbmctbGVmdDogMy43NXJlbTsgfQoKLmN1c3RvbS1zd2l0Y2ggLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgeyBsZWZ0OiAtMy43NXJlbTsgd2lkdGg6IDNyZW07IGJvcmRlci1yYWRpdXM6IDEuNXJlbTsgfQoKLmN1c3RvbS1zd2l0Y2ggLmN1c3RvbS1jb250cm9sLWxhYmVsOjphZnRlciB7IG9wYWNpdHk6IDE7IHRvcDogMC4yNXJlbTsgbGVmdDogY2FsYygtMy43NXJlbSArIDRweCk7IHdpZHRoOiAxcmVtOyBoZWlnaHQ6IDFyZW07IGJvcmRlci1yYWRpdXM6IDEuNXJlbTsgfQoKLmN1c3RvbS1zd2l0Y2ggLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmFmdGVyIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKGNhbGMoMnJlbSAtIDhweCkpOyB9CgouY3VzdG9tLXN3aXRjaC5jdXN0b20tY29udHJvbC1zbSB7IHBhZGRpbmctbGVmdDogMi40Njg3NXJlbTsgfQoKLmN1c3RvbS1zd2l0Y2guY3VzdG9tLWNvbnRyb2wtc20gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgeyBsZWZ0OiAtMi40Njg3NXJlbTsgd2lkdGg6IDEuOTY4NzVyZW07IGJvcmRlci1yYWRpdXM6IDAuOTg0MzhyZW07IH0KCi5jdXN0b20tc3dpdGNoLmN1c3RvbS1jb250cm9sLXNtIC5jdXN0b20tY29udHJvbC1sYWJlbDo6YWZ0ZXIgeyB0b3A6IDAuMjM3NXJlbTsgbGVmdDogY2FsYygtMi40Njg3NXJlbSArIDRweCk7IHdpZHRoOiAwLjY1cmVtOyBoZWlnaHQ6IDAuNjVyZW07IGJvcmRlci1yYWRpdXM6IDAuOTg0MzhyZW07IH0KCi5jdXN0b20tc3dpdGNoLmN1c3RvbS1jb250cm9sLXNtIC5jdXN0b20tY29udHJvbC1pbnB1dDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjphZnRlciB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWChjYWxjKDEuMzE4NzVyZW0gLSA4cHgpKTsgfQoKLmN1c3RvbS1zd2l0Y2guY3VzdG9tLWNvbnRyb2wtbGcgeyBwYWRkaW5nLWxlZnQ6IDVyZW07IH0KCi5jdXN0b20tc3dpdGNoLmN1c3RvbS1jb250cm9sLWxnIC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsgbGVmdDogLTVyZW07IHdpZHRoOiA0cmVtOyBib3JkZXItcmFkaXVzOiAycmVtOyB9CgouY3VzdG9tLXN3aXRjaC5jdXN0b20tY29udHJvbC1sZyAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmFmdGVyIHsgdG9wOiAwLjM3NXJlbTsgbGVmdDogY2FsYygtNXJlbSArIDZweCk7IHdpZHRoOiAxLjI1cmVtOyBoZWlnaHQ6IDEuMjVyZW07IGJvcmRlci1yYWRpdXM6IDJyZW07IH0KCi5jdXN0b20tc3dpdGNoLmN1c3RvbS1jb250cm9sLWxnIC5jdXN0b20tY29udHJvbC1pbnB1dDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjphZnRlciB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWChjYWxjKDIuNzVyZW0gLSAxMnB4KSk7IH0KCi5jdXN0b20tc3dpdGNoLmlzLXJpZ2h0IHsgcGFkZGluZy1sZWZ0OiAwOyBwYWRkaW5nLXJpZ2h0OiAzLjc1cmVtOyB9CgouY3VzdG9tLXN3aXRjaC5pcy1yaWdodCAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6YmVmb3JlLCAuY3VzdG9tLXN3aXRjaC5pcy1yaWdodCAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6YWZ0ZXIgeyBsZWZ0OiBhdXRvOyByaWdodDogLTIuMjVyZW07IH0KCi5jdXN0b20tc3dpdGNoLmlzLXJpZ2h0IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YmVmb3JlIHsgcmlnaHQ6IC0zLjc1cmVtOyB9CgouY3VzdG9tLXN3aXRjaC5pcy1yaWdodCAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmFmdGVyIHsgcmlnaHQ6IGNhbGMoLTMuNzVyZW0gKyA0cHgpOyB9CgouY3VzdG9tLXN3aXRjaC5pcy1yaWdodCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YWZ0ZXIgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoY2FsYygoLTJyZW0gKyA4cHgpKSk7IH0KCi5jdXN0b20tc3dpdGNoLmlzLXJpZ2h0LmN1c3RvbS1jb250cm9sLXNtIHsgcGFkZGluZy1yaWdodDogMi40Njg3NXJlbTsgfQoKLmN1c3RvbS1zd2l0Y2guaXMtcmlnaHQuY3VzdG9tLWNvbnRyb2wtc20gLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUgeyByaWdodDogLTIuNDY4NzVyZW07IH0KCi5jdXN0b20tc3dpdGNoLmlzLXJpZ2h0LmN1c3RvbS1jb250cm9sLXNtIC5jdXN0b20tY29udHJvbC1sYWJlbDo6YWZ0ZXIgeyByaWdodDogY2FsYygtMi40Njg3NXJlbSArIDRweCk7IH0KCi5jdXN0b20tc3dpdGNoLmlzLXJpZ2h0LmN1c3RvbS1jb250cm9sLXNtIC5jdXN0b20tY29udHJvbC1pbnB1dDpjaGVja2VkIH4gLmN1c3RvbS1jb250cm9sLWxhYmVsOjphZnRlciB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWChjYWxjKCgtMS4zMTg3NXJlbSArIDhweCkpKTsgfQoKLmN1c3RvbS1zd2l0Y2guaXMtcmlnaHQuY3VzdG9tLWNvbnRyb2wtbGcgeyBwYWRkaW5nLXJpZ2h0OiA1cmVtOyB9CgouY3VzdG9tLXN3aXRjaC5pcy1yaWdodC5jdXN0b20tY29udHJvbC1sZyAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7IHJpZ2h0OiAtNXJlbTsgfQoKLmN1c3RvbS1zd2l0Y2guaXMtcmlnaHQuY3VzdG9tLWNvbnRyb2wtbGcgLmN1c3RvbS1jb250cm9sLWxhYmVsOjphZnRlciB7IHJpZ2h0OiBjYWxjKC01cmVtICsgNnB4KTsgfQoKLmN1c3RvbS1zd2l0Y2guaXMtcmlnaHQuY3VzdG9tLWNvbnRyb2wtbGcgLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmFmdGVyIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKGNhbGMoKC0yLjc1cmVtICsgMTJweCkpKTsgfQoKbGFiZWwgeyBjdXJzb3I6IHBvaW50ZXI7IH0KCmlucHV0W3R5cGU9InJhZGlvIl06Y2hlY2tlZCB+IGxhYmVsIHsgY3Vyc29yOiBkZWZhdWx0OyB9CgouaXMtYWx0ZXIgLmZvcm0tY29udHJvbCB+LCAuaXMtYWx0ZXIgLmR1YWwtbGlzdGJveCAuZHVhbC1saXN0Ym94X19zZWFyY2ggfiwgLmR1YWwtbGlzdGJveCAuaXMtYWx0ZXIgLmR1YWwtbGlzdGJveF9fc2VhcmNoIH4sIC5jdXN0b20tY29udHJvbCB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgfQoKLmlzLWFsdGVyIC5mb3JtLWNvbnRyb2wgfiAuaW52YWxpZCwgLmlzLWFsdGVyIC5kdWFsLWxpc3Rib3ggLmR1YWwtbGlzdGJveF9fc2VhcmNoIH4gLmludmFsaWQsIC5kdWFsLWxpc3Rib3ggLmlzLWFsdGVyIC5kdWFsLWxpc3Rib3hfX3NlYXJjaCB+IC5pbnZhbGlkLCAuY3VzdG9tLWNvbnRyb2wgLmludmFsaWQgeyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDA7IGNvbG9yOiAjZmZmOyBmb250LXNpemU6IDExcHg7IGxpbmUtaGVpZ2h0OiAxOyBib3R0b206IGNhbGMoMTAwJSArIDRweCk7IGJhY2tncm91bmQ6ICNlZDc1NmI7IHBhZGRpbmc6IC4zcmVtIC41cmVtOyB6LWluZGV4OiAxOyBib3JkZXItcmFkaXVzOiAzcHg7IHdoaXRlLXNwYWNlOiBub3dyYXA7IH0KCi5pcy1hbHRlciAuZm9ybS1jb250cm9sIH4gLmludmFsaWQ6YmVmb3JlLCAuaXMtYWx0ZXIgLmR1YWwtbGlzdGJveCAuZHVhbC1saXN0Ym94X19zZWFyY2ggfiAuaW52YWxpZDpiZWZvcmUsIC5kdWFsLWxpc3Rib3ggLmlzLWFsdGVyIC5kdWFsLWxpc3Rib3hfX3NlYXJjaCB+IC5pbnZhbGlkOmJlZm9yZSwgLmN1c3RvbS1jb250cm9sIC5pbnZhbGlkOmJlZm9yZSB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgY29udGVudDogJyc7IGhlaWdodDogMDsgd2lkdGg6IDA7IGJvcmRlci1sZWZ0OiA2cHggc29saWQgI2VkNzU2YjsgYm9yZGVyLXJpZ2h0OiA2cHggc29saWQgdHJhbnNwYXJlbnQ7IGxlZnQ6IDEwcHg7IGJvcmRlci1ib3R0b206IDZweCBzb2xpZCB0cmFuc3BhcmVudDsgYm90dG9tOiAtNnB4OyB9CgouaXMtYWx0ZXIgLmZvcm0tY29udHJvbCB+IC5pbnZhbGlkLCAuaXMtYWx0ZXIgLmR1YWwtbGlzdGJveCAuZHVhbC1saXN0Ym94X19zZWFyY2ggfiAuaW52YWxpZCwgLmR1YWwtbGlzdGJveCAuaXMtYWx0ZXIgLmR1YWwtbGlzdGJveF9fc2VhcmNoIH4gLmludmFsaWQgeyBsZWZ0OiBhdXRvOyByaWdodDogMDsgfQoKLmlzLWFsdGVyIC5mb3JtLWNvbnRyb2wgfiAuaW52YWxpZDo6YmVmb3JlLCAuaXMtYWx0ZXIgLmR1YWwtbGlzdGJveCAuZHVhbC1saXN0Ym94X19zZWFyY2ggfiAuaW52YWxpZDo6YmVmb3JlLCAuZHVhbC1saXN0Ym94IC5pcy1hbHRlciAuZHVhbC1saXN0Ym94X19zZWFyY2ggfiAuaW52YWxpZDo6YmVmb3JlIHsgbGVmdDogYXV0bzsgcmlnaHQ6IDEwcHg7IGJvcmRlci1yaWdodC1jb2xvcjogI2VkNzU2YjsgYm9yZGVyLWxlZnQtY29sb3I6IHRyYW5zcGFyZW50OyBib3R0b206IC00cHg7IH0KCi50YWJsZSB0aGVhZCB0cjpsYXN0LWNoaWxkIHRoIHsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkYmRmZWE7IH0KCi50YWJsZS1kYXJrIHRoZWFkIHRyOmxhc3QtY2hpbGQgdGgsIC50YWJsZSB0aGVhZC50aGVhZC1kYXJrIHRyOmxhc3QtY2hpbGQgdGggeyBib3JkZXItY29sb3I6ICMzYzRkNjI7IH0KCi50YWJsZSB0ZDpmaXJzdC1jaGlsZCwgLnRhYmxlIHRoOmZpcnN0LWNoaWxkIHsgcGFkZGluZy1sZWZ0OiAxLjI1cmVtOyB9CgoudGFibGUgdGQ6bGFzdC1jaGlsZCwgLnRhYmxlIHRoOmxhc3QtY2hpbGQgeyBwYWRkaW5nLXJpZ2h0OiAxLjI1cmVtOyB9CgoudGFibGUgdGggeyBsaW5lLWhlaWdodDogMS4xOyB9CgoudGFibGUgdGgub3ZlcmxpbmUtdGl0bGUgeyBsaW5lLWhlaWdodDogMS4yNXJlbTsgZm9udC13ZWlnaHQ6IDUwMDsgfQoKLnRhYmxlIGNhcHRpb24geyBmb250LXN0eWxlOiBpdGFsaWM7IHBhZGRpbmctbGVmdDogMS4yNXJlbTsgfQoKLnRhYmxlLWJvcmRlcmVkIHRkLCAudGFibGUtYm9yZGVyZWQgdGggeyBwYWRkaW5nLWxlZnQ6IDFyZW07IHBhZGRpbmctcmlnaHQ6IDFyZW07IH0KCi50YWJsZS1wbGFpbiB0ZDpmaXJzdC1jaGlsZCwgLnRhYmxlLXBsYWluIHRoOmZpcnN0LWNoaWxkIHsgcGFkZGluZy1sZWZ0OiAwOyB9CgoudGFibGUtcGxhaW4gdGQ6bGFzdC1jaGlsZCwgLnRhYmxlLXBsYWluIHRoOmxhc3QtY2hpbGQgeyBwYWRkaW5nLXJpZ2h0OiAwOyB9CgoudGFibGUtbGcgdGQgeyBwYWRkaW5nLXRvcDogMXJlbTsgcGFkZGluZy1ib3R0b206IDFyZW07IH0KCi50YWJsZS1sZyB0aCB7IHBhZGRpbmctdG9wOiAwLjc1cmVtOyBwYWRkaW5nLWJvdHRvbTogMC43NXJlbTsgfQoKLnRhYmxlLXZtIHRkLCAudGFibGUtdm0gdGgsIC50YWJsZSB0ZC52bSwgLnRhYmxlIHRoLnZtIHsgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7IC50YWJsZS1sZyB0ZDpmaXJzdC1jaGlsZCwgLnRhYmxlLWxnIHRoOmZpcnN0LWNoaWxkIHsgcGFkZGluZy1sZWZ0OiAxLjVyZW07IH0KICAudGFibGUtbGcgdGQ6bGFzdC1jaGlsZCwgLnRhYmxlLWxnIHRoOmxhc3QtY2hpbGQgeyBwYWRkaW5nLXJpZ2h0OiAxLjVyZW07IH0gfQoKLm1lZGlhLWNlbnRlciB7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IH0KCi5tZWRpYS1vYmplY3QgeyBkaXNwbGF5OiBpbmxpbmUtZmxleDsgfQoKLm1lZGlhID4gKjpmaXJzdC1jaGlsZCB7IGZsZXgtc2hyaW5rOiAwOyB9CgoubWVkaWEgPiAqOmxhc3QtY2hpbGQgeyBmbGV4LWdyb3c6IDE7IG1heC13aWR0aDogMTAwJTsgfQoKLm5hdiB7IG1hcmdpbjogLS41cmVtIC0xcmVtOyB9CgoubmF2IC5uYXYtbGluayB7IGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyB9CgoubmF2IC5uYXYtbGluayAuaWNvbiArIHNwYW4sIC5uYXYgLm5hdi1saW5rIHNwYW4gKyAuaWNvbiB7IG1hcmdpbi1sZWZ0OiAwLjc1cmVtOyB9CgoubmF2IC5uYXYtbGluayAuaWNvbiB7IGZvbnQtc2l6ZTogMS4zZW07IH0KCi5uYXYtdGFicyB7IGZvbnQtZmFtaWx5OiBOdW5pdG8sIHNhbnMtc2VyaWY7IG1hcmdpbjogMDsgZm9udC1zaXplOiAwLjgxMjVyZW07IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGJkZmVhOyB9CgoubmF2LXRhYnMtczIgeyBib3JkZXItYm90dG9tOiBub25lOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgfQoKLm5hdi10YWJzICsgLnRhYi1jb250ZW50IHsgbWFyZ2luLXRvcDogMS4yNXJlbTsgfQoKLm5hdi10YWJzIC5uYXYtaXRlbSB7IHBhZGRpbmctcmlnaHQ6IDEuMjVyZW07IH0KCi5uYXYtdGFicyAubmF2LWl0ZW06bGFzdC1jaGlsZCB7IHBhZGRpbmctcmlnaHQ6IDA7IH0KCi5uYXYtdGFicyAubmF2LWl0ZW0uYWN0aXZlIC5uYXYtbGluayB7IGNvbG9yOiAjMDk3MWZlOyB9CgoubmF2LXRhYnMgLm5hdi1pdGVtLmFjdGl2ZSAubmF2LWxpbms6YWZ0ZXIgeyBvcGFjaXR5OiAxOyB9CgoubmF2LXRhYnMgLm5hdi1saW5rIHsgcGFkZGluZzogMXJlbSAwOyBmb250LXdlaWdodDogNzAwOyBjb2xvcjogIzUyNjQ4NDsgcG9zaXRpb246IHJlbGF0aXZlOyBib3JkZXI6IG5vbmU7IG91dGxpbmU6IG5vbmU7IGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyB9CgoubmF2LXRhYnMgLm5hdi1saW5rIC5pY29uIHsgZm9udC1zaXplOiAxLjRlbTsgfQoKLm5hdi10YWJzIC5uYXYtbGluayAuaWNvbiArIHNwYW4geyBtYXJnaW4tbGVmdDogMC41cmVtOyB9CgoubmF2LXRhYnMgLm5hdi1saW5rIC5iYWRnZSB7IG1hcmdpbi1sZWZ0OiAwLjI1cmVtOyB9CgoubmF2LXRhYnMgLm5hdi1saW5rOmhvdmVyIHsgY29sb3I6ICMzNjRhNjM7IH0KCi5uYXYtdGFicyAubmF2LWxpbms6Zm9jdXMgeyBjb2xvcjogIzA5NzFmZTsgfQoKLm5hdi10YWJzIC5uYXYtbGluazpiZWZvcmUsIC5uYXYtdGFicyAubmF2LWxpbms6YWZ0ZXIgeyBwb3NpdGlvbjogYWJzb2x1dGU7IGNvbnRlbnQ6ICcnOyB9CgoubmF2LXRhYnMgLm5hdi1saW5rOmFmdGVyIHsgbGVmdDogMDsgcmlnaHQ6IDA7IGJvdHRvbTogMDsgaGVpZ2h0OiAzcHg7IGJhY2tncm91bmQ6ICMwOTcxZmU7IG9wYWNpdHk6IDA7IH0KCi5uYXYtdGFicyAubmF2LWxpbmsuYWN0aXZlIHsgY29sb3I6ICMwOTcxZmU7IGJvcmRlcjogbm9uZTsgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH0KCi5uYXYtdGFicyAubmF2LWxpbmsuYWN0aXZlOmFmdGVyIHsgb3BhY2l0eTogMTsgfQoKLm5hdi1zbSB7IGZvbnQtc2l6ZTogMC44MTI1cmVtOyB9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsgLm5hdi10YWJzIC5uYXYtaXRlbSB7IHBhZGRpbmctcmlnaHQ6IDEuNXJlbTsgfQogIC5uYXYtdGFicy1zbSAubmF2LWl0ZW0geyBwYWRkaW5nLXJpZ2h0OiAxLjI1cmVtOyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgeyAubmF2LXRhYnMgLm5hdi1pdGVtIHsgcGFkZGluZy1yaWdodDogMS43NXJlbTsgfQogIC5uYXYtdGFicy1zbSAubmF2LWl0ZW0geyBwYWRkaW5nLXJpZ2h0OiAxLjI1cmVtOyB9CiAgLm5hdi10YWJzIC5uYXYtbGluayB7IGZvbnQtc2l6ZTogMC44NzVyZW07IH0gfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgeyAubmF2LXRhYnMgLm5hdi1pdGVtIHsgcGFkZGluZy1yaWdodDogMi4yNXJlbTsgfQogIC5uYXYtdGFicy1zbSAubmF2LWl0ZW0geyBwYWRkaW5nLXJpZ2h0OiAxLjI1cmVtOyB9IH0KCkBtZWRpYSAobWF4LXdpZHRoOiA1NzUuOThweCkgeyAubmF2LXRhYnMuaXMtc3RyZXRjaCB7IG1hcmdpbi1sZWZ0OiAtMThweDsgbWFyZ2luLXJpZ2h0OiAtMThweDsgcGFkZGluZy1sZWZ0OiAxOHB4OyBwYWRkaW5nLXJpZ2h0OiAxOHB4OyB9IH0KCi5uYXYtaXRlbS10cmlnZ2VyIHsgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IG1hcmdpbjogLTFweCAtLjVyZW0gMCBhdXRvOyB9CgoubmF2LXRhYnMtY2FyZCB7IHBhZGRpbmctbGVmdDogMS4yNXJlbTsgcGFkZGluZy1yaWdodDogMS4yNXJlbTsgZm9udC1mYW1pbHk6IFJvYm90bywgc2Fucy1zZXJpZjsgfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7IC5uYXYtdGFicy1jYXJkIHsgcGFkZGluZy1sZWZ0OiAxLjVyZW07IHBhZGRpbmctcmlnaHQ6IDEuNXJlbTsgfSB9CgpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsgLm5hdi10YWJzLW1iLWljb24gLm5hdi1pdGVtIHsgcGFkZGluZy1yaWdodDogLjc1cmVtOyB9CiAgLm5hdi10YWJzLW1iLWljb24gLm5hdi1saW5rIC5pY29uIHsgZm9udC1zaXplOiAxLjI1cmVtOyBwYWRkaW5nOiAwIC41cmVtOyB9CiAgLm5hdi10YWJzLW1iLWljb24gLm5hdi1saW5rIC5pY29uICsgc3BhbiB7IGRpc3BsYXk6IG5vbmU7IH0gfQoKQG1lZGlhIChtYXgtd2lkdGg6IDM1OXB4KSB7IC5uYXYtdGFicy1tYi1pY29uIC5uYXYtaXRlbSB7IHBhZGRpbmctcmlnaHQ6IC4zNXJlbTsgfSB9CgouaXMtbWVkaXVtLm5hdi10YWJzIC5uYXYtbGluayB7IHBhZGRpbmc6IC43NXJlbSAwOyB9CgoubW9kYWwtY29udGVudCB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgbWluLWhlaWdodDogNDBweDsgYm94LXNoYWRvdzogMHB4IDBweCAxcHggMHB4IHJnYmEoODIsIDEwMCwgMTMyLCAwLjIpLCAwcHggOHB4IDE1LjUycHggMC40OHB4IHJnYmEoMjgsIDQzLCA3MCwgMC4xNSk7IH0KCi5tb2RhbC1jb250ZW50ID4gLmNsb3NlIHsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IC43NXJlbTsgcmlnaHQ6IC43NXJlbTsgaGVpZ2h0OiAyLjI1cmVtOyB3aWR0aDogMi4yNXJlbTsgZGlzcGxheTogaW5saW5lLWZsZXg7IGp1c3RpZnktY29udGVudDogY2VudGVyOyBhbGlnbi1pdGVtczogY2VudGVyOyBjb2xvcjogIzUyNjQ4NDsgei1pbmRleDogMTsgdHJhbnNpdGlvbjogYWxsIC4zczsgfQoKLm1vZGFsLWJvZHkgLnN0cmV0Y2hlZCB7IGJvcmRlci1yYWRpdXM6IDA7IG1hcmdpbi1sZWZ0OiAtMS4yNXJlbTsgbWFyZ2luLXJpZ2h0OiAtMS4yNXJlbTsgcGFkZGluZy1sZWZ0OiAxLjI1cmVtOyBwYWRkaW5nLXJpZ2h0OiAxLjI1cmVtOyB9CgoubW9kYWwtYm9keSAuc3RyZXRjaGVkLmFsZXJ0IHsgYm9yZGVyOiBub25lOyB9CgoubW9kYWwtYm9keSAuc3RyZXRjaGVkLmFsZXJ0LWljb24geyBwYWRkaW5nLWxlZnQ6IDMuMjVyZW07IH0KCi5tb2RhbC1ib2R5LW1kIHsgcGFkZGluZzogMS43NXJlbSAxLjI1cmVtOyB9CgoubW9kYWwtYm9keS1tZCAuc3RyZXRjaGVkIHsgbWFyZ2luLWxlZnQ6IC0xLjI1cmVtOyBtYXJnaW4tcmlnaHQ6IC0xLjI1cmVtOyBwYWRkaW5nLWxlZnQ6IDEuMjVyZW07IHBhZGRpbmctcmlnaHQ6IDEuMjVyZW07IH0KCi5tb2RhbC1ib2R5LW1kIC5zdHJldGNoZWQuYWxlcnQtaWNvbiB7IHBhZGRpbmctbGVmdDogNC41cmVtOyB9CgoubW9kYWwtYm9keS1sZyB7IHBhZGRpbmc6IDIuMjVyZW0gMS4yNXJlbTsgfQoKLm1vZGFsLWJvZHktbGcgLnN0cmV0Y2hlZCB7IG1hcmdpbi1sZWZ0OiAtMS4yNXJlbTsgbWFyZ2luLXJpZ2h0OiAtMS4yNXJlbTsgcGFkZGluZy1sZWZ0OiAxLjI1cmVtOyBwYWRkaW5nLXJpZ2h0OiAxLjI1cmVtOyB9CgoubW9kYWwtYm9keS1sZyAuc3RyZXRjaGVkLmFsZXJ0LWljb24geyBwYWRkaW5nLWxlZnQ6IDQuNXJlbTsgfQoKLm1vZGFsLWZvb3Rlci1zdHJldGNoIHsganVzdGlmeS1jb250ZW50OiBzdHJldGNoOyB9CgoubW9kYWwtZm9vdGVyLWJldHdlZW4geyBkaXNwbGF5OiBmbGV4OyB3aWR0aDogMTAwJTsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyBmbGV4LXdyYXA6IHdyYXA7IG1hcmdpbjogLS4yNXJlbSAwOyB9CgoubW9kYWwtZm9vdGVyLWJldHdlZW4gPiBkaXYgeyBwYWRkaW5nOiAuMjVyZW0gMDsgfQoKLm1vZGFsLWRpYWxvZyB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IG1pbi1oZWlnaHQ6IGNhbGMoMTAwJSAtIDFyZW0pOyB9CgoubW9kYWwtZGlhbG9nOjpiZWZvcmUgeyBoZWlnaHQ6IGNhbGMoMTAwdmggLSAxcmVtKTsgfQoKLm1vZGFsLmZhZGUgLm1vZGFsLWRpYWxvZyB7IHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC0xMHB4KTsgfQoKLm1vZGFsLnpvb20gLm1vZGFsLWRpYWxvZyB7IHRyYW5zZm9ybTogc2NhbGUoMC45NSk7IHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjNzIGVhc2Utb3V0OyB9CgoubW9kYWwtZGlhbG9nLXRvcCB7IGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyB9CgoubW9kYWwuZmFkZSAubW9kYWwtZGlhbG9nLXRvcCB7IHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC0zMHB4KTsgfQoKLm1vZGFsLWRpYWxvZy1ib3R0b20geyBhbGlnbi1pdGVtczogZmxleC1lbmQ7IH0KCkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgeyAubW9kYWwtZGlhbG9nIHsgbWluLWhlaWdodDogY2FsYygxMDAlIC0gMy41cmVtKTsgfQogIC5tb2RhbC1kaWFsb2c6OmJlZm9yZSB7IGhlaWdodDogY2FsYygxMDB2aCAtIDMuNXJlbSk7IH0KICAubW9kYWwtYm9keSB7IHBhZGRpbmc6IDEuNXJlbSAxLjVyZW07IH0KICAubW9kYWwtYm9keSAuc3RyZXRjaGVkIHsgbWFyZ2luLWxlZnQ6IC0xLjVyZW07IG1hcmdpbi1yaWdodDogLTEuNXJlbTsgcGFkZGluZy1sZWZ0OiAxLjVyZW07IHBhZGRpbmctcmlnaHQ6IDEuNXJlbTsgfQogIC5tb2RhbC1ib2R5IC5zdHJldGNoZWQuYWxlcnQtaWNvbiB7IHBhZGRpbmctbGVmdDogMy41cmVtOyB9CiAgLm1vZGFsLWJvZHktc20geyBwYWRkaW5nOiAxLjI1cmVtIDEuMjVyZW07IH0KICAubW9kYWwtYm9keS1zbSAuc3RyZXRjaGVkIHsgbWFyZ2luLWxlZnQ6IC0xLjI1cmVtOyBtYXJnaW4tcmlnaHQ6IC0xLjI1cmVtOyBwYWRkaW5nLWxlZnQ6IDEuMjVyZW07IHBhZGRpbmctcmlnaHQ6IDEuMjVyZW07IH0KICAubW9kYWwtYm9keS1zbSAuc3RyZXRjaGVkLmFsZXJ0LWljb24geyBwYWRkaW5nLWxlZnQ6IDMuMjVyZW07IH0KICAubW9kYWwtYm9keS1tZCB7IHBhZGRpbmc6IDIuMjVyZW0gMi41cmVtOyB9CiAgLm1vZGFsLWJvZHktbWQgLnN0cmV0Y2hlZCB7IG1hcmdpbi1sZWZ0OiAtMi41cmVtOyBtYXJnaW4tcmlnaHQ6IC0yLjVyZW07IHBhZGRpbmctbGVmdDogMi41cmVtOyBwYWRkaW5nLXJpZ2h0OiAyLjVyZW07IH0KICAubW9kYWwtYm9keS1tZCAuc3RyZXRjaGVkLmFsZXJ0LWljb24geyBwYWRkaW5nLWxlZnQ6IDQuNXJlbTsgfQogIC5tb2RhbC1ib2R5LW1kIC5zdHJldGNoZWQuYWxlcnQtaWNvbiA+IC5pY29uIHsgbGVmdDogMi41cmVtOyB9CiAgLm1vZGFsLWJvZHktbGcgeyBwYWRkaW5nOiAzLjc1cmVtIDMuNzVyZW07IH0KICAubW9kYWwtYm9keS1sZyAuc3RyZXRjaGVkIHsgbWFyZ2luLWxlZnQ6IC0zLjc1cmVtOyBtYXJnaW4tcmlnaHQ6IC0zLjc1cmVtOyBwYWRkaW5nLWxlZnQ6IDMuNzVyZW07IHBhZGRpbmctcmlnaHQ6IDMuNzVyZW07IH0KICAubW9kYWwtYm9keS1sZyAuc3RyZXRjaGVkLmFsZXJ0LWljb24geyBwYWRkaW5nLWxlZnQ6IDUuNzVyZW07IH0KICAubW9kYWwtaGVhZGVyIHsgcGFkZGluZzogMXJlbSAxLjVyZW07IH0KICAubW9kYWwtaGVhZGVyLXNtIHsgcGFkZGluZzogMC43NXJlbSAxLjI1cmVtOyB9CiAgLm1vZGFsLWZvb3RlciB7IHBhZGRpbmc6IDFyZW0gMS41cmVtOyB9CiAgLm1vZGFsLWZvb3Rlci1zbSB7IHBhZGRpbmc6IDAuNzVyZW0gMS4yNXJlbTsgfSB9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsgLm1vZGFsLW1kIHsgbWF4LXdpZHRoOiA2MDBweDsgfSB9CgoucGFnaW5hdGlvbi1nb3RvIHsgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGZvbnQtc2l6ZTogLjgxMjVyZW07IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH0KCi5wYWdlLWxpbmsgeyBmb250LXNpemU6IDAuODEyNXJlbTsgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyOyBtaW4td2lkdGg6IGNhbGMoMXJlbSArIDEuMTI1cmVtICsgMnB4KTsgfQoKLnBhZ2luYXRpb24tc20gLnBhZ2UtbGluayB7IGxpbmUtaGVpZ2h0OiAwLjg3NXJlbTsgbWluLXdpZHRoOiBjYWxjKDAuODc1cmVtICsgMC44NzVyZW0gKyAycHgpOyB9CgoucGFnaW5hdGlvbi1sZyAucGFnZS1saW5rIHsgbGluZS1oZWlnaHQ6IDEuNXJlbTsgbWluLXdpZHRoOiBjYWxjKDEuNXJlbSArIDEuMTI1cmVtICsgMnB4KTsgfQoKLnBhZ2luYXRpb24teGwgLnBhZ2UtbGluayB7IHBhZGRpbmc6IDAuODc1cmVtIDAuNzVyZW07IGZvbnQtc2l6ZTogMS4zODEyNXJlbTsgbGluZS1oZWlnaHQ6IDEuNXJlbTsgbWluLXdpZHRoOiBjYWxjKDEuNXJlbSArIDEuNzVyZW0gKyAycHgpOyB9CgoucGFnZS1saW5rIC5pY29uIHsgZm9udC1zaXplOiAuODEyNXJlbTsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IH0KCi5wYWdlLWxpbms6bm90KFtocmVmXSkgeyBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgY29sb3I6IGluaGVyaXQ7IH0KCi5wYWdlLWxpbms6bm90KFtocmVmXSkgLmljb246YmVmb3JlIHsgcG9zaXRpb246IHJlbGF0aXZlOyB0b3A6IDFweDsgfQoKLnBhZ2UtbGluay1wcmV2IHNwYW4sIC5wYWdlLWxpbmstbmV4dCBzcGFuIHsgZGlzcGxheTogbm9uZTsgfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7IC5wYWdlLWxpbmstcHJldiBzcGFuLCAucGFnZS1saW5rLW5leHQgc3BhbiB7IGRpc3BsYXk6IGJsb2NrOyB9CiAgLnBhZ2UtbGluay1wcmV2IC5pY29uIHsgcGFkZGluZy1yaWdodDogMC4yNXJlbTsgfQogIC5wYWdlLWxpbmstbmV4dCAuaWNvbiB7IHBhZGRpbmctbGVmdDogMC4yNXJlbTsgfSB9CgoucHJvZ3Jlc3MtYmFyIHsgaGVpZ2h0OiAxMDAlOyBsaW5lLWhlaWdodDogMTsgfQoKLnByb2dyZXNzLXNtIHsgaGVpZ2h0OiAuMjVyZW07IH0KCi5wcm9ncmVzcy1tZCB7IGhlaWdodDogLjM3NXJlbTsgfQoKLnByb2dyZXNzLWxnIHsgaGVpZ2h0OiAxcmVtOyB9CgoucHJvZ3Jlc3MtcGlsbCwgLnByb2dyZXNzLXBpbGwgLnByb2dyZXNzLWJhciB7IGJvcmRlci1yYWRpdXM6IDEwMHB4OyB9CgoucHJvZ3Jlc3MtdGV4dCB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgY29sb3I6ICM4MDk0YWU7IG1hcmdpbi1ib3R0b206IDAuMjVyZW07IH0KCi5wcm9ncmVzcy1sYWJlbCB7IGZvbnQtc2l6ZTogMC44NzVyZW07IH0KCi5wcm9ncmVzcy1hbW91bnQgeyBmb250LXNpemU6IDEycHg7IHBhZGRpbmctbGVmdDogLjVyZW07IH0KCi5wcm9ncmVzcy1hbHQgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBvdmVyZmxvdzogdmlzaWJsZTsgfQoKLnByb2dyZXNzLWFsdCAucHJvZ3Jlc3MtYmFyIHsgYm9yZGVyLXJhZGl1czogMnB4OyB9CgoucHJvZ3Jlc3MtcmV2ZXJzZSB7IGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsgfQoKLnByb2dyZXNzLWJvcmRlcmVkIC5wcm9ncmVzcy1iYXIgeyBtYXJnaW4tdG9wOiAtMnB4OyBib3JkZXI6IDJweCBzb2xpZCAjZmZmOyBib3gtc2l6aW5nOiBjb250ZW50LWJveDsgfQoKLnByb2dyZXNzLWJvcmRlcmVkIC5wcm9ncmVzcy1iYXI6bm90KDpmaXJzdC1jaGlsZCkgeyBtYXJnaW4tbGVmdDogLTRweDsgfQoKLnByb2dyZXNzLWJvcmRlcmVkLnByb2dyZXNzLXJldmVyc2UgLnByb2dyZXNzLWJhciB7IG1hcmdpbi1sZWZ0OiAwOyB9CgoucHJvZ3Jlc3MtYm9yZGVyZWQucHJvZ3Jlc3MtcmV2ZXJzZSAucHJvZ3Jlc3MtYmFyOm5vdCg6bGFzdC1jaGlsZCkgeyBtYXJnaW4tbGVmdDogLTVweDsgfQoKLnRvYXN0IC5jbG9zZSB7IGRpc3BsYXk6IGlubGluZS1mbGV4OyBtYXJnaW4tcmlnaHQ6IC0wLjVyZW07IG1hcmdpbi1sZWZ0OiAwLjVyZW07IH0KCkBmb250LWZhY2UgeyBmb250LWZhbWlseTogIk5pb2ljb24iOyBzcmM6IHVybCgiLi4vZm9udHMvTmlvaWNvbi5lb3QiKTsgc3JjOiB1cmwoIi4uL2ZvbnRzL05pb2ljb24uZW90I2llZml4IikgZm9ybWF0KCJlbWJlZGRlZC1vcGVudHlwZSIpLCB1cmwoIi4uL2ZvbnRzL05pb2ljb24udHRmIikgZm9ybWF0KCJ0cnVldHlwZSIpLCB1cmwoIi4uL2ZvbnRzL05pb2ljb24ud29mZiIpIGZvcm1hdCgid29mZiIpLCB1cmwoIi4uL2ZvbnRzL05pb2ljb24uc3ZnI05pb2ljb24iKSBmb3JtYXQoInN2ZyIpOyBmb250LXdlaWdodDogbm9ybWFsOyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtZGlzcGxheTogYmxvY2s7IH0KCi5uaSB7IC8qIHVzZSAhaW1wb3J0YW50IHRvIHByZXZlbnQgaXNzdWVzIHdpdGggYnJvd3NlciBleHRlbnNpb25zIHRoYXQgY2hhbmdlIGZvbnRzICovIGZvbnQtZmFtaWx5OiAiTmlvaWNvbiIgIWltcG9ydGFudDsgc3BlYWs6IG5ldmVyOyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGZvbnQtdmFyaWFudDogbm9ybWFsOyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgbGluZS1oZWlnaHQ6IDE7IC8qIEJldHRlciBGb250IFJlbmRlcmluZyA9PT09PT09PT09PSAqLyAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTsgfQoKLm5pLWNlbnRvczpiZWZvcmUgeyBjb250ZW50OiAi7rOmIjsgfQoKLm5pLWNvdmlkOmJlZm9yZSB7IGNvbnRlbnQ6ICLus6ciOyB9CgoubmktZmVkb3JhOmJlZm9yZSB7IGNvbnRlbnQ6ICLus6giOyB9CgoubmktaG90LWZpbGw6YmVmb3JlIHsgY29udGVudDogIu6zqSI7IH0KCi5uaS1ob3Q6YmVmb3JlIHsgY29udGVudDogIu6zqiI7IH0KCi5uaS1saW51eC1zZXJ2ZXI6YmVmb3JlIHsgY29udGVudDogIu6zqyI7IH0KCi5uaS1saW51eDpiZWZvcmUgeyBjb250ZW50OiAi7rOsIjsgfQoKLm5pLW5vdGUtYWRkLWZpbGw6YmVmb3JlIHsgY29udGVudDogIu6zrSI7IH0KCi5uaS1yZXBlYXQtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7rOuIjsgfQoKLm5pLXRyYW54LWZpbGw6YmVmb3JlIHsgY29udGVudDogIu6zryI7IH0KCi5uaS11YnVudHU6YmVmb3JlIHsgY29udGVudDogIu6zsCI7IH0KCi5uaS12aXJ1czpiZWZvcmUgeyBjb250ZW50OiAi7rOxIjsgfQoKLm5pLWItY2hyb21lOmJlZm9yZSB7IGNvbnRlbnQ6ICLusaMiOyB9CgoubmktYi1lZGdlOmJlZm9yZSB7IGNvbnRlbnQ6ICLusaQiOyB9CgoubmktYi1maXJlZm94OmJlZm9yZSB7IGNvbnRlbnQ6ICLuspQiOyB9CgoubmktYi1pZTpiZWZvcmUgeyBjb250ZW50OiAi7rKVIjsgfQoKLm5pLWItb3BlcmE6YmVmb3JlIHsgY29udGVudDogIu6yliI7IH0KCi5uaS1iLXNhZmFyaTpiZWZvcmUgeyBjb250ZW50OiAi7rKXIjsgfQoKLm5pLWItc2k6YmVmb3JlIHsgY29udGVudDogIu6ymCI7IH0KCi5uaS1iLXVjOmJlZm9yZSB7IGNvbnRlbnQ6ICLuspkiOyB9CgoubmktYnJpY2stZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7rKaIjsgfQoKLm5pLWJyaWNrOmJlZm9yZSB7IGNvbnRlbnQ6ICLuspsiOyB9CgoubmktY29sLTNzOmJlZm9yZSB7IGNvbnRlbnQ6ICLuspwiOyB9CgoubmktY29sLTRzOmJlZm9yZSB7IGNvbnRlbnQ6ICLusp0iOyB9CgoubmktY29sLTJzOmJlZm9yZSB7IGNvbnRlbnQ6ICLusp4iOyB9CgoubmktY29tbWVudHM6YmVmb3JlIHsgY29udGVudDogIu6ynyI7IH0KCi5uaS1kb3Qtc3E6YmVmb3JlIHsgY29udGVudDogIu6yoCI7IH0KCi5uaS1kb3Q6YmVmb3JlIHsgY29udGVudDogIu6yoSI7IH0KCi5uaS1mb290ZXI6YmVmb3JlIHsgY29udGVudDogIu6yoiI7IH0KCi5uaS1oZWFkZXI6YmVmb3JlIHsgY29udGVudDogIu6yoyI7IH0KCi5uaS1oZWFkaW5nOmJlZm9yZSB7IGNvbnRlbnQ6ICLusqQiOyB9CgoubmktbGF5b3V0LWFsdC1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLusqUiOyB9CgoubmktbGF5b3V0LWFsdDpiZWZvcmUgeyBjb250ZW50OiAi7rKmIjsgfQoKLm5pLWxheW91dC1maWxsMTpiZWZvcmUgeyBjb250ZW50OiAi7rKnIjsgfQoKLm5pLWxheW91dDE6YmVmb3JlIHsgY29udGVudDogIu6yqCI7IH0KCi5uaS1saXN0LWluZGV4LWZpbGw6YmVmb3JlIHsgY29udGVudDogIu6yqSI7IH0KCi5uaS1saXN0LWluZGV4OmJlZm9yZSB7IGNvbnRlbnQ6ICLusqoiOyB9CgoubmktbGlzdC10aHVtYi1hbHQtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7rKrIjsgfQoKLm5pLWxpc3QtdGh1bWItYWx0OmJlZm9yZSB7IGNvbnRlbnQ6ICLusqwiOyB9CgoubmktbGlzdC10aHVtYi1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLusq0iOyB9CgoubmktbGlzdC10aHVtYjpiZWZvcmUgeyBjb250ZW50OiAi7rKuIjsgfQoKLm5pLW1hc29ucnktZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7rKvIjsgfQoKLm5pLW1hc29ucnk6YmVmb3JlIHsgY29udGVudDogIu6ysCI7IH0KCi5uaS1tZW51LWNpcmNsZWQ6YmVmb3JlIHsgY29udGVudDogIu6ysSI7IH0KCi5uaS1tZW51LXNxdWFyZWQ6YmVmb3JlIHsgY29udGVudDogIu6ysiI7IH0KCi5uaS1ub3RpY2U6YmVmb3JlIHsgY29udGVudDogIu6ysyI7IH0KCi5uaS1wZW4yOmJlZm9yZSB7IGNvbnRlbnQ6ICLusrQiOyB9CgoubmktcHJvcGVydHktYmxhbms6YmVmb3JlIHsgY29udGVudDogIu6ytSI7IH0KCi5uaS1wcm9wZXJ0LWJsYW5rOmJlZm9yZSB7IGNvbnRlbnQ6ICLusrUiOyB9CgoubmktcHJvcGVydHktYWRkOmJlZm9yZSB7IGNvbnRlbnQ6ICLusrYiOyB9CgoubmktcHJvcGVydHktYWx0OmJlZm9yZSB7IGNvbnRlbnQ6ICLusrciOyB9CgoubmktcHJvcGVydHktcmVtb3ZlOmJlZm9yZSB7IGNvbnRlbnQ6ICLusrgiOyB9CgoubmktcHJvcGVydHk6YmVmb3JlIHsgY29udGVudDogIu6yuSI7IH0KCi5uaS1wdXp6bGUtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7rK6IjsgfQoKLm5pLXB1enpsZTpiZWZvcmUgeyBjb250ZW50OiAi7rK7IjsgfQoKLm5pLXF1b3RlLWxlZnQ6YmVmb3JlIHsgY29udGVudDogIu6yvCI7IH0KCi5uaS1xdW90ZS1yaWdodDpiZWZvcmUgeyBjb250ZW50OiAi7rK9IjsgfQoKLm5pLXJvdy1taXg6YmVmb3JlIHsgY29udGVudDogIu6yviI7IH0KCi5uaS1yb3ctdmlldzE6YmVmb3JlIHsgY29udGVudDogIu6yvyI7IH0KCi5uaS1zaWRlYmFyLXI6YmVmb3JlIHsgY29udGVudDogIu6zgCI7IH0KCi5uaS10ZXh0MjpiZWZvcmUgeyBjb250ZW50OiAi7rOBIjsgfQoKLm5pLXRpbGUtdGh1bWItZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7rOCIjsgfQoKLm5pLXRpbGUtdGh1bWI6YmVmb3JlIHsgY29udGVudDogIu6zgyI7IH0KCi5uaS12aWV3LWNvbC1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLus4QiOyB9Cgoubmktdmlldy1jb2wtc3E6YmVmb3JlIHsgY29udGVudDogIu6zhSI7IH0KCi5uaS12aWV3LWNvbDpiZWZvcmUgeyBjb250ZW50OiAi7rOGIjsgfQoKLm5pLXZpZXctY29sMjpiZWZvcmUgeyBjb250ZW50OiAi7rOHIjsgfQoKLm5pLXZpZXctY29sMzpiZWZvcmUgeyBjb250ZW50OiAi7rOIIjsgfQoKLm5pLXZpZXctY29scy1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLus4kiOyB9Cgoubmktdmlldy1jb2xzLXNxOmJlZm9yZSB7IGNvbnRlbnQ6ICLus4oiOyB9Cgoubmktdmlldy1jb2xzOmJlZm9yZSB7IGNvbnRlbnQ6ICLus4siOyB9Cgoubmktdmlldy1ncmlkLWZpbGw6YmVmb3JlIHsgY29udGVudDogIu6zjCI7IH0KCi5uaS12aWV3LWdyaWQtc3E6YmVmb3JlIHsgY29udGVudDogIu6zjSI7IH0KCi5uaS12aWV3LWdyaWQtd2Q6YmVmb3JlIHsgY29udGVudDogIu6zjiI7IH0KCi5uaS12aWV3LWdyaWQ6YmVmb3JlIHsgY29udGVudDogIu6zjyI7IH0KCi5uaS12aWV3LWdyaWQyLXdkOmJlZm9yZSB7IGNvbnRlbnQ6ICLus5AiOyB9Cgoubmktdmlldy1ncmlkMy13ZDpiZWZvcmUgeyBjb250ZW50OiAi7rORIjsgfQoKLm5pLXZpZXctZ3JvdXAtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7rOSIjsgfQoKLm5pLXZpZXctZ3JvdXAtd2Q6YmVmb3JlIHsgY29udGVudDogIu6zkyI7IH0KCi5uaS12aWV3LWxpc3QtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7rOUIjsgfQoKLm5pLXZpZXctbGlzdC1zcTpiZWZvcmUgeyBjb250ZW50OiAi7rOVIjsgfQoKLm5pLXZpZXctbGlzdC13ZDpiZWZvcmUgeyBjb250ZW50OiAi7rOWIjsgfQoKLm5pLXZpZXctbGlzdDpiZWZvcmUgeyBjb250ZW50OiAi7rOXIjsgfQoKLm5pLXZpZXctcGFuZWwtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7rOYIjsgfQoKLm5pLXZpZXctcGFuZWwtc3E6YmVmb3JlIHsgY29udGVudDogIu6zmSI7IH0KCi5uaS12aWV3LXBhbmVsOmJlZm9yZSB7IGNvbnRlbnQ6ICLus5oiOyB9Cgoubmktdmlldy1yb3ctZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7rObIjsgfQoKLm5pLXZpZXctcm93LXNxOmJlZm9yZSB7IGNvbnRlbnQ6ICLus5wiOyB9Cgoubmktdmlldy1yb3ctd2Q6YmVmb3JlIHsgY29udGVudDogIu6znSI7IH0KCi5uaS12aWV3LXJvdzpiZWZvcmUgeyBjb250ZW50OiAi7rOeIjsgfQoKLm5pLXZpZXcteDE6YmVmb3JlIHsgY29udGVudDogIu6znyI7IH0KCi5uaS12aWV3LXgyOmJlZm9yZSB7IGNvbnRlbnQ6ICLus6AiOyB9Cgoubmktdmlldy14MzpiZWZvcmUgeyBjb250ZW50OiAi7rOhIjsgfQoKLm5pLXZpZXcteDQ6YmVmb3JlIHsgY29udGVudDogIu6zoiI7IH0KCi5uaS12aWV3LXg1OmJlZm9yZSB7IGNvbnRlbnQ6ICLus6MiOyB9Cgoubmktdmlldy14NjpiZWZvcmUgeyBjb250ZW50OiAiwqQiOyB9Cgoubmktdmlldy14NzpiZWZvcmUgeyBjb250ZW50OiAiw67Cs8KlIjsgfQoKLm5pLWRhc2hsaXRlOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKuwpEiOyB9CgoubmktZGFzaGxpdGUtY2lyY2xlOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKxwpYiOyB9CgoubmktZGFzaGxpdGUtYWx0OmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKxwpciOyB9CgoubmktbWFzdGVyLWNhcmQ6YmVmb3JlIHsgY29udGVudDogIsOuwrHCmCI7IH0KCi5uaS1wYXlwYWw6YmVmb3JlIHsgY29udGVudDogIsOuwrHCmSI7IH0KCi5uaS12aXNhLWFsdDpiZWZvcmUgeyBjb250ZW50OiAiw67CscKaIjsgfQoKLm5pLWNvaW4tZXVyOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKxwpsiOyB9CgoubmktY29pbi1nYnA6YmVmb3JlIHsgY29udGVudDogIsOuwrHCnCI7IH0KCi5uaS1zaWduLWFkYS1hbHQ6YmVmb3JlIHsgY29udGVudDogIsOuwrHCnSI7IH0KCi5uaS1zaWduLWJjaC1hbHQ6YmVmb3JlIHsgY29udGVudDogIsOuwrHCniI7IH0KCi5uaS1zaWduLWJncC1hbHQ6YmVmb3JlIHsgY29udGVudDogIsOuwrHCnyI7IH0KCi5uaS1zaWduLWJuYi1hbHQ6YmVmb3JlIHsgY29udGVudDogIsOuwrHCoCI7IH0KCi5uaS1zaWduLWJybC1hbHQ6YmVmb3JlIHsgY29udGVudDogIsOuwrHCoSI7IH0KCi5uaS1zaWduLWJ0Yy1hbHQ6YmVmb3JlIHsgY29udGVudDogIsOuwrHCoiI7IH0KCi5uaS1zaWduLWNjLWFsdDpiZWZvcmUgeyBjb250ZW50OiAiw67CscKlIjsgfQoKLm5pLXNpZ24tY2MtYWx0MjpiZWZvcmUgeyBjb250ZW50OiAiw67CscKmIjsgfQoKLm5pLXNpZ24tY2hmLWFsdDpiZWZvcmUgeyBjb250ZW50OiAiw67CscKnIjsgfQoKLm5pLXNpZ24tY255LWFsdDpiZWZvcmUgeyBjb250ZW50OiAiw67CscKoIjsgfQoKLm5pLXNpZ24tY3prLWFsdDpiZWZvcmUgeyBjb250ZW50OiAiw67CscKpIjsgfQoKLm5pLXNpZ24tZGFzaC1hbHQ6YmVmb3JlIHsgY29udGVudDogIsOuwrHCqiI7IH0KCi5uaS1zaWduLWRray1hbHQ6YmVmb3JlIHsgY29udGVudDogIsOuwrHCqyI7IH0KCi5uaS1zaWduLWVvcy1hbHQ6YmVmb3JlIHsgY29udGVudDogIsOuwrHCrCI7IH0KCi5uaS1zaWduLWV0aC1hbHQ6YmVmb3JlIHsgY29udGVudDogIsOuwrHCrSI7IH0KCi5uaS1zaWduLWV1ci1hbHQyOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKxwq4iOyB9Cgoubmktc2lnbi1ldXJvLWFsdDpiZWZvcmUgeyBjb250ZW50OiAiw67CscKvIjsgfQoKLm5pLXNpZ24tZ2JwLWFsdDI6YmVmb3JlIHsgY29udGVudDogIsOuwrHCsCI7IH0KCi5uaS1zaWduLWhrZC1hbHQ6YmVmb3JlIHsgY29udGVudDogIsOuwrHCsSI7IH0KCi5uaS1zaWduLWlkci1hbHQ6YmVmb3JlIHsgY29udGVudDogIsOuwrHCsiI7IH0KCi5uaS1zaWduLWluci1hbHQ6YmVmb3JlIHsgY29udGVudDogIsOuwrHCsyI7IH0KCi5uaS1zaWduLWpweS1hbHQ6YmVmb3JlIHsgY29udGVudDogIsOuwrHCtCI7IH0KCi5uaS1zaWduLWtyLWFsdDpiZWZvcmUgeyBjb250ZW50OiAiw67CscK1IjsgfQoKLm5pLXNpZ24tbHRjLWFsdDpiZWZvcmUgeyBjb250ZW50OiAiw67CscK2IjsgfQoKLm5pLXNpZ24tbHRjOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKxwrciOyB9Cgoubmktc2lnbi1teG4tYWx0OmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKxwrgiOyB9Cgoubmktc2lnbi1teHItYWx0OmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKxwrkiOyB9Cgoubmktc2lnbi1teXItYWx0OmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKxwroiOyB9Cgoubmktc2lnbi1wYXlwYWwtYWx0OmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKxwrsiOyB9Cgoubmktc2lnbi1wYXlwYWwtZnVsbDpiZWZvcmUgeyBjb250ZW50OiAiw67CscK8IjsgfQoKLm5pLXNpZ24tcGhwLWFsdDpiZWZvcmUgeyBjb250ZW50OiAiw67CscK9IjsgfQoKLm5pLXNpZ24tcGxuLWFsdDpiZWZvcmUgeyBjb250ZW50OiAiw67CscK+IjsgfQoKLm5pLXNpZ24tcnViLWFsdDpiZWZvcmUgeyBjb250ZW50OiAiw67CscK/IjsgfQoKLm5pLXNpZ24tc2VrLWFsdDpiZWZvcmUgeyBjb250ZW50OiAiw67CssKAIjsgfQoKLm5pLXNpZ24tc2dkLWFsdDpiZWZvcmUgeyBjb250ZW50OiAiw67CssKBIjsgfQoKLm5pLXNpZ24ta29iby1hbHQ6YmVmb3JlIHsgY29udGVudDogIsOuwrLCgiI7IH0KCi5uaS1zaWduLXN0ZWVtLWFsdDpiZWZvcmUgeyBjb250ZW50OiAiw67CssKDIjsgfQoKLm5pLXNpZ24tc3RlbGxlci1hbHQ6YmVmb3JlIHsgY29udGVudDogIsOuwrLChCI7IH0KCi5uaS1zaWduLXN0cmlwZS1mdWxsbDpiZWZvcmUgeyBjb250ZW50OiAiw67CssKFIjsgfQoKLm5pLXNpZ24tdGhiLWFsdDpiZWZvcmUgeyBjb250ZW50OiAiw67CssKGIjsgfQoKLm5pLXNpZ24tdHJ4LWFsdDpiZWZvcmUgeyBjb250ZW50OiAiw67CssKHIjsgfQoKLm5pLXNpZ24tdHJ5LWFsdDpiZWZvcmUgeyBjb250ZW50OiAiw67CssKIIjsgfQoKLm5pLXNpZ24tdXNkLWFsdDpiZWZvcmUgeyBjb250ZW50OiAiw67CssKJIjsgfQoKLm5pLXNpZ24tdXNkLWFsdDI6YmVmb3JlIHsgY29udGVudDogIsOuwrLCiiI7IH0KCi5uaS1zaWduLXVzZGMtYWx0OmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKywosiOyB9Cgoubmktc2lnbi11c2R0LWFsdDpiZWZvcmUgeyBjb250ZW50OiAiw67CssKMIjsgfQoKLm5pLXNpZ24tdmlzYS1hbHQ6YmVmb3JlIHsgY29udGVudDogIsOuwrLCjSI7IH0KCi5uaS1zaWduLXZuZC1hbHQ6YmVmb3JlIHsgY29udGVudDogIsOuwrLCjiI7IH0KCi5uaS1zaWduLXdhdmVzLWFsdDpiZWZvcmUgeyBjb250ZW50OiAiw67CssKPIjsgfQoKLm5pLXNpZ24teGVtLWFsdDpiZWZvcmUgeyBjb250ZW50OiAiw67CssKQIjsgfQoKLm5pLXNpZ24teHJwLW5ldy1hbHQ6YmVmb3JlIHsgY29udGVudDogIsOuwrLCkSI7IH0KCi5uaS1zaWduLXhycC1vbGQtYWx0OmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKywpIiOyB9Cgoubmktc2lnbi16Y2FzaC1hbHQ6YmVmb3JlIHsgY29udGVudDogIsOuwrLCkyI7IH0KCi5uaS1jaGV2cm9uLWxlZnQ6YmVmb3JlIHsgY29udGVudDogIsOuwqfCjCI7IH0KCi5uaS1jaGV2cm9uLXJpZ2h0OmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKnwpMiOyB9CgoubmktY2hldnJvbi11cDpiZWZvcmUgeyBjb250ZW50OiAiw67Cp8KaIjsgfQoKLm5pLWNoZXZyb24tZG93bjpiZWZvcmUgeyBjb250ZW50OiAiw67Cp8KFIjsgfQoKLm5pLWNoZXZyb24tbGVmdC1yb3VuZDpiZWZvcmUgeyBjb250ZW50OiAiw67Cp8KLIjsgfQoKLm5pLWNoZXZyb24tcmlnaHQtcm91bmQ6YmVmb3JlIHsgY29udGVudDogIsOuwqfCkiI7IH0KCi5uaS1jaGV2cm9uLXVwLXJvdW5kOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKnwpkiOyB9CgoubmktY2hldnJvbi1kb3duLXJvdW5kOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKnwoQiOyB9CgoubmktY2hldnJvbi1sZWZ0LXJvdW5kLWZpbGw6YmVmb3JlIHsgY29udGVudDogIsOuwqfCiiI7IH0KCi5uaS1jaGV2cm9uLXJpZ2h0LXJvdW5kLWZpbGw6YmVmb3JlIHsgY29udGVudDogIsOuwqfCkSI7IH0KCi5uaS1jaGV2cm9uLXVwLXJvdW5kLWZpbGw6YmVmb3JlIHsgY29udGVudDogIsOuwqfCmCI7IH0KCi5uaS1jaGV2cm9uLWRvd24tcm91bmQtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAiw67Cp8KDIjsgfQoKLm5pLWNoZXZyb24tbGVmdC1jOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKnwoYiOyB9CgoubmktY2hldnJvbi1yaWdodC1jOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKnwo0iOyB9CgoubmktY2hldnJvbi11cC1jOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKnwpQiOyB9CgoubmktY2hldnJvbi1kb3duLWM6YmVmb3JlIHsgY29udGVudDogIsOuwqbCvyI7IH0KCi5uaS1jaGV2cm9uLWxlZnQtZmlsbC1jOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKnwokiOyB9CgoubmktY2hldnJvbi1yaWdodC1maWxsLWM6YmVmb3JlIHsgY29udGVudDogIsOuwqfCkCI7IH0KCi5uaS1jaGV2cm9uLXVwLWZpbGwtYzpiZWZvcmUgeyBjb250ZW50OiAiw67Cp8KXIjsgfQoKLm5pLWNoZXZyb24tZG93bi1maWxsLWM6YmVmb3JlIHsgY29udGVudDogIsOuwqfCgiI7IH0KCi5uaS1jaGV2cm9uLWxlZnQtY2lyY2xlOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKnwogiOyB9CgoubmktY2hldnJvbi1yaWdodC1jaXJjbGU6YmVmb3JlIHsgY29udGVudDogIsOuwqfCjyI7IH0KCi5uaS1jaGV2cm9uLXVwLWNpcmNsZTpiZWZvcmUgeyBjb250ZW50OiAiw67Cp8KWIjsgfQoKLm5pLWNoZXZyb24tZG93bi1jaXJjbGU6YmVmb3JlIHsgY29udGVudDogIsOuwqfCgSI7IH0KCi5uaS1jaGV2cm9uLWxlZnQtY2lyY2xlLWZpbGw6YmVmb3JlIHsgY29udGVudDogIsOuwqfChyI7IH0KCi5uaS1jaGV2cm9uLXJpZ2h0LWNpcmNsZS1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKnwo4iOyB9CgoubmktY2hldnJvbi11cC1jaXJjbGUtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAiw67Cp8KVIjsgfQoKLm5pLWNoZXZyb24tZG93bi1jaXJjbGUtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAiw67Cp8KAIjsgfQoKLm5pLWNhcmV0LWxlZnQ6YmVmb3JlIHsgY29udGVudDogIsOuwqbCmyI7IH0KCi5uaS1jYXJldC1yaWdodDpiZWZvcmUgeyBjb250ZW50OiAiw67CpsKdIjsgfQoKLm5pLWNhcmV0LXVwOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKmwp8iOyB9CgoubmktY2FyZXQtZG93bjpiZWZvcmUgeyBjb250ZW50OiAiw67CpsKZIjsgfQoKLm5pLWNhcmV0LWxlZnQtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAiw67CpsKaIjsgfQoKLm5pLWNhcmV0LXJpZ2h0LWZpbGw6YmVmb3JlIHsgY29udGVudDogIsOuwqbCnCI7IH0KCi5uaS1jYXJldC11cC1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKmwp4iOyB9CgoubmktY2FyZXQtZG93bi1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKmwpgiOyB9Cgoubmktc29ydDpiZWZvcmUgeyBjb250ZW50OiAiw67CrsK/IjsgfQoKLm5pLXNvcnQtdXA6YmVmb3JlIHsgY29udGVudDogIsOuwq7CvSI7IH0KCi5uaS1zb3J0LWRvd246YmVmb3JlIHsgY29udGVudDogIsOuwq7CuSI7IH0KCi5uaS1zb3J0LWZpbGw6YmVmb3JlIHsgY29udGVudDogIsOuwq7CuiI7IH0KCi5uaS1zb3J0LXVwLWZpbGw6YmVmb3JlIHsgY29udGVudDogIsOuwq7CvCI7IH0KCi5uaS1zb3J0LWRvd24tZmlsbDpiZWZvcmUgeyBjb250ZW50OiAiw67CrsK4IjsgfQoKLm5pLXNvcnQtdjpiZWZvcmUgeyBjb250ZW50OiAiw67CrsK+IjsgfQoKLm5pLXN3YXAtdjpiZWZvcmUgeyBjb250ZW50OiAiw67Cr8KcIjsgfQoKLm5pLXN3YXA6YmVmb3JlIHsgY29udGVudDogIsOuwq/CnSI7IH0KCi5uaS1hcnJvdy1sZWZ0LXJvdW5kOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKkwrciOyB9CgoubmktYXJyb3ctcmlnaHQtcm91bmQ6YmVmb3JlIHsgY29udGVudDogIsOuwqXCgiI7IH0KCi5uaS1hcnJvdy11cC1yb3VuZDpiZWZvcmUgeyBjb250ZW50OiAiw67CpcKPIjsgfQoKLm5pLWFycm93LWRvd24tcm91bmQ6YmVmb3JlIHsgY29udGVudDogIsOuwqTCrCI7IH0KCi5uaS1hcnJvdy1sZWZ0LXJvdW5kLWZpbGw6YmVmb3JlIHsgY29udGVudDogIsOuwqTCtiI7IH0KCi5uaS1hcnJvdy1yaWdodC1yb3VuZC1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKlwoEiOyB9CgoubmktYXJyb3ctdXAtcm91bmQtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAiw67CpcKOIjsgfQoKLm5pLWFycm93LWRvd24tcm91bmQtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAiw67CpMKrIjsgfQoKLm5pLWFycm93LWxlZnQtYzpiZWZvcmUgeyBjb250ZW50OiAiw67CpMKyIjsgfQoKLm5pLWFycm93LXJpZ2h0LWM6YmVmb3JlIHsgY29udGVudDogIsOuwqTCvSI7IH0KCi5uaS1hcnJvdy11cC1jOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKlwogiOyB9CgoubmktYXJyb3ctZG93bi1jOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKkwqUiOyB9CgoubmktYXJyb3ctbGVmdC1maWxsLWM6YmVmb3JlIHsgY29udGVudDogIsOuwqTCtSI7IH0KCi5uaS1hcnJvdy1yaWdodC1maWxsLWM6YmVmb3JlIHsgY29udGVudDogIsOuwqXCgCI7IH0KCi5uaS1hcnJvdy11cC1maWxsLWM6YmVmb3JlIHsgY29udGVudDogIsOuwqXCiyI7IH0KCi5uaS1hcnJvdy1kb3duLWZpbGwtYzpiZWZvcmUgeyBjb250ZW50OiAiw67CpMKoIjsgfQoKLm5pLWFycm93LWxlZnQtY2lyY2xlOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKkwrQiOyB9CgoubmktYXJyb3ctcmlnaHQtY2lyY2xlOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKkwr8iOyB9CgoubmktYXJyb3ctdXAtY2lyY2xlOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKlwooiOyB9CgoubmktYXJyb3ctZG93bi1jaXJjbGU6YmVmb3JlIHsgY29udGVudDogIsOuwqTCpyI7IH0KCi5uaS1hcnJvdy1sZWZ0LWNpcmNsZS1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKkwrMiOyB9CgoubmktYXJyb3ctdXAtY2lyY2xlLWZpbGw6YmVmb3JlIHsgY29udGVudDogIsOuwqXCiSI7IH0KCi5uaS1hcnJvdy1kb3duLWNpcmNsZS1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKkwqYiOyB9CgoubmktYXJyb3ctcmlnaHQtY2lyY2xlLWZpbGw6YmVmb3JlIHsgY29udGVudDogIsOuwqTCviI7IH0KCi5uaS1jaGV2cm9ucy1sZWZ0OmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKnwpwiOyB9CgoubmktY2hldnJvbnMtcmlnaHQ6YmVmb3JlIHsgY29udGVudDogIsOuwqfCnSI7IH0KCi5uaS1jaGV2cm9ucy11cDpiZWZvcmUgeyBjb250ZW50OiAiw67Cp8KeIjsgfQoKLm5pLWNoZXZyb25zLWRvd246YmVmb3JlIHsgY29udGVudDogIsOuwqfCmyI7IH0KCi5uaS1maXJzdDpiZWZvcmUgeyBjb250ZW50OiAiw67CqcKZIjsgfQoKLm5pLWxhc3Q6YmVmb3JlIHsgY29udGVudDogIsOuwqrCuCI7IH0KCi5uaS1iYWNrLWlvczpiZWZvcmUgeyBjb250ZW50OiAiw67CpcKYIjsgfQoKLm5pLWZvcndhcmQtaW9zOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKpwq0iOyB9CgoubmktdXB3b3JkLWlvczpiZWZvcmUgeyBjb250ZW50OiAiw67CsMKgIjsgfQoKLm5pLWRvd253YXJkLWlvczpiZWZvcmUgeyBjb250ZW50OiAiw67CqMKjIjsgfQoKLm5pLWJhY2stYWx0OmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKlwpUiOyB9CgoubmktZm9yd2FyZC1hbHQ6YmVmb3JlIHsgY29udGVudDogIsOuwqnCqSI7IH0KCi5uaS11cHdvcmQtYWx0OmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKwwp8iOyB9CgoubmktZG93bndhcmQtYWx0OmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKowqIiOyB9CgoubmktYmFjay1hbHQtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAiw67CpcKUIjsgfQoKLm5pLWZvcndhcmQtYWx0LWZpbGw6YmVmb3JlIHsgY29udGVudDogIsOuwqnCqCI7IH0KCi5uaS11cHdvcmQtYWx0LWZpbGw6YmVmb3JlIHsgY29udGVudDogIsOuwrDCniI7IH0KCi5uaS1kb3dud2FyZC1hbHQtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAiw67CqMKhIjsgfQoKLm5pLWFycm93LWxvbmctbGVmdDpiZWZvcmUgeyBjb250ZW50OiAiw67CpMK6IjsgfQoKLm5pLWFycm93LWxvbmctcmlnaHQ6YmVmb3JlIHsgY29udGVudDogIsOuwqTCuyI7IH0KCi5uaS1hcnJvdy1sb25nLXVwOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKkwrwiOyB9CgoubmktYXJyb3ctbG9uZy1kb3duOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKkwrkiOyB9CgoubmktYXJyb3ctbGVmdDpiZWZvcmUgeyBjb250ZW50OiAiw67CpMK4IjsgfQoKLm5pLWFycm93LXJpZ2h0OmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKlwoMiOyB9CgoubmktYXJyb3ctdXA6YmVmb3JlIHsgY29udGVudDogIsOuwqXCkCI7IH0KCi5uaS1hcnJvdy1kb3duOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKkwq0iOyB9CgoubmktYXJyb3ctdXAtbGVmdDpiZWZvcmUgeyBjb250ZW50OiAiw67CpcKMIjsgfQoKLm5pLWFycm93LXVwLXJpZ2h0OmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKlwo0iOyB9CgoubmktYXJyb3ctZG93bi1sZWZ0OmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKkwqkiOyB9CgoubmktYXJyb3ctZG93bi1yaWdodDpiZWZvcmUgeyBjb250ZW50OiAiw67CpMKqIjsgfQoKLm5pLWFycm93LXRvLWxlZnQ6YmVmb3JlIHsgY29udGVudDogIsOuwqXChSI7IH0KCi5uaS1hcnJvdy10by1yaWdodDpiZWZvcmUgeyBjb250ZW50OiAiw67CpcKGIjsgfQoKLm5pLWFycm93LXRvLXVwOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKlwociOyB9CgoubmktYXJyb3ctdG8tZG93bjpiZWZvcmUgeyBjb250ZW50OiAiw67CpcKEIjsgfQoKLm5pLWFycm93LWZyb20tbGVmdDpiZWZvcmUgeyBjb250ZW50OiAiw67CpMKvIjsgfQoKLm5pLWFycm93LWZyb20tcmlnaHQ6YmVmb3JlIHsgY29udGVudDogIsOuwqTCsCI7IH0KCi5uaS1hcnJvdy1mcm9tLXVwOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKkwrEiOyB9CgoubmktYXJyb3ctZnJvbS1kb3duOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKkwq4iOyB9CgoubmktY3VydmUtZG93bi1sZWZ0OmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKowosiOyB9CgoubmktY3VydmUtdXAtcmlnaHQ6YmVmb3JlIHsgY29udGVudDogIsOuwqjCkiI7IH0KCi5uaS1jdXJ2ZS11cC1sZWZ0OmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKowpEiOyB9CgoubmktY3VydmUtZG93bi1yaWdodDpiZWZvcmUgeyBjb250ZW50OiAiw67CqMKMIjsgfQoKLm5pLWN1cnZlLWxlZnQtdXA6YmVmb3JlIHsgY29udGVudDogIsOuwqjCjiI7IH0KCi5uaS1jdXJ2ZS1yaWdodC11cDpiZWZvcmUgeyBjb250ZW50OiAiw67CqMKQIjsgfQoKLm5pLWN1cnZlLWxlZnQtZG93bjpiZWZvcmUgeyBjb250ZW50OiAiw67CqMKNIjsgfQoKLm5pLWN1cnZlLXJpZ2h0LWRvd246YmVmb3JlIHsgY29udGVudDogIsOuwqjCjyI7IH0KCi5uaS1iYWNrLWFycm93OmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKlwpciOyB9CgoubmktZm9yd2FyZC1hcnJvdzpiZWZvcmUgeyBjb250ZW50OiAiw67CqcKrIjsgfQoKLm5pLWJhY2stYXJyb3ctZmlsbDpiZWZvcmUgeyBjb250ZW50OiAiw67CpcKWIjsgfQoKLm5pLWZvcndhcmQtYXJyb3ctZmlsbDpiZWZvcmUgeyBjb250ZW50OiAiw67CqcKqIjsgfQoKLm5pLW5hdmlnYXRlOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKswo8iOyB9CgoubmktbmF2aWdhdGUtdXA6YmVmb3JlIHsgY29udGVudDogIsOuwqzCjiI7IH0KCi5uaS1uYXZpZ2F0ZS1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKswowiOyB9CgoubmktbmF2aWdhdGUtdXAtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAiw67CrMKNIjsgfQoKLm5pLXNlbmQ6YmVmb3JlIHsgY29udGVudDogIsOuwq3CryI7IH0KCi5uaS1zZW5kLWFsdDpiZWZvcmUgeyBjb250ZW50OiAiw67CrcKuIjsgfQoKLm5pLXVuZm9sZC1sZXNzOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKwwpUiOyB9CgoubmktdW5mb2xkLW1vcmU6YmVmb3JlIHsgY29udGVudDogIsOuwrDCliI7IH0KCi5uaS1leGNoYW5nZS12OmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKowrIiOyB9CgoubmktZXhjaGFuZ2U6YmVmb3JlIHsgY29udGVudDogIsOuwqjCsyI7IH0KCi5uaS1leHBhbmQ6YmVmb3JlIHsgY29udGVudDogIsOuwqjCtCI7IH0KCi5uaS1zaHJpbms6YmVmb3JlIHsgY29udGVudDogIsOuwq7CgyI7IH0KCi5uaS1mb2N1czpiZWZvcmUgeyBjb250ZW50OiAiw67CqcKeIjsgfQoKLm5pLW1heGltaXplOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKrwp8iOyB9CgoubmktbWluaW1pemU6YmVmb3JlIHsgY29udGVudDogIsOuwqvCsiI7IH0KCi5uaS1tYXhpbWl6ZS1hbHQ6YmVmb3JlIHsgY29udGVudDogIsOuwqvCniI7IH0KCi5uaS1taW5pbWl6ZS1hbHQ6YmVmb3JlIHsgY29udGVudDogIsOuwqvCsSI7IH0KCi5uaS1zaHVmZmxlOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKuwoQiOyB9CgoubmktY3Jvc3Mtc206YmVmb3JlIHsgY29udGVudDogIsOuwqjChSI7IH0KCi5uaS1jcm9zczpiZWZvcmUgeyBjb250ZW50OiAiw67CqMKGIjsgfQoKLm5pLWNyb3NzLXJvdW5kOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKowoQiOyB9CgoubmktY3Jvc3MtY2lyY2xlOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKowoEiOyB9CgoubmktY3Jvc3MtYzpiZWZvcmUgeyBjb250ZW50OiAiw67Cp8K/IjsgfQoKLm5pLWNyb3NzLXJvdW5kLWZpbGw6YmVmb3JlIHsgY29udGVudDogIsOuwqjCgyI7IH0KCi5uaS1jcm9zcy1jaXJjbGUtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAiw67CqMKAIjsgfQoKLm5pLWNyb3NzLWZpbGwtYzpiZWZvcmUgeyBjb250ZW50OiAiw67CqMKCIjsgfQoKLm5pLW5hOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKswosiOyB9CgoubmktY2hlY2s6YmVmb3JlIHsgY29udGVudDogIsOuwqbCviI7IH0KCi5uaS1jaGVjay10aGljazpiZWZvcmUgeyBjb250ZW50OiAiw67CpsK9IjsgfQoKLm5pLWRvbmU6YmVmb3JlIHsgY29udGVudDogIsOuwqjCnCI7IH0KCi5uaS1jaGVjay1yb3VuZDpiZWZvcmUgeyBjb250ZW50OiAiw67CpsK8IjsgfQoKLm5pLWNoZWNrLWNpcmNsZTpiZWZvcmUgeyBjb250ZW50OiAiw67CpsK4IjsgfQoKLm5pLWNoZWNrLWM6YmVmb3JlIHsgY29udGVudDogIsOuwqbCtSI7IH0KCi5uaS1jaGVjay1yb3VuZC1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKmwrsiOyB9CgoubmktY2hlY2stY2lyY2xlLWZpbGw6YmVmb3JlIHsgY29udGVudDogIsOuwqbCtyI7IH0KCi5uaS1jaGVjay1maWxsLWM6YmVmb3JlIHsgY29udGVudDogIsOuwqbCuSI7IH0KCi5uaS1jaGVjay1jaXJjbGUtY3V0OmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKmwrYiOyB9CgoubmktY2hlY2stcm91bmQtY3V0OmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKmwroiOyB9CgoubmktYnVsbGV0OmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKmwoEiOyB9CgoubmktY2lyY2xlOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKnwqAiOyB9Cgoubmktc3F1YXJlOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKvwooiOyB9Cgoubmktc3F1YXJlLWM6YmVmb3JlIHsgY29udGVudDogIsOuwq/ChyI7IH0KCi5uaS1idWxsZXQtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAiw67CpsKAIjsgfQoKLm5pLWNpcmNsZS1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKnwp8iOyB9Cgoubmktc3F1YXJlLWZpbGw6YmVmb3JlIHsgY29udGVudDogIsOuwq/CiSI7IH0KCi5uaS1zcXVhcmUtZmlsbC1jOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKvwogiOyB9CgoubmktcGx1cy1zbTpiZWZvcmUgeyBjb250ZW50OiAiw67CrcKDIjsgfQoKLm5pLW1pbnVzLXNtOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKrwrkiOyB9CgoubmktcGx1czpiZWZvcmUgeyBjb250ZW50OiAiw67CrcKEIjsgfQoKLm5pLW1pbnVzOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKrwroiOyB9CgoubmktcGx1cy1yb3VuZDpiZWZvcmUgeyBjb250ZW50OiAiw67CrcKCIjsgfQoKLm5pLW1pbnVzLXJvdW5kOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKrwrgiOyB9CgoubmktcGx1cy1jaXJjbGU6YmVmb3JlIHsgY29udGVudDogIsOuwqzCvSI7IH0KCi5uaS1taW51cy1jaXJjbGU6YmVmb3JlIHsgY29udGVudDogIsOuwqvCtSI7IH0KCi5uaS1wbHVzLWM6YmVmb3JlIHsgY29udGVudDogIsOuwqzCuyI7IH0KCi5uaS1taW51cy1jOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKrwrMiOyB9CgoubmktcGx1cy1yb3VuZC1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKtwoEiOyB9CgoubmktcGx1cy1jaXJjbGUtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAiw67CrMK8IjsgfQoKLm5pLW1pbnVzLXJvdW5kLWZpbGw6YmVmb3JlIHsgY29udGVudDogIsOuwqvCtyI7IH0KCi5uaS1taW51cy1jaXJjbGUtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAiw67Cq8K0IjsgfQoKLm5pLXBsdXMtZmlsbC1jOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKswr4iOyB9CgoubmktbWludXMtZmlsbC1jOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKrwrYiOyB9CgoubmktcGx1cy1tZWRpOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKtwoAiOyB9CgoubmktcGx1cy1tZWRpLWZpbGw6YmVmb3JlIHsgY29udGVudDogIsOuwqzCvyI7IH0KCi5uaS1lcXVhbC1zbTpiZWZvcmUgeyBjb250ZW50OiAiw67CqMKwIjsgfQoKLm5pLWVxdWFsOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKowrEiOyB9CgoubmktY2FsYzpiZWZvcmUgeyBjb250ZW50OiAiw67CpsKCIjsgfQoKLm5pLXNlYXJjaDpiZWZvcmUgeyBjb250ZW50OiAiw67CrcKsIjsgfQoKLm5pLXpvb20tb3V0OmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKxwpUiOyB9Cgoubmktem9vbS1pbjpiZWZvcmUgeyBjb250ZW50OiAiw67CscKUIjsgfQoKLm5pLXBsYXk6YmVmb3JlIHsgY29udGVudDogIsOuwqzCuiI7IH0KCi5uaS1wbGF5LWZpbGw6YmVmb3JlIHsgY29udGVudDogIsOuwqzCuSI7IH0KCi5uaS1wbGF5LWNpcmNsZTpiZWZvcmUgeyBjb250ZW50OiAiw67CrMK4IjsgfQoKLm5pLXBsYXktY2lyY2xlLWZpbGw6YmVmb3JlIHsgY29udGVudDogIsOuwqzCtyI7IH0KCi5uaS1wYXVzZTpiZWZvcmUgeyBjb250ZW50OiAiw67CrMKmIjsgfQoKLm5pLXBhdXNlLWZpbGw6YmVmb3JlIHsgY29udGVudDogIsOuwqzCpSI7IH0KCi5uaS1wYXVzZS1jaXJjbGU6YmVmb3JlIHsgY29udGVudDogIsOuwqzCpCI7IH0KCi5uaS1wYXVzZS1jaXJjbGUtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAiw67CrMKjIjsgfQoKLm5pLXN0b3A6YmVmb3JlIHsgY29udGVudDogIsOuwq/CliI7IH0KCi5uaS1zdG9wLWZpbGw6YmVmb3JlIHsgY29udGVudDogIsOuwq/ClSI7IH0KCi5uaS1zdG9wLWNpcmNsZTpiZWZvcmUgeyBjb250ZW50OiAiw67Cr8KUIjsgfQoKLm5pLXN0b3AtY2lyY2xlLWZpbGw6YmVmb3JlIHsgY29udGVudDogIsOuwq/CkyI7IH0KCi5uaS1yZXdpbmQ6YmVmb3JlIHsgY29udGVudDogIsOuwq3CoiI7IH0KCi5uaS1mb3J3YXJkOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKpwq4iOyB9CgoubmktcmV3aW5kLWZpbGw6YmVmb3JlIHsgY29udGVudDogIsOuwq3CoSI7IH0KCi5uaS1mb3J3YXJkLWZpbGw6YmVmb3JlIHsgY29udGVudDogIsOuwqnCrCI7IH0KCi5uaS1zdGVwLWJhY2s6YmVmb3JlIHsgY29udGVudDogIsOuwq/CkSI7IH0KCi5uaS1zdGVwLWZvcndhcmQ6YmVmb3JlIHsgY29udGVudDogIsOuwq/CkiI7IH0KCi5uaS12b2wtb2ZmOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKxwoAiOyB9Cgoubmktdm9sLW5vOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKwwr8iOyB9Cgoubmktdm9sLWhhbGY6YmVmb3JlIHsgY29udGVudDogIsOuwrDCviI7IH0KCi5uaS12b2w6YmVmb3JlIHsgY29udGVudDogIsOuwrHCgSI7IH0KCi5uaS1taWM6YmVmb3JlIHsgY29udGVudDogIsOuwqvCryI7IH0KCi5uaS1taWMtb2ZmOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKrwq4iOyB9CgoubmktdmlkZW86YmVmb3JlIHsgY29udGVudDogIsOuwrDCuSI7IH0KCi5uaS12aWRlby1vZmY6YmVmb3JlIHsgY29udGVudDogIsOuwrDCuCI7IH0KCi5uaS12aWRlby1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKwwrciOyB9CgoubmktbG9hZGVyOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKrwpIiOyB9CgoubmktcG93ZXI6YmVmb3JlIHsgY29udGVudDogIsOuwq3ChyI7IH0KCi5uaS1zaWdub3V0OmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKuwrIiOyB9Cgoubmktc2lnbmluOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKuwrEiOyB9CgoubmktdXBsb2FkOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKwwp0iOyB9CgoubmktZG93bmxvYWQ6YmVmb3JlIHsgY29udGVudDogIsOuwqjCoCI7IH0KCi5uaS1hbGVydC1jaXJjbGU6YmVmb3JlIHsgY29udGVudDogIsOuwqTCjSI7IH0KCi5uaS1hbGVydDpiZWZvcmUgeyBjb250ZW50OiAiw67CpMKQIjsgfQoKLm5pLWNhdXRpb246YmVmb3JlIHsgY29udGVudDogIsOuwqbCoyI7IH0KCi5uaS1yZXBvcnQ6YmVmb3JlIHsgY29udGVudDogIsOuwq3CniI7IH0KCi5uaS1hbGVydC1jOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKkwosiOyB9CgoubmktYWxlcnQtY2lyY2xlLWZpbGw6YmVmb3JlIHsgY29udGVudDogIsOuwqTCjCI7IH0KCi5uaS1hbGVydC1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKkwo8iOyB9CgoubmktY2F1dGlvbi1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKmwqIiOyB9CgoubmktcmVwb3J0LWZpbGw6YmVmb3JlIHsgY29udGVudDogIsOuwq3CnCI7IH0KCi5uaS1hbGVydC1maWxsLWM6YmVmb3JlIHsgY29udGVudDogIsOuwqTCjiI7IH0KCi5uaS1pbmZvLWk6YmVmb3JlIHsgY29udGVudDogIsOuwqrCqCI7IH0KCi5uaS1pbmZvOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKqwqkiOyB9CgoubmktaW5mby1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKqwqciOyB9CgoubmktaGVscDpiZWZvcmUgeyBjb250ZW50OiAiw67CqsKYIjsgfQoKLm5pLWhlbHAtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAiw67CqsKXIjsgfQoKLm5pLWFyY2hpdmVkOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKkwqQiOyB9CgoubmktYXJjaGl2ZTpiZWZvcmUgeyBjb250ZW50OiAiw67CpMKiIjsgfQoKLm5pLXVuYXJjaGl2ZTpiZWZvcmUgeyBjb250ZW50OiAiw67CsMKSIjsgfQoKLm5pLWFyY2hpdmVkLWZpbGw6YmVmb3JlIHsgY29udGVudDogIsOuwqTCoyI7IH0KCi5uaS1hcmNoaXZlLWZpbGw6YmVmb3JlIHsgY29udGVudDogIsOuwqTCoSI7IH0KCi5uaS11bmFyY2hpdmUtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAiw67CsMKRIjsgfQoKLm5pLWJhZzpiZWZvcmUgeyBjb250ZW50OiAiw67CpcKaIjsgfQoKLm5pLWJhZy1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKlwpkiOyB9CgoubmktYmVsbDpiZWZvcmUgeyBjb250ZW50OiAiw67CpcKlIjsgfQoKLm5pLWJlbGwtb2ZmOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKlwqQiOyB9CgoubmktYmVsbC1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKlwqIiOyB9CgoubmktYmVsbC1vZmYtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAiw67CpcKjIjsgfQoKLm5pLXdpZmk6YmVmb3JlIHsgY29udGVudDogIsOuwrHCiyI7IH0KCi5uaS13aWZpLW9mZjpiZWZvcmUgeyBjb250ZW50OiAiw67CscKKIjsgfQoKLm5pLWxpdmU6YmVmb3JlIHsgY29udGVudDogIsOuwqvCkSI7IH0KCi5uaS1zaWduYWw6YmVmb3JlIHsgY29udGVudDogIsOuwq7CsCI7IH0KCi5uaS1ibHVldG9vdGg6YmVmb3JlIHsgY29udGVudDogIsOuwqXCrSI7IH0KCi5uaS1ibGFuay1hbHQ6YmVmb3JlIHsgY29udGVudDogIsOuwqXCpyI7IH0KCi5uaS1ibGFuazpiZWZvcmUgeyBjb250ZW50OiAiw67CpcKoIjsgfQoKLm5pLWJsYW5rLWZpbGw6YmVmb3JlIHsgY29udGVudDogIsOuwqXCqSI7IH0KCi5uaS1ibGFua2YtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAiw67CpcKpIjsgfQoKLm5pLWJsb2NrLW92ZXI6YmVmb3JlIHsgY29udGVudDogIsOuwqXCqiI7IH0KCi5uaS1ib29rLXJlYWQ6YmVmb3JlIHsgY29udGVudDogIsOuwqXCsCI7IH0KCi5uaS1ib29rOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKlwrEiOyB9CgoubmktYm9vay1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKlwq8iOyB9CgoubmktYnVsYi1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKlwr4iOyB9CgoubmktYnVsYjpiZWZvcmUgeyBjb250ZW50OiAiw67CpcK/IjsgfQoKLm5pLWNhbGVuZGFyLWFsdC1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKmwoMiOyB9CgoubmktY2FsZW5kYXItYWx0OmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKmwoQiOyB9CgoubmktY2FsZW5kYXItYm9va2luZy1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKmwoUiOyB9CgoubmktY2FsZW5kYXItYm9va2luZzpiZWZvcmUgeyBjb250ZW50OiAiw67CpsKGIjsgfQoKLm5pLWNhbGVuZGFyLWNoZWNrLWZpbGw6YmVmb3JlIHsgY29udGVudDogIsOuwqbChyI7IH0KCi5uaS1jYWxlbmRhci1jaGVjazpiZWZvcmUgeyBjb250ZW50OiAiw67CpsKIIjsgfQoKLm5pLWNhbGVuZGFyLWZpbGw6YmVmb3JlIHsgY29udGVudDogIsOuwqbCiSI7IH0KCi5uaS1jYWxlbmRhcjpiZWZvcmUgeyBjb250ZW50OiAiw67CpsKKIjsgfQoKLm5pLWNhbGVuZGVyLWRhdGUtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAiw67CpsKLIjsgfQoKLm5pLWNhbGVuZGVyLWRhdGU6YmVmb3JlIHsgY29udGVudDogIsOuwqbCjCI7IH0KCi5uaS1jYWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKmwpAiOyB9CgoubmktY2FsbC1hbHQ6YmVmb3JlIHsgY29udGVudDogIsOuwqbCjiI7IH0KCi5uaS1jYWxsLWFsdC1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKmwo0iOyB9CgoubmktY2FsbC1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKmwo8iOyB9CgoubmktY2FtZXJhLWZpbGw6YmVmb3JlIHsgY29udGVudDogIsOuwqbCkSI7IH0KCi5uaS1jYW1lcmE6YmVmb3JlIHsgY29udGVudDogIsOuwqbCkiI7IH0KCi5uaS1jYXBzdWxlOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKmwpQiOyB9CgoubmktY2Fwc3VsZS1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKmwpMiOyB9CgoubmktY2FyZHM6YmVmb3JlIHsgY29udGVudDogIsOuwqbClyI7IH0KCi5uaS1jYXJkcy1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKmwpYiOyB9CgoubmktY2FydDpiZWZvcmUgeyBjb250ZW50OiAiw67CpsKhIjsgfQoKLm5pLWNhcnQtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAiw67CpsKgIjsgfQoKLm5pLWNjOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKmwq4iOyB9CgoubmktY2MtYWx0OmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKmwqUiOyB9CgoubmktY2MtYWx0MjpiZWZvcmUgeyBjb250ZW50OiAiw67CpsKnIjsgfQoKLm5pLWNjLXNlY3VyZTpiZWZvcmUgeyBjb250ZW50OiAiw67CpsKsIjsgfQoKLm5pLWNjLW5ldzpiZWZvcmUgeyBjb250ZW50OiAiw67CpsKpIjsgfQoKLm5pLWNjLW9mZjpiZWZvcmUgeyBjb250ZW50OiAiw67CpsKqIjsgfQoKLm5pLWNjLWZpbGw6YmVmb3JlIHsgY29udGVudDogIsOuwqbCqCI7IH0KCi5uaS1jYy1hbHQtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAiw67CpsKkIjsgfQoKLm5pLWNjLWFsdDItZmlsbDpiZWZvcmUgeyBjb250ZW50OiAiw67CpsKmIjsgfQoKLm5pLWNjLXNlY3VyZS1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKmwqsiOyB9CgoubmktbXNnLWNpcmNsZTpiZWZvcmUgeyBjb250ZW50OiAiw67CrMKHIjsgfQoKLm5pLWNoYXQtY2lyY2xlOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKmwrIiOyB9CgoubmktbXNnOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKswokiOyB9CgoubmktY2hhdDpiZWZvcmUgeyBjb250ZW50OiAiw67CpsK0IjsgfQoKLm5pLXF1ZXN0aW9uLWFsdDpiZWZvcmUgeyBjb250ZW50OiAiw67CrcKLIjsgfQoKLm5pLXF1ZXN0aW9uOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKtwowiOyB9CgoubmktbXNnLWNpcmNsZS1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKswoYiOyB9CgoubmktY2hhdC1jaXJjbGUtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAiw67CpsKxIjsgfQoKLm5pLW1zZy1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKswogiOyB9CgoubmktY2hhdC1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKmwrMiOyB9CgoubmktY2xpcC1oOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKnwqEiOyB9CgoubmktY2xpcC12OmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKnwqIiOyB9CgoubmktY2xpcDpiZWZvcmUgeyBjb250ZW50OiAiw67Cp8KjIjsgfQoKLm5pLWxpbmstYWx0OmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKrwoUiOyB9CgoubmktdW5saW5rOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKwwpgiOyB9CgoubmktdW5saW5rLWFsdDpiZWZvcmUgeyBjb250ZW50OiAiw67CsMKXIjsgfQoKLm5pLWxpbmstaDpiZWZvcmUgeyBjb250ZW50OiAiw67Cq8KHIjsgfQoKLm5pLWxpbmstdjpiZWZvcmUgeyBjb250ZW50OiAiw67Cq8KIIjsgfQoKLm5pLWxpbms6YmVmb3JlIHsgY29udGVudDogIsOuwqvCiSI7IH0KCi5uaS1jbGlwYm9hcmQ6YmVmb3JlIHsgY29udGVudDogIsOuwqfCpyI7IH0KCi5uaS1jbGlwYm9hZC1jaGVjazpiZWZvcmUgeyBjb250ZW50OiAiw67Cp8KlIjsgfQoKLm5pLWNsaXBib2FyZC1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKnwqYiOyB9CgoubmktY2xpcGJvYWQtY2hlY2stZmlsbDpiZWZvcmUgeyBjb250ZW50OiAiw67Cp8KkIjsgfQoKLm5pLWNsb2NrOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKnwqkiOyB9CgoubmktY2xvY2stZmlsbDpiZWZvcmUgeyBjb250ZW50OiAiw67Cp8KoIjsgfQoKLm5pLWNsb3VkOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKnwqsiOyB9CgoubmktdXBsb2FkLWNsb3VkOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKwwpwiOyB9CgoubmktZG93bmxvYWQtY2xvdWQ6YmVmb3JlIHsgY29udGVudDogIsOuwqjCnyI7IH0KCi5uaS1jbG91ZC1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKnwqoiOyB9CgoubmktY29udGFjdDpiZWZvcmUgeyBjb250ZW50OiAiw67Cp8K5IjsgfQoKLm5pLWNvbnRhY3QtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAiw67Cp8K4IjsgfQoKLm5pLWNvZmZlZTpiZWZvcmUgeyBjb250ZW50OiAiw67Cp8KwIjsgfQoKLm5pLWNvZmZlZS1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKnwq8iOyB9CgoubmktYm94LXZpZXc6YmVmb3JlIHsgY29udGVudDogIsOuwqXCtiI7IH0KCi5uaS1jb2wtdmlldzpiZWZvcmUgeyBjb250ZW50OiAiw67Cp8K1IjsgfQoKLm5pLXNpZGViYXI6YmVmb3JlIHsgY29udGVudDogIsOuwq7ChiI7IH0KCi5uaS1sYXlvdXQ6YmVmb3JlIHsgY29udGVudDogIsOuwqrCviI7IH0KCi5uaS10YWJsZS12aWV3OmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKvwp8iOyB9CgoubmktbGF5b3V0MjpiZWZvcmUgeyBjb250ZW50OiAiw67CqsK/IjsgfQoKLm5pLXJvdy12aWV3OmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKtwqMiOyB9CgoubmktZG90LWJveDpiZWZvcmUgeyBjb250ZW50OiAiw67CqMKeIjsgfQoKLm5pLWxheW91dC1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKqwr0iOyB9CgoubmktYm94LXZpZXctZmlsbDpiZWZvcmUgeyBjb250ZW50OiAiw67CpcK1IjsgfQoKLm5pLXNpZGViYXItZmlsbDpiZWZvcmUgeyBjb250ZW50OiAiw67CrsKFIjsgfQoKLm5pLXRhYmxlLXZpZXctZmlsbDpiZWZvcmUgeyBjb250ZW50OiAiw67Cr8KeIjsgfQoKLm5pLWRvdC1ib3gtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAiw67CqMKdIjsgfQoKLm5pLXRlbXBsYXRlOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKvwq4iOyB9CgoubmktYnJvd3NlcjpiZWZvcmUgeyBjb250ZW50OiAiw67CpcK6IjsgfQoKLm5pLXRvb2xiYXI6YmVmb3JlIHsgY29udGVudDogIsOuwrDCgiI7IH0KCi5uaS1icm93c2VyLWZpbGw6YmVmb3JlIHsgY29udGVudDogIsOuwqXCuSI7IH0KCi5uaS10b29sYmFyLWZpbGw6YmVmb3JlIHsgY29udGVudDogIsOuwrDCgSI7IH0KCi5uaS10ZW1wbGF0ZS1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKvwq0iOyB9CgoubmktYm94OmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKlwrciOyB9CgoubmktcGFja2FnZTpiZWZvcmUgeyBjb250ZW50OiAiw67CrMKgIjsgfQoKLm5pLWxheWVyOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKqwroiOyB9CgoubmktbGF5ZXJzOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKqwrwiOyB9CgoubmktcGFuZWw6YmVmb3JlIHsgY29udGVudDogIsOuwqzCoiI7IH0KCi5uaS1zZXJ2ZXI6YmVmb3JlIHsgY29udGVudDogIsOuwq3CsSI7IH0KCi5uaS1sYXllci1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKqwrkiOyB9CgoubmktbGF5ZXJzLWZpbGw6YmVmb3JlIHsgY29udGVudDogIsOuwqrCuyI7IH0KCi5uaS1wYWNrYWdlLWZpbGw6YmVmb3JlIHsgY29udGVudDogIsOuwqzCnyI7IH0KCi5uaS1wYW5lbC1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLDrsKswqEiOyB9Cgoubmktc2VydmVyLWZpbGw6YmVmb3JlIHsgY29udGVudDogIsOuwq3CsCI7IH0KCi5uaS1jb2xvci1wYWxldHRlOmJlZm9yZSB7IGNvbnRlbnQ6ICLup7ciOyB9CgoubmktY29sb3ItcGFsZXR0ZS1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLup7YiOyB9CgoubmktY29weTpiZWZvcmUgeyBjb250ZW50OiAi7qe7IjsgfQoKLm5pLWNvcHktZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7qe6IjsgfQoKLm5pLWNyb3AtYWx0OmJlZm9yZSB7IGNvbnRlbnQ6ICLup70iOyB9CgoubmktY3JvcDpiZWZvcmUgeyBjb250ZW50OiAi7qe+IjsgfQoKLm5pLXRhcmdldDpiZWZvcmUgeyBjb250ZW50OiAi7q+nIjsgfQoKLm5pLWNyb3NzaGFpcjpiZWZvcmUgeyBjb250ZW50OiAi7qiIIjsgfQoKLm5pLWNyb3NzaGFpci1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLuqIciOyB9CgoubmktZGItZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7qiVIjsgfQoKLm5pLWRiOmJlZm9yZSB7IGNvbnRlbnQ6ICLuqJYiOyB9CgoubmktaGFyZC1kcml2ZTpiZWZvcmUgeyBjb250ZW50OiAi7qqQIjsgfQoKLm5pLWNwdTpiZWZvcmUgeyBjb250ZW50OiAi7qe8IjsgfQoKLm5pLWRpc2s6YmVmb3JlIHsgY29udGVudDogIu6omyI7IH0KCi5uaS1wZW46YmVmb3JlIHsgY29udGVudDogIu6sqyI7IH0KCi5uaS1lZGl0LWFsdDpiZWZvcmUgeyBjb250ZW50OiAi7qipIjsgfQoKLm5pLXBlbi1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLurKoiOyB9CgoubmktZWRpdC1hbHQtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7qioIjsgfQoKLm5pLXBlbi1hbHQtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7qypIjsgfQoKLm5pLWVkaXQtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7qiqIjsgfQoKLm5pLWVkaXQ6YmVmb3JlIHsgY29udGVudDogIu6oqyI7IH0KCi5uaS1leHRlcm5hbC1hbHQ6YmVmb3JlIHsgY29udGVudDogIu6otSI7IH0KCi5uaS1leHRlcm5hbDpiZWZvcmUgeyBjb250ZW50OiAi7qi2IjsgfQoKLm5pLWV5ZS1hbHQ6YmVmb3JlIHsgY29udGVudDogIu6ouCI7IH0KCi5uaS1leWUtYWx0LWZpbGw6YmVmb3JlIHsgY29udGVudDogIu6otyI7IH0KCi5uaS1leWU6YmVmb3JlIHsgY29udGVudDogIu6ovCI7IH0KCi5uaS1leWUtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7qi5IjsgfQoKLm5pLWV5ZS1vZmY6YmVmb3JlIHsgY29udGVudDogIu6ouyI7IH0KCi5uaS1leWUtb2ZmLWZpbGw6YmVmb3JlIHsgY29udGVudDogIu6ouiI7IH0KCi5uaS1maWxlOmJlZm9yZSB7IGNvbnRlbnQ6ICLuqZMiOyB9CgoubmktZmlsZS1taW51czpiZWZvcmUgeyBjb250ZW50OiAi7qmJIjsgfQoKLm5pLWZpbGUtcGx1czpiZWZvcmUgeyBjb250ZW50OiAi7qmMIjsgfQoKLm5pLWZpbGUtcmVtb3ZlOmJlZm9yZSB7IGNvbnRlbnQ6ICLuqY4iOyB9CgoubmktZmlsZS1jaGVjazpiZWZvcmUgeyBjb250ZW50OiAi7qmBIjsgfQoKLm5pLWZpbGUtY29kZTpiZWZvcmUgeyBjb250ZW50OiAi7qmCIjsgfQoKLm5pLWZpbGUtZG9jczpiZWZvcmUgeyBjb250ZW50OiAi7qmEIjsgfQoKLm5pLWZpbGUtaW1nOmJlZm9yZSB7IGNvbnRlbnQ6ICLuqYciOyB9CgoubmktZmlsZS1kb2M6YmVmb3JlIHsgY29udGVudDogIu6pgyI7IH0KCi5uaS1maWxlLXBkZjpiZWZvcmUgeyBjb250ZW50OiAi7qmKIjsgfQoKLm5pLWZpbGUteGxzOmJlZm9yZSB7IGNvbnRlbnQ6ICLuqZEiOyB9CgoubmktZmlsZS16aXA6YmVmb3JlIHsgY29udGVudDogIu6pkiI7IH0KCi5uaS1maWxlLWRvd25sb2FkOmJlZm9yZSB7IGNvbnRlbnQ6ICLuqYUiOyB9CgoubmktZmlsZS10ZXh0OmJlZm9yZSB7IGNvbnRlbnQ6ICLuqZAiOyB9CgoubmktZmlsZXM6YmVmb3JlIHsgY29udGVudDogIu6plSI7IH0KCi5uaS1maWxlLWZpbGw6YmVmb3JlIHsgY29udGVudDogIu6phiI7IH0KCi5uaS1maWxlLW1pbnVzLWZpbGw6YmVmb3JlIHsgY29udGVudDogIu6piCI7IH0KCi5uaS1maWxlLXBsdXMtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7qmLIjsgfQoKLm5pLWZpbGUtcmVtb3ZlLWZpbGw6YmVmb3JlIHsgY29udGVudDogIu6pjSI7IH0KCi5uaS1maWxlLWNoZWNrLWZpbGw6YmVmb3JlIHsgY29udGVudDogIu6pgCI7IH0KCi5uaS1maWxlLXRleHQtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7qmPIjsgfQoKLm5pLWZpbGVzLWZpbGw6YmVmb3JlIHsgY29udGVudDogIu6plCI7IH0KCi5uaS1mb2xkZXI6YmVmb3JlIHsgY29udGVudDogIu6ppSI7IH0KCi5uaS1mb2xkZXItbWludXM6YmVmb3JlIHsgY29udGVudDogIu6poiI7IH0KCi5uaS1mb2xkZXItcGx1czpiZWZvcmUgeyBjb250ZW50OiAi7qmjIjsgfQoKLm5pLWZvbGRlci1yZW1vdmU6YmVmb3JlIHsgY29udGVudDogIu6ppCI7IH0KCi5uaS1mb2xkZXItY2hlY2s6YmVmb3JlIHsgY29udGVudDogIu6pnyI7IH0KCi5uaS1mb2xkZXItbGlzdDpiZWZvcmUgeyBjb250ZW50OiAi7qmhIjsgfQoKLm5pLWZvbGRlcnM6YmVmb3JlIHsgY29udGVudDogIu6ppyI7IH0KCi5uaS1mb2xkZXItZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7qmgIjsgfQoKLm5pLWZvbGRlcnMtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7qmmIjsgfQoKLm5pLWZpbHRlci1hbHQ6YmVmb3JlIHsgY29udGVudDogIu6pliI7IH0KCi5uaS1zb3J0LWxpbmU6YmVmb3JlIHsgY29udGVudDogIu6uuyI7IH0KCi5uaS1maWx0ZXItZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7qmXIjsgfQoKLm5pLWZpbHRlcjpiZWZvcmUgeyBjb250ZW50OiAi7qmYIjsgfQoKLm5pLWZsYWc6YmVmb3JlIHsgY29udGVudDogIu6pmyI7IH0KCi5uaS1mbGFnLWZpbGw6YmVmb3JlIHsgY29udGVudDogIu6pmiI7IH0KCi5uaS1ub3RpZnk6YmVmb3JlIHsgY29udGVudDogIu6sliI7IH0KCi5uaS1kYXNoYm9hcmQ6YmVmb3JlIHsgY29udGVudDogIu6olCI7IH0KCi5uaS1kYXNoYm9hcmQtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7qiTIjsgfQoKLm5pLWdyaWQtc3E6YmVmb3JlIHsgY29udGVudDogIu6qiSI7IH0KCi5uaS1ncmlkOmJlZm9yZSB7IGNvbnRlbnQ6ICLuqooiOyB9CgoubmktZ3JpZC1jOmJlZm9yZSB7IGNvbnRlbnQ6ICLuqoMiOyB9CgoubmktZ3JpZC1hbHQ6YmVmb3JlIHsgY29udGVudDogIu6pviI7IH0KCi5uaS1ncmlkLXBsdXM6YmVmb3JlIHsgY29udGVudDogIu6qiCI7IH0KCi5uaS1ncmlkLWFkZC1jOmJlZm9yZSB7IGNvbnRlbnQ6ICLuqbsiOyB9CgoubmktZ3JpZC1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLuqoUiOyB9CgoubmktZ3JpZC1maWxsLWM6YmVmb3JlIHsgY29udGVudDogIu6qhCI7IH0KCi5uaS1ncmlkLWFsdC1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLuqb0iOyB9CgoubmktZ3JpZC1wbHVzLWZpbGw6YmVmb3JlIHsgY29udGVudDogIu6qhyI7IH0KCi5uaS1ncmlkLWFkZC1maWxsLWM6YmVmb3JlIHsgY29udGVudDogIu6pvCI7IH0KCi5uaS1ncmlkLWJveC1hbHQtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7qm/IjsgfQoKLm5pLWdyaWQtYm94LWFsdDpiZWZvcmUgeyBjb250ZW50OiAi7qqAIjsgfQoKLm5pLWdyaWQtYm94OmJlZm9yZSB7IGNvbnRlbnQ6ICLuqoIiOyB9CgoubmktZ3JpZC1ib3gtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7qqBIjsgfQoKLm5pLWdyaWQtbGluZTpiZWZvcmUgeyBjb250ZW50OiAi7qqGIjsgfQoKLm5pLW1lbnUtYWx0LWxlZnQ6YmVmb3JlIHsgY29udGVudDogIu6rpiI7IH0KCi5uaS1tZW51LWFsdC1yOmJlZm9yZSB7IGNvbnRlbnQ6ICLuq6ciOyB9CgoubmktbWVudS1hbHQ6YmVmb3JlIHsgY29udGVudDogIu6rqCI7IH0KCi5uaS1tZW51LWNlbnRlcjpiZWZvcmUgeyBjb250ZW50OiAi7qupIjsgfQoKLm5pLW1lbnUtbGVmdDpiZWZvcmUgeyBjb250ZW50OiAi7quqIjsgfQoKLm5pLW1lbnUtcmlnaHQ6YmVmb3JlIHsgY29udGVudDogIu6rqyI7IH0KCi5uaS1tZW51OmJlZm9yZSB7IGNvbnRlbnQ6ICLuq6wiOyB9CgoubmktdHJlbmQtdXA6YmVmb3JlIHsgY29udGVudDogIu6wiiI7IH0KCi5uaS10cmVuZC1kb3duOmJlZm9yZSB7IGNvbnRlbnQ6ICLusIkiOyB9CgoubmktbGluZS1jaGFydC1kb3duOmJlZm9yZSB7IGNvbnRlbnQ6ICLuq4IiOyB9CgoubmktbGluZS1jaGFydC11cDpiZWZvcmUgeyBjb250ZW50OiAi7quDIjsgfQoKLm5pLWxpbmUtY2hhcnQ6YmVmb3JlIHsgY29udGVudDogIu6rhCI7IH0KCi5uaS1iYXItY2hhcnQ6YmVmb3JlIHsgY29udGVudDogIu6lniI7IH0KCi5uaS1iYXItY2hhcnQtYWx0OmJlZm9yZSB7IGNvbnRlbnQ6ICLupZwiOyB9CgoubmktY2hhcnQtdXA6YmVmb3JlIHsgY29udGVudDogIu6msCI7IH0KCi5uaS1jaGFydC1kb3duOmJlZm9yZSB7IGNvbnRlbnQ6ICLupq8iOyB9CgoubmktZ3Jvd3RoOmJlZm9yZSB7IGNvbnRlbnQ6ICLuqowiOyB9CgoubmktZ3Jvd3RoLWZpbGw6YmVmb3JlIHsgY29udGVudDogIu6qiyI7IH0KCi5uaS1iYXItY2hhcnQtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7qWdIjsgfQoKLm5pLWJhci1jOmJlZm9yZSB7IGNvbnRlbnQ6ICLupZsiOyB9CgoubmktYmFyLWZpbGwtYzpiZWZvcmUgeyBjb250ZW50OiAi7qWfIjsgfQoKLm5pLXBpZTpiZWZvcmUgeyBjb250ZW50OiAi7qywIjsgfQoKLm5pLXBpZS1hbHQ6YmVmb3JlIHsgY29udGVudDogIu6sriI7IH0KCi5uaS1waWUtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7qyvIjsgfQoKLm5pLWFjdGl2aXR5OmJlZm9yZSB7IGNvbnRlbnQ6ICLupIYiOyB9CgoubmktYWN0aXZpdHktYWx0OmJlZm9yZSB7IGNvbnRlbnQ6ICLupIMiOyB9CgoubmktYWN0aXZpdHktcm91bmQ6YmVmb3JlIHsgY29udGVudDogIu6khSI7IH0KCi5uaS1hY3Rpdml0eS1yb3VuZC1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLupIQiOyB9CgoubmktbWV0ZXI6YmVmb3JlIHsgY29udGVudDogIu6rrSI7IH0KCi5uaS1zcGVlZDpiZWZvcmUgeyBjb250ZW50OiAi7q+FIjsgfQoKLm5pLWhhcHB5OmJlZm9yZSB7IGNvbnRlbnQ6ICLuqo4iOyB9Cgoubmktc2FkOmJlZm9yZSB7IGNvbnRlbnQ6ICLuraYiOyB9CgoubmktbWVoOmJlZm9yZSB7IGNvbnRlbnQ6ICLuq6UiOyB9CgoubmktaGFwcHktZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7qqPIjsgfQoKLm5pLWhhcHB5Zi1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLuqo8iOyB9Cgoubmktc2FkLWZpbGw6YmVmb3JlIHsgY29udGVudDogIu6tpSI7IH0KCi5uaS1tZWgtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7qukIjsgfQoKLm5pLWhvbWU6YmVmb3JlIHsgY29udGVudDogIu6qnCI7IH0KCi5uaS1ob21lLWFsdDpiZWZvcmUgeyBjb250ZW50OiAi7qqaIjsgfQoKLm5pLWhvbWUtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7qqbIjsgfQoKLm5pLWltZzpiZWZvcmUgeyBjb250ZW50OiAi7qqgIjsgfQoKLm5pLWltZy1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLuqp8iOyB9CgoubmktaW5ib3g6YmVmb3JlIHsgY29udGVudDogIu6qpiI7IH0KCi5uaS1pbmJveC1pbjpiZWZvcmUgeyBjb250ZW50OiAi7qqjIjsgfQoKLm5pLWluYm94LW91dDpiZWZvcmUgeyBjb250ZW50OiAi7qqlIjsgfQoKLm5pLWluYm94LWZpbGw6YmVmb3JlIHsgY29udGVudDogIu6qoSI7IH0KCi5uaS1pbmJveC1pbi1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLuqqIiOyB9CgoubmktaW5ib3gtb3V0LWZpbGw6YmVmb3JlIHsgY29udGVudDogIu6qpCI7IH0KCi5uaS1saW5rLWdyb3VwOmJlZm9yZSB7IGNvbnRlbnQ6ICLuq4YiOyB9CgoubmktbG9jazpiZWZvcmUgeyBjb250ZW50OiAi7quXIjsgfQoKLm5pLWxvY2stYWx0OmJlZm9yZSB7IGNvbnRlbnQ6ICLuq5UiOyB9CgoubmktbG9jay1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLuq5YiOyB9CgoubmktbG9jay1hbHQtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7quUIjsgfQoKLm5pLXVubG9jazpiZWZvcmUgeyBjb250ZW50OiAi7rCaIjsgfQoKLm5pLXVubG9jay1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLusJkiOyB9CgoubmktbWFpbDpiZWZvcmUgeyBjb250ZW50OiAi7quaIjsgfQoKLm5pLWVtYWlsczpiZWZvcmUgeyBjb250ZW50OiAi7qiuIjsgfQoKLm5pLW1haWwtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7quZIjsgfQoKLm5pLWVtYWlscy1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLuqK0iOyB9CgoubmktbWFwLXBpbjpiZWZvcmUgeyBjb250ZW50OiAi7qucIjsgfQoKLm5pLWxvY2F0aW9uOmJlZm9yZSB7IGNvbnRlbnQ6ICLuq5MiOyB9CgoubmktbWFwOmJlZm9yZSB7IGNvbnRlbnQ6ICLuq50iOyB9CgoubmktbWFwLXBpbi1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLuq5siOyB9CgoubmktbGlzdDpiZWZvcmUgeyBjb250ZW50OiAi7quQIjsgfQoKLm5pLWxpc3Qtb2w6YmVmb3JlIHsgY29udGVudDogIu6rjiI7IH0KCi5uaS1hbGlnbi1jZW50ZXI6YmVmb3JlIHsgY29udGVudDogIu6kkSI7IH0KCi5uaS1hbGlnbi1qdXN0aWZ5OmJlZm9yZSB7IGNvbnRlbnQ6ICLupJIiOyB9CgoubmktYWxpZ24tbGVmdDpiZWZvcmUgeyBjb250ZW50OiAi7qSTIjsgfQoKLm5pLWFsaWduLXJpZ2h0OmJlZm9yZSB7IGNvbnRlbnQ6ICLupJQiOyB9CgoubmktbGlzdC1jaGVjazpiZWZvcmUgeyBjb250ZW50OiAi7quMIjsgfQoKLm5pLWxpc3Qtcm91bmQ6YmVmb3JlIHsgY29udGVudDogIu6rjyI7IH0KCi5uaS1jYXJkLXZpZXc6YmVmb3JlIHsgY29udGVudDogIu6mlSI7IH0KCi5uaS1saXN0LWZpbGw6YmVmb3JlIHsgY29udGVudDogIu6rjSI7IH0KCi5uaS1zYXZlOmJlZm9yZSB7IGNvbnRlbnQ6ICLuragiOyB9Cgoubmktc2F2ZS1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLuraciOyB9CgoubmktbW92ZTpiZWZvcmUgeyBjb250ZW50OiAi7qyEIjsgfQoKLm5pLXNjaXNzb3I6YmVmb3JlIHsgY29udGVudDogIu6tqyI7IH0KCi5uaS10ZXh0OmJlZm9yZSB7IGNvbnRlbnQ6ICLur7IiOyB9CgoubmktdGV4dC1hOmJlZm9yZSB7IGNvbnRlbnQ6ICLur7AiOyB9CgoubmktYm9sZDpiZWZvcmUgeyBjb250ZW50OiAi7qWuIjsgfQoKLm5pLWl0YWxpYzpiZWZvcmUgeyBjb250ZW50OiAi7qqtIjsgfQoKLm5pLXVuZGVybGluZTpiZWZvcmUgeyBjb250ZW50OiAi7rCTIjsgfQoKLm5pLXBlcmNlbnQ6YmVmb3JlIHsgY29udGVudDogIu6srCI7IH0KCi5uaS1hdDpiZWZvcmUgeyBjb250ZW50OiAi7qWSIjsgfQoKLm5pLWhhc2g6YmVmb3JlIHsgY29udGVudDogIu6qkSI7IH0KCi5uaS1jb2RlOmJlZm9yZSB7IGNvbnRlbnQ6ICLup64iOyB9CgoubmktY29kZS1kb3dubG9hZDpiZWZvcmUgeyBjb250ZW50OiAi7qetIjsgfQoKLm5pLXRlcm1pbmFsOmJlZm9yZSB7IGNvbnRlbnQ6ICLur68iOyB9CgoubmktY21kOmJlZm9yZSB7IGNvbnRlbnQ6ICLup6wiOyB9Cgoubmktc3VuOmJlZm9yZSB7IGNvbnRlbnQ6ICLur5kiOyB9Cgoubmktc3VuLWZpbGw6YmVmb3JlIHsgY29udGVudDogIu6vmCI7IH0KCi5uaS1tb29uLWZpbGw6YmVmb3JlIHsgY29udGVudDogIu6rviI7IH0KCi5uaS1tb29uOmJlZm9yZSB7IGNvbnRlbnQ6ICLuq78iOyB9CgoubmktbGlnaHQ6YmVmb3JlIHsgY29udGVudDogIu6rgSI7IH0KCi5uaS1saWdodC1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLuq4AiOyB9CgoubmktbW9yZS12OmJlZm9yZSB7IGNvbnRlbnQ6ICLurIMiOyB9CgoubmktbW9yZS1oOmJlZm9yZSB7IGNvbnRlbnQ6ICLurIEiOyB9CgoubmktbW9yZS1oLWFsdDpiZWZvcmUgeyBjb250ZW50OiAi7qyAIjsgfQoKLm5pLW1vcmUtdi1hbHQ6YmVmb3JlIHsgY29udGVudDogIu6sgiI7IH0KCi5uaS1tdXNpYzpiZWZvcmUgeyBjb250ZW50OiAi7qyKIjsgfQoKLm5pLW1vdmllOmJlZm9yZSB7IGNvbnRlbnQ6ICLurIUiOyB9Cgoubmktb2ZmZXI6YmVmb3JlIHsgY29udGVudDogIu6smCI7IH0KCi5uaS1vZmZlci1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLurJciOyB9Cgoubmktb3B0LWFsdDpiZWZvcmUgeyBjb250ZW50OiAi7qyaIjsgfQoKLm5pLW9wdDpiZWZvcmUgeyBjb250ZW50OiAi7qyeIjsgfQoKLm5pLW9wdC1kb3QtYWx0OmJlZm9yZSB7IGNvbnRlbnQ6ICLurJsiOyB9Cgoubmktb3B0LWRvdDpiZWZvcmUgeyBjb250ZW50OiAi7qydIjsgfQoKLm5pLW9wdC1kb3QtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7qycIjsgfQoKLm5pLW9wdC1hbHQtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7qyZIjsgfQoKLm5pLXVzZXItYWx0OmJlZm9yZSB7IGNvbnRlbnQ6ICLusKQiOyB9CgoubmktdXNlci1hbHQtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7rCjIjsgfQoKLm5pLXVzZXI6YmVmb3JlIHsgY29udGVudDogIu6wsyI7IH0KCi5uaS11c2VyczpiZWZvcmUgeyBjb250ZW50OiAi7rC1IjsgfQoKLm5pLXVzZXItYWRkOmJlZm9yZSB7IGNvbnRlbnQ6ICLusKIiOyB9CgoubmktdXNlci1yZW1vdmU6YmVmb3JlIHsgY29udGVudDogIu6wsSI7IH0KCi5uaS11c2VyLWNoZWNrOmJlZm9yZSB7IGNvbnRlbnQ6ICLusKciOyB9CgoubmktdXNlci1jcm9zczpiZWZvcmUgeyBjb250ZW50OiAi7rCrIjsgfQoKLm5pLWFjY291bnQtc2V0dGluZzpiZWZvcmUgeyBjb250ZW50OiAi7qSCIjsgfQoKLm5pLWFjY291bnQtc2V0dGluZy1hbHQ6YmVmb3JlIHsgY29udGVudDogIu6kgCI7IH0KCi5uaS11c2VyLWxpc3Q6YmVmb3JlIHsgY29udGVudDogIu6wryI7IH0KCi5uaS11c2VyLWZpbGw6YmVmb3JlIHsgY29udGVudDogIu6wrSI7IH0KCi5uaS11c2Vycy1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLusLQiOyB9CgoubmktdXNlci1hZGQtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7rChIjsgfQoKLm5pLXVzZXItcmVtb3ZlLWZpbGw6YmVmb3JlIHsgY29udGVudDogIu6wsCI7IH0KCi5uaS11c2VyLWNoZWNrLWZpbGw6YmVmb3JlIHsgY29udGVudDogIu6wpiI7IH0KCi5uaS11c2VyLWNyb3NzLWZpbGw6YmVmb3JlIHsgY29udGVudDogIu6wqiI7IH0KCi5uaS1hY2NvdW50LXNldHRpbmctZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7qSBIjsgfQoKLm5pLXVzZXItbGlzdC1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLusK4iOyB9CgoubmktdXNlci1jaXJjbGU6YmVmb3JlIHsgY29udGVudDogIu6wqCI7IH0KCi5uaS11c2VyLWNpcmNsZS1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLusKkiOyB9CgoubmktdXNlci1jOmJlZm9yZSB7IGNvbnRlbnQ6ICLusKUiOyB9CgoubmktdXNlci1maWxsLWM6YmVmb3JlIHsgY29udGVudDogIu6wrCI7IH0KCi5uaS11c2VyLXJvdW5kOmJlZm9yZSB7IGNvbnRlbnQ6ICLusLIiOyB9CgoubmktcHJpbnRlcjpiZWZvcmUgeyBjb250ZW50OiAi7qyxIjsgfQoKLm5pLXByaW50ZXItZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7q2IIjsgfQoKLm5pLWxhcHRvcDpiZWZvcmUgeyBjb250ZW50OiAi7qq2IjsgfQoKLm5pLW1vbml0b3I6YmVmb3JlIHsgY29udGVudDogIu6rvSI7IH0KCi5uaS10YWJsZXQ6YmVmb3JlIHsgY29udGVudDogIu6voCI7IH0KCi5uaS1tb2JpbGU6YmVmb3JlIHsgY29udGVudDogIu6ruyI7IH0KCi5uaS11bmRvOmJlZm9yZSB7IGNvbnRlbnQ6ICLusJQiOyB9CgoubmktcmVkbzpiZWZvcmUgeyBjb250ZW50OiAi7q2RIjsgfQoKLm5pLXJlbG9hZC1hbHQ6YmVmb3JlIHsgY29udGVudDogIu6tlCI7IH0KCi5uaS1yZWxvYWQ6YmVmb3JlIHsgY29udGVudDogIu6tlSI7IH0KCi5uaS1yZWdlbi1hbHQ6YmVmb3JlIHsgY29udGVudDogIu6tkiI7IH0KCi5uaS1yZWdlbjpiZWZvcmUgeyBjb250ZW50OiAi7q2TIjsgfQoKLm5pLWludmVzdDpiZWZvcmUgeyBjb250ZW50OiAi7qqsIjsgfQoKLm5pLWhpc3Rvcnk6YmVmb3JlIHsgY29udGVudDogIu6qmSI7IH0KCi5uaS1oaXN0cm95OmJlZm9yZSB7IGNvbnRlbnQ6ICLuqpkiOyB9CgoubmktdXBkYXRlOmJlZm9yZSB7IGNvbnRlbnQ6ICLusJsiOyB9CgoubmktcmVwZWF0OmJlZm9yZSB7IGNvbnRlbnQ6ICLurZciOyB9CgoubmktcmVwZWF0LXY6YmVmb3JlIHsgY29udGVudDogIu6tliI7IH0KCi5uaS10cmFueDpiZWZvcmUgeyBjb250ZW50OiAi7rCDIjsgfQoKLm5pLXJlcGx5LWFsbDpiZWZvcmUgeyBjb250ZW50OiAi7q2ZIjsgfQoKLm5pLXJlcGx5OmJlZm9yZSB7IGNvbnRlbnQ6ICLurZsiOyB9CgoubmktcmVwbHktZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7q2aIjsgfQoKLm5pLXJlcGx5LWFsbC1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLurZgiOyB9Cgoubmktbm90ZXM6YmVmb3JlIHsgY29udGVudDogIu6slSI7IH0KCi5uaS1ub3RlLWFkZDpiZWZvcmUgeyBjb250ZW50OiAi7qyTIjsgfQoKLm5pLW5vdGVzLWFsdDpiZWZvcmUgeyBjb250ZW50OiAi7qyUIjsgfQoKLm5pLWFydGljbGU6YmVmb3JlIHsgY29udGVudDogIu6lkSI7IH0KCi5uaS10ZXh0LXJpY2g6YmVmb3JlIHsgY29udGVudDogIu6vsSI7IH0KCi5uaS10b2RvOmJlZm9yZSB7IGNvbnRlbnQ6ICLur74iOyB9CgoubmktcmVwb3J0LXByb2ZpdDpiZWZvcmUgeyBjb250ZW50OiAi7q2dIjsgfQoKLm5pLXJlcG9ydHMtYWx0OmJlZm9yZSB7IGNvbnRlbnQ6ICLurZ8iOyB9CgoubmktcmVwb3J0czpiZWZvcmUgeyBjb250ZW50OiAi7q2gIjsgfQoKLm5pLXRhc2s6YmVmb3JlIHsgY29udGVudDogIu6vqiI7IH0KCi5uaS1ub3RlLWFkZC1jOmJlZm9yZSB7IGNvbnRlbnQ6ICLurJEiOyB9CgoubmktdGFzay1jOmJlZm9yZSB7IGNvbnRlbnQ6ICLur6giOyB9CgoubmktdG9kby1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLur70iOyB9Cgoubmktbm90ZS1hZGQtZmlsbC1jOmJlZm9yZSB7IGNvbnRlbnQ6ICLurJIiOyB9CgoubmktdGFzay1maWxsLWM6YmVmb3JlIHsgY29udGVudDogIu6vqSI7IH0KCi5uaS1zY2FuLWZpbGw6YmVmb3JlIHsgY29udGVudDogIu6tqSI7IH0KCi5uaS1zY2FuOmJlZm9yZSB7IGNvbnRlbnQ6ICLuraoiOyB9CgoubmktcXI6YmVmb3JlIHsgY29udGVudDogIu6tiiI7IH0KCi5uaS1tb25leTpiZWZvcmUgeyBjb250ZW50OiAi7qu8IjsgfQoKLm5pLWNvaW5zOmJlZm9yZSB7IGNvbnRlbnQ6ICLup7QiOyB9CgoubmktY29pbjpiZWZvcmUgeyBjb250ZW50OiAi7qezIjsgfQoKLm5pLWNvaW4tYWx0OmJlZm9yZSB7IGNvbnRlbnQ6ICLup7IiOyB9CgoubmktY29pbi1hbHQtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7qexIjsgfQoKLm5pLXNldHRpbmctYWx0LWZpbGw6YmVmb3JlIHsgY29udGVudDogIu6tsiI7IH0KCi5uaS1zZXR0aW5nLWFsdDpiZWZvcmUgeyBjb250ZW50OiAi7q2zIjsgfQoKLm5pLXNldHRpbmctZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7q20IjsgfQoKLm5pLXNldHRpbmc6YmVmb3JlIHsgY29udGVudDogIu6ttSI7IH0KCi5uaS1zaGFyZS1hbHQ6YmVmb3JlIHsgY29udGVudDogIu6ttiI7IH0KCi5uaS1zaGFyZS1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLurbciOyB9Cgoubmktc2hhcmU6YmVmb3JlIHsgY29udGVudDogIu6tuCI7IH0KCi5uaS1uZXR3b3JrOmJlZm9yZSB7IGNvbnRlbnQ6ICLurJAiOyB9CgoubmktcnNzOmJlZm9yZSB7IGNvbnRlbnQ6ICLuraQiOyB9Cgoubmktc2hpZWxkOmJlZm9yZSB7IGNvbnRlbnQ6ICLuroIiOyB9Cgoubmktc2hpZWxkLXN0YXI6YmVmb3JlIHsgY29udGVudDogIu6ugSI7IH0KCi5uaS1zaGllbGQtY2hlY2s6YmVmb3JlIHsgY29udGVudDogIu6tvCI7IH0KCi5uaS1zaGllbGQtYWxlcnQ6YmVmb3JlIHsgY29udGVudDogIu6tuiI7IH0KCi5uaS1zaGllbGQtb2ZmOmJlZm9yZSB7IGNvbnRlbnQ6ICLurb8iOyB9Cgoubmktc2VjdXJpdHk6YmVmb3JlIHsgY29udGVudDogIu6trSI7IH0KCi5uaS1wb2xpY3k6YmVmb3JlIHsgY29udGVudDogIu6thiI7IH0KCi5uaS1zaGllbGQtYWxlcnQtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7q25IjsgfQoKLm5pLXNoaWVsZC1jaGVjay1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLurbsiOyB9Cgoubmktc2hpZWxkLWZpbGw6YmVmb3JlIHsgY29udGVudDogIu6tvSI7IH0KCi5uaS1zaGllbGQtaGFsZjpiZWZvcmUgeyBjb250ZW50OiAi7q2+IjsgfQoKLm5pLXNoaWVsZC1zdGFyLWZpbGw6YmVmb3JlIHsgY29udGVudDogIu6ugCI7IH0KCi5uaS1wb2xpY3ktZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7q2FIjsgfQoKLm5pLXNwYXJrOmJlZm9yZSB7IGNvbnRlbnQ6ICLur4QiOyB9Cgoubmktc3Bhcmstb2ZmOmJlZm9yZSB7IGNvbnRlbnQ6ICLur4MiOyB9Cgoubmktc3BhcmstZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7q+BIjsgfQoKLm5pLXNwYXJrLW9mZi1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLur4IiOyB9Cgoubmktd2FsbGV0OmJlZm9yZSB7IGNvbnRlbnQ6ICLusYciOyB9Cgoubmktd2FsbGV0LWFsdDpiZWZvcmUgeyBjb250ZW50OiAi7rGCIjsgfQoKLm5pLXdhbGxldC1pbjpiZWZvcmUgeyBjb250ZW50OiAi7rGEIjsgfQoKLm5pLXdhbGxldC1vdXQ6YmVmb3JlIHsgY29udGVudDogIu6xhSI7IH0KCi5uaS13YWxsZXQtc2F2aW5nOmJlZm9yZSB7IGNvbnRlbnQ6ICLusYYiOyB9Cgoubmktd2FsbGV0LWZpbGw6YmVmb3JlIHsgY29udGVudDogIu6xgyI7IH0KCi5uaS1zdGFyOmJlZm9yZSB7IGNvbnRlbnQ6ICLur5AiOyB9Cgoubmktc3Rhci1oYWxmOmJlZm9yZSB7IGNvbnRlbnQ6ICLur44iOyB9Cgoubmktc3Rhci1oYWxmLWZpbGw6YmVmb3JlIHsgY29udGVudDogIu6vjSI7IH0KCi5uaS1zdGFyLWZpbGw6YmVmb3JlIHsgY29udGVudDogIu6vjCI7IH0KCi5uaS1zdGFyLXJvdW5kOmJlZm9yZSB7IGNvbnRlbnQ6ICLur48iOyB9CgoubmktaGVhcnQ6YmVmb3JlIHsgY29udGVudDogIu6qlSI7IH0KCi5uaS1oZWFydC1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLuqpQiOyB9Cgoubmktc3dhcC1hbHQtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7q+aIjsgfQoKLm5pLXN3YXAtYWx0OmJlZm9yZSB7IGNvbnRlbnQ6ICLur5siOyB9CgoubmktdGh1bWJzLWRvd246YmVmb3JlIHsgY29udGVudDogIu6vsyI7IH0KCi5uaS10aHVtYnMtdXA6YmVmb3JlIHsgY29udGVudDogIu6vtCI7IH0KCi5uaS10YWc6YmVmb3JlIHsgY29udGVudDogIu6vpCI7IH0KCi5uaS10YWctYWx0OmJlZm9yZSB7IGNvbnRlbnQ6ICLur6IiOyB9CgoubmktdGFnczpiZWZvcmUgeyBjb250ZW50OiAi7q+mIjsgfQoKLm5pLXRhZy1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLur6MiOyB9CgoubmktdGFnLWFsdC1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLur6EiOyB9CgoubmktdGFncy1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLur6UiOyB9CgoubmktYm9va21hcms6YmVmb3JlIHsgY29udGVudDogIu6lsyI7IH0KCi5uaS1ib29rbWFyay1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLupbIiOyB9CgoubmktbGFiZWw6YmVmb3JlIHsgY29udGVudDogIu6qtSI7IH0KCi5uaS1sYWJlbC1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLuqrQiOyB9CgoubmktcHJpb3JpdHk6YmVmb3JlIHsgY29udGVudDogIu6stiI7IH0KCi5uaS1waW9yaXR5OmJlZm9yZSB7IGNvbnRlbnQ6ICLurLYiOyB9CgoubmktcHJpb3JpdHktZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7qy1IjsgfQoKLm5pLXBpb3JpdHktZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7qy1IjsgfQoKLm5pLWxhYmVsLWFsdDpiZWZvcmUgeyBjb250ZW50OiAi7qqzIjsgfQoKLm5pLWxhYmVsLWFsdC1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLuqrIiOyB9CgoubmktdGlja2V0LWFsdDpiZWZvcmUgeyBjb250ZW50OiAi7q+2IjsgfQoKLm5pLXRpY2tldDpiZWZvcmUgeyBjb250ZW50OiAi7q+8IjsgfQoKLm5pLXRpY2tldC1taW51czpiZWZvcmUgeyBjb250ZW50OiAi7q+5IjsgfQoKLm5pLXRpY2tldC1wbHVzOmJlZm9yZSB7IGNvbnRlbnQ6ICLur7siOyB9CgoubmktdGlja2V0LWFsdC1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLur7UiOyB9CgoubmktdGlja2V0LWZpbGw6YmVmb3JlIHsgY29udGVudDogIu6vtyI7IH0KCi5uaS10aWNrZXQtbWludXMtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7q+4IjsgfQoKLm5pLXRpY2tldC1wbHVzLWZpbGw6YmVmb3JlIHsgY29udGVudDogIu6vuiI7IH0KCi5uaS10b2dnbGUtb2ZmOmJlZm9yZSB7IGNvbnRlbnQ6ICLur78iOyB9CgoubmktdG9nZ2xlLW9uOmJlZm9yZSB7IGNvbnRlbnQ6ICLusIAiOyB9CgoubmktdHJhc2gtYWx0OmJlZm9yZSB7IGNvbnRlbnQ6ICLusIQiOyB9CgoubmktdHJhc2gtZW1wdHk6YmVmb3JlIHsgY29udGVudDogIu6whiI7IH0KCi5uaS10cmFzaDpiZWZvcmUgeyBjb250ZW50OiAi7rCIIjsgfQoKLm5pLXRyYXNoLWZpbGw6YmVmb3JlIHsgY29udGVudDogIu6whyI7IH0KCi5uaS10cmFzaC1lbXB0eS1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLusIUiOyB9CgoubmktZGVsZXRlLWZpbGw6YmVmb3JlIHsgY29udGVudDogIu6olyI7IH0KCi5uaS1kZWxldGU6YmVmb3JlIHsgY29udGVudDogIu6omCI7IH0KCi5uaS1hbGFybS1hbHQ6YmVmb3JlIHsgY29udGVudDogIu6kiSI7IH0KCi5uaS1hbGFybTpiZWZvcmUgeyBjb250ZW50OiAi7qSKIjsgfQoKLm5pLWJ1Z3M6YmVmb3JlIHsgY29udGVudDogIu6luyI7IH0KCi5uaS1idWlsZGluZzpiZWZvcmUgeyBjb250ZW50OiAi7qW9IjsgfQoKLm5pLWJ1aWxkaW5nLWZpbGw6YmVmb3JlIHsgY29udGVudDogIu6lvCI7IH0KCi5uaS1oZWFkcGhvbmU6YmVmb3JlIHsgY29udGVudDogIu6qkyI7IH0KCi5uaS1oZWFkcGhvbmUtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7qqSIjsgfQoKLm5pLWFwZXJ0dXJlOmJlZm9yZSB7IGNvbnRlbnQ6ICLupJsiOyB9CgoubmktaGVscC1hbHQ6YmVmb3JlIHsgY29udGVudDogIu6qliI7IH0KCi5uaS1hd2FyZDpiZWZvcmUgeyBjb250ZW50OiAi7qWTIjsgfQoKLm5pLWJyaWVmY2FzZTpiZWZvcmUgeyBjb250ZW50OiAi7qW4IjsgfQoKLm5pLWdpZnQ6YmVmb3JlIHsgY29udGVudDogIu6pryI7IH0KCi5uaS1nbG9iZTpiZWZvcmUgeyBjb250ZW50OiAi7qm0IjsgfQoKLm5pLXVtYnJlbGE6YmVmb3JlIHsgY29udGVudDogIu6wkCI7IH0KCi5uaS10cnVjazpiZWZvcmUgeyBjb250ZW50OiAi7rCLIjsgfQoKLm5pLXNpZ24tdXNkOmJlZm9yZSB7IGNvbnRlbnQ6ICLurqciOyB9Cgoubmktc2lnbi1kb2xsYXI6YmVmb3JlIHsgY29udGVudDogIu6upyI7IH0KCi5uaS1zaWduLW14bjpiZWZvcmUgeyBjb250ZW50OiAi7q6ZIjsgfQoKLm5pLXNpZ24tc2dkOmJlZm9yZSB7IGNvbnRlbnQ6ICLurqAiOyB9Cgoubmktc2lnbi1ldXJvOmJlZm9yZSB7IGNvbnRlbnQ6ICLurpQiOyB9Cgoubmktc2lnbi1ldXI6YmVmb3JlIHsgY29udGVudDogIu6ulCI7IH0KCi5uaS1zaWduLWdicDpiZWZvcmUgeyBjb250ZW50OiAi7q6JIjsgfQoKLm5pLXNpZ24tcG91bmQ6YmVmb3JlIHsgY29udGVudDogIu6uiSI7IH0KCi5uaS1zaWduLXRoYjpiZWZvcmUgeyBjb250ZW50OiAi7q6kIjsgfQoKLm5pLXNpZ24taW5yOmJlZm9yZSB7IGNvbnRlbnQ6ICLurpciOyB9Cgoubmktc2lnbi1qcHk6YmVmb3JlIHsgY29udGVudDogIu6umCI7IH0KCi5uaS1zaWduLXllbjpiZWZvcmUgeyBjb250ZW50OiAi7q6YIjsgfQoKLm5pLXNpZ24tY255OmJlZm9yZSB7IGNvbnRlbnQ6ICLuro4iOyB9Cgoubmktc2lnbi1rb2JvOmJlZm9yZSB7IGNvbnRlbnQ6ICLurqEiOyB9Cgoubmktc2lnbi1jaGY6YmVmb3JlIHsgY29udGVudDogIu6ujSI7IH0KCi5uaS1zaWduLXZuZDpiZWZvcmUgeyBjb250ZW50OiAi7q6qIjsgfQoKLm5pLXNpZ24tcGhwOmJlZm9yZSB7IGNvbnRlbnQ6ICLurpwiOyB9Cgoubmktc2lnbi1icmw6YmVmb3JlIHsgY29udGVudDogIu6uiyI7IH0KCi5uaS1zaWduLWlkcjpiZWZvcmUgeyBjb250ZW50OiAi7q6WIjsgfQoKLm5pLXNpZ24tY3prOmJlZm9yZSB7IGNvbnRlbnQ6ICLuro8iOyB9Cgoubmktc2lnbi1oa2Q6YmVmb3JlIHsgY29udGVudDogIu6ulSI7IH0KCi5uaS1zaWduLWtyOmJlZm9yZSB7IGNvbnRlbnQ6ICLurp8iOyB9Cgoubmktc2lnbi1ka2s6YmVmb3JlIHsgY29udGVudDogIu6unyI7IH0KCi5uaS1zaWduLW5vazpiZWZvcmUgeyBjb250ZW50OiAi7q6fIjsgfQoKLm5pLXNpZ24tc2VrOmJlZm9yZSB7IGNvbnRlbnQ6ICLurp8iOyB9Cgoubmktc2lnbi1ydWI6YmVmb3JlIHsgY29udGVudDogIu6uniI7IH0KCi5uaS1zaWduLW15cjpiZWZvcmUgeyBjb250ZW50OiAi7q6bIjsgfQoKLm5pLXNpZ24tcGxuOmJlZm9yZSB7IGNvbnRlbnQ6ICLurp0iOyB9Cgoubmktc2lnbi10cnk6YmVmb3JlIHsgY29udGVudDogIu6upiI7IH0KCi5uaS1zaWduLXdhdmVzOmJlZm9yZSB7IGNvbnRlbnQ6ICLurqsiOyB9Cgoubmktd2F2ZXM6YmVmb3JlIHsgY29udGVudDogIu6uqyI7IH0KCi5uaS1zaWduLXRyeDpiZWZvcmUgeyBjb250ZW50OiAi7q6lIjsgfQoKLm5pLXRyb246YmVmb3JlIHsgY29udGVudDogIu6upSI7IH0KCi5uaS1zaWduLXhlbTpiZWZvcmUgeyBjb250ZW50OiAi7q6sIjsgfQoKLm5pLW5lbTpiZWZvcmUgeyBjb250ZW50OiAi7q6sIjsgfQoKLm5pLXNpZ24tbXhyOmJlZm9yZSB7IGNvbnRlbnQ6ICLurpoiOyB9CgoubmktbW9uZXJvOmJlZm9yZSB7IGNvbnRlbnQ6ICLurpoiOyB9Cgoubmktc2lnbi11c2RjOmJlZm9yZSB7IGNvbnRlbnQ6ICLurqgiOyB9Cgoubmktc2lnbi1zdGVsbGVyOmJlZm9yZSB7IGNvbnRlbnQ6ICLurqMiOyB9Cgoubmktc2lnbi1zdGVlbTpiZWZvcmUgeyBjb250ZW50OiAi7q6iIjsgfQoKLm5pLXNpZ24tdXNkdDpiZWZvcmUgeyBjb250ZW50OiAi7q6pIjsgfQoKLm5pLXRldGhlcjpiZWZvcmUgeyBjb250ZW50OiAi7q6pIjsgfQoKLm5pLXNpZ24tYnRjOmJlZm9yZSB7IGNvbnRlbnQ6ICLurowiOyB9CgoubmktYml0Y29pbjpiZWZvcmUgeyBjb250ZW50OiAi7q6MIjsgfQoKLm5pLXNpZ24tYmNoOmJlZm9yZSB7IGNvbnRlbnQ6ICLurogiOyB9CgoubmktYml0Y29pbi1jYXNoOmJlZm9yZSB7IGNvbnRlbnQ6ICLurogiOyB9Cgoubmktc2lnbi1ibmI6YmVmb3JlIHsgY29udGVudDogIu6uiiI7IH0KCi5uaS1iaW5hbmNlOmJlZm9yZSB7IGNvbnRlbnQ6ICLurooiOyB9Cgoubmktc2lnbi1hZGE6YmVmb3JlIHsgY29udGVudDogIu6uhyI7IH0KCi5uaS1zaWduLXpjYXNoOmJlZm9yZSB7IGNvbnRlbnQ6ICLurq8iOyB9Cgoubmktc2lnbi1ldGg6YmVmb3JlIHsgY29udGVudDogIu6ukyI7IH0KCi5uaS1ldGhlcmV1bTpiZWZvcmUgeyBjb250ZW50OiAi7q6TIjsgfQoKLm5pLXNpZ24tZGFzaDpiZWZvcmUgeyBjb250ZW50OiAi7q6QIjsgfQoKLm5pLWRhc2g6YmVmb3JlIHsgY29udGVudDogIu6ukCI7IH0KCi5uaS1zaWduLXhycC1vbGQ6YmVmb3JlIHsgY29udGVudDogIu6uriI7IH0KCi5uaS1yaXBwbGUtb2xkOmJlZm9yZSB7IGNvbnRlbnQ6ICLurq4iOyB9Cgoubmktc2lnbi1lb3M6YmVmb3JlIHsgY29udGVudDogIu6ukiI7IH0KCi5uaS1lb3M6YmVmb3JlIHsgY29udGVudDogIu6ukiI7IH0KCi5uaS1zaWduLXhycDpiZWZvcmUgeyBjb250ZW50OiAi7q6tIjsgfQoKLm5pLXJpcHBsZTpiZWZvcmUgeyBjb250ZW50OiAi7q6tIjsgfQoKLm5pLWFtZXJpY2FuLWV4cHJlc3M6YmVmb3JlIHsgY29udGVudDogIu6kmCI7IH0KCi5uaS1qY2I6YmVmb3JlIHsgY29udGVudDogIu6qriI7IH0KCi5uaS1jYy1qY2I6YmVmb3JlIHsgY29udGVudDogIu6qriI7IH0KCi5uaS1tYzpiZWZvcmUgeyBjb250ZW50OiAi7qugIjsgfQoKLm5pLWNjLW1jOmJlZm9yZSB7IGNvbnRlbnQ6ICLuq6AiOyB9CgoubmktZGlzY292ZXI6YmVmb3JlIHsgY29udGVudDogIu6omiI7IH0KCi5uaS1jYy1kaXNjb3ZlcjpiZWZvcmUgeyBjb250ZW50OiAi7qiaIjsgfQoKLm5pLXZpc2E6YmVmb3JlIHsgY29udGVudDogIu6wvSI7IH0KCi5uaS1jYy12aXNhOmJlZm9yZSB7IGNvbnRlbnQ6ICLusL0iOyB9CgoubmktY2MtcGF5cGFsOmJlZm9yZSB7IGNvbnRlbnQ6ICLurKciOyB9CgoubmktY2Mtc3RyaXBlOmJlZm9yZSB7IGNvbnRlbnQ6ICLupq0iOyB9CgoubmktYW1hem9uLXBheTpiZWZvcmUgeyBjb250ZW50OiAi7qSWIjsgfQoKLm5pLWFtYXpvbi1wYXktZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7qSVIjsgfQoKLm5pLWdvb2dsZS1wYXk6YmVmb3JlIHsgY29udGVudDogIu6ptyI7IH0KCi5uaS1nb29nbGUtcGF5LWZpbGw6YmVmb3JlIHsgY29udGVudDogIu6ptiI7IH0KCi5uaS1hcHBsZS1wYXk6YmVmb3JlIHsgY29udGVudDogIu6knSI7IH0KCi5uaS1hcHBsZS1wYXktZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7qScIjsgfQoKLm5pLWFuZ3VsYXI6YmVmb3JlIHsgY29udGVudDogIu6kmiI7IH0KCi5uaS1yZWFjdDpiZWZvcmUgeyBjb250ZW50OiAi7q2NIjsgfQoKLm5pLWxhcmF2ZWw6YmVmb3JlIHsgY29udGVudDogIu6qtyI7IH0KCi5uaS1odG1sNTpiZWZvcmUgeyBjb250ZW50OiAi7qqeIjsgfQoKLm5pLWNzczMtZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7qiJIjsgfQoKLm5pLWNzczM6YmVmb3JlIHsgY29udGVudDogIu6oiiI7IH0KCi5uaS1qczpiZWZvcmUgeyBjb250ZW50OiAi7qqwIjsgfQoKLm5pLXBocDpiZWZvcmUgeyBjb250ZW50OiAi7qytIjsgfQoKLm5pLXB5dGhvbjpiZWZvcmUgeyBjb250ZW50OiAi7q2JIjsgfQoKLm5pLWJvb3RzdHJhcDpiZWZvcmUgeyBjb250ZW50OiAi7qW0IjsgfQoKLm5pLWViYXk6YmVmb3JlIHsgY29udGVudDogIu6opyI7IH0KCi5uaS1nb29nbGUtd2FsbGV0OmJlZm9yZSB7IGNvbnRlbnQ6ICLuqbkiOyB9CgoubmktZ29vZ2xlLWRyaXZlOmJlZm9yZSB7IGNvbnRlbnQ6ICLuqbUiOyB9CgoubmktZ29vZ2xlLXBsYXktc3RvcmU6YmVmb3JlIHsgY29udGVudDogIu6puCI7IH0KCi5uaS1hbmRyb2lkOmJlZm9yZSB7IGNvbnRlbnQ6ICLupJkiOyB9CgoubmktYmxvZ2dlci1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLupasiOyB9CgoubmktYmxvZ2dlcjpiZWZvcmUgeyBjb250ZW50OiAi7qWsIjsgfQoKLm5pLWhhbmdvdXQ6YmVmb3JlIHsgY29udGVudDogIu6qjSI7IH0KCi5uaS1hcHBsZS1zdG9yZTpiZWZvcmUgeyBjb250ZW50OiAi7qSfIjsgfQoKLm5pLWFwcGxlLXN0b3JlLWlvczpiZWZvcmUgeyBjb250ZW50OiAi7qSeIjsgfQoKLm5pLXN0cmlwZTpiZWZvcmUgeyBjb250ZW50OiAi7q+XIjsgfQoKLm5pLWFwcGxlOmJlZm9yZSB7IGNvbnRlbnQ6ICLupKAiOyB9CgoubmktbWljcm9zb2Z0OmJlZm9yZSB7IGNvbnRlbnQ6ICLuq7AiOyB9Cgoubmktd2luZG93czpiZWZvcmUgeyBjb250ZW50OiAi7rGMIjsgfQoKLm5pLWFtYXpvbjpiZWZvcmUgeyBjb250ZW50OiAi7qSXIjsgfQoKLm5pLXBheXBhbC1hbHQ6YmVmb3JlIHsgY29udGVudDogIu6sqCI7IH0KCi5uaS1haXJibmI6YmVmb3JlIHsgY29udGVudDogIu6kiCI7IH0KCi5uaS1hZG9iZTpiZWZvcmUgeyBjb250ZW50OiAi7qSHIjsgfQoKLm5pLW1haWxjaGltcDpiZWZvcmUgeyBjb250ZW50OiAi7quYIjsgfQoKLm5pLWRyb3Bib3g6YmVmb3JlIHsgY29udGVudDogIu6opiI7IH0KCi5uaS1kaWdpdGFsLW9jZWFuOmJlZm9yZSB7IGNvbnRlbnQ6ICLuqJkiOyB9Cgoubmktc2xhY2s6YmVmb3JlIHsgY29udGVudDogIu6utSI7IH0KCi5uaS1zbGFjay1oYXNoOmJlZm9yZSB7IGNvbnRlbnQ6ICLurrQiOyB9Cgoubmktc3RhY2stb3ZlcmZsb3c6YmVmb3JlIHsgY29udGVudDogIu6viyI7IH0KCi5uaS1zb3VuZGNsb3VkOmJlZm9yZSB7IGNvbnRlbnQ6ICLur4AiOyB9CgoubmktYmxhY2tiZXJyeTpiZWZvcmUgeyBjb250ZW50OiAi7qWmIjsgfQoKLm5pLXNwb3RpZnk6YmVmb3JlIHsgY29udGVudDogIu6vhiI7IH0KCi5uaS1raWNrc3RhcnRlcjpiZWZvcmUgeyBjb250ZW50OiAi7qqxIjsgfQoKLm5pLWhvdXp6OmJlZm9yZSB7IGNvbnRlbnQ6ICLuqp0iOyB9CgoubmktdmluZTpiZWZvcmUgeyBjb250ZW50OiAi7rC8IjsgfQoKLm5pLXllbHA6YmVmb3JlIHsgY29udGVudDogIu6xjyI7IH0KCi5uaS15b2FzdDpiZWZvcmUgeyBjb250ZW50OiAi7rGQIjsgfQoKLm5pLWVudmF0bzpiZWZvcmUgeyBjb250ZW50OiAi7qivIjsgfQoKLm5pLXdvcmRwcmVzczpiZWZvcmUgeyBjb250ZW50OiAi7rGOIjsgfQoKLm5pLXdwOmJlZm9yZSB7IGNvbnRlbnQ6ICLusY4iOyB9Cgoubmktd29yZHByZXNzLWZpbGw6YmVmb3JlIHsgY29udGVudDogIu6xjSI7IH0KCi5uaS1lbGVtZW50b3I6YmVmb3JlIHsgY29udGVudDogIu6orCI7IH0KCi5uaS1qb29tbGE6YmVmb3JlIHsgY29udGVudDogIu6qryI7IH0KCi5uaS1tZWdlbnRvOmJlZm9yZSB7IGNvbnRlbnQ6ICLuq6MiOyB9CgoubmktZ2l0OmJlZm9yZSB7IGNvbnRlbnQ6ICLuqbAiOyB9CgoubmktZ2l0aHViOmJlZm9yZSB7IGNvbnRlbnQ6ICLuqbMiOyB9CgoubmktZ2l0aHViLXJvdW5kOmJlZm9yZSB7IGNvbnRlbnQ6ICLuqbIiOyB9CgoubmktZ2l0aHViLWNpcmNsZTpiZWZvcmUgeyBjb250ZW50OiAi7qmxIjsgfQoKLm5pLWRyaWJiYmxlOmJlZm9yZSB7IGNvbnRlbnQ6ICLuqKUiOyB9CgoubmktZHJpYmJibGUtcm91bmQ6YmVmb3JlIHsgY29udGVudDogIu6opCI7IH0KCi5uaS1iZWhhbmNlOmJlZm9yZSB7IGNvbnRlbnQ6ICLupaEiOyB9CgoubmktYmVoYW5jZS1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLupaAiOyB9CgoubmktZmxpY2tyOmJlZm9yZSB7IGNvbnRlbnQ6ICLuqZ0iOyB9CgoubmktZmxpY2tyLXJvdW5kOmJlZm9yZSB7IGNvbnRlbnQ6ICLuqZwiOyB9CgoubmktbWVkaXVtOmJlZm9yZSB7IGNvbnRlbnQ6ICLuq6IiOyB9CgoubmktbWVkaXVtLXJvdW5kOmJlZm9yZSB7IGNvbnRlbnQ6ICLuq6EiOyB9CgoubmktcmVkZGl0OmJlZm9yZSB7IGNvbnRlbnQ6ICLurZAiOyB9CgoubmktcmVkZGl0LXJvdW5kOmJlZm9yZSB7IGNvbnRlbnQ6ICLurY8iOyB9CgoubmktcmVkZGl0LWNpcmNsZTpiZWZvcmUgeyBjb250ZW50OiAi7q2OIjsgfQoKLm5pLWdvb2dsZTpiZWZvcmUgeyBjb250ZW50OiAi7qm6IjsgfQoKLm5pLWZhY2Vib29rLWY6YmVmb3JlIHsgY29udGVudDogIu6oviI7IH0KCi5uaS1mYWNlYm9vay1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLuqL8iOyB9CgoubmktZmFjZWJvb2stY2lyY2xlOmJlZm9yZSB7IGNvbnRlbnQ6ICLuqL0iOyB9CgoubmktaW5zdGFncmFtOmJlZm9yZSB7IGNvbnRlbnQ6ICLuqqsiOyB9CgoubmktaW5zdGFncmFtLXJvdW5kOmJlZm9yZSB7IGNvbnRlbnQ6ICLuqqoiOyB9CgoubmktbGlua2VkaW46YmVmb3JlIHsgY29udGVudDogIu6riyI7IH0KCi5uaS1saW5rZWRpbi1yb3VuZDpiZWZvcmUgeyBjb250ZW50OiAi7quKIjsgfQoKLm5pLXR3aXR0ZXI6YmVmb3JlIHsgY29udGVudDogIu6wjyI7IH0KCi5uaS10d2l0dGVyLXJvdW5kOmJlZm9yZSB7IGNvbnRlbnQ6ICLusI4iOyB9CgoubmktcGludGVyZXN0OmJlZm9yZSB7IGNvbnRlbnQ6ICLurLQiOyB9CgoubmktcGludGVyZXN0LXJvdW5kOmJlZm9yZSB7IGNvbnRlbnQ6ICLurLMiOyB9CgoubmktcGludGVyZXN0LWNpcmNsZTpiZWZvcmUgeyBjb250ZW50OiAi7qyyIjsgfQoKLm5pLXR1bWJscjpiZWZvcmUgeyBjb250ZW50OiAi7rCNIjsgfQoKLm5pLXR1bWJsci1yb3VuZDpiZWZvcmUgeyBjb250ZW50OiAi7rCMIjsgfQoKLm5pLXNreXBlOmJlZm9yZSB7IGNvbnRlbnQ6ICLurrMiOyB9CgoubmktdmliZXI6YmVmb3JlIHsgY29udGVudDogIu6wtiI7IH0KCi5uaS13aGF0c2FwcDpiZWZvcmUgeyBjb250ZW50OiAi7rGJIjsgfQoKLm5pLXdoYXRzYXBwLXJvdW5kOmJlZm9yZSB7IGNvbnRlbnQ6ICLusYgiOyB9Cgoubmktc25hcGNoYXQ6YmVmb3JlIHsgY29udGVudDogIu6utyI7IH0KCi5uaS1zbmFwY2hhdC1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLurrYiOyB9CgoubmktdGVsZWdyYW06YmVmb3JlIHsgY29udGVudDogIu6vrCI7IH0KCi5uaS10ZWxlZ3JhbS1jaXJjbGU6YmVmb3JlIHsgY29udGVudDogIu6vqyI7IH0KCi5uaS15b3V0dWJlLWxpbmU6YmVmb3JlIHsgY29udGVudDogIu6xkiI7IH0KCi5uaS15b3V0dWJlOmJlZm9yZSB7IGNvbnRlbnQ6ICLusZIiOyB9CgoubmkteW91dHViZS1maWxsOmJlZm9yZSB7IGNvbnRlbnQ6ICLusZMiOyB9CgoubmkteW91dHViZS1yb3VuZDpiZWZvcmUgeyBjb250ZW50OiAi7rGRIjsgfQoKLm5pLXZpbWVvOmJlZm9yZSB7IGNvbnRlbnQ6ICLusLsiOyB9CgoubmktdmltZW8tZmlsbDpiZWZvcmUgeyBjb250ZW50OiAi7rC6IjsgfQoKLmNvbSB7IGNvbG9yOiAjOTNhMWExOyB9CgoubGl0IHsgY29sb3I6ICMxOTVmOTE7IH0KCi5wdW4sIC5vcG4sIC5jbG8geyBjb2xvcjogIzkzYTFhMTsgfQoKLmZ1biB7IGNvbG9yOiAjZGMzMjJmOyB9Cgouc3RyLCAuYXR2IHsgY29sb3I6ICNEMTQ7IH0KCi5rd2QsIC5saW5lbnVtcyAudGFnIHsgY29sb3I6ICMxZTM0N2I7IH0KCi50eXAsIC5hdG4sIC5kZWMsIC52YXIgeyBjb2xvcjogdGVhbDsgfQoKLnBsbiB7IGNvbG9yOiAjNDg0ODRjOyB9CgoucHJldHR5cHJpbnQgeyBwYWRkaW5nOiA4cHg7IGJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjk7IGJvcmRlcjogMXB4IHNvbGlkICNlMWUxZTg7IH0KCi5wcmV0dHlwcmludC5saW5lbnVtcyB7IC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgNDBweCAwIDAgI2ZiZmJmYywgaW5zZXQgNDFweCAwIDAgI2VjZWNmMDsgLW1vei1ib3gtc2hhZG93OiBpbnNldCA0MHB4IDAgMCAjZmJmYmZjLCBpbnNldCA0MXB4IDAgMCAjZWNlY2YwOyBib3gtc2hhZG93OiBpbnNldCA0MHB4IDAgMCAjZmJmYmZjLCBpbnNldCA0MXB4IDAgMCAjZWNlY2YwOyB9CgovKiBTcGVjaWZ5IGNsYXNzPWxpbmVudW1zIG9uIGEgcHJlIHRvIGdldCBsaW5lIG51bWJlcmluZyAqLwpvbC5saW5lbnVtcyB7IG1hcmdpbjogMCAwIDAgMzNweDsgfQoKb2wubGluZW51bXMgbGkgeyBwYWRkaW5nLWxlZnQ6IDEycHg7IGNvbG9yOiAjYmViZWM1OyBsaW5lLWhlaWdodDogMThweDsgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI2ZmZjsgfQoKLyoqIFNlbGVjdDIgKi8KLnNlbGVjdDIgeyB3aWR0aDogMTAwJSAhaW1wb3J0YW50OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH0KCi5zZWxlY3QyLWNvbnRhaW5lciB7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMDsgcG9zaXRpb246IHJlbGF0aXZlOyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9Cgouc2VsZWN0Mi1jb250YWluZXIgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUgeyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBjdXJzb3I6IHBvaW50ZXI7IGRpc3BsYXk6IGJsb2NrOyBoZWlnaHQ6IDI4cHg7IHVzZXItc2VsZWN0OiBub25lOyAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyB9Cgouc2VsZWN0Mi1jb250YWluZXIgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUgLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCB7IGRpc3BsYXk6IGJsb2NrOyBwYWRkaW5nLWxlZnQ6IDhweDsgcGFkZGluZy1yaWdodDogMjBweDsgb3ZlcmZsb3c6IGhpZGRlbjsgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7IHdoaXRlLXNwYWNlOiBub3dyYXA7IH0KCi5zZWxlY3QyLWNvbnRhaW5lciAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSAuc2VsZWN0Mi1zZWxlY3Rpb25fX2NsZWFyIHsgcG9zaXRpb246IHJlbGF0aXZlOyB9Cgouc2VsZWN0Mi1jb250YWluZXIgLnNlbGVjdDItc2VsZWN0aW9uLS1tdWx0aXBsZSB7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGN1cnNvcjogcG9pbnRlcjsgZGlzcGxheTogYmxvY2s7IG1pbi1oZWlnaHQ6IGNhbGMoMi4xMjVyZW0gKyAycHgpOyB1c2VyLXNlbGVjdDogbm9uZTsgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsgfQoKLnNlbGVjdDItY29udGFpbmVyIC5zZWxlY3QyLXNlbGVjdGlvbi0tbXVsdGlwbGUgLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCB7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgb3ZlcmZsb3c6IGhpZGRlbjsgcGFkZGluZy1sZWZ0OiA4cHg7IHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOyB3aGl0ZS1zcGFjZTogbm93cmFwOyB9Cgouc2VsZWN0Mi1jb250YWluZXIuc2VsZWN0Mi1sZyAuc2VsZWN0Mi1zZWxlY3Rpb24tLW11bHRpcGxlIHsgbWluLWhlaWdodDogY2FsYygyLjYyNXJlbSArIDJweCk7IH0KCi5zZWxlY3QyLWNvbnRhaW5lciAuc2VsZWN0Mi1zZWFyY2gtLWlubGluZSAuc2VsZWN0Mi1zZWFyY2hfX2ZpZWxkIHsgYm94LXNpemluZzogYm9yZGVyLWJveDsgYm9yZGVyOiBub25lOyBmb250LXNpemU6IDEwMCU7IG1hcmdpbi10b3A6IDVweDsgcGFkZGluZzogMDsgfQoKLnNlbGVjdDItY29udGFpbmVyIC5zZWxlY3QyLXNlYXJjaC0taW5saW5lIC5zZWxlY3QyLXNlYXJjaF9fZmllbGQ6Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24geyAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7IH0KCi5zZWxlY3QyLWRyb3Bkb3duIHsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgYm9yZGVyLXJhZGl1czogNHB4OyBib3gtc2hhZG93OiBub25lOyBib3JkZXI6IDFweCBzb2xpZCAjZGJkZmVhOyBmb250LWZhbWlseTogUm9ib3RvLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEzcHg7IGZvbnQtd2VpZ2h0OiA0MDA7IGRpc3BsYXk6IGJsb2NrOyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IC0xMDAwMDBweDsgei1pbmRleDogMTA1MTsgcGFkZGluZzogNnB4OyB9Cgouc2VsZWN0Mi1kcm9wZG93bi0tYmVsb3cgeyBtYXJnaW4tdG9wOiAtMXB4OyBib3JkZXItcmFkaXVzOiAwIDAgNHB4IDRweDsgfQoKLnNlbGVjdDItZHJvcGRvd24tLWFib3ZlIHsgbWFyZ2luLXRvcDogMXB4OyBib3JkZXItcmFkaXVzOiA0cHggNHB4IDAgMDsgfQoKLnNlbGVjdDItcmVzdWx0cyB7IGRpc3BsYXk6IGJsb2NrOyB9Cgouc2VsZWN0Mi1yZXN1bHRzX19vcHRpb25zIHsgbGlzdC1zdHlsZTogbm9uZTsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyBib3JkZXItcmFkaXVzOiA0cHggNHB4OyB9Cgouc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24geyBwYWRkaW5nOiAwLjM3NXJlbSAwLjc1cmVtOyBib3JkZXItcmFkaXVzOiA0cHg7IHVzZXItc2VsZWN0OiBub25lOyAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyB9Cgouc2VsZWN0Mi1yZXN1bHRzX19vcHRpb246bm90KDpsYXN0LWNoaWxkKSB7IG1hcmdpbi1ib3R0b206IDAuMTI1cmVtOyB9Cgouc2VsZWN0Mi1yZXN1bHRzX19vcHRpb25bYXJpYS1zZWxlY3RlZF0geyBjdXJzb3I6IHBvaW50ZXI7IH0KCi5zZWxlY3QyLWxnIC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbiB7IHBhZGRpbmc6IDAuNXJlbSAwLjc1cmVtOyB9Cgouc2VsZWN0Mi1jb250YWluZXItLW9wZW4gLnNlbGVjdDItZHJvcGRvd24geyBsZWZ0OiAwOyBib3JkZXItY29sb3I6ICNiNGJkZDM7IH0KCi5zZWxlY3QyLXNlYXJjaC0tZHJvcGRvd24geyBkaXNwbGF5OiBibG9jazsgcGFkZGluZzogMDsgfQoKLnNlbGVjdDItc2VhcmNoLS1kcm9wZG93biAuc2VsZWN0Mi1zZWFyY2hfX2ZpZWxkIHsgcGFkZGluZzogMC4zNzVyZW0gMC43NXJlbTsgd2lkdGg6IDEwMCU7IGJvcmRlci1yYWRpdXM6IDRweDsgbWFyZ2luLWJvdHRvbTogNnB4OyBjb2xvcjogIzUyNjQ4NDsgfQoKLnNlbGVjdDItc2VhcmNoLS1kcm9wZG93biAuc2VsZWN0Mi1zZWFyY2hfX2ZpZWxkOmZvY3VzIHsgb3V0bGluZTogbm9uZTsgYm9yZGVyLWNvbG9yOiAjMDk3MWZlOyB9Cgouc2VsZWN0Mi1zZWFyY2gtLWRyb3Bkb3duIC5zZWxlY3QyLXNlYXJjaF9fZmllbGQ6Oi13ZWJraXQtc2VhcmNoLWNhbmNlbC1idXR0b24geyAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7IH0KCi5zZWxlY3QyLWxnIC5zZWxlY3QyLXNlYXJjaC0tZHJvcGRvd24gLnNlbGVjdDItc2VhcmNoX19maWVsZCB7IHBhZGRpbmc6IDAuNXJlbSAwLjc1cmVtOyB9Cgouc2VsZWN0Mi1zZWFyY2gtLWRyb3Bkb3duLnNlbGVjdDItc2VhcmNoLS1oaWRlIHsgZGlzcGxheTogbm9uZTsgfQoKLnNlbGVjdDItY2xvc2UtbWFzayB7IGJvcmRlcjogMDsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyBkaXNwbGF5OiBibG9jazsgcG9zaXRpb246IGZpeGVkOyBsZWZ0OiAwOyB0b3A6IDA7IG1pbi1oZWlnaHQ6IDEwMCU7IG1pbi13aWR0aDogMTAwJTsgaGVpZ2h0OiBhdXRvOyB3aWR0aDogYXV0bzsgb3BhY2l0eTogMDsgei1pbmRleDogOTk7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7IGZpbHRlcjogYWxwaGEob3BhY2l0eT0wKTsgfQoKLnNlbGVjdDItaGlkZGVuLWFjY2Vzc2libGUgeyBib3JkZXI6IDAgIWltcG9ydGFudDsgY2xpcDogcmVjdCgwIDAgMCAwKSAhaW1wb3J0YW50OyAtd2Via2l0LWNsaXAtcGF0aDogaW5zZXQoNTAlKSAhaW1wb3J0YW50OyBjbGlwLXBhdGg6IGluc2V0KDUwJSkgIWltcG9ydGFudDsgaGVpZ2h0OiAxcHggIWltcG9ydGFudDsgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50OyBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7IHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50OyB3aWR0aDogMXB4ICFpbXBvcnRhbnQ7IHdoaXRlLXNwYWNlOiBub3dyYXAgIWltcG9ydGFudDsgfQoKLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0IC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIHsgaGVpZ2h0OiBjYWxjKDIuMTI1cmVtICsgMnB4KTsgZm9udC1mYW1pbHk6IFJvYm90bywgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxM3B4OyBmb250LXdlaWdodDogNDAwOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyBib3JkZXI6IDFweCBzb2xpZCAjZGJkZmVhOyBib3JkZXItcmFkaXVzOiA0cHg7IGJveC1zaGFkb3c6IG5vbmU7IHRyYW5zaXRpb246IGFsbCAwLjNzOyB9Cgouc2VsZWN0Mi1zbSAuc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUgeyBmb250LXNpemU6IDEycHg7IH0KCi5zZWxlY3QyLWxnIC5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSB7IGZvbnQtc2l6ZTogMTVweDsgfQoKLnNlbGVjdDIteGwgLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0IC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIHsgZm9udC1zaXplOiAxNXB4OyB9Cgouc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGU6Zm9jdXMgeyBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSg5LCAxMTMsIDI1NCwgMC4xKTsgYm9yZGVyLWNvbG9yOiAjMDk3MWZlOyBvdXRsaW5lOiBub25lOyB9Cgouc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUgLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCB7IGNvbG9yOiAjNTI2NDg0OyBsaW5lLWhlaWdodDogMS4yNXJlbTsgcGFkZGluZzogMC40Mzc1cmVtIGNhbGMoMi4xMjVyZW0gKyAycHgpIDAuNDM3NXJlbSAxcmVtOyB9Cgouc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUgLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZDpmb2N1cyB7IG91dGxpbmU6IG5vbmU7IH0KCi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSAuc2VsZWN0Mi1zZWxlY3Rpb25fX2NsZWFyIHsgY3Vyc29yOiBwb2ludGVyOyBmbG9hdDogcmlnaHQ7IGZvbnQtd2VpZ2h0OiBib2xkOyB9Cgouc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUgLnNlbGVjdDItc2VsZWN0aW9uX19wbGFjZWhvbGRlciB7IGNvbG9yOiAjODA5NGFlOyB9Cgouc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUgLnNlbGVjdDItc2VsZWN0aW9uX19hcnJvdyB7IGhlaWdodDogY2FsYygyLjEyNXJlbSArIDJweCk7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyByaWdodDogMDsgd2lkdGg6IGNhbGMoMi4xMjVyZW0gKyAycHgpOyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgfQoKLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0IC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIC5zZWxlY3QyLXNlbGVjdGlvbl9fYXJyb3c6YWZ0ZXIgeyBmb250LWZhbWlseTogIk5pb2ljb24iOyBjb250ZW50OiAi7qeFIjsgbGluZS1oZWlnaHQ6IDE7IH0KCi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSAuc2VsZWN0Mi1zZWxlY3Rpb25fX2Fycm93IGIgeyBkaXNwbGF5OiBub25lOyB9Cgouc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQuc2VsZWN0Mi1zbSAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSB7IGhlaWdodDogY2FsYygxLjc1cmVtICsgMnB4KTsgZm9udC1zaXplOiAxMnB4OyB9Cgouc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQuc2VsZWN0Mi1zbSAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSAuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkIHsgbGluZS1oZWlnaHQ6IDEuMjVyZW07IHBhZGRpbmc6IDAuMjVyZW0gY2FsYygxLjc1cmVtICsgMnB4KSAwLjI1cmVtIDFyZW07IH0KCi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdC5zZWxlY3QyLXNtIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIC5zZWxlY3QyLXNlbGVjdGlvbl9fYXJyb3cgeyBoZWlnaHQ6IGNhbGMoMS43NXJlbSArIDJweCk7IHdpZHRoOiBjYWxjKDEuNzVyZW0gKyAycHgpOyB9Cgouc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQuc2VsZWN0Mi1sZyAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSB7IGhlaWdodDogY2FsYygyLjYyNXJlbSArIDJweCk7IGZvbnQtc2l6ZTogMTVweDsgfQoKLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0LnNlbGVjdDItbGcgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUgLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCB7IGxpbmUtaGVpZ2h0OiAxLjI1cmVtOyBwYWRkaW5nOiAwLjY4NzVyZW0gY2FsYygyLjYyNXJlbSArIDJweCkgMC42ODc1cmVtIDFyZW07IH0KCi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdC5zZWxlY3QyLWxnIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIC5zZWxlY3QyLXNlbGVjdGlvbl9fYXJyb3cgeyBoZWlnaHQ6IGNhbGMoMi42MjVyZW0gKyAycHgpOyB3aWR0aDogY2FsYygyLjYyNXJlbSArIDJweCk7IH0KCi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdC5zZWxlY3QyLXhsIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIHsgaGVpZ2h0OiBjYWxjKDMuMjVyZW0gKyAycHgpOyBmb250LXNpemU6IDE1cHg7IH0KCi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdC5zZWxlY3QyLXhsIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIC5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQgeyBsaW5lLWhlaWdodDogMnJlbTsgcGFkZGluZzogMC42MjVyZW0gY2FsYygzLjI1cmVtICsgMnB4KSAwLjYyNXJlbSAxLjI1cmVtOyB9Cgouc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQuc2VsZWN0Mi14bCAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSAuc2VsZWN0Mi1zZWxlY3Rpb25fX2Fycm93IHsgaGVpZ2h0OiBjYWxjKDMuMjVyZW0gKyAycHgpOyB3aWR0aDogY2FsYygzLjI1cmVtICsgMnB4KTsgfQoKLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0LnNlbGVjdDItY29udGFpbmVyLS1iZWxvdy5zZWxlY3QyLWNvbnRhaW5lci0tb3BlbiAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSB7IGJvcmRlci1yYWRpdXM6IDRweCA0cHggMCAwOyB9Cgouc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQuc2VsZWN0Mi1jb250YWluZXItLWFib3ZlLnNlbGVjdDItY29udGFpbmVyLS1vcGVuIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIHsgYm9yZGVyLXJhZGl1czogMCAwIDRweCA0cHg7IH0KCi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdC5zZWxlY3QyLWNvbnRhaW5lci0tZGlzYWJsZWQgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUgeyBib3JkZXItY29sb3I6ICNkYmRmZWE7IGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjE5LCAyMjMsIDIzNCwgMC4zKTsgY3Vyc29yOiBkZWZhdWx0OyB9Cgouc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQuc2VsZWN0Mi1jb250YWluZXItLWRpc2FibGVkIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIC5zZWxlY3QyLXNlbGVjdGlvbl9fY2xlYXIgeyBkaXNwbGF5OiBub25lOyB9Cgouc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQuc2VsZWN0Mi1jb250YWluZXItLW9wZW4gLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUgeyBib3JkZXItY29sb3I6ICNiNGJkZDMgIWltcG9ydGFudDsgfQoKLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0LnNlbGVjdDItY29udGFpbmVyLS1vcGVuIC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlIC5zZWxlY3QyLXNlbGVjdGlvbl9fYXJyb3c6YWZ0ZXIgeyBjb250ZW50OiAi7qeaIjsgfQoKLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0IC5zZWxlY3QyLXNlbGVjdGlvbi0tbXVsdGlwbGUgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyBib3JkZXI6IDFweCBzb2xpZCAjZGJkZmVhOyBib3JkZXItcmFkaXVzOiA0cHg7IGZvbnQtZmFtaWx5OiBSb2JvdG8sIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTNweDsgZm9udC13ZWlnaHQ6IDQwMDsgY3Vyc29yOiB0ZXh0OyB9Cgouc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQgLnNlbGVjdDItc2VsZWN0aW9uLS1tdWx0aXBsZSAuc2VsZWN0Mi1zZWFyY2gtLWlubGluZSBpbnB1dDo6cGxhY2Vob2xkZXIgeyBjb2xvcjogIzgwOTRhZTsgfQoKLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0IC5zZWxlY3QyLXNlbGVjdGlvbi0tbXVsdGlwbGUgLnNlbGVjdDItc2VhcmNoLS1pbmxpbmUgLnNlbGVjdDItc2VhcmNoX19maWVsZCB7IHBhZGRpbmctbGVmdDogMC44MTI1cmVtICFpbXBvcnRhbnQ7IH0KCi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1zZWxlY3Rpb24tLW11bHRpcGxlIC5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQgeyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaXN0LXN0eWxlOiBub25lOyBtYXJnaW46IDA7IHBhZGRpbmc6IC4xMjVyZW0gMC4xODc1cmVtOyB3aWR0aDogMTAwJTsgZGlzcGxheTogaW5saW5lLWZsZXg7IGZsZXgtd3JhcDogd3JhcDsgfQoKLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0IC5zZWxlY3QyLXNlbGVjdGlvbi0tbXVsdGlwbGUgLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCBsaSB7IGxpc3Qtc3R5bGU6IG5vbmU7IH0KCi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1zZWxlY3Rpb24tLW11bHRpcGxlIC5zZWxlY3QyLXNlbGVjdGlvbl9fY2xlYXIgeyBjdXJzb3I6IHBvaW50ZXI7IGZvbnQtd2VpZ2h0OiBib2xkOyBtYXJnaW4tdG9wOiA1cHg7IGZsb2F0OiByaWdodDsgbWFyZ2luLXJpZ2h0OiAxMHB4OyBwYWRkaW5nOiAxcHg7IH0KCi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1zZWxlY3Rpb24tLW11bHRpcGxlIC5zZWxlY3QyLXNlbGVjdGlvbl9fY2hvaWNlIHsgYmFja2dyb3VuZC1jb2xvcjogI2ViZWVmMjsgYm9yZGVyLXJhZGl1czogM3B4OyBjdXJzb3I6IGRlZmF1bHQ7IGxpbmUtaGVpZ2h0OiAxLjVyZW07IG1hcmdpbjogMC4xODc1cmVtIDAuMTg3NXJlbTsgcGFkZGluZzogMCAuNXJlbTsgfQoKLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0IC5zZWxlY3QyLXNlbGVjdGlvbi0tbXVsdGlwbGUgLnNlbGVjdDItc2VsZWN0aW9uX19jaG9pY2VfX3JlbW92ZSB7IGNvbG9yOiAjNTI2NDg0OyBjdXJzb3I6IHBvaW50ZXI7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC13ZWlnaHQ6IGJvbGQ7IG1hcmdpbi1yaWdodDogLjVyZW07IH0KCi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1zZWxlY3Rpb24tLW11bHRpcGxlIC5zZWxlY3QyLXNlbGVjdGlvbl9fY2hvaWNlX19yZW1vdmU6aG92ZXIgeyBjb2xvcjogIzUyNjQ4NDsgfQoKLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0LnNlbGVjdDItbGcgLnNlbGVjdDItc2VsZWN0aW9uLS1tdWx0aXBsZSB7IGZvbnQtc2l6ZTogMTVweDsgfQoKLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0LnNlbGVjdDItbGcgLnNlbGVjdDItc2VsZWN0aW9uLS1tdWx0aXBsZSAuc2VsZWN0Mi1zZWxlY3Rpb25fX2Nob2ljZSB7IGJvcmRlci1yYWRpdXM6IDRweDsgcGFkZGluZzogMC4yNXJlbSAuNzVyZW07IH0KCi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdC5zZWxlY3QyLWNvbnRhaW5lci0tYmVsb3cuc2VsZWN0Mi1jb250YWluZXItLW9wZW4gLnNlbGVjdDItc2VsZWN0aW9uLS1tdWx0aXBsZSB7IGJvcmRlci1yYWRpdXM6IDRweCA0cHggMCAwOyB9Cgouc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQuc2VsZWN0Mi1jb250YWluZXItLWFib3ZlLnNlbGVjdDItY29udGFpbmVyLS1vcGVuIC5zZWxlY3QyLXNlbGVjdGlvbi0tbXVsdGlwbGUgeyBib3JkZXItcmFkaXVzOiAwIDAgNHB4IDRweDsgfQoKLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0LnNlbGVjdDItY29udGFpbmVyLS1mb2N1cyAuc2VsZWN0Mi1zZWxlY3Rpb24tLW11bHRpcGxlIHsgYm9yZGVyOiAxcHggc29saWQgIzA5NzFmZTsgb3V0bGluZTogMDsgfQoKLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0LnNlbGVjdDItY29udGFpbmVyLS1kaXNhYmxlZCAuc2VsZWN0Mi1zZWxlY3Rpb24tLW11bHRpcGxlIHsgYm9yZGVyLWNvbG9yOiAjZGJkZmVhOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDIxOSwgMjIzLCAyMzQsIDAuMyk7IGN1cnNvcjogZGVmYXVsdDsgfQoKLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0LnNlbGVjdDItY29udGFpbmVyLS1kaXNhYmxlZCAuc2VsZWN0Mi1zZWxlY3Rpb25fX2Nob2ljZV9fcmVtb3ZlIHsgZGlzcGxheTogbm9uZTsgfQoKLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0LnNlbGVjdDItY29udGFpbmVyLS1vcGVuIC5zZWxlY3QyLXNlbGVjdGlvbi0tbXVsdGlwbGUgeyBib3JkZXItY29sb3I6ICNiNGJkZDM7IH0KCi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1zZWFyY2gtLWRyb3Bkb3duIC5zZWxlY3QyLXNlYXJjaF9fZmllbGQgeyBib3JkZXI6IDFweCBzb2xpZCAjZGJkZmVhOyB9Cgouc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQgLnNlbGVjdDItc2VhcmNoLS1pbmxpbmUgLnNlbGVjdDItc2VhcmNoX19maWVsZCB7IGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OyBib3JkZXI6IG5vbmU7IG91dGxpbmU6IDA7IGJveC1zaGFkb3c6IG5vbmU7IC13ZWJraXQtYXBwZWFyYW5jZTogdGV4dGZpZWxkOyB9Cgouc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQgLnNlbGVjdDItcmVzdWx0cyA+IC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbnMgeyBtYXgtaGVpZ2h0OiAyMTBweDsgb3ZlcmZsb3cteTogYXV0bzsgfQoKLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0IC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbltyb2xlPWdyb3VwXSB7IHBhZGRpbmc6IDA7IH0KCi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb25bYXJpYS1kaXNhYmxlZD10cnVlXSB7IGNvbG9yOiByZ2JhKDEyOCwgMTQ4LCAxNzQsIDAuNyk7IH0KCi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb25bYXJpYS1zZWxlY3RlZD10cnVlXSB7IGJhY2tncm91bmQtY29sb3I6ICNlYmVlZjI7IH0KCi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24gLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uIHsgcGFkZGluZy1sZWZ0OiAxZW07IH0KCi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24gLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uIC5zZWxlY3QyLXJlc3VsdHNfX2dyb3VwIHsgcGFkZGluZy1sZWZ0OiAwOyB9Cgouc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQgLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uIC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbiAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24geyBtYXJnaW4tbGVmdDogLTFlbTsgcGFkZGluZy1sZWZ0OiAyZW07IH0KCi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24gLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uIC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbiAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24geyBtYXJnaW4tbGVmdDogLTJlbTsgcGFkZGluZy1sZWZ0OiAzZW07IH0KCi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24gLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uIC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbiAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24gLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uIHsgbWFyZ2luLWxlZnQ6IC0zZW07IHBhZGRpbmctbGVmdDogNGVtOyB9Cgouc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQgLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uIC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbiAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24gLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uIC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbiAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24geyBtYXJnaW4tbGVmdDogLTRlbTsgcGFkZGluZy1sZWZ0OiA1ZW07IH0KCi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24gLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uIC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbiAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24gLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uIC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbiAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24geyBtYXJnaW4tbGVmdDogLTVlbTsgcGFkZGluZy1sZWZ0OiA2ZW07IH0KCi5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLWhpZ2hsaWdodGVkW2FyaWEtc2VsZWN0ZWRdIHsgYmFja2dyb3VuZC1jb2xvcjogI2ViZWVmMjsgfQoKLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0IC5zZWxlY3QyLXJlc3VsdHNfX2dyb3VwIHsgY3Vyc29yOiBkZWZhdWx0OyBkaXNwbGF5OiBibG9jazsgcGFkZGluZzogNnB4OyB9CgovKiogU2ltcGxlQmFyLmpzIC0gdjUuMS4wIHwgTGljZW5zZSBNSVQgTGljZW5zZSAgKi8KW2RhdGEtc2ltcGxlYmFyXSB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZmxleC13cmFwOiB3cmFwOyBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7IGFsaWduLWNvbnRlbnQ6IGZsZXgtc3RhcnQ7IGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyB9Cgouc2ltcGxlYmFyLXdyYXBwZXIgeyBvdmVyZmxvdzogaGlkZGVuOyB3aWR0aDogaW5oZXJpdDsgaGVpZ2h0OiBpbmhlcml0OyBtYXgtd2lkdGg6IGluaGVyaXQ7IG1heC1oZWlnaHQ6IGluaGVyaXQ7IH0KCi5zaW1wbGViYXItbWFzayB7IGRpcmVjdGlvbjogaW5oZXJpdDsgcG9zaXRpb246IGFic29sdXRlOyBvdmVyZmxvdzogaGlkZGVuOyBwYWRkaW5nOiAwOyBtYXJnaW46IDA7IGxlZnQ6IDA7IHRvcDogMDsgYm90dG9tOiAwOyByaWdodDogMDsgd2lkdGg6IGF1dG8gIWltcG9ydGFudDsgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7IHotaW5kZXg6IDA7IH0KCi5zaW1wbGViYXItb2Zmc2V0IHsgZGlyZWN0aW9uOiBpbmhlcml0ICFpbXBvcnRhbnQ7IGJveC1zaXppbmc6IGluaGVyaXQgIWltcG9ydGFudDsgcmVzaXplOiBub25lICFpbXBvcnRhbnQ7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyBsZWZ0OiAwOyBib3R0b206IDA7IHJpZ2h0OiAwOyBwYWRkaW5nOiAwOyBtYXJnaW46IDA7IC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsgfQoKLnNpbXBsZWJhci1jb250ZW50LXdyYXBwZXIsIC5zaW1wbGViYXItc2Nyb2xsLWNvbnRlbnQgeyBkaXJlY3Rpb246IGluaGVyaXQ7IGJveC1zaXppbmc6IGJvcmRlci1ib3ggIWltcG9ydGFudDsgcG9zaXRpb246IHJlbGF0aXZlOyBkaXNwbGF5OiBibG9jazsgaGVpZ2h0OiAxMDAlOyAvKiBSZXF1aXJlZCBmb3IgaG9yaXpvbnRhbCBuYXRpdmUgc2Nyb2xsYmFyIHRvIG5vdCBhcHBlYXIgaWYgcGFyZW50IGlzIHRhbGxlciB0aGFuIG5hdHVyYWwgaGVpZ2h0ICovIHdpZHRoOiBhdXRvOyB2aXNpYmlsaXR5OiB2aXNpYmxlOyBtYXgtd2lkdGg6IDEwMCU7IC8qIE5vdCByZXF1aXJlZCBmb3IgaG9yaXpvbnRhbCBzY3JvbGwgdG8gdHJpZ2dlciAqLyBtYXgtaGVpZ2h0OiAxMDAlOyAvKiBOZWVkZWQgZm9yIHZlcnRpY2FsIHNjcm9sbCB0byB0cmlnZ2VyICovIHNjcm9sbGJhci13aWR0aDogbm9uZTsgLW1zLW92ZXJmbG93LXN0eWxlOiBub25lOyBvdmVyZmxvdzogaGlkZGVuIHNjcm9sbDsgfQoKLnNpbXBsZWJhci1jb250ZW50LXdyYXBwZXI6Oi13ZWJraXQtc2Nyb2xsYmFyLCAuc2ltcGxlYmFyLXNjcm9sbC1jb250ZW50Ojotd2Via2l0LXNjcm9sbGJhciwgLnNpbXBsZWJhci1oaWRlLXNjcm9sbGJhcjo6LXdlYmtpdC1zY3JvbGxiYXIgeyB3aWR0aDogMDsgaGVpZ2h0OiAwOyB9Cgouc2ltcGxlYmFyLWNvbnRlbnQ6YmVmb3JlLCAuc2ltcGxlYmFyLWNvbnRlbnQ6YWZ0ZXIgeyBjb250ZW50OiAnICc7IGRpc3BsYXk6IHRhYmxlOyB9Cgouc2ltcGxlYmFyLXBsYWNlaG9sZGVyIHsgbWF4LWhlaWdodDogMTAwJTsgbWF4LXdpZHRoOiAxMDAlOyB3aWR0aDogMTAwJTsgcG9pbnRlci1ldmVudHM6IG5vbmU7IH0KCi5zaW1wbGViYXItaGVpZ2h0LWF1dG8tb2JzZXJ2ZXItd3JhcHBlciB7IGJveC1zaXppbmc6IGluaGVyaXQgIWltcG9ydGFudDsgaGVpZ2h0OiAxMDAlOyB3aWR0aDogMTAwJTsgbWF4LXdpZHRoOiAxcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgZmxvYXQ6IGxlZnQ7IG1heC1oZWlnaHQ6IDFweDsgb3ZlcmZsb3c6IGhpZGRlbjsgei1pbmRleDogLTE7IHBhZGRpbmc6IDA7IG1hcmdpbjogMDsgcG9pbnRlci1ldmVudHM6IG5vbmU7IGZsZXgtZ3JvdzogaW5oZXJpdDsgZmxleC1zaHJpbms6IDA7IGZsZXgtYmFzaXM6IDA7IH0KCi5zaW1wbGViYXItaGVpZ2h0LWF1dG8tb2JzZXJ2ZXIgeyBib3gtc2l6aW5nOiBpbmhlcml0OyBkaXNwbGF5OiBibG9jazsgb3BhY2l0eTogMDsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IGxlZnQ6IDA7IGhlaWdodDogMTAwMCU7IHdpZHRoOiAxMDAwJTsgbWluLWhlaWdodDogMXB4OyBtaW4td2lkdGg6IDFweDsgb3ZlcmZsb3c6IGhpZGRlbjsgcG9pbnRlci1ldmVudHM6IG5vbmU7IHotaW5kZXg6IC0xOyB9Cgouc2ltcGxlYmFyLXRyYWNrIHsgei1pbmRleDogMTsgcG9zaXRpb246IGFic29sdXRlOyByaWdodDogMDsgYm90dG9tOiAwOyBwb2ludGVyLWV2ZW50czogbm9uZTsgb3ZlcmZsb3c6IGhpZGRlbjsgfQoKW2RhdGEtc2ltcGxlYmFyXS5zaW1wbGViYXItZHJhZ2dpbmcgLnNpbXBsZWJhci1jb250ZW50IHsgcG9pbnRlci1ldmVudHM6IG5vbmU7IHVzZXItc2VsZWN0OiBub25lOyAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyB9CgpbZGF0YS1zaW1wbGViYXJdLnNpbXBsZWJhci1kcmFnZ2luZyAuc2ltcGxlYmFyLXRyYWNrIHsgcG9pbnRlci1ldmVudHM6IGFsbDsgfQoKLnNpbXBsZWJhci1zY3JvbGxiYXIgeyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDA7IHJpZ2h0OiAwOyBtaW4taGVpZ2h0OiAxMHB4OyB9Cgouc2ltcGxlYmFyLXNjcm9sbGJhciAuaGlkZGVuLXNjcm9sbGJhciB7IHZpc2liaWxpdHk6IGhpZGRlbjsgfQoKLnNpbXBsZWJhci1zY3JvbGxiYXI6YmVmb3JlIHsgcG9zaXRpb246IGFic29sdXRlOyBjb250ZW50OiAnJzsgYmFja2dyb3VuZDogIzgwOTRhZTsgYm9yZGVyLXJhZGl1czogN3B4OyBsZWZ0OiAycHg7IHJpZ2h0OiAycHg7IG9wYWNpdHk6IDA7IHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBsaW5lYXI7IH0KCi5zaW1wbGViYXItc2Nyb2xsYmFyLnNpbXBsZWJhci12aXNpYmxlOmJlZm9yZSB7IC8qIFdoZW4gaG92ZXJlZCwgcmVtb3ZlIGFsbCB0cmFuc2l0aW9ucyBmcm9tIGRyYWcgaGFuZGxlICovIG9wYWNpdHk6IDAuNTsgdHJhbnNpdGlvbjogb3BhY2l0eSAwcyBsaW5lYXI7IH0KCi5zaW1wbGViYXItdHJhY2suc2ltcGxlYmFyLXZlcnRpY2FsIHsgdG9wOiAwOyB3aWR0aDogOHB4ICFpbXBvcnRhbnQ7IHRyYW5zaXRpb246IHdpZHRoIC4xczsgfQoKLnNpbXBsZWJhci10cmFjay5zaW1wbGViYXItdmVydGljYWwuc2ltcGxlYmFyLWhvdmVyIHsgd2lkdGg6IDEwcHggIWltcG9ydGFudDsgfQoKLnNpbXBsZWJhci10cmFjay5zaW1wbGViYXItdmVydGljYWwgLm5rLXNpZGViYXIgeyB2aXNpYmlsaXR5OiBoaWRkZW4gIWltcG9ydGFudDsgfQoKLnNpbXBsZWJhci10cmFjay5zaW1wbGViYXItdmVydGljYWwgLnNpbXBsZWJhci1zY3JvbGxiYXI6YmVmb3JlIHsgdG9wOiAycHg7IGJvdHRvbTogMnB4OyB9Cgouc2ltcGxlYmFyLXRyYWNrLnNpbXBsZWJhci1ob3Jpem9udGFsIHsgbGVmdDogMDsgaGVpZ2h0OiA4cHggIWltcG9ydGFudDsgdHJhbnNpdGlvbjogaGVpZ2h0IC4xczsgfQoKLnNpbXBsZWJhci10cmFjay5zaW1wbGViYXItaG9yaXpvbnRhbC5zaW1wbGViYXItaG92ZXIgeyBoZWlnaHQ6IDEwcHggIWltcG9ydGFudDsgfQoKLm5rLXNpZGViYXIgLnNpbXBsZWJhci10cmFjay5zaW1wbGViYXItaG9yaXpvbnRhbCwgLm5rLXNpZGViYXItZmF0IC5zaW1wbGViYXItdHJhY2suc2ltcGxlYmFyLWhvcml6b250YWwsIC5uay1hcHBzLXNpZGViYXIgLnNpbXBsZWJhci10cmFjay5zaW1wbGViYXItaG9yaXpvbnRhbCB7IHZpc2liaWxpdHk6IGhpZGRlbiAhaW1wb3J0YW50OyB9Cgouc2ltcGxlYmFyLXRyYWNrLnNpbXBsZWJhci1ob3Jpem9udGFsIC5zaW1wbGViYXItc2Nyb2xsYmFyOmJlZm9yZSB7IGhlaWdodDogMTAwJTsgbGVmdDogMnB4OyByaWdodDogMnB4OyB9Cgouc2ltcGxlYmFyLXRyYWNrLnNpbXBsZWJhci1ob3Jpem9udGFsIC5zaW1wbGViYXItc2Nyb2xsYmFyIHsgcmlnaHQ6IGF1dG87IGxlZnQ6IDA7IHRvcDogMnB4OyBoZWlnaHQ6IDdweDsgbWluLWhlaWdodDogMDsgbWluLXdpZHRoOiAxMHB4OyB3aWR0aDogYXV0bzsgfQoKLyogUnRsIHN1cHBvcnQgKi8KW2RhdGEtc2ltcGxlYmFyLWRpcmVjdGlvbj0ncnRsJ10gLnNpbXBsZWJhci10cmFjay5zaW1wbGViYXItdmVydGljYWwgeyByaWdodDogYXV0bzsgbGVmdDogMDsgfQoKLmhzLWR1bW15LXNjcm9sbGJhci1zaXplIHsgZGlyZWN0aW9uOiBydGw7IHBvc2l0aW9uOiBmaXhlZDsgb3BhY2l0eTogMDsgdmlzaWJpbGl0eTogaGlkZGVuOyBoZWlnaHQ6IDUwMHB4OyB3aWR0aDogNTAwcHg7IG92ZXJmbG93LXk6IGhpZGRlbjsgb3ZlcmZsb3cteDogc2Nyb2xsOyB9Cgouc2ltcGxlYmFyLWhpZGUtc2Nyb2xsYmFyIHsgcG9zaXRpb246IGZpeGVkOyBsZWZ0OiAwOyB2aXNpYmlsaXR5OiBoaWRkZW47IG92ZXJmbG93LXk6IHNjcm9sbDsgc2Nyb2xsYmFyLXdpZHRoOiBub25lOyAtbXMtb3ZlcmZsb3ctc3R5bGU6IG5vbmU7IH0KCi8qKiBTbGljayBTbGlkZXIgKi8KLnNsaWNrLXNsaWRlciB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgZGlzcGxheTogYmxvY2s7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC13ZWJraXQtdG91Y2gtY2FsbG91dDogbm9uZTsgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsgLWtodG1sLXVzZXItc2VsZWN0OiBub25lOyAtbW96LXVzZXItc2VsZWN0OiBub25lOyAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7IHVzZXItc2VsZWN0OiBub25lOyAtbXMtdG91Y2gtYWN0aW9uOiBwYW4teTsgdG91Y2gtYWN0aW9uOiBwYW4teTsgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDsgfQoKLnNsaWNrLWxpc3QgeyBwb3NpdGlvbjogcmVsYXRpdmU7IG92ZXJmbG93OiBoaWRkZW47IGRpc3BsYXk6IGJsb2NrOyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7IH0KCi5zbGljay1saXN0OmZvY3VzIHsgb3V0bGluZTogbm9uZTsgfQoKLnNsaWNrLWxpc3QuZHJhZ2dpbmcgeyBjdXJzb3I6IHBvaW50ZXI7IGN1cnNvcjogaGFuZDsgfQoKLnNsaWNrLXNsaWRlciAuc2xpY2stdHJhY2ssIC5zbGljay1zbGlkZXIgLnNsaWNrLWxpc3QgeyAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7IC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7IC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7IHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7IH0KCi5zbGljay10cmFjayB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgbGVmdDogMDsgdG9wOiAwOyBkaXNwbGF5OiBibG9jazsgbWFyZ2luLWxlZnQ6IGF1dG87IG1hcmdpbi1yaWdodDogYXV0bzsgfQoKLnNsaWNrLXRyYWNrOmJlZm9yZSwgLnNsaWNrLXRyYWNrOmFmdGVyIHsgY29udGVudDogIiI7IGRpc3BsYXk6IHRhYmxlOyB9Cgouc2xpY2stdHJhY2s6YWZ0ZXIgeyBjbGVhcjogYm90aDsgfQoKLnNsaWNrLWxvYWRpbmcgLnNsaWNrLXRyYWNrIHsgdmlzaWJpbGl0eTogaGlkZGVuOyB9Cgouc2xpY2stc2xpZGUgeyBmbG9hdDogbGVmdDsgaGVpZ2h0OiAxMDAlOyBtaW4taGVpZ2h0OiAxcHg7IGRpc3BsYXk6IG5vbmU7IH0KCi5zbGljay1zbGlkZSBpbWcgeyBkaXNwbGF5OiBibG9jazsgfQoKLnNsaWNrLXNsaWRlLnNsaWNrLWxvYWRpbmcgaW1nIHsgZGlzcGxheTogbm9uZTsgfQoKLnNsaWNrLXNsaWRlLmRyYWdnaW5nIGltZyB7IHBvaW50ZXItZXZlbnRzOiBub25lOyB9Cgouc2xpY2staW5pdGlhbGl6ZWQgLnNsaWNrLXNsaWRlIHsgZGlzcGxheTogYmxvY2s7IH0KCi5zbGljay1sb2FkaW5nIC5zbGljay1zbGlkZSB7IHZpc2liaWxpdHk6IGhpZGRlbjsgfQoKLnNsaWNrLXZlcnRpY2FsIC5zbGljay1zbGlkZSB7IGRpc3BsYXk6IGJsb2NrOyBoZWlnaHQ6IGF1dG87IGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OyB9Cgouc2xpY2stc2xpZGU6Zm9jdXMgeyBvdXRsaW5lOiBub25lOyBib3JkZXI6IG5vbmU7IH0KCi5zbGljay1hcnJvdy5zbGljay1oaWRkZW4geyBkaXNwbGF5OiBub25lOyB9Cgouc2xpY2stZG90cyB7IGRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogY2VudGVyOyB9Cgouc2xpY2stZG90cyBsaSB7IHBhZGRpbmc6IDAgNnB4OyB9Cgouc2xpY2stZG90cyBsaSBidXR0b24geyBiYWNrZ3JvdW5kLWNvbG9yOiAjZGJkZmVhOyBib3JkZXI6IG5vbmU7IGJvcmRlci1yYWRpdXM6IDIwcHg7IHRleHQtaW5kZW50OiAtOTk5OTlweDsgaGVpZ2h0OiA4cHg7IHdpZHRoOiA4cHg7IHBhZGRpbmc6IDA7IG92ZXJmbG93OiBoaWRkZW47IHRyYW5zaXRpb246IGFsbCAuNHMgbGluZWFyOyB9Cgouc2xpY2stZG90cyBsaSBidXR0b246Zm9jdXMgeyBvdXRsaW5lOiBub25lOyB9Cgouc2xpY2stZG90cyBsaS5zbGljay1hY3RpdmUgYnV0dG9uIHsgYmFja2dyb3VuZC1jb2xvcjogIzgwOTRhZTsgfQoKLnNsaWNrLW5leHQsIC5zbGljay1wcmV2IHsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDUwJTsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOyBkaXNwbGF5OiBpbmxpbmUtZmxleDsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGJvcmRlci1yYWRpdXM6IDUwJTsgaGVpZ2h0OiA0NHB4OyB3aWR0aDogNDRweDsgei1pbmRleDogOTsgZm9udC1zaXplOiAyNHB4OyBjb2xvcjogIzgwOTRhZTsgYmFja2dyb3VuZDogI2ZmZjsgdHJhbnNpdGlvbjogYWxsIC40cyBsaW5lYXI7IGJvcmRlcjogMXB4IHNvbGlkICNlNWU5ZjI7IH0KCi5zbGljay1uZXh0OmhvdmVyLCAuc2xpY2stcHJldjpob3ZlciB7IGNvbG9yOiAjNTI2NDg0OyBiYWNrZ3JvdW5kOiAjZjVmNmZhOyBib3JkZXItY29sb3I6ICNkYmRmZWE7IG9wYWNpdHk6IDE7IH0KCi5zbGljay1kaXNhYmxlZCAuc2xpY2stbmV4dCwgLnNsaWNrLWRpc2FibGVkIC5zbGljay1wcmV2IHsgY3Vyc29yOiBkZWZhdWx0OyBjb2xvcjogI2RiZGZlYTsgfQoKLnNsaWNrLWRpc2FibGVkIC5zbGljay1uZXh0OmhvdmVyLCAuc2xpY2stZGlzYWJsZWQgLnNsaWNrLXByZXY6aG92ZXIgeyBjb2xvcjogI2RiZGZlYTsgYmFja2dyb3VuZDogI2ZmZjsgYm9yZGVyLWNvbG9yOiAjZTVlOWYyOyB9Cgouc2xpY2stbmV4dCB7IHJpZ2h0OiAtMTBweDsgfQoKLnNsaWNrLXByZXYgeyBsZWZ0OiAtMTBweDsgfQoKLyoqIERhdGVwaWNrZXIgZm9yIEJvb3RzdHJhcCB2MS45LjAgKGh0dHBzOi8vZ2l0aHViLmNvbS91eHNvbHV0aW9ucy9ib290c3RyYXAtZGF0ZXBpY2tlcikgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSB2Mi4wIChodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjApICovCi5kYXRlcGlja2VyIHsgcGFkZGluZzogMTBweDsgYm9yZGVyLXJhZGl1czogNHB4OyBkaXJlY3Rpb246IGx0cjsgYm9yZGVyOiAxcHggc29saWQgI2RiZGZlYTsgYm94LXNoYWRvdzogbm9uZTsgbWluLXdpZHRoOiAyNDBweDsgfQoKLmRhdGVwaWNrZXIgLnRhYmxlLWNvbmRlbnNlZCB7IHdpZHRoOiAxMDAlOyB9CgouZGF0ZXBpY2tlci1pbmxpbmUgeyB3aWR0aDogMjIwcHg7IH0KCi5kYXRlcGlja2VyLXJ0bCB7IGRpcmVjdGlvbjogcnRsOyB9CgouZGF0ZXBpY2tlci1ydGwuZHJvcGRvd24tbWVudSB7IGxlZnQ6IGF1dG87IH0KCi5kYXRlcGlja2VyLXJ0bCB0YWJsZSB0ciB0ZCBzcGFuIHsgZmxvYXQ6IHJpZ2h0OyB9CgouZGF0ZXBpY2tlci1kcm9wZG93biB7IHRvcDogMDsgbGVmdDogMDsgfQoKLmRhdGVwaWNrZXItZHJvcGRvd246YmVmb3JlIHsgY29udGVudDogJyc7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgYm9yZGVyLWxlZnQ6IDdweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXJpZ2h0OiA3cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1ib3R0b206IDdweCBzb2xpZCAjOTk5OyBib3JkZXItdG9wOiAwOyBib3JkZXItYm90dG9tLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMik7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgfQoKLmRhdGVwaWNrZXItZHJvcGRvd246YWZ0ZXIgeyBjb250ZW50OiAnJzsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBib3JkZXItbGVmdDogNnB4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItcmlnaHQ6IDZweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLWJvdHRvbTogNnB4IHNvbGlkICNmZmY7IGJvcmRlci10b3A6IDA7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgfQoKLmRhdGVwaWNrZXItZHJvcGRvd24uZGF0ZXBpY2tlci1vcmllbnQtbGVmdDpiZWZvcmUgeyBsZWZ0OiA2cHg7IH0KCi5kYXRlcGlja2VyLWRyb3Bkb3duLmRhdGVwaWNrZXItb3JpZW50LWxlZnQ6YWZ0ZXIgeyBsZWZ0OiA3cHg7IH0KCi5kYXRlcGlja2VyLWRyb3Bkb3duLmRhdGVwaWNrZXItb3JpZW50LXJpZ2h0OmJlZm9yZSB7IHJpZ2h0OiA2cHg7IH0KCi5kYXRlcGlja2VyLWRyb3Bkb3duLmRhdGVwaWNrZXItb3JpZW50LXJpZ2h0OmFmdGVyIHsgcmlnaHQ6IDdweDsgfQoKLmRhdGVwaWNrZXItZHJvcGRvd24uZGF0ZXBpY2tlci1vcmllbnQtYm90dG9tOmJlZm9yZSB7IHRvcDogLTdweDsgfQoKLmRhdGVwaWNrZXItZHJvcGRvd24uZGF0ZXBpY2tlci1vcmllbnQtYm90dG9tOmFmdGVyIHsgdG9wOiAtNnB4OyB9CgouZGF0ZXBpY2tlci1kcm9wZG93bi5kYXRlcGlja2VyLW9yaWVudC10b3A6YmVmb3JlIHsgYm90dG9tOiAtN3B4OyBib3JkZXItYm90dG9tOiAwOyBib3JkZXItdG9wOiA3cHggc29saWQgIzk5OTsgfQoKLmRhdGVwaWNrZXItZHJvcGRvd24uZGF0ZXBpY2tlci1vcmllbnQtdG9wOmFmdGVyIHsgYm90dG9tOiAtNnB4OyBib3JkZXItYm90dG9tOiAwOyBib3JkZXItdG9wOiA2cHggc29saWQgI2ZmZjsgfQoKLmRhdGVwaWNrZXIgdGFibGUgeyBtYXJnaW46IDA7IC13ZWJraXQtdG91Y2gtY2FsbG91dDogbm9uZTsgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsgLWtodG1sLXVzZXItc2VsZWN0OiBub25lOyAtbW96LXVzZXItc2VsZWN0OiBub25lOyAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7IHVzZXItc2VsZWN0OiBub25lOyB9CgouZGF0ZXBpY2tlciB0ZCwgLmRhdGVwaWNrZXIgdGggeyB0ZXh0LWFsaWduOiBjZW50ZXI7IHdpZHRoOiAzNHB4OyBoZWlnaHQ6IDI0cHg7IHBhZGRpbmc6IDRweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0cHg7IC1tb3otYm9yZGVyLXJhZGl1czogNHB4OyBib3JkZXItcmFkaXVzOiA0cHg7IGJvcmRlcjogbm9uZTsgdHJhbnNpdGlvbjogYWxsIC4zczsgfQoKLnRhYmxlLXN0cmlwZWQgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQsIC50YWJsZS1zdHJpcGVkIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRoIHsgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH0KCi5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmRheTpob3ZlciwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuZGF5LmZvY3VzZWQgeyBiYWNrZ3JvdW5kOiAjZWJlZWYyOyBjdXJzb3I6IHBvaW50ZXI7IH0KCi5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLm9sZCwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQubmV3IHsgY29sb3I6ICNkYmRmZWE7IH0KCi5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmRpc2FibGVkLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5kaXNhYmxlZDpob3ZlciB7IGJhY2tncm91bmQ6IG5vbmU7IGNvbG9yOiAjZGJkZmVhOyBjdXJzb3I6IGRlZmF1bHQ7IH0KCi5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmhpZ2hsaWdodGVkIHsgYmFja2dyb3VuZDogI2ViZWVmMjsgYm9yZGVyLXJhZGl1czogMDsgfQoKLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXksIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5OmhvdmVyLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheS5kaXNhYmxlZCwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXkuZGlzYWJsZWQ6aG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjY2VlM2ZmOyBjb2xvcjogIzA5NzFmZTsgfQoKLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXk6aG92ZXIsIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5OmhvdmVyOmhvdmVyLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheS5kaXNhYmxlZDpob3ZlciwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXkuZGlzYWJsZWQ6aG92ZXI6aG92ZXIsIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5OmFjdGl2ZSwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXk6aG92ZXI6YWN0aXZlLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheS5kaXNhYmxlZDphY3RpdmUsIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5LmRpc2FibGVkOmhvdmVyOmFjdGl2ZSwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXkuYWN0aXZlLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheTpob3Zlci5hY3RpdmUsIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5LmRpc2FibGVkLmFjdGl2ZSwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXkuZGlzYWJsZWQ6aG92ZXIuYWN0aXZlLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheS5kaXNhYmxlZCwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXk6aG92ZXIuZGlzYWJsZWQsIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5LmRpc2FibGVkLmRpc2FibGVkLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheS5kaXNhYmxlZDpob3Zlci5kaXNhYmxlZCwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXlbZGlzYWJsZWRdLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheTpob3ZlcltkaXNhYmxlZF0sIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5LmRpc2FibGVkW2Rpc2FibGVkXSwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXkuZGlzYWJsZWQ6aG92ZXJbZGlzYWJsZWRdIHsgYmFja2dyb3VuZC1jb2xvcjogIzNhOGRmZTsgfQoKLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXk6YWN0aXZlLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheTpob3ZlcjphY3RpdmUsIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5LmRpc2FibGVkOmFjdGl2ZSwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXkuZGlzYWJsZWQ6aG92ZXI6YWN0aXZlLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheS5hY3RpdmUsIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5OmhvdmVyLmFjdGl2ZSwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXkuZGlzYWJsZWQuYWN0aXZlLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheS5kaXNhYmxlZDpob3Zlci5hY3RpdmUgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDk3MWZlOyB9CgouZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheTpob3Zlcjpob3ZlciB7IGNvbG9yOiAjZmZmOyB9CgouZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC50b2RheS5hY3RpdmU6aG92ZXIgeyBjb2xvcjogI2ZmZjsgfQoKLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UsIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnJhbmdlOmhvdmVyLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5yYW5nZS5kaXNhYmxlZCwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UuZGlzYWJsZWQ6aG92ZXIgeyBiYWNrZ3JvdW5kOiAjZGJkZmVhOyAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDA7IC1tb3otYm9yZGVyLXJhZGl1czogMDsgYm9yZGVyLXJhZGl1czogMDsgfQoKLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UudG9kYXksIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnJhbmdlLnRvZGF5OmhvdmVyLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5yYW5nZS50b2RheS5kaXNhYmxlZCwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UudG9kYXkuZGlzYWJsZWQ6aG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjNmJhYWZlOyBib3JkZXItcmFkaXVzOiAwOyB9CgouZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5yYW5nZS50b2RheTpob3ZlciwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UudG9kYXk6aG92ZXI6aG92ZXIsIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnJhbmdlLnRvZGF5LmRpc2FibGVkOmhvdmVyLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5yYW5nZS50b2RheS5kaXNhYmxlZDpob3Zlcjpob3ZlciwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UudG9kYXk6YWN0aXZlLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5yYW5nZS50b2RheTpob3ZlcjphY3RpdmUsIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnJhbmdlLnRvZGF5LmRpc2FibGVkOmFjdGl2ZSwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UudG9kYXkuZGlzYWJsZWQ6aG92ZXI6YWN0aXZlLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5yYW5nZS50b2RheS5hY3RpdmUsIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnJhbmdlLnRvZGF5OmhvdmVyLmFjdGl2ZSwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UudG9kYXkuZGlzYWJsZWQuYWN0aXZlLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5yYW5nZS50b2RheS5kaXNhYmxlZDpob3Zlci5hY3RpdmUsIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnJhbmdlLnRvZGF5LmRpc2FibGVkLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5yYW5nZS50b2RheTpob3Zlci5kaXNhYmxlZCwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UudG9kYXkuZGlzYWJsZWQuZGlzYWJsZWQsIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnJhbmdlLnRvZGF5LmRpc2FibGVkOmhvdmVyLmRpc2FibGVkLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5yYW5nZS50b2RheVtkaXNhYmxlZF0sIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnJhbmdlLnRvZGF5OmhvdmVyW2Rpc2FibGVkXSwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UudG9kYXkuZGlzYWJsZWRbZGlzYWJsZWRdLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5yYW5nZS50b2RheS5kaXNhYmxlZDpob3ZlcltkaXNhYmxlZF0geyBiYWNrZ3JvdW5kLWNvbG9yOiAjM2E4ZGZlOyB9CgouZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5yYW5nZS50b2RheTphY3RpdmUsIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnJhbmdlLnRvZGF5OmhvdmVyOmFjdGl2ZSwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UudG9kYXkuZGlzYWJsZWQ6YWN0aXZlLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5yYW5nZS50b2RheS5kaXNhYmxlZDpob3ZlcjphY3RpdmUsIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnJhbmdlLnRvZGF5LmFjdGl2ZSwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQucmFuZ2UudG9kYXk6aG92ZXIuYWN0aXZlLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5yYW5nZS50b2RheS5kaXNhYmxlZC5hY3RpdmUsIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnJhbmdlLnRvZGF5LmRpc2FibGVkOmhvdmVyLmFjdGl2ZSB7IGJhY2tncm91bmQtY29sb3I6ICMwOTcxZmUgXDk7IH0KCi5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnNlbGVjdGVkLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5zZWxlY3RlZDpob3ZlciwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuc2VsZWN0ZWQuZGlzYWJsZWQsIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnNlbGVjdGVkLmRpc2FibGVkOmhvdmVyIHsgYmFja2dyb3VuZC1jb2xvcjogIzNjNGQ2MjsgY29sb3I6ICNmZmY7IH0KCi5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnNlbGVjdGVkOmhvdmVyLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5zZWxlY3RlZDpob3Zlcjpob3ZlciwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuc2VsZWN0ZWQuZGlzYWJsZWQ6aG92ZXIsIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnNlbGVjdGVkLmRpc2FibGVkOmhvdmVyOmhvdmVyLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5zZWxlY3RlZDphY3RpdmUsIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnNlbGVjdGVkOmhvdmVyOmFjdGl2ZSwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuc2VsZWN0ZWQuZGlzYWJsZWQ6YWN0aXZlLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5zZWxlY3RlZC5kaXNhYmxlZDpob3ZlcjphY3RpdmUsIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnNlbGVjdGVkLmFjdGl2ZSwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuc2VsZWN0ZWQ6aG92ZXIuYWN0aXZlLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5zZWxlY3RlZC5kaXNhYmxlZC5hY3RpdmUsIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnNlbGVjdGVkLmRpc2FibGVkOmhvdmVyLmFjdGl2ZSwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuc2VsZWN0ZWQuZGlzYWJsZWQsIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnNlbGVjdGVkOmhvdmVyLmRpc2FibGVkLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5zZWxlY3RlZC5kaXNhYmxlZC5kaXNhYmxlZCwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuc2VsZWN0ZWQuZGlzYWJsZWQ6aG92ZXIuZGlzYWJsZWQsIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnNlbGVjdGVkW2Rpc2FibGVkXSwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuc2VsZWN0ZWQ6aG92ZXJbZGlzYWJsZWRdLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5zZWxlY3RlZC5kaXNhYmxlZFtkaXNhYmxlZF0sIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnNlbGVjdGVkLmRpc2FibGVkOmhvdmVyW2Rpc2FibGVkXSB7IGJhY2tncm91bmQtY29sb3I6ICMzNDQzNTc7IH0KCi5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnNlbGVjdGVkOmFjdGl2ZSwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuc2VsZWN0ZWQ6aG92ZXI6YWN0aXZlLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5zZWxlY3RlZC5kaXNhYmxlZDphY3RpdmUsIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnNlbGVjdGVkLmRpc2FibGVkOmhvdmVyOmFjdGl2ZSwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuc2VsZWN0ZWQuYWN0aXZlLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5zZWxlY3RlZDpob3Zlci5hY3RpdmUsIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnNlbGVjdGVkLmRpc2FibGVkLmFjdGl2ZSwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuc2VsZWN0ZWQuZGlzYWJsZWQ6aG92ZXIuYWN0aXZlIHsgYmFja2dyb3VuZC1jb2xvcjogIzJiMzc0OCBcOTsgfQoKLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmU6aG92ZXIsIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmFjdGl2ZS5kaXNhYmxlZCwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLmRpc2FibGVkOmhvdmVyIHsgYmFja2dyb3VuZC1jb2xvcjogIzNhOGRmZTsgY29sb3I6ICNmZmY7IH0KCi5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmFjdGl2ZTpob3ZlciwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlOmhvdmVyOmhvdmVyLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmUuZGlzYWJsZWQ6aG92ZXIsIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmFjdGl2ZS5kaXNhYmxlZDpob3Zlcjpob3ZlciwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlOmFjdGl2ZSwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlOmhvdmVyOmFjdGl2ZSwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLmRpc2FibGVkOmFjdGl2ZSwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLmRpc2FibGVkOmhvdmVyOmFjdGl2ZSwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLmFjdGl2ZSwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlOmhvdmVyLmFjdGl2ZSwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLmRpc2FibGVkLmFjdGl2ZSwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLmRpc2FibGVkOmhvdmVyLmFjdGl2ZSwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLmRpc2FibGVkLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmU6aG92ZXIuZGlzYWJsZWQsIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmFjdGl2ZS5kaXNhYmxlZC5kaXNhYmxlZCwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLmRpc2FibGVkOmhvdmVyLmRpc2FibGVkLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmVbZGlzYWJsZWRdLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmU6aG92ZXJbZGlzYWJsZWRdLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmUuZGlzYWJsZWRbZGlzYWJsZWRdLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5hY3RpdmUuZGlzYWJsZWQ6aG92ZXJbZGlzYWJsZWRdIHsgYmFja2dyb3VuZC1jb2xvcjogIzA5NzFmZTsgfQoKLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlOmFjdGl2ZSwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlOmhvdmVyOmFjdGl2ZSwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLmRpc2FibGVkOmFjdGl2ZSwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLmRpc2FibGVkOmhvdmVyOmFjdGl2ZSwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLmFjdGl2ZSwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlOmhvdmVyLmFjdGl2ZSwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLmRpc2FibGVkLmFjdGl2ZSwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuYWN0aXZlLmRpc2FibGVkOmhvdmVyLmFjdGl2ZSB7IGJhY2tncm91bmQtY29sb3I6ICMwOTcxZmU7IH0KCi5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4geyBkaXNwbGF5OiBibG9jazsgd2lkdGg6IDIzJTsgaGVpZ2h0OiA1NHB4OyBsaW5lLWhlaWdodDogNTRweDsgZmxvYXQ6IGxlZnQ7IG1hcmdpbjogMSU7IGN1cnNvcjogcG9pbnRlcjsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0cHg7IC1tb3otYm9yZGVyLXJhZGl1czogNHB4OyBib3JkZXItcmFkaXVzOiA0cHg7IHRyYW5zaXRpb246IGFsbCAuM3M7IH0KCi5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW46aG92ZXIsIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uZm9jdXNlZCB7IGJhY2tncm91bmQ6ICMwOTcxZmU7IGNvbG9yOiAjZmZmOyB9CgouZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmRpc2FibGVkLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmRpc2FibGVkOmhvdmVyIHsgYmFja2dyb3VuZDogbm9uZTsgY29sb3I6ICNkYmRmZWE7IGN1cnNvcjogZGVmYXVsdDsgfQoKLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmUsIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlOmhvdmVyLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZS5kaXNhYmxlZCwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmUuZGlzYWJsZWQ6aG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjM2E4ZGZlOyBjb2xvcjogI2ZmZjsgfQoKLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmU6aG92ZXIsIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlOmhvdmVyOmhvdmVyLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZS5kaXNhYmxlZDpob3ZlciwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmUuZGlzYWJsZWQ6aG92ZXI6aG92ZXIsIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlOmFjdGl2ZSwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmU6aG92ZXI6YWN0aXZlLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZS5kaXNhYmxlZDphY3RpdmUsIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlLmRpc2FibGVkOmhvdmVyOmFjdGl2ZSwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmUuYWN0aXZlLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZTpob3Zlci5hY3RpdmUsIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlLmRpc2FibGVkLmFjdGl2ZSwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmUuZGlzYWJsZWQ6aG92ZXIuYWN0aXZlLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZS5kaXNhYmxlZCwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmU6aG92ZXIuZGlzYWJsZWQsIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlLmRpc2FibGVkLmRpc2FibGVkLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZS5kaXNhYmxlZDpob3Zlci5kaXNhYmxlZCwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmVbZGlzYWJsZWRdLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZTpob3ZlcltkaXNhYmxlZF0sIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlLmRpc2FibGVkW2Rpc2FibGVkXSwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmUuZGlzYWJsZWQ6aG92ZXJbZGlzYWJsZWRdIHsgYmFja2dyb3VuZC1jb2xvcjogIzA5NzFmZTsgfQoKLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmU6YWN0aXZlLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZTpob3ZlcjphY3RpdmUsIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlLmRpc2FibGVkOmFjdGl2ZSwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmUuZGlzYWJsZWQ6aG92ZXI6YWN0aXZlLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZS5hY3RpdmUsIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkIHNwYW4uYWN0aXZlOmhvdmVyLmFjdGl2ZSwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5hY3RpdmUuZGlzYWJsZWQuYWN0aXZlLCAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLmFjdGl2ZS5kaXNhYmxlZDpob3Zlci5hY3RpdmUgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDk3MWZlIFw5OyB9CgouZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZCBzcGFuLm9sZCwgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQgc3Bhbi5uZXcgeyBjb2xvcjogI2RiZGZlYTsgfQoKLmRhdGVwaWNrZXIgLmRhdGVwaWNrZXItc3dpdGNoIHsgd2lkdGg6IDE0NXB4OyB9CgouZGF0ZXBpY2tlciAuZGF0ZXBpY2tlci1zd2l0Y2gsIC5kYXRlcGlja2VyIC5wcmV2LCAuZGF0ZXBpY2tlciAubmV4dCwgLmRhdGVwaWNrZXIgdGZvb3QgdHIgdGggeyBjdXJzb3I6IHBvaW50ZXI7IH0KCi5kYXRlcGlja2VyIC5kYXRlcGlja2VyLXN3aXRjaDpob3ZlciwgLmRhdGVwaWNrZXIgLnByZXY6aG92ZXIsIC5kYXRlcGlja2VyIC5uZXh0OmhvdmVyLCAuZGF0ZXBpY2tlciB0Zm9vdCB0ciB0aDpob3ZlciB7IGJhY2tncm91bmQ6ICNlYmVlZjI7IH0KCi5kYXRlcGlja2VyIC5wcmV2LmRpc2FibGVkLCAuZGF0ZXBpY2tlciAubmV4dC5kaXNhYmxlZCB7IHZpc2liaWxpdHk6IGhpZGRlbjsgfQoKLmRhdGVwaWNrZXIgLmN3IHsgZm9udC1zaXplOiAxMHB4OyB3aWR0aDogMTJweDsgcGFkZGluZzogMCAycHggMCA1cHg7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH0KCi5pbnB1dC1hcHBlbmQuZGF0ZSAuYWRkLW9uLCAuaW5wdXQtcHJlcGVuZC5kYXRlIC5hZGQtb24geyBjdXJzb3I6IHBvaW50ZXI7IH0KCi5pbnB1dC1hcHBlbmQuZGF0ZSAuYWRkLW9uIGksIC5pbnB1dC1wcmVwZW5kLmRhdGUgLmFkZC1vbiBpIHsgbWFyZ2luLXRvcDogM3B4OyB9CgouaW5wdXQtZGF0ZXJhbmdlIGlucHV0IHsgdGV4dC1hbGlnbjogY2VudGVyOyB9CgouaW5wdXQtZGF0ZXJhbmdlIGlucHV0OmZpcnN0LWNoaWxkIHsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAzcHggMCAwIDNweDsgLW1vei1ib3JkZXItcmFkaXVzOiAzcHggMCAwIDNweDsgYm9yZGVyLXJhZGl1czogM3B4IDAgMCAzcHg7IH0KCi5pbnB1dC1kYXRlcmFuZ2UgaW5wdXQ6bGFzdC1jaGlsZCB7IC13ZWJraXQtYm9yZGVyLXJhZGl1czogMCAzcHggM3B4IDA7IC1tb3otYm9yZGVyLXJhZGl1czogMCAzcHggM3B4IDA7IGJvcmRlci1yYWRpdXM6IDAgM3B4IDNweCAwOyB9CgouaW5wdXQtZGF0ZXJhbmdlIC5hZGQtb24geyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHdpZHRoOiBhdXRvOyBtaW4td2lkdGg6IDE2cHg7IGhlaWdodDogMThweDsgcGFkZGluZzogNHB4IDVweDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgbGluZS1oZWlnaHQ6IDE4cHg7IHRleHQtYWxpZ246IGNlbnRlcjsgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI2ZmZjsgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgYmFja2dyb3VuZC1jb2xvcjogI2ViZWVmMjsgYm9yZGVyOiAxcHggc29saWQgI2NjYzsgbWFyZ2luLWxlZnQ6IC01cHg7IG1hcmdpbi1yaWdodDogLTVweDsgfQoKLmRhdGVwaWNrZXIuZHJvcGRvd24tbWVudSB7IHotaW5kZXg6IDk5OTk5ICFpbXBvcnRhbnQ7IH0KCi8qKiBqUXVlcnkgVGltZXBpY2tlciB8IGh0dHA6Ly90aW1lcGlja2VyLmNvIHwgQ29weXJpZ2h0IChjKSAyMDE2IFdpbGxpbmd0b24gVmVnYTsgTGljZW5zZWQgTUlULCBHUEwgKi8KLnVpLXRpbWVwaWNrZXItY29udGFpbmVyIHsgcG9zaXRpb246IGFic29sdXRlOyBvdmVyZmxvdzogaGlkZGVuOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyB6LWluZGV4OiAxMDUxICFpbXBvcnRhbnQ7IH0KCi51aS10aW1lcGlja2VyIHsgYm94LXNpemluZzogY29udGVudC1ib3g7IGRpc3BsYXk6IGJsb2NrOyBoZWlnaHQ6IDIwNXB4OyBsaXN0LXN0eWxlOiBub25lIG91dHNpZGUgbm9uZTsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwIDFweDsgdGV4dC1hbGlnbjogY2VudGVyOyB9CgoudWktdGltZXBpY2tlci12aWV3cG9ydCB7IGJveC1zaXppbmc6IGNvbnRlbnQtYm94OyBkaXNwbGF5OiBibG9jazsgaGVpZ2h0OiAyMDVweDsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyBvdmVyZmxvdzogYXV0bzsgb3ZlcmZsb3cteDogaGlkZGVuOyAvKiBJRSAqLyB9CgoudWktdGltZXBpY2tlci1zdGFuZGFyZCB7IC8qIG92ZXJ3cml0ZXMgLnVpLXdpZGdldCAqLyBmb250LXNpemU6IDEuMWVtOyAvKiBvdmVyd3JpdGVzIC51aS13aWRnZXQtY29udGVudCAqLyBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGOyBib3JkZXI6IDFweCBzb2xpZCAjZGJkZmVhOyBjb2xvcjogIzUyNjQ4NDsgLyogb3ZlcndyaXRlcyAudWktbWVudSAqLyBtYXJnaW46IDA7IHBhZGRpbmc6IDZweDsgfQoKLnVpLXRpbWVwaWNrZXItc3RhbmRhcmQgYSB7IGJvcmRlcjogbm9uZTsgY29sb3I6ICM1MjY0ODQ7IGRpc3BsYXk6IGJsb2NrOyBwYWRkaW5nOiAuMzc1cmVtIC43NXJlbTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9CgoudWktdGltZXBpY2tlci1zdGFuZGFyZCAudWktc3RhdGUtaG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZWJlZWYyOyBib3JkZXI6IG5vbmU7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGNvbG9yOiAjMzY0YTYzOyBjdXJzb3I6IHBvaW50ZXI7IGJvcmRlci1yYWRpdXM6IDRweDsgfQoKLnVpLXRpbWVwaWNrZXItc3RhbmRhcmQgLnVpLW1lbnUtaXRlbSB7IG1hcmdpbjogMDsgcGFkZGluZzogMDsgfQoKLnVpLXRpbWVwaWNrZXItY29ybmVycywgLnVpLXRpbWVwaWNrZXItY29ybmVycyAudWktY29ybmVyLWFsbCB7IC1tb3otYm9yZGVyLXJhZGl1czogNHB4OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDRweDsgYm9yZGVyLXJhZGl1czogNHB4OyB9CgoudWktdGltZXBpY2tlci1oaWRkZW4geyBkaXNwbGF5OiBub25lOyB9CgoudWktdGltZXBpY2tlci1uby1zY3JvbGxiYXIgLnVpLXRpbWVwaWNrZXIgeyBib3JkZXI6IG5vbmU7IH0KCi8qIFRoZSBNSVQgTGljZW5zZSBDb3B5cmlnaHQgKGMpIDIwMTIgTWF0aWFzIE1lbm8gPG1AdGlhcy5tZT4gKi8KQC13ZWJraXQta2V5ZnJhbWVzIHBhc3NpbmctdGhyb3VnaCB7IDAlIHsgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDQwcHgpOwogICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNDBweCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDQwcHgpOwogICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDQwcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDQwcHgpOyB9CiAgMzAlLCA3MCUgeyBvcGFjaXR5OiAxOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTsKICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7CiAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpOyB9CiAgMTAwJSB7IG9wYWNpdHk6IDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNDBweCk7CiAgICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNDBweCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00MHB4KTsKICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNDBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTQwcHgpOyB9IH0KCkAtbW96LWtleWZyYW1lcyBwYXNzaW5nLXRocm91Z2ggeyAwJSB7IG9wYWNpdHk6IDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSg0MHB4KTsKICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDQwcHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSg0MHB4KTsKICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSg0MHB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg0MHB4KTsgfQogIDMwJSwgNzAlIHsgb3BhY2l0eTogMTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7CiAgICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpOwogICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTsgfQogIDEwMCUgeyBvcGFjaXR5OiAwOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTQwcHgpOwogICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTQwcHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNDBweCk7CiAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTQwcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00MHB4KTsgfSB9CgpAa2V5ZnJhbWVzIHBhc3NpbmctdGhyb3VnaCB7IDAlIHsgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDQwcHgpOwogICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNDBweCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDQwcHgpOwogICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDQwcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDQwcHgpOyB9CiAgMzAlLCA3MCUgeyBvcGFjaXR5OiAxOwogICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTsKICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7CiAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpOyB9CiAgMTAwJSB7IG9wYWNpdHk6IDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNDBweCk7CiAgICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNDBweCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC00MHB4KTsKICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNDBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTQwcHgpOyB9IH0KCkAtd2Via2l0LWtleWZyYW1lcyBzbGlkZS1pbiB7IDAlIHsgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDQwcHgpOwogICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNDBweCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDQwcHgpOwogICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDQwcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDQwcHgpOyB9CiAgMzAlIHsgb3BhY2l0eTogMTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7CiAgICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpOwogICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTsgfSB9CgpALW1vei1rZXlmcmFtZXMgc2xpZGUtaW4geyAwJSB7IG9wYWNpdHk6IDA7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSg0MHB4KTsKICAgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDQwcHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSg0MHB4KTsKICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSg0MHB4KTsKICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg0MHB4KTsgfQogIDMwJSB7IG9wYWNpdHk6IDE7CiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpOwogICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTsKICAgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTsKICAgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7IH0gfQoKQGtleWZyYW1lcyBzbGlkZS1pbiB7IDAlIHsgb3BhY2l0eTogMDsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDQwcHgpOwogICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNDBweCk7CiAgICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDQwcHgpOwogICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDQwcHgpOwogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDQwcHgpOyB9CiAgMzAlIHsgb3BhY2l0eTogMTsKICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7CiAgICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpOwogICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwcHgpOwogICAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDBweCk7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMHB4KTsgfSB9CgpALXdlYmtpdC1rZXlmcmFtZXMgcHVsc2UgeyAwJSB7IC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIC1tb3otdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgLW8tdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7IH0KICAxMCUgeyAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMS4xKTsKICAgIC1tb3otdHJhbnNmb3JtOiBzY2FsZSgxLjEpOwogICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoMS4xKTsKICAgIC1vLXRyYW5zZm9ybTogc2NhbGUoMS4xKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xKTsgfQogIDIwJSB7IC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIC1tb3otdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgLW8tdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7IH0gfQoKQC1tb3ota2V5ZnJhbWVzIHB1bHNlIHsgMCUgeyAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAtbW96LXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIC1vLXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpOyB9CiAgMTAlIHsgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEuMSk7CiAgICAtbW96LXRyYW5zZm9ybTogc2NhbGUoMS4xKTsKICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDEuMSk7CiAgICAtby10cmFuc2Zvcm06IHNjYWxlKDEuMSk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7IH0KICAyMCUgeyAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAtbW96LXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICAtbXMtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIC1vLXRyYW5zZm9ybTogc2NhbGUoMSk7CiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpOyB9IH0KCkBrZXlmcmFtZXMgcHVsc2UgeyAwJSB7IC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIC1tb3otdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgLW8tdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7IH0KICAxMCUgeyAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMS4xKTsKICAgIC1tb3otdHJhbnNmb3JtOiBzY2FsZSgxLjEpOwogICAgLW1zLXRyYW5zZm9ybTogc2NhbGUoMS4xKTsKICAgIC1vLXRyYW5zZm9ybTogc2NhbGUoMS4xKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xKTsgfQogIDIwJSB7IC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIC1tb3otdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgLW8tdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7IH0gfQoKLmRyb3B6b25lLCAuZHJvcHpvbmUgKiB7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH0KCi5kcm9wem9uZSB7IG1pbi1oZWlnaHQ6IDE1MHB4OyBib3JkZXI6IDFweCBkYXNoZWQgI2U1ZTlmMjsgYm9yZGVyLXJhZGl1czogNHB4OyBiYWNrZ3JvdW5kOiB3aGl0ZTsgcGFkZGluZzogMjBweCAyMHB4OyB9CgouZHJvcHpvbmUuc21hbGwgeyBtaW4taGVpZ2h0OiA4NnB4OyB9CgouZHJvcHpvbmUuZHotY2xpY2thYmxlIHsgY3Vyc29yOiBwb2ludGVyOyB9CgouZHJvcHpvbmUuZHotY2xpY2thYmxlICogeyBjdXJzb3I6IGRlZmF1bHQ7IH0KCi5kcm9wem9uZS5kei1jbGlja2FibGUgLmR6LW1lc3NhZ2UsIC5kcm9wem9uZS5kei1jbGlja2FibGUgLmR6LW1lc3NhZ2UgKiB7IGN1cnNvcjogcG9pbnRlcjsgfQoKLmRyb3B6b25lLmR6LXN0YXJ0ZWQgLmR6LW1lc3NhZ2UgeyBkaXNwbGF5OiBub25lOyB9CgouZHJvcHpvbmUuZHotZHJhZy1ob3ZlciB7IGJvcmRlci1zdHlsZTogc29saWQ7IH0KCi5kcm9wem9uZS5kei1kcmFnLWhvdmVyIC5kei1tZXNzYWdlIHsgb3BhY2l0eTogMC41OyB9CgouZHJvcHpvbmUgLmR6LW1lc3NhZ2UgeyB0ZXh0LWFsaWduOiBjZW50ZXI7IG1hcmdpbjogMWVtIDA7IH0KCi5kcm9wem9uZSAuZHotbWVzc2FnZSBzcGFuIHsgZGlzcGxheTogYmxvY2s7IGNvbG9yOiByZ2JhKDgyLCAxMDAsIDEzMiwgMC42KTsgfQoKLmRyb3B6b25lIC5kei1tZXNzYWdlLXRleHQgeyBmb250LXNpemU6IDEzcHg7IH0KCi5kcm9wem9uZSAuZHotbWVzc2FnZS10ZXh0IHNwYW4geyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGNvbG9yOiAjMDk3MWZlOyB9CgouZHJvcHpvbmUgLmR6LW1lc3NhZ2Utb3IgeyBmb250LXNpemU6IDE2cHg7IG1hcmdpbi1ib3R0b206IDRweDsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfQoKLmRyb3B6b25lIC5kei1wcmV2aWV3IHsgcG9zaXRpb246IHJlbGF0aXZlOyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWduOiB0b3A7IG1hcmdpbjogMTZweDsgbWluLWhlaWdodDogMTAwcHg7IH0KCi5kcm9wem9uZSAuZHotcHJldmlldzpob3ZlciB7IHotaW5kZXg6IDEwMDA7IH0KCi5kcm9wem9uZSAuZHotcHJldmlldzpob3ZlciAuZHotZGV0YWlscyB7IG9wYWNpdHk6IDE7IH0KCi5kcm9wem9uZSAuZHotcHJldmlldy5kei1maWxlLXByZXZpZXcgLmR6LWltYWdlIHsgYm9yZGVyLXJhZGl1czogMjBweDsgYmFja2dyb3VuZDogIzk5OTsgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgI2VlZSwgI2RkZCk7IH0KCi5kcm9wem9uZSAuZHotcHJldmlldy5kei1maWxlLXByZXZpZXcgLmR6LWRldGFpbHMgeyBvcGFjaXR5OiAxOyB9CgouZHJvcHpvbmUgLmR6LXByZXZpZXcuZHotaW1hZ2UtcHJldmlldyB7IGJhY2tncm91bmQ6IHdoaXRlOyB9CgouZHJvcHpvbmUgLmR6LXByZXZpZXcuZHotaW1hZ2UtcHJldmlldyAuZHotZGV0YWlscyB7IC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGxpbmVhcjsgLW1vei10cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgbGluZWFyOyAtbXMtdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGxpbmVhcjsgLW8tdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGxpbmVhcjsgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGxpbmVhcjsgfQoKLmRyb3B6b25lIC5kei1wcmV2aWV3IC5kei1yZW1vdmUgeyBmb250LXNpemU6IDE0cHg7IHRleHQtYWxpZ246IGNlbnRlcjsgZGlzcGxheTogYmxvY2s7IGN1cnNvcjogcG9pbnRlcjsgYm9yZGVyOiBub25lOyB9CgouZHJvcHpvbmUgLmR6LXByZXZpZXcgLmR6LXJlbW92ZTpob3ZlciB7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9CgouZHJvcHpvbmUgLmR6LXByZXZpZXc6aG92ZXIgLmR6LWRldGFpbHMgeyBvcGFjaXR5OiAxOyB9CgouZHJvcHpvbmUgLmR6LXByZXZpZXcgLmR6LWRldGFpbHMgeyB6LWluZGV4OiAyMDsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IGxlZnQ6IDA7IG9wYWNpdHk6IDA7IGZvbnQtc2l6ZTogMTNweDsgbWluLXdpZHRoOiAxMDAlOyBtYXgtd2lkdGg6IDEwMCU7IHBhZGRpbmc6IDJlbSAxZW07IHRleHQtYWxpZ246IGNlbnRlcjsgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC45KTsgbGluZS1oZWlnaHQ6IDE1MCU7IH0KCi5kcm9wem9uZSAuZHotcHJldmlldyAuZHotZGV0YWlscyAuZHotc2l6ZSB7IG1hcmdpbi1ib3R0b206IDFlbTsgZm9udC1zaXplOiAxNnB4OyB9CgouZHJvcHpvbmUgLmR6LXByZXZpZXcgLmR6LWRldGFpbHMgLmR6LWZpbGVuYW1lIHsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfQoKLmRyb3B6b25lIC5kei1wcmV2aWV3IC5kei1kZXRhaWxzIC5kei1maWxlbmFtZTpob3ZlciBzcGFuIHsgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyMDAsIDIwMCwgMjAwLCAwLjgpOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7IH0KCi5kcm9wem9uZSAuZHotcHJldmlldyAuZHotZGV0YWlscyAuZHotZmlsZW5hbWU6bm90KDpob3ZlcikgeyBvdmVyZmxvdzogaGlkZGVuOyB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsgfQoKLmRyb3B6b25lIC5kei1wcmV2aWV3IC5kei1kZXRhaWxzIC5kei1maWxlbmFtZTpub3QoOmhvdmVyKSBzcGFuIHsgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7IH0KCi5kcm9wem9uZSAuZHotcHJldmlldyAuZHotZGV0YWlscyAuZHotZmlsZW5hbWUgc3BhbiwgLmRyb3B6b25lIC5kei1wcmV2aWV3IC5kei1kZXRhaWxzIC5kei1zaXplIHNwYW4geyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCk7IHBhZGRpbmc6IDAgMC40ZW07IGJvcmRlci1yYWRpdXM6IDNweDsgfQoKLmRyb3B6b25lIC5kei1wcmV2aWV3OmhvdmVyIC5kei1pbWFnZSBpbWcgeyAtd2Via2l0LXRyYW5zZm9ybTogc2NhbGUoMS4wNSwgMS4wNSk7IC1tb3otdHJhbnNmb3JtOiBzY2FsZSgxLjA1LCAxLjA1KTsgLW1zLXRyYW5zZm9ybTogc2NhbGUoMS4wNSwgMS4wNSk7IC1vLXRyYW5zZm9ybTogc2NhbGUoMS4wNSwgMS4wNSk7IHRyYW5zZm9ybTogc2NhbGUoMS4wNSwgMS4wNSk7IC13ZWJraXQtZmlsdGVyOiBibHVyKDhweCk7IGZpbHRlcjogYmx1cig4cHgpOyB9CgouZHJvcHpvbmUgLmR6LXByZXZpZXcgLmR6LWltYWdlIHsgYm9yZGVyLXJhZGl1czogMjBweDsgb3ZlcmZsb3c6IGhpZGRlbjsgd2lkdGg6IDEyMHB4OyBoZWlnaHQ6IDEyMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IGRpc3BsYXk6IGJsb2NrOyB6LWluZGV4OiAxMDsgfQoKLmRyb3B6b25lIC5kei1wcmV2aWV3IC5kei1pbWFnZSBpbWcgeyBkaXNwbGF5OiBibG9jazsgfQoKLmRyb3B6b25lIC5kei1wcmV2aWV3LmR6LXN1Y2Nlc3MgLmR6LXN1Y2Nlc3MtbWFyayB7IC13ZWJraXQtYW5pbWF0aW9uOiBwYXNzaW5nLXRocm91Z2ggM3MgY3ViaWMtYmV6aWVyKDAuNzcsIDAsIDAuMTc1LCAxKTsgLW1vei1hbmltYXRpb246IHBhc3NpbmctdGhyb3VnaCAzcyBjdWJpYy1iZXppZXIoMC43NywgMCwgMC4xNzUsIDEpOyAtbXMtYW5pbWF0aW9uOiBwYXNzaW5nLXRocm91Z2ggM3MgY3ViaWMtYmV6aWVyKDAuNzcsIDAsIDAuMTc1LCAxKTsgLW8tYW5pbWF0aW9uOiBwYXNzaW5nLXRocm91Z2ggM3MgY3ViaWMtYmV6aWVyKDAuNzcsIDAsIDAuMTc1LCAxKTsgYW5pbWF0aW9uOiBwYXNzaW5nLXRocm91Z2ggM3MgY3ViaWMtYmV6aWVyKDAuNzcsIDAsIDAuMTc1LCAxKTsgfQoKLmRyb3B6b25lIC5kei1wcmV2aWV3LmR6LWVycm9yIC5kei1lcnJvci1tYXJrIHsgb3BhY2l0eTogMTsgLXdlYmtpdC1hbmltYXRpb246IHNsaWRlLWluIDNzIGN1YmljLWJlemllcigwLjc3LCAwLCAwLjE3NSwgMSk7IC1tb3otYW5pbWF0aW9uOiBzbGlkZS1pbiAzcyBjdWJpYy1iZXppZXIoMC43NywgMCwgMC4xNzUsIDEpOyAtbXMtYW5pbWF0aW9uOiBzbGlkZS1pbiAzcyBjdWJpYy1iZXppZXIoMC43NywgMCwgMC4xNzUsIDEpOyAtby1hbmltYXRpb246IHNsaWRlLWluIDNzIGN1YmljLWJlemllcigwLjc3LCAwLCAwLjE3NSwgMSk7IGFuaW1hdGlvbjogc2xpZGUtaW4gM3MgY3ViaWMtYmV6aWVyKDAuNzcsIDAsIDAuMTc1LCAxKTsgfQoKLmRyb3B6b25lIC5kei1wcmV2aWV3IC5kei1zdWNjZXNzLW1hcmssIC5kcm9wem9uZSAuZHotcHJldmlldyAuZHotZXJyb3ItbWFyayB7IHBvaW50ZXItZXZlbnRzOiBub25lOyBvcGFjaXR5OiAwOyB6LWluZGV4OiA1MDA7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgZGlzcGxheTogYmxvY2s7IHRvcDogNTAlOyBsZWZ0OiA1MCU7IG1hcmdpbi1sZWZ0OiAtMjdweDsgbWFyZ2luLXRvcDogLTI3cHg7IH0KCi5kcm9wem9uZSAuZHotcHJldmlldyAuZHotc3VjY2Vzcy1tYXJrIHN2ZywgLmRyb3B6b25lIC5kei1wcmV2aWV3IC5kei1lcnJvci1tYXJrIHN2ZyB7IGRpc3BsYXk6IGJsb2NrOyB3aWR0aDogNTRweDsgaGVpZ2h0OiA1NHB4OyB9CgouZHJvcHpvbmUgLmR6LXByZXZpZXcuZHotcHJvY2Vzc2luZyAuZHotcHJvZ3Jlc3MgeyBvcGFjaXR5OiAxOyAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjJzIGxpbmVhcjsgLW1vei10cmFuc2l0aW9uOiBhbGwgMC4ycyBsaW5lYXI7IC1tcy10cmFuc2l0aW9uOiBhbGwgMC4ycyBsaW5lYXI7IC1vLXRyYW5zaXRpb246IGFsbCAwLjJzIGxpbmVhcjsgdHJhbnNpdGlvbjogYWxsIDAuMnMgbGluZWFyOyB9CgouZHJvcHpvbmUgLmR6LXByZXZpZXcuZHotY29tcGxldGUgLmR6LXByb2dyZXNzIHsgb3BhY2l0eTogMDsgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDAuNHMgZWFzZS1pbjsgLW1vei10cmFuc2l0aW9uOiBvcGFjaXR5IDAuNHMgZWFzZS1pbjsgLW1zLXRyYW5zaXRpb246IG9wYWNpdHkgMC40cyBlYXNlLWluOyAtby10cmFuc2l0aW9uOiBvcGFjaXR5IDAuNHMgZWFzZS1pbjsgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjRzIGVhc2UtaW47IH0KCi5kcm9wem9uZSAuZHotcHJldmlldzpub3QoLmR6LXByb2Nlc3NpbmcpIC5kei1wcm9ncmVzcyB7IC13ZWJraXQtYW5pbWF0aW9uOiBwdWxzZSA2cyBlYXNlIGluZmluaXRlOyAtbW96LWFuaW1hdGlvbjogcHVsc2UgNnMgZWFzZSBpbmZpbml0ZTsgLW1zLWFuaW1hdGlvbjogcHVsc2UgNnMgZWFzZSBpbmZpbml0ZTsgLW8tYW5pbWF0aW9uOiBwdWxzZSA2cyBlYXNlIGluZmluaXRlOyBhbmltYXRpb246IHB1bHNlIDZzIGVhc2UgaW5maW5pdGU7IH0KCi5kcm9wem9uZSAuZHotcHJldmlldyAuZHotcHJvZ3Jlc3MgeyBvcGFjaXR5OiAxOyB6LWluZGV4OiAxMDAwOyBwb2ludGVyLWV2ZW50czogbm9uZTsgcG9zaXRpb246IGFic29sdXRlOyBoZWlnaHQ6IDE2cHg7IGxlZnQ6IDUwJTsgdG9wOiA1MCU7IG1hcmdpbi10b3A6IC04cHg7IHdpZHRoOiA4MHB4OyBtYXJnaW4tbGVmdDogLTQwcHg7IGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC45KTsgLXdlYmtpdC10cmFuc2Zvcm06IHNjYWxlKDEpOyBib3JkZXItcmFkaXVzOiA4cHg7IG92ZXJmbG93OiBoaWRkZW47IH0KCi5kcm9wem9uZSAuZHotcHJldmlldyAuZHotcHJvZ3Jlc3MgLmR6LXVwbG9hZCB7IGJhY2tncm91bmQ6ICMzMzM7IGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICM2NjYsICM0NDQpOyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgbGVmdDogMDsgYm90dG9tOiAwOyB3aWR0aDogMDsgLXdlYmtpdC10cmFuc2l0aW9uOiB3aWR0aCAzMDBtcyBlYXNlLWluLW91dDsgLW1vei10cmFuc2l0aW9uOiB3aWR0aCAzMDBtcyBlYXNlLWluLW91dDsgLW1zLXRyYW5zaXRpb246IHdpZHRoIDMwMG1zIGVhc2UtaW4tb3V0OyAtby10cmFuc2l0aW9uOiB3aWR0aCAzMDBtcyBlYXNlLWluLW91dDsgdHJhbnNpdGlvbjogd2lkdGggMzAwbXMgZWFzZS1pbi1vdXQ7IH0KCi5kcm9wem9uZSAuZHotcHJldmlldy5kei1lcnJvciAuZHotZXJyb3ItbWVzc2FnZSB7IGRpc3BsYXk6IGJsb2NrOyB9CgouZHJvcHpvbmUgLmR6LXByZXZpZXcuZHotZXJyb3I6aG92ZXIgLmR6LWVycm9yLW1lc3NhZ2UgeyBvcGFjaXR5OiAxOyBwb2ludGVyLWV2ZW50czogYXV0bzsgfQoKLmRyb3B6b25lIC5kei1wcmV2aWV3IC5kei1lcnJvci1tZXNzYWdlIHsgcG9pbnRlci1ldmVudHM6IG5vbmU7IHotaW5kZXg6IDEwMDA7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgZGlzcGxheTogYmxvY2s7IGRpc3BsYXk6IG5vbmU7IG9wYWNpdHk6IDA7IC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGVhc2U7IC1tb3otdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGVhc2U7IC1tcy10cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MgZWFzZTsgLW8tdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzIGVhc2U7IHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcyBlYXNlOyBib3JkZXItcmFkaXVzOiA4cHg7IGZvbnQtc2l6ZTogMTNweDsgdG9wOiAxMzBweDsgbGVmdDogLTEwcHg7IHdpZHRoOiAxNDBweDsgYmFja2dyb3VuZDogI2JlMjYyNjsgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgI2JlMjYyNiwgI2E5MjIyMik7IHBhZGRpbmc6IDAuNWVtIDEuMmVtOyBjb2xvcjogd2hpdGU7IH0KCi5kcm9wem9uZSAuZHotcHJldmlldyAuZHotZXJyb3ItbWVzc2FnZTphZnRlciB7IGNvbnRlbnQ6ICcnOyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogLTZweDsgbGVmdDogNjRweDsgd2lkdGg6IDA7IGhlaWdodDogMDsgYm9yZGVyLWxlZnQ6IDZweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXJpZ2h0OiA2cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1ib3R0b206IDZweCBzb2xpZCAjYmUyNjI2OyB9CgovKiogbm91aXNsaWRlciAtIDE0LjEuMSAtIDEyLzE1LzIwMTkgfCBUaGVzZSBzdHlsZXMgYXJlIHJlcXVpcmVkIGZvciBub1VpU2xpZGVyIHRvIGZ1bmN0aW9uLiAqLwoubm9VaS10YXJnZXQsIC5ub1VpLXRhcmdldCAqIHsgLXdlYmtpdC10b3VjaC1jYWxsb3V0OiBub25lOyAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMCk7IC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7IC1tcy10b3VjaC1hY3Rpb246IG5vbmU7IHRvdWNoLWFjdGlvbjogbm9uZTsgLW1zLXVzZXItc2VsZWN0OiBub25lOyAtbW96LXVzZXItc2VsZWN0OiBub25lOyB1c2VyLXNlbGVjdDogbm9uZTsgLW1vei1ib3gtc2l6aW5nOiBib3JkZXItYm94OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyB9Cgoubm9VaS10YXJnZXQgeyBwb3NpdGlvbjogcmVsYXRpdmU7IH0KCi5ub1VpLWJhc2UsIC5ub1VpLWNvbm5lY3RzIHsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsgcG9zaXRpb246IHJlbGF0aXZlOyB6LWluZGV4OiAxOyB9CgovKiBXcmFwcGVyIGZvciBhbGwgY29ubmVjdCBlbGVtZW50cy4gKi8KLm5vVWktY29ubmVjdHMgeyBvdmVyZmxvdzogaGlkZGVuOyB6LWluZGV4OiAwOyB9Cgoubm9VaS1jb25uZWN0LCAubm9VaS1vcmlnaW4geyB3aWxsLWNoYW5nZTogdHJhbnNmb3JtOyBwb3NpdGlvbjogYWJzb2x1dGU7IHotaW5kZXg6IDE7IHRvcDogMDsgcmlnaHQ6IDA7IC1tcy10cmFuc2Zvcm0tb3JpZ2luOiAwIDA7IC13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjogMCAwOyAtd2Via2l0LXRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7IHRyYW5zZm9ybS1vcmlnaW46IDAgMDsgdHJhbnNmb3JtLXN0eWxlOiBmbGF0OyB9Cgoubm9VaS1jb25uZWN0IHsgaGVpZ2h0OiAxMDAlOyB3aWR0aDogMTAwJTsgfQoKLm5vVWktb3JpZ2luIHsgaGVpZ2h0OiAxMCU7IHdpZHRoOiAxMCU7IH0KCi8qIE9mZnNldCBkaXJlY3Rpb24gKi8KLyogR2l2ZSBvcmlnaW5zIDAgaGVpZ2h0L3dpZHRoIHNvIHRoZXkgZG9uJ3QgaW50ZXJmZXJlIHdpdGggY2xpY2tpbmcgdGhlIGNvbm5lY3QgZWxlbWVudHMuICovCi5ub1VpLXZlcnRpY2FsIC5ub1VpLW9yaWdpbiB7IHdpZHRoOiAxMDAlOyB9Cgoubm9VaS1ob3Jpem9udGFsIC5ub1VpLW9yaWdpbiB7IGhlaWdodDogMTAwJTsgfQoKLm5vVWktaGFuZGxlIHsgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47IGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjsgcG9zaXRpb246IGFic29sdXRlOyB9Cgoubm9VaS1oYW5kbGU6Zm9jdXMgeyBvdXRsaW5lOiBub25lOyB9Cgoubm9VaS10b3VjaC1hcmVhIHsgaGVpZ2h0OiAxMDAlOyB3aWR0aDogMTAwJTsgfQoKLm5vVWktdG91Y2gtYXJlYTpmb2N1cyB7IG91dGxpbmU6IG5vbmU7IH0KCi5ub1VpLXN0YXRlLXRhcCAubm9VaS1jb25uZWN0LCAubm9VaS1zdGF0ZS10YXAgLm5vVWktb3JpZ2luIHsgLXdlYmtpdC10cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zczsgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3M7IH0KCi5ub1VpLXN0YXRlLWRyYWcgKiB7IGN1cnNvcjogaW5oZXJpdCAhaW1wb3J0YW50OyB9CgovKiBTbGlkZXIgc2l6ZSBhbmQgaGFuZGxlIHBsYWNlbWVudDsgKi8KLm5vVWktaG9yaXpvbnRhbCB7IGhlaWdodDogOHB4OyB9Cgoubm9VaS1ob3Jpem9udGFsIC5ub1VpLWhhbmRsZSB7IHdpZHRoOiAyOHB4OyBoZWlnaHQ6IDI4cHg7IHJpZ2h0OiAtMTRweDsgdG9wOiA1MCU7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsgfQoKLm5vVWktdmVydGljYWwgeyB3aWR0aDogOHB4OyB9Cgoubm9VaS12ZXJ0aWNhbCAubm9VaS1oYW5kbGUgeyB3aWR0aDogMjhweDsgaGVpZ2h0OiAyOHB4OyByaWdodDogNTAlOyB0b3A6IC0xNHB4OyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7IH0KCi8qIFN0eWxpbmc7IEdpdmluZyB0aGUgY29ubmVjdCBlbGVtZW50IGEgYm9yZGVyIHJhZGl1cyBjYXVzZXMgaXNzdWVzIHdpdGggdXNpbmcgdHJhbnNmb3JtOiBzY2FsZSAqLwoubm9VaS10YXJnZXQgeyBiYWNrZ3JvdW5kOiAjZGJkZmVhOyBib3JkZXItcmFkaXVzOiA0cHg7IH0KCi5ub1VpLWNvbm5lY3RzIHsgYm9yZGVyLXJhZGl1czogM3B4OyB9Cgoubm9VaS1jb25uZWN0IHsgYmFja2dyb3VuZDogIzA5NzFmZTsgfQoKLyogSGFuZGxlcyBhbmQgY3Vyc29yczsgKi8KLm5vVWktZHJhZ2dhYmxlIHsgY3Vyc29yOiBldy1yZXNpemU7IH0KCi5ub1VpLXZlcnRpY2FsIC5ub1VpLWRyYWdnYWJsZSB7IGN1cnNvcjogbnMtcmVzaXplOyB9Cgoubm9VaS1oYW5kbGUgeyBib3JkZXI6IDFweCBzb2xpZCAjZGJkZmVhOyBib3JkZXItcmFkaXVzOiA1MCU7IGJhY2tncm91bmQ6ICNmZmY7IGN1cnNvcjogZGVmYXVsdDsgYm94LXNoYWRvdzogMCAzcHggMTJweCAxcHggcmdiYSg0MywgNTUsIDcyLCAwLjE1KTsgfQoKLm5vVWktYWN0aXZlIHsgYm94LXNoYWRvdzogaW5zZXQgMCAwIDFweCAjRkZGLCBpbnNldCAwIDFweCA3cHggI0RERCwgMCAzcHggNnB4IC0zcHggI0JCQjsgfQoKLyogSGFuZGxlIHN0cmlwZXM7ICovCi5ub1VpLWhhbmRsZTpiZWZvcmUsIC5ub1VpLWhhbmRsZTphZnRlciB7IGNvbnRlbnQ6ICIiOyBkaXNwbGF5OiBibG9jazsgcG9zaXRpb246IGFic29sdXRlOyBoZWlnaHQ6IDEwcHg7IHdpZHRoOiAxcHg7IGJhY2tncm91bmQ6ICNkYmRmZWE7IGxlZnQ6IDUwJTsgdG9wOiA1MCU7IHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOyB9Cgoubm9VaS1ob3Jpem9udGFsIC5ub1VpLWhhbmRsZTpiZWZvcmUgeyBtYXJnaW4tbGVmdDogLTJweDsgfQoKLm5vVWktaG9yaXpvbnRhbCAubm9VaS1oYW5kbGU6YWZ0ZXIgeyBtYXJnaW4tbGVmdDogMnB4OyB9Cgoubm9VaS12ZXJ0aWNhbCAubm9VaS1oYW5kbGU6YmVmb3JlLCAubm9VaS12ZXJ0aWNhbCAubm9VaS1oYW5kbGU6YWZ0ZXIgeyB3aWR0aDogMTBweDsgaGVpZ2h0OiAxcHg7IH0KCi5ub1VpLXZlcnRpY2FsIC5ub1VpLWhhbmRsZTpiZWZvcmUgeyBtYXJnaW4tdG9wOiAtMnB4OyB9Cgoubm9VaS12ZXJ0aWNhbCAubm9VaS1oYW5kbGU6YWZ0ZXIgeyBtYXJnaW4tdG9wOiAycHg7IH0KCi8qIERpc2FibGVkIHN0YXRlOyAqLwpbZGlzYWJsZWRdIC5ub1VpLWNvbm5lY3QgeyBiYWNrZ3JvdW5kOiAjZTVlOWYyOyB9CgpbZGlzYWJsZWRdLm5vVWktdGFyZ2V0LCBbZGlzYWJsZWRdLm5vVWktaGFuZGxlLCBbZGlzYWJsZWRdIC5ub1VpLWhhbmRsZSB7IGN1cnNvcjogbm90LWFsbG93ZWQ7IH0KCi8qIEJhc2U7ICovCi5ub1VpLXBpcHMsIC5ub1VpLXBpcHMgKiB7IC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgfQoKLm5vVWktcGlwcyB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgY29sb3I6ICM5OTk7IH0KCi8qIFZhbHVlczsgKi8KLm5vVWktdmFsdWUgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHdoaXRlLXNwYWNlOiBub3dyYXA7IHRleHQtYWxpZ246IGNlbnRlcjsgfQoKLm5vVWktdmFsdWUtc3ViIHsgY29sb3I6ICNjY2M7IGZvbnQtc2l6ZTogMTBweDsgfQoKLyogTWFya2luZ3M7ICovCi5ub1VpLW1hcmtlciB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgYmFja2dyb3VuZDogI0NDQzsgfQoKLm5vVWktbWFya2VyLXN1YiB7IGJhY2tncm91bmQ6ICNBQUE7IH0KCi5ub1VpLW1hcmtlci1sYXJnZSB7IGJhY2tncm91bmQ6ICNBQUE7IH0KCi8qIEhvcml6b250YWwgbGF5b3V0OyAqLwoubm9VaS1waXBzLWhvcml6b250YWwgeyBwYWRkaW5nOiAxMHB4IDA7IGhlaWdodDogODBweDsgdG9wOiAxMDAlOyBsZWZ0OiAwOyB3aWR0aDogMTAwJTsgfQoKLm5vVWktdmFsdWUtaG9yaXpvbnRhbCB7IC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgNTAlKTsgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgNTAlKTsgfQoKLm5vVWktbWFya2VyLWhvcml6b250YWwubm9VaS1tYXJrZXIgeyBtYXJnaW4tbGVmdDogLTFweDsgd2lkdGg6IDJweDsgaGVpZ2h0OiA1cHg7IH0KCi5ub1VpLW1hcmtlci1ob3Jpem9udGFsLm5vVWktbWFya2VyLXN1YiB7IGhlaWdodDogMTBweDsgfQoKLm5vVWktbWFya2VyLWhvcml6b250YWwubm9VaS1tYXJrZXItbGFyZ2UgeyBoZWlnaHQ6IDE1cHg7IH0KCi8qIFZlcnRpY2FsIGxheW91dDsgKi8KLm5vVWktcGlwcy12ZXJ0aWNhbCB7IHBhZGRpbmc6IDAgMTBweDsgaGVpZ2h0OiAxMDAlOyB0b3A6IDA7IGxlZnQ6IDEwMCU7IH0KCi5ub1VpLXZhbHVlLXZlcnRpY2FsIHsgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTsgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTUwJSk7IHBhZGRpbmctbGVmdDogMjVweDsgfQoKLm5vVWktbWFya2VyLXZlcnRpY2FsLm5vVWktbWFya2VyIHsgd2lkdGg6IDVweDsgaGVpZ2h0OiAycHg7IG1hcmdpbi10b3A6IC0xcHg7IH0KCi5ub1VpLW1hcmtlci12ZXJ0aWNhbC5ub1VpLW1hcmtlci1zdWIgeyB3aWR0aDogMTBweDsgfQoKLm5vVWktbWFya2VyLXZlcnRpY2FsLm5vVWktbWFya2VyLWxhcmdlIHsgd2lkdGg6IDE1cHg7IH0KCi5ub1VpLXRvb2x0aXAgeyBkaXNwbGF5OiBibG9jazsgcG9zaXRpb246IGFic29sdXRlOyBib3JkZXI6IDFweCBzb2xpZCAjRDlEOUQ5OyBib3JkZXItcmFkaXVzOiAzcHg7IGJhY2tncm91bmQ6ICNmZmY7IGNvbG9yOiAjMDAwOyBwYWRkaW5nOiA1cHg7IHRleHQtYWxpZ246IGNlbnRlcjsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfQoKLm5vVWktaG9yaXpvbnRhbCAubm9VaS10b29sdGlwIHsgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAwKTsgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgMCk7IGxlZnQ6IDUwJTsgYm90dG9tOiAxMjAlOyB9Cgoubm9VaS12ZXJ0aWNhbCAubm9VaS10b29sdGlwIHsgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtNTAlKTsgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTUwJSk7IHRvcDogNTAlOyByaWdodDogMTIwJTsgfQoKI3RvYXN0LWNvbnRhaW5lciB7IHBvc2l0aW9uOiBmaXhlZDsgei1pbmRleDogOTk5OTk5OyBwb2ludGVyLWV2ZW50czogbm9uZTsgcGFkZGluZzogMS4yNXJlbTsgd2lkdGg6IDEwMCU7IH0KCiN0b2FzdC1jb250YWluZXJbY2xhc3MqPSItY2VudGVyIl0gLnRvYXN0ciB7IG1hcmdpbi1sZWZ0OiBhdXRvOyBtYXJnaW4tcmlnaHQ6IGF1dG87IH0KCiN0b2FzdC1jb250YWluZXJbY2xhc3MqPSItbGVmdCJdIC50b2FzdHIgeyBtYXJnaW4tcmlnaHQ6IGF1dG87IH0KCiN0b2FzdC1jb250YWluZXJbY2xhc3MqPSItcmlnaHQiXSAudG9hc3RyIHsgbWFyZ2luLWxlZnQ6IGF1dG87IH0KCiN0b2FzdC1jb250YWluZXJbY2xhc3MqPSItZnVsbCJdIC50b2FzdHIgeyB3aWR0aDogMTAwJTsgfQoKI3RvYXN0LWNvbnRhaW5lcltjbGFzcyo9InRvYXN0LXRvcCJdIHsgdG9wOiAwOyB9CgojdG9hc3QtY29udGFpbmVyW2NsYXNzKj0idG9hc3QtYm90dG9tIl0geyBib3R0b206IDA7IH0KCi50b2FzdHIgeyBwb3NpdGlvbjogcmVsYXRpdmU7IHBvaW50ZXItZXZlbnRzOiBhdXRvOyBiYWNrZ3JvdW5kOiAjZmZmOyBib3gtc2hhZG93OiAwIDNweCAxMnB4IDFweCByZ2JhKDQzLCA1NSwgNzIsIDAuMTUpOyBib3JkZXItcmFkaXVzOiA0cHg7IG9wYWNpdHk6IDE7IGJvcmRlci1sZWZ0OiA0cHggc29saWQgdHJhbnNwYXJlbnQ7IHBhZGRpbmc6IDEuMjVyZW0gNC41cmVtIDEuMjVyZW0gMS4yNXJlbTsgd2lkdGg6IDQzMHB4OyBtYXgtd2lkdGg6IDEwMCU7IGZvbnQtc2l6ZTogMC44NzVyZW07IGxpbmUtaGVpZ2h0OiAxLjNyZW07IH0KCi5pcy1kYXJrIC50b2FzdHIgeyBiYWNrZ3JvdW5kOiAjMTAxOTI0OyBjb2xvcjogI2ZmZjsgfQoKLnRvYXN0cjpub3QoOmxhc3QtY2hpbGQpIHsgbWFyZ2luLWJvdHRvbTogMC43NXJlbTsgfQoKLnRvYXN0ci50b2FzdC1zdWNjZXNzIHsgYm9yZGVyLWNvbG9yOiAjMWVlMGFjOyB9CgoudG9hc3RyLnRvYXN0LXN1Y2Nlc3MgLmljb24geyBjb2xvcjogIzFlZTBhYzsgfQoKLnRvYXN0ci50b2FzdC1lcnJvciB7IGJvcmRlci1jb2xvcjogI2U4NTM0NzsgfQoKLnRvYXN0ci50b2FzdC1lcnJvciAuaWNvbiB7IGNvbG9yOiAjZTg1MzQ3OyB9CgoudG9hc3RyLnRvYXN0LWluZm8geyBib3JkZXItY29sb3I6ICMwOWMyZGU7IH0KCi50b2FzdHIudG9hc3QtaW5mbyAuaWNvbiB7IGNvbG9yOiAjMDljMmRlOyB9CgoudG9hc3RyLnRvYXN0LXdhcm5pbmcgeyBib3JkZXItY29sb3I6ICNmNGJkMGU7IH0KCi50b2FzdHIudG9hc3Qtd2FybmluZyAuaWNvbiB7IGNvbG9yOiAjZjRiZDBlOyB9CgoudG9hc3RyLWljb24geyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDEuMjVyZW07IHRvcDogNTAlOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7IGZvbnQtc2l6ZTogMjRweDsgbGluZS1oZWlnaHQ6IDE7IH0KCi50b2FzdHItaWNvbiArIC50b2FzdHItdGV4dCB7IHBhZGRpbmctbGVmdDogMi4zNXJlbTsgfQoKLnRvYXN0ciBoNCwgLnRvYXN0ciBoNSwgLnRvYXN0ciBoNiB7IG1hcmdpbi1ib3R0b206IDAuMzVyZW07IGZvbnQtc2l6ZTogMXJlbTsgfQoKLmlzLWRhcmsgLnRvYXN0ciBoNCwgLmlzLWRhcmsgLnRvYXN0ciBoNSwgLmlzLWRhcmsgLnRvYXN0ciBoNiB7IGNvbG9yOiAjZmZmOyB9CgoudG9hc3QtY2xvc2UtYnV0dG9uIHsgcG9zaXRpb246IGFic29sdXRlOyByaWdodDogMTJweDsgdG9wOiA1MCU7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBoZWlnaHQ6IDMycHg7IHdpZHRoOiAzMnB4OyB0ZXh0LWluZGVudDogLTk5OTlweDsgY3Vyc29yOiBwb2ludGVyOyB9CgoudG9hc3QtY2xvc2UtYnV0dG9uOmFmdGVyIHsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IGxlZnQ6IDA7IHRleHQtaW5kZW50OiAwOyBjb2xvcjogIzgwOTRhZTsgZm9udC1mYW1pbHk6ICJOaW9pY29uIjsgY29udGVudDogIu6ohiI7IGZvbnQtc2l6ZTogMThweDsgbGluZS1oZWlnaHQ6IDMycHg7IHdpZHRoOiAxMDAlOyB0ZXh0LWFsaWduOiBjZW50ZXI7IH0KCi5pcy1kYXJrIC50b2FzdC1jbG9zZS1idXR0b246YWZ0ZXIgeyBjb2xvcjogI2RiZGZlYTsgfQoKLnRvYXN0LXByb2dyZXNzIHsgcG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAwOyBib3R0b206IDA7IGhlaWdodDogNHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwOyBvcGFjaXR5OiAwLjQ7IC1tcy1maWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTQwKTsgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTQwKTsgfQoKLnRvYXN0LXRpdGxlIHsgZm9udC13ZWlnaHQ6IGJvbGQ7IH0KCi50b2FzdC1tZXNzYWdlIHsgd29yZC13cmFwOiBicmVhay13b3JkOyB9CgoudG9hc3QtbWVzc2FnZSBhLCAudG9hc3QtbWVzc2FnZSBsYWJlbCB7IGNvbG9yOiAjNTI2NDg0OyB9CgoudG9hc3QtbWVzc2FnZSBhOmhvdmVyIHsgY29sb3I6ICNDQ0NDQ0M7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfQoKLyoqIFN3ZWV0QWxlcnQyIHwgZ2l0aHViLmNvbS9zd2VldGFsZXJ0Mi9zd2VldGFsZXJ0MiAqLwouc3dhbDItcG9wdXAuc3dhbDItdG9hc3QgeyBmbGV4LWRpcmVjdGlvbjogcm93OyBhbGlnbi1pdGVtczogY2VudGVyOyB3aWR0aDogYXV0bzsgcGFkZGluZzogMC42MjVlbTsgb3ZlcmZsb3cteTogaGlkZGVuOyBiYWNrZ3JvdW5kOiAjZmZmOyBib3gtc2hhZG93OiAwIDAgMC42MjVlbSAjZDlkOWQ5OyB9Cgouc3dhbDItcG9wdXAuc3dhbDItdG9hc3QgLnN3YWwyLWhlYWRlciB7IGZsZXgtZGlyZWN0aW9uOiByb3c7IH0KCi5zd2FsMi1wb3B1cC5zd2FsMi10b2FzdCAuc3dhbDItdGl0bGUgeyBmbGV4LWdyb3c6IDE7IGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsgbWFyZ2luOiAwIDAuNmVtOyBmb250LXNpemU6IDFlbTsgfQoKLnN3YWwyLXBvcHVwLnN3YWwyLXRvYXN0IC5zd2FsMi1mb290ZXIgeyBtYXJnaW46IDAuNWVtIDAgMDsgcGFkZGluZzogMC41ZW0gMCAwOyBmb250LXNpemU6IDAuOGVtOyB9Cgouc3dhbDItcG9wdXAuc3dhbDItdG9hc3QgLnN3YWwyLWNsb3NlIHsgcG9zaXRpb246IHN0YXRpYzsgd2lkdGg6IDAuOGVtOyBoZWlnaHQ6IDAuOGVtOyBsaW5lLWhlaWdodDogMC44OyB9Cgouc3dhbDItcG9wdXAuc3dhbDItdG9hc3QgLnN3YWwyLWNvbnRlbnQgeyBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7IGZvbnQtc2l6ZTogMWVtOyB9Cgouc3dhbDItcG9wdXAuc3dhbDItdG9hc3QgLnN3YWwyLWljb24geyB3aWR0aDogMmVtOyBtaW4td2lkdGg6IDJlbTsgaGVpZ2h0OiAyZW07IG1hcmdpbjogMDsgfQoKLnN3YWwyLXBvcHVwLnN3YWwyLXRvYXN0IC5zd2FsMi1pY29uIC5zd2FsMi1pY29uLWNvbnRlbnQgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBmb250LXNpemU6IDEuOGVtOyBmb250LXdlaWdodDogYm9sZDsgfQoKQG1lZGlhIGFsbCBhbmQgKC1tcy1oaWdoLWNvbnRyYXN0OiBub25lKSwgKC1tcy1oaWdoLWNvbnRyYXN0OiBhY3RpdmUpIHsgLnN3YWwyLXBvcHVwLnN3YWwyLXRvYXN0IC5zd2FsMi1pY29uIC5zd2FsMi1pY29uLWNvbnRlbnQgeyBmb250LXNpemU6IC4yNWVtOyB9IH0KCi5zd2FsMi1wb3B1cC5zd2FsMi10b2FzdCAuc3dhbDItaWNvbi5zd2FsMi1zdWNjZXNzIC5zd2FsMi1zdWNjZXNzLXJpbmcgeyB3aWR0aDogMmVtOyBoZWlnaHQ6IDJlbTsgfQoKLnN3YWwyLXBvcHVwLnN3YWwyLXRvYXN0IC5zd2FsMi1pY29uLnN3YWwyLWVycm9yIFtjbGFzc149J3N3YWwyLXgtbWFyay1saW5lJ10geyB0b3A6IC44NzVlbTsgd2lkdGg6IDEuMzc1ZW07IH0KCi5zd2FsMi1wb3B1cC5zd2FsMi10b2FzdCAuc3dhbDItaWNvbi5zd2FsMi1lcnJvciBbY2xhc3NePSdzd2FsMi14LW1hcmstbGluZSddW2NsYXNzJD0nbGVmdCddIHsgbGVmdDogLjMxMjVlbTsgfQoKLnN3YWwyLXBvcHVwLnN3YWwyLXRvYXN0IC5zd2FsMi1pY29uLnN3YWwyLWVycm9yIFtjbGFzc149J3N3YWwyLXgtbWFyay1saW5lJ11bY2xhc3MkPSdyaWdodCddIHsgcmlnaHQ6IC4zMTI1ZW07IH0KCi5zd2FsMi1wb3B1cC5zd2FsMi10b2FzdCAuc3dhbDItYWN0aW9ucyB7IGZsZXgtYmFzaXM6IGF1dG8gIWltcG9ydGFudDsgd2lkdGg6IGF1dG87IGhlaWdodDogYXV0bzsgbWFyZ2luOiAwIC4zMTI1ZW07IH0KCi5zd2FsMi1wb3B1cC5zd2FsMi10b2FzdCAuc3dhbDItYWN0aW9ucyAuYnRuLCAuc3dhbDItcG9wdXAuc3dhbDItdG9hc3QgLnN3YWwyLWFjdGlvbnMgLmR1YWwtbGlzdGJveCAuZHVhbC1saXN0Ym94X19idXR0b24sIC5kdWFsLWxpc3Rib3ggLnN3YWwyLXBvcHVwLnN3YWwyLXRvYXN0IC5zd2FsMi1hY3Rpb25zIC5kdWFsLWxpc3Rib3hfX2J1dHRvbiB7IG1hcmdpbjogMCAuNWVtOyB9Cgouc3dhbDItcG9wdXAuc3dhbDItdG9hc3QgLnN3YWwyLXN0eWxlZCB7IG1hcmdpbjogMCAuNWVtOyBwYWRkaW5nOiAuMzEyNWVtIC42MjVlbTsgZm9udC1zaXplOiAxZW07IH0KCi5zd2FsMi1wb3B1cC5zd2FsMi10b2FzdCAuc3dhbDItc3R5bGVkOmZvY3VzIHsgYm94LXNoYWRvdzogMCAwIDAgMXB4ICNmZmYsIDAgMCAwIDNweCByZ2JhKDksIDExMywgMjU0LCAwLjQpOyB9Cgouc3dhbDItcG9wdXAuc3dhbDItdG9hc3QgLnN3YWwyLXN1Y2Nlc3MgeyBib3JkZXItY29sb3I6ICMxZWUwYWM7IH0KCi5zd2FsMi1wb3B1cC5zd2FsMi10b2FzdCAuc3dhbDItc3VjY2VzcyBbY2xhc3NePSdzd2FsMi1zdWNjZXNzLWNpcmN1bGFyLWxpbmUnXSB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgd2lkdGg6IDEuNmVtOyBoZWlnaHQ6IDNlbTsgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpOyBib3JkZXItcmFkaXVzOiA1MCU7IH0KCi5zd2FsMi1wb3B1cC5zd2FsMi10b2FzdCAuc3dhbDItc3VjY2VzcyBbY2xhc3NePSdzd2FsMi1zdWNjZXNzLWNpcmN1bGFyLWxpbmUnXVtjbGFzcyQ9J2xlZnQnXSB7IHRvcDogLS44ZW07IGxlZnQ6IC0uNWVtOyBib3JkZXItcmFkaXVzOiA0ZW0gMCAwIDRlbTsgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTsgdHJhbnNmb3JtLW9yaWdpbjogMmVtIDJlbTsgfQoKLnN3YWwyLXBvcHVwLnN3YWwyLXRvYXN0IC5zd2FsMi1zdWNjZXNzIFtjbGFzc149J3N3YWwyLXN1Y2Nlc3MtY2lyY3VsYXItbGluZSddW2NsYXNzJD0ncmlnaHQnXSB7IHRvcDogLS4yNWVtOyBsZWZ0OiAuOTM3NWVtOyBib3JkZXItcmFkaXVzOiAwIDRlbSA0ZW0gMDsgdHJhbnNmb3JtLW9yaWdpbjogMCAxLjVlbTsgfQoKLnN3YWwyLXBvcHVwLnN3YWwyLXRvYXN0IC5zd2FsMi1zdWNjZXNzIC5zd2FsMi1zdWNjZXNzLXJpbmcgeyB3aWR0aDogMmVtOyBoZWlnaHQ6IDJlbTsgfQoKLnN3YWwyLXBvcHVwLnN3YWwyLXRvYXN0IC5zd2FsMi1zdWNjZXNzIC5zd2FsMi1zdWNjZXNzLWZpeCB7IHRvcDogMDsgbGVmdDogLjQzNzVlbTsgd2lkdGg6IC40Mzc1ZW07IGhlaWdodDogMi42ODc1ZW07IH0KCi5zd2FsMi1wb3B1cC5zd2FsMi10b2FzdCAuc3dhbDItc3VjY2VzcyBbY2xhc3NePSdzd2FsMi1zdWNjZXNzLWxpbmUnXSB7IGhlaWdodDogLjMxMjVlbTsgfQoKLnN3YWwyLXBvcHVwLnN3YWwyLXRvYXN0IC5zd2FsMi1zdWNjZXNzIFtjbGFzc149J3N3YWwyLXN1Y2Nlc3MtbGluZSddW2NsYXNzJD0ndGlwJ10geyB0b3A6IDEuMTI1ZW07IGxlZnQ6IC4xODc1ZW07IHdpZHRoOiAuNzVlbTsgfQoKLnN3YWwyLXBvcHVwLnN3YWwyLXRvYXN0IC5zd2FsMi1zdWNjZXNzIFtjbGFzc149J3N3YWwyLXN1Y2Nlc3MtbGluZSddW2NsYXNzJD0nbG9uZyddIHsgdG9wOiAuOTM3NWVtOyByaWdodDogLjE4NzVlbTsgd2lkdGg6IDEuMzc1ZW07IH0KCi5zd2FsMi1wb3B1cC5zd2FsMi10b2FzdCAuc3dhbDItc3VjY2Vzcy5zd2FsMi1pY29uLXNob3cgLnN3YWwyLXN1Y2Nlc3MtbGluZS10aXAgeyBhbmltYXRpb246IHN3YWwyLXRvYXN0LWFuaW1hdGUtc3VjY2Vzcy1saW5lLXRpcCAuNzVzOyB9Cgouc3dhbDItcG9wdXAuc3dhbDItdG9hc3QgLnN3YWwyLXN1Y2Nlc3Muc3dhbDItaWNvbi1zaG93IC5zd2FsMi1zdWNjZXNzLWxpbmUtbG9uZyB7IGFuaW1hdGlvbjogc3dhbDItdG9hc3QtYW5pbWF0ZS1zdWNjZXNzLWxpbmUtbG9uZyAuNzVzOyB9Cgouc3dhbDItcG9wdXAuc3dhbDItdG9hc3Quc3dhbDItc2hvdyB7IGFuaW1hdGlvbjogc3dhbDItdG9hc3Qtc2hvdyAwLjVzOyB9Cgouc3dhbDItcG9wdXAuc3dhbDItdG9hc3Quc3dhbDItaGlkZSB7IGFuaW1hdGlvbjogc3dhbDItdG9hc3QtaGlkZSAwLjFzIGZvcndhcmRzOyB9Cgouc3dhbDItY29udGFpbmVyIHsgZGlzcGxheTogZmxleDsgcG9zaXRpb246IGZpeGVkOyB6LWluZGV4OiAxMDYwOyB0b3A6IDA7IHJpZ2h0OiAwOyBib3R0b206IDA7IGxlZnQ6IDA7IGZsZXgtZGlyZWN0aW9uOiByb3c7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyOyBwYWRkaW5nOiAwLjYyNWVtOyBvdmVyZmxvdy14OiBoaWRkZW47IHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4xczsgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOyB9Cgouc3dhbDItY29udGFpbmVyLnN3YWwyLWJhY2tkcm9wLXNob3cgeyBiYWNrZ3JvdW5kOiByZ2JhKDI4LCA0MywgNzAsIDAuNCk7IH0KCi5zd2FsMi1jb250YWluZXIuc3dhbDItYmFja2Ryb3AtaGlkZSB7IGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7IH0KCi5zd2FsMi1jb250YWluZXIuc3dhbDItdG9wIHsgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IH0KCi5zd2FsMi1jb250YWluZXIuc3dhbDItdG9wLXN0YXJ0LCAuc3dhbDItY29udGFpbmVyLnN3YWwyLXRvcC1sZWZ0IHsgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsgfQoKLnN3YWwyLWNvbnRhaW5lci5zd2FsMi10b3AtZW5kLCAuc3dhbDItY29udGFpbmVyLnN3YWwyLXRvcC1yaWdodCB7IGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOyB9Cgouc3dhbDItY29udGFpbmVyLnN3YWwyLWNlbnRlciB7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IH0KCi5zd2FsMi1jb250YWluZXIuc3dhbDItY2VudGVyLXN0YXJ0LCAuc3dhbDItY29udGFpbmVyLnN3YWwyLWNlbnRlci1sZWZ0IHsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OyB9Cgouc3dhbDItY29udGFpbmVyLnN3YWwyLWNlbnRlci1lbmQsIC5zd2FsMi1jb250YWluZXIuc3dhbDItY2VudGVyLXJpZ2h0IHsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsgfQoKLnN3YWwyLWNvbnRhaW5lci5zd2FsMi1ib3R0b20geyBhbGlnbi1pdGVtczogZmxleC1lbmQ7IH0KCi5zd2FsMi1jb250YWluZXIuc3dhbDItYm90dG9tLXN0YXJ0LCAuc3dhbDItY29udGFpbmVyLnN3YWwyLWJvdHRvbS1sZWZ0IHsgYWxpZ24taXRlbXM6IGZsZXgtZW5kOyBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7IH0KCi5zd2FsMi1jb250YWluZXIuc3dhbDItYm90dG9tLWVuZCwgLnN3YWwyLWNvbnRhaW5lci5zd2FsMi1ib3R0b20tcmlnaHQgeyBhbGlnbi1pdGVtczogZmxleC1lbmQ7IGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7IH0KCi5zd2FsMi1jb250YWluZXIuc3dhbDItYm90dG9tID4gOmZpcnN0LWNoaWxkLCAuc3dhbDItY29udGFpbmVyLnN3YWwyLWJvdHRvbS1zdGFydCA+IDpmaXJzdC1jaGlsZCwgLnN3YWwyLWNvbnRhaW5lci5zd2FsMi1ib3R0b20tbGVmdCA+IDpmaXJzdC1jaGlsZCwgLnN3YWwyLWNvbnRhaW5lci5zd2FsMi1ib3R0b20tZW5kID4gOmZpcnN0LWNoaWxkLCAuc3dhbDItY29udGFpbmVyLnN3YWwyLWJvdHRvbS1yaWdodCA+IDpmaXJzdC1jaGlsZCB7IG1hcmdpbi10b3A6IGF1dG87IH0KCi5zd2FsMi1jb250YWluZXIuc3dhbDItZ3Jvdy1mdWxsc2NyZWVuID4gLnN3YWwyLW1vZGFsIHsgZGlzcGxheTogZmxleCAhaW1wb3J0YW50OyBmbGV4OiAxOyBhbGlnbi1zZWxmOiBzdHJldGNoOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgfQoKLnN3YWwyLWNvbnRhaW5lci5zd2FsMi1ncm93LXJvdyA+IC5zd2FsMi1tb2RhbCB7IGRpc3BsYXk6IGZsZXggIWltcG9ydGFudDsgZmxleDogMTsgYWxpZ24tY29udGVudDogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgfQoKLnN3YWwyLWNvbnRhaW5lci5zd2FsMi1ncm93LWNvbHVtbiB7IGZsZXg6IDE7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IH0KCi5zd2FsMi1jb250YWluZXIuc3dhbDItZ3Jvdy1jb2x1bW4uc3dhbDItdG9wLCAuc3dhbDItY29udGFpbmVyLnN3YWwyLWdyb3ctY29sdW1uLnN3YWwyLWNlbnRlciwgLnN3YWwyLWNvbnRhaW5lci5zd2FsMi1ncm93LWNvbHVtbi5zd2FsMi1ib3R0b20geyBhbGlnbi1pdGVtczogY2VudGVyOyB9Cgouc3dhbDItY29udGFpbmVyLnN3YWwyLWdyb3ctY29sdW1uLnN3YWwyLXRvcC1zdGFydCwgLnN3YWwyLWNvbnRhaW5lci5zd2FsMi1ncm93LWNvbHVtbi5zd2FsMi1jZW50ZXItc3RhcnQsIC5zd2FsMi1jb250YWluZXIuc3dhbDItZ3Jvdy1jb2x1bW4uc3dhbDItYm90dG9tLXN0YXJ0LCAuc3dhbDItY29udGFpbmVyLnN3YWwyLWdyb3ctY29sdW1uLnN3YWwyLXRvcC1sZWZ0LCAuc3dhbDItY29udGFpbmVyLnN3YWwyLWdyb3ctY29sdW1uLnN3YWwyLWNlbnRlci1sZWZ0LCAuc3dhbDItY29udGFpbmVyLnN3YWwyLWdyb3ctY29sdW1uLnN3YWwyLWJvdHRvbS1sZWZ0IHsgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IH0KCi5zd2FsMi1jb250YWluZXIuc3dhbDItZ3Jvdy1jb2x1bW4uc3dhbDItdG9wLWVuZCwgLnN3YWwyLWNvbnRhaW5lci5zd2FsMi1ncm93LWNvbHVtbi5zd2FsMi1jZW50ZXItZW5kLCAuc3dhbDItY29udGFpbmVyLnN3YWwyLWdyb3ctY29sdW1uLnN3YWwyLWJvdHRvbS1lbmQsIC5zd2FsMi1jb250YWluZXIuc3dhbDItZ3Jvdy1jb2x1bW4uc3dhbDItdG9wLXJpZ2h0LCAuc3dhbDItY29udGFpbmVyLnN3YWwyLWdyb3ctY29sdW1uLnN3YWwyLWNlbnRlci1yaWdodCwgLnN3YWwyLWNvbnRhaW5lci5zd2FsMi1ncm93LWNvbHVtbi5zd2FsMi1ib3R0b20tcmlnaHQgeyBhbGlnbi1pdGVtczogZmxleC1lbmQ7IH0KCi5zd2FsMi1jb250YWluZXIuc3dhbDItZ3Jvdy1jb2x1bW4gPiAuc3dhbDItbW9kYWwgeyBkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7IGZsZXg6IDE7IGFsaWduLWNvbnRlbnQ6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IH0KCi5zd2FsMi1jb250YWluZXI6bm90KC5zd2FsMi10b3ApOm5vdCguc3dhbDItdG9wLXN0YXJ0KTpub3QoLnN3YWwyLXRvcC1lbmQpOm5vdCguc3dhbDItdG9wLWxlZnQpOm5vdCguc3dhbDItdG9wLXJpZ2h0KTpub3QoLnN3YWwyLWNlbnRlci1zdGFydCk6bm90KC5zd2FsMi1jZW50ZXItZW5kKTpub3QoLnN3YWwyLWNlbnRlci1sZWZ0KTpub3QoLnN3YWwyLWNlbnRlci1yaWdodCk6bm90KC5zd2FsMi1ib3R0b20pOm5vdCguc3dhbDItYm90dG9tLXN0YXJ0KTpub3QoLnN3YWwyLWJvdHRvbS1lbmQpOm5vdCguc3dhbDItYm90dG9tLWxlZnQpOm5vdCguc3dhbDItYm90dG9tLXJpZ2h0KTpub3QoLnN3YWwyLWdyb3ctZnVsbHNjcmVlbikgPiAuc3dhbDItbW9kYWwgeyBtYXJnaW46IGF1dG87IH0KCkBtZWRpYSBhbGwgYW5kICgtbXMtaGlnaC1jb250cmFzdDogbm9uZSksICgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKSB7IC5zd2FsMi1jb250YWluZXIgLnN3YWwyLW1vZGFsIHsgbWFyZ2luOiAwICFpbXBvcnRhbnQ7IH0gfQoKLnN3YWwyLXBvcHVwIHsgZGlzcGxheTogbm9uZTsgcG9zaXRpb246IHJlbGF0aXZlOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgd2lkdGg6IDQ4MHB4OyBtYXgtd2lkdGg6IDEwMCU7IHBhZGRpbmc6IDIuNzVyZW0gMi41cmVtOyBib3JkZXI6IG5vbmU7IGJvcmRlci1yYWRpdXM6IDRweDsgYmFja2dyb3VuZDogI2ZmZjsgZm9udC1mYW1pbHk6IGluaGVyaXQ7IGZvbnQtc2l6ZTogMXJlbTsgfQoKLnN3YWwyLXBvcHVwOmZvY3VzIHsgb3V0bGluZTogbm9uZTsgfQoKLnN3YWwyLXBvcHVwLnN3YWwyLWxvYWRpbmcgeyBvdmVyZmxvdy15OiBoaWRkZW47IH0KCi5zd2FsMi1oZWFkZXIgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBhbGlnbi1pdGVtczogY2VudGVyOyB9Cgouc3dhbDItdGl0bGUgeyBwb3NpdGlvbjogcmVsYXRpdmU7IG1heC13aWR0aDogMTAwJTsgbWFyZ2luOiAwIDAgMC40ZW07IHBhZGRpbmc6IDA7IGNvbG9yOiAjMzY0YTYzOyBmb250LXNpemU6IDEuNXJlbTsgZm9udC13ZWlnaHQ6IDcwMDsgdGV4dC1hbGlnbjogY2VudGVyOyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd29yZC13cmFwOiBicmVhay13b3JkOyB9Cgouc3dhbDItaHRtbC1jb250YWluZXIgeyBtYXJnaW4tYm90dG9tOiAxcmVtOyB9Cgouc3dhbDItYWN0aW9ucyB7IGRpc3BsYXk6IGZsZXg7IHotaW5kZXg6IDE7IGZsZXgtd3JhcDogd3JhcDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IHdpZHRoOiAxMDAlOyBtYXJnaW46IDEuNXJlbSBhdXRvIDA7IH0KCi5zd2FsMi1hY3Rpb25zIC5idG4sIC5zd2FsMi1hY3Rpb25zIC5kdWFsLWxpc3Rib3ggLmR1YWwtbGlzdGJveF9fYnV0dG9uLCAuZHVhbC1saXN0Ym94IC5zd2FsMi1hY3Rpb25zIC5kdWFsLWxpc3Rib3hfX2J1dHRvbiB7IG1hcmdpbjogMCAuNzVyZW07IH0KCi5zd2FsMi1hY3Rpb25zOm5vdCguc3dhbDItbG9hZGluZykgLnN3YWwyLXN0eWxlZFtkaXNhYmxlZF0geyBvcGFjaXR5OiAuNDsgfQoKLnN3YWwyLWFjdGlvbnM6bm90KC5zd2FsMi1sb2FkaW5nKSAuc3dhbDItc3R5bGVkOmhvdmVyIHsgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHJnYmEoMzEsIDQzLCA1OCwgMC4xKSwgcmdiYSgzMSwgNDMsIDU4LCAwLjEpKTsgfQoKLnN3YWwyLWFjdGlvbnM6bm90KC5zd2FsMi1sb2FkaW5nKSAuc3dhbDItc3R5bGVkOmFjdGl2ZSB7IGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudChyZ2JhKDMxLCA0MywgNTgsIDAuMiksIHJnYmEoMzEsIDQzLCA1OCwgMC4yKSk7IH0KCi5zd2FsMi1hY3Rpb25zLnN3YWwyLWxvYWRpbmcgLnN3YWwyLXN0eWxlZC5zd2FsMi1jb25maXJtIHsgYm94LXNpemluZzogYm9yZGVyLWJveDsgd2lkdGg6IDIuNWVtOyBoZWlnaHQ6IDIuNWVtOyBtYXJnaW46IC40Njg3NWVtOyBwYWRkaW5nOiAwOyBhbmltYXRpb246IHN3YWwyLXJvdGF0ZS1sb2FkaW5nIDEuNXMgbGluZWFyIDBzIGluZmluaXRlIG5vcm1hbDsgYm9yZGVyOiAuMjVlbSBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXJhZGl1czogMTAwJTsgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDsgY29sb3I6IHRyYW5zcGFyZW50OyBjdXJzb3I6IGRlZmF1bHQ7IHVzZXItc2VsZWN0OiBub25lOyB9Cgouc3dhbDItYWN0aW9ucy5zd2FsMi1sb2FkaW5nIC5zd2FsMi1zdHlsZWQuc3dhbDItY2FuY2VsIHsgbWFyZ2luLXJpZ2h0OiAzMHB4OyBtYXJnaW4tbGVmdDogMzBweDsgfQoKLnN3YWwyLWFjdGlvbnMuc3dhbDItbG9hZGluZyA6bm90KC5zd2FsMi1zdHlsZWQpLnN3YWwyLWNvbmZpcm06OmFmdGVyIHsgY29udGVudDogJyc7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgd2lkdGg6IDE1cHg7IGhlaWdodDogMTVweDsgYW5pbWF0aW9uOiBzd2FsMi1yb3RhdGUtbG9hZGluZyAxLjVzIGxpbmVhciAwcyBpbmZpbml0ZSBub3JtYWw7IGJvcmRlcjogM3B4IHNvbGlkICNiNGM0ZDc7IGJvcmRlci1yYWRpdXM6IDUwJTsgbWFyZ2luLWxlZnQ6IDVweDsgYm9yZGVyLXJpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDsgYm94LXNoYWRvdzogMXB4IDFweCAxcHggI2ZmZjsgfQoKLnN3YWwyLXN0eWxlZCB7IG1hcmdpbjogMCAuNzVyZW07IGJveC1zaGFkb3c6IG5vbmU7IHBhZGRpbmc6IDAuNjg3NXJlbSAxLjI1cmVtOyBmb250LXNpemU6IDAuOTM3NXJlbTsgbGluZS1oZWlnaHQ6IDEuMjVyZW07IGJvcmRlci1yYWRpdXM6IDVweDsgbWluLXdpZHRoOiA5MHB4OyB9Cgouc3dhbDItbG9hZGluZyAuc3dhbDItc3R5bGVkIHsgbWluLXdpZHRoOiAwOyB9Cgouc3dhbDItc3R5bGVkOm5vdChbZGlzYWJsZWRdKSB7IGN1cnNvcjogcG9pbnRlcjsgfQoKLnN3YWwyLXN0eWxlZC5zd2FsMi1jb25maXJtIHsgYm9yZGVyOiAwOyBib3JkZXItcmFkaXVzOiAwLjI1ZW07IGJhY2tncm91bmQ6IGluaXRpYWw7IGJhY2tncm91bmQtY29sb3I6ICMxZWUwYWM7IGNvbG9yOiAjZmZmOyB9Cgouc3dhbDItc3R5bGVkLnN3YWwyLWNvbmZpcm06Zm9jdXMgeyBvdXRsaW5lOiBub25lOyB9Cgouc3dhbDItc3R5bGVkLnN3YWwyLWNhbmNlbCB7IGJvcmRlcjogMDsgYm9yZGVyLXJhZGl1czogMC4yNWVtOyBiYWNrZ3JvdW5kOiBpbml0aWFsOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZTg1MzQ3OyBjb2xvcjogI2ZmZjsgfQoKLnN3YWwyLXN0eWxlZC5zd2FsMi1jYW5jZWw6Zm9jdXMgeyBvdXRsaW5lOiBub25lOyB9Cgouc3dhbDItc3R5bGVkOjotbW96LWZvY3VzLWlubmVyIHsgYm9yZGVyOiAwOyB9Cgouc3dhbDItZm9vdGVyIHsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IG1hcmdpbjogMS4yNWVtIDAgMDsgcGFkZGluZzogMWVtIDAgMDsgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlZWU7IGNvbG9yOiAjNWE3Y2E3OyBmb250LXNpemU6IDFlbTsgfQoKLnN3YWwyLXRpbWVyLXByb2dyZXNzLWJhciB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgYm90dG9tOiAwOyBsZWZ0OiAwOyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAwLjI1ZW07IGJhY2tncm91bmQ6IHJnYmEoMzEsIDQzLCA1OCwgMC4yKTsgfQoKLnN3YWwyLWltYWdlIHsgbWF4LXdpZHRoOiAxMDAlOyBtYXJnaW46IDAgYXV0byAxLjVyZW07IH0KCi5zd2FsMi1jbG9zZSB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgei1pbmRleDogMjsgLyogMTYxNyAqLyB0b3A6IDA7IHJpZ2h0OiAwOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgd2lkdGg6IDEuMmVtOyBoZWlnaHQ6IDEuMmVtOyBwYWRkaW5nOiAwOyBvdmVyZmxvdzogaGlkZGVuOyB0cmFuc2l0aW9uOiBjb2xvciAwLjFzIGVhc2Utb3V0OyBib3JkZXI6IG5vbmU7IGJvcmRlci1yYWRpdXM6IDA7IG91dGxpbmU6IGluaXRpYWw7IGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OyBjb2xvcjogI2Y3ZjhmYTsgZm9udC1mYW1pbHk6IHNlcmlmOyBmb250LXNpemU6IDIuNWVtOyBsaW5lLWhlaWdodDogMS4yOyBjdXJzb3I6IHBvaW50ZXI7IH0KCi5zd2FsMi1jbG9zZTpob3ZlciB7IHRyYW5zZm9ybTogbm9uZTsgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IGNvbG9yOiAjZTg1MzQ3OyB9Cgouc3dhbDItY2xvc2U6Oi1tb3otZm9jdXMtaW5uZXIgeyBib3JkZXI6IDA7IH0KCi5zd2FsMi1jb250ZW50IHsgei1pbmRleDogMTsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IG1hcmdpbjogMDsgcGFkZGluZzogMDsgY29sb3I6ICM4MDk0YWU7IGZvbnQtc2l6ZTogMC44NzVyZW07IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGxpbmUtaGVpZ2h0OiBub3JtYWw7IHRleHQtYWxpZ246IGNlbnRlcjsgd29yZC13cmFwOiBicmVhay13b3JkOyB9Cgouc3dhbDItaW5wdXQsIC5zd2FsMi1maWxlLCAuc3dhbDItdGV4dGFyZWEsIC5zd2FsMi1zZWxlY3QsIC5zd2FsMi1yYWRpbywgLnN3YWwyLWNoZWNrYm94IHsgbWFyZ2luOiAxcmVtIGF1dG87IH0KCi5zd2FsMi1pbnB1dCwgLnN3YWwyLWZpbGUsIC5zd2FsMi10ZXh0YXJlYSB7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IHdpZHRoOiAxMDAlOyB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4zcywgYm94LXNoYWRvdyAwLjNzOyBib3JkZXI6IDFweCBzb2xpZCAjZGJkZmVhOyBib3JkZXItcmFkaXVzOiA0cHg7IGJhY2tncm91bmQ6IGluaGVyaXQ7IGJveC1zaGFkb3c6IG5vbmU7IGNvbG9yOiBpbmhlcml0OyBmb250LXNpemU6IDAuODc1cmVtOyB9Cgouc3dhbDItaW5wdXQuc3dhbDItaW5wdXRlcnJvciwgLnN3YWwyLWZpbGUuc3dhbDItaW5wdXRlcnJvciwgLnN3YWwyLXRleHRhcmVhLnN3YWwyLWlucHV0ZXJyb3IgeyBib3JkZXItY29sb3I6ICNlODUzNDcgIWltcG9ydGFudDsgYm94LXNoYWRvdzogMCAwIDJweCAjZTg1MzQ3ICFpbXBvcnRhbnQ7IH0KCi5zd2FsMi1pbnB1dDpmb2N1cywgLnN3YWwyLWZpbGU6Zm9jdXMsIC5zd2FsMi10ZXh0YXJlYTpmb2N1cyB7IGJvcmRlcjogMXB4IHNvbGlkICMwOTcxZmU7IG91dGxpbmU6IG5vbmU7IGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDksIDExMywgMjU0LCAwLjEpOyB9Cgouc3dhbDItaW5wdXQ6OnBsYWNlaG9sZGVyLCAuc3dhbDItZmlsZTo6cGxhY2Vob2xkZXIsIC5zd2FsMi10ZXh0YXJlYTo6cGxhY2Vob2xkZXIgeyBjb2xvcjogI2Y3ZjhmYTsgfQoKLnN3YWwyLXJhbmdlIHsgbWFyZ2luOiAxcmVtIGF1dG87IGJhY2tncm91bmQ6ICNmZmY7IH0KCi5zd2FsMi1yYW5nZSBpbnB1dCB7IHdpZHRoOiA4MCU7IH0KCi5zd2FsMi1yYW5nZSBvdXRwdXQgeyB3aWR0aDogMjAlOyBjb2xvcjogaW5oZXJpdDsgZm9udC13ZWlnaHQ6IDYwMDsgdGV4dC1hbGlnbjogY2VudGVyOyB9Cgouc3dhbDItcmFuZ2UgaW5wdXQsIC5zd2FsMi1yYW5nZSBvdXRwdXQgeyBoZWlnaHQ6IDIuNzVyZW07IHBhZGRpbmc6IDA7IGZvbnQtc2l6ZTogMC44NzVyZW07IGxpbmUtaGVpZ2h0OiAyLjc1cmVtOyB9Cgouc3dhbDItaW5wdXQgeyBoZWlnaHQ6IDIuNzVyZW07IHBhZGRpbmc6IDAgMXJlbTsgfQoKLnN3YWwyLWlucHV0W3R5cGU9J251bWJlciddIHsgbWF4LXdpZHRoOiAxMGVtOyB9Cgouc3dhbDItZmlsZSB7IGJhY2tncm91bmQ6IGluaGVyaXQ7IGZvbnQtc2l6ZTogMC44NzVyZW07IH0KCi5zd2FsMi10ZXh0YXJlYSB7IGhlaWdodDogNi43NWVtOyBwYWRkaW5nOiAwLjc1ZW07IH0KCi5zd2FsMi1zZWxlY3QgeyBtaW4td2lkdGg6IDUwJTsgbWF4LXdpZHRoOiAxMDAlOyBwYWRkaW5nOiAuMzc1ZW0gLjYyNWVtOyBiYWNrZ3JvdW5kOiBpbmhlcml0OyBjb2xvcjogaW5oZXJpdDsgZm9udC1zaXplOiAwLjg3NXJlbTsgfQoKLnN3YWwyLXJhZGlvLCAuc3dhbDItY2hlY2tib3ggeyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgYmFja2dyb3VuZDogI2ZmZjsgY29sb3I6IGluaGVyaXQ7IH0KCi5zd2FsMi1yYWRpbyBsYWJlbCwgLnN3YWwyLWNoZWNrYm94IGxhYmVsIHsgbWFyZ2luOiAwIC42ZW07IGZvbnQtc2l6ZTogMC44NzVyZW07IH0KCi5zd2FsMi1yYWRpbyBpbnB1dCwgLnN3YWwyLWNoZWNrYm94IGlucHV0IHsgbWFyZ2luOiAwIC40ZW07IH0KCi5zd2FsMi12YWxpZGF0aW9uLW1lc3NhZ2UgeyBkaXNwbGF5OiBub25lOyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgcGFkZGluZzogMC42MjVlbTsgb3ZlcmZsb3c6IGhpZGRlbjsgYmFja2dyb3VuZDogd2hpdGU7IGNvbG9yOiAjNzI4ZmIzOyBmb250LXNpemU6IDFlbTsgZm9udC13ZWlnaHQ6IDMwMDsgfQoKLnN3YWwyLXZhbGlkYXRpb24tbWVzc2FnZTo6YmVmb3JlIHsgY29udGVudDogJyEnOyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHdpZHRoOiAxLjVlbTsgbWluLXdpZHRoOiAxLjVlbTsgaGVpZ2h0OiAxLjVlbTsgbWFyZ2luOiAwIC42MjVlbTsgYm9yZGVyLXJhZGl1czogNTAlOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZTg1MzQ3OyBjb2xvcjogI2ZmZjsgZm9udC13ZWlnaHQ6IDYwMDsgbGluZS1oZWlnaHQ6IDEuNWVtOyB0ZXh0LWFsaWduOiBjZW50ZXI7IH0KCi5zd2FsMi1pY29uIHsgcG9zaXRpb246IHJlbGF0aXZlOyBib3gtc2l6aW5nOiBjb250ZW50LWJveDsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IHdpZHRoOiA1ZW07IGhlaWdodDogNWVtOyBtYXJnaW46IC0wLjVyZW0gYXV0byAxLjVyZW07IGJvcmRlcjogLjI1ZW0gc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1yYWRpdXM6IDUwJTsgZm9udC1mYW1pbHk6IGluaGVyaXQ7IGxpbmUtaGVpZ2h0OiA1ZW07IGN1cnNvcjogZGVmYXVsdDsgdXNlci1zZWxlY3Q6IG5vbmU7IHRyYW5zZm9ybTogc2NhbGUoMC44KTsgfQoKLnN3YWwyLWljb24gLnN3YWwyLWljb24tY29udGVudCB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGZvbnQtc2l6ZTogMy43NWVtOyB9Cgouc3dhbDItaWNvbi5zd2FsMi1lcnJvciB7IGJvcmRlci1jb2xvcjogI2U4NTM0NzsgY29sb3I6ICNlODUzNDc7IH0KCi5zd2FsMi1pY29uLnN3YWwyLWVycm9yIC5zd2FsMi14LW1hcmsgeyBwb3NpdGlvbjogcmVsYXRpdmU7IGZsZXgtZ3JvdzogMTsgfQoKLnN3YWwyLWljb24uc3dhbDItZXJyb3IgW2NsYXNzXj0nc3dhbDIteC1tYXJrLWxpbmUnXSB7IGRpc3BsYXk6IGJsb2NrOyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMi4zMTI1ZW07IHdpZHRoOiAyLjkzNzVlbTsgaGVpZ2h0OiAuMzEyNWVtOyBib3JkZXItcmFkaXVzOiAuMTI1ZW07IGJhY2tncm91bmQtY29sb3I6ICNlODUzNDc7IH0KCi5zd2FsMi1pY29uLnN3YWwyLWVycm9yIFtjbGFzc149J3N3YWwyLXgtbWFyay1saW5lJ11bY2xhc3MkPSdsZWZ0J10geyBsZWZ0OiAxLjA2MjVlbTsgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpOyB9Cgouc3dhbDItaWNvbi5zd2FsMi1lcnJvciBbY2xhc3NePSdzd2FsMi14LW1hcmstbGluZSddW2NsYXNzJD0ncmlnaHQnXSB7IHJpZ2h0OiAxZW07IHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7IH0KCi5zd2FsMi1pY29uLnN3YWwyLWVycm9yLnN3YWwyLWljb24tc2hvdyB7IGFuaW1hdGlvbjogc3dhbDItYW5pbWF0ZS1lcnJvci1pY29uIC41czsgfQoKLnN3YWwyLWljb24uc3dhbDItZXJyb3Iuc3dhbDItaWNvbi1zaG93IC5zd2FsMi14LW1hcmsgeyBhbmltYXRpb246IHN3YWwyLWFuaW1hdGUtZXJyb3IteC1tYXJrIC41czsgfQoKLnN3YWwyLWljb24uc3dhbDItd2FybmluZyB7IGJvcmRlci1jb2xvcjogI2Y2YzYzMDsgY29sb3I6ICNmNGJkMGU7IH0KCi5zd2FsMi1pY29uLnN3YWwyLWluZm8geyBib3JkZXItY29sb3I6ICM1NWUzZjg7IGNvbG9yOiAjMDljMmRlOyB9Cgouc3dhbDItaWNvbi5zd2FsMi1xdWVzdGlvbiB7IGJvcmRlci1jb2xvcjogIzg3OThiNTsgY29sb3I6ICM1MjY0ODQ7IH0KCi5zd2FsMi1pY29uLnN3YWwyLXN1Y2Nlc3MgeyBib3JkZXItY29sb3I6ICMxZWUwYWM7IGNvbG9yOiAjMWVlMGFjOyB9Cgouc3dhbDItaWNvbi5zd2FsMi1zdWNjZXNzIFtjbGFzc149J3N3YWwyLXN1Y2Nlc3MtY2lyY3VsYXItbGluZSddIHsgcG9zaXRpb246IGFic29sdXRlOyB3aWR0aDogMy43NWVtOyBoZWlnaHQ6IDcuNWVtOyB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7IGJvcmRlci1yYWRpdXM6IDUwJTsgfQoKLnN3YWwyLWljb24uc3dhbDItc3VjY2VzcyBbY2xhc3NePSdzd2FsMi1zdWNjZXNzLWNpcmN1bGFyLWxpbmUnXVtjbGFzcyQ9J2xlZnQnXSB7IHRvcDogLS40Mzc1ZW07IGxlZnQ6IC0yLjA2MzVlbTsgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTsgdHJhbnNmb3JtLW9yaWdpbjogMy43NWVtIDMuNzVlbTsgYm9yZGVyLXJhZGl1czogNy41ZW0gMCAwIDcuNWVtOyB9Cgouc3dhbDItaWNvbi5zd2FsMi1zdWNjZXNzIFtjbGFzc149J3N3YWwyLXN1Y2Nlc3MtY2lyY3VsYXItbGluZSddW2NsYXNzJD0ncmlnaHQnXSB7IHRvcDogLS42ODc1ZW07IGxlZnQ6IDEuODc1ZW07IHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7IHRyYW5zZm9ybS1vcmlnaW46IDAgMy43NWVtOyBib3JkZXItcmFkaXVzOiAwIDcuNWVtIDcuNWVtIDA7IH0KCi5zd2FsMi1pY29uLnN3YWwyLXN1Y2Nlc3MgLnN3YWwyLXN1Y2Nlc3MtcmluZyB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgei1pbmRleDogMjsgdG9wOiAtLjI1ZW07IGxlZnQ6IC0uMjVlbTsgYm94LXNpemluZzogY29udGVudC1ib3g7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7IGJvcmRlcjogMC4yNWVtIHNvbGlkIHJnYmEoMzAsIDIyNCwgMTcyLCAwLjMpOyBib3JkZXItcmFkaXVzOiA1MCU7IH0KCi5zd2FsMi1pY29uLnN3YWwyLXN1Y2Nlc3MgLnN3YWwyLXN1Y2Nlc3MtZml4IHsgcG9zaXRpb246IGFic29sdXRlOyB6LWluZGV4OiAxOyB0b3A6IC41ZW07IGxlZnQ6IDEuNjI1ZW07IHdpZHRoOiAuNDM3NWVtOyBoZWlnaHQ6IDUuNjI1ZW07IHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7IH0KCi5zd2FsMi1pY29uLnN3YWwyLXN1Y2Nlc3MgW2NsYXNzXj0nc3dhbDItc3VjY2Vzcy1saW5lJ10geyBkaXNwbGF5OiBibG9jazsgcG9zaXRpb246IGFic29sdXRlOyB6LWluZGV4OiAyOyBoZWlnaHQ6IC4zMTI1ZW07IGJvcmRlci1yYWRpdXM6IC4xMjVlbTsgYmFja2dyb3VuZC1jb2xvcjogIzFlZTBhYzsgfQoKLnN3YWwyLWljb24uc3dhbDItc3VjY2VzcyBbY2xhc3NePSdzd2FsMi1zdWNjZXNzLWxpbmUnXVtjbGFzcyQ9J3RpcCddIHsgdG9wOiAyLjg3NWVtOyBsZWZ0OiAuODc1ZW07IHdpZHRoOiAxLjU2MjVlbTsgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpOyB9Cgouc3dhbDItaWNvbi5zd2FsMi1zdWNjZXNzIFtjbGFzc149J3N3YWwyLXN1Y2Nlc3MtbGluZSddW2NsYXNzJD0nbG9uZyddIHsgdG9wOiAyLjM3NWVtOyByaWdodDogLjVlbTsgd2lkdGg6IDIuOTM3NWVtOyB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpOyB9Cgouc3dhbDItaWNvbi5zd2FsMi1zdWNjZXNzLnN3YWwyLWljb24tc2hvdyAuc3dhbDItc3VjY2Vzcy1saW5lLXRpcCB7IGFuaW1hdGlvbjogc3dhbDItYW5pbWF0ZS1zdWNjZXNzLWxpbmUtdGlwIC43NXM7IH0KCi5zd2FsMi1pY29uLnN3YWwyLXN1Y2Nlc3Muc3dhbDItaWNvbi1zaG93IC5zd2FsMi1zdWNjZXNzLWxpbmUtbG9uZyB7IGFuaW1hdGlvbjogc3dhbDItYW5pbWF0ZS1zdWNjZXNzLWxpbmUtbG9uZyAuNzVzOyB9Cgouc3dhbDItaWNvbi5zd2FsMi1zdWNjZXNzLnN3YWwyLWljb24tc2hvdyAuc3dhbDItc3VjY2Vzcy1jaXJjdWxhci1saW5lLXJpZ2h0IHsgYW5pbWF0aW9uOiBzd2FsMi1yb3RhdGUtc3VjY2Vzcy1jaXJjdWxhci1saW5lIDQuMjVzIGVhc2UtaW47IH0KCi5zd2FsMi1wcm9ncmVzcy1zdGVwcyB7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IG1hcmdpbjogMCAwIDEuMjVlbTsgcGFkZGluZzogMDsgYmFja2dyb3VuZDogaW5oZXJpdDsgZm9udC13ZWlnaHQ6IDYwMDsgfQoKLnN3YWwyLXByb2dyZXNzLXN0ZXBzIGxpIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBwb3NpdGlvbjogcmVsYXRpdmU7IH0KCi5zd2FsMi1wcm9ncmVzcy1zdGVwcyAuc3dhbDItcHJvZ3Jlc3Mtc3RlcCB7IHotaW5kZXg6IDIwOyB3aWR0aDogMmVtOyBoZWlnaHQ6IDJlbTsgYm9yZGVyLXJhZGl1czogMmVtOyBiYWNrZ3JvdW5kOiAjMzA4NWQ2OyBjb2xvcjogI2ZmZjsgbGluZS1oZWlnaHQ6IDJlbTsgdGV4dC1hbGlnbjogY2VudGVyOyB9Cgouc3dhbDItcHJvZ3Jlc3Mtc3RlcHMgLnN3YWwyLXByb2dyZXNzLXN0ZXAuc3dhbDItYWN0aXZlLXByb2dyZXNzLXN0ZXAgeyBiYWNrZ3JvdW5kOiAjMzA4NWQ2OyB9Cgouc3dhbDItcHJvZ3Jlc3Mtc3RlcHMgLnN3YWwyLXByb2dyZXNzLXN0ZXAuc3dhbDItYWN0aXZlLXByb2dyZXNzLXN0ZXAgfiAuc3dhbDItcHJvZ3Jlc3Mtc3RlcCB7IGJhY2tncm91bmQ6ICNhZGQ4ZTY7IGNvbG9yOiAjZmZmOyB9Cgouc3dhbDItcHJvZ3Jlc3Mtc3RlcHMgLnN3YWwyLXByb2dyZXNzLXN0ZXAuc3dhbDItYWN0aXZlLXByb2dyZXNzLXN0ZXAgfiAuc3dhbDItcHJvZ3Jlc3Mtc3RlcC1saW5lIHsgYmFja2dyb3VuZDogI2FkZDhlNjsgfQoKLnN3YWwyLXByb2dyZXNzLXN0ZXBzIC5zd2FsMi1wcm9ncmVzcy1zdGVwLWxpbmUgeyB6LWluZGV4OiAxMDsgd2lkdGg6IDIuNWVtOyBoZWlnaHQ6IC40ZW07IG1hcmdpbjogMCAtMXB4OyBiYWNrZ3JvdW5kOiAjMzA4NWQ2OyB9CgpbY2xhc3NePSdzd2FsMiddIHsgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDsgfQoKLnN3YWwyLXNob3cgeyBhbmltYXRpb246IHN3YWwyLXNob3cgMC4zczsgfQoKLnN3YWwyLWhpZGUgeyBhbmltYXRpb246IHN3YWwyLWhpZGUgMC4xNXMgZm9yd2FyZHM7IH0KCi5zd2FsMi1ub2FuaW1hdGlvbiB7IHRyYW5zaXRpb246IG5vbmU7IH0KCi5zd2FsMi1zY3JvbGxiYXItbWVhc3VyZSB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAtOTk5OXB4OyB3aWR0aDogNTBweDsgaGVpZ2h0OiA1MHB4OyBvdmVyZmxvdzogc2Nyb2xsOyB9Cgouc3dhbDItcnRsIC5zd2FsMi1jbG9zZSB7IHJpZ2h0OiBhdXRvOyBsZWZ0OiAwOyB9Cgouc3dhbDItcnRsIC5zd2FsMi10aW1lci1wcm9ncmVzcy1iYXIgeyByaWdodDogMDsgbGVmdDogYXV0bzsgfQoKQHN1cHBvcnRzICgtbXMtYWNjZWxlcmF0b3I6IHRydWUpIHsgLnN3YWwyLXJhbmdlIGlucHV0IHsgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgfQogIC5zd2FsMi1yYW5nZSBvdXRwdXQgeyBkaXNwbGF5OiBub25lOyB9IH0KCkBtZWRpYSBhbGwgYW5kICgtbXMtaGlnaC1jb250cmFzdDogbm9uZSksICgtbXMtaGlnaC1jb250cmFzdDogYWN0aXZlKSB7IC5zd2FsMi1yYW5nZSBpbnB1dCB7IHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7IH0KICAuc3dhbDItcmFuZ2Ugb3V0cHV0IHsgZGlzcGxheTogbm9uZTsgfSB9CgpALW1vei1kb2N1bWVudCB1cmwtcHJlZml4KCkgeyAuc3dhbDItY2xvc2U6Zm9jdXMgeyBvdXRsaW5lOiAycHggc29saWQgcmdiYSg5LCAxMTMsIDI1NCwgMC40KTsgfSB9CgpAa2V5ZnJhbWVzIHN3YWwyLXRvYXN0LXNob3cgeyAwJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMC42MjVlbSkgcm90YXRlWigyZGVnKTsgfQogIDMzJSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSByb3RhdGVaKC0yZGVnKTsgfQogIDY2JSB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwLjMxMjVlbSkgcm90YXRlWigyZGVnKTsgfQogIDEwMCUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgcm90YXRlWigwZGVnKTsgfSB9CgpAa2V5ZnJhbWVzIHN3YWwyLXRvYXN0LWhpZGUgeyAxMDAlIHsgdHJhbnNmb3JtOiByb3RhdGVaKDFkZWcpOwogICAgb3BhY2l0eTogMDsgfSB9CgpAa2V5ZnJhbWVzIHN3YWwyLXRvYXN0LWFuaW1hdGUtc3VjY2Vzcy1saW5lLXRpcCB7IDAlIHsgdG9wOiAuNTYyNWVtOwogICAgbGVmdDogLjA2MjVlbTsKICAgIHdpZHRoOiAwOyB9CiAgNTQlIHsgdG9wOiAuMTI1ZW07CiAgICBsZWZ0OiAuMTI1ZW07CiAgICB3aWR0aDogMDsgfQogIDcwJSB7IHRvcDogLjYyNWVtOwogICAgbGVmdDogLS4yNWVtOwogICAgd2lkdGg6IDEuNjI1ZW07IH0KICA4NCUgeyB0b3A6IDEuMDYyNWVtOwogICAgbGVmdDogLjc1ZW07CiAgICB3aWR0aDogLjVlbTsgfQogIDEwMCUgeyB0b3A6IDEuMTI1ZW07CiAgICBsZWZ0OiAuMTg3NWVtOwogICAgd2lkdGg6IC43NWVtOyB9IH0KCkBrZXlmcmFtZXMgc3dhbDItdG9hc3QtYW5pbWF0ZS1zdWNjZXNzLWxpbmUtbG9uZyB7IDAlIHsgdG9wOiAxLjYyNWVtOwogICAgcmlnaHQ6IDEuMzc1ZW07CiAgICB3aWR0aDogMDsgfQogIDY1JSB7IHRvcDogMS4yNWVtOwogICAgcmlnaHQ6IC45Mzc1ZW07CiAgICB3aWR0aDogMDsgfQogIDg0JSB7IHRvcDogLjkzNzVlbTsKICAgIHJpZ2h0OiAwOwogICAgd2lkdGg6IDEuMTI1ZW07IH0KICAxMDAlIHsgdG9wOiAuOTM3NWVtOwogICAgcmlnaHQ6IC4xODc1ZW07CiAgICB3aWR0aDogMS4zNzVlbTsgfSB9CgpAa2V5ZnJhbWVzIHN3YWwyLXNob3cgeyAwJSB7IG9wYWNpdHk6IDA7CiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAyMHB4KTsgfQogIDQwJSB7IG9wYWNpdHk6IDE7IH0KICAxMDAlIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7IH0gfQoKQGtleWZyYW1lcyBzd2FsMi1oaWRlIHsgMCUgeyB0cmFuc2Zvcm06IHNjYWxlKDEpOwogICAgb3BhY2l0eTogMTsgfQogIDEwMCUgeyB0cmFuc2Zvcm06IHNjYWxlKDAuNyk7CiAgICBvcGFjaXR5OiAwOyB9IH0KCkBrZXlmcmFtZXMgc3dhbDItYW5pbWF0ZS1zdWNjZXNzLWxpbmUtdGlwIHsgMCUgeyB0b3A6IDEuMTg3NWVtOwogICAgbGVmdDogLjA2MjVlbTsKICAgIHdpZHRoOiAwOyB9CiAgNTQlIHsgdG9wOiAxLjA2MjVlbTsKICAgIGxlZnQ6IC4xMjVlbTsKICAgIHdpZHRoOiAwOyB9CiAgNzAlIHsgdG9wOiAyLjE4NzVlbTsKICAgIGxlZnQ6IC0uMzc1ZW07CiAgICB3aWR0aDogMy4xMjVlbTsgfQogIDg0JSB7IHRvcDogM2VtOwogICAgbGVmdDogMS4zMTI1ZW07CiAgICB3aWR0aDogMS4wNjI1ZW07IH0KICAxMDAlIHsgdG9wOiAyLjgxMjVlbTsKICAgIGxlZnQ6IC44NzVlbTsKICAgIHdpZHRoOiAxLjU2MjVlbTsgfSB9CgpAa2V5ZnJhbWVzIHN3YWwyLWFuaW1hdGUtc3VjY2Vzcy1saW5lLWxvbmcgeyAwJSB7IHRvcDogMy4zNzVlbTsKICAgIHJpZ2h0OiAyLjg3NWVtOwogICAgd2lkdGg6IDA7IH0KICA2NSUgeyB0b3A6IDMuMzc1ZW07CiAgICByaWdodDogMi44NzVlbTsKICAgIHdpZHRoOiAwOyB9CiAgODQlIHsgdG9wOiAyLjE4NzVlbTsKICAgIHJpZ2h0OiAwOwogICAgd2lkdGg6IDMuNDM3NWVtOyB9CiAgMTAwJSB7IHRvcDogMi4zNzVlbTsKICAgIHJpZ2h0OiAuNWVtOwogICAgd2lkdGg6IDIuOTM3NWVtOyB9IH0KCkBrZXlmcmFtZXMgc3dhbDItcm90YXRlLXN1Y2Nlc3MtY2lyY3VsYXItbGluZSB7IDAlIHsgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTsgfQogIDUlIHsgdHJhbnNmb3JtOiByb3RhdGUoLTQ1ZGVnKTsgfQogIDEyJSB7IHRyYW5zZm9ybTogcm90YXRlKC00MDVkZWcpOyB9CiAgMTAwJSB7IHRyYW5zZm9ybTogcm90YXRlKC00MDVkZWcpOyB9IH0KCkBrZXlmcmFtZXMgc3dhbDItYW5pbWF0ZS1lcnJvci14LW1hcmsgeyAwJSB7IG1hcmdpbi10b3A6IDEuNjI1ZW07CiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuNCk7CiAgICBvcGFjaXR5OiAwOyB9CiAgNTAlIHsgbWFyZ2luLXRvcDogMS42MjVlbTsKICAgIHRyYW5zZm9ybTogc2NhbGUoMC40KTsKICAgIG9wYWNpdHk6IDA7IH0KICA4MCUgeyBtYXJnaW4tdG9wOiAtLjM3NWVtOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxLjE1KTsgfQogIDEwMCUgeyBtYXJnaW4tdG9wOiAwOwogICAgdHJhbnNmb3JtOiBzY2FsZSgxKTsKICAgIG9wYWNpdHk6IDE7IH0gfQoKQGtleWZyYW1lcyBzd2FsMi1hbmltYXRlLWVycm9yLWljb24geyAwJSB7IHRyYW5zZm9ybTogc2NhbGUoMC44KSByb3RhdGVYKDEwMGRlZyk7CiAgICBvcGFjaXR5OiAwOyB9CiAgMTAwJSB7IHRyYW5zZm9ybTogc2NhbGUoMC44KSByb3RhdGVYKDBkZWcpOwogICAgb3BhY2l0eTogMTsgfSB9CgpAa2V5ZnJhbWVzIHN3YWwyLXJvdGF0ZS1sb2FkaW5nIHsgMCUgeyB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsgfQogIDEwMCUgeyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB9IH0KCmJvZHkuc3dhbDItc2hvd246bm90KC5zd2FsMi1uby1iYWNrZHJvcCk6bm90KC5zd2FsMi10b2FzdC1zaG93bikgeyBvdmVyZmxvdzogaGlkZGVuOyB9Cgpib2R5LnN3YWwyLWhlaWdodC1hdXRvIHsgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7IH0KCmJvZHkuc3dhbDItbm8tYmFja2Ryb3AgLnN3YWwyLWNvbnRhaW5lciB7IHRvcDogYXV0bzsgcmlnaHQ6IGF1dG87IGJvdHRvbTogYXV0bzsgbGVmdDogYXV0bzsgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAwLjYyNWVtICogMik7IGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7IH0KCmJvZHkuc3dhbDItbm8tYmFja2Ryb3AgLnN3YWwyLWNvbnRhaW5lciA+IC5zd2FsMi1tb2RhbCB7IGJveC1zaGFkb3c6IDAgMCAxMHB4IHJnYmEoMjgsIDQzLCA3MCwgMC40KTsgfQoKYm9keS5zd2FsMi1uby1iYWNrZHJvcCAuc3dhbDItY29udGFpbmVyLnN3YWwyLXRvcCB7IHRvcDogMDsgbGVmdDogNTAlOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7IH0KCmJvZHkuc3dhbDItbm8tYmFja2Ryb3AgLnN3YWwyLWNvbnRhaW5lci5zd2FsMi10b3Atc3RhcnQsIGJvZHkuc3dhbDItbm8tYmFja2Ryb3AgLnN3YWwyLWNvbnRhaW5lci5zd2FsMi10b3AtbGVmdCB7IHRvcDogMDsgbGVmdDogMDsgfQoKYm9keS5zd2FsMi1uby1iYWNrZHJvcCAuc3dhbDItY29udGFpbmVyLnN3YWwyLXRvcC1lbmQsIGJvZHkuc3dhbDItbm8tYmFja2Ryb3AgLnN3YWwyLWNvbnRhaW5lci5zd2FsMi10b3AtcmlnaHQgeyB0b3A6IDA7IHJpZ2h0OiAwOyB9Cgpib2R5LnN3YWwyLW5vLWJhY2tkcm9wIC5zd2FsMi1jb250YWluZXIuc3dhbDItY2VudGVyIHsgdG9wOiA1MCU7IGxlZnQ6IDUwJTsgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7IH0KCmJvZHkuc3dhbDItbm8tYmFja2Ryb3AgLnN3YWwyLWNvbnRhaW5lci5zd2FsMi1jZW50ZXItc3RhcnQsIGJvZHkuc3dhbDItbm8tYmFja2Ryb3AgLnN3YWwyLWNvbnRhaW5lci5zd2FsMi1jZW50ZXItbGVmdCB7IHRvcDogNTAlOyBsZWZ0OiAwOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7IH0KCmJvZHkuc3dhbDItbm8tYmFja2Ryb3AgLnN3YWwyLWNvbnRhaW5lci5zd2FsMi1jZW50ZXItZW5kLCBib2R5LnN3YWwyLW5vLWJhY2tkcm9wIC5zd2FsMi1jb250YWluZXIuc3dhbDItY2VudGVyLXJpZ2h0IHsgdG9wOiA1MCU7IHJpZ2h0OiAwOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7IH0KCmJvZHkuc3dhbDItbm8tYmFja2Ryb3AgLnN3YWwyLWNvbnRhaW5lci5zd2FsMi1ib3R0b20geyBib3R0b206IDA7IGxlZnQ6IDUwJTsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOyB9Cgpib2R5LnN3YWwyLW5vLWJhY2tkcm9wIC5zd2FsMi1jb250YWluZXIuc3dhbDItYm90dG9tLXN0YXJ0LCBib2R5LnN3YWwyLW5vLWJhY2tkcm9wIC5zd2FsMi1jb250YWluZXIuc3dhbDItYm90dG9tLWxlZnQgeyBib3R0b206IDA7IGxlZnQ6IDA7IH0KCmJvZHkuc3dhbDItbm8tYmFja2Ryb3AgLnN3YWwyLWNvbnRhaW5lci5zd2FsMi1ib3R0b20tZW5kLCBib2R5LnN3YWwyLW5vLWJhY2tkcm9wIC5zd2FsMi1jb250YWluZXIuc3dhbDItYm90dG9tLXJpZ2h0IHsgcmlnaHQ6IDA7IGJvdHRvbTogMDsgfQoKQG1lZGlhIHByaW50IHsgYm9keS5zd2FsMi1zaG93bjpub3QoLnN3YWwyLW5vLWJhY2tkcm9wKTpub3QoLnN3YWwyLXRvYXN0LXNob3duKSB7IG92ZXJmbG93LXk6IHNjcm9sbCAhaW1wb3J0YW50OyB9CiAgYm9keS5zd2FsMi1zaG93bjpub3QoLnN3YWwyLW5vLWJhY2tkcm9wKTpub3QoLnN3YWwyLXRvYXN0LXNob3duKSA+IFthcmlhLWhpZGRlbj0ndHJ1ZSddIHsgZGlzcGxheTogbm9uZTsgfQogIGJvZHkuc3dhbDItc2hvd246bm90KC5zd2FsMi1uby1iYWNrZHJvcCk6bm90KC5zd2FsMi10b2FzdC1zaG93bikgLnN3YWwyLWNvbnRhaW5lciB7IHBvc2l0aW9uOiBzdGF0aWMgIWltcG9ydGFudDsgfSB9Cgpib2R5LnN3YWwyLXRvYXN0LXNob3duIC5zd2FsMi1jb250YWluZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgfQoKYm9keS5zd2FsMi10b2FzdC1zaG93biAuc3dhbDItY29udGFpbmVyLnN3YWwyLXRvcCB7IHRvcDogMDsgcmlnaHQ6IGF1dG87IGJvdHRvbTogYXV0bzsgbGVmdDogNTAlOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7IH0KCmJvZHkuc3dhbDItdG9hc3Qtc2hvd24gLnN3YWwyLWNvbnRhaW5lci5zd2FsMi10b3AtZW5kLCBib2R5LnN3YWwyLXRvYXN0LXNob3duIC5zd2FsMi1jb250YWluZXIuc3dhbDItdG9wLXJpZ2h0IHsgdG9wOiAwOyBib3R0b206IGF1dG87IHJpZ2h0OiAwOyBsZWZ0OiBhdXRvOyB9Cgpib2R5LnN3YWwyLXRvYXN0LXNob3duIC5zd2FsMi1jb250YWluZXIuc3dhbDItdG9wLXN0YXJ0LCBib2R5LnN3YWwyLXRvYXN0LXNob3duIC5zd2FsMi1jb250YWluZXIuc3dhbDItdG9wLWxlZnQgeyB0b3A6IDA7IGJvdHRvbTogYXV0bzsgbGVmdDogMDsgcmlnaHQ6IGF1dG87IH0KCmJvZHkuc3dhbDItdG9hc3Qtc2hvd24gLnN3YWwyLWNvbnRhaW5lci5zd2FsMi1jZW50ZXItc3RhcnQsIGJvZHkuc3dhbDItdG9hc3Qtc2hvd24gLnN3YWwyLWNvbnRhaW5lci5zd2FsMi1jZW50ZXItbGVmdCB7IHRvcDogNTAlOyBib3R0b206IGF1dG87IHJpZ2h0OiBhdXRvOyBsZWZ0OiAwOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7IH0KCmJvZHkuc3dhbDItdG9hc3Qtc2hvd24gLnN3YWwyLWNvbnRhaW5lci5zd2FsMi1jZW50ZXIgeyB0b3A6IDUwJTsgcmlnaHQ6IGF1dG87IGJvdHRvbTogYXV0bzsgbGVmdDogNTAlOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsgfQoKYm9keS5zd2FsMi10b2FzdC1zaG93biAuc3dhbDItY29udGFpbmVyLnN3YWwyLWNlbnRlci1lbmQsIGJvZHkuc3dhbDItdG9hc3Qtc2hvd24gLnN3YWwyLWNvbnRhaW5lci5zd2FsMi1jZW50ZXItcmlnaHQgeyB0b3A6IDUwJTsgYm90dG9tOiBhdXRvOyByaWdodDogMDsgbGVmdDogYXV0bzsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOyB9Cgpib2R5LnN3YWwyLXRvYXN0LXNob3duIC5zd2FsMi1jb250YWluZXIuc3dhbDItYm90dG9tLXN0YXJ0LCBib2R5LnN3YWwyLXRvYXN0LXNob3duIC5zd2FsMi1jb250YWluZXIuc3dhbDItYm90dG9tLWxlZnQgeyB0b3A6IGF1dG87IGJvdHRvbTogMDsgcmlnaHQ6IGF1dG87IGxlZnQ6IDA7IH0KCmJvZHkuc3dhbDItdG9hc3Qtc2hvd24gLnN3YWwyLWNvbnRhaW5lci5zd2FsMi1ib3R0b20geyB0b3A6IGF1dG87IHJpZ2h0OiBhdXRvOyBib3R0b206IDA7IGxlZnQ6IDUwJTsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpOyB9Cgpib2R5LnN3YWwyLXRvYXN0LXNob3duIC5zd2FsMi1jb250YWluZXIuc3dhbDItYm90dG9tLWVuZCwgYm9keS5zd2FsMi10b2FzdC1zaG93biAuc3dhbDItY29udGFpbmVyLnN3YWwyLWJvdHRvbS1yaWdodCB7IHRvcDogYXV0bzsgYm90dG9tOiAwOyByaWdodDogMDsgbGVmdDogYXV0bzsgfQoKYm9keS5zd2FsMi10b2FzdC1jb2x1bW4gLnN3YWwyLXRvYXN0IHsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgYWxpZ24taXRlbXM6IHN0cmV0Y2g7IH0KCmJvZHkuc3dhbDItdG9hc3QtY29sdW1uIC5zd2FsMi10b2FzdCAuc3dhbDItYWN0aW9ucyB7IGZsZXg6IDE7IGFsaWduLXNlbGY6IHN0cmV0Y2g7IGhlaWdodDogMi4yZW07IG1hcmdpbi10b3A6IC4zMTI1ZW07IH0KCmJvZHkuc3dhbDItdG9hc3QtY29sdW1uIC5zd2FsMi10b2FzdCAuc3dhbDItbG9hZGluZyB7IGp1c3RpZnktY29udGVudDogY2VudGVyOyB9Cgpib2R5LnN3YWwyLXRvYXN0LWNvbHVtbiAuc3dhbDItdG9hc3QgLnN3YWwyLWlucHV0IHsgaGVpZ2h0OiAyZW07IG1hcmdpbjogLjMxMjVlbSBhdXRvOyBmb250LXNpemU6IDFlbTsgfQoKYm9keS5zd2FsMi10b2FzdC1jb2x1bW4gLnN3YWwyLXRvYXN0IC5zd2FsMi12YWxpZGF0aW9uLW1lc3NhZ2UgeyBmb250LXNpemU6IDFlbTsgfQoKdGFibGUuZGF0YVRhYmxlIHsgY2xlYXI6IGJvdGg7IG1heC13aWR0aDogbm9uZSAhaW1wb3J0YW50OyBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlICFpbXBvcnRhbnQ7IGJvcmRlci1zcGFjaW5nOiAwOyB9Cgp0YWJsZS5kYXRhVGFibGUgdGQuZGF0YVRhYmxlc19lbXB0eSwgdGFibGUuZGF0YVRhYmxlIHRoLmRhdGFUYWJsZXNfZW1wdHkgeyB0ZXh0LWFsaWduOiBjZW50ZXI7IH0KCnRhYmxlLmRhdGFUYWJsZS5ub3dyYXAgdGgsIHRhYmxlLmRhdGFUYWJsZS5ub3dyYXAgdGQgeyB3aGl0ZS1zcGFjZTogbm93cmFwOyB9CgpkaXYuZGF0YVRhYmxlc193cmFwcGVyIGRpdi5kYXRhVGFibGVzX2xlbmd0aCBsYWJlbCB7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IHRleHQtYWxpZ246IGxlZnQ7IHdoaXRlLXNwYWNlOiBub3dyYXA7IH0KCmRpdi5kYXRhVGFibGVzX3dyYXBwZXIgZGl2LmRhdGFUYWJsZXNfbGVuZ3RoIHNlbGVjdCB7IHdpZHRoOiBhdXRvOyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH0KCmRpdi5kYXRhVGFibGVzX3dyYXBwZXIgZGl2LmRhdGFUYWJsZXNfbGVuZ3RoIGxhYmVsIHsgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IH0KCmRpdi5kYXRhVGFibGVzX3dyYXBwZXIgZGl2LmRhdGFUYWJsZXNfbGVuZ3RoIHNwYW4geyBtYXJnaW4tbGVmdDogLjVyZW07IG1hcmdpbi1yaWdodDogLjVyZW07IH0KCmRpdi5kYXRhVGFibGVzX3dyYXBwZXIgZGl2LmRhdGFUYWJsZXNfZmlsdGVyIGxhYmVsIHsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfQoKZGl2LmRhdGFUYWJsZXNfd3JhcHBlciBkaXYuZGF0YVRhYmxlc19maWx0ZXIgaW5wdXQgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH0KCmRpdi5kYXRhVGFibGVzX3dyYXBwZXIgZGl2LmRhdGFUYWJsZXNfaW5mbyB7IHBhZGRpbmc6IC41cmVtIDA7IHdoaXRlLXNwYWNlOiBub3dyYXA7IGZvbnQtc2l6ZTogLjc1cmVtOyB9CgpkaXYuZGF0YVRhYmxlc193cmFwcGVyIGRpdi5kYXRhVGFibGVzX3BhZ2luYXRlIHsgbWFyZ2luOiAwOyB3aGl0ZS1zcGFjZTogbm93cmFwOyB0ZXh0LWFsaWduOiByaWdodDsgfQoKZGl2LmRhdGFUYWJsZXNfd3JhcHBlciBkaXYuZGF0YVRhYmxlc19wYWdpbmF0ZSB1bC5wYWdpbmF0aW9uIHsgbWFyZ2luOiAycHggMDsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IH0KCmRpdi5kYXRhVGFibGVzX3dyYXBwZXIgZGl2LmRhdGFUYWJsZXNfcHJvY2Vzc2luZyB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiA1MCU7IGxlZnQ6IDUwJTsgbWFyZ2luLWxlZnQ6IC0xMDBweDsgd2lkdGg6IDIwMHB4OyBtYXJnaW4tdG9wOiAtMjZweDsgdGV4dC1hbGlnbjogY2VudGVyOyBwYWRkaW5nOiAxZW0gMDsgfQoKZGl2LmRhdGFUYWJsZXNfd3JhcHBlciBsYWJlbCB7IG1hcmdpbi1ib3R0b206IDA7IH0KCnRhYmxlLmRhdGFUYWJsZSB0aGVhZCA+IHRyID4gdGguc29ydGluZ19hc2MsIHRhYmxlLmRhdGFUYWJsZSB0aGVhZCA+IHRyID4gdGguc29ydGluZ19kZXNjLCB0YWJsZS5kYXRhVGFibGUgdGhlYWQgPiB0ciA+IHRoLnNvcnRpbmcsIHRhYmxlLmRhdGFUYWJsZSB0aGVhZCA+IHRyID4gdGQuc29ydGluZ19hc2MsIHRhYmxlLmRhdGFUYWJsZSB0aGVhZCA+IHRyID4gdGQuc29ydGluZ19kZXNjLCB0YWJsZS5kYXRhVGFibGUgdGhlYWQgPiB0ciA+IHRkLnNvcnRpbmcgeyBwYWRkaW5nLXJpZ2h0OiAzMHB4OyB9Cgp0YWJsZS5kYXRhVGFibGUgdGhlYWQgPiB0ciA+IHRoOmFjdGl2ZSwgdGFibGUuZGF0YVRhYmxlIHRoZWFkID4gdHIgPiB0ZDphY3RpdmUgeyBvdXRsaW5lOiBub25lOyB9Cgp0YWJsZS5kYXRhVGFibGUgdGhlYWQgLnNvcnRpbmcsIHRhYmxlLmRhdGFUYWJsZSB0aGVhZCAuc29ydGluZ19hc2MsIHRhYmxlLmRhdGFUYWJsZSB0aGVhZCAuc29ydGluZ19kZXNjLCB0YWJsZS5kYXRhVGFibGUgdGhlYWQgLnNvcnRpbmdfYXNjX2Rpc2FibGVkLCB0YWJsZS5kYXRhVGFibGUgdGhlYWQgLnNvcnRpbmdfZGVzY19kaXNhYmxlZCB7IGN1cnNvcjogcG9pbnRlcjsgcG9zaXRpb246IHJlbGF0aXZlOyB9Cgp0YWJsZS5kYXRhVGFibGUgdGhlYWQgLnNvcnRpbmc6YmVmb3JlLCB0YWJsZS5kYXRhVGFibGUgdGhlYWQgLnNvcnRpbmc6YWZ0ZXIsIHRhYmxlLmRhdGFUYWJsZSB0aGVhZCAuc29ydGluZ19hc2M6YmVmb3JlLCB0YWJsZS5kYXRhVGFibGUgdGhlYWQgLnNvcnRpbmdfYXNjOmFmdGVyLCB0YWJsZS5kYXRhVGFibGUgdGhlYWQgLnNvcnRpbmdfZGVzYzpiZWZvcmUsIHRhYmxlLmRhdGFUYWJsZSB0aGVhZCAuc29ydGluZ19kZXNjOmFmdGVyLCB0YWJsZS5kYXRhVGFibGUgdGhlYWQgLnNvcnRpbmdfYXNjX2Rpc2FibGVkOmJlZm9yZSwgdGFibGUuZGF0YVRhYmxlIHRoZWFkIC5zb3J0aW5nX2FzY19kaXNhYmxlZDphZnRlciwgdGFibGUuZGF0YVRhYmxlIHRoZWFkIC5zb3J0aW5nX2Rlc2NfZGlzYWJsZWQ6YmVmb3JlLCB0YWJsZS5kYXRhVGFibGUgdGhlYWQgLnNvcnRpbmdfZGVzY19kaXNhYmxlZDphZnRlciB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiA1MCU7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsgZGlzcGxheTogYmxvY2s7IG9wYWNpdHk6IDAuMzsgfQoKdGFibGUuZGF0YVRhYmxlIHRoZWFkIC5zb3J0aW5nOmJlZm9yZSwgdGFibGUuZGF0YVRhYmxlIHRoZWFkIC5zb3J0aW5nX2FzYzpiZWZvcmUsIHRhYmxlLmRhdGFUYWJsZSB0aGVhZCAuc29ydGluZ19kZXNjOmJlZm9yZSwgdGFibGUuZGF0YVRhYmxlIHRoZWFkIC5zb3J0aW5nX2FzY19kaXNhYmxlZDpiZWZvcmUsIHRhYmxlLmRhdGFUYWJsZSB0aGVhZCAuc29ydGluZ19kZXNjX2Rpc2FibGVkOmJlZm9yZSB7IHJpZ2h0OiAxZW07IGNvbnRlbnQ6ICJcMjE5MSI7IH0KCnRhYmxlLmRhdGFUYWJsZSB0aGVhZCAuc29ydGluZzphZnRlciwgdGFibGUuZGF0YVRhYmxlIHRoZWFkIC5zb3J0aW5nX2FzYzphZnRlciwgdGFibGUuZGF0YVRhYmxlIHRoZWFkIC5zb3J0aW5nX2Rlc2M6YWZ0ZXIsIHRhYmxlLmRhdGFUYWJsZSB0aGVhZCAuc29ydGluZ19hc2NfZGlzYWJsZWQ6YWZ0ZXIsIHRhYmxlLmRhdGFUYWJsZSB0aGVhZCAuc29ydGluZ19kZXNjX2Rpc2FibGVkOmFmdGVyIHsgcmlnaHQ6IDAuNWVtOyBjb250ZW50OiAiXDIxOTMiOyB9Cgp0YWJsZS5kYXRhVGFibGUgdGhlYWQgLnNvcnRpbmdfYXNjOmJlZm9yZSwgdGFibGUuZGF0YVRhYmxlIHRoZWFkIC5zb3J0aW5nX2Rlc2M6YWZ0ZXIgeyBvcGFjaXR5OiAxOyB9Cgp0YWJsZS5kYXRhVGFibGUgdGhlYWQgLnNvcnRpbmdfYXNjX2Rpc2FibGVkOmJlZm9yZSwgdGFibGUuZGF0YVRhYmxlIHRoZWFkIC5zb3J0aW5nX2Rlc2NfZGlzYWJsZWQ6YWZ0ZXIgeyBvcGFjaXR5OiAwOyB9CgpkaXYuZGF0YVRhYmxlc19zY3JvbGxIZWFkIHRhYmxlLmRhdGFUYWJsZSB7IG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDsgfQoKZGl2LmRhdGFUYWJsZXNfc2Nyb2xsQm9keSB0YWJsZSB7IGJvcmRlci10b3A6IG5vbmU7IG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50OyB9CgpkaXYuZGF0YVRhYmxlc19zY3JvbGxCb2R5IHRhYmxlIHRoZWFkIC5zb3J0aW5nOmJlZm9yZSwgZGl2LmRhdGFUYWJsZXNfc2Nyb2xsQm9keSB0YWJsZSB0aGVhZCAuc29ydGluZ19hc2M6YmVmb3JlLCBkaXYuZGF0YVRhYmxlc19zY3JvbGxCb2R5IHRhYmxlIHRoZWFkIC5zb3J0aW5nX2Rlc2M6YmVmb3JlLCBkaXYuZGF0YVRhYmxlc19zY3JvbGxCb2R5IHRhYmxlIHRoZWFkIC5zb3J0aW5nOmFmdGVyLCBkaXYuZGF0YVRhYmxlc19zY3JvbGxCb2R5IHRhYmxlIHRoZWFkIC5zb3J0aW5nX2FzYzphZnRlciwgZGl2LmRhdGFUYWJsZXNfc2Nyb2xsQm9keSB0YWJsZSB0aGVhZCAuc29ydGluZ19kZXNjOmFmdGVyIHsgZGlzcGxheTogbm9uZTsgfQoKZGl2LmRhdGFUYWJsZXNfc2Nyb2xsQm9keSB0YWJsZSB0Ym9keSB0cjpmaXJzdC1jaGlsZCB0aCwgZGl2LmRhdGFUYWJsZXNfc2Nyb2xsQm9keSB0YWJsZSB0Ym9keSB0cjpmaXJzdC1jaGlsZCB0ZCB7IGJvcmRlci10b3A6IG5vbmU7IH0KCmRpdi5kYXRhVGFibGVzX3Njcm9sbEZvb3QgPiAuZGF0YVRhYmxlc19zY3JvbGxGb290SW5uZXIgeyBib3gtc2l6aW5nOiBjb250ZW50LWJveDsgfQoKZGl2LmRhdGFUYWJsZXNfc2Nyb2xsRm9vdCA+IC5kYXRhVGFibGVzX3Njcm9sbEZvb3RJbm5lciA+IHRhYmxlIHsgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50OyBib3JkZXItdG9wOiBub25lOyB9CgpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjdweCkgeyBkaXYuZGF0YVRhYmxlc193cmFwcGVyIGRpdi5kYXRhVGFibGVzX2luZm8sIGRpdi5kYXRhVGFibGVzX3dyYXBwZXIgZGl2LmRhdGFUYWJsZXNfcGFnaW5hdGUgeyB0ZXh0LWFsaWduOiBjZW50ZXI7IH0gfQoKdGFibGUuZGF0YVRhYmxlLnRhYmxlLXNtID4gdGhlYWQgPiB0ciA+IHRoIHsgcGFkZGluZy1yaWdodDogMjBweDsgfQoKdGFibGUuZGF0YVRhYmxlLnRhYmxlLXNtIC5zb3J0aW5nOmJlZm9yZSwgdGFibGUuZGF0YVRhYmxlLnRhYmxlLXNtIC5zb3J0aW5nX2FzYzpiZWZvcmUsIHRhYmxlLmRhdGFUYWJsZS50YWJsZS1zbSAuc29ydGluZ19kZXNjOmJlZm9yZSB7IHRvcDogNXB4OyByaWdodDogMC44NWVtOyB9Cgp0YWJsZS5kYXRhVGFibGUudGFibGUtc20gLnNvcnRpbmc6YWZ0ZXIsIHRhYmxlLmRhdGFUYWJsZS50YWJsZS1zbSAuc29ydGluZ19hc2M6YWZ0ZXIsIHRhYmxlLmRhdGFUYWJsZS50YWJsZS1zbSAuc29ydGluZ19kZXNjOmFmdGVyIHsgdG9wOiA1cHg7IH0KCnRhYmxlLnRhYmxlLWJvcmRlcmVkLmRhdGFUYWJsZSB0aCwgdGFibGUudGFibGUtYm9yZGVyZWQuZGF0YVRhYmxlIHRkIHsgYm9yZGVyLWxlZnQtd2lkdGg6IDA7IH0KCnRhYmxlLnRhYmxlLWJvcmRlcmVkLmRhdGFUYWJsZSB0aDpsYXN0LWNoaWxkLCB0YWJsZS50YWJsZS1ib3JkZXJlZC5kYXRhVGFibGUgdGg6bGFzdC1jaGlsZCwgdGFibGUudGFibGUtYm9yZGVyZWQuZGF0YVRhYmxlIHRkOmxhc3QtY2hpbGQsIHRhYmxlLnRhYmxlLWJvcmRlcmVkLmRhdGFUYWJsZSB0ZDpsYXN0LWNoaWxkIHsgYm9yZGVyLXJpZ2h0LXdpZHRoOiAwOyB9Cgp0YWJsZS50YWJsZS1ib3JkZXJlZC5kYXRhVGFibGUgdGJvZHkgdGgsIHRhYmxlLnRhYmxlLWJvcmRlcmVkLmRhdGFUYWJsZSB0Ym9keSB0ZCB7IGJvcmRlci1ib3R0b20td2lkdGg6IDA7IH0KCmRpdi5kYXRhVGFibGVzX3Njcm9sbEhlYWQgdGFibGUudGFibGUtYm9yZGVyZWQgeyBib3JkZXItYm90dG9tLXdpZHRoOiAwOyB9CgpkaXYudGFibGUtcmVzcG9uc2l2ZSA+IGRpdi5kYXRhVGFibGVzX3dyYXBwZXIgPiBkaXYucm93IHsgbWFyZ2luOiAwOyB9CgpkaXYudGFibGUtcmVzcG9uc2l2ZSA+IGRpdi5kYXRhVGFibGVzX3dyYXBwZXIgPiBkaXYucm93ID4gZGl2W2NsYXNzXj0iY29sLSJdOmZpcnN0LWNoaWxkIHsgcGFkZGluZy1sZWZ0OiAwOyB9CgpkaXYudGFibGUtcmVzcG9uc2l2ZSA+IGRpdi5kYXRhVGFibGVzX3dyYXBwZXIgPiBkaXYucm93ID4gZGl2W2NsYXNzXj0iY29sLSJdOmxhc3QtY2hpbGQgeyBwYWRkaW5nLXJpZ2h0OiAwOyB9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsgZGl2LmRhdGFUYWJsZXNfd3JhcHBlciBkaXYuZGF0YVRhYmxlc19wYWdpbmF0ZSB1bC5wYWdpbmF0aW9uIHsganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OyB9IH0KCnRhYmxlLmRhdGFUYWJsZS5kdHItaW5saW5lLmNvbGxhcHNlZCA+IHRib2R5ID4gdHI6bm90KC5jaGlsZCkgPiB0ZDpmaXJzdC1jaGlsZCwgdGFibGUuZGF0YVRhYmxlLmR0ci1pbmxpbmUuY29sbGFwc2VkID4gdGJvZHkgPiB0cjpub3QoLmNoaWxkKSA+IHRoOmZpcnN0LWNoaWxkIHsgY3Vyc29yOiBwb2ludGVyOyB9Cgp0YWJsZS5kYXRhVGFibGUuZHRyLWlubGluZS5jb2xsYXBzZWQgPiB0Ym9keSA+IHRyOm5vdCguY2hpbGQpID4gdGQ6Zmlyc3QtY2hpbGQ6YmVmb3JlLCB0YWJsZS5kYXRhVGFibGUuZHRyLWlubGluZS5jb2xsYXBzZWQgPiB0Ym9keSA+IHRyOm5vdCguY2hpbGQpID4gdGg6Zmlyc3QtY2hpbGQ6YmVmb3JlIHsgY29udGVudDogIu6tgyI7IGZvbnQtZmFtaWx5OiAiTmlvaWNvbiI7IG1hcmdpbi1yaWdodDogMC40cmVtOyB9Cgp0YWJsZS5kYXRhVGFibGUuZHRyLWlubGluZS5jb2xsYXBzZWQgPiB0Ym9keSA+IHRyLnBhcmVudCA+IHRkOmZpcnN0LWNoaWxkOmJlZm9yZSwgdGFibGUuZGF0YVRhYmxlLmR0ci1pbmxpbmUuY29sbGFwc2VkID4gdGJvZHkgPiB0ci5wYXJlbnQgPiB0aDpmaXJzdC1jaGlsZDpiZWZvcmUgeyBjb250ZW50OiAi7qu5IjsgfQoKQG1lZGlhIChtYXgtd2lkdGg6IDU3NXB4KSB7IGRpdi5kYXRhVGFibGVzX3dyYXBwZXIgZGl2LmRhdGFUYWJsZXNfcGFnaW5hdGUgdWwucGFnaW5hdGlvbiB7IGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsgfQogIGRpdi5kYXRhVGFibGVzX3dyYXBwZXIgZGl2LmRhdGFUYWJsZXNfcGFnaW5hdGUgdWwucGFnaW5hdGlvbiBsaTpub3QoLnByZXZpb3VzKTpub3QoLm5leHQpIHsgZGlzcGxheTogbm9uZTsgfQogIGRpdi5kYXRhVGFibGVzX3dyYXBwZXIgZGl2LmRhdGFUYWJsZXNfcGFnaW5hdGUgdWwucGFnaW5hdGlvbiAucGFnZS1saW5rIHsgcGFkZGluZy1sZWZ0OiAxcmVtOyBwYWRkaW5nLXJpZ2h0OiAxcmVtOyB9CiAgZGl2LmRhdGFUYWJsZXNfd3JhcHBlciBkaXYuZGF0YVRhYmxlc19pbmZvIHsgdGV4dC1hbGlnbjogcmlnaHQgIWltcG9ydGFudDsgfSB9CgouZGF0YVRhYmxlIHRkOmZvY3VzIHsgb3V0bGluZTogbm9uZTsgfQoKLmRhdGF0YWJsZS13cmFwIHsgYm9yZGVyOiAxcHggc29saWQgI2U1ZTlmMjsgYm9yZGVyLXJhZGl1czogNHB4OyB9CgouZHRyLWRldGFpbHMgeyBwYWRkaW5nLWxlZnQ6IDAuMjVyZW07IH0KCi5kdHItZGV0YWlscyAuZHRyLXRpdGxlIHsgZm9udC13ZWlnaHQ6IDcwMDsgbWFyZ2luLXJpZ2h0OiAwLjI1cmVtOyB9CgoubmstdGItY29sLWNoZWNrLCAubmstdGItY29sLXRvb2xzIHsgcG9pbnRlci1ldmVudHM6IG5vbmU7IH0KCi5uay10Yi1jb2wtY2hlY2sgPiAqLCAubmstdGItY29sLXRvb2xzID4gKiB7IHBvaW50ZXItZXZlbnRzOiBhdXRvOyB9CgoubmstdGItY29sLWNoZWNrOmJlZm9yZSwgLm5rLXRiLWNvbC1jaGVjazphZnRlciwgLm5rLXRiLWNvbC10b29sczpiZWZvcmUsIC5uay10Yi1jb2wtdG9vbHM6YWZ0ZXIgeyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0KCi5uay10Yi1jb2wtY2hlY2sgeyBwYWRkaW5nLXJpZ2h0OiAuNXJlbSAhaW1wb3J0YW50OyB9CgouanF2bWFwLWxhYmVsIHsgcG9zaXRpb246IGFic29sdXRlOyBkaXNwbGF5OiBub25lOyBib3JkZXItcmFkaXVzOiA0cHg7IGJhY2tncm91bmQ6IHJnYmEoMzEsIDQzLCA1OCwgMC45KTsgY29sb3I6ICNmZmY7IHBhZGRpbmc6IC4yNXJlbSAuNzVyZW07IHBvaW50ZXItZXZlbnRzOiBub25lOyBmb250LXNpemU6IDEycHg7IH0KCi5qcXZtYXAtcGluIHsgcG9pbnRlci1ldmVudHM6IG5vbmU7IH0KCi5qcXZtYXAtem9vbWluLCAuanF2bWFwLXpvb21vdXQgeyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDEwcHg7IGJvcmRlci1yYWRpdXM6IDNweDsgYmFja2dyb3VuZDogcmdiYSgzMSwgNDMsIDU4LCAwLjkpOyBwYWRkaW5nOiAuMTI1cmVtOyBjb2xvcjogI2ZmZjsgd2lkdGg6IDFyZW07IGhlaWdodDogMXJlbTsgY3Vyc29yOiBwb2ludGVyOyBsaW5lLWhlaWdodDogLjc1cmVtOyB0ZXh0LWFsaWduOiBjZW50ZXI7IH0KCi5qcXZtYXAtem9vbWluIHsgdG9wOiAxMHB4OyB9CgouanF2bWFwLXpvb21vdXQgeyB0b3A6IDMwcHg7IH0KCi5qcXZtYXAtcmVnaW9uIHsgY3Vyc29yOiBwb2ludGVyOyB9CgouanF2bWFwLWFqYXhfcmVzcG9uc2UgeyB3aWR0aDogMTAwJTsgaGVpZ2h0OiA1MDBweDsgfQoKLnRhZ2lmeSB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyBmbGV4LXdyYXA6IHdyYXA7IGJvcmRlcjogMXB4IHNvbGlkICNlNWU5ZjI7IHBhZGRpbmc6IDNweDsgbGluZS1oZWlnaHQ6IDEuMTsgY3Vyc29yOiB0ZXh0OyBvdXRsaW5lOiBub25lOyBwb3NpdGlvbjogcmVsYXRpdmU7IHRyYW5zaXRpb246IC4xczsgZm9udC1zaXplOiAxNHB4OyB9CgpAa2V5ZnJhbWVzIHRhZ3MtLWJ1bXAgeyAzMCUgeyB0cmFuc2Zvcm06IHNjYWxlKDEuMik7IH0gfQoKQGtleWZyYW1lcyByb3RhdGVMb2FkZXIgeyB0byB7IHRyYW5zZm9ybTogcm90YXRlKDF0dXJuKTsgfSB9CgpAbWVkaWEgKG1heC13aWR0aDogNTc2cHgpIHsgLnRhZ2lmeSB7IHBhZGRpbmc6IDRweDsgZm9udC1zaXplOiAxMnB4OyB9IH0KCi50YWdpZnk6aG92ZXIgeyBib3JkZXItY29sb3I6ICNkYmRmZWE7IH0KCi50YWdpZnkudGFnaWZ5LS1mb2N1cyB7IHRyYW5zaXRpb246IDBzOyBib3JkZXItY29sb3I6ICMwOTcxZmU7IH0KCi50YWdpZnlbcmVhZG9ubHldIHsgY3Vyc29yOiBkZWZhdWx0OyB9CgoudGFnaWZ5W3JlYWRvbmx5XSA+IC50YWdpZnlfX2lucHV0IHsgdmlzaWJpbGl0eTogaGlkZGVuOyB3aWR0aDogMDsgbWFyZ2luOiA1cHggMDsgfQoKLnRhZ2lmeVtyZWFkb25seV0gLnRhZ2lmeV9fdGFnX19yZW1vdmVCdG4geyBkaXNwbGF5OiBub25lOyB9CgoudGFnaWZ5W3JlYWRvbmx5XSAudGFnaWZ5X190YWcgPiBkaXYgeyBwYWRkaW5nOiAwLjI1cmVtIDAuNXJlbSAwLjI1cmVtIDAuNjc1cmVtOyB9CgoudGFnaWZ5W3JlYWRvbmx5XSAudGFnaWZ5X190YWcgPiBkaXY6OmJlZm9yZSB7IGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg0NWRlZywgdmFyKC0tdGFnLWJnKSAyNSUsIHRyYW5zcGFyZW50IDI1JSwgdHJhbnNwYXJlbnQgNTAlLCB2YXIoLS10YWctYmcpIDUwJSwgdmFyKC0tdGFnLWJnKSA3NSUsIHRyYW5zcGFyZW50IDc1JSwgdHJhbnNwYXJlbnQpIDAvNXB4IDVweDsgYm94LXNoYWRvdzogbm9uZTsgZmlsdGVyOiBicmlnaHRuZXNzKDAuOTUpOyB9CgoudGFnaWZ5LS1sb2FkaW5nIC50YWdpZnlfX2lucHV0OjpiZWZvcmUgeyBjb250ZW50OiBub25lOyB9CgoudGFnaWZ5LS1sb2FkaW5nIC50YWdpZnlfX2lucHV0OjphZnRlciB7IGNvbnRlbnQ6ICcnOyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyBtYXJnaW46IC0ycHggMCAtMnB4IC41ZW07IG9wYWNpdHk6IDE7IHdpZHRoOiAuN2VtOyBoZWlnaHQ6IC43ZW07IGJvcmRlcjogM3B4IHNvbGlkOyBib3JkZXItY29sb3I6ICNFRUUgI0JCQiAjODg4IHRyYW5zcGFyZW50OyBib3JkZXItcmFkaXVzOiA1MCU7IGFuaW1hdGlvbjogcm90YXRlTG9hZGVyIC40cyBpbmZpbml0ZSBsaW5lYXI7IH0KCi50YWdpZnktLWxvYWRpbmcgLnRhZ2lmeV9faW5wdXQ6ZW1wdHk6OmFmdGVyIHsgbWFyZ2luLWxlZnQ6IDA7IH0KCi50YWdpZnkgKyBpbnB1dCwgLnRhZ2lmeSArIHRleHRhcmVhIHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9CgoudGFnaWZ5X190YWcgeyBkaXNwbGF5OiBpbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgbWFyZ2luOiAycHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgei1pbmRleDogMTsgb3V0bGluZTogbm9uZTsgY3Vyc29yOiBkZWZhdWx0OyB0cmFuc2l0aW9uOiAuMTNzIGVhc2Utb3V0OyB9CgoudGFnaWZ5X190YWcgPiBkaXYgeyB2ZXJ0aWNhbC1hbGlnbjogdG9wOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXgtd2lkdGg6IDEwMCU7IHBhZGRpbmc6IDAuMjVyZW0gMC41cmVtIDAuMjVyZW0gMC42NzVyZW07IGNvbG9yOiAjNTI2NDg0OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgYm9yZGVyLXJhZGl1czogMTVweDsgdXNlci1zZWxlY3Q6IG5vbmU7IHRyYW5zaXRpb246IC4xM3MgZWFzZS1vdXQ7IH0KCi50YWdpZnlfX3RhZyA+IGRpdiA+ICogeyB3aGl0ZS1zcGFjZTogbm93cmFwOyBvdmVyZmxvdzogaGlkZGVuOyB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB2ZXJ0aWNhbC1hbGlnbjogdG9wOyBtaW4td2lkdGg6IHZhcigtLXRhZy0tbWluLXdpZHRoKTsgbWF4LXdpZHRoOiB2YXIoLS10YWctLW1heC13aWR0aCk7IHRyYW5zaXRpb246IC44cyBlYXNlLCAuMXMgY29sb3I7IH0KCi50YWdpZnlfX3RhZyA+IGRpdiA+ICpbY29udGVudGVkaXRhYmxlXSB7IG91dGxpbmU6IG5vbmU7IHVzZXItc2VsZWN0OiB0ZXh0OyBjdXJzb3I6IHRleHQ7IG1hcmdpbjogLTJweDsgcGFkZGluZzogMnB4OyBtYXgtd2lkdGg6IDM1MHB4OyB9CgoudGFnaWZ5X190YWcgPiBkaXY6OmJlZm9yZSB7IGNvbnRlbnQ6ICcnOyBwb3NpdGlvbjogYWJzb2x1dGU7IGJvcmRlci1yYWRpdXM6IGluaGVyaXQ7IGxlZnQ6IDA7IHRvcDogMDsgcmlnaHQ6IDA7IGJvdHRvbTogMDsgei1pbmRleDogLTE7IHBvaW50ZXItZXZlbnRzOiBub25lOyB0cmFuc2l0aW9uOiAxMjBtcyBlYXNlOyBib3gtc2hhZG93OiAwIDAgMCAxLjFlbSAjZmZmIGluc2V0OyBib3JkZXI6IDFweCBzb2xpZCAjZTVlOWYyOyB9CgoudGFnaWZ5X190YWc6aG92ZXI6bm90KFtyZWFkb25seV0pIGRpdjo6YmVmb3JlIHsgdG9wOiAwOyByaWdodDogMDsgYm90dG9tOiAwOyBsZWZ0OiAwOyBib3gtc2hhZG93OiAwIDAgMCAxLjFlbSAjZjVmNmZhIGluc2V0OyB9CgoudGFnaWZ5X190YWcudGFnaWZ5LS1ub0FuaW0gPiBkaXY6OmJlZm9yZSB7IGFuaW1hdGlvbjogbm9uZTsgfQoKLnRhZ2lmeV9fdGFnLnRhZ2lmeS0taGlkZSB7IHdpZHRoOiAwICFpbXBvcnRhbnQ7IHBhZGRpbmctbGVmdDogMDsgcGFkZGluZy1yaWdodDogMDsgbWFyZ2luLWxlZnQ6IDA7IG1hcmdpbi1yaWdodDogMDsgb3BhY2l0eTogMDsgdHJhbnNmb3JtOiBzY2FsZSgwKTsgdHJhbnNpdGlvbjogLjNzOyBwb2ludGVyLWV2ZW50czogbm9uZTsgfQoKLnRhZ2lmeV9fdGFnLnRhZ2lmeS0tbWFyayBkaXY6OmJlZm9yZSB7IGFuaW1hdGlvbjogbm9uZTsgfQoKLnRhZ2lmeV9fdGFnLnRhZ2lmeS0tbm90QWxsb3dlZDpub3QoLnRhZ2lmeV9fdGFnLS1lZGl0YWJsZSkgZGl2ID4gc3BhbiB7IG9wYWNpdHk6IC41OyB9CgoudGFnaWZ5X190YWcudGFnaWZ5LS1ub3RBbGxvd2VkOm5vdCgudGFnaWZ5X190YWctLWVkaXRhYmxlKSBkaXY6OmJlZm9yZSB7IGJveC1zaGFkb3c6IDAgMCAwIDEuMWVtIHJnYmEoMTE0LCAxMjgsIDE0NiwgMC41KSBpbnNldCAhaW1wb3J0YW50OyB0cmFuc2l0aW9uOiAuMnM7IH0KCi50YWdpZnlfX3RhZ1tyZWFkb25seV0gLnRhZ2lmeV9fdGFnX19yZW1vdmVCdG4geyBkaXNwbGF5OiBub25lOyB9CgoudGFnaWZ5X190YWdbcmVhZG9ubHldID4gZGl2OjpiZWZvcmUgeyBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoNDVkZWcsIHZhcigtLXRhZy1iZykgMjUlLCB0cmFuc3BhcmVudCAyNSUsIHRyYW5zcGFyZW50IDUwJSwgdmFyKC0tdGFnLWJnKSA1MCUsIHZhcigtLXRhZy1iZykgNzUlLCB0cmFuc3BhcmVudCA3NSUsIHRyYW5zcGFyZW50KSAwLzVweCA1cHg7IGJveC1zaGFkb3c6IG5vbmU7IGZpbHRlcjogYnJpZ2h0bmVzcygwLjk1KTsgYm9yZGVyLWNvbG9yOiBub25lOyB9CgoudGFnaWZ5X190YWctLWVkaXRhYmxlID4gZGl2IHsgY29sb3I6ICM1MjY0ODQ7IGNvbG9yOiB2YXIoLS10YWctdGV4dC1jb2xvci0tZWRpdCk7IH0KCi50YWdpZnlfX3RhZy0tZWRpdGFibGUgPiBkaXY6OmJlZm9yZSB7IGJveC1zaGFkb3c6IDAgMCAwIDJweCAjZjVmNmZhIGluc2V0ICFpbXBvcnRhbnQ7IH0KCi50YWdpZnlfX3RhZy0tZWRpdGFibGUudGFnaWZ5LS1pbnZhbGlkID4gZGl2OjpiZWZvcmUgeyBib3gtc2hhZG93OiAwIDAgMCAycHggIzcyODA5MiBpbnNldCAhaW1wb3J0YW50OyB9CgoudGFnaWZ5X190YWdfX3JlbW92ZUJ0biB7IG9yZGVyOiA1OyBkaXNwbGF5OiBpbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGJvcmRlci1yYWRpdXM6IDUwcHg7IGN1cnNvcjogcG9pbnRlcjsgZm9udDogMTRweCBTZXJpZjsgYmFja2dyb3VuZDogbm9uZTsgY29sb3I6ICMzNjRhNjM7IHdpZHRoOiAxNHB4OyBoZWlnaHQ6IDE0cHg7IG1hcmdpbi1yaWdodDogNC42NjY2N3B4OyBtYXJnaW4tbGVmdDogLTQuNjY2NjdweDsgdHJhbnNpdGlvbjogLjJzIGVhc2Utb3V0OyB9CgoudGFnaWZ5X190YWdfX3JlbW92ZUJ0bjo6YWZ0ZXIgeyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbnRlbnQ6ICJcMDBENyI7IHRvcDogMXB4OyB9CgoudGFnaWZ5X190YWdfX3JlbW92ZUJ0bjpob3ZlciB7IGNvbG9yOiB3aGl0ZTsgYmFja2dyb3VuZDogIzYwNmM3YzsgfQoKLnRhZ2lmeV9fdGFnX19yZW1vdmVCdG46aG92ZXIgKyBkaXY6OmJlZm9yZSB7IHRyYW5zaXRpb246IC4yczsgfQoKLnRhZ2lmeTpub3QoLnRhZ2lmeS0tbWl4KSAudGFnaWZ5X19pbnB1dCBiciB7IGRpc3BsYXk6IG5vbmU7IH0KCi50YWdpZnk6bm90KC50YWdpZnktLW1peCkgLnRhZ2lmeV9faW5wdXQgKiB7IGRpc3BsYXk6IGlubGluZTsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfQoKLnRhZ2lmeV9faW5wdXQgeyBkaXNwbGF5OiBibG9jazsgbWluLXdpZHRoOiA2MHB4OyBtYXJnaW46IDJweDsgcGFkZGluZzogMC4yNXJlbSAwLjVyZW0gMC4yNXJlbSAwLjY3NXJlbTsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IHBvc2l0aW9uOiByZWxhdGl2ZTsgd2hpdGUtc3BhY2U6IHByZS1saW5lOyAvKiBpbiAibWl4IG1vZGUiIHRoZSB0YWdzIGFyZSBpbnNpZGUgdGhlICJpbnB1dCIgZWxlbWVudCAqLyB9CgoudGFnaWZ5X19pbnB1dDo6YmVmb3JlIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogMDsgfQoKLnRhZ2lmeV9faW5wdXQ6ZW1wdHkgeyBkaXNwbGF5OiBmbGV4OyB9CgoudGFnaWZ5X19pbnB1dDplbXB0eTo6YmVmb3JlIHsgdHJhbnNpdGlvbjogLjJzIGVhc2Utb3V0OyBvcGFjaXR5OiAwLjc7IHRyYW5zZm9ybTogbm9uZTsgd2lkdGg6IGF1dG87IH0KCi50YWdpZnlfX2lucHV0OmZvY3VzIHsgb3V0bGluZTogbm9uZTsgfQoKLnRhZ2lmeV9faW5wdXQ6Zm9jdXM6OmJlZm9yZSB7IHRyYW5zaXRpb246IC4ycyBlYXNlLW91dDsgb3BhY2l0eTogMDsgdHJhbnNmb3JtOiB0cmFuc2xhdGV4KDZweCk7IH0KCkBzdXBwb3J0cyAoLW1vei1hcHBlYXJhbmNlOiBub25lKSB7IC50YWdpZnlfX2lucHV0OmZvY3VzOjpiZWZvcmUgeyBkaXNwbGF5OiBub25lOyB9IH0KCi50YWdpZnlfX2lucHV0OmZvY3VzOmVtcHR5OjpiZWZvcmUgeyB0cmFuc2l0aW9uOiAuMnMgZWFzZS1vdXQ7IG9wYWNpdHk6IDAuNTsgdHJhbnNmb3JtOiBub25lOyB9CgpAc3VwcG9ydHMgKC1tb3otYXBwZWFyYW5jZTogbm9uZSkgeyAudGFnaWZ5X19pbnB1dDpmb2N1czplbXB0eTo6YmVmb3JlIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB9IH0KCi50YWdpZnlfX2lucHV0OjpiZWZvcmUgeyBjb250ZW50OiBhdHRyKGRhdGEtcGxhY2Vob2xkZXIpOyBsaW5lLWhlaWdodDogMS44OyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgei1pbmRleDogMTsgY29sb3I6ICM1MjY0ODQ7IHdoaXRlLXNwYWNlOiBub3dyYXA7IHBvaW50ZXItZXZlbnRzOiBub25lOyBvcGFjaXR5OiAwOyB9CgoudGFnaWZ5LS1taXggLnRhZ2lmeV9faW5wdXQ6OmJlZm9yZSB7IHBvc2l0aW9uOiBzdGF0aWM7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyB9CgpAc3VwcG9ydHMgKC1tb3otYXBwZWFyYW5jZTogbm9uZSkgeyAudGFnaWZ5X19pbnB1dDo6YmVmb3JlIHsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IHBvc2l0aW9uOiByZWxhdGl2ZTsgfSB9CgoudGFnaWZ5X19pbnB1dDo6YWZ0ZXIgeyBjb250ZW50OiBhdHRyKGRhdGEtc3VnZ2VzdCk7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgd2hpdGUtc3BhY2U6IHByZTsgLyogYWxsb3dzIHNwYWNlcyBhdCB0aGUgYmVnaW5uaW5nICovIGNvbG9yOiAjNTI2NDg0OyBvcGFjaXR5OiAuMzsgcG9pbnRlci1ldmVudHM6IG5vbmU7IG1heC13aWR0aDogMTAwcHg7IH0KCi50YWdpZnlfX2lucHV0IC50YWdpZnlfX3RhZyB7IG1hcmdpbjogMDsgfQoKLnRhZ2lmeV9faW5wdXQgLnRhZ2lmeV9fdGFnID4gZGl2IHsgcGFkZGluZy10b3A6IDA7IHBhZGRpbmctYm90dG9tOiAwOyB9CgoudGFnaWZ5LS1taXggeyBsaW5lLWhlaWdodDogMS43OyB9CgoudGFnaWZ5LS1taXggLnRhZ2lmeV9faW5wdXQgeyBwYWRkaW5nOiA1cHg7IG1hcmdpbjogMDsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IH0KCi50YWdpZnktLW1peCAudGFnaWZ5X19pbnB1dDo6YWZ0ZXIgeyBjb250ZW50OiBub25lOyB9CgoudGFnaWZ5LS1zZWxlY3Q6OmFmdGVyIHsgY29udGVudDogJz4nOyBvcGFjaXR5OiAuNTsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDUwJTsgcmlnaHQ6IDA7IGJvdHRvbTogMDsgZm9udDogMTZweCBtb25vc3BhY2U7IGxpbmUtaGVpZ2h0OiA4cHg7IGhlaWdodDogOHB4OyBwb2ludGVyLWV2ZW50czogbm9uZTsgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTE1MCUsIC01MCUpIHNjYWxlWCgxLjIpIHJvdGF0ZSg5MGRlZyk7IHRyYW5zaXRpb246IC4ycyBlYXNlLWluLW91dDsgfQoKLnRhZ2lmeS0tc2VsZWN0W2FyaWEtZXhwYW5kZWQ9dHJ1ZV06OmFmdGVyIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTE1MCUsIC01MCUpIHJvdGF0ZSgyNzBkZWcpIHNjYWxlWSgxLjIpOyB9CgoudGFnaWZ5LS1zZWxlY3QgLnRhZ2lmeV9fdGFnIHsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IHJpZ2h0OiAxLjhlbTsgYm90dG9tOiAwOyB9CgoudGFnaWZ5LS1zZWxlY3QgLnRhZ2lmeV9fdGFnIGRpdiB7IGRpc3BsYXk6IG5vbmU7IH0KCi50YWdpZnktLXNlbGVjdCAudGFnaWZ5X19pbnB1dCB7IHdpZHRoOiAxMDAlOyB9CgoudGFnaWZ5LS1pbnZhbGlkIHsgYm9yZGVyLWNvbG9yOiAjNzI4MDkyOyB9CgoudGFnaWZ5X19kcm9wZG93biB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgei1pbmRleDogOTk5OTsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDRweCk7IG92ZXJmbG93OiBoaWRkZW47IGJveC1zaGFkb3c6IDAgMXB4IDRweCByZ2JhKDU0LCA3NCwgOTksIDAuMSk7IGJvcmRlci1yYWRpdXM6IDRweDsgfQoKLnRhZ2lmeV9fZHJvcGRvd25bcGxhY2VtZW50PSJ0b3AiXSB7IG1hcmdpbi10b3A6IDA7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNHB4KTsgYm94LXNoYWRvdzogMCAtMXB4IDRweCByZ2JhKDU0LCA3NCwgOTksIDAuMSk7IH0KCi50YWdpZnlfX2Ryb3Bkb3duLS10ZXh0IHsgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoOSwgMTEzLCAyNTQsIDAuMSk7IGZvbnQtc2l6ZTogLjllbTsgfQoKLnRhZ2lmeV9fZHJvcGRvd24tLXRleHQgLnRhZ2lmeV9fZHJvcGRvd25fX3dyYXBwZXIgeyBib3JkZXItd2lkdGg6IDFweDsgfQoKLnRhZ2lmeV9fZHJvcGRvd25fX3dyYXBwZXIgeyBtYXgtaGVpZ2h0OiAzMDBweDsgb3ZlcmZsb3c6IGhpZGRlbjsgYmFja2dyb3VuZDogd2hpdGU7IGJvcmRlcjogMXB4IHNvbGlkICNlNWU5ZjI7IHBhZGRpbmc6IC4yNXJlbTsgYm9yZGVyLXJhZGl1czogNHB4OyB0cmFuc2l0aW9uOiAwLjI1cyBjdWJpYy1iZXppZXIoMCwgMSwgMC41LCAxKTsgfQoKLnRhZ2lmeV9fZHJvcGRvd25fX3dyYXBwZXI6aG92ZXIgeyBvdmVyZmxvdzogYXV0bzsgfQoKLnRhZ2lmeV9fZHJvcGRvd24tLWluaXRpYWwgLnRhZ2lmeV9fZHJvcGRvd25fX3dyYXBwZXIgeyBtYXgtaGVpZ2h0OiAyMHB4OyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFlbSk7IH0KCi50YWdpZnlfX2Ryb3Bkb3duLS1pbml0aWFsW3BsYWNlbWVudD0idG9wIl0gLnRhZ2lmeV9fZHJvcGRvd25fX3dyYXBwZXIgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMmVtKTsgfQoKLnRhZ2lmeV9fZHJvcGRvd25fX2l0ZW0geyBib3gtc2l6aW5nOiBpbmhlcml0OyBwYWRkaW5nOiAwLjI1cmVtIDAuNXJlbSAwLjI1cmVtIDAuNjc1cmVtOyBtYXJnaW46IDFweDsgY3Vyc29yOiBwb2ludGVyOyBib3JkZXItcmFkaXVzOiAycHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgb3V0bGluZTogbm9uZTsgfQoKLnRhZ2lmeV9fZHJvcGRvd25fX2l0ZW0tLWFjdGl2ZSB7IGJhY2tncm91bmQ6ICMwOTcxZmU7IGNvbG9yOiB3aGl0ZTsgfQoKLnRhZ2lmeV9fZHJvcGRvd25fX2l0ZW06YWN0aXZlIHsgZmlsdGVyOiBicmlnaHRuZXNzKDEwNSUpOyB9CgoudGFnaWZ5X19kcm9wZG93bl9fY3JlYXRlVGFnQnRuIHsgd2lkdGg6IDEwMCU7IGJhY2tncm91bmQ6ICMwOTcxZmU7IGNvbG9yOiB3aGl0ZTsgYm9yZGVyOiBub25lOyB9CgovKiBjbGFzc2VzIGF0dGFjaGVkIHRvIDxib2R5PiAqLwouZmMtbm90LWFsbG93ZWQsIC5mYy1ub3QtYWxsb3dlZCAuZmMtZXZlbnQgeyAvKiBvdmVycmlkZSBldmVudHMnIGN1c3RvbSBjdXJzb3JzICovIGN1cnNvcjogbm90LWFsbG93ZWQ7IH0KCi5mYy11bnNlbGVjdGFibGUgeyAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyAtbW96LXVzZXItc2VsZWN0OiBub25lOyAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7IHVzZXItc2VsZWN0OiBub25lOyAtd2Via2l0LXRvdWNoLWNhbGxvdXQ6IG5vbmU7IC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKTsgfQoKLmZjIHsgLyogbGF5b3V0IG9mIGltbWVkaWF0ZSBjaGlsZHJlbiAqLyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBmb250LXNpemU6IDFlbTsgfQoKLmZjLCAuZmMgKiwgLmZjICo6YmVmb3JlLCAuZmMgKjphZnRlciB7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH0KCi5mYyB0YWJsZSB7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7IGJvcmRlci1zcGFjaW5nOiAwOyBmb250LXNpemU6IDFlbTsgLyogbm9ybWFsaXplIGNyb3NzLWJyb3dzZXIgKi8gfQoKLmZjIHRoIHsgdGV4dC1hbGlnbjogY2VudGVyOyB9CgouZmMgdGgsIC5mYyB0ZCB7IHZlcnRpY2FsLWFsaWduOiB0b3A7IHBhZGRpbmc6IDA7IH0KCi5mYyAudGFibGUtYm9yZGVyZWQgeyBib3JkZXItcmFkaXVzOiA0cHg7IH0KCi5mYyAudGFibGUtYm9yZGVyZWQgdGhlYWQgdGgsIC5mYyAudGFibGUtYm9yZGVyZWQgdGhlYWQgdGQgeyBib3JkZXItYm90dG9tLXdpZHRoOiAwOyB9CgouZmMgLnRhYmxlLWJvcmRlcmVkIHRoZWFkID4gdHIgPiB0aCwgLmZjIC50YWJsZS1ib3JkZXJlZCB0aGVhZCA+IHRyID4gdGQgeyBib3JkZXItYm90dG9tLXdpZHRoOiAxcHg7IH0KCi5mYyB0aGVhZCB0cjpmaXJzdC1jaGlsZCB0ZDpmaXJzdC1jaGlsZCwgLmZjIHRoZWFkIHRyOmZpcnN0LWNoaWxkIHRoOmZpcnN0LWNoaWxkIHsgYm9yZGVyLXJhZGl1czogNHB4IDAgMCAwOyB9CgouZmMgdGhlYWQgdHI6Zmlyc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZCwgLmZjIHRoZWFkIHRyOmZpcnN0LWNoaWxkIHRoOmxhc3QtY2hpbGQgeyBib3JkZXItcmFkaXVzOiAwIDRweCAwIDA7IH0KCi5mYyB0Ym9keSB0cjpsYXN0LWNoaWxkIHRkOmZpcnN0LWNoaWxkLCAuZmMgdGJvZHkgdHI6bGFzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZCB7IGJvcmRlci1yYWRpdXM6IDAgMCAwIDRweDsgfQoKLmZjIHRib2R5IHRyOmxhc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZCwgLmZjIHRib2R5IHRyOmxhc3QtY2hpbGQgdGg6bGFzdC1jaGlsZCB7IGJvcmRlci1yYWRpdXM6IDAgMCA0cHggMDsgfQoKLmZjIGFbZGF0YS1uYXZsaW5rXSB7IGN1cnNvcjogcG9pbnRlcjsgfQoKLmZjIGFbZGF0YS1uYXZsaW5rXTpob3ZlciB7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9CgouZmMtZGlyZWN0aW9uLWx0ciB7IGRpcmVjdGlvbjogbHRyOyB0ZXh0LWFsaWduOiBsZWZ0OyB9CgouZmMtZGlyZWN0aW9uLXJ0bCB7IGRpcmVjdGlvbjogcnRsOyB0ZXh0LWFsaWduOiByaWdodDsgfQoKLmZjLXRoZW1lLXN0YW5kYXJkIHRkLCAuZmMtdGhlbWUtc3RhbmRhcmQgdGggeyBib3JkZXI6IDFweCBzb2xpZCAjZGRkOyBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1mYy1ib3JkZXItY29sb3IsICNkZGQpOyB9CgovKiBmb3IgRkYsIHdoaWNoIGRvZXNuJ3QgZXhwYW5kIGEgMTAwJSBkaXYgd2l0aGluIGEgdGFibGUgY2VsbC4gdXNlIGFic29sdXRlIHBvc2l0aW9uaW5nICovCi8qIGlubmVyLXdyYXBwZXJzIGFyZSByZXNwb25zaWJsZSBmb3IgYmVpbmcgYWJzb2x1dGUgKi8KLyogVE9ETzogYmVzdCBwbGFjZSBmb3IgdGhpcz8gKi8KLmZjLWxpcXVpZC1oYWNrIHRkLCAuZmMtbGlxdWlkLWhhY2sgdGggeyBwb3NpdGlvbjogcmVsYXRpdmU7IH0KCkBmb250LWZhY2UgeyBmb250LWZhbWlseTogJ2ZjaWNvbnMnOyBzcmM6IHVybCgiZGF0YTphcHBsaWNhdGlvbi94LWZvbnQtdHRmO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LEFBRUFBQUFMQUlBQUF3QXdUMU12TWc4U0JmQUFBQUM4QUFBQVlHTnRZWEFYVnRLTkFBQUJIQUFBQUZSbllYTndBQUFBRUFBQUFYQUFBQUFJWjJ4NVpnWXlkeElBQUFGNEFBQUZOR2hsWVdRVUo3Y0lBQUFHckFBQUFEWm9hR1ZoQjIwRHpBQUFCdVFBQUFBa2FHMTBlQ0lBQmhRQUFBY0lBQUFBTEd4dlkyRUQ0QVU2QUFBSE5BQUFBQmh0WVhod0FBOEFqQUFBQjB3QUFBQWdibUZ0WlhzcjY5MEFBQWRzQUFBQmhuQnZjM1FBQXdBQUFBQUk5QUFBQUNBQUF3UEFBWkFBQlFBQUFwa0N6QUFBQUk4Q21RTE1BQUFCNndBekFRa0FBQUFBQUFBQUFBQUFBQUFBQUFBQkVBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBRHBCZ1BBLzhBQVFBUEFBRUFBQUFBQkFBQUFBQUFBQUFBQUFBQWdBQUFBQUFBREFBQUFBd0FBQUJ3QUFRQURBQUFBSEFBREFBRUFBQUFjQUFRQU9BQUFBQW9BQ0FBQ0FBSUFBUUFnNlFiLy9mLy9BQUFBQUFBZzZRRC8vZi8vQUFILzR4Y0VBQU1BQVFBQUFBQUFBQUFBQUFBQUFRQUIvLzhBRHdBQkFBQUFBQUFBQUFBQUFnQUFOemtCQUFBQUFBRUFBQUFBQUFBQUFBQUNBQUEzT1FFQUFBQUFBUUFBQUFBQUFBQUFBQUlBQURjNUFRQUFBQUFCQVdJQWpRS2VBc2tBRXdBQUpTYzNOalFuSmlJSEFRWVVGd0VXTWpjMk5DY0NudUxpRFEwTUpBei9BQTBOQVFBTUpBd05EY25pNGd3akRRd00vd0FOSXd6L0FBME5EQ01OQUFBQUFRRmlBSTBDbmdMSkFCTUFBQ1VCTmpRbkFTWWlCd1lVSHdFSEJoUVhGakkzQVo0QkFBME4vd0FNSkF3TkRlTGlEUTBNSkF5TkFRQU1JdzBCQUF3TURTTU00dUlOSXd3TkRRQUFBQUlBNGdDM0F4NENuZ0FUQUNjQUFDVW5OelkwSnlZaUR3RUdGQjhCRmpJM05qUW5JU2MzTmpRbkppSVBBUVlVSHdFV01qYzJOQ2NCODdlM0RRME1JdzNWRFEzVkRTTU1EUTBCSzdlM0RRME1KQXpWRFEzVkRDUU1EUTN6dUxjTUpBd05EZFVOSXd6V0RBd05Jd3k0dHd3a0RBME4xUTBqRE5ZTURBMGpEQUFBQWdEaUFMY0RIZ0tlQUJNQUp3QUFKVGMyTkM4QkppSUhCaFFmQVFjR0ZCY1dNamNoTnpZMEx3RW1JZ2NHRkI4QkJ3WVVGeFl5TndKSjFRME4xUTBqREEwTnQ3Y05EUXdqRGY3VjFRME4xUXdrREEwTnQ3Y05EUXdrRExmV0RDTU4xUTBORENRTXQ3Z01JdzBNRE5ZTUl3M1ZEUTBNSkF5M3VBd2pEUXdNQUFBREFGVUFBQU9yQTFVQU13Qm9BSGNBQUJNaUJnY09BUWNPQVFjT0FSVVJGQllYSGdFWEhnRVhIZ0V6SVRJMk56NEJOejRCTno0Qk5SRTBKaWN1QVNjdUFTY3VBU01GSVRJV0Z4NEJGeDRCRng0QkZSRVVCZ2NPQVFjT0FRY09BU01oSWlZbkxnRW5MZ0VuTGdFMUVUUTJOejRCTno0Qk56NEJNeE1oTWpZMU5DWWpJU0lHRlJRV005VU5HQXdMRlFrSkRnVUZCUVVGQlE0SkNSVUxEQmdOQWxZTkdBd0xGUWtKRGdVRkJRVUZCUTRKQ1JVTERCZ04vYW9DVmdRSUJBUUhBd01GQVFJQkFRSUJCUU1EQndRRUNBVDlxZ1FJQkFRSEF3TUZBUUlCQVFJQkJRTURCd1FFQ0FTQUFWWVJHUmtSL3FvUkdSa1JBMVVGQkFVT0NRa1ZEQXNaRGYyckRSa0xEQlVKQ0E0RkJRVUZCUVVPQ1FnVkRBc1pEUUpWRFJrTERCVUpDUTRGQkFWVkFnRUNCUU1DQndRRUNBWDlxd1FKQXdRSEF3TUZBUUlDQWdJQkJRTURCd1FEQ1FRQ1ZRVUlCQVFIQWdNRkFnRUMvb0FaRWhFWkdSRVNHUUFBQUFBREFGVUFBQU9yQTFVQU13Qm9BSWtBQUJNaUJnY09BUWNPQVFjT0FSVVJGQllYSGdFWEhnRVhIZ0V6SVRJMk56NEJOejRCTno0Qk5SRTBKaWN1QVNjdUFTY3VBU01GSVRJV0Z4NEJGeDRCRng0QkZSRVVCZ2NPQVFjT0FRY09BU01oSWlZbkxnRW5MZ0VuTGdFMUVUUTJOejRCTno0Qk56NEJNeE16RlJRV016STJQUUV6TWpZMU5DWXJBVFUwSmlNaUJoMEJJeUlHRlJRV005VU5HQXdMRlFrSkRnVUZCUVVGQlE0SkNSVUxEQmdOQWxZTkdBd0xGUWtKRGdVRkJRVUZCUTRKQ1JVTERCZ04vYW9DVmdRSUJBUUhBd01GQVFJQkFRSUJCUU1EQndRRUNBVDlxZ1FJQkFRSEF3TUZBUUlCQVFJQkJRTURCd1FFQ0FTQWdCa1NFaG1BRVJrWkVZQVpFaElaZ0JFWkdSRURWUVVFQlE0SkNSVU1DeGtOL2FzTkdRc01GUWtJRGdVRkJRVUZCUTRKQ0JVTUN4a05BbFVOR1FzTUZRa0pEZ1VFQlZVQ0FRSUZBd0lIQkFRSUJmMnJCQWtEQkFjREF3VUJBZ0lDQWdFRkF3TUhCQU1KQkFKVkJRZ0VCQWNDQXdVQ0FRTCtnSUFTR1JrU2dCa1NFUm1BRWhrWkVvQVpFUklaQUFBQkFPSUFqUU1lQXNrQUlBQUFFeGNIQmhRWEZqSS9BUmNXTWpjMk5DOEJOelkwSnlZaUR3RW5KaUlIQmhRWDR1TGlEUTBNSkF6aTRnd2tEQTBONHVJTkRRd2tET0xpRENRTURRMENqZUxpRFNNTURRM2g0UTBORENNTjR1SU1JdzBNRE9MaURBd05Jd3dBQUFBQkFBQUFBUUFBYTVuMHkxOFBQUFVBQ3dRQUFBQUFBTml2T1ZzQUFBQUEySzg1V3dBQUFBQURxd05WQUFBQUNBQUNBQUFBQUFBQUFBRUFBQVBBLzhBQUFBUUFBQUFBQUFPckFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBTEJBQUFBQUFBQUFBQUFBQUFBZ0FBQUFRQUFXSUVBQUZpQkFBQTRnUUFBT0lFQUFCVkJBQUFWUVFBQU9JQUFBQUFBQW9BRkFBZUFFUUFhZ0NxQU9vQm5nSmtBcG9BQVFBQUFBc0FpZ0FEQUFBQUFBQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQTRBcmdBQkFBQUFBQUFCQUFjQUFBQUJBQUFBQUFBQ0FBY0FZQUFCQUFBQUFBQURBQWNBTmdBQkFBQUFBQUFFQUFjQWRRQUJBQUFBQUFBRkFBc0FGUUFCQUFBQUFBQUdBQWNBU3dBQkFBQUFBQUFLQUJvQWlnQURBQUVFQ1FBQkFBNEFCd0FEQUFFRUNRQUNBQTRBWndBREFBRUVDUUFEQUE0QVBRQURBQUVFQ1FBRUFBNEFmQUFEQUFFRUNRQUZBQllBSUFBREFBRUVDUUFHQUE0QVVnQURBQUVFQ1FBS0FEUUFwR1pqYVdOdmJuTUFaZ0JqQUdrQVl3QnZBRzRBYzFabGNuTnBiMjRnTVM0d0FGWUFaUUJ5QUhNQWFRQnZBRzRBSUFBeEFDNEFNR1pqYVdOdmJuTUFaZ0JqQUdrQVl3QnZBRzRBYzJaamFXTnZibk1BWmdCakFHa0FZd0J2QUc0QWMxSmxaM1ZzWVhJQVVnQmxBR2NBZFFCc0FHRUFjbVpqYVdOdmJuTUFaZ0JqQUdrQVl3QnZBRzRBYzBadmJuUWdaMlZ1WlhKaGRHVmtJR0o1SUVsamIwMXZiMjR1QUVZQWJ3QnVBSFFBSUFCbkFHVUFiZ0JsQUhJQVlRQjBBR1VBWkFBZ0FHSUFlUUFnQUVrQVl3QnZBRTBBYndCdkFHNEFMZ0FBQUFNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQT0iKSBmb3JtYXQoInRydWV0eXBlIik7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGZvbnQtc3R5bGU6IG5vcm1hbDsgfQoKLmZjLWljb24sIC5mYSB7IC8qIGFkZGVkIGZvciBmYyAqLyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHdpZHRoOiAxZW07IGhlaWdodDogMWVtOyB0ZXh0LWFsaWduOiBjZW50ZXI7IC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7IC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7IC1tcy11c2VyLXNlbGVjdDogbm9uZTsgdXNlci1zZWxlY3Q6IG5vbmU7IC8qIHVzZSAhaW1wb3J0YW50IHRvIHByZXZlbnQgaXNzdWVzIHdpdGggYnJvd3NlciBleHRlbnNpb25zIHRoYXQgY2hhbmdlIGZvbnRzICovIGZvbnQtZmFtaWx5OiAnZmNpY29ucycgIWltcG9ydGFudDsgc3BlYWs6IG5vbmU7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgZm9udC12YXJpYW50OiBub3JtYWw7IHRleHQtdHJhbnNmb3JtOiBub25lOyBsaW5lLWhlaWdodDogMTsgLyogQmV0dGVyIEZvbnQgUmVuZGVyaW5nID09PT09PT09PT09ICovIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOyAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlOyB9CgouZmMtaWNvbi1jaGV2cm9uLWxlZnQ6YmVmb3JlLCAuZmEtY2hldnJvbi1sZWZ0OmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTkwMCI7IH0KCi5mYy1pY29uLWNoZXZyb24tcmlnaHQ6YmVmb3JlLCAuZmEtY2hldnJvbi1yaWdodDpiZWZvcmUgeyBjb250ZW50OiAiXGU5MDEiOyB9CgouZmMtaWNvbi1jaGV2cm9ucy1sZWZ0OmJlZm9yZSwgLmZhLWNoZXZyb25zLWxlZnQ6YmVmb3JlIHsgY29udGVudDogIlxlOTAyIjsgfQoKLmZjLWljb24tY2hldnJvbnMtcmlnaHQ6YmVmb3JlLCAuZmEtY2hldnJvbnMtcmlnaHQ6YmVmb3JlIHsgY29udGVudDogIlxlOTAzIjsgfQoKLmZjLWljb24tbWludXMtc3F1YXJlOmJlZm9yZSwgLmZhLW1pbnVzLXNxdWFyZTpiZWZvcmUgeyBjb250ZW50OiAiXGU5MDQiOyB9CgouZmMtaWNvbi1wbHVzLXNxdWFyZTpiZWZvcmUsIC5mYS1wbHVzLXNxdWFyZTpiZWZvcmUgeyBjb250ZW50OiAiXGU5MDUiOyB9CgouZmMtaWNvbi14OmJlZm9yZSwgLmZhLXRpbWVzOmJlZm9yZSB7IGNvbnRlbnQ6ICJcZTkwNiI7IH0KCi8qCkxvdHMgdGFrZW4gZnJvbSBGbGF0bHkgKE1JVCk6IGh0dHBzOi8vYm9vdHN3YXRjaC5jb20vNC9mbGF0bHkvYm9vdHN0cmFwLmNzcwoKVGhlc2Ugc3R5bGVzIG9ubHkgYXBwbHkgd2hlbiB0aGUgc3RhbmRhcmQtdGhlbWUgaXMgYWN0aXZhdGVkLgpXaGVuIGl0J3MgTk9UIGFjdGl2YXRlZCwgdGhlIGZjLWJ1dHRvbiBjbGFzc2VzIHdvbid0IGV2ZW4gYmUgaW4gdGhlIERPTS4KKi8KLmZjIHsgLyogcmVzZXQgKi8gfQoKLmZjIC5mYy1idXR0b24geyBib3JkZXItcmFkaXVzOiAwOyBvdmVyZmxvdzogdmlzaWJsZTsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IG1hcmdpbjogMDsgZm9udC1mYW1pbHk6IGluaGVyaXQ7IGZvbnQtc2l6ZTogaW5oZXJpdDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IH0KCi5mYyAuZmMtYnV0dG9uOmZvY3VzIHsgb3V0bGluZTogMXB4IGRvdHRlZDsgb3V0bGluZTogNXB4IGF1dG8gLXdlYmtpdC1mb2N1cy1yaW5nLWNvbG9yOyB9CgouZmMgLmZjLWJ1dHRvbiB7IC13ZWJraXQtYXBwZWFyYW5jZTogYnV0dG9uOyB9CgouZmMgLmZjLWJ1dHRvbjpub3QoOmRpc2FibGVkKSB7IGN1cnNvcjogcG9pbnRlcjsgfQoKLmZjIC5mYy1idXR0b246Oi1tb3otZm9jdXMtaW5uZXIgeyBwYWRkaW5nOiAwOyBib3JkZXItc3R5bGU6IG5vbmU7IH0KCi5mYyB7IC8qIHRoZW1lICovIH0KCi5mYyAuZmMtYnV0dG9uIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXdlaWdodDogNDAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7IC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7IC1tcy11c2VyLXNlbGVjdDogbm9uZTsgdXNlci1zZWxlY3Q6IG5vbmU7IGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsgcGFkZGluZzogMC40ZW0gMC42NWVtOyBmb250LXNpemU6IDFlbTsgbGluZS1oZWlnaHQ6IDEuNTsgYm9yZGVyLXJhZGl1czogMC4yNWVtOyB9CgouZmMgLmZjLWJ1dHRvbjpob3ZlciB7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfQoKLmZjIC5mYy1idXR0b246Zm9jdXMgeyBvdXRsaW5lOiAwOyBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSg0NCwgNjIsIDgwLCAwLjI1KTsgfQoKLmZjIC5mYy1idXR0b246ZGlzYWJsZWQgeyBvcGFjaXR5OiAwLjY1OyB9CgouZmMgeyAvKiAicHJpbWFyeSIgY29sb3JpbmcgKi8gfQoKLmZjIC5mYy1idXR0b24tcHJpbWFyeSB7IGNvbG9yOiAjZmZmOyBjb2xvcjogdmFyKC0tZmMtYnV0dG9uLXRleHQtY29sb3IsICNmZmYpOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMkMzRTUwOyBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1mYy1idXR0b24tYmctY29sb3IsICMyQzNFNTApOyBib3JkZXItY29sb3I6ICMyQzNFNTA7IGJvcmRlci1jb2xvcjogdmFyKC0tZmMtYnV0dG9uLWJvcmRlci1jb2xvciwgIzJDM0U1MCk7IH0KCi5mYyAuZmMtYnV0dG9uLXByaW1hcnk6aG92ZXIgeyBjb2xvcjogI2ZmZjsgY29sb3I6IHZhcigtLWZjLWJ1dHRvbi10ZXh0LWNvbG9yLCAjZmZmKTsgYmFja2dyb3VuZC1jb2xvcjogIzFlMmIzNzsgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZmMtYnV0dG9uLWhvdmVyLWJnLWNvbG9yLCAjMWUyYjM3KTsgYm9yZGVyLWNvbG9yOiAjMWEyNTJmOyBib3JkZXItY29sb3I6IHZhcigtLWZjLWJ1dHRvbi1ob3Zlci1ib3JkZXItY29sb3IsICMxYTI1MmYpOyB9CgouZmMgLmZjLWJ1dHRvbi1wcmltYXJ5OmRpc2FibGVkIHsgLyogbm90IERSWSAqLyBjb2xvcjogI2ZmZjsgY29sb3I6IHZhcigtLWZjLWJ1dHRvbi10ZXh0LWNvbG9yLCAjZmZmKTsgYmFja2dyb3VuZC1jb2xvcjogIzJDM0U1MDsgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZmMtYnV0dG9uLWJnLWNvbG9yLCAjMkMzRTUwKTsgYm9yZGVyLWNvbG9yOiAjMkMzRTUwOyBib3JkZXItY29sb3I6IHZhcigtLWZjLWJ1dHRvbi1ib3JkZXItY29sb3IsICMyQzNFNTApOyAvKiBvdmVycmlkZXMgOmhvdmVyICovIH0KCi5mYyAuZmMtYnV0dG9uLXByaW1hcnk6Zm9jdXMgeyBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSg3NiwgOTEsIDEwNiwgMC41KTsgfQoKLmZjIC5mYy1idXR0b24tcHJpbWFyeTpub3QoOmRpc2FibGVkKTphY3RpdmUsIC5mYyAuZmMtYnV0dG9uLXByaW1hcnk6bm90KDpkaXNhYmxlZCkuZmMtYnV0dG9uLWFjdGl2ZSB7IGNvbG9yOiAjZmZmOyBjb2xvcjogdmFyKC0tZmMtYnV0dG9uLXRleHQtY29sb3IsICNmZmYpOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMWEyNTJmOyBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1mYy1idXR0b24tYWN0aXZlLWJnLWNvbG9yLCAjMWEyNTJmKTsgYm9yZGVyLWNvbG9yOiAjMTUxZTI3OyBib3JkZXItY29sb3I6IHZhcigtLWZjLWJ1dHRvbi1hY3RpdmUtYm9yZGVyLWNvbG9yLCAjMTUxZTI3KTsgfQoKLmZjIC5mYy1idXR0b24tcHJpbWFyeTpub3QoOmRpc2FibGVkKTphY3RpdmU6Zm9jdXMsIC5mYyAuZmMtYnV0dG9uLXByaW1hcnk6bm90KDpkaXNhYmxlZCkuZmMtYnV0dG9uLWFjdGl2ZTpmb2N1cyB7IGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDc2LCA5MSwgMTA2LCAwLjUpOyB9CgouZmMgeyAvKiBpY29ucyB3aXRoaW4gYnV0dG9ucyAqLyB9CgouZmMgLmZjLWJ1dHRvbiAuZmMtaWNvbiB7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IGZvbnQtc2l6ZTogMS41ZW07IC8qIGJ1bXAgdXAgdGhlIHNpemUgKGJ1dCBkb24ndCBtYWtlIGl0IGJpZ2dlciB0aGFuIGxpbmUtaGVpZ2h0IG9mIGJ1dHRvbiwgd2hpY2ggaXMgMS41ZW0gYWxzbykgKi8gfQoKLmZjIC5mYy1idXR0b24tZ3JvdXAgeyBwb3NpdGlvbjogcmVsYXRpdmU7IGRpc3BsYXk6IGlubGluZS1mbGV4OyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9CgouZmMgLmZjLWJ1dHRvbi1ncm91cCA+IC5mYy1idXR0b24geyBwb3NpdGlvbjogcmVsYXRpdmU7IGZsZXg6IDEgMSBhdXRvOyB9CgouZmMgLmZjLWJ1dHRvbi1ncm91cCA+IC5mYy1idXR0b246aG92ZXIgeyB6LWluZGV4OiAxOyB9CgouZmMgLmZjLWJ1dHRvbi1ncm91cCA+IC5mYy1idXR0b246Zm9jdXMsIC5mYyAuZmMtYnV0dG9uLWdyb3VwID4gLmZjLWJ1dHRvbjphY3RpdmUsIC5mYyAuZmMtYnV0dG9uLWdyb3VwID4gLmZjLWJ1dHRvbi5mYy1idXR0b24tYWN0aXZlIHsgei1pbmRleDogMTsgfQoKLmZjLWRpcmVjdGlvbi1sdHIgLmZjLWJ1dHRvbi1ncm91cCA+IC5mYy1idXR0b246bm90KDpmaXJzdC1jaGlsZCkgeyBtYXJnaW4tbGVmdDogLTFweDsgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsgfQoKLmZjLWRpcmVjdGlvbi1sdHIgLmZjLWJ1dHRvbi1ncm91cCA+IC5mYy1idXR0b246bm90KDpsYXN0LWNoaWxkKSB7IGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsgfQoKLmZjLWRpcmVjdGlvbi1ydGwgLmZjLWJ1dHRvbi1ncm91cCA+IC5mYy1idXR0b246bm90KDpmaXJzdC1jaGlsZCkgeyBtYXJnaW4tcmlnaHQ6IC0xcHg7IGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsgfQoKLmZjLWRpcmVjdGlvbi1ydGwgLmZjLWJ1dHRvbi1ncm91cCA+IC5mYy1idXR0b246bm90KDpsYXN0LWNoaWxkKSB7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7IH0KCi5mYyAuZmMtdG9vbGJhciB7IGRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgYWxpZ24taXRlbXM6IGNlbnRlcjsgfQoKQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7IC5mYyAuZmMtdG9vbGJhciB7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IH0gfQoKLmZjIC5mYy10b29sYmFyLmZjLWhlYWRlci10b29sYmFyIHsgbWFyZ2luOiAtLjVyZW0gMCAuNzVyZW07IH0KCi5mYyAuZmMtdG9vbGJhci5mYy1oZWFkZXItdG9vbGJhciAuZmMtdG9vbGJhci1jaHVuayB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IHBhZGRpbmc6IC41cmVtIDA7IH0KCi5mYyAuZmMtdG9vbGJhci5mYy1oZWFkZXItdG9vbGJhciAuZmMtdG9vbGJhci1jaHVuazplbXB0eSB7IGRpc3BsYXk6IG5vbmU7IH0KCi5mYyAuZmMtdG9vbGJhci5mYy1oZWFkZXItdG9vbGJhciAuZmMtdG9vbGJhci1jaHVuayAuYnRuLCAuZmMgLmZjLXRvb2xiYXIuZmMtaGVhZGVyLXRvb2xiYXIgLmZjLXRvb2xiYXItY2h1bmsgLmR1YWwtbGlzdGJveCAuZHVhbC1saXN0Ym94X19idXR0b24sIC5kdWFsLWxpc3Rib3ggLmZjIC5mYy10b29sYmFyLmZjLWhlYWRlci10b29sYmFyIC5mYy10b29sYmFyLWNodW5rIC5kdWFsLWxpc3Rib3hfX2J1dHRvbiB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgZm9udC1mYW1pbHk6IFJvYm90bywgc2Fucy1zZXJpZjsgZm9udC13ZWlnaHQ6IDcwMDsgZm9udC1zaXplOiAxMnB4OyBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgY29sb3I6ICM4MDk0YWU7IGJvcmRlcjogMXB4IHNvbGlkICNkYmRmZWE7IHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplOyB9CgouZmMgLmZjLXRvb2xiYXIuZmMtaGVhZGVyLXRvb2xiYXIgLmZjLXRvb2xiYXItY2h1bmsgLmJ0bjpkaXNhYmxlZCwgLmZjIC5mYy10b29sYmFyLmZjLWhlYWRlci10b29sYmFyIC5mYy10b29sYmFyLWNodW5rIC5kdWFsLWxpc3Rib3ggLmR1YWwtbGlzdGJveF9fYnV0dG9uOmRpc2FibGVkLCAuZHVhbC1saXN0Ym94IC5mYyAuZmMtdG9vbGJhci5mYy1oZWFkZXItdG9vbGJhciAuZmMtdG9vbGJhci1jaHVuayAuZHVhbC1saXN0Ym94X19idXR0b246ZGlzYWJsZWQgeyBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgY29sb3I6ICM4MDk0YWU7IGJvcmRlcjogMXB4IHNvbGlkICNkYmRmZWE7IH0KCi5mYyAuZmMtdG9vbGJhci5mYy1oZWFkZXItdG9vbGJhciAuZmMtdG9vbGJhci1jaHVuayAuYnRuOmhvdmVyLCAuZmMgLmZjLXRvb2xiYXIuZmMtaGVhZGVyLXRvb2xiYXIgLmZjLXRvb2xiYXItY2h1bmsgLmR1YWwtbGlzdGJveCAuZHVhbC1saXN0Ym94X19idXR0b246aG92ZXIsIC5kdWFsLWxpc3Rib3ggLmZjIC5mYy10b29sYmFyLmZjLWhlYWRlci10b29sYmFyIC5mYy10b29sYmFyLWNodW5rIC5kdWFsLWxpc3Rib3hfX2J1dHRvbjpob3ZlciwgLmZjIC5mYy10b29sYmFyLmZjLWhlYWRlci10b29sYmFyIC5mYy10b29sYmFyLWNodW5rIC5idG46Zm9jdXMsIC5mYyAuZmMtdG9vbGJhci5mYy1oZWFkZXItdG9vbGJhciAuZmMtdG9vbGJhci1jaHVuayAuZHVhbC1saXN0Ym94IC5kdWFsLWxpc3Rib3hfX2J1dHRvbjpmb2N1cywgLmR1YWwtbGlzdGJveCAuZmMgLmZjLXRvb2xiYXIuZmMtaGVhZGVyLXRvb2xiYXIgLmZjLXRvb2xiYXItY2h1bmsgLmR1YWwtbGlzdGJveF9fYnV0dG9uOmZvY3VzIHsgY29sb3I6ICM1MjY0ODQ7IGJhY2tncm91bmQ6ICNmNWY2ZmE7IGJvcmRlcjogMXB4IHNvbGlkICNkYmRmZWE7IH0KCi5mYyAuZmMtdG9vbGJhci5mYy1oZWFkZXItdG9vbGJhciAuZmMtdG9vbGJhci1jaHVuayAuYnRuOmZvY3VzLCAuZmMgLmZjLXRvb2xiYXIuZmMtaGVhZGVyLXRvb2xiYXIgLmZjLXRvb2xiYXItY2h1bmsgLmR1YWwtbGlzdGJveCAuZHVhbC1saXN0Ym94X19idXR0b246Zm9jdXMsIC5kdWFsLWxpc3Rib3ggLmZjIC5mYy10b29sYmFyLmZjLWhlYWRlci10b29sYmFyIC5mYy10b29sYmFyLWNodW5rIC5kdWFsLWxpc3Rib3hfX2J1dHRvbjpmb2N1cyB7IGJveC1zaGFkb3c6IDAgMCAwIDAuMnJlbSByZ2JhKDIxOSwgMjIzLCAyMzQsIDAuNSk7IH0KCi5mYyAuZmMtdG9vbGJhci5mYy1oZWFkZXItdG9vbGJhciAuZmMtdG9vbGJhci1jaHVuayAuYnRuLmFjdGl2ZSwgLmZjIC5mYy10b29sYmFyLmZjLWhlYWRlci10b29sYmFyIC5mYy10b29sYmFyLWNodW5rIC5kdWFsLWxpc3Rib3ggLmFjdGl2ZS5kdWFsLWxpc3Rib3hfX2J1dHRvbiwgLmR1YWwtbGlzdGJveCAuZmMgLmZjLXRvb2xiYXIuZmMtaGVhZGVyLXRvb2xiYXIgLmZjLXRvb2xiYXItY2h1bmsgLmFjdGl2ZS5kdWFsLWxpc3Rib3hfX2J1dHRvbiB7IGNvbG9yOiAjMzY0YTYzOyBib3JkZXI6IDFweCBzb2xpZCAjZGJkZmVhOyBiYWNrZ3JvdW5kOiAjZjVmNmZhOyBib3gtc2hhZG93OiBpbnNldCAwIDAgNHB4IC0xcHggcmdiYSgxMjgsIDE0OCwgMTc0LCAwLjI1KTsgfQoKLmZjIC5mYy10b29sYmFyLmZjLWhlYWRlci10b29sYmFyIC5mYy10b29sYmFyLWNodW5rIC5mYy1wcmV2LWJ1dHRvbiwgLmZjIC5mYy10b29sYmFyLmZjLWhlYWRlci10b29sYmFyIC5mYy10b29sYmFyLWNodW5rIC5mYy1uZXh0LWJ1dHRvbiB7IGJvcmRlcjogbm9uZSAhaW1wb3J0YW50OyB9CgouZmMgLmZjLXRvb2xiYXIuZmMtaGVhZGVyLXRvb2xiYXIgLmZjLXRvb2xiYXItY2h1bmsgLmZjLXByZXYtYnV0dG9uOmhvdmVyLCAuZmMgLmZjLXRvb2xiYXIuZmMtaGVhZGVyLXRvb2xiYXIgLmZjLXRvb2xiYXItY2h1bmsgLmZjLXByZXYtYnV0dG9uOmZvY3VzLCAuZmMgLmZjLXRvb2xiYXIuZmMtaGVhZGVyLXRvb2xiYXIgLmZjLXRvb2xiYXItY2h1bmsgLmZjLW5leHQtYnV0dG9uOmhvdmVyLCAuZmMgLmZjLXRvb2xiYXIuZmMtaGVhZGVyLXRvb2xiYXIgLmZjLXRvb2xiYXItY2h1bmsgLmZjLW5leHQtYnV0dG9uOmZvY3VzIHsgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDsgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50OyB9CgpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsgLmZjIC5mYy10b29sYmFyLmZjLWhlYWRlci10b29sYmFyIC5mYy10b29sYmFyLWNodW5rIHsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyB3aWR0aDogMTAwJTsgfQogIC5mYyAuZmMtdG9vbGJhci5mYy1oZWFkZXItdG9vbGJhciAuZmMtdG9vbGJhci1jaHVuayAuZmMtZGF5R3JpZE1vbnRoLWJ1dHRvbiwgLmZjIC5mYy10b29sYmFyLmZjLWhlYWRlci10b29sYmFyIC5mYy10b29sYmFyLWNodW5rIC5mYy10aW1lR3JpZFdlZWstYnV0dG9uLCAuZmMgLmZjLXRvb2xiYXIuZmMtaGVhZGVyLXRvb2xiYXIgLmZjLXRvb2xiYXItY2h1bmsgLmZjLXRpbWVHcmlkRGF5LWJ1dHRvbiwgLmZjIC5mYy10b29sYmFyLmZjLWhlYWRlci10b29sYmFyIC5mYy10b29sYmFyLWNodW5rIC5mYy1saXN0V2Vlay1idXR0b24geyBjb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDsgd2lkdGg6IDIuMTI1cmVtOyB9CiAgLmZjIC5mYy10b29sYmFyLmZjLWhlYWRlci10b29sYmFyIC5mYy10b29sYmFyLWNodW5rIC5mYy1kYXlHcmlkTW9udGgtYnV0dG9uOmJlZm9yZSwgLmZjIC5mYy10b29sYmFyLmZjLWhlYWRlci10b29sYmFyIC5mYy10b29sYmFyLWNodW5rIC5mYy10aW1lR3JpZFdlZWstYnV0dG9uOmJlZm9yZSwgLmZjIC5mYy10b29sYmFyLmZjLWhlYWRlci10b29sYmFyIC5mYy10b29sYmFyLWNodW5rIC5mYy10aW1lR3JpZERheS1idXR0b246YmVmb3JlLCAuZmMgLmZjLXRvb2xiYXIuZmMtaGVhZGVyLXRvb2xiYXIgLmZjLXRvb2xiYXItY2h1bmsgLmZjLWxpc3RXZWVrLWJ1dHRvbjpiZWZvcmUgeyBjb2xvcjogIzgwOTRhZTsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDUwJTsgbGVmdDogNTAlOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsgfQogIC5mYyAuZmMtdG9vbGJhci5mYy1oZWFkZXItdG9vbGJhciAuZmMtdG9vbGJhci1jaHVuayAuZmMtZGF5R3JpZE1vbnRoLWJ1dHRvbjpiZWZvcmUgeyBjb250ZW50OiAnTSc7IH0KICAuZmMgLmZjLXRvb2xiYXIuZmMtaGVhZGVyLXRvb2xiYXIgLmZjLXRvb2xiYXItY2h1bmsgLmZjLXRpbWVHcmlkV2Vlay1idXR0b246YmVmb3JlIHsgY29udGVudDogJ1cnOyB9CiAgLmZjIC5mYy10b29sYmFyLmZjLWhlYWRlci10b29sYmFyIC5mYy10b29sYmFyLWNodW5rIC5mYy10aW1lR3JpZERheS1idXR0b246YmVmb3JlIHsgY29udGVudDogJ0QnOyB9CiAgLmZjIC5mYy10b29sYmFyLmZjLWhlYWRlci10b29sYmFyIC5mYy10b29sYmFyLWNodW5rIC5mYy1saXN0V2Vlay1idXR0b246YmVmb3JlIHsgY29udGVudDogJ0wnOyB9CiAgLmZjIC5mYy10b29sYmFyLmZjLWhlYWRlci10b29sYmFyIC5mYy10b29sYmFyLXRpdGxlICsgLmJ0bi1ncm91cCB7IG1hcmdpbi1yaWdodDogLTAuNzVyZW07IH0gfQoKLmZjIC5mYy10b29sYmFyLmZjLWZvb3Rlci10b29sYmFyIHsgbWFyZ2luLXRvcDogMS41ZW07IH0KCi5mYyAuZmMtdG9vbGJhci10aXRsZSB7IGZvbnQtc2l6ZTogMS4xMjVyZW07IG1hcmdpbjogMDsgfQoKLmZjLWRpcmVjdGlvbi1sdHIgLmZjLXRvb2xiYXIgPiAqID4gOm5vdCg6Zmlyc3QtY2hpbGQpIHsgbWFyZ2luLWxlZnQ6IC43NWVtOyAvKiBzcGFjZSBiZXR3ZWVuICovIH0KCi5mYy1kaXJlY3Rpb24tcnRsIC5mYy10b29sYmFyID4gKiA+IDpub3QoOmZpcnN0LWNoaWxkKSB7IG1hcmdpbi1yaWdodDogLjc1ZW07IC8qIHNwYWNlIGJldHdlZW4gKi8gfQoKLmZjLWRpcmVjdGlvbi1ydGwgLmZjLXRvb2xiYXItbHRyIHsgLyogd2hlbiB0aGUgdG9vbGJhci1jaHVuayBwb3NpdGlvbmluZyBzeXN0ZW0gaXMgZXhwbGljaXRseSBsZWZ0LXRvLXJpZ2h0ICovIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsgfQoKLmZjIC5mYy1zY3JvbGxlciB7IC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsgcG9zaXRpb246IHJlbGF0aXZlOyAvKiBmb3IgYWJzLXBvc2l0aW9uZWQgZWxlbWVudHMgd2l0aGluICovIH0KCi5mYyAuZmMtc2Nyb2xsZXItbGlxdWlkIHsgaGVpZ2h0OiAxMDAlOyB9CgouZmMgLmZjLXNjcm9sbGVyLWxpcXVpZC1hYnNvbHV0ZSB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyByaWdodDogMDsgbGVmdDogMDsgYm90dG9tOiAwOyB9CgouZmMgLmZjLXNjcm9sbGVyLWhhcm5lc3MgeyBwb3NpdGlvbjogcmVsYXRpdmU7IG92ZXJmbG93OiBoaWRkZW47IGRpcmVjdGlvbjogbHRyOyAvKiBoYWNrIGZvciBjaHJvbWUgY29tcHV0aW5nIHRoZSBzY3JvbGxlcidzIHJpZ2h0L2xlZnQgd3JvbmcgZm9yIHJ0bC4gdW5kb25lIGJlbG93Li4uICovIC8qIFRPRE86IGRlbW9uc3RyYXRlIGluIGNvZGVwZW4gKi8gfQoKLmZjIC5mYy1zY3JvbGxlci1oYXJuZXNzLWxpcXVpZCB7IGhlaWdodDogMTAwJTsgfQoKLmZjLWRpcmVjdGlvbi1ydGwgLmZjLXNjcm9sbGVyLWhhcm5lc3MgPiAuZmMtc2Nyb2xsZXIgeyAvKiB1bmRvIGFib3ZlIGhhY2sgKi8gZGlyZWN0aW9uOiBydGw7IH0KCi5mYy10aGVtZS1zdGFuZGFyZCAuZmMtc2Nyb2xsZ3JpZCB7IGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWZjLWJvcmRlci1jb2xvciwgI2RkZCk7IC8qIGJvb3RzdHJhcCBkb2VzIHRoaXMuIG1hdGNoICovIH0KCi5mYyAuZmMtc2Nyb2xsZ3JpZCwgLmZjIC5mYy1zY3JvbGxncmlkIHRhYmxlIHsgLyogYWxsIHRhYmxlcyAoc2VsZiBpbmNsdWRlZCkgKi8gd2lkdGg6IDEwMCU7IC8qIGJlY2F1c2UgdGFibGVzIGRvbid0IG5vcm1hbGx5IGRvIHRoaXMgKi8gdGFibGUtbGF5b3V0OiBmaXhlZDsgfQoKLmZjIC5mYy1zY3JvbGxncmlkIHRhYmxlIHsgLyogaW5uZXIgdGFibGVzICovIGJvcmRlci10b3Atc3R5bGU6IGhpZGRlbjsgYm9yZGVyLWxlZnQtc3R5bGU6IGhpZGRlbjsgYm9yZGVyLXJpZ2h0LXN0eWxlOiBoaWRkZW47IH0KCi5mYyAuZmMtc2Nyb2xsZ3JpZCB7IGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7IGJvcmRlci1yaWdodC13aWR0aDogMDsgYm9yZGVyLWJvdHRvbS13aWR0aDogMDsgfQoKLmZjIC5mYy1zY3JvbGxncmlkLWxpcXVpZCB7IGhlaWdodDogMTAwJTsgfQoKLmZjIC5mYy1zY3JvbGxncmlkLXNlY3Rpb24geyAvKiBhIDx0cj4gKi8gaGVpZ2h0OiAxcHg7IH0KCi5mYyAuZmMtc2Nyb2xsZ3JpZC1zZWN0aW9uID4gdGQgeyBoZWlnaHQ6IDFweDsgLyogbmVlZHMgYSBoZWlnaHQgc28gaW5uZXIgZGl2IHdpdGhpbiBncm93LiBiZXR0ZXIgdGhhbiAwLCBmb3IgZmlyZWZveCAqLyB9CgouZmMgLmZjLXNjcm9sbGdyaWQtc2VjdGlvbiB0YWJsZSB7IGhlaWdodDogMXB4OyAvKiBmb3IgbW9zdCBicm93c2VycywgaWYgYSBoZWlnaHQgaXNuJ3Qgc2V0IG9uIHRoZSB0YWJsZSwgY2FuJ3QgZG8gbGlxdWlkLWhlaWdodCB3aXRoaW4gY2VsbHMgKi8gLyogc2VydmVzIGFzIGEgbWluLWhlaWdodC4gaGFybWxlc3MgKi8gfQoKLmZjIC5mYy1zY3JvbGxncmlkLXNlY3Rpb24tbGlxdWlkIHsgaGVpZ2h0OiBhdXRvOyB9CgouZmMgLmZjLXNjcm9sbGdyaWQtc2VjdGlvbi1saXF1aWQgPiB0ZCB7IGhlaWdodDogMTAwJTsgLyogYmV0dGVyIHRoYW4gYGF1dG9gLCBmb3IgZmlyZWZveCAqLyB9CgouZmMgLmZjLXNjcm9sbGdyaWQtc2VjdGlvbiA+ICogeyBib3JkZXItdG9wLXdpZHRoOiAwOyBib3JkZXItbGVmdC13aWR0aDogMDsgfQoKLmZjIC5mYy1zY3JvbGxncmlkLXNlY3Rpb24taGVhZGVyID4gKiwgLmZjIC5mYy1zY3JvbGxncmlkLXNlY3Rpb24tZm9vdGVyID4gKiB7IGJvcmRlci1ib3R0b20td2lkdGg6IDA7IH0KCi5mYyAuZmMtc2Nyb2xsZ3JpZC1zZWN0aW9uLWJvZHkgdGFibGUsIC5mYyAuZmMtc2Nyb2xsZ3JpZC1zZWN0aW9uLWZvb3RlciB0YWJsZSB7IGJvcmRlci1ib3R0b20tc3R5bGU6IGhpZGRlbjsgLyogaGVhZCBrZWVwcyBpdHMgYm90dG9tIGJvcmRlciB0aG8gKi8gfQoKLmZjIHsgLyogc3RpY2tpbmVzcyAqLyB9CgouZmMgLmZjLXNjcm9sbGdyaWQtc2VjdGlvbi1zdGlja3kgPiAqIHsgYmFja2dyb3VuZDogI2ZmZjsgYmFja2dyb3VuZDogdmFyKC0tZmMtcGFnZS1iZy1jb2xvciwgI2ZmZik7IHBvc2l0aW9uOiAtd2Via2l0LXN0aWNreTsgcG9zaXRpb246IHN0aWNreTsgei1pbmRleDogMjsgLyogVE9ETzogdmFyICovIC8qIFRPRE86IGJveC1zaGFkb3cgd2hlbiBzdGlja2luZyAqLyB9CgouZmMgLmZjLXNjcm9sbGdyaWQtc2VjdGlvbi1oZWFkZXIuZmMtc2Nyb2xsZ3JpZC1zZWN0aW9uLXN0aWNreSA+ICogeyB0b3A6IDA7IC8qIGJlY2F1c2UgYm9yZGVyLXNoYXJpbmcgY2F1c2VzIGEgZ2FwIGF0IHRoZSB0b3AgKi8gLyogVE9ETzogZ2l2ZSBzYWZhcmkgLTEuIGhhcyBidWcgKi8gfQoKLmZjIC5mYy1zY3JvbGxncmlkLXNlY3Rpb24tZm9vdGVyLmZjLXNjcm9sbGdyaWQtc2VjdGlvbi1zdGlja3kgPiAqIHsgYm90dG9tOiAwOyAvKiBrbm93biBidWc6IGJvdHRvbS1zdGlja2luZXNzIGRvZXNuJ3Qgd29yayBpbiBzYWZhcmkgKi8gfQoKLmZjIC5mYy1zY3JvbGxncmlkLXN0aWNreS1zaGltIHsgLyogZm9yIGhvcml6b250YWwgc2Nyb2xsYmFyICovIGhlaWdodDogMXB4OyAvKiBuZWVkcyBoZWlnaHQgdG8gY3JlYXRlIHNjcm9sbGJhcnMgKi8gbWFyZ2luLWJvdHRvbTogLTFweDsgfQoKLmZjLXN0aWNreSB7IC8qIG5vIC5mYyB3cmFwIGJlY2F1c2UgdXNlZCBhcyBjaGlsZCBvZiBib2R5ICovIHBvc2l0aW9uOiAtd2Via2l0LXN0aWNreTsgcG9zaXRpb246IHN0aWNreTsgfQoKLmZjIC5mYy12aWV3LWhhcm5lc3MgeyBmbGV4LWdyb3c6IDE7IC8qIGJlY2F1c2UgdGhpcyBoYXJuZXNzIGlzIFdJVEhJTiB0aGUgLmZjJ3MgZmxleGJveCAqLyBwb3NpdGlvbjogcmVsYXRpdmU7IH0KCi5mYyB7IC8qIHdoZW4gdGhlIGhhcm5lc3MgY29udHJvbHMgdGhlIGhlaWdodCwgbWFrZSB0aGUgdmlldyBsaXF1aWQgKi8gfQoKLmZjIC5mYy12aWV3LWhhcm5lc3MtYWN0aXZlID4gLmZjLXZpZXcgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgcmlnaHQ6IDA7IGJvdHRvbTogMDsgbGVmdDogMDsgfQoKLmZjIC5mYy1jb2wtaGVhZGVyLWNlbGwtY3VzaGlvbiB7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgLyogeC1icm93c2VyIGZvciB3aGVuIHN0aWNreSAod2hlbiBtdWx0aS10aWVyIGhlYWRlcikgKi8gcGFkZGluZzogMnB4IDRweDsgfQoKLmZjIC5mYy1iZy1ldmVudCwgLmZjIC5mYy1ub24tYnVzaW5lc3MsIC5mYyAuZmMtaGlnaGxpZ2h0IHsgLyogd2lsbCBhbHdheXMgaGF2ZSBhIGhhcm5lc3Mgd2l0aCBwb3NpdGlvbjpyZWxhdGl2ZS9hYnNvbHV0ZSwgc28gYWJzb2x1dGVseSBleHBhbmQgKi8gcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IGxlZnQ6IDA7IHJpZ2h0OiAwOyBib3R0b206IDA7IH0KCi5mYyAuZmMtbm9uLWJ1c2luZXNzIHsgYmFja2dyb3VuZDogcmdiYSgyMTUsIDIxNSwgMjE1LCAwLjMpOyBiYWNrZ3JvdW5kOiB2YXIoLS1mYy1ub24tYnVzaW5lc3MtY29sb3IsIHJnYmEoMjE1LCAyMTUsIDIxNSwgMC4zKSk7IH0KCi5mYyAuZmMtYmctZXZlbnQgeyBiYWNrZ3JvdW5kOiAjOGZkZjgyOyBiYWNrZ3JvdW5kOiB2YXIoLS1mYy1iZy1ldmVudC1jb2xvciwgIzhmZGY4Mik7IG9wYWNpdHk6IDAuMzsgb3BhY2l0eTogdmFyKC0tZmMtYmctZXZlbnQtb3BhY2l0eSwgMC4zKTsgfQoKLmZjIC5mYy1iZy1ldmVudCAuZmMtZXZlbnQtdGl0bGUgeyBtYXJnaW46IC41ZW07IGZvbnQtc2l6ZTogLjg1ZW07IGZvbnQtc2l6ZTogdmFyKC0tZmMtc21hbGwtZm9udC1zaXplLCAwLjg1ZW0pOyBmb250LXN0eWxlOiBpdGFsaWM7IH0KCi5mYyAuZmMtaGlnaGxpZ2h0IHsgYmFja2dyb3VuZDogcmdiYSgxODgsIDIzMiwgMjQxLCAwLjMpOyBiYWNrZ3JvdW5kOiB2YXIoLS1mYy1oaWdobGlnaHQtY29sb3IsIHJnYmEoMTg4LCAyMzIsIDI0MSwgMC4zKSk7IH0KCi5mYyAuZmMtY2VsbC1zaGFkZWQsIC5mYyAuZmMtZGF5LWRpc2FibGVkIHsgYmFja2dyb3VuZDogcmdiYSgyMDgsIDIwOCwgMjA4LCAwLjMpOyBiYWNrZ3JvdW5kOiB2YXIoLS1mYy1uZXV0cmFsLWJnLWNvbG9yLCByZ2JhKDIwOCwgMjA4LCAyMDgsIDAuMykpOyB9CgovKiBsaW5rIHJlc2V0cyAqLwovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi5mYyAuZmMtZXZlbnQgeyBwYWRkaW5nOiAuMTI1cmVtIC4zNzVyZW07IG1hcmdpbjogLjVyZW0gLjM3NXJlbTsgfQoKYS5mYy1ldmVudCwgYS5mYy1ldmVudDpob3ZlciB7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfQoKLyogY3Vyc29yICovCi5mYy1ldmVudFtocmVmXSwgLmZjLWV2ZW50LmZjLWV2ZW50LWRyYWdnYWJsZSB7IGN1cnNvcjogcG9pbnRlcjsgfQoKLyogZXZlbnQgdGV4dCBjb250ZW50ICovCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLmZjLWV2ZW50IC5mYy1ldmVudC1tYWluIHsgcG9zaXRpb246IHJlbGF0aXZlOyB6LWluZGV4OiAyOyB9CgovKiBkcmFnZ2luZyAqLwovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi5mYy1ldmVudC1kcmFnZ2luZzpub3QoLmZjLWV2ZW50LXNlbGVjdGVkKSB7IC8qIE1PVVNFICovIG9wYWNpdHk6IDAuNzU7IH0KCi5mYy1ldmVudC1kcmFnZ2luZy5mYy1ldmVudC1zZWxlY3RlZCB7IC8qIFRPVUNIICovIGJveC1zaGFkb3c6IDAgMnB4IDdweCByZ2JhKDAsIDAsIDAsIDAuMyk7IH0KCi8qIHJlc2l6aW5nICovCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLyogKHN1YmNsYXNzZXMgc2hvdWxkIGhvbmUgcG9zaXRpb25pbmcgZm9yIHRvdWNoIGFuZCBub24tdG91Y2gpICovCi5mYy1ldmVudCAuZmMtZXZlbnQtcmVzaXplciB7IGRpc3BsYXk6IG5vbmU7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgei1pbmRleDogNDsgfQoKLmZjLWV2ZW50OmhvdmVyLCAuZmMtZXZlbnQtc2VsZWN0ZWQgeyAvKiBUT1VDSCAqLyB9CgouZmMtZXZlbnQ6aG92ZXIgLmZjLWV2ZW50LXJlc2l6ZXIsIC5mYy1ldmVudC1zZWxlY3RlZCAuZmMtZXZlbnQtcmVzaXplciB7IGRpc3BsYXk6IGJsb2NrOyB9CgouZmMtZXZlbnQtc2VsZWN0ZWQgLmZjLWV2ZW50LXJlc2l6ZXIgeyBib3JkZXItcmFkaXVzOiA0cHg7IGJvcmRlci1yYWRpdXM6IGNhbGModmFyKC0tZmMtZXZlbnQtcmVzaXplci1kb3QtdG90YWwtd2lkdGgsIDhweCkgLyAyKTsgYm9yZGVyLXdpZHRoOiAxcHg7IGJvcmRlci13aWR0aDogdmFyKC0tZmMtZXZlbnQtcmVzaXplci1kb3QtYm9yZGVyLXdpZHRoLCAxcHgpOyB3aWR0aDogOHB4OyB3aWR0aDogdmFyKC0tZmMtZXZlbnQtcmVzaXplci1kb3QtdG90YWwtd2lkdGgsIDhweCk7IGhlaWdodDogOHB4OyBoZWlnaHQ6IHZhcigtLWZjLWV2ZW50LXJlc2l6ZXItZG90LXRvdGFsLXdpZHRoLCA4cHgpOyBib3JkZXItc3R5bGU6IHNvbGlkOyBib3JkZXItY29sb3I6IGluaGVyaXQ7IGJhY2tncm91bmQ6ICNmZmY7IGJhY2tncm91bmQ6IHZhcigtLWZjLXBhZ2UtYmctY29sb3IsICNmZmYpOyB9CgouZmMtZXZlbnQtc2VsZWN0ZWQgLmZjLWV2ZW50LXJlc2l6ZXI6YmVmb3JlIHsgY29udGVudDogJyc7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAtMjBweDsgbGVmdDogLTIwcHg7IHJpZ2h0OiAtMjBweDsgYm90dG9tOiAtMjBweDsgfQoKLyogc2VsZWN0aW5nIChhbHdheXMgVE9VQ0gpICovCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLmZjLWV2ZW50LXNlbGVjdGVkIHsgYm94LXNoYWRvdzogMCAycHggNXB4IHJnYmEoMCwgMCwgMCwgMC4yKTsgfQoKLmZjLWV2ZW50LXNlbGVjdGVkOmJlZm9yZSB7IGNvbnRlbnQ6ICIiOyBwb3NpdGlvbjogYWJzb2x1dGU7IHotaW5kZXg6IDM7IHRvcDogMDsgbGVmdDogMDsgcmlnaHQ6IDA7IGJvdHRvbTogMDsgfQoKLmZjLWV2ZW50LXNlbGVjdGVkIHsgLyogZGltbWVyIGVmZmVjdCAqLyB9CgouZmMtZXZlbnQtc2VsZWN0ZWQ6YWZ0ZXIgeyBjb250ZW50OiAiIjsgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjI1KTsgYmFja2dyb3VuZDogdmFyKC0tZmMtZXZlbnQtc2VsZWN0ZWQtb3ZlcmxheS1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjI1KSk7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgei1pbmRleDogMTsgLyogYXNzdW1lIHRoZXJlJ3MgYSBib3JkZXIgb24gYWxsIHNpZGVzLiBvdmVyY29tZSBpdC4gKi8gLyogc29tZXRpbWVzIHRoZXJlJ3MgTk9UIGEgYm9yZGVyLCBpbiB3aGljaCBjYXNlIHRoZSBkaW1tZXIgd2lsbCBnbyBvdmVyICovIC8qIGFuIGFkamFjZW50IGJvcmRlciwgd2hpY2ggbG9va3MgZmluZS4gKi8gdG9wOiAtMXB4OyBsZWZ0OiAtMXB4OyByaWdodDogLTFweDsgYm90dG9tOiAtMXB4OyB9CgovKgpBIEhPUklaT05UQUwgZXZlbnQKKi8KLmZjLWgtZXZlbnQgeyAvKiBhbGxvd2VkIHRvIGJlIHRvcC1sZXZlbCAqLyBkaXNwbGF5OiBibG9jazsgYm9yZGVyOiAxcHggc29saWQgIzA5NzFmZTsgYmFja2dyb3VuZC1jb2xvcjogIzA5NzFmZTsgfQoKLmZjLWgtZXZlbnQgLmZjLWV2ZW50LW1haW4tZnJhbWUgeyBkaXNwbGF5OiBmbGV4OyAvKiBmb3IgbWFrZSBmYy1ldmVudC10aXRsZS1jb250YWluZXIgZXhwYW5kICovIH0KCi5mYy1oLWV2ZW50IC5mYy1ldmVudC10aW1lIHsgbWF4LXdpZHRoOiAxMDAlOyAvKiBjbGlwIG92ZXJmbG93IG9uIHRoaXMgZWxlbWVudCAqLyBvdmVyZmxvdzogaGlkZGVuOyB9CgouZmMtaC1ldmVudCAuZmMtZXZlbnQtdGl0bGUtY29udGFpbmVyIHsgLyogc2VydmVzIGFzIGEgY29udGFpbmVyIGZvciB0aGUgc3RpY2t5IGN1c2hpb24gKi8gZmxleC1ncm93OiAxOyBmbGV4LXNocmluazogMTsgbWluLXdpZHRoOiAwOyAvKiBpbXBvcnRhbnQgZm9yIGFsbG93aW5nIHRvIHNocmluayBhbGwgdGhlIHdheSAqLyB9CgouZmMtaC1ldmVudCAuZmMtZXZlbnQtdGl0bGUgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IC8qIG5lZWQgdGhpcyB0byBiZSBzdGlja3kgY3Jvc3MtYnJvd3NlciAqLyB2ZXJ0aWNhbC1hbGlnbjogdG9wOyAvKiBmb3Igbm90IG1lc3NpbmcgdXAgbGluZS1oZWlnaHQgKi8gbGVmdDogMDsgLyogZm9yIHN0aWNreSAqLyByaWdodDogMDsgLyogZm9yIHN0aWNreSAqLyBtYXgtd2lkdGg6IDEwMCU7IC8qIGNsaXAgb3ZlcmZsb3cgb24gdGhpcyBlbGVtZW50ICovIG92ZXJmbG93OiBoaWRkZW47IH0KCi5mYy1oLWV2ZW50LmZjLWV2ZW50LXNlbGVjdGVkOmJlZm9yZSB7IC8qIGV4cGFuZCBoaXQgYXJlYSAqLyB0b3A6IC0xMHB4OyBib3R0b206IC0xMHB4OyB9CgovKiBhZGp1c3QgYm9yZGVyIGFuZCBib3JkZXItcmFkaXVzIChpZiB0aGVyZSBpcyBhbnkpIGZvciBub24tc3RhcnQvZW5kICovCi5mYy1kaXJlY3Rpb24tbHRyIC5mYy1kYXlncmlkLWJsb2NrLWV2ZW50Om5vdCguZmMtZXZlbnQtc3RhcnQpLCAuZmMtZGlyZWN0aW9uLXJ0bCAuZmMtZGF5Z3JpZC1ibG9jay1ldmVudDpub3QoLmZjLWV2ZW50LWVuZCkgeyBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwOyBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOyBib3JkZXItbGVmdC13aWR0aDogMDsgfQoKLmZjLWRpcmVjdGlvbi1sdHIgLmZjLWRheWdyaWQtYmxvY2stZXZlbnQ6bm90KC5mYy1ldmVudC1lbmQpLCAuZmMtZGlyZWN0aW9uLXJ0bCAuZmMtZGF5Z3JpZC1ibG9jay1ldmVudDpub3QoLmZjLWV2ZW50LXN0YXJ0KSB7IGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsgYm9yZGVyLXJpZ2h0LXdpZHRoOiAwOyB9CgovKiByZXNpemVycyAqLwouZmMtaC1ldmVudDpub3QoLmZjLWV2ZW50LXNlbGVjdGVkKSAuZmMtZXZlbnQtcmVzaXplciB7IHRvcDogMDsgYm90dG9tOiAwOyB3aWR0aDogOHB4OyB3aWR0aDogdmFyKC0tZmMtZXZlbnQtcmVzaXplci10aGlja25lc3MsIDhweCk7IH0KCi5mYy1kaXJlY3Rpb24tbHRyIC5mYy1oLWV2ZW50Om5vdCguZmMtZXZlbnQtc2VsZWN0ZWQpIC5mYy1ldmVudC1yZXNpemVyLXN0YXJ0LCAuZmMtZGlyZWN0aW9uLXJ0bCAuZmMtaC1ldmVudDpub3QoLmZjLWV2ZW50LXNlbGVjdGVkKSAuZmMtZXZlbnQtcmVzaXplci1lbmQgeyBjdXJzb3I6IHctcmVzaXplOyBsZWZ0OiAtNHB4OyBsZWZ0OiBjYWxjKHZhcigtLWZjLWV2ZW50LXJlc2l6ZXItdGhpY2tuZXNzLCA4cHgpIC8gLTIpOyB9CgouZmMtZGlyZWN0aW9uLWx0ciAuZmMtaC1ldmVudDpub3QoLmZjLWV2ZW50LXNlbGVjdGVkKSAuZmMtZXZlbnQtcmVzaXplci1lbmQsIC5mYy1kaXJlY3Rpb24tcnRsIC5mYy1oLWV2ZW50Om5vdCguZmMtZXZlbnQtc2VsZWN0ZWQpIC5mYy1ldmVudC1yZXNpemVyLXN0YXJ0IHsgY3Vyc29yOiBlLXJlc2l6ZTsgcmlnaHQ6IC00cHg7IHJpZ2h0OiBjYWxjKHZhcigtLWZjLWV2ZW50LXJlc2l6ZXItdGhpY2tuZXNzLCA4cHgpIC8gLTIpOyB9CgovKiByZXNpemVycyBmb3IgVE9VQ0ggKi8KLmZjLWgtZXZlbnQuZmMtZXZlbnQtc2VsZWN0ZWQgLmZjLWV2ZW50LXJlc2l6ZXIgeyB0b3A6IDUwJTsgbWFyZ2luLXRvcDogLTRweDsgbWFyZ2luLXRvcDogY2FsYyh2YXIoLS1mYy1ldmVudC1yZXNpemVyLWRvdC10b3RhbC13aWR0aCwgOHB4KSAvIC0yKTsgfQoKLmZjLWRpcmVjdGlvbi1sdHIgLmZjLWgtZXZlbnQuZmMtZXZlbnQtc2VsZWN0ZWQgLmZjLWV2ZW50LXJlc2l6ZXItc3RhcnQsIC5mYy1kaXJlY3Rpb24tcnRsIC5mYy1oLWV2ZW50LmZjLWV2ZW50LXNlbGVjdGVkIC5mYy1ldmVudC1yZXNpemVyLWVuZCB7IGxlZnQ6IC00cHg7IGxlZnQ6IGNhbGModmFyKC0tZmMtZXZlbnQtcmVzaXplci1kb3QtdG90YWwtd2lkdGgsIDhweCkgLyAtMik7IH0KCi5mYy1kaXJlY3Rpb24tbHRyIC5mYy1oLWV2ZW50LmZjLWV2ZW50LXNlbGVjdGVkIC5mYy1ldmVudC1yZXNpemVyLWVuZCwgLmZjLWRpcmVjdGlvbi1ydGwgLmZjLWgtZXZlbnQuZmMtZXZlbnQtc2VsZWN0ZWQgLmZjLWV2ZW50LXJlc2l6ZXItc3RhcnQgeyByaWdodDogLTRweDsgcmlnaHQ6IGNhbGModmFyKC0tZmMtZXZlbnQtcmVzaXplci1kb3QtdG90YWwtd2lkdGgsIDhweCkgLyAtMik7IH0KCjpyb290IHsgLS1mYy1kYXlncmlkLWV2ZW50LWRvdC13aWR0aDogOHB4OyB9CgouZmMgLmZjLXBvcG92ZXIgeyBwb3NpdGlvbjogZml4ZWQ7IHRvcDogMDsgLyogZm9yIHdoZW4gbm90IHBvc2l0aW9uZWQgeWV0ICovIGJveC1zaGFkb3c6IDAgMnB4IDZweCByZ2JhKDAsIDAsIDAsIDAuMTUpOyB9CgouZmMgLmZjLXBvcG92ZXItaGVhZGVyIHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IHJvdzsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyBhbGlnbi1pdGVtczogY2VudGVyOyBwYWRkaW5nOiAzcHggNHB4OyB9CgouZmMgLmZjLXBvcG92ZXItdGl0bGUgeyBtYXJnaW46IDAgMnB4OyB9CgouZmMgLmZjLXBvcG92ZXItY2xvc2UgeyBjdXJzb3I6IHBvaW50ZXI7IG9wYWNpdHk6IDAuNjU7IGZvbnQtc2l6ZTogMS4xZW07IH0KCi5mYy10aGVtZS1zdGFuZGFyZCAuZmMtcG9wb3ZlciB7IGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7IGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWZjLWJvcmRlci1jb2xvciwgI2RkZCk7IGJhY2tncm91bmQ6ICNmZmY7IGJhY2tncm91bmQ6IHZhcigtLWZjLXBhZ2UtYmctY29sb3IsICNmZmYpOyB9CgouZmMtdGhlbWUtc3RhbmRhcmQgLmZjLXBvcG92ZXItaGVhZGVyIHsgYmFja2dyb3VuZDogcmdiYSgyMDgsIDIwOCwgMjA4LCAwLjMpOyBiYWNrZ3JvdW5kOiB2YXIoLS1mYy1uZXV0cmFsLWJnLWNvbG9yLCByZ2JhKDIwOCwgMjA4LCAyMDgsIDAuMykpOyB9CgovKiBoZWxwIHRoaW5ncyBjbGVhciBtYXJnaW5zIG9mIGlubmVyIGNvbnRlbnQgKi8KLmZjLWRheWdyaWQtZGF5LWZyYW1lLCAuZmMtZGF5Z3JpZC1kYXktZXZlbnRzLCAuZmMtZGF5Z3JpZC1ldmVudC1oYXJuZXNzIHsgLyogZm9yIGV2ZW50IHRvcC9ib3R0b20gbWFyZ2lucyAqLyB9CgouZmMtZGF5Z3JpZC1kYXktZnJhbWU6YmVmb3JlLCAuZmMtZGF5Z3JpZC1kYXktZXZlbnRzOmJlZm9yZSwgLmZjLWRheWdyaWQtZXZlbnQtaGFybmVzczpiZWZvcmUgeyBjb250ZW50OiAiIjsgY2xlYXI6IGJvdGg7IGRpc3BsYXk6IHRhYmxlOyB9CgouZmMtZGF5Z3JpZC1kYXktZnJhbWU6YWZ0ZXIsIC5mYy1kYXlncmlkLWRheS1ldmVudHM6YWZ0ZXIsIC5mYy1kYXlncmlkLWV2ZW50LWhhcm5lc3M6YWZ0ZXIgeyBjb250ZW50OiAiIjsgY2xlYXI6IGJvdGg7IGRpc3BsYXk6IHRhYmxlOyB9CgouZmMgLmZjLWRheWdyaWQtYm9keSB7IC8qIGEgPGRpdj4gdGhhdCB3cmFwcyB0aGUgdGFibGUgKi8gcG9zaXRpb246IHJlbGF0aXZlOyB6LWluZGV4OiAxOyAvKiBjb250YWluZXIgaW5uZXIgei1pbmRleCdzIGJlY2F1c2UgPHRyPnMgY2FuJ3QgZG8gaXQgKi8gfQoKLmZjIC5mYy1kYXlncmlkLWRheS5mYy1kYXktdG9kYXkgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDksIDExMywgMjU0LCAwLjA3KTsgfQoKLmZjIC5mYy1kYXlncmlkLWRheS1mcmFtZSB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgbWluLWhlaWdodDogMTAwJTsgLyogc2VlbXMgdG8gd29yayBiZXR0ZXIgdGhhbiBgaGVpZ2h0YCBiZWNhdXNlIHNldHMgaGVpZ2h0IGFmdGVyIHJvd3MvY2VsbHMgbmF0dXJhbGx5IGRvIGl0ICovIH0KCi5mYyB7IC8qIGNlbGwgdG9wICovIH0KCi5mYyAuZmMtZGF5Z3JpZC1kYXktdG9wIHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOyB9CgouZmMgLmZjLWRheS1vdGhlciAuZmMtZGF5Z3JpZC1kYXktdG9wIHsgb3BhY2l0eTogMC41OyB9CgouZmMgeyAvKiBkYXkgbnVtYmVyICh3aXRoaW4gY2VsbCB0b3ApICovIH0KCi5mYyAuZmMtZGF5Z3JpZC1kYXktbnVtYmVyIHsgcG9zaXRpb246IHJlbGF0aXZlOyB6LWluZGV4OiA0OyBwYWRkaW5nOiA0cHg7IH0KCi5mYyB7IC8qIGV2ZW50IGNvbnRhaW5lciAqLyB9CgouZmMgLmZjLWRheWdyaWQtZGF5LWV2ZW50cyB7IG1hcmdpbi10b3A6IDFweDsgLyogbmVlZHMgdG8gYmUgbWFyZ2luLCBub3QgcGFkZGluZywgc28gdGhhdCBhdmFpbGFibGUgY2VsbCBoZWlnaHQgY2FuIGJlIGNvbXB1dGVkICovIH0KCi5mYyB7IC8qIHBvc2l0aW9uaW5nIGZvciBiYWxhbmNlZCB2cyBuYXR1cmFsICovIH0KCi5mYyAuZmMtZGF5Z3JpZC1ib2R5LWJhbGFuY2VkIC5mYy1kYXlncmlkLWRheS1ldmVudHMgeyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDA7IHJpZ2h0OiAwOyB9CgouZmMgLmZjLWRheWdyaWQtYm9keS11bmJhbGFuY2VkIC5mYy1kYXlncmlkLWRheS1ldmVudHMgeyBwb3NpdGlvbjogcmVsYXRpdmU7IC8qIGZvciBjb250YWluaW5nIGFicyBwb3NpdGlvbmVkIGV2ZW50IGhhcm5lc3NlcyAqLyBtaW4taGVpZ2h0OiAyZW07IC8qIGluIGFkZGl0aW9uIHRvIGJlaW5nIGEgbWluLWhlaWdodCBkdXJpbmcgbmF0dXJhbCBoZWlnaHQsIGVxdWFsaXplcyB0aGUgaGVpZ2h0cyBhIGxpdHRsZSBiaXQgKi8gfQoKLmZjIC5mYy1kYXlncmlkLWJvZHktbmF0dXJhbCB7IC8qIGNhbiBjb2V4aXN0IHdpdGggLXVuYmFsYW5jZWQgKi8gfQoKLmZjIC5mYy1kYXlncmlkLWJvZHktbmF0dXJhbCAuZmMtZGF5Z3JpZC1kYXktZXZlbnRzIHsgbWFyZ2luLWJvdHRvbTogMWVtOyB9CgouZmMgeyAvKiBldmVudCBoYXJuZXNzICovIH0KCi5mYyAuZmMtZGF5Z3JpZC1ldmVudC1oYXJuZXNzIHsgcG9zaXRpb246IHJlbGF0aXZlOyB9CgouZmMgLmZjLWRheWdyaWQtZXZlbnQtaGFybmVzcy1hYnMgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgLyogZmFsbGJhY2sgY29vcmRzIGZvciB3aGVuIGNhbm5vdCB5ZXQgYmUgY29tcHV0ZWQgKi8gbGVmdDogMDsgLyogKi8gcmlnaHQ6IDA7IC8qICovIH0KCi5mYyAuZmMtZGF5Z3JpZC1iZy1oYXJuZXNzIHsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IGJvdHRvbTogMDsgfQoKLmZjIHsgLyogYmcgY29udGVudCAqLyB9CgouZmMgLmZjLWRheWdyaWQtZGF5LWJnIC5mYy1ub24tYnVzaW5lc3MgeyB6LWluZGV4OiAxOyB9CgouZmMgLmZjLWRheWdyaWQtZGF5LWJnIC5mYy1iZy1ldmVudCB7IHotaW5kZXg6IDI7IH0KCi5mYyAuZmMtZGF5Z3JpZC1kYXktYmcgLmZjLWhpZ2hsaWdodCB7IHotaW5kZXg6IDM7IH0KCi5mYyB7IC8qIGV2ZW50cyAqLyB9CgouZmMgLmZjLWRheWdyaWQtZXZlbnQgeyB6LWluZGV4OiA2OyBtYXJnaW46IC4zNzVyZW0gLjVyZW0gIWltcG9ydGFudDsgfQoKLmZjIC5mYy1kYXlncmlkLWV2ZW50LmZjLWV2ZW50LW1pcnJvciB7IHotaW5kZXg6IDc7IH0KCi5mYyB7IC8qIGNlbGwgYm90dG9tICh3aXRoaW4gZGF5LWV2ZW50cykgKi8gfQoKLmZjIC5mYy1kYXlncmlkLWRheS1ib3R0b20geyBmb250LXNpemU6IC44NWVtOyBtYXJnaW46IDJweCAzcHggMDsgfQoKLmZjIC5mYy1kYXlncmlkLW1vcmUtbGluayB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgei1pbmRleDogNDsgY3Vyc29yOiBwb2ludGVyOyB9CgouZmMgeyAvKiB3ZWVrIG51bWJlciAod2l0aGluIGZyYW1lKSAqLyB9CgouZmMgLmZjLWRheWdyaWQtd2Vlay1udW1iZXIgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHotaW5kZXg6IDU7IHRvcDogMDsgcGFkZGluZzogMnB4OyBtaW4td2lkdGg6IDEuNWVtOyB0ZXh0LWFsaWduOiBjZW50ZXI7IGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjA4LCAyMDgsIDIwOCwgMC4zKTsgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZmMtbmV1dHJhbC1iZy1jb2xvciwgcmdiYSgyMDgsIDIwOCwgMjA4LCAwLjMpKTsgY29sb3I6ICM4MDgwODA7IGNvbG9yOiB2YXIoLS1mYy1uZXV0cmFsLXRleHQtY29sb3IsICM4MDgwODApOyB9CgouZmMgeyAvKiBwb3BvdmVyICovIH0KCi5mYyAuZmMtbW9yZS1wb3BvdmVyIHsgei1pbmRleDogODsgfQoKLmZjIC5mYy1tb3JlLXBvcG92ZXIgLmZjLXBvcG92ZXItYm9keSB7IG1pbi13aWR0aDogMjIwcHg7IHBhZGRpbmc6IDEwcHg7IH0KCi5mYy1kaXJlY3Rpb24tbHRyIC5mYy1kYXlncmlkLWV2ZW50LmZjLWV2ZW50LXN0YXJ0LCAuZmMtZGlyZWN0aW9uLXJ0bCAuZmMtZGF5Z3JpZC1ldmVudC5mYy1ldmVudC1lbmQgeyBtYXJnaW4tbGVmdDogLjI1cmVtOyB9CgouZmMtZGlyZWN0aW9uLWx0ciAuZmMtZGF5Z3JpZC1ldmVudC5mYy1ldmVudC1lbmQsIC5mYy1kaXJlY3Rpb24tcnRsIC5mYy1kYXlncmlkLWV2ZW50LmZjLWV2ZW50LXN0YXJ0IHsgbWFyZ2luLXJpZ2h0OiAuMjVyZW07IH0KCi5mYy1kaXJlY3Rpb24tbHRyIC5mYy1kYXlncmlkLXdlZWstbnVtYmVyIHsgbGVmdDogMDsgYm9yZGVyLXJhZGl1czogMCAwIDNweCAwOyB9CgouZmMtZGlyZWN0aW9uLXJ0bCAuZmMtZGF5Z3JpZC13ZWVrLW51bWJlciB7IHJpZ2h0OiAwOyBib3JkZXItcmFkaXVzOiAwIDAgMCAzcHg7IH0KCi5mYy1saXF1aWQtaGFjayAuZmMtZGF5Z3JpZC1kYXktZnJhbWUgeyBwb3NpdGlvbjogc3RhdGljOyAvKiB3aWxsIGNhdXNlIGlubmVyIGFic29sdXRlIHN0dWZmIHRvIGV4cGFuZCB0byA8dGQ+ICovIH0KCi5mYy1kYXlncmlkLWV2ZW50IHsgLyogbWFrZSByb290LWxldmVsLCBiZWNhdXNlIHdpbGwgYmUgZHJhZ2dlZC1hbmQtZHJvcHBlZCBvdXRzaWRlIG9mIGEgY29tcG9uZW50IHJvb3QgKi8gcG9zaXRpb246IHJlbGF0aXZlOyAvKiBmb3Igei1pbmRleGVzIGFzc2lnbmVkIGxhdGVyICovIHdoaXRlLXNwYWNlOiBub3dyYXA7IGJvcmRlci1yYWRpdXM6IDNweDsgLyogZG90IGV2ZW50IG5lZWRzIHRoaXMgdG8gd2hlbiBzZWxlY3RlZCAqLyBmb250LXNpemU6IC44NWVtOyBmb250LXNpemU6IHZhcigtLWZjLXNtYWxsLWZvbnQtc2l6ZSwgMC44NWVtKTsgfQoKLyogLS0tIHRoZSByZWN0YW5nbGUgKCJibG9jayIpIHN0eWxlIG9mIGV2ZW50IC0tLSAqLwouZmMtZGF5Z3JpZC1ibG9jay1ldmVudCAuZmMtZXZlbnQtdGltZSB7IGZvbnQtd2VpZ2h0OiBib2xkOyB9CgouZmMtZGF5Z3JpZC1ibG9jay1ldmVudCAuZmMtZXZlbnQtdGltZSwgLmZjLWRheWdyaWQtYmxvY2stZXZlbnQgLmZjLWV2ZW50LXRpdGxlIHsgcGFkZGluZzogMXB4OyB9CgovKiAtLS0gdGhlIGRvdCBzdHlsZSBvZiBldmVudCAtLS0gKi8KLmZjLWRheWdyaWQtZG90LWV2ZW50IHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgcGFkZGluZzogLjI1cmVtIC4yNXJlbTsgfQoKLmZjLWRheWdyaWQtZG90LWV2ZW50IC5mYy1ldmVudC10aXRsZSB7IGZsZXgtZ3JvdzogMTsgZmxleC1zaHJpbms6IDE7IG1pbi13aWR0aDogMDsgLyogaW1wb3J0YW50IGZvciBhbGxvd2luZyB0byBzaHJpbmsgYWxsIHRoZSB3YXkgKi8gb3ZlcmZsb3c6IGhpZGRlbjsgZm9udC13ZWlnaHQ6IGJvbGQ7IH0KCi5mYy1kYXlncmlkLWRvdC1ldmVudDpob3ZlciwgLmZjLWRheWdyaWQtZG90LWV2ZW50LmZjLWV2ZW50LW1pcnJvciB7IGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4xKTsgfQoKLmZjLWRheWdyaWQtZG90LWV2ZW50LmZjLWV2ZW50LXNlbGVjdGVkOmJlZm9yZSB7IC8qIGV4cGFuZCBoaXQgYXJlYSAqLyB0b3A6IC0xMHB4OyBib3R0b206IC0xMHB4OyB9CgouZmMtZGF5Z3JpZC1ldmVudC1kb3QgeyAvKiB0aGUgYWN0dWFsIGRvdCAqLyBtYXJnaW46IC0ycHggNHB4IDA7IGJveC1zaXppbmc6IGNvbnRlbnQtYm94OyB3aWR0aDogMDsgaGVpZ2h0OiAwOyBib3JkZXI6IDNweCBzb2xpZCAjMDk3MWZlOyBib3JkZXItcmFkaXVzOiA0cHg7IH0KCi8qIC0tLSBzcGFjaW5nIGJldHdlZW4gdGltZSBhbmQgdGl0bGUgLS0tICovCi5mYy1kaXJlY3Rpb24tbHRyIC5mYy1kYXlncmlkLWV2ZW50IC5mYy1ldmVudC10aW1lIHsgbWFyZ2luLXJpZ2h0OiAzcHg7IH0KCi5mYy1kaXJlY3Rpb24tcnRsIC5mYy1kYXlncmlkLWV2ZW50IC5mYy1ldmVudC10aW1lIHsgbWFyZ2luLWxlZnQ6IDNweDsgfQoKLyoKQSBWRVJUSUNBTCBldmVudAoqLwouZmMtdi1ldmVudCB7IC8qIGFsbG93ZWQgdG8gYmUgdG9wLWxldmVsICovIGRpc3BsYXk6IGJsb2NrOyBib3JkZXI6IDFweCBzb2xpZCAjMDk3MWZlOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDk3MWZlOyB9CgouZmMtdi1ldmVudCAuZmMtZXZlbnQtbWFpbiB7IGhlaWdodDogMTAwJTsgfQoKLmZjLXYtZXZlbnQgLmZjLWV2ZW50LW1haW4tZnJhbWUgeyBoZWlnaHQ6IDEwMCU7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IH0KCi5mYy12LWV2ZW50IC5mYy1ldmVudC10aW1lIHsgZmxleC1ncm93OiAwOyBmbGV4LXNocmluazogMDsgbWF4LWhlaWdodDogMTAwJTsgb3ZlcmZsb3c6IGhpZGRlbjsgfQoKLmZjLXYtZXZlbnQgLmZjLWV2ZW50LXRpdGxlLWNvbnRhaW5lciB7IC8qIGEgY29udGFpbmVyIGZvciB0aGUgc3RpY2t5IGN1c2hpb24gKi8gZmxleC1ncm93OiAxOyBmbGV4LXNocmluazogMTsgbWluLWhlaWdodDogMDsgLyogaW1wb3J0YW50IGZvciBhbGxvd2luZyB0byBzaHJpbmsgYWxsIHRoZSB3YXkgKi8gfQoKLmZjLXYtZXZlbnQgLmZjLWV2ZW50LXRpdGxlIHsgLyogd2lsbCBoYXZlIGZjLXN0aWNreSBvbiBpdCAqLyB0b3A6IDA7IGJvdHRvbTogMDsgbWF4LWhlaWdodDogMTAwJTsgLyogY2xpcCBvdmVyZmxvdyAqLyBvdmVyZmxvdzogaGlkZGVuOyB9CgouZmMtdi1ldmVudDpub3QoLmZjLWV2ZW50LXN0YXJ0KSB7IGJvcmRlci10b3Atd2lkdGg6IDA7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7IGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwOyB9CgouZmMtdi1ldmVudDpub3QoLmZjLWV2ZW50LWVuZCkgeyBib3JkZXItYm90dG9tLXdpZHRoOiAwOyBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwOyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsgfQoKLmZjLXYtZXZlbnQuZmMtZXZlbnQtc2VsZWN0ZWQ6YmVmb3JlIHsgLyogZXhwYW5kIGhpdCBhcmVhICovIGxlZnQ6IC0xMHB4OyByaWdodDogLTEwcHg7IH0KCi5mYy12LWV2ZW50IHsgLyogcmVzaXplciAobW91c2UgQU5EIHRvdWNoKSAqLyB9CgouZmMtdi1ldmVudCAuZmMtZXZlbnQtcmVzaXplci1zdGFydCB7IGN1cnNvcjogbi1yZXNpemU7IH0KCi5mYy12LWV2ZW50IC5mYy1ldmVudC1yZXNpemVyLWVuZCB7IGN1cnNvcjogcy1yZXNpemU7IH0KCi5mYy12LWV2ZW50IHsgLyogcmVzaXplciBmb3IgTU9VU0UgKi8gfQoKLmZjLXYtZXZlbnQ6bm90KC5mYy1ldmVudC1zZWxlY3RlZCkgLmZjLWV2ZW50LXJlc2l6ZXIgeyBoZWlnaHQ6IDhweDsgaGVpZ2h0OiB2YXIoLS1mYy1ldmVudC1yZXNpemVyLXRoaWNrbmVzcywgOHB4KTsgbGVmdDogMDsgcmlnaHQ6IDA7IH0KCi5mYy12LWV2ZW50Om5vdCguZmMtZXZlbnQtc2VsZWN0ZWQpIC5mYy1ldmVudC1yZXNpemVyLXN0YXJ0IHsgdG9wOiAtNHB4OyB0b3A6IGNhbGModmFyKC0tZmMtZXZlbnQtcmVzaXplci10aGlja25lc3MsIDhweCkgLyAtMik7IH0KCi5mYy12LWV2ZW50Om5vdCguZmMtZXZlbnQtc2VsZWN0ZWQpIC5mYy1ldmVudC1yZXNpemVyLWVuZCB7IGJvdHRvbTogLTRweDsgYm90dG9tOiBjYWxjKHZhcigtLWZjLWV2ZW50LXJlc2l6ZXItdGhpY2tuZXNzLCA4cHgpIC8gLTIpOyB9CgouZmMtdi1ldmVudCB7IC8qIHJlc2l6ZXIgZm9yIFRPVUNIICh3aGVuIGV2ZW50IGlzICJzZWxlY3RlZCIpICovIH0KCi5mYy12LWV2ZW50LmZjLWV2ZW50LXNlbGVjdGVkIC5mYy1ldmVudC1yZXNpemVyIHsgbGVmdDogNTAlOyBtYXJnaW4tbGVmdDogLTRweDsgbWFyZ2luLWxlZnQ6IGNhbGModmFyKC0tZmMtZXZlbnQtcmVzaXplci1kb3QtdG90YWwtd2lkdGgsIDhweCkgLyAtMik7IH0KCi5mYy12LWV2ZW50LmZjLWV2ZW50LXNlbGVjdGVkIC5mYy1ldmVudC1yZXNpemVyLXN0YXJ0IHsgdG9wOiAtNHB4OyB0b3A6IGNhbGModmFyKC0tZmMtZXZlbnQtcmVzaXplci1kb3QtdG90YWwtd2lkdGgsIDhweCkgLyAtMik7IH0KCi5mYy12LWV2ZW50LmZjLWV2ZW50LXNlbGVjdGVkIC5mYy1ldmVudC1yZXNpemVyLWVuZCB7IGJvdHRvbTogLTRweDsgYm90dG9tOiBjYWxjKHZhcigtLWZjLWV2ZW50LXJlc2l6ZXItZG90LXRvdGFsLXdpZHRoLCA4cHgpIC8gLTIpOyB9CgouZmMgLmZjLXRpbWVncmlkIC5mYy1kYXlncmlkLWJvZHkgeyAvKiB0aGUgYWxsLWRheSBkYXlncmlkIHdpdGhpbiB0aGUgdGltZWdyaWQgdmlldyAqLyB6LWluZGV4OiAyOyAvKiBwdXQgYWJvdmUgdGhlIHRpbWVncmlkLWJvZHkgc28gdGhhdCBtb3JlLXBvcG92ZXIgaXMgYWJvdmUgZXZlcnl0aGluZy4gVE9ETzogYmV0dGVyIHNvbHV0aW9uICovIH0KCi5mYyAuZmMtdGltZWdyaWQtZGl2aWRlciB7IHBhZGRpbmc6IDAgMCAycHg7IC8qIGJyb3dzZXJzIGdldCBjb25mdXNlZCB3aGVuIHlvdSBzZXQgaGVpZ2h0LiB1c2UgcGFkZGluZyBpbnN0ZWFkICovIH0KCi5mYyAuZmMtdGltZWdyaWQtYm9keSB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgei1pbmRleDogMTsgLyogc2NvcGUgdGhlIHotaW5kZXhlcyBvZiBzbG90cyBhbmQgY29scyAqLyBtaW4taGVpZ2h0OiAxMDAlOyAvKiBmaWxsIGhlaWdodCBhbHdheXMsIGV2ZW4gd2hlbiBzbGF0IHRhYmxlIGRvZXNuJ3QgZ3JvdyAqLyB9CgouZmMgLmZjLXRpbWVncmlkLWF4aXMtY2h1bmsgeyAvKiBmb3IgYWR2YW5jZWQgU2Nyb2xsR3JpZCAqLyBwb3NpdGlvbjogcmVsYXRpdmU7IH0KCi5mYyAuZmMtdGltZWdyaWQtYXhpcy1jaHVuayA+IHRhYmxlIHsgcG9zaXRpb246IHJlbGF0aXZlOyB6LWluZGV4OiAxOyAvKiBhYm92ZSB0aGUgbm93LWluZGljYXRvci1jb250YWluZXIgKi8gfQoKLmZjIC5mYy10aW1lZ3JpZC1zbG90cyB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgei1pbmRleDogMTsgfQoKLmZjIC5mYy10aW1lZ3JpZC1zbG90IHsgLyogYSA8dGQ+ICovIGhlaWdodDogMS41ZW07IGJvcmRlci1ib3R0b206IDA7IC8qIGVhY2ggY2VsbCBvd25zIGl0cyB0b3AgYm9yZGVyICovIHBhZGRpbmc6IC4yNXJlbTsgfQoKLmZjIC5mYy10aW1lZ3JpZC1zbG90OmVtcHR5OmJlZm9yZSB7IGNvbnRlbnQ6ICdcMDBhMCc7IC8qIG1ha2Ugc3VyZSB0aGVyZSdzIGF0IGxlYXN0IGFuIGVtcHR5IHNwYWNlIHRvIGNyZWF0ZSBoZWlnaHQgZm9yIGhlaWdodCBzeW5jaW5nICovIH0KCi5mYyAuZmMtdGltZWdyaWQtc2xvdC1taW5vciB7IGJvcmRlci10b3Atc3R5bGU6IGRvdHRlZDsgfQoKLmZjIC5mYy10aW1lZ3JpZC1zbG90LWxhYmVsLWN1c2hpb24geyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHdoaXRlLXNwYWNlOiBub3dyYXA7IH0KCi5mYyAuZmMtdGltZWdyaWQtc2xvdC1sYWJlbCB7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IC8qIHZlcnRpY2FsIGFsaWduIHRoZSBzbG90cyAqLyB9CgouZmMgeyAvKiBzbG90cyBBTkQgYXhpcyBjZWxscyAodG9wLWxlZnQgY29ybmVyIG9mIHZpZXcgaW5jbHVkaW5nIHRoZSAiYWxsLWRheSIgdGV4dCkgKi8gfQoKLmZjIC5mYy10aW1lZ3JpZC1heGlzLWN1c2hpb24sIC5mYyAuZmMtdGltZWdyaWQtc2xvdC1sYWJlbC1jdXNoaW9uIHsgcGFkZGluZzogMCA0cHg7IH0KCi5mYyB7IC8qIGF4aXMgY2VsbHMgKHRvcC1sZWZ0IGNvcm5lciBvZiB2aWV3IGluY2x1ZGluZyB0aGUgImFsbC1kYXkiIHRleHQpICovIC8qIHZlcnRpY2FsIGFsaWduIGlzIG1vcmUgY29tcGxpY2F0ZWQsIHVzZXMgZmxleGJveCAqLyB9CgouZmMgLmZjLXRpbWVncmlkLWF4aXMtZnJhbWUtbGlxdWlkIHsgaGVpZ2h0OiAxMDAlOyAvKiB3aWxsIG5lZWQgbGlxdWlkLWhhY2sgaW4gRkYgKi8gfQoKLmZjIC5mYy10aW1lZ3JpZC1heGlzLWZyYW1lIHsgb3ZlcmZsb3c6IGhpZGRlbjsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgLyogdmVydGljYWwgYWxpZ24gKi8ganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsgLyogaG9yaXpvbnRhbCBhbGlnbi4gbWF0Y2hlcyB0ZXh0LWFsaWduIGJlbG93ICovIH0KCi5mYyAuZmMtdGltZWdyaWQtYXhpcy1jdXNoaW9uIHsgbWF4LXdpZHRoOiA2MHB4OyAvKiBsaW1pdHMgdGhlIHdpZHRoIG9mIHRoZSAiYWxsLWRheSIgdGV4dCAqLyBmbGV4LXNocmluazogMDsgLyogYWxsb3dzIHRleHQgdG8gZXhwYW5kIGhvdyBpdCBub3JtYWxseSB3b3VsZCwgcmVnYXJkbGVzcyBvZiBjb25zdHJhaW5lZCB3aWR0aCAqLyB9CgouZmMtZGlyZWN0aW9uLWx0ciAuZmMtdGltZWdyaWQtc2xvdC1sYWJlbC1mcmFtZSB7IHRleHQtYWxpZ246IHJpZ2h0OyB9CgouZmMtZGlyZWN0aW9uLXJ0bCAuZmMtdGltZWdyaWQtc2xvdC1sYWJlbC1mcmFtZSB7IHRleHQtYWxpZ246IGxlZnQ7IH0KCi5mYy1saXF1aWQtaGFjayAuZmMtdGltZWdyaWQtYXhpcy1mcmFtZS1saXF1aWQgeyBoZWlnaHQ6IGF1dG87IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyByaWdodDogMDsgYm90dG9tOiAwOyBsZWZ0OiAwOyB9CgouZmMgLmZjLXRpbWVncmlkLWNvbC5mYy1kYXktdG9kYXkgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDksIDExMywgMjU0LCAwLjA3KTsgfQoKLmZjIC5mYy10aW1lZ3JpZC1jb2wtZnJhbWUgeyBtaW4taGVpZ2h0OiAxMDAlOyAvKiBsaXF1aWQtaGFjayBpcyBiZWxvdyAqLyBwb3NpdGlvbjogcmVsYXRpdmU7IH0KCi5mYy1saXF1aWQtaGFjayAuZmMtdGltZWdyaWQtY29sLWZyYW1lIHsgaGVpZ2h0OiBhdXRvOyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgcmlnaHQ6IDA7IGJvdHRvbTogMDsgbGVmdDogMDsgfQoKLmZjLW1lZGlhLXNjcmVlbiAuZmMtdGltZWdyaWQtY29scyB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgLyogbm8gei1pbmRleC4gY2hpbGRyZW4gd2lsbCBkZWNpZGUgYW5kIGdvIGFib3ZlIHNsb3RzICovIHRvcDogMDsgbGVmdDogMDsgcmlnaHQ6IDA7IGJvdHRvbTogMDsgfQoKLmZjLW1lZGlhLXNjcmVlbiAuZmMtdGltZWdyaWQtY29scyA+IHRhYmxlIHsgaGVpZ2h0OiAxMDAlOyB9CgouZmMtbWVkaWEtc2NyZWVuIC5mYy10aW1lZ3JpZC1jb2wtYmcsIC5mYy1tZWRpYS1zY3JlZW4gLmZjLXRpbWVncmlkLWNvbC1ldmVudHMsIC5mYy1tZWRpYS1zY3JlZW4gLmZjLXRpbWVncmlkLW5vdy1pbmRpY2F0b3ItY29udGFpbmVyIHsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IGxlZnQ6IDA7IHJpZ2h0OiAwOyB9CgouZmMtbWVkaWEtc2NyZWVuIC5mYy10aW1lZ3JpZC1ldmVudC1oYXJuZXNzIHsgcG9zaXRpb246IGFic29sdXRlOyAvKiB0b3AvbGVmdC9yaWdodC9ib3R0b20gd2lsbCBhbGwgYmUgc2V0IGJ5IEpTICovIH0KCi5mYyB7IC8qIGJnICovIH0KCi5mYyAuZmMtdGltZWdyaWQtY29sLWJnIHsgei1pbmRleDogMjsgLyogVE9ETzoga2lsbCAqLyB9CgouZmMgLmZjLXRpbWVncmlkLWNvbC1iZyAuZmMtbm9uLWJ1c2luZXNzIHsgei1pbmRleDogMTsgfQoKLmZjIC5mYy10aW1lZ3JpZC1jb2wtYmcgLmZjLWJnLWV2ZW50IHsgei1pbmRleDogMjsgfQoKLmZjIC5mYy10aW1lZ3JpZC1jb2wtYmcgLmZjLWhpZ2hsaWdodCB7IHotaW5kZXg6IDM7IH0KCi5mYyAuZmMtdGltZWdyaWQtYmctaGFybmVzcyB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgLyogdG9wL2JvdHRvbSB3aWxsIGJlIHNldCBieSBKUyAqLyBsZWZ0OiAwOyByaWdodDogMDsgfQoKLmZjIHsgLyogZmcgZXZlbnRzICovIC8qICh0aGUgbWlycm9yIHNlZ3MgYXJlIHB1dCBpbnRvIGEgc2VwYXJhdGUgY29udGFpbmVyIHdpdGggc2FtZSBjbGFzc25hbWUsICovIC8qIGFuZCB0aGV5IG11c3QgYmUgYWZ0ZXIgdGhlIG5vcm1hbCBzZWcgY29udGFpbmVyIHRvIGFwcGVhciBhdCBhIGhpZ2hlciB6LWluZGV4KSAqLyB9CgouZmMgLmZjLXRpbWVncmlkLWNvbC1ldmVudHMgeyB6LWluZGV4OiAzOyAvKiBjaGlsZCBldmVudCBzZWdzIGhhdmUgei1pbmRleGVzIHRoYXQgYXJlIHNjb3BlZCB3aXRoaW4gdGhpcyBkaXYgKi8gfQoKLmZjIHsgLyogbm93IGluZGljYXRvciAqLyB9CgouZmMgLmZjLXRpbWVncmlkLW5vdy1pbmRpY2F0b3ItY29udGFpbmVyIHsgYm90dG9tOiAwOyBvdmVyZmxvdzogaGlkZGVuOyAvKiBkb24ndCBsZXQgb3ZlcmZsb3cgb2YgbGluZXMvYXJyb3dzIGNhdXNlIHVubmVjZXNzYXJ5IHNjcm9sbGluZyAqLyAvKiB6LWluZGV4IGlzIHNldCBvbiB0aGUgaW5kaXZpZHVhbCBlbGVtZW50cyAqLyB9CgouZmMtZGlyZWN0aW9uLWx0ciAuZmMtdGltZWdyaWQtY29sLWV2ZW50cyB7IG1hcmdpbjogMCAyLjUlIDAgMnB4OyB9CgouZmMtZGlyZWN0aW9uLXJ0bCAuZmMtdGltZWdyaWQtY29sLWV2ZW50cyB7IG1hcmdpbjogMCAycHggMCAyLjUlOyB9CgouZmMtdGltZWdyaWQtZXZlbnQtaGFybmVzcy1pbnNldCAuZmMtdGltZWdyaWQtZXZlbnQsIC5mYy10aW1lZ3JpZC1ldmVudC5mYy1ldmVudC1taXJyb3IgeyBib3gtc2hhZG93OiAwcHggMHB4IDBweCAxcHggI2ZmZjsgYm94LXNoYWRvdzogMHB4IDBweCAwcHggMXB4IHZhcigtLWZjLXBhZ2UtYmctY29sb3IsICNmZmYpOyB9CgouZmMtdGltZWdyaWQtZXZlbnQgeyAvKiBldmVudHMgbmVlZCB0byBiZSByb290ICovIGZvbnQtc2l6ZTogLjg1ZW07IGZvbnQtc2l6ZTogdmFyKC0tZmMtc21hbGwtZm9udC1zaXplLCAwLjg1ZW0pOyBib3JkZXItcmFkaXVzOiAzcHg7IH0KCi5mYy10aW1lZ3JpZC1ldmVudCAuZmMtZXZlbnQtbWFpbiB7IHBhZGRpbmc6IDFweCAxcHggMDsgfQoKLmZjLXRpbWVncmlkLWV2ZW50IC5mYy1ldmVudC10aW1lIHsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgZm9udC1zaXplOiAuODVlbTsgZm9udC1zaXplOiB2YXIoLS1mYy1zbWFsbC1mb250LXNpemUsIDAuODVlbSk7IG1hcmdpbi1ib3R0b206IDFweDsgfQoKLmZjLXRpbWVncmlkLWV2ZW50LWNvbmRlbnNlZCAuZmMtZXZlbnQtbWFpbi1mcmFtZSB7IGZsZXgtZGlyZWN0aW9uOiByb3c7IG92ZXJmbG93OiBoaWRkZW47IH0KCi5mYy10aW1lZ3JpZC1ldmVudC1jb25kZW5zZWQgLmZjLWV2ZW50LXRpbWU6YWZ0ZXIgeyBjb250ZW50OiAnXDAwYTAtXDAwYTAnOyAvKiBkYXNoIHN1cnJvdW5kZWQgYnkgbm9uLWJyZWFraW5nIHNwYWNlcyAqLyB9CgouZmMtdGltZWdyaWQtZXZlbnQtY29uZGVuc2VkIC5mYy1ldmVudC10aXRsZSB7IGZvbnQtc2l6ZTogLjg1ZW07IGZvbnQtc2l6ZTogdmFyKC0tZmMtc21hbGwtZm9udC1zaXplLCAwLjg1ZW0pOyB9CgouZmMtbWVkaWEtc2NyZWVuIC5mYy10aW1lZ3JpZC1ldmVudCB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgLyogYWJzb2x1dGUgV0lUSElOIHRoZSBoYXJuZXNzICovIHRvcDogMDsgYm90dG9tOiAxcHg7IC8qIHN0YXkgYXdheSBmcm9tIGJvdHRvbSBzbG90IGxpbmUgKi8gbGVmdDogMDsgcmlnaHQ6IDA7IH0KCi5mYyB7IC8qIGxpbmUgKi8gfQoKLmZjIC5mYy10aW1lZ3JpZC1ub3ctaW5kaWNhdG9yLWxpbmUgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHotaW5kZXg6IDQ7IGxlZnQ6IDA7IHJpZ2h0OiAwOyBib3JkZXItc3R5bGU6IHNvbGlkOyBib3JkZXItY29sb3I6ICNlODUzNDc7IGJvcmRlci13aWR0aDogMXB4IDAgMDsgfQoKLmZjIHsgLyogYXJyb3cgKi8gfQoKLmZjIC5mYy10aW1lZ3JpZC1ub3ctaW5kaWNhdG9yLWFycm93IHsgcG9zaXRpb246IGFic29sdXRlOyB6LWluZGV4OiA0OyBtYXJnaW4tdG9wOiAtNXB4OyAvKiB2ZXJ0aWNhbGx5IGNlbnRlciBvbiB0b3AgY29vcmRpbmF0ZSAqLyBib3JkZXItc3R5bGU6IHNvbGlkOyBib3JkZXItY29sb3I6ICNlODUzNDc7IH0KCi5mYy1kaXJlY3Rpb24tbHRyIC5mYy10aW1lZ3JpZC1ub3ctaW5kaWNhdG9yLWFycm93IHsgbGVmdDogMDsgLyogdHJpYW5nbGUgcG9pbnRpbmcgcmlnaHQuIFRPRE86IG1peGluICovIGJvcmRlci13aWR0aDogNXB4IDAgNXB4IDZweDsgYm9yZGVyLXRvcC1jb2xvcjogdHJhbnNwYXJlbnQ7IGJvcmRlci1ib3R0b20tY29sb3I6IHRyYW5zcGFyZW50OyB9CgouZmMtZGlyZWN0aW9uLXJ0bCAuZmMtdGltZWdyaWQtbm93LWluZGljYXRvci1hcnJvdyB7IHJpZ2h0OiAwOyAvKiB0cmlhbmdsZSBwb2ludGluZyBsZWZ0LiBUT0RPOiBtaXhpbiAqLyBib3JkZXItd2lkdGg6IDVweCA2cHggNXB4IDA7IGJvcmRlci10b3AtY29sb3I6IHRyYW5zcGFyZW50OyBib3JkZXItYm90dG9tLWNvbG9yOiB0cmFuc3BhcmVudDsgfQoKOnJvb3QgeyAtLWZjLWxpc3QtZXZlbnQtZG90LXdpZHRoOiAxMHB4OyAtLWZjLWxpc3QtZXZlbnQtaG92ZXItYmctY29sb3I6ICNmNWY1ZjU7IH0KCi5mYy10aGVtZS1zdGFuZGFyZCAuZmMtbGlzdCB7IGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7IH0KCi5mYyB7IC8qIG1lc3NhZ2Ugd2hlbiBubyBldmVudHMgKi8gfQoKLmZjIC5mYy1saXN0LWVtcHR5IHsgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjZmYTsgaGVpZ2h0OiAxMDAlOyBkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgYWxpZ24taXRlbXM6IGNlbnRlcjsgLyogdmVydGljYWxseSBhbGlnbnMgZmMtbGlzdC1lbXB0eS1pbm5lciAqLyB9CgouZmMgLmZjLWxpc3QtZW1wdHktY3VzaGlvbiB7IG1hcmdpbjogNWVtIDA7IH0KCi5mYyB7IC8qIHRhYmxlIHdpdGhpbiB0aGUgc2Nyb2xsZXIgKi8gLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLyB9CgouZmMgLmZjLWxpc3QtdGFibGUgeyB3aWR0aDogMTAwJTsgYm9yZGVyLXN0eWxlOiBoaWRkZW47IC8qIGtpbGwgb3V0ZXIgYm9yZGVyIG9uIHRoZW1lICovIH0KCi5mYyAuZmMtbGlzdC10YWJsZSB0ciA+ICogeyBib3JkZXItbGVmdDogMDsgYm9yZGVyLXJpZ2h0OiAwOyB9CgouZmMgLmZjLWxpc3Qtc3RpY2t5IC5mYy1saXN0LWRheSA+ICogeyAvKiB0aGUgY2VsbHMgKi8gcG9zaXRpb246IC13ZWJraXQtc3RpY2t5OyBwb3NpdGlvbjogc3RpY2t5OyB0b3A6IDA7IGJhY2tncm91bmQ6ICNmZmY7IGJhY2tncm91bmQ6IHZhcigtLWZjLXBhZ2UtYmctY29sb3IsICNmZmYpOyAvKiBmb3Igd2hlbiBoZWFkZXJzIGFyZSBzdHlsZWQgdG8gYmUgdHJhbnNwYXJlbnQgYW5kIHN0aWNreSAqLyB9CgouZmMgLmZjLWxpc3QtdGFibGUgdGggeyBwYWRkaW5nOiAwOyAvKiB1c2VzIGFuIGlubmVyLXdyYXBwZXIgaW5zdGVhZC4uLiAqLyB9CgouZmMgLmZjLWxpc3QtdGFibGUgdGQsIC5mYyAuZmMtbGlzdC1kYXktY3VzaGlvbiB7IHBhZGRpbmc6IC43NXJlbSAxcmVtOyB9CgouZmMgLmZjLWxpc3QtdGFibGUgdGggLmZjLWxpc3QtZGF5LWN1c2hpb24geyBwYWRkaW5nOiAuNXJlbSAxcmVtOyB9CgouZmMgeyAvKiBkYXRlIGhlYWRpbmcgcm93cyAqLyAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovIH0KCi5mYyAuZmMtbGlzdC1kYXktY3VzaGlvbjphZnRlciB7IGNvbnRlbnQ6ICIiOyBjbGVhcjogYm90aDsgZGlzcGxheTogdGFibGU7IC8qIGNsZWFyIGZsb2F0aW5nICovIH0KCi5mYy10aGVtZS1zdGFuZGFyZCAuZmMtbGlzdC1kYXktY3VzaGlvbiB7IGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjA4LCAyMDgsIDIwOCwgMC4zKTsgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZmMtbmV1dHJhbC1iZy1jb2xvciwgcmdiYSgyMDgsIDIwOCwgMjA4LCAwLjMpKTsgfQoKLmZjLWRpcmVjdGlvbi1sdHIgLmZjLWxpc3QtZGF5LXRleHQsIC5mYy1kaXJlY3Rpb24tcnRsIC5mYy1saXN0LWRheS1zaWRlLXRleHQgeyBmbG9hdDogbGVmdDsgfQoKLmZjLWRpcmVjdGlvbi1sdHIgLmZjLWxpc3QtZGF5LXNpZGUtdGV4dCwgLmZjLWRpcmVjdGlvbi1ydGwgLmZjLWxpc3QtZGF5LXRleHQgeyBmbG9hdDogcmlnaHQ7IH0KCi8qIG1ha2UgdGhlIGRvdCBjbG9zZXIgdG8gdGhlIGV2ZW50IHRpdGxlICovCi5mYy1kaXJlY3Rpb24tbHRyIC5mYy1saXN0LXRhYmxlIC5mYy1saXN0LWV2ZW50LWdyYXBoaWMgeyBwYWRkaW5nLXJpZ2h0OiAwOyB9CgouZmMtZGlyZWN0aW9uLXJ0bCAuZmMtbGlzdC10YWJsZSAuZmMtbGlzdC1ldmVudC1ncmFwaGljIHsgcGFkZGluZy1sZWZ0OiAwOyB9CgouZmMgLmZjLWxpc3QtZXZlbnQuZmMtZXZlbnQtZm9yY2VkLXVybCB7IGN1cnNvcjogcG9pbnRlcjsgLyogd2hvbGUgcm93IHdpbGwgc2VlbSBjbGlja2FibGUgKi8gfQoKLmZjIHsgLyogc2hyaW5rIGNlcnRhaW4gY29scyAqLyB9CgouZmMgLmZjLWxpc3QtZXZlbnQtZ3JhcGhpYywgLmZjIC5mYy1saXN0LWV2ZW50LXRpbWUgeyB3aGl0ZS1zcGFjZTogbm93cmFwOyB3aWR0aDogMXB4OyB9CgouZmMgLmZjLWxpc3QtZXZlbnQtZG90IHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogMTBweDsgaGVpZ2h0OiAxMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDk3MWZlOyBib3JkZXI6IDJweCBzb2xpZCAjMDk3MWZlOyBib3JkZXItcmFkaXVzOiA1cHg7IH0KCi5mYyB7IC8qIHJlc2V0IDxhPiBzdHlsaW5nICovIH0KCi5mYyAuZmMtbGlzdC1ldmVudC10aXRsZSBhIHsgY29sb3I6IGluaGVyaXQ7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfQoKLmZjIHsgLyogdW5kZXJsaW5lIGxpbmsgd2hlbiBob3ZlcmluZyBvdmVyIGFueSBwYXJ0IG9mIHJvdyAqLyB9CgouZmMgLmZjLWxpc3QtZXZlbnQuZmMtZXZlbnQtZm9yY2VkLXVybDpob3ZlciBhIHsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IH0KCi5mYy10aGVtZS1ib290c3RyYXAgYTpub3QoW2hyZWZdKSB7IGNvbG9yOiBpbmhlcml0OyAvKiBuYXR1cmFsIGNvbG9yIGZvciBuYXZsaW5rcyAqLyB9CgouZmMgYS5mYy1ldmVudDpub3QoW2hyZWZdKSB7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kOiAjMDk3MWZlOyB9CgouZmMgYS5mYy1ldmVudDpub3QoW2hyZWZdKSAuZmMtZGF5Z3JpZC1ldmVudC1kb3QgeyBib3JkZXItY29sb3I6ICNmZmY7IH0KCi5mYy1wcmV2LWJ1dHRvbiwgLmZjLW5leHQtYnV0dG9uIHsgcGFkZGluZy1sZWZ0OiAwLjVyZW07IHBhZGRpbmctcmlnaHQ6IDAuNXJlbTsgfQoKLmZjLXByZXYtYnV0dG9uID4gLmZhLCAuZmMtbmV4dC1idXR0b24gPiAuZmEgeyBmb250LXNpemU6IDEuMjVyZW07IH0KCnNwYW5bY2xhc3MqPSJmYy1ldmVudCJdIC5kb3QgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGJvcmRlcjogMXB4IHNvbGlkICMwOTcxZmU7IG1hcmdpbi1yaWdodDogMC41cmVtOyB9CgphLmZjLWV2ZW50LXByaW1hcnkgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDk3MWZlICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogIzA5NzFmZSAhaW1wb3J0YW50OyBjb2xvcjogI2ZmZiAhaW1wb3J0YW50OyB9CgphLmZjLWV2ZW50LXByaW1hcnkgLmZjLWRheWdyaWQtZXZlbnQtZG90LCBhLmZjLWV2ZW50LXByaW1hcnkgLmZjLWxpc3QtZXZlbnQtZG90IHsgYm9yZGVyLWNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7IH0KCi5tb2RhbC1oZWFkZXIuZmMtZXZlbnQtcHJpbWFyeSB7IGJhY2tncm91bmQtY29sb3I6ICMwOTcxZmUgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjMDk3MWZlICFpbXBvcnRhbnQ7IH0KCi5tb2RhbC1oZWFkZXIuZmMtZXZlbnQtcHJpbWFyeSAuY2xvc2UsIC5tb2RhbC1oZWFkZXIuZmMtZXZlbnQtcHJpbWFyeSAubW9kYWwtdGl0bGUgeyBjb2xvcjogI2ZmZiAhaW1wb3J0YW50OyB9CgpzcGFuLmZjLWV2ZW50LXByaW1hcnkgLmRvdCB7IGJhY2tncm91bmQtY29sb3I6ICMwOTcxZmUgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjMDk3MWZlICFpbXBvcnRhbnQ7IH0KCi5mYy1ldmVudC1wcmltYXJ5Om5vdChhKSAuZmMtbGlzdC1ldmVudC1kb3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDk3MWZlICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogIzA5NzFmZSAhaW1wb3J0YW50OyB9CgphLmZjLWV2ZW50LXN1Y2Nlc3MgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMWVlMGFjICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogIzFlZTBhYyAhaW1wb3J0YW50OyBjb2xvcjogI2ZmZiAhaW1wb3J0YW50OyB9CgphLmZjLWV2ZW50LXN1Y2Nlc3MgLmZjLWRheWdyaWQtZXZlbnQtZG90LCBhLmZjLWV2ZW50LXN1Y2Nlc3MgLmZjLWxpc3QtZXZlbnQtZG90IHsgYm9yZGVyLWNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7IH0KCi5tb2RhbC1oZWFkZXIuZmMtZXZlbnQtc3VjY2VzcyB7IGJhY2tncm91bmQtY29sb3I6ICMxZWUwYWMgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjMWVlMGFjICFpbXBvcnRhbnQ7IH0KCi5tb2RhbC1oZWFkZXIuZmMtZXZlbnQtc3VjY2VzcyAuY2xvc2UsIC5tb2RhbC1oZWFkZXIuZmMtZXZlbnQtc3VjY2VzcyAubW9kYWwtdGl0bGUgeyBjb2xvcjogI2ZmZiAhaW1wb3J0YW50OyB9CgpzcGFuLmZjLWV2ZW50LXN1Y2Nlc3MgLmRvdCB7IGJhY2tncm91bmQtY29sb3I6ICMxZWUwYWMgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjMWVlMGFjICFpbXBvcnRhbnQ7IH0KCi5mYy1ldmVudC1zdWNjZXNzOm5vdChhKSAuZmMtbGlzdC1ldmVudC1kb3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMWVlMGFjICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogIzFlZTBhYyAhaW1wb3J0YW50OyB9CgphLmZjLWV2ZW50LWluZm8geyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDljMmRlICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogIzA5YzJkZSAhaW1wb3J0YW50OyBjb2xvcjogI2ZmZiAhaW1wb3J0YW50OyB9CgphLmZjLWV2ZW50LWluZm8gLmZjLWRheWdyaWQtZXZlbnQtZG90LCBhLmZjLWV2ZW50LWluZm8gLmZjLWxpc3QtZXZlbnQtZG90IHsgYm9yZGVyLWNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7IH0KCi5tb2RhbC1oZWFkZXIuZmMtZXZlbnQtaW5mbyB7IGJhY2tncm91bmQtY29sb3I6ICMwOWMyZGUgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjMDljMmRlICFpbXBvcnRhbnQ7IH0KCi5tb2RhbC1oZWFkZXIuZmMtZXZlbnQtaW5mbyAuY2xvc2UsIC5tb2RhbC1oZWFkZXIuZmMtZXZlbnQtaW5mbyAubW9kYWwtdGl0bGUgeyBjb2xvcjogI2ZmZiAhaW1wb3J0YW50OyB9CgpzcGFuLmZjLWV2ZW50LWluZm8gLmRvdCB7IGJhY2tncm91bmQtY29sb3I6ICMwOWMyZGUgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjMDljMmRlICFpbXBvcnRhbnQ7IH0KCi5mYy1ldmVudC1pbmZvOm5vdChhKSAuZmMtbGlzdC1ldmVudC1kb3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDljMmRlICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogIzA5YzJkZSAhaW1wb3J0YW50OyB9CgphLmZjLWV2ZW50LXdhcm5pbmcgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjRiZDBlICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogI2Y0YmQwZSAhaW1wb3J0YW50OyBjb2xvcjogI2ZmZiAhaW1wb3J0YW50OyB9CgphLmZjLWV2ZW50LXdhcm5pbmcgLmZjLWRheWdyaWQtZXZlbnQtZG90LCBhLmZjLWV2ZW50LXdhcm5pbmcgLmZjLWxpc3QtZXZlbnQtZG90IHsgYm9yZGVyLWNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7IH0KCi5tb2RhbC1oZWFkZXIuZmMtZXZlbnQtd2FybmluZyB7IGJhY2tncm91bmQtY29sb3I6ICNmNGJkMGUgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjZjRiZDBlICFpbXBvcnRhbnQ7IH0KCi5tb2RhbC1oZWFkZXIuZmMtZXZlbnQtd2FybmluZyAuY2xvc2UsIC5tb2RhbC1oZWFkZXIuZmMtZXZlbnQtd2FybmluZyAubW9kYWwtdGl0bGUgeyBjb2xvcjogI2ZmZiAhaW1wb3J0YW50OyB9CgpzcGFuLmZjLWV2ZW50LXdhcm5pbmcgLmRvdCB7IGJhY2tncm91bmQtY29sb3I6ICNmNGJkMGUgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjZjRiZDBlICFpbXBvcnRhbnQ7IH0KCi5mYy1ldmVudC13YXJuaW5nOm5vdChhKSAuZmMtbGlzdC1ldmVudC1kb3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjRiZDBlICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogI2Y0YmQwZSAhaW1wb3J0YW50OyB9CgphLmZjLWV2ZW50LWRhbmdlciB7IGJhY2tncm91bmQtY29sb3I6ICNlODUzNDcgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjZTg1MzQ3ICFpbXBvcnRhbnQ7IGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7IH0KCmEuZmMtZXZlbnQtZGFuZ2VyIC5mYy1kYXlncmlkLWV2ZW50LWRvdCwgYS5mYy1ldmVudC1kYW5nZXIgLmZjLWxpc3QtZXZlbnQtZG90IHsgYm9yZGVyLWNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7IH0KCi5tb2RhbC1oZWFkZXIuZmMtZXZlbnQtZGFuZ2VyIHsgYmFja2dyb3VuZC1jb2xvcjogI2U4NTM0NyAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6ICNlODUzNDcgIWltcG9ydGFudDsgfQoKLm1vZGFsLWhlYWRlci5mYy1ldmVudC1kYW5nZXIgLmNsb3NlLCAubW9kYWwtaGVhZGVyLmZjLWV2ZW50LWRhbmdlciAubW9kYWwtdGl0bGUgeyBjb2xvcjogI2ZmZiAhaW1wb3J0YW50OyB9CgpzcGFuLmZjLWV2ZW50LWRhbmdlciAuZG90IHsgYmFja2dyb3VuZC1jb2xvcjogI2U4NTM0NyAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6ICNlODUzNDcgIWltcG9ydGFudDsgfQoKLmZjLWV2ZW50LWRhbmdlcjpub3QoYSkgLmZjLWxpc3QtZXZlbnQtZG90IHsgYmFja2dyb3VuZC1jb2xvcjogI2U4NTM0NyAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6ICNlODUzNDcgIWltcG9ydGFudDsgfQoKYS5mYy1ldmVudC1zZWNvbmRhcnkgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMzY0YTYzICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogIzM2NGE2MyAhaW1wb3J0YW50OyBjb2xvcjogI2ZmZiAhaW1wb3J0YW50OyB9CgphLmZjLWV2ZW50LXNlY29uZGFyeSAuZmMtZGF5Z3JpZC1ldmVudC1kb3QsIGEuZmMtZXZlbnQtc2Vjb25kYXJ5IC5mYy1saXN0LWV2ZW50LWRvdCB7IGJvcmRlci1jb2xvcjogI2ZmZiAhaW1wb3J0YW50OyB9CgoubW9kYWwtaGVhZGVyLmZjLWV2ZW50LXNlY29uZGFyeSB7IGJhY2tncm91bmQtY29sb3I6ICMzNjRhNjMgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjMzY0YTYzICFpbXBvcnRhbnQ7IH0KCi5tb2RhbC1oZWFkZXIuZmMtZXZlbnQtc2Vjb25kYXJ5IC5jbG9zZSwgLm1vZGFsLWhlYWRlci5mYy1ldmVudC1zZWNvbmRhcnkgLm1vZGFsLXRpdGxlIHsgY29sb3I6ICNmZmYgIWltcG9ydGFudDsgfQoKc3Bhbi5mYy1ldmVudC1zZWNvbmRhcnkgLmRvdCB7IGJhY2tncm91bmQtY29sb3I6ICMzNjRhNjMgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjMzY0YTYzICFpbXBvcnRhbnQ7IH0KCi5mYy1ldmVudC1zZWNvbmRhcnk6bm90KGEpIC5mYy1saXN0LWV2ZW50LWRvdCB7IGJhY2tncm91bmQtY29sb3I6ICMzNjRhNjMgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjMzY0YTYzICFpbXBvcnRhbnQ7IH0KCmEuZmMtZXZlbnQtZGFyayB7IGJhY2tncm91bmQtY29sb3I6ICMxZjJiM2EgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjMWYyYjNhICFpbXBvcnRhbnQ7IGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7IH0KCmEuZmMtZXZlbnQtZGFyayAuZmMtZGF5Z3JpZC1ldmVudC1kb3QsIGEuZmMtZXZlbnQtZGFyayAuZmMtbGlzdC1ldmVudC1kb3QgeyBib3JkZXItY29sb3I6ICNmZmYgIWltcG9ydGFudDsgfQoKLm1vZGFsLWhlYWRlci5mYy1ldmVudC1kYXJrIHsgYmFja2dyb3VuZC1jb2xvcjogIzFmMmIzYSAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6ICMxZjJiM2EgIWltcG9ydGFudDsgfQoKLm1vZGFsLWhlYWRlci5mYy1ldmVudC1kYXJrIC5jbG9zZSwgLm1vZGFsLWhlYWRlci5mYy1ldmVudC1kYXJrIC5tb2RhbC10aXRsZSB7IGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7IH0KCnNwYW4uZmMtZXZlbnQtZGFyayAuZG90IHsgYmFja2dyb3VuZC1jb2xvcjogIzFmMmIzYSAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6ICMxZjJiM2EgIWltcG9ydGFudDsgfQoKLmZjLWV2ZW50LWRhcms6bm90KGEpIC5mYy1saXN0LWV2ZW50LWRvdCB7IGJhY2tncm91bmQtY29sb3I6ICMxZjJiM2EgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjMWYyYjNhICFpbXBvcnRhbnQ7IH0KCmEuZmMtZXZlbnQtYmx1ZSB7IGJhY2tncm91bmQtY29sb3I6ICM1NTliZmIgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjNTU5YmZiICFpbXBvcnRhbnQ7IGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7IH0KCmEuZmMtZXZlbnQtYmx1ZSAuZmMtZGF5Z3JpZC1ldmVudC1kb3QsIGEuZmMtZXZlbnQtYmx1ZSAuZmMtbGlzdC1ldmVudC1kb3QgeyBib3JkZXItY29sb3I6ICNmZmYgIWltcG9ydGFudDsgfQoKLm1vZGFsLWhlYWRlci5mYy1ldmVudC1ibHVlIHsgYmFja2dyb3VuZC1jb2xvcjogIzU1OWJmYiAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6ICM1NTliZmIgIWltcG9ydGFudDsgfQoKLm1vZGFsLWhlYWRlci5mYy1ldmVudC1ibHVlIC5jbG9zZSwgLm1vZGFsLWhlYWRlci5mYy1ldmVudC1ibHVlIC5tb2RhbC10aXRsZSB7IGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7IH0KCnNwYW4uZmMtZXZlbnQtYmx1ZSAuZG90IHsgYmFja2dyb3VuZC1jb2xvcjogIzU1OWJmYiAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6ICM1NTliZmIgIWltcG9ydGFudDsgfQoKLmZjLWV2ZW50LWJsdWU6bm90KGEpIC5mYy1saXN0LWV2ZW50LWRvdCB7IGJhY2tncm91bmQtY29sb3I6ICM1NTliZmIgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjNTU5YmZiICFpbXBvcnRhbnQ7IH0KCmEuZmMtZXZlbnQtYXp1cmUgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMTY3NmZiICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogIzE2NzZmYiAhaW1wb3J0YW50OyBjb2xvcjogI2ZmZiAhaW1wb3J0YW50OyB9CgphLmZjLWV2ZW50LWF6dXJlIC5mYy1kYXlncmlkLWV2ZW50LWRvdCwgYS5mYy1ldmVudC1henVyZSAuZmMtbGlzdC1ldmVudC1kb3QgeyBib3JkZXItY29sb3I6ICNmZmYgIWltcG9ydGFudDsgfQoKLm1vZGFsLWhlYWRlci5mYy1ldmVudC1henVyZSB7IGJhY2tncm91bmQtY29sb3I6ICMxNjc2ZmIgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjMTY3NmZiICFpbXBvcnRhbnQ7IH0KCi5tb2RhbC1oZWFkZXIuZmMtZXZlbnQtYXp1cmUgLmNsb3NlLCAubW9kYWwtaGVhZGVyLmZjLWV2ZW50LWF6dXJlIC5tb2RhbC10aXRsZSB7IGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7IH0KCnNwYW4uZmMtZXZlbnQtYXp1cmUgLmRvdCB7IGJhY2tncm91bmQtY29sb3I6ICMxNjc2ZmIgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjMTY3NmZiICFpbXBvcnRhbnQ7IH0KCi5mYy1ldmVudC1henVyZTpub3QoYSkgLmZjLWxpc3QtZXZlbnQtZG90IHsgYmFja2dyb3VuZC1jb2xvcjogIzE2NzZmYiAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6ICMxNjc2ZmIgIWltcG9ydGFudDsgfQoKYS5mYy1ldmVudC1pbmRpZ28geyBiYWNrZ3JvdW5kLWNvbG9yOiAjMmMzNzgyICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogIzJjMzc4MiAhaW1wb3J0YW50OyBjb2xvcjogI2ZmZiAhaW1wb3J0YW50OyB9CgphLmZjLWV2ZW50LWluZGlnbyAuZmMtZGF5Z3JpZC1ldmVudC1kb3QsIGEuZmMtZXZlbnQtaW5kaWdvIC5mYy1saXN0LWV2ZW50LWRvdCB7IGJvcmRlci1jb2xvcjogI2ZmZiAhaW1wb3J0YW50OyB9CgoubW9kYWwtaGVhZGVyLmZjLWV2ZW50LWluZGlnbyB7IGJhY2tncm91bmQtY29sb3I6ICMyYzM3ODIgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjMmMzNzgyICFpbXBvcnRhbnQ7IH0KCi5tb2RhbC1oZWFkZXIuZmMtZXZlbnQtaW5kaWdvIC5jbG9zZSwgLm1vZGFsLWhlYWRlci5mYy1ldmVudC1pbmRpZ28gLm1vZGFsLXRpdGxlIHsgY29sb3I6ICNmZmYgIWltcG9ydGFudDsgfQoKc3Bhbi5mYy1ldmVudC1pbmRpZ28gLmRvdCB7IGJhY2tncm91bmQtY29sb3I6ICMyYzM3ODIgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjMmMzNzgyICFpbXBvcnRhbnQ7IH0KCi5mYy1ldmVudC1pbmRpZ286bm90KGEpIC5mYy1saXN0LWV2ZW50LWRvdCB7IGJhY2tncm91bmQtY29sb3I6ICMyYzM3ODIgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjMmMzNzgyICFpbXBvcnRhbnQ7IH0KCmEuZmMtZXZlbnQtcHVycGxlIHsgYmFja2dyb3VuZC1jb2xvcjogIzgxNmJmZiAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6ICM4MTZiZmYgIWltcG9ydGFudDsgY29sb3I6ICNmZmYgIWltcG9ydGFudDsgfQoKYS5mYy1ldmVudC1wdXJwbGUgLmZjLWRheWdyaWQtZXZlbnQtZG90LCBhLmZjLWV2ZW50LXB1cnBsZSAuZmMtbGlzdC1ldmVudC1kb3QgeyBib3JkZXItY29sb3I6ICNmZmYgIWltcG9ydGFudDsgfQoKLm1vZGFsLWhlYWRlci5mYy1ldmVudC1wdXJwbGUgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjODE2YmZmICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogIzgxNmJmZiAhaW1wb3J0YW50OyB9CgoubW9kYWwtaGVhZGVyLmZjLWV2ZW50LXB1cnBsZSAuY2xvc2UsIC5tb2RhbC1oZWFkZXIuZmMtZXZlbnQtcHVycGxlIC5tb2RhbC10aXRsZSB7IGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7IH0KCnNwYW4uZmMtZXZlbnQtcHVycGxlIC5kb3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjODE2YmZmICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogIzgxNmJmZiAhaW1wb3J0YW50OyB9CgouZmMtZXZlbnQtcHVycGxlOm5vdChhKSAuZmMtbGlzdC1ldmVudC1kb3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjODE2YmZmICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogIzgxNmJmZiAhaW1wb3J0YW50OyB9CgphLmZjLWV2ZW50LXBpbmsgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY2M2E1ICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogI2ZmNjNhNSAhaW1wb3J0YW50OyBjb2xvcjogI2ZmZiAhaW1wb3J0YW50OyB9CgphLmZjLWV2ZW50LXBpbmsgLmZjLWRheWdyaWQtZXZlbnQtZG90LCBhLmZjLWV2ZW50LXBpbmsgLmZjLWxpc3QtZXZlbnQtZG90IHsgYm9yZGVyLWNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7IH0KCi5tb2RhbC1oZWFkZXIuZmMtZXZlbnQtcGluayB7IGJhY2tncm91bmQtY29sb3I6ICNmZjYzYTUgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjZmY2M2E1ICFpbXBvcnRhbnQ7IH0KCi5tb2RhbC1oZWFkZXIuZmMtZXZlbnQtcGluayAuY2xvc2UsIC5tb2RhbC1oZWFkZXIuZmMtZXZlbnQtcGluayAubW9kYWwtdGl0bGUgeyBjb2xvcjogI2ZmZiAhaW1wb3J0YW50OyB9CgpzcGFuLmZjLWV2ZW50LXBpbmsgLmRvdCB7IGJhY2tncm91bmQtY29sb3I6ICNmZjYzYTUgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjZmY2M2E1ICFpbXBvcnRhbnQ7IH0KCi5mYy1ldmVudC1waW5rOm5vdChhKSAuZmMtbGlzdC1ldmVudC1kb3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY2M2E1ICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogI2ZmNjNhNSAhaW1wb3J0YW50OyB9CgphLmZjLWV2ZW50LW9yYW5nZSB7IGJhY2tncm91bmQtY29sb3I6ICNmZmEzNTMgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjZmZhMzUzICFpbXBvcnRhbnQ7IGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7IH0KCmEuZmMtZXZlbnQtb3JhbmdlIC5mYy1kYXlncmlkLWV2ZW50LWRvdCwgYS5mYy1ldmVudC1vcmFuZ2UgLmZjLWxpc3QtZXZlbnQtZG90IHsgYm9yZGVyLWNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7IH0KCi5tb2RhbC1oZWFkZXIuZmMtZXZlbnQtb3JhbmdlIHsgYmFja2dyb3VuZC1jb2xvcjogI2ZmYTM1MyAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6ICNmZmEzNTMgIWltcG9ydGFudDsgfQoKLm1vZGFsLWhlYWRlci5mYy1ldmVudC1vcmFuZ2UgLmNsb3NlLCAubW9kYWwtaGVhZGVyLmZjLWV2ZW50LW9yYW5nZSAubW9kYWwtdGl0bGUgeyBjb2xvcjogI2ZmZiAhaW1wb3J0YW50OyB9CgpzcGFuLmZjLWV2ZW50LW9yYW5nZSAuZG90IHsgYmFja2dyb3VuZC1jb2xvcjogI2ZmYTM1MyAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6ICNmZmEzNTMgIWltcG9ydGFudDsgfQoKLmZjLWV2ZW50LW9yYW5nZTpub3QoYSkgLmZjLWxpc3QtZXZlbnQtZG90IHsgYmFja2dyb3VuZC1jb2xvcjogI2ZmYTM1MyAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6ICNmZmEzNTMgIWltcG9ydGFudDsgfQoKYS5mYy1ldmVudC10ZWFsIHsgYmFja2dyb3VuZC1jb2xvcjogIzIwYzk5NyAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6ICMyMGM5OTcgIWltcG9ydGFudDsgY29sb3I6ICNmZmYgIWltcG9ydGFudDsgfQoKYS5mYy1ldmVudC10ZWFsIC5mYy1kYXlncmlkLWV2ZW50LWRvdCwgYS5mYy1ldmVudC10ZWFsIC5mYy1saXN0LWV2ZW50LWRvdCB7IGJvcmRlci1jb2xvcjogI2ZmZiAhaW1wb3J0YW50OyB9CgoubW9kYWwtaGVhZGVyLmZjLWV2ZW50LXRlYWwgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMjBjOTk3ICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogIzIwYzk5NyAhaW1wb3J0YW50OyB9CgoubW9kYWwtaGVhZGVyLmZjLWV2ZW50LXRlYWwgLmNsb3NlLCAubW9kYWwtaGVhZGVyLmZjLWV2ZW50LXRlYWwgLm1vZGFsLXRpdGxlIHsgY29sb3I6ICNmZmYgIWltcG9ydGFudDsgfQoKc3Bhbi5mYy1ldmVudC10ZWFsIC5kb3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMjBjOTk3ICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogIzIwYzk5NyAhaW1wb3J0YW50OyB9CgouZmMtZXZlbnQtdGVhbDpub3QoYSkgLmZjLWxpc3QtZXZlbnQtZG90IHsgYmFja2dyb3VuZC1jb2xvcjogIzIwYzk5NyAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6ICMyMGM5OTcgIWltcG9ydGFudDsgfQoKYS5mYy1ldmVudC1wcmltYXJ5LWRpbSB7IGJhY2tncm91bmQtY29sb3I6ICNkZmVkZmYgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjZGZlZGZmICFpbXBvcnRhbnQ7IGNvbG9yOiAjMDk3MWZlICFpbXBvcnRhbnQ7IH0KCmEuZmMtZXZlbnQtcHJpbWFyeS1kaW0gLmZjLWRheWdyaWQtZXZlbnQtZG90LCBhLmZjLWV2ZW50LXByaW1hcnktZGltIC5mYy1saXN0LWV2ZW50LWRvdCB7IGJvcmRlci1jb2xvcjogIzA5NzFmZSAhaW1wb3J0YW50OyB9CgoubW9kYWwtaGVhZGVyLmZjLWV2ZW50LXByaW1hcnktZGltIHsgYmFja2dyb3VuZC1jb2xvcjogI2RmZWRmZiAhaW1wb3J0YW50OyBjb2xvcjogIzA5NzFmZSAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6ICNjNmRmZmYgIWltcG9ydGFudDsgfQoKLm1vZGFsLWhlYWRlci5mYy1ldmVudC1wcmltYXJ5LWRpbSAuY2xvc2UsIC5tb2RhbC1oZWFkZXIuZmMtZXZlbnQtcHJpbWFyeS1kaW0gLm1vZGFsLXRpdGxlIHsgY29sb3I6ICMwOTcxZmUgIWltcG9ydGFudDsgfQoKc3Bhbi5mYy1ldmVudC1wcmltYXJ5LWRpbSAuZG90IHsgYmFja2dyb3VuZC1jb2xvcjogI2RmZWRmZiAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6ICMwOTcxZmUgIWltcG9ydGFudDsgfQoKLmZjLWV2ZW50LXByaW1hcnktZGltOm5vdChhKSAuZmMtbGlzdC1ldmVudC1kb3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZGZlZGZmICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogIzNjOGVmZSAhaW1wb3J0YW50OyB9CgphLmZjLWV2ZW50LXN1Y2Nlc3MtZGltIHsgYmFja2dyb3VuZC1jb2xvcjogI2UyZmJmNCAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6ICNlMmZiZjQgIWltcG9ydGFudDsgY29sb3I6ICMxZWUwYWMgIWltcG9ydGFudDsgfQoKYS5mYy1ldmVudC1zdWNjZXNzLWRpbSAuZmMtZGF5Z3JpZC1ldmVudC1kb3QsIGEuZmMtZXZlbnQtc3VjY2Vzcy1kaW0gLmZjLWxpc3QtZXZlbnQtZG90IHsgYm9yZGVyLWNvbG9yOiAjMWVlMGFjICFpbXBvcnRhbnQ7IH0KCi5tb2RhbC1oZWFkZXIuZmMtZXZlbnQtc3VjY2Vzcy1kaW0geyBiYWNrZ3JvdW5kLWNvbG9yOiAjZTJmYmY0ICFpbXBvcnRhbnQ7IGNvbG9yOiAjMWVlMGFjICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogI2NjZjhlYyAhaW1wb3J0YW50OyB9CgoubW9kYWwtaGVhZGVyLmZjLWV2ZW50LXN1Y2Nlc3MtZGltIC5jbG9zZSwgLm1vZGFsLWhlYWRlci5mYy1ldmVudC1zdWNjZXNzLWRpbSAubW9kYWwtdGl0bGUgeyBjb2xvcjogIzFlZTBhYyAhaW1wb3J0YW50OyB9CgpzcGFuLmZjLWV2ZW50LXN1Y2Nlc3MtZGltIC5kb3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZTJmYmY0ICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogIzFlZTBhYyAhaW1wb3J0YW50OyB9CgouZmMtZXZlbnQtc3VjY2Vzcy1kaW06bm90KGEpIC5mYy1saXN0LWV2ZW50LWRvdCB7IGJhY2tncm91bmQtY29sb3I6ICNlMmZiZjQgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjNGFlN2JkICFpbXBvcnRhbnQ7IH0KCmEuZmMtZXZlbnQtaW5mby1kaW0geyBiYWNrZ3JvdW5kLWNvbG9yOiAjZGZmN2ZiICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogI2RmZjdmYiAhaW1wb3J0YW50OyBjb2xvcjogIzA5YzJkZSAhaW1wb3J0YW50OyB9CgphLmZjLWV2ZW50LWluZm8tZGltIC5mYy1kYXlncmlkLWV2ZW50LWRvdCwgYS5mYy1ldmVudC1pbmZvLWRpbSAuZmMtbGlzdC1ldmVudC1kb3QgeyBib3JkZXItY29sb3I6ICMwOWMyZGUgIWltcG9ydGFudDsgfQoKLm1vZGFsLWhlYWRlci5mYy1ldmVudC1pbmZvLWRpbSB7IGJhY2tncm91bmQtY29sb3I6ICNkZmY3ZmIgIWltcG9ydGFudDsgY29sb3I6ICMwOWMyZGUgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjYzhmMWY4ICFpbXBvcnRhbnQ7IH0KCi5tb2RhbC1oZWFkZXIuZmMtZXZlbnQtaW5mby1kaW0gLmNsb3NlLCAubW9kYWwtaGVhZGVyLmZjLWV2ZW50LWluZm8tZGltIC5tb2RhbC10aXRsZSB7IGNvbG9yOiAjMDljMmRlICFpbXBvcnRhbnQ7IH0KCnNwYW4uZmMtZXZlbnQtaW5mby1kaW0gLmRvdCB7IGJhY2tncm91bmQtY29sb3I6ICNkZmY3ZmIgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjMDljMmRlICFpbXBvcnRhbnQ7IH0KCi5mYy1ldmVudC1pbmZvLWRpbTpub3QoYSkgLmZjLWxpc3QtZXZlbnQtZG90IHsgYmFja2dyb3VuZC1jb2xvcjogI2RmZjdmYiAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6ICMyNGRhZjYgIWltcG9ydGFudDsgfQoKYS5mYy1ldmVudC13YXJuaW5nLWRpbSB7IGJhY2tncm91bmQtY29sb3I6ICNmZWY2ZTAgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjZmVmNmUwICFpbXBvcnRhbnQ7IGNvbG9yOiAjZjRiZDBlICFpbXBvcnRhbnQ7IH0KCmEuZmMtZXZlbnQtd2FybmluZy1kaW0gLmZjLWRheWdyaWQtZXZlbnQtZG90LCBhLmZjLWV2ZW50LXdhcm5pbmctZGltIC5mYy1saXN0LWV2ZW50LWRvdCB7IGJvcmRlci1jb2xvcjogI2Y0YmQwZSAhaW1wb3J0YW50OyB9CgoubW9kYWwtaGVhZGVyLmZjLWV2ZW50LXdhcm5pbmctZGltIHsgYmFja2dyb3VuZC1jb2xvcjogI2ZlZjZlMCAhaW1wb3J0YW50OyBjb2xvcjogI2Y0YmQwZSAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6ICNmZGVmYzcgIWltcG9ydGFudDsgfQoKLm1vZGFsLWhlYWRlci5mYy1ldmVudC13YXJuaW5nLWRpbSAuY2xvc2UsIC5tb2RhbC1oZWFkZXIuZmMtZXZlbnQtd2FybmluZy1kaW0gLm1vZGFsLXRpdGxlIHsgY29sb3I6ICNmNGJkMGUgIWltcG9ydGFudDsgfQoKc3Bhbi5mYy1ldmVudC13YXJuaW5nLWRpbSAuZG90IHsgYmFja2dyb3VuZC1jb2xvcjogI2ZlZjZlMCAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6ICNmNGJkMGUgIWltcG9ydGFudDsgfQoKLmZjLWV2ZW50LXdhcm5pbmctZGltOm5vdChhKSAuZmMtbGlzdC1ldmVudC1kb3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmVmNmUwICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogI2Y2Y2EzZiAhaW1wb3J0YW50OyB9CgphLmZjLWV2ZW50LWRhbmdlci1kaW0geyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmNlOWU3ICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogI2ZjZTllNyAhaW1wb3J0YW50OyBjb2xvcjogI2U4NTM0NyAhaW1wb3J0YW50OyB9CgphLmZjLWV2ZW50LWRhbmdlci1kaW0gLmZjLWRheWdyaWQtZXZlbnQtZG90LCBhLmZjLWV2ZW50LWRhbmdlci1kaW0gLmZjLWxpc3QtZXZlbnQtZG90IHsgYm9yZGVyLWNvbG9yOiAjZTg1MzQ3ICFpbXBvcnRhbnQ7IH0KCi5tb2RhbC1oZWFkZXIuZmMtZXZlbnQtZGFuZ2VyLWRpbSB7IGJhY2tncm91bmQtY29sb3I6ICNmY2U5ZTcgIWltcG9ydGFudDsgY29sb3I6ICNlODUzNDcgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjZjlkNGQwICFpbXBvcnRhbnQ7IH0KCi5tb2RhbC1oZWFkZXIuZmMtZXZlbnQtZGFuZ2VyLWRpbSAuY2xvc2UsIC5tb2RhbC1oZWFkZXIuZmMtZXZlbnQtZGFuZ2VyLWRpbSAubW9kYWwtdGl0bGUgeyBjb2xvcjogI2U4NTM0NyAhaW1wb3J0YW50OyB9CgpzcGFuLmZjLWV2ZW50LWRhbmdlci1kaW0gLmRvdCB7IGJhY2tncm91bmQtY29sb3I6ICNmY2U5ZTcgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjZTg1MzQ3ICFpbXBvcnRhbnQ7IH0KCi5mYy1ldmVudC1kYW5nZXItZGltOm5vdChhKSAuZmMtbGlzdC1ldmVudC1kb3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmNlOWU3ICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogI2VlN2Q3NCAhaW1wb3J0YW50OyB9CgphLmZjLWV2ZW50LXNlY29uZGFyeS1kaW0geyBiYWNrZ3JvdW5kLWNvbG9yOiAjZTVlY2Y1ICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogI2U1ZWNmNSAhaW1wb3J0YW50OyBjb2xvcjogIzM2NGE2MyAhaW1wb3J0YW50OyB9CgphLmZjLWV2ZW50LXNlY29uZGFyeS1kaW0gLmZjLWRheWdyaWQtZXZlbnQtZG90LCBhLmZjLWV2ZW50LXNlY29uZGFyeS1kaW0gLmZjLWxpc3QtZXZlbnQtZG90IHsgYm9yZGVyLWNvbG9yOiAjMzY0YTYzICFpbXBvcnRhbnQ7IH0KCi5tb2RhbC1oZWFkZXIuZmMtZXZlbnQtc2Vjb25kYXJ5LWRpbSB7IGJhY2tncm91bmQtY29sb3I6ICNlNWVjZjUgIWltcG9ydGFudDsgY29sb3I6ICMzNjRhNjMgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjZDNkZmVlICFpbXBvcnRhbnQ7IH0KCi5tb2RhbC1oZWFkZXIuZmMtZXZlbnQtc2Vjb25kYXJ5LWRpbSAuY2xvc2UsIC5tb2RhbC1oZWFkZXIuZmMtZXZlbnQtc2Vjb25kYXJ5LWRpbSAubW9kYWwtdGl0bGUgeyBjb2xvcjogIzM2NGE2MyAhaW1wb3J0YW50OyB9CgpzcGFuLmZjLWV2ZW50LXNlY29uZGFyeS1kaW0gLmRvdCB7IGJhY2tncm91bmQtY29sb3I6ICNlNWVjZjUgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjMzY0YTYzICFpbXBvcnRhbnQ7IH0KCi5mYy1ldmVudC1zZWNvbmRhcnktZGltOm5vdChhKSAuZmMtbGlzdC1ldmVudC1kb3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZTVlY2Y1ICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogIzQ4NjM4NCAhaW1wb3J0YW50OyB9CgphLmZjLWV2ZW50LWRhcmstZGltIHsgYmFja2dyb3VuZC1jb2xvcjogI2Q5ZTFlZiAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6ICNkOWUxZWYgIWltcG9ydGFudDsgY29sb3I6ICMxZjJiM2EgIWltcG9ydGFudDsgfQoKYS5mYy1ldmVudC1kYXJrLWRpbSAuZmMtZGF5Z3JpZC1ldmVudC1kb3QsIGEuZmMtZXZlbnQtZGFyay1kaW0gLmZjLWxpc3QtZXZlbnQtZG90IHsgYm9yZGVyLWNvbG9yOiAjMWYyYjNhICFpbXBvcnRhbnQ7IH0KCi5tb2RhbC1oZWFkZXIuZmMtZXZlbnQtZGFyay1kaW0geyBiYWNrZ3JvdW5kLWNvbG9yOiAjZDllMWVmICFpbXBvcnRhbnQ7IGNvbG9yOiAjMWYyYjNhICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogI2M3ZDNlNyAhaW1wb3J0YW50OyB9CgoubW9kYWwtaGVhZGVyLmZjLWV2ZW50LWRhcmstZGltIC5jbG9zZSwgLm1vZGFsLWhlYWRlci5mYy1ldmVudC1kYXJrLWRpbSAubW9kYWwtdGl0bGUgeyBjb2xvcjogIzFmMmIzYSAhaW1wb3J0YW50OyB9CgpzcGFuLmZjLWV2ZW50LWRhcmstZGltIC5kb3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZDllMWVmICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogIzFmMmIzYSAhaW1wb3J0YW50OyB9CgouZmMtZXZlbnQtZGFyay1kaW06bm90KGEpIC5mYy1saXN0LWV2ZW50LWRvdCB7IGJhY2tncm91bmQtY29sb3I6ICNkOWUxZWYgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjMzE0NDViICFpbXBvcnRhbnQ7IH0KCmEuZmMtZXZlbnQtYmx1ZS1kaW0geyBiYWNrZ3JvdW5kLWNvbG9yOiAjZTlmMmZlICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogI2U5ZjJmZSAhaW1wb3J0YW50OyBjb2xvcjogIzU1OWJmYiAhaW1wb3J0YW50OyB9CgphLmZjLWV2ZW50LWJsdWUtZGltIC5mYy1kYXlncmlkLWV2ZW50LWRvdCwgYS5mYy1ldmVudC1ibHVlLWRpbSAuZmMtbGlzdC1ldmVudC1kb3QgeyBib3JkZXItY29sb3I6ICM1NTliZmIgIWltcG9ydGFudDsgfQoKLm1vZGFsLWhlYWRlci5mYy1ldmVudC1ibHVlLWRpbSB7IGJhY2tncm91bmQtY29sb3I6ICNlOWYyZmUgIWltcG9ydGFudDsgY29sb3I6ICM1NTliZmIgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjZDFlNGZkICFpbXBvcnRhbnQ7IH0KCi5tb2RhbC1oZWFkZXIuZmMtZXZlbnQtYmx1ZS1kaW0gLmNsb3NlLCAubW9kYWwtaGVhZGVyLmZjLWV2ZW50LWJsdWUtZGltIC5tb2RhbC10aXRsZSB7IGNvbG9yOiAjNTU5YmZiICFpbXBvcnRhbnQ7IH0KCnNwYW4uZmMtZXZlbnQtYmx1ZS1kaW0gLmRvdCB7IGJhY2tncm91bmQtY29sb3I6ICNlOWYyZmUgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjNTU5YmZiICFpbXBvcnRhbnQ7IH0KCi5mYy1ldmVudC1ibHVlLWRpbTpub3QoYSkgLmZjLWxpc3QtZXZlbnQtZG90IHsgYmFja2dyb3VuZC1jb2xvcjogI2U5ZjJmZSAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6ICM4N2I4ZmMgIWltcG9ydGFudDsgfQoKYS5mYy1ldmVudC1henVyZS1kaW0geyBiYWNrZ3JvdW5kLWNvbG9yOiAjZTFlZGZlICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogI2UxZWRmZSAhaW1wb3J0YW50OyBjb2xvcjogIzE2NzZmYiAhaW1wb3J0YW50OyB9CgphLmZjLWV2ZW50LWF6dXJlLWRpbSAuZmMtZGF5Z3JpZC1ldmVudC1kb3QsIGEuZmMtZXZlbnQtYXp1cmUtZGltIC5mYy1saXN0LWV2ZW50LWRvdCB7IGJvcmRlci1jb2xvcjogIzE2NzZmYiAhaW1wb3J0YW50OyB9CgoubW9kYWwtaGVhZGVyLmZjLWV2ZW50LWF6dXJlLWRpbSB7IGJhY2tncm91bmQtY29sb3I6ICNlMWVkZmUgIWltcG9ydGFudDsgY29sb3I6ICMxNjc2ZmIgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjYzhkZWZkICFpbXBvcnRhbnQ7IH0KCi5tb2RhbC1oZWFkZXIuZmMtZXZlbnQtYXp1cmUtZGltIC5jbG9zZSwgLm1vZGFsLWhlYWRlci5mYy1ldmVudC1henVyZS1kaW0gLm1vZGFsLXRpdGxlIHsgY29sb3I6ICMxNjc2ZmIgIWltcG9ydGFudDsgfQoKc3Bhbi5mYy1ldmVudC1henVyZS1kaW0gLmRvdCB7IGJhY2tncm91bmQtY29sb3I6ICNlMWVkZmUgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjMTY3NmZiICFpbXBvcnRhbnQ7IH0KCi5mYy1ldmVudC1henVyZS1kaW06bm90KGEpIC5mYy1saXN0LWV2ZW50LWRvdCB7IGJhY2tncm91bmQtY29sb3I6ICNlMWVkZmUgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjNDg5M2ZjICFpbXBvcnRhbnQ7IH0KCmEuZmMtZXZlbnQtaW5kaWdvLWRpbSB7IGJhY2tncm91bmQtY29sb3I6ICNlNGU1ZWYgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjZTRlNWVmICFpbXBvcnRhbnQ7IGNvbG9yOiAjMmMzNzgyICFpbXBvcnRhbnQ7IH0KCmEuZmMtZXZlbnQtaW5kaWdvLWRpbSAuZmMtZGF5Z3JpZC1ldmVudC1kb3QsIGEuZmMtZXZlbnQtaW5kaWdvLWRpbSAuZmMtbGlzdC1ldmVudC1kb3QgeyBib3JkZXItY29sb3I6ICMyYzM3ODIgIWltcG9ydGFudDsgfQoKLm1vZGFsLWhlYWRlci5mYy1ldmVudC1pbmRpZ28tZGltIHsgYmFja2dyb3VuZC1jb2xvcjogI2U0ZTVlZiAhaW1wb3J0YW50OyBjb2xvcjogIzJjMzc4MiAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6ICNkNGQ2ZTYgIWltcG9ydGFudDsgfQoKLm1vZGFsLWhlYWRlci5mYy1ldmVudC1pbmRpZ28tZGltIC5jbG9zZSwgLm1vZGFsLWhlYWRlci5mYy1ldmVudC1pbmRpZ28tZGltIC5tb2RhbC10aXRsZSB7IGNvbG9yOiAjMmMzNzgyICFpbXBvcnRhbnQ7IH0KCnNwYW4uZmMtZXZlbnQtaW5kaWdvLWRpbSAuZG90IHsgYmFja2dyb3VuZC1jb2xvcjogI2U0ZTVlZiAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6ICMyYzM3ODIgIWltcG9ydGFudDsgfQoKLmZjLWV2ZW50LWluZGlnby1kaW06bm90KGEpIC5mYy1saXN0LWV2ZW50LWRvdCB7IGJhY2tncm91bmQtY29sb3I6ICNlNGU1ZWYgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjMzk0N2E4ICFpbXBvcnRhbnQ7IH0KCmEuZmMtZXZlbnQtcHVycGxlLWRpbSB7IGJhY2tncm91bmQtY29sb3I6ICNlZmVjZmYgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjZWZlY2ZmICFpbXBvcnRhbnQ7IGNvbG9yOiAjODE2YmZmICFpbXBvcnRhbnQ7IH0KCmEuZmMtZXZlbnQtcHVycGxlLWRpbSAuZmMtZGF5Z3JpZC1ldmVudC1kb3QsIGEuZmMtZXZlbnQtcHVycGxlLWRpbSAuZmMtbGlzdC1ldmVudC1kb3QgeyBib3JkZXItY29sb3I6ICM4MTZiZmYgIWltcG9ydGFudDsgfQoKLm1vZGFsLWhlYWRlci5mYy1ldmVudC1wdXJwbGUtZGltIHsgYmFja2dyb3VuZC1jb2xvcjogI2VmZWNmZiAhaW1wb3J0YW50OyBjb2xvcjogIzgxNmJmZiAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6ICNkYWQzZmYgIWltcG9ydGFudDsgfQoKLm1vZGFsLWhlYWRlci5mYy1ldmVudC1wdXJwbGUtZGltIC5jbG9zZSwgLm1vZGFsLWhlYWRlci5mYy1ldmVudC1wdXJwbGUtZGltIC5tb2RhbC10aXRsZSB7IGNvbG9yOiAjODE2YmZmICFpbXBvcnRhbnQ7IH0KCnNwYW4uZmMtZXZlbnQtcHVycGxlLWRpbSAuZG90IHsgYmFja2dyb3VuZC1jb2xvcjogI2VmZWNmZiAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6ICM4MTZiZmYgIWltcG9ydGFudDsgfQoKLmZjLWV2ZW50LXB1cnBsZS1kaW06bm90KGEpIC5mYy1saXN0LWV2ZW50LWRvdCB7IGJhY2tncm91bmQtY29sb3I6ICNlZmVjZmYgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjYWM5ZWZmICFpbXBvcnRhbnQ7IH0KCmEuZmMtZXZlbnQtcGluay1kaW0geyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlYmYzICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogI2ZmZWJmMyAhaW1wb3J0YW50OyBjb2xvcjogI2ZmNjNhNSAhaW1wb3J0YW50OyB9CgphLmZjLWV2ZW50LXBpbmstZGltIC5mYy1kYXlncmlkLWV2ZW50LWRvdCwgYS5mYy1ldmVudC1waW5rLWRpbSAuZmMtbGlzdC1ldmVudC1kb3QgeyBib3JkZXItY29sb3I6ICNmZjYzYTUgIWltcG9ydGFudDsgfQoKLm1vZGFsLWhlYWRlci5mYy1ldmVudC1waW5rLWRpbSB7IGJhY2tncm91bmQtY29sb3I6ICNmZmViZjMgIWltcG9ydGFudDsgY29sb3I6ICNmZjYzYTUgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjZmZkMmU0ICFpbXBvcnRhbnQ7IH0KCi5tb2RhbC1oZWFkZXIuZmMtZXZlbnQtcGluay1kaW0gLmNsb3NlLCAubW9kYWwtaGVhZGVyLmZjLWV2ZW50LXBpbmstZGltIC5tb2RhbC10aXRsZSB7IGNvbG9yOiAjZmY2M2E1ICFpbXBvcnRhbnQ7IH0KCnNwYW4uZmMtZXZlbnQtcGluay1kaW0gLmRvdCB7IGJhY2tncm91bmQtY29sb3I6ICNmZmViZjMgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjZmY2M2E1ICFpbXBvcnRhbnQ7IH0KCi5mYy1ldmVudC1waW5rLWRpbTpub3QoYSkgLmZjLWxpc3QtZXZlbnQtZG90IHsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZWJmMyAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6ICNmZjk2YzIgIWltcG9ydGFudDsgfQoKYS5mYy1ldmVudC1vcmFuZ2UtZGltIHsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjNlOSAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6ICNmZmYzZTkgIWltcG9ydGFudDsgY29sb3I6ICNmZmEzNTMgIWltcG9ydGFudDsgfQoKYS5mYy1ldmVudC1vcmFuZ2UtZGltIC5mYy1kYXlncmlkLWV2ZW50LWRvdCwgYS5mYy1ldmVudC1vcmFuZ2UtZGltIC5mYy1saXN0LWV2ZW50LWRvdCB7IGJvcmRlci1jb2xvcjogI2ZmYTM1MyAhaW1wb3J0YW50OyB9CgoubW9kYWwtaGVhZGVyLmZjLWV2ZW50LW9yYW5nZS1kaW0geyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmM2U5ICFpbXBvcnRhbnQ7IGNvbG9yOiAjZmZhMzUzICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogI2ZmZTVkMCAhaW1wb3J0YW50OyB9CgoubW9kYWwtaGVhZGVyLmZjLWV2ZW50LW9yYW5nZS1kaW0gLmNsb3NlLCAubW9kYWwtaGVhZGVyLmZjLWV2ZW50LW9yYW5nZS1kaW0gLm1vZGFsLXRpdGxlIHsgY29sb3I6ICNmZmEzNTMgIWltcG9ydGFudDsgfQoKc3Bhbi5mYy1ldmVudC1vcmFuZ2UtZGltIC5kb3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmM2U5ICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogI2ZmYTM1MyAhaW1wb3J0YW50OyB9CgouZmMtZXZlbnQtb3JhbmdlLWRpbTpub3QoYSkgLmZjLWxpc3QtZXZlbnQtZG90IHsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjNlOSAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6ICNmZmJlODYgIWltcG9ydGFudDsgfQoKYS5mYy1ldmVudC10ZWFsLWRpbSB7IGJhY2tncm91bmQtY29sb3I6ICNlMmY4ZjEgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjZTJmOGYxICFpbXBvcnRhbnQ7IGNvbG9yOiAjMjBjOTk3ICFpbXBvcnRhbnQ7IH0KCmEuZmMtZXZlbnQtdGVhbC1kaW0gLmZjLWRheWdyaWQtZXZlbnQtZG90LCBhLmZjLWV2ZW50LXRlYWwtZGltIC5mYy1saXN0LWV2ZW50LWRvdCB7IGJvcmRlci1jb2xvcjogIzIwYzk5NyAhaW1wb3J0YW50OyB9CgoubW9kYWwtaGVhZGVyLmZjLWV2ZW50LXRlYWwtZGltIHsgYmFja2dyb3VuZC1jb2xvcjogI2UyZjhmMSAhaW1wb3J0YW50OyBjb2xvcjogIzIwYzk5NyAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6ICNjZGYzZTcgIWltcG9ydGFudDsgfQoKLm1vZGFsLWhlYWRlci5mYy1ldmVudC10ZWFsLWRpbSAuY2xvc2UsIC5tb2RhbC1oZWFkZXIuZmMtZXZlbnQtdGVhbC1kaW0gLm1vZGFsLXRpdGxlIHsgY29sb3I6ICMyMGM5OTcgIWltcG9ydGFudDsgfQoKc3Bhbi5mYy1ldmVudC10ZWFsLWRpbSAuZG90IHsgYmFja2dyb3VuZC1jb2xvcjogI2UyZjhmMSAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6ICMyMGM5OTcgIWltcG9ydGFudDsgfQoKLmZjLWV2ZW50LXRlYWwtZGltOm5vdChhKSAuZmMtbGlzdC1ldmVudC1kb3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZTJmOGYxICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogIzNjZTBhZiAhaW1wb3J0YW50OyB9CgouZmMtZHJhZ2dhYmxlIHsgYmFja2dyb3VuZC1jb2xvcjogIzA5NzFmZTsgYm9yZGVyLXJhZGl1czogNHB4OyBtYXJnaW46IC43NXJlbSAwOyBwYWRkaW5nOiAuMjVyZW0gLjVyZW07IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6ICNmZmY7IGxpc3Qtc3R5bGU6IG5vbmU7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgfQoKLmZjLWRheSB7IGNvbG9yOiAjMzY0YTYzOyB9CgouZmMtZGF5LW90aGVyIHsgY29sb3I6ICM1MjY0ODQ7IH0KCi5mYy1jb2wtaGVhZGVyLWNlbGwgeyBjb2xvcjogIzUyNjQ4NDsgfQoKLm5rLWthbmJhbiB7IG92ZXJmbG93OiBhdXRvOyBwYWRkaW5nLWJvdHRvbTogMXJlbTsgfQoKLmthbmJhbi1jb250YWluZXIgeyBwb3NpdGlvbjogcmVsYXRpdmU7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IHdpZHRoOiBhdXRvOyBkaXNwbGF5OiBmbGV4OyBtYXJnaW4tbGVmdDogLTE0cHg7IG1hcmdpbi1yaWdodDogLTE0cHg7IG92ZXJmbG93OiBhdXRvOyB9Cgoua2FuYmFuLWNvbnRhaW5lciAqIHsgYm94LXNpemluZzogYm9yZGVyLWJveDsgfQoKLmthbmJhbi1ib2FyZCB7IHBhZGRpbmc6IDE0cHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuMjMsIDEsIDAuMzIsIDEpOyBmbGV4LXNocmluazogMDsgfQoKLmthbmJhbi1ib2FyZC5kaXNhYmxlZC1ib2FyZCB7IG9wYWNpdHk6IDAuMzsgfQoKLmthbmJhbi1ib2FyZC5pcy1tb3ZpbmcuZ3UtbWlycm9yIHsgdHJhbnNmb3JtOiByb3RhdGUoM2RlZyk7IH0KCi5rYW5iYW4tYm9hcmQuaXMtbW92aW5nLmd1LW1pcnJvciAua2FuYmFuLWRyYWcgeyBvdmVyZmxvdzogaGlkZGVuOyBwYWRkaW5nLXJpZ2h0OiA1MHB4OyB9Cgoua2FuYmFuLWJvYXJkLWhlYWRlciB7IGJhY2tncm91bmQ6ICNmZmY7IGJvcmRlcjogMXB4IHNvbGlkICNlNWU5ZjI7IGJvcmRlci10b3A6IDNweCBzb2xpZCAjZGJkZmVhOyBib3JkZXItcmFkaXVzOiA0cHg7IHBhZGRpbmc6IC41cmVtIDEuMjVyZW07IG1hcmdpbi1ib3R0b206IDFyZW07IH0KCi5rYW5iYW4tcHJpbWFyeSB7IGJvcmRlci10b3AtY29sb3I6ICMwOTcxZmU7IH0KCi5rYW5iYW4tc3VjY2VzcyB7IGJvcmRlci10b3AtY29sb3I6ICMxZWUwYWM7IH0KCi5rYW5iYW4taW5mbyB7IGJvcmRlci10b3AtY29sb3I6ICMwOWMyZGU7IH0KCi5rYW5iYW4td2FybmluZyB7IGJvcmRlci10b3AtY29sb3I6ICNmNGJkMGU7IH0KCi5rYW5iYW4tZGFuZ2VyIHsgYm9yZGVyLXRvcC1jb2xvcjogI2U4NTM0NzsgfQoKLmthbmJhbi10aXRsZS1jb250ZW50IHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgfQoKLmthbmJhbi10aXRsZS1jb250ZW50IC50aXRsZSB7IGZvbnQtc2l6ZTogMC45Mzc1cmVtOyBtYXJnaW4tYm90dG9tOiAwOyBtYXJnaW4tcmlnaHQ6IDAuNzVyZW07IGNvbG9yOiAjNTI2NDg0OyB9Cgoua2FuYmFuLXRpdGxlLWJvYXJkIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyB9Cgoua2FuYmFuLWJvYXJkIGhlYWRlciAua2FuYmFuLXRpdGxlLWJ1dHRvbiB7IGZsb2F0OiByaWdodDsgfQoKLmthbmJhbi1ib2FyZCAua2FuYmFuLWRyYWcgeyBtaW4taGVpZ2h0OiAxMDBweDsgbWFyZ2luLWJvdHRvbTogMXJlbTsgfQoKLmthbmJhbi1ib2FyZCAua2FuYmFuLWRyYWc6ZW1wdHkgeyBib3JkZXItcmFkaXVzOiA0cHg7IGJvcmRlcjogMXB4IGRhc2hlZCAjZTVlOWYyOyB9Cgoua2FuYmFuLWJvYXJkOmFmdGVyIHsgY2xlYXI6IGJvdGg7IGRpc3BsYXk6IGJsb2NrOyBjb250ZW50OiAiIjsgfQoKLmthbmJhbi1pdGVtIHsgYm9yZGVyLXJhZGl1czogNHB4OyBib3JkZXI6IDFweCBzb2xpZCAjZTVlOWYyOyBwYWRkaW5nOiAxcmVtIDEuMjVyZW07IG1hcmdpbi1ib3R0b206IDAuNzVyZW07IGJhY2tncm91bmQ6ICNmZmY7IHRyYW5zaXRpb246IGFsbCAwLjNzIGN1YmljLWJlemllcigwLjIzLCAxLCAwLjMyLCAxKTsgfQoKLmthbmJhbi1pdGVtLXRpdGxlIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyB9Cgoua2FuYmFuLWl0ZW0tdGl0bGUgKyAua2FuYmFuLWl0ZW0tdGV4dCB7IG1hcmdpbi10b3A6IC41cmVtOyB9Cgoua2FuYmFuLWl0ZW0tdGl0bGUgLnRpdGxlIHsgZm9udC1zaXplOiAwLjkzNzVyZW07IG1hcmdpbi1ib3R0b206IDA7IG1hcmdpbi1yaWdodDogMC43NXJlbTsgfQoKLmthbmJhbi1pdGVtLXRhZ3MgeyBkaXNwbGF5OiBmbGV4OyBwYWRkaW5nLXRvcDogMC41cmVtOyBtYXJnaW46IC0uMTI1cmVtOyB9Cgoua2FuYmFuLWl0ZW0tdGFncyBsaSB7IHBhZGRpbmc6IC4xMjVyZW07IH0KCi5rYW5iYW4taXRlbS1tZXRhIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGZsZXgtZW5kOyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IHBhZGRpbmctdG9wOiAwLjVyZW07IH0KCi5rYW5iYW4taXRlbS1tZXRhLWxpc3QgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBmbGV4LXdyYXA6IHdyYXA7IG1hcmdpbjogMCAtLjI1cmVtOyB9Cgoua2FuYmFuLWl0ZW0tbWV0YS1saXN0Omxhc3QtY2hpbGQgeyBmbGV4LXdyYXA6IG5vd3JhcDsgfQoKLmthbmJhbi1pdGVtLW1ldGEtbGlzdDpmaXJzdC1jaGlsZCB7IHBhZGRpbmctcmlnaHQ6IDFyZW07IH0KCi5rYW5iYW4taXRlbS1tZXRhLWxpc3QgbGkgeyBmb250LXNpemU6IDAuODEyNXJlbTsgcGFkZGluZzogMCAuMjVyZW07IGNvbG9yOiAjODA5NGFlOyB9Cgoua2FuYmFuLWl0ZW0tbWV0YS1saXN0IGxpIHNwYW4geyB3aGl0ZS1zcGFjZTogbm93cmFwOyB9Cgoua2FuYmFuLWl0ZW0tbWV0YS1saXN0IGxpIC5pY29uICsgc3BhbiB7IG1hcmdpbi1sZWZ0OiAwLjI1cmVtOyB9Cgoua2FuYmFuLWl0ZW06aG92ZXIgeyBjdXJzb3I6IG1vdmU7IH0KCi5rYW5iYW4taXRlbTpsYXN0LWNoaWxkIHsgbWFyZ2luOiAwOyB9Cgoua2FuYmFuLWl0ZW0uaXMtbW92aW5nLmd1LW1pcnJvciB7IHRyYW5zZm9ybTogcm90YXRlKDNkZWcpOyBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsgfQoKLyogRHJhZ3VsYSBDU1MgICovCi5ndS1taXJyb3IgeyBwb3NpdGlvbjogZml4ZWQgIWltcG9ydGFudDsgbWFyZ2luOiAwICFpbXBvcnRhbnQ7IHotaW5kZXg6IDk5OTkgIWltcG9ydGFudDsgfQoKLmd1LWhpZGUgeyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0KCi5ndS11bnNlbGVjdGFibGUgeyAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lICFpbXBvcnRhbnQ7IC1tb3otdXNlci1zZWxlY3Q6IG5vbmUgIWltcG9ydGFudDsgLW1zLXVzZXItc2VsZWN0OiBub25lICFpbXBvcnRhbnQ7IHVzZXItc2VsZWN0OiBub25lICFpbXBvcnRhbnQ7IH0KCi5ndS10cmFuc2l0IHsgb3BhY2l0eTogMC4yICFpbXBvcnRhbnQ7IHRyYW5zZm9ybTogcm90YXRlKDBkZWcpICFpbXBvcnRhbnQ7IH0KCi5kcmFnX2hhbmRsZXIgeyBiYWNrZ3JvdW5kOiAjZmZmOyBib3JkZXItcmFkaXVzOiA1MCU7IHdpZHRoOiAyNHB4OyBoZWlnaHQ6IDI0cHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgdG9wOiAtM3B4OyBmbG9hdDogbGVmdDsgbWFyZ2luLXJpZ2h0OiA0cHg7IH0KCi5kcmFnX2hhbmRsZXI6aG92ZXIgeyBjdXJzb3I6IG1vdmU7IH0KCi5kcmFnX2hhbmRsZXJfaWNvbiB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgZGlzcGxheTogYmxvY2s7IGJhY2tncm91bmQ6ICMwMDA7IHdpZHRoOiAyNHB4OyBoZWlnaHQ6IDJweDsgdG9wOiAxMnB4OyB0cmFuc2l0aW9uOiAuNXMgZWFzZS1pbi1vdXQ7IH0KCi5kcmFnX2hhbmRsZXJfaWNvbjpiZWZvcmUsIC5kcmFnX2hhbmRsZXJfaWNvbjphZnRlciB7IGJhY2tncm91bmQ6ICMwMDA7IGNvbnRlbnQ6ICcnOyBkaXNwbGF5OiBibG9jazsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsgcG9zaXRpb246IGFic29sdXRlOyB0cmFuc2l0aW9uOiAuNXMgZWFzZS1pbi1vdXQ7IH0KCi5kcmFnX2hhbmRsZXJfaWNvbjpiZWZvcmUgeyB0b3A6IDZweDsgfQoKLmRyYWdfaGFuZGxlcl9pY29uOmFmdGVyIHsgYm90dG9tOiA2cHg7IH0KCi5rYW5iYW4tYWRkLXRhc2sgeyBjb2xvcjogIzA5NzFmZTsgYmFja2dyb3VuZDogI2ZmZjsgYm9yZGVyOiAxcHggZGFzaGVkICNlNWU5ZjI7IHBhZGRpbmctdG9wOiAwLjY3NXJlbTsgcGFkZGluZy1ib3R0b206IDAuNjc1cmVtOyB9Cgoua2FuYmFuLWFkZC10YXNrOmhvdmVyIHsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQ6ICMwOTcxZmU7IGJvcmRlcjogMXB4IHNvbGlkICMwOTcxZmU7IH0KCi5rYW5iYW4tYWRkLXRhc2s6Zm9jdXMgeyBvdXRsaW5lOiBub25lOyBib3gtc2hhZG93OiBub25lOyB9CgouZHVhbC1saXN0Ym94IHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgfQoKLmR1YWwtbGlzdGJveCAuZHVhbC1saXN0Ym94X19jb250YWluZXIgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBmbGV4LWRpcmVjdGlvbjogcm93OyBmbGV4LXdyYXA6IHdyYXA7IH0KCi5kdWFsLWxpc3Rib3ggLmR1YWwtbGlzdGJveF9fc2VhcmNoIHsgbWF4LXdpZHRoOiAzMDBweDsgfQoKLmR1YWwtbGlzdGJveCAuZHVhbC1saXN0Ym94X19zZWFyY2gtLWhpZGRlbiB7IGRpc3BsYXk6IG5vbmU7IH0KCi5kdWFsLWxpc3Rib3ggLmR1YWwtbGlzdGJveF9fYXZhaWxhYmxlLCAuZHVhbC1saXN0Ym94IC5kdWFsLWxpc3Rib3hfX3NlbGVjdGVkIHsgYm9yZGVyOiAxcHggc29saWQgI2U1ZTlmMjsgaGVpZ2h0OiAzMDBweDsgb3ZlcmZsb3cteTogYXV0bzsgcGFkZGluZzogMDsgd2lkdGg6IDMwMHB4OyBtYXJnaW4tdG9wOiAwOyBib3JkZXItcmFkaXVzOiAwIDAgNHB4IDRweDsgfQoKLmR1YWwtbGlzdGJveCAuZHVhbC1saXN0Ym94X19idXR0b25zIHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgbWFyZ2luOiAwIDEwcHg7IH0KCi5kdWFsLWxpc3Rib3ggLmR1YWwtbGlzdGJveF9fYnV0dG9uIHsgbWFyZ2luLWJvdHRvbTogNXB4OyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7IH0KCi5kdWFsLWxpc3Rib3ggLmR1YWwtbGlzdGJveF9fdGl0bGUgeyBmb250LXNpemU6IDFyZW07IGZvbnQtd2VpZ2h0OiA1MDA7IHBhZGRpbmc6IC41cmVtIDFyZW07IGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2U1ZTlmMjsgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2U1ZTlmMjsgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlNWU5ZjI7IG1hcmdpbi10b3A6IDFyZW07IC13ZWJraXQtbWFyZ2luLWJlZm9yZTogMXJlbTsgYm9yZGVyLXJhZGl1czogNHB4IDRweCAwIDA7IH0KCi5kdWFsLWxpc3Rib3ggLmR1YWwtbGlzdGJveF9faXRlbSB7IGRpc3BsYXk6IGJsb2NrOyBwYWRkaW5nOiAuNXJlbSAxcmVtOyBjdXJzb3I6IHBvaW50ZXI7IHVzZXItc2VsZWN0OiBub25lOyAtbW96LXVzZXItc2VsZWN0OiBub25lOyAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTVlOWYyOyB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMnMgZWFzZTsgfQoKLyoqIDAzLiBMQVlPVVRTICovCmJvZHkgeyBtaW4td2lkdGg6IDMyMHB4OyB9Cgpib2R5Lm5hdi1zaG93biB7IG92ZXJmbG93OiBoaWRkZW47IH0KCi5uay1ib2R5IHsgb3V0bGluZTogbm9uZTsgfQoKLm5rLWFwcC1yb290IHsgb3V0bGluZTogbm9uZTsgfQoKLm5rLW1haW4geyBwb3NpdGlvbjogcmVsYXRpdmU7IH0KCi5uay13cmFwIHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgbWluLWhlaWdodDogMTAwdmg7IH0KCi5uay1jb250ZW50IHsgcGFkZGluZzogMjRweCA0cHg7IH0KCi5uay1jb250ZW50LWZzIHsgbWluLWhlaWdodDogY2FsYygxMDB2aCAtICg2NXB4ICsgNjVweCkpOyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyB9CgpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsgLm5rLWNvbnRlbnQgeyBwYWRkaW5nOiAzMnB4IDIycHg7IH0KICAubmstY29udGVudC1mbHVpZCB7IHBhZGRpbmctbGVmdDogMjJweDsgcGFkZGluZy1yaWdodDogMjJweDsgfSB9CgpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHsgLm5rLWNvbnRlbnQtbGcgeyBwYWRkaW5nLXRvcDogMzZweDsgcGFkZGluZy1ib3R0b206IDM2cHg7IH0KICAubmstY29udGVudC1mbHVpZCB7IHBhZGRpbmctbGVmdDogMjRweDsgcGFkZGluZy1yaWdodDogMjRweDsgfSB9CgpAbWVkaWEgKG1pbi13aWR0aDogMTY2MHB4KSB7IC5uay1jb250ZW50LWxnIHsgcGFkZGluZy10b3A6IDU0cHg7IHBhZGRpbmctYm90dG9tOiA1NHB4OyB9CiAgLm5rLWNvbnRlbnQtZmx1aWQgeyBwYWRkaW5nLWxlZnQ6IDQ0cHg7IHBhZGRpbmctcmlnaHQ6IDQ0cHg7IH0gfQoKLm5rLWNvbnRlbnQtYm9keSB7IGZsZXgtZ3JvdzogMTsgfQoKLm5rLXdyYXAtbm9zaWRlYmFyIC5uay1jb250ZW50IHsgcGFkZGluZzogMCAhaW1wb3J0YW50OyBtaW4taGVpZ2h0OiAxMDB2aDsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgfQoKLmxvZ28tbGluayB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBhbGlnbi1pdGVtczogY2VudGVyOyB9CgoubG9nby1kYXJrIHsgb3BhY2l0eTogMTsgfQoKLnRjLWxpZ2h0IC5sb2dvLWRhcmssIC5pcy1kYXJrIC5sb2dvLWRhcmssIC5pcy10aGVtZSAubG9nby1kYXJrIHsgb3BhY2l0eTogMDsgfQoKLmxvZ28tbGlnaHQgeyBvcGFjaXR5OiAwOyB9CgoudGMtbGlnaHQgLmxvZ28tbGlnaHQsIC5pcy1kYXJrIC5sb2dvLWxpZ2h0LCAuaXMtdGhlbWUgLmxvZ28tbGlnaHQgeyBvcGFjaXR5OiAxOyB9CgoubG9nby1pbWcgeyBtYXgtaGVpZ2h0OiAzNnB4OyB9CgoubG9nby1pbWctbGcgeyBtYXgtaGVpZ2h0OiA2MHB4OyB9CgoubG9nby1pbWctc20geyBtYXgtaGVpZ2h0OiAyOHB4OyB9CgoubG9nby1pbWctaWNvbiB7IG1heC1oZWlnaHQ6IDMzcHg7IH0KCi5sb2dvLWltZzpub3QoOmZpcnN0LWNoaWxkKSB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMDsgdG9wOiA1MCU7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsgfQoKLm5rLWhlYWRlciB7IGJhY2tncm91bmQ6ICNmNWY2ZmE7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTVlOWYyOyBwYWRkaW5nOiAwIDZweDsgfQoKLm5rLWhlYWRlci5pcy1kYXJrOm5vdChbY2xhc3MqPWJnLV0pIHsgYmFja2dyb3VuZDogIzEwMTkyNDsgYm9yZGVyLWNvbG9yOiAjMjAzMjQ3OyB9CgoubmstaGVhZGVyLmlzLWxpZ2h0Om5vdChbY2xhc3MqPWJnLV0pIHsgYmFja2dyb3VuZDogI2ZmZjsgfQoKLm5rLWhlYWRlci5pcy10aGVtZTpub3QoW2NsYXNzKj1iZy1dKSB7IGJhY2tncm91bmQ6ICMwYTJkNmM7IGJvcmRlci1jb2xvcjogIzBmNDE5YTsgfQoKLm5rLWhlYWRlci1maXhlZCB7IHBvc2l0aW9uOiBmaXhlZDsgdG9wOiAwOyBsZWZ0OiAwOyByaWdodDogMDsgei1pbmRleDogODAwOyBtaW4td2lkdGg6IDMyMHB4OyB9CgoubmstaGVhZGVyLWZpeGVkICsgLm5rLWNvbnRlbnQgeyBtYXJnaW4tdG9wOiA2NXB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IH0KCi5uay1oZWFkZXItd3JhcCB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgbWFyZ2luOiAwIC0uMjVyZW07IH0KCi5uay1oZWFkZXItd3JhcCA+ICogeyBwYWRkaW5nOiAwIC4yNXJlbTsgfQoKLm5rLWhlYWRlci1yaWdodCB7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7IH0KCi5uay1oZWFkZXItY2VudGVyIHsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IH0KCi5uay1oZWFkZXItdG9vbHMgeyBtYXJnaW4tbGVmdDogYXV0bzsgcGFkZGluZy10b3A6IDE0cHg7IHBhZGRpbmctYm90dG9tOiAxNHB4OyB9CgoubmstaGVhZGVyLWJyYW5kIHsgZmxleC1zaHJpbms6IDA7IHBhZGRpbmctdG9wOiAxNHB4OyBwYWRkaW5nLWJvdHRvbTogMTRweDsgfQoKLm5rLWhlYWRlciAuZHJvcGRvd24tbWVudSAubGVhZC10ZXh0IHsgY29sb3I6ICMzNjRhNjM7IH0KCi5uay1oZWFkZXIgLmRyb3Bkb3duLW1lbnUgLnN1Yi10ZXh0LCAubmstaGVhZGVyIC5kcm9wZG93bi1tZW51IC5vdmVybGluZS10aXRsZSwgLm5rLWhlYWRlciAuZHJvcGRvd24tbWVudSAub3ZlcmxpbmUtdGl0bGUtYWx0IHsgY29sb3I6ICM4MDk0YWU7IH0KCi5uay1xdWljay1uYXYgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBtYXJnaW46IDAgLTZweDsgfQoKLm5rLXF1aWNrLW5hdiA+IGxpIHsgcGFkZGluZzogMCA2cHg7IH0KCi5uay1xdWljay1uYXYgPiBsaS51c2VyLWRyb3Bkb3duID4gYSB7IHBhZGRpbmc6IDAgMnB4OyB9CgoubmstcXVpY2stbmF2LWljb24geyBkaXNwbGF5OiBpbmxpbmUtZmxleDsgcG9zaXRpb246IHJlbGF0aXZlOyBmb250LXNpemU6IDEuNXJlbTsgei1pbmRleDogMTsgY29sb3I6ICM1MjY0ODQ7IHBhZGRpbmc6IC4zNzVyZW07IH0KCi5pcy1kYXJrIC5uay1xdWljay1uYXYtaWNvbiB7IGNvbG9yOiAjOWZhZWMyOyB9CgouaXMtdGhlbWUgLm5rLXF1aWNrLW5hdi1pY29uIHsgY29sb3I6ICNhOWNkZmY7IH0KCi5pcy10aGVtZSAubmstcXVpY2stbmF2LWljb24ubmstbmF2LXRvZ2dsZSB7IGNvbG9yOiAjZmZmOyB9CgoubmstcXVpY2stbmF2LWljb246Zm9jdXMgeyBib3gtc2hhZG93OiBub25lOyB9CgoubmstcXVpY2stbmF2LWljb246YmVmb3JlIHsgcG9zaXRpb246IGFic29sdXRlOyB6LWluZGV4OiAtMTsgaGVpZ2h0OiAyMHB4OyB3aWR0aDogMjBweDsgdG9wOiA1MCU7IGxlZnQ6IDUwJTsgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7IHRyYW5zZm9ybS1vcmlnaW46IDUwJSA1MCU7IGNvbnRlbnQ6ICcnOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZTVlOWYyOyBib3JkZXItcmFkaXVzOiA1MCU7IG9wYWNpdHk6IDA7IHRyYW5zaXRpb246IGFsbCAuM3M7IH0KCi5pcy1kYXJrIC5uay1xdWljay1uYXYtaWNvbjpiZWZvcmUgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMGIxMjE5OyB9CgouaXMtdGhlbWUgLm5rLXF1aWNrLW5hdi1pY29uOmJlZm9yZSB7IGJhY2tncm91bmQtY29sb3I6ICMwNzFkNDY7IH0KCi5zaG93ID4gLm5rLXF1aWNrLW5hdi1pY29uOmJlZm9yZSB7IG9wYWNpdHk6IDE7IGhlaWdodDogMTE2JTsgd2lkdGg6IDExNiU7IH0KCi5uay1xdWljay1uYXYtaWNvbjpob3ZlcjpiZWZvcmUsIC5uay1xdWljay1uYXYtaWNvbi5hY3RpdmU6YmVmb3JlIHsgb3BhY2l0eTogMTsgaGVpZ2h0OiAxMTYlOyB3aWR0aDogMTE2JTsgfQoKQG1lZGlhIChtYXgtd2lkdGg6IDM1OXB4KSB7IC5uay1xdWljay1uYXYgeyBtYXJnaW46IDAgLTNweDsgfQogIC5uay1xdWljay1uYXYgPiBsaSB7IHBhZGRpbmc6IDAgM3B4OyB9CiAgLmhpZGUtbWIteHMgeyBkaXNwbGF5OiBub25lOyB9IH0KCkBtZWRpYSAobWF4LXdpZHRoOiA1NzVweCkgeyAuaGlkZS1tYi1zbSB7IGRpc3BsYXk6IG5vbmU7IH0gfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7IC5uay1oZWFkZXIgeyBwYWRkaW5nOiAwIDIycHg7IH0KICAubmstcXVpY2stbmF2IHsgbWFyZ2luOiAwIC0xMHB4OyB9CiAgLm5rLXF1aWNrLW5hdiA+IGxpIHsgcGFkZGluZzogMCAxMHB4OyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgeyAubmstaGVhZGVyLWZsdWlkIHsgcGFkZGluZy1sZWZ0OiAyNHB4OyBwYWRkaW5nLXJpZ2h0OiAyNHB4OyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiAxNjYwcHgpIHsgLm5rLWhlYWRlci1mbHVpZCB7IHBhZGRpbmctbGVmdDogNDRweDsgcGFkZGluZy1yaWdodDogNDRweDsgfSB9Cgoubmstc2lkZWJhciB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgYmFja2dyb3VuZDogI2Y1ZjZmYTsgaGVpZ2h0OiAxMDAlOyBtaW4taGVpZ2h0OiAxMDB2aDsgdG9wOiAwOyBsZWZ0OiAwOyBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZTVlOWYyOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpOyB6LWluZGV4OiA5OTk7IHdpZHRoOiAyOTBweDsgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDQ1MG1zIGVhc2UsIHdpZHRoIDQ1MG1zIGVhc2U7IH0KCi5uay1zaWRlYmFyICsgLm5rLXdyYXAgeyB0cmFuc2l0aW9uOiBwYWRkaW5nIDQ1MG1zIGVhc2U7IH0KCi5uay1zaWRlYmFyICsgLm5rLXdyYXAgPiAubmstaGVhZGVyLWZpeGVkIHsgdHJhbnNpdGlvbjogbGVmdCA0NTBtcyBlYXNlOyB9Cgoubmstc2lkZWJhci5pcy1saWdodCB7IGJhY2tncm91bmQ6ICNmZmY7IGJvcmRlci1yaWdodC1jb2xvcjogI2ViZWVmMjsgfQoKLm5rLXNpZGViYXIuaXMtZGFyayB7IGJhY2tncm91bmQ6ICMxMDE5MjQ7IGJvcmRlci1yaWdodC1jb2xvcjogIzIwMzI0NzsgfQoKLm5rLXNpZGViYXIuaXMtdGhlbWUgeyBiYWNrZ3JvdW5kOiAjMGEyZDZjOyBib3JkZXItcmlnaHQtY29sb3I6ICMwZjQxOWE7IH0KCi5uay1zaWRlYmFyLW92ZXJsYXkgeyBwb3NpdGlvbjogZml4ZWQ7IHRvcDogMDsgcmlnaHQ6IDA7IGJvdHRvbTogMDsgbGVmdDogMDsgYmFja2dyb3VuZDogcmdiYSgxNiwgMjUsIDM2LCAwLjQpOyB6LWluZGV4OiA5MDA7IGFuaW1hdGlvbjogb3ZlcmxheS1mYWRlLWluIC40cyBlYXNlIDE7IH0KCi5uay1zaWRlYmFyLWVsZW1lbnQgeyBvdmVyZmxvdzogaGlkZGVuOyB3aWR0aDogMTAwJTsgbWF4LWhlaWdodDogMTAwJTsgfQoKLm5rLXNpZGViYXIubmstc2lkZWJhci1hY3RpdmUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7IH0KCi5uay1zaWRlYmFyLWZpeGVkIHsgcG9zaXRpb246IGZpeGVkOyBtYXgtaGVpZ2h0OiAxMDB2aDsgfQoKLm5rLXNpZGViYXItaGVhZCB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgcGFkZGluZzogMTRweCAyNHB4OyBtaW4td2lkdGg6IDEwMCU7IHdpZHRoOiAyOTBweDsgaGVpZ2h0OiA2NXB4OyBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2U1ZTlmMjsgfQoKLmlzLWRhcmsgLm5rLXNpZGViYXItaGVhZCB7IGJvcmRlci1jb2xvcjogIzIwMzI0NzsgfQoKLmlzLXRoZW1lIC5uay1zaWRlYmFyLWhlYWQgeyBib3JkZXItY29sb3I6ICMwZjQxOWE7IH0KCi5uay1zaWRlYmFyLWJyYW5kIHsgcG9zaXRpb246IHJlbGF0aXZlOyBmbGV4LXNocmluazogMDsgfQoKLm5rLXNpZGViYXItbG9nbyB7IHRyYW5zaXRpb246IG9wYWNpdHkgLjNzIGVhc2U7IH0KCi5uay1zaWRlYmFyLWxvZ28gLmxvZ28taW1nOm5vdCg6Zmlyc3QtY2hpbGQpIHsgcG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAwOyB0b3A6IDUwJTsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOyB9Cgoubmstc2lkZWJhci13aWRnZXQgeyBwYWRkaW5nLWxlZnQ6IDI0cHg7IHBhZGRpbmctcmlnaHQ6IDI0cHg7IHBhZGRpbmctdG9wOiAyLjVyZW07IH0KCi5uay1zaWRlYmFyLXdpZGdldC1mdWxsIHsgcGFkZGluZy1sZWZ0OiAwOyBwYWRkaW5nLXJpZ2h0OiAwOyB9Cgoubmstc2lkZWJhci13aWRnZXQtZnVsbCA+ICogeyBwYWRkaW5nLWxlZnQ6IDI0cHg7IHBhZGRpbmctcmlnaHQ6IDI0cHg7IH0KCi5uay1zaWRlYmFyLXdpZGdldC1mdWxsIC50b2dnbGUtZXhwYW5kLWNvbnRlbnQgeyBwYWRkaW5nLWxlZnQ6IDA7IHBhZGRpbmctcmlnaHQ6IDA7IH0KCi5uay1zaWRlYmFyLXdpZGdldC1mdWxsIC50b2dnbGUtZXhwYW5kLWNvbnRlbnQgPiAqIHsgcGFkZGluZy1sZWZ0OiAyNHB4OyBwYWRkaW5nLXJpZ2h0OiAyNHB4OyB9Cgoubmstc2lkZWJhci13aWRnZXQtc2FwIHsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlNWU5ZjI7IH0KCi5uay1zaWRlYmFyLWZvb3RlciB7IGJhY2tncm91bmQtY29sb3I6ICNmNWY2ZmE7IG1hcmdpbi10b3A6IGF1dG87IHBhZGRpbmc6IDEuNzVyZW0gMjRweCAxLjc1cmVtOyB9CgouaXMtbGlnaHQgLm5rLXNpZGViYXItZm9vdGVyIHsgYmFja2dyb3VuZDogI2ZmZjsgfQoKLmlzLWRhcmsgLm5rLXNpZGViYXItZm9vdGVyIHsgYmFja2dyb3VuZC1jb2xvcjogIzEwMTkyNDsgfQoKLmlzLXRoZW1lIC5uay1zaWRlYmFyLWZvb3RlciB7IGJhY2tncm91bmQtY29sb3I6ICMwYTJkNmM7IH0KCi5uay1zaWRlYmFyLWJvZHkgeyBwb3NpdGlvbjogcmVsYXRpdmU7IH0KCi5uay1zaWRlYmFyLWJvZHkgLnNpbXBsZWJhci1jb250ZW50IHsgcGFkZGluZy1ib3R0b206IC4yNXJlbSAhaW1wb3J0YW50OyBtaW4taGVpZ2h0OiAxMDAlOyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyB9Cgoubmstc2lkZWJhci1ib2R5IC5zaW1wbGViYXItc2Nyb2xsLWNvbnRlbnQgeyBtaW4taGVpZ2h0OiAxMDAlOyB3aWR0aDogMTAwJTsgfQoKLm5rLXNpZGViYXItY29udGVudCB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGhlaWdodDogY2FsYygxMDB2aCAtIDY1cHgpOyB9Cgoubmstc2lkZWJhci1jb250ZW50IC5uay1zaWRlYmFyLW1lbnUgeyBwYWRkaW5nLXRvcDogMS41cmVtOyB9Cgoubmstc2lkZWJhci1jb250ZW50IC5uay1zaWRlYmFyLW1lbnVbZGF0YS1zaW1wbGViYXJdIHsgaGVpZ2h0OiAxMDAlOyB9Cgoubmstc2lkZWJhci1jb250ZW50W2RhdGEtc2ltcGxlYmFyXSA+IGRpdiB7IHdpZHRoOiAxMDAlOyB9Cgoubmstc2lkZWJhci1wcm9maWxlLWZpeGVkIHsgcG9zaXRpb246IGZpeGVkOyBib3R0b206IDA7IHdpZHRoOiAxMDAlOyBiYWNrZ3JvdW5kOiAjZjVmNmZhOyB9CgouaXMtZGFyayAubmstc2lkZWJhci1wcm9maWxlLWZpeGVkIHsgYmFja2dyb3VuZDogIzEwMTkyNDsgfQoKLmlzLXRoZW1lIC5uay1zaWRlYmFyLXByb2ZpbGUtZml4ZWQgeyBiYWNrZ3JvdW5kOiAjMGEyZDZjOyB9Cgoubmstc2lkZWJhci5pcy10aGVtZSAudXNlci1iYWxhbmNlLWFsdCwgLm5rLXNpZGViYXIuaXMtZGFyayAudXNlci1iYWxhbmNlLWFsdCB7IGNvbG9yOiAjYTljZGZmOyB9CgoubmstcHJvZmlsZS1maXhlZCB7IHBvc2l0aW9uOiBmaXhlZDsgYm90dG9tOiAwOyB9CgoubmstcHJvZmlsZS10b2dnbGUgeyBkaXNwbGF5OiBibG9jazsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlNWU5ZjI7IH0KCi5uay1wcm9maWxlLWNvbnRlbnQgeyBiYWNrZ3JvdW5kOiAjZmZmOyBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2U1ZTlmMjsgfQoKLm5rLXByb2ZpbGUtbWVudSAubmstcHJvZmlsZS1jb250ZW50IHsgYmFja2dyb3VuZDogI2Y1ZjZmYTsgfQoKLm5rLXByb2ZpbGUtbWVudSA+ICogeyBwYWRkaW5nLWxlZnQ6IDI0cHg7IHBhZGRpbmctcmlnaHQ6IDI0cHg7IH0KCi5uay1wcm9maWxlLW1lbnUgLnRvZ2dsZS1leHBhbmQtY29udGVudCB7IHBhZGRpbmctbGVmdDogMDsgcGFkZGluZy1yaWdodDogMDsgfQoKLm5rLXByb2ZpbGUtbWVudSAudG9nZ2xlLWV4cGFuZC1jb250ZW50ID4gKiB7IHBhZGRpbmctbGVmdDogMjRweDsgcGFkZGluZy1yaWdodDogMjRweDsgfQoKQGtleWZyYW1lcyBvdmVybGF5LWZhZGUtaW4geyAwJSB7IG9wYWNpdHk6IDA7IH0KICAxMDAlIHsgb3BhY2l0eTogMTsgfSB9CgpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsgLm5rLXNpZGViYXItbW9iaWxlIHsgd2lkdGg6IDI5MHB4ICFpbXBvcnRhbnQ7IH0gfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgeyAubmstc2lkZWJhci1jb250ZW50IC5uay1zaWRlYmFyLW1lbnUgeyBwYWRkaW5nLXRvcDogMXJlbTsgcGFkZGluZy1ib3R0b206IDEuNXJlbTsgfQogIC5uay1zaWRlYmFyIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOyB3aWR0aDogMjkwcHg7IH0KICAubmstc2lkZWJhciArIC5uay13cmFwIHsgcGFkZGluZy1sZWZ0OiAyOTBweDsgfQogIC5uay1zaWRlYmFyICsgLm5rLXdyYXAgPiAubmstaGVhZGVyLWZpeGVkIHsgbGVmdDogMjkwcHg7IH0KICAubmstc2lkZWJhci1vdmVybGF5IHsgZGlzcGxheTogbm9uZTsgfSB9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7IC5uay1zaWRlYmFyIHsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsgLm5rLXNpZGViYXIgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7IHdpZHRoOiAzNDBweDsgfQogIC5uay1zaWRlYmFyIC5uay1zaWRlYmFyLWNvbnRlbnQgLm5rLXNpZGViYXItbWVudSB7IHBhZGRpbmctdG9wOiAyLjVyZW07IH0KICAubmstc2lkZWJhciArIC5uay13cmFwIHsgcGFkZGluZy1sZWZ0OiAzNDBweDsgfQogIC5uay1zaWRlYmFyICsgLm5rLXdyYXAgPiAubmstaGVhZGVyLWZpeGVkIHsgbGVmdDogMzQwcHg7IH0KICAubmstc2lkZWJhciAubmstc2lkZWJhci1oZWFkIHsgd2lkdGg6IDM0MHB4OyBwYWRkaW5nOiAxNHB4IDQwcHg7IGJvcmRlci1ib3R0b206IDA7IGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OyB9CiAgLm5rLXNpZGViYXIgLm5rLXNpZGViYXItd2lkZ2V0IHsgcGFkZGluZy1sZWZ0OiA0MHB4OyBwYWRkaW5nLXJpZ2h0OiA0MHB4OyB9CiAgLm5rLXNpZGViYXIgLm5rLXNpZGViYXItd2lkZ2V0LWZ1bGwgeyBwYWRkaW5nLWxlZnQ6IDA7IHBhZGRpbmctcmlnaHQ6IDA7IH0KICAubmstc2lkZWJhciAubmstc2lkZWJhci13aWRnZXQtZnVsbCA+ICogeyBwYWRkaW5nLWxlZnQ6IDQwcHg7IHBhZGRpbmctcmlnaHQ6IDQwcHg7IH0KICAubmstc2lkZWJhciAubmstc2lkZWJhci13aWRnZXQtZnVsbCAudG9nZ2xlLWV4cGFuZC1jb250ZW50IHsgcGFkZGluZy1sZWZ0OiAwOyBwYWRkaW5nLXJpZ2h0OiAwOyB9CiAgLm5rLXNpZGViYXIgLm5rLXNpZGViYXItd2lkZ2V0LWZ1bGwgLnRvZ2dsZS1leHBhbmQtY29udGVudCA+ICogeyBwYWRkaW5nLWxlZnQ6IDQwcHg7IHBhZGRpbmctcmlnaHQ6IDQwcHg7IH0KICAubmstc2lkZWJhciAubmstc2lkZWJhci1mb290ZXIgeyBwYWRkaW5nLWxlZnQ6IDQwcHg7IHBhZGRpbmctcmlnaHQ6IDQwcHg7IH0KICAubmstc2lkZWJhciAubmstc2lkZWJhci1mb290ZXIgLm5rLW1lbnUgeyBtYXJnaW4tbGVmdDogLTE2cHg7IG1hcmdpbi1yaWdodDogLTE2cHg7IH0KICAubmstc2lkZWJhci13aWRnZXQ6Zmlyc3QtY2hpbGQgeyBwYWRkaW5nLXRvcDogMC41cmVtOyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiAxNTQwcHgpIHsgLm5rLXNpZGViYXIgeyB3aWR0aDogNDAwcHg7IH0KICAubmstc2lkZWJhciArIC5uay13cmFwIHsgcGFkZGluZy1sZWZ0OiA0MDBweDsgfQogIC5uay1zaWRlYmFyICsgLm5rLXdyYXAgPiAubmstaGVhZGVyLWZsdWlkLCAubmstc2lkZWJhciArIC5uay13cmFwID4gLm5rLWZvb3Rlci1mbHVpZCB7IHBhZGRpbmctbGVmdDogMjRweDsgcGFkZGluZy1yaWdodDogMjRweDsgfQogIC5uay1zaWRlYmFyICsgLm5rLXdyYXAgPiAubmstaGVhZGVyLWZpeGVkIHsgbGVmdDogNDAwcHg7IH0KICAubmstc2lkZWJhciAubmstc2lkZWJhci1oZWFkIHsgd2lkdGg6IDQwMHB4OyBwYWRkaW5nOiAxNHB4IDU2cHg7IH0KICAubmstc2lkZWJhciAubmstc2lkZWJhci13aWRnZXQgeyBwYWRkaW5nLWxlZnQ6IDU2cHg7IHBhZGRpbmctcmlnaHQ6IDU2cHg7IH0KICAubmstc2lkZWJhciAubmstc2lkZWJhci13aWRnZXQtZnVsbCB7IHBhZGRpbmctbGVmdDogMDsgcGFkZGluZy1yaWdodDogMDsgfQogIC5uay1zaWRlYmFyIC5uay1zaWRlYmFyLXdpZGdldC1mdWxsID4gKiB7IHBhZGRpbmctbGVmdDogNTZweDsgcGFkZGluZy1yaWdodDogNTZweDsgfQogIC5uay1zaWRlYmFyIC5uay1zaWRlYmFyLXdpZGdldC1mdWxsIC50b2dnbGUtZXhwYW5kLWNvbnRlbnQgeyBwYWRkaW5nLWxlZnQ6IDA7IHBhZGRpbmctcmlnaHQ6IDA7IH0KICAubmstc2lkZWJhciAubmstc2lkZWJhci13aWRnZXQtZnVsbCAudG9nZ2xlLWV4cGFuZC1jb250ZW50ID4gKiB7IHBhZGRpbmctbGVmdDogNTZweDsgcGFkZGluZy1yaWdodDogNTZweDsgfQogIC5uay1zaWRlYmFyIC5uay1zaWRlYmFyLWZvb3RlciB7IHBhZGRpbmctbGVmdDogNTZweDsgcGFkZGluZy1yaWdodDogNTZweDsgfQogIC5uay1zaWRlYmFyIC5uay1zaWRlYmFyLWZvb3RlciAubmstbWVudSB7IG1hcmdpbi1sZWZ0OiAtMzJweDsgbWFyZ2luLXJpZ2h0OiAtMzJweDsgfQogIC5uay1jb250ZW50LWJvZHkgeyBwYWRkaW5nLXRvcDogMS41cmVtOyBwYWRkaW5nLWJvdHRvbTogMS41cmVtOyB9CiAgLm5rLXNpZGViYXItd2lkZ2V0OmZpcnN0LWNoaWxkIHsgcGFkZGluZy10b3A6IDIuMjVyZW07IH0gfQoKLm5rLW1lbnUgbGkgYSB7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IGRpc3BsYXk6IGZsZXg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgYWxpZ24taXRlbXM6IGNlbnRlcjsgdHJhbnNpdGlvbjogY29sb3IgLjNzLCBiYWNrZ3JvdW5kLWNvbG9yIC4zczsgfQoKLm5rLW1lbnUtaXRlbSB7IHBhZGRpbmc6IDJweCAwOyB9CgoubmstbWVudS1zdWIgLm5rLW1lbnUtaXRlbSB7IHBhZGRpbmc6IDFweCAwOyB9CgoubmstbWVudS1pdGVtLmhhcy1zdWIgeyBwb3NpdGlvbjogcmVsYXRpdmU7IH0KCi5uay1tZW51ID4gLm5rLW1lbnUtaXRlbS5tZW51LXdpdGhvdXQtaWNvbiA+IC5uay1tZW51LXN1YiAubmstbWVudS1saW5rIHsgcGFkZGluZy1sZWZ0OiAwOyB9CgoubmstbWVudS1saW5rIHsgcGFkZGluZzogMC42MjVyZW0gNDBweCAwLjYyNXJlbSAyNHB4OyBjb2xvcjogIzZlODJhNTsgZm9udC1mYW1pbHk6IE51bml0bywgc2Fucy1zZXJpZjsgZm9udC13ZWlnaHQ6IDcwMDsgZm9udC1zaXplOiAxNXB4OyBsZXR0ZXItc3BhY2luZzogMC4wMWVtOyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgbGluZS1oZWlnaHQ6IDEuMjVyZW07IH0KCi5uay1tZW51LWxpbms6aG92ZXIsIC5hY3RpdmUgPiAubmstbWVudS1saW5rIHsgY29sb3I6ICMyMjgwZmU7IH0KCi5uay1tZW51LWxpbms6aG92ZXIgLmNvdW50LCAuYWN0aXZlID4gLm5rLW1lbnUtbGluayAuY291bnQgeyBjb2xvcjogIzIyODBmZTsgfQoKLm5rLW1lbnUtc3ViIC5uay1tZW51LWxpbmsgeyBwYWRkaW5nOiAwLjM3NXJlbSA0MHB4IDAuMzc1cmVtIDM2cHg7IGZvbnQtZmFtaWx5OiBSb2JvdG8sIHNhbnMtc2VyaWY7IGZvbnQtd2VpZ2h0OiA0MDA7IGZvbnQtc2l6ZTogMTRweDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IGxpbmUtaGVpZ2h0OiAxLjI1cmVtOyBjb2xvcjogIzZlODJhNTsgfQoKLm5rLW1lbnUtbGluay5pcy1kaXNhYmxlIHsgY3Vyc29yOiBkZWZhdWx0OyB9CgoubmstbWVudS1saW5rLmlzLWRpc2FibGU6aG92ZXIsIC5hY3RpdmUgPiAubmstbWVudS1saW5rLmlzLWRpc2FibGUgeyBjb2xvcjogIzZlODJhNTsgfQoKLm5rLW1lbnUtbGluay5pcy1kaXNhYmxlOmhvdmVyIC5jb3VudCwgLmFjdGl2ZSA+IC5uay1tZW51LWxpbmsuaXMtZGlzYWJsZSAuY291bnQgeyBjb2xvcjogIzZlODJhNTsgfQoKLmlzLWxpZ2h0IC5uay1tZW51LWxpbmsgeyBjb2xvcjogIzUyNjQ4NDsgfQoKLmlzLXRoZW1lIC5uay1tZW51LWxpbmsgeyBjb2xvcjogIzgwYjVmZjsgfQoKLmlzLWxpZ2h0IC5uay1tZW51LWxpbms6aG92ZXIsIC5pcy1saWdodCAuYWN0aXZlID4gLm5rLW1lbnUtbGluayB7IGNvbG9yOiAjMjI4MGZlOyB9CgouaXMtdGhlbWUgLm5rLW1lbnUtbGluazpob3ZlciwgLmlzLXRoZW1lIC5hY3RpdmUgPiAubmstbWVudS1saW5rIHsgY29sb3I6ICNmZmY7IH0KCi5uay1tZW51LWxpbmsgc3Bhbi5zbWFsbCB7IGNvbG9yOiAjODA5NGFlOyBtYXJnaW4tbGVmdDogLjVyZW07IH0KCi5uay1tZW51LWljb24geyBmb250LXdlaWdodDogbm9ybWFsOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB3aWR0aDogMzZweDsgbGluZS1oZWlnaHQ6IDE7IGZsZXgtZ3JvdzogMDsgY29sb3I6ICM4MDk0YWU7IH0KCi5pcy10aGVtZSAubmstbWVudS1pY29uIHsgY29sb3I6ICM4MGI1ZmY7IH0KCi5uay1tZW51LWljb24gc3ZnLCAubmstbWVudS1pY29uIGltZyB7IHdpZHRoOiAzNnB4OyB9CgoubmstbWVudS1pY29uIC5pY29uIHsgZm9udC1zaXplOiAyNHB4OyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyBjb2xvcjogY3VycmVudENvbG9yOyB0cmFuc2l0aW9uOiBjb2xvciAuNHMsIGJhY2tncm91bmQtY29sb3IgLjRzOyB9CgoubmstbWVudS1saW5rOmhvdmVyIC5uay1tZW51LWljb24sIC5uay1tZW51LWl0ZW0uYWN0aXZlID4gLm5rLW1lbnUtbGluayAubmstbWVudS1pY29uLCAubmstbWVudS1pdGVtLmN1cnJlbnQtbWVudSA+IC5uay1tZW51LWxpbmsgLm5rLW1lbnUtaWNvbiB7IGNvbG9yOiAjMjI4MGZlOyB9CgouaXMtdGhlbWUgLm5rLW1lbnUtbGluazpob3ZlciAubmstbWVudS1pY29uLCAuaXMtdGhlbWUgLm5rLW1lbnUtaXRlbS5hY3RpdmUgPiAubmstbWVudS1saW5rIC5uay1tZW51LWljb24sIC5pcy10aGVtZSAubmstbWVudS1pdGVtLmN1cnJlbnQtbWVudSA+IC5uay1tZW51LWxpbmsgLm5rLW1lbnUtaWNvbiB7IGNvbG9yOiAjZmZmOyB9CgoubmstbWVudS1saW5rLmlzLWRpc2FibGU6aG92ZXIgLm5rLW1lbnUtaWNvbiB7IGNvbG9yOiAjODA5NGFlOyB9CgouaXMtdGhlbWUgLm5rLW1lbnUtbGluay5pcy1kaXNhYmxlOmhvdmVyIC5uay1tZW51LWljb24geyBjb2xvcjogI2E5Y2RmZjsgfQoKLm5rLW1lbnUtdGV4dCB7IGZsZXgtZ3JvdzogMTsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB9CgoubmstbWVudS1iYWRnZSB7IGJvcmRlci1yYWRpdXM6IDNweDsgcGFkZGluZzogMCAuNHJlbTsgZm9udC1zaXplOiAxMXB4OyBjb2xvcjogIzNhOGRmZTsgYmFja2dyb3VuZDogI2UxZWVmZjsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDUwJTsgcmlnaHQ6IDI0cHg7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsgfQoKLmlzLWRhcmsgLm5rLW1lbnUtYmFkZ2UgeyBjb2xvcjogIzZiYWFmZTsgYmFja2dyb3VuZDogIzIwMzI0NzsgfQoKLmlzLXRoZW1lIC5uay1tZW51LWJhZGdlIHsgY29sb3I6ICNhOWNkZmY7IGJhY2tncm91bmQ6ICMwZjQ1YTQ7IH0KCi5uay1tZW51LW1haW4gLm5rLW1lbnUtc3ViIC5uay1tZW51LWJhZGdlIHsgY29sb3I6ICMzYThkZmU7IGJhY2tncm91bmQ6ICNlMWVlZmY7IH0KCi5uay1tZW51LWhlYWRpbmcgeyBwYWRkaW5nOiAwLjI1cmVtIDI0cHggMC41cmVtOyBjb2xvcjogIzgwOTRhZTsgfQoKLmlzLXRoZW1lIC5uay1tZW51LWhlYWRpbmcgeyBjb2xvcjogIzVkYTFmZjsgfQoKLm5rLW1lbnUtaXRlbSArIC5uay1tZW51LWhlYWRpbmcgeyBwYWRkaW5nLXRvcDogMi41cmVtOyB9CgoubmstbWVudS1oZWFkaW5nIC5vdmVybGluZS10aXRsZSB7IGNvbG9yOiBpbmhlcml0OyB9CgoubmstbWVudS1oZWFkaW5nIHNwYW4geyBmb250LXNpemU6IDEzcHg7IGZvbnQtd2VpZ2h0OiA0MDA7IH0KCi5uay1tZW51LWhyIHsgbWFyZ2luOiAxLjI1cmVtIDA7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGJkZmVhOyB9CgouaXMtZGFyayAubmstbWVudS1ociB7IGJvcmRlci1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEyKTsgfQoKLmlzLXRoZW1lIC5uay1tZW51LWhyIHsgYm9yZGVyLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpOyB9CgoubmstbWVudS1ociArIC5uay1tZW51LWhlYWRpbmcgeyBwYWRkaW5nLXRvcDogMXJlbTsgfQoKLm5rLW1lbnUtc3ViIHsgcGFkZGluZy1ib3R0b206IC4yNXJlbTsgfQoKLm5rLW1lbnUtdG9nZ2xlICsgLm5rLW1lbnUtc3ViIHsgZGlzcGxheTogbm9uZTsgfQoKLmFjdGl2ZSA+IC5uay1tZW51LXN1YiB7IGRpc3BsYXk6IGJsb2NrOyB9CgoubmstbWVudS1zdWIgLm5rLW1lbnUtbGluazpob3ZlciB7IGNvbG9yOiAjMDk3MWZlOyB9CgouaXMtdGhlbWUgLm5rLW1lbnUtc3ViIC5uay1tZW51LWxpbms6aG92ZXIgeyBjb2xvcjogI2ZmZjsgfQoKLm5rLW1lbnUtc3ViIC5hY3RpdmUgPiAubmstbWVudS1saW5rIHsgY29sb3I6ICMwOTcxZmU7IH0KCi5pcy10aGVtZSAubmstbWVudS1zdWIgLmFjdGl2ZSA+IC5uay1tZW51LWxpbmsgeyBjb2xvcjogI2ZmZjsgfQoKLm5rLW1lbnUtc3ViIC5uay1tZW51LWljb24geyB3aWR0aDogMjRweDsgbWFyZ2luLXRvcDogLTFweDsgfQoKLm5rLW1lbnUtc3ViIC5uay1tZW51LWljb24gLmljb24geyBtYXJnaW4tdG9wOiAtMXB4OyBmb250LXNpemU6IDEuMmVtOyB9CgoubmstbWVudS10b2dnbGUgeyBwb3NpdGlvbjogcmVsYXRpdmU7IH0KCi5uay1tZW51LXRvZ2dsZTphZnRlciB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgZm9udC1mYW1pbHk6ICJOaW9pY29uIjsgY29udGVudDogIu6nkyI7IHJpZ2h0OiAxLjI1cmVtOyB0b3A6IDUwJTsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOyBmb250LXNpemU6IDFyZW07IGNvbG9yOiAjODA5NGFlOyB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjNzLCBjb2xvciAuMXM7IH0KCi5pcy1kYXJrIC5uay1tZW51LXRvZ2dsZTphZnRlciwgLmlzLXRoZW1lIC5uay1tZW51LXRvZ2dsZTphZnRlciB7IGNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCk7IH0KCi5oYXMtc3ViLmFjdGl2ZSA+IC5uay1tZW51LXRvZ2dsZTphZnRlciB7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKSByb3RhdGUoOTBkZWcpOyB9CgoubmstbWVudSAuY291bnQgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGZvbnQtc2l6ZTogMC44NWVtOyBtYXJnaW4tbGVmdDogMC4yNXJlbTsgY29sb3I6ICM4MDk0YWU7IGxpbmUtaGVpZ2h0OiAxOyB9CgoubmstbWVudS1pY29uLWNvbG9yZWQgLm5rLW1lbnUtaWNvbiB7IGNvbG9yOiAjMDk3MWZlOyB9CgoubmstbWVudS10b29sdGlwIHsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IHJpZ2h0OiAwOyBib3R0b206IDA7IGxlZnQ6IDA7IH0KCi5uay1tZW51LWZvb3RlciB7IGRpc3BsYXk6IGZsZXg7IH0KCi5uay1tZW51LWZvb3RlciAubmstbWVudS1saW5rIHsgcGFkZGluZy1sZWZ0OiAwOyBwYWRkaW5nLXJpZ2h0OiAwOyBwYWRkaW5nLXRvcDogLjI1cmVtOyBwYWRkaW5nLWJvdHRvbTogLjI1cmVtOyBjb2xvcjogIzgwOTRhZTsgZm9udC1mYW1pbHk6IFJvYm90bywgc2Fucy1zZXJpZjsgZm9udC13ZWlnaHQ6IDUwMDsgfQoKLm5rLW1lbnUtZm9vdGVyIC5uay1tZW51LWxpbms6aG92ZXIgeyBjb2xvcjogIzIyODBmZTsgfQoKLmlzLXRoZW1lIC5uay1tZW51LWZvb3RlciAubmstbWVudS1saW5rIHsgY29sb3I6ICNhOWNkZmY7IH0KCi5uay1tZW51LWZvb3RlciAubmstbWVudS1pY29uIHsgd2lkdGg6IDEuMzc1cmVtOyBjb2xvcjogIzA5NzFmZTsgfQoKLm5rLW1lbnUtZm9vdGVyIC5uay1tZW51LWljb24gLmljb24geyBmb250LXNpemU6IDFyZW07IH0KCi5uay1tZW51LWZvb3RlciAubmstbWVudS10ZXh0IHsgZm9udC1zaXplOiAxMnB4OyBsaW5lLWhlaWdodDogMS4xMjVyZW07IH0KCi5uay1zaWRlYmFyIC5uay1tZW51ID4gbGkgLm5rLW1lbnUtc3ViIC5uay1tZW51LWxpbmsgeyBwYWRkaW5nLWxlZnQ6IDYwcHg7IH0KCi5uay1zaWRlYmFyIC5uay1tZW51ID4gbGkgLm5rLW1lbnUtc3ViIC5uay1tZW51LXN1YiB7IG1hcmdpbi10b3A6IC41cmVtOyBtYXJnaW4tYm90dG9tOiAuNXJlbTsgbWFyZ2luLWxlZnQ6IDYwcHg7IGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2RiZGZlYTsgcGFkZGluZy1ib3R0b206IDA7IH0KCi5uay1zaWRlYmFyIC5uay1tZW51ID4gbGkgLm5rLW1lbnUtc3ViIC5uay1tZW51LXN1YiAubmstbWVudS1saW5rIHsgcGFkZGluZy1sZWZ0OiAxcmVtOyB9Cgoubmstc2lkZWJhci5pcy1kYXJrIC5uay1tZW51ID4gbGkgLm5rLW1lbnUtc3ViIC5uay1tZW51LXN1YiwgLm5rLXNpZGViYXIuaXMtdGhlbWUgLm5rLW1lbnUgPiBsaSAubmstbWVudS1zdWIgLm5rLW1lbnUtc3ViIHsgYm9yZGVyLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTIpOyB9Cgoubmstc2lkZWJhciAubmstbWVudS10b2dnbGU6YWZ0ZXIgeyByaWdodDogMjJweDsgfQoKLm5rLXNpZGViYXIgLm5rLW1lbnUgPiBsaSAubmstbWVudS1zdWIgLm5rLW1lbnUtbGluayB7IHBhZGRpbmctbGVmdDogNjBweDsgfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgeyAubmstc2lkZWJhciAubmstbWVudSB7IHBhZGRpbmctbGVmdDogMTZweDsgcGFkZGluZy1yaWdodDogMTZweDsgfQogIC5uay1zaWRlYmFyIC5uay1tZW51ID4gbGkgLm5rLW1lbnUtc3ViIHsgcGFkZGluZy10b3A6IC4yNXJlbTsgfQogIC5uay1zaWRlYmFyIC5uay1tZW51ID4gbGkgLm5rLW1lbnUtc3ViIC5uay1tZW51LWxpbmsgeyBwYWRkaW5nLWxlZnQ6IDYwcHg7IH0KICAubmstc2lkZWJhciAubmstbWVudSA+IGxpID4gYSB7IGJvcmRlci1yYWRpdXM6IDQwcHg7IH0KICAubmstc2lkZWJhciAubmstbWVudSA+IGxpID4gYTpob3ZlciB7IGJhY2tncm91bmQ6ICNmZmY7IH0KICAubmstc2lkZWJhciAubmstbWVudSA+IGxpOmhvdmVyID4gYSwgLm5rLXNpZGViYXIgLm5rLW1lbnUgPiBsaS5hY3RpdmUgPiBhLCAubmstc2lkZWJhciAubmstbWVudSA+IGxpLmN1cnJlbnQtbWVudSA+IGEgeyBiYWNrZ3JvdW5kOiAjZmZmOyB9CiAgLm5rLXNpZGViYXIgLm5rLW1lbnUtc20gPiBsaTpob3ZlciBhLCAubmstc2lkZWJhciAubmstbWVudS1zbSA+IGxpLmFjdGl2ZSBhLCAubmstc2lkZWJhciAubmstbWVudS1zbSA+IGxpLmN1cnJlbnQtbWVudSBhLCAubmstc2lkZWJhciAubmstbWVudS1zbSA+IGxpID4gYTpob3ZlciwgLm5rLXNpZGViYXIgLm5rLW1lbnUtZm9vdGVyID4gbGk6aG92ZXIgYSwgLm5rLXNpZGViYXIgLm5rLW1lbnUtZm9vdGVyID4gbGkuYWN0aXZlIGEsIC5uay1zaWRlYmFyIC5uay1tZW51LWZvb3RlciA+IGxpLmN1cnJlbnQtbWVudSBhLCAubmstc2lkZWJhciAubmstbWVudS1mb290ZXIgPiBsaSA+IGE6aG92ZXIgeyBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OyB9CiAgLm5rLXNpZGViYXIuaXMtZGFyayAubmstbWVudSA+IGxpOmhvdmVyID4gYSwgLm5rLXNpZGViYXIuaXMtZGFyayAubmstbWVudSA+IGxpLmFjdGl2ZSA+IGEsIC5uay1zaWRlYmFyLmlzLWRhcmsgLm5rLW1lbnUgPiBsaS5jdXJyZW50LW1lbnUgPiBhLCAubmstc2lkZWJhci5pcy1kYXJrIC5uay1tZW51ID4gbGkgPiBhOmhvdmVyIHsgYmFja2dyb3VuZDogIzE5MjgzOTsgfQogIC5uay1zaWRlYmFyLmlzLXRoZW1lIC5uay1tZW51ID4gbGk6aG92ZXIgPiBhLCAubmstc2lkZWJhci5pcy10aGVtZSAubmstbWVudSA+IGxpLmFjdGl2ZSA+IGEsIC5uay1zaWRlYmFyLmlzLXRoZW1lIC5uay1tZW51ID4gbGkuY3VycmVudC1tZW51ID4gYSwgLm5rLXNpZGViYXIuaXMtdGhlbWUgLm5rLW1lbnUgPiBsaSA+IGE6aG92ZXIgeyBiYWNrZ3JvdW5kOiAjMGUzZDkxOyB9CiAgLm5rLXNpZGViYXIuaXMtbGlnaHQgLm5rLW1lbnUgPiBsaTpob3ZlciA+IGEsIC5uay1zaWRlYmFyLmlzLWxpZ2h0IC5uay1tZW51ID4gbGkuYWN0aXZlID4gYSwgLm5rLXNpZGViYXIuaXMtbGlnaHQgLm5rLW1lbnUgPiBsaS5jdXJyZW50LW1lbnUgPiBhLCAubmstc2lkZWJhci5pcy1saWdodCAubmstbWVudSA+IGxpID4gYTpob3ZlciB7IGJhY2tncm91bmQ6ICNlZWYwZjc7IH0gfQoKQG1lZGlhIChtaW4td2lkdGg6IDE1NjBweCkgeyAubmstc2lkZWJhciAubmstbWVudSB7IHBhZGRpbmctbGVmdDogMzJweDsgcGFkZGluZy1yaWdodDogMzJweDsgfQogIC5uay1zaWRlYmFyIC5uay1tZW51LWhlYWRpbmcgeyBwYWRkaW5nLWxlZnQ6IDI0cHg7IHBhZGRpbmctcmlnaHQ6IDI0cHg7IH0gfQoKLm5rLWZvb3RlciB7IG1hcmdpbi10b3A6IGF1dG87IGJhY2tncm91bmQ6ICNmZmY7IGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTVlOWYyOyBwYWRkaW5nOiAyMHB4IDZweDsgfQoKLm5rLWZvb3Rlci5pcy1kYXJrOm5vdChbY2xhc3MqPWJnLV0pIHsgYmFja2dyb3VuZDogIzBiMmY3MDsgfQoKLm5rLWZvb3Rlci13cmFwIHsgZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyBhbGlnbi1pdGVtczogY2VudGVyOyBmbGV4LXdyYXA6IHdyYXA7IH0KCi5uay1mb290ZXItY29weXJpZ2h0IHsgY29sb3I6ICM4MDk0YWU7IH0KCi5uay1mb290ZXItY29weXJpZ2h0IGEgeyBjb2xvcjogaW5oZXJpdDsgfQoKLm5rLWZvb3Rlci1jb3B5cmlnaHQgYTpob3ZlciB7IGNvbG9yOiAjMDk3MWZlOyB9CgpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsgLm5rLWZvb3RlciB7IHBhZGRpbmc6IDIwcHggMjJweDsgfSB9CgpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHsgLm5rLWZvb3Rlci1mbHVpZCB7IHBhZGRpbmctbGVmdDogMjRweDsgcGFkZGluZy1yaWdodDogMjRweDsgfSB9CgpAbWVkaWEgKG1pbi13aWR0aDogMTY2MHB4KSB7IC5uay1mb290ZXItZmx1aWQgeyBwYWRkaW5nLWxlZnQ6IDQ0cHg7IHBhZGRpbmctcmlnaHQ6IDQ0cHg7IH0gfQoKLm5rLXNwbGl0IHsgcG9zaXRpb246IHJlbGF0aXZlOyBkaXNwbGF5OiBmbGV4OyB9Cgoubmstc3BsaXQtcGFnZSB7IG1pbi1oZWlnaHQ6IDEwMHZoOyB9Cgoubmstc3BsaXQtY29udGVudCB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgZmxleC1zaHJpbms6IDA7IHdpZHRoOiAxMDAlOyBtaW4taGVpZ2h0OiAxMDAlOyB9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsgLm5rLXNwbGl0LWNvbnRlbnQtbWQgeyB3aWR0aDogNjQycHg7IH0gfQoKLm5rLXNwbGl0LXN0cmV0Y2ggeyBmbGV4LWdyb3c6IDE7IGZsZXgtc2hyaW5rOiAxOyB9CgpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsgLm5rLXNwbGl0LXN0cmV0Y2gudG9nZ2xlLWJyZWFrLWxnIHsgd2lkdGg6IDQ2MHB4OyB9IH0KCkBtZWRpYSAobWF4LXdpZHRoOiA1NzUuOThweCkgeyAubmstc3BsaXQtc20geyBmbGV4LXdyYXA6IHdyYXA7IH0gfQoKQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7IC5uay1zcGxpdC1tZCB7IGZsZXgtd3JhcDogd3JhcDsgfSB9CgpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsgLm5rLXNwbGl0LWxnIHsgZmxleC13cmFwOiB3cmFwOyB9IH0KCkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsgLm5rLXNwbGl0LXhsIHsgZmxleC13cmFwOiB3cmFwOyB9IH0KCkBtZWRpYSAobWF4LXdpZHRoOiAxNTM5Ljk4cHgpIHsgLm5rLXNwbGl0LXh4bCB7IGZsZXgtd3JhcDogd3JhcDsgfSB9CgovKiogMDQuIFVUSUxJVEVTICovCmNhbnZhcyB7IHdpZHRoOiAxMDAlOyBtYXgtd2lkdGg6IDEwMCU7IH0KCmE6aG92ZXIgeyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH0KCnA6bGFzdC1jaGlsZCB7IG1hcmdpbi1ib3R0b206IDA7IH0KCi5kZWwgeyB0ZXh0LWRlY29yYXRpb246IGxpbmUtdGhyb3VnaDsgfQoKc3BhbltkYXRhLXRvZ2dsZT10b29sdGlwXTpmb2N1cyB7IG91dGxpbmU6IG5vbmU7IH0KCi5nLTAgeyBtYXJnaW46IDAgIWltcG9ydGFudDsgfQoKLmctMCA+IGxpLCAuZy0wID4gZGl2IHsgcGFkZGluZzogMCAhaW1wb3J0YW50OyB9CgouZ3gtMCB7IG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7IG1hcmdpbi1yaWdodDogMCAhaW1wb3J0YW50OyB9CgouZ3gtMCA+IGxpLCAuZ3gtMCA+IGRpdiB7IHBhZGRpbmctbGVmdDogMCAhaW1wb3J0YW50OyBwYWRkaW5nLXJpZ2h0OiAwICFpbXBvcnRhbnQ7IH0KCi5neS0wIHsgbWFyZ2luLXRvcDogMCAhaW1wb3J0YW50OyBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7IH0KCi5neS0wID4gbGksIC5neS0wID4gZGl2IHsgcGFkZGluZy10b3A6IDAgIWltcG9ydGFudDsgcGFkZGluZy1ib3R0b206IDAgIWltcG9ydGFudDsgfQoKLmctMSB7IG1hcmdpbjogLTAuMTg3NXJlbSAhaW1wb3J0YW50OyB9CgouZy0xID4gbGksIC5nLTEgPiBkaXYgeyBwYWRkaW5nOiAwLjE4NzVyZW0gIWltcG9ydGFudDsgfQoKLmd4LTEgeyBtYXJnaW4tbGVmdDogLTAuMTg3NXJlbSAhaW1wb3J0YW50OyBtYXJnaW4tcmlnaHQ6IC0wLjE4NzVyZW0gIWltcG9ydGFudDsgfQoKLmd4LTEgPiBsaSwgLmd4LTEgPiBkaXYgeyBwYWRkaW5nLWxlZnQ6IDAuMTg3NXJlbSAhaW1wb3J0YW50OyBwYWRkaW5nLXJpZ2h0OiAwLjE4NzVyZW0gIWltcG9ydGFudDsgfQoKLmd5LTEgeyBtYXJnaW4tdG9wOiAtMC4xODc1cmVtICFpbXBvcnRhbnQ7IG1hcmdpbi1ib3R0b206IC0wLjE4NzVyZW0gIWltcG9ydGFudDsgfQoKLmd5LTEgPiBsaSwgLmd5LTEgPiBkaXYgeyBwYWRkaW5nLXRvcDogMC4xODc1cmVtICFpbXBvcnRhbnQ7IHBhZGRpbmctYm90dG9tOiAwLjE4NzVyZW0gIWltcG9ydGFudDsgfQoKLmctMiB7IG1hcmdpbjogLTAuMzc1cmVtICFpbXBvcnRhbnQ7IH0KCi5nLTIgPiBsaSwgLmctMiA+IGRpdiB7IHBhZGRpbmc6IDAuMzc1cmVtICFpbXBvcnRhbnQ7IH0KCi5neC0yIHsgbWFyZ2luLWxlZnQ6IC0wLjM3NXJlbSAhaW1wb3J0YW50OyBtYXJnaW4tcmlnaHQ6IC0wLjM3NXJlbSAhaW1wb3J0YW50OyB9CgouZ3gtMiA+IGxpLCAuZ3gtMiA+IGRpdiB7IHBhZGRpbmctbGVmdDogMC4zNzVyZW0gIWltcG9ydGFudDsgcGFkZGluZy1yaWdodDogMC4zNzVyZW0gIWltcG9ydGFudDsgfQoKLmd5LTIgeyBtYXJnaW4tdG9wOiAtMC4zNzVyZW0gIWltcG9ydGFudDsgbWFyZ2luLWJvdHRvbTogLTAuMzc1cmVtICFpbXBvcnRhbnQ7IH0KCi5neS0yID4gbGksIC5neS0yID4gZGl2IHsgcGFkZGluZy10b3A6IDAuMzc1cmVtICFpbXBvcnRhbnQ7IHBhZGRpbmctYm90dG9tOiAwLjM3NXJlbSAhaW1wb3J0YW50OyB9CgouZy0zIHsgbWFyZ2luOiAtMC41cmVtICFpbXBvcnRhbnQ7IH0KCi5nLTMgPiBsaSwgLmctMyA+IGRpdiB7IHBhZGRpbmc6IDAuNXJlbSAhaW1wb3J0YW50OyB9CgouZ3gtMyB7IG1hcmdpbi1sZWZ0OiAtMC41cmVtICFpbXBvcnRhbnQ7IG1hcmdpbi1yaWdodDogLTAuNXJlbSAhaW1wb3J0YW50OyB9CgouZ3gtMyA+IGxpLCAuZ3gtMyA+IGRpdiB7IHBhZGRpbmctbGVmdDogMC41cmVtICFpbXBvcnRhbnQ7IHBhZGRpbmctcmlnaHQ6IDAuNXJlbSAhaW1wb3J0YW50OyB9CgouZ3ktMyB7IG1hcmdpbi10b3A6IC0wLjVyZW0gIWltcG9ydGFudDsgbWFyZ2luLWJvdHRvbTogLTAuNXJlbSAhaW1wb3J0YW50OyB9CgouZ3ktMyA+IGxpLCAuZ3ktMyA+IGRpdiB7IHBhZGRpbmctdG9wOiAwLjVyZW0gIWltcG9ydGFudDsgcGFkZGluZy1ib3R0b206IDAuNXJlbSAhaW1wb3J0YW50OyB9CgouZy00IHsgbWFyZ2luOiAtMC43NXJlbSAhaW1wb3J0YW50OyB9CgouZy00ID4gbGksIC5nLTQgPiBkaXYgeyBwYWRkaW5nOiAwLjc1cmVtICFpbXBvcnRhbnQ7IH0KCi5neC00IHsgbWFyZ2luLWxlZnQ6IC0wLjc1cmVtICFpbXBvcnRhbnQ7IG1hcmdpbi1yaWdodDogLTAuNzVyZW0gIWltcG9ydGFudDsgfQoKLmd4LTQgPiBsaSwgLmd4LTQgPiBkaXYgeyBwYWRkaW5nLWxlZnQ6IDAuNzVyZW0gIWltcG9ydGFudDsgcGFkZGluZy1yaWdodDogMC43NXJlbSAhaW1wb3J0YW50OyB9CgouZ3ktNCB7IG1hcmdpbi10b3A6IC0wLjc1cmVtICFpbXBvcnRhbnQ7IG1hcmdpbi1ib3R0b206IC0wLjc1cmVtICFpbXBvcnRhbnQ7IH0KCi5neS00ID4gbGksIC5neS00ID4gZGl2IHsgcGFkZGluZy10b3A6IDAuNzVyZW0gIWltcG9ydGFudDsgcGFkZGluZy1ib3R0b206IDAuNzVyZW0gIWltcG9ydGFudDsgfQoKLmctNSB7IG1hcmdpbjogLTEuMzc1cmVtICFpbXBvcnRhbnQ7IH0KCi5nLTUgPiBsaSwgLmctNSA+IGRpdiB7IHBhZGRpbmc6IDEuMzc1cmVtICFpbXBvcnRhbnQ7IH0KCi5neC01IHsgbWFyZ2luLWxlZnQ6IC0xLjM3NXJlbSAhaW1wb3J0YW50OyBtYXJnaW4tcmlnaHQ6IC0xLjM3NXJlbSAhaW1wb3J0YW50OyB9CgouZ3gtNSA+IGxpLCAuZ3gtNSA+IGRpdiB7IHBhZGRpbmctbGVmdDogMS4zNzVyZW0gIWltcG9ydGFudDsgcGFkZGluZy1yaWdodDogMS4zNzVyZW0gIWltcG9ydGFudDsgfQoKLmd5LTUgeyBtYXJnaW4tdG9wOiAtMS4zNzVyZW0gIWltcG9ydGFudDsgbWFyZ2luLWJvdHRvbTogLTEuMzc1cmVtICFpbXBvcnRhbnQ7IH0KCi5neS01ID4gbGksIC5neS01ID4gZGl2IHsgcGFkZGluZy10b3A6IDEuMzc1cmVtICFpbXBvcnRhbnQ7IHBhZGRpbmctYm90dG9tOiAxLjM3NXJlbSAhaW1wb3J0YW50OyB9CgouZy1ncyB7IG1hcmdpbjogLTE0cHggIWltcG9ydGFudDsgfQoKLmctZ3MgPiBsaSwgLmctZ3MgPiBkaXYgeyBwYWRkaW5nOiAxNHB4ICFpbXBvcnRhbnQ7IH0KCi5neC1ncyB7IG1hcmdpbi1sZWZ0OiAtMTRweCAhaW1wb3J0YW50OyBtYXJnaW4tcmlnaHQ6IC0xNHB4ICFpbXBvcnRhbnQ7IH0KCi5neC1ncyA+IGxpLCAuZ3gtZ3MgPiBkaXYgeyBwYWRkaW5nLWxlZnQ6IDE0cHggIWltcG9ydGFudDsgcGFkZGluZy1yaWdodDogMTRweCAhaW1wb3J0YW50OyB9CgouZ3ktZ3MgeyBtYXJnaW4tdG9wOiAtMTRweCAhaW1wb3J0YW50OyBtYXJnaW4tYm90dG9tOiAtMTRweCAhaW1wb3J0YW50OyB9CgouZ3ktZ3MgPiBsaSwgLmd5LWdzID4gZGl2IHsgcGFkZGluZy10b3A6IDE0cHggIWltcG9ydGFudDsgcGFkZGluZy1ib3R0b206IDE0cHggIWltcG9ydGFudDsgfQoKLmdhcCB7IHdpZHRoOiAxMDAlOyBkaXNwbGF5OiBibG9jazsgaGVpZ2h0OiAyOHB4OyB9CgouZ2FwLTAgeyBoZWlnaHQ6IDA7IH0KCi5nYXAtMSB7IGhlaWdodDogMC4zNzVyZW07IH0KCi5nYXAtMiB7IGhlaWdodDogMC43NXJlbTsgfQoKLmdhcC0zIHsgaGVpZ2h0OiAxcmVtOyB9CgouZ2FwLTQgeyBoZWlnaHQ6IDEuNXJlbTsgfQoKLmdhcC01IHsgaGVpZ2h0OiAyLjc1cmVtOyB9CgouZ2FwLWdzIHsgaGVpZ2h0OiAyOHB4OyB9CgouZ2FwLXNtIHsgaGVpZ2h0OiAwLjc1cmVtOyB9CgouZ2FwLW1kIHsgaGVpZ2h0OiAxLjI1cmVtOyB9CgouZ2FwLWxnIHsgaGVpZ2h0OiAycmVtOyB9CgouZ2FwLXhsIHsgaGVpZ2h0OiAyLjVyZW07IH0KCi5nYXAtMTBweCB7IGhlaWdodDogMTBweDsgfQoKLmdhcC0yMHB4IHsgaGVpZ2h0OiAyMHB4OyB9CgouZ2FwLTMwcHggeyBoZWlnaHQ6IDMwcHg7IH0KCi5nYXAtNDBweCB7IGhlaWdodDogNDBweDsgfQoKLmdhcC01MHB4IHsgaGVpZ2h0OiA1MHB4OyB9CgouZ2FwLTYwcHggeyBoZWlnaHQ6IDYwcHg7IH0KCi5nYXAtNzBweCB7IGhlaWdodDogNzBweDsgfQoKLmdhcC04MHB4IHsgaGVpZ2h0OiA4MHB4OyB9CgouZ2FwLTkwcHggeyBoZWlnaHQ6IDkwcHg7IH0KCi5nYXAtMTAwcHggeyBoZWlnaHQ6IDEwMHB4OyB9CgoubGktY29sMnggPiBsaSB7IHdpZHRoOiA1MCU7IGZsb2F0OiBsZWZ0OyB9CgoubGktY29sM3ggPiBsaSB7IHdpZHRoOiAzMy4zMzMzMyU7IGZsb2F0OiBsZWZ0OyB9CgoubGktY29sNHggPiBsaSB7IHdpZHRoOiAyNSU7IGZsb2F0OiBsZWZ0OyB9CgovKiogMDUuIENPTVBPTkVOVFMgKi8KLmFsZXJ0LWN0YSB7IGRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgYWxpZ24taXRlbXM6IGNlbnRlcjsgfQoKLmFsZXJ0LWFjdGlvbnMgeyBkaXNwbGF5OiBpbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgfQoKLmFsZXJ0LWFjdGlvbnMgYSArIGEgeyBtYXJnaW4tbGVmdDogMXJlbTsgfQoKLmFjY29yZGlvbiB7IGJvcmRlci1yYWRpdXM6IDRweDsgYm9yZGVyOiAxcHggc29saWQgI2RiZGZlYTsgYmFja2dyb3VuZDogI2ZmZjsgfQoKLmFjY29yZGlvbi1oZWFkaW5nIHsgcGFkZGluZy1ib3R0b206IDEuNXJlbTsgfQoKLmFjY29yZGlvbi1ib2R5IHsgYm9yZGVyLXJhZGl1czogNHB4OyB9CgouYWNjb3JkaW9uLWl0ZW06bm90KDpsYXN0LWNoaWxkKSAuYWNjb3JkaW9uLWhlYWQgeyBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RiZGZlYTsgfQoKLmFjY29yZGlvbi1pdGVtOm5vdCg6bGFzdC1jaGlsZCkgLmFjY29yZGlvbi1pbm5lciB7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGJkZmVhOyB9CgouYWNjb3JkaW9uLWl0ZW06bGFzdC1jaGlsZCAuYWNjb3JkaW9uLWlubmVyIHsgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkYmRmZWE7IH0KCi5hY2NvcmRpb24taGVhZCB7IHBhZGRpbmc6IDFyZW0gMi4yNXJlbSAxcmVtIDEuMjVyZW07IGRpc3BsYXk6IGJsb2NrOyBwb3NpdGlvbjogcmVsYXRpdmU7IH0KCi5hY2NvcmRpb24taGVhZCAudGl0bGUgeyBtYXJnaW4tYm90dG9tOiAwOyBmb250LXNpemU6IDFyZW07IGNvbG9yOiAjMzY0YTYzOyBsaW5lLWhlaWdodDogMS4zOyB9CgouYWNjb3JkaW9uLWhlYWQuY29sbGFwc2VkIC50aXRsZSB7IGNvbG9yOiAjNTI2NDg0OyB9CgouYWNjb3JkaW9uLWlubmVyIHsgcGFkZGluZzogMXJlbSAxLjI1cmVtIDEuMjVyZW07IH0KCi5hY2NvcmRpb24taWNvbiB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgcmlnaHQ6IDFyZW07IHRvcDogNTAlOyBmb250LXNpemU6IDFyZW07IGNvbG9yOiAjMzY0YTYzOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7IHRyYW5zaXRpb246IHJvdGF0ZSAwLjRzOyB3aWR0aDogMjBweDsgaGVpZ2h0OiAyMHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IGxpbmUtaGVpZ2h0OiAyMHB4OyB9CgouYWNjb3JkaW9uLWljb246YmVmb3JlIHsgY29udGVudDogIu6nmiI7IGZvbnQtZmFtaWx5OiAiTmlvaWNvbiI7IHRyYW5zaXRpb246IDAuNHM7IH0KCi5hY2NvcmRpb24taGVhZC5jb2xsYXBzZWQgLmFjY29yZGlvbi1pY29uOmJlZm9yZSB7IGNvbnRlbnQ6ICLup4UiOyB9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsgLmFjY29yZGlvbi1oZWFkIHsgcGFkZGluZzogMXJlbSAxLjVyZW07IH0KICAuYWNjb3JkaW9uLWlubmVyIHsgcGFkZGluZzogMXJlbSAxLjVyZW0gMS4yNXJlbTsgfQogIC5hY2NvcmRpb24taWNvbiB7IHJpZ2h0OiAxLjVyZW07IH0gfQoKLmFjY29yZGlvbi1zMiB7IGJvcmRlcjogbm9uZTsgfQoKLmFjY29yZGlvbi1zMiAuYWNjb3JkaW9uLWljb24geyByaWdodDogMDsgfQoKLmFjY29yZGlvbi1zMiAuYWNjb3JkaW9uLWljb246YmVmb3JlIHsgY29udGVudDogIu6ruiI7IH0KCi5hY2NvcmRpb24tczIgLmFjY29yZGlvbi1oZWFkIHsgcGFkZGluZzogMC41cmVtIDIuMjVyZW0gMC41cmVtIDA7IGJvcmRlcjogbm9uZSAhaW1wb3J0YW50OyB9CgouYWNjb3JkaW9uLXMyIC5hY2NvcmRpb24taGVhZCAudGl0bGUgeyBmb250LXNpemU6IDEuMXJlbTsgY29sb3I6ICMwOTcxZmU7IH0KCi5hY2NvcmRpb24tczIgLmFjY29yZGlvbi1oZWFkLmNvbGxhcHNlZCAudGl0bGUgeyBjb2xvcjogIzUyNjQ4NDsgfQoKLmFjY29yZGlvbi1zMiAuYWNjb3JkaW9uLWhlYWQuY29sbGFwc2VkIC5hY2NvcmRpb24taWNvbjpiZWZvcmUgeyBjb250ZW50OiAi7q2EIjsgfQoKLmFjY29yZGlvbi1zMiAuYWNjb3JkaW9uLWlubmVyIHsgcGFkZGluZzogMC41cmVtIDAgMC42MjVyZW07IGJvcmRlcjogbm9uZSAhaW1wb3J0YW50OyB9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsgLmFjY29yZGlvbi1zMiAuYWNjb3JkaW9uLWhlYWQgeyBwYWRkaW5nOiAwLjVyZW0gMi4yNXJlbSAwLjVyZW0gMDsgfQogIC5hY2NvcmRpb24tczIgLmFjY29yZGlvbi1pbm5lciB7IHBhZGRpbmc6IDAuNXJlbSAwIDAuNjI1cmVtOyB9IH0KCi5hY2NvcmRpb24tczMgeyBib3JkZXI6IG5vbmU7IH0KCi5hY2NvcmRpb24tczMgLmFjY29yZGlvbi1pY29uIHsgbGVmdDogMDsgcmlnaHQ6IGF1dG87IH0KCi5hY2NvcmRpb24tczMgLmFjY29yZGlvbi1pY29uOmJlZm9yZSB7IGNvbnRlbnQ6ICLuq7oiOyB9CgouYWNjb3JkaW9uLXMzIC5hY2NvcmRpb24taGVhZCB7IHBhZGRpbmc6IDAuNXJlbSAwIDAuNXJlbSAyLjI1cmVtOyBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsgfQoKLmFjY29yZGlvbi1zMyAuYWNjb3JkaW9uLWhlYWQgLnRpdGxlIHsgZm9udC1zaXplOiAxLjFyZW07IGNvbG9yOiAjMDk3MWZlOyB9CgouYWNjb3JkaW9uLXMzIC5hY2NvcmRpb24taGVhZC5jb2xsYXBzZWQgLnRpdGxlIHsgY29sb3I6ICM1MjY0ODQ7IH0KCi5hY2NvcmRpb24tczMgLmFjY29yZGlvbi1oZWFkLmNvbGxhcHNlZCAuYWNjb3JkaW9uLWljb246YmVmb3JlIHsgY29udGVudDogIu6thCI7IH0KCi5hY2NvcmRpb24tczMgLmFjY29yZGlvbi1pbm5lciB7IHBhZGRpbmc6IDAuNXJlbSAwIDAuNjI1cmVtOyBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsgfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7IC5hY2NvcmRpb24tczMgLmFjY29yZGlvbi1oZWFkIHsgcGFkZGluZzogMC41cmVtIDAgMC41cmVtIDIuMjVyZW07IH0KICAuYWNjb3JkaW9uLXMzIC5hY2NvcmRpb24taW5uZXIgeyBwYWRkaW5nOiAwLjVyZW0gMi4yNXJlbSAwLjYyNXJlbTsgfSB9CgouZG90IHsgcG9zaXRpb246IHJlbGF0aXZlOyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGJvcmRlci1yYWRpdXM6IDUwJTsgaGVpZ2h0OiA4cHg7IHdpZHRoOiA4cHg7IH0KCi5kb3QtbGFiZWw6YWZ0ZXIgeyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDA7IHRvcDogMDsgcmlnaHQ6IDA7IGJvdHRvbTogMDsgYm9yZGVyLXJhZGl1czogNTAlOyBiYWNrZ3JvdW5kOiAjZmZmOyBjb250ZW50OiAnJzsgdHJhbnNmb3JtOiBzY2FsZSgwLjY1KTsgfQoKLmRvdC5zcSB7IGJvcmRlci1yYWRpdXM6IDNweDsgfQoKLmRvdC5zcTphZnRlciB7IGJvcmRlci1yYWRpdXM6IDNweDsgfQoKLmRvdC14cyB7IGhlaWdodDogNHB4OyB3aWR0aDogNHB4OyB9CgouZG90LXNtIHsgaGVpZ2h0OiA2cHg7IHdpZHRoOiA2cHg7IH0KCi5kb3QtbWQgeyBoZWlnaHQ6IDhweDsgd2lkdGg6IDhweDsgfQoKLmRvdC1yZyB7IGhlaWdodDogMTBweDsgd2lkdGg6IDEwcHg7IH0KCi5kb3QtbGcgeyBoZWlnaHQ6IDEycHg7IHdpZHRoOiAxMnB4OyB9CgouZG90LXhsIHsgaGVpZ2h0OiAxNnB4OyB3aWR0aDogMTZweDsgfQoKLmRvdC1wcmltYXJ5IHsgYmFja2dyb3VuZDogIzA5NzFmZTsgfQoKLmRvdC1zZWNvbmRhcnkgeyBiYWNrZ3JvdW5kOiAjMzY0YTYzOyB9CgouZG90LXN1Y2Nlc3MgeyBiYWNrZ3JvdW5kOiAjMWVlMGFjOyB9CgouZG90LWluZm8geyBiYWNrZ3JvdW5kOiAjMDljMmRlOyB9CgouZG90LXdhcm5pbmcgeyBiYWNrZ3JvdW5kOiAjZjRiZDBlOyB9CgouZG90LWRhbmdlciB7IGJhY2tncm91bmQ6ICNlODUzNDc7IH0KCi5kb3QtZGFyayB7IGJhY2tncm91bmQ6ICMxYzJiNDY7IH0KCi5kb3QtZ3JheSB7IGJhY2tncm91bmQ6ICM4MDkxYTc7IH0KCi5kb3QtbGlnaHQgeyBiYWNrZ3JvdW5kOiAjZTVlOWYyOyB9CgouZG90LWxpZ2h0ZXIgeyBiYWNrZ3JvdW5kOiAjZjVmNmZhOyB9CgoubGlzdDpub3QoOmxhc3QtY2hpbGQpIHsgbWFyZ2luLWJvdHRvbTogMXJlbTsgfQoKLmxpc3QgbGkgeyBwb3NpdGlvbjogcmVsYXRpdmU7IHBhZGRpbmctbGVmdDogMS41cmVtOyBsaW5lLWhlaWdodDogMS41cmVtOyB9CgoubGlzdCBsaTpub3QoOmxhc3QtY2hpbGQpIHsgcGFkZGluZy1ib3R0b206IC41cmVtOyB9CgoubGlzdCBsaTpiZWZvcmUgeyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDA7IGZvbnQtc2l6ZTogMTRweDsgbGluZS1oZWlnaHQ6IDEuNXJlbTsgZm9udC1mYW1pbHk6ICJOaW9pY29uIjsgY29udGVudDogIu6mgCI7IH0KCi5saXN0IGxpIHNwYW4geyBjb2xvcjogIzgwOTRhZTsgfQoKLmxpc3QgbGkgdWwgeyBtYXJnaW4tdG9wOiAuNXJlbTsgfQoKLmxpc3QtY2hlY2tlZCBsaTpiZWZvcmUgeyBjb2xvcjogIzA5NzFmZTsgY29udGVudDogIu6muSI7IH0KCi5saXN0LWNoZWNrZWQtY2lyY2xlIGxpOmJlZm9yZSB7IGNvbG9yOiAjMDk3MWZlOyBjb250ZW50OiAi7qa3IjsgfQoKLmxpc3QtY3Jvc3MgbGk6YmVmb3JlIHsgY29sb3I6IHJnYmEoMjMyLCA4MywgNzEsIDAuOCk7IGNvbnRlbnQ6ICLuqIIiOyB9CgoubGlzdC1zdGF0dXMgeyBsaXN0LXN0eWxlOiBub25lOyBsaW5lLWhlaWdodDogMS4zOyB9CgoubGlzdC1zdGF0dXMgbGkgeyBkaXNwbGF5OiBpbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgcGFkZGluZy1yaWdodDogMXJlbTsgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfQoKLmxpc3Qtc3RhdHVzIC5pY29uIHsgbWFyZ2luLXJpZ2h0OiAuMzc1cmVtOyBsaW5lLWhlaWdodDogMS4zOyB9CgoubGlzdC1sZyBsaSB7IHBhZGRpbmctbGVmdDogMnJlbTsgfQoKLmxpc3QtbGcgbGk6bm90KDpsYXN0LWNoaWxkKSB7IHBhZGRpbmctYm90dG9tOiAuNzVyZW07IH0KCi5saXN0LWxnIGxpOmJlZm9yZSB7IGZvbnQtc2l6ZTogMS4zNXJlbTsgfQoKLmxpc3Qtc20gbGkgeyBwYWRkaW5nLWxlZnQ6IDEuMnJlbTsgfQoKLmxpc3Qtc20gbGk6bm90KDpsYXN0LWNoaWxkKSB7IHBhZGRpbmctYm90dG9tOiAuMzVyZW07IH0KCi5saXN0LXNtIGxpOmJlZm9yZSB7IGZvbnQtc2l6ZTogMTJweDsgfQoKLmxpc3Qtc3RlcCBsaSB7IGNvbG9yOiAjODA5NGFlOyBmb250LXdlaWdodDogNTAwOyB9CgoubGlzdC1zdGVwIGxpOmJlZm9yZSB7IGNvbnRlbnQ6ICLup6AiOyB9CgoubGlzdC1zdGVwIGxpLmxpc3Qtc3RlcC1jdXJyZW50IHsgY29sb3I6ICMzNjRhNjM7IH0KCi5saXN0LXN0ZXAgbGkubGlzdC1zdGVwLWN1cnJlbnQ6YmVmb3JlIHsgY29udGVudDogIu6omyI7IGNvbG9yOiAjMDk3MWZlOyB9CgoubGlzdC1zdGVwIGxpLmxpc3Qtc3RlcC1kb25lIHsgY29sb3I6ICM1MjY0ODQ7IH0KCi5saXN0LXN0ZXAgbGkubGlzdC1zdGVwLWRvbmU6YmVmb3JlIHsgY29udGVudDogIu6mtiI7IGNvbG9yOiAjMWVlMGFjOyB9CgoubGlzdC1wbGFpbiBhIHsgY29sb3I6ICM1MjY0ODQ7IGRpc3BsYXk6IGJsb2NrOyBsaW5lLWhlaWdodDogMS4zOyBwYWRkaW5nOiAwLjVyZW0gMDsgfQoKLmxpc3QtcGxhaW4gYTpob3ZlciB7IGNvbG9yOiAjMDk3MWZlOyB9CgoubGlzdC1jYXRlZ29yeSBhIHsgZm9udC13ZWlnaHQ6IDUwMDsgfQoKLmxpc3QtZG93bmxvYWQgbGkgPiBhIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBwYWRkaW5nOiAuMjVyZW07IH0KCi5saXN0LWRvd25sb2FkIGxpID4gYSA+IC5pY29uIHsgbWFyZ2luOiAwIC4yNXJlbTsgZm9udC1zaXplOiAxLjI1cmVtOyB9CgoubGlzdC1wcmltYXJ5IGxpOmJlZm9yZSB7IGNvbG9yOiAjMDk3MWZlOyB9CgoubGlzdC1zZWNvbmRhcnkgbGk6YmVmb3JlIHsgY29sb3I6ICMzNjRhNjM7IH0KCi5saXN0LXN1Y2Nlc3MgbGk6YmVmb3JlIHsgY29sb3I6ICMxZWUwYWM7IH0KCi5saXN0LWluZm8gbGk6YmVmb3JlIHsgY29sb3I6ICMwOWMyZGU7IH0KCi5saXN0LXdhcm5pbmcgbGk6YmVmb3JlIHsgY29sb3I6ICNmNGJkMGU7IH0KCi5saXN0LWRhbmdlciBsaTpiZWZvcmUgeyBjb2xvcjogI2U4NTM0NzsgfQoKLmxpc3QtZGFyayBsaTpiZWZvcmUgeyBjb2xvcjogIzFjMmI0NjsgfQoKLmxpc3QtZ3JheSBsaTpiZWZvcmUgeyBjb2xvcjogIzgwOTFhNzsgfQoKLmxpc3QtbGlnaHQgbGk6YmVmb3JlIHsgY29sb3I6ICNlNWU5ZjI7IH0KCi5saXN0LWxpZ2h0ZXIgbGk6YmVmb3JlIHsgY29sb3I6ICNmNWY2ZmE7IH0KCi5saW5rLWJkci10LCAubGluay1jaGVjayArIC5saW5rLWNoZWNrLCAubGluay10aWR5IGxpICsgbGksIC5saW5rLWxpc3QgKyAubGluay1saXN0LCAubGluay1saXN0LW9wdCBsaSArIGxpLCAubGluay1saXN0LXBsYWluIGxpICsgbGkgeyBib3JkZXItdG9wOiAxcHggc29saWQgI2U1ZTlmMjsgfQoKLmxpbmstYmRyLWIgeyBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2U1ZTlmMjsgfQoKLmxpbmstcGQtc20sIC5saW5rLXRpZHkuc20gbGksIC5saW5rLWxpc3QtcGxhaW4uc20gYSB7IHBhZGRpbmc6IDZweCAxcmVtOyB9CgoubGluay1hY3QtY2hlY2s6YWZ0ZXIsIC5saW5rLWNoZWNrIGxpLmFjdGl2ZSA+IGE6YWZ0ZXIsIC5saW5rLWNoZWNrIGxpIGEuYWN0aXZlOmFmdGVyLCAubGluay1saXN0LW9wdCBsaS5hY3RpdmUgPiBhOmFmdGVyLCAubGluay1saXN0LW9wdCBhLmFjdGl2ZTphZnRlciB7IGNvbnRlbnQ6ICLupr0iOyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogNTAlOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7IHJpZ2h0OiAxcmVtOyBmb250LWZhbWlseTogIk5pb2ljb24iOyB9CgoubGluay1jaGVjayB7IHBhZGRpbmc6IC41cmVtIDA7IH0KCi5saW5rLWNoZWNrIC5kaXZpZGVyIHsgbWFyZ2luOiAuNXJlbSAwOyB9CgoubGluay1jaGVjayBsaSB7IGRpc3BsYXk6IGJsb2NrOyB9CgoubGluay1jaGVjayBsaSA+IHNwYW4sIC5saW5rLWNoZWNrIGxpIGEgeyBkaXNwbGF5OiBibG9jazsgbGluZS1oZWlnaHQ6IDEuMjVyZW07IHBhZGRpbmc6IC4zNXJlbSAxcmVtOyB9CgoubGluay1jaGVjayBsaSA+IHNwYW4geyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyBjb2xvcjogIzM2NGE2MzsgZm9udC13ZWlnaHQ6IDcwMDsgZm9udC1zaXplOiAxMnB4OyBsZXR0ZXItc3BhY2luZzogMXB4OyB9CgoubGluay1jaGVjayBsaSBhIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgY29sb3I6ICM1MjY0ODQ7IGZvbnQtc2l6ZTogMTNweDsgcG9zaXRpb246IHJlbGF0aXZlOyB9CgoubGluay1jaGVjayBsaSBhOmhvdmVyIHsgY29sb3I6ICMwOTcxZmU7IGJhY2tncm91bmQ6ICNmNWY2ZmE7IH0KCi5saW5rLWNoZWNrIGxpIC5pY29uIHsgd2lkdGg6IDEuNzVyZW07IGZvbnQtc2l6ZTogMS4xMjVyZW07IH0KCi5saW5rLXRpZHkubm8tYmRyIHsgcGFkZGluZzogLjVyZW0gMDsgfQoKLmxpbmstdGlkeS5uby1iZHIgbGk6bm90KC5kaXZpZGVyKSB7IGJvcmRlci10b3Atd2lkdGg6IDA7IH0KCi5saW5rLXRpZHkgLmRpdmlkZXIgeyBtYXJnaW46IC41cmVtIDA7IH0KCi5saW5rLXRpZHkgbGkgeyBwb3NpdGlvbjogcmVsYXRpdmU7IHBhZGRpbmc6IC42MjVyZW0gMS4xcmVtOyBsaW5lLWhlaWdodDogMS4zcmVtOyB9CgoubGluay1saXN0IHsgcGFkZGluZzogLjc1cmVtIDA7IH0KCi5saW5rLWxpc3QgLmRpdmlkZXIgeyBtYXJnaW46IC41cmVtIDA7IH0KCi5saW5rLWxpc3QgYSB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGNvbG9yOiAjNTI2NDg0OyBmb250LXNpemU6IDEzcHg7IGxpbmUtaGVpZ2h0OiAxLjRyZW07IGZvbnQtd2VpZ2h0OiA1MDA7IHBhZGRpbmc6IC41NzVyZW0gMDsgcG9zaXRpb246IHJlbGF0aXZlOyB9CgoubGluay1saXN0IGE6aG92ZXIgeyBjb2xvcjogIzA5NzFmZTsgfQoKLmxpbmstbGlzdCBhIC5pY29uIHsgZm9udC1zaXplOiAxLjEyNXJlbTsgd2lkdGg6IDEuNXJlbTsgbGluZS1oZWlnaHQ6IDE7IH0KCi5saW5rLWxpc3Qtb3B0Lm5vLWJkciB7IHBhZGRpbmc6IC41cmVtIDA7IH0KCi5saW5rLWxpc3Qtb3B0Lm5vLWJkciBsaTpub3QoLmRpdmlkZXIpIHsgYm9yZGVyLXRvcC13aWR0aDogMDsgfQoKLmxpbmstbGlzdC1vcHQgLmRpdmlkZXIgeyBtYXJnaW46IC41cmVtIDA7IH0KCi5saW5rLWxpc3Qtb3B0IGEgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBwYWRkaW5nOiAuNjI1cmVtIDEuMjVyZW07IGZvbnQtc2l6ZTogMTJweDsgZm9udC13ZWlnaHQ6IDUwMDsgY29sb3I6ICM1MjY0ODQ7IHRyYW5zaXRpb246IGFsbCAuNHM7IGxpbmUtaGVpZ2h0OiAxLjNyZW07IHBvc2l0aW9uOiByZWxhdGl2ZTsgfQoKLmxpbmstbGlzdC1vcHQgYTpob3ZlciB7IGNvbG9yOiAjMDk3MWZlOyBiYWNrZ3JvdW5kOiAjZjVmNmZhOyB9CgoubGluay1saXN0LW9wdCBhIC5pY29uIHsgZm9udC1zaXplOiAxLjEyNXJlbTsgd2lkdGg6IDEuNzVyZW07IG9wYWNpdHk6IC44OyB9CgoubGluay1saXN0LW9wdCBsaS5kaXNhYmxlZCA+IGEsIC5saW5rLWxpc3Qtb3B0IGEuZGlzYWJsZWQgeyBwb2ludGVyLWV2ZW50czogbm9uZTsgY29sb3I6ICM4MDk0YWU7IG9wYWNpdHk6IDAuNzsgfQoKLmxpbmstbGlzdC1vcHQgLm9wdC1oZWFkIHsgcGFkZGluZzogLjI1cmVtIDEuMjVyZW07IGNvbG9yOiAjODA5NGFlOyB9CgoubGluay1saXN0LW9wdC51aS12MiBhIHsgZm9udC13ZWlnaHQ6IDQwMDsgfQoKLmxpbmstbGlzdC1vcHQubm8tYmRyICsgLmxpbmstY2hlY2sgeyBtYXJnaW4tdG9wOiAtMC43NXJlbTsgfQoKLmxpbmstbGlzdC1vcHQudWktY29sb3JlZCBsaS5hY3RpdmUgPiBhLCAubGluay1saXN0LW9wdC51aS1jb2xvcmVkIGEuYWN0aXZlIHsgY29sb3I6ICMwOTcxZmU7IH0KCi5saW5rLWxpc3QtbWVudSB7IHBhZGRpbmc6IC43NXJlbSAwOyB9CgoubGluay1saXN0LW1lbnUgLmRpdmlkZXIgeyBtYXJnaW46IC41cmVtIDA7IH0KCi5saW5rLWxpc3QtbWVudSBhIHsgcG9zaXRpb246IHJlbGF0aXZlOyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBwYWRkaW5nOiAuNzVyZW0gMS4yNXJlbTsgZm9udC13ZWlnaHQ6IDUwMDsgY29sb3I6ICM1MjY0ODQ7IHRyYW5zaXRpb246IGFsbCAuNHM7IGxpbmUtaGVpZ2h0OiAxLjNyZW07IH0KCi5saW5rLWxpc3QtbWVudSBhOmFmdGVyIHsgcG9zaXRpb246IGFic29sdXRlOyBmb250LXNpemU6IDFyZW07IGZvbnQtZmFtaWx5OiAiTmlvaWNvbiI7IGNvbnRlbnQ6ICLup5MiOyByaWdodDogMS4yNXJlbTsgY29sb3I6ICM4MDk0YWU7IHRyYW5zaXRpb246IC4zcyBlYXNlOyB9CgoubGluay1saXN0LW1lbnUgYSAuaWNvbiB7IGZvbnQtc2l6ZTogMS4xMjVyZW07IHdpZHRoOiAxLjc1cmVtOyBvcGFjaXR5OiAuODsgY29sb3I6ICM4MDk0YWU7IG1hcmdpbi10b3A6IC0ycHg7IH0KCi5saW5rLWxpc3QtbWVudSBsaS5hY3RpdmUgPiBhLCAubGluay1saXN0LW1lbnUgYS5hY3RpdmUsIC5saW5rLWxpc3QtbWVudSBhOmhvdmVyLCAubGluay1saXN0LW1lbnUgbGkuYWN0aXZlID4gYSAuaWNvbiwgLmxpbmstbGlzdC1tZW51IGEuYWN0aXZlIC5pY29uLCAubGluay1saXN0LW1lbnUgYTpob3ZlciAuaWNvbiwgLmxpbmstbGlzdC1tZW51IGxpLmFjdGl2ZSA+IGE6YWZ0ZXIsIC5saW5rLWxpc3QtbWVudSBhLmFjdGl2ZTphZnRlciwgLmxpbmstbGlzdC1tZW51IGE6aG92ZXI6YWZ0ZXIgeyBjb2xvcjogIzA5NzFmZTsgfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7IC5saW5rLWxpc3QtbWVudSBhIHsgcGFkZGluZzogMXJlbSAxLjVyZW07IH0gfQoKLmxpbmstbGlzdC1wbGFpbi5uby1iZHIgeyBwYWRkaW5nOiAuNXJlbSAwOyB9CgoubGluay1saXN0LXBsYWluLm5vLWJkciBsaSB7IGJvcmRlci10b3Atd2lkdGg6IDA7IH0KCi5saW5rLWxpc3QtcGxhaW4gLmRpdmlkZXIgeyBtYXJnaW46IC41cmVtIDA7IH0KCi5saW5rLWxpc3QtcGxhaW4gYSB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IHBhZGRpbmc6IC41cmVtIDEuMjVyZW07IGNvbG9yOiAjNTI2NDg0OyB0cmFuc2l0aW9uOiBhbGwgLjRzOyBsaW5lLWhlaWdodDogMS40cmVtOyBwb3NpdGlvbjogcmVsYXRpdmU7IH0KCi5saW5rLWxpc3QtcGxhaW4gYTpob3ZlciB7IGNvbG9yOiAjMDk3MWZlOyBiYWNrZ3JvdW5kOiAjZjVmNmZhOyB9CgoubGluay1saXN0LXBsYWluIGEgLmljb24geyBmb250LXNpemU6IDEuMTI1cmVtOyB3aWR0aDogMS43NXJlbTsgb3BhY2l0eTogLjg7IGNvbG9yOiAjMDk3MWZlOyB9CgoubGluay1saXN0LXBsYWluIGxpLmFjdGl2ZSA+IGEsIC5saW5rLWxpc3QtcGxhaW4gYS5hY3RpdmUgeyBjb2xvcjogIzA5NzFmZTsgYmFja2dyb3VuZDogI2Y1ZjZmYTsgfQoKLmxpbmstbGlzdC1wbGFpbi50ZXh0LWNlbnRlciBhIHsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IHBhZGRpbmctbGVmdDogMC4yNXJlbTsgcGFkZGluZy1yaWdodDogMC4yNXJlbTsgfQoKLmxpbmstbGlzdC1wbGFpbi5saS1jb2wyeCA+IGxpIHsgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2U1ZTlmMjsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlNWU5ZjI7IGJvcmRlci10b3A6IDA7IH0KCi5saW5rLWxpc3QtcGxhaW4ubGktY29sMnggPiBsaTpudGgtY2hpbGQoMm4pIHsgYm9yZGVyLXJpZ2h0OiBub25lOyB9CgoubGluay1saXN0LXBsYWluLmxpLWNvbDN4ID4gbGkgeyBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZTVlOWYyOyBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2U1ZTlmMjsgYm9yZGVyLXRvcDogMDsgfQoKLmxpbmstbGlzdC1wbGFpbi5saS1jb2wzeCA+IGxpOm50aC1jaGlsZCgzbikgeyBib3JkZXItcmlnaHQ6IG5vbmU7IH0KCi5saW5rLWxpc3QtcGxhaW4ubGktY29sNHggPiBsaSB7IGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNlNWU5ZjI7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTVlOWYyOyBib3JkZXItdG9wOiAwOyB9CgoubGluay1saXN0LXBsYWluLmxpLWNvbDR4ID4gbGk6bnRoLWNoaWxkKDRuKSB7IGJvcmRlci1yaWdodDogbm9uZTsgfQoKLmxpbmstbGlzdC10ZW1wbGF0ZSBhIHsgZm9udC13ZWlnaHQ6IDQwMDsgfQoKLnBhc3Njb2RlLWljb24geyBkaXNwbGF5OiBub25lOyB9CgoucGFzc2NvZGUtaWNvbi5pY29uLXNob3cgeyBkaXNwbGF5OiBibG9jazsgfQoKLmlzLXNob3duIC5wYXNzY29kZS1pY29uLmljb24tc2hvdyB7IGRpc3BsYXk6IG5vbmU7IH0KCi5pcy1oaWRkZW4gLnBhc3Njb2RlLWljb24uaWNvbi1zaG93IHsgZGlzcGxheTogYmxvY2s7IH0KCi5pcy1zaG93biAucGFzc2NvZGUtaWNvbi5pY29uLWhpZGUgeyBkaXNwbGF5OiBibG9jazsgfQoKLmlzLWhpZGRlbiAucGFzc2NvZGUtaWNvbi5pY29uLWhpZGUgeyBkaXNwbGF5OiBub25lOyB9CgouZm9ybS1kcm9wZG93biB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgcmlnaHQ6IDA7IHRvcDogMDsgYm90dG9tOiAwOyBwYWRkaW5nOiAwIDIwcHg7IGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgY29sb3I6ICM4MDk0YWU7IH0KCi5mb3JtLWRyb3Bkb3duID4gZGl2ID4gc3BhbiB7IG1hcmdpbjogMCAwLjVyZW07IH0KCi5mb3JtLWRyb3Bkb3duIC5kcm9wZG93biA+IGEgeyBkaXNwbGF5OiBpbmxpbmUtZmxleDsgfQoKLmZvcm0tY2xpcCwgLmZvcm0tdGV4dC1oaW50IHsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDFweDsgYm90dG9tOiAxcHg7IHJpZ2h0OiAxcHg7IHBhZGRpbmctbGVmdDogMXJlbTsgcGFkZGluZy1yaWdodDogLjc1cmVtOyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBjb2xvcjogIzA5NzFmZTsgYmFja2dyb3VuZDogI2ZmZjsgYm9yZGVyLXJhZGl1czogNHB4OyB9CgouZm9ybS1jbGlwIC5pY29uICsgc3BhbiwgLmZvcm0tY2xpcCBzcGFuICsgLmljb24sIC5mb3JtLXRleHQtaGludCAuaWNvbiArIHNwYW4sIC5mb3JtLXRleHQtaGludCBzcGFuICsgLmljb24geyBtYXJnaW4tbGVmdDogMC4yNXJlbTsgfQoKLm5rLXVwbG9hZC1pbnB1dCB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgei1pbmRleDogMjsgd2lkdGg6IDEwMCU7IGhlaWdodDogY2FsYygyLjEyNXJlbSArIDJweCk7IG1hcmdpbjogMDsgb3BhY2l0eTogMDsgfQoKLm5rLXVwbG9hZC1sYWJlbCB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IHBhZGRpbmc6IDEuNXJlbTsgd2lkdGg6IDEwMCU7IG1pbi1oZWlnaHQ6IDE1MHB4OyBib3JkZXItcmFkaXVzOiA0cHg7IGJvcmRlcjogMXB4IGRhc2hlZCAjZTVlOWYyOyBwYWRkaW5nLWJvdHRvbTogMDsgfQoKLm5rLXVwbG9hZC1pbml0IHsgZGlzcGxheTogYmxvY2s7IHRleHQtYWxpZ246IGNlbnRlcjsgfQoKLm5rLXVwbG9hZC1maWxlcyB7IHBhZGRpbmctdG9wOiAycmVtOyBkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgbWFyZ2luOiAtMC41cmVtOyBwYWRkaW5nLWJvdHRvbTogMnJlbTsgfQoKLm5rLXVwbG9hZC1maWxlcyBsaSB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgZGlzcGxheTogZmxleDsgZmxleC13cmFwOiB3cmFwOyBhbGlnbi1pdGVtczogY2VudGVyOyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyB0ZXh0LWFsaWduOiBjZW50ZXI7IHBhZGRpbmc6IDAuNXJlbTsgfQoKLm5rLXVwbG9hZC1maWxlcyBsaSBpbWcgeyB3aWR0aDogNjBweDsgZmxleC1zaHJpbms6IDA7IGJvcmRlci1yYWRpdXM6IDRweDsgfQoKLmlzLW11bHRpcGxlIC5uay11cGxvYWQtZmlsZXMgbGkgaW1nIHsgd2lkdGg6IDQwcHg7IH0KCi5pcy1tdWx0aXBsZSAubmstdXBsb2FkLWZpbGVzIGxpIC5uay11cGxvYWQtbmFtZSB7IGRpc3BsYXk6IG5vbmU7IH0KCi5uay11cGxvYWQtbmFtZSB7IG1hcmdpbjogLjVyZW0gMCAwOyBjb2xvcjogIzUyNjQ4NDsgZm9udC1zaXplOiAuODEyNXJlbTsgZm9udC13ZWlnaHQ6IDUwMDsgd2lkdGg6IDE1MHB4OyB3aGl0ZS1zcGFjZTogbm93cmFwOyBvdmVyZmxvdzogaGlkZGVuOyB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsgfQoKLm5rLXVwbG9hZC1yZXNwb25zZSB7IG1hcmdpbi1sZWZ0OiBhdXRvOyBkaXNwbGF5OiBpbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgfQoKLm5rLXVwbG9hZC1yZXNwb25zZSAubWVzc2FnZSB7IGZvbnQtc2l6ZTogMTJweDsgY29sb3I6ICM4MDk0YWU7IH0KCi5uay11cGxvYWQtcmVzcG9uc2UgLm1lc3NhZ2UgKyAuaWNvbiB7IG1hcmdpbi1sZWZ0OiAwLjVyZW07IH0KCi5uay11cGxvYWQtcmVzcG9uc2UgLmljb246YWZ0ZXIgeyBmb250LWZhbWlseTogIk5pb2ljb24iOyB9CgoubmstdXBsb2FkLXJlc3BvbnNlIC5pY29uICsgLm1lc3NhZ2UgeyBtYXJnaW4tbGVmdDogMC41cmVtOyB9CgoubmstdXBsb2FkLXJlc3BvbnNlLmludmFsaWQgLmljb24geyBjb2xvcjogI2Y0YmQwZTsgfQoKLm5rLXVwbG9hZC1yZXNwb25zZS5pbnZhbGlkIC5pY29uOmFmdGVyIHsgY29udGVudDogIu6kjyI7IH0KCi5uay11cGxvYWQtcmVzcG9uc2UudmFsaWQgLmljb24geyBjb2xvcjogIzFlZTBhYzsgfQoKLm5rLXVwbG9hZC1yZXNwb25zZS52YWxpZCAuaWNvbjphZnRlciB7IGNvbnRlbnQ6ICLuprciOyB9CgoubmstdXBsb2FkLXJlc3BvbnNlLmVycm9yIC5pY29uIHsgY29sb3I6ICNlODUzNDc7IH0KCi5uay11cGxvYWQtcmVzcG9uc2UuZXJyb3IgLmljb246YWZ0ZXIgeyBjb250ZW50OiAi7qiAIjsgfQoKLm5rLXVwbG9hZC1mb290IHsgZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyBib3JkZXItdG9wOiAxcHggZGFzaGVkICNlNWU5ZjI7IHBhZGRpbmc6IDFyZW0gMS4yNXJlbTsgbWFyZ2luOiAwIC0xLjVyZW07IH0KCi5uay11cGxvYWQtZm9vdCA+IHNwYW4sIC5uay11cGxvYWQtZm9vdCA+IGJ1dHRvbiB7IG1hcmdpbjogLjI1cmVtOyB9CgouZm9ybS1lZGl0b3ItY3VzdG9tIHRleHRhcmVhIHsgYm9yZGVyLXJhZGl1czogNHB4IDRweCAwIDA7IH0KCi5mb3JtLWVkaXRvci1hY3Rpb24geyBib3JkZXI6IDFweCBzb2xpZCAjZGJkZmVhOyBib3JkZXItdG9wOiAwOyBib3JkZXItcmFkaXVzOiAwIDAgNHB4IDRweDsgcGFkZGluZzogLjI1cmVtIC41cmVtOyB9CgouZm9ybS1lZGl0b3ItYWN0aW9uID4gLmxpbmsgeyBwYWRkaW5nOiAuNXJlbTsgfQoKLmZvcm0tZWRpdG9yLWFjdGlvbiA+IC5saW5rLmNvbGxhcHNlZCB7IGNvbG9yOiAjODA5NGFlOyB9CgouZm9ybS1lZGl0b3ItYWN0aW9uID4gLmxpbmsgLmljb24geyBtYXJnaW4tcmlnaHQ6IC4yNXJlbTsgfQoKLmZvcm0tZWRpdG9yLWJ0bi1ncm91cCwgLmZvcm0tYnRuLWdyb3VwIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgbWFyZ2luOiAtMC4yNXJlbTsgZmxleC13cmFwOiB3cmFwOyB9CgouZm9ybS1lZGl0b3ItYnRuLWdyb3VwIGxpLCAuZm9ybS1idG4tZ3JvdXAgbGkgeyBwYWRkaW5nOiAuMjVyZW07IGxpbmUtaGVpZ2h0OiAwLjVyZW07IH0KCi5mb3JtLWJ0bi1ncm91cCBsaTpmaXJzdC1jaGlsZCB7IG1hcmdpbi1yaWdodDogLjVyZW07IH0KCi5mb3JtLWJ0bi1zZWNvbmRhcnkgeyBtYXJnaW4tbGVmdDogYXV0bzsgfQoKLmlucHV0W3R5cGU9Im51bWJlciJdIHsgLXdlYmtpdC1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7IC1tb3otYXBwZWFyYW5jZTogdGV4dGZpZWxkOyBhcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7IH0KCmlucHV0W3R5cGU9bnVtYmVyXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiwgaW5wdXRbdHlwZT1udW1iZXJdOjotd2Via2l0LW91dGVyLXNwaW4tYnV0dG9uIHsgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOyB9CgoubnVtYmVyLXNwaW5uZXIgeyBwYWRkaW5nLWxlZnQ6IDMuMTI1cmVtOyBwYWRkaW5nLXJpZ2h0OiAzLjEyNXJlbTsgdGV4dC1hbGlnbjogY2VudGVyOyB9CgoubnVtYmVyLXNwaW5uZXI6Zm9jdXMgeyBib3JkZXItY29sb3I6ICNkYmRmZWE7IH0KCi5udW1iZXItc3Bpbm5lci1idG4geyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgfQoKLm51bWJlci1wbHVzIHsgcmlnaHQ6IDA7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7IH0KCi5udW1iZXItbWludXMgeyBsZWZ0OiAwOyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDsgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7IH0KCi5pbnB1dC1ncm91cC1hZGRvbiB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IHBhZGRpbmc6IC4yNXJlbSAuNzVyZW07IGJhY2tncm91bmQtY29sb3I6ICNmNWY2ZmE7IGJvcmRlcjogMXB4IHNvbGlkICNkYmRmZWE7IGZvbnQtc2l6ZTogMC43NXJlbTsgYm9yZGVyLXJhZGl1czogNHB4OyB9CgouaW5wdXQtZ3JvdXAtYWRkb246bm90KDpsYXN0LWNoaWxkKSB7IGJvcmRlci1yaWdodDogMDsgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7IGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwOyB9CgouaW5wdXQtZ3JvdXAtYWRkb246bm90KDpmaXJzdC1jaGlsZCkgeyBib3JkZXItbGVmdDogMDsgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDsgfQoKLnBhZ2UtdGl0bGUgeyBmb250LWZhbWlseTogTnVuaXRvLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEuNXJlbTsgZm9udC13ZWlnaHQ6IDcwMDsgfQoKQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7IC5wYWdlLXRpdGxlIHsgZm9udC1zaXplOiAxLjc1cmVtOyB9IH0KCi5vdmVybGluZS10aXRsZSB7IGZvbnQtc2l6ZTogMTFweDsgbGluZS1oZWlnaHQ6IDEuMjsgbGV0dGVyLXNwYWNpbmc6IDAuMmVtOyBjb2xvcjogIzgwOTRhZTsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgZm9udC13ZWlnaHQ6IDcwMDsgZm9udC1mYW1pbHk6IFJvYm90bywgc2Fucy1zZXJpZiwgIkhlbHZldGljYSBOZXVlIiwgQXJpYWwsICJOb3RvIFNhbnMiLCBzYW5zLXNlcmlmOyB9CgoudGV4dC1saWdodCAub3ZlcmxpbmUtdGl0bGUgeyBjb2xvcjogIzgwOTRhZTsgfQoKLmlzLWRhcmsgLm92ZXJsaW5lLXRpdGxlIHsgY29sb3I6ICNiN2MyZDA7IH0KCi5pcy10aGVtZSAub3ZlcmxpbmUtdGl0bGUgeyBjb2xvcjogI2E5Y2RmZjsgfQoKLm92ZXJsaW5lLXRpdGxlLWFsdCB7IGZvbnQtZmFtaWx5OiBSb2JvdG8sIHNhbnMtc2VyaWYsICJIZWx2ZXRpY2EgTmV1ZSIsIEFyaWFsLCAiTm90byBTYW5zIiwgc2Fucy1zZXJpZjsgZm9udC13ZWlnaHQ6IDcwMDsgbGluZS1oZWlnaHQ6IDEuMjsgbGV0dGVyLXNwYWNpbmc6IDAuMTVlbTsgZm9udC1zaXplOiAxMXB4OyBjb2xvcjogIzgwOTRhZTsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgfQoKLmlzLWRhcmsgLm92ZXJsaW5lLXRpdGxlLWFsdCB7IGNvbG9yOiAjODA5NGFlOyB9CgouaXMtdGhlbWUgLm92ZXJsaW5lLXRpdGxlLWFsdCB7IGNvbG9yOiAjYTljZGZmOyB9Cgoub3ZlcmxpbmUtdGl0bGUtc2FwIHsgcG9zaXRpb246IHJlbGF0aXZlOyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IG1hcmdpbi1ib3R0b206IDA7IHBhZGRpbmctbGVmdDogLjM1cmVtOyBwYWRkaW5nLXJpZ2h0OiAuMjVyZW07IGNvbG9yOiAjYjZjNmUzOyB9Cgoub3ZlcmxpbmUtdGl0bGUtc2FwOmJlZm9yZSwgLm92ZXJsaW5lLXRpdGxlLXNhcDphZnRlciB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiA1MCU7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsgd2lkdGg6IDIwcHg7IGhlaWdodDogMXB4OyBjb250ZW50OiAnJzsgYmFja2dyb3VuZDogI2I2YzZlMzsgfQoKLm92ZXJsaW5lLXRpdGxlLXNhcDpiZWZvcmUgeyByaWdodDogMTAwJTsgfQoKLm92ZXJsaW5lLXRpdGxlLXNhcDphZnRlciB7IGxlZnQ6IDEwMCU7IH0KCi5jYXB0aW9uLXRleHQgeyBmb250LXNpemU6IDE2cHg7IGZvbnQtd2VpZ2h0OiA0MDA7IGxpbmUtaGVpZ2h0OiAxLjM7IGxldHRlci1zcGFjaW5nOiAtMC4wMWVtOyB9CgouY2FwdGlvbi10ZXh0ICsgLnN1Yi10ZXh0LCAuY2FwdGlvbi10ZXh0ICsgLnN1Yi10ZXh0LXNtIHsgbWFyZ2luLXRvcDogMC41cmVtOyBkaXNwbGF5OiBibG9jazsgfQoKLmxlYWQtdGV4dCB7IGZvbnQtc2l6ZTogMC44NzVyZW07IGZvbnQtd2VpZ2h0OiA3MDA7IGNvbG9yOiAjMzY0YTYzOyBkaXNwbGF5OiBibG9jazsgfQoKLmxlYWQtdGV4dCArIC5zdWItdGV4dCB7IGZvbnQtc2l6ZTogMTJweDsgfQoKLmxlYWQtdGV4dCBzcGFuIHsgY29sb3I6ICM1MjY0ODQ7IGZvbnQtd2VpZ2h0OiA0MDA7IH0KCi5sZWFkLXRleHQtbGcgeyBmb250LXNpemU6IDEuMTI1cmVtOyBmb250LXdlaWdodDogNTAwOyBjb2xvcjogIzM2NGE2MzsgZGlzcGxheTogYmxvY2s7IH0KCi5pcy10aGVtZSAubGVhZC10ZXh0LWxnIHsgY29sb3I6ICNmZmY7IH0KCi5pcy10aGVtZSAuaXMtbGlnaHQgLmxlYWQtdGV4dC1sZyB7IGNvbG9yOiAjMzY0YTYzOyB9CgouaXMtZGFyayAubGVhZC10ZXh0IHsgY29sb3I6ICNiN2MyZDA7IH0KCi5pcy1kYXJrIC5sZWFkLXRleHQgc3BhbiB7IGNvbG9yOiAjODA5MWE3OyB9CgouaXMtdGhlbWUgLmxlYWQtdGV4dCB7IGNvbG9yOiAjZmZmOyB9CgouaXMtdGhlbWUgLmxlYWQtdGV4dCBzcGFuIHsgY29sb3I6ICNhOWNkZmY7IH0KCi5pcy10aGVtZSAuaXMtbGlnaHQgLmxlYWQtdGV4dCwgLmlzLWRhcmsgLmlzLWxpZ2h0IC5sZWFkLXRleHQgeyBjb2xvcjogIzM2NGE2MzsgfQoKLmlzLXRoZW1lIC5pcy1saWdodCAubGVhZC10ZXh0IHNwYW4sIC5pcy1kYXJrIC5pcy1saWdodCAubGVhZC10ZXh0IHNwYW4geyBjb2xvcjogIzUyNjQ4NDsgfQoKLnN1Yi10ZXh0IHsgZGlzcGxheTogYmxvY2s7IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6ICM4MDk0YWU7IH0KCi5zdWItdGV4dCBzcGFuICsgLmRvdCwgLnN1Yi10ZXh0IC5kb3QgKyBzcGFuIHsgbWFyZ2luLWxlZnQ6IDAuMjVyZW07IH0KCi5zdWItdGV4dC1zbSwgLnN1Yi10ZXh0ICsgLnN1Yi10ZXh0IHsgZm9udC1zaXplOiAxMnB4OyB9Cgouc3ViLXRleHQtc20geyBjb2xvcjogIzgwOTRhZTsgfQoKLmlzLXRoZW1lIC5zdWItdGV4dC1zbSB7IGNvbG9yOiAjYTljZGZmOyB9CgouaXMtdGhlbWUgLmlzLWxpZ2h0IC5zdWItdGV4dC1zbSB7IGNvbG9yOiAjODA5NGFlOyB9CgoudGV4dC1lbGxpcHNpcyAuc3ViLXRleHQgeyBkaXNwbGF5OiBpbmxpbmU7IH0KCi5zdWItdGV4dCBzdHJvbmcgeyBjb2xvcjogIzUyNjQ4NDsgZm9udC13ZWlnaHQ6IDcwMDsgfQoKLmlzLXRoZW1lIC5zdWItdGV4dCBzdHJvbmcgeyBjb2xvcjogI2E5Y2RmZjsgfQoKLmlzLXRoZW1lIC5pcy1saWdodCAuc3ViLXRleHQgc3Ryb25nIHsgY29sb3I6ICM1MjY0ODQ7IH0KCi5zdWItdGV4dCBzcGFuIHsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfQoKLmlzLXRoZW1lIC5zdWItdGV4dCB7IGNvbG9yOiAjYTljZGZmOyB9CgouaXMtdGhlbWUgLmlzLWxpZ2h0IC5zdWItdGV4dCB7IGNvbG9yOiAjODA5NGFlOyB9CgoudGV4dC1kYXRlIHNwYW4geyBjb2xvcjogIzUyNjQ4NDsgfQoKaDYgLmJhZGdlIHsgbWFyZ2luLWxlZnQ6IDAuNXJlbTsgfQoKLmZzLTlweCB7IGZvbnQtc2l6ZTogOXB4OyB9CgouZnMtMTBweCB7IGZvbnQtc2l6ZTogMTBweDsgfQoKLmZzLTExcHggeyBmb250LXNpemU6IDExcHg7IH0KCi5mcy0xMnB4IHsgZm9udC1zaXplOiAxMnB4OyB9CgouZnMtMTNweCB7IGZvbnQtc2l6ZTogMTNweDsgfQoKLmZzLTE0cHggeyBmb250LXNpemU6IDE0cHg7IH0KCi5mcy0xNXB4IHsgZm9udC1zaXplOiAxNXB4OyB9CgouZnMtMTZweCB7IGZvbnQtc2l6ZTogMTZweDsgfQoKLmZzLTE3cHggeyBmb250LXNpemU6IDE3cHg7IH0KCi5mcy0xOHB4IHsgZm9udC1zaXplOiAxOHB4OyB9CgouZnMtMTlweCB7IGZvbnQtc2l6ZTogMTlweDsgfQoKLmZzLTIwcHggeyBmb250LXNpemU6IDIwcHg7IH0KCi5mcy0yMXB4IHsgZm9udC1zaXplOiAyMXB4OyB9CgouZnMtMjJweCB7IGZvbnQtc2l6ZTogMjJweDsgfQoKLm5vdGUtdGV4dCB7IGZvbnQtc2l6ZTogMTJweDsgZm9udC1zdHlsZTogaXRhbGljOyBjb2xvcjogIzgwOTRhZTsgfQoKLmNhcmQgLnRhYmxlIHsgbWFyZ2luLWJvdHRvbTogMDsgfQoKLmNhcmQgLnRhYmxlIHRyOmZpcnN0LWNoaWxkIHRoLCAuY2FyZCAudGFibGUgdHI6Zmlyc3QtY2hpbGQgdGQgeyBib3JkZXItdG9wOiBub25lOyB9CgouY2FyZCAudGFibGUgdHI6bGFzdC1jaGlsZCB0ZDpmaXJzdC1jaGlsZCB7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweDsgfQoKLmNhcmQgLnRhYmxlIHRyOmxhc3QtY2hpbGQgdGQ6bGFzdC1jaGlsZCB7IGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA0cHg7IH0KCi5jYXJkIC50YWJsZSB0cjpmaXJzdC1jaGlsZCB0aDpmaXJzdC1jaGlsZCB7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDRweDsgfQoKLmNhcmQgLnRhYmxlIHRyOmZpcnN0LWNoaWxkIHRoOmxhc3QtY2hpbGQgeyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNHB4OyB9CgouY2FyZCArIC5sZWFkLXRleHQgeyBtYXJnaW4tdG9wOiAycmVtOyB9CgoubGVhZC10ZXh0ICsgLmNhcmQgeyBtYXJnaW4tdG9wOiAxcmVtOyB9CgouY2FyZC1jdXN0b20tczEgLmNhcmQtaW5uZXItZ3JvdXAgLmNhcmQtaW5uZXIgeyBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RiZGZlYTsgfQoKQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7IC5jYXJkLWN1c3RvbS1zMSAuY2FyZC1pbm5lci1sZyB7IHBhZGRpbmctbGVmdDogMS41cmVtOyBwYWRkaW5nLXJpZ2h0OiAxLjVyZW07IH0gfQoKQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7IC5jYXJkLWN1c3RvbS1zMSAuY2FyZC1pbm5lci1ncm91cCB7IGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNkYmRmZWE7IH0KICAuY2FyZC1jdXN0b20tczEgLmNhcmQtaW5uZXItZ3JvdXAgLmNhcmQtaW5uZXI6bGFzdC1jaGlsZCB7IGJvcmRlci1ib3R0b206IG5vbmU7IH0gfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7IC5jYXJkLXNlYXJjaCAuY2FyZC1ib2R5IHsgcGFkZGluZzogMS41cmVtOyB9IH0KCi5jYXJkLWFzaWRlIHsgd2lkdGg6IDMwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyBtaW4taGVpZ2h0OiAxMDB2aDsgZmxleC1zaHJpbms6IDA7IH0KCi5jYXJkLWFzaWRlLWxlZnQgeyBvcmRlcjogLTE7IGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNlNWU5ZjI7IH0KCi5jYXJkLWFzaWRlLXJpZ2h0IHsgb3JkZXI6IDEwMDsgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZTVlOWYyOyB9CgouY2FyZC1hc2lkZS13cmFwIHsgZGlzcGxheTogZmxleDsgfQoKLmNhcmQtYXNpZGUtd3JhcCAuY2FyZC1pbm5lciwgLmNhcmQtYXNpZGUtd3JhcCAuY2FyZC1jb250ZW50IHsgZmxleC1ncm93OiAxOyB9CgpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsgLnRvZ2dsZS1icmVhay1tZC5jYXJkLWFzaWRlIC5jYXJkLWlubmVyLWdyb3VwIHsgbWF4LWhlaWdodDogMTAwdmg7IH0gfQoKQG1lZGlhIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7IC50b2dnbGUtYnJlYWstbGcuY2FyZC1hc2lkZSAuY2FyZC1pbm5lci1ncm91cCB7IG1heC1oZWlnaHQ6IDEwMHZoOyB9IH0KCkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsgLnRvZ2dsZS1icmVhay14bC5jYXJkLWFzaWRlIC5jYXJkLWlubmVyLWdyb3VwIHsgbWF4LWhlaWdodDogMTAwdmg7IH0gfQoKQG1lZGlhIChtYXgtd2lkdGg6IDE1MzkuOThweCkgeyAudG9nZ2xlLWJyZWFrLXh4bC5jYXJkLWFzaWRlIC5jYXJkLWlubmVyLWdyb3VwIHsgbWF4LWhlaWdodDogMTAwdmg7IH0gfQoKQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7IC5jYXJkLWFzaWRlIHsgcG9zaXRpb246IHN0YXRpYzsgZGlzcGxheTogYmxvY2s7IH0gfQoKQG1lZGlhIChtaW4td2lkdGg6IDE1NDBweCkgeyAuY2FyZC1hc2lkZSB7IHdpZHRoOiAzODBweDsgfSB9CgoudXNlci1hdmF0YXIsIFtjbGFzc149InVzZXItYXZhdGFyIl06bm90KFtjbGFzcyo9Ii1ncm91cCJdKSB7IGJvcmRlci1yYWRpdXM6IDUwJTsgaGVpZ2h0OiA0MHB4OyB3aWR0aDogNDBweDsgZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kOiAjM2E4ZGZlOyBmb250LXNpemU6IDE0cHg7IGZvbnQtd2VpZ2h0OiA1MDA7IGxldHRlci1zcGFjaW5nOiAwLjA2ZW07IGZsZXgtc2hyaW5rOiAwOyBwb3NpdGlvbjogcmVsYXRpdmU7IH0KCi51c2VyLWF2YXRhciArIC51c2VyLWluZm8sIFtjbGFzc149InVzZXItYXZhdGFyIl06bm90KFtjbGFzcyo9Ii1ncm91cCJdKSArIC51c2VyLWluZm8geyBtYXJnaW4tbGVmdDogMXJlbTsgfQoKLnVzZXItYXZhdGFyICsgLnVzZXItbmFtZSwgW2NsYXNzXj0idXNlci1hdmF0YXIiXTpub3QoW2NsYXNzKj0iLWdyb3VwIl0pICsgLnVzZXItbmFtZSB7IG1hcmdpbi1sZWZ0OiAwLjc1cmVtOyB9CgoudXNlci1hdmF0YXIgaW1nLCBbY2xhc3NePSJ1c2VyLWF2YXRhciJdOm5vdChbY2xhc3MqPSItZ3JvdXAiXSkgaW1nIHsgYm9yZGVyLXJhZGl1czogNTAlOyB9CgoudXNlci1hdmF0YXIubWQgKyAudXNlci1pbmZvLCBbY2xhc3NePSJ1c2VyLWF2YXRhciJdOm5vdChbY2xhc3MqPSItZ3JvdXAiXSkubWQgKyAudXNlci1pbmZvIHsgbWFyZ2luLWxlZnQ6IDEuNXJlbTsgfQoKLnVzZXItYXZhdGFyLm1kICsgLnVzZXItbmFtZSwgW2NsYXNzXj0idXNlci1hdmF0YXIiXTpub3QoW2NsYXNzKj0iLWdyb3VwIl0pLm1kICsgLnVzZXItbmFtZSB7IG1hcmdpbi1sZWZ0OiAxLjI1cmVtOyB9CgoudXNlci1hdmF0YXIgLmVkaXQsIFtjbGFzc149InVzZXItYXZhdGFyIl06bm90KFtjbGFzcyo9Ii1ncm91cCJdKSAuZWRpdCB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyByaWdodDogMDsgYm90dG9tOiAwOyBsZWZ0OiAwOyBib3JkZXItcmFkaXVzOiA1MCU7IGJhY2tncm91bmQtY29sb3I6IHJnYmEoMzEsIDQzLCA1OCwgMC41KTsgZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGNvbG9yOiAjZmZmOyBvcGFjaXR5OiAwOyB0cmFuc2l0aW9uOiBvcGFjaXR5IC4zczsgfQoKLnVzZXItYXZhdGFyOmhvdmVyIC5lZGl0LCBbY2xhc3NePSJ1c2VyLWF2YXRhciJdOm5vdChbY2xhc3MqPSItZ3JvdXAiXSk6aG92ZXIgLmVkaXQgeyBvcGFjaXR5OiAxOyB9CgoudXNlci1hdmF0YXIgLnN0YXR1cywgW2NsYXNzXj0idXNlci1hdmF0YXIiXTpub3QoW2NsYXNzKj0iLWdyb3VwIl0pIC5zdGF0dXMgeyBib3JkZXI6IDJweCBzb2xpZCAjZmZmOyBwb3NpdGlvbjogYWJzb2x1dGU7IGJvdHRvbTogMDsgcmlnaHQ6IDA7IH0KCi51c2VyLWF2YXRhci5zcSwgW2NsYXNzXj0idXNlci1hdmF0YXIiXTpub3QoW2NsYXNzKj0iLWdyb3VwIl0pLnNxIHsgYm9yZGVyLXJhZGl1czogNHB4OyB9CgoudXNlci1hdmF0YXIuc3EgaW1nLCBbY2xhc3NePSJ1c2VyLWF2YXRhciJdOm5vdChbY2xhc3MqPSItZ3JvdXAiXSkuc3EgaW1nIHsgYm9yZGVyLXJhZGl1czogNHB4OyB9CgoudXNlci1hdmF0YXIuc3EgLnN0YXR1cywgW2NsYXNzXj0idXNlci1hdmF0YXIiXTpub3QoW2NsYXNzKj0iLWdyb3VwIl0pLnNxIC5zdGF0dXMgeyBib3R0b206IC02cHg7IHJpZ2h0OiAtNnB4OyB9CgoudXNlci1hdmF0YXItbXVsdGlwbGUgeyBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OyB9CgoudXNlci1hdmF0YXItbXVsdGlwbGUgLnVzZXItYXZhdGFyIHsgcG9zaXRpb246IGFic29sdXRlOyBoZWlnaHQ6IDcwJTsgd2lkdGg6IDcwJTsgZm9udC1zaXplOiA4MCU7IGJvcmRlcjogMnB4IHNvbGlkICNmZmY7IH0KCi51c2VyLWF2YXRhci1tdWx0aXBsZSAudXNlci1hdmF0YXI6bnRoLWNoaWxkKDEpIHsgdG9wOiAwOyByaWdodDogMDsgfQoKLnVzZXItYXZhdGFyLW11bHRpcGxlIC51c2VyLWF2YXRhcjpudGgtY2hpbGQoMikgeyBib3R0b206IDA7IGxlZnQ6IDA7IH0KCi51c2VyLWNhcmQgLnVzZXItYXZhdGFyLmQtbm9uZSB7IG1hcmdpbi1yaWdodDogMXJlbTsgfQoKLnVzZXItY2FyZCAudXNlci1hdmF0YXIuZC1ub25lICsgLnVzZXItaW5mbywgLnVzZXItY2FyZCAudXNlci1hdmF0YXIuZC1ub25lICsgLnVzZXItbmFtZSB7IG1hcmdpbi1sZWZ0OiAwOyB9CgoudXNlci1hdmF0YXIteGwsIC51c2VyLWF2YXRhci54bCB7IGhlaWdodDogMTEwcHg7IHdpZHRoOiAxMTBweDsgZm9udC1zaXplOiA0MHB4OyBmb250LXdlaWdodDogNDAwOyB9CgoudXNlci1hdmF0YXIteGwgLnN0YXR1cywgLnVzZXItYXZhdGFyLnhsIC5zdGF0dXMgeyBib3R0b206IDlweDsgcmlnaHQ6IDlweDsgfQoKLnVzZXItYXZhdGFyLWxnLCAudXNlci1hdmF0YXIubGcgeyBoZWlnaHQ6IDgwcHg7IHdpZHRoOiA4MHB4OyBmb250LXNpemU6IDI4cHg7IGZvbnQtd2VpZ2h0OiA0MDA7IH0KCi51c2VyLWF2YXRhci1sZyAuc3RhdHVzLCAudXNlci1hdmF0YXIubGcgLnN0YXR1cyB7IGJvdHRvbTogNXB4OyByaWdodDogNXB4OyB9CgoudXNlci1hdmF0YXItbWQsIC51c2VyLWF2YXRhci5tZCB7IGhlaWdodDogNjBweDsgd2lkdGg6IDYwcHg7IGZvbnQtc2l6ZTogMThweDsgfQoKLnVzZXItYXZhdGFyLW1kIC5zdGF0dXMsIC51c2VyLWF2YXRhci5tZCAuc3RhdHVzIHsgYm90dG9tOiAycHg7IHJpZ2h0OiAycHg7IH0KCi51c2VyLWF2YXRhci1zbSwgLnVzZXItYXZhdGFyLnNtIHsgaGVpZ2h0OiAzMnB4OyB3aWR0aDogMzJweDsgZm9udC1zaXplOiAxMnB4OyB9CgoudXNlci1hdmF0YXItc20gLnN0YXR1cywgLnVzZXItYXZhdGFyLnNtIC5zdGF0dXMgeyBib3R0b206IC0ycHg7IHJpZ2h0OiAtMnB4OyB9CgoudXNlci1hdmF0YXIteHMsIC51c2VyLWF2YXRhci54cyB7IGhlaWdodDogMjZweDsgd2lkdGg6IDI2cHg7IGZvbnQtc2l6ZTogOXB4OyBmb250LXdlaWdodDogNzAwOyB9CgoudXNlci1hdmF0YXIteHMgLnN0YXR1cywgLnVzZXItYXZhdGFyLnhzIC5zdGF0dXMgeyBib3R0b206IC0ycHg7IHJpZ2h0OiAtMnB4OyB9CgoudXNlci1hdmF0YXJbY2xhc3MqPSItYmx1ZS1kaW0iXSB7IGNvbG9yOiAjNTU5YmZiOyB9CgoudXNlci1hdmF0YXJbY2xhc3MqPSItYXp1cmUtZGltIl0geyBjb2xvcjogIzE2NzZmYjsgfQoKLnVzZXItYXZhdGFyW2NsYXNzKj0iLWluZGlnby1kaW0iXSB7IGNvbG9yOiAjMmMzNzgyOyB9CgoudXNlci1hdmF0YXJbY2xhc3MqPSItcHVycGxlLWRpbSJdIHsgY29sb3I6ICM4MTZiZmY7IH0KCi51c2VyLWF2YXRhcltjbGFzcyo9Ii1waW5rLWRpbSJdIHsgY29sb3I6ICNmZjYzYTU7IH0KCi51c2VyLWF2YXRhcltjbGFzcyo9Ii1vcmFuZ2UtZGltIl0geyBjb2xvcjogI2ZmYTM1MzsgfQoKLnVzZXItYXZhdGFyW2NsYXNzKj0iLXRlYWwtZGltIl0geyBjb2xvcjogIzIwYzk5NzsgfQoKLnVzZXItYXZhdGFyW2NsYXNzKj0iLXByaW1hcnktZGltIl0geyBjb2xvcjogIzA5NzFmZTsgfQoKLnVzZXItYXZhdGFyW2NsYXNzKj0iLXNlY29uZGFyeS1kaW0iXSB7IGNvbG9yOiAjMzY0YTYzOyB9CgoudXNlci1hdmF0YXJbY2xhc3MqPSItc3VjY2Vzcy1kaW0iXSB7IGNvbG9yOiAjMWVlMGFjOyB9CgoudXNlci1hdmF0YXJbY2xhc3MqPSItaW5mby1kaW0iXSB7IGNvbG9yOiAjMDljMmRlOyB9CgoudXNlci1hdmF0YXJbY2xhc3MqPSItd2FybmluZy1kaW0iXSB7IGNvbG9yOiAjZjRiZDBlOyB9CgoudXNlci1hdmF0YXJbY2xhc3MqPSItZGFuZ2VyLWRpbSJdIHsgY29sb3I6ICNlODUzNDc7IH0KCi51c2VyLWF2YXRhcltjbGFzcyo9Ii1kYXJrLWRpbSJdIHsgY29sb3I6ICMxZjJiM2E7IH0KCi51c2VyLWF2YXRhcltjbGFzcyo9Ii1ncmF5LWRpbSJdIHsgY29sb3I6ICM4MDkxYTc7IH0KCi51c2VyLWF2YXRhcltjbGFzcyo9Ii1saWdodGVyIl0geyBjb2xvcjogIzgwOTRhZTsgfQoKLnVzZXItYXZhdGFyW2NsYXNzKj0iLWxpZ2h0Il0geyBjb2xvcjogIzUyNjQ4NDsgfQoKLnVzZXItY2FyZCB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IH0KCi51c2VyLWNhcmQtd3JhcCB7IHBhZGRpbmctdG9wOiAxLjEyNXJlbTsgcGFkZGluZy1ib3R0b206IDEuMTI1cmVtOyB9CgoudXNlci1jYXJkIC51c2VyLWluZm8geyBjb2xvcjogIzgwOTRhZTsgfQoKLnVzZXItY2FyZC1tZW51IHsgcG9zaXRpb246IGFic29sdXRlOyByaWdodDogMXJlbTsgdG9wOiAxcmVtOyB9CgoudXNlci10b2dnbGUgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBwYWRkaW5nOiAwIDFweCAxcHg7IH0KCi51c2VyLXN0YXR1cyB7IGZvbnQtc2l6ZTogMTFweDsgZm9udC13ZWlnaHQ6IDUwMDsgbGluZS1oZWlnaHQ6IDE7IHBhZGRpbmctdG9wOiAuMTI1cmVtOyBwYWRkaW5nLWJvdHRvbTogLjM3NXJlbTsgfQoKLnVzZXItc3RhdHVzLXVudmVyaWZpZWQgeyBjb2xvcjogI2U4NTM0NzsgfQoKLnVzZXItc3RhdHVzLXZlcmlmaWVkIHsgY29sb3I6ICMxZWUwYWM7IH0KCi51c2VyLW5hbWUgeyBjb2xvcjogIzUyNjQ4NDsgZm9udC1zaXplOiAxMnB4OyBsaW5lLWhlaWdodDogMTZweDsgZm9udC13ZWlnaHQ6IDcwMDsgfQoKLmlzLWRhcmsgLnVzZXItbmFtZSB7IGNvbG9yOiAjOTBhMWI4OyB9CgouaXMtdGhlbWUgLnVzZXItbmFtZSB7IGNvbG9yOiAjYTljZGZmOyB9CgoudXNlci1hY3Rpb24geyBtYXJnaW4tbGVmdDogYXV0bzsgZm9udC1zaXplOiAyMHB4OyBjb2xvcjogIzgwOTRhZTsgfQoKLnVzZXItYWNjb3VudC1pbmZvIHsgcGFkZGluZy10b3A6IDEuNXJlbTsgcGFkZGluZy1ib3R0b206IDFyZW07IH0KCi51c2VyLWFjY291bnQtaW5mbzpmaXJzdC1jaGlsZCB7IHBhZGRpbmctdG9wOiAwLjVyZW07IH0KCi5uay1wcm9maWxlLWNvbnRlbnQgLnVzZXItYWNjb3VudC1pbmZvOmZpcnN0LWNoaWxkIHsgcGFkZGluZy10b3A6IDEuNXJlbTsgfQoKLnVzZXItYWNjb3VudC1kYXRhIGxpIHsgZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyBwYWRkaW5nOiAuMTI1cmVtIDA7IH0KCi51c2VyLWFjY291bnQtYWN0aW9uczpub3QoOmZpcnN0LWNoaWxkKSB7IG1hcmdpbi10b3A6IDEuNXJlbTsgfQoKLnVzZXItYWNjb3VudC1hY3Rpb25zIHVsIHsgZGlzcGxheTogZmxleDsgfQoKLnVzZXItYWNjb3VudC1hY3Rpb25zIHVsIGxpIHsgd2lkdGg6IDQ0JTsgfQoKLnVzZXItYWNjb3VudC1hY3Rpb25zIHVsIGxpOmxhc3QtY2hpbGQgeyB3aWR0aDogNTYlOyB9CgoudXNlci1hY2NvdW50LWFjdGlvbnMgLmJ0biwgLnVzZXItYWNjb3VudC1hY3Rpb25zIC5kdWFsLWxpc3Rib3ggLmR1YWwtbGlzdGJveF9fYnV0dG9uLCAuZHVhbC1saXN0Ym94IC51c2VyLWFjY291bnQtYWN0aW9ucyAuZHVhbC1saXN0Ym94X19idXR0b24geyB3aWR0aDogMTAwJTsgZm9udC1zaXplOiAxMnB4OyBsZXR0ZXItc3BhY2luZzogMC4wNGVtOyBwYWRkaW5nLWxlZnQ6IDAuNXJlbTsgcGFkZGluZy1yaWdodDogMC41cmVtOyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyB9CgoudXNlci1hY2NvdW50LWxpbmtzIHsgcGFkZGluZzogMXJlbSAwOyBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2U1ZTlmMjsgfQoKLnVzZXItYWNjb3VudC1pbmZvIC51c2VyLWFjY291bnQtbGlua3M6bGFzdC1jaGlsZCB7IGJvcmRlci1ib3R0b206IDA7IHBhZGRpbmctYm90dG9tOiAwOyB9CgoudXNlci1hY2NvdW50LWluZm8gKyAudXNlci1hY2NvdW50LWxpbmtzIHsgcGFkZGluZy10b3A6IDA7IG1hcmdpbi10b3A6IC0wLjVyZW07IH0KCi51c2VyLWFjY291bnQtbGlua3MgYTpsaW5rIHsgcGFkZGluZzogMC41cmVtIDA7IGRpc3BsYXk6IGZsZXg7IH0KCi51c2VyLWFjY291bnQtdmFsdWUgeyBkaXNwbGF5OiBpbmxpbmUtZmxleDsgfQoKLnVzZXItYmFsYW5jZSB7IGZvbnQtc2l6ZTogMS41cmVtOyBsaW5lLWhlaWdodDogMTsgcGFkZGluZzogLjEyNXJlbSAwIC4zNzVyZW07IGNvbG9yOiAjMDk3MWZlOyB9CgoudXNlci1iYWxhbmNlIHNtYWxsIHsgZm9udC1zaXplOiAxcmVtOyB9CgoudXNlci1iYWxhbmNlLWFsdCB7IGZvbnQtc2l6ZTogMTVweDsgY29sb3I6ICM1MjY0ODQ7IGZvbnQtd2VpZ2h0OiA3MDA7IH0KCi51c2VyLWJhbGFuY2UtYWx0IHNwYW4geyBmb250LXdlaWdodDogNDAwOyB9CgoudXNlci1iYWxhbmNlLXN1YiB7IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6ICM4MDk0YWU7IH0KCi51c2VyLWJhbGFuY2Utc3ViIHNwYW4geyBjb2xvcjogIzUyNjQ4NDsgfQoKLnVzZXItYmFsYW5jZS1zdWIgKyBhIHsgbWFyZ2luLXRvcDogMXJlbTsgfQoKLnVzZXItY2FyZC1zMiB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IHRleHQtYWxpZ246IGNlbnRlcjsgcGFkZGluZzogLjVyZW07IH0KCi51c2VyLWNhcmQtczIgLnVzZXItYXZhdGFyIHsgbWFyZ2luOiAwIGF1dG87IH0KCi51c2VyLWNhcmQtczIgLnVzZXItaW5mbyB7IG1hcmdpbjogMS4yNXJlbSAwIDAgIWltcG9ydGFudDsgfQoKLnVzZXItY2FyZC1zMiAudXNlci1pbmZvIC5zdWItdGV4dCB7IGp1c3RpZnktY29udGVudDogY2VudGVyOyB9CgoudXNlci1jYXJkLXMyIC51c2VyLWluZm8gLmJhZGdlIHsgbWFyZ2luLWJvdHRvbTogMXJlbTsgfQoKLnVzZXItY2FyZC1tZCAubGVhZC10ZXh0IHsgZm9udC1zaXplOiAxcmVtOyB9CgoudXNlci1jYXJkLW1kIC5zdWItdGV4dCB7IGZvbnQtc2l6ZTogMC44NzVyZW07IH0KCi51c2VyLWFjdGl2aXR5IHsgZGlzcGxheTogZmxleDsgfQoKLnVzZXItYWN0aXZpdHktZ3JvdXAgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LXdyYXA6IHdyYXA7IH0KCi51c2VyLWFjdGl2aXR5LWNrIHsgaGVpZ2h0OiAxMTBweDsgcGFkZGluZzogLjVyZW0gLjM3NXJlbSAwOyB9CgoudXNlci1hY3Rpdml0eSAuaWNvbiB7IHdpZHRoOiAyLjI1cmVtOyBmb250LXNpemU6IDEuNXJlbTsgY29sb3I6ICM4MDk0YWU7IH0KCi51c2VyLWFjdGl2aXR5IC5pbmZvIHNwYW4geyBkaXNwbGF5OiBibG9jazsgfQoKLnVzZXItYWN0aXZpdHkgLmFtb3VudCB7IGZvbnQtc2l6ZTogMS4xMjVyZW07IGxpbmUtaGVpZ2h0OiAxLjM7IGZvbnQtd2VpZ2h0OiA1MDA7IGNvbG9yOiAjNTI2NDg0OyB9CgoudXNlci1hY3Rpdml0eSAudGl0bGUgeyBmb250LXNpemU6IDEycHg7IGNvbG9yOiAjODA5NGFlOyB9CgoudXNlci1hY3Rpdml0eSAuZ2Z4IHsgYWxpZ24tc2VsZjogZmxleC1lbmQ7IHdpZHRoOiA1MHB4OyBtYXJnaW4tbGVmdDogMXJlbTsgbWFyZ2luLWJvdHRvbTogMC4yNXJlbTsgfQoKLnVzZXItY29udGFjdHMgbGkgeyBjb2xvcjogIzUyNjQ4NDsgZGlzcGxheTogZmxleDsgZm9udC1zaXplOiAuODc1cmVtOyBsaW5lLWhlaWdodDogMS40cmVtOyBwYWRkaW5nOiAuMzc1cmVtIDA7IH0KCi51c2VyLWNvbnRhY3RzIGxpIC5pY29uIHsgY29sb3I6ICM4MDk0YWU7IGZvbnQtc2l6ZTogMXJlbTsgd2lkdGg6IDEuNzVyZW07IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH0KCi51c2VyLWF2YXRhci1ncm91cCB7IGRpc3BsYXk6IGZsZXg7IH0KCi51c2VyLWF2YXRhci1ncm91cCAudXNlci1hdmF0YXIgeyBib3JkZXI6IDJweCBzb2xpZCAjZmZmOyB9CgoudXNlci1hdmF0YXItZ3JvdXAgLnVzZXItYXZhdGFyOm5vdCg6Zmlyc3QtY2hpbGQpIHsgbWFyZ2luLWxlZnQ6IC0yMCU7IH0KCi51c2VyLWF2YXRhci1ncm91cCAudXNlci1hdmF0YXIuc206bm90KDpmaXJzdC1jaGlsZCkgeyBtYXJnaW4tbGVmdDogLTFyZW07IH0KCi51c2VyLWF2YXRhci1ncm91cCAudXNlci1hdmF0YXIueHM6bm90KDpmaXJzdC1jaGlsZCkgeyBtYXJnaW4tbGVmdDogLTAuNXJlbTsgfQoKLnVzZXItaW5mbyAubGVhZC10ZXh0LCAudXNlci1pbmZvIC5zdWItdGV4dCB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IH0KCi51c2VyLWluZm8gLmVkaXQgeyBmb250LXNpemU6IDEuMjVyZW07IGNvbG9yOiAjODA5NGFlOyBtYXJnaW4tbGVmdDogMC41cmVtOyBkaXNwbGF5OiBpbmxpbmUtZmxleDsgfQoKLnVzZXItaW5mbyAuZWRpdDpob3ZlciB7IGNvbG9yOiAjMDk3MWZlOyB9CgoudXNlci1wbGFuIHsgZGlzcGxheTogZmxleDsgZmxleC13cmFwOiB3cmFwOyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IHBhZGRpbmc6IC43NXJlbSAwOyB9CgoudXNlci1wbGFuLXRpdGxlIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgY29sb3I6ICMzNjRhNjM7IGZvbnQtd2VpZ2h0OiA3MDA7IGZvbnQtc2l6ZTogMXJlbTsgfQoKLnVzZXItcGxhbi10aXRsZSAuaWNvbiB7IGZvbnQtc2l6ZTogMS41cmVtOyBtYXJnaW4tcmlnaHQ6IDAuNzVyZW07IGNvbG9yOiAjMDk3MWZlOyB9CgoudXNlci1wbGFuLWluZm8sIC51c2VyLXBsYW4tYWN0aW9ucyB7IHBhZGRpbmc6IDAuNXJlbSAwOyB9CgoudXNlci1wbGFuLXN0YXR1cyB7IGZvbnQtc2l6ZTogMTNweDsgZm9udC13ZWlnaHQ6IDUwMDsgY29sb3I6ICM4MDk0YWU7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IG1hcmdpbi10b3A6IDAuNXJlbTsgfQoKLnVzZXItcGxhbi1wcm9ncmVzcyB7IHdpZHRoOiAxMDAlOyBtYXJnaW4tdG9wOiAxcmVtOyB9CgouZGF0YS1saXN0Om5vdCg6Zmlyc3QtY2hpbGQpIHsgbWFyZ2luLXRvcDogMS41cmVtOyB9CgouZGF0YS1pdGVtIHsgcG9zaXRpb246IHJlbGF0aXZlOyBwYWRkaW5nOiAxcmVtIDEuMjVyZW07IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IH0KCi5kYXRhLWl0ZW0gLmljb24geyBjb2xvcjogIzgwOTRhZTsgdGV4dC1hbGlnbjogY2VudGVyOyBoZWlnaHQ6IDMycHg7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IGxpbmUtaGVpZ2h0OiAzMnB4OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH0KCi5kYXRhLWl0ZW06bm90KDpsYXN0LWNoaWxkKSB7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTVlOWYyOyB9CgouZGF0YS1pdGVtW2RhdGEtdG9nZ2xlXSB7IGN1cnNvcjogcG9pbnRlcjsgfQoKLmRhdGEtaXRlbTpob3ZlciAuZGF0YS1sYWJlbCB7IGNvbG9yOiAjNTI2NDg0OyB9CgouZGF0YS1pdGVtOmhvdmVyIC5kYXRhLXZhbHVlLCAuZGF0YS1pdGVtOmhvdmVyIC5pY29uIHsgY29sb3I6ICMzNjRhNjM7IH0KCi5kYXRhLWhlYWQgeyBwYWRkaW5nOiAwLjVyZW0gMS4yNXJlbTsgbWFyZ2luLWJvdHRvbTogMC4yNXJlbTsgYmFja2dyb3VuZC1jb2xvcjogI2ViZWVmMjsgYm9yZGVyLXJhZGl1czogNHB4OyB9CgouZGF0YS1oZWFkLmlzLXBsYWluIHsgbWFyZ2luLWJvdHRvbTogMDsgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH0KCi5kYXRhLWhlYWQuaXMtcGxhaW46Zmlyc3QtY2hpbGQgeyBtYXJnaW4tdG9wOiAxcmVtOyB9CgouZGF0YS1oZWFkIC50aXRsZSB7IGNvbG9yOiAjNTI2NDg0OyB9CgouZGF0YS1jb2wgeyBmbGV4LWdyb3c6IDE7IH0KCi5kYXRhLWNvbCBzcGFuIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB0cmFuc2l0aW9uOiBjb2xvciAuM3M7IH0KCi5kYXRhLWNvbC1lbmQgeyBmbGV4LWdyb3c6IDA7IG1hcmdpbi1sZWZ0OiBhdXRvOyB9CgouZGF0YS1sYWJlbCB7IGNvbG9yOiAjODA5NGFlOyB3aWR0aDogMTAwJTsgZmxleC1zaHJpbms6IDA7IH0KCi5kYXRhLXZhbHVlIHsgY29sb3I6ICM1MjY0ODQ7IGZvbnQtc2l6ZTogMC45Mzc1cmVtOyB9CgouZGF0YS1tb3JlIHsgcG9zaXRpb246IHJlbGF0aXZlOyB6LWluZGV4OiA0OyB0ZXh0LWFsaWduOiBjZW50ZXI7IGxpbmUtaGVpZ2h0OiAyOHB4OyBoZWlnaHQ6IDI4cHg7IHdpZHRoOiAyOHB4OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH0KCi5kYXRhLW1vcmU6YmVmb3JlIHsgcG9zaXRpb246IGFic29sdXRlOyB6LWluZGV4OiAtMTsgaGVpZ2h0OiAyMHB4OyB3aWR0aDogMjBweDsgdG9wOiA1MCU7IGxlZnQ6IDUwJTsgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7IHRyYW5zZm9ybS1vcmlnaW46IDUwJSA1MCU7IGNvbnRlbnQ6ICcnOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZTVlOWYyOyBib3JkZXItcmFkaXVzOiA1MCU7IG9wYWNpdHk6IDA7IHRyYW5zaXRpb246IGFsbCAuM3M7IH0KCi5kYXRhLWl0ZW06aG92ZXIgLmRhdGEtbW9yZTpiZWZvcmUgeyBvcGFjaXR5OiAxOyBoZWlnaHQ6IDQwcHg7IHdpZHRoOiA0MHB4OyB9CgouZGF0YS1tb3JlLmRpc2FibGU6YmVmb3JlIHsgZGlzcGxheTogbm9uZTsgfQoKLmRhdGEtbGlzdC1zMjpub3QoOmZpcnN0LWNoaWxkKSB7IG1hcmdpbi10b3A6IDFyZW07IH0KCi5kYXRhLWxpc3QtczIgLmRhdGEtaXRlbSwgLmRhdGEtbGlzdC1zMiAuZGF0YS1oZWFkIHsgcGFkZGluZy1sZWZ0OiAwOyBwYWRkaW5nLXJpZ2h0OiAwOyBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgfQoKLmRhdGEtbGlzdC1zMiAuZGF0YS1oZWFkIHsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkYmRmZWE7IH0KCi5kYXRhLWxpc3QtczIgLmRhdGEtaXRlbTpub3QoOmxhc3QtY2hpbGQpIHsgYm9yZGVyLWJvdHRvbS1jb2xvcjogI2RiZGZlYTsgfQoKLmRhdGEtbGlzdC1zMiAuZGF0YS1sYWJlbCB7IGNvbG9yOiAjNTI2NDg0OyB9CgouZGF0YS1saXN0LXMyIC5kYXRhLXBsYWNlaG9sZGVyIHsgY29sb3I6ICM4MDk0YWU7IH0KCkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgeyAuZGF0YS1saXN0Om5vdCg6Zmlyc3QtY2hpbGQpIHsgbWFyZ2luLXRvcDogMnJlbTsgfQogIC5kYXRhLWxpc3QtczI6bm90KDpmaXJzdC1jaGlsZCkgeyBtYXJnaW4tdG9wOiAxLjI1cmVtOyB9CiAgLmRhdGEtaXRlbSB7IHBhZGRpbmc6IDEuNXJlbSAxLjI1cmVtOyB9CiAgLmRhdGEtY29sIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgfQogIC5kYXRhLWNvbC1lbmQgeyB3aWR0aDogMjAwcHg7IHRleHQtYWxpZ246IHJpZ2h0OyBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOyB9CiAgLmRhdGEtbGFiZWw6bm90KFtjbGFzc149InctIl0pIHsgd2lkdGg6IDUwJTsgfSB9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSBhbmQgKG1heC13aWR0aDogMTM1OXB4KSB7IC5jYXJkLWFzaWRlLXdyYXAgLmRhdGEtbGlzdCAuZGF0YS1jb2wgeyBmbGV4LXdyYXA6IHdyYXA7IH0KICAuY2FyZC1hc2lkZS13cmFwIC5kYXRhLWxpc3QgLmRhdGEtbGFiZWwgeyB3aWR0aDogMTAwJTsgfSB9CgouaXMtY29tcGFjdCAuZGF0YS1pdGVtIHsgcGFkZGluZy10b3A6IC43NXJlbTsgcGFkZGluZy1ib3R0b206IC43NXJlbTsgfQoKLmlzLW1lZGl1bSAuZGF0YS1pdGVtIHsgcGFkZGluZy10b3A6IDEuMTI1cmVtOyBwYWRkaW5nLWJvdHRvbTogMS4xMjVyZW07IH0KCi5kcm9wZG93bi1tZW51IC5uay1ub3RpZmljYXRpb24geyBtYXgtaGVpZ2h0OiAyMzlweDsgb3ZlcmZsb3c6IGF1dG87IH0KCi5uay1ub3RpZmljYXRpb24taXRlbSB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IHBhZGRpbmc6IDEuMjVyZW0gMS43NXJlbTsgfQoKLm5rLW5vdGlmaWNhdGlvbi1pY29uIHsgZmxleC1zaHJpbms6IDA7IG1hcmdpbi1yaWdodDogLjc1cmVtOyB9Cgoubmstbm90aWZpY2F0aW9uLXRleHQgeyBmb250LXNpemU6IDEzcHg7IGNvbG9yOiAjNTI2NDg0OyB9Cgoubmstbm90aWZpY2F0aW9uLXRleHQgc3BhbiB7IGNvbG9yOiAjMzY0YTYzOyB9Cgoubmstbm90aWZpY2F0aW9uLXRpbWUgeyBmb250LXNpemU6IDExcHg7IGNvbG9yOiAjODA5NGFlOyB9CgouZHJvcGRvd24tbWVudSAubmstY2hhdC1saXN0LCAuZHJvcGRvd24tbWVudSAuY2hhdC1saXN0IHsgbWF4LWhlaWdodDogMjc0cHg7IG92ZXJmbG93OiBhdXRvOyB9CgouaWNvbi1saWdodCB7IGNvbG9yOiAjZmZmOyB9CgouaWNvbi1kYXJrIHsgY29sb3I6ICMzNjRhNjM7IH0KCi5pY29uLXRleHQgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBmb250LXNpemU6IDEzcHg7IH0KCi5pY29uLXRleHQgLmljb24geyBmb250LXNpemU6IDEuNWVtOyB3aWR0aDogMS43NXJlbTsgfQoKLmljb24taW1hZ2UgeyB3aWR0aDogNzBweDsgfQoKLmljb24taW1hZ2UgKyBoNiB7IG1hcmdpbi10b3A6IDFyZW07IH0KCi5pY29uLWNpcmNsZSB7IGRpc3BsYXk6IGlubGluZS1mbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgYWxpZ24taXRlbXM6IGNlbnRlcjsgYm9yZGVyLXJhZGl1czogNTAlOyBiYWNrZ3JvdW5kOiAjMDk3MWZlOyBjb2xvcjogI2ZmZjsgZm9udC1zaXplOiAxOHB4OyBoZWlnaHQ6IDM2cHg7IHdpZHRoOiAzNnB4OyB9CgouaWNvbi1jaXJjbGUtc20sIC5pY29uLWNpcmNsZS5zbSB7IGhlaWdodDogMjBweDsgd2lkdGg6IDIwcHg7IGZvbnQtc2l6ZTogMTJweDsgfQoKLmljb24tY2lyY2xlLW1kLCAuaWNvbi1jaXJjbGUubWQgeyBoZWlnaHQ6IDI4cHg7IHdpZHRoOiAyOHB4OyBmb250LXNpemU6IDE0cHg7IH0KCi5pY29uLWNpcmNsZS1sZywgLmljb24tY2lyY2xlLmxnIHsgaGVpZ2h0OiA0NHB4OyB3aWR0aDogNDRweDsgZm9udC1zaXplOiAyNHB4OyB9CgouaWNvbi1jaXJjbGUteHhsLCAuaWNvbi1jaXJjbGUueHhsIHsgaGVpZ2h0OiA4MHB4OyB3aWR0aDogODBweDsgZm9udC1zaXplOiA0MHB4OyB9CgouaWNvbi1zdGF0dXMgeyBwb3NpdGlvbjogcmVsYXRpdmU7IGRpc3BsYXk6IGlubGluZS1mbGV4OyB9CgouaWNvbi1zdGF0dXM6YWZ0ZXIgeyBwb3NpdGlvbjogYWJzb2x1dGU7IGJvcmRlci1yYWRpdXM6IDUwJTsgcmlnaHQ6IDA7IHRvcDogMXB4OyBoZWlnaHQ6IDEwcHg7IHdpZHRoOiAxMHB4OyBib3JkZXI6IDJweCBzb2xpZCAjZmZmOyBjb250ZW50OiAnJzsgfQoKLmljb24tc3RhdHVzLWluZm86YWZ0ZXIgeyBiYWNrZ3JvdW5kOiAjMDljMmRlOyB9CgouaWNvbi1zdGF0dXMtZGFuZ2VyOmFmdGVyIHsgYmFja2dyb3VuZDogI2U4NTM0NzsgfQoKLmljb24tc3RhdHVzLXN1Y2Nlc3M6YWZ0ZXIgeyBiYWNrZ3JvdW5kOiAjMWVlMGFjOyB9CgouaWNvbi1zdGF0dXMtd2FybmluZzphZnRlciB7IGJhY2tncm91bmQ6ICNmNGJkMGU7IH0KCi5pY29uLXN0YXR1cy1vbjphZnRlciB7IGJhY2tncm91bmQ6ICMxZWUwYWM7IH0KCi5pY29uLXN0YXR1cy1vZmY6YWZ0ZXIgeyBiYWNrZ3JvdW5kOiAjODA5NGFlOyB9CgouaWNvbi1zdGF0dXMtbmE6YWZ0ZXIgeyBkaXNwbGF5OiBub25lOyB9CgouaWNvbi1vdmVybGFwIHsgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTsgZmxleC1zaHJpbms6IDA7IH0KCi5pY29uLW92ZXJsYXAgbGkgeyBib3JkZXItcmFkaXVzOiA1MCU7IGJvcmRlcjogMnB4IHNvbGlkICNmZmY7IH0KCi5pY29uLW92ZXJsYXAgbGkgKyBsaSB7IG1hcmdpbi1yaWdodDogLTE0cHg7IH0KCi5pY29uLW92ZXJsYXAtYWx0IHsgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBmbGV4LWVuZDsgZmxleC1zaHJpbms6IDA7IH0KCi5pY29uLW92ZXJsYXAtYWx0IGxpIHsgYm9yZGVyLXJhZGl1czogNTAlOyB9CgouaWNvbi1vdmVybGFwLWFsdCBsaSArIGxpIHsgbWFyZ2luLWxlZnQ6IC0xNnB4OyBtYXJnaW4tYm90dG9tOiAtMTBweDsgfQoKLmljb24tY2lyY2xlW2NsYXNzKj0iYnRjIl0geyBiYWNrZ3JvdW5kOiAjZjk4NDFlOyB9CgouaWNvbi1jaXJjbGVbY2xhc3MqPSJmYWNlYm9vayJdIHsgYmFja2dyb3VuZDogIzNiNTk5ODsgfQoKLmljb24tY2lyY2xlW2NsYXNzKj0iZ29vZ2xlIl0geyBiYWNrZ3JvdW5kOiAjZGU1MjQ2OyB9CgouaWNvbi1jaXJjbGVbY2xhc3MqPSJidGMtZGltIl0geyBiYWNrZ3JvdW5kOiAjZmVlZmUyOyB9CgouaWNvbi1jaXJjbGVbY2xhc3MqPSJldGgtZGltIl0geyBiYWNrZ3JvdW5kOiAjZWFlZGY2OyB9CgouaWNvbi1jaXJjbGVbY2xhc3MqPSJ3aGl0ZSJdIHsgYmFja2dyb3VuZDogI2ZmZjsgfQoKLmljb25bY2xhc3MqPSJiZy1ibHVlLWRpbSJdIHsgY29sb3I6ICM1NTliZmI7IH0KCi5pY29uW2NsYXNzKj0iYmctYXp1cmUtZGltIl0geyBjb2xvcjogIzE2NzZmYjsgfQoKLmljb25bY2xhc3MqPSJiZy1pbmRpZ28tZGltIl0geyBjb2xvcjogIzJjMzc4MjsgfQoKLmljb25bY2xhc3MqPSJiZy1wdXJwbGUtZGltIl0geyBjb2xvcjogIzgxNmJmZjsgfQoKLmljb25bY2xhc3MqPSJiZy1waW5rLWRpbSJdIHsgY29sb3I6ICNmZjYzYTU7IH0KCi5pY29uW2NsYXNzKj0iYmctb3JhbmdlLWRpbSJdIHsgY29sb3I6ICNmZmEzNTM7IH0KCi5pY29uW2NsYXNzKj0iYmctdGVhbC1kaW0iXSB7IGNvbG9yOiAjMjBjOTk3OyB9CgouaWNvbltjbGFzcyo9ImJnLXByaW1hcnktZGltIl0geyBjb2xvcjogIzA5NzFmZTsgfQoKLmljb25bY2xhc3MqPSJiZy1zZWNvbmRhcnktZGltIl0geyBjb2xvcjogIzM2NGE2MzsgfQoKLmljb25bY2xhc3MqPSJiZy1zdWNjZXNzLWRpbSJdIHsgY29sb3I6ICMxZWUwYWM7IH0KCi5pY29uW2NsYXNzKj0iYmctaW5mby1kaW0iXSB7IGNvbG9yOiAjMDljMmRlOyB9CgouaWNvbltjbGFzcyo9ImJnLXdhcm5pbmctZGltIl0geyBjb2xvcjogI2Y0YmQwZTsgfQoKLmljb25bY2xhc3MqPSJiZy1kYW5nZXItZGltIl0geyBjb2xvcjogI2U4NTM0NzsgfQoKLmljb25bY2xhc3MqPSJiZy1saWdodCJdIHsgY29sb3I6ICM1MjY0ODQ7IH0KCi5pY29uW2NsYXNzKj0iYmctbGlnaHRlciJdIHsgY29sb3I6ICM4MDk0YWU7IH0KCi5pY29uW2NsYXNzKj0iYmctZGFyay1kaW0iXSB7IGNvbG9yOiAjZGRlMmVhOyB9CgouaWNvbltjbGFzcyo9ImJnLWdyYXktZGltIl0geyBjb2xvcjogI2U5ZjBmOTsgfQoKLmljb25bY2xhc3MqPSJiZy1mYWNlYm9vay1kaW0iXSB7IGNvbG9yOiAjM2I1OTk4OyB9CgouaWNvbltjbGFzcyo9ImJnLWdvb2dsZS1kaW0iXSB7IGNvbG9yOiAjZGU1MjQ2OyB9CgouaWNvbltjbGFzcyo9ImJnLWJ0Yy1kaW0iXSB7IGNvbG9yOiAjZjk4NDFlOyB9CgouaWNvbltjbGFzcyo9ImJnLWV0aC1kaW0iXSB7IGNvbG9yOiAjNjE3NGI5OyB9CgouaWNvbltjbGFzcyo9ImJnLXdoaXRlIl0geyBjb2xvcjogIzUyNjQ4NDsgfQoKLmljb24tYXZhdGFyIHsgd2lkdGg6IDEuNXJlbTsgaGVpZ2h0OiAxLjVyZW07IGRpc3BsYXk6IGlubGluZS1ibG9jazsgdGV4dC1hbGlnbjogY2VudGVyOyBsaW5lLWhlaWdodDogMS41cmVtOyBib3JkZXItcmFkaXVzOiA1MCU7IGJhY2tncm91bmQ6ICNjZWUzZmY7IGNvbG9yOiAjM2E4ZGZlOyBtYXJnaW4tcmlnaHQ6IDAuNXJlbTsgZm9udC1zaXplOiAxMnB4OyB9CgouaWNvbi1hdmF0YXItbWQgeyB3aWR0aDogMnJlbTsgaGVpZ2h0OiAycmVtOyBsaW5lLWhlaWdodDogMnJlbTsgZm9udC1zaXplOiAxNHB4OyB9CgoudGItY29sLWhpZGUsIC50Yi1jb2wtc20sIC50Yi1jb2wtbWQsIC50Yi1jb2wtbGcsIC50Yi1jb2wteGwsIC50Yi1jb2wteHhsLCAudGItY29sLXhzLCAudGItY29sLW1iIHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9CgpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsgLnRiLWNvbC1zbSB7IGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsgfSB9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsgLnRiLWNvbC1tZCB7IGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsgfSB9CgpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHsgLnRiLWNvbC1sZyB7IGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsgfSB9CgpAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7IC50Yi1jb2wteGwgeyBkaXNwbGF5OiB0YWJsZS1jZWxsICFpbXBvcnRhbnQ7IH0gfQoKQG1lZGlhIChtaW4td2lkdGg6IDE1NDBweCkgeyAudGItY29sLXh4bCB7IGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsgfSB9CgpAbWVkaWEgKG1pbi13aWR0aDogMzU5cHgpIHsgLnRiLWNvbC14cyB7IGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsgfSB9CgpAbWVkaWEgKG1pbi13aWR0aDogNDE0cHgpIHsgLnRiLWNvbC1tYiB7IGRpc3BsYXk6IHRhYmxlLWNlbGwgIWltcG9ydGFudDsgfSB9CgoudGFibGUtbWlkZGxlIHRkLCAudGItcm93LW1pZGRsZSB0ZCB7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH0KCi50Yi1jb2wtZW5kLCAudGItY29sLWFjdGlvbiB7IHRleHQtYWxpZ246IHJpZ2h0OyB9CgoudGItY29sLW1pZGRsZSB7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH0KCi50Yi1jb2wtYWN0aW9uIC5saW5rLWNyb3NzLCAudGItY29sLWFjdGlvbiAubGluay1kb25lIHsgZm9udC1zaXplOiAxcmVtOyB0ZXh0LWFsaWduOiBjZW50ZXI7IGxpbmUtaGVpZ2h0OiAyOHB4OyBoZWlnaHQ6IDI0cHg7IHdpZHRoOiAyNHB4OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGNvbG9yOiAjODA5NGFlOyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyBib3JkZXItcmFkaXVzOiAxMnB4OyB9CgoudGItY29sLWFjdGlvbiAubGluay1jcm9zcyAuaWNvbiwgLnRiLWNvbC1hY3Rpb24gLmxpbmstZG9uZSAuaWNvbiB7IHBhZGRpbmctbGVmdDogMXB4OyB9CgoudGItY29sLWFjdGlvbiAubGluay1jcm9zczpob3ZlciB7IGNvbG9yOiAjZTg1MzQ3OyBiYWNrZ3JvdW5kOiAjZmNlN2U1OyB9CgoudGItY29sLWFjdGlvbiAubGluay1kb25lOmhvdmVyIHsgY29sb3I6ICMxZWUwYWM7IGJhY2tncm91bmQ6ICNlMGZiZjM7IH0KCkBtZWRpYSAobWF4LXdpZHRoOiA1NzUuOThweCkgeyAudGFibGUtdWxvZ3MgdGgudGItY29sLWlwIHsgZGlzcGxheTogbm9uZTsgfQogIC50YWJsZS11bG9ncyB0ciB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtd3JhcDogd3JhcDsgd2lkdGg6IDEwMCU7IHBvc2l0aW9uOiByZWxhdGl2ZTsgcGFkZGluZzogMC41cmVtIDEuMjVyZW07IH0KICAudGFibGUtdWxvZ3MgdHI6bm90KDpmaXJzdC1jaGlsZCkgeyBib3JkZXItdG9wOiAxcHggc29saWQgI2RiZGZlYTsgfQogIC50YWJsZS11bG9ncyB0ciB0ZCB7IHBhZGRpbmc6IDA7IGJvcmRlcjogMDsgfQogIC50YWJsZS11bG9ncyB0ciB0ZDpmaXJzdC1jaGlsZCwgLnRhYmxlLXVsb2dzIHRyIHRkOmxhc3QtY2hpbGQgeyBwYWRkaW5nOiAwOyB9CiAgLnRhYmxlLXVsb2dzIHRyIHRkLCAudGFibGUtdWxvZ3MgdHIgdGggeyBmbGV4LWdyb3c6IDE7IH0KICAudGFibGUtdWxvZ3MgdHIgdGQudGItY29sLW9zIHsgd2lkdGg6IDEwMCU7IH0KICAudGFibGUtdWxvZ3MgdHIgdGgudGItY29sLW9zIHsgd2lkdGg6IDQwJTsgbWluLXdpZHRoOiAxNDJweDsgZmxleC1ncm93OiAwOyB9CiAgLnRhYmxlLXVsb2dzIHRyIHRkLnRiLWNvbC1pcCB7IHdpZHRoOiA0MCU7IG1pbi13aWR0aDogMTMwcHg7IGZsZXgtZ3JvdzogMDsgfQogIC50YWJsZS11bG9ncyB0ciAudGItY29sLWFjdGlvbiB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgcmlnaHQ6IDEwcHg7IHRvcDogNTAlOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7IHBhZGRpbmc6IDA7IH0KICAudGFibGUtdWxvZ3MgdGhlYWQgdHIgeyBwYWRkaW5nOiAwOyB9IH0KCi50b2dnbGUtY29udGVudCB7IG9wYWNpdHk6IDA7IHZpc2liaWxpdHk6IGhpZGRlbjsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IGNhbGMoMTAwJSArIDEwcHgpOyB6LWluZGV4OiA5OyBiYWNrZ3JvdW5kOiAjZmZmOyBib3JkZXItcmFkaXVzOiA0cHg7IGJveC1zaGFkb3c6IDAgM3B4IDEycHggMXB4IHJnYmEoNDMsIDU1LCA3MiwgMC4xNSk7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMHB4KTsgfQoKLnRvZ2dsZS1jb250ZW50LXJpZ2h0IHsgbGVmdDogYXV0bzsgcmlnaHQ6IDA7IH0KCi50b2dnbGUtY29udGVudC1ib3R0b20geyB0b3A6IGF1dG87IGJvdHRvbTogMDsgfQoKLnRvZ2dsZS1jb250ZW50LmNvbnRlbnQtYWN0aXZlIHsgdHJhbnNpdGlvbjogYWxsIC4ycyBlYXNlOyBvcGFjaXR5OiAxOyB2aXNpYmlsaXR5OiB2aXNpYmxlOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7IH0KCi50b2dnbGUtc2xpZGUgeyBwb3NpdGlvbjogZml4ZWQ7IHRvcDogMDsgei1pbmRleDogOTk5OyBtaW4td2lkdGg6IDI2MHB4OyBtYXgtd2lkdGg6IGNhbGMoMTAwJSAtIDQwcHgpOyB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gNjUwbXMgZWFzZTsgfQoKLnRvZ2dsZS1zbGlkZS1sZWZ0IHsgbGVmdDogMDsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTsgfQoKLnRvZ2dsZS1zbGlkZS1yaWdodCB7IHJpZ2h0OiAwOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7IH0KCi50b2dnbGUtc2xpZGUuY29udGVudC1hY3RpdmUgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwKSAhaW1wb3J0YW50OyB9CgoudG9nZ2xlLW92ZXJsYXkgeyBwb3NpdGlvbjogZml4ZWQ7IHRvcDogMDsgcmlnaHQ6IDA7IGJvdHRvbTogMDsgbGVmdDogMDsgYmFja2dyb3VuZDogcmdiYSgzMSwgNDMsIDU4LCAwLjIpOyB6LWluZGV4OiA5MDA7IGFuaW1hdGlvbjogb3ZlcmxheS1mYWRlLWluIC40cyBlYXNlIDE7IH0KCi50b2dnbGUtZXhwYW5kLWNvbnRlbnQgeyBkaXNwbGF5OiBub25lOyB9CgoudG9nZ2xlLWV4cGFuZC1jb250ZW50LmV4cGFuZGVkIHsgZGlzcGxheTogYmxvY2s7IH0KCi50b2dnbGUtZXhwYW5kIC5pbmFjdGl2ZS10ZXh0LCAudG9nZ2xlLW9wdCAuaW5hY3RpdmUtdGV4dCB7IGRpc3BsYXk6IGJsb2NrOyB9CgoudG9nZ2xlLWV4cGFuZC5hY3RpdmUgPiAuaW5hY3RpdmUtdGV4dCwgLnRvZ2dsZS1vcHQuYWN0aXZlID4gLmluYWN0aXZlLXRleHQgeyBkaXNwbGF5OiBub25lOyB9CgoudG9nZ2xlLWV4cGFuZCAuYWN0aXZlLXRleHQsIC50b2dnbGUtb3B0IC5hY3RpdmUtdGV4dCB7IGRpc3BsYXk6IG5vbmU7IH0KCi50b2dnbGUtZXhwYW5kLmFjdGl2ZSA+IC5hY3RpdmUtdGV4dCwgLnRvZ2dsZS1vcHQuYWN0aXZlID4gLmFjdGl2ZS10ZXh0IHsgZGlzcGxheTogYmxvY2s7IH0KCmJvZHkudG9nZ2xlLXNob3duIHsgb3ZlcmZsb3c6IGhpZGRlbjsgfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7IC5uay1ibG9jay10b29scy10b2dnbGUgLnRvZ2dsZS1leHBhbmQgeyBkaXNwbGF5OiBub25lOyB9CiAgLm5rLWJsb2NrLXRvb2xzLXRvZ2dsZSAudG9nZ2xlLWV4cGFuZC1jb250ZW50IHsgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgfSB9CgpAbWVkaWEgKG1heC13aWR0aDogNTc1Ljk4cHgpIHsgLm5rLWJsb2NrLXRvb2xzLXRvZ2dsZSAudG9nZ2xlLWV4cGFuZC1jb250ZW50IHsgcG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAwOyByaWdodDogMDsgdG9wOiAxMDAlOyB6LWluZGV4OiA5OTsgd2lkdGg6IDEwMHZ3OyBwYWRkaW5nOiAwIDE4cHggIWltcG9ydGFudDsgYmFja2dyb3VuZDogI2ZmZjsgbWFyZ2luLWxlZnQ6IC0xOHB4OyBtYXJnaW4tcmlnaHQ6IC0xOHB4OyBib3gtc2hhZG93OiAwIDIwcHggMzVweCByZ2JhKDAsIDAsIDAsIDAuMik7IH0KICAubmstYmxvY2stdG9vbHMtdG9nZ2xlIC5uay1ibG9jay10b29scyB7IHBhZGRpbmctdG9wOiAyMHB4OyBwYWRkaW5nLWJvdHRvbTogMjBweDsgfQogIC5uay1ibG9jay10b29scy10b2dnbGUgLm5rLWJsb2NrLXRvb2xzLW9wdCB7IG1hcmdpbi1sZWZ0OiBhdXRvOyB9IH0KCkBtZWRpYSAobWF4LXdpZHRoOiA1NzUuOThweCkgeyAuY2FyZC10b29scy10b2dnbGUgLmNhcmQtdGl0bGUtZ3JvdXAgeyBwb3NpdGlvbjogc3RhdGljOyB9CiAgLmNhcmQtdG9vbHMtdG9nZ2xlIC50b2dnbGUtd3JhcCAudG9nZ2xlLWNvbnRlbnQgeyBwYWRkaW5nOiAxLjI1cmVtIDFyZW07IHRyYW5zZm9ybTogdHJhbnNsYXRlKDApOyB0b3A6IDA7IGxlZnQ6IDA7IHJpZ2h0OiAwOyBib3R0b206IDA7IH0KICAuY2FyZC10b29scy10b2dnbGUgLnRvZ2dsZS13cmFwIC50b2dnbGUtY2xvc2UgeyBtYXJnaW4tcmlnaHQ6IGF1dG87IH0KICAuY2FyZC10b29scy10b2dnbGUgLnRvZ2dsZS13cmFwIC50b2dnbGUtY2xvc2UgLmJ0bi10cmlnZ2VyOmJlZm9yZSB7IG9wYWNpdHk6IDA7IH0KICAuY2FyZC10b29scy10b2dnbGUgLnRvZ2dsZS13cmFwIC50b2dnbGUtY2xvc2UgLmJ0bi10cmlnZ2VyOmhvdmVyOmJlZm9yZSB7IG9wYWNpdHk6IDE7IH0gfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7IC5jYXJkLXRvb2xzLXRvZ2dsZSB7IHotaW5kZXg6IDk7IH0KICAuY2FyZC10b29scy10b2dnbGUgLnRvZ2dsZS13cmFwIC50b2dnbGUgeyBkaXNwbGF5OiBub25lOyB9CiAgLmNhcmQtdG9vbHMtdG9nZ2xlIC50b2dnbGUtd3JhcCAudG9nZ2xlLWNvbnRlbnQgeyB6LWluZGV4OiA5OyBvcGFjaXR5OiAxOyB2aXNpYmlsaXR5OiB2aXNpYmxlOyBwb3NpdGlvbjogc3RhdGljOyBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgYm94LXNoYWRvdzogbm9uZTsgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCk7IH0KICAuY2FyZC10b29scy10b2dnbGUgLnRvZ2dsZS13cmFwIC50b2dnbGUtY2xvc2UgeyBkaXNwbGF5OiBub25lOyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgeyAudG9nZ2xlLWJyZWFrLXNtIHsgdHJhbnNpdGlvbjogbm9uZTsgb3BhY2l0eTogMTsgdmlzaWJpbGl0eTogdmlzaWJsZTsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApICFpbXBvcnRhbnQ7IHBvc2l0aW9uOiBzdGF0aWM7IGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OyBib3gtc2hhZG93OiBub25lOyB6LWluZGV4OiAxICFpbXBvcnRhbnQ7IH0KICAudG9nZ2xlLWJyZWFrLXNtLmNvbGxhcHNlIHsgZGlzcGxheTogYmxvY2s7IH0gfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7IC50b2dnbGUtYnJlYWstbWQgeyB0cmFuc2l0aW9uOiBub25lOyBvcGFjaXR5OiAxOyB2aXNpYmlsaXR5OiB2aXNpYmxlOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgIWltcG9ydGFudDsgcG9zaXRpb246IHN0YXRpYzsgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IGJveC1zaGFkb3c6IG5vbmU7IHotaW5kZXg6IDEgIWltcG9ydGFudDsgfQogIC50b2dnbGUtYnJlYWstbWQuY29sbGFwc2UgeyBkaXNwbGF5OiBibG9jazsgfSB9CgpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHsgLnRvZ2dsZS1icmVhay1sZyB7IHRyYW5zaXRpb246IG5vbmU7IG9wYWNpdHk6IDE7IHZpc2liaWxpdHk6IHZpc2libGU7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSAhaW1wb3J0YW50OyBwb3NpdGlvbjogc3RhdGljOyBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgYm94LXNoYWRvdzogbm9uZTsgei1pbmRleDogMSAhaW1wb3J0YW50OyB9CiAgLnRvZ2dsZS1icmVhay1sZy5jb2xsYXBzZSB7IGRpc3BsYXk6IGJsb2NrOyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsgLnRvZ2dsZS1icmVhay14bCB7IHRyYW5zaXRpb246IG5vbmU7IG9wYWNpdHk6IDE7IHZpc2liaWxpdHk6IHZpc2libGU7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSAhaW1wb3J0YW50OyBwb3NpdGlvbjogc3RhdGljOyBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgYm94LXNoYWRvdzogbm9uZTsgei1pbmRleDogMSAhaW1wb3J0YW50OyB9CiAgLnRvZ2dsZS1icmVhay14bC5jb2xsYXBzZSB7IGRpc3BsYXk6IGJsb2NrOyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiAxNTQwcHgpIHsgLnRvZ2dsZS1icmVhay14eGwgeyB0cmFuc2l0aW9uOiBub25lOyBvcGFjaXR5OiAxOyB2aXNpYmlsaXR5OiB2aXNpYmxlOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgIWltcG9ydGFudDsgcG9zaXRpb246IHN0YXRpYzsgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IGJveC1zaGFkb3c6IG5vbmU7IHotaW5kZXg6IDEgIWltcG9ydGFudDsgfQogIC50b2dnbGUtYnJlYWsteHhsLmNvbGxhcHNlIHsgZGlzcGxheTogYmxvY2s7IH0gfQoKLm5hdi1zd2l0Y2ggeyBkaXNwbGF5OiBpbmxpbmUtZmxleDsgbWFyZ2luLWJvdHRvbTogMS41cmVtOyBib3JkZXI6IDFweCBzb2xpZCAjZGJkZmVhOyBib3JkZXItcmFkaXVzOiAzMHB4OyBwYWRkaW5nOiA1cHg7IH0KCi5uYXYtc3dpdGNoIC5uYXYtbGluayB7IHBhZGRpbmc6IDVweCAxNnB4OyBsaW5lLWhlaWdodDogMjBweDsgYm9yZGVyLXJhZGl1czogMjBweDsgcG9zaXRpb246IHN0YXRpYzsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgZm9udC1mYW1pbHk6IFJvYm90bywgc2Fucy1zZXJpZjsgZm9udC13ZWlnaHQ6IDcwMDsgZm9udC1zaXplOiAxMnB4OyBjb2xvcjogIzgwOTRhZTsgfQoKLm5hdi1zd2l0Y2ggLm5hdi1saW5rLmFjdGl2ZSB7IGJhY2tncm91bmQ6ICMwOTcxZmU7IGNvbG9yOiAjZmZmOyB9CgoubmF2LXN3aXRjaCAubmF2LWxpbms6YWZ0ZXIgeyBkaXNwbGF5OiBub25lOyB9CgoubmF2LXN3aXRjaCAubmF2LWl0ZW0geyBwYWRkaW5nOiAwOyBtYXJnaW46IDAgMXB4OyB9CgoubmF2LXN3aXRjaCAubmF2LWl0ZW06bGFzdC1jaGlsZCB7IG1hcmdpbi1yaWdodDogMDsgfQoKLm5hdi1zd2l0Y2ggLm5hdi1pdGVtOmZpcnN0LWNoaWxkIHsgbWFyZ2luLWxlZnQ6IDA7IH0KCkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgeyAubmF2LXN3aXRjaCB7IG1hcmdpbi1ib3R0b206IDIuNXJlbTsgfSB9CgoubmF2LXN3aXRjaC1zMiB7IGRpc3BsYXk6IGlubGluZS1mbGV4OyBib3JkZXItcmFkaXVzOiA0cHg7IGJvcmRlcjogbm9uZTsgfQoKLm5hdi1zd2l0Y2gtczIgLm5hdi1saW5rIHsgcGFkZGluZzogLjI1cmVtIC43cmVtOyBsaW5lLWhlaWdodDogMjBweDsgYm9yZGVyLXJhZGl1czogMDsgcG9zaXRpb246IHN0YXRpYzsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgZm9udC1mYW1pbHk6IFJvYm90bywgc2Fucy1zZXJpZjsgZm9udC13ZWlnaHQ6IDcwMDsgZm9udC1zaXplOiAxMnB4OyBjb2xvcjogIzgwOTRhZTsgYm9yZGVyOiAxcHggc29saWQgI2RiZGZlYTsgfQoKLm5hdi1zd2l0Y2gtczIgLm5hdi1saW5rOmhvdmVyLCAubmF2LXN3aXRjaC1zMiAubmF2LWxpbms6Zm9jdXMgeyBjb2xvcjogIzUyNjQ4NDsgYmFja2dyb3VuZDogI2Y1ZjZmYTsgYm9yZGVyOiAxcHggc29saWQgI2RiZGZlYTsgfQoKLm5hdi1zd2l0Y2gtczIgLm5hdi1saW5rLmFjdGl2ZSB7IGNvbG9yOiAjMzY0YTYzOyBib3JkZXI6IDFweCBzb2xpZCAjZGJkZmVhOyBiYWNrZ3JvdW5kOiAjZjVmNmZhOyBib3gtc2hhZG93OiBpbnNldCAwIDAgNHB4IC0xcHggcmdiYSgxMjgsIDE0OCwgMTc0LCAwLjI1KTsgfQoKLm5hdi1zd2l0Y2gtczIgLm5hdi1saW5rOmFmdGVyIHsgZGlzcGxheTogbm9uZTsgfQoKLm5hdi1zd2l0Y2gtczIgLm5hdi1pdGVtIHsgcGFkZGluZzogMDsgbWFyZ2luOiAwOyB9CgoubmF2LXN3aXRjaC1zMiAubmF2LWl0ZW06bGFzdC1jaGlsZCB7IG1hcmdpbi1yaWdodDogMDsgfQoKLm5hdi1zd2l0Y2gtczIgLm5hdi1pdGVtOmxhc3QtY2hpbGQgLm5hdi1saW5rIHsgYm9yZGVyLXJhZGl1czogMCA0cHggNHB4IDA7IH0KCi5uYXYtc3dpdGNoLXMyIC5uYXYtaXRlbTpmaXJzdC1jaGlsZCB7IG1hcmdpbi1sZWZ0OiAwOyB9CgoubmF2LXN3aXRjaC1zMiAubmF2LWl0ZW06Zmlyc3QtY2hpbGQgLm5hdi1saW5rIHsgYm9yZGVyLXJhZGl1czogNHB4IDAgMCA0cHg7IH0KCi5uYXYtc3dpdGNoLXMyIC5uYXYtaXRlbTpub3QoOmZpcnN0LWNoaWxkKSB7IG1hcmdpbi1sZWZ0OiAtMXB4OyB9Cgoud2lkZ2V0LXRpdGxlIHsgZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyBhbGlnbi1pdGVtczogY2VudGVyOyBtYXJnaW4tYm90dG9tOiAwLjc1cmVtOyB9Cgoud2lkZ2V0LXRpdGxlID4gKiB7IG1hcmdpbi1ib3R0b206IDA7IH0KCi50ZXh0LWNlbnRlciAud2lkZ2V0LXRpdGxlIHsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IH0KCi5pcy10aGVtZSAud2lkZ2V0LXRpdGxlIGE6aG92ZXIgeyBjb2xvcjogI2ZmZjsgfQoKLnNpZGUtd2c6bm90KDpsYXN0LWNoaWxkKSB7IG1hcmdpbi1ib3R0b206IDIuNXJlbTsgfQoKLnNpZGUtd2ctdGl0bGUgeyBwYWRkaW5nLWJvdHRvbTogMC43NXJlbTsgfQoKLnNpZGUtd2cgLmJhY2stdG8geyBmb250LXNpemU6IDAuODc1cmVtOyBsaW5lLWhlaWdodDogMS4xOyBmb250LXdlaWdodDogNDAwOyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiAjODA5NGFlOyBkaXNwbGF5OiBpbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgfQoKLnNpZGUtd2cgLmJhY2stdG8gLmljb24geyBmb250LXNpemU6IDEuMjVyZW07IHdpZHRoOiAxLjc1cmVtOyBtYXJnaW4tdG9wOiAtM3B4OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH0KCi5uay1jayB7IGhlaWdodDogMjYwcHg7IH0KCi5uay1jay1zbSB7IGhlaWdodDogMTgwcHg7IH0KCi5uay1jazEgeyBoZWlnaHQ6IDEyMHB4OyB9CgoubmstY2syIHsgaGVpZ2h0OiAyNDBweDsgfQoKLm5rLWNrMyB7IGhlaWdodDogMTYwcHg7IH0KCi5uay1ja3R2IHsgaGVpZ2h0OiAzMDBweDsgb3ZlcmZsb3c6IGhpZGRlbjsgYm9yZGVyOiAxcHggc29saWQgI2RiZGZlYTsgYm9yZGVyLXJhZGl1czogNHB4OyB9CgoubmstY2t0diAudHJhZGluZ3ZpZXctd2lkZ2V0LWNvbnRhaW5lciB7IG92ZXJmbG93OiBoaWRkZW47IHBvc2l0aW9uOiByZWxhdGl2ZTsgdG9wOiA4cHg7IH0KCi5uay1ja3R2IC50cmFkaW5ndmlldy13aWRnZXQtY29udGFpbmVyID4gZGl2IHsgbWFyZ2luOiAtMXB4OyB9CgpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsgLm5rLWNrIHsgaGVpZ2h0OiAyNjBweDsgfQogIC5uay1jay1zbSB7IGhlaWdodDogMTgwcHg7IH0KICAubmstY2sxIHsgaGVpZ2h0OiAxMjBweDsgfQogIC5uay1jazIgeyBoZWlnaHQ6IDI0MHB4OyB9CiAgLm5rLWNrMyB7IGhlaWdodDogMjU4cHg7IH0gfQoKLm5rLXdnNi10aXRsZTpub3QoOmZpcnN0LWNoaWxkKSB7IG1hcmdpbi10b3A6IDEuNXJlbTsgfQoKLm5rLXdnNi10aXRsZTpub3QoOmxhc3QtY2hpbGQpIHsgbWFyZ2luLWJvdHRvbTogMS41cmVtOyB9Cgoubmstd2c2LXRleHQ6bm90KDpsYXN0LWNoaWxkKSB7IG1hcmdpbi1ib3R0b206IDEuNXJlbTsgfQoKLmFzaWRlLXdnICsgLmFzaWRlLXdnIHsgcGFkZGluZy10b3A6IDJyZW07IH0KCi5uay1tb2RhbC10aXRsZTpub3QoOmZpcnN0LWNoaWxkKSB7IG1hcmdpbi10b3A6IDEuNXJlbTsgfQoKLm5rLW1vZGFsLXRpdGxlOm5vdCg6bGFzdC1jaGlsZCkgeyBtYXJnaW4tYm90dG9tOiAxLjVyZW07IH0KCi5uay1tb2RhbC10aXRsZS50aXRsZSB7IGZvbnQtc2l6ZTogMS41cmVtOyB9CgoubmstbW9kYWwtdGV4dDpub3QoOmxhc3QtY2hpbGQpIHsgbWFyZ2luLWJvdHRvbTogMS41cmVtOyB9CgoubmstbW9kYWwtdGV4dCAubGVhZCB7IGZvbnQtc2l6ZTogMS4xcmVtOyBsaW5lLWhlaWdodDogMS41OyB9CgoubmstbW9kYWwtdGV4dCAuc3ViLXRleHQgeyBmb250LXNpemU6IDE0cHg7IH0KCi5uay1tb2RhbC1hY3Rpb24geyBtYXJnaW4tdG9wOiAxLjVyZW07IH0KCi5uay1tb2RhbC1hY3Rpb24tc20geyBtYXJnaW4tdG9wOiAxcmVtOyB9CgoubmstbW9kYWwtYWN0aW9uLW1kIHsgbWFyZ2luLXRvcDogMnJlbTsgfQoKLm5rLW1vZGFsLWFjdGlvbi1sZyB7IG1hcmdpbi10b3A6IDIuMjVyZW07IH0KCi5tb2RhbC1ib2R5LWxnIC50YWItY29udGVudCB7IG1hcmdpbi10b3A6IDJyZW07IH0KCkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgeyAubmstbW9kYWwtYWN0aW9uLW1kIHsgbWFyZ2luLXRvcDogMi41cmVtOyB9CiAgLm5rLW1vZGFsLWFjdGlvbi1sZyB7IG1hcmdpbi10b3A6IDMuMjVyZW07IH0gfQoKW2RhdGEtdG9nZ2xlPSJtb2RhbCJdIHsgY3Vyc29yOiBwb2ludGVyOyB9Cgouc2VhcmNoLXdyYXAgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgYm90dG9tOiAwOyBsZWZ0OiAwOyByaWdodDogMDsgb3BhY2l0eTogMDsgYmFja2dyb3VuZDogI2ZmZjsgdHJhbnNpdGlvbjogb3BhY2l0eSAuNHM7IGJvcmRlci1yYWRpdXM6IDZweDsgcG9pbnRlci1ldmVudHM6IG5vbmU7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IH0KCi5zZWFyY2gtd3JhcC5hY3RpdmUgeyBvcGFjaXR5OiAxOyB6LWluZGV4OiA5OyBwb2ludGVyLWV2ZW50czogYXV0bzsgfQoKLnNlYXJjaC13cmFwLWV4dGVuZCB7IG1hcmdpbi10b3A6IC0xcmVtOyBsZWZ0OiAtMnB4OyByaWdodDogLTJweDsgfQoKLnNlYXJjaC10b2dnbGUgeyB0cmFuc2l0aW9uOiBhbGwgLjRzOyBvcGFjaXR5OiAxOyB9Cgouc2VhcmNoLXRvZ2dsZS5hY3RpdmUgeyBvcGFjaXR5OiAwOyB9Cgouc2VhcmNoLWNvbnRlbnQgeyBwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAxMDAlOyB9Cgouc2VhcmNoLWNvbnRlbnQgLmZvcm0tY29udHJvbCwgLnNlYXJjaC1jb250ZW50IC5kdWFsLWxpc3Rib3ggLmR1YWwtbGlzdGJveF9fc2VhcmNoLCAuZHVhbC1saXN0Ym94IC5zZWFyY2gtY29udGVudCAuZHVhbC1saXN0Ym94X19zZWFyY2ggeyBwYWRkaW5nLWxlZnQ6IGNhbGMoMi4xMjVyZW0gKyAycHgpOyBwYWRkaW5nLXJpZ2h0OiBjYWxjKDIuMTI1cmVtICsgMnB4KTsgfQoKLnNlYXJjaC1jb250ZW50IC5mb3JtLWNvbnRyb2wtc20geyBwYWRkaW5nLWxlZnQ6IGNhbGMoMS43NXJlbSArIDJweCk7IHBhZGRpbmctcmlnaHQ6IGNhbGMoMS43NXJlbSArIDJweCk7IH0KCi5zZWFyY2gtYmFjaywgLnNlYXJjaC1zdWJtaXQgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogNTAlOyB9Cgouc2VhcmNoLWJhY2s6Zm9jdXMsIC5zZWFyY2gtc3VibWl0OmZvY3VzIHsgYm94LXNoYWRvdzogbm9uZTsgfQoKLnNlYXJjaC1iYWNrIHsgbGVmdDogMDsgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTAuMjVyZW0sIC01MCUpOyB9Cgouc2VhcmNoLXN1Ym1pdCB7IHJpZ2h0OiAwOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLjVyZW0sIC01MCUpOyB9Cgouc2VhcmNoLXN1Ym1pdDpob3ZlciB7IGNvbG9yOiAjMDk3MWZlOyB9Cgoubmstc2VhcmNoLWJveCB7IG1hcmdpbi10b3A6IDEuNXJlbTsgbWFyZ2luLWJvdHRvbTogMS4yNXJlbTsgfQoKLm5rLXNlYXJjaC1ib3ggLmZvcm0taWNvbiB7IGhlaWdodDogMTAwJTsgYm9yZGVyOiBub25lOyBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgd2lkdGg6IDMuNXJlbTsgfQoKLm5rLXNlYXJjaC1ib3ggLmZvcm0tY29udHJvbCwgLm5rLXNlYXJjaC1ib3ggLmR1YWwtbGlzdGJveCAuZHVhbC1saXN0Ym94X19zZWFyY2gsIC5kdWFsLWxpc3Rib3ggLm5rLXNlYXJjaC1ib3ggLmR1YWwtbGlzdGJveF9fc2VhcmNoIHsgYm9yZGVyLXJhZGl1czogMS41cmVtOyBwYWRkaW5nLWxlZnQ6IDEuMjVyZW07IHBhZGRpbmctcmlnaHQ6IDEuNXJlbTsgfQoKLm5rLWJsb2NrICsgLm5rLWJsb2NrLCAubmstYmxvY2sgKyAubmstYmxvY2staGVhZCB7IHBhZGRpbmctdG9wOiAyOHB4OyB9CgoubmstYmxvY2sgKyAubmstYmxvY2stbGcsIC5uay1ibG9jayArIC5uay1ibG9jay1oZWFkLWxnIHsgcGFkZGluZy10b3A6IDIuNXJlbTsgfQoKLm5hdi10YWJzICsgLm5rLWJsb2NrIHsgcGFkZGluZy10b3A6IDEuNXJlbTsgfQoKLm5hdi10YWJzICsgLm5rLWJsb2NrLXNtIHsgcGFkZGluZy10b3A6IDFyZW07IH0KCi5uay1ibG9jay1hcmVhIHsgZGlzcGxheTogZmxleDsgfQoKLm5rLWJsb2NrLWFyZWEtY29sdW1uIHsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgfQoKLm5rLWJsb2NrLWJldHdlZW4geyBkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IGFsaWduLWl0ZW1zOiBjZW50ZXI7IH0KCi5uay1ibG9jay1iZXR3ZWVuID4gLnRpdGxlOmZpcnN0LWNoaWxkIHsgbWFyZ2luLWJvdHRvbTogMDsgfQoKLm5rLWJsb2NrLW1pZGRsZSB7IG1hcmdpbi10b3A6IGF1dG87IG1hcmdpbi1ib3R0b206IGF1dG87IH0KCi5uay1ibG9jay1oZWFkIHsgcG9zaXRpb246IHJlbGF0aXZlOyBwYWRkaW5nLWJvdHRvbTogMS4yNXJlbTsgfQoKLm5rLWJsb2NrLWhlYWQ6b25seS1jaGlsZCB7IHBhZGRpbmctYm90dG9tOiAwOyB9CgoubmstYmxvY2staGVhZCBoMjpub3QoOmxhc3QtY2hpbGQpIHsgbWFyZ2luLWJvdHRvbTogMXJlbTsgfQoKLm5rLWJsb2NrLWhlYWQtc3ViIHsgZm9udC1zaXplOiAxcmVtOyBsaW5lLWhlaWdodDogMS41cmVtOyBtYXJnaW4tYm90dG9tOiAuNXJlbTsgY29sb3I6ICM4MDk0YWU7IGZvbnQtd2VpZ2h0OiA0MDA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgfQoKLm5rLWJsb2NrLWhlYWQtc3ViIC5iYWNrLXRvIHsgY29sb3I6IGluaGVyaXQ7IGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyB9CgoubmstYmxvY2staGVhZC1zdWIgLmJhY2stdG8gLmljb24geyBmb250LXNpemU6IDEuNXJlbTsgd2lkdGg6IDJyZW07IG1hcmdpbi10b3A6IC0zcHg7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgfQoKLm5rLWJsb2NrLWhlYWQtc3ViIC5kcm9wZG93biB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgcmlnaHQ6IC04cHg7IHRvcDogLTZweDsgfQoKLm5rLWJsb2NrLWhlYWQteHMgeyBwYWRkaW5nLWJvdHRvbTogLjc1cmVtOyB9CgoubmstYmxvY2staGVhZC1zbSB7IHBhZGRpbmctYm90dG9tOiAxcmVtOyB9CgoubmstYmxvY2staGVhZC1sZyB7IHBhZGRpbmctYm90dG9tOiAxLjVyZW07IH0KCi5uay1ibG9jay1oZWFkICsgLm5hdi10YWJzIHsgbWFyZ2luLXRvcDogLTFyZW07IH0KCi5uay1jb250ZW50LWJvZHkgPiAubmstYmxvY2staGVhZDpmaXJzdC1jaGlsZCB7IHBhZGRpbmctYm90dG9tOiAxLjc1cmVtOyB9CgoubmstYmxvY2staGVhZCAubmstYmxvY2stdGV4dCB7IG1hcmdpbi10b3A6IDEuNXJlbTsgfQoKLm5rLWJsb2NrLWhlYWQgLm5rLWJsb2NrLXRleHQgKyAuYnRuLCAubmstYmxvY2staGVhZCAuZHVhbC1saXN0Ym94IC5uay1ibG9jay10ZXh0ICsgLmR1YWwtbGlzdGJveF9fYnV0dG9uLCAuZHVhbC1saXN0Ym94IC5uay1ibG9jay1oZWFkIC5uay1ibG9jay10ZXh0ICsgLmR1YWwtbGlzdGJveF9fYnV0dG9uIHsgbWFyZ2luLXRvcDogMS41cmVtOyB9CgoubmstYmxvY2stdG9vbHMgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyB9CgoubmstYmxvY2stdG9vbHMgPiAqIHsgZGlzcGxheTogaW5saW5lLWZsZXg7IH0KCi5uay1ibG9jay1kZXMgeyBjb2xvcjogIzUyNjQ4NDsgfQoKLm5rLWJsb2NrLWRlcyBzdHJvbmcgeyBjb2xvcjogIzM2NGE2MzsgfQoKLm5rLWJsb2NrLWRlcyAuaWNvbiB7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH0KCi5uay1ibG9jay1jb250ZW50ICsgLm5rLWJsb2NrLWhlYWQgeyBwYWRkaW5nLXRvcDogMnJlbTsgfQoKLm5rLWJsb2NrLWNvbnRlbnQgKyAubmstYmxvY2staGVhZC1zbSB7IHBhZGRpbmctdG9wOiAxLjVyZW07IH0KCi5uay1ibG9jay1jb250ZW50LWhlYWQ6bm90KDpsYXN0LWNoaWxkKSB7IG1hcmdpbi1ib3R0b206IDFyZW07IH0KCi5uay1ibG9jay10aXRsZS1ncm91cCB7IGRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgYWxpZ24taXRlbXM6IGNlbnRlcjsgfQoKLm5rLWJsb2NrLXRpdGxlLWdyb3VwIC50aXRsZSB7IG1hcmdpbi1ib3R0b206IDA7IH0KCi5uay1ibG9jay10aXRsZS1ncm91cDpub3QoOmxhc3QtY2hpbGQpIHsgbWFyZ2luLWJvdHRvbTogLjVyZW07IH0KCkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgeyAubmstYmxvY2staGVhZC1sZyB7IHBhZGRpbmctYm90dG9tOiAyLjVyZW07IH0KICAubmstYmxvY2stY29udGVudCArIC5uay1ibG9jay1oZWFkIHsgcGFkZGluZy10b3A6IDRyZW07IH0KICAubmstYmxvY2stY29udGVudCArIC5uay1ibG9jay1oZWFkLXNtIHsgcGFkZGluZy10b3A6IDIuNXJlbTsgfSB9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsgLm5rLWNvbnRlbnQtYm9keSA+IC5uay1ibG9jay1oZWFkOmZpcnN0LWNoaWxkIHsgcGFkZGluZy1ib3R0b206IDIuNXJlbTsgfQogIC5uay1jb250ZW50LWJvZHkgPiAubmstYmxvY2staGVhZC1zbTpmaXJzdC1jaGlsZCB7IHBhZGRpbmctYm90dG9tOiAxLjc1cmVtOyB9CiAgLm5hdi10YWJzICsgLm5rLWJsb2NrIHsgcGFkZGluZy10b3A6IDIuNXJlbTsgfQogIC5uYXYtdGFicyArIC5uay1ibG9jay1zbSB7IHBhZGRpbmctdG9wOiAycmVtOyB9CiAgLm5hdi10YWJzICsgLm5rLWJsb2NrLXhzIHsgcGFkZGluZy10b3A6IDEuMjVyZW07IH0KICAubmstYmxvY2stdGV4dCBoNSwgLm5rLWJsb2NrLXRleHQgaDYgeyBmb250LXNpemU6IDFyZW07IH0gfQoKQG1lZGlhIChtYXgtd2lkdGg6IDc2Ny45OHB4KSB7IC5uay1ibG9jay10b29scyAub3B0LW1lbnUtbWQgeyBvcmRlcjogMTAwOyBtYXJnaW4tbGVmdDogYXV0bzsgfSB9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsgLm5rLWJsb2NrLWJldHdlZW4tbWQgeyBkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IGFsaWduLWl0ZW1zOiBjZW50ZXI7IH0gfQoKLm5rLWJsb2NrLXN1YmhlYWQgeyBwYWRkaW5nLWJvdHRvbTogLjVyZW07IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGJkZmVhOyB9CgoubmstZmVhdHVyZS1jZW50ZXIgeyB0ZXh0LWFsaWduOiBjZW50ZXI7IH0KCi5maWx0ZXItd2cgbGFiZWwub3ZlcmxpbmUtdGl0bGUgeyBtYXJnaW4tYm90dG9tOiAuNXJlbTsgfQoKLmNoYW5nZSB7IGxpbmUtaGVpZ2h0OiAxOyB9CgouY2hhbmdlIC5zaWduIHsgZm9udC1mYW1pbHk6ICJOaW9pY29uIjsgfQoKLmNoYW5nZSAuc2lnbjpiZWZvcmUgeyBjb250ZW50OiAiIjsgfQoKLmNoYW5nZS51cCB7IGNvbG9yOiAjMWVlMGFjICFpbXBvcnRhbnQ7IH0KCi5jaGFuZ2UudXAgLnNpZ246YmVmb3JlIHsgY29udGVudDogIu6kvCI7IH0KCi5jaGFuZ2UuZG93biB7IGNvbG9yOiAjZTg1MzQ3ICFpbXBvcnRhbnQ7IH0KCi5jaGFuZ2UuZG93biAuc2lnbjpiZWZvcmUgeyBjb250ZW50OiAi7qS5IjsgfQoKLm5rLWtub2IgPiBkaXYgeyBwb3NpdGlvbjogcmVsYXRpdmU7IGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50OyB9Cgoua25vYiB7IGhlaWdodDogMTAwJSAhaW1wb3J0YW50OyBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7IGZvbnQtc2l6ZTogMS41cmVtICFpbXBvcnRhbnQ7IH0KCi5rbm9iLWhhbGYgeyBoZWlnaHQ6IDUwJSAhaW1wb3J0YW50OyBmb250LXNpemU6IDEuMjVyZW0gIWltcG9ydGFudDsgfQoKW2NsYXNzKj0ia25vYiJdIHsgdGV4dC1hbGlnbjogY2VudGVyOyBwb2ludGVyLWV2ZW50czogbm9uZTsgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgZm9udC13ZWlnaHQ6IDQwMCAhaW1wb3J0YW50OyBmb250LWZhbWlseTogUm9ib3RvLCBzYW5zLXNlcmlmICFpbXBvcnRhbnQ7IGNvbG9yOiAjMzY0YTYzICFpbXBvcnRhbnQ7IG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7IGxlZnQ6IDA7IGJvcmRlcjogbm9uZTsgfQoKW2NsYXNzKj0ia25vYiJdOmZvY3VzIHsgb3V0bGluZTogbm9uZTsgfQoKLnN0YXRzIHsgcGFkZGluZzogMCAwIDFyZW07IH0KCkBtZWRpYSAobWluLXdpZHRoOiAxNTQwcHgpIHsgLm5rLWNvbnRlbnQtc2lkZWJhciAuc3RhdHMgeyBwYWRkaW5nOiAxLjI1cmVtIDEuNXJlbSAxcmVtOyB9IH0KCi5jb2xsYXBzZS1zaG93biB7IGRpc3BsYXk6IGlubGluZS1ibG9jayAhaW1wb3J0YW50OyB9CgouY29sbGFwc2VkIC5jb2xsYXBzZS1zaG93biB7IGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfQoKLmNvbGxhcHNlLWhpZGRlbiB7IGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfQoKLmNvbGxhcHNlZCAuY29sbGFwc2UtaGlkZGVuIHsgZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7IH0KCi5jbGlwYm9hcmQtaW5pdCB7IGN1cnNvcjogcG9pbnRlcjsgfQoKLmNsaXBib2FyZC1zdWNjZXNzIC5jbGlwYm9hcmQtaW5pdCB7IGNvbG9yOiAjMWJjYTliOyB9CgouY2xpcGJvYXJkLXRleHQgeyBmb250LXNpemU6IDEycHg7IH0KCi5jbGlwYm9hcmQtc3VjY2VzcyAuZm9ybS1jb250cm9sOmZvY3VzLCAuY2xpcGJvYXJkLXN1Y2Nlc3MgLmR1YWwtbGlzdGJveCAuZHVhbC1saXN0Ym94X19zZWFyY2g6Zm9jdXMsIC5kdWFsLWxpc3Rib3ggLmNsaXBib2FyZC1zdWNjZXNzIC5kdWFsLWxpc3Rib3hfX3NlYXJjaDpmb2N1cyB7IGJvcmRlci1jb2xvcjogI2RiZGZlYTsgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMXB4IHJnYmEoMTYsIDI1LCAzNiwgMC4wNzUpOyB9CgoubmstbmV3cy1pdGVtIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgfQoKLm5rLW5ld3MtaWNvbiB7IHdpZHRoOiAycmVtOyBkaXNwbGF5OiBpbmxpbmUtZmxleDsgZmxleC1zaHJpbms6IDA7IH0KCi5uay1uZXdzLWljb24gLmljb24geyBmb250LXNpemU6IDI0cHg7IGNvbG9yOiAjMDk3MWZlOyB9CgouaXMtdGhlbWUgLm5rLW5ld3MtaWNvbiAuaWNvbiB7IGNvbG9yOiAjMjI4MGZlOyB9CgoubmstbmV3cy1pY29uIGltZyB7IHdpZHRoOiAyNHB4OyB9CgoubmstbmV3cy10ZXh0IHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAxLjVyZW0pOyB9CgoubmstbmV3cy10ZXh0IHAgeyBmb250LXNpemU6IDEzcHg7IG1hcmdpbi1ib3R0b206IDA7IGNvbG9yOiAjNTI2NDg0OyBmb250LXdlaWdodDogNTAwOyB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsgb3ZlcmZsb3c6IGhpZGRlbjsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgd2lkdGg6IGNhbGMoMTAwJSAtIDJyZW0pOyB9CgoubmstbmV3cy10ZXh0IHAgc3BhbiB7IGNvbG9yOiAjODA5NGFlOyBmb250LXdlaWdodDogNDAwOyB9CgouaXMtZGFyayAubmstbmV3cy10ZXh0IHAgeyBjb2xvcjogIzkwYTFiODsgfQoKLmlzLWRhcmsgLm5rLW5ld3MtdGV4dCBwIHNwYW4geyBjb2xvcjogcmdiYSgxMjgsIDE0OCwgMTc0LCAwLjkpOyB9CgouaXMtdGhlbWUgLm5rLW5ld3MtdGV4dCBwIHsgY29sb3I6ICNjM2RjZmY7IH0KCi5pcy10aGVtZSAubmstbmV3cy10ZXh0IHAgc3BhbiB7IGNvbG9yOiByZ2JhKDE2OSwgMjA1LCAyNTUsIDAuOCk7IH0KCi5uay1uZXdzLXRleHQgLmljb24geyBjb2xvcjogIzgwOTRhZTsgbWFyZ2luLWxlZnQ6IC4yNXJlbTsgfQoKLmlzLWRhcmsgLm5rLW5ld3MtdGV4dCAuaWNvbiB7IGNvbG9yOiAjODA5NGFlOyB9CgouaXMtdGhlbWUgLm5rLW5ld3MtdGV4dCAuaWNvbiB7IGNvbG9yOiAjYTljZGZmOyB9CgoubmstbmV3cy1pdGVtOmhvdmVyIC5uay1uZXdzLXRleHQgLmljb24geyBjb2xvcjogIzA5NzFmZTsgfQoKLmxhbmd1YWdlLWxpc3QgbGk6bm90KDpsYXN0LWNoaWxkKSAubGFuZ3VhZ2UtaXRlbSB7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWNmMmZmOyB9CgoubGFuZ3VhZ2UtaXRlbSB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IHBhZGRpbmc6IDEycHggMjBweDsgY29sb3I6ICMzNDQzNTc7IHRyYW5zaXRpb246IGFsbCAuNHM7IH0KCi5sYW5ndWFnZS1pdGVtOmhvdmVyIHsgY29sb3I6ICMzYzRkNjI7IGJhY2tncm91bmQ6ICNlYmVlZjI7IH0KCi5sYW5ndWFnZS1uYW1lIHsgZm9udC1zaXplOiAxMnB4OyB9CgoubGFuZ3VhZ2UtZmxhZyB7IHdpZHRoOiAyNHB4OyBtYXJnaW4tcmlnaHQ6IDEycHg7IH0KCi5lbnRyeSBpbWcgeyBib3JkZXItcmFkaXVzOiA0cHg7IH0KCi5lbnRyeSBpbWcgKyBwLCAuZW50cnkgaW1nICsgaDIsIC5lbnRyeSBpbWcgKyBoMywgLmVudHJ5IGltZyArIGg0LCAuZW50cnkgaW1nICsgaDUsIC5lbnRyeSBpbWcgKyBoNiwgLmVudHJ5IGltZyArIHVsLCAuZW50cnkgaW1nICsgb2wgeyBtYXJnaW4tdG9wOiAycmVtOyB9CgouZW50cnkgcCArIGltZyB7IG1hcmdpbi10b3A6IDFyZW07IH0KCi5lbnRyeSBwICsgaDIsIC5lbnRyeSBwICsgaDMsIC5lbnRyeSBwICsgaDQsIC5lbnRyeSBwICsgaDUsIC5lbnRyeSBwICsgaDYgeyBwYWRkaW5nLXRvcDogMC43NXJlbTsgfQoKcCA+IHNwYW4gPiAuaWNvbi5uaSB7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH0KCi5idG4tdHJpZ2dlciArIC5kcm9wZG93bi1tZW51LXJpZ2h0LCAuYnRuLXRyaWdnZXIgKyAuZHJvcGRvd24tbWVudS1sZWZ0IHsgbWFyZ2luOiAtLjc1cmVtIDA7IH0KCi5idG4tdHJpZ2dlciArIC5kcm9wZG93bi1tZW51LXJpZ2h0IHsgbWFyZ2luLXJpZ2h0OiAxNnB4OyB9CgouYnRuLXRyaWdnZXIgKyAuZHJvcGRvd24tbWVudS1sZWZ0IHsgbWFyZ2luLWxlZnQ6IDE2cHg7IH0KCkBtZWRpYSAobWF4LXdpZHRoOiA0MjBweCkgeyAuYnRuLXRyaWdnZXIgKyAuZHJvcGRvd24tbWVudS14bCwgLmJ0bi10cmlnZ2VyICsgLmRyb3Bkb3duLW1lbnUtbGcsIC5idG4tdHJpZ2dlciArIC5kcm9wZG93bi1tZW51LW1kIHsgbWFyZ2luLWxlZnQ6IDE2cHg7IG1hcmdpbi10b3A6IC4yNXJlbTsgfSB9CgouYnEtbm90ZS1pdGVtOm5vdCg6Zmlyc3QtY2hpbGQpIHsgbWFyZ2luLXRvcDogMS43NXJlbTsgfQoKLmJxLW5vdGUtdGV4dCB7IHBhZGRpbmc6IDFyZW0gMS4yNXJlbTsgYmFja2dyb3VuZDogI2Y1ZjZmYTsgYm9yZGVyLXJhZGl1czogNHB4OyB9CgouYnEtbm90ZS1tZXRhIHsgZm9udC1zaXplOiAxMnB4OyBjb2xvcjogIzgwOTRhZTsgbWFyZ2luLXRvcDogLjc1cmVtOyB9CgouYnEtbm90ZS1tZXRhIHNwYW4gPiBzcGFuIHsgY29sb3I6ICM1MjY0ODQ7IH0KCi5icS1ub3RlLW1ldGEgLmxpbmsgeyBtYXJnaW4tbGVmdDogLjc1cmVtOyB9CgouYnEtbm90ZS1zZXAgeyBoZWlnaHQ6IC4yNXJlbTsgZGlzcGxheTogYmxvY2s7IHZpc2liaWxpdHk6IGhpZGRlbjsgcGFkZGluZzogMCAwLjI1cmVtOyB9CgouYnEtbm90ZS1ieSB7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7IC5icS1ub3RlLXRleHQgeyBwYWRkaW5nOiAxLjI1cmVtIDEuNXJlbTsgfQogIC5icS1ub3RlLXNlcCB7IGhlaWdodDogYXV0bzsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB2aXNpYmlsaXR5OiB2aXNpYmxlOyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIGFuZCAobWF4LXdpZHRoOiAxMzU5cHgpIHsgLmZvcm0tc2V0dGluZ3MgLmNvbC1sZy01LCAuZm9ybS1zZXR0aW5ncyAuY29sLWxnLTcgeyBmbGV4OiAwIDAgMTAwJTsgbWF4LXdpZHRoOiAxMDAlOyB9IH0KCi5lbWJlZC1yZXNwb25zaXZlIHsgYm9yZGVyLXJhZGl1czogNHB4OyB9Cgoubmstc2xpZGVyIHsgcG9zaXRpb246IHJlbGF0aXZlOyB9Cgoubmstc2xpZGVyLXMxIHsgd2lkdGg6IDI5MHB4OyBtYXgtd2lkdGg6IDEwMCU7IH0KCi5uay1zbGlkZXItczEgLnNsaWNrLWRvdHMgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHJpZ2h0OiAxLjI1cmVtOyB0b3A6IDEuNXJlbTsgfQoKLm5rLXNsaWRlci1zMiAuc2xpZGVyLWFycm93cyA+IGRpdiB7IHBhZGRpbmc6IC41cmVtIDA7IH0KCi5wcm9qZWN0LWhlYWQgeyBkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IG1hcmdpbi1ib3R0b206IDEuMjVyZW07IH0KCi5wcm9qZWN0LXRpdGxlIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgbWFyZ2luLXJpZ2h0OiAwLjc1cmVtOyB9CgoucHJvamVjdC10aXRsZSAudXNlci1hdmF0YXIgeyBtYXJnaW4tcmlnaHQ6IDFyZW07IH0KCi5wcm9qZWN0LXRpdGxlIC50aXRsZSB7IGZvbnQtc2l6ZTogMC45NzVyZW07IH0KCi5wcm9qZWN0LXRpdGxlIC50aXRsZTpub3QoOmxhc3QtY2hpbGQpIHsgbWFyZ2luLWJvdHRvbTogMC4xMjVyZW07IH0KCi5wcm9qZWN0LWRldGFpbHMgeyBtYXJnaW4tYm90dG9tOiAxcmVtOyB9CgoucHJvamVjdC1wcm9ncmVzcyB7IG1hcmdpbi1ib3R0b206IDFyZW07IH0KCi5wcm9qZWN0LXByb2dyZXNzLWRldGFpbHMgeyBkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IG1hcmdpbi1ib3R0b206IDAuNXJlbTsgfQoKLnByb2plY3QtcHJvZ3Jlc3MtdGFzayB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGNvbG9yOiAjODA5NGFlOyB9CgoucHJvamVjdC1wcm9ncmVzcy10YXNrIC5pY29uIHsgZm9udC1zaXplOiAxcmVtOyBsaW5lLWhlaWdodDogMS41cmVtOyBtYXJnaW4tcmlnaHQ6IDAuMjVyZW07IH0KCi5wcm9qZWN0LXByb2dyZXNzLXBlcmNlbnQgeyBjb2xvcjogIzUyNjQ4NDsgZm9udC13ZWlnaHQ6IDUwMDsgfQoKLnByb2plY3QtbWV0YSB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgfQoKLnByb2plY3QtdXNlcnMgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyB9CgoucHJvamVjdC1saXN0LXByb2dyZXNzIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgfQoKLnByb2plY3QtbGlzdC1wcm9ncmVzcyAucHJvZ3Jlc3MgeyB3aWR0aDogMTAwcHg7IG1hcmdpbi1yaWdodDogMC41cmVtOyB9CgpAbWVkaWEgKG1pbi13aWR0aDogMTU0MHB4KSB7IC5wcm9qZWN0LWxpc3QtcHJvZ3Jlc3MgLnByb2dyZXNzIHsgd2lkdGg6IDE0MHB4OyBtYXJnaW4tcmlnaHQ6IDFyZW07IH0gfQoKLnRlYW0geyBwb3NpdGlvbjogcmVsYXRpdmU7IH0KCi50ZWFtLWluZm8geyBwYWRkaW5nOiAxcmVtIDAgMS4yNXJlbTsgfQoKLnRlYW0taW5mbyBsaSB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgZm9udC1zaXplOiAuOTM3NXJlbTsgbGluZS1oZWlnaHQ6IDEuNzVyZW07IH0KCi50ZWFtLWluZm8gbGkgc3BhbjpmaXJzdC1jaGlsZCB7IGNvbG9yOiAjODA5NGFlOyB9CgoudGVhbS1pbmZvIGxpIHNwYW46bGFzdC1jaGlsZCB7IGNvbG9yOiAjNTI2NDg0OyB9CgoudGVhbS1zdGF0dXMgeyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDA7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyOyBoZWlnaHQ6IDIwcHg7IHdpZHRoOiAyMHB4OyBib3JkZXItcmFkaXVzOiA1MCU7IH0KCi50ZWFtLW9wdGlvbnMgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogLS4yNXJlbTsgcmlnaHQ6IC0uMjVyZW07IH0KCi50ZWFtLWRldGFpbHMgeyBwYWRkaW5nLXRvcDogLjVyZW07IHRleHQtYWxpZ246IGNlbnRlcjsgbWF4LXdpZHRoOiAyMDBweDsgbWFyZ2luOiAwIGF1dG87IH0KCi50ZWFtLXN0YXRpc3RpY3MgeyBkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDsgdGV4dC1hbGlnbjogY2VudGVyOyBwYWRkaW5nOiAxcmVtIDAgMS41cmVtOyB9CgoudGVhbS1zdGF0aXN0aWNzIGxpIHNwYW4geyBkaXNwbGF5OiBibG9jazsgfQoKLnRlYW0tc3RhdGlzdGljcyBsaSBzcGFuOmZpcnN0LWNoaWxkIHsgZm9udC1zaXplOiAxLjEyNXJlbTsgY29sb3I6ICMxYzJiNDY7IH0KCi50ZWFtLXN0YXRpc3RpY3MgbGkgc3BhbjpsYXN0LWNoaWxkIHsgZm9udC1zaXplOiAuODc1cmVtOyBjb2xvcjogIzgwOTRhZTsgfQoKLnRlYW0tdmlldyB7IGRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogY2VudGVyOyBwYWRkaW5nLWJvdHRvbTogMC4yNXJlbTsgfQoKLyoqIDA2LiBQQUdFUyAqLwoubmstYXV0aC1ib2R5IHsgcGFkZGluZzogMS4yNXJlbTsgfQoKLm5rLWF1dGgtZm9vdGVyIHsgcGFkZGluZy1ib3R0b206IDQwcHg7IH0KCi5uay1hdXRoLWJvZHksIC5uay1hdXRoLWZvb3RlciB7IHdpZHRoOiAxMDAlOyBtYXgtd2lkdGg6IDQyMHB4OyBtYXJnaW4tbGVmdDogYXV0bzsgbWFyZ2luLXJpZ2h0OiBhdXRvOyB9CgoubmstYXV0aC1mb290ZXIgeyBwYWRkaW5nLWxlZnQ6IDEuMjVyZW07IHBhZGRpbmctcmlnaHQ6IDEuMjVyZW07IH0KCi5uay1hdXRoLWZvb3Rlci1mdWxsIHsgbWFyZ2luLXRvcDogMDsgfQoKQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7IC5uay1hdXRoLWNvbnRhaW5lciB7IHdpZHRoOiA0NSU7IH0gfQoKQG1lZGlhIChtaW4td2lkdGg6IDE1NDBweCkgeyAubmstc3BsaXQgLm5rLWF1dGgtYm9keSwgLm5rLXNwbGl0IC5uay1hdXRoLWZvb3RlciB7IG1hcmdpbi1yaWdodDogOTBweDsgfSB9CgoubmstZXJyb3ItbGQgeyBwYWRkaW5nOiAycmVtIDFyZW07IH0KCi5uay1lcnJvci1nZnggeyBwYWRkaW5nLWJvdHRvbTogMzBweDsgbWF4LXdpZHRoOiA5MCU7IH0KCi5uay1lcnJvci1oZWFkIHsgZm9udC1zaXplOiAxNjBweDsgZm9udC13ZWlnaHQ6IDcwMDsgYmFja2dyb3VuZDogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoIzA5NzFmZSwgIzBiMzE3NSk7IC13ZWJraXQtYmFja2dyb3VuZC1jbGlwOiB0ZXh0OyAtd2Via2l0LXRleHQtZmlsbC1jb2xvcjogdHJhbnNwYXJlbnQ7IG9wYWNpdHk6IC45OyB9CgoubmstZXJyb3ItdGl0bGUgeyBwYWRkaW5nLWJvdHRvbTogMXJlbTsgfQoKLm5rLWVycm9yLXRleHQgeyBmb250LXNpemU6IDFyZW07IH0KCkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgeyAubmstZXJyb3ItbGVhZCB7IGZvbnQtc2l6ZTogMjAwcHg7IH0KICAubmstZXJyb3ItZ2Z4IHsgcGFkZGluZy1ib3R0b206IDYwcHg7IG1heC13aWR0aDogNTIwcHg7IH0gfQoKLmNsaXBib2FyZC1zdWNjZXNzLW1lc3NhZ2UgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgbGVmdDogMDsgcmlnaHQ6IDA7IGJvdHRvbTogMDsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGNvbG9yOiAjMWVlMGFjOyBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7IGJvcmRlci1yYWRpdXM6IDRweDsgb3BhY2l0eTogMDsgcG9pbnRlci1ldmVudHM6IG5vbmU7IHRyYW5zaXRpb246IG9wYWNpdHkgLjNzOyB9CgouY2xpcGJvYXJkLXN1Y2Nlc3MgLmNsaXBib2FyZC1zdWNjZXNzLW1lc3NhZ2UgeyBvcGFjaXR5OiAxOyB9CgovKiogMDcuIE1JU0MgKi8KLmhhcy1zaGFkb3cuYmctbGlnaHRlciAuY2FyZCwgLmR1YWwtbGlzdGJveCAuaGFzLXNoYWRvdy5kdWFsLWxpc3Rib3hfX2l0ZW06aG92ZXIgLmNhcmQsIC5oYXMtc2hhZG93LmJnLWxpZ2h0ZXIgLnNwLXBkbC1pdGVtLCAuZHVhbC1saXN0Ym94IC5oYXMtc2hhZG93LmR1YWwtbGlzdGJveF9faXRlbTpob3ZlciAuc3AtcGRsLWl0ZW0sIC5oYXMtc2hhZG93LmJnLWxpZ2h0ZXIgLmludm9pY2Utd3JhcCwgLmR1YWwtbGlzdGJveCAuaGFzLXNoYWRvdy5kdWFsLWxpc3Rib3hfX2l0ZW06aG92ZXIgLmludm9pY2Utd3JhcCwgLmhhcy1zaGFkb3cuYmctbGlnaHRlciAuYWNjb3JkaW9uLCAuZHVhbC1saXN0Ym94IC5oYXMtc2hhZG93LmR1YWwtbGlzdGJveF9faXRlbTpob3ZlciAuYWNjb3JkaW9uIHsgYm94LXNoYWRvdzogMCAwIDhweCAtM3B4IHJnYmEoNjAsIDc3LCA5OCwgMC4xNSk7IH0KCi5oYXMtc2hhZG93IC5jYXJkLCAuaGFzLXNoYWRvdyAuc3AtcGRsLWl0ZW0sIC5oYXMtc2hhZG93IC5pbnZvaWNlLXdyYXAsIC5oYXMtc2hhZG93IC5hY2NvcmRpb24geyBib3gtc2hhZG93OiAwIDAgNnB4IC0ycHggcmdiYSg2MCwgNzcsIDk4LCAwLjIpOyB9CgouaGFzLXNoYWRvdyAuZGF0YS1oZWFkLCAuaGFzLXNoYWRvdyAuZGF0YS1pdGVtIHsgcGFkZGluZy1sZWZ0OiAxLjVyZW07IHBhZGRpbmctcmlnaHQ6IDEuNXJlbTsgfQoKLmhhcy1zaGFkb3cgLmNhcmQgLmRhdGEtaGVhZDpub3QoLmlzLXBsYWluKSB7IG1hcmdpbi1sZWZ0OiAwLjc1cmVtOyBtYXJnaW4tcmlnaHQ6IDAuNzVyZW07IHBhZGRpbmctbGVmdDogMC43NXJlbTsgfQoKLmhhcy1zaGFkb3cgLm5hdi10YWJzIHsgYm94LXNoYWRvdzogMCAycHggMCAtMXB4IHJnYmEoNjAsIDc3LCA5OCwgMC4wNik7IH0KCi5oYXMtc2hhZG93IC5uay1oZWFkZXIgeyBib3gtc2hhZG93OiAwIDNweCAwIC0xcHggcmdiYSg2MCwgNzcsIDk4LCAwLjA0KTsgfQoKLm5pby12ZXJzaW9uIHsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgZm9udC1zaXplOiA5cHg7IGZvbnQtd2VpZ2h0OiA3MDA7IGxldHRlci1zcGFjaW5nOiAwLjAyZW07IHBvc2l0aW9uOiBhYnNvbHV0ZTsgcmlnaHQ6IC0xcHg7IGJvdHRvbTogLTNweDsgfQoKLmNvZGUtdGFnIHsgY29sb3I6ICM4MTZiZmY7IH0KCi5jb2RlLWNsYXNzIHsgY29sb3I6ICNmZjYzYTU7IH0KCi5jb2RlLWZuYyB7IGNvbG9yOiAjMDljMmRlOyB9Cgoubmstc3dpdGNoLWljb24geyBjb2xvcjogIzkwYTFiODsgaGVpZ2h0OiAxLjVyZW07IHdpZHRoOiAxLjVyZW07IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyOyB9Cgoubmstc3dpdGNoLWljb24gLmljb24geyBmb250LXNpemU6IDEuNXJlbTsgfQoKLm5rLXN3aXRjaC1pY29uIC5pY29uLXNtIHsgZm9udC1zaXplOiAxLjI1cmVtOyB9Cgoubmstc3dpdGNoLWljb246aG92ZXIgeyBjb2xvcjogIzUyNjQ4NDsgfQoKLm5rLXN3aXRjaC1pY29uLmFjdGl2ZSB7IGNvbG9yOiAjMDk3MWZlOyB9CgouZGFyay1zd2l0Y2ggeyBwb3NpdGlvbjogcmVsYXRpdmU7IH0KCi5kYXJrLXN3aXRjaDpiZWZvcmUsIC5kYXJrLXN3aXRjaDphZnRlciB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgY29udGVudDogIiI7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsgYm9yZGVyLXJhZGl1czogMS41cmVtOyBkaXNwbGF5OiBibG9jazsgdG9wOiA1MCU7IH0KCi5kYXJrLXN3aXRjaDpiZWZvcmUgeyByaWdodDogMDsgd2lkdGg6IDNyZW07IGhlaWdodDogMS41cmVtOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyBib3JkZXI6ICNkYmRmZWEgc29saWQgMnB4OyB9CgouZGFyay1zd2l0Y2g6YWZ0ZXIgeyBoZWlnaHQ6IDFyZW07IHdpZHRoOiAxcmVtOyByaWdodDogY2FsYygycmVtIC0gMnB4IC0gLjEyNXJlbSk7IGJhY2tncm91bmQtY29sb3I6ICNkYmRmZWE7IH0KCi5kYXJrLXN3aXRjaC5hY3RpdmU6YmVmb3JlIHsgYmFja2dyb3VuZC1jb2xvcjogIzA5NzFmZTsgYm9yZGVyLWNvbG9yOiAjMDk3MWZlOyB9CgouZGFyay1zd2l0Y2guYWN0aXZlOmFmdGVyIHsgcmlnaHQ6IGNhbGMoMnB4ICsgLjEyNXJlbSk7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7IH0KCi5pcy1zY3JvbGxhYmxlIHsgb3ZlcmZsb3c6IGF1dG87IH0KCi5wcm9maWxlLXVkLWxhYmVsIHsgZGlzcGxheTogYmxvY2s7IGNvbG9yOiAjODA5NGFlOyB9CgoucGxhaW4gLnByb2ZpbGUtdWQtbGFiZWwgeyBmb250LXNpemU6IDEycHg7IGZvbnQtd2VpZ2h0OiA1MDA7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IGxldHRlci1zcGFjaW5nOiAwLjFlbTsgfQoKLndpZGVyIC5wcm9maWxlLXVkLWxhYmVsIHsgZGlzcGxheTogaW5saW5lLWZsZXg7IGxldHRlci1zcGFjaW5nOiAtMC4wMWVtOyB3aWR0aDogMTIwcHg7IGZsZXgtc2hyaW5rOiAwOyB9CgoucHJvZmlsZS11ZC12YWx1ZSB7IGNvbG9yOiAjNTI2NDg0OyB9Cgoud2lkZXIgLnByb2ZpbGUtdWQtdmFsdWUgeyB0ZXh0LWFsaWduOiByaWdodDsgZm9udC13ZWlnaHQ6IDUwMDsgd2lkdGg6IDEwMCU7IH0KCi5wcm9maWxlLXVkLndpZGVyIHsgZGlzcGxheTogZmxleDsgcGFkZGluZzogLjVyZW0gMDsgfQoKLnByb2ZpbGUtdWQtaXRlbTpudGgtY2hpbGQobisyKSAucHJvZmlsZS11ZC5wbGFpbiB7IG1hcmdpbi10b3A6IDEuMjVyZW07IH0KCkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgeyAucHJvZmlsZS11ZC53aWRlciB7IHBhZGRpbmc6IC43NXJlbSAwOyB9CiAgLnByb2ZpbGUtdWQtbGlzdCB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtd3JhcDogd3JhcDsgbWFyZ2luOiAtMC4yNXJlbSAtMy4yNXJlbTsgbWF4LXdpZHRoOiA5NjBweDsgfQogIC5wcm9maWxlLXVkLWl0ZW0geyB3aWR0aDogNTAlOyBwYWRkaW5nOiAwIDMuMjVyZW07IH0KICAucHJvZmlsZS11ZC1pdGVtOm50aC1jaGlsZCgyKSAucHJvZmlsZS11ZC5wbGFpbiB7IG1hcmdpbi10b3A6IDA7IH0gfQoKLnByb2ZpbGUtc3RhdHMgLmFtb3VudCB7IGZvbnQtc2l6ZTogMS4xMjVyZW07IGZvbnQtd2VpZ2h0OiA3MDA7IH0KCi5wcm9maWxlLWJhbGFuY2UtZ3JvdXAgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogZmxleC1lbmQ7IH0KCi5wcm9maWxlLWJhbGFuY2UtY2sgeyBwb3NpdGlvbjogcmVsYXRpdmU7IGhlaWdodDogNzBweDsgbWFyZ2luLXRvcDogLjVyZW07IH0KCi5wcm9maWxlLWJhbGFuY2Utc3ViIHsgZm9udC1zaXplOiAuODc1cmVtOyBjb2xvcjogIzgwOTRhZTsgfQoKLnByb2ZpbGUtYmFsYW5jZS1zdWJ0aXRsZSB7IGZvbnQtc2l6ZTogMC43NXJlbTsgbWFyZ2luLXRvcDogMC41cmVtOyB9CgoucHJvZmlsZS1iYWxhbmNlLXN1YiAuaWNvbiB7IGZvbnQtc2l6ZTogLjc1cmVtOyB9CgoucHJvZmlsZS1iYWxhbmNlLXBsdXMgeyBwb3NpdGlvbjogYWJzb2x1dGU7IH0KCi5wcm9maWxlLWJhbGFuY2UtcGx1cyAuaWNvbiB7IGZvbnQtc2l6ZTogMXJlbTsgbGluZS1oZWlnaHQ6IDEuNXJlbTsgfQoKLnByb2ZpbGUtYmFsYW5jZS1wbHVzIH4gKiB7IHBhZGRpbmctbGVmdDogMjRweDsgfQoKLnByb2ZpbGUtYmFsYW5jZS1hbW91bnQgLm51bWJlciB7IGZvbnQtc2l6ZTogMS4yNXJlbTsgZm9udC13ZWlnaHQ6IDcwMDsgY29sb3I6ICMzNjRhNjM7IGxpbmUtaGVpZ2h0OiAxLjVyZW07IHdoaXRlLXNwYWNlOiBub3dyYXA7IH0KCi5wcm9maWxlLWJhbGFuY2UtYW1vdW50IC5udW1iZXIgc21hbGwgeyBmb250LXdlaWdodDogNDAwOyB9Cgouc3RlcHMgdWwgeyBkaXNwbGF5OiBmbGV4OyB9Cgouc3RlcHMgdWwgbGkgeyBmbGV4LWdyb3c6IDE7IH0KCi5zdGVwcyAuY3VycmVudC1pbmZvIHsgZGlzcGxheTogbm9uZTsgfQoKLmFjdGlvbnMgdWwgeyBkaXNwbGF5OiBmbGV4OyBtYXJnaW46IC0xMHB4OyBwYWRkaW5nLXRvcDogMjBweDsgfQoKLmFjdGlvbnMgdWwgbGkgeyBwYWRkaW5nOiAxMHB4OyB9CgouYWN0aW9ucyB1bCBsaTpmaXJzdC1jaGlsZCB7IG9yZGVyOiAxOyB9CgouYWN0aW9ucyB1bCBsaSBhIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiAjZmZmOyBmb250LXdlaWdodDogNTAwOyB0cmFuc2l0aW9uOiBhbGwgLjRzIGVhc2U7IGJvcmRlci1jb2xvcjogIzA5NzFmZTsgYmFja2dyb3VuZDogIzA5NzFmZTsgcGFkZGluZzogMC40Mzc1cmVtIDEuMTI1cmVtOyBmb250LXNpemU6IDAuODEyNXJlbTsgbGluZS1oZWlnaHQ6IDEuMjVyZW07IGJvcmRlci1yYWRpdXM6IDRweDsgfQoKLmFjdGlvbnMgdWwgbGkuZGlzYWJsZWQgeyBkaXNwbGF5OiBub25lOyB9Cgoubmstd2l6YXJkLWhlYWQgeyBkaXNwbGF5OiBub25lOyB9Cgoubmstd2l6YXJkLXNpbXBsZSAuc3RlcHMgeyBtYXJnaW4tYm90dG9tOiAyMHB4OyB9Cgoubmstd2l6YXJkLXNpbXBsZSAuc3RlcHMgdWwgbGkgeyBwb3NpdGlvbjogcmVsYXRpdmU7IHBhZGRpbmctYm90dG9tOiA1cHg7IH0KCi5uay13aXphcmQtc2ltcGxlIC5zdGVwcyB1bCBsaSBoNSB7IGJvcmRlcjogbm9uZTsgcGFkZGluZzogMCAwIDZweCAwOyBsZXR0ZXItc3BhY2luZzogMC4wMmVtOyBmb250LXNpemU6IDEzcHg7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IGZvbnQtd2VpZ2h0OiA1MDA7IGNvbG9yOiAjODA5NGFlOyB9Cgoubmstd2l6YXJkLXNpbXBsZSAuc3RlcHMgdWwgbGkgLm51bWJlciB7IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6ICM4MDk0YWU7IGZvbnQtd2VpZ2h0OiA3MDA7IH0KCi5uay13aXphcmQtc2ltcGxlIC5zdGVwcyB1bCBsaTphZnRlciB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgaGVpZ2h0OiAycHg7IHdpZHRoOiAwOyBsZWZ0OiAwOyBib3R0b206IDA7IGJhY2tncm91bmQ6ICMwOTcxZmU7IGNvbnRlbnQ6ICcnOyB0cmFuc2l0aW9uOiBhbGwgLjRzOyB9Cgoubmstd2l6YXJkLXNpbXBsZSAuc3RlcHMgdWwgbGkuZG9uZTphZnRlciwgLm5rLXdpemFyZC1zaW1wbGUgLnN0ZXBzIHVsIGxpLmN1cnJlbnQ6YWZ0ZXIgeyB3aWR0aDogMTAwJTsgfQoKLm5rLXdpemFyZC1zaW1wbGUgLnN0ZXBzIHVsIGxpLmRvbmUgaDUsIC5uay13aXphcmQtc2ltcGxlIC5zdGVwcyB1bCBsaS5kb25lIC5udW1iZXIsIC5uay13aXphcmQtc2ltcGxlIC5zdGVwcyB1bCBsaS5jdXJyZW50IGg1LCAubmstd2l6YXJkLXNpbXBsZSAuc3RlcHMgdWwgbGkuY3VycmVudCAubnVtYmVyIHsgY29sb3I6ICMwOTcxZmU7IH0KCi5uay13aXphcmQtc2ltcGxlIC5zdGVwcyB1bCBsaS5jdXJyZW50IH4gLmRvbmU6YWZ0ZXIgeyB3aWR0aDogMDsgfQoKLm5rLXdpemFyZC1zaW1wbGUgLnN0ZXBzIHVsIGxpLmN1cnJlbnQgfiAuZG9uZSBoNSwgLm5rLXdpemFyZC1zaW1wbGUgLnN0ZXBzIHVsIGxpLmN1cnJlbnQgfiAuZG9uZSAubnVtYmVyIHsgY29sb3I6ICM4MDk0YWU7IH0KCi5uay13aXphcmQtc2ltcGxlIC5zdGVwcyAuY3VycmVudC1pbmZvIHsgZGlzcGxheTogbm9uZTsgfQoKLnRiLXRueC1oZWFkIHsgZm9udC1zaXplOiAxMXB4OyBmb250LXdlaWdodDogNzAwOyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyBsZXR0ZXItc3BhY2luZzogMC4xMmVtOyBiYWNrZ3JvdW5kOiAjZjVmNmZhOyB9CgoudGItdG54LWhlYWQgdGQsIC50Yi10bngtaGVhZCB0aCB7IGNvbG9yOiAjODA5NGFlOyBwYWRkaW5nOiAwLjYyNXJlbSAuMjVyZW07IH0KCi50Yi10bngtaGVhZCB0aCB7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDRweDsgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDsgfQoKLnRiLXRueC1pdGVtIHsgZm9udC1zaXplOiAxNHB4OyB9CgoudGItdG54LWl0ZW0gdGQgeyBwYWRkaW5nOiAxLjI1cmVtIC4yNXJlbTsgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfQoKLmlzLWNvbXBhY3QgLnRiLXRueC1pdGVtIHRkIHsgcGFkZGluZy10b3A6IC40cmVtOyBwYWRkaW5nLWJvdHRvbTogLjRyZW07IH0KCi50Yi10bngtaWQgYSB7IGRpc3BsYXk6IGJsb2NrOyB9CgoudGItdG54LWlkIHNwYW4geyBmb250LXdlaWdodDogNTAwOyB9CgoudGItdG54LWl0ZW0gLnRiLXRueC10b3RhbCB7IGZvbnQtd2VpZ2h0OiA1MDA7IGNvbG9yOiAjNTI2NDg0OyB9CgoudGItdG54LWRlc2MgeyBwYWRkaW5nLXJpZ2h0OiAuNXJlbTsgfQoKLnRiLXRueC1pdGVtIC50Yi10bngtZGF0ZSB7IGNvbG9yOiAjODA5NGFlOyB9CgoudGItdG54LWl0ZW0gLnRiLXRueC1kYXRlIC5kYXRlIHsgZm9udC1zaXplOiAxM3B4OyB9CgoudGItdG54LWFjdGlvbiB7IHdpZHRoOiA2MHB4OyB0ZXh0LWFsaWduOiByaWdodDsgfQoKLnRiLXRueC1hY3Rpb24gLmRyb3Bkb3duIHsgbWFyZ2luLXRvcDogLTAuMjVyZW07IG1hcmdpbi1ib3R0b206IC0wLjI1cmVtOyB9CgoudGItdG54LWJ0bnMgLmJ0biArIC5idG4sIC50Yi10bngtYnRucyAuZHVhbC1saXN0Ym94IC5kdWFsLWxpc3Rib3hfX2J1dHRvbiArIC5idG4sIC5kdWFsLWxpc3Rib3ggLnRiLXRueC1idG5zIC5kdWFsLWxpc3Rib3hfX2J1dHRvbiArIC5idG4sIC50Yi10bngtYnRucyAuZHVhbC1saXN0Ym94IC5idG4gKyAuZHVhbC1saXN0Ym94X19idXR0b24sIC5kdWFsLWxpc3Rib3ggLnRiLXRueC1idG5zIC5idG4gKyAuZHVhbC1saXN0Ym94X19idXR0b24sIC50Yi10bngtYnRucyAuZHVhbC1saXN0Ym94IC5kdWFsLWxpc3Rib3hfX2J1dHRvbiArIC5kdWFsLWxpc3Rib3hfX2J1dHRvbiwgLmR1YWwtbGlzdGJveCAudGItdG54LWJ0bnMgLmR1YWwtbGlzdGJveF9fYnV0dG9uICsgLmR1YWwtbGlzdGJveF9fYnV0dG9uIHsgbWFyZ2luLWxlZnQ6IC41cmVtOyB9CgoudGItdG54LWJ0bnMgKyAuZHJvcGRvd24geyBtYXJnaW4tbGVmdDogMXJlbTsgfQoKQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7IC50Yi10bngtaXRlbSwgLnRiLXRueC1oZWFkIHsgZGlzcGxheTogZmxleDsgd2lkdGg6IDEwMCU7IH0KICAudGItdG54LWl0ZW0gdGgsIC50Yi10bngtaGVhZCB0aCB7IGZsZXgtZ3JvdzogMTsgcGFkZGluZy10b3A6IC41cmVtOyBwYWRkaW5nLWJvdHRvbTogLjVyZW07IH0KICAudGItdG54LWl0ZW0gdGQsIC50Yi10bngtaGVhZCB0ZCB7IGZsZXgtZ3JvdzogMTsgYm9yZGVyOiBub25lOyBwYWRkaW5nLXRvcDogMDsgcGFkZGluZy1ib3R0b206IDA7IH0KICAudGItdG54LWl0ZW0geyBmbGV4LXdyYXA6IHdyYXA7IHBhZGRpbmctdG9wOiAxcmVtOyBwYWRkaW5nLWJvdHRvbTogMXJlbTsgfQogIC50Yi10bngtaXRlbTpub3QoOmxhc3QtY2hpbGQpIHsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlNWU5ZjI7IH0KICAudGItdG54LWFtb3VudCB7IHdpZHRoOiAxMTBweDsgdGV4dC1hbGlnbjogcmlnaHQ7IH0KICAudGItdG54LWlkLCAudGItdG54LWhlYWQgdGg6Zmlyc3QtY2hpbGQgeyBtaW4td2lkdGg6IDg1cHg7IHBhZGRpbmctcmlnaHQ6IC4yNXJlbSAhaW1wb3J0YW50OyBmbGV4LWdyb3c6IDAgIWltcG9ydGFudDsgfQogIC50Yi10bngtaW5mbyB7IHdpZHRoOiA0NSU7IH0KICAudGItdG54LWRhdGUgLmRhdGUgeyBmb250LXNpemU6IDEycHg7IH0KICAudGItdG54LWRhdGUgLmRhdGUgKyAuZGF0ZSB7IHBhZGRpbmctbGVmdDogLjVyZW07IH0KICAudGItdG54LWFjdGlvbjpsYXN0LWNoaWxkIHsgZmxleC1ncm93OiAwOyBwYWRkaW5nLWxlZnQ6IC41cmVtOyBkaXNwbGF5OiBpbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgfSB9CgpAbWVkaWEgKG1heC13aWR0aDogNTc1cHgpIHsgLnRiLXRueC1pdGVtIHsgZm9udC1zaXplOiAxM3B4OyB9CiAgLnRiLXRueC1pZCB7IHdpZHRoOiAxMDAlOyB9CiAgLnRiLXRueC1pZCArIHRkIHsgcGFkZGluZy1sZWZ0OiAxLjI1cmVtOyB9CiAgLnRiLXRueC1pbmZvIHsgd2lkdGg6IDY1JTsgfQogIC50Yi10bngtYW1vdW50Omxhc3QtY2hpbGQgeyB3aWR0aDogMjUlOyB9CiAgLnRiLXRueC1hbW91bnQ6bm90KDpsYXN0LWNoaWxkKSB7IGRpc3BsYXk6IG5vbmU7IH0KICAudGItdG54LWFtb3VudC5pcy1hbHQgeyBwb3NpdGlvbjogYWJzb2x1dGU7IGRpc3BsYXk6IGlubGluZS1mbGV4OyByaWdodDogMS4yNXJlbTsgd2lkdGg6IGF1dG87IH0KICAudGItdG54LWFtb3VudC5pcy1hbHQgLnRiLXRueC10b3RhbCB7IG9yZGVyOiA1OyBwYWRkaW5nLWxlZnQ6IDEuMjVyZW07IH0gfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7IC50Yi10bngtZGVzYywgLnRiLXRueC1kYXRlLCAudGItdG54LXRvdGFsLCAudGItdG54LXN0YXR1cyB7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfQogIC50Yi10bngtZGVzYywgLnRiLXRueC1kYXRlIHsgd2lkdGg6IGNhbGMoNTAlIC0gNHB4KTsgfQogIC50Yi10bngtdG90YWwgeyB3aWR0aDogY2FsYyg2MCUgLSA0cHgpOyB9CiAgLnRiLXRueC1zdGF0dXMgeyB3aWR0aDogY2FsYyg0MCUgLSA0cHgpOyB9CiAgLnRiLXRueC1hbW91bnQgeyB3aWR0aDogMjUlOyB9CiAgLnRiLXRueC1kYXRlIC5kYXRlLCAudGItdG54LWRhdGUgPiBzcGFuID4gc3BhbiB7IHdpZHRoOiBjYWxjKDUwJSAtIDRweCk7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgfQogIC50Yi10bngtZGF0ZSAuZGF0ZSArIC5kYXRlLCAudGItdG54LWRhdGUgPiBzcGFuID4gc3BhbiArIHNwYW4geyBwYWRkaW5nLWxlZnQ6IDAuNzVyZW07IH0gfQoKLnRiLW9kci1pdGVtIHsgZm9udC1zaXplOiAxNHB4OyB9CgoudGItb2RyLWl0ZW0gdGQgeyBwYWRkaW5nOiAxcmVtIC4yNXJlbTsgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfQoKLnRiLW9kci1pZCwgLnRiLW9kci10b3RhbCB7IGRpc3BsYXk6IGJsb2NrOyB9CgoudGItb2RyLWl0ZW0gLnRiLW9kci1pZCwgLnRiLW9kci1pdGVtIC50Yi1vZHItdG90YWwgeyBmb250LXdlaWdodDogNTAwOyB9CgoudGItb2RyLWlkIGEgeyBkaXNwbGF5OiBibG9jazsgfQoKLnRiLW9kci1pZCBzcGFuIHsgZm9udC13ZWlnaHQ6IDUwMDsgfQoKLnRiLW9kci1pdGVtIC50Yi1vZHItdG90YWwgeyBjb2xvcjogIzM2NGE2MzsgfQoKLnRiLW9kci1oZWFkIC50Yi1vZHItaXRlbSAudGItb2RyLXRvdGFsIHsgY29sb3I6IGluaGVyaXQ7IH0KCi50Yi1vZHItaXRlbSAudGItb2RyLWRhdGUgeyBjb2xvcjogIzgwOTRhZTsgfQoKLnRiLW9kci1oZWFkIC50Yi1vZHItaXRlbSAudGItb2RyLWRhdGUgeyBjb2xvcjogaW5oZXJpdDsgfQoKLnRiLW9kci1hY3Rpb24gPiBkaXYsIC50Yi1vZHItYWN0aW9uID4gLmJ0biwgLmR1YWwtbGlzdGJveCAudGItb2RyLWFjdGlvbiA+IC5kdWFsLWxpc3Rib3hfX2J1dHRvbiB7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH0KCi50Yi1vZHItYWN0aW9uOmxhc3QtY2hpbGQgeyBwYWRkaW5nLWxlZnQ6IDEuMjVyZW07IHRleHQtYWxpZ246IHJpZ2h0OyB9CgoudGItb2RyLWJ0bnMgLmJ0biArIC5idG4sIC50Yi1vZHItYnRucyAuZHVhbC1saXN0Ym94IC5kdWFsLWxpc3Rib3hfX2J1dHRvbiArIC5idG4sIC5kdWFsLWxpc3Rib3ggLnRiLW9kci1idG5zIC5kdWFsLWxpc3Rib3hfX2J1dHRvbiArIC5idG4sIC50Yi1vZHItYnRucyAuZHVhbC1saXN0Ym94IC5idG4gKyAuZHVhbC1saXN0Ym94X19idXR0b24sIC5kdWFsLWxpc3Rib3ggLnRiLW9kci1idG5zIC5idG4gKyAuZHVhbC1saXN0Ym94X19idXR0b24sIC50Yi1vZHItYnRucyAuZHVhbC1saXN0Ym94IC5kdWFsLWxpc3Rib3hfX2J1dHRvbiArIC5kdWFsLWxpc3Rib3hfX2J1dHRvbiwgLmR1YWwtbGlzdGJveCAudGItb2RyLWJ0bnMgLmR1YWwtbGlzdGJveF9fYnV0dG9uICsgLmR1YWwtbGlzdGJveF9fYnV0dG9uIHsgbWFyZ2luLWxlZnQ6IC41cmVtOyB9CgoudGItb2RyLWlkIHsgbWluLXdpZHRoOiA5MHB4OyB9CgoudGItb2RyLWhlYWQgeyBiYWNrZ3JvdW5kOiAjZjVmNmZhOyB9CgoudGItb2RyLWhlYWQgdGggeyBmb250LXNpemU6IDEycHg7IGZvbnQtd2VpZ2h0OiA3MDA7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IGxldHRlci1zcGFjaW5nOiAwLjEyZW07IGNvbG9yOiAjODA5NGFlOyBwYWRkaW5nOiAwLjYyNXJlbSAuMjVyZW07IH0KCkBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCkgeyAudGItb2RyLWl0ZW0geyBkaXNwbGF5OiBmbGV4OyB9CiAgLnRiLW9kci1pdGVtIHRoLCAudGItb2RyLWl0ZW0gdGQgeyBmbGV4LWdyb3c6IDE7IH0KICAudGItb2RyLWFtb3VudCB7IHRleHQtYWxpZ246IHJpZ2h0OyB9IH0KCkBtZWRpYSAobWF4LXdpZHRoOiA1NzVweCkgeyAudGItb2RyLWl0ZW0geyBmb250LXNpemU6IDEzcHg7IH0KICAudGItb2RyLWFtb3VudCB7IHdpZHRoOiAyNCU7IH0KICAudGItb2RyLWluZm8geyB3aWR0aDogNDQlOyB9CiAgLnRiLW9kci1hY3Rpb24geyB3aWR0aDogMnJlbTsgbWluLXdpZHRoOiBhdXRvOyB9CiAgLnRiLW9kci1pdGVtIC50Yi1vZHItYWN0aW9uIHsgcGFkZGluZy1sZWZ0OiAuNXJlbTsgfSB9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsgLnRiLW9kci1pbmZvIHsgbWluLXdpZHRoOiA1NSU7IH0KICAudGItb2RyLWFtb3VudCB7IHdpZHRoOiAzMCU7IH0KICAudGItb2RyLXRvdGFsIHsgbWluLXdpZHRoOiAxMDBweDsgfQogIC50Yi1vZHItaWQsIC50Yi1vZHItdG90YWwgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH0KICAudGItb2RyLWlkICsgc3BhbiwgLnRiLW9kci10b3RhbCArIHNwYW4geyBwYWRkaW5nLWxlZnQ6IDFyZW07IH0KICAudGItb2RyLWJ0bnMgKyAuZHJvcGRvd24sIC50Yi1vZHItYnRucyArIC5idG4sIC5kdWFsLWxpc3Rib3ggLnRiLW9kci1idG5zICsgLmR1YWwtbGlzdGJveF9fYnV0dG9uIHsgbWFyZ2luLWxlZnQ6IC43NXJlbTsgfSB9CgpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHsgLnRiLW9kci1pZCB7IG1pbi13aWR0aDogMTIwcHg7IH0KICAudGItb2RyLXRvdGFsIHsgbWluLXdpZHRoOiA1MCU7IH0gfQoKLmlzLWNvbXBhY3QgLnRiLXRueC1pdGVtIHRkLCAuaXMtY29tcGFjdCAudGItb2RyLWl0ZW0gdGQgeyBwYWRkaW5nLXRvcDogLjRyZW07IHBhZGRpbmctYm90dG9tOiAuNHJlbTsgfQoKQG1lZGlhIChtYXgtd2lkdGg6IDc2N3B4KSB7IC5pcy1jb21wYWN0IC50Yi10bngtaXRlbSwgLmlzLWNvbXBhY3QgLnRiLW9kci1pdGVtIHsgcGFkZGluZy10b3A6IC41cmVtOyBwYWRkaW5nLWJvdHRvbTogLjVyZW07IH0KICAuaXMtY29tcGFjdCAudGItdG54LWl0ZW0gdGQsIC5pcy1jb21wYWN0IC50Yi1vZHItaXRlbSB0ZCB7IHBhZGRpbmctdG9wOiAwOyBwYWRkaW5nLWJvdHRvbTogMDsgfSB9CgoubmstdGItbGlzdCB7IGRpc3BsYXk6IHRhYmxlOyB3aWR0aDogMTAwJTsgZm9udC1zaXplOiAxM3B4OyBjb2xvcjogIzgwOTRhZTsgfQoKLm5rLXRiLWxpc3QuaXMtYWx0IHsgY29sb3I6ICM1MjY0ODQ7IH0KCi5uay10Yi1saXN0IC5saXN0LXN0YXR1cywgLm5rLXRiLWxpc3QgLnRiLXN0YXR1cyB7IGZvbnQtc2l6ZTogMTJweDsgZm9udC13ZWlnaHQ6IDUwMDsgfQoKLm5rLXRiLWxpc3QgLnRiLWxlYWQsIC5uay10Yi1saXN0IC50Yi1hbW91bnQgeyBmb250LXdlaWdodDogNTAwOyBjb2xvcjogIzM2NGE2MzsgZGlzcGxheTogYmxvY2s7IGxpbmUtaGVpZ2h0OiAxLjQ7IH0KCi5uay10Yi1saXN0IC50Yi1sZWFkLXN1YiwgLm5rLXRiLWxpc3QgLnRiLWFtb3VudC1zdWIgeyBjb2xvcjogIzUyNjQ4NDsgZGlzcGxheTogYmxvY2s7IGxpbmUtaGVpZ2h0OiAxLjQ7IH0KCi5uay10Yi1saXN0IC50Yi1zdWIsIC5uay10Yi1saXN0IC50Yi1hbW91bnQtc20geyBmb250LXNpemU6IC45ZW07IH0KCi5uay10Yi1saXN0IC50Yi1hbW91bnQgc3BhbiwgLm5rLXRiLWxpc3QgLnRiLWFtb3VudCAuY3VycmVuY3kgeyBjb2xvcjogIzUyNjQ4NDsgZm9udC13ZWlnaHQ6IDQwMDsgfQoKLm5rLXRiLWxpc3QgLnVzZXItaW5mbyAudGItbGVhZCArIHNwYW4sIC5uay10Yi1saXN0IC50Yi1sZWFkICsgLnRiLWRhdGUgeyBmb250LXNpemU6IDExcHg7IH0KCi5uay10Yi1saXN0IC50Yi1jb3VudHJ5IHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgfQoKLm5rLXRiLWxpc3QgLnRiLWNvdW50cnkgLm5hbWUgeyBjb2xvcjogIzM2NGE2MzsgfQoKLm5rLXRiLWxpc3QgLnRiLWNvdW50cnkgLmZsYWcgeyBoZWlnaHQ6IDE2cHg7IGJvcmRlci1yYWRpdXM6IDNweDsgfQoKLm5rLXRiLWxpc3QgLnRiLWNvdW50cnkgLmZsYWcgKyAubmFtZSB7IG1hcmdpbi1sZWZ0OiAwLjY4NzVyZW07IH0KCi5uay10Yi1saXN0IC50Yi1wcm9kdWN0IHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgfQoKLm5rLXRiLWxpc3QgLnRiLXByb2R1Y3QgLnRodW1iIHsgd2lkdGg6IDQ4cHg7IGJvcmRlci1yYWRpdXM6IDRweDsgbWFyZ2luLXJpZ2h0OiAxcmVtOyB9CgoubmstdGItbGlzdCAudGItcHJvZHVjdCAudGl0bGUgeyBmb250LXdlaWdodDogNzAwOyBmb250LXNpemU6IC44NzVyZW07IGNvbG9yOiAjMzY0YTYzOyB9CgoubmstdGItbGlzdCAudGItYXN0ZXJpc2sgeyBmb250LXNpemU6IDEuMTI1cmVtOyBsaW5lLWhlaWdodDogMTsgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgfQoKLm5rLXRiLWxpc3QgLnRiLWFzdGVyaXNrIGEgeyBjb2xvcjogIzA5NzFmZTsgfQoKLm5rLXRiLWl0ZW0geyB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC4zcywgYm94LXNoYWRvdyAuM3M7IGRpc3BsYXk6IHRhYmxlLXJvdzsgfQoKLm5rLXRiLWl0ZW06bm90KC5uay10Yi1oZWFkKTpob3ZlciwgLm5rLXRiLWl0ZW06bm90KC5uay10Yi1oZWFkKS5zZWxldGVkIHsgYmFja2dyb3VuZDogI2Y4ZjlmYzsgYm94LXNoYWRvdzogMCAwIDEwcHggLTRweCByZ2JhKDU0LCA3NCwgOTksIDAuMik7IH0KCi5uay10Yi1jb2wgeyBwb3NpdGlvbjogcmVsYXRpdmU7IGRpc3BsYXk6IHRhYmxlLWNlbGw7IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IHBhZGRpbmc6IDFyZW0gLjVyZW07IH0KCi5uay10Yi1jb2w6Zmlyc3QtY2hpbGQgeyBwYWRkaW5nLWxlZnQ6IDEuMjVyZW07IH0KCi5uay10Yi1jb2w6bGFzdC1jaGlsZCB7IHBhZGRpbmctcmlnaHQ6IDEuMjVyZW07IH0KCi5uay10Yi1jb2wtdG9vbHMgeyBtYXgtd2lkdGg6IDMuNzVyZW07IH0KCi5uay10Yi1jb2wtY2hlY2sgeyB3aWR0aDogM3JlbTsgfQoKLm5rLXRiLWNvbC1jaGVjayAuY3VzdG9tLWNvbnRyb2wgeyB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9CgoubmstdGItaXRlbTpub3QoOmxhc3QtY2hpbGQpIC5uay10Yi1jb2wgeyBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RiZGZlYTsgfQoKLm5rLXRiLWhlYWQgLm5rLXRiLWNvbCB7IHBhZGRpbmctdG9wOiAwLjVyZW07IHBhZGRpbmctYm90dG9tOiAwLjVyZW07IGNvbG9yOiAjODA5NGFlOyBmb250LXNpemU6IC45ZW07IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGJkZmVhOyB9CgoubmstdGItY29sLWFjdGlvbiB7IHRleHQtYWxpZ246IHJpZ2h0OyB9CgoubmstdGItY29sLWFjdGlvbiA+IC5kcm9wZG93bjpsYXN0LWNoaWxkIHsgcmlnaHQ6IC0uNXJlbTsgfQoKLm5rLXRiLWNvbC1ub3NvcnQ6YmVmb3JlLCAubmstdGItY29sLW5vc29ydDphZnRlciB7IGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfQoKLm5rLXRiLWFjdGlvbnMgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOyBwb3NpdGlvbjogcmVsYXRpdmU7IH0KCi5uay10Yi11bGlzdCAubmstdGItYWN0aW9ucywgLm5rLXRiLWFjdGlvbnMtYWRqIC5uay10Yi1hY3Rpb25zIHsgcmlnaHQ6IC0wLjVyZW07IH0KCi5uay10Yi1hY3Rpb25zLnZpc2libGUxIHsgd2lkdGg6IDFyZW07IH0KCi5uay10Yi1hY3Rpb24taGlkZGVuIHsgb3BhY2l0eTogMDsgdHJhbnNpdGlvbjogLjNzIGVhc2U7IH0KCi5uay10Yi1pdGVtOmhvdmVyIC5uay10Yi1hY3Rpb24taGlkZGVuIHsgb3BhY2l0eTogMTsgYmFja2dyb3VuZDogI2Y4ZjlmYzsgfQoKLm5rLXRiLWxpc3QgLm5rLXRiLWhlYWQgLmJ0bi10cmlnZ2VyIC5pY29uIHsgZm9udC1zaXplOiAxLjVlbTsgfQoKLm5rLXRiLWxpc3QuaXMtc2VwYXJhdGUgeyBtYXJnaW4tdG9wOiAtOHB4OyBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlOyBib3JkZXItc3BhY2luZzogMCA4cHg7IH0KCi5uay10Yi1saXN0LmlzLXNlcGFyYXRlIC5uay10Yi1pdGVtID4gLm5rLXRiLWNvbCB7IGJhY2tncm91bmQ6ICNmZmY7IGJvcmRlcjogbm9uZTsgYm94LXNoYWRvdzogMHB4IDFweCAzcHggMHB4IHJnYmEoNTQsIDc0LCA5OSwgMC4wNSk7IH0KCi5uay10Yi1saXN0LmlzLXNlcGFyYXRlIC5uay10Yi1pdGVtID4gLm5rLXRiLWNvbDpmaXJzdC1jaGlsZCB7IGJvcmRlci1yYWRpdXM6IDRweCAwIDAgNHB4OyB9CgoubmstdGItbGlzdC5pcy1zZXBhcmF0ZSAubmstdGItaXRlbSA+IC5uay10Yi1jb2w6bGFzdC1jaGlsZCB7IGJvcmRlci1yYWRpdXM6IDAgNHB4IDRweCAwOyB9CgoubmstdGItbGlzdC5pcy1zZXBhcmF0ZSAubmstdGItaXRlbTpob3ZlciAubmstdGItYWN0aW9uLWhpZGRlbiB7IGJhY2tncm91bmQ6ICNmZmY7IH0KCi5uay10Yi1saXN0LmlzLXNlcGFyYXRlIC5uay10Yi1oZWFkIC5uay10Yi1jb2wgeyBwYWRkaW5nLXRvcDogMC43NXJlbTsgcGFkZGluZy1ib3R0b206IDAuNzVyZW07IH0KCkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgeyAubmstdGItY29sLWNoZWNrIHsgd2lkdGg6IDMuMjVyZW07IH0KICAubmstdGItaXRlbSAubmstdGItY29sOmZpcnN0LWNoaWxkIHsgcGFkZGluZy1sZWZ0OiAxLjVyZW07IH0KICAubmstdGItaXRlbSAubmstdGItY29sOmxhc3QtY2hpbGQgeyBwYWRkaW5nLXJpZ2h0OiAxLjVyZW07IH0gfQoKQG1lZGlhIChtaW4td2lkdGg6IDE1NDBweCkgeyAubmstdGItbGlzdCB7IGZvbnQtc2l6ZTogMTRweDsgfQogIC5uay10Yi1saXN0IC5saXN0LXN0YXR1cywgLm5rLXRiLWxpc3QgLnRiLXN0YXR1cyB7IGZvbnQtc2l6ZTogMTNweDsgfQogIC5uay10Yi1saXN0IC51c2VyLWluZm8gLnRiLWxlYWQgKyBzcGFuLCAubmstdGItbGlzdCAudGItbGVhZCArIC50Yi1kYXRlIHsgZm9udC1zaXplOiAxMnB4OyB9IH0KCi5pcy1sb29zZSAubmstdGItaXRlbTpub3QoLm5rLXRiLWhlYWQpIC5uay10Yi1jb2wgeyBwYWRkaW5nLXRvcDogMS4xMjVyZW07IHBhZGRpbmctYm90dG9tOiAxLjEyNXJlbTsgfQoKLmlzLW1lZGl1bSAubmstdGItaXRlbTpub3QoLm5rLXRiLWhlYWQpIC5uay10Yi1jb2wgeyBwYWRkaW5nLXRvcDogLjc1cmVtOyBwYWRkaW5nLWJvdHRvbTogLjc1cmVtOyB9CgouaXMtY29tcGFjdCAubmstdGItaXRlbTpub3QoLm5rLXRiLWhlYWQpIC5uay10Yi1jb2wgeyBwYWRkaW5nLXRvcDogLjVyZW07IHBhZGRpbmctYm90dG9tOiAuNXJlbTsgfQoKLm5rLXRueC10eXBlIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgfQoKLm5rLXRueC10eXBlLWljb24geyBmb250LXNpemU6IDEuMTI1cmVtOyBmbGV4LXNocmluazogMDsgaGVpZ2h0OiAyLjVyZW07IHdpZHRoOiAyLjVyZW07IGJvcmRlci1yYWRpdXM6IDUwJTsgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyOyBiYWNrZ3JvdW5kOiAjZWJlZWYyOyBtYXJnaW4tcmlnaHQ6IDFyZW07IH0KCkBtZWRpYSAobWF4LXdpZHRoOiA5OTEuOThweCkgeyAubmstdGItdG54IHsgZm9udC1zaXplOiAxMnB4OyBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTsgfQogIC5uay10bngtdHlwZS1pY29uIHsgZm9udC1zaXplOiAwLjg3NXJlbTsgaGVpZ2h0OiAxLjc1cmVtOyB3aWR0aDogMS43NXJlbTsgbWFyZ2luLXJpZ2h0OiAuNzVyZW07IH0gfQoKQG1lZGlhIChtYXgtd2lkdGg6IDU3NS45OHB4KSB7IC5uay10Yi10bnggLm5rLXRiLWhlYWQgLm5rLXRiLWNvbC10b29scyB7IG9wYWNpdHk6IDA7IH0KICAubmstdGItdG54IC5uay10Yi1jb2wtc3RhdHVzIHsgdGV4dC1hbGlnbjogcmlnaHQ7IHBhZGRpbmctcmlnaHQ6IDEuMjVyZW0gIWltcG9ydGFudDsgfQogIC5uay10Yi10bnggLm5rLXRiLWNvbC10b29scyB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgcmlnaHQ6IDA7IG9wYWNpdHk6IDA7IHRyYW5zaXRpb246IC4zcyBlYXNlOyB9CiAgLm5rLXRiLXRueCAubmstdGItaXRlbTpob3ZlciAubmstdGItY29sLXRvb2xzIHsgb3BhY2l0eTogMTsgfQogIC5uay10bngtdHlwZS1pY29uIHsgbWFyZ2luLXJpZ2h0OiAuNXJlbTsgfSB9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsgLm5rLXRiLXRueCAubmstdGItY29sLXN0YXR1cyB7IHBhZGRpbmctbGVmdDogMi41cmVtOyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiAxODAwcHgpIHsgLm5rLXRiLXRueCAubmstdGItY29sLXN0YXR1cyB7IHBhZGRpbmctbGVmdDogNnJlbTsgfSB9CgouY2FyZC1mdWxsIC5uay13ZzEgeyBoZWlnaHQ6IDEwMCU7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IH0KCi5uay13ZzEtYmxvY2sgeyBkaXNwbGF5OiBmbGV4OyBwYWRkaW5nOiAxLjI1cmVtOyBhbGlnbi1pdGVtczogZmxleC1zdGFydDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgfQoKLm5rLXdnMS1pbWcgeyB3aWR0aDogODRweDsgbWFyZ2luLXJpZ2h0OiAwOyBtYXJnaW4tYm90dG9tOiAxLjVyZW07IGZsZXgtc2hyaW5rOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7IHBhZGRpbmc6IC4xMjVyZW07IH0KCi5uay13ZzEtdGV4dCB7IGNvbG9yOiAjODA5NGFlOyB9Cgoubmstd2cxLWFjdGlvbiB7IG1hcmdpbi10b3A6IGF1dG87IGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTVlOWYyOyB9Cgoubmstd2cxLWFjdGlvbiAubGluayB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgZGlzcGxheTogYmxvY2s7IGxpbmUtaGVpZ2h0OiAxLjM7IHBhZGRpbmc6IDEuMjVyZW07IHBhZGRpbmctcmlnaHQ6IDIuNXJlbTsgd2hpdGUtc3BhY2U6IGluaGVyaXQ7IH0KCi5uay13ZzEtYWN0aW9uIC5saW5rOmhvdmVyIHsgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjZmYTsgfQoKLm5rLXdnMS1hY3Rpb24gLmxpbmsgLmljb24geyBwb3NpdGlvbjogYWJzb2x1dGU7IHJpZ2h0OiAxLjI1cmVtOyBtYXJnaW4tcmlnaHQ6IC0uMjVyZW07IG1hcmdpbi10b3A6IC0xcHg7IH0KCi5uay13ZzEtYWN0aW9uIC5saW5rLWlubGluZSB7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgcGFkZGluZy1yaWdodDogLjI1cmVtOyB9Cgoubmstd2cxLWFjdGlvbiAubGluay1pbmxpbmUgLmljb24geyBwb3NpdGlvbjogc3RhdGljOyBwYWRkaW5nLWxlZnQ6IC4yNXJlbTsgbWFyZ2luLXJpZ2h0OiAwOyB9CgpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsgLm5rLXdnMS1ibG9jayB7IHBhZGRpbmc6IDEuNXJlbTsgfQogIC5uay13ZzEtYWN0aW9uIC5saW5rIHsgcGFkZGluZzogMS41cmVtOyBwYWRkaW5nLXJpZ2h0OiAyLjc1cmVtOyB9CiAgLm5rLXdnMS1hY3Rpb24gLmxpbmstaW5saW5lIHsgcGFkZGluZy1yaWdodDogLjI1cmVtOyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsgLm5rLXdnMS1pbWcgeyBtYXJnaW4tcmlnaHQ6IDEuNXJlbTsgbWFyZ2luLWJvdHRvbTogMDsgfQogIC5uay13ZzEtYmxvY2sgeyBmbGV4LWRpcmVjdGlvbjogcm93OyBhbGlnbi1pdGVtczogY2VudGVyOyBwYWRkaW5nLXRvcDogMnJlbTsgcGFkZGluZy1ib3R0b206IDJyZW07IH0gfQoKLm5rLWt5Yy1hcHAtaWNvbiB7IG1hcmdpbi1ib3R0b206IDJyZW07IH0KCi5uay1reWMtYXBwLWljb24gLmljb24geyBkaXNwbGF5OiBpbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGhlaWdodDogODBweDsgd2lkdGg6IDgwcHg7IGZvbnQtc2l6ZTogMzZweDsgYm9yZGVyLXJhZGl1czogNTAlOyBjb2xvcjogIzgwOTRhZTsgYm9yZGVyOiAycHggc29saWQgI2RiZGZlYTsgfQoKLm5rLWt5Yy1hcHAtdGV4dDpub3QoOmxhc3QtY2hpbGQpIHsgbWFyZ2luLWJvdHRvbTogMnJlbTsgfQoKLm5rLWt5Y2ZtLWhlYWQgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyB9Cgoubmsta3ljZm0taGVhZCwgLm5rLWt5Y2ZtLWNvbnRlbnQsIC5uay1reWNmbS1mb290ZXIgeyBwYWRkaW5nOiAxLjVyZW07IH0KCi5uay1reWNmbS1oZWFkOm5vdCg6bGFzdC1jaGlsZCksIC5uay1reWNmbS1jb250ZW50Om5vdCg6bGFzdC1jaGlsZCksIC5uay1reWNmbS1mb290ZXI6bm90KDpsYXN0LWNoaWxkKSB7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTVlOWYyOyB9Cgoubmsta3ljZm0tY291bnQgeyBkaXNwbGF5OiBpbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGhlaWdodDogNDRweDsgd2lkdGg6IDQ0cHg7IGZvbnQtc2l6ZTogMTZweDsgYm9yZGVyLXJhZGl1czogNTAlOyBjb2xvcjogIzUyNjQ4NDsgYm9yZGVyOiAycHggc29saWQgI2RiZGZlYTsgbWFyZ2luLXJpZ2h0OiAxcmVtOyBmbGV4LXNocmluazogMDsgfQoKLm5rLWt5Y2ZtLXRpdGxlIC50aXRsZSB7IG1hcmdpbjogLjI1cmVtIDA7IH0KCi5uay1reWNmbS1jb250ZW50IC50aXRsZSB7IG1hcmdpbi1ib3R0b206IC43NXJlbTsgfQoKLm5rLWt5Y2ZtLW5vdGUgeyBjb2xvcjogIzgwOTRhZTsgZGlzcGxheTogZmxleDsgfQoKLm5rLWt5Y2ZtLW5vdGU6bm90KDpsYXN0LWNoaWxkKSB7IG1hcmdpbi1ib3R0b206IDFyZW07IH0KCi5uay1reWNmbS1ub3RlIC5pY29uIHsgbWFyZ2luLXJpZ2h0OiAwLjVyZW07IGZvbnQtc2l6ZTogMC44NzVyZW07IGxpbmUtaGVpZ2h0OiAxLjY1OyB9Cgoubmsta3ljZm0tbGFiZWwgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBib3JkZXI6IDJweCBzb2xpZCAjZTVlOWYyOyBib3JkZXItcmFkaXVzOiA0cHg7IHBhZGRpbmc6IC41cmVtIDIuODc1cmVtIC41cmVtIDFyZW07IGZvbnQtc2l6ZTogMTNweDsgbGluZS1oZWlnaHQ6IDEuMzsgbGV0dGVyLXNwYWNpbmc6IC0wLjAxcmVtOyBmb250LXdlaWdodDogNTAwOyBjdXJzb3I6IHBvaW50ZXI7IHRyYW5zaXRpb246IGFsbCAuM3M7IG1hcmdpbi1ib3R0b206IDA7IH0KCi5uay1reWNmbS1sYWJlbDo6YWZ0ZXIgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHJpZ2h0OiAxLjM3NXJlbTsgdG9wOiA1MCU7IGhlaWdodDogMjBweDsgd2lkdGg6IDIwcHg7IGxpbmUtaGVpZ2h0OiAyMHB4OyBmb250LXNpemU6IDEycHg7IGJvcmRlci1yYWRpdXM6IDUwJTsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOyBmb250LWZhbWlseTogIk5pb2ljb24iOyBjb250ZW50OiAi7qa+IjsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQ6ICMwOTcxZmU7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyOyBvcGFjaXR5OiAwOyB0cmFuc2l0aW9uOiBvcGFjaXR5IC4zczsgfQoKLm5rLWt5Y2ZtLWxhYmVsLWljb24geyBwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzNHB4OyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBmbGV4LXNocmluazogMDsgbWFyZ2luLXJpZ2h0OiAxMnB4OyB9Cgoubmsta3ljZm0tbGFiZWwtaWNvbiAubGFiZWwtaWNvbiB7IHRyYW5zaXRpb246IGFsbCAuM3M7IGNvbG9yOiAjODA5NGFlOyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAyOHB4OyB9Cgoubmsta3ljZm0tY29udHJvbCB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgaGVpZ2h0OiAxcHg7IHdpZHRoOiAxcHg7IG9wYWNpdHk6IDA7IH0KCi5uay1reWNmbS1jb250cm9sLWxpc3QgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LXdyYXA6IHdyYXA7IH0KCi5uay1reWNmbS1jb250cm9sLWxpc3QgKyAqIHsgbWFyZ2luLXRvcDogMS4yNXJlbTsgfQoKLm5rLWt5Y2ZtLWNvbnRyb2wtaXRlbSB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgZmxleC1ncm93OiAxOyB9Cgoubmsta3ljZm0tY29udHJvbDpjaGVja2VkIH4gLm5rLWt5Y2ZtLWxhYmVsIHsgYm9yZGVyLWNvbG9yOiAjMDk3MWZlOyB9Cgoubmsta3ljZm0tY29udHJvbDpjaGVja2VkIH4gLm5rLWt5Y2ZtLWxhYmVsOmFmdGVyIHsgb3BhY2l0eTogMTsgfQoKLm5rLWt5Y2ZtLWNvbnRyb2w6Y2hlY2tlZCB+IC5uay1reWNmbS1sYWJlbCAubGFiZWwtaWNvbiB7IGNvbG9yOiAjMDk3MWZlOyB9Cgoubmsta3ljZm0tdXBsb2FkOm5vdCg6Zmlyc3QtY2hpbGQpIHsgbWFyZ2luLXRvcDogMS41cmVtOyB9CgpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsgLm5rLWt5Y2ZtLWhlYWQsIC5uay1reWNmbS1jb250ZW50LCAubmsta3ljZm0tZm9vdGVyIHsgcGFkZGluZzogMS41cmVtIDIuMjVyZW07IH0KICAubmsta3ljZm0tY29udGVudCB7IHBhZGRpbmctYm90dG9tOiAxLjc1cmVtOyB9CiAgLm5rLWt5Y2ZtLWZvb3RlciB7IHBhZGRpbmc6IDIuMjVyZW07IH0gfQoKLm5rLXJlZndnIHsgZGlzcGxheTogZmxleDsgZmxleC13cmFwOiB3cmFwOyB9CgoubmstcmVmd2ctaW52aXRlLCAubmstcmVmd2ctc3RhdHMgeyB3aWR0aDogMTAwJTsgfQoKLm5rLXJlZndnLWhlYWQgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IHBhZGRpbmctYm90dG9tOiAxLjVyZW07IH0KCi5uay1yZWZ3Zy1ncm91cCB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgZmxleC13cmFwOiB3cmFwOyBwYWRkaW5nLXJpZ2h0OiAzMHB4OyB9CgoubmstcmVmd2ctbmFtZSAudGl0bGUgeyBmb250LXNpemU6IDEzcHg7IGNvbG9yOiAjMDk3MWZlOyB9CgoubmstcmVmd2ctbmFtZSAudGl0bGUgLmljb24geyBjb2xvcjogIzgwOTRhZTsgZm9udC1zaXplOiAwLjc1cmVtOyBtYXJnaW4tbGVmdDogMC4xMjVyZW07IH0KCi5uay1yZWZ3Zy1pbmZvIHsgZmxleC1ncm93OiAxOyB0ZXh0LWFsaWduOiBjZW50ZXI7IGRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kOyB9CgoubmstcmVmd2ctaW5mbyAudGl0bGUgeyBmb250LXNpemU6IDEuMTI1cmVtOyBmb250LXdlaWdodDogNTAwOyB9CgoubmstcmVmd2ctbW9yZSB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgcmlnaHQ6IC00cHg7IHRvcDogLTJweDsgfQoKLm5rLXJlZndnIC5uay1yZWZ3Zy1pbnZpdGUgeyBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RiZGZlYTsgfQoKLm5rLXJlZndnLWNrIHsgaGVpZ2h0OiA1MHB4OyBtYXJnaW4tdG9wOiAwLjc1cmVtOyB9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsgLm5rLXJlZndnIC5uay1yZWZ3Zy1pbnZpdGUgeyB3aWR0aDogNTUlOyBib3JkZXItYm90dG9tOiBub25lOyBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZGJkZmVhOyB9CiAgLm5rLXJlZndnIC5uay1yZWZ3Zy1zdGF0cyB7IHdpZHRoOiA0NSU7IH0gfQoKLnRpbWVsaW5lIHsgY29sb3I6ICM4MDk0YWU7IGxpbmUtaGVpZ2h0OiAxLjM7IH0KCi50aW1lbGluZSArIC50aW1lbGluZSwgLnRpbWVsaW5lLWxpc3QgKyAudGltZWxpbmUtaGVhZCB7IG1hcmdpbi10b3A6IDEuNzVyZW07IH0KCi50aW1lbGluZS1oZWFkIHsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjogIzgwOTRhZTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgfQoKLnRpbWVsaW5lLWl0ZW0geyBwb3NpdGlvbjogcmVsYXRpdmU7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OyB9CgoudGltZWxpbmUtaXRlbTpub3QoOmxhc3QtY2hpbGQpIHsgcGFkZGluZy1ib3R0b206IDEuNXJlbTsgfQoKLnRpbWVsaW5lLWl0ZW06bm90KDpsYXN0LWNoaWxkKTpiZWZvcmUgeyBwb3NpdGlvbjogYWJzb2x1dGU7IGhlaWdodDogY2FsYygxMDAlIC0gMTFweCk7IHdpZHRoOiAxcHg7IGJhY2tncm91bmQ6ICNkYmRmZWE7IGNvbnRlbnQ6ICcnOyB0b3A6IDEzcHg7IGxlZnQ6IDVweDsgfQoKLnRpbWVsaW5lLXN0YXR1cyB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgaGVpZ2h0OiAxMXB4OyB3aWR0aDogMTFweDsgYm9yZGVyLXJhZGl1czogNTAlOyBmbGV4LXNocmluazogMDsgbWFyZ2luLXRvcDogMnB4OyB9CgoudGltZWxpbmUtc3RhdHVzLmlzLW91dGxpbmU6YWZ0ZXIgeyBwb3NpdGlvbjogYWJzb2x1dGU7IGhlaWdodDogN3B4OyB3aWR0aDogN3B4OyBib3JkZXItcmFkaXVzOiA1MCU7IGJhY2tncm91bmQ6ICNmZmY7IGNvbnRlbnQ6ICcnOyB0b3A6IDJweDsgbGVmdDogMnB4OyB9CgoudGltZWxpbmUtZGF0ZSB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6ICM4MDk0YWU7IHdpZHRoOiA5MHB4OyBtYXJnaW4tbGVmdDogLjc1cmVtOyBmbGV4LXNocmluazogMDsgbGluZS1oZWlnaHQ6IDFyZW07IH0KCi50aW1lbGluZS1kYXRlIC5pY29uIHsgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgY29sb3I6ICM4MDk0YWU7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgcG9zaXRpb246IGFic29sdXRlOyBtYXJnaW4tcmlnaHQ6IDAuMjVyZW07IHJpZ2h0OiAwOyB0b3A6IDJweDsgfQoKLnRpbWVsaW5lLWRhdGEgeyBwYWRkaW5nLWxlZnQ6IDhweDsgfQoKLnRpbWVsaW5lLXRpdGxlIHsgZm9udC1zaXplOiAxNXB4OyBjb2xvcjogIzM2NGE2MzsgbWFyZ2luLWJvdHRvbTogLjc1cmVtOyB9CgoudGltZWxpbmUtZGVzIHsgY29sb3I6ICM4MDk0YWU7IH0KCi50aW1lbGluZS1kZXMgcCB7IG1hcmdpbi1ib3R0b206IC4yNXJlbTsgfQoKLnRpbWVsaW5lIC50aW1lIHsgZGlzcGxheTogYmxvY2s7IGZvbnQtc2l6ZTogMTJweDsgY29sb3I6ICM4MDk0YWU7IH0KCkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgeyAudGltZWxpbmUgKyAudGltZWxpbmUsIC50aW1lbGluZS1saXN0ICsgLnRpbWVsaW5lLWhlYWQgeyBtYXJnaW4tdG9wOiAyLjVyZW07IH0gfQoKQG1lZGlhIChtYXgtd2lkdGg6IDQxM3B4KSB7IC50aW1lbGluZS1pdGVtIHsgZmxleC13cmFwOiB3cmFwOyB9CiAgLnRpbWVsaW5lLWRhdGUgeyB3aWR0aDogODBweDsgfQogIC50aW1lbGluZS1kYXRhIHsgcGFkZGluZzogLjc1cmVtIDAgMCAyNHB4OyB9IH0KCi5jb2luLWl0ZW0geyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBwYWRkaW5nOiAxNnB4IDIwcHg7IH0KCi5jb2luLWljb24geyBkaXNwbGF5OiBpbmxpbmUtZmxleDsgZmxleC1zaHJpbms6IDA7IH0KCi5jb2luLWljb24gLmljb24geyBmb250LXNpemU6IDMxcHg7IGhlaWdodDogMzJweDsgd2lkdGg6IDMycHg7IGNvbG9yOiAjODA5NGFlOyB9CgouY29pbi1idGMgLmNvaW4taWNvbiAuaWNvbiB7IGNvbG9yOiAjZjk4NDFlOyB9CgouY29pbi1pY29uICsgLmNvaW4taW5mbyB7IG1hcmdpbi1sZWZ0OiAxMnB4OyB9CgouY29pbi1uYW1lIHsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjogIzM2NGE2MzsgZGlzcGxheTogYmxvY2s7IH0KCi5jb2luLXRleHQgeyBmb250LXNpemU6IDEycHg7IGNvbG9yOiAjODA5NGFlOyBkaXNwbGF5OiBibG9jazsgfQoKLmludm9pY2UgeyBwb3NpdGlvbjogcmVsYXRpdmU7IH0KCi5pbnZvaWNlLXdyYXAgeyBwYWRkaW5nOiAxLjI1cmVtOyBib3JkZXI6IDFweCBzb2xpZCAjZGJkZmVhOyBib3JkZXItcmFkaXVzOiA0cHg7IGJhY2tncm91bmQ6ICNmZmY7IH0KCi5pbnZvaWNlLWFjdGlvbiB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgcmlnaHQ6IDEuMjVyZW07IHRvcDogMS4yNXJlbTsgfQoKLmludm9pY2UtYnJhbmQgeyBwYWRkaW5nLWJvdHRvbTogMS41cmVtOyB9CgouaW52b2ljZS1icmFuZCBpbWcgeyBtYXgtaGVpZ2h0OiA2MHB4OyB9CgouaW52b2ljZS1iaWxscyB7IGZvbnQtc2l6ZTogMTJweDsgfQoKLmludm9pY2UtYmlsbHMgLnRhYmxlIHsgbWluLXdpZHRoOiA1ODBweDsgfQoKLmludm9pY2UtYmlsbHMgLnRhYmxlIHRoIHsgY29sb3I6ICMwOTcxZmU7IGZvbnQtc2l6ZTogMTJweDsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgYm9yZGVyLXRvcDogMDsgfQoKLmludm9pY2UtYmlsbHMgLnRhYmxlIHRoOmxhc3QtY2hpbGQsIC5pbnZvaWNlLWJpbGxzIC50YWJsZSB0ZDpsYXN0LWNoaWxkIHsgdGV4dC1hbGlnbjogcmlnaHQ7IH0KCi5pbnZvaWNlLWJpbGxzIC50YWJsZSB0Zm9vdCB7IGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGJkZmVhOyB9CgouaW52b2ljZS1iaWxscyAudGFibGUgdGZvb3QgdGQgeyBib3JkZXItdG9wOiAwOyB3aGl0ZS1zcGFjZTogbm93cmFwOyBwYWRkaW5nLXRvcDogLjI1cmVtOyBwYWRkaW5nLWJvdHRvbTogLjI1cmVtOyB9CgouaW52b2ljZS1iaWxscyAudGFibGUgdGZvb3QgdHI6bGFzdC1jaGlsZCB0ZDpub3QoOmZpcnN0LWNoaWxkKSwgLmludm9pY2UtYmlsbHMgLnRhYmxlIHRmb290IHRyOmZpcnN0LWNoaWxkIHRkOm5vdCg6Zmlyc3QtY2hpbGQpIHsgZm9udC13ZWlnaHQ6IDUwMDsgcGFkZGluZy10b3A6IDEuMjVyZW07IHBhZGRpbmctYm90dG9tOiAuMjVyZW07IH0KCi5pbnZvaWNlLWJpbGxzIC50YWJsZSB0Zm9vdCB0cjpsYXN0LWNoaWxkIHRkOm5vdCg6Zmlyc3QtY2hpbGQpIHsgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkYmRmZWE7IHBhZGRpbmctdG9wOiAuMjVyZW07IHBhZGRpbmctYm90dG9tOiAuMjVyZW07IH0KCi5pbnZvaWNlLWhlYWQgeyBwYWRkaW5nLWJvdHRvbTogMS41cmVtOyBkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IH0KCi5pbnZvaWNlLWRlc2MgeyB3aWR0aDogMjEwcHg7IHBhZGRpbmctdG9wOiAxLjVyZW07IH0KCi5pbnZvaWNlLWRlc2MgLnRpdGxlIHsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgY29sb3I6ICMwOTcxZmU7IH0KCi5pbnZvaWNlLWRlc2MgdWwgbGkgeyBwYWRkaW5nOiAuMjVyZW0gMDsgfQoKLmludm9pY2UtZGVzYyB1bCBzcGFuIHsgZm9udC1zaXplOiAxM3B4OyBmb250LXdlaWdodDogNTAwOyBjb2xvcjogIzUyNjQ4NDsgfQoKLmludm9pY2UtZGVzYyB1bCBzcGFuOmZpcnN0LWNoaWxkIHsgbWluLXdpZHRoOiA5MHB4OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IGxldHRlci1zcGFjaW5nOiAxcHg7IGNvbG9yOiAjODA5NGFlOyB9CgouaW52b2ljZS1kZXNjIHVsIHNwYW46bGFzdC1jaGlsZCB7IHBhZGRpbmctbGVmdDogMC43NXJlbTsgfQoKLmludm9pY2UtY29udGFjdCAudGl0bGUgeyBtYXJnaW4tYm90dG9tOiAxcmVtOyB9CgouaW52b2ljZS1jb250YWN0IHVsIGxpIHsgcGFkZGluZzogLjVyZW0gMDsgbGluZS1oZWlnaHQ6IDEuMzsgfQoKLmludm9pY2UtY29udGFjdCB1bCBsaTpmaXJzdC1jaGlsZCB7IHBhZGRpbmctdG9wOiAwOyB9CgouaW52b2ljZS1jb250YWN0IHVsIGxpOmxhc3QtY2hpbGQgeyBwYWRkaW5nLWJvdHRvbTogMDsgfQoKLmludm9pY2UtY29udGFjdCB1bCAuaWNvbiB7IGxpbmUtaGVpZ2h0OiAxLjM7IGZvbnQtc2l6ZTogMS4xZW07IGRpc3BsYXk6IGlubGluZS1ibG9jazsgdmVydGljYWwtYWxpZ246IHRvcDsgbWFyZ2luLXRvcDogLTJweDsgY29sb3I6ICMwOTcxZmU7IG1hcmdpbi1yaWdodDogLjVyZW07IH0KCi5pbnZvaWNlLWNvbnRhY3QgdWwgLmljb24gKyBzcGFuIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB2ZXJ0aWNhbC1hbGlnbjogdG9wOyBjb2xvcjogIzgwOTRhZTsgfQoKLmludm9pY2UtcHJpbnQgeyBtYXgtd2lkdGg6IDk0MHB4OyBtYXJnaW46IDJyZW0gYXV0bzsgfQoKLmludm9pY2UtcHJpbnQgLmludm9pY2Utd3JhcCB7IHBhZGRpbmc6IDA7IGJvcmRlcjogbm9uZSAhaW1wb3J0YW50OyB9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsgLmludm9pY2Utd3JhcCB7IHBhZGRpbmc6IDNyZW07IH0KICAuaW52b2ljZS1oZWFkIHsgZmxleC1kaXJlY3Rpb246IHJvdzsgfQogIC5pbnZvaWNlLWRlc2MgeyBwYWRkaW5nLXRvcDogMDsgfQogIC5pbnZvaWNlLWJpbGxzIHsgZm9udC1zaXplOiAwLjg3NXJlbTsgfSB9Cgoubmstb3JkZXItb3Z3Zy1jayB7IGhlaWdodDogMTgwcHg7IH0KCi5uay1vcmRlci1vdndnLWRhdGEgeyBwYWRkaW5nOiAwLjc1cmVtIDEuMjVyZW0gMS4yNXJlbTsgYm9yZGVyOiAycHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1yYWRpdXM6IDRweDsgfQoKLm5rLW9yZGVyLW92d2ctZGF0YSAuYW1vdW50IHsgZm9udC1zaXplOiAxLjVyZW07IGZvbnQtd2VpZ2h0OiA3MDA7IH0KCi5uay1vcmRlci1vdndnLWRhdGEgLmFtb3VudCBzbWFsbCB7IGZvbnQtd2VpZ2h0OiA0MDA7IH0KCi5uay1vcmRlci1vdndnLWRhdGEgLmluZm8geyBmb250LXNpemU6IDEycHg7IGNvbG9yOiAjODA5NGFlOyBtYXJnaW4tYm90dG9tOiAuMjVyZW07IH0KCi5uay1vcmRlci1vdndnLWRhdGEgLmluZm8gc3Ryb25nIHsgY29sb3I6ICMzNjRhNjM7IH0KCi5uay1vcmRlci1vdndnLWRhdGEgLnRpdGxlIHsgZm9udC1zaXplOiAxNHB4OyBsaW5lLWhlaWdodDogMS4zOyBjb2xvcjogIzgwOTRhZTsgZm9udC13ZWlnaHQ6IDUwMDsgfQoKLm5rLW9yZGVyLW92d2ctZGF0YSAudGl0bGUgLmljb24geyBmb250LXNpemU6IDFyZW07IGhlaWdodDogMjhweDsgd2lkdGg6IDI4cHg7IGJvcmRlci1yYWRpdXM6IDUwJTsgYmFja2dyb3VuZDogI2Y1ZjZmYTsgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyOyBtYXJnaW4tcmlnaHQ6IDAuNXJlbTsgfQoKLm5rLW9yZGVyLW92d2ctZGF0YS5idXkgeyBib3JkZXItY29sb3I6ICM4ZmYwZDY7IH0KCi5uay1vcmRlci1vdndnLWRhdGEuYnV5IC5hbW91bnQsIC5uay1vcmRlci1vdndnLWRhdGEuYnV5IC50aXRsZSAuaWNvbiB7IGNvbG9yOiAjMWVlMGFjOyB9Cgoubmstb3JkZXItb3Z3Zy1kYXRhLnNlbGwgeyBib3JkZXItY29sb3I6ICM4NGI4ZmY7IH0KCi5uay1vcmRlci1vdndnLWRhdGEuc2VsbCAuYW1vdW50LCAubmstb3JkZXItb3Z3Zy1kYXRhLnNlbGwgLnRpdGxlIC5pY29uIHsgY29sb3I6ICMwOTcxZmU7IH0KCkBtZWRpYSAobWluLXdpZHRoOiAxNTQwcHgpIHsgLm5rLW9yZGVyLW92d2ctY2sgeyBoZWlnaHQ6IDI2MHB4OyB9IH0KCi5uay13Zy1hY3Rpb24geyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IH0KCi5uay13Zy1hY3Rpb24tY29udGVudCB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgcGFkZGluZy1sZWZ0OiAycmVtOyBwYWRkaW5nLXJpZ2h0OiAuNXJlbTsgfQoKLm5rLXdnLWFjdGlvbi1jb250ZW50IC5pY29uIHsgZm9udC1zaXplOiAxLjVyZW07IGxlZnQ6IDA7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgY29sb3I6ICM4MDk0YWU7IH0KCi5uay13Zy1hY3Rpb24tY29udGVudCAudGl0bGUgeyBmb250LXNpemU6IDE0cHg7IGZvbnQtd2VpZ2h0OiA1MDA7IHBhZGRpbmctYm90dG9tOiAwLjI1cmVtOyB9Cgoubmstd2ctYWN0aW9uLWNvbnRlbnQgcCB7IGNvbG9yOiAjODA5NGFlOyBmb250LXNpemU6IDEzcHg7IGxpbmUtaGVpZ2h0OiAxLjI1cmVtOyB9Cgoubmstd2ctYWN0aW9uLWNvbnRlbnQgcCBzdHJvbmcgeyBjb2xvcjogIzA5NzFmZTsgfQoKLm5rLWNvaW4tb3Z3ZyB7IGRpc3BsYXk6IGZsZXg7IH0KCi5uay1jb2luLW92d2ctY2sgeyBmbGV4LWdyb3c6IDE7IGhlaWdodDogMTY1cHg7IH0KCi5uay1jb2luLW92d2ctbGVnZW5kcyB7IHdpZHRoOiAxMDBweDsgZmxleC1zaHJpbms6IDA7IH0KCi5uay1jb2luLW92d2ctbGVnZW5kcyBsaSB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGxpbmUtaGVpZ2h0OiAxLjI1cmVtOyBmb250LXNpemU6IDEycHg7IHBhZGRpbmc6IC4yNXJlbSAwOyBjb2xvcjogIzgwOTRhZTsgfQoKLm5rLWNvaW4tb3Z3Zy1sZWdlbmRzIGxpIC5kb3QgeyBtYXJnaW4tcmlnaHQ6IDAuNXJlbTsgfQoKLm5rLXRiLW9yZGVycy10eXBlIHsgd2lkdGg6IDY2cHg7IH0KCi5uay1zYWxlLWRhdGEgeyBmbGV4LXNocmluazogMDsgfQoKLm5rLXNhbGUtZGF0YS1ncm91cCB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtd3JhcDogd3JhcDsgfQoKLm5rLXNhbGUtZGF0YSAuYW1vdW50IHsgZGlzcGxheTogYmxvY2s7IGZvbnQtc2l6ZTogMS43NXJlbTsgY29sb3I6ICMzNjRhNjM7IH0KCi5uay1zYWxlLWRhdGEgLmFtb3VudCAuY2hhbmdlIHsgZm9udC1zaXplOiAuODc1cmVtOyB9Cgoubmstc2FsZS1kYXRhIC5hbW91bnQuc20geyBmb250LXNpemU6IDEuMTI1cmVtOyBjb2xvcjogIzgwOTRhZTsgfQoKLm5rLXNhbGUtZGF0YSAuc3ViLXRpdGxlIHsgY29sb3I6ICM4MDk0YWU7IGZvbnQtc2l6ZTogMTJweDsgfQoKLm5rLXNhbGUtZGF0YSAuc3ViLXRpdGxlIC5jaGFuZ2UgeyBtYXJnaW4tcmlnaHQ6IDAuNXJlbTsgfQoKLm5rLXNhbGVzLWNrIHsgaGVpZ2h0OiA4MHB4OyBmbGV4LWdyb3c6IDE7IH0KCi5uay1zYWxlcy1jay5sYXJnZSB7IGhlaWdodDogMjAwcHg7IH0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgYW5kIChtYXgtd2lkdGg6IDE1MzkuOThweCkgeyAubmstc2FsZXMtY2suc2FsZXMtcmV2ZW51ZSB7IGhlaWdodDogMTY0cHg7IH0gfQoKLm5rLWFjdGl2aXR5LWl0ZW0geyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBwYWRkaW5nOiAxLjI1cmVtOyB9CgoubmstYWN0aXZpdHktaXRlbTpub3QoOmxhc3QtY2hpbGQpIHsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlNWU5ZjI7IH0KCi5uay1hY3Rpdml0eS1kYXRhIHsgbWFyZ2luLWxlZnQ6IDFyZW07IH0KCi5uay1hY3Rpdml0eS1kYXRhIC50aW1lIHsgZGlzcGxheTogYmxvY2s7IGZvbnQtc2l6ZTogMTJweDsgY29sb3I6ICM4MDk0YWU7IGxpbmUtaGVpZ2h0OiAxLjM7IH0KCkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgeyAubmstYWN0aXZpdHktaXRlbSB7IGRpc3BsYXk6IGZsZXg7IHBhZGRpbmc6IDFyZW0gMS41cmVtOyB9IH0KCi5uay1zdXBwb3J0LWl0ZW0geyBkaXNwbGF5OiBmbGV4OyBwYWRkaW5nOiAxLjI1cmVtOyB9Cgoubmstc3VwcG9ydC1pdGVtOm5vdCg6bGFzdC1jaGlsZCkgeyBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2U1ZTlmMjsgfQoKLm5rLXN1cHBvcnQtY29udGVudCB7IGZsZXgtZ3JvdzogMTsgbWFyZ2luLWxlZnQ6IDFyZW07IH0KCi5uay1zdXBwb3J0LWNvbnRlbnQgLnRpdGxlIHsgZm9udC1zaXplOiAwLjg3NXJlbTsgZm9udC13ZWlnaHQ6IDcwMDsgY29sb3I6ICMzNjRhNjM7IGRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgYWxpZ24taXRlbXM6IGNlbnRlcjsgfQoKLm5rLXN1cHBvcnQtY29udGVudCBwIHsgbWFyZ2luLWJvdHRvbTogMDsgbWFyZ2luLXRvcDogMC4yNXJlbTsgfQoKLm5rLXN1cHBvcnQtY29udGVudCAudGltZSB7IGRpc3BsYXk6IGJsb2NrOyBmb250LXNpemU6IDEycHg7IGNvbG9yOiAjODA5NGFlOyB9CgpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsgLm5rLXN1cHBvcnQtaXRlbSB7IGRpc3BsYXk6IGZsZXg7IHBhZGRpbmc6IDEuMjVyZW0gMS41cmVtOyB9IH0KCi5kZXZpY2Utc3RhdHVzIHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgcGFkZGluZy10b3A6IDFyZW07IH0KCi5kZXZpY2Utc3RhdHVzLWNrIHsgaGVpZ2h0OiAxNjBweDsgbWFyZ2luOiBhdXRvIDA7IH0KCi5kZXZpY2Utc3RhdHVzLWdyb3VwIHsgZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyBwYWRkaW5nLXRvcDogMS43NXJlbTsgbWFyZ2luOiBhdXRvOyB3aWR0aDogMjgwcHg7IG1heC13aWR0aDogMTAwJTsgfQoKLmRldmljZS1zdGF0dXMtZGF0YSA+IC5pY29uIHsgZm9udC1zaXplOiAxLjVyZW07IH0KCi5kZXZpY2Utc3RhdHVzLWRhdGEgLnRpdGxlIHsgZm9udC1zaXplOiAxMnB4OyBjb2xvcjogIzgwOTRhZTsgbWFyZ2luLWJvdHRvbTogMC41cmVtOyB9CgouZGV2aWNlLXN0YXR1cy1kYXRhIC5hbW91bnQgeyBmb250LXNpemU6IDEuMTI1cmVtOyBjb2xvcjogIzM2NGE2MzsgZm9udC13ZWlnaHQ6IDUwMDsgfQoKLmRldmljZS1zdGF0dXMtZGF0YSAuY2hhbmdlIHsgbWFyZ2luLWxlZnQ6IC0uMTI1cmVtOyB9CgoudHJhZmZpYy1jaGFubmVsIHsgbWFyZ2luLXRvcDogMXJlbTsgfQoKLnRyYWZmaWMtY2hhbm5lbC1jayB7IGhlaWdodDogNDRweDsgd2lkdGg6IDEzMHB4OyBtYXJnaW4tdG9wOiAtNHB4OyBtYXJnaW4tYm90dG9tOiAtNHB4OyB9CgoudHJhZmZpYy1jaGFubmVsLWRvdWdobnV0LWNrIHsgaGVpZ2h0OiAxNjBweDsgfQoKLnRyYWZmaWMtY2hhbm5lbC1ncm91cCB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtd3JhcDogd3JhcDsgcGFkZGluZy10b3A6IDEuNzVyZW07IG1hcmdpbi1sZWZ0OiBhdXRvICFpbXBvcnRhbnQ7IG1hcmdpbi1yaWdodDogYXV0byAhaW1wb3J0YW50OyB3aWR0aDogMzIwcHg7IG1heC13aWR0aDogMTAwJTsgfQoKLnRyYWZmaWMtY2hhbm5lbC1kYXRhIHsgd2lkdGg6IDUwJTsgfQoKLnRyYWZmaWMtY2hhbm5lbC1kYXRhIC50aXRsZSB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGNvbG9yOiAjODA5NGFlOyBmb250LXNpemU6IDEycHg7IH0KCi50cmFmZmljLWNoYW5uZWwtZGF0YSAudGl0bGUgLmRvdCB7IG1hcmdpbi1yaWdodDogMC41cmVtOyB9CgoudHJhZmZpYy1jaGFubmVsLWRhdGEgLmFtb3VudCB7IGZvbnQtc2l6ZTogMS4xMjVyZW07IGNvbG9yOiAjMzY0YTYzOyBtYXJnaW4tbGVmdDogMS4yNXJlbTsgfQoKLnRyYWZmaWMtY2hhbm5lbC1kYXRhIC5hbW91bnQgc21hbGwgeyBmb250LXNpemU6IDEycHg7IGNvbG9yOiAjODA5NGFlOyB9CgpAbWVkaWEgKG1heC13aWR0aDogNTc1Ljk4cHgpIHsgLnRyYWZmaWMtY2hhbm5lbC1jayB7IHdpZHRoOiAxMDAlOyB9CiAgLnRyYWZmaWMtY2hhbm5lbC10YWJsZSAubmstdGItaXRlbSB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtd3JhcDogd3JhcDsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlNWU5ZjI7IHBhZGRpbmc6IDEuMTI1cmVtIDA7IH0KICAudHJhZmZpYy1jaGFubmVsLXRhYmxlIC5uay10Yi1jb2wgeyBib3JkZXItYm90dG9tOiBub25lICFpbXBvcnRhbnQ7IHBhZGRpbmctdG9wOiAwICFpbXBvcnRhbnQ7IHBhZGRpbmctYm90dG9tOiAwICFpbXBvcnRhbnQ7IH0KICAudHJhZmZpYy1jaGFubmVsLXRhYmxlIC5uay10Yi1jaGFubmVsIHsgd2lkdGg6IDUwJTsgfQogIC50cmFmZmljLWNoYW5uZWwtdGFibGUgLm5rLXRiLXNlc3Npb25zIHsgd2lkdGg6IDI1JTsgfQogIC50cmFmZmljLWNoYW5uZWwtdGFibGUgLm5rLXRiLXByZXYtc2Vzc2lvbnMgeyBkaXNwbGF5OiBub25lOyB9CiAgLnRyYWZmaWMtY2hhbm5lbC10YWJsZSAubmstdGItY2hhbmdlIHsgd2lkdGg6IDI1JTsgfQogIC50cmFmZmljLWNoYW5uZWwtdGFibGUgLm5rLXRiLXRyZW5kIHsgd2lkdGg6IDEwMCU7IHBhZGRpbmctbGVmdDogMS4yNXJlbTsgfSB9CgpAbWVkaWEgKG1pbi13aWR0aDogMTU0MHB4KSBhbmQgKG1heC13aWR0aDogMTgwMHB4KSB7IC50cmFmZmljLWNoYW5uZWwtZGF0YSAuYW1vdW50IHsgZm9udC1zaXplOiAxcmVtOyB9IH0KCi5hbmFseXRpYy1kYXRhLWdyb3VwIHsgZGlzcGxheTogZmxleDsgZmxleC13cmFwOiB3cmFwOyB9CgouYW5hbHl0aWMtZGF0YSAudGl0bGUgeyBmb250LXNpemU6IDEycHg7IGZvbnQtd2VpZ2h0OiA1MDA7IGNvbG9yOiAjODA5NGFlOyBtYXJnaW4tYm90dG9tOiAwLjM3NXJlbTsgfQoKLmFuYWx5dGljLWRhdGEgLnRpdGxlIHNwYW4geyBmb250LXdlaWdodDogNDAwOyB9CgouYW5hbHl0aWMtZGF0YSAuYW1vdW50IHsgY29sb3I6ICMzNjRhNjM7IGZvbnQtc2l6ZTogMS41cmVtOyBsaW5lLWhlaWdodDogMS4yOyBtYXJnaW4tYm90dG9tOiAwLjI1cmVtOyB9CgouYW5hbHl0aWMtZGF0YSAuYW1vdW50LXNtIHsgZm9udC1zaXplOiAxLjEyNXJlbTsgfQoKLmFuYWx5dGljLWRhdGEgLmNoYW5nZSB7IGZvbnQtc2l6ZTogMTNweDsgbWFyZ2luLWxlZnQ6IC0wLjEyNXJlbTsgfQoKLmFuYWx5dGljLWRhdGEgLnN1YnRpdGxlIHsgZm9udC1zaXplOiAxMnB4OyBjb2xvcjogIzgwOTRhZTsgfQoKQG1lZGlhIChtaW4td2lkdGg6IDE1NDBweCkgYW5kIChtYXgtd2lkdGg6IDE4MDBweCkgeyAuYW5hbHl0aWMtZGF0YSAuYW1vdW50IHsgZm9udC1zaXplOiAxLjI1cmVtOyBsaW5lLWhlaWdodDogMS43NXJlbTsgfQogIC5hbmFseXRpYy1kYXRhIC5hbW91bnQtc20geyBmb250LXNpemU6IDEuMTI1cmVtOyB9IH0KCi5hbmFseXRpYy1vdi1kYXRhIHsgd2lkdGg6IDUwJTsgfQoKLmFuYWx5dGljLW92LWNrIHsgaGVpZ2h0OiAxNzVweDsgbWFyZ2luLXRvcDogMnJlbTsgfQoKQG1lZGlhIChtaW4td2lkdGg6IDQ4MHB4KSB7IC5hbmFseXRpYy1vdi1kYXRhIHsgd2lkdGg6IDI1JTsgfSB9CgouYW5hbHl0aWMtYXUtZGF0YSB7IHdpZHRoOiAzMy4zMzMzJTsgfQoKLmFuYWx5dGljLWF1LWNrIHsgaGVpZ2h0OiAxNzBweDsgbWFyZ2luLXRvcDogMi4yNXJlbTsgfQoKLmFuYWx5dGljLXdwLWRhdGEgeyBkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IGFsaWduLWl0ZW1zOiBmbGV4LWVuZDsgfQoKLmFuYWx5dGljLXdwLWNrIHsgaGVpZ2h0OiAzNnB4OyB9CgouYW5hbHl0aWMtd3AtZ3JhcGggeyB3aWR0aDogMTUwcHg7IG1hcmdpbi10b3A6IDAuMTI1cmVtOyBtYXJnaW4tYm90dG9tOiAwLjEyNXJlbTsgfQoKLmFuYWx5dGljLXdwLWdyYXBoIC50aXRsZSB7IG1hcmdpbi1ib3R0b206IDA7IH0KCi5hbmFseXRpYy13cC10ZXh0IHsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1sZWZ0OiAuNXJlbTsgfQoKQG1lZGlhIChtaW4td2lkdGg6IDQyMHB4KSBhbmQgKG1heC13aWR0aDogNzY3cHgpIHsgLmFuYWx5dGljLXdwLWdyYXBoIHsgd2lkdGg6IDYwJTsgfSB9CgpAbWVkaWEgKG1pbi13aWR0aDogMTU0MHB4KSBhbmQgKG1heC13aWR0aDogMTgwMHB4KSB7IC5hbmFseXRpYy13cC1ncmFwaCB7IHdpZHRoOiAxMjBweDsgfSB9CgouY2hhcnQtbGFiZWwgeyBmb250LXNpemU6IDEycHg7IGNvbG9yOiAjODA5NGFlOyB9CgouY2hhcnQtbGFiZWwtZ3JvdXAgeyBtYXJnaW4tdG9wOiAwLjVyZW07IGRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgfQoKLmFuYWx5dGljcy1tYXAgLnZlY3Rvci1tYXAgeyBoZWlnaHQ6IDE2MHB4OyBtYXJnaW46IDFyZW0gMDsgfQoKLmFuYWx5dGljcy1tYXAtZGF0YSB7IGZvbnQtc2l6ZTogLjg3NXJlbTsgfQoKLmFuYWx5dGljcy1tYXAtZGF0YSB0ZCB7IHBhZGRpbmc6IC4yNXJlbSAwOyB9CgouYW5hbHl0aWNzLW1hcC1kYXRhIC5jb3VudHJ5IHsgY29sb3I6ICM4MDk0YWU7IH0KCi5hbmFseXRpY3MtbWFwLWRhdGEgLmFtb3VudCB7IGNvbG9yOiAjMzY0YTYzOyB0ZXh0LWFsaWduOiByaWdodDsgfQoKLmFuYWx5dGljcy1tYXAtZGF0YSAucGVyY2VudCB7IHRleHQtYWxpZ246IHJpZ2h0OyBjb2xvcjogIzgwOTRhZTsgfQoKLmFuYWx5dGljcy1tYXAtZGF0YS1saXN0IHsgd2lkdGg6IDEwMCU7IG1hcmdpbi1ib3R0b206IC0wLjI1cmVtOyB9CgouY2FyZC10aXRsZSAuc3VidGl0bGUgeyBjb2xvcjogIzgwOTRhZTsgZm9udC1zaXplOiAxM3B4OyBmb250LXdlaWdodDogNTAwOyB9CgouY2FyZC1hbW91bnQgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogYmFzZWxpbmU7IH0KCi5jYXJkLWFtb3VudCAuY2hhbmdlIHsgbWFyZ2luLWxlZnQ6IC41cmVtOyB9CgouY2FyZC1hbW91bnQgLmFtb3VudCB7IGZvbnQtc2l6ZTogMS41cmVtOyBjb2xvcjogIzM2NGE2MzsgfQoKLmNhcmQtYW1vdW50IC5hbW91bnQgc3BhbiB7IGNvbG9yOiAjNTI2NDg0OyB9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWF4LXdpZHRoOiA5OTEuOThweCkgeyAuY2FyZC1hbW91bnQgLmFtb3VudCB7IGZvbnQtc2l6ZTogMXJlbTsgZm9udC13ZWlnaHQ6IDUwMDsgfQogIC5jYXJkLWFtb3VudCAuYW1vdW50IHNwYW4geyBmb250LXdlaWdodDogNDAwOyB9CiAgLmNhcmQtYW1vdW50IC5jaGFuZ2UgeyBmb250LXNpemU6IDEycHg7IH0gfQoKLmNhcmQtaW5uZXIgLm5hdi10YWJzLWNhcmQgeyBtYXJnaW4tbGVmdDogLTEuMjVyZW07IG1hcmdpbi1yaWdodDogLTEuMjVyZW07IH0KCkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgeyAuY2FyZC1pbm5lciAubmF2LXRhYnMtY2FyZCB7IG1hcmdpbi1sZWZ0OiAtMS41cmVtOyBtYXJnaW4tcmlnaHQ6IC0xLjVyZW07IH0gfQoKLm5hdi10YWJzLXhzIC5uYXYtbGluayB7IHBhZGRpbmc6IC43NXJlbSAwOyBmb250LXNpemU6IDEzcHg7IGZvbnQtd2VpZ2h0OiA1MDA7IH0KCkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgeyAubmF2LXRhYnMteHMgLm5hdi1pdGVtIHsgcGFkZGluZy1yaWdodDogMS4yNXJlbTsgfSB9CgpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHsgLm5hdi10YWJzLXNtIC5uYXYtaXRlbSB7IHBhZGRpbmctcmlnaHQ6IDEuMjVyZW07IH0gfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgeyAubmF2LXRhYnMtc20gLm5hdi1pdGVtIHsgcGFkZGluZy1yaWdodDogMS4yNXJlbTsgfSB9CgouaW52ZXN0LWRhdGEgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogZmxleC1lbmQ7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgfQoKLmludmVzdC1kYXRhLWhpc3RvcnkgeyBtYXJnaW4tcmlnaHQ6IDIwcHg7IGZsZXgtZ3JvdzogMTsgfQoKLmludmVzdC1kYXRhLWhpc3RvcnkgLnRpdGxlIHsgZm9udC1zaXplOiAxMXB4OyBjb2xvcjogIzgwOTRhZTsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgbWFyZ2luLWJvdHRvbTogMC4xMjVyZW07IGxldHRlci1zcGFjaW5nOiAwLjFlbTsgfQoKLmludmVzdC1kYXRhLWhpc3RvcnkgLmFtb3VudCB7IGZvbnQtc2l6ZTogLjkzNzVyZW07IGxpbmUtaGVpZ2h0OiAxLjE7IGNvbG9yOiAjMzY0YTYzOyB9CgouaW52ZXN0LWRhdGEtaGlzdG9yeSAuYW1vdW50IHNwYW4geyBjb2xvcjogIzUyNjQ4NDsgfQoKLmludmVzdC1kYXRhLWFtb3VudCB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtc2hyaW5rOiAwOyBmbGV4LWdyb3c6IDE7IH0KCi5pbnZlc3QtZGF0YS1jayB7IGZsZXgtZ3JvdzogMTsgaGVpZ2h0OiA0OHB4OyB3aWR0aDogODBweDsgbWFyZ2luLWJvdHRvbTogMC4xMjVyZW07IH0KCkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDE1NDBweCksIChtYXgtd2lkdGg6IDM1OXB4KSB7IC5pbnZlc3QtZGF0YSB7IG1hcmdpbi10b3A6IDAuNzVyZW07IH0KICAuaW52ZXN0LWRhdGEtYW1vdW50IHsgZmxleC13cmFwOiB3cmFwOyBmbGV4LXNocmluazogMTsgfQogIC5pbnZlc3QtZGF0YS1jayB7IGhlaWdodDogNjhweDsgd2lkdGg6IDE0MHB4OyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgYW5kIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7IC5pbnZlc3QtZGF0YS1oaXN0b3J5IC5hbW91bnQgeyBmb250LXNpemU6IC43NXJlbTsgZm9udC13ZWlnaHQ6IDcwMDsgfQogIC5pbnZlc3QtZGF0YS1oaXN0b3J5IC5hbW91bnQgc3BhbiB7IGZvbnQtd2VpZ2h0OiA0MDA7IH0gfQoKLmludmVzdC1vdiB7IHBhZGRpbmc6IDEuMjVyZW0gMCAxcmVtOyB9CgouaW52ZXN0LW92Omxhc3QtY2hpbGQgeyBwYWRkaW5nLWJvdHRvbTogMDsgfQoKLmludmVzdC1vdjpub3QoOmxhc3QtY2hpbGQpIHsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlNWU5ZjI7IH0KCi5pbnZlc3Qtb3YgLnN1YnRpdGxlIHsgY29sb3I6ICM4MDk0YWU7IGZvbnQtc2l6ZTogMTNweDsgZm9udC13ZWlnaHQ6IDUwMDsgbWFyZ2luLWJvdHRvbTogMC4yNXJlbTsgfQoKLmludmVzdC1vdiAudGl0bGUgeyBmb250LXNpemU6IDExcHg7IGNvbG9yOiAjODA5NGFlOyB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOyBtYXJnaW4tdG9wOiAwLjI1cmVtOyBsZXR0ZXItc3BhY2luZzogMC4xZW07IH0KCi5pbnZlc3Qtb3YgLmFtb3VudCB7IGZvbnQtc2l6ZTogMS4yNXJlbTsgbGluZS1oZWlnaHQ6IDEuMTsgY29sb3I6ICMzNjRhNjM7IH0KCi5pbnZlc3Qtb3YgLmFtb3VudCBzcGFuIHsgY29sb3I6ICM1MjY0ODQ7IH0KCi5pbnZlc3Qtb3YtZGV0YWlscyB7IGRpc3BsYXk6IGZsZXg7IH0KCi5pbnZlc3Qtb3YtaW5mbyB7IHdpZHRoOiA2MCU7IH0KCi5pbnZlc3Qtb3Ytc3RhdHMgeyB3aWR0aDogNDAlOyB9CgouaW52ZXN0LW92LXN0YXRzID4gZGl2IHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGJhc2VsaW5lOyB9CgouaW52ZXN0LW92LXN0YXRzIC5jaGFuZ2UgeyBtYXJnaW4tbGVmdDogMC4yNXJlbTsgfQoKLmludmVzdC10b3AtY2sgeyBwYWRkaW5nLXRvcDogMjBweDsgaGVpZ2h0OiA3MHB4OyB9CgovKiogUHJvamVjdDogQ3J5cHRvIHwgUGFja2FnZTogRGFzaExpdGUgfCBWZXJzaW9uIDogMS4wLjAgKiovCi5idXlzZWxsLXRpdGxlIHsgbWFyZ2luLWJvdHRvbTogMS41cmVtOyB9CgouYnV5c2VsbC10aXRsZSAudGl0bGUgeyBmb250LXdlaWdodDogNDAwOyB9CgouYnV5c2VsbC1uYXYgeyBtYXJnaW4tYm90dG9tOiAycmVtOyB9CgouYnV5c2VsbC1jYy1kcm9wZG93biB7IHdpZHRoOiAxMDAlOyB9CgouYnV5c2VsbC1jYy1kcm9wZG93biAuZHJvcGRvd24taW5kaWNhdG9yOmFmdGVyIHsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IHJpZ2h0OiAwOyBib3R0b206IDA7IHdpZHRoOiA1NnB4OyBmb250LXNpemU6IDI0cHg7IGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgY29sb3I6ICM4MDk0YWU7IG9wYWNpdHk6IDAuNTsgfQoKLmJ1eXNlbGwtY2MtZHJvcGRvd24gLmRyb3Bkb3duLW1lbnUgeyB0b3A6IC03OHB4ICFpbXBvcnRhbnQ7IH0KCi5idXlzZWxsLWNjLWl0ZW06bm90KDpsYXN0LWNoaWxkKSB7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTVlOWYyOyB9CgouYnV5c2VsbC1jYy1jaG9vc2VuIHsgZGlzcGxheTogYmxvY2s7IHdpZHRoOiAxMDAlOyBib3JkZXI6IDFweCBzb2xpZCAjZGJkZmVhOyBib3JkZXItcmFkaXVzOiA0cHg7IGJhY2tncm91bmQ6ICNmZmY7IH0KCi5idXlzZWxsLWNjLW9wdCB7IGRpc3BsYXk6IGJsb2NrOyB9CgouYnV5c2VsbC1wbS1saXN0IHsgYm9yZGVyOiAxcHggc29saWQgI2RiZGZlYTsgYmFja2dyb3VuZDogI2ZmZjsgYm9yZGVyLXJhZGl1czogNHB4OyB9CgouYnV5c2VsbC1wbS1pdGVtIHsgcG9zaXRpb246IHJlbGF0aXZlOyB9CgouYnV5c2VsbC1wbS1pdGVtOm5vdCg6bGFzdC1jaGlsZCkgeyBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2U1ZTlmMjsgfQoKLmJ1eXNlbGwtcG0tbGFiZWwgeyBwb3NpdGlvbjogcmVsYXRpdmU7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgbWFyZ2luLWJvdHRvbTogMDsgcGFkZGluZzogMTZweCAyMHB4IDE2cHggNjBweDsgY3Vyc29yOiBwb2ludGVyOyB9CgouYnV5c2VsbC1wbS1sYWJlbDpiZWZvcmUsIC5idXlzZWxsLXBtLWxhYmVsOmFmdGVyIHsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDUwJTsgbGVmdDogMjBweDsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOyBoZWlnaHQ6IDI0cHg7IHdpZHRoOiAyNHB4OyBib3JkZXItcmFkaXVzOiA1MCU7IH0KCi5idXlzZWxsLXBtLWxhYmVsOmJlZm9yZSB7IGNvbnRlbnQ6ICcnOyBib3JkZXI6IDJweCBzb2xpZCAjZGJkZmVhOyB9CgouYnV5c2VsbC1wbS1sYWJlbDphZnRlciB7IGZvbnQtZmFtaWx5OiAiTmlvaWNvbiI7IGNvbnRlbnQ6ICLupr4iOyBkaXNwbGF5OiBpbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kOiAjMDk3MWZlOyB0cmFuc2l0aW9uOiBvcGFjaXR5IC4zczsgb3BhY2l0eTogMDsgfQoKLmJ1eXNlbGwtcG0tbGFiZWwgLnBtLW5hbWUgeyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiAjMzY0YTYzOyB9CgouYnV5c2VsbC1wbS1sYWJlbCAucG0taWNvbiB7IGRpc3BsYXk6IGlubGluZS1mbGV4OyBmb250LXNpemU6IDI0cHg7IGNvbG9yOiAjODA5NGFlOyB9CgouYnV5c2VsbC1wbS1jb250cm9sIHsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IGhlaWdodDogMXB4OyB3aWR0aDogMXB4OyBvcGFjaXR5OiAwOyB9CgouYnV5c2VsbC1wbS1jb250cm9sOmNoZWNrZWQgfiAuYnV5c2VsbC1wbS1sYWJlbCB7IGN1cnNvcjogZGVmYXVsdDsgfQoKLmJ1eXNlbGwtcG0tY29udHJvbDpjaGVja2VkIH4gLmJ1eXNlbGwtcG0tbGFiZWw6YWZ0ZXIgeyBvcGFjaXR5OiAxOyB9CgouYnV5c2VsbC1vdmVydmlldyB7IHBhZGRpbmc6IDFyZW0gMCAxLjVyZW07IH0KCi5idXlzZWxsLW92ZXJ2aWV3LWxpc3QgeyBib3JkZXI6IDFweCBzb2xpZCAjZGJkZmVhOyBib3JkZXItcmFkaXVzOiA0cHg7IH0KCi5idXlzZWxsLW92ZXJ2aWV3LWxpc3QgKyAuc3ViLXRleHQtc20geyBtYXJnaW4tdG9wOiAwLjVyZW07IH0KCi5idXlzZWxsLW92ZXJ2aWV3LWl0ZW0geyBwb3NpdGlvbjogcmVsYXRpdmU7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgcGFkZGluZzogMTZweDsgfQoKLmJ1eXNlbGwtb3ZlcnZpZXctaXRlbTpub3QoOmxhc3Qtb2YtdHlwZSkgeyBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2U1ZTlmMjsgfQoKLmJ1eXNlbGwtb3ZlcnZpZXctaXRlbSAucG0tY3VycmVuY3kgeyBhbGlnbi1pdGVtczogY2VudGVyOyBkaXNwbGF5OiBmbGV4OyB9CgouYnV5c2VsbC1vdmVydmlldy1pdGVtIC5wbS1jdXJyZW5jeSAuaWNvbiB7IGZvbnQtc2l6ZTogMjRweDsgbWFyZ2luLXJpZ2h0OiAwLjVyZW07IGNvbG9yOiAjODA5NGFlOyB9CgouYnV5c2VsbC1maWVsZDpub3QoOmxhc3QtY2hpbGQpIHsgbWFyZ2luLWJvdHRvbTogMS43NXJlbTsgfQoKLmJ1eXNlbGwtZmllbGQuZm9ybS1hY3Rpb24geyBwYWRkaW5nLXRvcDogLjVyZW07IH0KCi53YWxsZXQtaXRlbSBhIHsgcG9zaXRpb246IHJlbGF0aXZlOyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBwYWRkaW5nOiAwLjc1cmVtIDA7IHotaW5kZXg6IDE7IH0KCi53YWxsZXQtaXRlbSBhOmJlZm9yZSwgLndhbGxldC1pdGVtIGE6YWZ0ZXIgeyBwb3NpdGlvbjogYWJzb2x1dGU7IG9wYWNpdHk6IDA7IHRyYW5zaXRpb246IG9wYWNpdHkgLjNzOyB9Cgoud2FsbGV0LWl0ZW0gYTphZnRlciB7IGZvbnQtZmFtaWx5OiAiTmlvaWNvbiI7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsgY29udGVudDogIu6nkyI7IHJpZ2h0OiAtMC4yNXJlbTsgdG9wOiA1MCU7IGNvbG9yOiAjZGJkZmVhOyBmb250LXNpemU6IDEuMjVyZW07IH0KCi53YWxsZXQtaXRlbSBhOmJlZm9yZSB7IGNvbnRlbnQ6ICcnOyB0b3A6IDA7IGJvdHRvbTogMDsgbGVmdDogLTI0cHg7IHJpZ2h0OiAtMjRweDsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgYm9yZGVyLXJhZGl1czogMTAwcHg7IHotaW5kZXg6IC0xOyB9CgouaXMtZGFyayAud2FsbGV0LWl0ZW0gYTpiZWZvcmUgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMGIxMjE5OyB9CgouaXMtdGhlbWUgLndhbGxldC1pdGVtIGE6YmVmb3JlIHsgYmFja2dyb3VuZC1jb2xvcjogIzA3MWQ0NjsgfQoKLndhbGxldC1pdGVtIGE6aG92ZXI6YmVmb3JlLCAud2FsbGV0LWl0ZW0gYTpob3ZlcjphZnRlciB7IG9wYWNpdHk6IDE7IH0KCi53YWxsZXQtaXRlbS1hZGQgYTphZnRlciB7IGRpc3BsYXk6IG5vbmU7IH0KCi53YWxsZXQtaXRlbS1hZGQgYTpob3ZlciAud2FsbGV0LWljb24sIC53YWxsZXQtaXRlbS1hZGQgYTpob3ZlciAud2FsbGV0LW5hbWUgeyBjb2xvcjogIzA5NzFmZTsgfQoKLmlzLWRhcmsgLndhbGxldC1pdGVtLWFkZCBhOmhvdmVyIC53YWxsZXQtaWNvbiwgLmlzLXRoZW1lIC53YWxsZXQtaXRlbS1hZGQgYTpob3ZlciAud2FsbGV0LWljb24sIC5pcy1kYXJrIC53YWxsZXQtaXRlbS1hZGQgYTpob3ZlciAud2FsbGV0LW5hbWUsIC5pcy10aGVtZSAud2FsbGV0LWl0ZW0tYWRkIGE6aG92ZXIgLndhbGxldC1uYW1lIHsgY29sb3I6ICNmZmY7IH0KCi53YWxsZXQtaWNvbiB7IHdpZHRoOiA0MHB4OyBjb2xvcjogIzgwOTRhZTsgZmxleC1zaHJpbms6IDA7IGRpc3BsYXk6IGlubGluZS1mbGV4OyB9Cgoud2FsbGV0LWljb24gLmljb24geyBmb250LXNpemU6IDI0cHg7IH0KCi53YWxsZXQtaWNvbiBpbWcgeyB3aWR0aDogMjRweDsgfQoKLmlzLXRoZW1lIC53YWxsZXQtaWNvbiB7IGNvbG9yOiAjYTljZGZmOyB9Cgoud2FsbGV0LXRleHQgeyBkaXNwbGF5OiBpbmxpbmUtZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgfQoKLndhbGxldC1uYW1lIHsgZm9udC1zaXplOiAxNHB4OyBmb250LXdlaWdodDogNzAwOyBjb2xvcjogIzUyNjQ4NDsgbWFyZ2luLWJvdHRvbTogLjI1cmVtOyB9CgouaXMtZGFyayAud2FsbGV0LW5hbWUgeyBjb2xvcjogIzgwOTRhZTsgfQoKLmlzLXRoZW1lIC53YWxsZXQtbmFtZSB7IGNvbG9yOiAjYTljZGZmOyB9Cgoud2FsbGV0LWJhbGFuY2UgeyBmb250LXNpemU6IDEzcHg7IGNvbG9yOiAjMzY0YTYzOyBsaW5lLWhlaWdodDogMTsgbWFyZ2luLXRvcDogMC4yNXJlbTsgfQoKLndhbGxldC1iYWxhbmNlIHNwYW4geyBjb2xvcjogIzgwOTRhZTsgfQoKLmlzLWRhcmsgLndhbGxldC1iYWxhbmNlIHsgY29sb3I6ICNmZmY7IH0KCi5pcy1kYXJrIC53YWxsZXQtYmFsYW5jZSBzcGFuIHsgY29sb3I6ICM4MDk0YWU7IH0KCi5pcy10aGVtZSAud2FsbGV0LWJhbGFuY2UgeyBjb2xvcjogI2ZmZjsgfQoKLmlzLXRoZW1lIC53YWxsZXQtYmFsYW5jZSBzcGFuIHsgY29sb3I6ICNhOWNkZmY7IH0KCkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5Ljk4cHgpIHsgLm5rLXNpZGViYXIgLndhbGxldC1pdGVtIGE6YmVmb3JlIHsgZGlzcGxheTogbm9uZTsgfSB9CgoudHJhbngtbGlzdCB7IGZvbnQtc2l6ZTogMC44MTI1cmVtOyB9CgoudHJhbngtaXRlbSB7IGRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgYWxpZ24taXRlbXM6IGNlbnRlcjsgcGFkZGluZzogMS4yNXJlbTsgfQoKLnRyYW54LWl0ZW06bm90KDpsYXN0LWNoaWxkKSB7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGJkZmVhOyB9CgoudHJhbngtY29sIHsgZGlzcGxheTogaW5saW5lLWZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IH0KCi50cmFueC1pbmZvIHsgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IH0KCi50cmFueC1iYWRnZSB7IGZsZXgtc2hyaW5rOiAwOyB9CgoudHJhbngtYmFkZ2UgKyAudHJhbngtZGF0YSB7IG1hcmdpbi1sZWZ0OiAxMHB4OyB9CgoudHJhbngtaWNvbiB7IGRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogY2VudGVyOyBhbGlnbi1pdGVtczogY2VudGVyOyBoZWlnaHQ6IDM2cHg7IHdpZHRoOiAzNnB4OyBmb250LXNpemU6IDIwcHg7IGJvcmRlci1yYWRpdXM6IDUwJTsgfQoKLnRyYW54LWljb24uc20geyBoZWlnaHQ6IDIwcHg7IHdpZHRoOiAyMHB4OyBmb250LXNpemU6IDE0cHg7IH0KCi50cmFueC1pY29uW2NsYXNzKj0iYnRjIl0geyBjb2xvcjogI2Y5ODQxZTsgYmFja2dyb3VuZDogcmdiYSgyNDksIDEzMiwgMzAsIDAuMik7IH0KCi50cmFueC1pY29uW2NsYXNzKj0iZXRoIl0geyBjb2xvcjogIzYxNzRiOTsgYmFja2dyb3VuZDogcmdiYSg5NywgMTE2LCAxODUsIDAuMik7IH0KCi5zdGF0dXMtc3VjY2VzcyAudHJhbngtaWNvbiB7IGNvbG9yOiAjMWVlMGFjOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDMwLCAyMjQsIDE3MiwgMC4xNSk7IH0KCi50cmFueC1kYXRhIHsgZmxleC1ncm93OiAxOyB9CgoudHJhbngtbGFiZWwgeyBmb250LXNpemU6IDAuOTM3NWVtOyBmb250LXdlaWdodDogNTAwOyBjb2xvcjogIzM2NGE2MzsgbWFyZ2luLWJvdHRvbTogMC4yNXJlbTsgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IH0KCi50cmFueC1sYWJlbCAudHJhbngtaWNvbiB7IG1hcmdpbi1sZWZ0OiAwLjVyZW07IH0KCi50cmFueC1kYXRlIHsgZm9udC1zaXplOiAxMXB4OyBjb2xvcjogIzgwOTRhZTsgfQoKLnRyYW54LWFtb3VudCB7IHRleHQtYWxpZ246IHJpZ2h0OyB9CgoudHJhbngtYW1vdW50IC5udW1iZXIgeyBmb250LXNpemU6IDEuMTI1ZW07IGNvbG9yOiAjMzY0YTYzOyBmb250LXdlaWdodDogNTAwOyB9CgoudHJhbngtYW1vdW50IC5udW1iZXIgc3BhbiB7IGNvbG9yOiAjNTI2NDg0OyBmb250LXdlaWdodDogNDAwOyB9CgoudHJhbngtYW1vdW50IC5udW1iZXItc20geyBmb250LXNpemU6IDExcHg7IGNvbG9yOiAjNTI2NDg0OyB9CgoudHJhbngtYW1vdW50IC5udW1iZXItc20gc3BhbiB7IGNvbG9yOiAjODA5NGFlOyB9CgpAbWVkaWEgKG1heC13aWR0aDogNTc1Ljk4cHgpIHsgLnRyYW54LWxpc3QuaXMtc3RyZXRjaCB7IG1hcmdpbi1sZWZ0OiAtMThweDsgbWFyZ2luLXJpZ2h0OiAtMThweDsgYm9yZGVyLWxlZnQ6IDA7IGJvcmRlci1yaWdodDogMDsgYm9yZGVyLXJhZGl1czogMDsgfSB9CgpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsgLnRyYW54LWl0ZW0geyBwYWRkaW5nOiAxLjI1cmVtIDEuNXJlbTsgfQogIC50cmFueC1saXN0IHsgZm9udC1zaXplOiAxcmVtOyB9CiAgLnRyYW54LWJhZGdlICsgLnRyYW54LWRhdGEgeyBtYXJnaW4tbGVmdDogMTZweDsgfQogIC50cmFueC1pY29uIHsgaGVpZ2h0OiA0NHB4OyB3aWR0aDogNDRweDsgZm9udC1zaXplOiAyNHB4OyB9CiAgLnRyYW54LWljb24uc20geyBoZWlnaHQ6IDI0cHg7IHdpZHRoOiAyNHB4OyBmb250LXNpemU6IDE2cHg7IH0KICAudHJhbngtZGF0ZSB7IGZvbnQtc2l6ZTogMTJweDsgfQogIC50cmFueC1hbW91bnQgLm51bWJlci1zbSB7IGZvbnQtc2l6ZTogMTJweDsgfSB9CgouaXMtY29tcGFjdCAudHJhbngtaXRlbSB7IHBhZGRpbmctdG9wOiAuNzVyZW07IHBhZGRpbmctYm90dG9tOiAuNzVyZW07IH0KCi5pcy1jb21wYWN0IC50cmFueC1sYWJlbCB7IG1hcmdpbi1ib3R0b206IDA7IH0KCi5pcy1jb21wYWN0IC50cmFueC1iYWRnZSArIC50cmFueC1kYXRhIHsgbWFyZ2luLWxlZnQ6IDE2cHg7IH0KCi5pcy1jb21wYWN0IC50cmFueC1pY29uIHsgaGVpZ2h0OiAzNnB4OyB3aWR0aDogMzZweDsgZm9udC1zaXplOiAyMHB4OyB9CgouaXMtY29tcGFjdCAudHJhbngtYW1vdW50IC5udW1iZXIgeyBmb250LXNpemU6IDFyZW07IH0KCi5uay13ZzEtaXRlbSB7IG1pbi13aWR0aDogMzAwcHg7IG1heC13aWR0aDogMTAwJTsgfQoKLm5rLXdnMS10aXRsZSB7IGZvbnQtc2l6ZTogMS4xMjVyZW07IGNvbG9yOiAjNTI2NDg0OyBtYXJnaW4tYm90dG9tOiAwLjI1cmVtOyB9Cgoubmstd2cxLXRpdGxlIC5kcm9wZG93biA+IGEgeyBmb250LXNpemU6IDc4JTsgY29sb3I6ICM4MDk0YWU7IH0KCi5uay13ZzEtYW1vdW50IC5hbW91bnQgeyBmb250LXNpemU6IDEuNzVyZW07IGxpbmUtaGVpZ2h0OiAxLjQ7IGNvbG9yOiAjMDk3MWZlOyBmb250LXdlaWdodDogNzAwOyBsZXR0ZXItc3BhY2luZzogLTAuMDI1ZW07IH0KCi5uay13ZzEtYW1vdW50IC5hbW91bnQgc21hbGwgeyBmb250LXNpemU6IDY2LjY2JTsgZm9udC13ZWlnaHQ6IDQwMDsgfQoKLm5rLXdnMS1hbW91bnQgLmFtb3VudC1zbSB7IGZvbnQtc2l6ZTogMTJweDsgY29sb3I6ICM4MDk0YWU7IH0KCi5uay13ZzEtYW1vdW50IC5hbW91bnQtc20gc3BhbiB7IGNvbG9yOiAjMzY0YTYzOyBmb250LXdlaWdodDogNzAwOyB9Cgoubmstd2cxLXN1YiB7IG1pbi13aWR0aDogMTQwcHg7IH0KCi5uay13ZzEtZ3JvdXAgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LXdyYXA6IHdyYXA7IH0KCkBtZWRpYSAobWluLXdpZHRoOiA0MjBweCkgeyAubmstd2cxLWFtb3VudCAuYW1vdW50IHsgZm9udC1zaXplOiAyLjI1cmVtOyB9IH0KCkBtZWRpYSAobWF4LXdpZHRoOiA0MTlweCkgeyAubmstd2cxIHsgb3ZlcmZsb3c6IGhpZGRlbjsgfSB9Cgoubmstd2c0Om5vdCg6Zmlyc3QtY2hpbGQpIHsgbWFyZ2luLXRvcDogMS43NXJlbTsgfQoKLm5rLXdnNDpub3QoOmxhc3QtY2hpbGQpIHsgbWFyZ2luLWJvdHRvbTogMS43NXJlbTsgfQoKLm5rLXdnNC1zdWIgeyB3aWR0aDogMTg1cHg7IH0KCi5uay13ZzQtZ3JvdXAgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LXdyYXA6IHdyYXA7IH0KCi5uay13ZzQtc3dpdGNoZXIgeyBkaXNwbGF5OiBmbGV4OyBtYXJnaW46IDAgLTAuMjVyZW0gLjVyZW07IH0KCi5uay13ZzQtc3dpdGNoZXIgPiBsaSB7IHBhZGRpbmc6IDAgLjI1cmVtOyB9Cgoubmstd2c0LXN3aXRjaGVyID4gbGkgPiAuZHJvcGRvd24gPiBhIHsgZm9udC1zaXplOiAwLjg3NXJlbTsgYm9yZGVyOiAxcHggc29saWQgI2RiZGZlYTsgcGFkZGluZzogLjI1cmVtIC43NXJlbTsgYm9yZGVyLXJhZGl1czogM3B4OyB9Cgoubmstd2c0LW5vdGUgeyBmb250LXNpemU6IDExcHg7IGZvbnQtc3R5bGU6IGl0YWxpYzsgZm9udC13ZWlnaHQ6IDQwMDsgY29sb3I6ICM4MDk0YWU7IH0KCi5uay13ZzQtbm90ZSBzcGFuIHsgY29sb3I6ICMwOTcxZmU7IGZvbnQtd2VpZ2h0OiA3MDA7IH0KCkBtZWRpYSAobWF4LXdpZHRoOiA1NzUuOThweCkgeyAuY2FyZC1oZWFkLnVpLXYyICsgLm5rLXdnNDpub3QoOmZpcnN0LWNoaWxkKSB7IG1hcmdpbi10b3A6IDAuNzVyZW07IH0gfQoKLm5rLXdnNS10aXRsZSB7IG1hcmdpbi1ib3R0b206IDAuNXJlbTsgfQoKLm5rLXdnNS10ZXh0Om5vdCg6bGFzdC1jaGlsZCkgeyBwYWRkaW5nLWJvdHRvbTogMS43NXJlbTsgfQoKLm5rLXdnNS1hbW91bnQgeyBsaW5lLWhlaWdodDogMS4zOyB9Cgoubmstd2c1LWFtb3VudCAuYW1vdW50IHsgZm9udC1zaXplOiAxLjVyZW07IGZvbnQtd2VpZ2h0OiA1MDA7IGNvbG9yOiAjMzY0YTYzOyBtYXJnaW4tYm90dG9tOiAwLjI1cmVtOyB9Cgoubmstd2c1LWFtb3VudCAuYW1vdW50LXNtIHsgZm9udC1zaXplOiAxM3B4OyBmb250LXdlaWdodDogNzAwOyBjb2xvcjogIzUyNjQ4NDsgfQoKLm5rLXdnNS1hbW91bnQgLmN1cnJlbmN5IHsgZm9udC13ZWlnaHQ6IDQwMDsgfQoKLm5rLXdnNS1mb290IHsgZm9udC1zaXplOiAxMnB4OyB9Cgoubmstd2c3IHsgZGlzcGxheTogZmxleDsgZmxleC13cmFwOiB3cmFwOyB9Cgoubmstd2c3ID4gKiB7IGZsZXgtZ3JvdzogMTsgd2lkdGg6IDEwMCU7IH0KCi5uay13Zzctc3RhdHMgeyBsaW5lLWhlaWdodDogMS4zOyB9Cgoubmstd2c3LXN0YXRzLWdyb3VwIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IG1hcmdpbi10b3A6IDEuNXJlbTsgfQoKLm5rLXdnNy1zdGF0cyAubnVtYmVyIHsgZm9udC1zaXplOiAxcmVtOyBmb250LXdlaWdodDogNzAwOyB9Cgoubmstd2c3LXN0YXRzIC5udW1iZXItbGcgeyBmb250LXNpemU6IDIuMjVyZW07IGxldHRlci1zcGFjaW5nOiAtMC4wM2VtOyBmb250LXdlaWdodDogNDAwOyB9Cgoubmstd2c3LXN0YXRzIC5udW1iZXItbGc6Zmlyc3QtY2hpbGQgeyBtYXJnaW4tdG9wOiAtLjEyNXJlbTsgfQoKLm5rLXdnNy10aXRsZSwgLm5rLXdnNy1ub3RlIHsgZm9udC1zaXplOiAxM3B4OyBmb250LXdlaWdodDogNTAwOyBjb2xvcjogIzUyNjQ4NDsgfQoKLmlzLWRhcmsgLm5rLXdnNy10aXRsZSwgLmlzLWRhcmsgLm5rLXdnNy1ub3RlIHsgY29sb3I6ICM2YmFhZmU7IH0KCi5udW1iZXIgKyAubmstd2c3LXRpdGxlLCAubnVtYmVyICsgLm5rLXdnNy1ub3RlIHsgbWFyZ2luLXRvcDogMC42MjVyZW07IH0KCi5uay13ZzctdGl0bGUgKyAubnVtYmVyLCAubmstd2c3LW5vdGUgKyAubnVtYmVyIHsgbWFyZ2luLXRvcDogMC40Mzc1cmVtOyB9CgoubnVtYmVyLWxnICsgLm5rLXdnNy10aXRsZSwgLm51bWJlci1sZyArIC5uay13Zzctbm90ZSB7IG1hcmdpbi10b3A6IDAuMjVyZW07IH0KCi5uay13ZzctdGl0bGUgKyAubnVtYmVyLWxnLCAubmstd2c3LW5vdGUgKyAubnVtYmVyLWxnIHsgbWFyZ2luLXRvcDogMC4yNXJlbTsgfQoKLm5rLXdnNy1mb290IHsgd2lkdGg6IDEwMCU7IG1hcmdpbi10b3A6IDAuNzVyZW07IH0KCi5uay13Zzctbm90ZSB7IGZvbnQtd2VpZ2h0OiA0MDA7IGZvbnQtc3R5bGU6IGl0YWxpYzsgfQoKQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7IC5uay13ZzcgPiAqIHsgd2lkdGg6IDEwMCU7IH0KICAubmstd2c3LWZvb3QgeyBtYXJnaW4tdG9wOiAuNzVyZW07IH0gfQoKLm5rLXdndyB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgfQoKLm5rLXdndy1pbm5lciB7IHBhZGRpbmc6IDEuMjVyZW07IGRpc3BsYXk6IGJsb2NrOyB9Cgouc20ubmstd2d3IC5uay13Z3ctaW5uZXIgeyBwYWRkaW5nOiAxLjI1cmVtOyB9Cgoubmstd2d3LW5hbWUgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyB9Cgoubmstd2d3LWljb24geyBwb3NpdGlvbjogcmVsYXRpdmU7IGhlaWdodDogMzJweDsgd2lkdGg6IDMycHg7IGZvbnQtc2l6ZTogMjBweDsgYm9yZGVyLXJhZGl1czogNTAlOyBiYWNrZ3JvdW5kOiAjODA5NGFlOyBjb2xvcjogI2ZmZjsgbWFyZ2luLXJpZ2h0OiAwLjc1cmVtOyBkaXNwbGF5OiBpbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IH0KCi5pcy1kYXJrIC5uay13Z3ctaWNvbiB7IGJhY2tncm91bmQ6ICM2YmFhZmU7IH0KCi5uay13Z3ctaWNvbi5pcy1kZWZhdWx0OmFmdGVyIHsgcG9zaXRpb246IGFic29sdXRlOyBib3R0b206IC04cHg7IHJpZ2h0OiAtOHB4OyBmb250LWZhbWlseTogIk5pb2ljb24iOyBjb250ZW50OiAi7q+MIjsgaGVpZ2h0OiAyMHB4OyB3aWR0aDogMjBweDsgZm9udC1zaXplOiAxM3B4OyBib3JkZXItcmFkaXVzOiA1MCU7IGJhY2tncm91bmQ6ICNmZmY7IGNvbG9yOiAjZmZhMzUzOyBkaXNwbGF5OiBpbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IH0KCi5pcy1kYXJrIC5uay13Z3ctaWNvbi5pcy1kZWZhdWx0OmFmdGVyIHsgYmFja2dyb3VuZDogIzBiMzE3NTsgfQoKLm5rLXdndy10aXRsZSB7IGZvbnQtZmFtaWx5OiBSb2JvdG8sIHNhbnMtc2VyaWY7IGZvbnQtd2VpZ2h0OiA1MDA7IGZvbnQtc2l6ZTogMXJlbTsgbWFyZ2luLWJvdHRvbTogMDsgY29sb3I6ICM1MjY0ODQ7IHdoaXRlLXNwYWNlOiBub3dyYXA7IG92ZXJmbG93OiBoaWRkZW47IHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOyB9CgouaXMtZGFyayAubmstd2d3LXRpdGxlIHsgY29sb3I6ICNmZmY7IH0KCi5uay13Z3ctbW9yZSB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAxLjI1cmVtOyByaWdodDogMS4yNXJlbTsgfQoKLmlzLWRhcmsgLm5rLXdndy1tb3JlIC5idG4tdHJpZ2dlciB7IGNvbG9yOiAjYTljZGZmOyB9CgouaXMtZGFyayAubmstd2d3LW1vcmUgLmJ0bi10cmlnZ2VyOmJlZm9yZSB7IGJhY2tncm91bmQtY29sb3I6ICMwNzFkNDY7IH0KCi5uay13Z3ctYmFsYW5jZSB7IGxpbmUtaGVpZ2h0OiAxLjM7IHBhZGRpbmctdG9wOiAxLjI1cmVtOyB9Cgoubmstd2d3LWJhbGFuY2UgLmFtb3VudCB7IGZvbnQtc2l6ZTogMS41cmVtOyBmb250LXdlaWdodDogNTAwOyBjb2xvcjogIzM2NGE2MzsgfQoKLmlzLWRhcmsgLm5rLXdndy1iYWxhbmNlIC5hbW91bnQgeyBjb2xvcjogI2ZmZjsgfQoKLm5rLXdndy1iYWxhbmNlIC5hbW91bnQgc3BhbiB7IGZvbnQtd2VpZ2h0OiA0MDA7IG9wYWNpdHk6IDAuNjsgfQoKLm5rLXdndy1iYWxhbmNlIC5hbW91bnQtc20geyBmb250LXNpemU6IDEzcHg7IGNvbG9yOiAjNTI2NDg0OyBmb250LXdlaWdodDogNzAwOyBwYWRkaW5nLXRvcDogLjEyNXJlbTsgfQoKLmlzLWRhcmsgLm5rLXdndy1iYWxhbmNlIC5hbW91bnQtc20geyBjb2xvcjogIzZiYWFmZTsgfQoKLm5rLXdndy1iYWxhbmNlIC5hbW91bnQtc20gc3BhbiB7IGZvbnQtd2VpZ2h0OiA0MDA7IH0KCi5uay13Z3ctYmFsYW5jZSAuY3VycmVuY3kgeyBwYWRkaW5nLWxlZnQ6IDAuMjVyZW07IH0KCi5uay13Z3ctYWN0aW9ucyB7IHBhZGRpbmc6IC43NXJlbSAxLjI1cmVtOyBib3JkZXItdG9wOiAxcHggc29saWQgI2U1ZTlmMjsgfQoKLmlzLWRhcmsgLm5rLXdndy1hY3Rpb25zIHsgYm9yZGVyLWNvbG9yOiByZ2JhKDksIDExMywgMjU0LCAwLjQpOyB9Cgoubmstd2d3LWFjdGlvbnMgdWwgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBmbGV4LXdyYXA6IHdyYXA7IH0KCi5uay13Z3ctYWN0aW9ucyB1bCBsaTpub3QoOmxhc3QtY2hpbGQpIHsgcGFkZGluZy1yaWdodDogMS41cmVtOyB9Cgoubmstd2d3LWFjdGlvbnMgYSB7IGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBmb250LXNpemU6IDEycHg7IHBhZGRpbmc6IC41cmVtIDA7IGNvbG9yOiAjNTI2NDg0OyB9Cgoubmstd2d3LWFjdGlvbnMgYSAuaWNvbiB7IGZvbnQtc2l6ZTogMS4yNWVtOyBtYXJnaW4tcmlnaHQ6IDAuNXJlbTsgY29sb3I6ICM4MDk0YWU7IG1hcmdpbi10b3A6IC0xcHg7IH0KCi5uay13Z3ctYWN0aW9ucyBhIC5pY29uLCAubmstd2d3LWFjdGlvbnMgYSBzcGFuIHsgdHJhbnNpdGlvbjogY29sb3IgLjNzOyB9CgouaXMtZGFyayAubmstd2d3LWFjdGlvbnMgYSB7IGNvbG9yOiAjYTljZGZmOyB9CgouaXMtZGFyayAubmstd2d3LWFjdGlvbnMgYSAuaWNvbiB7IGNvbG9yOiAjNmJhYWZlOyB9CgouaXMtZGFyayAubmstd2d3LWFjdGlvbnMgYTpob3ZlciBzcGFuLCAuaXMtZGFyayAubmstd2d3LWFjdGlvbnMgYTpob3ZlciAuaWNvbiB7IGNvbG9yOiAjZmZmOyB9Cgoubmstd2d3LWFjdGlvbnMgYTpob3ZlciBzcGFuLCAubmstd2d3LWFjdGlvbnMgYTpob3ZlciAuaWNvbiB7IGNvbG9yOiAjMDk3MWZlOyB9Cgoubmstd2d3LWFkZCB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGp1c3RpZnktY29udGVudDogY2VudGVyOyBoZWlnaHQ6IDEwMCU7IHRleHQtYWxpZ246IGNlbnRlcjsgfQoKLm5rLXdndy1hZGQgYSB7IGRpc3BsYXk6IGJsb2NrOyB9Cgoubmstd2d3LWFkZCBhIC5hZGQtaWNvbiB7IGRpc3BsYXk6IGlubGluZS1mbGV4OyBwb3NpdGlvbjogcmVsYXRpdmU7IHotaW5kZXg6IDE7IGZvbnQtc2l6ZTogMjRweDsgaGVpZ2h0OiAzNnB4OyB3aWR0aDogMzZweDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IH0KCi5uay13Z3ctYWRkIGEgLmFkZC1pY29uOmJlZm9yZSB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgei1pbmRleDogLTE7IGhlaWdodDogMjBweDsgd2lkdGg6IDIwcHg7IHRvcDogNTAlOyBsZWZ0OiA1MCU7IHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOyB0cmFuc2Zvcm0tb3JpZ2luOiA1MCUgNTAlOyBjb250ZW50OiAnJzsgYmFja2dyb3VuZC1jb2xvcjogI2ViZWVmMjsgYm9yZGVyLXJhZGl1czogNTAlOyBvcGFjaXR5OiAwOyB0cmFuc2l0aW9uOiBhbGwgLjNzOyB9CgouaXMtZGFyayAubmstd2d3LWFkZCBhIC5hZGQtaWNvbjpiZWZvcmUgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDcxZDQ2OyB9CgouaXMtZGFyayAubmstd2d3LWFkZCBhIC5hZGQtaWNvbiAuaWNvbiB7IGNvbG9yOiAjZmZmOyB9Cgoubmstd2d3LWFkZCBhOmhvdmVyIC5hZGQtaWNvbjpiZWZvcmUgeyBvcGFjaXR5OiAxOyBoZWlnaHQ6IDEyMCU7IHdpZHRoOiAxMjAlOyB9Cgoubmstd2d3LWFkZCBhIC50aXRsZSB7IGNvbG9yOiAjMDk3MWZlOyBmb250LXNpemU6IDFyZW07IG1hcmdpbi10b3A6IDEuMjVyZW07IG1hcmdpbi1ib3R0b206IDAuNzVyZW07IH0KCi5pcy1kYXJrIC5uay13Z3ctYWRkIGEgLnRpdGxlIHsgY29sb3I6ICNmZmY7IH0KCi5uay13Z3ctYWRkIC5zdWItdGV4dCB7IHBhZGRpbmc6IDAgMS41cmVtOyB9CgpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsgLm5rLXdndyB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgfQogIC5uay13Z3ctaW5uZXIgeyBwYWRkaW5nOiAxLjVyZW07IH0KICAuc20ubmstd2d3IC5uay13Z3ctaW5uZXIgeyBwYWRkaW5nOiAxcmVtIDEuMjVyZW07IH0KICAubmstd2d3LWFjdGlvbnMgeyBwYWRkaW5nLWxlZnQ6IDEuNWVtOyBwYWRkaW5nLXJpZ2h0OiAxLjVyZW07IH0KICAubmstd2d3LWFjdGlvbnMgYSB7IGZvbnQtc2l6ZTogMTNweDsgfSB9Cgoubmstd2d3LnNtIC5uay13Z3ctaWNvbiB7IGhlaWdodDogMjRweDsgd2lkdGg6IDI0cHg7IGZvbnQtc2l6ZTogMTRweDsgbWFyZ2luLXJpZ2h0OiAwLjVyZW07IH0KCi5uay13Z3cuc20gLm5rLXdndy1pY29uLmlzLWRlZmF1bHQ6YWZ0ZXIgeyBib3R0b206IC04cHg7IHJpZ2h0OiAtOHB4OyBoZWlnaHQ6IDIwcHg7IHdpZHRoOiAyMHB4OyBmb250LXNpemU6IDEzcHg7IH0KCi5uay13Z3cuc20gLm5rLXdndy10aXRsZSB7IGZvbnQtd2VpZ2h0OiA3MDA7IGZvbnQtc2l6ZTogMTNweDsgfQoKLm5rLXdndy5zbSAubmstd2d3LWJhbGFuY2UgeyBwYWRkaW5nLXRvcDogMC43NXJlbTsgfQoKLm5rLXdndy5zbSAubmstd2d3LWJhbGFuY2UgLmFtb3VudCB7IGZvbnQtc2l6ZTogMXJlbTsgfQoKLm5rLXdnd2ggeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyB9CgoubmstYmxvY2staGVhZC1zdWIgKyAubmstd2d3aCB7IHBhZGRpbmctdG9wOiAuNXJlbTsgfQoKLm5rLXdnd2ggPiAuaWNvbiB7IG1hcmdpbi1yaWdodDogMXJlbTsgfQoKLm5rLXdnd2gtdGl0bGUgeyBmb250LXNpemU6IDEuNXJlbTsgY29sb3I6ICMzNjRhNjM7IGZvbnQtd2VpZ2h0OiA3MDA7IH0KCi5uay13Z3doLXRpdGxlIC50aXRsZSB7IG1hcmdpbi1ib3R0b206IDA7IGZvbnQtc2l6ZTogaW5oZXJpdDsgfQoKLm5rLXdnd2gtdGl0bGUgc21hbGwgeyBmb250LXNpemU6IDcwJTsgY29sb3I6ICM4MDk0YWU7IH0KCi5uay13Z3doLXRpdGxlIHNtYWxsIGEgeyBjb2xvcjogaW5oZXJpdDsgfQoKLmFzdGVyaXNrIGEgeyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiAjODA5NGFlOyBkaXNwbGF5OiBpbmxpbmUtZmxleDsgfQoKLmFzdGVyaXNrIGE6aG92ZXIsIC5hc3RlcmlzayBhLmFjdGl2ZSB7IGNvbG9yOiAjZmZhMzUzOyB9CgouYXN0ZXJpc2sgYTpob3ZlciAuYXN0ZXJpc2stb24sIC5hc3RlcmlzayBhLmFjdGl2ZSAuYXN0ZXJpc2stb24geyBvcGFjaXR5OiAxOyB9CgouYXN0ZXJpc2sgYS5hY3RpdmU6aG92ZXIgLmFzdGVyaXNrLW9uIHsgb3BhY2l0eTogMDsgfQoKLmFzdGVyaXNrLW9uIHsgb3BhY2l0eTogMDsgcG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAwOyBjb2xvcjogI2ZmYTM1Mzsgei1pbmRleDogMTsgdHJhbnNpdGlvbjogb3BhY2l0eSAuMnM7IH0KCi5uay1yZXBseSB7IGhlaWdodDogMTAwJTsgbWF4LWhlaWdodDogMTAwJTsgb3ZlcmZsb3c6IGF1dG87IH0KCi5uay1yZXBseS1pdGVtIHsgcGFkZGluZzogMnJlbSAxLjI1cmVtOyB9CgoubmstcmVwbHktaXRlbSArIC5uay1yZXBseS1pdGVtIHsgcGFkZGluZy10b3A6IDA7IH0KCi5uay1yZXBseS1pdGVtID4gZGl2Om5vdCgubmstcmVwbHktaGVhZGVyKSB7IG1hcmdpbi1sZWZ0OiA0OHB4OyB9CgoubmstcmVwbHktaGVhZGVyIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyBtYXJnaW4tYm90dG9tOiAwLjVyZW07IH0KCi5uay1yZXBseS1oZWFkZXIgLnVzZXItbmFtZSB7IG1hcmdpbi1sZWZ0OiAxcmVtOyBmb250LXNpemU6IC44NzVyZW07IH0KCi5uay1yZXBseS1oZWFkZXIgLnVzZXItbmFtZSBzcGFuIHsgY29sb3I6ICM4MDk0YWU7IGZvbnQtd2VpZ2h0OiA0MDA7IH0KCi5uay1yZXBseS1oZWFkZXIgLmRhdGUtdGltZSB7IGNvbG9yOiAjODA5NGFlOyBmb250LXNpemU6IDEycHg7IH0KCi5uay1yZXBseS1lbnRyeS5ub3RlIHsgYmFja2dyb3VuZDogI2Y1ZjZmYTsgcGFkZGluZzogMS4yNXJlbTsgYm9yZGVyLXJhZGl1czogNHB4OyB9CgoubmstcmVwbHktZnJvbSB7IG1hcmdpbi10b3A6IDEuMjVyZW07IHBhZGRpbmc6IC4zNzVyZW0gLjc1cmVtOyBiYWNrZ3JvdW5kOiAjZjVmNmZhOyBib3JkZXItcmFkaXVzOiA0cHg7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgZm9udC1zaXplOiAxM3B4OyB9CgoubmstcmVwbHktbWV0YSB7IG92ZXJmbG93OiBoaWRkZW47IHRleHQtYWxpZ246IGNlbnRlcjsgbWFyZ2luOiAwIDEuMjVyZW07IHBhZGRpbmc6IDAgMnJlbTsgfQoKLm5rLXJlcGx5LW1ldGEtaW5mbyB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBwYWRkaW5nOiAwIC43NXJlbTsgY29sb3I6ICM4MDk0YWU7IGZvbnQtc2l6ZTogMTNweDsgbGluZS1oZWlnaHQ6IDEuNDsgfQoKLm5rLXJlcGx5LW1ldGEtaW5mbyBzcGFuLCAubmstcmVwbHktbWV0YS1pbmZvIHN0cm9uZywgLm5rLXJlcGx5LW1ldGEtaW5mbyAud2hvIHsgY29sb3I6ICM1MjY0ODQ7IH0KCi5uay1yZXBseS1tZXRhLWluZm8gLndob20geyBjb2xvcjogIzA5NzFmZTsgfQoKLm5rLXJlcGx5LW1ldGEtaW5mbzpiZWZvcmUsIC5uay1yZXBseS1tZXRhLWluZm86YWZ0ZXIgeyBwb3NpdGlvbjogYWJzb2x1dGU7IGhlaWdodDogMXB4OyBiYWNrZ3JvdW5kOiAjZTVlOWYyOyBjb250ZW50OiAnJzsgd2lkdGg6IDEwMHZ3OyB0b3A6IDUwJTsgfQoKLm5rLXJlcGx5LW1ldGEtaW5mbzpiZWZvcmUgeyByaWdodDogMTAwJTsgfQoKLm5rLXJlcGx5LW1ldGEtaW5mbzphZnRlciB7IGxlZnQ6IDEwMCU7IH0KCi5uay1yZXBseS1mb3JtIHsgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlNWU5ZjI7IH0KCi5uay1yZXBseS1mb3JtLWRyb3Bkb3duIHsgbWFyZ2luLWxlZnQ6IC0wLjVyZW07IG1hcmdpbi1yaWdodDogMC43NXJlbTsgfQoKLm5rLXJlcGx5LWZvcm0taGVhZGVyIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyBwYWRkaW5nOiAwIDEuMjVyZW07IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTVlOWYyOyB9CgoubmstcmVwbHktZm9ybS10aXRsZSB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IH0KCi5uay1yZXBseS1mb3JtLXRpdGxlIC50aXRsZSB7IGNvbG9yOiAjODA5NGFlOyBtYXJnaW4tcmlnaHQ6IC43NXJlbTsgfQoKLm5rLXJlcGx5LWZvcm0tZmllbGQgeyBwYWRkaW5nOiAuNXJlbSAxLjI1cmVtOyB9CgoubmstcmVwbHktZm9ybS1maWVsZDpub3QoOmxhc3QtY2hpbGQpIHsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlNWU5ZjI7IH0KCi5uay1yZXBseS1mb3JtLWZpZWxkIC5mb3JtLWNvbnRyb2wsIC5uay1yZXBseS1mb3JtLWZpZWxkIC5kdWFsLWxpc3Rib3ggLmR1YWwtbGlzdGJveF9fc2VhcmNoLCAuZHVhbC1saXN0Ym94IC5uay1yZXBseS1mb3JtLWZpZWxkIC5kdWFsLWxpc3Rib3hfX3NlYXJjaCB7IGZvbnQtc2l6ZTogMC44NzVyZW07IH0KCi5uay1yZXBseS1mb3JtLWZpZWxkIHRleHRhcmVhLmZvcm0tY29udHJvbCwgLm5rLXJlcGx5LWZvcm0tZmllbGQgLmR1YWwtbGlzdGJveCB0ZXh0YXJlYS5kdWFsLWxpc3Rib3hfX3NlYXJjaCwgLmR1YWwtbGlzdGJveCAubmstcmVwbHktZm9ybS1maWVsZCB0ZXh0YXJlYS5kdWFsLWxpc3Rib3hfX3NlYXJjaCB7IG1pbi1oZWlnaHQ6IDc4cHg7IH0KCi5uay1yZXBseS1mb3JtLWZpZWxkIHRleHRhcmVhLmZvcm0tY29udHJvbC5leC1sYXJnZSwgLm5rLXJlcGx5LWZvcm0tZmllbGQgLmR1YWwtbGlzdGJveCB0ZXh0YXJlYS5leC1sYXJnZS5kdWFsLWxpc3Rib3hfX3NlYXJjaCwgLmR1YWwtbGlzdGJveCAubmstcmVwbHktZm9ybS1maWVsZCB0ZXh0YXJlYS5leC1sYXJnZS5kdWFsLWxpc3Rib3hfX3NlYXJjaCB7IG1pbi1oZWlnaHQ6IDE2MHB4OyB9CgoubmstcmVwbHktZm9ybS1maWVsZCArIC5uay1yZXBseS1mb3JtLXRvb2xzIHsgYm9yZGVyLXRvcDogMDsgfQoKLm5rLXJlcGx5LWZvcm0tdG9vbHMgeyBwYWRkaW5nOiAxLjI1cmVtOyBib3JkZXItdG9wOiAxcHggc29saWQgI2U1ZTlmMjsgZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyB9CgoubmstcmVwbHktZm9ybS1hY3Rpb25zIHsgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IH0KCi5uay1yZXBseS1mb3JtLW9wdGlvbnMgeyBkaXNwbGF5OiBpbmxpbmUtZmxleDsgfQoKLm5rLXJlcGx5LWZvcm0taW5wdXQgeyBkaXNwbGF5OiBmbGV4OyB9CgoubmstcmVwbHktZm9ybS1pbnB1dCAubGFiZWwgeyBtYXJnaW46IC4zcmVtIC41cmVtIC4zcmVtIDA7IHdpZHRoOiAxLjI1cmVtOyBjb2xvcjogIzgwOTRhZTsgfQoKLm5rLXJlcGx5LWZvcm0taW5wdXQtZ3JvdXAgeyB3aWR0aDogMTAwJTsgfQoKLm5rLXJlcGx5LWZvcm0taW5wdXQtY2MsIC5uay1yZXBseS1mb3JtLWlucHV0LWJjYyB7IGRpc3BsYXk6IG5vbmU7IH0KCi5uay1yZXBseS1mb3JtLWlucHV0LWNjLmV4cGFuZGVkLCAubmstcmVwbHktZm9ybS1pbnB1dC1iY2MuZXhwYW5kZWQgeyBkaXNwbGF5OiBmbGV4OyB9CgoubmstcmVwbHktZm9ybS1pbnB1dCAudG9nZ2xlLW9wdCB7IGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBjb2xvcjogIzM2NGE2MzsgfQoKLm5rLXJlcGx5LWZvcm0taW5wdXQgLnRvZ2dsZS1vcHQ6aG92ZXIgeyBjb2xvcjogIzA5NzFmZTsgfQoKLm5rLXJlcGx5LWZvcm0tZ3JvdXAgeyBwb3NpdGlvbjogcmVsYXRpdmU7IHBhZGRpbmc6IDFyZW0gMDsgZmxleC1ncm93OiAxOyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogZmxleC1zdGFydDsgfQoKLm5rLXJlcGx5LWZvcm0tbmF2IHsgcG9zaXRpb246IGFic29sdXRlOyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBhbGlnbi1zZWxmOiBmbGV4LXN0YXJ0OyBwYWRkaW5nOiAxLjA2MjVyZW0gMCAwOyByaWdodDogMDsgdG9wOiAwOyBtYXJnaW46IDAgLS4zNzVyZW07IH0KCi5uay1yZXBseS1mb3JtLW5hdiBsaSBhIHsgZm9udC1zaXplOiAxMnB4OyBjb2xvcjogIzgwOTRhZTsgZGlzcGxheTogYmxvY2s7IGxpbmUtaGVpZ2h0OiAxLjVyZW07IHBhZGRpbmc6IC4yNXJlbSAuMzc1cmVtOyB9CgoubmstcmVwbHktZm9ybS1uYXYgbGkgYTpob3ZlciB7IGNvbG9yOiAjMDk3MWZlOyB9CgouaXMtY29sbGFwc2VkIC5uay1yZXBseS1tc2ctaW5mbyB7IGRpc3BsYXk6IG5vbmU7IH0KCi5uay1yZXBseS1tc2ctZXhjZXJwdCB7IGNvbG9yOiAjNTI2NDg0OyBkaXNwbGF5OiBub25lOyB3aGl0ZS1zcGFjZTogbm93cmFwOyBvdmVyZmxvdzogaGlkZGVuOyB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsgfQoKLmlzLWNvbGxhcHNlZCAubmstcmVwbHktbXNnLWV4Y2VycHQgeyBkaXNwbGF5OiBibG9jazsgfQoKLm5rLXJlcGx5LW1zZy1tZXRhIHsgcGFkZGluZzogLjc1cmVtOyB9CgoubmstcmVwbHktbXNnLW1ldGEgbGkgeyBkaXNwbGF5OiBmbGV4OyBsaW5lLWhlaWdodDogMS4xMjVyZW07IHBhZGRpbmc6IC4xODc1cmVtIDA7IH0KCi5uay1yZXBseS1tc2ctbWV0YSBsaSAubGFiZWwgeyB3aWR0aDogNzVweDsgY29sb3I6ICM4MDk0YWU7IGZvbnQtc2l6ZTogMTJweDsgdGV4dC1hbGlnbjogcmlnaHQ7IG1hcmdpbi1yaWdodDogMC43NXJlbTsgfQoKLm5rLXJlcGx5LW1zZy1tZXRhIGxpIC5pbmZvIHsgZm9udC1zaXplOiAxM3B4OyB9CgoubmstcmVwbHktbXNnLW1ldGEgbGkgLmluZm8gYSB7IGNvbG9yOiAjNTI2NDg0OyB9CgoubmstcmVwbHktdG9vbHMgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBmbGV4LXNocmluazogMDsgY3Vyc29yOiBkZWZhdWx0OyB9CgoubmstcmVwbHktdG9vbHMgLmRhdGUgeyBtYXJnaW4tcmlnaHQ6IDFyZW07IGxpbmUtaGVpZ2h0OiAyLjI1cmVtOyBjb2xvcjogIzUyNjQ4NDsgfQoKLm5rLXJlcGx5LXRvb2xzIC5hdHRhY2gtbXNnIHsgZm9udC1zaXplOiAxLjI1cmVtOyBtYXJnaW4tcmlnaHQ6IDAuMzc1cmVtOyB9CgoubmstcmVwbHktZGVzYyB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZ3JvdzogMTsgfQoKLmlzLWNvbGxhcHNlZCAubmstcmVwbHktZGVzYyB7IG92ZXJmbG93OiBoaWRkZW47IH0KCi5uay1yZXBseS1oZWFkZXIgLm5rLXJlcGx5LWRlc2MgeyBhbGlnbi1pdGVtczogY2VudGVyOyB9CgoubmstcmVwbHktaW5mbyB7IG1hcmdpbi1sZWZ0OiAxcmVtOyBtYXgtd2lkdGg6IGNhbGMoMTAwJSAtIDQuNXJlbSk7IH0KCi5uay1yZXBseS1oZWFkZXIuaXMtY29sbGFwc2VkIHsgbWFyZ2luLWJvdHRvbTogMDsgfQoKLm5rLXJlcGx5LWhlYWRlcjpub3QoLmlzLW9wZW5lZCkgeyBjdXJzb3I6IHBvaW50ZXI7IH0KCi5pcy1jb2xsYXBzZWQgKyAubmstcmVwbHktYm9keSB7IGRpc3BsYXk6IG5vbmU7IH0KCi5uay1yZXBseS1xdWljay1idG5zIHVsIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgfQoKLmlzLWNvbGxhcHNlZCAucHJldi1tc2csIC5pcy1jb2xsYXBzZWQgLm5leHQtbXNnLCAuaXMtY29sbGFwc2VkIC5tb3JlLWFjdGlvbnMsIC5pcy1jb2xsYXBzZWQgLnJlcGx5dG8tbXNnLCAuaXMtY29sbGFwc2VkIC5mb3J3YXJkdG8tbXNnIHsgZGlzcGxheTogbm9uZTsgfQoKLmlucHV0LW1haWwgeyB3aWR0aDogMTAwJTsgYm9yZGVyOiBub25lOyB9CgpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsgLm5rLXJlcGx5LXRvb2xzIHsgZmxleC13cmFwOiB3cmFwOyB9CiAgLm5rLXJlcGx5LXRvb2xzIC5kYXRlIHsgbWFyZ2luLXJpZ2h0OiAuNXJlbTsgZm9udC1zaXplOiAxM3B4OyB9CiAgLm5rLXJlcGx5LXRvb2xzIC5hdHRhY2gtbXNnIHsgZm9udC1zaXplOiAxLjI1cmVtOyBtYXJnaW4tcmlnaHQ6IDAuMzc1cmVtOyB9IH0KCkBtZWRpYSAobWF4LXdpZHRoOiA1NzUuOThweCkgeyAubmstcmVwbHktaW5mbyB7IG1hcmdpbi1sZWZ0OiAwLjc1cmVtOyBtYXgtd2lkdGg6IGNhbGMoMTAwJSAtIDIuNXJlbSk7IH0KICAuaXMtY29sbGFwc2VkIC5uay1yZXBseS1pbmZvIHsgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSA0LjVyZW0pOyB9CiAgLm5rLXJlcGx5LWluZm8gLmRhdGUgeyBmb250LXNpemU6IDExcHg7IGNvbG9yOiAjODA5NGFlOyBtYXJnaW4tbGVmdDogLjM3NXJlbTsgfQogIC5uay1yZXBseS1pbmZvIC5sZWFkLXRleHQgeyBmb250LXNpemU6IDEzcHg7IH0KICAubmstcmVwbHktZm9ybS1kcm9wZG93biB7IG1hcmdpbi1yaWdodDogMC41cmVtOyB9CiAgLm5rLXJlcGx5LWZvcm0tZ3JvdXAgeyBmbGV4LXdyYXA6IHdyYXA7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IH0KICAubmstcmVwbHktZm9ybS10aXRsZSB7IGZvbnQtd2VpZ2h0OiA1MDA7IH0KICAubmstcmVwbHktdG9vbHMgLmF0dGFjaC1tc2csIC5uay1yZXBseS10b29scyAuZGF0ZS1tc2cgeyBkaXNwbGF5OiBub25lOyB9CiAgLm5rLXJlcGx5LWF2YXRhciB7IGhlaWdodDogMzBweDsgd2lkdGg6IDMwcHg7IH0KICAubmstcmVwbHktbXNnLWV4Y2VycHQgeyBmb250LXNpemU6IDEycHg7IG1hcmdpbi10b3A6IDAuMjVyZW07IH0KICAubmstcmVwbHktbXNnLWluZm8gLnN1Yi10ZXh0IHsgZm9udC1zaXplOiAxMnB4OyB9CiAgLm5rLXJlcGx5LW1zZy1pbmZvIC5kcm9wZG93bi1tZW51IHsgbWFyZ2luLXJpZ2h0OiAxNnB4ICFpbXBvcnRhbnQ7IH0gfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7IC5uay1yZXBseS1mb3JtIHsgbWFyZ2luOiAwLjVyZW0gMi4yNXJlbSAyLjI1cmVtOyBib3JkZXI6IDFweCBzb2xpZCAjZTVlOWYyOyBib3JkZXItcmFkaXVzOiA0cHg7IH0KICAubmstcmVwbHktZm9ybS1oZWFkZXIgeyBwYWRkaW5nOiAwIDEuNXJlbTsgfQogIC5uay1yZXBseS1mb3JtLWZpZWxkIHsgcGFkZGluZzogLjVyZW0gMS41cmVtOyB9CiAgLm5rLXJlcGx5LWZvcm0tZmllbGQgdGV4dGFyZWEuZm9ybS1jb250cm9sLmV4LWxhcmdlLCAubmstcmVwbHktZm9ybS1maWVsZCAuZHVhbC1saXN0Ym94IHRleHRhcmVhLmV4LWxhcmdlLmR1YWwtbGlzdGJveF9fc2VhcmNoLCAuZHVhbC1saXN0Ym94IC5uay1yZXBseS1mb3JtLWZpZWxkIHRleHRhcmVhLmV4LWxhcmdlLmR1YWwtbGlzdGJveF9fc2VhcmNoIHsgbWluLWhlaWdodDogMjc4cHg7IH0KICAubmstcmVwbHktZm9ybS10b29scyB7IHBhZGRpbmc6IDFyZW0gMS41cmVtOyB9CiAgLm1vZGFsLWJvZHkgLm5rLXJlcGx5LWZvcm0tdG9vbHMgeyBwYWRkaW5nOiAxLjVyZW07IH0KICAubmstcmVwbHktaXRlbSB7IHBhZGRpbmc6IDJyZW0gMi4yNXJlbTsgfQogIC5uay1yZXBseS1tZXRhIHsgbWFyZ2luOiAwIDIuMjVyZW07IH0KICAubmstcmVwbHktaGVhZGVyIC5kYXRlLXRpbWUgeyBmb250LXNpemU6IDEzcHg7IH0KICAubmstcmVwbHktcXVpY2stYnRucyB7IG1hcmdpbjogMC41cmVtIDIuMjVyZW0gMi4yNXJlbTsgfSB9CgpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHsgLm5rLXJlcGx5LWZvcm0geyBtYXJnaW46IDAuNXJlbSAyLjVyZW0gMi41cmVtOyB9CiAgLm5rLXJlcGx5LWl0ZW0geyBwYWRkaW5nOiAycmVtIDIuNXJlbTsgfQogIC5uay1yZXBseS1tZXRhIHsgbWFyZ2luOiAwIDIuNXJlbTsgfQogIC5uay1yZXBseS1xdWljay1idG5zIHsgbWFyZ2luOiAwLjVyZW0gMi41cmVtIDIuNXJlbTsgfSB9CgouYXR0YWNoLWZpbGVzIHsgbWFyZ2luLXRvcDogMS43NXJlbTsgYm9yZGVyOiAxcHggc29saWQgI2U1ZTlmMjsgYm9yZGVyLXJhZGl1czogNHB4OyB9CgouYXR0YWNoLWxpc3QgeyBwYWRkaW5nOiAxcmVtIDEuMjVyZW07IG1hcmdpbi1ib3R0b206IC0uNXJlbTsgZGlzcGxheTogZmxleDsgZmxleC13cmFwOiB3cmFwOyB9CgouYXR0YWNoLWl0ZW0geyB3aWR0aDogMTgwcHg7IHBhZGRpbmctcmlnaHQ6IDJyZW07IHBhZGRpbmctYm90dG9tOiAwLjVyZW07IH0KCi5hdHRhY2gtaXRlbSBhIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgd2lkdGg6IDEwMCU7IGNvbG9yOiAjNTI2NDg0OyB9CgouYXR0YWNoLWl0ZW0gLmljb24geyBmb250LXNpemU6IDEuNXJlbTsgY29sb3I6ICMwOTcxZmU7IG1hcmdpbi1yaWdodDogMC43NXJlbTsgfQoKLmF0dGFjaC1mb290IHsgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlNWU5ZjI7IGJhY2tncm91bmQ6ICNmNWY2ZmE7IHBhZGRpbmc6IC43NXJlbSAxLjI1cmVtOyBkaXNwbGF5OiBmbGV4OyBmbGV4LXdyYXA6IHdyYXA7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgfQoKLmF0dGFjaC1pbmZvIHsgZm9udC13ZWlnaHQ6IDUwMDsgY29sb3I6ICMzNjRhNjM7IH0KCi5hdHRhY2gtZG93bmxvYWQgc3BhbiB7IGNvbG9yOiAjODA5NGFlOyB0cmFuc2l0aW9uOiBhbGwgLjNzOyB9CgouYXR0YWNoLWRvd25sb2FkOmhvdmVyIHNwYW4geyBjb2xvcjogIzA5NzFmZTsgfQoKQG1lZGlhIChtYXgtd2lkdGg6IDM1OXB4KSB7IC5hdHRhY2gtaW5mbyB7IGZvbnQtc2l6ZTogMTJweDsgfQogIC5hdHRhY2gtZG93bmxvYWQgeyBmb250LXNpemU6IDEycHg7IH0gfQoKLm5rLW1zZy1uYXYgeyBwb3NpdGlvbjogcmVsYXRpdmU7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTVlOWYyOyBwYWRkaW5nOiAwIDEuMjVyZW07IGJhY2tncm91bmQ6ICNmZmY7IHotaW5kZXg6IDI7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDNweDsgfQoKLm5rLW1zZy1uYXYgLnNlYXJjaC13cmFwIHsgcGFkZGluZzogMCAxcmVtOyBib3R0b206IC0xcHg7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTVlOWYyOyBib3JkZXItcmFkaXVzOiAwOyB9CgoubmstbXNnLW5hdiAuc2VhcmNoLXN1Ym1pdCB7IHRyYW5zZm9ybTogdHJhbnNsYXRlKDAuMjVyZW0sIC01MCUpOyB9CgoubmstbXNnLW1lbnUgeyBkaXNwbGF5OiBmbGV4OyBtYXJnaW46IDAgLTAuNzVyZW07IH0KCi5uay1tc2ctbWVudS1pdGVtIHsgcGFkZGluZzogMCAwLjc1cmVtOyB9CgoubmstbXNnLW1lbnUtaXRlbSBhIHsgZGlzcGxheTogaW5saW5lLWZsZXg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6ICM4MDk0YWU7IGZvbnQtd2VpZ2h0OiA1MDA7IGZvbnQtc2l6ZTogLjg3NXJlbTsgbGluZS1oZWlnaHQ6IDEuNXJlbTsgcGFkZGluZzogMXJlbSAwOyB9CgoubmstbXNnLW1lbnUtaXRlbSBhOmFmdGVyIHsgcG9zaXRpb246IGFic29sdXRlOyBjb250ZW50OiAnJzsgaGVpZ2h0OiAycHg7IGJhY2tncm91bmQ6ICMwOTcxZmU7IGJvdHRvbTogLTFweDsgbGVmdDogMDsgcmlnaHQ6IDA7IG9wYWNpdHk6IDA7IHRyYW5zaXRpb246IC4zcyBlYXNlOyB9CgoubmstbXNnLW1lbnUtaXRlbSBhIC5pY29uIHsgZm9udC1zaXplOiAxLjEyNXJlbTsgbGluZS1oZWlnaHQ6IDEuNXJlbTsgfQoKLm5rLW1zZy1tZW51LWl0ZW0gYTpob3ZlciB7IGNvbG9yOiAjMDk3MWZlOyB9CgoubmstbXNnLW1lbnUtaXRlbS5hY3RpdmUgYSB7IGNvbG9yOiAjMDk3MWZlOyB9CgoubmstbXNnLW1lbnUtaXRlbS5hY3RpdmUgYTphZnRlciB7IG9wYWNpdHk6IDE7IH0KCi5uay1tc2cgeyBwb3NpdGlvbjogcmVsYXRpdmU7IGRpc3BsYXk6IGZsZXg7IG92ZXJmbG93OiBoaWRkZW47IGJhY2tncm91bmQ6ICNmZmY7IG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggLSAoNjVweCArIDY0cHggKyA2NHB4KSk7IG1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSAoNjVweCArIDY0cHggKyA2NHB4KSk7IH0KCi5uay1tc2ctYXNpZGUgeyB3aWR0aDogMTAwJTsgb3ZlcmZsb3c6IGhpZGRlbjsgbWF4LWhlaWdodDogMTAwJTsgcG9zaXRpb246IHJlbGF0aXZlOyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBmbGV4LXNocmluazogMDsgYmFja2dyb3VuZDogI2ZmZjsgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogM3B4OyBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAzcHg7IH0KCi5uay1tc2ctbGlzdCB7IG1heC1oZWlnaHQ6IDEwMCU7IGhlaWdodDogMTAwJTsgb3ZlcmZsb3c6IGF1dG87IH0KCi5uay1tc2ctaXRlbSB7IGRpc3BsYXk6IGZsZXg7IHBhZGRpbmc6IDEuMjVyZW0gMS4yNXJlbTsgY3Vyc29yOiBwb2ludGVyOyB9CgoubmstbXNnLWl0ZW06bm90KDpsYXN0LWNoaWxkKSB7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTVlOWYyOyB9CgoubmstbXNnLWl0ZW0uYWN0aXZlLCAubmstbXNnLWl0ZW0uY3VycmVudCB7IGJhY2tncm91bmQ6IHJnYmEoMjQ1LCAyNDYsIDI1MCwgMC43KTsgcG9zaXRpb246IHJlbGF0aXZlOyBjdXJzb3I6IGRlZmF1bHQ7IH0KCi5uay1tc2ctaXRlbS5hY3RpdmU6YWZ0ZXIsIC5uay1tc2ctaXRlbS5jdXJyZW50OmFmdGVyIHsgcG9zaXRpb246IGFic29sdXRlOyBjb250ZW50OiAiIjsgbGVmdDogMDsgdG9wOiAwOyBoZWlnaHQ6IDEwMCU7IHdpZHRoOiAzcHg7IGJhY2tncm91bmQ6ICMwOTcxZmU7IH0KCi5uay1tc2ctaW5mbyB7IG1heC13aWR0aDogY2FsYygxMDAlIC0gNTJweCk7IG1hcmdpbi1sZWZ0OiAwLjc1cmVtOyBmbGV4LWdyb3c6IDE7IH0KCi5uay1tc2ctZnJvbSB7IGRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgYWxpZ24taXRlbXM6IGNlbnRlcjsgfQoKLm5rLW1zZy1jb250ZXh0IHsgZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyBtYXJnaW4tdG9wOiAwLjI1cmVtOyB9CgoubmstbXNnLWNvbnRleHQgLmFzdGVyaXNrIHsgbWFyZ2luLXRvcDogYXV0bzsgfQoKLm5rLW1zZy1zZW5kZXIgeyBkaXNwbGF5OiBpbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgY29sb3I6ICM4MDk0YWU7IGZvbnQtc2l6ZTogMTJweDsgfQoKLm5rLW1zZy1zZW5kZXIgLm5hbWUgeyBtYXJnaW4tcmlnaHQ6IDAuNXJlbTsgfQoKLmlzLXVucmVhZCAubmstbXNnLXNlbmRlciAubmFtZSB7IGZvbnQtd2VpZ2h0OiA1MDA7IGNvbG9yOiAjMzY0YTYzOyB9CgoubmstbXNnLW1ldGEgeyBkaXNwbGF5OiBpbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgY29sb3I6ICM4MDk0YWU7IGZvbnQtc2l6ZTogMTJweDsgfQoKLm5rLW1zZy1tZXRhIC5hdHRjaG1lbnQgLmljb24geyBmb250LXNpemU6IDEuMTI1cmVtOyB9CgoubmstbXNnLW1ldGEgLmRhdGUgeyBtYXJnaW4tbGVmdDogMC43NXJlbTsgfQoKLm5rLW1zZy10ZXh0IHsgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAzNXB4KTsgZmxleC1ncm93OiAwOyBwYWRkaW5nLXJpZ2h0OiAwLjVyZW07IH0KCi5uay1tc2ctdGV4dCAudGl0bGUgeyBmb250LXNpemU6IDE1cHg7IG1hcmdpbi1ib3R0b206IDAuMjVyZW07IH0KCi5uay1tc2ctdGV4dCBwIHsgZm9udC1zaXplOiAxM3B4OyBjb2xvcjogIzgwOTRhZTsgbWF4LWhlaWdodDogNDJweDsgb3ZlcmZsb3c6IGhpZGRlbjsgfQoKLmlzLXVucmVhZCAubmstbXNnLXRleHQgcCB7IGNvbG9yOiAjNTI2NDg0OyBmb250LXdlaWdodDogNTAwOyB9CgoubmstbXNnLWxhYmxlcyB7IHRleHQtYWxpZ246IGNlbnRlcjsgbWFyZ2luOiAtLjEyNXJlbTsgZGlzcGxheTogaW5saW5lLWZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IH0KCi5uay1tc2ctbGFibGVzID4gZGl2IHsgcGFkZGluZzogLjEyNXJlbTsgfQoKLm5rLW1zZy1sYWJsZXMgLmljb24geyBmb250LXNpemU6IDEuMTI1cmVtOyB9CgoubmstbXNnLWxhYmxlcyAuYmFkZ2UgeyBsaW5lLWhlaWdodDogMTRweDsgZm9udC1zaXplOiAxMHB4OyBwYWRkaW5nOiAwIC4yNXJlbTsgfQoKLm5rLW1zZy1ib2R5IHsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IGxlZnQ6IDA7IHJpZ2h0OiAwOyBib3R0b206IDA7IGZsZXgtZ3JvdzogMTsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgb3ZlcmZsb3c6IGhpZGRlbjsgdHJhbnNpdGlvbjogcGFkZGluZyAuM3MgZWFzZS1pbi1vdXQ7IG9wYWNpdHk6IDA7IHBvaW50ZXItZXZlbnRzOiBub25lOyB6LWluZGV4OiA1OyB9CgoubmstbXNnLWJvZHkuc2hvdy1tZXNzYWdlIHsgb3BhY2l0eTogMTsgcG9pbnRlci1ldmVudHM6IGF1dG87IH0KCi5uay1tc2ctcHJvZmlsZSB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyByaWdodDogMDsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpOyB3aWR0aDogMjgwcHg7IGhlaWdodDogMTAwJTsgbWF4LWhlaWdodDogMTAwJTsgdHJhbnNpdGlvbjogdHJhbnNmb3JtIC4zcyAgZWFzZS1pbi1vdXQ7IGJhY2tncm91bmQ6ICNmZmY7IHotaW5kZXg6IDEwMDsgfQoKLm5rLW1zZy1wcm9maWxlLXRvZ2dsZSB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgaGVpZ2h0OiAzNnB4OyB3aWR0aDogMzZweDsgZGlzcGxheTogbm9uZTsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGJvdHRvbTogLTE4cHg7IHJpZ2h0OiAtMThweDsgbWFyZ2luLXJpZ2h0OiA0MHB4OyB0cmFuc2l0aW9uOiByaWdodCAuM3MgZWFzZS1pbi1vdXQsIG1hcmdpbiAuM3MgZWFzZS1pbi1vdXQgLjJzOyBib3JkZXI6IDFweCBzb2xpZCAjZTVlOWYyOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyBib3JkZXItcmFkaXVzOiA1MCU7IGZvbnQtc2l6ZTogMS4xMjVyZW07IHotaW5kZXg6IDI7IGNvbG9yOiAjODA5NGFlOyB6LWluZGV4OiAxMTA7IH0KCi5uay1tc2ctcHJvZmlsZS10b2dnbGUuYWN0aXZlIHsgbWFyZ2luLXJpZ2h0OiAwOyB0cmFuc2Zvcm06IHJvdGF0ZSgtMTgwZGVnKTsgfQoKLm5rLW1zZy1wcm9maWxlLW92ZXJsYXkgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgcmlnaHQ6IDA7IGJvdHRvbTogMDsgbGVmdDogMDsgYmFja2dyb3VuZDogcmdiYSgxNiwgMjUsIDM2LCAwLjQpOyB6LWluZGV4OiA2MDA7IHotaW5kZXg6IDkwOyBhbmltYXRpb246IG92ZXJsYXktZmFkZS1pbiAuNHMgZWFzZSAxOyB9CgoubmstbXNnLXByb2ZpbGUudmlzaWJsZSB7IHRyYW5zZm9ybTogbm9uZTsgfQoKLm5rLW1zZy1oZWFkIHsgcG9zaXRpb246IHJlbGF0aXZlOyBwYWRkaW5nOiAwLjc1cmVtIDEuMjVyZW07IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTVlOWYyOyB9CgoubmstbXNnLWhlYWQgLnRpdGxlIHsgbWFyZ2luLWJvdHRvbTogLjVyZW07IH0KCi5uay1tc2ctaGVhZC1tZXRhIHsgZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyBhbGlnbi1pdGVtczogY2VudGVyOyB9CgoubmstbXNnLWhpZGUgeyBmb250LXNpemU6IDFyZW07IH0KCi5uay1tc2ctdGFncyB7IG1hcmdpbjogMCAtLjc1cmVtOyB9CgoubmstbXNnLXRhZ3MgbGkgeyBwYWRkaW5nOiAwIC43NXJlbTsgY29sb3I6ICM4MDk0YWU7IH0KCi5uay1tc2ctdGFncyBsaSA+IHNwYW4geyBkaXNwbGF5OiBpbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgfQoKLm5rLW1zZy10YWdzIGxpID4gc3BhbiAuaWNvbiB7IGNvbG9yOiAjMDk3MWZlOyBtYXJnaW4tcmlnaHQ6IDAuMjVyZW07IH0KCi5uay1tc2ctYWN0aW9ucyB7IGRpc3BsYXk6IGZsZXg7IG1hcmdpbjogMCAtLjI1cmVtOyB9CgoubmstbXNnLWFjdGlvbnMgbGkgeyBwYWRkaW5nOiAwIC4yNXJlbTsgfQoKQG1lZGlhIChtYXgtd2lkdGg6IDU3NS45OHB4KSB7IC5uay1tc2cgeyBib3JkZXI6IG5vbmU7IGJvcmRlci1yYWRpdXM6IDRweDsgbWluLWhlaWdodDogY2FsYygxMDB2aCAtICg2NXB4ICsgNjRweCkpOyBtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gKDY1cHggKyA2NHB4KSk7IH0gfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7IC5uay1tc2ctbmF2IHsgcGFkZGluZzogMCAycmVtOyB9CiAgLm5rLW1zZy1uYXYgLnNlYXJjaC13cmFwIHsgcGFkZGluZzogMCAxLjdyZW07IH0KICAubmstbXNnLWl0ZW0geyBwYWRkaW5nOiAxLjI1cmVtIDJyZW07IH0KICAubmstbXNnLWhlYWQgeyBwYWRkaW5nOiAxcmVtIDIuMjVyZW07IH0KICAubmstbXNnLWhlYWQgLnRpdGxlIHsgbWFyZ2luLWJvdHRvbTogMXJlbTsgfSB9CgpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIGFuZCAobWF4LXdpZHRoOiA5OTEuOThweCkgeyAubmstbXNnLXRleHQgLnRpdGxlIHsgbWFyZ2luLXRvcDogMC4xMjVyZW07IG1hcmdpbi1ib3R0b206IDAuMzc1cmVtOyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgeyAubmstbXNnLW5hdiB7IHBhZGRpbmc6IDAgMS43NXJlbTsgfQogIC5uay1tc2ctbmF2IC5zZWFyY2gtd3JhcCB7IHBhZGRpbmc6IDAgMS40MjVyZW07IH0KICAubmstbXNnLWl0ZW0geyBwYWRkaW5nOiAxLjI1cmVtIDEuNzVyZW07IH0KICAubmstbXNnLWhlYWQgeyBwYWRkaW5nOiAycmVtIDIuNXJlbTsgfQogIC5uay1tc2ctaGVhZCAudGl0bGUgeyBtYXgtaGVpZ2h0OiA4MnB4OyBvdmVyZmxvdzogaGlkZGVuOyB9CiAgLm5rLW1zZy1hc2lkZSB7IHdpZHRoOiAzMjBweDsgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2U1ZTlmMjsgfQogIC5uay1tc2ctYm9keSB7IHBvc2l0aW9uOiBzdGF0aWM7IG9wYWNpdHk6IDE7IHBvaW50ZXItZXZlbnRzOiBhdXRvOyB9CiAgLm5rLW1zZy1wcm9maWxlIHsgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZTVlOWYyOyB9CiAgLm5rLW1zZy1wcm9maWxlLXRvZ2dsZSB7IG1hcmdpbi1yaWdodDogNTVweDsgZGlzcGxheTogZmxleDsgfSB9CgpAbWVkaWEgKG1pbi13aWR0aDogMTU0MHB4KSB7IC5uay1tc2ctYXNpZGUgeyB3aWR0aDogMzgwcHg7IH0gfQoKQG1lZGlhIChtYXgtd2lkdGg6IDE1MzkuOThweCkgeyAucHJvZmlsZS1zaG93biAubmstbXNnLXByb2ZpbGUtdG9nZ2xlIHsgcmlnaHQ6IDI2MnB4OyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiAxNTQwcHgpIHsgLm5rLW1zZy1ib2R5LnByb2ZpbGUtc2hvd24geyBwYWRkaW5nLXJpZ2h0OiAyODBweDsgfSB9CgouaWJ4LWNvdW50IHsgcG9zaXRpb246IHJlbGF0aXZlOyBwYWRkaW5nOiAwLjMxMjVyZW0gMC43NXJlbTsgZm9udC1zaXplOiAwLjc1cmVtOyBjb2xvcjogIzgwOTRhZTsgYmFja2dyb3VuZDogI2ZmZjsgYm9yZGVyOiAxcHggc29saWQgI2U1ZTlmMjsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBmb250LXdlaWdodDogNDAwOyBsaW5lLWhlaWdodDogMTsgdGV4dC1hbGlnbjogY2VudGVyOyB3aGl0ZS1zcGFjZTogbm93cmFwOyB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IGJvcmRlci1yYWRpdXM6IDNweDsgfQoKLmlieC1jb3VudDpiZWZvcmUsIC5pYngtY291bnQ6YWZ0ZXIgeyBwb3NpdGlvbjogYWJzb2x1dGU7IGhlaWdodDogMDsgd2lkdGg6IDA7IHRvcDogNTAlOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7IGNvbnRlbnQ6ICcnOyBib3JkZXItc3R5bGU6IHNvbGlkOyB9CgouaWJ4LWNvdW50OmJlZm9yZSB7IHJpZ2h0OiAtOHB4OyBib3JkZXItd2lkdGg6IDRweCAwIDRweCA3cHg7IGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgI2U1ZTlmMjsgfQoKLmlieC1jb3VudDphZnRlciB7IHJpZ2h0OiAtNnB4OyBib3JkZXItd2lkdGg6IDNweCAwIDNweCA2cHg7IGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgI2ZmZjsgfQoKLm5rLWlieC1jb250ZXh0IHsgb3ZlcmZsb3c6IGhpZGRlbjsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7IH0KCi5uay1pYngtY29udGV4dC1ncm91cCB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IH0KCi5uay1pYngtY29udGV4dC1iYWRnZXMgeyBtYXJnaW4tcmlnaHQ6IDAuNzVyZW07IH0KCi5uay1pYngtY29udGV4dC10ZXh0IHsgZGlzcGxheTogaW5saW5lOyBjb2xvcjogIzgwOTRhZTsgfQoKLmlzLXVucmVhZCAubmstaWJ4LWNvbnRleHQtdGV4dCB7IGNvbG9yOiAjNTI2NDg0OyB9CgoubmstaWJ4LWNvbnRleHQtdGV4dCAuaGVhZGluZyB7IGNvbG9yOiAjMzY0YTYzOyB9CgouaXMtdW5yZWFkIC5uay1pYngtY29udGV4dC10ZXh0IC5oZWFkaW5nIHsgZm9udC13ZWlnaHQ6IDUwMDsgfQoKLmlieC1hY3Rpb25zIHsgcG9zaXRpb246IHJlbGF0aXZlOyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjNzOyB9CgouaWJ4LWFjdGlvbnMtaGlkZGVuIHsgcG9zaXRpb246IGFic29sdXRlOyBkaXNwbGF5OiBmbGV4OyByaWdodDogY2FsYygxMDAlICsgOHB4KTsgb3BhY2l0eTogMDsgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuM3M7IH0KCi5uay1pYngtaXRlbTpob3ZlciAuaWJ4LWFjdGlvbnMtaGlkZGVuIHsgb3BhY2l0eTogMTsgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjZmYTsgfQoKLm5rLWlieC1pdGVtOmhvdmVyIC5pYngtYWN0aW9ucyB7IGJhY2tncm91bmQtY29sb3I6ICNmNWY2ZmE7IH0KCi5uay1pYnggeyBwb3NpdGlvbjogcmVsYXRpdmU7IGRpc3BsYXk6IGZsZXg7IG92ZXJmbG93OiBoaWRkZW47IG1pbi1oZWlnaHQ6IGNhbGMoMTAwdmggLSAoNjVweCArIDY0cHgpKTsgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtICg2NXB4ICsgNjRweCkpOyBiYWNrZ3JvdW5kOiAjZmZmOyB9CgoubmstaWJ4LWFzaWRlIHsgcG9zaXRpb246IGFic29sdXRlOyBiYWNrZ3JvdW5kOiAjZmZmOyB3aWR0aDogMjYwcHg7IG92ZXJmbG93OiBoaWRkZW47IGhlaWdodDogMTAwJTsgbWF4LWhlaWdodDogMTAwJTsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgYWxpZ24taXRlbXM6IHN0cmV0Y2g7IGZsZXgtc2hyaW5rOiAwOyBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjZTVlOWYyOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpOyB6LWluZGV4OiA5OTsgdHJhbnNpdGlvbjogdHJhbnNmb3JtIC40cyBsaW5lYXI7IH0KCi5uay1pYngtYXNpZGUgKyAudG9nZ2xlLW92ZXJsYXkgeyB6LWluZGV4OiA5MDsgcG9zaXRpb246IGFic29sdXRlOyB9CgoubmstaWJ4LWFzaWRlLmNvbnRlbnQtYWN0aXZlIHsgdHJhbnNmb3JtOiBub25lOyB9CgoubmstaWJ4LW5hdiB7IG92ZXJmbG93OiBhdXRvOyBmbGV4LWdyb3c6IDE7IGhlaWdodDogMTAwJTsgbWF4LXdpZHRoOiAxMDAlOyB9CgoubmstaWJ4LW5hdiAuc2ltcGxlYmFyLWNvbnRlbnQgeyBoZWlnaHQ6IDEwMCU7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IH0KCi5uay1pYngtbmF2LWhlYWQgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IHBhZGRpbmc6IDJyZW0gMS41cmVtIC43NXJlbTsgfQoKLm5rLWlieC1uYXYtaGVhZCAudGl0bGUgeyBmb250LXNpemU6IDFyZW07IG1hcmdpbi1ib3R0b206IDA7IH0KCi5uay1pYngtbmF2LWhlYWQgLmRyb3Bkb3duID4gYSwgLm5rLWlieC1uYXYtaGVhZCA+IC5saW5rIHsgY29sb3I6ICM4MDk0YWU7IGZvbnQtc2l6ZTogMC44NzVyZW07IH0KCi5uay1pYngtaGVhZCB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyBwYWRkaW5nOiAuNzVyZW0gMS4yNXJlbTsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlNWU5ZjI7IG1pbi1oZWlnaHQ6IDYxcHg7IH0KCi5uay1pYngtaGVhZCAudGl0bGUgeyBmb250LXNpemU6IDFyZW07IG1hcmdpbi1ib3R0b206IDA7IH0KCi5uay1pYngtaGVhZC1hY3Rpb25zLCAubmstaWJ4LWhlYWQtdG9vbHMgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyB9CgoubmstaWJ4LWhlYWQtdG9vbHMgLmJ0bi1pY29uLmJ0bi10cmlnZ2VyIC5pY29uIHsgZm9udC1zaXplOiAxLjI1cmVtOyB9CgoubmstaWJ4LWhlYWQgLnNlYXJjaC13cmFwIHsgcGFkZGluZzogMCAxLjM2NXJlbSAwIDFyZW07IH0KCi5uay1pYngtaGVhZCAuc2VhcmNoLXdyYXAgLmljb24geyBmb250LXNpemU6IDEuMjVyZW07IH0KCi5uay1pYngtaGVhZCAuc2VhcmNoLWJhY2sgeyB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMC41cmVtLCAtNTAlKTsgfQoKLm5rLWlieC1oZWFkLWNoZWNrIHsgZGlzcGxheTogZmxleDsgbWFyZ2luLXJpZ2h0OiAuMzI1cmVtOyB9CgoubmstaWJ4LWFjdGlvbiB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgcGFkZGluZzogMXJlbSAxLjVyZW07IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTVlOWYyOyB9CgoubmstaWJ4LWFjdGlvbi1saXN0IHsgZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyBhbGlnbi1pdGVtczogY2VudGVyOyB9CgoubmstaWJ4LWFjdGlvbi1pdGVtIGEgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyB9CgoubmstaWJ4LWFjdGlvbi1pdGVtIC5pY29uIHsgZm9udC1zaXplOiAxLjVyZW07IH0KCi5uay1pYngtYWN0aW9uLWl0ZW0gLmljb24gKyBzcGFuIHsgbWFyZ2luLWxlZnQ6IDAuNXJlbTsgfQoKLm5rLWlieC1hY3Rpb24taXRlbSAuc2VhcmNoLXRvZ2dsZSAuaWNvbiB7IGZvbnQtc2l6ZTogMS4xMjVyZW07IH0KCi5uay1pYngtbWVudSBsaSB7IG1hcmdpbjogMnB4IDA7IH0KCi5uay1pYngtbWVudSBsaTpob3ZlciB7IGJhY2tncm91bmQ6ICNmNWY2ZmE7IGJvcmRlci1yYWRpdXM6IDNweDsgfQoKLm5rLWlieC1tZW51IGxpLmFjdGl2ZSB7IGJhY2tncm91bmQ6ICNlMWVlZmY7IGJvcmRlci1yYWRpdXM6IDNweDsgfQoKLm5rLWlieC1tZW51LWl0ZW0geyBwb3NpdGlvbjogcmVsYXRpdmU7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IHBhZGRpbmc6IC41cmVtIC43NXJlbTsgYm9yZGVyLXJhZGl1czogNHB4OyB9CgoubmstaWJ4LW1lbnUtaXRlbSAuaWNvbiB7IGZvbnQtc2l6ZTogMS4yNXJlbTsgbGluZS1oZWlnaHQ6IDEuNXJlbTsgd2lkdGg6IDJyZW07IGNvbG9yOiAjODA5NGFlOyB9CgoubmstaWJ4LW1lbnUtaXRlbSAuYmFkZ2UgeyBtYXJnaW4tbGVmdDogYXV0bzsgbWluLXdpZHRoOiAyLjI1cmVtOyB9CgouYWN0aXZlIC5uay1pYngtbWVudS1pdGVtIC5pY29uIHsgY29sb3I6ICMwOTcxZmU7IH0KCi5uay1pYngtbWVudS10ZXh0IHsgZm9udC1zaXplOiAuODc1cmVtOyBjb2xvcjogIzUyNjQ4NDsgZm9udC13ZWlnaHQ6IDUwMDsgbGluZS1oZWlnaHQ6IDEuNXJlbTsgfQoKLmFjdGl2ZSAubmstaWJ4LW1lbnUtdGV4dCB7IGNvbG9yOiAjMDk3MWZlOyB9CgoubmstaWJ4LWxhYmVsID4gbGksIC5uay1pYngtY29udGFjdCA+IGxpIHsgcG9zaXRpb246IHJlbGF0aXZlOyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBib3JkZXItcmFkaXVzOiA0cHg7IG1hcmdpbjogMnB4IDA7IHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjNzOyB9CgoubmstaWJ4LWxhYmVsID4gbGkgPiBhLCAubmstaWJ4LWNvbnRhY3QgPiBsaSA+IGEgeyBkaXNwbGF5OiBmbGV4OyBwYWRkaW5nOiAuNXJlbSAuNzVyZW07IGZsZXgtZ3JvdzogMTsgfQoKLm5rLWlieC1sYWJlbCA+IGxpIC5kcm9wZG93biwgLm5rLWlieC1jb250YWN0ID4gbGkgLmRyb3Bkb3duIHsgb3BhY2l0eTogMDsgfQoKLm5rLWlieC1sYWJlbCA+IGxpIC5kcm9wZG93biA+IGEsIC5uay1pYngtY29udGFjdCA+IGxpIC5kcm9wZG93biA+IGEgeyBjb2xvcjogIzUyNjQ4NDsgcGFkZGluZzogLjY4NzVyZW07IH0KCi5uay1pYngtbGFiZWwgPiBsaTpob3ZlciwgLm5rLWlieC1jb250YWN0ID4gbGk6aG92ZXIgeyBiYWNrZ3JvdW5kOiAjZjVmNmZhOyB9CgoubmstaWJ4LWxhYmVsID4gbGk6aG92ZXIgLmRyb3Bkb3duLCAubmstaWJ4LWNvbnRhY3QgPiBsaTpob3ZlciAuZHJvcGRvd24geyBvcGFjaXR5OiAxOyB9CgoubmstaWJ4LWxhYmVsID4gbGkuYWN0aXZlLCAubmstaWJ4LWNvbnRhY3QgPiBsaS5hY3RpdmUgeyBiYWNrZ3JvdW5kOiAjYTljZGZmOyB9CgoubmstaWJ4LWxhYmVsLXRleHQgeyBsaW5lLWhlaWdodDogMTsgbWFyZ2luLWxlZnQ6IDFyZW07IGZvbnQtc2l6ZTogLjg3NXJlbTsgY29sb3I6ICM1MjY0ODQ7IGZvbnQtd2VpZ2h0OiA1MDA7IH0KCi5uay1pYngtbWVudSwgLm5rLWlieC1sYWJlbCwgLm5rLWlieC1jb250YWN0IHsgcGFkZGluZy1sZWZ0OiAuNzVyZW07IHBhZGRpbmctcmlnaHQ6IC43NXJlbTsgfQoKLm5rLWlieC1tZW51IHsgcGFkZGluZy10b3A6IC43NXJlbTsgfQoKLm5rLWlieC1jb250YWN0IHsgcGFkZGluZy1ib3R0b206IDEuNzVyZW07IH0KCi5uay1pYngtc3RhdHVzIHsgbWFyZ2luLXRvcDogYXV0bzsgYmFja2dyb3VuZDogI2Y1ZjZmYTsgcGFkZGluZzogMS41cmVtIDEuNXJlbTsgfQoKLm5rLWlieC1zdGF0dXMtaW5mbyB7IG1hcmdpbi1ib3R0b206IDAuNXJlbTsgfQoKLm5rLWlieC1zdGF0dXMtaW5mbyAuaWNvbiB7IHdpZHRoOiAxLjI1cmVtOyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH0KCi5uay1pYngtYm9keSB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgb3ZlcmZsb3c6IGhpZGRlbjsgZmxleC1ncm93OiAxOyBmbGV4LXNocmluazogMTsgfQoKLm5rLWlieC1saXN0IHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgbWF4LWhlaWdodDogMTAwJTsgaGVpZ2h0OiAxMDAlOyBvdmVyZmxvdzogYXV0bzsgfQoKLm5rLWlieC1pdGVtIHsgcG9zaXRpb246IHJlbGF0aXZlOyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBiYWNrZ3JvdW5kOiAjZmZmOyBwYWRkaW5nOiAxcmVtIDEuMjVyZW07IHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjNzOyBjdXJzb3I6IHBvaW50ZXI7IH0KCi5uay1pYngtaXRlbTpub3QoOmxhc3QtY2hpbGQpIHsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlNWU5ZjI7IH0KCi5uay1pYngtaXRlbTpub3QoLm5vLWhvdmVyKTpob3ZlciwgLm5rLWlieC1pdGVtLmFjdGl2ZSB7IGJhY2tncm91bmQ6ICNmNWY2ZmE7IH0KCi5uay1pYngtaXRlbS5pcy11bnJlYWQgeyBiYWNrZ3JvdW5kOiByZ2JhKDI0NSwgMjQ2LCAyNTAsIDAuNik7IH0KCi5uay1pYngtaXRlbS1lbGVtIHsgcGFkZGluZzogMCA4cHg7IGZsZXgtc2hyaW5rOiAwOyB9CgoubmstaWJ4LWl0ZW0tZWxlbTpmaXJzdC1jaGlsZCB7IHBhZGRpbmctbGVmdDogMDsgfQoKLm5rLWlieC1pdGVtLWNoZWNrIHsgd2lkdGg6IDI4cHg7IGRpc3BsYXk6IGlubGluZS1mbGV4OyB9CgoubmstaWJ4LWl0ZW0tZmx1aWQgeyBmbGV4LWdyb3c6IDE7IGZsZXgtc2hyaW5rOiAxOyB3aWR0aDogMTAwJTsgbWF4LXdpZHRoOiAxMDAlOyBvdmVyZmxvdzogaGlkZGVuOyB9CgoubmstaWJ4LWl0ZW0tdXNlciAudXNlci1uYW1lIHsgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSA1MHB4KTsgfQoKLm5rLWlieC1pdGVtLXVzZXIgLnVzZXItbmFtZSAubGVhZC10ZXh0IHsgb3ZlcmZsb3c6IGhpZGRlbjsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7IGZvbnQtd2VpZ2h0OiA0MDA7IH0KCi5pcy11bnJlYWQgLm5rLWlieC1pdGVtLXVzZXIgLnVzZXItbmFtZSAubGVhZC10ZXh0IHsgZm9udC13ZWlnaHQ6IDUwMDsgfQoKLm5rLWlieC1pdGVtLWNvdW50IHsgd2lkdGg6IDMuMjVyZW07IH0KCi5uay1pYngtaXRlbS10aW1lIHsgd2lkdGg6IDgwcHg7IHRleHQtYWxpZ246IHJpZ2h0OyB9CgoubmstaWJ4LWl0ZW0tYXR0YWNoIHsgd2lkdGg6IDIuMjVyZW07IHRleHQtYWxpZ246IGNlbnRlcjsgfQoKLm5rLWlieC1pdGVtLXN0YXIgLmFzdGVyaXNrIHsgcGFkZGluZzogMCAuMjVyZW07IH0KCi5uay1pYngtaXRlbS1zdGFyIC5hc3RlcmlzayBhIHsgZGlzcGxheTogZmxleDsgfQoKLm5rLWlieC1pdGVtLXN0YXIgLmFzdGVyaXNrIC5pY29uIHsgbGluZS1oZWlnaHQ6IDE7IGZvbnQtc2l6ZTogMS4xMjVyZW07IH0KCi5uay1pYngtaXRlbS10b29scyB7IHBhZGRpbmctcmlnaHQ6IDA7IG1hcmdpbi1sZWZ0OiBhdXRvOyB0ZXh0LWFsaWduOiByaWdodDsgfQoKLm5rLWlieC1pdGVtLWNoZWNrLCAubmstaWJ4LWl0ZW0tc3RhciwgLm5rLWlieC1pdGVtLWF0dGFjaCB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgei1pbmRleDogMjsgfQoKLm5rLWlieC1pdGVtLXRvb2xzIHsgcG9zaXRpb246IHJlbGF0aXZlOyB6LWluZGV4OiAzOyB9CgoubmstaWJ4LWxpbmsgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgbGVmdDogMDsgYm90dG9tOiAwOyByaWdodDogMDsgei1pbmRleDogMTsgfQoKLm5rLWlieC1saW5rICsgLm5rLWlieC1pdGVtLWVsZW0geyBwYWRkaW5nLWxlZnQ6IDA7IH0KCi5uay1pYngtdmlldyB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyByaWdodDogMDsgYm90dG9tOiAwOyBsZWZ0OiAwOyBiYWNrZ3JvdW5kOiAjZmZmOyB6LWluZGV4OiAyOyBvcGFjaXR5OiAwOyB2aXNpYmlsaXR5OiBoaWRkZW47IHBvaW50ZXItZXZlbnRzOiBub25lOyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBvdmVyZmxvdzogaGlkZGVuOyB9CgoubmstaWJ4LXZpZXcuc2hvdy1pYnggeyBvcGFjaXR5OiAxOyB2aXNpYmlsaXR5OiB2aXNpYmxlOyBwb2ludGVyLWV2ZW50czogYWxsOyB9CgoubmstaWJ4LXJlcGx5LWhlYWQgeyBwYWRkaW5nOiAxLjVyZW0gMS4yNXJlbSAwOyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogZmxleC1zdGFydDsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyB9CgoubmstaWJ4LXJlcGx5LWhlYWQgLnRpdGxlIHsgbWFyZ2luLWJvdHRvbTogLjc1cmVtOyB9CgoubmstaWJ4LXJlcGx5LWhlYWRlciB7IG1hcmdpbi1yaWdodDogLS41cmVtOyB9CgoubmstaWJ4LXJlcGx5LWl0ZW0geyBwb3NpdGlvbjogcmVsYXRpdmU7IH0KCi5uay1pYngtcmVwbHktaXRlbSA+IGRpdjpub3QoLm5rLXJlcGx5LWhlYWRlcikgeyBtYXJnaW4tbGVmdDogMDsgbWFyZ2luLXRvcDogMS4yNXJlbTsgbWFyZ2luLWJvdHRvbTogMC43NXJlbTsgfQoKLm5rLWlieC1yZXBseS1pdGVtOm5vdCg6bGFzdC1jaGlsZCk6YWZ0ZXIgeyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDEuMjVyZW07IHJpZ2h0OiAxLjI1cmVtOyBoZWlnaHQ6IDFweDsgYm90dG9tOiAxcmVtOyBjb250ZW50OiAnJzsgYmFja2dyb3VuZDogI2U1ZTlmMjsgfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7IC5uay1pYngtaXRlbSwgLm5rLWlieC1oZWFkIHsgcGFkZGluZy1sZWZ0OiAyLjI1cmVtOyBwYWRkaW5nLXJpZ2h0OiAyLjI1cmVtOyB9CiAgLm5rLWlieC1oZWFkIC5zZWFyY2gtd3JhcCB7IHBhZGRpbmc6IDAgMi4zNzVyZW0gMCAycmVtOyB9CiAgLm5rLWlieC1yZXBseS1oZWFkIHsgcGFkZGluZzogMmVtIDIuMjVyZW0gMDsgfQogIC5uay1pYngtcmVwbHktaXRlbSB7IHBhZGRpbmctYm90dG9tOiAyLjc1cmVtOyB9CiAgLm5rLWlieC1yZXBseS1pdGVtID4gZGl2Om5vdCgubmstcmVwbHktaGVhZGVyKSB7IG1hcmdpbi1sZWZ0OiA1NnB4OyB9CiAgLm5rLWlieC1yZXBseS1pdGVtOm5vdCg6bGFzdC1jaGlsZCk6YWZ0ZXIgeyBib3R0b206IDEuMzc1cmVtOyBsZWZ0OiAyLjI1cmVtOyByaWdodDogMi4yNXJlbTsgfQogIC5uay1pYngtcmVwbHktcXVpY2stYnRucywgLm5rLWlieC1yZXBseS1mb3JtIHsgbWFyZ2luLWxlZnQ6IDUuNzVyZW07IH0gfQoKQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7IC5uay1pYngtaXRlbS11c2VyIHsgd2lkdGg6IDE4MHB4OyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgeyAubmstaWJ4LWFzaWRlIHsgcG9zaXRpb246IHN0YXRpYzsgdHJhbnNmb3JtOiBub25lOyB0cmFuc2l0aW9uOiBub25lOyBoZWlnaHQ6IGNhbGMoMTAwdmggLSAxMjhweCk7IH0KICAubmstaWJ4LW1lbnUsIC5uay1pYngtbGFiZWwsIC5uay1pYngtY29udGFjdCB7IHBhZGRpbmctbGVmdDogMXJlbTsgcGFkZGluZy1yaWdodDogMXJlbTsgfQogIC5uay1pYngtbWVudSB7IHBhZGRpbmctdG9wOiAxcmVtOyB9CiAgLm5rLWlieC1jb250YWN0IHsgcGFkZGluZy1ib3R0b206IDFyZW07IH0KICAubmstaWJ4LW5hdi1oZWFkIHsgcGFkZGluZy1sZWZ0OiAxLjc1cmVtOyBwYWRkaW5nLXJpZ2h0OiAxLjc1cmVtOyB9CiAgLm5rLWlieC1pdGVtLCAubmstaWJ4LWhlYWQgeyBwYWRkaW5nLWxlZnQ6IDEuNzVyZW07IHBhZGRpbmctcmlnaHQ6IDEuNzVyZW07IH0KICAubmstaWJ4LWhlYWQgLnNlYXJjaC13cmFwIHsgcGFkZGluZzogMCAyLjI1cmVtIDAgMS41cmVtOyB9CiAgLm5rLWlieC1ib2R5IHsgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAyNjBweCk7IH0KICAubmstaWJ4LXJlcGx5LXF1aWNrLWJ0bnMsIC5uay1pYngtcmVwbHktZm9ybSB7IG1hcmdpbi1sZWZ0OiA1LjI1cmVtOyB9CiAgLm5rLWlieC1yZXBseS1pdGVtLCAubmstaWJ4LXJlcGx5LWhlYWQgeyBwYWRkaW5nLWxlZnQ6IDEuNzVyZW07IHBhZGRpbmctcmlnaHQ6IDEuNzVyZW07IH0gfQoKQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkgeyAubmstaWJ4LWFzaWRlIHsgd2lkdGg6IDMwMHB4OyB9CiAgLm5rLWlieC1pdGVtLXVzZXIgeyB3aWR0aDogMjAwcHg7IH0KICAubmstaWJ4LWl0ZW0tdGltZSB7IG1hcmdpbi1yaWdodDogNXJlbTsgfSB9CgpAbWVkaWEgKG1pbi13aWR0aDogMTU0MHB4KSB7IC5uay1pYngtaXRlbS11c2VyIHsgd2lkdGg6IDI2MHB4OyB9CiAgLm5rLWlieC1pdGVtLXRvb2xzIHsgbWFyZ2luLWxlZnQ6IDVyZW07IH0gfQoKQG1lZGlhIChtYXgtd2lkdGg6IDExOTkuOThweCkgeyAubmstaWJ4LWl0ZW0tYXR0YWNoIHsgZGlzcGxheTogbm9uZTsgfSB9CgpAbWVkaWEgKG1heC13aWR0aDogNzY3Ljk4cHgpIHsgLm5rLWlieC1pdGVtIHsgZmxleC13cmFwOiB3cmFwOyB9CiAgLm5rLWlieC1pdGVtLWVsZW0geyBwYWRkaW5nOiAwIDRweDsgfQogIC5uay1pYngtaXRlbS1mbHVpZCB7IHBhZGRpbmctbGVmdDogMzJweDsgcGFkZGluZy1yaWdodDogNDhweDsgbWFyZ2luLXRvcDogNnB4OyB3aWR0aDogY2FsYygxMDAlIC0gMi41cmVtKTsgfQogIC5uay1pYngtaXRlbS1mbHVpZCAuaGVhZGluZyB7IGRpc3BsYXk6IGJsb2NrOyB9CiAgLm5rLWlieC1pdGVtLWNvdW50LCAubmstaWJ4LWl0ZW0tYXR0YWNoIHsgZGlzcGxheTogbm9uZTsgfQogIC5uay1pYngtaXRlbS11c2VyIHsgZmxleC1ncm93OiAxOyB9CiAgLm5rLWlieC1pdGVtLXVzZXIgLnVzZXItYXZhdGFyIHsgaGVpZ2h0OiAyOHB4OyB3aWR0aDogMjhweDsgZm9udC1zaXplOiAxMnB4OyB9CiAgLm5rLWlieC1pdGVtLXRpbWUgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHJpZ2h0OiAzMnB4OyB0b3A6IDE5cHg7IH0KICAubmstaWJ4LWl0ZW0tdG9vbHMgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHRleHQtYWxpZ246IHJpZ2h0OyByaWdodDogMjhweDsgYm90dG9tOiAxOHB4OyB9CiAgLm5rLWlieC1pdGVtLXN0YXIgeyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDI4cHg7IHRvcDogNTBweDsgfQogIC5uay1pYngtY29udGV4dC1iYWRnZXMgeyBkaXNwbGF5OiBub25lOyB9CiAgLmlieC1hY3Rpb25zLWhpZGRlbiB7IGRpc3BsYXk6IG5vbmU7IH0gfQoKQG1lZGlhIChtYXgtd2lkdGg6IDU3NS45OHB4KSB7IC5uay1pYngtaXRlbS1zdGFyIHsgbGVmdDogMTJweDsgfQogIC5uay1pYngtaXRlbS10aW1lIHsgcmlnaHQ6IDEycHg7IH0KICAubmstaWJ4LWl0ZW0tdG9vbHMgeyByaWdodDogOHB4OyB9CiAgLm5rLWlieC1yZXBseS1oZWFkIC50aXRsZSB7IGZvbnQtc2l6ZTogMS4xMjVyZW07IH0KICAubmstaWJ4LXJlcGx5IC5idG4taWNvbi5idG4tdHJpZ2dlciB7IHBhZGRpbmctdG9wOiAwLjMxMjVyZW07IHBhZGRpbmctYm90dG9tOiAwLjMxMjVyZW07IH0KICAubmstaWJ4LXJlcGx5IC5idG4taWNvbi5idG4tdHJpZ2dlciAuaWNvbiB7IHdpZHRoOiAxLjg3NXJlbTsgfSB9CgpAbWVkaWEgKG1heC13aWR0aDogMzU5cHgpIHsgLm5rLWlieC1oZWFkIC5idG4taWNvbi5idG4tdHJpZ2dlciB7IHBhZGRpbmctdG9wOiAwLjMxMjVyZW07IHBhZGRpbmctYm90dG9tOiAwLjMxMjVyZW07IH0KICAubmstaWJ4LWhlYWQgLmJ0bi1pY29uLmJ0bi10cmlnZ2VyIC5pY29uIHsgd2lkdGg6IDEuODc1cmVtOyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgYW5kIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7IC5uay1pYngtYXNpZGUgeyB3aWR0aDogMzIwcHg7IH0KICAubmstaWJ4LW1lbnUsIC5uay1pYngtbGFiZWwsIC5uay1pYngtY29udGFjdCB7IHBhZGRpbmctbGVmdDogMS41cmVtOyBwYWRkaW5nLXJpZ2h0OiAxLjVyZW07IH0KICAubmstaWJ4LW5hdi1oZWFkLCAubmstaWJ4LXN0YXR1cyB7IHBhZGRpbmctbGVmdDogMi4yNXJlbTsgcGFkZGluZy1yaWdodDogMi4yNXJlbTsgfSB9CgoubmstZm1nIHsgcG9zaXRpb246IHJlbGF0aXZlOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoIC0gKDY1cHggKyA2NHB4KSk7IGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjQ1LCAyNDYsIDI1MCwgMC42KTsgfQoKLm5rLWZtZy1hc2lkZSB7IHBvc2l0aW9uOiBmaXhlZDsgd2lkdGg6IDI2MHB4OyBvdmVyZmxvdzogaGlkZGVuOyBoZWlnaHQ6IDEwMCU7IG1heC1oZWlnaHQ6IDEwMCU7IGJhY2tncm91bmQ6ICNmZmY7IGZsZXgtc2hyaW5rOiAwOyB6LWluZGV4OiA5OTsgbGVmdDogMDsgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTsgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2U1ZTlmMjsgdG9wOiA2NXB4OyB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjRzIGxpbmVhcjsgbWluLWhlaWdodDogY2FsYygxMDB2aCAtIDY1cHgpOyBtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNjVweCk7IG92ZXJmbG93LXk6IGF1dG87IH0KCi5uay1mbWctYXNpZGUgKyAudG9nZ2xlLW92ZXJsYXkgeyB6LWluZGV4OiA5MDsgfQoKLm5rLWZtZy1hc2lkZS5jb250ZW50LWFjdGl2ZSB7IHRyYW5zZm9ybTogbm9uZTsgfQoKLm5rLWZtZy1hc2lkZSAuc2ltcGxlYmFyLWNvbnRlbnQgeyBoZWlnaHQ6IDEwMCU7IH0KCi5uay1mbWctYXNpZGUtd3JhcCB7IGhlaWdodDogMTAwJTsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgfQoKLm5rLWZtZy1hc2lkZS10b3AgeyBtYXJnaW4tYm90dG9tOiBhdXRvOyBtYXJnaW4tYm90dG9tOiAzMHB4OyB9CgoubmstZm1nLW1lbnUgeyBwYWRkaW5nOiAxcmVtOyB9CgoubmstZm1nLW1lbnUgbGkgeyBtYXJnaW46IDJweCAwOyB9CgoubmstZm1nLW1lbnUtaXRlbSB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgcGFkZGluZzogLjVyZW0gLjc1cmVtOyBib3JkZXItcmFkaXVzOiA0cHg7IH0KCi5uay1mbWctbWVudS1pdGVtOmhvdmVyIHsgYmFja2dyb3VuZDogI2Y1ZjZmYTsgYm9yZGVyLXJhZGl1czogM3B4OyB9CgouYWN0aXZlID4gLm5rLWZtZy1tZW51LWl0ZW0geyBiYWNrZ3JvdW5kOiAjZTFlZWZmOyBib3JkZXItcmFkaXVzOiAzcHg7IH0KCi5uay1mbWctbWVudS1pdGVtIC5pY29uIHsgZm9udC1zaXplOiAxLjI1cmVtOyBsaW5lLWhlaWdodDogMS4yNXJlbTsgbWFyZ2luLXRvcDogLTJweDsgd2lkdGg6IDJyZW07IGNvbG9yOiAjODA5NGFlOyB9CgoubmstZm1nLW1lbnUtaXRlbSAuYmFkZ2UgeyBtYXJnaW4tbGVmdDogYXV0bzsgbWluLXdpZHRoOiAyLjI1cmVtOyB9CgouYWN0aXZlID4gLm5rLWZtZy1tZW51LWl0ZW0gLmljb24geyBjb2xvcjogIzA5NzFmZTsgfQoKLm5rLWZtZy1tZW51LXRleHQgeyBmb250LXNpemU6IC44NzVyZW07IGNvbG9yOiAjNTI2NDg0OyBmb250LXdlaWdodDogNTAwOyBsaW5lLWhlaWdodDogMS41cmVtOyB9CgouYWN0aXZlID4gLm5rLWZtZy1tZW51LWl0ZW0gPiAubmstZm1nLW1lbnUtdGV4dCB7IGNvbG9yOiAjMDk3MWZlOyB9CgoubmstZm1nLW1lbnUgbGkgdWwgeyBtYXJnaW4tdG9wOiAtMC4xMjVyZW07IG1hcmdpbi1ib3R0b206IDAuNXJlbTsgcGFkZGluZy1sZWZ0OiAyLjc1cmVtOyB9CgoubmstZm1nLW1lbnUgbGkgdWwgdWwgeyBwYWRkaW5nLWxlZnQ6IC43NXJlbTsgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZTVlOWYyOyB9CgoubmstZm1nLW1lbnUgbGkgdWwgLm5rLWZtZy1tZW51LWl0ZW0geyBwYWRkaW5nOiAuMTI1cmVtIDA7IH0KCi5uay1mbWctbWVudSBsaSB1bCAubmstZm1nLW1lbnUtaXRlbTpob3ZlciwgLm5rLWZtZy1tZW51IGxpIHVsIC5uay1mbWctbWVudS1pdGVtLmFjdGl2ZSB7IGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OyB9CgoubmstZm1nLW1lbnUgbGkgdWwgLm5rLWZtZy1tZW51LWl0ZW06aG92ZXIgc3BhbiwgLm5rLWZtZy1tZW51IGxpIHVsIC5uay1mbWctbWVudS1pdGVtLmFjdGl2ZSBzcGFuIHsgY29sb3I6ICMwOTcxZmU7IH0KCi5uay1mbWctbWVudSBsaSB1bCAubmstZm1nLW1lbnUtdGV4dCB7IGZvbnQtc2l6ZTogOTAlOyBsaW5lLWhlaWdodDogMS4zNzVyZW07IH0KCi5uay1mbWctc3RhdHVzIHsgcGFkZGluZzogMS43NXJlbTsgfQoKLm5rLWZtZy1zdGF0dXMtdGl0bGUgeyBmb250LXNpemU6IC44NzVyZW07IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGNvbG9yOiAjNTI2NDg0OyBtYXJnaW4tYm90dG9tOiAxcmVtOyB9CgoubmstZm1nLXN0YXR1cy10aXRsZSAuaWNvbiB7IGZvbnQtc2l6ZTogMS4yNXJlbTsgbWFyZ2luLXJpZ2h0OiAuNzVyZW07IH0KCi5uay1mbWctc3RhdHVzLWluZm8geyBmb250LXNpemU6IDEycHg7IGZvbnQtd2VpZ2h0OiA1MDA7IGNvbG9yOiAjODA5NGFlOyBtYXJnaW4tdG9wOiAxcmVtOyB9CgoubmstZm1nLWJvZHkgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBtYXgtaGVpZ2h0OiAxMDAlOyBmbGV4LWdyb3c6IDE7IGZsZXgtc2hyaW5rOiAwOyB9CgoubmstZm1nLWJvZHktaGVhZCB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgZmxleC13cmFwOiB3cmFwOyBwYWRkaW5nOiAuNzVyZW0gMS4yNXJlbTsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkYmRmZWE7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7IHotaW5kZXg6IDk7IHBvc2l0aW9uOiByZWxhdGl2ZTsgdG9wOiAwOyBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNHB4OyB9CgoubmstZm1nLWJvZHktY29udGVudCB7IHBhZGRpbmc6IDEuMTI1cmVtIDEuMjVyZW07IGhlaWdodDogMTAwJTsgbWF4LWhlaWdodDogMTAwJTsgb3ZlcmZsb3c6IGF1dG87IH0KCi5uay1mbWctYm9keSAuc2ltcGxlYmFyLWNvbnRlbnQgeyBtaW4taGVpZ2h0OiA0NzBweDsgfQoKLm5rLWZtZy1zZWFyY2ggeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBmbGV4LWdyb3c6IDE7IH0KCi5uay1mbWctZmlsdGVyIHsgbWFyZ2luLWJvdHRvbTogMS4yNXJlbTsgfQoKLm5rLWZtZy1maWx0ZXIgLmZvcm0tbGFiZWwgeyBmb250LXdlaWdodDogNTAwOyBmb250LXNpemU6IDEzcHg7IGNvbG9yOiAjODA5NGFlOyB9CgoubmstZm1nLWZpbHRlciAuZm9ybS1ncm91cCB7IG1hcmdpbi1ib3R0b206IDFyZW07IH0KCi5uay1mbWctc3dpdGNoIHsgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTVlOWYyOyB9CgoubmstZm1nLXN3aXRjaCA+IGRpdiB7IHdpZHRoOiAxMDAlOyB9CgoubmstZm1nLXN3aXRjaCAuZHJvcGRvd24tdG9nZ2xlIHsgcGFkZGluZzogMS4yNXJlbSAxLjc1cmVtOyB3aWR0aDogMTAwJTsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7IH0KCi5uay1mbWctc3dpdGNoIC5kcm9wZG93bi10b2dnbGU6YWZ0ZXIgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHJpZ2h0OiAxLjVyZW07IHRvcDogNTAlOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7IGZvbnQtc2l6ZTogMXJlbTsgY29sb3I6ICM1MjY0ODQ7IH0KCi5uay1mbWctbGlzdGluZyB7IG1pbi1oZWlnaHQ6IDM4MHB4OyB9CgoubmstZm1nLWxpc3RpbmcuaXMtc2Nyb2xsYWJsZSB7IG1pbi1oZWlnaHQ6IGF1dG87IG1heC1oZWlnaHQ6IDI5OHB4OyB9CgpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsgLm5rLWZtZy1ib2R5LWNvbnRlbnQgeyBwYWRkaW5nLXRvcDogMS4yNXJlbTsgcGFkZGluZy1ib3R0b206IDEuMjVyZW07IH0KICAubmstZm1nLWFzaWRlLXRvcCB7IG1hcmdpbi1ib3R0b206IDEwMHB4OyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgeyAubmstZm1nIHsgcGFkZGluZy1sZWZ0OiAyNjBweDsgfQogIC5uay1mbWctYXNpZGUgeyB0cmFuc2Zvcm06IG5vbmU7IHRyYW5zaXRpb246IG5vbmU7IHdpZHRoOiAyNjBweDsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IGxlZnQ6IDA7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDRweDsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4OyBtaW4taGVpZ2h0OiAxMDAlOyBtYXgtaGVpZ2h0OiAxMDAlOyB9CiAgLm5rLWZtZy1hc2lkZS10b3AgeyBmbGV4LWdyb3c6IDA7IH0KICAubmstZm1nLWJvZHktaGVhZCB7IHBhZGRpbmc6IC43NXJlbSAxLjc1cmVtOyB6LWluZGV4OiA5OyB9CiAgLm5rLWZtZy1ib2R5LWNvbnRlbnQgeyBwYWRkaW5nOiAxLjc1cmVtOyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsgLm5rLWZtZyB7IHBhZGRpbmctbGVmdDogMjIwcHg7IH0KICAubmstZm1nLWZpbHRlci50b2dnbGUtZXhwYW5kLWNvbnRlbnQgeyBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OyB9CiAgLm5rLWZtZy1hc2lkZSB7IHdpZHRoOiAyMjBweDsgfSB9CgpAbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIGFuZCAobWF4LXdpZHRoOiAxMzYwcHgpIHsgLm5rLWZtZyB7IHBhZGRpbmctbGVmdDogMjIwcHg7IH0KICAubmstZm1nLWFzaWRlIHsgd2lkdGg6IDIyMHB4OyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiA1NzZweCkgYW5kIChtYXgtd2lkdGg6IDk5MS45OHB4KSB7IC5uay1mbWctYXNpZGUgeyB3aWR0aDogMzIwcHg7IH0KICAubmstZm1nLWJvZHktaGVhZCwgLm5rLWZtZy1ib2R5LWNvbnRlbnQsIC5uay1mbWctc3RhdHVzLCAubmstZm1nLXN3aXRjaCAuZHJvcGRvd24tdG9nZ2xlIHsgcGFkZGluZy1sZWZ0OiAyLjI1cmVtOyBwYWRkaW5nLXJpZ2h0OiAyLjI1cmVtOyB9CiAgLm5rLWZtZy1tZW51IHsgcGFkZGluZzogMXJlbSAxLjc1cmVtOyB9IH0KCi5uay1maWxlIC50Yi1zdWIgeyBmb250LXNpemU6IDEycHg7IGNvbG9yOiAjODA5NGFlOyB9CgoubmstZmlsZSAudGItaGVhZCB7IGZvbnQtd2VpZ2h0OiA1MDA7IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6ICM4MDk0YWU7IH0KCi5uay1maWxlLWluZm86aG92ZXIgLm5rLWZpbGUtbmFtZSAuYXN0ZXJpc2sgYSwgLm5rLWZpbGUtaW5mbyAubmstZmlsZS1uYW1lIC5hc3RlcmlzayBhLmFjdGl2ZSB7IG9wYWNpdHk6IDE7IH0KCi5uay1maWxlLWljb24geyBtYXJnaW4tcmlnaHQ6IDhweDsgZmxleC1zaHJpbms6IDA7IH0KCi5uay1maWxlLWljb24tbGluayB7IGRpc3BsYXk6IGJsb2NrOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGNvbG9yOiBpbmhlcml0OyB9CgoubmstZmlsZS1pY29uLXR5cGUgeyB3aWR0aDogMzJweDsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGNvbG9yOiBpbmhlcml0OyBtYXJnaW46IGF1dG87IH0KCi5uay1maWxlLXRpdGxlIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgfQoKLm5rLWZpbGUtdGl0bGUgLmJyZWFkY3J1bWIgeyBwYWRkaW5nLXRvcDogMC4yNXJlbTsgcGFkZGluZy1ib3R0b206IDA7IH0KCi5uay1maWxlLW5hbWUgeyBmb250LXdlaWdodDogNTAwOyBjb2xvcjogIzM2NGE2MzsgcG9zaXRpb246IHJlbGF0aXZlOyBsaW5lLWhlaWdodDogMS40OyB9CgoubmstZmlsZS1uYW1lLXRleHQgeyBwYWRkaW5nLXJpZ2h0OiAxLjVyZW07IGRpc3BsYXk6IGlubGluZS1ibG9jazsgfQoKLm5rLWZpbGUtbmFtZS10ZXh0IC50aXRsZSB7IHRyYW5zaXRpb246IGNvbG9yIC4zczsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7IH0KCi5uay1maWxlLW5hbWUtdGV4dCBhLnRpdGxlIHsgY29sb3I6ICMzNjRhNjM7IH0KCi5uay1maWxlLW5hbWUtdGV4dCBhLnRpdGxlOmhvdmVyIHsgY29sb3I6ICMwOTcxZmU7IH0KCi5uay1maWxlLW5hbWUtc3ViIHsgZm9udC1zaXplOiAxMnB4OyBjb2xvcjogIzgwOTRhZTsgfQoKLm5rLWZpbGUtbmFtZSAuYXN0ZXJpc2sgeyBwb3NpdGlvbjogYWJzb2x1dGU7IGRpc3BsYXk6IGlubGluZS1mbGV4OyBtYXJnaW4tbGVmdDogLjVyZW07IHRyYW5zaXRpb246IC4zcyBvcGFjaXR5OyBtYXJnaW4tdG9wOiAtMXB4OyB0b3A6IDUwJTsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOyB9CgoubmstZmlsZS1uYW1lIC5hc3RlcmlzayBhIHsgb3BhY2l0eTogMDsgfQoKLm5rLWZpbGUtbmFtZSAuYXN0ZXJpc2sgLmljb24geyBmb250LXNpemU6IDEuMTI1cmVtOyBjb2xvcjogIzA5NzFmZTsgfQoKLm5rLWZpbGUtZGVzYyB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IG1hcmdpbjogMCAtLjM3NXJlbTsgfQoKLm5rLWZpbGUtZGVzYyBsaSB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgcGFkZGluZzogMCAuMzc1cmVtOyBmb250LXNpemU6IDEycHg7IGNvbG9yOiAjODA5NGFlOyB9CgoubmstZmlsZS1kZXNjIGxpOm5vdCg6Zmlyc3QtY2hpbGQpOmJlZm9yZSB7IGNvbnRlbnQ6ICLusqEiOyBmb250LWZhbWlseTogIk5pb2ljb24iOyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogNTAlOyBsZWZ0OiAwOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsgZm9udC1zaXplOiAxMXB4OyBsaW5lLWhlaWdodDogMTBweDsgb3BhY2l0eTogLjg7IH0KCi5uay1maWxlLWxpbmsgeyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGNvbG9yOiBpbmhlcml0OyBkaXNwbGF5OiBibG9jazsgfQoKLm5rLWZpbGUtbGluazpob3ZlciAudGl0bGUgeyBjb2xvcjogIzA5NzFmZTsgfQoKLm5rLWZpbGUtaW5mbyA+IC5uay1maWxlLWxpbmsgeyBwYWRkaW5nOiAuNzVyZW0gMDsgfQoKLmlzLWNvbXBhY3QgLm5rLWZpbGUtaW5mbyA+IC5uay1maWxlLWxpbmsgeyBwYWRkaW5nOiAuMzc1cmVtIDA7IH0KCi5uay1maWxlLXNoYXJlLWhlYWRlciB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgcGFkZGluZzogMCAxLjI1cmVtOyBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2U1ZTlmMjsgfQoKLm5rLWZpbGUtc2hhcmUtZmllbGQgeyBwYWRkaW5nOiAuNXJlbSAxLjI1cmVtOyB9CgoubmstZmlsZS1zaGFyZS1maWVsZDpub3QoOmxhc3QtY2hpbGQpIHsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlNWU5ZjI7IH0KCi5uay1maWxlLXNoYXJlLWZpZWxkIC5mb3JtLWNvbnRyb2wsIC5uay1maWxlLXNoYXJlLWZpZWxkIC5kdWFsLWxpc3Rib3ggLmR1YWwtbGlzdGJveF9fc2VhcmNoLCAuZHVhbC1saXN0Ym94IC5uay1maWxlLXNoYXJlLWZpZWxkIC5kdWFsLWxpc3Rib3hfX3NlYXJjaCB7IGZvbnQtc2l6ZTogMC44NzVyZW07IH0KCi5uay1maWxlLXNoYXJlLWZpZWxkIHRleHRhcmVhLmZvcm0tY29udHJvbCwgLm5rLWZpbGUtc2hhcmUtZmllbGQgLmR1YWwtbGlzdGJveCB0ZXh0YXJlYS5kdWFsLWxpc3Rib3hfX3NlYXJjaCwgLmR1YWwtbGlzdGJveCAubmstZmlsZS1zaGFyZS1maWVsZCB0ZXh0YXJlYS5kdWFsLWxpc3Rib3hfX3NlYXJjaCB7IG1pbi1oZWlnaHQ6IDc4cHg7IH0KCi5uay1maWxlLXNoYXJlLWZpZWxkIHRleHRhcmVhLmZvcm0tY29udHJvbC5leC1sYXJnZSwgLm5rLWZpbGUtc2hhcmUtZmllbGQgLmR1YWwtbGlzdGJveCB0ZXh0YXJlYS5leC1sYXJnZS5kdWFsLWxpc3Rib3hfX3NlYXJjaCwgLmR1YWwtbGlzdGJveCAubmstZmlsZS1zaGFyZS1maWVsZCB0ZXh0YXJlYS5leC1sYXJnZS5kdWFsLWxpc3Rib3hfX3NlYXJjaCB7IG1pbi1oZWlnaHQ6IDE2MHB4OyB9CgoubmstZmlsZS1zaGFyZS1pbnB1dCB7IGRpc3BsYXk6IGZsZXg7IH0KCi5uay1maWxlLXNoYXJlLWlucHV0IC5sYWJlbCB7IG1hcmdpbjogLjNyZW0gLjVyZW0gLjNyZW0gMDsgd2lkdGg6IDEuMjVyZW07IGNvbG9yOiAjODA5NGFlOyB9CgoubmstZmlsZS1zaGFyZS1pbnB1dC1ncm91cCB7IHdpZHRoOiAxMDAlOyB9CgoubmstZmlsZS1zaGFyZS1ncm91cCB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgcGFkZGluZzogMXJlbSAwOyBmbGV4LWdyb3c6IDE7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IH0KCi5uay1maWxlLXNoYXJlLW5hdiB7IGZsZXgtc2hyaW5rOiAwOyB9CgoubmstZmlsZS1kZXRhaWxzLXJvdyB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtd3JhcDogd3JhcDsgcGFkZGluZzogLjI1cmVtIDA7IH0KCi5uay1maWxlLWRldGFpbHMtY29sIHsgZm9udC1zaXplOiAxM3B4OyB9CgoubmstZmlsZS1kZXRhaWxzLWNvbDpmaXJzdC1jaGlsZCB7IGNvbG9yOiAjODA5NGFlOyB3aWR0aDogMTAwJTsgfQoKLm5rLWZpbGUtZGV0YWlscy1jb2w6bGFzdC1jaGlsZCB7IGNvbG9yOiAjNTI2NDg0OyB9CgoubmstZmlsZS1kZXRhaWxzLWNvbCAuYnJlYWRjcnVtYiB7IHBhZGRpbmc6IDA7IH0KCkBtZWRpYSAobWluLXdpZHRoOiA0MjBweCkgeyAubmstZmlsZS1kZXRhaWxzLXJvdyB7IGZsZXgtd3JhcDogbm93cmFwOyBwYWRkaW5nOiAuMzc1cmVtIDA7IH0KICAubmstZmlsZS1kZXRhaWxzLWNvbDpmaXJzdC1jaGlsZCB7IHdpZHRoOiAxMDBweDsgZmxleC1zaHJpbms6IDA7IH0gfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7IC5uay1maWxlLXNoYXJlLWZpZWxkIHRleHRhcmVhLmZvcm0tY29udHJvbC5leC1sYXJnZSwgLm5rLWZpbGUtc2hhcmUtZmllbGQgLmR1YWwtbGlzdGJveCB0ZXh0YXJlYS5leC1sYXJnZS5kdWFsLWxpc3Rib3hfX3NlYXJjaCwgLmR1YWwtbGlzdGJveCAubmstZmlsZS1zaGFyZS1maWVsZCB0ZXh0YXJlYS5leC1sYXJnZS5kdWFsLWxpc3Rib3hfX3NlYXJjaCB7IG1pbi1oZWlnaHQ6IDI3OHB4OyB9IH0KCi5uay1maWxlcyAubmstZmlsZSAuaGlkZWFibGUgeyBvcGFjaXR5OiAwOyB0cmFuc2l0aW9uOiBvcGFjaXR5IC4zczsgfQoKLm5rLWZpbGVzIC5uay1maWxlOmhvdmVyIC5oaWRlYWJsZSB7IG9wYWNpdHk6IDE7IH0KCi5uay1maWxlcyAubmstZmlsZS1pdGVtIHsgZGlzcGxheTogdGFibGUtcm93OyB9CgoubmstZmlsZXMgLm5rLWZpbGUtaXRlbSA+IGRpdiB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgZGlzcGxheTogdGFibGUtY2VsbDsgcGFkZGluZzogLjVyZW07IHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH0KCi5uay1maWxlcyAubmstZmlsZS1hY3Rpb25zIHsgd2lkdGg6IDYwcHg7IHRleHQtYWxpZ246IGNlbnRlcjsgfQoKLm5rLWZpbGVzLWhlYWQgeyBkaXNwbGF5OiB0YWJsZS1oZWFkZXItZ3JvdXA7IH0KCi5uay1maWxlcy1oZWFkIC5uay1maWxlLWl0ZW0gPiBkaXYgeyBmb250LXdlaWdodDogNTAwOyBmb250LXNpemU6IDAuODEyNXJlbTsgcGFkZGluZzogMC4yNXJlbTsgfQoKLm5rLWZpbGVzLWhlYWQgLm5rLWZpbGUtaXRlbSA+IGRpdjpmaXJzdC1jaGlsZCB7IHBhZGRpbmctbGVmdDogMDsgfQoKLm5rLWZpbGVzLWhlYWQgLm5rLWZpbGUtaXRlbSA+IGRpdjpsYXN0LWNoaWxkIHsgcGFkZGluZy1yaWdodDogLjVyZW07IH0KCi5uay1maWxlcy1oZWFkIC5kcm9wZG93bi1tZW51LXhzIHsgbWluLXdpZHRoOiAxNDBweDsgbWF4LXdpZHRoOiAxNDBweDsgfQoKLm5rLWZpbGVzLWxpc3QgeyBkaXNwbGF5OiB0YWJsZS1yb3ctZ3JvdXA7IH0KCi5uay1maWxlcy12aWV3LWxpc3QgeyBkaXNwbGF5OiB0YWJsZTsgd2lkdGg6IDEwMCU7IH0KCi5uay1maWxlcy12aWV3LWxpc3QgLm5rLWZpbGUgeyBkaXNwbGF5OiB0YWJsZS1yb3c7IH0KCi5uay1maWxlcy12aWV3LWxpc3QgLm5rLWZpbGUuc2VsZWN0ZWQgeyBiYWNrZ3JvdW5kOiAjY2VlM2ZmOyB9CgoubmstZmlsZXMtdmlldy1saXN0IC5uay1maWxlLnNlbGVjdGVkID4gZGl2IHsgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7IH0KCi5uay1maWxlcy12aWV3LWxpc3QgLm5rLWZpbGUgPiBkaXYgeyBwYWRkaW5nOiAuNXJlbSAuMzc1cmVtOyBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RiZGZlYTsgaGVpZ2h0OiA0cmVtOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyB9CgoubmstZmlsZXMtdmlldy1saXN0IC5uay1maWxlID4gZGl2OmZpcnN0LWNoaWxkIHsgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZGJkZmVhOyBwYWRkaW5nLWxlZnQ6IDEuMjVyZW07IH0KCi5uay1maWxlcy12aWV3LWxpc3QgLm5rLWZpbGUgPiBkaXY6bGFzdC1jaGlsZCB7IGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNkYmRmZWE7IH0KCi5uay1maWxlcy12aWV3LWxpc3QgLm5rLWZpbGUgPiBkaXYubmstZmlsZS1pbmZvIHsgcGFkZGluZy10b3A6IDAuMTI1cmVtOyBwYWRkaW5nLWJvdHRvbTogMC4xMjVyZW07IH0KCi5uay1maWxlcy12aWV3LWxpc3QgLm5rLWZpbGU6Zmlyc3QtY2hpbGQgPiBkaXYgeyBib3JkZXItdG9wOiAxcHggc29saWQgI2RiZGZlYTsgfQoKLm5rLWZpbGVzLXZpZXctbGlzdCAubmstZmlsZTpmaXJzdC1jaGlsZCA+IGRpdjpmaXJzdC1jaGlsZCB7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDRweDsgfQoKLm5rLWZpbGVzLXZpZXctbGlzdCAubmstZmlsZTpmaXJzdC1jaGlsZCA+IGRpdjpsYXN0LWNoaWxkIHsgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDsgfQoKLm5rLWZpbGVzLXZpZXctbGlzdCAubmstZmlsZTpsYXN0LWNoaWxkID4gZGl2OmZpcnN0LWNoaWxkIHsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4OyB9CgoubmstZmlsZXMtdmlldy1saXN0IC5uay1maWxlOmxhc3QtY2hpbGQgPiBkaXY6bGFzdC1jaGlsZCB7IGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA0cHg7IH0KCi5uay1maWxlcy12aWV3LWxpc3QgLm5rLWZpbGU6bm90KDpsYXN0LWNoaWxkKSA+IGRpdiB7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZGJkZmVhOyB9CgoubmstZmlsZXMtdmlldy1saXN0IC5uay1maWxlIC5jdXN0b20tY2hlY2tib3ggeyBtYXJnaW4tcmlnaHQ6IDFyZW07IH0KCi5uay1maWxlcy12aWV3LWxpc3QgLm5rLWZpbGUtbWVtYmVycyAudGItc2hhcmVkIHsgcG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAtMXJlbTsgdG9wOiA1MCU7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNTAlKTsgZm9udC1zaXplOiAxcmVtOyB9CgoubmstZmlsZXMtdmlldy1saXN0IC5uay1maWxlLW5hbWUtdGV4dCBhLnRpdGxlIHsgcGFkZGluZzogMXJlbSAwIDAuODc1cmVtOyB9CgoubmstZmlsZXMtdmlldy1saXN0IC5uay1maWxlLWljb24gKyAubmstZmlsZS1uYW1lIGEudGl0bGUgeyBwYWRkaW5nLWxlZnQ6IDQwcHg7IG1hcmdpbi1sZWZ0OiAtNDBweDsgfQoKLm5rLWZpbGVzLXZpZXctbGlzdC5pcy1jb21wYWN0IC5uay1maWxlID4gZGl2IHsgaGVpZ2h0OiAzcmVtOyB9CgoubmstZmlsZXMtdmlldy1ncmlkIC5uay1maWxlcy1oZWFkLCAubmstZmlsZXMtdmlldy1ncm91cCAubmstZmlsZXMtaGVhZCB7IG1hcmdpbi1ib3R0b206IDAuMjVyZW07IHdpZHRoOiAxMDAlOyBkaXNwbGF5OiBmbGV4OyB9CgoubmstZmlsZXMtdmlldy1ncmlkIC5uay1maWxlcy1oZWFkIC5uay1maWxlLWl0ZW0sIC5uay1maWxlcy12aWV3LWdyb3VwIC5uay1maWxlcy1oZWFkIC5uay1maWxlLWl0ZW0geyBkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IGFsaWduLWl0ZW1zOiBjZW50ZXI7IHdpZHRoOiAxMDAlOyBwYWRkaW5nOiAwOyB9CgoubmstZmlsZXMtdmlldy1ncmlkIC5uay1maWxlcy1oZWFkIC5uay1maWxlLWl0ZW0gPiBkaXY6bm90KC5uay1maWxlLWluZm8pOm5vdCgubmstZmlsZS1hY3Rpb25zKSwgLm5rLWZpbGVzLXZpZXctZ3JvdXAgLm5rLWZpbGVzLWhlYWQgLm5rLWZpbGUtaXRlbSA+IGRpdjpub3QoLm5rLWZpbGUtaW5mbyk6bm90KC5uay1maWxlLWFjdGlvbnMpIHsgZGlzcGxheTogbm9uZTsgfQoKLm5rLWZpbGVzLXZpZXctZ3JpZCAubmstZmlsZXMtaGVhZCAubmstZmlsZS1hY3Rpb25zLCAubmstZmlsZXMtdmlldy1ncm91cCAubmstZmlsZXMtaGVhZCAubmstZmlsZS1hY3Rpb25zIHsgd2lkdGg6IDMwcHg7IHBhZGRpbmc6IDAgIWltcG9ydGFudDsgbWFyZ2luLXJpZ2h0OiAtNHB4OyB9CgoubmstZmlsZXMtdmlldy1ncmlkIC5uay1maWxlcy1saXN0LCAubmstZmlsZXMtdmlldy1ncm91cCAubmstZmlsZXMtbGlzdCB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtd3JhcDogd3JhcDsgbWFyZ2luOiAtOHB4OyB9CgoubmstZmlsZXMtdmlldy1ncmlkIC5uay1maWxlcy1saXN0IC5uay1maWxlLWFjdGlvbnMsIC5uay1maWxlcy12aWV3LWdyb3VwIC5uay1maWxlcy1saXN0IC5uay1maWxlLWFjdGlvbnMgeyBwb3NpdGlvbjogYWJzb2x1dGU7IGJvcmRlcjogMCBub25lOyBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsgd2lkdGg6IDQ2cHg7IHJpZ2h0OiA0cHg7IHRvcDogMTBweDsgfQoKLm5rLWZpbGVzLXZpZXctZ3JpZCAubmstZmlsZXMtbGlzdCAuY3VzdG9tLWNvbnRyb2wsIC5uay1maWxlcy12aWV3LWdyb3VwIC5uay1maWxlcy1saXN0IC5jdXN0b20tY29udHJvbCB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgfQoKLm5rLWZpbGVzLXZpZXctZ3JpZCAubmstZmlsZSwgLm5rLWZpbGVzLXZpZXctZ3JvdXAgLm5rLWZpbGUgeyBkaXNwbGF5OiBmbGV4OyBwb3NpdGlvbjogcmVsYXRpdmU7IG1hcmdpbjogOHB4OyBiYWNrZ3JvdW5kOiAjZmZmOyBib3JkZXItcmFkaXVzOiA0cHg7IGJvcmRlcjogMXB4IHNvbGlkICNkYmRmZWE7IH0KCi5uay1maWxlcy12aWV3LWdyaWQgLm5rLWZpbGUgLm5rLWZpbGUtbWVtYmVycywgLm5rLWZpbGVzLXZpZXctZ3JvdXAgLm5rLWZpbGUgLm5rLWZpbGUtbWVtYmVycyB7IGRpc3BsYXk6IG5vbmU7IH0KCi5uay1maWxlcy12aWV3LWdyaWQgLm5rLWZpbGUgeyBkaXNwbGF5OiBibG9jazsgcG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogY2FsYyg1MCUgLSAxNnB4KTsgdGV4dC1hbGlnbjogY2VudGVyOyBwYWRkaW5nOiAuNXJlbSAwLjI1cmVtOyB9CgoubmstZmlsZXMtdmlldy1ncmlkIC5uay1maWxlID4gZGl2IHsgZGlzcGxheTogYmxvY2s7IHBhZGRpbmc6IDA7IH0KCi5uay1maWxlcy12aWV3LWdyaWQgLm5rLWZpbGUtdGl0bGUgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyB9CgoubmstZmlsZXMtdmlldy1ncmlkIC5uay1maWxlLWljb24geyBkaXNwbGF5OiBibG9jazsgbWFyZ2luOiAwOyB3aWR0aDogMTAwJTsgfQoKLm5rLWZpbGVzLXZpZXctZ3JpZCAubmstZmlsZS1pY29uLXR5cGUgeyB3aWR0aDogNzJweDsgcGFkZGluZzogLjVyZW0gMDsgfQoKLm5rLWZpbGVzLXZpZXctZ3JpZCAubmstZmlsZS1uYW1lIC50aXRsZSB7IHBhZGRpbmc6IC41cmVtIDAuMTI1cmVtIC41cmVtOyB9CgoubmstZmlsZXMtdmlldy1ncmlkIC5uay1maWxlLW5hbWUtdGV4dCB7IHBhZGRpbmctbGVmdDogMS41cmVtOyBwYWRkaW5nLXJpZ2h0OiAxLjVyZW07IH0KCi5uay1maWxlcy12aWV3LWdyaWQgLm5rLWZpbGUtZGVzYyB7IHBhZGRpbmc6IDAgLjI1cmVtIC43NXJlbTsgbWFyZ2luLXRvcDogLTAuMTI1cmVtOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgfQoKLm5rLWZpbGVzLXZpZXctZ3JpZCAubmstZmlsZS1kZXNjIC5tZW1iZXJzIHsgZGlzcGxheTogbm9uZTsgfQoKLm5rLWZpbGVzLXZpZXctZ3JpZCAubmstZmlsZS1pbmZvID4gLm5rLWZpbGUtbGluayB7IHBhZGRpbmc6IC41cmVtIDA7IH0KCi5uay1maWxlcy12aWV3LWdyaWQgLm5rLWZpbGUgLm5rLWZpbGUtbWVtYmVycyB7IGRpc3BsYXk6IG5vbmU7IH0KCi5uay1maWxlcy12aWV3LWdyaWQgLm5rLWZpbGUgLm5rLWZpbGUtbWV0YSB7IHBhZGRpbmctYm90dG9tOiAuNXJlbTsgfQoKLm5rLWZpbGVzLXZpZXctZ3JpZCAubmstZmlsZSAuY3VzdG9tLWNvbnRyb2wgeyB0b3A6IC43NXJlbTsgbGVmdDogMXJlbTsgfQoKLm5rLWZpbGVzLXZpZXctZ3JvdXAgLm5rLWZpbGUgeyBwb3NpdGlvbjogcmVsYXRpdmU7IHBhZGRpbmc6IC41cmVtIC41cmVtOyB3aWR0aDogMTAwJTsgfQoKLm5rLWZpbGVzLXZpZXctZ3JvdXAgLm5rLWZpbGUgPiBkaXYgeyBkaXNwbGF5OiBibG9jazsgd2lkdGg6IDEwMCU7IHBhZGRpbmctcmlnaHQ6IDIuNXJlbTsgfQoKLm5rLWZpbGVzLXZpZXctZ3JvdXAgLm5rLWZpbGUtZGVzYyB7IHBhZGRpbmc6IC4yNXJlbSAuMTI1cmVtIDA7IH0KCi5uay1maWxlcy12aWV3LWdyb3VwIC5uay1maWxlLW5hbWUtdGV4dCBhLnRpdGxlIHsgcGFkZGluZzogLjEyNXJlbSAwOyB9CgoubmstZmlsZXMtdmlldy1ncm91cCAubmstZmlsZS1pY29uICsgLm5rLWZpbGUtbmFtZSBhLnRpdGxlIHsgcGFkZGluZy1sZWZ0OiA0MHB4OyBtYXJnaW4tbGVmdDogLTQwcHg7IH0KCi5uay1maWxlcy12aWV3LWdyb3VwIC5uay1maWxlIC5uay1maWxlLWFjdGlvbnMgeyByaWdodDogMnB4OyB0b3A6IDRweDsgfQoKLm5rLWZpbGVzLXZpZXctZ3JvdXAgLm5rLWZpbGUgLmN1c3RvbS1jb250cm9sIHsgcmlnaHQ6IC41cmVtOyBib3R0b206IC41cmVtOyB9CgoubmstZmlsZXMtdmlldy1ncm91cCAubmstZmlsZSAubmstZmlsZS1tZXRhIHsgZGlzcGxheTogbm9uZTsgfQoKLm5rLWZpbGVzLWdyb3VwID4gLnRpdGxlIHsgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlNWU5ZjI7IGZvbnQtc2l6ZTogMTJweDsgbGV0dGVyLXNwYWNpbmc6IDAuMDRlbTsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgcGFkZGluZzogMXJlbSAwOyBtYXJnaW46IDA7IH0KCi5uay1maWxlcy1ncm91cCArIC5uay1maWxlcy1ncm91cCB7IG1hcmdpbi10b3A6IDNyZW07IH0KCkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgeyAubmstZmlsZS1uYW1lLXRleHQgeyBmb250LXNpemU6IDEzcHg7IH0KICAubmstZmlsZXMtdmlldy1ncmlkIC5uay1maWxlLW5hbWUtdGV4dCB7IGZvbnQtc2l6ZTogMTJweDsgfSB9CgpAbWVkaWEgKG1heC13aWR0aDogOTkxLjk4cHgpIHsgLm5rLWZtZy1ib2R5IC5uay1ibG9jay10b29scyAuYnRuLWljb24uYnRuLXRyaWdnZXIgLmljb24geyBmb250LXNpemU6IDEuMjVyZW07IH0gfQoKQG1lZGlhIChtaW4td2lkdGg6IDU3NnB4KSB7IC5uay1maWxlcy12aWV3LWdyaWQgLm5rLWZpbGUgeyB3aWR0aDogY2FsYygzMy4zMyUgLSAxNnB4KTsgfQogIC5uay1maWxlcy12aWV3LWdyb3VwIC5uay1maWxlIHsgd2lkdGg6IGNhbGMoMTAwJSAtIDE2cHgpOyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiA2NjBweCkgeyAubmstZmlsZXMtdmlldy1ncm91cCAubmstZmlsZSB7IHdpZHRoOiBjYWxjKDUwJSAtIDE2cHgpOyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiAxMjAwcHgpIHsgLm5rLWZpbGVzLXZpZXctZ3JpZCAubmstZmlsZSB7IHdpZHRoOiBjYWxjKDI1JSAtIDE2cHgpOyB9CiAgLm5rLWZpbGVzLXZpZXctZ3JvdXAgLm5rLWZpbGUgeyB3aWR0aDogY2FsYyg1MCUgLSAxNnB4KTsgfSB9CgpAbWVkaWEgKG1pbi13aWR0aDogMTU0MHB4KSB7IC5uay1maWxlcy12aWV3LWdyaWQgLm5rLWZpbGUgeyB3aWR0aDogY2FsYygyMCUgLSAxNnB4KTsgfQogIC5uay1maWxlcy12aWV3LWdyb3VwIC5uay1maWxlIHsgd2lkdGg6IGNhbGMoMzMuMzMlIC0gMTZweCk7IH0gfQoKQG1lZGlhIChtaW4td2lkdGg6IDE4MDBweCkgeyAubmstZmlsZXMtdmlldy1ncmlkIC5uay1maWxlIHsgd2lkdGg6IGNhbGMoMTYuNjYlIC0gMTZweCk7IH0KICAubmstZmlsZXMtdmlldy1ncm91cCAubmstZmlsZSB7IHdpZHRoOiBjYWxjKDI1JSAtIDE2cHgpOyB9IH0KCkBtZWRpYSAobWF4LXdpZHRoOiAxMTk5cHgpIGFuZCAobWluLXdpZHRoOiA5OTJweCksIChtYXgtd2lkdGg6IDc2N3B4KSB7IC5uay1maWxlcy12aWV3LWxpc3QgLm5rLWZpbGUtbWVtYmVycywgLm5rLWZpbGVzLXZpZXctbGlzdCAubmstZmlsZS1zaXplIHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9IH0KCkBtZWRpYSAobWF4LXdpZHRoOiA1OTlweCkgeyAubmstZmlsZXMtdmlldy1saXN0IC5uay1maWxlLWljb24tdHlwZSB7IHdpZHRoOiAyNHB4OyB9CiAgLm5rLWZpbGVzLXZpZXctbGlzdCAubmstZmlsZS1tZXRhLCAubmstZmlsZXMtdmlldy1saXN0IC5uay1maWxlLWRhdGUsIC5uay1maWxlcy12aWV3LWxpc3QgLm5rLWZpbGUtc2l6ZSB7IGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfQogIC5uay1maWxlcy12aWV3LWxpc3QgLm5rLWZpbGUgLmN1c3RvbS1jaGVja2JveCB7IG1hcmdpbi1yaWdodDogMC43NXJlbTsgfSB9CgpAbWVkaWEgKG1heC13aWR0aDogMzU5cHgpIHsgLm5rLWZpbGVzLXZpZXctZ3JpZCAubmstZmlsZSB7IHdpZHRoOiAxMDAlOyB9IH0KCi5uay11cGxvYWQtZm9ybSB7IG1hcmdpbi1ib3R0b206IDIuMjVyZW07IH0KCi5uay11cGxvYWQtbGlzdCA+IC50aXRsZSB7IGZvbnQtc2l6ZTogLjg3NXJlbTsgcGFkZGluZy1ib3R0b206IDFyZW07IH0KCi5uay11cGxvYWQtaXRlbSB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IHBhZGRpbmc6IC41cmVtOyBib3JkZXItcmFkaXVzOiA0cHg7IGJvcmRlcjogMXB4IHNvbGlkICNlNWU5ZjI7IG1hcmdpbjogLjVyZW0gMDsgfQoKLm5rLXVwbG9hZC1pY29uIHsgd2lkdGg6IDQ4cHg7IG1hcmdpbi1yaWdodDogLjI1cmVtOyBmbGV4LXNocmluazogMDsgfQoKLm5rLXVwbG9hZC1pbmZvIHsgZm9udC13ZWlnaHQ6IDUwMDsgY29sb3I6ICMzNjRhNjM7IGZsZXgtZ3JvdzogMTsgcGFkZGluZy1yaWdodDogLjc1cmVtOyB9CgoubmstdXBsb2FkLXRpdGxlIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGZsZXgtZW5kOyB9CgoubmstdXBsb2FkLXRpdGxlIC50aXRsZSB7IGZvbnQtc2l6ZTogLjg3NXJlbTsgfQoKLm5rLXVwbG9hZC10aXRsZSAubWV0YSB7IGZvbnQtc2l6ZTogMTJweDsgbWFyZ2luLWxlZnQ6IGF1dG87IGNvbG9yOiAjODA5NGFlOyBmb250LXdlaWdodDogNDAwOyB9CgoubmstdXBsb2FkLXNpemUgeyBmb250LXNpemU6IDEycHg7IGNvbG9yOiAjODA5NGFlOyBmb250LXdlaWdodDogNDAwOyB9CgoubmstdXBsb2FkLXByb2dyZXNzIHsgbWFyZ2luOiAuMzc1cmVtIDAgLjI1cmVtOyB9CgoubmstdXBsb2FkLWFjdGlvbiB7IG1hcmdpbi1sZWZ0OiBhdXRvOyB9CgouYWRkLW9wdDpob3ZlciAuc3ViLXRleHQsIC5hZGQtb3B0OmhvdmVyIC5pY29uIHsgY29sb3I6ICMwOTcxZmU7IH0KCi5hZGQtb3B0LWljb24gLmljb24tY2lyY2xlLCAuY2hhdC1vcHRpb24tbGluayAuaWNvbi1jaXJjbGUsIC5jaGF0LW1lbWJlcnMtbGluayAuaWNvbi1jaXJjbGUsIC5jb250YWN0cy1hZGQtbGluayAuaWNvbi1jaXJjbGUgeyBoZWlnaHQ6IDMycHg7IHdpZHRoOiAzMnB4OyBmb250LXNpemU6IDFyZW07IH0KCi5hZGQtb3B0LWljb24gLmljb24gKyBzcGFuLCAuY2hhdC1vcHRpb24tbGluayAuaWNvbiArIHNwYW4sIC5jaGF0LW1lbWJlcnMtbGluayAuaWNvbiArIHNwYW4sIC5jb250YWN0cy1hZGQtbGluayAuaWNvbiArIHNwYW4sIC5hZGQtb3B0LWljb24gLmljb24gKyBkaXYsIC5jaGF0LW9wdGlvbi1saW5rIC5pY29uICsgZGl2LCAuY2hhdC1tZW1iZXJzLWxpbmsgLmljb24gKyBkaXYsIC5jb250YWN0cy1hZGQtbGluayAuaWNvbiArIGRpdiB7IG1hcmdpbi1sZWZ0OiAwLjc1cmVtOyB9CgouY2hhdC1pdGVtIHsgcG9zaXRpb246IHJlbGF0aXZlOyBib3JkZXItcmFkaXVzOiA0cHg7IHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjNzOyB9CgouY2hhdC1pdGVtOmhvdmVyIHsgYmFja2dyb3VuZC1jb2xvcjogI2ViZWVmMjsgfQoKLmNoYXRzLWRyb3Bkb3duIC5jaGF0LWl0ZW06aG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNmZhOyB9CgouY2hhdC1pdGVtOmhvdmVyIC5jaGF0LWFjdGlvbnMgeyBvcGFjaXR5OiAxOyBwb2ludGVyLWV2ZW50czogaW5pdGlhbDsgdHJhbnNpdGlvbjogb3BhY2l0eSAuNXM7IH0KCi5jaGF0LWl0ZW0uY3VycmVudCB7IGJhY2tncm91bmQtY29sb3I6ICNmNWY2ZmE7IH0KCi5jaGF0LWl0ZW0uY3VycmVudDpob3ZlciB7IGJhY2tncm91bmQtY29sb3I6ICNlYmVlZjI7IH0KCi5jaGF0LWxpbmsgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyB3aWR0aDogMTAwJTsgcGFkZGluZzogLjc1cmVtOyBjdXJzb3I6IHBvaW50ZXI7IH0KCi5jaGF0LW1lZGlhIHsgaGVpZ2h0OiA0NHB4OyB3aWR0aDogNDRweDsgfQoKLmNoYXQtbWVkaWEgKyAuY2hhdC1pbmZvIHsgbWFyZ2luLWxlZnQ6IDFyZW07IH0KCi5jaGF0LWluZm8geyB3aWR0aDogY2FsYygxMDAlIC0gMy43NXJlbSk7IH0KCi5jaGF0LWZyb20geyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IH0KCi5jaGF0LWZyb20gLm5hbWUgeyBmb250LXNpemU6IDAuOTM3NXJlbTsgbWFyZ2luLWJvdHRvbTogMDsgZm9udC13ZWlnaHQ6IDUwMDsgY29sb3I6ICM1MjY0ODQ7IH0KCi5pcy11bnJlYWQgLmNoYXQtZnJvbSAubmFtZSB7IGZvbnQtd2VpZ2h0OiA3MDA7IGNvbG9yOiAjMzY0YTYzOyB9CgouY2hhdC1mcm9tIC50aW1lIHsgZm9udC1zaXplOiAxMnB4OyBjb2xvcjogIzgwOTRhZTsgfQoKLmNoYXQtY29udGV4dCB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgfQoKLmNoYXQtY29udGV4dCAudGV4dCB7IHdpZHRoOiBjYWxjKDEwMCUgLSAyLjVyZW0pOyB3aGl0ZS1zcGFjZTogbm93cmFwOyB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsgb3ZlcmZsb3c6IGhpZGRlbjsgZm9udC1zaXplOiAxM3B4OyBjb2xvcjogIzgwOTRhZTsgfQoKLmlzLXVucmVhZCAuY2hhdC1jb250ZXh0IC50ZXh0IHsgZm9udC13ZWlnaHQ6IDUwMDsgY29sb3I6ICM1MjY0ODQ7IH0KCi5jaGF0LWNvbnRleHQgLnN0YXR1cyB7IGRpc3BsYXk6IGZsZXg7IGNvbG9yOiByZ2JhKDEyOCwgMTQ4LCAxNzQsIDAuOCk7IH0KCi5pcy11bnJlYWQgLmNoYXQtY29udGV4dCAuc3RhdHVzIHsgY29sb3I6ICMwOTcxZmU7IH0KCi5jaGF0LWNvbnRleHQgLnN0YXR1cy5zZWVuIHsgY29sb3I6ICMwOTcxZmU7IH0KCi5jaGF0LWFjdGlvbnMgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZWJlZWYyOyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgYm90dG9tOiAwOyByaWdodDogMC43NXJlbTsgb3BhY2l0eTogMDsgcG9pbnRlci1ldmVudHM6IG5vbmU7IHotaW5kZXg6IDI7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7IHdpZHRoOiAzcmVtOyB9CgouY2hhdC1wcm9maWxlLWdyb3VwIHsgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlNWU5ZjI7IHBhZGRpbmc6IC4yNXJlbSAwOyB9CgouY2hhdC1wcm9maWxlLWhlYWQgeyBwYWRkaW5nOiAxLjI1cmVtIDEuNXJlbTsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyB9CgouY2hhdC1wcm9maWxlLWhlYWQgLnRpdGxlIHsgbWFyZ2luLWJvdHRvbTogMDsgfQoKLmNoYXQtcHJvZmlsZS1oZWFkIC5pbmRpY2F0b3ItaWNvbiB7IGRpc3BsYXk6IGlubGluZS1mbGV4OyB9CgouY2hhdC1wcm9maWxlLWhlYWQuY29sbGFwc2VkIC5pbmRpY2F0b3ItaWNvbiB7IHRyYW5zZm9ybTogcm90YXRlKC0xODBkZWcpOyB9CgouY2hhdC1wcm9maWxlLWJvZHktaW5uZXIgeyBwYWRkaW5nOiAwIDEuNXJlbSAxLjVyZW07IH0KCi5jaGF0LXByb2ZpbGUtb3B0aW9ucyB7IG1hcmdpbjogLTAuMjVyZW07IH0KCi5jaGF0LXByb2ZpbGUtb3B0aW9ucyBsaSB7IHBhZGRpbmc6IC4yNXJlbTsgfQoKLmNoYXQtcHJvZmlsZS1zZXR0aW5ncyB7IG1hcmdpbjogLTAuNXJlbTsgfQoKLmNoYXQtcHJvZmlsZS1zZXR0aW5ncyBsaSB7IHBhZGRpbmc6IC41cmVtOyB9CgouY2hhdC1wcm9maWxlLXNldHRpbmdzIC5jdXN0b20tY29udHJvbC1zbSAuY3VzdG9tLWNvbnRyb2wtbGFiZWwgeyBwYWRkaW5nLWxlZnQ6IDAuMjVyZW07IGZvbnQtc2l6ZTogMTNweDsgZm9udC13ZWlnaHQ6IDUwMDsgY29sb3I6ICM1MjY0ODQ7IH0KCi5jaGF0LXByb2ZpbGUtbWVkaWEgeyBkaXNwbGF5OiBmbGV4OyBtYXJnaW46IC0wLjI1cmVtOyB9CgouY2hhdC1wcm9maWxlLW1lZGlhIGxpIHsgd2lkdGg6IDMzLjMzJTsgcGFkZGluZzogMC4yNXJlbTsgfQoKLmNoYXQtcHJvZmlsZS1tZWRpYSBsaSBhIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB9CgouY2hhdC1wcm9maWxlLW1lZGlhIGxpIGltZyB7IGJvcmRlci1yYWRpdXM6IDRweDsgfQoKLmNoYXQtb3B0aW9uLWxpbmsgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyB9CgouY2hhdC1vcHRpb24tbGluayAubGVhZC10ZXh0IHsgZm9udC13ZWlnaHQ6IDUwMDsgZm9udC1zaXplOiAxM3B4OyB0cmFuc2l0aW9uOiBjb2xvciAuM3M7IGNvbG9yOiAjNTI2NDg0OyB9CgouY2hhdC1vcHRpb24tbGluazpob3ZlciAubGVhZC10ZXh0IHsgY29sb3I6ICMxYzJiNDY7IH0KCi5jaGF0LW1lbWJlcnMgeyBtYXJnaW46IC0wLjM3NXJlbSAtLjVyZW07IH0KCi5jaGF0LW1lbWJlcnMgbGkgeyBwb3NpdGlvbjogcmVsYXRpdmU7IH0KCi5jaGF0LW1lbWJlcnMtbGluayB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IHBhZGRpbmc6IDAuMzc1cmVtIC41cmVtOyB9CgouY2hhdC1tZW1iZXJzIC51c2VyLWNhcmQgeyBwb3NpdGlvbjogcmVsYXRpdmU7IHBhZGRpbmc6IDAuMzc1cmVtIC41cmVtOyBib3JkZXItcmFkaXVzOiAzcHg7IHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgLjNzOyB9CgouY2hhdC1tZW1iZXJzIC51c2VyLWNhcmQgPiBhIHsgd2lkdGg6IDEwMCU7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IH0KCi5jaGF0LW1lbWJlcnMgLnVzZXItY2FyZDpob3ZlciB7IGJhY2tncm91bmQtY29sb3I6ICNlYmVlZjI7IH0KCi5jaGF0LW1lbWJlcnMgLnVzZXItY2FyZDpob3ZlciAudXNlci1hY3Rpb25zIHsgb3BhY2l0eTogMTsgcG9pbnRlci1ldmVudHM6IGluaXRpYWw7IHRyYW5zaXRpb246IG9wYWNpdHkgLjVzOyB9CgouY2hhdC1tZW1iZXJzIC51c2VyLXJvbGUgeyBtYXJnaW4tbGVmdDogYXV0bzsgZm9udC1zaXplOiAxMnB4OyBjb2xvcjogIzgwOTRhZTsgfQoKLmNoYXQtbWVtYmVycyAudXNlci1hY3Rpb25zIHsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IHJpZ2h0OiAuMjVyZW07IGJvdHRvbTogMDsgd2lkdGg6IDNyZW07IGJhY2tncm91bmQtY29sb3I6ICNlYmVlZjI7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7IG9wYWNpdHk6IDA7IHBvaW50ZXItZXZlbnRzOiBub25lOyB9CgouY2hhdCB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBmbGV4LWVuZDsgbWFyZ2luOiAtNHB4OyB9CgouY2hhdCA+IGRpdiB7IHBhZGRpbmc6IDRweDsgfQoKLmNoYXQgKyAuY2hhdCB7IHBhZGRpbmctdG9wOiAwLjVyZW07IH0KCi5jaGF0LWF2YXRhciB7IG1hcmdpbi1ib3R0b206IDEuNHJlbTsgfQoKLmNoYXQtYXZhdGFyLm5vLW1ldGEgeyBtYXJnaW4tYm90dG9tOiAwOyB9CgouY2hhdC1idWJibGUgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBwYWRkaW5nOiAuMTI1cmVtIDA7IH0KCi5jaGF0LWJ1YmJsZTpob3ZlciAuY2hhdC1tc2ctbW9yZSB7IG9wYWNpdHk6IDE7IH0KCi5jaGF0LWJ1YmJsZXMgLmF0dGFjaC1maWxlcyB7IG1hcmdpbi10b3A6IC43NXJlbTsgfQoKLmNoYXQtbXNnIHsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgYm9yZGVyLXJhZGl1czogOHB4OyBwYWRkaW5nOiAuNXJlbSAxcmVtOyB9CgouY2hhdC1tc2ctbW9yZSB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IG1hcmdpbjogMCAwLjc1cmVtOyBvcGFjaXR5OiAwOyBmbGV4LXNocmluazogMDsgdHJhbnNpdGlvbjogYWxsIC4zczsgfQoKLmNoYXQtbXNnLW1vcmUgPiBsaSB7IHBhZGRpbmc6IDAuMjVyZW07IH0KCi5jaGF0LW1zZy5pcy1saWdodCB7IGJhY2tncm91bmQtY29sb3I6ICNlYmVlZjI7IGNvbG9yOiAjNTI2NDg0OyB9CgouY2hhdC1tc2cuaXMtdGhlbWUgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDk3MWZlOyBjb2xvcjogI2ZmZjsgfQoKLmNoYXQtbWV0YSB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IG1hcmdpbjogLjI1cmVtIC0uMzc1cmVtIDA7IH0KCi5jaGF0LW1ldGEgbGkgeyBwb3NpdGlvbjogcmVsYXRpdmU7IHBhZGRpbmc6IDAgLjM3NXJlbTsgZm9udC1zaXplOiAxMnB4OyBjb2xvcjogIzgwOTRhZTsgfQoKLmNoYXQtbWV0YSBsaTpub3QoOmZpcnN0LWNoaWxkKTpiZWZvcmUgeyBjb250ZW50OiAi7rKhIjsgZm9udC1mYW1pbHk6ICJOaW9pY29uIjsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDUwJTsgbGVmdDogMDsgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7IGZvbnQtc2l6ZTogMTFweDsgbGluZS1oZWlnaHQ6IDEwcHg7IG9wYWNpdHk6IC44OyB9CgouY2hhdC1zYXAgeyBvdmVyZmxvdzogaGlkZGVuOyB0ZXh0LWFsaWduOiBjZW50ZXI7IHBhZGRpbmc6IDFyZW0gMDsgfQoKLmNoYXQtc2FwLW1ldGEgeyBwb3NpdGlvbjogcmVsYXRpdmU7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgcGFkZGluZzogMCAuNzVyZW07IGNvbG9yOiAjODA5NGFlOyBmb250LXNpemU6IDEycHg7IGxpbmUtaGVpZ2h0OiAxLjQ7IH0KCi5jaGF0LXNhcC1tZXRhOmJlZm9yZSwgLmNoYXQtc2FwLW1ldGE6YWZ0ZXIgeyBwb3NpdGlvbjogYWJzb2x1dGU7IGhlaWdodDogMXB4OyBiYWNrZ3JvdW5kOiAjZGJkZmVhOyBjb250ZW50OiAnJzsgd2lkdGg6IDEwMHZ3OyB0b3A6IDUwJTsgfQoKLmNoYXQtc2FwLW1ldGE6YmVmb3JlIHsgcmlnaHQ6IDEwMCU7IH0KCi5jaGF0LXNhcC1tZXRhOmFmdGVyIHsgbGVmdDogMTAwJTsgfQoKLmNoYXQuaXMteW91IC5jaGF0LWJ1YmJsZXMgLmF0dGFjaC1maWxlcyB7IGJvcmRlci1jb2xvcjogI2ZmZjsgb3ZlcmZsb3c6IGhpZGRlbjsgfQoKLmNoYXQuaXMteW91IC5jaGF0LWJ1YmJsZXMgLmF0dGFjaC1maWxlcywgLmNoYXQuaXMteW91IC5jaGF0LWJ1YmJsZXMgLmF0dGFjaC1mb290IHsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgfQoKLmNoYXQuaXMteW91IC5jaGF0LWJ1YmJsZTpsYXN0LWNoaWxkIC5jaGF0LW1zZyB7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7IH0KCi5jaGF0LmlzLXlvdSAuY2hhdC1idWJibGU6bm90KDpmaXJzdC1jaGlsZCkgLmNoYXQtbXNnIHsgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNHB4OyB9CgouY2hhdC5pcy15b3UgLmNoYXQtYnViYmxlOm5vdCg6bGFzdC1jaGlsZCkgLmNoYXQtbXNnIHsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4OyB9CgouY2hhdC5pcy1tZSB7IGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7IH0KCi5jaGF0LmlzLW1lIC5jaGF0LW1zZyB7IGJhY2tncm91bmQtY29sb3I6ICMwOTcxZmU7IGNvbG9yOiAjZmZmOyB9CgouY2hhdC5pcy1tZSAuY2hhdC1tZXRhIHsganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsgfQoKLmNoYXQuaXMtbWUgLmNoYXQtYnViYmxlIHsgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlOyB9CgouY2hhdC5pcy1tZSAuY2hhdC1idWJibGVzIC5hdHRhY2gtZmlsZXMgeyBib3JkZXItY29sb3I6ICNhOWNkZmY7IG92ZXJmbG93OiBoaWRkZW47IH0KCi5jaGF0LmlzLW1lIC5jaGF0LWJ1YmJsZXMgLmF0dGFjaC1maWxlcywgLmNoYXQuaXMtbWUgLmNoYXQtYnViYmxlcyAuYXR0YWNoLWZvb3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyB9CgouY2hhdC5pcy1tZSAuY2hhdC1idWJibGU6bGFzdC1jaGlsZCAuY2hhdC1tc2cgeyBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDsgfQoKLmNoYXQuaXMtbWUgLmNoYXQtYnViYmxlOm5vdCg6Zmlyc3QtY2hpbGQpIC5jaGF0LW1zZyB7IGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7IH0KCi5jaGF0LmlzLW1lIC5jaGF0LWJ1YmJsZTpub3QoOmxhc3QtY2hpbGQpIC5jaGF0LW1zZyB7IGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA0cHg7IH0KCi5jaGF0LXVwbG9hZC1vcHRpb24geyBkaXNwbGF5OiBub25lOyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDEwMCU7IHBhZGRpbmc6IDAuNXJlbTsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgfQoKLmNoYXQtdXBsb2FkLW9wdGlvbi5leHBhbmRlZCB7IGRpc3BsYXk6IGJsb2NrOyB9CgouY2hhdC11cGxvYWQtb3B0aW9uIHVsIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgfQoKLmNoYXQtdXBsb2FkLW9wdGlvbiBhIHsgY29sb3I6ICMwOTcxZmU7IGZvbnQtc2l6ZTogMS4yNXJlbTsgaGVpZ2h0OiAzNnB4OyB3aWR0aDogMzZweDsgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyOyB9CgouY2hhdC11cGxvYWQtb3B0aW9uIGE6aG92ZXIgeyBjb2xvcjogIzAxNWVkZDsgfQoKLmZhdi1saXN0IHsgZGlzcGxheTogZmxleDsgbWFyZ2luOiAtMC4zNzVyZW07IG92ZXJmbG93LXg6IGF1dG87IH0KCi5mYXYtbGlzdCBsaSB7IHBhZGRpbmc6IDAuMzc1cmVtOyB9CgouZmF2LWxpc3QgYTpob3ZlciA+IC51c2VyLWF2YXRhcjphZnRlciB7IG9wYWNpdHk6IDE7IH0KCi5mYXYtbGlzdCAudXNlci1hdmF0YXIgeyBoZWlnaHQ6IDQ0cHg7IHdpZHRoOiA0NHB4OyB9CgouZmF2LWxpc3QgLnVzZXItYXZhdGFyOmFmdGVyIHsgY29udGVudDogIiI7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgd2lkdGg6IDEwMCU7IGxlZnQ6IDA7IGhlaWdodDogMTAwJTsgYmFja2dyb3VuZDogI2U1ZTlmMjsgdHJhbnNmb3JtOiBzY2FsZSgxLjE1KTsgb3BhY2l0eTogMDsgYm9yZGVyLXJhZGl1czogNTAlOyB6LWluZGV4OiAtMTsgdHJhbnNpdGlvbjogb3BhY2l0eSAuM3M7IH0KCkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkgeyAuZmF2LWxpc3QgeyBmbGV4LXdyYXA6IHdyYXA7IH0gfQoKQG1lZGlhIChtYXgtd2lkdGg6IDg1OXB4KSB7IC5mYXYtbGlzdCB7IG1hcmdpbjogLTAuMzc1cmVtIDA7IH0KICAuZmF2LWxpc3QgbGk6Zmlyc3QtY2hpbGQgeyBwYWRkaW5nLWxlZnQ6IDA7IH0KICAuZmF2LWxpc3QgbGk6bGFzdC1jaGlsZCB7IHBhZGRpbmctcmlnaHQ6IDA7IH0gfQoKLmNoYW5uZWwtbGlzdCBsaSB7IG1hcmdpbjogMC4xMjVyZW0gLTAuNXJlbTsgfQoKLmNoYW5uZWwtbGlzdCBhIHsgcGFkZGluZzogMC4zNzVyZW0gLjVyZW07IGRpc3BsYXk6IGJsb2NrOyB0cmFuc2l0aW9uOiBhbGwgLjNzOyBmb250LXdlaWdodDogNTAwOyBjb2xvcjogIzUyNjQ4NDsgYm9yZGVyLXJhZGl1czogM3B4OyB9CgouY2hhbm5lbC1saXN0IGE6aG92ZXIsIC5jaGFubmVsLWxpc3QgYS5hY3RpdmUgeyBjb2xvcjogIzA5NzFmZTsgYmFja2dyb3VuZDogI2UxZWVmZjsgfQoKLmNvbnRhY3RzLWxpc3QgeyBtYXJnaW46IC0wLjM3NXJlbSAtLjVyZW07IH0KCi5jb250YWN0cy1saXN0ICsgLmNvbnRhY3RzLWxpc3QgeyBtYXJnaW4tdG9wOiAxLjc1cmVtOyB9CgouY29udGFjdHMtbGlzdCBsaSB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgfQoKLmNvbnRhY3RzLWxpc3QgbGkgPiAudGl0bGUgeyBwYWRkaW5nLWxlZnQ6IDEuMjVyZW07IG1hcmdpbi1ib3R0b206IC4yNXJlbTsgfQoKLmNvbnRhY3RzLWxpc3QgLnVzZXItY2FyZCB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgcGFkZGluZzogMC4zNzVyZW0gLjVyZW07IGJvcmRlci1yYWRpdXM6IDNweDsgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAuM3M7IH0KCi5jb250YWN0cy1saXN0IC51c2VyLWNhcmQgPiBhIHsgd2lkdGg6IDEwMCU7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IH0KCi5jb250YWN0cy1saXN0IC51c2VyLWNhcmQ6aG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZWJlZWYyOyB9CgouY29udGFjdHMtbGlzdCAudXNlci1jYXJkOmhvdmVyIC51c2VyLWFjdGlvbnMgeyBvcGFjaXR5OiAxOyBwb2ludGVyLWV2ZW50czogaW5pdGlhbDsgdHJhbnNpdGlvbjogb3BhY2l0eSAuNHM7IH0KCi5jb250YWN0cy1saXN0IC51c2VyLW1ldGEgeyBtYXJnaW4tbGVmdDogYXV0bzsgZm9udC1zaXplOiAxMnB4OyBjb2xvcjogIzgwOTRhZTsgfQoKLmNvbnRhY3RzLWxpc3QgLnVzZXItYWN0aW9ucyB7IGZvbnQtc2l6ZTogMTJweDsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IHJpZ2h0OiAuMjVyZW07IGJvdHRvbTogMDsgd2lkdGg6IDQuNXJlbTsgYmFja2dyb3VuZC1jb2xvcjogI2ViZWVmMjsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsgb3BhY2l0eTogMDsgcG9pbnRlci1ldmVudHM6IG5vbmU7IH0KCi5jb250YWN0cy1saXN0IC51c2VyLWFjdGlvbnMgPiBhIHsgcGFkZGluZzogMCAuMzc1cmVtOyB9CgouY29udGFjdHMtYWRkLWxpbmsgeyBwYWRkaW5nOiAwLjM3NXJlbSAuNXJlbTsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgfQoKLmNvbnRhY3RzLWFkZC1saW5rIC5sZWFkLXRleHQgeyBmb250LXdlaWdodDogNTAwOyBmb250LXNpemU6IDEzcHg7IH0KCi5uay1jaGF0IHsgcG9zaXRpb246IHJlbGF0aXZlOyBkaXNwbGF5OiBmbGV4OyBvdmVyZmxvdzogaGlkZGVuOyBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoIC0gKDY1cHggKyA2NHB4KSk7IG1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSAoNjVweCArIDY0cHgpKTsgYmFja2dyb3VuZDogI2ZmZjsgfQoKLm5rLWNoYXQtYmxhbmsgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgaGVpZ2h0OiAxMDAlOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZWJlZWYyOyB9CgoubmstY2hhdC1ibGFuay1pY29uIHsgbWFyZ2luLWJvdHRvbTogMS41cmVtOyB9CgoubmstY2hhdC1ib3hlZCB7IGJvcmRlcjogMXB4IHNvbGlkICNkYmRmZWE7IGJvcmRlci1yYWRpdXM6IDRweDsgbWluLWhlaWdodDogY2FsYygxMDB2aCAtICg2NXB4ICsgNjRweCArIDY0cHgpKTsgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtICg2NXB4ICsgNjRweCArIDY0cHgpKTsgfQoKLm5rLWNoYXQtYXNpZGUgeyBiYWNrZ3JvdW5kOiAjZmZmOyB3aWR0aDogMTAwJTsgb3ZlcmZsb3c6IGhpZGRlbjsgbWF4LWhlaWdodDogMTAwJTsgcG9zaXRpb246IHJlbGF0aXZlOyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBmbGV4LXNocmluazogMDsgfQoKLm5rLWNoYXQtYXNpZGUtaGVhZCB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgcGFkZGluZzogMS4xMjVyZW0gMS4yNXJlbSAwLjg3NXJlbTsgfQoKLm5rLWNoYXQtYXNpZGUtdXNlciAudGl0bGUgeyBmb250LXNpemU6IDEuMzc1cmVtOyBjb2xvcjogIzM2NGE2MzsgfQoKLm5rLWNoYXQtYXNpZGUtdXNlciAudXNlci1hdmF0YXIgeyBoZWlnaHQ6IDM2cHg7IHdpZHRoOiAzNnB4OyB9CgoubmstY2hhdC1hc2lkZS11c2VyIC51c2VyLWF2YXRhciArIC50aXRsZSB7IG1hcmdpbi1sZWZ0OiAxcmVtOyB9CgoubmstY2hhdC1hc2lkZS11c2VyIC5kcm9wZG93bi10b2dnbGU6YWZ0ZXIgeyBmb250LXNpemU6IDEuMTI1cmVtOyBjb2xvcjogIzgwOTRhZTsgbWFyZ2luLWxlZnQ6IDFyZW07IH0KCi5uay1jaGF0LWFzaWRlLXRvb2xzIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgfQoKLm5rLWNoYXQtYXNpZGUtYm9keSB7IG1heC1oZWlnaHQ6IDEwMCU7IGhlaWdodDogMTAwJTsgb3ZlcmZsb3c6IGF1dG87IH0KCi5uay1jaGF0LWFzaWRlLXNlYXJjaCB7IHBhZGRpbmc6IDAgMS4yNXJlbTsgbWFyZ2luLWJvdHRvbTogMS43NXJlbTsgbWFyZ2luLXRvcDogMC4yNXJlbTsgfQoKLm5rLWNoYXQtYXNpZGUtc2VhcmNoIC5mb3JtLWNvbnRyb2wsIC5uay1jaGF0LWFzaWRlLXNlYXJjaCAuZHVhbC1saXN0Ym94IC5kdWFsLWxpc3Rib3hfX3NlYXJjaCwgLmR1YWwtbGlzdGJveCAubmstY2hhdC1hc2lkZS1zZWFyY2ggLmR1YWwtbGlzdGJveF9fc2VhcmNoIHsgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjZmYTsgYm9yZGVyLWNvbG9yOiAjZjVmNmZhOyB9CgoubmstY2hhdC1hc2lkZS1zZWFyY2ggLmZvcm0tY29udHJvbDo6cGxhY2Vob2xkZXIsIC5uay1jaGF0LWFzaWRlLXNlYXJjaCAuZHVhbC1saXN0Ym94IC5kdWFsLWxpc3Rib3hfX3NlYXJjaDo6cGxhY2Vob2xkZXIsIC5kdWFsLWxpc3Rib3ggLm5rLWNoYXQtYXNpZGUtc2VhcmNoIC5kdWFsLWxpc3Rib3hfX3NlYXJjaDo6cGxhY2Vob2xkZXIgeyBjb2xvcjogIzgwOTRhZTsgfQoKLm5rLWNoYXQtYXNpZGUtcGFuZWwgeyBwYWRkaW5nOiAwIDEuMjVyZW0gMS43NXJlbTsgfQoKLm5rLWNoYXQtYXNpZGUtcGFuZWwgLnRpdGxlIHsgbWFyZ2luLWJvdHRvbTogLjc1cmVtOyB9CgoubmstY2hhdC1saXN0IHsgcGFkZGluZzogMCAwLjVyZW07IH0KCi5uay1jaGF0LWxpc3QgLnRpdGxlIHsgbWFyZ2luLWxlZnQ6IC43NXJlbTsgfQoKLm5rLWNoYXQtYm9keSB7IGJhY2tncm91bmQ6ICNmZmY7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyBsZWZ0OiAwOyByaWdodDogMDsgYm90dG9tOiAwOyBmbGV4LWdyb3c6IDE7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IG92ZXJmbG93OiBoaWRkZW47IHRyYW5zaXRpb246IHBhZGRpbmcgLjNzIGVhc2UtaW4tb3V0OyBvcGFjaXR5OiAwOyBwb2ludGVyLWV2ZW50czogbm9uZTsgei1pbmRleDogNTsgfQoKLm5rLWNoYXQtYm9keS5zaG93LWNoYXQgeyBvcGFjaXR5OiAxOyBwb2ludGVyLWV2ZW50czogYXV0bzsgfQoKLm5rLWNoYXQtaGVhZCB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOyBwYWRkaW5nOiAxcmVtIDEuNzVyZW07IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTVlOWYyOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyB9CgoubmstY2hhdC1oZWFkLWluZm8geyB3aWR0aDogNjAlOyB9CgoubmstY2hhdC1oZWFkLWluZm8gLnVzZXItYXZhdGFyICsgLnVzZXItaW5mbyB7IG1hcmdpbi1sZWZ0OiAwLjc1cmVtOyB9CgoubmstY2hhdC1oZWFkLWluZm8gLnVzZXItaW5mbyAubGVhZC10ZXh0IHsgZGlzcGxheTogYmxvY2s7IHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOyBvdmVyZmxvdzogaGlkZGVuOyB3aGl0ZS1zcGFjZTogbm93cmFwOyB9CgoubmstY2hhdC1oZWFkLWluZm8sIC5uay1jaGF0LWhlYWQtdG9vbHMgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBtYXJnaW46IC0wLjEyNXJlbTsgfQoKLm5rLWNoYXQtaGVhZC1pbmZvID4gbGksIC5uay1jaGF0LWhlYWQtdG9vbHMgPiBsaSB7IHBhZGRpbmc6IC4xMjVyZW07IH0KCi5uay1jaGF0LWhlYWQtaW5mbyAuYnRuLWljb24gLmljb24sIC5uay1jaGF0LWhlYWQtdG9vbHMgLmJ0bi1pY29uIC5pY29uIHsgZm9udC1zaXplOiAxLjI1cmVtOyB9CgoubmstY2hhdC1oZWFkLXNlYXJjaCB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiBjYWxjKDEwMCUgKyAxcmVtKTsgbGVmdDogMDsgei1pbmRleDogOTsgd2lkdGg6IDEwMCU7IHBhZGRpbmc6IDAgMS43NXJlbTsgb3BhY2l0eTogMDsgcG9pbnRlci1ldmVudHM6IG5vbmU7IHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMTBweCk7IHRyYW5zaXRpb246IGFsbCAuNXM7IH0KCi5uay1jaGF0LWhlYWQtc2VhcmNoLnNob3ctc2VhcmNoIHsgb3BhY2l0eTogMTsgcG9pbnRlci1ldmVudHM6IGF1dG87IHRyYW5zZm9ybTogbm9uZTsgfQoKLm5rLWNoYXQtcGFuZWwgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDIzNSwgMjM4LCAyNDIsIDAuNyk7IGhlaWdodDogMTAwJTsgbWF4LWhlaWdodDogMTAwJTsgb3ZlcmZsb3c6IGF1dG87IHBhZGRpbmc6IDEuMjVyZW07IH0KCi5uay1jaGF0LWVkaXRvciB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IHBhZGRpbmc6IDFyZW0gMS4yNXJlbTsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgfQoKLm5rLWNoYXQtZWRpdG9yLWZvcm0geyBwYWRkaW5nOiAwIC41cmVtOyBmbGV4LWdyb3c6IDE7IH0KCi5uay1jaGF0LWVkaXRvci1mb3JtIC5mb3JtLWNvbnRyb2wsIC5uay1jaGF0LWVkaXRvci1mb3JtIC5kdWFsLWxpc3Rib3ggLmR1YWwtbGlzdGJveF9fc2VhcmNoLCAuZHVhbC1saXN0Ym94IC5uay1jaGF0LWVkaXRvci1mb3JtIC5kdWFsLWxpc3Rib3hfX3NlYXJjaCB7IG1pbi1oZWlnaHQ6IDM2cHg7IHBhZGRpbmctdG9wOiAwLjVyZW07IH0KCi5uay1jaGF0LWVkaXRvci11cGxvYWQsIC5uay1jaGF0LWVkaXRvci10b29scyB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IH0KCi5uay1jaGF0LWVkaXRvci11cGxvYWQgLmJ0bi1pY29uIC5pY29uLCAubmstY2hhdC1lZGl0b3ItdG9vbHMgLmJ0bi1pY29uIC5pY29uIHsgZm9udC1zaXplOiAxLjVyZW07IH0KCi5uay1jaGF0LWVkaXRvci11cGxvYWQgeyBwb3NpdGlvbjogcmVsYXRpdmU7IHotaW5kZXg6IDI7IH0KCi5uay1jaGF0LWVkaXRvci11cGxvYWQgLnRvZ2dsZS1vcHQgeyB0cmFuc2l0aW9uOiAuM3M7IH0KCi5uay1jaGF0LWVkaXRvci11cGxvYWQgLnRvZ2dsZS1vcHQuYWN0aXZlIHsgb3BhY2l0eTogMC43OyB0cmFuc2Zvcm06IHJvdGF0ZSgtNDVkZWcpOyB9CgoubmstY2hhdC1wcm9maWxlIHsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IHJpZ2h0OiAwOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTAwJSk7IHdpZHRoOiAzMjVweDsgaGVpZ2h0OiAxMDAlOyBtYXgtaGVpZ2h0OiAxMDAlOyB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gLjNzICBlYXNlLWluLW91dDsgYmFja2dyb3VuZDogI2ZmZjsgei1pbmRleDogMTAwOyB9CgoubmstY2hhdC1wcm9maWxlLW92ZXJsYXkgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgcmlnaHQ6IDA7IGJvdHRvbTogMDsgbGVmdDogMDsgYmFja2dyb3VuZDogcmdiYSgxNiwgMjUsIDM2LCAwLjQpOyB6LWluZGV4OiA2MDA7IHotaW5kZXg6IDkwOyBhbmltYXRpb246IG92ZXJsYXktZmFkZS1pbiAuNHMgZWFzZSAxOyB9CgoubmstY2hhdC1wcm9maWxlLnZpc2libGUgeyB0cmFuc2Zvcm06IG5vbmU7IH0KCkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgeyAubmstY2hhdCB7IGJvcmRlcjogbm9uZTsgYm9yZGVyLXJhZGl1czogMDsgbWluLWhlaWdodDogY2FsYygxMDB2aCAtICg2NXB4ICsgODVweCkpOyBtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gKDY1cHggKyA4NXB4KSk7IH0KICAubmstY2hhdC1ib3hlZCB7IGJvcmRlcjogMXB4IHNvbGlkICNkYmRmZWE7IGJvcmRlci1yYWRpdXM6IDRweDsgfQogIC5uay1jaGF0LWhlYWQgeyBwYWRkaW5nOiAwLjc1cmVtIDEuMjVyZW07IH0KICAubmstY2hhdC1oZWFkLXVzZXIgeyBtYXgtd2lkdGg6IGNhbGMoMTAwJSAtIDM0cHgpOyB9CiAgLm5rLWNoYXQtaGVhZC11c2VyIC51c2VyLWF2YXRhciB7IGhlaWdodDogMzZweDsgd2lkdGg6IDM2cHg7IH0KICAubmstY2hhdC1oZWFkLXVzZXIgLnVzZXItaW5mbyB7IHdpZHRoOiBjYWxjKDEwMCUgLSAzNnB4IC0gLjc1cmVtKTsgfSB9CgpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIHsgLm5rLWNoYXQtaGVhZC1pbmZvLCAubmstY2hhdC1oZWFkLXRvb2xzIHsgbWFyZ2luOiAtMC4zNzVyZW07IH0KICAubmstY2hhdC1oZWFkLWluZm8gPiBsaSwgLm5rLWNoYXQtaGVhZC10b29scyA+IGxpIHsgcGFkZGluZzogLjM3NXJlbTsgfSB9CgpAbWVkaWEgKG1pbi13aWR0aDogNTc2cHgpIGFuZCAobWF4LXdpZHRoOiA5OTFweCkgeyAubmstY2hhdC1hc2lkZS1oZWFkLCAubmstY2hhdC1hc2lkZS1zZWFyY2ggeyBwYWRkaW5nLWxlZnQ6IDIuMjVyZW07IHBhZGRpbmctcmlnaHQ6IDIuMjVyZW07IH0KICAubmstY2hhdC1hc2lkZS1wYW5lbCB7IHBhZGRpbmc6IDAgMi4yNXJlbSAxLjc1cmVtOyB9CiAgLm5rLWNoYXQtbGlzdCB7IHBhZGRpbmc6IDAgMS41cmVtOyB9CiAgLm5rLWNoYXQtaGVhZCwgLm5rLWNoYXQtcGFuZWwsIC5uay1jaGF0LWVkaXRvciB7IHBhZGRpbmctbGVmdDogMi4yNXJlbTsgcGFkZGluZy1yaWdodDogMi4yNXJlbTsgfQogIC5uay1jaGF0LWhlYWQtc2VhcmNoIHsgcGFkZGluZzogMCAyLjI1cmVtOyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiA4NjBweCkgeyAubmstY2hhdC1hc2lkZSB7IHdpZHRoOiAzMjBweDsgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2U1ZTlmMjsgfQogIC5uay1jaGF0LWJvZHkgeyBwb3NpdGlvbjogc3RhdGljOyBvcGFjaXR5OiAxOyBwb2ludGVyLWV2ZW50czogYXV0bzsgfQogIC5uay1jaGF0LWJvZHktY2xvc2UgeyBkaXNwbGF5OiBub25lOyB9IH0KCkBtZWRpYSAobWF4LXdpZHRoOiA4NTlweCkgeyAubmstY2hhdC1ib2R5LnNob3ctY2hhdCB7IHBvc2l0aW9uOiBmaXhlZDsgei1pbmRleDogMjk5OTsgfQogIC5uay1jaGF0LWhlYWQgeyBwYWRkaW5nLXRvcDogMC43NXJlbTsgcGFkZGluZy1ib3R0b206IDAuNzVyZW07IH0gfQoKQG1lZGlhIChtaW4td2lkdGg6IDg2MHB4KSBhbmQgKG1heC13aWR0aDogOTkxcHgpIHsgLm5rLWNoYXQtYXNpZGUgeyB3aWR0aDogMzQ1cHg7IGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNlNWU5ZjI7IH0gfQoKQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7IC5uay1jaGF0LWFzaWRlLXBhbmVsLCAubmstY2hhdC1hc2lkZS1oZWFkLCAubmstY2hhdC1hc2lkZS1zZWFyY2ggeyBwYWRkaW5nLWxlZnQ6IDEuNzVyZW07IHBhZGRpbmctcmlnaHQ6IDEuNzVyZW07IH0KICAubmstY2hhdC1saXN0IHsgcGFkZGluZzogMCAxcmVtOyB9CiAgLm5rLWNoYXQtYXNpZGUgeyB3aWR0aDogMzI1cHg7IH0KICAubmstY2hhdC1wYW5lbCB7IHBhZGRpbmc6IDEuMjVyZW0gMS43NXJlbTsgfQogIC5jaGF0LXByb2ZpbGUtaGVhZCwgLmNoYXQtcHJvZmlsZS1ib2R5LWlubmVyIHsgcGFkZGluZy1yaWdodDogMS43NXJlbTsgcGFkZGluZy1sZWZ0OiAxLjc1cmVtOyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiAxNTQwcHgpIHsgLm5rLWNoYXQtYm94ZWQgeyBtaW4taGVpZ2h0OiBjYWxjKDEwMHZoIC0gKDY1cHggKyA2NHB4ICsgMTEycHgpKTsgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtICg2NXB4ICsgNjRweCArIDExMnB4KSk7IH0KICAubmstY2hhdC1ib3hlZCAubmstY2hhdC1ib2R5LnByb2ZpbGUtc2hvd24geyBwYWRkaW5nLXJpZ2h0OiAwOyB9CiAgLm5rLWNoYXQtYXNpZGUgeyB3aWR0aDogMzgycHg7IH0KICAubmstY2hhdC1ib2R5LnByb2ZpbGUtc2hvd24geyBwYWRkaW5nLXJpZ2h0OiAzNjVweDsgfQogIC5uay1jaGF0LXByb2ZpbGUgeyB3aWR0aDogMzY1cHg7IGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2U1ZTlmMjsgfSB9CgpAbWVkaWEgKG1heC13aWR0aDogMTUzOS45OHB4KSB7IC5wcm9maWxlLXNob3duIC5uay1jaGF0LXByb2ZpbGUtdG9nZ2xlIHsgcmlnaHQ6IDI2MnB4OyB9CiAgLmhhcy1hcHBzLXNpZGViYXIgLnByb2ZpbGUtc2hvd24gLm5rLWNoYXQtcHJvZmlsZS10b2dnbGUgeyByaWdodDogLTE4cHg7IH0gfQoKQG1lZGlhIChtYXgtd2lkdGg6IDM1OXB4KSB7IC5uay1jaGF0LXByb2ZpbGUgeyB3aWR0aDogMjgwcHg7IH0gfQoKLm5rLWNvZGUtcHJldmlldy1ib3ggeyBkaXNwbGF5OiBibG9jazsgY29sb3I6ICM4MDk0YWU7IHBhZGRpbmc6IC4xNXJlbSAxLjI1cmVtOyBib3JkZXItbGVmdDogMXB4IHNvbGlkICNlNWU5ZjI7IH0KCi5kYXNoYm9hcmQtcHJldmlldyB7IGhlaWdodDogMjAwcHg7IGp1c3RpZnktY29udGVudDogY2VudGVyOyB9CgouZHJvcGRvd24tcHJldmlldyAuZHJvcGRvd24tbWVudSB7IHBvc2l0aW9uOiBzdGF0aWM7IGRpc3BsYXk6IGJsb2NrOyB9CgouZHJvcGRvd24tcHJldmlldzphZnRlciB7IGRpc3BsYXk6IGJsb2NrOyBjbGVhcjogYm90aDsgY29udGVudDogIiI7IH0KCkBtZWRpYSAobWF4LXdpZHRoOiA0MjBweCkgeyAuZHJvcGRvd24tcHJldmlldyAuZHJvcGRvd24tbWVudS14bCwgLmRyb3Bkb3duLXByZXZpZXcgLmRyb3Bkb3duLW1lbnUtbGcsIC5kcm9wZG93bi1wcmV2aWV3IC5kcm9wZG93bi1tZW51LW1kIHsgbWluLXdpZHRoOiAxMDAlOyBtYXgtd2lkdGg6IDEwMCU7IH0gfQoKLnByZXR0eXByaW50IHsgcGFkZGluZzogMS4yNXJlbTsgd2hpdGUtc3BhY2U6IHByZTsgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50OyBtYXJnaW4tYm90dG9tOiAwOyBib3JkZXItcmFkaXVzOiA0cHg7IH0KCi5jb2RlLWJsb2NrIHsgcG9zaXRpb246IHJlbGF0aXZlOyBib3JkZXI6IDFweCBzb2xpZCAjZGJkZmVhOyBwYWRkaW5nOiAxLjI1cmVtOyBiYWNrZ3JvdW5kOiAjZmZmOyBib3JkZXItcmFkaXVzOiA0cHg7IH0KCi5jb2RlLWJsb2NrIC5jbGlwYm9hcmQtaW5pdCB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAxMnB4OyByaWdodDogMTJweDsgfQoKLmNhcmQtcHJldmlldyArIC5jb2RlLWJsb2NrIHsgbWFyZ2luLXRvcDogMjhweDsgfQoKLmNvZGUtYmxvY2sgKyAuY29kZS1ibG9jayB7IG1hcmdpbi10b3A6IC0zcHg7IGJvcmRlci10b3AtY29sb3I6ICNlNWU5ZjI7IGJvcmRlci1yYWRpdXM6IDAgMCA0cHggNHB4OyB9CgouY29kZS1ibG9jayArIC5jYXJkLXByZXZpZXcsIC5jb2RlLWJsb2NrICsgLm5rLWJsb2NrLWhlYWQgeyBtYXJnaW4tdG9wOiA0MHB4OyB9CgouY29kZS1ibG9jayAucHJldHR5cHJpbnQgeyBiYWNrZ3JvdW5kOiAjZjVmNmZhOyBib3JkZXI6IG5vbmU7IHBhZGRpbmc6IC43NXJlbTsgZm9udC1zaXplOiAxMXB4OyBsaW5lLWhlaWdodDogMjBweDsgbWF4LWhlaWdodDogMTM2cHg7IH0KCi5jb2RlLWJsb2NrIC50aXRsZSB7IG1hcmdpbi1ib3R0b206IDFyZW07IH0KCi5jb2RlLWJsb2NrIC5idG4sIC5jb2RlLWJsb2NrIC5kdWFsLWxpc3Rib3ggLmR1YWwtbGlzdGJveF9fYnV0dG9uLCAuZHVhbC1saXN0Ym94IC5jb2RlLWJsb2NrIC5kdWFsLWxpc3Rib3hfX2J1dHRvbiB7IGJhY2tncm91bmQtY29sb3I6ICNmZmY7IH0KCi5jb2RlLWJsb2NrIC5idG46Zm9jdXMsIC5jb2RlLWJsb2NrIC5kdWFsLWxpc3Rib3ggLmR1YWwtbGlzdGJveF9fYnV0dG9uOmZvY3VzLCAuZHVhbC1saXN0Ym94IC5jb2RlLWJsb2NrIC5kdWFsLWxpc3Rib3hfX2J1dHRvbjpmb2N1cywgLmNvZGUtYmxvY2sgLmJ0bjpob3ZlciwgLmNvZGUtYmxvY2sgLmR1YWwtbGlzdGJveCAuZHVhbC1saXN0Ym94X19idXR0b246aG92ZXIsIC5kdWFsLWxpc3Rib3ggLmNvZGUtYmxvY2sgLmR1YWwtbGlzdGJveF9fYnV0dG9uOmhvdmVyIHsgYm9yZGVyLWNvbG9yOiAjZGJkZmVhOyBib3gtc2hhZG93OiBub25lOyB9CgouY29kZS1ibG9jay1jbGVhbiAudGl0bGUgeyBmb250LXNpemU6IDExcHg7IGxldHRlci1zcGFjaW5nOiAwLjJlbTsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgY29sb3I6ICM4MDk0YWU7IGZvbnQtd2VpZ2h0OiA1MDA7IG1hcmdpbi1ib3R0b206IDAuNDVyZW07IGRpc3BsYXk6IGJsb2NrOyB9CgoucHJldmlldy1pY29uLWxpc3QgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LXdyYXA6IHdyYXA7IG1hcmdpbjogLTE1cHg7IH0KCi5wcmV2aWV3LWljb24taXRlbSB7IGZsZXg6IDEgMCAxNTBweDsgcGFkZGluZzogMTVweDsgbWF4LXdpZHRoOiA1MCU7IH0KCi5wcmV2aWV3LWljb24tYm94IHsgcG9zaXRpb246IHJlbGF0aXZlOyBwYWRkaW5nOiAyNXB4IDIwcHg7IHRleHQtYWxpZ246IGNlbnRlcjsgYm9yZGVyOiAxcHggc29saWQgI2RiZGZlYTsgfQoKLnByZXZpZXctaWNvbi1ib3ggLmJ0bi1jbGlwYm9hcmQgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgcmlnaHQ6IDA7IG9wYWNpdHk6IDA7IHotaW5kZXg6IDE7IH0KCi5wcmV2aWV3LWljb24tYm94IC5idG4tY2xpcGJvYXJkOmZvY3VzIHsgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsgYm94LXNoYWRvdzogbm9uZTsgfQoKLnByZXZpZXctaWNvbi1ib3g6aG92ZXIgLmJ0bi1jbGlwYm9hcmQgeyBvcGFjaXR5OiAxOyB9CgoucHJldmlldy1pY29uLXdyYXAgeyBwYWRkaW5nLWJvdHRvbTogNXB4OyB9CgoucHJldmlldy1pY29uLXdyYXAgLm5pIHsgZm9udC1zaXplOiAzMHB4OyB9CgoucHJldmlldy1pY29uLXN2ZyAucHJldmlldy1pY29uLXdyYXAgeyBtYXJnaW4tYm90dG9tOiAuNXJlbTsgfQoKLnByZXZpZXctaWNvbi1zdmcgLnByZXZpZXctaWNvbi13cmFwIHN2ZyB7IHdpZHRoOiA5MHB4OyB9CgoucHJldmlldy1pY29uLW5hbWUgeyBjb2xvcjogIzgwOTRhZTsgZm9udC1zaXplOiAxMXB4OyB9CgoucHJldmlldy10aXRsZSwgLnByZXZpZXctdGl0bGUtbGcgeyBkaXNwbGF5OiBibG9jazsgcGFkZGluZy1ib3R0b206IC43NXJlbTsgfQoKLnByZXZpZXctdGl0bGUtbGcgeyBmb250LXNpemU6IDEzcHg7IH0KCi5wcmV2aWV3LWhyIHsgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkYmRmZWE7IG1hcmdpbi10b3A6IDJyZW07IG1hcmdpbi1ib3R0b206IDJyZW07IH0KCi5wcmV2aWV3LWhyICsgLnByZXZpZXctdGl0bGUgeyBwYWRkaW5nLXRvcDogLjVyZW07IH0KCi5uay1ibG9jay1oZWFkICsgLnByZXZpZXctaHIgeyBtYXJnaW4tdG9wOiAuNXJlbTsgfQoKLnByZXZpZXctbGlzdCB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtd3JhcDogd3JhcDsgbWFyZ2luOiAtMC43NXJlbTsgfQoKLnByZXZpZXctaXRlbSB7IHBhZGRpbmc6IDAuNzVyZW07IH0KCi5wcmV2aWV3LWJ0bi1saXN0IHsgZGlzcGxheTogZmxleDsgZmxleC13cmFwOiB3cmFwOyBtYXJnaW46IC0wLjc1cmVtOyB9CgoucHJldmlldy1idG4taXRlbSB7IHdpZHRoOiA1MCU7IHBhZGRpbmc6IDAuNzVyZW07IH0KCi5wcmV2aWV3LWJ0bi1saXN0LWZ3IC5wcmV2aWV3LWJ0bi1pdGVtIHsgd2lkdGg6IDEwMCU7IH0KCi5wcmV2aWV3LWJ0bi1saXN0LTN4IC5wcmV2aWV3LWJ0bi1pdGVtIHsgd2lkdGg6IDMzLjMzJTsgfQoKLmV4YW1wbGUtd2lkdGggPiBkaXYsIC5leGFtcGxlLWhlaWdodCA+IGRpdiwgLmV4YW1wbGUtYm9yZGVyID4gZGl2LCAuZXhhbXBsZS1zcGFjaW5nID4gZGl2IHsgZm9udC1zaXplOiAxMXB4OyBwYWRkaW5nOiAuNXJlbTsgdGV4dC1hbGlnbjogY2VudGVyOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNmZhOyB9CgouZXhhbXBsZS1ib3JkZXIgeyBtYXJnaW46IC0wLjVyZW07IH0KCi5leGFtcGxlLWJvcmRlciA+IGRpdiB7IGhlaWdodDogNC41cmVtOyB3aWR0aDogNC41cmVtOyBtYXJnaW46IC41cmVtOyB9CgouZXhhbXBsZS1ib3JkZXItYWxsID4gZGl2IHsgYm9yZGVyOiAxcHggc29saWQgI2RiZGZlYTsgfQoKLmV4YW1wbGUtd2lkdGggPiBkaXYgeyBoZWlnaHQ6IDJyZW07IGJhY2tncm91bmQtY29sb3I6ICNlYmVlZjI7IG1hcmdpbi1ib3R0b206IDAuMjVyZW07IH0KCi5leGFtcGxlLWhlaWdodCB7IGhlaWdodDogOHJlbTsgfQoKLmV4YW1wbGUtaGVpZ2h0ID4gZGl2IHsgd2lkdGg6IDhyZW07IGJhY2tncm91bmQtY29sb3I6ICNlYmVlZjI7IG1hcmdpbi1yaWdodDogLjVyZW07IH0KCi5leGFtcGxlLXNwYWNpbmcgPiBkaXYgeyBoZWlnaHQ6IDJyZW07IHdpZHRoOiA0LjVyZW07IGJhY2tncm91bmQtY29sb3I6ICNlYmVlZjI7IG1hcmdpbi1ib3R0b206IC41cmVtOyB9CgouZXhhbXBsZS1zcGFjaW5nLXBkID4gZGl2IHsgbWFyZ2luLXJpZ2h0OiAuNXJlbTsgaGVpZ2h0OiBhdXRvOyB3aWR0aDogYXV0bzsgfQoKLmV4YW1wbGUtc3BhY2luZy1wZCA+IGRpdiA+IHNwYW4geyBkaXNwbGF5OiBibG9jazsgcGFkZGluZzogLjI1cmVtOyBsaW5lLWhlaWdodDogMTsgYm9yZGVyLXJhZGl1czogMnB4OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOyB9CgouZXhhbXBsZS1hbGVydHM6bm90KDpsYXN0LWNoaWxkKSB7IG1hcmdpbi1ib3R0b206IDI4cHg7IH0KCi5jb21wb25lbnRzLXByZXZpZXcgaDQudGl0bGUsIC5jb21wb25lbnRzLXByZXZpZXcgaDUudGl0bGUgeyBmb250LXNpemU6IDEuMjVyZW07IGxldHRlci1zcGFjaW5nOiAtMC4wMXJlbTsgZm9udC1mYW1pbHk6IFJvYm90bywgc2Fucy1zZXJpZjsgZm9udC13ZWlnaHQ6IDUwMDsgfQoKLmNvbXBvbmVudHMtcHJldmlldyAuY2FyZC1wcmV2aWV3IHsgYm9yZGVyOiAxcHggc29saWQgI2RiZGZlYTsgfQoKLmNvbXBvbmVudHMtcHJldmlldyAuY2FyZC1wcmV2aWV3ID4gLmNhcmQtaW5uZXIgeyBwYWRkaW5nOiAxLjI1cmVtOyB9CgpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHsgLnByZXZpZXctYnRuLWl0ZW0geyB3aWR0aDogMjUlOyB9CiAgLnByZXZpZXctYnRuLWxpc3QtZncgLnByZXZpZXctYnRuLWl0ZW0geyB3aWR0aDogMjUlOyB9CiAgLnByZXZpZXctYnRuLWxpc3QtM3ggLnByZXZpZXctYnRuLWl0ZW0geyB3aWR0aDogMTYuNjYlOyB9IH0KCkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkgeyAuY29tcG9uZW50cy1wcmV2aWV3IC5uay1ibG9jayArIC5uay1ibG9jay1sZyB7IHBhZGRpbmctdG9wOiAzLjc1cmVtOyB9IH0KCkBtZWRpYSAobWF4LXdpZHRoOiA3NjcuOThweCkgeyAucHJldmlldy1yZWZlcmVuY2UgdHIsIC5wcmV2aWV3LXJlZmVyZW5jZSB0aCwgLnByZXZpZXctcmVmZXJlbmNlIHRkIHsgZGlzcGxheTogYmxvY2s7IGJvcmRlcjogMDsgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsgfQogIC5wcmV2aWV3LXJlZmVyZW5jZSB0Ym9keSB0ciB7IHBhZGRpbmc6IC41cmVtIDA7IH0KICAucHJldmlldy1yZWZlcmVuY2UgdGJvZHkgdHI6bm90KDpsYXN0LWNoaWxkKSB7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTVlOWYyOyB9CiAgLnByZXZpZXctcmVmZXJlbmNlIHRib2R5IHRyOm50aC1jaGlsZCgybikgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI0NSwgMjQ2LCAyNTAsIDAuMyk7IH0KICAucHJldmlldy1yZWZlcmVuY2UgdHIgdGQgeyBwYWRkaW5nOiAwLjJyZW0gMS4yNXJlbTsgfQogIC5wcmV2aWV3LXJlZmVyZW5jZSB0ciB0aDpub3QoOmZpcnN0LWNoaWxkKSB7IGRpc3BsYXk6IG5vbmU7IH0gfQoKLm5rLWJvZHkudWktc2hhZHkgeyBiYWNrZ3JvdW5kOiAjZmZmICFpbXBvcnRhbnQ7IH0KCi51aS1zaGFkeSAudGFibGUgLnRoZWFkLWxpZ2h0IHRoIHsgYmFja2dyb3VuZDogcmdiYSgyNDUsIDI0NiwgMjUwLCAwLjUpOyBib3gtc2hhZG93OiAwIC0xcHggNXB4IC01cHggcmdiYSgzMSwgNDMsIDU4LCAwLjcpOyB9CgoudWktc2hhZHkgLnRiLXRueC1oZWFkLCAudWktc2hhZHkgLnNwLXBsYW4tYWN0aW9uLCAudWktc2hhZHkgLnRiLXRpY2tldC1pdGVtLmlzLXVucmVhZCwgLnVpLXNoYWR5IC5zdXBwb3J0LXRvcGljLWJsb2NrOmxpbms6aG92ZXIsIC51aS1zaGFkeSAubmstcmVmd2ctc3RhdHMgeyBiYWNrZ3JvdW5kOiByZ2JhKDI0NSwgMjQ2LCAyNTAsIDAuNSk7IH0KCi51aS1zaGFkeSAubmstcmVmd2ctc3RhdHMgeyBiYWNrZ3JvdW5kOiByZ2JhKDI0NSwgMjQ2LCAyNTAsIDAuNSkgIWltcG9ydGFudDsgfQoKLnVpLXNoYWR5IC5jYXJkIC5jYXJkLWlubmVyICsgLnRhYmxlIC50Yi10bngtaGVhZCB7IGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGJkZmVhOyB9CgoudWktc2hhZHkgLmNhcmQsIC51aS1zaGFkeSAuY29kZS1ibG9jaywgLnVpLXNoYWR5IC5uay1pdi13ZzEsIC51aS1zaGFkeSAuYWNjb3JkaW9uOm5vdCguYWNjb3JkaW9uLXMyKTpub3QoLmFjY29yZGlvbi1zMyksIC51aS1zaGFkeSAubmstcmVwbHktZm9ybSwgLnVpLXNoYWR5IC5uay1maWxlcy12aWV3LWdyaWQgLm5rLWZpbGUsIC51aS1zaGFkeSAubmstZmlsZXMtdmlldy1ncm91cCAubmstZmlsZSwgLnVpLXNoYWR5IC5uay1maWxlcy12aWV3LWxpc3QgLm5rLWZpbGVzLWxpc3QsIC51aS1zaGFkeSAuY2hhdC1tc2csIC51aS1zaGFkeSAua2FuYmFuLWJvYXJkLWhlYWRlciwgLnVpLXNoYWR5IC5rYW5iYW4taXRlbSwgLnVpLXNoYWR5IC5rYW5iYW4tYWRkLXRhc2sgeyBib3gtc2hhZG93OiAwIDJweCA2cHggLTFweCByZ2JhKDMxLCA0MywgNTgsIDAuMDgpOyB9CgoudWktc2hhZHkgLmNhcmQgLmFjY29yZGlvbjpub3QoLmFjY29yZGlvbi1zMik6bm90KC5hY2NvcmRpb24tczMpIHsgYm94LXNoYWRvdzogbm9uZTsgYm9yZGVyOiAxcHggc29saWQgI2RiZGZlYTsgfQoKLnVpLXNoYWR5IC5uay1oZWFkZXIgeyBib3gtc2hhZG93OiAwIDAgNHB4IC0xcHggcmdiYSgxNiwgMjUsIDM2LCAwLjE1KTsgfQoKLnVpLXNoYWR5IC5uay1tc2ctYm94ZWQsIC51aS1zaGFkeSAubmstaWJ4LWJveGVkLCAudWktc2hhZHkgLm5rLWZtZy1ib3hlZCwgLnVpLXNoYWR5IC5uay1jaGF0LWJveGVkIHsgYm94LXNoYWRvdzogMCAycHggNnB4IC0xcHggcmdiYSgzMSwgNDMsIDU4LCAwLjA4KTsgfQoKLnVpLXNoYWR5IC5uay1tc2ctYXNpZGUsIC51aS1zaGFkeSAubmstbXNnLW5hdiB7IGJhY2tncm91bmQ6ICNmZmY7IH0KCi51aS1zaGFkeSAubmstbXNnLXJlcGx5LCAudWktc2hhZHkgLm5rLWNoYXQtcGFuZWwsIC51aS1zaGFkeSAubmstaWJ4LXJlcGx5IHsgYm94LXNoYWRvdzogaW5zZXQgMCAwIDhweCAtNXB4IHJnYmEoMTYsIDI1LCAzNiwgMC4zKTsgfQoKLnVpLXNoYWR5IC5uay1pYngtaXRlbSB7IGJveC1zaGFkb3c6IDAgMCA3cHggLTFweCByZ2JhKDE2LCAyNSwgMzYsIDAuMSk7IH0KCi51aS1yb3VuZGVyIC5jYXJkLCAudWktcm91bmRlciAuZW1iZWQtcmVzcG9uc2l2ZSB7IGJvcmRlci1yYWRpdXM6IDEycHg7IH0KCmJvZHkuZGFyay1tb2RlIHsgYmFja2dyb3VuZDogIzEwMTkyNCAhaW1wb3J0YW50OyBjb2xvcjogI2I2YzZlMzsgfQoKYm9keS5kYXJrLW1vZGUuYmctbGlnaHRlciwgLmR1YWwtbGlzdGJveCBib2R5LmRhcmstbW9kZS5kdWFsLWxpc3Rib3hfX2l0ZW06aG92ZXIsIGJvZHkuZGFyay1tb2RlLmJnLWxpZ2h0IHsgYmFja2dyb3VuZDogIzBkMTQxZCAhaW1wb3J0YW50OyB9Cgpib2R5LmRhcmstbW9kZS5uay1ib2R5LnVpLXNvZnR5LCBib2R5LmRhcmstbW9kZS5uay1ib2R5LnVpLXNoYWR5IHsgYmFja2dyb3VuZDogIzEwMTkyNCAhaW1wb3J0YW50OyB9CgouZGFyay1tb2RlIC5sb2dvLWRhcmsgeyBvcGFjaXR5OiAwOyB9CgouZGFyay1tb2RlIC5sb2dvLWxpZ2h0IHsgb3BhY2l0eTogMTsgfQoKLmRhcmstbW9kZSBoMSwgLmRhcmstbW9kZSBoMiwgLmRhcmstbW9kZSBoMywgLmRhcmstbW9kZSBoNCwgLmRhcmstbW9kZSBoNSwgLmRhcmstbW9kZSBoNiwgLmRhcmstbW9kZSAuaDEsIC5kYXJrLW1vZGUgLmgyLCAuZGFyay1tb2RlIC5oMywgLmRhcmstbW9kZSAuaDQsIC5kYXJrLW1vZGUgLmg1LCAuZGFyay1tb2RlIC5oNiwgLmRhcmstbW9kZSAubGVhZC10ZXh0LCAuZGFyay1tb2RlIC5kcm9wZG93bi10aXRsZSwgLmRhcmstbW9kZSBwcmUgeyBjb2xvcjogI2ZmZjsgfQoKLmRhcmstbW9kZSAudGV4dC1iYXNlLCAuZGFyay1tb2RlIC50ZXh0LWJvZHksIC5kYXJrLW1vZGUgLmxpbmstdGV4dCB7IGNvbG9yOiAjYjZjNmUzICFpbXBvcnRhbnQ7IH0KCi5kYXJrLW1vZGUgLnRleHQtc2Vjb25kYXJ5LCAuZGFyay1tb2RlIC5pY29uW2NsYXNzKj0iYmctc2Vjb25kYXJ5LWRpbSJdLCAuZGFyay1tb2RlIC51c2VyLWF2YXRhcltjbGFzcyo9Ii1saWdodCJdLCAuZGFyay1tb2RlIC5pY29uW2NsYXNzKj0iYmctbGlnaHQiXSB7IGNvbG9yOiAjODA5NGFlICFpbXBvcnRhbnQ7IH0KCi5kYXJrLW1vZGUgLnRleHQtZGFyayB7IGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7IH0KCi5kYXJrLW1vZGUgLnRleHQtbGlnaHQsIC5kYXJrLW1vZGUgLnVzZXItYXZhdGFyW2NsYXNzKj0iLWRhcmsiXSB7IGNvbG9yOiAjODA5MWE3ICFpbXBvcnRhbnQ7IH0KCi5kYXJrLW1vZGUgLnRleHQtbGlnaHRlciB7IGNvbG9yOiAjM2M0ZDYyICFpbXBvcnRhbnQ7IH0KCi5kYXJrLW1vZGUgLnRleHQtaW5kaWdvIHsgY29sb3I6ICM2MzcwY2EgIWltcG9ydGFudDsgfQoKLmRhcmstbW9kZSAuYmctbGlnaHQgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMGQxNDFkICFpbXBvcnRhbnQ7IH0KCi5kYXJrLW1vZGUgLmJnLWxpZ2h0ZXIsIC5kYXJrLW1vZGUgLmR1YWwtbGlzdGJveCAuZHVhbC1saXN0Ym94X19pdGVtOmhvdmVyLCAuZHVhbC1saXN0Ym94IC5kYXJrLW1vZGUgLmR1YWwtbGlzdGJveF9faXRlbTpob3ZlciB7IGJhY2tncm91bmQtY29sb3I6ICMxMDE5MjQgIWltcG9ydGFudDsgfQoKLmRhcmstbW9kZSAudGFibGUtc3RyaXBlZCB0Ym9keSB0cjpudGgtb2YtdHlwZShvZGQpIHsgYmFja2dyb3VuZC1jb2xvcjogIzEwMTkyNCAhaW1wb3J0YW50OyB9CgouZGFyay1tb2RlIC5iZy13aGl0ZSB7IGJhY2tncm91bmQtY29sb3I6ICMxNDFjMjYgIWltcG9ydGFudDsgfQoKLmRhcmstbW9kZSAuYmctdHJhbnNwYXJlbnQuYmctdHJhbnNwYXJlbnQgeyBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50OyB9CgouZGFyay1tb2RlIC5iZy1kYXJrIHsgYmFja2dyb3VuZC1jb2xvcjogI2ViZWVmMiAhaW1wb3J0YW50OyB9CgouZGFyay1tb2RlIC5iZy1ibHVlLWRpbSB7IGJhY2tncm91bmQtY29sb3I6ICMxZTJmNDYgIWltcG9ydGFudDsgfQoKLmRhcmstbW9kZSAuYmctYXp1cmUtZGltIHsgYmFja2dyb3VuZC1jb2xvcjogIzE1MmE0NiAhaW1wb3J0YW50OyB9CgouZGFyay1tb2RlIC5iZy1pbmRpZ28tZGltIHsgYmFja2dyb3VuZC1jb2xvcjogIzE4MjAzNCAhaW1wb3J0YW50OyB9CgouZGFyay1tb2RlIC5iZy1wdXJwbGUtZGltIHsgYmFja2dyb3VuZC1jb2xvcjogIzI1Mjg0NyAhaW1wb3J0YW50OyB9CgouZGFyay1tb2RlIC5iZy1waW5rLWRpbSB7IGJhY2tncm91bmQtY29sb3I6ICMzODI3MzkgIWltcG9ydGFudDsgfQoKLmRhcmstbW9kZSAuYmctb3JhbmdlLWRpbSB7IGJhY2tncm91bmQtY29sb3I6ICMzODMwMmQgIWltcG9ydGFudDsgfQoKLmRhcmstbW9kZSAuYmctdGVhbC1kaW0geyBiYWNrZ3JvdW5kLWNvbG9yOiAjMTYzNjM3ICFpbXBvcnRhbnQ7IH0KCi5kYXJrLW1vZGUgLmJnLXByaW1hcnktZGltLCAuZGFyay1tb2RlIC5kdWFsLWxpc3Rib3ggLmR1YWwtbGlzdGJveF9faXRlbTphY3RpdmUsIC5kdWFsLWxpc3Rib3ggLmRhcmstbW9kZSAuZHVhbC1saXN0Ym94X19pdGVtOmFjdGl2ZSwgLmRhcmstbW9kZSAuZHVhbC1saXN0Ym94IC5kdWFsLWxpc3Rib3hfX2l0ZW0uZHVhbC1saXN0Ym94X19pdGVtLS1zZWxlY3RlZCwgLmR1YWwtbGlzdGJveCAuZGFyay1tb2RlIC5kdWFsLWxpc3Rib3hfX2l0ZW0uZHVhbC1saXN0Ym94X19pdGVtLS1zZWxlY3RlZCB7IGJhY2tncm91bmQtY29sb3I6ICMxMzI5NDYgIWltcG9ydGFudDsgfQoKLmRhcmstbW9kZSAuYmctc3VjY2Vzcy1kaW0geyBiYWNrZ3JvdW5kLWNvbG9yOiAjMTYzYTNhICFpbXBvcnRhbnQ7IH0KCi5kYXJrLW1vZGUgLmJnLWluZm8tZGltIHsgYmFja2dyb3VuZC1jb2xvcjogIzEzMzU0MiAhaW1wb3J0YW50OyB9CgouZGFyay1tb2RlIC5iZy13YXJuaW5nLWRpbSB7IGJhY2tncm91bmQtY29sb3I6ICMzNjM0MjIgIWltcG9ydGFudDsgfQoKLmRhcmstbW9kZSAuYmctZGFuZ2VyLWRpbSB7IGJhY2tncm91bmQtY29sb3I6ICMzNDI0MmIgIWltcG9ydGFudDsgfQoKLmRhcmstbW9kZSAuYmctc2Vjb25kYXJ5LWRpbSB7IGJhY2tncm91bmQtY29sb3I6ICMxYjI1MzIgIWltcG9ydGFudDsgfQoKLmRhcmstbW9kZSAuYmctZGFyay1kaW0geyBiYWNrZ3JvdW5kLWNvbG9yOiAjMTYxZTI5ICFpbXBvcnRhbnQ7IH0KCi5kYXJrLW1vZGUgLmJnLWdyYXktZGltIHsgYmFja2dyb3VuZC1jb2xvcjogIzI0MmUzOSAhaW1wb3J0YW50OyB9CgouZGFyay1tb2RlIC5iZy1idGMtZGltIHsgYmFja2dyb3VuZC1jb2xvcjogIzM3MmMyNSAhaW1wb3J0YW50OyB9CgouZGFyay1tb2RlIC5iZy1ldGgtZGltIHsgYmFja2dyb3VuZC1jb2xvcjogIzIwMjkzYyAhaW1wb3J0YW50OyB9CgouZGFyay1tb2RlIC5hbGVydC1wcmltYXJ5IHsgY29sb3I6ICMwOTcxZmU7IGJhY2tncm91bmQtY29sb3I6ICMxMzI5NDY7IGJvcmRlci1jb2xvcjogIzEzMjk0NjsgfQoKLmRhcmstbW9kZSAuYWxlcnQtcHJpbWFyeSBociB7IGJvcmRlci10b3AtY29sb3I6ICMxMzI5NDY7IH0KCi5kYXJrLW1vZGUgLmFsZXJ0LXByaW1hcnkgLmFsZXJ0LWxpbmsgeyBjb2xvcjogIzAxNWFkMzsgfQoKLmRhcmstbW9kZSAuYWxlcnQtZmlsbC5hbGVydC1wcmltYXJ5IHsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQ6ICMwOTcxZmU7IH0KCi5kYXJrLW1vZGUgLmFsZXJ0LWZpbGwuYWxlcnQtcHJpbWFyeSAuYWxlcnQtbGluayB7IGNvbG9yOiAjZmZmOyB9CgouZGFyay1tb2RlIC5hbGVydC1wcm8uYWxlcnQtcHJpbWFyeSB7IGJvcmRlci1jb2xvcjogIzA5NzFmZTsgfQoKLmRhcmstbW9kZSAuYWxlcnQtc2Vjb25kYXJ5IHsgY29sb3I6ICM4Y2EzYzA7IGJhY2tncm91bmQtY29sb3I6ICMxYjI1MzI7IGJvcmRlci1jb2xvcjogIzFiMjUzMjsgfQoKLmRhcmstbW9kZSAuYWxlcnQtc2Vjb25kYXJ5IGhyIHsgYm9yZGVyLXRvcC1jb2xvcjogIzFiMjUzMjsgfQoKLmRhcmstbW9kZSAuYWxlcnQtc2Vjb25kYXJ5IC5hbGVydC1saW5rIHsgY29sb3I6ICM2Yjg5YWU7IH0KCi5kYXJrLW1vZGUgLmFsZXJ0LWZpbGwuYWxlcnQtc2Vjb25kYXJ5IHsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQ6ICM4Y2EzYzA7IH0KCi5kYXJrLW1vZGUgLmFsZXJ0LWZpbGwuYWxlcnQtc2Vjb25kYXJ5IC5hbGVydC1saW5rIHsgY29sb3I6ICNmZmY7IH0KCi5kYXJrLW1vZGUgLmFsZXJ0LXByby5hbGVydC1zZWNvbmRhcnkgeyBib3JkZXItY29sb3I6ICM4Y2EzYzA7IH0KCi5kYXJrLW1vZGUgLmFsZXJ0LXN1Y2Nlc3MgeyBjb2xvcjogIzFlZTBhYzsgYmFja2dyb3VuZC1jb2xvcjogIzE2M2EzYTsgYm9yZGVyLWNvbG9yOiAjMTYzYTNhOyB9CgouZGFyay1tb2RlIC5hbGVydC1zdWNjZXNzIGhyIHsgYm9yZGVyLXRvcC1jb2xvcjogIzE2M2EzYTsgfQoKLmRhcmstbW9kZSAuYWxlcnQtc3VjY2VzcyAuYWxlcnQtbGluayB7IGNvbG9yOiAjMThiMzg5OyB9CgouZGFyay1tb2RlIC5hbGVydC1maWxsLmFsZXJ0LXN1Y2Nlc3MgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZDogIzFlZTBhYzsgfQoKLmRhcmstbW9kZSAuYWxlcnQtZmlsbC5hbGVydC1zdWNjZXNzIC5hbGVydC1saW5rIHsgY29sb3I6ICNmZmY7IH0KCi5kYXJrLW1vZGUgLmFsZXJ0LXByby5hbGVydC1zdWNjZXNzIHsgYm9yZGVyLWNvbG9yOiAjMWVlMGFjOyB9CgouZGFyay1tb2RlIC5hbGVydC13YXJuaW5nIHsgY29sb3I6ICNmNGJkMGU7IGJhY2tncm91bmQtY29sb3I6ICMzNjM0MjI7IGJvcmRlci1jb2xvcjogIzM2MzQyMjsgfQoKLmRhcmstbW9kZSAuYWxlcnQtd2FybmluZyBociB7IGJvcmRlci10b3AtY29sb3I6ICMzNjM0MjI7IH0KCi5kYXJrLW1vZGUgLmFsZXJ0LXdhcm5pbmcgLmFsZXJ0LWxpbmsgeyBjb2xvcjogI2M2OTkwOTsgfQoKLmRhcmstbW9kZSAuYWxlcnQtZmlsbC5hbGVydC13YXJuaW5nIHsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQ6ICNmNGJkMGU7IH0KCi5kYXJrLW1vZGUgLmFsZXJ0LWZpbGwuYWxlcnQtd2FybmluZyAuYWxlcnQtbGluayB7IGNvbG9yOiAjZmZmOyB9CgouZGFyay1tb2RlIC5hbGVydC1wcm8uYWxlcnQtd2FybmluZyB7IGJvcmRlci1jb2xvcjogI2Y0YmQwZTsgfQoKLmRhcmstbW9kZSAuYWxlcnQtaW5mbyB7IGNvbG9yOiAjMDljMmRlOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMTMzNTQyOyBib3JkZXItY29sb3I6ICMxMzM1NDI7IH0KCi5kYXJrLW1vZGUgLmFsZXJ0LWluZm8gaHIgeyBib3JkZXItdG9wLWNvbG9yOiAjMTMzNTQyOyB9CgouZGFyay1tb2RlIC5hbGVydC1pbmZvIC5hbGVydC1saW5rIHsgY29sb3I6ICMwNzk3YWQ7IH0KCi5kYXJrLW1vZGUgLmFsZXJ0LWZpbGwuYWxlcnQtaW5mbyB7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kOiAjMDljMmRlOyB9CgouZGFyay1tb2RlIC5hbGVydC1maWxsLmFsZXJ0LWluZm8gLmFsZXJ0LWxpbmsgeyBjb2xvcjogI2ZmZjsgfQoKLmRhcmstbW9kZSAuYWxlcnQtcHJvLmFsZXJ0LWluZm8geyBib3JkZXItY29sb3I6ICMwOWMyZGU7IH0KCi5kYXJrLW1vZGUgLmFsZXJ0LWRhbmdlciB7IGNvbG9yOiAjZTg1MzQ3OyBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQyNDJiOyBib3JkZXItY29sb3I6ICMzNDI0MmI7IH0KCi5kYXJrLW1vZGUgLmFsZXJ0LWRhbmdlciBociB7IGJvcmRlci10b3AtY29sb3I6ICMzNDI0MmI7IH0KCi5kYXJrLW1vZGUgLmFsZXJ0LWRhbmdlciAuYWxlcnQtbGluayB7IGNvbG9yOiAjZTAyYjFjOyB9CgouZGFyay1tb2RlIC5hbGVydC1maWxsLmFsZXJ0LWRhbmdlciB7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kOiAjZTg1MzQ3OyB9CgouZGFyay1tb2RlIC5hbGVydC1maWxsLmFsZXJ0LWRhbmdlciAuYWxlcnQtbGluayB7IGNvbG9yOiAjZmZmOyB9CgouZGFyay1tb2RlIC5hbGVydC1wcm8uYWxlcnQtZGFuZ2VyIHsgYm9yZGVyLWNvbG9yOiAjZTg1MzQ3OyB9CgouZGFyay1tb2RlIC5hbGVydC1ncmF5IHsgY29sb3I6ICNiN2MyZDA7IGJhY2tncm91bmQtY29sb3I6ICMyNDJlMzk7IGJvcmRlci1jb2xvcjogIzI0MmUzOTsgfQoKLmRhcmstbW9kZSAuYWxlcnQtZ3JheSBociB7IGJvcmRlci10b3AtY29sb3I6ICMyNDJlMzk7IH0KCi5kYXJrLW1vZGUgLmFsZXJ0LWdyYXkgLmFsZXJ0LWxpbmsgeyBjb2xvcjogIzk4YThiYzsgfQoKLmRhcmstbW9kZSAuYWxlcnQtZmlsbC5hbGVydC1ncmF5IHsgY29sb3I6ICMxMDE5MjQ7IGJhY2tncm91bmQ6ICNiN2MyZDA7IH0KCi5kYXJrLW1vZGUgLmFsZXJ0LWZpbGwuYWxlcnQtZ3JheSAuYWxlcnQtbGluayB7IGNvbG9yOiAjMTAxOTI0OyB9CgouZGFyay1tb2RlIC5hbGVydC1wcm8uYWxlcnQtZ3JheSB7IGJvcmRlci1jb2xvcjogI2I3YzJkMDsgfQoKLmRhcmstbW9kZSAuYWxlcnQtZGFyayB7IGNvbG9yOiAjMWYyYjNhOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMTYxZTI5OyBib3JkZXItY29sb3I6ICMxNjFlMjk7IH0KCi5kYXJrLW1vZGUgLmFsZXJ0LWRhcmsgaHIgeyBib3JkZXItdG9wLWNvbG9yOiAjMTYxZTI5OyB9CgouZGFyay1tb2RlIC5hbGVydC1kYXJrIC5hbGVydC1saW5rIHsgY29sb3I6ICMwZDEyMTk7IH0KCi5kYXJrLW1vZGUgLmFsZXJ0LWZpbGwuYWxlcnQtZGFyayB7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kOiAjMWYyYjNhOyB9CgouZGFyay1tb2RlIC5hbGVydC1maWxsLmFsZXJ0LWRhcmsgLmFsZXJ0LWxpbmsgeyBjb2xvcjogI2ZmZjsgfQoKLmRhcmstbW9kZSAuYWxlcnQtcHJvLmFsZXJ0LWRhcmsgeyBib3JkZXItY29sb3I6ICMxZjJiM2E7IH0KCi5kYXJrLW1vZGUgLmFsZXJ0LWxpZ2h0IHsgY29sb3I6ICNlYmVlZjI7IGJhY2tncm91bmQtY29sb3I6ICMyNDJlMzk7IGJvcmRlci1jb2xvcjogIzI0MmUzOTsgfQoKLmRhcmstbW9kZSAuYWxlcnQtbGlnaHQgaHIgeyBib3JkZXItdG9wLWNvbG9yOiAjMjQyZTM5OyB9CgouZGFyay1tb2RlIC5hbGVydC1saWdodCAuYWxlcnQtbGluayB7IGNvbG9yOiAjY2NkNGRlOyB9CgouZGFyay1tb2RlIC5hbGVydC1maWxsLmFsZXJ0LWxpZ2h0IHsgY29sb3I6ICMxMDE5MjQ7IGJhY2tncm91bmQ6ICNlYmVlZjI7IH0KCi5kYXJrLW1vZGUgLmFsZXJ0LWZpbGwuYWxlcnQtbGlnaHQgLmFsZXJ0LWxpbmsgeyBjb2xvcjogIzEwMTkyNDsgfQoKLmRhcmstbW9kZSAuYWxlcnQtcHJvLmFsZXJ0LWxpZ2h0IHsgYm9yZGVyLWNvbG9yOiAjZWJlZWYyOyB9CgouZGFyay1tb2RlIC5iYWRnZS1kaW0uYmFkZ2UtcHJpbWFyeSB7IGNvbG9yOiAjMDk3MWZlOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMTMyOTQ2OyBib3JkZXItY29sb3I6ICMxMzI5NDY7IH0KCi5kYXJrLW1vZGUgLmJhZGdlLWRpbS5iYWRnZS1vdXRsaW5lLXByaW1hcnkgeyBjb2xvcjogIzA5NzFmZTsgYmFja2dyb3VuZC1jb2xvcjogIzEzMjk0NjsgYm9yZGVyLWNvbG9yOiAjMTAzZTdjOyB9CgouZGFyay1tb2RlIC5iYWRnZS1kaW0uYmFkZ2Utc2Vjb25kYXJ5IHsgY29sb3I6ICM4Y2EzYzA7IGJhY2tncm91bmQtY29sb3I6ICMyNjMwM2Q7IGJvcmRlci1jb2xvcjogIzI2MzAzZDsgfQoKLmRhcmstbW9kZSAuYmFkZ2UtZGltLmJhZGdlLW91dGxpbmUtc2Vjb25kYXJ5IHsgY29sb3I6ICM4Y2EzYzA7IGJhY2tncm91bmQtY29sb3I6ICMyNjMwM2Q7IGJvcmRlci1jb2xvcjogIzQ0NTI2NDsgfQoKLmRhcmstbW9kZSAuYmFkZ2UtZGltLmJhZGdlLXN1Y2Nlc3MgeyBjb2xvcjogIzFlZTBhYzsgYmFja2dyb3VuZC1jb2xvcjogIzE2M2EzYTsgYm9yZGVyLWNvbG9yOiAjMTYzYTNhOyB9CgouZGFyay1tb2RlIC5iYWRnZS1kaW0uYmFkZ2Utb3V0bGluZS1zdWNjZXNzIHsgY29sb3I6ICMxZWUwYWM7IGJhY2tncm91bmQtY29sb3I6ICMxNjNhM2E7IGJvcmRlci1jb2xvcjogIzE4NmI1YzsgfQoKLmRhcmstbW9kZSAuYmFkZ2UtZGltLmJhZGdlLWluZm8geyBjb2xvcjogIzA5YzJkZTsgYmFja2dyb3VuZC1jb2xvcjogIzEzMzU0MjsgYm9yZGVyLWNvbG9yOiAjMTMzNTQyOyB9CgouZGFyay1tb2RlIC5iYWRnZS1kaW0uYmFkZ2Utb3V0bGluZS1pbmZvIHsgY29sb3I6ICMwOWMyZGU7IGJhY2tncm91bmQtY29sb3I6ICMxMzM1NDI7IGJvcmRlci1jb2xvcjogIzEwNWY3MDsgfQoKLmRhcmstbW9kZSAuYmFkZ2UtZGltLmJhZGdlLXdhcm5pbmcgeyBjb2xvcjogI2Y0YmQwZTsgYmFja2dyb3VuZC1jb2xvcjogIzM2MzQyMjsgYm9yZGVyLWNvbG9yOiAjMzYzNDIyOyB9CgouZGFyay1tb2RlIC5iYWRnZS1kaW0uYmFkZ2Utb3V0bGluZS13YXJuaW5nIHsgY29sb3I6ICNmNGJkMGU7IGJhY2tncm91bmQtY29sb3I6ICMzNjM0MjI7IGJvcmRlci1jb2xvcjogIzZlNWQxYzsgfQoKLmRhcmstbW9kZSAuYmFkZ2UtZGltLmJhZGdlLWRhbmdlciB7IGNvbG9yOiAjZTg1MzQ3OyBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQyNDJiOyBib3JkZXItY29sb3I6ICMzNDI0MmI7IH0KCi5kYXJrLW1vZGUgLmJhZGdlLWRpbS5iYWRnZS1vdXRsaW5lLWRhbmdlciB7IGNvbG9yOiAjZTg1MzQ3OyBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQyNDJiOyBib3JkZXItY29sb3I6ICM2OTMyMzM7IH0KCi5kYXJrLW1vZGUgLmJhZGdlLWRpbS5iYWRnZS1kYXJrIHsgY29sb3I6ICNlYmVlZjI7IGJhY2tncm91bmQtY29sb3I6ICMzNTNjNDU7IGJvcmRlci1jb2xvcjogIzM1M2M0NTsgfQoKLmRhcmstbW9kZSAuYmFkZ2UtZGltLmJhZGdlLW91dGxpbmUtZGFyayB7IGNvbG9yOiAjZWJlZWYyOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMzUzYzQ1OyBib3JkZXItY29sb3I6ICM2YTcwNzg7IH0KCi5kYXJrLW1vZGUgLmJhZGdlLWRpbS5iYWRnZS1ncmF5IHsgY29sb3I6ICM4MDkxYTc7IGJhY2tncm91bmQtY29sb3I6ICMyNDJlMzk7IGJvcmRlci1jb2xvcjogIzI0MmUzOTsgfQoKLmRhcmstbW9kZSAuYmFkZ2UtZGltLmJhZGdlLW91dGxpbmUtZ3JheSB7IGNvbG9yOiAjODA5MWE3OyBiYWNrZ3JvdW5kLWNvbG9yOiAjMjQyZTM5OyBib3JkZXItY29sb3I6ICMzZjRiNWE7IH0KCi5kYXJrLW1vZGUgLmJhZGdlLWRpbS5iYWRnZS1saWdodCB7IGNvbG9yOiAjYjdjMmQwOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMmQzNTQwOyBib3JkZXItY29sb3I6ICMyZDM1NDA7IH0KCi5kYXJrLW1vZGUgLmJhZGdlLWRpbS5iYWRnZS1vdXRsaW5lLWxpZ2h0IHsgY29sb3I6ICNiN2MyZDA7IGJhY2tncm91bmQtY29sb3I6ICMyZDM1NDA7IGJvcmRlci1jb2xvcjogIzU1NWY2YTsgfQoKLmRhcmstbW9kZSAuYmFkZ2UtZGltLmJhZGdlLWxpZ2h0ZXIgeyBjb2xvcjogIzgwOTFhNzsgYmFja2dyb3VuZC1jb2xvcjogIzI0MmUzOTsgYm9yZGVyLWNvbG9yOiAjMjQyZTM5OyB9CgouZGFyay1tb2RlIC5iYWRnZS1kaW0uYmFkZ2Utb3V0bGluZS1saWdodGVyIHsgY29sb3I6ICM4MDkxYTc7IGJhY2tncm91bmQtY29sb3I6ICMyNDJlMzk7IGJvcmRlci1jb2xvcjogIzNmNGI1YTsgfQoKLmRhcmstbW9kZSAuYmFkZ2Utb3V0bGluZS1zZWNvbmRhcnksIC5kYXJrLW1vZGUgLmJhZGdlLWRvdC5iYWRnZS1kYXJrLCAuZGFyay1tb2RlIC5iYWRnZS1kb3QuYmFkZ2Utc2Vjb25kYXJ5IHsgY29sb3I6ICNiN2MyZDA7IH0KCi5kYXJrLW1vZGUgLmJhZGdlLW91dGxpbmUtZGFyayB7IGNvbG9yOiAjZWJlZWYyOyBib3JkZXItY29sb3I6ICNlYmVlZjI7IH0KCi5kYXJrLW1vZGUgLmJhZGdlLW91dGxpbmUtbGlnaHQgeyBjb2xvcjogI2I3YzJkMDsgYm9yZGVyLWNvbG9yOiAjMzQ0MzU3OyB9CgouZGFyay1tb2RlIC5iYWRnZS1kb3QuYmFkZ2UtZGFyaywgLmRhcmstbW9kZSAuYmFkZ2UtZG90LmJhZGdlLWxpZ2h0IHsgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IH0KCi5kYXJrLW1vZGUgLmJhZGdlLWRvdC5iYWRnZS1saWdodCB7IGNvbG9yOiAjODA5MWE3OyB9CgouZGFyay1tb2RlIC5iYWRnZS1saWdodCwgLmRhcmstbW9kZSAuY29kZS1ibG9jayAuYnRuLCAuZGFyay1tb2RlIC5jb2RlLWJsb2NrIC5kdWFsLWxpc3Rib3ggLmR1YWwtbGlzdGJveF9fYnV0dG9uLCAuZHVhbC1saXN0Ym94IC5kYXJrLW1vZGUgLmNvZGUtYmxvY2sgLmR1YWwtbGlzdGJveF9fYnV0dG9uIHsgY29sb3I6ICNlYmVlZjI7IGJhY2tncm91bmQ6ICMzNDQzNTc7IGJvcmRlci1jb2xvcjogIzM0NDM1NzsgfQoKLmRhcmstbW9kZSAuYmFkZ2UtZGFyayB7IGNvbG9yOiAjMWYyYjNhOyBiYWNrZ3JvdW5kOiAjZTVlOWYyOyBib3JkZXItY29sb3I6ICNlNWU5ZjI7IH0KCi5kYXJrLW1vZGUgLmJ0bi1saWdodCwgLmRhcmstbW9kZSAuZHVhbC1saXN0Ym94IC5kdWFsLWxpc3Rib3hfX2J1dHRvbiwgLmR1YWwtbGlzdGJveCAuZGFyay1tb2RlIC5kdWFsLWxpc3Rib3hfX2J1dHRvbiB7IGNvbG9yOiAjZWJlZWYyOyBiYWNrZ3JvdW5kOiAjMzQ0MzU3OyBib3JkZXItY29sb3I6ICMzNDQzNTc7IH0KCi5kYXJrLW1vZGUgLmJ0bi1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTpob3ZlciwgLmRhcmstbW9kZSAuZHVhbC1saXN0Ym94IC5kdWFsLWxpc3Rib3hfX2J1dHRvbjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTpob3ZlciwgLmR1YWwtbGlzdGJveCAuZGFyay1tb2RlIC5kdWFsLWxpc3Rib3hfX2J1dHRvbjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTpob3ZlciwgLmRhcmstbW9kZSAuYnRuLWxpZ2h0Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmZvY3VzLCAuZGFyay1tb2RlIC5kdWFsLWxpc3Rib3ggLmR1YWwtbGlzdGJveF9fYnV0dG9uOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmZvY3VzLCAuZHVhbC1saXN0Ym94IC5kYXJrLW1vZGUgLmR1YWwtbGlzdGJveF9fYnV0dG9uOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmZvY3VzLCAuZGFyay1tb2RlIC5idG4tbGlnaHQ6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuZm9jdXMsIC5kYXJrLW1vZGUgLmR1YWwtbGlzdGJveCAuZHVhbC1saXN0Ym94X19idXR0b246bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuZm9jdXMsIC5kdWFsLWxpc3Rib3ggLmRhcmstbW9kZSAuZHVhbC1saXN0Ym94X19idXR0b246bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuZm9jdXMsIC5kYXJrLW1vZGUgLmJ0bi1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5kYXJrLW1vZGUgLmR1YWwtbGlzdGJveCAuZHVhbC1saXN0Ym94X19idXR0b246bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuZHVhbC1saXN0Ym94IC5kYXJrLW1vZGUgLmR1YWwtbGlzdGJveF9fYnV0dG9uOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmFjdGl2ZSwgLmRhcmstbW9kZSAuYnRuLWxpZ2h0Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSwgLmRhcmstbW9kZSAuZHVhbC1saXN0Ym94IC5kdWFsLWxpc3Rib3hfX2J1dHRvbjpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKS5hY3RpdmUsIC5kdWFsLWxpc3Rib3ggLmRhcmstbW9kZSAuZHVhbC1saXN0Ym94X19idXR0b246bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCkuYWN0aXZlIHsgYmFja2dyb3VuZDogIzQzNTc3MTsgYm9yZGVyLWNvbG9yOiAjNDM1NzcxOyBjb2xvcjogI2ViZWVmMjsgfQoKLmRhcmstbW9kZSAuYnRuLWRhcmsgeyBjb2xvcjogIzFmMmIzYTsgYmFja2dyb3VuZDogI2U1ZTlmMjsgYm9yZGVyLWNvbG9yOiAjZTVlOWYyOyB9CgouZGFyay1tb2RlIC5idG4tZGFyazpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTpob3ZlciwgLmRhcmstbW9kZSAuYnRuLWRhcms6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6Zm9jdXMsIC5kYXJrLW1vZGUgLmJ0bi1kYXJrOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmZvY3VzLCAuZGFyay1tb2RlIC5idG4tZGFyazpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTphY3RpdmUsIC5kYXJrLW1vZGUgLmJ0bi1kYXJrOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpLmFjdGl2ZSB7IGJhY2tncm91bmQ6ICNmZmY7IGJvcmRlci1jb2xvcjogI2ZmZjsgY29sb3I6ICMxZjJiM2E7IH0KCi5kYXJrLW1vZGUgLmJ0bi1vdXRsaW5lLWRhcmsgeyBib3JkZXItY29sb3I6ICNlNWU5ZjI7IGNvbG9yOiAjZTVlOWYyOyB9CgouZGFyay1tb2RlIC5idG4tb3V0bGluZS1kYXJrOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmhvdmVyIHsgYmFja2dyb3VuZDogI2U1ZTlmMjsgY29sb3I6ICMxZjJiM2E7IH0KCi5kYXJrLW1vZGUgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeSB7IGJvcmRlci1jb2xvcjogIzVhN2JhNTsgY29sb3I6ICM1YTdiYTU7IH0KCi5kYXJrLW1vZGUgLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTpob3ZlciB7IGJhY2tncm91bmQ6ICM1YTdiYTU7IGNvbG9yOiAjZmZmOyB9CgouZGFyay1tb2RlIC5idG4tb3V0bGluZS1saWdodCB7IGJvcmRlci1jb2xvcjogIzNjNGQ2MjsgY29sb3I6ICNiN2MyZDA7IH0KCi5kYXJrLW1vZGUgLmJ0bi1vdXRsaW5lLWxpZ2h0Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmhvdmVyIHsgYmFja2dyb3VuZDogIzNjNGQ2MjsgY29sb3I6ICNmZmY7IH0KCi5kYXJrLW1vZGUgLmJ0bi1kaW0uYnRuLXByaW1hcnkgeyBjb2xvcjogIzA5NzFmZTsgYmFja2dyb3VuZC1jb2xvcjogIzEyMmI0ZDsgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsgfQoKLmRhcmstbW9kZSAuYnRuLWRpbS5idG4tcHJpbWFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTpob3ZlciB7IGNvbG9yOiAjM2M4ZWZlOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMTkzYjZhOyBib3JkZXItY29sb3I6ICMxOTNiNmE7IH0KCi5kYXJrLW1vZGUgLmJ0bi1kaW0uYnRuLXNlY29uZGFyeSB7IGNvbG9yOiAjYWRiZGQyOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMWQyODM1OyBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OyB9CgouZGFyay1tb2RlIC5idG4tZGltLmJ0bi1zZWNvbmRhcnk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6aG92ZXIgeyBjb2xvcjogI2NlZDhlNDsgYmFja2dyb3VuZC1jb2xvcjogIzJhMzk0YzsgYm9yZGVyLWNvbG9yOiAjMmEzOTRjOyB9CgouZGFyay1tb2RlIC5idG4tZGltLmJ0bi1zdWNjZXNzIHsgY29sb3I6ICMxZWUwYWM7IGJhY2tncm91bmQtY29sb3I6ICMxNjNmM2U7IGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7IH0KCi5kYXJrLW1vZGUgLmJ0bi1kaW0uYnRuLXN1Y2Nlc3M6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6aG92ZXIgeyBjb2xvcjogIzRhZTdiZDsgYmFja2dyb3VuZC1jb2xvcjogIzFmNTk1ODsgYm9yZGVyLWNvbG9yOiAjMWY1OTU4OyB9CgouZGFyay1tb2RlIC5idG4tZGltLmJ0bi13YXJuaW5nIHsgY29sb3I6ICNmNGJkMGU7IGJhY2tncm91bmQtY29sb3I6ICMzZDM5MjI7IGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7IH0KCi5kYXJrLW1vZGUgLmJ0bi1kaW0uYnRuLXdhcm5pbmc6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6aG92ZXIgeyBjb2xvcjogI2Y2Y2EzZjsgYmFja2dyb3VuZC1jb2xvcjogIzU0NGUyZjsgYm9yZGVyLWNvbG9yOiAjNTQ0ZTJmOyB9CgouZGFyay1tb2RlIC5idG4tZGltLmJ0bi1pbmZvIHsgY29sb3I6ICMwOWMyZGU7IGJhY2tncm91bmQtY29sb3I6ICMxMjNhNDc7IGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7IH0KCi5kYXJrLW1vZGUgLmJ0bi1kaW0uYnRuLWluZm86bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6aG92ZXIgeyBjb2xvcjogIzI0ZGFmNjsgYmFja2dyb3VuZC1jb2xvcjogIzE5NTE2MzsgYm9yZGVyLWNvbG9yOiAjMTk1MTYzOyB9CgouZGFyay1tb2RlIC5idG4tZGltLmJ0bi1kYW5nZXIgeyBjb2xvcjogI2U4NTM0NzsgYmFja2dyb3VuZC1jb2xvcjogIzNhMjYyYzsgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsgfQoKLmRhcmstbW9kZSAuYnRuLWRpbS5idG4tZGFuZ2VyOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmhvdmVyIHsgY29sb3I6ICNlZTdkNzQ7IGJhY2tncm91bmQtY29sb3I6ICM1MDM0M2M7IGJvcmRlci1jb2xvcjogIzUwMzQzYzsgfQoKLmRhcmstbW9kZSAuYnRuLWRpbS5idG4tZ3JheSB7IGNvbG9yOiAjYjdjMmQwOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMjgzMTNkOyBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OyB9CgouZGFyay1tb2RlIC5idG4tZGltLmJ0bi1ncmF5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmhvdmVyIHsgY29sb3I6ICNkNmRjZTQ7IGJhY2tncm91bmQtY29sb3I6ICMzNjQyNTM7IGJvcmRlci1jb2xvcjogIzM2NDI1MzsgfQoKLmRhcmstbW9kZSAuYnRuLWRpbS5idG4tZGFyayB7IGNvbG9yOiAjZTVlOWYyOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMzIzYTQ1OyBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OyB9CgouZGFyay1tb2RlIC5idG4tZGltLmJ0bi1kYXJrOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmhvdmVyIHsgY29sb3I6IHdoaXRlOyBiYWNrZ3JvdW5kLWNvbG9yOiAjNDE0YjVhOyBib3JkZXItY29sb3I6ICM0MTRiNWE7IH0KCi5kYXJrLW1vZGUgLmJ0bi1kaW0uYnRuLWxpZ2h0LCAuZGFyay1tb2RlIC5kdWFsLWxpc3Rib3ggLmJ0bi1kaW0uZHVhbC1saXN0Ym94X19idXR0b24sIC5kdWFsLWxpc3Rib3ggLmRhcmstbW9kZSAuYnRuLWRpbS5kdWFsLWxpc3Rib3hfX2J1dHRvbiB7IGNvbG9yOiAjZWJlZWYyOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMjgzMTNkOyBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OyB9CgouZGFyay1tb2RlIC5idG4tZGltLmJ0bi1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTpob3ZlciwgLmRhcmstbW9kZSAuZHVhbC1saXN0Ym94IC5idG4tZGltLmR1YWwtbGlzdGJveF9fYnV0dG9uOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmhvdmVyLCAuZHVhbC1saXN0Ym94IC5kYXJrLW1vZGUgLmJ0bi1kaW0uZHVhbC1saXN0Ym94X19idXR0b246bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6aG92ZXIgeyBjb2xvcjogd2hpdGU7IGJhY2tncm91bmQtY29sb3I6ICMzNjQyNTM7IGJvcmRlci1jb2xvcjogIzM2NDI1MzsgfQoKLmRhcmstbW9kZSAuYnRuLWRpbS5idG4tbGlnaHRlciB7IGNvbG9yOiAjYjdjMmQwOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMjgzMTNkOyBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OyB9CgouZGFyay1tb2RlIC5idG4tZGltLmJ0bi1saWdodGVyOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmhvdmVyIHsgY29sb3I6ICNkNmRjZTQ7IGJhY2tncm91bmQtY29sb3I6ICMzNjQyNTM7IGJvcmRlci1jb2xvcjogIzM2NDI1MzsgfQoKLmRhcmstbW9kZSAuYnRuLWRpbS5idG4tb3V0bGluZS1wcmltYXJ5IHsgY29sb3I6ICMwOTcxZmU7IGJhY2tncm91bmQtY29sb3I6ICMxMjJiNGQ7IGJvcmRlci1jb2xvcjogIzEwM2E3MjsgfQoKLmRhcmstbW9kZSAuYnRuLWRpbS5idG4tb3V0bGluZS1wcmltYXJ5Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmhvdmVyIHsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICMwOTcxZmU7IGJvcmRlci1jb2xvcjogIzA5NzFmZTsgfQoKLmRhcmstbW9kZSAuYnRuLXdoaXRlLmJ0bi1vdXRsaW5lLXByaW1hcnk6bm90KC5idG4tZGltKTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTpob3ZlciwgLmRhcmstbW9kZSAuYnRuLXRyYW5zLmJ0bi1vdXRsaW5lLXByaW1hcnk6bm90KC5idG4tZGltKTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTpob3ZlciB7IGNvbG9yOiAjMDk3MWZlOyBiYWNrZ3JvdW5kOiAjMTIyYjRkOyB9CgouZGFyay1tb2RlIC5idG4tZGltLmJ0bi1vdXRsaW5lLXN1Y2Nlc3MgeyBjb2xvcjogIzFlZTBhYzsgYmFja2dyb3VuZC1jb2xvcjogIzE2M2YzZTsgYm9yZGVyLWNvbG9yOiAjMTg2MTU1OyB9CgouZGFyay1tb2RlIC5idG4tZGltLmJ0bi1vdXRsaW5lLXN1Y2Nlc3M6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6aG92ZXIgeyBjb2xvcjogI2ZmZjsgYmFja2dyb3VuZC1jb2xvcjogIzFlZTBhYzsgYm9yZGVyLWNvbG9yOiAjMWVlMGFjOyB9CgouZGFyay1tb2RlIC5idG4td2hpdGUuYnRuLW91dGxpbmUtc3VjY2Vzczpub3QoLmJ0bi1kaW0pOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmhvdmVyLCAuZGFyay1tb2RlIC5idG4tdHJhbnMuYnRuLW91dGxpbmUtc3VjY2Vzczpub3QoLmJ0bi1kaW0pOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmhvdmVyIHsgY29sb3I6ICMxZWUwYWM7IGJhY2tncm91bmQ6ICMxNjNmM2U7IH0KCi5kYXJrLW1vZGUgLmJ0bi1kaW0uYnRuLW91dGxpbmUtd2FybmluZyB7IGNvbG9yOiAjZjRiZDBlOyBiYWNrZ3JvdW5kLWNvbG9yOiAjM2QzOTIyOyBib3JkZXItY29sb3I6ICM2MzU0MWU7IH0KCi5kYXJrLW1vZGUgLmJ0bi1kaW0uYnRuLW91dGxpbmUtd2FybmluZzpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTpob3ZlciB7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjRiZDBlOyBib3JkZXItY29sb3I6ICNmNGJkMGU7IH0KCi5kYXJrLW1vZGUgLmJ0bi13aGl0ZS5idG4tb3V0bGluZS13YXJuaW5nOm5vdCguYnRuLWRpbSk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6aG92ZXIsIC5kYXJrLW1vZGUgLmJ0bi10cmFucy5idG4tb3V0bGluZS13YXJuaW5nOm5vdCguYnRuLWRpbSk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6aG92ZXIgeyBjb2xvcjogI2Y0YmQwZTsgYmFja2dyb3VuZDogIzNkMzkyMjsgfQoKLmRhcmstbW9kZSAuYnRuLWRpbS5idG4tb3V0bGluZS1pbmZvIHsgY29sb3I6ICMwOWMyZGU7IGJhY2tncm91bmQtY29sb3I6ICMxMjNhNDc7IGJvcmRlci1jb2xvcjogIzEwNTY2NjsgfQoKLmRhcmstbW9kZSAuYnRuLWRpbS5idG4tb3V0bGluZS1pbmZvOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmhvdmVyIHsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICMwOWMyZGU7IGJvcmRlci1jb2xvcjogIzA5YzJkZTsgfQoKLmRhcmstbW9kZSAuYnRuLXdoaXRlLmJ0bi1vdXRsaW5lLWluZm86bm90KC5idG4tZGltKTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTpob3ZlciwgLmRhcmstbW9kZSAuYnRuLXRyYW5zLmJ0bi1vdXRsaW5lLWluZm86bm90KC5idG4tZGltKTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTpob3ZlciB7IGNvbG9yOiAjMDljMmRlOyBiYWNrZ3JvdW5kOiAjMTIzYTQ3OyB9CgouZGFyay1tb2RlIC5idG4tZGltLmJ0bi1vdXRsaW5lLWRhbmdlciB7IGNvbG9yOiAjZTg1MzQ3OyBiYWNrZ3JvdW5kLWNvbG9yOiAjM2EyNjJjOyBib3JkZXItY29sb3I6ICM1ZTJmMzI7IH0KCi5kYXJrLW1vZGUgLmJ0bi1kaW0uYnRuLW91dGxpbmUtZGFuZ2VyOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmhvdmVyIHsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQtY29sb3I6ICNlODUzNDc7IGJvcmRlci1jb2xvcjogI2U4NTM0NzsgfQoKLmRhcmstbW9kZSAuYnRuLXdoaXRlLmJ0bi1vdXRsaW5lLWRhbmdlcjpub3QoLmJ0bi1kaW0pOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmhvdmVyLCAuZGFyay1tb2RlIC5idG4tdHJhbnMuYnRuLW91dGxpbmUtZGFuZ2VyOm5vdCguYnRuLWRpbSk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6aG92ZXIgeyBjb2xvcjogI2U4NTM0NzsgYmFja2dyb3VuZDogIzNhMjYyYzsgfQoKLmRhcmstbW9kZSAuYnRuLWRpbS5idG4tb3V0bGluZS1zZWNvbmRhcnkgeyBjb2xvcjogIzZiODlhZTsgYmFja2dyb3VuZC1jb2xvcjogIzFkMjgzNTsgYm9yZGVyLWNvbG9yOiAjMmMzYzUxOyB9CgouZGFyay1tb2RlIC5idG4tZGltLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTpob3ZlciB7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjNmI4OWFlOyBib3JkZXItY29sb3I6ICM2Yjg5YWU7IH0KCi5kYXJrLW1vZGUgLmJ0bi13aGl0ZS5idG4tb3V0bGluZS1zZWNvbmRhcnk6bm90KC5idG4tZGltKTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTpob3ZlciwgLmRhcmstbW9kZSAuYnRuLXRyYW5zLmJ0bi1vdXRsaW5lLXNlY29uZGFyeTpub3QoLmJ0bi1kaW0pOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmhvdmVyIHsgY29sb3I6ICM2Yjg5YWU7IGJhY2tncm91bmQ6ICMxZDI4MzU7IH0KCi5kYXJrLW1vZGUgLmJ0bi1kaW0uYnRuLW91dGxpbmUtZ3JheSB7IGNvbG9yOiAjYjdjMmQwOyBiYWNrZ3JvdW5kLWNvbG9yOiAjMjgzMTNkOyBib3JkZXItY29sb3I6ICMzYTQ1NTM7IH0KCi5kYXJrLW1vZGUgLmJ0bi1kaW0uYnRuLW91dGxpbmUtZ3JheTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTpob3ZlciB7IGNvbG9yOiAjMTAxOTI0OyBiYWNrZ3JvdW5kLWNvbG9yOiAjYjdjMmQwOyBib3JkZXItY29sb3I6ICNiN2MyZDA7IH0KCi5kYXJrLW1vZGUgLmJ0bi13aGl0ZS5idG4tb3V0bGluZS1ncmF5Om5vdCguYnRuLWRpbSk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6aG92ZXIsIC5kYXJrLW1vZGUgLmJ0bi10cmFucy5idG4tb3V0bGluZS1ncmF5Om5vdCguYnRuLWRpbSk6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6aG92ZXIgeyBjb2xvcjogI2I3YzJkMDsgYmFja2dyb3VuZDogIzI4MzEzZDsgfQoKLmRhcmstbW9kZSAuYnRuLWRpbS5idG4tb3V0bGluZS1kYXJrIHsgY29sb3I6ICNlNWU5ZjI7IGJhY2tncm91bmQtY29sb3I6ICMzMjNhNDU7IGJvcmRlci1jb2xvcjogIzRkNTY2MjsgfQoKLmRhcmstbW9kZSAuYnRuLWRpbS5idG4tb3V0bGluZS1kYXJrOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmhvdmVyIHsgY29sb3I6ICMxMDE5MjQ7IGJhY2tncm91bmQtY29sb3I6ICNlNWU5ZjI7IGJvcmRlci1jb2xvcjogI2U1ZTlmMjsgfQoKLmRhcmstbW9kZSAuYnRuLXdoaXRlLmJ0bi1vdXRsaW5lLWRhcms6bm90KC5idG4tZGltKTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTpob3ZlciwgLmRhcmstbW9kZSAuYnRuLXRyYW5zLmJ0bi1vdXRsaW5lLWRhcms6bm90KC5idG4tZGltKTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTpob3ZlciB7IGNvbG9yOiAjZTVlOWYyOyBiYWNrZ3JvdW5kOiAjMzIzYTQ1OyB9CgouZGFyay1tb2RlIC5idG4tZGltLmJ0bi1vdXRsaW5lLWxpZ2h0IHsgY29sb3I6ICM4MDkxYTc7IGJhY2tncm91bmQtY29sb3I6ICMxYjI1MzE7IGJvcmRlci1jb2xvcjogIzNhNDU1MzsgfQoKLmRhcmstbW9kZSAuYnRuLWRpbS5idG4tb3V0bGluZS1saWdodDpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTpob3ZlciB7IGNvbG9yOiAjZmZmOyBiYWNrZ3JvdW5kLWNvbG9yOiAjODA5MWE3OyBib3JkZXItY29sb3I6ICM4MDkxYTc7IH0KCi5kYXJrLW1vZGUgLmJ0bi13aGl0ZS5idG4tb3V0bGluZS1saWdodDpub3QoLmJ0bi1kaW0pOm5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmhvdmVyLCAuZGFyay1tb2RlIC5idG4tdHJhbnMuYnRuLW91dGxpbmUtbGlnaHQ6bm90KC5idG4tZGltKTpub3QoOmRpc2FibGVkKTpub3QoLmRpc2FibGVkKTpob3ZlciB7IGNvbG9yOiAjODA5MWE3OyBiYWNrZ3JvdW5kOiAjMWIyNTMxOyB9CgouZGFyay1tb2RlIC5idG4tZGltLmJ0bi1vdXRsaW5lLWxpZ2h0Om5vdCg6ZGlzYWJsZWQpOm5vdCguZGlzYWJsZWQpOmhvdmVyLCAuZGFyay1tb2RlIC5idG4td2hpdGUuYnRuLW91dGxpbmUtbGlnaHQ6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6aG92ZXIsIC5kYXJrLW1vZGUgLmJ0bi1kaW0uYnRuLW91dGxpbmUtbGlnaHQ6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuZGFyay1tb2RlIC5idG4td2hpdGUuYnRuLW91dGxpbmUtbGlnaHQ6bm90KDpkaXNhYmxlZCk6bm90KC5kaXNhYmxlZCk6YWN0aXZlLCAuZGFyay1tb2RlIC5zaG93ID4gLmJ0bi13aGl0ZS5idG4tb3V0bGluZS1saWdodC5kcm9wZG93bi10b2dnbGUgeyBiYWNrZ3JvdW5kOiAjM2M0ZDYyOyBib3JkZXItY29sb3I6ICMzYzRkNjI7IGNvbG9yOiAjZmZmOyB9CgouZGFyay1tb2RlIC5idG4td2hpdGUsIC5kYXJrLW1vZGUgLmJ0bi13aGl0ZS5idG4tZGltLCAuZGFyay1tb2RlIC5idG4td2hpdGUuYnRuLW91dGxpbmUtbGlnaHQgeyBiYWNrZ3JvdW5kOiAjMTQxYzI2OyB9CgouZGFyay1tb2RlIC5idG4tb3V0bGluZS1saWdodDpmb2N1cywgLmRhcmstbW9kZSAuYnRuLW91dGxpbmUtbGlnaHQuZm9jdXMgeyBib3gtc2hhZG93OiAwIDAgMCAwLjJyZW0gcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA3KSAhaW1wb3J0YW50OyB9CgouZGFyay1tb2RlIC5ib3JkZXIsIC5kYXJrLW1vZGUgLmJvcmRlci1ib3R0b20sIC5kYXJrLW1vZGUgLmJvcmRlci10b3AsIC5kYXJrLW1vZGUgLmJvcmRlci1sZWZ0LCAuZGFyay1tb2RlIC5ib3JkZXItcmlnaHQsIC5kYXJrLW1vZGUgLmRyb3Bkb3duLWlubmVyICsgLmRyb3Bkb3duLWlubmVyLCAuZGFyay1tb2RlIC5kcm9wZG93bi1oZWFkLCAuZGFyay1tb2RlIC5kcm9wZG93bi1mb290LCAuZGFyay1tb2RlIC5wcmV2aWV3LWhyLCAuZGFyay1tb2RlIC5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1zZWxlY3Rpb24tLXNpbmdsZSwgLmRhcmstbW9kZSAucWwtcGlja2VyLW9wdGlvbnMsIC5kYXJrLW1vZGUgLmRyb3B6b25lLCAuZGFyay1tb2RlIC5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1zZWxlY3Rpb24tLW11bHRpcGxlLCAuZGFyay1tb2RlIC5zZWxlY3QyLWRyb3Bkb3duLCAuZGFyay1tb2RlIC5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1zZWFyY2gtLWRyb3Bkb3duIC5zZWxlY3QyLXNlYXJjaF9fZmllbGQsIC5kYXJrLW1vZGUgLnVpLXRpbWVwaWNrZXItc3RhbmRhcmQsIC5kYXJrLW1vZGUgLnFsLXRvb2xiYXIsIC5kYXJrLW1vZGUgLnFsLWNvbnRhaW5lciwgLmRhcmstbW9kZSAubm90ZS1lZGl0b3IsIC5kYXJrLW1vZGUgLm5vdGUtdG9vbGJhciwgLmRhcmstbW9kZSAudG94IC50b3gtbWVudWJhciwgLmRhcmstbW9kZSAudG94LXRvb2xiYXItb3ZlcmxvcmQsIC5kYXJrLW1vZGUgLnRveC10aW55bWNlLCAuZGFyay1tb2RlIC50b3ggLnRveC10b29sYmFyX19ncm91cDpub3QoOmxhc3Qtb2YtdHlwZSksIC5kYXJrLW1vZGUgLnRveCAudG94LXN0YXR1c2JhciwgLmRhcmstbW9kZSAudG94IC50b3gtbWVudSwgLmRhcmstbW9kZSAudG94LXRvb2xiYXIsIC5kYXJrLW1vZGUgLnRveC1lZGl0b3ItaGVhZGVyLCAuZGFyay1tb2RlIC50b3ggLnRveC10b29sYmFyLCAuZGFyay1tb2RlIC50b3ggLnRveC10b29sYmFyX19wcmltYXJ5LCAuZGFyay1tb2RlIC50b3ggLnRveC10b29sYmFyX19vdmVyZmxvdywgLmRhcmstbW9kZSAudG94IC50b3gtY29sbGVjdGlvbi0tbGlzdCAudG94LWNvbGxlY3Rpb25fX2dyb3VwLCAuZGFyay1tb2RlIC5ub3RlLWJ0bi1ncm91cCAubm90ZS1idG4sIC5kYXJrLW1vZGUgLm5vdGUtc3RhdHVzYmFyLCAuZGFyay1tb2RlIC5uay1jb2RlLXByZXZpZXctYm94LCAuZGFyay1tb2RlIC5zd2FsMi1mb290ZXIsIC5kYXJrLW1vZGUgLmV4YW1wbGUtYm9yZGVyLWFsbCA+IGRpdiwgLmRhcmstbW9kZSAuYnRuLXRvb2xiYXItc2VwLCAuZGFyay1tb2RlIC5wYWdlLWxpbmssIC5kYXJrLW1vZGUgLnRhYmxlIHRoLCAuZGFyay1tb2RlIC50YWJsZSB0ZCwgLmRhcmstbW9kZSAudGFibGUtYm9yZGVyZWQsIC5kYXJrLW1vZGUgLnRhYmxlLWJvcmRlcmVkIHRoLCAuZGFyay1tb2RlIC50YWJsZS1ib3JkZXJlZCB0ZCwgLmRhcmstbW9kZSAuZGF0YXRhYmxlLXdyYXAsIC5kYXJrLW1vZGUgLm5rLXRiLWhlYWQgLm5rLXRiLWNvbCwgLmRhcmstbW9kZSAubGlzdC1ncm91cC1pdGVtLCAuZGFyay1tb2RlIC5tb2RhbC1oZWFkZXIsIC5kYXJrLW1vZGUgLm1vZGFsLWZvb3RlciwgLmRhcmstbW9kZSAucG9wb3ZlciwgLmRhcmstbW9kZSAucG9wb3Zlci1oZWFkZXIsIC5kYXJrLW1vZGUgLnRhZ2lmeV9fdGFnID4gZGl2OjpiZWZvcmUsIC5kYXJrLW1vZGUgLnRhZ2lmeV9fdGFnOmhvdmVyOm5vdChbcmVhZG9ubHldKSBkaXY6OmJlZm9yZSwgLmRhcmstbW9kZSAubmstdGItaXRlbTpub3QoOmxhc3QtY2hpbGQpIC5uay10Yi1jb2wsIC5kYXJrLW1vZGUgLm5rLWFjdGl2aXR5LWl0ZW06bm90KDpsYXN0LWNoaWxkKSwgLmRhcmstbW9kZSAubmstc3VwcG9ydC1pdGVtOm5vdCg6bGFzdC1jaGlsZCksIC5kYXJrLW1vZGUgLmNhcmQtaW5uZXItZ3JvdXAgLmNhcmQtaW5uZXI6bm90KDpsYXN0LWNoaWxkKSwgLmRhcmstbW9kZSAuY2FyZC1hc2lkZSwgLmRhcmstbW9kZSAubmF2LXRhYnMsIC5kYXJrLW1vZGUgLmRpdmlkZXIsIC5kYXJrLW1vZGUgLmRhdGEtaXRlbTpub3QoOmxhc3QtY2hpbGQpLCAuZGFyay1tb2RlIC5uay1mb290ZXIsIC5kYXJrLW1vZGUgLm5hdi1zd2l0Y2gtczIgLm5hdi1saW5rLCAuZGFyay1tb2RlIC5sYW5ndWFnZS1saXN0IGxpOm5vdCg6bGFzdC1jaGlsZCkgLmxhbmd1YWdlLWl0ZW0sIC5kYXJrLW1vZGUgLnVzZXItYXZhdGFyLW11bHRpcGxlIC51c2VyLWF2YXRhciB7IGJvcmRlci1jb2xvcjogIzFkMmQ0MCAhaW1wb3J0YW50OyB9CgouZGFyay1tb2RlIC5jYXJkLCAuZGFyay1tb2RlIC5jb2RlLWJsb2NrLCAuZGFyay1tb2RlIC5hbGVydC1wcm8sIC5kYXJrLW1vZGUgLm1vZGFsLWNvbnRlbnQsIC5kYXJrLW1vZGUgLnRvYXN0LCAuZGFyay1tb2RlIC50b2FzdHIgeyBib3gtc2hhZG93OiAwcHggMXB4IDNweCAwcHggcmdiYSgwLCAwLCAwLCAwLjQpOyB9CgouZGFyay1tb2RlIC50b2FzdC1oZWFkZXIgeyBjb2xvcjogIzgwOTRhZTsgfQoKLmRhcmstbW9kZSAudG9hc3QsIC5kYXJrLW1vZGUgLnRvYXN0LWhlYWRlciB7IGJvcmRlci1jb2xvcjogIzIwMzI0NzsgYmFja2dyb3VuZDogIzE4MjEyZDsgfQoKLmRhcmstbW9kZSAudGFibGUtYWN0aXZlLCAuZGFyay1tb2RlIC50YWJsZS1hY3RpdmUgPiB0aCwgLmRhcmstbW9kZSAudGFibGUtYWN0aXZlID4gdGQsIC5kYXJrLW1vZGUgLmNvZGUtYmxvY2sgLnByZXR0eXByaW50LCAuZGFyay1tb2RlIC5saXN0LWdyb3VwLWl0ZW0sIC5kYXJrLW1vZGUgLmV4YW1wbGUtc3BhY2luZy1wZCA+IGRpdiA+IHNwYW4sIC5kYXJrLW1vZGUgLmN1c3RvbS1maWxlLWxhYmVsOjphZnRlciwgLmRhcmstbW9kZSAucWwtcGlja2VyLW9wdGlvbnMsIC5kYXJrLW1vZGUgLmRhdGEtbW9yZTpiZWZvcmUsIC5kYXJrLW1vZGUgLnNlYXJjaC13cmFwLCAuZGFyay1tb2RlIC5mb3JtLWNvbnRyb2wsIC5kYXJrLW1vZGUgLmR1YWwtbGlzdGJveCAuZHVhbC1saXN0Ym94X19zZWFyY2gsIC5kdWFsLWxpc3Rib3ggLmRhcmstbW9kZSAuZHVhbC1saXN0Ym94X19zZWFyY2gsIC5kYXJrLW1vZGUgLmlucHV0LW1haWwsIC5kYXJrLW1vZGUgLmRyb3B6b25lLCAuZGFyay1tb2RlIC51aS1zdGF0ZS1ob3ZlciwgLmRhcmstbW9kZSAubm90ZS1lZGl0b3Iubm90ZS1mcmFtZSAubm90ZS1zdGF0dXNiYXIsIC5kYXJrLW1vZGUgLm5vdGUtZWRpdG9yLm5vdGUtYWlyZnJhbWUgLm5vdGUtc3RhdHVzYmFyLCAuZGFyay1tb2RlIC5zd2FsMi1wb3B1cCwgLmRhcmstbW9kZSAuc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQgLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1oaWdobGlnaHRlZFthcmlhLXNlbGVjdGVkXSwgLmRhcmstbW9kZSAuc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQgLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uW2FyaWEtc2VsZWN0ZWQ9dHJ1ZV0sIC5kYXJrLW1vZGUgLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0IC5zZWxlY3QyLXNlbGVjdGlvbi0tbXVsdGlwbGUgLnNlbGVjdDItc2VsZWN0aW9uX19jaG9pY2UsIC5kYXJrLW1vZGUgLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0IC5zZWxlY3QyLXNlYXJjaC0tZHJvcGRvd24gLnNlbGVjdDItc2VhcmNoX19maWVsZCwgLmRhcmstbW9kZSAuZXhhbXBsZS13aWR0aCA+IGRpdiwgLmRhcmstbW9kZSAuZXhhbXBsZS1oZWlnaHQgPiBkaXYsIC5kYXJrLW1vZGUgLmV4YW1wbGUtYm9yZGVyID4gZGl2LCAuZGFyay1tb2RlIC5leGFtcGxlLXNwYWNpbmcgPiBkaXYgeyBiYWNrZ3JvdW5kOiAjMTAxOTI0OyB9CgouZGFyay1tb2RlIC50b3ggLnRveC10YnRuOmhvdmVyLCAuZGFyay1tb2RlIC50b3ggLnRveC1jb2xsZWN0aW9uLS1saXN0IC50b3gtY29sbGVjdGlvbl9faXRlbS0tYWN0aXZlLCAuZGFyay1tb2RlIC50b3ggLnRveC1tYnRuLS1hY3RpdmUsIC5kYXJrLW1vZGUgLnRveCAudG94LW1idG46Zm9jdXM6bm90KDpkaXNhYmxlZCksIC5kYXJrLW1vZGUgLnRveCAudG94LW1idG46aG92ZXI6bm90KDpkaXNhYmxlZCk6bm90KC50b3gtbWJ0bi0tYWN0aXZlKSwgLmRhcmstbW9kZSAudG94IC50b3gtY29sbGVjdGlvbi0tbGlzdCAudG94LWNvbGxlY3Rpb25fX2l0ZW0tLWVuYWJsZWQgeyBiYWNrZ3JvdW5kOiAjMGEwZjE2OyB9CgouZGFyay1tb2RlIC5pY29uLW92ZXJsYXAgbGkgeyBib3JkZXItY29sb3I6ICMxNDFjMjY7IH0KCi5kYXJrLW1vZGUgLmNhcmQsIC5kYXJrLW1vZGUgLmthbmJhbi1hZGQtdGFzaywgLmRhcmstbW9kZSAua2FuYmFuLWJvYXJkLWhlYWRlciwgLmRhcmstbW9kZSAua2FuYmFuLWl0ZW0geyBiYWNrZ3JvdW5kOiAjMTQxYzI2OyB9CgouZGFyay1tb2RlIC5hY2NvcmRpb24sIC5kYXJrLW1vZGUgLmZvcm0tY2xpcCwgLmRhcmstbW9kZSAuZm9ybS10ZXh0LWhpbnQsIC5kYXJrLW1vZGUgLmNhcmQtYXNpZGUsIC5kYXJrLW1vZGUgLmNvZGUtYmxvY2ssIC5kYXJrLW1vZGUgLmFsZXJ0LXBybywgLmRhcmstbW9kZSAubW9kYWwtY29udGVudCwgLmRhcmstbW9kZSAudG9hc3RyLCAuZGFyay1tb2RlIC50b2dnbGUtY29udGVudCwgLmRhcmstbW9kZSAubmF2LXN3aXRjaC1zMiAubmF2LWxpbms6aG92ZXIsIC5kYXJrLW1vZGUgLm5hdi1zd2l0Y2gtczIgLm5hdi1saW5rOmZvY3VzLCAuZGFyay1tb2RlIC5uYXYtc3dpdGNoLXMyIC5uYXYtbGluay5hY3RpdmUsIC5kYXJrLW1vZGUgLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0IC5zZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlLCAuZGFyay1tb2RlIC5zZWxlY3QyLWNvbnRhaW5lci0tZGVmYXVsdCAuc2VsZWN0Mi1zZWxlY3Rpb24tLW11bHRpcGxlLCAuZGFyay1tb2RlIC5zZWxlY3QyLWRyb3Bkb3duLCAuZGFyay1tb2RlIC5jdXN0b20tZmlsZS1sYWJlbCwgLmRhcmstbW9kZSAuY3VzdG9tLXNlbGVjdCwgLmRhcmstbW9kZSAucG9wb3ZlciwgLmRhcmstbW9kZSAuc2VhcmNoLXdyYXAsIC5kYXJrLW1vZGUgLmZvcm0tY29udHJvbCwgLmRhcmstbW9kZSAuZHVhbC1saXN0Ym94IC5kdWFsLWxpc3Rib3hfX3NlYXJjaCwgLmR1YWwtbGlzdGJveCAuZGFyay1tb2RlIC5kdWFsLWxpc3Rib3hfX3NlYXJjaCwgLmRhcmstbW9kZSAuZm9ybS1sYWJlbC1vdXRsaW5lZCwgLmRhcmstbW9kZSAuaW5wdXQtbWFpbCwgLmRhcmstbW9kZSAucGFnZS1saW5rLCAuZGFyay1tb2RlIC51aS10aW1lcGlja2VyLXN0YW5kYXJkLCAuZGFyay1tb2RlIC5ub3RlLWVkaXRvciwgLmRhcmstbW9kZSAubm90ZS10b29sYmFyLCAuZGFyay1tb2RlIC50b3ggLnRveC1lZGl0LWFyZWFfX2lmcmFtZSwgLmRhcmstbW9kZSAudG94IC50b3gtbWVudWJhciwgLmRhcmstbW9kZSAudG94LXRvb2xiYXItb3ZlcmxvcmQsIC5kYXJrLW1vZGUgLnRveCAudG94LXRvb2xiYXIsIC5kYXJrLW1vZGUgLnRveCAudG94LXRvb2xiYXJfX3ByaW1hcnksIC5kYXJrLW1vZGUgLnRveCAudG94LXRvb2xiYXJfX292ZXJmbG93LCAuZGFyay1tb2RlIC50b3ggLnRveC1zdGF0dXNiYXIsIC5kYXJrLW1vZGUgLnRveCAudG94LW1lbnUsIC5kYXJrLW1vZGUgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXksIC5kYXJrLW1vZGUgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXk6aG92ZXIsIC5kYXJrLW1vZGUgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXkuZGlzYWJsZWQsIC5kYXJrLW1vZGUgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQudG9kYXkuZGlzYWJsZWQ6aG92ZXIsIC5kYXJrLW1vZGUgLmRhdGVwaWNrZXIgdGFibGUgdHIgdGQuZGF5OmhvdmVyLCAuZGFyay1tb2RlIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmRheS5mb2N1c2VkLCAuZGFyay1tb2RlIC5kYXRlcGlja2VyIC5kYXRlcGlja2VyLXN3aXRjaDpob3ZlciwgLmRhcmstbW9kZSAuZGF0ZXBpY2tlciAucHJldjpob3ZlciwgLmRhcmstbW9kZSAuZGF0ZXBpY2tlciAubmV4dDpob3ZlciwgLmRhcmstbW9kZSAuZGF0ZXBpY2tlciB0Zm9vdCB0ciB0aDpob3ZlciB7IGJhY2tncm91bmQ6ICMxNDFjMjYgIWltcG9ydGFudDsgfQoKLmRhcmstbW9kZSAuc2VhcmNoLXdyYXAuc2VhcmNoLXdyYXAtZXh0ZW5kLCAuZGFyay1tb2RlIC5zZWFyY2gtd3JhcC5zZWFyY2gtd3JhcC1leHRlbmQgLmZvcm0tY29udHJvbCwgLmRhcmstbW9kZSAuc2VhcmNoLXdyYXAuc2VhcmNoLXdyYXAtZXh0ZW5kIC5kdWFsLWxpc3Rib3ggLmR1YWwtbGlzdGJveF9fc2VhcmNoLCAuZHVhbC1saXN0Ym94IC5kYXJrLW1vZGUgLnNlYXJjaC13cmFwLnNlYXJjaC13cmFwLWV4dGVuZCAuZHVhbC1saXN0Ym94X19zZWFyY2ggeyBiYWNrZ3JvdW5kOiAjMTAxOTI0ICFpbXBvcnRhbnQ7IH0KCi5kYXJrLW1vZGUgLmNsaXBib2FyZC1zdWNjZXNzLW1lc3NhZ2UgeyBiYWNrZ3JvdW5kOiByZ2JhKDIwLCAyOCwgMzgsIDAuOSk7IH0KCi5kYXJrLW1vZGUgLnRhZ2lmeV9fdGFnID4gZGl2OjpiZWZvcmUsIC5kYXJrLW1vZGUgLnRhZ2lmeV9fdGFnOmhvdmVyOm5vdChbcmVhZG9ubHldKSBkaXY6OmJlZm9yZSB7IGJveC1zaGFkb3c6IDAgMCAwIDEuMWVtICMxMDE5MjQgaW5zZXQ7IH0KCi5kYXJrLW1vZGUgLnBvcG92ZXItaGVhZGVyIHsgYmFja2dyb3VuZC1jb2xvcjogIzFhMjQzMDsgfQoKLmRhcmstbW9kZSAucG9wb3ZlciB7IGJveC1zaGFkb3c6IDAgMCAyMHB4IC01cHggcmdiYSgwLCAwLCAwLCAwLjYpOyB9CgouZGFyay1tb2RlIC5icy1wb3BvdmVyLWJvdHRvbSAucG9wb3Zlci1oZWFkZXI6OmJlZm9yZSwgLmRhcmstbW9kZSAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0iYm90dG9tIl0gLnBvcG92ZXItaGVhZGVyOjpiZWZvcmUsIC5kYXJrLW1vZGUgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImJvdHRvbSJdIC5wb3BvdmVyLWhlYWRlcjo6YmVmb3JlIHsgYm9yZGVyLWNvbG9yOiAjMWQyZDQwOyB9CgouZGFyay1tb2RlIC5icy1wb3BvdmVyLXRvcCA+IC5hcnJvdzo6YmVmb3JlLCAuZGFyay1tb2RlIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJ0b3AiXSA+IC5hcnJvdzo6YmVmb3JlLCAuZGFyay1tb2RlIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJ0b3AiXSA+IC5hcnJvdzo6YmVmb3JlIHsgYm9yZGVyLXRvcC1jb2xvcjogIzFkMmQ0MDsgfQoKLmRhcmstbW9kZSAuYnMtcG9wb3Zlci10b3AgPiAuYXJyb3c6OmFmdGVyLCAuZGFyay1tb2RlIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJ0b3AiXSA+IC5hcnJvdzo6YWZ0ZXIsIC5kYXJrLW1vZGUgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InRvcCJdID4gLmFycm93OjphZnRlciB7IGJvcmRlci10b3AtY29sb3I6ICMxNDFjMjY7IH0KCi5kYXJrLW1vZGUgLmJzLXBvcG92ZXItYm90dG9tID4gLmFycm93OjpiZWZvcmUsIC5kYXJrLW1vZGUgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImJvdHRvbSJdID4gLmFycm93OjpiZWZvcmUsIC5kYXJrLW1vZGUgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImJvdHRvbSJdID4gLmFycm93OjpiZWZvcmUgeyBib3JkZXItYm90dG9tLWNvbG9yOiAjMWQyZDQwOyB9CgouZGFyay1tb2RlIC5icy1wb3BvdmVyLWJvdHRvbSA+IC5hcnJvdzo6YWZ0ZXIsIC5kYXJrLW1vZGUgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImJvdHRvbSJdID4gLmFycm93OjphZnRlciwgLmRhcmstbW9kZSAuYnMtcG9wb3Zlci1hdXRvW3gtcGxhY2VtZW50Xj0iYm90dG9tIl0gPiAuYXJyb3c6OmFmdGVyIHsgYm9yZGVyLWJvdHRvbS1jb2xvcjogIzE0MWMyNjsgfQoKLmRhcmstbW9kZSAuYnMtcG9wb3Zlci1yaWdodCA+IC5hcnJvdzo6YmVmb3JlLCAuZGFyay1tb2RlIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJyaWdodCJdID4gLmFycm93OjpiZWZvcmUsIC5kYXJrLW1vZGUgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InJpZ2h0Il0gPiAuYXJyb3c6OmJlZm9yZSB7IGJvcmRlci1yaWdodC1jb2xvcjogIzFkMmQ0MDsgfQoKLmRhcmstbW9kZSAuYnMtcG9wb3Zlci1yaWdodCA+IC5hcnJvdzo6YWZ0ZXIsIC5kYXJrLW1vZGUgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49InJpZ2h0Il0gPiAuYXJyb3c6OmFmdGVyLCAuZGFyay1tb2RlIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJyaWdodCJdID4gLmFycm93OjphZnRlciB7IGJvcmRlci1yaWdodC1jb2xvcjogIzE0MWMyNjsgfQoKLmRhcmstbW9kZSAuYnMtcG9wb3Zlci1sZWZ0ID4gLmFycm93OjpiZWZvcmUsIC5kYXJrLW1vZGUgLmJzLXBvcG92ZXItYXV0b1t4LXBsYWNlbWVudF49ImxlZnQiXSA+IC5hcnJvdzo6YmVmb3JlLCAuZGFyay1tb2RlIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJsZWZ0Il0gPiAuYXJyb3c6OmJlZm9yZSB7IGJvcmRlci1sZWZ0LWNvbG9yOiAjMWQyZDQwOyB9CgouZGFyay1tb2RlIC5icy1wb3BvdmVyLWxlZnQgPiAuYXJyb3c6OmFmdGVyLCAuZGFyay1tb2RlIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJsZWZ0Il0gPiAuYXJyb3c6OmFmdGVyLCAuZGFyay1tb2RlIC5icy1wb3BvdmVyLWF1dG9beC1wbGFjZW1lbnRePSJsZWZ0Il0gPiAuYXJyb3c6OmFmdGVyIHsgYm9yZGVyLWxlZnQtY29sb3I6ICMxNDFjMjY7IH0KCi5kYXJrLW1vZGUgLnRlYW0taW5mbyBsaSBzcGFuOmxhc3QtY2hpbGQsIC5kYXJrLW1vZGUgLnRlYW0tc3RhdGlzdGljcyBsaSBzcGFuOmZpcnN0LWNoaWxkLCAuZGFyay1tb2RlIC5wcm9qZWN0LXByb2dyZXNzLXBlcmNlbnQsIC5kYXJrLW1vZGUgLmthbmJhbi10aXRsZS1jb250ZW50IC50aXRsZSwgLmRhcmstbW9kZSAuY2FyZC10b29scy1uYXYgbGkgYTpob3ZlciwgLmRhcmstbW9kZSAuY2FyZC10b29scy1uYXYgbGkgYS5hY3RpdmUsIC5kYXJrLW1vZGUgLmNhcmQtdG9vbHMtbmF2IGxpLmFjdGl2ZSBhLCAuZGFyay1tb2RlIC5jYXJkLWFtb3VudCAuYW1vdW50LCAuZGFyay1tb2RlIC5hY2NvcmRpb24taGVhZCAudGl0bGUsIC5kYXJrLW1vZGUgLmN1c3RvbS1maWxlLWxhYmVsOjphZnRlciwgLmRhcmstbW9kZSAuaW5wdXQtbWFpbCwgLmRhcmstbW9kZSAuZm9ybS1jb250cm9sLCAuZGFyay1tb2RlIC5kdWFsLWxpc3Rib3ggLmR1YWwtbGlzdGJveF9fc2VhcmNoLCAuZHVhbC1saXN0Ym94IC5kYXJrLW1vZGUgLmR1YWwtbGlzdGJveF9fc2VhcmNoLCAuZGFyay1tb2RlIC5mb3JtLWNvbnRyb2w6Zm9jdXMsIC5kYXJrLW1vZGUgLmR1YWwtbGlzdGJveCAuZHVhbC1saXN0Ym94X19zZWFyY2g6Zm9jdXMsIC5kdWFsLWxpc3Rib3ggLmRhcmstbW9kZSAuZHVhbC1saXN0Ym94X19zZWFyY2g6Zm9jdXMsIC5kYXJrLW1vZGUgLmZvcm0tbGFiZWwsIC5kYXJrLW1vZGUgLmZvcm0tbGFiZWwtb3V0bGluZWQsIC5kYXJrLW1vZGUgLmlucHV0LWdyb3VwLXRleHQsIC5kYXJrLW1vZGUgLnRhYmxlIC50aGVhZC1saWdodCB0aCwgLmRhcmstbW9kZSAuY2xvc2UsIC5kYXJrLW1vZGUgLmNsb3NlOmhvdmVyLCAuZGFyay1tb2RlIC51c2VyLW5hbWUsIC5kYXJrLW1vZGUgLm5rLW5ld3MtdGV4dCBwLCAuZGFyay1tb2RlIC5kYXRhLWl0ZW06aG92ZXIgLmljb24sIC5kYXJrLW1vZGUgLmFjY29yZGlvbi1pY29uIHsgY29sb3I6ICNmZmYgIWltcG9ydGFudDsgfQoKLmRhcmstbW9kZSAuY2xvc2UgeyB0ZXh0LXNoYWRvdzogMCAxcHggMCAjMTQxYzI2OyB9CgouZGFyay1tb2RlIC5jbG9zZTpmb2N1cyB7IG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDsgfQoKLmRhcmstbW9kZSAubmstYmxvY2stZGVzLCAuZGFyay1tb2RlIC5jYXJkLXRpdGxlIHAsIC5kYXJrLW1vZGUgLm5rLXNhbGUtZGF0YSAuc3ViLXRpdGxlLCAuZGFyay1tb2RlIC5saW5rLWNoZWNrIGxpIHNwYW4sIC5kYXJrLW1vZGUgLmRhdGEtdmFsdWUsIC5kYXJrLW1vZGUgLmN1c3RvbS1maWxlLWxhYmVsLCAuZGFyay1tb2RlIC5jdXN0b20tc2VsZWN0LCAuZGFyay1tb2RlIC5mb3JtLWNvbnRyb2wtc2VsZWN0LW11bHRpcGxlIC5jdXN0b20tc2VsZWN0IG9wdGlvbiwgLmRhcmstbW9kZSAuc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUgLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCwgLmRhcmstbW9kZSAuc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQgLnNlbGVjdDItc2VsZWN0aW9uLS1tdWx0aXBsZSAuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkLCAuZGFyay1tb2RlIC51aS10aW1lcGlja2VyLXN0YW5kYXJkIGEsIC5kYXJrLW1vZGUgLm5vdGUtcGxhY2Vob2xkZXIsIC5kYXJrLW1vZGUgW2NsYXNzKj0ia25vYiJdLCAuZGFyay1tb2RlIC50b3ggLnRveC10YnRuOmhvdmVyLCAuZGFyay1tb2RlIC50b3ggLnRveC1zdGF0dXNiYXIgYSwgLmRhcmstbW9kZSAudG94IC50b3gtc3RhdHVzYmFyX19wYXRoLWl0ZW0sIC5kYXJrLW1vZGUgLnRveCAudG94LXN0YXR1c2Jhcl9fd29yZGNvdW50LCAuZGFyay1tb2RlIC50b3gtY29sbGVjdGlvbl9faXRlbS1sYWJlbCA+ICosIC5kYXJrLW1vZGUgLm5rLXF1aWNrLW5hdi1pY29uLCAuZGFyay1tb2RlIC5kcm9wem9uZSAuZHotbWVzc2FnZSBzcGFuLCAuZGFyay1tb2RlIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5LCAuZGFyay1tb2RlIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5OmhvdmVyLCAuZGFyay1tb2RlIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5LmRpc2FibGVkLCAuZGFyay1tb2RlIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLnRvZGF5LmRpc2FibGVkOmhvdmVyLCAuZGFyay1tb2RlIC5kYXRlcGlja2VyIHRhYmxlIHRyIHRkLmRheTpob3ZlciwgLmRhcmstbW9kZSAuZGF0ZXBpY2tlciB0YWJsZSB0ciB0ZC5kYXkuZm9jdXNlZCwgLmRhcmstbW9kZSAucGFnZS1saW5rLCAuZGFyay1tb2RlIC5hbGVydC1wcm8sIC5kYXJrLW1vZGUgLm5rLW5ld3MtdGV4dCBwIHNwYW4sIC5kYXJrLW1vZGUgLmxhbmd1YWdlLWl0ZW0sIC5kYXJrLW1vZGUgLm5rLXRiLWxpc3QgLnRiLWxlYWQtc3ViLCAuZGFyay1tb2RlIC5uay10Yi1saXN0IC50Yi1hbW91bnQtc3ViIHsgY29sb3I6ICM4MDk0YWUgIWltcG9ydGFudDsgfQoKLmRhcmstbW9kZSAudG94IC50b3gtY29sbGVjdGlvbl9faXRlbS1hY2Nlc3NvcnkgeyBjb2xvcjogIzUyNjQ4NDsgfQoKLmRhcmstbW9kZSAubmstbWVudS1saW5rLCAuZGFyay1tb2RlIC5saW5rLWRhcmssIC5kYXJrLW1vZGUgLmxpbmstbGlzdCBhIHsgY29sb3I6ICM4MDk0YWU7IH0KCi5kYXJrLW1vZGUgLm5rLW1lbnUtbGluazpob3ZlciwgLmRhcmstbW9kZSAubGluay1kYXJrOmhvdmVyLCAuZGFyay1tb2RlIC5saW5rLWxpc3QgYTpob3ZlciB7IGNvbG9yOiAjMDk3MWZlOyB9CgouZGFyay1tb2RlIC5xbC1waWNrZXIucWwtZXhwYW5kZWQgLnFsLXBpY2tlci1sYWJlbCwgLmRhcmstbW9kZSAuYWN0aXZlID4gLm5rLW1lbnUtbGluaywgLmRhcmstbW9kZSAuaXMtdGhlbWUgLm5rLW1lbnUtbGluazpob3ZlciAubmstbWVudS1pY29uLCAuZGFyay1tb2RlIC5pcy10aGVtZSAubmstbWVudS1pdGVtLmFjdGl2ZSA+IC5uay1tZW51LWxpbmsgLm5rLW1lbnUtaWNvbiwgLmRhcmstbW9kZSAuaXMtdGhlbWUgLm5rLW1lbnUtaXRlbS5jdXJyZW50LW1lbnUgPiAubmstbWVudS1saW5rIC5uay1tZW51LWljb24sIC5kYXJrLW1vZGUgLmlzLXRoZW1lIC5uay1tZW51LXN1YiAubmstbWVudS1saW5rOmhvdmVyLCAuZGFyay1tb2RlIC5pcy10aGVtZSAubmstbWVudS1zdWIgLmFjdGl2ZSA+IC5uay1tZW51LWxpbmssIC5kYXJrLW1vZGUgLnBhZ2UtbGluazpob3ZlciB7IGNvbG9yOiAjMDk3MWZlICFpbXBvcnRhbnQ7IH0KCi5kYXJrLW1vZGUgLm5rLW1lbnUtaHIsIC5kYXJrLW1vZGUgLm5rLW1lbnUtbWFpbiAubmstbWVudS1zdWIsIC5kYXJrLW1vZGUgLm5rLXNpZGViYXIgLm5rLW1lbnUgPiBsaSAubmstbWVudS1zdWIgLm5rLW1lbnUtc3ViLCAuZGFyay1tb2RlIC51c2VyLWF2YXRhci1ncm91cCAudXNlci1hdmF0YXIgeyBib3JkZXItY29sb3I6ICMxZDJkNDA7IH0KCi5kYXJrLW1vZGUgLnRhYmxlIC50aGVhZC1saWdodCB0aCwgLmRhcmstbW9kZSAucGFnZS1pdGVtLmRpc2FibGVkIC5wYWdlLWxpbmssIC5kYXJrLW1vZGUgLnBhZ2UtbGluazpob3ZlciwgLmRhcmstbW9kZSAudGItb2RyLWhlYWQsIC5kYXJrLW1vZGUgLnRiLXRueC1oZWFkLCAuZGFyay1tb2RlIC5jdXN0b20tY29udHJvbC1pbnB1dFtkaXNhYmxlZF0gfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSwgLmRhcmstbW9kZSAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6ZGlzYWJsZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7IGJhY2tncm91bmQtY29sb3I6ICMyODM3NGIgIWltcG9ydGFudDsgfQoKLmRhcmstbW9kZSAucHJvZ3Jlc3MsIC5kYXJrLW1vZGUgLmRhdGEtaGVhZCwgLmRhcmstbW9kZSAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSwgLmRhcmstbW9kZSAuaW5wdXQtZ3JvdXAtdGV4dCwgLmRhcmstbW9kZSAubmstbXNnLXByb2ZpbGUtdG9nZ2xlIHsgYmFja2dyb3VuZC1jb2xvcjogIzIxMmQzZCAhaW1wb3J0YW50OyB9CgouZGFyay1tb2RlIC5uay1tc2ctcHJvZmlsZS10b2dnbGUsIC5kYXJrLW1vZGUgLmN1c3RvbS1jb250cm9sLWxhYmVsOjpiZWZvcmUsIC5kYXJrLW1vZGUgLmZvcm0tY29udHJvbCwgLmRhcmstbW9kZSAuZHVhbC1saXN0Ym94IC5kdWFsLWxpc3Rib3hfX3NlYXJjaCwgLmR1YWwtbGlzdGJveCAuZGFyay1tb2RlIC5kdWFsLWxpc3Rib3hfX3NlYXJjaCwgLmRhcmstbW9kZSAuaW5wdXQtbWFpbCwgLmRhcmstbW9kZSAuY3VzdG9tLWZpbGUtbGFiZWwsIC5kYXJrLW1vZGUgLmlucHV0LWdyb3VwLXRleHQsIC5kYXJrLW1vZGUgLmN1c3RvbS1zZWxlY3QsIC5kYXJrLW1vZGUgLnN3YWwyLWlucHV0LCAuZGFyay1tb2RlIC5zd2FsMi1maWxlLCAuZGFyay1tb2RlIC5zd2FsMi10ZXh0YXJlYSwgLmRhcmstbW9kZSAuc2VsZWN0Mi1jb250YWluZXItLWRlZmF1bHQgLnNlbGVjdDItc2VsZWN0aW9uLS1zaW5nbGUsIC5kYXJrLW1vZGUgLnNlbGVjdDItY29udGFpbmVyLS1kZWZhdWx0IC5zZWxlY3QyLXNlbGVjdGlvbi0tbXVsdGlwbGUsIC5kYXJrLW1vZGUgLnNlbGVjdDItZHJvcGRvd24sIC5kYXJrLW1vZGUgLm5vdGUtcG9wb3ZlciAucG9wb3Zlci1jb250ZW50IC5kcm9wZG93bi1zdHlsZSA+IGxpW2FyaWEtbGFiZWw9InByZSJdLCAuZGFyay1tb2RlIC5ub3RlLWVkaXRvciAubm90ZS10b29sYmFyIC5kcm9wZG93bi1zdHlsZSA+IGxpW2FyaWEtbGFiZWw9InByZSJdLCAuZGFyay1tb2RlIC5saW5rLWJkci10LCAuZGFyay1tb2RlIC5saW5rLWNoZWNrICsgLmxpbmstY2hlY2ssIC5kYXJrLW1vZGUgLmxpbmstdGlkeSBsaSArIGxpLCAubGluay10aWR5IC5kYXJrLW1vZGUgbGkgKyBsaSwgLmRhcmstbW9kZSAubGluay1saXN0ICsgLmxpbmstbGlzdCwgLmRhcmstbW9kZSAubGluay1saXN0LW9wdCBsaSArIGxpLCAubGluay1saXN0LW9wdCAuZGFyay1tb2RlIGxpICsgbGksIC5kYXJrLW1vZGUgLmxpbmstbGlzdC1wbGFpbiBsaSArIGxpLCAubGluay1saXN0LXBsYWluIC5kYXJrLW1vZGUgbGkgKyBsaSwgLmRhcmstbW9kZSAubGluay1jaGVjayArIC5saW5rLWNoZWNrLCAuZGFyay1tb2RlIC5saW5rLXRpZHkgbGkgKyBsaSwgLmRhcmstbW9kZSAubGluay1saXN0ICsgLmxpbmstbGlzdCwgLmRhcmstbW9kZSAubGluay1saXN0LW9wdCBsaSArIGxpLCAuZGFyay1tb2RlIC5saW5rLWxpc3QtcGxhaW4gbGksIC5kYXJrLW1vZGUgLmxpbmstbGlzdC1wbGFpbiBsaSArIGxpIHsgYm9yZGVyLWNvbG9yOiAjMzg0ZDY5ICFpbXBvcnRhbnQ7IH0KCi5kYXJrLW1vZGUgLmN1c3RvbS1zd2l0Y2ggLmN1c3RvbS1jb250cm9sLWxhYmVsOjphZnRlciB7IGJhY2tncm91bmQtY29sb3I6ICM3Zjk5YmIgIWltcG9ydGFudDsgfQoKLmRhcmstbW9kZSAuY3VzdG9tLXN3aXRjaCAuY3VzdG9tLWNvbnRyb2wtaW5wdXQ6Y2hlY2tlZCB+IC5jdXN0b20tY29udHJvbC1sYWJlbDo6YWZ0ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7IH0KCi5kYXJrLW1vZGUgLmN1c3RvbS1jb250cm9sLWlucHV0OmNoZWNrZWQgfiAuY3VzdG9tLWNvbnRyb2wtbGFiZWw6OmJlZm9yZSB7IGJhY2tncm91bmQtY29sb3I6ICMwOTcxZmUgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjMDk3MWZlICFpbXBvcnRhbnQ7IH0KCi5kYXJrLW1vZGUgLmJ0bi10cmlnZ2VyOmJlZm9yZSwgLmRhcmstbW9kZSAuYnRuLXRyaWdnZXIuYWN0aXZlOmhvdmVyOmJlZm9yZSwgLmRhcmstbW9kZSAubmstcXVpY2stbmF2LWljb246YmVmb3JlIHsgYmFja2dyb3VuZC1jb2xvcjogIzA3MGEwZjsgfQoKLmRhcmstbW9kZSAuZHJvcGRvd24tbWVudSB7IGJhY2tncm91bmQtY29sb3I6ICMxODIxMmQ7IGJvcmRlci1jb2xvcjogIzI2MzU0NzsgYm94LXNoYWRvdzogMCAzcHggMjBweCAxcHggcmdiYSgwLCAwLCAwLCAwLjQpOyB9CgouZGFyay1tb2RlIC5kcm9wZG93bi1tZW51LXMxIHsgYm9yZGVyLXRvcC1jb2xvcjogIzA5NzFmZTsgfQoKLmRhcmstbW9kZSAubGluay1saXN0LXBsYWluIGEsIC5kYXJrLW1vZGUgLmxpbmstbGlzdC1vcHQgYSwgLmRhcmstbW9kZSAubGluay1jaGVjayBsaSBhIHsgY29sb3I6ICNiNmM2ZTM7IH0KCi5kYXJrLW1vZGUgLmxpbmstbGlzdC1wbGFpbiBhOmhvdmVyLCAuZGFyay1tb2RlIC5saW5rLWxpc3Qtb3B0IGE6aG92ZXIsIC5kYXJrLW1vZGUgLmxpbmstY2hlY2sgbGkgYTpob3ZlciB7IGJhY2tncm91bmQ6ICMyYTNhNGU7IH0KCi5kYXJrLW1vZGUgLmJvcmRlci10cmFuc3BhcmVudCB7IGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDsgfQoKLmRhcmstbW9kZSAubm90ZS1lZGl0b3IgLmJ0biwgLmRhcmstbW9kZSAubm90ZS1lZGl0b3IgLmR1YWwtbGlzdGJveCAuZHVhbC1saXN0Ym94X19idXR0b24sIC5kdWFsLWxpc3Rib3ggLmRhcmstbW9kZSAubm90ZS1lZGl0b3IgLmR1YWwtbGlzdGJveF9fYnV0dG9uLCAuZGFyay1tb2RlIC5xbC1waWNrZXIsIC5kYXJrLW1vZGUgLnRveCAudG94LXRidG5fX3NlbGVjdC1sYWJlbCwgLmRhcmstbW9kZSAudG94IC50b3gtbWJ0bl9fc2VsZWN0LWxhYmVsLCAuZGFyay1tb2RlIC5sZWFkLXRleHQgc3BhbiwgLmRhcmstbW9kZSAuZGF0YS1saXN0LXMyIC5kYXRhLWxhYmVsLCAuZGFyay1tb2RlIC5idG4tdHJpZ2dlciwgLmRhcmstbW9kZSAuZHJvcGRvd24gLmJ0bi5idG4taWNvbjpub3QoLmJ0bi1saWdodCksIC5kYXJrLW1vZGUgLmRyb3Bkb3duIC5kdWFsLWxpc3Rib3ggLmJ0bi1pY29uLmR1YWwtbGlzdGJveF9fYnV0dG9uOm5vdCguYnRuLWxpZ2h0KSwgLmR1YWwtbGlzdGJveCAuZGFyay1tb2RlIC5kcm9wZG93biAuYnRuLWljb24uZHVhbC1saXN0Ym94X19idXR0b246bm90KC5idG4tbGlnaHQpLCAuZGFyay1tb2RlIC5saXN0LXN0ZXAgbGkubGlzdC1zdGVwLWRvbmUgeyBjb2xvcjogIzgwOTRhZTsgfQoKLmRhcmstbW9kZSAucWwtZmlsbCwgLmRhcmstbW9kZSAucWwtc3Ryb2tlLnFsLWZpbGwsIC5kYXJrLW1vZGUgLnRveCAudG94LXRidG4gc3ZnIHsgZmlsbDogIzgwOTRhZTsgfQoKLmRhcmstbW9kZSAucWwtc3Ryb2tlIHsgc3Ryb2tlOiAjODA5NGFlOyB9CgouZGFyay1tb2RlIC50ZWFtLWluZm8gbGkgc3BhbjpmaXJzdC1jaGlsZCwgLmRhcmstbW9kZSAudGVhbS1zdGF0aXN0aWNzIGxpIHNwYW46bGFzdC1jaGlsZCwgLmRhcmstbW9kZSAucHJvamVjdC1wcm9ncmVzcy10YXNrLCAuZGFyay1tb2RlIC50YWJsZSwgLmRhcmstbW9kZSAubmstdGItbGlzdCwgLmRhcmstbW9kZSAubmstdGItbGlzdCAudGItYW1vdW50IHNwYW4sIC5kYXJrLW1vZGUgLm5rLXRiLWxpc3QgLnRiLWFtb3VudCAuY3VycmVuY3ksIC5kYXJrLW1vZGUgLnRiLXRueC1pdGVtIC50Yi10bngtdG90YWwsIC5kYXJrLW1vZGUgLnRiLW9kci1pdGVtIC50Yi1vZHItdG90YWwsIC5kYXJrLW1vZGUgLnVzZXItYmFsYW5jZS1zdWIgc3BhbiwgLmRhcmstbW9kZSAuZHJvcGRvd24tbWVudSwgLmRhcmstbW9kZSAucGxuLCAuZGFyay1tb2RlIC5vdmVybGluZS10aXRsZSwgLmRhcmstbW9kZSAubmstYmxvY2stZGVzIHN0cm9uZywgLmRhcmstbW9kZSAuZGF0YS1pdGVtOmhvdmVyIC5kYXRhLXZhbHVlLCAuZGFyay1tb2RlIC5kYXRhLWl0ZW06aG92ZXIgLmRhdGEtbGFiZWwsIC5kYXJrLW1vZGUgLm5rLW5vdGlmaWNhdGlvbi10ZXh0LCAuZGFyay1tb2RlIC5wcm9maWxlLXVkLXZhbHVlLCAuZGFyay1tb2RlIC5icS1ub3RlLW1ldGEgc3BhbiA+IHNwYW4sIC5kYXJrLW1vZGUgLnRhZ2lmeV9fdGFnID4gZGl2LCAuZGFyay1tb2RlIC5wb3BvdmVyLWJvZHksIC5kYXJrLW1vZGUgLmlucHV0LW1haWw6OnBsYWNlaG9sZGVyLCAuZGFyay1tb2RlIC5saXN0LWFwcHMtdGl0bGUgeyBjb2xvcjogI2I2YzZlMzsgfQoKLmRhcmstbW9kZSAubmstbm90aWZpY2F0aW9uLXRleHQgc3BhbiwgLmRhcmstbW9kZSAuaXMtdW5yZWFkIC5jaGF0LWNvbnRleHQgLnRleHQgeyBjb2xvcjogI2RmZTlmZTsgfQoKLmRhcmstbW9kZSAubmF2LXRhYnMgLm5hdi1saW5rIHsgY29sb3I6ICNiNmM2ZTM7IH0KCi5kYXJrLW1vZGUgLm5hdi10YWJzIC5uYXYtbGluay5hY3RpdmUgeyBjb2xvcjogIzA5NzFmZTsgfQoKLmRhcmstbW9kZSAubmF2LXRhYnMgLm5hdi1saW5rOmhvdmVyIHsgY29sb3I6ICNmZmY7IH0KCi5kYXJrLW1vZGUgLmxpbmstbGlzdC1tZW51IGEsIC5kYXJrLW1vZGUgLmxpc3QtcGxhaW4gYSB7IGNvbG9yOiAjODA5NGFlOyB9CgouZGFyay1tb2RlIC5saW5rLWxpc3QtbWVudSBhOmhvdmVyLCAuZGFyay1tb2RlIC5saW5rLWxpc3QtbWVudSBhLmFjdGl2ZSwgLmRhcmstbW9kZSAubGlzdC1wbGFpbiBhOmhvdmVyLCAuZGFyay1tb2RlIC5saXN0LXBsYWluIGEuYWN0aXZlIHsgY29sb3I6ICMwOTcxZmU7IH0KCi5kYXJrLW1vZGUgLm5hdi1zd2l0Y2ggLm5hdi1saW5rLmFjdGl2ZSwgLmRhcmstbW9kZSAubGlzdC1hcHBzIGE6aG92ZXIgLmxpc3QtYXBwcy10aXRsZSB7IGNvbG9yOiAjZmZmOyB9CgouZGFyay1tb2RlIC5uay10Yi1pdGVtOm5vdCgubmstdGItaGVhZCk6aG92ZXIsIC5kYXJrLW1vZGUgLm5rLXRiLWl0ZW06bm90KC5uay10Yi1oZWFkKS5zZWxldGVkIHsgYm94LXNoYWRvdzogMCAycHggMTVweCAtNHB4IHJnYmEoMCwgMCwgMCwgMC43KTsgfQoKLmRhcmstbW9kZSAubmstdGItaXRlbTpob3ZlciAubmstdGItYWN0aW9uLWhpZGRlbiwgLmRhcmstbW9kZSAuYnEtbm90ZS10ZXh0LCAuZGFyay1tb2RlIC5uay10Yi1pdGVtOm5vdCgubmstdGItaGVhZCk6aG92ZXIsIC5kYXJrLW1vZGUgLm5rLXRiLWl0ZW06bm90KC5uay10Yi1oZWFkKS5zZWxldGVkIHsgYmFja2dyb3VuZDogIzExMTcxZjsgfQoKLmRhcmstbW9kZSAubmstYXBwcy1zaWRlYmFyIC5kcm9wZG93bi1tZW51IC5sZWFkLXRleHQsIC5kYXJrLW1vZGUgLmxpc3Qtc3RlcCBsaS5saXN0LXN0ZXAtY3VycmVudCwgLmRhcmstbW9kZSAubmstdGItbGlzdCAudGItbGVhZCwgLmRhcmstbW9kZSAubmstdGItbGlzdCAudGItYW1vdW50LCAuZGFyay1tb2RlIC5uay1zdXBwb3J0LWNvbnRlbnQgLnRpdGxlLCAuZGFyay1tb2RlIC5uay1zYWxlLWRhdGEgLmFtb3VudCB7IGNvbG9yOiAjZmZmOyB9CgouZGFyay1tb2RlIC5uay1zdXBwb3J0LWNvbnRlbnQgLnRpbWUsIC5kYXJrLW1vZGUgLnBhZ2UtaXRlbS5kaXNhYmxlZCAucGFnZS1saW5rLCAuZGFyay1tb2RlIC5jYXJkLWhpbnQsIC5kYXJrLW1vZGUgLmxpc3Qtc3RlcCBsaSB7IGNvbG9yOiAjNTI2NDg0OyB9CgouZGFyay1tb2RlIC5uay1vcmRlci1vdndnLWRhdGEgLnRpdGxlIC5pY29uLCAuZGFyay1tb2RlIC50aW1lbGluZS1pdGVtOm5vdCg6bGFzdC1jaGlsZCk6YmVmb3JlLCAuZGFyay1tb2RlIC50aW1lbGluZS1zdGF0dXMuaXMtb3V0bGluZTphZnRlciB7IGJhY2tncm91bmQtY29sb3I6ICMyNjM1NDc7IH0KCi5kYXJrLW1vZGUgLm5rLWZvb3RlciB7IGJhY2tncm91bmQtY29sb3I6ICMxMDE5MjQ7IH0KCi5kYXJrLW1vZGUgLm5rLW9yZGVyLW92d2ctZGF0YSAuaW5mbyBzdHJvbmcsIC5kYXJrLW1vZGUgLnVzZXItYWN0aXZpdHkgLmFtb3VudCwgLmRhcmstbW9kZSAuaW52ZXN0LWRhdGEtaGlzdG9yeSAuYW1vdW50LCAuZGFyay1tb2RlIC5hbmFseXRpYy1kYXRhIC5hbW91bnQsIC5kYXJrLW1vZGUgLnRyYWZmaWMtY2hhbm5lbC1kYXRhIC5hbW91bnQsIC5kYXJrLW1vZGUgLmFuYWx5dGljcy1tYXAtZGF0YSAuYW1vdW50LCAuZGFyay1tb2RlIC5kZXZpY2Utc3RhdHVzLWRhdGEgLmFtb3VudCwgLmRhcmstbW9kZSAuaW52ZXN0LW92IC5hbW91bnQsIC5kYXJrLW1vZGUgLnByb2ZpbGUtYmFsYW5jZS1hbW91bnQgLm51bWJlciB7IGNvbG9yOiAjZmZmOyB9CgouZGFyay1tb2RlIC5pbnZlc3Qtb3Y6bm90KDpsYXN0LWNoaWxkKSB7IGJvcmRlci1jb2xvcjogIzM4NGQ2OTsgfQoKLmRhcmstbW9kZSAubmstaGVhZGVyIC5kcm9wZG93bi1tZW51IC5sZWFkLXRleHQsIC5kYXJrLW1vZGUgLm5rLXNpZGViYXItYmFyIC5kcm9wZG93bi1tZW51IC5sZWFkLXRleHQgeyBjb2xvcjogI2ZmZjsgfQoKLmRhcmstbW9kZSAubmstaGVhZGVyLCAuZGFyay1tb2RlIC5uay1oZWFkZXIuaXMtbGlnaHQ6bm90KFtjbGFzcyo9YmctXSksIC5kYXJrLW1vZGUgLm5rLXNpZGViYXIsIC5kYXJrLW1vZGUgLm5rLXNpZGViYXIuaXMtbGlnaHQsIC5kYXJrLW1vZGUgLm5rLXNpZGViYXItaGVhZCB7IGJvcmRlci1jb2xvcjogIzIwMzI0NyAhaW1wb3J0YW50OyB9CgouZGFyay1tb2RlIC5uay1oZWFkZXIsIC5kYXJrLW1vZGUgLm5rLWhlYWRlci5pcy1saWdodDpub3QoW2NsYXNzKj1iZy1dKSwgLmRhcmstbW9kZSAubmstc2lkZWJhciwgLmRhcmstbW9kZSAubmstc2lkZWJhci5pcy1saWdodCwgLmRhcmstbW9kZSAubmstaGVhZGVyLmlzLXRoZW1lOm5vdChbY2xhc3MqPWJnLV0pIHsgYmFja2dyb3VuZDogIzEwMTkyNDsgfQoKLmRhcmstbW9kZSAubmstY2hhdC1hc2lkZS11c2VyIC50aXRsZSwgLmRhcmstbW9kZSAubmstZmlsZS1uYW1lLCAuZGFyay1tb2RlIC5uay1maWxlLW5hbWUtdGV4dCBhLnRpdGxlLCAuZGFyay1tb2RlIC5pcy11bnJlYWQgLm5rLWlieC1jb250ZXh0LXRleHQgLmhlYWRpbmcsIC5kYXJrLW1vZGUgLmNoYXQtcHJvZmlsZS1zZXR0aW5ncyAuY3VzdG9tLWNvbnRyb2wtc20gLmN1c3RvbS1jb250cm9sLWxhYmVsLCAuZGFyay1tb2RlIC5hdHRhY2gtaW5mbywgLmRhcmstbW9kZSAucHJvZmlsZS1zdGF0cyAuYW1vdW50LCAuZGFyay1tb2RlIC5pcy11bnJlYWQgLmNoYXQtZnJvbSAubmFtZSB7IGNvbG9yOiAjZmZmOyB9CgouZGFyay1tb2RlIC5uay1mbWctbWVudS1pdGVtIC5pY29uLCAuZGFyay1tb2RlIC5uay1pYngtbWVudS1pdGVtIC5pY29uIHsgY29sb3I6ICM4MDk0YWU7IH0KCi5kYXJrLW1vZGUgLm5rLWZtZy1tZW51LXRleHQsIC5kYXJrLW1vZGUgLm5rLWlieC1sYWJlbC10ZXh0LCAuZGFyay1tb2RlIC5uay1pYngtbWVudS10ZXh0LCAuZGFyay1tb2RlIC5hdHRhY2gtaXRlbSBhLCAuZGFyay1tb2RlIC51c2VyLWNvbnRhY3RzIGxpLCAuZGFyay1tb2RlIC5uay1pYngtY29udGV4dC10ZXh0IC5oZWFkaW5nLCAuZGFyay1tb2RlIC5jaGF0LW9wdGlvbi1saW5rOmhvdmVyIC5sZWFkLXRleHQsIC5kYXJrLW1vZGUgLmNoYXQtZnJvbSAubmFtZSwgLmRhcmstbW9kZSAudXNlci1wbGFuLXRpdGxlIHsgY29sb3I6ICNiNmM2ZTM7IH0KCi5kYXJrLW1vZGUgLm5rLWZpbGUtbmFtZS10ZXh0IGEudGl0bGU6aG92ZXIsIC5kYXJrLW1vZGUgLmFjdGl2ZSA+IC5uay1mbWctbWVudS1pdGVtIC5pY29uLCAuZGFyay1tb2RlIC5hY3RpdmUgLm5rLWlieC1tZW51LXRleHQsIC5kYXJrLW1vZGUgLmFjdGl2ZSAubmstaWJ4LW1lbnUtaXRlbSAuaWNvbiB7IGNvbG9yOiAjMDk3MWZlOyB9CgouZGFyay1tb2RlIC5uay1jaGF0LCAuZGFyay1tb2RlIC5uay1jaGF0LWFzaWRlLCAuZGFyay1tb2RlIC5uay1jaGF0LXByb2ZpbGUsIC5kYXJrLW1vZGUgLm5rLWNoYXQtaGVhZCwgLmRhcmstbW9kZSAuY2hhdC1wcm9maWxlLWdyb3VwLCAuZGFyay1tb2RlIC5uay1mbWcsIC5kYXJrLW1vZGUgLm5rLWZtZy1hc2lkZSwgLmRhcmstbW9kZSAubmstZm1nLWJvZHktaGVhZCwgLmRhcmstbW9kZSAubmstZm1nLXN3aXRjaCwgLmRhcmstbW9kZSAubmstZmlsZXMtdmlldy1ncmlkIC5uay1maWxlLCAuZGFyay1tb2RlIC5uay1maWxlcy12aWV3LWdyb3VwIC5uay1maWxlLCAuZGFyay1tb2RlIC5uay1pYngsIC5kYXJrLW1vZGUgLm5rLWlieC1hc2lkZSwgLmRhcmstbW9kZSAubmstaWJ4LWhlYWQsIC5kYXJrLW1vZGUgLm5rLWlieC1pdGVtLCAuZGFyay1tb2RlIC5uay1yZXBseS1mb3JtLCAuZGFyay1tb2RlIC5uay1yZXBseS1mb3JtLWhlYWRlciwgLmRhcmstbW9kZSAubmstcmVwbHktZm9ybS10b29scywgLmRhcmstbW9kZSAubmstcmVwbHktZm9ybS1maWVsZDpub3QoOmxhc3QtY2hpbGQpLCAuZGFyay1tb2RlIC5uay1tc2csIC5kYXJrLW1vZGUgLm5rLW1zZy1oZWFkLCAuZGFyay1tb2RlIC5uay1tc2ctcHJvZmlsZSwgLmRhcmstbW9kZSAuYXR0YWNoLWZpbGVzLCAuZGFyay1tb2RlIC5hdHRhY2gtZm9vdCwgLmRhcmstbW9kZSAubmstbXNnLWl0ZW06bm90KDpsYXN0LWNoaWxkKSwgLmRhcmstbW9kZSAubmstbXNnLWFzaWRlLCAuZGFyay1tb2RlIC5uay1tc2ctbmF2LCAuZGFyay1tb2RlIC5uay1tc2ctbmF2IC5zZWFyY2gtd3JhcCwgLmRhcmstbW9kZSAubmstZmlsZXMtZ3JvdXAgPiAudGl0bGUsIC5kYXJrLW1vZGUgLm5rLWZpbGUtc2hhcmUtaGVhZGVyLCAuZGFyay1tb2RlIC5uay1maWxlcy12aWV3LWxpc3QgLm5rLWZpbGUgPiBkaXYgeyBib3JkZXItY29sb3I6ICMxZDJkNDAgIWltcG9ydGFudDsgfQoKLmRhcmstbW9kZSAubmstYmxvY2stc3ViaGVhZCwgLmRhcmstbW9kZSAuZGF0YS1saXN0LXMyIC5kYXRhLWhlYWQsIC5kYXJrLW1vZGUgLm5rLXByb2ZpbGUtdG9nZ2xlLCAuZGFyay1tb2RlIC5uay1wcm9maWxlLWNvbnRlbnQsIC5kYXJrLW1vZGUgLnVzZXItYWNjb3VudC1saW5rcyB7IGJvcmRlci1jb2xvcjogIzJiMzc0ODsgfQoKLmRhcmstbW9kZSAubmstdXBsb2FkLWl0ZW0sIC5kYXJrLW1vZGUgLmRyb3B6b25lIHsgYm9yZGVyLWNvbG9yOiAjMzU0MzU4ICFpbXBvcnRhbnQ7IH0KCi5kYXJrLW1vZGUgLmRhdGEtbGlzdC1zMiAuZGF0YS1oZWFkIHsgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQgIWltcG9ydGFudDsgfQoKLmRhcmstbW9kZSAuY2hhdC1zYXAtbWV0YTpiZWZvcmUsIC5kYXJrLW1vZGUgLmNoYXQtc2FwLW1ldGE6YWZ0ZXIsIC5kYXJrLW1vZGUgLmFjdGl2ZSA+IC5uay1mbWctbWVudS1pdGVtLCAuZGFyay1tb2RlIC5uay1mbWctbWVudS1pdGVtOmhvdmVyLCAuZGFyay1tb2RlIC5uay1pYngtc3RhdHVzLCAuZGFyay1tb2RlIC5uay1pYngtcmVwbHktaXRlbTpub3QoOmxhc3QtY2hpbGQpOmFmdGVyLCAuZGFyay1tb2RlIC5uay1yZXBseS1tZXRhLWluZm86YmVmb3JlLCAuZGFyay1tb2RlIC5uay1yZXBseS1tZXRhLWluZm86YWZ0ZXIgeyBiYWNrZ3JvdW5kOiAjMWQyZDQwOyB9CgouZGFyay1tb2RlIC5uay1jaGF0LCAuZGFyay1tb2RlIC5uay1jaGF0LWFzaWRlLCAuZGFyay1tb2RlIC5uay1jaGF0LXByb2ZpbGUsIC5kYXJrLW1vZGUgLm5rLWNoYXQtaGVhZCwgLmRhcmstbW9kZSAuY2hhdC1tc2csIC5kYXJrLW1vZGUgLm5rLWNoYXQtZWRpdG9yLCAuZGFyay1tb2RlIC5uay1jaGF0LWJsYW5rLCAuZGFyay1tb2RlIC5uay1mbWcsIC5kYXJrLW1vZGUgLm5rLWZtZy1hc2lkZSwgLmRhcmstbW9kZSAubmstZm1nLWJvZHktaGVhZCwgLmRhcmstbW9kZSAubmstZmlsZXMtdmlldy1ncmlkIC5uay1maWxlLCAuZGFyay1tb2RlIC5uay1maWxlcy12aWV3LWdyb3VwIC5uay1maWxlLCAuZGFyay1tb2RlIC5uay1pYngsIC5kYXJrLW1vZGUgLm5rLWlieC1hc2lkZSwgLmRhcmstbW9kZSAubmstaWJ4LWl0ZW0sIC5kYXJrLW1vZGUgLm5rLWlieC12aWV3LCAuZGFyay1tb2RlIC5uay1tc2csIC5kYXJrLW1vZGUgLm5rLW1zZy1oZWFkLCAuZGFyay1tb2RlIC5uay1tc2ctcHJvZmlsZSwgLmRhcmstbW9kZSAubmstZm1nLXN3aXRjaCB7IGJhY2tncm91bmQ6ICMxNDFjMjY7IH0KCi5kYXJrLW1vZGUgLm5rLWlieC1zdGF0dXMgLnByb2dyZXNzIHsgYmFja2dyb3VuZDogIzE0MWMyNiAhaW1wb3J0YW50OyB9CgouZGFyay1tb2RlIC5uay1jaGF0LXBhbmVsLCAuZGFyay1tb2RlIC5jaGF0LWl0ZW06aG92ZXIsIC5kYXJrLW1vZGUgLmNoYXQtaXRlbS5jdXJyZW50LCAuZGFyay1tb2RlIC5jaGF0LWl0ZW06aG92ZXIgLmNoYXQtYWN0aW9ucywgLmRhcmstbW9kZSAuY2hhdC1tZW1iZXJzIC51c2VyLWNhcmQ6aG92ZXIsIC5kYXJrLW1vZGUgLmNoYXQtbWVtYmVycyAudXNlci1hY3Rpb25zLCAuZGFyay1tb2RlIC5uay1wcm9maWxlLWNvbnRlbnQsIC5kYXJrLW1vZGUgLm5rLW1zZy1pdGVtLmFjdGl2ZSwgLmRhcmstbW9kZSAubmstbXNnLWl0ZW0uY3VycmVudCwgLmRhcmstbW9kZSAuY2hhbm5lbC1saXN0IGE6aG92ZXIsIC5kYXJrLW1vZGUgLmNoYW5uZWwtbGlzdCBhLmFjdGl2ZSB7IGJhY2tncm91bmQ6ICMwZDE0MWQgIWltcG9ydGFudDsgfQoKLmRhcmstbW9kZSAuZmF2LWxpc3QgLnVzZXItYXZhdGFyOmFmdGVyIHsgYmFja2dyb3VuZDogIzQxNWE3OTsgfQoKLmRhcmstbW9kZSAubmstaWJ4LWl0ZW06bm90KC5uby1ob3Zlcik6aG92ZXIsIC5kYXJrLW1vZGUgLm5rLWlieC1pdGVtLmFjdGl2ZSwgLmRhcmstbW9kZSAubmstaWJ4LWl0ZW06aG92ZXIgLmlieC1hY3Rpb25zLWhpZGRlbiwgLmRhcmstbW9kZSAubmstaWJ4LWl0ZW06aG92ZXIgLmlieC1hY3Rpb25zLCAuZGFyay1tb2RlIC5uay1pYngtbGFiZWwgPiBsaTpob3ZlciwgLmRhcmstbW9kZSAubmstaWJ4LWNvbnRhY3QgPiBsaTpob3ZlciwgLmRhcmstbW9kZSAubmstaWJ4LW1lbnUgbGkuYWN0aXZlLCAuZGFyay1tb2RlIC5uay1pYngtbWVudSBsaTpob3ZlciwgLmRhcmstbW9kZSAuZG90LWxhYmVsOmFmdGVyLCAuZGFyay1tb2RlIC5hdHRhY2gtZm9vdCwgLmRhcmstbW9kZSAubmstcmVwbHktZnJvbSwgLmRhcmstbW9kZSAubmstcmVwbHktZW50cnkubm90ZSwgLmRhcmstbW9kZSAubmstbXNnLWFzaWRlLCAuZGFyay1tb2RlIC5uay1tc2ctbmF2LCAuZGFyay1tb2RlIC5uay1maWxlcy12aWV3LWxpc3QgLm5rLWZpbGUgPiBkaXYgeyBiYWNrZ3JvdW5kOiAjMTAxOTI0OyB9CgouZGFyay1tb2RlIC5pcy11bnJlYWQgLm5rLWlieC1jb250ZXh0LXRleHQsIC5kYXJrLW1vZGUgLm5rLXVwbG9hZC1pbmZvIHsgY29sb3I6ICNkZmU5ZmU7IH0KCi5kYXJrLW1vZGUgLm5rLXJlcGx5LW1zZy1leGNlcnB0LCAuZGFyay1tb2RlIC5uay1pYngtY29udGV4dC10ZXh0LCAuZGFyay1tb2RlIC51c2VyLWNvbnRhY3RzIGxpIC5pY29uLCAuZGFyay1tb2RlIC5uay1yZXBseS10b29scyAuZGF0ZSB7IGNvbG9yOiAjODA5NGFlOyB9CgouZGFyay1tb2RlIC5pcy11bnJlYWQgLm5rLW1zZy1zZW5kZXIgLm5hbWUgeyBjb2xvcjogI2ZmZjsgfQoKLmRhcmstbW9kZSAubmstcmVwbHktbWV0YS1pbmZvLCAuZGFyay1tb2RlIC5uay1yZXBseS1mcm9tIHsgY29sb3I6ICM3YThmYWE7IH0KCi5kYXJrLW1vZGUgLm5rLXJlcGx5LW1ldGEtaW5mbyBzcGFuLCAuZGFyay1tb2RlIC5uay1yZXBseS1tZXRhLWluZm8gc3Ryb25nLCAuZGFyay1tb2RlIC5uay1yZXBseS1tZXRhLWluZm8gLndobywgLmRhcmstbW9kZSAuY2hhbm5lbC1saXN0IGEgeyBjb2xvcjogI2I2YzZlMzsgfQoKLmRhcmstbW9kZSAubmstcmVwbHktbWV0YS1pbmZvIC53aG9tIHsgY29sb3I6ICMwOTcxZmU7IH0KCi5kYXJrLW1vZGUgLmZjIC5mYy10b29sYmFyLmZjLWhlYWRlci10b29sYmFyIC5mYy10b29sYmFyLWNodW5rIC5idG4sIC5kYXJrLW1vZGUgLmZjIC5mYy10b29sYmFyLmZjLWhlYWRlci10b29sYmFyIC5mYy10b29sYmFyLWNodW5rIC5kdWFsLWxpc3Rib3ggLmR1YWwtbGlzdGJveF9fYnV0dG9uLCAuZHVhbC1saXN0Ym94IC5kYXJrLW1vZGUgLmZjIC5mYy10b29sYmFyLmZjLWhlYWRlci10b29sYmFyIC5mYy10b29sYmFyLWNodW5rIC5kdWFsLWxpc3Rib3hfX2J1dHRvbiB7IGNvbG9yOiAjYjZjNmUzOyBib3JkZXItY29sb3I6ICMxZDJkNDA7IH0KCi5kYXJrLW1vZGUgLmZjIC5mYy10b29sYmFyLmZjLWhlYWRlci10b29sYmFyIC5mYy10b29sYmFyLWNodW5rIC5idG46ZGlzYWJsZWQsIC5kYXJrLW1vZGUgLmZjIC5mYy10b29sYmFyLmZjLWhlYWRlci10b29sYmFyIC5mYy10b29sYmFyLWNodW5rIC5kdWFsLWxpc3Rib3ggLmR1YWwtbGlzdGJveF9fYnV0dG9uOmRpc2FibGVkLCAuZHVhbC1saXN0Ym94IC5kYXJrLW1vZGUgLmZjIC5mYy10b29sYmFyLmZjLWhlYWRlci10b29sYmFyIC5mYy10b29sYmFyLWNodW5rIC5kdWFsLWxpc3Rib3hfX2J1dHRvbjpkaXNhYmxlZCB7IGNvbG9yOiAjYjZjNmUzOyBib3JkZXItY29sb3I6ICMxZDJkNDA7IH0KCi5kYXJrLW1vZGUgLmZjIC5mYy10b29sYmFyLmZjLWhlYWRlci10b29sYmFyIC5mYy10b29sYmFyLWNodW5rIC5idG46aG92ZXIsIC5kYXJrLW1vZGUgLmZjIC5mYy10b29sYmFyLmZjLWhlYWRlci10b29sYmFyIC5mYy10b29sYmFyLWNodW5rIC5kdWFsLWxpc3Rib3ggLmR1YWwtbGlzdGJveF9fYnV0dG9uOmhvdmVyLCAuZHVhbC1saXN0Ym94IC5kYXJrLW1vZGUgLmZjIC5mYy10b29sYmFyLmZjLWhlYWRlci10b29sYmFyIC5mYy10b29sYmFyLWNodW5rIC5kdWFsLWxpc3Rib3hfX2J1dHRvbjpob3ZlciwgLmRhcmstbW9kZSAuZmMgLmZjLXRvb2xiYXIuZmMtaGVhZGVyLXRvb2xiYXIgLmZjLXRvb2xiYXItY2h1bmsgLmJ0bjpmb2N1cywgLmRhcmstbW9kZSAuZmMgLmZjLXRvb2xiYXIuZmMtaGVhZGVyLXRvb2xiYXIgLmZjLXRvb2xiYXItY2h1bmsgLmR1YWwtbGlzdGJveCAuZHVhbC1saXN0Ym94X19idXR0b246Zm9jdXMsIC5kdWFsLWxpc3Rib3ggLmRhcmstbW9kZSAuZmMgLmZjLXRvb2xiYXIuZmMtaGVhZGVyLXRvb2xiYXIgLmZjLXRvb2xiYXItY2h1bmsgLmR1YWwtbGlzdGJveF9fYnV0dG9uOmZvY3VzIHsgY29sb3I6ICNmZmY7IGJhY2tncm91bmQ6ICMxMDE5MjQ7IGJvcmRlci1jb2xvcjogIzFkMmQ0MDsgfQoKLmRhcmstbW9kZSAuZmMgLmZjLXRvb2xiYXIuZmMtaGVhZGVyLXRvb2xiYXIgLmZjLXRvb2xiYXItY2h1bmsgLmJ0bjpmb2N1cywgLmRhcmstbW9kZSAuZmMgLmZjLXRvb2xiYXIuZmMtaGVhZGVyLXRvb2xiYXIgLmZjLXRvb2xiYXItY2h1bmsgLmR1YWwtbGlzdGJveCAuZHVhbC1saXN0Ym94X19idXR0b246Zm9jdXMsIC5kdWFsLWxpc3Rib3ggLmRhcmstbW9kZSAuZmMgLmZjLXRvb2xiYXIuZmMtaGVhZGVyLXRvb2xiYXIgLmZjLXRvb2xiYXItY2h1bmsgLmR1YWwtbGlzdGJveF9fYnV0dG9uOmZvY3VzIHsgYm94LXNoYWRvdzogMCAwIDAgMC4ycmVtIHJnYmEoMjksIDQ1LCA2NCwgMC41KTsgfQoKLmRhcmstbW9kZSAuZmMgLmZjLXRvb2xiYXIuZmMtaGVhZGVyLXRvb2xiYXIgLmZjLXRvb2xiYXItY2h1bmsgLmJ0bi5hY3RpdmUsIC5kYXJrLW1vZGUgLmZjIC5mYy10b29sYmFyLmZjLWhlYWRlci10b29sYmFyIC5mYy10b29sYmFyLWNodW5rIC5kdWFsLWxpc3Rib3ggLmFjdGl2ZS5kdWFsLWxpc3Rib3hfX2J1dHRvbiwgLmR1YWwtbGlzdGJveCAuZGFyay1tb2RlIC5mYyAuZmMtdG9vbGJhci5mYy1oZWFkZXItdG9vbGJhciAuZmMtdG9vbGJhci1jaHVuayAuYWN0aXZlLmR1YWwtbGlzdGJveF9fYnV0dG9uIHsgY29sb3I6ICMwOTcxZmU7IGJvcmRlci1jb2xvcjogIzFkMmQ0MDsgYmFja2dyb3VuZDogIzEwMTkyNDsgYm94LXNoYWRvdzogaW5zZXQgMCAwIDRweCAtMXB4IHJnYmEoMjksIDQ1LCA2NCwgMC4yNSk7IH0KCi5kYXJrLW1vZGUgLmZjLWRheSB7IGNvbG9yOiAjYjZjNmUzOyB9CgouZGFyay1tb2RlIC5mYy1kYXktb3RoZXIgeyBjb2xvcjogIzgwOTRhZTsgfQoKLmRhcmstbW9kZSAuZmMtbGlzdC1kYXksIC5kYXJrLW1vZGUgLmZjLWNvbC1oZWFkZXItY2VsbCB7IGNvbG9yOiAjZmZmOyB9CgouZGFyay1tb2RlIC5mYyAuZmMtbGlzdC1lbXB0eSB7IGJhY2tncm91bmQ6ICMxMDE5MjQ7IH0KCi5kYXJrLW1vZGUgLmZjLXRpbWVncmlkLWV2ZW50LWhhcm5lc3MtaW5zZXQgLmZjLXRpbWVncmlkLWV2ZW50LCAuZGFyay1tb2RlIC5mYy10aW1lZ3JpZC1ldmVudC5mYy1ldmVudC1taXJyb3IgeyBib3gtc2hhZG93OiAwcHggMHB4IDBweCAxcHggIzEwMTkyNDsgfQoKLmRhcmstbW9kZSBhLmZjLWV2ZW50LXByaW1hcnktZGltIHsgYmFja2dyb3VuZC1jb2xvcjogIzEzMjk0NiAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6ICMxMzI5NDYgIWltcG9ydGFudDsgfQoKLmRhcmstbW9kZSAubW9kYWwtaGVhZGVyLmZjLWV2ZW50LXByaW1hcnktZGltIHsgYmFja2dyb3VuZC1jb2xvcjogIzEzMjk0NiAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6ICMwZTFkMzIgIWltcG9ydGFudDsgfQoKLmRhcmstbW9kZSBzcGFuLmZjLWV2ZW50LXByaW1hcnktZGltIC5kb3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMTMyOTQ2ICFpbXBvcnRhbnQ7IH0KCi5kYXJrLW1vZGUgLmZjLWV2ZW50LXByaW1hcnktZGltOm5vdChhKSAuZmMtbGlzdC1ldmVudC1kb3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMTMyOTQ2ICFpbXBvcnRhbnQ7IH0KCi5kYXJrLW1vZGUgYS5mYy1ldmVudC1zdWNjZXNzLWRpbSB7IGJhY2tncm91bmQtY29sb3I6ICMxNjNhM2EgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjMTYzYTNhICFpbXBvcnRhbnQ7IH0KCi5kYXJrLW1vZGUgLm1vZGFsLWhlYWRlci5mYy1ldmVudC1zdWNjZXNzLWRpbSB7IGJhY2tncm91bmQtY29sb3I6ICMxNjNhM2EgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjMGYyODI4ICFpbXBvcnRhbnQ7IH0KCi5kYXJrLW1vZGUgc3Bhbi5mYy1ldmVudC1zdWNjZXNzLWRpbSAuZG90IHsgYmFja2dyb3VuZC1jb2xvcjogIzE2M2EzYSAhaW1wb3J0YW50OyB9CgouZGFyay1tb2RlIC5mYy1ldmVudC1zdWNjZXNzLWRpbTpub3QoYSkgLmZjLWxpc3QtZXZlbnQtZG90IHsgYmFja2dyb3VuZC1jb2xvcjogIzE2M2EzYSAhaW1wb3J0YW50OyB9CgouZGFyay1tb2RlIGEuZmMtZXZlbnQtaW5mby1kaW0geyBiYWNrZ3JvdW5kLWNvbG9yOiAjMTMzNTQyICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogIzEzMzU0MiAhaW1wb3J0YW50OyB9CgouZGFyay1tb2RlIC5tb2RhbC1oZWFkZXIuZmMtZXZlbnQtaW5mby1kaW0geyBiYWNrZ3JvdW5kLWNvbG9yOiAjMTMzNTQyICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogIzBkMjUyZSAhaW1wb3J0YW50OyB9CgouZGFyay1tb2RlIHNwYW4uZmMtZXZlbnQtaW5mby1kaW0gLmRvdCB7IGJhY2tncm91bmQtY29sb3I6ICMxMzM1NDIgIWltcG9ydGFudDsgfQoKLmRhcmstbW9kZSAuZmMtZXZlbnQtaW5mby1kaW06bm90KGEpIC5mYy1saXN0LWV2ZW50LWRvdCB7IGJhY2tncm91bmQtY29sb3I6ICMxMzM1NDIgIWltcG9ydGFudDsgfQoKLmRhcmstbW9kZSBhLmZjLWV2ZW50LXdhcm5pbmctZGltIHsgYmFja2dyb3VuZC1jb2xvcjogIzM2MzQyMiAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6ICMzNjM0MjIgIWltcG9ydGFudDsgfQoKLmRhcmstbW9kZSAubW9kYWwtaGVhZGVyLmZjLWV2ZW50LXdhcm5pbmctZGltIHsgYmFja2dyb3VuZC1jb2xvcjogIzM2MzQyMiAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6ICMyNjI1MTggIWltcG9ydGFudDsgfQoKLmRhcmstbW9kZSBzcGFuLmZjLWV2ZW50LXdhcm5pbmctZGltIC5kb3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMzYzNDIyICFpbXBvcnRhbnQ7IH0KCi5kYXJrLW1vZGUgLmZjLWV2ZW50LXdhcm5pbmctZGltOm5vdChhKSAuZmMtbGlzdC1ldmVudC1kb3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMzYzNDIyICFpbXBvcnRhbnQ7IH0KCi5kYXJrLW1vZGUgYS5mYy1ldmVudC1kYW5nZXItZGltIHsgYmFja2dyb3VuZC1jb2xvcjogIzM0MjQyYiAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6ICMzNDI0MmIgIWltcG9ydGFudDsgfQoKLmRhcmstbW9kZSAubW9kYWwtaGVhZGVyLmZjLWV2ZW50LWRhbmdlci1kaW0geyBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQyNDJiICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogIzI1MWExZiAhaW1wb3J0YW50OyB9CgouZGFyay1tb2RlIHNwYW4uZmMtZXZlbnQtZGFuZ2VyLWRpbSAuZG90IHsgYmFja2dyb3VuZC1jb2xvcjogIzM0MjQyYiAhaW1wb3J0YW50OyB9CgouZGFyay1tb2RlIC5mYy1ldmVudC1kYW5nZXItZGltOm5vdChhKSAuZmMtbGlzdC1ldmVudC1kb3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMzQyNDJiICFpbXBvcnRhbnQ7IH0KCi5kYXJrLW1vZGUgYS5mYy1ldmVudC1zZWNvbmRhcnktZGltIHsgYmFja2dyb3VuZC1jb2xvcjogIzFiMjUzMiAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6ICMxYjI1MzIgIWltcG9ydGFudDsgfQoKLmRhcmstbW9kZSAubW9kYWwtaGVhZGVyLmZjLWV2ZW50LXNlY29uZGFyeS1kaW0geyBiYWNrZ3JvdW5kLWNvbG9yOiAjMWIyNTMyICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogIzEyMTkyMSAhaW1wb3J0YW50OyB9CgouZGFyay1tb2RlIHNwYW4uZmMtZXZlbnQtc2Vjb25kYXJ5LWRpbSAuZG90IHsgYmFja2dyb3VuZC1jb2xvcjogIzFiMjUzMiAhaW1wb3J0YW50OyB9CgouZGFyay1tb2RlIC5mYy1ldmVudC1zZWNvbmRhcnktZGltOm5vdChhKSAuZmMtbGlzdC1ldmVudC1kb3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMWIyNTMyICFpbXBvcnRhbnQ7IH0KCi5kYXJrLW1vZGUgYS5mYy1ldmVudC1kYXJrLWRpbSB7IGJhY2tncm91bmQtY29sb3I6ICMxNjFlMjkgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjMTYxZTI5ICFpbXBvcnRhbnQ7IH0KCi5kYXJrLW1vZGUgLm1vZGFsLWhlYWRlci5mYy1ldmVudC1kYXJrLWRpbSB7IGJhY2tncm91bmQtY29sb3I6ICMxNjFlMjkgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjMGQxMjE4ICFpbXBvcnRhbnQ7IH0KCi5kYXJrLW1vZGUgc3Bhbi5mYy1ldmVudC1kYXJrLWRpbSAuZG90IHsgYmFja2dyb3VuZC1jb2xvcjogIzE2MWUyOSAhaW1wb3J0YW50OyB9CgouZGFyay1tb2RlIC5mYy1ldmVudC1kYXJrLWRpbTpub3QoYSkgLmZjLWxpc3QtZXZlbnQtZG90IHsgYmFja2dyb3VuZC1jb2xvcjogIzE2MWUyOSAhaW1wb3J0YW50OyB9CgouZGFyay1tb2RlIGEuZmMtZXZlbnQtYmx1ZS1kaW0geyBiYWNrZ3JvdW5kLWNvbG9yOiAjMWUyZjQ2ICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogIzFlMmY0NiAhaW1wb3J0YW50OyB9CgouZGFyay1tb2RlIC5tb2RhbC1oZWFkZXIuZmMtZXZlbnQtYmx1ZS1kaW0geyBiYWNrZ3JvdW5kLWNvbG9yOiAjMWUyZjQ2ICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogIzE2MjMzNCAhaW1wb3J0YW50OyB9CgouZGFyay1tb2RlIHNwYW4uZmMtZXZlbnQtYmx1ZS1kaW0gLmRvdCB7IGJhY2tncm91bmQtY29sb3I6ICMxZTJmNDYgIWltcG9ydGFudDsgfQoKLmRhcmstbW9kZSAuZmMtZXZlbnQtYmx1ZS1kaW06bm90KGEpIC5mYy1saXN0LWV2ZW50LWRvdCB7IGJhY2tncm91bmQtY29sb3I6ICMxZTJmNDYgIWltcG9ydGFudDsgfQoKLmRhcmstbW9kZSBhLmZjLWV2ZW50LWF6dXJlLWRpbSB7IGJhY2tncm91bmQtY29sb3I6ICMxNTJhNDYgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjMTUyYTQ2ICFpbXBvcnRhbnQ7IH0KCi5kYXJrLW1vZGUgLm1vZGFsLWhlYWRlci5mYy1ldmVudC1henVyZS1kaW0geyBiYWNrZ3JvdW5kLWNvbG9yOiAjMTUyYTQ2ICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogIzBmMWUzMiAhaW1wb3J0YW50OyB9CgouZGFyay1tb2RlIHNwYW4uZmMtZXZlbnQtYXp1cmUtZGltIC5kb3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMTUyYTQ2ICFpbXBvcnRhbnQ7IH0KCi5kYXJrLW1vZGUgLmZjLWV2ZW50LWF6dXJlLWRpbTpub3QoYSkgLmZjLWxpc3QtZXZlbnQtZG90IHsgYmFja2dyb3VuZC1jb2xvcjogIzE1MmE0NiAhaW1wb3J0YW50OyB9CgouZGFyay1tb2RlIGEuZmMtZXZlbnQtaW5kaWdvLWRpbSB7IGJhY2tncm91bmQtY29sb3I6ICMxYTIzM2QgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjMWEyMzNkICFpbXBvcnRhbnQ7IH0KCi5kYXJrLW1vZGUgLm1vZGFsLWhlYWRlci5mYy1ldmVudC1pbmRpZ28tZGltIHsgYmFja2dyb3VuZC1jb2xvcjogIzFhMjMzZCAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6ICMxMjE5MmIgIWltcG9ydGFudDsgfQoKLmRhcmstbW9kZSBzcGFuLmZjLWV2ZW50LWluZGlnby1kaW0gLmRvdCB7IGJhY2tncm91bmQtY29sb3I6ICMxYTIzM2QgIWltcG9ydGFudDsgfQoKLmRhcmstbW9kZSAuZmMtZXZlbnQtaW5kaWdvLWRpbTpub3QoYSkgLmZjLWxpc3QtZXZlbnQtZG90IHsgYmFja2dyb3VuZC1jb2xvcjogIzFhMjMzZCAhaW1wb3J0YW50OyB9CgouZGFyay1tb2RlIGEuZmMtZXZlbnQtcHVycGxlLWRpbSB7IGJhY2tncm91bmQtY29sb3I6ICMyNTI4NDcgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjMjUyODQ3ICFpbXBvcnRhbnQ7IH0KCi5kYXJrLW1vZGUgLm1vZGFsLWhlYWRlci5mYy1ldmVudC1wdXJwbGUtZGltIHsgYmFja2dyb3VuZC1jb2xvcjogIzI1Mjg0NyAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6ICMxYzFmMzYgIWltcG9ydGFudDsgfQoKLmRhcmstbW9kZSBzcGFuLmZjLWV2ZW50LXB1cnBsZS1kaW0gLmRvdCB7IGJhY2tncm91bmQtY29sb3I6ICMyNTI4NDcgIWltcG9ydGFudDsgfQoKLmRhcmstbW9kZSAuZmMtZXZlbnQtcHVycGxlLWRpbTpub3QoYSkgLmZjLWxpc3QtZXZlbnQtZG90IHsgYmFja2dyb3VuZC1jb2xvcjogIzI1Mjg0NyAhaW1wb3J0YW50OyB9CgouZGFyay1tb2RlIGEuZmMtZXZlbnQtcGluay1kaW0geyBiYWNrZ3JvdW5kLWNvbG9yOiAjMzgyNzM5ICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogIzM4MjczOSAhaW1wb3J0YW50OyB9CgouZGFyay1tb2RlIC5tb2RhbC1oZWFkZXIuZmMtZXZlbnQtcGluay1kaW0geyBiYWNrZ3JvdW5kLWNvbG9yOiAjMzgyNzM5ICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogIzI5MWQyYSAhaW1wb3J0YW50OyB9CgouZGFyay1tb2RlIHNwYW4uZmMtZXZlbnQtcGluay1kaW0gLmRvdCB7IGJhY2tncm91bmQtY29sb3I6ICMzODI3MzkgIWltcG9ydGFudDsgfQoKLmRhcmstbW9kZSAuZmMtZXZlbnQtcGluay1kaW06bm90KGEpIC5mYy1saXN0LWV2ZW50LWRvdCB7IGJhY2tncm91bmQtY29sb3I6ICMzODI3MzkgIWltcG9ydGFudDsgfQoKLmRhcmstbW9kZSBhLmZjLWV2ZW50LW9yYW5nZS1kaW0geyBiYWNrZ3JvdW5kLWNvbG9yOiAjMzgzMDJkICFpbXBvcnRhbnQ7IGJvcmRlci1jb2xvcjogIzM4MzAyZCAhaW1wb3J0YW50OyB9CgouZGFyay1tb2RlIC5tb2RhbC1oZWFkZXIuZmMtZXZlbnQtb3JhbmdlLWRpbSB7IGJhY2tncm91bmQtY29sb3I6ICMzODMwMmQgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjMmEyNDIyICFpbXBvcnRhbnQ7IH0KCi5kYXJrLW1vZGUgc3Bhbi5mYy1ldmVudC1vcmFuZ2UtZGltIC5kb3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMzgzMDJkICFpbXBvcnRhbnQ7IH0KCi5kYXJrLW1vZGUgLmZjLWV2ZW50LW9yYW5nZS1kaW06bm90KGEpIC5mYy1saXN0LWV2ZW50LWRvdCB7IGJhY2tncm91bmQtY29sb3I6ICMzODMwMmQgIWltcG9ydGFudDsgfQoKLmRhcmstbW9kZSBhLmZjLWV2ZW50LXRlYWwtZGltIHsgYmFja2dyb3VuZC1jb2xvcjogIzE2MzYzNyAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6ICMxNjM2MzcgIWltcG9ydGFudDsgfQoKLmRhcmstbW9kZSAubW9kYWwtaGVhZGVyLmZjLWV2ZW50LXRlYWwtZGltIHsgYmFja2dyb3VuZC1jb2xvcjogIzE2MzYzNyAhaW1wb3J0YW50OyBib3JkZXItY29sb3I6ICMwZjI0MjUgIWltcG9ydGFudDsgfQoKLmRhcmstbW9kZSBzcGFuLmZjLWV2ZW50LXRlYWwtZGltIC5kb3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMTYzNjM3ICFpbXBvcnRhbnQ7IH0KCi5kYXJrLW1vZGUgLmZjLWV2ZW50LXRlYWwtZGltOm5vdChhKSAuZmMtbGlzdC1ldmVudC1kb3QgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMTYzNjM3ICFpbXBvcnRhbnQ7IH0KCi5kYXJrLW1vZGUgLmNvZGUtYmxvY2ssIC5kYXJrLW1vZGUgLmNhcmQtcHJldmlldywgLmRhcmstbW9kZSAuY2FyZCAuY2FyZC1pbm5lciArIC50YWJsZSAudGItdG54LWhlYWQsIC5kYXJrLW1vZGUgLmNhcmQtYm9yZGVyZWQsIC5kYXJrLW1vZGUgLmthbmJhbi1hZGQtdGFzaywgLmRhcmstbW9kZSAua2FuYmFuLWJvYXJkLWhlYWRlciwgLmRhcmstbW9kZSAua2FuYmFuLWl0ZW0sIC5kYXJrLW1vZGUgLmthbmJhbi1ib2FyZCAua2FuYmFuLWRyYWc6ZW1wdHksIC5kYXJrLW1vZGUgLmFjY29yZGlvbi1pdGVtOm5vdCg6bGFzdC1jaGlsZCkgLmFjY29yZGlvbi1oZWFkLCAuZGFyay1tb2RlIC5hY2NvcmRpb24taXRlbTpub3QoOmxhc3QtY2hpbGQpIC5hY2NvcmRpb24taW5uZXIsIC5kYXJrLW1vZGUgLmFjY29yZGlvbi1pdGVtOmxhc3QtY2hpbGQgLmFjY29yZGlvbi1pbm5lciwgLmRhcmstbW9kZSAubmstZG93bmxvYWQgeyBib3JkZXItY29sb3I6ICMxZDJkNDA7IH0KCi5kYXJrLW1vZGUgLmFjY29yZGlvbjpub3QoLmFjY29yZGlvbi1zMik6bm90KC5hY2NvcmRpb24tczMpIHsgYm9yZGVyLWNvbG9yOiAjMWQyZDQwICFpbXBvcnRhbnQ7IH0KCi5kYXJrLW1vZGUgLmNhcmQuYmctbGlnaHQgLmNhcmQtaGVhZGVyLCAuZGFyay1tb2RlIC5jYXJkLmJnLWxpZ2h0ZXIgLmNhcmQtaGVhZGVyLCAuZGFyay1tb2RlIC5kdWFsLWxpc3Rib3ggLmNhcmQuZHVhbC1saXN0Ym94X19pdGVtOmhvdmVyIC5jYXJkLWhlYWRlciwgLmR1YWwtbGlzdGJveCAuZGFyay1tb2RlIC5jYXJkLmR1YWwtbGlzdGJveF9faXRlbTpob3ZlciAuY2FyZC1oZWFkZXIgeyBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMik7IH0KCi5kYXJrLW1vZGUgLm5rLXRiLWxpc3QuaXMtc2VwYXJhdGUgLm5rLXRiLWl0ZW0gPiAubmstdGItY29sIHsgYm9yZGVyLXRvcC1jb2xvcjogIzFkMmQ0MDsgYm9yZGVyLWJvdHRvbS1jb2xvcjogIzFkMmQ0MDsgfQoKLmRhcmstbW9kZSAubmstdGItbGlzdC5pcy1zZXBhcmF0ZSAubmstdGItaXRlbSA+IC5uay10Yi1jb2w6Zmlyc3QtY2hpbGQgeyBib3JkZXItbGVmdC1jb2xvcjogIzFkMmQ0MDsgfQoKLmRhcmstbW9kZSAubmstdGItbGlzdC5pcy1zZXBhcmF0ZSAubmstdGItaXRlbSA+IC5uay10Yi1jb2w6bGFzdC1jaGlsZCB7IGJvcmRlci1yaWdodC1jb2xvcjogIzFkMmQ0MDsgfQoKLmRhcmstbW9kZSAubW9kYWwtZm9vdGVyLmJnLWxpZ2h0IHsgYmFja2dyb3VuZC1jb2xvcjogIzExMTcxZiAhaW1wb3J0YW50OyB9CgouZGFyay1tb2RlIC5rYW5iYW4tcHJpbWFyeSB7IGJvcmRlci10b3AtY29sb3I6ICMwOTcxZmU7IH0KCi5kYXJrLW1vZGUgLmthbmJhbi1zdWNjZXNzIHsgYm9yZGVyLXRvcC1jb2xvcjogIzFlZTBhYzsgfQoKLmRhcmstbW9kZSAua2FuYmFuLWluZm8geyBib3JkZXItdG9wLWNvbG9yOiAjMDljMmRlOyB9CgouZGFyay1tb2RlIC5rYW5iYW4td2FybmluZyB7IGJvcmRlci10b3AtY29sb3I6ICNmNGJkMGU7IH0KCi5kYXJrLW1vZGUgLmthbmJhbi1kYW5nZXIgeyBib3JkZXItdG9wLWNvbG9yOiAjZTg1MzQ3OyB9CgouZGFyay1tb2RlLnVpLWJvcmRlcmVkIC5jYXJkLCAuZGFyay1tb2RlLnVpLWJvcmRlcmVkIC5jb2RlLWJsb2NrLCAuZGFyay1tb2RlLnVpLWJvcmRlcmVkIC5hY2NvcmRpb246bm90KC5hY2NvcmRpb24tczIpOm5vdCguYWNjb3JkaW9uLXMzKSwgLmRhcmstbW9kZS51aS1ib3JkZXJlZCAuY2FyZCAuY2FyZC1pbm5lciArIC50YWJsZSAudGItdG54LWhlYWQsIC5kYXJrLW1vZGUudWktYm9yZGVyZWQgLmNhcmQtYm9yZGVyZWQsIC5kYXJrLW1vZGUudWktYm9yZGVyZWQgLm5rLWRvd25sb2FkIHsgYm9yZGVyLWNvbG9yOiAjMWQyZDQwOyB9CgouZGFyay1tb2RlLnVpLWJvcmRlcmVkIC5uay10Yi1saXN0LmlzLXNlcGFyYXRlIC5uay10Yi1pdGVtID4gLm5rLXRiLWNvbCB7IGJvcmRlci10b3AtY29sb3I6ICMxZDJkNDA7IGJvcmRlci1ib3R0b20tY29sb3I6ICMxZDJkNDA7IH0KCi5kYXJrLW1vZGUudWktYm9yZGVyZWQgLm5rLXRiLWxpc3QuaXMtc2VwYXJhdGUgLm5rLXRiLWl0ZW0gPiAubmstdGItY29sOmZpcnN0LWNoaWxkIHsgYm9yZGVyLWxlZnQtY29sb3I6ICMxZDJkNDA7IH0KCi5kYXJrLW1vZGUudWktYm9yZGVyZWQgLm5rLXRiLWxpc3QuaXMtc2VwYXJhdGUgLm5rLXRiLWl0ZW0gPiAubmstdGItY29sOmxhc3QtY2hpbGQgeyBib3JkZXItcmlnaHQtY29sb3I6ICMxZDJkNDA7IH0KCi5kYXJrLW1vZGUgLm5rLW9yZGVyLW92d2ctZGF0YS5idXkgeyBib3JkZXItY29sb3I6ICMxYTkyNzY7IH0KCi5kYXJrLW1vZGUgLm5rLW9yZGVyLW92d2ctZGF0YS5zZWxsIHsgYm9yZGVyLWNvbG9yOiAjMGU0ZmE4OyB9CgouZGFyay1tb2RlIC5uay1zaWRlYmFyLW92ZXJsYXkgeyBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuNik7IH0KCi5kYXJrLW1vZGUgLnRvZ2dsZS1vdmVybGF5LCAuZGFyay1tb2RlIC5uay1jaGF0LXByb2ZpbGUtb3ZlcmxheSB7IGJhY2tncm91bmQ6IHJnYmEoNywgMTAsIDE1LCAwLjc1KTsgfQoKLmRhcmstbW9kZSAuc3dhbDItY29udGFpbmVyLnN3YWwyLWJhY2tkcm9wLXNob3cgeyBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuODUpOyB9CgouZGFyay1tb2RlIC5tb2RhbC1iYWNrZHJvcCB7IG9wYWNpdHk6IC45OyBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuOSk7IH0KCi5kYXJrLW1vZGUgLm5rLXNpZGViYXIgLm5rLW1lbnUgPiBsaTpob3ZlciA+IGEsIC5kYXJrLW1vZGUgLm5rLXNpZGViYXIgLm5rLW1lbnUgPiBsaS5hY3RpdmUgPiBhLCAuZGFyay1tb2RlIC5uay1zaWRlYmFyIC5uay1tZW51ID4gbGkuY3VycmVudC1tZW51ID4gYSwgLmRhcmstbW9kZSAud2FsbGV0LWl0ZW0gYTpiZWZvcmUgeyBiYWNrZ3JvdW5kOiAjMTgyNTM2OyB9CgouZGFyay1tb2RlIC5pcy1saWdodCAubmstc2lkZWJhci1mb290ZXIsIC5kYXJrLW1vZGUgLmlzLWRhcmsgLm5rLXNpZGViYXItZm9vdGVyLCAuZGFyay1tb2RlIC5pcy10aGVtZSAubmstc2lkZWJhci1mb290ZXIsIC5kYXJrLW1vZGUgLm5rLXNpZGViYXItZm9vdGVyIHsgYmFja2dyb3VuZDogIzEwMTkyNDsgfQoKLmRhcmstbW9kZSAuYnV5c2VsbC1jYy1jaG9vc2VuLCAuZGFyay1tb2RlIC5idXlzZWxsLXBtLWxpc3QgeyBiYWNrZ3JvdW5kOiAjMTQxYzI2OyB9CgouZGFyay1tb2RlIC5uay13Z3ctYWRkIGEgLmFkZC1pY29uOmJlZm9yZSB7IGJhY2tncm91bmQ6ICMxMDE5MjQ7IH0KCi5kYXJrLW1vZGUgLmNhcmQuaXMtZGFyayB7IGJhY2tncm91bmQ6ICMwYjMxNzUgIWltcG9ydGFudDsgYm9yZGVyLWNvbG9yOiAjMGIzMTc1OyB9CgouZGFyay1tb2RlIC50cmFueC1pdGVtOm5vdCg6bGFzdC1jaGlsZCksIC5kYXJrLW1vZGUgLm5rLXJlZndnIC5uay1yZWZ3Zy1pbnZpdGUsIC5kYXJrLW1vZGUgLm5rLXdndy1hY3Rpb25zLCAuZGFyay1tb2RlIC5jYXJkLWN1c3RvbS1zMSAuY2FyZC1pbm5lci1ncm91cCwgLmRhcmstbW9kZSAubmsta3ljLWFwcC1pY29uIC5pY29uLCAuZGFyay1tb2RlIC5uay1reWNmbS1oZWFkOm5vdCg6bGFzdC1jaGlsZCksIC5kYXJrLW1vZGUgLm5rLWt5Y2ZtLWNvbnRlbnQ6bm90KDpsYXN0LWNoaWxkKSwgLmRhcmstbW9kZSAubmsta3ljZm0tZm9vdGVyOm5vdCg6bGFzdC1jaGlsZCkgeyBib3JkZXItY29sb3I6ICMxZDJkNDA7IH0KCi5kYXJrLW1vZGUgLm5rLXdnNC1zd2l0Y2hlciA+IGxpID4gLmRyb3Bkb3duID4gYSwgLmRhcmstbW9kZSAuYnV5c2VsbC1jYy1jaG9vc2VuLCAuZGFyay1tb2RlIC5uay1reWNmbS1sYWJlbCwgLmRhcmstbW9kZSAuYnV5c2VsbC1jYy1pdGVtOm5vdCg6bGFzdC1jaGlsZCksIC5kYXJrLW1vZGUgLmJ1eXNlbGwtY2MtZHJvcGRvd24gLmRyb3Bkb3duLW1lbnUsIC5kYXJrLW1vZGUgLmJ1eXNlbGwtcG0tbGlzdCwgLmRhcmstbW9kZSAuYnV5c2VsbC1wbS1pdGVtOm5vdCg6bGFzdC1jaGlsZCksIC5kYXJrLW1vZGUgLmJ1eXNlbGwtb3ZlcnZpZXctbGlzdCwgLmRhcmstbW9kZSAuYnV5c2VsbC1vdmVydmlldy1pdGVtOm5vdCg6bGFzdC1vZi10eXBlKSB7IGJvcmRlci1jb2xvcjogIzM4NGQ2OTsgfQoKLmRhcmstbW9kZSAuYnV5c2VsbC1wbS1sYWJlbDpiZWZvcmUgeyBib3JkZXItY29sb3I6ICM0YTY2OGE7IH0KCi5kYXJrLW1vZGUgLm5rLWt5Y2ZtLWNvdW50IHsgYm9yZGVyLWNvbG9yOiAjNzA4N2E0OyBjb2xvcjogIzgwOTRhZTsgfQoKLmRhcmstbW9kZSAudHJhbngtbGFiZWwsIC5kYXJrLW1vZGUgLm5rLXdnMS10aXRsZSwgLmRhcmstbW9kZSAubGVhZC10ZXh0LWxnLCAuZGFyay1tb2RlIC5pcy1kYXJrIC5uay13Z3ctYmFsYW5jZSAuYW1vdW50LCAuZGFyay1tb2RlIC5jb2luLW5hbWUsIC5kYXJrLW1vZGUgLm5rLXdnNy1zdGF0cyAubnVtYmVyLWxnLCAuZGFyay1tb2RlIC5uay13Zzctc3RhdHMgLm51bWJlciwgLmRhcmstbW9kZSAuYnV5c2VsbC1wbS1sYWJlbCAucG0tbmFtZSwgLmRhcmstbW9kZSAubmsta3ljLWFwcC1pY29uIC5pY29uLCAuZGFyay1tb2RlIC53YWxsZXQtYmFsYW5jZSwgLmRhcmstbW9kZSAubmstd2c1LWFtb3VudCAuYW1vdW50IHsgY29sb3I6ICNmZmYgIWltcG9ydGFudDsgfQoKLmRhcmstbW9kZSAubmstd2d3LWJhbGFuY2UgLmFtb3VudCwgLmRhcmstbW9kZSAudHJhbngtYW1vdW50IC5udW1iZXIsIC5kYXJrLW1vZGUgLnVzZXItYmFsYW5jZS1hbHQsIC5kYXJrLW1vZGUgLnRyYW54LWFtb3VudCAubnVtYmVyLXNtLCAuZGFyay1tb2RlIC5uay13Z3ctYWN0aW9ucyBhIHsgY29sb3I6ICNiNmM2ZTM7IH0KCi5kYXJrLW1vZGUgLm5rLXdndy1iYWxhbmNlIC5hbW91bnQtc20sIC5kYXJrLW1vZGUgLnRyYW54LWFtb3VudCAubnVtYmVyIHNwYW4geyBjb2xvcjogIzgwOTRhZTsgfQoKLmRhcmstbW9kZSAuaXMtZGFyayAubmstd2d3LWJhbGFuY2UgLmFtb3VudC1zbSB7IGNvbG9yOiAjNmJhYWZlOyB9CgouZGFyay1tb2RlIC51aS1ib3JkZXJlZCAubmstdGItbGlzdC5pcy1zZXBhcmF0ZSAubmstdGItaXRlbSA+IC5uay10Yi1jb2w6Zmlyc3QtY2hpbGQsIC5kYXJrLW1vZGUgLnVpLWJvcmRlcmVkIC5uay10Yi1saXN0LmlzLXNlcGFyYXRlIC5uay10Yi1pdGVtID4gLm5rLXRiLWNvbCB7IGJvcmRlci1jb2xvcjogIzFkMmQ0MCAhaW1wb3J0YW50OyB9CgouZGFyay1tb2RlIC5uay10Yi1saXN0LmlzLXNlcGFyYXRlIC5uay10Yi1pdGVtID4gLm5rLXRiLWNvbCwgLmRhcmstbW9kZSAubmstdGItbGlzdC5pcy1zZXBhcmF0ZSAubmstdGItaXRlbTpob3ZlciAubmstdGItYWN0aW9uLWhpZGRlbiB7IGJhY2tncm91bmQtY29sb3I6ICMxNDFjMjY7IH0KCi5kYXJrLW1vZGUgLm5rLXRiLWxpc3QgLnRiLXByb2R1Y3QgLnRpdGxlIHsgY29sb3I6ICNmZmY7IH0KCi5kYXJrLW1vZGUgLmR1YWwtbGlzdGJveCAuZHVhbC1saXN0Ym94X19hdmFpbGFibGUsIC5kYXJrLW1vZGUgLmR1YWwtbGlzdGJveCAuZHVhbC1saXN0Ym94X19zZWxlY3RlZCB7IGJvcmRlci1jb2xvcjogIzM4NGQ2OTsgfQoKLmRhcmstbW9kZSAuZHVhbC1saXN0Ym94IC5kdWFsLWxpc3Rib3hfX3RpdGxlIHsgYm9yZGVyLWxlZnQtY29sb3I6ICMzODRkNjk7IGJvcmRlci1yaWdodC1jb2xvcjogIzM4NGQ2OTsgYm9yZGVyLXRvcC1jb2xvcjogIzM4NGQ2OTsgfQoKLmRhcmstbW9kZSAuZHVhbC1saXN0Ym94IC5kdWFsLWxpc3Rib3hfX2l0ZW0geyBib3JkZXItYm90dG9tLWNvbG9yOiAjMzg0ZDY5OyB9CgpAbWVkaWEgKG1heC13aWR0aDogNTc2cHgpIHsgLmRhcmstbW9kZSAubmstYmxvY2stdG9vbHMtdG9nZ2xlIC50b2dnbGUtZXhwYW5kLWNvbnRlbnQgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMjEyZDNkOyB9IH0KCi8qISBFTkQgQGlPICovCg=="}},"time_used":267,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":111,"receive":156,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"clear-vault.online/myaccount/js/toastr.js","fqdn":"clear-vault.online","domain":"clear-vault.online","tld":"online"},"ip":{"addr":"163.61.188.222","port":443,"asn":0,"as":"","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://clear-vault.online/","date":"2025-08-07T20:48:21.211Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.clear-vault.online","organization":""},"issuer":{"commonName":"R10","organization":"Let's Encrypt"},"validity":{"start":"Mon, 16 Jun 2025 11:19:04 GMT","end":"Sun, 14 Sep 2025 11:19:03 GMT"},"fingerprint":{"sha1":"B5:E4:FF:81:2F:18:5B:84:17:4F:FD:F3:B1:30:00:31:3C:9C:0B:6F","sha256":"D8:BC:E6:FB:32:84:D6:43:47:2F:20:BA:56:C3:6C:DA:94:89:5F:DD:A3:3B:02:B9:36:2B:50:1E:79:03:E9:D6"}}},"request":{"raw":"GET /myaccount/js/toastr.js HTTP/1.1\r\nHost: clear-vault.online\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.5\r\nAccept-Encoding: gzip, deflate, br\r\nDNT: 1\r\nConnection: keep-alive\r\nReferer: https://clear-vault.online/\r\nCookie: PHPSESSID=1f922d27e0c65bdcb87ee1a396055a92\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/3 200 OK\r\ncontent-type: text/javascript\r\nlast-modified: Thu, 11 May 2023 18:14:15 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 1996\r\ndate: Thu, 07 Aug 2025 20:48:21 GMT\r\nserver: LiteSpeed\r\nstrict-transport-security: max-age=16070400;\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","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":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":8035,"size_decoded":0,"mime_type":"text/javascript","magic":"JavaScript source, Unicode text, UTF-8 text, with CRLF line terminators","md5":"b8309849622865e0321015ec2482645d","sha1":"5ee2d93004b15046be73afc88d29d0b780d165bd","sha256":"3bffa2cee14e483c528eeade0e59f4705555bf047c2400b0bf9fda105129b638","sha512":"ab01b20bf9f714db876acd866a2641dae72ea17562e6a9a69609e340c9ad109a9f56f8c72a0815d966a505f16540e4c75f34978df34f5b487908b76ce6d0cd0e","ssdeep":"96:N6mApHxN4DcSDaeD88DG+v+LxyX5Y7LuQpbnt4g4EDNHChmGTotgl4NZjOKjv9:NBK+vxpYnPD4eNCfTo6SNZjOKh","tlshash":"38f1f0c1331fa75b4edb239c9036944cfa7de232854a147bb8a996986974708d3e32dc","first_seen":"2023-03-08T22:47:56Z","last_seen":"2026-08-11T12:54:12.933898Z","times_seen":1030,"resource_available":true,"data":"LyoNCiAqIFRvYXN0cg0KICogVmVyc2lvbiAyLjAuMQ0KICogQ29weXJpZ2h0IDIwMTIgSm9obiBQYXBhIGFuZCBIYW5zIEZqw6RsbGVtYXJrLiAgDQogKiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgDQogKiBVc2UsIHJlcHJvZHVjdGlvbiwgZGlzdHJpYnV0aW9uLCBhbmQgbW9kaWZpY2F0aW9uIG9mIHRoaXMgY29kZSBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgDQogKiBjb25kaXRpb25zIG9mIHRoZSBNSVQgbGljZW5zZSwgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwDQogKg0KICogQXV0aG9yOiBKb2huIFBhcGEgYW5kIEhhbnMgRmrDpGxsZW1hcmsNCiAqIFByb2plY3Q6IGh0dHBzOi8vZ2l0aHViLmNvbS9Db2RlU2V2ZW4vdG9hc3RyDQogKi8NCjsgKGZ1bmN0aW9uIChkZWZpbmUpIHsNCglkZWZpbmUoWydqcXVlcnknXSwgZnVuY3Rpb24gKCQpIHsNCgkJcmV0dXJuIChmdW5jdGlvbiAoKSB7DQoJCQl2YXIgdmVyc2lvbiA9ICcyLjAuMSc7DQoJCQl2YXIgJGNvbnRhaW5lcjsNCgkJCXZhciBsaXN0ZW5lcjsNCgkJCXZhciB0b2FzdElkID0gMDsNCgkJCXZhciB0b2FzdFR5cGUgPSB7DQoJCQkJZXJyb3I6ICdlcnJvcicsDQoJCQkJaW5mbzogJ2luZm8nLA0KCQkJCXN1Y2Nlc3M6ICdzdWNjZXNzJywNCgkJCQl3YXJuaW5nOiAnd2FybmluZycNCgkJCX07DQoNCgkJCXZhciB0b2FzdHIgPSB7DQoJCQkJY2xlYXI6IGNsZWFyLA0KCQkJCWVycm9yOiBlcnJvciwNCgkJCQlnZXRDb250YWluZXI6IGdldENvbnRhaW5lciwNCgkJCQlpbmZvOiBpbmZvLA0KCQkJCW9wdGlvbnM6IHt9LA0KCQkJCXN1YnNjcmliZTogc3Vic2NyaWJlLA0KCQkJCXN1Y2Nlc3M6IHN1Y2Nlc3MsDQoJCQkJdmVyc2lvbjogdmVyc2lvbiwNCgkJCQl3YXJuaW5nOiB3YXJuaW5nDQoJCQl9Ow0KDQoJCQlyZXR1cm4gdG9hc3RyOw0KDQoJCQkvLyNyZWdpb24gQWNjZXNzaWJsZSBNZXRob2RzDQoJCQlmdW5jdGlvbiBlcnJvcihtZXNzYWdlLCB0aXRsZSwgb3B0aW9uc092ZXJyaWRlKSB7DQoJCQkJcmV0dXJuIG5vdGlmeSh7DQoJCQkJCXR5cGU6IHRvYXN0VHlwZS5lcnJvciwNCgkJCQkJaWNvbkNsYXNzOiBnZXRPcHRpb25zKCkuaWNvbkNsYXNzZXMuZXJyb3IsDQoJCQkJCW1lc3NhZ2U6IG1lc3NhZ2UsDQoJCQkJCW9wdGlvbnNPdmVycmlkZTogb3B0aW9uc092ZXJyaWRlLA0KCQkJCQl0aXRsZTogdGl0bGUNCgkJCQl9KTsNCgkJCX0NCg0KCQkJZnVuY3Rpb24gaW5mbyhtZXNzYWdlLCB0aXRsZSwgb3B0aW9uc092ZXJyaWRlKSB7DQoJCQkJcmV0dXJuIG5vdGlmeSh7DQoJCQkJCXR5cGU6IHRvYXN0VHlwZS5pbmZvLA0KCQkJCQlpY29uQ2xhc3M6IGdldE9wdGlvbnMoKS5pY29uQ2xhc3Nlcy5pbmZvLA0KCQkJCQltZXNzYWdlOiBtZXNzYWdlLA0KCQkJCQlvcHRpb25zT3ZlcnJpZGU6IG9wdGlvbnNPdmVycmlkZSwNCgkJCQkJdGl0bGU6IHRpdGxlDQoJCQkJfSk7DQoJCQl9DQoNCgkJCWZ1bmN0aW9uIHN1YnNjcmliZShjYWxsYmFjaykgew0KCQkJCWxpc3RlbmVyID0gY2FsbGJhY2s7DQoJCQl9DQoNCgkJCWZ1bmN0aW9uIHN1Y2Nlc3MobWVzc2FnZSwgdGl0bGUsIG9wdGlvbnNPdmVycmlkZSkgew0KCQkJCXJldHVybiBub3RpZnkoew0KCQkJCQl0eXBlOiB0b2FzdFR5cGUuc3VjY2VzcywNCgkJCQkJaWNvbkNsYXNzOiBnZXRPcHRpb25zKCkuaWNvbkNsYXNzZXMuc3VjY2VzcywNCgkJCQkJbWVzc2FnZTogbWVzc2FnZSwNCgkJCQkJb3B0aW9uc092ZXJyaWRlOiBvcHRpb25zT3ZlcnJpZGUsDQoJCQkJCXRpdGxlOiB0aXRsZQ0KCQkJCX0pOw0KCQkJfQ0KDQoJCQlmdW5jdGlvbiB3YXJuaW5nKG1lc3NhZ2UsIHRpdGxlLCBvcHRpb25zT3ZlcnJpZGUpIHsNCgkJCQlyZXR1cm4gbm90aWZ5KHsNCgkJCQkJdHlwZTogdG9hc3RUeXBlLndhcm5pbmcsDQoJCQkJCWljb25DbGFzczogZ2V0T3B0aW9ucygpLmljb25DbGFzc2VzLndhcm5pbmcsDQoJCQkJCW1lc3NhZ2U6IG1lc3NhZ2UsDQoJCQkJCW9wdGlvbnNPdmVycmlkZTogb3B0aW9uc092ZXJyaWRlLA0KCQkJCQl0aXRsZTogdGl0bGUNCgkJCQl9KTsNCgkJCX0NCg0KCQkJZnVuY3Rpb24gY2xlYXIoJHRvYXN0RWxlbWVudCkgew0KCQkJCXZhciBvcHRpb25zID0gZ2V0T3B0aW9ucygpOw0KCQkJCWlmICghJGNvbnRhaW5lcikgeyBnZXRDb250YWluZXIob3B0aW9ucyk7IH0NCgkJCQlpZiAoJHRvYXN0RWxlbWVudCAmJiAkKCc6Zm9jdXMnLCAkdG9hc3RFbGVtZW50KS5sZW5ndGggPT09IDApIHsNCgkJCQkJJHRvYXN0RWxlbWVudFtvcHRpb25zLmhpZGVNZXRob2RdKHsNCgkJCQkJCWR1cmF0aW9uOiBvcHRpb25zLmhpZGVEdXJhdGlvbiwNCgkJCQkJCWVhc2luZzogb3B0aW9ucy5oaWRlRWFzaW5nLA0KCQkJCQkJY29tcGxldGU6IGZ1bmN0aW9uICgpIHsgcmVtb3ZlVG9hc3QoJHRvYXN0RWxlbWVudCk7IH0NCgkJCQkJfSk7DQoJCQkJCXJldHVybjsNCgkJCQl9DQoJCQkJaWYgKCRjb250YWluZXIuY2hpbGRyZW4oKS5sZW5ndGgpIHsNCgkJCQkJJGNvbnRhaW5lcltvcHRpb25zLmhpZGVNZXRob2RdKHsNCgkJCQkJCWR1cmF0aW9uOiBvcHRpb25zLmhpZGVEdXJhdGlvbiwNCgkJCQkJCWVhc2luZzogb3B0aW9ucy5oaWRlRWFzaW5nLA0KCQkJCQkJY29tcGxldGU6IGZ1bmN0aW9uICgpIHsgJGNvbnRhaW5lci5yZW1vdmUoKTsgfQ0KCQkJCQl9KTsNCgkJCQl9DQoJCQl9DQoJCQkvLyNlbmRyZWdpb24NCg0KCQkJLy8jcmVnaW9uIEludGVybmFsIE1ldGhvZHMNCg0KCQkJZnVuY3Rpb24gZ2V0RGVmYXVsdHMoKSB7DQoJCQkJcmV0dXJuIHsNCgkJCQkJdGFwVG9EaXNtaXNzOiB0cnVlLA0KCQkJCQl0b2FzdENsYXNzOiAndG9hc3QnLA0KCQkJCQljb250YWluZXJJZDogJ3RvYXN0LWNvbnRhaW5lcicsDQoJCQkJCWRlYnVnOiBmYWxzZSwNCg0KCQkJCQlzaG93TWV0aG9kOiAnZmFkZUluJywgLy9mYWRlSW4sIHNsaWRlRG93biwgYW5kIHNob3cgYXJlIGJ1aWx0IGludG8galF1ZXJ5DQoJCQkJCXNob3dEdXJhdGlvbjogMzAwLA0KCQkJCQlzaG93RWFzaW5nOiAnc3dpbmcnLCAvL3N3aW5nIGFuZCBsaW5lYXIgYXJlIGJ1aWx0IGludG8galF1ZXJ5DQoJCQkJCW9uU2hvd246IHVuZGVmaW5lZCwNCgkJCQkJaGlkZU1ldGhvZDogJ2ZhZGVPdXQnLA0KCQkJCQloaWRlRHVyYXRpb246IDEwMDAsDQoJCQkJCWhpZGVFYXNpbmc6ICdzd2luZycsDQoJCQkJCW9uSGlkZGVuOiB1bmRlZmluZWQsDQoNCgkJCQkJZXh0ZW5kZWRUaW1lT3V0OiAxMDAwLA0KCQkJCQlpY29uQ2xhc3Nlczogew0KCQkJCQkJZXJyb3I6ICd0b2FzdC1lcnJvcicsDQoJCQkJCQlpbmZvOiAndG9hc3QtaW5mbycsDQoJCQkJCQlzdWNjZXNzOiAndG9hc3Qtc3VjY2VzcycsDQoJCQkJCQl3YXJuaW5nOiAndG9hc3Qtd2FybmluZycNCgkJCQkJfSwNCgkJCQkJaWNvbkNsYXNzOiAndG9hc3QtaW5mbycsDQoJCQkJCXBvc2l0aW9uQ2xhc3M6ICd0b2FzdC10b3AtcmlnaHQnLA0KCQkJCQl0aW1lT3V0OiA1MDAwLCAvLyBTZXQgdGltZU91dCBhbmQgZXh0ZW5kZWRUaW1lb3V0IHRvIDAgdG8gbWFrZSBpdCBzdGlja3kNCgkJCQkJdGl0bGVDbGFzczogJ3RvYXN0LXRpdGxlJywNCgkJCQkJbWVzc2FnZUNsYXNzOiAndG9hc3QtbWVzc2FnZScsDQoJCQkJCXRhcmdldDogJ2JvZHknLA0KCQkJCQljbG9zZUh0bWw6ICc8YnV0dG9uPiZ0aW1lczs8L2J1dHRvbj4nLA0KCQkJCQluZXdlc3RPblRvcDogdHJ1ZQ0KCQkJCX07DQoJCQl9DQoNCgkJCWZ1bmN0aW9uIHB1Ymxpc2goYXJncykgew0KCQkJCWlmICghbGlzdGVuZXIpIHsNCgkJCQkJcmV0dXJuOw0KCQkJCX0NCgkJCQlsaXN0ZW5lcihhcmdzKTsNCgkJCX0NCg0KCQkJZnVuY3Rpb24gbm90aWZ5KG1hcCkgew0KCQkJCXZhcg0KCQkJCQlvcHRpb25zID0gZ2V0T3B0aW9ucygpLA0KCQkJCQlpY29uQ2xhc3MgPSBtYXAuaWNvbkNsYXNzIHx8IG9wdGlvbnMuaWNvbkNsYXNzOw0KDQoJCQkJaWYgKHR5cGVvZiAobWFwLm9wdGlvbnNPdmVycmlkZSkgIT09ICd1bmRlZmluZWQnKSB7DQoJCQkJCW9wdGlvbnMgPSAkLmV4dGVuZChvcHRpb25zLCBtYXAub3B0aW9uc092ZXJyaWRlKTsNCgkJCQkJaWNvbkNsYXNzID0gbWFwLm9wdGlvbnNPdmVycmlkZS5pY29uQ2xhc3MgfHwgaWNvbkNsYXNzOw0KCQkJCX0NCg0KCQkJCXRvYXN0SWQrKzsNCg0KCQkJCSRjb250YWluZXIgPSBnZXRDb250YWluZXIob3B0aW9ucyk7DQoJCQkJdmFyDQoJCQkJCWludGVydmFsSWQgPSBudWxsLA0KCQkJCQkkdG9hc3RFbGVtZW50ID0gJCgnPGRpdi8+JyksDQoJCQkJCSR0aXRsZUVsZW1lbnQgPSAkKCc8ZGl2Lz4nKSwNCgkJCQkJJG1lc3NhZ2VFbGVtZW50ID0gJCgnPGRpdi8+JyksDQoJCQkJCSRjbG9zZUVsZW1lbnQgPSAkKG9wdGlvbnMuY2xvc2VIdG1sKSwNCgkJCQkJcmVzcG9uc2UgPSB7DQoJCQkJCQl0b2FzdElkOiB0b2FzdElkLA0KCQkJCQkJc3RhdGU6ICd2aXNpYmxlJywNCgkJCQkJCXN0YXJ0VGltZTogbmV3IERhdGUoKSwNCgkJCQkJCW9wdGlvbnM6IG9wdGlvbnMsDQoJCQkJCQltYXA6IG1hcA0KCQkJCQl9Ow0KDQoJCQkJaWYgKG1hcC5pY29uQ2xhc3MpIHsNCgkJCQkJJHRvYXN0RWxlbWVudC5hZGRDbGFzcyhvcHRpb25zLnRvYXN0Q2xhc3MpLmFkZENsYXNzKGljb25DbGFzcyk7DQoJCQkJfQ0KDQoJCQkJaWYgKG1hcC50aXRsZSkgew0KCQkJCQkkdGl0bGVFbGVtZW50LmFwcGVuZChtYXAudGl0bGUpLmFkZENsYXNzKG9wdGlvbnMudGl0bGVDbGFzcyk7DQoJCQkJCSR0b2FzdEVsZW1lbnQuYXBwZW5kKCR0aXRsZUVsZW1lbnQpOw0KCQkJCX0NCg0KCQkJCWlmIChtYXAubWVzc2FnZSkgew0KCQkJCQkkbWVzc2FnZUVsZW1lbnQuYXBwZW5kKG1hcC5tZXNzYWdlKS5hZGRDbGFzcyhvcHRpb25zLm1lc3NhZ2VDbGFzcyk7DQoJCQkJCSR0b2FzdEVsZW1lbnQuYXBwZW5kKCRtZXNzYWdlRWxlbWVudCk7DQoJCQkJfQ0KDQoJCQkJaWYgKG9wdGlvbnMuY2xvc2VCdXR0b24pIHsNCgkJCQkJJGNsb3NlRWxlbWVudC5hZGRDbGFzcygndG9hc3QtY2xvc2UtYnV0dG9uJyk7DQoJCQkJCSR0b2FzdEVsZW1lbnQucHJlcGVuZCgkY2xvc2VFbGVtZW50KTsNCgkJCQl9DQoNCgkJCQkkdG9hc3RFbGVtZW50LmhpZGUoKTsNCgkJCQlpZiAob3B0aW9ucy5uZXdlc3RPblRvcCkgew0KCQkJCQkkY29udGFpbmVyLnByZXBlbmQoJHRvYXN0RWxlbWVudCk7DQoJCQkJfSBlbHNlIHsNCgkJCQkJJGNvbnRhaW5lci5hcHBlbmQoJHRvYXN0RWxlbWVudCk7DQoJCQkJfQ0KDQoNCgkJCQkkdG9hc3RFbGVtZW50W29wdGlvbnMuc2hvd01ldGhvZF0oDQoJCQkJCXsgZHVyYXRpb246IG9wdGlvbnMuc2hvd0R1cmF0aW9uLCBlYXNpbmc6IG9wdGlvbnMuc2hvd0Vhc2luZywgY29tcGxldGU6IG9wdGlvbnMub25TaG93biB9DQoJCQkJKTsNCgkJCQlpZiAob3B0aW9ucy50aW1lT3V0ID4gMCkgew0KCQkJCQlpbnRlcnZhbElkID0gc2V0VGltZW91dChoaWRlVG9hc3QsIG9wdGlvbnMudGltZU91dCk7DQoJCQkJfQ0KDQoJCQkJJHRvYXN0RWxlbWVudC5ob3ZlcihzdGlja0Fyb3VuZCwgZGVsYXllZGhpZGVUb2FzdCk7DQoJCQkJaWYgKCFvcHRpb25zLm9uY2xpY2sgJiYgb3B0aW9ucy50YXBUb0Rpc21pc3MpIHsNCgkJCQkJJHRvYXN0RWxlbWVudC5jbGljayhoaWRlVG9hc3QpOw0KCQkJCX0NCgkJCQlpZiAob3B0aW9ucy5jbG9zZUJ1dHRvbiAmJiAkY2xvc2VFbGVtZW50KSB7DQoJCQkJCSRjbG9zZUVsZW1lbnQuY2xpY2soZnVuY3Rpb24gKGV2ZW50KSB7DQoJCQkJCQlldmVudC5zdG9wUHJvcGFnYXRpb24oKTsNCgkJCQkJCWhpZGVUb2FzdCh0cnVlKTsNCgkJCQkJfSk7DQoJCQkJfQ0KDQoJCQkJaWYgKG9wdGlvbnMub25jbGljaykgew0KCQkJCQkkdG9hc3RFbGVtZW50LmNsaWNrKGZ1bmN0aW9uICgpIHsNCgkJCQkJCW9wdGlvbnMub25jbGljaygpOw0KCQkJCQkJaGlkZVRvYXN0KCk7DQoJCQkJCX0pOw0KCQkJCX0NCg0KCQkJCXB1Ymxpc2gocmVzcG9uc2UpOw0KDQoJCQkJaWYgKG9wdGlvbnMuZGVidWcgJiYgY29uc29sZSkgew0KCQkJCQljb25zb2xlLmxvZyhyZXNwb25zZSk7DQoJCQkJfQ0KDQoJCQkJcmV0dXJuICR0b2FzdEVsZW1lbnQ7DQoNCgkJCQlmdW5jdGlvbiBoaWRlVG9hc3Qob3ZlcnJpZGUpIHsNCgkJCQkJaWYgKCQoJzpmb2N1cycsICR0b2FzdEVsZW1lbnQpLmxlbmd0aCAmJiAhb3ZlcnJpZGUpIHsNCgkJCQkJCXJldHVybjsNCgkJCQkJfQ0KCQkJCQlyZXR1cm4gJHRvYXN0RWxlbWVudFtvcHRpb25zLmhpZGVNZXRob2RdKHsNCgkJCQkJCWR1cmF0aW9uOiBvcHRpb25zLmhpZGVEdXJhdGlvbiwNCgkJCQkJCWVhc2luZzogb3B0aW9ucy5oaWRlRWFzaW5nLA0KCQkJCQkJY29tcGxldGU6IGZ1bmN0aW9uICgpIHsNCgkJCQkJCQlyZW1vdmVUb2FzdCgkdG9hc3RFbGVtZW50KTsNCgkJCQkJCQlpZiAob3B0aW9ucy5vbkhpZGRlbikgew0KCQkJCQkJCQlvcHRpb25zLm9uSGlkZGVuKCk7DQoJCQkJCQkJfQ0KCQkJCQkJCXJlc3BvbnNlLnN0YXRlID0gJ2hpZGRlbic7DQoJCQkJCQkJcmVzcG9uc2UuZW5kVGltZSA9IG5ldyBEYXRlKCksDQoJCQkJCQkJcHVibGlzaChyZXNwb25zZSk7DQoJCQkJCQl9DQoJCQkJCX0pOw0KCQkJCX0NCg0KCQkJCWZ1bmN0aW9uIGRlbGF5ZWRoaWRlVG9hc3QoKSB7DQoJCQkJCWlmIChvcHRpb25zLnRpbWVPdXQgPiAwIHx8IG9wdGlvbnMuZXh0ZW5kZWRUaW1lT3V0ID4gMCkgew0KCQkJCQkJaW50ZXJ2YWxJZCA9IHNldFRpbWVvdXQoaGlkZVRvYXN0LCBvcHRpb25zLmV4dGVuZGVkVGltZU91dCk7DQoJCQkJCX0NCgkJCQl9DQoNCgkJCQlmdW5jdGlvbiBzdGlja0Fyb3VuZCgpIHsNCgkJCQkJY2xlYXJUaW1lb3V0KGludGVydmFsSWQpOw0KCQkJCQkkdG9hc3RFbGVtZW50LnN0b3AodHJ1ZSwgdHJ1ZSlbb3B0aW9ucy5zaG93TWV0aG9kXSgNCgkJCQkJCXsgZHVyYXRpb246IG9wdGlvbnMuc2hvd0R1cmF0aW9uLCBlYXNpbmc6IG9wdGlvbnMuc2hvd0Vhc2luZyB9DQoJCQkJCSk7DQoJCQkJfQ0KCQkJfQ0KCQkJZnVuY3Rpb24gZ2V0Q29udGFpbmVyKG9wdGlvbnMpIHsNCgkJCQlpZiAoIW9wdGlvbnMpIHsgb3B0aW9ucyA9IGdldE9wdGlvbnMoKTsgfQ0KCQkJCSRjb250YWluZXIgPSAkKCcjJyArIG9wdGlvbnMuY29udGFpbmVySWQpOw0KCQkJCWlmICgkY29udGFpbmVyLmxlbmd0aCkgew0KCQkJCQlyZXR1cm4gJGNvbnRhaW5lcjsNCgkJCQl9DQoJCQkJJGNvbnRhaW5lciA9ICQoJzxkaXYvPicpDQoJCQkJCS5hdHRyKCdpZCcsIG9wdGlvbnMuY29udGFpbmVySWQpDQoJCQkJCS5hZGRDbGFzcyhvcHRpb25zLnBvc2l0aW9uQ2xhc3MpOw0KCQkJCSRjb250YWluZXIuYXBwZW5kVG8oJChvcHRpb25zLnRhcmdldCkpOw0KCQkJCXJldHVybiAkY29udGFpbmVyOw0KCQkJfQ0KDQoJCQlmdW5jdGlvbiBnZXRPcHRpb25zKCkgew0KCQkJCXJldHVybiAkLmV4dGVuZCh7fSwgZ2V0RGVmYXVsdHMoKSwgdG9hc3RyLm9wdGlvbnMpOw0KCQkJfQ0KDQoJCQlmdW5jdGlvbiByZW1vdmVUb2FzdCgkdG9hc3RFbGVtZW50KSB7DQoJCQkJaWYgKCEkY29udGFpbmVyKSB7ICRjb250YWluZXIgPSBnZXRDb250YWluZXIoKTsgfQ0KCQkJCWlmICgkdG9hc3RFbGVtZW50LmlzKCc6dmlzaWJsZScpKSB7DQoJCQkJCXJldHVybjsNCgkJCQl9DQoJCQkJJHRvYXN0RWxlbWVudC5yZW1vdmUoKTsNCgkJCQkkdG9hc3RFbGVtZW50ID0gbnVsbDsNCgkJCQlpZiAoJGNvbnRhaW5lci5jaGlsZHJlbigpLmxlbmd0aCA9PT0gMCkgew0KCQkJCQkkY29udGFpbmVyLnJlbW92ZSgpOw0KCQkJCX0NCgkJCX0NCgkJCS8vI2VuZHJlZ2lvbg0KDQoJCX0pKCk7DQoJfSk7DQp9KHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZSA6IGZ1bmN0aW9uIChkZXBzLCBmYWN0b3J5KSB7DQoJaWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnICYmIG1vZHVsZS5leHBvcnRzKSB7IC8vTm9kZQ0KCQltb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShkZXBzWzBdKSk7DQoJfSBlbHNlIHsNCgkJd2luZG93Wyd0b2FzdHInXSA9IGZhY3Rvcnkod2luZG93WydqUXVlcnknXSk7DQoJfQ0KfSkpOw=="}},"time_used":466,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":466,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"clear-vault.online/","fqdn":"clear-vault.online","domain":"clear-vault.online","tld":"online"},"ip":{"addr":"163.61.188.222","port":443,"asn":0,"as":"","country":"","country_code":"zz"},"is_navigation_request":true,"resource_type":"document","requested_by":"","date":"2025-08-07T20:48:19.412Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.clear-vault.online","organization":""},"issuer":{"commonName":"R10","organization":"Let's Encrypt"},"validity":{"start":"Mon, 16 Jun 2025 11:19:04 GMT","end":"Sun, 14 Sep 2025 11:19:03 GMT"},"fingerprint":{"sha1":"B5:E4:FF:81:2F:18:5B:84:17:4F:FD:F3:B1:30:00:31:3C:9C:0B:6F","sha256":"D8:BC:E6:FB:32:84:D6:43:47:2F:20:BA:56:C3:6C:DA:94:89:5F:DD:A3:3B:02:B9:36:2B:50:1E:79:03:E9:D6"}}},"request":{"raw":"GET / HTTP/1.1\r\nHost: clear-vault.online\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,image/avif,image/webp,*/*;q=0.8\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate, br\r\nDNT: 1\r\nUpgrade-Insecure-Requests: 1\r\nConnection: keep-alive\r\nSec-Fetch-Dest: document\r\nSec-Fetch-Mode: navigate\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 OK\r\nx-powered-by: PHP/8.0.30\r\nset-cookie: PHPSESSID=1f922d27e0c65bdcb87ee1a396055a92; path=/; secure\r\nexpires: Thu, 19 Nov 1981 08:52:00 GMT\r\ncache-control: no-store, no-cache, must-revalidate\r\npragma: no-cache\r\nvary: Accept-Encoding\r\ncontent-type: text/html; charset=UTF-8\r\ncontent-encoding: gzip\r\ndate: Thu, 07 Aug 2025 20:48:20 GMT\r\nserver: LiteSpeed\r\nalt-svc: h3=\":443\"; ma=2592000, h3-29=\":443\"; ma=2592000, h3-Q050=\":443\"; ma=2592000, h3-Q046=\":443\"; ma=2592000, h3-Q043=\":443\"; ma=2592000, quic=\":443\"; ma=2592000; v=\"43,46\"\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"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":"SweetAlert","description":"SweetAlert is a JavaScript library that provides alternative alert and modal dialog boxes for web applications, with customisable features, aiming to improve the user interface of the default browser dialogs.","website":"https://sweetalert.js.org","common_platform_enumeration":"","icon":"SweetAlert.png","categories":["JavaScript libraries"]},{"name":"PHP:8.0.30","description":"PHP is a general-purpose scripting language used for web development.","website":"https://php.net","common_platform_enumeration":"cpe:2.3:a:php:php:*:*:*:*:*:*:*:*","icon":"PHP.svg","categories":["Programming languages"]},{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":6650,"size_decoded":0,"mime_type":"text/html; charset=UTF-8","magic":"JavaScript source, ASCII text, with very long lines (969)","md5":"f81c4d100afcd41ec1d657de0a5a8e51","sha1":"cc75132ca352608177d7a87aa18f0c2e09bc4535","sha256":"525f17ddf6b11b8d7dfb649849953e0bab415f20068129f9aa9804d97b006703","sha512":"535c0a58cc83f27a840355f363a8a6dbcc9a133bdaf6be26822e0cb26ce849ae079710420f92fe724562a24cde1fcfa1cae35954ec81ada05c2811e17ff802c4","ssdeep":"96:SmnZB8htCC2Sohfqli1HiyoaxmIJjEfjxGCJIRrVayQTi6r1VWin0UD8:VZB8hXOfqli1CsQpIRpaysiCGw0UD8","tlshash":"3ad1a61668f0849b160359c296fae71d5e649103da0a6c1472dc82e5bfcefcccca76c9","first_seen":"2025-08-07T20:48:57.543374Z","last_seen":"2025-08-07T20:48:57.543374Z","times_seen":1,"resource_available":false,"data":null}},"time_used":2803,"timings":{"blocked":1342,"dns":1108,"connect":107,"send":0,"wait":119,"receive":0,"ssl":121},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"clear-vault.online/myaccount/css/toastr.css","fqdn":"clear-vault.online","domain":"clear-vault.online","tld":"online"},"ip":{"addr":"163.61.188.222","port":443,"asn":0,"as":"","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://clear-vault.online/","date":"2025-08-07T20:48:21.192Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.clear-vault.online","organization":""},"issuer":{"commonName":"R10","organization":"Let's Encrypt"},"validity":{"start":"Mon, 16 Jun 2025 11:19:04 GMT","end":"Sun, 14 Sep 2025 11:19:03 GMT"},"fingerprint":{"sha1":"B5:E4:FF:81:2F:18:5B:84:17:4F:FD:F3:B1:30:00:31:3C:9C:0B:6F","sha256":"D8:BC:E6:FB:32:84:D6:43:47:2F:20:BA:56:C3:6C:DA:94:89:5F:DD:A3:3B:02:B9:36:2B:50:1E:79:03:E9:D6"}}},"request":{"raw":"GET /myaccount/css/toastr.css HTTP/1.1\r\nHost: clear-vault.online\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.5\r\nAccept-Encoding: gzip, deflate, br\r\nDNT: 1\r\nConnection: keep-alive\r\nReferer: https://clear-vault.online/\r\nCookie: PHPSESSID=1f922d27e0c65bdcb87ee1a396055a92\r\nSec-Fetch-Dest: style\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/3 200 OK\r\ncache-control: public, max-age=604800\r\nexpires: Thu, 14 Aug 2025 20:48:21 GMT\r\ncontent-type: text/css\r\nlast-modified: Thu, 11 May 2023 18:14:18 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 2936\r\ndate: Thu, 07 Aug 2025 20:48:21 GMT\r\nserver: LiteSpeed\r\nstrict-transport-security: max-age=16070400;\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","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":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":6988,"size_decoded":0,"mime_type":"text/css","magic":"Unicode text, UTF-8 text, with very long lines (821), with CRLF line terminators","md5":"6f3bc1fed2acd85204fa04c82b6c872d","sha1":"ee57a6e6fd2ee673e0f14d4647f92d4e8d1eab0b","sha256":"bf3687811bb3e963a9fabd3d280d0c7f670257b151be140936dfc6c6cefa00dc","sha512":"623490a79cf3e7004d3cf62b79ccf45d90aeaa5adf613118982dca9bb64726b20c8fa3ddcf00d4b4e955cf82124c7b5165728202f548ff6f0323f2f9884d20c7","ssdeep":"96:N6mQU2sp5h7UkfnqHyweI2AJV5bUbLcTWQ78GhJZCjt+TWP+zLmlDUTWKG8Czym7:NBQU2C4yweItJVdQLY8sybttjGZVM/","tlshash":"bde1b539c7407608aaf20669b71a5607ef2a6053db9c5d6a7d9f916cf387b908c30e84","first_seen":"2023-04-15T05:54:03Z","last_seen":"2026-08-11T12:54:12.908905Z","times_seen":997,"resource_available":false,"data":"LyoNCiAqIFRvYXN0cg0KICogVmVyc2lvbiAyLjAuMQ0KICogQ29weXJpZ2h0IDIwMTIgSm9obiBQYXBhIGFuZCBIYW5zIEZqw6RsbGVtYXJrLiAgDQogKiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgDQogKiBVc2UsIHJlcHJvZHVjdGlvbiwgZGlzdHJpYnV0aW9uLCBhbmQgbW9kaWZpY2F0aW9uIG9mIHRoaXMgY29kZSBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgDQogKiBjb25kaXRpb25zIG9mIHRoZSBNSVQgbGljZW5zZSwgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwDQogKg0KICogQXV0aG9yOiBKb2huIFBhcGEgYW5kIEhhbnMgRmrDpGxsZW1hcmsNCiAqIFByb2plY3Q6IGh0dHBzOi8vZ2l0aHViLmNvbS9Db2RlU2V2ZW4vdG9hc3RyDQogKi8NCi50b2FzdC10aXRsZSB7DQogIGZvbnQtd2VpZ2h0OiBib2xkOw0KfQ0KLnRvYXN0LW1lc3NhZ2Ugew0KICAtbXMtd29yZC13cmFwOiBicmVhay13b3JkOw0KICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7DQp9DQoudG9hc3QtbWVzc2FnZSBhLA0KLnRvYXN0LW1lc3NhZ2UgbGFiZWwgew0KICBjb2xvcjogI2ZmZmZmZjsNCn0NCi50b2FzdC1tZXNzYWdlIGE6aG92ZXIgew0KICBjb2xvcjogI2NjY2NjYzsNCiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOw0KfQ0KDQoudG9hc3QtY2xvc2UtYnV0dG9uIHsNCiAgcG9zaXRpb246IHJlbGF0aXZlOw0KICByaWdodDogLTAuM2VtOw0KICB0b3A6IC0wLjNlbTsNCiAgZmxvYXQ6IHJpZ2h0Ow0KICBmb250LXNpemU6IDIwcHg7DQogIGZvbnQtd2VpZ2h0OiBib2xkOw0KICBjb2xvcjogI2ZmZmZmZjsNCiAgLXdlYmtpdC10ZXh0LXNoYWRvdzogMCAxcHggMCAjZmZmZmZmOw0KICB0ZXh0LXNoYWRvdzogMCAxcHggMCAjZmZmZmZmOw0KICBvcGFjaXR5OiAwLjg7DQogIC1tcy1maWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTgwKTsNCiAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTgwKTsNCn0NCi50b2FzdC1jbG9zZS1idXR0b246aG92ZXIsDQoudG9hc3QtY2xvc2UtYnV0dG9uOmZvY3VzIHsNCiAgY29sb3I6ICMwMDAwMDA7DQogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsNCiAgY3Vyc29yOiBwb2ludGVyOw0KICBvcGFjaXR5OiAwLjQ7DQogIC1tcy1maWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTQwKTsNCiAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTQwKTsNCn0NCg0KLypBZGRpdGlvbmFsIHByb3BlcnRpZXMgZm9yIGJ1dHRvbiB2ZXJzaW9uDQogaU9TIHJlcXVpcmVzIHRoZSBidXR0b24gZWxlbWVudCBpbnN0ZWFkIG9mIGFuIGFuY2hvciB0YWcuDQogSWYgeW91IHdhbnQgdGhlIGFuY2hvciB2ZXJzaW9uLCBpdCByZXF1aXJlcyBgaHJlZj0iIyJgLiovDQpidXR0b24udG9hc3QtY2xvc2UtYnV0dG9uIHsNCiAgcGFkZGluZzogMDsNCiAgY3Vyc29yOiBwb2ludGVyOw0KICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsNCiAgYm9yZGVyOiAwOw0KICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7DQp9DQoudG9hc3QtdG9wLWZ1bGwtd2lkdGggew0KICB0b3A6IDA7DQogIHJpZ2h0OiAwOw0KICB3aWR0aDogMTAwJTsNCn0NCi50b2FzdC1ib3R0b20tZnVsbC13aWR0aCB7DQogIGJvdHRvbTogMDsNCiAgcmlnaHQ6IDA7DQogIHdpZHRoOiAxMDAlOw0KfQ0KLnRvYXN0LXRvcC1sZWZ0IHsNCiAgdG9wOiAxMnB4Ow0KICBsZWZ0OiAxMnB4Ow0KfQ0KLnRvYXN0LXRvcC1yaWdodCB7DQogIHRvcDogMTJweDsNCiAgcmlnaHQ6IDEycHg7DQp9DQoudG9hc3QtYm90dG9tLXJpZ2h0IHsNCiAgcmlnaHQ6IDEycHg7DQogIGJvdHRvbTogMTJweDsNCn0NCi50b2FzdC1ib3R0b20tbGVmdCB7DQogIGJvdHRvbTogMTJweDsNCiAgbGVmdDogMTJweDsNCn0NCiN0b2FzdC1jb250YWluZXIgew0KICBwb3NpdGlvbjogZml4ZWQ7DQogIHotaW5kZXg6IDk5OTk5OTsNCiAgLypvdmVycmlkZXMqLw0KDQp9DQojdG9hc3QtY29udGFpbmVyICogew0KICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7DQogIC13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsNCiAgYm94LXNpemluZzogYm9yZGVyLWJveDsNCn0NCiN0b2FzdC1jb250YWluZXIgPiBkaXYgew0KICBtYXJnaW46IDAgMCA2cHg7DQogIHBhZGRpbmc6IDE1cHggMTVweCAxNXB4IDUwcHg7DQogIHdpZHRoOiAzMDBweDsNCiAgLW1vei1ib3JkZXItcmFkaXVzOiAzcHggM3B4IDNweCAzcHg7DQogIC13ZWJraXQtYm9yZGVyLXJhZGl1czogM3B4IDNweCAzcHggM3B4Ow0KICBib3JkZXItcmFkaXVzOiAzcHggM3B4IDNweCAzcHg7DQogIGJhY2tncm91bmQtcG9zaXRpb246IDE1cHggY2VudGVyOw0KICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0Ow0KICAtbW96LWJveC1zaGFkb3c6IDAgMCAxMnB4ICM5OTk5OTk7DQogIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDEycHggIzk5OTk5OTsNCiAgYm94LXNoYWRvdzogMCAwIDEycHggIzk5OTk5OTsNCiAgY29sb3I6ICNmZmZmZmY7DQogIG9wYWNpdHk6IDAuODsNCiAgLW1zLWZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9ODApOw0KICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9ODApOw0KfQ0KI3RvYXN0LWNvbnRhaW5lciA+IDpob3ZlciB7DQogIC1tb3otYm94LXNoYWRvdzogMCAwIDEycHggIzAwMDAwMDsNCiAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDAgMTJweCAjMDAwMDAwOw0KICBib3gtc2hhZG93OiAwIDAgMTJweCAjMDAwMDAwOw0KICBvcGFjaXR5OiAxOw0KICAtbXMtZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0xMDApOw0KICBmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MTAwKTsNCiAgY3Vyc29yOiBwb2ludGVyOw0KfQ0KI3RvYXN0LWNvbnRhaW5lciA+IC50b2FzdC1pbmZvIHsNCiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR3dTVVJCVkVoTHRaYTlTZ05CRU1jOXNVeHhSY29VS1N6U1dJaFhwRk1oaFlXRmhhQmc0eVBZaVdDWFp4QkxFUnNMUlMzRVFrRWZ3Q0tkaldKQXdTS0Nnb0tDY3VkdjRPNVlMcnQ3RXpnWGhpVTMvNCtiMmNrbXdWakpTcEtrUTZ3QWk0Z3doVCt6M3dSQmNFejB5alNzZVVUcmNSeWZzSHNYbUQwQW1iSE9DOUlpOFZJbW51WEJQZ2xIcFE1d3dTVk03c05uVEc3WmE0SndEZENqeHlBaUgzbnlBMm10YVRKdWZpRFo1ZENhcWxJdElMaDFOSGF0Zk41c2t2ang5WjM4bTY5Q2d6dVhtWmdWclBJR0U3NjNKeDlxS3NSb3pXWXc2eE9IZEVSK25uMktrTytCYitVVjVDQk42V0M2UXRCZ2JSVm96cmFoQWJtbTZIdFVzZ3RQQzE5dEZkeFhaWUJPZmtibUZKMVZhSEExVkFIamQwcHA3MG9UWnp2UitFVnJ4MllnZmRzcTZldTU1QkhZUjhobGNraStuK2tFUlVGRzhCckEwQndqZUF2Mk04V0xRQnRjeStTRDZmTnNtbkIzQWxCTHJnVHRWVzFjMlFONGJWV0xBVGFJUzYwSjJEdTV5MVRpSmdqU0J2RlZaZ1Rtd0NVK2RBWkZvUHhHRUVzOG55SEM5QndlMkd2RUp2MldYWmIwdmpkeUZUNEN4azNlL2tJcWxPR29WTHd3UGV2cFlIVCswMFQraFd3WERmNEFKQU9VcVdjRGhid0FBQUFBU1VWT1JLNUNZSUk9IikgIWltcG9ydGFudDsNCn0NCiN0b2FzdC1jb250YWluZXIgPiAudG9hc3QtZXJyb3Igew0KICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUFIT1NVUkJWRWhMclphL1NnTkJFTVp6aDBXS0NDbFNDS2FJWU9FRCtBQUtlUVFMRzhIV3p0TENJbUJyWWFkZ0lkWStnSUtOWWtCRlN3dTdDQW9xQ2dra29HQkkvRTI4UGRiTFptZURMZ3paemN4ODMveloyU1NYQzFqOWZyK0kxSHE5M2cyeXhINGl3TTF2a29CV0FkeENtcHpUeGZrTjJSY3laTmFIRklrU28xMCs4a2d4a1hJVVJWNUhHeFRtRnVjNzVCMlJmUWtweEhHOGFBZ2FBRmEwdEFIcVlGZlE3SXdlMnloT0RrOCtKNEM3eUFvUlRXSTN3LzRrbEdSZ1I0bE83UnBuOStndk15V3ArdXhGaDgrSCtBUmxnTjFuSnVKdVFBWXZOa0Vud0dGY2sxOEVyNHEzZWdFYy9vTyttaExkS2dSeWhkTkZpYWNDMHJsT0NiaE5WejRIOUZuQVlnREJ2VTNRSWlvWmxKRkxKdHNvSFlSRGZpWm9VeUl4cUN0UnBWbEFOcTBFVTRkQXBqcnRnZXpQRmFkNVMxOVdnamtjMGhOVm51RjRIalZBNkM3UXJTSWJ5bEIrb1plM2FIZ0JzcWxOcUtZSDQ4alh5SktNdUFiaXlWSjhLemFCM2VSYzBwZzlWd1E0bmlGcnlJNjhxaU9pM0Fiandkc2ZuQXRrMGJDalRMSktyNm1yRDlnOGlxL1MvQjgxaGd1T01sUVRuVnlHNDB3QWNqbm1nc0NORVNEcmptZTd3ZmZ0UDRQN1NQNE4zQ0paZHZ6b055R3EyYy9IV09YSkdzdlZnK1JBL2syTUMvd042STJZQTJQdDhHa0FBQUFBU1VWT1JLNUNZSUk9IikgIWltcG9ydGFudDsNCn0NCiN0b2FzdC1jb250YWluZXIgPiAudG9hc3Qtc3VjY2VzcyB7DQogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCZ0FBQUFZQ0FZQUFBRGdkejM0QUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzTUFBQTdEQWNkdnFHUUFBQURzU1VSQlZFaExZMkFZQmZRTWdmLy8vM1A4Ky9ldkFJZ3ZBL0ZzSUYrQmF2WUREV01CR3JvYVNNTUJpRThWQzdBWkRySUZhTUZuaWkzQVpUalVnc1VVV1VEQThPZEFINmlRYlFFaHc0SHlHc1BFY0tCWEJJQzRBUmhleDRHNEJzam13ZVUxc29JRmFHZy9XdG9GWlJJWmRFdklNaHhrQ0NqWElWc0FUVjZnRkdBQ3M0UnN3MEVHZ0lJSDNRSllKZ0hTQVJRWkRyV0FCK2phd3pncytRMlVPNDlEN2puUlNSR29FRlJJTGNkbUVNV0dJMGNtMEpKMlFwWUExUkR2Y216SkVXaEFCaEQvcHFyTDBTMENXdUFCS2duUmtpOWxMc2VTN2cyQWxxd0hXUVNLSDRvS0xySUxwUkdoRVFDdzJMaVJVSWE0bHdBQUFBQkpSVTVFcmtKZ2dnPT0iKSAhaW1wb3J0YW50Ow0KfQ0KI3RvYXN0LWNvbnRhaW5lciA+IC50b2FzdC13YXJuaW5nIHsNCiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBR1lTVVJCVkVoTDVaU3ZUc05RRk1iWFpHSUNNWUdZbUpoQVFJSkFJQ1lRUEFBQ2lTREI4QWlJQ1FRSlQ0Q3FRRXdnSnZZQVNBUUNpWmlZbUpoQUlCQVRDQVJKeSs5clRzbGRkOHNLdTFNMCtkTGIwNTd2Ni9sYnEvMnJLMG1TL1RSTmo5Y1dOQUtQWUlKSUk3Z0l4Q2NRNTFjdnFJRCtHSUVYOEFTRzRCMWJLNWdJWkZlUWZvSmRFWE9mZ1g0UUFRZzdrSDJBNjV5UTg3bHl4YjI3c2dna0F6QXVGaGJiZzFLMmtnQ2tCMWJWd3lJUjltMkw3UFJQSWhEVUlYZ0d0eUt3NTc1eXozbFROczZYNEpYbmpWK0xLTS9tM015ZG5UYnRPS0lqdHo2VmhDQnE0dlNtM25jZHJEMmxrMFZnVVhTVktqVkRKWEp6aWpXMVJRZHNVN0Y3N0hlOHU2OGtvTlpUejhPejV5R2E2SjNIM2xaMHhZZ1hCSzJReW1sV1dBK1JXblloc2tMQnYydm1FK2hCTUN0YkE3S1g1ZHJXeVJULzJKc3FaMkl2ZkI5WTRiV0ROTUZiSlJGbUM5RTc0U29TMENxdWx3amtDMCs1YnBjVjFDWjhOTWVqNHBqeTBVK2RvRFFzR3lvMWh6Vkp0dElqaFE3R25CdFJGTjFVYXJVbEg4RjN4aWN0K0hZMDdyRXpvVUdQbFdjalJGUnI0L2dDaFpnYzNaTDJkOG9BQUFBQVNVVk9SSzVDWUlJPSIpICFpbXBvcnRhbnQ7DQp9DQojdG9hc3QtY29udGFpbmVyLnRvYXN0LXRvcC1mdWxsLXdpZHRoID4gZGl2LA0KI3RvYXN0LWNvbnRhaW5lci50b2FzdC1ib3R0b20tZnVsbC13aWR0aCA+IGRpdiB7DQogIHdpZHRoOiA5NiU7DQogIG1hcmdpbjogYXV0bzsNCn0NCi50b2FzdCB7DQogIGJhY2tncm91bmQtY29sb3I6ICMwMzAzMDM7DQp9DQoudG9hc3Qtc3VjY2VzcyB7DQogIGJhY2tncm91bmQtY29sb3I6ICM1MWEzNTE7DQp9DQoudG9hc3QtZXJyb3Igew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjYmQzNjJmOw0KfQ0KLnRvYXN0LWluZm8gew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmY5NmI0Ow0KfQ0KLnRvYXN0LXdhcm5pbmcgew0KICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjg5NDA2Ow0KfQ0KLypSZXNwb25zaXZlIERlc2lnbiovDQpAbWVkaWEgYWxsIGFuZCAobWF4LXdpZHRoOiAyNDBweCkgew0KICAjdG9hc3QtY29udGFpbmVyID4gZGl2IHsNCiAgICBwYWRkaW5nOiA4cHggOHB4IDhweCA1MHB4Ow0KICAgIHdpZHRoOiAxMWVtOw0KICB9DQogICN0b2FzdC1jb250YWluZXIgLnRvYXN0LWNsb3NlLWJ1dHRvbiB7DQogICAgcmlnaHQ6IC0wLjJlbTsNCiAgICB0b3A6IC0wLjJlbTsNCiAgfQ0KfQ0KQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogMjQxcHgpIGFuZCAobWF4LXdpZHRoOiA0ODBweCkgew0KICAjdG9hc3QtY29udGFpbmVyID4gZGl2IHsNCiAgICBwYWRkaW5nOiA4cHggOHB4IDhweCA1MHB4Ow0KICAgIHdpZHRoOiAxOGVtOw0KICB9DQogICN0b2FzdC1jb250YWluZXIgLnRvYXN0LWNsb3NlLWJ1dHRvbiB7DQogICAgcmlnaHQ6IC0wLjJlbTsNCiAgICB0b3A6IC0wLjJlbTsNCiAgfQ0KfQ0KQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDogNDgxcHgpIGFuZCAobWF4LXdpZHRoOiA3NjhweCkgew0KICAjdG9hc3QtY29udGFpbmVyID4gZGl2IHsNCiAgICBwYWRkaW5nOiAxNXB4IDE1cHggMTVweCA1MHB4Ow0KICAgIHdpZHRoOiAyNWVtOw0KICB9DQp9DQp7Im1vZGUiOiJmdWxsIiwiaXNBY3RpdmUiOmZhbHNlfQ=="}},"time_used":267,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":263,"receive":4,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"translate.google.com/translate_a/element.js?cb=googleTranslateElementInit","fqdn":"translate.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.250.74.174","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://clear-vault.online/","date":"2025-08-07T20:48:21.194Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.google.com","organization":""},"issuer":{"commonName":"WR2","organization":"Google Trust Services"},"validity":{"start":"Mon, 07 Jul 2025 08:34:03 GMT","end":"Mon, 29 Sep 2025 08:34:02 GMT"},"fingerprint":{"sha1":"CC:B6:27:D3:02:ED:CD:98:15:4D:FA:8E:6E:11:2C:57:EF:3D:FF:DF","sha256":"F7:00:C9:74:34:57:5E:BE:70:A7:0E:D2:9B:A8:2D:44:F1:CE:14:55:C3:D9:06:3F:83:68:95:A1:C6:B5:7F:26"}}},"request":{"raw":"GET /translate_a/element.js?cb=googleTranslateElementInit HTTP/1.1\r\nHost: translate.google.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.5\r\nAccept-Encoding: gzip, deflate, br\r\nDNT: 1\r\nConnection: keep-alive\r\nReferer: https://clear-vault.online/\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 OK\r\ncontent-type: text/javascript; charset=utf-8\r\nvary: Sec-Fetch-Dest, Sec-Fetch-Mode, Sec-Fetch-Site\r\ncache-control: no-cache, no-store, max-age=0, must-revalidate\r\npragma: no-cache\r\nexpires: Mon, 01 Jan 1990 00:00:00 GMT\r\ndate: Thu, 07 Aug 2025 20:48:21 GMT\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":"OK","fingerprints":null,"data":{"size":78884,"size_decoded":0,"mime_type":"text/javascript; charset=utf-8","magic":"JavaScript source, ASCII text, with very long lines (1801)","md5":"1487d366566a030376dab7241cc7883a","sha1":"a6a374b471a00e4669027fd261a55eda8a315f32","sha256":"c519c8e475e8220b5f00f9e0eca06f797c1a4aa828fede3b0826f324c7ff7266","sha512":"a3c3e10a973ae52b7904097919afb657a3bb4733536c97135cecf1a83a85626197e3c99d6127c7862bfa1d5955912af420f440dd4d57591677ccfc35b17c2c0a","ssdeep":"1536:XL5OCUXAtx+lUH2vCzFFpKbTiMOqbWr1RxgumlL1HvinwNWTe:Xd7BzxKbTwJE1viDe","tlshash":"9e73c8c8b6a674668367f5b5513f000fb23f5899e80c4cacb288d8e16eb5949413bf7d","first_seen":"2025-08-07T20:37:48.96885Z","last_seen":"2025-08-07T21:00:53.29991Z","times_seen":15,"resource_available":true,"data":"CiAgICAvLyBnby9tc3Mtc2V0dXAjNy1sb2FkLXRoZS1qcy1vci1jc3MtZnJvbS15b3VyLWluaXRpYWwtcGFnZQogICAgaWYoIXdpbmRvd1snX0R1bXBFeGNlcHRpb24nXSkgewogICAgICBjb25zdCBfRHVtcEV4Y2VwdGlvbiA9IHdpbmRvd1snX0R1bXBFeGNlcHRpb24nXSB8fCBmdW5jdGlvbihlKSB7CiAgICAgICAgdGhyb3cgZTsKICAgICAgfTsKICAgICAgd2luZG93WydfRHVtcEV4Y2VwdGlvbiddID0gX0R1bXBFeGNlcHRpb247CiAgICB9CiAgInVzZSBzdHJpY3QiO3RoaXMuZGVmYXVsdF90cj10aGlzLmRlZmF1bHRfdHJ8fHt9OyhmdW5jdGlvbihfKXt2YXIgd2luZG93PXRoaXM7CnRyeXsKXy5fRl90b2dnbGVzX2luaXRpYWxpemU9ZnVuY3Rpb24oYSl7KHR5cGVvZiBnbG9iYWxUaGlzIT09InVuZGVmaW5lZCI/Z2xvYmFsVGhpczp0eXBlb2Ygc2VsZiE9PSJ1bmRlZmluZWQiP3NlbGY6dGhpcykuX0ZfdG9nZ2xlc19kZWZhdWx0X3RyPWF8fFtdfTsoMCxfLl9GX3RvZ2dsZXNfaW5pdGlhbGl6ZSkoWzB4YzA4NCwgXSk7Ci8qCgogQ29weXJpZ2h0IFRoZSBDbG9zdXJlIExpYnJhcnkgQXV0aG9ycy4KIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wCiovCi8qCgogQ29weXJpZ2h0IEdvb2dsZSBMTEMKIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wCiovCnZhciBiYSxlYSxzYSx5YSxCYSxDYSxGYSxHYSxIYSxKYSxaYSxlYixqYixsYixtYixzYix0Yix1Yix4Yix5Yix6Yix4LEJiLENiLEViLEliLEtiLExiLE1iO18uYWE9ZnVuY3Rpb24oYSxiKXtpZihFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSlFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLF8uYWEpO2Vsc2V7dmFyIGM9RXJyb3IoKS5zdGFjaztjJiYodGhpcy5zdGFjaz1jKX1hJiYodGhpcy5tZXNzYWdlPVN0cmluZyhhKSk7YiE9PXZvaWQgMCYmKHRoaXMuY2F1c2U9Yil9O2JhPWZ1bmN0aW9uKGEsYil7YT1hLnNwbGl0KCIlcyIpO2Zvcih2YXIgYz0iIixkPWEubGVuZ3RoLTEsZT0wO2U8ZDtlKyspYys9YVtlXSsoZTxiLmxlbmd0aD9iW2VdOiIlcyIpO18uYWEuY2FsbCh0aGlzLGMrYVtkXSl9O2VhPWZ1bmN0aW9uKGEpe2lmKF8uY2EpYShfLmNhKTtlbHNle3ZhciBiOygoYj1kYSkhPW51bGw/YjpkYT1bXSkucHVzaChhKX19OwpfLmphPWZ1bmN0aW9uKCl7IV8uY2EmJl8uaGEmJl8uaWEoKTtyZXR1cm4gXy5jYX07Xy5pYT1mdW5jdGlvbigpe18uY2E9Xy5oYSgpO3ZhciBhOyhhPWRhKT09bnVsbHx8YS5mb3JFYWNoKGVhKTtkYT12b2lkIDB9O18ubGE9ZnVuY3Rpb24oYSl7Xy5jYSYma2EoYSl9O18ubmE9ZnVuY3Rpb24oKXtfLmNhJiZtYShfLmNhKX07Xy5wYT1mdW5jdGlvbihhLGIpe2IuaGFzT3duUHJvcGVydHkoImRpc3BsYXlOYW1lIil8fChiLmRpc3BsYXlOYW1lPWEudG9TdHJpbmcoKSk7YltvYV09YX07Xy5xYT1mdW5jdGlvbihhKXthJiZ0eXBlb2YgYS5kaXNwb3NlPT0iZnVuY3Rpb24iJiZhLmRpc3Bvc2UoKX07c2E9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTAsYz1hcmd1bWVudHMubGVuZ3RoO2I8YzsrK2Ipe3ZhciBkPWFyZ3VtZW50c1tiXTtfLnJhKGQpP3NhLmFwcGx5KG51bGwsZCk6Xy5xYShkKX19O18udWE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4oMCxfLnRhKShhLGIpPj0wfTsKXy52YT1mdW5jdGlvbihhLGIpe18udWEoYSxiKXx8YS5wdXNoKGIpfTtfLndhPWZ1bmN0aW9uKGEsYil7Yj0oMCxfLnRhKShhLGIpO3ZhciBjOyhjPWI+PTApJiZBcnJheS5wcm90b3R5cGUuc3BsaWNlLmNhbGwoYSxiLDEpO3JldHVybiBjfTtfLnhhPWZ1bmN0aW9uKGEpe3ZhciBiPWEubGVuZ3RoO2lmKGI+MCl7Zm9yKHZhciBjPUFycmF5KGIpLGQ9MDtkPGI7ZCsrKWNbZF09YVtkXTtyZXR1cm4gY31yZXR1cm5bXX07eWE9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MTtjPGFyZ3VtZW50cy5sZW5ndGg7YysrKXt2YXIgZD1hcmd1bWVudHNbY107aWYoXy5yYShkKSl7dmFyIGU9YS5sZW5ndGh8fDAsZj1kLmxlbmd0aHx8MDthLmxlbmd0aD1lK2Y7Zm9yKHZhciBnPTA7ZzxmO2crKylhW2UrZ109ZFtnXX1lbHNlIGEucHVzaChkKX19OwpCYT1mdW5jdGlvbihhLGIpe2I9Ynx8YTtmb3IodmFyIGM9MCxkPTAsZT17fTtkPGEubGVuZ3RoOyl7dmFyIGY9YVtkKytdLGc9Xy56YShmKT8ibyIrXy5BYShmKToodHlwZW9mIGYpLmNoYXJBdCgwKStmO09iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLGcpfHwoZVtnXT0hMCxiW2MrK109Zil9Yi5sZW5ndGg9Y307Q2E9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGMgaW4gYSlpZihiLmNhbGwodm9pZCAwLGFbY10sYyxhKSlyZXR1cm4hMDtyZXR1cm4hMX07Xy5EYT1mdW5jdGlvbihhKXt2YXIgYj1bXSxjPTAsZDtmb3IoZCBpbiBhKWJbYysrXT1hW2RdO3JldHVybiBifTsKRmE9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGMsZCxlPTE7ZTxhcmd1bWVudHMubGVuZ3RoO2UrKyl7ZD1hcmd1bWVudHNbZV07Zm9yKGMgaW4gZClhW2NdPWRbY107Zm9yKHZhciBmPTA7ZjxFYS5sZW5ndGg7ZisrKWM9RWFbZl0sT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGQsYykmJihhW2NdPWRbY10pfX07R2E9ZnVuY3Rpb24oYSl7dmFyIGI9YXJndW1lbnRzLmxlbmd0aDtpZihiPT0xJiZBcnJheS5pc0FycmF5KGFyZ3VtZW50c1swXSkpcmV0dXJuIEdhLmFwcGx5KG51bGwsYXJndW1lbnRzWzBdKTtmb3IodmFyIGM9e30sZD0wO2Q8YjtkKyspY1thcmd1bWVudHNbZF1dPSEwO3JldHVybiBjfTtIYT1mdW5jdGlvbihhKXtyZXR1cm57dmFsdWVPZjphfS52YWx1ZU9mKCl9OwpKYT1mdW5jdGlvbigpe3ZhciBhPW51bGw7aWYoIUlhKXJldHVybiBhO3RyeXt2YXIgYj1mdW5jdGlvbihjKXtyZXR1cm4gY307YT1JYS5jcmVhdGVQb2xpY3koImdvb2cjaHRtbCIse2NyZWF0ZUhUTUw6YixjcmVhdGVTY3JpcHQ6YixjcmVhdGVTY3JpcHRVUkw6Yn0pfWNhdGNoKGMpe31yZXR1cm4gYX07Xy5MYT1mdW5jdGlvbigpe0thPT09dm9pZCAwJiYoS2E9SmEoKSk7cmV0dXJuIEthfTtfLk5hPWZ1bmN0aW9uKGEpe3ZhciBiPV8uTGEoKTthPWI/Yi5jcmVhdGVTY3JpcHRVUkwoYSk6YTtyZXR1cm4gbmV3IF8uTWEoYSl9O18uT2E9ZnVuY3Rpb24oYSl7aWYoYSBpbnN0YW5jZW9mIF8uTWEpcmV0dXJuIGEuZzt0aHJvdyBFcnJvcigidSIpO307Cl8uUGE9ZnVuY3Rpb24oYSxiKXtiPWI9PT12b2lkIDA/ZG9jdW1lbnQ6Yjt2YXIgYyxkO2I9KGQ9KGM9YikucXVlcnlTZWxlY3Rvcik9PW51bGw/dm9pZCAwOmQuY2FsbChjLGErIltub25jZV0iKTtyZXR1cm4gYj09bnVsbD8iIjpiLm5vbmNlfHxiLmdldEF0dHJpYnV0ZSgibm9uY2UiKXx8IiJ9O18uUmE9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5MYSgpO2E9Yj9iLmNyZWF0ZVNjcmlwdChhKTphO3JldHVybiBuZXcgXy5RYShhKX07Xy5TYT1mdW5jdGlvbihhKXtpZihhIGluc3RhbmNlb2YgXy5RYSlyZXR1cm4gYS5nO3Rocm93IEVycm9yKCJ1Iik7fTtfLlRhPWZ1bmN0aW9uKGEsYil7YS5zcmM9Xy5PYShiKTsoYj1fLlBhKCJzY3JpcHQiLGEub3duZXJEb2N1bWVudCkpJiZhLnNldEF0dHJpYnV0ZSgibm9uY2UiLGIpfTtfLlVhPWZ1bmN0aW9uKCl7dmFyIGE9Xy51Lm5hdmlnYXRvcjtyZXR1cm4gYSYmKGE9YS51c2VyQWdlbnQpP2E6IiJ9OwpfLnY9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uVWEoKS5pbmRleE9mKGEpIT0tMX07Xy5YYT1mdW5jdGlvbigpe3JldHVybiBfLlZhPyEhXy5XYSYmXy5XYS5icmFuZHMubGVuZ3RoPjA6ITF9O18uWWE9ZnVuY3Rpb24oKXtyZXR1cm4gXy5YYSgpPyExOl8udigiT3BlcmEiKX07WmE9ZnVuY3Rpb24oKXtyZXR1cm4gXy5WYT8hIV8uV2EmJiEhXy5XYS5wbGF0Zm9ybTohMX07Xy4kYT1mdW5jdGlvbigpe3JldHVybiBfLnYoImlQaG9uZSIpJiYhXy52KCJpUG9kIikmJiFfLnYoImlQYWQiKX07Xy5hYj1mdW5jdGlvbigpe3JldHVybiBfLiRhKCl8fF8udigiaVBhZCIpfHxfLnYoImlQb2QiKX07Xy5iYj1mdW5jdGlvbigpe3JldHVybiBaYSgpP18uV2EucGxhdGZvcm09PT0ibWFjT1MiOl8udigiTWFjaW50b3NoIil9OwpfLmRiPWZ1bmN0aW9uKGEpe3ZhciBiPV8uY2IuYXBwbHkoMSxhcmd1bWVudHMpO2lmKGIubGVuZ3RoPT09MClyZXR1cm4gXy5OYShhWzBdKTtmb3IodmFyIGM9YVswXSxkPTA7ZDxiLmxlbmd0aDtkKyspYys9ZW5jb2RlVVJJQ29tcG9uZW50KGJbZF0pK2FbZCsxXTtyZXR1cm4gXy5OYShjKX07ZWI9ZnVuY3Rpb24oYSl7dGhpcy5zcmM9YTt0aGlzLmc9e307dGhpcy5oPTB9O2piPWZ1bmN0aW9uKGEsYil7Xy53LmNhbGwodGhpcyk7dGhpcy5vPWE7aWYoYil7aWYodGhpcy5sKXRocm93IEVycm9yKCJ5Iik7dGhpcy5sPWI7dGhpcy5oPV8uZmIoYik7dGhpcy5nPW5ldyBnYihfLmhiKGIpKTt0aGlzLmcuQ2UodGhpcy5vLmgoKSk7dGhpcy5qPW5ldyBpYih0aGlzLmgpO3RoaXMuai5zdGFydCgpfX07bGI9ZnVuY3Rpb24oYSl7YT1hLkRnLmNoYXJDb2RlQXQoYS5mYysrKTtyZXR1cm4ga2JbYV19OwptYj1mdW5jdGlvbihhKXt2YXIgYj0wLGM9MDtkb3t2YXIgZD1sYihhKTtifD0oZCYzMSk8PGM7Yys9NX13aGlsZShkJjMyKTtyZXR1cm4gYjwwP2IrNDI5NDk2NzI5NjpifTtfLm5iPWZ1bmN0aW9uKGEpe18udS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgYTt9LDApfTtzYj1mdW5jdGlvbigpe2Zvcih2YXIgYTthPW9iLnJlbW92ZSgpOyl7dHJ5e2EuZy5jYWxsKGEuc2NvcGUpfWNhdGNoKGIpe18ubmIoYil9cGIocWIsYSl9cmI9ITF9O3RiPWZ1bmN0aW9uKCl7fTt1Yj1mdW5jdGlvbigpe307Xy53Yj1mdW5jdGlvbihhKXthPV8udmIoYSk7cmV0dXJuIF8uTmEoYSl9O18udmI9ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1udWxsPyJudWxsIjphPT09dm9pZCAwPyJ1bmRlZmluZWQiOmF9O3hiPWZ1bmN0aW9uKGEpe3ZhciBiPTA7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGI8YS5sZW5ndGg/e2RvbmU6ITEsdmFsdWU6YVtiKytdfTp7ZG9uZTohMH19fTsKeWI9dHlwZW9mIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzPT0iZnVuY3Rpb24iP09iamVjdC5kZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbihhLGIsYyl7aWYoYT09QXJyYXkucHJvdG90eXBlfHxhPT1PYmplY3QucHJvdG90eXBlKXJldHVybiBhO2FbYl09Yy52YWx1ZTtyZXR1cm4gYX07emI9ZnVuY3Rpb24oYSl7YT1bIm9iamVjdCI9PXR5cGVvZiBnbG9iYWxUaGlzJiZnbG9iYWxUaGlzLGEsIm9iamVjdCI9PXR5cGVvZiB3aW5kb3cmJndpbmRvdywib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYsIm9iamVjdCI9PXR5cGVvZiBnbG9iYWwmJmdsb2JhbF07Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDsrK2Ipe3ZhciBjPWFbYl07aWYoYyYmYy5NYXRoPT1NYXRoKXJldHVybiBjfXRocm93IEVycm9yKCJhIik7fTtfLkFiPXpiKHRoaXMpOwp4PWZ1bmN0aW9uKGEsYil7aWYoYilhOnt2YXIgYz1fLkFiO2E9YS5zcGxpdCgiLiIpO2Zvcih2YXIgZD0wO2Q8YS5sZW5ndGgtMTtkKyspe3ZhciBlPWFbZF07aWYoIShlIGluIGMpKWJyZWFrIGE7Yz1jW2VdfWE9YVthLmxlbmd0aC0xXTtkPWNbYV07Yj1iKGQpO2IhPWQmJmIhPW51bGwmJnliKGMsYSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KX19Owp4KCJTeW1ib2wiLGZ1bmN0aW9uKGEpe2lmKGEpcmV0dXJuIGE7dmFyIGI9ZnVuY3Rpb24oZixnKXt0aGlzLmc9Zjt5Yih0aGlzLCJkZXNjcmlwdGlvbiIse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpnfSl9O2IucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ307dmFyIGM9ImpzY29tcF9zeW1ib2xfIisoTWF0aC5yYW5kb20oKSoxRTk+Pj4wKSsiXyIsZD0wLGU9ZnVuY3Rpb24oZil7aWYodGhpcyBpbnN0YW5jZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiYiIpO3JldHVybiBuZXcgYihjKyhmfHwiIikrIl8iK2QrKyxmKX07cmV0dXJuIGV9KTsKeCgiU3ltYm9sLml0ZXJhdG9yIixmdW5jdGlvbihhKXtpZihhKXJldHVybiBhO2E9U3ltYm9sKCJjIik7Zm9yKHZhciBiPSJBcnJheSBJbnQ4QXJyYXkgVWludDhBcnJheSBVaW50OENsYW1wZWRBcnJheSBJbnQxNkFycmF5IFVpbnQxNkFycmF5IEludDMyQXJyYXkgVWludDMyQXJyYXkgRmxvYXQzMkFycmF5IEZsb2F0NjRBcnJheSIuc3BsaXQoIiAiKSxjPTA7YzxiLmxlbmd0aDtjKyspe3ZhciBkPV8uQWJbYltjXV07dHlwZW9mIGQ9PT0iZnVuY3Rpb24iJiZ0eXBlb2YgZC5wcm90b3R5cGVbYV0hPSJmdW5jdGlvbiImJnliKGQucHJvdG90eXBlLGEse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBCYih4Yih0aGlzKSl9fSl9cmV0dXJuIGF9KTtCYj1mdW5jdGlvbihhKXthPXtuZXh0OmF9O2FbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfTtyZXR1cm4gYX07CkNiPXR5cGVvZiBPYmplY3QuY3JlYXRlPT0iZnVuY3Rpb24iP09iamVjdC5jcmVhdGU6ZnVuY3Rpb24oYSl7dmFyIGI9ZnVuY3Rpb24oKXt9O2IucHJvdG90eXBlPWE7cmV0dXJuIG5ldyBifTsKXy5EYj1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoKXtmdW5jdGlvbiBjKCl7fW5ldyBjO1JlZmxlY3QuY29uc3RydWN0KGMsW10sZnVuY3Rpb24oKXt9KTtyZXR1cm4gbmV3IGMgaW5zdGFuY2VvZiBjfWlmKHR5cGVvZiBSZWZsZWN0IT0idW5kZWZpbmVkIiYmUmVmbGVjdC5jb25zdHJ1Y3Qpe2lmKGEoKSlyZXR1cm4gUmVmbGVjdC5jb25zdHJ1Y3Q7dmFyIGI9UmVmbGVjdC5jb25zdHJ1Y3Q7cmV0dXJuIGZ1bmN0aW9uKGMsZCxlKXtjPWIoYyxkKTtlJiZSZWZsZWN0LnNldFByb3RvdHlwZU9mKGMsZS5wcm90b3R5cGUpO3JldHVybiBjfX1yZXR1cm4gZnVuY3Rpb24oYyxkLGUpe2U9PT12b2lkIDAmJihlPWMpO2U9Q2IoZS5wcm90b3R5cGV8fE9iamVjdC5wcm90b3R5cGUpO3JldHVybiBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkuY2FsbChjLGUsZCl8fGV9fSgpOwppZih0eXBlb2YgT2JqZWN0LnNldFByb3RvdHlwZU9mPT0iZnVuY3Rpb24iKUViPU9iamVjdC5zZXRQcm90b3R5cGVPZjtlbHNle3ZhciBGYjthOnt2YXIgR2I9e2E6ITB9LEhiPXt9O3RyeXtIYi5fX3Byb3RvX189R2I7RmI9SGIuYTticmVhayBhfWNhdGNoKGEpe31GYj0hMX1FYj1GYj9mdW5jdGlvbihhLGIpe2EuX19wcm90b19fPWI7aWYoYS5fX3Byb3RvX18hPT1iKXRocm93IG5ldyBUeXBlRXJyb3IoImRgIithKTtyZXR1cm4gYX06bnVsbH1JYj1FYjsKXy55PWZ1bmN0aW9uKGEsYil7YS5wcm90b3R5cGU9Q2IoYi5wcm90b3R5cGUpO2EucHJvdG90eXBlLmNvbnN0cnVjdG9yPWE7aWYoSWIpSWIoYSxiKTtlbHNlIGZvcih2YXIgYyBpbiBiKWlmKGMhPSJwcm90b3R5cGUiKWlmKE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKXt2YXIgZD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGIsYyk7ZCYmT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsYyxkKX1lbHNlIGFbY109YltjXTthLlA9Yi5wcm90b3R5cGV9O18uej1mdW5jdGlvbihhKXt2YXIgYj10eXBlb2YgU3ltYm9sIT0idW5kZWZpbmVkIiYmU3ltYm9sLml0ZXJhdG9yJiZhW1N5bWJvbC5pdGVyYXRvcl07aWYoYilyZXR1cm4gYi5jYWxsKGEpO2lmKHR5cGVvZiBhLmxlbmd0aD09Im51bWJlciIpcmV0dXJue25leHQ6eGIoYSl9O3Rocm93IEVycm9yKCJlYCIrU3RyaW5nKGEpKTt9OwpfLkpiPWZ1bmN0aW9uKGEpe2lmKCEoYSBpbnN0YW5jZW9mIEFycmF5KSl7YT1fLnooYSk7Zm9yKHZhciBiLGM9W107IShiPWEubmV4dCgpKS5kb25lOyljLnB1c2goYi52YWx1ZSk7YT1jfXJldHVybiBhfTtfLkI9ZnVuY3Rpb24oYSl7cmV0dXJuIEtiKGEsYSl9O0tiPWZ1bmN0aW9uKGEsYil7YS5yYXc9YjtPYmplY3QuZnJlZXplJiYoT2JqZWN0LmZyZWV6ZShhKSxPYmplY3QuZnJlZXplKGIpKTtyZXR1cm4gYX07TGI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsYil9O01iPXR5cGVvZiBPYmplY3QuYXNzaWduPT0iZnVuY3Rpb24iP09iamVjdC5hc3NpZ246ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MTtjPGFyZ3VtZW50cy5sZW5ndGg7YysrKXt2YXIgZD1hcmd1bWVudHNbY107aWYoZClmb3IodmFyIGUgaW4gZClMYihkLGUpJiYoYVtlXT1kW2VdKX1yZXR1cm4gYX07CngoIk9iamVjdC5hc3NpZ24iLGZ1bmN0aW9uKGEpe3JldHVybiBhfHxNYn0pO18uY2I9ZnVuY3Rpb24oKXtmb3IodmFyIGE9TnVtYmVyKHRoaXMpLGI9W10sYz1hO2M8YXJndW1lbnRzLmxlbmd0aDtjKyspYltjLWFdPWFyZ3VtZW50c1tjXTtyZXR1cm4gYn07eCgiZ2xvYmFsVGhpcyIsZnVuY3Rpb24oYSl7cmV0dXJuIGF8fF8uQWJ9KTt4KCJSZWZsZWN0IixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOnt9fSk7eCgiUmVmbGVjdC5jb25zdHJ1Y3QiLGZ1bmN0aW9uKCl7cmV0dXJuIF8uRGJ9KTt4KCJSZWZsZWN0LnNldFByb3RvdHlwZU9mIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOkliP2Z1bmN0aW9uKGIsYyl7dHJ5e3JldHVybiBJYihiLGMpLCEwfWNhdGNoKGQpe3JldHVybiExfX06bnVsbH0pOwp4KCJQcm9taXNlIixmdW5jdGlvbihhKXtmdW5jdGlvbiBiKCl7dGhpcy5nPW51bGx9ZnVuY3Rpb24gYyhnKXtyZXR1cm4gZyBpbnN0YW5jZW9mIGU/ZzpuZXcgZShmdW5jdGlvbihoKXtoKGcpfSl9aWYoYSlyZXR1cm4gYTtiLnByb3RvdHlwZS5oPWZ1bmN0aW9uKGcpe2lmKHRoaXMuZz09bnVsbCl7dGhpcy5nPVtdO3ZhciBoPXRoaXM7dGhpcy5qKGZ1bmN0aW9uKCl7aC5vKCl9KX10aGlzLmcucHVzaChnKX07dmFyIGQ9Xy5BYi5zZXRUaW1lb3V0O2IucHJvdG90eXBlLmo9ZnVuY3Rpb24oZyl7ZChnLDApfTtiLnByb3RvdHlwZS5vPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLmcmJnRoaXMuZy5sZW5ndGg7KXt2YXIgZz10aGlzLmc7dGhpcy5nPVtdO2Zvcih2YXIgaD0wO2g8Zy5sZW5ndGg7KytoKXt2YXIgaz1nW2hdO2dbaF09bnVsbDt0cnl7aygpfWNhdGNoKG0pe3RoaXMubChtKX19fXRoaXMuZz1udWxsfTtiLnByb3RvdHlwZS5sPWZ1bmN0aW9uKGcpe3RoaXMuaihmdW5jdGlvbigpe3Rocm93IGc7Cn0pfTt2YXIgZT1mdW5jdGlvbihnKXt0aGlzLmc9MDt0aGlzLmo9dm9pZCAwO3RoaXMuaD1bXTt0aGlzLkI9ITE7dmFyIGg9dGhpcy5sKCk7dHJ5e2coaC5yZXNvbHZlLGgucmVqZWN0KX1jYXRjaChrKXtoLnJlamVjdChrKX19O2UucHJvdG90eXBlLmw9ZnVuY3Rpb24oKXtmdW5jdGlvbiBnKG0pe3JldHVybiBmdW5jdGlvbihuKXtrfHwoaz0hMCxtLmNhbGwoaCxuKSl9fXZhciBoPXRoaXMsaz0hMTtyZXR1cm57cmVzb2x2ZTpnKHRoaXMuTSkscmVqZWN0OmcodGhpcy5vKX19O2UucHJvdG90eXBlLk09ZnVuY3Rpb24oZyl7aWYoZz09PXRoaXMpdGhpcy5vKG5ldyBUeXBlRXJyb3IoImgiKSk7ZWxzZSBpZihnIGluc3RhbmNlb2YgZSl0aGlzLk8oZyk7ZWxzZXthOnN3aXRjaCh0eXBlb2YgZyl7Y2FzZSAib2JqZWN0Ijp2YXIgaD1nIT1udWxsO2JyZWFrIGE7Y2FzZSAiZnVuY3Rpb24iOmg9ITA7YnJlYWsgYTtkZWZhdWx0Omg9ITF9aD90aGlzLkkoZyk6dGhpcy5BKGcpfX07ZS5wcm90b3R5cGUuST0KZnVuY3Rpb24oZyl7dmFyIGg9dm9pZCAwO3RyeXtoPWcudGhlbn1jYXRjaChrKXt0aGlzLm8oayk7cmV0dXJufXR5cGVvZiBoPT0iZnVuY3Rpb24iP3RoaXMucGEoaCxnKTp0aGlzLkEoZyl9O2UucHJvdG90eXBlLm89ZnVuY3Rpb24oZyl7dGhpcy5DKDIsZyl9O2UucHJvdG90eXBlLkE9ZnVuY3Rpb24oZyl7dGhpcy5DKDEsZyl9O2UucHJvdG90eXBlLkM9ZnVuY3Rpb24oZyxoKXtpZih0aGlzLmchPTApdGhyb3cgRXJyb3IoImlgIitnKyJgIitoKyJgIit0aGlzLmcpO3RoaXMuZz1nO3RoaXMuaj1oO3RoaXMuZz09PTImJnRoaXMuSigpO3RoaXMuRigpfTtlLnByb3RvdHlwZS5KPWZ1bmN0aW9uKCl7dmFyIGc9dGhpcztkKGZ1bmN0aW9uKCl7aWYoZy5HKCkpe3ZhciBoPV8uQWIuY29uc29sZTt0eXBlb2YgaCE9PSJ1bmRlZmluZWQiJiZoLmVycm9yKGcuail9fSwxKX07ZS5wcm90b3R5cGUuRz1mdW5jdGlvbigpe2lmKHRoaXMuQilyZXR1cm4hMTt2YXIgZz1fLkFiLkN1c3RvbUV2ZW50LApoPV8uQWIuRXZlbnQsaz1fLkFiLmRpc3BhdGNoRXZlbnQ7aWYodHlwZW9mIGs9PT0idW5kZWZpbmVkIilyZXR1cm4hMDt0eXBlb2YgZz09PSJmdW5jdGlvbiI/Zz1uZXcgZygidW5oYW5kbGVkcmVqZWN0aW9uIix7Y2FuY2VsYWJsZTohMH0pOnR5cGVvZiBoPT09ImZ1bmN0aW9uIj9nPW5ldyBoKCJ1bmhhbmRsZWRyZWplY3Rpb24iLHtjYW5jZWxhYmxlOiEwfSk6KGc9Xy5BYi5kb2N1bWVudC5jcmVhdGVFdmVudCgiQ3VzdG9tRXZlbnQiKSxnLmluaXRDdXN0b21FdmVudCgidW5oYW5kbGVkcmVqZWN0aW9uIiwhMSwhMCxnKSk7Zy5wcm9taXNlPXRoaXM7Zy5yZWFzb249dGhpcy5qO3JldHVybiBrKGcpfTtlLnByb3RvdHlwZS5GPWZ1bmN0aW9uKCl7aWYodGhpcy5oIT1udWxsKXtmb3IodmFyIGc9MDtnPHRoaXMuaC5sZW5ndGg7KytnKWYuaCh0aGlzLmhbZ10pO3RoaXMuaD1udWxsfX07dmFyIGY9bmV3IGI7ZS5wcm90b3R5cGUuTz1mdW5jdGlvbihnKXt2YXIgaD10aGlzLmwoKTtnLkxkKGgucmVzb2x2ZSwKaC5yZWplY3QpfTtlLnByb3RvdHlwZS5wYT1mdW5jdGlvbihnLGgpe3ZhciBrPXRoaXMubCgpO3RyeXtnLmNhbGwoaCxrLnJlc29sdmUsay5yZWplY3QpfWNhdGNoKG0pe2sucmVqZWN0KG0pfX07ZS5wcm90b3R5cGUudGhlbj1mdW5jdGlvbihnLGgpe2Z1bmN0aW9uIGsocSxyKXtyZXR1cm4gdHlwZW9mIHE9PSJmdW5jdGlvbiI/ZnVuY3Rpb24odCl7dHJ5e20ocSh0KSl9Y2F0Y2goQSl7bihBKX19OnJ9dmFyIG0sbixwPW5ldyBlKGZ1bmN0aW9uKHEscil7bT1xO249cn0pO3RoaXMuTGQoayhnLG0pLGsoaCxuKSk7cmV0dXJuIHB9O2UucHJvdG90eXBlLmNhdGNoPWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLnRoZW4odm9pZCAwLGcpfTtlLnByb3RvdHlwZS5MZD1mdW5jdGlvbihnLGgpe2Z1bmN0aW9uIGsoKXtzd2l0Y2gobS5nKXtjYXNlIDE6ZyhtLmopO2JyZWFrO2Nhc2UgMjpoKG0uaik7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcigiamAiK20uZyk7fX12YXIgbT10aGlzO3RoaXMuaD09Cm51bGw/Zi5oKGspOnRoaXMuaC5wdXNoKGspO3RoaXMuQj0hMH07ZS5yZXNvbHZlPWM7ZS5yZWplY3Q9ZnVuY3Rpb24oZyl7cmV0dXJuIG5ldyBlKGZ1bmN0aW9uKGgsayl7ayhnKX0pfTtlLnJhY2U9ZnVuY3Rpb24oZyl7cmV0dXJuIG5ldyBlKGZ1bmN0aW9uKGgsayl7Zm9yKHZhciBtPV8ueihnKSxuPW0ubmV4dCgpOyFuLmRvbmU7bj1tLm5leHQoKSljKG4udmFsdWUpLkxkKGgsayl9KX07ZS5hbGw9ZnVuY3Rpb24oZyl7dmFyIGg9Xy56KGcpLGs9aC5uZXh0KCk7cmV0dXJuIGsuZG9uZT9jKFtdKTpuZXcgZShmdW5jdGlvbihtLG4pe2Z1bmN0aW9uIHAodCl7cmV0dXJuIGZ1bmN0aW9uKEEpe3FbdF09QTtyLS07cj09MCYmbShxKX19dmFyIHE9W10scj0wO2RvIHEucHVzaCh2b2lkIDApLHIrKyxjKGsudmFsdWUpLkxkKHAocS5sZW5ndGgtMSksbiksaz1oLm5leHQoKTt3aGlsZSghay5kb25lKX0pfTtyZXR1cm4gZX0pOwp2YXIgTmI9ZnVuY3Rpb24oYSxiLGMpe2lmKGE9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigia2AiK2MpO2lmKGIgaW5zdGFuY2VvZiBSZWdFeHApdGhyb3cgbmV3IFR5cGVFcnJvcigibGAiK2MpO3JldHVybiBhKyIifTt4KCJTdHJpbmcucHJvdG90eXBlLnN0YXJ0c1dpdGgiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYixjKXt2YXIgZD1OYih0aGlzLGIsInN0YXJ0c1dpdGgiKSxlPWQubGVuZ3RoLGY9Yi5sZW5ndGg7Yz1NYXRoLm1heCgwLE1hdGgubWluKGN8MCxkLmxlbmd0aCkpO2Zvcih2YXIgZz0wO2c8ZiYmYzxlOylpZihkW2MrK10hPWJbZysrXSlyZXR1cm4hMTtyZXR1cm4gZz49Zn19KTt4KCJPYmplY3Quc2V0UHJvdG90eXBlT2YiLGZ1bmN0aW9uKGEpe3JldHVybiBhfHxJYn0pO3goIlN5bWJvbC5kaXNwb3NlIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOlN5bWJvbCgibSIpfSk7CngoIldlYWtNYXAiLGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoKXt9ZnVuY3Rpb24gYyhrKXt2YXIgbT10eXBlb2YgaztyZXR1cm4gbT09PSJvYmplY3QiJiZrIT09bnVsbHx8bT09PSJmdW5jdGlvbiJ9ZnVuY3Rpb24gZChrKXtpZighTGIoayxmKSl7dmFyIG09bmV3IGI7eWIoayxmLHt2YWx1ZTptfSl9fWZ1bmN0aW9uIGUoayl7dmFyIG09T2JqZWN0W2tdO20mJihPYmplY3Rba109ZnVuY3Rpb24obil7aWYobiBpbnN0YW5jZW9mIGIpcmV0dXJuIG47T2JqZWN0LmlzRXh0ZW5zaWJsZShuKSYmZChuKTtyZXR1cm4gbShuKX0pfWlmKGZ1bmN0aW9uKCl7aWYoIWF8fCFPYmplY3Quc2VhbClyZXR1cm4hMTt0cnl7dmFyIGs9T2JqZWN0LnNlYWwoe30pLG09T2JqZWN0LnNlYWwoe30pLG49bmV3IGEoW1trLDJdLFttLDNdXSk7aWYobi5nZXQoaykhPTJ8fG4uZ2V0KG0pIT0zKXJldHVybiExO24uZGVsZXRlKGspO24uc2V0KG0sNCk7cmV0dXJuIW4uaGFzKGspJiZuLmdldChtKT09NH1jYXRjaChwKXtyZXR1cm4hMX19KCkpcmV0dXJuIGE7CnZhciBmPSIkanNjb21wX2hpZGRlbl8iK01hdGgucmFuZG9tKCk7ZSgiZnJlZXplIik7ZSgicHJldmVudEV4dGVuc2lvbnMiKTtlKCJzZWFsIik7dmFyIGc9MCxoPWZ1bmN0aW9uKGspe3RoaXMuZz0oZys9TWF0aC5yYW5kb20oKSsxKS50b1N0cmluZygpO2lmKGspe2s9Xy56KGspO2Zvcih2YXIgbTshKG09ay5uZXh0KCkpLmRvbmU7KW09bS52YWx1ZSx0aGlzLnNldChtWzBdLG1bMV0pfX07aC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGssbSl7aWYoIWMoaykpdGhyb3cgRXJyb3IoIm4iKTtkKGspO2lmKCFMYihrLGYpKXRocm93IEVycm9yKCJvYCIrayk7a1tmXVt0aGlzLmddPW07cmV0dXJuIHRoaXN9O2gucHJvdG90eXBlLmdldD1mdW5jdGlvbihrKXtyZXR1cm4gYyhrKSYmTGIoayxmKT9rW2ZdW3RoaXMuZ106dm9pZCAwfTtoLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oayl7cmV0dXJuIGMoaykmJkxiKGssZikmJkxiKGtbZl0sdGhpcy5nKX07aC5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKGspe3JldHVybiBjKGspJiYKTGIoayxmKSYmTGIoa1tmXSx0aGlzLmcpP2RlbGV0ZSBrW2ZdW3RoaXMuZ106ITF9O3JldHVybiBofSk7CngoIk1hcCIsZnVuY3Rpb24oYSl7aWYoZnVuY3Rpb24oKXtpZighYXx8dHlwZW9mIGEhPSJmdW5jdGlvbiJ8fCFhLnByb3RvdHlwZS5lbnRyaWVzfHx0eXBlb2YgT2JqZWN0LnNlYWwhPSJmdW5jdGlvbiIpcmV0dXJuITE7dHJ5e3ZhciBoPU9iamVjdC5zZWFsKHt4OjR9KSxrPW5ldyBhKF8ueihbW2gsInMiXV0pKTtpZihrLmdldChoKSE9InMifHxrLnNpemUhPTF8fGsuZ2V0KHt4OjR9KXx8ay5zZXQoe3g6NH0sInQiKSE9a3x8ay5zaXplIT0yKXJldHVybiExO3ZhciBtPWsuZW50cmllcygpLG49bS5uZXh0KCk7aWYobi5kb25lfHxuLnZhbHVlWzBdIT1ofHxuLnZhbHVlWzFdIT0icyIpcmV0dXJuITE7bj1tLm5leHQoKTtyZXR1cm4gbi5kb25lfHxuLnZhbHVlWzBdLnghPTR8fG4udmFsdWVbMV0hPSJ0Inx8IW0ubmV4dCgpLmRvbmU/ITE6ITB9Y2F0Y2gocCl7cmV0dXJuITF9fSgpKXJldHVybiBhO3ZhciBiPW5ldyBXZWFrTWFwLGM9ZnVuY3Rpb24oaCl7dGhpc1swXT17fTt0aGlzWzFdPQpmKCk7dGhpcy5zaXplPTA7aWYoaCl7aD1fLnooaCk7Zm9yKHZhciBrOyEoaz1oLm5leHQoKSkuZG9uZTspaz1rLnZhbHVlLHRoaXMuc2V0KGtbMF0sa1sxXSl9fTtjLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oaCxrKXtoPWg9PT0wPzA6aDt2YXIgbT1kKHRoaXMsaCk7bS5saXN0fHwobS5saXN0PXRoaXNbMF1bbS5pZF09W10pO20uZW50cnk/bS5lbnRyeS52YWx1ZT1rOihtLmVudHJ5PXtuZXh0OnRoaXNbMV0semI6dGhpc1sxXS56YixoZWFkOnRoaXNbMV0sa2V5OmgsdmFsdWU6a30sbS5saXN0LnB1c2gobS5lbnRyeSksdGhpc1sxXS56Yi5uZXh0PW0uZW50cnksdGhpc1sxXS56Yj1tLmVudHJ5LHRoaXMuc2l6ZSsrKTtyZXR1cm4gdGhpc307Yy5wcm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKGgpe2g9ZCh0aGlzLGgpO3JldHVybiBoLmVudHJ5JiZoLmxpc3Q/KGgubGlzdC5zcGxpY2UoaC5pbmRleCwxKSxoLmxpc3QubGVuZ3RofHxkZWxldGUgdGhpc1swXVtoLmlkXSxoLmVudHJ5LnpiLm5leHQ9CmguZW50cnkubmV4dCxoLmVudHJ5Lm5leHQuemI9aC5lbnRyeS56YixoLmVudHJ5LmhlYWQ9bnVsbCx0aGlzLnNpemUtLSwhMCk6ITF9O2MucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dGhpc1swXT17fTt0aGlzWzFdPXRoaXNbMV0uemI9ZigpO3RoaXMuc2l6ZT0wfTtjLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oaCl7cmV0dXJuISFkKHRoaXMsaCkuZW50cnl9O2MucHJvdG90eXBlLmdldD1mdW5jdGlvbihoKXtyZXR1cm4oaD1kKHRoaXMsaCkuZW50cnkpJiZoLnZhbHVlfTtjLnByb3RvdHlwZS5lbnRyaWVzPWZ1bmN0aW9uKCl7cmV0dXJuIGUodGhpcyxmdW5jdGlvbihoKXtyZXR1cm5baC5rZXksaC52YWx1ZV19KX07Yy5wcm90b3R5cGUua2V5cz1mdW5jdGlvbigpe3JldHVybiBlKHRoaXMsZnVuY3Rpb24oaCl7cmV0dXJuIGgua2V5fSl9O2MucHJvdG90eXBlLnZhbHVlcz1mdW5jdGlvbigpe3JldHVybiBlKHRoaXMsZnVuY3Rpb24oaCl7cmV0dXJuIGgudmFsdWV9KX07Yy5wcm90b3R5cGUuZm9yRWFjaD0KZnVuY3Rpb24oaCxrKXtmb3IodmFyIG09dGhpcy5lbnRyaWVzKCksbjshKG49bS5uZXh0KCkpLmRvbmU7KW49bi52YWx1ZSxoLmNhbGwoayxuWzFdLG5bMF0sdGhpcyl9O2MucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl09Yy5wcm90b3R5cGUuZW50cmllczt2YXIgZD1mdW5jdGlvbihoLGspe3ZhciBtPWsmJnR5cGVvZiBrO209PSJvYmplY3QifHxtPT0iZnVuY3Rpb24iP2IuaGFzKGspP209Yi5nZXQoayk6KG09IiIrICsrZyxiLnNldChrLG0pKTptPSJwXyIrazt2YXIgbj1oWzBdW21dO2lmKG4mJkxiKGhbMF0sbSkpZm9yKGg9MDtoPG4ubGVuZ3RoO2grKyl7dmFyIHA9bltoXTtpZihrIT09ayYmcC5rZXkhPT1wLmtleXx8az09PXAua2V5KXJldHVybntpZDptLGxpc3Q6bixpbmRleDpoLGVudHJ5OnB9fXJldHVybntpZDptLGxpc3Q6bixpbmRleDotMSxlbnRyeTp2b2lkIDB9fSxlPWZ1bmN0aW9uKGgsayl7dmFyIG09aFsxXTtyZXR1cm4gQmIoZnVuY3Rpb24oKXtpZihtKXtmb3IoO20uaGVhZCE9CmhbMV07KW09bS56Yjtmb3IoO20ubmV4dCE9bS5oZWFkOylyZXR1cm4gbT1tLm5leHQse2RvbmU6ITEsdmFsdWU6ayhtKX07bT1udWxsfXJldHVybntkb25lOiEwLHZhbHVlOnZvaWQgMH19KX0sZj1mdW5jdGlvbigpe3ZhciBoPXt9O3JldHVybiBoLnpiPWgubmV4dD1oLmhlYWQ9aH0sZz0wO3JldHVybiBjfSk7CngoIlNldCIsZnVuY3Rpb24oYSl7aWYoZnVuY3Rpb24oKXtpZighYXx8dHlwZW9mIGEhPSJmdW5jdGlvbiJ8fCFhLnByb3RvdHlwZS5lbnRyaWVzfHx0eXBlb2YgT2JqZWN0LnNlYWwhPSJmdW5jdGlvbiIpcmV0dXJuITE7dHJ5e3ZhciBjPU9iamVjdC5zZWFsKHt4OjR9KSxkPW5ldyBhKF8ueihbY10pKTtpZighZC5oYXMoYyl8fGQuc2l6ZSE9MXx8ZC5hZGQoYykhPWR8fGQuc2l6ZSE9MXx8ZC5hZGQoe3g6NH0pIT1kfHxkLnNpemUhPTIpcmV0dXJuITE7dmFyIGU9ZC5lbnRyaWVzKCksZj1lLm5leHQoKTtpZihmLmRvbmV8fGYudmFsdWVbMF0hPWN8fGYudmFsdWVbMV0hPWMpcmV0dXJuITE7Zj1lLm5leHQoKTtyZXR1cm4gZi5kb25lfHxmLnZhbHVlWzBdPT1jfHxmLnZhbHVlWzBdLnghPTR8fGYudmFsdWVbMV0hPWYudmFsdWVbMF0/ITE6ZS5uZXh0KCkuZG9uZX1jYXRjaChnKXtyZXR1cm4hMX19KCkpcmV0dXJuIGE7dmFyIGI9ZnVuY3Rpb24oYyl7dGhpcy5nPW5ldyBNYXA7aWYoYyl7Yz0KXy56KGMpO2Zvcih2YXIgZDshKGQ9Yy5uZXh0KCkpLmRvbmU7KXRoaXMuYWRkKGQudmFsdWUpfXRoaXMuc2l6ZT10aGlzLmcuc2l6ZX07Yi5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGMpe2M9Yz09PTA/MDpjO3RoaXMuZy5zZXQoYyxjKTt0aGlzLnNpemU9dGhpcy5nLnNpemU7cmV0dXJuIHRoaXN9O2IucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbihjKXtjPXRoaXMuZy5kZWxldGUoYyk7dGhpcy5zaXplPXRoaXMuZy5zaXplO3JldHVybiBjfTtiLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuZy5jbGVhcigpO3RoaXMuc2l6ZT0wfTtiLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oYyl7cmV0dXJuIHRoaXMuZy5oYXMoYyl9O2IucHJvdG90eXBlLmVudHJpZXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nLmVudHJpZXMoKX07Yi5wcm90b3R5cGUudmFsdWVzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZy52YWx1ZXMoKX07Yi5wcm90b3R5cGUua2V5cz1iLnByb3RvdHlwZS52YWx1ZXM7CmIucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl09Yi5wcm90b3R5cGUudmFsdWVzO2IucHJvdG90eXBlLmZvckVhY2g9ZnVuY3Rpb24oYyxkKXt2YXIgZT10aGlzO3RoaXMuZy5mb3JFYWNoKGZ1bmN0aW9uKGYpe3JldHVybiBjLmNhbGwoZCxmLGYsZSl9KX07cmV0dXJuIGJ9KTt2YXIgT2I9ZnVuY3Rpb24oYSxiKXthIGluc3RhbmNlb2YgU3RyaW5nJiYoYSs9IiIpO3ZhciBjPTAsZD0hMSxlPXtuZXh0OmZ1bmN0aW9uKCl7aWYoIWQmJmM8YS5sZW5ndGgpe3ZhciBmPWMrKztyZXR1cm57dmFsdWU6YihmLGFbZl0pLGRvbmU6ITF9fWQ9ITA7cmV0dXJue2RvbmU6ITAsdmFsdWU6dm9pZCAwfX19O2VbU3ltYm9sLml0ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiBlfTtyZXR1cm4gZX07eCgiQXJyYXkucHJvdG90eXBlLmVudHJpZXMiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oKXtyZXR1cm4gT2IodGhpcyxmdW5jdGlvbihiLGMpe3JldHVybltiLGNdfSl9fSk7CngoIkFycmF5LnByb3RvdHlwZS5rZXlzIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKCl7cmV0dXJuIE9iKHRoaXMsZnVuY3Rpb24oYil7cmV0dXJuIGJ9KX19KTt4KCJTdHJpbmcucHJvdG90eXBlLmVuZHNXaXRoIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIsYyl7dmFyIGQ9TmIodGhpcyxiLCJlbmRzV2l0aCIpO2M9PT12b2lkIDAmJihjPWQubGVuZ3RoKTtjPU1hdGgubWF4KDAsTWF0aC5taW4oY3wwLGQubGVuZ3RoKSk7Zm9yKHZhciBlPWIubGVuZ3RoO2U+MCYmYz4wOylpZihkWy0tY10hPWJbLS1lXSlyZXR1cm4hMTtyZXR1cm4gZTw9MH19KTt4KCJOdW1iZXIuaXNGaW5pdGUiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYil7cmV0dXJuIHR5cGVvZiBiIT09Im51bWJlciI/ITE6IWlzTmFOKGIpJiZiIT09SW5maW5pdHkmJmIhPT0tSW5maW5pdHl9fSk7CngoIkFycmF5LnByb3RvdHlwZS5maW5kIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIsYyl7YTp7dmFyIGQ9dGhpcztkIGluc3RhbmNlb2YgU3RyaW5nJiYoZD1TdHJpbmcoZCkpO2Zvcih2YXIgZT1kLmxlbmd0aCxmPTA7ZjxlO2YrKyl7dmFyIGc9ZFtmXTtpZihiLmNhbGwoYyxnLGYsZCkpe2I9ZzticmVhayBhfX1iPXZvaWQgMH1yZXR1cm4gYn19KTt4KCJPYmplY3QuZW50cmllcyIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiKXt2YXIgYz1bXSxkO2ZvcihkIGluIGIpTGIoYixkKSYmYy5wdXNoKFtkLGJbZF1dKTtyZXR1cm4gY319KTsKeCgiQXJyYXkuZnJvbSIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiLGMsZCl7Yz1jIT1udWxsP2M6ZnVuY3Rpb24oaCl7cmV0dXJuIGh9O3ZhciBlPVtdLGY9dHlwZW9mIFN5bWJvbCE9InVuZGVmaW5lZCImJlN5bWJvbC5pdGVyYXRvciYmYltTeW1ib2wuaXRlcmF0b3JdO2lmKHR5cGVvZiBmPT0iZnVuY3Rpb24iKXtiPWYuY2FsbChiKTtmb3IodmFyIGc9MDshKGY9Yi5uZXh0KCkpLmRvbmU7KWUucHVzaChjLmNhbGwoZCxmLnZhbHVlLGcrKykpfWVsc2UgZm9yKGY9Yi5sZW5ndGgsZz0wO2c8ZjtnKyspZS5wdXNoKGMuY2FsbChkLGJbZ10sZykpO3JldHVybiBlfX0pO3goIkFycmF5LnByb3RvdHlwZS52YWx1ZXMiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oKXtyZXR1cm4gT2IodGhpcyxmdW5jdGlvbihiLGMpe3JldHVybiBjfSl9fSk7CngoIk9iamVjdC52YWx1ZXMiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYil7dmFyIGM9W10sZDtmb3IoZCBpbiBiKUxiKGIsZCkmJmMucHVzaChiW2RdKTtyZXR1cm4gY319KTt4KCJPYmplY3QuaXMiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYixjKXtyZXR1cm4gYj09PWM/YiE9PTB8fDEvYj09PTEvYzpiIT09YiYmYyE9PWN9fSk7eCgiQXJyYXkucHJvdG90eXBlLmluY2x1ZGVzIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIsYyl7dmFyIGQ9dGhpcztkIGluc3RhbmNlb2YgU3RyaW5nJiYoZD1TdHJpbmcoZCkpO3ZhciBlPWQubGVuZ3RoO2M9Y3x8MDtmb3IoYzwwJiYoYz1NYXRoLm1heChjK2UsMCkpO2M8ZTtjKyspe3ZhciBmPWRbY107aWYoZj09PWJ8fE9iamVjdC5pcyhmLGIpKXJldHVybiEwfXJldHVybiExfX0pOwp4KCJTdHJpbmcucHJvdG90eXBlLmluY2x1ZGVzIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIsYyl7cmV0dXJuIE5iKHRoaXMsYiwiaW5jbHVkZXMiKS5pbmRleE9mKGIsY3x8MCkhPT0tMX19KTt4KCJOdW1iZXIuTUFYX1NBRkVfSU5URUdFUiIsZnVuY3Rpb24oKXtyZXR1cm4gOTAwNzE5OTI1NDc0MDk5MX0pO3goIk51bWJlci5NSU5fU0FGRV9JTlRFR0VSIixmdW5jdGlvbigpe3JldHVybi05MDA3MTk5MjU0NzQwOTkxfSk7eCgiTnVtYmVyLmlzSW50ZWdlciIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiKXtyZXR1cm4gTnVtYmVyLmlzRmluaXRlKGIpP2I9PT1NYXRoLmZsb29yKGIpOiExfX0pO3goIk51bWJlci5pc1NhZmVJbnRlZ2VyIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIpe3JldHVybiBOdW1iZXIuaXNJbnRlZ2VyKGIpJiZNYXRoLmFicyhiKTw9TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJ9fSk7CngoIk1hdGgudHJ1bmMiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYil7Yj1OdW1iZXIoYik7aWYoaXNOYU4oYil8fGI9PT1JbmZpbml0eXx8Yj09PS1JbmZpbml0eXx8Yj09PTApcmV0dXJuIGI7dmFyIGM9TWF0aC5mbG9vcihNYXRoLmFicyhiKSk7cmV0dXJuIGI8MD8tYzpjfX0pO3goIk51bWJlci5pc05hTiIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiKXtyZXR1cm4gdHlwZW9mIGI9PT0ibnVtYmVyIiYmaXNOYU4oYil9fSk7eCgiQXJyYXkucHJvdG90eXBlLmZpbGwiLGZ1bmN0aW9uKGEpe3JldHVybiBhP2E6ZnVuY3Rpb24oYixjLGQpe3ZhciBlPXRoaXMubGVuZ3RofHwwO2M8MCYmKGM9TWF0aC5tYXgoMCxlK2MpKTtpZihkPT1udWxsfHxkPmUpZD1lO2Q9TnVtYmVyKGQpO2Q8MCYmKGQ9TWF0aC5tYXgoMCxlK2QpKTtmb3IoYz1OdW1iZXIoY3x8MCk7YzxkO2MrKyl0aGlzW2NdPWI7cmV0dXJuIHRoaXN9fSk7CnZhciBQYj1mdW5jdGlvbihhKXtyZXR1cm4gYT9hOkFycmF5LnByb3RvdHlwZS5maWxsfTt4KCJJbnQ4QXJyYXkucHJvdG90eXBlLmZpbGwiLFBiKTt4KCJVaW50OEFycmF5LnByb3RvdHlwZS5maWxsIixQYik7eCgiVWludDhDbGFtcGVkQXJyYXkucHJvdG90eXBlLmZpbGwiLFBiKTt4KCJJbnQxNkFycmF5LnByb3RvdHlwZS5maWxsIixQYik7eCgiVWludDE2QXJyYXkucHJvdG90eXBlLmZpbGwiLFBiKTt4KCJJbnQzMkFycmF5LnByb3RvdHlwZS5maWxsIixQYik7eCgiVWludDMyQXJyYXkucHJvdG90eXBlLmZpbGwiLFBiKTt4KCJGbG9hdDMyQXJyYXkucHJvdG90eXBlLmZpbGwiLFBiKTt4KCJGbG9hdDY0QXJyYXkucHJvdG90eXBlLmZpbGwiLFBiKTsKeCgiU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlQWxsIixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIsYyl7aWYoYiBpbnN0YW5jZW9mIFJlZ0V4cCYmIWIuZ2xvYmFsKXRocm93IG5ldyBUeXBlRXJyb3IoInAiKTtyZXR1cm4gYiBpbnN0YW5jZW9mIFJlZ0V4cD90aGlzLnJlcGxhY2UoYixjKTp0aGlzLnJlcGxhY2UobmV3IFJlZ0V4cChTdHJpbmcoYikucmVwbGFjZSgvKFstKClcW1xde30rPyouJFxefCw6IzwhXFxdKS9nLCJcXCQxIikucmVwbGFjZSgvXHgwOC9nLCJcXHgwOCIpLCJnIiksYyl9fSk7eCgiT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbigpe3JldHVybltdfX0pOwp4KCJQcm9taXNlLnByb3RvdHlwZS5maW5hbGx5IixmdW5jdGlvbihhKXtyZXR1cm4gYT9hOmZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLnRoZW4oZnVuY3Rpb24oYyl7cmV0dXJuIFByb21pc2UucmVzb2x2ZShiKCkpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gY30pfSxmdW5jdGlvbihjKXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGIoKSkudGhlbihmdW5jdGlvbigpe3Rocm93IGM7fSl9KX19KTt4KCJBcnJheS5wcm90b3R5cGUuZmxhdCIsZnVuY3Rpb24oYSl7cmV0dXJuIGE/YTpmdW5jdGlvbihiKXtiPWI9PT12b2lkIDA/MTpiO3ZhciBjPVtdO0FycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwodGhpcyxmdW5jdGlvbihkKXtBcnJheS5pc0FycmF5KGQpJiZiPjA/KGQ9QXJyYXkucHJvdG90eXBlLmZsYXQuY2FsbChkLGItMSksYy5wdXNoLmFwcGx5KGMsZCkpOmMucHVzaChkKX0pO3JldHVybiBjfX0pOwpfLl9EdW1wRXhjZXB0aW9uPXdpbmRvdy5fRHVtcEV4Y2VwdGlvbnx8ZnVuY3Rpb24oYSl7dGhyb3cgYTt9O3dpbmRvdy5fRHVtcEV4Y2VwdGlvbj1fLl9EdW1wRXhjZXB0aW9uO3ZhciBRYixTYixUYixVYixXYixYYixZYixaYjtRYj1RYnx8e307Xy51PXRoaXN8fHNlbGY7U2I9ZnVuY3Rpb24oYSxiKXt2YXIgYz1fLlJiKCJXSVpfZ2xvYmFsX2RhdGEub3hOM25iIik7YT1jJiZjW2FdO3JldHVybiBhIT1udWxsP2E6Yn07VGI9Xy51Ll9GX3RvZ2dsZXNfZGVmYXVsdF90cnx8W107VWI9ZnVuY3Rpb24oKXt9O1ViLmdldD1mdW5jdGlvbigpe3JldHVybiBudWxsfTtfLlJiPWZ1bmN0aW9uKGEsYil7YT1hLnNwbGl0KCIuIik7Yj1ifHxfLnU7Zm9yKHZhciBjPTA7YzxhLmxlbmd0aDtjKyspaWYoYj1iW2FbY11dLGI9PW51bGwpcmV0dXJuIG51bGw7cmV0dXJuIGJ9O18uVmI9ZnVuY3Rpb24oYSl7dmFyIGI9dHlwZW9mIGE7cmV0dXJuIGIhPSJvYmplY3QiP2I6YT9BcnJheS5pc0FycmF5KGEpPyJhcnJheSI6YjoibnVsbCJ9O18ucmE9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5WYihhKTtyZXR1cm4gYj09ImFycmF5Inx8Yj09Im9iamVjdCImJnR5cGVvZiBhLmxlbmd0aD09Im51bWJlciJ9OwpfLnphPWZ1bmN0aW9uKGEpe3ZhciBiPXR5cGVvZiBhO3JldHVybiBiPT0ib2JqZWN0IiYmYSE9bnVsbHx8Yj09ImZ1bmN0aW9uIn07Xy5BYT1mdW5jdGlvbihhKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsV2IpJiZhW1diXXx8KGFbV2JdPSsrWGIpfTtXYj0iY2xvc3VyZV91aWRfIisoTWF0aC5yYW5kb20oKSoxRTk+Pj4wKTtYYj0wO1liPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYS5jYWxsLmFwcGx5KGEuYmluZCxhcmd1bWVudHMpfTsKWmI9ZnVuY3Rpb24oYSxiLGMpe2lmKCFhKXRocm93IEVycm9yKCk7aWYoYXJndW1lbnRzLmxlbmd0aD4yKXt2YXIgZD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMik7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtBcnJheS5wcm90b3R5cGUudW5zaGlmdC5hcHBseShlLGQpO3JldHVybiBhLmFwcGx5KGIsZSl9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiBhLmFwcGx5KGIsYXJndW1lbnRzKX19O18uQz1mdW5jdGlvbihhLGIsYyl7Xy5DPUZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kJiZGdW5jdGlvbi5wcm90b3R5cGUuYmluZC50b1N0cmluZygpLmluZGV4T2YoIm5hdGl2ZSBjb2RlIikhPS0xP1liOlpiO3JldHVybiBfLkMuYXBwbHkobnVsbCxhcmd1bWVudHMpfTsKXy4kYj1mdW5jdGlvbihhLGIpe3ZhciBjPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZD1jLnNsaWNlKCk7ZC5wdXNoLmFwcGx5KGQsYXJndW1lbnRzKTtyZXR1cm4gYS5hcHBseSh0aGlzLGQpfX07Xy5hYz1mdW5jdGlvbigpe3JldHVybiBEYXRlLm5vdygpfTtfLmJjPWZ1bmN0aW9uKGEsYil7YT1hLnNwbGl0KCIuIik7Zm9yKHZhciBjPV8udSxkO2EubGVuZ3RoJiYoZD1hLnNoaWZ0KCkpOylhLmxlbmd0aHx8Yj09PXZvaWQgMD9jW2RdJiZjW2RdIT09T2JqZWN0LnByb3RvdHlwZVtkXT9jPWNbZF06Yz1jW2RdPXt9OmNbZF09Yn07Cl8uRT1mdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoKXt9Yy5wcm90b3R5cGU9Yi5wcm90b3R5cGU7YS5QPWIucHJvdG90eXBlO2EucHJvdG90eXBlPW5ldyBjO2EucHJvdG90eXBlLmNvbnN0cnVjdG9yPWE7YS5ybj1mdW5jdGlvbihkLGUsZil7Zm9yKHZhciBnPUFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMiksaD0yO2g8YXJndW1lbnRzLmxlbmd0aDtoKyspZ1toLTJdPWFyZ3VtZW50c1toXTtyZXR1cm4gYi5wcm90b3R5cGVbZV0uYXBwbHkoZCxnKX19O18uRShfLmFhLEVycm9yKTtfLmFhLnByb3RvdHlwZS5uYW1lPSJDdXN0b21FcnJvciI7dmFyIGNjO18uRShiYSxfLmFhKTtiYS5wcm90b3R5cGUubmFtZT0iQXNzZXJ0aW9uRXJyb3IiO3ZhciBkYTtfLmRjPWZ1bmN0aW9uKGEsYil7dGhpcy5oPWE7dGhpcy5nPWJ8fG51bGx9O18uZGMucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaH07Xy5lYz1uZXcgXy5kYygibjczcXdmIiwibjczcXdmIik7dmFyIG9hPVN5bWJvbCgiciIpO18udz1mdW5jdGlvbigpe3RoaXMuRGE9dGhpcy5EYTt0aGlzLnBhPXRoaXMucGF9O18udy5wcm90b3R5cGUuRGE9ITE7Xy53LnByb3RvdHlwZS5lYj1mdW5jdGlvbigpe3JldHVybiB0aGlzLkRhfTtfLncucHJvdG90eXBlLmRpc3Bvc2U9ZnVuY3Rpb24oKXt0aGlzLkRhfHwodGhpcy5EYT0hMCx0aGlzLksoKSl9O18udy5wcm90b3R5cGVbU3ltYm9sLmRpc3Bvc2VdPWZ1bmN0aW9uKCl7dGhpcy5kaXNwb3NlKCl9O18udy5wcm90b3R5cGUuSz1mdW5jdGlvbigpe2lmKHRoaXMucGEpZm9yKDt0aGlzLnBhLmxlbmd0aDspdGhpcy5wYS5zaGlmdCgpKCl9O3ZhciBqYztfLnRhPUFycmF5LnByb3RvdHlwZS5pbmRleE9mP2Z1bmN0aW9uKGEsYil7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoYSxiLHZvaWQgMCl9OmZ1bmN0aW9uKGEsYil7aWYodHlwZW9mIGE9PT0ic3RyaW5nIilyZXR1cm4gdHlwZW9mIGIhPT0ic3RyaW5nInx8Yi5sZW5ndGghPTE/LTE6YS5pbmRleE9mKGIsMCk7Zm9yKHZhciBjPTA7YzxhLmxlbmd0aDtjKyspaWYoYyBpbiBhJiZhW2NdPT09YilyZXR1cm4gYztyZXR1cm4tMX07Cl8uZmM9QXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mP2Z1bmN0aW9uKGEsYil7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5sYXN0SW5kZXhPZi5jYWxsKGEsYixhLmxlbmd0aC0xKX06ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmxlbmd0aC0xO2M8MCYmKGM9TWF0aC5tYXgoMCxhLmxlbmd0aCtjKSk7aWYodHlwZW9mIGE9PT0ic3RyaW5nIilyZXR1cm4gdHlwZW9mIGIhPT0ic3RyaW5nInx8Yi5sZW5ndGghPTE/LTE6YS5sYXN0SW5kZXhPZihiLGMpO2Zvcig7Yz49MDtjLS0paWYoYyBpbiBhJiZhW2NdPT09YilyZXR1cm4gYztyZXR1cm4tMX07Xy5oYz1BcnJheS5wcm90b3R5cGUuZm9yRWFjaD9mdW5jdGlvbihhLGIsYyl7QXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChhLGIsYyl9OmZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQ9YS5sZW5ndGgsZT10eXBlb2YgYT09PSJzdHJpbmciP2Euc3BsaXQoIiIpOmEsZj0wO2Y8ZDtmKyspZiBpbiBlJiZiLmNhbGwoYyxlW2ZdLGYsYSl9OwpfLmljPUFycmF5LnByb3RvdHlwZS5maWx0ZXI/ZnVuY3Rpb24oYSxiKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLmZpbHRlci5jYWxsKGEsYix2b2lkIDApfTpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1hLmxlbmd0aCxkPVtdLGU9MCxmPXR5cGVvZiBhPT09InN0cmluZyI/YS5zcGxpdCgiIik6YSxnPTA7ZzxjO2crKylpZihnIGluIGYpe3ZhciBoPWZbZ107Yi5jYWxsKHZvaWQgMCxoLGcsYSkmJihkW2UrK109aCl9cmV0dXJuIGR9O2pjPUFycmF5LnByb3RvdHlwZS5yZWR1Y2U/ZnVuY3Rpb24oYSxiLGMpe0FycmF5LnByb3RvdHlwZS5yZWR1Y2UuY2FsbChhLGIsYyl9OmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1jOygwLF8uaGMpKGEsZnVuY3Rpb24oZSxmKXtkPWIuY2FsbCh2b2lkIDAsZCxlLGYsYSl9KX07Cl8ua2M9QXJyYXkucHJvdG90eXBlLnNvbWU/ZnVuY3Rpb24oYSxiKXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLnNvbWUuY2FsbChhLGIsdm9pZCAwKX06ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9YS5sZW5ndGgsZD10eXBlb2YgYT09PSJzdHJpbmciP2Euc3BsaXQoIiIpOmEsZT0wO2U8YztlKyspaWYoZSBpbiBkJiZiLmNhbGwodm9pZCAwLGRbZV0sZSxhKSlyZXR1cm4hMDtyZXR1cm4hMX07Xy5sYz1mdW5jdGlvbihhLGIpe3RoaXMud2lkdGg9YTt0aGlzLmhlaWdodD1ifTtfLm1jPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9PWI/ITA6YSYmYj9hLndpZHRoPT1iLndpZHRoJiZhLmhlaWdodD09Yi5oZWlnaHQ6ITF9O18ubGMucHJvdG90eXBlLmFzcGVjdFJhdGlvPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud2lkdGgvdGhpcy5oZWlnaHR9O18ubGMucHJvdG90eXBlLmNlaWw9ZnVuY3Rpb24oKXt0aGlzLndpZHRoPU1hdGguY2VpbCh0aGlzLndpZHRoKTt0aGlzLmhlaWdodD1NYXRoLmNlaWwodGhpcy5oZWlnaHQpO3JldHVybiB0aGlzfTtfLmxjLnByb3RvdHlwZS5mbG9vcj1mdW5jdGlvbigpe3RoaXMud2lkdGg9TWF0aC5mbG9vcih0aGlzLndpZHRoKTt0aGlzLmhlaWdodD1NYXRoLmZsb29yKHRoaXMuaGVpZ2h0KTtyZXR1cm4gdGhpc307Cl8ubGMucHJvdG90eXBlLnJvdW5kPWZ1bmN0aW9uKCl7dGhpcy53aWR0aD1NYXRoLnJvdW5kKHRoaXMud2lkdGgpO3RoaXMuaGVpZ2h0PU1hdGgucm91bmQodGhpcy5oZWlnaHQpO3JldHVybiB0aGlzfTt2YXIgRWE7RWE9ImNvbnN0cnVjdG9yIGhhc093blByb3BlcnR5IGlzUHJvdG90eXBlT2YgcHJvcGVydHlJc0VudW1lcmFibGUgdG9Mb2NhbGVTdHJpbmcgdG9TdHJpbmcgdmFsdWVPZiIuc3BsaXQoIiAiKTtfLm5jPWZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQgaW4gYSliLmNhbGwoYyxhW2RdLGQsYSl9O18ub2M9U3RyaW5nLnByb3RvdHlwZS50cmltP2Z1bmN0aW9uKGEpe3JldHVybiBhLnRyaW0oKX06ZnVuY3Rpb24oYSl7cmV0dXJuL15bXHNceGEwXSooW1xzXFNdKj8pW1xzXHhhMF0qJC8uZXhlYyhhKVsxXX07dmFyIHBjPWdsb2JhbFRoaXMudHJ1c3RlZFR5cGVzLElhPXBjLEthO18uTWE9ZnVuY3Rpb24oYSl7dGhpcy5nPWF9O18uTWEucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZysiIn07Xy5xYz1IYShmdW5jdGlvbigpe3JldHVybiB0eXBlb2YgVVJMPT09ImZ1bmN0aW9uIn0pO18ucmM9ZnVuY3Rpb24oYSl7dGhpcy5nPWF9O18ucmMucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZysiIn07Xy5zYz1IYShmdW5jdGlvbigpe3JldHVybiBuZXcgXy5yYyhwYz9wYy5lbXB0eUhUTUw6IiIpfSk7Xy5RYT1mdW5jdGlvbihhKXt0aGlzLmc9YX07Xy5RYS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nKyIifTtfLnRjPWZ1bmN0aW9uKGEpe3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKGEpKX07Xy51Yz1mdW5jdGlvbihhKXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGEucmVwbGFjZSgvXCsvZywiICIpKX07Xy52Yz1mdW5jdGlvbigpe3JldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMjE0NzQ4MzY0OCkudG9TdHJpbmcoMzYpK01hdGguYWJzKE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoyMTQ3NDgzNjQ4KV5fLmFjKCkpLnRvU3RyaW5nKDM2KX07dmFyIHdjPSEhKFRiWzBdPj4xNSYxKSx4Yz0hIShUYlswXSYxMDI0KSx5Yz0hIShUYlswXT4+MTYmMSksemM9ISEoVGJbMF0mMTI4KTt2YXIgQWM7QWM9U2IoMSwhMCk7Xy5WYT13Yz95YzpTYig2MTA0MDEzMDEsITEpO18uQmM9d2M/eGN8fCF6YzpTYig3NDg0MDIxNDcsQWMpO3ZhciBDYztDYz1fLnUubmF2aWdhdG9yO18uV2E9Q2M/Q2MudXNlckFnZW50RGF0YXx8bnVsbDpudWxsO18uRGM9ZnVuY3Rpb24oYSl7Xy5EY1siICJdKGEpO3JldHVybiBhfTtfLkRjWyIgIl09ZnVuY3Rpb24oKXt9O3ZhciBSYztfLkVjPV8uWWEoKTtfLkZjPV8uWGEoKT8hMTpfLnYoIlRyaWRlbnQiKXx8Xy52KCJNU0lFIik7Xy5HYz1fLnYoIkVkZ2UiKTtfLkhjPV8udigiR2Vja28iKSYmIShfLlVhKCkudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJ3ZWJraXQiKSE9LTEmJiFfLnYoIkVkZ2UiKSkmJiEoXy52KCJUcmlkZW50Iil8fF8udigiTVNJRSIpKSYmIV8udigiRWRnZSIpO18uSWM9Xy5VYSgpLnRvTG93ZXJDYXNlKCkuaW5kZXhPZigid2Via2l0IikhPS0xJiYhXy52KCJFZGdlIik7Xy5KYz1fLkljJiZfLnYoIk1vYmlsZSIpO18uS2M9Xy5iYigpO18uTGM9WmEoKT9fLldhLnBsYXRmb3JtPT09IldpbmRvd3MiOl8udigiV2luZG93cyIpO18uTWM9WmEoKT9fLldhLnBsYXRmb3JtPT09IkFuZHJvaWQiOl8udigiQW5kcm9pZCIpO18uTmM9Xy4kYSgpO18uT2M9Xy52KCJpUGFkIik7Xy5QYz1fLnYoImlQb2QiKTtfLlFjPV8uYWIoKTsKYTp7dmFyIFNjPSIiLFRjPWZ1bmN0aW9uKCl7dmFyIGE9Xy5VYSgpO2lmKF8uSGMpcmV0dXJuL3J2OihbXlwpO10rKShcKXw7KS8uZXhlYyhhKTtpZihfLkdjKXJldHVybi9FZGdlXC8oW1xkXC5dKykvLmV4ZWMoYSk7aWYoXy5GYylyZXR1cm4vXGIoPzpNU0lFfHJ2KVs6IF0oW15cKTtdKykoXCl8OykvLmV4ZWMoYSk7aWYoXy5JYylyZXR1cm4vV2ViS2l0XC8oXFMrKS8uZXhlYyhhKTtpZihfLkVjKXJldHVybi8oPzpWZXJzaW9uKVsgXC9dPyhcUyspLy5leGVjKGEpfSgpO1RjJiYoU2M9VGM/VGNbMV06IiIpO2lmKF8uRmMpe3ZhciBVYyxWYz1fLnUuZG9jdW1lbnQ7VWM9VmM/VmMuZG9jdW1lbnRNb2RlOnZvaWQgMDtpZihVYyE9bnVsbCYmVWM+cGFyc2VGbG9hdChTYykpe1JjPVN0cmluZyhVYyk7YnJlYWsgYX19UmM9U2N9Xy5XYz1SYzt2YXIgWGM9IkFSVElDTEUgU0VDVElPTiBOQVYgQVNJREUgSDEgSDIgSDMgSDQgSDUgSDYgSEVBREVSIEZPT1RFUiBBRERSRVNTIFAgSFIgUFJFIEJMT0NLUVVPVEUgT0wgVUwgTEggTEkgREwgRFQgREQgRklHVVJFIEZJR0NBUFRJT04gTUFJTiBESVYgRU0gU1RST05HIFNNQUxMIFMgQ0lURSBRIERGTiBBQkJSIFJVQlkgUkIgUlQgUlRDIFJQIERBVEEgVElNRSBDT0RFIFZBUiBTQU1QIEtCRCBTVUIgU1VQIEkgQiBVIE1BUksgQkRJIEJETyBTUEFOIEJSIFdCUiBOT0JSIElOUyBERUwgUElDVFVSRSBQQVJBTSBUUkFDSyBNQVAgVEFCTEUgQ0FQVElPTiBDT0xHUk9VUCBDT0wgVEJPRFkgVEhFQUQgVEZPT1QgVFIgVEQgVEggU0VMRUNUIERBVEFMSVNUIE9QVEdST1VQIE9QVElPTiBPVVRQVVQgUFJPR1JFU1MgTUVURVIgRklFTERTRVQgTEVHRU5EIERFVEFJTFMgU1VNTUFSWSBNRU5VIERJQUxPRyBTTE9UIENBTlZBUyBGT05UIENFTlRFUiBBQ1JPTllNIEJBU0VGT05UIEJJRyBESVIgSEdST1VQIFNUUklLRSBUVCIuc3BsaXQoIiAiKSwKWWM9W1siQSIsbmV3IE1hcChbWyJocmVmIix7Q2E6N31dXSldLFsiQVJFQSIsbmV3IE1hcChbWyJocmVmIix7Q2E6N31dXSldLFsiTElOSyIsbmV3IE1hcChbWyJocmVmIix7Q2E6NSxjb25kaXRpb25zOm5ldyBNYXAoW1sicmVsIixuZXcgU2V0KCJhbHRlcm5hdGUgYXV0aG9yIGJvb2ttYXJrIGNhbm9uaWNhbCBjaXRlIGhlbHAgaWNvbiBsaWNlbnNlIG5leHQgcHJlZmV0Y2ggZG5zLXByZWZldGNoIHByZXJlbmRlciBwcmVjb25uZWN0IHByZWxvYWQgcHJldiBzZWFyY2ggc3VicmVzb3VyY2UiLnNwbGl0KCIgIikpXV0pfV1dKV0sWyJTT1VSQ0UiLG5ldyBNYXAoW1sic3JjIix7Q2E6NX1dLFsic3Jjc2V0Iix7Q2E6Nn1dXSldLFsiSU1HIixuZXcgTWFwKFtbInNyYyIse0NhOjV9XSxbInNyY3NldCIse0NhOjZ9XV0pXSxbIlZJREVPIixuZXcgTWFwKFtbInNyYyIse0NhOjV9XV0pXSxbIkFVRElPIixuZXcgTWFwKFtbInNyYyIse0NhOjV9XV0pXV0sWmM9InRpdGxlIGFyaWEtYXRvbWljIGFyaWEtYXV0b2NvbXBsZXRlIGFyaWEtYnVzeSBhcmlhLWNoZWNrZWQgYXJpYS1jdXJyZW50IGFyaWEtZGlzYWJsZWQgYXJpYS1kcm9wZWZmZWN0IGFyaWEtZXhwYW5kZWQgYXJpYS1oYXNwb3B1cCBhcmlhLWhpZGRlbiBhcmlhLWludmFsaWQgYXJpYS1sYWJlbCBhcmlhLWxldmVsIGFyaWEtbGl2ZSBhcmlhLW11bHRpbGluZSBhcmlhLW11bHRpc2VsZWN0YWJsZSBhcmlhLW9yaWVudGF0aW9uIGFyaWEtcG9zaW5zZXQgYXJpYS1wcmVzc2VkIGFyaWEtcmVhZG9ubHkgYXJpYS1yZWxldmFudCBhcmlhLXJlcXVpcmVkIGFyaWEtc2VsZWN0ZWQgYXJpYS1zZXRzaXplIGFyaWEtc29ydCBhcmlhLXZhbHVlbWF4IGFyaWEtdmFsdWVtaW4gYXJpYS12YWx1ZW5vdyBhcmlhLXZhbHVldGV4dCBhbHQgYWxpZ24gYXV0b2NhcGl0YWxpemUgYXV0b2NvbXBsZXRlIGF1dG9jb3JyZWN0IGF1dG9mb2N1cyBhdXRvcGxheSBiZ2NvbG9yIGJvcmRlciBjZWxscGFkZGluZyBjZWxsc3BhY2luZyBjaGVja2VkIGNpdGUgY29sb3IgY29scyBjb2xzcGFuIGNvbnRyb2xzIGNvbnRyb2xzbGlzdCBjb29yZHMgY3Jvc3NvcmlnaW4gZGF0ZXRpbWUgZGlzYWJsZWQgZG93bmxvYWQgZHJhZ2dhYmxlIGVuY3R5cGUgZmFjZSBmb3JtZW5jdHlwZSBmcmFtZWJvcmRlciBoZWlnaHQgaHJlZmxhbmcgaGlkZGVuIGluZXJ0IGlzbWFwIGxhYmVsIGxhbmcgbG9vcCBtYXggbWF4bGVuZ3RoIG1lZGlhIG1pbmxlbmd0aCBtaW4gbXVsdGlwbGUgbXV0ZWQgbm9uY2Ugb3BlbiBwbGF5c2lubGluZSBwbGFjZWhvbGRlciBwb3N0ZXIgcHJlbG9hZCByZWwgcmVxdWlyZWQgcmV2ZXJzZWQgcm9sZSByb3dzIHJvd3NwYW4gc2VsZWN0ZWQgc2hhcGUgc2l6ZSBzaXplcyBzbG90IHNwYW4gc3BlbGxjaGVjayBzdGFydCBzdGVwIHN1bW1hcnkgdHJhbnNsYXRlIHR5cGUgdXNlbWFwIHZhbGlnbiB2YWx1ZSB3aWR0aCB3cmFwIGl0ZW1zY29wZSBpdGVtdHlwZSBpdGVtaWQgaXRlbXByb3AgaXRlbXJlZiIuc3BsaXQoIiAiKSwKJGM9W1siZGlyIix7Q2E6Myxjb25kaXRpb25zOkhhKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBNYXAoW1siZGlyIixuZXcgU2V0KFsiYXV0byIsImx0ciIsInJ0bCJdKV1dKX0pfV0sWyJhc3luYyIse0NhOjMsY29uZGl0aW9uczpIYShmdW5jdGlvbigpe3JldHVybiBuZXcgTWFwKFtbImFzeW5jIixuZXcgU2V0KFsiYXN5bmMiXSldXSl9KX1dLFsibG9hZGluZyIse0NhOjMsY29uZGl0aW9uczpIYShmdW5jdGlvbigpe3JldHVybiBuZXcgTWFwKFtbImxvYWRpbmciLG5ldyBTZXQoWyJlYWdlciIsImxhenkiXSldXSl9KX1dLFsidGFyZ2V0Iix7Q2E6Myxjb25kaXRpb25zOkhhKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBNYXAoW1sidGFyZ2V0IixuZXcgU2V0KFsiX3NlbGYiLCJfYmxhbmsiXSldXSl9KX1dXSxhZD1uZXcgZnVuY3Rpb24oYSxiLGMpe3ZhciBkPW5ldyBTZXQoWyJkYXRhLSIsImFyaWEtIl0pLGU9bmV3IE1hcChZYyk7dGhpcy5qPWE7dGhpcy5nPWU7dGhpcy5sPWI7dGhpcy5vPQpjO3RoaXMuaD1kfShuZXcgU2V0KEhhKGZ1bmN0aW9uKCl7cmV0dXJuIFhjLmNvbmNhdCgiU1RZTEUgVElUTEUgSU5QVVQgVEVYVEFSRUEgQlVUVE9OIExBQkVMIi5zcGxpdCgiICIpKX0pKSxuZXcgU2V0KEhhKGZ1bmN0aW9uKCl7cmV0dXJuIFpjLmNvbmNhdChbImNsYXNzIiwiaWQiLCJ0YWJpbmRleCIsImNvbnRlbnRlZGl0YWJsZSIsIm5hbWUiXSl9KSksbmV3IE1hcChIYShmdW5jdGlvbigpe3JldHVybiAkYy5jb25jYXQoW1sic3R5bGUiLHtDYToxfV1dKX0pKSk7dmFyIGJkO2JkPWZ1bmN0aW9uKCl7dGhpcy5nPWFkfTtfLmNkPUhhKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBiZH0pO3ZhciBoZCxnZCxrZDtfLmZiPWZ1bmN0aW9uKGEpe3JldHVybiBhP25ldyBfLmRkKF8uZWQoYSkpOmNjfHwoY2M9bmV3IF8uZGQpfTtfLmZkPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHR5cGVvZiBiPT09InN0cmluZyI/YS5nZXRFbGVtZW50QnlJZChiKTpifTtoZD1mdW5jdGlvbihhLGIpe18ubmMoYixmdW5jdGlvbihjLGQpe2Q9PSJzdHlsZSI/YS5zdHlsZS5jc3NUZXh0PWM6ZD09ImNsYXNzIj9hLmNsYXNzTmFtZT1jOmQ9PSJmb3IiP2EuaHRtbEZvcj1jOmdkLmhhc093blByb3BlcnR5KGQpP2Euc2V0QXR0cmlidXRlKGdkW2RdLGMpOmQubGFzdEluZGV4T2YoImFyaWEtIiwwKT09MHx8ZC5sYXN0SW5kZXhPZigiZGF0YS0iLDApPT0wP2Euc2V0QXR0cmlidXRlKGQsYyk6YVtkXT1jfSl9OwpnZD17Y2VsbHBhZGRpbmc6ImNlbGxQYWRkaW5nIixjZWxsc3BhY2luZzoiY2VsbFNwYWNpbmciLGNvbHNwYW46ImNvbFNwYW4iLGZyYW1lYm9yZGVyOiJmcmFtZUJvcmRlciIsaGVpZ2h0OiJoZWlnaHQiLG1heGxlbmd0aDoibWF4TGVuZ3RoIixub25jZToibm9uY2UiLHJvbGU6InJvbGUiLHJvd3NwYW46InJvd1NwYW4iLHR5cGU6InR5cGUiLHVzZW1hcDoidXNlTWFwIix2YWxpZ246InZBbGlnbiIsd2lkdGg6IndpZHRoIn07Xy5pZD1mdW5jdGlvbihhKXthPWEuZG9jdW1lbnQ7YT1hLmNvbXBhdE1vZGU9PSJDU1MxQ29tcGF0Ij9hLmRvY3VtZW50RWxlbWVudDphLmJvZHk7cmV0dXJuIG5ldyBfLmxjKGEuY2xpZW50V2lkdGgsYS5jbGllbnRIZWlnaHQpfTtfLmhiPWZ1bmN0aW9uKGEpe3JldHVybiBhP2EuZGVmYXVsdFZpZXc6d2luZG93fTsKXy5sZD1mdW5jdGlvbihhLGIpe3ZhciBjPWJbMV0sZD1fLmpkKGEsU3RyaW5nKGJbMF0pKTtjJiYodHlwZW9mIGM9PT0ic3RyaW5nIj9kLmNsYXNzTmFtZT1jOkFycmF5LmlzQXJyYXkoYyk/ZC5jbGFzc05hbWU9Yy5qb2luKCIgIik6aGQoZCxjKSk7Yi5sZW5ndGg+MiYma2QoYSxkLGIsMik7cmV0dXJuIGR9OwprZD1mdW5jdGlvbihhLGIsYyxkKXtmdW5jdGlvbiBlKGgpe2gmJmIuYXBwZW5kQ2hpbGQodHlwZW9mIGg9PT0ic3RyaW5nIj9hLmNyZWF0ZVRleHROb2RlKGgpOmgpfWZvcig7ZDxjLmxlbmd0aDtkKyspe3ZhciBmPWNbZF07aWYoIV8ucmEoZil8fF8uemEoZikmJmYubm9kZVR5cGU+MCllKGYpO2Vsc2V7YTp7aWYoZiYmdHlwZW9mIGYubGVuZ3RoPT0ibnVtYmVyIil7aWYoXy56YShmKSl7dmFyIGc9dHlwZW9mIGYuaXRlbT09ImZ1bmN0aW9uInx8dHlwZW9mIGYuaXRlbT09InN0cmluZyI7YnJlYWsgYX1pZih0eXBlb2YgZj09PSJmdW5jdGlvbiIpe2c9dHlwZW9mIGYuaXRlbT09ImZ1bmN0aW9uIjticmVhayBhfX1nPSExfV8uaGMoZz9fLnhhKGYpOmYsZSl9fX07Xy5qZD1mdW5jdGlvbihhLGIpe2I9U3RyaW5nKGIpO2EuY29udGVudFR5cGU9PT0iYXBwbGljYXRpb24veGh0bWwreG1sIiYmKGI9Yi50b0xvd2VyQ2FzZSgpKTtyZXR1cm4gYS5jcmVhdGVFbGVtZW50KGIpfTsKXy5tZD1mdW5jdGlvbihhLGIpe2tkKF8uZWQoYSksYSxhcmd1bWVudHMsMSl9O18ubmQ9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiO2I9YS5maXJzdENoaWxkOylhLnJlbW92ZUNoaWxkKGIpfTtfLm9kPWZ1bmN0aW9uKGEpe3JldHVybiBhJiZhLnBhcmVudE5vZGU/YS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGEpOm51bGx9O18ucGQ9ZnVuY3Rpb24oYSxiKXtpZighYXx8IWIpcmV0dXJuITE7aWYoYS5jb250YWlucyYmYi5ub2RlVHlwZT09MSlyZXR1cm4gYT09Ynx8YS5jb250YWlucyhiKTtpZih0eXBlb2YgYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiE9InVuZGVmaW5lZCIpcmV0dXJuIGE9PWJ8fCEhKGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYikmMTYpO2Zvcig7YiYmYSE9YjspYj1iLnBhcmVudE5vZGU7cmV0dXJuIGI9PWF9O18uZWQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGEubm9kZVR5cGU9PTk/YTphLm93bmVyRG9jdW1lbnR8fGEuZG9jdW1lbnR9OwpfLnFkPWZ1bmN0aW9uKGEsYil7aWYoInRleHRDb250ZW50ImluIGEpYS50ZXh0Q29udGVudD1iO2Vsc2UgaWYoYS5ub2RlVHlwZT09MylhLmRhdGE9U3RyaW5nKGIpO2Vsc2UgaWYoYS5maXJzdENoaWxkJiZhLmZpcnN0Q2hpbGQubm9kZVR5cGU9PTMpe2Zvcig7YS5sYXN0Q2hpbGQhPWEuZmlyc3RDaGlsZDspYS5yZW1vdmVDaGlsZChhLmxhc3RDaGlsZCk7YS5maXJzdENoaWxkLmRhdGE9U3RyaW5nKGIpfWVsc2UgXy5uZChhKSxhLmFwcGVuZENoaWxkKF8uZWQoYSkuY3JlYXRlVGV4dE5vZGUoU3RyaW5nKGIpKSl9O18uZGQ9ZnVuY3Rpb24oYSl7dGhpcy5nPWF8fF8udS5kb2N1bWVudHx8ZG9jdW1lbnR9O18ubD1fLmRkLnByb3RvdHlwZTtfLmwuRD1mdW5jdGlvbihhKXtyZXR1cm4gXy5mZCh0aGlzLmcsYSl9O18ubC5EbD1fLmRkLnByb3RvdHlwZS5EO18ubC5nZXRFbGVtZW50c0J5VGFnTmFtZT1mdW5jdGlvbihhLGIpe3JldHVybihifHx0aGlzLmcpLmdldEVsZW1lbnRzQnlUYWdOYW1lKFN0cmluZyhhKSl9OwpfLmwuUz1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIF8ubGQodGhpcy5nLGFyZ3VtZW50cyl9O18ubC5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKGEpe3JldHVybiBfLmpkKHRoaXMuZyxhKX07Xy5sLmFwcGVuZENoaWxkPWZ1bmN0aW9uKGEsYil7YS5hcHBlbmRDaGlsZChiKX07Xy5sLmFwcGVuZD1fLm1kO18ubC5jYW5IYXZlQ2hpbGRyZW49ZnVuY3Rpb24oYSl7aWYoYS5ub2RlVHlwZSE9MSlyZXR1cm4hMTtzd2l0Y2goYS50YWdOYW1lKXtjYXNlICJBUFBMRVQiOmNhc2UgIkFSRUEiOmNhc2UgIkJBU0UiOmNhc2UgIkJSIjpjYXNlICJDT0wiOmNhc2UgIkNPTU1BTkQiOmNhc2UgIkVNQkVEIjpjYXNlICJGUkFNRSI6Y2FzZSAiSFIiOmNhc2UgIklNRyI6Y2FzZSAiSU5QVVQiOmNhc2UgIklGUkFNRSI6Y2FzZSAiSVNJTkRFWCI6Y2FzZSAiS0VZR0VOIjpjYXNlICJMSU5LIjpjYXNlICJOT0ZSQU1FUyI6Y2FzZSAiTk9TQ1JJUFQiOmNhc2UgIk1FVEEiOmNhc2UgIk9CSkVDVCI6Y2FzZSAiUEFSQU0iOmNhc2UgIlNDUklQVCI6Y2FzZSAiU09VUkNFIjpjYXNlICJTVFlMRSI6Y2FzZSAiVFJBQ0siOmNhc2UgIldCUiI6cmV0dXJuITF9cmV0dXJuITB9OwpfLmwuTmY9Xy5uZDtfLmwucmVtb3ZlTm9kZT1fLm9kO18ubC5jb250YWlucz1fLnBkO18ubC5KYz1fLnFkO3ZhciByZD1mdW5jdGlvbigpe3RoaXMuaWQ9ImIifTtyZC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pZH07Xy5zZD1mdW5jdGlvbihhLGIpe3RoaXMudHlwZT1hIGluc3RhbmNlb2YgcmQ/U3RyaW5nKGEpOmE7dGhpcy5jdXJyZW50VGFyZ2V0PXRoaXMudGFyZ2V0PWI7dGhpcy5kZWZhdWx0UHJldmVudGVkPXRoaXMuaD0hMX07Xy5zZC5wcm90b3R5cGUuc3RvcFByb3BhZ2F0aW9uPWZ1bmN0aW9uKCl7dGhpcy5oPSEwfTtfLnNkLnByb3RvdHlwZS5wcmV2ZW50RGVmYXVsdD1mdW5jdGlvbigpe3RoaXMuZGVmYXVsdFByZXZlbnRlZD0hMH07dmFyIHRkPWZ1bmN0aW9uKCl7aWYoIV8udS5hZGRFdmVudExpc3RlbmVyfHwhT2JqZWN0LmRlZmluZVByb3BlcnR5KXJldHVybiExO3ZhciBhPSExLGI9T2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCJwYXNzaXZlIix7Z2V0OmZ1bmN0aW9uKCl7YT0hMH19KTt0cnl7dmFyIGM9ZnVuY3Rpb24oKXt9O18udS5hZGRFdmVudExpc3RlbmVyKCJ0ZXN0IixjLGIpO18udS5yZW1vdmVFdmVudExpc3RlbmVyKCJ0ZXN0IixjLGIpfWNhdGNoKGQpe31yZXR1cm4gYX0oKTtfLnVkPWZ1bmN0aW9uKGEsYil7Xy5zZC5jYWxsKHRoaXMsYT9hLnR5cGU6IiIpO3RoaXMucmVsYXRlZFRhcmdldD10aGlzLmN1cnJlbnRUYXJnZXQ9dGhpcy50YXJnZXQ9bnVsbDt0aGlzLmJ1dHRvbj10aGlzLnNjcmVlblk9dGhpcy5zY3JlZW5YPXRoaXMuY2xpZW50WT10aGlzLmNsaWVudFg9dGhpcy5vZmZzZXRZPXRoaXMub2Zmc2V0WD0wO3RoaXMua2V5PSIiO3RoaXMuY2hhckNvZGU9dGhpcy5rZXlDb2RlPTA7dGhpcy5tZXRhS2V5PXRoaXMuc2hpZnRLZXk9dGhpcy5hbHRLZXk9dGhpcy5jdHJsS2V5PSExO3RoaXMuc3RhdGU9bnVsbDt0aGlzLmo9ITE7dGhpcy5wb2ludGVySWQ9MDt0aGlzLnBvaW50ZXJUeXBlPSIiO3RoaXMudGltZVN0YW1wPTA7dGhpcy5nPW51bGw7YSYmdGhpcy5pbml0KGEsYil9O18uRShfLnVkLF8uc2QpOwpfLnVkLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy50eXBlPWEudHlwZSxkPWEuY2hhbmdlZFRvdWNoZXMmJmEuY2hhbmdlZFRvdWNoZXMubGVuZ3RoP2EuY2hhbmdlZFRvdWNoZXNbMF06bnVsbDt0aGlzLnRhcmdldD1hLnRhcmdldHx8YS5zcmNFbGVtZW50O3RoaXMuY3VycmVudFRhcmdldD1iO2I9YS5yZWxhdGVkVGFyZ2V0O2J8fChjPT0ibW91c2VvdmVyIj9iPWEuZnJvbUVsZW1lbnQ6Yz09Im1vdXNlb3V0IiYmKGI9YS50b0VsZW1lbnQpKTt0aGlzLnJlbGF0ZWRUYXJnZXQ9YjtkPyh0aGlzLmNsaWVudFg9ZC5jbGllbnRYIT09dm9pZCAwP2QuY2xpZW50WDpkLnBhZ2VYLHRoaXMuY2xpZW50WT1kLmNsaWVudFkhPT12b2lkIDA/ZC5jbGllbnRZOmQucGFnZVksdGhpcy5zY3JlZW5YPWQuc2NyZWVuWHx8MCx0aGlzLnNjcmVlblk9ZC5zY3JlZW5ZfHwwKToodGhpcy5vZmZzZXRYPV8uSWN8fGEub2Zmc2V0WCE9PXZvaWQgMD9hLm9mZnNldFg6YS5sYXllclgsCnRoaXMub2Zmc2V0WT1fLkljfHxhLm9mZnNldFkhPT12b2lkIDA/YS5vZmZzZXRZOmEubGF5ZXJZLHRoaXMuY2xpZW50WD1hLmNsaWVudFghPT12b2lkIDA/YS5jbGllbnRYOmEucGFnZVgsdGhpcy5jbGllbnRZPWEuY2xpZW50WSE9PXZvaWQgMD9hLmNsaWVudFk6YS5wYWdlWSx0aGlzLnNjcmVlblg9YS5zY3JlZW5YfHwwLHRoaXMuc2NyZWVuWT1hLnNjcmVlbll8fDApO3RoaXMuYnV0dG9uPWEuYnV0dG9uO3RoaXMua2V5Q29kZT1hLmtleUNvZGV8fDA7dGhpcy5rZXk9YS5rZXl8fCIiO3RoaXMuY2hhckNvZGU9YS5jaGFyQ29kZXx8KGM9PSJrZXlwcmVzcyI/YS5rZXlDb2RlOjApO3RoaXMuY3RybEtleT1hLmN0cmxLZXk7dGhpcy5hbHRLZXk9YS5hbHRLZXk7dGhpcy5zaGlmdEtleT1hLnNoaWZ0S2V5O3RoaXMubWV0YUtleT1hLm1ldGFLZXk7dGhpcy5qPV8uS2M/YS5tZXRhS2V5OmEuY3RybEtleTt0aGlzLnBvaW50ZXJJZD1hLnBvaW50ZXJJZHx8MDt0aGlzLnBvaW50ZXJUeXBlPQphLnBvaW50ZXJUeXBlO3RoaXMuc3RhdGU9YS5zdGF0ZTt0aGlzLnRpbWVTdGFtcD1hLnRpbWVTdGFtcDt0aGlzLmc9YTthLmRlZmF1bHRQcmV2ZW50ZWQmJl8udWQuUC5wcmV2ZW50RGVmYXVsdC5jYWxsKHRoaXMpfTtfLnVkLnByb3RvdHlwZS5zdG9wUHJvcGFnYXRpb249ZnVuY3Rpb24oKXtfLnVkLlAuc3RvcFByb3BhZ2F0aW9uLmNhbGwodGhpcyk7dGhpcy5nLnN0b3BQcm9wYWdhdGlvbj90aGlzLmcuc3RvcFByb3BhZ2F0aW9uKCk6dGhpcy5nLmNhbmNlbEJ1YmJsZT0hMH07Xy51ZC5wcm90b3R5cGUucHJldmVudERlZmF1bHQ9ZnVuY3Rpb24oKXtfLnVkLlAucHJldmVudERlZmF1bHQuY2FsbCh0aGlzKTt2YXIgYT10aGlzLmc7YS5wcmV2ZW50RGVmYXVsdD9hLnByZXZlbnREZWZhdWx0KCk6YS5yZXR1cm5WYWx1ZT0hMX07dmFyIHZkO3ZkPSJjbG9zdXJlX2xpc3RlbmFibGVfIisoTWF0aC5yYW5kb20oKSoxRTZ8MCk7Xy53ZD1mdW5jdGlvbihhKXtyZXR1cm4hKCFhfHwhYVt2ZF0pfTt2YXIgeGQ9MDt2YXIgeWQ9ZnVuY3Rpb24oYSxiLGMsZCxlKXt0aGlzLmxpc3RlbmVyPWE7dGhpcy5wcm94eT1udWxsO3RoaXMuc3JjPWI7dGhpcy50eXBlPWM7dGhpcy5jYXB0dXJlPSEhZDt0aGlzLmNlPWU7dGhpcy5rZXk9Kyt4ZDt0aGlzLmtkPXRoaXMuS2Q9ITF9LHpkPWZ1bmN0aW9uKGEpe2Eua2Q9ITA7YS5saXN0ZW5lcj1udWxsO2EucHJveHk9bnVsbDthLnNyYz1udWxsO2EuY2U9bnVsbH07dmFyIEJkO2ViLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1hLnRvU3RyaW5nKCk7YT10aGlzLmdbZl07YXx8KGE9dGhpcy5nW2ZdPVtdLHRoaXMuaCsrKTt2YXIgZz1BZChhLGIsZCxlKTtnPi0xPyhiPWFbZ10sY3x8KGIuS2Q9ITEpKTooYj1uZXcgeWQoYix0aGlzLnNyYyxmLCEhZCxlKSxiLktkPWMsYS5wdXNoKGIpKTtyZXR1cm4gYn07ZWIucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbihhLGIsYyxkKXthPWEudG9TdHJpbmcoKTtpZighKGEgaW4gdGhpcy5nKSlyZXR1cm4hMTt2YXIgZT10aGlzLmdbYV07Yj1BZChlLGIsYyxkKTtyZXR1cm4gYj4tMT8oemQoZVtiXSksQXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKGUsYiwxKSxlLmxlbmd0aD09MCYmKGRlbGV0ZSB0aGlzLmdbYV0sdGhpcy5oLS0pLCEwKTohMX07CkJkPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi50eXBlO2lmKCEoYyBpbiBhLmcpKXJldHVybiExO3ZhciBkPV8ud2EoYS5nW2NdLGIpO2QmJih6ZChiKSxhLmdbY10ubGVuZ3RoPT0wJiYoZGVsZXRlIGEuZ1tjXSxhLmgtLSkpO3JldHVybiBkfTtfLkNkPWZ1bmN0aW9uKGEpe3ZhciBiPTAsYztmb3IoYyBpbiBhLmcpe2Zvcih2YXIgZD1hLmdbY10sZT0wO2U8ZC5sZW5ndGg7ZSsrKSsrYix6ZChkW2VdKTtkZWxldGUgYS5nW2NdO2EuaC0tfX07ZWIucHJvdG90eXBlLlpjPWZ1bmN0aW9uKGEsYixjLGQpe2E9dGhpcy5nW2EudG9TdHJpbmcoKV07dmFyIGU9LTE7YSYmKGU9QWQoYSxiLGMsZCkpO3JldHVybiBlPi0xP2FbZV06bnVsbH07CmViLnByb3RvdHlwZS5oYXNMaXN0ZW5lcj1mdW5jdGlvbihhLGIpe3ZhciBjPWEhPT12b2lkIDAsZD1jP2EudG9TdHJpbmcoKToiIixlPWIhPT12b2lkIDA7cmV0dXJuIENhKHRoaXMuZyxmdW5jdGlvbihmKXtmb3IodmFyIGc9MDtnPGYubGVuZ3RoOysrZylpZighKGMmJmZbZ10udHlwZSE9ZHx8ZSYmZltnXS5jYXB0dXJlIT1iKSlyZXR1cm4hMDtyZXR1cm4hMX0pfTt2YXIgQWQ9ZnVuY3Rpb24oYSxiLGMsZCl7Zm9yKHZhciBlPTA7ZTxhLmxlbmd0aDsrK2Upe3ZhciBmPWFbZV07aWYoIWYua2QmJmYubGlzdGVuZXI9PWImJmYuY2FwdHVyZT09ISFjJiZmLmNlPT1kKXJldHVybiBlfXJldHVybi0xfTt2YXIgRGQsRWQsRmQsSWQsS2QsTGQsTWQsUGQsSGQ7RGQ9ImNsb3N1cmVfbG1fIisoTWF0aC5yYW5kb20oKSoxRTZ8MCk7RWQ9e307RmQ9MDtfLkY9ZnVuY3Rpb24oYSxiLGMsZCxlKXtpZihkJiZkLm9uY2UpcmV0dXJuIF8uR2QoYSxiLGMsZCxlKTtpZihBcnJheS5pc0FycmF5KGIpKXtmb3IodmFyIGY9MDtmPGIubGVuZ3RoO2YrKylfLkYoYSxiW2ZdLGMsZCxlKTtyZXR1cm4gbnVsbH1jPUhkKGMpO3JldHVybiBfLndkKGEpP2EuTChiLGMsXy56YShkKT8hIWQuY2FwdHVyZTohIWQsZSk6SWQoYSxiLGMsITEsZCxlKX07CklkPWZ1bmN0aW9uKGEsYixjLGQsZSxmKXtpZighYil0aHJvdyBFcnJvcigidyIpO3ZhciBnPV8uemEoZSk/ISFlLmNhcHR1cmU6ISFlLGg9Xy5KZChhKTtofHwoYVtEZF09aD1uZXcgZWIoYSkpO2M9aC5hZGQoYixjLGQsZyxmKTtpZihjLnByb3h5KXJldHVybiBjO2Q9S2QoKTtjLnByb3h5PWQ7ZC5zcmM9YTtkLmxpc3RlbmVyPWM7aWYoYS5hZGRFdmVudExpc3RlbmVyKXRkfHwoZT1nKSxlPT09dm9pZCAwJiYoZT0hMSksYS5hZGRFdmVudExpc3RlbmVyKGIudG9TdHJpbmcoKSxkLGUpO2Vsc2UgaWYoYS5hdHRhY2hFdmVudClhLmF0dGFjaEV2ZW50KExkKGIudG9TdHJpbmcoKSksZCk7ZWxzZSBpZihhLmFkZExpc3RlbmVyJiZhLnJlbW92ZUxpc3RlbmVyKWEuYWRkTGlzdGVuZXIoZCk7ZWxzZSB0aHJvdyBFcnJvcigieCIpO0ZkKys7cmV0dXJuIGN9O0tkPWZ1bmN0aW9uKCl7dmFyIGE9TWQsYj1mdW5jdGlvbihjKXtyZXR1cm4gYS5jYWxsKGIuc3JjLGIubGlzdGVuZXIsYyl9O3JldHVybiBifTsKXy5HZD1mdW5jdGlvbihhLGIsYyxkLGUpe2lmKEFycmF5LmlzQXJyYXkoYikpe2Zvcih2YXIgZj0wO2Y8Yi5sZW5ndGg7ZisrKV8uR2QoYSxiW2ZdLGMsZCxlKTtyZXR1cm4gbnVsbH1jPUhkKGMpO3JldHVybiBfLndkKGEpP2EuS2IoYixjLF8uemEoZCk/ISFkLmNhcHR1cmU6ISFkLGUpOklkKGEsYixjLCEwLGQsZSl9O18uTmQ9ZnVuY3Rpb24oYSxiLGMsZCxlKXtpZihBcnJheS5pc0FycmF5KGIpKWZvcih2YXIgZj0wO2Y8Yi5sZW5ndGg7ZisrKV8uTmQoYSxiW2ZdLGMsZCxlKTtlbHNlIGQ9Xy56YShkKT8hIWQuY2FwdHVyZTohIWQsYz1IZChjKSxfLndkKGEpP2EuZmIoYixjLGQsZSk6YSYmKGE9Xy5KZChhKSkmJihiPWEuWmMoYixjLGQsZSkpJiZfLk9kKGIpfTsKXy5PZD1mdW5jdGlvbihhKXtpZih0eXBlb2YgYT09PSJudW1iZXIifHwhYXx8YS5rZClyZXR1cm4hMTt2YXIgYj1hLnNyYztpZihfLndkKGIpKXJldHVybiBCZChiLlhhLGEpO3ZhciBjPWEudHlwZSxkPWEucHJveHk7Yi5yZW1vdmVFdmVudExpc3RlbmVyP2IucmVtb3ZlRXZlbnRMaXN0ZW5lcihjLGQsYS5jYXB0dXJlKTpiLmRldGFjaEV2ZW50P2IuZGV0YWNoRXZlbnQoTGQoYyksZCk6Yi5hZGRMaXN0ZW5lciYmYi5yZW1vdmVMaXN0ZW5lciYmYi5yZW1vdmVMaXN0ZW5lcihkKTtGZC0tOyhjPV8uSmQoYikpPyhCZChjLGEpLGMuaD09MCYmKGMuc3JjPW51bGwsYltEZF09bnVsbCkpOnpkKGEpO3JldHVybiEwfTtMZD1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbiBFZD9FZFthXTpFZFthXT0ib24iK2F9OwpNZD1mdW5jdGlvbihhLGIpe2lmKGEua2QpYT0hMDtlbHNle2I9bmV3IF8udWQoYix0aGlzKTt2YXIgYz1hLmxpc3RlbmVyLGQ9YS5jZXx8YS5zcmM7YS5LZCYmXy5PZChhKTthPWMuY2FsbChkLGIpfXJldHVybiBhfTtfLkpkPWZ1bmN0aW9uKGEpe2E9YVtEZF07cmV0dXJuIGEgaW5zdGFuY2VvZiBlYj9hOm51bGx9O1BkPSJfX2Nsb3N1cmVfZXZlbnRzX2ZuXyIrKE1hdGgucmFuZG9tKCkqMUU5Pj4+MCk7SGQ9ZnVuY3Rpb24oYSl7aWYodHlwZW9mIGE9PT0iZnVuY3Rpb24iKXJldHVybiBhO2FbUGRdfHwoYVtQZF09ZnVuY3Rpb24oYil7cmV0dXJuIGEuaGFuZGxlRXZlbnQoYil9KTtyZXR1cm4gYVtQZF19O18uRz1mdW5jdGlvbigpe18udy5jYWxsKHRoaXMpO3RoaXMuWGE9bmV3IGViKHRoaXMpO3RoaXMuZGo9dGhpczt0aGlzLnZlPW51bGx9O18uRShfLkcsXy53KTtfLkcucHJvdG90eXBlW3ZkXT0hMDtfLmw9Xy5HLnByb3RvdHlwZTtfLmwuQ2U9ZnVuY3Rpb24oYSl7dGhpcy52ZT1hfTtfLmwuYWRkRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbihhLGIsYyxkKXtfLkYodGhpcyxhLGIsYyxkKX07Xy5sLnJlbW92ZUV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24oYSxiLGMsZCl7Xy5OZCh0aGlzLGEsYixjLGQpfTsKXy5sLmRpc3BhdGNoRXZlbnQ9ZnVuY3Rpb24oYSl7dmFyIGIsYz10aGlzLnZlO2lmKGMpZm9yKGI9W107YztjPWMudmUpYi5wdXNoKGMpO2M9dGhpcy5kajt2YXIgZD1hLnR5cGV8fGE7aWYodHlwZW9mIGE9PT0ic3RyaW5nIilhPW5ldyBfLnNkKGEsYyk7ZWxzZSBpZihhIGluc3RhbmNlb2YgXy5zZClhLnRhcmdldD1hLnRhcmdldHx8YztlbHNle3ZhciBlPWE7YT1uZXcgXy5zZChkLGMpO0ZhKGEsZSl9ZT0hMDt2YXIgZjtpZihiKWZvcihmPWIubGVuZ3RoLTE7IWEuaCYmZj49MDtmLS0pe3ZhciBnPWEuY3VycmVudFRhcmdldD1iW2ZdO2U9UWQoZyxkLCEwLGEpJiZlfWEuaHx8KGc9YS5jdXJyZW50VGFyZ2V0PWMsZT1RZChnLGQsITAsYSkmJmUsYS5ofHwoZT1RZChnLGQsITEsYSkmJmUpKTtpZihiKWZvcihmPTA7IWEuaCYmZjxiLmxlbmd0aDtmKyspZz1hLmN1cnJlbnRUYXJnZXQ9YltmXSxlPVFkKGcsZCwhMSxhKSYmZTtyZXR1cm4gZX07Cl8ubC5LPWZ1bmN0aW9uKCl7Xy5HLlAuSy5jYWxsKHRoaXMpO3RoaXMuWGEmJl8uQ2QodGhpcy5YYSk7dGhpcy52ZT1udWxsfTtfLmwuTD1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gdGhpcy5YYS5hZGQoU3RyaW5nKGEpLGIsITEsYyxkKX07Xy5sLktiPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLlhhLmFkZChTdHJpbmcoYSksYiwhMCxjLGQpfTtfLmwuZmI9ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIHRoaXMuWGEucmVtb3ZlKFN0cmluZyhhKSxiLGMsZCl9O3ZhciBRZD1mdW5jdGlvbihhLGIsYyxkKXtiPWEuWGEuZ1tTdHJpbmcoYildO2lmKCFiKXJldHVybiEwO2I9Yi5jb25jYXQoKTtmb3IodmFyIGU9ITAsZj0wO2Y8Yi5sZW5ndGg7KytmKXt2YXIgZz1iW2ZdO2lmKGcmJiFnLmtkJiZnLmNhcHR1cmU9PWMpe3ZhciBoPWcubGlzdGVuZXIsaz1nLmNlfHxnLnNyYztnLktkJiZCZChhLlhhLGcpO2U9aC5jYWxsKGssZCkhPT0hMSYmZX19cmV0dXJuIGUmJiFkLmRlZmF1bHRQcmV2ZW50ZWR9OwpfLkcucHJvdG90eXBlLlpjPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLlhhLlpjKFN0cmluZyhhKSxiLGMsZCl9O18uRy5wcm90b3R5cGUuaGFzTGlzdGVuZXI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5YYS5oYXNMaXN0ZW5lcihhIT09dm9pZCAwP1N0cmluZyhhKTp2b2lkIDAsYil9O3ZhciBnYj1mdW5jdGlvbihhKXtfLkcuY2FsbCh0aGlzKTt0aGlzLmc9YXx8d2luZG93O3RoaXMuaD1fLkYodGhpcy5nLCJyZXNpemUiLHRoaXMubCwhMSx0aGlzKTt0aGlzLmo9Xy5pZCh0aGlzLmd8fHdpbmRvdyl9O18uRShnYixfLkcpO2diLnByb3RvdHlwZS5LPWZ1bmN0aW9uKCl7Z2IuUC5LLmNhbGwodGhpcyk7dGhpcy5oJiYoXy5PZCh0aGlzLmgpLHRoaXMuaD1udWxsKTt0aGlzLmo9dGhpcy5nPW51bGx9O2diLnByb3RvdHlwZS5sPWZ1bmN0aW9uKCl7dmFyIGE9Xy5pZCh0aGlzLmd8fHdpbmRvdyk7Xy5tYyhhLHRoaXMuail8fCh0aGlzLmo9YSx0aGlzLmRpc3BhdGNoRXZlbnQoInJlc2l6ZSIpKX07dmFyIGliPWZ1bmN0aW9uKGEpe18uRy5jYWxsKHRoaXMpO3RoaXMuaj1hP2EuZy5kZWZhdWx0Vmlldzp3aW5kb3c7dGhpcy5vPXRoaXMuai5kZXZpY2VQaXhlbFJhdGlvPj0xLjU/MjoxO3RoaXMuaD0oMCxfLkMpKHRoaXMuQSx0aGlzKTt0aGlzLmw9bnVsbDsodGhpcy5nPXRoaXMuai5tYXRjaE1lZGlhP3RoaXMuai5tYXRjaE1lZGlhKCIobWluLXJlc29sdXRpb246IDEuNWRwcHgpLCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAxLjUpIik6bnVsbCkmJnR5cGVvZiB0aGlzLmcuYWRkTGlzdGVuZXIhPT0iZnVuY3Rpb24iJiZ0eXBlb2YgdGhpcy5nLmFkZEV2ZW50TGlzdGVuZXIhPT0iZnVuY3Rpb24iJiYodGhpcy5nPW51bGwpfTtfLkUoaWIsXy5HKTsKaWIucHJvdG90eXBlLnN0YXJ0PWZ1bmN0aW9uKCl7dmFyIGE9dGhpczt0aGlzLmcmJih0eXBlb2YgdGhpcy5nLmFkZEV2ZW50TGlzdGVuZXI9PT0iZnVuY3Rpb24iPyh0aGlzLmcuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIix0aGlzLmgpLHRoaXMubD1mdW5jdGlvbigpe2EuZy5yZW1vdmVFdmVudExpc3RlbmVyKCJjaGFuZ2UiLGEuaCl9KToodGhpcy5nLmFkZExpc3RlbmVyKHRoaXMuaCksdGhpcy5sPWZ1bmN0aW9uKCl7YS5nLnJlbW92ZUxpc3RlbmVyKGEuaCl9KSl9O2liLnByb3RvdHlwZS5BPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5qLmRldmljZVBpeGVsUmF0aW8+PTEuNT8yOjE7dGhpcy5vIT1hJiYodGhpcy5vPWEsdGhpcy5kaXNwYXRjaEV2ZW50KCJhIikpfTtpYi5wcm90b3R5cGUuSz1mdW5jdGlvbigpe3RoaXMubCYmdGhpcy5sKCk7aWIuUC5LLmNhbGwodGhpcyl9O18uRShqYixfLncpO2piLnByb3RvdHlwZS5LPWZ1bmN0aW9uKCl7dGhpcy5oPXRoaXMubD1udWxsO3RoaXMuZyYmKHRoaXMuZy5kaXNwb3NlKCksdGhpcy5nPW51bGwpO18ucWEodGhpcy5qKTt0aGlzLmo9bnVsbH07Xy5wYShfLmVjLGpiKTt2YXIga2I9bmV3IFVpbnQ4QXJyYXkoMTIzKTt2YXIgUmQ9W107VWI9VWJ8fHt9O3ZhciBTZD1mdW5jdGlvbigpe18udy5jYWxsKHRoaXMpfTtfLkUoU2QsXy53KTtTZC5wcm90b3R5cGUuaW5pdGlhbGl6ZT1mdW5jdGlvbigpe307dmFyIFRkPWZ1bmN0aW9uKGEsYil7dGhpcy5nPWE7dGhpcy5oPWJ9O1RkLnByb3RvdHlwZS5leGVjdXRlPWZ1bmN0aW9uKGEpe3RoaXMuZyYmKHRoaXMuZy5jYWxsKHRoaXMuaHx8bnVsbCxhKSx0aGlzLmc9dGhpcy5oPW51bGwpfTtUZC5wcm90b3R5cGUuYWJvcnQ9ZnVuY3Rpb24oKXt0aGlzLmg9dGhpcy5nPW51bGx9O3ZhciBVZD1mdW5jdGlvbihhLGIpe18udy5jYWxsKHRoaXMpO3RoaXMuaD1hO3RoaXMuQT1iO3RoaXMubz1bXTt0aGlzLmw9W107dGhpcy5qPVtdfTtfLkUoVWQsXy53KTtVZC5wcm90b3R5cGUuQj1TZDtVZC5wcm90b3R5cGUuZz1udWxsO1VkLnByb3RvdHlwZS5ZYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLkF9O3ZhciBWZD1mdW5jdGlvbihhLGIpe2EubC5wdXNoKG5ldyBUZChiKSl9O1VkLnByb3RvdHlwZS5vbkxvYWQ9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IHRoaXMuQjtiLmluaXRpYWxpemUoYSgpKTt0aGlzLmc9YjtiPShiPVdkKHRoaXMuaixhKCkpKXx8V2QodGhpcy5vLGEoKSk7Ynx8KHRoaXMubC5sZW5ndGg9MCk7cmV0dXJuIGJ9O1VkLnByb3RvdHlwZS5JZj1mdW5jdGlvbihhKXsoYT1XZCh0aGlzLmwsYSkpJiZfLm5iKEVycm9yKCJ6YCIrYSkpO3RoaXMuai5sZW5ndGg9MDt0aGlzLm8ubGVuZ3RoPTB9Owp2YXIgV2Q9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9W10sZD0wO2Q8YS5sZW5ndGg7ZCsrKXRyeXthW2RdLmV4ZWN1dGUoYil9Y2F0Y2goZSl7Xy5uYihlKSxjLnB1c2goZSl9YS5sZW5ndGg9MDtyZXR1cm4gYy5sZW5ndGg/YzpudWxsfTtVZC5wcm90b3R5cGUuSz1mdW5jdGlvbigpe1VkLlAuSy5jYWxsKHRoaXMpO18ucWEodGhpcy5nKX07dmFyIFhkPWZ1bmN0aW9uKCl7dGhpcy5DPXRoaXMuUj1udWxsfTtfLmw9WGQucHJvdG90eXBlO18ubC5ZaD1mdW5jdGlvbigpe307Xy5sLldmPWZ1bmN0aW9uKCl7fTtfLmwuVWg9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigiQiIpO307Xy5sLlRnPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuUn07Xy5sLlhmPWZ1bmN0aW9uKGEpe3RoaXMuUj1hfTtfLmwuaXNBY3RpdmU9ZnVuY3Rpb24oKXtyZXR1cm4hMX07Xy5sLnRoPWZ1bmN0aW9uKCl7cmV0dXJuITF9O18ubC5TaD1mdW5jdGlvbigpe307dmFyIFlkPXR5cGVvZiBBc3luY0NvbnRleHQhPT0idW5kZWZpbmVkIiYmdHlwZW9mIEFzeW5jQ29udGV4dC5TbmFwc2hvdD09PSJmdW5jdGlvbiI/ZnVuY3Rpb24oYSl7cmV0dXJuIGEmJkFzeW5jQ29udGV4dC5TbmFwc2hvdC53cmFwKGEpfTpmdW5jdGlvbihhKXtyZXR1cm4gYX07dmFyIFpkPWZ1bmN0aW9uKGEsYil7dGhpcy5sPWE7dGhpcy5qPWI7dGhpcy5oPTA7dGhpcy5nPW51bGx9O1pkLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oKXtpZih0aGlzLmg+MCl7dGhpcy5oLS07dmFyIGE9dGhpcy5nO3RoaXMuZz1hLm5leHQ7YS5uZXh0PW51bGx9ZWxzZSBhPXRoaXMubCgpO3JldHVybiBhfTt2YXIgcGI9ZnVuY3Rpb24oYSxiKXthLmooYik7YS5oPDEwMCYmKGEuaCsrLGIubmV4dD1hLmcsYS5nPWIpfTt2YXIgJGQ9ZnVuY3Rpb24oKXt0aGlzLmg9dGhpcy5nPW51bGx9OyRkLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz1xYi5nZXQoKTtjLnNldChhLGIpO3RoaXMuaD90aGlzLmgubmV4dD1jOnRoaXMuZz1jO3RoaXMuaD1jfTskZC5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKCl7dmFyIGE9bnVsbDt0aGlzLmcmJihhPXRoaXMuZyx0aGlzLmc9dGhpcy5nLm5leHQsdGhpcy5nfHwodGhpcy5oPW51bGwpLGEubmV4dD1udWxsKTtyZXR1cm4gYX07dmFyIHFiPW5ldyBaZChmdW5jdGlvbigpe3JldHVybiBuZXcgYWV9LGZ1bmN0aW9uKGEpe3JldHVybiBhLnJlc2V0KCl9KSxhZT1mdW5jdGlvbigpe3RoaXMubmV4dD10aGlzLnNjb3BlPXRoaXMuZz1udWxsfTthZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGEsYil7dGhpcy5nPWE7dGhpcy5zY29wZT1iO3RoaXMubmV4dD1udWxsfTsKYWUucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5uZXh0PXRoaXMuc2NvcGU9dGhpcy5nPW51bGx9O3ZhciBiZSxyYj0hMSxvYj1uZXcgJGQsZGU9ZnVuY3Rpb24oYSxiKXtiZXx8Y2UoKTtyYnx8KGJlKCkscmI9ITApO29iLmFkZChhLGIpfSxjZT1mdW5jdGlvbigpe3ZhciBhPVByb21pc2UucmVzb2x2ZSh2b2lkIDApO2JlPWZ1bmN0aW9uKCl7YS50aGVuKHNiKX19O18uZWU9ZnVuY3Rpb24oKXt9O3ZhciBmZT1mdW5jdGlvbihhKXtpZighYSlyZXR1cm4hMTt0cnl7cmV0dXJuISFhLiRnb29nX1RoZW5hYmxlfWNhdGNoKGIpe3JldHVybiExfX07dmFyIGllLHRlLHNlLHFlLHJlLHZlLHVlLHdlO18uaGU9ZnVuY3Rpb24oYSl7dGhpcy5nPTA7dGhpcy5CPXZvaWQgMDt0aGlzLmw9dGhpcy5oPXRoaXMuaj1udWxsO3RoaXMubz10aGlzLkE9ITE7aWYoYSE9Xy5lZSl0cnl7dmFyIGI9dGhpczthLmNhbGwodm9pZCAwLGZ1bmN0aW9uKGMpe18uZ2UoYiwyLGMpfSxmdW5jdGlvbihjKXtfLmdlKGIsMyxjKX0pfWNhdGNoKGMpe18uZ2UodGhpcywzLGMpfX07aWU9ZnVuY3Rpb24oKXt0aGlzLm5leHQ9dGhpcy5qPXRoaXMuaD10aGlzLmw9dGhpcy5nPW51bGw7dGhpcy5vPSExfTtpZS5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLmo9dGhpcy5oPXRoaXMubD10aGlzLmc9bnVsbDt0aGlzLm89ITF9O3ZhciBqZT1uZXcgWmQoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGllfSxmdW5jdGlvbihhKXthLnJlc2V0KCl9KSxrZT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9amUuZ2V0KCk7ZC5sPWE7ZC5oPWI7ZC5qPWM7cmV0dXJuIGR9OwpfLmhlLnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbGUodGhpcyxZZCh0eXBlb2YgYT09PSJmdW5jdGlvbiI/YTpudWxsKSxZZCh0eXBlb2YgYj09PSJmdW5jdGlvbiI/YjpudWxsKSxjKX07Xy5oZS5wcm90b3R5cGUuJGdvb2dfVGhlbmFibGU9ITA7dmFyIG5lPWZ1bmN0aW9uKGEsYixjLGQpe21lKGEsa2UoYnx8Xy5lZSxjfHxudWxsLGQpKX07Xy5oZS5wcm90b3R5cGUuZmluYWxseT1mdW5jdGlvbihhKXt2YXIgYj10aGlzO2E9WWQoYSk7cmV0dXJuIG5ldyBfLmhlKGZ1bmN0aW9uKGMsZCl7bmUoYixmdW5jdGlvbihlKXthKCk7YyhlKX0sZnVuY3Rpb24oZSl7YSgpO2QoZSl9KX0pfTtfLmhlLnByb3RvdHlwZS5DPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGxlKHRoaXMsbnVsbCxZZChhKSxiKX07Xy5oZS5wcm90b3R5cGUuY2F0Y2g9Xy5oZS5wcm90b3R5cGUuQzsKXy5oZS5wcm90b3R5cGUuY2FuY2VsPWZ1bmN0aW9uKGEpe2lmKHRoaXMuZz09MCl7dmFyIGI9bmV3IF8ub2UoYSk7ZGUoZnVuY3Rpb24oKXtwZSh0aGlzLGIpfSx0aGlzKX19Owp2YXIgcGU9ZnVuY3Rpb24oYSxiKXtpZihhLmc9PTApaWYoYS5qKXt2YXIgYz1hLmo7aWYoYy5oKXtmb3IodmFyIGQ9MCxlPW51bGwsZj1udWxsLGc9Yy5oO2cmJihnLm98fChkKyssZy5nPT1hJiYoZT1nKSwhKGUmJmQ+MSkpKTtnPWcubmV4dCllfHwoZj1nKTtlJiYoYy5nPT0wJiZkPT0xP3BlKGMsYik6KGY/KGQ9ZixkLm5leHQ9PWMubCYmKGMubD1kKSxkLm5leHQ9ZC5uZXh0Lm5leHQpOnFlKGMpLHJlKGMsZSwzLGIpKSl9YS5qPW51bGx9ZWxzZSBfLmdlKGEsMyxiKX0sbWU9ZnVuY3Rpb24oYSxiKXthLmh8fGEuZyE9MiYmYS5nIT0zfHxzZShhKTthLmw/YS5sLm5leHQ9YjphLmg9YjthLmw9Yn0sbGU9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9a2UobnVsbCxudWxsLG51bGwpO2UuZz1uZXcgXy5oZShmdW5jdGlvbihmLGcpe2UubD1iP2Z1bmN0aW9uKGgpe3RyeXt2YXIgaz1iLmNhbGwoZCxoKTtmKGspfWNhdGNoKG0pe2cobSl9fTpmO2UuaD1jP2Z1bmN0aW9uKGgpe3RyeXt2YXIgaz0KYy5jYWxsKGQsaCk7az09PXZvaWQgMCYmaCBpbnN0YW5jZW9mIF8ub2U/ZyhoKTpmKGspfWNhdGNoKG0pe2cobSl9fTpnfSk7ZS5nLmo9YTttZShhLGUpO3JldHVybiBlLmd9O18uaGUucHJvdG90eXBlLkc9ZnVuY3Rpb24oYSl7dGhpcy5nPTA7Xy5nZSh0aGlzLDIsYSl9O18uaGUucHJvdG90eXBlLkk9ZnVuY3Rpb24oYSl7dGhpcy5nPTA7Xy5nZSh0aGlzLDMsYSl9OwpfLmdlPWZ1bmN0aW9uKGEsYixjKXtpZihhLmc9PTApe2E9PT1jJiYoYj0zLGM9bmV3IFR5cGVFcnJvcigiQyIpKTthLmc9MTthOnt2YXIgZD1jLGU9YS5HLGY9YS5JO2lmKGQgaW5zdGFuY2VvZiBfLmhlKXtuZShkLGUsZixhKTt2YXIgZz0hMH1lbHNlIGlmKGZlKGQpKWQudGhlbihlLGYsYSksZz0hMDtlbHNle2lmKF8uemEoZCkpdHJ5e3ZhciBoPWQudGhlbjtpZih0eXBlb2YgaD09PSJmdW5jdGlvbiIpe3RlKGQsaCxlLGYsYSk7Zz0hMDticmVhayBhfX1jYXRjaChrKXtmLmNhbGwoYSxrKTtnPSEwO2JyZWFrIGF9Zz0hMX19Z3x8KGEuQj1jLGEuZz1iLGEuaj1udWxsLHNlKGEpLGIhPTN8fGMgaW5zdGFuY2VvZiBfLm9lfHx1ZShhLGMpKX19O3RlPWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9ITEsZz1mdW5jdGlvbihrKXtmfHwoZj0hMCxjLmNhbGwoZSxrKSl9LGg9ZnVuY3Rpb24oayl7Znx8KGY9ITAsZC5jYWxsKGUsaykpfTt0cnl7Yi5jYWxsKGEsZyxoKX1jYXRjaChrKXtoKGspfX07CnNlPWZ1bmN0aW9uKGEpe2EuQXx8KGEuQT0hMCxkZShhLkYsYSkpfTtxZT1mdW5jdGlvbihhKXt2YXIgYj1udWxsO2EuaCYmKGI9YS5oLGEuaD1iLm5leHQsYi5uZXh0PW51bGwpO2EuaHx8KGEubD1udWxsKTtyZXR1cm4gYn07Xy5oZS5wcm90b3R5cGUuRj1mdW5jdGlvbigpe2Zvcih2YXIgYTthPXFlKHRoaXMpOylyZSh0aGlzLGEsdGhpcy5nLHRoaXMuQik7dGhpcy5BPSExfTtyZT1mdW5jdGlvbihhLGIsYyxkKXtpZihjPT0zJiZiLmgmJiFiLm8pZm9yKDthJiZhLm87YT1hLmopYS5vPSExO2lmKGIuZyliLmcuaj1udWxsLHZlKGIsYyxkKTtlbHNlIHRyeXtiLm8/Yi5sLmNhbGwoYi5qKTp2ZShiLGMsZCl9Y2F0Y2goZSl7d2UuY2FsbChudWxsLGUpfXBiKGplLGIpfTt2ZT1mdW5jdGlvbihhLGIsYyl7Yj09Mj9hLmwuY2FsbChhLmosYyk6YS5oJiZhLmguY2FsbChhLmosYyl9O3VlPWZ1bmN0aW9uKGEsYil7YS5vPSEwO2RlKGZ1bmN0aW9uKCl7YS5vJiZ3ZS5jYWxsKG51bGwsYil9KX07CndlPV8ubmI7Xy5vZT1mdW5jdGlvbihhKXtfLmFhLmNhbGwodGhpcyxhKX07Xy5FKF8ub2UsXy5hYSk7Xy5vZS5wcm90b3R5cGUubmFtZT0iY2FuY2VsIjsvKgoKIENvcHlyaWdodCAyMDA1LCAyMDA3IEJvYiBJcHBvbGl0by4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KIENvcHlyaWdodCBUaGUgQ2xvc3VyZSBMaWJyYXJ5IEF1dGhvcnMuCiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCiovCnZhciB4ZT1mdW5jdGlvbigpe3RoaXMuQj1bXTt0aGlzLmw9dGhpcy5nPSExO3RoaXMuaj12b2lkIDA7dGhpcy5HPXRoaXMuTT10aGlzLkY9ITE7dGhpcy5DPTA7dGhpcy5oPW51bGw7dGhpcy5vPTB9O3hlLnByb3RvdHlwZS5jYW5jZWw9ZnVuY3Rpb24oYSl7aWYodGhpcy5nKXRoaXMuaiBpbnN0YW5jZW9mIHhlJiZ0aGlzLmouY2FuY2VsKCk7ZWxzZXtpZih0aGlzLmgpe3ZhciBiPXRoaXMuaDtkZWxldGUgdGhpcy5oO2E/Yi5jYW5jZWwoYSk6KGIuby0tLGIubzw9MCYmYi5jYW5jZWwoKSl9dGhpcy5HPSEwO3RoaXMuZ3x8dGhpcy5BKG5ldyBfLnllKHRoaXMpKX19O3hlLnByb3RvdHlwZS5JPWZ1bmN0aW9uKGEsYil7dGhpcy5GPSExO3plKHRoaXMsYSxiKX07dmFyIHplPWZ1bmN0aW9uKGEsYixjKXthLmc9ITA7YS5qPWM7YS5sPSFiO0FlKGEpfSxDZT1mdW5jdGlvbihhKXtpZihhLmcpe2lmKCFhLkcpdGhyb3cgbmV3IEJlKGEpO2EuRz0hMX19Owp4ZS5wcm90b3R5cGUuY2FsbGJhY2s9ZnVuY3Rpb24oYSl7Q2UodGhpcyk7emUodGhpcywhMCxhKX07eGUucHJvdG90eXBlLkE9ZnVuY3Rpb24oYSl7Q2UodGhpcyk7emUodGhpcywhMSxhKX07dmFyIEVlPWZ1bmN0aW9uKGEsYixjKXtEZShhLGIsbnVsbCxjKX0sRmU9ZnVuY3Rpb24oYSxiLGMpe0RlKGEsbnVsbCxiLGMpfTt4ZS5wcm90b3R5cGUuZmluYWxseT1mdW5jdGlvbihhKXt2YXIgYj10aGlzO3JldHVybiBHZShuZXcgUHJvbWlzZShmdW5jdGlvbihjLGQpe0RlKGIsZnVuY3Rpb24oZSl7YSgpO2MoZSl9LGZ1bmN0aW9uKGUpe2EoKTtkKGUpfSl9KSl9O3ZhciBEZT1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1hLmc7ZXx8KGI9PT1jP2I9Yz1ZZChiKTooYj1ZZChiKSxjPVlkKGMpKSk7YS5CLnB1c2goW2IsYyxkXSk7ZSYmQWUoYSl9Owp4ZS5wcm90b3R5cGUudGhlbj1mdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmPW5ldyBfLmhlKGZ1bmN0aW9uKGcsaCl7ZT1nO2Q9aH0pO0RlKHRoaXMsZSxmdW5jdGlvbihnKXtnIGluc3RhbmNlb2YgXy55ZT9mLmNhbmNlbCgpOmQoZyk7cmV0dXJuIEhlfSx0aGlzKTtyZXR1cm4gZi50aGVuKGEsYixjKX07eGUucHJvdG90eXBlLiRnb29nX1RoZW5hYmxlPSEwO3ZhciBJZT1mdW5jdGlvbihhLGIpe2IgaW5zdGFuY2VvZiB4ZT9FZShhLCgwLF8uQykoYi5KLGIpKTpFZShhLGZ1bmN0aW9uKCl7cmV0dXJuIGJ9KX07eGUucHJvdG90eXBlLko9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IHhlO0RlKHRoaXMsYi5jYWxsYmFjayxiLkEsYik7YSYmKGIuaD10aGlzLHRoaXMubysrKTtyZXR1cm4gYn07CnZhciBKZT1mdW5jdGlvbihhKXtyZXR1cm4gXy5rYyhhLkIsZnVuY3Rpb24oYil7cmV0dXJuIHR5cGVvZiBiWzFdPT09ImZ1bmN0aW9uIn0pfSxIZT17fSxBZT1mdW5jdGlvbihhKXtpZihhLkMmJmEuZyYmSmUoYSkpe3ZhciBiPWEuQyxjPUtlW2JdO2MmJihfLnUuY2xlYXJUaW1lb3V0KGMuZyksZGVsZXRlIEtlW2JdKTthLkM9MH1hLmgmJihhLmguby0tLGRlbGV0ZSBhLmgpO2I9YS5qO2Zvcih2YXIgZD1jPSExO2EuQi5sZW5ndGgmJiFhLkY7KXt2YXIgZT1hLkIuc2hpZnQoKSxmPWVbMF0sZz1lWzFdO2U9ZVsyXTtpZihmPWEubD9nOmYpdHJ5e3ZhciBoPWYuY2FsbChlfHxudWxsLGIpO2g9PT1IZSYmKGg9dm9pZCAwKTtoIT09dm9pZCAwJiYoYS5sPWEubCYmKGg9PWJ8fGggaW5zdGFuY2VvZiBFcnJvciksYS5qPWI9aCk7aWYoZmUoYil8fHR5cGVvZiBfLnUuUHJvbWlzZT09PSJmdW5jdGlvbiImJmIgaW5zdGFuY2VvZiBfLnUuUHJvbWlzZSlkPSEwLGEuRj0hMH1jYXRjaChrKXtiPQprLGEubD0hMCxKZShhKXx8KGM9ITApfX1hLmo9YjtkJiYoaD0oMCxfLkMpKGEuSSxhLCEwKSxkPSgwLF8uQykoYS5JLGEsITEpLGIgaW5zdGFuY2VvZiB4ZT8oRGUoYixoLGQpLGIuTT0hMCk6Yi50aGVuKGgsZCkpO2MmJihiPW5ldyBMZShiKSxLZVtiLmddPWIsYS5DPWIuZyl9LEdlPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyB4ZTthLnRoZW4oZnVuY3Rpb24oYyl7Yi5jYWxsYmFjayhjKX0sZnVuY3Rpb24oYyl7Yi5BKGMpfSk7cmV0dXJuIGJ9LEJlPWZ1bmN0aW9uKCl7Xy5hYS5jYWxsKHRoaXMpfTtfLkUoQmUsXy5hYSk7QmUucHJvdG90eXBlLm1lc3NhZ2U9IkRlZmVycmVkIGhhcyBhbHJlYWR5IGZpcmVkIjtCZS5wcm90b3R5cGUubmFtZT0iQWxyZWFkeUNhbGxlZEVycm9yIjtfLnllPWZ1bmN0aW9uKCl7Xy5hYS5jYWxsKHRoaXMpfTtfLkUoXy55ZSxfLmFhKTtfLnllLnByb3RvdHlwZS5tZXNzYWdlPSJEZWZlcnJlZCB3YXMgY2FuY2VsZWQiO18ueWUucHJvdG90eXBlLm5hbWU9IkNhbmNlbGVkRXJyb3IiOwp2YXIgTGU9ZnVuY3Rpb24oYSl7dGhpcy5nPV8udS5zZXRUaW1lb3V0KCgwLF8uQykodGhpcy50aHJvd0Vycm9yLHRoaXMpLDApO3RoaXMuaD1hfTtMZS5wcm90b3R5cGUudGhyb3dFcnJvcj1mdW5jdGlvbigpe2RlbGV0ZSBLZVt0aGlzLmddO3Rocm93IHRoaXMuaDt9O3ZhciBLZT17fTt2YXIgTWU9ZnVuY3Rpb24oYSxiLGMsZCxlKXtjPUVycm9yLmNhbGwodGhpcyk7dGhpcy5tZXNzYWdlPWMubWVzc2FnZTsic3RhY2siaW4gYyYmKHRoaXMuc3RhY2s9Yy5zdGFjayk7dGhpcy5uYW1lPSJNb2R1bGVMb2FkRmFpbHVyZSI7dGhpcy50eXBlPWE7dGhpcy5zdGF0dXM9Yjt0aGlzLnVybD1kO3RoaXMuY2F1c2U9ZTt0aGlzLm1lc3NhZ2U9dGhpcy50b1N0cmluZygpfTtfLnkoTWUsRXJyb3IpO01lLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBOZSh0aGlzKSsiICgiKyh0aGlzLnN0YXR1cyE9dm9pZCAwP3RoaXMuc3RhdHVzOiI/IikrIikifTsKdmFyIE5lPWZ1bmN0aW9uKGEpe3N3aXRjaChhLnR5cGUpe2Nhc2UgTWUuZy50ZzpyZXR1cm4iVW5hdXRob3JpemVkIjtjYXNlIE1lLmcuaGc6cmV0dXJuIkNvbnNlY3V0aXZlIGxvYWQgZmFpbHVyZXMiO2Nhc2UgTWUuZy5USU1FT1VUOnJldHVybiJUaW1lZCBvdXQiO2Nhc2UgTWUuZy5yZzpyZXR1cm4iT3V0IG9mIGRhdGUgbW9kdWxlIGlkIjtjYXNlIE1lLmcuSWU6cmV0dXJuIkluaXQgZXJyb3IiO2RlZmF1bHQ6cmV0dXJuIlVua25vd24gZmFpbHVyZSB0eXBlICIrYS50eXBlfX07VWIuU2E9TWU7VWIuU2EuZz17dGc6MCxoZzoxLFRJTUVPVVQ6MixyZzozLEllOjR9O3ZhciBPZT1mdW5jdGlvbigpe1hkLmNhbGwodGhpcyk7dGhpcy5NPW51bGw7dGhpcy5nPXt9O3RoaXMubD1bXTt0aGlzLm89W107dGhpcy5KPVtdO3RoaXMuaD1bXTt0aGlzLkI9W107dGhpcy5BPXt9O3RoaXMucGE9e307dGhpcy5qPXRoaXMuRj1uZXcgVWQoW10sIiIpO3RoaXMuTj1udWxsO3RoaXMuST1uZXcgeGU7dGhpcy5PPSExO3RoaXMuRz0wO3RoaXMuVj10aGlzLlo9dGhpcy5UPSExfTtfLkUoT2UsWGQpO3ZhciBQZT1mdW5jdGlvbihhLGIpe18uYWEuY2FsbCh0aGlzLCJFcnJvciBsb2FkaW5nICIrYSsiOiAiK2IpfTtfLkUoUGUsXy5hYSk7T2UucHJvdG90eXBlLlloPWZ1bmN0aW9uKGEpe3RoaXMuTz1hfTsKT2UucHJvdG90eXBlLldmPWZ1bmN0aW9uKGEsYil7aWYoISh0aGlzIGluc3RhbmNlb2YgT2UpKXRoaXMuV2YoYSxiKTtlbHNlIGlmKHR5cGVvZiBhPT09InN0cmluZyIpe2lmKGEuc3RhcnRzV2l0aCgiZCQiKSl7YT1hLnN1YnN0cmluZygyKTtmb3IodmFyIGM9W10sZD0wLGU9YS5pbmRleE9mKCIvIiksZj0wLGc9ITEsaD0wOzspe3ZhciBrPWc/YS5zdWJzdHJpbmcoZik6YS5zdWJzdHJpbmcoZixlKTtpZihrLmxlbmd0aD09PTApZCsrLGY9InN5IitkLnRvU3RyaW5nKDM2KSxrPVtdO2Vsc2V7dmFyIG09ay5pbmRleE9mKCI6Iik7aWYobTwwKWY9ayxrPVtdO2Vsc2UgaWYobT09PWsubGVuZ3RoLTEpZj1rLnN1YnN0cmluZygwLG0pLGs9QXJyYXkoY1toLTFdKTtlbHNle2Y9ay5zdWJzdHJpbmcoMCxtKTtrPWsuc3Vic3RyaW5nKG0rMSkuc3BsaXQoIiwiKTttPWg7Zm9yKHZhciBuPTA7bjxrLmxlbmd0aDtuKyspbS09a1tuXS5sZW5ndGg9PT0wPzE6TnVtYmVyKGtbbl0pLGtbbl09Y1ttXX1tPQowO2lmKGYubGVuZ3RoPT09MCltPTE7ZWxzZSBpZihmLmNoYXJBdCgwKT09PSIrInx8Zi5jaGFyQXQoMCk9PT0iLSIpbT1OdW1iZXIoZik7bSE9PTAmJihkKz1tLGY9InN5IitkLnRvU3RyaW5nKDM2KSl9Yy5wdXNoKGYpO1FlKHRoaXMsZixrKTtpZihnKWJyZWFrO2Y9ZSsxO2U9YS5pbmRleE9mKCIvIixmKTtlPT09LTEmJihnPSEwKTtoKyt9dGhpcy5NPWN9ZWxzZSBpZihhLnN0YXJ0c1dpdGgoInAkIikpUmUodGhpcyxhKTtlbHNle2E9YS5zcGxpdCgiLyIpO2M9W107Zm9yKGQ9MDtkPGEubGVuZ3RoO2QrKyl7aD1hW2RdLnNwbGl0KCI6Iik7ZT1oWzBdO2c9W107aWYoaFsxXSlmb3IoZz1oWzFdLnNwbGl0KCIsIiksaD0wO2g8Zy5sZW5ndGg7aCsrKWdbaF09Y1twYXJzZUludChnW2hdLDM2KV07Yy5wdXNoKGUpO1FlKHRoaXMsZSxnKX10aGlzLk09Y31iJiZiLmxlbmd0aD8oeWEodGhpcy5sLGIpLHRoaXMuTj1iW2IubGVuZ3RoLTFdKTp0aGlzLkkuZ3x8dGhpcy5JLmNhbGxiYWNrKCk7Ck9iamVjdC5mcmVlemUodGhpcy5NKTtTZSh0aGlzKX19Owp2YXIgUmU9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLnN1YnN0cmluZygyKTtmb3IoYj0wO2I8NjQ7YisrKWtiWyJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OS1fIi5jaGFyQ29kZUF0KGIpXT1iO3ZhciBkPXtEZzpjLGZjOjB9O21iKGQpO3ZhciBlPW1iKGQpLGY9bWIoZCkrMTtiPUFycmF5KGUpO3ZhciBnPUFycmF5KGUpLGg9QXJyYXkoZSk7Zj1BcnJheShmKTt2YXIgaz0wLG09MCxuPWQuZmM7ZC5mYz1kLkRnLmluZGV4T2YoInwiLGQuZmMpKzE7Zm9yKHZhciBwPTA7cDxlO3ArKyl7dmFyIHE9bWIoZCkscj1xJjIsdD1xJjE7cT4+Pj0yO3Q/KGsrPXE+Pj4xXi0ocSYxKSxxPSJzeSIray50b1N0cmluZygzNikpOih0PW4sbis9cSxxPWMuc3Vic3RyaW5nKHQsbikpO2JbcF09cTtyJiYoZlttKytdPXEpfWZbbV09IiI7ZC5mYysrO209ZSYtMjtjPWUmMTtmb3Ioaz0wO2s8bTtrKz0yKW49bGIoZCksaFtrXT1uJjcsaFtrKzFdPQpuPj4+MyY3O2MmJihjPWxiKGQpLGhbbV09YyY3KTtkLmZjKys7Zm9yKG09MDttPGU7bSsrKWhbbV09PT03JiYoaFttXT1tYihkKSk7ZC5mYysrO2ZvcihjPW09MDtjPGU7YysrKXtrPWhbY107bj1rPT09MD9SZDpBcnJheShrKTtnW2NdPW47cD1tO2ZvcihyPTA7cjxrO3IrKylwLT1tYihkKSxuW3JdPWZbcF07ZlttXT09PWJbY10mJm0rK31mb3IoZD0wO2Q8Yi5sZW5ndGg7ZCsrKVFlKGEsYltkXSxnW2RdKTthLk09Yn07T2UucHJvdG90eXBlLlVoPWZ1bmN0aW9uKGEsYil7aWYodGhpcy5BW2FdKXtkZWxldGUgdGhpcy5BW2FdW2JdO2Zvcih2YXIgYyBpbiB0aGlzLkFbYV0pcmV0dXJuO2RlbGV0ZSB0aGlzLkFbYV19fTtPZS5wcm90b3R5cGUuWGY9ZnVuY3Rpb24oYSl7T2UuUC5YZi5jYWxsKHRoaXMsYSk7U2UodGhpcyl9O09lLnByb3RvdHlwZS5pc0FjdGl2ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmwubGVuZ3RoPjB9OwpPZS5wcm90b3R5cGUudGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5CLmxlbmd0aD4wfTsKdmFyIFVlPWZ1bmN0aW9uKGEpe3ZhciBiPWEuVCxjPWEuaXNBY3RpdmUoKTtjIT1iJiYoVGUoYSxjPyJhY3RpdmUiOiJpZGxlIiksYS5UPWMpO2I9YS50aCgpO2IhPWEuWiYmKFRlKGEsYj8idXNlckFjdGl2ZSI6InVzZXJJZGxlIiksYS5aPWIpfSxRZT1mdW5jdGlvbihhLGIsYyl7YS5nW2JdPyhhPWEuZ1tiXS5oLGEhPWMmJmEuc3BsaWNlLmFwcGx5KGEsWzAsYS5sZW5ndGhdLmNvbmNhdChfLkpiKGMpKSkpOmEuZ1tiXT1uZXcgVWQoYyxiKX0sWGU9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVtdO0JhKGIsZCk7Yj1bXTtmb3IodmFyIGU9e30sZj0wO2Y8ZC5sZW5ndGg7ZisrKXt2YXIgZz1kW2ZdLGg9YS5nW2ddO2lmKCFoKXRocm93IEVycm9yKCJEYCIrZyk7dmFyIGs9bmV3IHhlO2VbZ109aztoLmc/ay5jYWxsYmFjayhhLlIpOihWZShhLGcsaCwhIWMsayksV2UoYSxnKXx8Yi5wdXNoKGcpKX1iLmxlbmd0aD4wJiYoYS5sLmxlbmd0aD09PTA/YS5EYShiKTooYS5oLnB1c2goYiksVWUoYSkpKTsKcmV0dXJuIGV9LFZlPWZ1bmN0aW9uKGEsYixjLGQsZSl7Yy5vLnB1c2gobmV3IFRkKGUuY2FsbGJhY2ssZSkpO1ZkKGMsZnVuY3Rpb24oZil7ZS5BKG5ldyBQZShiLGYpKX0pO1dlKGEsYik/ZCYmKF8udWEoYS5CLGIpfHxhLkIucHVzaChiKSxVZShhKSk6ZCYmKF8udWEoYS5CLGIpfHxhLkIucHVzaChiKSl9OwpPZS5wcm90b3R5cGUuRGE9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXM7Ynx8KHRoaXMuRz0wKTt2YXIgZT1ZZSh0aGlzLGEpO3RoaXMubD1lO3RoaXMubz10aGlzLk8/YTpfLnhhKGUpO1VlKHRoaXMpO2lmKGUubGVuZ3RoIT09MCl7dGhpcy5KLnB1c2guYXBwbHkodGhpcy5KLGUpO2lmKE9iamVjdC5rZXlzKHRoaXMuQSkubGVuZ3RoPjAmJiF0aGlzLkMuSil0aHJvdyBFcnJvcigiRSIpO2E9KDAsXy5DKSh0aGlzLkMuSSx0aGlzLkMsXy54YShlKSx0aGlzLmcse3FqOnRoaXMuQSx0ajohIWMsSWY6ZnVuY3Rpb24oZixnKXt2YXIgaD1kLm87Zj1mIT1udWxsP2Y6dm9pZCAwO2QuRysrO3ZhciBrPV8ueGEoZSk7ZC5vPWg7ZS5mb3JFYWNoKF8uJGIoXy53YSxkLkopLGQpO2Y9PTQwMT8oWmUoZCxuZXcgVWIuU2EoVWIuU2EuZy50ZyxmKSksZC5oLmxlbmd0aD0wKTpmPT00MTA/KCRlKGQsbmV3IFViLlNhKFViLlNhLmcucmcsZikpLGFmKGQpKTpkLkc+PTM/KCRlKGQsbmV3IFViLlNhKFViLlNhLmcuaGcsCmYsayxnKSksYWYoZCkpOmQuRGEoZC5vLCEwLGY9PTgwMDF8fCExKX0sV2s6KDAsXy5DKSh0aGlzLmphLHRoaXMpfSk7KGI9TWF0aC5wb3codGhpcy5HLDIpKjVFMyk/Xy51LnNldFRpbWVvdXQoYSxiKTphKCl9fTsKdmFyIFllPWZ1bmN0aW9uKGEsYil7Yj1iLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gYS5nW2VdLmc/KF8udS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIEVycm9yKCJGYCIrZSl9LDApLCExKTohMH0pO2Zvcih2YXIgYz1bXSxkPTA7ZDxiLmxlbmd0aDtkKyspYz1jLmNvbmNhdChiZihhLGJbZF0pKTtCYShjKTtyZXR1cm4hYS5PJiZjLmxlbmd0aD4xPyhiPWMuc2hpZnQoKSxhLmg9Yy5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuW2VdfSkuY29uY2F0KGEuaCksW2JdKTpjfSxiZj1mdW5jdGlvbihhLGIpe3ZhciBjPUdhKGEuSiksZD1bXTtjW2JdfHxkLnB1c2goYik7Yj1bYl07Zm9yKHZhciBlPTA7ZTxiLmxlbmd0aDtlKyspZm9yKHZhciBmPWEuZ1tiW2VdXS5oLGc9Zi5sZW5ndGgtMTtnPj0wO2ctLSl7dmFyIGg9ZltnXTthLmdbaF0uZ3x8Y1toXXx8KGQucHVzaChoKSxiLnB1c2goaCkpfWQucmV2ZXJzZSgpO0JhKGQpO3JldHVybiBkfSxTZT1mdW5jdGlvbihhKXtpZihhLmo9PQphLkYpe2Euaj1udWxsO3ZhciBiPWEuRi5vbkxvYWQoKDAsXy5DKShhLlRnLGEpKTtiJiZiLmxlbmd0aCYmWmUoYSxuZXcgVWIuU2EoVWIuU2EuZy5JZSx2b2lkIDAsdm9pZCAwLHZvaWQgMCxiWzBdKSk7VWUoYSl9fSxtYT1mdW5jdGlvbihhKXtpZihhLmope3ZhciBiPWEuai5ZYSgpLGM9W107aWYoYS5BW2JdKXtmb3IodmFyIGQ9Xy56KE9iamVjdC5rZXlzKGEuQVtiXSkpLGU9ZC5uZXh0KCk7IWUuZG9uZTtlPWQubmV4dCgpKXtlPWUudmFsdWU7dmFyIGY9YS5nW2VdO2YmJiFmLmcmJihhLlVoKGIsZSksYy5wdXNoKGUpKX1YZShhLGMpfWEuZWIoKXx8KChjPWEuZ1tiXS5vbkxvYWQoKDAsXy5DKShhLlRnLGEpKSkmJmMubGVuZ3RoJiZaZShhLG5ldyBVYi5TYShVYi5TYS5nLkllLHZvaWQgMCx2b2lkIDAsdm9pZCAwLGNbMF0pKSxfLndhKGEuQixiKSxfLndhKGEubCxiKSxhLmwubGVuZ3RoPT09MCYmYWYoYSksYS5OJiZiPT1hLk4mJihhLkkuZ3x8YS5JLmNhbGxiYWNrKCkpLFVlKGEpLAphLmo9bnVsbCl9fSxXZT1mdW5jdGlvbihhLGIpe2lmKF8udWEoYS5sLGIpKXJldHVybiEwO2Zvcih2YXIgYz0wO2M8YS5oLmxlbmd0aDtjKyspaWYoXy51YShhLmhbY10sYikpcmV0dXJuITA7cmV0dXJuITF9O09lLnByb3RvdHlwZS5sb2FkPWZ1bmN0aW9uKGEsYil7cmV0dXJuIFhlKHRoaXMsW2FdLGIpW2FdfTt2YXIga2E9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5jYTtiLmomJmIuai5ZYSgpPT09InN5bnRoZXRpY19tb2R1bGVfb3ZlcmhlYWQiJiYobWEoYiksZGVsZXRlIGIuZy5zeW50aGV0aWNfbW9kdWxlX292ZXJoZWFkKTtiLmdbYV0mJmNmKGIsYi5nW2FdLmh8fFtdLGZ1bmN0aW9uKGMpe2MuZz1uZXcgU2Q7Xy53YShiLmwsYy5ZYSgpKX0sZnVuY3Rpb24oYyl7cmV0dXJuIWMuZ30pO2Iuaj1iLmdbYV19OwpPZS5wcm90b3R5cGUuU2g9ZnVuY3Rpb24oYSl7dGhpcy5qfHwodGhpcy5nLnN5bnRoZXRpY19tb2R1bGVfb3ZlcmhlYWQ9bmV3IFVkKFtdLCJzeW50aGV0aWNfbW9kdWxlX292ZXJoZWFkIiksdGhpcy5qPXRoaXMuZy5zeW50aGV0aWNfbW9kdWxlX292ZXJoZWFkKTt0aGlzLmouai5wdXNoKG5ldyBUZChhKSl9O09lLnByb3RvdHlwZS5qYT1mdW5jdGlvbigpeyRlKHRoaXMsbmV3IFViLlNhKFViLlNhLmcuVElNRU9VVCkpO2FmKHRoaXMpfTsKdmFyICRlPWZ1bmN0aW9uKGEsYil7YS5vLmxlbmd0aD4xP2EuaD1hLm8ubWFwKGZ1bmN0aW9uKGMpe3JldHVybltjXX0pLmNvbmNhdChhLmgpOlplKGEsYil9LFplPWZ1bmN0aW9uKGEsYil7dmFyIGM9YS5vO2EubC5sZW5ndGg9MDtmb3IodmFyIGQ9W10sZT0wO2U8YS5oLmxlbmd0aDtlKyspe3ZhciBmPWEuaFtlXS5maWx0ZXIoZnVuY3Rpb24oayl7dmFyIG09YmYodGhpcyxrKTtyZXR1cm4gXy5rYyhjLGZ1bmN0aW9uKG4pe3JldHVybiBfLnVhKG0sbil9KX0sYSk7eWEoZCxmKX1mb3IoZT0wO2U8Yy5sZW5ndGg7ZSsrKV8udmEoZCxjW2VdKTtmb3IoZT0wO2U8ZC5sZW5ndGg7ZSsrKXtmb3IoZj0wO2Y8YS5oLmxlbmd0aDtmKyspXy53YShhLmhbZl0sZFtlXSk7Xy53YShhLkIsZFtlXSl9aWYoZT1hLnBhLmVycm9yKWZvcihmPTA7ZjxlLmxlbmd0aDtmKyspZm9yKHZhciBnPWVbZl0saD0wO2g8ZC5sZW5ndGg7aCsrKWcoImVycm9yIixkW2hdLGIpO2ZvcihkPTA7ZDxjLmxlbmd0aDtkKyspYS5nW2NbZF1dJiYKYS5nW2NbZF1dLklmKGIpO2Euby5sZW5ndGg9MDtVZShhKX0sYWY9ZnVuY3Rpb24oYSl7Zm9yKDthLmgubGVuZ3RoOyl7dmFyIGI9YS5oLnNoaWZ0KCkuZmlsdGVyKGZ1bmN0aW9uKGMpe3JldHVybiF0aGlzLmdbY10uZ30sYSk7aWYoYi5sZW5ndGg+MCl7YS5EYShiKTtyZXR1cm59fVVlKGEpfSxUZT1mdW5jdGlvbihhLGIpe2E9YS5wYVtiXTtmb3IodmFyIGM9MDthJiZjPGEubGVuZ3RoO2MrKylhW2NdKGIpfSxjZj1mdW5jdGlvbihhLGIsYyxkLGUpe2Q9ZD09PXZvaWQgMD9mdW5jdGlvbigpe3JldHVybiEwfTpkO2U9ZT09PXZvaWQgMD97fTplO2I9Xy56KGIpO2Zvcih2YXIgZj1iLm5leHQoKTshZi5kb25lO2Y9Yi5uZXh0KCkpe2Y9Zi52YWx1ZTt2YXIgZz1hLmdbZl07IWVbZl0mJmQoZykmJihlW2ZdPSEwLGNmKGEsZy5ofHxbXSxjLGQsZSksYyhnKSl9fTsKT2UucHJvdG90eXBlLmRpc3Bvc2U9ZnVuY3Rpb24oKXtzYShfLkRhKHRoaXMuZyksdGhpcy5GKTt0aGlzLmc9e307dGhpcy5sPVtdO3RoaXMubz1bXTt0aGlzLkI9W107dGhpcy5oPVtdO3RoaXMucGE9e307dGhpcy5WPSEwfTtPZS5wcm90b3R5cGUuZWI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5WfTtfLmhhPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBPZX07dmFyIGRmPVtdLGVmPWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoZCl7ZCYmamMoZCxmdW5jdGlvbihlLGYpe2VbZi5pZF09ITA7cmV0dXJuIGV9LGMuY2wpfXZhciBjPXtjbDp7fSxpbmRleDpkZi5sZW5ndGgsRW86YX07YihhLkJlKTtiKGEuVG8pO2RmLnB1c2goYyk7YS5CZSYmXy5oYyhhLkJlLGZ1bmN0aW9uKGQpe3ZhciBlPWQuaWQ7ZSBpbnN0YW5jZW9mIF8uZGMmJmQubW9kdWxlJiYoZS5nPWQubW9kdWxlKX0pfTtlZih7QmU6W3tpZDpfLmVjLHRiOmpiLG11bHRpcGxlOiEwfV19KTt2YXIga2Y7Xy5mZj1mdW5jdGlvbihhLGIsYyxkLGUsZixnKXt2YXIgaD0iIjthJiYoaCs9YSsiOiIpO2MmJihoKz0iLy8iLGImJihoKz1iKyJAIiksaCs9YyxkJiYoaCs9IjoiK2QpKTtlJiYoaCs9ZSk7ZiYmKGgrPSI/IitmKTtnJiYoaCs9IiMiK2cpO3JldHVybiBofTtfLmdmPVJlZ0V4cCgiXig/OihbXjovPyMuXSspOik/KD86Ly8oPzooW15cXFxcLz8jXSopQCk/KFteXFxcXC8/I10qPykoPzo6KFswLTldKykpPyg/PVtcXFxcLz8jXXwkKSk/KFtePyNdKyk/KD86XFw/KFteI10qKSk/KD86IyhbXFxzXFxTXSopKT8kIik7Xy5oZj1mdW5jdGlvbihhKXtyZXR1cm4gYT9kZWNvZGVVUkkoYSk6YX07Cl8uamY9ZnVuY3Rpb24oYSxiKXtpZihhKXthPWEuc3BsaXQoIiYiKTtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKyl7dmFyIGQ9YVtjXS5pbmRleE9mKCI9IiksZT1udWxsO2lmKGQ+PTApe3ZhciBmPWFbY10uc3Vic3RyaW5nKDAsZCk7ZT1hW2NdLnN1YnN0cmluZyhkKzEpfWVsc2UgZj1hW2NdO2IoZixlP18udWMoZSk6IiIpfX19O2tmPWZ1bmN0aW9uKGEsYixjKXtpZihBcnJheS5pc0FycmF5KGIpKWZvcih2YXIgZD0wO2Q8Yi5sZW5ndGg7ZCsrKWtmKGEsU3RyaW5nKGJbZF0pLGMpO2Vsc2UgYiE9bnVsbCYmYy5wdXNoKGErKGI9PT0iIj8iIjoiPSIrXy50YyhiKSkpfTt2YXIgbGY9e307dmFyIG1mPW5ldyBfLmRjKCJNcEp3WmMiLCJNcEp3WmMiKTtfLm5mPW5ldyBfLmRjKCJVVUpxVmUiLCJVVUpxVmUiKTt2YXIgb2Y9bmV3IHJkLHBmPWZ1bmN0aW9uKGEsYixjKXtfLnNkLmNhbGwodGhpcyxhLGIpO3RoaXMubm9kZT1iO3RoaXMua2luZD1jfTtfLnkocGYsXy5zZCk7Xy5xZj1SZWdFeHAoIl4oYXJ8Y2tifGR2fGhlfGl3fGZhfG5xb3xwc3xzZHx1Z3x1cnx5aXwuKlstX10oQWRsbXxBcmFifEhlYnJ8Tmtvb3xSb2hnfFRoYWEpKSg/IS4qWy1fXShMYXRufEN5cmwpKCR8LXxfKSkoJHwtfF8pIiwiaSIpO18ucmY9ZnVuY3Rpb24oYSxiKXtifHxfLmZiKCk7dGhpcy5qPWF8fG51bGx9O18ucmYucHJvdG90eXBlLmlhPWZ1bmN0aW9uKGEsYil7YT1hKGJ8fHt9LHRoaXMuaj90aGlzLmouZygpOnt9KTt0aGlzLmgobnVsbCwiZnVuY3Rpb24iPT10eXBlb2YgXy5zZiYmYSBpbnN0YW5jZW9mIF8uc2Y/YS5UYjpudWxsKTtyZXR1cm4gU3RyaW5nKGEpfTtfLnJmLnByb3RvdHlwZS5oPWZ1bmN0aW9uKCl7fTt2YXIgdGY9ZnVuY3Rpb24oYSl7dGhpcy5oPWE7dGhpcy5qPXRoaXMuaC5nKF8ubmYpfTt0Zi5wcm90b3R5cGUuZz1mdW5jdGlvbigpe3RoaXMuaC5lYigpfHwodGhpcy5qPXRoaXMuaC5nKF8ubmYpKTtyZXR1cm4gdGhpcy5qP3RoaXMuai5qKCk6e319O3ZhciB1Zj1mdW5jdGlvbihhKXt2YXIgYj1uZXcgdGYoYSk7Xy5yZi5jYWxsKHRoaXMsYixhLmdldChfLmVjKS5oKTt0aGlzLmw9bmV3IF8uRzt0aGlzLm89Yn07Xy55KHVmLF8ucmYpO3VmLnByb3RvdHlwZS5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuby5nKCl9O3VmLnByb3RvdHlwZS5oPWZ1bmN0aW9uKGEsYil7Xy5yZi5wcm90b3R5cGUuaC5jYWxsKHRoaXMsYSxiKTt0aGlzLmwuZGlzcGF0Y2hFdmVudChuZXcgcGYob2YsYSxiKSl9O18ucGEobWYsdWYpO2VmKHtCZTpbe2lkOm1mLHRiOnVmLG11bHRpcGxlOiEwfV19KTt2YXIgdmY9ZnVuY3Rpb24oYSxiKXt0aGlzLmRlZmF1bHRWYWx1ZT1hO3RoaXMudHlwZT1iO3RoaXMudmFsdWU9YX07dmYucHJvdG90eXBlLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlfTt2Zi5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGEpe3RoaXMudmFsdWU9YX07dmFyIHdmPWZ1bmN0aW9uKGEpe3ZmLmNhbGwodGhpcyxhLCJiIil9O18ueSh3Zix2Zik7d2YucHJvdG90eXBlLmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlfTt2YXIgeGY9ZnVuY3Rpb24oKXt0aGlzLmc9e307dGhpcy5qPSIiO3RoaXMuaD17fX07eGYucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5qK3lmKHRoaXMpO3ZhciBiPXRoaXMuaDt2YXIgYz1bXSxkO2ZvcihkIGluIGIpa2YoZCxiW2RdLGMpO2I9Yy5qb2luKCImIik7Yz0iIjtiIT0iIiYmKGM9Ij8iK2IpO3JldHVybiBhK2N9Owp2YXIgQmY9ZnVuY3Rpb24oYSl7YT1BZihhLCJtZCIpO3JldHVybiEhYSYmYSE9PSIwIn0seWY9ZnVuY3Rpb24oYSl7dmFyIGI9W10sYz0oMCxfLkMpKGZ1bmN0aW9uKGQpe3RoaXMuZ1tkXSE9PXZvaWQgMCYmYi5wdXNoKGQrIj0iK3RoaXMuZ1tkXSl9LGEpO0JmKGEpPyhjKCJtZCIpLGMoImsiKSxjKCJjayIpLGMoImFtIiksYygicnMiKSxjKCJnc3Ntb2R1bGVzZXRwcm90byIpLGMoInNsayIpLGMoImR0aSIpKTooYygic2RjaCIpLGMoImsiKSxjKCJjayIpLGMoImFtIiksYygicnQiKSwiZCJpbiBhLmd8fENmKGEsImQiLCIwIiksYygiZCIpLGMoImV4bSIpLGMoImV4Y20iKSwoYS5nLmV4Y218fGEuZy5leG0pJiZiLnB1c2goImVkPTEiKSxjKCJpbSIpLGMoImRnIiksYygic20iKSxBZihhLCJiciIpIT0iMSImJkFmKGEsImJyIikhPSIwInx8YygiYnIiKSxjKCJici1kIiksQWYoYSwicmIiKT09IjEiJiZjKCJyYiIpLEFmKGEsInpzIikhPT0iMCImJmMoInpzIiksRGYoYSkhPT0iIiYmCmMoInd0IiksYygiZ3NzbW9kdWxlc2V0cHJvdG8iKSxjKCJ1amciKSxjKCJzcCIpLGMoInJzIiksYygiY2IiKSxjKCJlZSIpLGMoInNsayIpLGMoImR0aSIpLGMoIm0iKSk7cmV0dXJuIGIuam9pbigiLyIpfSxBZj1mdW5jdGlvbihhLGIpe3JldHVybiBhLmdbYl0/YS5nW2JdOm51bGx9LENmPWZ1bmN0aW9uKGEsYixjKXtjP2EuZ1tiXT1jOmRlbGV0ZSBhLmdbYl19LERmPWZ1bmN0aW9uKGEpe3N3aXRjaChBZihhLCJ3dCIpKXtjYXNlICIwIjpyZXR1cm4iMCI7Y2FzZSAiMSI6cmV0dXJuIjEiO2Nhc2UgIjIiOnJldHVybiIyIjtkZWZhdWx0OnJldHVybiIifX0sR2Y9ZnVuY3Rpb24oYSl7dmFyIGI9Yj09PXZvaWQgMD8hMDpiO3ZhciBjPUVmKGEpLGQ9bmV3IHhmLGU9Yy5tYXRjaChfLmdmKVs1XTtfLm5jKEZmLGZ1bmN0aW9uKGcpe3ZhciBoPWUubWF0Y2goIi8iK2crIj0oW14vXSspIik7aCYmQ2YoZCxnLGhbMV0pfSk7dmFyIGY9IiI7Zj1hLmluZGV4T2YoIl8vc3MvIikhPS0xPyJfL3NzLyI6CiJfL2pzLyI7ZC5qPWEuc3Vic3RyKDAsYS5pbmRleE9mKGYpK2YubGVuZ3RoKTtpZighYilyZXR1cm4gZDsoYT1jLm1hdGNoKF8uZ2YpWzZdfHxudWxsKSYmXy5qZihhLGZ1bmN0aW9uKGcsaCl7ZC5oW2ddPWh9KTtyZXR1cm4gZH0sRWY9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuc3RhcnRzV2l0aCgiaHR0cHM6Ly91YmVycHJveHktcGVuLXJlZGlyZWN0LmNvcnAuZ29vZ2xlLmNvbS91YmVycHJveHkvcGVuP3VybD0iKT9hLnN1YnN0cig2NSk6YX0sRmY9e0NtOiJrIixObDoiY2siLHFtOiJtIixZbDoiZXhtIixXbDoiZXhjbSIsRWw6ImFtIixvbToibW0iLEJtOiJydCIsam06ImQiLFhsOiJlZCIsTW06InN2IixPbDoiZGVvYiIsTGw6ImNiIixKbToicnMiLERtOiJzZGNoIixsbToiaW0iLFBsOiJkZyIsVWw6ImJyIixUbDoiYnItZCIsVmw6InJiIixmbjoienMiLGRuOiJ3dCIsWmw6ImVlIixMbToic20iLHBtOiJtZCIsaG06Imdzc21vZHVsZXNldHByb3RvIixhbjoidWpnIixabToic3AiLApJbToic2xrIixRbDoiZHRpIn07Xy5IZj1mdW5jdGlvbihhKXtfLncuY2FsbCh0aGlzKTt0aGlzLmg9YTt0aGlzLmc9e319O18uRShfLkhmLF8udyk7dmFyIElmPVtdO18uSGYucHJvdG90eXBlLkw9ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIEpmKHRoaXMsYSxiLGMsZCl9O3ZhciBKZj1mdW5jdGlvbihhLGIsYyxkLGUsZil7QXJyYXkuaXNBcnJheShjKXx8KGMmJihJZlswXT1jLnRvU3RyaW5nKCkpLGM9SWYpO2Zvcih2YXIgZz0wO2c8Yy5sZW5ndGg7ZysrKXt2YXIgaD1fLkYoYixjW2ddLGR8fGEuaGFuZGxlRXZlbnQsZXx8ITEsZnx8YS5ofHxhKTtpZighaClicmVhazthLmdbaC5rZXldPWh9cmV0dXJuIGF9O18uSGYucHJvdG90eXBlLktiPWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBLZih0aGlzLGEsYixjLGQpfTsKdmFyIEtmPWZ1bmN0aW9uKGEsYixjLGQsZSxmKXtpZihBcnJheS5pc0FycmF5KGMpKWZvcih2YXIgZz0wO2c8Yy5sZW5ndGg7ZysrKUtmKGEsYixjW2ddLGQsZSxmKTtlbHNle2I9Xy5HZChiLGMsZHx8YS5oYW5kbGVFdmVudCxlLGZ8fGEuaHx8YSk7aWYoIWIpcmV0dXJuIGE7YS5nW2Iua2V5XT1ifXJldHVybiBhfTtfLkhmLnByb3RvdHlwZS5mYj1mdW5jdGlvbihhLGIsYyxkLGUpe2lmKEFycmF5LmlzQXJyYXkoYikpZm9yKHZhciBmPTA7ZjxiLmxlbmd0aDtmKyspdGhpcy5mYihhLGJbZl0sYyxkLGUpO2Vsc2UgYz1jfHx0aGlzLmhhbmRsZUV2ZW50LGQ9Xy56YShkKT8hIWQuY2FwdHVyZTohIWQsZT1lfHx0aGlzLmh8fHRoaXMsYz1IZChjKSxkPSEhZCxiPV8ud2QoYSk/YS5aYyhiLGMsZCxlKTphPyhhPV8uSmQoYSkpP2EuWmMoYixjLGQsZSk6bnVsbDpudWxsLGImJihfLk9kKGIpLGRlbGV0ZSB0aGlzLmdbYi5rZXldKTtyZXR1cm4gdGhpc307Cl8uTGY9ZnVuY3Rpb24oYSl7Xy5uYyhhLmcsZnVuY3Rpb24oYixjKXt0aGlzLmcuaGFzT3duUHJvcGVydHkoYykmJl8uT2QoYil9LGEpO2EuZz17fX07Xy5IZi5wcm90b3R5cGUuSz1mdW5jdGlvbigpe18uSGYuUC5LLmNhbGwodGhpcyk7Xy5MZih0aGlzKX07Xy5IZi5wcm90b3R5cGUuaGFuZGxlRXZlbnQ9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigiTCIpO307dmFyIE1mLE5mPWZ1bmN0aW9uKCl7fTtfLkUoTmYsdGIpO05mLnByb3RvdHlwZS5nPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBYTUxIdHRwUmVxdWVzdH07TWY9bmV3IE5mO18uRSh1Yix0Yik7dWIucHJvdG90eXBlLmc9ZnVuY3Rpb24oKXt2YXIgYT1uZXcgWE1MSHR0cFJlcXVlc3Q7aWYoIndpdGhDcmVkZW50aWFscyJpbiBhKXJldHVybiBhO2lmKHR5cGVvZiBYRG9tYWluUmVxdWVzdCE9InVuZGVmaW5lZCIpcmV0dXJuIG5ldyBPZjt0aHJvdyBFcnJvcigiTSIpO307dmFyIE9mPWZ1bmN0aW9uKCl7dGhpcy5nPW5ldyBYRG9tYWluUmVxdWVzdDt0aGlzLnJlYWR5U3RhdGU9MDt0aGlzLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsO3RoaXMucmVzcG9uc2VUeXBlPXRoaXMucmVzcG9uc2VUZXh0PSIiO3RoaXMuc3RhdHVzPS0xO3RoaXMuc3RhdHVzVGV4dD0iIjt0aGlzLmcub25sb2FkPSgwLF8uQykodGhpcy5waSx0aGlzKTt0aGlzLmcub25lcnJvcj0oMCxfLkMpKHRoaXMuamcsdGhpcyk7dGhpcy5nLm9ucHJvZ3Jlc3M9KDAsXy5DKSh0aGlzLmZrLHRoaXMpO3RoaXMuZy5vbnRpbWVvdXQ9KDAsXy5DKSh0aGlzLmprLHRoaXMpfTtfLmw9T2YucHJvdG90eXBlOwpfLmwub3Blbj1mdW5jdGlvbihhLGIsYyl7aWYoYyE9bnVsbCYmIWMpdGhyb3cgRXJyb3IoIk4iKTt0aGlzLmcub3BlbihhLGIpfTtfLmwuc2VuZD1mdW5jdGlvbihhKXtpZihhKWlmKHR5cGVvZiBhPT0ic3RyaW5nIil0aGlzLmcuc2VuZChhKTtlbHNlIHRocm93IEVycm9yKCJPIik7ZWxzZSB0aGlzLmcuc2VuZCgpfTtfLmwuYWJvcnQ9ZnVuY3Rpb24oKXt0aGlzLmcuYWJvcnQoKX07Xy5sLnNldFJlcXVlc3RIZWFkZXI9ZnVuY3Rpb24oKXt9O18ubC5nZXRSZXNwb25zZUhlYWRlcj1mdW5jdGlvbihhKXtyZXR1cm4gYS50b0xvd2VyQ2FzZSgpPT0iY29udGVudC10eXBlIj90aGlzLmcuY29udGVudFR5cGU6IiJ9O18ubC5waT1mdW5jdGlvbigpe3RoaXMuc3RhdHVzPTIwMDt0aGlzLnJlc3BvbnNlVGV4dD10aGlzLmcucmVzcG9uc2VUZXh0O1BmKHRoaXMsNCl9O18ubC5qZz1mdW5jdGlvbigpe3RoaXMuc3RhdHVzPTUwMDt0aGlzLnJlc3BvbnNlVGV4dD0iIjtQZih0aGlzLDQpfTsKXy5sLmprPWZ1bmN0aW9uKCl7dGhpcy5qZygpfTtfLmwuZms9ZnVuY3Rpb24oKXt0aGlzLnN0YXR1cz0yMDA7UGYodGhpcywxKX07dmFyIFBmPWZ1bmN0aW9uKGEsYil7YS5yZWFkeVN0YXRlPWI7aWYoYS5vbnJlYWR5c3RhdGVjaGFuZ2UpYS5vbnJlYWR5c3RhdGVjaGFuZ2UoKX07T2YucHJvdG90eXBlLmdldEFsbFJlc3BvbnNlSGVhZGVycz1mdW5jdGlvbigpe3JldHVybiJjb250ZW50LXR5cGU6ICIrdGhpcy5nLmNvbnRlbnRUeXBlfTt2YXIgUmYsU2Y7Xy5RZj1mdW5jdGlvbihhKXtfLkcuY2FsbCh0aGlzKTt0aGlzLmhlYWRlcnM9bmV3IE1hcDt0aGlzLk89YXx8bnVsbDt0aGlzLmg9ITE7dGhpcy5nPW51bGw7dGhpcy5BPSIiO3RoaXMubz0wO3RoaXMuaj10aGlzLkk9dGhpcy5CPXRoaXMuRz0hMTt0aGlzLkM9MDt0aGlzLmw9bnVsbDt0aGlzLk09IiI7dGhpcy5GPSExfTtfLkUoXy5RZixfLkcpO1JmPS9eaHR0cHM/JC9pO1NmPVsiUE9TVCIsIlBVVCJdO18uVGY9W107Xy5RZi5wcm90b3R5cGUuTj1mdW5jdGlvbigpe3RoaXMuZGlzcG9zZSgpO18ud2EoXy5UZix0aGlzKX07Cl8uUWYucHJvdG90eXBlLnNlbmQ9ZnVuY3Rpb24oYSxiLGMsZCl7aWYodGhpcy5nKXRocm93IEVycm9yKCJRYCIrdGhpcy5BKyJgIithKTtiPWI/Yi50b1VwcGVyQ2FzZSgpOiJHRVQiO3RoaXMuQT1hO3RoaXMubz0wO3RoaXMuRz0hMTt0aGlzLmg9ITA7dGhpcy5nPXRoaXMuTz90aGlzLk8uZygpOk1mLmcoKTt0aGlzLmcub25yZWFkeXN0YXRlY2hhbmdlPVlkKCgwLF8uQykodGhpcy5KLHRoaXMpKTt0cnl7dGhpcy5JPSEwLHRoaXMuZy5vcGVuKGIsU3RyaW5nKGEpLCEwKSx0aGlzLkk9ITF9Y2F0Y2goZyl7VWYodGhpcyk7cmV0dXJufWE9Y3x8IiI7Yz1uZXcgTWFwKHRoaXMuaGVhZGVycyk7aWYoZClpZihPYmplY3QuZ2V0UHJvdG90eXBlT2YoZCk9PT1PYmplY3QucHJvdG90eXBlKWZvcih2YXIgZSBpbiBkKWMuc2V0KGUsZFtlXSk7ZWxzZSBpZih0eXBlb2YgZC5rZXlzPT09ImZ1bmN0aW9uIiYmdHlwZW9mIGQuZ2V0PT09ImZ1bmN0aW9uIil7ZT1fLnooZC5rZXlzKCkpO2Zvcih2YXIgZj0KZS5uZXh0KCk7IWYuZG9uZTtmPWUubmV4dCgpKWY9Zi52YWx1ZSxjLnNldChmLGQuZ2V0KGYpKX1lbHNlIHRocm93IEVycm9yKCJSYCIrU3RyaW5nKGQpKTtkPUFycmF5LmZyb20oYy5rZXlzKCkpLmZpbmQoZnVuY3Rpb24oZyl7cmV0dXJuImNvbnRlbnQtdHlwZSI9PWcudG9Mb3dlckNhc2UoKX0pO2U9Xy51LkZvcm1EYXRhJiZhIGluc3RhbmNlb2YgXy51LkZvcm1EYXRhOyFfLnVhKFNmLGIpfHxkfHxlfHxjLnNldCgiQ29udGVudC1UeXBlIiwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9dXRmLTgiKTtiPV8ueihjKTtmb3IoZD1iLm5leHQoKTshZC5kb25lO2Q9Yi5uZXh0KCkpYz1fLnooZC52YWx1ZSksZD1jLm5leHQoKS52YWx1ZSxjPWMubmV4dCgpLnZhbHVlLHRoaXMuZy5zZXRSZXF1ZXN0SGVhZGVyKGQsYyk7dGhpcy5NJiYodGhpcy5nLnJlc3BvbnNlVHlwZT10aGlzLk0pOyJ3aXRoQ3JlZGVudGlhbHMiaW4gdGhpcy5nJiZ0aGlzLmcud2l0aENyZWRlbnRpYWxzIT09CnRoaXMuRiYmKHRoaXMuZy53aXRoQ3JlZGVudGlhbHM9dGhpcy5GKTt0cnl7dGhpcy5sJiYoY2xlYXJUaW1lb3V0KHRoaXMubCksdGhpcy5sPW51bGwpLHRoaXMuQz4wJiYodGhpcy5sPXNldFRpbWVvdXQodGhpcy5WLmJpbmQodGhpcyksdGhpcy5DKSksdGhpcy5CPSEwLHRoaXMuZy5zZW5kKGEpLHRoaXMuQj0hMX1jYXRjaChnKXtVZih0aGlzKX19O18uUWYucHJvdG90eXBlLlY9ZnVuY3Rpb24oKXt0eXBlb2YgUWIhPSJ1bmRlZmluZWQiJiZ0aGlzLmcmJih0aGlzLm89OCx0aGlzLmRpc3BhdGNoRXZlbnQoInRpbWVvdXQiKSx0aGlzLmFib3J0KDgpKX07dmFyIFVmPWZ1bmN0aW9uKGEpe2EuaD0hMTthLmcmJihhLmo9ITAsYS5nLmFib3J0KCksYS5qPSExKTthLm89NTtWZihhKTtXZihhKX0sVmY9ZnVuY3Rpb24oYSl7YS5HfHwoYS5HPSEwLGEuZGlzcGF0Y2hFdmVudCgiY29tcGxldGUiKSxhLmRpc3BhdGNoRXZlbnQoImVycm9yIikpfTsKXy5RZi5wcm90b3R5cGUuYWJvcnQ9ZnVuY3Rpb24oYSl7dGhpcy5nJiZ0aGlzLmgmJih0aGlzLmg9ITEsdGhpcy5qPSEwLHRoaXMuZy5hYm9ydCgpLHRoaXMuaj0hMSx0aGlzLm89YXx8Nyx0aGlzLmRpc3BhdGNoRXZlbnQoImNvbXBsZXRlIiksdGhpcy5kaXNwYXRjaEV2ZW50KCJhYm9ydCIpLFdmKHRoaXMpKX07Xy5RZi5wcm90b3R5cGUuSz1mdW5jdGlvbigpe3RoaXMuZyYmKHRoaXMuaCYmKHRoaXMuaD0hMSx0aGlzLmo9ITAsdGhpcy5nLmFib3J0KCksdGhpcy5qPSExKSxXZih0aGlzLCEwKSk7Xy5RZi5QLksuY2FsbCh0aGlzKX07Xy5RZi5wcm90b3R5cGUuSj1mdW5jdGlvbigpe3RoaXMuZWIoKXx8KHRoaXMuSXx8dGhpcy5CfHx0aGlzLmo/WGYodGhpcyk6dGhpcy5SKCkpfTtfLlFmLnByb3RvdHlwZS5SPWZ1bmN0aW9uKCl7WGYodGhpcyl9Owp2YXIgWGY9ZnVuY3Rpb24oYSl7aWYoYS5oJiZ0eXBlb2YgUWIhPSJ1bmRlZmluZWQiKWlmKGEuQiYmKGEuZz9hLmcucmVhZHlTdGF0ZTowKT09NClzZXRUaW1lb3V0KGEuSi5iaW5kKGEpLDApO2Vsc2UgaWYoYS5kaXNwYXRjaEV2ZW50KCJyZWFkeXN0YXRlY2hhbmdlIiksKGEuZz9hLmcucmVhZHlTdGF0ZTowKT09NCl7YS5oPSExO3RyeXtfLllmKGEpPyhhLmRpc3BhdGNoRXZlbnQoImNvbXBsZXRlIiksYS5kaXNwYXRjaEV2ZW50KCJzdWNjZXNzIikpOihhLm89NixWZihhKSl9ZmluYWxseXtXZihhKX19fSxXZj1mdW5jdGlvbihhLGIpe2lmKGEuZyl7YS5sJiYoY2xlYXJUaW1lb3V0KGEubCksYS5sPW51bGwpO3ZhciBjPWEuZzthLmc9bnVsbDtifHxhLmRpc3BhdGNoRXZlbnQoInJlYWR5Iik7dHJ5e2Mub25yZWFkeXN0YXRlY2hhbmdlPW51bGx9Y2F0Y2goZCl7fX19O18uUWYucHJvdG90eXBlLmlzQWN0aXZlPWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLmd9OwpfLllmPWZ1bmN0aW9uKGEpe3ZhciBiPV8uWmYoYSk7YTpzd2l0Y2goYil7Y2FzZSAyMDA6Y2FzZSAyMDE6Y2FzZSAyMDI6Y2FzZSAyMDQ6Y2FzZSAyMDY6Y2FzZSAzMDQ6Y2FzZSAxMjIzOnZhciBjPSEwO2JyZWFrIGE7ZGVmYXVsdDpjPSExfWlmKCFjKXtpZihiPWI9PT0wKWE9U3RyaW5nKGEuQSkubWF0Y2goXy5nZilbMV18fG51bGwsIWEmJl8udS5zZWxmJiZfLnUuc2VsZi5sb2NhdGlvbiYmKGE9Xy51LnNlbGYubG9jYXRpb24ucHJvdG9jb2wuc2xpY2UoMCwtMSkpLGI9IVJmLnRlc3QoYT9hLnRvTG93ZXJDYXNlKCk6IiIpO2M9Yn1yZXR1cm4gY307Xy5aZj1mdW5jdGlvbihhKXt0cnl7cmV0dXJuKGEuZz9hLmcucmVhZHlTdGF0ZTowKT4yP2EuZy5zdGF0dXM6LTF9Y2F0Y2goYil7cmV0dXJuLTF9fTtfLiRmPWZ1bmN0aW9uKGEpe3RyeXtyZXR1cm4gYS5nP2EuZy5yZXNwb25zZVRleHQ6IiJ9Y2F0Y2goYil7cmV0dXJuIiJ9fTt2YXIgYmc9ZnVuY3Rpb24oYSl7Xy53LmNhbGwodGhpcyk7dGhpcy5HPWE7dGhpcy5CPUdmKGEpO3RoaXMubD10aGlzLm89bnVsbDt0aGlzLko9ITA7dGhpcy5oPW5ldyBfLkhmKHRoaXMpO3RoaXMuTT1bXTt0aGlzLkE9bmV3IFNldDt0aGlzLmc9W107dGhpcy5PPW5ldyBhZzt0aGlzLmo9W107dGhpcy5DPSExO2E9KDAsXy5DKSh0aGlzLkYsdGhpcyk7bGYudmVyc2lvbj1hfTtfLnkoYmcsXy53KTt2YXIgY2c9ZnVuY3Rpb24oYSxiKXthLmcubGVuZ3RoJiZJZShiLGEuZ1thLmcubGVuZ3RoLTFdKTthLmcucHVzaChiKTtFZShiLGZ1bmN0aW9uKCl7Xy53YSh0aGlzLmcsYil9LGEpfTtiZy5wcm90b3R5cGUuST1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9Yz09PXZvaWQgMD97fTpjO3ZhciBlPWQucWo7Yz1kLnRqO3ZhciBmPWQuSWY7ZD1kLldrO2E9ZGcodGhpcyxhLGIsZSxjKTtlZyh0aGlzLGEsZixkLGMpfTsKdmFyIGRnPWZ1bmN0aW9uKGEsYixjLGQsZSl7ZD1kPT09dm9pZCAwP3t9OmQ7dmFyIGY9W107ZmcoYSxiLGMsZCxlPT09dm9pZCAwPyExOmUsZnVuY3Rpb24oZyl7Zi5wdXNoKGcuWWEoKSl9KTtyZXR1cm4gZn0sZmc9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyl7Zz1nPT09dm9pZCAwP3t9Omc7Yj1fLnooYik7Zm9yKHZhciBoPWIubmV4dCgpOyFoLmRvbmU7aD1iLm5leHQoKSl7dmFyIGs9aC52YWx1ZTtoPWNba107IWUmJihhLkEuaGFzKGspfHxoLmcpfHxnW2tdfHwoZ1trXT0hMCxrPWRba10/T2JqZWN0LmtleXMoZFtrXSk6W10sZmcoYSxoLmguY29uY2F0KGspLGMsZCxlLGYsZyksZihoKSl9fSxlZz1mdW5jdGlvbihhLGIsYyxkLGUpe2U9ZT09PXZvaWQgMD8hMTplO3ZhciBmPVtdLGc9bmV3IHhlO2I9W2JdO2Zvcih2YXIgaD1mdW5jdGlvbihwLHEpe2Zvcih2YXIgcj1bXSx0PTAsQT1NYXRoLmZsb29yKHAubGVuZ3RoL3EpKzEsRD0wO0Q8cTtEKyspe3ZhciBMPShEKzEpKkE7ci5wdXNoKHAuc2xpY2UodCwKTCkpO3Q9TH1yZXR1cm4gcn0saz1iLnNoaWZ0KCk7azspe3ZhciBtPWdnKGEsaywhIWUsITApO2lmKG0ubGVuZ3RoPD0yRTMpe2lmKGs9aGcoYSxrLGUpKWYucHVzaChrKSxJZShnLGsuZyl9ZWxzZSBiPWgoayxNYXRoLmNlaWwobS5sZW5ndGgvMkUzKSkuY29uY2F0KGIpO2s9Yi5zaGlmdCgpfXZhciBuPW5ldyB4ZTtjZyhhLG4pO0VlKG4sZnVuY3Rpb24oKXtyZXR1cm4gaWcoYSxmLGMsZCl9KTtGZShuLGZ1bmN0aW9uKCl7dmFyIHA9bmV3IGpnO3Auaj0hMDtwLmg9LTE7aWcodGhpcyxbcF0sYyxkKX0sYSk7RWUoZyxmdW5jdGlvbigpe3JldHVybiBuLmNhbGxiYWNrKCl9KTtnLmNhbGxiYWNrKCl9LGhnPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1nZyhhLGIsIShjPT09dm9pZCAwfHwhYykpO2EuTS5wdXNoKGQpO2I9Xy56KGIpO2ZvcihjPWIubmV4dCgpOyFjLmRvbmU7Yz1iLm5leHQoKSlhLkEuYWRkKGMudmFsdWUpO2lmKGEuQylhPV8uamQoZG9jdW1lbnQsIlNDUklQVCIpLF8uVGEoYSwKXy53YihkKSksYS50eXBlPSJ0ZXh0L2phdmFzY3JpcHQiLGEuYXN5bmM9ITEsZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTtlbHNle3ZhciBlPW5ldyBqZyxmPW5ldyBfLlFmKGEuai5sZW5ndGg+MD9uZXcgdWI6dm9pZCAwKTthLmguTChmLCJzdWNjZXNzIiwoMCxfLkMpKGUuQyxlLGYpKTthLmguTChmLCJlcnJvciIsKDAsXy5DKShlLkIsZSxmKSk7YS5oLkwoZiwidGltZW91dCIsKDAsXy5DKShlLkEsZSkpO0pmKGEuaCxmLCJyZWFkeSIsZi5kaXNwb3NlLCExLGYpO2YuQz0zRTQ7a2coYS5PLGZ1bmN0aW9uKCl7Zi5zZW5kKGQpO3JldHVybiBlLmd9KTtyZXR1cm4gZX1yZXR1cm4gbnVsbH0saWc9ZnVuY3Rpb24oYSxiLGMsZCl7Zm9yKHZhciBlPSExLGYsZz0hMSxoPTA7aDxiLmxlbmd0aDtoKyspe3ZhciBrPWJbaF07aWYoIWYmJmsuail7ZT0hMDtmPWsuaDticmVha31lbHNlIGsubCYmKGc9ITApfWg9Xy54YShhLmcpOyhlfHxnKSYmZiE9LTEmJihhLmcubGVuZ3RoPTApO2lmKGUpYyYmCmMoZik7ZWxzZSBpZihnKWQmJmQoKTtlbHNlIGZvcihhPTA7YTxiLmxlbmd0aDthKyspZD1iW2FdLGxnKGQubyxkLk9hKXx8YyYmYyg4MDAxKTsoZXx8ZykmJmYhPS0xJiZfLmhjKGgsZnVuY3Rpb24obSl7bS5jYW5jZWwoKX0pfTtiZy5wcm90b3R5cGUuSz1mdW5jdGlvbigpe3RoaXMuaC5kaXNwb3NlKCk7ZGVsZXRlIGxmLnZlcnNpb247Xy53LnByb3RvdHlwZS5LLmNhbGwodGhpcyl9O2JnLnByb3RvdHlwZS5GPWZ1bmN0aW9uKCl7cmV0dXJuIEFmKHRoaXMuQiwiayIpfTsKdmFyIGdnPWZ1bmN0aW9uKGEsYixjLGQpe2Q9ZD09PXZvaWQgMD8hMTpkO3ZhciBlPV8uaGYoYS5HLm1hdGNoKF8uZ2YpWzNdfHxudWxsKTtpZihhLmoubGVuZ3RoPjAmJiFfLnVhKGEuaixlKSYmZSE9bnVsbCYmd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lIT1lKXRocm93IEVycm9yKCJVYCIrZSk7dmFyIGY9YS5CO2U9bmV3IHhmO2UuZz1PYmplY3QuYXNzaWduKHt9LGYuZyk7ZS5qPWYuajtlLmg9T2JqZWN0LmFzc2lnbih7fSxmLmgpO2RlbGV0ZSBlLmcubTtkZWxldGUgZS5nLmV4bTtkZWxldGUgZS5nLmVkO0NmKGUsIm0iLGIuam9pbigiLCIpKTthLm8mJihDZihlLCJjayIsYS5vKSxhLmwmJkNmKGUsInJzIixhLmwpKTtDZihlLCJkIiwiMCIpO2MmJihhPV8udmMoKSxlLmgueng9YSk7YT1lLnRvU3RyaW5nKCk7ZCYmYS5sYXN0SW5kZXhPZigiLyIsMCk9PTAmJihkPWRvY3VtZW50LmxvY2F0aW9uLmhyZWYubWF0Y2goXy5nZiksYT1fLmZmKGRbMV0sZFsyXSxkWzNdLGRbNF0pK2EpOwpyZXR1cm4gYX0sbGc9ZnVuY3Rpb24oYSxiKXt2YXIgYz0iIjtpZihhLmxlbmd0aD4xJiZhLmNoYXJBdChhLmxlbmd0aC0xKT09PSJcbiIpe3ZhciBkPWEubGFzdEluZGV4T2YoIlxuIixhLmxlbmd0aC0yKTtkPj0wJiYoYz1hLnN1YnN0cmluZyhkKzEsYS5sZW5ndGgtMSkpfWQ9Yy5sZW5ndGgtMTE7aWYoZD49MCYmYy5pbmRleE9mKCJHb29nbGUgSW5jLiIsZCk9PWR8fGMubGFzdEluZGV4T2YoIi8vIyBzb3VyY2VNYXBwaW5nVVJMPSIsMCk9PTApdHJ5e2M9d2luZG93O2E9YSsiXHJcbi8vIyBzb3VyY2VVUkw9IitiO2E9Xy52YihhKTt2YXIgZT1fLlJhKGEpO3ZhciBmPV8uU2EoZSk7Yy5ldmFsKGYpPT09ZiYmYy5ldmFsKGYudG9TdHJpbmcoKSl9Y2F0Y2goZyl7cmV0dXJuITF9ZWxzZSByZXR1cm4hMTtyZXR1cm4hMH0sbWc9ZnVuY3Rpb24oYSl7dmFyIGI9Xy5oZihhLm1hdGNoKF8uZ2YpWzVdfHxudWxsKXx8IiI7Yj1fLmhmKEVmKGIpLm1hdGNoKF8uZ2YpWzVdfHxudWxsKTtyZXR1cm4oYj09PQpudWxsPzA6UmVnRXhwKCIoL18vanMvKXwoL18vc3MvKSIsImciKS50ZXN0KGIpJiYvXC9rPS8udGVzdChiKSk/YTpudWxsfSxqZz1mdW5jdGlvbigpe3RoaXMuZz1uZXcgeGU7dGhpcy5PYT10aGlzLm89IiI7dGhpcy5qPSExO3RoaXMuaD0wO3RoaXMubD0hMX07amcucHJvdG90eXBlLkM9ZnVuY3Rpb24oYSl7dGhpcy5vPV8uJGYoYSk7dGhpcy5PYT1TdHJpbmcoYS5BKTt0aGlzLmcuY2FsbGJhY2soKX07amcucHJvdG90eXBlLkI9ZnVuY3Rpb24oYSl7dGhpcy5qPSEwO3RoaXMuaD1fLlpmKGEpO3RoaXMuZy5jYWxsYmFjaygpfTtqZy5wcm90b3R5cGUuQT1mdW5jdGlvbigpe3RoaXMubD0hMDt0aGlzLmcuY2FsbGJhY2soKX07CnZhciBhZz1mdW5jdGlvbigpe3RoaXMuZz0wO3RoaXMuaD1bXX0sa2c9ZnVuY3Rpb24oYSxiKXthLmgucHVzaChiKTtuZyhhKX0sbmc9ZnVuY3Rpb24oYSl7Zm9yKDthLmc8NSYmYS5oLmxlbmd0aDspb2coYSxhLmguc2hpZnQoKSl9LG9nPWZ1bmN0aW9uKGEsYil7YS5nKys7RWUoYigpLGZ1bmN0aW9uKCl7dGhpcy5nLS07bmcodGhpcyl9LGEpfTt2YXIgcGc9bmV3IHdmKCExKSxxZz1kb2N1bWVudC5sb2NhdGlvbi5ocmVmOwplZih7ZmxhZ3M6e2RtbDpwZ30saW5pdGlhbGl6ZTpmdW5jdGlvbihhKXt2YXIgYj1wZy5nZXQoKSxjPSIiLGQ9IiI7d2luZG93JiZ3aW5kb3cuX0ZfY3NzUm93S2V5JiYoYz13aW5kb3cuX0ZfY3NzUm93S2V5LHdpbmRvdy5fRl9jb21iaW5lZFNpZ25hdHVyZSYmKGQ9d2luZG93Ll9GX2NvbWJpbmVkU2lnbmF0dXJlKSk7aWYoYyYmdHlwZW9mIHdpbmRvdy5fRl9pbnN0YWxsQ3NzIT09ImZ1bmN0aW9uIil0aHJvdyBFcnJvcigiUyIpO3ZhciBlLGY9Xy51Ll9GX2pzVXJsO2YmJihlPW1nKGYpKTshZSYmKGY9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJhc2UtanMiKSkmJihlPWYuc3JjP2Yuc3JjOmYuZ2V0QXR0cmlidXRlKCJocmVmIiksZT1tZyhlKSk7ZXx8KGU9bWcocWcpKTtlfHwoZT1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IiksZT1tZyhlW2UubGVuZ3RoLTFdLnNyYykpO2lmKCFlKXRocm93IEVycm9yKCJUIik7ZT1uZXcgYmcoZSk7YyYmKGUubz1jKTsKZCYmKGUubD1kKTtlLkM9YjtiPV8uamEoKTtiLkM9ZTtiLlloKCEwKTtiPV8uamEoKTtiLlhmKGEpO2EuQihiKX19KTsKXy5fTW9kdWxlTWFuYWdlcl9pbml0aWFsaXplPWZ1bmN0aW9uKGEsYil7aWYoIV8uY2Epe2lmKCFfLmhhKXJldHVybjtfLmlhKCl9Xy5jYS5XZihhLGIpfTsKXy5fTW9kdWxlTWFuYWdlcl9pbml0aWFsaXplKCdiL243M3F3Zi9zeTEvc3kwOjIvc3kyL3N5My9ySm1KcmM6Myw0LDUvc3k0OjMvYnlmVE9iOjcvc3k1L3N5Njo5L3N5NzphL3N5OC9zeTk6OS9MRWlrWmU6NCw1LDcsYixjLGQvVVVKcVZlL01wSndaYy9HSEFlQWMvc3lhL1d0NnZqZjo0LGEsaS9sc2pWbWM6YixjL3N5Yi9lbF9jb25mOmwvZWxfbWFpbl9jc3Mvc3lkOmIsaS9zeWU6OS9zeWYvZWxfbWFpbjoyLGQsbCxuLG8scCxxL2NvcnNwcm94eS93ZWJzaXRlX2Vycm9yL25hdmlnYXRpb251aTphLHEvcGhpc2hpbmdfcHJvdGVjdGlvbjpvLHEvX3N0YW06cCcsWydzeWInLCdlbF9jb25mJ10pOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLk49e307TVNHX1RSQU5TTEFURT0iT3ZlcnNldHQiO18uTlswXT1NU0dfVFJBTlNMQVRFO01TR19DQU5DRUw9IkF2YnJ5dCI7Xy5OWzFdPU1TR19DQU5DRUw7TVNHX0NMT1NFPSJMdWtrIjtfLk5bMl09TVNHX0NMT1NFO01TR0ZVTkNfUEFHRV9UUkFOU0xBVEVEX1RPPWZ1bmN0aW9uKGEpe3JldHVybiJHb29nbGUgaGFyIG92ZXJzYXR0IGRlbm5lIHNpZGVuIHRpbCAiK2ErIiBhdXRvbWF0aXNrIn07Xy5OWzNdPU1TR0ZVTkNfUEFHRV9UUkFOU0xBVEVEX1RPO01TR0ZVTkNfVFJBTlNMQVRFRF9UTz1mdW5jdGlvbihhKXtyZXR1cm4iT3ZlcnNhdHQgdGlsOiAiK2F9O18uTls0XT1NU0dGVU5DX1RSQU5TTEFURURfVE87TVNHX0dFTkVSQUxfRVJST1I9IkZlaWw6IFRqZW5lcmVuIGt1bm5lIGlra2UgZnVsbGZcdTAwZjhyZSBmb3Jlc3BcdTAwZjhyc2VsZW4uIFByXHUwMGY4diBwXHUwMGU1IG55dHQgc2VuZXJlLiI7Xy5OWzVdPU1TR19HRU5FUkFMX0VSUk9SO01TR19MRUFSTl9NT1JFPSJMZXMgbWVyIjsKXy5OWzZdPU1TR19MRUFSTl9NT1JFO01TR0ZVTkNfUE9XRVJFRF9CWT1mdW5jdGlvbihhKXtyZXR1cm4iRHJldmV0IGF2ICIrYX07Xy5OWzddPU1TR0ZVTkNfUE9XRVJFRF9CWTtNU0dfVFJBTlNMQVRFX1BST0RVQ1RfTkFNRT0iT3ZlcnNldHRlciI7Xy5OWzhdPU1TR19UUkFOU0xBVEVfUFJPRFVDVF9OQU1FO01TR19UUkFOU0xBVElPTl9JTl9QUk9HUkVTUz0iT3ZlcnNldHRlbHNlIHBcdTAwZTVnXHUwMGU1ciI7Xy5OWzldPU1TR19UUkFOU0xBVElPTl9JTl9QUk9HUkVTUztNU0dGVU5DX1RSQU5TTEFURV9QQUdFX1RPPWZ1bmN0aW9uKGEpe3JldHVybiJWaWwgZHUgb3ZlcnNldHRlIGRlbm5lIHNpZGVuIHRpbCAiK2ErIiBtZWQgR29vZ2xlIE92ZXJzZXR0ZXI/In07Xy5OWzEwXT1NU0dGVU5DX1RSQU5TTEFURV9QQUdFX1RPO01TR0ZVTkNfVklFV19QQUdFX0lOPWZ1bmN0aW9uKGEpe3JldHVybiJWaXMgZGVubmUgc2lkZW4gcFx1MDBlNTogIithfTtfLk5bMTFdPU1TR0ZVTkNfVklFV19QQUdFX0lOOwpNU0dfUkVTVE9SRT0iVmlzIG9yaWdpbmFsIjtfLk5bMTJdPU1TR19SRVNUT1JFO01TR19TU0xfSU5GT19MT0NBTF9GSUxFPSJJbm5ob2xkZXQgcFx1MDBlNSBkZW5uZSBsb2thbGUgZmlsZW4gc2VuZGVzIHRpbCBHb29nbGUgdmlhIGVuIHNpa2tlciB0aWxrb2JsaW5nIGZvciBcdTAwZTUgYmxpIG92ZXJzYXR0LiI7Xy5OWzEzXT1NU0dfU1NMX0lORk9fTE9DQUxfRklMRTtNU0dfU1NMX0lORk9fU0VDVVJFX1BBR0U9IklubmhvbGRldCBwXHUwMGU1IGRlbm5lIHNpa3JlIHNpZGVuIHNlbmRlcyB0aWwgR29vZ2xlIHZpYSBlbiBzaWtrZXIgdGlsa29ibGluZyBmb3IgXHUwMGU1IGJsaSBvdmVyc2F0dC4iO18uTlsxNF09TVNHX1NTTF9JTkZPX1NFQ1VSRV9QQUdFO01TR19TU0xfSU5GT19JTlRSQU5FVF9QQUdFPSJJbm5ob2xkZXQgcFx1MDBlNSBkZW5uZSBpbnRyYW5ldHRzaWRlbiBzZW5kZXMgdGlsIEdvb2dsZSB2aWEgZW4gc2lra2VyIHRpbGtvYmxpbmcgZm9yIFx1MDBlNSBibGkgb3ZlcnNhdHQuIjsKXy5OWzE1XT1NU0dfU1NMX0lORk9fSU5UUkFORVRfUEFHRTtNU0dfU0VMRUNUX0xBTkdVQUdFPSJWZWxnIHNwclx1MDBlNWsiO18uTlsxNl09TVNHX1NFTEVDVF9MQU5HVUFHRTtNU0dGVU5DX1RVUk5fT0ZGX1RSQU5TTEFUSU9OPWZ1bmN0aW9uKGEpe3JldHVybiJTbFx1MDBlNSBhdiBvdmVyc2V0dGVsc2UgdGlsICIrYX07Xy5OWzE3XT1NU0dGVU5DX1RVUk5fT0ZGX1RSQU5TTEFUSU9OO01TR0ZVTkNfVFVSTl9PRkZfRk9SPWZ1bmN0aW9uKGEpe3JldHVybiJEZWFrdGl2ZXIgZm9yOiAiK2F9O18uTlsxOF09TVNHRlVOQ19UVVJOX09GRl9GT1I7TVNHX0FMV0FZU19ISURFX0FVVE9fUE9QVVBfQkFOTkVSPSJTa2p1bCBhbGx0aWQiO18uTlsxOV09TVNHX0FMV0FZU19ISURFX0FVVE9fUE9QVVBfQkFOTkVSO01TR19PUklHSU5BTF9URVhUPSJPcmlnaW5hbHRla3N0OiI7Xy5OWzIwXT1NU0dfT1JJR0lOQUxfVEVYVDtNU0dfRklMTF9TVUdHRVNUSU9OPSJCaWRyYSBtZWQgZW4gYmVkcmUgb3ZlcnNldHRlbHNlIjsKXy5OWzIxXT1NU0dfRklMTF9TVUdHRVNUSU9OO01TR19TVUJNSVRfU1VHR0VTVElPTj0iQmlkcmEiO18uTlsyMl09TVNHX1NVQk1JVF9TVUdHRVNUSU9OO01TR19TSE9XX1RSQU5TTEFURV9BTEw9Ik92ZXJzZXR0IGFsdCI7Xy5OWzIzXT1NU0dfU0hPV19UUkFOU0xBVEVfQUxMO01TR19TSE9XX1JFU1RPUkVfQUxMPSJHamVub3BwcmV0dCBhbHQiO18uTlsyNF09TVNHX1NIT1dfUkVTVE9SRV9BTEw7TVNHX1NIT1dfQ0FOQ0VMX0FMTD0iQXZicnl0IGFsdCI7Xy5OWzI1XT1NU0dfU0hPV19DQU5DRUxfQUxMO01TR19UUkFOU0xBVEVfVE9fTVlfTEFOR1VBR0U9Ik92ZXJzZXR0IGRlbGVuZSB0aWwgbWl0dCBzcHJcdTAwZTVrIjtfLk5bMjZdPU1TR19UUkFOU0xBVEVfVE9fTVlfTEFOR1VBR0U7TVNHRlVOQ19UUkFOU0xBVEVfRVZFUllUSElOR19UTz1mdW5jdGlvbihhKXtyZXR1cm4iT3ZlcnNldHQgYWx0IHRpbCAiK2F9O18uTlsyN109TVNHRlVOQ19UUkFOU0xBVEVfRVZFUllUSElOR19UTzsKTVNHX1NIT1dfT1JJR0lOQUxfTEFOR1VBR0VTPSJWaXMgb3BwcmlubmVsaWdlIHNwclx1MDBlNWsiO18uTlsyOF09TVNHX1NIT1dfT1JJR0lOQUxfTEFOR1VBR0VTO01TR19PUFRJT05TPSJBbHRlcm5hdGl2ZXIiO18uTlsyOV09TVNHX09QVElPTlM7TVNHX1RVUk5fT0ZGX1RSQU5TTEFUSU9OX0ZPUl9USElTX1NJVEU9IlNsXHUwMGU1IGF2IG92ZXJzZXR0ZWxzZSBmb3IgZGV0dGUgbmV0dHN0ZWRldCI7Xy5OWzMwXT1NU0dfVFVSTl9PRkZfVFJBTlNMQVRJT05fRk9SX1RISVNfU0lURTtfLk5bMzFdPW51bGw7TVNHX0FMVF9TVUdHRVNUSU9OPSJWaXMgYWx0ZXJuYXRpdmUgb3ZlcnNldHRlbHNlciI7Xy5OWzMyXT1NU0dfQUxUX1NVR0dFU1RJT047TVNHX0FMVF9BQ1RJVklUWV9IRUxQRVJfVEVYVD0iS2xpa2sgcFx1MDBlNSBvcmQgb3ZlbmZvciBmb3IgXHUwMGU1IGZcdTAwZTUgYWx0ZXJuYXRpdmUgb3ZlcnNldHRlbHNlciI7Xy5OWzMzXT1NU0dfQUxUX0FDVElWSVRZX0hFTFBFUl9URVhUOwpNU0dfVVNFX0FMVEVSTkFUSVZFUz0iQnJ1ayI7Xy5OWzM0XT1NU0dfVVNFX0FMVEVSTkFUSVZFUztNU0dfRFJBR19USVA9IkRyYSBtZWQgU2hpZnQtdGFzdCBmb3IgXHUwMGU1IGVuZHJlIHJla2tlZlx1MDBmOGxnZSI7Xy5OWzM1XT1NU0dfRFJBR19USVA7TVNHX0NMSUNLX0ZPUl9BTFQ9IktsaWtrIGZvciBcdTAwZTUgc2UgYWx0ZXJuYXRpdmUgb3ZlcnNldHRlbHNlciI7Xy5OWzM2XT1NU0dfQ0xJQ0tfRk9SX0FMVDtNU0dfRFJBR19JTlNUVUNUSU9OUz0iSG9sZCBuZWRlIFNoaWZ0LXRhc3Rlbiwga2xpa2ssIG9nIGRyYSBkZXJldHRlciBvcmRlbmUgb3ZlbmZvciBmb3IgXHUwMGU1IGVuZHJlIHBcdTAwZTUgcmVra2VmXHUwMGY4bGdlbi4iO18uTlszN109TVNHX0RSQUdfSU5TVFVDVElPTlM7TVNHX1NVR0dFU1RJT05fU1VCTUlUVEVEPSJUYWtrIGZvciBhdCBkdSBiaWRyYXIgbWVkIG92ZXJzZXR0ZWxzZXNmb3JzbGFnZXQgZGl0dCB0aWwgR29vZ2xlIE92ZXJzZXR0ZXIuIjsKXy5OWzM4XT1NU0dfU1VHR0VTVElPTl9TVUJNSVRURUQ7TVNHX01BTkFHRV9UUkFOU0xBVElPTl9GT1JfVEhJU19TSVRFPSJBZG1pbmlzdHJlciBvdmVyc2V0dGluZyBmb3IgZGV0dGUgbmV0dHN0ZWRldCI7Xy5OWzM5XT1NU0dfTUFOQUdFX1RSQU5TTEFUSU9OX0ZPUl9USElTX1NJVEU7TVNHX0FMVF9BTkRfQ09OVFJJQlVURV9BQ1RJVklUWV9IRUxQRVJfVEVYVD0iS2xpa2sgcFx1MDBlNSBldCBvcmQgZm9yIFx1MDBlNSBzZSBhbHRlcm5hdGl2ZSBvdmVyc2V0dGVsc2VyLCBlbGxlciBkb2JiZWx0a2xpa2sgZm9yIFx1MDBlNSByZWRpZ2VyZSBkaXJla3RlIjtfLk5bNDBdPU1TR19BTFRfQU5EX0NPTlRSSUJVVEVfQUNUSVZJVFlfSEVMUEVSX1RFWFQ7TVNHX09SSUdJTkFMX1RFWFRfTk9fQ09MT049Ik9wcHJpbm5lbGlnIHRla3N0IjtfLk5bNDFdPU1TR19PUklHSU5BTF9URVhUX05PX0NPTE9OO18uTls0Ml09Ik92ZXJzZXR0ZXIiO18uTls0M109Ik92ZXJzZXR0IjtfLk5bNDRdPSJSZXR0aW5nZW4gZGluIGVyIHNlbmR0IGlubi4iOwpNU0dfTEFOR1VBR0VfVU5TVVBQT1JURUQ9IkZlaWw6IFNwclx1MDBlNWtldCB0aWwgbmV0dHNpZGVuIHN0XHUwMGY4dHRlcyBpa2tlLiI7Xy5OWzQ1XT1NU0dfTEFOR1VBR0VfVU5TVVBQT1JURUQ7TVNHX0xBTkdVQUdFX1RSQU5TTEFURV9XSURHRVQ9Ik1vZHVsIGZvciBzcHJcdTAwZTVrb3ZlcnNldHRpbmciO18uTls0Nl09TVNHX0xBTkdVQUdFX1RSQU5TTEFURV9XSURHRVQ7TVNHX1JBVEVfVEhJU19UUkFOU0xBVElPTj0iR2kgZW4gdnVyZGVyaW5nIGF2IGRlbm5lIG92ZXJzZXR0ZWxzZW4iO18uTls0N109TVNHX1JBVEVfVEhJU19UUkFOU0xBVElPTjtNU0dfRkVFREJBQ0tfVVNBR0VfRk9SX0lNUFJPVkVNRU5UPSJUaWxiYWtlbWVsZGluZ2VuIGRpbiBicnVrZXMgZm9yIFx1MDBlNSBnalx1MDBmOHJlIEdvb2dsZSBPdmVyc2V0dGVyIGJlZHJlIjtfLk5bNDhdPU1TR19GRUVEQkFDS19VU0FHRV9GT1JfSU1QUk9WRU1FTlQ7TVNHX0ZFRURCQUNLX1NBVElTRklFRF9MQUJFTD0iR29kIG92ZXJzZXR0ZWxzZSI7Cl8uTls0OV09TVNHX0ZFRURCQUNLX1NBVElTRklFRF9MQUJFTDtNU0dfRkVFREJBQ0tfRElTU0FUSVNGSUVEX0xBQkVMPSJEXHUwMGU1cmxpZyBvdmVyc2V0dGVsc2UiO18uTls1MF09TVNHX0ZFRURCQUNLX0RJU1NBVElTRklFRF9MQUJFTDtNU0dfVFJBTlNMQVRJT05fTk9fQ09MT049Ik92ZXJzZXR0ZWxzZSI7Xy5OWzUxXT1NU0dfVFJBTlNMQVRJT05fTk9fQ09MT047Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8ubGEoImVsX2NvbmYiKTsKdmFyIEZsO18uX2V4cG9ydFZlcnNpb249ZnVuY3Rpb24oYSl7Xy5iYygiZ29vZ2xlLnRyYW5zbGF0ZS52IixhKX07Xy5fZ2V0Q2FsbGJhY2tGdW5jdGlvbj1mdW5jdGlvbihhKXtyZXR1cm4gXy5SYihhKX07Xy5fZXhwb3J0TWVzc2FnZXM9ZnVuY3Rpb24oKXtfLmJjKCJnb29nbGUudHJhbnNsYXRlLm0iLF8uTil9O0ZsPWZ1bmN0aW9uKGEpe3ZhciBiPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF07Ynx8KGI9ZG9jdW1lbnQuYm9keS5wYXJlbnROb2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImhlYWQiKSkpO2IuYXBwZW5kQ2hpbGQoYSl9O18uX2xvYWRKcz1mdW5jdGlvbihhKXt2YXIgYj1fLmpkKGRvY3VtZW50LCJTQ1JJUFQiKTtiLnR5cGU9InRleHQvamF2YXNjcmlwdCI7Yi5jaGFyc2V0PSJVVEYtOCI7Xy5UYShiLF8ud2IoYSkpO0ZsKGIpfTsKXy5fbG9hZENzcz1mdW5jdGlvbihhKXt2YXIgYj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIik7Yi50eXBlPSJ0ZXh0L2NzcyI7Yi5yZWw9InN0eWxlc2hlZXQiO2IuY2hhcnNldD0iVVRGLTgiO2IuaHJlZj1hO0ZsKGIpfTtfLl9pc05TPWZ1bmN0aW9uKGEpe2E9YS5zcGxpdCgiLiIpO2Zvcih2YXIgYj13aW5kb3csYz0wO2M8YS5sZW5ndGg7KytjKWlmKCEoYj1iW2FbY11dKSlyZXR1cm4hMTtyZXR1cm4hMH07Xy5fc2V0dXBOUz1mdW5jdGlvbihhKXthPWEuc3BsaXQoIi4iKTtmb3IodmFyIGI9d2luZG93LGM9MDtjPGEubGVuZ3RoOysrYyliLmhhc093blByb3BlcnR5P2IuaGFzT3duUHJvcGVydHkoYVtjXSk/Yj1iW2FbY11dOmI9YlthW2NdXT17fTpiPWJbYVtjXV18fChiW2FbY11dPXt9KTtyZXR1cm4gYn07Xy5iYygiX2V4cG9ydFZlcnNpb24iLF8uX2V4cG9ydFZlcnNpb24pO18uYmMoIl9nZXRDYWxsYmFja0Z1bmN0aW9uIixfLl9nZXRDYWxsYmFja0Z1bmN0aW9uKTsKXy5iYygiX2V4cG9ydE1lc3NhZ2VzIixfLl9leHBvcnRNZXNzYWdlcyk7Xy5iYygiX2xvYWRKcyIsXy5fbG9hZEpzKTtfLmJjKCJfbG9hZENzcyIsXy5fbG9hZENzcyk7Xy5iYygiX2lzTlMiLF8uX2lzTlMpO18uYmMoIl9zZXR1cE5TIixfLl9zZXR1cE5TKTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciYmdHlwZW9mIGRvY3VtZW50LnJlYWR5U3RhdGU9PSJ1bmRlZmluZWQiJiZ3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsZnVuY3Rpb24oKXtkb2N1bWVudC5yZWFkeVN0YXRlPSJjb21wbGV0ZSJ9LCExKTsKXy5uYSgpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KfSkuY2FsbCh0aGlzLHRoaXMuZGVmYXVsdF90cik7Ci8vIEdvb2dsZSBJbmMuCgovLyMgc291cmNlVVJMPS9fL3RyYW5zbGF0ZV9odHRwL18vanMvaz10cmFuc2xhdGVfaHR0cC50ci5uby5mZjZqS2tiSjBiQS5PL2FtPWhNQS9kPTEvcnM9QU44U1BmcTdUUUdLWjRIZ0VYM0s0RUpuX05LLXZKUlRYdy9tPWVsX2NvbmYKICAgIC8vIENvbmZpZ3VyZSBDb25zdGFudHMKICAgIChmdW5jdGlvbigpewogICAgICBsZXQgZ3RDb25zdEV2YWxTdGFydFRpbWUgPSBuZXcgRGF0ZSgpOwogICAgICBpZiAoX2lzTlMoJ2dvb2dsZS50cmFuc2xhdGUuRWxlbWVudCcpKXtyZXR1cm59CgogICAgICAoZnVuY3Rpb24oKXsKICAgICAgICBjb25zdCBjPV9zZXR1cE5TKCdnb29nbGUudHJhbnNsYXRlLl9jb25zdCcpOwoKICAgICAgICBjLl9jZXN0ID0gZ3RDb25zdEV2YWxTdGFydFRpbWU7CiAgICAgICAgZ3RDb25zdEV2YWxTdGFydFRpbWUgPSB1bmRlZmluZWQ7IC8vIGhpZGUgdGhpcyBldmFsIHN0YXJ0IHRpbWUgY29uc3RhbnQKICBjLl9jbD0nbm8nOyBjLl9jdWM9J2dvb2dsZVRyYW5zbGF0ZUVsZW1lbnRJbml0JzsgYy5fY2VmPSdceDViMCwwLDBceDVkJzsgYy5fY2FjPScnOyBjLl9jYW09Jyc7IGMuX2NlbnY9J3Byb2QnOyBjLl9jbGw9J0lORk8nOyBjLl9jdGtrPSc0ODczODguMTAxMTk5NjIxOCc7IGNvbnN0IGg9J3RyYW5zbGF0ZS5nb29nbGVhcGlzLmNvbSc7IGNvbnN0IG9waD0ndHJhbnNsYXRlLXBhLmdvb2dsZWFwaXMuY29tJzsgY29uc3Qgcz0naHR0cHMnKyc6Ly8nOyBjLl9wYWg9aDsgYy5fcGFzPXM7IGNvbnN0IGI9cysndHJhbnNsYXRlLmdvb2dsZWFwaXMuY29tJzsgY29uc3Qgc3RhdGljUGF0aCA9ICcvdHJhbnNsYXRlX3N0YXRpYy8nOyBjLl9wY2k9YitzdGF0aWNQYXRoKydpbWcvdGVfY3RybDMuZ2lmJzsgYy5fcG1pPWIrc3RhdGljUGF0aCsnaW1nL21pbmlfZ29vZ2xlLnBuZyc7IGMuX3BiaT1iK3N0YXRpY1BhdGgrJ2ltZy90ZV9iay5naWYnOyBjLl9wbGk9YitzdGF0aWNQYXRoKydpbWcvbG9hZGluZy5naWYnOyBjLl9wcz0naHR0cHM6XC9cL3d3dy5nc3RhdGljLmNvbVwvX1wvdHJhbnNsYXRlX2h0dHBcL19cL3NzXC9rXHgzZHRyYW5zbGF0ZV9odHRwLnRyLk1PaEtBUFNTMS1zLkwuRjQuT1wvYW1ceDNkaE1BXC9kXHgzZDBcL3JzXHgzZEFOOFNQZm9TdmNiT25GZGF4UVBfeDh0ZTZqekdRb2YyOHdcL21ceDNkZWxfbWFpbl9jc3MnOyBjLl9wbGxhPW9waCsnXC92MVwvc3VwcG9ydGVkTGFuZ3VhZ2VzJzsgYy5fcHVoPSd0cmFuc2xhdGUuZ29vZ2xlLmNvbSc7Yy5fY25hbD17fTtfbG9hZENzcyhjLl9wcyk7IF9sb2FkSnMoJ2h0dHBzOlwvXC90cmFuc2xhdGUuZ29vZ2xlYXBpcy5jb21cL19cL3RyYW5zbGF0ZV9odHRwXC9fXC9qc1wva1x4M2R0cmFuc2xhdGVfaHR0cC50ci5uby5mZjZqS2tiSjBiQS5PXC9hbVx4M2RBQUFFXC9kXHgzZDFcL2V4bVx4M2RlbF9jb25mXC9lZFx4M2QxXC9yc1x4M2RBTjhTUGZwNEhrMjJQM2ZFbFUzXzBvWkU4dzFGYnpfY2J3XC9tXHgzZGVsX21haW4nKTtfZXhwb3J0TWVzc2FnZXMoKTsgX2V4cG9ydFZlcnNpb24oJ1RFXzIwMjUwODA1Jyk7CiAgICAgICAgfSkoKTsKICAgICAgfSkoKTsKICA="}},"time_used":248,"timings":{"blocked":80,"dns":0,"connect":27,"send":0,"wait":59,"receive":0,"ssl":78},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"clear-vault.online/myaccount/assets/js/scripts.js?ver=2.4.0","fqdn":"clear-vault.online","domain":"clear-vault.online","tld":"online"},"ip":{"addr":"163.61.188.222","port":443,"asn":0,"as":"","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://clear-vault.online/","date":"2025-08-07T20:48:21.206Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.clear-vault.online","organization":""},"issuer":{"commonName":"R10","organization":"Let's Encrypt"},"validity":{"start":"Mon, 16 Jun 2025 11:19:04 GMT","end":"Sun, 14 Sep 2025 11:19:03 GMT"},"fingerprint":{"sha1":"B5:E4:FF:81:2F:18:5B:84:17:4F:FD:F3:B1:30:00:31:3C:9C:0B:6F","sha256":"D8:BC:E6:FB:32:84:D6:43:47:2F:20:BA:56:C3:6C:DA:94:89:5F:DD:A3:3B:02:B9:36:2B:50:1E:79:03:E9:D6"}}},"request":{"raw":"GET /myaccount/assets/js/scripts.js?ver=2.4.0 HTTP/1.1\r\nHost: clear-vault.online\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.5\r\nAccept-Encoding: gzip, deflate, br\r\nDNT: 1\r\nConnection: keep-alive\r\nReferer: https://clear-vault.online/\r\nCookie: PHPSESSID=1f922d27e0c65bdcb87ee1a396055a92\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/3 200 OK\r\ncontent-type: text/javascript\r\nlast-modified: Thu, 11 May 2023 18:14:15 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 5807\r\ndate: Thu, 07 Aug 2025 20:48:21 GMT\r\nserver: LiteSpeed\r\nstrict-transport-security: max-age=16070400;\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","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":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":24949,"size_decoded":0,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (326)","md5":"78eae7d06c77f84a7ef8cfd7922f5a85","sha1":"3a8aeac030ac32a9d1b7fa13220652fbc99eefe0","sha256":"adcd4f31c44fa2895618020d9ea8b74eaf28653c4b31831b58650fe40bf56127","sha512":"cc2771fac731c6178af4a9216b5ae283a7e816dbfdc9d4d9f45587083e01800fbfa1da47142875ecaf2d8383e85b84a780c6c4110e1cc8376a14bb64eac86b27","ssdeep":"384:Ge16sZQtbPG7oABqovdTvDKQuuYnaeTxQdsebfhBYHNDqOcIvlQ0aJlA1jxPiVuj:GSBqRF4R4akjN","tlshash":"e1b20c4974f710b6813b34ad86ef9409366b11074c1eda107d9c9b809f8493e95fafee","first_seen":"2023-03-12T20:42:29Z","last_seen":"2026-08-11T12:54:12.908135Z","times_seen":289,"resource_available":true,"data":"InVzZSBzdHJpY3QiOwoKIWZ1bmN0aW9uIChOaW9BcHAsICQpIHsKICAidXNlIHN0cmljdCI7CgogIE5pb0FwcC5QYWNrYWdlLm5hbWUgPSAiRGFzaExpdGUiOwogIE5pb0FwcC5QYWNrYWdlLnZlcnNpb24gPSAiMi4zIjsKICB2YXIgJHdpbiA9ICQod2luZG93KSwKICAgICAgJGJvZHkgPSAkKCdib2R5JyksCiAgICAgICRkb2MgPSAkKGRvY3VtZW50KSwKICAgICAgLy9jbGFzcyBuYW1lcwogIF9ib2R5X3RoZW1lID0gJ25pby10aGVtZScsCiAgICAgIF9tZW51ID0gJ25rLW1lbnUnLAogICAgICBfbW9iaWxlX25hdiA9ICdtb2JpbGUtbWVudScsCiAgICAgIF9oZWFkZXIgPSAnbmstaGVhZGVyJywKICAgICAgX2hlYWRlcl9tZW51ID0gJ25rLWhlYWRlci1tZW51JywKICAgICAgX3NpZGViYXIgPSAnbmstc2lkZWJhcicsCiAgICAgIF9zaWRlYmFyX21vYiA9ICduay1zaWRlYmFyLW1vYmlsZScsCiAgICAgIC8vYnJlYWtwb2ludHMKICBfYnJlYWsgPSBOaW9BcHAuQnJlYWs7CgogIGZ1bmN0aW9uIGV4dGVuZChvYmosIGV4dCkgewogICAgT2JqZWN0LmtleXMoZXh0KS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHsKICAgICAgb2JqW2tleV0gPSBleHRba2V5XTsKICAgIH0pOwogICAgcmV0dXJuIG9iajsKICB9IC8vIENsYXNzSW5pdCBAdjEuMAoKCiAgTmlvQXBwLkNsYXNzQm9keSA9IGZ1bmN0aW9uICgpIHsKICAgIE5pb0FwcC5BZGRJbkJvZHkoX3NpZGViYXIpOwogIH07IC8vIENsYXNzSW5pdCBAdjEuMAoKCiAgTmlvQXBwLkNsYXNzTmF2TWVudSA9IGZ1bmN0aW9uICgpIHsKICAgIE5pb0FwcC5CcmVha0NsYXNzKCcuJyArIF9oZWFkZXJfbWVudSwgX2JyZWFrLmxnLCB7CiAgICAgIHRpbWVPdXQ6IDAKICAgIH0pOwogICAgTmlvQXBwLkJyZWFrQ2xhc3MoJy4nICsgX3NpZGViYXIsIF9icmVhay5sZywgewogICAgICB0aW1lT3V0OiAwLAogICAgICBjbGFzc0FkZDogX3NpZGViYXJfbW9iCiAgICB9KTsKICAgICR3aW4ub24oJ3Jlc2l6ZScsIGZ1bmN0aW9uICgpIHsKICAgICAgTmlvQXBwLkJyZWFrQ2xhc3MoJy4nICsgX2hlYWRlcl9tZW51LCBfYnJlYWsubGcpOwogICAgICBOaW9BcHAuQnJlYWtDbGFzcygnLicgKyBfc2lkZWJhciwgX2JyZWFrLmxnLCB7CiAgICAgICAgY2xhc3NBZGQ6IF9zaWRlYmFyX21vYgogICAgICB9KTsKICAgIH0pOwogIH07IC8vIENvZGUgUHJldHRpZnkgQHYxLjAKCgogIE5pb0FwcC5QcmV0dGlmeSA9IGZ1bmN0aW9uICgpIHsKICAgIHdpbmRvdy5wcmV0dHlQcmludCAmJiBwcmV0dHlQcmludCgpOwogIH07IC8vIENvcGllZCBAdjEuMAoKCiAgTmlvQXBwLkNvcGllZCA9IGZ1bmN0aW9uICgpIHsKICAgIHZhciBjbGlwID0gJy5jbGlwYm9hcmQtaW5pdCcsCiAgICAgICAgdGFyZ2V0ID0gJy5jbGlwYm9hcmQtdGV4dCcsCiAgICAgICAgc2NsYXNzID0gJ2NsaXBib2FyZC1zdWNjZXNzJywKICAgICAgICBlY2xhc3MgPSAnY2xpcGJvYXJkLWVycm9yJzsgLy8gRmVlZGJhY2sKCiAgICBmdW5jdGlvbiBmZWVkYmFjayhlbCwgc3RhdGUpIHsKICAgICAgdmFyICRlbG0gPSAkKGVsKSwKICAgICAgICAgICRlbHAgPSAkZWxtLnBhcmVudCgpLAogICAgICAgICAgY29weSA9IHsKICAgICAgICB0ZXh0OiAnQ29weScsCiAgICAgICAgZG9uZTogJ0NvcGllZCcsCiAgICAgICAgZmFpbDogJ0ZhaWxlZCcKICAgICAgfSwKICAgICAgICAgIGRhdGEgPSB7CiAgICAgICAgdGV4dDogJGVsbS5kYXRhKCdjbGlwLXRleHQnKSwKICAgICAgICBkb25lOiAkZWxtLmRhdGEoJ2NsaXAtc3VjY2VzcycpLAogICAgICAgIGZhaWw6ICRlbG0uZGF0YSgnY2xpcC1lcnJvcicpCiAgICAgIH07CiAgICAgIGNvcHkudGV4dCA9IGRhdGEudGV4dCA/IGRhdGEudGV4dCA6IGNvcHkudGV4dDsKICAgICAgY29weS5kb25lID0gZGF0YS5kb25lID8gZGF0YS5kb25lIDogY29weS5kb25lOwogICAgICBjb3B5LmZhaWwgPSBkYXRhLmZhaWwgPyBkYXRhLmZhaWwgOiBjb3B5LmZhaWw7CiAgICAgIHZhciBjb3B5dGV4dCA9IHN0YXRlID09PSAnc3VjY2VzcycgPyBjb3B5LmRvbmUgOiBjb3B5LmZhaWwsCiAgICAgICAgICBhZGRjbGFzcyA9IHN0YXRlID09PSAnc3VjY2VzcycgPyBzY2xhc3MgOiBlY2xhc3M7CiAgICAgICRlbHAuYWRkQ2xhc3MoYWRkY2xhc3MpLmZpbmQodGFyZ2V0KS5odG1sKGNvcHl0ZXh0KTsKICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgJGVscC5yZW1vdmVDbGFzcyhzY2xhc3MgKyAnICcgKyBlY2xhc3MpLmZpbmQodGFyZ2V0KS5odG1sKGNvcHkudGV4dCkuYmx1cigpOwogICAgICAgICRlbHAuZmluZCgnaW5wdXQnKS5ibHVyKCk7CiAgICAgIH0sIDIwMDApOwogICAgfSAvLyBJbml0IENsaXBib2FyZEpTCgoKICAgIGlmIChDbGlwYm9hcmRKUy5pc1N1cHBvcnRlZCgpKSB7CiAgICAgIHZhciBjbGlwYm9hcmQgPSBuZXcgQ2xpcGJvYXJkSlMoY2xpcCk7CiAgICAgIGNsaXBib2FyZC5vbignc3VjY2VzcycsIGZ1bmN0aW9uIChlKSB7CiAgICAgICAgZmVlZGJhY2soZS50cmlnZ2VyLCAnc3VjY2VzcycpOwogICAgICAgIGUuY2xlYXJTZWxlY3Rpb24oKTsKICAgICAgfSkub24oJ2Vycm9yJywgZnVuY3Rpb24gKGUpIHsKICAgICAgICBmZWVkYmFjayhlLnRyaWdnZXIsICdlcnJvcicpOwogICAgICB9KTsKICAgIH0gZWxzZSB7CiAgICAgICQoY2xpcCkuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsKICAgIH0KCiAgICA7CiAgfTsgLy8gQ3VycmVudExpbmsgRGV0ZWN0IEB2MS4wCgoKICBOaW9BcHAuQ3VycmVudExpbmsgPSBmdW5jdGlvbiAoKSB7CiAgICB2YXIgX2xpbmsgPSAnLm5rLW1lbnUtbGluaywgLm1lbnUtbGluaywgLm5hdi1saW5rJywKICAgICAgICBfY3VycmVudFVSTCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLAogICAgICAgIGZpbGVOYW1lID0gX2N1cnJlbnRVUkwuc3Vic3RyaW5nKDAsIF9jdXJyZW50VVJMLmluZGV4T2YoIiMiKSA9PSAtMSA/IF9jdXJyZW50VVJMLmxlbmd0aCA6IF9jdXJyZW50VVJMLmluZGV4T2YoIiMiKSksCiAgICAgICAgZmlsZU5hbWUgPSBmaWxlTmFtZS5zdWJzdHJpbmcoMCwgZmlsZU5hbWUuaW5kZXhPZigiPyIpID09IC0xID8gZmlsZU5hbWUubGVuZ3RoIDogZmlsZU5hbWUuaW5kZXhPZigiPyIpKTsKCiAgICAkKF9saW5rKS5lYWNoKGZ1bmN0aW9uICgpIHsKICAgICAgdmFyIHNlbGYgPSAkKHRoaXMpLAogICAgICAgICAgX3NlbGZfbGluayA9IHNlbGYuYXR0cignaHJlZicpOwoKICAgICAgaWYgKGZpbGVOYW1lLm1hdGNoKF9zZWxmX2xpbmspKSB7CiAgICAgICAgc2VsZi5jbG9zZXN0KCJsaSIpLmFkZENsYXNzKCdhY3RpdmUgY3VycmVudC1wYWdlJykucGFyZW50cygpLmNsb3Nlc3QoImxpIikuYWRkQ2xhc3MoImFjdGl2ZSBjdXJyZW50LXBhZ2UiKTsKICAgICAgICBzZWxmLmNsb3Nlc3QoImxpIikuY2hpbGRyZW4oJy5uay1tZW51LXN1YicpLmNzcygnZGlzcGxheScsICdibG9jaycpOwogICAgICAgIHNlbGYucGFyZW50cygpLmNsb3Nlc3QoImxpIikuY2hpbGRyZW4oJy5uay1tZW51LXN1YicpLmNzcygnZGlzcGxheScsICdibG9jaycpOwogICAgICB9IGVsc2UgewogICAgICAgIHNlbGYuY2xvc2VzdCgibGkiKS5yZW1vdmVDbGFzcygnYWN0aXZlIGN1cnJlbnQtcGFnZScpLnBhcmVudHMoKS5jbG9zZXN0KCJsaTpub3QoLmN1cnJlbnQtcGFnZSkiKS5yZW1vdmVDbGFzcygiYWN0aXZlIik7CiAgICAgIH0KICAgIH0pOwogIH07IC8vIFBhc3N3b3JkU3dpdGNoIEB2MS4wCgoKICBOaW9BcHAuUGFzc1N3aXRjaCA9IGZ1bmN0aW9uICgpIHsKICAgIE5pb0FwcC5QYXNzY29kZSgnLnBhc3Njb2RlLXN3aXRjaCcpOwogIH07IC8vIFRvYXN0ciBNZXNzYWdlIEB2MS4wIAoKCiAgTmlvQXBwLlRvYXN0ID0gZnVuY3Rpb24gKG1zZywgdHR5cGUsIG9wdCkgewogICAgdmFyIHR0eXBlID0gdHR5cGUgPyB0dHlwZSA6ICdpbmZvJywKICAgICAgICBtc2kgPSAnJywKICAgICAgICB0aWNvbiA9IHR0eXBlID09PSAnaW5mbycgPyAnbmkgbmktaW5mby1maWxsJyA6IHR0eXBlID09PSAnc3VjY2VzcycgPyAnbmkgbmktY2hlY2stY2lyY2xlLWZpbGwnIDogdHR5cGUgPT09ICdlcnJvcicgPyAnbmkgbmktY3Jvc3MtY2lyY2xlLWZpbGwnIDogdHR5cGUgPT09ICd3YXJuaW5nJyA/ICduaSBuaS1hbGVydC1maWxsJyA6ICcnLAogICAgICAgIGRlZiA9IHsKICAgICAgcG9zaXRpb246ICdib3R0b20tcmlnaHQnLAogICAgICB1aTogJycsCiAgICAgIGljb246ICdhdXRvJywKICAgICAgY2xlYXI6IGZhbHNlCiAgICB9LAogICAgICAgIGF0dHIgPSBvcHQgPyBleHRlbmQoZGVmLCBvcHQpIDogZGVmOwogICAgYXR0ci5wb3NpdGlvbiA9IGF0dHIucG9zaXRpb24gPyAndG9hc3QtJyArIGF0dHIucG9zaXRpb24gOiAndG9hc3QtYm90dG9tLXJpZ2h0JzsKICAgIGF0dHIuaWNvbiA9IGF0dHIuaWNvbiA9PT0gJ2F1dG8nID8gdGljb24gOiBhdHRyLmljb24gPyBhdHRyLmljb24gOiAnJzsKICAgIGF0dHIudWkgPSBhdHRyLnVpID8gJyAnICsgYXR0ci51aSA6ICcnOwogICAgbXNpID0gYXR0ci5pY29uICE9PSAnJyA/ICc8c3BhbiBjbGFzcz0idG9hc3RyLWljb24iPjxlbSBjbGFzcz0iaWNvbiAnICsgYXR0ci5pY29uICsgJyI+PC9lbT48L3NwYW4+JyA6ICcnLCBtc2cgPSBtc2cgIT09ICcnID8gbXNpICsgJzxkaXYgY2xhc3M9InRvYXN0ci10ZXh0Ij4nICsgbXNnICsgJzwvZGl2PicgOiAnJzsKCiAgICBpZiAobXNnICE9PSAiIikgewogICAgICBpZiAoYXR0ci5jbGVhciA9PT0gdHJ1ZSkgewogICAgICAgIHRvYXN0ci5jbGVhcigpOwogICAgICB9CgogICAgICB2YXIgb3B0aW9uID0gewogICAgICAgICJjbG9zZUJ1dHRvbiI6IHRydWUsCiAgICAgICAgImRlYnVnIjogZmFsc2UsCiAgICAgICAgIm5ld2VzdE9uVG9wIjogZmFsc2UsCiAgICAgICAgInByb2dyZXNzQmFyIjogZmFsc2UsCiAgICAgICAgInBvc2l0aW9uQ2xhc3MiOiBhdHRyLnBvc2l0aW9uICsgYXR0ci51aSwKICAgICAgICAiY2xvc2VIdG1sIjogJzxzcGFuIGNsYXNzPSJidG4tdHJpZ2dlciI+Q2xvc2U8L3NwYW4+JywKICAgICAgICAicHJldmVudER1cGxpY2F0ZXMiOiB0cnVlLAogICAgICAgICJzaG93RHVyYXRpb24iOiAiMTUwMCIsCiAgICAgICAgImhpZGVEdXJhdGlvbiI6ICIxNTAwIiwKICAgICAgICAidGltZU91dCI6ICIyMDAwIiwKICAgICAgICAidG9hc3RDbGFzcyI6ICJ0b2FzdHIiLAogICAgICAgICJleHRlbmRlZFRpbWVPdXQiOiAiMzAwMCIKICAgICAgfTsKICAgICAgdG9hc3RyLm9wdGlvbnMgPSBleHRlbmQob3B0aW9uLCBhdHRyKTsKICAgICAgdG9hc3RyW3R0eXBlXShtc2cpOwogICAgfQogIH07IC8vIFRvZ2dsZSBTY3JlZW4gQHYxLjAKCgogIE5pb0FwcC5UR0wuc2NyZWVuID0gZnVuY3Rpb24gKGVsbSkgewogICAgaWYgKCQoZWxtKS5leGlzdHMoKSkgewogICAgICAkKGVsbSkuZWFjaChmdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIHNzaXplID0gJCh0aGlzKS5kYXRhKCd0b2dnbGUtc2NyZWVuJyk7CgogICAgICAgIGlmIChzc2l6ZSkgewogICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygndG9nZ2xlLXNjcmVlbi0nICsgc3NpemUpOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9CiAgfTsgLy8gVG9nZ2xlIENvbnRlbnQgQHYxLjAKCgogIE5pb0FwcC5UR0wuY29udGVudCA9IGZ1bmN0aW9uIChlbG0sIG9wdCkgewogICAgdmFyIHRvZ2dsZSA9IGVsbSA/IGVsbSA6ICcudG9nZ2xlJywKICAgICAgICAkdG9nZ2xlID0gJCh0b2dnbGUpLAogICAgICAgICRjb250ZW50RCA9ICQoJ1tkYXRhLWNvbnRlbnRdJyksCiAgICAgICAgdG9nZ2xlQnJlYWsgPSB0cnVlLAogICAgICAgIHRvZ2dsZUN1cnJlbnQgPSBmYWxzZSwKICAgICAgICBkZWYgPSB7CiAgICAgIGFjdGl2ZTogJ2FjdGl2ZScsCiAgICAgIGNvbnRlbnQ6ICdjb250ZW50LWFjdGl2ZScsCiAgICAgICJicmVhayI6IHRvZ2dsZUJyZWFrCiAgICB9LAogICAgICAgIGF0dHIgPSBvcHQgPyBleHRlbmQoZGVmLCBvcHQpIDogZGVmOwogICAgTmlvQXBwLlRHTC5zY3JlZW4oJGNvbnRlbnREKTsKICAgICR0b2dnbGUub24oJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHsKICAgICAgdG9nZ2xlQ3VycmVudCA9IHRoaXM7CiAgICAgIE5pb0FwcC5Ub2dnbGUudHJpZ2dlcigkKHRoaXMpLmRhdGEoJ3RhcmdldCcpLCBhdHRyKTsKICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgfSk7CiAgICAkZG9jLm9uKCdtb3VzZXVwJywgZnVuY3Rpb24gKGUpIHsKICAgICAgaWYgKHRvZ2dsZUN1cnJlbnQpIHsKICAgICAgICB2YXIgJHRvZ2dsZUN1cnJlbnQgPSAkKHRvZ2dsZUN1cnJlbnQpLAogICAgICAgICAgICAkczJjID0gJCgnLnNlbGVjdDItY29udGFpbmVyJyksCiAgICAgICAgICAgICRkcGQgPSAkKCcuZGF0ZXBpY2tlci1kcm9wZG93bicpLAogICAgICAgICAgICAkdHBjID0gJCgnLnVpLXRpbWVwaWNrZXItY29udGFpbmVyJyk7CgogICAgICAgIGlmICghJHRvZ2dsZUN1cnJlbnQuaXMoZS50YXJnZXQpICYmICR0b2dnbGVDdXJyZW50LmhhcyhlLnRhcmdldCkubGVuZ3RoID09PSAwICYmICEkY29udGVudEQuaXMoZS50YXJnZXQpICYmICRjb250ZW50RC5oYXMoZS50YXJnZXQpLmxlbmd0aCA9PT0gMCAmJiAhJHMyYy5pcyhlLnRhcmdldCkgJiYgJHMyYy5oYXMoZS50YXJnZXQpLmxlbmd0aCA9PT0gMCAmJiAhJGRwZC5pcyhlLnRhcmdldCkgJiYgJGRwZC5oYXMoZS50YXJnZXQpLmxlbmd0aCA9PT0gMCAmJiAhJHRwYy5pcyhlLnRhcmdldCkgJiYgJHRwYy5oYXMoZS50YXJnZXQpLmxlbmd0aCA9PT0gMCkgewogICAgICAgICAgTmlvQXBwLlRvZ2dsZS5yZW1vdmVkKCR0b2dnbGVDdXJyZW50LmRhdGEoJ3RhcmdldCcpLCBhdHRyKTsKICAgICAgICAgIHRvZ2dsZUN1cnJlbnQgPSBmYWxzZTsKICAgICAgICB9CiAgICAgIH0KICAgIH0pOwogICAgJHdpbi5vbigncmVzaXplJywgZnVuY3Rpb24gKCkgewogICAgICAkY29udGVudEQuZWFjaChmdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIGNvbnRlbnQgPSAkKHRoaXMpLmRhdGEoJ2NvbnRlbnQnKSwKICAgICAgICAgICAgc3NpemUgPSAkKHRoaXMpLmRhdGEoJ3RvZ2dsZS1zY3JlZW4nKSwKICAgICAgICAgICAgdG9nZ2xlQnJlYWsgPSBfYnJlYWtbc3NpemVdOwoKICAgICAgICBpZiAoTmlvQXBwLldpbi53aWR0aCA+IHRvZ2dsZUJyZWFrKSB7CiAgICAgICAgICBOaW9BcHAuVG9nZ2xlLnJlbW92ZWQoY29udGVudCwgYXR0cik7CiAgICAgICAgfQogICAgICB9KTsKICAgIH0pOwogIH07IC8vIFRvZ2dsZUV4cGFuZCBAdjEuMAoKCiAgTmlvQXBwLlRHTC5leHBhbmQgPSBmdW5jdGlvbiAoZWxtLCBvcHQpIHsKICAgIHZhciB0b2dnbGUgPSBlbG0gPyBlbG0gOiAnLmV4cGFuZCcsCiAgICAgICAgZGVmID0gewogICAgICB0b2dnbGU6IHRydWUKICAgIH0sCiAgICAgICAgYXR0ciA9IG9wdCA/IGV4dGVuZChkZWYsIG9wdCkgOiBkZWY7CiAgICAkKHRvZ2dsZSkub24oJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHsKICAgICAgTmlvQXBwLlRvZ2dsZS50cmlnZ2VyKCQodGhpcykuZGF0YSgndGFyZ2V0JyksIGF0dHIpOwogICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICB9KTsKICB9OyAvLyBEcm9wZG93biBNZW51IEB2MS4wCgoKICBOaW9BcHAuVEdMLmRkbWVudSA9IGZ1bmN0aW9uIChlbG0sIG9wdCkgewogICAgdmFyIGltZW51ID0gZWxtID8gZWxtIDogJy5uay1tZW51LXRvZ2dsZScsCiAgICAgICAgZGVmID0gewogICAgICBhY3RpdmU6ICdhY3RpdmUnLAogICAgICBzZWxmOiAnbmstbWVudS10b2dnbGUnLAogICAgICBjaGlsZDogJ25rLW1lbnUtc3ViJwogICAgfSwKICAgICAgICBhdHRyID0gb3B0ID8gZXh0ZW5kKGRlZiwgb3B0KSA6IGRlZjsKICAgICQoaW1lbnUpLm9uKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7CiAgICAgIGlmIChOaW9BcHAuV2luLndpZHRoIDwgX2JyZWFrLmxnIHx8ICQodGhpcykucGFyZW50cygpLmhhc0NsYXNzKF9zaWRlYmFyKSkgewogICAgICAgIE5pb0FwcC5Ub2dnbGUuZHJvcE1lbnUoJCh0aGlzKSwgYXR0cik7CiAgICAgIH0KCiAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgIH0pOwogIH07IC8vIFNob3cgTWVudSBAdjEuMAoKCiAgTmlvQXBwLlRHTC5zaG93bWVudSA9IGZ1bmN0aW9uIChlbG0sIG9wdCkgewogICAgdmFyIHRvZ2dsZSA9IGVsbSA/IGVsbSA6ICcubmstbmF2LXRvZ2dsZScsCiAgICAgICAgJHRvZ2dsZSA9ICQodG9nZ2xlKSwKICAgICAgICAkY29udGVudEQgPSAkKCdbZGF0YS1jb250ZW50XScpLAogICAgICAgIHRvZ2dsZUJyZWFrID0gJGNvbnRlbnRELmhhc0NsYXNzKF9oZWFkZXJfbWVudSkgPyBfYnJlYWsubGcgOiBfYnJlYWsueGwsCiAgICAgICAgdG9nZ2xlT2xheSA9IF9zaWRlYmFyICsgJy1vdmVybGF5JywKICAgICAgICB0b2dnbGVDbG9zZSA9IHsKICAgICAgcHJvZmlsZTogdHJ1ZSwKICAgICAgbWVudTogZmFsc2UKICAgIH0sCiAgICAgICAgZGVmID0gewogICAgICBhY3RpdmU6ICd0b2dnbGUtYWN0aXZlJywKICAgICAgY29udGVudDogX3NpZGViYXIgKyAnLWFjdGl2ZScsCiAgICAgIGJvZHk6ICduYXYtc2hvd24nLAogICAgICBvdmVybGF5OiB0b2dnbGVPbGF5LAogICAgICAiYnJlYWsiOiB0b2dnbGVCcmVhaywKICAgICAgY2xvc2U6IHRvZ2dsZUNsb3NlCiAgICB9LAogICAgICAgIGF0dHIgPSBvcHQgPyBleHRlbmQoZGVmLCBvcHQpIDogZGVmOwogICAgJHRvZ2dsZS5vbignY2xpY2snLCBmdW5jdGlvbiAoZSkgewogICAgICBOaW9BcHAuVG9nZ2xlLnRyaWdnZXIoJCh0aGlzKS5kYXRhKCd0YXJnZXQnKSwgYXR0cik7CiAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgIH0pOwogICAgJGRvYy5vbignbW91c2V1cCcsIGZ1bmN0aW9uIChlKSB7CiAgICAgIGlmICghJHRvZ2dsZS5pcyhlLnRhcmdldCkgJiYgJHRvZ2dsZS5oYXMoZS50YXJnZXQpLmxlbmd0aCA9PT0gMCAmJiAhJGNvbnRlbnRELmlzKGUudGFyZ2V0KSAmJiAkY29udGVudEQuaGFzKGUudGFyZ2V0KS5sZW5ndGggPT09IDAgJiYgTmlvQXBwLldpbi53aWR0aCA8IHRvZ2dsZUJyZWFrKSB7CiAgICAgICAgTmlvQXBwLlRvZ2dsZS5yZW1vdmVkKCR0b2dnbGUuZGF0YSgndGFyZ2V0JyksIGF0dHIpOwogICAgICB9CiAgICB9KTsKICAgICR3aW4ub24oJ3Jlc2l6ZScsIGZ1bmN0aW9uICgpIHsKICAgICAgaWYgKE5pb0FwcC5XaW4ud2lkdGggPCBfYnJlYWsueGwgfHwgTmlvQXBwLldpbi53aWR0aCA8IHRvZ2dsZUJyZWFrKSB7CiAgICAgICAgTmlvQXBwLlRvZ2dsZS5yZW1vdmVkKCR0b2dnbGUuZGF0YSgndGFyZ2V0JyksIGF0dHIpOwogICAgICB9CiAgICB9KTsKICB9OyAvLyBBbmltYXRlIEZvcm1TZWFyY2ggQHYxLjAKCgogIE5pb0FwcC5BbmkuZm9ybVNlYXJjaCA9IGZ1bmN0aW9uIChlbG0sIG9wdCkgewogICAgdmFyIGRlZiA9IHsKICAgICAgYWN0aXZlOiAnYWN0aXZlJywKICAgICAgdGltZW91dDogNDAwLAogICAgICB0YXJnZXQ6ICdbZGF0YS1zZWFyY2hdJwogICAgfSwKICAgICAgICBhdHRyID0gb3B0ID8gZXh0ZW5kKGRlZiwgb3B0KSA6IGRlZjsKICAgIHZhciAkZWxlbSA9ICQoZWxtKSwKICAgICAgICAkdGFyZ2V0ID0gJChhdHRyLnRhcmdldCk7CgogICAgaWYgKCRlbGVtLmV4aXN0cygpKSB7CiAgICAgICRlbGVtLm9uKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7CiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgIHZhciAkc2VsZiA9ICQodGhpcyksCiAgICAgICAgICAgIHRoZV90YXJnZXQgPSAkc2VsZi5kYXRhKCd0YXJnZXQnKSwKICAgICAgICAgICAgJHNlbGZfc3QgPSAkKCdbZGF0YS1zZWFyY2g9JyArIHRoZV90YXJnZXQgKyAnXScpLAogICAgICAgICAgICAkc2VsZl90ZyA9ICQoJ1tkYXRhLXRhcmdldD0nICsgdGhlX3RhcmdldCArICddJyk7CgogICAgICAgIGlmICghJHNlbGZfc3QuaGFzQ2xhc3MoYXR0ci5hY3RpdmUpKSB7CiAgICAgICAgICAkc2VsZl90Zy5hZGQoJHNlbGZfc3QpLmFkZENsYXNzKGF0dHIuYWN0aXZlKTsKICAgICAgICAgICRzZWxmX3N0LmZpbmQoJ2lucHV0JykuZm9jdXMoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgJHNlbGZfdGcuYWRkKCRzZWxmX3N0KS5yZW1vdmVDbGFzcyhhdHRyLmFjdGl2ZSk7CiAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgJHNlbGZfc3QuZmluZCgnaW5wdXQnKS52YWwoJycpOwogICAgICAgICAgfSwgYXR0ci50aW1lb3V0KTsKICAgICAgICB9CiAgICAgIH0pOwogICAgICAkZG9jLm9uKHsKICAgICAgICBrZXl1cDogZnVuY3Rpb24ga2V5dXAoZSkgewogICAgICAgICAgaWYgKGUua2V5ID09PSAiRXNjYXBlIikgewogICAgICAgICAgICAkZWxlbS5hZGQoJHRhcmdldCkucmVtb3ZlQ2xhc3MoYXR0ci5hY3RpdmUpOwogICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgbW91c2V1cDogZnVuY3Rpb24gbW91c2V1cChlKSB7CiAgICAgICAgICBpZiAoISR0YXJnZXQuZmluZCgnaW5wdXQnKS52YWwoKSAmJiAhJHRhcmdldC5pcyhlLnRhcmdldCkgJiYgJHRhcmdldC5oYXMoZS50YXJnZXQpLmxlbmd0aCA9PT0gMCAmJiAhJGVsZW0uaXMoZS50YXJnZXQpICYmICRlbGVtLmhhcyhlLnRhcmdldCkubGVuZ3RoID09PSAwKSB7CiAgICAgICAgICAgICRlbGVtLmFkZCgkdGFyZ2V0KS5yZW1vdmVDbGFzcyhhdHRyLmFjdGl2ZSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9KTsKICAgIH0KICB9OyAvLyBBbmltYXRlIEZvcm1FbGVtZW50IEB2MS4wCgoKICBOaW9BcHAuQW5pLmZvcm1FbG0gPSBmdW5jdGlvbiAoZWxtLCBvcHQpIHsKICAgIHZhciBkZWYgPSB7CiAgICAgIGZvY3VzOiAnZm9jdXNlZCcKICAgIH0sCiAgICAgICAgYXR0ciA9IG9wdCA/IGV4dGVuZChkZWYsIG9wdCkgOiBkZWY7CgogICAgaWYgKCQoZWxtKS5leGlzdHMoKSkgewogICAgICAkKGVsbSkuZWFjaChmdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyICRzZWxmID0gJCh0aGlzKTsKCiAgICAgICAgaWYgKCRzZWxmLnZhbCgpKSB7CiAgICAgICAgICAkc2VsZi5wYXJlbnQoKS5hZGRDbGFzcyhhdHRyLmZvY3VzKTsKICAgICAgICB9CgogICAgICAgICRzZWxmLm9uKHsKICAgICAgICAgIGZvY3VzOiBmdW5jdGlvbiBmb2N1cygpIHsKICAgICAgICAgICAgJHNlbGYucGFyZW50KCkuYWRkQ2xhc3MoYXR0ci5mb2N1cyk7CiAgICAgICAgICB9LAogICAgICAgICAgYmx1cjogZnVuY3Rpb24gYmx1cigpIHsKICAgICAgICAgICAgaWYgKCEkc2VsZi52YWwoKSkgewogICAgICAgICAgICAgICRzZWxmLnBhcmVudCgpLnJlbW92ZUNsYXNzKGF0dHIuZm9jdXMpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgIH0pOwogICAgfQogIH07IC8vIEZvcm0gVmFsaWRhdGUgQHYxLjAKCgogIE5pb0FwcC5WYWxpZGF0ZSA9IGZ1bmN0aW9uIChlbG0sIG9wdCkgewogICAgaWYgKCQoZWxtKS5leGlzdHMoKSkgewogICAgICAkKGVsbSkuZWFjaChmdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIGRlZiA9IHsKICAgICAgICAgIGVycm9yRWxlbWVudDogInNwYW4iCiAgICAgICAgfSwKICAgICAgICAgICAgYXR0ciA9IG9wdCA/IGV4dGVuZChkZWYsIG9wdCkgOiBkZWY7CiAgICAgICAgJCh0aGlzKS52YWxpZGF0ZShhdHRyKTsKICAgICAgfSk7CiAgICB9CiAgfTsKCiAgTmlvQXBwLlZhbGlkYXRlLmluaXQgPSBmdW5jdGlvbiAoKSB7CiAgICBOaW9BcHAuVmFsaWRhdGUoJy5mb3JtLXZhbGlkYXRlJywgewogICAgICBlcnJvckVsZW1lbnQ6ICJzcGFuIiwKICAgICAgZXJyb3JDbGFzczogImludmFsaWQiLAogICAgICBlcnJvclBsYWNlbWVudDogZnVuY3Rpb24gZXJyb3JQbGFjZW1lbnQoZXJyb3IsIGVsZW1lbnQpIHsKICAgICAgICBlcnJvci5hcHBlbmRUbyhlbGVtZW50LnBhcmVudCgpKTsKICAgICAgfQogICAgfSk7CiAgfTsgLy8gRHJvcHpvbmUgQHYxLjEKCgogIE5pb0FwcC5Ecm9wem9uZSA9IGZ1bmN0aW9uIChlbG0sIG9wdCkgewogICAgaWYgKCQoZWxtKS5leGlzdHMoKSkgewogICAgICAkKGVsbSkuZWFjaChmdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIG1heEZpbGVzID0gJChlbG0pLmRhdGEoJ21heC1maWxlcycpLAogICAgICAgICAgICBtYXhGaWxlcyA9IG1heEZpbGVzID8gbWF4RmlsZXMgOiBudWxsOwogICAgICAgIHZhciBtYXhGaWxlU2l6ZSA9ICQoZWxtKS5kYXRhKCdtYXgtZmlsZS1zaXplJyksCiAgICAgICAgICAgIG1heEZpbGVTaXplID0gbWF4RmlsZVNpemUgPyBtYXhGaWxlU2l6ZSA6IDI1NjsKICAgICAgICB2YXIgYWNjZXB0ZWRGaWxlcyA9ICQoZWxtKS5kYXRhKCdhY2NlcHRlZC1maWxlcycpLAogICAgICAgICAgICBhY2NlcHRlZEZpbGVzID0gYWNjZXB0ZWRGaWxlcyA/IGFjY2VwdGVkRmlsZXMgOiBudWxsOwogICAgICAgIHZhciBkZWYgPSB7CiAgICAgICAgICBhdXRvRGlzY292ZXI6IGZhbHNlLAogICAgICAgICAgbWF4RmlsZXM6IG1heEZpbGVzLAogICAgICAgICAgbWF4RmlsZXNpemU6IG1heEZpbGVTaXplLAogICAgICAgICAgYWNjZXB0ZWRGaWxlczogYWNjZXB0ZWRGaWxlcwogICAgICAgIH0sCiAgICAgICAgICAgIGF0dHIgPSBvcHQgPyBleHRlbmQoZGVmLCBvcHQpIDogZGVmOwogICAgICAgICQodGhpcykuYWRkQ2xhc3MoJ2Ryb3B6b25lJykuZHJvcHpvbmUoYXR0cik7CiAgICAgIH0pOwogICAgfQogIH07IC8vIERyb3B6b25lIEluaXQgQHYxLjAKCgogIE5pb0FwcC5Ecm9wem9uZS5pbml0ID0gZnVuY3Rpb24gKCkgewogICAgTmlvQXBwLkRyb3B6b25lKCcudXBsb2FkLXpvbmUnLCB7CiAgICAgIHVybDogIi9pbWFnZXMiCiAgICB9KTsKICB9OyAvLyBXaXphcmQgQHYxLjAKCgogIE5pb0FwcC5XaXphcmQgPSBmdW5jdGlvbiAoKSB7CiAgICB2YXIgJHdpemFyZCA9ICQoIi5uay13aXphcmQiKS5zaG93KCk7CiAgICAkd2l6YXJkLnN0ZXBzKHsKICAgICAgaGVhZGVyVGFnOiAiLm5rLXdpemFyZC1oZWFkIiwKICAgICAgYm9keVRhZzogIi5uay13aXphcmQtY29udGVudCIsCiAgICAgIGxhYmVsczogewogICAgICAgIGZpbmlzaDogIlN1Ym1pdCIsCiAgICAgICAgbmV4dDogIk5leHQiLAogICAgICAgIHByZXZpb3VzOiAiUHJldiIsCiAgICAgICAgbG9hZGluZzogIkxvYWRpbmcgLi4uIgogICAgICB9LAogICAgICBvblN0ZXBDaGFuZ2luZzogZnVuY3Rpb24gb25TdGVwQ2hhbmdpbmcoZXZlbnQsIGN1cnJlbnRJbmRleCwgbmV3SW5kZXgpIHsKICAgICAgICAvLyBBbGx3YXlzIGFsbG93IHByZXZpb3VzIGFjdGlvbiBldmVuIGlmIHRoZSBjdXJyZW50IGZvcm0gaXMgbm90IHZhbGlkIQogICAgICAgIGlmIChjdXJyZW50SW5kZXggPiBuZXdJbmRleCkgewogICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfSAvLyBOZWVkZWQgaW4gc29tZSBjYXNlcyBpZiB0aGUgdXNlciB3ZW50IGJhY2sgKGNsZWFuIHVwKQoKCiAgICAgICAgaWYgKGN1cnJlbnRJbmRleCA8IG5ld0luZGV4KSB7CiAgICAgICAgICAvLyBUbyByZW1vdmUgZXJyb3Igc3R5bGVzCiAgICAgICAgICAkd2l6YXJkLmZpbmQoIi5ib2R5OmVxKCIgKyBuZXdJbmRleCArICIpIGxhYmVsLmVycm9yIikucmVtb3ZlKCk7CiAgICAgICAgICAkd2l6YXJkLmZpbmQoIi5ib2R5OmVxKCIgKyBuZXdJbmRleCArICIpIC5lcnJvciIpLnJlbW92ZUNsYXNzKCJlcnJvciIpOwogICAgICAgIH0KCiAgICAgICAgJHdpemFyZC52YWxpZGF0ZSgpLnNldHRpbmdzLmlnbm9yZSA9ICI6ZGlzYWJsZWQsOmhpZGRlbiI7CiAgICAgICAgcmV0dXJuICR3aXphcmQudmFsaWQoKTsKICAgICAgfSwKICAgICAgb25GaW5pc2hpbmc6IGZ1bmN0aW9uIG9uRmluaXNoaW5nKGV2ZW50LCBjdXJyZW50SW5kZXgpIHsKICAgICAgICAkd2l6YXJkLnZhbGlkYXRlKCkuc2V0dGluZ3MuaWdub3JlID0gIjpkaXNhYmxlZCI7CiAgICAgICAgcmV0dXJuICR3aXphcmQudmFsaWQoKTsKICAgICAgfSwKICAgICAgb25GaW5pc2hlZDogZnVuY3Rpb24gb25GaW5pc2hlZChldmVudCwgY3VycmVudEluZGV4KSB7CiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAiIyI7CiAgICAgIH0KICAgIH0pLnZhbGlkYXRlKHsKICAgICAgZXJyb3JFbGVtZW50OiAic3BhbiIsCiAgICAgIGVycm9yQ2xhc3M6ICJpbnZhbGlkIiwKICAgICAgZXJyb3JQbGFjZW1lbnQ6IGZ1bmN0aW9uIGVycm9yUGxhY2VtZW50KGVycm9yLCBlbGVtZW50KSB7CiAgICAgICAgZXJyb3IuYXBwZW5kVG8oZWxlbWVudC5wYXJlbnQoKSk7CiAgICAgIH0KICAgIH0pOwogIH07IC8vIERhdGFUYWJsZSBAMS4xCgoKICBOaW9BcHAuRGF0YVRhYmxlID0gZnVuY3Rpb24gKGVsbSwgb3B0KSB7CiAgICBpZiAoJChlbG0pLmV4aXN0cygpKSB7CiAgICAgICQoZWxtKS5lYWNoKGZ1bmN0aW9uICgpIHsKICAgICAgICB2YXIgYXV0b19yZXNwb25zaXZlID0gJCh0aGlzKS5kYXRhKCdhdXRvLXJlc3BvbnNpdmUnKTsKICAgICAgICB2YXIgZG9tX25vcm1hbCA9ICc8InJvdyBqdXN0aWZ5LWJldHdlZW4gZy0yIjwiY29sLTcgY29sLXNtLTYgdGV4dC1sZWZ0ImY+PCJjb2wtNSBjb2wtc20tNiB0ZXh0LXJpZ2h0IjwiZGF0YXRhYmxlLWZpbHRlciJsPj4+PCJkYXRhdGFibGUtd3JhcCBteS0zInQ+PCJyb3cgYWxpZ24taXRlbXMtY2VudGVyIjwiY29sLTcgY29sLXNtLTEyIGNvbC1tZC05InA+PCJjb2wtNSBjb2wtc20tMTIgY29sLW1kLTMgdGV4dC1sZWZ0IHRleHQtbWQtcmlnaHQiaT4+JzsKICAgICAgICB2YXIgZG9tX3NlcGFyYXRlID0gJzwicm93IGp1c3RpZnktYmV0d2VlbiBnLTIiPCJjb2wtNyBjb2wtc20tNiB0ZXh0LWxlZnQiZj48ImNvbC01IGNvbC1zbS02IHRleHQtcmlnaHQiPCJkYXRhdGFibGUtZmlsdGVyImw+Pj48Im15LTMidD48InJvdyBhbGlnbi1pdGVtcy1jZW50ZXIiPCJjb2wtNyBjb2wtc20tMTIgY29sLW1kLTkicD48ImNvbC01IGNvbC1zbS0xMiBjb2wtbWQtMyB0ZXh0LWxlZnQgdGV4dC1tZC1yaWdodCJpPj4nOwogICAgICAgIHZhciBkb20gPSAkKHRoaXMpLmhhc0NsYXNzKCdpcy1zZXBhcmF0ZScpID8gZG9tX3NlcGFyYXRlIDogZG9tX25vcm1hbDsKICAgICAgICB2YXIgZGVmID0gewogICAgICAgICAgcmVzcG9uc2l2ZTogdHJ1ZSwKICAgICAgICAgIGF1dG9XaWR0aDogZmFsc2UsCiAgICAgICAgICBkb206IGRvbSwKICAgICAgICAgIGxhbmd1YWdlOiB7CiAgICAgICAgICAgIHNlYXJjaDogIiIsCiAgICAgICAgICAgIHNlYXJjaFBsYWNlaG9sZGVyOiAiVHlwZSBpbiB0byBTZWFyY2giLAogICAgICAgICAgICBsZW5ndGhNZW51OiAiPHNwYW4gY2xhc3M9J2Qtbm9uZSBkLXNtLWlubGluZS1ibG9jayc+U2hvdzwvc3Bhbj48ZGl2IGNsYXNzPSdmb3JtLWNvbnRyb2wtc2VsZWN0Jz4gX01FTlVfIDwvZGl2PiIsCiAgICAgICAgICAgIGluZm86ICJfU1RBUlRfIC1fRU5EXyBvZiBfVE9UQUxfIiwKICAgICAgICAgICAgaW5mb0VtcHR5OiAiTm8gcmVjb3JkcyBmb3VuZCIsCiAgICAgICAgICAgIGluZm9GaWx0ZXJlZDogIiggVG90YWwgX01BWF8gICkiLAogICAgICAgICAgICBwYWdpbmF0ZTogewogICAgICAgICAgICAgICJmaXJzdCI6ICJGaXJzdCIsCiAgICAgICAgICAgICAgImxhc3QiOiAiTGFzdCIsCiAgICAgICAgICAgICAgIm5leHQiOiAiTmV4dCIsCiAgICAgICAgICAgICAgInByZXZpb3VzIjogIlByZXYiCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICAgICBhdHRyID0gb3B0ID8gZXh0ZW5kKGRlZiwgb3B0KSA6IGRlZjsKICAgICAgICBhdHRyID0gYXV0b19yZXNwb25zaXZlID09PSBmYWxzZSA/IGV4dGVuZChhdHRyLCB7CiAgICAgICAgICByZXNwb25zaXZlOiBmYWxzZQogICAgICAgIH0pIDogYXR0cjsKICAgICAgICAkKHRoaXMpLkRhdGFUYWJsZShhdHRyKTsKICAgICAgfSk7CiAgICB9CiAgfTsgLy8gRGF0YVRhYmxlIEluaXQgQHYxLjAKCgogIE5pb0FwcC5EYXRhVGFibGUuaW5pdCA9IGZ1bmN0aW9uICgpIHsKICAgIE5pb0FwcC5EYXRhVGFibGUoJy5kYXRhdGFibGUtaW5pdCcsIHsKICAgICAgcmVzcG9uc2l2ZTogewogICAgICAgIGRldGFpbHM6IHRydWUKICAgICAgfQogICAgfSk7CiAgICAkLmZuLkRhdGFUYWJsZS5leHQucGFnZXIubnVtYmVyc19sZW5ndGggPSA3OwogIH07IC8vIEJvb3RTdHJhcCBFeHRlbmRlZAoKCiAgTmlvQXBwLkJTLmRkZml4ID0gZnVuY3Rpb24gKGVsbSwgZXhjKSB7CiAgICB2YXIgZGQgPSBlbG0gPyBlbG0gOiAnLmRyb3Bkb3duLW1lbnUnLAogICAgICAgIGV4ID0gZXhjID8gZXhjIDogJ2E6bm90KC5jbGlja2FibGUpLCBidXR0b246bm90KC5jbGlja2FibGUpLCBhOm5vdCguY2xpY2thYmxlKSAqLCBidXR0b246bm90KC5jbGlja2FibGUpIConOwogICAgJChkZCkub24oJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHsKICAgICAgaWYgKCEkKGUudGFyZ2V0KS5pcyhleCkpIHsKICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgfSk7CgogICAgaWYgKE5pb0FwcC5TdGF0ZS5pc1JUTCkgewogICAgICB2YXIgJGRNZW51ID0gJCgnLmRyb3Bkb3duLW1lbnUnKTsKICAgICAgJGRNZW51LmVhY2goZnVuY3Rpb24gKCkgewogICAgICAgIHZhciAkc2VsZiA9ICQodGhpcyk7CgogICAgICAgIGlmICgkc2VsZi5oYXNDbGFzcygnZHJvcGRvd24tbWVudS1yaWdodCcpICYmICEkc2VsZi5oYXNDbGFzcygnZHJvcGRvd24tbWVudS1jZW50ZXInKSkgewogICAgICAgICAgJHNlbGYucHJldignW2RhdGEtdG9nZ2xlPSJkcm9wZG93biJdJykuZHJvcGRvd24oewogICAgICAgICAgICBwb3BwZXJDb25maWc6IHsKICAgICAgICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b20tc3RhcnQnCiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICAgIH0gZWxzZSBpZiAoISRzZWxmLmhhc0NsYXNzKCdkcm9wZG93bi1tZW51LXJpZ2h0JykgJiYgISRzZWxmLmhhc0NsYXNzKCdkcm9wZG93bi1tZW51LWNlbnRlcicpKSB7CiAgICAgICAgICAkc2VsZi5wcmV2KCdbZGF0YS10b2dnbGU9ImRyb3Bkb3duIl0nKS5kcm9wZG93bih7CiAgICAgICAgICAgIHBvcHBlckNvbmZpZzogewogICAgICAgICAgICAgIHBsYWNlbWVudDogJ2JvdHRvbS1lbmQnCiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgfSk7CiAgICB9CiAgfTsgLy8gQm9vdFN0cmFwIFNwZWNpZmljIFRhYiBPcGVuCgoKICBOaW9BcHAuQlMudGFiZml4ID0gZnVuY3Rpb24gKGVsbSkgewogICAgdmFyIHRhYiA9IGVsbSA/IGVsbSA6ICdbZGF0YS10b2dnbGU9Im1vZGFsIl0nOwogICAgJCh0YWIpLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgdmFyIF90aGlzID0gJCh0aGlzKSwKICAgICAgICAgIHRhcmdldCA9IF90aGlzLmRhdGEoJ3RhcmdldCcpLAogICAgICAgICAgdGFyZ2V0X2hyZWYgPSBfdGhpcy5hdHRyKCdocmVmJyksCiAgICAgICAgICB0Z190YWIgPSBfdGhpcy5kYXRhKCd0YWItdGFyZ2V0Jyk7CgogICAgICB2YXIgbW9kYWwgPSB0YXJnZXQgPyAkYm9keS5maW5kKHRhcmdldCkgOiAkYm9keS5maW5kKHRhcmdldF9ocmVmKTsKCiAgICAgIGlmICh0Z190YWIgJiYgdGdfdGFiICE9PSAnIycgJiYgbW9kYWwpIHsKICAgICAgICBtb2RhbC5maW5kKCdbaHJlZj0iJyArIHRnX3RhYiArICciXScpLnRhYignc2hvdycpOwogICAgICB9IGVsc2UgaWYgKG1vZGFsKSB7CiAgICAgICAgdmFyIHRhYmRlZiA9IG1vZGFsLmZpbmQoJy5uay1uYXYubmF2LXRhYnMnKTsKICAgICAgICB2YXIgbGluayA9ICQodGFiZGVmWzBdKS5maW5kKCdbZGF0YS10b2dnbGU9InRhYiJdJyk7CiAgICAgICAgJChsaW5rWzBdKS50YWIoJ3Nob3cnKTsKICAgICAgfQogICAgfSk7CiAgfTsgLy8gRGFyayBNb2RlIFN3aXRjaCBAc2luY2UgdjIuMAoKCiAgTmlvQXBwLk1vZGVTd2l0Y2ggPSBmdW5jdGlvbiAoKSB7CiAgICB2YXIgdG9nZ2xlID0gJCgnLmRhcmstc3dpdGNoJyk7CgogICAgaWYgKCRib2R5Lmhhc0NsYXNzKCdkYXJrLW1vZGUnKSkgewogICAgICB0b2dnbGUuYWRkQ2xhc3MoJ2FjdGl2ZScpOwogICAgfSBlbHNlIHsKICAgICAgdG9nZ2xlLnJlbW92ZUNsYXNzKCdhY3RpdmUnKTsKICAgIH0KCiAgICB0b2dnbGUub24oJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHsKICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAkKHRoaXMpLnRvZ2dsZUNsYXNzKCdhY3RpdmUnKTsKICAgICAgJGJvZHkudG9nZ2xlQ2xhc3MoJ2RhcmstbW9kZScpOwogICAgfSk7CiAgfTsgLy8gS25vYiBAdjEuMAoKCiAgTmlvQXBwLktub2IgPSBmdW5jdGlvbiAoZWxtLCBvcHQpIHsKICAgIGlmICgkKGVsbSkuZXhpc3RzKCkgJiYgdHlwZW9mICQuZm4ua25vYiA9PT0gJ2Z1bmN0aW9uJykgewogICAgICB2YXIgZGVmID0gewogICAgICAgIG1pbjogMAogICAgICB9LAogICAgICAgICAgYXR0ciA9IG9wdCA/IGV4dGVuZChkZWYsIG9wdCkgOiBkZWY7CiAgICAgICQoZWxtKS5lYWNoKGZ1bmN0aW9uICgpIHsKICAgICAgICAkKHRoaXMpLmtub2IoYXR0cik7CiAgICAgIH0pOwogICAgfQogIH07IC8vIEtub2IgSW5pdCBAdjEuMAoKCiAgTmlvQXBwLktub2IuaW5pdCA9IGZ1bmN0aW9uICgpIHsKICAgIHZhciBrbm9iID0gewogICAgICAiZGVmYXVsdCI6IHsKICAgICAgICByZWFkT25seTogdHJ1ZSwKICAgICAgICBsaW5lQ2FwOiAicm91bmQiCiAgICAgIH0sCiAgICAgIGhhbGY6IHsKICAgICAgICBhbmdsZU9mZnNldDogLTkwLAogICAgICAgIGFuZ2xlQXJjOiAxODAsCiAgICAgICAgcmVhZE9ubHk6IHRydWUsCiAgICAgICAgbGluZUNhcDogInJvdW5kIgogICAgICB9CiAgICB9OwogICAgTmlvQXBwLktub2IoJy5rbm9iJywga25vYlsiZGVmYXVsdCJdKTsKICAgIE5pb0FwcC5Lbm9iKCcua25vYi1oYWxmJywga25vYi5oYWxmKTsKICB9OyAvLyBSYW5nZSBAdjEuMC4xCgoKICBOaW9BcHAuUmFuZ2UgPSBmdW5jdGlvbiAoZWxtLCBvcHQpIHsKICAgIGlmICgkKGVsbSkuZXhpc3RzKCkgJiYgdHlwZW9mIG5vVWlTbGlkZXIgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICQoZWxtKS5lYWNoKGZ1bmN0aW9uICgpIHsKICAgICAgICB2YXIgJHNlbGYgPSAkKHRoaXMpLAogICAgICAgICAgICBzZWxmX2lkID0gJHNlbGYuYXR0cignaWQnKTsKICAgICAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc2VsZl9pZCk7CiAgICAgICAgdmFyIGRlZiA9IHsKICAgICAgICAgIHN0YXJ0OiBbMjVdLAogICAgICAgICAgY29ubmVjdDogJ2xvd2VyJywKICAgICAgICAgIGRpcmVjdGlvbjogTmlvQXBwLlN0YXRlLmlzUlRMID8gInJ0bCIgOiAibHRyIiwKICAgICAgICAgIHJhbmdlOiB7CiAgICAgICAgICAgICdtaW4nOiAwLAogICAgICAgICAgICAnbWF4JzogMTAwCiAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAgICAgYXR0ciA9IG9wdCA/IGV4dGVuZChkZWYsIG9wdCkgOiBkZWY7CiAgICAgICAgbm9VaVNsaWRlci5jcmVhdGUodGFyZ2V0LCBhdHRyKTsKICAgICAgfSk7CiAgICB9CiAgfTsgLy8gUmFuZ2UgSW5pdCBAdjEuMAoKCiAgTmlvQXBwLlJhbmdlLmluaXQgPSBmdW5jdGlvbiAoKSB7CiAgICBOaW9BcHAuUmFuZ2UoJy5mb3JtLXJhbmdlLXNsaWRlcicpOwogIH07CgogIE5pb0FwcC5TZWxlY3QyLmluaXQgPSBmdW5jdGlvbiAoKSB7CiAgICAvLyBOaW9BcHAuU2VsZWN0MignLnNlbGVjdCcpOwogICAgTmlvQXBwLlNlbGVjdDIoJy5mb3JtLXNlbGVjdCcpOwogIH07IC8vIFNsaWNrIFNsaWRlciBAdjEuMC4xCgoKICBOaW9BcHAuU2xpY2sgPSBmdW5jdGlvbiAoZWxtLCBvcHQpIHsKICAgIGlmICgkKGVsbSkuZXhpc3RzKCkgJiYgdHlwZW9mICQuZm4uc2xpY2sgPT09ICdmdW5jdGlvbicpIHsKICAgICAgJChlbG0pLmVhY2goZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBkZWYgPSB7CiAgICAgICAgICAncHJldkFycm93JzogJzxkaXYgY2xhc3M9InNsaWNrLWFycm93LXByZXYiPjxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKTsiIGNsYXNzPSJzbGljay1wcmV2Ij48ZW0gY2xhc3M9Imljb24gbmkgbmktY2hldnJvbi1sZWZ0Ij48L2VtPjwvYT48L2Rpdj4nLAogICAgICAgICAgJ25leHRBcnJvdyc6ICc8ZGl2IGNsYXNzPSJzbGljay1hcnJvdy1uZXh0Ij48YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCk7IiBjbGFzcz0ic2xpY2stbmV4dCI+PGVtIGNsYXNzPSJpY29uIG5pIG5pLWNoZXZyb24tcmlnaHQiPjwvZW0+PC9hPjwvZGl2PicsCiAgICAgICAgICBydGw6IE5pb0FwcC5TdGF0ZS5pc1JUTAogICAgICAgIH0sCiAgICAgICAgICAgIGF0dHIgPSBvcHQgPyBleHRlbmQoZGVmLCBvcHQpIDogZGVmOwogICAgICAgICQodGhpcykuc2xpY2soYXR0cik7CiAgICAgIH0pOwogICAgfQogIH07IC8vIFNsaWNrIEluaXQgQHYxLjAKCgogIE5pb0FwcC5TbGlkZXIuaW5pdCA9IGZ1bmN0aW9uICgpIHsKICAgIE5pb0FwcC5TbGljaygnLnNsaWRlci1pbml0Jyk7CiAgfTsgLy8gTnVtYmVyIFNwaW5uZXIgCgoKICBOaW9BcHAuTnVtYmVyU3Bpbm5lciA9IGZ1bmN0aW9uIChlbG0sIG9wdCkgewogICAgdmFyIHBsdXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbZGF0YS1udW1iZXI9J3BsdXMnXSIpOwogICAgdmFyIG1pbnVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiW2RhdGEtbnVtYmVyPSdtaW51cyddIik7CiAgICBwbHVzLmZvckVhY2goZnVuY3Rpb24gKGl0ZW0sIGluZGV4LCBhcnIpIHsKICAgICAgdmFyIHBhcmVudCA9IHBsdXNbaW5kZXhdLnBhcmVudE5vZGU7CiAgICAgIHBsdXNbaW5kZXhdLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBjaGlsZCA9IHBsdXNbaW5kZXhdLnBhcmVudE5vZGUuY2hpbGRyZW47CiAgICAgICAgY2hpbGQuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSwgaW5kZXgsIGFycikgewogICAgICAgICAgaWYgKGNoaWxkW2luZGV4XS5jbGFzc0xpc3QuY29udGFpbnMoIm51bWJlci1zcGlubmVyIikpIHsKICAgICAgICAgICAgdmFyIHZhbHVlID0gIWNoaWxkW2luZGV4XS52YWx1ZSA9PSAiIiA/IHBhcnNlSW50KGNoaWxkW2luZGV4XS52YWx1ZSkgOiAwOwogICAgICAgICAgICB2YXIgc3RlcCA9ICFjaGlsZFtpbmRleF0uc3RlcCA9PSAiIiA/IHBhcnNlSW50KGNoaWxkW2luZGV4XS5zdGVwKSA6IDE7CiAgICAgICAgICAgIHZhciBtYXggPSAhY2hpbGRbaW5kZXhdLm1heCA9PSAiIiA/IHBhcnNlSW50KGNoaWxkW2luZGV4XS5tYXgpIDogSW5maW5pdHk7CgogICAgICAgICAgICBpZiAobWF4ICsgMSA+IHZhbHVlICsgc3RlcCkgewogICAgICAgICAgICAgIGNoaWxkW2luZGV4XS52YWx1ZSA9IHZhbHVlICsgc3RlcDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBjaGlsZFtpbmRleF0udmFsdWUgPSB2YWx1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0pOwogICAgICB9KTsKICAgIH0pOwogICAgbWludXMuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSwgaW5kZXgsIGFycikgewogICAgICB2YXIgcGFyZW50ID0gbWludXNbaW5kZXhdLnBhcmVudE5vZGU7CiAgICAgIG1pbnVzW2luZGV4XS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uICgpIHsKICAgICAgICB2YXIgY2hpbGQgPSBtaW51c1tpbmRleF0ucGFyZW50Tm9kZS5jaGlsZHJlbjsKICAgICAgICBjaGlsZC5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtLCBpbmRleCwgYXJyKSB7CiAgICAgICAgICBpZiAoY2hpbGRbaW5kZXhdLmNsYXNzTGlzdC5jb250YWlucygibnVtYmVyLXNwaW5uZXIiKSkgewogICAgICAgICAgICB2YXIgdmFsdWUgPSAhY2hpbGRbaW5kZXhdLnZhbHVlID09ICIiID8gcGFyc2VJbnQoY2hpbGRbaW5kZXhdLnZhbHVlKSA6IDA7CiAgICAgICAgICAgIHZhciBzdGVwID0gIWNoaWxkW2luZGV4XS5zdGVwID09ICIiID8gcGFyc2VJbnQoY2hpbGRbaW5kZXhdLnN0ZXApIDogMTsKICAgICAgICAgICAgdmFyIG1pbiA9ICFjaGlsZFtpbmRleF0ubWluID09ICIiID8gcGFyc2VJbnQoY2hpbGRbaW5kZXhdLm1pbikgOiAwOwoKICAgICAgICAgICAgaWYgKG1pbiAtIDEgPCB2YWx1ZSAtIHN0ZXApIHsKICAgICAgICAgICAgICBjaGlsZFtpbmRleF0udmFsdWUgPSB2YWx1ZSAtIHN0ZXA7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgY2hpbGRbaW5kZXhdLnZhbHVlID0gdmFsdWU7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgfSk7CiAgICB9KTsKICB9OyAvLyBFeHRyYSBAdjEuMQoKCiAgTmlvQXBwLk90aGVySW5pdCA9IGZ1bmN0aW9uICgpIHsKICAgIE5pb0FwcC5DbGFzc0JvZHkoKTsKICAgIE5pb0FwcC5QYXNzU3dpdGNoKCk7CiAgICBOaW9BcHAuQ3VycmVudExpbmsoKTsKICAgIE5pb0FwcC5MaW5rT2ZmKCcuaXMtZGlzYWJsZScpOwogICAgTmlvQXBwLkNsYXNzTmF2TWVudSgpOwogICAgTmlvQXBwLlNldEhXKCdbZGF0YS1oZWlnaHRdJywgJ2hlaWdodCcpOwogICAgTmlvQXBwLlNldEhXKCdbZGF0YS13aWR0aF0nLCAnd2lkdGgnKTsKICAgIE5pb0FwcC5OdW1iZXJTcGlubmVyKCk7CiAgfTsgLy8gQW5pbWF0ZSBJbml0IEB2MS4wCgoKICBOaW9BcHAuQW5pLmluaXQgPSBmdW5jdGlvbiAoKSB7CiAgICBOaW9BcHAuQW5pLmZvcm1FbG0oJy5mb3JtLWNvbnRyb2wtb3V0bGluZWQnKTsKICAgIE5pb0FwcC5BbmkuZm9ybVNlYXJjaCgnLnRvZ2dsZS1zZWFyY2gnKTsKICB9OyAvLyBCb290c3RyYXBFeHRlbmQgSW5pdCBAdjEuMAoKCiAgTmlvQXBwLkJTLmluaXQgPSBmdW5jdGlvbiAoKSB7CiAgICBOaW9BcHAuQlMubWVudXRpcCgnYS5uay1tZW51LWxpbmsnKTsKICAgIE5pb0FwcC5CUy50b29sdGlwKCcubmstdG9vbHRpcCcpOwogICAgTmlvQXBwLkJTLnRvb2x0aXAoJy5idG4tdG9vbHRpcCcsIHsKICAgICAgcGxhY2VtZW50OiAndG9wJwogICAgfSk7CiAgICBOaW9BcHAuQlMudG9vbHRpcCgnW2RhdGEtdG9nZ2xlPSJ0b29sdGlwIl0nKTsKICAgIE5pb0FwcC5CUy50b29sdGlwKCcudGlwaW5mbywubmstbWVudS10b29sdGlwJywgewogICAgICBwbGFjZW1lbnQ6ICdyaWdodCcKICAgIH0pOwogICAgTmlvQXBwLkJTLnBvcG92ZXIoJ1tkYXRhLXRvZ2dsZT0icG9wb3ZlciJdJyk7CiAgICBOaW9BcHAuQlMucHJvZ3Jlc3MoJ1tkYXRhLXByb2dyZXNzXScpOwogICAgTmlvQXBwLkJTLmZpbGVpbnB1dCgnLmN1c3RvbS1maWxlLWlucHV0Jyk7CiAgICBOaW9BcHAuQlMubW9kYWxmaXgoKTsKICAgIE5pb0FwcC5CUy5kZGZpeCgpOwogICAgTmlvQXBwLkJTLnRhYmZpeCgpOwogIH07IC8vIFBpY2tlciBJbml0IEB2MS4wCgoKICBOaW9BcHAuUGlja2VyLmluaXQgPSBmdW5jdGlvbiAoKSB7CiAgICBOaW9BcHAuUGlja2VyLmRhdGUoJy5kYXRlLXBpY2tlcicpOwogICAgTmlvQXBwLlBpY2tlci5kb2IoJy5kYXRlLXBpY2tlci1hbHQnKTsKICAgIE5pb0FwcC5QaWNrZXIudGltZSgnLnRpbWUtcGlja2VyJyk7CiAgICBOaW9BcHAuUGlja2VyLmRhdGUoJy5kYXRlLXBpY2tlci1yYW5nZScsIHsKICAgICAgdG9kYXlIaWdobGlnaHQ6IGZhbHNlLAogICAgICBhdXRvY2xvc2U6IGZhbHNlCiAgICB9KTsKICB9OyAvLyBBZGRvbnMgQHYxCgoKICBOaW9BcHAuQWRkb25zLkluaXQgPSBmdW5jdGlvbiAoKSB7CiAgICBOaW9BcHAuS25vYi5pbml0KCk7CiAgICBOaW9BcHAuUmFuZ2UuaW5pdCgpOwogICAgTmlvQXBwLlNlbGVjdDIuaW5pdCgpOwogICAgTmlvQXBwLkRyb3B6b25lLmluaXQoKTsKICAgIE5pb0FwcC5TbGlkZXIuaW5pdCgpOwogICAgTmlvQXBwLkRhdGFUYWJsZS5pbml0KCk7CiAgfTsgLy8gVG9nZ2xlciBAdjEKCgogIE5pb0FwcC5UR0wuaW5pdCA9IGZ1bmN0aW9uICgpIHsKICAgIE5pb0FwcC5UR0wuY29udGVudCgnLnRvZ2dsZScpOwogICAgTmlvQXBwLlRHTC5leHBhbmQoJy50b2dnbGUtZXhwYW5kJyk7CiAgICBOaW9BcHAuVEdMLmV4cGFuZCgnLnRvZ2dsZS1vcHQnLCB7CiAgICAgIHRvZ2dsZTogZmFsc2UKICAgIH0pOwogICAgTmlvQXBwLlRHTC5zaG93bWVudSgnLm5rLW5hdi10b2dnbGUnKTsKICAgIE5pb0FwcC5UR0wuZGRtZW51KCcuJyArIF9tZW51ICsgJy10b2dnbGUnLCB7CiAgICAgIHNlbGY6IF9tZW51ICsgJy10b2dnbGUnLAogICAgICBjaGlsZDogX21lbnUgKyAnLXN1YicKICAgIH0pOwogIH07CgogIE5pb0FwcC5CUy5tb2RhbE9uSW5pdCA9IGZ1bmN0aW9uICgpIHsKICAgICQoJy5tb2RhbCcpLm9uKCdzaG93bi5icy5tb2RhbCcsIGZ1bmN0aW9uICgpIHsKICAgICAgTmlvQXBwLlNlbGVjdDIuaW5pdCgpOwogICAgICBOaW9BcHAuVmFsaWRhdGUuaW5pdCgpOwogICAgfSk7CiAgfTsgLy8gSW5pdGlhbCBieSBkZWZhdWx0CiAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KCgogIE5pb0FwcC5pbml0ID0gZnVuY3Rpb24gKCkgewogICAgTmlvQXBwLmNvbXMuZG9jUmVhZHkucHVzaChOaW9BcHAuT3RoZXJJbml0KTsKICAgIE5pb0FwcC5jb21zLmRvY1JlYWR5LnB1c2goTmlvQXBwLlByZXR0aWZ5KTsKICAgIE5pb0FwcC5jb21zLmRvY1JlYWR5LnB1c2goTmlvQXBwLkNvbG9yQkcpOwogICAgTmlvQXBwLmNvbXMuZG9jUmVhZHkucHVzaChOaW9BcHAuQ29sb3JUWFQpOwogICAgTmlvQXBwLmNvbXMuZG9jUmVhZHkucHVzaChOaW9BcHAuQ29waWVkKTsKICAgIE5pb0FwcC5jb21zLmRvY1JlYWR5LnB1c2goTmlvQXBwLkFuaS5pbml0KTsKICAgIE5pb0FwcC5jb21zLmRvY1JlYWR5LnB1c2goTmlvQXBwLlRHTC5pbml0KTsKICAgIE5pb0FwcC5jb21zLmRvY1JlYWR5LnB1c2goTmlvQXBwLkJTLmluaXQpOwogICAgTmlvQXBwLmNvbXMuZG9jUmVhZHkucHVzaChOaW9BcHAuVmFsaWRhdGUuaW5pdCk7CiAgICBOaW9BcHAuY29tcy5kb2NSZWFkeS5wdXNoKE5pb0FwcC5QaWNrZXIuaW5pdCk7CiAgICBOaW9BcHAuY29tcy5kb2NSZWFkeS5wdXNoKE5pb0FwcC5BZGRvbnMuSW5pdCk7CiAgICBOaW9BcHAuY29tcy5kb2NSZWFkeS5wdXNoKE5pb0FwcC5XaXphcmQpOwogICAgTmlvQXBwLmNvbXMud2luTG9hZC5wdXNoKE5pb0FwcC5Nb2RlU3dpdGNoKTsKICB9OwoKICBOaW9BcHAuaW5pdCgpOwogIHJldHVybiBOaW9BcHA7Cn0oTmlvQXBwLCBqUXVlcnkpOw=="}},"time_used":455,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":389,"receive":66,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"clear-vault.online/myaccount/js/jquery.min.js","fqdn":"clear-vault.online","domain":"clear-vault.online","tld":"online"},"ip":{"addr":"163.61.188.222","port":443,"asn":0,"as":"","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://clear-vault.online/","date":"2025-08-07T20:48:21.201Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.clear-vault.online","organization":""},"issuer":{"commonName":"R10","organization":"Let's Encrypt"},"validity":{"start":"Mon, 16 Jun 2025 11:19:04 GMT","end":"Sun, 14 Sep 2025 11:19:03 GMT"},"fingerprint":{"sha1":"B5:E4:FF:81:2F:18:5B:84:17:4F:FD:F3:B1:30:00:31:3C:9C:0B:6F","sha256":"D8:BC:E6:FB:32:84:D6:43:47:2F:20:BA:56:C3:6C:DA:94:89:5F:DD:A3:3B:02:B9:36:2B:50:1E:79:03:E9:D6"}}},"request":{"raw":"GET /myaccount/js/jquery.min.js HTTP/1.1\r\nHost: clear-vault.online\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.5\r\nAccept-Encoding: gzip, deflate, br\r\nDNT: 1\r\nConnection: keep-alive\r\nReferer: https://clear-vault.online/\r\nCookie: PHPSESSID=1f922d27e0c65bdcb87ee1a396055a92\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/3 200 OK\r\ncontent-type: text/javascript\r\nlast-modified: Thu, 11 May 2023 18:14:15 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 29485\r\ndate: Thu, 07 Aug 2025 20:48:21 GMT\r\nserver: LiteSpeed\r\nstrict-transport-security: max-age=16070400;\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]},{"name":"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":86659,"size_decoded":0,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with very long lines (32058)","md5":"c9f5aeeca3ad37bf2aa006139b935f0a","sha1":"1055018c28ab41087ef9ccefe411606893dabea2","sha256":"87083882cc6015984eb0411a99d3981817f5dc5c90ba24f0940420c5548d82de","sha512":"dcff2b5c2b8625d3593a7531ff4ddcd633939cc9f7acfeb79c18a9e6038fdaa99487960075502f159d44f902d965b0b5aed32b41bfa66a1dc07d85b5d5152b58","ssdeep":"1536:YNhEyjjTikEJO4edXXe9J578go6MWX2xkj8e4c4j2ll2AckaXEP6n15HZ+FhFcQ7:uxc2yjx4j2uX/kcQDU8Cu9","tlshash":"4483e6d9b2c67062977730b950bf410bb17a98dab44c8c60f158d9d47eb8a8d907bf2c","first_seen":"2023-03-07T01:02:00Z","last_seen":"2026-08-11T16:47:41.23025Z","times_seen":99376,"resource_available":true,"data":"LyohIGpRdWVyeSB2My4yLjEgfCAoYykgSlMgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzIHwganF1ZXJ5Lm9yZy9saWNlbnNlICovCiFmdW5jdGlvbihhLGIpeyJ1c2Ugc3RyaWN0Ijsib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSYmIm9iamVjdCI9PXR5cGVvZiBtb2R1bGUuZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz1hLmRvY3VtZW50P2IoYSwhMCk6ZnVuY3Rpb24oYSl7aWYoIWEuZG9jdW1lbnQpdGhyb3cgbmV3IEVycm9yKCJqUXVlcnkgcmVxdWlyZXMgYSB3aW5kb3cgd2l0aCBhIGRvY3VtZW50Iik7cmV0dXJuIGIoYSl9OmIoYSl9KCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp0aGlzLGZ1bmN0aW9uKGEsYil7InVzZSBzdHJpY3QiO3ZhciBjPVtdLGQ9YS5kb2N1bWVudCxlPU9iamVjdC5nZXRQcm90b3R5cGVPZixmPWMuc2xpY2UsZz1jLmNvbmNhdCxoPWMucHVzaCxpPWMuaW5kZXhPZixqPXt9LGs9ai50b1N0cmluZyxsPWouaGFzT3duUHJvcGVydHksbT1sLnRvU3RyaW5nLG49bS5jYWxsKE9iamVjdCksbz17fTtmdW5jdGlvbiBwKGEsYil7Yj1ifHxkO3ZhciBjPWIuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7Yy50ZXh0PWEsYi5oZWFkLmFwcGVuZENoaWxkKGMpLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYyl9dmFyIHE9IjMuMi4xIixyPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyByLmZuLmluaXQoYSxiKX0scz0vXltcc1x1RkVGRlx4QTBdK3xbXHNcdUZFRkZceEEwXSskL2csdD0vXi1tcy0vLHU9Ly0oW2Etel0pL2csdj1mdW5jdGlvbihhLGIpe3JldHVybiBiLnRvVXBwZXJDYXNlKCl9O3IuZm49ci5wcm90b3R5cGU9e2pxdWVyeTpxLGNvbnN0cnVjdG9yOnIsbGVuZ3RoOjAsdG9BcnJheTpmdW5jdGlvbigpe3JldHVybiBmLmNhbGwodGhpcyl9LGdldDpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YT9mLmNhbGwodGhpcyk6YTwwP3RoaXNbYSt0aGlzLmxlbmd0aF06dGhpc1thXX0scHVzaFN0YWNrOmZ1bmN0aW9uKGEpe3ZhciBiPXIubWVyZ2UodGhpcy5jb25zdHJ1Y3RvcigpLGEpO3JldHVybiBiLnByZXZPYmplY3Q9dGhpcyxifSxlYWNoOmZ1bmN0aW9uKGEpe3JldHVybiByLmVhY2godGhpcyxhKX0sbWFwOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnB1c2hTdGFjayhyLm1hcCh0aGlzLGZ1bmN0aW9uKGIsYyl7cmV0dXJuIGEuY2FsbChiLGMsYil9KSl9LHNsaWNlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGYuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0sZmlyc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgwKX0sbGFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKC0xKX0sZXE6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5sZW5ndGgsYz0rYSsoYTwwP2I6MCk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGM+PTAmJmM8Yj9bdGhpc1tjXV06W10pfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmV2T2JqZWN0fHx0aGlzLmNvbnN0cnVjdG9yKCl9LHB1c2g6aCxzb3J0OmMuc29ydCxzcGxpY2U6Yy5zcGxpY2V9LHIuZXh0ZW5kPXIuZm4uZXh0ZW5kPWZ1bmN0aW9uKCl7dmFyIGEsYixjLGQsZSxmLGc9YXJndW1lbnRzWzBdfHx7fSxoPTEsaT1hcmd1bWVudHMubGVuZ3RoLGo9ITE7Zm9yKCJib29sZWFuIj09dHlwZW9mIGcmJihqPWcsZz1hcmd1bWVudHNbaF18fHt9LGgrKyksIm9iamVjdCI9PXR5cGVvZiBnfHxyLmlzRnVuY3Rpb24oZyl8fChnPXt9KSxoPT09aSYmKGc9dGhpcyxoLS0pO2g8aTtoKyspaWYobnVsbCE9KGE9YXJndW1lbnRzW2hdKSlmb3IoYiBpbiBhKWM9Z1tiXSxkPWFbYl0sZyE9PWQmJihqJiZkJiYoci5pc1BsYWluT2JqZWN0KGQpfHwoZT1BcnJheS5pc0FycmF5KGQpKSk/KGU/KGU9ITEsZj1jJiZBcnJheS5pc0FycmF5KGMpP2M6W10pOmY9YyYmci5pc1BsYWluT2JqZWN0KGMpP2M6e30sZ1tiXT1yLmV4dGVuZChqLGYsZCkpOnZvaWQgMCE9PWQmJihnW2JdPWQpKTtyZXR1cm4gZ30sci5leHRlbmQoe2V4cGFuZG86ImpRdWVyeSIrKHErTWF0aC5yYW5kb20oKSkucmVwbGFjZSgvXEQvZywiIiksaXNSZWFkeTohMCxlcnJvcjpmdW5jdGlvbihhKXt0aHJvdyBuZXcgRXJyb3IoYSl9LG5vb3A6ZnVuY3Rpb24oKXt9LGlzRnVuY3Rpb246ZnVuY3Rpb24oYSl7cmV0dXJuImZ1bmN0aW9uIj09PXIudHlwZShhKX0saXNXaW5kb3c6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWEmJmE9PT1hLndpbmRvd30saXNOdW1lcmljOmZ1bmN0aW9uKGEpe3ZhciBiPXIudHlwZShhKTtyZXR1cm4oIm51bWJlciI9PT1ifHwic3RyaW5nIj09PWIpJiYhaXNOYU4oYS1wYXJzZUZsb2F0KGEpKX0saXNQbGFpbk9iamVjdDpmdW5jdGlvbihhKXt2YXIgYixjO3JldHVybiEoIWF8fCJbb2JqZWN0IE9iamVjdF0iIT09ay5jYWxsKGEpKSYmKCEoYj1lKGEpKXx8KGM9bC5jYWxsKGIsImNvbnN0cnVjdG9yIikmJmIuY29uc3RydWN0b3IsImZ1bmN0aW9uIj09dHlwZW9mIGMmJm0uY2FsbChjKT09PW4pKX0saXNFbXB0eU9iamVjdDpmdW5jdGlvbihhKXt2YXIgYjtmb3IoYiBpbiBhKXJldHVybiExO3JldHVybiEwfSx0eXBlOmZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1hP2ErIiI6Im9iamVjdCI9PXR5cGVvZiBhfHwiZnVuY3Rpb24iPT10eXBlb2YgYT9qW2suY2FsbChhKV18fCJvYmplY3QiOnR5cGVvZiBhfSxnbG9iYWxFdmFsOmZ1bmN0aW9uKGEpe3AoYSl9LGNhbWVsQ2FzZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKHQsIm1zLSIpLnJlcGxhY2UodSx2KX0sZWFjaDpmdW5jdGlvbihhLGIpe3ZhciBjLGQ9MDtpZih3KGEpKXtmb3IoYz1hLmxlbmd0aDtkPGM7ZCsrKWlmKGIuY2FsbChhW2RdLGQsYVtkXSk9PT0hMSlicmVha31lbHNlIGZvcihkIGluIGEpaWYoYi5jYWxsKGFbZF0sZCxhW2RdKT09PSExKWJyZWFrO3JldHVybiBhfSx0cmltOmZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1hPyIiOihhKyIiKS5yZXBsYWNlKHMsIiIpfSxtYWtlQXJyYXk6ZnVuY3Rpb24oYSxiKXt2YXIgYz1ifHxbXTtyZXR1cm4gbnVsbCE9YSYmKHcoT2JqZWN0KGEpKT9yLm1lcmdlKGMsInN0cmluZyI9PXR5cGVvZiBhP1thXTphKTpoLmNhbGwoYyxhKSksY30saW5BcnJheTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIG51bGw9PWI/LTE6aS5jYWxsKGIsYSxjKX0sbWVyZ2U6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9K2IubGVuZ3RoLGQ9MCxlPWEubGVuZ3RoO2Q8YztkKyspYVtlKytdPWJbZF07cmV0dXJuIGEubGVuZ3RoPWUsYX0sZ3JlcDpmdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkLGU9W10sZj0wLGc9YS5sZW5ndGgsaD0hYztmPGc7ZisrKWQ9IWIoYVtmXSxmKSxkIT09aCYmZS5wdXNoKGFbZl0pO3JldHVybiBlfSxtYXA6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZj0wLGg9W107aWYodyhhKSlmb3IoZD1hLmxlbmd0aDtmPGQ7ZisrKWU9YihhW2ZdLGYsYyksbnVsbCE9ZSYmaC5wdXNoKGUpO2Vsc2UgZm9yKGYgaW4gYSllPWIoYVtmXSxmLGMpLG51bGwhPWUmJmgucHVzaChlKTtyZXR1cm4gZy5hcHBseShbXSxoKX0sZ3VpZDoxLHByb3h5OmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlO2lmKCJzdHJpbmciPT10eXBlb2YgYiYmKGM9YVtiXSxiPWEsYT1jKSxyLmlzRnVuY3Rpb24oYSkpcmV0dXJuIGQ9Zi5jYWxsKGFyZ3VtZW50cywyKSxlPWZ1bmN0aW9uKCl7cmV0dXJuIGEuYXBwbHkoYnx8dGhpcyxkLmNvbmNhdChmLmNhbGwoYXJndW1lbnRzKSkpfSxlLmd1aWQ9YS5ndWlkPWEuZ3VpZHx8ci5ndWlkKyssZX0sbm93OkRhdGUubm93LHN1cHBvcnQ6b30pLCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJihyLmZuW1N5bWJvbC5pdGVyYXRvcl09Y1tTeW1ib2wuaXRlcmF0b3JdKSxyLmVhY2goIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJlZ0V4cCBPYmplY3QgRXJyb3IgU3ltYm9sIi5zcGxpdCgiICIpLGZ1bmN0aW9uKGEsYil7alsiW29iamVjdCAiK2IrIl0iXT1iLnRvTG93ZXJDYXNlKCl9KTtmdW5jdGlvbiB3KGEpe3ZhciBiPSEhYSYmImxlbmd0aCJpbiBhJiZhLmxlbmd0aCxjPXIudHlwZShhKTtyZXR1cm4iZnVuY3Rpb24iIT09YyYmIXIuaXNXaW5kb3coYSkmJigiYXJyYXkiPT09Y3x8MD09PWJ8fCJudW1iZXIiPT10eXBlb2YgYiYmYj4wJiZiLTEgaW4gYSl9dmFyIHg9ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwLHEscixzLHQsdT0ic2l6emxlIisxKm5ldyBEYXRlLHY9YS5kb2N1bWVudCx3PTAseD0wLHk9aGEoKSx6PWhhKCksQT1oYSgpLEI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT09PWImJihsPSEwKSwwfSxDPXt9Lmhhc093blByb3BlcnR5LEQ9W10sRT1ELnBvcCxGPUQucHVzaCxHPUQucHVzaCxIPUQuc2xpY2UsST1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0wLGQ9YS5sZW5ndGg7YzxkO2MrKylpZihhW2NdPT09YilyZXR1cm4gYztyZXR1cm4tMX0sSj0iY2hlY2tlZHxzZWxlY3RlZHxhc3luY3xhdXRvZm9jdXN8YXV0b3BsYXl8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGlzbWFwfGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWQiLEs9IltcXHgyMFxcdFxcclxcblxcZl0iLEw9Iig/OlxcXFwufFtcXHctXXxbXlwwLVxceGEwXSkrIixNPSJcXFsiK0srIiooIitMKyIpKD86IitLKyIqKFsqXiR8IX5dPz0pIitLKyIqKD86JygoPzpcXFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCJ8KCIrTCsiKSl8KSIrSysiKlxcXSIsTj0iOigiK0wrIikoPzpcXCgoKCcoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwiKXwoKD86XFxcXC58W15cXFxcKClbXFxdXXwiK00rIikqKXwuKilcXCl8KSIsTz1uZXcgUmVnRXhwKEsrIisiLCJnIiksUD1uZXcgUmVnRXhwKCJeIitLKyIrfCgoPzpefFteXFxcXF0pKD86XFxcXC4pKikiK0srIiskIiwiZyIpLFE9bmV3IFJlZ0V4cCgiXiIrSysiKiwiK0srIioiKSxSPW5ldyBSZWdFeHAoIl4iK0srIiooWz4rfl18IitLKyIpIitLKyIqIiksUz1uZXcgUmVnRXhwKCI9IitLKyIqKFteXFxdJ1wiXSo/KSIrSysiKlxcXSIsImciKSxUPW5ldyBSZWdFeHAoTiksVT1uZXcgUmVnRXhwKCJeIitMKyIkIiksVj17SUQ6bmV3IFJlZ0V4cCgiXiMoIitMKyIpIiksQ0xBU1M6bmV3IFJlZ0V4cCgiXlxcLigiK0wrIikiKSxUQUc6bmV3IFJlZ0V4cCgiXigiK0wrInxbKl0pIiksQVRUUjpuZXcgUmVnRXhwKCJeIitNKSxQU0VVRE86bmV3IFJlZ0V4cCgiXiIrTiksQ0hJTEQ6bmV3IFJlZ0V4cCgiXjoob25seXxmaXJzdHxsYXN0fG50aHxudGgtbGFzdCktKGNoaWxkfG9mLXR5cGUpKD86XFwoIitLKyIqKGV2ZW58b2RkfCgoWystXXwpKFxcZCopbnwpIitLKyIqKD86KFsrLV18KSIrSysiKihcXGQrKXwpKSIrSysiKlxcKXwpIiwiaSIpLGJvb2w6bmV3IFJlZ0V4cCgiXig/OiIrSisiKSQiLCJpIiksbmVlZHNDb250ZXh0Om5ldyBSZWdFeHAoIl4iK0srIipbPit+XXw6KGV2ZW58b2RkfGVxfGd0fGx0fG50aHxmaXJzdHxsYXN0KSg/OlxcKCIrSysiKigoPzotXFxkKT9cXGQqKSIrSysiKlxcKXwpKD89W14tXXwkKSIsImkiKX0sVz0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLFg9L15oXGQkL2ksWT0vXltee10rXHtccypcW25hdGl2ZSBcdy8sWj0vXig/OiMoW1x3LV0rKXwoXHcrKXxcLihbXHctXSspKSQvLCQ9L1srfl0vLF89bmV3IFJlZ0V4cCgiXFxcXChbXFxkYS1mXXsxLDZ9IitLKyI/fCgiK0srIil8LikiLCJpZyIpLGFhPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD0iMHgiK2ItNjU1MzY7cmV0dXJuIGQhPT1kfHxjP2I6ZDwwP1N0cmluZy5mcm9tQ2hhckNvZGUoZCs2NTUzNik6U3RyaW5nLmZyb21DaGFyQ29kZShkPj4xMHw1NTI5NiwxMDIzJmR8NTYzMjApfSxiYT0vKFtcMC1ceDFmXHg3Zl18Xi0/XGQpfF4tJHxbXlwwLVx4MWZceDdmLVx1RkZGRlx3LV0vZyxjYT1mdW5jdGlvbihhLGIpe3JldHVybiBiPyJcMCI9PT1hPyJcdWZmZmQiOmEuc2xpY2UoMCwtMSkrIlxcIithLmNoYXJDb2RlQXQoYS5sZW5ndGgtMSkudG9TdHJpbmcoMTYpKyIgIjoiXFwiK2F9LGRhPWZ1bmN0aW9uKCl7bSgpfSxlYT10YShmdW5jdGlvbihhKXtyZXR1cm4gYS5kaXNhYmxlZD09PSEwJiYoImZvcm0iaW4gYXx8ImxhYmVsImluIGEpfSx7ZGlyOiJwYXJlbnROb2RlIixuZXh0OiJsZWdlbmQifSk7dHJ5e0cuYXBwbHkoRD1ILmNhbGwodi5jaGlsZE5vZGVzKSx2LmNoaWxkTm9kZXMpLERbdi5jaGlsZE5vZGVzLmxlbmd0aF0ubm9kZVR5cGV9Y2F0Y2goZmEpe0c9e2FwcGx5OkQubGVuZ3RoP2Z1bmN0aW9uKGEsYil7Ri5hcHBseShhLEguY2FsbChiKSl9OmZ1bmN0aW9uKGEsYil7dmFyIGM9YS5sZW5ndGgsZD0wO3doaWxlKGFbYysrXT1iW2QrK10pO2EubGVuZ3RoPWMtMX19fWZ1bmN0aW9uIGdhKGEsYixkLGUpe3ZhciBmLGgsaixrLGwsbyxyLHM9YiYmYi5vd25lckRvY3VtZW50LHc9Yj9iLm5vZGVUeXBlOjk7aWYoZD1kfHxbXSwic3RyaW5nIiE9dHlwZW9mIGF8fCFhfHwxIT09dyYmOSE9PXcmJjExIT09dylyZXR1cm4gZDtpZighZSYmKChiP2Iub3duZXJEb2N1bWVudHx8Yjp2KSE9PW4mJm0oYiksYj1ifHxuLHApKXtpZigxMSE9PXcmJihsPVouZXhlYyhhKSkpaWYoZj1sWzFdKXtpZig5PT09dyl7aWYoIShqPWIuZ2V0RWxlbWVudEJ5SWQoZikpKXJldHVybiBkO2lmKGouaWQ9PT1mKXJldHVybiBkLnB1c2goaiksZH1lbHNlIGlmKHMmJihqPXMuZ2V0RWxlbWVudEJ5SWQoZikpJiZ0KGIsaikmJmouaWQ9PT1mKXJldHVybiBkLnB1c2goaiksZH1lbHNle2lmKGxbMl0pcmV0dXJuIEcuYXBwbHkoZCxiLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpKSxkO2lmKChmPWxbM10pJiZjLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSlyZXR1cm4gRy5hcHBseShkLGIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShmKSksZH1pZihjLnFzYSYmIUFbYSsiICJdJiYoIXF8fCFxLnRlc3QoYSkpKXtpZigxIT09dylzPWIscj1hO2Vsc2UgaWYoIm9iamVjdCIhPT1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpeyhrPWIuZ2V0QXR0cmlidXRlKCJpZCIpKT9rPWsucmVwbGFjZShiYSxjYSk6Yi5zZXRBdHRyaWJ1dGUoImlkIixrPXUpLG89ZyhhKSxoPW8ubGVuZ3RoO3doaWxlKGgtLSlvW2hdPSIjIitrKyIgIitzYShvW2hdKTtyPW8uam9pbigiLCIpLHM9JC50ZXN0KGEpJiZxYShiLnBhcmVudE5vZGUpfHxifWlmKHIpdHJ5e3JldHVybiBHLmFwcGx5KGQscy5xdWVyeVNlbGVjdG9yQWxsKHIpKSxkfWNhdGNoKHgpe31maW5hbGx5e2s9PT11JiZiLnJlbW92ZUF0dHJpYnV0ZSgiaWQiKX19fXJldHVybiBpKGEucmVwbGFjZShQLCIkMSIpLGIsZCxlKX1mdW5jdGlvbiBoYSgpe3ZhciBhPVtdO2Z1bmN0aW9uIGIoYyxlKXtyZXR1cm4gYS5wdXNoKGMrIiAiKT5kLmNhY2hlTGVuZ3RoJiZkZWxldGUgYlthLnNoaWZ0KCldLGJbYysiICJdPWV9cmV0dXJuIGJ9ZnVuY3Rpb24gaWEoYSl7cmV0dXJuIGFbdV09ITAsYX1mdW5jdGlvbiBqYShhKXt2YXIgYj1uLmNyZWF0ZUVsZW1lbnQoImZpZWxkc2V0Iik7dHJ5e3JldHVybiEhYShiKX1jYXRjaChjKXtyZXR1cm4hMX1maW5hbGx5e2IucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpLGI9bnVsbH19ZnVuY3Rpb24ga2EoYSxiKXt2YXIgYz1hLnNwbGl0KCJ8IiksZT1jLmxlbmd0aDt3aGlsZShlLS0pZC5hdHRySGFuZGxlW2NbZV1dPWJ9ZnVuY3Rpb24gbGEoYSxiKXt2YXIgYz1iJiZhLGQ9YyYmMT09PWEubm9kZVR5cGUmJjE9PT1iLm5vZGVUeXBlJiZhLnNvdXJjZUluZGV4LWIuc291cmNlSW5kZXg7aWYoZClyZXR1cm4gZDtpZihjKXdoaWxlKGM9Yy5uZXh0U2libGluZylpZihjPT09YilyZXR1cm4tMTtyZXR1cm4gYT8xOi0xfWZ1bmN0aW9uIG1hKGEpe3JldHVybiBmdW5jdGlvbihiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PWMmJmIudHlwZT09PWF9fWZ1bmN0aW9uIG5hKGEpe3JldHVybiBmdW5jdGlvbihiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuKCJpbnB1dCI9PT1jfHwiYnV0dG9uIj09PWMpJiZiLnR5cGU9PT1hfX1mdW5jdGlvbiBvYShhKXtyZXR1cm4gZnVuY3Rpb24oYil7cmV0dXJuImZvcm0iaW4gYj9iLnBhcmVudE5vZGUmJmIuZGlzYWJsZWQ9PT0hMT8ibGFiZWwiaW4gYj8ibGFiZWwiaW4gYi5wYXJlbnROb2RlP2IucGFyZW50Tm9kZS5kaXNhYmxlZD09PWE6Yi5kaXNhYmxlZD09PWE6Yi5pc0Rpc2FibGVkPT09YXx8Yi5pc0Rpc2FibGVkIT09IWEmJmVhKGIpPT09YTpiLmRpc2FibGVkPT09YToibGFiZWwiaW4gYiYmYi5kaXNhYmxlZD09PWF9fWZ1bmN0aW9uIHBhKGEpe3JldHVybiBpYShmdW5jdGlvbihiKXtyZXR1cm4gYj0rYixpYShmdW5jdGlvbihjLGQpe3ZhciBlLGY9YShbXSxjLmxlbmd0aCxiKSxnPWYubGVuZ3RoO3doaWxlKGctLSljW2U9ZltnXV0mJihjW2VdPSEoZFtlXT1jW2VdKSl9KX0pfWZ1bmN0aW9uIHFhKGEpe3JldHVybiBhJiYidW5kZWZpbmVkIiE9dHlwZW9mIGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUmJmF9Yz1nYS5zdXBwb3J0PXt9LGY9Z2EuaXNYTUw9ZnVuY3Rpb24oYSl7dmFyIGI9YSYmKGEub3duZXJEb2N1bWVudHx8YSkuZG9jdW1lbnRFbGVtZW50O3JldHVybiEhYiYmIkhUTUwiIT09Yi5ub2RlTmFtZX0sbT1nYS5zZXREb2N1bWVudD1mdW5jdGlvbihhKXt2YXIgYixlLGc9YT9hLm93bmVyRG9jdW1lbnR8fGE6djtyZXR1cm4gZyE9PW4mJjk9PT1nLm5vZGVUeXBlJiZnLmRvY3VtZW50RWxlbWVudD8obj1nLG89bi5kb2N1bWVudEVsZW1lbnQscD0hZihuKSx2IT09biYmKGU9bi5kZWZhdWx0VmlldykmJmUudG9wIT09ZSYmKGUuYWRkRXZlbnRMaXN0ZW5lcj9lLmFkZEV2ZW50TGlzdGVuZXIoInVubG9hZCIsZGEsITEpOmUuYXR0YWNoRXZlbnQmJmUuYXR0YWNoRXZlbnQoIm9udW5sb2FkIixkYSkpLGMuYXR0cmlidXRlcz1qYShmdW5jdGlvbihhKXtyZXR1cm4gYS5jbGFzc05hbWU9ImkiLCFhLmdldEF0dHJpYnV0ZSgiY2xhc3NOYW1lIil9KSxjLmdldEVsZW1lbnRzQnlUYWdOYW1lPWphKGZ1bmN0aW9uKGEpe3JldHVybiBhLmFwcGVuZENoaWxkKG4uY3JlYXRlQ29tbWVudCgiIikpLCFhLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikubGVuZ3RofSksYy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lPVkudGVzdChuLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpLGMuZ2V0QnlJZD1qYShmdW5jdGlvbihhKXtyZXR1cm4gby5hcHBlbmRDaGlsZChhKS5pZD11LCFuLmdldEVsZW1lbnRzQnlOYW1lfHwhbi5nZXRFbGVtZW50c0J5TmFtZSh1KS5sZW5ndGh9KSxjLmdldEJ5SWQ/KGQuZmlsdGVyLklEPWZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShfLGFhKTtyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuIGEuZ2V0QXR0cmlidXRlKCJpZCIpPT09Yn19LGQuZmluZC5JRD1mdW5jdGlvbihhLGIpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgYi5nZXRFbGVtZW50QnlJZCYmcCl7dmFyIGM9Yi5nZXRFbGVtZW50QnlJZChhKTtyZXR1cm4gYz9bY106W119fSk6KGQuZmlsdGVyLklEPWZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShfLGFhKTtyZXR1cm4gZnVuY3Rpb24oYSl7dmFyIGM9InVuZGVmaW5lZCIhPXR5cGVvZiBhLmdldEF0dHJpYnV0ZU5vZGUmJmEuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKTtyZXR1cm4gYyYmYy52YWx1ZT09PWJ9fSxkLmZpbmQuSUQ9ZnVuY3Rpb24oYSxiKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIGIuZ2V0RWxlbWVudEJ5SWQmJnApe3ZhciBjLGQsZSxmPWIuZ2V0RWxlbWVudEJ5SWQoYSk7aWYoZil7aWYoYz1mLmdldEF0dHJpYnV0ZU5vZGUoImlkIiksYyYmYy52YWx1ZT09PWEpcmV0dXJuW2ZdO2U9Yi5nZXRFbGVtZW50c0J5TmFtZShhKSxkPTA7d2hpbGUoZj1lW2QrK10paWYoYz1mLmdldEF0dHJpYnV0ZU5vZGUoImlkIiksYyYmYy52YWx1ZT09PWEpcmV0dXJuW2ZdfXJldHVybltdfX0pLGQuZmluZC5UQUc9Yy5nZXRFbGVtZW50c0J5VGFnTmFtZT9mdW5jdGlvbihhLGIpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgYi5nZXRFbGVtZW50c0J5VGFnTmFtZT9iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpOmMucXNhP2IucXVlcnlTZWxlY3RvckFsbChhKTp2b2lkIDB9OmZ1bmN0aW9uKGEsYil7dmFyIGMsZD1bXSxlPTAsZj1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpO2lmKCIqIj09PWEpe3doaWxlKGM9ZltlKytdKTE9PT1jLm5vZGVUeXBlJiZkLnB1c2goYyk7cmV0dXJuIGR9cmV0dXJuIGZ9LGQuZmluZC5DTEFTUz1jLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmZ1bmN0aW9uKGEsYil7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJnApcmV0dXJuIGIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShhKX0scj1bXSxxPVtdLChjLnFzYT1ZLnRlc3Qobi5xdWVyeVNlbGVjdG9yQWxsKSkmJihqYShmdW5jdGlvbihhKXtvLmFwcGVuZENoaWxkKGEpLmlubmVySFRNTD0iPGEgaWQ9JyIrdSsiJz48L2E+PHNlbGVjdCBpZD0nIit1KyItXHJcXCcgbXNhbGxvd2NhcHR1cmU9Jyc+PG9wdGlvbiBzZWxlY3RlZD0nJz48L29wdGlvbj48L3NlbGVjdD4iLGEucXVlcnlTZWxlY3RvckFsbCgiW21zYWxsb3djYXB0dXJlXj0nJ10iKS5sZW5ndGgmJnEucHVzaCgiWypeJF09IitLKyIqKD86Jyd8XCJcIikiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIltzZWxlY3RlZF0iKS5sZW5ndGh8fHEucHVzaCgiXFxbIitLKyIqKD86dmFsdWV8IitKKyIpIiksYS5xdWVyeVNlbGVjdG9yQWxsKCJbaWR+PSIrdSsiLV0iKS5sZW5ndGh8fHEucHVzaCgifj0iKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIjpjaGVja2VkIikubGVuZ3RofHxxLnB1c2goIjpjaGVja2VkIiksYS5xdWVyeVNlbGVjdG9yQWxsKCJhIyIrdSsiKyoiKS5sZW5ndGh8fHEucHVzaCgiLiMuK1srfl0iKX0pLGphKGZ1bmN0aW9uKGEpe2EuaW5uZXJIVE1MPSI8YSBocmVmPScnIGRpc2FibGVkPSdkaXNhYmxlZCc+PC9hPjxzZWxlY3QgZGlzYWJsZWQ9J2Rpc2FibGVkJz48b3B0aW9uLz48L3NlbGVjdD4iO3ZhciBiPW4uY3JlYXRlRWxlbWVudCgiaW5wdXQiKTtiLnNldEF0dHJpYnV0ZSgidHlwZSIsImhpZGRlbiIpLGEuYXBwZW5kQ2hpbGQoYikuc2V0QXR0cmlidXRlKCJuYW1lIiwiRCIpLGEucXVlcnlTZWxlY3RvckFsbCgiW25hbWU9ZF0iKS5sZW5ndGgmJnEucHVzaCgibmFtZSIrSysiKlsqXiR8IX5dPz0iKSwyIT09YS5xdWVyeVNlbGVjdG9yQWxsKCI6ZW5hYmxlZCIpLmxlbmd0aCYmcS5wdXNoKCI6ZW5hYmxlZCIsIjpkaXNhYmxlZCIpLG8uYXBwZW5kQ2hpbGQoYSkuZGlzYWJsZWQ9ITAsMiE9PWEucXVlcnlTZWxlY3RvckFsbCgiOmRpc2FibGVkIikubGVuZ3RoJiZxLnB1c2goIjplbmFibGVkIiwiOmRpc2FibGVkIiksYS5xdWVyeVNlbGVjdG9yQWxsKCIqLDp4IikscS5wdXNoKCIsLio6Iil9KSksKGMubWF0Y2hlc1NlbGVjdG9yPVkudGVzdChzPW8ubWF0Y2hlc3x8by53ZWJraXRNYXRjaGVzU2VsZWN0b3J8fG8ubW96TWF0Y2hlc1NlbGVjdG9yfHxvLm9NYXRjaGVzU2VsZWN0b3J8fG8ubXNNYXRjaGVzU2VsZWN0b3IpKSYmamEoZnVuY3Rpb24oYSl7Yy5kaXNjb25uZWN0ZWRNYXRjaD1zLmNhbGwoYSwiKiIpLHMuY2FsbChhLCJbcyE9JyddOngiKSxyLnB1c2goIiE9IixOKX0pLHE9cS5sZW5ndGgmJm5ldyBSZWdFeHAocS5qb2luKCJ8IikpLHI9ci5sZW5ndGgmJm5ldyBSZWdFeHAoci5qb2luKCJ8IikpLGI9WS50ZXN0KG8uY29tcGFyZURvY3VtZW50UG9zaXRpb24pLHQ9Ynx8WS50ZXN0KG8uY29udGFpbnMpP2Z1bmN0aW9uKGEsYil7dmFyIGM9OT09PWEubm9kZVR5cGU/YS5kb2N1bWVudEVsZW1lbnQ6YSxkPWImJmIucGFyZW50Tm9kZTtyZXR1cm4gYT09PWR8fCEoIWR8fDEhPT1kLm5vZGVUeXBlfHwhKGMuY29udGFpbnM/Yy5jb250YWlucyhkKTphLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uJiYxNiZhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGQpKSl9OmZ1bmN0aW9uKGEsYil7aWYoYil3aGlsZShiPWIucGFyZW50Tm9kZSlpZihiPT09YSlyZXR1cm4hMDtyZXR1cm4hMX0sQj1iP2Z1bmN0aW9uKGEsYil7aWYoYT09PWIpcmV0dXJuIGw9ITAsMDt2YXIgZD0hYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbi0hYi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbjtyZXR1cm4gZD9kOihkPShhLm93bmVyRG9jdW1lbnR8fGEpPT09KGIub3duZXJEb2N1bWVudHx8Yik/YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihiKToxLDEmZHx8IWMuc29ydERldGFjaGVkJiZiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGEpPT09ZD9hPT09bnx8YS5vd25lckRvY3VtZW50PT09diYmdCh2LGEpPy0xOmI9PT1ufHxiLm93bmVyRG9jdW1lbnQ9PT12JiZ0KHYsYik/MTprP0koayxhKS1JKGssYik6MDo0JmQ/LTE6MSl9OmZ1bmN0aW9uKGEsYil7aWYoYT09PWIpcmV0dXJuIGw9ITAsMDt2YXIgYyxkPTAsZT1hLnBhcmVudE5vZGUsZj1iLnBhcmVudE5vZGUsZz1bYV0saD1bYl07aWYoIWV8fCFmKXJldHVybiBhPT09bj8tMTpiPT09bj8xOmU/LTE6Zj8xOms/SShrLGEpLUkoayxiKTowO2lmKGU9PT1mKXJldHVybiBsYShhLGIpO2M9YTt3aGlsZShjPWMucGFyZW50Tm9kZSlnLnVuc2hpZnQoYyk7Yz1iO3doaWxlKGM9Yy5wYXJlbnROb2RlKWgudW5zaGlmdChjKTt3aGlsZShnW2RdPT09aFtkXSlkKys7cmV0dXJuIGQ/bGEoZ1tkXSxoW2RdKTpnW2RdPT09dj8tMTpoW2RdPT09dj8xOjB9LG4pOm59LGdhLm1hdGNoZXM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZ2EoYSxudWxsLG51bGwsYil9LGdhLm1hdGNoZXNTZWxlY3Rvcj1mdW5jdGlvbihhLGIpe2lmKChhLm93bmVyRG9jdW1lbnR8fGEpIT09biYmbShhKSxiPWIucmVwbGFjZShTLCI9JyQxJ10iKSxjLm1hdGNoZXNTZWxlY3RvciYmcCYmIUFbYisiICJdJiYoIXJ8fCFyLnRlc3QoYikpJiYoIXF8fCFxLnRlc3QoYikpKXRyeXt2YXIgZD1zLmNhbGwoYSxiKTtpZihkfHxjLmRpc2Nvbm5lY3RlZE1hdGNofHxhLmRvY3VtZW50JiYxMSE9PWEuZG9jdW1lbnQubm9kZVR5cGUpcmV0dXJuIGR9Y2F0Y2goZSl7fXJldHVybiBnYShiLG4sbnVsbCxbYV0pLmxlbmd0aD4wfSxnYS5jb250YWlucz1mdW5jdGlvbihhLGIpe3JldHVybihhLm93bmVyRG9jdW1lbnR8fGEpIT09biYmbShhKSx0KGEsYil9LGdhLmF0dHI9ZnVuY3Rpb24oYSxiKXsoYS5vd25lckRvY3VtZW50fHxhKSE9PW4mJm0oYSk7dmFyIGU9ZC5hdHRySGFuZGxlW2IudG9Mb3dlckNhc2UoKV0sZj1lJiZDLmNhbGwoZC5hdHRySGFuZGxlLGIudG9Mb3dlckNhc2UoKSk/ZShhLGIsIXApOnZvaWQgMDtyZXR1cm4gdm9pZCAwIT09Zj9mOmMuYXR0cmlidXRlc3x8IXA/YS5nZXRBdHRyaWJ1dGUoYik6KGY9YS5nZXRBdHRyaWJ1dGVOb2RlKGIpKSYmZi5zcGVjaWZpZWQ/Zi52YWx1ZTpudWxsfSxnYS5lc2NhcGU9ZnVuY3Rpb24oYSl7cmV0dXJuKGErIiIpLnJlcGxhY2UoYmEsY2EpfSxnYS5lcnJvcj1mdW5jdGlvbihhKXt0aHJvdyBuZXcgRXJyb3IoIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIrYSl9LGdhLnVuaXF1ZVNvcnQ9ZnVuY3Rpb24oYSl7dmFyIGIsZD1bXSxlPTAsZj0wO2lmKGw9IWMuZGV0ZWN0RHVwbGljYXRlcyxrPSFjLnNvcnRTdGFibGUmJmEuc2xpY2UoMCksYS5zb3J0KEIpLGwpe3doaWxlKGI9YVtmKytdKWI9PT1hW2ZdJiYoZT1kLnB1c2goZikpO3doaWxlKGUtLSlhLnNwbGljZShkW2VdLDEpfXJldHVybiBrPW51bGwsYX0sZT1nYS5nZXRUZXh0PWZ1bmN0aW9uKGEpe3ZhciBiLGM9IiIsZD0wLGY9YS5ub2RlVHlwZTtpZihmKXtpZigxPT09Znx8OT09PWZ8fDExPT09Zil7aWYoInN0cmluZyI9PXR5cGVvZiBhLnRleHRDb250ZW50KXJldHVybiBhLnRleHRDb250ZW50O2ZvcihhPWEuZmlyc3RDaGlsZDthO2E9YS5uZXh0U2libGluZyljKz1lKGEpfWVsc2UgaWYoMz09PWZ8fDQ9PT1mKXJldHVybiBhLm5vZGVWYWx1ZX1lbHNlIHdoaWxlKGI9YVtkKytdKWMrPWUoYik7cmV0dXJuIGN9LGQ9Z2Euc2VsZWN0b3JzPXtjYWNoZUxlbmd0aDo1MCxjcmVhdGVQc2V1ZG86aWEsbWF0Y2g6VixhdHRySGFuZGxlOnt9LGZpbmQ6e30scmVsYXRpdmU6eyI+Ijp7ZGlyOiJwYXJlbnROb2RlIixmaXJzdDohMH0sIiAiOntkaXI6InBhcmVudE5vZGUifSwiKyI6e2RpcjoicHJldmlvdXNTaWJsaW5nIixmaXJzdDohMH0sIn4iOntkaXI6InByZXZpb3VzU2libGluZyJ9fSxwcmVGaWx0ZXI6e0FUVFI6ZnVuY3Rpb24oYSl7cmV0dXJuIGFbMV09YVsxXS5yZXBsYWNlKF8sYWEpLGFbM109KGFbM118fGFbNF18fGFbNV18fCIiKS5yZXBsYWNlKF8sYWEpLCJ+PSI9PT1hWzJdJiYoYVszXT0iICIrYVszXSsiICIpLGEuc2xpY2UoMCw0KX0sQ0hJTEQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGFbMV09YVsxXS50b0xvd2VyQ2FzZSgpLCJudGgiPT09YVsxXS5zbGljZSgwLDMpPyhhWzNdfHxnYS5lcnJvcihhWzBdKSxhWzRdPSsoYVs0XT9hWzVdKyhhWzZdfHwxKToyKigiZXZlbiI9PT1hWzNdfHwib2RkIj09PWFbM10pKSxhWzVdPSsoYVs3XSthWzhdfHwib2RkIj09PWFbM10pKTphWzNdJiZnYS5lcnJvcihhWzBdKSxhfSxQU0VVRE86ZnVuY3Rpb24oYSl7dmFyIGIsYz0hYVs2XSYmYVsyXTtyZXR1cm4gVi5DSElMRC50ZXN0KGFbMF0pP251bGw6KGFbM10/YVsyXT1hWzRdfHxhWzVdfHwiIjpjJiZULnRlc3QoYykmJihiPWcoYywhMCkpJiYoYj1jLmluZGV4T2YoIikiLGMubGVuZ3RoLWIpLWMubGVuZ3RoKSYmKGFbMF09YVswXS5zbGljZSgwLGIpLGFbMl09Yy5zbGljZSgwLGIpKSxhLnNsaWNlKDAsMykpfX0sZmlsdGVyOntUQUc6ZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKF8sYWEpLnRvTG93ZXJDYXNlKCk7cmV0dXJuIioiPT09YT9mdW5jdGlvbigpe3JldHVybiEwfTpmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZSYmYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09Yn19LENMQVNTOmZ1bmN0aW9uKGEpe3ZhciBiPXlbYSsiICJdO3JldHVybiBifHwoYj1uZXcgUmVnRXhwKCIoXnwiK0srIikiK2ErIigiK0srInwkKSIpKSYmeShhLGZ1bmN0aW9uKGEpe3JldHVybiBiLnRlc3QoInN0cmluZyI9PXR5cGVvZiBhLmNsYXNzTmFtZSYmYS5jbGFzc05hbWV8fCJ1bmRlZmluZWQiIT10eXBlb2YgYS5nZXRBdHRyaWJ1dGUmJmEuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9KX0sQVRUUjpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGZ1bmN0aW9uKGQpe3ZhciBlPWdhLmF0dHIoZCxhKTtyZXR1cm4gbnVsbD09ZT8iIT0iPT09YjohYnx8KGUrPSIiLCI9Ij09PWI/ZT09PWM6IiE9Ij09PWI/ZSE9PWM6Il49Ij09PWI/YyYmMD09PWUuaW5kZXhPZihjKToiKj0iPT09Yj9jJiZlLmluZGV4T2YoYyk+LTE6IiQ9Ij09PWI/YyYmZS5zbGljZSgtYy5sZW5ndGgpPT09Yzoifj0iPT09Yj8oIiAiK2UucmVwbGFjZShPLCIgIikrIiAiKS5pbmRleE9mKGMpPi0xOiJ8PSI9PT1iJiYoZT09PWN8fGUuc2xpY2UoMCxjLmxlbmd0aCsxKT09PWMrIi0iKSl9fSxDSElMRDpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPSJudGgiIT09YS5zbGljZSgwLDMpLGc9Imxhc3QiIT09YS5zbGljZSgtNCksaD0ib2YtdHlwZSI9PT1iO3JldHVybiAxPT09ZCYmMD09PWU/ZnVuY3Rpb24oYSl7cmV0dXJuISFhLnBhcmVudE5vZGV9OmZ1bmN0aW9uKGIsYyxpKXt2YXIgaixrLGwsbSxuLG8scD1mIT09Zz8ibmV4dFNpYmxpbmciOiJwcmV2aW91c1NpYmxpbmciLHE9Yi5wYXJlbnROb2RlLHI9aCYmYi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLHM9IWkmJiFoLHQ9ITE7aWYocSl7aWYoZil7d2hpbGUocCl7bT1iO3doaWxlKG09bVtwXSlpZihoP20ubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXI6MT09PW0ubm9kZVR5cGUpcmV0dXJuITE7bz1wPSJvbmx5Ij09PWEmJiFvJiYibmV4dFNpYmxpbmcifXJldHVybiEwfWlmKG89W2c/cS5maXJzdENoaWxkOnEubGFzdENoaWxkXSxnJiZzKXttPXEsbD1tW3VdfHwobVt1XT17fSksaz1sW20udW5pcXVlSURdfHwobFttLnVuaXF1ZUlEXT17fSksaj1rW2FdfHxbXSxuPWpbMF09PT13JiZqWzFdLHQ9biYmalsyXSxtPW4mJnEuY2hpbGROb2Rlc1tuXTt3aGlsZShtPSsrbiYmbSYmbVtwXXx8KHQ9bj0wKXx8by5wb3AoKSlpZigxPT09bS5ub2RlVHlwZSYmKyt0JiZtPT09Yil7a1thXT1bdyxuLHRdO2JyZWFrfX1lbHNlIGlmKHMmJihtPWIsbD1tW3VdfHwobVt1XT17fSksaz1sW20udW5pcXVlSURdfHwobFttLnVuaXF1ZUlEXT17fSksaj1rW2FdfHxbXSxuPWpbMF09PT13JiZqWzFdLHQ9biksdD09PSExKXdoaWxlKG09KytuJiZtJiZtW3BdfHwodD1uPTApfHxvLnBvcCgpKWlmKChoP20ubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXI6MT09PW0ubm9kZVR5cGUpJiYrK3QmJihzJiYobD1tW3VdfHwobVt1XT17fSksaz1sW20udW5pcXVlSURdfHwobFttLnVuaXF1ZUlEXT17fSksa1thXT1bdyx0XSksbT09PWIpKWJyZWFrO3JldHVybiB0LT1lLHQ9PT1kfHx0JWQ9PT0wJiZ0L2Q+PTB9fX0sUFNFVURPOmZ1bmN0aW9uKGEsYil7dmFyIGMsZT1kLnBzZXVkb3NbYV18fGQuc2V0RmlsdGVyc1thLnRvTG93ZXJDYXNlKCldfHxnYS5lcnJvcigidW5zdXBwb3J0ZWQgcHNldWRvOiAiK2EpO3JldHVybiBlW3VdP2UoYik6ZS5sZW5ndGg+MT8oYz1bYSxhLCIiLGJdLGQuc2V0RmlsdGVycy5oYXNPd25Qcm9wZXJ0eShhLnRvTG93ZXJDYXNlKCkpP2lhKGZ1bmN0aW9uKGEsYyl7dmFyIGQsZj1lKGEsYiksZz1mLmxlbmd0aDt3aGlsZShnLS0pZD1JKGEsZltnXSksYVtkXT0hKGNbZF09ZltnXSl9KTpmdW5jdGlvbihhKXtyZXR1cm4gZShhLDAsYyl9KTplfX0scHNldWRvczp7bm90OmlhKGZ1bmN0aW9uKGEpe3ZhciBiPVtdLGM9W10sZD1oKGEucmVwbGFjZShQLCIkMSIpKTtyZXR1cm4gZFt1XT9pYShmdW5jdGlvbihhLGIsYyxlKXt2YXIgZixnPWQoYSxudWxsLGUsW10pLGg9YS5sZW5ndGg7d2hpbGUoaC0tKShmPWdbaF0pJiYoYVtoXT0hKGJbaF09ZikpfSk6ZnVuY3Rpb24oYSxlLGYpe3JldHVybiBiWzBdPWEsZChiLG51bGwsZixjKSxiWzBdPW51bGwsIWMucG9wKCl9fSksaGFzOmlhKGZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihiKXtyZXR1cm4gZ2EoYSxiKS5sZW5ndGg+MH19KSxjb250YWluczppYShmdW5jdGlvbihhKXtyZXR1cm4gYT1hLnJlcGxhY2UoXyxhYSksZnVuY3Rpb24oYil7cmV0dXJuKGIudGV4dENvbnRlbnR8fGIuaW5uZXJUZXh0fHxlKGIpKS5pbmRleE9mKGEpPi0xfX0pLGxhbmc6aWEoZnVuY3Rpb24oYSl7cmV0dXJuIFUudGVzdChhfHwiIil8fGdhLmVycm9yKCJ1bnN1cHBvcnRlZCBsYW5nOiAiK2EpLGE9YS5yZXBsYWNlKF8sYWEpLnRvTG93ZXJDYXNlKCksZnVuY3Rpb24oYil7dmFyIGM7ZG8gaWYoYz1wP2IubGFuZzpiLmdldEF0dHJpYnV0ZSgieG1sOmxhbmciKXx8Yi5nZXRBdHRyaWJ1dGUoImxhbmciKSlyZXR1cm4gYz1jLnRvTG93ZXJDYXNlKCksYz09PWF8fDA9PT1jLmluZGV4T2YoYSsiLSIpO3doaWxlKChiPWIucGFyZW50Tm9kZSkmJjE9PT1iLm5vZGVUeXBlKTtyZXR1cm4hMX19KSx0YXJnZXQ6ZnVuY3Rpb24oYil7dmFyIGM9YS5sb2NhdGlvbiYmYS5sb2NhdGlvbi5oYXNoO3JldHVybiBjJiZjLnNsaWNlKDEpPT09Yi5pZH0scm9vdDpmdW5jdGlvbihhKXtyZXR1cm4gYT09PW99LGZvY3VzOmZ1bmN0aW9uKGEpe3JldHVybiBhPT09bi5hY3RpdmVFbGVtZW50JiYoIW4uaGFzRm9jdXN8fG4uaGFzRm9jdXMoKSkmJiEhKGEudHlwZXx8YS5ocmVmfHx+YS50YWJJbmRleCl9LGVuYWJsZWQ6b2EoITEpLGRpc2FibGVkOm9hKCEwKSxjaGVja2VkOmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09YiYmISFhLmNoZWNrZWR8fCJvcHRpb24iPT09YiYmISFhLnNlbGVjdGVkfSxzZWxlY3RlZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5wYXJlbnROb2RlJiZhLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCxhLnNlbGVjdGVkPT09ITB9LGVtcHR5OmZ1bmN0aW9uKGEpe2ZvcihhPWEuZmlyc3RDaGlsZDthO2E9YS5uZXh0U2libGluZylpZihhLm5vZGVUeXBlPDYpcmV0dXJuITE7cmV0dXJuITB9LHBhcmVudDpmdW5jdGlvbihhKXtyZXR1cm4hZC5wc2V1ZG9zLmVtcHR5KGEpfSxoZWFkZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIFgudGVzdChhLm5vZGVOYW1lKX0saW5wdXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIFcudGVzdChhLm5vZGVOYW1lKX0sYnV0dG9uOmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09YiYmImJ1dHRvbiI9PT1hLnR5cGV8fCJidXR0b24iPT09Yn0sdGV4dDpmdW5jdGlvbihhKXt2YXIgYjtyZXR1cm4iaW5wdXQiPT09YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiYidGV4dCI9PT1hLnR5cGUmJihudWxsPT0oYj1hLmdldEF0dHJpYnV0ZSgidHlwZSIpKXx8InRleHQiPT09Yi50b0xvd2VyQ2FzZSgpKX0sZmlyc3Q6cGEoZnVuY3Rpb24oKXtyZXR1cm5bMF19KSxsYXN0OnBhKGZ1bmN0aW9uKGEsYil7cmV0dXJuW2ItMV19KSxlcTpwYShmdW5jdGlvbihhLGIsYyl7cmV0dXJuW2M8MD9jK2I6Y119KSxldmVuOnBhKGZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTA7YzxiO2MrPTIpYS5wdXNoKGMpO3JldHVybiBhfSksb2RkOnBhKGZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTE7YzxiO2MrPTIpYS5wdXNoKGMpO3JldHVybiBhfSksbHQ6cGEoZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZD1jPDA/YytiOmM7LS1kPj0wOylhLnB1c2goZCk7cmV0dXJuIGF9KSxndDpwYShmdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkPWM8MD9jK2I6YzsrK2Q8YjspYS5wdXNoKGQpO3JldHVybiBhfSl9fSxkLnBzZXVkb3MubnRoPWQucHNldWRvcy5lcTtmb3IoYiBpbntyYWRpbzohMCxjaGVja2JveDohMCxmaWxlOiEwLHBhc3N3b3JkOiEwLGltYWdlOiEwfSlkLnBzZXVkb3NbYl09bWEoYik7Zm9yKGIgaW57c3VibWl0OiEwLHJlc2V0OiEwfSlkLnBzZXVkb3NbYl09bmEoYik7ZnVuY3Rpb24gcmEoKXt9cmEucHJvdG90eXBlPWQuZmlsdGVycz1kLnBzZXVkb3MsZC5zZXRGaWx0ZXJzPW5ldyByYSxnPWdhLnRva2VuaXplPWZ1bmN0aW9uKGEsYil7dmFyIGMsZSxmLGcsaCxpLGosaz16W2ErIiAiXTtpZihrKXJldHVybiBiPzA6ay5zbGljZSgwKTtoPWEsaT1bXSxqPWQucHJlRmlsdGVyO3doaWxlKGgpe2MmJiEoZT1RLmV4ZWMoaCkpfHwoZSYmKGg9aC5zbGljZShlWzBdLmxlbmd0aCl8fGgpLGkucHVzaChmPVtdKSksYz0hMSwoZT1SLmV4ZWMoaCkpJiYoYz1lLnNoaWZ0KCksZi5wdXNoKHt2YWx1ZTpjLHR5cGU6ZVswXS5yZXBsYWNlKFAsIiAiKX0pLGg9aC5zbGljZShjLmxlbmd0aCkpO2ZvcihnIGluIGQuZmlsdGVyKSEoZT1WW2ddLmV4ZWMoaCkpfHxqW2ddJiYhKGU9altnXShlKSl8fChjPWUuc2hpZnQoKSxmLnB1c2goe3ZhbHVlOmMsdHlwZTpnLG1hdGNoZXM6ZX0pLGg9aC5zbGljZShjLmxlbmd0aCkpO2lmKCFjKWJyZWFrfXJldHVybiBiP2gubGVuZ3RoOmg/Z2EuZXJyb3IoYSk6eihhLGkpLnNsaWNlKDApfTtmdW5jdGlvbiBzYShhKXtmb3IodmFyIGI9MCxjPWEubGVuZ3RoLGQ9IiI7YjxjO2IrKylkKz1hW2JdLnZhbHVlO3JldHVybiBkfWZ1bmN0aW9uIHRhKGEsYixjKXt2YXIgZD1iLmRpcixlPWIubmV4dCxmPWV8fGQsZz1jJiYicGFyZW50Tm9kZSI9PT1mLGg9eCsrO3JldHVybiBiLmZpcnN0P2Z1bmN0aW9uKGIsYyxlKXt3aGlsZShiPWJbZF0paWYoMT09PWIubm9kZVR5cGV8fGcpcmV0dXJuIGEoYixjLGUpO3JldHVybiExfTpmdW5jdGlvbihiLGMsaSl7dmFyIGosayxsLG09W3csaF07aWYoaSl7d2hpbGUoYj1iW2RdKWlmKCgxPT09Yi5ub2RlVHlwZXx8ZykmJmEoYixjLGkpKXJldHVybiEwfWVsc2Ugd2hpbGUoYj1iW2RdKWlmKDE9PT1iLm5vZGVUeXBlfHxnKWlmKGw9Ylt1XXx8KGJbdV09e30pLGs9bFtiLnVuaXF1ZUlEXXx8KGxbYi51bmlxdWVJRF09e30pLGUmJmU9PT1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpYj1iW2RdfHxiO2Vsc2V7aWYoKGo9a1tmXSkmJmpbMF09PT13JiZqWzFdPT09aClyZXR1cm4gbVsyXT1qWzJdO2lmKGtbZl09bSxtWzJdPWEoYixjLGkpKXJldHVybiEwfXJldHVybiExfX1mdW5jdGlvbiB1YShhKXtyZXR1cm4gYS5sZW5ndGg+MT9mdW5jdGlvbihiLGMsZCl7dmFyIGU9YS5sZW5ndGg7d2hpbGUoZS0tKWlmKCFhW2VdKGIsYyxkKSlyZXR1cm4hMTtyZXR1cm4hMH06YVswXX1mdW5jdGlvbiB2YShhLGIsYyl7Zm9yKHZhciBkPTAsZT1iLmxlbmd0aDtkPGU7ZCsrKWdhKGEsYltkXSxjKTtyZXR1cm4gY31mdW5jdGlvbiB3YShhLGIsYyxkLGUpe2Zvcih2YXIgZixnPVtdLGg9MCxpPWEubGVuZ3RoLGo9bnVsbCE9YjtoPGk7aCsrKShmPWFbaF0pJiYoYyYmIWMoZixkLGUpfHwoZy5wdXNoKGYpLGomJmIucHVzaChoKSkpO3JldHVybiBnfWZ1bmN0aW9uIHhhKGEsYixjLGQsZSxmKXtyZXR1cm4gZCYmIWRbdV0mJihkPXhhKGQpKSxlJiYhZVt1XSYmKGU9eGEoZSxmKSksaWEoZnVuY3Rpb24oZixnLGgsaSl7dmFyIGosayxsLG09W10sbj1bXSxvPWcubGVuZ3RoLHA9Znx8dmEoYnx8IioiLGgubm9kZVR5cGU/W2hdOmgsW10pLHE9IWF8fCFmJiZiP3A6d2EocCxtLGEsaCxpKSxyPWM/ZXx8KGY/YTpvfHxkKT9bXTpnOnE7aWYoYyYmYyhxLHIsaCxpKSxkKXtqPXdhKHIsbiksZChqLFtdLGgsaSksaz1qLmxlbmd0aDt3aGlsZShrLS0pKGw9altrXSkmJihyW25ba11dPSEocVtuW2tdXT1sKSl9aWYoZil7aWYoZXx8YSl7aWYoZSl7aj1bXSxrPXIubGVuZ3RoO3doaWxlKGstLSkobD1yW2tdKSYmai5wdXNoKHFba109bCk7ZShudWxsLHI9W10saixpKX1rPXIubGVuZ3RoO3doaWxlKGstLSkobD1yW2tdKSYmKGo9ZT9JKGYsbCk6bVtrXSk+LTEmJihmW2pdPSEoZ1tqXT1sKSl9fWVsc2Ugcj13YShyPT09Zz9yLnNwbGljZShvLHIubGVuZ3RoKTpyKSxlP2UobnVsbCxnLHIsaSk6Ry5hcHBseShnLHIpfSl9ZnVuY3Rpb24geWEoYSl7Zm9yKHZhciBiLGMsZSxmPWEubGVuZ3RoLGc9ZC5yZWxhdGl2ZVthWzBdLnR5cGVdLGg9Z3x8ZC5yZWxhdGl2ZVsiICJdLGk9Zz8xOjAsaz10YShmdW5jdGlvbihhKXtyZXR1cm4gYT09PWJ9LGgsITApLGw9dGEoZnVuY3Rpb24oYSl7cmV0dXJuIEkoYixhKT4tMX0saCwhMCksbT1bZnVuY3Rpb24oYSxjLGQpe3ZhciBlPSFnJiYoZHx8YyE9PWopfHwoKGI9Yykubm9kZVR5cGU/ayhhLGMsZCk6bChhLGMsZCkpO3JldHVybiBiPW51bGwsZX1dO2k8ZjtpKyspaWYoYz1kLnJlbGF0aXZlW2FbaV0udHlwZV0pbT1bdGEodWEobSksYyldO2Vsc2V7aWYoYz1kLmZpbHRlclthW2ldLnR5cGVdLmFwcGx5KG51bGwsYVtpXS5tYXRjaGVzKSxjW3VdKXtmb3IoZT0rK2k7ZTxmO2UrKylpZihkLnJlbGF0aXZlW2FbZV0udHlwZV0pYnJlYWs7cmV0dXJuIHhhKGk+MSYmdWEobSksaT4xJiZzYShhLnNsaWNlKDAsaS0xKS5jb25jYXQoe3ZhbHVlOiIgIj09PWFbaS0yXS50eXBlPyIqIjoiIn0pKS5yZXBsYWNlKFAsIiQxIiksYyxpPGUmJnlhKGEuc2xpY2UoaSxlKSksZTxmJiZ5YShhPWEuc2xpY2UoZSkpLGU8ZiYmc2EoYSkpfW0ucHVzaChjKX1yZXR1cm4gdWEobSl9ZnVuY3Rpb24gemEoYSxiKXt2YXIgYz1iLmxlbmd0aD4wLGU9YS5sZW5ndGg+MCxmPWZ1bmN0aW9uKGYsZyxoLGksayl7dmFyIGwsbyxxLHI9MCxzPSIwIix0PWYmJltdLHU9W10sdj1qLHg9Znx8ZSYmZC5maW5kLlRBRygiKiIsaykseT13Kz1udWxsPT12PzE6TWF0aC5yYW5kb20oKXx8LjEsej14Lmxlbmd0aDtmb3IoayYmKGo9Zz09PW58fGd8fGspO3MhPT16JiZudWxsIT0obD14W3NdKTtzKyspe2lmKGUmJmwpe289MCxnfHxsLm93bmVyRG9jdW1lbnQ9PT1ufHwobShsKSxoPSFwKTt3aGlsZShxPWFbbysrXSlpZihxKGwsZ3x8bixoKSl7aS5wdXNoKGwpO2JyZWFrfWsmJih3PXkpfWMmJigobD0hcSYmbCkmJnItLSxmJiZ0LnB1c2gobCkpfWlmKHIrPXMsYyYmcyE9PXIpe289MDt3aGlsZShxPWJbbysrXSlxKHQsdSxnLGgpO2lmKGYpe2lmKHI+MCl3aGlsZShzLS0pdFtzXXx8dVtzXXx8KHVbc109RS5jYWxsKGkpKTt1PXdhKHUpfUcuYXBwbHkoaSx1KSxrJiYhZiYmdS5sZW5ndGg+MCYmcitiLmxlbmd0aD4xJiZnYS51bmlxdWVTb3J0KGkpfXJldHVybiBrJiYodz15LGo9diksdH07cmV0dXJuIGM/aWEoZik6Zn1yZXR1cm4gaD1nYS5jb21waWxlPWZ1bmN0aW9uKGEsYil7dmFyIGMsZD1bXSxlPVtdLGY9QVthKyIgIl07aWYoIWYpe2J8fChiPWcoYSkpLGM9Yi5sZW5ndGg7d2hpbGUoYy0tKWY9eWEoYltjXSksZlt1XT9kLnB1c2goZik6ZS5wdXNoKGYpO2Y9QShhLHphKGUsZCkpLGYuc2VsZWN0b3I9YX1yZXR1cm4gZn0saT1nYS5zZWxlY3Q9ZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGYsaSxqLGssbCxtPSJmdW5jdGlvbiI9PXR5cGVvZiBhJiZhLG49IWUmJmcoYT1tLnNlbGVjdG9yfHxhKTtpZihjPWN8fFtdLDE9PT1uLmxlbmd0aCl7aWYoaT1uWzBdPW5bMF0uc2xpY2UoMCksaS5sZW5ndGg+MiYmIklEIj09PShqPWlbMF0pLnR5cGUmJjk9PT1iLm5vZGVUeXBlJiZwJiZkLnJlbGF0aXZlW2lbMV0udHlwZV0pe2lmKGI9KGQuZmluZC5JRChqLm1hdGNoZXNbMF0ucmVwbGFjZShfLGFhKSxiKXx8W10pWzBdLCFiKXJldHVybiBjO20mJihiPWIucGFyZW50Tm9kZSksYT1hLnNsaWNlKGkuc2hpZnQoKS52YWx1ZS5sZW5ndGgpfWY9Vi5uZWVkc0NvbnRleHQudGVzdChhKT8wOmkubGVuZ3RoO3doaWxlKGYtLSl7aWYoaj1pW2ZdLGQucmVsYXRpdmVbaz1qLnR5cGVdKWJyZWFrO2lmKChsPWQuZmluZFtrXSkmJihlPWwoai5tYXRjaGVzWzBdLnJlcGxhY2UoXyxhYSksJC50ZXN0KGlbMF0udHlwZSkmJnFhKGIucGFyZW50Tm9kZSl8fGIpKSl7aWYoaS5zcGxpY2UoZiwxKSxhPWUubGVuZ3RoJiZzYShpKSwhYSlyZXR1cm4gRy5hcHBseShjLGUpLGM7YnJlYWt9fX1yZXR1cm4obXx8aChhLG4pKShlLGIsIXAsYywhYnx8JC50ZXN0KGEpJiZxYShiLnBhcmVudE5vZGUpfHxiKSxjfSxjLnNvcnRTdGFibGU9dS5zcGxpdCgiIikuc29ydChCKS5qb2luKCIiKT09PXUsYy5kZXRlY3REdXBsaWNhdGVzPSEhbCxtKCksYy5zb3J0RGV0YWNoZWQ9amEoZnVuY3Rpb24oYSl7cmV0dXJuIDEmYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihuLmNyZWF0ZUVsZW1lbnQoImZpZWxkc2V0IikpfSksamEoZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW5uZXJIVE1MPSI8YSBocmVmPScjJz48L2E+IiwiIyI9PT1hLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJocmVmIil9KXx8a2EoInR5cGV8aHJlZnxoZWlnaHR8d2lkdGgiLGZ1bmN0aW9uKGEsYixjKXtpZighYylyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoYiwidHlwZSI9PT1iLnRvTG93ZXJDYXNlKCk/MToyKX0pLGMuYXR0cmlidXRlcyYmamEoZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW5uZXJIVE1MPSI8aW5wdXQvPiIsYS5maXJzdENoaWxkLnNldEF0dHJpYnV0ZSgidmFsdWUiLCIiKSwiIj09PWEuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoInZhbHVlIil9KXx8a2EoInZhbHVlIixmdW5jdGlvbihhLGIsYyl7aWYoIWMmJiJpbnB1dCI9PT1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpcmV0dXJuIGEuZGVmYXVsdFZhbHVlfSksamEoZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWEuZ2V0QXR0cmlidXRlKCJkaXNhYmxlZCIpfSl8fGthKEosZnVuY3Rpb24oYSxiLGMpe3ZhciBkO2lmKCFjKXJldHVybiBhW2JdPT09ITA/Yi50b0xvd2VyQ2FzZSgpOihkPWEuZ2V0QXR0cmlidXRlTm9kZShiKSkmJmQuc3BlY2lmaWVkP2QudmFsdWU6bnVsbH0pLGdhfShhKTtyLmZpbmQ9eCxyLmV4cHI9eC5zZWxlY3RvcnMsci5leHByWyI6Il09ci5leHByLnBzZXVkb3Msci51bmlxdWVTb3J0PXIudW5pcXVlPXgudW5pcXVlU29ydCxyLnRleHQ9eC5nZXRUZXh0LHIuaXNYTUxEb2M9eC5pc1hNTCxyLmNvbnRhaW5zPXguY29udGFpbnMsci5lc2NhcGVTZWxlY3Rvcj14LmVzY2FwZTt2YXIgeT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9W10sZT12b2lkIDAhPT1jO3doaWxlKChhPWFbYl0pJiY5IT09YS5ub2RlVHlwZSlpZigxPT09YS5ub2RlVHlwZSl7aWYoZSYmcihhKS5pcyhjKSlicmVhaztkLnB1c2goYSl9cmV0dXJuIGR9LHo9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9W107YTthPWEubmV4dFNpYmxpbmcpMT09PWEubm9kZVR5cGUmJmEhPT1iJiZjLnB1c2goYSk7cmV0dXJuIGN9LEE9ci5leHByLm1hdGNoLm5lZWRzQ29udGV4dDtmdW5jdGlvbiBCKGEsYil7cmV0dXJuIGEubm9kZU5hbWUmJmEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWIudG9Mb3dlckNhc2UoKX12YXIgQz0vXjwoW2Etel1bXlwvXDA+Olx4MjBcdFxyXG5cZl0qKVtceDIwXHRcclxuXGZdKlwvPz4oPzo8XC9cMT58KSQvaSxEPS9eLlteOiNcW1wuLF0qJC87ZnVuY3Rpb24gRShhLGIsYyl7cmV0dXJuIHIuaXNGdW5jdGlvbihiKT9yLmdyZXAoYSxmdW5jdGlvbihhLGQpe3JldHVybiEhYi5jYWxsKGEsZCxhKSE9PWN9KTpiLm5vZGVUeXBlP3IuZ3JlcChhLGZ1bmN0aW9uKGEpe3JldHVybiBhPT09YiE9PWN9KToic3RyaW5nIiE9dHlwZW9mIGI/ci5ncmVwKGEsZnVuY3Rpb24oYSl7cmV0dXJuIGkuY2FsbChiLGEpPi0xIT09Y30pOkQudGVzdChiKT9yLmZpbHRlcihiLGEsYyk6KGI9ci5maWx0ZXIoYixhKSxyLmdyZXAoYSxmdW5jdGlvbihhKXtyZXR1cm4gaS5jYWxsKGIsYSk+LTEhPT1jJiYxPT09YS5ub2RlVHlwZX0pKX1yLmZpbHRlcj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YlswXTtyZXR1cm4gYyYmKGE9Ijpub3QoIithKyIpIiksMT09PWIubGVuZ3RoJiYxPT09ZC5ub2RlVHlwZT9yLmZpbmQubWF0Y2hlc1NlbGVjdG9yKGQsYSk/W2RdOltdOnIuZmluZC5tYXRjaGVzKGEsci5ncmVwKGIsZnVuY3Rpb24oYSl7cmV0dXJuIDE9PT1hLm5vZGVUeXBlfSkpfSxyLmZuLmV4dGVuZCh7ZmluZDpmdW5jdGlvbihhKXt2YXIgYixjLGQ9dGhpcy5sZW5ndGgsZT10aGlzO2lmKCJzdHJpbmciIT10eXBlb2YgYSlyZXR1cm4gdGhpcy5wdXNoU3RhY2socihhKS5maWx0ZXIoZnVuY3Rpb24oKXtmb3IoYj0wO2I8ZDtiKyspaWYoci5jb250YWlucyhlW2JdLHRoaXMpKXJldHVybiEwfSkpO2ZvcihjPXRoaXMucHVzaFN0YWNrKFtdKSxiPTA7YjxkO2IrKylyLmZpbmQoYSxlW2JdLGMpO3JldHVybiBkPjE/ci51bmlxdWVTb3J0KGMpOmN9LGZpbHRlcjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soRSh0aGlzLGF8fFtdLCExKSl9LG5vdDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soRSh0aGlzLGF8fFtdLCEwKSl9LGlzOmZ1bmN0aW9uKGEpe3JldHVybiEhRSh0aGlzLCJzdHJpbmciPT10eXBlb2YgYSYmQS50ZXN0KGEpP3IoYSk6YXx8W10sITEpLmxlbmd0aH19KTt2YXIgRixHPS9eKD86XHMqKDxbXHdcV10rPilbXj5dKnwjKFtcdy1dKykpJC8sSD1yLmZuLmluaXQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBlLGY7aWYoIWEpcmV0dXJuIHRoaXM7aWYoYz1jfHxGLCJzdHJpbmciPT10eXBlb2YgYSl7aWYoZT0iPCI9PT1hWzBdJiYiPiI9PT1hW2EubGVuZ3RoLTFdJiZhLmxlbmd0aD49Mz9bbnVsbCxhLG51bGxdOkcuZXhlYyhhKSwhZXx8IWVbMV0mJmIpcmV0dXJuIWJ8fGIuanF1ZXJ5PyhifHxjKS5maW5kKGEpOnRoaXMuY29uc3RydWN0b3IoYikuZmluZChhKTtpZihlWzFdKXtpZihiPWIgaW5zdGFuY2VvZiByP2JbMF06YixyLm1lcmdlKHRoaXMsci5wYXJzZUhUTUwoZVsxXSxiJiZiLm5vZGVUeXBlP2Iub3duZXJEb2N1bWVudHx8YjpkLCEwKSksQy50ZXN0KGVbMV0pJiZyLmlzUGxhaW5PYmplY3QoYikpZm9yKGUgaW4gYilyLmlzRnVuY3Rpb24odGhpc1tlXSk/dGhpc1tlXShiW2VdKTp0aGlzLmF0dHIoZSxiW2VdKTtyZXR1cm4gdGhpc31yZXR1cm4gZj1kLmdldEVsZW1lbnRCeUlkKGVbMl0pLGYmJih0aGlzWzBdPWYsdGhpcy5sZW5ndGg9MSksdGhpc31yZXR1cm4gYS5ub2RlVHlwZT8odGhpc1swXT1hLHRoaXMubGVuZ3RoPTEsdGhpcyk6ci5pc0Z1bmN0aW9uKGEpP3ZvaWQgMCE9PWMucmVhZHk/Yy5yZWFkeShhKTphKHIpOnIubWFrZUFycmF5KGEsdGhpcyl9O0gucHJvdG90eXBlPXIuZm4sRj1yKGQpO3ZhciBJPS9eKD86cGFyZW50c3xwcmV2KD86VW50aWx8QWxsKSkvLEo9e2NoaWxkcmVuOiEwLGNvbnRlbnRzOiEwLG5leHQ6ITAscHJldjohMH07ci5mbi5leHRlbmQoe2hhczpmdW5jdGlvbihhKXt2YXIgYj1yKGEsdGhpcyksYz1iLmxlbmd0aDtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtmb3IodmFyIGE9MDthPGM7YSsrKWlmKHIuY29udGFpbnModGhpcyxiW2FdKSlyZXR1cm4hMH0pfSxjbG9zZXN0OmZ1bmN0aW9uKGEsYil7dmFyIGMsZD0wLGU9dGhpcy5sZW5ndGgsZj1bXSxnPSJzdHJpbmciIT10eXBlb2YgYSYmcihhKTtpZighQS50ZXN0KGEpKWZvcig7ZDxlO2QrKylmb3IoYz10aGlzW2RdO2MmJmMhPT1iO2M9Yy5wYXJlbnROb2RlKWlmKGMubm9kZVR5cGU8MTEmJihnP2cuaW5kZXgoYyk+LTE6MT09PWMubm9kZVR5cGUmJnIuZmluZC5tYXRjaGVzU2VsZWN0b3IoYyxhKSkpe2YucHVzaChjKTticmVha31yZXR1cm4gdGhpcy5wdXNoU3RhY2soZi5sZW5ndGg+MT9yLnVuaXF1ZVNvcnQoZik6Zil9LGluZGV4OmZ1bmN0aW9uKGEpe3JldHVybiBhPyJzdHJpbmciPT10eXBlb2YgYT9pLmNhbGwocihhKSx0aGlzWzBdKTppLmNhbGwodGhpcyxhLmpxdWVyeT9hWzBdOmEpOnRoaXNbMF0mJnRoaXNbMF0ucGFyZW50Tm9kZT90aGlzLmZpcnN0KCkucHJldkFsbCgpLmxlbmd0aDotMX0sYWRkOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMucHVzaFN0YWNrKHIudW5pcXVlU29ydChyLm1lcmdlKHRoaXMuZ2V0KCkscihhLGIpKSkpfSxhZGRCYWNrOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmFkZChudWxsPT1hP3RoaXMucHJldk9iamVjdDp0aGlzLnByZXZPYmplY3QuZmlsdGVyKGEpKX19KTtmdW5jdGlvbiBLKGEsYil7d2hpbGUoKGE9YVtiXSkmJjEhPT1hLm5vZGVUeXBlKTtyZXR1cm4gYX1yLmVhY2goe3BhcmVudDpmdW5jdGlvbihhKXt2YXIgYj1hLnBhcmVudE5vZGU7cmV0dXJuIGImJjExIT09Yi5ub2RlVHlwZT9iOm51bGx9LHBhcmVudHM6ZnVuY3Rpb24oYSl7cmV0dXJuIHkoYSwicGFyZW50Tm9kZSIpfSxwYXJlbnRzVW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB5KGEsInBhcmVudE5vZGUiLGMpfSxuZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBLKGEsIm5leHRTaWJsaW5nIil9LHByZXY6ZnVuY3Rpb24oYSl7cmV0dXJuIEsoYSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRBbGw6ZnVuY3Rpb24oYSl7cmV0dXJuIHkoYSwibmV4dFNpYmxpbmciKX0scHJldkFsbDpmdW5jdGlvbihhKXtyZXR1cm4geShhLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dFVudGlsOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4geShhLCJuZXh0U2libGluZyIsYyl9LHByZXZVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHkoYSwicHJldmlvdXNTaWJsaW5nIixjKX0sc2libGluZ3M6ZnVuY3Rpb24oYSl7cmV0dXJuIHooKGEucGFyZW50Tm9kZXx8e30pLmZpcnN0Q2hpbGQsYSl9LGNoaWxkcmVuOmZ1bmN0aW9uKGEpe3JldHVybiB6KGEuZmlyc3RDaGlsZCl9LGNvbnRlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiBCKGEsImlmcmFtZSIpP2EuY29udGVudERvY3VtZW50OihCKGEsInRlbXBsYXRlIikmJihhPWEuY29udGVudHx8YSksci5tZXJnZShbXSxhLmNoaWxkTm9kZXMpKX19LGZ1bmN0aW9uKGEsYil7ci5mblthXT1mdW5jdGlvbihjLGQpe3ZhciBlPXIubWFwKHRoaXMsYixjKTtyZXR1cm4iVW50aWwiIT09YS5zbGljZSgtNSkmJihkPWMpLGQmJiJzdHJpbmciPT10eXBlb2YgZCYmKGU9ci5maWx0ZXIoZCxlKSksdGhpcy5sZW5ndGg+MSYmKEpbYV18fHIudW5pcXVlU29ydChlKSxJLnRlc3QoYSkmJmUucmV2ZXJzZSgpKSx0aGlzLnB1c2hTdGFjayhlKX19KTt2YXIgTD0vW15ceDIwXHRcclxuXGZdKy9nO2Z1bmN0aW9uIE0oYSl7dmFyIGI9e307cmV0dXJuIHIuZWFjaChhLm1hdGNoKEwpfHxbXSxmdW5jdGlvbihhLGMpe2JbY109ITB9KSxifXIuQ2FsbGJhY2tzPWZ1bmN0aW9uKGEpe2E9InN0cmluZyI9PXR5cGVvZiBhP00oYSk6ci5leHRlbmQoe30sYSk7dmFyIGIsYyxkLGUsZj1bXSxnPVtdLGg9LTEsaT1mdW5jdGlvbigpe2ZvcihlPWV8fGEub25jZSxkPWI9ITA7Zy5sZW5ndGg7aD0tMSl7Yz1nLnNoaWZ0KCk7d2hpbGUoKytoPGYubGVuZ3RoKWZbaF0uYXBwbHkoY1swXSxjWzFdKT09PSExJiZhLnN0b3BPbkZhbHNlJiYoaD1mLmxlbmd0aCxjPSExKX1hLm1lbW9yeXx8KGM9ITEpLGI9ITEsZSYmKGY9Yz9bXToiIil9LGo9e2FkZDpmdW5jdGlvbigpe3JldHVybiBmJiYoYyYmIWImJihoPWYubGVuZ3RoLTEsZy5wdXNoKGMpKSxmdW5jdGlvbiBkKGIpe3IuZWFjaChiLGZ1bmN0aW9uKGIsYyl7ci5pc0Z1bmN0aW9uKGMpP2EudW5pcXVlJiZqLmhhcyhjKXx8Zi5wdXNoKGMpOmMmJmMubGVuZ3RoJiYic3RyaW5nIiE9PXIudHlwZShjKSYmZChjKX0pfShhcmd1bWVudHMpLGMmJiFiJiZpKCkpLHRoaXN9LHJlbW92ZTpmdW5jdGlvbigpe3JldHVybiByLmVhY2goYXJndW1lbnRzLGZ1bmN0aW9uKGEsYil7dmFyIGM7d2hpbGUoKGM9ci5pbkFycmF5KGIsZixjKSk+LTEpZi5zcGxpY2UoYywxKSxjPD1oJiZoLS19KSx0aGlzfSxoYXM6ZnVuY3Rpb24oYSl7cmV0dXJuIGE/ci5pbkFycmF5KGEsZik+LTE6Zi5sZW5ndGg+MH0sZW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4gZiYmKGY9W10pLHRoaXN9LGRpc2FibGU6ZnVuY3Rpb24oKXtyZXR1cm4gZT1nPVtdLGY9Yz0iIix0aGlzfSxkaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiFmfSxsb2NrOmZ1bmN0aW9uKCl7cmV0dXJuIGU9Zz1bXSxjfHxifHwoZj1jPSIiKSx0aGlzfSxsb2NrZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hIWV9LGZpcmVXaXRoOmZ1bmN0aW9uKGEsYyl7cmV0dXJuIGV8fChjPWN8fFtdLGM9W2EsYy5zbGljZT9jLnNsaWNlKCk6Y10sZy5wdXNoKGMpLGJ8fGkoKSksdGhpc30sZmlyZTpmdW5jdGlvbigpe3JldHVybiBqLmZpcmVXaXRoKHRoaXMsYXJndW1lbnRzKSx0aGlzfSxmaXJlZDpmdW5jdGlvbigpe3JldHVybiEhZH19O3JldHVybiBqfTtmdW5jdGlvbiBOKGEpe3JldHVybiBhfWZ1bmN0aW9uIE8oYSl7dGhyb3cgYX1mdW5jdGlvbiBQKGEsYixjLGQpe3ZhciBlO3RyeXthJiZyLmlzRnVuY3Rpb24oZT1hLnByb21pc2UpP2UuY2FsbChhKS5kb25lKGIpLmZhaWwoYyk6YSYmci5pc0Z1bmN0aW9uKGU9YS50aGVuKT9lLmNhbGwoYSxiLGMpOmIuYXBwbHkodm9pZCAwLFthXS5zbGljZShkKSl9Y2F0Y2goYSl7Yy5hcHBseSh2b2lkIDAsW2FdKX19ci5leHRlbmQoe0RlZmVycmVkOmZ1bmN0aW9uKGIpe3ZhciBjPVtbIm5vdGlmeSIsInByb2dyZXNzIixyLkNhbGxiYWNrcygibWVtb3J5Iiksci5DYWxsYmFja3MoIm1lbW9yeSIpLDJdLFsicmVzb2x2ZSIsImRvbmUiLHIuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLHIuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLDAsInJlc29sdmVkIl0sWyJyZWplY3QiLCJmYWlsIixyLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxyLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwxLCJyZWplY3RlZCJdXSxkPSJwZW5kaW5nIixlPXtzdGF0ZTpmdW5jdGlvbigpe3JldHVybiBkfSxhbHdheXM6ZnVuY3Rpb24oKXtyZXR1cm4gZi5kb25lKGFyZ3VtZW50cykuZmFpbChhcmd1bWVudHMpLHRoaXN9LCJjYXRjaCI6ZnVuY3Rpb24oYSl7cmV0dXJuIGUudGhlbihudWxsLGEpfSxwaXBlOmZ1bmN0aW9uKCl7dmFyIGE9YXJndW1lbnRzO3JldHVybiByLkRlZmVycmVkKGZ1bmN0aW9uKGIpe3IuZWFjaChjLGZ1bmN0aW9uKGMsZCl7dmFyIGU9ci5pc0Z1bmN0aW9uKGFbZFs0XV0pJiZhW2RbNF1dO2ZbZFsxXV0oZnVuY3Rpb24oKXt2YXIgYT1lJiZlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTthJiZyLmlzRnVuY3Rpb24oYS5wcm9taXNlKT9hLnByb21pc2UoKS5wcm9ncmVzcyhiLm5vdGlmeSkuZG9uZShiLnJlc29sdmUpLmZhaWwoYi5yZWplY3QpOmJbZFswXSsiV2l0aCJdKHRoaXMsZT9bYV06YXJndW1lbnRzKX0pfSksYT1udWxsfSkucHJvbWlzZSgpfSx0aGVuOmZ1bmN0aW9uKGIsZCxlKXt2YXIgZj0wO2Z1bmN0aW9uIGcoYixjLGQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGg9dGhpcyxpPWFyZ3VtZW50cyxqPWZ1bmN0aW9uKCl7dmFyIGEsajtpZighKGI8Zikpe2lmKGE9ZC5hcHBseShoLGkpLGE9PT1jLnByb21pc2UoKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGVuYWJsZSBzZWxmLXJlc29sdXRpb24iKTtqPWEmJigib2JqZWN0Ij09dHlwZW9mIGF8fCJmdW5jdGlvbiI9PXR5cGVvZiBhKSYmYS50aGVuLHIuaXNGdW5jdGlvbihqKT9lP2ouY2FsbChhLGcoZixjLE4sZSksZyhmLGMsTyxlKSk6KGYrKyxqLmNhbGwoYSxnKGYsYyxOLGUpLGcoZixjLE8sZSksZyhmLGMsTixjLm5vdGlmeVdpdGgpKSk6KGQhPT1OJiYoaD12b2lkIDAsaT1bYV0pLChlfHxjLnJlc29sdmVXaXRoKShoLGkpKX19LGs9ZT9qOmZ1bmN0aW9uKCl7dHJ5e2ooKX1jYXRjaChhKXtyLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2smJnIuRGVmZXJyZWQuZXhjZXB0aW9uSG9vayhhLGsuc3RhY2tUcmFjZSksYisxPj1mJiYoZCE9PU8mJihoPXZvaWQgMCxpPVthXSksYy5yZWplY3RXaXRoKGgsaSkpfX07Yj9rKCk6KHIuRGVmZXJyZWQuZ2V0U3RhY2tIb29rJiYoay5zdGFja1RyYWNlPXIuRGVmZXJyZWQuZ2V0U3RhY2tIb29rKCkpLGEuc2V0VGltZW91dChrKSl9fXJldHVybiByLkRlZmVycmVkKGZ1bmN0aW9uKGEpe2NbMF1bM10uYWRkKGcoMCxhLHIuaXNGdW5jdGlvbihlKT9lOk4sYS5ub3RpZnlXaXRoKSksY1sxXVszXS5hZGQoZygwLGEsci5pc0Z1bmN0aW9uKGIpP2I6TikpLGNbMl1bM10uYWRkKGcoMCxhLHIuaXNGdW5jdGlvbihkKT9kOk8pKX0pLnByb21pc2UoKX0scHJvbWlzZTpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbCE9YT9yLmV4dGVuZChhLGUpOmV9fSxmPXt9O3JldHVybiByLmVhY2goYyxmdW5jdGlvbihhLGIpe3ZhciBnPWJbMl0saD1iWzVdO2VbYlsxXV09Zy5hZGQsaCYmZy5hZGQoZnVuY3Rpb24oKXtkPWh9LGNbMy1hXVsyXS5kaXNhYmxlLGNbMF1bMl0ubG9jayksZy5hZGQoYlszXS5maXJlKSxmW2JbMF1dPWZ1bmN0aW9uKCl7cmV0dXJuIGZbYlswXSsiV2l0aCJdKHRoaXM9PT1mP3ZvaWQgMDp0aGlzLGFyZ3VtZW50cyksdGhpc30sZltiWzBdKyJXaXRoIl09Zy5maXJlV2l0aH0pLGUucHJvbWlzZShmKSxiJiZiLmNhbGwoZixmKSxmfSx3aGVuOmZ1bmN0aW9uKGEpe3ZhciBiPWFyZ3VtZW50cy5sZW5ndGgsYz1iLGQ9QXJyYXkoYyksZT1mLmNhbGwoYXJndW1lbnRzKSxnPXIuRGVmZXJyZWQoKSxoPWZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihjKXtkW2FdPXRoaXMsZVthXT1hcmd1bWVudHMubGVuZ3RoPjE/Zi5jYWxsKGFyZ3VtZW50cyk6YywtLWJ8fGcucmVzb2x2ZVdpdGgoZCxlKX19O2lmKGI8PTEmJihQKGEsZy5kb25lKGgoYykpLnJlc29sdmUsZy5yZWplY3QsIWIpLCJwZW5kaW5nIj09PWcuc3RhdGUoKXx8ci5pc0Z1bmN0aW9uKGVbY10mJmVbY10udGhlbikpKXJldHVybiBnLnRoZW4oKTt3aGlsZShjLS0pUChlW2NdLGgoYyksZy5yZWplY3QpO3JldHVybiBnLnByb21pc2UoKX19KTt2YXIgUT0vXihFdmFsfEludGVybmFsfFJhbmdlfFJlZmVyZW5jZXxTeW50YXh8VHlwZXxVUkkpRXJyb3IkLztyLkRlZmVycmVkLmV4Y2VwdGlvbkhvb2s9ZnVuY3Rpb24oYixjKXthLmNvbnNvbGUmJmEuY29uc29sZS53YXJuJiZiJiZRLnRlc3QoYi5uYW1lKSYmYS5jb25zb2xlLndhcm4oImpRdWVyeS5EZWZlcnJlZCBleGNlcHRpb246ICIrYi5tZXNzYWdlLGIuc3RhY2ssYyl9LHIucmVhZHlFeGNlcHRpb249ZnVuY3Rpb24oYil7YS5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgYn0pfTt2YXIgUj1yLkRlZmVycmVkKCk7ci5mbi5yZWFkeT1mdW5jdGlvbihhKXtyZXR1cm4gUi50aGVuKGEpWyJjYXRjaCJdKGZ1bmN0aW9uKGEpe3IucmVhZHlFeGNlcHRpb24oYSl9KSx0aGlzfSxyLmV4dGVuZCh7aXNSZWFkeTohMSxyZWFkeVdhaXQ6MSxyZWFkeTpmdW5jdGlvbihhKXsoYT09PSEwPy0tci5yZWFkeVdhaXQ6ci5pc1JlYWR5KXx8KHIuaXNSZWFkeT0hMCxhIT09ITAmJi0tci5yZWFkeVdhaXQ+MHx8Ui5yZXNvbHZlV2l0aChkLFtyXSkpfX0pLHIucmVhZHkudGhlbj1SLnRoZW47ZnVuY3Rpb24gUygpe2QucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsUyksCmEucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsUyksci5yZWFkeSgpfSJjb21wbGV0ZSI9PT1kLnJlYWR5U3RhdGV8fCJsb2FkaW5nIiE9PWQucmVhZHlTdGF0ZSYmIWQuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsP2Euc2V0VGltZW91dChyLnJlYWR5KTooZC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixTKSxhLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLFMpKTt2YXIgVD1mdW5jdGlvbihhLGIsYyxkLGUsZixnKXt2YXIgaD0wLGk9YS5sZW5ndGgsaj1udWxsPT1jO2lmKCJvYmplY3QiPT09ci50eXBlKGMpKXtlPSEwO2ZvcihoIGluIGMpVChhLGIsaCxjW2hdLCEwLGYsZyl9ZWxzZSBpZih2b2lkIDAhPT1kJiYoZT0hMCxyLmlzRnVuY3Rpb24oZCl8fChnPSEwKSxqJiYoZz8oYi5jYWxsKGEsZCksYj1udWxsKTooaj1iLGI9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBqLmNhbGwocihhKSxjKX0pKSxiKSlmb3IoO2g8aTtoKyspYihhW2hdLGMsZz9kOmQuY2FsbChhW2hdLGgsYihhW2hdLGMpKSk7cmV0dXJuIGU/YTpqP2IuY2FsbChhKTppP2IoYVswXSxjKTpmfSxVPWZ1bmN0aW9uKGEpe3JldHVybiAxPT09YS5ub2RlVHlwZXx8OT09PWEubm9kZVR5cGV8fCErYS5ub2RlVHlwZX07ZnVuY3Rpb24gVigpe3RoaXMuZXhwYW5kbz1yLmV4cGFuZG8rVi51aWQrK31WLnVpZD0xLFYucHJvdG90eXBlPXtjYWNoZTpmdW5jdGlvbihhKXt2YXIgYj1hW3RoaXMuZXhwYW5kb107cmV0dXJuIGJ8fChiPXt9LFUoYSkmJihhLm5vZGVUeXBlP2FbdGhpcy5leHBhbmRvXT1iOk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLHRoaXMuZXhwYW5kbyx7dmFsdWU6Yixjb25maWd1cmFibGU6ITB9KSkpLGJ9LHNldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZT10aGlzLmNhY2hlKGEpO2lmKCJzdHJpbmciPT10eXBlb2YgYillW3IuY2FtZWxDYXNlKGIpXT1jO2Vsc2UgZm9yKGQgaW4gYillW3IuY2FtZWxDYXNlKGQpXT1iW2RdO3JldHVybiBlfSxnZXQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdm9pZCAwPT09Yj90aGlzLmNhY2hlKGEpOmFbdGhpcy5leHBhbmRvXSYmYVt0aGlzLmV4cGFuZG9dW3IuY2FtZWxDYXNlKGIpXX0sYWNjZXNzOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdm9pZCAwPT09Ynx8YiYmInN0cmluZyI9PXR5cGVvZiBiJiZ2b2lkIDA9PT1jP3RoaXMuZ2V0KGEsYik6KHRoaXMuc2V0KGEsYixjKSx2b2lkIDAhPT1jP2M6Yil9LHJlbW92ZTpmdW5jdGlvbihhLGIpe3ZhciBjLGQ9YVt0aGlzLmV4cGFuZG9dO2lmKHZvaWQgMCE9PWQpe2lmKHZvaWQgMCE9PWIpe0FycmF5LmlzQXJyYXkoYik/Yj1iLm1hcChyLmNhbWVsQ2FzZSk6KGI9ci5jYW1lbENhc2UoYiksYj1iIGluIGQ/W2JdOmIubWF0Y2goTCl8fFtdKSxjPWIubGVuZ3RoO3doaWxlKGMtLSlkZWxldGUgZFtiW2NdXX0odm9pZCAwPT09Ynx8ci5pc0VtcHR5T2JqZWN0KGQpKSYmKGEubm9kZVR5cGU/YVt0aGlzLmV4cGFuZG9dPXZvaWQgMDpkZWxldGUgYVt0aGlzLmV4cGFuZG9dKX19LGhhc0RhdGE6ZnVuY3Rpb24oYSl7dmFyIGI9YVt0aGlzLmV4cGFuZG9dO3JldHVybiB2b2lkIDAhPT1iJiYhci5pc0VtcHR5T2JqZWN0KGIpfX07dmFyIFc9bmV3IFYsWD1uZXcgVixZPS9eKD86XHtbXHdcV10qXH18XFtbXHdcV10qXF0pJC8sWj0vW0EtWl0vZztmdW5jdGlvbiAkKGEpe3JldHVybiJ0cnVlIj09PWF8fCJmYWxzZSIhPT1hJiYoIm51bGwiPT09YT9udWxsOmE9PT0rYSsiIj8rYTpZLnRlc3QoYSk/SlNPTi5wYXJzZShhKTphKX1mdW5jdGlvbiBfKGEsYixjKXt2YXIgZDtpZih2b2lkIDA9PT1jJiYxPT09YS5ub2RlVHlwZSlpZihkPSJkYXRhLSIrYi5yZXBsYWNlKFosIi0kJiIpLnRvTG93ZXJDYXNlKCksYz1hLmdldEF0dHJpYnV0ZShkKSwic3RyaW5nIj09dHlwZW9mIGMpe3RyeXtjPSQoYyl9Y2F0Y2goZSl7fVguc2V0KGEsYixjKX1lbHNlIGM9dm9pZCAwO3JldHVybiBjfXIuZXh0ZW5kKHtoYXNEYXRhOmZ1bmN0aW9uKGEpe3JldHVybiBYLmhhc0RhdGEoYSl8fFcuaGFzRGF0YShhKX0sZGF0YTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIFguYWNjZXNzKGEsYixjKX0scmVtb3ZlRGF0YTpmdW5jdGlvbihhLGIpe1gucmVtb3ZlKGEsYil9LF9kYXRhOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gVy5hY2Nlc3MoYSxiLGMpfSxfcmVtb3ZlRGF0YTpmdW5jdGlvbihhLGIpe1cucmVtb3ZlKGEsYil9fSksci5mbi5leHRlbmQoe2RhdGE6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGUsZj10aGlzWzBdLGc9ZiYmZi5hdHRyaWJ1dGVzO2lmKHZvaWQgMD09PWEpe2lmKHRoaXMubGVuZ3RoJiYoZT1YLmdldChmKSwxPT09Zi5ub2RlVHlwZSYmIVcuZ2V0KGYsImhhc0RhdGFBdHRycyIpKSl7Yz1nLmxlbmd0aDt3aGlsZShjLS0pZ1tjXSYmKGQ9Z1tjXS5uYW1lLDA9PT1kLmluZGV4T2YoImRhdGEtIikmJihkPXIuY2FtZWxDYXNlKGQuc2xpY2UoNSkpLF8oZixkLGVbZF0pKSk7Vy5zZXQoZiwiaGFzRGF0YUF0dHJzIiwhMCl9cmV0dXJuIGV9cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBhP3RoaXMuZWFjaChmdW5jdGlvbigpe1guc2V0KHRoaXMsYSl9KTpUKHRoaXMsZnVuY3Rpb24oYil7dmFyIGM7aWYoZiYmdm9pZCAwPT09Yil7aWYoYz1YLmdldChmLGEpLHZvaWQgMCE9PWMpcmV0dXJuIGM7aWYoYz1fKGYsYSksdm9pZCAwIT09YylyZXR1cm4gY31lbHNlIHRoaXMuZWFjaChmdW5jdGlvbigpe1guc2V0KHRoaXMsYSxiKX0pfSxudWxsLGIsYXJndW1lbnRzLmxlbmd0aD4xLG51bGwsITApfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtYLnJlbW92ZSh0aGlzLGEpfSl9fSksci5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGEsYixjKXt2YXIgZDtpZihhKXJldHVybiBiPShifHwiZngiKSsicXVldWUiLGQ9Vy5nZXQoYSxiKSxjJiYoIWR8fEFycmF5LmlzQXJyYXkoYyk/ZD1XLmFjY2VzcyhhLGIsci5tYWtlQXJyYXkoYykpOmQucHVzaChjKSksZHx8W119LGRlcXVldWU6ZnVuY3Rpb24oYSxiKXtiPWJ8fCJmeCI7dmFyIGM9ci5xdWV1ZShhLGIpLGQ9Yy5sZW5ndGgsZT1jLnNoaWZ0KCksZj1yLl9xdWV1ZUhvb2tzKGEsYiksZz1mdW5jdGlvbigpe3IuZGVxdWV1ZShhLGIpfTsiaW5wcm9ncmVzcyI9PT1lJiYoZT1jLnNoaWZ0KCksZC0tKSxlJiYoImZ4Ij09PWImJmMudW5zaGlmdCgiaW5wcm9ncmVzcyIpLGRlbGV0ZSBmLnN0b3AsZS5jYWxsKGEsZyxmKSksIWQmJmYmJmYuZW1wdHkuZmlyZSgpfSxfcXVldWVIb29rczpmdW5jdGlvbihhLGIpe3ZhciBjPWIrInF1ZXVlSG9va3MiO3JldHVybiBXLmdldChhLGMpfHxXLmFjY2VzcyhhLGMse2VtcHR5OnIuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLmFkZChmdW5jdGlvbigpe1cucmVtb3ZlKGEsW2IrInF1ZXVlIixjXSl9KX0pfX0pLHIuZm4uZXh0ZW5kKHtxdWV1ZTpmdW5jdGlvbihhLGIpe3ZhciBjPTI7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBhJiYoYj1hLGE9ImZ4IixjLS0pLGFyZ3VtZW50cy5sZW5ndGg8Yz9yLnF1ZXVlKHRoaXNbMF0sYSk6dm9pZCAwPT09Yj90aGlzOnRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBjPXIucXVldWUodGhpcyxhLGIpO3IuX3F1ZXVlSG9va3ModGhpcyxhKSwiZngiPT09YSYmImlucHJvZ3Jlc3MiIT09Y1swXSYmci5kZXF1ZXVlKHRoaXMsYSl9KX0sZGVxdWV1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ci5kZXF1ZXVlKHRoaXMsYSl9KX0sY2xlYXJRdWV1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5xdWV1ZShhfHwiZngiLFtdKX0scHJvbWlzZTpmdW5jdGlvbihhLGIpe3ZhciBjLGQ9MSxlPXIuRGVmZXJyZWQoKSxmPXRoaXMsZz10aGlzLmxlbmd0aCxoPWZ1bmN0aW9uKCl7LS1kfHxlLnJlc29sdmVXaXRoKGYsW2ZdKX07InN0cmluZyIhPXR5cGVvZiBhJiYoYj1hLGE9dm9pZCAwKSxhPWF8fCJmeCI7d2hpbGUoZy0tKWM9Vy5nZXQoZltnXSxhKyJxdWV1ZUhvb2tzIiksYyYmYy5lbXB0eSYmKGQrKyxjLmVtcHR5LmFkZChoKSk7cmV0dXJuIGgoKSxlLnByb21pc2UoYil9fSk7dmFyIGFhPS9bKy1dPyg/OlxkKlwufClcZCsoPzpbZUVdWystXT9cZCt8KS8uc291cmNlLGJhPW5ldyBSZWdFeHAoIl4oPzooWystXSk9fCkoIithYSsiKShbYS16JV0qKSQiLCJpIiksY2E9WyJUb3AiLCJSaWdodCIsIkJvdHRvbSIsIkxlZnQiXSxkYT1mdW5jdGlvbihhLGIpe3JldHVybiBhPWJ8fGEsIm5vbmUiPT09YS5zdHlsZS5kaXNwbGF5fHwiIj09PWEuc3R5bGUuZGlzcGxheSYmci5jb250YWlucyhhLm93bmVyRG9jdW1lbnQsYSkmJiJub25lIj09PXIuY3NzKGEsImRpc3BsYXkiKX0sZWE9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGUsZixnPXt9O2ZvcihmIGluIGIpZ1tmXT1hLnN0eWxlW2ZdLGEuc3R5bGVbZl09YltmXTtlPWMuYXBwbHkoYSxkfHxbXSk7Zm9yKGYgaW4gYilhLnN0eWxlW2ZdPWdbZl07cmV0dXJuIGV9O2Z1bmN0aW9uIGZhKGEsYixjLGQpe3ZhciBlLGY9MSxnPTIwLGg9ZD9mdW5jdGlvbigpe3JldHVybiBkLmN1cigpfTpmdW5jdGlvbigpe3JldHVybiByLmNzcyhhLGIsIiIpfSxpPWgoKSxqPWMmJmNbM118fChyLmNzc051bWJlcltiXT8iIjoicHgiKSxrPShyLmNzc051bWJlcltiXXx8InB4IiE9PWomJitpKSYmYmEuZXhlYyhyLmNzcyhhLGIpKTtpZihrJiZrWzNdIT09ail7aj1qfHxrWzNdLGM9Y3x8W10saz0raXx8MTtkbyBmPWZ8fCIuNSIsay89ZixyLnN0eWxlKGEsYixrK2opO3doaWxlKGYhPT0oZj1oKCkvaSkmJjEhPT1mJiYtLWcpfXJldHVybiBjJiYoaz0ra3x8K2l8fDAsZT1jWzFdP2srKGNbMV0rMSkqY1syXTorY1syXSxkJiYoZC51bml0PWosZC5zdGFydD1rLGQuZW5kPWUpKSxlfXZhciBnYT17fTtmdW5jdGlvbiBoYShhKXt2YXIgYixjPWEub3duZXJEb2N1bWVudCxkPWEubm9kZU5hbWUsZT1nYVtkXTtyZXR1cm4gZT9lOihiPWMuYm9keS5hcHBlbmRDaGlsZChjLmNyZWF0ZUVsZW1lbnQoZCkpLGU9ci5jc3MoYiwiZGlzcGxheSIpLGIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChiKSwibm9uZSI9PT1lJiYoZT0iYmxvY2siKSxnYVtkXT1lLGUpfWZ1bmN0aW9uIGlhKGEsYil7Zm9yKHZhciBjLGQsZT1bXSxmPTAsZz1hLmxlbmd0aDtmPGc7ZisrKWQ9YVtmXSxkLnN0eWxlJiYoYz1kLnN0eWxlLmRpc3BsYXksYj8oIm5vbmUiPT09YyYmKGVbZl09Vy5nZXQoZCwiZGlzcGxheSIpfHxudWxsLGVbZl18fChkLnN0eWxlLmRpc3BsYXk9IiIpKSwiIj09PWQuc3R5bGUuZGlzcGxheSYmZGEoZCkmJihlW2ZdPWhhKGQpKSk6Im5vbmUiIT09YyYmKGVbZl09Im5vbmUiLFcuc2V0KGQsImRpc3BsYXkiLGMpKSk7Zm9yKGY9MDtmPGc7ZisrKW51bGwhPWVbZl0mJihhW2ZdLnN0eWxlLmRpc3BsYXk9ZVtmXSk7cmV0dXJuIGF9ci5mbi5leHRlbmQoe3Nob3c6ZnVuY3Rpb24oKXtyZXR1cm4gaWEodGhpcywhMCl9LGhpZGU6ZnVuY3Rpb24oKXtyZXR1cm4gaWEodGhpcyl9LHRvZ2dsZTpmdW5jdGlvbihhKXtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBhP2E/dGhpcy5zaG93KCk6dGhpcy5oaWRlKCk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZGEodGhpcyk/cih0aGlzKS5zaG93KCk6cih0aGlzKS5oaWRlKCl9KX19KTt2YXIgamE9L14oPzpjaGVja2JveHxyYWRpbykkL2ksa2E9LzwoW2Etel1bXlwvXDA+XHgyMFx0XHJcblxmXSspL2ksbGE9L14kfFwvKD86amF2YXxlY21hKXNjcmlwdC9pLG1hPXtvcHRpb246WzEsIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz4iLCI8L3NlbGVjdD4iXSx0aGVhZDpbMSwiPHRhYmxlPiIsIjwvdGFibGU+Il0sY29sOlsyLCI8dGFibGU+PGNvbGdyb3VwPiIsIjwvY29sZ3JvdXA+PC90YWJsZT4iXSx0cjpbMiwiPHRhYmxlPjx0Ym9keT4iLCI8L3Rib2R5PjwvdGFibGU+Il0sdGQ6WzMsIjx0YWJsZT48dGJvZHk+PHRyPiIsIjwvdHI+PC90Ym9keT48L3RhYmxlPiJdLF9kZWZhdWx0OlswLCIiLCIiXX07bWEub3B0Z3JvdXA9bWEub3B0aW9uLG1hLnRib2R5PW1hLnRmb290PW1hLmNvbGdyb3VwPW1hLmNhcHRpb249bWEudGhlYWQsbWEudGg9bWEudGQ7ZnVuY3Rpb24gbmEoYSxiKXt2YXIgYztyZXR1cm4gYz0idW5kZWZpbmVkIiE9dHlwZW9mIGEuZ2V0RWxlbWVudHNCeVRhZ05hbWU/YS5nZXRFbGVtZW50c0J5VGFnTmFtZShifHwiKiIpOiJ1bmRlZmluZWQiIT10eXBlb2YgYS5xdWVyeVNlbGVjdG9yQWxsP2EucXVlcnlTZWxlY3RvckFsbChifHwiKiIpOltdLHZvaWQgMD09PWJ8fGImJkIoYSxiKT9yLm1lcmdlKFthXSxjKTpjfWZ1bmN0aW9uIG9hKGEsYil7Zm9yKHZhciBjPTAsZD1hLmxlbmd0aDtjPGQ7YysrKVcuc2V0KGFbY10sImdsb2JhbEV2YWwiLCFifHxXLmdldChiW2NdLCJnbG9iYWxFdmFsIikpfXZhciBwYT0vPHwmIz9cdys7LztmdW5jdGlvbiBxYShhLGIsYyxkLGUpe2Zvcih2YXIgZixnLGgsaSxqLGssbD1iLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxtPVtdLG49MCxvPWEubGVuZ3RoO248bztuKyspaWYoZj1hW25dLGZ8fDA9PT1mKWlmKCJvYmplY3QiPT09ci50eXBlKGYpKXIubWVyZ2UobSxmLm5vZGVUeXBlP1tmXTpmKTtlbHNlIGlmKHBhLnRlc3QoZikpe2c9Z3x8bC5hcHBlbmRDaGlsZChiLmNyZWF0ZUVsZW1lbnQoImRpdiIpKSxoPShrYS5leGVjKGYpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpLGk9bWFbaF18fG1hLl9kZWZhdWx0LGcuaW5uZXJIVE1MPWlbMV0rci5odG1sUHJlZmlsdGVyKGYpK2lbMl0saz1pWzBdO3doaWxlKGstLSlnPWcubGFzdENoaWxkO3IubWVyZ2UobSxnLmNoaWxkTm9kZXMpLGc9bC5maXJzdENoaWxkLGcudGV4dENvbnRlbnQ9IiJ9ZWxzZSBtLnB1c2goYi5jcmVhdGVUZXh0Tm9kZShmKSk7bC50ZXh0Q29udGVudD0iIixuPTA7d2hpbGUoZj1tW24rK10paWYoZCYmci5pbkFycmF5KGYsZCk+LTEpZSYmZS5wdXNoKGYpO2Vsc2UgaWYoaj1yLmNvbnRhaW5zKGYub3duZXJEb2N1bWVudCxmKSxnPW5hKGwuYXBwZW5kQ2hpbGQoZiksInNjcmlwdCIpLGomJm9hKGcpLGMpe2s9MDt3aGlsZShmPWdbaysrXSlsYS50ZXN0KGYudHlwZXx8IiIpJiZjLnB1c2goZil9cmV0dXJuIGx9IWZ1bmN0aW9uKCl7dmFyIGE9ZC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksYj1hLmFwcGVuZENoaWxkKGQuY3JlYXRlRWxlbWVudCgiZGl2IikpLGM9ZC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO2Muc2V0QXR0cmlidXRlKCJ0eXBlIiwicmFkaW8iKSxjLnNldEF0dHJpYnV0ZSgiY2hlY2tlZCIsImNoZWNrZWQiKSxjLnNldEF0dHJpYnV0ZSgibmFtZSIsInQiKSxiLmFwcGVuZENoaWxkKGMpLG8uY2hlY2tDbG9uZT1iLmNsb25lTm9kZSghMCkuY2xvbmVOb2RlKCEwKS5sYXN0Q2hpbGQuY2hlY2tlZCxiLmlubmVySFRNTD0iPHRleHRhcmVhPng8L3RleHRhcmVhPiIsby5ub0Nsb25lQ2hlY2tlZD0hIWIuY2xvbmVOb2RlKCEwKS5sYXN0Q2hpbGQuZGVmYXVsdFZhbHVlfSgpO3ZhciByYT1kLmRvY3VtZW50RWxlbWVudCxzYT0vXmtleS8sdGE9L14oPzptb3VzZXxwb2ludGVyfGNvbnRleHRtZW51fGRyYWd8ZHJvcCl8Y2xpY2svLHVhPS9eKFteLl0qKSg/OlwuKC4rKXwpLztmdW5jdGlvbiB2YSgpe3JldHVybiEwfWZ1bmN0aW9uIHdhKCl7cmV0dXJuITF9ZnVuY3Rpb24geGEoKXt0cnl7cmV0dXJuIGQuYWN0aXZlRWxlbWVudH1jYXRjaChhKXt9fWZ1bmN0aW9uIHlhKGEsYixjLGQsZSxmKXt2YXIgZyxoO2lmKCJvYmplY3QiPT10eXBlb2YgYil7InN0cmluZyIhPXR5cGVvZiBjJiYoZD1kfHxjLGM9dm9pZCAwKTtmb3IoaCBpbiBiKXlhKGEsaCxjLGQsYltoXSxmKTtyZXR1cm4gYX1pZihudWxsPT1kJiZudWxsPT1lPyhlPWMsZD1jPXZvaWQgMCk6bnVsbD09ZSYmKCJzdHJpbmciPT10eXBlb2YgYz8oZT1kLGQ9dm9pZCAwKTooZT1kLGQ9YyxjPXZvaWQgMCkpLGU9PT0hMSllPXdhO2Vsc2UgaWYoIWUpcmV0dXJuIGE7cmV0dXJuIDE9PT1mJiYoZz1lLGU9ZnVuY3Rpb24oYSl7cmV0dXJuIHIoKS5vZmYoYSksZy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGUuZ3VpZD1nLmd1aWR8fChnLmd1aWQ9ci5ndWlkKyspKSxhLmVhY2goZnVuY3Rpb24oKXtyLmV2ZW50LmFkZCh0aGlzLGIsZSxkLGMpfSl9ci5ldmVudD17Z2xvYmFsOnt9LGFkZDpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmLGcsaCxpLGosayxsLG0sbixvLHAscT1XLmdldChhKTtpZihxKXtjLmhhbmRsZXImJihmPWMsYz1mLmhhbmRsZXIsZT1mLnNlbGVjdG9yKSxlJiZyLmZpbmQubWF0Y2hlc1NlbGVjdG9yKHJhLGUpLGMuZ3VpZHx8KGMuZ3VpZD1yLmd1aWQrKyksKGk9cS5ldmVudHMpfHwoaT1xLmV2ZW50cz17fSksKGc9cS5oYW5kbGUpfHwoZz1xLmhhbmRsZT1mdW5jdGlvbihiKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIHImJnIuZXZlbnQudHJpZ2dlcmVkIT09Yi50eXBlP3IuZXZlbnQuZGlzcGF0Y2guYXBwbHkoYSxhcmd1bWVudHMpOnZvaWQgMH0pLGI9KGJ8fCIiKS5tYXRjaChMKXx8WyIiXSxqPWIubGVuZ3RoO3doaWxlKGotLSloPXVhLmV4ZWMoYltqXSl8fFtdLG49cD1oWzFdLG89KGhbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxuJiYobD1yLmV2ZW50LnNwZWNpYWxbbl18fHt9LG49KGU/bC5kZWxlZ2F0ZVR5cGU6bC5iaW5kVHlwZSl8fG4sbD1yLmV2ZW50LnNwZWNpYWxbbl18fHt9LGs9ci5leHRlbmQoe3R5cGU6bixvcmlnVHlwZTpwLGRhdGE6ZCxoYW5kbGVyOmMsZ3VpZDpjLmd1aWQsc2VsZWN0b3I6ZSxuZWVkc0NvbnRleHQ6ZSYmci5leHByLm1hdGNoLm5lZWRzQ29udGV4dC50ZXN0KGUpLG5hbWVzcGFjZTpvLmpvaW4oIi4iKX0sZiksKG09aVtuXSl8fChtPWlbbl09W10sbS5kZWxlZ2F0ZUNvdW50PTAsbC5zZXR1cCYmbC5zZXR1cC5jYWxsKGEsZCxvLGcpIT09ITF8fGEuYWRkRXZlbnRMaXN0ZW5lciYmYS5hZGRFdmVudExpc3RlbmVyKG4sZykpLGwuYWRkJiYobC5hZGQuY2FsbChhLGspLGsuaGFuZGxlci5ndWlkfHwoay5oYW5kbGVyLmd1aWQ9Yy5ndWlkKSksZT9tLnNwbGljZShtLmRlbGVnYXRlQ291bnQrKywwLGspOm0ucHVzaChrKSxyLmV2ZW50Lmdsb2JhbFtuXT0hMCl9fSxyZW1vdmU6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZixnLGgsaSxqLGssbCxtLG4sbyxwLHE9Vy5oYXNEYXRhKGEpJiZXLmdldChhKTtpZihxJiYoaT1xLmV2ZW50cykpe2I9KGJ8fCIiKS5tYXRjaChMKXx8WyIiXSxqPWIubGVuZ3RoO3doaWxlKGotLSlpZihoPXVhLmV4ZWMoYltqXSl8fFtdLG49cD1oWzFdLG89KGhbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxuKXtsPXIuZXZlbnQuc3BlY2lhbFtuXXx8e30sbj0oZD9sLmRlbGVnYXRlVHlwZTpsLmJpbmRUeXBlKXx8bixtPWlbbl18fFtdLGg9aFsyXSYmbmV3IFJlZ0V4cCgiKF58XFwuKSIrby5qb2luKCJcXC4oPzouKlxcLnwpIikrIihcXC58JCkiKSxnPWY9bS5sZW5ndGg7d2hpbGUoZi0tKWs9bVtmXSwhZSYmcCE9PWsub3JpZ1R5cGV8fGMmJmMuZ3VpZCE9PWsuZ3VpZHx8aCYmIWgudGVzdChrLm5hbWVzcGFjZSl8fGQmJmQhPT1rLnNlbGVjdG9yJiYoIioqIiE9PWR8fCFrLnNlbGVjdG9yKXx8KG0uc3BsaWNlKGYsMSksay5zZWxlY3RvciYmbS5kZWxlZ2F0ZUNvdW50LS0sbC5yZW1vdmUmJmwucmVtb3ZlLmNhbGwoYSxrKSk7ZyYmIW0ubGVuZ3RoJiYobC50ZWFyZG93biYmbC50ZWFyZG93bi5jYWxsKGEsbyxxLmhhbmRsZSkhPT0hMXx8ci5yZW1vdmVFdmVudChhLG4scS5oYW5kbGUpLGRlbGV0ZSBpW25dKX1lbHNlIGZvcihuIGluIGkpci5ldmVudC5yZW1vdmUoYSxuK2Jbal0sYyxkLCEwKTtyLmlzRW1wdHlPYmplY3QoaSkmJlcucmVtb3ZlKGEsImhhbmRsZSBldmVudHMiKX19LGRpc3BhdGNoOmZ1bmN0aW9uKGEpe3ZhciBiPXIuZXZlbnQuZml4KGEpLGMsZCxlLGYsZyxoLGk9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpLGo9KFcuZ2V0KHRoaXMsImV2ZW50cyIpfHx7fSlbYi50eXBlXXx8W10saz1yLmV2ZW50LnNwZWNpYWxbYi50eXBlXXx8e307Zm9yKGlbMF09YixjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKylpW2NdPWFyZ3VtZW50c1tjXTtpZihiLmRlbGVnYXRlVGFyZ2V0PXRoaXMsIWsucHJlRGlzcGF0Y2h8fGsucHJlRGlzcGF0Y2guY2FsbCh0aGlzLGIpIT09ITEpe2g9ci5ldmVudC5oYW5kbGVycy5jYWxsKHRoaXMsYixqKSxjPTA7d2hpbGUoKGY9aFtjKytdKSYmIWIuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSl7Yi5jdXJyZW50VGFyZ2V0PWYuZWxlbSxkPTA7d2hpbGUoKGc9Zi5oYW5kbGVyc1tkKytdKSYmIWIuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKSliLnJuYW1lc3BhY2UmJiFiLnJuYW1lc3BhY2UudGVzdChnLm5hbWVzcGFjZSl8fChiLmhhbmRsZU9iaj1nLGIuZGF0YT1nLmRhdGEsZT0oKHIuZXZlbnQuc3BlY2lhbFtnLm9yaWdUeXBlXXx8e30pLmhhbmRsZXx8Zy5oYW5kbGVyKS5hcHBseShmLmVsZW0saSksdm9pZCAwIT09ZSYmKGIucmVzdWx0PWUpPT09ITEmJihiLnByZXZlbnREZWZhdWx0KCksYi5zdG9wUHJvcGFnYXRpb24oKSkpfXJldHVybiBrLnBvc3REaXNwYXRjaCYmay5wb3N0RGlzcGF0Y2guY2FsbCh0aGlzLGIpLGIucmVzdWx0fX0saGFuZGxlcnM6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGUsZixnLGg9W10saT1iLmRlbGVnYXRlQ291bnQsaj1hLnRhcmdldDtpZihpJiZqLm5vZGVUeXBlJiYhKCJjbGljayI9PT1hLnR5cGUmJmEuYnV0dG9uPj0xKSlmb3IoO2ohPT10aGlzO2o9ai5wYXJlbnROb2RlfHx0aGlzKWlmKDE9PT1qLm5vZGVUeXBlJiYoImNsaWNrIiE9PWEudHlwZXx8ai5kaXNhYmxlZCE9PSEwKSl7Zm9yKGY9W10sZz17fSxjPTA7YzxpO2MrKylkPWJbY10sZT1kLnNlbGVjdG9yKyIgIix2b2lkIDA9PT1nW2VdJiYoZ1tlXT1kLm5lZWRzQ29udGV4dD9yKGUsdGhpcykuaW5kZXgoaik+LTE6ci5maW5kKGUsdGhpcyxudWxsLFtqXSkubGVuZ3RoKSxnW2VdJiZmLnB1c2goZCk7Zi5sZW5ndGgmJmgucHVzaCh7ZWxlbTpqLGhhbmRsZXJzOmZ9KX1yZXR1cm4gaj10aGlzLGk8Yi5sZW5ndGgmJmgucHVzaCh7ZWxlbTpqLGhhbmRsZXJzOmIuc2xpY2UoaSl9KSxofSxhZGRQcm9wOmZ1bmN0aW9uKGEsYil7T2JqZWN0LmRlZmluZVByb3BlcnR5KHIuRXZlbnQucHJvdG90eXBlLGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLGdldDpyLmlzRnVuY3Rpb24oYik/ZnVuY3Rpb24oKXtpZih0aGlzLm9yaWdpbmFsRXZlbnQpcmV0dXJuIGIodGhpcy5vcmlnaW5hbEV2ZW50KX06ZnVuY3Rpb24oKXtpZih0aGlzLm9yaWdpbmFsRXZlbnQpcmV0dXJuIHRoaXMub3JpZ2luYWxFdmVudFthXX0sc2V0OmZ1bmN0aW9uKGIpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLGEse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmJ9KX19KX0sZml4OmZ1bmN0aW9uKGEpe3JldHVybiBhW3IuZXhwYW5kb10/YTpuZXcgci5FdmVudChhKX0sc3BlY2lhbDp7bG9hZDp7bm9CdWJibGU6ITB9LGZvY3VzOnt0cmlnZ2VyOmZ1bmN0aW9uKCl7aWYodGhpcyE9PXhhKCkmJnRoaXMuZm9jdXMpcmV0dXJuIHRoaXMuZm9jdXMoKSwhMX0sZGVsZWdhdGVUeXBlOiJmb2N1c2luIn0sYmx1cjp7dHJpZ2dlcjpmdW5jdGlvbigpe2lmKHRoaXM9PT14YSgpJiZ0aGlzLmJsdXIpcmV0dXJuIHRoaXMuYmx1cigpLCExfSxkZWxlZ2F0ZVR5cGU6ImZvY3Vzb3V0In0sY2xpY2s6e3RyaWdnZXI6ZnVuY3Rpb24oKXtpZigiY2hlY2tib3giPT09dGhpcy50eXBlJiZ0aGlzLmNsaWNrJiZCKHRoaXMsImlucHV0IikpcmV0dXJuIHRoaXMuY2xpY2soKSwhMX0sX2RlZmF1bHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIEIoYS50YXJnZXQsImEiKX19LGJlZm9yZXVubG9hZDp7cG9zdERpc3BhdGNoOmZ1bmN0aW9uKGEpe3ZvaWQgMCE9PWEucmVzdWx0JiZhLm9yaWdpbmFsRXZlbnQmJihhLm9yaWdpbmFsRXZlbnQucmV0dXJuVmFsdWU9YS5yZXN1bHQpfX19fSxyLnJlbW92ZUV2ZW50PWZ1bmN0aW9uKGEsYixjKXthLnJlbW92ZUV2ZW50TGlzdGVuZXImJmEucmVtb3ZlRXZlbnRMaXN0ZW5lcihiLGMpfSxyLkV2ZW50PWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiByLkV2ZW50PyhhJiZhLnR5cGU/KHRoaXMub3JpZ2luYWxFdmVudD1hLHRoaXMudHlwZT1hLnR5cGUsdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9YS5kZWZhdWx0UHJldmVudGVkfHx2b2lkIDA9PT1hLmRlZmF1bHRQcmV2ZW50ZWQmJmEucmV0dXJuVmFsdWU9PT0hMT92YTp3YSx0aGlzLnRhcmdldD1hLnRhcmdldCYmMz09PWEudGFyZ2V0Lm5vZGVUeXBlP2EudGFyZ2V0LnBhcmVudE5vZGU6YS50YXJnZXQsdGhpcy5jdXJyZW50VGFyZ2V0PWEuY3VycmVudFRhcmdldCx0aGlzLnJlbGF0ZWRUYXJnZXQ9YS5yZWxhdGVkVGFyZ2V0KTp0aGlzLnR5cGU9YSxiJiZyLmV4dGVuZCh0aGlzLGIpLHRoaXMudGltZVN0YW1wPWEmJmEudGltZVN0YW1wfHxyLm5vdygpLHZvaWQodGhpc1tyLmV4cGFuZG9dPSEwKSk6bmV3IHIuRXZlbnQoYSxiKX0sci5FdmVudC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOnIuRXZlbnQsaXNEZWZhdWx0UHJldmVudGVkOndhLGlzUHJvcGFnYXRpb25TdG9wcGVkOndhLGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOndhLGlzU2ltdWxhdGVkOiExLHByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPXZhLGEmJiF0aGlzLmlzU2ltdWxhdGVkJiZhLnByZXZlbnREZWZhdWx0KCl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPXZhLGEmJiF0aGlzLmlzU2ltdWxhdGVkJiZhLnN0b3BQcm9wYWdhdGlvbigpfSxzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZD12YSxhJiYhdGhpcy5pc1NpbXVsYXRlZCYmYS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSx0aGlzLnN0b3BQcm9wYWdhdGlvbigpfX0sci5lYWNoKHthbHRLZXk6ITAsYnViYmxlczohMCxjYW5jZWxhYmxlOiEwLGNoYW5nZWRUb3VjaGVzOiEwLGN0cmxLZXk6ITAsZGV0YWlsOiEwLGV2ZW50UGhhc2U6ITAsbWV0YUtleTohMCxwYWdlWDohMCxwYWdlWTohMCxzaGlmdEtleTohMCx2aWV3OiEwLCJjaGFyIjohMCxjaGFyQ29kZTohMCxrZXk6ITAsa2V5Q29kZTohMCxidXR0b246ITAsYnV0dG9uczohMCxjbGllbnRYOiEwLGNsaWVudFk6ITAsb2Zmc2V0WDohMCxvZmZzZXRZOiEwLHBvaW50ZXJJZDohMCxwb2ludGVyVHlwZTohMCxzY3JlZW5YOiEwLHNjcmVlblk6ITAsdGFyZ2V0VG91Y2hlczohMCx0b0VsZW1lbnQ6ITAsdG91Y2hlczohMCx3aGljaDpmdW5jdGlvbihhKXt2YXIgYj1hLmJ1dHRvbjtyZXR1cm4gbnVsbD09YS53aGljaCYmc2EudGVzdChhLnR5cGUpP251bGwhPWEuY2hhckNvZGU/YS5jaGFyQ29kZTphLmtleUNvZGU6IWEud2hpY2gmJnZvaWQgMCE9PWImJnRhLnRlc3QoYS50eXBlKT8xJmI/MToyJmI/Mzo0JmI/MjowOmEud2hpY2h9fSxyLmV2ZW50LmFkZFByb3ApLHIuZWFjaCh7bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCIscG9pbnRlcmVudGVyOiJwb2ludGVyb3ZlciIscG9pbnRlcmxlYXZlOiJwb2ludGVyb3V0In0sZnVuY3Rpb24oYSxiKXtyLmV2ZW50LnNwZWNpYWxbYV09e2RlbGVnYXRlVHlwZTpiLGJpbmRUeXBlOmIsaGFuZGxlOmZ1bmN0aW9uKGEpe3ZhciBjLGQ9dGhpcyxlPWEucmVsYXRlZFRhcmdldCxmPWEuaGFuZGxlT2JqO3JldHVybiBlJiYoZT09PWR8fHIuY29udGFpbnMoZCxlKSl8fChhLnR5cGU9Zi5vcmlnVHlwZSxjPWYuaGFuZGxlci5hcHBseSh0aGlzLGFyZ3VtZW50cyksYS50eXBlPWIpLGN9fX0pLHIuZm4uZXh0ZW5kKHtvbjpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4geWEodGhpcyxhLGIsYyxkKX0sb25lOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB5YSh0aGlzLGEsYixjLGQsMSl9LG9mZjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZTtpZihhJiZhLnByZXZlbnREZWZhdWx0JiZhLmhhbmRsZU9iailyZXR1cm4gZD1hLmhhbmRsZU9iaixyKGEuZGVsZWdhdGVUYXJnZXQpLm9mZihkLm5hbWVzcGFjZT9kLm9yaWdUeXBlKyIuIitkLm5hbWVzcGFjZTpkLm9yaWdUeXBlLGQuc2VsZWN0b3IsZC5oYW5kbGVyKSx0aGlzO2lmKCJvYmplY3QiPT10eXBlb2YgYSl7Zm9yKGUgaW4gYSl0aGlzLm9mZihlLGIsYVtlXSk7cmV0dXJuIHRoaXN9cmV0dXJuIGIhPT0hMSYmImZ1bmN0aW9uIiE9dHlwZW9mIGJ8fChjPWIsYj12b2lkIDApLGM9PT0hMSYmKGM9d2EpLHRoaXMuZWFjaChmdW5jdGlvbigpe3IuZXZlbnQucmVtb3ZlKHRoaXMsYSxjLGIpfSl9fSk7dmFyIHphPS88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFthLXpdW15cL1wwPlx4MjBcdFxyXG5cZl0qKVtePl0qKVwvPi9naSxBYT0vPHNjcmlwdHw8c3R5bGV8PGxpbmsvaSxCYT0vY2hlY2tlZFxzKig/OltePV18PVxzKi5jaGVja2VkLikvaSxDYT0vXnRydWVcLyguKikvLERhPS9eXHMqPCEoPzpcW0NEQVRBXFt8LS0pfCg/OlxdXF18LS0pPlxzKiQvZztmdW5jdGlvbiBFYShhLGIpe3JldHVybiBCKGEsInRhYmxlIikmJkIoMTEhPT1iLm5vZGVUeXBlP2I6Yi5maXJzdENoaWxkLCJ0ciIpP3IoIj50Ym9keSIsYSlbMF18fGE6YX1mdW5jdGlvbiBGYShhKXtyZXR1cm4gYS50eXBlPShudWxsIT09YS5nZXRBdHRyaWJ1dGUoInR5cGUiKSkrIi8iK2EudHlwZSxhfWZ1bmN0aW9uIEdhKGEpe3ZhciBiPUNhLmV4ZWMoYS50eXBlKTtyZXR1cm4gYj9hLnR5cGU9YlsxXTphLnJlbW92ZUF0dHJpYnV0ZSgidHlwZSIpLGF9ZnVuY3Rpb24gSGEoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqO2lmKDE9PT1iLm5vZGVUeXBlKXtpZihXLmhhc0RhdGEoYSkmJihmPVcuYWNjZXNzKGEpLGc9Vy5zZXQoYixmKSxqPWYuZXZlbnRzKSl7ZGVsZXRlIGcuaGFuZGxlLGcuZXZlbnRzPXt9O2ZvcihlIGluIGopZm9yKGM9MCxkPWpbZV0ubGVuZ3RoO2M8ZDtjKyspci5ldmVudC5hZGQoYixlLGpbZV1bY10pfVguaGFzRGF0YShhKSYmKGg9WC5hY2Nlc3MoYSksaT1yLmV4dGVuZCh7fSxoKSxYLnNldChiLGkpKX19ZnVuY3Rpb24gSWEoYSxiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7ImlucHV0Ij09PWMmJmphLnRlc3QoYS50eXBlKT9iLmNoZWNrZWQ9YS5jaGVja2VkOiJpbnB1dCIhPT1jJiYidGV4dGFyZWEiIT09Y3x8KGIuZGVmYXVsdFZhbHVlPWEuZGVmYXVsdFZhbHVlKX1mdW5jdGlvbiBKYShhLGIsYyxkKXtiPWcuYXBwbHkoW10sYik7dmFyIGUsZixoLGksaixrLGw9MCxtPWEubGVuZ3RoLG49bS0xLHE9YlswXSxzPXIuaXNGdW5jdGlvbihxKTtpZihzfHxtPjEmJiJzdHJpbmciPT10eXBlb2YgcSYmIW8uY2hlY2tDbG9uZSYmQmEudGVzdChxKSlyZXR1cm4gYS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBmPWEuZXEoZSk7cyYmKGJbMF09cS5jYWxsKHRoaXMsZSxmLmh0bWwoKSkpLEphKGYsYixjLGQpfSk7aWYobSYmKGU9cWEoYixhWzBdLm93bmVyRG9jdW1lbnQsITEsYSxkKSxmPWUuZmlyc3RDaGlsZCwxPT09ZS5jaGlsZE5vZGVzLmxlbmd0aCYmKGU9ZiksZnx8ZCkpe2ZvcihoPXIubWFwKG5hKGUsInNjcmlwdCIpLEZhKSxpPWgubGVuZ3RoO2w8bTtsKyspaj1lLGwhPT1uJiYoaj1yLmNsb25lKGosITAsITApLGkmJnIubWVyZ2UoaCxuYShqLCJzY3JpcHQiKSkpLGMuY2FsbChhW2xdLGosbCk7aWYoaSlmb3Ioaz1oW2gubGVuZ3RoLTFdLm93bmVyRG9jdW1lbnQsci5tYXAoaCxHYSksbD0wO2w8aTtsKyspaj1oW2xdLGxhLnRlc3Qoai50eXBlfHwiIikmJiFXLmFjY2VzcyhqLCJnbG9iYWxFdmFsIikmJnIuY29udGFpbnMoayxqKSYmKGouc3JjP3IuX2V2YWxVcmwmJnIuX2V2YWxVcmwoai5zcmMpOnAoai50ZXh0Q29udGVudC5yZXBsYWNlKERhLCIiKSxrKSl9cmV0dXJuIGF9ZnVuY3Rpb24gS2EoYSxiLGMpe2Zvcih2YXIgZCxlPWI/ci5maWx0ZXIoYixhKTphLGY9MDtudWxsIT0oZD1lW2ZdKTtmKyspY3x8MSE9PWQubm9kZVR5cGV8fHIuY2xlYW5EYXRhKG5hKGQpKSxkLnBhcmVudE5vZGUmJihjJiZyLmNvbnRhaW5zKGQub3duZXJEb2N1bWVudCxkKSYmb2EobmEoZCwic2NyaXB0IikpLGQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChkKSk7cmV0dXJuIGF9ci5leHRlbmQoe2h0bWxQcmVmaWx0ZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSh6YSwiPCQxPjwvJDI+Iil9LGNsb25lOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGYsZyxoPWEuY2xvbmVOb2RlKCEwKSxpPXIuY29udGFpbnMoYS5vd25lckRvY3VtZW50LGEpO2lmKCEoby5ub0Nsb25lQ2hlY2tlZHx8MSE9PWEubm9kZVR5cGUmJjExIT09YS5ub2RlVHlwZXx8ci5pc1hNTERvYyhhKSkpZm9yKGc9bmEoaCksZj1uYShhKSxkPTAsZT1mLmxlbmd0aDtkPGU7ZCsrKUlhKGZbZF0sZ1tkXSk7aWYoYilpZihjKWZvcihmPWZ8fG5hKGEpLGc9Z3x8bmEoaCksZD0wLGU9Zi5sZW5ndGg7ZDxlO2QrKylIYShmW2RdLGdbZF0pO2Vsc2UgSGEoYSxoKTtyZXR1cm4gZz1uYShoLCJzY3JpcHQiKSxnLmxlbmd0aD4wJiZvYShnLCFpJiZuYShhLCJzY3JpcHQiKSksaH0sY2xlYW5EYXRhOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYixjLGQsZT1yLmV2ZW50LnNwZWNpYWwsZj0wO3ZvaWQgMCE9PShjPWFbZl0pO2YrKylpZihVKGMpKXtpZihiPWNbVy5leHBhbmRvXSl7aWYoYi5ldmVudHMpZm9yKGQgaW4gYi5ldmVudHMpZVtkXT9yLmV2ZW50LnJlbW92ZShjLGQpOnIucmVtb3ZlRXZlbnQoYyxkLGIuaGFuZGxlKTtjW1cuZXhwYW5kb109dm9pZCAwfWNbWC5leHBhbmRvXSYmKGNbWC5leHBhbmRvXT12b2lkIDApfX19KSxyLmZuLmV4dGVuZCh7ZGV0YWNoOmZ1bmN0aW9uKGEpe3JldHVybiBLYSh0aGlzLGEsITApfSxyZW1vdmU6ZnVuY3Rpb24oYSl7cmV0dXJuIEthKHRoaXMsYSl9LHRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIFQodGhpcyxmdW5jdGlvbihhKXtyZXR1cm4gdm9pZCAwPT09YT9yLnRleHQodGhpcyk6dGhpcy5lbXB0eSgpLmVhY2goZnVuY3Rpb24oKXsxIT09dGhpcy5ub2RlVHlwZSYmMTEhPT10aGlzLm5vZGVUeXBlJiY5IT09dGhpcy5ub2RlVHlwZXx8KHRoaXMudGV4dENvbnRlbnQ9YSl9KX0sbnVsbCxhLGFyZ3VtZW50cy5sZW5ndGgpfSxhcHBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gSmEodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oYSl7aWYoMT09PXRoaXMubm9kZVR5cGV8fDExPT09dGhpcy5ub2RlVHlwZXx8OT09PXRoaXMubm9kZVR5cGUpe3ZhciBiPUVhKHRoaXMsYSk7Yi5hcHBlbmRDaGlsZChhKX19KX0scHJlcGVuZDpmdW5jdGlvbigpe3JldHVybiBKYSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihhKXtpZigxPT09dGhpcy5ub2RlVHlwZXx8MTE9PT10aGlzLm5vZGVUeXBlfHw5PT09dGhpcy5ub2RlVHlwZSl7dmFyIGI9RWEodGhpcyxhKTtiLmluc2VydEJlZm9yZShhLGIuZmlyc3RDaGlsZCl9fSl9LGJlZm9yZTpmdW5jdGlvbigpe3JldHVybiBKYSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihhKXt0aGlzLnBhcmVudE5vZGUmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSx0aGlzKX0pfSxhZnRlcjpmdW5jdGlvbigpe3JldHVybiBKYSh0aGlzLGFyZ3VtZW50cyxmdW5jdGlvbihhKXt0aGlzLnBhcmVudE5vZGUmJnRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSx0aGlzLm5leHRTaWJsaW5nKX0pfSxlbXB0eTpmdW5jdGlvbigpe2Zvcih2YXIgYSxiPTA7bnVsbCE9KGE9dGhpc1tiXSk7YisrKTE9PT1hLm5vZGVUeXBlJiYoci5jbGVhbkRhdGEobmEoYSwhMSkpLGEudGV4dENvbnRlbnQ9IiIpO3JldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbihhLGIpe3JldHVybiBhPW51bGwhPWEmJmEsYj1udWxsPT1iP2E6Yix0aGlzLm1hcChmdW5jdGlvbigpe3JldHVybiByLmNsb25lKHRoaXMsYSxiKX0pfSxodG1sOmZ1bmN0aW9uKGEpe3JldHVybiBUKHRoaXMsZnVuY3Rpb24oYSl7dmFyIGI9dGhpc1swXXx8e30sYz0wLGQ9dGhpcy5sZW5ndGg7aWYodm9pZCAwPT09YSYmMT09PWIubm9kZVR5cGUpcmV0dXJuIGIuaW5uZXJIVE1MO2lmKCJzdHJpbmciPT10eXBlb2YgYSYmIUFhLnRlc3QoYSkmJiFtYVsoa2EuZXhlYyhhKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKV0pe2E9ci5odG1sUHJlZmlsdGVyKGEpO3RyeXtmb3IoO2M8ZDtjKyspYj10aGlzW2NdfHx7fSwxPT09Yi5ub2RlVHlwZSYmKHIuY2xlYW5EYXRhKG5hKGIsITEpKSxiLmlubmVySFRNTD1hKTtiPTB9Y2F0Y2goZSl7fX1iJiZ0aGlzLmVtcHR5KCkuYXBwZW5kKGEpfSxudWxsLGEsYXJndW1lbnRzLmxlbmd0aCl9LHJlcGxhY2VXaXRoOmZ1bmN0aW9uKCl7dmFyIGE9W107cmV0dXJuIEphKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGIpe3ZhciBjPXRoaXMucGFyZW50Tm9kZTtyLmluQXJyYXkodGhpcyxhKTwwJiYoci5jbGVhbkRhdGEobmEodGhpcykpLGMmJmMucmVwbGFjZUNoaWxkKGIsdGhpcykpfSxhKX19KSxyLmVhY2goe2FwcGVuZFRvOiJhcHBlbmQiLHByZXBlbmRUbzoicHJlcGVuZCIsaW5zZXJ0QmVmb3JlOiJiZWZvcmUiLGluc2VydEFmdGVyOiJhZnRlciIscmVwbGFjZUFsbDoicmVwbGFjZVdpdGgifSxmdW5jdGlvbihhLGIpe3IuZm5bYV09ZnVuY3Rpb24oYSl7Zm9yKHZhciBjLGQ9W10sZT1yKGEpLGY9ZS5sZW5ndGgtMSxnPTA7Zzw9ZjtnKyspYz1nPT09Zj90aGlzOnRoaXMuY2xvbmUoITApLHIoZVtnXSlbYl0oYyksaC5hcHBseShkLGMuZ2V0KCkpO3JldHVybiB0aGlzLnB1c2hTdGFjayhkKX19KTt2YXIgTGE9L15tYXJnaW4vLE1hPW5ldyBSZWdFeHAoIl4oIithYSsiKSg/IXB4KVthLXolXSskIiwiaSIpLE5hPWZ1bmN0aW9uKGIpe3ZhciBjPWIub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldztyZXR1cm4gYyYmYy5vcGVuZXJ8fChjPWEpLGMuZ2V0Q29tcHV0ZWRTdHlsZShiKX07IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYigpe2lmKGkpe2kuc3R5bGUuY3NzVGV4dD0iYm94LXNpemluZzpib3JkZXItYm94O3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6YmxvY2s7bWFyZ2luOmF1dG87Ym9yZGVyOjFweDtwYWRkaW5nOjFweDt0b3A6MSU7d2lkdGg6NTAlIixpLmlubmVySFRNTD0iIixyYS5hcHBlbmRDaGlsZChoKTt2YXIgYj1hLmdldENvbXB1dGVkU3R5bGUoaSk7Yz0iMSUiIT09Yi50b3AsZz0iMnB4Ij09PWIubWFyZ2luTGVmdCxlPSI0cHgiPT09Yi53aWR0aCxpLnN0eWxlLm1hcmdpblJpZ2h0PSI1MCUiLGY9IjRweCI9PT1iLm1hcmdpblJpZ2h0LHJhLnJlbW92ZUNoaWxkKGgpLGk9bnVsbH19dmFyIGMsZSxmLGcsaD1kLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGk9ZC5jcmVhdGVFbGVtZW50KCJkaXYiKTtpLnN0eWxlJiYoaS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iY29udGVudC1ib3giLGkuY2xvbmVOb2RlKCEwKS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iIixvLmNsZWFyQ2xvbmVTdHlsZT0iY29udGVudC1ib3giPT09aS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCxoLnN0eWxlLmNzc1RleHQ9ImJvcmRlcjowO3dpZHRoOjhweDtoZWlnaHQ6MDt0b3A6MDtsZWZ0Oi05OTk5cHg7cGFkZGluZzowO21hcmdpbi10b3A6MXB4O3Bvc2l0aW9uOmFic29sdXRlIixoLmFwcGVuZENoaWxkKGkpLHIuZXh0ZW5kKG8se3BpeGVsUG9zaXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gYigpLGN9LGJveFNpemluZ1JlbGlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGIoKSxlfSxwaXhlbE1hcmdpblJpZ2h0OmZ1bmN0aW9uKCl7cmV0dXJuIGIoKSxmfSxyZWxpYWJsZU1hcmdpbkxlZnQ6ZnVuY3Rpb24oKXtyZXR1cm4gYigpLGd9fSkpfSgpO2Z1bmN0aW9uIE9hKGEsYixjKXt2YXIgZCxlLGYsZyxoPWEuc3R5bGU7cmV0dXJuIGM9Y3x8TmEoYSksYyYmKGc9Yy5nZXRQcm9wZXJ0eVZhbHVlKGIpfHxjW2JdLCIiIT09Z3x8ci5jb250YWlucyhhLm93bmVyRG9jdW1lbnQsYSl8fChnPXIuc3R5bGUoYSxiKSksIW8ucGl4ZWxNYXJnaW5SaWdodCgpJiZNYS50ZXN0KGcpJiZMYS50ZXN0KGIpJiYoZD1oLndpZHRoLGU9aC5taW5XaWR0aCxmPWgubWF4V2lkdGgsaC5taW5XaWR0aD1oLm1heFdpZHRoPWgud2lkdGg9ZyxnPWMud2lkdGgsaC53aWR0aD1kLGgubWluV2lkdGg9ZSxoLm1heFdpZHRoPWYpKSx2b2lkIDAhPT1nP2crIiI6Z31mdW5jdGlvbiBQYShhLGIpe3JldHVybntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYSgpP3ZvaWQgZGVsZXRlIHRoaXMuZ2V0Oih0aGlzLmdldD1iKS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fX12YXIgUWE9L14obm9uZXx0YWJsZSg/IS1jW2VhXSkuKykvLFJhPS9eLS0vLFNhPXtwb3NpdGlvbjoiYWJzb2x1dGUiLHZpc2liaWxpdHk6ImhpZGRlbiIsZGlzcGxheToiYmxvY2sifSxUYT17bGV0dGVyU3BhY2luZzoiMCIsZm9udFdlaWdodDoiNDAwIn0sVWE9WyJXZWJraXQiLCJNb3oiLCJtcyJdLFZhPWQuY3JlYXRlRWxlbWVudCgiZGl2Iikuc3R5bGU7ZnVuY3Rpb24gV2EoYSl7aWYoYSBpbiBWYSlyZXR1cm4gYTt2YXIgYj1hWzBdLnRvVXBwZXJDYXNlKCkrYS5zbGljZSgxKSxjPVVhLmxlbmd0aDt3aGlsZShjLS0paWYoYT1VYVtjXStiLGEgaW4gVmEpcmV0dXJuIGF9ZnVuY3Rpb24gWGEoYSl7dmFyIGI9ci5jc3NQcm9wc1thXTtyZXR1cm4gYnx8KGI9ci5jc3NQcm9wc1thXT1XYShhKXx8YSksYn1mdW5jdGlvbiBZYShhLGIsYyl7dmFyIGQ9YmEuZXhlYyhiKTtyZXR1cm4gZD9NYXRoLm1heCgwLGRbMl0tKGN8fDApKSsoZFszXXx8InB4Iik6Yn1mdW5jdGlvbiBaYShhLGIsYyxkLGUpe3ZhciBmLGc9MDtmb3IoZj1jPT09KGQ/ImJvcmRlciI6ImNvbnRlbnQiKT80OiJ3aWR0aCI9PT1iPzE6MDtmPDQ7Zis9MikibWFyZ2luIj09PWMmJihnKz1yLmNzcyhhLGMrY2FbZl0sITAsZSkpLGQ/KCJjb250ZW50Ij09PWMmJihnLT1yLmNzcyhhLCJwYWRkaW5nIitjYVtmXSwhMCxlKSksIm1hcmdpbiIhPT1jJiYoZy09ci5jc3MoYSwiYm9yZGVyIitjYVtmXSsiV2lkdGgiLCEwLGUpKSk6KGcrPXIuY3NzKGEsInBhZGRpbmciK2NhW2ZdLCEwLGUpLCJwYWRkaW5nIiE9PWMmJihnKz1yLmNzcyhhLCJib3JkZXIiK2NhW2ZdKyJXaWR0aCIsITAsZSkpKTtyZXR1cm4gZ31mdW5jdGlvbiAkYShhLGIsYyl7dmFyIGQsZT1OYShhKSxmPU9hKGEsYixlKSxnPSJib3JkZXItYm94Ij09PXIuY3NzKGEsImJveFNpemluZyIsITEsZSk7cmV0dXJuIE1hLnRlc3QoZik/ZjooZD1nJiYoby5ib3hTaXppbmdSZWxpYWJsZSgpfHxmPT09YS5zdHlsZVtiXSksImF1dG8iPT09ZiYmKGY9YVsib2Zmc2V0IitiWzBdLnRvVXBwZXJDYXNlKCkrYi5zbGljZSgxKV0pLGY9cGFyc2VGbG9hdChmKXx8MCxmK1phKGEsYixjfHwoZz8iYm9yZGVyIjoiY29udGVudCIpLGQsZSkrInB4Iil9ci5leHRlbmQoe2Nzc0hvb2tzOntvcGFjaXR5OntnZXQ6ZnVuY3Rpb24oYSxiKXtpZihiKXt2YXIgYz1PYShhLCJvcGFjaXR5Iik7cmV0dXJuIiI9PT1jPyIxIjpjfX19fSxjc3NOdW1iZXI6e2FuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiEwLGNvbHVtbkNvdW50OiEwLGZpbGxPcGFjaXR5OiEwLGZsZXhHcm93OiEwLGZsZXhTaHJpbms6ITAsZm9udFdlaWdodDohMCxsaW5lSGVpZ2h0OiEwLG9wYWNpdHk6ITAsb3JkZXI6ITAsb3JwaGFuczohMCx3aWRvd3M6ITAsekluZGV4OiEwLHpvb206ITB9LGNzc1Byb3BzOnsiZmxvYXQiOiJjc3NGbG9hdCJ9LHN0eWxlOmZ1bmN0aW9uKGEsYixjLGQpe2lmKGEmJjMhPT1hLm5vZGVUeXBlJiY4IT09YS5ub2RlVHlwZSYmYS5zdHlsZSl7dmFyIGUsZixnLGg9ci5jYW1lbENhc2UoYiksaT1SYS50ZXN0KGIpLGo9YS5zdHlsZTtyZXR1cm4gaXx8KGI9WGEoaCkpLGc9ci5jc3NIb29rc1tiXXx8ci5jc3NIb29rc1toXSx2b2lkIDA9PT1jP2cmJiJnZXQiaW4gZyYmdm9pZCAwIT09KGU9Zy5nZXQoYSwhMSxkKSk/ZTpqW2JdOihmPXR5cGVvZiBjLCJzdHJpbmciPT09ZiYmKGU9YmEuZXhlYyhjKSkmJmVbMV0mJihjPWZhKGEsYixlKSxmPSJudW1iZXIiKSxudWxsIT1jJiZjPT09YyYmKCJudW1iZXIiPT09ZiYmKGMrPWUmJmVbM118fChyLmNzc051bWJlcltoXT8iIjoicHgiKSksby5jbGVhckNsb25lU3R5bGV8fCIiIT09Y3x8MCE9PWIuaW5kZXhPZigiYmFja2dyb3VuZCIpfHwoaltiXT0iaW5oZXJpdCIpLGcmJiJzZXQiaW4gZyYmdm9pZCAwPT09KGM9Zy5zZXQoYSxjLGQpKXx8KGk/ai5zZXRQcm9wZXJ0eShiLGMpOmpbYl09YykpLHZvaWQgMCl9fSxjc3M6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGUsZixnLGg9ci5jYW1lbENhc2UoYiksaT1SYS50ZXN0KGIpO3JldHVybiBpfHwoYj1YYShoKSksZz1yLmNzc0hvb2tzW2JdfHxyLmNzc0hvb2tzW2hdLGcmJiJnZXQiaW4gZyYmKGU9Zy5nZXQoYSwhMCxjKSksdm9pZCAwPT09ZSYmKGU9T2EoYSxiLGQpKSwibm9ybWFsIj09PWUmJmIgaW4gVGEmJihlPVRhW2JdKSwiIj09PWN8fGM/KGY9cGFyc2VGbG9hdChlKSxjPT09ITB8fGlzRmluaXRlKGYpP2Z8fDA6ZSk6ZX19KSxyLmVhY2goWyJoZWlnaHQiLCJ3aWR0aCJdLGZ1bmN0aW9uKGEsYil7ci5jc3NIb29rc1tiXT17Z2V0OmZ1bmN0aW9uKGEsYyxkKXtpZihjKXJldHVybiFRYS50ZXN0KHIuY3NzKGEsImRpc3BsYXkiKSl8fGEuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgmJmEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg/JGEoYSxiLGQpOmVhKGEsU2EsZnVuY3Rpb24oKXtyZXR1cm4gJGEoYSxiLGQpfSl9LHNldDpmdW5jdGlvbihhLGMsZCl7dmFyIGUsZj1kJiZOYShhKSxnPWQmJlphKGEsYixkLCJib3JkZXItYm94Ij09PXIuY3NzKGEsImJveFNpemluZyIsITEsZiksZik7cmV0dXJuIGcmJihlPWJhLmV4ZWMoYykpJiYicHgiIT09KGVbM118fCJweCIpJiYoYS5zdHlsZVtiXT1jLGM9ci5jc3MoYSxiKSksWWEoYSxjLGcpfX19KSxyLmNzc0hvb2tzLm1hcmdpbkxlZnQ9UGEoby5yZWxpYWJsZU1hcmdpbkxlZnQsZnVuY3Rpb24oYSxiKXtpZihiKXJldHVybihwYXJzZUZsb2F0KE9hKGEsIm1hcmdpbkxlZnQiKSl8fGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdC1lYShhLHttYXJnaW5MZWZ0OjB9LGZ1bmN0aW9uKCl7cmV0dXJuIGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdH0pKSsicHgifSksci5lYWNoKHttYXJnaW46IiIscGFkZGluZzoiIixib3JkZXI6IldpZHRoIn0sZnVuY3Rpb24oYSxiKXtyLmNzc0hvb2tzW2ErYl09e2V4cGFuZDpmdW5jdGlvbihjKXtmb3IodmFyIGQ9MCxlPXt9LGY9InN0cmluZyI9PXR5cGVvZiBjP2Muc3BsaXQoIiAiKTpbY107ZDw0O2QrKyllW2ErY2FbZF0rYl09ZltkXXx8ZltkLTJdfHxmWzBdO3JldHVybiBlfX0sTGEudGVzdChhKXx8KHIuY3NzSG9va3NbYStiXS5zZXQ9WWEpfSksci5mbi5leHRlbmQoe2NzczpmdW5jdGlvbihhLGIpe3JldHVybiBUKHRoaXMsZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZj17fSxnPTA7aWYoQXJyYXkuaXNBcnJheShiKSl7Zm9yKGQ9TmEoYSksZT1iLmxlbmd0aDtnPGU7ZysrKWZbYltnXV09ci5jc3MoYSxiW2ddLCExLGQpO3JldHVybiBmfXJldHVybiB2b2lkIDAhPT1jP3Iuc3R5bGUoYSxiLGMpOnIuY3NzKGEsYil9LGEsYixhcmd1bWVudHMubGVuZ3RoPjEpfX0pO2Z1bmN0aW9uIF9hKGEsYixjLGQsZSl7cmV0dXJuIG5ldyBfYS5wcm90b3R5cGUuaW5pdChhLGIsYyxkLGUpfXIuVHdlZW49X2EsX2EucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpfYSxpbml0OmZ1bmN0aW9uKGEsYixjLGQsZSxmKXt0aGlzLmVsZW09YSx0aGlzLnByb3A9Yyx0aGlzLmVhc2luZz1lfHxyLmVhc2luZy5fZGVmYXVsdCx0aGlzLm9wdGlvbnM9Yix0aGlzLnN0YXJ0PXRoaXMubm93PXRoaXMuY3VyKCksdGhpcy5lbmQ9ZCx0aGlzLnVuaXQ9Znx8KHIuY3NzTnVtYmVyW2NdPyIiOiJweCIpfSxjdXI6ZnVuY3Rpb24oKXt2YXIgYT1fYS5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gYSYmYS5nZXQ/YS5nZXQodGhpcyk6X2EucHJvcEhvb2tzLl9kZWZhdWx0LmdldCh0aGlzKX0scnVuOmZ1bmN0aW9uKGEpe3ZhciBiLGM9X2EucHJvcEhvb2tzW3RoaXMucHJvcF07cmV0dXJuIHRoaXMub3B0aW9ucy5kdXJhdGlvbj90aGlzLnBvcz1iPXIuZWFzaW5nW3RoaXMuZWFzaW5nXShhLHRoaXMub3B0aW9ucy5kdXJhdGlvbiphLDAsMSx0aGlzLm9wdGlvbnMuZHVyYXRpb24pOnRoaXMucG9zPWI9YSx0aGlzLm5vdz0odGhpcy5lbmQtdGhpcy5zdGFydCkqYit0aGlzLnN0YXJ0LHRoaXMub3B0aW9ucy5zdGVwJiZ0aGlzLm9wdGlvbnMuc3RlcC5jYWxsKHRoaXMuZWxlbSx0aGlzLm5vdyx0aGlzKSxjJiZjLnNldD9jLnNldCh0aGlzKTpfYS5wcm9wSG9va3MuX2RlZmF1bHQuc2V0KHRoaXMpLHRoaXN9fSxfYS5wcm90b3R5cGUuaW5pdC5wcm90b3R5cGU9X2EucHJvdG90eXBlLF9hLnByb3BIb29rcz17X2RlZmF1bHQ6e2dldDpmdW5jdGlvbihhKXt2YXIgYjtyZXR1cm4gMSE9PWEuZWxlbS5ub2RlVHlwZXx8bnVsbCE9YS5lbGVtW2EucHJvcF0mJm51bGw9PWEuZWxlbS5zdHlsZVthLnByb3BdP2EuZWxlbVthLnByb3BdOihiPXIuY3NzKGEuZWxlbSxhLnByb3AsIiIpLGImJiJhdXRvIiE9PWI/YjowKX0sc2V0OmZ1bmN0aW9uKGEpe3IuZnguc3RlcFthLnByb3BdP3IuZnguc3RlcFthLnByb3BdKGEpOjEhPT1hLmVsZW0ubm9kZVR5cGV8fG51bGw9PWEuZWxlbS5zdHlsZVtyLmNzc1Byb3BzW2EucHJvcF1dJiYhci5jc3NIb29rc1thLnByb3BdP2EuZWxlbVthLnByb3BdPWEubm93OnIuc3R5bGUoYS5lbGVtLGEucHJvcCxhLm5vdythLnVuaXQpfX19LF9hLnByb3BIb29rcy5zY3JvbGxUb3A9X2EucHJvcEhvb2tzLnNjcm9sbExlZnQ9e3NldDpmdW5jdGlvbihhKXthLmVsZW0ubm9kZVR5cGUmJmEuZWxlbS5wYXJlbnROb2RlJiYoYS5lbGVtW2EucHJvcF09YS5ub3cpfX0sci5lYXNpbmc9e2xpbmVhcjpmdW5jdGlvbihhKXtyZXR1cm4gYX0sc3dpbmc6ZnVuY3Rpb24oYSl7cmV0dXJuLjUtTWF0aC5jb3MoYSpNYXRoLlBJKS8yfSxfZGVmYXVsdDoic3dpbmcifSxyLmZ4PV9hLnByb3RvdHlwZS5pbml0LHIuZnguc3RlcD17fTt2YXIgYWIsYmIsY2I9L14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLGRiPS9xdWV1ZUhvb2tzJC87ZnVuY3Rpb24gZWIoKXtiYiYmKGQuaGlkZGVuPT09ITEmJmEucmVxdWVzdEFuaW1hdGlvbkZyYW1lP2EucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGViKTphLnNldFRpbWVvdXQoZWIsci5meC5pbnRlcnZhbCksci5meC50aWNrKCkpfWZ1bmN0aW9uIGZiKCl7cmV0dXJuIGEuc2V0VGltZW91dChmdW5jdGlvbigpe2FiPXZvaWQgMH0pLGFiPXIubm93KCl9ZnVuY3Rpb24gZ2IoYSxiKXt2YXIgYyxkPTAsZT17aGVpZ2h0OmF9O2ZvcihiPWI/MTowO2Q8NDtkKz0yLWIpYz1jYVtkXSxlWyJtYXJnaW4iK2NdPWVbInBhZGRpbmciK2NdPWE7cmV0dXJuIGImJihlLm9wYWNpdHk9ZS53aWR0aD1hKSxlfWZ1bmN0aW9uIGhiKGEsYixjKXtmb3IodmFyIGQsZT0oa2IudHdlZW5lcnNbYl18fFtdKS5jb25jYXQoa2IudHdlZW5lcnNbIioiXSksZj0wLGc9ZS5sZW5ndGg7ZjxnO2YrKylpZihkPWVbZl0uY2FsbChjLGIsYSkpcmV0dXJuIGR9ZnVuY3Rpb24gaWIoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGssbD0id2lkdGgiaW4gYnx8ImhlaWdodCJpbiBiLG09dGhpcyxuPXt9LG89YS5zdHlsZSxwPWEubm9kZVR5cGUmJmRhKGEpLHE9Vy5nZXQoYSwiZnhzaG93Iik7Yy5xdWV1ZXx8KGc9ci5fcXVldWVIb29rcyhhLCJmeCIpLG51bGw9PWcudW5xdWV1ZWQmJihnLnVucXVldWVkPTAsaD1nLmVtcHR5LmZpcmUsZy5lbXB0eS5maXJlPWZ1bmN0aW9uKCl7Zy51bnF1ZXVlZHx8aCgpfSksZy51bnF1ZXVlZCsrLG0uYWx3YXlzKGZ1bmN0aW9uKCl7bS5hbHdheXMoZnVuY3Rpb24oKXtnLnVucXVldWVkLS0sci5xdWV1ZShhLCJmeCIpLmxlbmd0aHx8Zy5lbXB0eS5maXJlKCl9KX0pKTtmb3IoZCBpbiBiKWlmKGU9YltkXSxjYi50ZXN0KGUpKXtpZihkZWxldGUgYltkXSxmPWZ8fCJ0b2dnbGUiPT09ZSxlPT09KHA/ImhpZGUiOiJzaG93Iikpe2lmKCJzaG93IiE9PWV8fCFxfHx2b2lkIDA9PT1xW2RdKWNvbnRpbnVlO3A9ITB9bltkXT1xJiZxW2RdfHxyLnN0eWxlKGEsZCl9aWYoaT0hci5pc0VtcHR5T2JqZWN0KGIpLGl8fCFyLmlzRW1wdHlPYmplY3Qobikpe2wmJjE9PT1hLm5vZGVUeXBlJiYoYy5vdmVyZmxvdz1bby5vdmVyZmxvdyxvLm92ZXJmbG93WCxvLm92ZXJmbG93WV0saj1xJiZxLmRpc3BsYXksbnVsbD09aiYmKGo9Vy5nZXQoYSwiZGlzcGxheSIpKSxrPXIuY3NzKGEsImRpc3BsYXkiKSwibm9uZSI9PT1rJiYoaj9rPWo6KGlhKFthXSwhMCksaj1hLnN0eWxlLmRpc3BsYXl8fGosaz1yLmNzcyhhLCJkaXNwbGF5IiksaWEoW2FdKSkpLCgiaW5saW5lIj09PWt8fCJpbmxpbmUtYmxvY2siPT09ayYmbnVsbCE9aikmJiJub25lIj09PXIuY3NzKGEsImZsb2F0IikmJihpfHwobS5kb25lKGZ1bmN0aW9uKCl7by5kaXNwbGF5PWp9KSxudWxsPT1qJiYoaz1vLmRpc3BsYXksaj0ibm9uZSI9PT1rPyIiOmspKSxvLmRpc3BsYXk9ImlubGluZS1ibG9jayIpKSxjLm92ZXJmbG93JiYoby5vdmVyZmxvdz0iaGlkZGVuIixtLmFsd2F5cyhmdW5jdGlvbigpe28ub3ZlcmZsb3c9Yy5vdmVyZmxvd1swXSxvLm92ZXJmbG93WD1jLm92ZXJmbG93WzFdLG8ub3ZlcmZsb3dZPWMub3ZlcmZsb3dbMl19KSksaT0hMTtmb3IoZCBpbiBuKWl8fChxPyJoaWRkZW4iaW4gcSYmKHA9cS5oaWRkZW4pOnE9Vy5hY2Nlc3MoYSwiZnhzaG93Iix7ZGlzcGxheTpqfSksZiYmKHEuaGlkZGVuPSFwKSxwJiZpYShbYV0sITApLG0uZG9uZShmdW5jdGlvbigpe3B8fGlhKFthXSksVy5yZW1vdmUoYSwiZnhzaG93Iik7Zm9yKGQgaW4gbilyLnN0eWxlKGEsZCxuW2RdKX0pKSxpPWhiKHA/cVtkXTowLGQsbSksZCBpbiBxfHwocVtkXT1pLnN0YXJ0LHAmJihpLmVuZD1pLnN0YXJ0LGkuc3RhcnQ9MCkpfX1mdW5jdGlvbiBqYihhLGIpe3ZhciBjLGQsZSxmLGc7Zm9yKGMgaW4gYSlpZihkPXIuY2FtZWxDYXNlKGMpLGU9YltkXSxmPWFbY10sQXJyYXkuaXNBcnJheShmKSYmKGU9ZlsxXSxmPWFbY109ZlswXSksYyE9PWQmJihhW2RdPWYsZGVsZXRlIGFbY10pLGc9ci5jc3NIb29rc1tkXSxnJiYiZXhwYW5kImluIGcpe2Y9Zy5leHBhbmQoZiksZGVsZXRlIGFbZF07Zm9yKGMgaW4gZiljIGluIGF8fChhW2NdPWZbY10sYltjXT1lKX1lbHNlIGJbZF09ZX1mdW5jdGlvbiBrYihhLGIsYyl7dmFyIGQsZSxmPTAsZz1rYi5wcmVmaWx0ZXJzLmxlbmd0aCxoPXIuRGVmZXJyZWQoKS5hbHdheXMoZnVuY3Rpb24oKXtkZWxldGUgaS5lbGVtfSksaT1mdW5jdGlvbigpe2lmKGUpcmV0dXJuITE7Zm9yKHZhciBiPWFifHxmYigpLGM9TWF0aC5tYXgoMCxqLnN0YXJ0VGltZStqLmR1cmF0aW9uLWIpLGQ9Yy9qLmR1cmF0aW9ufHwwLGY9MS1kLGc9MCxpPWoudHdlZW5zLmxlbmd0aDtnPGk7ZysrKWoudHdlZW5zW2ddLnJ1bihmKTtyZXR1cm4gaC5ub3RpZnlXaXRoKGEsW2osZixjXSksZjwxJiZpP2M6KGl8fGgubm90aWZ5V2l0aChhLFtqLDEsMF0pLGgucmVzb2x2ZVdpdGgoYSxbal0pLCExKX0saj1oLnByb21pc2Uoe2VsZW06YSxwcm9wczpyLmV4dGVuZCh7fSxiKSxvcHRzOnIuZXh0ZW5kKCEwLHtzcGVjaWFsRWFzaW5nOnt9LGVhc2luZzpyLmVhc2luZy5fZGVmYXVsdH0sYyksb3JpZ2luYWxQcm9wZXJ0aWVzOmIsb3JpZ2luYWxPcHRpb25zOmMsc3RhcnRUaW1lOmFifHxmYigpLGR1cmF0aW9uOmMuZHVyYXRpb24sdHdlZW5zOltdLGNyZWF0ZVR3ZWVuOmZ1bmN0aW9uKGIsYyl7dmFyIGQ9ci5Ud2VlbihhLGoub3B0cyxiLGMsai5vcHRzLnNwZWNpYWxFYXNpbmdbYl18fGoub3B0cy5lYXNpbmcpO3JldHVybiBqLnR3ZWVucy5wdXNoKGQpLGR9LHN0b3A6ZnVuY3Rpb24oYil7dmFyIGM9MCxkPWI/ai50d2VlbnMubGVuZ3RoOjA7aWYoZSlyZXR1cm4gdGhpcztmb3IoZT0hMDtjPGQ7YysrKWoudHdlZW5zW2NdLnJ1bigxKTtyZXR1cm4gYj8oaC5ub3RpZnlXaXRoKGEsW2osMSwwXSksaC5yZXNvbHZlV2l0aChhLFtqLGJdKSk6aC5yZWplY3RXaXRoKGEsW2osYl0pLHRoaXN9fSksaz1qLnByb3BzO2ZvcihqYihrLGoub3B0cy5zcGVjaWFsRWFzaW5nKTtmPGc7ZisrKWlmKGQ9a2IucHJlZmlsdGVyc1tmXS5jYWxsKGosYSxrLGoub3B0cykpcmV0dXJuIHIuaXNGdW5jdGlvbihkLnN0b3ApJiYoci5fcXVldWVIb29rcyhqLmVsZW0sai5vcHRzLnF1ZXVlKS5zdG9wPXIucHJveHkoZC5zdG9wLGQpKSxkO3JldHVybiByLm1hcChrLGhiLGopLHIuaXNGdW5jdGlvbihqLm9wdHMuc3RhcnQpJiZqLm9wdHMuc3RhcnQuY2FsbChhLGopLGoucHJvZ3Jlc3Moai5vcHRzLnByb2dyZXNzKS5kb25lKGoub3B0cy5kb25lLGoub3B0cy5jb21wbGV0ZSkuZmFpbChqLm9wdHMuZmFpbCkuYWx3YXlzKGoub3B0cy5hbHdheXMpLHIuZngudGltZXIoci5leHRlbmQoaSx7ZWxlbTphLGFuaW06aixxdWV1ZTpqLm9wdHMucXVldWV9KSksan1yLkFuaW1hdGlvbj1yLmV4dGVuZChrYix7dHdlZW5lcnM6eyIqIjpbZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmNyZWF0ZVR3ZWVuKGEsYik7cmV0dXJuIGZhKGMuZWxlbSxhLGJhLmV4ZWMoYiksYyksY31dfSx0d2VlbmVyOmZ1bmN0aW9uKGEsYil7ci5pc0Z1bmN0aW9uKGEpPyhiPWEsYT1bIioiXSk6YT1hLm1hdGNoKEwpO2Zvcih2YXIgYyxkPTAsZT1hLmxlbmd0aDtkPGU7ZCsrKWM9YVtkXSxrYi50d2VlbmVyc1tjXT1rYi50d2VlbmVyc1tjXXx8W10sa2IudHdlZW5lcnNbY10udW5zaGlmdChiKX0scHJlZmlsdGVyczpbaWJdLHByZWZpbHRlcjpmdW5jdGlvbihhLGIpe2I/a2IucHJlZmlsdGVycy51bnNoaWZ0KGEpOmtiLnByZWZpbHRlcnMucHVzaChhKX19KSxyLnNwZWVkPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hJiYib2JqZWN0Ij09dHlwZW9mIGE/ci5leHRlbmQoe30sYSk6e2NvbXBsZXRlOmN8fCFjJiZifHxyLmlzRnVuY3Rpb24oYSkmJmEsZHVyYXRpb246YSxlYXNpbmc6YyYmYnx8YiYmIXIuaXNGdW5jdGlvbihiKSYmYn07cmV0dXJuIHIuZngub2ZmP2QuZHVyYXRpb249MDoibnVtYmVyIiE9dHlwZW9mIGQuZHVyYXRpb24mJihkLmR1cmF0aW9uIGluIHIuZnguc3BlZWRzP2QuZHVyYXRpb249ci5meC5zcGVlZHNbZC5kdXJhdGlvbl06ZC5kdXJhdGlvbj1yLmZ4LnNwZWVkcy5fZGVmYXVsdCksbnVsbCE9ZC5xdWV1ZSYmZC5xdWV1ZSE9PSEwfHwoZC5xdWV1ZT0iZngiKSxkLm9sZD1kLmNvbXBsZXRlLGQuY29tcGxldGU9ZnVuY3Rpb24oKXtyLmlzRnVuY3Rpb24oZC5vbGQpJiZkLm9sZC5jYWxsKHRoaXMpLGQucXVldWUmJnIuZGVxdWV1ZSh0aGlzLGQucXVldWUpfSxkfSxyLmZuLmV4dGVuZCh7ZmFkZVRvOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLmZpbHRlcihkYSkuY3NzKCJvcGFjaXR5IiwwKS5zaG93KCkuZW5kKCkuYW5pbWF0ZSh7b3BhY2l0eTpifSxhLGMsZCl9LGFuaW1hdGU6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9ci5pc0VtcHR5T2JqZWN0KGEpLGY9ci5zcGVlZChiLGMsZCksZz1mdW5jdGlvbigpe3ZhciBiPWtiKHRoaXMsci5leHRlbmQoe30sYSksZik7KGV8fFcuZ2V0KHRoaXMsImZpbmlzaCIpKSYmYi5zdG9wKCEwKX07cmV0dXJuIGcuZmluaXNoPWcsZXx8Zi5xdWV1ZT09PSExP3RoaXMuZWFjaChnKTp0aGlzLnF1ZXVlKGYucXVldWUsZyl9LHN0b3A6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWZ1bmN0aW9uKGEpe3ZhciBiPWEuc3RvcDtkZWxldGUgYS5zdG9wLGIoYyl9O3JldHVybiJzdHJpbmciIT10eXBlb2YgYSYmKGM9YixiPWEsYT12b2lkIDApLGImJmEhPT0hMSYmdGhpcy5xdWV1ZShhfHwiZngiLFtdKSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj0hMCxlPW51bGwhPWEmJmErInF1ZXVlSG9va3MiLGY9ci50aW1lcnMsZz1XLmdldCh0aGlzKTtpZihlKWdbZV0mJmdbZV0uc3RvcCYmZChnW2VdKTtlbHNlIGZvcihlIGluIGcpZ1tlXSYmZ1tlXS5zdG9wJiZkYi50ZXN0KGUpJiZkKGdbZV0pO2ZvcihlPWYubGVuZ3RoO2UtLTspZltlXS5lbGVtIT09dGhpc3x8bnVsbCE9YSYmZltlXS5xdWV1ZSE9PWF8fChmW2VdLmFuaW0uc3RvcChjKSxiPSExLGYuc3BsaWNlKGUsMSkpOyFiJiZjfHxyLmRlcXVldWUodGhpcyxhKX0pfSxmaW5pc2g6ZnVuY3Rpb24oYSl7cmV0dXJuIGEhPT0hMSYmKGE9YXx8ImZ4IiksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGIsYz1XLmdldCh0aGlzKSxkPWNbYSsicXVldWUiXSxlPWNbYSsicXVldWVIb29rcyJdLGY9ci50aW1lcnMsZz1kP2QubGVuZ3RoOjA7Zm9yKGMuZmluaXNoPSEwLHIucXVldWUodGhpcyxhLFtdKSxlJiZlLnN0b3AmJmUuc3RvcC5jYWxsKHRoaXMsITApLGI9Zi5sZW5ndGg7Yi0tOylmW2JdLmVsZW09PT10aGlzJiZmW2JdLnF1ZXVlPT09YSYmKGZbYl0uYW5pbS5zdG9wKCEwKSxmLnNwbGljZShiLDEpKTtmb3IoYj0wO2I8ZztiKyspZFtiXSYmZFtiXS5maW5pc2gmJmRbYl0uZmluaXNoLmNhbGwodGhpcyk7ZGVsZXRlIGMuZmluaXNofSl9fSksci5lYWNoKFsidG9nZ2xlIiwic2hvdyIsImhpZGUiXSxmdW5jdGlvbihhLGIpe3ZhciBjPXIuZm5bYl07ci5mbltiXT1mdW5jdGlvbihhLGQsZSl7cmV0dXJuIG51bGw9PWF8fCJib29sZWFuIj09dHlwZW9mIGE/Yy5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dGhpcy5hbmltYXRlKGdiKGIsITApLGEsZCxlKX19KSxyLmVhY2goe3NsaWRlRG93bjpnYigic2hvdyIpLHNsaWRlVXA6Z2IoImhpZGUiKSxzbGlkZVRvZ2dsZTpnYigidG9nZ2xlIiksZmFkZUluOntvcGFjaXR5OiJzaG93In0sZmFkZU91dDp7b3BhY2l0eToiaGlkZSJ9LGZhZGVUb2dnbGU6e29wYWNpdHk6InRvZ2dsZSJ9fSxmdW5jdGlvbihhLGIpe3IuZm5bYV09ZnVuY3Rpb24oYSxjLGQpe3JldHVybiB0aGlzLmFuaW1hdGUoYixhLGMsZCl9fSksci50aW1lcnM9W10sci5meC50aWNrPWZ1bmN0aW9uKCl7dmFyIGEsYj0wLGM9ci50aW1lcnM7Zm9yKGFiPXIubm93KCk7YjxjLmxlbmd0aDtiKyspYT1jW2JdLGEoKXx8Y1tiXSE9PWF8fGMuc3BsaWNlKGItLSwxKTtjLmxlbmd0aHx8ci5meC5zdG9wKCksYWI9dm9pZCAwfSxyLmZ4LnRpbWVyPWZ1bmN0aW9uKGEpe3IudGltZXJzLnB1c2goYSksci5meC5zdGFydCgpfSxyLmZ4LmludGVydmFsPTEzLHIuZnguc3RhcnQ9ZnVuY3Rpb24oKXtiYnx8KGJiPSEwLGViKCkpfSxyLmZ4LnN0b3A9ZnVuY3Rpb24oKXtiYj1udWxsfSxyLmZ4LnNwZWVkcz17c2xvdzo2MDAsZmFzdDoyMDAsX2RlZmF1bHQ6NDAwfSxyLmZuLmRlbGF5PWZ1bmN0aW9uKGIsYyl7cmV0dXJuIGI9ci5meD9yLmZ4LnNwZWVkc1tiXXx8YjpiLGM9Y3x8ImZ4Iix0aGlzLnF1ZXVlKGMsZnVuY3Rpb24oYyxkKXt2YXIgZT1hLnNldFRpbWVvdXQoYyxiKTtkLnN0b3A9ZnVuY3Rpb24oKXthLmNsZWFyVGltZW91dChlKX19KX0sZnVuY3Rpb24oKXt2YXIgYT1kLmNyZWF0ZUVsZW1lbnQoImlucHV0IiksYj1kLmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpLGM9Yi5hcHBlbmRDaGlsZChkLmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpKTthLnR5cGU9ImNoZWNrYm94IixvLmNoZWNrT249IiIhPT1hLnZhbHVlLG8ub3B0U2VsZWN0ZWQ9Yy5zZWxlY3RlZCxhPWQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxhLnZhbHVlPSJ0IixhLnR5cGU9InJhZGlvIixvLnJhZGlvVmFsdWU9InQiPT09YS52YWx1ZX0oKTt2YXIgbGIsbWI9ci5leHByLmF0dHJIYW5kbGU7ci5mbi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVCh0aGlzLHIuYXR0cixhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlQXR0cjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7ci5yZW1vdmVBdHRyKHRoaXMsYSl9KX19KSxyLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmPWEubm9kZVR5cGU7aWYoMyE9PWYmJjghPT1mJiYyIT09ZilyZXR1cm4idW5kZWZpbmVkIj09dHlwZW9mIGEuZ2V0QXR0cmlidXRlP3IucHJvcChhLGIsYyk6KDE9PT1mJiZyLmlzWE1MRG9jKGEpfHwoZT1yLmF0dHJIb29rc1tiLnRvTG93ZXJDYXNlKCldfHwoci5leHByLm1hdGNoLmJvb2wudGVzdChiKT9sYjp2b2lkIDApKSx2b2lkIDAhPT1jP251bGw9PT1jP3ZvaWQgci5yZW1vdmVBdHRyKGEsYik6ZSYmInNldCJpbiBlJiZ2b2lkIDAhPT0oZD1lLnNldChhLGMsYikpP2Q6KGEuc2V0QXR0cmlidXRlKGIsYysiIiksYyk6ZSYmImdldCJpbiBlJiZudWxsIT09KGQ9ZS5nZXQoYSxiKSk/ZDooZD1yLmZpbmQuYXR0cihhLGIpLApudWxsPT1kP3ZvaWQgMDpkKSl9LGF0dHJIb29rczp7dHlwZTp7c2V0OmZ1bmN0aW9uKGEsYil7aWYoIW8ucmFkaW9WYWx1ZSYmInJhZGlvIj09PWImJkIoYSwiaW5wdXQiKSl7dmFyIGM9YS52YWx1ZTtyZXR1cm4gYS5zZXRBdHRyaWJ1dGUoInR5cGUiLGIpLGMmJihhLnZhbHVlPWMpLGJ9fX19LHJlbW92ZUF0dHI6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPTAsZT1iJiZiLm1hdGNoKEwpO2lmKGUmJjE9PT1hLm5vZGVUeXBlKXdoaWxlKGM9ZVtkKytdKWEucmVtb3ZlQXR0cmlidXRlKGMpfX0pLGxiPXtzZXQ6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBiPT09ITE/ci5yZW1vdmVBdHRyKGEsYyk6YS5zZXRBdHRyaWJ1dGUoYyxjKSxjfX0sci5lYWNoKHIuZXhwci5tYXRjaC5ib29sLnNvdXJjZS5tYXRjaCgvXHcrL2cpLGZ1bmN0aW9uKGEsYil7dmFyIGM9bWJbYl18fHIuZmluZC5hdHRyO21iW2JdPWZ1bmN0aW9uKGEsYixkKXt2YXIgZSxmLGc9Yi50b0xvd2VyQ2FzZSgpO3JldHVybiBkfHwoZj1tYltnXSxtYltnXT1lLGU9bnVsbCE9YyhhLGIsZCk/ZzpudWxsLG1iW2ddPWYpLGV9fSk7dmFyIG5iPS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2ksb2I9L14oPzphfGFyZWEpJC9pO3IuZm4uZXh0ZW5kKHtwcm9wOmZ1bmN0aW9uKGEsYil7cmV0dXJuIFQodGhpcyxyLnByb3AsYSxiLGFyZ3VtZW50cy5sZW5ndGg+MSl9LHJlbW92ZVByb3A6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2RlbGV0ZSB0aGlzW3IucHJvcEZpeFthXXx8YV19KX19KSxyLmV4dGVuZCh7cHJvcDpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmPWEubm9kZVR5cGU7aWYoMyE9PWYmJjghPT1mJiYyIT09ZilyZXR1cm4gMT09PWYmJnIuaXNYTUxEb2MoYSl8fChiPXIucHJvcEZpeFtiXXx8YixlPXIucHJvcEhvb2tzW2JdKSx2b2lkIDAhPT1jP2UmJiJzZXQiaW4gZSYmdm9pZCAwIT09KGQ9ZS5zZXQoYSxjLGIpKT9kOmFbYl09YzplJiYiZ2V0ImluIGUmJm51bGwhPT0oZD1lLmdldChhLGIpKT9kOmFbYl19LHByb3BIb29rczp7dGFiSW5kZXg6e2dldDpmdW5jdGlvbihhKXt2YXIgYj1yLmZpbmQuYXR0cihhLCJ0YWJpbmRleCIpO3JldHVybiBiP3BhcnNlSW50KGIsMTApOm5iLnRlc3QoYS5ub2RlTmFtZSl8fG9iLnRlc3QoYS5ub2RlTmFtZSkmJmEuaHJlZj8wOi0xfX19LHByb3BGaXg6eyJmb3IiOiJodG1sRm9yIiwiY2xhc3MiOiJjbGFzc05hbWUifX0pLG8ub3B0U2VsZWN0ZWR8fChyLnByb3BIb29rcy5zZWxlY3RlZD17Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiPWEucGFyZW50Tm9kZTtyZXR1cm4gYiYmYi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCxudWxsfSxzZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5wYXJlbnROb2RlO2ImJihiLnNlbGVjdGVkSW5kZXgsYi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCl9fSksci5lYWNoKFsidGFiSW5kZXgiLCJyZWFkT25seSIsIm1heExlbmd0aCIsImNlbGxTcGFjaW5nIiwiY2VsbFBhZGRpbmciLCJyb3dTcGFuIiwiY29sU3BhbiIsInVzZU1hcCIsImZyYW1lQm9yZGVyIiwiY29udGVudEVkaXRhYmxlIl0sZnVuY3Rpb24oKXtyLnByb3BGaXhbdGhpcy50b0xvd2VyQ2FzZSgpXT10aGlzfSk7ZnVuY3Rpb24gcGIoYSl7dmFyIGI9YS5tYXRjaChMKXx8W107cmV0dXJuIGIuam9pbigiICIpfWZ1bmN0aW9uIHFiKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZSYmYS5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIifXIuZm4uZXh0ZW5kKHthZGRDbGFzczpmdW5jdGlvbihhKXt2YXIgYixjLGQsZSxmLGcsaCxpPTA7aWYoci5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7cih0aGlzKS5hZGRDbGFzcyhhLmNhbGwodGhpcyxiLHFiKHRoaXMpKSl9KTtpZigic3RyaW5nIj09dHlwZW9mIGEmJmEpe2I9YS5tYXRjaChMKXx8W107d2hpbGUoYz10aGlzW2krK10paWYoZT1xYihjKSxkPTE9PT1jLm5vZGVUeXBlJiYiICIrcGIoZSkrIiAiKXtnPTA7d2hpbGUoZj1iW2crK10pZC5pbmRleE9mKCIgIitmKyIgIik8MCYmKGQrPWYrIiAiKTtoPXBiKGQpLGUhPT1oJiZjLnNldEF0dHJpYnV0ZSgiY2xhc3MiLGgpfX1yZXR1cm4gdGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGgsaT0wO2lmKHIuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe3IodGhpcykucmVtb3ZlQ2xhc3MoYS5jYWxsKHRoaXMsYixxYih0aGlzKSkpfSk7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHRoaXMuYXR0cigiY2xhc3MiLCIiKTtpZigic3RyaW5nIj09dHlwZW9mIGEmJmEpe2I9YS5tYXRjaChMKXx8W107d2hpbGUoYz10aGlzW2krK10paWYoZT1xYihjKSxkPTE9PT1jLm5vZGVUeXBlJiYiICIrcGIoZSkrIiAiKXtnPTA7d2hpbGUoZj1iW2crK10pd2hpbGUoZC5pbmRleE9mKCIgIitmKyIgIik+LTEpZD1kLnJlcGxhY2UoIiAiK2YrIiAiLCIgIik7aD1wYihkKSxlIT09aCYmYy5zZXRBdHRyaWJ1dGUoImNsYXNzIixoKX19cmV0dXJuIHRoaXN9LHRvZ2dsZUNsYXNzOmZ1bmN0aW9uKGEsYil7dmFyIGM9dHlwZW9mIGE7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgYiYmInN0cmluZyI9PT1jP2I/dGhpcy5hZGRDbGFzcyhhKTp0aGlzLnJlbW92ZUNsYXNzKGEpOnIuaXNGdW5jdGlvbihhKT90aGlzLmVhY2goZnVuY3Rpb24oYyl7cih0aGlzKS50b2dnbGVDbGFzcyhhLmNhbGwodGhpcyxjLHFiKHRoaXMpLGIpLGIpfSk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGIsZCxlLGY7aWYoInN0cmluZyI9PT1jKXtkPTAsZT1yKHRoaXMpLGY9YS5tYXRjaChMKXx8W107d2hpbGUoYj1mW2QrK10pZS5oYXNDbGFzcyhiKT9lLnJlbW92ZUNsYXNzKGIpOmUuYWRkQ2xhc3MoYil9ZWxzZSB2b2lkIDAhPT1hJiYiYm9vbGVhbiIhPT1jfHwoYj1xYih0aGlzKSxiJiZXLnNldCh0aGlzLCJfX2NsYXNzTmFtZV9fIixiKSx0aGlzLnNldEF0dHJpYnV0ZSYmdGhpcy5zZXRBdHRyaWJ1dGUoImNsYXNzIixifHxhPT09ITE/IiI6Vy5nZXQodGhpcywiX19jbGFzc05hbWVfXyIpfHwiIikpfSl9LGhhc0NsYXNzOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZD0wO2I9IiAiK2ErIiAiO3doaWxlKGM9dGhpc1tkKytdKWlmKDE9PT1jLm5vZGVUeXBlJiYoIiAiK3BiKHFiKGMpKSsiICIpLmluZGV4T2YoYik+LTEpcmV0dXJuITA7cmV0dXJuITF9fSk7dmFyIHJiPS9cci9nO3IuZm4uZXh0ZW5kKHt2YWw6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGU9dGhpc1swXTt7aWYoYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZD1yLmlzRnVuY3Rpb24oYSksdGhpcy5lYWNoKGZ1bmN0aW9uKGMpe3ZhciBlOzE9PT10aGlzLm5vZGVUeXBlJiYoZT1kP2EuY2FsbCh0aGlzLGMscih0aGlzKS52YWwoKSk6YSxudWxsPT1lP2U9IiI6Im51bWJlciI9PXR5cGVvZiBlP2UrPSIiOkFycmF5LmlzQXJyYXkoZSkmJihlPXIubWFwKGUsZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/IiI6YSsiIn0pKSxiPXIudmFsSG9va3NbdGhpcy50eXBlXXx8ci52YWxIb29rc1t0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldLGImJiJzZXQiaW4gYiYmdm9pZCAwIT09Yi5zZXQodGhpcyxlLCJ2YWx1ZSIpfHwodGhpcy52YWx1ZT1lKSl9KTtpZihlKXJldHVybiBiPXIudmFsSG9va3NbZS50eXBlXXx8ci52YWxIb29rc1tlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldLGImJiJnZXQiaW4gYiYmdm9pZCAwIT09KGM9Yi5nZXQoZSwidmFsdWUiKSk/YzooYz1lLnZhbHVlLCJzdHJpbmciPT10eXBlb2YgYz9jLnJlcGxhY2UocmIsIiIpOm51bGw9PWM/IiI6Yyl9fX0pLHIuZXh0ZW5kKHt2YWxIb29rczp7b3B0aW9uOntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9ci5maW5kLmF0dHIoYSwidmFsdWUiKTtyZXR1cm4gbnVsbCE9Yj9iOnBiKHIudGV4dChhKSl9fSxzZWxlY3Q6e2dldDpmdW5jdGlvbihhKXt2YXIgYixjLGQsZT1hLm9wdGlvbnMsZj1hLnNlbGVjdGVkSW5kZXgsZz0ic2VsZWN0LW9uZSI9PT1hLnR5cGUsaD1nP251bGw6W10saT1nP2YrMTplLmxlbmd0aDtmb3IoZD1mPDA/aTpnP2Y6MDtkPGk7ZCsrKWlmKGM9ZVtkXSwoYy5zZWxlY3RlZHx8ZD09PWYpJiYhYy5kaXNhYmxlZCYmKCFjLnBhcmVudE5vZGUuZGlzYWJsZWR8fCFCKGMucGFyZW50Tm9kZSwib3B0Z3JvdXAiKSkpe2lmKGI9cihjKS52YWwoKSxnKXJldHVybiBiO2gucHVzaChiKX1yZXR1cm4gaH0sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlPWEub3B0aW9ucyxmPXIubWFrZUFycmF5KGIpLGc9ZS5sZW5ndGg7d2hpbGUoZy0tKWQ9ZVtnXSwoZC5zZWxlY3RlZD1yLmluQXJyYXkoci52YWxIb29rcy5vcHRpb24uZ2V0KGQpLGYpPi0xKSYmKGM9ITApO3JldHVybiBjfHwoYS5zZWxlY3RlZEluZGV4PS0xKSxmfX19fSksci5lYWNoKFsicmFkaW8iLCJjaGVja2JveCJdLGZ1bmN0aW9uKCl7ci52YWxIb29rc1t0aGlzXT17c2V0OmZ1bmN0aW9uKGEsYil7aWYoQXJyYXkuaXNBcnJheShiKSlyZXR1cm4gYS5jaGVja2VkPXIuaW5BcnJheShyKGEpLnZhbCgpLGIpPi0xfX0sby5jaGVja09ufHwoci52YWxIb29rc1t0aGlzXS5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PT1hLmdldEF0dHJpYnV0ZSgidmFsdWUiKT8ib24iOmEudmFsdWV9KX0pO3ZhciBzYj0vXig/OmZvY3VzaW5mb2N1c3xmb2N1c291dGJsdXIpJC87ci5leHRlbmQoci5ldmVudCx7dHJpZ2dlcjpmdW5jdGlvbihiLGMsZSxmKXt2YXIgZyxoLGksaixrLG0sbixvPVtlfHxkXSxwPWwuY2FsbChiLCJ0eXBlIik/Yi50eXBlOmIscT1sLmNhbGwoYiwibmFtZXNwYWNlIik/Yi5uYW1lc3BhY2Uuc3BsaXQoIi4iKTpbXTtpZihoPWk9ZT1lfHxkLDMhPT1lLm5vZGVUeXBlJiY4IT09ZS5ub2RlVHlwZSYmIXNiLnRlc3QocCtyLmV2ZW50LnRyaWdnZXJlZCkmJihwLmluZGV4T2YoIi4iKT4tMSYmKHE9cC5zcGxpdCgiLiIpLHA9cS5zaGlmdCgpLHEuc29ydCgpKSxrPXAuaW5kZXhPZigiOiIpPDAmJiJvbiIrcCxiPWJbci5leHBhbmRvXT9iOm5ldyByLkV2ZW50KHAsIm9iamVjdCI9PXR5cGVvZiBiJiZiKSxiLmlzVHJpZ2dlcj1mPzI6MyxiLm5hbWVzcGFjZT1xLmpvaW4oIi4iKSxiLnJuYW1lc3BhY2U9Yi5uYW1lc3BhY2U/bmV3IFJlZ0V4cCgiKF58XFwuKSIrcS5qb2luKCJcXC4oPzouKlxcLnwpIikrIihcXC58JCkiKTpudWxsLGIucmVzdWx0PXZvaWQgMCxiLnRhcmdldHx8KGIudGFyZ2V0PWUpLGM9bnVsbD09Yz9bYl06ci5tYWtlQXJyYXkoYyxbYl0pLG49ci5ldmVudC5zcGVjaWFsW3BdfHx7fSxmfHwhbi50cmlnZ2VyfHxuLnRyaWdnZXIuYXBwbHkoZSxjKSE9PSExKSl7aWYoIWYmJiFuLm5vQnViYmxlJiYhci5pc1dpbmRvdyhlKSl7Zm9yKGo9bi5kZWxlZ2F0ZVR5cGV8fHAsc2IudGVzdChqK3ApfHwoaD1oLnBhcmVudE5vZGUpO2g7aD1oLnBhcmVudE5vZGUpby5wdXNoKGgpLGk9aDtpPT09KGUub3duZXJEb2N1bWVudHx8ZCkmJm8ucHVzaChpLmRlZmF1bHRWaWV3fHxpLnBhcmVudFdpbmRvd3x8YSl9Zz0wO3doaWxlKChoPW9bZysrXSkmJiFiLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpYi50eXBlPWc+MT9qOm4uYmluZFR5cGV8fHAsbT0oVy5nZXQoaCwiZXZlbnRzIil8fHt9KVtiLnR5cGVdJiZXLmdldChoLCJoYW5kbGUiKSxtJiZtLmFwcGx5KGgsYyksbT1rJiZoW2tdLG0mJm0uYXBwbHkmJlUoaCkmJihiLnJlc3VsdD1tLmFwcGx5KGgsYyksYi5yZXN1bHQ9PT0hMSYmYi5wcmV2ZW50RGVmYXVsdCgpKTtyZXR1cm4gYi50eXBlPXAsZnx8Yi5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8bi5fZGVmYXVsdCYmbi5fZGVmYXVsdC5hcHBseShvLnBvcCgpLGMpIT09ITF8fCFVKGUpfHxrJiZyLmlzRnVuY3Rpb24oZVtwXSkmJiFyLmlzV2luZG93KGUpJiYoaT1lW2tdLGkmJihlW2tdPW51bGwpLHIuZXZlbnQudHJpZ2dlcmVkPXAsZVtwXSgpLHIuZXZlbnQudHJpZ2dlcmVkPXZvaWQgMCxpJiYoZVtrXT1pKSksYi5yZXN1bHR9fSxzaW11bGF0ZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9ci5leHRlbmQobmV3IHIuRXZlbnQsYyx7dHlwZTphLGlzU2ltdWxhdGVkOiEwfSk7ci5ldmVudC50cmlnZ2VyKGQsbnVsbCxiKX19KSxyLmZuLmV4dGVuZCh7dHJpZ2dlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtyLmV2ZW50LnRyaWdnZXIoYSxiLHRoaXMpfSl9LHRyaWdnZXJIYW5kbGVyOmZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpc1swXTtpZihjKXJldHVybiByLmV2ZW50LnRyaWdnZXIoYSxiLGMsITApfX0pLHIuZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IHJlc2l6ZSBzY3JvbGwgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe3IuZm5bYl09ZnVuY3Rpb24oYSxjKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4wP3RoaXMub24oYixudWxsLGEsYyk6dGhpcy50cmlnZ2VyKGIpfX0pLHIuZm4uZXh0ZW5kKHtob3ZlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm1vdXNlZW50ZXIoYSkubW91c2VsZWF2ZShifHxhKX19KSxvLmZvY3VzaW49Im9uZm9jdXNpbiJpbiBhLG8uZm9jdXNpbnx8ci5lYWNoKHtmb2N1czoiZm9jdXNpbiIsYmx1cjoiZm9jdXNvdXQifSxmdW5jdGlvbihhLGIpe3ZhciBjPWZ1bmN0aW9uKGEpe3IuZXZlbnQuc2ltdWxhdGUoYixhLnRhcmdldCxyLmV2ZW50LmZpeChhKSl9O3IuZXZlbnQuc3BlY2lhbFtiXT17c2V0dXA6ZnVuY3Rpb24oKXt2YXIgZD10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMsZT1XLmFjY2VzcyhkLGIpO2V8fGQuYWRkRXZlbnRMaXN0ZW5lcihhLGMsITApLFcuYWNjZXNzKGQsYiwoZXx8MCkrMSl9LHRlYXJkb3duOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5vd25lckRvY3VtZW50fHx0aGlzLGU9Vy5hY2Nlc3MoZCxiKS0xO2U/Vy5hY2Nlc3MoZCxiLGUpOihkLnJlbW92ZUV2ZW50TGlzdGVuZXIoYSxjLCEwKSxXLnJlbW92ZShkLGIpKX19fSk7dmFyIHRiPWEubG9jYXRpb24sdWI9ci5ub3coKSx2Yj0vXD8vO3IucGFyc2VYTUw9ZnVuY3Rpb24oYil7dmFyIGM7aWYoIWJ8fCJzdHJpbmciIT10eXBlb2YgYilyZXR1cm4gbnVsbDt0cnl7Yz0obmV3IGEuRE9NUGFyc2VyKS5wYXJzZUZyb21TdHJpbmcoYiwidGV4dC94bWwiKX1jYXRjaChkKXtjPXZvaWQgMH1yZXR1cm4gYyYmIWMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInBhcnNlcmVycm9yIikubGVuZ3RofHxyLmVycm9yKCJJbnZhbGlkIFhNTDogIitiKSxjfTt2YXIgd2I9L1xbXF0kLyx4Yj0vXHI/XG4vZyx5Yj0vXig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2ksemI9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8a2V5Z2VuKS9pO2Z1bmN0aW9uIEFiKGEsYixjLGQpe3ZhciBlO2lmKEFycmF5LmlzQXJyYXkoYikpci5lYWNoKGIsZnVuY3Rpb24oYixlKXtjfHx3Yi50ZXN0KGEpP2QoYSxlKTpBYihhKyJbIisoIm9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT1lP2I6IiIpKyJdIixlLGMsZCl9KTtlbHNlIGlmKGN8fCJvYmplY3QiIT09ci50eXBlKGIpKWQoYSxiKTtlbHNlIGZvcihlIGluIGIpQWIoYSsiWyIrZSsiXSIsYltlXSxjLGQpfXIucGFyYW09ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPVtdLGU9ZnVuY3Rpb24oYSxiKXt2YXIgYz1yLmlzRnVuY3Rpb24oYik/YigpOmI7ZFtkLmxlbmd0aF09ZW5jb2RlVVJJQ29tcG9uZW50KGEpKyI9IitlbmNvZGVVUklDb21wb25lbnQobnVsbD09Yz8iIjpjKX07aWYoQXJyYXkuaXNBcnJheShhKXx8YS5qcXVlcnkmJiFyLmlzUGxhaW5PYmplY3QoYSkpci5lYWNoKGEsZnVuY3Rpb24oKXtlKHRoaXMubmFtZSx0aGlzLnZhbHVlKX0pO2Vsc2UgZm9yKGMgaW4gYSlBYihjLGFbY10sYixlKTtyZXR1cm4gZC5qb2luKCImIil9LHIuZm4uZXh0ZW5kKHtzZXJpYWxpemU6ZnVuY3Rpb24oKXtyZXR1cm4gci5wYXJhbSh0aGlzLnNlcmlhbGl6ZUFycmF5KCkpfSxzZXJpYWxpemVBcnJheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBhPXIucHJvcCh0aGlzLCJlbGVtZW50cyIpO3JldHVybiBhP3IubWFrZUFycmF5KGEpOnRoaXN9KS5maWx0ZXIoZnVuY3Rpb24oKXt2YXIgYT10aGlzLnR5cGU7cmV0dXJuIHRoaXMubmFtZSYmIXIodGhpcykuaXMoIjpkaXNhYmxlZCIpJiZ6Yi50ZXN0KHRoaXMubm9kZU5hbWUpJiYheWIudGVzdChhKSYmKHRoaXMuY2hlY2tlZHx8IWphLnRlc3QoYSkpfSkubWFwKGZ1bmN0aW9uKGEsYil7dmFyIGM9cih0aGlzKS52YWwoKTtyZXR1cm4gbnVsbD09Yz9udWxsOkFycmF5LmlzQXJyYXkoYyk/ci5tYXAoYyxmdW5jdGlvbihhKXtyZXR1cm57bmFtZTpiLm5hbWUsdmFsdWU6YS5yZXBsYWNlKHhiLCJcclxuIil9fSk6e25hbWU6Yi5uYW1lLHZhbHVlOmMucmVwbGFjZSh4YiwiXHJcbiIpfX0pLmdldCgpfX0pO3ZhciBCYj0vJTIwL2csQ2I9LyMuKiQvLERiPS8oWz8mXSlfPVteJl0qLyxFYj0vXiguKj8pOlsgXHRdKihbXlxyXG5dKikkL2dtLEZiPS9eKD86YWJvdXR8YXBwfGFwcC1zdG9yYWdlfC4rLWV4dGVuc2lvbnxmaWxlfHJlc3x3aWRnZXQpOiQvLEdiPS9eKD86R0VUfEhFQUQpJC8sSGI9L15cL1wvLyxJYj17fSxKYj17fSxLYj0iKi8iLmNvbmNhdCgiKiIpLExiPWQuY3JlYXRlRWxlbWVudCgiYSIpO0xiLmhyZWY9dGIuaHJlZjtmdW5jdGlvbiBNYihhKXtyZXR1cm4gZnVuY3Rpb24oYixjKXsic3RyaW5nIiE9dHlwZW9mIGImJihjPWIsYj0iKiIpO3ZhciBkLGU9MCxmPWIudG9Mb3dlckNhc2UoKS5tYXRjaChMKXx8W107aWYoci5pc0Z1bmN0aW9uKGMpKXdoaWxlKGQ9ZltlKytdKSIrIj09PWRbMF0/KGQ9ZC5zbGljZSgxKXx8IioiLChhW2RdPWFbZF18fFtdKS51bnNoaWZ0KGMpKTooYVtkXT1hW2RdfHxbXSkucHVzaChjKX19ZnVuY3Rpb24gTmIoYSxiLGMsZCl7dmFyIGU9e30sZj1hPT09SmI7ZnVuY3Rpb24gZyhoKXt2YXIgaTtyZXR1cm4gZVtoXT0hMCxyLmVhY2goYVtoXXx8W10sZnVuY3Rpb24oYSxoKXt2YXIgaj1oKGIsYyxkKTtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGp8fGZ8fGVbal0/Zj8hKGk9aik6dm9pZCAwOihiLmRhdGFUeXBlcy51bnNoaWZ0KGopLGcoaiksITEpfSksaX1yZXR1cm4gZyhiLmRhdGFUeXBlc1swXSl8fCFlWyIqIl0mJmcoIioiKX1mdW5jdGlvbiBPYihhLGIpe3ZhciBjLGQsZT1yLmFqYXhTZXR0aW5ncy5mbGF0T3B0aW9uc3x8e307Zm9yKGMgaW4gYil2b2lkIDAhPT1iW2NdJiYoKGVbY10/YTpkfHwoZD17fSkpW2NdPWJbY10pO3JldHVybiBkJiZyLmV4dGVuZCghMCxhLGQpLGF9ZnVuY3Rpb24gUGIoYSxiLGMpe3ZhciBkLGUsZixnLGg9YS5jb250ZW50cyxpPWEuZGF0YVR5cGVzO3doaWxlKCIqIj09PWlbMF0paS5zaGlmdCgpLHZvaWQgMD09PWQmJihkPWEubWltZVR5cGV8fGIuZ2V0UmVzcG9uc2VIZWFkZXIoIkNvbnRlbnQtVHlwZSIpKTtpZihkKWZvcihlIGluIGgpaWYoaFtlXSYmaFtlXS50ZXN0KGQpKXtpLnVuc2hpZnQoZSk7YnJlYWt9aWYoaVswXWluIGMpZj1pWzBdO2Vsc2V7Zm9yKGUgaW4gYyl7aWYoIWlbMF18fGEuY29udmVydGVyc1tlKyIgIitpWzBdXSl7Zj1lO2JyZWFrfWd8fChnPWUpfWY9Znx8Z31pZihmKXJldHVybiBmIT09aVswXSYmaS51bnNoaWZ0KGYpLGNbZl19ZnVuY3Rpb24gUWIoYSxiLGMsZCl7dmFyIGUsZixnLGgsaSxqPXt9LGs9YS5kYXRhVHlwZXMuc2xpY2UoKTtpZihrWzFdKWZvcihnIGluIGEuY29udmVydGVycylqW2cudG9Mb3dlckNhc2UoKV09YS5jb252ZXJ0ZXJzW2ddO2Y9ay5zaGlmdCgpO3doaWxlKGYpaWYoYS5yZXNwb25zZUZpZWxkc1tmXSYmKGNbYS5yZXNwb25zZUZpZWxkc1tmXV09YiksIWkmJmQmJmEuZGF0YUZpbHRlciYmKGI9YS5kYXRhRmlsdGVyKGIsYS5kYXRhVHlwZSkpLGk9ZixmPWsuc2hpZnQoKSlpZigiKiI9PT1mKWY9aTtlbHNlIGlmKCIqIiE9PWkmJmkhPT1mKXtpZihnPWpbaSsiICIrZl18fGpbIiogIitmXSwhZylmb3IoZSBpbiBqKWlmKGg9ZS5zcGxpdCgiICIpLGhbMV09PT1mJiYoZz1qW2krIiAiK2hbMF1dfHxqWyIqICIraFswXV0pKXtnPT09ITA/Zz1qW2VdOmpbZV0hPT0hMCYmKGY9aFswXSxrLnVuc2hpZnQoaFsxXSkpO2JyZWFrfWlmKGchPT0hMClpZihnJiZhWyJ0aHJvd3MiXSliPWcoYik7ZWxzZSB0cnl7Yj1nKGIpfWNhdGNoKGwpe3JldHVybntzdGF0ZToicGFyc2VyZXJyb3IiLGVycm9yOmc/bDoiTm8gY29udmVyc2lvbiBmcm9tICIraSsiIHRvICIrZn19fXJldHVybntzdGF0ZToic3VjY2VzcyIsZGF0YTpifX1yLmV4dGVuZCh7YWN0aXZlOjAsbGFzdE1vZGlmaWVkOnt9LGV0YWc6e30sYWpheFNldHRpbmdzOnt1cmw6dGIuaHJlZix0eXBlOiJHRVQiLGlzTG9jYWw6RmIudGVzdCh0Yi5wcm90b2NvbCksZ2xvYmFsOiEwLHByb2Nlc3NEYXRhOiEwLGFzeW5jOiEwLGNvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLTgiLGFjY2VwdHM6eyIqIjpLYix0ZXh0OiJ0ZXh0L3BsYWluIixodG1sOiJ0ZXh0L2h0bWwiLHhtbDoiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCIsanNvbjoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0In0sY29udGVudHM6e3htbDovXGJ4bWxcYi8saHRtbDovXGJodG1sLyxqc29uOi9cYmpzb25cYi99LHJlc3BvbnNlRmllbGRzOnt4bWw6InJlc3BvbnNlWE1MIix0ZXh0OiJyZXNwb25zZVRleHQiLGpzb246InJlc3BvbnNlSlNPTiJ9LGNvbnZlcnRlcnM6eyIqIHRleHQiOlN0cmluZywidGV4dCBodG1sIjohMCwidGV4dCBqc29uIjpKU09OLnBhcnNlLCJ0ZXh0IHhtbCI6ci5wYXJzZVhNTH0sZmxhdE9wdGlvbnM6e3VybDohMCxjb250ZXh0OiEwfX0sYWpheFNldHVwOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGI/T2IoT2IoYSxyLmFqYXhTZXR0aW5ncyksYik6T2Ioci5hamF4U2V0dGluZ3MsYSl9LGFqYXhQcmVmaWx0ZXI6TWIoSWIpLGFqYXhUcmFuc3BvcnQ6TWIoSmIpLGFqYXg6ZnVuY3Rpb24oYixjKXsib2JqZWN0Ij09dHlwZW9mIGImJihjPWIsYj12b2lkIDApLGM9Y3x8e307dmFyIGUsZixnLGgsaSxqLGssbCxtLG4sbz1yLmFqYXhTZXR1cCh7fSxjKSxwPW8uY29udGV4dHx8byxxPW8uY29udGV4dCYmKHAubm9kZVR5cGV8fHAuanF1ZXJ5KT9yKHApOnIuZXZlbnQscz1yLkRlZmVycmVkKCksdD1yLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSx1PW8uc3RhdHVzQ29kZXx8e30sdj17fSx3PXt9LHg9ImNhbmNlbGVkIix5PXtyZWFkeVN0YXRlOjAsZ2V0UmVzcG9uc2VIZWFkZXI6ZnVuY3Rpb24oYSl7dmFyIGI7aWYoayl7aWYoIWgpe2g9e307d2hpbGUoYj1FYi5leGVjKGcpKWhbYlsxXS50b0xvd2VyQ2FzZSgpXT1iWzJdfWI9aFthLnRvTG93ZXJDYXNlKCldfXJldHVybiBudWxsPT1iP251bGw6Yn0sZ2V0QWxsUmVzcG9uc2VIZWFkZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIGs/ZzpudWxsfSxzZXRSZXF1ZXN0SGVhZGVyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIG51bGw9PWsmJihhPXdbYS50b0xvd2VyQ2FzZSgpXT13W2EudG9Mb3dlckNhc2UoKV18fGEsdlthXT1iKSx0aGlzfSxvdmVycmlkZU1pbWVUeXBlOmZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1rJiYoby5taW1lVHlwZT1hKSx0aGlzfSxzdGF0dXNDb2RlOmZ1bmN0aW9uKGEpe3ZhciBiO2lmKGEpaWYoayl5LmFsd2F5cyhhW3kuc3RhdHVzXSk7ZWxzZSBmb3IoYiBpbiBhKXVbYl09W3VbYl0sYVtiXV07cmV0dXJuIHRoaXN9LGFib3J0OmZ1bmN0aW9uKGEpe3ZhciBiPWF8fHg7cmV0dXJuIGUmJmUuYWJvcnQoYiksQSgwLGIpLHRoaXN9fTtpZihzLnByb21pc2UoeSksby51cmw9KChifHxvLnVybHx8dGIuaHJlZikrIiIpLnJlcGxhY2UoSGIsdGIucHJvdG9jb2wrIi8vIiksby50eXBlPWMubWV0aG9kfHxjLnR5cGV8fG8ubWV0aG9kfHxvLnR5cGUsby5kYXRhVHlwZXM9KG8uZGF0YVR5cGV8fCIqIikudG9Mb3dlckNhc2UoKS5tYXRjaChMKXx8WyIiXSxudWxsPT1vLmNyb3NzRG9tYWluKXtqPWQuY3JlYXRlRWxlbWVudCgiYSIpO3RyeXtqLmhyZWY9by51cmwsai5ocmVmPWouaHJlZixvLmNyb3NzRG9tYWluPUxiLnByb3RvY29sKyIvLyIrTGIuaG9zdCE9ai5wcm90b2NvbCsiLy8iK2ouaG9zdH1jYXRjaCh6KXtvLmNyb3NzRG9tYWluPSEwfX1pZihvLmRhdGEmJm8ucHJvY2Vzc0RhdGEmJiJzdHJpbmciIT10eXBlb2Ygby5kYXRhJiYoby5kYXRhPXIucGFyYW0oby5kYXRhLG8udHJhZGl0aW9uYWwpKSxOYihJYixvLGMseSksaylyZXR1cm4geTtsPXIuZXZlbnQmJm8uZ2xvYmFsLGwmJjA9PT1yLmFjdGl2ZSsrJiZyLmV2ZW50LnRyaWdnZXIoImFqYXhTdGFydCIpLG8udHlwZT1vLnR5cGUudG9VcHBlckNhc2UoKSxvLmhhc0NvbnRlbnQ9IUdiLnRlc3Qoby50eXBlKSxmPW8udXJsLnJlcGxhY2UoQ2IsIiIpLG8uaGFzQ29udGVudD9vLmRhdGEmJm8ucHJvY2Vzc0RhdGEmJjA9PT0oby5jb250ZW50VHlwZXx8IiIpLmluZGV4T2YoImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpJiYoby5kYXRhPW8uZGF0YS5yZXBsYWNlKEJiLCIrIikpOihuPW8udXJsLnNsaWNlKGYubGVuZ3RoKSxvLmRhdGEmJihmKz0odmIudGVzdChmKT8iJiI6Ij8iKStvLmRhdGEsZGVsZXRlIG8uZGF0YSksby5jYWNoZT09PSExJiYoZj1mLnJlcGxhY2UoRGIsIiQxIiksbj0odmIudGVzdChmKT8iJiI6Ij8iKSsiXz0iK3ViKysgK24pLG8udXJsPWYrbiksby5pZk1vZGlmaWVkJiYoci5sYXN0TW9kaWZpZWRbZl0mJnkuc2V0UmVxdWVzdEhlYWRlcigiSWYtTW9kaWZpZWQtU2luY2UiLHIubGFzdE1vZGlmaWVkW2ZdKSxyLmV0YWdbZl0mJnkuc2V0UmVxdWVzdEhlYWRlcigiSWYtTm9uZS1NYXRjaCIsci5ldGFnW2ZdKSksKG8uZGF0YSYmby5oYXNDb250ZW50JiZvLmNvbnRlbnRUeXBlIT09ITF8fGMuY29udGVudFR5cGUpJiZ5LnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsby5jb250ZW50VHlwZSkseS5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLG8uZGF0YVR5cGVzWzBdJiZvLmFjY2VwdHNbby5kYXRhVHlwZXNbMF1dP28uYWNjZXB0c1tvLmRhdGFUeXBlc1swXV0rKCIqIiE9PW8uZGF0YVR5cGVzWzBdPyIsICIrS2IrIjsgcT0wLjAxIjoiIik6by5hY2NlcHRzWyIqIl0pO2ZvcihtIGluIG8uaGVhZGVycyl5LnNldFJlcXVlc3RIZWFkZXIobSxvLmhlYWRlcnNbbV0pO2lmKG8uYmVmb3JlU2VuZCYmKG8uYmVmb3JlU2VuZC5jYWxsKHAseSxvKT09PSExfHxrKSlyZXR1cm4geS5hYm9ydCgpO2lmKHg9ImFib3J0Iix0LmFkZChvLmNvbXBsZXRlKSx5LmRvbmUoby5zdWNjZXNzKSx5LmZhaWwoby5lcnJvciksZT1OYihKYixvLGMseSkpe2lmKHkucmVhZHlTdGF0ZT0xLGwmJnEudHJpZ2dlcigiYWpheFNlbmQiLFt5LG9dKSxrKXJldHVybiB5O28uYXN5bmMmJm8udGltZW91dD4wJiYoaT1hLnNldFRpbWVvdXQoZnVuY3Rpb24oKXt5LmFib3J0KCJ0aW1lb3V0Iil9LG8udGltZW91dCkpO3RyeXtrPSExLGUuc2VuZCh2LEEpfWNhdGNoKHope2lmKGspdGhyb3cgejtBKC0xLHopfX1lbHNlIEEoLTEsIk5vIFRyYW5zcG9ydCIpO2Z1bmN0aW9uIEEoYixjLGQsaCl7dmFyIGosbSxuLHYsdyx4PWM7a3x8KGs9ITAsaSYmYS5jbGVhclRpbWVvdXQoaSksZT12b2lkIDAsZz1ofHwiIix5LnJlYWR5U3RhdGU9Yj4wPzQ6MCxqPWI+PTIwMCYmYjwzMDB8fDMwND09PWIsZCYmKHY9UGIobyx5LGQpKSx2PVFiKG8sdix5LGopLGo/KG8uaWZNb2RpZmllZCYmKHc9eS5nZXRSZXNwb25zZUhlYWRlcigiTGFzdC1Nb2RpZmllZCIpLHcmJihyLmxhc3RNb2RpZmllZFtmXT13KSx3PXkuZ2V0UmVzcG9uc2VIZWFkZXIoImV0YWciKSx3JiYoci5ldGFnW2ZdPXcpKSwyMDQ9PT1ifHwiSEVBRCI9PT1vLnR5cGU/eD0ibm9jb250ZW50IjozMDQ9PT1iP3g9Im5vdG1vZGlmaWVkIjooeD12LnN0YXRlLG09di5kYXRhLG49di5lcnJvcixqPSFuKSk6KG49eCwhYiYmeHx8KHg9ImVycm9yIixiPDAmJihiPTApKSkseS5zdGF0dXM9Yix5LnN0YXR1c1RleHQ9KGN8fHgpKyIiLGo/cy5yZXNvbHZlV2l0aChwLFttLHgseV0pOnMucmVqZWN0V2l0aChwLFt5LHgsbl0pLHkuc3RhdHVzQ29kZSh1KSx1PXZvaWQgMCxsJiZxLnRyaWdnZXIoaj8iYWpheFN1Y2Nlc3MiOiJhamF4RXJyb3IiLFt5LG8saj9tOm5dKSx0LmZpcmVXaXRoKHAsW3kseF0pLGwmJihxLnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsW3ksb10pLC0tci5hY3RpdmV8fHIuZXZlbnQudHJpZ2dlcigiYWpheFN0b3AiKSkpfXJldHVybiB5fSxnZXRKU09OOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gci5nZXQoYSxiLGMsImpzb24iKX0sZ2V0U2NyaXB0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIHIuZ2V0KGEsdm9pZCAwLGIsInNjcmlwdCIpfX0pLHIuZWFjaChbImdldCIsInBvc3QiXSxmdW5jdGlvbihhLGIpe3JbYl09ZnVuY3Rpb24oYSxjLGQsZSl7cmV0dXJuIHIuaXNGdW5jdGlvbihjKSYmKGU9ZXx8ZCxkPWMsYz12b2lkIDApLHIuYWpheChyLmV4dGVuZCh7dXJsOmEsdHlwZTpiLGRhdGFUeXBlOmUsZGF0YTpjLHN1Y2Nlc3M6ZH0sci5pc1BsYWluT2JqZWN0KGEpJiZhKSl9fSksci5fZXZhbFVybD1mdW5jdGlvbihhKXtyZXR1cm4gci5hamF4KHt1cmw6YSx0eXBlOiJHRVQiLGRhdGFUeXBlOiJzY3JpcHQiLGNhY2hlOiEwLGFzeW5jOiExLGdsb2JhbDohMSwidGhyb3dzIjohMH0pfSxyLmZuLmV4dGVuZCh7d3JhcEFsbDpmdW5jdGlvbihhKXt2YXIgYjtyZXR1cm4gdGhpc1swXSYmKHIuaXNGdW5jdGlvbihhKSYmKGE9YS5jYWxsKHRoaXNbMF0pKSxiPXIoYSx0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmVxKDApLmNsb25lKCEwKSx0aGlzWzBdLnBhcmVudE5vZGUmJmIuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLGIubWFwKGZ1bmN0aW9uKCl7dmFyIGE9dGhpczt3aGlsZShhLmZpcnN0RWxlbWVudENoaWxkKWE9YS5maXJzdEVsZW1lbnRDaGlsZDtyZXR1cm4gYX0pLmFwcGVuZCh0aGlzKSksdGhpc30sd3JhcElubmVyOmZ1bmN0aW9uKGEpe3JldHVybiByLmlzRnVuY3Rpb24oYSk/dGhpcy5lYWNoKGZ1bmN0aW9uKGIpe3IodGhpcykud3JhcElubmVyKGEuY2FsbCh0aGlzLGIpKX0pOnRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPXIodGhpcyksYz1iLmNvbnRlbnRzKCk7Yy5sZW5ndGg/Yy53cmFwQWxsKGEpOmIuYXBwZW5kKGEpfSl9LHdyYXA6ZnVuY3Rpb24oYSl7dmFyIGI9ci5pc0Z1bmN0aW9uKGEpO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYyl7cih0aGlzKS53cmFwQWxsKGI/YS5jYWxsKHRoaXMsYyk6YSl9KX0sdW53cmFwOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnBhcmVudChhKS5ub3QoImJvZHkiKS5lYWNoKGZ1bmN0aW9uKCl7cih0aGlzKS5yZXBsYWNlV2l0aCh0aGlzLmNoaWxkTm9kZXMpfSksdGhpc319KSxyLmV4cHIucHNldWRvcy5oaWRkZW49ZnVuY3Rpb24oYSl7cmV0dXJuIXIuZXhwci5wc2V1ZG9zLnZpc2libGUoYSl9LHIuZXhwci5wc2V1ZG9zLnZpc2libGU9ZnVuY3Rpb24oYSl7cmV0dXJuISEoYS5vZmZzZXRXaWR0aHx8YS5vZmZzZXRIZWlnaHR8fGEuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgpfSxyLmFqYXhTZXR0aW5ncy54aHI9ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIG5ldyBhLlhNTEh0dHBSZXF1ZXN0fWNhdGNoKGIpe319O3ZhciBSYj17MDoyMDAsMTIyMzoyMDR9LFNiPXIuYWpheFNldHRpbmdzLnhocigpO28uY29ycz0hIVNiJiYid2l0aENyZWRlbnRpYWxzImluIFNiLG8uYWpheD1TYj0hIVNiLHIuYWpheFRyYW5zcG9ydChmdW5jdGlvbihiKXt2YXIgYyxkO2lmKG8uY29yc3x8U2ImJiFiLmNyb3NzRG9tYWluKXJldHVybntzZW5kOmZ1bmN0aW9uKGUsZil7dmFyIGcsaD1iLnhocigpO2lmKGgub3BlbihiLnR5cGUsYi51cmwsYi5hc3luYyxiLnVzZXJuYW1lLGIucGFzc3dvcmQpLGIueGhyRmllbGRzKWZvcihnIGluIGIueGhyRmllbGRzKWhbZ109Yi54aHJGaWVsZHNbZ107Yi5taW1lVHlwZSYmaC5vdmVycmlkZU1pbWVUeXBlJiZoLm92ZXJyaWRlTWltZVR5cGUoYi5taW1lVHlwZSksYi5jcm9zc0RvbWFpbnx8ZVsiWC1SZXF1ZXN0ZWQtV2l0aCJdfHwoZVsiWC1SZXF1ZXN0ZWQtV2l0aCJdPSJYTUxIdHRwUmVxdWVzdCIpO2ZvcihnIGluIGUpaC5zZXRSZXF1ZXN0SGVhZGVyKGcsZVtnXSk7Yz1mdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oKXtjJiYoYz1kPWgub25sb2FkPWgub25lcnJvcj1oLm9uYWJvcnQ9aC5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbCwiYWJvcnQiPT09YT9oLmFib3J0KCk6ImVycm9yIj09PWE/Im51bWJlciIhPXR5cGVvZiBoLnN0YXR1cz9mKDAsImVycm9yIik6ZihoLnN0YXR1cyxoLnN0YXR1c1RleHQpOmYoUmJbaC5zdGF0dXNdfHxoLnN0YXR1cyxoLnN0YXR1c1RleHQsInRleHQiIT09KGgucmVzcG9uc2VUeXBlfHwidGV4dCIpfHwic3RyaW5nIiE9dHlwZW9mIGgucmVzcG9uc2VUZXh0P3tiaW5hcnk6aC5yZXNwb25zZX06e3RleHQ6aC5yZXNwb25zZVRleHR9LGguZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpKX19LGgub25sb2FkPWMoKSxkPWgub25lcnJvcj1jKCJlcnJvciIpLHZvaWQgMCE9PWgub25hYm9ydD9oLm9uYWJvcnQ9ZDpoLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpezQ9PT1oLnJlYWR5U3RhdGUmJmEuc2V0VGltZW91dChmdW5jdGlvbigpe2MmJmQoKX0pfSxjPWMoImFib3J0Iik7dHJ5e2guc2VuZChiLmhhc0NvbnRlbnQmJmIuZGF0YXx8bnVsbCl9Y2F0Y2goaSl7aWYoYyl0aHJvdyBpfX0sYWJvcnQ6ZnVuY3Rpb24oKXtjJiZjKCl9fX0pLHIuYWpheFByZWZpbHRlcihmdW5jdGlvbihhKXthLmNyb3NzRG9tYWluJiYoYS5jb250ZW50cy5zY3JpcHQ9ITEpfSksci5hamF4U2V0dXAoe2FjY2VwdHM6e3NjcmlwdDoidGV4dC9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9lY21hc2NyaXB0LCBhcHBsaWNhdGlvbi94LWVjbWFzY3JpcHQifSxjb250ZW50czp7c2NyaXB0Oi9cYig/OmphdmF8ZWNtYSlzY3JpcHRcYi99LGNvbnZlcnRlcnM6eyJ0ZXh0IHNjcmlwdCI6ZnVuY3Rpb24oYSl7cmV0dXJuIHIuZ2xvYmFsRXZhbChhKSxhfX19KSxyLmFqYXhQcmVmaWx0ZXIoInNjcmlwdCIsZnVuY3Rpb24oYSl7dm9pZCAwPT09YS5jYWNoZSYmKGEuY2FjaGU9ITEpLGEuY3Jvc3NEb21haW4mJihhLnR5cGU9IkdFVCIpfSksci5hamF4VHJhbnNwb3J0KCJzY3JpcHQiLGZ1bmN0aW9uKGEpe2lmKGEuY3Jvc3NEb21haW4pe3ZhciBiLGM7cmV0dXJue3NlbmQ6ZnVuY3Rpb24oZSxmKXtiPXIoIjxzY3JpcHQ+IikucHJvcCh7Y2hhcnNldDphLnNjcmlwdENoYXJzZXQsc3JjOmEudXJsfSkub24oImxvYWQgZXJyb3IiLGM9ZnVuY3Rpb24oYSl7Yi5yZW1vdmUoKSxjPW51bGwsYSYmZigiZXJyb3IiPT09YS50eXBlPzQwNDoyMDAsYS50eXBlKX0pLGQuaGVhZC5hcHBlbmRDaGlsZChiWzBdKX0sYWJvcnQ6ZnVuY3Rpb24oKXtjJiZjKCl9fX19KTt2YXIgVGI9W10sVWI9Lyg9KVw/KD89JnwkKXxcP1w/LztyLmFqYXhTZXR1cCh7anNvbnA6ImNhbGxiYWNrIixqc29ucENhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGE9VGIucG9wKCl8fHIuZXhwYW5kbysiXyIrdWIrKztyZXR1cm4gdGhpc1thXT0hMCxhfX0pLHIuYWpheFByZWZpbHRlcigianNvbiBqc29ucCIsZnVuY3Rpb24oYixjLGQpe3ZhciBlLGYsZyxoPWIuanNvbnAhPT0hMSYmKFViLnRlc3QoYi51cmwpPyJ1cmwiOiJzdHJpbmciPT10eXBlb2YgYi5kYXRhJiYwPT09KGIuY29udGVudFR5cGV8fCIiKS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSYmVWIudGVzdChiLmRhdGEpJiYiZGF0YSIpO2lmKGh8fCJqc29ucCI9PT1iLmRhdGFUeXBlc1swXSlyZXR1cm4gZT1iLmpzb25wQ2FsbGJhY2s9ci5pc0Z1bmN0aW9uKGIuanNvbnBDYWxsYmFjayk/Yi5qc29ucENhbGxiYWNrKCk6Yi5qc29ucENhbGxiYWNrLGg/YltoXT1iW2hdLnJlcGxhY2UoVWIsIiQxIitlKTpiLmpzb25wIT09ITEmJihiLnVybCs9KHZiLnRlc3QoYi51cmwpPyImIjoiPyIpK2IuanNvbnArIj0iK2UpLGIuY29udmVydGVyc1sic2NyaXB0IGpzb24iXT1mdW5jdGlvbigpe3JldHVybiBnfHxyLmVycm9yKGUrIiB3YXMgbm90IGNhbGxlZCIpLGdbMF19LGIuZGF0YVR5cGVzWzBdPSJqc29uIixmPWFbZV0sYVtlXT1mdW5jdGlvbigpe2c9YXJndW1lbnRzfSxkLmFsd2F5cyhmdW5jdGlvbigpe3ZvaWQgMD09PWY/cihhKS5yZW1vdmVQcm9wKGUpOmFbZV09ZixiW2VdJiYoYi5qc29ucENhbGxiYWNrPWMuanNvbnBDYWxsYmFjayxUYi5wdXNoKGUpKSxnJiZyLmlzRnVuY3Rpb24oZikmJmYoZ1swXSksZz1mPXZvaWQgMH0pLCJzY3JpcHQifSksby5jcmVhdGVIVE1MRG9jdW1lbnQ9ZnVuY3Rpb24oKXt2YXIgYT1kLmltcGxlbWVudGF0aW9uLmNyZWF0ZUhUTUxEb2N1bWVudCgiIikuYm9keTtyZXR1cm4gYS5pbm5lckhUTUw9Ijxmb3JtPjwvZm9ybT48Zm9ybT48L2Zvcm0+IiwyPT09YS5jaGlsZE5vZGVzLmxlbmd0aH0oKSxyLnBhcnNlSFRNTD1mdW5jdGlvbihhLGIsYyl7aWYoInN0cmluZyIhPXR5cGVvZiBhKXJldHVybltdOyJib29sZWFuIj09dHlwZW9mIGImJihjPWIsYj0hMSk7dmFyIGUsZixnO3JldHVybiBifHwoby5jcmVhdGVIVE1MRG9jdW1lbnQ/KGI9ZC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpLGU9Yi5jcmVhdGVFbGVtZW50KCJiYXNlIiksZS5ocmVmPWQubG9jYXRpb24uaHJlZixiLmhlYWQuYXBwZW5kQ2hpbGQoZSkpOmI9ZCksZj1DLmV4ZWMoYSksZz0hYyYmW10sZj9bYi5jcmVhdGVFbGVtZW50KGZbMV0pXTooZj1xYShbYV0sYixnKSxnJiZnLmxlbmd0aCYmcihnKS5yZW1vdmUoKSxyLm1lcmdlKFtdLGYuY2hpbGROb2RlcykpfSxyLmZuLmxvYWQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnPXRoaXMsaD1hLmluZGV4T2YoIiAiKTtyZXR1cm4gaD4tMSYmKGQ9cGIoYS5zbGljZShoKSksYT1hLnNsaWNlKDAsaCkpLHIuaXNGdW5jdGlvbihiKT8oYz1iLGI9dm9pZCAwKTpiJiYib2JqZWN0Ij09dHlwZW9mIGImJihlPSJQT1NUIiksZy5sZW5ndGg+MCYmci5hamF4KHt1cmw6YSx0eXBlOmV8fCJHRVQiLGRhdGFUeXBlOiJodG1sIixkYXRhOmJ9KS5kb25lKGZ1bmN0aW9uKGEpe2Y9YXJndW1lbnRzLGcuaHRtbChkP3IoIjxkaXY+IikuYXBwZW5kKHIucGFyc2VIVE1MKGEpKS5maW5kKGQpOmEpfSkuYWx3YXlzKGMmJmZ1bmN0aW9uKGEsYil7Zy5lYWNoKGZ1bmN0aW9uKCl7Yy5hcHBseSh0aGlzLGZ8fFthLnJlc3BvbnNlVGV4dCxiLGFdKX0pfSksdGhpc30sci5lYWNoKFsiYWpheFN0YXJ0IiwiYWpheFN0b3AiLCJhamF4Q29tcGxldGUiLCJhamF4RXJyb3IiLCJhamF4U3VjY2VzcyIsImFqYXhTZW5kIl0sZnVuY3Rpb24oYSxiKXtyLmZuW2JdPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLm9uKGIsYSl9fSksci5leHByLnBzZXVkb3MuYW5pbWF0ZWQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHIuZ3JlcChyLnRpbWVycyxmdW5jdGlvbihiKXtyZXR1cm4gYT09PWIuZWxlbX0pLmxlbmd0aH0sci5vZmZzZXQ9e3NldE9mZnNldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosaz1yLmNzcyhhLCJwb3NpdGlvbiIpLGw9cihhKSxtPXt9OyJzdGF0aWMiPT09ayYmKGEuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIiksaD1sLm9mZnNldCgpLGY9ci5jc3MoYSwidG9wIiksaT1yLmNzcyhhLCJsZWZ0Iiksaj0oImFic29sdXRlIj09PWt8fCJmaXhlZCI9PT1rKSYmKGYraSkuaW5kZXhPZigiYXV0byIpPi0xLGo/KGQ9bC5wb3NpdGlvbigpLGc9ZC50b3AsZT1kLmxlZnQpOihnPXBhcnNlRmxvYXQoZil8fDAsZT1wYXJzZUZsb2F0KGkpfHwwKSxyLmlzRnVuY3Rpb24oYikmJihiPWIuY2FsbChhLGMsci5leHRlbmQoe30saCkpKSxudWxsIT1iLnRvcCYmKG0udG9wPWIudG9wLWgudG9wK2cpLG51bGwhPWIubGVmdCYmKG0ubGVmdD1iLmxlZnQtaC5sZWZ0K2UpLCJ1c2luZyJpbiBiP2IudXNpbmcuY2FsbChhLG0pOmwuY3NzKG0pfX0sci5mbi5leHRlbmQoe29mZnNldDpmdW5jdGlvbihhKXtpZihhcmd1bWVudHMubGVuZ3RoKXJldHVybiB2b2lkIDA9PT1hP3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKGIpe3Iub2Zmc2V0LnNldE9mZnNldCh0aGlzLGEsYil9KTt2YXIgYixjLGQsZSxmPXRoaXNbMF07aWYoZilyZXR1cm4gZi5nZXRDbGllbnRSZWN0cygpLmxlbmd0aD8oZD1mLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGI9Zi5vd25lckRvY3VtZW50LGM9Yi5kb2N1bWVudEVsZW1lbnQsZT1iLmRlZmF1bHRWaWV3LHt0b3A6ZC50b3ArZS5wYWdlWU9mZnNldC1jLmNsaWVudFRvcCxsZWZ0OmQubGVmdCtlLnBhZ2VYT2Zmc2V0LWMuY2xpZW50TGVmdH0pOnt0b3A6MCxsZWZ0OjB9fSxwb3NpdGlvbjpmdW5jdGlvbigpe2lmKHRoaXNbMF0pe3ZhciBhLGIsYz10aGlzWzBdLGQ9e3RvcDowLGxlZnQ6MH07cmV0dXJuImZpeGVkIj09PXIuY3NzKGMsInBvc2l0aW9uIik/Yj1jLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOihhPXRoaXMub2Zmc2V0UGFyZW50KCksYj10aGlzLm9mZnNldCgpLEIoYVswXSwiaHRtbCIpfHwoZD1hLm9mZnNldCgpKSxkPXt0b3A6ZC50b3Arci5jc3MoYVswXSwiYm9yZGVyVG9wV2lkdGgiLCEwKSxsZWZ0OmQubGVmdCtyLmNzcyhhWzBdLCJib3JkZXJMZWZ0V2lkdGgiLCEwKX0pLHt0b3A6Yi50b3AtZC50b3Atci5jc3MoYywibWFyZ2luVG9wIiwhMCksbGVmdDpiLmxlZnQtZC5sZWZ0LXIuY3NzKGMsIm1hcmdpbkxlZnQiLCEwKX19fSxvZmZzZXRQYXJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9mZnNldFBhcmVudDt3aGlsZShhJiYic3RhdGljIj09PXIuY3NzKGEsInBvc2l0aW9uIikpYT1hLm9mZnNldFBhcmVudDtyZXR1cm4gYXx8cmF9KX19KSxyLmVhY2goe3Njcm9sbExlZnQ6InBhZ2VYT2Zmc2V0IixzY3JvbGxUb3A6InBhZ2VZT2Zmc2V0In0sZnVuY3Rpb24oYSxiKXt2YXIgYz0icGFnZVlPZmZzZXQiPT09YjtyLmZuW2FdPWZ1bmN0aW9uKGQpe3JldHVybiBUKHRoaXMsZnVuY3Rpb24oYSxkLGUpe3ZhciBmO3JldHVybiByLmlzV2luZG93KGEpP2Y9YTo5PT09YS5ub2RlVHlwZSYmKGY9YS5kZWZhdWx0Vmlldyksdm9pZCAwPT09ZT9mP2ZbYl06YVtkXTp2b2lkKGY/Zi5zY3JvbGxUbyhjP2YucGFnZVhPZmZzZXQ6ZSxjP2U6Zi5wYWdlWU9mZnNldCk6YVtkXT1lKX0sYSxkLGFyZ3VtZW50cy5sZW5ndGgpfX0pLHIuZWFjaChbInRvcCIsImxlZnQiXSxmdW5jdGlvbihhLGIpe3IuY3NzSG9va3NbYl09UGEoby5waXhlbFBvc2l0aW9uLGZ1bmN0aW9uKGEsYyl7aWYoYylyZXR1cm4gYz1PYShhLGIpLE1hLnRlc3QoYyk/cihhKS5wb3NpdGlvbigpW2JdKyJweCI6Y30pfSksci5lYWNoKHtIZWlnaHQ6ImhlaWdodCIsV2lkdGg6IndpZHRoIn0sZnVuY3Rpb24oYSxiKXtyLmVhY2goe3BhZGRpbmc6ImlubmVyIithLGNvbnRlbnQ6YiwiIjoib3V0ZXIiK2F9LGZ1bmN0aW9uKGMsZCl7ci5mbltkXT1mdW5jdGlvbihlLGYpe3ZhciBnPWFyZ3VtZW50cy5sZW5ndGgmJihjfHwiYm9vbGVhbiIhPXR5cGVvZiBlKSxoPWN8fChlPT09ITB8fGY9PT0hMD8ibWFyZ2luIjoiYm9yZGVyIik7cmV0dXJuIFQodGhpcyxmdW5jdGlvbihiLGMsZSl7dmFyIGY7cmV0dXJuIHIuaXNXaW5kb3coYik/MD09PWQuaW5kZXhPZigib3V0ZXIiKT9iWyJpbm5lciIrYV06Yi5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrYV06OT09PWIubm9kZVR5cGU/KGY9Yi5kb2N1bWVudEVsZW1lbnQsTWF0aC5tYXgoYi5ib2R5WyJzY3JvbGwiK2FdLGZbInNjcm9sbCIrYV0sYi5ib2R5WyJvZmZzZXQiK2FdLGZbIm9mZnNldCIrYV0sZlsiY2xpZW50IithXSkpOnZvaWQgMD09PWU/ci5jc3MoYixjLGgpOnIuc3R5bGUoYixjLGUsaCl9LGIsZz9lOnZvaWQgMCxnKX19KX0pLHIuZm4uZXh0ZW5kKHtiaW5kOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdGhpcy5vbihhLG51bGwsYixjKX0sdW5iaW5kOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMub2ZmKGEsbnVsbCxiKX0sZGVsZWdhdGU6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIHRoaXMub24oYixhLGMsZCl9LHVuZGVsZWdhdGU6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD90aGlzLm9mZihhLCIqKiIpOnRoaXMub2ZmKGIsYXx8IioqIixjKX19KSxyLmhvbGRSZWFkeT1mdW5jdGlvbihhKXthP3IucmVhZHlXYWl0Kys6ci5yZWFkeSghMCl9LHIuaXNBcnJheT1BcnJheS5pc0FycmF5LHIucGFyc2VKU09OPUpTT04ucGFyc2Usci5ub2RlTmFtZT1CLCJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQmJmRlZmluZSgianF1ZXJ5IixbXSxmdW5jdGlvbigpe3JldHVybiByfSk7dmFyIFZiPWEualF1ZXJ5LFdiPWEuJDtyZXR1cm4gci5ub0NvbmZsaWN0PWZ1bmN0aW9uKGIpe3JldHVybiBhLiQ9PT1yJiYoYS4kPVdiKSxiJiZhLmpRdWVyeT09PXImJihhLmpRdWVyeT1WYikscn0sYnx8KGEualF1ZXJ5PWEuJD1yKSxyfSk7Cg=="}},"time_used":304,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":260,"receive":44,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"translate.googleapis.com/_/translate_http/_/js/k=translate_http.tr.no.ff6jKkbJ0bA.O/am=AAAE/d=1/exm=el_conf/ed=1/rs=AN8SPfp4Hk22P3fElU3_0oZE8w1Fbz_cbw/m=el_main","fqdn":"translate.googleapis.com","domain":"translate.googleapis.com","tld":"googleapis.com"},"ip":{"addr":"142.250.74.106","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://clear-vault.online/","date":"2025-08-07T20:48:22.038Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"upload.video.google.com","organization":""},"issuer":{"commonName":"WR2","organization":"Google Trust Services"},"validity":{"start":"Mon, 07 Jul 2025 08:35:11 GMT","end":"Mon, 29 Sep 2025 08:35:10 GMT"},"fingerprint":{"sha1":"DF:A1:DB:1F:BC:5E:31:D7:F8:FE:26:E3:B9:B3:02:98:B1:C8:50:EC","sha256":"A2:57:20:B6:AE:46:89:B9:39:C7:57:9B:1E:43:96:E3:5A:BC:7E:3F:1D:18:10:34:CC:53:3D:DB:78:4E:5C:21"}}},"request":{"raw":"GET /_/translate_http/_/js/k=translate_http.tr.no.ff6jKkbJ0bA.O/am=AAAE/d=1/exm=el_conf/ed=1/rs=AN8SPfp4Hk22P3fElU3_0oZE8w1Fbz_cbw/m=el_main HTTP/1.1\r\nHost: translate.googleapis.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.5\r\nAccept-Encoding: gzip, deflate, br\r\nDNT: 1\r\nConnection: keep-alive\r\nReferer: https://clear-vault.online/\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 OK\r\naccept-ranges: bytes\r\ncontent-encoding: gzip\r\naccess-control-allow-origin: *\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/rosetta\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"rosetta\"\r\nreport-to: {\"group\":\"rosetta\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/rosetta\"}]}\r\ncontent-length: 76790\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Thu, 07 Aug 2025 10:15:23 GMT\r\nexpires: Fri, 07 Aug 2026 10:15:23 GMT\r\ncache-control: public, max-age=31536000\r\nlast-modified: Tue, 05 Aug 2025 03:10:12 GMT\r\ncontent-type: text/javascript; charset=UTF-8\r\nvary: Accept-Encoding\r\nage: 37979\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":"OK","fingerprints":null,"data":{"size":222140,"size_decoded":0,"mime_type":"text/javascript; charset=UTF-8","magic":"JavaScript source, ASCII text, with very long lines (2544)","md5":"bd815f5ccfeb9813f1f9d6b72908146a","sha1":"ddf716ab41f7fd13307801cb2950b9d48a7f7347","sha256":"4e871cf945b6c8976e1b27ba2fb7f673877cbd4475d8d47499d1594e671863f6","sha512":"d1bcbadbb94e0e4d915f64837cd944e6aecac51d3c2c511adba4913d4dbdb1be894fa4cf73f458f34a10bb3b213208a14696339b21d9f73239e7a6670e78dfa5","ssdeep":"3072:LztH9v7r8JBgE70owZMMCUjClVeVJjN5yHxu/9NAvp6e4zFArii:5IBgE1cJlLRi","tlshash":"3424e8d9b35270669363f4a6917f000bb13b6869f9484dacb28de8e25ef48190177f7c","first_seen":"2025-08-06T18:59:40.540514Z","last_seen":"2026-07-03T02:37:05.647724Z","times_seen":855,"resource_available":true,"data":"InVzZSBzdHJpY3QiO3RoaXMuZGVmYXVsdF90cj10aGlzLmRlZmF1bHRfdHJ8fHt9OyhmdW5jdGlvbihfKXt2YXIgd2luZG93PXRoaXM7CnRyeXsKdmFyIHZnLHdnLEFnLEJnLENnLERnLEVnLEdnLEhnLElnLEpnLEtnLE1nLE9nLFBnO18ucmc9ZnVuY3Rpb24oYSl7dmFyIGI9W10sYz0wLGQ7Zm9yKGQgaW4gYSliW2MrK109ZDtyZXR1cm4gYn07Xy5zZz1mdW5jdGlvbihhKXtpZihhLmtiJiZ0eXBlb2YgYS5rYj09ImZ1bmN0aW9uIilyZXR1cm4gYS5rYigpO2lmKHR5cGVvZiBNYXAhPT0idW5kZWZpbmVkIiYmYSBpbnN0YW5jZW9mIE1hcHx8dHlwZW9mIFNldCE9PSJ1bmRlZmluZWQiJiZhIGluc3RhbmNlb2YgU2V0KXJldHVybiBBcnJheS5mcm9tKGEudmFsdWVzKCkpO2lmKHR5cGVvZiBhPT09InN0cmluZyIpcmV0dXJuIGEuc3BsaXQoIiIpO2lmKF8ucmEoYSkpe2Zvcih2YXIgYj1bXSxjPWEubGVuZ3RoLGQ9MDtkPGM7ZCsrKWIucHVzaChhW2RdKTtyZXR1cm4gYn1yZXR1cm4gXy5EYShhKX07Cl8udGc9ZnVuY3Rpb24oYSl7aWYoYS5YYiYmdHlwZW9mIGEuWGI9PSJmdW5jdGlvbiIpcmV0dXJuIGEuWGIoKTtpZighYS5rYnx8dHlwZW9mIGEua2IhPSJmdW5jdGlvbiIpe2lmKHR5cGVvZiBNYXAhPT0idW5kZWZpbmVkIiYmYSBpbnN0YW5jZW9mIE1hcClyZXR1cm4gQXJyYXkuZnJvbShhLmtleXMoKSk7aWYoISh0eXBlb2YgU2V0IT09InVuZGVmaW5lZCImJmEgaW5zdGFuY2VvZiBTZXQpKXtpZihfLnJhKGEpfHx0eXBlb2YgYT09PSJzdHJpbmciKXt2YXIgYj1bXTthPWEubGVuZ3RoO2Zvcih2YXIgYz0wO2M8YTtjKyspYi5wdXNoKGMpO3JldHVybiBifXJldHVybiBfLnJnKGEpfX19OwpfLnVnPWZ1bmN0aW9uKGEsYixjKXtpZihhLmZvckVhY2gmJnR5cGVvZiBhLmZvckVhY2g9PSJmdW5jdGlvbiIpYS5mb3JFYWNoKGIsYyk7ZWxzZSBpZihfLnJhKGEpfHx0eXBlb2YgYT09PSJzdHJpbmciKUFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNhbGwoYSxiLGMpO2Vsc2UgZm9yKHZhciBkPV8udGcoYSksZT1fLnNnKGEpLGY9ZS5sZW5ndGgsZz0wO2c8ZjtnKyspYi5jYWxsKGMsZVtnXSxkJiZkW2ddLGEpfTt2Zz1mdW5jdGlvbihhLGIpe2lmKGIpe2I9TnVtYmVyKGIpO2lmKGlzTmFOKGIpfHxiPDApdGhyb3cgRXJyb3IoIkdgIitiKTthLkM9Yn1lbHNlIGEuQz1udWxsfTt3Zz1mdW5jdGlvbihhLGIpe3JldHVybiBhP2I/ZGVjb2RlVVJJKGEucmVwbGFjZSgvJTI1L2csIiUyNTI1IikpOmRlY29kZVVSSUNvbXBvbmVudChhKToiIn07Xy54Zz1mdW5jdGlvbihhLGIsYyl7YS5oPWM/d2coYiwhMCk6YjtyZXR1cm4gYX07Cl8ueWc9ZnVuY3Rpb24oYSxiLGMpe2Euaj1jP3dnKGIsITApOmI7cmV0dXJuIGF9O18uemc9ZnVuY3Rpb24oYSxiLGMpe2EubD1jP3dnKGIsITApOmI7YS5sJiYoYS5sPWEubC5yZXBsYWNlKC86JC8sIiIpKTtyZXR1cm4gYX07QWc9L1sjXC9cP0BdL2c7Qmc9L1sjXD9dL2c7Q2c9L1sjXD86XS9nO0RnPS8jL2c7RWc9L1sjXD9AXS9nO18uRmc9ZnVuY3Rpb24oYSl7dmFyIGI9Xy52YygpO2EuZy5zZXQoInp4IixiKX07R2c9ZnVuY3Rpb24oYSl7YT1hLmNoYXJDb2RlQXQoMCk7cmV0dXJuIiUiKyhhPj40JjE1KS50b1N0cmluZygxNikrKGEmMTUpLnRvU3RyaW5nKDE2KX07SGc9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB0eXBlb2YgYT09PSJzdHJpbmciPyhhPWVuY29kZVVSSShhKS5yZXBsYWNlKGIsR2cpLGMmJihhPWEucmVwbGFjZSgvJTI1KFswLTlhLWZBLUZdezJ9KS9nLCIlJDEiKSksYSk6bnVsbH07CklnPWZ1bmN0aW9uKGEpe2EuZ3x8KGEuZz1uZXcgTWFwLGEuaD0wLGEuaiYmXy5qZihhLmosZnVuY3Rpb24oYixjKXthLmFkZChfLnVjKGIpLGMpfSkpfTtKZz1mdW5jdGlvbihhLGIpe2I9U3RyaW5nKGIpO2EubCYmKGI9Yi50b0xvd2VyQ2FzZSgpKTtyZXR1cm4gYn07S2c9ZnVuY3Rpb24oYSxiKXtJZyhhKTtiPUpnKGEsYik7cmV0dXJuIGEuZy5oYXMoYil9O18uTGc9ZnVuY3Rpb24oYSxiKXt0aGlzLmg9dGhpcy5nPW51bGw7dGhpcy5qPWF8fG51bGw7dGhpcy5sPSEhYn07Xy5sPV8uTGcucHJvdG90eXBlO18ubC5hZGQ9ZnVuY3Rpb24oYSxiKXtJZyh0aGlzKTt0aGlzLmo9bnVsbDthPUpnKHRoaXMsYSk7dmFyIGM9dGhpcy5nLmdldChhKTtjfHx0aGlzLmcuc2V0KGEsYz1bXSk7Yy5wdXNoKGIpO3RoaXMuaCs9MTtyZXR1cm4gdGhpc307Cl8ubC5yZW1vdmU9ZnVuY3Rpb24oYSl7SWcodGhpcyk7YT1KZyh0aGlzLGEpO3JldHVybiB0aGlzLmcuaGFzKGEpPyh0aGlzLmo9bnVsbCx0aGlzLmgtPXRoaXMuZy5nZXQoYSkubGVuZ3RoLHRoaXMuZy5kZWxldGUoYSkpOiExfTtfLmwuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLmc9dGhpcy5qPW51bGw7dGhpcy5oPTB9O18ubC5mb3JFYWNoPWZ1bmN0aW9uKGEsYil7SWcodGhpcyk7dGhpcy5nLmZvckVhY2goZnVuY3Rpb24oYyxkKXtjLmZvckVhY2goZnVuY3Rpb24oZSl7YS5jYWxsKGIsZSxkLHRoaXMpfSx0aGlzKX0sdGhpcyl9O18ubC5YYj1mdW5jdGlvbigpe0lnKHRoaXMpO2Zvcih2YXIgYT1BcnJheS5mcm9tKHRoaXMuZy52YWx1ZXMoKSksYj1BcnJheS5mcm9tKHRoaXMuZy5rZXlzKCkpLGM9W10sZD0wO2Q8Yi5sZW5ndGg7ZCsrKWZvcih2YXIgZT1hW2RdLGY9MDtmPGUubGVuZ3RoO2YrKyljLnB1c2goYltkXSk7cmV0dXJuIGN9OwpfLmwua2I9ZnVuY3Rpb24oYSl7SWcodGhpcyk7dmFyIGI9W107aWYodHlwZW9mIGE9PT0ic3RyaW5nIilLZyh0aGlzLGEpJiYoYj1iLmNvbmNhdCh0aGlzLmcuZ2V0KEpnKHRoaXMsYSkpKSk7ZWxzZXthPUFycmF5LmZyb20odGhpcy5nLnZhbHVlcygpKTtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKyliPWIuY29uY2F0KGFbY10pfXJldHVybiBifTtfLmwuc2V0PWZ1bmN0aW9uKGEsYil7SWcodGhpcyk7dGhpcy5qPW51bGw7YT1KZyh0aGlzLGEpO0tnKHRoaXMsYSkmJih0aGlzLmgtPXRoaXMuZy5nZXQoYSkubGVuZ3RoKTt0aGlzLmcuc2V0KGEsW2JdKTt0aGlzLmgrPTE7cmV0dXJuIHRoaXN9O18ubC5nZXQ9ZnVuY3Rpb24oYSxiKXtpZighYSlyZXR1cm4gYjthPXRoaXMua2IoYSk7cmV0dXJuIGEubGVuZ3RoPjA/U3RyaW5nKGFbMF0pOmJ9OwpfLmwudG9TdHJpbmc9ZnVuY3Rpb24oKXtpZih0aGlzLmopcmV0dXJuIHRoaXMuajtpZighdGhpcy5nKXJldHVybiIiO2Zvcih2YXIgYT1bXSxiPUFycmF5LmZyb20odGhpcy5nLmtleXMoKSksYz0wO2M8Yi5sZW5ndGg7YysrKXt2YXIgZD1iW2NdLGU9Xy50YyhkKTtkPXRoaXMua2IoZCk7Zm9yKHZhciBmPTA7ZjxkLmxlbmd0aDtmKyspe3ZhciBnPWU7ZFtmXSE9PSIiJiYoZys9Ij0iK18udGMoZFtmXSkpO2EucHVzaChnKX19cmV0dXJuIHRoaXMuaj1hLmpvaW4oIiYiKX07Xy5sLmV4dGVuZD1mdW5jdGlvbihhKXtmb3IodmFyIGI9MDtiPGFyZ3VtZW50cy5sZW5ndGg7YisrKV8udWcoYXJndW1lbnRzW2JdLGZ1bmN0aW9uKGMsZCl7dGhpcy5hZGQoZCxjKX0sdGhpcyl9O01nPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBfLkxnO2Iuaj1hLmo7YS5nJiYoYi5nPW5ldyBNYXAoYS5nKSxiLmg9YS5oKTtyZXR1cm4gYn07Cl8uTmc9ZnVuY3Rpb24oYSxiLGMpe2EucmVtb3ZlKGIpO2MubGVuZ3RoPjAmJihhLmo9bnVsbCxhLmcuc2V0KEpnKGEsYiksXy54YShjKSksYS5oKz1jLmxlbmd0aCl9O09nPWZ1bmN0aW9uKGEsYil7YiYmIWEubCYmKElnKGEpLGEuaj1udWxsLGEuZy5mb3JFYWNoKGZ1bmN0aW9uKGMsZCl7dmFyIGU9ZC50b0xvd2VyQ2FzZSgpO2QhPWUmJih0aGlzLnJlbW92ZShkKSxfLk5nKHRoaXMsZSxjKSl9LGEpKTthLmw9Yn07UGc9ZnVuY3Rpb24oYSxiLGMpe2IgaW5zdGFuY2VvZiBfLkxnPyhhLmc9YixPZyhhLmcsYS5vKSk6KGN8fChiPUhnKGIsRWcpKSxhLmc9bmV3IF8uTGcoYixhLm8pKX07Cl8uUWc9ZnVuY3Rpb24oYSl7dGhpcy5qPXRoaXMuQj10aGlzLmw9IiI7dGhpcy5DPW51bGw7dGhpcy5BPXRoaXMuaD0iIjt0aGlzLm89ITE7dmFyIGI7YSBpbnN0YW5jZW9mIF8uUWc/KHRoaXMubz1hLm8sXy56Zyh0aGlzLGEubCksdGhpcy5CPWEuQixfLnlnKHRoaXMsYS5qKSx2Zyh0aGlzLGEuQyksXy54Zyh0aGlzLGEuaCksUGcodGhpcyxNZyhhLmcpKSx0aGlzLkE9YS5BKTphJiYoYj1TdHJpbmcoYSkubWF0Y2goXy5nZikpPyh0aGlzLm89ITEsXy56Zyh0aGlzLGJbMV18fCIiLCEwKSx0aGlzLkI9d2coYlsyXXx8IiIpLF8ueWcodGhpcyxiWzNdfHwiIiwhMCksdmcodGhpcyxiWzRdKSxfLnhnKHRoaXMsYls1XXx8IiIsITApLFBnKHRoaXMsYls2XXx8IiIsITApLHRoaXMuQT13ZyhiWzddfHwiIikpOih0aGlzLm89ITEsdGhpcy5nPW5ldyBfLkxnKG51bGwsdGhpcy5vKSl9OwpfLlFnLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3ZhciBhPVtdLGI9dGhpcy5sO2ImJmEucHVzaChIZyhiLEFnLCEwKSwiOiIpO3ZhciBjPXRoaXMuajtpZihjfHxiPT0iZmlsZSIpYS5wdXNoKCIvLyIpLChiPXRoaXMuQikmJmEucHVzaChIZyhiLEFnLCEwKSwiQCIpLGEucHVzaChfLnRjKGMpLnJlcGxhY2UoLyUyNShbMC05YS1mQS1GXXsyfSkvZywiJSQxIikpLGM9dGhpcy5DLGMhPW51bGwmJmEucHVzaCgiOiIsU3RyaW5nKGMpKTtpZihjPXRoaXMuaCl0aGlzLmomJmMuY2hhckF0KDApIT0iLyImJmEucHVzaCgiLyIpLGEucHVzaChIZyhjLGMuY2hhckF0KDApPT0iLyI/Qmc6Q2csITApKTsoYz10aGlzLmcudG9TdHJpbmcoKSkmJmEucHVzaCgiPyIsYyk7KGM9dGhpcy5BKSYmYS5wdXNoKCIjIixIZyhjLERnKSk7cmV0dXJuIGEuam9pbigiIil9OwpfLlFnLnByb3RvdHlwZS5yZXNvbHZlPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBfLlFnKHRoaXMpLGM9ISFhLmw7Yz9fLnpnKGIsYS5sKTpjPSEhYS5CO2M/Yi5CPWEuQjpjPSEhYS5qO2M/Xy55ZyhiLGEuaik6Yz1hLkMhPW51bGw7dmFyIGQ9YS5oO2lmKGMpdmcoYixhLkMpO2Vsc2UgaWYoYz0hIWEuaCl7aWYoZC5jaGFyQXQoMCkhPSIvIilpZih0aGlzLmomJiF0aGlzLmgpZD0iLyIrZDtlbHNle3ZhciBlPWIuaC5sYXN0SW5kZXhPZigiLyIpO2UhPS0xJiYoZD1iLmguc2xpY2UoMCxlKzEpK2QpfWU9ZDtpZihlPT0iLi4ifHxlPT0iLiIpZD0iIjtlbHNlIGlmKGUuaW5kZXhPZigiLi8iKSE9LTF8fGUuaW5kZXhPZigiLy4iKSE9LTEpe2Q9ZS5sYXN0SW5kZXhPZigiLyIsMCk9PTA7ZT1lLnNwbGl0KCIvIik7Zm9yKHZhciBmPVtdLGc9MDtnPGUubGVuZ3RoOyl7dmFyIGg9ZVtnKytdO2g9PSIuIj9kJiZnPT1lLmxlbmd0aCYmZi5wdXNoKCIiKTpoPT0iLi4iPygoZi5sZW5ndGg+MXx8Zi5sZW5ndGg9PQoxJiZmWzBdIT0iIikmJmYucG9wKCksZCYmZz09ZS5sZW5ndGgmJmYucHVzaCgiIikpOihmLnB1c2goaCksZD0hMCl9ZD1mLmpvaW4oIi8iKX1lbHNlIGQ9ZX1jP18ueGcoYixkKTpjPWEuZy50b1N0cmluZygpIT09IiI7Yz9QZyhiLE1nKGEuZykpOmM9ISFhLkE7YyYmKGIuQT1hLkEpO3JldHVybiBifTtfLlJnPWZ1bmN0aW9uKCl7fTtfLlJnLnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7cmV0dXJuIF8uU2d9O18uU2c9e2RvbmU6ITAsdmFsdWU6dm9pZCAwfTtfLlJnLnByb3RvdHlwZS5xYz1mdW5jdGlvbigpe3JldHVybiB0aGlzfTtfLlRnPWZ1bmN0aW9uKGEsYixjKXtpZih0eXBlb2YgYT09PSJmdW5jdGlvbiIpYyYmKGE9KDAsXy5DKShhLGMpKTtlbHNlIGlmKGEmJnR5cGVvZiBhLmhhbmRsZUV2ZW50PT0iZnVuY3Rpb24iKWE9KDAsXy5DKShhLmhhbmRsZUV2ZW50LGEpO2Vsc2UgdGhyb3cgRXJyb3IoIlYiKTtyZXR1cm4gTnVtYmVyKGIpPjIxNDc0ODM2NDc/LTE6Xy51LnNldFRpbWVvdXQoYSxifHwwKX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBuaCxvaCxwaCxMaCxSaCxYaCxZaCwkaCxhaSxjaSxnaSxpaSxoaSxvaSxzaSxxaSxyaSx2aDtuaD1mdW5jdGlvbihhKXtpZighXy5WYXx8IV8uV2EpcmV0dXJuITE7Zm9yKHZhciBiPTA7YjxfLldhLmJyYW5kcy5sZW5ndGg7YisrKXt2YXIgYz1fLldhLmJyYW5kc1tiXS5icmFuZDtpZihjJiZjLmluZGV4T2YoYSkhPS0xKXJldHVybiEwfXJldHVybiExfTtvaD1mdW5jdGlvbigpe3JldHVybiBfLnYoIkZpcmVmb3giKXx8Xy52KCJGeGlPUyIpfTtwaD1mdW5jdGlvbigpe3JldHVybiBfLlhhKCk/bmgoIkNocm9taXVtIik6KF8udigiQ2hyb21lIil8fF8udigiQ3JpT1MiKSkmJiEoXy5YYSgpPzA6Xy52KCJFZGdlIikpfHxfLnYoIlNpbGsiKX07Cl8ucWg9ZnVuY3Rpb24oKXtyZXR1cm4gXy52KCJTYWZhcmkiKSYmIShwaCgpfHwoXy5YYSgpPzA6Xy52KCJDb2FzdCIpKXx8Xy5ZYSgpfHwoXy5YYSgpPzA6Xy52KCJFZGdlIikpfHwoXy5YYSgpP25oKCJNaWNyb3NvZnQgRWRnZSIpOl8udigiRWRnLyIpKXx8KF8uWGEoKT9uaCgiT3BlcmEiKTpfLnYoIk9QUiIpKXx8b2goKXx8Xy52KCJTaWxrIil8fF8udigiQW5kcm9pZCIpKX07Xy5yaD1mdW5jdGlvbigpe3JldHVybiBfLnYoIkFuZHJvaWQiKSYmIShwaCgpfHxvaCgpfHxfLllhKCl8fF8udigiU2lsayIpKX07Xy50aD1mdW5jdGlvbihhKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgXy5zaCYmYSBpbnN0YW5jZW9mIF8uc2h9O18udWg9ZnVuY3Rpb24oYSl7aWYoXy50aChhKSlyZXR1cm4gYS5nO3Rocm93IEVycm9yKCJ1Iik7fTtfLndoPWZ1bmN0aW9uKGEpe2lmKHZoLnRlc3QoYSkpcmV0dXJuIGF9OwpfLnhoPWZ1bmN0aW9uKGEpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBfLnNoJiZhIGluc3RhbmNlb2YgXy5zaD9fLnVoKGEpOl8ud2goYSl9O18ueWg9ZnVuY3Rpb24oYSxiKXthLl9fY2xvc3VyZV9fZXJyb3JfX2NvbnRleHRfXzk4NDM4Mnx8KGEuX19jbG9zdXJlX19lcnJvcl9fY29udGV4dF9fOTg0MzgyPXt9KTthLl9fY2xvc3VyZV9fZXJyb3JfX2NvbnRleHRfXzk4NDM4Mi5zZXZlcml0eT1ifTtfLkJoPWZ1bmN0aW9uKGEsYil7aWYoYSE9bnVsbCl7dmFyIGM7dmFyIGQ9KGM9emgpIT1udWxsP2M6emg9e307Yz1kW2FdfHwwO2M+PWJ8fChkW2FdPWMrMSxhPUVycm9yKCksXy55aChhLCJpbmNpZGVudCIpLF8ubmIoYSkpfX07Cl8uQ2g9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB0eXBlb2YgU3ltYm9sPT09ImZ1bmN0aW9uIiYmdHlwZW9mIFN5bWJvbCgpPT09InN5bWJvbCI/KGM9PT12b2lkIDA/MDpjKSYmU3ltYm9sLmZvciYmYT9TeW1ib2wuZm9yKGEpOmEhPW51bGw/U3ltYm9sKGEpOlN5bWJvbCgpOmJ9O18uR2g9ZnVuY3Rpb24oYSxiKXtfLkRofHxfLkggaW4gYXx8RWgoYSxGaCk7YVtfLkhdfD1ifTtfLkhoPWZ1bmN0aW9uKGEsYil7Xy5EaHx8Xy5IIGluIGF8fEVoKGEsRmgpO2FbXy5IXT1ifTtfLkloPWZ1bmN0aW9uKGEpe18uR2goYSwzNCk7cmV0dXJuIGF9O18uS2g9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj09PXZvaWQgMD9hLmchPT1fLkpoJiYhISgyJihhLkhbXy5IXXwwKSk6ISEoMiZiKSYmYS5nIT09Xy5KaH07TGg9ZnVuY3Rpb24oYSl7YS5Bbz0hMDtyZXR1cm4gYX07Cl8uUWg9ZnVuY3Rpb24oYSl7dmFyIGI9YTtpZihNaChiKSl7aWYoIS9eXHMqKD86LT9bMS05XVxkKnwwKT9ccyokLy50ZXN0KGIpKXRocm93IEVycm9yKFN0cmluZyhiKSk7fWVsc2UgaWYoTmgoYikmJiFOdW1iZXIuaXNTYWZlSW50ZWdlcihiKSl0aHJvdyBFcnJvcihTdHJpbmcoYikpO3JldHVybiBPaD9CaWdJbnQoYSk6YT1QaChhKT9hPyIxIjoiMCI6TWgoYSk/YS50cmltKCl8fCIwIjpTdHJpbmcoYSl9O1JoPWZ1bmN0aW9uKGEsYil7aWYoYS5sZW5ndGg+Yi5sZW5ndGgpcmV0dXJuITE7aWYoYS5sZW5ndGg8Yi5sZW5ndGh8fGE9PT1iKXJldHVybiEwO2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKXt2YXIgZD1hW2NdLGU9YltjXTtpZihkPmUpcmV0dXJuITE7aWYoZDxlKXJldHVybiEwfX07Cl8uV2g9ZnVuY3Rpb24oYSxiLGMsZCl7aWYoYSE9bnVsbCYmYVtTaF09PT1UaClyZXR1cm4gYTtpZighQXJyYXkuaXNBcnJheShhKSlyZXR1cm4gYz9kJjI/YltfLlVoXXx8KGJbXy5VaF09Xy5WaChiKSk6bmV3IGI6dm9pZCAwO2M9YVtfLkhdfDA7ZD1jfGQmMzJ8ZCYyO2QhPT1jJiZfLkhoKGEsZCk7cmV0dXJuIG5ldyBiKGEpfTtfLlZoPWZ1bmN0aW9uKGEpe2E9bmV3IGE7Xy5JaChhLkgpO3JldHVybiBhfTtYaD1mdW5jdGlvbihhKXtyZXR1cm4gYX07WWg9ZnVuY3Rpb24oYSl7cmV0dXJuIGF9OyRoPWZ1bmN0aW9uKGEsYixjLGQsZSxmKXthPV8uV2goYSxkLGMsZik7ZSYmKGE9Xy5aaChhKSk7cmV0dXJuIGF9O2FpPWZ1bmN0aW9uKGEpe3JldHVyblthLHRoaXMuZ2V0KGEpXX07Y2k9ZnVuY3Rpb24oYSxiKXtiPDEwMHx8Xy5CaChiaSwxKX07CmdpPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWQhPT12b2lkIDA7ZD0hIWQ7dmFyIGY9Xy5kaShfLmVpKSxnOyFlJiZfLkRoJiZmJiYoZz1hW2ZdKSYmZy55bihjaSk7Zj1bXTt2YXIgaD1hLmxlbmd0aDtnPTQyOTQ5NjcyOTU7dmFyIGs9ITEsbT0hIShiJjY0KSxuPW0/YiYxMjg/MDotMTp2b2lkIDA7aWYoIShiJjEpKXt2YXIgcD1oJiZhW2gtMV07cCE9bnVsbCYmdHlwZW9mIHA9PT0ib2JqZWN0IiYmcC5jb25zdHJ1Y3Rvcj09PU9iamVjdD8oaC0tLGc9aCk6cD12b2lkIDA7aWYobSYmIShiJjEyOCkmJiFlKXtrPSEwO3ZhciBxO2c9KChxPWZpKSE9bnVsbD9xOlhoKShnLW4sbixhLHAsdm9pZCAwKStufX1iPXZvaWQgMDtmb3IoZT0wO2U8aDtlKyspaWYocT1hW2VdLHEhPW51bGwmJihxPWMocSxkKSkhPW51bGwpaWYobSYmZT49Zyl7dmFyIHI9ZS1uLHQ9dm9pZCAwOygodD1iKSE9bnVsbD90OmI9e30pW3JdPXF9ZWxzZSBmW2VdPXE7aWYocClmb3IodmFyIEEgaW4gcClhPXBbQV0sYSE9Cm51bGwmJihhPWMoYSxkKSkhPW51bGwmJihoPStBLGU9dm9pZCAwLG0mJiFOdW1iZXIuaXNOYU4oaCkmJihlPWgrbik8Zz9mW2VdPWE6KGg9dm9pZCAwLCgoaD1iKSE9bnVsbD9oOmI9e30pW0FdPWEpKTtiJiYoaz9mLnB1c2goYik6ZltnXT1iKTtyZXR1cm4gZn07aWk9ZnVuY3Rpb24oYSl7YVswXT1oaShhWzBdKTthWzFdPWhpKGFbMV0pO3JldHVybiBhfTsKaGk9ZnVuY3Rpb24oYSl7c3dpdGNoKHR5cGVvZiBhKXtjYXNlICJudW1iZXIiOnJldHVybiBOdW1iZXIuaXNGaW5pdGUoYSk/YToiIithO2Nhc2UgImJpZ2ludCI6cmV0dXJuKDAsXy5qaSkoYSk/TnVtYmVyKGEpOiIiK2E7Y2FzZSAiYm9vbGVhbiI6cmV0dXJuIGE/MTowO2Nhc2UgIm9iamVjdCI6aWYoQXJyYXkuaXNBcnJheShhKSl7dmFyIGI9YVtfLkhdfDA7cmV0dXJuIGEubGVuZ3RoPT09MCYmYiYxP3ZvaWQgMDpnaShhLGIsaGkpfWlmKGEhPW51bGwmJmFbU2hdPT09VGgpcmV0dXJuIF8ua2koYSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIF8ubGkmJmEgaW5zdGFuY2VvZiBfLmxpKXJldHVybiBhLmcoKTtpZihhIGluc3RhbmNlb2YgXy5taSlyZXR1cm4gYT1hLnNpemUhPT0wP0FycmF5LmZyb20oXy5uaS5wcm90b3R5cGUuZW50cmllcy5jYWxsKGEpLGlpKTp2b2lkIDAsYTtyZXR1cm59cmV0dXJuIGF9OwpfLmtpPWZ1bmN0aW9uKGEpe2E9YS5IO3JldHVybiBnaShhLGFbXy5IXXwwLGhpKX07Cl8uST1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9ZD09PXZvaWQgMD8wOmQ7aWYoYT09bnVsbCl7dmFyIGU9MzI7Yz8oYT1bY10sZXw9MTI4KTphPVtdO2ImJihlPWUmLTgzODA0MTd8KGImMTAyMyk8PDEzKX1lbHNle2lmKCFBcnJheS5pc0FycmF5KGEpKXRocm93IEVycm9yKCJnYSIpO2U9YVtfLkhdfDA7aWYoXy5CYyYmMSZlKXRocm93IEVycm9yKCJoYSIpOzIwNDgmZSYmISgyJmUpJiZvaSgpO2lmKGUmMjU2KXRocm93IEVycm9yKCJpYSIpO2lmKGUmNjQpcmV0dXJuIGQhPT0wfHxlJjIwNDh8fF8uSGgoYSxlfDIwNDgpLGE7aWYoYyYmKGV8PTEyOCxjIT09YVswXSkpdGhyb3cgRXJyb3IoImphIik7YTp7Yz1hO2V8PTY0O3ZhciBmPWMubGVuZ3RoO2lmKGYpe3ZhciBnPWYtMSxoPWNbZ107aWYoaCE9bnVsbCYmdHlwZW9mIGg9PT0ib2JqZWN0IiYmaC5jb25zdHJ1Y3Rvcj09PU9iamVjdCl7Yj1lJjEyOD8wOi0xO2ctPWI7aWYoZz49MTAyNCl0aHJvdyBFcnJvcigibGEiKTtmb3IodmFyIGsgaW4gaClmPQorayxmPGcmJihjW2YrYl09aFtrXSxkZWxldGUgaFtrXSk7ZT1lJi04MzgwNDE3fChnJjEwMjMpPDwxMzticmVhayBhfX1pZihiKXtrPU1hdGgubWF4KGIsZi0oZSYxMjg/MDotMSkpO2lmKGs+MTAyNCl0aHJvdyBFcnJvcigibWEiKTtlPWUmLTgzODA0MTd8KGsmMTAyMyk8PDEzfX19ZXw9NjQ7ZD09PTAmJihlfD0yMDQ4KTtfLkhoKGEsZSk7cmV0dXJuIGF9O29pPWZ1bmN0aW9uKCl7aWYoXy5CYyl0aHJvdyBFcnJvcigia2EiKTtfLkJoKHBpLDUpfTsKc2k9ZnVuY3Rpb24oYSxiKXtpZih0eXBlb2YgYSE9PSJvYmplY3QiKXJldHVybiBhO2lmKEFycmF5LmlzQXJyYXkoYSkpe3ZhciBjPWFbXy5IXXwwO3JldHVybiBhLmxlbmd0aD09PTAmJmMmMT92b2lkIDA6cWkoYSxjLGIpfWlmKGEhPW51bGwmJmFbU2hdPT09VGgpcmV0dXJuIHJpKGEpO2lmKGEgaW5zdGFuY2VvZiBfLm1pKXtiPWEudWM7aWYoYiYyKXJldHVybiBhO2lmKCFhLnNpemUpcmV0dXJuO2M9Xy5JaChBcnJheS5mcm9tKF8ubmkucHJvdG90eXBlLmVudHJpZXMuY2FsbChhKSkpO2lmKGEubGMpZm9yKGE9MDthPGMubGVuZ3RoO2ErKyl7dmFyIGQ9Y1thXSxlPWRbMV07ZT09bnVsbHx8dHlwZW9mIGUhPT0ib2JqZWN0Ij9lPXZvaWQgMDplIT1udWxsJiZlW1NoXT09PVRoP2U9cmkoZSk6QXJyYXkuaXNBcnJheShlKT9lPXFpKGUsZVtfLkhdfDAsISEoYiYzMikpOmU9dm9pZCAwO2RbMV09ZX1yZXR1cm4gY31pZigiZnVuY3Rpb24iPT10eXBlb2YgXy5saSYmYSBpbnN0YW5jZW9mCl8ubGkpcmV0dXJuIGF9O3FpPWZ1bmN0aW9uKGEsYixjKXtpZihiJjIpcmV0dXJuIGE7IWN8fDQwOTYmYnx8MTYmYj9hPV8udGkoYSxiLCExLGMmJiEoYiYxNikpOihfLkdoKGEsMzQpLGImNCYmT2JqZWN0LmZyZWV6ZShhKSk7cmV0dXJuIGF9O18udWk9ZnVuY3Rpb24oYSxiLGMpe2E9bmV3IGEuY29uc3RydWN0b3IoYik7YyYmKGEuZz1fLkpoKTthLmg9Xy5KaDtyZXR1cm4gYX07cmk9ZnVuY3Rpb24oYSl7dmFyIGI9YS5ILGM9YltfLkhdfDA7cmV0dXJuIF8uS2goYSxjKT9hOl8udmkoYSxiLGMpP18udWkoYSxiKTpfLnRpKGIsYyl9O18udGk9ZnVuY3Rpb24oYSxiLGMsZCl7ZCE9bnVsbHx8KGQ9ISEoMzQmYikpO2E9Z2koYSxiLHNpLGQpO2Q9MzI7YyYmKGR8PTIpO2I9YiY4MzgwNjA5fGQ7Xy5IaChhLGIpO3JldHVybiBhfTsKXy5aaD1mdW5jdGlvbihhKXt2YXIgYj1hLkgsYz1iW18uSF18MDtyZXR1cm4gXy5LaChhLGMpP18udmkoYSxiLGMpP18udWkoYSxiLCEwKTpuZXcgYS5jb25zdHJ1Y3RvcihfLnRpKGIsYywhMSkpOmF9O18udmk9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBjJjI/ITA6YyYzMiYmIShjJjQwOTYpPyhfLkhoKGIsY3wyKSxhLmc9Xy5KaCwhMCk6ITF9O18uZGk9ZnVuY3Rpb24oYSl7cmV0dXJuIGF9O3ZoPS9eXHMqKD8hamF2YXNjcmlwdDopKD86W1x3Ky4tXSs6fFteOi8/I10qKD86Wy8/I118JCkpL2k7Xy53aT1vaCgpO18ueGk9Xy4kYSgpfHxfLnYoImlQb2QiKTtfLnlpPV8udigiaVBhZCIpO18uemk9Xy5yaCgpO18uQWk9cGgoKTtfLkJpPV8ucWgoKSYmIV8uYWIoKTt2YXIgRGk7Xy5DaT0hXy5GYyYmdHlwZW9mIGJ0b2E9PT0iZnVuY3Rpb24iO0RpPXR5cGVvZiBzdHJ1Y3R1cmVkQ2xvbmUhPSJ1bmRlZmluZWQiO3ZhciB6aD12b2lkIDA7dmFyIEVpLGJpLHBpLFNoO18uRGg9dHlwZW9mIFN5bWJvbD09PSJmdW5jdGlvbiImJnR5cGVvZiBTeW1ib2woKT09PSJzeW1ib2wiO0VpPV8uQ2goImphcyIsdm9pZCAwLCEwKTtfLlVoPV8uQ2godm9pZCAwLCIwZGkiKTtfLmVpPV8uQ2godm9pZCAwLFN5bWJvbCgpKTtfLkZpPV8uQ2godm9pZCAwLCIwdWIiKTtiaT1fLkNoKHZvaWQgMCwiMHVicyIpO3BpPV8uQ2godm9pZCAwLCIwYWN0ayIpO1NoPV8uQ2goIm1fbSIsIkZvIiwhMCk7Xy5HaT1fLkNoKCk7dmFyIEZoLEVoLElpO0ZoPXtyazp7dmFsdWU6MCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsZW51bWVyYWJsZTohMX19O0VoPU9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzO18uSD1fLkRoP0VpOiJyayI7SWk9W107Xy5IaChJaSw3KTtfLkhpPU9iamVjdC5mcmVlemUoSWkpO3ZhciBUaCxKaTtUaD17fTtfLkpoPXt9O0ppPWZ1bmN0aW9uKGEsYixjKXt0aGlzLmc9YTt0aGlzLmg9Yjt0aGlzLmo9Y307SmkucHJvdG90eXBlLm5leHQ9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmcubmV4dCgpO2EuZG9uZXx8KGEudmFsdWU9dGhpcy5oLmNhbGwodGhpcy5qLGEudmFsdWUpKTtyZXR1cm4gYX07SmkucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307Xy5LaT1PYmplY3QuZnJlZXplKHt9KTtfLkxpPU9iamVjdC5mcmVlemUoe30pO3ZhciBOaD1MaChmdW5jdGlvbihhKXtyZXR1cm4gdHlwZW9mIGE9PT0ibnVtYmVyIn0pLE1oPUxoKGZ1bmN0aW9uKGEpe3JldHVybiB0eXBlb2YgYT09PSJzdHJpbmcifSksUGg9TGgoZnVuY3Rpb24oYSl7cmV0dXJuIHR5cGVvZiBhPT09ImJvb2xlYW4ifSk7dmFyIE9oPXR5cGVvZiBfLnUuQmlnSW50PT09ImZ1bmN0aW9uIiYmdHlwZW9mIF8udS5CaWdJbnQoMCk9PT0iYmlnaW50Ijt2YXIgT2ksTWksUGksTmk7Xy5qaT1MaChmdW5jdGlvbihhKXtyZXR1cm4gT2g/YT49TWkmJmE8PU5pOmFbMF09PT0iLSI/UmgoYSxPaSk6UmgoYSxQaSl9KTtPaT1OdW1iZXIuTUlOX1NBRkVfSU5URUdFUi50b1N0cmluZygpO01pPU9oP0JpZ0ludChOdW1iZXIuTUlOX1NBRkVfSU5URUdFUik6dm9pZCAwO1BpPU51bWJlci5NQVhfU0FGRV9JTlRFR0VSLnRvU3RyaW5nKCk7Tmk9T2g/QmlnSW50KE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKTp2b2lkIDA7Xy5RaT10eXBlb2YgQmlnSW50PT09ImZ1bmN0aW9uIj9CaWdJbnQuYXNJbnROOnZvaWQgMDtfLlJpPU51bWJlci5pc1NhZmVJbnRlZ2VyO18uU2k9TnVtYmVyLmlzRmluaXRlO18uVGk9TWF0aC50cnVuYzt2YXIgVWk9ZnVuY3Rpb24oKXt0cnl7dmFyIGE9ZnVuY3Rpb24oKXtyZXR1cm4oMCxfLkRiKShNYXAsW10sdGhpcy5jb25zdHJ1Y3Rvcil9O18ueShhLE1hcCk7Xy5EYyhuZXcgYSk7cmV0dXJuITF9Y2F0Y2goYil7cmV0dXJuITB9fSgpLFZpPWZ1bmN0aW9uKCl7dGhpcy5nPW5ldyBNYXB9O18ubD1WaS5wcm90b3R5cGU7Xy5sLmdldD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5nLmdldChhKX07Xy5sLnNldD1mdW5jdGlvbihhLGIpe3RoaXMuZy5zZXQoYSxiKTt0aGlzLnNpemU9dGhpcy5nLnNpemU7cmV0dXJuIHRoaXN9O18ubC5kZWxldGU9ZnVuY3Rpb24oYSl7YT10aGlzLmcuZGVsZXRlKGEpO3RoaXMuc2l6ZT10aGlzLmcuc2l6ZTtyZXR1cm4gYX07Xy5sLmNsZWFyPWZ1bmN0aW9uKCl7dGhpcy5nLmNsZWFyKCk7dGhpcy5zaXplPXRoaXMuZy5zaXplfTtfLmwuaGFzPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmcuaGFzKGEpfTtfLmwuZW50cmllcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmcuZW50cmllcygpfTsKXy5sLmtleXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nLmtleXMoKX07Xy5sLnZhbHVlcz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmcudmFsdWVzKCl9O18ubC5mb3JFYWNoPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuZy5mb3JFYWNoKGEsYil9O1ZpLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZW50cmllcygpfTtfLm5pPWZ1bmN0aW9uKCl7aWYoVWkpcmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZihWaS5wcm90b3R5cGUsTWFwLnByb3RvdHlwZSksT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoVmkucHJvdG90eXBlLHtzaXplOnt2YWx1ZTowLGNvbmZpZ3VyYWJsZTohMCxlbnVtZXJhYmxlOiEwLHdyaXRhYmxlOiEwfX0pLFZpO3ZhciBhPWZ1bmN0aW9uKCl7cmV0dXJuKDAsXy5EYikoTWFwLFtdLHRoaXMuY29uc3RydWN0b3IpfTtfLnkoYSxNYXApO3JldHVybiBhfSgpOwpfLm1pPWZ1bmN0aW9uKGEsYixjLGQpe2M9Yz09PXZvaWQgMD9ZaDpjO2Q9ZD09PXZvaWQgMD9ZaDpkO3ZhciBlPV8ubmkuY2FsbCh0aGlzKXx8dGhpcztlLnVjPWFbXy5IXXwwO2UubGM9YjtlLmtlPWM7ZS5taT1lLmxjPyRoOmQ7Zm9yKHZhciBmPTA7ZjxhLmxlbmd0aDtmKyspe3ZhciBnPWFbZl0saD1jKGdbMF0sITEsITApLGs9Z1sxXTtiP2s9PT12b2lkIDAmJihrPW51bGwpOms9ZChnWzFdLCExLCEwLHZvaWQgMCx2b2lkIDAsZS51Yyk7Xy5uaS5wcm90b3R5cGUuc2V0LmNhbGwoZSxoLGspfXJldHVybiBlfTtfLnkoXy5taSxfLm5pKTt2YXIgV2k9ZnVuY3Rpb24oYSl7aWYoYS51YyYyKXRocm93IEVycm9yKCJmYSIpO307Xy5sPV8ubWkucHJvdG90eXBlO18ubC5jbGVhcj1mdW5jdGlvbigpe1dpKHRoaXMpO18ubmkucHJvdG90eXBlLmNsZWFyLmNhbGwodGhpcyl9OwpfLmwuZGVsZXRlPWZ1bmN0aW9uKGEpe1dpKHRoaXMpO3JldHVybiBfLm5pLnByb3RvdHlwZS5kZWxldGUuY2FsbCh0aGlzLHRoaXMua2UoYSwhMCwhMSkpfTtfLmwuZW50cmllcz1mdW5jdGlvbigpe2lmKHRoaXMubGMpe3ZhciBhPV8ubmkucHJvdG90eXBlLmtleXMuY2FsbCh0aGlzKTthPW5ldyBKaShhLGFpLHRoaXMpfWVsc2UgYT1fLm5pLnByb3RvdHlwZS5lbnRyaWVzLmNhbGwodGhpcyk7cmV0dXJuIGF9O18ubC52YWx1ZXM9ZnVuY3Rpb24oKXtpZih0aGlzLmxjKXt2YXIgYT1fLm5pLnByb3RvdHlwZS5rZXlzLmNhbGwodGhpcyk7YT1uZXcgSmkoYSxfLm1pLnByb3RvdHlwZS5nZXQsdGhpcyl9ZWxzZSBhPV8ubmkucHJvdG90eXBlLnZhbHVlcy5jYWxsKHRoaXMpO3JldHVybiBhfTsKXy5sLmZvckVhY2g9ZnVuY3Rpb24oYSxiKXt0aGlzLmxjP18ubmkucHJvdG90eXBlLmZvckVhY2guY2FsbCh0aGlzLGZ1bmN0aW9uKGMsZCxlKXthLmNhbGwoYixlLmdldChkKSxkLGUpfSk6Xy5uaS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKHRoaXMsYSxiKX07Xy5sLnNldD1mdW5jdGlvbihhLGIpe1dpKHRoaXMpO2E9dGhpcy5rZShhLCEwLCExKTtyZXR1cm4gYT09bnVsbD90aGlzOmI9PW51bGw/KF8ubmkucHJvdG90eXBlLmRlbGV0ZS5jYWxsKHRoaXMsYSksdGhpcyk6Xy5uaS5wcm90b3R5cGUuc2V0LmNhbGwodGhpcyxhLHRoaXMubWkoYiwhMCwhMCx0aGlzLmxjLCExLHRoaXMudWMpKX07Xy5sLmhhcz1mdW5jdGlvbihhKXtyZXR1cm4gXy5uaS5wcm90b3R5cGUuaGFzLmNhbGwodGhpcyx0aGlzLmtlKGEsITEsITEpKX07Cl8ubC5nZXQ9ZnVuY3Rpb24oYSl7YT10aGlzLmtlKGEsITEsITEpO3ZhciBiPV8ubmkucHJvdG90eXBlLmdldC5jYWxsKHRoaXMsYSk7aWYoYiE9PXZvaWQgMCl7dmFyIGM9dGhpcy5sYztyZXR1cm4gYz8oYz10aGlzLm1pKGIsITEsITAsYyx0aGlzLnRuLHRoaXMudWMpLGMhPT1iJiZfLm5pLnByb3RvdHlwZS5zZXQuY2FsbCh0aGlzLGEsYyksYyk6Yn19O18ubWkucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbnRyaWVzKCl9O18ubWkucHJvdG90eXBlLnRvSlNPTj12b2lkIDA7dmFyIGZpO18uWGk9RGk/c3RydWN0dXJlZENsb25lOmZ1bmN0aW9uKGEpe3JldHVybiBnaShhLDAsaGkpfTtfLllpPV8uUWgoMCk7Xy5KPWZ1bmN0aW9uKGEsYixjKXt0aGlzLkg9Xy5JKGEsYixjKX07Xy5KLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm4gXy5raSh0aGlzKX07Xy5KLnByb3RvdHlwZVtTaF09VGg7Xy5KLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLkgudG9TdHJpbmcoKX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBzaix0aix4aixBaix5aix6aixCaixDajtfLlppPWZ1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsfHx0eXBlb2YgYT09PSJzdHJpbmciP2E6dm9pZCAwfTtfLiRpPWZ1bmN0aW9uKGEpe18uR2goYSwzMik7cmV0dXJuIGF9O18uYWo9ZnVuY3Rpb24oYSl7cmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGEpfTtfLmJqPWZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBhIT09ImJvb2xlYW4iKXRocm93IEVycm9yKCJlYWAiK18uVmIoYSkrImAiK2EpO3JldHVybiBhfTtfLmNqPWZ1bmN0aW9uKGEpe2lmKGEuZyE9PV8uSmgpcmV0dXJuITE7dmFyIGI9YS5IO2I9Xy50aShiLGJbXy5IXXwwKTtfLkdoKGIsMjA0OCk7YS5IPWI7YS5nPXZvaWQgMDthLmg9dm9pZCAwO3JldHVybiEwfTtfLmRqPWZ1bmN0aW9uKGEpe2lmKCFfLmNqKGEpJiZfLktoKGEsYS5IW18uSF18MCkpdGhyb3cgRXJyb3IoKTt9OwpfLmVqPWZ1bmN0aW9uKGEsYil7Yj09PXZvaWQgMCYmKGI9YVtfLkhdfDApO2ImMzImJiEoYiY0MDk2KSYmXy5IaChhLGJ8NDA5Nil9O18uZmo9ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj1jKyhlPzA6LTEpLGc9YS5sZW5ndGgtMTtpZihnPj0xKyhlPzA6LTEpJiZmPj1nKXt2YXIgaD1hW2ddO2lmKGghPW51bGwmJnR5cGVvZiBoPT09Im9iamVjdCImJmguY29uc3RydWN0b3I9PT1PYmplY3QpcmV0dXJuIGhbY109ZCxifWlmKGY8PWcpcmV0dXJuIGFbZl09ZCxiO2lmKGQhPT12b2lkIDApe3ZhciBrO2c9KChrPWIpIT1udWxsP2s6Yj1hW18uSF18MCk+PjEzJjEwMjN8fDUzNjg3MDkxMjtjPj1nP2QhPW51bGwmJihmPXt9LGFbZysoZT8wOi0xKV09KGZbY109ZCxmKSk6YVtmXT1kfXJldHVybiBifTtfLmhqPWZ1bmN0aW9uKGEsYil7YT1fLmdqKGEsYix2b2lkIDApO3JldHVybiBBcnJheS5pc0FycmF5KGEpP2E6Xy5IaX07Cl8uaWo9ZnVuY3Rpb24oYSxiKXsyJmImJihhfD0yKTtyZXR1cm4gYXwxfTtfLmpqPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9KDImYj9hfDI6YSYtMykmLTI3M307Xy5raj1mdW5jdGlvbihhKXtyZXR1cm4hISgyJmEpJiYhISg0JmEpfHwhISgyNTYmYSl9O18ubGo9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoKXt2YXIgaz1iO2Y9PT0xfHwoZiE9PTQ/MDoyJmJ8fCEoMTYmYikmJjMyJmQpP18ua2ooYil8fChifD0hYS5sZW5ndGh8fGcmJiEoNDA5NiZiKXx8MzImZCYmISg0MDk2JmJ8fDE2JmIpPzI6MjU2LGIhPT1rJiZfLkhoKGEsYiksT2JqZWN0LmZyZWV6ZShhKSk6KGY9PT0yJiZfLmtqKGIpJiYoYT1fLmFqKGEpLGs9MCxiPV8uamooYixkKSxkPV8uZmooYyxkLGUsYSkpLF8ua2ooYil8fChofHwoYnw9MTYpLGIhPT1rJiZfLkhoKGEsYikpKTsyJmJ8fCEoNDA5NiZifHwxNiZiKXx8Xy5laihjLGQpO3JldHVybiBhfTsKXy5taj1mdW5jdGlvbihhLGIsYyxkKXtfLmRqKGEpO3ZhciBlPWEuSDtfLmZqKGUsZVtfLkhdfDAsYiwoZD09PSIwIj9OdW1iZXIoYyk9PT0wOmM9PT1kKT92b2lkIDA6Yyk7cmV0dXJuIGF9O18ubmo9ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj0hMTtkPV8uZ2ooYSxkLGUsZnVuY3Rpb24oZyl7dmFyIGg9Xy5XaChnLGMsITEsYik7Zj1oIT09ZyYmaCE9bnVsbDtyZXR1cm4gaH0pO2lmKGQhPW51bGwpcmV0dXJuIGYmJiFfLktoKGQpJiZfLmVqKGEsYiksZH07Cl8ub2o9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoKXt2YXIgaz1fLktoKGEsYyk7Zj1rPzE6ZjtnPSEhZ3x8Zj09PTM7az1oJiYhazsoZj09PTJ8fGspJiZfLmNqKGEpJiYoYj1hLkgsYz1iW18uSF18MCk7YT1fLmhqKGIsZSk7dmFyIG09YT09PV8uSGk/NzphW18uSF18MCxuPV8uaWoobSxjKTtpZihoPSEoNCZuKSl7dmFyIHA9YSxxPWMscj0hISgyJm4pO3ImJihxfD0yKTtmb3IodmFyIHQ9IXIsQT0hMCxEPTAsTD0wO0Q8cC5sZW5ndGg7RCsrKXt2YXIgVj1fLldoKHBbRF0sZCwhMSxxKTtpZihWIGluc3RhbmNlb2YgZCl7aWYoIXIpe3ZhciBmYT1fLktoKFYpO3QmJih0PSFmYSk7QSYmKEE9ZmEpfXBbTCsrXT1WfX1MPEQmJihwLmxlbmd0aD1MKTtufD00O249QT9uJi00MDk3Om58NDA5NjtuPXQ/bnw4Om4mLTl9biE9PW0mJihfLkhoKGEsbiksMiZuJiZPYmplY3QuZnJlZXplKGEpKTtpZihrJiYhKDgmbnx8IWEubGVuZ3RoJiYoZj09PTF8fChmIT09ND8wOjImbnx8ISgxNiZuKSYmMzImCmMpKSkpe18ua2oobikmJihhPV8uYWooYSksbj1fLmpqKG4sYyksYz1fLmZqKGIsYyxlLGEpKTtkPWE7az1uO2ZvcihtPTA7bTxkLmxlbmd0aDttKyspcD1kW21dLG49Xy5aaChwKSxwIT09biYmKGRbbV09bik7a3w9ODtuPWs9ZC5sZW5ndGg/a3w0MDk2OmsmLTQwOTc7Xy5IaChhLG4pfXJldHVybiBhPV8ubGooYSxuLGIsYyxlLGYsaCxnKX07Xy5waj1mdW5jdGlvbihhKXthPT1udWxsJiYoYT12b2lkIDApO3JldHVybiBhfTtfLnFqPWZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihiKXtiPUpTT04ucGFyc2UoYik7aWYoIUFycmF5LmlzQXJyYXkoYikpdGhyb3cgRXJyb3IoIm5hYCIrXy5WYihiKSsiYCIrYik7Xy5JaChiKTtyZXR1cm4gbmV3IGEoYil9fTsKXy5naj1mdW5jdGlvbihhLGIsYyxkKXtpZihiPT09LTEpcmV0dXJuIG51bGw7dmFyIGU9YisoYz8wOi0xKSxmPWEubGVuZ3RoLTE7aWYoIShmPDErKGM/MDotMSkpKXtpZihlPj1mKXt2YXIgZz1hW2ZdO2lmKGchPW51bGwmJnR5cGVvZiBnPT09Im9iamVjdCImJmcuY29uc3RydWN0b3I9PT1PYmplY3Qpe2M9Z1tiXTt2YXIgaD0hMH1lbHNlIGlmKGU9PT1mKWM9ZztlbHNlIHJldHVybn1lbHNlIGM9YVtlXTtpZihkJiZjIT1udWxsKXtkPWQoYyk7aWYoZD09bnVsbClyZXR1cm4gZDtpZighT2JqZWN0LmlzKGQsYykpcmV0dXJuIGg/Z1tiXT1kOmFbZV09ZCxkfXJldHVybiBjfX07Xy5yaj1mdW5jdGlvbihhLGIsYyxkKXtiPV8uZ2ooYS5ILGIsYyk7aWYoYiE9PW51bGx8fGQmJmEuaCE9PV8uSmgpcmV0dXJuIGJ9O3NqPWZ1bmN0aW9uKCl7dGhpcy5CPSExO3RoaXMubz1udWxsO3RoaXMuaD12b2lkIDA7dGhpcy5nPTE7dGhpcy5BPXRoaXMubD0wO3RoaXMuRj10aGlzLmo9bnVsbH07CnRqPWZ1bmN0aW9uKGEpe2lmKGEuQil0aHJvdyBuZXcgVHlwZUVycm9yKCJnIik7YS5CPSEwfTtzai5wcm90b3R5cGUuQz1mdW5jdGlvbihhKXt0aGlzLmg9YX07dmFyIHVqPWZ1bmN0aW9uKGEsYil7YS5qPXtPZzpiLHNoOiEwfTthLmc9YS5sfHxhLkF9O3NqLnByb3RvdHlwZS5yZXR1cm49ZnVuY3Rpb24oYSl7dGhpcy5qPXtyZXR1cm46YX07dGhpcy5nPXRoaXMuQX07Xy5LPWZ1bmN0aW9uKGEsYixjKXthLmc9YztyZXR1cm57dmFsdWU6Yn19O3NqLnByb3RvdHlwZS5NYT1mdW5jdGlvbihhKXt0aGlzLmc9YX07Xy52aj1mdW5jdGlvbihhLGIsYyl7YS5sPWI7YyE9dm9pZCAwJiYoYS5BPWMpfTtfLndqPWZ1bmN0aW9uKGEpe2EubD0wO3ZhciBiPWEuai5PZzthLmo9bnVsbDtyZXR1cm4gYn07eGo9ZnVuY3Rpb24oYSl7dGhpcy5nPW5ldyBzajt0aGlzLmg9YX07CkFqPWZ1bmN0aW9uKGEsYil7dGooYS5nKTt2YXIgYz1hLmcubztpZihjKXJldHVybiB5aihhLCJyZXR1cm4iaW4gYz9jWyJyZXR1cm4iXTpmdW5jdGlvbihkKXtyZXR1cm57dmFsdWU6ZCxkb25lOiEwfX0sYixhLmcucmV0dXJuKTthLmcucmV0dXJuKGIpO3JldHVybiB6aihhKX07eWo9ZnVuY3Rpb24oYSxiLGMsZCl7dHJ5e3ZhciBlPWIuY2FsbChhLmcubyxjKTtpZighKGUgaW5zdGFuY2VvZiBPYmplY3QpKXRocm93IG5ldyBUeXBlRXJyb3IoImZgIitlKTtpZighZS5kb25lKXJldHVybiBhLmcuQj0hMSxlO3ZhciBmPWUudmFsdWV9Y2F0Y2goZyl7cmV0dXJuIGEuZy5vPW51bGwsdWooYS5nLGcpLHpqKGEpfWEuZy5vPW51bGw7ZC5jYWxsKGEuZyxmKTtyZXR1cm4gemooYSl9Owp6aj1mdW5jdGlvbihhKXtmb3IoO2EuZy5nOyl0cnl7dmFyIGI9YS5oKGEuZyk7aWYoYilyZXR1cm4gYS5nLkI9ITEse3ZhbHVlOmIudmFsdWUsZG9uZTohMX19Y2F0Y2goYyl7YS5nLmg9dm9pZCAwLHVqKGEuZyxjKX1hLmcuQj0hMTtpZihhLmcuail7Yj1hLmcuajthLmcuaj1udWxsO2lmKGIuc2gpdGhyb3cgYi5PZztyZXR1cm57dmFsdWU6Yi5yZXR1cm4sZG9uZTohMH19cmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX07CkJqPWZ1bmN0aW9uKGEpe3RoaXMubmV4dD1mdW5jdGlvbihiKXt0aihhLmcpO2EuZy5vP2I9eWooYSxhLmcuby5uZXh0LGIsYS5nLkMpOihhLmcuQyhiKSxiPXpqKGEpKTtyZXR1cm4gYn07dGhpcy50aHJvdz1mdW5jdGlvbihiKXt0aihhLmcpO2EuZy5vP2I9eWooYSxhLmcub1sidGhyb3ciXSxiLGEuZy5DKToodWooYS5nLGIpLGI9emooYSkpO3JldHVybiBifTt0aGlzLnJldHVybj1mdW5jdGlvbihiKXtyZXR1cm4gQWooYSxiKX07dGhpc1tTeW1ib2wuaXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9fTtDaj1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKGQpe3JldHVybiBhLm5leHQoZCl9ZnVuY3Rpb24gYyhkKXtyZXR1cm4gYS50aHJvdyhkKX1yZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24oZCxlKXtmdW5jdGlvbiBmKGcpe2cuZG9uZT9kKGcudmFsdWUpOlByb21pc2UucmVzb2x2ZShnLnZhbHVlKS50aGVuKGIsYykudGhlbihmLGUpfWYoYS5uZXh0KCkpfSl9O18uRGo9ZnVuY3Rpb24oYSl7cmV0dXJuIENqKG5ldyBCaihuZXcgeGooYSkpKX07Cl8uRWo9ZnVuY3Rpb24oYSxiLGMpe18uZGooYSk7dmFyIGQ9YS5IO18uZmooZCxkW18uSF18MCxiLGMpO3JldHVybiBhfTtfLkZqPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWEuSCxmPWVbXy5IXXwwO2I9Xy5uaihlLGYsYixjLGQpO2lmKGI9PW51bGwpcmV0dXJuIGI7Zj1lW18uSF18MDtpZighXy5LaChhLGYpKXt2YXIgZz1fLlpoKGIpO2chPT1iJiYoXy5jaihhKSYmKGU9YS5ILGY9ZVtfLkhdfDApLGI9ZyxmPV8uZmooZSxmLGMsYixkKSxfLmVqKGUsZikpfXJldHVybiBifTtfLkdqPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLkg7cmV0dXJuIF8ub2ooYSxkLGRbXy5IXXwwLGIsYyx2b2lkIDA9PT1fLktpPzI6NCwhMSwhMCl9O18uTT1mdW5jdGlvbihhLGIsYyl7Yz1fLnBqKGMpO18uRWooYSxiLGMpO2MmJiFfLktoKGMpJiZfLmVqKGEuSCk7cmV0dXJuIGF9OwpfLkhqPWZ1bmN0aW9uKGEsYil7YT1fLnJqKGEsYik7cmV0dXJuIGE9PW51bGx8fHR5cGVvZiBhPT09ImJvb2xlYW4iP2E6dHlwZW9mIGE9PT0ibnVtYmVyIj8hIWE6dm9pZCAwfTtfLklqPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yz09PXZvaWQgMD8hMTpjO3ZhciBkO3JldHVybihkPV8uSGooYSxiKSkhPW51bGw/ZDpjfTtfLkpqPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yz09PXZvaWQgMD8iIjpjO3ZhciBkO3JldHVybihkPV8uWmkoXy5yaihhLGIpKSkhPW51bGw/ZDpjfTtfLktqPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yz09PXZvaWQgMD8wOmM7YT1fLnJqKGEsYik7YT1hPT1udWxsP2E6KDAsXy5TaSkoYSk/YXwwOnZvaWQgMDtyZXR1cm4gYSE9bnVsbD9hOmN9O18uTGo9ZnVuY3Rpb24oYSxiKXtpZihiPT1udWxsfHxiPT0iIilyZXR1cm4gbmV3IGE7Yj1KU09OLnBhcnNlKGIpO2lmKCFBcnJheS5pc0FycmF5KGIpKXRocm93IEVycm9yKCJvYSIpO3JldHVybiBuZXcgYShfLiRpKGIpKX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7CnZhciBNaixQaixRaixSaixTaixUaixVaixjayxOaixPaixWajtNaj1mdW5jdGlvbigpe3JldHVybiB0eXBlb2YgQmlnSW50PT09ImZ1bmN0aW9uIn07UGo9ZnVuY3Rpb24oYSl7dmFyIGI9YT4+PjA7Tmo9YjtPaj0oYS1iKS80Mjk0OTY3Mjk2Pj4+MH07UWo9ZnVuY3Rpb24oYSxiKXtiPX5iO2E/YT1+YSsxOmIrPTE7cmV0dXJuW2EsYl19O1JqPWZ1bmN0aW9uKGEpe2lmKGE8MCl7UGooLWEpO3ZhciBiPV8ueihRaihOaixPaikpO2E9Yi5uZXh0KCkudmFsdWU7Yj1iLm5leHQoKS52YWx1ZTtOaj1hPj4+MDtPaj1iPj4+MH1lbHNlIFBqKGEpfTtTaj1mdW5jdGlvbihhKXthPVN0cmluZyhhKTtyZXR1cm4iMDAwMDAwMCIuc2xpY2UoYS5sZW5ndGgpK2F9OwpUaj1mdW5jdGlvbihhLGIpe2I+Pj49MDthPj4+PTA7aWYoYjw9MjA5NzE1MSl2YXIgYz0iIisoNDI5NDk2NzI5NipiK2EpO2Vsc2UgTWooKT9jPSIiKyhCaWdJbnQoYik8PEJpZ0ludCgzMil8QmlnSW50KGEpKTooYz0oYT4+PjI0fGI8PDgpJjE2Nzc3MjE1LGI9Yj4+MTYmNjU1MzUsYT0oYSYxNjc3NzIxNSkrYyo2Nzc3MjE2K2IqNjcxMDY1NixjKz1iKjgxNDc0OTcsYio9MixhPj0xRTcmJihjKz1hLzFFNz4+PjAsYSU9MUU3KSxjPj0xRTcmJihiKz1jLzFFNz4+PjAsYyU9MUU3KSxjPWIrU2ooYykrU2ooYSkpO3JldHVybiBjfTtVaj1mdW5jdGlvbigpe3ZhciBhPU5qLGI9T2o7YiYyMTQ3NDgzNjQ4P01qKCk/YT0iIisoQmlnSW50KGJ8MCk8PEJpZ0ludCgzMil8QmlnSW50KGE+Pj4wKSk6KGI9Xy56KFFqKGEsYikpLGE9Yi5uZXh0KCkudmFsdWUsYj1iLm5leHQoKS52YWx1ZSxhPSItIitUaihhLGIpKTphPVRqKGEsYik7cmV0dXJuIGF9OwpfLldqPWZ1bmN0aW9uKGEpe3N3aXRjaCh0eXBlb2YgYSl7Y2FzZSAiYmlnaW50IjpyZXR1cm4hMDtjYXNlICJudW1iZXIiOnJldHVybigwLF8uU2kpKGEpO2Nhc2UgInN0cmluZyI6cmV0dXJuIFZqLnRlc3QoYSk7ZGVmYXVsdDpyZXR1cm4hMX19O18uWGo9ZnVuY3Rpb24oYSl7aWYoYT09bnVsbClyZXR1cm4gYTtpZih0eXBlb2YgYT09PSJzdHJpbmciJiZhKWE9K2E7ZWxzZSBpZih0eXBlb2YgYSE9PSJudW1iZXIiKXJldHVybjtyZXR1cm4oMCxfLlNpKShhKT9hfDA6dm9pZCAwfTtjaz1mdW5jdGlvbihhKXt2YXIgYj1hLmxlbmd0aDtyZXR1cm4gYVswXT09PSItIj9iPDIwPyEwOmI9PT0yMCYmTnVtYmVyKGEuc3Vic3RyaW5nKDAsNykpPi05MjIzMzc6YjwxOT8hMDpiPT09MTkmJk51bWJlcihhLnN1YnN0cmluZygwLDYpKTw5MjIzMzd9OwpfLmRrPWZ1bmN0aW9uKGEpe2lmKGNrKGEpKXJldHVybiBhO2lmKGEubGVuZ3RoPDE2KVJqKE51bWJlcihhKSk7ZWxzZSBpZihNaigpKWE9QmlnSW50KGEpLE5qPU51bWJlcihhJkJpZ0ludCg0Mjk0OTY3Mjk1KSk+Pj4wLE9qPU51bWJlcihhPj5CaWdJbnQoMzIpJkJpZ0ludCg0Mjk0OTY3Mjk1KSk7ZWxzZXt2YXIgYj0rKGFbMF09PT0iLSIpO09qPU5qPTA7Zm9yKHZhciBjPWEubGVuZ3RoLGQ9YixlPShjLWIpJTYrYjtlPD1jO2Q9ZSxlKz02KWQ9TnVtYmVyKGEuc2xpY2UoZCxlKSksT2oqPTFFNixOaj1OaioxRTYrZCxOaj49NDI5NDk2NzI5NiYmKE9qKz1NYXRoLnRydW5jKE5qLzQyOTQ5NjcyOTYpLE9qPj4+PTAsTmo+Pj49MCk7YiYmKGI9Xy56KFFqKE5qLE9qKSksYT1iLm5leHQoKS52YWx1ZSxiPWIubmV4dCgpLnZhbHVlLE5qPWEsT2o9Yil9cmV0dXJuIFVqKCl9OwpfLmVrPWZ1bmN0aW9uKGEpe3ZhciBiPSgwLF8uVGkpKE51bWJlcihhKSk7aWYoKDAsXy5SaSkoYikpcmV0dXJuIF8uUWgoYik7Yj1hLmluZGV4T2YoIi4iKTtiIT09LTEmJihhPWEuc3Vic3RyaW5nKDAsYikpO3JldHVybiBNaigpP18uUWgoKDAsXy5RaSkoNjQsQmlnSW50KGEpKSk6Xy5RaChfLmRrKGEpKX07Xy5maz1mdW5jdGlvbihhKXthPSgwLF8uVGkpKGEpO2lmKCEoMCxfLlJpKShhKSl7UmooYSk7dmFyIGI9TmosYz1PajtpZihhPWMmMjE0NzQ4MzY0OCliPX5iKzE+Pj4wLGM9fmM+Pj4wLGI9PTAmJihjPWMrMT4+PjApO3ZhciBkPWMqNDI5NDk2NzI5NisoYj4+PjApO2I9TnVtYmVyLmlzU2FmZUludGVnZXIoZCk/ZDpUaihiLGMpO2E9dHlwZW9mIGI9PT0ibnVtYmVyIj9hPy1iOmI6YT8iLSIrYjpifXJldHVybiBhfTsKXy5naz1mdW5jdGlvbihhKXthPSgwLF8uVGkpKGEpO2lmKCgwLF8uUmkpKGEpKWE9U3RyaW5nKGEpO2Vsc2V7dmFyIGI9U3RyaW5nKGEpO2NrKGIpP2E9YjooUmooYSksYT1VaigpKX1yZXR1cm4gYX07Xy5oaz1mdW5jdGlvbihhKXtyZXR1cm4oMCxfLlJpKShhKT9fLlFoKF8uZmsoYSkpOl8uUWgoXy5nayhhKSl9O18uaWs9ZnVuY3Rpb24oYSl7dmFyIGI9dHlwZW9mIGE7aWYoYT09bnVsbClyZXR1cm4gYTtpZihiPT09ImJpZ2ludCIpcmV0dXJuIF8uUWgoKDAsXy5RaSkoNjQsYSkpO2lmKF8uV2ooYSkpcmV0dXJuIGI9PT0ic3RyaW5nIj9fLmVrKGEpOl8uaGsoYSl9O18uams9ZnVuY3Rpb24oYSxiKXthLkRhP2IoKTooYS5wYXx8KGEucGE9W10pLGEucGEucHVzaChiKSl9O18ua2s9e307Tmo9MDtPaj0wO1ZqPS9eLT8oWzEtOV1bMC05XSp8MCkoXC5bMC05XSspPyQvOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLm1rPXt9Owp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewp2YXIgSGwsSWwsS2wsTGwsUGwsWWwsWmwsJGwsYW0sZG0sZW0sZm0sZ20saG0sbm07Xy5HbD1mdW5jdGlvbihhKXtpZihhIGluc3RhbmNlb2YgXy5yYylyZXR1cm4gYS5nO3Rocm93IEVycm9yKCJ1Iik7fTtIbD1mdW5jdGlvbihhKXt2YXIgYj1hLkgsYz1iW18uSF18MDtyZXR1cm4gXy52aShhLGIsYyk/Xy51aShhLGIsITApOm5ldyBhLmNvbnN0cnVjdG9yKF8udGkoYixjLCExKSl9O0lsPWZ1bmN0aW9uKGEpe2E9RXJyb3IoYSk7Xy55aChhLCJ3YXJuaW5nIik7cmV0dXJuIGF9O18uSmw9ZnVuY3Rpb24oYSl7aWYodHlwZW9mIGEhPT0ibnVtYmVyIil0aHJvdyBJbCgiaW50MzIiKTtpZighKDAsXy5TaSkoYSkpdGhyb3cgSWwoImludDMyIik7cmV0dXJuIGF8MH07S2w9ZnVuY3Rpb24oYSl7dmFyIGI9KDAsXy5UaSkoTnVtYmVyKGEpKTtpZigoMCxfLlJpKShiKSlyZXR1cm4gU3RyaW5nKGIpO2I9YS5pbmRleE9mKCIuIik7YiE9PS0xJiYoYT1hLnN1YnN0cmluZygwLGIpKTtyZXR1cm4gXy5kayhhKX07CkxsPWZ1bmN0aW9uKGEpe3ZhciBiPTA7Yj1iPT09dm9pZCAwPzA6YjtpZighXy5XaihhKSl0aHJvdyBJbCgiaW50NjQiKTt2YXIgYz10eXBlb2YgYTtzd2l0Y2goYil7Y2FzZSA1MTI6c3dpdGNoKGMpe2Nhc2UgInN0cmluZyI6cmV0dXJuIEtsKGEpO2Nhc2UgImJpZ2ludCI6cmV0dXJuIFN0cmluZygoMCxfLlFpKSg2NCxhKSk7ZGVmYXVsdDpyZXR1cm4gXy5nayhhKX1jYXNlIDEwMjQ6c3dpdGNoKGMpe2Nhc2UgInN0cmluZyI6cmV0dXJuIF8uZWsoYSk7Y2FzZSAiYmlnaW50IjpyZXR1cm4gXy5RaCgoMCxfLlFpKSg2NCxhKSk7ZGVmYXVsdDpyZXR1cm4gXy5oayhhKX1jYXNlIDA6c3dpdGNoKGMpe2Nhc2UgInN0cmluZyI6cmV0dXJuIEtsKGEpO2Nhc2UgImJpZ2ludCI6cmV0dXJuIF8uUWgoKDAsXy5RaSkoNjQsYSkpO2RlZmF1bHQ6cmV0dXJuIF8uZmsoYSl9ZGVmYXVsdDp0aHJvdyBFcnJvcigiVW5rbm93biBmb3JtYXQgcmVxdWVzdGVkIHR5cGUgZm9yIGludDY0Iik7fX07Cl8uTWw9ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PW51bGw/YTpMbChhKX07Xy5ObD1mdW5jdGlvbihhKXtpZihhIT1udWxsJiZ0eXBlb2YgYSE9PSJzdHJpbmciKXRocm93IEVycm9yKCk7cmV0dXJuIGF9O18uT2w9ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3JldHVybiBfLkxqKGEsYil9fTsKUGw9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKCl7ZVswXT0xNzMyNTg0MTkzO2VbMV09NDAyMzIzMzQxNztlWzJdPTI1NjIzODMxMDI7ZVszXT0yNzE3MzM4Nzg7ZVs0XT0zMjg1Mzc3NTIwO249bT0wfWZ1bmN0aW9uIGIocCl7Zm9yKHZhciBxPWcscj0wO3I8NjQ7cis9NClxW3IvNF09cFtyXTw8MjR8cFtyKzFdPDwxNnxwW3IrMl08PDh8cFtyKzNdO2ZvcihyPTE2O3I8ODA7cisrKXA9cVtyLTNdXnFbci04XV5xW3ItMTRdXnFbci0xNl0scVtyXT0ocDw8MXxwPj4+MzEpJjQyOTQ5NjcyOTU7cD1lWzBdO3ZhciB0PWVbMV0sQT1lWzJdLEQ9ZVszXSxMPWVbNF07Zm9yKHI9MDtyPDgwO3IrKyl7aWYocjw0MClpZihyPDIwKXt2YXIgVj1EXnQmKEFeRCk7dmFyIGZhPTE1MTg1MDAyNDl9ZWxzZSBWPXReQV5ELGZhPTE4NTk3NzUzOTM7ZWxzZSByPDYwPyhWPXQmQXxEJih0fEEpLGZhPTI0MDA5NTk3MDgpOihWPXReQV5ELGZhPTMzOTU0Njk3ODIpO1Y9KChwPDw1fHA+Pj4yNykmNDI5NDk2NzI5NSkrClYrTCtmYStxW3JdJjQyOTQ5NjcyOTU7TD1EO0Q9QTtBPSh0PDwzMHx0Pj4+MikmNDI5NDk2NzI5NTt0PXA7cD1WfWVbMF09ZVswXStwJjQyOTQ5NjcyOTU7ZVsxXT1lWzFdK3QmNDI5NDk2NzI5NTtlWzJdPWVbMl0rQSY0Mjk0OTY3Mjk1O2VbM109ZVszXStEJjQyOTQ5NjcyOTU7ZVs0XT1lWzRdK0wmNDI5NDk2NzI5NX1mdW5jdGlvbiBjKHAscSl7aWYodHlwZW9mIHA9PT0ic3RyaW5nIil7cD11bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQocCkpO2Zvcih2YXIgcj1bXSx0PTAsQT1wLmxlbmd0aDt0PEE7Kyt0KXIucHVzaChwLmNoYXJDb2RlQXQodCkpO3A9cn1xfHwocT1wLmxlbmd0aCk7cj0wO2lmKG09PTApZm9yKDtyKzY0PHE7KWIocC5zbGljZShyLHIrNjQpKSxyKz02NCxuKz02NDtmb3IoO3I8cTspaWYoZlttKytdPXBbcisrXSxuKyssbT09NjQpZm9yKG09MCxiKGYpO3IrNjQ8cTspYihwLnNsaWNlKHIscis2NCkpLHIrPTY0LG4rPTY0fWZ1bmN0aW9uIGQoKXt2YXIgcD1bXSwKcT1uKjg7bTw1Nj9jKGgsNTYtbSk6YyhoLDY0LShtLTU2KSk7Zm9yKHZhciByPTYzO3I+PTU2O3ItLSlmW3JdPXEmMjU1LHE+Pj49ODtiKGYpO2ZvcihyPXE9MDtyPDU7cisrKWZvcih2YXIgdD0yNDt0Pj0wO3QtPTgpcFtxKytdPWVbcl0+PnQmMjU1O3JldHVybiBwfWZvcih2YXIgZT1bXSxmPVtdLGc9W10saD1bMTI4XSxrPTE7azw2NDsrK2spaFtrXT0wO3ZhciBtLG47YSgpO3JldHVybntyZXNldDphLHVwZGF0ZTpjLGRpZ2VzdDpkLGxqOmZ1bmN0aW9uKCl7Zm9yKHZhciBwPWQoKSxxPSIiLHI9MDtyPHAubGVuZ3RoO3IrKylxKz0iMDEyMzQ1Njc4OUFCQ0RFRiIuY2hhckF0KE1hdGguZmxvb3IocFtyXS8xNikpKyIwMTIzNDU2Nzg5QUJDREVGIi5jaGFyQXQocFtyXSUxNik7cmV0dXJuIHF9fX07CllsPWZ1bmN0aW9uKGEsYil7Yj1iPT09dm9pZCAwP1FsOmI7aWYoIVJsKXt2YXIgYzthPShjPWEubmF2aWdhdG9yKT09bnVsbD92b2lkIDA6Yy51c2VyQWdlbnREYXRhO2lmKCFhfHx0eXBlb2YgYS5nZXRIaWdoRW50cm9weVZhbHVlcyE9PSJmdW5jdGlvbiJ8fGEuYnJhbmRzJiZ0eXBlb2YgYS5icmFuZHMubWFwIT09ImZ1bmN0aW9uIilyZXR1cm4gUHJvbWlzZS5yZWplY3QoRXJyb3IoIkNhIikpO1NsKChhLmJyYW5kc3x8W10pLm1hcChmdW5jdGlvbihlKXt2YXIgZj1uZXcgVGw7Zj1fLlVsKGYsMSxlLmJyYW5kKTtyZXR1cm4gXy5VbChmLDIsZS52ZXJzaW9uKX0pKTt0eXBlb2YgYS5tb2JpbGU9PT0iYm9vbGVhbiImJl8uVmwoV2wsMixhLm1vYmlsZSk7Umw9YS5nZXRIaWdoRW50cm9weVZhbHVlcyhiKX12YXIgZD1uZXcgU2V0KGIpO3JldHVybiBSbC50aGVuKGZ1bmN0aW9uKGUpe3ZhciBmPUhsKFdsKTtkLmhhcygicGxhdGZvcm0iKSYmXy5VbChmLDMsZS5wbGF0Zm9ybSk7ZC5oYXMoInBsYXRmb3JtVmVyc2lvbiIpJiYKXy5VbChmLDQsZS5wbGF0Zm9ybVZlcnNpb24pO2QuaGFzKCJhcmNoaXRlY3R1cmUiKSYmXy5VbChmLDUsZS5hcmNoaXRlY3R1cmUpO2QuaGFzKCJtb2RlbCIpJiZfLlVsKGYsNixlLm1vZGVsKTtkLmhhcygidWFGdWxsVmVyc2lvbiIpJiZfLlVsKGYsNyxlLnVhRnVsbFZlcnNpb24pO3JldHVybiBfLlhsKGYpfSkuY2F0Y2goZnVuY3Rpb24oKXtyZXR1cm4gXy5YbChXbCl9KX07Wmw9ZnVuY3Rpb24oYSl7dGhpcy5nPXRoaXMuaD10aGlzLmo9YX07JGw9e0pvOiEwfTtfLlhsPWZ1bmN0aW9uKGEpe3JldHVybiBKU09OLnN0cmluZ2lmeShfLmtpKGEpKX07YW09ZnVuY3Rpb24oYSl7dmFyIGI9YS5GLnNwbGljZSgwKVswXTsoYj1hLmo9YS5qfHxiKT9iLnNoP2EuZz1hLmx8fGEuQTpiLk1hIT12b2lkIDAmJmEuQTxiLk1hPyhhLmc9Yi5NYSxhLmo9bnVsbCk6YS5nPWEuQTphLmc9MH07CmRtPWZ1bmN0aW9uKCl7dmFyIGE9Ym0sYj1jbTt0aGlzLmc9MTc1MjM3Mzc1O3RoaXMudGI9Yjt0aGlzLmg9Xy5Gajt0aGlzLmRlZmF1bHRWYWx1ZT12b2lkIDA7dGhpcy5qPWEuQmEhPW51bGw/Xy5razp2b2lkIDB9O2RtLnByb3RvdHlwZS5yZWdpc3Rlcj1mdW5jdGlvbigpe18uRGModGhpcyl9O2VtPXt9O2ZtPW51bGw7CmdtPWZ1bmN0aW9uKGEsYil7Yj09PXZvaWQgMCYmKGI9MCk7aWYoIWZtKXtmbT17fTtmb3IodmFyIGM9IkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ii5zcGxpdCgiIiksZD1bIisvPSIsIisvIiwiLV89IiwiLV8uIiwiLV8iXSxlPTA7ZTw1O2UrKyl7dmFyIGY9Yy5jb25jYXQoZFtlXS5zcGxpdCgiIikpO2VtW2VdPWY7Zm9yKHZhciBnPTA7ZzxmLmxlbmd0aDtnKyspe3ZhciBoPWZbZ107Zm1baF09PT12b2lkIDAmJihmbVtoXT1nKX19fWI9ZW1bYl07Yz1BcnJheShNYXRoLmZsb29yKGEubGVuZ3RoLzMpKTtkPWJbNjRdfHwiIjtmb3IoZT1mPTA7ZjxhLmxlbmd0aC0yO2YrPTMpe3ZhciBrPWFbZl0sbT1hW2YrMV07aD1hW2YrMl07Zz1iW2s+PjJdO2s9YlsoayYzKTw8NHxtPj40XTttPWJbKG0mMTUpPDwyfGg+PjZdO2g9YltoJjYzXTtjW2UrK109ZytrK20raH1nPTA7aD1kO3N3aXRjaChhLmxlbmd0aC1mKXtjYXNlIDI6Zz0KYVtmKzFdLGg9YlsoZyYxNSk8PDJdfHxkO2Nhc2UgMTphPWFbZl0sY1tlXT1iW2E+PjJdK2JbKGEmMyk8PDR8Zz4+NF0raCtkfXJldHVybiBjLmpvaW4oIiIpfTtobT17fTtfLmxpPWZ1bmN0aW9uKGEsYil7aWYoYiE9PWhtKXRocm93IEVycm9yKCJkYSIpO3RoaXMubD1hO2lmKGEhPW51bGwmJmEubGVuZ3RoPT09MCl0aHJvdyBFcnJvcigiY2EiKTt9O18ubGkucHJvdG90eXBlLmc9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmw7aWYoYT09bnVsbClhPSIiO2Vsc2UgaWYodHlwZW9mIGEhPT0ic3RyaW5nIil7aWYoXy5DaSl7Zm9yKHZhciBiPSIiLGM9MCxkPWEubGVuZ3RoLTEwMjQwO2M8ZDspYis9U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLGEuc3ViYXJyYXkoYyxjKz0xMDI0MCkpO2IrPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxjP2Euc3ViYXJyYXkoYyk6YSk7YT1idG9hKGIpfWVsc2UgYT1nbShhKTthPXRoaXMubD1hfXJldHVybiBhfTsKXy5pbT1fLkNoKHZvaWQgMCwiMW9hIik7Xy5qbT1mdW5jdGlvbihhLGIsYyl7Xy5kaihhKTt2YXIgZD1hLkgsZT1kW18uSF18MDtpZihjPT1udWxsKXJldHVybiBfLmZqKGQsZSxiKSxhO2Zvcih2YXIgZj1jPT09Xy5IaT83OmNbXy5IXXwwLGc9ZixoPV8ua2ooZiksaz1ofHxPYmplY3QuaXNGcm96ZW4oYyksbT0hMCxuPSEwLHA9MDtwPGMubGVuZ3RoO3ArKyl7dmFyIHE9Y1twXTtofHwocT1fLktoKHEpLG0mJihtPSFxKSxuJiYobj1xKSl9aHx8KGY9bT8xMzo1LGY9bj9mJi00MDk3OmZ8NDA5Nik7ayYmZj09PWd8fChjPV8uYWooYyksZz0wLGY9Xy5qaihmLGUpKTtmIT09ZyYmXy5IaChjLGYpO2U9Xy5maihkLGUsYixjKTsyJmZ8fCEoNDA5NiZmfHwxNiZmKXx8Xy5laihkLGUpO3JldHVybiBhfTtfLmttPWZ1bmN0aW9uKGEsYixjKXtjPWM9PT12b2lkIDA/Xy5ZaTpjO2E9Xy5payhfLnJqKGEsYikpO3JldHVybiBhIT1udWxsP2E6Y307Cl8uVmw9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBfLkVqKGEsYixjPT1udWxsP2M6Xy5iaihjKSl9O18ubG09ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBfLkVqKGEsYixjPT1udWxsP2M6Xy5KbChjKSl9O18uVWw9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBfLkVqKGEsYixfLk5sKGMpKX07Xy5tbT1mdW5jdGlvbihhLGIsYyl7aWYoYyE9bnVsbCl7aWYoISgwLF8uU2kpKGMpKXRocm93IElsKCJlbnVtIik7Y3w9MH1yZXR1cm4gXy5FaihhLGIsYyl9O25tPWZ1bmN0aW9uKCl7dGhpcy5nPWRvY3VtZW50fHx7Y29va2llOiIifX07Xy5sPW5tLnByb3RvdHlwZTsKXy5sLmlzRW5hYmxlZD1mdW5jdGlvbigpe2lmKCFfLnUubmF2aWdhdG9yLmNvb2tpZUVuYWJsZWQpcmV0dXJuITE7aWYodGhpcy5nLmNvb2tpZSlyZXR1cm4hMDt0aGlzLnNldCgiVEVTVENPT0tJRVNFTkFCTEVEIiwiMSIse3hoOjYwfSk7aWYodGhpcy5nZXQoIlRFU1RDT09LSUVTRU5BQkxFRCIpIT09IjEiKXJldHVybiExO3RoaXMucmVtb3ZlKCJURVNUQ09PS0lFU0VOQUJMRUQiKTtyZXR1cm4hMH07Cl8ubC5zZXQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPSExO2lmKHR5cGVvZiBjPT09Im9iamVjdCIpe3ZhciBlPWMuTG87ZD1jLk1vfHwhMTt2YXIgZj1jLmRvbWFpbnx8dm9pZCAwO3ZhciBnPWMucGF0aHx8dm9pZCAwO3ZhciBoPWMueGh9aWYoL1s7PVxzXS8udGVzdChhKSl0aHJvdyBFcnJvcigieWFgIithKTtpZigvWztcclxuXS8udGVzdChiKSl0aHJvdyBFcnJvcigiemFgIitiKTtoPT09dm9pZCAwJiYoaD0tMSk7dGhpcy5nLmNvb2tpZT1hKyI9IitiKyhmPyI7ZG9tYWluPSIrZjoiIikrKGc/IjtwYXRoPSIrZzoiIikrKGg8MD8iIjpoPT0wPyI7ZXhwaXJlcz0iKyhuZXcgRGF0ZSgxOTcwLDEsMSkpLnRvVVRDU3RyaW5nKCk6IjtleHBpcmVzPSIrKG5ldyBEYXRlKERhdGUubm93KCkraCoxRTMpKS50b1VUQ1N0cmluZygpKSsoZD8iO3NlY3VyZSI6IiIpKyhlIT1udWxsPyI7c2FtZXNpdGU9IitlOiIiKX07Cl8ubC5nZXQ9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9YSsiPSIsZD0odGhpcy5nLmNvb2tpZXx8IiIpLnNwbGl0KCI7IiksZT0wLGY7ZTxkLmxlbmd0aDtlKyspe2Y9Xy5vYyhkW2VdKTtpZihmLmxhc3RJbmRleE9mKGMsMCk9PTApcmV0dXJuIGYuc2xpY2UoYy5sZW5ndGgpO2lmKGY9PWEpcmV0dXJuIiJ9cmV0dXJuIGJ9O18ubC5yZW1vdmU9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuZ2V0KGEpIT09dm9pZCAwO3RoaXMuc2V0KGEsIiIse3hoOjAscGF0aDpiLGRvbWFpbjpjfSk7cmV0dXJuIGR9O18ubC5YYj1mdW5jdGlvbigpe3JldHVybiBvbSh0aGlzKS5rZXlzfTtfLmwua2I9ZnVuY3Rpb24oKXtyZXR1cm4gb20odGhpcykudmFsdWVzfTtfLmwuY2xlYXI9ZnVuY3Rpb24oKXtmb3IodmFyIGE9b20odGhpcykua2V5cyxiPWEubGVuZ3RoLTE7Yj49MDtiLS0pdGhpcy5yZW1vdmUoYVtiXSl9Owp2YXIgb209ZnVuY3Rpb24oYSl7YT0oYS5nLmNvb2tpZXx8IiIpLnNwbGl0KCI7Iik7Zm9yKHZhciBiPVtdLGM9W10sZCxlLGY9MDtmPGEubGVuZ3RoO2YrKyllPV8ub2MoYVtmXSksZD1lLmluZGV4T2YoIj0iKSxkPT0tMT8oYi5wdXNoKCIiKSxjLnB1c2goZSkpOihiLnB1c2goZS5zdWJzdHJpbmcoMCxkKSksYy5wdXNoKGUuc3Vic3RyaW5nKGQrMSkpKTtyZXR1cm57a2V5czpiLHZhbHVlczpjfX0scG09ZnVuY3Rpb24oYSl7dGhpcy5IPV8uSShhKX07Xy55KHBtLF8uSik7dmFyIHFtPWZ1bmN0aW9uKGEpe2lmKCFhKXJldHVybiIiO2lmKC9eYWJvdXQ6KD86Ymxhbmt8c3JjZG9jKSQvLnRlc3QoYSkpcmV0dXJuIHdpbmRvdy5vcmlnaW58fCIiO2EuaW5kZXhPZigiYmxvYjoiKT09PTAmJihhPWEuc3Vic3RyaW5nKDUpKTthPWEuc3BsaXQoIiMiKVswXS5zcGxpdCgiPyIpWzBdO2E9YS50b0xvd2VyQ2FzZSgpO2EuaW5kZXhPZigiLy8iKT09MCYmKGE9d2luZG93LmxvY2F0aW9uLnByb3RvY29sK2EpOy9eW1x3XC1dKjpcL1wvLy50ZXN0KGEpfHwoYT13aW5kb3cubG9jYXRpb24uaHJlZik7dmFyIGI9YS5zdWJzdHJpbmcoYS5pbmRleE9mKCI6Ly8iKSszKSxjPWIuaW5kZXhPZigiLyIpO2MhPS0xJiYoYj1iLnN1YnN0cmluZygwLGMpKTtjPWEuc3Vic3RyaW5nKDAsYS5pbmRleE9mKCI6Ly8iKSk7aWYoIWMpdGhyb3cgRXJyb3IoIkFhYCIrYSk7aWYoYyE9PSJodHRwIiYmYyE9PSJodHRwcyImJmMhPT0iY2hyb21lLWV4dGVuc2lvbiImJmMhPT0ibW96LWV4dGVuc2lvbiImJgpjIT09ImZpbGUiJiZjIT09ImFuZHJvaWQtYXBwIiYmYyE9PSJjaHJvbWUtc2VhcmNoIiYmYyE9PSJjaHJvbWUtdW50cnVzdGVkIiYmYyE9PSJjaHJvbWUiJiZjIT09ImFwcCImJmMhPT0iZGV2dG9vbHMiKXRocm93IEVycm9yKCJCYWAiK2MpO2E9IiI7dmFyIGQ9Yi5pbmRleE9mKCI6Iik7aWYoZCE9LTEpe3ZhciBlPWIuc3Vic3RyaW5nKGQrMSk7Yj1iLnN1YnN0cmluZygwLGQpO2lmKGM9PT0iaHR0cCImJmUhPT0iODAifHxjPT09Imh0dHBzIiYmZSE9PSI0NDMiKWE9IjoiK2V9cmV0dXJuIGMrIjovLyIrYithfTt2YXIgc209ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVN0cmluZyhfLnUubG9jYXRpb24uaHJlZik7cmV0dXJuIGQmJmEmJmI/W2Iscm0ocW0oZCksYSxjfHxudWxsKV0uam9pbigiICIpOm51bGx9LHJtPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1bXSxlPVtdO2lmKChBcnJheS5pc0FycmF5KGMpPzI6MSk9PTEpcmV0dXJuIGU9W2IsYV0sXy5oYyhkLGZ1bmN0aW9uKGgpe2UucHVzaChoKX0pLHRtKGUuam9pbigiICIpKTt2YXIgZj1bXSxnPVtdO18uaGMoYyxmdW5jdGlvbihoKXtnLnB1c2goaC5rZXkpO2YucHVzaChoLnZhbHVlKX0pO2M9TWF0aC5mbG9vcigobmV3IERhdGUpLmdldFRpbWUoKS8xRTMpO2U9Zi5sZW5ndGg9PTA/W2MsYixhXTpbZi5qb2luKCI6IiksYyxiLGFdO18uaGMoZCxmdW5jdGlvbihoKXtlLnB1c2goaCl9KTthPXRtKGUuam9pbigiICIpKTthPVtjLGFdO2cubGVuZ3RoPT0wfHxhLnB1c2goZy5qb2luKCIiKSk7cmV0dXJuIGEuam9pbigiXyIpfSx0bT1mdW5jdGlvbihhKXt2YXIgYj0KUGwoKTtiLnVwZGF0ZShhKTtyZXR1cm4gYi5saigpLnRvTG93ZXJDYXNlKCl9O3ZhciB1bT1mdW5jdGlvbihhLGIsYyxkKXsoYT1fLnVbYV0pfHx0eXBlb2YgZG9jdW1lbnQ9PT0idW5kZWZpbmVkInx8KGE9KG5ldyBubSkuZ2V0KGIpKTtyZXR1cm4gYT9zbShhLGMsZCk6bnVsbH0sdm09ZnVuY3Rpb24oYSl7dmFyIGI9cW0oXy51PT1udWxsP3ZvaWQgMDpfLnUubG9jYXRpb24uaHJlZiksYz1bXSxkOyhkPV8udS5fX1NBUElTSUR8fF8udS5fX0FQSVNJRHx8Xy51Ll9fM1BTQVBJU0lEfHxfLnUuX18xUFNBUElTSUR8fF8udS5fX09WRVJSSURFX1NJRCk/ZD0hMDoodHlwZW9mIGRvY3VtZW50IT09InVuZGVmaW5lZCImJihkPW5ldyBubSxkPWQuZ2V0KCJTQVBJU0lEIil8fGQuZ2V0KCJBUElTSUQiKXx8ZC5nZXQoIl9fU2VjdXJlLTNQQVBJU0lEIil8fGQuZ2V0KCJfX1NlY3VyZS0xUEFQSVNJRCIpKSxkPSEhZCk7ZCYmKGQ9KGI9Yi5pbmRleE9mKCJodHRwczoiKT09MHx8Yi5pbmRleE9mKCJjaHJvbWUtZXh0ZW5zaW9uOiIpPT0wfHxiLmluZGV4T2YoImNocm9tZS11bnRydXN0ZWQ6Ly9uZXctdGFiLXBhZ2UiKT09CjB8fGIuaW5kZXhPZigibW96LWV4dGVuc2lvbjoiKT09MCk/Xy51Ll9fU0FQSVNJRDpfLnUuX19BUElTSUQsZHx8dHlwZW9mIGRvY3VtZW50PT09InVuZGVmaW5lZCJ8fChkPW5ldyBubSxkPWQuZ2V0KGI/IlNBUElTSUQiOiJBUElTSUQiKXx8ZC5nZXQoIl9fU2VjdXJlLTNQQVBJU0lEIikpLChkPWQ/c20oZCxiPyJTQVBJU0lESEFTSCI6IkFQSVNJREhBU0giLGEpOm51bGwpJiZjLnB1c2goZCksYiYmKChiPXVtKCJfXzFQU0FQSVNJRCIsIl9fU2VjdXJlLTFQQVBJU0lEIiwiU0FQSVNJRDFQSEFTSCIsYSkpJiZjLnB1c2goYiksKGE9dW0oIl9fM1BTQVBJU0lEIiwiX19TZWN1cmUtM1BBUElTSUQiLCJTQVBJU0lEM1BIQVNIIixhKSkmJmMucHVzaChhKSkpO3JldHVybiBjLmxlbmd0aD09MD9udWxsOmMuam9pbigiICIpfTt2YXIgeG07Xy53bT1mdW5jdGlvbigpe307eG09ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGU7cmV0dXJuIF8uRGooZnVuY3Rpb24oZil7c3dpdGNoKGYuZyl7Y2FzZSAxOnJldHVybiBiPW5ldyBDb21wcmVzc2lvblN0cmVhbSgiZ3ppcCIpLGM9KG5ldyBSZXNwb25zZShiLnJlYWRhYmxlKSkuYXJyYXlCdWZmZXIoKSxkPWIud3JpdGFibGUuZ2V0V3JpdGVyKCksXy5LKGYsZC53cml0ZSgobmV3IFRleHRFbmNvZGVyKS5lbmNvZGUoYSkpLDIpO2Nhc2UgMjpyZXR1cm4gXy5LKGYsZC5jbG9zZSgpLDMpO2Nhc2UgMzpyZXR1cm4gZT1VaW50OEFycmF5LF8uSyhmLGMsNCk7Y2FzZSA0OnJldHVybiBmLnJldHVybihuZXcgZShmLmgpKX19KX07Xy53bS5wcm90b3R5cGUubWI9ZnVuY3Rpb24oYSl7cmV0dXJuIGE8MTAyND8hMTp0eXBlb2YgQ29tcHJlc3Npb25TdHJlYW0hPT0idW5kZWZpbmVkIn07dmFyIHltPWZ1bmN0aW9uKGEsYil7dGhpcy5oPWE7dGhpcy5jYWxsYmFjaz1iO3RoaXMuZz0hMTt0aGlzLmo9ZnVuY3Rpb24oKXtyZXR1cm4gXy5hYygpfTt0aGlzLmw9dGhpcy5qKCl9LHptPWZ1bmN0aW9uKGEsYil7YS5oPWI7YS50aW1lciYmYS5nPyhhLnN0b3AoKSxhLnN0YXJ0KCkpOmEudGltZXImJmEuc3RvcCgpfTt5bS5wcm90b3R5cGUuc3RhcnQ9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMuZz0hMDt0aGlzLnRpbWVyfHwodGhpcy50aW1lcj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YS50aWNrKCl9LHRoaXMuaCksdGhpcy5sPXRoaXMuaigpKX07eW0ucHJvdG90eXBlLnN0b3A9ZnVuY3Rpb24oKXt0aGlzLmc9ITE7dGhpcy50aW1lciYmKGNsZWFyVGltZW91dCh0aGlzLnRpbWVyKSx0aGlzLnRpbWVyPXZvaWQgMCl9Owp5bS5wcm90b3R5cGUudGljaz1mdW5jdGlvbigpe3ZhciBhPXRoaXM7aWYodGhpcy5nKXt2YXIgYj1NYXRoLm1heCh0aGlzLmooKS10aGlzLmwsMCk7Yjx0aGlzLmgqLjg/dGhpcy50aW1lcj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YS50aWNrKCl9LHRoaXMuaC1iKToodGhpcy50aW1lciYmKGNsZWFyVGltZW91dCh0aGlzLnRpbWVyKSx0aGlzLnRpbWVyPXZvaWQgMCksdGhpcy5jYWxsYmFjaygpLHRoaXMuZyYmKHRoaXMuc3RvcCgpLHRoaXMuc3RhcnQoKSkpfWVsc2UgdGhpcy50aW1lcj12b2lkIDB9O3ZhciBBbT1mdW5jdGlvbihhKXt0aGlzLkg9Xy5JKGEpfTtfLnkoQW0sXy5KKTt2YXIgQm09ZnVuY3Rpb24oYSl7dGhpcy5IPV8uSShhKX07Xy55KEJtLF8uSik7dmFyIENtPWZ1bmN0aW9uKGEpe3RoaXMuSD1fLkkoYSl9O18ueShDbSxfLkopO0NtLnByb3RvdHlwZS5wZj1mdW5jdGlvbigpe3JldHVybiBfLktqKHRoaXMsMSl9O3ZhciBUbD1mdW5jdGlvbihhKXt0aGlzLkg9Xy5JKGEpfTtfLnkoVGwsXy5KKTt2YXIgRG09ZnVuY3Rpb24oYSl7dGhpcy5IPV8uSShhKX07Xy55KERtLF8uSik7dmFyIFNsPWZ1bmN0aW9uKGEpe18uam0oV2wsMSxhKX0sRW09Xy5PbChEbSk7dmFyIEZtPWZ1bmN0aW9uKGEpe3RoaXMuSD1fLkkoYSl9O18ueShGbSxfLkopO3ZhciBRbD1bInBsYXRmb3JtIiwicGxhdGZvcm1WZXJzaW9uIiwiYXJjaGl0ZWN0dXJlIiwibW9kZWwiLCJ1YUZ1bGxWZXJzaW9uIl0sV2w9bmV3IERtLFJsPW51bGw7dmFyIEdtPWZ1bmN0aW9uKGEpe3RoaXMuSD1fLkkoYSl9O18ueShHbSxfLkopO3ZhciBIbT1mdW5jdGlvbihhKXtyZXR1cm4gXy5tbShhLDEsMSl9O3ZhciBJbT1mdW5jdGlvbihhKXt0aGlzLkg9Xy5JKGEpfTtfLnkoSW0sXy5KKTtJbS5wcm90b3R5cGUud2E9ZnVuY3Rpb24oKXtyZXR1cm4gXy5Kaih0aGlzLDIpfTtJbS5wcm90b3R5cGUuS2E9ZnVuY3Rpb24oYSl7Xy5VbCh0aGlzLDIsYSl9O3ZhciBKbT1mdW5jdGlvbihhKXt0aGlzLkg9Xy5JKGEsNCl9O18ueShKbSxfLkopO18uS209ZnVuY3Rpb24oYSl7dGhpcy5IPV8uSShhLDM2KX07Xy55KF8uS20sXy5KKTtfLkttLnByb3RvdHlwZS5LYT1mdW5jdGlvbihhLGIpe18uZGoodGhpcyk7dmFyIGM9dGhpcy5ILGQ9Xy5vaih0aGlzLGMsY1tfLkhdfDAsSW0sMywyLCEwKTtpZih0eXBlb2YgYSE9PSJudW1iZXIifHxhPDB8fGE+ZC5sZW5ndGgpdGhyb3cgRXJyb3IoKTthIT12b2lkIDA/ZC5zcGxpY2UoYSwxLGIpOmQucHVzaChiKTt2YXIgZT1hPWQ9PT1fLkhpPzc6ZFtfLkhdfDA7KGI9Xy5LaChiKSk/KGEmPS05LGQubGVuZ3RoPT09MSYmKGEmPS00MDk3KSk6YXw9NDA5NjthIT09ZSYmXy5IaChkLGEpO2J8fF8uZWooYyl9O18uTG09ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5VbChhLDgsYil9O3ZhciBNbT1mdW5jdGlvbihhKXt0aGlzLkg9Xy5JKGEsMTkpfTtfLnkoTW0sXy5KKTtNbS5wcm90b3R5cGUucGQ9ZnVuY3Rpb24oYSl7cmV0dXJuIF8ubW0odGhpcywyLGEpfTt2YXIgT209ZnVuY3Rpb24oYSxiKXt0aGlzLnliPWI9Yj09PXZvaWQgMD8hMTpiO3RoaXMuaj10aGlzLmxvY2FsZT1udWxsO3RoaXMuaD0wO3RoaXMubD0hMTt0aGlzLmc9bmV3IE1tO051bWJlci5pc0ludGVnZXIoYSkmJnRoaXMuZy5wZChhKTtifHwodGhpcy5sb2NhbGU9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZSgibGFuZyIpKTtObSh0aGlzLG5ldyBHbSl9O09tLnByb3RvdHlwZS5wZD1mdW5jdGlvbihhKXt0aGlzLmcucGQoYSk7cmV0dXJuIHRoaXN9Owp2YXIgTm09ZnVuY3Rpb24oYSxiKXtfLk0oYS5nLDEsYik7Xy5LaihiLDEpfHxIbShiKTthLnlifHwoYj1QbShhKSxfLkpqKGIsNSl8fF8uVWwoYiw1LGEubG9jYWxlKSk7YS5qJiYoYj1QbShhKSxfLkZqKGIsRG0sOSl8fF8uTShiLDksYS5qKSl9LFFtPWZ1bmN0aW9uKGEsYil7YS5oPWJ9LFJtPWZ1bmN0aW9uKGEpe3ZhciBiPWI9PT12b2lkIDA/UWw6Yjt2YXIgYz1hLnliP3ZvaWQgMDpfLmhiKCk7Yz9ZbChjLGIpLnRoZW4oZnVuY3Rpb24oZCl7YS5qPUVtKGQhPW51bGw/ZDoiW10iKTtkPVBtKGEpO18uTShkLDksYS5qKTtyZXR1cm4hMH0pLmNhdGNoKGZ1bmN0aW9uKCl7cmV0dXJuITF9KTpQcm9taXNlLnJlc29sdmUoITEpfSxQbT1mdW5jdGlvbihhKXt2YXIgYj1fLkZqKGEuZyxHbSwxKTtifHwoYj1uZXcgR20sTm0oYSxiKSk7YT1iO2I9Xy5GaihhLEZtLDExKTtifHwoYj1uZXcgRm0sXy5NKGEsMTEsYikpO3JldHVybiBifSxTbT1mdW5jdGlvbihhLGIsYyxkLGUsZixnKXtjPWM9PT0Kdm9pZCAwPzA6YztkPWQ9PT12b2lkIDA/MDpkO2U9ZT09PXZvaWQgMD9udWxsOmU7Zj1mPT09dm9pZCAwPzA6ZjtnPWc9PT12b2lkIDA/MDpnO2lmKCFhLnliKXt2YXIgaD1QbShhKTt2YXIgaz1uZXcgQ207az1fLm1tKGssMSxhLmgpO2s9Xy5WbChrLDIsYS5sKTtkPV8ubG0oaywzLGQ+MD9kOnZvaWQgMCk7ZD1fLmxtKGQsNCxmPjA/Zjp2b2lkIDApO2Q9Xy5sbShkLDUsZz4wP2c6dm9pZCAwKTtmPWQuSDtnPWZbXy5IXXwwO2Q9Xy5LaChkLGcpP2Q6Xy52aShkLGYsZyk/Xy51aShkLGYpOm5ldyBkLmNvbnN0cnVjdG9yKF8udGkoZixnLCEwKSk7Xy5NKGgsMTAsZCl9YT1IbChhLmcpO2E9Xy5FaihhLDQsXy5NbChEYXRlLm5vdygpLnRvU3RyaW5nKCkpKTtiPV8uam0oYSwzLGIuc2xpY2UoKSk7ZSYmKGE9bmV3IEFtLGU9Xy5sbShhLDEzLGUpLGE9bmV3IEJtLGU9Xy5NKGEsMixlKSxhPW5ldyBKbSxlPV8uTShhLDEsZSksZT1fLm1tKGUsMiw5KSxfLk0oYiwxOCxlKSk7YyYmXy5FaihiLAoxNCxfLk1sKGMpKTtyZXR1cm4gYn07WmwucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5nPXRoaXMuaD10aGlzLmp9O1psLnByb3RvdHlwZS53YT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmh9O3ZhciBibT1mdW5jdGlvbihhKXt0aGlzLkg9Xy5JKGEsOCl9O18ueShibSxfLkopO3ZhciBUbT1fLk9sKGJtKTt2YXIgY209ZnVuY3Rpb24oYSl7dGhpcy5IPV8uSShhKX07Xy55KGNtLF8uSik7dmFyIFVtO1VtPW5ldyBkbTt2YXIgWW09ZnVuY3Rpb24oYSl7Xy53LmNhbGwodGhpcyk7dmFyIGI9dGhpczt0aGlzLmc9W107dGhpcy5aPSIiO3RoaXMuSj10aGlzLk89ITE7dGhpcy5qYT10aGlzLk09LTE7dGhpcy5SPSExO3RoaXMuQj10aGlzLmV4cGVyaW1lbnRJZHM9bnVsbDt0aGlzLkE9dGhpcy5sPTA7dGhpcy5GPW51bGw7dGhpcy5HPXRoaXMuST0wO3RoaXMucWE9MTt0aGlzLkZlPTA7dGhpcy5CYz1hLkJjO3RoaXMuV2I9YS5XYnx8ZnVuY3Rpb24oKXt9O3RoaXMuaj1uZXcgT20oYS5CYyxhLnliKTt0aGlzLkhhPWEuSGF8fG51bGw7dGhpcy5oYz1hLmhjfHxudWxsO3RoaXMuQz1hLkFsfHxudWxsO3RoaXMuTWI9YS5NYnx8bnVsbDt0aGlzLlZjPWEuVmN8fCExO3RoaXMud2l0aENyZWRlbnRpYWxzPSFhLlBkO3RoaXMueWI9YS55Ynx8ITE7dGhpcy5UPSF0aGlzLnliJiYhIV8uaGIoKSYmISFfLmhiKCkubmF2aWdhdG9yJiZfLmhiKCkubmF2aWdhdG9yLnNlbmRCZWFjb24hPT12b2lkIDA7dGhpcy5WPXR5cGVvZiBVUkxTZWFyY2hQYXJhbXMhPT0KInVuZGVmaW5lZCImJiEhKG5ldyBVUkwoVm0oKSkpLnNlYXJjaFBhcmFtcyYmISEobmV3IFVSTChWbSgpKSkuc2VhcmNoUGFyYW1zLnNldDt2YXIgYz1IbShuZXcgR20pO05tKHRoaXMuaixjKTt0aGlzLm89bmV3IFpsKDFFNCk7YT1XbSh0aGlzLGEuQmcpO3RoaXMuaD1uZXcgeW0odGhpcy5vLndhKCksYSk7dGhpcy5OPW5ldyB5bSg2RTUsYSk7dGhpcy5WY3x8dGhpcy5OLnN0YXJ0KCk7dGhpcy55Ynx8KGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInZpc2liaWxpdHljaGFuZ2UiLGZ1bmN0aW9uKCl7aWYoZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlPT09ImhpZGRlbiIpe1htKGIpO3ZhciBkOyhkPWIuRik9PW51bGx8fGQuZmx1c2goKX19KSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJwYWdlaGlkZSIsZnVuY3Rpb24oKXtYbShiKTt2YXIgZDsoZD1iLkYpPT1udWxsfHxkLmZsdXNoKCl9KSl9LFptLGJuLCRtO18ueShZbSxfLncpOwp2YXIgV209ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5WP2I/ZnVuY3Rpb24oKXtiKCkudGhlbihmdW5jdGlvbigpe2EuZmx1c2goKX0pfTpmdW5jdGlvbigpe2EuZmx1c2goKX06ZnVuY3Rpb24oKXt9fTtZbS5wcm90b3R5cGUuSz1mdW5jdGlvbigpe1htKHRoaXMpO3RoaXMuaC5zdG9wKCk7dGhpcy5OLnN0b3AoKTtfLncucHJvdG90eXBlLksuY2FsbCh0aGlzKX07Wm09ZnVuY3Rpb24oYSl7YS5DfHwoYS5DPVZtKCkpO3RyeXtyZXR1cm4obmV3IFVSTChhLkMpKS50b1N0cmluZygpfWNhdGNoKGIpe3JldHVybihuZXcgVVJMKGEuQyxfLmhiKCkubG9jYXRpb24ub3JpZ2luKSkudG9TdHJpbmcoKX19O18uYW49ZnVuY3Rpb24oYSxiKXtpZihiIGluc3RhbmNlb2YgXy5LbSlhLmxvZyhiKTtlbHNlIHRyeXt2YXIgYz1fLkxtKG5ldyBfLkttLF8uWGwoYikpO2EubG9nKGMpfWNhdGNoKGQpeyRtKGEsNCwxKX19O2JuPWZ1bmN0aW9uKGEsYil7YS5vPW5ldyBabChiPDE/MTpiKTt6bShhLmgsYS5vLndhKCkpfTsKJG09ZnVuY3Rpb24oYSxiLGMpe2EuRiYmYS5GLnpvKGIsYyl9OwpZbS5wcm90b3R5cGUubG9nPWZ1bmN0aW9uKGEpeyRtKHRoaXMsMiwxKTtpZih0aGlzLlYpe2E9SGwoYSk7dmFyIGI9dGhpcy5xYSsrO2I9YT1fLkVqKGEsMjEsXy5NbChiKSk7dmFyIGM9Xy5yaihiLDEpO3ZhciBkPWQ9PT12b2lkIDA/ITE6ZDt2YXIgZT10eXBlb2YgYztkPWM9PW51bGw/YzplPT09ImJpZ2ludCI/U3RyaW5nKCgwLF8uUWkpKDY0LGMpKTpfLldqKGMpP2U9PT0ic3RyaW5nIj9LbChjKTpkP18uZ2soYyk6Xy5mayhjKTp2b2lkIDA7ZD09bnVsbCYmKGQ9RGF0ZS5ub3coKSxkPU51bWJlci5pc0Zpbml0ZShkKT9kLnRvU3RyaW5nKCk6IjAiLF8uRWooYiwxLF8uTWwoZCkpKTtkPV8ucmooYiwxNSk7ZCE9bnVsbCYmKHR5cGVvZiBkPT09ImJpZ2ludCI/KDAsXy5qaSkoZCk/ZD1OdW1iZXIoZCk6KGQ9KDAsXy5RaSkoNjQsZCksZD0oMCxfLmppKShkKT9OdW1iZXIoZCk6U3RyaW5nKGQpKTpkPV8uV2ooZCk/dHlwZW9mIGQ9PT0ibnVtYmVyIj9fLmZrKGQpOktsKGQpOnZvaWQgMCk7CmQ9PW51bGwmJl8uRWooYiwxNSxfLk1sKChuZXcgRGF0ZSkuZ2V0VGltZXpvbmVPZmZzZXQoKSo2MCkpO3RoaXMuZXhwZXJpbWVudElkcyYmKGQ9SGwodGhpcy5leHBlcmltZW50SWRzKSxfLk0oYiwxNixkKSk7JG0odGhpcywxLDEpO2I9dGhpcy5nLmxlbmd0aC0xRTMrMTtiPjAmJih0aGlzLmcuc3BsaWNlKDAsYiksdGhpcy5sKz1iLCRtKHRoaXMsMyxiKSk7dGhpcy5nLnB1c2goYSk7dGhpcy5WY3x8dGhpcy5oLmd8fHRoaXMuaC5zdGFydCgpfX07ClltLnByb3RvdHlwZS5mbHVzaD1mdW5jdGlvbihhLGIpe3ZhciBjPXRoaXM7aWYodGhpcy5nLmxlbmd0aD09PTApYSYmYSgpO2Vsc2V7dmFyIGQ9RGF0ZS5ub3coKTtpZih0aGlzLmphPmQmJnRoaXMuTTxkKWImJmIoInRocm90dGxlZCIpO2Vsc2V7dGhpcy5IYSYmKHR5cGVvZiB0aGlzLkhhLnBmPT09ImZ1bmN0aW9uIj9RbSh0aGlzLmosdGhpcy5IYS5wZigpKTp0aGlzLmouaD0wKTt2YXIgZT10aGlzLmcubGVuZ3RoLGY9U20odGhpcy5qLHRoaXMuZyx0aGlzLmwsdGhpcy5BLHRoaXMuaGMsdGhpcy5JLHRoaXMuRyksZz10aGlzLldiKCk7aWYoZyYmdGhpcy5aPT09ZyliJiZiKCJzdGFsZS1hdXRoLXRva2VuIik7ZWxzZXt0aGlzLmc9W107dGhpcy5oLmcmJnRoaXMuaC5zdG9wKCk7dGhpcy5sPTA7ZD1fLlhsKGYpO3ZhciBoO3RoaXMuQiYmdGhpcy5CLm1iKGQubGVuZ3RoKSYmKGg9eG0oZCkpO3ZhciBrPWNuKHRoaXMsZCxnKSxtPWZ1bmN0aW9uKHEpe2Muby5yZXNldCgpO3ptKGMuaCwKYy5vLndhKCkpO2lmKHEpe3ZhciByPW51bGw7dHJ5e3ZhciB0PUpTT04uc3RyaW5naWZ5KEpTT04ucGFyc2UocS5yZXBsYWNlKCIpXX0nXG4iLCIiKSkpO3I9VG0odCl9Y2F0Y2goVil7fWlmKHIpe3E9TnVtYmVyKF8ua20ociwxLF8uUWgoIi0xIikpKTtxPjAmJihjLk09RGF0ZS5ub3coKSxjLmphPWMuTStxKTtxPVVtLmc7dD1fLmRpKF8uZWkpO3ZhciBBO18uRGgmJnQmJigoQT1yLkhbdF0pPT1udWxsP3ZvaWQgMDpBW3FdKSE9bnVsbCYmXy5CaChfLkZpLDMpO2E6e0E9VW0uZzt2YXIgRD1EPT09dm9pZCAwPyExOkQ7aWYoXy5kaShfLkdpKSYmXy5kaShfLmVpKSYmdm9pZCAwPT09Xy5HaSl7cT1yLkg7dD1xW18uZWldO2lmKCF0KWJyZWFrIGE7aWYodD10LktvKXRyeXt0KHEsQSwkbCk7YnJlYWsgYX1jYXRjaChWKXtfLm5iKFYpfX1EJiYoRD1yLkgsKHE9Xy5kaShfLmVpKSkmJnEgaW4gRCYmKEQ9RFtxXSkmJmRlbGV0ZSBEW0FdKX1EPVVtLnRiP1VtLmgocixVbS50YixVbS5nLFVtLmopOgpVbS5oKHIsVW0uZyxudWxsLFVtLmopO2lmKHI9RD09PW51bGw/dm9pZCAwOkQpe0Q9LTE7RD1EPT09dm9pZCAwPzA6RDt2YXIgTDtyPShMPV8uWGooXy5yaihyLDEpKSkhPW51bGw/TDpEO3IhPT0tMSYmKGMuUnx8Ym4oYyxyKSl9fX1hJiZhKCk7Yy5BPTB9LG49ZnVuY3Rpb24ocSxyKXt2YXIgdD1fLkdqKGYsXy5LbSwzKTt2YXIgQT1OdW1iZXIoXy5rbShmLDE0KSksRD1jLm87RC5nPU1hdGgubWluKDNFNSxELmcqMik7RC5oPU1hdGgubWluKDNFNSxELmcrTWF0aC5yb3VuZCguMSooTWF0aC5yYW5kb20oKS0uNSkqMipELmcpKTt6bShjLmgsYy5vLndhKCkpO3E9PT00MDEmJmcmJihjLlo9Zyk7QSYmKGMubCs9QSk7cj09PXZvaWQgMCYmKHI9NTAwPD1xJiZxPDYwMHx8cT09PTQwMXx8cT09PTApO3ImJihjLmc9dC5jb25jYXQoYy5nKSxjLlZjfHxjLmguZ3x8Yy5oLnN0YXJ0KCkpOyRtKGMsNywxKTtiJiZiKCJuZXQtc2VuZC1mYWlsZWQiLHEpOysrYy5BfSxwPWZ1bmN0aW9uKCl7Yy5IYSYmCmMuSGEuc2VuZChrLG0sbil9O2g/aC50aGVuKGZ1bmN0aW9uKHEpeyRtKGMsNSxlKTtrLlJmWyJDb250ZW50LUVuY29kaW5nIl09Imd6aXAiO2suUmZbIkNvbnRlbnQtVHlwZSJdPSJhcHBsaWNhdGlvbi9iaW5hcnkiO2suYm9keT1xO2suaGo9MjtwKCl9LGZ1bmN0aW9uKCl7JG0oYyw2LGUpO3AoKX0pOnAoKX19fX07CnZhciBjbj1mdW5jdGlvbihhLGIsYyl7Yz1jPT09dm9pZCAwP251bGw6Yzt2YXIgZD1kPT09dm9pZCAwP2Eud2l0aENyZWRlbnRpYWxzOmQ7dmFyIGU9e30sZj1uZXcgVVJMKFptKGEpKTtjJiYoZS5BdXRob3JpemF0aW9uPWMpO2EuTWImJihlWyJYLUdvb2ctQXV0aFVzZXIiXT1hLk1iLGYuc2VhcmNoUGFyYW1zLnNldCgiYXV0aHVzZXIiLGEuTWIpKTtyZXR1cm57dXJsOmYudG9TdHJpbmcoKSxib2R5OmIsaGo6MSxSZjplLGZsOiJQT1NUIix3aXRoQ3JlZGVudGlhbHM6ZCxGZTphLkZlfX0sWG09ZnVuY3Rpb24oYSl7YS5qLmw9ITA7YS5PJiYoYS5qLmg9MyxkbihhKSk7YS5KJiYoYS5qLmg9MixlbihhKSk7YS5mbHVzaCgpO2Euai5sPSExfSxkbj1mdW5jdGlvbihhKXtmbihhLDMyLDEwLGZ1bmN0aW9uKGIsYyl7Yj1uZXcgVVJMKGIpO2Iuc2VhcmNoUGFyYW1zLnNldCgiZm9ybWF0IiwianNvbiIpO3ZhciBkPSExO3RyeXtkPV8uaGIoKS5uYXZpZ2F0b3Iuc2VuZEJlYWNvbihiLnRvU3RyaW5nKCksCl8uWGwoYykpfWNhdGNoKGUpe31kfHwoYS5UPSExKTtyZXR1cm4gZH0pfSxlbj1mdW5jdGlvbihhKXtmbihhLDYsNSxmdW5jdGlvbihiLGMpe2I9bmV3IFVSTChiKTtiLnNlYXJjaFBhcmFtcy5zZXQoImZvcm1hdCIsImJhc2U2NGpzb24iKTt2YXIgZD1iLnNlYXJjaFBhcmFtcyxlPWQuc2V0O2M9Xy5YbChjKTtmb3IodmFyIGY9W10sZz0wLGg9MDtoPGMubGVuZ3RoO2grKyl7dmFyIGs9Yy5jaGFyQ29kZUF0KGgpO2s+MjU1JiYoZltnKytdPWsmMjU1LGs+Pj04KTtmW2crK109a31jPWdtKGYsMyk7ZS5jYWxsKGQsInAiLGMpO2I9Yi50b1N0cmluZygpO2lmKGIubGVuZ3RoPjE1MzYwKXJldHVybiExOyhuZXcgSW1hZ2UpLnNyYz1iO3JldHVybiEwfSl9LGZuPWZ1bmN0aW9uKGEsYixjLGQpe2lmKGEuZy5sZW5ndGghPT0wKXt2YXIgZT1uZXcgVVJMKFptKGEpKTtlLnNlYXJjaFBhcmFtcy5kZWxldGUoImZvcm1hdCIpO3ZhciBmPWEuV2IoKTtmJiZlLnNlYXJjaFBhcmFtcy5zZXQoImF1dGgiLApmKTtlLnNlYXJjaFBhcmFtcy5zZXQoImF1dGh1c2VyIixhLk1ifHwiMCIpO2ZvcihmPTA7ZjxjJiZhLmcubGVuZ3RoOysrZil7dmFyIGc9YS5nLnNsaWNlKDAsYiksaD1TbShhLmosZyxhLmwsYS5BLGEuaGMsYS5JLGEuRyk7aWYoIWQoZS50b1N0cmluZygpLGgpKXsrK2EuQTticmVha31hLmw9MDthLkE9MDthLkk9MDthLkc9MDthLmc9YS5nLnNsaWNlKGcubGVuZ3RoKX1hLmguZyYmYS5oLnN0b3AoKX19LFZtPWZ1bmN0aW9uKCl7cmV0dXJuImh0dHBzOi8vcGxheS5nb29nbGUuY29tL2xvZz9mb3JtYXQ9anNvbiZoYXNmYXN0PXRydWUifTt2YXIgZ249ZnVuY3Rpb24oKXt0aGlzLmJqPXR5cGVvZiBBYm9ydENvbnRyb2xsZXIhPT0idW5kZWZpbmVkIn07CmduLnByb3RvdHlwZS5zZW5kPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLGUsZixnLGgsayxtLG4scCxxLHI7cmV0dXJuIF8uRGooZnVuY3Rpb24odCl7c3dpdGNoKHQuZyl7Y2FzZSAxOnJldHVybiBmPShlPWQuYmo/bmV3IEFib3J0Q29udHJvbGxlcjp2b2lkIDApP3NldFRpbWVvdXQoZnVuY3Rpb24oKXtlLmFib3J0KCl9LGEuRmUpOnZvaWQgMCxfLnZqKHQsMiwzKSxnPU9iamVjdC5hc3NpZ24oe30se21ldGhvZDphLmZsLGhlYWRlcnM6T2JqZWN0LmFzc2lnbih7fSxhLlJmKX0sYS5ib2R5JiZ7Ym9keTphLmJvZHl9LGEud2l0aENyZWRlbnRpYWxzJiZ7Y3JlZGVudGlhbHM6ImluY2x1ZGUifSx7c2lnbmFsOmEuRmUmJmU/ZS5zaWduYWw6bnVsbH0pLF8uSyh0LGZldGNoKGEudXJsLGcpLDUpO2Nhc2UgNTpoPXQuaDtpZihoLnN0YXR1cyE9PTIwMCl7KGs9Yyk9PW51bGx8fGsoaC5zdGF0dXMpO3QuTWEoMyk7YnJlYWt9aWYoKG09Yik9PW51bGwpe3QuTWEoNyk7YnJlYWt9cmV0dXJuIF8uSyh0LApoLnRleHQoKSw4KTtjYXNlIDg6bSh0LmgpO2Nhc2UgNzpjYXNlIDM6dC5GPVt0LmpdO3QubD0wO3QuQT0wO2NsZWFyVGltZW91dChmKTthbSh0KTticmVhaztjYXNlIDI6bj1fLndqKHQpO3N3aXRjaCgocD1uKT09bnVsbD92b2lkIDA6cC5uYW1lKXtjYXNlICJBYm9ydEVycm9yIjoocT1jKT09bnVsbHx8cSg0MDgpO2JyZWFrO2RlZmF1bHQ6KHI9Yyk9PW51bGx8fHIoNDAwKX10Lk1hKDMpfX0pfTtnbi5wcm90b3R5cGUucGY9ZnVuY3Rpb24oKXtyZXR1cm4gNH07Xy5obj1mdW5jdGlvbihhLGIpe2I9Yj09PXZvaWQgMD8iMCI6YjtfLncuY2FsbCh0aGlzKTt0aGlzLkJjPWE7dGhpcy5NYj1iO3RoaXMuQj0iaHR0cHM6Ly9wbGF5Lmdvb2dsZS5jb20vbG9nP2Zvcm1hdD1qc29uJmhhc2Zhc3Q9dHJ1ZSI7dGhpcy5qPW51bGw7dGhpcy5nPXZvaWQgMDt0aGlzLmg9dGhpcy5oYz10aGlzLkhhPW51bGw7dGhpcy5vPXRoaXMuQT0hMTt0aGlzLmw9bnVsbH07Xy55KF8uaG4sXy53KTtfLmpuPWZ1bmN0aW9uKGEsYil7YS5XYj1iO3JldHVybiBhfTtfLmtuPWZ1bmN0aW9uKGEpe2EuQT0hMDtyZXR1cm4gYX07Xy5obi5wcm90b3R5cGUuUGQ9ZnVuY3Rpb24oKXt0aGlzLkM9ITA7cmV0dXJuIHRoaXN9OwpfLmxuPWZ1bmN0aW9uKGEpe2EuSGF8fChhLkhhPW5ldyBnbik7dmFyIGI9bmV3IFltKHtCYzphLkJjLFdiOmEuV2I/YS5XYjp2bSxNYjphLk1iLEFsOmEuQix5YjohMSxWYzohMSxQZDphLkMsQmc6YS5CZyxIYTphLkhhfSk7Xy5qayhhLF8uJGIoXy5xYSxiKSk7aWYoYS5qKXt2YXIgYz1hLmosZD1QbShiLmopO18uVWwoZCw3LGMpfWEuZz9iLkI9YS5nOmEuZyE9PW51bGwmJihiLkI9bmV3IF8ud20pO2EuaGMmJihiLmhjPWEuaGMpO2EuaCYmKChkPWEuaCk/KGIuZXhwZXJpbWVudElkc3x8KGIuZXhwZXJpbWVudElkcz1uZXcgcG0pLGM9Yi5leHBlcmltZW50SWRzLGQ9Xy5YbChkKSxfLlVsKGMsNCxkKSk6Yi5leHBlcmltZW50SWRzJiZfLkVqKGIuZXhwZXJpbWVudElkcyw0KSk7YS5BJiYoYi5PPWEuQSYmYi5UKTthLm8mJihiLko9YS5vKTthLmwmJihjPWEubCxiLlI9ITAsYm4oYixjKSk7Um0oYi5qKTthLkhhLnBkJiZhLkhhLnBkKGEuQmMpO2EuSGEubGwmJmEuSGEubGwoYik7cmV0dXJuIGJ9O18ubW49ZnVuY3Rpb24oYSl7dGhpcy5IPV8uSShhKX07Xy55KF8ubW4sXy5KKTtfLmw9Xy5tbi5wcm90b3R5cGU7Xy5sLldhPWZ1bmN0aW9uKCl7cmV0dXJuIF8uSmoodGhpcywxNil9O18ubC5vYj1mdW5jdGlvbihhKXtyZXR1cm4gXy5VbCh0aGlzLDE2LGEpfTtfLmwucmE9ZnVuY3Rpb24oKXtyZXR1cm4gXy5Kaih0aGlzLDEpfTtfLmwudWE9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uVWwodGhpcywxLGEpfTtfLmwubmY9ZnVuY3Rpb24oKXtyZXR1cm4gXy5Laih0aGlzLDUzKX07Cn1jYXRjaChlKXtfLl9EdW1wRXhjZXB0aW9uKGUpfQp0cnl7Cl8ubm49ZnVuY3Rpb24oYSl7dmFyIGI9Xy5MYSgpO2E9Yj9iLmNyZWF0ZUhUTUwoYSk6YTtyZXR1cm4gbmV3IF8ucmMoYSl9O18ub249ZnVuY3Rpb24oYSxiKXtiPV8ueGgoYik7YiE9PXZvaWQgMCYmKGEuaHJlZj1iKX07Xy5wbj17fTtfLnFuPWZ1bmN0aW9uKGEpe3RoaXMuZz1hfTtfLnFuLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmd9O18ucm49e307Xy5zZj1mdW5jdGlvbigpe3Rocm93IEVycm9yKCJKIik7fTtfLnNmLnByb3RvdHlwZS5nZj1udWxsO18uc2YucHJvdG90eXBlLmhhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29udGVudH07Xy5zZi5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250ZW50fTtfLnNmLnByb3RvdHlwZS5LYz1mdW5jdGlvbigpe2lmKHRoaXMuVGIhPT1fLnJuKXRocm93IEVycm9yKCJLIik7cmV0dXJuIF8ubm4odGhpcy50b1N0cmluZygpKX07dmFyIHNuPWZ1bmN0aW9uKCl7Xy5zZi5jYWxsKHRoaXMpfTsKXy5FKHNuLF8uc2YpO3NuLnByb3RvdHlwZS5UYj1fLnJuO3ZhciB0bj1mdW5jdGlvbigpe18uc2YuY2FsbCh0aGlzKX07Xy5FKHRuLF8uc2YpO3RuLnByb3RvdHlwZS5UYj1fLnBuO3RuLnByb3RvdHlwZS5nZj0xO3RuLnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBfLnFuKHRoaXMudG9TdHJpbmcoKSl9O18udW49ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihjKXt0aGlzLmNvbnRlbnQ9Y31iLnByb3RvdHlwZT1hLnByb3RvdHlwZTtyZXR1cm4gZnVuY3Rpb24oYyxkKXtjPW5ldyBiKFN0cmluZyhjKSk7ZCE9PXZvaWQgMCYmKGMuZ2Y9ZCk7cmV0dXJuIGN9fShzbik7Xy52bj1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKGMpe3RoaXMuY29udGVudD1jfWIucHJvdG90eXBlPWEucHJvdG90eXBlO3JldHVybiBmdW5jdGlvbihjKXtyZXR1cm4gbmV3IGIoU3RyaW5nKGMpKX19KHRuKTtfLnduPVJlZ0V4cC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkoInN0aWNreSIpO18ueG49bmV3IFJlZ0V4cCgoXy53bj8iIjoiXiIpKyIoPzohfC8/KFthLXpBLVpdW2EtekEtWjAtOTotXSopKSIsXy53bj8iZ3kiOiJnIik7Xy55bj1mdW5jdGlvbigpe18uc2YuY2FsbCh0aGlzKX07Xy55KF8ueW4sc24pOwpfLnluLnByb3RvdHlwZS5oYT1mdW5jdGlvbigpe2lmKHRoaXMuY29udGVudCE9PXZvaWQgMClyZXR1cm4gdGhpcy5jb250ZW50O2Zvcih2YXIgYT0iIixiPV8ueih0aGlzLlgpLGM9Yi5uZXh0KCk7IWMuZG9uZTtjPWIubmV4dCgpKWErPWMudmFsdWU7cmV0dXJuIGF9O18ueW4ucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaGEoKX07Xy56bj1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoKXt0aGlzLmNvbnRlbnQ9IiJ9YS5wcm90b3R5cGU9Xy55bi5wcm90b3R5cGU7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBhfX0oKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9CnRyeXsKdmFyIEFuLEJuO0FuPWZ1bmN0aW9uKGEpe3JldHVybiBTdHJpbmcoYSkucmVwbGFjZSgvXC0oW2Etel0pL2csZnVuY3Rpb24oYixjKXtyZXR1cm4gYy50b1VwcGVyQ2FzZSgpfSl9O0JuPWZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoUmVnRXhwKCIoXnxbXFxzXSspKFthLXpdKSIsImciKSxmdW5jdGlvbihiLGMsZCl7cmV0dXJuIGMrZC50b1VwcGVyQ2FzZSgpfSl9O18uQ249ZnVuY3Rpb24oYSl7aWYoYSBpbnN0YW5jZW9mIF8uaGUpcmV0dXJuIGE7dmFyIGI9bmV3IF8uaGUoXy5lZSk7Xy5nZShiLDIsYSk7cmV0dXJuIGJ9O3ZhciBGbixEbjtfLkVuPWZ1bmN0aW9uKGEsYixjKXtpZih0eXBlb2YgYj09PSJzdHJpbmciKShiPURuKGEsYikpJiYoYS5zdHlsZVtiXT1jKTtlbHNlIGZvcih2YXIgZCBpbiBiKXtjPWE7dmFyIGU9YltkXSxmPURuKGMsZCk7ZiYmKGMuc3R5bGVbZl09ZSl9fTtGbj17fTtEbj1mdW5jdGlvbihhLGIpe3ZhciBjPUZuW2JdO2lmKCFjKXt2YXIgZD1BbihiKTtjPWQ7YS5zdHlsZVtkXT09PXZvaWQgMCYmKGQ9KF8uSWM/IldlYmtpdCI6Xy5IYz8iTW96IjpudWxsKStCbihkKSxhLnN0eWxlW2RdIT09dm9pZCAwJiYoYz1kKSk7Rm5bYl09Y31yZXR1cm4gY307Xy5Hbj1fLkhjPyJNb3pVc2VyU2VsZWN0IjpfLkljfHxfLkdjPyJXZWJraXRVc2VyU2VsZWN0IjpudWxsOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLmxhKCJlbF9tYWluX2NzcyIpOwoKXy5uYSgpOwp9Y2F0Y2goZSl7Xy5fRHVtcEV4Y2VwdGlvbihlKX0KdHJ5ewpfLmxhKCJlbF9tYWluIik7Ci8qCiBDb3B5cmlnaHQgVGhlIENsb3N1cmUgTGlicmFyeSBBdXRob3JzLgogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAKKi8KdmFyIEhuPWZ1bmN0aW9uKGEsYil7dmFyIGM9e30sZDtmb3IoZCBpbiBhKWNbZF09Yi5jYWxsKHZvaWQgMCxhW2RdLGQsYSk7cmV0dXJuIGN9LEluPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5jcmVhdGVSYW5nZSgpO2Muc2VsZWN0Tm9kZShiLmJvZHkpO2E9Xy5ubihhKTtyZXR1cm4gYy5jcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQoXy5HbChhKSl9LEpuPWZ1bmN0aW9uKGEpe2E9YS5ub2RlTmFtZTtyZXR1cm4gdHlwZW9mIGE9PT0ic3RyaW5nIj9hOiJGT1JNIn0sS249ZnVuY3Rpb24oYSl7YT1hLm5vZGVUeXBlO3JldHVybiBhPT09MXx8dHlwZW9mIGEhPT0ibnVtYmVyIn0sTG49ZnVuY3Rpb24oYSxiLGMpe2Euc2V0QXR0cmlidXRlKGIsYyl9LE1uPWZ1bmN0aW9uKGEsYixjLGQpe18uZGooYSk7dmFyIGU9YS5ILGY9ZVtfLkhdfDA7aWYoYz09bnVsbClyZXR1cm4gXy5maihlLGYsYiksYTt2YXIgZz1jPT09Xy5IaT83OmNbXy5IXXwwLGg9ZyxrPV8ua2ooZyksbT1rfHxPYmplY3QuaXNGcm96ZW4oYyk7Cmt8fChnPTApO218fChjPV8uYWooYyksaD0wLGc9Xy5qaihnLGYpLG09ITEpO2d8PTU7az00Jmc/NTEyJmc/NTEyOjEwMjQmZz8xMDI0OjA6dm9pZCAwO2s9ayE9bnVsbD9rOjA7Zm9yKHZhciBuPTA7bjxjLmxlbmd0aDtuKyspe3ZhciBwPWNbbl0scT1kKHAsayk7T2JqZWN0LmlzKHAscSl8fChtJiYoYz1fLmFqKGMpLGg9MCxnPV8uamooZyxmKSxtPSExKSxjW25dPXEpfWchPT1oJiYobSYmKGM9Xy5haihjKSxnPV8uamooZyxmKSksXy5IaChjLGcpKTtfLmZqKGUsZixiLGMpO3JldHVybiBhfSxObj1mdW5jdGlvbihhKXtpZihfLkRoKXt2YXIgYjtyZXR1cm4oYj1hW18uaW1dKSE9bnVsbD9iOmFbXy5pbV09bmV3IE1hcH1pZihfLmltIGluIGEpcmV0dXJuIGFbXy5pbV07Yj1uZXcgTWFwO09iamVjdC5kZWZpbmVQcm9wZXJ0eShhLF8uaW0se3ZhbHVlOmJ9KTtyZXR1cm4gYn0sT249ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YS5nZXQoZCk7aWYoZSE9bnVsbClyZXR1cm4gZTtmb3IodmFyIGY9CmU9MDtmPGQubGVuZ3RoO2YrKyl7dmFyIGc9ZFtmXTtfLmdqKGIsZykhPW51bGwmJihlIT09MCYmKGM9Xy5maihiLGMsZSkpLGU9Zyl9YS5zZXQoZCxlKTtyZXR1cm4gZX0sUG49ZnVuY3Rpb24oYSl7cmV0dXJuIF8uTmEoYSl9LFJuPWZ1bmN0aW9uKCl7dmFyIGE9UW4sYjtmb3IoYiBpbiBhKXJldHVybiExO3JldHVybiEwfSxTbj1mdW5jdGlvbihhKXt2YXIgYj17fSxjO2ZvcihjIGluIGEpYltjXT1hW2NdO3JldHVybiBifSxUbj1mdW5jdGlvbihhLGIpe3JldHVybiBhPGI/LTE6YT5iPzE6MH0sVW49ZnVuY3Rpb24oYSxiKXt2YXIgYz0wO2E9KDAsXy5vYykoU3RyaW5nKGEpKS5zcGxpdCgiLiIpO2I9KDAsXy5vYykoU3RyaW5nKGIpKS5zcGxpdCgiLiIpO2Zvcih2YXIgZD1NYXRoLm1heChhLmxlbmd0aCxiLmxlbmd0aCksZT0wO2M9PTAmJmU8ZDtlKyspe3ZhciBmPWFbZV18fCIiLGc9YltlXXx8IiI7ZG97Zj0vKFxkKikoXEQqKSguKikvLmV4ZWMoZil8fFsiIiwiIiwiIiwiIl07Zz0KLyhcZCopKFxEKikoLiopLy5leGVjKGcpfHxbIiIsIiIsIiIsIiJdO2lmKGZbMF0ubGVuZ3RoPT0wJiZnWzBdLmxlbmd0aD09MClicmVhaztjPVRuKGZbMV0ubGVuZ3RoPT0wPzA6cGFyc2VJbnQoZlsxXSwxMCksZ1sxXS5sZW5ndGg9PTA/MDpwYXJzZUludChnWzFdLDEwKSl8fFRuKGZbMl0ubGVuZ3RoPT0wLGdbMl0ubGVuZ3RoPT0wKXx8VG4oZlsyXSxnWzJdKTtmPWZbM107Zz1nWzNdfXdoaWxlKGM9PTApfXJldHVybiBjfSxWbj1mdW5jdGlvbihhKXtpZigvXihzY3JpcHR8c3R5bGUpJC9pLnRlc3QoYS50YWdOYW1lKSl0aHJvdyBFcnJvcigidSIpO30sV249ZnVuY3Rpb24oYSl7aWYoYSBpbnN0YW5jZW9mIF8ucW4pcmV0dXJuIGEuZzt0aHJvdyBFcnJvcigidSIpO30sWG49ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7IikucmVwbGFjZSgvJy9nLAoiJmFwb3M7Iil9LFluPWZ1bmN0aW9uKGEpe3JldHVybiBhIGluc3RhbmNlb2YgXy5yYz9hOl8ubm4oWG4oU3RyaW5nKGEpKSl9LFpuPWZ1bmN0aW9uKGEpe3ZhciBiPXtub25jZTpfLlBhKCJzY3JpcHQiLGRvY3VtZW50KX07YT1fLlNhKGEpLnRvU3RyaW5nKCk7dmFyIGM9IjxzY3JpcHQiO2lmKGI9PW51bGw/MDpiLmlkKWMrPScgaWQ9IicrWG4oYi5pZCkrJyInO2lmKGI9PW51bGw/MDpiLm5vbmNlKWMrPScgbm9uY2U9IicrWG4oYi5ub25jZSkrJyInO2lmKGI9PW51bGw/MDpiLnR5cGUpYys9JyB0eXBlPSInK1huKGIudHlwZSkrJyInO2lmKGI9PW51bGw/MDpiLmRlZmVyKWMrPSIgZGVmZXIiO3JldHVybiBfLm5uKGMrKCI+IithKyJceDNjL3NjcmlwdD4iKSl9LCRuPWZ1bmN0aW9uKGEpe3ZhciBiPVluKCIiKTtyZXR1cm4gXy5ubihhLm1hcChmdW5jdGlvbihjKXtyZXR1cm4gXy5HbChZbihjKSl9KS5qb2luKF8uR2woYikudG9TdHJpbmcoKSkpfSxhbz1mdW5jdGlvbihhKXtyZXR1cm4gJG4oYSl9LAplbz1mdW5jdGlvbihhKXtmb3IodmFyIGI9IiIsYz1PYmplY3Qua2V5cyhhKSxkPTA7ZDxjLmxlbmd0aDtkKyspe3ZhciBlPWNbZF0sZj1hW2VdO2lmKCFiby50ZXN0KGUpKXRocm93IEVycm9yKCJ1Iik7aWYoZiE9PXZvaWQgMCYmZiE9PW51bGwpe2lmKC9eb24uL2kudGVzdChlKSl0aHJvdyBFcnJvcigidSIpO2NvLmluZGV4T2YoZS50b0xvd2VyQ2FzZSgpKSE9PS0xJiYoZj1fLnRoKGYpP2YudG9TdHJpbmcoKTpfLndoKFN0cmluZyhmKSl8fCJhYm91dDppbnZhbGlkI3pDbG9zdXJleiIpO2Y9ZSsnPSInK1luKFN0cmluZyhmKSkrJyInO2IrPSIgIitmfX1yZXR1cm4gYn0saG89ZnVuY3Rpb24oYSl7dmFyIGI9e307aWYoIWJvLnRlc3QoImJvZHkiKSl0aHJvdyBFcnJvcigidSIpO2lmKGZvLmluZGV4T2YoIkJPRFkiKSE9PS0xKXRocm93IEVycm9yKCJ1Iik7dmFyIGM9Ijxib2R5IjtiJiYoYys9ZW8oYikpO0FycmF5LmlzQXJyYXkoYSl8fChhPWE9PT12b2lkIDA/W106W2FdKTtnby5pbmRleE9mKCJCT0RZIikhPT0KLTE/Yys9Ij4iOihhPWFvKGEubWFwKGZ1bmN0aW9uKGQpe3JldHVybiBkIGluc3RhbmNlb2YgXy5yYz9kOlluKFN0cmluZyhkKSl9KSksYys9Ij4iK2EudG9TdHJpbmcoKSsiPC9ib2R5PiIpO3JldHVybiBfLm5uKGMpfSxpbz1mdW5jdGlvbihhKXtyZXR1cm4gXy56YShhKT9hLktjJiYoYT1hLktjKCksYSBpbnN0YW5jZW9mIF8ucmMpP2E6WW4oInpTb3l6Iik6WW4oU3RyaW5nKGEpKX0sam89ZnVuY3Rpb24oYSxiKXtiJiZiLmg/Yi5oKGEpOihiPWlvKGIpLGEuaW5uZXJIVE1MPV8uR2woYikpfSxsbz1mdW5jdGlvbihhLGIpe2I9YShifHxrbyx2b2lkIDApO2E9Xy5mYigpO2ImJmIuZz9hPWIuZygpOihhPWEuY3JlYXRlRWxlbWVudCgiRElWIiksYj1pbyhiKSxhLmlubmVySFRNTD1fLkdsKGIpKTthLmNoaWxkTm9kZXMubGVuZ3RoPT0xJiYoYj1hLmZpcnN0Q2hpbGQsYi5ub2RlVHlwZT09MSYmKGE9YikpO3JldHVybiBhfSxubz1mdW5jdGlvbihhKXt2YXIgYj1kb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpOwphPW1vKGEsYik7Yj1iLmJvZHk7Yi5hcHBlbmRDaGlsZChhKTtiPShuZXcgWE1MU2VyaWFsaXplcikuc2VyaWFsaXplVG9TdHJpbmcoYik7Yj1iLnNsaWNlKGIuaW5kZXhPZigiPiIpKzEsYi5sYXN0SW5kZXhPZigiPC8iKSk7cmV0dXJuIF8ubm4oYil9LG9vPWZ1bmN0aW9uKGEpe2lmKHR5cGVvZiBhIT09InN0cmluZyIpdGhyb3cgRXJyb3IoKTtyZXR1cm4gYX0scG89ZnVuY3Rpb24oYSxiLGMpe2lmKGIpcmV0dXJuIG9vKGEpO3ZhciBkO3JldHVybihkPV8uWmkoYSkpIT1udWxsP2Q6Yz8iIjp2b2lkIDB9LHNvPWZ1bmN0aW9uKCl7cmV0dXJuIHFvfHwocW89bmV3IF8ubWkoXy5JaChbXSksdm9pZCAwLHZvaWQgMCx2b2lkIDAscm8pKX0sdG89ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YS5ILGY9ZVtfLkhdfDA7Yz1fLktoKGEsZik/MTpjO2Q9ISFkfHxjPT09MztjPT09MiYmXy5jaihhKSYmKGU9YS5ILGY9ZVtfLkhdfDApO2E9Xy5oaihlLGIpO3ZhciBnPWE9PT1fLkhpPzc6YVtfLkhdfAowLGg9Xy5paihnLGYpO3ZhciBrPTQmaD8hMTohMDtpZihrKXs0JmgmJihhPV8uYWooYSksZz0wLGg9Xy5qaihoLGYpLGY9Xy5maihlLGYsYixhKSk7Zm9yKHZhciBtPTAsbj0wO208YS5sZW5ndGg7bSsrKXt2YXIgcD1fLlppKGFbbV0pO3AhPW51bGwmJihhW24rK109cCl9bjxtJiYoYS5sZW5ndGg9bik7aD0oaHw0KSYtNTEzO2gmPS0xMDI1O2gmPS00MDk3fWghPT1nJiYoXy5IaChhLGgpLDImaCYmT2JqZWN0LmZyZWV6ZShhKSk7cmV0dXJuIGE9Xy5saihhLGgsZSxmLGIsYyxrLGQpfSx2bz1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT11bzshZCYmXy5jaihhKSYmKGI9YS5ILGM9YltfLkhdfDApO3ZhciBmPV8uZ2ooYiwxKTthPSExO2lmKGY9PW51bGwpe2lmKGQpcmV0dXJuIHNvKCk7Zj1bXX1lbHNlIGlmKGYuY29uc3RydWN0b3I9PT1fLm1pKWlmKGYudWMmMiYmIWQpZj1BcnJheS5mcm9tKF8ubmkucHJvdG90eXBlLmVudHJpZXMuY2FsbChmKSk7ZWxzZSByZXR1cm4gZjtlbHNlIEFycmF5LmlzQXJyYXkoZik/CmE9ISEoKGZbXy5IXXwwKSYyKTpmPVtdO2lmKGQpe2lmKCFmLmxlbmd0aClyZXR1cm4gc28oKTthfHwoYT0hMCxfLkloKGYpKX1lbHNlIGlmKGEpe2E9ITE7ZD1fLmFqKGYpO2ZvcihmPTA7ZjxkLmxlbmd0aDtmKyspe3ZhciBnPWRbZl09Xy5haihkW2ZdKTtBcnJheS5pc0FycmF5KGdbMV0pJiYoZ1sxXT1fLkloKGdbMV0pKX1mPWR9IWEmJmMmMzImJl8uJGkoZik7ZT1uZXcgXy5taShmLGUscG8sdm9pZCAwKTtjPV8uZmooYixjLDEsZSk7YXx8Xy5laihiLGMpO3JldHVybiBlfSx3bz1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1bXSxkPWEubGVuZ3RoLGU9MCxmPVtdLGcsaCxrPTA7azxkOyl7c3dpdGNoKGUpe2Nhc2UgMDp2YXIgbT1hLmluZGV4T2YoIjwiLGspO2lmKG08MCl7aWYoYy5sZW5ndGg9PT0wKXJldHVybiBhO2MucHVzaChhLnN1YnN0cmluZyhrKSk7az1kfWVsc2UgYy5wdXNoKGEuc3Vic3RyaW5nKGssbSkpLGg9bSxrPW0rMSxfLnduPyhfLnhuLmxhc3RJbmRleD1rLG09Xy54bi5leGVjKGEpKToKKF8ueG4ubGFzdEluZGV4PTAsbT1fLnhuLmV4ZWMoYS5zdWJzdHJpbmcoaykpKSxtPyhmPVsiPCIsbVswXV0sZz1tWzFdLGU9MSxrKz1tWzBdLmxlbmd0aCk6Yy5wdXNoKCI8Iik7YnJlYWs7Y2FzZSAxOm09YS5jaGFyQXQoaysrKTtzd2l0Y2gobSl7Y2FzZSAiJyI6Y2FzZSAnIic6dmFyIG49YS5pbmRleE9mKG0sayk7bjwwP2s9ZDooZi5wdXNoKG0sYS5zdWJzdHJpbmcoayxuKzEpKSxrPW4rMSk7YnJlYWs7Y2FzZSAiPiI6Zi5wdXNoKG0pO2MucHVzaChiKGYuam9pbigiIiksZykpO2U9MDtmPVtdO2g9Zz1udWxsO2JyZWFrO2RlZmF1bHQ6Zi5wdXNoKG0pfWJyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IoKTt9ZT09PTEmJms+PWQmJihrPWgrMSxjLnB1c2goIjwiKSxlPTAsZj1bXSxoPWc9bnVsbCl9cmV0dXJuIGMuam9pbigiIil9LHhvPWZ1bmN0aW9uKGEsYixjLGQpe3RoaXMudG9wPWE7dGhpcy5yaWdodD1iO3RoaXMuYm90dG9tPWM7dGhpcy5sZWZ0PWR9LEVvPWZ1bmN0aW9uKCl7dmFyIGE9CnlvKHpvKF8ua24oXy5qbihBbygpLGZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9KS5QZCgpKSkpLGI9Qm8oKS5tYXAoZnVuY3Rpb24oYyl7dmFyIGQ7YTp7dmFyIGU9Yy5sO2lmKGU9PW51bGwpYz1udWxsO2Vsc2UgaWYodHlwZW9mIGU9PT0ibnVtYmVyIiljPWU7ZWxzZXtpZih0eXBlb2YgZT09PSJzdHJpbmciKXt2YXIgZj1OdW1iZXIoZSk7aWYoIWlzTmFOKGYpJiYoZiE9PTB8fGUudHJpbSgpLmxlbmd0aCE9PTApKXtjPWY7YnJlYWsgYX19dGhyb3cgQ28oYywibnVtYmVyIik7fX1yZXR1cm4oZD1jKSE9bnVsbD9kOjB9KS5maWx0ZXIoZnVuY3Rpb24oYyl7cmV0dXJuIGM+MH0pO2IubGVuZ3RoPjAmJihiPURvKGIpLGEuaD1iKTtyZXR1cm4gXy5sbihhKX0sRm89ZnVuY3Rpb24oYSl7cmV0dXJuInRyYW5zbGF0ZToiK2F9LExvPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBHbztiPV8uVWwoYiwxLGEubmFtZSk7dmFyIGM9SG8oYS5zdGFydFRpbWUpO2I9Xy5NKGIsMixjKTthPUlvKGEuZHVyYXRpb24pOwphPV8uTShiLDMsYSk7Yj1uZXcgSm87cmV0dXJuIEtvKGEsNSxiKX0sSG89ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IFJvO2Iuc2V0U2Vjb25kcyhNYXRoLmZsb29yKGEvMUUzKSk7YT1NYXRoLnJvdW5kKGElMUUzKjFFNik7Xy5taihiLDIsYT09bnVsbD9hOl8uSmwoYSksMCk7cmV0dXJuIGJ9LElvPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBTbztiLnNldFNlY29uZHMoTWF0aC5mbG9vcihhLzFFMykpO2E9TWF0aC5yb3VuZChhJTFFMyoxRTYpO18ubWooYiwyLGE9PW51bGw/YTpfLkpsKGEpLDApO3JldHVybiBifSxUbz1mdW5jdGlvbihhKXtyZXR1cm4gcGVyZm9ybWFuY2UmJnBlcmZvcm1hbmNlLm1hcmsmJihhPXBlcmZvcm1hbmNlLmdldEVudHJpZXNCeU5hbWUoYSwibWFyayIpLGEubGVuZ3RoPT0xKT9hWzBdOm51bGx9LFVvPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHBlcmZvcm1hbmNlJiZwZXJmb3JtYW5jZS5tZWFzdXJlP3BlcmZvcm1hbmNlLm1lYXN1cmUoYSxiKXx8bnVsbDpudWxsfSwKWG89ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7ZC5zcGxpY2UoMCwyKTtkPSJsIithLnRvU3RyaW5nKDE2KSsiaSIrYi50b1N0cmluZygxNikrKGQubGVuZ3RoPyItIitkLmpvaW4oIl8iKToiIik7Vm8/Vm8ucHVzaChkKTpXbyhkKX0sJG89ZnVuY3Rpb24oKXt2YXIgYT1Zb3x8KFlvPVpvKCdbbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLCIoZnVuY3Rpb24oKXtcJ3VzZSBzdHJpY3RcJzt2YXIgZlxcdTAwM2R0eXBlb2YgT2JqZWN0LmRlZmluZVByb3BlcnRpZXNcXHUwMDNkXFx1MDAzZFxcImZ1bmN0aW9uXFwiP09iamVjdC5kZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbihhLGMsYil7aWYoYVxcdTAwM2RcXHUwMDNkQXJyYXkucHJvdG90eXBlfHxhXFx1MDAzZFxcdTAwM2RPYmplY3QucHJvdG90eXBlKXJldHVybiBhO2FbY11cXHUwMDNkYi52YWx1ZTtyZXR1cm4gYX07ZnVuY3Rpb24gZyhhKXthXFx1MDAzZFtcXCJvYmplY3RcXCJcXHUwMDNkXFx1MDAzZHR5cGVvZiBnbG9iYWxUaGlzXFx1MDAyNlxcdTAwMjZnbG9iYWxUaGlzLGEsXFwib2JqZWN0XFwiXFx1MDAzZFxcdTAwM2R0eXBlb2Ygd2luZG93XFx1MDAyNlxcdTAwMjZ3aW5kb3csXFwib2JqZWN0XFwiXFx1MDAzZFxcdTAwM2R0eXBlb2Ygc2VsZlxcdTAwMjZcXHUwMDI2c2VsZixcXCJvYmplY3RcXCJcXHUwMDNkXFx1MDAzZHR5cGVvZiBnbG9iYWxcXHUwMDI2XFx1MDAyNmdsb2JhbF07Zm9yKHZhciBjXFx1MDAzZDA7Y1xcdTAwM2NhLmxlbmd0aDsrK2Mpe3ZhciBiXFx1MDAzZGFbY107aWYoYlxcdTAwMjZcXHUwMDI2Yi5NYXRoXFx1MDAzZFxcdTAwM2RNYXRoKXJldHVybiBifXRocm93IEVycm9yKFxcIkNhbm5vdCBmaW5kIGdsb2JhbCBvYmplY3RcXCIpO312YXIgaFxcdTAwM2RnKHRoaXMpO1xcbmZ1bmN0aW9uIGsoYSxjKXtpZihjKWE6e3ZhciBiXFx1MDAzZGg7YVxcdTAwM2RhLnNwbGl0KFxcIi5cXCIpO2Zvcih2YXIgZFxcdTAwM2QwO2RcXHUwMDNjYS5sZW5ndGgtMTtkKyspe3ZhciBlXFx1MDAzZGFbZF07aWYoIShlIGluIGIpKWJyZWFrIGE7YlxcdTAwM2RiW2VdfWFcXHUwMDNkYVthLmxlbmd0aC0xXTtkXFx1MDAzZGJbYV07Y1xcdTAwM2RjKGQpO2MhXFx1MDAzZGRcXHUwMDI2XFx1MDAyNmMhXFx1MDAzZG51bGxcXHUwMDI2XFx1MDAyNmYoYixhLHtjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Y30pfX1rKFxcImdsb2JhbFRoaXNcXCIsZnVuY3Rpb24oYSl7cmV0dXJuIGF8fGh9KTsvKlxcblxcbiBDb3B5cmlnaHQgR29vZ2xlIExMQ1xcbiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxcbiovXFxudmFyIGxcXHUwMDNkZ2xvYmFsVGhpcy50cnVzdGVkVHlwZXMsbTtmdW5jdGlvbiBuKCl7dmFyIGFcXHUwMDNkbnVsbDtpZighbClyZXR1cm4gYTt0cnl7dmFyIGNcXHUwMDNkZnVuY3Rpb24oYil7cmV0dXJuIGJ9O2FcXHUwMDNkbC5jcmVhdGVQb2xpY3koXFwiZ29vZyNodG1sXFwiLHtjcmVhdGVIVE1MOmMsY3JlYXRlU2NyaXB0OmMsY3JlYXRlU2NyaXB0VVJMOmN9KX1jYXRjaChiKXt9cmV0dXJuIGF9O2Z1bmN0aW9uIHAoYSl7dGhpcy5nXFx1MDAzZGF9cC5wcm90b3R5cGUudG9TdHJpbmdcXHUwMDNkZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nK1xcIlxcIn07ZnVuY3Rpb24gcShhKXttXFx1MDAzZFxcdTAwM2RcXHUwMDNkdm9pZCAwXFx1MDAyNlxcdTAwMjYobVxcdTAwM2RuKCkpO2FcXHUwMDNkbT9tLmNyZWF0ZVNjcmlwdFVSTChhKTphO3JldHVybiBuZXcgcChhKX07aWYoIWZ1bmN0aW9uKCl7aWYoc2VsZi5vcmlnaW4pcmV0dXJuIHNlbGYub3JpZ2luXFx1MDAzZFxcdTAwM2RcXHUwMDNkXFwibnVsbFxcIjtpZihsb2NhdGlvbi5ob3N0IVxcdTAwM2RcXHUwMDNkXFwiXFwiKXJldHVybiExO3RyeXtyZXR1cm4gd2luZG93LnBhcmVudC5lc2NhcGUoXFwiXFwiKSwhMX1jYXRjaChhKXtyZXR1cm4hMH19KCkpdGhyb3cgRXJyb3IoXFwic2FuZGJveGluZyBlcnJvclxcIik7XFxud2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXFwibWVzc2FnZVxcIixmdW5jdGlvbihhKXt2YXIgY1xcdTAwM2RhLnBvcnRzWzBdO2FcXHUwMDNkYS5kYXRhO3ZhciBiXFx1MDAzZGEuY2FsbGJhY2tOYW1lLnNwbGl0KFxcIi5cXCIpLGRcXHUwMDNkd2luZG93O2JbMF1cXHUwMDNkXFx1MDAzZFxcdTAwM2RcXCJ3aW5kb3dcXCJcXHUwMDI2XFx1MDAyNmIuc2hpZnQoKTtmb3IodmFyIGVcXHUwMDNkMDtlXFx1MDAzY2IubGVuZ3RoLTE7ZSsrKWRbYltlXV1cXHUwMDNke30sZFxcdTAwM2RkW2JbZV1dO2RbYltiLmxlbmd0aC0xXV1cXHUwMDNkZnVuY3Rpb24ocil7Yy5wb3N0TWVzc2FnZShKU09OLnN0cmluZ2lmeShyKSl9O2JcXHUwMDNkZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcXCJzY3JpcHRcXCIpO2FcXHUwMDNkcShhLnVybCk7aWYoYSBpbnN0YW5jZW9mIHApYVxcdTAwM2RhLmc7ZWxzZSB0aHJvdyBFcnJvcihcXCJcXCIpO2Iuc3JjXFx1MDAzZGE7ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChiKX0sITApO30pLmNhbGwodGhpcyk7XFxuIl0nKSk7CmlmKCFhKXJldHVybiBudWxsO2E9Xy5aaShfLnJqKGEsNix2b2lkIDAsXy5taykpO3ZhciBiO2E9PT1udWxsfHxhPT09dm9pZCAwP2I9bnVsbDpiPV8uUmEoYSk7cmV0dXJuIGJ9LGFwPWZ1bmN0aW9uKGEpe3ZhciBiPXt9O2E9Xy56KGEpO2Zvcih2YXIgYz1hLm5leHQoKTshYy5kb25lO2M9YS5uZXh0KCkpYz1jLnZhbHVlLGJbYy5sYW5ndWFnZV09Yy5uYW1lO3JldHVybiBifSxicD1mdW5jdGlvbihhKXtPLmNhbGwodGhpcyk7YT1hfHx7fTt0aGlzLmlkPWEuaWR8fHRoaXMuWWEoKTt0aGlzLkNmPWEuQ2Z8fCIiO3RoaXMubWU9YS5tZXx8bnVsbDt0aGlzLm5lPWEubmV8fG51bGw7dGhpcy5kZj1hLmRmfHwhMTt0aGlzLmNsYXNzTmFtZT1hLmNsYXNzTmFtZXx8bnVsbDt0aGlzLmw9bnVsbH0sY3A9ZnVuY3Rpb24oYSxiLGMsZCl7Xy51ZC5jYWxsKHRoaXMsZCk7dGhpcy50eXBlPSJrZXkiO3RoaXMua2V5Q29kZT1hO3RoaXMuY2hhckNvZGU9Yjt0aGlzLnJlcGVhdD1jfSxkcD1mdW5jdGlvbigpe30sCmVwPWZ1bmN0aW9uKCl7fSxmcD1mdW5jdGlvbihhLGIsYyl7Xy53LmNhbGwodGhpcyk7dGhpcy5oPWE7dGhpcy5sPWJ8fDA7dGhpcy5qPWM7dGhpcy5nPSgwLF8uQykodGhpcy50aSx0aGlzKX0sZ3A9ZnVuY3Rpb24oYSl7YT1hLmNsYXNzTmFtZTtyZXR1cm4gdHlwZW9mIGE9PT0ic3RyaW5nIiYmYS5tYXRjaCgvXFMrL2cpfHxbXX0saXA9ZnVuY3Rpb24oYSxiKXt2YXIgYz1ncChhKSxkPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSxlPWMubGVuZ3RoK2QubGVuZ3RoO2hwKGMsZCk7YS5jbGFzc05hbWU9Yy5qb2luKCIgIik7cmV0dXJuIGMubGVuZ3RoPT1lfSxrcD1mdW5jdGlvbihhLGIpe3ZhciBjPWdwKGEpLGQ9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpLGU9anAoYyxkKTthLmNsYXNzTmFtZT1lLmpvaW4oIiAiKTtyZXR1cm4gZS5sZW5ndGg9PWMubGVuZ3RoLWQubGVuZ3RofSxocD1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0wO2M8CmIubGVuZ3RoO2MrKylfLnVhKGEsYltjXSl8fGEucHVzaChiW2NdKX0sanA9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5maWx0ZXIoZnVuY3Rpb24oYyl7cmV0dXJuIV8udWEoYixjKX0pfSxscD1mdW5jdGlvbihhLGIpe3JldHVybiBfLnVhKGdwKGEpLGIpfSxtcD1mdW5jdGlvbihhLGIsYyl7Yz9pcChhLGIpOmtwKGEsYil9LHJwPWZ1bmN0aW9uKGEpe3JldHVybiBucChuZXcgb3AsdG8oYSwxLHZvaWQgMD09PV8uS2k/Mjo0KS5tYXAoZnVuY3Rpb24oYixjKXt2YXIgZD1uZXcgcHA7Yj1xcChkLDEsYik7aWYodG8oYSwyLHZvaWQgMD09PV8uS2k/Mjo0KS5sZW5ndGg+Yyl7ZD10byhhLDIsMywhMCk7aWYodHlwZW9mIGMhPT0ibnVtYmVyInx8YzwwfHxjPj1kLmxlbmd0aCl0aHJvdyBFcnJvcigpO3FwKGIsMyxkW2NdKX1yZXR1cm4gYn0pKX0sc3A9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IHBwO2I9cXAoYiwxLGFbMF0pO2EubGVuZ3RoPT09MyYmcXAoYiwzLGFbMl0pO3JldHVybiBifSx0cD0KZnVuY3Rpb24oYSl7cmV0dXJuIF8uR2ooYSxwcCwxKS5tYXAoZnVuY3Rpb24oYil7cmV0dXJuIF8uSmooYiwzKT9bXy5KaihiLDEpLDIwMCxfLkpqKGIsMyldOltfLkpqKGIsMSksMjAwXX0pfSx1cD1mdW5jdGlvbihhKXt2YXIgYj1fLmZiKCksYz1iLmcsZD1iLmNyZWF0ZUVsZW1lbnQoIlNUWUxFIiksZT1fLlBhKCJzdHlsZSIsYyk7ZSYmZC5zZXRBdHRyaWJ1dGUoIm5vbmNlIixlKTtkLnR5cGU9InRleHQvY3NzIjtiPWIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIkhFQUQiKVswXTtkLnN0eWxlU2hlZXQ/ZC5zdHlsZVNoZWV0LmNzc1RleHQ9YTpkLmFwcGVuZENoaWxkKGMuY3JlYXRlVGV4dE5vZGUoYSkpO2IuYXBwZW5kQ2hpbGQoZCk7cmV0dXJuIGR9LHZwPWZ1bmN0aW9uKGEsYil7dGhpcy54PWEhPT12b2lkIDA/YTowO3RoaXMueT1iIT09dm9pZCAwP2I6MH0sUHAsUXAsUnAsVHAsVXAsVnAsV3AsWHAsWXAsWnAsJHAsYXEsYnEsY3E7Xy5sPXZwLnByb3RvdHlwZTsKXy5sLmVxdWFscz1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIHZwJiYodGhpcz09YT8hMDp0aGlzJiZhP3RoaXMueD09YS54JiZ0aGlzLnk9PWEueTohMSl9O18ubC5jZWlsPWZ1bmN0aW9uKCl7dGhpcy54PU1hdGguY2VpbCh0aGlzLngpO3RoaXMueT1NYXRoLmNlaWwodGhpcy55KTtyZXR1cm4gdGhpc307Xy5sLmZsb29yPWZ1bmN0aW9uKCl7dGhpcy54PU1hdGguZmxvb3IodGhpcy54KTt0aGlzLnk9TWF0aC5mbG9vcih0aGlzLnkpO3JldHVybiB0aGlzfTtfLmwucm91bmQ9ZnVuY3Rpb24oKXt0aGlzLng9TWF0aC5yb3VuZCh0aGlzLngpO3RoaXMueT1NYXRoLnJvdW5kKHRoaXMueSk7cmV0dXJuIHRoaXN9O18ubC50cmFuc2xhdGU9ZnVuY3Rpb24oYSxiKXthIGluc3RhbmNlb2YgdnA/KHRoaXMueCs9YS54LHRoaXMueSs9YS55KToodGhpcy54Kz1OdW1iZXIoYSksdHlwZW9mIGI9PT0ibnVtYmVyIiYmKHRoaXMueSs9YikpO3JldHVybiB0aGlzfTsKdmFyIHdwPWZ1bmN0aW9uKGEpe3JldHVybiBuZXcgdnAoYS54LGEueSl9LHhwPVsiZGF0YToiLCJodHRwOiIsImh0dHBzOiIsIm1haWx0bzoiLCJmdHA6Il0seXA9ZnVuY3Rpb24oYSl7dmFyIGI9MTthPWEuc3BsaXQoIjoiKTtmb3IodmFyIGM9W107Yj4wJiZhLmxlbmd0aDspYy5wdXNoKGEuc2hpZnQoKSksYi0tO2EubGVuZ3RoJiZjLnB1c2goYS5qb2luKCI6IikpO3JldHVybiBjfSx6cD1mdW5jdGlvbihhLGIsYyl7Yz1hLmcuZ2V0KGMpO3JldHVybihjPT1udWxsPzA6Yy5oYXMoYikpP2MuZ2V0KGIpOmEubC5oYXMoYik/e0NhOjF9OihjPWEuby5nZXQoYikpP2M6YS5oJiZbXS5jb25jYXQoXy5KYihhLmgpKS5zb21lKGZ1bmN0aW9uKGQpe3JldHVybiBiLmluZGV4T2YoZCk9PT0wfSk/e0NhOjF9OntDYTowfX0sQXA9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPUpuKGIpO2M9Yy5jcmVhdGVFbGVtZW50KGQpO2I9Yi5hdHRyaWJ1dGVzO2Zvcih2YXIgZT1fLnooYiksZj1lLm5leHQoKTshZi5kb25lO2Y9CmUubmV4dCgpKXt2YXIgZz1mLnZhbHVlO2Y9Zy5uYW1lO2c9Zy52YWx1ZTt2YXIgaD16cChhLmcsZixkKSxrO2E6e2lmKGs9aC5jb25kaXRpb25zKXtrPV8ueihrKTtmb3IodmFyIG09ay5uZXh0KCk7IW0uZG9uZTttPWsubmV4dCgpKXt2YXIgbj1fLnoobS52YWx1ZSk7bT1uLm5leHQoKS52YWx1ZTtuPW4ubmV4dCgpLnZhbHVlO3ZhciBwPXZvaWQgMDtpZigobT0ocD1iLmdldE5hbWVkSXRlbShtKSk9PW51bGw/dm9pZCAwOnAudmFsdWUpJiYhbi5oYXMobSkpe2s9ITE7YnJlYWsgYX19fWs9ITB9aWYoaylzd2l0Y2goaC5DYSl7Y2FzZSAxOkxuKGMsZixnKTticmVhaztjYXNlIDI6dGhyb3cgRXJyb3IoKTtjYXNlIDM6TG4oYyxmLGcudG9Mb3dlckNhc2UoKSk7YnJlYWs7Y2FzZSA0OkxuKGMsZixnKTticmVhaztjYXNlIDU6TG4oYyxmLGcpO2JyZWFrO2Nhc2UgNjpMbihjLGYsZyk7YnJlYWs7Y2FzZSA3OmE6aWYoaD12b2lkIDAsaz1nLF8ucWMpe3RyeXtoPW5ldyBVUkwoayl9Y2F0Y2gocSl7aD0KImh0dHBzOiI7YnJlYWsgYX1oPWgucHJvdG9jb2x9ZWxzZSBiOntoPWs7az1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7dHJ5e2suaHJlZj1ofWNhdGNoKHEpe2g9dm9pZCAwO2JyZWFrIGJ9aD1rLnByb3RvY29sO2g9aD09PSI6Inx8aD09PSIiPyJodHRwczoiOmh9Zz1oIT09dm9pZCAwJiZ4cC5pbmRleE9mKGgudG9Mb3dlckNhc2UoKSkhPT0tMT9nOiJhYm91dDppbnZhbGlkI3pDbG9zdXJleiI7TG4oYyxmLGcpfX1yZXR1cm4gY30sbW89ZnVuY3Rpb24oYSxiKXt2YXIgYz1fLmNkO2E9SW4oYSxiKTthPWRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIoYSw1LGZ1bmN0aW9uKGgpe2lmKGgubm9kZVR5cGU9PT0zKWg9MTtlbHNlIGlmKEtuKGgpKWlmKGg9Sm4oaCksaD09PW51bGwpaD0yO2Vsc2V7dmFyIGs9Yy5nO2g9aCE9PSJGT1JNIiYmKGsuai5oYXMoaCl8fGsuZy5oYXMoaCkpPzE6Mn1lbHNlIGg9MjtyZXR1cm4gaH0pO2Zvcih2YXIgZD1hLm5leHROb2RlKCksZT1iLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSwKZj1lO2QhPT1udWxsOyl7dmFyIGc9dm9pZCAwO2lmKGQubm9kZVR5cGU9PT0zKWc9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZC5kYXRhKTtlbHNlIGlmKEtuKGQpKWc9QXAoYyxkLGIpO2Vsc2UgdGhyb3cgRXJyb3IoInUiKTtmLmFwcGVuZENoaWxkKGcpO2lmKGQ9YS5maXJzdENoaWxkKCkpZj1nO2Vsc2UgZm9yKDshKGQ9YS5uZXh0U2libGluZygpKSYmKGQ9YS5wYXJlbnROb2RlKCkpOylmPWYucGFyZW50Tm9kZX1yZXR1cm4gZX0sQnA9ZnVuY3Rpb24oYSxiLGMsZCl7YT1kfHxhO3JldHVybihiPWImJmIhPSIqIj9TdHJpbmcoYikudG9VcHBlckNhc2UoKToiIil8fGM/YS5xdWVyeVNlbGVjdG9yQWxsKGIrKGM/Ii4iK2M6IiIpKTphLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIil9LENwPWZ1bmN0aW9uKGEsYil7dmFyIGM9Ynx8ZG9jdW1lbnQ7Yy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lP2E9Yy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGEpWzBdOihjPWRvY3VtZW50LGE9YT8oYnx8CmMpLnF1ZXJ5U2VsZWN0b3IoYT8iLiIrYToiIik6QnAoYywiKiIsYSxiKVswXXx8bnVsbCk7cmV0dXJuIGF8fG51bGx9LERwPWZ1bmN0aW9uKGEpe3JldHVybiBhLnNjcm9sbGluZ0VsZW1lbnQ/YS5zY3JvbGxpbmdFbGVtZW50Ol8uSWN8fGEuY29tcGF0TW9kZSE9IkNTUzFDb21wYXQiP2EuYm9keXx8YS5kb2N1bWVudEVsZW1lbnQ6YS5kb2N1bWVudEVsZW1lbnR9LEVwPWZ1bmN0aW9uKGEpe3ZhciBiPURwKGEpO2E9YS5kZWZhdWx0VmlldztyZXR1cm4gbmV3IHZwKGEucGFnZVhPZmZzZXR8fGIuc2Nyb2xsTGVmdCxhLnBhZ2VZT2Zmc2V0fHxiLnNjcm9sbFRvcCl9LEZwPWZ1bmN0aW9uKGEpe3ZhciBiPXt9O2E9KGEuZyYmKGEuZz9hLmcucmVhZHlTdGF0ZTowKT49Mj9hLmcuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCl8fCIiOiIiKS5zcGxpdCgiXHJcbiIpO2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKWlmKCEvXltcc1x4YTBdKiQvLnRlc3QoYVtjXSkpe3ZhciBkPXlwKGFbY10pLAplPWRbMF07ZD1kWzFdO2lmKHR5cGVvZiBkPT09InN0cmluZyIpe2Q9ZC50cmltKCk7dmFyIGY9YltlXXx8W107YltlXT1mO2YucHVzaChkKX19cmV0dXJuIEhuKGIsZnVuY3Rpb24oZyl7cmV0dXJuIGcuam9pbigiLCAiKX0pfSxHcD1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIF8uUWc/bmV3IF8uUWcoYSk6bmV3IF8uUWcoYSl9LEhwPVs0LDUsNl0sS289ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPUhwO2M9Xy5waihjKTthOnt2YXIgZT1jO18uZGooYSk7dmFyIGY9YS5ILGc9ZltfLkhdfDA7aWYoZT09bnVsbCl7dmFyIGg9Tm4oZik7aWYoT24oaCxmLGcsZCk9PT1iKWguc2V0KGQsMCk7ZWxzZSBicmVhayBhfWVsc2V7aD1ObihmKTt2YXIgaz1PbihoLGYsZyxkKTtrIT09YiYmKGsmJihnPV8uZmooZixnLGspKSxoLnNldChkLGIpKX1fLmZqKGYsZyxiLGUpfWMmJiFfLktoKGMpJiZfLmVqKGEuSCk7cmV0dXJuIGF9LFJvPWZ1bmN0aW9uKGEpe3RoaXMuSD1fLkkoYSl9OwpfLnkoUm8sXy5KKTtSby5wcm90b3R5cGUuZ2V0U2Vjb25kcz1mdW5jdGlvbigpe3JldHVybiBfLmttKHRoaXMsMSl9O1JvLnByb3RvdHlwZS5zZXRTZWNvbmRzPWZ1bmN0aW9uKGEpe3JldHVybiBfLm1qKHRoaXMsMSxfLk1sKGEpLCIwIil9O3ZhciBTbz1mdW5jdGlvbihhKXt0aGlzLkg9Xy5JKGEpfTtfLnkoU28sXy5KKTtTby5wcm90b3R5cGUuZ2V0U2Vjb25kcz1mdW5jdGlvbigpe3JldHVybiBfLmttKHRoaXMsMSl9O1NvLnByb3RvdHlwZS5zZXRTZWNvbmRzPWZ1bmN0aW9uKGEpe3JldHVybiBfLm1qKHRoaXMsMSxfLk1sKGEpLCIwIil9Owp2YXIgSXA9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IF8uS207cmV0dXJuIF8ubG0oYiwxMSxhKX0sQW89ZnVuY3Rpb24oKXt2YXIgYT1uZXcgXy5obigxODcxLCIwIik7YS5CPSJodHRwczovL3RyYW5zbGF0ZS5nb29nbGVhcGlzLmNvbS9lbGVtZW50L2xvZz9mb3JtYXQ9anNvbiZoYXNmYXN0PXRydWUiO3JldHVybiBhfSx5bz1mdW5jdGlvbihhKXthLmo9SnA7cmV0dXJuIGF9LHpvPWZ1bmN0aW9uKGEpe2EuZz1uZXcgXy53bTtyZXR1cm4gYX0sSm89ZnVuY3Rpb24oYSl7dGhpcy5IPV8uSShhKX07Xy55KEpvLF8uSik7dmFyIEtwPWZ1bmN0aW9uKGEpe3RoaXMuSD1fLkkoYSl9O18ueShLcCxfLkopO3ZhciBHbz1mdW5jdGlvbihhKXt0aGlzLkg9Xy5JKGEpfTtfLnkoR28sXy5KKTt2YXIgTHA9ZnVuY3Rpb24oYSl7dGhpcy5IPV8uSShhKX07Xy55KExwLF8uSik7dmFyIE1wPWZ1bmN0aW9uKGEpe3RoaXMuSD1fLkkoYSl9O18ueShNcCxfLkopOwp2YXIgTnA9ZnVuY3Rpb24oYSl7dGhpcy5IPV8uSShhKX07Xy55KE5wLF8uSik7dmFyIE9wPWZ1bmN0aW9uKGEpe3RoaXMuSD1fLkkoYSl9O18ueShPcCxfLkopO1BwPWZ1bmN0aW9uKGEpe18uZGooYSk7YT1hLkg7dmFyIGI9YVtfLkhdfDAsYz1fLmdqKGEsMTEyKSxkPXZvaWQgMD09PV8uTGksZT1fLldoKGMsT3AsIWQsYik7IWR8fGU/KGU9Xy5aaChlKSxjIT09ZSYmKGI9Xy5maihhLGIsMTEyLGUpLF8uZWooYSxiKSksYT1lKTphPXZvaWQgMDtyZXR1cm4gYX07UXA9ZnVuY3Rpb24oYSxiKXthLlghPT12b2lkIDA/YS5YLnB1c2goYik6YS5jb250ZW50Kz1iO3JldHVybiBhfTtScD1mdW5jdGlvbihhLGIpe2EuWCE9PXZvaWQgMD9hLlgucHVzaChiKTpiIGluc3RhbmNlb2YgXy55bj9iLmNvbnRlbnQhPT12b2lkIDA/YS5jb250ZW50Kz1iLmhhKCk6KGEuWD1bYS5jb250ZW50LGJdLGEuY29udGVudD12b2lkIDApOmEuY29udGVudCs9YjtyZXR1cm4gYX07ClRwPWZ1bmN0aW9uKGEsYil7Yj1TcChifHx7fSxhLmo/YS5qLmcoKTp7fSk7YS5oKG51bGwsYi5UYik7cmV0dXJuIGIuaigpfTtVcD1mdW5jdGlvbihhKXthLmJjPXZvaWQgMDthLkliPWZ1bmN0aW9uKCl7cmV0dXJuIGEuYmM/YS5iYzphLmJjPW5ldyBhfX07VnA9e307V3A9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IHZwKGEueC1iLngsYS55LWIueSl9O1hwPS8mL2c7WXA9LzwvZztacD0vPi9nOyRwPS8iL2c7YXE9LycvZzticT0vXHgwMC9nO2NxPS9bXHgwMCY8PiInXS87Xy5zaD1mdW5jdGlvbihhKXt0aGlzLmc9YX07Xy5zaC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nfTsKdmFyIGRxPWZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoL1x4YTB8WyBcdF0rL2csIiAiKX0sZXE9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvW1xzXHhhMF0rJC8sIiIpfSxmcT1mdW5jdGlvbihhKXtjcS50ZXN0KGEpJiYoYS5pbmRleE9mKCImIikhPS0xJiYoYT1hLnJlcGxhY2UoWHAsIiZhbXA7IikpLGEuaW5kZXhPZigiPCIpIT0tMSYmKGE9YS5yZXBsYWNlKFlwLCImbHQ7IikpLGEuaW5kZXhPZigiPiIpIT0tMSYmKGE9YS5yZXBsYWNlKFpwLCImZ3Q7IikpLGEuaW5kZXhPZignIicpIT0tMSYmKGE9YS5yZXBsYWNlKCRwLCImcXVvdDsiKSksYS5pbmRleE9mKCInIikhPS0xJiYoYT1hLnJlcGxhY2UoYXEsIiYjMzk7IikpLGEuaW5kZXhPZigiXHgwMCIpIT0tMSYmKGE9YS5yZXBsYWNlKGJxLCImIzA7IikpKTtyZXR1cm4gYX0sZ3E9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvJihbXjtdKyk7L2csZnVuY3Rpb24oYixjKXtzd2l0Y2goYyl7Y2FzZSAiYW1wIjpyZXR1cm4iJiI7CmNhc2UgImx0IjpyZXR1cm4iPCI7Y2FzZSAiZ3QiOnJldHVybiI+IjtjYXNlICJxdW90IjpyZXR1cm4nIic7ZGVmYXVsdDpyZXR1cm4gYy5jaGFyQXQoMCkhPSIjInx8KGM9TnVtYmVyKCIwIitjLnNsaWNlKDEpKSxpc05hTihjKSk/YjpTdHJpbmcuZnJvbUNoYXJDb2RlKGMpfX0pfSxocT0vJihbXjtcczwmXSspOz8vZyxpcT1mdW5jdGlvbihhKXt2YXIgYj17IiZhbXA7IjoiJiIsIiZsdDsiOiI8IiwiJmd0OyI6Ij4iLCImcXVvdDsiOiciJ307dmFyIGM9Xy51LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiBhLnJlcGxhY2UoaHEsZnVuY3Rpb24oZCxlKXt2YXIgZj1iW2RdO2lmKGYpcmV0dXJuIGY7ZS5jaGFyQXQoMCk9PSIjIiYmKGU9TnVtYmVyKCIwIitlLnNsaWNlKDEpKSxpc05hTihlKXx8KGY9U3RyaW5nLmZyb21DaGFyQ29kZShlKSkpO2Z8fChmPV8ubm4oZCsiICIpLGMubm9kZVR5cGU9PT0xJiZWbihjKSxjLmlubmVySFRNTD1fLkdsKGYpLGY9Yy5maXJzdENoaWxkLm5vZGVWYWx1ZS5zbGljZSgwLAotMSkpO3JldHVybiBiW2RdPWZ9KX0sanE9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW5kZXhPZigiJiIpIT0tMT8iZG9jdW1lbnQiaW4gXy51P2lxKGEpOmdxKGEpOmF9LGtxPWZ1bmN0aW9uKGEsYil7dHJ5e3JldHVybiBfLkRjKGFbYl0pLCEwfWNhdGNoKGMpe31yZXR1cm4hMX0sbXE9ZnVuY3Rpb24oYSl7dmFyIGI9bHE7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCI3LjAiKT9iWyI3LjAiXTpiWyI3LjAiXT1hKCI3LjAiKX0sbHE9e30sbnE9ZnVuY3Rpb24oKXtyZXR1cm4gbXEoZnVuY3Rpb24oKXtyZXR1cm4gVW4oXy5XYywiNy4wIik+PTB9KX0sYm89L15bYS16XVthLXpcZC1dKiQvaSxmbz0iQVBQTEVUIEJBU0UgRU1CRUQgSUZSQU1FIExJTksgTUFUSCBNRVRBIE9CSkVDVCBTQ1JJUFQgU1RZTEUgU1ZHIFRFTVBMQVRFIi5zcGxpdCgiICIpLGdvPSJBUkVBIEJSIENPTCBDT01NQU5EIEhSIElNRyBJTlBVVCBLRVlHRU4gUEFSQU0gU09VUkNFIFRSQUNLIFdCUiIuc3BsaXQoIiAiKSwKY289WyJhY3Rpb24iLCJmb3JtYWN0aW9uIiwiaHJlZiJdLG9xPWZ1bmN0aW9uKCl7dGhpcy5nPW5ldyBNYXB9O29xLnByb3RvdHlwZS5mb3JtYXQ9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcyxjPVluKCJfc2FmZXZhbHVlc19mb3JtYXRfbWFya2VyXzoiKS50b1N0cmluZygpO2E9WW4oYSkudG9TdHJpbmcoKS5yZXBsYWNlKG5ldyBSZWdFeHAoIlxceyIrYysiW1xcdyYjO10rXFx9IiwiZyIpLGZ1bmN0aW9uKGQpe3ZhciBlO2lmKGU9Yi5nLmdldChkKSl7ZD0iIjtzd2l0Y2goZS50eXBlKXtjYXNlICJodG1sIjpkPWUubmg7YnJlYWs7Y2FzZSAic3RhcnRUYWciOmQ9IjwiK2UudGFnTmFtZStlLmF0dHJpYnV0ZXMrIj4iO2JyZWFrO2Nhc2UgImVuZFRhZyI6ZD0iPC8iK2UudGFnTmFtZSsiPiJ9ZT1kfWVsc2UgZT1kO3JldHVybiBlfSk7cmV0dXJuIF8ubm4oYSl9O29xLnByb3RvdHlwZS50ZXh0PWZ1bmN0aW9uKGEpe3JldHVybiBwcSh0aGlzLHt0eXBlOiJodG1sIixuaDpZbihhKS50b1N0cmluZygpfSl9Owp2YXIgcHE9ZnVuY3Rpb24oYSxiKXt2YXIgYz0ie19zYWZldmFsdWVzX2Zvcm1hdF9tYXJrZXJfOiIrYS5nLnNpemUrIl8iK01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpKyJ9IjthLmcuc2V0KFluKGMpLnRvU3RyaW5nKCksYik7cmV0dXJuIGN9LHFxPWZ1bmN0aW9uKGEpe3JldHVybiBfLmZkKGRvY3VtZW50LGEpfSxycT1mdW5jdGlvbihhLGIpe3JldHVybihifHxkb2N1bWVudCkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoU3RyaW5nKGEpKX0sc3E9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBfLmxkKGRvY3VtZW50LGFyZ3VtZW50cyl9LHRxPWZ1bmN0aW9uKGEsYil7Yi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsYi5uZXh0U2libGluZyl9LHVxPWZ1bmN0aW9uKGEpe3JldHVybiBfLnphKGEpJiZhLm5vZGVUeXBlPT0xfSx2cT1mdW5jdGlvbihhKXtyZXR1cm4gYS5jb250ZW50RG9jdW1lbnR8fGEuY29udGVudFdpbmRvdy5kb2N1bWVudH0sd3E9CmZ1bmN0aW9uKGEpe3RyeXtyZXR1cm4gYS5jb250ZW50V2luZG93fHwoYS5jb250ZW50RG9jdW1lbnQ/Xy5oYihhLmNvbnRlbnREb2N1bWVudCk6bnVsbCl9Y2F0Y2goYil7fXJldHVybiBudWxsfSx4cT17U0NSSVBUOjEsU1RZTEU6MSxIRUFEOjEsSUZSQU1FOjEsT0JKRUNUOjF9LHlxPXtJTUc6IiAiLEJSOiJcbiJ9LHpxPWZ1bmN0aW9uKGEpe2E9YS50YWJJbmRleDtyZXR1cm4gdHlwZW9mIGE9PT0ibnVtYmVyIiYmYT49MCYmYTwzMjc2OH0sQXE9ZnVuY3Rpb24oYSxiKXtiP2EudGFiSW5kZXg9MDooYS50YWJJbmRleD0tMSxhLnJlbW92ZUF0dHJpYnV0ZSgidGFiSW5kZXgiKSl9LEJxPWZ1bmN0aW9uKGEsYixjKXtpZighKGEubm9kZU5hbWUgaW4geHEpKWlmKGEubm9kZVR5cGU9PTMpYz9iLnB1c2goU3RyaW5nKGEubm9kZVZhbHVlKS5yZXBsYWNlKC8oXHJcbnxccnxcbikvZywiIikpOmIucHVzaChhLm5vZGVWYWx1ZSk7ZWxzZSBpZihhLm5vZGVOYW1lIGluIHlxKWIucHVzaCh5cVthLm5vZGVOYW1lXSk7CmVsc2UgZm9yKGE9YS5maXJzdENoaWxkO2E7KUJxKGEsYixjKSxhPWEubmV4dFNpYmxpbmd9LENxPWZ1bmN0aW9uKGEpe3ZhciBiPVtdO0JxKGEsYiwhMCk7YT1iLmpvaW4oIiIpO2E9YS5yZXBsYWNlKC8gXHhBRCAvZywiICIpLnJlcGxhY2UoL1x4QUQvZywiIik7YT1hLnJlcGxhY2UoL1x1MjAwQi9nLCIiKTthPWEucmVwbGFjZSgvICsvZywiICIpO2EhPSIgIiYmKGE9YS5yZXBsYWNlKC9eXHMqLywiIikpO3JldHVybiBhfSxEcT1mdW5jdGlvbihhKXt2YXIgYj1bXTtCcShhLGIsITEpO3JldHVybiBiLmpvaW4oIiIpfSxFcT1mdW5jdGlvbihhLGIsYyl7dGhpcy5wcm9taXNlPWE7dGhpcy5yZXNvbHZlPWI7dGhpcy5yZWplY3Q9Y30sRnE9ZnVuY3Rpb24oKXt2YXIgYSxiLGM9bmV3IF8uaGUoZnVuY3Rpb24oZCxlKXthPWQ7Yj1lfSk7cmV0dXJuIG5ldyBFcShjLGEsYil9LEdxPWZ1bmN0aW9uKGEpe3ZhciBiPV8udGcoYSk7aWYodHlwZW9mIGI9PSJ1bmRlZmluZWQiKXRocm93IEVycm9yKCJJIik7CnZhciBjPW5ldyBfLkxnKG51bGwpO2E9Xy5zZyhhKTtmb3IodmFyIGQ9MDtkPGIubGVuZ3RoO2QrKyl7dmFyIGU9YltkXSxmPWFbZF07QXJyYXkuaXNBcnJheShmKT9fLk5nKGMsZSxmKTpjLmFkZChlLGYpfXJldHVybiBjfSxIcT17fSxJcT17fSxKcT17fSxLcT17fSxrbz17fSxybz17fSxxbyxMcT1mdW5jdGlvbihhLGIsYyl7YT1hLkg7cmV0dXJuIF8ubmooYSxhW18uSF18MCxiLGMpfHxiW18uVWhdfHwoYltfLlVoXT1fLlZoKGIpKX0scXA9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBfLm1qKGEsYixfLk5sKGMpLCIiKX0sTXE9ZnVuY3Rpb24oYSl7aWYoYSE9bnVsbClzd2l0Y2goYS5nZil7Y2FzZSAxOnJldHVybiAxO2Nhc2UgLTE6cmV0dXJuLTE7Y2FzZSAwOnJldHVybiAwfXJldHVybiBudWxsfSxOcT1mdW5jdGlvbihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIF8uc2Y/ISFhLmhhKCk6ISFhfSxPcT17fSxQcT0vPC9nLFFxPWZ1bmN0aW9uKGEsYil7YT1hLnJlcGxhY2UoLzxcLy9nLAoiPFxcLyIpLnJlcGxhY2UoL1xdXF0+L2csIl1dXFw+Iik7cmV0dXJuIGI/YS5yZXBsYWNlKC97L2csIiBcXHsiKS5yZXBsYWNlKC99L2csIiBcXH0iKS5yZXBsYWNlKC9cL1wqL2csIi8gKiIpLnJlcGxhY2UoL1xcJC8sIlxcICIpOmF9LFJxPWZ1bmN0aW9uKGEpe2E9U3RyaW5nKGEpO2Zvcih2YXIgYj1mdW5jdGlvbihkLGUsZil7Zm9yKHZhciBnPU1hdGgubWluKGUubGVuZ3RoLWYsZC5sZW5ndGgpLGg9MDtoPGc7aCsrKXt2YXIgaz1lW2YraF07aWYoZFtoXSE9PSgiQSI8PWsmJms8PSJaIj9rLnRvTG93ZXJDYXNlKCk6aykpcmV0dXJuITF9cmV0dXJuITB9LGM9MDsoYz1hLmluZGV4T2YoIjwiLGMpKSE9LTE7KXtpZihiKCJceDNjL3NjcmlwdCIsYSxjKXx8YigiXHgzYyEtLSIsYSxjKSlyZXR1cm4ielNveXoiO2MrPTF9cmV0dXJuIGF9LFNxPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEhPW51bGwmJmEuVGI9PT1ifSxUcT1mdW5jdGlvbihhKXtyZXR1cm4gU3EoYSxKcSk/YS5oYSgpOmEgaW5zdGFuY2VvZgpfLk1hP18uT2EoYSkudG9TdHJpbmcoKToiYWJvdXQ6aW52YWxpZCN6U295eiJ9LFZxPWZ1bmN0aW9uKCl7dmFyIGE7U3EoIiIsS3EpP2E9IiIuaGEoKTphPVVxLnRlc3QoIiIpPyIiOiJ6U295eiI7U3EoYSxLcSkmJihhPWEuaGEoKSk7cmV0dXJuKGEmJiFhLnN0YXJ0c1dpdGgoIiAiKT8iICI6IiIpK2F9LFdxPWZ1bmN0aW9uKGEpe3JldHVybiBTcShhLF8ucG4pP1FxKGEuaGEoKSwhMSk6YT09bnVsbD8iIjphIGluc3RhbmNlb2YgXy5xbj9RcShXbihhKSwhMSk6UXEoU3RyaW5nKGEpLCEwKX0sWHE9eyJceDAwIjoiJiMwOyIsIlx0IjoiJiM5OyIsIlxuIjoiJiMxMDsiLCJcdiI6IiYjMTE7IiwiXGYiOiImIzEyOyIsIlxyIjoiJiMxMzsiLCIgIjoiJiMzMjsiLCciJzoiJnF1b3Q7IiwiJiI6IiZhbXA7IiwiJyI6IiYjMzk7IiwiLSI6IiYjNDU7IiwiLyI6IiYjNDc7IiwiPCI6IiZsdDsiLCI9IjoiJiM2MTsiLCI+IjoiJmd0OyIsImAiOiImIzk2OyIsIlx1MDA4NSI6IiYjMTMzOyIsIlx1MDBhMCI6IiYjMTYwOyIsCiJcdTIwMjgiOiImIzgyMzI7IiwiXHUyMDI5IjoiJiM4MjMzOyJ9LFlxPWZ1bmN0aW9uKGEpe3JldHVybiBYcVthXX0sWnE9eyJceDAwIjoiXFx4MDAiLCJcYiI6IlxceDA4IiwiXHQiOiJcXHQiLCJcbiI6IlxcbiIsIlx2IjoiXFx4MGIiLCJcZiI6IlxcZiIsIlxyIjoiXFxyIiwnIic6IlxceDIyIiwkOiJcXHgyNCIsIiYiOiJcXHgyNiIsIiciOiJcXHgyNyIsIigiOiJcXHgyOCIsIikiOiJcXHgyOSIsIioiOiJcXHgyYSIsIisiOiJcXHgyYiIsIiwiOiJcXHgyYyIsIi0iOiJcXHgyZCIsIi4iOiJcXHgyZSIsIi8iOiJcXC8iLCI6IjoiXFx4M2EiLCI8IjoiXFx4M2MiLCI9IjoiXFx4M2QiLCI+IjoiXFx4M2UiLCI/IjoiXFx4M2YiLCJbIjoiXFx4NWIiLCJcXCI6IlxcXFwiLCJdIjoiXFx4NWQiLCJeIjoiXFx4NWUiLCJ7IjoiXFx4N2IiLCJ8IjoiXFx4N2MiLCJ9IjoiXFx4N2QiLCJcdTAwODUiOiJcXHg4NSIsIlx1MjAyOCI6IlxcdTIwMjgiLCJcdTIwMjkiOiJcXHUyMDI5In0sJHE9ZnVuY3Rpb24oYSl7cmV0dXJuIFpxW2FdfSwKYXI9eyJceDAwIjoiXFwwICIsIlxiIjoiXFw4ICIsIlx0IjoiXFw5ICIsIlxuIjoiXFxhICIsIlx2IjoiXFxiICIsIlxmIjoiXFxjICIsIlxyIjoiXFxkICIsJyInOiJcXDIyICIsIiYiOiJcXDI2ICIsIiciOiJcXDI3ICIsIigiOiJcXDI4ICIsIikiOiJcXDI5ICIsIioiOiJcXDJhICIsIi8iOiJcXDJmICIsIjoiOiJcXDNhICIsIjsiOiJcXDNiICIsIjwiOiJcXDNjICIsIj0iOiJcXDNkICIsIj4iOiJcXDNlICIsIkAiOiJcXDQwICIsIlxcIjoiXFw1YyAiLCJ7IjoiXFw3YiAiLCJ9IjoiXFw3ZCAiLCJcdTAwODUiOiJcXDg1ICIsIlx1MDBhMCI6IlxcYTAgIiwiXHUyMDI4IjoiXFwyMDI4ICIsIlx1MjAyOSI6IlxcMjAyOSAifSxicj1mdW5jdGlvbihhKXtyZXR1cm4gYXJbYV19LGNyPXsiXHgwMCI6IiUwMCIsIlx1MDAwMSI6IiUwMSIsIlx1MDAwMiI6IiUwMiIsIlx1MDAwMyI6IiUwMyIsIlx1MDAwNCI6IiUwNCIsIlx1MDAwNSI6IiUwNSIsIlx1MDAwNiI6IiUwNiIsIlx1MDAwNyI6IiUwNyIsCiJcYiI6IiUwOCIsIlx0IjoiJTA5IiwiXG4iOiIlMEEiLCJcdiI6IiUwQiIsIlxmIjoiJTBDIiwiXHIiOiIlMEQiLCJcdTAwMGUiOiIlMEUiLCJcdTAwMGYiOiIlMEYiLCJcdTAwMTAiOiIlMTAiLCJcdTAwMTEiOiIlMTEiLCJcdTAwMTIiOiIlMTIiLCJcdTAwMTMiOiIlMTMiLCJcdTAwMTQiOiIlMTQiLCJcdTAwMTUiOiIlMTUiLCJcdTAwMTYiOiIlMTYiLCJcdTAwMTciOiIlMTciLCJcdTAwMTgiOiIlMTgiLCJcdTAwMTkiOiIlMTkiLCJcdTAwMWEiOiIlMUEiLCJcdTAwMWIiOiIlMUIiLCJcdTAwMWMiOiIlMUMiLCJcdTAwMWQiOiIlMUQiLCJcdTAwMWUiOiIlMUUiLCJcdTAwMWYiOiIlMUYiLCIgIjoiJTIwIiwnIic6IiUyMiIsIiciOiIlMjciLCIoIjoiJTI4IiwiKSI6IiUyOSIsIjwiOiIlM0MiLCI+IjoiJTNFIiwiXFwiOiIlNUMiLCJ7IjoiJTdCIiwifSI6IiU3RCIsIlx1MDA3ZiI6IiU3RiIsIlx1MDA4NSI6IiVDMiU4NSIsIlx1MDBhMCI6IiVDMiVBMCIsIlx1MjAyOCI6IiVFMiU4MCVBOCIsCiJcdTIwMjkiOiIlRTIlODAlQTkiLCJcdWZmMDEiOiIlRUYlQkMlODEiLCJcdWZmMDMiOiIlRUYlQkMlODMiLCJcdWZmMDQiOiIlRUYlQkMlODQiLCJcdWZmMDYiOiIlRUYlQkMlODYiLCJcdWZmMDciOiIlRUYlQkMlODciLCJcdWZmMDgiOiIlRUYlQkMlODgiLCJcdWZmMDkiOiIlRUYlQkMlODkiLCJcdWZmMGEiOiIlRUYlQkMlOEEiLCJcdWZmMGIiOiIlRUYlQkMlOEIiLCJcdWZmMGMiOiIlRUYlQkMlOEMiLCJcdWZmMGYiOiIlRUYlQkMlOEYiLCJcdWZmMWEiOiIlRUYlQkMlOUEiLCJcdWZmMWIiOiIlRUYlQkMlOUIiLCJcdWZmMWQiOiIlRUYlQkMlOUQiLCJcdWZmMWYiOiIlRUYlQkMlOUYiLCJcdWZmMjAiOiIlRUYlQkMlQTAiLCJcdWZmM2IiOiIlRUYlQkMlQkIiLCJcdWZmM2QiOiIlRUYlQkMlQkQifSxkcj1mdW5jdGlvbihhKXtyZXR1cm4gY3JbYV19LGVyPS9bXHgwMFx4MjJceDI2XHgyN1x4M2NceDNlXS9nLGZyPWZ1bmN0aW9uKGEpe3JldHVybiBTcShhLF8ucm4pP2E6YSBpbnN0YW5jZW9mCl8ucmM/KDAsXy51bikoXy5HbChhKS50b1N0cmluZygpKTooMCxfLnVuKShTdHJpbmcoU3RyaW5nKGEpKS5yZXBsYWNlKGVyLFlxKSxNcShhKSl9LGdyPS9bXHgwMFx4MjJceDI3XHgzY1x4M2VdL2csaHI9ZnVuY3Rpb24oYSl7cmV0dXJuIHdvKFN0cmluZyhhKSxmdW5jdGlvbigpe3JldHVybiIifSkucmVwbGFjZShQcSwiJmx0OyIpfSxQPWZ1bmN0aW9uKGEpe1NxKGEsXy5ybik/KGE9aHIoYS5oYSgpKSxhPVN0cmluZyhhKS5yZXBsYWNlKGdyLFlxKSk6YT1TdHJpbmcoYSkucmVwbGFjZShlcixZcSk7cmV0dXJuIGF9LGlyPS9bXHgwMFx4MDktXHgwZCBceDIyXHgyNlx4MjdceDJkXC9ceDNjLVx4M2VgXHg4NVx4YTBcdTIwMjhcdTIwMjldL2csanI9L1tceDAwXHgwOS1ceDBkIFx4MjJceDI3XHgyZFwvXHgzYy1ceDNlYFx4ODVceGEwXHUyMDI4XHUyMDI5XS9nLGtyPS9bXHgwMFx4MDgtXHgwZFx4MjJceDI2XHgyN1wvXHgzYy1ceDNlXHg1Yi1ceDVkXHg3Ylx4N2RceDg1XHUyMDI4XHUyMDI5XS9nLApscj1mdW5jdGlvbihhKXtpZihhPT1udWxsKXJldHVybiIgbnVsbCAiO2lmKFNxKGEsSHEpKXJldHVybiBhLmhhKCk7aWYoYSBpbnN0YW5jZW9mIF8uUWEpcmV0dXJuIF8uU2EoYSkudG9TdHJpbmcoKTtzd2l0Y2godHlwZW9mIGEpe2Nhc2UgImJvb2xlYW4iOmNhc2UgIm51bWJlciI6cmV0dXJuIiAiK2ErIiAiO2RlZmF1bHQ6cmV0dXJuIiciK1N0cmluZyhTdHJpbmcoYSkpLnJlcGxhY2Uoa3IsJHEpKyInIn19LG1yPS9bXHgwMFx4MDgtXHgwZFx4MjJceDI2LVx4MmFcL1x4M2EtXHgzZUBcXFx4N2JceDdkXHg4NVx4YTBcdTIwMjhcdTIwMjldL2csbnI9L1tceDAwLSBceDIyXHgyNy1ceDI5XHgzY1x4M2VcXFx4N2JceDdkXHg3Zlx4ODVceGEwXHUyMDI4XHUyMDI5XHVmZjAxXHVmZjAzXHVmZjA0XHVmZjA2LVx1ZmYwY1x1ZmYwZlx1ZmYxYVx1ZmYxYlx1ZmYxZFx1ZmYxZlx1ZmYyMFx1ZmYzYlx1ZmYzZF0vZyxvcj1mdW5jdGlvbihhKXtyZXR1cm4gU3RyaW5nKGEpLnJlcGxhY2UobnIsCmRyKX0scHI9L14oPyFqYXZhc2NyaXB0OikoPzpbYS16MC05Ky4tXSs6fFteJjpcLz8jXSooPzpbXC8/I118JCkpL2kscXI9ZnVuY3Rpb24oYSl7U3EoYSxJcSl8fFNxKGEsSnEpP2E9U3RyaW5nKGEpLnJlcGxhY2UobnIsZHIpOl8udGgoYSk/YT1vcihfLnVoKGEpKTphIGluc3RhbmNlb2YgXy5NYT9hPW9yKF8uT2EoYSkudG9TdHJpbmcoKSk6KGE9U3RyaW5nKGEpLGE9cHIudGVzdChhKT9hLnJlcGxhY2UobnIsZHIpOiJhYm91dDppbnZhbGlkI3pTb3l6Iik7cmV0dXJuIGF9LHJyPS9eW14mOlwvPyNdKig/OltcLz8jXXwkKXxeaHR0cHM/OnxeZnRwOnxeZGF0YTppbWFnZVwvW2EtejAtOSstXSs7YmFzZTY0LFthLXowLTkrXC9dKz0qJHxeYmxvYjovaSxzcj1mdW5jdGlvbihhKXtTcShhLElxKXx8U3EoYSxKcSk/YT1TdHJpbmcoYSkucmVwbGFjZShucixkcik6Xy50aChhKT9hPW9yKF8udWgoYSkpOmEgaW5zdGFuY2VvZiBfLk1hP2E9b3IoXy5PYShhKS50b1N0cmluZygpKTooYT1TdHJpbmcoYSksCmE9cnIudGVzdChhKT9hLnJlcGxhY2UobnIsZHIpOiJhYm91dDppbnZhbGlkI3pTb3l6Iik7cmV0dXJuIGF9LFVxPS9eKD8hb258c3JjfCg/OmFjdGlvbnxhcmNoaXZlfGJhY2tncm91bmR8Y2l0ZXxjbGFzc2lkfGNvZGViYXNlfGNvbnRlbnR8ZGF0YXxkc3luY3xocmVmfGh0dHAtZXF1aXZ8bG9uZ2Rlc2N8c3R5bGV8dXNlbWFwKVxzKiQpKD86W2EtejAtOV8kOi1dKikkL2ksdHI9L15bYS16QS1aMC05K1wvXy1dKz17MCwyfSQvLHVyPWZ1bmN0aW9uKGEpe2E9U3RyaW5nKGEpO3JldHVybiB0ci50ZXN0KGEpP2E6InpTb3l6In07Xy5sPXhvLnByb3RvdHlwZTsKXy5sLmNvbnRhaW5zPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzJiZhP2EgaW5zdGFuY2VvZiB4bz9hLmxlZnQ+PXRoaXMubGVmdCYmYS5yaWdodDw9dGhpcy5yaWdodCYmYS50b3A+PXRoaXMudG9wJiZhLmJvdHRvbTw9dGhpcy5ib3R0b206YS54Pj10aGlzLmxlZnQmJmEueDw9dGhpcy5yaWdodCYmYS55Pj10aGlzLnRvcCYmYS55PD10aGlzLmJvdHRvbTohMX07Xy5sLmNlaWw9ZnVuY3Rpb24oKXt0aGlzLnRvcD1NYXRoLmNlaWwodGhpcy50b3ApO3RoaXMucmlnaHQ9TWF0aC5jZWlsKHRoaXMucmlnaHQpO3RoaXMuYm90dG9tPU1hdGguY2VpbCh0aGlzLmJvdHRvbSk7dGhpcy5sZWZ0PU1hdGguY2VpbCh0aGlzLmxlZnQpO3JldHVybiB0aGlzfTsKXy5sLmZsb29yPWZ1bmN0aW9uKCl7dGhpcy50b3A9TWF0aC5mbG9vcih0aGlzLnRvcCk7dGhpcy5yaWdodD1NYXRoLmZsb29yKHRoaXMucmlnaHQpO3RoaXMuYm90dG9tPU1hdGguZmxvb3IodGhpcy5ib3R0b20pO3RoaXMubGVmdD1NYXRoLmZsb29yKHRoaXMubGVmdCk7cmV0dXJuIHRoaXN9O18ubC5yb3VuZD1mdW5jdGlvbigpe3RoaXMudG9wPU1hdGgucm91bmQodGhpcy50b3ApO3RoaXMucmlnaHQ9TWF0aC5yb3VuZCh0aGlzLnJpZ2h0KTt0aGlzLmJvdHRvbT1NYXRoLnJvdW5kKHRoaXMuYm90dG9tKTt0aGlzLmxlZnQ9TWF0aC5yb3VuZCh0aGlzLmxlZnQpO3JldHVybiB0aGlzfTsKXy5sLnRyYW5zbGF0ZT1mdW5jdGlvbihhLGIpe2EgaW5zdGFuY2VvZiB2cD8odGhpcy5sZWZ0Kz1hLngsdGhpcy5yaWdodCs9YS54LHRoaXMudG9wKz1hLnksdGhpcy5ib3R0b20rPWEueSk6KHRoaXMubGVmdCs9YSx0aGlzLnJpZ2h0Kz1hLHR5cGVvZiBiPT09Im51bWJlciImJih0aGlzLnRvcCs9Yix0aGlzLmJvdHRvbSs9YikpO3JldHVybiB0aGlzfTt2YXIgdnI9ZnVuY3Rpb24oYSxiLGMsZCl7dGhpcy5sZWZ0PWE7dGhpcy50b3A9Yjt0aGlzLndpZHRoPWM7dGhpcy5oZWlnaHQ9ZH07Xy5sPXZyLnByb3RvdHlwZTsKXy5sLmNvbnRhaW5zPWZ1bmN0aW9uKGEpe3JldHVybiBhIGluc3RhbmNlb2YgdnA/YS54Pj10aGlzLmxlZnQmJmEueDw9dGhpcy5sZWZ0K3RoaXMud2lkdGgmJmEueT49dGhpcy50b3AmJmEueTw9dGhpcy50b3ArdGhpcy5oZWlnaHQ6dGhpcy5sZWZ0PD1hLmxlZnQmJnRoaXMubGVmdCt0aGlzLndpZHRoPj1hLmxlZnQrYS53aWR0aCYmdGhpcy50b3A8PWEudG9wJiZ0aGlzLnRvcCt0aGlzLmhlaWdodD49YS50b3ArYS5oZWlnaHR9O18ubC5jZWlsPWZ1bmN0aW9uKCl7dGhpcy5sZWZ0PU1hdGguY2VpbCh0aGlzLmxlZnQpO3RoaXMudG9wPU1hdGguY2VpbCh0aGlzLnRvcCk7dGhpcy53aWR0aD1NYXRoLmNlaWwodGhpcy53aWR0aCk7dGhpcy5oZWlnaHQ9TWF0aC5jZWlsKHRoaXMuaGVpZ2h0KTtyZXR1cm4gdGhpc307Cl8ubC5mbG9vcj1mdW5jdGlvbigpe3RoaXMubGVmdD1NYXRoLmZsb29yKHRoaXMubGVmdCk7dGhpcy50b3A9TWF0aC5mbG9vcih0aGlzLnRvcCk7dGhpcy53aWR0aD1NYXRoLmZsb29yKHRoaXMud2lkdGgpO3RoaXMuaGVpZ2h0PU1hdGguZmxvb3IodGhpcy5oZWlnaHQpO3JldHVybiB0aGlzfTtfLmwucm91bmQ9ZnVuY3Rpb24oKXt0aGlzLmxlZnQ9TWF0aC5yb3VuZCh0aGlzLmxlZnQpO3RoaXMudG9wPU1hdGgucm91bmQodGhpcy50b3ApO3RoaXMud2lkdGg9TWF0aC5yb3VuZCh0aGlzLndpZHRoKTt0aGlzLmhlaWdodD1NYXRoLnJvdW5kKHRoaXMuaGVpZ2h0KTtyZXR1cm4gdGhpc307Xy5sLnRyYW5zbGF0ZT1mdW5jdGlvbihhLGIpe2EgaW5zdGFuY2VvZiB2cD8odGhpcy5sZWZ0Kz1hLngsdGhpcy50b3ArPWEueSk6KHRoaXMubGVmdCs9YSx0eXBlb2YgYj09PSJudW1iZXIiJiYodGhpcy50b3ArPWIpKTtyZXR1cm4gdGhpc307CnZhciB3cj1mdW5jdGlvbihhLGIpe3ZhciBjPV8uZWQoYSk7cmV0dXJuIGMuZGVmYXVsdFZpZXcmJmMuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSYmKGE9Yy5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGEsbnVsbCkpP2FbYl18fGEuZ2V0UHJvcGVydHlWYWx1ZShiKXx8IiI6IiJ9LHhyPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHdyKGEsYil8fChhLmN1cnJlbnRTdHlsZT9hLmN1cnJlbnRTdHlsZVtiXTpudWxsKXx8YS5zdHlsZSYmYS5zdHlsZVtiXX0seXI9ZnVuY3Rpb24oYSl7dHlwZW9mIGE9PSJudW1iZXIiJiYoYSs9InB4Iik7cmV0dXJuIGF9LHpyPWZ1bmN0aW9uKGEsYil7aWYoYiBpbnN0YW5jZW9mIHZwKXt2YXIgYz1iLng7Yj1iLnl9ZWxzZSBjPWIsYj12b2lkIDA7YS5zdHlsZS5sZWZ0PXlyKGMpO2Euc3R5bGUudG9wPXlyKGIpfSxBcj1mdW5jdGlvbihhKXt0cnl7cmV0dXJuIGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9Y2F0Y2goYil7cmV0dXJue2xlZnQ6MCwKdG9wOjAscmlnaHQ6MCxib3R0b206MH19fSxCcj1mdW5jdGlvbihhKXt2YXIgYj1fLmVkKGEpLGM9eHIoYSwicG9zaXRpb24iKSxkPWM9PSJmaXhlZCJ8fGM9PSJhYnNvbHV0ZSI7Zm9yKGE9YS5wYXJlbnROb2RlO2EmJmEhPWI7YT1hLnBhcmVudE5vZGUpaWYoYS5ub2RlVHlwZT09MTEmJmEuaG9zdCYmKGE9YS5ob3N0KSxjPXhyKGEsInBvc2l0aW9uIiksZD1kJiZjPT0ic3RhdGljIiYmYSE9Yi5kb2N1bWVudEVsZW1lbnQmJmEhPWIuYm9keSwhZCYmKGEuc2Nyb2xsV2lkdGg+YS5jbGllbnRXaWR0aHx8YS5zY3JvbGxIZWlnaHQ+YS5jbGllbnRIZWlnaHR8fGM9PSJmaXhlZCJ8fGM9PSJhYnNvbHV0ZSJ8fGM9PSJyZWxhdGl2ZSIpKXJldHVybiBhO3JldHVybiBudWxsfSxDcj1mdW5jdGlvbihhKXt2YXIgYj1fLmVkKGEpLGM9bmV3IHZwKDAsMCk7aWYoYT09KGI/Xy5lZChiKTpkb2N1bWVudCkuZG9jdW1lbnRFbGVtZW50KXJldHVybiBjO2E9QXIoYSk7Yj1fLmZiKGIpO2I9RXAoYi5nKTsKYy54PWEubGVmdCtiLng7Yy55PWEudG9wK2IueTtyZXR1cm4gY30sRHI9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPW5ldyB4bygwLEluZmluaXR5LEluZmluaXR5LDApLGM9Xy5mYihhKSxkPWMuZy5ib2R5LGU9Yy5nLmRvY3VtZW50RWxlbWVudCxmPURwKGMuZyk7YT1CcihhKTspaWYoKCFfLkljfHxhLmNsaWVudEhlaWdodCE9MHx8YSE9ZCkmJmEhPWQmJmEhPWUmJnhyKGEsIm92ZXJmbG93IikhPSJ2aXNpYmxlIil7dmFyIGc9Q3IoYSksaD1uZXcgdnAoYS5jbGllbnRMZWZ0LGEuY2xpZW50VG9wKTtnLngrPWgueDtnLnkrPWgueTtiLnRvcD1NYXRoLm1heChiLnRvcCxnLnkpO2IucmlnaHQ9TWF0aC5taW4oYi5yaWdodCxnLngrYS5jbGllbnRXaWR0aCk7Yi5ib3R0b209TWF0aC5taW4oYi5ib3R0b20sZy55K2EuY2xpZW50SGVpZ2h0KTtiLmxlZnQ9TWF0aC5tYXgoYi5sZWZ0LGcueCl9ZD1mLnNjcm9sbExlZnQ7Zj1mLnNjcm9sbFRvcDtiLmxlZnQ9TWF0aC5tYXgoYi5sZWZ0LGQpO2IudG9wPQpNYXRoLm1heChiLnRvcCxmKTtjPV8uaWQoYy5nLmRlZmF1bHRWaWV3fHx3aW5kb3cpO2IucmlnaHQ9TWF0aC5taW4oYi5yaWdodCxkK2Mud2lkdGgpO2IuYm90dG9tPU1hdGgubWluKGIuYm90dG9tLGYrYy5oZWlnaHQpO3JldHVybiBiLnRvcD49MCYmYi5sZWZ0Pj0wJiZiLmJvdHRvbT5iLnRvcCYmYi5yaWdodD5iLmxlZnQ/YjpudWxsfSxFcj1mdW5jdGlvbihhLGIpe3ZhciBjPW5ldyB2cCgwLDApLGQ9Xy5oYihfLmVkKGEpKTtpZigha3EoZCwicGFyZW50IikpcmV0dXJuIGM7ZG97aWYoZD09Yil2YXIgZT1DcihhKTtlbHNlIGU9QXIoYSksZT1uZXcgdnAoZS5sZWZ0LGUudG9wKTtjLngrPWUueDtjLnkrPWUueX13aGlsZShkJiZkIT1iJiZkIT1kLnBhcmVudCYmKGE9ZC5mcmFtZUVsZW1lbnQpJiYoZD1kLnBhcmVudCkpO3JldHVybiBjfSxHcj1mdW5jdGlvbihhKXt2YXIgYj1GcjtpZih4cihhLCJkaXNwbGF5IikhPSJub25lIilyZXR1cm4gYihhKTt2YXIgYz1hLnN0eWxlLGQ9Yy5kaXNwbGF5LAplPWMudmlzaWJpbGl0eSxmPWMucG9zaXRpb247Yy52aXNpYmlsaXR5PSJoaWRkZW4iO2MucG9zaXRpb249ImFic29sdXRlIjtjLmRpc3BsYXk9ImlubGluZSI7YT1iKGEpO2MuZGlzcGxheT1kO2MucG9zaXRpb249ZjtjLnZpc2liaWxpdHk9ZTtyZXR1cm4gYX0sRnI9ZnVuY3Rpb24oYSl7dmFyIGI9YS5vZmZzZXRXaWR0aCxjPWEub2Zmc2V0SGVpZ2h0LGQ9Xy5JYyYmIWImJiFjO3JldHVybihiPT09dm9pZCAwfHxkKSYmYS5nZXRCb3VuZGluZ0NsaWVudFJlY3Q/KGE9QXIoYSksbmV3IF8ubGMoYS5yaWdodC1hLmxlZnQsYS5ib3R0b20tYS50b3ApKTpuZXcgXy5sYyhiLGMpfSxIcj1mdW5jdGlvbihhLGIpe2Euc3R5bGUuZGlzcGxheT1iPyIiOiJub25lIn0sSXI9ZnVuY3Rpb24oYSxiKXtiPV8uZmIoYik7dmFyIGM9QnAoYi5nLCJIRUFEIilbMF07aWYoIWMpe3ZhciBkPUJwKGIuZywiQk9EWSIpWzBdO2M9Yi5TKCJIRUFEIik7ZC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShjLGQpfWQ9CmIuUygiU1RZTEUiKTt2YXIgZT1fLlBhKCJzdHlsZSIsZG9jdW1lbnQpO2UmJmQuc2V0QXR0cmlidXRlKCJub25jZSIsZSk7YT1XbihhKTtfLnUudHJ1c3RlZFR5cGVzP18ucWQoZCxhKTpkLmlubmVySFRNTD1hO2IuYXBwZW5kQ2hpbGQoYyxkKX0sSnI9ZnVuY3Rpb24oYSl7cmV0dXJuInJ0bCI9PXhyKGEsImRpcmVjdGlvbiIpfSxLcj1mdW5jdGlvbihhKXtyZXR1cm4gbmV3IF8ubGMoYS5vZmZzZXRXaWR0aCxhLm9mZnNldEhlaWdodCl9LExyPWZ1bmN0aW9uKGEsYixjKXthPWEuc3R5bGU7Xy5IYz9hLk1vekJveFNpemluZz1jOl8uSWM/YS5XZWJraXRCb3hTaXppbmc9YzphLmJveFNpemluZz1jO2Eud2lkdGg9TWF0aC5tYXgoYi53aWR0aCwwKSsicHgiO2EuaGVpZ2h0PU1hdGgubWF4KGIuaGVpZ2h0LDApKyJweCJ9LE1yPWZ1bmN0aW9uKGEsYil7THIoYSxiLCJjb250ZW50LWJveCIpfSxOcj1mdW5jdGlvbihhKXt2YXIgYj13cihhLCJwYWRkaW5nTGVmdCIpLGM9d3IoYSwicGFkZGluZ1JpZ2h0IiksCmQ9d3IoYSwicGFkZGluZ1RvcCIpO2E9d3IoYSwicGFkZGluZ0JvdHRvbSIpO3JldHVybiBuZXcgeG8ocGFyc2VGbG9hdChkKSxwYXJzZUZsb2F0KGMpLHBhcnNlRmxvYXQoYSkscGFyc2VGbG9hdChiKSl9LE9yPWZ1bmN0aW9uKGEpe3ZhciBiPXdyKGEsImJvcmRlckxlZnRXaWR0aCIpLGM9d3IoYSwiYm9yZGVyUmlnaHRXaWR0aCIpLGQ9d3IoYSwiYm9yZGVyVG9wV2lkdGgiKTthPXdyKGEsImJvcmRlckJvdHRvbVdpZHRoIik7cmV0dXJuIG5ldyB4byhwYXJzZUZsb2F0KGQpLHBhcnNlRmxvYXQoYykscGFyc2VGbG9hdChhKSxwYXJzZUZsb2F0KGIpKX0sUHI9ZnVuY3Rpb24oYSl7dGhpcy5IPV8uSShhKX07Xy55KFByLF8uSik7dmFyIERvPWZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBQcjtyZXR1cm4gTW4oYiwzLGEsXy5KbCl9O3ZhciBRcj1mdW5jdGlvbihhKXt0aGlzLkg9Xy5JKGEpfTtfLnkoUXIsXy5KKTtRci5wcm90b3R5cGUuV2E9ZnVuY3Rpb24oKXtyZXR1cm4gXy5Kaih0aGlzLDIpfTtRci5wcm90b3R5cGUub2I9ZnVuY3Rpb24oYSl7cmV0dXJuIHFwKHRoaXMsMixhKX07UXIucHJvdG90eXBlLnJhPWZ1bmN0aW9uKCl7cmV0dXJuIF8uSmoodGhpcywzKX07UXIucHJvdG90eXBlLnVhPWZ1bmN0aW9uKGEpe3JldHVybiBxcCh0aGlzLDMsYSl9O3ZhciBScj1mdW5jdGlvbihhKXt0aGlzLkg9Xy5JKGEpfTtfLnkoUnIsXy5KKTt2YXIgU3I9ZnVuY3Rpb24oYSl7dGhpcy5IPV8uSShhKX07Xy55KFNyLF8uSik7dmFyIFRyPV8uT2woU3IpO3ZhciBVcj1mdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYX19LFZyPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTA7YzxiLmxlbmd0aC0yO2MrPTMpe3ZhciBkPWIuY2hhckF0KGMrMik7ZD1kPj0iYSI/ZC5jaGFyQ29kZUF0KDApLTg3Ok51bWJlcihkKTtkPWIuY2hhckF0KGMrMSk9PSIrIj9hPj4+ZDphPDxkO2E9Yi5jaGFyQXQoYyk9PSIrIj9hK2QmNDI5NDk2NzI5NTphXmR9cmV0dXJuIGF9LFhyPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1Xci5zcGxpdCgiLiIpLGM9TnVtYmVyKGJbMF0pfHwwLGQ9W10sZT0wLGY9MDtmPGEubGVuZ3RoO2YrKyl7dmFyIGc9YS5jaGFyQ29kZUF0KGYpO2c8MTI4P2RbZSsrXT1nOihnPDIwNDg/ZFtlKytdPWc+PjZ8MTkyOigoZyY2NDUxMik9PTU1Mjk2JiZmKzE8YS5sZW5ndGgmJihhLmNoYXJDb2RlQXQoZisxKSY2NDUxMik9PTU2MzIwPyhnPTY1NTM2KygoZyYxMDIzKTw8MTApKyhhLmNoYXJDb2RlQXQoKytmKSYxMDIzKSxkW2UrK109Cmc+PjE4fDI0MCxkW2UrK109Zz4+MTImNjN8MTI4KTpkW2UrK109Zz4+MTJ8MjI0LGRbZSsrXT1nPj42JjYzfDEyOCksZFtlKytdPWcmNjN8MTI4KX1hPWM7Zm9yKGU9MDtlPGQubGVuZ3RoO2UrKylhKz1kW2VdLGE9VnIoYSwiKy1hXis2Iik7YT1WcihhLCIrLTNeK2IrLWYiKTthXj1OdW1iZXIoYlsxXSl8fDA7YTwwJiYoYT0oYSYyMTQ3NDgzNjQ3KSsyMTQ3NDgzNjQ4KTtiPWElMUU2O3JldHVybiBiLnRvU3RyaW5nKCkrIi4iKyhiXmMpfSxZcj1mdW5jdGlvbigpe3ZhciBhPVVyKFN0cmluZy5mcm9tQ2hhckNvZGUoMTE2KSksYj1VcihTdHJpbmcuZnJvbUNoYXJDb2RlKDEwNykpO2E9W2EoKSxhKCldO2FbMV09YigpO3JldHVybiBhLmpvaW4oIiIpfTt2YXIgWnI9ZnVuY3Rpb24oYSl7dGhpcy5IPV8uSShhKX07Xy55KFpyLF8uSik7dmFyICRyPV8uT2woWnIpO3ZhciBhcz13aW5kb3cuZ29vZ2xlJiZnb29nbGUudHJhbnNsYXRlJiZnb29nbGUudHJhbnNsYXRlLl9jb25zdDthc3x8KGFzPXtfY2FjOiIiLF9jYW06IiIsX2NlZjoiIixfY2VzdDpuZXcgRGF0ZSxfY2VudjoiIixfY2psYzoiIixfY2w6IiIsX2NsbDoiIixfY3VjOiIiLF9jbmFkOiExLF9jbmFsOnt9LGduOiIiLF9wYWg6IiIsX3BhczoiIixfcGJpOiIiLF9wY2k6IiIsX3BoZjoiIixfcGxpOiIiLF9wbGxhOiIiLF9wbWk6IiIsX3BzOiIiLF9wdGE6IiIsX3B1aDoiIn0pOwp2YXIgSnA9d2luZG93Lmdvb2dsZSYmd2luZG93Lmdvb2dsZS50cmFuc2xhdGUmJndpbmRvdy5nb29nbGUudHJhbnNsYXRlLnZ8fCIiLGJzPWFzLl9jZW52fHwicHJvZCIsY3M9YXMuX2NsfHwiZW4iLGRzPWFzLl9jdWMsZXM9JHIoYXMuX2NlZiksZnM9YXMuX2NuYWQsZ3M9YXMuX2Nlc3QsaHM9YXMuX2NuYWx8fHt9LGlzPWFzLl9jYW09PSJsaWIiPzE6MCxqcz0oYXMuX2NhY3x8InRlIikrKGlzPT0xPyJfbGliIjoiIiksV3I9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBkfX12YXIgYj1TdHJpbmcuZnJvbUNoYXJDb2RlKDEwNyksYz1hKFN0cmluZy5mcm9tQ2hhckNvZGUoMTE2KSk7Yj1hKGIpO2M9W2MoKSxjKCldO2NbMV09YigpO3JldHVybiBhc1siX2MiK2Muam9pbihiKCkpXXx8IiJ9KCksa3M9YXMuX3BhaHx8IiIsbHM9YXMuX3Bhc3x8Imh0dHBzOi8vIixtcz1hcy5fcGJpfHwiIixucz1hcy5fcGNpfHwiIixvcz1hcy5fcGxsYXx8IiIsCnBzPWFzLl9wbGl8fCIiLHFzPWFzLl9wc3x8IiIscnM9YXMuX3B1aHx8IiIsc3M9Ii8vIitycysiL3RyYW5zbGF0ZV9zdWdnZXN0aW9uP2NsaWVudD0iK2pzLHRzPSIvLyIra3MrIi90cmFuc2xhdGVfdm90aW5nP2NsaWVudD0iK2pzLHVzPSJodHRwczovL3d3dy5nb29nbGUuY29tL3N1cHBvcnQvdHJhbnNsYXRlIisoY3M9PSJlbiI/IiI6IiNnb29ndHJhbnMvZW4vIitjcyk7dmFyIHZzPWZ1bmN0aW9uKGEsYil7dGhpcy5nPWE7dGhpcy5sPWJ9LENvPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBUeXBlRXJyb3IoIkVhYCIrYisiYCIrYS5nKyJgIithLmwrImAiK3R5cGVvZiBhLmwpfTt2cy5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmw7aWYoYT09bnVsbClhPW51bGw7ZWxzZSBpZih0eXBlb2YgYSE9PSJzdHJpbmciKXRocm93IENvKHRoaXMsInN0cmluZyIpO2lmKGE9PT1udWxsKXRocm93IEVycm9yKCJEYWAiK3RoaXMuZyk7cmV0dXJuIGF9Owp2YXIgQm89ZnVuY3Rpb24oKXt2YXIgYT1hPT09dm9pZCAwP3dpbmRvdzphO2E9YT09PXZvaWQgMD93aW5kb3c6YTthPWE9PT12b2lkIDA/d2luZG93OmE7YT1hLldJWl9nbG9iYWxfZGF0YTthPW5ldyB2cygieFd1dUdjIixhJiYieFd1dUdjImluIGE/YS54V3V1R2M6bnVsbCk7dmFyIGI9W10sYz13cyhhKTtyZXR1cm4gYz09PW51bGw/eHMoYSxiKTpjfSx3cz1mdW5jdGlvbihhKXt2YXIgYj1hLmw7aWYoYj09bnVsbClyZXR1cm4gbnVsbDtBcnJheS5pc0FycmF5KGIpfHwodHlwZW9mIGIhPT0ic3RyaW5nIj9iPVtiXTooYj1iLnRyaW0oKSxiPWI9PSIiP1tdOmIuc3BsaXQoIiwiKS5tYXAoZnVuY3Rpb24oYyl7cmV0dXJuIGMudHJpbSgpfSkpKTtyZXR1cm4geHMoYSxiKX0seHM9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmcrIlsiO3JldHVybiBBcnJheS5mcm9tKGIsZnVuY3Rpb24oZCxlKXtyZXR1cm4gbmV3IHZzKGMrZSsiXSIsZCl9KX07CnZzLnByb3RvdHlwZS5vYmplY3Q9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5sO2lmKGI9PW51bGwpe2lmKGE9PT12b2lkIDApdGhyb3cgRXJyb3IoIkRhYCIrdGhpcy5nKTtyZXR1cm4gYX1pZih0eXBlb2YgYj09PSJvYmplY3QiJiZiLmNvbnN0cnVjdG9yPT09T2JqZWN0KXthPXt9O3ZhciBjPXRoaXMuZysiLiIsZDtmb3IoZCBpbiBiKWFbZF09bmV3IHZzKGMrZCxiW2RdKTtyZXR1cm4gYX10aHJvdyBDbyh0aGlzLCJvYmplY3QiKTt9O3ZhciB5cz1mdW5jdGlvbigpe3ZhciBhO3RoaXMuZz1hPWE9PT12b2lkIDA/RW8oKTphfTt5cy5wcm90b3R5cGUubG9nPWZ1bmN0aW9uKGEpe18uYW4odGhpcy5nLGEpfTt2YXIgenM9bmV3IHlzO3ZhciBBcz1GbygiaW5pdGlhbGl6ZWQiKSxCcz1GbygiaW5pdGlhdGVkIiksQ3M9Rm8oInJlc3RvcmVkIiksRHM9Rm8oInBhZ2VfbG9hZF90b19pbml0aWFsaXplZCIpLEVzPUZvKCJpbml0aWFsaXphdGlvbl90b190cmFuc2xhdGlvbl90cmlnZ2VyZWQiKTt2YXIgRnM9ZnVuY3Rpb24oYSl7dmFyIGI9ImJjIjtpZihhLmJjJiZhLmhhc093blByb3BlcnR5KGIpKXJldHVybiBhLmJjO2I9bmV3IGE7cmV0dXJuIGEuYmM9Yn07LyoKCk1hdGgudXVpZC5qcyAodjEuNCkKaHR0cDovL3d3dy5icm9vZmEuY29tCm1haWx0bzpyb2JlcnRAYnJvb2ZhLmNvbQpDb3B5cmlnaHQgKGMpIDIwMTAgUm9iZXJ0IEtpZWZmZXIKRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCBHUEwgbGljZW5zZXMuCiovCnZhciBHcz0iMDEyMzQ1Njc4OUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiLnNwbGl0KCIiKTtmb3IodmFyIEhzLElzPUFycmF5KDM2KSxKcz0wLEtzLExzPTA7THM8MzY7THMrKylMcz09OHx8THM9PTEzfHxMcz09MTh8fExzPT0yMz9Jc1tMc109Ii0iOkxzPT0xND9Jc1tMc109IjQiOihKczw9MiYmKEpzPTMzNTU0NDMyK01hdGgucmFuZG9tKCkqMTY3NzcyMTZ8MCksS3M9SnMmMTUsSnM+Pj00LElzW0xzXT1Hc1tMcz09MTk/S3MmM3w4OktzXSk7SHM9SXMuam9pbigiIik7CnZhciBNcz1mdW5jdGlvbihhLGIsYyl7dGhpcy5nPWE9YT09PXZvaWQgMD9IczphO3RoaXMucWQ9Yj09PXZvaWQgMD8iIjpiO3RoaXMucmQ9Yz09PXZvaWQgMD8iIjpjfSxRcz1mdW5jdGlvbihhKXt2YXIgYj1OcyhhLDcpO09zKGEsYik7UHMoYiw3KX0sUnM9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLkxiPT09dm9pZCAwPzA6Yi5MYjt2YXIgZD1iLkloPT09dm9pZCAwPzA6Yi5JaDt2YXIgZT1iLmlpPT09dm9pZCAwPzA6Yi5paTt2YXIgZj1iLkhoPT09dm9pZCAwPzA6Yi5IaDtiPU5zKGEsOCk7T3MoYSxiKTthPW5ldyBNcDtjPV8ubG0oYSwxLGMpO2Q9Xy5sbShjLDMsZCk7ZT1fLmxtKGQsMixlKTtlPV8ubG0oZSw0LGYpO2Y9UHAoYik7Xy5NKGYsNixlKTtNYXRoLnJhbmRvbSgpPj0uMDA1fHwoYj1fLkxtKElwKDgpLF8uWGwoYikpLHpzLmxvZyhiKSl9LE5zPWZ1bmN0aW9uKGEsYil7dmFyIGM9bmV3IF8ubW47Yz1fLlVsKGMsNTAsY3MpO3ZhciBkPW5ldyBPcDtiPV8ubW0oZCwxLGIpOwpiPV8uVWwoYiwyLGpzKTthPV8uVWwoYiwzLGEuZyk7cmV0dXJuIF8uTShjLDExMixhKX0sUHM9ZnVuY3Rpb24oYSxiKXthPV8uTG0oSXAoYiksXy5YbChhKSk7enMubG9nKGEpfSxPcz1mdW5jdGlvbihhLGIpe2Iub2IoYS5xZCk7Yi51YShhLnJkKX07dmFyIFNzPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj17fSxjPTA7YzxhLmxlbmd0aDsrK2MpYlthW2NdXT0hMDtyZXR1cm4gYn0sVHM9ZnVuY3Rpb24oYSl7dGhpcy5oPWE/W2FdOltdO3RoaXMuZz1bMF07dGhpcy5qPSExfTtUcy5wcm90b3R5cGUucGFzc2VkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuan07VHMucHJvdG90eXBlLnJlZ2lzdGVyPWZ1bmN0aW9uKGEpe2lmKHRoaXMuailyZXR1cm4gYXx8ZnVuY3Rpb24oKXt9O3RoaXMuZy5wdXNoKDApO3ZhciBiPXRoaXMuZy5sZW5ndGgtMTtyZXR1cm4oMCxfLkMpKGZ1bmN0aW9uKCl7dGhpcy5nW2JdKys7YSYmYS5hcHBseShudWxsLGFyZ3VtZW50cyk7VXModGhpcyl9LHRoaXMpfTsKVHMucHJvdG90eXBlLmRlbGF5PWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmo/YTooMCxfLkMpKGZ1bmN0aW9uKCl7aWYodGhpcy5qKWEuYXBwbHkobnVsbCxhcmd1bWVudHMpO2Vsc2V7dmFyIGI9YXJndW1lbnRzO3RoaXMuaC5wdXNoKGZ1bmN0aW9uKCl7YS5hcHBseShudWxsLGIpfSl9fSx0aGlzKX07VHMucHJvdG90eXBlLmZpbmlzaD1mdW5jdGlvbigpe3RoaXMuZ1swXT0xO1VzKHRoaXMpfTsKdmFyIFVzPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0wO2I8YS5nLmxlbmd0aDsrK2IpaWYoYS5nW2JdPT0wKXJldHVybjthLmo9ITA7Zm9yKGI9MDtiPGEuaC5sZW5ndGg7KytiKXt2YXIgYz1hLmhbYl07YS5oW2JdPW51bGw7Yy5jYWxsKCl9YS5oPVtdO2EuZz1bXX0sVnM9ZnVuY3Rpb24oYSl7dGhpcy5qPWE7dGhpcy5oPXRoaXMuZz0hMX0sV3M9ZnVuY3Rpb24oYSxiKXtyZXR1cm4oMCxfLkMpKGZ1bmN0aW9uKCl7YiYmYi5hcHBseShudWxsLGFyZ3VtZW50cyk7dGhpcy5oP3RoaXMuZ3x8KHRoaXMuai5jYWxsKCksdGhpcy5nPSEwKTp0aGlzLmc9ITB9LGEpfTtWcy5wcm90b3R5cGUuZmluaXNoPWZ1bmN0aW9uKCl7dGhpcy5ofHwodGhpcy5oPSEwLHRoaXMuZyYmdGhpcy5qLmNhbGwoKSl9O3ZhciBYcz1mdW5jdGlvbihhLGIsYyl7dGhpcy5nPWI7dGhpcy5CPWE7dGhpcy5BPWN8fDA7dGhpcy5qPXRoaXMuaD0hMX0sWXM9ZnVuY3Rpb24oYSl7YS5ofHxhLm8oKX07ClhzLnByb3RvdHlwZS5vPWZ1bmN0aW9uKCl7KHRoaXMuaD0odGhpcy5qPSEhdGhpcy5CLmNhbGwoKSl8fC0tdGhpcy5BPD0wKT8odGhpcy5nLmNhbGwobnVsbCx0aGlzLmopLHRoaXMubD0wKTp0aGlzLmw9d2luZG93LnNldFRpbWVvdXQoKDAsXy5DKSh0aGlzLm8sdGhpcyksMzApfTtYcy5wcm90b3R5cGUuY2FuY2VsPWZ1bmN0aW9uKCl7dGhpcy5sJiZ3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMubCk7dGhpcy5oPSEwO3RoaXMuZy5jYWxsKG51bGwsdGhpcy5qKX07CnZhciBacz1mdW5jdGlvbihhLGIpe3JldHVybiBmdW5jdGlvbigpe2EuZGlzcGF0Y2hFdmVudChiKX19LCRzPWZ1bmN0aW9uKGEpe2E9Xy5vYyhhKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoIl8iLCItIik7aWYoYT09InpoLWNuIilyZXR1cm4iemgtQ04iO2lmKGE9PSJ6aC10dyIpcmV0dXJuInpoLVRXIjt2YXIgYj1hLmluZGV4T2YoIi0iKTthPWI+PTA/YS5zdWJzdHJpbmcoMCxiKTphO3JldHVybiBhPT0iemgiPyJ6aC1DTiI6YX0sYXQ9ZnVuY3Rpb24oYSl7dmFyIGI9W10sYztmb3IoYyBpbiBhKWlmKGFbY10hPT1PYmplY3QucHJvdG90eXBlW2NdKXt2YXIgZD1fLnRjKGMpO2lmKF8uVmIoYVtjXSk9PSJhcnJheSIpZm9yKHZhciBlPTA7ZTxhW2NdLmxlbmd0aDsrK2UpYi5wdXNoKGQrIj0iK18udGMoYVtjXVtlXSkpO2Vsc2UgYi5wdXNoKGQrIj0iK18udGMoYVtjXSkpfXJldHVybiBiLmpvaW4oIiYiKX0sV289ZnVuY3Rpb24oYSxiKXtiPWJ8fHt9O2IubmNhPWE7Yi5jbGllbnQ9anM7CkpwJiYoYi5sb2dsZD0idiIrSnApO3ZhciBjPW5ldyBJbWFnZTtjLnNyYz0iLy8iK3JzKyIvZ2VuMjA0PyIrYXQoYik7Yy5vbmxvYWQ9ZnVuY3Rpb24oKXtjLm9ubG9hZD1udWxsfX0sY3Q9ZnVuY3Rpb24oYSxiKXtpZigoXy5GY3x8Xy5FYykmJndpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSE9ZG9jdW1lbnQuZG9tYWluKXtidD1idD9idCsxOjE7dmFyIGM9ImYiK2J0KyJfIitfLmFjKCkudG9TdHJpbmcoMzYpO3dpbmRvd1tjXT1mdW5jdGlvbigpe3dpbmRvd1tjXT12b2lkIDA7YS5zcmM9IiMiO2ImJndpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YigpfSwwKX07YS5zcmM9ImphdmFzY3JpcHQ6dm9pZChkb2N1bWVudC53cml0ZShcIjxzY3JpcHQ+ZG9jdW1lbnQuZG9tYWluPSciK2RvY3VtZW50LmRvbWFpbisiJztwYXJlbnRbJyIrYysiJ10oKTtceDNjL3NjcmlwdD5cIikpIn1lbHNlIGImJmIoKX0sYnQsZHQ9ZnVuY3Rpb24oKXt2YXIgYT17fTt0cnl7Zm9yKHZhciBiIGluIE9iamVjdC5wcm90b3R5cGUpe3ZhciBjPQpPYmplY3QucHJvdG90eXBlW2JdO2RlbGV0ZSBPYmplY3QucHJvdG90eXBlW2JdO2FbYl09Y319Y2F0Y2goZCl7cmV0dXJue319cmV0dXJuIGF9LGV0PWZ1bmN0aW9uKGEpe2Zvcih2YXIgYiBpbiBhKU9iamVjdC5wcm90b3R5cGVbYl09YVtiXX0sZnQ9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiIGluIGEpaWYoYVtiXSE9PU9iamVjdC5wcm90b3R5cGVbYl0pcmV0dXJuITE7cmV0dXJuITB9LGd0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEhPSJhdXRvIiYmYSE9InpoLUNOIiYmYT09Yn0saHQ9ZnVuY3Rpb24oKXt2YXIgYT13aW5kb3cubG9jYXRpb24uaGFzaC5tYXRjaCgvZ29vZ2xlXC50cmFuc2xhdGVcLmVsZW1lbnRcLnNwPShbXiZdKykvKTtyZXR1cm4gYSYmYVsxXT9hWzFdOm51bGx9O3ZhciBWbz1udWxsLGp0PW51bGwsa3Q9ZnVuY3Rpb24oKXt9O2t0LnByb3RvdHlwZS5hdHRhY2g9ZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZCBpbiBjKWNbZF0hPT1PYmplY3QucHJvdG90eXBlW2RdJiYoYltkXT10eXBlb2YgY1tkXT09PSJmdW5jdGlvbiI/Y1tkXTpfLiRiKFhvLGEsTnVtYmVyKGNbZF0pKSl9O3ZhciBtdD1mdW5jdGlvbigpe1ZvJiZsdCgpO1ZvPVtdO2p0PV8uRih3aW5kb3csInBhZ2VoaWRlIixmdW5jdGlvbigpe2x0KCl9KX0sbHQ9ZnVuY3Rpb24oKXtqdCYmKF8uT2QoanQpLGp0PW51bGwpO1ZvJiZWby5sZW5ndGgmJldvKFZvLmpvaW4oIiIpKTtWbz1udWxsfSxudD1uZXcga3Q7dmFyIG90PWZ1bmN0aW9uKGEpe3RoaXMuSD1fLkkoYSl9O18ueShvdCxfLkopO3ZhciBabz1fLnFqKG90KTt2YXIgWW87dmFyIHB0PWZ1bmN0aW9uKGEpe3RoaXMudXJsPWE7dGhpcy50aW1lb3V0PS0xO3RoaXMuaj10aGlzLmg9ImNhbGxiYWNrIjt0aGlzLmc9dGhpcy5aYj1udWxsfSx0dD1mdW5jdGlvbihhLGIpe2I9Yj09PXZvaWQgMD97fTpiO2EuZz1GcSgpO3ZhciBjPW5ldyBfLlFnKGEudXJsKSxkPW5ldyBNYXA7YS5qJiZkLnNldChhLmosYS5oKTtjLmcuZXh0ZW5kKEdxKGIpLGQpO3F0KGEpLnRoZW4oZnVuY3Rpb24oKXtydChhLGMudG9TdHJpbmcoKSl9KS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIGEuZy5wcm9taXNlfSkudGhlbihmdW5jdGlvbigpe3N0KGEpfSxmdW5jdGlvbigpe3N0KGEpfSk7YS50aW1lb3V0PjAmJihhLmw9c2V0VGltZW91dChmdW5jdGlvbigpe2EuZy5yZWplY3QoIlRpbWVvdXQhIil9LGEudGltZW91dCkpO3JldHVybiBhLmcucHJvbWlzZX0scnQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz1uZXcgTWVzc2FnZUNoYW5uZWw7YS5aYi5jb250ZW50V2luZG93LnBvc3RNZXNzYWdlKHt1cmw6YiwKY2FsbGJhY2tOYW1lOmEuaH0sIioiLFtjLnBvcnQyXSk7Yy5wb3J0MS5vbm1lc3NhZ2U9ZnVuY3Rpb24oZCl7dmFyIGU9e307YS5sIT09dm9pZCAwJiYoY2xlYXJUaW1lb3V0KGEubCksYS5sPXZvaWQgMCk7ZC5kYXRhPT09dm9pZCAwJiZhLmcucmVqZWN0KCJDYWxsYmFjayBjYWxsZWQsIGJ1dCBubyBkYXRhIHJlY2VpdmVkIik7dHlwZW9mIGQuZGF0YSE9PSJzdHJpbmciJiZhLmcucmVqZWN0KCJFeHBsb2l0YXRpb24gYXR0ZW1wdCEgRGF0YSBpcyBub3QgYSBzdHJpbmchIik7dHJ5e2U9SlNPTi5wYXJzZShkLmRhdGEpfWNhdGNoKGYpe2EuZy5yZWplY3QoIkludmFsaWQgRGF0YSByZWNlaXZlZDogIitmLm1lc3NhZ2UpfWEuZy5yZXNvbHZlKGUpfX0scXQ9ZnVuY3Rpb24oYSl7dmFyIGI9RnEoKSxjPV8uamQoZG9jdW1lbnQsIklGUkFNRSIpO2lmKCFjLnNhbmRib3gpdGhyb3cgRXJyb3IoIkZhIik7Yy5zYW5kYm94LnZhbHVlPSJhbGxvdy1zY3JpcHRzIjtjLnN0eWxlLmRpc3BsYXk9CiJub25lIjthLlpiPWM7YT0kbygpO2E9YW8oW18ubm4oIjwhRE9DVFlQRSBodG1sPiIpLGhvKFpuKGEpKV0pO2Muc3JjZG9jPV8uR2woYSk7YT1QbigiZGF0YTp0ZXh0L2h0bWw7Y2hhcnNldD1VVEYtODtiYXNlNjQsIitidG9hKF8uR2woYSkudG9TdHJpbmcoKSkpO2Muc3JjPV8uT2EoYSkudG9TdHJpbmcoKTtjLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGZ1bmN0aW9uKCl7cmV0dXJuIGIucmVzb2x2ZShjKX0sITEpO2MuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLGZ1bmN0aW9uKGQpe2IucmVqZWN0KGQpfSwhMSk7ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmFwcGVuZENoaWxkKGMpO3JldHVybiBiLnByb21pc2V9LHN0PWZ1bmN0aW9uKGEpe2EuWmIhPT1udWxsJiYoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnJlbW92ZUNoaWxkKGEuWmIpLGEuWmI9bnVsbCl9O3ZhciB1dD1mdW5jdGlvbihhLGIpe18udy5jYWxsKHRoaXMpO3RoaXMuZz1uZXcgXy5RZyhhKTtpZihiKWZvcih2YXIgYyBpbiBiKWJbY10hPT1PYmplY3QucHJvdG90eXBlW2NdJiZ0aGlzLmcuZy5zZXQoYyxiW2NdKX07Xy55KHV0LF8udyk7dXQucHJvdG90eXBlLm1iPWZ1bmN0aW9uKCl7cmV0dXJuITB9O3V0LnByb3RvdHlwZS5sYj1mdW5jdGlvbigpe3JldHVybiB0aGlzLm1iKCl9O3V0LnByb3RvdHlwZS5zZW5kPWZ1bmN0aW9uKCl7cmV0dXJuIF8uQ24obnVsbCl9O3V0LnByb3RvdHlwZS5jYW5jZWw9ZnVuY3Rpb24oKXt9O3ZhciB2dD1mdW5jdGlvbihhLGIsYyl7dXQuY2FsbCh0aGlzLGEsYik7YT10aGlzLmg9bmV3IHB0KHRoaXMuZyk7YS5oPSJjYWxsYmFjayI7YS5qPWM9PT12b2lkIDA/ImNhbGxiYWNrIjpjfTtfLnkodnQsdXQpO3Z0LnByb3RvdHlwZS5tYj1mdW5jdGlvbigpe3JldHVybiEwfTsKdnQucHJvdG90eXBlLnNlbmQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHR0KHRoaXMuaCxhKX07dnQucHJvdG90eXBlLmNhbmNlbD1mdW5jdGlvbihhKXthLmNhbmNlbCgpfTt2YXIgd3Q9ZnVuY3Rpb24oYSxiKXt1dC5jYWxsKHRoaXMsYSxiKTt0aGlzLmg9e307dGhpcy5qPTB9O18ueSh3dCx1dCk7d3QucHJvdG90eXBlLm1iPWZ1bmN0aW9uKCl7cmV0dXJuITB9Owp3dC5wcm90b3R5cGUuc2VuZD1mdW5jdGlvbihhKXt2YXIgYj10aGlzLGM9ZHQoKSxkPSsrdGhpcy5qLGU9e30sZj17fTsicSJpbiBhJiYoZi5xPWEucSxkZWxldGUgYS5xKTtlLlU9bmV3IF8uUWY7dGhpcy5nLmouZW5kc1dpdGgoIi5jb3JwLmdvb2dsZS5jb20iKSYmKGUuVS5GPSEwKTt2YXIgZz1uZXcgXy5oZShmdW5jdGlvbihoLGspe18uRihlLlUsImNvbXBsZXRlIixmdW5jdGlvbigpe2lmKCFlLkZnKXtpZihfLllmKGUuVSkpe3ZhciBtPV8uJGYoZS5VKTt4dChiLGQpO3JldHVybiBoKG0pfWIuSWsoKTttPV8uJGYoZS5VKTt4dChiLGQpO3JldHVybiBrKG0pfX0pO18uRihlLlUsInRpbWVvdXQiLGZ1bmN0aW9uKCl7aWYoIWUuRmcpcmV0dXJuIGIuS2soKSx4dChiLGQpLGsoKX0pfSk7ZS5VLnNlbmQodGhpcy5nLnRvU3RyaW5nKCkrIiYiK2F0KGEpLCJQT1NUIixhdChmKSx7IkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCJ9KTt0aGlzLmhbZF09CmU7ZXQoYyk7cmV0dXJuIGd9O3d0LnByb3RvdHlwZS5jYW5jZWw9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5oW2FdO2ImJihiLkZnPSEwLHh0KHRoaXMsYSkpfTt2YXIgeHQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmhbYl07YyYmKGMuVSYmKGMuVS5kaXNwb3NlKCksYy5VPW51bGwpLGRlbGV0ZSBhLmhbYl0pfTt3dC5wcm90b3R5cGUuSz1mdW5jdGlvbigpe3V0LnByb3RvdHlwZS5LLmNhbGwodGhpcyk7Zm9yKHZhciBhIGluIHRoaXMuaCl0aGlzLmNhbmNlbChhKX07bnQuYXR0YWNoKDE3MTcwLHd0LnByb3RvdHlwZSx7S2s6MSxJazoyfSk7dmFyIHl0PWZ1bmN0aW9uKGEsYixjKXt1dC5jYWxsKHRoaXMsYSxjKTt0aGlzLmo9Yi5wcm94eUlzU3VwcG9ydGVkO3RoaXMubD1mdW5jdGlvbihkLGUsZil7cmV0dXJuIF8uQ24oYi5wcm94eVNlbmQoZCxlLGYpKX07dGhpcy5oPWIucHJveHlDYW5jZWx9O18ueSh5dCx1dCk7eXQucHJvdG90eXBlLm1iPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaigpfTsKeXQucHJvdG90eXBlLnNlbmQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5sKHRoaXMuZy50b1N0cmluZygpLGEsYil9O3l0LnByb3RvdHlwZS5jYW5jZWw9ZnVuY3Rpb24oYSl7dGhpcy5oKGEpfTt2YXIgenQ9ZnVuY3Rpb24oYSxiKXtfLncuY2FsbCh0aGlzKTt0aGlzLmg9YTt0aGlzLmc9Yj9iOm51bGx9O18ueSh6dCxfLncpO3p0LnByb3RvdHlwZS5LPWZ1bmN0aW9uKCl7Xy53LnByb3RvdHlwZS5LLmNhbGwodGhpcyl9O3ZhciBCdD1mdW5jdGlvbihhLGIsYyxkKXtfLncuY2FsbCh0aGlzKTt2YXIgZTtiP2U9e2NsaWVudDpifTplPXthbm5vOjMsY2xpZW50OmpzLGZvcm1hdDoiaHRtbCIsdjoiMS4wIn07YyYmKGUuc3A9Yyk7ZS5rZXk9YTtKcCYmKGUubG9nbGQ9InYiK0pwKTt0aGlzLmc9bnVsbDt0aGlzLmg9e0FoOjMwMH07YT10aGlzLm89bmV3IHp0KGUsZCk7Yj1scytvczt0aGlzLmw9YS5nP25ldyB5dChiLGEuZyx7Y2xpZW50OmpzfSk6bmV3IHZ0KGIse2NsaWVudDpqc30pO2E9dGhpcy5vO2lmKGEuZyl7aWYoIWEuZyl0aHJvdyBFcnJvcigiR2EiKTthPVt7emE6bmV3IHl0KGxzK2tzKyIvdHJhbnNsYXRlX2EvdCIsYS5nLGEuaCksRWY6MTkwMCxCaDo0Mjk0OTY3Mjk1LHpoOi0xLFhoOjAsaGY6ITF9XX1lbHNlIGE9W3t6YTpuZXcgd3QobHMra3MrIi90cmFuc2xhdGVfYS90IixhLmgpLEVmOjMwNzIwLEJoOjQyOTQ5NjcyOTUsemg6LTEsWGg6MCxoZjohMX1dO3RoaXMuQT1uZXcgQXQoYSk7dGhpcy5qPQohMTtmb3IoYj0wO2I8YS5sZW5ndGg7KytiKXRoaXMuaj10aGlzLmp8fGFbYl0uemEubWIoKTt0aGlzLmp8fHRoaXMuQmsoKX07Xy55KEJ0LF8udyk7QnQucHJvdG90eXBlLmluaXRpYWxpemU9ZnVuY3Rpb24oYSl7dGhpcy5CfHwodGhpcy5CPSEwLHRoaXMuQS5zdGFydCgoMCxfLkMpKGZ1bmN0aW9uKGIpe2ImJih0aGlzLmc9Yix0aGlzLmguemE9Yi56YSk7YSgpfSx0aGlzKSkpfTtCdC5wcm90b3R5cGUubWI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5qfTtCdC5wcm90b3R5cGUubGI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nIT09bnVsbCYmdGhpcy5nLnphIT09bnVsbCYmdGhpcy5nLnphLmxiKCl9Owp2YXIgQ3Q9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXtxOmMuc3Vic3RyaW5nKDAsYS5oLkFoKSxzbDoiYXV0byIsdGw6ImVuIn07cmV0dXJuIG5ldyBfLmhlKGZ1bmN0aW9uKGUsZil7YS5oLnphLnNlbmQoZCxiKS50aGVuKGZ1bmN0aW9uKGcpe3RyeXt2YXIgaD1KU09OLnBhcnNlKGcpO2UoaCYmaFsxXXx8bnVsbCl9Y2F0Y2goayl7ZShudWxsKX19LGZ1bmN0aW9uKGcpe3JldHVybiBmKGd8fG51bGwpfSl9KX07CkJ0LnByb3RvdHlwZS50cmFuc2xhdGU9ZnVuY3Rpb24oYSxiLGMsZCxlLGYsZyxoKXt2YXIgaz10aGlzLG09e3E6YixzbDpjLHRsOmR9O20udGM9ZTtmJiYobS5jdHQ9MSk7ZyYmKG0uZG9tPTEpO2gmJihtLnNyPTEpO21bWXIoKV09WHIoYi5qb2luKCIiKSk7cmV0dXJuIG5ldyBfLmhlKGZ1bmN0aW9uKG4scCl7ay5nLnphLnNlbmQobSxhKS50aGVuKGZ1bmN0aW9uKHEpe2lmKHEpe2lmKHR5cGVvZiBxIT09Im9iamVjdCIpdHJ5e3E9SlNPTi5wYXJzZShxKX1jYXRjaChBKXtrLkFrKCk7cCgpO3JldHVybn1pZihfLlZiKHEpIT0iYXJyYXkiKXZhciByPVtbcSwyMDBdXTtlbHNlIGlmKHEubGVuZ3RoPT0yJiZfLlZiKHFbMF0pIT0iYXJyYXkiJiZfLlZiKHFbMV0pIT0iYXJyYXkiKXI9W1txWzBdLDIwMCxxWzFdXSxbcVsxXSwyMDAscVsxXV1dO2Vsc2V7cj1bXTtmb3IodmFyIHQ9MDt0PHEubGVuZ3RoOysrdClyW3RdPV8uVmIocVt0XSkhPSJhcnJheSI/W3FbdF0sMjAwXTpbcVt0XVswXSwKMjAwLHFbdF1bMV1dfW4ocil9ZWxzZSBwKCl9KX0pfTt2YXIgRHQ9ZnVuY3Rpb24oYSxiKXtiIGluc3RhbmNlb2YgXy5oZT9iLnRoZW4oZnVuY3Rpb24oYyl7YS5nLnphLmNhbmNlbChjKX0pOmEuZy56YS5jYW5jZWwoYil9LEV0PWZ1bmN0aW9uKGEpe3JldHVybiBhLmcuaGY/YS5nLkVmLShuZXcgXy5RZyhhLmcuemEuZykpLnRvU3RyaW5nKCkubGVuZ3RoOmEuZy5FZn07QnQucHJvdG90eXBlLks9ZnVuY3Rpb24oKXtfLncucHJvdG90eXBlLksuY2FsbCh0aGlzKTt0aGlzLmcmJih0aGlzLmcuemEuZGlzcG9zZSgpLHRoaXMuZy56YT1udWxsKTt0aGlzLmguemE9bnVsbDt0aGlzLmwuZGlzcG9zZSgpO3RoaXMubD1udWxsfTtudC5hdHRhY2goNzM2MSxCdC5wcm90b3R5cGUse0JrOmZ1bmN0aW9uKCl7V28oInRlX2F1Iil9fSk7bnQuYXR0YWNoKDQ3NTA0LEJ0LnByb3RvdHlwZSx7QWs6ZnVuY3Rpb24oKXtXbygidGVfYWZiciIpfX0pO3ZhciBBdD1mdW5jdGlvbihhKXt0aGlzLmg9YX07CkF0LnByb3RvdHlwZS5zdGFydD1mdW5jdGlvbihhKXt0aGlzLmc9YTt0aGlzLmo9MDtGdCh0aGlzKX07dmFyIEZ0PWZ1bmN0aW9uKGEpe2lmKGEuaj49YS5oLmxlbmd0aClhLmcobnVsbCk7ZWxzZXt2YXIgYj1hLmhbYS5qKytdO2IuYWw/WXMobmV3IFhzKCgwLF8uQykoYi56YS5sYixiLnphKSwoMCxfLkMpKGZ1bmN0aW9uKGMpe2M/dGhpcy5nKGIpOkZ0KHRoaXMpfSxhKSxiLmFsKSk6Yi56YS5sYigpP2EuZyhiKTpGdChhKX19O3ZhciBHdD1TcygiQSBBQkJSIEFDUk9OWU0gQiBCQVNFRk9OVCBCRE8gQklHIENJVEUgREZOIEVNIEZPTlQgSSBJTlBVVCBOT0JSIExBQkVMIFEgUlQgUyBTTUFMTCBTUEFOIFNUUklLRSBTVFJPTkcgU1VCIFNVUCBURVhUQVJFQSBUVCBVIFZBUiIuc3BsaXQoIiAiKSksSHQ9U3MoIkFQUExFVCBBUkVBIEJBU0UgRlJBTUUgRlJBTUVTRVQgSFIgTElOSyBNRVRBIE5PRlJBTUVTIE5PU0NSSVBUIElOUFVUIFRFWFRBUkVBIFRJVExFIi5zcGxpdCgiICIpKSxJdD1TcygiQlIgQ09ERSBJTUcgS0JEIE1BUCBPQkpFQ1QgUEFSQU0gUlAgU0NSSVBUIFNUWUxFIFdCUiBzdmciLnNwbGl0KCIgIikpLEp0PVNzKFsic3VibWl0IiwiYnV0dG9uIl0pO3ZhciBMdD1mdW5jdGlvbihhLGIsYyxkLGUpe3RoaXMuaD0hIWI7dGhpcy5ub2RlPW51bGw7dGhpcy5nPTA7dGhpcy5qPSExO3RoaXMubD0hYzthJiZLdCh0aGlzLGEsZCk7dGhpcy5kZXB0aD1lIT12b2lkIDA/ZTp0aGlzLmd8fDA7dGhpcy5oJiYodGhpcy5kZXB0aCo9LTEpfTtfLkUoTHQsXy5SZyk7dmFyIEt0PWZ1bmN0aW9uKGEsYixjLGQpe2lmKGEubm9kZT1iKWEuZz10eXBlb2YgYz09PSJudW1iZXIiP2M6YS5ub2RlLm5vZGVUeXBlIT0xPzA6YS5oPy0xOjE7dHlwZW9mIGQ9PT0ibnVtYmVyIiYmKGEuZGVwdGg9ZCl9LE10PWZ1bmN0aW9uKGEpe3ZhciBiPWEuaD8tMToxO2EuZz09YiYmKGEuZz1iKi0xLGEuZGVwdGgrPWEuZyooYS5oPy0xOjEpKX07Ckx0LnByb3RvdHlwZS5uZXh0PWZ1bmN0aW9uKCl7aWYodGhpcy5qKXtpZighdGhpcy5ub2RlfHx0aGlzLmwmJnRoaXMuZGVwdGg9PTApcmV0dXJuIF8uU2c7dmFyIGE9dGhpcy5ub2RlO3ZhciBiPXRoaXMuaD8tMToxO2lmKHRoaXMuZz09Yil7dmFyIGM9dGhpcy5oP2EubGFzdENoaWxkOmEuZmlyc3RDaGlsZDtjP0t0KHRoaXMsYyk6S3QodGhpcyxhLGIqLTEpfWVsc2UoYz10aGlzLmg/YS5wcmV2aW91c1NpYmxpbmc6YS5uZXh0U2libGluZyk/S3QodGhpcyxjKTpLdCh0aGlzLGEucGFyZW50Tm9kZSxiKi0xKTt0aGlzLmRlcHRoKz10aGlzLmcqKHRoaXMuaD8tMToxKX1lbHNlIHRoaXMuaj0hMDtyZXR1cm4oYT10aGlzLm5vZGUpP3t2YWx1ZTphLGRvbmU6ITF9Ol8uU2d9O0x0LnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24oYSl7cmV0dXJuIGEubm9kZT09dGhpcy5ub2RlJiYoIXRoaXMubm9kZXx8YS5nPT10aGlzLmcpfTsKTHQucHJvdG90eXBlLnNwbGljZT1mdW5jdGlvbihhKXt2YXIgYj10aGlzLm5vZGUsYz10aGlzLmg/MTotMTt0aGlzLmc9PWMmJih0aGlzLmc9YyotMSx0aGlzLmRlcHRoKz10aGlzLmcqKHRoaXMuaD8tMToxKSk7dGhpcy5oPSF0aGlzLmg7THQucHJvdG90eXBlLm5leHQuY2FsbCh0aGlzKTt0aGlzLmg9IXRoaXMuaDtjPV8ucmEoYXJndW1lbnRzWzBdKT9hcmd1bWVudHNbMF06YXJndW1lbnRzO2Zvcih2YXIgZD1jLmxlbmd0aC0xO2Q+PTA7ZC0tKXRxKGNbZF0sYik7Xy5vZChiKX07dmFyIE90PWZ1bmN0aW9uKGEsYil7dGhpcy5sPSExO3RoaXMuaj1fLkZjP1tdOm51bGw7dGhpcy5oPVtdO3RoaXMuZG9uZT0hMTtmb3IodGhpcy5nPW5ldyBMdChhLCExLGIsYS5ub2RlVHlwZT09PTM/MDoxLDEpO2E9YS5wYXJlbnROb2RlOylOdCh0aGlzLGEsITApO3RoaXMuaC5wdXNoKCExKTt0aGlzLmgucmV2ZXJzZSgpO2ZvcihhPTE7YTx0aGlzLmgubGVuZ3RoOysrYSl0aGlzLmhbYV09PW51bGwmJih0aGlzLmhbYV09dGhpcy5oW2EtMV0pfSxOdD1mdW5jdGlvbihhLGIsYyl7Yz1jPT09dm9pZCAwPyExOmM7dmFyIGQ9KGIuc3R5bGUmJmIuc3R5bGUud2hpdGVTcGFjZXx8IiIpLnN1YnN0cmluZygwLDMpO2Q9PT0icHJlInx8IWQmJmIudGFnTmFtZT09PSJQUkUiP2EuaC5wdXNoKCEwKTpkJiZkIT09InByZSI/YS5oLnB1c2goITEpOmM/YS5oLnB1c2gobnVsbCk6YS5oLnB1c2goYS5oW2EuaC5sZW5ndGgtMV0pfSxQdD1mdW5jdGlvbihhKXtyZXR1cm4hIWEuaFthLmgubGVuZ3RoLQoxXX07T3QucHJvdG90eXBlLm5vZGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nLm5vZGV9O090LnByb3RvdHlwZS5kZXB0aD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmcuZGVwdGh9OwpPdC5wcm90b3R5cGUubmV4dD1mdW5jdGlvbigpe3RyeXt0aGlzLmomJnRoaXMuai5sZW5ndGg+MCYmdGhpcy5nLmc9PT0tMSYmdGhpcy5qLmxlbmd0aC0tO3RoaXMuZy5nPT09LTEmJnRoaXMuaC5sZW5ndGgtLTtpZih0aGlzLmomJnRoaXMuai5sZW5ndGg+MCYmdGhpcy5nLmchPT0xJiYhdGhpcy5nLm5vZGUubmV4dFNpYmxpbmcpS3QodGhpcy5nLHRoaXMualt0aGlzLmoubGVuZ3RoLTFdLC0xLHRoaXMuZy5kZXB0aC0xKTtlbHNle3ZhciBhPXRoaXMuZy5uZXh0KCk7dGhpcy5sPSEwO2lmKGEuZG9uZSl7dGhpcy5kb25lPSEwO3JldHVybn10aGlzLmomJnRoaXMuZy5nPT09MSYmdGhpcy5qLnB1c2godGhpcy5nLm5vZGUpfXRoaXMuZy5nPT09MSYmdGhpcy5sJiZOdCh0aGlzLHRoaXMuZy5ub2RlKX1jYXRjaChiKXt0aGlzLkhrKGIpLHRoaXMuZG9uZT0hMH19O250LmF0dGFjaCg1Mjc1NCxPdC5wcm90b3R5cGUse0hrOjF9KTt2YXIgUXQ9ZnVuY3Rpb24oKXtyZXR1cm4iW21zZ191bmRlZmluZWRdIn0sUT17fTsKKGZ1bmN0aW9uKCl7dmFyIGE9ZnVuY3Rpb24oYil7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGJ9fTtRPXtzZzphKDApLG5pOmEoMSksZ2c6YSgyKSx5bTphKDMpLE1pOmEoNCksaWc6YSg1KSxFaTphKDQ1KSxGaTphKDYpLEhpOmEoNyksT2U6YSg4KSxOaTphKDkpLFVtOmEoMTApLFFpOmEoMTEpLElpOmEoMTIpLE9tOmEoMTMpLEtpOmEoMTQpLE5tOmEoMTUpLEppOmEoMTYpLFhtOmEoMTcpLE9pOmEoMTgpLElsOmEoMTkpLHdtOmEoMjApLG9pOmEoMjEpLFBtOmEoMjIpLEhtOmEoMjMpLEdtOmEoMjQpLEVtOmEoMjUpLFZtOmEoMjYpLFRtOmEoMjcpLEZtOmEoMjgpLEdpOmEoMjkpLFBpOmEoMzApLEhsOmEoMzIpLEZsOmEoMzMpLFltOmEoMzQpLFNsOmEoMzUpLE1sOmEoMzYpLFJsOmEoMzcpLExpOmEoMzgpLG5tOmEoMzkpLEdsOmEoNDApLHhtOmEoNDEpLG5nOmEoNDYpLEFtOmEoNDcpLGZtOmEoNDgpLGRtOmEoNDkpLGJtOmEoNTApLFdtOmEoNTEpfX0pKCk7US5mbz1mdW5jdGlvbigpe3JldHVybiBfLk5bMF19OwpRLnlqPWZ1bmN0aW9uKCl7cmV0dXJuIF8uTlsxXX07US5Hbj1mdW5jdGlvbigpe3JldHVybiBfLk5bMl19O1EuUm49ZnVuY3Rpb24oKXtyZXR1cm4gXy5OWzNdfTtRLmhvPWZ1bmN0aW9uKCl7cmV0dXJuIF8uTls0XX07US5Lbj1mdW5jdGlvbigpe3JldHVybiBfLk5bNV19O1EuTW49ZnVuY3Rpb24oKXtyZXR1cm4gXy5OWzQ1XX07US5Obj1mdW5jdGlvbigpe3JldHVybiBfLk5bNl19O1EuU249ZnVuY3Rpb24oKXtyZXR1cm4gXy5OWzddfTtRLmtvPWZ1bmN0aW9uKCl7cmV0dXJuIF8uTls4XX07US5ubz1mdW5jdGlvbigpe3JldHVybiBfLk5bOV19O1Euam89ZnVuY3Rpb24oKXtyZXR1cm4gXy5OWzEwXX07US51bz1mdW5jdGlvbigpe3JldHVybiBfLk5bMTFdfTtRLlRuPWZ1bmN0aW9uKCl7cmV0dXJuIF8uTlsxMl19O1EuYW89ZnVuY3Rpb24oKXtyZXR1cm4gXy5OWzEzXX07US5jbz1mdW5jdGlvbigpe3JldHVybiBfLk5bMTRdfTtRLlpuPWZ1bmN0aW9uKCl7cmV0dXJuIF8uTlsxNV19OwpRLlVuPWZ1bmN0aW9uKCl7cmV0dXJuIF8uTlsxNl19O1EucW89ZnVuY3Rpb24oKXtyZXR1cm4gXy5OWzE3XX07US5wbz1mdW5jdGlvbigpe3JldHVybiBfLk5bMThdfTtRLkVuPWZ1bmN0aW9uKCl7cmV0dXJuIF8uTlsxOV19O1EuUW49ZnVuY3Rpb24oKXtyZXR1cm4gXy5OWzIwXX07US5Daj1mdW5jdGlvbigpe3JldHVybiBfLk5bNDFdfTtRLkpuPWZ1bmN0aW9uKCl7cmV0dXJuIF8uTlsyMV19O1EuRWo9ZnVuY3Rpb24oKXtyZXR1cm4gXy5OWzIyXX07US5Zbj1mdW5jdGlvbigpe3JldHVybiBfLk5bMjNdfTtRLlhuPWZ1bmN0aW9uKCl7cmV0dXJuIF8uTlsyNF19O1EuVm49ZnVuY3Rpb24oKXtyZXR1cm4gXy5OWzI1XX07US5tbz1mdW5jdGlvbigpe3JldHVybiBfLk5bMjZdfTtRLmlvPWZ1bmN0aW9uKCl7cmV0dXJuIF8uTlsyN119O1EuV249ZnVuY3Rpb24oKXtyZXR1cm4gXy5OWzI4XX07US5Qbj1mdW5jdGlvbigpe3JldHVybiBfLk5bMjldfTtRLnJvPWZ1bmN0aW9uKCl7cmV0dXJuIF8uTlszMF19OwpRLk9uPWZ1bmN0aW9uKCl7cmV0dXJuIF8uTlszOV19O1EuRG49ZnVuY3Rpb24oKXtyZXR1cm4gXy5OWzMyXX07US5Cbj1mdW5jdGlvbigpe3JldHVybiBfLk5bMzNdfTtRLkNuPWZ1bmN0aW9uKCl7cmV0dXJuIF8uTls0MF19O1Euc289ZnVuY3Rpb24oKXtyZXR1cm4gXy5OWzM0XX07US5Jbj1mdW5jdGlvbigpe3JldHVybiBfLk5bMzVdfTtRLkZuPWZ1bmN0aW9uKCl7cmV0dXJuIF8uTlszNl19O1EuSG49ZnVuY3Rpb24oKXtyZXR1cm4gXy5OWzM3XX07US5lbz1mdW5jdGlvbigpe3JldHVybiBfLk5bMzhdfTtRLkxuPWZ1bmN0aW9uKCl7cmV0dXJuIF8uTls0Nl19O1EuRGo9ZnVuY3Rpb24oKXtyZXR1cm4gXy5OWzQ3XX07US5Caj1mdW5jdGlvbigpe3JldHVybiBfLk5bNDhdfTtRLkFqPWZ1bmN0aW9uKCl7cmV0dXJuIF8uTls0OV19O1Euemo9ZnVuY3Rpb24oKXtyZXR1cm4gXy5OWzUwXX07US5vbz1mdW5jdGlvbigpe3JldHVybiBfLk5bNTFdfTt2YXIgUnQ9UTt2YXIgU3Q9UnQueWosVHQ9UnQuRWosVXQ9UnQuQ2osVnQ9UnQuRGosV3Q9UnQuQmosWHQ9UnQuQWosWXQ9UnQuemo7dmFyIFp0PU9xWyJrZXlfYToiXTtpZihadD09PXZvaWQgMHx8MD5adClPcVsia2V5X2E6Il09MDtlbHNlIGlmKDA9PVp0KXRocm93IEVycm9yKCJIYWBhYCIpOwp2YXIgJHQ9ZnVuY3Rpb24oKXtyZXR1cm4oMCxfLnVuKSgnPGRpdj48dGV4dGFyZWEgY2xhc3M9ImNvbnRyaWJ1dGUtb3JpZ2luYWwtdGV4dCI+PC90ZXh0YXJlYT48ZGl2IGNsYXNzPSJhY3Rpdml0eS1mb3JtLWNvbnRhaW5lciI+PC9kaXY+PC9kaXY+Jyl9LGF1PWZ1bmN0aW9uKGEpe3ZhciBiPWEuY2osYz1hLm1ldGhvZCxkPWEucmo7YT1hLmRpcjtiPSc8ZGl2IGNsYXNzPSInK1AoIlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIikrJyI+PGRpdiBjbGFzcz0iZm9ybS1tZXNzYWdlIj48L2Rpdj48Zm9ybSBjbGFzcz0iJytQKCJWSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCIpKyciIGFjdGlvbj0iJytQKHFyKGIpKSsnIiBtZXRob2Q9IicrUChjKSsnIj48ZGl2IGNsYXNzPSJmb3JtLWJ1dHRvbnMiIHN0eWxlPSJ0ZXh0LWFsaWduOicrKChhJiZhLnRrJiYicnRsIi50az9hLlRiIT09InJ0bCIuVGI/MDphLnRvU3RyaW5nKCk9PT0icnRsIi50b1N0cmluZygpOmE9PSJydGwiKT8icmlnaHQiOgoibGVmdCIpKyciPjxpbnB1dCBjbGFzcz0iJytQKCJWSXBnSmQteUFXTkViLVowQXJxZi1zRmVCcWYiKSsnIiB0eXBlPSJidXR0b24iIHZhbHVlPSInK1AoVHQoKSkrJyI+PGlucHV0IGNsYXNzPSJhY3Rpdml0eS1jYW5jZWwiIHR5cGU9ImJ1dHRvbiIgdmFsdWU9IicrUChTdCgpKSsnIj48L2Rpdj48ZGl2IGNsYXNzPSJwYXJhbWV0ZXJzIj48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJndHJhbnMiLz48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ1dHJhbnMiLz48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJobCIvPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InRleHQiLz48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJsYW5ncGFpciIvPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Im9lIiB2YWx1ZT0iVVRGLTgiLz4nO2M9ZC5sZW5ndGg7Zm9yKGE9MDthPGM7YSsrKWIrPSc8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSInK1AoZFthXSkrJyIvPic7cmV0dXJuKDAsXy51bikoYisKIjwvZGl2PjwvZm9ybT48L2Rpdj4iKX0sZHU9ZnVuY3Rpb24oYSl7dmFyIGI9YS5kaXI7YT1hLkNsO3JldHVybiBRcChScChRcChScChRcChfLnpuKCksJzxkaXYgaWQ9Imdvb2ctZ3QtdHQiIGNsYXNzPSInK1AoIlZJcGdKZC15QVdORWItTDdsYmtiIikrJyBza2lwdHJhbnNsYXRlIiBzdHlsZT0iYm9yZGVyLXJhZGl1czogMTJweDsgbWFyZ2luOiAwIDAgMCAtMjNweDsgcGFkZGluZzogMDsgZm9udC1mYW1pbHk6IFwnR29vZ2xlIFNhbnNcJywgQXJpYWwsIHNhbnMtc2VyaWY7IiBkYXRhLWlkPSIiPjxkaXYgaWQ9Imdvb2ctZ3QtdnQiIGNsYXNzPSInK1AoIlZJcGdKZC15QVdORWItaHZoZ05kIikrJyI+PGRpdiBjbGFzcz0iJytQKCJWSXBnSmQteUFXTkViLWh2aGdOZC1VZDdmciIpKyciPjxpbWcgc3JjPSJodHRwczovL2ZvbnRzLmdzdGF0aWMuY29tL3MvaS9wcm9kdWN0bG9nb3MvdHJhbnNsYXRlL3YxNC8yNHB4LnN2ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiBhbHQ9IiIvPjxkaXYgY2xhc3M9IicrCihiPT09InJ0bCI/IiAiK1AoIlZJcGdKZC15QVdORWItaHZoZ05kLUl1aXpXYy1TSXNyVGQiKSsiICI6IiAiK1AoIlZJcGdKZC15QVdORWItaHZoZ05kLUl1aXpXYy1pM2pNOGMiKSsiICIpKyciIGRpcj0iJytQKGIpKyciPicrZnIoVXQoKSkrJzwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9IicrUCgiVklwZ0pkLXlBV05FYi1odmhnTmQtazc3SWlmIikrJyI+PGRpdiBpZD0iZ29vZy1ndC1vcmlnaW5hbC10ZXh0IiBjbGFzcz0iJytQKCJWSXBnSmQteUFXTkViLW5WTWZjZC1mbWNtUyIpKyIgIitQKCJWSXBnSmQteUFXTkViLWh2aGdOZC1heEFWMSIpKyciPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9IicrUCgiVklwZ0pkLXlBV05FYi1odmhnTmQtTjdFcWlkIikrIiAiK1AoYikrJyI+PGRpdiBjbGFzcz0iJytQKCJWSXBnSmQteUFXTkViLWh2aGdOZC1ON0VxaWQtQjdJNE9kIikrIiAiK1AoYikrJyIgZGlyPSInK1AoYikrJyI+PGRpdiBjbGFzcz0iJytQKCJWSXBnSmQteUFXTkViLWh2aGdOZC1VVHVqQ2IiKSsKJyI+JytmcihWdCgpKSsnPC9kaXY+PGRpdiBjbGFzcz0iJytQKCJWSXBnSmQteUFXTkViLWh2aGdOZC1lTzltS2UiKSsnIj4nK2ZyKFd0KCkpKyc8L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSInK1AoIlZJcGdKZC15QVdORWItaHZoZ05kLXhnb3Y1IikrIiAiK1AoYikrJyI+JyksYj09PSJydGwiP1JwKFJwKF8uem4oKSxidSgpKSxjdSgpKTpScChScChfLnpuKCksY3UoKSksYnUoKSkpLCI8L2Rpdj48L2Rpdj4iKSwoMCxfLnVuKSgnPGRpdiBpZD0iZ29vZy1ndC12b3RpbmdIaWRkZW5QYW5lIiBjbGFzcz0iJytQKCJWSXBnSmQteUFXTkViLWh2aGdOZC1hWFlUY2UiKSsnIj48Zm9ybSBpZD0iZ29vZy1ndC12b3RpbmdGb3JtIiBhY3Rpb249IicrUChxcihhKSkrJyIgbWV0aG9kPSJwb3N0IiB0YXJnZXQ9InZvdGluZ0ZyYW1lIiBjbGFzcz0iJytQKCJWSXBnSmQteUFXTkViLWh2aGdOZC1hWFlUY2UiKSsnIj48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ic2wiIGlkPSJnb29nLWd0LXZvdGluZ0lucHV0U3JjTGFuZyIvPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ0bCIgaWQ9Imdvb2ctZ3Qtdm90aW5nSW5wdXRUcmdMYW5nIi8+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InF1ZXJ5IiBpZD0iZ29vZy1ndC12b3RpbmdJbnB1dFNyY1RleHQiLz48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZ3RyYW5zIiBpZD0iZ29vZy1ndC12b3RpbmdJbnB1dFRyZ1RleHQiLz48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0idm90ZSIgaWQ9Imdvb2ctZ3Qtdm90aW5nSW5wdXRWb3RlIi8+PC9mb3JtPjxpZnJhbWUgbmFtZT0idm90aW5nRnJhbWUiIGZyYW1lQm9yZGVyPTA+PC9pZnJhbWU+PC9kaXY+JykpLAoiPC9kaXY+PC9kaXY+Iil9LGN1PWZ1bmN0aW9uKCl7dmFyIGE9Xy56bigpLGI9WHQoKTtiPVFwKGEsJzxidXR0b24gaWQ9Imdvb2ctZ3QtdGh1bWJVcEJ1dHRvbiIgdHlwZT0iYnV0dG9uIiBjbGFzcz0iJytQKCJWSXBnSmQteUFXTkViLWh2aGdOZC1iZ202c2YiKSsnIiB0aXRsZT0iJytQKGIpKyciIGFyaWEtbGFiZWw9IicrUChiKSsnIiBhcmlhLXByZXNzZWQ9ImZhbHNlIj48c3BhbiBpZD0iZ29vZy1ndC10aHVtYlVwSWNvbiI+Jyk7dmFyIGM9KDAsXy51bikoJzxzdmcgd2lkdGg9IicrUCgyNCkrJyIgaGVpZ2h0PSInK1AoMjQpKyciIHZpZXdCb3g9IicrUCgiMCAwIDI0IDI0IikrJyIgZm9jdXNhYmxlPSJmYWxzZSIgY2xhc3M9IicrUCgiVklwZ0pkLXlBV05FYi1odmhnTmQtVEhJNlZiIikrIiAiK1AoIk5NbTVNIikrJyInK1ZxKCkrJz48cGF0aCBkPSJNMjEgN2gtNi4zMWwuOTUtNC41Ny4wMy0uMzJjMC0uNDEtLjE3LS43OS0uNDQtMS4wNkwxNC4xNyAwUzcuMDggNi44NSA3IDdIMnYxM2gxNmMuODMgMCAxLjU0LS41IDEuODQtMS4yMmwzLjAyLTcuMDVjLjA5LS4yMy4xNC0uNDcuMTQtLjczVjljMC0xLjEtLjktMi0yLTJ6TTcgMThINFY5aDN2OXptMTQtN2wtMyA3SDlWOGw0LjM0LTQuMzRMMTIgOWg5djJ6Ii8+PC9zdmc+Jyk7CmI9UXAoUnAoYixjKSwnPC9zcGFuPjxzcGFuIGlkPSJnb29nLWd0LXRodW1iVXBJY29uRmlsbGVkIj4nKTtjPSgwLF8udW4pKCc8c3ZnIHdpZHRoPSInK1AoMjQpKyciIGhlaWdodD0iJytQKDI0KSsnIiB2aWV3Qm94PSInK1AoIjAgMCAyNCAyNCIpKyciIGZvY3VzYWJsZT0iZmFsc2UiIGNsYXNzPSInK1AoIlZJcGdKZC15QVdORWItaHZoZ05kLVRISTZWYiIpKyIgIitQKCJOTW01TSIpKyciJytWcSgpKyc+PHBhdGggZD0iTTIxIDdoLTYuMzFsLjk1LTQuNTcuMDMtLjMyYzAtLjQxLS4xNy0uNzktLjQ0LTEuMDZMMTQuMTcgMFM3LjA4IDYuODUgNyA3djEzaDExYy44MyAwIDEuNTQtLjUgMS44NC0xLjIybDMuMDItNy4wNWMuMDktLjIzLjE0LS40Ny4xNC0uNzNWOWMwLTEuMS0uOS0yLTItMnpNNSA3SDF2MTNoNFY3eiIvPjwvc3ZnPicpO1FwKFJwKGIsYyksIjwvc3Bhbj48L2J1dHRvbj4iKTtyZXR1cm4gYX0sYnU9ZnVuY3Rpb24oKXt2YXIgYT1fLnpuKCksYj1ZdCgpO2I9UXAoYSwnPGJ1dHRvbiBpZD0iZ29vZy1ndC10aHVtYkRvd25CdXR0b24iIHR5cGU9ImJ1dHRvbiIgY2xhc3M9IicrClAoIlZJcGdKZC15QVdORWItaHZoZ05kLWJnbTZzZiIpKyciIHRpdGxlPSInK1AoYikrJyIgYXJpYS1sYWJlbD0iJytQKGIpKyciIGFyaWEtcHJlc3NlZD0iZmFsc2UiPjxzcGFuIGlkPSJnb29nLWd0LXRodW1iRG93bkljb24iPicpO3ZhciBjPSgwLF8udW4pKCc8c3ZnIHdpZHRoPSInK1AoMjQpKyciIGhlaWdodD0iJytQKDI0KSsnIiB2aWV3Qm94PSInK1AoIjAgMCAyNCAyNCIpKyciIGZvY3VzYWJsZT0iZmFsc2UiIGNsYXNzPSInK1AoIlZJcGdKZC15QVdORWItaHZoZ05kLVRISTZWYiIpKyIgIitQKCJOTW01TSIpKyciJytWcSgpKyc+PHBhdGggZD0iTTMgMTdoNi4zMWwtLjk1IDQuNTctLjAzLjMyYzAgLjQxLjE3Ljc5LjQ0IDEuMDZMOS44MyAyNHM3LjA5LTYuODUgNy4xNy03aDVWNEg2Yy0uODMgMC0xLjU0LjUtMS44NCAxLjIybC0zLjAyIDcuMDVjLS4wOS4yMy0uMTQuNDctLjE0LjczdjJjMCAxLjEuOSAyIDIgMnpNMTcgNmgzdjloLTNWNnpNMyAxM2wzLTdoOXYxMGwtNC4zNCA0LjM0TDEyIDE1SDN2LTJ6Ii8+PC9zdmc+Jyk7CmI9UXAoUnAoYixjKSwnPC9zcGFuPjxzcGFuIGlkPSJnb29nLWd0LXRodW1iRG93bkljb25GaWxsZWQiPicpO2M9KDAsXy51bikoJzxzdmcgd2lkdGg9IicrUCgyNCkrJyIgaGVpZ2h0PSInK1AoMjQpKyciIHZpZXdCb3g9IicrUCgiMCAwIDI0IDI0IikrJyIgZm9jdXNhYmxlPSJmYWxzZSIgY2xhc3M9IicrUCgiVklwZ0pkLXlBV05FYi1odmhnTmQtVEhJNlZiIikrIiAiK1AoIk5NbTVNIikrJyInK1ZxKCkrJz48cGF0aCBkPSJNMyAxN2g2LjMxbC0uOTUgNC41Ny0uMDMuMzJjMCAuNDEuMTcuNzkuNDQgMS4wNkw5LjgzIDI0czcuMDktNi44NSA3LjE3LTdWNEg2Yy0uODMgMC0xLjU0LjUtMS44NCAxLjIybC0zLjAyIDcuMDVjLS4wOS4yMy0uMTQuNDctLjE0LjczdjJjMCAxLjEuOSAyIDIgMnptMTYgMGg0VjRoLTR2MTN6Ii8+PC9zdmc+Jyk7UXAoUnAoYixjKSwiPC9zcGFuPjwvYnV0dG9uPiIpO3JldHVybiBhfTt2YXIgZXU9ZnVuY3Rpb24oKXt9O1VwKGV1KTtldS5wcm90b3R5cGUuZz0wO3ZhciBPPWZ1bmN0aW9uKGEpe18uRy5jYWxsKHRoaXMpO3RoaXMuaD1hfHxfLmZiKCk7dGhpcy5qYT1mdTt0aGlzLlY9bnVsbDt0aGlzLlphPSExO3RoaXMubz1udWxsO3RoaXMuTT12b2lkIDA7dGhpcy5PPXRoaXMuST10aGlzLkY9bnVsbDt0aGlzLnlhPSExfTtfLkUoTyxfLkcpO08ucHJvdG90eXBlLkVhPWV1LkliKCk7dmFyIGZ1PW51bGwsZ3U9ZnVuY3Rpb24oYSxiKXtzd2l0Y2goYSl7Y2FzZSAxOnJldHVybiBiPyJkaXNhYmxlIjoiZW5hYmxlIjtjYXNlIDI6cmV0dXJuIGI/ImhpZ2hsaWdodCI6InVuaGlnaGxpZ2h0IjtjYXNlIDQ6cmV0dXJuIGI/ImFjdGl2YXRlIjoiZGVhY3RpdmF0ZSI7Y2FzZSA4OnJldHVybiBiPyJzZWxlY3QiOiJ1bnNlbGVjdCI7Y2FzZSAxNjpyZXR1cm4gYj8iY2hlY2siOiJ1bmNoZWNrIjtjYXNlIDMyOnJldHVybiBiPyJmb2N1cyI6ImJsdXIiO2Nhc2UgNjQ6cmV0dXJuIGI/Im9wZW4iOiJjbG9zZSJ9dGhyb3cgRXJyb3IoIklhIik7fTsKTy5wcm90b3R5cGUuWWE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5WfHwodGhpcy5WPSI6IisodGhpcy5FYS5nKyspLnRvU3RyaW5nKDM2KSl9O3ZhciBodT1mdW5jdGlvbihhLGIpe2lmKGEuRiYmYS5GLk8pe3ZhciBjPWEuRi5PLGQ9YS5WO2QgaW4gYyYmZGVsZXRlIGNbZF07Yz1hLkYuTztpZihjIT09bnVsbCYmYiBpbiBjKXRocm93IEVycm9yKCJzYCIrYik7Y1tiXT1hfWEuVj1ifTtPLnByb3RvdHlwZS5EPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub307dmFyIGl1PWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEubz9DcChiLGEub3x8YS5oLmcpOm51bGx9LGp1PWZ1bmN0aW9uKGEpe2EuTXx8KGEuTT1uZXcgXy5IZihhKSk7cmV0dXJuIGEuTX07Ty5wcm90b3R5cGUuQ2U9ZnVuY3Rpb24oYSl7aWYodGhpcy5GJiZ0aGlzLkYhPWEpdGhyb3cgRXJyb3IoIkthIik7Ty5QLkNlLmNhbGwodGhpcyxhKX07Ty5wcm90b3R5cGUuUz1mdW5jdGlvbigpe3RoaXMubz10aGlzLmguY3JlYXRlRWxlbWVudCgiRElWIil9OwpPLnByb3RvdHlwZS5pYT1mdW5jdGlvbihhKXtrdSh0aGlzLGEpfTtPLnByb3RvdHlwZS5sZD1mdW5jdGlvbihhKXtrdSh0aGlzLGEucGFyZW50Tm9kZSxhKX07dmFyIGt1PWZ1bmN0aW9uKGEsYixjKXtpZihhLlphKXRocm93IEVycm9yKCJMYSIpO2Eub3x8YS5TKCk7Yj9iLmluc2VydEJlZm9yZShhLm8sY3x8bnVsbCk6YS5oLmcuYm9keS5hcHBlbmRDaGlsZChhLm8pO2EuRiYmIWEuRi5aYXx8YS52YSgpfTtfLmw9Ty5wcm90b3R5cGU7Xy5sLlZhPWZ1bmN0aW9uKGEpe2lmKHRoaXMuWmEpdGhyb3cgRXJyb3IoIkxhIik7aWYoYSYmdGhpcy5sZyhhKSl7dGhpcy55YT0hMDt2YXIgYj1fLmVkKGEpO3RoaXMuaCYmdGhpcy5oLmc9PWJ8fCh0aGlzLmg9Xy5mYihhKSk7dGhpcy5BYShhKTt0aGlzLnZhKCl9ZWxzZSB0aHJvdyBFcnJvcigiTWEiKTt9O18ubC5sZz1mdW5jdGlvbigpe3JldHVybiEwfTtfLmwuQWE9ZnVuY3Rpb24oYSl7dGhpcy5vPWF9OwpfLmwudmE9ZnVuY3Rpb24oKXt0aGlzLlphPSEwO2x1KHRoaXMsZnVuY3Rpb24oYSl7IWEuWmEmJmEuRCgpJiZhLnZhKCl9KX07Xy5sLnNhPWZ1bmN0aW9uKCl7bHUodGhpcyxmdW5jdGlvbihhKXthLlphJiZhLnNhKCl9KTt0aGlzLk0mJl8uTGYodGhpcy5NKTt0aGlzLlphPSExfTtfLmwuSz1mdW5jdGlvbigpe3RoaXMuWmEmJnRoaXMuc2EoKTt0aGlzLk0mJih0aGlzLk0uZGlzcG9zZSgpLGRlbGV0ZSB0aGlzLk0pO2x1KHRoaXMsZnVuY3Rpb24oYSl7YS5kaXNwb3NlKCl9KTshdGhpcy55YSYmdGhpcy5vJiZfLm9kKHRoaXMubyk7dGhpcy5GPXRoaXMubz10aGlzLk89dGhpcy5JPW51bGw7Ty5QLksuY2FsbCh0aGlzKX07dmFyIFI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5ZYSgpKyIuIitifSxsdT1mdW5jdGlvbihhLGIpe2EuSSYmYS5JLmZvckVhY2goYix2b2lkIDApfTsKTy5wcm90b3R5cGUuTmY9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPVtdO3RoaXMuSSYmdGhpcy5JLmxlbmd0aCE9MDspe3ZhciBjPWIsZD1jLnB1c2gsZT10aGlzLkk/dGhpcy5JWzBdfHxudWxsOm51bGwsZj1hO2lmKGUpe3ZhciBnPXR5cGVvZiBlPT09InN0cmluZyI/ZTplLllhKCk7dGhpcy5PJiZnPyhlPXRoaXMuTyxlPShlIT09bnVsbCYmZyBpbiBlP2VbZ106dm9pZCAwKXx8bnVsbCk6ZT1udWxsO2lmKGcmJmUpe3ZhciBoPXRoaXMuTztnIGluIGgmJmRlbGV0ZSBoW2ddO18ud2EodGhpcy5JLGUpO2YmJihlLnNhKCksZS5vJiZfLm9kKGUubykpO2Y9ZTtpZihmPT1udWxsKXRocm93IEVycm9yKCJKYSIpO2YuRj1udWxsO08uUC5DZS5jYWxsKGYsbnVsbCl9fWlmKCFlKXRocm93IEVycm9yKCJOYSIpO2QuY2FsbChjLGUpfXJldHVybiBifTtfLkUoYnAsTyk7Xy5sPWJwLnByb3RvdHlwZTtfLmwudGU9ZnVuY3Rpb24oYSl7dGhpcy5sPWF9O18ubC52ZD1mdW5jdGlvbigpe2lmKCF0aGlzLlphKXRocm93IEVycm9yKCJPYSIpO2lmKCF0aGlzLmwpdGhyb3cgRXJyb3IoIlBhIik7fTtfLmwuRGM9ZnVuY3Rpb24oKXt9O18ubC5kaXNwb3NlPWZ1bmN0aW9uKCl7dGhpcy5lYigpfHwoYnAuUC5kaXNwb3NlLmNhbGwodGhpcyksZGVsZXRlIHRoaXMubmUpfTtfLmwuRmE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sfTt2YXIgb3U9ZnVuY3Rpb24oKXtfLkcuY2FsbCh0aGlzKTt0aGlzLmg9ImNsb3N1cmVfZnJhbWUiK211Kys7dGhpcy5qPVtdO251W3RoaXMuaF09dGhpc30scHU7Xy5FKG91LF8uRyk7dmFyIG51PXt9LG11PTAscXU9ZnVuY3Rpb24oYSxiKXt2YXIgYz1fLmZiKGEpO18udWcoYixmdW5jdGlvbihkLGUpe0FycmF5LmlzQXJyYXkoZCl8fChkPVtkXSk7Xy5oYyhkLGZ1bmN0aW9uKGYpe2Y9Yy5TKCJJTlBVVCIse3R5cGU6ImhpZGRlbiIsbmFtZTplLHZhbHVlOmZ9KTthLmFwcGVuZENoaWxkKGYpfSl9KX07Xy5sPW91LnByb3RvdHlwZTtfLmwub2E9bnVsbDtfLmwuY2I9bnVsbDtfLmwueWM9bnVsbDtfLmwuTWs9MDtfLmwuaWI9ITE7Xy5sLmFjPW51bGw7Cl8ubC5zZW5kPWZ1bmN0aW9uKGEsYixjLGQpe2lmKHRoaXMuaWIpdGhyb3cgRXJyb3IoIlFhIik7YT1uZXcgXy5RZyhhKTtiPWI/Yi50b1VwcGVyQ2FzZSgpOiJHRVQiO2MmJl8uRmcoYSk7cHV8fChwdT1zcSgiRk9STSIpLHB1LmFjY2VwdENoYXJzZXQ9InV0Zi04IixjPXB1LnN0eWxlLGMucG9zaXRpb249ImFic29sdXRlIixjLnZpc2liaWxpdHk9ImhpZGRlbiIsYy50b3A9Yy5sZWZ0PSItMTBweCIsYy53aWR0aD1jLmhlaWdodD0iMTBweCIsYy5vdmVyZmxvdz0iaGlkZGVuIixkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHB1KSk7dGhpcy5vYT1wdTtiPT0iR0VUIiYmcXUodGhpcy5vYSxhLmcpO2QmJnF1KHRoaXMub2EsZCk7Yz1hLnRvU3RyaW5nKCk7Yz1fLnZiKGMpO2Q9dGhpcy5vYTtjPV8ueGgobmV3IF8uc2goYykpO2MhPT12b2lkIDAmJihkLmFjdGlvbj1jKTt0aGlzLm9hLm1ldGhvZD1iO3J1KHRoaXMpO3N1KHRoaXMpfTsKdmFyIHR1PWZ1bmN0aW9uKGEsYil7aWYoYS5pYil0aHJvdyBFcnJvcigiUWEiKTt2YXIgYz1uZXcgXy5RZyhiLmFjdGlvbik7YS5vYT1iO2I9YS5vYTtjPV8ueGgoYy50b1N0cmluZygpKTtjIT09dm9pZCAwJiYoYi5hY3Rpb249Yyk7cnUoYSl9O291LnByb3RvdHlwZS5hYm9ydD1mdW5jdGlvbigpe2lmKHRoaXMuaWIpe3ZhciBhPXV1KHRoaXMpO2lmKGEpaWYoXy53ZChhKSlhLlhhJiZfLkNkKGEuWGEpO2Vsc2UgaWYoYT1fLkpkKGEpKXt2YXIgYj0wLGM7Zm9yKGMgaW4gYS5nKWZvcih2YXIgZD1hLmdbY10uY29uY2F0KCksZT0wO2U8ZC5sZW5ndGg7KytlKV8uT2QoZFtlXSkmJisrYn10aGlzLmliPSExO3RoaXMuZGlzcGF0Y2hFdmVudCgiYWJvcnQiKTt2dSh0aGlzKX19OwpvdS5wcm90b3R5cGUuSz1mdW5jdGlvbigpe3RoaXMuaWImJnRoaXMuYWJvcnQoKTtvdS5QLksuY2FsbCh0aGlzKTt0aGlzLmNiJiZ3dSh0aGlzKTtzdSh0aGlzKTt0aGlzLm9hPW51bGw7ZGVsZXRlIHRoaXMubzt0aGlzLm9hPW51bGw7ZGVsZXRlIG51W3RoaXMuaF19O291LnByb3RvdHlwZS5pc0FjdGl2ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmlifTsKdmFyIHJ1PWZ1bmN0aW9uKGEpe2EuaWI9ITA7YS55Yz1hLmgrIl8iKyhhLk1rKyspLnRvU3RyaW5nKDM2KTthLmNiPV8uZmIoYS5vYSkuUygiSUZSQU1FIix7bmFtZTphLnljLGlkOmEueWN9KTt2YXIgYj1hLmNiLnN0eWxlO2IudmlzaWJpbGl0eT0iaGlkZGVuIjtiLndpZHRoPWIuaGVpZ2h0PSIxMHB4IjtiLmRpc3BsYXk9Im5vbmUiO18uSWM/Yi5tYXJnaW5Ub3A9Yi5tYXJnaW5MZWZ0PSItMTBweCI6KGIucG9zaXRpb249ImFic29sdXRlIixiLnRvcD1iLmxlZnQ9Ii0xMHB4Iik7Xy5mYihhLm9hKS5nLmJvZHkuYXBwZW5kQ2hpbGQoYS5jYik7Yj1hLnljKyJfaW5uZXIiO3ZhciBjPXZxKGEuY2IpO2lmKGRvY3VtZW50LmJhc2VVUkkpe3ZhciBkPWZxKGIpO2Q9JzxoZWFkPjxiYXNlIGhyZWY9IicrZnEoZG9jdW1lbnQuYmFzZVVSSSkrJyI+PC9oZWFkPjxib2R5PjxpZnJhbWUgaWQ9IicrZCsnIiBuYW1lPSInK2QrJyI+PC9pZnJhbWU+JztkPV8ubm4oZCl9ZWxzZSBkPWZxKGIpLGQ9Cl8ubm4oJzxib2R5PjxpZnJhbWUgaWQ9IicrZCsnIiBuYW1lPSInK2QrJyI+PC9pZnJhbWU+Jyk7Yy53cml0ZShfLkdsKGQpKTtfLkYoYy5nZXRFbGVtZW50QnlJZChiKSwibG9hZCIsYS5nLCExLGEpO2Q9cnEoIlRFWFRBUkVBIixhLm9hKTtmb3IodmFyIGU9MCxmPWQubGVuZ3RoO2U8ZjtlKyspe3ZhciBnPWRbZV0udmFsdWU7RHEoZFtlXSkhPWcmJihfLnFkKGRbZV0sZyksZFtlXS52YWx1ZT1nKX1kPWMuaW1wb3J0Tm9kZShhLm9hLCEwKTtkLnRhcmdldD1iO2QuYWN0aW9uPWEub2EuYWN0aW9uO2MuYm9keS5hcHBlbmRDaGlsZChkKTtlPXJxKCJTRUxFQ1QiLGEub2EpO2Y9cnEoIlNFTEVDVCIsZCk7Zz0wO2Zvcih2YXIgaD1lLmxlbmd0aDtnPGg7ZysrKWZvcih2YXIgaz1ycSgiT1BUSU9OIixlW2ddKSxtPXJxKCJPUFRJT04iLGZbZ10pLG49MCxwPWsubGVuZ3RoO248cDtuKyspbVtuXS5zZWxlY3RlZD1rW25dLnNlbGVjdGVkO2U9cnEoIklOUFVUIixhLm9hKTtmPXJxKCJJTlBVVCIsCmQpO2c9MDtmb3IoaD1lLmxlbmd0aDtnPGg7ZysrKWlmKGVbZ10udHlwZT09ImZpbGUiJiZlW2ddLnZhbHVlIT1mW2ddLnZhbHVlKXthLm9hLnRhcmdldD1iO2Q9YS5vYTticmVha310cnl7YS5BPSExLGQuc3VibWl0KCksYy5jbG9zZSgpLF8uSGMmJnNldFRpbWVvdXQoYS5CLmJpbmQoYSksMjUwKX1jYXRjaChxKXtfLk5kKGMuZ2V0RWxlbWVudEJ5SWQoYiksImxvYWQiLGEuZywhMSxhKSxjLmNsb3NlKCkseHUoYSl9fTtvdS5wcm90b3R5cGUuZz1mdW5jdGlvbigpe18uTmQodXUodGhpcyksImxvYWQiLHRoaXMuZywhMSx0aGlzKTt0cnl7dmFyIGE9dGhpcy5jYj92cSh1dSh0aGlzKSk6bnVsbDt0aGlzLmliPSExO3ZhciBiLGM7Ynx8dHlwZW9mIHRoaXMubyE9ImZ1bmN0aW9uInx8KGM9dGhpcy5vKGEpKSYmKGI9NCk7Yj94dSh0aGlzKToodGhpcy5kaXNwYXRjaEV2ZW50KCJjb21wbGV0ZSIpLHRoaXMuZGlzcGF0Y2hFdmVudCgic3VjY2VzcyIpLHZ1KHRoaXMpKX1jYXRjaChkKXt4dSh0aGlzKX19Owp2YXIgeHU9ZnVuY3Rpb24oYSl7YS5BfHwoYS5pYj0hMSxhLmRpc3BhdGNoRXZlbnQoImNvbXBsZXRlIiksYS5kaXNwYXRjaEV2ZW50KCJlcnJvciIpLHZ1KGEpLGEuQT0hMCl9LHZ1PWZ1bmN0aW9uKGEpe3d1KGEpO3N1KGEpO2Eub2E9bnVsbDthLmRpc3BhdGNoRXZlbnQoInJlYWR5Iil9LHd1PWZ1bmN0aW9uKGEpe3ZhciBiPWEuY2I7YiYmKGIub25yZWFkeXN0YXRlY2hhbmdlPW51bGwsYi5vbmxvYWQ9bnVsbCxiLm9uZXJyb3I9bnVsbCxhLmoucHVzaChiKSk7YS5hYyYmKGNsZWFyVGltZW91dChhLmFjKSxhLmFjPW51bGwpO18uSGM/YS5hYz1zZXRUaW1lb3V0KGEubC5iaW5kKGEpLDJFMyk6YS5sKCk7YS5jYj1udWxsO2EueWM9bnVsbH07b3UucHJvdG90eXBlLmw9ZnVuY3Rpb24oKXt0aGlzLmFjJiYoY2xlYXJUaW1lb3V0KHRoaXMuYWMpLHRoaXMuYWM9bnVsbCk7Zm9yKDt0aGlzLmoubGVuZ3RoIT0wOyl7dmFyIGE9dGhpcy5qLnBvcCgpO18ub2QoYSl9fTsKdmFyIHN1PWZ1bmN0aW9uKGEpe2Eub2EmJmEub2E9PXB1JiZfLm5kKGEub2EpfSx1dT1mdW5jdGlvbihhKXtyZXR1cm4gYS5jYj92cShhLmNiKS5nZXRFbGVtZW50QnlJZChhLnljKyJfaW5uZXIiKTpudWxsfTtvdS5wcm90b3R5cGUuQj1mdW5jdGlvbigpe2lmKHRoaXMuaWIpe3ZhciBhPXRoaXMuY2I/dnEodXUodGhpcykpOm51bGw7YSYmIWtxKGEsImRvY3VtZW50VXJpIik/KF8uTmQodXUodGhpcyksImxvYWQiLHRoaXMuZywhMSx0aGlzKSx4dSh0aGlzKSk6c2V0VGltZW91dCh0aGlzLkIuYmluZCh0aGlzKSwyNTApfX07dmFyIEF1PWZ1bmN0aW9uKGEsYixjLGQsZSxmKXtpZihfLktjJiZlKXJldHVybiB5dShhKTtpZihlJiYhZClyZXR1cm4hMTtpZighXy5IYyl7dHlwZW9mIGI9PT0ibnVtYmVyIiYmKGI9enUoYikpO3ZhciBnPWI9PTE3fHxiPT0xOHx8Xy5LYyYmYj09OTE7aWYoKCFjfHxfLktjKSYmZ3x8Xy5LYyYmYj09MTYmJihkfHxmKSlyZXR1cm4hMX1pZihfLkljJiZkJiZjKXN3aXRjaChhKXtjYXNlIDIyMDpjYXNlIDIxOTpjYXNlIDIyMTpjYXNlIDE5MjpjYXNlIDE4NjpjYXNlIDE4OTpjYXNlIDE4NzpjYXNlIDE4ODpjYXNlIDE5MDpjYXNlIDE5MTpjYXNlIDE5MjpjYXNlIDIyMjpyZXR1cm4hMX1zd2l0Y2goYSl7Y2FzZSAxMzpyZXR1cm4gXy5IYz9mfHxlPyExOiEoYyYmZCk6ITA7Y2FzZSAyNzpyZXR1cm4hXy5JYyYmIV8uSGN9cmV0dXJuIF8uSGMmJihkfHxlfHxmKT8hMTp5dShhKX0seXU9ZnVuY3Rpb24oYSl7aWYoYT49NDgmJmE8PTU3fHxhPj05NiYmYTw9MTA2fHxhPj02NSYmYTw9OTB8fApfLkljJiZhPT0wKXJldHVybiEwO3N3aXRjaChhKXtjYXNlIDMyOmNhc2UgNDM6Y2FzZSA2MzpjYXNlIDY0OmNhc2UgMTA3OmNhc2UgMTA5OmNhc2UgMTEwOmNhc2UgMTExOmNhc2UgMTg2OmNhc2UgNTk6Y2FzZSAxODk6Y2FzZSAxODc6Y2FzZSA2MTpjYXNlIDE4ODpjYXNlIDE5MDpjYXNlIDE5MTpjYXNlIDE5MjpjYXNlIDIyMjpjYXNlIDIxOTpjYXNlIDIyMDpjYXNlIDIyMTpjYXNlIDE2MzpjYXNlIDU4OnJldHVybiEwO2Nhc2UgMTczOmNhc2UgMTcxOnJldHVybiBfLkhjO2RlZmF1bHQ6cmV0dXJuITF9fSx6dT1mdW5jdGlvbihhKXtpZihfLkhjKWE9QnUoYSk7ZWxzZSBpZihfLktjJiZfLkljKXN3aXRjaChhKXtjYXNlIDkzOmE9OTF9cmV0dXJuIGF9LEJ1PWZ1bmN0aW9uKGEpe3N3aXRjaChhKXtjYXNlIDYxOnJldHVybiAxODc7Y2FzZSA1OTpyZXR1cm4gMTg2O2Nhc2UgMTczOnJldHVybiAxODk7Y2FzZSAyMjQ6cmV0dXJuIDkxO2Nhc2UgMDpyZXR1cm4gMjI0O2RlZmF1bHQ6cmV0dXJuIGF9fTtfLkUoY3AsXy51ZCk7dmFyIEN1PWZ1bmN0aW9uKGEsYil7Xy5HLmNhbGwodGhpcyk7YSYmdGhpcy5hdHRhY2goYSxiKX07Xy5FKEN1LF8uRyk7Xy5sPUN1LnByb3RvdHlwZTtfLmwubWM9bnVsbDtfLmwuamU9bnVsbDtfLmwuemY9bnVsbDtfLmwubGU9bnVsbDtfLmwuTmE9LTE7Xy5sLkpiPS0xO18ubC5YZT0hMTsKdmFyIER1PXszOjEzLDEyOjE0NCw2MzIzMjozOCw2MzIzMzo0MCw2MzIzNDozNyw2MzIzNTozOSw2MzIzNjoxMTIsNjMyMzc6MTEzLDYzMjM4OjExNCw2MzIzOToxMTUsNjMyNDA6MTE2LDYzMjQxOjExNyw2MzI0MjoxMTgsNjMyNDM6MTE5LDYzMjQ0OjEyMCw2MzI0NToxMjEsNjMyNDY6MTIyLDYzMjQ3OjEyMyw2MzI0ODo0NCw2MzI3Mjo0Niw2MzI3MzozNiw2MzI3NTozNSw2MzI3NjozMyw2MzI3NzozNCw2MzI4OToxNDQsNjMzMDI6NDV9LEV1PXtVcDozOCxEb3duOjQwLExlZnQ6MzcsUmlnaHQ6MzksRW50ZXI6MTMsRjE6MTEyLEYyOjExMyxGMzoxMTQsRjQ6MTE1LEY1OjExNixGNjoxMTcsRjc6MTE4LEY4OjExOSxGOToxMjAsRjEwOjEyMSxGMTE6MTIyLEYxMjoxMjMsIlUrMDA3RiI6NDYsSG9tZTozNixFbmQ6MzUsUGFnZVVwOjMzLFBhZ2VEb3duOjM0LEluc2VydDo0NX0sRnU9Xy5LYyYmXy5IYztfLmw9Q3UucHJvdG90eXBlOwpfLmwuWWo9ZnVuY3Rpb24oYSl7Xy5JYyYmKHRoaXMuTmE9PTE3JiYhYS5jdHJsS2V5fHx0aGlzLk5hPT0xOCYmIWEuYWx0S2V5fHxfLktjJiZ0aGlzLk5hPT05MSYmIWEubWV0YUtleSkmJih0aGlzLkpiPXRoaXMuTmE9LTEpO3RoaXMuTmE9PS0xJiYoYS5jdHJsS2V5JiZhLmtleUNvZGUhPTE3P3RoaXMuTmE9MTc6YS5hbHRLZXkmJmEua2V5Q29kZSE9MTg/dGhpcy5OYT0xODphLm1ldGFLZXkmJmEua2V5Q29kZSE9OTEmJih0aGlzLk5hPTkxKSk7QXUoYS5rZXlDb2RlLHRoaXMuTmEsYS5zaGlmdEtleSxhLmN0cmxLZXksYS5hbHRLZXksYS5tZXRhS2V5KT8odGhpcy5KYj16dShhLmtleUNvZGUpLEZ1JiYodGhpcy5YZT1hLmFsdEtleSkpOnRoaXMuaGFuZGxlRXZlbnQoYSl9O18ubC5iaz1mdW5jdGlvbihhKXt0aGlzLkpiPXRoaXMuTmE9LTE7dGhpcy5YZT1hLmFsdEtleX07Cl8ubC5oYW5kbGVFdmVudD1mdW5jdGlvbihhKXt2YXIgYj1hLmcsYz1iLmFsdEtleTtpZihfLkljJiZhLnR5cGU9PSJrZXlwcmVzcyIpe3ZhciBkPXRoaXMuSmI7dmFyIGU9Yi5jaGFyQ29kZT49MCYmYi5jaGFyQ29kZTw2MzIzMiYmeXUoZCk/Yi5jaGFyQ29kZTowfWVsc2UgYS50eXBlPT0ia2V5cHJlc3MiPyhGdSYmKGM9dGhpcy5YZSksYi5rZXlDb2RlPT1iLmNoYXJDb2RlP2Iua2V5Q29kZTwzMj8oZD1iLmtleUNvZGUsZT0wKTooZD10aGlzLkpiLGU9Yi5jaGFyQ29kZSk6KGQ9Yi5rZXlDb2RlfHx0aGlzLkpiLGU9Yi5jaGFyQ29kZXx8MCkpOihkPWIua2V5Q29kZXx8dGhpcy5KYixlPWIuY2hhckNvZGV8fDApLF8uS2MmJmU9PTYzJiZkPT0yMjQmJihkPTE5MSk7dmFyIGY9ZD16dShkKTtkP2Q+PTYzMjMyJiZkIGluIER1P2Y9RHVbZF06ZD09MjUmJmEuc2hpZnRLZXkmJihmPTkpOmIua2V5SWRlbnRpZmllciYmYi5rZXlJZGVudGlmaWVyIGluIEV1JiYoZj1FdVtiLmtleUlkZW50aWZpZXJdKTsKaWYoIV8uSGN8fGEudHlwZSE9ImtleXByZXNzInx8QXUoZix0aGlzLk5hLGEuc2hpZnRLZXksYS5jdHJsS2V5LGMsYS5tZXRhS2V5KSlhPWY9PXRoaXMuTmEsdGhpcy5OYT1mLGI9bmV3IGNwKGYsZSxhLGIpLGIuYWx0S2V5PWMsdGhpcy5kaXNwYXRjaEV2ZW50KGIpfTtfLmwuRD1mdW5jdGlvbigpe3JldHVybiB0aGlzLm1jfTtfLmwuYXR0YWNoPWZ1bmN0aW9uKGEsYil7dGhpcy5sZSYmdGhpcy5kZXRhY2goKTt0aGlzLm1jPWE7dGhpcy5qZT1fLkYodGhpcy5tYywia2V5cHJlc3MiLHRoaXMsYik7dGhpcy56Zj1fLkYodGhpcy5tYywia2V5ZG93biIsdGhpcy5ZaixiLHRoaXMpO3RoaXMubGU9Xy5GKHRoaXMubWMsImtleXVwIix0aGlzLmJrLGIsdGhpcyl9OwpfLmwuZGV0YWNoPWZ1bmN0aW9uKCl7dGhpcy5qZSYmKF8uT2QodGhpcy5qZSksXy5PZCh0aGlzLnpmKSxfLk9kKHRoaXMubGUpLHRoaXMubGU9dGhpcy56Zj10aGlzLmplPW51bGwpO3RoaXMubWM9bnVsbDt0aGlzLkpiPXRoaXMuTmE9LTF9O18ubC5LPWZ1bmN0aW9uKCl7Q3UuUC5LLmNhbGwodGhpcyk7dGhpcy5kZXRhY2goKX07dmFyIEd1O3ZhciBIdT1mdW5jdGlvbihhLGIsYyl7QXJyYXkuaXNBcnJheShjKSYmKGM9Yy5qb2luKCIgIikpO3ZhciBkPSJhcmlhLSIrYjtjPT09IiJ8fGM9PXZvaWQgMD8oR3V8fChjPXt9LEd1PShjLmF0b21pYz0hMSxjLmF1dG9jb21wbGV0ZT0ibm9uZSIsYy5kcm9wZWZmZWN0PSJub25lIixjLmhhc3BvcHVwPSExLGMubGl2ZT0ib2ZmIixjLm11bHRpbGluZT0hMSxjLm11bHRpc2VsZWN0YWJsZT0hMSxjLm9yaWVudGF0aW9uPSJ2ZXJ0aWNhbCIsYy5yZWFkb25seT0hMSxjLnJlbGV2YW50PSJhZGRpdGlvbnMgdGV4dCIsYy5yZXF1aXJlZD0hMSxjLnNvcnQ9Im5vbmUiLGMuYnVzeT0hMSxjLmRpc2FibGVkPSExLGMuaGlkZGVuPSExLGMuaW52YWxpZD0iZmFsc2UiLGMpKSxjPUd1LGIgaW4gYz9hLnNldEF0dHJpYnV0ZShkLGNbYl0pOmEucmVtb3ZlQXR0cmlidXRlKGQpKTphLnNldEF0dHJpYnV0ZShkLGMpfTt2YXIgSXU9ZnVuY3Rpb24oYSl7cmV0dXJuIHR5cGVvZiBhLmNsYXNzTmFtZT09InN0cmluZyI/YS5jbGFzc05hbWU6YS5nZXRBdHRyaWJ1dGUmJmEuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIn0sSnU9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuY2xhc3NMaXN0P2EuY2xhc3NMaXN0Okl1KGEpLm1hdGNoKC9cUysvZyl8fFtdfSxLdT1mdW5jdGlvbihhLGIpe3R5cGVvZiBhLmNsYXNzTmFtZT09InN0cmluZyI/YS5jbGFzc05hbWU9YjphLnNldEF0dHJpYnV0ZSYmYS5zZXRBdHRyaWJ1dGUoImNsYXNzIixiKX0sTHU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5jbGFzc0xpc3Q/YS5jbGFzc0xpc3QuY29udGFpbnMoYik6Xy51YShKdShhKSxiKX0sTXU9ZnVuY3Rpb24oYSxiKXtpZihhLmNsYXNzTGlzdClhLmNsYXNzTGlzdC5hZGQoYik7ZWxzZSBpZighTHUoYSxiKSl7dmFyIGM9SXUoYSk7S3UoYSxjKyhjLmxlbmd0aD4wPyIgIitiOmIpKX19LE51PWZ1bmN0aW9uKGEsYil7aWYoYS5jbGFzc0xpc3QpQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChiLApmdW5jdGlvbihlKXtNdShhLGUpfSk7ZWxzZXt2YXIgYz17fTtBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKEp1KGEpLGZ1bmN0aW9uKGUpe2NbZV09ITB9KTtBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGIsZnVuY3Rpb24oZSl7Y1tlXT0hMH0pO2I9IiI7Zm9yKHZhciBkIGluIGMpYis9Yi5sZW5ndGg+MD8iICIrZDpkO0t1KGEsYil9fSxPdT1mdW5jdGlvbihhLGIpe2EuY2xhc3NMaXN0P2EuY2xhc3NMaXN0LnJlbW92ZShiKTpMdShhLGIpJiZLdShhLEFycmF5LnByb3RvdHlwZS5maWx0ZXIuY2FsbChKdShhKSxmdW5jdGlvbihjKXtyZXR1cm4gYyE9Yn0pLmpvaW4oIiAiKSl9LFB1PWZ1bmN0aW9uKGEsYil7YS5jbGFzc0xpc3Q/QXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChiLGZ1bmN0aW9uKGMpe091KGEsYyl9KTpLdShhLEFycmF5LnByb3RvdHlwZS5maWx0ZXIuY2FsbChKdShhKSxmdW5jdGlvbihjKXtyZXR1cm4hXy51YShiLGMpfSkuam9pbigiICIpKX07dmFyIFF1PWZ1bmN0aW9uKCl7fSxSdTtVcChRdSk7dmFyIFN1PXtidXR0b246InByZXNzZWQiLGNoZWNrYm94OiJjaGVja2VkIixtZW51aXRlbToic2VsZWN0ZWQiLG1lbnVpdGVtY2hlY2tib3g6ImNoZWNrZWQiLG1lbnVpdGVtcmFkaW86ImNoZWNrZWQiLHJhZGlvOiJjaGVja2VkIix0YWI6InNlbGVjdGVkIix0cmVlaXRlbToic2VsZWN0ZWQifTtfLmw9UXUucHJvdG90eXBlO18ubC5UZD1mdW5jdGlvbigpe307Xy5sLlM9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuaC5TKCJESVYiLFR1KHRoaXMsYSkuam9pbigiICIpLGEuaGEoKSl9O18ubC5KZT1mdW5jdGlvbigpe3JldHVybiEwfTsKXy5sLlZhPWZ1bmN0aW9uKGEsYil7Yi5pZCYmaHUoYSxiLmlkKTtiJiZiLmZpcnN0Q2hpbGQ/VXUoYSxiLmZpcnN0Q2hpbGQubmV4dFNpYmxpbmc/Xy54YShiLmNoaWxkTm9kZXMpOmIuZmlyc3RDaGlsZCk6YS5QYj1udWxsO3ZhciBjPTAsZD10aGlzLkhiKCksZT10aGlzLkhiKCksZj0hMSxnPSExLGg9Xy54YShKdShiKSk7aC5mb3JFYWNoKGZ1bmN0aW9uKGspe2Z8fGshPWQ/Z3x8ayE9ZT9jfD1WdSh0aGlzLGspOmc9ITA6KGY9ITAsZT09ZCYmKGc9ITApKTtWdSh0aGlzLGspPT0xJiZiLmhhc0F0dHJpYnV0ZSgidGFiaW5kZXgiKSYmenEoYikmJkFxKGIsITEpfSx0aGlzKTthLnhhPWM7Znx8KGgucHVzaChkKSxlPT1kJiYoZz0hMCkpO2d8fGgucHVzaChlKTsoYT1hLmtmKSYmaC5wdXNoLmFwcGx5KGgsYSk7ZiYmZyYmIWF8fEt1KGIsaC5qb2luKCIgIikpO3JldHVybiBifTsKXy5sLnBoPWZ1bmN0aW9uKGEpe2EuamE9PW51bGwmJihhLmphPUpyKGEuWmE/YS5vOmEuaC5nLmJvZHkpKTthLmphJiZ0aGlzLkxlKGEuRCgpLCEwKTthLmlzRW5hYmxlZCgpJiZ0aGlzLkljKGEsYS5pc1Zpc2libGUoKSl9O3ZhciBXdT1mdW5jdGlvbihhLGIpe2lmKGE9YS5UZCgpKXt2YXIgYz1iLmdldEF0dHJpYnV0ZSgicm9sZSIpfHxudWxsO2EhPWMmJihhP2Iuc2V0QXR0cmlidXRlKCJyb2xlIixhKTpiLnJlbW92ZUF0dHJpYnV0ZSgicm9sZSIpKX19O18ubD1RdS5wcm90b3R5cGU7Xy5sLndkPWZ1bmN0aW9uKGEsYil7Xy5HbiYmYS5zdHlsZSYmKGEuc3R5bGVbXy5Hbl09Yj8iIjoibm9uZSIpfTtfLmwuTGU9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLkhiKCkrIi1TSXNyVGQiOyhhPWEuRD9hLkQoKTphKSYmKGI/TnU6UHUpKGEsW2NdKX07Cl8ubC5LZT1mdW5jdGlvbihhKXt2YXIgYjtyZXR1cm4gYS5MYSYzMiYmKGI9YS5EKCkpP2IuaGFzQXR0cmlidXRlKCJ0YWJpbmRleCIpJiZ6cShiKTohMX07Xy5sLkljPWZ1bmN0aW9uKGEsYil7dmFyIGM7aWYoYS5MYSYzMiYmKGM9YS5EKCkpKXtpZighYiYmYS54YSYzMil7dHJ5e2MuYmx1cigpfWNhdGNoKGQpe31hLnhhJjMyJiZhLlZnKG51bGwpfShjLmhhc0F0dHJpYnV0ZSgidGFiaW5kZXgiKSYmenEoYykpIT1iJiZBcShjLGIpfX07Xy5sLmRhPWZ1bmN0aW9uKGEsYil7SHIoYSxiKTthJiZIdShhLCJoaWRkZW4iLCFiKX07Xy5sLkxjPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLkQoKTtpZihkKXt2YXIgZT1YdSh0aGlzLGIpO2UmJihhPWEuRD9hLkQoKTphKSYmKGM/TnU6UHUpKGEsW2VdKTt0aGlzLmdiKGQsYixjKX19OwpfLmwuZ2I9ZnVuY3Rpb24oYSxiLGMpe1J1fHwoUnU9ezE6ImRpc2FibGVkIiw4OiJzZWxlY3RlZCIsMTY6ImNoZWNrZWQiLDY0OiJleHBhbmRlZCJ9KTtiPVJ1W2JdO3ZhciBkPWEuZ2V0QXR0cmlidXRlKCJyb2xlIil8fG51bGw7ZCYmKGQ9U3VbZF18fGIsYj1iPT0iY2hlY2tlZCJ8fGI9PSJzZWxlY3RlZCI/ZDpiKTtiJiZIdShhLGIsYyl9O18ubC5tZz1mdW5jdGlvbihhLGIpe2lmKGEmJihfLm5kKGEpLGIpKWlmKHR5cGVvZiBiPT09InN0cmluZyIpXy5xZChhLGIpO2Vsc2V7dmFyIGM9ZnVuY3Rpb24oZCl7aWYoZCl7dmFyIGU9Xy5lZChhKTthLmFwcGVuZENoaWxkKHR5cGVvZiBkPT09InN0cmluZyI/ZS5jcmVhdGVUZXh0Tm9kZShkKTpkKX19O0FycmF5LmlzQXJyYXkoYik/Yi5mb3JFYWNoKGMpOiFfLnJhKGIpfHwibm9kZVR5cGUiaW4gYj9jKGIpOl8ueGEoYikuZm9yRWFjaChjKX19O18ubC5IYj1mdW5jdGlvbigpe3JldHVybiJWSXBnSmQtYk1jZkFlIn07CnZhciBUdT1mdW5jdGlvbihhLGIpe3ZhciBjPWEuSGIoKSxkPVtjXSxlPWEuSGIoKTtlIT1jJiZkLnB1c2goZSk7Yz1iLnhhO2ZvcihlPVtdO2M7KXt2YXIgZj1jJi1jO2UucHVzaChYdShhLGYpKTtjJj1+Zn1kLnB1c2guYXBwbHkoZCxlKTsoYT1iLmtmKSYmZC5wdXNoLmFwcGx5KGQsYSk7cmV0dXJuIGR9LFh1PWZ1bmN0aW9uKGEsYil7YS5nfHxZdShhKTtyZXR1cm4gYS5nW2JdfSxWdT1mdW5jdGlvbihhLGIpe2lmKCFhLmgpe2EuZ3x8WXUoYSk7dmFyIGM9YS5nLGQ9e30sZTtmb3IoZSBpbiBjKWRbY1tlXV09ZTthLmg9ZH1hPXBhcnNlSW50KGEuaFtiXSwxMCk7cmV0dXJuIGlzTmFOKGEpPzA6YX0sWXU9ZnVuY3Rpb24oYSl7dmFyIGI9YS5IYigpO2EuZz17MTpiKyItT1dCNk1lIiwyOmIrIi1abWRrRSIsNDpiKyItYXVzd2pkIiw4OmIrIi1nazZTTWQiLDE2OmIrIi1iYXJ4aWUiLDMyOmIrIi1YcG5EQ2UiLDY0OmIrIi1GTkZZNmMifX07dmFyIFp1PWZ1bmN0aW9uKCl7fTtfLkUoWnUsUXUpO1VwKFp1KTtfLmw9WnUucHJvdG90eXBlO18ubC5UZD1mdW5jdGlvbigpe3JldHVybiJidXR0b24ifTtfLmwuZ2I9ZnVuY3Rpb24oYSxiLGMpe3N3aXRjaChiKXtjYXNlIDg6Y2FzZSAxNjpIdShhLCJwcmVzc2VkIixjKTticmVhaztkZWZhdWx0OmNhc2UgNjQ6Y2FzZSAxOlp1LlAuZ2IuY2FsbCh0aGlzLGEsYixjKX19O18ubC5TPWZ1bmN0aW9uKGEpe3ZhciBiPVp1LlAuUy5jYWxsKHRoaXMsYSk7dGhpcy5hZyhiLGEuRmEoKSk7dmFyIGM9YS53YSgpO2MmJnRoaXMuS2EoYixjKTthLkxhJjE2JiZ0aGlzLmdiKGIsMTYsISEoYS54YSYxNikpO3JldHVybiBifTtfLmwuVmE9ZnVuY3Rpb24oYSxiKXtiPVp1LlAuVmEuY2FsbCh0aGlzLGEsYik7dmFyIGM9dGhpcy53YShiKTthLmw9YzthLko9dGhpcy5GYShiKTthLkxhJjE2JiZ0aGlzLmdiKGIsMTYsISEoYS54YSYxNikpO3JldHVybiBifTtfLmwud2E9ZnVuY3Rpb24oKXt9OwpfLmwuS2E9ZnVuY3Rpb24oKXt9O18ubC5GYT1mdW5jdGlvbihhKXtyZXR1cm4gYS50aXRsZX07Xy5sLmFnPWZ1bmN0aW9uKGEsYil7YSYmKGI/YS50aXRsZT1iOmEucmVtb3ZlQXR0cmlidXRlKCJ0aXRsZSIpKX07Xy5sLkhiPWZ1bmN0aW9uKCl7cmV0dXJuIlZJcGdKZC1MZ2JzU2UifTt2YXIgJHU9e3BnOiJtb3VzZWRvd24iLHFnOiJtb3VzZXVwIixvZzoibW91c2VjYW5jZWwiLHRtOiJtb3VzZW1vdmUiLHZtOiJtb3VzZW92ZXIiLHVtOiJtb3VzZW91dCIscm06Im1vdXNlZW50ZXIiLHNtOiJtb3VzZWxlYXZlIn07dmFyIGF2PWZ1bmN0aW9uKGEsYil7aWYoIWEpdGhyb3cgRXJyb3IoIlJhYCIrYSk7aWYodHlwZW9mIGIhPT0iZnVuY3Rpb24iKXRocm93IEVycm9yKCJTYWAiK2IpO30sYnY9e307dmFyIGN2PWZ1bmN0aW9uKGEsYixjKXtPLmNhbGwodGhpcyxjKTtpZighYil7Zm9yKGI9dGhpcy5jb25zdHJ1Y3RvcjtiOyl7dmFyIGQ9Xy5BYShiKTtpZihkPWJ2W2RdKWJyZWFrO2I9KGI9T2JqZWN0LmdldFByb3RvdHlwZU9mKGIucHJvdG90eXBlKSkmJmIuY29uc3RydWN0b3J9Yj1kP3R5cGVvZiBkLkliPT09ImZ1bmN0aW9uIj9kLkliKCk6bmV3IGQ6bnVsbH10aGlzLmc9Yjt0aGlzLlBiPWEhPT12b2lkIDA/YTpudWxsfTtfLkUoY3YsTyk7Xy5sPWN2LnByb3RvdHlwZTtfLmwuUGI9bnVsbDtfLmwueGE9MDtfLmwuTGE9Mzk7Xy5sLmNmPTI1NTtfLmwuaGI9ITA7Xy5sLmtmPW51bGw7Xy5sLnZmPSEwO18ubC5HZD0hMTt2YXIgZXY9ZnVuY3Rpb24oYSl7YS5aYSYmMCE9YS52ZiYmZHYoYSwhMSk7YS52Zj0hMX07CmN2LnByb3RvdHlwZS5TPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5nLlModGhpcyk7dGhpcy5vPWE7V3UodGhpcy5nLGEpO3RoaXMuR2R8fHRoaXMuZy53ZChhLCExKTt0aGlzLmlzVmlzaWJsZSgpfHx0aGlzLmcuZGEoYSwhMSl9O2N2LnByb3RvdHlwZS5sZz1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5nLkplKGEpfTtjdi5wcm90b3R5cGUuQWE9ZnVuY3Rpb24oYSl7dGhpcy5vPWE9dGhpcy5nLlZhKHRoaXMsYSk7V3UodGhpcy5nLGEpO3RoaXMuR2R8fHRoaXMuZy53ZChhLCExKTt0aGlzLmhiPWEuc3R5bGUuZGlzcGxheSE9Im5vbmUifTsKY3YucHJvdG90eXBlLnZhPWZ1bmN0aW9uKCl7Y3YuUC52YS5jYWxsKHRoaXMpO3ZhciBhPXRoaXMuZyxiPXRoaXMubzt0aGlzLmlzVmlzaWJsZSgpfHxIdShiLCJoaWRkZW4iLCF0aGlzLmlzVmlzaWJsZSgpKTt0aGlzLmlzRW5hYmxlZCgpfHxhLmdiKGIsMSwhdGhpcy5pc0VuYWJsZWQoKSk7dGhpcy5MYSY4JiZhLmdiKGIsOCwhISh0aGlzLnhhJjgpKTt0aGlzLkxhJjE2JiZhLmdiKGIsMTYsISEodGhpcy54YSYxNikpO3RoaXMuTGEmNjQmJmEuZ2IoYiw2NCx0aGlzLnpjKCkpO3RoaXMuZy5waCh0aGlzKTt0aGlzLkxhJi0yJiYodGhpcy52ZiYmZHYodGhpcywhMCksdGhpcy5MYSYzMiYmKGE9dGhpcy5EKCkpKSYmKGI9dGhpcy5CfHwodGhpcy5CPW5ldyBDdSksYi5hdHRhY2goYSksanUodGhpcykuTChiLCJrZXkiLHRoaXMuWmopLkwoYSwiZm9jdXMiLHRoaXMucmkpLkwoYSwiYmx1ciIsdGhpcy5WZykpfTsKdmFyIGR2PWZ1bmN0aW9uKGEsYil7dmFyIGM9anUoYSksZD1hLkQoKTtiPyhjLkwoZCwkdS5wZyxhLlpnKS5MKGQsWyR1LnFnLCR1Lm9nXSxhLmFoKS5MKGQsIm1vdXNlb3ZlciIsYS5SKS5MKGQsIm1vdXNlb3V0IixhLlQpLGEuRyE9Xy5lZSYmYy5MKGQsImNvbnRleHRtZW51IixhLkcpKTooYy5mYihkLCR1LnBnLGEuWmcpLmZiKGQsWyR1LnFnLCR1Lm9nXSxhLmFoKS5mYihkLCJtb3VzZW92ZXIiLGEuUikuZmIoZCwibW91c2VvdXQiLGEuVCksYS5HIT1fLmVlJiZjLmZiKGQsImNvbnRleHRtZW51IixhLkcpKX07Y3YucHJvdG90eXBlLnNhPWZ1bmN0aW9uKCl7Y3YuUC5zYS5jYWxsKHRoaXMpO3RoaXMuQiYmdGhpcy5CLmRldGFjaCgpO3RoaXMuaXNWaXNpYmxlKCkmJnRoaXMuaXNFbmFibGVkKCkmJnRoaXMuZy5JYyh0aGlzLCExKX07CmN2LnByb3RvdHlwZS5LPWZ1bmN0aW9uKCl7Y3YuUC5LLmNhbGwodGhpcyk7dGhpcy5CJiYodGhpcy5CLmRpc3Bvc2UoKSxkZWxldGUgdGhpcy5CKTtkZWxldGUgdGhpcy5nO3RoaXMua2Y9dGhpcy5QYj1udWxsfTtjdi5wcm90b3R5cGUuaGE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5QYn07Y3YucHJvdG90eXBlLkE9ZnVuY3Rpb24oYSl7dGhpcy5nLm1nKHRoaXMuRCgpLGEpO3RoaXMuUGI9YX07dmFyIFV1PWZ1bmN0aW9uKGEsYil7YS5QYj1ifTtfLmw9Y3YucHJvdG90eXBlO18ubC5aaD1mdW5jdGlvbihhKXt0aGlzLkEoYSl9O18ubC5pc1Zpc2libGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oYn07Xy5sLmRhPWZ1bmN0aW9uKGEsYil7aWYoYnx8dGhpcy5oYiE9YSYmdGhpcy5kaXNwYXRjaEV2ZW50KGE/InNob3ciOiJoaWRlIikpKGI9dGhpcy5EKCkpJiZ0aGlzLmcuZGEoYixhKSx0aGlzLmlzRW5hYmxlZCgpJiZ0aGlzLmcuSWModGhpcyxhKSx0aGlzLmhiPWF9OwpfLmwuaXNFbmFibGVkPWZ1bmN0aW9uKCl7cmV0dXJuISh0aGlzLnhhJjEpfTtfLmwubmI9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5GO2ImJnR5cGVvZiBiLmlzRW5hYmxlZD09ImZ1bmN0aW9uIiYmIWIuaXNFbmFibGVkKCl8fCFmdih0aGlzLDEsIWEpfHwoYXx8KGd2KHRoaXMsITEpLGh2KHRoaXMsITEpKSx0aGlzLmlzVmlzaWJsZSgpJiZ0aGlzLmcuSWModGhpcyxhKSxpdih0aGlzLDEsIWEsITApKX07dmFyIGh2PWZ1bmN0aW9uKGEsYil7ZnYoYSwyLGIpJiZpdihhLDIsYil9O2N2LnByb3RvdHlwZS5pc0FjdGl2ZT1mdW5jdGlvbigpe3JldHVybiEhKHRoaXMueGEmNCl9O3ZhciBndj1mdW5jdGlvbihhLGIpe2Z2KGEsNCxiKSYmaXYoYSw0LGIpfTtjdi5wcm90b3R5cGUuemM9ZnVuY3Rpb24oKXtyZXR1cm4hISh0aGlzLnhhJjY0KX07CnZhciBpdj1mdW5jdGlvbihhLGIsYyxkKXtkfHxiIT0xP2EuTGEmYiYmYyE9ISEoYS54YSZiKSYmKGEuZy5MYyhhLGIsYyksYS54YT1jP2EueGF8YjphLnhhJn5iKTphLm5iKCFjKX0sanY9ZnVuY3Rpb24oYSl7aWYoYS5aYSYmYS54YSYzMil0aHJvdyBFcnJvcigiTGEiKTthLnhhJjMyJiZpdihhLDMyLCExKTthLkxhJj0tMzN9LGt2PWZ1bmN0aW9uKGEsYil7cmV0dXJuISEoYS5jZiZiKSYmISEoYS5MYSZiKX0sbHY9ZnVuY3Rpb24oYSl7YS5jZiY9LTI1Nn0sZnY9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiEhKGEuTGEmYikmJiEhKGEueGEmYikhPWMmJighKDAmYil8fGEuZGlzcGF0Y2hFdmVudChndShiLGMpKSkmJiFhLmViKCl9O2N2LnByb3RvdHlwZS5SPWZ1bmN0aW9uKGEpeyFtdihhLHRoaXMuRCgpKSYmdGhpcy5kaXNwYXRjaEV2ZW50KCJlbnRlciIpJiZ0aGlzLmlzRW5hYmxlZCgpJiZrdih0aGlzLDIpJiZodih0aGlzLCEwKX07CmN2LnByb3RvdHlwZS5UPWZ1bmN0aW9uKGEpeyFtdihhLHRoaXMuRCgpKSYmdGhpcy5kaXNwYXRjaEV2ZW50KCJsZWF2ZSIpJiYoa3YodGhpcyw0KSYmZ3YodGhpcywhMSksa3YodGhpcywyKSYmaHYodGhpcywhMSkpfTtjdi5wcm90b3R5cGUuRz1fLmVlO3ZhciBtdj1mdW5jdGlvbihhLGIpe3JldHVybiEhYS5yZWxhdGVkVGFyZ2V0JiZfLnBkKGIsYS5yZWxhdGVkVGFyZ2V0KX07Xy5sPWN2LnByb3RvdHlwZTtfLmwuWmc9ZnVuY3Rpb24oYSl7dGhpcy5pc0VuYWJsZWQoKSYmKGt2KHRoaXMsMikmJmh2KHRoaXMsITApLGEuZy5idXR0b24hPTB8fF8uS2MmJmEuY3RybEtleXx8KGt2KHRoaXMsNCkmJmd2KHRoaXMsITApLHRoaXMuZyYmdGhpcy5nLktlKHRoaXMpJiZ0aGlzLkQoKS5mb2N1cygpKSk7dGhpcy5HZHx8YS5nLmJ1dHRvbiE9MHx8Xy5LYyYmYS5jdHJsS2V5fHxhLnByZXZlbnREZWZhdWx0KCl9OwpfLmwuYWg9ZnVuY3Rpb24oYSl7dGhpcy5pc0VuYWJsZWQoKSYmKGt2KHRoaXMsMikmJmh2KHRoaXMsITApLHRoaXMuaXNBY3RpdmUoKSYmdGhpcy53ZShhKSYma3YodGhpcyw0KSYmZ3YodGhpcywhMSkpfTtfLmwud2U9ZnVuY3Rpb24oYSl7aWYoa3YodGhpcywxNikpe3ZhciBiPSEodGhpcy54YSYxNik7ZnYodGhpcywxNixiKSYmaXYodGhpcywxNixiKX1rdih0aGlzLDgpJiZmdih0aGlzLDgsITApJiZpdih0aGlzLDgsITApO2t2KHRoaXMsNjQpJiYoYj0hdGhpcy56YygpLGZ2KHRoaXMsNjQsYikmJml2KHRoaXMsNjQsYikpO2I9bmV3IF8uc2QoImFjdGlvbiIsdGhpcyk7YSYmKGIuYWx0S2V5PWEuYWx0S2V5LGIuY3RybEtleT1hLmN0cmxLZXksYi5tZXRhS2V5PWEubWV0YUtleSxiLnNoaWZ0S2V5PWEuc2hpZnRLZXksYi5qPWEuaixiLnRpbWVTdGFtcD1hLnRpbWVTdGFtcCk7cmV0dXJuIHRoaXMuZGlzcGF0Y2hFdmVudChiKX07Cl8ubC5yaT1mdW5jdGlvbigpe2t2KHRoaXMsMzIpJiZmdih0aGlzLDMyLCEwKSYmaXYodGhpcywzMiwhMCl9O18ubC5WZz1mdW5jdGlvbigpe2t2KHRoaXMsNCkmJmd2KHRoaXMsITEpO2t2KHRoaXMsMzIpJiZmdih0aGlzLDMyLCExKSYmaXYodGhpcywzMiwhMSl9O18ubC5aaj1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5pc1Zpc2libGUoKSYmdGhpcy5pc0VuYWJsZWQoKSYmdGhpcy51ZihhKT8oYS5wcmV2ZW50RGVmYXVsdCgpLGEuc3RvcFByb3BhZ2F0aW9uKCksITApOiExfTtfLmwudWY9ZnVuY3Rpb24oYSl7cmV0dXJuIGEua2V5Q29kZT09MTMmJnRoaXMud2UoYSl9O2lmKHR5cGVvZiBjdiE9PSJmdW5jdGlvbiIpdGhyb3cgRXJyb3IoIlRhYCIrY3YpO2lmKHR5cGVvZiBRdSE9PSJmdW5jdGlvbiIpdGhyb3cgRXJyb3IoIlVhYCIrUXUpO3ZhciBudj1fLkFhKGN2KTtidltudl09UXU7YXYoIlZJcGdKZC1iTWNmQWUiLGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBjdihudWxsKX0pO18uRShkcCxadSk7VXAoZHApO18ubD1kcC5wcm90b3R5cGU7Xy5sLlRkPWZ1bmN0aW9uKCl7fTtfLmwuUz1mdW5jdGlvbihhKXtldihhKTtsdihhKTtqdihhKTt2YXIgYj1hLmgsYz1iLlMsZD17ImNsYXNzIjpUdSh0aGlzLGEpLmpvaW4oIiAiKSxkaXNhYmxlZDohYS5pc0VuYWJsZWQoKSx0aXRsZTphLkZhKCl8fCIiLHZhbHVlOmEud2EoKXx8IiJ9O2E9KGE9YS5oYSgpKT8odHlwZW9mIGE9PT0ic3RyaW5nIj9hOkFycmF5LmlzQXJyYXkoYSk/YS5tYXAoRHEpLmpvaW4oIiIpOkNxKGEpKS5yZXBsYWNlKC9bXHRcclxuIF0rL2csIiAiKS5yZXBsYWNlKC9eW1x0XHJcbiBdK3xbXHRcclxuIF0rJC9nLCIiKToiIjtyZXR1cm4gYy5jYWxsKGIsIkJVVFRPTiIsZCxhfHwiIil9O18ubC5KZT1mdW5jdGlvbihhKXtyZXR1cm4gYS50YWdOYW1lPT0iQlVUVE9OInx8YS50YWdOYW1lPT0iSU5QVVQiJiYoYS50eXBlPT0iYnV0dG9uInx8YS50eXBlPT0ic3VibWl0Inx8YS50eXBlPT0icmVzZXQiKX07Cl8ubC5WYT1mdW5jdGlvbihhLGIpe2V2KGEpO2x2KGEpO2p2KGEpO2lmKGIuZGlzYWJsZWQpe3ZhciBjPVh1KHRoaXMsMSk7TXUoYixjKX1yZXR1cm4gZHAuUC5WYS5jYWxsKHRoaXMsYSxiKX07Xy5sLnBoPWZ1bmN0aW9uKGEpe2p1KGEpLkwoYS5EKCksImNsaWNrIixhLndlKX07Xy5sLndkPWZ1bmN0aW9uKCl7fTtfLmwuTGU9ZnVuY3Rpb24oKXt9O18ubC5LZT1mdW5jdGlvbihhKXtyZXR1cm4gYS5pc0VuYWJsZWQoKX07Xy5sLkljPWZ1bmN0aW9uKCl7fTtfLmwuTGM9ZnVuY3Rpb24oYSxiLGMpe2RwLlAuTGMuY2FsbCh0aGlzLGEsYixjKTsoYT1hLkQoKSkmJmI9PTEmJihhLmRpc2FibGVkPWMpfTtfLmwud2E9ZnVuY3Rpb24oYSl7cmV0dXJuIGEudmFsdWV9O18ubC5LYT1mdW5jdGlvbihhLGIpe2EmJihhLnZhbHVlPWIpfTtfLmwuZ2I9ZnVuY3Rpb24oKXt9O3ZhciBvdj1mdW5jdGlvbihhLGIsYyl7Y3YuY2FsbCh0aGlzLGEsYnx8ZHAuSWIoKSxjKX07Xy5FKG92LGN2KTtfLmw9b3YucHJvdG90eXBlO18ubC53YT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmx9O18ubC5LYT1mdW5jdGlvbihhKXt0aGlzLmw9YTt0aGlzLmcuS2EodGhpcy5EKCksYSl9O18ubC5GYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLkp9O18ubC5hZz1mdW5jdGlvbihhKXt0aGlzLko9YTt0aGlzLmcuYWcodGhpcy5EKCksYSl9O18ubC5LPWZ1bmN0aW9uKCl7b3YuUC5LLmNhbGwodGhpcyk7ZGVsZXRlIHRoaXMubDtkZWxldGUgdGhpcy5KfTtfLmwudmE9ZnVuY3Rpb24oKXtvdi5QLnZhLmNhbGwodGhpcyk7aWYodGhpcy5MYSYzMil7dmFyIGE9dGhpcy5EKCk7YSYmanUodGhpcykuTChhLCJrZXl1cCIsdGhpcy51Zil9fTsKXy5sLnVmPWZ1bmN0aW9uKGEpe3JldHVybiBhLmtleUNvZGU9PTEzJiZhLnR5cGU9PSJrZXkifHxhLmtleUNvZGU9PTMyJiZhLnR5cGU9PSJrZXl1cCI/dGhpcy53ZShhKTphLmtleUNvZGU9PTMyfTthdigiVklwZ0pkLUxnYnNTZSIsZnVuY3Rpb24oKXtyZXR1cm4gbmV3IG92KG51bGwpfSk7dmFyIHB2PWZ1bmN0aW9uKGEsYil7Ty5jYWxsKHRoaXMpO3RoaXMuQz1hfHwiIjt0aGlzLmo9bnVsbDt0aGlzLkI9W107dGhpcy5nPW51bGw7dGhpcy5HPWJ8fCJHRVQiO3RoaXMubD10aGlzLkE9bnVsbH07Xy55KHB2LE8pO3B2LnByb3RvdHlwZS5TPWZ1bmN0aW9uKCl7dmFyIGE9e2NqOnRoaXMuQyxtZXRob2Q6dGhpcy5HLHJqOnRoaXMuQixkaXI6Xy5xZi50ZXN0KGNzKT8icnRsIjoibHRyIn07dGhpcy5BYShsbyhhdSxhKSl9O3B2LnByb3RvdHlwZS5BYT1mdW5jdGlvbihhKXt0aGlzLm89YTt0aGlzLmc9aXUodGhpcywiVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAiKTthPWl1KHRoaXMsIlZJcGdKZC15QVdORWItWjBBcnFmLXNGZUJxZiIpO3RoaXMubD1uZXcgb3YoIiIpO3RoaXMubC5WYShhKTthPWl1KHRoaXMsImFjdGl2aXR5LWNhbmNlbCIpO3RoaXMuaj1uZXcgb3YoIiIpO3RoaXMuai5WYShhKX07CnB2LnByb3RvdHlwZS52YT1mdW5jdGlvbigpe3ZhciBhPWp1KHRoaXMpO2EuTCh0aGlzLmwsImFjdGlvbiIsKDAsXy5DKSh0aGlzLkosdGhpcykpO2EuTCh0aGlzLmosImFjdGlvbiIsdGhpcy5kaXNwYXRjaEV2ZW50LmJpbmQodGhpcywiY2FuY2VsbGVkIikpfTtwdi5wcm90b3R5cGUuSj1mdW5jdGlvbigpe3ZhciBhPSEwO3RoaXMuQSYmKGE9dGhpcy5BKCkpO2EmJihhPW5ldyBvdSxfLkYoYSwic3VjY2VzcyIsZnVuY3Rpb24oKXt0aGlzLmRpc3BhdGNoRXZlbnQoInN1Y2Nlc3NmdWwiKX0pLF8uRihhLCJlcnJvciIsZnVuY3Rpb24oKXt0aGlzLmRpc3BhdGNoRXZlbnQoImZhaWxlZCIpfSksdHUoYSx0aGlzLmcpKTt0aGlzLmRpc3BhdGNoRXZlbnQoInN1Ym1pdHRlZCIpfTt2YXIgcXY9ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGMgaW4gYilhLmdbY10mJihhLmdbY10udmFsdWU9YltjXSl9LHJ2PWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuZ1tiXT9hLmdbYl0udmFsdWU6IiJ9Owpwdi5wcm90b3R5cGUuSz1mdW5jdGlvbigpe3RoaXMubD10aGlzLmc9dGhpcy5qPW51bGw7Ty5wcm90b3R5cGUuSy5jYWxsKHRoaXMpfTt2YXIgc3Y9ZnVuY3Rpb24oYSxiKXthLkE9Yn07Xy5FKGVwLFF1KTtVcChlcCk7Xy5sPWVwLnByb3RvdHlwZTtfLmwuVGQ9ZnVuY3Rpb24oKXt9O18ubC5WYT1mdW5jdGlvbihhLGIpe2V2KGEpO2x2KGEpO2p2KGEpO2VwLlAuVmEuY2FsbCh0aGlzLGEsYik7YS5BKGIudmFsdWUpO3JldHVybiBifTtfLmwuUz1mdW5jdGlvbihhKXtldihhKTtsdihhKTtqdihhKTtyZXR1cm4gYS5oLlMoIlRFWFRBUkVBIix7ImNsYXNzIjpUdSh0aGlzLGEpLmpvaW4oIiAiKSxkaXNhYmxlZDohYS5pc0VuYWJsZWQoKX0sYS5oYSgpfHwiIil9O18ubC5KZT1mdW5jdGlvbihhKXtyZXR1cm4gYS50YWdOYW1lPT0iVEVYVEFSRUEifTtfLmwuTGU9ZnVuY3Rpb24oKXt9O18ubC5LZT1mdW5jdGlvbihhKXtyZXR1cm4gYS5pc0VuYWJsZWQoKX07Xy5sLkljPWZ1bmN0aW9uKCl7fTtfLmwuTGM9ZnVuY3Rpb24oYSxiLGMpe2VwLlAuTGMuY2FsbCh0aGlzLGEsYixjKTsoYT1hLkQoKSkmJmI9PTEmJihhLmRpc2FibGVkPWMpfTtfLmwuZ2I9ZnVuY3Rpb24oKXt9OwpfLmwubWc9ZnVuY3Rpb24oYSxiKXthJiYoYS52YWx1ZT1iKX07Xy5sLkhiPWZ1bmN0aW9uKCl7cmV0dXJuIlZJcGdKZC1CN0k0T2QifTt2YXIgdHY9ZnVuY3Rpb24oYSxiLGMpe2N2LmNhbGwodGhpcyxhLGJ8fGVwLkliKCksYyk7ZXYodGhpcyk7dGhpcy5HZD0hMDsoYj10aGlzLkQoKSkmJnRoaXMuZy53ZChiLCEwKTt0aGlzLnhjPWEhPSIiO2F8fCh0aGlzLlBiPSIiKX07Xy5FKHR2LGN2KTtfLmw9dHYucHJvdG90eXBlO18ubC5BYz0hMTtfLmwuZGU9ITE7Xy5sLnhjPSExO18ubC53Yj0wO18ubC55aD0wO18ubC5HZj0wO18ubC5qaD0hMTtfLmwub2U9ITE7Xy5sLlVmPSExO18ubC5UZj0hMTtfLmwuRWM9IiI7dmFyIHV2PWZ1bmN0aW9uKGEpe3JldHVybiBhLmoudG9wK2Euai5ib3R0b20rYS5OLnRvcCthLk4uYm90dG9tfSx2dj1mdW5jdGlvbihhKXt2YXIgYj1hLkdmLGM9YS5EKCk7YiYmYyYmYS5vZSYmKGItPXV2KGEpKTtyZXR1cm4gYn0seHY9ZnVuY3Rpb24oYSl7YS5HZj01MDt3dihhKX0seXY9ZnVuY3Rpb24oYSl7YS55aD01MDt3dihhKX07dHYucHJvdG90eXBlLkthPWZ1bmN0aW9uKGEpe3RoaXMuQShTdHJpbmcoYSkpfTsKdHYucHJvdG90eXBlLndhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuRCgpLnZhbHVlIT10aGlzLkVjfHx6dih0aGlzKXx8dGhpcy54Yz90aGlzLkQoKS52YWx1ZToiIn07dHYucHJvdG90eXBlLkE9ZnVuY3Rpb24oYSl7dHYuUC5BLmNhbGwodGhpcyxhKTt0aGlzLnhjPWEhPSIiO3d2KHRoaXMpfTt0di5wcm90b3R5cGUubmI9ZnVuY3Rpb24oYSl7dHYuUC5uYi5jYWxsKHRoaXMsYSk7dGhpcy5EKCkuZGlzYWJsZWQ9IWF9O3ZhciB3dj1mdW5jdGlvbihhKXthLkQoKSYmYS5DKCl9LHp2PWZ1bmN0aW9uKGEpe3JldHVybiJwbGFjZWhvbGRlciJpbiBhLkQoKX0sQXY9ZnVuY3Rpb24oYSl7YS5FYyYmKHp2KGEpP2EuRCgpLnBsYWNlaG9sZGVyPWEuRWM6IWEuRCgpfHxhLnhjfHxhLmRlfHwoTXUoYS5EKCksIkI3STRPZC1Md0g2bmQtWVBxamJmIiksYS5EKCkudmFsdWU9YS5FYykpfTsKdHYucHJvdG90eXBlLnZhPWZ1bmN0aW9uKCl7dHYuUC52YS5jYWxsKHRoaXMpO3ZhciBhPXRoaXMuRCgpO18uRW4oYSx7b3ZlcmZsb3dZOiJoaWRkZW4iLG92ZXJmbG93WDoiYXV0byIsYm94U2l6aW5nOiJib3JkZXItYm94IixNc0JveFNpemluZzoiYm9yZGVyLWJveCIsV2Via2l0Qm94U2l6aW5nOiJib3JkZXItYm94IixNb3pCb3hTaXppbmc6ImJvcmRlci1ib3gifSk7dGhpcy5qPU5yKGEpO3RoaXMuTj1PcihhKTtqdSh0aGlzKS5MKGEsInNjcm9sbCIsdGhpcy5DKS5MKGEsImZvY3VzIix0aGlzLkMpLkwoYSwia2V5dXAiLHRoaXMuQykuTChhLCJtb3VzZXVwIix0aGlzLnFhKS5MKGEsImJsdXIiLHRoaXMuWik7QXYodGhpcyk7d3YodGhpcyl9Owp2YXIgQnY9ZnVuY3Rpb24oYSl7aWYoIWEuamgpe3ZhciBiPWEuRCgpLmNsb25lTm9kZSghMSk7Xy5FbihiLHtwb3NpdGlvbjoiYWJzb2x1dGUiLGhlaWdodDoiYXV0byIsdG9wOiItOTk5OXB4IixtYXJnaW46IjAiLHBhZGRpbmc6IjFweCIsYm9yZGVyOiIxcHggc29saWQgIzAwMCIsb3ZlcmZsb3c6ImhpZGRlbiJ9KTthLmguZy5ib2R5LmFwcGVuZENoaWxkKGIpO3ZhciBjPWIuc2Nyb2xsSGVpZ2h0O2Iuc3R5bGUucGFkZGluZz0iMTBweCI7dmFyIGQ9Yi5zY3JvbGxIZWlnaHQ7YS5VZj1kPmM7Yi5zdHlsZS5ib3JkZXJXaWR0aD0iMTBweCI7YS5UZj1iLnNjcm9sbEhlaWdodD5kO2Iuc3R5bGUuaGVpZ2h0PSIxMDBweCI7Yi5vZmZzZXRIZWlnaHQhPTEwMCYmKGEub2U9ITApO18ub2QoYik7YS5qaD0hMH1iPWEuRCgpO2lzTmFOKGEuai50b3ApJiYoYS5qPU5yKGIpLGEuTj1PcihiKSk7Yz1hLkQoKS5zY3JvbGxIZWlnaHQ7dmFyIGU9YS5EKCk7ZD1lLm9mZnNldEhlaWdodC1lLmNsaWVudEhlaWdodDsKaWYoIWEuVWYpe3ZhciBmPWEuajtkLT1mLnRvcCtmLmJvdHRvbX1hLlRmfHwoZT1PcihlKSxkLT1lLnRvcCtlLmJvdHRvbSk7Yys9ZD4wP2Q6MDthLm9lP2MtPXV2KGEpOihhLlVmfHwoZD1hLmosYys9ZC50b3ArZC5ib3R0b20pLGEuVGZ8fChhPU9yKGIpLGMrPWEudG9wK2EuYm90dG9tKSk7cmV0dXJuIGN9LEN2PWZ1bmN0aW9uKGEsYil7YS53YiE9YiYmKGEud2I9YixhLkQoKS5zdHlsZS5oZWlnaHQ9YisicHgiKX0sRHY9ZnVuY3Rpb24oYSl7dmFyIGI9YS5EKCk7Yi5zdHlsZS5oZWlnaHQ9ImF1dG8iO3ZhciBjPWIudmFsdWUubWF0Y2goL1xuL2cpfHxbXTtiLnJvd3M9Yy5sZW5ndGgrMTthLndiPTB9O3R2LnByb3RvdHlwZS5aPWZ1bmN0aW9uKCl7enYodGhpcyl8fCh0aGlzLmRlPSExLHRoaXMuRCgpLnZhbHVlPT0iIiYmKHRoaXMueGM9ITEsQXYodGhpcykpKX07CnR2LnByb3RvdHlwZS5DPWZ1bmN0aW9uKGEpe2lmKCF0aGlzLkFjKXt2YXIgYj10aGlzLkQoKTshenYodGhpcykmJmEmJmEudHlwZT09ImZvY3VzIiYmKGIudmFsdWU9PXRoaXMuRWMmJnRoaXMuRWMmJiF0aGlzLmRlJiYoT3UoYiwiQjdJNE9kLUx3SDZuZC1ZUHFqYmYiKSxiLnZhbHVlPSIiKSx0aGlzLmRlPSEwLHRoaXMueGM9Yi52YWx1ZSE9IiIpO3ZhciBjPSExO3RoaXMuQWM9ITA7YT10aGlzLndiO2lmKGIuc2Nyb2xsSGVpZ2h0KXt2YXIgZD0hMSxlPSExLGY9QnYodGhpcyksZz1iLm9mZnNldEhlaWdodCxoPXZ2KHRoaXMpO3ZhciBrPXRoaXMueWg7dmFyIG09dGhpcy5EKCk7ayYmbSYmdGhpcy5vZSYmKGstPXV2KHRoaXMpKTtoJiZmPGg/KEN2KHRoaXMsaCksZD0hMCk6ayYmZj5rPyhDdih0aGlzLGspLGIuc3R5bGUub3ZlcmZsb3dZPSIiLGU9ITApOmchPWY/Q3YodGhpcyxmKTp0aGlzLndifHwodGhpcy53Yj1mKTtkfHxlfHwoYz0hMCl9ZWxzZSBEdih0aGlzKTt0aGlzLkFjPQohMTtjJiYoYj10aGlzLkQoKSx0aGlzLkFjfHwodGhpcy5BYz0hMCwoZT1iLnNjcm9sbEhlaWdodCk/KGY9QnYodGhpcyksYz12dih0aGlzKSxjJiZmPD1jfHwoZD10aGlzLmosYi5zdHlsZS5wYWRkaW5nVG9wPWQudG9wKzErInB4IixCdih0aGlzKT09ZiYmKGIuc3R5bGUucGFkZGluZ1RvcD1kLnRvcCtlKyJweCIsYi5zY3JvbGxUb3A9MCxlPUJ2KHRoaXMpLWUsZT49Yz9Ddih0aGlzLGUpOkN2KHRoaXMsYykpLGIuc3R5bGUucGFkZGluZ1RvcD1kLnRvcCsicHgiKSk6RHYodGhpcyksdGhpcy5BYz0hMSkpO2EhPXRoaXMud2ImJnRoaXMuZGlzcGF0Y2hFdmVudCgicmVzaXplIil9fTsKdHYucHJvdG90eXBlLnFhPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5EKCksYj1hLm9mZnNldEhlaWdodDthLmZpbHRlcnMmJmEuZmlsdGVycy5sZW5ndGgmJihhPWEuZmlsdGVycy5pdGVtKCJEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5Ecm9wU2hhZG93IikpJiYoYi09YS5vZmZYKTtiIT10aGlzLndiJiYodGhpcy53Yj10aGlzLkdmPWIpfTt2YXIgRXY9ZnVuY3Rpb24oYSxiKXticC5jYWxsKHRoaXMsYSk7dGhpcy5CPSExO3RoaXMuQT1ifHx7fTt0aGlzLmo9bnVsbH07Xy55KEV2LGJwKTtfLmw9RXYucHJvdG90eXBlO18ubC50ZT1mdW5jdGlvbihhKXticC5wcm90b3R5cGUudGUuY2FsbCh0aGlzLGEpO2p1KHRoaXMpLkwodGhpcy5qLkQoKSwia2V5ZG93biIsKDAsXy5DKSh0aGlzLkZhKCkubmQsdGhpcy5GYSgpLCExKSk7dGhpcy5CPXRoaXMuRmEoKS5SYzt0aGlzLnZkKCl9O18ubC52ZD1mdW5jdGlvbigpe2JwLnByb3RvdHlwZS52ZC5jYWxsKHRoaXMpO3RoaXMuai5BKHRoaXMuRmEoKS5WKTt2YXIgYT10aGlzLkZhKCkuV2EoKSxiPXRoaXMuRmEoKS5yYSgpO2EmJmImJihxdih0aGlzLmcse2d0cmFuczp0aGlzLkZhKCkuVix0ZXh0OnRoaXMuRmEoKS54ZCgpLGhsOmNzLGxhbmdwYWlyOmErInwiK2J9KSxxdih0aGlzLmcsdGhpcy5BKSk7dGhpcy5kaXNwYXRjaEV2ZW50KCJyZWFkeSIpO3RoaXMuai5EKCkuZm9jdXMoKX07Cl8ubC5EYz1mdW5jdGlvbigpe3RoaXMuRmEoKS5uZCh0aGlzLkIpfTtfLmwuUz1mdW5jdGlvbigpe3RoaXMuQWEobG8oJHQpKX07Xy5sLkFhPWZ1bmN0aW9uKGEpe3RoaXMubz1hO2E9aXUodGhpcywiY29udHJpYnV0ZS1vcmlnaW5hbC10ZXh0Iik7dGhpcy5qPW5ldyB0digiIik7dGhpcy5qLlZhKGEpO3l2KHRoaXMuaik7eHYodGhpcy5qKTthPWl1KHRoaXMsImFjdGl2aXR5LWZvcm0tY29udGFpbmVyIik7dGhpcy5nPW5ldyBwdihzcywiUE9TVCIpO3RoaXMuZy5CPV8ucmcodGhpcy5BKTtzdih0aGlzLmcsKDAsXy5DKShmdW5jdGlvbigpe3F2KHRoaXMuZyx7dXRyYW5zOl8ub2ModGhpcy5qLndhKCkpfSk7cmV0dXJuIHJ2KHRoaXMuZywidXRyYW5zIikhPXJ2KHRoaXMuZywiZ3RyYW5zIil9LHRoaXMpKTt0aGlzLmcuaWEoYSl9OwpfLmwudmE9ZnVuY3Rpb24oKXticC5wcm90b3R5cGUudmEuY2FsbCh0aGlzKTt2YXIgYT1qdSh0aGlzKTthLkwodGhpcy5nLCJjYW5jZWxsZWQiLCgwLF8uQykoZnVuY3Rpb24oKXt0aGlzLmRpc3BhdGNoRXZlbnQoImNhbmNlbGxlZCIpfSx0aGlzKSk7YS5MKHRoaXMuZywic3VibWl0dGVkIiwoMCxfLkMpKGZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5GYSgpLGM9dGhpcy5qLndhKCk7Yi5WPWMmJl8ub2MoYyk7dGhpcy5kaXNwYXRjaEV2ZW50KCJzdWJtaXR0ZWQiKTtiPVEuTGk7Xy5xZCh0aGlzLkZhKCkuby5EKCksYil9LHRoaXMpKX07Xy5sLks9ZnVuY3Rpb24oKXt0aGlzLmomJnRoaXMuai5kaXNwb3NlKCk7dGhpcy5qPW51bGw7dGhpcy5nJiZ0aGlzLmcuZGlzcG9zZSgpO3RoaXMuZz1udWxsO2JwLnByb3RvdHlwZS5LLmNhbGwodGhpcyl9O3ZhciBGdj1mdW5jdGlvbihhKXtfLkcuY2FsbCh0aGlzKTt0aGlzLm89YTt0aGlzLkE9e307dGhpcy5qPW5ldyBfLkhmKHRoaXMpO3RoaXMubD1udWxsfTtfLnkoRnYsXy5HKTtGdi5wcm90b3R5cGUuYXR0YWNoPWZ1bmN0aW9uKCl7fTtGdi5wcm90b3R5cGUuZGV0YWNoPWZ1bmN0aW9uKCl7fTtGdi5wcm90b3R5cGUuSz1mdW5jdGlvbigpe3RoaXMuai5kaXNwb3NlKCk7dGhpcy5qPW51bGx9O3ZhciBHdj1mdW5jdGlvbihhLGIsYyl7aWYoYj1hLm8ualtiXSl7Yz1jfHx0eXBlb2YgYz09InVuZGVmaW5lZCI7Zm9yKHZhciBkPTA7ZDxiLklhLmxlbmd0aDsrK2QpYi5JYVtkXSYmYS5taChiLklhW2RdLGMpfX07RnYucHJvdG90eXBlLm1oPWZ1bmN0aW9uKGEsYil7Xy5FbihhLCJiYWNrZ3JvdW5kQ29sb3IiLGI/IiNFNkVDRjkiOiIiKTtfLkVuKGEsImNvbG9yIixiPyIjMDAwIjoiIil9O18uRShmcCxfLncpO18ubD1mcC5wcm90b3R5cGU7Xy5sLk1jPTA7Xy5sLks9ZnVuY3Rpb24oKXtmcC5QLksuY2FsbCh0aGlzKTt0aGlzLnN0b3AoKTtkZWxldGUgdGhpcy5oO2RlbGV0ZSB0aGlzLmp9O18ubC5zdGFydD1mdW5jdGlvbihhKXt0aGlzLnN0b3AoKTt0aGlzLk1jPV8uVGcodGhpcy5nLGEhPT12b2lkIDA/YTp0aGlzLmwpfTtfLmwuc3RvcD1mdW5jdGlvbigpe3RoaXMuaXNBY3RpdmUoKSYmXy51LmNsZWFyVGltZW91dCh0aGlzLk1jKTt0aGlzLk1jPTB9O18ubC5pc0FjdGl2ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLk1jIT0wfTtfLmwudGk9ZnVuY3Rpb24oKXt0aGlzLk1jPTA7dGhpcy5oJiZ0aGlzLmguY2FsbCh0aGlzLmopfTt2YXIgUW49e30sSHY9bnVsbCxJdj1mdW5jdGlvbihhKXthPV8uQWEoYSk7ZGVsZXRlIFFuW2FdO1JuKCkmJkh2JiZIdi5zdG9wKCl9LEt2PWZ1bmN0aW9uKCl7SHZ8fChIdj1uZXcgZnAoZnVuY3Rpb24oKXtKdigpfSwyMCkpO3ZhciBhPUh2O2EuaXNBY3RpdmUoKXx8YS5zdGFydCgpfSxKdj1mdW5jdGlvbigpe3ZhciBhPV8uYWMoKTtfLm5jKFFuLGZ1bmN0aW9uKGIpe0x2KGIsYSl9KTtSbigpfHxLdigpfTt2YXIgTXY9ZnVuY3Rpb24oKXtfLkcuY2FsbCh0aGlzKTt0aGlzLmc9MDt0aGlzLmVuZFRpbWU9dGhpcy5zdGFydFRpbWU9bnVsbH07Xy5FKE12LF8uRyk7TXYucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt0aGlzLmgoImJlZ2luIil9O012LnByb3RvdHlwZS5sPWZ1bmN0aW9uKCl7dGhpcy5oKCJlbmQiKX07TXYucHJvdG90eXBlLkRjPWZ1bmN0aW9uKCl7dGhpcy5oKCJzdG9wIil9O012LnByb3RvdHlwZS5oPWZ1bmN0aW9uKGEpe3RoaXMuZGlzcGF0Y2hFdmVudChhKX07dmFyIE52PWZ1bmN0aW9uKGEsYixjLGQpe012LmNhbGwodGhpcyk7aWYoIUFycmF5LmlzQXJyYXkoYSl8fCFBcnJheS5pc0FycmF5KGIpKXRocm93IEVycm9yKCJWYSIpO2lmKGEubGVuZ3RoIT1iLmxlbmd0aCl0aHJvdyBFcnJvcigiV2EiKTt0aGlzLm89YTt0aGlzLkc9Yjt0aGlzLmR1cmF0aW9uPWM7dGhpcy5GPWQ7dGhpcy5jb29yZHM9W107dGhpcy5wcm9ncmVzcz0wfTtfLkUoTnYsTXYpOwpOdi5wcm90b3R5cGUucGxheT1mdW5jdGlvbihhKXtpZihhfHx0aGlzLmc9PTApdGhpcy5wcm9ncmVzcz0wLHRoaXMuY29vcmRzPXRoaXMubztlbHNlIGlmKHRoaXMuZz09MSlyZXR1cm4hMTtJdih0aGlzKTt0aGlzLnN0YXJ0VGltZT1hPV8uYWMoKTt0aGlzLmc9PS0xJiYodGhpcy5zdGFydFRpbWUtPXRoaXMuZHVyYXRpb24qdGhpcy5wcm9ncmVzcyk7dGhpcy5lbmRUaW1lPXRoaXMuc3RhcnRUaW1lK3RoaXMuZHVyYXRpb247dGhpcy5wcm9ncmVzc3x8dGhpcy5qKCk7dGhpcy5oKCJwbGF5Iik7dGhpcy5nPT0tMSYmdGhpcy5oKCJyZXN1bWUiKTt0aGlzLmc9MTt2YXIgYj1fLkFhKHRoaXMpO2IgaW4gUW58fChRbltiXT10aGlzKTtLdigpO0x2KHRoaXMsYSk7cmV0dXJuITB9O052LnByb3RvdHlwZS5zdG9wPWZ1bmN0aW9uKGEpe0l2KHRoaXMpO3RoaXMuZz0wO2EmJih0aGlzLnByb2dyZXNzPTEpO092KHRoaXMsdGhpcy5wcm9ncmVzcyk7dGhpcy5EYygpO3RoaXMubCgpfTsKTnYucHJvdG90eXBlLllmPWZ1bmN0aW9uKGEpe3RoaXMucHJvZ3Jlc3M9YTt0aGlzLmc9PTEmJih0aGlzLnN0YXJ0VGltZT1fLmFjKCktdGhpcy5kdXJhdGlvbip0aGlzLnByb2dyZXNzLHRoaXMuZW5kVGltZT10aGlzLnN0YXJ0VGltZSt0aGlzLmR1cmF0aW9uKX07TnYucHJvdG90eXBlLks9ZnVuY3Rpb24oKXt0aGlzLmc9PTB8fHRoaXMuc3RvcCghMSk7dGhpcy5oKCJkZXN0cm95Iik7TnYuUC5LLmNhbGwodGhpcyl9Owp2YXIgTHY9ZnVuY3Rpb24oYSxiKXtiPGEuc3RhcnRUaW1lJiYoYS5lbmRUaW1lPWIrYS5lbmRUaW1lLWEuc3RhcnRUaW1lLGEuc3RhcnRUaW1lPWIpO2EucHJvZ3Jlc3M9KGItYS5zdGFydFRpbWUpLyhhLmVuZFRpbWUtYS5zdGFydFRpbWUpO2EucHJvZ3Jlc3M+MSYmKGEucHJvZ3Jlc3M9MSk7T3YoYSxhLnByb2dyZXNzKTthLnByb2dyZXNzPT0xPyhhLmc9MCxJdihhKSxhLmgoImZpbmlzaCIpLGEubCgpKTphLmc9PTEmJmEuQygpfSxPdj1mdW5jdGlvbihhLGIpe3R5cGVvZiBhLkY9PT0iZnVuY3Rpb24iJiYoYj1hLkYoYikpO2EuY29vcmRzPUFycmF5KGEuby5sZW5ndGgpO2Zvcih2YXIgYz0wO2M8YS5vLmxlbmd0aDtjKyspYS5jb29yZHNbY109KGEuR1tjXS1hLm9bY10pKmIrYS5vW2NdfTtOdi5wcm90b3R5cGUuQz1mdW5jdGlvbigpe3RoaXMuaCgiYW5pbWF0ZSIpfTtOdi5wcm90b3R5cGUuaD1mdW5jdGlvbihhKXt0aGlzLmRpc3BhdGNoRXZlbnQobmV3IFB2KGEsdGhpcykpfTsKdmFyIFB2PWZ1bmN0aW9uKGEsYil7Xy5zZC5jYWxsKHRoaXMsYSk7dGhpcy5jb29yZHM9Yi5jb29yZHM7dGhpcy54PWIuY29vcmRzWzBdO3RoaXMueT1iLmNvb3Jkc1sxXTt0aGlzLno9Yi5jb29yZHNbMl07dGhpcy5kdXJhdGlvbj1iLmR1cmF0aW9uO3RoaXMucHJvZ3Jlc3M9Yi5wcm9ncmVzczt0aGlzLnN0YXRlPWIuZ307Xy5FKFB2LF8uc2QpO3ZhciBRdj1mdW5jdGlvbigpe2lmKF8uTGMpe3ZhciBhPS9XaW5kb3dzIE5UIChbMC05Ll0rKS87cmV0dXJuKGE9YS5leGVjKF8uVWEoKSkpP2FbMV06IjAifXJldHVybiBfLktjPyhhPS8xWzB8MV1bXy5dWzAtOV8uXSsvLChhPWEuZXhlYyhfLlVhKCkpKT9hWzBdLnJlcGxhY2UoL18vZywiLiIpOiIxMCIpOl8uTWM/KGE9L0FuZHJvaWRccysoW15cKTtdKykoXCl8OykvLChhPWEuZXhlYyhfLlVhKCkpKT9hWzFdOiIiKTpfLk5jfHxfLk9jfHxfLlBjPyhhPS8oPzppUGhvbmV8Q1BVKVxzK09TXHMrKFxTKykvLChhPWEuZXhlYyhfLlVhKCkpKT9hWzFdLnJlcGxhY2UoL18vZywiLiIpOiIiKToiIn0oKTt2YXIgUnY9ZnVuY3Rpb24oYSl7cmV0dXJuKGE9YS5leGVjKF8uVWEoKSkpP2FbMV06IiJ9LFN2PWZ1bmN0aW9uKCl7aWYoXy53aSlyZXR1cm4gUnYoL0ZpcmVmb3hcLyhbMC05Ll0rKS8pO2lmKF8uRmN8fF8uR2N8fF8uRWMpcmV0dXJuIF8uV2M7aWYoXy5BaSl7aWYoXy5hYigpfHxfLmJiKCkpe3ZhciBhPVJ2KC9DcmlPU1wvKFswLTkuXSspLyk7aWYoYSlyZXR1cm4gYX1yZXR1cm4gUnYoL0Nocm9tZVwvKFswLTkuXSspLyl9aWYoXy5CaSYmIV8uYWIoKSlyZXR1cm4gUnYoL1ZlcnNpb25cLyhbMC05Ll0rKS8pO2lmKF8ueGl8fF8ueWkpe2lmKGE9L1ZlcnNpb25cLyhcUyspLipNb2JpbGVcLyhcUyspLy5leGVjKF8uVWEoKSkpcmV0dXJuIGFbMV0rIi4iK2FbMl19ZWxzZSBpZihfLnppKXJldHVybihhPVJ2KC9BbmRyb2lkXHMrKFswLTkuXSspLykpP2E6UnYoL1ZlcnNpb25cLyhbMC05Ll0rKS8pO3JldHVybiIifSgpO3ZhciBUdj1mdW5jdGlvbihhLGIsYyxkLGUpe052LmNhbGwodGhpcyxiLGMsZCxlKTt0aGlzLmVsZW1lbnQ9YX07Xy5FKFR2LE52KTtUdi5wcm90b3R5cGUuQj1mdW5jdGlvbigpe307VHYucHJvdG90eXBlLkM9ZnVuY3Rpb24oKXt0aGlzLkIoKTtUdi5QLkMuY2FsbCh0aGlzKX07VHYucHJvdG90eXBlLmw9ZnVuY3Rpb24oKXt0aGlzLkIoKTtUdi5QLmwuY2FsbCh0aGlzKX07VHYucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt0aGlzLkIoKTtUdi5QLmouY2FsbCh0aGlzKX07dmFyIFV2PWZ1bmN0aW9uKGEsYixjLGQsZSl7dHlwZW9mIGI9PT0ibnVtYmVyIiYmKGI9W2JdKTt0eXBlb2YgYz09PSJudW1iZXIiJiYoYz1bY10pO1R2LmNhbGwodGhpcyxhLGIsYyxkLGUpO2lmKGIubGVuZ3RoIT0xfHxjLmxlbmd0aCE9MSl0aHJvdyBFcnJvcigiWGEiKTt0aGlzLkE9LTF9O18uRShVdixUdik7dmFyIFZ2PTEvMTAyNDsKVXYucHJvdG90eXBlLkI9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmNvb3Jkc1swXTtpZihNYXRoLmFicyhhLXRoaXMuQSk+PVZ2KXt2YXIgYj10aGlzLmVsZW1lbnQuc3R5bGU7Im9wYWNpdHkiaW4gYj9iLm9wYWNpdHk9YToiTW96T3BhY2l0eSJpbiBiP2IuTW96T3BhY2l0eT1hOiJmaWx0ZXIiaW4gYiYmKGIuZmlsdGVyPWE9PT0iIj8iIjoiYWxwaGEob3BhY2l0eT0iK051bWJlcihhKSoxMDArIikiKTt0aGlzLkE9YX19O1V2LnByb3RvdHlwZS5qPWZ1bmN0aW9uKCl7dGhpcy5BPS0xO1V2LlAuai5jYWxsKHRoaXMpfTtVdi5wcm90b3R5cGUubD1mdW5jdGlvbigpe3RoaXMuQT0tMTtVdi5QLmwuY2FsbCh0aGlzKX07VXYucHJvdG90eXBlLnNob3c9ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQuc3R5bGUuZGlzcGxheT0iIn07dmFyIFd2PWZ1bmN0aW9uKGEsYixjKXtVdi5jYWxsKHRoaXMsYSwxLDAsYixjKX07Xy5FKFd2LFV2KTsKV3YucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt0aGlzLnNob3coKTtXdi5QLmouY2FsbCh0aGlzKX07V3YucHJvdG90eXBlLmw9ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQuc3R5bGUuZGlzcGxheT0ibm9uZSI7V3YuUC5sLmNhbGwodGhpcyl9O3ZhciBYdj1mdW5jdGlvbihhLGIsYyl7VXYuY2FsbCh0aGlzLGEsMCwxLGIsYyl9O18uRShYdixVdik7WHYucHJvdG90eXBlLmo9ZnVuY3Rpb24oKXt0aGlzLnNob3coKTtYdi5QLmouY2FsbCh0aGlzKX07dmFyIFl2PWZ1bmN0aW9uKCl7Ty5jYWxsKHRoaXMpO3RoaXMuZz1udWxsfTtfLnkoWXYsTyk7WXYucHJvdG90eXBlLlM9ZnVuY3Rpb24oKXt0aGlzLkFhKHRoaXMuaC5TKCJESVYiLHsiY2xhc3MiOiJzdGF0dXMtbWVzc2FnZSJ9KSl9O1l2LnByb3RvdHlwZS5BYT1mdW5jdGlvbihhKXt0aGlzLm89YTthLnN0eWxlLmRpc3BsYXk9Im5vbmUifTt2YXIgJHY9ZnVuY3Rpb24oYSl7dmFyIGI9Yzt2YXIgYz0oMCxfLkMpKGZ1bmN0aW9uKCl7Xy5xZCh0aGlzLkQoKSwiIik7YiYmYigpfSxhKTtjPSgwLF8uQykoYS5qLGEsNzUwLGMpO1p2KGEsYyl9O1l2LnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe3RoaXMuZyYmKHRoaXMuZy5zdG9wKCEwKSx0aGlzLmc9bnVsbCk7Xy5xZCh0aGlzLkQoKSwiIik7dGhpcy5kYSghMSl9Owp2YXIgWnY9ZnVuY3Rpb24oYSxiKXthLmc9bmV3IFh2KGEuRCgpLDc1MCk7anUoYSkuS2IoYS5nLCJiZWdpbiIsKDAsXy5DKShmdW5jdGlvbigpe3RoaXMuRCgpLnN0eWxlLmRpc3BsYXk9ImJsb2NrIn0sYSkpO2p1KGEpLktiKGEuZywiZmluaXNoIiwoMCxfLkMpKGZ1bmN0aW9uKCl7dGhpcy5nPW51bGw7d2luZG93LnNldFRpbWVvdXQoYiwyRTMpfSxhKSk7YS5nLnBsYXkoKX07WXYucHJvdG90eXBlLmo9ZnVuY3Rpb24oYSxiKXt0aGlzLmlzVmlzaWJsZSgpJiYodGhpcy5nPW5ldyBXdih0aGlzLkQoKSxhKSxqdSh0aGlzKS5LYih0aGlzLmcsImZpbmlzaCIsKDAsXy5DKShmdW5jdGlvbigpe2ImJmIoKX0sdGhpcykpLHRoaXMuZy5wbGF5KCkpfTtZdi5wcm90b3R5cGUuZ2V0TWVzc2FnZT1mdW5jdGlvbigpe3JldHVybiBDcSh0aGlzLkQoKSl9OwpZdi5wcm90b3R5cGUuZGE9ZnVuY3Rpb24oYSl7dGhpcy5EKCkuc3R5bGUuZGlzcGxheT1hPyJibG9jayI6Im5vbmUiO3RoaXMuRCgpLnN0eWxlLm9wYWNpdHk9YT8iMSI6IjAifTtZdi5wcm90b3R5cGUuaXNWaXNpYmxlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuRCgpLnN0eWxlLmRpc3BsYXkhPT0ibm9uZSImJnRoaXMuRCgpLnN0eWxlLm9wYWNpdHkhPT0iMCJ9O3ZhciBhdz1mdW5jdGlvbihhLGIpe18uRy5jYWxsKHRoaXMpO3RoaXMuQz1uZXcgXy5IZih0aGlzKTt0aGlzLkhjKGF8fG51bGwpO2ImJih0aGlzLm5jPWIpfTtfLkUoYXcsXy5HKTtfLmw9YXcucHJvdG90eXBlO18ubC5SYT1udWxsO18ubC5SYz0hMDtfLmwuQWc9bnVsbDtfLmwuZGM9ITE7Xy5sLkJmPS0xO18ubC5uYz0idG9nZ2xlX2Rpc3BsYXkiO18ubC5EPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuUmF9O18ubC5IYz1mdW5jdGlvbihhKXtpZih0aGlzLmRjKXRocm93IEVycm9yKCJZYSIpO3RoaXMuUmE9YX07Xy5sLm5kPWZ1bmN0aW9uKGEpe2lmKHRoaXMuZGMpdGhyb3cgRXJyb3IoIllhIik7dGhpcy5SYz1hfTtfLmwuaXNWaXNpYmxlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGN9OwpfLmwuZGE9ZnVuY3Rpb24oYSl7dGhpcy5iYiYmdGhpcy5iYi5zdG9wKCk7dGhpcy55YSYmdGhpcy55YS5zdG9wKCk7aWYoYSl7aWYoIXRoaXMuZGMmJnRoaXMuTWUoKSl7aWYoIXRoaXMuUmEpdGhyb3cgRXJyb3IoIlphIik7dGhpcy5wYigpO2E9Xy5lZCh0aGlzLlJhKTt0aGlzLlJjJiYodGhpcy5DLkwoYSwibW91c2Vkb3duIix0aGlzLkpoLCEwKSx0aGlzLkMuTChhLCJibHVyIix0aGlzLk9rKSk7dGhpcy5uYz09InRvZ2dsZV9kaXNwbGF5Ij8odGhpcy5SYS5zdHlsZS52aXNpYmlsaXR5PSJ2aXNpYmxlIixIcih0aGlzLlJhLCEwKSk6dGhpcy5uYz09Im1vdmVfb2Zmc2NyZWVuIiYmdGhpcy5wYigpO3RoaXMuZGM9ITA7dGhpcy5CZj1EYXRlLm5vdygpO3RoaXMuYmI/KF8uR2QodGhpcy5iYiwiZW5kIix0aGlzLk1oLCExLHRoaXMpLHRoaXMuYmIucGxheSgpKTp0aGlzLk1oKCl9fWVsc2UgYncodGhpcyl9O18ubC5wYj1mdW5jdGlvbigpe307CnZhciBidz1mdW5jdGlvbihhLGIpe2EuZGMmJmEuZGlzcGF0Y2hFdmVudCh7dHlwZToiYmVmb3JlaGlkZSIsdGFyZ2V0OmJ9KSYmKGEuQyYmXy5MZihhLkMpLGEuZGM9ITEsYS55YT8oXy5HZChhLnlhLCJlbmQiLF8uJGIoYS5IZyxiKSwhMSxhKSxhLnlhLnBsYXkoKSk6YS5IZyhiKSl9O18ubD1hdy5wcm90b3R5cGU7Xy5sLkhnPWZ1bmN0aW9uKGEpe3RoaXMubmM9PSJ0b2dnbGVfZGlzcGxheSI/dGhpcy5uaygpOnRoaXMubmM9PSJtb3ZlX29mZnNjcmVlbiImJih0aGlzLlJhLnN0eWxlLnRvcD0iLTEwMDAwcHgiKTt0aGlzLkpmKGEpfTtfLmwubms9ZnVuY3Rpb24oKXt0aGlzLlJhLnN0eWxlLnZpc2liaWxpdHk9ImhpZGRlbiI7SHIodGhpcy5SYSwhMSl9O18ubC5NZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRpc3BhdGNoRXZlbnQoImJlZm9yZXNob3ciKX07Xy5sLk1oPWZ1bmN0aW9uKCl7dGhpcy5kaXNwYXRjaEV2ZW50KCJzaG93Iil9OwpfLmwuSmY9ZnVuY3Rpb24oYSl7dGhpcy5kaXNwYXRjaEV2ZW50KHt0eXBlOiJoaWRlIix0YXJnZXQ6YX0pfTtfLmwuSmg9ZnVuY3Rpb24oYSl7YT1hLnRhcmdldDtfLnBkKHRoaXMuUmEsYSl8fGN3KHRoaXMsYSl8fERhdGUubm93KCktdGhpcy5CZjwxNTB8fGJ3KHRoaXMsYSl9O18ubC5Paz1mdW5jdGlvbihhKXt2YXIgYj1fLmVkKHRoaXMuUmEpO2lmKHR5cGVvZiBkb2N1bWVudC5hY3RpdmVFbGVtZW50IT0idW5kZWZpbmVkIil7aWYoYT1iLmFjdGl2ZUVsZW1lbnQsIWF8fF8ucGQodGhpcy5SYSxhKXx8YS50YWdOYW1lPT0iQk9EWSJ8fGN3KHRoaXMsYSkpcmV0dXJufWVsc2UgaWYoYS50YXJnZXQhPWIpcmV0dXJuO0RhdGUubm93KCktdGhpcy5CZjwxNTB8fGJ3KHRoaXMpfTt2YXIgY3c9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5rYyhhLkFnfHxbXSxmdW5jdGlvbihjKXtyZXR1cm4gYj09PWN8fF8ucGQoYyxiKX0pfTsKYXcucHJvdG90eXBlLks9ZnVuY3Rpb24oKXthdy5QLksuY2FsbCh0aGlzKTt0aGlzLkMuZGlzcG9zZSgpO18ucWEodGhpcy5iYik7Xy5xYSh0aGlzLnlhKTtkZWxldGUgdGhpcy5SYTtkZWxldGUgdGhpcy5DO2RlbGV0ZSB0aGlzLkFnfTt2YXIgZHc9ZnVuY3Rpb24oYSl7Xy5HLmNhbGwodGhpcyk7dGhpcy5nPWE7dGhpcy5oPV8uRih0aGlzLmcsImZvY3VzIix0aGlzLCEwKTt0aGlzLmo9Xy5GKHRoaXMuZywiYmx1ciIsdGhpcywhMCl9O18uRShkdyxfLkcpO2R3LnByb3RvdHlwZS5oYW5kbGVFdmVudD1mdW5jdGlvbihhKXt2YXIgYj1uZXcgXy51ZChhLmcpO2IudHlwZT1hLnR5cGU9PSJmb2N1c2luInx8YS50eXBlPT0iZm9jdXMiPyJmb2N1c2luIjoiZm9jdXNvdXQiO3RoaXMuZGlzcGF0Y2hFdmVudChiKX07ZHcucHJvdG90eXBlLks9ZnVuY3Rpb24oKXtkdy5QLksuY2FsbCh0aGlzKTtfLk9kKHRoaXMuaCk7Xy5PZCh0aGlzLmopO2RlbGV0ZSB0aGlzLmd9O3ZhciBldz1mdW5jdGlvbigpe307ZXcucHJvdG90eXBlLmg9ZnVuY3Rpb24oKXt9O3ZhciBodz1mdW5jdGlvbihhLGIsYyxkLGUsZixnKXt2YXIgaDtpZihoPWMub2Zmc2V0UGFyZW50KXt2YXIgaz1oLnRhZ05hbWU9PSJIVE1MInx8aC50YWdOYW1lPT0iQk9EWSI7aWYoIWt8fHhyKGgsInBvc2l0aW9uIikhPSJzdGF0aWMiKXt2YXIgbT1DcihoKTtpZighayl7az1KcihoKTt2YXIgbjtpZihuPWspe249Xy5CaSYmVW4oU3YsMTApPj0wO3ZhciBwO2lmKHA9Xy5RYylwPVVuKFF2LDEwKT49MDt2YXIgcT1fLkFpJiZVbihTdiw4NSk+PTA7bj1fLkhjfHxufHxwfHxxfWs9bj8taC5zY3JvbGxMZWZ0OmsmJnhyKGgsIm92ZXJmbG93WCIpIT0idmlzaWJsZSI/aC5zY3JvbGxXaWR0aC1oLmNsaWVudFdpZHRoLWguc2Nyb2xsTGVmdDpoLnNjcm9sbExlZnQ7bT1XcChtLG5ldyB2cChrLGguc2Nyb2xsVG9wKSl9fX1oPW18fG5ldyB2cDttPUNyKGEpO2s9R3IoYSk7bT1uZXcgdnIobS54LG0ueSxrLndpZHRoLGsuaGVpZ2h0KTtpZihrPURyKGEpKXE9bmV3IHZyKGsubGVmdCxrLnRvcCwKay5yaWdodC1rLmxlZnQsay5ib3R0b20tay50b3ApLGs9TWF0aC5tYXgobS5sZWZ0LHEubGVmdCksbj1NYXRoLm1pbihtLmxlZnQrbS53aWR0aCxxLmxlZnQrcS53aWR0aCksazw9biYmKHA9TWF0aC5tYXgobS50b3AscS50b3ApLHE9TWF0aC5taW4obS50b3ArbS5oZWlnaHQscS50b3ArcS5oZWlnaHQpLHA8PXEmJihtLmxlZnQ9ayxtLnRvcD1wLG0ud2lkdGg9bi1rLG0uaGVpZ2h0PXEtcCkpO249Xy5mYihhKTtrPV8uZmIoYyk7bi5nIT1rLmcmJihuPW4uZy5ib2R5LGs9RXIobixrLmcuZGVmYXVsdFZpZXcpLGs9V3AoayxDcihuKSksbS5sZWZ0Kz1rLngsbS50b3ArPWsueSk7YT1mdyhhLGIpO2I9bS5sZWZ0O2EmND9iKz1tLndpZHRoOmEmMiYmKGIrPW0ud2lkdGgvMik7Yj1uZXcgdnAoYixtLnRvcCsoYSYxP20uaGVpZ2h0OjApKTtiPVdwKGIsaCk7ZSYmKGIueCs9KGEmND8tMToxKSplLngsYi55Kz0oYSYxPy0xOjEpKmUueSk7dmFyIHI7ZyYmKHI9RHIoYykpJiYoci50b3AtPWgueSwKci5yaWdodC09aC54LHIuYm90dG9tLT1oLnksci5sZWZ0LT1oLngpO3JldHVybiBndyhiLGMsZCxmLHIsZyl9LGd3PWZ1bmN0aW9uKGEsYixjLGQsZSxmKXthPXdwKGEpO3ZhciBnPWZ3KGIsYyk7Yz1HcihiKTt2YXIgaD1uZXcgXy5sYyhjLndpZHRoLGMuaGVpZ2h0KTthPXdwKGEpO2g9bmV3IF8ubGMoaC53aWR0aCxoLmhlaWdodCk7dmFyIGs9MDtpZihkfHxnIT0wKWcmND9hLngtPWgud2lkdGgrKGQ/ZC5yaWdodDowKTpnJjI/YS54LT1oLndpZHRoLzI6ZCYmKGEueCs9ZC5sZWZ0KSxnJjE/YS55LT1oLmhlaWdodCsoZD9kLmJvdHRvbTowKTpkJiYoYS55Kz1kLnRvcCk7ZiYmKGU/KGQ9aCxnPTAsKGYmNjUpPT02NSYmKGEueDxlLmxlZnR8fGEueD49ZS5yaWdodCkmJihmJj0tMiksKGYmMTMyKT09MTMyJiYoYS55PGUudG9wfHxhLnk+PWUuYm90dG9tKSYmKGYmPS01KSxhLng8ZS5sZWZ0JiZmJjEmJihhLng9ZS5sZWZ0LGd8PTEpLGYmMTYmJihrPWEueCxhLng8ZS5sZWZ0JiYoYS54PQplLmxlZnQsZ3w9NCksYS54K2Qud2lkdGg+ZS5yaWdodCYmKGQud2lkdGg9TWF0aC5taW4oZS5yaWdodC1hLngsaytkLndpZHRoLWUubGVmdCksZC53aWR0aD1NYXRoLm1heChkLndpZHRoLDApLGd8PTQpKSxhLngrZC53aWR0aD5lLnJpZ2h0JiZmJjEmJihhLng9TWF0aC5tYXgoZS5yaWdodC1kLndpZHRoLGUubGVmdCksZ3w9MSksZiYyJiYoZ3w9KGEueDxlLmxlZnQ/MTY6MCl8KGEueCtkLndpZHRoPmUucmlnaHQ/MzI6MCkpLGEueTxlLnRvcCYmZiY0JiYoYS55PWUudG9wLGd8PTIpLGYmMzImJihrPWEueSxhLnk8ZS50b3AmJihhLnk9ZS50b3AsZ3w9OCksYS55K2QuaGVpZ2h0PmUuYm90dG9tJiYoZC5oZWlnaHQ9TWF0aC5taW4oZS5ib3R0b20tYS55LGsrZC5oZWlnaHQtZS50b3ApLGQuaGVpZ2h0PU1hdGgubWF4KGQuaGVpZ2h0LDApLGd8PTgpKSxhLnkrZC5oZWlnaHQ+ZS5ib3R0b20mJmYmNCYmKGEueT1NYXRoLm1heChlLmJvdHRvbS1kLmhlaWdodCxlLnRvcCksZ3w9MiksZiYKOCYmKGd8PShhLnk8ZS50b3A/NjQ6MCl8KGEueStkLmhlaWdodD5lLmJvdHRvbT8xMjg6MCkpLGU9Zyk6ZT0yNTYsaz1lKTtlPW5ldyB2cigwLDAsMCwwKTtlLmxlZnQ9YS54O2UudG9wPWEueTtlLndpZHRoPWgud2lkdGg7ZS5oZWlnaHQ9aC5oZWlnaHQ7YT1rO2lmKGEmNDk2KXJldHVybiBhO3pyKGIsbmV3IHZwKGUubGVmdCxlLnRvcCkpO2g9bmV3IF8ubGMoZS53aWR0aCxlLmhlaWdodCk7Xy5tYyhjLGgpfHxMcihiLGgsImJvcmRlci1ib3giKTtyZXR1cm4gYX0sZnc9ZnVuY3Rpb24oYSxiKXtyZXR1cm4oYiY4JiZKcihhKT9iXjQ6YikmLTl9O3ZhciBpdz1mdW5jdGlvbihhLGIsYyl7dGhpcy5lbGVtZW50PWE7dGhpcy5qPWI7dGhpcy5sPWN9O18uRShpdyxldyk7aXcucHJvdG90eXBlLmg9ZnVuY3Rpb24oYSxiLGMpe2h3KHRoaXMuZWxlbWVudCx0aGlzLmosYSxiLHZvaWQgMCxjLHRoaXMubCl9O3ZhciBqdz1mdW5jdGlvbihhLGIpe3RoaXMuZz1hIGluc3RhbmNlb2YgdnA/YTpuZXcgdnAoYSxiKX07Xy5FKGp3LGV3KTtqdy5wcm90b3R5cGUuaD1mdW5jdGlvbihhLGIsYyl7aHcoKGE/Xy5lZChhKTpkb2N1bWVudCkuZG9jdW1lbnRFbGVtZW50LDAsYSxiLHRoaXMuZyxjLG51bGwpfTt2YXIga3c9ZnVuY3Rpb24oYSxiKXt0aGlzLkI9Ynx8dm9pZCAwO2F3LmNhbGwodGhpcyxhKX07Xy5FKGt3LGF3KTtrdy5wcm90b3R5cGUucGI9ZnVuY3Rpb24oKXtpZih0aGlzLkIpe3ZhciBhPSF0aGlzLmlzVmlzaWJsZSgpJiZ0aGlzLm5jIT0ibW92ZV9vZmZzY3JlZW4iLGI9dGhpcy5EKCk7YSYmKGIuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIixIcihiLCEwKSk7dGhpcy5CLmgoYiw4LHRoaXMud2spO2EmJkhyKGIsITEpfX07dmFyIFM9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuVD1jfHwoYT9fLmZiKHFxKGEpKTpfLmZiKCkpO2t3LmNhbGwodGhpcyx0aGlzLlQuUygiRElWIix7c3R5bGU6InBvc2l0aW9uOmFic29sdXRlO2Rpc3BsYXk6bm9uZTsifSkpO3RoaXMuWGM9bmV3IHZwKDEsMSk7dGhpcy5GPW5ldyBTZXQ7dGhpcy5JPW51bGw7YSYmdGhpcy5hdHRhY2goYSk7YiE9bnVsbCYmdGhpcy5hYihiKX07Xy5FKFMsa3cpO3ZhciBsdz1bXTtfLmw9Uy5wcm90b3R5cGU7Xy5sLkdhPW51bGw7Xy5sLmNsYXNzTmFtZT0iVklwZ0pkLXN1RU9kYyI7Xy5sLmJpPTUwMDtfLmwua2g9MDsKXy5sLmF0dGFjaD1mdW5jdGlvbihhKXthPXFxKGEpO3RoaXMuRi5hZGQoYSk7Xy5GKGEsIm1vdXNlb3ZlciIsdGhpcy5OZSwhMSx0aGlzKTtfLkYoYSwibW91c2VvdXQiLHRoaXMud2MsITEsdGhpcyk7Xy5GKGEsIm1vdXNlbW92ZSIsdGhpcy5mZSwhMSx0aGlzKTtfLkYoYSwiZm9jdXMiLHRoaXMuUWQsITEsdGhpcyk7Xy5GKGEsImJsdXIiLHRoaXMud2MsITEsdGhpcyl9O18ubC5kZXRhY2g9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpczthPyhhPXFxKGEpLG13KHRoaXMsYSksdGhpcy5GLmRlbGV0ZShhKSk6KHRoaXMuRi5mb3JFYWNoKGZ1bmN0aW9uKGMpe213KGIsYyl9KSx0aGlzLkYuY2xlYXIoKSl9O3ZhciBtdz1mdW5jdGlvbihhLGIpe18uTmQoYiwibW91c2VvdmVyIixhLk5lLCExLGEpO18uTmQoYiwibW91c2VvdXQiLGEud2MsITEsYSk7Xy5OZChiLCJtb3VzZW1vdmUiLGEuZmUsITEsYSk7Xy5OZChiLCJmb2N1cyIsYS5RZCwhMSxhKTtfLk5kKGIsImJsdXIiLGEud2MsITEsYSl9OwpTLnByb3RvdHlwZS5hYj1mdW5jdGlvbihhKXtfLnFkKHRoaXMuRCgpLGEpfTtTLnByb3RvdHlwZS5IYz1mdW5jdGlvbihhKXt2YXIgYj10aGlzLkQoKTtiJiZfLm9kKGIpO1MuUC5IYy5jYWxsKHRoaXMsYSk7YT8oYj10aGlzLlQuZy5ib2R5LGIuaW5zZXJ0QmVmb3JlKGEsYi5sYXN0Q2hpbGQpLF8ucWEodGhpcy5JKSx0aGlzLkk9bmV3IGR3KHRoaXMuRCgpKSxfLmprKHRoaXMsXy4kYihfLnFhLHRoaXMuSSkpLF8uRih0aGlzLkksImZvY3VzaW4iLHRoaXMuTix2b2lkIDAsdGhpcyksXy5GKHRoaXMuSSwiZm9jdXNvdXQiLHRoaXMuRGIsdm9pZCAwLHRoaXMpKTooXy5xYSh0aGlzLkkpLHRoaXMuST1udWxsKX07Uy5wcm90b3R5cGUueGQ9ZnVuY3Rpb24oKXtyZXR1cm4gQ3EodGhpcy5EKCkpfTt2YXIgbnc9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuUj9hLmlzVmlzaWJsZSgpPzQ6MTphLnFhPzM6YS5pc1Zpc2libGUoKT8yOjB9OwpTLnByb3RvdHlwZS5NZT1mdW5jdGlvbigpe2lmKCFhdy5wcm90b3R5cGUuTWUuY2FsbCh0aGlzKSlyZXR1cm4hMTtpZih0aGlzLmcpZm9yKHZhciBhLGI9MDthPWx3W2JdO2IrKylfLnBkKGEuRCgpLHRoaXMuZyl8fGEuZGEoITEpO18udmEobHcsdGhpcyk7YT10aGlzLkQoKTthLmNsYXNzTmFtZT10aGlzLmNsYXNzTmFtZTt0aGlzLk4oKTtfLkYoYSwibW91c2VvdmVyIix0aGlzLmJlLCExLHRoaXMpO18uRihhLCJtb3VzZW91dCIsdGhpcy5hZSwhMSx0aGlzKTtvdyh0aGlzKTtyZXR1cm4hMH07ClMucHJvdG90eXBlLkpmPWZ1bmN0aW9uKCl7Xy53YShsdyx0aGlzKTtmb3IodmFyIGE9dGhpcy5EKCksYixjPTA7Yj1sd1tjXTtjKyspYi5nJiZfLnBkKGEsYi5nKSYmYi5kYSghMSk7dGhpcy51aCYmdGhpcy51aC5EYigpO18uTmQoYSwibW91c2VvdmVyIix0aGlzLmJlLCExLHRoaXMpO18uTmQoYSwibW91c2VvdXQiLHRoaXMuYWUsITEsdGhpcyk7dGhpcy5nPXZvaWQgMDtudyh0aGlzKT09MCYmKHRoaXMuQ2I9ITEpO2F3LnByb3RvdHlwZS5KZi5jYWxsKHRoaXMpfTtTLnByb3RvdHlwZS5GZj1mdW5jdGlvbihhLGIpe3RoaXMuZz09YSYmdGhpcy5GLmhhcyh0aGlzLmcpJiYodGhpcy5DYnx8IXRoaXMuRG8/KHRoaXMuZGEoITEpLHRoaXMuaXNWaXNpYmxlKCl8fCh0aGlzLmc9YSx0aGlzLkI9Ynx8bmV3IHB3KHdwKHRoaXMuWGMpKSx0aGlzLmlzVmlzaWJsZSgpJiZ0aGlzLnBiKCksdGhpcy5kYSghMCkpKTp0aGlzLmc9dm9pZCAwKTt0aGlzLlI9dm9pZCAwfTsKUy5wcm90b3R5cGUueGs9ZnVuY3Rpb24oYSl7dGhpcy5xYT12b2lkIDA7aWYoYT09dGhpcy5nKXthPXRoaXMuVDt2YXIgYj1hLmc7dHJ5e3ZhciBjPWImJmIuYWN0aXZlRWxlbWVudDt2YXIgZD1jJiZjLm5vZGVOYW1lP2M6bnVsbH1jYXRjaChlKXtkPW51bGx9ZD1kJiZ0aGlzLkQoKSYmYS5jb250YWlucyh0aGlzLkQoKSxkKTt0aGlzLkdhIT1udWxsJiYodGhpcy5HYT09dGhpcy5EKCl8fHRoaXMuRi5oYXModGhpcy5HYSkpfHxkfHx0aGlzLlZkJiZ0aGlzLlZkLkdhfHx0aGlzLmRhKCExKX19O3ZhciBxdz1mdW5jdGlvbihhLGIpe3ZhciBjPUVwKGEuVC5nKTthLlhjLng9Yi5jbGllbnRYK2MueDthLlhjLnk9Yi5jbGllbnRZK2MueX07Uy5wcm90b3R5cGUuTmU9ZnVuY3Rpb24oYSl7dmFyIGI9cncodGhpcyxhLnRhcmdldCk7dGhpcy5HYT1iO3RoaXMuTigpO2IhPXRoaXMuZyYmKHRoaXMuZz1iLHN3KHRoaXMsYiksdHcodGhpcykscXcodGhpcyxhKSl9Owp2YXIgcnc9ZnVuY3Rpb24oYSxiKXt0cnl7Zm9yKDtiJiYhYS5GLmhhcyhiKTspYj1iLnBhcmVudE5vZGU7cmV0dXJuIGJ9Y2F0Y2goYyl7cmV0dXJuIG51bGx9fTtTLnByb3RvdHlwZS5mZT1mdW5jdGlvbihhKXtxdyh0aGlzLGEpO3RoaXMuQ2I9ITB9O1MucHJvdG90eXBlLlFkPWZ1bmN0aW9uKGEpe3RoaXMuR2E9YT1ydyh0aGlzLGEudGFyZ2V0KTt0aGlzLkNiPSEwO2lmKHRoaXMuZyE9YSl7dGhpcy5nPWE7dmFyIGI9bmV3IHV3KHRoaXMuR2EpO3RoaXMuTigpO3N3KHRoaXMsYSxiKTt0dyh0aGlzKX19O3ZhciB0dz1mdW5jdGlvbihhKXtpZihhLmcpZm9yKHZhciBiLGM9MDtiPWx3W2NdO2MrKylfLnBkKGIuRCgpLGEuZykmJihiLlZkPWEsYS51aD1iKX07ClMucHJvdG90eXBlLndjPWZ1bmN0aW9uKGEpe3ZhciBiPXJ3KHRoaXMsYS50YXJnZXQpLGM9cncodGhpcyxhLnJlbGF0ZWRUYXJnZXQpO2IhPWMmJihiPT10aGlzLkdhJiYodGhpcy5HYT1udWxsKSxvdyh0aGlzKSx0aGlzLkNiPSExLCF0aGlzLmlzVmlzaWJsZSgpfHxhLnJlbGF0ZWRUYXJnZXQmJl8ucGQodGhpcy5EKCksYS5yZWxhdGVkVGFyZ2V0KT90aGlzLmc9dm9pZCAwOnRoaXMuRGIoKSl9O1MucHJvdG90eXBlLmJlPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5EKCk7dGhpcy5HYSE9YSYmKHRoaXMuTigpLHRoaXMuR2E9YSl9O1MucHJvdG90eXBlLmFlPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuRCgpO3RoaXMuR2EhPWJ8fGEucmVsYXRlZFRhcmdldCYmXy5wZChiLGEucmVsYXRlZFRhcmdldCl8fCh0aGlzLkdhPW51bGwsdGhpcy5EYigpKX07CnZhciBzdz1mdW5jdGlvbihhLGIsYyl7YS5SfHwoYS5SPV8uVGcoKDAsXy5DKShhLkZmLGEsYixjKSxhLmJpKSl9LG93PWZ1bmN0aW9uKGEpe2EuUiYmKF8udS5jbGVhclRpbWVvdXQoYS5SKSxhLlI9dm9pZCAwKX07Uy5wcm90b3R5cGUuRGI9ZnVuY3Rpb24oKXtudyh0aGlzKT09MiYmKHRoaXMucWE9Xy5UZygoMCxfLkMpKHRoaXMueGssdGhpcyx0aGlzLmcpLHRoaXMua2gpKX07Uy5wcm90b3R5cGUuTj1mdW5jdGlvbigpe3RoaXMucWEmJihfLnUuY2xlYXJUaW1lb3V0KHRoaXMucWEpLHRoaXMucWE9dm9pZCAwKX07Uy5wcm90b3R5cGUuSz1mdW5jdGlvbigpe3RoaXMuZGEoITEpO293KHRoaXMpO3RoaXMuZGV0YWNoKCk7dGhpcy5EKCkmJl8ub2QodGhpcy5EKCkpO3RoaXMuR2E9bnVsbDtkZWxldGUgdGhpcy5UO1MuUC5LLmNhbGwodGhpcyl9O3ZhciBwdz1mdW5jdGlvbihhLGIpe2p3LmNhbGwodGhpcyxhLGIpfTtfLkUocHcsancpOwpwdy5wcm90b3R5cGUuaD1mdW5jdGlvbihhLGIsYyl7Yj1EcigoYT9fLmVkKGEpOmRvY3VtZW50KS5kb2N1bWVudEVsZW1lbnQpO2M9Yz9uZXcgeG8oYy50b3ArMTAsYy5yaWdodCxjLmJvdHRvbSxjLmxlZnQrMTApOm5ldyB4bygxMCwwLDAsMTApO2d3KHRoaXMuZyxhLDgsYyxiLDkpJjQ5NiYmZ3codGhpcy5nLGEsOCxjLGIsNSl9O3ZhciB1dz1mdW5jdGlvbihhKXtpdy5jYWxsKHRoaXMsYSw1KX07Xy5FKHV3LGl3KTt1dy5wcm90b3R5cGUuaD1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9bmV3IHZwKDEwLDApO2h3KHRoaXMuZWxlbWVudCx0aGlzLmosYSxiLGQsYyw5KSY0OTYmJmh3KHRoaXMuZWxlbWVudCw0LGEsMSxkLGMsNSl9O3ZhciB2dz1mdW5jdGlvbigpe1MuY2FsbCh0aGlzKTt0aGlzLlo9e307dGhpcy5SYj17fTt0aGlzLko9bnVsbDt0aGlzLlNkPSExO3RoaXMuVGM9dGhpcy5oPXRoaXMuTz1udWxsO3RoaXMuamE9e307dGhpcy5BPW5ldyBfLkhmKHRoaXMpO3RoaXMuRz10aGlzLmo9dGhpcy5vPXRoaXMuRWI9dGhpcy5sPXRoaXMuVj10aGlzLkVhPW51bGw7dGhpcy5NPSEwO3RoaXMuRmI9W119O18ueSh2dyxTKTtfLmw9dncucHJvdG90eXBlOwpfLmwuaWE9ZnVuY3Rpb24oKXt0aGlzLk09ITE7dmFyIGE9Xy5xZi50ZXN0KGNzKT8icnRsIjoibHRyIjt0aGlzLkhjKGxvKGR1LHtDbzoiaHR0cHM6Ly93d3cuZ3N0YXRpYy5jb20vaW1hZ2VzL2JyYW5kaW5nL3Byb2R1Y3QvMXgvdHJhbnNsYXRlXzI0ZHAucG5nIix1bjoiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9pbWFnZXMvY2xlYXJkb3QuZ2lmIix5bzpucyxkaXI6YSxDbDp0c30pKTt0aGlzLmNsYXNzTmFtZSs9IiBWSXBnSmQteUFXTkViLUw3bGJrYiBza2lwdHJhbnNsYXRlIjtpZihhPSEhKHRoaXMuRCgpJiZ0aGlzLkomJnRoaXMuRWImJnRoaXMuby5EKCkmJnRoaXMuTyYmdGhpcy5HKSlpZih0aGlzLkEuTCh3aW5kb3csInJlc2l6ZSIsKDAsXy5DKSh0aGlzLnBiLHRoaXMpKSx0aGlzLkEuTCh0aGlzLCJoaWRlIiwoMCxfLkMpKHRoaXMuWGssdGhpcykpLHRoaXMuRmIubGVuZ3RoKXJldHVybiBhPXRoaXMueGcuYXBwbHkodGhpcyx0aGlzLkZiKSx0aGlzLkZiPVtdLGE7cmV0dXJuIGF9OwpfLmwueGc9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPVtdLGM9MDtjPGFyZ3VtZW50cy5sZW5ndGg7KytjKXt2YXIgZD1hcmd1bWVudHNbY107aWYoZClpZih0aGlzLkp8fGQubmUpe3ZhciBlPXNxKCJTUEFOIix7ImNsYXNzIjpkLmNsYXNzTmFtZXx8IlZJcGdKZC15QVdORWItWjBBcnFmLWhTUkdQZCJ9KTtfLnFkKGUsZC5DZnx8IiIpO2IucHVzaChlKTtfLm1kKGQubmV8fHRoaXMuSixlKTtpZihkLnRlJiZkLkRjKXt2YXIgZj0oMCxfLkMpKHRoaXMuSGosdGhpcyxkKTt0aGlzLkEuTChlLCJjbGljayIsZik7ZC5tZSYmdGhpcy5BLkwodGhpcy5PLGQubWUsZil9ZC5pZD1kLmlkfHxkLllhKCk7dGhpcy5aW2QuaWRdJiZ0aGlzLlRoKGQpO3RoaXMuWltkLmlkXT1kO3RoaXMuUmJbZC5pZF09ZX1lbHNlIHRoaXMuRmIucHVzaChkKX1yZXR1cm4gYn07Cl8ubC5UaD1mdW5jdGlvbihhKXtmb3IodmFyIGI9MDtiPGFyZ3VtZW50cy5sZW5ndGg7KytiKXt2YXIgYz10eXBlb2YgYXJndW1lbnRzW2JdPT09InN0cmluZyJ8fGFyZ3VtZW50c1tiXWluc3RhbmNlb2YgU3RyaW5nP2FyZ3VtZW50c1tiXTphcmd1bWVudHNbYl0uaWQsZD10aGlzLlpbY10sZT10aGlzLlJiW2NdO2QmJmUmJih0aGlzLmgmJnRoaXMuaC5pZD09PWMmJnRoaXMuZmYoKSx0aGlzLkEuZmIoZCxbInN1Ym1pdHRlZCIsImNhbmNlbGxlZCJdKSxkLmRpc3Bvc2UoKSx0aGlzLmphW2NdJiZkZWxldGUgdGhpcy5qYVtjXSxkZWxldGUgdGhpcy5aW2NdLGRlbGV0ZSB0aGlzLlJiW2NdLF8ub2QoZSkpfX07Cl8ubC5Iaj1mdW5jdGlvbihhKXtpZih0aGlzLk8pe2EhPXRoaXMuaCYmdGhpcy5oJiYodGhpcy5vLmNsZWFyKCksdGhpcy5oLkRjLmNhbGwodGhpcy5oKSx0aGlzLmguRCgpJiYodGhpcy5oLkQoKS5zdHlsZS5kaXNwbGF5PSJub25lIiksd3codGhpcywhMSksdGhpcy5oPW51bGwpO3d3KHRoaXMsITApO3RoaXMuby5jbGVhcigpO3RoaXMuaD1hO2lmKHRoaXMuamFbYS5pZF0pe3ZhciBiPXRoaXMuamFbYS5pZF07dmFyIGM9YS52ZH1lbHNlIGEuaWEoKSxiPWEuRCgpLGM9YS50ZSx0aGlzLkEuTChhLFsic3VibWl0dGVkIiwiY2FuY2VsbGVkIl0sKDAsXy5DKSh0aGlzLmZmLHRoaXMpKSxhLmRmJiYodGhpcy5qYVthLmlkXT1iKTtfLm1kKHRoaXMuTyxiKTtjLmNhbGwoYSx0aGlzKTthPW5ldyBYdihiLDEwMCk7dGhpcy5BLktiKGEsImZpbmlzaCIsKDAsXy5DKSh0aGlzLnBiLHRoaXMsITAsITApKTthLnBsYXkoKX19OwpfLmwuZmY9ZnVuY3Rpb24oKXtpZih0aGlzLmgpaWYodGhpcy5vLmNsZWFyKCksdGhpcy5oLkRjLmNhbGwodGhpcy5oKSx0aGlzLmguRCgpKXt2YXIgYT1uZXcgV3YodGhpcy5oLkQoKSwxMDApO3RoaXMuQS5LYihhLCJmaW5pc2giLCgwLF8uQykoZnVuY3Rpb24oKXtfLm9kKHRoaXMuaC5EKCkpO3RoaXMuaD1udWxsO3d3KHRoaXMsITEpO3RoaXMuby5nZXRNZXNzYWdlKCkmJigkdih0aGlzLm8pLHRoaXMucGIoITAsITApKX0sdGhpcykpO2EucGxheSgpfWVsc2Ugd3codGhpcywhMSksdGhpcy5oPW51bGx9O18ubC5GZj1mdW5jdGlvbihhLGIpe3RoaXMuVGM9YTtTLnByb3RvdHlwZS5GZi5jYWxsKHRoaXMsYSxiKTt0aGlzLkQoKS5zdHlsZS5kaXNwbGF5PSJibG9jayJ9OwpfLmwuTmU9ZnVuY3Rpb24oYSl7aWYoIXRoaXMuTSl7dmFyIGI9cncodGhpcyxhLnRhcmdldCk7dGhpcy5HYT1iO3RoaXMuTigpO2IhPXRoaXMuZz8odGhpcy5nPWIsc3codGhpcyxiKSx0dyh0aGlzKSxxdyh0aGlzLGEpKTpzdyh0aGlzLGIpfX07Xy5sLlhrPWZ1bmN0aW9uKCl7dGhpcy5vLmNsZWFyKCk7dGhpcy5TZCYmdGhpcy5mZigpfTtfLmwuSz1mdW5jdGlvbigpe2Zvcih2YXIgYSBpbiB0aGlzLlopdGhpcy5UaChhKTt0aGlzLkEmJnRoaXMuQS5kaXNwb3NlKCk7dGhpcy5BPW51bGw7dGhpcy5vJiZ0aGlzLm8uZGlzcG9zZSgpO3RoaXMuRz10aGlzLkViPXRoaXMuVGM9dGhpcy5PPXRoaXMuSj10aGlzLm89bnVsbDtTLnByb3RvdHlwZS5LLmNhbGwodGhpcyl9Owp2YXIgd3c9ZnVuY3Rpb24oYSxiKXthLlNkPWI7YS5NPWI7aWYoYS5NKXt2YXIgYz1hLkQoKTthLkVhPW5ldyB2cChjLm9mZnNldExlZnQsYy5vZmZzZXRUb3ApfWVsc2UgYS5FYSYmKChhLkJ8fG51bGwpIT1udWxsJiYoKGEuQnx8bnVsbCkuZz1hLkVhKSx6cihhLkQoKSxhLkVhKSxhLkVhPW51bGwpO2EuSi5zdHlsZS5kaXNwbGF5PWI/Im5vbmUiOiJpbmxpbmUtYmxvY2siO2EuRWIuc3R5bGUuZGlzcGxheT1iPyJpbmxpbmUtYmxvY2siOiJub25lIn07Xy5sPXZ3LnByb3RvdHlwZTtfLmwubmQ9ZnVuY3Rpb24oYSl7aWYodGhpcy5pc1Zpc2libGUoKSl7YT0odGhpcy5SYz1hKT90aGlzLkMuTDp0aGlzLkMuZmI7dmFyIGI9Xy5lZCh0aGlzLkQoKSk7YS5jYWxsKHRoaXMuQyxiLCJtb3VzZWRvd24iLHRoaXMuSmgsITApfWVsc2UgUy5wcm90b3R5cGUubmQuY2FsbCh0aGlzLGEpfTsKXy5sLkhjPWZ1bmN0aW9uKGEpe1MucHJvdG90eXBlLkhjLmNhbGwodGhpcyxhKTtpZihhKXt0aGlzLko9Q3AoIlZJcGdKZC15QVdORWItWjBBcnFmLVBMRGJiZiIsYSk7dmFyIGI9Q3AoIlZJcGdKZC15QVdORWItak9ma01iLU5lM3NGZiIsYSk7YiYmKHRoaXMubz1uZXcgWXYsdGhpcy5vLlZhKGIpKTt0aGlzLkViPUNwKCJWSXBnSmQteUFXTkViLWZ3NDJaZS1aMEFycWYtaGFBY2xmIixhKTt0aGlzLk89Q3AoIlZJcGdKZC15QVdORWItWjBBcnFmLUg5dER0IixhKTt0aGlzLkc9Q3AoIlZJcGdKZC15QVdORWItblZNZmNkLWZtY21TIixhKX19OwpfLmwucGI9ZnVuY3Rpb24oYSxiKXt2YXIgYz1Dcihkb2N1bWVudC5ib2R5KS55O2lmKHRoaXMuQil7KHRoaXMuQnx8bnVsbCkuZy55Kz1jO1MucHJvdG90eXBlLnBiLmNhbGwodGhpcyk7dmFyIGQ9cGFyc2VJbnQodGhpcy5EKCkuc3R5bGUubGVmdCwxMCk7YT1wYXJzZUludCh0aGlzLkQoKS5zdHlsZS50b3AsMTApLShhPzA6Yyk7YiYmKGI9dGhpcy53a3x8e30sYS09Yi50b3B8fDEwLGQtPWIubGVmdHx8MTApO2EtPWM7KHRoaXMuQnx8bnVsbCkuZy55PWE7KHRoaXMuQnx8bnVsbCkuZy54PWQ7Yz1uZXcgdnAoZCxhKTt6cih0aGlzLkQoKSxjKX19O18ubC5kYT1mdW5jdGlvbihhKXtTLnByb3RvdHlwZS5kYS5jYWxsKHRoaXMsYSl9O18ubC5vYj1mdW5jdGlvbihhKXt0aGlzLmw9YX07Xy5sLnVhPWZ1bmN0aW9uKGEpe3RoaXMuaj1hfTtfLmwuYWI9ZnVuY3Rpb24oYSl7YT1hP18ub2MoYSk6IiI7dGhpcy5HP18ucWQodGhpcy5HLGEpOlMucHJvdG90eXBlLmFiLmNhbGwodGhpcyxhKX07Cl8ubC5XYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmx9O18ubC5yYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmp9O18ubC54ZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLkc/Q3EodGhpcy5HKTpTLnByb3RvdHlwZS54ZC5jYWxsKHRoaXMpfTtfLmwud2M9ZnVuY3Rpb24oYSl7dGhpcy5NfHxTLnByb3RvdHlwZS53Yy5jYWxsKHRoaXMsYSl9O18ubC5iZT1mdW5jdGlvbihhKXt0aGlzLk18fFMucHJvdG90eXBlLmJlLmNhbGwodGhpcyxhKX07Xy5sLmFlPWZ1bmN0aW9uKGEpe3RoaXMuTXx8Uy5wcm90b3R5cGUuYWUuY2FsbCh0aGlzLGEpfTt2YXIgeHc9ZnVuY3Rpb24oKXt0aGlzLmg9bmV3IE1hcDt0aGlzLmc9RnMoTXMpfSxCdz1mdW5jdGlvbihhKXt2YXIgYj1xcSgiZ29vZy1ndC10aHVtYlVwQnV0dG9uIiksYz1hLmgsZD1hLmc7Yi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oKXtpZih5dyhjKT09PXp3KVFzKGQpO2Vsc2V7dmFyIGU9TnMoZCw1KTtPcyhkLGUpO1BzKGUsNSl9QXcoYyx6dyl9LCExKX0sRHc9ZnVuY3Rpb24oYSl7dmFyIGI9cXEoImdvb2ctZ3QtdGh1bWJEb3duQnV0dG9uIiksYz1hLmgsZD1hLmc7Yi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24oKXtpZih5dyhjKT09PUN3KVFzKGQpO2Vsc2V7dmFyIGU9TnMoZCw2KTtPcyhkLGUpO1BzKGUsNil9QXcoYyxDdyl9LCExKX0sR3c9ZnVuY3Rpb24oYSl7dmFyIGI9cXEoImdvb2ctZ3QtdHQiKSxjPWIuZGF0YXNldCxkPXFxKCJnb29nLWd0LXZvdGluZ0lucHV0U3JjTGFuZyIpLGU9cXEoImdvb2ctZ3Qtdm90aW5nSW5wdXRUcmdMYW5nIiksCmY9cXEoImdvb2ctZ3Qtdm90aW5nSW5wdXRTcmNUZXh0IiksZz1xcSgiZ29vZy1ndC12b3RpbmdJbnB1dFRyZ1RleHQiKSxoPUNwKCJWSXBnSmQteUFXTkViLW5WTWZjZC1mbWNtUyIpLGs9cXEoImdvb2ctZ3QtdHJhbnNsYXRpb24iKSxtPWEuaCxuPWEuZzt3aW5kb3cuZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCJnb29nLWd0LXBvcHVwU2hvd24iLGZ1bmN0aW9uKHApe3ZhciBxPU5zKG4sNCk7T3MobixxKTtQcyhxLDQpO3A9cC5kZXRhaWw7cT1TdHJpbmcocC5JZCk7cD1wLnZsO2MuaWQ9cTtxPW0uZ2V0KHEpfHxFdztGdyhxKTtiLnN0eWxlLndpZHRoPU1hdGgubWF4KE1hdGgubWluKHdpbmRvdy5pbm5lcldpZHRoLTE2LDUzNiksMjg4KSsicHgiO3E9cC5XYSgpfHwiIjt2YXIgcj1wLnJhKCl8fCIiO2QudmFsdWU9cTtlLnZhbHVlPXI7Zi52YWx1ZT1wLnhkKCk7Zy52YWx1ZT1wLlY7ayYmKGsuaW5uZXJUZXh0PXAuVik7Yi5sYW5nPWNzO2gubGFuZz1xO2smJihrLmxhbmc9CnIpO18ucWYudGVzdChxKSYmKGguY2xhc3NMaXN0LmFkZCgicnRsIiksaC5kaXI9InJ0bCIpO2smJl8ucWYudGVzdChyKSYmKGsuY2xhc3NMaXN0LmFkZCgicnRsIiksay5kaXI9InJ0bCIpfSwhMSl9LEZ3PWZ1bmN0aW9uKGEpe3ZhciBiPXFxKCJnb29nLWd0LXRodW1iVXBCdXR0b24iKSxjPXFxKCJnb29nLWd0LXRodW1iVXBJY29uIiksZD1xcSgiZ29vZy1ndC10aHVtYlVwSWNvbkZpbGxlZCIpLGU9cXEoImdvb2ctZ3QtdGh1bWJEb3duQnV0dG9uIiksZj1xcSgiZ29vZy1ndC10aHVtYkRvd25JY29uIiksZz1xcSgiZ29vZy1ndC10aHVtYkRvd25JY29uRmlsbGVkIik7Yi5zZXRBdHRyaWJ1dGUoImFyaWEtcHJlc3NlZCIsImZhbHNlIik7Yy5zdHlsZS5kaXNwbGF5PSIiO2Quc3R5bGUuZGlzcGxheT0ibm9uZSI7ZS5zZXRBdHRyaWJ1dGUoImFyaWEtcHJlc3NlZCIsImZhbHNlIik7Zi5zdHlsZS5kaXNwbGF5PSIiO2cuc3R5bGUuZGlzcGxheT0ibm9uZSI7c3dpdGNoKGEpe2Nhc2Ugenc6Yi5zZXRBdHRyaWJ1dGUoImFyaWEtcHJlc3NlZCIsCiJ0cnVlIik7Yy5zdHlsZS5kaXNwbGF5PSJub25lIjtkLnN0eWxlLmRpc3BsYXk9IiI7YnJlYWs7Y2FzZSBDdzplLnNldEF0dHJpYnV0ZSgiYXJpYS1wcmVzc2VkIiwidHJ1ZSIpLGYuc3R5bGUuZGlzcGxheT0ibm9uZSIsZy5zdHlsZS5kaXNwbGF5PSIifXFxKCJnb29nLWd0LXZvdGluZ0lucHV0Vm90ZSIpLnZhbHVlPWF9LHl3PWZ1bmN0aW9uKGEpe3ZhciBiPXFxKCJnb29nLWd0LXR0IikuZGF0YXNldDtyZXR1cm4gYS5nZXQoYi5pZCl9LEF3PWZ1bmN0aW9uKGEsYil7eXcoYSk9PT1iJiYoYj1Fdyk7RncoYik7dmFyIGM9cXEoImdvb2ctZ3QtdHQiKS5kYXRhc2V0O2Euc2V0KGMuaWQsYik7cXEoImdvb2ctZ3Qtdm90aW5nRm9ybSIpLnN1Ym1pdCgpfSxFdz0oMCkudG9TdHJpbmcoKSx6dz0oMSkudG9TdHJpbmcoKSxDdz0oMikudG9TdHJpbmcoKTt2YXIgSHc9e307SHcuYWRkPWlwO0h3LmhuPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1ncChhKTt0eXBlb2YgYj09PSJzdHJpbmciP18ud2EoZCxiKTpBcnJheS5pc0FycmF5KGIpJiYoZD1qcChkLGIpKTt0eXBlb2YgYyE9PSJzdHJpbmcifHxfLnVhKGQsYyk/QXJyYXkuaXNBcnJheShjKSYmaHAoZCxjKTpkLnB1c2goYyk7YS5jbGFzc05hbWU9ZC5qb2luKCIgIil9O0h3LmVuYWJsZT1tcDtIdy5nZXQ9Z3A7SHcuaGFzPWxwO0h3LnJlbW92ZT1rcDtIdy5zZXQ9ZnVuY3Rpb24oYSxiKXthLmNsYXNzTmFtZT1ifTtIdy5Sbz1mdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkPWdwKGEpLGU9ITEsZj0wO2Y8ZC5sZW5ndGg7ZisrKWRbZl09PWImJihkLnNwbGljZShmLS0sMSksZT0hMCk7ZSYmKGQucHVzaChjKSxhLmNsYXNzTmFtZT1kLmpvaW4oIiAiKSk7cmV0dXJuIGV9O0h3LnRvZ2dsZT1mdW5jdGlvbihhLGIpe3ZhciBjPSFscChhLGIpO21wKGEsYixjKTtyZXR1cm4gY307dmFyIEl3PWZ1bmN0aW9uKGEsYil7RnYuY2FsbCh0aGlzLGEpO2I9Ynx8e307dGhpcy5nPXthcGlLZXk6Yi5hcGlLZXl8fCIiLFZiOmIuVmJ8fDF9O3RoaXMuaD1udWxsfTtfLnkoSXcsRnYpO18ubD1Jdy5wcm90b3R5cGU7Xy5sLmF0dGFjaD1mdW5jdGlvbihhLGIpe2ImJihiLklkPWEsdGhpcy5oLmF0dGFjaChiKSl9O18ubC5kZXRhY2g9ZnVuY3Rpb24oYSl7YSYmdGhpcy5oLmRldGFjaChhKX07Xy5sLndpPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5oLlRjO2lmKGEmJmEuSWQhPT12b2lkIDApe3ZhciBiPWEuSWQ7YT10aGlzLm8ualtiXTtHdih0aGlzLHRoaXMubCwhMSk7dGhpcy5sPWI7R3YodGhpcyxiKTt0aGlzLmgub2IoYS5wbCk7dGhpcy5oLnVhKGEucmwpO3ZhciBjPWEuYmE7dGhpcy5oLlY9YyYmXy5vYyhjKTt0aGlzLmguYWIoYS50ZXh0KX1iPW5ldyBDdXN0b21FdmVudCgiZ29vZy1ndC1wb3B1cFNob3duIix7ZGV0YWlsOntJZDpiLHZsOnRoaXMuaH19KTt3aW5kb3cuZG9jdW1lbnQuYm9keS5kaXNwYXRjaEV2ZW50KGIpfTsKXy5sLnVpPWZ1bmN0aW9uKCl7R3YodGhpcyx0aGlzLmwsITEpfTtfLmwuVms9ZnVuY3Rpb24oKXt0aGlzLm8ualt0aGlzLmxdLnBqLmRpc3BhdGNoRXZlbnQoInVwZGF0aW5nIil9O18ubC5LPWZ1bmN0aW9uKCl7dGhpcy5oLmRpc3Bvc2UoKTt0aGlzLmg9bnVsbDtGdi5wcm90b3R5cGUuSy5jYWxsKHRoaXMpfTtfLmwubWg9ZnVuY3Rpb24oYSxiKXtId1tiPyJhZGQiOiJyZW1vdmUiXShhLCJWSXBnSmQteUFXTkViLVZJcGdKZC1mbWNtUy1zbjU0USIpfTt2YXIgSnc9ZnVuY3Rpb24oYSl7dGhpcy5BPWE7dGhpcy5sPXRoaXMuaD10aGlzLm89dGhpcy5qPS0xO3RoaXMuZz0hMTt0aGlzLkY9MDt0aGlzLkc9IiI7dGhpcy5CPTB9O0p3LnByb3RvdHlwZS5zdGFydD1mdW5jdGlvbigpe2lmKCF0aGlzLmcpe3RoaXMuZz0hMDt2YXIgYT1bXSxiO2ZvcihiPTA7YjwxNTtiKyspYVtiXT1Hc1swfE1hdGgucmFuZG9tKCkqNjJdO3RoaXMuRz1hLmpvaW4oIiIpO3RoaXMuRj0wO3RoaXMubD10aGlzLmg9dGhpcy5vPXRoaXMuaj0tMTt0aGlzLkI9Xy5hYygpO18uVGcodGhpcy5DLDFFNCx0aGlzKX19O0p3LnByb3RvdHlwZS5zdG9wPWZ1bmN0aW9uKCl7dGhpcy5nJiYodGhpcy5nPSExLEt3KHRoaXMpKX07SncucHJvdG90eXBlLkM9ZnVuY3Rpb24oKXt0aGlzLmcmJihLdyh0aGlzKSxfLlRnKHRoaXMuQywxRTMsdGhpcykpfTsKdmFyIEt3PWZ1bmN0aW9uKGEpe3ZhciBiPWEuQS5sLGM9YS5BLkEsZD1hLkEuaixlPWEuQS5vO2lmKGEuaiE9Ynx8YS5vIT1jfHxhLmghPWR8fGEubCE9ZSl7dmFyIGY9e307Zi5jdD1iO2YuY3Y9YztmLmN0cz1kO2YuY3ZzPWU7Zi5zaWQ9YS5HO2Yuc2VxPWEuRisrO2YudGF0PV8uYWMoKS1hLkI7aWYoYS5qPj0wfHxhLm8+PTB8fGEuaD49MHx8YS5sPj0wKWYucHQ9YS5qLGYucHY9YS5vLGYucHRzPWEuaCxmLnB2cz1hLmw7V28oInRlX3YiLGYpO2Euaj1iO2Eubz1jO2EuaD1kO2EubD1lfX07dmFyIEx3PWZ1bmN0aW9uKCl7dGhpcy5vPXRoaXMuaj10aGlzLkE9dGhpcy5sPTA7dGhpcy5nPVtdO3RoaXMuaD1fLnUuSW50ZXJzZWN0aW9uT2JzZXJ2ZXIhPW51bGw/bmV3IEludGVyc2VjdGlvbk9ic2VydmVyKCgwLF8uQykodGhpcy5CLHRoaXMpKTpudWxsfTtMdy5wcm90b3R5cGUuYXR0YWNoPWZ1bmN0aW9uKGEsYil7dGhpcy5qKz1iO3ZhciBjPXRoaXMuZy5sZW5ndGg7dGhpcy5nLnB1c2goYik7Zm9yKGI9MDtiPGEubGVuZ3RoOysrYil7dmFyIGQ9YVtiXTt1cShkKT8oZFtNd109Yyx0aGlzLmwrPUNxKGQpLmxlbmd0aCx0aGlzLmgmJnRoaXMuaC5vYnNlcnZlKGQpKTp0aGlzLndoKGQubm9kZVR5cGUpfX07THcucHJvdG90eXBlLmRldGFjaD1mdW5jdGlvbihhKXtmb3IodmFyIGI9MDtiPGEubGVuZ3RoOysrYil7dmFyIGM9YVtiXTt1cShjKT8oY1tNd109dm9pZCAwLHRoaXMuaCYmdGhpcy5oLnVub2JzZXJ2ZShjKSk6dGhpcy53aChjLm5vZGVUeXBlKX19OwpMdy5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLm89dGhpcy5qPXRoaXMuQT10aGlzLmw9MDt0aGlzLmc9W119O0x3LnByb3RvdHlwZS5CPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0wO2I8YS5sZW5ndGg7YisrKXt2YXIgYz1hW2JdO2lmKGMuaW50ZXJzZWN0aW9uUmF0aW8+MCYmYy50YXJnZXRbTXddIT1udWxsKXt0aGlzLkErPUNxKGMudGFyZ2V0KS5sZW5ndGg7dmFyIGQ9Yy50YXJnZXRbTXddO3RoaXMubys9dGhpcy5nW2RdO3RoaXMuZ1tkXT0wO2RlbGV0ZSBjLnRhcmdldFtNd119fX07bnQuYXR0YWNoKDM2NTQ2LEx3LnByb3RvdHlwZSx7d2g6MX0pO3ZhciBNdz0iX2d0XyIrTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyKDIpO3ZhciBOdz1mdW5jdGlvbihhLGIpe18udy5jYWxsKHRoaXMpO2E9YXx8e307dGhpcy5nPVNuKGEpO3RoaXMuZy5WYj1hLlZiO3RoaXMuZy5iZz0hIWEuYmc7dGhpcy5nLmlqPXBhcnNlSW50KGEuaWosMTApfHwzMDA7dGhpcy5nLmJsPWEuYmw7dGhpcy5nLnRyYWNrVmlzaWJpbGl0eT1hLnRyYWNrVmlzaWJpbGl0eXx8ITE7dGhpcy5CPTA7dGhpcy5qPXt9O3RoaXMuQT1uZXcgXy5IZih0aGlzKTt0aGlzLmw9bmV3IEl3KHRoaXMsdGhpcy5nKTtiJiYodGhpcy5sLkE9Ynx8e30pO2E9dGhpcy5sO2EuaD1uZXcgdncoe29sOmEuZy5vbH0pO2EuaC5raD0zMDA7YS5oLmJpPTFFMzthLmgubmQoITApO2Euai5MKGEuaCwic2hvdyIsKDAsXy5DKShhLndpLGEpKTthLmouTChhLmgsImhpZGUiLCgwLF8uQykoYS51aSxhKSk7YS5nLlZiJiZqcyE9InRlX2NsIiYmKGI9bmV3IEV2KHtpZDoiY29udHJpYnV0ZSIsQ2Y6US5vaSxtZToiZGJsY2xpY2siLGRmOiEwfSxhLkEpLGEuaC54ZyhiKSxhLmouTChiLAoic3VibWl0dGVkIiwoMCxfLkMpKGEuVmssYSkpKTthLmguaWEoKTthPW5ldyB4dztxcSgiZ29vZy1ndC10aHVtYlVwQnV0dG9uIikmJihCdyhhKSxEdyhhKSxHdyhhKSk7dGhpcy5vPXRoaXMuaD1udWxsO3RoaXMuZy50cmFja1Zpc2liaWxpdHkmJl8udS5JbnRlcnNlY3Rpb25PYnNlcnZlciE9bnVsbCYmKHRoaXMuaD1uZXcgTHcsdGhpcy5vPW5ldyBKdyh0aGlzLmgpKX07Xy55KE53LF8udyk7dmFyIE93PWZ1bmN0aW9uKGEpe2EubyYmYS5vLnN0b3AoKTtmb3IodmFyIGIgaW4gYS5qKXt2YXIgYz1hLGQ9YixlPWMualtkXTtpZihlKXtjLmgmJmMuaC5kZXRhY2goZS5JYSk7Zm9yKHZhciBmPTA7ZjxlLklhLmxlbmd0aDsrK2YpZS5JYVtmXSYmYy5sLmRldGFjaChlLklhW2ZdKTtkZWxldGUgYy5qW2RdfX1hLmgmJmEuaC5yZXNldCgpfTsKTncucHJvdG90eXBlLks9ZnVuY3Rpb24oKXtPdyh0aGlzKTt0aGlzLkEuZGlzcG9zZSgpO3RoaXMuQT1udWxsO3RoaXMubC5kaXNwb3NlKCk7dGhpcy5sPW51bGx9O3ZhciBQdz1mdW5jdGlvbihhKXtmb3IodmFyIGI9MDtiPGEubGVuZ3RoOysrYilpZihhW2JdJiZhW2JdLm5vZGUpcmV0dXJuIGFbYl0ubm9kZTtyZXR1cm4gbnVsbH0sVHc9ZnVuY3Rpb24oYSl7dmFyIGI9UHcoYSk7aWYoIWIpcmV0dXJuIG51bGw7dmFyIGM9W10sZD1bXSxlPVtdO2I9bmV3IE90KGIsITApO3ZhciBmPWFbYS5sZW5ndGgtMV0ubm9kZSxnPTAsaD0hMTtkb3tiLm5leHQoKTt2YXIgaz1iLm5vZGUoKTtpZighaylicmVhazt2YXIgbT1iLmcuZyxuPWIuZGVwdGgoKTtmb3IobT09MSYmLS1uO2c8YS5sZW5ndGgmJiFhW2ddLm5vZGU7KSsrZztrPT1hW2ddLm5vZGV8fCFoJiZtPT0xJiYoayE9bnVsbCYmay5wcmV2aW91c1NpYmxpbmc9PW51bGw/MDohUXcoUncoaykpKT8obT1TdyhrKSxkLnB1c2goe25vZGU6bSxhYjpmdW5jdGlvbigpe319KSxlW2QubGVuZ3RoLTFdPW4say5wYXJlbnROb2RlJiZrLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG0sayksaz09YVtnXS5ub2RlJiYKKGNbZysrXT1kLmxlbmd0aC0xLGg9ITApKTpoPSExfXdoaWxlKGshPWYpO3JldHVybntmZzplLFlrOmMscWs6ZH19LFF3PWZ1bmN0aW9uKGEpe3JldHVybiBhIT1udWxsJiZJdFthLnRhZ05hbWVdfSxSdz1mdW5jdGlvbihhKXtpZihhPT1udWxsKXJldHVybiBudWxsO2ZvcihhPWEucHJldmlvdXNTaWJsaW5nO2EhPW51bGwmJmEhPW51bGwmJmEubm9kZVR5cGU9PTMmJl8ub2MoQ3EoYSkpPT0iIjspYT1hLnByZXZpb3VzU2libGluZztyZXR1cm4gYX0sJHc9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe18uRy5jYWxsKHRoaXMpO3RoaXMuZz1bXTtmb3IodmFyIGc9MDtnPGEubGVuZ3RoOysrZyl0aGlzLmcucHVzaCgibm9kZVR5cGUiaW4gYVtnXT9ZdyhhW2ddKTphW2ddKSxadyhhW2ddLm5vZGUpO3RoaXMuaj1iO3RoaXMuRj1kfHwwO3RoaXMuUj1lfHwwO3RoaXMuQz1jO3RoaXMuQj1mfHxudWxsO3RoaXMuSj10aGlzLkk9dGhpcy5PPSExO3RoaXMubz1bXTt0aGlzLkE9W107dGhpcy5oPVtdOwp0aGlzLk49W107bmV3IF8uSGYodGhpcyk7dGhpcy5sPXRoaXMuTT0hMX0sWXc7Xy55KCR3LF8uRyk7CnZhciBjeD1mdW5jdGlvbihhKXtpZighYSlyZXR1cm4hMTtpZihhLm5vZGVUeXBlIT0zfHwhXy5GYylyZXR1cm4gYXggaW4gYSYmISFhW2F4XTtpZighYS5wYXJlbnROb2RlKXJldHVybiEwO2lmKCEoYnggaW4gYS5wYXJlbnROb2RlKSlyZXR1cm4hMTt2YXIgYj1hLnBhcmVudE5vZGVbYnhdO2lmKCFifHwhYlthLm5vZGVWYWx1ZV0pcmV0dXJuITE7Yj1iW2Eubm9kZVZhbHVlXTtmb3IodmFyIGM9MDtjPGIubGVuZ3RoOysrYylpZihiW2NdPT1hKXJldHVybiEwO3JldHVybiExfSxkeD1mdW5jdGlvbihhLGIpe2lmKCFhKXJldHVybiIiO2lmKGEudGFnTmFtZT09IlRJVExFIilyZXR1cm4gU3RyaW5nKGRvY3VtZW50LnRpdGxlKTthLm5vZGVUeXBlPT0zP2I9Im5vZGVWYWx1ZSI6Ynx8KGI9InZhbHVlIik7cmV0dXJuIGEuZ2V0QXR0cmlidXRlJiZhLmdldEF0dHJpYnV0ZShiKT9TdHJpbmcoYS5nZXRBdHRyaWJ1dGUoYikpOnR5cGVvZiBhW2JdPT09InN0cmluZyI/U3RyaW5nKGFbYl0pOgoiIn07JHcucHJvdG90eXBlLmhhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuan07CnZhciBleD1mdW5jdGlvbihhLGIsYyl7Yj17Tmg6YixLZjpjLFg6W119O2EuaC5wdXNoKGIpO3JldHVybiBifSxneD1mdW5jdGlvbihhKXtpZighYS5sJiZhLk8mJiFhLkkmJiFhLkope2EuST0hMDt2YXIgYjtpZihiPWZ4KGEuZykpe2I9YS5nO3ZhciBjPWEuaDtpZihiLmxlbmd0aD09MSYmYlswXSYmYlswXS5kZyl7Zm9yKHZhciBkPVtdLGU9MDtlPGMubGVuZ3RoOysrZSlmb3IodmFyIGY9MDtmPGNbZV0uWC5sZW5ndGg7KytmKWQucHVzaChjW2VdLlhbZl0uYmEpO2JbMF0uYWIoZC5qb2luKCIgIiksYlswXS5ub2RlKTtiPSEwfWVsc2UgYj0hMTtiPSFifWlmKGImJihiPVR3KGEuZykpKXthLkE9Yi5ZazthLm89Yi5xaztkPWEuZztlPWEuQTtmPWEubzt2YXIgZz1iLmZnO2M9W107Zm9yKHZhciBoPTA7aDxkLmxlbmd0aDsrK2gpaWYoY1toXT1bXSxkW2hdLm5vZGUmJmVbaF0hPT12b2lkIDApZm9yKHZhciBrPTA7azxmLmxlbmd0aDsrK2spaWYoIShnW2tdPmdbZVtoXV0pKXtpZihnW2tdPT0KZ1tlW2hdXSl7aWYoZltrXS5ub2RlLnBhcmVudE5vZGUhPWZbZVtoXV0ubm9kZS5wYXJlbnROb2RlKWNvbnRpbnVlfWVsc2V7Zm9yKHZhciBtPWdbZVtoXV0tZ1trXSxuPWZbZVtoXV0ubm9kZS5wYXJlbnROb2RlO20tLSYmbiYmbiE9ZltrXS5ub2RlLnBhcmVudE5vZGU7KW49bi5wYXJlbnROb2RlO2lmKG4hPWZba10ubm9kZS5wYXJlbnROb2RlKWNvbnRpbnVlfWNbaF0ucHVzaChrKX1kPWEuZztlPWEuaDtmPS0xO2ZvcihnPWUubGVuZ3RoLTE7Zz49MDstLWcpZm9yKGg9ZVtnXSxrPWguWC5sZW5ndGgtMTtrPj0wOy0taylpZihtPWguWFtrXSwhKG0uWTwwKSYmZFttLlldJiZkW20uWV0ubm9kZSlpZihmPDApbS5nZT1TcyhjW20uWV0pLGY9Y1ttLlldW2NbbS5ZXS5sZW5ndGgtMV07ZWxzZSBmb3Iobj1jW20uWV0ubGVuZ3RoLTE7bj49MDstLW4paWYoY1ttLlldW25dPD1mKXttLmdlPVNzKGNbbS5ZXS5zbGljZSgwLG4rMSkpO2Y9Y1ttLlldW25dO2JyZWFrfWZvcihjPWU9MDtjPGEuaC5sZW5ndGg7KytjKXtkPQphLmhbY107Zj1hLmc7Zz1kO2g9Yi5mZztrPWEuQTttPSIiO2ZvcihuPTA7bjxnLlgubGVuZ3RoOysrbil7dmFyIHA9Zy5YW25dO20rPXAuYmE7aWYocC5ZPDApe3ZhciBxPS0xLHI9LTEsdD1rW2cuWFtuLTFdLlldO3QhPT12b2lkIDAmJihxPWhbdF0pO248Zy5YLmxlbmd0aC0xJiYodD1rW2cuWFtuKzFdLlldLHQhPT12b2lkIDAmJihyPWhbdF0pKTtpZihxPj0wfHxyPj0wKWE6aWYodD0ocTwwfHxyPHEpJiZuPGcuWC5sZW5ndGgtMSxxPWYscj1wLHA9Zy5YW3Q/bisxOm4tMV0sIShwLlk+PXEubGVuZ3RofHxxW3AuWV0ubm9kZT09bnVsbCkpe3E9ci5iYTtyLmJhPSIiO2lmKC9eICskLy50ZXN0KHEpJiYocj10P3AuYmEuY2hhckNvZGVBdCgwKTpwLmJhLmNoYXJDb2RlQXQocC5iYS5sZW5ndGgtMSksMzU4NDw9ciYmcjw9MzcxMXx8MTIyODg8PXImJnI8PTEyMzUxfHwxMjM1Mjw9ciYmcjw9MTI1NDN8fDEyNzg0PD1yJiZyPD0xMjc5OXx8MTk5Njg8PXImJnI8PTQwOTU5fHw2NTI4MDw9CnImJnI8PTY1NTE5KSlicmVhayBhO3AuYmE9dD9xK3AuYmE6cC5iYStxfX19Zj1tO2c9YS5nO2g9ZDtrPWEubzttPWIuZmc7bj1hLkE7cD1bXTtmb3IocT0wO3E8aC5YLmxlbmd0aCYmIShlPj1rLmxlbmd0aCk7KytxKWlmKHI9aC5YW3FdLHIuZ2UmJiEoci5ZPDApJiZnW3IuWV0ubm9kZSYmci5iYSlpZihlPT1uW3IuWV18fGUgaW4gci5nZSYmKCEoZSsxIGluIHIuZ2UpfHxlKzEhPW5bci5ZXSkpe2lmKGtbZV0mJmtbZV0ubm9kZSl7dD1TdyhrW2VdLm5vZGUpO3AucHVzaCh0KTtmb3IodmFyIEE9a1tlXS5ub2RlLEQ9bVtuW3IuWV1dLW1bZV0sTD10LFY9Z1tyLlldLm5vZGUucGFyZW50Tm9kZSxmYT1MO1YmJkQtLTspZmE9Vi5jbG9uZU5vZGUoITEpLGZhLmFwcGVuZENoaWxkKEwpLFY9Vi5wYXJlbnROb2RlLEw9ZmE7QS5hcHBlbmRDaGlsZChmYSk7QT1nW3IuWV0ubm9kZTtnW3IuWV0uSGU/Z1tyLlldLm9ofHx0LmFwcGVuZENoaWxkKEEpOihBPWdbci5ZXS5ub2RlLmNsb25lTm9kZSghMSksCkEuaWQmJihBLmlkPSIiKSx0LmFwcGVuZENoaWxkKEEpKTtnW3IuWV0uYWIoci5iYSxBKX19ZWxzZSsrZSwtLXE7Zz1wO249YS5nO3A9ZDtoPWEuQztpZihwLk5oKWg9cC5OaDtlbHNle209bi5sZW5ndGg7az0tMTtmb3IocT0wO3E8cC5YLmxlbmd0aDsrK3Epcj1wLlhbcV0uWSxyPj0wJiZuW3JdJiZuW3JdLm5vZGUmJihrPU1hdGgubWF4KGssciksbT1NYXRoLm1pbihtLHIpKTtmb3Iobj0iIjttPD1rOysrbSloW21dJiYobis9aFttXSk7aD1ufW09YTtuPWc7cD1oO2lmKG0uQil7aWYobS5CLmcuVmIhPTMpe2c9bS5OO2g9Zy5wdXNoO2s9bS5CO2Q9ZC5LZjtkPWsualsrK2suQl09e2lkOmsuQi50b1N0cmluZygpLHBqOm0sdGV4dDpwLFBvOmR8fHAsYmE6ZixwbDprLkMscmw6ay5GLElhOm59O2ZvcihmPTA7ZjxuLmxlbmd0aDsrK2YpbltmXSYmay5sLmF0dGFjaChkLmlkLG5bZl0pO2suaCYmay5oLmF0dGFjaChuLHAubGVuZ3RoKTtrLm8mJmsuby5zdGFydCgpO2guY2FsbChnLGQuaWQpfX1lbHNlIGZvcihkPQowO2Q8bi5sZW5ndGg7KytkKW5bZF0udGl0bGU9cH1iPWEuZztmb3IoYz0wO2M8Yi5sZW5ndGg7KytjKWJbY10ubm9kZSYmIWJbY10uSGUmJl8ub2QoYltjXS5ub2RlKTtiPWEuZztjPWEubzthPWEuQTtmb3IoZT1kPTA7ZTxjLmxlbmd0aDsrK2UpaWYoZj1jW2VdLm5vZGUpe2Zvcig7ZDxiLmxlbmd0aCYmZT5hW2RdOylkKys7KGQ+PWIubGVuZ3RofHxlIT1hW2RdKSYmIWYuZmlyc3RDaGlsZCYmKF8ub2QoZiksY1tlXS5ub2RlPW51bGwpfX19fTsKJHcucHJvdG90eXBlLnJlc3RvcmU9ZnVuY3Rpb24oKXtpZih0aGlzLkkpaWYodGhpcy5JPSExLHRoaXMuQiYmT3codGhpcy5CKSx0aGlzLk49W10sZngodGhpcy5vKSx0aGlzLmcubGVuZ3RoPT0xJiZ0aGlzLmdbMF0uZGcpdGhpcy5nWzBdLmFiKHRoaXMuQ1swXSx0aGlzLmdbMF0ubm9kZSk7ZWxzZXtmb3IodmFyIGE9MCxiPTA7Yjx0aGlzLm8ubGVuZ3RoOysrYil7dmFyIGM9dGhpcy5vW2JdLm5vZGU7aWYoYyl7Zm9yKDthPHRoaXMuZy5sZW5ndGgmJmI+dGhpcy5BW2FdOyl7dmFyIGQ9YSsrO3RoaXMuZ1tkXS5ub2RlJiYoaHgodGhpcy5nW2RdLm5vZGUpLHRoaXMuZ1tkXS5ub2RlPW51bGwpfWlmKGE8dGhpcy5nLmxlbmd0aCYmYj09dGhpcy5BW2FdJiZ0aGlzLmdbYV0ubm9kZSl7dGhpcy5nW2FdLm9ofHwoXy5uZChjKSxjLmFwcGVuZENoaWxkKHRoaXMuZ1thXS5ub2RlKSk7dGhpcy5nW2FdLmFiKHRoaXMuQ1thXSx0aGlzLmdbYV0ubm9kZSk7YSsrO3ZhciBlPWMucGFyZW50Tm9kZTsKaWYoZSYmZS5ub2RlVHlwZSE9MTEpaWYoYy5yZW1vdmVOb2RlKWMucmVtb3ZlTm9kZSghMSk7ZWxzZXtmb3IoO2Q9Yy5maXJzdENoaWxkOyllLmluc2VydEJlZm9yZShkLGMpO18ub2QoYyl9fWVsc2UgXy5vZChjKX19dGhpcy5vPVtdfX07JHcucHJvdG90eXBlLks9ZnVuY3Rpb24oKXtfLkcucHJvdG90eXBlLksuY2FsbCh0aGlzKTt0aGlzLnJlc3RvcmUoKTtmb3IodmFyIGE9MDthPHRoaXMuZy5sZW5ndGg7KythKXRoaXMuZ1thXS5ub2RlJiZoeCh0aGlzLmdbYV0ubm9kZSk7dGhpcy5nPW51bGx9Owp2YXIgWnc9ZnVuY3Rpb24oYSl7aWYoYSlpZihhLm5vZGVUeXBlPT0zJiZfLkZjKXtieCBpbiBhLnBhcmVudE5vZGUmJmEucGFyZW50Tm9kZVtieF18fChhLnBhcmVudE5vZGVbYnhdPXt9KTt2YXIgYj1hLnBhcmVudE5vZGVbYnhdO2JbYS5ub2RlVmFsdWVdfHwoYlthLm5vZGVWYWx1ZV09W10pO2I9YlthLm5vZGVWYWx1ZV07Zm9yKHZhciBjPTA7YzxiLmxlbmd0aDsrK2MpaWYoYltjXT09YSlyZXR1cm47Yi5wdXNoKGEpfWVsc2UgYVtheF09MX0saHg9ZnVuY3Rpb24oYSl7aWYoIWF8fGEubm9kZVR5cGU9PTMmJl8uRmMpe3ZhciBiPWEucGFyZW50Tm9kZTtpZihiJiZieCBpbiBiKXt2YXIgYz1iW2J4XTtpZihjJiZhJiZjW2Eubm9kZVZhbHVlXSl7dmFyIGQ9Y1thLm5vZGVWYWx1ZV07aWYoZClmb3IodmFyIGU9MDtlPGQubGVuZ3RoOysrZSlpZihkW2VdPT1hKXtkLnNwbGljZShlLDEpO2JyZWFrfWQubGVuZ3RoPT0wJiZkZWxldGUgY1thLm5vZGVWYWx1ZV19aWYoYyYmZnQoYykpdHJ5e2RlbGV0ZSBiW2J4XX1jYXRjaChmKXtiW2J4XT0KIiJ9fX1lbHNlIGlmKGF4IGluIGEpdHJ5e2RlbGV0ZSBhW2F4XX1jYXRjaChmKXthW2F4XT0iIn19LGZ4PWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0wO2I8YS5sZW5ndGg7KytiKXRyeXthW2JdLm5vZGUmJiFhW2JdLm5vZGUucGFyZW50Tm9kZSYmKGFbYl0ubm9kZT1udWxsKX1jYXRjaChjKXthW2JdLm5vZGU9bnVsbH1mb3IoYj1hLmxlbmd0aC0xO2I+PTAmJiFhW2JdLm5vZGU7LS1iKTthLmxlbmd0aD1iKzE7cmV0dXJuIGEubGVuZ3RofSxTdz1mdW5jdGlvbihhKXthPWEub3duZXJEb2N1bWVudD9hLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZm9udCIpOl8uamQoZG9jdW1lbnQsImZvbnQiKTtadyhhKTthLnN0eWxlLnZlcnRpY2FsQWxpZ249ImluaGVyaXQiO18uSGooZXMsMikmJihhLmRpcj0iYXV0byIpO3JldHVybiBhfSxpeD1mdW5jdGlvbihhKXtmb3IodmFyIGI9bmV3IFNldCxjPTA7YzxhLmcubGVuZ3RoO2MrKyl7dmFyIGQ9YS5nW2NdLm5vZGU7ZCE9bnVsbCYmYi5hZGQoZCl9cmV0dXJuIGJ9LApqeD1mdW5jdGlvbigpe3RoaXMuaD17fTt0aGlzLmc9e319O2p4LnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5oW2FdIT1udWxsfHx0aGlzLmdbYV0hPW51bGx8fGImJihhIGluIHRoaXMuaHx8YSBpbiB0aGlzLmcpfTtqeC5wcm90b3R5cGUud3JpdGU9ZnVuY3Rpb24oYSxiKXt0aGlzLmdbYV09Yn07angucHJvdG90eXBlLnJlbW92ZT1mdW5jdGlvbihhKXtkZWxldGUgdGhpcy5nW2FdO2RlbGV0ZSB0aGlzLmhbYV19O3ZhciBheD0iX2d0XyIrTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyKDIpLGJ4PSJfZ3RuXyIrTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyKDIpOwooZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGMpe2RvY3VtZW50LnRpdGxlPWN9dmFyIGI9e307WXc9ZnVuY3Rpb24oYyxkKXtpZihjLnRhZ05hbWU9PSJUSVRMRSIpcmV0dXJue25vZGU6YyxhYjphLEhlOiEwLG9oOiEwLGRnOiEwfTtpZihjLm5vZGVUeXBlPT0zKXJldHVybntub2RlOmMsYWI6ZnVuY3Rpb24oZSxmKXtfLnFkKGYsZSl9fTtkfHwoZD0idmFsdWUiKTtiW2RdfHwoYltkXT1mdW5jdGlvbihlLGYpe2Yuc2V0QXR0cmlidXRlJiZmLnNldEF0dHJpYnV0ZShkLGUpO3R5cGVvZiBlPT09InN0cmluZyImJihmW2RdPWUpfSk7Yz17bm9kZTpjLGFiOmJbZF0sSGU6ITB9O2QhPSJ2YWx1ZSImJihjLmRnPSEwKTtyZXR1cm4gY319KSgpOwp2YXIga3g9ZnVuY3Rpb24oYSxiLGMsZCl7ZD1kLmZpcnN0Q2hpbGQmJmQuZmlyc3RDaGlsZC5ub2RlVHlwZT09Mz9kLmZpcnN0Q2hpbGQubm9kZVZhbHVlOkNxKGQpO2Q9e1k6YyxiYTpqcShkKX07YS5wdXNoKGQpO2JbY10/YltjXS5lbmQ9ZDpiW2NdPXtzdGFydDpkLGVuZDpkfTtyZXR1cm4gZH0sbHg9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiLGM9YS5maXJzdENoaWxkO2M7Yz1iKWI9Yy5uZXh0U2libGluZyxjLm5vZGVUeXBlIT0zJiYoYz09YS5maXJzdENoaWxkP2EucGFyZW50Tm9kZSYmYS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShjLGEpOnRxKGMsYSksbHgoYykpfTt2YXIgbXg9ZnVuY3Rpb24oKXt0aGlzLmc9W119O214LnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oYSl7dGhpcy5nLnB1c2goYSl9O3ZhciBueD1mdW5jdGlvbigpe3RoaXMuZz1bXX07Xy55KG54LG14KTtueC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKGEpe2lmKGEpZm9yKDthKCk7KTt9O254LkliPWZ1bmN0aW9uKCl7cmV0dXJuIEZzKG54KX07dmFyIHB4PWZ1bmN0aW9uKGEpe3RoaXMuZz1bXTt0aGlzLmg9LjU7b3godGhpcyxhKTt0aGlzLmw9MDt0aGlzLmo9ITA7dGhpcy5vPSgwLF8uQykodGhpcy5BLHRoaXMpfTtfLnkocHgsbXgpO3ZhciBveD1mdW5jdGlvbihhLGIpe2I+MT9hLmg9MTpiPC4wMDE/YS5oPS4wMDE6YiYmKGEuaD1iKX07cHgucHJvdG90eXBlLmFkZD1mdW5jdGlvbihhKXtteC5wcm90b3R5cGUuYWRkLmNhbGwodGhpcyxhKTt0aGlzLmomJnF4KHRoaXMpfTt2YXIgcXg9ZnVuY3Rpb24oYSl7YS5qPSExO3dpbmRvdy5zZXRUaW1lb3V0KGEubyxNYXRoLm1pbihhLmwsNUUzKSl9OwpweC5wcm90b3R5cGUuQT1mdW5jdGlvbigpe3ZhciBhPShuZXcgRGF0ZSkuZ2V0VGltZSgpO2Rve3RoaXMuZy5sZW5ndGgmJih0aGlzLmdbMF0mJnRoaXMuZ1swXSgpfHx0aGlzLmcuc2hpZnQoKSk7dmFyIGI9ISF0aGlzLmcubGVuZ3RoO3ZhciBjPTk1KnRoaXMuaCs1O3ZhciBkPShuZXcgRGF0ZSkuZ2V0VGltZSgpLWF9d2hpbGUoYiYmZDxjKTt0aGlzLmw9TWF0aC5jZWlsKGQqKDEvdGhpcy5oLTEpKSsxO2I/cXgodGhpcyk6dGhpcy5qPSEwfTt2YXIgcng9ZnVuY3Rpb24oYSxiKXt0aGlzLkY9YXx8bnVsbDt0aGlzLk09Ynx8bnguSWIoKTt0aGlzLkI9dGhpcy5BPXRoaXMuST1udWxsO3RoaXMubD10aGlzLmo9ITE7dGhpcy5vPW51bGw7dGhpcy5nPVtdO3RoaXMuaD0wfSxzeD1mdW5jdGlvbihhLGIpe2Euanx8KGEuST1iKX0sdHg9ZnVuY3Rpb24oYSxiLGMpe2EuQT1jPygwLF8uQykoYixjKTpifSx1eD1mdW5jdGlvbihhLGIsYyl7YS5CPWM/KDAsXy5DKShiLGMpOmJ9LHZ4PWZ1bmN0aW9uKGEsYil7YS5qfHwoYS5qPSEwLGEuRz1iLGEuaCsrLGEubz1hLkksYS5DKCkpfTtyeC5wcm90b3R5cGUuc3RvcD1mdW5jdGlvbigpe3RoaXMuaCsrO3RoaXMuaj0hMTt0aGlzLmc9W119Owp2YXIgd3g9ZnVuY3Rpb24oYSl7aWYoIWEuailyZXR1cm4gbnVsbDtmb3IodmFyIGI9ITEsYz0wO2M8YS5nLmxlbmd0aDsrK2MpaWYoYS5nW2NdLnRhcmdldD09PWEpe2EuZ1tjXS5yZWFkeT0hMTthLmdbY10uamk9YS5oKzE7Yj0hMDticmVha31ifHxhLmcucHVzaCh7dGFyZ2V0OmEscmVhZHk6ITEsamk6YS5oKzF9KTtyZXR1cm4oMCxfLkMpKGEuQyxhLGEsYS5oKzEpfSx4eD1mdW5jdGlvbihhKXtpZighYS5qKXJldHVybiEwO2Zvcih2YXIgYj0wO2I8YS5nLmxlbmd0aDsrK2IpaWYoYS5nW2JdLnRhcmdldD09PWEmJmEuZ1tiXS5qaT09YS5oKXJldHVybiBhLmdbYl0ucmVhZHk7cmV0dXJuITB9OwpyeC5wcm90b3R5cGUuQz1mdW5jdGlvbihhLGIpe2lmKHRoaXMuail7aWYoYSlmb3IodmFyIGM9MDtjPHRoaXMuZy5sZW5ndGg7KytjKWlmKHRoaXMuZ1tjXS50YXJnZXQ9PT1hKXt0aGlzLmdbY10ucmVhZHk9ITA7YnJlYWt9dGhpcy5sfHx0aGlzLk0uYWRkKCgwLF8uQykodGhpcy5KLHRoaXMsYnx8dGhpcy5oKSl9fTsKcngucHJvdG90eXBlLko9ZnVuY3Rpb24oYSl7aWYodGhpcy5oIT1hKXJldHVybiExO2E9dGhpcy5vO2lmKGE9PXl4KXJldHVybiB0aGlzLnN0b3AoKSx0aGlzLkEmJnRoaXMuQS5jYWxsKHRoaXMuRix0aGlzLHRoaXMuRyksITE7dGhpcy5sPSEwO3RyeXt2YXIgYj1hLmNhbGwodGhpcy5GLHRoaXMsdGhpcy5HKTtpZighYil0aHJvdyBFcnJvcigpO31jYXRjaChjKXt0aGlzLnN0b3AoKTthPWM7aWYodGhpcy5CKXRoaXMuQi5jYWxsKHRoaXMuRixhLHRoaXMsdGhpcy5HKTtlbHNlIHRocm93IGE7cmV0dXJuITF9ZmluYWxseXt0aGlzLmw9ITF9YiE9engmJih0aGlzLm89Yix0aGlzLmgrKyx0aGlzLkMoKSk7cmV0dXJuITF9O3ZhciB6eD1mdW5jdGlvbigpe30seXg9ZnVuY3Rpb24oKXt9O3ZhciBCeD1mdW5jdGlvbihhLGIsYyxkLGUpe2I9Ynx8e307dGhpcy5KPWV8fFtdO3RoaXMuQT1bXTt0aGlzLkc9W107QXgodGhpcyxhfHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsYi5XaD09PXZvaWQgMHx8ISFiLldoKTt0aGlzLkM9Y3x8JHc7dGhpcy5GPWIuems7dGhpcy5qPXRoaXMuZz10aGlzLm89dGhpcy5XYz1udWxsO3RoaXMuQj0hIWIuQmw7dGhpcy5wYT0hIWIueGw7dGhpcy5PPXRoaXMuQj8yNzoxMzt0aGlzLk09ITA7dGhpcy5JPVtdO3RoaXMubD1uZXcgcngodGhpcyxkKX0sQ3g9ZnVuY3Rpb24oYSxiLGMsZCl7YS5sLmp8fChiPXtmaTpiLGNpOmMsSWE6W10sT2g6W10sU2I6W10sdGV4dExlbmd0aDowLHNpemU6MCxjb250aW51b3VzOiEwfSxhLldjPW51bGwsc3goYS5sLGEuaCksdHgoYS5sLGQpLHV4KGEubCwoMCxfLkMpKGZ1bmN0aW9uKGUpe3RoaXMuR2soZSk7ZCgpfSxhKSksdngoYS5sLGIpKX0sRHg9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5JYS5sZW5ndGg+MD8KbmV3IGIoYS5JYSxhLlNiLmpvaW4oIiIpLGEuT2gsYS50ZXh0TGVuZ3RoLGEuc2l6ZSk6bnVsbH0sRXg9ZnVuY3Rpb24oYSxiKXtpZighYS5qKXJldHVybiBhLldjPUR4KGIsYS5DKSwhMDtpZighYi5jb250aW51b3VzJiZiLklhLmxlbmd0aD4wKXJldHVybiBhLldjPUR4KGIsYS5DKSwhMDtiLmNvbnRpbnVvdXM9YS5qLkVoO2E6e3ZhciBjPWEuajt2YXIgZD1hLk87aWYoYi5zaXplPmIuY2l8fGIudGV4dExlbmd0aD5iLmZpKWM9ITE7ZWxzZXt2YXIgZT1jLnNpemUsZj1jLnRleHQubGVuZ3RoO2lmKGIuSWEubGVuZ3RoIT0wJiYoZSs9Yi5JYS5sZW5ndGg9PTE/Yi5zaXplK2QrZDpiLnNpemUrZCxmKz1iLnRleHRMZW5ndGgsZT5iLmNpfHxmPmIuZmkpKXtjPSExO2JyZWFrIGF9Yi5zaXplPWU7Yi50ZXh0TGVuZ3RoPWY7Yi5JYS5wdXNoKGMubm9kZSk7Yi5PaC5wdXNoKGMudGV4dCk7ZD1iLklhLmxlbmd0aC0xO2Q9PTA/Yi5TYi5wdXNoKGMuamYpOihkPT0xJiYoYi5TYlswXT0iPGEgaT0wPiIrCmIuU2JbMF0rIjwvYT4iKSxiLlNiLnB1c2goIjxhIGk9IitkKyI+IiksYi5TYi5wdXNoKGMuamYpLGIuU2IucHVzaCgiPC9hPiIpKTtjPSEwfX1pZihjKXJldHVybiBhLmo9bnVsbCwhMTthLldjPUR4KGIsYS5DKTtyZXR1cm4hMH0sRng9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWR4KGIsYyk7ZCYmXy5vYyhkcShkKSkmJmEuSS5wdXNoKHtub2RlOmIsZ2o6Yyx0ZXh0OmR9KX07CkJ4LnByb3RvdHlwZS5oPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcztpZih0aGlzLmomJkV4KHRoaXMsYikpcmV0dXJuIHl4O2lmKCF0aGlzLmcpe3RoaXMuTT0hIXRoaXMuQS5sZW5ndGg7aWYoIXRoaXMuQS5sZW5ndGgmJihhPXRoaXMuSS5zaGlmdCgpKSlyZXR1cm4gdGhpcy5qPXtFaDohMSxub2RlOll3KGEubm9kZSxhLmdqKSx0ZXh0OmEudGV4dCxqZjpmcShhLnRleHQpLHNpemU6dGhpcy5CP18udGMoYS50ZXh0KS5sZW5ndGg6YS50ZXh0Lmxlbmd0aH0sYi5jb250aW51b3VzPSExLEV4KHRoaXMsYikseXg7YT10aGlzLkEuc2hpZnQoKXx8dGhpcy5HLnNoaWZ0KCk7aWYoIWEpcmV0dXJuIHRoaXMuaj1udWxsLEV4KHRoaXMsYikseXg7dGhpcy5vPVthLndsXTt0aGlzLmc9bmV3IE90KGEucm9vdCl9dGhpcy5nLm5leHQoKTtpZih0aGlzLmcuZG9uZSlyZXR1cm4gdGhpcy5nPW51bGwsYi5jb250aW51b3VzPSExLHRoaXMuaDthPXRoaXMuZy5ub2RlKCk7dmFyIGQ9dGhpcy5nLmcuZzsKaWYoZD09LTEpcmV0dXJuIEd4KHRoaXMpLEh4KGEpfHwoYi5jb250aW51b3VzPSExKSx0aGlzLmg7SXgodGhpcyxhKTtkPWQ9PTE7dmFyIGU9ISFhJiYoYS5ub2RlVHlwZT09MyYmdHlwZW9mIGEubm9kZVZhbHVlPT09InN0cmluZyJ8fGEudGFnTmFtZT09IlRJVExFIiYmdHlwZW9mIGEudmFsdWU9PT0ic3RyaW5nInx8YS50YWdOYW1lPT0iVEVYVEFSRUEiJiZMdShhLCJ0cmFuc2xhdGUiKXx8YS50YWdOYW1lPT0iSU5QVVQiJiYoSnRbYS50eXBlXXx8THUoYSwidHJhbnNsYXRlIikpKTtpZigoZXx8ZCkmJnRoaXMuTSYmIUp4KGEpKXJldHVybiBBeCh0aGlzLGEsS3godGhpcyksITApLE10KHRoaXMuZy5nKSxHeCh0aGlzKSx0aGlzLmg7aWYoZCYmS3godGhpcykmJih0aGlzLnBhJiZGeCh0aGlzLGEsInRpdGxlIiksRngodGhpcyxhLCJhbHQiKSxGeCh0aGlzLGEsInBsYWNlaG9sZGVyIiksRngodGhpcyxhLCJhcmlhLWxhYmVsIiksRngodGhpcyxhLCJhcmlhLXBsYWNlaG9sZGVyIiksCkZ4KHRoaXMsYSwiYXJpYS1yb2xlZGVzY3JpcHRpb24iKSxGeCh0aGlzLGEsImFyaWEtdmFsdWV0ZXh0IiksUHQodGhpcy5nKSkpZm9yKHZhciBmPWEuZmlyc3RDaGlsZDtmOyl7aWYoZi5ub2RlVHlwZT09Myl7dmFyIGc9Zi5ub2RlVmFsdWUuc3BsaXQoIlxuIik7aWYoZy5sZW5ndGg+Mnx8Zy5sZW5ndGg9PTImJl8ub2MoZ1swXSkhPSIiJiZfLm9jKGdbMV0pIT0iIil7Zi5ub2RlVmFsdWU9Z1swXTtmb3IodmFyIGg9MTtoPGcubGVuZ3RoOysraCl7dmFyIGs9Xy5lZChhKS5jcmVhdGVFbGVtZW50KCJmb250Iik7dGhpcy5KLnB1c2goayk7dHEoayxmKTtmPWs7dHEoXy5lZChhKS5jcmVhdGVUZXh0Tm9kZSgiXG4iK2dbaF0pLGYpO2Y9Zi5uZXh0U2libGluZ319fWY9Zi5uZXh0U2libGluZ31hLnNoYWRvd1Jvb3QmJkFycmF5LmZyb20oYS5zaGFkb3dSb290LmNoaWxkTm9kZXMpLmZvckVhY2goZnVuY3Rpb24ocil7QXgoYyxyLEt4KGMpKX0pO2lmKGUpe010KHRoaXMuZy5nKTtpZihLeCh0aGlzKSl7dmFyIG09CmR4KGEpO2lmKF8ub2MoZHEobSkpJiYodGhpcy5qPXtFaDohMCxub2RlOll3KGEpLHRleHQ6bSxqZjpmcShtKSxzaXplOnRoaXMuQj9fLnRjKG0pLmxlbmd0aDptLmxlbmd0aH0sRXgodGhpcyxiKSkpcmV0dXJuIEd4KHRoaXMpLHl4fUd4KHRoaXMpO3JldHVybiB0aGlzLmh9aWYoZCl7aWYoTHgoYSl8fCFhLmZpcnN0Q2hpbGQmJmEudGFnTmFtZSE9IklGUkFNRSImJmEudGFnTmFtZSE9IlJVQlkiKXJldHVybiBiLmNvbnRpbnVvdXM9Yi5jb250aW51b3VzJiYhIUl0W2EudGFnTmFtZV0sTXQodGhpcy5nLmcpLEd4KHRoaXMpLHRoaXMuaDtpZihhLnRhZ05hbWU9PSJSVUJZIil7dHJ5e209Xy56KGEuY2hpbGROb2Rlcyk7Zm9yKHZhciBuPW0ubmV4dCgpOyFuLmRvbmU7bj1tLm5leHQoKSl7dmFyIHA9bi52YWx1ZTtwLm5vZGVUeXBlIT0zJiZBeCh0aGlzLHAsS3godGhpcykpfX1jYXRjaChyKXt9TXQodGhpcy5nLmcpO0d4KHRoaXMpO3JldHVybiB0aGlzLmh9aWYoYS50YWdOYW1lPT0iSUZSQU1FIil7dHJ5e2lmKCFhLnNyYy5tYXRjaCgvaHR0cHM/OlwvXC8vKXx8Cl8uaGYoYS5zcmMubWF0Y2goXy5nZilbM118fG51bGwpPT13aW5kb3cubG9jYXRpb24uaG9zdG5hbWUpe3ZhciBxPXZxKGEpLmRvY3VtZW50RWxlbWVudDtxJiZBeCh0aGlzLHEsS3godGhpcykpfX1jYXRjaChyKXt9Yi5jb250aW51b3VzPSExO010KHRoaXMuZy5nKTtHeCh0aGlzKTtyZXR1cm4gdGhpcy5ofUt4KHRoaXMpJiZIeChhKT90aGlzLkYmJmEudGFnTmFtZT09IkEiJiZhLmhyZWYmJnRoaXMuRihhKTpiLmNvbnRpbnVvdXM9ITE7cmV0dXJuIHRoaXMuaH1NdCh0aGlzLmcuZyk7R3godGhpcyk7cmV0dXJuIHRoaXMuaH07CnZhciBMeD1mdW5jdGlvbihhKXtyZXR1cm4gY3goYSl8fGEubm9kZVR5cGUhPTMmJighYS50YWdOYW1lfHxIdFthLnRhZ05hbWVdfHxJdFthLnRhZ05hbWVdfHxMdShhLCJza2lwdHJhbnNsYXRlIikpfSxNeD1mdW5jdGlvbihhKXt2YXIgYj1fLmVkKGEpO3JldHVybiBiLmRlZmF1bHRWaWV3JiZiLmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGU/Yi5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGEsbnVsbCk6YS5jdXJyZW50U3R5bGV9LEp4PWZ1bmN0aW9uKGEpe3JldHVybiBhLm5vZGVUeXBlPT0zPyEwOmEubm9kZVR5cGUhPTE/ITE6YS5vZmZzZXRXaWR0aCYmYS5vZmZzZXRIZWlnaHQ/ITA6KGE9TXgoYSksISFhJiZhLmRpc3BsYXkhPSJub25lIiYmYS52aXNpYmlsaXR5IT0iaGlkZGVuIil9LEh4PWZ1bmN0aW9uKGEpe2lmKGEubm9kZVR5cGU9PTMpcmV0dXJuITA7aWYoYS5ub2RlVHlwZSE9MSlyZXR1cm4hMTt2YXIgYj1NeChhKTtyZXR1cm4hIUd0W2EudGFnTmFtZV0mJgooIWJ8fCFiLmRpc3BsYXl8fGIuZGlzcGxheT09ImlubGluZSIpfSxBeD1mdW5jdGlvbihhLGIsYyxkKXsoZD9hLkc6YS5BKS5wdXNoKHtyb290OmIsd2w6Yz09PXZvaWQgMHx8Y30pfSxLeD1mdW5jdGlvbihhKXtyZXR1cm4gYS5vW2Euby5sZW5ndGgtMV19LEl4PWZ1bmN0aW9uKGEsYil7Yj0hY3goYikmJihiLm5vZGVUeXBlPT1WcCYmS3goYSl8fCEoTHUoYiwibm90cmFuc2xhdGUiKXx8Yi5hdHRyaWJ1dGVzJiZiLmF0dHJpYnV0ZXMudHJhbnNsYXRlJiZiLmF0dHJpYnV0ZXMudHJhbnNsYXRlLnZhbHVlPT0ibm8iKSYmKEx1KGIsInRyYW5zbGF0ZSIpfHwhIWIuYXR0cmlidXRlcyYmISFiLmF0dHJpYnV0ZXMudHJhbnNsYXRlJiZiLmF0dHJpYnV0ZXMudHJhbnNsYXRlLnZhbHVlPT0ieWVzInx8S3goYSkpKTthLm8ucHVzaChiKX0sR3g9ZnVuY3Rpb24oYSl7YS5vLnBvcCgpfTtudC5hdHRhY2goNTc2MixCeC5wcm90b3R5cGUse0drOjF9KTt2YXIgTng9ZnVuY3Rpb24oKXtfLncuY2FsbCh0aGlzKTt0aGlzLmc9W119O18ueShOeCxfLncpO054LnByb3RvdHlwZS5yZXN0b3JlPWZ1bmN0aW9uKCl7Xy5UZyh0aGlzLmgsMCx0aGlzKX07TngucHJvdG90eXBlLmg9ZnVuY3Rpb24oKXtmb3IodmFyIGE9MDthPHRoaXMuZy5sZW5ndGg7KythKV8ub2QodGhpcy5nW2FdKTt0aGlzLmc9W119O054LnByb3RvdHlwZS5LPWZ1bmN0aW9uKCl7Xy53LnByb3RvdHlwZS5LLmNhbGwodGhpcyk7dGhpcy5yZXN0b3JlKCl9O3ZhciBPeD1mdW5jdGlvbihhKXt2YXIgYj1uZXcgU2V0O2EuZm9yRWFjaChmdW5jdGlvbihjKXt1cShjKT9iLmFkZChjKTooYz1jLnBhcmVudEVsZW1lbnR8fG51bGwsYyE9bnVsbCYmYi5hZGQoYykpfSk7cmV0dXJuIGJ9O3ZhciBQeD1mdW5jdGlvbihhKXt0aGlzLmg9ITA7dGhpcy5sPWE7dGhpcy5qPSExO3RoaXMuZz1bXX07UHgucHJvdG90eXBlLmhhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZy5qb2luKCIiKX07dmFyIFF4PWZ1bmN0aW9uKGEsYil7dGhpcy5vPWE7dGhpcy5sPSEwO3RoaXMuaj1iO3RoaXMuZz1udWxsO3RoaXMuaD0wfSxSeD1mdW5jdGlvbihhLGIpe3JldHVybiBhLmw/KGIoKDAsXy5DKShhLkEsYSksYS5vLGEuaj8iZW4iOiIiKSwhMCk6ITF9O1F4LnByb3RvdHlwZS5BPWZ1bmN0aW9uKGEsYixjKXt0aGlzLmc9Yjt0aGlzLmg9YzthKCl9O3ZhciBTeD1mdW5jdGlvbihhLGIpe3RoaXMubD1hO3RoaXMuRj0hIWI7dGhpcy5nPXRoaXMuQz0wO3RoaXMubz10aGlzLmo9LTE7dGhpcy5BPXRoaXMuQj10aGlzLmg9MH0sVng9ZnVuY3Rpb24oYSxiLGMpe2EuRiYmKGItPTkpO2Zvcih2YXIgZD0iIixlPTAsZj1hLkM7ZjxhLmwubGVuZ3RoOysrZil7dmFyIGc9YS5sLmNoYXJBdChmKSxoPWcuY2hhckNvZGVBdCgwKTtlKys7YS5oKz1hLkY/aDw9MTI3P2g8PTMyfHxUeFtoXT8zOjE6aDw9MjA0N3x8aD49NTUyOTYmJmg8PTU2MzE5fHxoPj01NjMyMCYmaDw9NTczNDM/Njo5OjE7aD1hLmg+PWI7VXhbZ10/KGEubz1mLGEuQj1hLmgsaD1ofHxlPmMpOmc9PSIgIiYmKGEuaj1mLGEuQT1hLmgsaD1ofHxlPmMpO2lmKGgpcmV0dXJuIGEubz49MD8oZD1hLmwuc3Vic3RyaW5nKGEuZyxhLm8rMSksYS5oLT1hLkIsYS5nPWEubysxLGEubz49YS5qPyhhLmo9LTEsYS5BPTApOmEuQS09YS5CLGEubz0tMSxhLkI9MCk6YS5qPj0wPyhkPWEubC5zdWJzdHJpbmcoYS5nLAphLmorMSksYS5oLT1hLkEsYS5nPWEuaisxLGEuaj0tMSxhLkE9MCk6KGQ9YS5sLnN1YnN0cmluZyhhLmcsZisxKSxhLmg9MCxhLmc9ZisxLGEubz1hLmo9LTEsYS5BPWEuQj0wKSxhLkM9ZisxLGR9YS5nPGEubC5sZW5ndGgmJihkPWEubC5zdWJzdHJpbmcoYS5nKSxhLmc9YS5sLmxlbmd0aCk7cmV0dXJuIGR9LFV4PVNzKFsiLiIsIiwiLCI6IiwiXFw/IiwiISJdKSxXeD1bIi4iLCI/IiwiISJdLFR4PVNzKFszNCwzNSwzNiwzNywzOCw0Myw0NCw0Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw5MSw5Miw5Myw5NCw5NiwxMjMsMTI0LDEyNSwxMjddKTtfLlh4PWZ1bmN0aW9uKCl7cmV0dXJuITF9O3ZhciB1bz1mdW5jdGlvbihhKXt0aGlzLkg9Xy5JKGEpfTtfLnkodW8sXy5KKTt2YXIgWXg9ZnVuY3Rpb24oYSl7dGhpcy5IPV8uSShhKX07Xy55KFl4LF8uSik7dmFyIFp4PWZ1bmN0aW9uKGEpe3RoaXMuSD1fLkkoYSl9O18ueShaeCxfLkopO3ZhciAkeD1bMSwyXTt2YXIgYXk9ZnVuY3Rpb24oYSl7dGhpcy5IPV8uSShhKX07Xy55KGF5LF8uSik7YXkucHJvdG90eXBlLllhPWZ1bmN0aW9uKCl7cmV0dXJuIF8uS2oodGhpcywxKX07dmFyIGJ5PV8ucWooYXkpO3ZhciBjeTt2YXIgZHk9ZnVuY3Rpb24oKXt0aGlzLlU9bmV3IF8uUWZ9LGV5PWZ1bmN0aW9uKGEsYil7dmFyIGMsZDtyZXR1cm4gXy5EaihmdW5jdGlvbihlKXtjPV8ueGcoXy55ZyhfLnpnKG5ldyBfLlFnLCJodHRwcyIpLGIuaG9zdCksYi5wYXRoKTtkPW5ldyBQcm9taXNlKGZ1bmN0aW9uKGYsZyl7Xy5HZChhLlUsInN1Y2Nlc3MiLGZ1bmN0aW9uKCl7Zih7Y29kZTpfLlpmKGEuVSksaGVhZGVyczpGcChhLlUpLGJvZHk6Xy4kZihhLlUpfSl9KTtfLkdkKGEuVSwiZXJyb3IiLGZ1bmN0aW9uKCl7Zyh7Y29kZTpfLlpmKGEuVSksaGVhZGVyczpGcChhLlUpLGJvZHk6Xy4kZihhLlUpfSl9KTtfLkdkKGEuVSwidGltZW91dCIsZnVuY3Rpb24oKXtnKHtjb2RlOl8uWmYoYS5VKSxoZWFkZXJzOkZwKGEuVSksYm9keTpfLiRmKGEuVSl9KX0pfSk7YS5VLnNlbmQoYyxiLm1ldGhvZCxiLmJvZHksYi5oZWFkZXJzKTtyZXR1cm4gZS5yZXR1cm4oZCl9KX07dmFyIHBwPWZ1bmN0aW9uKGEpe3RoaXMuSD1fLkkoYSl9O18ueShwcCxfLkopO3ZhciBvcD1mdW5jdGlvbihhKXt0aGlzLkg9Xy5JKGEpfTtfLnkob3AsXy5KKTt2YXIgbnA9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5qbShhLDEsYil9O3ZhciBneT1mdW5jdGlvbihhKXt2YXIgYixjLGQsZTtyZXR1cm4gXy5EaihmdW5jdGlvbihmKXtpZihmLmc9PTEpe2I9Y3l8fChjeT1ieSgnWzIsbnVsbCxbW1tbImF1dG9wdXNoIixbImF1dG9wdXNoLXRyYW5zbGF0ZS1wYS5zYW5kYm94Lmdvb2dsZWFwaXMuY29tIl1dLFsic3RhZ2luZyIsWyJkYWlseTEtdHJhbnNsYXRlLXBhLnNhbmRib3guZ29vZ2xlYXBpcy5jb20iXV0sWyJwcm9kIixbInRyYW5zbGF0ZS1wYS5nb29nbGVhcGlzLmNvbSJdXV1dXV0nKSk7dmFyIGc9THEoYixaeCwzKTt2YXIgaD1nLkg7aD1PbihObihoKSxoLHZvaWQgMCwkeCk7Zz1McShnLFl4LGg9PT0xPzE6LTEpO2g9Zy5IO3ZhciBrPWhbXy5IXXwwO2c9dm8oZyxoLGssXy5LaChnLGspKS5nZXQoYnMpO2M9Xy5KaihnLDEpO2c9bmV3IFFyO2g9dG8oYSwxLHZvaWQgMD09PV8uS2k/Mjo0KTtnPU1uKGcsMSxoLG9vKS5vYihhLldhKCkpLnVhKGEucmEoKSk7aD1uZXcgUnI7Zz1fLk0oaCwxLGcpO2Q9cXAoZywyLApqcyk7Xy52aihmLDIpO3JldHVybiBfLksoZixmeShjLGQpLDQpfWlmKGYuZyE9MilyZXR1cm4gZT1mLmgsZi5yZXR1cm4ocnAoZSkpO18ud2ooZik7cmV0dXJuIGYucmV0dXJuKFByb21pc2UucmVqZWN0KEVycm9yKCIkYSIpKSl9KX0sZnk9ZnVuY3Rpb24oYSxiKXt2YXIgYz1oeSxkLGUsZixnO3JldHVybiBfLkRqKGZ1bmN0aW9uKGgpe2lmKGguZz09MSlyZXR1cm4gZD17aG9zdDphLHBhdGg6Ii92MS90cmFuc2xhdGVIdG1sIixtZXRob2Q6IlBPU1QiLGhlYWRlcnM6eyJYLWdvb2ctYXBpLWtleSI6IkFJemFTeUFUQlhhanZ6UUxUREhFUWJjcHEwSWhlMHZXREhtTzUyMCIsIkNvbnRlbnQtVHlwZSI6ImFwcGxpY2F0aW9uL2pzb24rcHJvdG9idWYifSxib2R5Ol8uWGwoYil9LGU9Yy5nKCksXy52aihoLDIpLF8uSyhoLGV5KGUsZCksNCk7aWYoaC5nIT0yKXJldHVybiBmPWguaCxoLnJldHVybihUcihmLmJvZHkpKTtnPV8ud2ooaCk7cmV0dXJuIGgucmV0dXJuKFByb21pc2UucmVqZWN0KGcpKX0pfTt2YXIgaHk9bmV3IGZ1bmN0aW9uKCl7dGhpcy5nPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBkeX19LGl5PWZ1bmN0aW9uKGEpe3RoaXMuZz1hfSxqeT1mdW5jdGlvbihhLGIsYyl7dmFyIGQsZTtyZXR1cm4gXy5EaihmdW5jdGlvbihmKXtpZihmLmc9PTEpcmV0dXJuIF8uWHgoKT9mLnJldHVybihneShiKSk6Xy5LKGYsYS5nLnRyYW5zbGF0ZShjfHxmdW5jdGlvbigpe30sdG8oYiwxLF8uS2k9PT1fLktpPzI6NCksYi5XYSgpLGIucmEoKSwwLCExKSwyKTtkPWYuaDtlPWQubWFwKHNwKTtyZXR1cm4gZi5yZXR1cm4obnAobmV3IG9wLGUpKX0pfTt2YXIga3k9ZnVuY3Rpb24oYSl7dGhpcy5IPV8uSShhKX07Xy55KGt5LF8uSik7a3kucHJvdG90eXBlLldhPWZ1bmN0aW9uKCl7cmV0dXJuIF8uSmoodGhpcywyKX07a3kucHJvdG90eXBlLm9iPWZ1bmN0aW9uKGEpe3JldHVybiBxcCh0aGlzLDIsYSl9O2t5LnByb3RvdHlwZS5yYT1mdW5jdGlvbigpe3JldHVybiBfLkpqKHRoaXMsMyl9O2t5LnByb3RvdHlwZS51YT1mdW5jdGlvbihhKXtyZXR1cm4gcXAodGhpcywzLGEpfTt2YXIgbHk9ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3RoaXMuQj1kfHxmdW5jdGlvbigpe307dGhpcy5WPWZ8fGZ1bmN0aW9uKCl7fTt0aGlzLlI9ISFlO3RoaXMuaj1hLmcuQmg7dGhpcy5sPTA7dGhpcy5NPWZ1bmN0aW9uKCl7fTt0aGlzLkY9Yzt0aGlzLkc9dGhpcy5oPXRoaXMubz0wO3RoaXMuZz1udWxsO3RoaXMuSj0wO3RoaXMuamE9ITE7dGhpcy5UPWEuZy56aDt0aGlzLk89W107dGhpcy5aPTA7dGhpcy5wYT1hLmcuaGY7dGhpcy5BPUV0KGEpO3RoaXMueWE9dGhpcy5SPzE6Njt0aGlzLkVhPWEuZy5YaDt0aGlzLk49Yjt0aGlzLkM9W107dGhpcy5EYT1hfTtseS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXtmb3IodmFyIGE9MDthPHRoaXMuQy5sZW5ndGg7KythKXRoaXMuQ1thXS5zdG9wKCk7Zm9yKGE9MDthPHRoaXMuTy5sZW5ndGg7KythKUR0KHRoaXMuRGEsdGhpcy5PW2FdKX07CnZhciBteT1mdW5jdGlvbihhLGIpe3ZhciBjPTA7YS5NPSgwLF8uQykoZnVuY3Rpb24oKXsrK2M9PXRoaXMuQy5sZW5ndGgmJmIoKX0sYSl9LG55PWZ1bmN0aW9uKGEsYixjKXthLkI9ZnVuY3Rpb24oKXt9O2EuTj1iO2EuZz1udWxsO2EuWj0wO2EuQz1bXTthLk09ZnVuY3Rpb24oKXt9O2EuRj1jfSxveT1mdW5jdGlvbihhLGIsYyl7aWYoYS5oPT0wJiYoYS5oPWI/M0UzOmEuQSwhY3x8Yzw9YS5BKSl7YS5vPWEuaDtyZXR1cm59ZG8gYj1hLmgsYS5oPGEuQSYmKGEuaCo9YS55YSxhLmg+YS5BJiYoYS5oPWEuQSkpO3doaWxlKGIhPWEuaCYmYyYmYS5oPGMpO2Eubz1hLmh9LHB5PWZ1bmN0aW9uKGEsYil7dmFyIGM9YiE9bnVsbCxkPSFjJiYhYS5qYTsoZHx8YykmJmEuQigxMDAsZCxiKX0scXk9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucGE/YS5nLlI6YS5nLmhhKCkubGVuZ3RofSxyeT1mdW5jdGlvbihhLGIsYyxkLGUpe3JldHVybiBuZXcgQngoYS5OLnNoaWZ0KCkse0JsOmEucGEsems6YiwKV2g6ITAseGw6ISFjfSxmdW5jdGlvbigpe3ZhciBmPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7cmV0dXJuIG5ldyAkdyhmLnNoaWZ0KCksZi5zaGlmdCgpLGYuc2hpZnQoKSxmLnNoaWZ0KCksZi5zaGlmdCgpLGMsZCl9LGEuRixlKX0sdHk9ZnVuY3Rpb24oYSxiLGMpe2lmKGEuVD4wJiZiLkxiKCk+PWEuVClyZXR1cm4hMDtpZihxeShhKT5hLmgpe2lmKGIuTGIoKT4wKXJldHVybiEwO295KGEsYyxxeShhKSk7Zm9yKHZhciBkPWEuZy5oYSgpLGU9bmV3IFN4KGQsYS5wYSksZjtmPVZ4KGUsYS5oLGEuaik7KWlmKFd4LmluZGV4T2YoZi5jaGFyQXQoZi5sZW5ndGgtMSkpPDAmJmIuTysrLGIuaC5wdXNoKG5ldyBReChbZl0sITEpKSxhLmwrPWYubGVuZ3RoLGEuai09Zi5sZW5ndGgsYS5qPD0wKXtiLkc9ZC5zdWJzdHJpbmcoZS5nKTticmVha31lbHNlIG95KGEsYyk7c3koYixhLmcsITApO2EuZz1udWxsO3JldHVybiEwfWlmKHF5KGEpPmEubylyZXR1cm4hMDtzeShiLAphLmcsITApO2Euby09cXkoYSkrYS5FYTthLmwrPWEuZy5GO2Euai09YS5nLkY7YS5nPW51bGw7cmV0dXJuITF9LHV5PWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1bXSxjPXt4YjowfTtjLnhiPGEubGVuZ3RoO2M9e3hiOmMueGJ9LGMueGIrKylhW2MueGJdLmxlbmd0aD4xJiZhW2MueGJdWzFdPT09MjAwP2IucHVzaC5hcHBseShiLF8uSmIoYVtjLnhiXVswXS50b1N0cmluZygpLnNwbGl0KCImbHQ7ZXh0cmFfaWRfMSZndDsiKS5tYXAoZnVuY3Rpb24oZCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybltlLnRyaW0oKSxhW2QueGJdWzFdXX19KGMpKSkpOmIucHVzaChhW2MueGJdKTtyZXR1cm4gYn0sdnk9ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZixnLGgsayxtLG47cmV0dXJuIF8uRGooZnVuY3Rpb24ocCl7c3dpdGNoKHAuZyl7Y2FzZSAxOmY9Xy5JaihlcywzKTtpZihmKXt2YXIgcT1xPT09dm9pZCAwPzNFMzpxO2Zvcih2YXIgcj1bXSx0PTA7dDxjLmxlbmd0aDspe2Zvcih2YXIgQT0KW10sRD0wO3Q8Yy5sZW5ndGg7KXt2YXIgTD1jW3RdLFY9TC5sZW5ndGg7RD1BLmxlbmd0aD09PTA/VjpEKzIwK1Y7aWYoRD5xJiZBLmxlbmd0aD4wKWJyZWFrO0EucHVzaChMKTt0Kyt9QS5sZW5ndGg+MCYmci5wdXNoKEEuam9pbigiICZsdDtleHRyYV9pZF8xJmd0OyAiKSl9cT1yfWVsc2UgcT1jO2c9cTtxPW5ldyBpeShhLkRhKTtyPW5ldyBreTtyPU1uKHIsMSxnLG9vKTtoPWp5KHEsci5vYihkKS51YShlKSxiKTtfLnZqKHAsMik7cmV0dXJuIF8uSyhwLGgsNCk7Y2FzZSA0Oms9cC5oO209dHAoayk7bj1mP3V5KG0pOm07YihuLDIwMCk7cC5nPTM7cC5sPTA7YnJlYWs7Y2FzZSAyOl8ud2oocCksYihbXSw1MDApO2Nhc2UgMzpyZXR1cm4gYS5PLnB1c2goaCkscC5yZXR1cm4oaCl9fSl9O3ZhciB3eT1mdW5jdGlvbihhLGIpe18udy5jYWxsKHRoaXMpO3RoaXMubD1iO3RoaXMuaj17cm9vdE1hcmdpbjphfTt0aGlzLmc9bmV3IEludGVyc2VjdGlvbk9ic2VydmVyKCgwLF8uQykodGhpcy5oLHRoaXMpLHRoaXMuail9O18ueSh3eSxfLncpO3d5LnByb3RvdHlwZS5LPWZ1bmN0aW9uKCl7Xy53LnByb3RvdHlwZS5LLmNhbGwodGhpcyk7dGhpcy5nPW51bGx9O3d5LnByb3RvdHlwZS5oPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0wO2I8YS5sZW5ndGg7YisrKWlmKGFbYl0uaW50ZXJzZWN0aW9uUmF0aW8+MCl7dGhpcy5sKCk7YnJlYWt9fTt3eS5wcm90b3R5cGUudHJhY2s9ZnVuY3Rpb24oYSl7Xy51ZyhhLCgwLF8uQykodGhpcy5nLm9ic2VydmUsdGhpcy5nKSl9O3ZhciB4eT1mdW5jdGlvbihhKXt2YXIgYj1hIT1udWxsP2E6e30sYz1iLm5uLGQ9Yi5wbixlPWIuam4sZj1iLnFuLGc9Yi5tbixoPWIub24saz1iLmtuLG09Yi5sbjthPV8uem4oKTshbSYmTnEoYyk/KGU9ISFlLGY9ISFmLGI9YiYmYi53bixjPSgwLF8udW4pKE5xKGMpPyI8c2NyaXB0IisoYj8nIG5vbmNlPSInK1AodXIoYikpKyciJzoiIikrIj53aW5kb3dbJ3BwQ29uZmlnJ10gPSB7cHJvZHVjdE5hbWU6ICIrUnEobHIoZCE9bnVsbD9kOiJ1bmtub3duIikpKyIsIGRlbGV0ZUlzRW5mb3JjZWQ6ICIrUnEobHIoZSkpKyIsIHNlYWxJc0VuZm9yY2VkOiAiK1JxKGxyKGYpKSsiLCBoZWFydGJlYXRSYXRlOiAiK1JxKGxyKGchPW51bGw/ZzouNSkpKyIsIHBlcmlvZGljUmVwb3J0aW5nUmF0ZU1pbGxpczogIitScShscihoIT1udWxsP2g6NkU0KSkrIiwgZGlzYWJsZUFsbFJlcG9ydGluZzogIitScShscihrIT1udWxsP2s6ITEpKSsifTsiK1JxKGxyKGMhPW51bGw/YzoiIikpKyJceDNjL3NjcmlwdD4iOgoiIikpOmM9IiI7cmV0dXJuIFJwKGEsYyl9O3ZhciB5eT1mdW5jdGlvbihhKXtyZXR1cm4oMCxfLnVuKSgnPHNwYW4gaWQ9IicrUChhLmlkKSsnIj48L3NwYW4+Jyl9LHp5PWZ1bmN0aW9uKGEpe3ZhciBiPWEuaWQsYz1hLlBoO3JldHVybigwLF8udW4pKGZyKGEuUWgpKyc8ZGl2IGlkPSInK1AoYikrJyI+PC9kaXY+JytmcihjKSl9LFNwPWZ1bmN0aW9uKGEpe3ZhciBiPWEudG9wLGM9YS5sZWZ0LGQ9YS5ib3R0b20sZT1hLnJpZ2h0LGY9YS5pZDtyZXR1cm4oMCxfLnZuKSgiLiIrV3EoYS5jbGFzc05hbWUpKyIge3otaW5kZXg6OTk5OTk5OTsgb3ZlcmZsb3c6dmlzaWJsZTsgcG9zaXRpb246Zml4ZWQ7IF9wb3NpdGlvbjphYnNvbHV0ZTsiKyhifHxiPT09MD8idG9wOiIrV3EoYikrInB4OyBfdG9wOmV4cHJlc3Npb24oKCIrV3EoYikrIisoaGFjazE9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcHx8ZG9jdW1lbnQuYm9keS5zY3JvbGxUb3ApKSsncHgnKTsiOiJ0b3A6YXV0bzsiKSsoY3x8Yz09PTA/ImxlZnQ6IitXcShjKSsKInB4OyBfbGVmdDpleHByZXNzaW9uKCgiK1dxKGMpKyIrKGhhY2syPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0fHxkb2N1bWVudC5ib2R5LnNjcm9sbExlZnQpKSsncHgnKTsiOiJsZWZ0OmF1dG87IikrKGR8fGQ9PT0wPyJib3R0b206IitXcShkKSsicHg7IF90b3A6ZXhwcmVzc2lvbigoLSIrV3EoZCkrIi1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnIitTdHJpbmcoZikucmVwbGFjZShtcixicikrIicpLm9mZnNldEhlaWdodCsoaGFjazM9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodHx8ZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQpKyhoYWNrND1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wfHxkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCkpKydweCcpOyI6ImJvdHRvbTphdXRvOyIpKyhlfHxlPT09MD8icmlnaHQ6IitXcShlKSsicHg7IF9sZWZ0OmV4cHJlc3Npb24oKC0iK1dxKGUpKyItZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJyIrClN0cmluZyhmKS5yZXBsYWNlKG1yLGJyKSsiJykub2Zmc2V0V2lkdGgrKGhhY2s1PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aHx8ZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCkrKGhhY2s2PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0fHxkb2N1bWVudC5ib2R5LnNjcm9sbExlZnQpKSsncHgnKTsiOiJyaWdodDphdXRvOyIpKyJ9Iil9LEF5PWZ1bmN0aW9uKCl7cmV0dXJuKDAsXy51bikoJzxkaXYgY2xhc3M9IicrUCgiVklwZ0pkLVpWaTlvZC1hWjJ3RWUtd09ITXlmIikrJyI+PGRpdiBjbGFzcz0iJytQKCJWSXBnSmQtWlZpOW9kLWFaMndFZS1PaWlDTyIpKyciPjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBjbGFzcz0iJytQKCJWSXBnSmQtWlZpOW9kLWFaMndFZSIpKyciIHdpZHRoPSI5NnB4IiBoZWlnaHQ9Ijk2cHgiIHZpZXdCb3g9IjAgMCA2NiA2NiI+PGNpcmNsZSBjbGFzcz0iJytQKCJWSXBnSmQtWlZpOW9kLWFaMndFZS1KdDVjSyIpKwonIiBmaWxsPSJub25lIiBzdHJva2Utd2lkdGg9IjYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgY3g9IjMzIiBjeT0iMzMiIHI9IjMwIi8+PC9zdmc+PC9kaXY+PC9kaXY+Jyl9O3ZhciBCeT1mdW5jdGlvbigpe08uY2FsbCh0aGlzKX07Xy55KEJ5LE8pO0J5LnByb3RvdHlwZS5TPWZ1bmN0aW9uKCl7dGhpcy5BYShsbyhBeSkpfTtCeS5wcm90b3R5cGUuQWE9ZnVuY3Rpb24oYSl7dGhpcy5vPWF9O0J5LnByb3RvdHlwZS5zaG93PWZ1bmN0aW9uKCl7TXUodGhpcy5EKCksIlZJcGdKZC1aVmk5b2QtYVoyd0VlLXdPSE15Zi10aTZoR2MiKTtNdSh0aGlzLkQoKS5maXJzdENoaWxkLCJWSXBnSmQtWlZpOW9kLWFaMndFZS1PaWlDTy10aTZoR2MiKX07dmFyIEN5PWZ1bmN0aW9uKGEpe091KGEuRCgpLCJWSXBnSmQtWlZpOW9kLWFaMndFZS13T0hNeWYtdGk2aEdjIik7T3UoYS5EKCkuZmlyc3RDaGlsZCwiVklwZ0pkLVpWaTlvZC1hWjJ3RWUtT2lpQ08tdGk2aEdjIil9O3ZhciBEeT1mdW5jdGlvbigpe3RoaXMuZz1uZXcgQnk7dGhpcy5nLlMoKTt0aGlzLmcuaWEoKTt0aGlzLmg9MH07RHkucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5oPTA7Q3kodGhpcy5nKX07dmFyIEV5PUZzKE1zKSxGeT1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGgpe3RoaXMuaD1hO3RoaXMuZz1iO3RoaXMuQz1bXTt0aGlzLkc9bnVsbDt0aGlzLm89Yzt0aGlzLmw9ZDt0aGlzLmo9ZTt0aGlzLk49Zjt0aGlzLkRhPWc7dGhpcy5GPXRoaXMuQT1udWxsO3RoaXMuQj1ofHxudWxsO3RoaXMuSj10aGlzLk09ITE7dGhpcy5JPXt9O3RoaXMucGE9RXk7dGhpcy5PPTB9LEd5PWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1uZXcgU2V0LGM9MDtjPGEubGVuZ3RoO2MrKylpeChhW2NdKS5mb3JFYWNoKGZ1bmN0aW9uKGQpe3JldHVybiBiLmFkZChkKX0pO3JldHVybiBifTsKRnkucHJvdG90eXBlLnRyYWNrVmlzaWJpbGl0eT1mdW5jdGlvbihhKXt0aGlzLkE9bmV3IHd5KCIyMDBweCIsKDAsXy5DKSh0aGlzLlIsdGhpcyxhKSk7dGhpcy5BLnRyYWNrKE94KEd5KFtdLmNvbmNhdCh0aGlzLmcsdGhpcy5DKSkpKTt0aGlzLkY9bmV3IHd5KCIwcHgiLCgwLF8uQykodGhpcy5WLHRoaXMpKTt0aGlzLkYudHJhY2soT3goR3koW10uY29uY2F0KHRoaXMuZyx0aGlzLkMpKSkpfTtGeS5wcm90b3R5cGUuUj1mdW5jdGlvbihhKXt0aGlzLkEmJih0aGlzLkEuZy5kaXNjb25uZWN0KCksdGhpcy5BPW51bGwpO2EoKX07RnkucHJvdG90eXBlLlY9ZnVuY3Rpb24oKXt0aGlzLk09ITA7SHkodGhpcyk7aWYoIXRoaXMuSiYmdGhpcy5CKXt2YXIgYT10aGlzLkI7YS5oKys9PTAmJmEuZy5zaG93KCl9fTt2YXIgSHk9ZnVuY3Rpb24oYSl7YS5GJiYoYS5GLmcuZGlzY29ubmVjdCgpLGEuRj1udWxsKX07CkZ5LnByb3RvdHlwZS5kb25lPWZ1bmN0aW9uKCl7aWYodGhpcy5NJiYhdGhpcy5KJiZ0aGlzLkIpe3ZhciBhPXRoaXMuQjstLWEuaD09MCYmQ3koYS5nKX10aGlzLkEmJih0aGlzLkEuZy5kaXNjb25uZWN0KCksdGhpcy5BPW51bGwpO0h5KHRoaXMpO0l5KHRoaXMpfTt2YXIgc3k9ZnVuY3Rpb24oYSxiLGMpe2M/KGEuZy5wdXNoKGIpLGEuSVtiLmhhKCldPSEwKTphLkMucHVzaChiKX07RnkucHJvdG90eXBlLkxiPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZy5sZW5ndGgrdGhpcy5DLmxlbmd0aH07dmFyIEp5PWZ1bmN0aW9uKGEpe2lmKGEuaC5sZW5ndGg9PTApe2Zvcih2YXIgYj1bXSxjPTA7YzxhLmcubGVuZ3RoOysrYyliLnB1c2goYS5nW2NdLmhhKCkpO2EuaC5wdXNoKG5ldyBReChiLCExKSl9fTsKRnkucHJvdG90eXBlLnRyYW5zbGF0ZT1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKCl7ZCsrO2Q9PWMmJmUoKX1KeSh0aGlzKTtmb3IodmFyIGM9MCxkPTAsZT1mdW5jdGlvbigpe30sZj10aGlzLm8sZz10aGlzLmwsaD10aGlzLmosaz0wO2s8dGhpcy5oLmxlbmd0aDsrK2spUngodGhpcy5oW2tdLGZ1bmN0aW9uKG0sbixwKXtyZXR1cm4gdnkoZixfLiRiKG0sYiksbixwfHxnLGgpfSkmJmMrKztjIT0wJiYoZT13eChhKSk7cmV0dXJuIGN9O3ZhciBJeT1mdW5jdGlvbihhKXtpZihhLmcubGVuZ3RoPjApe2lmKGEuZy5sZW5ndGg9PTEmJmEuaC5sZW5ndGg+MSl7dmFyIGI9MTt2YXIgYz1hLmgubGVuZ3RofWVsc2UgYj1jPWEuZy5sZW5ndGg7dmFyIGQ9YS5nLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5GfSkucmVkdWNlKGZ1bmN0aW9uKGUsZil7cmV0dXJuIGUrZn0pO1JzKGEucGEse0xiOmIsSWg6YyxpaTpkLEhoOmEuT30pfX07dmFyIEt5PXthbToiTm90byBTYW5zIEV0aGlvcGljIixiZXI6Ik5vdG8gU2FucyBUaWZpbmFnaCIsImJtLU5rb28iOiJOb3RvIFNhbnMgTktvIixibjoiTG9oaXQgQmVuZ2FsaSIsYm86Ik5vdG8gU2VyaWYgVGliZXRhbiIsZHY6Ik5vdG8gU2FucyBUaGFhbmEiLGR6OiJOb3RvIFNlcmlmIFRpYmV0YW4iLGl1OiJOb3RvIFNhbnMgQ2FuYWRpYW4gQWJvcmlnaW5hbCIsa206Ik5va29yYSIsbG86IkRoeWFuYSIsbWw6Ik5vdG8gU2FucyBNYWxheWFsYW0iLCJtbmktTXRlaSI6Ik5vdG8gU2FucyBNZWV0ZWkgTWF5ZWsiLG15OiJOb3RvIFNhbnMgTXlhbm1hciIsInBhLUFyYWIiOiJOb3RvIE5hc3RhbGlxIFVyZHUiLHBzOiJOb3RvIE5hc2toIEFyYWJpYyIsc2F0OiJOb3RvIFNhbnMgT2wgQ2hpa2kiLHNkOiJOb3RvIE5hc2toIEFyYWJpYyIsc2k6Ik5vdG8gU2FucyBTaW5oYWxhIix0YToiTG9oaXQgVGFtaWwiLHl1ZToiQ2hvY29sYXRlIENsYXNzaWNhbCBTYW5zIn0sTHk9e30sTXk9KEx5WyJDaG9jb2xhdGUgQ2xhc3NpY2FsIFNhbnMiXT0KIi9jc3MyP2ZhbWlseT1DaG9jb2xhdGUrQ2xhc3NpY2FsK1NhbnMiLEx5LkRoeWFuYT0iL2Nzcz9mYW1pbHk9RGh5YW5hIixMeVsiTG9oaXQgQmVuZ2FsaSJdPSIvY3NzP2ZhbWlseT1Mb2hpdCtCZW5nYWxpIixMeVsiTG9oaXQgVGFtaWwiXT0iL2Nzcz9mYW1pbHk9TG9oaXQrVGFtaWwiLEx5Lk5va29yYT0iL2Nzcz9mYW1pbHk9Tm9rb3JhIixMeVsiTm90byBOYXNraCBBcmFiaWMiXT0iL2Vhcmx5YWNjZXNzL25vdG9uYXNraGFyYWJpYy5jc3MiLEx5WyJOb3RvIE5hc3RhbGlxIFVyZHUiXT0iL2Vhcmx5YWNjZXNzL25vdG9uYXN0YWxpcXVyZHUuY3NzIixMeVsiTm90byBTYW5zIENhbmFkaWFuIEFib3JpZ2luYWwiXT0iL2Vhcmx5YWNjZXNzL25vdG9zYW5zY2FuYWRpYW5hYm9yaWdpbmFsLmNzcyIsTHlbIk5vdG8gU2FucyBFdGhpb3BpYyJdPSIvZWFybHlhY2Nlc3Mvbm90b3NhbnNldGhpb3BpYy5jc3MiLEx5WyJOb3RvIFNhbnMgTWFsYXlhbGFtIl09Ii9lYXJseWFjY2Vzcy9ub3Rvc2Fuc21hbGF5YWxhbS5jc3MiLApMeVsiTm90byBTYW5zIE1lZXRlaSBNYXllayJdPSIvY3NzP2ZhbWlseT1Ob3RvK1NhbnMrTWVldGVpK01heWVrIixMeVsiTm90byBTYW5zIE15YW5tYXIiXT0iL2Vhcmx5YWNjZXNzL25vdG9zYW5zbXlhbm1hci5jc3MiLEx5WyJOb3RvIFNhbnMgTktvIl09Ii9jc3M/ZmFtaWx5PU5vdG8rU2FucytOS28iLEx5WyJOb3RvIFNhbnMgT2wgQ2hpa2kiXT0iL2Vhcmx5YWNjZXNzL25vdG9zYW5zb2xjaGlraS5jc3MiLEx5WyJOb3RvIFNhbnMgU2luaGFsYSJdPSIvZWFybHlhY2Nlc3Mvbm90b3NhbnNzaW5oYWxhLmNzcyIsTHlbIk5vdG8gU2FucyBUaGFhbmEiXT0iL2Vhcmx5YWNjZXNzL25vdG9zYW5zdGhhYW5hLmNzcyIsTHlbIk5vdG8gU2FucyBUaWZpbmFnaCJdPSIvZWFybHlhY2Nlc3Mvbm90b3NhbnN0aWZpbmFnaC5jc3MiLEx5WyJOb3RvIFNlcmlmIFRpYmV0YW4iXT0iL2Nzcz9mYW1pbHk9Tm90bytTZXJpZitUaWJldGFuIixMeSksTnk9ZnVuY3Rpb24oKXt0aGlzLmc9W119OwpOeS5wcm90b3R5cGUucmVzdG9yZT1mdW5jdGlvbigpe2Zvcih2YXIgYT1fLnoodGhpcy5nKSxiPWEubmV4dCgpOyFiLmRvbmU7Yj1hLm5leHQoKSliLnZhbHVlLnJlbW92ZSgpO3RoaXMuZz1bXX07dmFyIE95PWZ1bmN0aW9uKGEsYil7Xy53LmNhbGwodGhpcyk7dGhpcy5nPVtdO3RoaXMuaD1bXTt0aGlzLmw9YTt0aGlzLmo9Yn07Xy55KE95LF8udyk7T3kucHJvdG90eXBlLm89ZnVuY3Rpb24oYSl7dmFyIGI9Xy5vYyhhLmhyZWYpO2IuaW5kZXhPZigiamF2YXNjcmlwdDoiKT09MHx8Yi5pbmRleE9mKCIjIik+PTB8fCh0aGlzLmgucHVzaChhLmhyZWYpLHRoaXMuZy5wdXNoKGEpLGEuaHJlZj1iKyIjZ29vZ3RyYW5zLyIrdGhpcy5sKyIvIit0aGlzLmopfTtPeS5wcm90b3R5cGUuSz1mdW5jdGlvbigpe18udy5wcm90b3R5cGUuSy5jYWxsKHRoaXMpO3RoaXMucmVzdG9yZSgpfTtPeS5wcm90b3R5cGUucmVzdG9yZT1mdW5jdGlvbigpe2lmKHRoaXMuZy5sZW5ndGgpe2Zvcih2YXIgYT0wO2E8dGhpcy5nLmxlbmd0aDsrK2EpdGhpcy5nW2FdLmhyZWY9dGhpcy5oW2FdO3RoaXMuZz1bXTt0aGlzLmg9W119fTt2YXIgUHk9ZnVuY3Rpb24oYSxiKXtfLncuY2FsbCh0aGlzKTt0aGlzLmc9YTt0aGlzLmg9Xy5xZi50ZXN0KGIpPyJ0cmFuc2xhdGVkLXJ0bCI6InRyYW5zbGF0ZWQtbHRyIjthPVtdLmNvbmNhdCh0aGlzLmcpO2ZvcihiPTA7YjxhLmxlbmd0aDsrK2IpdXEoYVtiXSkmJk11KGFbYl0sdGhpcy5oKX07Xy55KFB5LF8udyk7UHkucHJvdG90eXBlLks9ZnVuY3Rpb24oKXtfLncucHJvdG90eXBlLksuY2FsbCh0aGlzKTt0aGlzLnJlc3RvcmUoKX07UHkucHJvdG90eXBlLnJlc3RvcmU9ZnVuY3Rpb24oKXtmb3IodmFyIGE9W10uY29uY2F0KHRoaXMuZyksYj0wO2I8YS5sZW5ndGg7KytiKXVxKGFbYl0pJiZPdShhW2JdLHRoaXMuaCl9O3ZhciBReT1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGgsayxtKXtfLncuY2FsbCh0aGlzKTt0aGlzLkY9YTt0aGlzLlRjPWI7dGhpcy5GYj1uZXcgTnk7dGhpcy5WPWN8fG51bGw7dGhpcy5qYT1tfHxudWxsO3RoaXMuTT1udWxsO3RoaXMuYmI9ISFkO3RoaXMuUWQ9ZXx8InRyYW5zcGFyZW50Ijt0aGlzLlhjPSEhZjt0aGlzLkc9W107dGhpcy5SYj10aGlzLkk9dGhpcy5nPSExO3RoaXMuaD1ofHxuZXcgang7dGhpcy5mZT0haDt0aGlzLlo9Z3x8bnguSWIoKTt0aGlzLkNiPW5ldyBOeDt0aGlzLnlhPXRoaXMucWE9dGhpcy5KPSExO3RoaXMuRGI9dGhpcy5vPS41O3RoaXMuRWI9LjAxO3RoaXMuQz1uZXcgcHgodGhpcy5vKTt0aGlzLlI9KHRoaXMuQj10aGlzLlQ9ISFrKT9uZXcgTXV0YXRpb25PYnNlcnZlcigoMCxfLkMpKHRoaXMuZGssdGhpcykpOm51bGw7dGhpcy5qPXRoaXMubD1udWxsO18uRih3aW5kb3csImJsdXIiLHRoaXMuZWgsITAsdGhpcyk7Xy5GKHdpbmRvdywiZm9jdXMiLAp0aGlzLmZoLCEwLHRoaXMpfTtfLnkoUXksXy53KTtfLmw9UXkucHJvdG90eXBlO18ubC5XYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmw/dGhpcy5sOiIifTtfLmwucmE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5qP3RoaXMuajoiIn07Xy5sLm1qPWZ1bmN0aW9uKGEpe3RoaXMuQ2suYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuQSYmdGhpcy5BKDAsITEsMSl9O18ubC5OZz1mdW5jdGlvbihhKXt0aGlzLkRrLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLkEmJnRoaXMuQSgwLCExLDEpfTtfLmwubmo9ZnVuY3Rpb24oYSl7dGhpcy5Fay5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy5BJiZ0aGlzLkEoMCwhMSwxKX07Xy5sLm9qPWZ1bmN0aW9uKGEpe3RoaXMuRmsuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuQSYmdGhpcy5BKDAsITEsMSl9OwpfLmwudHJhbnNsYXRlPWZ1bmN0aW9uKGEsYixjLGQsZSl7aWYoZHx8YSE9dGhpcy5sfHxiIT10aGlzLmopUnkodGhpcyksdGhpcy5mZSYmKHRoaXMuaD1uZXcgangpO2Vsc2UgaWYodGhpcy5nKXJldHVybjt0aGlzLkE9Yzt0aGlzLlNkPWU7dGhpcy5CPXRoaXMuVDt0aGlzLlImJnRoaXMuUi5vYnNlcnZlKGRvY3VtZW50LmJvZHkse2F0dHJpYnV0ZXM6ITAsY2hpbGRMaXN0OiEwLGNoYXJhY3RlckRhdGE6ITAsc3VidHJlZTohMH0pO3RoaXMuZz0hMDt0aGlzLmw9YTt0aGlzLmo9Yjt0aGlzLmJiJiYodGhpcy5NPW5ldyBPeShhLGIpKTt0aGlzLnlhPXRoaXMubD09ImF1dG8iO3RoaXMuViYmKGM9dGhpcy5WLGEmJihjLkM9YSksYiYmKGMuRj1iKSk7dGhpcy5FYT1uZXcgUHkodGhpcy5GLHRoaXMuaik7YiBpbiBLeSYmKGE9dGhpcy5GYixiIGluIEt5JiYoYj1LeVtiXSxjPSJAaW1wb3J0IHVybCgiK0dwKCJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tIikucmVzb2x2ZShHcChNeVtiXSkpLnRvU3RyaW5nKCkrCiIpOyIsYz11cChjKSxhLmcucHVzaChjKSxiPXVwKCdib2R5IHtmb250LWZhbWlseToiJytiKyciLGFyaWFsLHNhbnMtc2VyaWYgIWltcG9ydGFudH0nKSxhLmcucHVzaChiKSkpO3RoaXMuTz1TeSh0aGlzKTsoYj10aGlzLkYgaW5zdGFuY2VvZiBOb2RlP3RoaXMuRjpudWxsKSYmVHkoYix0aGlzLmopfTt2YXIgU3k9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IHJ4KGEsYS5aKTtzeChiLGEuZGgpO3V4KGIsKDAsXy5DKShhLm1qLGEpKTt2eChiLG5ldyBseShhLlRjLFtdLmNvbmNhdChhLkYpLGEuWixhLkEsYS5CLGEuU2QpKTtyZXR1cm4gYn07UXkucHJvdG90eXBlLnJlc3RvcmU9ZnVuY3Rpb24oKXtSeSh0aGlzKTt0aGlzLkNiLnJlc3RvcmUoKTt2YXIgYT10aGlzLkYgaW5zdGFuY2VvZiBOb2RlP3RoaXMuRjpudWxsO2EmJlR5KGEsdGhpcy5XYSgpKX07ClF5LnByb3RvdHlwZS5LPWZ1bmN0aW9uKCl7Xy53LnByb3RvdHlwZS5LLmNhbGwodGhpcyk7dGhpcy5yZXN0b3JlKCk7Xy5OZCh3aW5kb3csImJsdXIiLHRoaXMuZWgsITAsdGhpcyk7Xy5OZCh3aW5kb3csImZvY3VzIix0aGlzLmZoLCEwLHRoaXMpfTt2YXIgVXk9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9ZnQoYS5oLmgpLGY9bmV3IHJ4KGEsYi5GKTtiLkMucHVzaChmKTt0eChmLGIuTSk7b3koYixlKTtzeChmLGR8fGEuWGcpO2I9Y3x8bmV3IEZ5KFtdLFtdLGIsYS5XYSgpLGEucmEoKSxhLlJiLGEuSSxhLmphKTt1eChmLGEuaGssYSk7YS5CJiZ0eChmLGIuZG9uZSxiKTt2eChmLGIpfTtfLmw9UXkucHJvdG90eXBlO18ubC5oaz1mdW5jdGlvbihhLGIsYyl7Yy5kb25lKCk7dGhpcy5JP3RoaXMub2ooYSk6dGhpcy5uaihhKTtjLm8uTSgpfTtfLmwuZmg9ZnVuY3Rpb24oKXt0aGlzLko9ITE7dGhpcy5OPTA7b3godGhpcy5DLHRoaXMubyl9OwpfLmwuZWg9ZnVuY3Rpb24oYSl7YS50YXJnZXQ9PXdpbmRvdyYmKHRoaXMuSj0hMCx0aGlzLk49MCxveCh0aGlzLkMsLjAxKSl9O18ubC5kaz1mdW5jdGlvbihhKXtpZih0aGlzLmcmJnRoaXMuQil7Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDtiKyspaWYoYVtiXS50YXJnZXQmJmFbYl0udGFyZ2V0LmNsYXNzTmFtZSYmdHlwZW9mIGFbYl0udGFyZ2V0LmNsYXNzTmFtZT09PSJzdHJpbmciJiYoYVtiXS50YXJnZXQuY2xhc3NOYW1lLmluZGV4T2YoInRyYW5zbGF0ZSIpPj0wfHxhW2JdLnRhcmdldC5jbGFzc05hbWUuaW5kZXhPZigiZ29vZy0iKT09MCkpcmV0dXJuO3RoaXMuWi5hZGQoKDAsXy5DKSh0aGlzLmdsLHRoaXMpKX19O18ubC5nbD1mdW5jdGlvbigpe3RoaXMuST0hMDt0aGlzLk8uc3RvcCgpO3RoaXMuTz1TeSh0aGlzKTtyZXR1cm4hMX07Xy5sLmRoPWZ1bmN0aW9uKGEsYil7bXkoYix3eChhKSk7VXkodGhpcyxiKTtyZXR1cm4gdGhpcy5sa307Cl8ubC5saz1mdW5jdGlvbihhLGIpe2lmKCF0aGlzLmcpcmV0dXJuIHl4O2lmKCF4eChhKSlyZXR1cm4geng7aWYoIXRoaXMuQilmb3IoYT0wO2E8dGhpcy5HLmxlbmd0aDsrK2Epe3ZhciBjPWIsZD0oMCxfLkMpKHRoaXMuemcsdGhpcyxiLHRoaXMuR1thXSk7Yy5GLmFkZChkKX1yZXR1cm4gdGhpcy5ra307Cl8ubC5XZz1mdW5jdGlvbihhLGIpe2lmKHRoaXMuTiYmIXRoaXMuSil7YT0obmV3IERhdGUpLmdldFRpbWUoKS10aGlzLk47dmFyIGM9dGhpcy5vO2E8OTAwJiZjPi4wMT9jPU1hdGgubWF4KGMqLjksLjAxKTphPjExMDAmJmM8LjUmJihjPU1hdGgubWluKGMqMS41LC41KSk7dGhpcy5vPWM7dGhpcy5xYT90aGlzLkViPS4wMTp0aGlzLkRiPXRoaXMub310aGlzLkk9dGhpcy5nPSEwO3RoaXMuTj0obmV3IERhdGUpLmdldFRpbWUoKTt0aGlzLlZkIT0oYT1kb2N1bWVudC5ib2R5LmlubmVyVGV4dHx8ZG9jdW1lbnQuYm9keS50ZXh0Q29udGVudHx8ZG9jdW1lbnQuYm9keS5pbm5lckhUTUwpPyh0aGlzLlZkPWEsYT0hMCk6YT0hMTthPyh0aGlzLnFhPSExLHRoaXMubz10aGlzLkRiLHRoaXMuSnx8b3godGhpcy5DLHRoaXMubyksbnkoYixbXS5jb25jYXQodGhpcy5GKSx0aGlzLkMpLGE9bmV3IHJ4KHRoaXMsdGhpcy5DKSxzeChhLHRoaXMuZGgpLHV4KGEsKDAsXy5DKSh0aGlzLk5nLHRoaXMpKSwKdngoYSxiKSx0aGlzLk89YSk6KHRoaXMucWE9ITAsdGhpcy5vPXRoaXMuRWIsdGhpcy5KfHxveCh0aGlzLkMsdGhpcy5vKSxhPW5ldyByeCh0aGlzLHRoaXMuQyksc3goYSx0aGlzLldnKSx1eChhLCgwLF8uQykodGhpcy5OZyx0aGlzKSksdngoYSxiKSx0aGlzLk89YSk7cmV0dXJuIHl4fTtfLmwua2s9ZnVuY3Rpb24oYSxiKXtpZighdGhpcy5nKXJldHVybiB5eDt0aGlzLkk9dGhpcy5nPSExO3RoaXMueWE/cHkoYiwhMCk6KHB5KGIpLGIuVihiLmwpKTtpZih0aGlzLlhjKXJldHVybiB0aGlzLldnO2IuY2xlYXIoKTtyZXR1cm4geXh9Owp2YXIgV3k9ZnVuY3Rpb24oYSxiLGMpe2E6e3ZhciBkPVZ5KGEpLGU9YS5WLGY9YS5RZCxnPWEuQ2IuZztiPXd4KGIpO2lmKCFjLkkpe2lmKGMuTi5sZW5ndGg9PTApe2MubD09MCYmYy5aPT0wJiZjLkIoMCwhMCk7Yz0hMTticmVhayBhfWMuST1yeShjLGQsZSxmLGcpfWMucWE9ITA7Q3goYy5JLGMuaixjLmgsYik7Yz0hMH1yZXR1cm4gYz9hLlhnOmEuWmR9LFZ5PWZ1bmN0aW9uKGEpe3JldHVybiBhLmJiPygwLF8uQykoYS5NLm8sYS5NKTpmdW5jdGlvbigpe319O18ubD1ReS5wcm90b3R5cGU7Cl8ubC5YZz1mdW5jdGlvbihhLGIpe2lmKCF0aGlzLmcpcmV0dXJuIHl4O3ZhciBjPWIubztpZihjLmc9PW51bGwpe2lmKCFjLnFhKXJldHVybiBXeSh0aGlzLGEsYi5vKTtpZigheHgoYSkpcmV0dXJuIHp4O2MucWE9ITE7Yy5nPWMuSS5XY3x8bnVsbDt2YXIgZD1jLmc/Yy5nOmMuST1udWxsO2lmKCFkKXJldHVybiBXeSh0aGlzLGEsYi5vKTt0aGlzLkcucHVzaChkKTt2YXIgZT1kLmhhKCk7aWYodGhpcy5oLmhhcyhlLCF0aGlzLkIpfHxiLklbZV0hPW51bGwmJmIuSVtlXSlyZXR1cm4gZT1jLmcuRixjLmwrPWUsYy5qLT1lLGMuZz1udWxsLHRoaXMuQiYmc3koYixkLCExKSxXeSh0aGlzLGEsYi5vKTtlPXRoaXMuaDtkPWQuaGEoKTtlLmdbZF09bnVsbH1iLkxiKCk+MCYmb3godGhpcy5DLC41KTtyZXR1cm4gdHkoYyxiLGZ0KHRoaXMuaC5oKSk/dGhpcy5aZDpXeSh0aGlzLGEsYi5vKX07Cl8ubC5aZD1mdW5jdGlvbihhLGIpe2lmKCF0aGlzLmd8fGIuTGIoKT09MClyZXR1cm4geXg7VXkodGhpcyxiLm8pO3JldHVybiB0aGlzLkI/KGIudHJhY2tWaXNpYmlsaXR5KHd4KGEpKSx0aGlzLm1rKTpiLnRyYW5zbGF0ZShhKT09MD95eDp0aGlzLmJofTtfLmwubWs9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5nP3h4KGEpP2IudHJhbnNsYXRlKGEpPT0wP3l4OnRoaXMuYmg6eng6eXh9OwpfLmwuemc9ZnVuY3Rpb24oYSxiKXtiLmwmJnRoaXMuaC5yZW1vdmUoYi5qKTtpZighdGhpcy5nKXJldHVybiExO2lmKHRoaXMuaC5oYXMoYi5oYSgpLCExKSl7dmFyIGM9dGhpcy5oO2lmKGMuaGFzKGIuaiwhMSkpe3ZhciBkPWIuaixlPWMuZ1tkXTtlfHwoZT1jLmhbZF0sYy5nW2RdPWUpO2IuaD1lO2IuTz0hMH1lbHNlIGMucmVtb3ZlKGIuaiksYi5sPSEwO2d4KGIpfWVsc2UgaWYoYz10aGlzLmgsYi5sKWMucmVtb3ZlKGIuaik7ZWxzZSBpZihiLkcpe3ZhciBmPWIuRy5yZXBsYWNlKC88YSAvZywiPHNwYW4gIikucmVwbGFjZSgvXC9hPi9nLCIvc3Bhbj4iKTtiLk89ITA7ZGVsZXRlIGIuRztiLkc9bnVsbDtiLmg9W107ZD1kb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVIVE1MRG9jdW1lbnQoIiIpO2U9ZC5jcmVhdGVFbGVtZW50KCJkaXYiKTtIcihlLCExKTtmPWYuaW5kZXhPZigiPGk+Iik+PTA/ZjoiPGI+IitmKyI8L2I+IjtmPV8udmIoZik7Zj1fLm5uKGYpO2Uubm9kZVR5cGU9PT0KMSYmVm4oZSk7ZS5pbm5lckhUTUw9Xy5HbChmKTtkLmJvZHkuYXBwZW5kQ2hpbGQoZSk7ZD1bXTtmb3IoZj1lLmZpcnN0Q2hpbGQ7ZjtmPWYubmV4dFNpYmxpbmcpaWYoZi50YWdOYW1lPT0iSSIpdmFyIGc9ZXgoYixDcShmKSxmLmlubmVySFRNTCk7ZWxzZSBpZihmLnRhZ05hbWU9PSJCIil7Z3x8KGc9ZXgoYiwiIiwiIikpO2lmKGIuZy5sZW5ndGg9PTEpa3goZy5YLGQsMCxmKTtlbHNle3ZhciBoPWQ7dmFyIGs9Zjt2YXIgbT1iLmc7Zz1nLlg7Zm9yKHZhciBuPVtdLHA9ay5maXJzdENoaWxkO3A7cD1xKXt2YXIgcT1wLm5leHRTaWJsaW5nO2x4KHApfWZvcihxPWsuZmlyc3RDaGlsZDtxO3E9cS5uZXh0U2libGluZylxLmF0dHJpYnV0ZXMmJnEuYXR0cmlidXRlcy5pPyhrPXBhcnNlSW50KHEuYXR0cmlidXRlcy5pLm5vZGVWYWx1ZSwxMCksIWlzTmFOKGspJiZrPj0wJiZrPG0ubGVuZ3RoJiYobVtrXS5IZSYmbltrXT9uW2tdLmJhKz1xLmZpcnN0Q2hpbGQmJnEuZmlyc3RDaGlsZC5ub2RlVHlwZT09CjM/cS5maXJzdENoaWxkLm5vZGVWYWx1ZTpDcShxKTpuW2tdPWt4KGcsaCxrLHEpKSk6cS5ub2RlVHlwZT09MyYmZy5wdXNoKHtZOi0xLGJhOmpxKHEubm9kZVZhbHVlKX0pO2chPW51bGwmJmcubGVuZ3RoPjAmJmdbMF0uWT09LTEmJihnLmxlbmd0aD09MT9nWzBdLlk9MDooZ1sxXS5iYT1nWzBdLmJhK2dbMV0uYmEsZy5zaGlmdCgpKSl9Zz12b2lkIDB9Zj1iLmg7Zm9yKGg9MDtoPGYubGVuZ3RoLTE7KytoKW09ZltoXSxnPWVxKG0uWFttLlgubGVuZ3RoLTFdLmJhKSxnPWcuY2hhckNvZGVBdChnLmxlbmd0aC0xKSwxMjI4ODw9ZyYmZzw9MTIzNTF8fDY1MjgwPD1nJiZnPD02NTUxOXx8KG0uWFttLlgubGVuZ3RoLTFdLmJhKz0iICIpO18ub2QoZSk7Zm9yKGU9MDtlPGIuZy5sZW5ndGg7KytlKWU8ZC5sZW5ndGgmJmU8Yi5DLmxlbmd0aCYmZFtlXSE9bnVsbCYmKGY9Yi5DW2VdLGg9ZFtlXS5zdGFydCxoIT1udWxsJiYobT1mLnN1YnN0cmluZygwLGYubGVuZ3RoLWYucmVwbGFjZSgvXltcc1x4YTBdKy8sCiIiKS5sZW5ndGgpLG09PSIgIiYmKG09IiIpLG0mJihoLmJhPW0raC5iYS5yZXBsYWNlKC9eW1xzXHhhMF0rLywiIikpKSxoPWRbZV0uZW5kLGghPW51bGwmJihmPWYuc3Vic3RyaW5nKGVxKGYpLmxlbmd0aCksZj09IiAiJiYoZj0iIiksZiYmKGguYmE9ZXEoaC5iYSkrZikpKTtiLmgubGVuZ3RoIT0xfHxiLmhbMF0uS2Z8fChiLmhbMF0uS2Y9Yi5qKTtjLndyaXRlKGIuaixiLmgpO2d4KGIpfWIuTXx8KHRoaXMueWE9ITEpO2M9Yi5sPyEwOnZvaWQgMDthLkorPWIuRjtjIT1udWxsJiYoYS5qYT0hMCk7Yj1NYXRoLm1pbihNYXRoLmZsb29yKGEuSioxMDAvYS5sKSwxMDApO2lmKGEuRyE9Ynx8YylhLkc9YixhLlI/KGEuQihhLkcsITAsYyksYS5WKGEuSikpOmEuQihhLkcsITEsYyk7cmV0dXJuITF9OwpfLmwuYmg9ZnVuY3Rpb24oYSxiKXtpZighdGhpcy5nKXJldHVybiB5eDtpZigheHgoYSkpcmV0dXJuIHp4O2lmKGIuTGIoKT4xKXthPWIuaFswXTt2YXIgYz1iLmc7aWYoYS5qfHxjLmxlbmd0aD09MHx8YS5nPT1udWxsfHxhLmcubGVuZ3RoPT0wKWE9bnVsbDtlbHNle2Zvcih2YXIgZD1bXSxlPVtdLGY9MDtmPGEuZy5sZW5ndGgmJmY8Yy5sZW5ndGg7KytmKXt2YXIgZz1hLmdbZl07ZyYmZ1swXSYmZ1sxXT09MjAwfHwoZS5wdXNoKGNbZl0pLGQucHVzaChhLm9bZl0pKX1hPWUubGVuZ3RoPjA/e2lsOm5ldyBReChkLCEwKSxqbDplfTpudWxsfWE9YT9uZXcgRnkoW2EuaWxdLGEuamwsYi5vLGIubCxiLmosYi5OLGIuRGEsYi5CKTpudWxsO2EhPW51bGwmJlV5KHRoaXMsYi5vLGEsdGhpcy5aZCl9ZWxzZXthPSExO2ZvcihjPTA7YzxiLmgubGVuZ3RoOysrYylkPWIuaFtjXSxkLmp8fGQuaD09MjAwJiZkLmcmJmQuZ1swXT9kPWQubD0hMTooZC5qPSEwLGQ9ZC5sPSEwKSxhPWR8fGE7aWYoYSlyZXR1cm4gdGhpcy5aZH1kPQp0aGlzLldhKCk7YT10aGlzLnJhKCk7aWYoYi5nLmxlbmd0aD4xKWlmKGM9Yi5oWzBdLGU9ZD09ImF1dG8iLGQ9Yi5nLGMuaD09MjAwKWZvcihmPTA7ZjxjLmcubGVuZ3RoJiZmPGQubGVuZ3RoOysrZilpZigoZz1jLmdbZl0pJiZnWzFdPT0yMDApe3ZhciBoPWdbMl0saz1kW2ZdLG09ayxuPWghPW51bGwmJmg9PWE7bS5HPWdbMF07biE9PXZvaWQgMCYmKG0uSj1uKTtrLk09ZSYmaD09bnVsbH1lbHNlIGRbZl0ubD0hMDtlbHNlIGZvcihhPTA7YTxkLmxlbmd0aDsrK2EpZFthXS5sPSEwO2Vsc2V7Yz1uZXcgUHgoZD09ImF1dG8iKTtmb3IoZD0wO2Q8Yi5oLmxlbmd0aDsrK2QpZj1iLmhbZF0sZT1hLGYuaD09MjAwJiZmLmcmJmYuZ1swXT8oZj1mLmdbMF0sYy5nLnB1c2goZlswXSksZj1mWzJdLGMuaD1jLmgmJmYhPW51bGwmJmY9PWUsZiE9bnVsbCYmKGMubD0hMSkpOmMuaj0hMDtiLkchPW51bGwmJihjLmcucHVzaChiLkcpLGIuRz1udWxsKTtpZihhPWIuZ1swXSlkPWMuaGEoKSxlPWMuaCwKYS5HPWQsZSE9PXZvaWQgMCYmKGEuSj1lKSxhLk09Yy5sLGEubD1jLmp9aWYodGhpcy5CKXthPSgwLF8uQykodGhpcy56Zyx0aGlzKTtmb3IoYz0wO2M8Yi5nLmxlbmd0aDtjKyspYShiLm8sYi5nW2NdKTtmb3IoYz0wO2M8Yi5DLmxlbmd0aDtjKyspYShiLm8sYi5DW2NdKTtIeShiKTtiLko9ITA7Yi5NJiZiLkImJihiPWIuQiwtLWIuaD09MCYmQ3koYi5nKSl9cmV0dXJuIHl4fTsKdmFyIFJ5PWZ1bmN0aW9uKGEpe2EuUiYmYS5SLmRpc2Nvbm5lY3QoKTthLmphJiZhLmphLnJlc2V0KCk7YS5nJiYoYS5PLnN0b3AoKSxhLmc9ITEsYS5JPSExKTtpZihhLkcubGVuZ3RoKXtmb3IodmFyIGI9MDtiPGEuRy5sZW5ndGg7KytiKWEuR1tiXS5kaXNwb3NlKCk7YS5HPVtdfWEuTSE9bnVsbCYmKGEuTS5yZXN0b3JlKCksYS5NPW51bGwpO2EuRWEhPW51bGwmJihhLkVhLnJlc3RvcmUoKSxhLkVhPW51bGwpO2EuRmIucmVzdG9yZSgpfSxUeT1mdW5jdGlvbihhLGIpe2EuZ2V0QXR0cmlidXRlKCJ4bWw6bGFuZyIpJiZhLnNldEF0dHJpYnV0ZSgieG1sOmxhbmciLGIpO2EuZ2V0QXR0cmlidXRlKCJsYW5nIikmJmEuc2V0QXR0cmlidXRlKCJsYW5nIixiKX07bnQuYXR0YWNoKDMwNDYsUXkucHJvdG90eXBlLHtDazoxLEVrOjIsRGs6MyxGazo0fSk7dmFyIFh5PUZzKE1zKSxZeT1mdW5jdGlvbihhLGIsYyxkLGUsZixnLGgsayxtLG4pe18udy5jYWxsKHRoaXMpO3RoaXMuTj1ifHxudWxsO3RoaXMuSj0hIWM7dGhpcy5JPWR8fCJ0cmFuc3BhcmVudCI7dGhpcy5GPWZ8fCIiO2I9Z3x8e2ZldGNoU3RhcnQ6MCx4bjowfTthPWIuZmV0Y2hTdGFydHx8MDtiPWIuZmV0Y2hFbmR8fDA7dGhpcy5HPWEmJmI/Yi1hOjA7dGhpcy5SPURhdGUubm93KCktZ3M7dGhpcy5BPSExO3RoaXMuZz1uZXcgQnQoZXx8IiIsdm9pZCAwLGYsbik7dGhpcy5NPW5ldyBweCgxKTt0aGlzLkI9bmV3IGp4O3RoaXMuaD1udWxsO3RoaXMuQz0hMDt0aGlzLm89Xy51LkludGVyc2VjdGlvbk9ic2VydmVyIT1udWxsO3RoaXMuTz1ofHxudWxsO2U9bmV3IFRzO2Y9bmV3IFZzKHRoaXMuZy5pbml0aWFsaXplLmJpbmQodGhpcy5nLGUucmVnaXN0ZXIoKSkpO3RoaXMueWQ9V3MoZixlLmRlbGF5KCgwLF8uQykodGhpcy55ZCx0aGlzKSkpO3RoaXMuVWQ9V3MoZixlLmRlbGF5KCgwLF8uQykodGhpcy5VZCwKdGhpcykpKTt0aGlzLkdlPVdzKGYsZS5kZWxheSgoMCxfLkMpKHRoaXMuR2UsdGhpcykpKTt0aGlzLnJlc3RvcmU9V3MoZixlLmRlbGF5KCgwLF8uQykodGhpcy5yZXN0b3JlLHRoaXMpKSk7Zi5maW5pc2goKTtlLmZpbmlzaCgpO3BlcmZvcm1hbmNlJiZwZXJmb3JtYW5jZS5tYXJrJiZwZXJmb3JtYW5jZS5tYXJrKEFzLHZvaWQgMCk7ZT1OcyhYeSwxKTtmPW5ldyBMcDtmPV8uVWwoZiwxLHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4pO2E6e2lmKHBlcmZvcm1hbmNlJiYoaD1wZXJmb3JtYW5jZS5nZXRFbnRyaWVzQnlUeXBlKCJuYXZpZ2F0aW9uIiksaC5sZW5ndGg9PTEpKXtoPWhbMF07YnJlYWsgYX1oPW51bGx9aCYmKG49bmV3IEdvLG49Xy5VbChuLDEsIiIpLGE9SG8oaC5zdGFydFRpbWUpLG49Xy5NKG4sMixhKSxhPUlvKGguZHVyYXRpb24pLG49Xy5NKG4sMyxhKSxhPW5ldyBLcCxhPV8uVWwoYSwxLGguaW5pdGlhdG9yVHlwZSksYT1fLlVsKGEsMixoLm5leHRIb3BQcm90b2NvbCksCmI9SG8oaC53b3JrZXJTdGFydHx8MCksYT1fLk0oYSwzLGIpLGI9SG8oaC5yZWRpcmVjdFN0YXJ0KSxhPV8uTShhLDQsYiksYj1IbyhoLnJlZGlyZWN0U3RhcnQpLGE9Xy5NKGEsNCxiKSxiPUhvKGgucmVkaXJlY3RFbmQpLGE9Xy5NKGEsNSxiKSxiPUhvKGguZmV0Y2hTdGFydCksYT1fLk0oYSw2LGIpLGI9SG8oaC5kb21haW5Mb29rdXBTdGFydCksYT1fLk0oYSw3LGIpLGI9SG8oaC5kb21haW5Mb29rdXBFbmQpLGE9Xy5NKGEsOCxiKSxiPUhvKGguY29ubmVjdFN0YXJ0KSxhPV8uTShhLDksYiksYj1IbyhoLmNvbm5lY3RFbmQpLGE9Xy5NKGEsMTAsYiksYj1IbyhoLnNlY3VyZUNvbm5lY3Rpb25TdGFydCksYT1fLk0oYSwxMSxiKSxiPUhvKGgucmVzcG9uc2VTdGFydCksYT1fLk0oYSwxMyxiKSxiPUhvKGgucmVzcG9uc2VFbmQpLGE9Xy5NKGEsMTQsYiksYT1fLkVqKGEsMTUsXy5NbChoLnRyYW5zZmVyU2l6ZSkpLGE9Xy5FaihhLDE2LF8uTWwoaC5lbmNvZGVkQm9keVNpemUpKSxhPQpfLkVqKGEsMTcsXy5NbChoLmRlY29kZWRCb2R5U2l6ZSkpLG49S28obiw2LGEpLF8uTShmLDMsbiksbj1UbyhBcykpJiYoaD1VbyhEcyx7c3RhcnQ6aC5yZXNwb25zZUVuZCxlbmQ6bi5zdGFydFRpbWV8fHBlcmZvcm1hbmNlLm5vdygpfSkpJiYocGVyZm9ybWFuY2UmJnBlcmZvcm1hbmNlLmNsZWFyTWVhc3VyZXMmJnBlcmZvcm1hbmNlLmNsZWFyTWVhc3VyZXMoRHMpLGg9TG8oaCksXy5NKGYsNCxoKSxoPVBwKGUpLF8uTShoLDQsZikpO1BzKGUsMSl9O18uRShZeSxfLncpO250LmF0dGFjaCgxNDA5NyxZeS5wcm90b3R5cGUse0RmOmZ1bmN0aW9uKCl7V28odGhpcy5nLm1iKCk/InRlX2FmYXMiOiJ0ZV9hZmF1Iil9fSk7Xy5sPVl5LnByb3RvdHlwZTtfLmwua2w9ZnVuY3Rpb24oYSl7dGhpcy5vPWF9O18ubC5sYj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmcubWIoKX07Cl8ubC55ZD1mdW5jdGlvbihhLGIpe3RoaXMuZy5sYigpP3RoaXMuZy5sLnNlbmQoe2Rpc3BsYXlfbGFuZ3VhZ2U6YixrZXk6IkFJemFTeUJXRGowUUp2Vkl4OFhPaFJlZ1hYNV9TclJXeGhUNUhzNCJ9LGEpLnRoZW4oZnVuY3Rpb24oYyl7cmV0dXJuIGEoYyl9KToodGhpcy5EZigpLGEobnVsbCkpfTsKXy5sLlVkPWZ1bmN0aW9uKGEpe3ZhciBiPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5sYW5nO2lmKGIpYShiKTtlbHNlIGlmKHRoaXMuZy5sYigpKXtiPW5ldyBMdChkb2N1bWVudC5ib2R5LCExLCExLDEsMSk7Zm9yKHZhciBjPVtdLGQ9MCxlPXRoaXMuZy5oLkFoO2MubGVuZ3RoK2Q8ZTspe3ZhciBmPWIubmV4dCgpO2lmKGYuZG9uZSlicmVhaztmPWYudmFsdWU7Yi5nPT0xJiZMeChmKT9NdChiKTpmLm5vZGVUeXBlPT0zJiYoZj1fLm9jKGRxKGYubm9kZVZhbHVlKSkpJiYoYy5wdXNoKGYpLGQrPWYubGVuZ3RoKX1DdCh0aGlzLmcsYSxjLmpvaW4oIiAiKSkudGhlbihmdW5jdGlvbihnKXthKGcpfSxmdW5jdGlvbihnKXtyZXR1cm4gYShudWxsLGcpfSl9ZWxzZSB0aGlzLkRmKCksYShudWxsLCEwKX07Cl8ubC5HZT1mdW5jdGlvbihhLGIsYyxkLGUpe1h5LnFkPWE7WHkucmQ9Yjt2YXIgZj1OcyhYeSwyKTtPcyhYeSxmKTt2YXIgZz1UbyhBcyk7aWYoZyl7dmFyIGg9VG8oQnMpO2lmKGgpe3ZhciBrPVVvKEVzLHtzdGFydDpnLnN0YXJ0VGltZSxlbmQ6aC5zdGFydFRpbWV8fHBlcmZvcm1hbmNlLm5vdygpfSk7ayYmKGc9UHAoZiksaD1uZXcgTnAsaz1MbyhrKSxoPV8uTShoLDEsayksXy5NKGcsNSxoKSxwZXJmb3JtYW5jZSYmcGVyZm9ybWFuY2UuY2xlYXJNZWFzdXJlcyYmcGVyZm9ybWFuY2UuY2xlYXJNZWFzdXJlcyhFcykpfX1QcyhmLDIpO2Y9e2RldGFpbDp7c291cmNlTGFuZ3VhZ2U6YSx0YXJnZXRMYW5ndWFnZTpifX07cGVyZm9ybWFuY2UmJnBlcmZvcm1hbmNlLm1hcmsmJnBlcmZvcm1hbmNlLm1hcmsoQnMsZik7Zj1EYXRlLm5vdygpO210KCk7aWYoIWF8fGd0KGEsYikpYT0iYXV0byI7aWYoZXx8YSE9dGhpcy5sfHxiIT10aGlzLmopdGhpcy5CPW5ldyBqeDt0aGlzLmw9YTt0aGlzLmo9CmI7dGhpcy5nLmxiKCk/KGQ9ZHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LHRoaXMuaCYmdGhpcy5oLmRpc3Bvc2UoKSx0aGlzLmg9bmV3IFF5KGQsdGhpcy5nLHRoaXMuTix0aGlzLkosdGhpcy5JLCEwLHRoaXMuTSx0aGlzLkIsdGhpcy5vLHRoaXMuTyksdGhpcy5oLlJiPXRoaXMuQSx0aGlzLkM9ITAsdGhpcy5oLnRyYW5zbGF0ZShhLGIsYyxlLCgwLF8uQykodGhpcy5Kayx0aGlzLGYsYSxiKSkpOih0aGlzLkRmKCksYygwLCExLCEwKSl9O18ubC54aT1mdW5jdGlvbigpe3JldHVybiEhdGhpcy5oJiZ0aGlzLmguZ307Xy5sLmFpPWZ1bmN0aW9uKGEpe3RoaXMuQT1hfTtfLmwucmVzdG9yZT1mdW5jdGlvbigpe3ZhciBhPU5zKFh5LDMpO09zKFh5LGEpO1BzKGEsMyk7cGVyZm9ybWFuY2UmJnBlcmZvcm1hbmNlLm1hcmsmJnBlcmZvcm1hbmNlLm1hcmsoQ3Msdm9pZCAwKTttdCgpO3RoaXMuZy5sYigpJiZ0aGlzLmgmJnRoaXMuaC5yZXN0b3JlKCl9OwpfLmwuSz1mdW5jdGlvbigpe2x0KCk7WXkuUC5LLmNhbGwodGhpcyk7dGhpcy5nLmRpc3Bvc2UoKTt0aGlzLmg9dGhpcy5nPW51bGw7dGhpcy5CPW5ldyBqeH07Xy5sLkprPWZ1bmN0aW9uKGEsYixjLGQpe3RoaXMuQyYmKHRoaXMuQz0hMSxiPXtzbDpiLHRsOmMsdGV4dGxlbjpkfSx0aGlzLkEmJihiLmN0dD0iMSIpLHRoaXMuRiE9IiImJihiLnNwPXRoaXMuRiksYi50dHQ9RGF0ZS5ub3coKS1hLGIudHRsPXRoaXMuUix0aGlzLkcmJihiLnR0Zj10aGlzLkcpLHRoaXMubyYmKGIuc3I9MSksV28oInRlX3RpbWUiLGIpKX07dmFyIFp5PWZ1bmN0aW9uKGEpe08uY2FsbCh0aGlzLGEpO3RoaXMuQj1uZXcgXy5IZih0aGlzKX07Xy55KFp5LE8pO1p5LnByb3RvdHlwZS5TPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5oLmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpO2EuY2xhc3NOYW1lPSJnb29nLXRlLWNvbWJvIjthLnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsUS5uZyk7dGhpcy5BYShhKX07WnkucHJvdG90eXBlLnZhPWZ1bmN0aW9uKCl7Ty5wcm90b3R5cGUudmEuY2FsbCh0aGlzKTt0aGlzLk1nKCl9O1p5LnByb3RvdHlwZS5NZz1mdW5jdGlvbigpe18uRih0aGlzLkQoKSwiY2hhbmdlIixacyh0aGlzLCJjaGFuZ2UiKSk7dGhpcy5kaXNwYXRjaEV2ZW50KCJsb2FkIil9O1p5LnByb3RvdHlwZS5zYT1mdW5jdGlvbigpe08ucHJvdG90eXBlLnNhLmNhbGwodGhpcyk7dGhpcy5CLmRpc3Bvc2UoKTt0aGlzLkI9bnVsbH07CnZhciAkeT1mdW5jdGlvbihhLGIpe2EuRCgpLnBhcmVudE5vZGUhPWImJihhLkQoKS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGEuRCgpKSxiLmFwcGVuZENoaWxkKGEuRCgpKSl9O18ubD1aeS5wcm90b3R5cGU7Xy5sLm9kPWZ1bmN0aW9uKGEpe3RoaXMuaC5OZih0aGlzLkQoKSk7Zm9yKHZhciBiIGluIGEpaWYoYVtiXSE9PU9iamVjdC5wcm90b3R5cGVbYl0pe3ZhciBjPXRoaXMuaC5TKCJPUFRJT04iLHt2YWx1ZTpifSk7dGhpcy5oLkpjKGMsYVtiXSk7dGhpcy5EKCkuYXBwZW5kQ2hpbGQoYyl9dGhpcy5EKCkuc2VsZWN0ZWRJbmRleD0wfTtfLmwud2E9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5EKCkudmFsdWV9O18ubC5LYT1mdW5jdGlvbihhKXtpZih0aGlzLkQoKS52YWx1ZSE9YSlmb3IodmFyIGI9MCxjO2M9dGhpcy5EKCkub3B0aW9ucy5pdGVtKGIpOysrYilpZihjLnZhbHVlPT1hKXt0aGlzLkQoKS5zZWxlY3RlZEluZGV4PWI7YnJlYWt9fTsKXy5sLnpkPWZ1bmN0aW9uKGEpe2lmKF8uVmIoYSk9PSJ1bmRlZmluZWQiKXJldHVybiB0aGlzLkQoKS5vcHRpb25zLml0ZW0odGhpcy5EKCkuc2VsZWN0ZWRJbmRleCkudGV4dDtmb3IodmFyIGI9MCxjO2M9dGhpcy5EKCkub3B0aW9ucy5pdGVtKGIpOysrYilpZihjLnZhbHVlPT1hKXJldHVybiBjLnRleHR9O18ubC5uYj1mdW5jdGlvbihhKXt0aGlzLkQoKS5kaXNhYmxlZD0hYX07dmFyIGF6PWZ1bmN0aW9uKGEpe1p5LmNhbGwodGhpcyxhKX07Xy55KGF6LFp5KTthei5wcm90b3R5cGUuTmI9ZnVuY3Rpb24oYSl7dGhpcy5vZC5jYWxsKHRoaXMsYSl9O3ZhciBiej1mdW5jdGlvbihhLGIpe1p5LmNhbGwodGhpcyxiKTt0aGlzLmc9YSYmU24oYSl8fHt9O3RoaXMuZy5TZj10aGlzLmcuU2Z8fDExO3RoaXMuZy5FZT10aGlzLmcuRWUhPTA7dGhpcy5nLkJiPXFzfTtfLnkoYnosWnkpO18ubD1iei5wcm90b3R5cGU7Xy5sLk5kPWZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoImFiIik7fTsKXy5sLlM9ZnVuY3Rpb24oKXt0aGlzLk5kKCk7dGhpcy5HPXRoaXMuRCgpO3RoaXMuQT1zcSgiSUZSQU1FIix7ZnJhbWVCb3JkZXI6MCwiY2xhc3MiOiJWSXBnSmQtWlZpOW9kLXhsMDdPYi1PRVZtY2Qgc2tpcHRyYW5zbGF0ZSIsdGl0bGU6US5uZ30pO3RoaXMuQS5zdHlsZS52aXNpYmlsaXR5PSJ2aXNpYmxlIjtIcih0aGlzLkEsITEpO2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5BKX07Cl8ubC5NZz1mdW5jdGlvbigpe3ZhciBhPV8ucWYudGVzdChjcyk/InJ0bCI6Imx0ciIsYj1fLndiKHRoaXMuZy5CYiksYz1SKHRoaXMsIm1lbnVCb2R5Iik7dGhpcy5CLkwodGhpcy5BLCJsb2FkIix0aGlzLnlpKTtjdCh0aGlzLkEsKDAsXy5DKShmdW5jdGlvbigpe3ZhciBkPXZxKHRoaXMuQSksZT17fSxmPWUmJmUuSWc7ZT1ScChRcChfLnpuKCksIjxoZWFkPiIpLHh5KGUpKTtmPSc8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEY4Ij48bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSInK1AoVHEoYikpKyciJysoZj8nIG5vbmNlPSInK1AodXIoZikpKyciJzoiIikrJz48L2hlYWQ+PGJvZHkgc2Nyb2xsPSJubyIgc3R5bGU9Im1hcmdpbjowcHg7b3ZlcmZsb3c6aGlkZGVuIiBkaXI9IicrUChhKSsnIiBtYXJnaW5IZWlnaHQ9MCBtYXJnaW5XaWR0aD0wIGxlZnRNYXJnaW49MCB0b3BNYXJnaW49MCBib3JkZXI9MD48ZGl2IGlkPSInKwpQKGMpKyciIGNsYXNzPSc7aWYoU3EoIlZJcGdKZC1aVmk5b2QteGwwN09iIixfLnJuKSl7dmFyIGc9aHIoIlZJcGdKZC1aVmk5b2QteGwwN09iIi5oYSgpKTtnPVN0cmluZyhnKS5yZXBsYWNlKGpyLFlxKX1lbHNlIGc9IlZJcGdKZC1aVmk5b2QteGwwN09iIi5yZXBsYWNlKGlyLFlxKTtlPVFwKGUsZitnKyI+PC9kaXY+PC9ib2R5PiIpLktjKCk7ZC53cml0ZShfLkdsKGUpKTtkLmNsb3NlKCl9LHRoaXMpKX07Xy5sLnlpPWZ1bmN0aW9uKCl7dGhpcy5qPW5ldyBfLmRkKHZxKHRoaXMuQSkpO3RoaXMuUj10aGlzLmouRChSKHRoaXMsIm1lbnVCb2R5IikpO3RoaXMuQi5MKHRoaXMuRywiY2xpY2siLHRoaXMudGYpO18uRmM/dGhpcy5CLkwodGhpcy5BLCJibHVyIix0aGlzLllkKTp0aGlzLkIuTCh3cSh0aGlzLkEpLCJibHVyIix0aGlzLllkKTt0aGlzLmRpc3BhdGNoRXZlbnQoImxvYWQiKX07Cl8ubC5zYT1mdW5jdGlvbigpe1p5LnByb3RvdHlwZS5zYS5jYWxsKHRoaXMpO18ub2QodGhpcy5BKTt0aGlzLkc9dGhpcy5aPXRoaXMuQz10aGlzLlI9dGhpcy5qPXRoaXMuQT1udWxsfTtfLmwuWWc9ZnVuY3Rpb24oYSl7dGhpcy5sIT1hLmN1cnJlbnRUYXJnZXQudmFsdWUmJih0aGlzLkthKGEuY3VycmVudFRhcmdldC52YWx1ZSksdGhpcy5kaXNwYXRjaEV2ZW50KCJjaGFuZ2UiKSk7dGhpcy5ZZCgpfTtfLmwudGY9ZnVuY3Rpb24oKXtjeih0aGlzKTt3cSh0aGlzLkEpLmZvY3VzKCk7dGhpcy5xYT0hMH07Xy5sLllkPWZ1bmN0aW9uKCl7dGhpcy5xYSYmKHRoaXMucWE9ITEsY3oodGhpcywhMSksXy5oYihfLmVkKHRoaXMuRykpLmZvY3VzKCkpfTtfLmwuT2Y9ZnVuY3Rpb24oKXt9O18ubC5QZj1mdW5jdGlvbigpe307CnZhciBjej1mdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBiPT0idW5kZWZpbmVkInx8Yil7YS5QZigpO2I9RXIoYS5HLHdpbmRvdyk7dmFyIGM9Yi55K2EuRy5vZmZzZXRIZWlnaHQsZD1iLnktYS5KLmhlaWdodCxlPWIueCxmPWIueCthLkcub2Zmc2V0V2lkdGgtYS5KLndpZHRoO2lmKF8uRmMmJiFucSgpKXt2YXIgZz1kb2N1bWVudC5ib2R5O2MtPWcub2Zmc2V0VG9wO2QtPWcub2Zmc2V0VG9wO2UtPWcub2Zmc2V0TGVmdDtmLT1nLm9mZnNldExlZnR9ZWxzZSBnPUVwKGRvY3VtZW50KSxjLT1nLnksZC09Zy55LGUtPWcueCxmLT1nLng7Zz1fLmlkKHdpbmRvdyk7Yi55PWIueTw9Zy5oZWlnaHQtYS5KLmhlaWdodD9jOmQ7Yi55PmcuaGVpZ2h0LWEuSi5oZWlnaHQmJihiLnk9Zy5oZWlnaHQtYS5KLmhlaWdodCk7Yi55PDAmJihiLnk9MCk7Xy5xZi50ZXN0KGNzKT9iLng9Zj49MD9mOmU6Yi54PWU8PWcud2lkdGgtYS5KLndpZHRoP2U6ZjtiLng+Zy53aWR0aC1hLkoud2lkdGgmJihiLng9Zy53aWR0aC0KYS5KLndpZHRoKTtiLng8MCYmKGIueD0wKTt6cihhLkEsYik7SHIoYS5BLCEwKTtkeihhKX1lbHNlIGEuT2YoKSxIcihhLkEsITEpfTtfLmw9YnoucHJvdG90eXBlO18ubC53YT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmx9OwpfLmwub2Q9ZnVuY3Rpb24oYSl7dGhpcy5qLk5mKHRoaXMuUik7SHIodGhpcy5BLCEwKTt0aGlzLmJiPWE7dGhpcy5DPVtdO2Zvcih2YXIgYiBpbiBhKWlmKGFbYl0hPT1PYmplY3QucHJvdG90eXBlW2JdKWlmKGFbYl09PSItLS0iKXt2YXIgYz17bGluazp0aGlzLmouUygiRElWIix7Y2xhc3NOYW1lOiJWSXBnSmQtWlZpOW9kLXZIMUdtZi1oZ0RVd2UiLHZhbHVlOmJ9KSx1azohMH07dGhpcy5DLnB1c2goYyl9ZWxzZXtjPXtsaW5rOnRoaXMuai5TKCJBIix7Y2xhc3NOYW1lOiJWSXBnSmQtWlZpOW9kLXZIMUdtZi1pYm5DNmItZ2s2U01kIixocmVmOiIjIix2YWx1ZTpifSl9O3RoaXMuQy5wdXNoKGMpO3ZhciBkPXRoaXMuai5TKCJESVYiLHtzdHlsZToid2hpdGUtc3BhY2U6bm93cmFwIn0pO3RoaXMuai5hcHBlbmRDaGlsZChjLmxpbmssZCk7dGhpcy5nLkVlJiZ0aGlzLmouYXBwZW5kQ2hpbGQoZCx0aGlzLmouUygiU1BBTiIse2NsYXNzTmFtZToiaW5kaWNhdG9yIn0sIlx1MjAzYSIpKTsKdGhpcy5qLmFwcGVuZENoaWxkKGQsdGhpcy5qLlMoIlNQQU4iLHtjbGFzc05hbWU6InRleHQifSxhW2JdKSk7dGhpcy5CLkwoYy5saW5rLCJjbGljayIsdGhpcy5ZZyl9YT10aGlzLkMubGVuZ3RoLTE7YT1NYXRoLnJvdW5kKChhLWEldGhpcy5nLlNmKS90aGlzLmcuU2YpKzE7dGhpcy5aPXRoaXMuai5TKCJUQUJMRSIse2NlbGxzcGFjaW5nOjAsY2VsbHBhZGRpbmc6MCxib3JkZXI6MH0pO2M9dGhpcy5qLlMoIlRCT0RZIik7Yj10aGlzLmouUygiVFIiLHt2YWxpZ246InRvcCJ9KTt0aGlzLlIuY2xhc3NOYW1lPSJWSXBnSmQtWlZpOW9kLXZIMUdtZiI7dGhpcy5qLmFwcGVuZENoaWxkKHRoaXMuUix0aGlzLlopO3RoaXMuai5hcHBlbmRDaGlsZCh0aGlzLlosYyk7dGhpcy5qLmFwcGVuZENoaWxkKGMsYik7Zm9yKGQ9Yz0wO2M8YTsrK2Mpe3ZhciBlPXRoaXMuai5TKCJURCIpO3RoaXMuai5hcHBlbmRDaGlsZChiLGUpO2Zvcih2YXIgZj0wO2Y8MTEmJmQ8dGhpcy5DLmxlbmd0aDsrK2YsCisrZCl0aGlzLmouYXBwZW5kQ2hpbGQoZSx0aGlzLkNbZF0ubGluayk7YyE9YS0xJiYoZT10aGlzLmouUygiVEQiLHsiY2xhc3MiOiJWSXBnSmQtWlZpOW9kLXZIMUdtZi1LcmhQTmIifSwiXHUwMGEwIiksdGhpcy5qLmFwcGVuZENoaWxkKGIsZSkpfXRoaXMubD1udWxsO3RoaXMuS2EodGhpcy5DWzBdLmxpbmsudmFsdWUpO2R6KHRoaXMpO0hyKHRoaXMuQSwhMSl9O18ubC56ZD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5iYltfLlZiKGEpPT0idW5kZWZpbmVkIj90aGlzLmw6YV19O18ubC5RZj1mdW5jdGlvbigpe307Xy5sLkthPWZ1bmN0aW9uKGEpe2lmKHRoaXMubCE9YSl7dGhpcy56ZChhKSYmKHRoaXMubD1hLHRoaXMuUWYoKSk7Zm9yKHZhciBiPTA7Yjx0aGlzLkMubGVuZ3RoOysrYil7dmFyIGM9dGhpcy5DW2JdO2MudWt8fChjLmxpbmsuY2xhc3NOYW1lPWMubGluay52YWx1ZT09YSYmdGhpcy5nLkVlPyJWSXBnSmQtWlZpOW9kLXZIMUdtZi1pYm5DNmItZ2s2U01kIjoiVklwZ0pkLVpWaTlvZC12SDFHbWYtaWJuQzZiIil9fX07CnZhciBkej1mdW5jdGlvbihhKXtNcihhLlIsS3IoYS5aKSk7TXIoYS5BLEtyKGEuUikpO2EuSj1LcihhLkEpfSxlej1mdW5jdGlvbihhLGIpe2J6LmNhbGwodGhpcyxhLGIpfTtfLnkoZXosYnopO18ubD1lei5wcm90b3R5cGU7Xy5sLk5kPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5oLlMoImEiLHsiYXJpYS1oYXNwb3B1cCI6InRydWUifSk7YS5jbGFzc05hbWU9IlZJcGdKZC1aVmk5b2QteGwwN09iLWxUQnhlZCI7Xy5vbihhLCIjIik7dGhpcy5OPXRoaXMuaC5TKCJTUEFOIik7YS5hcHBlbmRDaGlsZCh0aGlzLk4pO3RoaXMuVD10aGlzLmguUygiSU1HIix7c3JjOiJodHRwczovL3d3dy5nb29nbGUuY29tL2ltYWdlcy9jbGVhcmRvdC5naWYiLGFsdDoiIixzdHlsZToiYmFja2dyb3VuZC1pbWFnZTp1cmwoIitucysiKTtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNHB4IDBweDtib3JkZXI6bm9uZSIsd2lkdGg6MTQsaGVpZ2h0OjE0fSk7YS5hcHBlbmRDaGlsZCh0aGlzLlQpO3RoaXMuQWEoYSl9OwpfLmwuT2Y9ZnVuY3Rpb24oKXtfLkVuKHRoaXMuVCwiYmFja2dyb3VuZFBvc2l0aW9uIiwiLTE0cHggMHB4Iil9O18ubC5QZj1mdW5jdGlvbigpe18uRW4odGhpcy5ULCJiYWNrZ3JvdW5kUG9zaXRpb24iLCIwcHggMHB4Iil9O18ubC5zYT1mdW5jdGlvbigpe2J6LnByb3RvdHlwZS5zYS5jYWxsKHRoaXMpO3RoaXMuVD10aGlzLk49bnVsbH07Xy5sLlFmPWZ1bmN0aW9uKCl7dGhpcy5oLkpjKHRoaXMuTix0aGlzLnpkKHRoaXMubCl8fCIiKX07Xy5sLk5iPWZ1bmN0aW9uKGEpe3RoaXMub2QuY2FsbCh0aGlzLGEpfTt2YXIgZno9ZnVuY3Rpb24oYSxiKXtiei5jYWxsKHRoaXMsYSxiKX07Xy55KGZ6LGJ6KTtfLmw9ZnoucHJvdG90eXBlOwpfLmwuTmQ9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmguUygiYSIseyJhcmlhLWhhc3BvcHVwIjoidHJ1ZSJ9KTthLmNsYXNzTmFtZT0iVklwZ0pkLVpWaTlvZC14bDA3T2ItbFRCeGVkIjtfLm9uKGEsIiMiKTt0aGlzLk49dGhpcy5oLlMoIlNQQU4iKTthLmFwcGVuZENoaWxkKHRoaXMuTik7YS5hcHBlbmRDaGlsZCh0aGlzLmguUygiSU1HIix7c3JjOiJodHRwczovL3d3dy5nb29nbGUuY29tL2ltYWdlcy9jbGVhcmRvdC5naWYiLGFsdDoiIix3aWR0aDoxLGhlaWdodDoxfSkpO2EuYXBwZW5kQ2hpbGQodGhpcy5oLlMoIlNQQU4iLHtzdHlsZToiYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICNiYmIifSwiXHUyMDBiIikpO2EuYXBwZW5kQ2hpbGQodGhpcy5oLlMoIklNRyIse3NyYzoiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9pbWFnZXMvY2xlYXJkb3QuZ2lmIixhbHQ6IiIsd2lkdGg6MSxoZWlnaHQ6MX0pKTt0aGlzLlQ9dGhpcy5oLlMoInNwYW4iLHtzdHlsZToiY29sb3I6Izc2NzY3NiIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9LAoiXHUyNWJjIik7YS5hcHBlbmRDaGlsZCh0aGlzLlQpO3RoaXMuQWEoYSl9O18ubC5PZj1mdW5jdGlvbigpe18uRW4odGhpcy5ULCJjb2xvciIsIiM5YjliOWIiKX07Xy5sLlBmPWZ1bmN0aW9uKCl7Xy5Fbih0aGlzLlQsImNvbG9yIiwiI2Q1ZDVkNSIpfTtfLmwuc2E9ZnVuY3Rpb24oKXtiei5wcm90b3R5cGUuc2EuY2FsbCh0aGlzKTt0aGlzLlQ9dGhpcy5OPW51bGx9O18ubC5RZj1mdW5jdGlvbigpe3RoaXMuaC5KYyh0aGlzLk4sdGhpcy56ZCh0aGlzLmwpfHwiIil9O18ubC5OYj1mdW5jdGlvbihhKXt0aGlzLm9kLmNhbGwodGhpcyxhKX07dmFyIGd6PWZ1bmN0aW9uKGEsYil7YnouY2FsbCh0aGlzLGEsYik7dGhpcy5nLkVlPSExfTtfLnkoZ3osYnopOwpnei5wcm90b3R5cGUuTmQ9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmguY3JlYXRlRWxlbWVudCgiZGl2Iik7YS5jbGFzc05hbWU9IlZJcGdKZC1aVmk5b2QtTGdic1NlIjt2YXIgYj10aGlzLmguUygiRElWIix7c3R5bGU6ImJhY2tncm91bmQ6IHVybCgiK21zKyIpIHJlcGVhdC14IDAgLTM5cHgifSk7YS5hcHBlbmRDaGlsZChiKTt0aGlzLk49dGhpcy5oLmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIpO2IuYXBwZW5kQ2hpbGQodGhpcy5OKTt0aGlzLkFhKGEpfTtnei5wcm90b3R5cGUuWmg9ZnVuY3Rpb24oYSl7Xy5uZCh0aGlzLk4pO3RoaXMuTi5hcHBlbmRDaGlsZCh0aGlzLmguZy5jcmVhdGVUZXh0Tm9kZShTdHJpbmcoYSsiXHUwMGEwXHUyNWJjIikpKX07Z3oucHJvdG90eXBlLnNhPWZ1bmN0aW9uKCl7YnoucHJvdG90eXBlLnNhLmNhbGwodGhpcyk7dGhpcy5OPW51bGx9Owpnei5wcm90b3R5cGUuWWc9ZnVuY3Rpb24oYSl7dGhpcy5LYShhLmN1cnJlbnRUYXJnZXQudmFsdWUpO3RoaXMuZGlzcGF0Y2hFdmVudCgiY2hhbmdlIik7dGhpcy5ZZCgpfTt2YXIgaHo9ZnVuY3Rpb24oYSxiKXtPLmNhbGwodGhpcyxiKTt0aGlzLmc9YSYmU24oYSl8fHt9O3RoaXMuaj1uZXcgXy5IZih0aGlzKX07Xy5FKGh6LE8pO3ZhciBpej17Y246MCxpbToxLEttOjJ9O18ubD1oei5wcm90b3R5cGU7Cl8ubC5TPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5oLmNyZWF0ZUVsZW1lbnQoImRpdiIpO011KGEsInNraXB0cmFuc2xhdGUiKTtNdShhLCJnb29nLXRlLWdhZGdldCIpO2EuZGlyPV8ucWYudGVzdChjcyk/InJ0bCI6Imx0ciI7SHIoYSwhMSk7aWYodGhpcy5nLmxheW91dD09MilqbyhhLHp5KHtpZDpSKHRoaXMsInRhcmdldExhbmd1YWdlIiksUWg6IiIsUGg6IiJ9KSk7ZWxzZXt2YXIgYj1uZXcgb3E7aWYoTnEoXy5GYyYmIW5xKCkpKXZhciBjPSI8c3BhbiBzdHlsZT1cImRpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtoZWlnaHQ6MTVweDsgd2lkdGg6NTFweDtmaWx0ZXI6cHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhSW1hZ2VMb2FkZXIoIHNyYz0nIisiaHR0cHM6Ly93d3cuZ3N0YXRpYy5jb20vaW1hZ2VzL2JyYW5kaW5nL2dvb2dsZWxvZ28vMXgvZ29vZ2xlbG9nb19jb2xvcl80MngxNmRwLnBuZyIucmVwbGFjZShtcixicikrIicsc2l6aW5nTWV0aG9kPSdzY2FsZScpO1wiPjwvc3Bhbj4iOwplbHNlIGM9UnQuT2UsYz0nPGltZyBzcmM9IicrUChzcigiaHR0cHM6Ly93d3cuZ3N0YXRpYy5jb20vaW1hZ2VzL2JyYW5kaW5nL2dvb2dsZWxvZ28vMXgvZ29vZ2xlbG9nb19jb2xvcl80MngxNmRwLnBuZyIpKSsnIiB3aWR0aD0iMzdweCIgaGVpZ2h0PSIxNHB4IiBzdHlsZT0icGFkZGluZy1yaWdodDogM3B4IiBhbHQ9Ikdvb2dsZSAnK1AoYykrJyI+Jzt2YXIgZD1SdC5PZTt2YXIgZT0oMCxfLnVuKSgnPHNwYW4gc3R5bGU9IndoaXRlLXNwYWNlOm5vd3JhcCI+PGEgY2xhc3M9IicrUCgiVklwZ0pkLVpWaTlvZC1sNGVIWC1oU1JHUGQiKSsnIiBocmVmPSInK1AocXIoImh0dHBzOi8vdHJhbnNsYXRlLmdvb2dsZS5jb20iKSkrJyIgdGFyZ2V0PSJfYmxhbmsiPicrYytmcihkKSsiPC9hPjwvc3Bhbj4iKTtjPWIuZm9ybWF0O2Q9UTt2YXIgZj1kLkhpO2U9ZS5LYygpO2U9cHEoYix7dHlwZToiaHRtbCIsbmg6Xy5HbChlKS50b1N0cmluZygpfSk7Yj1jLmNhbGwoYixmLmNhbGwoZCxlKSk7CmpvKGEsenkoe2lkOlIodGhpcywidGFyZ2V0TGFuZ3VhZ2UiKSxRaDoiIixQaDp0aGlzLmcubGF5b3V0PT0xPyRuKFsiXHUwMGEwIiwiXHUwMGEwIixiXSk6Yn0pKX10aGlzLkFhKGEpfTsKXy5sLnZhPWZ1bmN0aW9uKCl7aHouUC52YS5jYWxsKHRoaXMpO3RoaXMubD10aGlzLmcubGF5b3V0PT0yP25ldyBmeihudWxsLHRoaXMuaCk6bmV3IGF6KHRoaXMuaCk7dGhpcy5qLkwodGhpcy5sLCJjaGFuZ2UiLFpzKHRoaXMsImNoZ190Z3RfbGFuZyIpKTt0aGlzLmouTCh0aGlzLmwsImxvYWQiLHRoaXMuemkpO3ZhciBhPXRoaXMuaC5EKFIodGhpcywidGFyZ2V0TGFuZ3VhZ2UiKSk7aWYodGhpcy5nLmxheW91dD09Mil7dmFyIGI9dGhpcy5oLlMoIklNRyIse3NyYzoiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9pbWFnZXMvY2xlYXJkb3QuZ2lmIiwiY2xhc3MiOiJnb29nLXRlLWdhZGdldC1pY29uIixhbHQ6IiJ9KTtiLnN0eWxlLmJhY2tncm91bmRJbWFnZT0idXJsKCIrbnMrIikiO2Iuc3R5bGUuYmFja2dyb3VuZFBvc2l0aW9uPSItNjVweCAwcHgiO3ZhciBjPXRoaXMuaC5TKCJTUEFOIix7c3R5bGU6InZlcnRpY2FsLWFsaWduOiBtaWRkbGUifSk7YS5hcHBlbmRDaGlsZChiKTthLmFwcGVuZENoaWxkKGMpOwp0aGlzLmwuaWEoYyk7YS5zdHlsZS53aGl0ZVNwYWNlPSJub3dyYXAiO2EuY2xhc3NOYW1lPSJnb29nLXRlLWdhZGdldC1zaW1wbGUifWVsc2UgdGhpcy5sLmlhKGEpLHRoaXMuZy5sYXlvdXQ9PTEmJihhLnN0eWxlLmRpc3BsYXk9ImlubGluZSIpfTtfLmwuemk9ZnVuY3Rpb24oKXtpZih0aGlzLmcubGF5b3V0PT0yKXt2YXIgYT10aGlzLmwsYj10aGlzLmguRChSKHRoaXMsInRhcmdldExhbmd1YWdlIikpO2EuQi5mYihhLkcsImNsaWNrIixhLnRmKTthLkc9YjthLkIuTChhLkcsImNsaWNrIixhLnRmKX10aGlzLmRpc3BhdGNoRXZlbnQoImxvYWQiKX07Xy5sLnNhPWZ1bmN0aW9uKCl7aHouUC5zYS5jYWxsKHRoaXMpO3RoaXMuai5kaXNwb3NlKCk7dGhpcy5qPW51bGw7dGhpcy5sLmRpc3Bvc2UoKTt0aGlzLmw9bnVsbH07Xy5sLnJhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubC53YSgpfTsKXy5sLnVhPWZ1bmN0aW9uKGEpe2E9PSIiP3RoaXMuTiYmdGhpcy5sLk5iKHRoaXMuTik6dGhpcy5KJiZ0aGlzLmwuTmIodGhpcy5KKTt0aGlzLmwuS2EoYSl9O18ubC5kYT1mdW5jdGlvbihhKXtIcih0aGlzLkQoKSxhKX07Xy5sLm5iPWZ1bmN0aW9uKGEpe3RoaXMubC5uYihhKX07Xy5sLlpmPWZ1bmN0aW9uKGEsYil7dGhpcy5OPWE7dGhpcy5KPWJ9O3ZhciBqej1mdW5jdGlvbihhLGIpe08uY2FsbCh0aGlzLGIpO3RoaXMuZz1hJiZTbihhKXx8e307dGhpcy5nLkJifHwodGhpcy5nLkJiPXFzKTt0aGlzLmo9bmV3IF8uSGYodGhpcyl9O18uRShqeixPKTt2YXIga3o9e1JtOjEsU206MixLbDozLEpsOjR9O18ubD1qei5wcm90b3R5cGU7Xy5sLlM9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmguY3JlYXRlRWxlbWVudCgiZGl2Iik7dGhpcy5oYj0hMTtIcihhLCExKTt2YXIgYj1SKHRoaXMsImNvbnRhaW5lciIpO2I9KDAsXy51bikoJzxpZnJhbWUgaWQ9IicrUChiKSsnIiBmcmFtZUJvcmRlcj0wIHNyYz0iamF2YXNjcmlwdDpcJ1wnIiBjbGFzcz0iJytQKCJWSXBnSmQtWlZpOW9kLVNtZlotT0VWbWNkIikrJyBza2lwdHJhbnNsYXRlIiBzdHlsZT0idmlzaWJpbGl0eTp2aXNpYmxlIj48L2lmcmFtZT4nKTtqbyhhLGIpO3RoaXMuQWEoYSl9OwpfLmwudmE9ZnVuY3Rpb24oKXtqei5QLnZhLmNhbGwodGhpcyk7dmFyIGE9Xy5xZi50ZXN0KGNzKT8icnRsIjoibHRyIixiPV8ud2IodGhpcy5nLkJiKSxjPVIodGhpcywidHJhbnNsYXRlIik7dGhpcy5EKCkuaWQ9Uih0aGlzLCJmbG9hdENvbnRhaW5lciIpO3ZhciBkPXtpZDp0aGlzLkQoKS5pZCxjbGFzc05hbWU6Imdvb2ctdGUtZnRhYi1mbG9hdCJ9O3RoaXMuRCgpLmNsYXNzTmFtZSs9IiBnb29nLXRlLWZ0YWItZmxvYXQiO3N3aXRjaCh0aGlzLmcuUmQpe2Nhc2UgMjp2YXIgZT0iZ29vZy10ZS1mbG9hdC10b3AiO2QudG9wPTA7ZC5yaWdodD0yMDticmVhaztjYXNlIDM6ZT0iZ29vZy10ZS1mbG9hdC1ib3R0b20iO2QuYm90dG9tPTA7ZC5yaWdodD0yMDticmVhaztjYXNlIDQ6ZT0iZ29vZy10ZS1mbG9hdC1ib3R0b20iO2QuYm90dG9tPTA7ZC5sZWZ0PTIwO2JyZWFrO2RlZmF1bHQ6ZT0iZ29vZy10ZS1mbG9hdC10b3AiLGQudG9wPTAsZC5sZWZ0PTIwfUlyKFRwKG5ldyBfLnJmLGQpLAp0aGlzLkQoKSk7dGhpcy5DPXRoaXMuaC5EKFIodGhpcywiY29udGFpbmVyIikpO3RoaXMuai5MKHRoaXMuQywibG9hZCIsdGhpcy5BaSk7Y3QodGhpcy5DLCgwLF8uQykoZnVuY3Rpb24oKXt2YXIgZj12cSh0aGlzLkMpLGc9ZSxoPXt9LGs9aCYmaC5JZyxtPVJ0LnNnO2c9UXAoUnAoUXAoXy56bigpLCI8aGVhZD4iKSx4eShoKSksJzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURjgiPjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9IicrUChUcShiKSkrJyInKyhrPycgbm9uY2U9IicrUCh1cihrKSkrJyInOiIiKSsnPjwvaGVhZD48Ym9keSBjbGFzcz0iJytQKCJWSXBnSmQtWlZpOW9kLVNtZloiKSsiICIrUChnKSsnIiBzY3JvbGw9Im5vIiBzdHlsZT0ib3ZlcmZsb3c6aGlkZGVuIiBkaXI9IicrUChhKSsnIj48YSBpZD0iJytQKGMpKyciIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgY2xhc3M9IicrClAoIlZJcGdKZC1aVmk5b2QtU21mWi1oU1JHUGQiKSsnIj48aW1nIHNyYz0iJytQKHNyKCJodHRwczovL3d3dy5nb29nbGUuY29tL2ltYWdlcy9jbGVhcmRvdC5naWYiKSkrJyIgc3R5bGU9ImJhY2tncm91bmQtaW1hZ2U6dXJsKCcrUChzcihucykpKycpO2JhY2tncm91bmQtcG9zaXRpb246LTY1cHggMHB4Ij48c3Bhbj4nK2ZyKG0pKyI8L3NwYW4+PC9hPjwvYm9keT4iKS5LYygpO2Yud3JpdGUoXy5HbChnKSk7Zi5jbG9zZSgpfSx0aGlzKSl9O18ubC5BaT1mdW5jdGlvbigpe3RoaXMubD0obmV3IF8uZGQodnEodGhpcy5DKSkpLkQoUih0aGlzLCJ0cmFuc2xhdGUiKSk7dGhpcy5qLkwodGhpcy5sLCJjbGljayIsWnModGhpcywiY2xrX3RyYW5zIikpO0hyKHRoaXMuRCgpLCEwKTt2YXIgYT1Lcih0aGlzLmwpO0hyKHRoaXMuRCgpLCExKTtNcih0aGlzLkMsYSk7TXIodGhpcy5EKCksYSk7dGhpcy5kaXNwYXRjaEV2ZW50KCJsb2FkIil9OwpfLmwuc2E9ZnVuY3Rpb24oKXtqei5QLnNhLmNhbGwodGhpcyk7dGhpcy5qLmRpc3Bvc2UoKTt0aGlzLmo9bnVsbDtfLm9kKHRoaXMuQyk7dGhpcy5sPXRoaXMuQz1udWxsfTtfLmwuaXNWaXNpYmxlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaGJ9O18ubC5kYT1mdW5jdGlvbihhKXt0aGlzLmhiPWE7SHIodGhpcy5EKCksYSl9O3ZhciBsej1mdW5jdGlvbihhLGIpe08uY2FsbCh0aGlzLGIpO3RoaXMuQj1uZXcgXy5IZih0aGlzKTt0aGlzLmc9YSYmU24oYSl8fHt9O3RoaXMuZy5CYj1xczt0aGlzLmcuY2c9ITE7Xy5Fbih0aGlzLmguZy5ib2R5LCJwb3NpdGlvbiIsInJlbGF0aXZlIik7Xy56aXx8Xy5Fbih0aGlzLmguZy5ib2R5LCJtaW5IZWlnaHQiLCIxMDAlIik7Xy5Fbih0aGlzLmguZy5kb2N1bWVudEVsZW1lbnQsImhlaWdodCIsIjEwMCUiKTtfLkVuKHRoaXMuaC5nLmJvZHksInRvcCIsIjBweCIpO18uRmMmJih3aW5kb3cuX2Jhbm5lcnF1aXJrZml4bGVmdD0tcGFyc2VJbnQoIjAiK3RoaXMuaC5nLmJvZHkubGVmdE1hcmdpbiwxMCksd2luZG93Ll9iYW5uZXJxdWlya2ZpeHRvcD0tcGFyc2VJbnQoIjAiK3RoaXMuaC5nLmJvZHkudG9wTWFyZ2luLDEwKS00MCl9O18uRShseixPKTtfLmw9bHoucHJvdG90eXBlO18ubC5pYT1mdW5jdGlvbigpe3RoaXMubGQodGhpcy5oLmcuYm9keS5maXJzdENoaWxkKX07Cl8ubC5TPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5oLmNyZWF0ZUVsZW1lbnQoImRpdiIpO3RoaXMuaGI9ITE7SHIoYSwhMSk7TXUoYSwic2tpcHRyYW5zbGF0ZSIpO3ZhciBiPVIodGhpcywiY29udGFpbmVyIik7Yj0oMCxfLnVuKSgnPGlmcmFtZSBpZD0iJytQKGIpKyciIGNsYXNzPSInK1AoIlZJcGdKZC1aVmk5b2QtT1JIYi1PRVZtY2QiKSsnIHNraXB0cmFuc2xhdGUiIGZyYW1lQm9yZGVyPTAgc3JjPSIjIiBzdHlsZT0idmlzaWJpbGl0eTp2aXNpYmxlIj48L2lmcmFtZT4nKTtqbyhhLGIpO3RoaXMuQWEoYSl9OwpfLmwudmE9ZnVuY3Rpb24oKXtsei5QLnZhLmNhbGwodGhpcyk7dmFyIGE9Xy5xZi50ZXN0KGNzKT8icnRsIjoibHRyIixiPV8ud2IodGhpcy5nLkJiKSxjPVIodGhpcywicHJvbXB0U2VjdGlvbiIpLGQ9Uih0aGlzLCJjb25maXJtIiksZT1SKHRoaXMsInByb2dyZXNzU2VjdGlvbiIpLGY9Uih0aGlzLCJwcm9ncmVzc1ZhbHVlIiksZz1SKHRoaXMsImNhbmNlbCIpLGg9Uih0aGlzLCJmaW5pc2hTZWN0aW9uIiksaz1SKHRoaXMsInJlc3RvcmUiKSxtPVIodGhpcywiZXJyb3JTZWN0aW9uIiksbj1SKHRoaXMsImVycm9yQ29udGVudCIpLHA9Uih0aGlzLCJjbG9zZSIpLHE9Uih0aGlzLCJub0F1dG9Qb3B1cCIpLHIsdD1bXTt0aGlzLmcuY2cmJnQucHVzaCh5eSh7aWQ6Uih0aGlzLCJwcm9tcHRTb3VyY2VMYW5nIil9KSk7dC5wdXNoKHl5KHtpZDpSKHRoaXMsInByb21wdFRhcmdldExhbmciKX0pKTt2YXIgQT1ubyhRLlFpLmFwcGx5KG51bGwsdCkpO3Q9W107dGhpcy5nLmNnJiZ0LnB1c2goeXkoe2lkOlIodGhpcywKImZpbmlzaFNvdXJjZUxhbmciKX0pKTt0LnB1c2goeXkoe2lkOlIodGhpcywiZmluaXNoVGFyZ2V0TGFuZyIpfSkpO3ZhciBEPW5vKFEuTWkuYXBwbHkobnVsbCx0KSk7dGhpcy5nLmVpJiYocj10aGlzLmcuZWkpO3RoaXMuQz10aGlzLmguRChSKHRoaXMsImNvbnRhaW5lciIpKTt0aGlzLkIuTCh0aGlzLkMsImxvYWQiLHRoaXMuQmkpO2N0KHRoaXMuQywoMCxfLkMpKGZ1bmN0aW9uKCl7dmFyIEw9dnEodGhpcy5DKSxWPXIsZmE9e30sa2g9ZmEmJmZhLklnLFlqPVJ0Lk9lLFpqPVJ0LnNnLGFrPVJ0Lk5pLGxoPVJ0Lm5pLG1oPVJ0LklpLHpmPVJ0LmdnLGJrPVJ0LmdnO1Y9UXAoUnAoUXAoXy56bigpLCI8aGVhZD4iKSx4eShmYSkpLCc8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEY4Ij48bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSInK1AoVHEoYikpKyciJysoa2g/JyBub25jZT0iJytQKHVyKGtoKSkrCiciJzoiIikrJz48L2hlYWQ+PGJvZHkgY2xhc3M9IicrUCgiVklwZ0pkLVpWaTlvZC1PUkhiIikrJyIgc2Nyb2xsPSJubyIgYm9yZGVyPTAgZGlyPSInK1AoYSkrJyI+PHRhYmxlIGJvcmRlcj0wIGNlbGxzcGFjaW5nPTAgY2VsbHBhZGRpbmc9MCB3aWR0aD0xMDAlIGhlaWdodD0xMDAlPjx0ciB2YWxpZ249bWlkZGxlPjx0ZCB3aWR0aD0xIG5vd3JhcD48YSBocmVmPSInK1AocXIoImh0dHBzOi8vdHJhbnNsYXRlLmdvb2dsZS5jb20iKSkrJyIgY2xhc3M9IicrUCgiVklwZ0pkLVpWaTlvZC1sNGVIWC1oU1JHUGQiKSsnIiB0YXJnZXQ9Il9ibGFuayI+PGltZyBzcmM9IicrUChzcigiaHR0cHM6Ly93d3cuZ3N0YXRpYy5jb20vaW1hZ2VzL2JyYW5kaW5nL2dvb2dsZWxvZ28vMXgvZ29vZ2xlbG9nb19jb2xvcl82OHgyOGRwLnBuZyIpKSsnIiBhbHQ9Ikdvb2dsZSAnK1AoWWopKyciPjwvYT48L3RkPicrKE5xKFYpPyc8dGQgd2lkdGg9MT48aW1nIHNyYz0iJytQKHNyKCJodHRwczovL3d3dy5nb29nbGUuY29tL2ltYWdlcy9jbGVhcmRvdC5naWYiKSkrCiciIHdpZHRoPSI5IiBoZWlnaHQ9IjE1IiB0aXRsZT0iJytQKFYpKyciIGFsdD0iJytQKFYpKyciIHN0eWxlPSJiYWNrZ3JvdW5kLWltYWdlOnVybCgnK1Aoc3IobnMpKSsnKTtiYWNrZ3JvdW5kLXBvc2l0aW9uOi01NnB4IDBweDttYXJnaW46MCA0cHgiPjwvdGQ+JzoiIikrJzx0ZCBjbGFzcz0iJytQKCJWSXBnSmQtWlZpOW9kLU9SSGItS0U2dnFlIikrJyI+PC90ZD48dGQ+PHRhYmxlIGJvcmRlcj0wIGNlbGxzcGFjaW5nPTAgY2VsbHBhZGRpbmc9MCBoZWlnaHQ9MTAwJT48dHIgaWQ9IicrUChjKSsnIiBzdHlsZT0iZGlzcGxheTpub25lIiB2YWxpZ249bWlkZGxlPjx0ZCBub3dyYXA+PHNwYW4gY2xhc3M9IicrUCgiVklwZ0pkLVpWaTlvZC1PUkhiLWJOOTdQYyIpKyciPicrZnIoQSkrJzwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0iJytQKCJWSXBnSmQtWlZpOW9kLU9SSGItS0U2dnFlIikrJyI+PC90ZD48dGQgbm93cmFwPjxkaXYgY2xhc3M9IicrUCgiVklwZ0pkLVpWaTlvZC1MZ2JzU2UiKSsKJyI+PGRpdj48YnV0dG9uIGlkPSInK1AoZCkrJyI+PGI+JytmcihaaikrJzwvYj48L2J1dHRvbj48L2Rpdj48L2Rpdj48L3RkPjx0ZCBjbGFzcz0iJytQKCJWSXBnSmQtWlZpOW9kLU9SSGItS0U2dnFlIikrJyI+PC90ZD48dGQgbm93cmFwPjxkaXYgY2xhc3M9IicrUCgiVklwZ0pkLVpWaTlvZC1MZ2JzU2UiKSsnIj48ZGl2PjxidXR0b24gaWQ9IicrUChxKSsnIj48L2J1dHRvbj48L2Rpdj48L2Rpdj48L3RkPjwvdHI+PHRyIGlkPSInK1AoZSkrJyIgc3R5bGU9ImRpc3BsYXk6bm9uZSIgdmFsaWduPW1pZGRsZT48dGQ+PHNwYW4gY2xhc3M9IicrUCgiVklwZ0pkLVpWaTlvZC1PUkhiLWJOOTdQYyIpKyciPicrZnIoYWspKycmbmJzcDs8c3BhbiBkaXI9Imx0ciI+KDxiIGlkPSInK1AoZikrJyI+PC9iPiUpPC9zcGFuPiZuYnNwOzxpbWcgc3JjPSInK1Aoc3IocHMpKSsnIj48L3NwYW4+PC90ZD48dGQgY2xhc3M9IicrUCgiVklwZ0pkLVpWaTlvZC1PUkhiLUtFNnZxZSIpKyciPjwvdGQ+PHRkIG5vd3JhcD48ZGl2IGNsYXNzPSInKwpQKCJWSXBnSmQtWlZpOW9kLUxnYnNTZSIpKyciPjxkaXY+PGJ1dHRvbiBpZD0iJytQKGcpKyciPicrZnIobGgpKyc8L2J1dHRvbj48L2Rpdj48L2Rpdj48L3RkPjwvdHI+PHRyIGlkPSInK1AoaCkrJyIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+PHRkPjxzcGFuIGNsYXNzPSInK1AoIlZJcGdKZC1aVmk5b2QtT1JIYi1iTjk3UGMiKSsnIj4nK2ZyKEQpKyc8L3NwYW4+PC90ZD48dGQgY2xhc3M9IicrUCgiVklwZ0pkLVpWaTlvZC1PUkhiLUtFNnZxZSIpKyciPjwvdGQ+PHRkIG5vd3JhcD48ZGl2IGNsYXNzPSInK1AoIlZJcGdKZC1aVmk5b2QtTGdic1NlIikrJyI+PGRpdj48YnV0dG9uIGlkPSInK1AoaykrJyI+JytmcihtaCkrJzwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvdGQ+PC90cj48dHIgaWQ9IicrUChtKSsnIiBzdHlsZT0iZGlzcGxheTpub25lIiB2YWxpZ249bWlkZGxlPjx0ZD48c3BhbiBpZD0iJytQKG4pKyciIGNsYXNzPSInK1AoIlZJcGdKZC1aVmk5b2QtT1JIYi1iTjk3UGMiKSsKJyI+PC9zcGFuPjwvdGQ+PC90cj48L3RhYmxlPjwvdGQ+PHRkIGNsYXNzPSInK1AoIlZJcGdKZC1aVmk5b2QtT1JIYi1LRTZ2cWUiKSsnIj48L3RkPjx0ZCB3aWR0aD0xIGlkPSJvcHRpb25zIj48L3RkPjx0ZCB3aWR0aD0xPjxhIGlkPSInK1AocCkrJyIgY2xhc3M9IicrUCgiVklwZ0pkLVpWaTlvZC1UdkQ5UGMtaFNSR1BkIikrJyIgaHJlZj0iIyIgdGl0bGU9IicrUCh6ZikrJyI+PGltZyBzcmM9IicrUChzcigiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9pbWFnZXMvY2xlYXJkb3QuZ2lmIikpKyciIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIgYWx0PSInK1AoYmspKyciIHN0eWxlPSJiYWNrZ3JvdW5kLWltYWdlOnVybCgnK1Aoc3IobnMpKSsnKTtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yOHB4IDBweCI+PC9hPjwvdGQ+PC90cj48L3RhYmxlPjwvYm9keT4nKS5LYygpO0wud3JpdGUoXy5HbChWKSk7TC5jbG9zZSgpfSx0aGlzKSl9OwpfLmwuQmk9ZnVuY3Rpb24oKXt0aGlzLmo9bmV3IF8uZGQodnEodGhpcy5DKSk7bXoodGhpcyxRLmlnKTtpZih0aGlzLmcuQmI9PXFzKXt2YXIgYT0idXJsKCIrbXMrIikiO18uRW4odGhpcy5qLmcuYm9keSwiYmFja2dyb3VuZEltYWdlIixhKTtmb3IodmFyIGI9dGhpcy5qLmcuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJ1dHRvbiIpLGM9MDtjPGIubGVuZ3RoOysrYyl7dmFyIGQ9YltjXS5wYXJlbnROb2RlO18uRW4oZCwiYmFja2dyb3VuZEltYWdlIixhKTtfLkVuKGQsImJhY2tncm91bmRSZXBlYXQiLCJyZXBlYXQteCIpO18uRW4oZCwiYmFja2dyb3VuZFBvc2l0aW9uIiwiMCAtMzlweCIpfX10aGlzLmcuY2cmJih0aGlzLkE9bmV3IGV6KHRoaXMuZyx0aGlzLmopKTt0aGlzLmw9bmV3IGV6KHRoaXMuZyx0aGlzLmopO3RoaXMuRz1uZXcgZ3oodGhpcy5nLHRoaXMuaik7dGhpcy5CLkwodGhpcy5qLkQoUih0aGlzLCJjb25maXJtIikpLCJjbGljayIsWnModGhpcywiY2xrX2NvbmZpcm0iKSk7CnRoaXMuQi5MKHRoaXMuai5EKFIodGhpcywiY2FuY2VsIikpLCJjbGljayIsWnModGhpcywiY2xrX2NhbmNlbCIpKTt0aGlzLkIuTCh0aGlzLmouRChSKHRoaXMsInJlc3RvcmUiKSksImNsaWNrIixacyh0aGlzLCJjbGtfcmVzdG9yZSIpKTt0aGlzLkIuTCh0aGlzLmouRChSKHRoaXMsImNsb3NlIikpLCJjbGljayIsWnModGhpcywiY2xrX2Nsb3NlIikpO3RoaXMuUj10aGlzLmouRChSKHRoaXMsIm5vQXV0b1BvcHVwIikpO3RoaXMuQi5MKHRoaXMuUiwiY2xpY2siLFpzKHRoaXMsImNsa19ub19hcCIpKTt0aGlzLkEmJnRoaXMuQi5MKHRoaXMuQSwiY2hhbmdlIixacyh0aGlzLCJjaGdfc3JjX2xhbmciKSk7dGhpcy5CLkwodGhpcy5sLCJjaGFuZ2UiLFpzKHRoaXMsImNoZ190Z3RfbGFuZyIpKTt0aGlzLkIuTCh0aGlzLkcsImNoYW5nZSIsdGhpcy5layk7YT1uZXcgVHMoKDAsXy5DKSh0aGlzLkNpLHRoaXMpKTt0aGlzLkEmJnRoaXMuQi5MKHRoaXMuQSwibG9hZCIsYS5yZWdpc3RlcigpKTsKdGhpcy5CLkwodGhpcy5sLCJsb2FkIixhLnJlZ2lzdGVyKCkpO3RoaXMuQi5MKHRoaXMuRywibG9hZCIsYS5yZWdpc3RlcigpKTthLmZpbmlzaCgpO3RoaXMuQSYmdGhpcy5BLmlhKHRoaXMuai5EKFIodGhpcywicHJvbXB0U291cmNlTGFuZyIpKSk7dGhpcy5sLmlhKHRoaXMuai5EKFIodGhpcywicHJvbXB0VGFyZ2V0TGFuZyIpKSk7dGhpcy5HLmlhKHRoaXMuai5EKCJvcHRpb25zIikpfTtfLmwuQ2k9ZnVuY3Rpb24oKXt0aGlzLkcuWmgoUS5HaSk7dGhpcy5HLm9kKHt0dXJuX29mZl9zaXRlOlEuUGksczE6Ii0tLSIsbGVhcm5fbW9yZTpRLkZpfSk7dGhpcy5kaXNwYXRjaEV2ZW50KCJsb2FkIil9O18ubC5laz1mdW5jdGlvbigpe3N3aXRjaCh0aGlzLkcud2EoKSl7Y2FzZSAibGVhcm5fbW9yZSI6d2luZG93Lm9wZW4odXMsIl9ibGFuayIpO2JyZWFrO2Nhc2UgInR1cm5fb2ZmX3NpdGUiOnRoaXMuZGlzcGF0Y2hFdmVudCgiY2xrX25vX2FwX3NpdGUiKX19OwpfLmwuc2E9ZnVuY3Rpb24oKXt0aGlzLmRhKCExKTtsei5QLnNhLmNhbGwodGhpcyk7dGhpcy5CLmRpc3Bvc2UoKTt0aGlzLkI9bnVsbDt0aGlzLkEmJih0aGlzLkEuZGlzcG9zZSgpLHRoaXMuQT1udWxsKTt0aGlzLmwuZGlzcG9zZSgpO3RoaXMubD1udWxsO3RoaXMuRy5kaXNwb3NlKCk7dGhpcy5HPW51bGw7Xy5vZCh0aGlzLkMpO3RoaXMuU2M9dGhpcy5qPW51bGx9O18ubC5XYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLkE/dGhpcy5BLndhKCk6IiJ9O18ubC5yYT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmwud2EoKX07Xy5sLm9iPWZ1bmN0aW9uKGEpe3RoaXMuQSYmdGhpcy5BLkthKGEpO3RoaXMuVCYmdGhpcy5UW2FdJiZ0aGlzLmouSmModGhpcy5SLFEuT2kodGhpcy5UW2FdKSl9O18ubC51YT1mdW5jdGlvbihhKXt0aGlzLmwuS2EoYSl9Owp2YXIgbno9ZnVuY3Rpb24oYSxiLGMsZCl7aWYoYS5TYyE9Yil7YS5TYz1iO2lmKGI9PTApe2EuQSYmJHkoYS5BLGEuai5EKFIoYSwicHJvbXB0U291cmNlTGFuZyIpKSk7aWYoYS5OKXt2YXIgZT1hLnJhKCk7YS5sLk5iKGEuTik7YS51YShlKX0keShhLmwsYS5qLkQoUihhLCJwcm9tcHRUYXJnZXRMYW5nIikpKX1lbHNlIGI9PTImJihhLkEmJiR5KGEuQSxhLmouRChSKGEsImZpbmlzaFNvdXJjZUxhbmciKSkpLGEuSiYmKGU9YS5yYSgpLGEubC5OYihhLkopLGEudWEoZSkpLCR5KGEubCxhLmouRChSKGEsImZpbmlzaFRhcmdldExhbmciKSkpKTtlPXt9O2VbLTFdPWEuai5EKFIoYSwiZXJyb3JTZWN0aW9uIikpO2VbMF09YS5qLkQoUihhLCJwcm9tcHRTZWN0aW9uIikpO2VbMV09YS5qLkQoUihhLCJwcm9ncmVzc1NlY3Rpb24iKSk7ZVsyXT1hLmouRChSKGEsImZpbmlzaFNlY3Rpb24iKSk7Zm9yKHZhciBmIGluIGUpZVtmXSE9PU9iamVjdC5wcm90b3R5cGVbZl0mJkhyKGVbZl0sZj09CmIpfWMmJmEuZGEoITApO2EuUi5wYXJlbnROb2RlLnBhcmVudE5vZGUuc3R5bGUuZGlzcGxheT1kPyJibG9jayI6Im5vbmUifTtsei5wcm90b3R5cGUuaXNWaXNpYmxlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaGJ9Owpsei5wcm90b3R5cGUuZGE9ZnVuY3Rpb24oYSl7aWYodGhpcy5oYiE9YSl7dGhpcy5oYj1hO2lmKF8uRmMpdmFyIGI9cGFyc2VJbnQoIjAiK3RoaXMuaC5nLmJvZHkubGVmdE1hcmdpbiwxMCksYz1wYXJzZUludCgiMCIrdGhpcy5oLmcuYm9keS50b3BNYXJnaW4sMTApO3ZhciBkPXRoaXMuaC5nLmNvbXBhdE1vZGU9PSJCYWNrQ29tcGF0IjthPyhfLkVuKHRoaXMuaC5nLmJvZHksInRvcCIsIjQwcHgiKSxIcih0aGlzLkQoKSwhMCksXy5GYyYmKG5xKCk/KHdpbmRvdy5fYmFubmVycXVpcmtmaXhsZWZ0PXdpbmRvdy5fYmFubmVycXVpcmtmaXh0b3A9MCxkJiYodGhpcy5oLmcuYm9keS50b3BNYXJnaW49Yys0MCkpOmQ/KHRoaXMuaC5nLmJvZHkudG9wTWFyZ2luPWMrNDAsd2luZG93Ll9iYW5uZXJxdWlya2ZpeGxlZnQ9d2luZG93Ll9iYW5uZXJxdWlya2ZpeHRvcD0wKTood2luZG93Ll9iYW5uZXJxdWlya2ZpeGxlZnQ9LWIsd2luZG93Ll9iYW5uZXJxdWlya2ZpeHRvcD0tYy00MCkpKToKKF8uRW4odGhpcy5oLmcuYm9keSwidG9wIiwiMHB4IiksSHIodGhpcy5EKCksITEpLGQmJmM+PTQwJiYodGhpcy5oLmcuYm9keS50b3BNYXJnaW49Yy00MCkpfX07bHoucHJvdG90eXBlLllmPWZ1bmN0aW9uKGEpe3RoaXMuai5KYyh0aGlzLmouRChSKHRoaXMsInByb2dyZXNzVmFsdWUiKSksYSl9O3ZhciBtej1mdW5jdGlvbihhLGIpe2Euai5KYyhhLmouRChSKGEsImVycm9yQ29udGVudCIpKSxiKX07bHoucHJvdG90eXBlLlpmPWZ1bmN0aW9uKGEsYil7dGhpcy5OPWE7dGhpcy5KPWI7dGhpcy5sLk5iKGEpfTt2YXIgcHo9ZnVuY3Rpb24oYSxiKXtfLncuY2FsbCh0aGlzKTtfLlZiKGEpPT0ic3RyaW5nIiYmKGI9YSxhPXt9KTtfLlZiKGIpPT0ic3RyaW5nIiYmKGI9cXEoU3RyaW5nKGIpKSk7dGhpcy5UPWI7dGhpcy5BPW5ldyBfLkhmKHRoaXMpO2E9T2JqZWN0KGEpO3RoaXMubz0iYXV0byI7IShiPXdpbmRvdy5wYXJlbnQhPXdpbmRvdykmJihiPSghd2luZG93LmV4dGVybmFsfHwhd2luZG93LmV4dGVybmFsLmdvb2dsZVRvb2xiYXJWZXJzaW9ufHxwYXJzZUZsb2F0KHdpbmRvdy5leHRlcm5hbC5nb29nbGVUb29sYmFyVmVyc2lvbik8Ni4yKSYmKCF3aW5kb3cuZ3RiRXh0ZXJuYWx8fCF3aW5kb3cuZ3RiRXh0ZXJuYWwuaXNUcmFuc2xhdGVFbmFibGVkfHwhd2luZG93Lmd0YkV4dGVybmFsLmlzVHJhbnNsYXRlRW5hYmxlZCgpKSkmJihiPW5hdmlnYXRvci5hcHBWZXJzaW9uJiZuYXZpZ2F0b3IuYXBwVmVyc2lvbi5tYXRjaCgvXHNDaHJvbWVcLygoXGQrKVwuKFxkKylcLltcZFwuXSspXHMvKSwKYj0hKGImJmJbMl0mJmJbM10mJk51bWJlcihiWzJdKSoxRTMrTnVtYmVyKGJbM10pPj00MDAxKSk7dGhpcy5nPXthZjpiLFNnOiExLGJmOm51bGwsSGQ6bnVsbCx5ZjpbXSxQZzpbXSxqajohMSxDYzohMSxhcGlLZXk6IiIsbGF5b3V0OjAsSmc6ITF9O3RoaXMucWE9e0JiOnFzLGVpOmxzPT0iaHR0cHM6Ly8iP1EuS2k6bnVsbH07dGhpcy5WPXtCYjpxcyxSZDpudWxsfTthJiYoImF1dG9EaXNwbGF5ImluIGEmJih0aGlzLmcuYWY9dGhpcy5nLmFmJiYhIWEuYXV0b0Rpc3BsYXkpLCJtdWx0aWxhbmd1YWdlUGFnZSJpbiBhJiYodGhpcy5nLkNjPSEhYS5tdWx0aWxhbmd1YWdlUGFnZSksImxheW91dCJpbiBhJiYodGhpcy5nLmxheW91dD1hLmxheW91dCksYS5wYWdlTGFuZ3VhZ2UmJih0aGlzLmcudWU9JHMoYS5wYWdlTGFuZ3VhZ2UpKSxhLmluY2x1ZGVkTGFuZ3VhZ2VzJiYodGhpcy5nLnlmPWEuaW5jbHVkZWRMYW5ndWFnZXMuc3BsaXQoIiwiKSksYS5leGNsdWRlZExhbmd1YWdlcyYmCih0aGlzLmcuUGc9YS5leGNsdWRlZExhbmd1YWdlcy5zcGxpdCgiLCIpKSx0aGlzLmcudWUmJih0aGlzLm89dGhpcy5nLnVlKSxhLmtleSYmKHRoaXMuZy5hcGlLZXk9YS5rZXkpLHRoaXMuVi5SZD1OdW1iZXIoYS5mbG9hdFBvc2l0aW9uKXx8dGhpcy5WLlJkLCJkaXNhYmxlQXV0b1RyYW5zbGF0aW9uImluIGEmJih0aGlzLmcuSmc9ISFhLmRpc2FibGVBdXRvVHJhbnNsYXRpb24pKTshdGhpcy5nLkpnJiZveih0aGlzKSYmKHRoaXMuZy5TZz0hMCk7dGhpcy5DPXt9O2lmKChhPWRvY3VtZW50LmNvb2tpZS5tYXRjaCgvKF58OyApZ29vZ3RyYW5zb3B0PSguKj8pKDt8JCkvKSkmJmFbMl0pZm9yKHRoaXMuQz17fSxhPV8udWMoYVsyXSkuc3BsaXQoInwiKSxiPTA7YjxhLmxlbmd0aDsrK2Ipe3ZhciBjPWFbYl0uc3BsaXQoIj0iKTtjWzBdJiYodGhpcy5DW2NbMF1dPWNbMV0pfXRoaXMuamE9bmV3IE53KHthcGlLZXk6dGhpcy5nLmFwaUtleSxWYjoxLGJnOiEwLFFvOnNzfSx7Y2xpZW50OmpzLAp1OndpbmRvdy5sb2NhdGlvbi5ocmVmfSk7dGhpcy5HPW5ldyBZeSh2b2lkIDAsdGhpcy5qYSx2b2lkIDAsdm9pZCAwLHRoaXMuZy5hcGlLZXksdm9pZCAwLHZvaWQgMCxuZXcgRHksdm9pZCAwLHZvaWQgMCx2b2lkIDApO3RoaXMuST0hMTt0aGlzLkEuTCh3aW5kb3csInBhZ2VoaWRlIix0aGlzLmRpc3Bvc2UpO3RoaXMuSj1uZXcgVHMoKDAsXy5DKSh0aGlzLlhqLHRoaXMpKTt0aGlzLk09bmV3IFRzKCgwLF8uQykodGhpcy5jayx0aGlzKSk7dGhpcy5OPW5ldyBWcygoMCxfLkMpKHRoaXMueWssdGhpcykpO3RoaXMuaD1uZXcgbHoodGhpcy5xYSk7dGhpcy5HLnlkKHRoaXMuSi5yZWdpc3RlcigoMCxfLkMpKHRoaXMuVWosdGhpcykpLGNzKTt0aGlzLlQ/KHRoaXMubD1uZXcgaHoodGhpcy5nKSx0aGlzLkEuTCh0aGlzLmwsImxvYWQiLHRoaXMuSi5yZWdpc3RlcigpKSx0aGlzLkEuTCh0aGlzLmwsImNoZ190Z3RfbGFuZyIsV3ModGhpcy5OLHRoaXMuTS5kZWxheSgoMCxfLkMpKHRoaXMuVGosCnRoaXMpKSkpLHRoaXMubC5pYSh0aGlzLlQpKTp0aGlzLlYuUmQmJih0aGlzLkI9bmV3IGp6KHRoaXMuViksdGhpcy5BLkwodGhpcy5CLCJsb2FkIix0aGlzLkoucmVnaXN0ZXIoKSksdGhpcy5BLkwodGhpcy5CLCJjbGtfdHJhbnMiLFdzKHRoaXMuTix0aGlzLk0uZGVsYXkoKDAsXy5DKSh0aGlzLlJqLHRoaXMpKSkpLHRoaXMuQi5pYSgpKTshdGhpcy5nLnVlJiZ0aGlzLmcuamomJnRoaXMuRy5VZCh0aGlzLkoucmVnaXN0ZXIoKDAsXy5DKSh0aGlzLlBqLHRoaXMpKSk7dGhpcy5KLmZpbmlzaCgpfTtfLnkocHosXy53KTsKdmFyIG96PWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoZixnKXtpZihmPV8udWMoZikubWF0Y2goIl5cXCgoKFthLXpBLVpcXC1fXSopXFx8KT8oW2EtekEtWlxcLV9dKilcXCl8Xi8oKFthLXpBLVpcXC1fXSopLyk/KFthLXpBLVpcXC1fXSopIikpe2lmKGZbM10pcmV0dXJuIGcuZy5iZj1mWzJdLGcuZy5IZD1mWzNdLCEwO2lmKGZbNl0pcmV0dXJuIGcuZy5iZj1mWzVdLGcuZy5IZD1mWzZdLCEwfXJldHVybiExfXZhciBjPXt1cmw6ZnVuY3Rpb24oKXt2YXIgZj13aW5kb3cubG9jYXRpb24uaHJlZi5tYXRjaCgvIy4qZ29vZ3RyYW5zKC4qKS8pO3JldHVybiBmJiZmWzFdfSxjb29raWU6ZnVuY3Rpb24oKXt2YXIgZj1kb2N1bWVudC5jb29raWUubWF0Y2goLyhefDsgKWdvb2d0cmFucz0oLio/KSg7fCQpLyk7cmV0dXJuIGYmJmZbMl19fSxkO2ZvcihkIGluIGMpaWYoY1tkXSE9PU9iamVjdC5wcm90b3R5cGVbZF0pe3ZhciBlPWNbZF0oKTtpZihlJiZiKGUsYSkpcmV0dXJuIGR9cmV0dXJuIiJ9LApxej1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz13aW5kb3cubG9jYXRpb24uaG9zdG5hbWUuc3BsaXQoIi4iKTtjLmxlbmd0aD4yOyljLnNoaWZ0KCk7Yz0iO2RvbWFpbj0iK2Muam9pbigiLiIpO2IhPW51bGw/YT1hKyI9IitiOihiPW5ldyBEYXRlLGIuc2V0VGltZShiLmdldFRpbWUoKS0xKSxhPWErIj1ub25lO2V4cGlyZXM9IitiLnRvR01UU3RyaW5nKCkpO2ErPSI7cGF0aD0vIjtkb2N1bWVudC5jb29raWU9YTt0cnl7ZG9jdW1lbnQuY29va2llPWErY31jYXRjaChkKXt9fSxyej1mdW5jdGlvbihhLGIpe3ZhciBjPW51bGw7YiE9PXZvaWQgMCYmKGM9YSE9PXZvaWQgMD8iLyIrYSsiLyIrYjoiLyIrYik7cXooImdvb2d0cmFucyIsYyl9O18ubD1wei5wcm90b3R5cGU7Cl8ubC5Vaj1mdW5jdGlvbihhKXt0aGlzLmo9JHMoY3MpO2E9YXx8e307dmFyIGI9YS50YXJnZXRMYW5ndWFnZXN8fFtdO3RoaXMuTz17c2w6YXAoYS5zb3VyY2VMYW5ndWFnZXN8fFtdKSx0bDphcChiKX07dGhpcy5GPXt9O3RoaXMuUj17fTthPSF0aGlzLmcueWYubGVuZ3RoO2I9U3ModGhpcy5nLnlmKTt2YXIgYz1Tcyh0aGlzLmcuUGcpO3RoaXMuRltjc109IiI7dGhpcy5SW2NzXT0iIjtmb3IodmFyIGQgaW4gdGhpcy5PLnRsKXRoaXMuTy50bFtkXT09PU9iamVjdC5wcm90b3R5cGVbZF18fCEoYXx8ZCBpbiBiKXx8ZCBpbiBjfHwodGhpcy5SW2RdPXRoaXMuTy50bFtkXSxkPT10aGlzLmcudWUmJiF0aGlzLmcuQ2MpfHwodGhpcy5GW2RdPXRoaXMuTy50bFtkXSk7dGhpcy5GW2NzXXx8ZGVsZXRlIHRoaXMuRltjc107dGhpcy5SW2NzXXx8ZGVsZXRlIHRoaXMuUltjc107dGhpcy5aPVNuKHRoaXMuTy5zbCl9O18ubC5Qaj1mdW5jdGlvbihhKXthJiYodGhpcy5vPSRzKGEpKX07Cl8ubC5Yaj1mdW5jdGlvbigpe2RlbGV0ZSB0aGlzLko7aWYodGhpcy5PKXt0aGlzLm89dGhpcy5vfHx0aGlzLmcuYmY7dGhpcy5qPXRoaXMuZy5IZHx8dGhpcy5qO3ZhciBhPXRoaXMuZy5TZ3x8dGhpcy5nLmFmJiZ0aGlzLm8hPXRoaXMuaiYmISh0aGlzLm8gaW4gaHMpJiZ0aGlzLkMub3MhPSIxIiYmdGhpcy5DWyJvIit0aGlzLm9dIT0iMSI7dGhpcy5vPT0iemgtVFciJiYodGhpcy5vPSJ6aC1DTiIpO3RoaXMuWlt0aGlzLm9dfHwoYT0hMSx0aGlzLm89ImF1dG8iKTtpZighdGhpcy5GW3RoaXMual0paWYoYT0hMSx0aGlzLkYuZW4pdGhpcy5qPSJlbiI7ZWxzZSBmb3IodmFyIGIgaW4gdGhpcy5GKWlmKHRoaXMuRltiXSE9PU9iamVjdC5wcm90b3R5cGVbYl0pe3RoaXMuaj1iO2JyZWFrfWlmKHRoaXMubCl7Yj10aGlzLkY7dmFyIGM9eyIiOlEuSml9LGQ7Zm9yKGQgaW4gYiliW2RdIT09T2JqZWN0LnByb3RvdHlwZVtkXSYmKGNbZF09YltkXSk7dGhpcy5sLlpmKGMsdGhpcy5SKTt0aGlzLmwudWEoIiIpfSFmcyYmCmE/dGhpcy5nLkhkP1dzKHRoaXMuTix0aGlzLk0uZGVsYXkoKDAsXy5DKSh0aGlzLkRlLHRoaXMsITAsITApKSkuY2FsbCgpOih0aGlzLkk9ITAsV3ModGhpcy5OLHRoaXMuTS5kZWxheSgoMCxfLkMpKHRoaXMuRGUsdGhpcykpKS5jYWxsKCksV28oInRlX2FwIix7c2w6dGhpcy5vfSkpOih0aGlzLkImJnRoaXMuQi5kYSghMCksdGhpcy5sJiZ0aGlzLmwuZGEoITApKTt3aW5kb3cuZ29vZ2xlLnRyYW5zbGF0ZS5UcmFuc2xhdGVTZXJ2aWNlJiZ0aGlzLm5iKCExKTt0aGlzLk4uZmluaXNoKCl9fTsKXy5sLmNrPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5oLGI9dGhpcy5aO2EuQSYmYS5BLk5iKGIpO2EuVD1iO3RoaXMuaC5aZih0aGlzLkYsdGhpcy5SKTt0aGlzLmgub2IodGhpcy5vKTt0aGlzLmgudWEodGhpcy5qKTt0aGlzLkEuTCh0aGlzLmgsImNsa19jb25maXJtIix0aGlzLkpqKTt0aGlzLkEuTCh0aGlzLmgsImNsa19jYW5jZWwiLHRoaXMuSWopO3RoaXMuQS5MKHRoaXMuaCwiY2xrX3Jlc3RvcmUiLHRoaXMucmYpO3RoaXMuQS5MKHRoaXMuaCwiY2xrX2Nsb3NlIix0aGlzLldkKTt0aGlzLkEuTCh0aGlzLmgsImNsa19ub19hcCIsdGhpcy5Laik7dGhpcy5BLkwodGhpcy5oLCJjbGtfbm9fYXBfc2l0ZSIsdGhpcy5Maik7dGhpcy5BLkwodGhpcy5oLCJjaGdfc3JjX2xhbmciLHRoaXMuVWcpO3RoaXMuQS5MKHRoaXMuaCwiY2hnX3RndF9sYW5nIix0aGlzLlVnKTt0aGlzLmwmJnRoaXMubC5kYSghMCl9OwpfLmwueWs9ZnVuY3Rpb24oKXt0aGlzLkEuTCh0aGlzLmgsImxvYWQiLHRoaXMuTS5yZWdpc3RlcigpKTt0aGlzLmguaWEoKTt0aGlzLk0uZmluaXNoKCl9O18ubC5LPWZ1bmN0aW9uKCl7dGhpcy5HLnJlc3RvcmUoKTtfLncucHJvdG90eXBlLksuY2FsbCh0aGlzKTt0aGlzLkcuZGlzcG9zZSgpO3RoaXMuQS5kaXNwb3NlKCk7dGhpcy5BPW51bGw7dGhpcy5oJiZ0aGlzLmguZGlzcG9zZSgpO3RoaXMuaD1udWxsO3RoaXMuQiYmdGhpcy5CLmRpc3Bvc2UoKTt0aGlzLkI9bnVsbDt0aGlzLmwmJnRoaXMubC5kaXNwb3NlKCk7dGhpcy5UPXRoaXMubD1udWxsfTtfLmwuSmo9ZnVuY3Rpb24oKXshdGhpcy5oLmlzVmlzaWJsZSgpfHwhdGhpcy5nLkNjJiZndCh0aGlzLm8sdGhpcy5oLnJhKCkpfHwodGhpcy5JJiZXbygidGVfYXB0Iix7c2w6dGhpcy5vfSksc3oodGhpcywhMSksdGhpcy5sJiZ0aGlzLmwudWEodGhpcy5oLnJhKCkpKX07Cl8ubC5Jaj1mdW5jdGlvbigpe3RoaXMuaC5pc1Zpc2libGUoKSYmKHR6KHRoaXMpLG56KHRoaXMuaCwwKSx0aGlzLmwmJnRoaXMubC51YSgiIikpfTtfLmwucmY9ZnVuY3Rpb24oKXt0aGlzLmguaXNWaXNpYmxlKCkmJih0eih0aGlzKSxueih0aGlzLmgsMCkpO3RoaXMubCYmdGhpcy5sLnVhKCIiKX07Xy5sLldkPWZ1bmN0aW9uKCl7dGhpcy5oLmlzVmlzaWJsZSgpJiYodGhpcy5JJiYodGhpcy5JPSExLFdvKCJ0ZV9hcGMiLHtzbDp0aGlzLm99KSksdHoodGhpcyksdGhpcy5oLmRhKCExKSx0aGlzLmwmJnRoaXMubC51YSgiIiksdGhpcy5CJiZ0aGlzLkIuZGEoITApKX07Xy5sLktqPWZ1bmN0aW9uKCl7dGhpcy5oLmlzVmlzaWJsZSgpJiYodGhpcy5DWyJvIit0aGlzLm9dPSIxIixXbygidGVfYXByIix7c2w6dGhpcy5vfSksdGhpcy5JPSExLHRoaXMuV2QoKSl9OwpfLmwuTGo9ZnVuY3Rpb24oKXtpZih0aGlzLmguaXNWaXNpYmxlKCkpe3RoaXMuST0hMTt0aGlzLkMub3M9IjEiO3ZhciBhPW51bGw7aWYodGhpcy5DKXthPVtdO2Zvcih2YXIgYiBpbiB0aGlzLkMpdGhpcy5DW2JdIT09T2JqZWN0LnByb3RvdHlwZVtiXSYmYS5wdXNoKGIrIj0iK3RoaXMuQ1tiXSk7YT1hLmpvaW4oInwiKX1xeigiZ29vZ3RyYW5zb3B0IixhKTt0aGlzLldkKCl9fTtfLmwuVWc9ZnVuY3Rpb24oKXt0aGlzLmguaXNWaXNpYmxlKCkmJighdGhpcy5nLkNjJiZndCh0aGlzLm8sdGhpcy5oLnJhKCkpP3RoaXMucmYoKToodGhpcy5vPXRoaXMuaC5XYSgpfHx0aGlzLm8sdGhpcy5qPXRoaXMuaC5yYSgpLHRoaXMuaC5TYz09MiYmKHRoaXMubCYmdGhpcy5sLnVhKHRoaXMuaC5yYSgpKSxzeih0aGlzKSkpKX07Xy5sLkRlPWZ1bmN0aW9uKGEsYil7dGhpcy5oLmlzVmlzaWJsZSgpfHwodGhpcy5CJiZ0aGlzLkIuZGEoITEpLGE/c3oodGhpcyxiKTpueih0aGlzLmgsMCwhMCx0aGlzLkkpKX07Cl8ubC5ubD1mdW5jdGlvbihhLGIpe1dzKHRoaXMuTix0aGlzLk0uZGVsYXkoKDAsXy5DKSh0aGlzLkRlLHRoaXMsYSxiKSkpLmNhbGwoKX07Xy5sLlJqPWZ1bmN0aW9uKCl7dGhpcy5EZSh0aGlzLmguU2M9PTIpfTtfLmwuVGo9ZnVuY3Rpb24oKXt0aGlzLmwucmEoKT8hdGhpcy5nLkNjJiZndCh0aGlzLm8sdGhpcy5oLnJhKCkpP3RoaXMucmYoKToodGhpcy5qPXRoaXMubC5yYSgpLHRoaXMuaC51YSh0aGlzLmopLHN6KHRoaXMpKTp0aGlzLmwudWEodGhpcy5qKX07CnZhciBzej1mdW5jdGlvbihhLGIpe2lmKHdpbmRvdy5nb29nbGUudHJhbnNsYXRlLlRyYW5zbGF0ZVNlcnZpY2UpdHJ5e3dpbmRvdy5nb29nbGUudHJhbnNsYXRlLlRyYW5zbGF0ZVNlcnZpY2UuZ2V0SW5zdGFuY2UoKS5yZXN0b3JlKCl9Y2F0Y2goYyl7fXJ6KGEubyxhLmopO2EuST0hMTshYiYmYS5vIGluIGhzJiZXbygidGVfYXBlIix7c2w6YS5vfSk7YS5oLllmKDApO256KGEuaCwxLCEwKTthLkcuYWkoISFiKTt3aW5kb3cuc2V0VGltZW91dCgoMCxfLkMpKGEuRy5HZSxhLkcsYS5nLkNjPyJhdXRvIjphLm8sYS5qLCgwLF8uQykoYS55YSxhKSx2b2lkIDAsdm9pZCAwKSwwKX07CnB6LnByb3RvdHlwZS55YT1mdW5jdGlvbihhLGIsYyl7dHlwZW9mIHRoaXMuRWE9PSJmdW5jdGlvbiImJnRoaXMuRWEoKTt0aGlzLmguaXNWaXNpYmxlKCkmJnRoaXMuaC5TYz09MSYmKGM/KHR6KHRoaXMpLG56KHRoaXMuaCwtMSwhMCksYz09Mj9teih0aGlzLmgsUS5FaSk6bXoodGhpcy5oLFEuaWcpKToodGhpcy5oLllmKGEpLGImJih0aGlzLmwmJnRoaXMubC51YSh0aGlzLmopLHRoaXMuaC5vYih0aGlzLm8pLG56KHRoaXMuaCwyKSkpKX07dmFyIHR6PWZ1bmN0aW9uKGEpe3J6KCk7d2luZG93LnNldFRpbWVvdXQoKDAsXy5DKShhLkcucmVzdG9yZSxhLkcsbnVsbCksMCl9O3B6LnByb3RvdHlwZS5uYj1mdW5jdGlvbihhKXthfHx0aGlzLldkKCk7dGhpcy5sJiZ0aGlzLmwubmIoYSk7dGhpcy5CJiZ0aGlzLkIuZGEoYSl9O3ZhciB1ej1mdW5jdGlvbihhKXtpZihhJiYoYT1TdHJpbmcoYSksYT1hLnNwbGl0KCIuIiksYS5sZW5ndGgpKXtmb3IodmFyIGI9d2luZG93LGM9MDtjPGEubGVuZ3RoOysrYyl7dmFyIGQ9YVtjXTtpZighKGQmJmQgaW4gYikpcmV0dXJuO2I9YltkXX1yZXR1cm4gYn19O3ZhciB2ej11eigiZ29vZ2xlLnRyYW5zbGF0ZS5tIik7aWYodnopZm9yKHZhciB3eiBpbiBRKWlmKFFbd3pdIT09T2JqZWN0LnByb3RvdHlwZVtRW3d6XV0mJlFbd3pdKXt2YXIgeHo9UVt3el0oKTtRW3d6XT12elt4el0/dnpbeHpdOlF0fWlmKF8uSGooZXMsMSkpe3ZhciB5ej1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3l6LnRleHRDb250ZW50PSJcbiAgLnRyYW5zbGF0ZWQtbHRye1xuICAgICAgZGlyZWN0aW9uOiBsdHI7XG4gICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICB9XG4gIC50cmFuc2xhdGVkLXJ0bHtcbiAgICAgIGRpcmVjdGlvbjogcnRsO1xuICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gIH1cbiAgIjt2YXIgeno9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXTtpZighenope3p6PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImhlYWQiKTt2YXIgQXo9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O0F6Lmluc2VydEJlZm9yZSh6eixBei5maXJzdENoaWxkKX16ei5hcHBlbmRDaGlsZCh5eil9CmlmKGlzPT0xKXt2YXIgQno9bnVsbCxDej1mdW5jdGlvbihhKXtpZighQnope3ZhciBiLGMsZCxlO2EmJigia2V5ImluIGEmJihiPWEua2V5KSwic2VydmVyUGFyYW1zImluIGEmJihjPWEuc2VydmVyUGFyYW1zKSwidGltZUluZm8iaW4gYSYmKGQ9YS50aW1lSW5mbyksInJlbW90ZUFwaVByb3h5SGFuZGxlcnMiaW4gYSYmKGU9YS5yZW1vdGVBcGlQcm94eUhhbmRsZXJzKSwoYT1odCgpKSYmKGM9YSkpO2E9MDtpZihqcz09InRlX2xpYiJ8fF8uSmMpYT0zO0J6PW5ldyBZeSh2b2lkIDAsbmV3IE53KHthcGlLZXk6YixWYjphLGJnOiEwLHRyYWNrVmlzaWJpbGl0eTpjPT0idHZpcyJ9KSx2b2lkIDAsdm9pZCAwLGIsYyxkLHZvaWQgMCx2b2lkIDAsdm9pZCAwLGUpO0J6LmNvbnN0cnVjdG9yPWZ1bmN0aW9uKCl7fTtCei5pc0F2YWlsYWJsZT1Cei5sYjtCei5nZXRTdXBwb3J0ZWRMYW5ndWFnZXM9QnoueWQ7QnouZ2V0UGFnZUxhbmd1YWdlPUJ6LlVkO0J6LnNldENsaWNrVGhyb3VnaD1Cei5haTsKQnoudHJhbnNsYXRlUGFnZT1Cei5HZTtCei5yZXN0b3JlPUJ6LnJlc3RvcmU7QnouaXNUcmFuc2xhdGluZz1Cei54aTtCei5zZXRDaGVja1Zpc2liaWxpdHk9Qnoua2x9cmV0dXJuIEJ6fTtDei5nZXRJbnN0YW5jZT1mdW5jdGlvbigpe3JldHVybiBCen07Xy5iYygiZ29vZ2xlLnRyYW5zbGF0ZS5UcmFuc2xhdGVTZXJ2aWNlIixDeik7V28oInRlX2xpIil9ZWxzZXt2YXIgRHo9bnVsbCxFej1mdW5jdGlvbihhLGIpe0R6fHwoRHo9bmV3IHB6KGEsYiksRHouY29uc3RydWN0b3I9ZnVuY3Rpb24oKXt9KTtyZXR1cm4gRHp9O0V6LmdldEluc3RhbmNlPWZ1bmN0aW9uKCl7cmV0dXJuIER6fTtfLmJjKCJnb29nbGUudHJhbnNsYXRlLlRyYW5zbGF0ZUVsZW1lbnQiLEV6KTtwei5wcm90b3R5cGUuZGlzcG9zZT1wei5wcm90b3R5cGUuZGlzcG9zZTtwei5wcm90b3R5cGUuc2hvd0Jhbm5lcj1wei5wcm90b3R5cGUubmw7cHoucHJvdG90eXBlLnNldEVuYWJsZWQ9cHoucHJvdG90eXBlLm5iO18uYmMoImdvb2dsZS50cmFuc2xhdGUuVHJhbnNsYXRlRWxlbWVudC5GbG9hdFBvc2l0aW9uIiwKa3opO2t6LlRPUF9MRUZUPTE7a3ouVE9QX1JJR0hUPTI7a3ouQk9UVE9NX1JJR0hUPTM7a3ouQk9UVE9NX0xFRlQ9NDtfLmJjKCJnb29nbGUudHJhbnNsYXRlLlRyYW5zbGF0ZUVsZW1lbnQuSW5saW5lTGF5b3V0Iixpeik7aXouVkVSVElDQUw9MDtpei5IT1JJWk9OVEFMPTE7aXouU0lNUExFPTJ9KGZ1bmN0aW9uKCl7Zm9yKHZhciBhIGluIE9iamVjdC5wcm90b3R5cGUpe18ubmM9ZnVuY3Rpb24oZCxlLGYpe2Zvcih2YXIgZyBpbiBkKWRbZ10hPT1PYmplY3QucHJvdG90eXBlW2ddJiZlLmNhbGwoZixkW2ddLGcsZCl9O2JyZWFrfXZhciBiPV8uYWMoKSxjPXV6KGRzKTtjJiZ0eXBlb2YgYz09ImZ1bmN0aW9uIiYmKGlzPT0xP2MoKTpmdW5jdGlvbiBlKCl7dmFyIGY9ZG9jdW1lbnQucmVhZHlTdGF0ZTtfLlZiKGYpPT0idW5kZWZpbmVkInx8Zj09ImNvbXBsZXRlInx8Zj09ImludGVyYWN0aXZlInx8Xy5hYygpLWI+PTJFND9jKCk6d2luZG93LnNldFRpbWVvdXQoZSw1MDApfSgpKX0pKCk7Cl8uWHg9ZnVuY3Rpb24oKXtyZXR1cm4hMH07Cl8ubmEoKTsKfWNhdGNoKGUpe18uX0R1bXBFeGNlcHRpb24oZSl9Cn0pLmNhbGwodGhpcyx0aGlzLmRlZmF1bHRfdHIpOwovLyBHb29nbGUgSW5jLgo="}},"time_used":189,"timings":{"blocked":60,"dns":4,"connect":21,"send":0,"wait":22,"receive":44,"ssl":36},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.google.com/images/cleardot.gif","fqdn":"www.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.250.74.68","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://clear-vault.online/","date":"2025-08-07T20:48:22.315Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"www.google.com","organization":""},"issuer":{"commonName":"WR2","organization":"Google Trust Services"},"validity":{"start":"Mon, 07 Jul 2025 08:35:54 GMT","end":"Mon, 29 Sep 2025 08:35:53 GMT"},"fingerprint":{"sha1":"F3:96:6E:68:01:34:12:AD:6A:03:D8:EF:BD:47:E1:FD:A4:AA:FB:C5","sha256":"BF:6D:12:A9:D7:AB:31:65:56:63:8F:97:4E:12:51:58:55:9A:75:81:94:F8:34:D1:46:46:48:4B:34:CB:8A:9E"}}},"request":{"raw":"GET /images/cleardot.gif HTTP/1.1\r\nHost: www.google.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,*/*\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate, br\r\nDNT: 1\r\nConnection: keep-alive\r\nReferer: https://clear-vault.online/\r\nSec-Fetch-Dest: image\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 OK\r\naccept-ranges: bytes\r\ncontent-type: image/gif\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy-report-only: same-origin; report-to=\"static-on-bigtable\"\r\nreport-to: {\"group\":\"static-on-bigtable\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/static-on-bigtable\"}]}\r\ncontent-length: 43\r\ndate: Thu, 07 Aug 2025 20:48:22 GMT\r\npragma: no-cache\r\nexpires: Fri, 01 Jan 1990 00:00:00 GMT\r\ncache-control: no-cache, no-store, must-revalidate\r\nlast-modified: Tue, 22 Oct 2019 18:30:00 GMT\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\nX-Firefox-Spdy: h2\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":null,"data":{"size":43,"size_decoded":0,"mime_type":"image/gif","magic":"GIF image data, version 89a, 1 x 1","md5":"fc94fb0c3ed8a8f909dbc7630a0987ff","sha1":"56d45f8a17f5078a20af9962c992ca4678450765","sha256":"2dfe28cbdb83f01c940de6a88ab86200154fd772d568035ac568664e52068363","sha512":"c87bf81fd70cf6434ca3a6c05ad6e9bd3f1d96f77dddad8d45ee043b126b2cb07a5cf23b4137b9d8462cd8a9adf2b463ab6de2b38c93db72d2d511ca60e3b57e","ssdeep":"","tlshash":"cb900003cac8c022c2a2c0300a0c03002bbaa8300228030ec0bc30fcec2a3a38c02000","first_seen":"2023-04-05T02:54:04Z","last_seen":"2026-08-11T16:44:06.787586Z","times_seen":82905,"resource_available":true,"data":"R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="}},"time_used":156,"timings":{"blocked":60,"dns":8,"connect":7,"send":0,"wait":19,"receive":0,"ssl":57},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"translate.google.com/gen204?sl=en\u0026nca=te_ap\u0026client=te\u0026logld=vTE_20250805","fqdn":"translate.google.com","domain":"google.com","tld":"com"},"ip":{"addr":"142.250.74.174","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://clear-vault.online/","date":"2025-08-07T20:48:22.477Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.google.com","organization":""},"issuer":{"commonName":"WR2","organization":"Google Trust Services"},"validity":{"start":"Mon, 07 Jul 2025 08:34:03 GMT","end":"Mon, 29 Sep 2025 08:34:02 GMT"},"fingerprint":{"sha1":"CC:B6:27:D3:02:ED:CD:98:15:4D:FA:8E:6E:11:2C:57:EF:3D:FF:DF","sha256":"F7:00:C9:74:34:57:5E:BE:70:A7:0E:D2:9B:A8:2D:44:F1:CE:14:55:C3:D9:06:3F:83:68:95:A1:C6:B5:7F:26"}}},"request":{"raw":"GET /gen204?sl=en\u0026nca=te_ap\u0026client=te\u0026logld=vTE_20250805 HTTP/1.1\r\nHost: translate.google.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,*/*\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate, br\r\nDNT: 1\r\nConnection: keep-alive\r\nReferer: https://clear-vault.online/\r\nSec-Fetch-Dest: image\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 204 No Content\r\ncontent-type: image/gif; charset=utf-8\r\ncache-control: no-cache, no-store, max-age=0, must-revalidate\r\npragma: no-cache\r\nexpires: Mon, 01 Jan 1990 00:00:00 GMT\r\ndate: Thu, 07 Aug 2025 20:48:22 GMT\r\ncross-origin-resource-policy: cross-origin\r\np3p: CP=\"This is not a P3P policy! See g.co/p3phelp for more info.\"\r\naccept-ch: Sec-CH-UA-Arch, Sec-CH-UA-Bitness, Sec-CH-UA-Full-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Model, Sec-CH-UA-WoW64, Sec-CH-UA-Form-Factors, Sec-CH-UA-Platform, Sec-CH-UA-Platform-Version\r\ncontent-security-policy: require-trusted-types-for 'script';report-uri /_/TranslateApiHttp/cspreport, script-src 'nonce-ou6paqWPhtwmjLIj6wUWDQ' 'unsafe-inline';object-src 'none';base-uri 'self';report-uri /_/TranslateApiHttp/cspreport;worker-src 'self'\r\ncross-origin-opener-policy: same-origin\r\npermissions-policy: ch-ua-arch=*, ch-ua-bitness=*, ch-ua-full-version=*, ch-ua-full-version-list=*, ch-ua-model=*, ch-ua-wow64=*, ch-ua-form-factors=*, ch-ua-platform=*, ch-ua-platform-version=*\r\nreporting-endpoints: default=\"/_/TranslateApiHttp/web-reports?context=eJzj4tDikmJw05BiEOLhmLboyhE2gQud-54xKikl5RfGlxQl5hXnJJakFqcWlaUWxRsZGJkaWBiY6hmYxRcYAAAfaxLF\"\r\nserver: ESF\r\ncontent-length: 0\r\nx-xss-protection: 0\r\nx-frame-options: SAMEORIGIN\r\nx-content-type-options: nosniff\r\nset-cookie: __Secure-ENID=28.SE=Y_vrjeanQmw9vDq6nczCkDoQvIRclQJEN7Cnbc1Zqkae7AwqOiBtJwxBcFr0dX8yP4BqBBgIP-q6eeoUzmJNplZsfusI_4AUt0n3f7hZll4x0V3mqjZCLu1QIIa_JCHx-rkkP3Pf1xBkxKRcDup2rp59p8l_8xjD1R8ArrdgdNFZQUKsy7zTaV5TSHaEZtK4Ly0pnzk1LbpmSMYB81Rgy8SfeKgoR_jFxrrcd-2fVhcsvNwu; expires=Mon, 07-Sep-2026 13:06:40 GMT; path=/; domain=.google.com; Secure; HttpOnly; SameSite=lax\r\nalt-svc: h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000\r\n\r\n","headers":null,"cookies":null,"status_code":"204","status_text":"No Content","fingerprints":null,"data":{"size":0,"size_decoded":0,"mime_type":"image/gif; charset=utf-8","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-08-11T16:57:26.648985Z","times_seen":17840002,"resource_available":true,"data":""}},"time_used":20,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":20,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"translate.googleapis.com/element/log?format=json\u0026hasfast=true\u0026authuser=0","fqdn":"translate.googleapis.com","domain":"translate.googleapis.com","tld":"googleapis.com"},"ip":{"addr":"142.250.74.106","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"fetch","requested_by":"https://clear-vault.online/","date":"2025-08-07T20:48:32.269Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"upload.video.google.com","organization":""},"issuer":{"commonName":"WR2","organization":"Google Trust Services"},"validity":{"start":"Mon, 07 Jul 2025 08:35:11 GMT","end":"Mon, 29 Sep 2025 08:35:10 GMT"},"fingerprint":{"sha1":"DF:A1:DB:1F:BC:5E:31:D7:F8:FE:26:E3:B9:B3:02:98:B1:C8:50:EC","sha256":"A2:57:20:B6:AE:46:89:B9:39:C7:57:9B:1E:43:96:E3:5A:BC:7E:3F:1D:18:10:34:CC:53:3D:DB:78:4E:5C:21"}}},"request":{"raw":"OPTIONS /element/log?format=json\u0026hasfast=true\u0026authuser=0 HTTP/1.1\r\nHost: translate.googleapis.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.5\r\nAccept-Encoding: gzip, deflate, br\r\nAccess-Control-Request-Method: POST\r\nAccess-Control-Request-Headers: x-goog-authuser\r\nReferer: https://clear-vault.online/\r\nOrigin: https://clear-vault.online\r\nDNT: 1\r\nConnection: keep-alive\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: 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":"OPTIONS"},"response":{"raw":"HTTP/3 200 OK\r\ncross-origin-opener-policy-report-only: same-origin; report-to=coop_reporting\r\nreport-to: {\"group\":\"clearcut-frontend-http-prod-hiqos\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/httpsserver2/clearcut-frontend-http-prod-hiqos\"}]}\r\ncontent-security-policy-report-only: script-src 'none';form-action 'none';frame-src 'none'; report-uri https://csp.withgoogle.com/csp/httpsserver2/clearcut-frontend-http-prod-hiqos\r\naccess-control-allow-origin: https://clear-vault.online\r\naccess-control-allow-methods: GET, POST, OPTIONS\r\naccess-control-max-age: 86400\r\naccess-control-allow-credentials: true\r\naccess-control-allow-headers: X-Playlog-Web,authorization,origin,x-goog-authuser\r\ncontent-type: text/plain; charset=UTF-8\r\ndate: Thu, 07 Aug 2025 20:48:32 GMT\r\nserver: Playlog\r\ncontent-length: 0\r\nx-xss-protection: 0\r\nx-frame-options: SAMEORIGIN\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":"OK","fingerprints":null,"data":{"size":0,"size_decoded":0,"mime_type":"text/plain; charset=UTF-8","magic":"","md5":"d41d8cd98f00b204e9800998ecf8427e","sha1":"da39a3ee5e6b4b0d3255bfef95601890afd80709","sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","sha512":"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e","ssdeep":"","tlshash":"","first_seen":"0001-01-01T00:00:00Z","last_seen":"2026-08-11T16:57:26.648985Z","times_seen":17840002,"resource_available":true,"data":""}},"time_used":30,"timings":{"blocked":0,"dns":0,"connect":0,"send":0,"wait":30,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"clear-vault.online/myaccount/logo.png","fqdn":"clear-vault.online","domain":"clear-vault.online","tld":"online"},"ip":{"addr":"163.61.188.222","port":443,"asn":0,"as":"","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"imageset","requested_by":"https://clear-vault.online/","date":"2025-08-07T20:48:21.195Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.clear-vault.online","organization":""},"issuer":{"commonName":"R10","organization":"Let's Encrypt"},"validity":{"start":"Mon, 16 Jun 2025 11:19:04 GMT","end":"Sun, 14 Sep 2025 11:19:03 GMT"},"fingerprint":{"sha1":"B5:E4:FF:81:2F:18:5B:84:17:4F:FD:F3:B1:30:00:31:3C:9C:0B:6F","sha256":"D8:BC:E6:FB:32:84:D6:43:47:2F:20:BA:56:C3:6C:DA:94:89:5F:DD:A3:3B:02:B9:36:2B:50:1E:79:03:E9:D6"}}},"request":{"raw":"GET /myaccount/logo.png HTTP/1.1\r\nHost: clear-vault.online\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,*/*\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate, br\r\nDNT: 1\r\nConnection: keep-alive\r\nReferer: https://clear-vault.online/\r\nCookie: PHPSESSID=1f922d27e0c65bdcb87ee1a396055a92\r\nSec-Fetch-Dest: image\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/3 200 OK\r\ncache-control: public, max-age=604800\r\nexpires: Thu, 14 Aug 2025 20:48:21 GMT\r\ncontent-type: image/png\r\nlast-modified: Tue, 15 Apr 2025 01:22:01 GMT\r\naccept-ranges: bytes\r\ncontent-length: 121464\r\ndate: Thu, 07 Aug 2025 20:48:21 GMT\r\nserver: LiteSpeed\r\nstrict-transport-security: max-age=16070400;\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","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":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]}],"data":{"size":121464,"size_decoded":0,"mime_type":"image/png","magic":"PNG image data, 559 x 447, 8-bit/color RGBA, non-interlaced","md5":"c7f2b0370c3e18e64c6463527ca455bd","sha1":"20b63f82ac37a15a8c46443ac0f23e3f1cf41be5","sha256":"b5e517354e40005403954e3e5f18d76795c82c4e37abd0ebca6e655a3c467220","sha512":"2ce10fce889d3553336accfa5084b38eda94ccb310bcf00eafd58edd33950cbd408ebe8c5908cb447cc1ddd777467159a21f6dca1ae633c540a6fc0b3a60c44d","ssdeep":"3072:xO4VxUAWeHV1PGNZShQNk97FACNuaheweg:xOEUAWeHV1PEZS5aquahew","tlshash":"98c31260949cdb8f93d28137d21982ea1288a31af2fb55f6939954bd70ff30426947e3","first_seen":"2025-08-07T20:48:57.548775Z","last_seen":"2025-08-07T20:48:57.548775Z","times_seen":1,"resource_available":false,"data":"iVBORw0KGgoAAAANSUhEUgAAAi8AAAG/CAYAAACQWjeaAAAAAXNSR0IArs4c6QAAIABJREFUeF7snQeYVNXZx99zzu0zswVYmiBVpagJiI0ogr2iEgE1BmtQY48llhiWRBONJiZq7GCNGogaY8SYqGBDjSU2sCPSYVl2d8qtp3yeOzu4+ilYonHgvc/DM+yUe8/9nbN7/vNWAnggASSABJAAEkACSKCKCJAqGisOFQkgASSABJAAEkACgOIFFwESQAJIAAkgASRQVQRQvFTVdOFgkQASQAJIAAkgARQvuAaQABJAAkgACSCBqiKA4qWqpgsHiwSQABJAAkgACaB4wTWABJAAEkACSAAJVBUBFC9VNV04WCSABJAAEkACSADFC64BJIAEkAASQAJIoKoIoHipqunCwSIBJIAEkAASQAIoXnANIAEkgASQABJAAlVFAMVLVU0XDhYJIAEkgASQABJA8YJrAAkgASSABJAAEqgqAiheqmq6cLBIAAkgASSABJAAihdcA0gACSABJIAEkEBVEUDxUlXThYNFAkgACSABJIAEULzgGkACSAAJIAEkgASqigCKl6qaLhwsEkACSAAJIAEkgOIF1wASQAJIAAkgASRQVQRQvFTVdOFgkQASQAJIAAkgARQvuAaQABJAAkgACSCBqiKA4qWqpgsHiwSQABJAAkgACaB4wTWABJAAEkACSAAJVBUBFC9VNV04WCSABJAAEkACSADFC64BJIAEkAASQAJIoKoIoHipqunCwSIBJIAEkAASQAIoXnANIAEkgASQABJAAlVFAMVLVU0XDhYJIAEkgASQABJA8YJrAAkgASSABJAAEqgqAiheqmq6cLBIAAkgASSABJAAihdcA0gACSABJIAEkEBVEUDxUlXThYNFAkgACSABJIAEULzgGkACSAAJIAEkgASqigCKl6qaLhwsEkACSAAJIAEkgOIF1wASQAJIAAkgASRQVQRQvFTVdOFgkQASQAJIAAkgARQvuAaQABJAAkgACSCBqiKA4qWqpgsHiwSQABJAAkgACaB4wTWABJAAEkACSAAJVBUBFC9VNV04WCSABJAAEkACSADFC64BJIAEkAASQAJIoKoIoHipqunCwSIBJIAEkAASQAIoXnANIAEkgASQABJAAlVFAMVLVU0XDhYJIAEkgASQABJA8YJrAAkgASSABJAAEqgqAiheqmq6cLBIAAkgASSABJAAihdcA0gACSABJIAEkEBVEUDxUlXThYNFAkgACSABJIAEULzgGkACSAAJIAEkgASqigCKl6qaLhwsEkACSAAJIAEkgOIF1wASQAJIAAkgASRQVQRQvFTVdOFgkQASQAJIAAkgARQvuAaQABJAAkgACSCBqiKA4qWqpgsHiwSQABJAAkgACaB4wTWABJAAEkACSAAJVBUBFC9VNV04WCSABJAAEkACSADFC64BJIAEkAASQAJIoKoIoHipqunCwSIBJIAEkAASQAIoXnANIAEkgASQABJAAlVFAMVLVU0XDhYJIAEkgASQABJA8YJrAAkgASSABJAAEqgqAiheqmq6cLBIAAkgASSABJAAihdcA0gACSABJIAEkEBVEUDxUlXThYNFAkgACSABJIAEULzgGkACSAAJIAEkgASqigCKl6qaLhwsEkACSAAJIAEkgOIF1wASQAJIAAkgASRQVQRQvFTVdOFgkQASQAJIAAkgARQvuAaQABJAAkgACSCBqiKA4qWqpgsHiwSQABJAAkgACaB4wTWABJAAEkACSAAJVBUBFC9VNV04WCSABJAAEkACSADFC64BJIAEkAASQAJIoKoIoHipqunCwSIBJIAEkAASQAIoXnANIAEkgASQABJAAlVFAMVLVU0XDhYJIAEkgASQABJA8YJrAAkgASSABJAAEqgqAiheqmq6cLBIAAkgASSABJAAihdcA0gACVQIkNGNjQzeKtRlDLeBGlbXRPGuSkFXQqFGAc0oBRaAygAlJlGQpYSaURTVvPPu25ZlWlYURdC3b19wHQcs2wYhZfncSoEUEoQUIJWAytOGaQAFAMIYEP3XSJFYgQyUUgoAQqVUQAgUlaR5ICIPhLSBgiJIaANQq4iIVxokXPnQZp2L0NjYfjGcUCSABDZ0AiheNvQZxvtDAushcMCRFw5dU2rbZ+miFaN8vzSAMNNizDKCIDCpYRoSwAAABiApkFRrpHojfVSUmKbJOOeEUkq15kiSBGwtXIRIr0xSVaL1iwKlCCiln9enkCBBpWcmhCmD6HNSqZRQShGlH/XPAFJ0eBT6Z6WIfuQgoyTjZbgQPKBAVnVp6PJWNue+FiV8vh3G8+b+46YWQogWQnggASSwARFA8bIBTSbeChL4IgQG7zpxODUzZ61Y0TxGEshJATZj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a/VqoSiilV93wXUj5eWK1dXVdUzplb9lVCTvHwCcACKACBwzAkhejhkyPAERODkRgGjQ4TQ4J+eMcVaIACKQrwggecnXlcNxIwKIACKACCACBYoAkpcCXXicNiKACCACiAAikK8IIHnJ15XDcSMCiAAigAggAgWKAJKXAl14nDYigAggAogAIpCvCCB5ydeVw3EjAogAIoAIIAIFigCSlwJdeJw2IoAIIAKIACKQrwggecnXlcNxIwKIACKACCACBYoAkpcCXXicNiKACCACiAAikK8IIHnJ15XDcSMCiAAigAggAgWKAJKXAl14nDYigAggAogAIpCvCCB5ydeVw3EjAogAIoAIIAIFigCSlwJdeJw2IoAIIAKIACKQrwggecnXlcNxIwKIACKACCACBYoAkpcCXXicNiKACCACiAAikK8IIHnJ15XDcSMCiAAigAggAgWKAJKXAl14nDYigAggAogAIpCvCCB5ydeVw3EjAogAIoAIIAIFigCSlwJdeJw2IoAIIAKIACKQrwggecnXlcNxIwKIACKACCACBYoAkpcCXXicNiKACCACiAAikK8IIHnJ15XDcSMCiAAigAggAgWKAJKXAl14nDYigAggAogAIpCvCCB5ydeVw3EjAogAIoAIIAIFigCSlwJdeJw2IoAIIAKIACKQrwggecnXlcNxIwKIACKACCACBYoAkpcCXXicNiKACCACiAAikK8IIHnJ15XDcSMCiAAigAggAgWKAJKXAl14nDYigAggAogAIpCvCCB5ydeVw3EjAogAIoAIIAIFigCSlwJdeJw2IoAIIAKIACKQrwggecnXlcNxIwKIACKACCACBYoAkpcCXXicNiKACCACiAAikK8IIHnJ15XDcSMCiAAigAggAgWKAJKXAl14nDYigAggAogAIpCvCCB5ydeVw3EjAogAIoAIIAIFigCSlwJdeJw2IoAIIAKIACKQrwggecnXlcNxIwKIACKACCACBYoAkpcCXXicNiKACCACiAAikK8IIHnJ15XDcSMCiAAigAggAgWKAJKXAl14nDYigAggAogAIpCvCCB5ydeVw3EjAogAIoAIIAIFigCSlwJdeJw2IoAIIAKIACKQrwj8/9sv7wz1vl3IAAAAAElFTkSuQmCC"}},"time_used":511,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":260,"receive":251,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"clear-vault.online/myaccount/assets/js/custom.js","fqdn":"clear-vault.online","domain":"clear-vault.online","tld":"online"},"ip":{"addr":"163.61.188.222","port":443,"asn":0,"as":"","country":"","country_code":"zz"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://clear-vault.online/","date":"2025-08-07T20:48:21.210Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"RSA-PSS-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.clear-vault.online","organization":""},"issuer":{"commonName":"R10","organization":"Let's Encrypt"},"validity":{"start":"Mon, 16 Jun 2025 11:19:04 GMT","end":"Sun, 14 Sep 2025 11:19:03 GMT"},"fingerprint":{"sha1":"B5:E4:FF:81:2F:18:5B:84:17:4F:FD:F3:B1:30:00:31:3C:9C:0B:6F","sha256":"D8:BC:E6:FB:32:84:D6:43:47:2F:20:BA:56:C3:6C:DA:94:89:5F:DD:A3:3B:02:B9:36:2B:50:1E:79:03:E9:D6"}}},"request":{"raw":"GET /myaccount/assets/js/custom.js HTTP/1.1\r\nHost: clear-vault.online\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.5\r\nAccept-Encoding: gzip, deflate, br\r\nDNT: 1\r\nConnection: keep-alive\r\nReferer: https://clear-vault.online/\r\nCookie: PHPSESSID=1f922d27e0c65bdcb87ee1a396055a92\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/3 200 OK\r\ncontent-type: text/javascript\r\nlast-modified: Thu, 11 May 2023 18:14:15 GMT\r\naccept-ranges: bytes\r\ncontent-encoding: br\r\nvary: Accept-Encoding\r\ncontent-length: 1946\r\ndate: Thu, 07 Aug 2025 20:48:21 GMT\r\nserver: LiteSpeed\r\nstrict-transport-security: max-age=16070400;\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"LiteSpeed","description":"LiteSpeed is a high-scalability web server.","website":"https://litespeedtech.com","common_platform_enumeration":"cpe:2.3:a:litespeedtech:litespeed_web_server:*:*:*:*:*:*:*:*","icon":"LiteSpeed.svg","categories":["Web servers"]},{"name":"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":20558,"size_decoded":0,"mime_type":"text/javascript","magic":"JavaScript source, ASCII text, with CRLF line terminators","md5":"148eb289a3c56badd113210da14f8f22","sha1":"7f957907636bc862f6bf03c2b6c9cbfbacee669e","sha256":"cd4d28b4aa5449c1f0721ea2a18a2539f4b763781c74fb12512d5087625aae7d","sha512":"5ad0ae7e6ecff10e5eb95fd6a9ab384b5724a6c841b8feea132bbf7a2ad8b92ec58f66d7802de3b9f250cdf3fbd605c6d219273ec476f50a145038b37c15e4b7","ssdeep":"384:3//hnAWJc1wEWOsjaZJ59kUXHakxfnMcMWheF8VUiglyK6Cp:vB12wlLu19h33dV6Mv4TVp","tlshash":"cb92fe1b756ca5b1027773b6953bcb06ff21612b1003c719babc99c06f35e9ca01adad","first_seen":"2023-03-12T20:42:29Z","last_seen":"2026-08-11T12:54:12.925239Z","times_seen":258,"resource_available":true,"data":"Ly91c2VyIGxvZ2luIHNlY3Rpb24NCiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgew0KICAgICQoJy5zZWNyZXRGb3JtJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7DQogdmFyICR0aGlzID0gJCh0aGlzKTsNCiB2YXIgbG9hZGluZ1RleHQgPSAnPGkgY2xhc3M9InNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtIiByb2xlPSJzdGF0dXMiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+Jm5ic3A7UHJvY2Vzc2luZy4uLic7DQogDQogIA0KaWYgKCQodGhpcykuaHRtbCgpICE9PSBsb2FkaW5nVGV4dCkgew0KJHRoaXMuZGF0YSgnb3JpZ2luYWwtdGV4dCcsICQodGhpcykuaHRtbCgpKTsNCiR0aGlzLmh0bWwobG9hZGluZ1RleHQpOw0KfQ0Kc2V0VGltZW91dChmdW5jdGlvbigpIHsNCiR0aGlzLmh0bWwoJHRoaXMuZGF0YSgnb3JpZ2luYWwtdGV4dCcpKTsNCn0sMTUwMCk7DQp9KTsNCn0pDQovL2xvZ2luIHNjcmlwdC8vLw0KJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24gKCkgew0KICAgICQoJy5zZWNyZXRGb3JtJykuY2xpY2soZnVuY3Rpb24gKGUpIHsNCiAgICAgIGUucHJldmVudERlZmF1bHQoKTsNCiAgICAgIHZhciBzZWNyZXRDb2RlID0gJCgnI3NlY3JldENvZGUnKS52YWwoKTsNCiAgICAgICQuYWpheA0KICAgICAgICAoew0KICAgICAgICAgIHR5cGU6ICJQT1NUIiwNCiAgICAgICAgICB1cmw6ICIuLi9zY3JpcHRzL3R3YS5waHAiLA0KICAgICAgICAgIGRhdGE6IHsgInNlY3JldENvZGUiOiBzZWNyZXRDb2RlIH0sDQogICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKGRhdGEpIHsNCiAgICAgICAgICAgICQoJy5yZXN1bHQnKS5odG1sKGRhdGEpOw0KICAgICAgICAgICAgJCgnI2Zvcm0nKVswXS5yZXNldCgpOw0KICAgICAgICAgIH0NCiAgICAgICAgfSk7DQogICAgfSk7DQogIH0pOw0KDQoNCi8vVHJhbnNmZXIgU3RlcE9uZS8vDQovL3VzZXIgbG9naW4gc2VjdGlvbg0KJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7DQogICAgJCgnLnN0ZXBPbmUnKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHsNCiB2YXIgJHRoaXMgPSAkKHRoaXMpOw0KIHZhciBsb2FkaW5nVGV4dCA9ICc8aSBjbGFzcz0ic3Bpbm5lci1ib3JkZXIgc3Bpbm5lci1ib3JkZXItc20iIHJvbGU9InN0YXR1cyIgYXJpYS1oaWRkZW49InRydWUiPjwvaT4mbmJzcDtQbGVhc2UgV2FpdC4uLic7DQogDQogIA0KaWYgKCQodGhpcykuaHRtbCgpICE9PSBsb2FkaW5nVGV4dCkgew0KJHRoaXMuZGF0YSgnb3JpZ2luYWwtdGV4dCcsICQodGhpcykuaHRtbCgpKTsNCiR0aGlzLmh0bWwobG9hZGluZ1RleHQpOw0KfQ0Kc2V0VGltZW91dChmdW5jdGlvbigpIHsNCiR0aGlzLmh0bWwoJHRoaXMuZGF0YSgnb3JpZ2luYWwtdGV4dCcpKTsNCn0sMTUwMCk7DQp9KTsNCn0pDQovL2xvZ2luIHNjcmlwdC8vLw0KJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24gKCkgew0KICAgICQoJy5zdGVwT25lJykuY2xpY2soZnVuY3Rpb24gKGUpIHsNCiAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnRuMSIpLmRpc2FibGVkID0gdHJ1ZTsNCiAgICAgIGUucHJldmVudERlZmF1bHQoKTsNCiAgICAgIHZhciBhbW91bnQgPSAkKCcjYW1vdW50JykudmFsKCk7DQogICAgICAkLmFqYXgNCiAgICAgICAgKHsNCiAgICAgICAgICB0eXBlOiAiUE9TVCIsDQogICAgICAgICAgdXJsOiAiLi4vc2NyaXB0cy90cmFuc2Zlci5waHAiLA0KICAgICAgICAgIGRhdGE6IHsgImFtb3VudCI6IGFtb3VudCB9LA0KICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChkYXRhKSB7DQogICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJ0bjEiKS5kaXNhYmxlZCA9IGZhbHNlOw0KICAgICAgICAgICAgJCgnLnJlc3VsdCcpLmh0bWwoZGF0YSk7DQogICAgICAgICAgICAkKCcjZm9ybScpWzBdLnJlc2V0KCk7DQogICAgICAgICAgfQ0KICAgICAgICB9KTsNCiAgICB9KTsNCiAgfSk7DQogDQogLyoqKioqIENvbnRpbnVlIFRyeCoqKi8NCg0KJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7DQogICAgJCgnLnN0ZXBUd29Gb3JtJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7DQogdmFyICR0aGlzID0gJCh0aGlzKTsNCiB2YXIgbG9hZGluZ1RleHQgPSAnPGkgY2xhc3M9InNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtIiByb2xlPSJzdGF0dXMiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+Jm5ic3A7UGxlYXNlIFdhaXQuLi4nOw0KIA0KICANCmlmICgkKHRoaXMpLmh0bWwoKSAhPT0gbG9hZGluZ1RleHQpIHsNCiR0aGlzLmRhdGEoJ29yaWdpbmFsLXRleHQnLCAkKHRoaXMpLmh0bWwoKSk7DQokdGhpcy5odG1sKGxvYWRpbmdUZXh0KTsNCn0NCnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7DQokdGhpcy5odG1sKCR0aGlzLmRhdGEoJ29yaWdpbmFsLXRleHQnKSk7DQp9LDE1MDApOw0KfSk7DQp9KQ0KLy9sb2dpbiBzY3JpcHQvLy8NCiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uICgpIHsNCiAgICAkKCcuc3RlcFR3b0Zvcm0nKS5jbGljayhmdW5jdGlvbiAoZSkgew0KICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJidG4yIikuZGlzYWJsZWQgPSB0cnVlOw0KICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOw0KICAgICAgdmFyIGJhbmtuYW1lID0gJCgnI2JhbmtuYW1lJykudmFsKCk7DQogICAgICB2YXIgYWNjb3VudG51bWJlciA9ICQoJyNhY2NvdW50bnVtYmVyJykudmFsKCk7DQogICAgICB2YXIgYWNjb3VudGhvbGRlciA9ICQoJyNhY2NvdW50aG9sZGVyJykudmFsKCk7DQogICAgICB2YXIgc29ydGNvZGUgPSAkKCcjc29ydGNvZGUnKS52YWwoKTsNCiAgICAgIHZhciBkZXNjcmlwdGlvbiA9ICQoJyNkZXNjcmlwdGlvbicpLnZhbCgpOw0KDQogICAgICAkLmFqYXgNCiAgICAgICAgKHsNCiAgICAgICAgICB0eXBlOiAiUE9TVCIsDQogICAgICAgICAgdXJsOiAiLi4vc2NyaXB0cy9iYW5rZGV0YWlscy5waHAiLA0KICAgICAgICAgIGRhdGE6IHsgImJhbmtuYW1lIjogYmFua25hbWUsICJhY2NvdW50bnVtYmVyIjogYWNjb3VudG51bWJlciwgImFjY291bnRob2xkZXIiOiBhY2NvdW50aG9sZGVyLCAic29ydGNvZGUiOiBzb3J0Y29kZSwgImRlc2NyaXB0aW9uIjogZGVzY3JpcHRpb24gfSwNCiAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoZGF0YSkgew0KICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJidG4yIikuZGlzYWJsZWQgPSBmYWxzZTsNCiAgICAgICAgICAgICQoJy5yZXN1bHRGb3JUd28nKS5odG1sKGRhdGEpOw0KICAgICAgICAgICAgJCgnI2Zvcm0nKVswXS5yZXNldCgpOw0KICAgICAgICAgIH0NCiAgICAgICAgfSk7DQogICAgfSk7DQogIH0pOw0KDQovKioqKipWRVJJRlkgT1RQKiovDQoNCiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgew0KICAgICQoJy52ZXJpZnlCdG4nKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHsNCiB2YXIgJHRoaXMgPSAkKHRoaXMpOw0KIHZhciBsb2FkaW5nVGV4dCA9ICc8aSBjbGFzcz0ic3Bpbm5lci1ib3JkZXIgc3Bpbm5lci1ib3JkZXItc20iIHJvbGU9InN0YXR1cyIgYXJpYS1oaWRkZW49InRydWUiPjwvaT4mbmJzcDtQbGVhc2UgV2FpdC4uLic7DQogDQogIA0KaWYgKCQodGhpcykuaHRtbCgpICE9PSBsb2FkaW5nVGV4dCkgew0KJHRoaXMuZGF0YSgnb3JpZ2luYWwtdGV4dCcsICQodGhpcykuaHRtbCgpKTsNCiR0aGlzLmh0bWwobG9hZGluZ1RleHQpOw0KfQ0Kc2V0VGltZW91dChmdW5jdGlvbigpIHsNCiR0aGlzLmh0bWwoJHRoaXMuZGF0YSgnb3JpZ2luYWwtdGV4dCcpKTsNCn0sMjAwMCk7DQp9KTsNCn0pDQovL2xvZ2luIHNjcmlwdC8vLw0KJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24gKCkgew0KICAgICQoJy52ZXJpZnlCdG4nKS5jbGljayhmdW5jdGlvbiAoZSkgew0KICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJidG4iKS5kaXNhYmxlZCA9IHRydWU7DQogICAgICBlLnByZXZlbnREZWZhdWx0KCk7DQogICAgICB2YXIgb3RwID0gJCgnI290cCcpLnZhbCgpOw0KICAgICAgJC5hamF4DQogICAgICAgICh7DQogICAgICAgICAgdHlwZTogIlBPU1QiLA0KICAgICAgICAgIHVybDogIi4uL3NjcmlwdHMvdmVyaWZ5LW90cC5waHAiLA0KICAgICAgICAgIGRhdGE6IHsgIm90cCI6IG90cCB9LA0KICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChkYXRhKSB7DQogICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJ0biIpLmRpc2FibGVkID0gZmFsc2U7DQogICAgICAgICAgICAkKCcudmVyaWZ5UmVzdWx0JykuaHRtbChkYXRhKTsNCiAgICAgICAgICAgICQoJyNmb3JtJylbMF0ucmVzZXQoKTsNCiAgICAgICAgICB9DQogICAgICAgIH0pOw0KICAgIH0pOw0KICB9KTsNCg0KLyoqKioqVkVSSUZZIFdJUkUgT1RQKiovDQoNCiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgew0KICAgICQoJy52ZXJpZnlXaXJlJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7DQogdmFyICR0aGlzID0gJCh0aGlzKTsNCiB2YXIgbG9hZGluZ1RleHQgPSAnPGkgY2xhc3M9InNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtIiByb2xlPSJzdGF0dXMiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+Jm5ic3A7UGxlYXNlIFdhaXQuLi4nOw0KIA0KICANCmlmICgkKHRoaXMpLmh0bWwoKSAhPT0gbG9hZGluZ1RleHQpIHsNCiR0aGlzLmRhdGEoJ29yaWdpbmFsLXRleHQnLCAkKHRoaXMpLmh0bWwoKSk7DQokdGhpcy5odG1sKGxvYWRpbmdUZXh0KTsNCn0NCnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7DQokdGhpcy5odG1sKCR0aGlzLmRhdGEoJ29yaWdpbmFsLXRleHQnKSk7DQp9LDIwMDApOw0KfSk7DQp9KQ0KLy9sb2dpbiBzY3JpcHQvLy8NCiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uICgpIHsNCiAgICAkKCcudmVyaWZ5V2lyZScpLmNsaWNrKGZ1bmN0aW9uIChlKSB7DQogICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnRuIikuZGlzYWJsZWQgPSB0cnVlOw0KICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOw0KICAgICAgdmFyIG90cCA9ICQoJyNvdHAnKS52YWwoKTsNCiAgICAgICQuYWpheA0KICAgICAgICAoew0KICAgICAgICAgIHR5cGU6ICJQT1NUIiwNCiAgICAgICAgICB1cmw6ICIuLi9zY3JpcHRzL3ZlcmlmeS13aXJlLW90cC5waHAiLA0KICAgICAgICAgIGRhdGE6IHsgIm90cCI6IG90cCB9LA0KICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChkYXRhKSB7DQogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnRuIikuZGlzYWJsZWQgPSBmYWxzZTsNCiAgICAgICAgICAgICQoJy52ZXJpZnlXaXJlUmVzdWx0JykuaHRtbChkYXRhKTsNCiAgICAgICAgICAgICQoJyNmb3JtJylbMF0ucmVzZXQoKTsNCiAgICAgICAgICB9DQogICAgICAgIH0pOw0KICAgIH0pOw0KICB9KTsNCg0KLyoNCkFVVEhFTlRJQ0FUSU9OICBDT0RFDQoqLw0KDQokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsNCiAgICAkKCcuYXV0aCcpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkgew0KIHZhciAkdGhpcyA9ICQodGhpcyk7DQogdmFyIGxvYWRpbmdUZXh0ID0gJzxpIGNsYXNzPSJzcGlubmVyLWJvcmRlciBzcGlubmVyLWJvcmRlci1zbSIgcm9sZT0ic3RhdHVzIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPiZuYnNwO1Byb2Nlc3NpbmcuLi4nOw0KIGlmICgkKHRoaXMpLmh0bWwoKSAhPT0gbG9hZGluZ1RleHQpIHsNCiAkdGhpcy5kYXRhKCdvcmlnaW5hbC10ZXh0JywgJCh0aGlzKS5odG1sKCkpOw0KICR0aGlzLmh0bWwobG9hZGluZ1RleHQpOw0KIH0NCiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgew0KICR0aGlzLmh0bWwoJHRoaXMuZGF0YSgnb3JpZ2luYWwtdGV4dCcpKTsNCiB9LDIwMDApOw0KIH0pOw0KIH0pDQoNCi8vbG9naW4gc2NyaXB0Ly8vDQokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbiAoKSB7DQogICAgJCgnLmF1dGgnKS5jbGljayhmdW5jdGlvbiAoZSkgew0KICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOw0KICAgICAgdmFyIGNvZGUgPSAkKCcjY29kZScpLnZhbCgpOw0KICAgICAgJC5hamF4DQogICAgICAgICh7DQogICAgICAgICAgdHlwZTogIlBPU1QiLA0KICAgICAgICAgIHVybDogIi4uL3NjcmlwdHMvYXV0aGVudGljYXRlLnBocCIsDQogICAgICAgICAgZGF0YTogeyAiY29kZSI6IGNvZGUgfSwNCiAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoZGF0YSkgew0KICAgICAgICAgICAgJCgnLnZlcmlmeVJlc3VsdCcpLmh0bWwoZGF0YSk7DQogICAgICAgICAgICAkKCcjZm9ybScpWzBdLnJlc2V0KCk7DQogICAgICAgICAgfQ0KICAgICAgICB9KTsNCiAgICB9KTsNCiAgfSk7DQoNCi8vQURESU5HIEEgUEFZRUUNCg0KICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgew0KICQoJy5hZGRQYXllZScpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkgew0KIHZhciAkdGhpcyA9ICQodGhpcyk7DQogdmFyIGxvYWRpbmdUZXh0ID0gJzxpIGNsYXNzPSJzcGlubmVyLWJvcmRlciBzcGlubmVyLWJvcmRlci1zbSIgcm9sZT0ic3RhdHVzIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPiZuYnNwO1Byb2Nlc3NpbmcuLi4nOw0KIGlmICgkKHRoaXMpLmh0bWwoKSAhPT0gbG9hZGluZ1RleHQpIHsNCiAkdGhpcy5kYXRhKCdvcmlnaW5hbC10ZXh0JywgJCh0aGlzKS5odG1sKCkpOw0KICR0aGlzLmh0bWwobG9hZGluZ1RleHQpOw0KIH0NCiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgew0KICR0aGlzLmh0bWwoJHRoaXMuZGF0YSgnb3JpZ2luYWwtdGV4dCcpKTsNCiB9LDMwMDApOw0KIH0pOw0KIH0pDQokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbiAoKSB7DQogICAgJCgnLmFkZFBheWVlJykuY2xpY2soZnVuY3Rpb24gKGUpIHsNCiAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnRuMiIpLmRpc2FibGVkID0gdHJ1ZTsNCiAgICAgIGUucHJldmVudERlZmF1bHQoKTsNCiAgICAgIHZhciBuYW1lID0gJCgnI25hbWUnKS52YWwoKTsNCiAgICAgIHZhciBtZXRob2QgPSAkKCcjbWV0aG9kJykudmFsKCk7DQogICAgICB2YXIgYWNjb3VudCA9ICQoJyNhY2NvdW50JykudmFsKCk7DQogICAgICB2YXIgYWRkcmVzcyA9ICQoJyNhZGRyZXNzJykudmFsKCk7DQogICAgICB2YXIgY2l0eSA9ICQoJyNjaXR5JykudmFsKCk7DQogICAgICB2YXIgc3RhdGUgPSAkKCcjc3RhdGUnKS52YWwoKTsNCiAgICAgIHZhciB6aXBjb2RlID0gJCgnI3ppcGNvZGUnKS52YWwoKTsNCiAgICAgIHZhciBuaWNrbmFtZSA9ICQoJyNuaWNrbmFtZScpLnZhbCgpOw0KICAgICAgJC5hamF4DQogICAgICAgICh7DQogICAgICAgICAgdHlwZTogIlBPU1QiLA0KICAgICAgICAgIHVybDogIi4uL3NjcmlwdHMvYWRkcGF5ZWUiLA0KICAgICAgICAgIGRhdGE6IHsgIm5hbWUiOiBuYW1lLCAibWV0aG9kIjogbWV0aG9kLCAiYWNjb3VudCI6IGFjY291bnQsICJhZGRyZXNzIjogYWRkcmVzcywgImNpdHkiOiBjaXR5LCAic3RhdGUiOiBzdGF0ZSwgInppcGNvZGUiOiB6aXBjb2RlLCAibmlja25hbWUiOiBuaWNrbmFtZSAgfSwNCiAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoZGF0YSkgew0KICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJidG4yIikuZGlzYWJsZWQgPSBmYWxzZTsNCiAgICAgICAgICAgICQoJy5hZGRQYXllZVJlc3VsdCcpLmh0bWwoZGF0YSk7DQogICAgICAgICAgICAkKCcjZm9ybScpWzBdLnJlc2V0KCk7DQogICAgICAgICAgfQ0KICAgICAgICB9KTsNCiAgICB9KTsNCiAgfSk7DQoNCi8vQklMTCBQQVlNRU5UDQogJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7DQogJCgnLnBheUJpbGwnKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHsNCiB2YXIgJHRoaXMgPSAkKHRoaXMpOw0KIHZhciBsb2FkaW5nVGV4dCA9ICc8aSBjbGFzcz0ic3Bpbm5lci1ib3JkZXIgc3Bpbm5lci1ib3JkZXItc20iIHJvbGU9InN0YXR1cyIgYXJpYS1oaWRkZW49InRydWUiPjwvaT4mbmJzcDtQcm9jZXNzaW5nLi4uJzsNCiBpZiAoJCh0aGlzKS5odG1sKCkgIT09IGxvYWRpbmdUZXh0KSB7DQogJHRoaXMuZGF0YSgnb3JpZ2luYWwtdGV4dCcsICQodGhpcykuaHRtbCgpKTsNCiAkdGhpcy5odG1sKGxvYWRpbmdUZXh0KTsNCiB9DQogc2V0VGltZW91dChmdW5jdGlvbigpIHsNCiAkdGhpcy5odG1sKCR0aGlzLmRhdGEoJ29yaWdpbmFsLXRleHQnKSk7DQogfSwzMDAwKTsNCiB9KTsNCiB9KQ0KJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24gKCkgew0KICAgICQoJy5wYXlCaWxsJykuY2xpY2soZnVuY3Rpb24gKGUpIHsNCiAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnRuMSIpLmRpc2FibGVkID0gdHJ1ZTsNCiAgICAgIGUucHJldmVudERlZmF1bHQoKTsNCiAgICAgIHZhciBwYXllZWlkID0gJCgnI3BheWVlaWQnKS52YWwoKTsNCiAgICAgIHZhciBhbW91bnQgPSAkKCcjYW1vdW50JykudmFsKCk7DQogICAgICB2YXIgZGF0ZWQgPSAkKCcjZGF0ZWQnKS52YWwoKTsNCiAgICAgIHZhciBtZW1vID0gJCgnI21lbW8nKS52YWwoKTsNCiAgICAgICQuYWpheA0KICAgICAgICAoew0KICAgICAgICAgIHR5cGU6ICJQT1NUIiwNCiAgICAgICAgICB1cmw6ICIuLi9zY3JpcHRzL3BheWJpbGwiLA0KICAgICAgICAgIGRhdGE6IHsicGF5ZWVpZCI6IHBheWVlaWQsICJhbW91bnQiOiBhbW91bnQsICJkYXRlZCI6IGRhdGVkLCAibWVtbyI6IG1lbW8gIH0sDQogICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKGRhdGEpIHsNCiAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnRuMSIpLmRpc2FibGVkID0gZmFsc2U7DQogICAgICAgICAgICAkKCcucGF5QmlsbFJlc3VsdCcpLmh0bWwoZGF0YSk7DQogICAgICAgICAgICAkKCcjZm9ybScpWzBdLnJlc2V0KCk7DQogICAgICAgICAgfQ0KICAgICAgICB9KTsNCiAgICB9KTsNCiAgfSk7DQoNCg0KDQovL2J1dHRvbiBkZWxheWVyDQpmdW5jdGlvbiBkZWxheShvYmopew0Kb2JqLnNldEF0dHJpYnV0ZSgnZGlzYWJsZWQnLCdkaXNhYmxlZCcpOw0Kc2V0VGltZW91dChmdW5jdGlvbigpe29iai5yZW1vdmVBdHRyaWJ1dGUoJ2Rpc2FibGVkJyl9LDMwMDAwKQ0KfQ0KDQovL0lNQUdFIFBSRVZJRVcNCg0KDQovL0JJTEwgUEFZIE9UUCBTRUNUSU9ODQogJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAkKCcuYmlsbE90cCcpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkgew0KICAgICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpOw0KICAgICAgICAgdmFyIGxvYWRpbmdUZXh0ID0gJzxpIGNsYXNzPSJzcGlubmVyLWJvcmRlciBzcGlubmVyLWJvcmRlci1zbSB0ZXh0LWxpZ2h0IiByb2xlPSJzdGF0dXMiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+Jm5ic3A7UHJvY2Vzc2luZy4uLic7DQogICAgICAgIGlmICgkKHRoaXMpLmh0bWwoKSAhPT0gbG9hZGluZ1RleHQpIHsNCiAgICAgICR0aGlzLmRhdGEoJ29yaWdpbmFsLXRleHQnLCAkKHRoaXMpLmh0bWwoKSk7DQogICAgICAkdGhpcy5odG1sKGxvYWRpbmdUZXh0KTsNCiAgICAgIH0NCiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgew0KICAgICAgJHRoaXMuaHRtbCgkdGhpcy5kYXRhKCdvcmlnaW5hbC10ZXh0JykpOw0KICAgIH0sMzAwMCk7DQogIH0pOw0KfSkNCiAgDQogICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uICgpIHsNCiAgICAkKCcuYmlsbE90cCcpLmNsaWNrKGZ1bmN0aW9uIChlKSB7DQogICAgICBlLnByZXZlbnREZWZhdWx0KCk7DQogICAgICB2YXIgY29kZUJveDEgPSAkKCcjY29kZUJveDEnKS52YWwoKTsNCiAgICAgIHZhciBjb2RlQm94MiA9ICQoJyNjb2RlQm94MicpLnZhbCgpOw0KICAgICAgdmFyIGNvZGVCb3gzID0gJCgnI2NvZGVCb3gzJykudmFsKCk7DQogICAgICB2YXIgY29kZUJveDQgPSAkKCcjY29kZUJveDQnKS52YWwoKTsgIA0KICAgICAgJC5hamF4DQogICAgICAgICh7DQogICAgICAgICAgdHlwZTogIlBPU1QiLA0KICAgICAgICAgIHVybDogIi4uL3NjcmlwdHMvYmlsbC1vdHAiLA0KICAgICAgICAgIGRhdGE6IHsgImNvZGVCb3gxIjogY29kZUJveDEsICJjb2RlQm94MiI6IGNvZGVCb3gyLCAiY29kZUJveDMiOiBjb2RlQm94MywgImNvZGVCb3g0IjogY29kZUJveDR9LA0KICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChkYXRhKSB7DQogICAgICAgICAgICAkKCcuQmlsbE90cFJlc3VsdCcpLmh0bWwoZGF0YSk7DQogICAgICAgICAgICAkKCcjb3RwRm9ybScpWzBdLnJlc2V0KCk7DQogICAgICAgICAgfQ0KICAgICAgICB9KTsNCiAgICB9KTsNCiAgfSk7DQp2YXIgbWF4X2NoYXJzID0gMTsNCg0KJCgnI2NvZGVCb3gxJykua2V5ZG93biggZnVuY3Rpb24oZSl7DQogICAgaWYgKCQodGhpcykudmFsKCkubGVuZ3RoID49IG1heF9jaGFycykgeyANCiAgICAgICAgJCh0aGlzKS52YWwoJCh0aGlzKS52YWwoKS5zdWJzdHIoMCwgbWF4X2NoYXJzKSk7DQogICAgfQ0KfSk7DQoNCiQoJyNjb2RlQm94MScpLmtleXVwKCBmdW5jdGlvbihlKXsNCiAgICBpZiAoJCh0aGlzKS52YWwoKS5sZW5ndGggPj0gbWF4X2NoYXJzKSB7IA0KICAgICAgICAkKHRoaXMpLnZhbCgkKHRoaXMpLnZhbCgpLnN1YnN0cigwLCBtYXhfY2hhcnMpKTsNCiAgICB9DQp9KTsNCiQoJyNjb2RlQm94MicpLmtleWRvd24oIGZ1bmN0aW9uKGUpew0KICAgIGlmICgkKHRoaXMpLnZhbCgpLmxlbmd0aCA+PSBtYXhfY2hhcnMpIHsgDQogICAgICAgICQodGhpcykudmFsKCQodGhpcykudmFsKCkuc3Vic3RyKDAsIG1heF9jaGFycykpOw0KICAgIH0NCn0pOw0KDQokKCcjY29kZUJveDInKS5rZXl1cCggZnVuY3Rpb24oZSl7DQogICAgaWYgKCQodGhpcykudmFsKCkubGVuZ3RoID49IG1heF9jaGFycykgeyANCiAgICAgICAgJCh0aGlzKS52YWwoJCh0aGlzKS52YWwoKS5zdWJzdHIoMCwgbWF4X2NoYXJzKSk7DQogICAgfQ0KfSk7DQokKCcjY29kZUJveDMnKS5rZXlkb3duKCBmdW5jdGlvbihlKXsNCiAgICBpZiAoJCh0aGlzKS52YWwoKS5sZW5ndGggPj0gbWF4X2NoYXJzKSB7IA0KICAgICAgICAkKHRoaXMpLnZhbCgkKHRoaXMpLnZhbCgpLnN1YnN0cigwLCBtYXhfY2hhcnMpKTsNCiAgICB9DQp9KTsNCg0KJCgnI2NvZGVCb3gzJykua2V5dXAoIGZ1bmN0aW9uKGUpew0KICAgIGlmICgkKHRoaXMpLnZhbCgpLmxlbmd0aCA+PSBtYXhfY2hhcnMpIHsgDQogICAgICAgICQodGhpcykudmFsKCQodGhpcykudmFsKCkuc3Vic3RyKDAsIG1heF9jaGFycykpOw0KICAgIH0NCn0pOw0KJCgnI2NvZGVCb3g0Jykua2V5ZG93biggZnVuY3Rpb24oZSl7DQogICAgaWYgKCQodGhpcykudmFsKCkubGVuZ3RoID49IG1heF9jaGFycykgeyANCiAgICAgICAgJCh0aGlzKS52YWwoJCh0aGlzKS52YWwoKS5zdWJzdHIoMCwgbWF4X2NoYXJzKSk7DQogICAgfQ0KfSk7DQoNCiQoJyNjb2RlQm94NCcpLmtleXVwKCBmdW5jdGlvbihlKXsNCiAgICBpZiAoJCh0aGlzKS52YWwoKS5sZW5ndGggPj0gbWF4X2NoYXJzKSB7IA0KICAgICAgICAkKHRoaXMpLnZhbCgkKHRoaXMpLnZhbCgpLnN1YnN0cigwLCBtYXhfY2hhcnMpKTsNCiAgICB9DQp9KTsNCg0KLy9JTUYgQ09ERSBBTkQgQ09UIENPREUgVkVSSUZJQ0FUSU9ODQoNCiAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsNCiAkKCcuaW1mQnRuJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7DQogdmFyICR0aGlzID0gJCh0aGlzKTsNCiB2YXIgbG9hZGluZ1RleHQgPSAnPGkgY2xhc3M9InNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtIiByb2xlPSJzdGF0dXMiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+Jm5ic3A7UHJvY2Vzc2luZy4uLic7DQogaWYgKCQodGhpcykuaHRtbCgpICE9PSBsb2FkaW5nVGV4dCkgew0KICR0aGlzLmRhdGEoJ29yaWdpbmFsLXRleHQnLCAkKHRoaXMpLmh0bWwoKSk7DQogJHRoaXMuaHRtbChsb2FkaW5nVGV4dCk7DQogfQ0KIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7DQogJHRoaXMuaHRtbCgkdGhpcy5kYXRhKCdvcmlnaW5hbC10ZXh0JykpOw0KIH0sMzAwMCk7DQogfSk7DQogfSkNCiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uICgpIHsNCiAgICAkKCcuaW1mQnRuJykuY2xpY2soZnVuY3Rpb24gKGUpIHsNCiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJidG4xIikuZGlzYWJsZWQgPSB0cnVlOw0KICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOw0KICAgICAgdmFyIGltZiA9ICQoJyNpbWYnKS52YWwoKTsNCiAgICAgICQuYWpheA0KICAgICAgICAoew0KICAgICAgICAgIHR5cGU6ICJQT1NUIiwNCiAgICAgICAgICB1cmw6ICIuLi9zY3JpcHRzL2ltZiIsDQogICAgICAgICAgZGF0YTogeyJpbWYiOiBpbWZ9LA0KICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChkYXRhKSB7DQogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnRuMSIpLmRpc2FibGVkID0gZmFsc2U7DQogICAgICAgICAgICAkKCcuaW1mUmVzdWx0JykuaHRtbChkYXRhKTsNCiAgICAgICAgICAgICQoJyNmb3JtJylbMF0ucmVzZXQoKTsNCiAgICAgICAgICB9DQogICAgICAgIH0pOw0KICAgIH0pOw0KICB9KTsNCi8vQ09UIENPREUNCiAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsNCiAkKCcuY290QnRuJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7DQogdmFyICR0aGlzID0gJCh0aGlzKTsNCiB2YXIgbG9hZGluZ1RleHQgPSAnPGkgY2xhc3M9InNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtIiByb2xlPSJzdGF0dXMiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+Jm5ic3A7UHJvY2Vzc2luZy4uLic7DQogaWYgKCQodGhpcykuaHRtbCgpICE9PSBsb2FkaW5nVGV4dCkgew0KICR0aGlzLmRhdGEoJ29yaWdpbmFsLXRleHQnLCAkKHRoaXMpLmh0bWwoKSk7DQogJHRoaXMuaHRtbChsb2FkaW5nVGV4dCk7DQogfQ0KIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7DQogJHRoaXMuaHRtbCgkdGhpcy5kYXRhKCdvcmlnaW5hbC10ZXh0JykpOw0KIH0sMzAwMCk7DQogfSk7DQogfSkNCiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uICgpIHsNCiAgICAkKCcuY290QnRuJykuY2xpY2soZnVuY3Rpb24gKGUpIHsNCiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJidG4yIikuZGlzYWJsZWQgPSBmYWxzZTsNCiAgICAgIGUucHJldmVudERlZmF1bHQoKTsNCiAgICAgIHZhciBjb3QgPSAkKCcjY290JykudmFsKCk7DQogICAgICAkLmFqYXgNCiAgICAgICAgKHsNCiAgICAgICAgICB0eXBlOiAiUE9TVCIsDQogICAgICAgICAgdXJsOiAiLi4vc2NyaXB0cy9jb3QiLA0KICAgICAgICAgIGRhdGE6IHsiY290IjogY290fSwNCiAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoZGF0YSkgew0KICAgICAgICAgICAgJCgnLmNvdFJlc3VsdCcpLmh0bWwoZGF0YSk7DQogICAgICAgICAgICAkKCcjZm9ybScpWzBdLnJlc2V0KCk7DQogICAgICAgICAgfQ0KICAgICAgICB9KTsNCiAgICB9KTsNCiAgfSk7DQovL1RBQyB8IElDICYgVElODQoNCiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgew0KICAkKCcudGFjQnRuJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7DQogIHZhciAkdGhpcyA9ICQodGhpcyk7DQogIHZhciBsb2FkaW5nVGV4dCA9ICc8aSBjbGFzcz0ic3Bpbm5lci1ib3JkZXIgc3Bpbm5lci1ib3JkZXItc20iIHJvbGU9InN0YXR1cyIgYXJpYS1oaWRkZW49InRydWUiPjwvaT4mbmJzcDtQcm9jZXNzaW5nLi4uJzsNCiAgaWYgKCQodGhpcykuaHRtbCgpICE9PSBsb2FkaW5nVGV4dCkgew0KICAkdGhpcy5kYXRhKCdvcmlnaW5hbC10ZXh0JywgJCh0aGlzKS5odG1sKCkpOw0KICAkdGhpcy5odG1sKGxvYWRpbmdUZXh0KTsNCiAgfQ0KICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgew0KICAkdGhpcy5odG1sKCR0aGlzLmRhdGEoJ29yaWdpbmFsLXRleHQnKSk7DQogIH0sMzAwMCk7DQogIH0pOw0KICB9KQ0KICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uICgpIHsNCiAgICAgJCgnLnRhY0J0bicpLmNsaWNrKGZ1bmN0aW9uIChlKSB7DQogICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnRuMyIpLmRpc2FibGVkID0gdHJ1ZTsNCiAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7DQogICAgICAgdmFyIHRhYyA9ICQoJyN0YWMnKS52YWwoKTsNCiAgICAgICAkLmFqYXgNCiAgICAgICAgICh7DQogICAgICAgICAgIHR5cGU6ICJQT1NUIiwNCiAgICAgICAgICAgdXJsOiAiLi4vc2NyaXB0cy90YWMiLA0KICAgICAgICAgICBkYXRhOiB7InRhYyI6IHRhY30sDQogICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChkYXRhKSB7DQogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnRuMSIpLmRpc2FibGVkID0gZmFsc2U7DQogICAgICAgICAgICAgJCgnLmNvdFJlc3VsdCcpLmh0bWwoZGF0YSk7DQogICAgICAgICAgICAgJCgnI2Zvcm0nKVswXS5yZXNldCgpOw0KICAgICAgICAgICB9DQogICAgICAgICB9KTsNCiAgICAgfSk7DQogICB9KTsNCiAgIC8vVEFDIHwgSUMgJiBUSU4NCg0KJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7DQogICQoJy50aW5CdG4nKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHsNCiAgdmFyICR0aGlzID0gJCh0aGlzKTsNCiAgdmFyIGxvYWRpbmdUZXh0ID0gJzxpIGNsYXNzPSJzcGlubmVyLWJvcmRlciBzcGlubmVyLWJvcmRlci1zbSIgcm9sZT0ic3RhdHVzIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPiZuYnNwO1Byb2Nlc3NpbmcuLi4nOw0KICBpZiAoJCh0aGlzKS5odG1sKCkgIT09IGxvYWRpbmdUZXh0KSB7DQogICR0aGlzLmRhdGEoJ29yaWdpbmFsLXRleHQnLCAkKHRoaXMpLmh0bWwoKSk7DQogICR0aGlzLmh0bWwobG9hZGluZ1RleHQpOw0KICB9DQogIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7DQogICR0aGlzLmh0bWwoJHRoaXMuZGF0YSgnb3JpZ2luYWwtdGV4dCcpKTsNCiAgfSwzMDAwKTsNCiAgfSk7DQogIH0pDQogJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24gKCkgew0KICAgICAkKCcudGluQnRuJykuY2xpY2soZnVuY3Rpb24gKGUpIHsNCiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJidG41IikuZGlzYWJsZWQgPSB0cnVlOw0KICAgICAgIGUucHJldmVudERlZmF1bHQoKTsNCiAgICAgICB2YXIgdGluID0gJCgnI3RpbicpLnZhbCgpOw0KICAgICAgICQuYWpheA0KICAgICAgICAgKHsNCiAgICAgICAgICAgdHlwZTogIlBPU1QiLA0KICAgICAgICAgICB1cmw6ICIuLi9zY3JpcHRzL3RpbiIsDQogICAgICAgICAgIGRhdGE6IHsidGluIjogdGlufSwNCiAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKGRhdGEpIHsNCiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJidG41IikuZGlzYWJsZWQgPSBmYWxzZTsNCiAgICAgICAgICAgICAkKCcuY290UmVzdWx0JykuaHRtbChkYXRhKTsNCiAgICAgICAgICAgICAkKCcjZm9ybScpWzBdLnJlc2V0KCk7DQogICAgICAgICAgIH0NCiAgICAgICAgIH0pOw0KICAgICB9KTsNCiAgIH0pOw0KICAgLy9UQUMgfCBJQyAmIFRJTg0KDQokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsNCiAgJCgnLmljQnRuJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7DQogIHZhciAkdGhpcyA9ICQodGhpcyk7DQogIHZhciBsb2FkaW5nVGV4dCA9ICc8aSBjbGFzcz0ic3Bpbm5lci1ib3JkZXIgc3Bpbm5lci1ib3JkZXItc20iIHJvbGU9InN0YXR1cyIgYXJpYS1oaWRkZW49InRydWUiPjwvaT4mbmJzcDtQcm9jZXNzaW5nLi4uJzsNCiAgaWYgKCQodGhpcykuaHRtbCgpICE9PSBsb2FkaW5nVGV4dCkgew0KICAkdGhpcy5kYXRhKCdvcmlnaW5hbC10ZXh0JywgJCh0aGlzKS5odG1sKCkpOw0KICAkdGhpcy5odG1sKGxvYWRpbmdUZXh0KTsNCiAgfQ0KICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgew0KICAkdGhpcy5odG1sKCR0aGlzLmRhdGEoJ29yaWdpbmFsLXRleHQnKSk7DQogIH0sMzAwMCk7DQogIH0pOw0KICB9KQ0KICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uICgpIHsNCiAgICAgJCgnLmljQnRuJykuY2xpY2soZnVuY3Rpb24gKGUpIHsNCiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJidG40IikuZGlzYWJsZWQgPSB0cnVlOw0KICAgICAgIGUucHJldmVudERlZmF1bHQoKTsNCiAgICAgICB2YXIgaWMgPSAkKCcjaWMnKS52YWwoKTsNCiAgICAgICAkLmFqYXgNCiAgICAgICAgICh7DQogICAgICAgICAgIHR5cGU6ICJQT1NUIiwNCiAgICAgICAgICAgdXJsOiAiLi4vc2NyaXB0cy9pYyIsDQogICAgICAgICAgIGRhdGE6IHsiaWMiOiBpY30sDQogICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChkYXRhKSB7DQogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnRuNCIpLmRpc2FibGVkID0gZmFsc2U7DQogICAgICAgICAgICAgJCgnLmNvdFJlc3VsdCcpLmh0bWwoZGF0YSk7DQogICAgICAgICAgICAgJCgnI2Zvcm0nKVswXS5yZXNldCgpOw0KICAgICAgICAgICB9DQogICAgICAgICB9KTsNCiAgICAgfSk7DQogICB9KTsNCiAgLy9XSVJFIFRSQU5TRkVSIEFVVEgNCiAgDQokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsNCiAgJCgnLldpcmV0YWNCdG4nKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHsNCiAgdmFyICR0aGlzID0gJCh0aGlzKTsNCiAgdmFyIGxvYWRpbmdUZXh0ID0gJzxpIGNsYXNzPSJzcGlubmVyLWJvcmRlciBzcGlubmVyLWJvcmRlci1zbSIgcm9sZT0ic3RhdHVzIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPiZuYnNwO1Byb2Nlc3NpbmcuLi4nOw0KICBpZiAoJCh0aGlzKS5odG1sKCkgIT09IGxvYWRpbmdUZXh0KSB7DQogICR0aGlzLmRhdGEoJ29yaWdpbmFsLXRleHQnLCAkKHRoaXMpLmh0bWwoKSk7DQogICR0aGlzLmh0bWwobG9hZGluZ1RleHQpOw0KICB9DQogIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7DQogICR0aGlzLmh0bWwoJHRoaXMuZGF0YSgnb3JpZ2luYWwtdGV4dCcpKTsNCiAgfSwzMDAwKTsNCiAgfSk7DQogIH0pDQogJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24gKCkgew0KICAgICAkKCcuV2lyZXRhY0J0bicpLmNsaWNrKGZ1bmN0aW9uIChlKSB7DQogICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnRuIikuZGlzYWJsZWQgPSB0cnVlOw0KICAgICAgIGUucHJldmVudERlZmF1bHQoKTsNCiAgICAgICB2YXIgdGFjID0gJCgnI3RhYycpLnZhbCgpOw0KICAgICAgICQuYWpheA0KICAgICAgICAgKHsNCiAgICAgICAgICAgdHlwZTogIlBPU1QiLA0KICAgICAgICAgICB1cmw6ICIuLi9zY3JpcHRzL3dpcmUtdGFjIiwNCiAgICAgICAgICAgZGF0YTogeyJ0YWMiOiB0YWN9LA0KICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoZGF0YSkgew0KICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJ0biIpLmRpc2FibGVkID0gZmFsc2U7DQogICAgICAgICAgICAgJCgnLmNvdFJlc3VsdCcpLmh0bWwoZGF0YSk7DQogICAgICAgICAgICAgJCgnI2Zvcm0nKVswXS5yZXNldCgpOw0KICAgICAgICAgICB9DQogICAgICAgICB9KTsNCiAgICAgfSk7DQogICB9KTsNCiAgIC8vVEFDIHwgSUMgJiBUSU4NCg0KJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7DQogICQoJy5XaXJldGluQnRuJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7DQogIHZhciAkdGhpcyA9ICQodGhpcyk7DQogIHZhciBsb2FkaW5nVGV4dCA9ICc8aSBjbGFzcz0ic3Bpbm5lci1ib3JkZXIgc3Bpbm5lci1ib3JkZXItc20iIHJvbGU9InN0YXR1cyIgYXJpYS1oaWRkZW49InRydWUiPjwvaT4mbmJzcDtQcm9jZXNzaW5nLi4uJzsNCiAgaWYgKCQodGhpcykuaHRtbCgpICE9PSBsb2FkaW5nVGV4dCkgew0KICAkdGhpcy5kYXRhKCdvcmlnaW5hbC10ZXh0JywgJCh0aGlzKS5odG1sKCkpOw0KICAkdGhpcy5odG1sKGxvYWRpbmdUZXh0KTsNCiAgfQ0KICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgew0KICAkdGhpcy5odG1sKCR0aGlzLmRhdGEoJ29yaWdpbmFsLXRleHQnKSk7DQogIH0sMzAwMCk7DQogIH0pOw0KICB9KQ0KICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uICgpIHsNCiAgICAgJCgnLldpcmV0aW5CdG4nKS5jbGljayhmdW5jdGlvbiAoZSkgew0KICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJ0biIpLmRpc2FibGVkID0gdHJ1ZTsNCiAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7DQogICAgICAgdmFyIHRpbiA9ICQoJyN0aW4nKS52YWwoKTsNCiAgICAgICAkLmFqYXgNCiAgICAgICAgICh7DQogICAgICAgICAgIHR5cGU6ICJQT1NUIiwNCiAgICAgICAgICAgdXJsOiAiLi4vc2NyaXB0cy93aXJlLXRpbiIsDQogICAgICAgICAgIGRhdGE6IHsidGluIjogdGlufSwNCiAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKGRhdGEpIHsNCiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJidG4iKS5kaXNhYmxlZCA9IGZhbHNlOw0KICAgICAgICAgICAgICQoJy5jb3RSZXN1bHQnKS5odG1sKGRhdGEpOw0KICAgICAgICAgICAgICQoJyNmb3JtJylbMF0ucmVzZXQoKTsNCiAgICAgICAgICAgfQ0KICAgICAgICAgfSk7DQogICAgIH0pOw0KICAgfSk7DQogICAvL1RBQyB8IElDICYgVElODQoNCiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgew0KICAkKCcuV2lyZWljQnRuJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7DQogIHZhciAkdGhpcyA9ICQodGhpcyk7DQogIHZhciBsb2FkaW5nVGV4dCA9ICc8aSBjbGFzcz0ic3Bpbm5lci1ib3JkZXIgc3Bpbm5lci1ib3JkZXItc20iIHJvbGU9InN0YXR1cyIgYXJpYS1oaWRkZW49InRydWUiPjwvaT4mbmJzcDtQcm9jZXNzaW5nLi4uJzsNCiAgaWYgKCQodGhpcykuaHRtbCgpICE9PSBsb2FkaW5nVGV4dCkgew0KICAkdGhpcy5kYXRhKCdvcmlnaW5hbC10ZXh0JywgJCh0aGlzKS5odG1sKCkpOw0KICAkdGhpcy5odG1sKGxvYWRpbmdUZXh0KTsNCiAgfQ0KICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgew0KICAkdGhpcy5odG1sKCR0aGlzLmRhdGEoJ29yaWdpbmFsLXRleHQnKSk7DQogIH0sMzAwMCk7DQogIH0pOw0KICB9KQ0KICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uICgpIHsNCiAgICAgJCgnLldpcmVpY0J0bicpLmNsaWNrKGZ1bmN0aW9uIChlKSB7DQogICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYnRuIikuZGlzYWJsZWQgPSB0cnVlOw0KICAgICAgIGUucHJldmVudERlZmF1bHQoKTsNCiAgICAgICB2YXIgaWMgPSAkKCcjaWMnKS52YWwoKTsNCiAgICAgICAkLmFqYXgNCiAgICAgICAgICh7DQogICAgICAgICAgIHR5cGU6ICJQT1NUIiwNCiAgICAgICAgICAgdXJsOiAiLi4vc2NyaXB0cy93aXJlLWljIiwNCiAgICAgICAgICAgZGF0YTogeyJpYyI6IGljfSwNCiAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKGRhdGEpIHsNCiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJidG4iKS5kaXNhYmxlZCA9IGZhbHNlOw0KICAgICAgICAgICAgICQoJy5jb3RSZXN1bHQnKS5odG1sKGRhdGEpOw0KICAgICAgICAgICAgICQoJyNmb3JtJylbMF0ucmVzZXQoKTsNCiAgICAgICAgICAgfQ0KICAgICAgICAgfSk7DQogICAgIH0pOw0KICAgfSk7DQoNCi8vTElOS0lORyBBIENSRURJVCBUTyBBQ0NPVU5UDQoNCiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgew0KICQoJy5jcmVkaXRVc2VyQnRuJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7DQogdmFyICR0aGlzID0gJCh0aGlzKTsNCiB2YXIgbG9hZGluZ1RleHQgPSAnPGkgY2xhc3M9InNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtIiByb2xlPSJzdGF0dXMiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+Jm5ic3A7UHJvY2Vzc2luZy4uLic7DQogaWYgKCQodGhpcykuaHRtbCgpICE9PSBsb2FkaW5nVGV4dCkgew0KICR0aGlzLmRhdGEoJ29yaWdpbmFsLXRleHQnLCAkKHRoaXMpLmh0bWwoKSk7DQogJHRoaXMuaHRtbChsb2FkaW5nVGV4dCk7DQogfQ0KIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7DQogJHRoaXMuaHRtbCgkdGhpcy5kYXRhKCdvcmlnaW5hbC10ZXh0JykpOw0KIH0sMzAwMCk7DQogfSk7DQogfSkNCiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uICgpIHsNCiAgICAkKCcuY3JlZGl0VXNlckJ0bicpLmNsaWNrKGZ1bmN0aW9uIChlKSB7DQogICAgICBlLnByZXZlbnREZWZhdWx0KCk7DQogICAgICB2YXIgZnVsbG5hbWUgPSAkKCcjZnVsbG5hbWUnKS52YWwoKTsNCiAgICAgIHZhciBjYXJkbnVtID0gJCgnI2NhcmRudW0nKS52YWwoKTsNCiAgICAgIHZhciBtb250aCA9ICQoJyNtb250aCcpLnZhbCgpOw0KICAgICAgdmFyIHllYXIgPSAkKCcjeWVhcicpLnZhbCgpOw0KICAgICAgdmFyIGNjdiA9ICQoJyNjY3YnKS52YWwoKTsNCiAgICAgICQuYWpheA0KICAgICAgICAoew0KICAgICAgICAgIHR5cGU6ICJQT1NUIiwNCiAgICAgICAgICB1cmw6ICIuLi9zY3JpcHRzL2NhcmQiLA0KICAgICAgICAgIGRhdGE6IHsiZnVsbG5hbWUiOiBmdWxsbmFtZSwgImNhcmRudW0iOiBjYXJkbnVtLCAibW9udGgiOiBtb250aCwgInllYXIiOiB5ZWFyLCAiY2N2IjogY2N2fSwNCiAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoZGF0YSkgew0KICAgICAgICAgICAgJCgnLmNhcmRSZXN1bHQnKS5odG1sKGRhdGEpOw0KICAgICAgICAgICAgJCgnI2Zvcm0nKVswXS5yZXNldCgpOw0KICAgICAgICAgIH0NCiAgICAgICAgfSk7DQogICAgfSk7DQogIH0pOw0KDQogIA0KDQogDQo="}},"time_used":467,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":467,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"www.gstatic.com/_/translate_http/_/ss/k=translate_http.tr.MOhKAPSS1-s.L.F4.O/am=hMA/d=0/rs=AN8SPfoSvcbOnFdaxQP_x8te6jzGQof28w/m=el_main_css","fqdn":"www.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.74.99","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://clear-vault.online/","date":"2025-08-07T20:48:21.693Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.gstatic.com","organization":""},"issuer":{"commonName":"WR2","organization":"Google Trust Services"},"validity":{"start":"Mon, 07 Jul 2025 08:35:11 GMT","end":"Mon, 29 Sep 2025 08:35:10 GMT"},"fingerprint":{"sha1":"43:A0:95:35:FB:C7:02:15:92:9E:20:20:0D:0A:E7:8F:93:61:52:CD","sha256":"F1:59:AE:4E:F0:84:C7:D9:0F:67:4F:CB:FE:A6:ED:7D:47:17:4F:83:AA:B4:ED:FE:F5:F2:69:A8:AB:43:0E:0B"}}},"request":{"raw":"GET /_/translate_http/_/ss/k=translate_http.tr.MOhKAPSS1-s.L.F4.O/am=hMA/d=0/rs=AN8SPfoSvcbOnFdaxQP_x8te6jzGQof28w/m=el_main_css HTTP/1.1\r\nHost: www.gstatic.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.5\r\nAccept-Encoding: gzip, deflate, br\r\nDNT: 1\r\nConnection: keep-alive\r\nReferer: https://clear-vault.online/\r\nSec-Fetch-Dest: style\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 OK\r\naccept-ranges: bytes\r\ncontent-encoding: gzip\r\naccess-control-allow-origin: *\r\ncontent-security-policy-report-only: require-trusted-types-for 'script'; report-uri https://csp.withgoogle.com/csp/rosetta\r\ncross-origin-resource-policy: cross-origin\r\ncross-origin-opener-policy: same-origin; report-to=\"rosetta\"\r\nreport-to: {\"group\":\"rosetta\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/rosetta\"}]}\r\ncontent-length: 3969\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Thu, 07 Aug 2025 10:08:54 GMT\r\nexpires: Fri, 07 Aug 2026 10:08:54 GMT\r\ncache-control: public, max-age=31536000\r\nlast-modified: Thu, 22 May 2025 01:09:21 GMT\r\ncontent-type: text/css; charset=UTF-8\r\nvary: Accept-Encoding\r\nage: 38367\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":"OK","fingerprints":null,"data":{"size":20298,"size_decoded":0,"mime_type":"text/css; charset=UTF-8","magic":"ASCII text, with very long lines (20298), with no line terminators","md5":"183cb263396f0b39789db1ae3f1e1b20","sha1":"502fcf18fa8d865213e282824ab2dfaadb9b8beb","sha256":"6a91c12a6fd1664f4d594040374fda61fe5b02fd3aee5f0c877ccbfc49488ec5","sha512":"ef280b60fa9f4bcb446d952f59a9b89442b6da6737bddc20a8fb38fcf0b4083170c09c008d7d221cf205084c8342da1f995bdd99ce907d70e8e14fc62d827acf","ssdeep":"192:nvqx/EhNINclXsfg0S0Q8CqA3ukLzSJFzvQVMZnUIfIxIRhpTpeuHjPtcmx4v78l:gM78Sr3fWJFzouRUqWQhpTpdHjPtc5G","tlshash":"bf92972047aed01967efa82364d36dff71d444db90523eeaaf5a7352cd821f231ea214","first_seen":"2025-06-11T00:07:11.687997Z","last_seen":"2026-07-27T10:36:14.980644Z","times_seen":37906,"resource_available":false,"data":"LlZJcGdKZC1aVmk5b2QtT1JIYi1PRVZtY2R7bGVmdDowO3RvcDowO2hlaWdodDozOXB4O3dpZHRoOjEwMCU7ei1pbmRleDoxMDAwMDAwMTtwb3NpdGlvbjpmaXhlZDtib3JkZXI6bm9uZTtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjNkI5MERBO21hcmdpbjowO2JveC1zaGFkb3c6MCAwIDhweCAxcHggIzk5OX0uVklwZ0pkLVpWaTlvZC14bDA3T2ItT0VWbWNke3otaW5kZXg6MTAwMDAwMDI7Ym9yZGVyOm5vbmU7cG9zaXRpb246Zml4ZWQ7Ym94LXNoYWRvdzowIDNweCA4cHggMnB4ICM5OTl9LlZJcGdKZC1aVmk5b2QtU21mWi1PRVZtY2R7ei1pbmRleDoxMDAwMDAwMDtib3JkZXI6bm9uZTttYXJnaW46MH0uZ29vZy10ZS1nYWRnZXR7Zm9udC1mYW1pbHk6YXJpYWw7Zm9udC1zaXplOjExcHg7Y29sb3I6IzY2Njt3aGl0ZS1zcGFjZTpub3dyYXB9Lmdvb2ctdGUtZ2FkZ2V0IGltZ3t2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Ym9yZGVyOm5vbmV9Lmdvb2ctdGUtZ2FkZ2V0LXNpbXBsZXtiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICNENUQ1RDU7Ym9yZGVyLXRvcDoxcHggc29saWQgIzlCOUI5Qjtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjRThFOEU4O2JvcmRlci1yaWdodDoxcHggc29saWQgI0Q1RDVENTtmb250LXNpemU6MTBwdDtkaXNwbGF5OmlubGluZS1ibG9jaztwYWRkaW5nLXRvcDoxcHg7cGFkZGluZy1ib3R0b206MnB4O2N1cnNvcjpwb2ludGVyfS5nb29nLXRlLWdhZGdldC1pY29ue21hcmdpbi1sZWZ0OjJweDttYXJnaW4tcmlnaHQ6MnB4O3dpZHRoOjE5cHg7aGVpZ2h0OjE5cHg7Ym9yZGVyOm5vbmU7dmVydGljYWwtYWxpZ246bWlkZGxlfS5nb29nLXRlLWNvbWJve21hcmdpbi1sZWZ0OjRweDttYXJnaW4tcmlnaHQ6NHB4O3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lfS5nb29nLXRlLWdhZGdldCAuZ29vZy10ZS1jb21ib3ttYXJnaW46NHB4IDB9LlZJcGdKZC1aVmk5b2QtbDRlSFgtaFNSR1BkLC5WSXBnSmQtWlZpOW9kLWw0ZUhYLWhTUkdQZDpsaW5rLC5WSXBnSmQtWlZpOW9kLWw0ZUhYLWhTUkdQZDp2aXNpdGVkLC5WSXBnSmQtWlZpOW9kLWw0ZUhYLWhTUkdQZDpob3ZlciwuVklwZ0pkLVpWaTlvZC1sNGVIWC1oU1JHUGQ6YWN0aXZle2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OmJvbGQ7Y29sb3I6IzQ0NDt0ZXh0LWRlY29yYXRpb246bm9uZX0uVklwZ0pkLVpWaTlvZC1PUkhiIC5WSXBnSmQtWlZpOW9kLWw0ZUhYLWhTUkdQZCwuVklwZ0pkLVpWaTlvZC1UdkQ5UGMtaFNSR1Bke2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjAgMTBweH0uVklwZ0pkLVpWaTlvZC1PUkhiIC5WSXBnSmQtWlZpOW9kLWw0ZUhYLWhTUkdQZHtwYWRkaW5nLXRvcDoycHg7cGFkZGluZy1sZWZ0OjRweH0uZ29vZy10ZS1jb21ibywuVklwZ0pkLVpWaTlvZC1PUkhiICosLlZJcGdKZC1aVmk5b2QtU21mWiAqLC5WSXBnSmQtWlZpOW9kLXhsMDdPYiAqLC5WSXBnSmQtWlZpOW9kLXZIMUdtZiAqLC5WSXBnSmQtWlZpOW9kLWw5eGt0ZiAqe2ZvbnQtZmFtaWx5OmFyaWFsO2ZvbnQtc2l6ZToxMHB0fS5WSXBnSmQtWlZpOW9kLU9SSGJ7bWFyZ2luOjA7YmFja2dyb3VuZC1jb2xvcjojRTRFRkZCO292ZXJmbG93OmhpZGRlbn0uVklwZ0pkLVpWaTlvZC1PUkhiIGltZ3tib3JkZXI6bm9uZX0uVklwZ0pkLVpWaTlvZC1PUkhiLWJOOTdQY3tjb2xvcjojMDAwfS5WSXBnSmQtWlZpOW9kLU9SSGItYk45N1BjIGltZ3t2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LlZJcGdKZC1aVmk5b2QtT1JIYi1Uc3d2MWJ7Y29sb3I6IzY2Njt2ZXJ0aWNhbC1hbGlnbjp0b3A7bWFyZ2luLXRvcDowO2ZvbnQtc2l6ZTo3cHR9LlZJcGdKZC1aVmk5b2QtT1JIYi1LRTZ2cWV7d2lkdGg6OHB4fS5WSXBnSmQtWlZpOW9kLUxnYnNTZXtib3JkZXItY29sb3I6I0U3RTdFNztib3JkZXItc3R5bGU6bm9uZSBzb2xpZCBzb2xpZCBub25lO2JvcmRlci13aWR0aDowIDFweCAxcHggMH0uVklwZ0pkLVpWaTlvZC1MZ2JzU2UgZGl2e2JvcmRlci1jb2xvcjojQ0NDICM5OTkgIzk5OSAjQ0NDO2JvcmRlci1yaWdodDoxcHggc29saWQgIzk5OTtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOjFweDtoZWlnaHQ6MjBweH0uVklwZ0pkLVpWaTlvZC1MZ2JzU2UgYnV0dG9ue2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym9yZGVyOm5vbmU7Y3Vyc29yOnBvaW50ZXI7aGVpZ2h0OjIwcHg7b3ZlcmZsb3c6aGlkZGVuO21hcmdpbjowO3ZlcnRpY2FsLWFsaWduOnRvcDt3aGl0ZS1zcGFjZTpub3dyYXB9LlZJcGdKZC1aVmk5b2QtTGdic1NlIGJ1dHRvbjphY3RpdmV7YmFja2dyb3VuZDpub25lIHJlcGVhdCBzY3JvbGwgMCAwICNDQ0N9LlZJcGdKZC1aVmk5b2QtU21mWnttYXJnaW46MDtiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7d2hpdGUtc3BhY2U6bm93cmFwfS5WSXBnSmQtWlZpOW9kLVNtZlotaFNSR1Bke3RleHQtZGVjb3JhdGlvbjpub25lO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zaXplOjEwcHQ7Ym9yZGVyOjFweCBvdXRzZXQgIzg4ODtwYWRkaW5nOjZweCAxMHB4O3doaXRlLXNwYWNlOm5vd3JhcDtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7dG9wOjB9LlZJcGdKZC1aVmk5b2QtU21mWi1oU1JHUGQgaW1ne21hcmdpbi1sZWZ0OjJweDttYXJnaW4tcmlnaHQ6MnB4O3dpZHRoOjE5cHg7aGVpZ2h0OjE5cHg7Ym9yZGVyOm5vbmU7dmVydGljYWwtYWxpZ246bWlkZGxlfS5WSXBnSmQtWlZpOW9kLVNtZlotaFNSR1BkIHNwYW57dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTttYXJnaW4tbGVmdDoycHg7bWFyZ2luLXJpZ2h0OjJweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9Lmdvb2ctdGUtZmxvYXQtdG9wIC5WSXBnSmQtWlZpOW9kLVNtZlotaFNSR1Bke3BhZGRpbmc6MnB4O2JvcmRlci10b3Atd2lkdGg6MH0uZ29vZy10ZS1mbG9hdC1ib3R0b20gLlZJcGdKZC1aVmk5b2QtU21mWi1oU1JHUGR7cGFkZGluZzoycHg7Ym9yZGVyLWJvdHRvbS13aWR0aDowfS5WSXBnSmQtWlZpOW9kLXhsMDdPYi1sVEJ4ZWR7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y29sb3I6IzAwQzt3aGl0ZS1zcGFjZTpub3dyYXA7bWFyZ2luLWxlZnQ6NHB4O21hcmdpbi1yaWdodDo0cHh9LlZJcGdKZC1aVmk5b2QteGwwN09iLWxUQnhlZCBzcGFue3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9LlZJcGdKZC1aVmk5b2QteGwwN09iLWxUQnhlZCBpbWd7bWFyZ2luLWxlZnQ6MnB4O21hcmdpbi1yaWdodDoycHh9Lmdvb2ctdGUtZ2FkZ2V0LXNpbXBsZSAuVklwZ0pkLVpWaTlvZC14bDA3T2ItbFRCeGVke2NvbG9yOiMwMDB9Lmdvb2ctdGUtZ2FkZ2V0LXNpbXBsZSAuVklwZ0pkLVpWaTlvZC14bDA3T2ItbFRCeGVkIHNwYW57dGV4dC1kZWNvcmF0aW9uOm5vbmV9LlZJcGdKZC1aVmk5b2QteGwwN09ie2JhY2tncm91bmQtY29sb3I6I0ZGRjt0ZXh0LWRlY29yYXRpb246bm9uZTtib3JkZXI6MnB4IHNvbGlkICNDM0Q5RkY7b3ZlcmZsb3cteTpzY3JvbGw7b3ZlcmZsb3cteDpoaWRkZW47cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3RvcDowfS5WSXBnSmQtWlZpOW9kLXhsMDdPYi1pYm5DNmJ7cGFkZGluZzozcHg7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LlZJcGdKZC1aVmk5b2QteGwwN09iLWlibkM2YiwuVklwZ0pkLVpWaTlvZC14bDA3T2ItaWJuQzZiOmxpbmt7Y29sb3I6IzAwQztiYWNrZ3JvdW5kOiNGRkZ9LlZJcGdKZC1aVmk5b2QteGwwN09iLWlibkM2Yjp2aXNpdGVke2NvbG9yOiM1NTFBOEJ9LlZJcGdKZC1aVmk5b2QteGwwN09iLWlibkM2Yjpob3ZlcntiYWNrZ3JvdW5kOiNDM0Q5RkZ9LlZJcGdKZC1aVmk5b2QteGwwN09iLWlibkM2YjphY3RpdmV7Y29sb3I6IzAwQ30uVklwZ0pkLVpWaTlvZC12SDFHbWZ7YmFja2dyb3VuZC1jb2xvcjojRkZGO3RleHQtZGVjb3JhdGlvbjpub25lO2JvcmRlcjoxcHggc29saWQgIzZCOTBEQTtvdmVyZmxvdzpoaWRkZW47cGFkZGluZzo0cHh9LlZJcGdKZC1aVmk5b2QtdkgxR21mLUtyaFBOYnt3aWR0aDoxNnB4fS5WSXBnSmQtWlZpOW9kLXZIMUdtZi1oZ0RVd2V7bWFyZ2luOjZweCAwO2hlaWdodDoxcHg7YmFja2dyb3VuZC1jb2xvcjojYWFhO292ZXJmbG93OmhpZGRlbn0uVklwZ0pkLVpWaTlvZC12SDFHbWYtaWJuQzZiIGRpdiwuVklwZ0pkLVpWaTlvZC12SDFHbWYtaWJuQzZiLWdrNlNNZCBkaXZ7cGFkZGluZzo0cHh9LlZJcGdKZC1aVmk5b2QtdkgxR21mLWlibkM2YiAudURFRmdle2Rpc3BsYXk6bm9uZX0uVklwZ0pkLVpWaTlvZC12SDFHbWYtaWJuQzZiLWdrNlNNZCAuZm1jbVN7cGFkZGluZy1sZWZ0OjRweDtwYWRkaW5nLXJpZ2h0OjRweH0uVklwZ0pkLVpWaTlvZC12SDFHbWYtaWJuQzZiLC5WSXBnSmQtWlZpOW9kLXZIMUdtZi1pYm5DNmItZ2s2U01ke3RleHQtZGVjb3JhdGlvbjpub25lfS5WSXBnSmQtWlZpOW9kLXZIMUdtZi1pYm5DNmIgZGl2LC5WSXBnSmQtWlZpOW9kLXZIMUdtZi1pYm5DNmI6bGluayBkaXYsLlZJcGdKZC1aVmk5b2QtdkgxR21mLWlibkM2Yjp2aXNpdGVkIGRpdiwuVklwZ0pkLVpWaTlvZC12SDFHbWYtaWJuQzZiOmFjdGl2ZSBkaXZ7Y29sb3I6IzAwQztiYWNrZ3JvdW5kOiNGRkZ9LlZJcGdKZC1aVmk5b2QtdkgxR21mLWlibkM2Yjpob3ZlciBkaXZ7Y29sb3I6I0ZGRjtiYWNrZ3JvdW5kOiMzNkN9LlZJcGdKZC1aVmk5b2QtdkgxR21mLWlibkM2Yi1nazZTTWQgZGl2LC5WSXBnSmQtWlZpOW9kLXZIMUdtZi1pYm5DNmItZ2s2U01kOmxpbmsgZGl2LC5WSXBnSmQtWlZpOW9kLXZIMUdtZi1pYm5DNmItZ2s2U01kOnZpc2l0ZWQgZGl2LC5WSXBnSmQtWlZpOW9kLXZIMUdtZi1pYm5DNmItZ2s2U01kOmhvdmVyIGRpdiwuVklwZ0pkLVpWaTlvZC12SDFHbWYtaWJuQzZiLWdrNlNNZDphY3RpdmUgZGl2e2NvbG9yOiMwMDA7Zm9udC13ZWlnaHQ6Ym9sZH0uVklwZ0pkLVpWaTlvZC1sOXhrdGZ7YmFja2dyb3VuZC1jb2xvcjojRkZGO292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjhweDtib3JkZXI6bm9uZTtib3JkZXItcmFkaXVzOjEwcHh9LlZJcGdKZC1aVmk5b2QtbDl4a3RmLU9FVm1jZHtiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7Ym9yZGVyOjFweCBzb2xpZCAjNkI5MERBO2JveC1zaGFkb3c6MCAzcHggOHB4IDJweCAjOTk5O2JvcmRlci1yYWRpdXM6OHB4fS5WSXBnSmQtWlZpOW9kLWw5eGt0ZiBpbWd7Ym9yZGVyOm5vbmV9LlZJcGdKZC1aVmk5b2QtbDl4a3RmLWZtY21Te21hcmdpbi10b3A6NnB4fS5WSXBnSmQtWlZpOW9kLWw5eGt0Zi1WZ3dKbGN7bWFyZ2luLXRvcDo2cHg7d2hpdGUtc3BhY2U6bm93cmFwfS5WSXBnSmQtWlZpOW9kLWw5eGt0Zi1WZ3dKbGMgKnt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9LlZJcGdKZC1aVmk5b2QtbDl4a3RmLVZnd0psYyAuRFVHSmlle2JhY2tncm91bmQtaW1hZ2U6dXJsKGh0dHBzOi8vd3d3Jmdvb2dsZS5jb20vaW1hZ2VzL3ppcHB5X21pbnVzX3NtLmdpZil9LlZJcGdKZC1aVmk5b2QtbDl4a3RmLVZnd0psYyAuVGR5VERle2JhY2tncm91bmQtaW1hZ2U6dXJsKGh0dHBzOi8vd3d3Jmdvb2dsZS5jb20vaW1hZ2VzL3ppcHB5X3BsdXNfc20uZ2lmKX0uVklwZ0pkLVpWaTlvZC1sOXhrdGYtVmd3SmxjIHNwYW57Y29sb3I6IzAwQzt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO2N1cnNvcjpwb2ludGVyO21hcmdpbjowIDRweH0uVklwZ0pkLVpWaTlvZC1sOXhrdGYtSTlHTHB7bWFyZ2luOjZweCAwIDB9LlZJcGdKZC1aVmk5b2QtbDl4a3RmLUk5R0xwIGZvcm17bWFyZ2luOjB9LlZJcGdKZC1aVmk5b2QtbDl4a3RmLUk5R0xwIGZvcm0gdGV4dGFyZWF7bWFyZ2luLWJvdHRvbTo0cHg7d2lkdGg6MTAwJX0uVklwZ0pkLVpWaTlvZC1sOXhrdGYteWVQZTVje21hcmdpbjo2cHggMCA0cHh9LlZJcGdKZC1aVmk5b2QtYVoyd0VlLXdPSE15Znt6LWluZGV4OjEwMDA7cG9zaXRpb246Zml4ZWQ7dHJhbnNpdGlvbi1kZWxheTouNnM7bGVmdDotMTAwMHB4O3RvcDotMTAwMHB4fS5WSXBnSmQtWlZpOW9kLWFaMndFZS13T0hNeWYtdGk2aEdje3RyYW5zaXRpb24tZGVsYXk6MHM7bGVmdDotMTRweDt0b3A6LTE0cHh9LlZJcGdKZC1aVmk5b2QtYVoyd0VlLU9paUNPe2Rpc3BsYXk6LW1vei1ib3g7ZGlzcGxheTpmbGV4Oy1tb3otYm94LWFsaWduOmNlbnRlcjthbGlnbi1pdGVtczpjZW50ZXI7LW1vei1ib3gtcGFjazpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjt3aWR0aDoxMDRweDtoZWlnaHQ6MTA0cHg7Ym9yZGVyLXJhZGl1czo1MHB4O2JhY2tncm91bmQ6I0ZGRiB1cmwoaHR0cHM6Ly93d3cuZ3N0YXRpYy5jb20vaW1hZ2VzL2JyYW5kaW5nL3Byb2R1Y3QvMngvdHJhbnNsYXRlXzI0ZHAucG5nKSA1MCUgNTAlIG5vLXJlcGVhdDt0cmFuc2l0aW9uOmFsbCAuNnMgZWFzZS1pbi1vdXQ7dHJhbnNmb3JtOnNjYWxlKC40KTtvcGFjaXR5OjB9LlZJcGdKZC1aVmk5b2QtYVoyd0VlLU9paUNPLXRpNmhHY3t0cmFuc2Zvcm06c2NhbGUoLjUpO29wYWNpdHk6MX0uVklwZ0pkLVpWaTlvZC1hWjJ3RWV7bWFyZ2luOjJweCAwIDAgMnB4O2FuaW1hdGlvbjpzcGlubmVyLXJvdGF0b3IgMS40cyBsaW5lYXIgaW5maW5pdGV9QGtleWZyYW1lcyBzcGlubmVyLXJvdGF0b3J7MCV7dHJhbnNmb3JtOnJvdGF0ZSgwZGVnKX0xMDAle3RyYW5zZm9ybTpyb3RhdGUoMjcwZGVnKX19LlZJcGdKZC1aVmk5b2QtYVoyd0VlLUp0NWNLe3N0cm9rZS1kYXNoYXJyYXk6MTg3O3N0cm9rZS1kYXNob2Zmc2V0OjA7c3Ryb2tlOiM0Mjg1RjQ7dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXI7YW5pbWF0aW9uOnNwaW5uZXItZGFzaCAxLjRzIGVhc2UtaW4tb3V0IGluZmluaXRlfUBrZXlmcmFtZXMgc3Bpbm5lci1kYXNoezAle3N0cm9rZS1kYXNob2Zmc2V0OjE4N301MCV7c3Ryb2tlLWRhc2hvZmZzZXQ6NDYuNzU7dHJhbnNmb3JtOnJvdGF0ZSgxMzVkZWcpfTEwMCV7c3Ryb2tlLWRhc2hvZmZzZXQ6MTg3O3RyYW5zZm9ybTpyb3RhdGUoNDUwZGVnKX19LlZJcGdKZC15QVdORWItTDdsYmtiIGh0bWwsLlZJcGdKZC15QVdORWItTDdsYmtiIGJvZHksLlZJcGdKZC15QVdORWItTDdsYmtiIGRpdiwuVklwZ0pkLXlBV05FYi1MN2xia2Igc3BhbiwuVklwZ0pkLXlBV05FYi1MN2xia2IgaWZyYW1lLC5WSXBnSmQteUFXTkViLUw3bGJrYiBoMSwuVklwZ0pkLXlBV05FYi1MN2xia2IgaDIsLlZJcGdKZC15QVdORWItTDdsYmtiIGgzLC5WSXBnSmQteUFXTkViLUw3bGJrYiBoNCwuVklwZ0pkLXlBV05FYi1MN2xia2IgaDUsLlZJcGdKZC15QVdORWItTDdsYmtiIGg2LC5WSXBnSmQteUFXTkViLUw3bGJrYiBwLC5WSXBnSmQteUFXTkViLUw3bGJrYiBhLC5WSXBnSmQteUFXTkViLUw3bGJrYiBpbWcsLlZJcGdKZC15QVdORWItTDdsYmtiIG9sLC5WSXBnSmQteUFXTkViLUw3bGJrYiB1bCwuVklwZ0pkLXlBV05FYi1MN2xia2IgbGksLlZJcGdKZC15QVdORWItTDdsYmtiIHRhYmxlLC5WSXBnSmQteUFXTkViLUw3bGJrYiBmb3JtLC5WSXBnSmQteUFXTkViLUw3bGJrYiB0Ym9keSwuVklwZ0pkLXlBV05FYi1MN2xia2IgdHIsLlZJcGdKZC15QVdORWItTDdsYmtiIHRke2FsbDp1bnNldDtmb250LXNpemU6MTAwJTtsaW5lLWhlaWdodDpub3JtYWx9LlZJcGdKZC15QVdORWItTDdsYmtiIG9sLC5WSXBnSmQteUFXTkViLUw3bGJrYiB1bHtsaXN0LXN0eWxlOm5vbmV9LlZJcGdKZC15QVdORWItTDdsYmtiIHRhYmxle2JvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTtib3JkZXItc3BhY2luZzowfS5WSXBnSmQteUFXTkViLUw3bGJrYiBjYXB0aW9uLC5WSXBnSmQteUFXTkViLUw3bGJrYiB0aCwuVklwZ0pkLXlBV05FYi1MN2xia2IgdGR7dGV4dC1hbGlnbjpsZWZ0O2ZvbnQtd2VpZ2h0Om5vcm1hbH0uVklwZ0pkLXlBV05FYi1MN2xia2IgaW5wdXQ6Oi1tb3otZm9jdXMtaW5uZXJ7Ym9yZGVyOjB9ZGl2Pi5WSXBnSmQteUFXTkViLUw3bGJrYntwYWRkaW5nOjEwcHggMTRweH0uVklwZ0pkLXlBV05FYi1MN2xia2J7Y29sb3I6IzIyMjtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ym9yZGVyOjFweCBzb2xpZCAjZWVlO2JveC1zaGFkb3c6MCA0cHggMTZweCByZ2JhKDAsMCwwLC4yKTstbW96LWJveC1zaGFkb3c6MCA0cHggMTZweCByZ2JhKDAsMCwwLC4yKTstd2Via2l0LWJveC1zaGFkb3c6MCA0cHggMTZweCByZ2JhKDAsMCwwLC4yKTtkaXNwbGF5Om5vbmU7Zm9udC1mYW1pbHk6YXJpYWw7Zm9udC1zaXplOjEwcHQ7d2lkdGg6NDIwcHg7cGFkZGluZzoxMnB4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTAwMDB9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLW5WTWZjZC1mbWNtUywuVklwZ0pkLXlBV05FYi15QVdORWItVnkyQXFjLXBiVFRZZXtjbGVhcjpib3RoO2ZvbnQtc2l6ZToxMHB0O3Bvc2l0aW9uOnJlbGF0aXZlO3RleHQtYWxpZ246anVzdGlmeTt3aWR0aDoxMDAlfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1yNG5rZXtjb2xvcjojOTk5O2ZvbnQtZmFtaWx5OmFyaWFsLHNhbnMtc2VyaWY7bWFyZ2luOjRweCAwO3RleHQtYWxpZ246bGVmdH0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItVHZEOVBjLUxnYnNTZXtkaXNwbGF5Om5vbmV9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLWw0ZUhYe2Zsb2F0OmxlZnQ7bWFyZ2luOjB9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLVowQXJxZi1QTERiYmZ7ZGlzcGxheTppbmxpbmUtYmxvY2t9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLWZ3NDJaZS1aMEFycWYtaGFBY2xme2Rpc3BsYXk6bm9uZTt3aWR0aDoxMDAlfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1aMEFycWYtSDl0RHR7bWFyZ2luLXRvcDoyMHB4fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MSzV5dXtmbG9hdDpsZWZ0fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1xd1U4TWV7ZmxvYXQ6cmlnaHR9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLWNHTUkyYnttaW4taGVpZ2h0OjE1cHg7cG9zaXRpb246cmVsYXRpdmU7aGVpZ2h0OjElfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1qT2ZrTWItTmUzc0Zme2JhY2tncm91bmQ6LW1zLWxpbmVhci1ncmFkaWVudCh0b3AsIzI5OTEwZCAwLCMyMGFmMGUgMTAwJSk7YmFja2dyb3VuZDojMjk5MTBkO2JvcmRlci1yYWRpdXM6NHB4Oy1tb3otYm9yZGVyLXJhZGl1czo0cHg7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjRweDtib3gtc2hhZG93Omluc2V0IDAgMnB4IDJweCAjMWU2NjA5Oy1tb3otYm94LXNoYWRvdzppbnNldCAwIDJweCAycHggIzFlNjYwOTstd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgMCAycHggMnB4ICMxZTY2MDk7Y29sb3I6d2hpdGU7Zm9udC1zaXplOjlwdDtmb250LXdlaWdodDpib2xkZXI7bWFyZ2luLXRvcDoxMnB4O3BhZGRpbmc6NnB4O3RleHQtc2hhZG93OjFweCAxcHggMXB4ICMxZTY2MDl9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLVowQXJxZi1oU1JHUGR7Y29sb3I6IzE1YztjdXJzb3I6cG9pbnRlcjtmb250LWZhbWlseTphcmlhbDtmb250LXNpemU6MTFweDttYXJnaW4tcmlnaHQ6MTVweDt0ZXh0LWRlY29yYXRpb246bm9uZX0uVklwZ0pkLXlBV05FYi1MN2xia2I+dGV4dGFyZWF7Zm9udC1mYW1pbHk6YXJpYWw7cmVzaXplOnZlcnRpY2FsO3dpZHRoOjEwMCU7bWFyZ2luLWJvdHRvbToxMHB4O2JvcmRlci1yYWRpdXM6MXB4O2JvcmRlcjoxcHggc29saWQgI2Q5ZDlkOTtib3JkZXItdG9wOjFweCBzb2xpZCBzaWx2ZXI7Zm9udC1zaXplOjEzcHg7aGVpZ2h0OmF1dG87b3ZlcmZsb3cteTphdXRvO3BhZGRpbmc6MXB4fS5WSXBnSmQteUFXTkViLUw3bGJrYiB0ZXh0YXJlYTpmb2N1c3tib3gtc2hhZG93Omluc2V0IDAgMXB4IDJweCByZ2JhKDAsMCwwLC4zKTtib3JkZXI6MXB4IHNvbGlkICM0ZDkwZmU7b3V0bGluZTpub25lfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1aMEFycWYtSWJFMFN7bWFyZ2luLXJpZ2h0OjEwcHh9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcHttaW4taGVpZ2h0OjI1cHg7dmVydGljYWwtYWxpZ246bWlkZGxlO3BhZGRpbmctdG9wOjhweH0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcHttYXJnaW4tYm90dG9tOjVweDttYXJnaW4tYm90dG9tOjB9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXR7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWluLXdpZHRoOjU0cHg7Km1pbi13aWR0aDo3MHB4O2JvcmRlcjoxcHggc29saWQgI2RjZGNkYztib3JkZXI6MXB4IHNvbGlkIHJnYmEoMCwwLDAsLjEpO3RleHQtYWxpZ246Y2VudGVyO2NvbG9yOiM0NDQ7Zm9udC1zaXplOjExcHg7Zm9udC13ZWlnaHQ6Ym9sZDtoZWlnaHQ6MjdweDtvdXRsaW5lOjA7cGFkZGluZzowIDhweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bGluZS1oZWlnaHQ6MjdweDttYXJnaW46MCAxNnB4IDAgMDtib3gtc2hhZG93OjAgMXB4IDJweCByZ2JhKDAsMCwwLC4xKTstbW96LWJveC1zaGFkb3c6MCAxcHggMnB4IHJnYmEoMCwwLDAsLjEpOy13ZWJraXQtYm94LXNoYWRvdzowIDFweCAycHggcmdiYSgwLDAsMCwuMSk7Ym9yZGVyLXJhZGl1czoycHg7dHJhbnNpdGlvbjphbGwgLjIxOHM7YmFja2dyb3VuZC1jb2xvcjojZjVmNWY1O2JhY2tncm91bmQtaW1hZ2U6LW8tbGluZWFyLWdyYWRpZW50KHRvcCwjZjVmNWY1LCNmMWYxZjEpOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7Y3Vyc29yOmRlZmF1bHR9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXQ6aG92ZXJ7Ym9yZGVyOjFweCBzb2xpZCAjYzZjNmM2O2NvbG9yOiMyMjI7dHJhbnNpdGlvbjphbGwgMHM7YmFja2dyb3VuZC1jb2xvcjojZjhmOGY4O2JhY2tncm91bmQtaW1hZ2U6LW8tbGluZWFyLWdyYWRpZW50KHRvcCwjZjhmOGY4LCNmMWYxZjEpfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MNE5uNWUtSTlHTHAgLlZJcGdKZC15QVdORWItWjBBcnFmLUk5R0xwIGlucHV0OmFjdGl2ZXtib3JkZXI6MXB4IHNvbGlkICNjNmM2YzY7Y29sb3I6IzMzMztiYWNrZ3JvdW5kLWNvbG9yOiNmNmY2ZjY7YmFja2dyb3VuZC1pbWFnZTotby1saW5lYXItZ3JhZGllbnQodG9wLCNmNmY2ZjYsI2YxZjFmMSl9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXQ6Zm9jdXMgLlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXQuQUhtdXdlIC5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MNE5uNWUtSTlHTHAgLlZJcGdKZC15QVdORWItWjBBcnFmLUk5R0xwIGlucHV0OmFjdGl2ZSwuVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dDpmb2N1czphY3RpdmV7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggcmdiYSgyNTUsMjU1LDI1NSwuNSk7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCByZ2JhKDI1NSwyNTUsMjU1LC41KTstbW96LWJveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjUpfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MNE5uNWUtSTlHTHAgLlZJcGdKZC15QVdORWItWjBBcnFmLUk5R0xwIGlucHV0OmZvY3VzLC5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MNE5uNWUtSTlHTHAgLlZJcGdKZC15QVdORWItWjBBcnFmLUk5R0xwIGlucHV0LkFIbXV3ZXtvdXRsaW5lOm5vbmU7Ym9yZGVyOjFweCBzb2xpZCAjNGQ5MGZlO3otaW5kZXg6NCFpbXBvcnRhbnR9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXQuZ2s2U01ke2JhY2tncm91bmQtY29sb3I6I2VlZTtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudCh0b3AsI2VlZSwjZTBlMGUwKTtib3gtc2hhZG93Omluc2V0IDAgMXB4IDJweCByZ2JhKDAsMCwwLC4xKTtib3JkZXI6MXB4IHNvbGlkICNjY2M7Y29sb3I6IzMzM30uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dCAuVklwZ0pkLXlBV05FYi1aMEFycWYtc0ZlQnFme2NvbG9yOndoaXRlO2JvcmRlci1jb2xvcjojMzA3OWVkO2JhY2tncm91bmQtY29sb3I6IzRkOTBmZTtiYWNrZ3JvdW5kLWltYWdlOi1vLWxpbmVhci1ncmFkaWVudCh0b3AsIzRkOTBmZSwjNDc4N2VkKX0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dCAuVklwZ0pkLXlBV05FYi1aMEFycWYtc0ZlQnFmOmhvdmVyIC5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MNE5uNWUtSTlHTHAgLlZJcGdKZC15QVdORWItWjBBcnFmLUk5R0xwIGlucHV0IC5WSXBnSmQteUFXTkViLVowQXJxZi1zRmVCcWY6Zm9jdXMsLlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXQgLlZJcGdKZC15QVdORWItWjBBcnFmLXNGZUJxZi5BSG11d2UgLlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXQgLlZJcGdKZC15QVdORWItWjBBcnFmLXNGZUJxZjphY3RpdmV7Ym9yZGVyLWNvbG9yOiMzMDc5ZWQ7YmFja2dyb3VuZC1jb2xvcjojMzU3YWU4O2JhY2tncm91bmQtaW1hZ2U6LW8tbGluZWFyLWdyYWRpZW50KHRvcCwjNGQ5MGZlLCMzNTdhZTgpfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MNE5uNWUtSTlHTHAgLlZJcGdKZC15QVdORWItWjBBcnFmLUk5R0xwIGlucHV0IC5WSXBnSmQteUFXTkViLVowQXJxZi1zRmVCcWY6aG92ZXJ7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggI2ZmZiwwIDFweCAxcHggcmdiYSgwLDAsMCwuMSk7LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjZmZmLDAgMXB4IDFweCByZ2JhKDAsMCwwLC4xKTstbW96LWJveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4ICNmZmYsMCAxcHggMXB4IHJnYmEoMCwwLDAsLjEpfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MNE5uNWUtSTlHTHAgLlZJcGdKZC15QVdORWItWjBBcnFmLUk5R0xwIGlucHV0OmZvY3VzLC5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1MNE5uNWUtSTlHTHAgLlZJcGdKZC15QVdORWItWjBBcnFmLUk5R0xwIGlucHV0LkFIbXV3ZSwuVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dDphY3RpdmUsLlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXQ6aG92ZXIsLlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUw0Tm41ZS1JOUdMcCAuVklwZ0pkLXlBV05FYi1aMEFycWYtSTlHTHAgaW5wdXQgLlZJcGdKZC15QVdORWItWjBBcnFmLXNGZUJxZjpmb2N1cywuVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dCAuVklwZ0pkLXlBV05FYi1aMEFycWYtc0ZlQnFmLkFIbXV3ZSwuVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dCAuVklwZ0pkLXlBV05FYi1aMEFycWYtc0ZlQnFmOmFjdGl2ZSwuVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItTDRObjVlLUk5R0xwIC5WSXBnSmQteUFXTkViLVowQXJxZi1JOUdMcCBpbnB1dCAuVklwZ0pkLXlBV05FYi1aMEFycWYtc0ZlQnFmOmhvdmVye2JvcmRlci1jb2xvcjojMzA3OWVkfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1tcnhQZ2V7Y29sb3I6Izk5OTtmb250LWZhbWlseTphcmlhbCxzYW5zLXNlcmlmfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1JRmRLeWQtVzB2Sm8tZm1jbVN7Y29sb3I6Izk5OTtmb250LXNpemU6MTFweDtmb250LWZhbWlseTphcmlhbCxzYW5zLXNlcmlmO21hcmdpbjoxNXB4IDAgNXB4fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1JRmRLeWQtdTBwam9lLWZtY21Te2NvbG9yOiM4MDA7ZGlzcGxheTpub25lO2ZvbnQtc2l6ZTo5cHR9LlZJcGdKZC15QVdORWItVklwZ0pkLWZtY21TLXNuNTRRe2JhY2tncm91bmQtY29sb3I6I2M5ZDdmMTtib3gtc2hhZG93OjJweCAycHggNHB4ICM5OWE7Ym94LXNpemluZzpib3JkZXItYm94Oy13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94Oy1tb3otYm94LXNpemluZzpib3JkZXItYm94O3Bvc2l0aW9uOnJlbGF0aXZlfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1JRmRLeWQteGwwN09iIC5WSXBnSmQteUFXTkViLVZJcGdKZC14bDA3T2J7YmFja2dyb3VuZDojZmZmO2JvcmRlcjoxcHggc29saWQgI2RkZDtib3gtc2hhZG93OjAgMnB4IDRweCAjOTlhO21pbi13aWR0aDowO291dGxpbmU6bm9uZTtwYWRkaW5nOjA7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoyMDAwfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1JRmRLeWQteGwwN09iIC5WSXBnSmQteUFXTkViLVZJcGdKZC1qN0xGbGJ7Y3Vyc29yOnBvaW50ZXI7cGFkZGluZzoycHggNXB4IDVweDttYXJnaW4tcmlnaHQ6MDtib3JkZXItc3R5bGU6bm9uZX0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItSUZkS3lkLXhsMDdPYiAuVklwZ0pkLXlBV05FYi1WSXBnSmQtajdMRmxiOmhvdmVye2JhY2tncm91bmQ6I2RkZH0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItSUZkS3lkLXhsMDdPYiAuVklwZ0pkLXlBV05FYi1WSXBnSmQtajdMRmxiIGgxe2ZvbnQtc2l6ZToxMDAlO2ZvbnQtd2VpZ2h0OmJvbGQ7bWFyZ2luOjRweCAwfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1JRmRLeWQteGwwN09iIC5WSXBnSmQteUFXTkViLVZJcGdKZC1qN0xGbGIgc3Ryb25ne2NvbG9yOiMzNDVhYWR9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLVZJcGdKZC1lS201RmMtaEZzYm97dGV4dC1hbGlnbjpyaWdodDtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO2xlZnQ6YXV0b30uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItVklwZ0pkLWo3TEZsYi1TSXNyVGQgLlZJcGdKZC15QVdORWItVklwZ0pkLWVLbTVGYy1oRnNib3t0ZXh0LWFsaWduOmxlZnQ7cG9zaXRpb246YWJzb2x1dGU7bGVmdDowO3JpZ2h0OmF1dG99LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLXlBV05FYi1WeTJBcWMtZm1jbVMsLlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLVRWTHc5Yy1wcEhscmYtc241NFF7YmFja2dyb3VuZC1jb2xvcjojZjFlYTAwO2JvcmRlci1yYWRpdXM6NHB4Oy13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7LW1vei1ib3JkZXItcmFkaXVzOjRweDtib3gtc2hhZG93OnJnYmEoMCwwLDAsLjUpIDNweCAzcHggNHB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDtjb2xvcjojZjFlYTAwO2N1cnNvcjpwb2ludGVyO21hcmdpbjotMnB4IC0ycHggLTJweCAtM3B4O3BhZGRpbmc6MnB4IDJweCAycHggM3B4O3Bvc2l0aW9uOnJlbGF0aXZlfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1UVkx3OWMtcHBIbHJmLXNuNTRRe2NvbG9yOiMyMjJ9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLXlBV05FYi1WeTJBcWMtcGJUVFlle2NvbG9yOndoaXRlO3Bvc2l0aW9uOmFic29sdXRlIWltcG9ydGFudH0uVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItVFZMdzljLXBwSGxyZiwuVklwZ0pkLXlBV05FYi1MN2xia2IgLlZJcGdKZC15QVdORWItVFZMdzljLXBwSGxyZiAuVklwZ0pkLXlBV05FYi1UVkx3OWMtcHBIbHJmLXNuNTRRe2JhY2tncm91bmQtY29sb3I6I2M5ZDdmMTtib3JkZXItcmFkaXVzOjRweCA0cHggMCAwOy13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHggNHB4IDAgMDstbW96LWJvcmRlci1yYWRpdXM6NHB4IDRweCAwIDA7Ym94LXNoYWRvdzpyZ2JhKDAsMCwwLC41KSAzcHggM3B4IDRweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7LW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7Y3Vyc29yOnBvaW50ZXI7bWFyZ2luOi0ycHggLTJweCAtMnB4IC0zcHg7cGFkZGluZzoycHggMnB4IDNweCAzcHg7cG9zaXRpb246cmVsYXRpdmV9LlZJcGdKZC15QVdORWItTDdsYmtiIHNwYW46Zm9jdXN7b3V0bGluZTpub25lfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1UVkx3OWMtRHlWREF7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXI6MXB4IHNvbGlkICM0ZDkwZmU7Ym9yZGVyLXJhZGl1czowOy13ZWJraXQtYm9yZGVyLXJhZGl1czowOy1tb3otYm9yZGVyLXJhZGl1czowO21hcmdpbjotMnB4O3BhZGRpbmc6MXB4fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi15QVdORWItVFZMdzljLXNuNTRRLUx6WDNlZntib3JkZXItbGVmdDoycHggc29saWQgcmVkO21hcmdpbi1sZWZ0Oi0ycHh9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLXlBV05FYi1UVkx3OWMtc241NFEtWUlBaUlie2JvcmRlci1yaWdodDoycHggc29saWQgcmVkO21hcmdpbi1yaWdodDotMnB4fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1JRmRLeWQtWVBxamJme3BhZGRpbmc6MnB4fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1JRmRLeWQtWVBxamJmLWZtY21Te2ZvbnQtc2l6ZToxMXB4O3BhZGRpbmc6MnB4IDJweCAzcHg7bWFyZ2luOjA7YmFja2dyb3VuZC1jb2xvcjojZmZmO2NvbG9yOiMzMzM7Ym9yZGVyOjFweCBzb2xpZCAjZDlkOWQ5O2JvcmRlci10b3A6MXB4IHNvbGlkICNjMGMwYzA7ZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246dG9wO2hlaWdodDoyMXB4O2JveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LWJvcmRlci1yYWRpdXM6MXB4fS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1JRmRLeWQtWVBxamJmLWZtY21TOmhvdmVye2JvcmRlcjoxcHggc29saWQgI2I5YjliOTtib3JkZXItdG9wOjFweCBzb2xpZCAjYTBhMGEwO2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMnB4IHJnYmEoMCwwLDAsLjEpfS5WSXBnSmQteUFXTkViLUw3bGJrYiAuVklwZ0pkLXlBV05FYi1JRmRLeWQtWVBxamJmLWZtY21TOmZvY3Vze2JveC1zaGFkb3c6aW5zZXQgMCAxcHggMnB4IHJnYmEoMCwwLDAsLjMpO291dGxpbmU6bm9uZTtib3JkZXI6MXB4IHNvbGlkICM0ZDkwZmV9LlZJcGdKZC15QVdORWItTDdsYmtiIC5WSXBnSmQteUFXTkViLUlGZEt5ZC1ZUHFqYmYtc0ZlQnFme2ZvbnQtc2l6ZToxMXB4O3BhZGRpbmc6MnB4IDZweCAzcHg7bWFyZ2luOjAgMCAwIDJweDtoZWlnaHQ6MjFweH0uVklwZ0pkLXlBV05FYi1MN2xia2I+ZGl2e2Rpc3BsYXk6LW1vei1ib3g7ZGlzcGxheTpmbGV4Oy1tb3otYm94LW9yaWVudDp2ZXJ0aWNhbDstbW96LWJveC1kaXJlY3Rpb246bm9ybWFsO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjtmb250LWZhbWlseToiR29vZ2xlIFNhbnMiLEFyaWFsLHNhbnMtc2VyaWZ9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC1VZDdmcntkaXNwbGF5Oi1tb3otYm94O2Rpc3BsYXk6ZmxleDstbW96LWJveC1hbGlnbjplbmQ7YWxpZ24taXRlbXM6ZW5kO21hcmdpbjoxNHB4fS5WSXBnSmQteUFXTkViLWh2aGdOZCAuVklwZ0pkLXlBV05FYi1odmhnTmQtSXVpeldjLVNJc3JUZHttYXJnaW4tcmlnaHQ6MTRweDtjb2xvcjojNzQ3Nzc1O2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0uVklwZ0pkLXlBV05FYi1odmhnTmQgLlZJcGdKZC15QVdORWItaHZoZ05kLUl1aXpXYy1pM2pNOGN7bWFyZ2luLWxlZnQ6MTRweDtjb2xvcjojNzQ3Nzc1O2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMH0uVklwZ0pkLXlBV05FYi1odmhnTmQgLlZJcGdKZC15QVdORWItaHZoZ05kLWs3N0lpZnttYXJnaW46MCAxNnB4IDE2cHh9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC1heEFWMXt3aWR0aDphdXRvO2NvbG9yOiMxZjFmMWY7Zm9udC1zaXplOjE2cHg7dGV4dC1hbGlnbjppbml0aWFsfS5WSXBnSmQteUFXTkViLWh2aGdOZCAuVklwZ0pkLXlBV05FYi1odmhnTmQtYXhBVjEgLlZJcGdKZC15QVdORWItU0lzclRke3RleHQtYWxpZ246cmlnaHR9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC1ON0VxaWR7Ym9yZGVyLXJhZGl1czowIDAgMTJweCAxMnB4O21hcmdpbjowO2JhY2tncm91bmQ6I2YxZjRmOTtwb3NpdGlvbjpyZWxhdGl2ZTttaW4taGVpZ2h0OjUwcHh9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC1ON0VxaWQgLlZJcGdKZC15QVdORWItU0lzclRke3RleHQtYWxpZ246cmlnaHR9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC1ON0VxaWQtQjdJNE9ke2Rpc3BsYXk6LW1vei1ib3g7ZGlzcGxheTpmbGV4Oy1tb3otYm94LW9yaWVudDp2ZXJ0aWNhbDstbW96LWJveC1kaXJlY3Rpb246bm9ybWFsO2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjt3aWR0aDo3NyU7cGFkZGluZzoxMnB4fS5WSXBnSmQteUFXTkViLWh2aGdOZCAuVklwZ0pkLXlBV05FYi1odmhnTmQtTjdFcWlkLUI3STRPZCAuVklwZ0pkLXlBV05FYi1TSXNyVGR7dGV4dC1hbGlnbjpyaWdodH0uVklwZ0pkLXlBV05FYi1odmhnTmQgLlZJcGdKZC15QVdORWItaHZoZ05kLVVUdWpDYntjb2xvcjojMWYxZjFmO2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjUwMH0uVklwZ0pkLXlBV05FYi1odmhnTmQgLlZJcGdKZC15QVdORWItaHZoZ05kLU43RXFpZC1CN0k0T2QgLlZJcGdKZC15QVdORWItU0lzclRkIC5WSXBnSmQteUFXTkViLWh2aGdOZC1VVHVqQ2J7dGV4dC1hbGlnbjpyaWdodH0uVklwZ0pkLXlBV05FYi1odmhnTmQgLlZJcGdKZC15QVdORWItaHZoZ05kLWVPOW1LZXtjb2xvcjojNDQ0NzQ2O2ZvbnQtc2l6ZToxMnB4O3BhZGRpbmctdG9wOjRweH0uVklwZ0pkLXlBV05FYi1odmhnTmQgLlZJcGdKZC15QVdORWItaHZoZ05kLU43RXFpZC1CN0k0T2QgLlZJcGdKZC15QVdORWItU0lzclRkIC5WSXBnSmQteUFXTkViLWh2aGdOZC1lTzltS2V7dGV4dC1hbGlnbjpyaWdodH0uVklwZ0pkLXlBV05FYi1odmhnTmQgLlZJcGdKZC15QVdORWItaHZoZ05kLXhnb3Y1e3Bvc2l0aW9uOmFic29sdXRlO3RvcDoxMHB4O3JpZ2h0OjVweH0uVklwZ0pkLXlBV05FYi1odmhnTmQgLlZJcGdKZC15QVdORWItaHZoZ05kLXhnb3Y1IC5WSXBnSmQteUFXTkViLVNJc3JUZHtsZWZ0OjVweDtyaWdodDphdXRvfS5WSXBnSmQteUFXTkViLWh2aGdOZCAuVklwZ0pkLXlBV05FYi1odmhnTmQtVEhJNlZie2ZpbGw6IzBiNTdkMH0uVklwZ0pkLXlBV05FYi1odmhnTmQgLlZJcGdKZC15QVdORWItaHZoZ05kLWJnbTZzZnttYXJnaW46LTRweCAycHggMCAwO3BhZGRpbmc6MnB4IDAgMDt3aWR0aDo0OHB4O2hlaWdodDo0OHB4O2JvcmRlcjpub25lO2JvcmRlci1yYWRpdXM6MjRweDtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kOm5vbmV9LlZJcGdKZC15QVdORWItaHZoZ05kIC5WSXBnSmQteUFXTkViLWh2aGdOZC1iZ202c2Y6aG92ZXJ7YmFja2dyb3VuZDojZThlYmVjfS5WSXBnSmQteUFXTkViLWh2aGdOZCAuVklwZ0pkLXlBV05FYi1odmhnTmQtYVhZVGNle2Rpc3BsYXk6bm9uZX1zZW50aW5lbHt9"}},"time_used":136,"timings":{"blocked":63,"dns":1,"connect":10,"send":0,"wait":9,"receive":1,"ssl":48},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"fonts.gstatic.com/s/i/productlogos/translate/v14/24px.svg","fqdn":"fonts.gstatic.com","domain":"gstatic.com","tld":"com"},"ip":{"addr":"142.250.74.35","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://clear-vault.online/","date":"2025-08-07T20:48:22.314Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"*.gstatic.com","organization":""},"issuer":{"commonName":"WR2","organization":"Google Trust Services"},"validity":{"start":"Mon, 07 Jul 2025 08:35:11 GMT","end":"Mon, 29 Sep 2025 08:35:10 GMT"},"fingerprint":{"sha1":"43:A0:95:35:FB:C7:02:15:92:9E:20:20:0D:0A:E7:8F:93:61:52:CD","sha256":"F1:59:AE:4E:F0:84:C7:D9:0F:67:4F:CB:FE:A6:ED:7D:47:17:4F:83:AA:B4:ED:FE:F5:F2:69:A8:AB:43:0E:0B"}}},"request":{"raw":"GET /s/i/productlogos/translate/v14/24px.svg 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: image/avif,image/webp,*/*\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate, br\r\nDNT: 1\r\nConnection: keep-alive\r\nReferer: https://clear-vault.online/\r\nSec-Fetch-Dest: image\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 OK\r\naccept-ranges: bytes\r\ncontent-encoding: gzip\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\ncontent-length: 3340\r\nx-content-type-options: nosniff\r\nserver: sffe\r\nx-xss-protection: 0\r\ndate: Thu, 07 Aug 2025 10:18:15 GMT\r\nexpires: Fri, 07 Aug 2026 10:18:15 GMT\r\ncache-control: public, max-age=31536000\r\nlast-modified: Wed, 20 Apr 2022 14:24:23 GMT\r\ncontent-type: image/svg+xml\r\nvary: Accept-Encoding\r\nage: 37807\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":"OK","fingerprints":null,"data":{"size":6225,"size_decoded":0,"mime_type":"image/svg+xml","magic":"SVG Scalable Vector Graphics image","md5":"2bd5c073a88b83ed74db88282a56ddfb","sha1":"d0ebfc376f8c6a44a8d4cd216817dcd7d0c33650","sha256":"ab5c23a05e39deed14d9d8262b0dce9f024f86105a27196cad37d14a3f516e09","sha512":"5c6c4a92e93fc0f6a675658cc84f6187fdebd3eee94efd07e24658736cba598f3bc7156b19834b13fb44c1d43fcb7df9fcca7f0a453037e30da76ba8f4b23b89","ssdeep":"96:+R2K3Z4n7tyVwip82hezk6227gLFoXhu1XuE20ot+pVY3YptWDzOzgXK3Zx:ql3KnxyGGMzb7noR20NTww33","tlshash":"c1d1e6f19309d815cd6a83d8cd9b8002aa1f25ddd50ac6cc7639fb3bd1a50eb1d2d7a4","first_seen":"2023-04-06T21:34:37Z","last_seen":"2026-08-11T16:44:06.761346Z","times_seen":79436,"resource_available":false,"data":"PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCI+PHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxkZWZzPjxwYXRoIGQ9Ik0yMS41IDVoLTkuMTdMMTEgMUgyLjVDMS42OCAxIDEgMS42OCAxIDIuNXYxNWMwIC44My42OCAxLjUgMS41IDEuNWg5LjE3TDEzIDIzaDguNWMuODIgMCAxLjUtLjY4IDEuNS0xLjV2LTE1YzAtLjgzLS42OC0xLjUtMS41LTEuNXoiIGlkPSJhIi8+PC9kZWZzPjxjbGlwUGF0aCBpZD0iYiI+PHVzZSBvdmVyZmxvdz0idmlzaWJsZSIgeGxpbms6aHJlZj0iI2EiLz48L2NsaXBQYXRoPjxnIGNsaXAtcGF0aD0idXJsKCNiKSI+PGltYWdlIGhlaWdodD0iMzEiIG9wYWNpdHk9Ii4yIiBvdmVyZmxvdz0idmlzaWJsZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMyAxKSIgd2lkdGg9IjI5IiB4bGluazpocmVmPSJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUIwQUFBQWZDQVlBQUFBYlc4WUVBQUFBQ1hCSVdYTUFBQXNTQUFBTEVnSFMzWDc4QUFBQSBHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFCUUJKUkVGVWVOcThWOHR1MjBZVXZYZG0rTENrIFJLaU13STFURkVYaFZaSmQxZ1c2Nnhla3Y5RFBxUHN2WGRVL1VhRHJvSnNrS3krQ0luQ2NHcEt0RnkyU00vZjJERVhaaWEwb2R0S1cgQWtGSjh6aHp6bjNTMFljdnBzKzc5RU1EYmozWWZndjRFTStYVE4vZkVPYjNaZzNBWG1xN2o2NEQ1L2UveC9FZnpaTW5YNWp4K0xGWiBMTHlwNnlORE96c2tZYjZSdWJGZHBiZHZLVWwySmMrZDlQdlA1ZG16VXlINlRWb1lYUU9xK0g1Zzl2YitjT05zTzltYUxwSXl5WlBVIGtaTkFwcG1oOVZwZzVrU1h3Q1NWSjUvVmkvcjhUbDczeTJGOWVQaWRKM29hZ2ErQjR2a1VnRis2RVcxbmR6MTFndk5kRGRMMWJETnIgeUtrQ1dPMTZ0aHlVR1dJSWVhZTJaR3ZuMW9mNXhGRXhvR0Y1ZUhnTTRBTlpzVzAzMlRmMDVNamVXK3htTktlZWRlV0FnOXRteXdQTSA2ckdZek9BUEJTZlE1U3MwTmY0cEFtUnJTbUJQMWVoSXhRNkRweEYxYVhhU0g1WDBiRGNBUjFhT3hMUlB0UGRyWnJ3bmQ1NVN4M2d6IElNTzcyT3dCcTlrbW94MFJTa0hIUk54clJKV0ZEYlFYS3BSMXhONGVPZngwTnFuTWRGSHVsWS9ydy8xUkFFNWNyRXZ2ZmZHQ3ZYL0UgVlVvT0MzTW0yNGVhTzZUeU5aamVCNUUrc0RMTXQydENxWkVXOGxjZ1BTVTJ4MEloS2xBWW9UUDR4VVR1ZVVNdkh2Skszb3VROGZmSCBIUDYySnBHZWcvVlNZY2lxTkFEYkhReHZZNWV0ZHI2NXloTlhsRzJCNXhqemdXZkhKb1NlWjVPbGJ1YXErY3pReVlTdnhhbDcwMWRKIFNXb2lnUk5xWEl0ak9SaHNDK3g3NE5mRHRQUTZhR1BrZ0FVbEdST3BUS0JRUjRnYkIxeDZmanozL0RLOEdzb0hqL1NWRzZwSkFDaSsgTmhRZEFwc1FKRlBDZWxpWUtJbWdlRUpteWxjM1h6dzV5cDl4bklNWU1rWnQ5SGpWaEsvR2VIdHFaSTUrS1VWSlh0U1ZRY3djWURQbyBGSTkzamhXK0RXU2p6WnJHdHMwTlFTd09aVEZvTWFNQmFseTZDVEZaRzJLWFV0M1oxYVF6QzM2cktyRkowY2dVYjZhWlJudVJ3anRJIGxvN0VxM0NMV1N5YTRlSjdhK1ROMmV1ZHZDbGJrMTdJdEZlcG9RTHJweVF5eGtaVGpCWUlpd3FuWHdGLzFtWGVyUWl2dHUrSG9ocDcgdGY3Y1dKbkNUZ0JsZUNRM2JCRWFQaWFDVFJYa05xQkx1OTU1bzJrditOeklJb2dEa0dsQUVmdXdMNTFEWWg5ejNzZEsxeTFBTHlYMiBGeEpMSzNGajMzOU5Zbk8xNlA0ZkVsOEo5SFVTYXl0eFRIRlJZcXJobko2MEFaVTJsTnBETk9VTGFaSDFGcUJYSlM0TGhOOEVDZW9zIE1nYkxXVXgzQUsreHY0K1pLTjZBQ3h4bFp3MHhEemRaS2o3WjZFMUFMeVErOTFXTmNsd2dJVTZ3d1JsaTd4VGt6akE4QlFDU0J4ZkwgK01VaGxuR01ETVlsZnNQdVdzZFNGNEdaYTIyNmlvMU1XNG56UHZrUWJXZ0RuSWxHWUhTQ1RVK1FiT0k5Qk50VFRCN2h4bUVJaCtGVCBLREpHWm9pVnBrQTZLbU5SajkwRTBkdVBObWFOeEoyOVFWaDBSeFdzT01OUmgwSnlESWs3TEJLMWl3NjJCVjFjTEthWHBZMm4rSFdzIEdrWmlkT1pFeXNwM2ZESzRLM1R2SzkwRWlzR2Y2YkQvazZDVHFEcEJadDZFb1RXY1NYUVU1bWhYMUZ2Tm0vWFJpeVFpYXcwWEttRGkgRVhMOWtkVjZGTU11OWt2cHlVRG9CM1NJQjV1WXhwMitmU3I5UDdOYTdJT2lwc1VweFo1QnFJU05UdzFyRnk2YkdyS29JakFiUzl1dSBFS29UMk5vd3FpV0o3Y3FNMEtEOWxUOFgydCtsS3ozUzJsNFovZTR2OXB0WHpjRnluOVpkOG5sSEhjalhhTlpzYUN2S3FsVzZkV1AyIElicjdzZEUyZTY4SDlzeStUdk41SjZud3lkTFV2dHVXZm1vTHVnSDRaZzM0SnpiYkh3Ty93YXZHKzY4VmRKUFhpaHVDL3pjdlVKKzAgMFcydWZ3UVlBR0hLSzJDRk1JcnpBQUFBQUVsRlRrU3VRbUNDIi8+PHJhZGlhbEdyYWRpZW50IGN4PSI3LjM5NCIgY3k9IjUuNDM3IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgaWQ9ImMiIHI9IjIzLjQxNiI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjRUVFIi8+PHN0b3Agb2Zmc2V0PSIuNDMyIiBzdG9wLWNvbG9yPSIjRTZFNkU2Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjRTFFMUUxIi8+PC9yYWRpYWxHcmFkaWVudD48cGF0aCBkPSJNMTMgMjNoOC41Yy44MiAwIDEuNS0uNjggMS41LTEuNXYtMTVjMC0uODMtLjY4LTEuNS0xLjUtMS41SDdsNiAxOHoiIGZpbGw9InVybCgjYykiLz48L2c+PHBhdGggY2xpcC1wYXRoPSJ1cmwoI2IpIiBkPSJNMTggMTF2LTFoLTF2MWgtMy43NXYxaDUuMzJjLS4yLjQ5LS42IDEuMy0xLjMyIDIuMTQtLjUxLS42LS44Ni0xLjE4LTEuMS0xLjY0aC0xLjExYy4zNi44NC45IDEuNjYgMS41MiAyLjM4bC0yLjYgMi41OC43MS43MSAyLjU4LTIuNTggMi41OCAyLjU4LjcxLS43MS0yLjYtMi41OGMuNzQtLjg2IDEuMzMtMS44NSAxLjY4LTIuODhIMjF2LTFoLTN6IiBmaWxsPSIjNjA3RDhCIi8+PGxpbmVhckdyYWRpZW50IGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBpZD0iZCIgeDE9IjEyLjMzMyIgeDI9IjIzIiB5MT0iMTQiIHkyPSIxNCI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjMjEyMTIxIiBzdG9wLW9wYWNpdHk9Ii4xIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMjEyMTIxIiBzdG9wLW9wYWNpdHk9Ii4wMiIvPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggY2xpcC1wYXRoPSJ1cmwoI2IpIiBkPSJNMTIuMzMgNUwyMyAxNS42N1YyM0gxMyIgZmlsbD0idXJsKCNkKSIvPjxnIGNsaXAtcGF0aD0idXJsKCNiKSI+PGltYWdlIGhlaWdodD0iOCIgb3BhY2l0eT0iLjEiIG92ZXJmbG93PSJ2aXNpYmxlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMC41IDE3LjUpIiB3aWR0aD0iOSIgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFBb0FBQUFKQ0FZQUFBQUxwcjBUQUFBQUNYQklXWE1BQUFzU0FBQUxFZ0hTM1g3OEFBQUEgR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQU9GSlJFRlVlTnAwVUQxTEEwRVVuTGU3SnNKaCBDaUZwTFZOWWFTMzQxMUw3Wi9JblVwZ21xUklSTEd4RU9FVlFzb1JjYm5lY3U2QUdUQjRNNzJ2ZXZqZHIrRFBEZitOdnMzODU4cTdhIEZwNG9ET1pCSjVkSk1DVkR6SjJUK0xZWXBlQXlUajM5VU1OWGhBMDBIQUJYS3k4OWJZNlVscXJGb01IbTVRSzBhL21iWFl4U3l5Wm0gZUNCVGU1S3I2OCtOR3ErS3Y0UXpvU004cTNaUDhpbWpYamRFdi82WXNuZCtxNmE3VU40WEZzS1lsaWZiVUpYdmozZnR5dEFxTTF2SiB6NlVnR3ZnaUliTjkwZzhSVmRkRktaL3B6cVgrWTVORHRkb25IVEk3MXZnV1lBRHpXbWR4LzRmcG1RQUFBQUJKUlU1RXJrSmdnZz09Ii8+PHBhdGggZD0iTTE3IDE5bC00IDQtMS4zMy00IiBmaWxsPSIjM0Y1MUI1Ii8+PC9nPjxwYXRoIGNsaXAtcGF0aD0idXJsKCNiKSIgZD0iTTIxLjUgNUg3bC4wNC4xMkgyMS41Yy44MiAwIDEuNS42NyAxLjUgMS41VjYuNWMwLS44My0uNjgtMS41LTEuNS0xLjV6IiBmaWxsPSIjMjEyMTIxIiBmaWxsLW9wYWNpdHk9Ii4wMiIvPjxwYXRoIGNsaXAtcGF0aD0idXJsKCNiKSIgZD0iTTIxLjUgMjIuODhIMTNMMTEuNzEgMTloLS4wNEwxMyAyM2g4LjVjLjgyIDAgMS41LS42OCAxLjUtMS41di0uMTJjMCAuODItLjY4IDEuNS0xLjUgMS41eiIgZmlsbD0iIzIxMjEyMSIgZmlsbC1vcGFjaXR5PSIuMSIvPjxwYXRoIGNsaXAtcGF0aD0idXJsKCNiKSIgZD0iTTEyLjk3IDIyLjkxTDEzIDIzbDQtNGgtLjEyIiBmaWxsPSIjMUEyMzdFIiBmaWxsLW9wYWNpdHk9Ii4yIi8+PHBhdGggY2xpcC1wYXRoPSJ1cmwoI2IpIiBkPSJNMTEuNjcgMTkuMTJoNS4yMUwxNyAxOWgtNS4zMyIgZmlsbD0iIzFBMjM3RSIgZmlsbC1vcGFjaXR5PSIuMSIvPjxnIGNsaXAtcGF0aD0idXJsKCNiKSI+PGltYWdlIGhlaWdodD0iMjIiIG9wYWNpdHk9Ii4yIiBvdmVyZmxvdz0idmlzaWJsZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLS41IC0uNSkiIHdpZHRoPSIyMCIgeGxpbms6aHJlZj0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCVUFBQUFYQ0FZQUFBRGszd1NkQUFBQUNYQklXWE1BQUFzU0FBQUxFZ0hTM1g3OEFBQUEgR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQVVwSlJFRlVlTnFzbGJGT3d6QVFRTy9zUUNSYyBzcUFPbFJnck1qQ1ZyK0VyK0laK0F4L1dUQ3dWZXlWUWw5SU9RWTJQYzJxaE5Gd2NHc2RTckhOc1A1MmZwVFBDZVVQNFg2UFFaQTJaIFBpNDFscVhScENZS3RBNXRzRkJWRmRvOXBlbmg4MjFaU1dzUzExMlgxaEJkUFhHNDRCU3lRTWFFb0hjSjZRSkx1K0x4cmd1S1FEUUIgVUF1T24zbmZMQVRscWMwcHNtdnV2eVFWaWJmQVJ5YVhvUVBlaDZIazlNdzR1TDJidjN4czMxK1A3VVdxNVJkN0xzdk44YWtnNXpCUCBLVFBTSWdXWE4zT0NRbzZBUmtwaUNOUWQzNm1hZWdWNkRHZ2pXMWxCSkZSV01CUWFWREFVR2xRd0F2U3ZnaGhvcDRJWWFLZUNrYURuIENtS2hvb0pZcUtoQXRhbzU5VlYxb2Qzdzk5QlU0RXNmY1FWWHJ1QnVQQk12Z0pJdjFzZG1QU1ZBM0hPaEx2eS9iQ0MwcURrOHJqUDkgVHRXQjM2Z1Z2MUhydmplcTc5MlNqb2tSRi9aN0Z6OENEQUM4RW1XREtWR0RMZ0FBQUFCSlJVNUVya0pnZ2c9PSIvPjxwYXRoIGQ9Ik0xMSAxSDIuNUMxLjY4IDEgMSAxLjY4IDEgMi41djE1YzAgLjgzLjY4IDEuNSAxLjUgMS41SDE3TDExIDF6IiBmaWxsPSIjNDI4NUY0Ii8+PC9nPjxwYXRoIGNsaXAtcGF0aD0idXJsKCNiKSIgZD0iTTIuNSAxQzEuNjggMSAxIDEuNjggMSAyLjV2LjEyYzAtLjgyLjY4LTEuNSAxLjUtMS41SDExVjFIMi41eiIgZmlsbD0iI0ZGRiIgZmlsbC1vcGFjaXR5PSIuMDIiLz48cGF0aCBjbGlwLXBhdGg9InVybCgjYikiIGQ9Ik0xMSAxdi4xMmw1LjkyIDE3Ljc1SDIuNWMtLjgyIDAtMS41LS42Ny0xLjUtMS41di4xMmMwIC44NC42OCAxLjUxIDEuNSAxLjUxSDE3TDExIDF6IiBmaWxsPSIjMjEyMTIxIiBmaWxsLW9wYWNpdHk9Ii4xIi8+PGcgY2xpcC1wYXRoPSJ1cmwoI2IpIj48cGF0aCBkPSJNNy41IDEwdjEuMmgxLjk4Yy0uMDguNTItLjYgMS41MS0xLjk4IDEuNTEtMS4yIDAtMi4xNy0uOTktMi4xNy0yLjIxUzYuMyA4LjI5IDcuNSA4LjI5Yy42OCAwIDEuMTMuMjkgMS4zOS41NGwuOTUtLjkyQzkuMjQgNy4zNSA4LjQ0IDcgNy41IDcgNS41NyA3IDQgOC41NyA0IDEwLjVTNS41NyAxNCA3LjUgMTRjMi4wMiAwIDMuMzYtMS40MiAzLjM2LTMuNDIgMC0uMjMtLjAyLS40MS0uMDYtLjU4SDcuNXoiIGZpbGw9IiNFRUUiLz48cGF0aCBkPSJNNCA3aDd2N0g0eiIgZmlsbD0ibm9uZSIvPjwvZz48cmFkaWFsR3JhZGllbnQgY3g9IjEuNDU3IiBjeT0iMS40MiIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGlkPSJlIiByPSIyOS43OTIiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI0ZGRiIgc3RvcC1vcGFjaXR5PSIuMSIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0ZGRiIgc3RvcC1vcGFjaXR5PSIwIi8+PC9yYWRpYWxHcmFkaWVudD48cGF0aCBkPSJNMjEuNSA1aC05LjE3TDExIDFIMi41QzEuNjggMSAxIDEuNjggMSAyLjV2MTVjMCAuODMuNjggMS41IDEuNSAxLjVoOS4xN0wxMyAyM2g4LjVjLjgyIDAgMS41LS42OCAxLjUtMS41di0xNWMwLS44My0uNjgtMS41LTEuNS0xLjV6IiBmaWxsPSJ1cmwoI2UpIi8+PC9zdmc+"}},"time_used":12,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":11,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"translate.googleapis.com/element/log?format=json\u0026hasfast=true\u0026authuser=0","fqdn":"translate.googleapis.com","domain":"translate.googleapis.com","tld":"googleapis.com"},"ip":{"addr":"142.250.74.106","port":443,"asn":15169,"as":"GOOGLE","country":"United States","country_code":"US"},"is_navigation_request":false,"resource_type":"fetch","requested_by":"https://clear-vault.online/","date":"2025-08-07T20:48:32.304Z","timestamp":0,"http_version":"","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"upload.video.google.com","organization":""},"issuer":{"commonName":"WR2","organization":"Google Trust Services"},"validity":{"start":"Mon, 07 Jul 2025 08:35:11 GMT","end":"Mon, 29 Sep 2025 08:35:10 GMT"},"fingerprint":{"sha1":"DF:A1:DB:1F:BC:5E:31:D7:F8:FE:26:E3:B9:B3:02:98:B1:C8:50:EC","sha256":"A2:57:20:B6:AE:46:89:B9:39:C7:57:9B:1E:43:96:E3:5A:BC:7E:3F:1D:18:10:34:CC:53:3D:DB:78:4E:5C:21"}}},"request":{"raw":"POST /element/log?format=json\u0026hasfast=true\u0026authuser=0 HTTP/1.1\r\nHost: translate.googleapis.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.5\r\nAccept-Encoding: gzip, deflate, br\r\nReferer: https://clear-vault.online/\r\nX-Goog-AuthUser: 0\r\nContent-Type: text/plain;charset=UTF-8\r\nContent-Length: 1162\r\nOrigin: https://clear-vault.online\r\nDNT: 1\r\nConnection: keep-alive\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: 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":"POST"},"response":{"raw":"HTTP/3 200 OK\r\ncross-origin-opener-policy-report-only: same-origin; report-to=coop_reporting\r\nreport-to: {\"group\":\"clearcut-frontend-http-prod-hiqos\",\"max_age\":2592000,\"endpoints\":[{\"url\":\"https://csp.withgoogle.com/csp/report-to/httpsserver2/clearcut-frontend-http-prod-hiqos\"}]}\r\ncontent-security-policy-report-only: script-src 'none';form-action 'none';frame-src 'none'; report-uri https://csp.withgoogle.com/csp/httpsserver2/clearcut-frontend-http-prod-hiqos\r\naccess-control-allow-origin: https://clear-vault.online\r\ncross-origin-resource-policy: cross-origin\r\naccess-control-allow-credentials: true\r\naccess-control-allow-headers: X-Playlog-Web\r\ncontent-type: text/plain; charset=UTF-8\r\ncontent-encoding: gzip\r\ndate: Thu, 07 Aug 2025 20:48:32 GMT\r\nserver: Playlog\r\ncontent-length: 131\r\nx-xss-protection: 0\r\nx-frame-options: SAMEORIGIN\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":"OK","fingerprints":null,"data":{"size":131,"size_decoded":0,"mime_type":"text/plain; charset=UTF-8","magic":"JSON text data","md5":"ca0b7e866005f6774d284b9f438ebfd2","sha1":"53644f5ee3640189bdb223473ba6a2d46606c556","sha256":"502e9680cfa78fa8be779cbf4f1947c8eaa3d43bf8c7464800ec772b2ddea358","sha512":"939c4526c623db033ad40bfdc6c8848a1dcd0ca797f17fbbd89fbec1b49dededc16e89084b3759e62fa0ffc8fe896980b10a1ff8daee22736a70b08f1ee13e2f","ssdeep":"","tlshash":"58c08c50330469e1080e82c8c0026858228c903b46708cf10bbd68125d3234a1004854","first_seen":"2023-04-05T03:14:56Z","last_seen":"2026-08-11T16:58:27.326203Z","times_seen":586783,"resource_available":false,"data":"WyItMSIsbnVsbCxbW1siQU5EUk9JRF9CQUNLVVAiLDBdLFsiQkFUVEVSWV9TVEFUUyIsMF0sWyJTTUFSVF9TRVRVUCIsMF0sWyJUUk9OIiwwXV0sLTMzMzQ3Mzc1OTQwMjQ5NzEyMjVdLFtdLHsiMTc1MjM3Mzc1IjpbMTAwMDBdfV0="}},"time_used":31,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":31,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}}]}
