{ "_id": "_design/photon", "name": "Photon 1.24 \n(c) 2024 ermouth \n\nRun attachment `index.html` to start Photon. \n\nSee https://github.com/ermouth/couch-photon \nrepo for more details.", "version": "1.24.32", "rewrites": [ { "from": "/", "to": "/_show/home" }, { "from": "/_dbroot/", "to": "../../../" }, { "from": "/_photon/", "to": "/index.html" }, { "from": "/_photon/_design/photon", "to": "/" }, { "from": "/_photon/*", "to": "/*" }, { "from": "/*", "to": "../../../*" } ], "settings": { "roles": [ "_admin", "app-photon" ] }, "shows": { "home": "function (doc,req) {\n \n // Processes _rewrite request to domain root,\n // used when Photon runs through vhost.\n // Imitates CouchDB root when json is requested,\n // otherwise redirects to Photon.\n \n\tvar info = req.info,\n\t\t\tuuid = req.uuid,\n\t\t\trejson = /(application|text)\\/json/;\n\n\t// We have request to DB root, fake CouchDB root response\n\tif (!req.headers.Accept || rejson.test(req.headers.Accept+'')) return {json:{\n\t\tcouchdb: \t\t'Welcome',\n\t\tuuid: \t\t\tuuid,\n\t\tversion: \t\t'3.0.0',\n\t\tfeatures:\t\t['access-ready'],\n\t\tvendor: {\n\t\t\tname: \t\t'The Apache Software Foundation'\n\t\t}\n\t}};\n\n\t// Page requested, redirecting to Photon\n\treturn {\n\t\tcode:\t\t\t302,\n\t\theaders:\t{Location:'/_photon/'},\n\t\tbody:\t\t\t''\n\t}\n}" }, "stamp": 1719596851434, "validate_doc_update": "function (newDoc,oldDoc,userCtx,secObj) {\n\n\tvar members = (secObj||{}).members || {names:[], roles:[]};\n \n // Pass through if bucket is already protected by Couch\n if (members.names.length || members.roles.length) {\n return;\n }\n\t\n // For public bucket only allow admins to write\n\tif (!_admin()) throw({forbidden: 'Insufficient privileges'});\n \n return;\n \n // - - - - - - - - - - - -\n \n function _admin() {\n\t\t// see if the user is a server admin\n\t\tif(userCtx.roles.indexOf('_admin') !== -1) {\n\t\t\treturn true; // a server admin\n\t\t}\n\n\t\t// see if the user a database admin specified by name\n\t\tif(secObj && secObj.admins && secObj.admins.names) {\n\t\t\tif(secObj.admins.names.indexOf(userCtx.name) !== -1) {\n\t\t\t\treturn true; // database admin\n\t\t\t}\n\t\t}\n\n\t\t// see if the user a database admin specified by role\n\t\tif(secObj && secObj.admins && secObj.admins.roles) {\n\t\t\tvar db_roles = secObj.admins.roles;\n\t\t\tfor(var idx = 0; idx < userCtx.roles.length; idx++) {\n\t\t\t\tvar user_role = userCtx.roles[idx];\n\t\t\t\tif(db_roles.indexOf(user_role) !== -1) {\n\t\t\t\t\treturn true; // role matches!\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn false; // default to no admin\n\t}\n\n}", "versions": "## 1.24.32\n\nAdded `smoosh.ignore` config section description. \n\n[Unzip…] button renamed into [Restore…]. Restore \ndialog now accepts not only ZIPs but also JSON \nfile dumps saved from `_changes` or `_all_docs` \nendpoints. JSON must contain all data, so \n`?include_docs=true&attachments=true` request \nURL parts are vital.\n\n## 1.24.30\n\nTab titles received icons. Code editor dark theme \ncolors are bit powdered.\n\n## 1.24.26\n\nJSON serialization improvements: long key ladders \nof deeply-nested values (ie deep Mango queries) are \nnow flattened.\n\nNew experimental feature: click on type indicator \nin raw JSON editors converts JSON syntax to JS – \nfunctions are unwrapped, keys are more concise. \nMay be useful for design docs.\n\n## 1.24.25\n\nBetter attribute coloring in HTML editors. \n\nView column `/dt` modifier now understands timestamps \nin base36.\n\nPrettier JSON serialization: small objects and arrays \nare shown as single lines. \n\nTested for CouchDB 3.3.3, `_config` popup help updated \nto support newly introduced config keys.\n\n## 1.24.24\n\nDoc id generator in [Clone…] dialog now tries to infer \nsource id structure and generate similarly looking \nrandom `_id`. Couch `/_uuid` API endpoint is still \nused for uuid-like structures.\n\n## 1.24.22\n\nCloning a doc no more immediately saves the clone,\nnew doc opens in editor first.\n\nNew never saved docs denote themselves as changed \n(blue dot) in tab bar.\n\n## 1.24.21\n\nMore emoji-related small fixes here and there. \nAdded clarification of empty `.settings.roles` into \nreadme.\n\n## 1.24.20\n\nFixed open/close chevrons misplacement in Firefox. \nEmoji related minor UI fixes for Diff and File editor \ncomponents. \n\n## 1.24.19\n\nSQL to Mango converter now prepends `(*UTF8)` prefix to \nRegExp-like queries, which provides utf8-aware search \nfor `ILIKE` and RegExps with `(?i)` prefix.\n\nAdded venerable FiraCode to Code font selector at the \n`About` tab. FiraCode font isn’t shipped with Photon, \nyou need to install it yourself.\n\n## 1.24.17\n\nFixed sharding settings misbehavior in the [New DB…] dlg.\n\n## 1.24.16\n\nNo more random cursor jumps in View index in-place code \neditor. Emoji related minor UI fixes. \n\n## 1.24.15\n\nJSON editor fix: Links to attachments with emojis in \ndocname or filename no more point to 404. \n\n## 1.24.14\n\nLocal docs list now has `Include docs` switch. Grid \nview for `_local_docs` turns `include_docs` on, like\nfor `_all_docs`.\n\n## 1.24.12\n\nLarge diffs are now multiline. Start screen logo \nis fixed. SQL `BETWEEN` no more casts number-like\nstrings to nums.\n\n## 1.24.11\n\nSQL queries now support `LIKE`, `ILIKE`,`BETWEEN`\nand`NOT BETWEEN`.\n\n## 1.24.10\n\nSQL queries received MySQL-style RegExp syntax: \n`WHERE _id RLIKE '^ab?c'`. `REGEXP` and `RLIKE` are \nconverted to Mango `{$regex:''}` conditional.\n\n## 1.24.9\n\nFixed intermittent `Nothing found` text atop of search\nresults. Formatting for cells with `/int` modifier \ndoesn’t crumble if preceding columns are joined.\n\nCompatibility with Chrome49 restored, WinXP forever)\n\n## 1.24.8\n\nFixed: issues with line numbers in JS view editor; \nmalformed tooltips here and there; issues with selecting \ndocs having emoji in `_id`; issues with searching emoji.\n\n## 1.24.6\n\nMostly fixed inverted lightness of emojis in dark mode.\nStartkey icon changed from funnel to more relevant key.\n\n## 1.24.4\n\nMango and SQL queries which failed due to missing \nindex now show `Create index` button after the error.\nThe button knows context and creates index to fullfill \nthe query.\n\nOld fashioned UI fold/unfold triangle arrows replaced \nwith chevrons.\n\nFixed SQL/Mango qry editor buttons overlay for narrow \nscreens.\n\n## 1.24.2\n\nAdded interactive SQL queries feature, which \ntranslates SQL subset to Mango and queries \ncurrent DB. Available in a dropdown where all \nviews and queries live. Any named SQL query is \nstashed in localStorage and survives Photon reload,\nlike named Mango queries.\n\nGrid/list switch behavior for bucket view fixed.\n\n## 1.23.9\n\nDeleted docs opened from `_changes` feed are now \nhandled much better by JSON editor: `_deleted` \nproperty is at the top, and switching it to `false` \nallows both Save and Clone actions.\n\nSaving un-deleted doc with retained attachements no \nlonger causes `500` response.\n\nImage previews in dark mode now have more accurate \ncolors.\n\n## 1.23.5\n\nAdded `/curr` and `/int` modifiers to grid view. A\nqry like `.price /curr` makes its column of values \naligned right, fixpoint and monospaced, ie `1 125.00`. \nThe `/hex` modifier is also shown in monospaced now.\n\nFixed glitchy poll interval controls in `About` tab. \n\n## 1.23.2\n\nClick on doc [Root▼] in JSON editor fold/unfolds all \nfirst-level doc subtrees. Also works in `_config`.\n\nAdded `_node/_local/_versions` support for Couch 3.3+,\nexposed in `About` tab (`Node tools` section).\n\nAdded Photon history popup into `About` tab.\n\nAdded help hints for [smoosh] config keys and new keys\nadded by CouchDB 3.3.0.\n\n## 1.22\n\nAdded `Download doc as ZIP` button into doc editor.\nDownloader puts the doc json and all doc attachments \ninto zip as separate files.\n\nThe `Clear local settings` item of Logout menu now\nopens dlg which allows to choose local settings to\nwipe out.\n\nAdded stats into text attachments editor. Added \n`../` level up button into doc editor.\n\nMax obj/array size to unfold in JSON ed is now 500.\n\nMinor UI fixes.\n\n## 1.21\n\nNew feature: DB conflicts list for CouchDB 2.3+.\n\nNew `Add view…` button in the DB docs/view panel.\n\n`Alt+W` (or `Ctrl+W` on Mac) now closes current Photon \ninternal tab.\n\nDefault view mode is now Grid\n\nLink to logs for Couch 1.x is moved to About tab. \n\nGrid selectors like `.value.*.somefield /list` now work not \nonly if `.value` is an array, but with objects as well. Very \nhandy for reducers which return objects.\n\nUser info popup now has Forget viewstates command. The cmd\nclears local state caches.\n\nPhoton is no more mirrored to AWS S3 CDN.\n\n## 1.20\n\nNew major feature: dark theme. Settings are in `About` tab.\n\nMinor UI tweaks and ZIP undump fixes.\n\n## 1.19\n\nSome refactoring, moving from ES5 to ES6.\n\nNew feature: expandable DB auto-groups. Grouping makes Photon\ncomfortable for nodes with thousands DBs. Tunable in settings.\n\nAdded response size/duration indicator at the bottom of \nview results. \n\nPhoton default repo URL was changed, updates are now delivered \nstrictly over https.\n\n## 1.18\n\nMostly UI fixes and performance improvements. Starred DBs show\nsecurity and size regardless of Photon config.\n\n## 1.17\n\nAdded Mango syntax validator into query editor. Added\nPing session config option. \n\nCouchDB 3.2 related: incompatible CSP config handling.\n\nAdded `Ctrl+S` and `Ctrl+Z` (`Cmd+S` and `Cmd+Z` for Mac) global \nkeyboard shortcuts for config, doc and attachment editors.\n\nCompatibility with old IEs is no more maintained.\n\n## 1.16\n\nAdded Undo history panel into doc and config editors. The panel \nis a list of all json changes, and in most cases allows to \nundo json tree changes out of order.\n\n## 1.15\n\nAdded left panel / top bar switch to match wide monitors better. \nVertical panel only available for 1420px+ wide screens.\n\nMax 15 tabs message removed, older tabs are auto-closed if needed.\n\nBucket stats numbers in DB list are clickable and show DB info.\n\nAdded typecast ` /cast` modifiers for selectors in grid view.\n\nAdded `Clone…` button in doc editor; basically `Save as…`.\n\nAdded `../` button in views, which opens bucket root doc list.\n\n## 1.14\n\nAdded grid (table) representation mode for docs lists, view and \nMango queries. Tables are copy/pastable to Excel. \n\nAdded Include docs option for `/_all_docs` view, it is turned on \nautomatically for grid view mode.\n\nViews now memoize their particular source code editor state, as \nwell as reduce level and grid settings.\n\n## 1.12\n\nAdded ZIP dump/restore. A [Delete DB] dlg now offers to re-create \nDB(s) after deletion. Several JSON editor fixes and improvements. \nTask list grouping improved. \n\nTT Mono font excluded from the Photon package. \n\n## 1.11\n\nAdded `/_changes` feed view, added compound index stats for \nddocs view.\n\n## 1.10\n\nAdded index stats for each ddoc in ddocs view; also a lot of \nslight UI improvements.\n\n## 1.9\n\nAdded: group DB sync; Couch perf test; CouchDB v3 support. \n\n## 1.8\n\nImproved JSON editor, added `/_stats` graphs.\n\n## 1.7\n\nAdded structured diff for doc revisions.\n\n## 1.6\n\nNew features: editor for text-based attachments and doc purge. \nDB view received `db/_design_docs` and `db/_local_docs` modes.\n\n## 1.4\n\nAdded access restrictions, Photon no more starts without \nauthorization.\n\n## 1.2\n\nAdded in-place editors for Erlang, JS and Mango view syntax.\n\n## 0.9.99\n\nMore or less usable version with all basic features. March, 2018.", "_attachments": { "css/photon.css": { "content_type": "text/css", "data": "LyogUGhvdG9uIDEuMjQgQ1NTICovCkBjaGFyc2V0ICJVVEYtOCI7Cip7Ym94LXNpemluZzpib3JkZXItYm94Oy1tb3otYm94LXNpemluZzpib3JkZXItYm94O21hcmdpbjowO3BhZGRpbmc6MH0KaHRtbHtoZWlnaHQ6MTAwJTtvdmVyZmxvdzpoaWRkZW59CmJvZHl7cGFkZGluZzowOy13ZWJraXQtdGV4dC1zaXplLWFkanVzdDpub25lO2ZvbnQ6MTlweCAnLWFwcGxlLXN5c3RlbScsICdCbGlua01hY1N5c3RlbUZvbnQnLCAnSGVsdmV0aWNhIE5ldWUnLCAnU2Vnb2UgVUknLCBVYnVudHUsIFJvYm90bywgSGVsdmV0aWNhLCBUYWhvbWEsIEFyaWFsLCBWZXJkYW5hLCBTYW5zLXNlcmlmO2NvbG9yOiMzODQxNGM7bGluZS1oZWlnaHQ6MS4zZW07YmFja2dyb3VuZDojZmZmO2hlaWdodDoxMDAlfQpzZWN0aW9uLCBkaXYsIHNwYW57cG9zaXRpb246cmVsYXRpdmV9CmgxLCBoMiwgaDMsIGg0e2ZvbnQtd2VpZ2h0Om5vcm1hbDttYXJnaW46MC40ZW0gMCAwLjNlbSAwO2NvbG9yOiMzODQxNGM7bGluZS1oZWlnaHQ6MS4xZW19Cmgxe2ZvbnQtc2l6ZToyLjVlbX0KaDJ7Zm9udC1zaXplOjJlbX0KaDN7Zm9udC1zaXplOjEuNGVtfQpoNHtmb250LXNpemU6MS4xZW19CmRpdiA+IGgxOm50aC1vZi10eXBlKDEpIHttYXJnaW4tdG9wOjAuMWVtfQpkaXYgPiBoMjpudGgtb2YtdHlwZSgxKSB7bWFyZ2luLXRvcDowLjFlbX0KZGl2ID4gaDM6bnRoLW9mLXR5cGUoMSkge21hcmdpbi10b3A6MC4xZW19CnB7Zm9udDoxZW0gO2xpbmUtaGVpZ2h0OjEuNGVtO21hcmdpbjowLjJlbSAwIDAuNWVtIDB9Cmxpe21hcmdpbi1sZWZ0OjFlbX0Kc21hbGx7Zm9udC1zaXplOjkwJX0KdGFibGV7Ym9yZGVyOm5vbmU7cGFkZGluZzowO21hcmdpbjowO2JvcmRlci1zcGFjaW5nOjB9CnRke3ZlcnRpY2FsLWFsaWduOnRvcDtsaW5lLWhlaWdodDoxLjJlbX0KdGh7dmVydGljYWwtYWxpZ246bWlkZGxlO2xpbmUtaGVpZ2h0OjEuMmVtfQpsYWJlbHtjdXJzb3I6cG9pbnRlcn0KLmludmlze3Zpc2liaWxpdHk6aGlkZGVufQouaGlkZXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fQoucGFiYywgLnBhYnN7cG9zaXRpb246YWJzb2x1dGV9Ci5jcHtjdXJzb3I6cG9pbnRlcn0KLmNte2N1cnNvcjptb3ZlfQouY3p7Y3Vyc29yOnpvb20taW59Ci5jeHtjdXJzb3I6Y29sLXJlc2l6ZX0KLndoaXRle2NvbG9yOndoaXRlIWltcG9ydGFudH0KLmJnLXdoaXRle2JhY2tncm91bmQtY29sb3I6d2hpdGUhaW1wb3J0YW50fQouZ3JheS0ye2NvbG9yOiMxYzIwMjYhaW1wb3J0YW50fQouYmctZ3JheS0ye2JhY2tncm91bmQtY29sb3I6IzFjMjAyNiFpbXBvcnRhbnR9Ci5ncmF5LTF7Y29sb3I6IzM4NDE0YyFpbXBvcnRhbnR9Ci5iZy1ncmF5LTF7YmFja2dyb3VuZC1jb2xvcjojMzg0MTRjIWltcG9ydGFudH0KLmdyYXkwe2NvbG9yOiM0ZDVhNmEhaW1wb3J0YW50fQouYmctZ3JheTB7YmFja2dyb3VuZC1jb2xvcjojNGQ1YTZhIWltcG9ydGFudH0KLmdyYXkxe2NvbG9yOiM4ODkyOWYhaW1wb3J0YW50fQouYmctZ3JheTF7YmFja2dyb3VuZC1jb2xvcjojODg5MjlmIWltcG9ydGFudH0KLmdyYXkye2NvbG9yOiNiOWMwY2IhaW1wb3J0YW50fQouYmctZ3JheTJ7YmFja2dyb3VuZC1jb2xvcjojYjljMGNiIWltcG9ydGFudH0KLmdyYXkze2NvbG9yOiNkMGQ2ZGQhaW1wb3J0YW50fQouYmctZ3JheTN7YmFja2dyb3VuZC1jb2xvcjojZDBkNmRkIWltcG9ydGFudH0KLmdyYXk0e2NvbG9yOiNlM2U4ZWIhaW1wb3J0YW50fQouYmctZ3JheTR7YmFja2dyb3VuZC1jb2xvcjojZTNlOGViIWltcG9ydGFudH0KLmdyYXk1e2NvbG9yOnJnYmEoMTM2LCAxNDYsIDE1OSwgMC4zNSkhaW1wb3J0YW50fQouYmctZ3JheTV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDEzNiwgMTQ2LCAxNTksIDAuMzUpIWltcG9ydGFudH0KLmdyYXk2e2NvbG9yOnJnYmEoMTg1LCAxOTIsIDIwMywgMC4zNSkhaW1wb3J0YW50fQouYmctZ3JheTZ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDE4NSwgMTkyLCAyMDMsIDAuMzUpIWltcG9ydGFudH0KLmdyYXk3e2NvbG9yOnJnYmEoMjI3LCAyMzIsIDIzNSwgMC4zNSkhaW1wb3J0YW50fQouYmctZ3JheTd7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDIyNywgMjMyLCAyMzUsIDAuMzUpIWltcG9ydGFudH0KLmJsdWUtMntjb2xvcjojMTYzMjVhIWltcG9ydGFudH0KLmJnLWJsdWUtMntiYWNrZ3JvdW5kLWNvbG9yOiMxNjMyNWEhaW1wb3J0YW50fQouYmx1ZS0xe2NvbG9yOiMyMzRmOGYhaW1wb3J0YW50fQouYmctYmx1ZS0xe2JhY2tncm91bmQtY29sb3I6IzIzNGY4ZiFpbXBvcnRhbnR9Ci5ibHVlMHtjb2xvcjojMmQ2NmI4IWltcG9ydGFudH0KLmJnLWJsdWUwe2JhY2tncm91bmQtY29sb3I6IzJkNjZiOCFpbXBvcnRhbnR9Ci5ibHVlMXtjb2xvcjojNmI5ZmRiIWltcG9ydGFudH0KLmJnLWJsdWUxe2JhY2tncm91bmQtY29sb3I6IzZiOWZkYiFpbXBvcnRhbnR9Ci5ibHVlMntjb2xvcjojOWVjZGY4IWltcG9ydGFudH0KLmJnLWJsdWUye2JhY2tncm91bmQtY29sb3I6IzllY2RmOCFpbXBvcnRhbnR9Ci5ibHVlM3tjb2xvcjojYjdkYmZiIWltcG9ydGFudH0KLmJnLWJsdWUze2JhY2tncm91bmQtY29sb3I6I2I3ZGJmYiFpbXBvcnRhbnR9Ci5ibHVlNHtjb2xvcjojY2JlN2ZlIWltcG9ydGFudH0KLmJnLWJsdWU0e2JhY2tncm91bmQtY29sb3I6I2NiZTdmZSFpbXBvcnRhbnR9Ci5ibHVlNXtjb2xvcjpyZ2JhKDEwNywgMTU5LCAyMTksIDAuMzUpIWltcG9ydGFudH0KLmJnLWJsdWU1e2JhY2tncm91bmQtY29sb3I6cmdiYSgxMDcsIDE1OSwgMjE5LCAwLjM1KSFpbXBvcnRhbnR9Ci5ibHVlNntjb2xvcjpyZ2JhKDE1OCwgMjA1LCAyNDgsIDAuMzUpIWltcG9ydGFudH0KLmJnLWJsdWU2e2JhY2tncm91bmQtY29sb3I6cmdiYSgxNTgsIDIwNSwgMjQ4LCAwLjM1KSFpbXBvcnRhbnR9Ci5ibHVlN3tjb2xvcjpyZ2JhKDIwMywgMjMxLCAyNTQsIDAuMzUpIWltcG9ydGFudH0KLmJnLWJsdWU3e2JhY2tncm91bmQtY29sb3I6cmdiYSgyMDMsIDIzMSwgMjU0LCAwLjM1KSFpbXBvcnRhbnR9Ci5jeWFuLTJ7Y29sb3I6IzA5NTQ3MCFpbXBvcnRhbnR9Ci5iZy1jeWFuLTJ7YmFja2dyb3VuZC1jb2xvcjojMDk1NDcwIWltcG9ydGFudH0KLmN5YW4tMXtjb2xvcjojMGU4MmFkIWltcG9ydGFudH0KLmJnLWN5YW4tMXtiYWNrZ3JvdW5kLWNvbG9yOiMwZTgyYWQhaW1wb3J0YW50fQouY3lhbjB7Y29sb3I6IzEyYTVkYyFpbXBvcnRhbnR9Ci5iZy1jeWFuMHtiYWNrZ3JvdW5kLWNvbG9yOiMxMmE1ZGMhaW1wb3J0YW50fQouY3lhbjF7Y29sb3I6IzVkYzVlOCFpbXBvcnRhbnR9Ci5iZy1jeWFuMXtiYWNrZ3JvdW5kLWNvbG9yOiM1ZGM1ZTghaW1wb3J0YW50fQouY3lhbjJ7Y29sb3I6IzlhZTBmMSFpbXBvcnRhbnR9Ci5iZy1jeWFuMntiYWNrZ3JvdW5kLWNvbG9yOiM5YWUwZjEhaW1wb3J0YW50fQouY3lhbjN7Y29sb3I6I2IyZTlmNiFpbXBvcnRhbnR9Ci5iZy1jeWFuM3tiYWNrZ3JvdW5kLWNvbG9yOiNiMmU5ZjYhaW1wb3J0YW50fQouY3lhbjR7Y29sb3I6I2M2ZjBmYSFpbXBvcnRhbnR9Ci5iZy1jeWFuNHtiYWNrZ3JvdW5kLWNvbG9yOiNjNmYwZmEhaW1wb3J0YW50fQouY3lhbjV7Y29sb3I6cmdiYSg5MywgMTk3LCAyMzIsIDAuMzUpIWltcG9ydGFudH0KLmJnLWN5YW41e2JhY2tncm91bmQtY29sb3I6cmdiYSg5MywgMTk3LCAyMzIsIDAuMzUpIWltcG9ydGFudH0KLmN5YW42e2NvbG9yOnJnYmEoMTU0LCAyMjQsIDI0MSwgMC4zNSkhaW1wb3J0YW50fQouYmctY3lhbjZ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDE1NCwgMjI0LCAyNDEsIDAuMzUpIWltcG9ydGFudH0KLmN5YW43e2NvbG9yOnJnYmEoMTk4LCAyNDAsIDI1MCwgMC4zNSkhaW1wb3J0YW50fQouYmctY3lhbjd7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDE5OCwgMjQwLCAyNTAsIDAuMzUpIWltcG9ydGFudH0KLnRlYWwtMntjb2xvcjojMGM1NDQ4IWltcG9ydGFudH0KLmJnLXRlYWwtMntiYWNrZ3JvdW5kLWNvbG9yOiMwYzU0NDghaW1wb3J0YW50fQoudGVhbC0xe2NvbG9yOiMxNThlN2EhaW1wb3J0YW50fQouYmctdGVhbC0xe2JhY2tncm91bmQtY29sb3I6IzE1OGU3YSFpbXBvcnRhbnR9Ci50ZWFsMHtjb2xvcjojMWJiYmEwIWltcG9ydGFudH0KLmJnLXRlYWwwe2JhY2tncm91bmQtY29sb3I6IzFiYmJhMCFpbXBvcnRhbnR9Ci50ZWFsMXtjb2xvcjojNjJkMmMwIWltcG9ydGFudH0KLmJnLXRlYWwxe2JhY2tncm91bmQtY29sb3I6IzYyZDJjMCFpbXBvcnRhbnR9Ci50ZWFsMntjb2xvcjojOWNlNWRhIWltcG9ydGFudH0KLmJnLXRlYWwye2JhY2tncm91bmQtY29sb3I6IzljZTVkYSFpbXBvcnRhbnR9Ci50ZWFsM3tjb2xvcjojYjdlY2UxIWltcG9ydGFudH0KLmJnLXRlYWwze2JhY2tncm91bmQtY29sb3I6I2I3ZWNlMSFpbXBvcnRhbnR9Ci50ZWFsNHtjb2xvcjojY2RmMmU2IWltcG9ydGFudH0KLmJnLXRlYWw0e2JhY2tncm91bmQtY29sb3I6I2NkZjJlNiFpbXBvcnRhbnR9Ci50ZWFsNXtjb2xvcjpyZ2JhKDk4LCAyMTAsIDE5MiwgMC4zNSkhaW1wb3J0YW50fQouYmctdGVhbDV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDk4LCAyMTAsIDE5MiwgMC4zNSkhaW1wb3J0YW50fQoudGVhbDZ7Y29sb3I6cmdiYSgxNTYsIDIyOSwgMjE4LCAwLjM1KSFpbXBvcnRhbnR9Ci5iZy10ZWFsNntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMTU2LCAyMjksIDIxOCwgMC4zNSkhaW1wb3J0YW50fQoudGVhbDd7Y29sb3I6cmdiYSgyMDUsIDI0MiwgMjMwLCAwLjM1KSFpbXBvcnRhbnR9Ci5iZy10ZWFsN3tiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjA1LCAyNDIsIDIzMCwgMC4zNSkhaW1wb3J0YW50fQouZ3JlZW4tMntjb2xvcjojMjEzMzA2IWltcG9ydGFudH0KLmJnLWdyZWVuLTJ7YmFja2dyb3VuZC1jb2xvcjojMjEzMzA2IWltcG9ydGFudH0KLmdyZWVuLTF7Y29sb3I6IzQ4NmYwZCFpbXBvcnRhbnR9Ci5iZy1ncmVlbi0xe2JhY2tncm91bmQtY29sb3I6IzQ4NmYwZCFpbXBvcnRhbnR9Ci5ncmVlbjB7Y29sb3I6IzY1OWMxMyFpbXBvcnRhbnR9Ci5iZy1ncmVlbjB7YmFja2dyb3VuZC1jb2xvcjojNjU5YzEzIWltcG9ydGFudH0KLmdyZWVuMXtjb2xvcjojOWFjNTVjIWltcG9ydGFudH0KLmJnLWdyZWVuMXtiYWNrZ3JvdW5kLWNvbG9yOiM5YWM1NWMhaW1wb3J0YW50fQouZ3JlZW4ye2NvbG9yOiNjNmU2OTchaW1wb3J0YW50fQouYmctZ3JlZW4ye2JhY2tncm91bmQtY29sb3I6I2M2ZTY5NyFpbXBvcnRhbnR9Ci5ncmVlbjN7Y29sb3I6I2Q0ZWViMSFpbXBvcnRhbnR9Ci5iZy1ncmVlbjN7YmFja2dyb3VuZC1jb2xvcjojZDRlZWIxIWltcG9ydGFudH0KLmdyZWVuNHtjb2xvcjojZTBmNWM2IWltcG9ydGFudH0KLmJnLWdyZWVuNHtiYWNrZ3JvdW5kLWNvbG9yOiNlMGY1YzYhaW1wb3J0YW50fQouZ3JlZW41e2NvbG9yOnJnYmEoMTU0LCAxOTcsIDkyLCAwLjM1KSFpbXBvcnRhbnR9Ci5iZy1ncmVlbjV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDE1NCwgMTk3LCA5MiwgMC4zNSkhaW1wb3J0YW50fQouZ3JlZW42e2NvbG9yOnJnYmEoMTk4LCAyMzAsIDE1MSwgMC4zNSkhaW1wb3J0YW50fQouYmctZ3JlZW42e2JhY2tncm91bmQtY29sb3I6cmdiYSgxOTgsIDIzMCwgMTUxLCAwLjM1KSFpbXBvcnRhbnR9Ci5ncmVlbjd7Y29sb3I6cmdiYSgyMjQsIDI0NSwgMTk4LCAwLjM1KSFpbXBvcnRhbnR9Ci5iZy1ncmVlbjd7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDIyNCwgMjQ1LCAxOTgsIDAuMzUpIWltcG9ydGFudH0KLnllbGxvdy0ye2NvbG9yOiM4ZDVkMDkhaW1wb3J0YW50fQouYmcteWVsbG93LTJ7YmFja2dyb3VuZC1jb2xvcjojOGQ1ZDA5IWltcG9ydGFudH0KLnllbGxvdy0xe2NvbG9yOiNjYzg2MGQhaW1wb3J0YW50fQouYmcteWVsbG93LTF7YmFja2dyb3VuZC1jb2xvcjojY2M4NjBkIWltcG9ydGFudH0KLnllbGxvdzB7Y29sb3I6I2YwYTIxYyFpbXBvcnRhbnR9Ci5iZy15ZWxsb3cwe2JhY2tncm91bmQtY29sb3I6I2YwYTIxYyFpbXBvcnRhbnR9Ci55ZWxsb3cxe2NvbG9yOiNmOGM5NTIhaW1wb3J0YW50fQouYmcteWVsbG93MXtiYWNrZ3JvdW5kLWNvbG9yOiNmOGM5NTIhaW1wb3J0YW50fQoueWVsbG93Mntjb2xvcjojZmZlOTdmIWltcG9ydGFudH0KLmJnLXllbGxvdzJ7YmFja2dyb3VuZC1jb2xvcjojZmZlOTdmIWltcG9ydGFudH0KLnllbGxvdzN7Y29sb3I6I2ZmZWY5MSFpbXBvcnRhbnR9Ci5iZy15ZWxsb3cze2JhY2tncm91bmQtY29sb3I6I2ZmZWY5MSFpbXBvcnRhbnR9Ci55ZWxsb3c0e2NvbG9yOiNmZmY0YTAhaW1wb3J0YW50fQouYmcteWVsbG93NHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY0YTAhaW1wb3J0YW50fQoueWVsbG93NXtjb2xvcjpyZ2JhKDI0OCwgMjAxLCA4MiwgMC4zNSkhaW1wb3J0YW50fQouYmcteWVsbG93NXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ4LCAyMDEsIDgyLCAwLjM1KSFpbXBvcnRhbnR9Ci55ZWxsb3c2e2NvbG9yOnJnYmEoMjU1LCAyMzMsIDEyNywgMC4zNSkhaW1wb3J0YW50fQouYmcteWVsbG93NntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LCAyMzMsIDEyNywgMC4zNSkhaW1wb3J0YW50fQoueWVsbG93N3tjb2xvcjpyZ2JhKDI1NSwgMjQ0LCAxNjAsIDAuMzUpIWltcG9ydGFudH0KLmJnLXllbGxvdzd7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwgMjQ0LCAxNjAsIDAuMzUpIWltcG9ydGFudH0KLm9yYW5nZS0ye2NvbG9yOiNhMTQwMDUhaW1wb3J0YW50fQouYmctb3JhbmdlLTJ7YmFja2dyb3VuZC1jb2xvcjojYTE0MDA1IWltcG9ydGFudH0KLm9yYW5nZS0xe2NvbG9yOiNlMTVhMDchaW1wb3J0YW50fQouYmctb3JhbmdlLTF7YmFja2dyb3VuZC1jb2xvcjojZTE1YTA3IWltcG9ydGFudH0KLm9yYW5nZTB7Y29sb3I6I2Y4NzQyMyFpbXBvcnRhbnR9Ci5iZy1vcmFuZ2Uwe2JhY2tncm91bmQtY29sb3I6I2Y4NzQyMyFpbXBvcnRhbnR9Ci5vcmFuZ2Uxe2NvbG9yOiNmYjlmNjchaW1wb3J0YW50fQouYmctb3JhbmdlMXtiYWNrZ3JvdW5kLWNvbG9yOiNmYjlmNjchaW1wb3J0YW50fQoub3JhbmdlMntjb2xvcjojZmVjMjllIWltcG9ydGFudH0KLmJnLW9yYW5nZTJ7YmFja2dyb3VuZC1jb2xvcjojZmVjMjllIWltcG9ydGFudH0KLm9yYW5nZTN7Y29sb3I6I2ZmY2ZhNSFpbXBvcnRhbnR9Ci5iZy1vcmFuZ2Uze2JhY2tncm91bmQtY29sb3I6I2ZmY2ZhNSFpbXBvcnRhbnR9Ci5vcmFuZ2U0e2NvbG9yOiNmZmRhYWEhaW1wb3J0YW50fQouYmctb3JhbmdlNHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmRhYWEhaW1wb3J0YW50fQoub3JhbmdlNXtjb2xvcjpyZ2JhKDI1MSwgMTU5LCAxMDMsIDAuMzUpIWltcG9ydGFudH0KLmJnLW9yYW5nZTV7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1MSwgMTU5LCAxMDMsIDAuMzUpIWltcG9ydGFudH0KLm9yYW5nZTZ7Y29sb3I6cmdiYSgyNTQsIDE5NCwgMTU4LCAwLjM1KSFpbXBvcnRhbnR9Ci5iZy1vcmFuZ2U2e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTQsIDE5NCwgMTU4LCAwLjM1KSFpbXBvcnRhbnR9Ci5vcmFuZ2U3e2NvbG9yOnJnYmEoMjU1LCAyMTgsIDE3MCwgMC4zNSkhaW1wb3J0YW50fQouYmctb3JhbmdlN3tiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LCAyMTgsIDE3MCwgMC4zNSkhaW1wb3J0YW50fQoucmVkLTJ7Y29sb3I6Izc2MTcyNyFpbXBvcnRhbnR9Ci5iZy1yZWQtMntiYWNrZ3JvdW5kLWNvbG9yOiM3NjE3MjchaW1wb3J0YW50fQoucmVkLTF7Y29sb3I6I2FkMjIzOSFpbXBvcnRhbnR9Ci5iZy1yZWQtMXtiYWNrZ3JvdW5kLWNvbG9yOiNhZDIyMzkhaW1wb3J0YW50fQoucmVkMHtjb2xvcjojZDYyYzQ5IWltcG9ydGFudH0KLmJnLXJlZDB7YmFja2dyb3VuZC1jb2xvcjojZDYyYzQ5IWltcG9ydGFudH0KLnJlZDF7Y29sb3I6I2VhNzI4NiFpbXBvcnRhbnR9Ci5iZy1yZWQxe2JhY2tncm91bmQtY29sb3I6I2VhNzI4NiFpbXBvcnRhbnR9Ci5yZWQye2NvbG9yOiNmYWFiYjghaW1wb3J0YW50fQouYmctcmVkMntiYWNrZ3JvdW5kLWNvbG9yOiNmYWFiYjghaW1wb3J0YW50fQoucmVkM3tjb2xvcjojZmNjMWM3IWltcG9ydGFudH0KLmJnLXJlZDN7YmFja2dyb3VuZC1jb2xvcjojZmNjMWM3IWltcG9ydGFudH0KLnJlZDR7Y29sb3I6I2ZlZDNkMyFpbXBvcnRhbnR9Ci5iZy1yZWQ0e2JhY2tncm91bmQtY29sb3I6I2ZlZDNkMyFpbXBvcnRhbnR9Ci5yZWQ1e2NvbG9yOnJnYmEoMjM0LCAxMTQsIDEzNCwgMC4zNSkhaW1wb3J0YW50fQouYmctcmVkNXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjM0LCAxMTQsIDEzNCwgMC4zNSkhaW1wb3J0YW50fQoucmVkNntjb2xvcjpyZ2JhKDI1MCwgMTcxLCAxODQsIDAuMzUpIWltcG9ydGFudH0KLmJnLXJlZDZ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1MCwgMTcxLCAxODQsIDAuMzUpIWltcG9ydGFudH0KLnJlZDd7Y29sb3I6cmdiYSgyNTQsIDIxMSwgMjExLCAwLjM1KSFpbXBvcnRhbnR9Ci5iZy1yZWQ3e2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTQsIDIxMSwgMjExLCAwLjM1KSFpbXBvcnRhbnR9Ci52aW9sZXQtMntjb2xvcjojNDEyMzYzIWltcG9ydGFudH0KLmJnLXZpb2xldC0ye2JhY2tncm91bmQtY29sb3I6IzQxMjM2MyFpbXBvcnRhbnR9Ci52aW9sZXQtMXtjb2xvcjojNjEzNDk0IWltcG9ydGFudH0KLmJnLXZpb2xldC0xe2JhY2tncm91bmQtY29sb3I6IzYxMzQ5NCFpbXBvcnRhbnR9Ci52aW9sZXQwe2NvbG9yOiM3YTQxYmEhaW1wb3J0YW50fQouYmctdmlvbGV0MHtiYWNrZ3JvdW5kLWNvbG9yOiM3YTQxYmEhaW1wb3J0YW50fQoudmlvbGV0MXtjb2xvcjojYWI4NmUwIWltcG9ydGFudH0KLmJnLXZpb2xldDF7YmFja2dyb3VuZC1jb2xvcjojYWI4NmUwIWltcG9ydGFudH0KLnZpb2xldDJ7Y29sb3I6I2QzYmZmZiFpbXBvcnRhbnR9Ci5iZy12aW9sZXQye2JhY2tncm91bmQtY29sb3I6I2QzYmZmZiFpbXBvcnRhbnR9Ci52aW9sZXQze2NvbG9yOiNlMWQyZmYhaW1wb3J0YW50fQouYmctdmlvbGV0M3tiYWNrZ3JvdW5kLWNvbG9yOiNlMWQyZmYhaW1wb3J0YW50fQoudmlvbGV0NHtjb2xvcjojZWNlMWZmIWltcG9ydGFudH0KLmJnLXZpb2xldDR7YmFja2dyb3VuZC1jb2xvcjojZWNlMWZmIWltcG9ydGFudH0KLnZpb2xldDV7Y29sb3I6cmdiYSgxNzEsIDEzNCwgMjI0LCAwLjM1KSFpbXBvcnRhbnR9Ci5iZy12aW9sZXQ1e2JhY2tncm91bmQtY29sb3I6cmdiYSgxNzEsIDEzNCwgMjI0LCAwLjM1KSFpbXBvcnRhbnR9Ci52aW9sZXQ2e2NvbG9yOnJnYmEoMjExLCAxOTEsIDI1NSwgMC4zNSkhaW1wb3J0YW50fQouYmctdmlvbGV0NntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjExLCAxOTEsIDI1NSwgMC4zNSkhaW1wb3J0YW50fQoudmlvbGV0N3tjb2xvcjpyZ2JhKDIzNiwgMjI1LCAyNTUsIDAuMzUpIWltcG9ydGFudH0KLmJnLXZpb2xldDd7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDIzNiwgMjI1LCAyNTUsIDAuMzUpIWltcG9ydGFudH0KLm8we29wYWNpdHk6MC4wMSFpbXBvcnRhbnR9Ci5vMTB7b3BhY2l0eTowLjEhaW1wb3J0YW50fQoubzIwe29wYWNpdHk6MC4yIWltcG9ydGFudH0KLm8zMHtvcGFjaXR5OjAuMyFpbXBvcnRhbnR9Ci5vNDB7b3BhY2l0eTowLjQhaW1wb3J0YW50fQoubzUwe29wYWNpdHk6MC41IWltcG9ydGFudH0KLm82MHtvcGFjaXR5OjAuNiFpbXBvcnRhbnR9Ci5vNzB7b3BhY2l0eTowLjchaW1wb3J0YW50fQoubzgwe29wYWNpdHk6MC44IWltcG9ydGFudH0KLm85MHtvcGFjaXR5OjAuOSFpbXBvcnRhbnR9Ci5vMTAwe29wYWNpdHk6MSFpbXBvcnRhbnR9Ci5sZ3JheXtjb2xvcjojZDBkNmRkIWltcG9ydGFudH0KLmdyYXl7Y29sb3I6Izg4OTI5ZiFpbXBvcnRhbnR9Ci54Z3JheXtjb2xvcjojNGQ1YTZhIWltcG9ydGFudH0KLmJsdWV7Y29sb3I6IzJkNjZiOCFpbXBvcnRhbnR9Ci5za3libHVle2NvbG9yOiM0M2E0ZWYhaW1wb3J0YW50fQouc2t5e2NvbG9yOiM3NmM2ZjMhaW1wb3J0YW50fQoudGVhbHtjb2xvcjojMWJiYmEwIWltcG9ydGFudH0KLmxncmVlbntjb2xvcjojYzZlNjk3IWltcG9ydGFudH0KLmdyZWVue2NvbG9yOiM2NTljMTMhaW1wb3J0YW50fQoueWVsbG93e2NvbG9yOiNmOGM5NTIhaW1wb3J0YW50fQoub3Jhbmdle2NvbG9yOiNmODc0MjMhaW1wb3J0YW50fQoucGlua3tjb2xvcjojZmFhYmI4IWltcG9ydGFudH0KLnNhbG1vbntjb2xvcjojZmRhMDk2IWltcG9ydGFudH0KLmJyb3due2NvbG9yOiNjYzg2MGQhaW1wb3J0YW50fQoucmVke2NvbG9yOiNkNjJjNDkhaW1wb3J0YW50fQouYmctbGdyYXl7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDIyNywgMjMyLCAyMzUsIDAuMzUpIWltcG9ydGFudH0KLmJnLWdyYXl7YmFja2dyb3VuZC1jb2xvcjojZTNlOGViIWltcG9ydGFudH0KLmJnLWxibHVle2JhY2tncm91bmQtY29sb3I6I2NiZTdmZSFpbXBvcnRhbnR9Ci5iZy1sZ3JlZW57YmFja2dyb3VuZC1jb2xvcjojZTBmNWM2IWltcG9ydGFudH0KLmJnLWdyZWVue2JhY2tncm91bmQtY29sb3I6I2M2ZTY5NyFpbXBvcnRhbnR9Ci5iZy15ZWxsb3d7YmFja2dyb3VuZC1jb2xvcjojZmZlOTdmIWltcG9ydGFudH0KLmJnLW9yYW5nZXtiYWNrZ3JvdW5kLWNvbG9yOiNmZWMyOWUhaW1wb3J0YW50fQouYmctY2hhbGt7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwgMjMzLCAxMjcsIDAuMzUpIWltcG9ydGFudH0KLmJnLWxzYWxtb257YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwgODAsIDYwLCAwLjExKSFpbXBvcnRhbnR9Ci5iZy1zYWxtb257YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwgODAsIDYwLCAwLjUpIWltcG9ydGFudH0KaW5wdXRbdHlwZT10ZXh0XSwgaW5wdXRbdHlwZT1wYXNzd29yZF0sIGlucHV0W3R5cGU9bnVtYmVyXSwgaW5wdXRbdHlwZT1kYXRlXSwgaW5wdXRbdHlwZT10aW1lXSwgaW5wdXRbdHlwZT1lbWFpbF0sIGlucHV0W3R5cGU9dGVsXSwgaW5wdXRbdHlwZT1yYW5nZV0sIHRleHRhcmVhey13ZWJraXQtYXBwZWFyYW5jZTpub25lO3RyYW5zaXRpb246Y29sb3IgMC4ycywgYmFja2dyb3VuZC1jb2xvciAwLjJzLCBib3JkZXItY29sb3IgMC4yc30KaW5wdXQsIHNlbGVjdCwgb3B0aW9uLCBidXR0b257Zm9udDoxMDAlICctYXBwbGUtc3lzdGVtJywgJ0JsaW5rTWFjU3lzdGVtRm9udCcsICdIZWx2ZXRpY2EgTmV1ZScsICdTZWdvZSBVSScsIFVidW50dSwgUm9ib3RvLCBIZWx2ZXRpY2EsIFRhaG9tYSwgQXJpYWwsIFZlcmRhbmEsIFNhbnMtc2VyaWY7bGluZS1oZWlnaHQ6MS4zZW07Y29sb3I6IzRkNWE2YTtvdXRsaW5lOm5vbmUhaW1wb3J0YW50fQppbnB1dFt0eXBlPXJhZGlvXSwgaW5wdXRbdHlwZT1jaGVja2JveF0ge2FjY2VudC1jb2xvcjojMmQ2NmI4fQppbnB1dFt0eXBlPXRleHRdLCBpbnB1dFt0eXBlPXBhc3N3b3JkXSwgaW5wdXRbdHlwZT1udW1iZXJdLCBpbnB1dFt0eXBlPWVtYWlsXSwgaW5wdXRbdHlwZT10ZWxdLCBpbnB1dFt0eXBlPWRhdGVdLCBpbnB1dFt0eXBlPXRpbWVdIHtib3JkZXItd2lkdGg6MXB4O2JvcmRlci1zdHlsZTpzb2xpZH0KaW5wdXRbdHlwZT10ZXh0XSwgaW5wdXRbdHlwZT1wYXNzd29yZF0sIGlucHV0W3R5cGU9bnVtYmVyXSwgaW5wdXRbdHlwZT1lbWFpbF0sIGlucHV0W3R5cGU9dGVsXSwgaW5wdXRbdHlwZT1kYXRlXSwgaW5wdXRbdHlwZT10aW1lXSB7cGFkZGluZzowLjM1ZW0gMC40ZW0gMC4zNWVtIDAuNGVtO2JvcmRlci1jb2xvcjojZDBkNmRkO2JvcmRlci1yYWRpdXM6MnB4O2JhY2tncm91bmQtY29sb3I6d2hpdGU7bWFyZ2luOjA7cG9zaXRpb246cmVsYXRpdmV9CmlucHV0W3R5cGU9bnVtYmVyXSB7cGFkZGluZzowLjM1ZW0gMC4yZW0gMC4zNWVtIDAuNGVtfQppbnB1dDpkaXNhYmxlZCwgc2VsZWN0OmRpc2FibGVkLCBvcHRpb246ZGlzYWJsZWQsIHRleHRhcmVhOmRpc2FibGVkLCBidXR0b246ZGlzYWJsZWR7Y29sb3I6Izg4OTI5Zjtib3JkZXItY29sb3I6I2I5YzBjYiFpbXBvcnRhbnQ7b3BhY2l0eTowLjc1fQppbnB1dDpub3QoW3R5cGU9cmFkaW9dKTpub3QoW3R5cGU9Y2hlY2tib3hdKTpub3QoW3R5cGU9YnV0dG9uXSk6Zm9jdXN7b3V0bGluZTpub25lO2JvcmRlci1jb2xvcjojOWVjZGY4fQo6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6I2I5YzBjYn0KOjotbW96LXBsYWNlaG9sZGVye2NvbG9yOiNiOWMwY2J9CjotbXMtaW5wdXQtcGxhY2Vob2xkZXJ7Y29sb3I6I2I5YzBjYn0KOi1tb3otcGxhY2Vob2xkZXJ7Y29sb3I6I2I5YzBjYn0KdGV4dGFyZWF7Zm9udDoxMDAlICctYXBwbGUtc3lzdGVtJywgJ0JsaW5rTWFjU3lzdGVtRm9udCcsICdIZWx2ZXRpY2EgTmV1ZScsICdTZWdvZSBVSScsIFVidW50dSwgUm9ib3RvLCBIZWx2ZXRpY2EsIFRhaG9tYSwgQXJpYWwsIFZlcmRhbmEsIFNhbnMtc2VyaWY7bGluZS1oZWlnaHQ6MS4zZW07Y29sb3I6IzRkNWE2YTtwYWRkaW5nOjAuMzVlbSAwLjRlbSAwLjM1ZW0gMC40ZW07Ym9yZGVyOjFweCBzb2xpZCAjZDBkNmRkO2JvcmRlci1yYWRpdXM6MnB4O2JhY2tncm91bmQtY29sb3I6d2hpdGU7bWFyZ2luOjA7d2lkdGg6OTAlO21pbi1oZWlnaHQ6NjBweDtwb3NpdGlvbjpyZWxhdGl2ZX0KdGV4dGFyZWE6Zm9jdXN7b3V0bGluZTpub25lO2JvcmRlcjoxcHggc29saWQgIzllY2RmOH0Kc2VsZWN0e21hcmdpbjo0cHggMCA0cHggMH0Kc2VsZWN0IG9wdGlvbntwYWRkaW5nOjJweCAzcHggM3B4IDNweH0Kc2VsZWN0W211bHRpcGxlXSB7cGFkZGluZzowLjM1ZW0gMC40ZW0gMC4zNWVtIDAuNGVtO2JvcmRlcjoxcHggc29saWQgI2QwZDZkZDtib3JkZXItcmFkaXVzOjJweDtiYWNrZ3JvdW5kLWNvbG9yOndoaXRlO21hcmdpbjo0cHggMCA0cHggMDtwb3NpdGlvbjpyZWxhdGl2ZX0KbGFiZWwsIC5sYWJlbHtkaXNwbGF5OmJsb2NrO2xpbmUtaGVpZ2h0OjEuMWVtO2NvbG9yOiM4ODkyOWY7bWFyZ2luOjNweCAwIDRweCAwfQppbnB1dFt0eXBlPSdjaGVja2JveCddICsgbGFiZWx7ZGlzcGxheTppbmxpbmV9CmlucHV0W3R5cGU9J3JhZGlvJ10gKyBsYWJlbHtkaXNwbGF5OmlubGluZX0KZmllbGRzZXR7Ym9yZGVyLXJhZGl1czoycHg7bWFyZ2luOjBweCAwIDIwcHggMDtib3JkZXI6MXB4IHNvbGlkICNjY2M7cGFkZGluZzoxMHB4fQpsZWdlbmR7cGFkZGluZzowIDJweCAwIDJweH0KaW5wdXRbdHlwZT1idXR0b25dOmZvY3VzLCBidXR0b246Zm9jdXN7b3V0bGluZTpub25lIWltcG9ydGFudH0KaW5wdXRbdHlwZT0nYnV0dG9uJ10sIGJ1dHRvbiwgLmJ1dHRvbntib3JkZXItd2lkdGg6MXB4O2JvcmRlci1zdHlsZTpzb2xpZH0KaW5wdXRbdHlwZT0nYnV0dG9uJ10sIGJ1dHRvbiwgLmJ1dHRvbntsaW5lLWhlaWdodDoxLjNlbTtjb2xvcjojNGQ1YTZhO2JvcmRlci1jb2xvcjojZTNlOGViO2JvcmRlci1yYWRpdXM6M3B4O2Rpc3BsYXk6aW5saW5lLWJsb2NrO2N1cnNvcjpwb2ludGVyO3BhZGRpbmc6MC4zZW0gMC43ZW0gMC40ZW0gMC43ZW07bWFyZ2luOjA7YmFja2dyb3VuZC1jb2xvcjojZTNlOGViO3RyYW5zaXRpb246Ym9yZGVyIDAuM3MsIGNvbG9yIDAuM3MsIG9wYWNpdHkgMC4zcywgYmFja2dyb3VuZC1jb2xvciAwLjNzOy13ZWJraXQtYXBwZWFyYW5jZTpub25lO2JveC1zaGFkb3c6bm9uZTstbW96LWJveC1zaGFkb3c6bm9uZTstd2Via2l0LWJveC1zaGFkb3c6bm9uZX0KaW5wdXRbdHlwZT0nYnV0dG9uJ106aG92ZXIsIC5idXR0b246aG92ZXIsIGJ1dHRvbjpob3Zlcntib3JkZXItY29sb3I6IzZiOWZkYjtjb2xvcjojMmQ2NmI4O2JhY2tncm91bmQtY29sb3I6I2ZmZiFpbXBvcnRhbnQ7b3BhY2l0eToxfQppbnB1dFt0eXBlPSdidXR0b24nXTpkaXNhYmxlZCwgaW5wdXRbdHlwZT0nYnV0dG9uJ106ZGlzYWJsZWQ6aG92ZXIsIGJ1dHRvbjpkaXNhYmxlZCwgYnV0dG9uOmRpc2FibGVkOmhvdmVyLCAuYnV0dG9uLmRpc2FibGVkLCAuYnV0dG9uLmRpc2FibGVkOmhvdmVye2JvcmRlci1jb2xvcjojZTNlOGViIWltcG9ydGFudDtjb2xvcjojODg5MjlmIWltcG9ydGFudDtvcGFjaXR5OjAuNjUhaW1wb3J0YW50O2JhY2tncm91bmQtY29sb3I6I2UzZThlYiFpbXBvcnRhbnQ7Y3Vyc29yOmRlZmF1bHQhaW1wb3J0YW50fQpidXR0b24ubWFya2ZvY3Vze3Bvc2l0aW9uOnJlbGF0aXZlfQpidXR0b24ubWFya2ZvY3VzOmZvY3VzOmFmdGVye2NvbnRlbnQ6IiAiO3Bvc2l0aW9uOmFic29sdXRlO3RvcDozcHg7cmlnaHQ6M3B4O3dpZHRoOjRweDtoZWlnaHQ6NHB4O2JvcmRlci1yYWRpdXM6M3B4O292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kLWNvbG9yOiNmZmYhaW1wb3J0YW50O3otaW5kZXg6Mn0KaW5wdXRbdHlwZT1idXR0b25dLmJsdWU6aG92ZXIsIC5idXR0b24uYmx1ZTpob3ZlciwgYnV0dG9uLmJsdWU6aG92ZXJ7Ym9yZGVyLWNvbG9yOiM2YjlmZGJ9CmlucHV0W3R5cGU9YnV0dG9uXS5ibHVlLCAuYnV0dG9uLmJsdWUsIGJ1dHRvbi5ibHVle2JvcmRlci1jb2xvcjojY2JlN2ZlO2JhY2tncm91bmQtY29sb3I6I2NiZTdmZTtjb2xvcjojMmQ2NmI4fQppbnB1dFt0eXBlPWJ1dHRvbl0udGVhbDpob3ZlciwgLmJ1dHRvbi50ZWFsOmhvdmVyLCBidXR0b24udGVhbDpob3Zlcntib3JkZXItY29sb3I6IzFiYmJhMH0KaW5wdXRbdHlwZT1idXR0b25dLnRlYWwsIC5idXR0b24udGVhbCwgYnV0dG9uLnRlYWx7Ym9yZGVyLWNvbG9yOiNjZGYyZTY7YmFja2dyb3VuZC1jb2xvcjojY2RmMmU2fQppbnB1dFt0eXBlPWJ1dHRvbl0uZ3JlZW46aG92ZXIsIC5idXR0b24uZ3JlZW46aG92ZXIsIGJ1dHRvbi5ncmVlbjpob3Zlcntib3JkZXItY29sb3I6IzlhYzU1Yztjb2xvcjojNjU5YzEzfQppbnB1dFt0eXBlPWJ1dHRvbl0uZ3JlZW4sIC5idXR0b24uZ3JlZW4sIGJ1dHRvbi5ncmVlbntib3JkZXItY29sb3I6I2UwZjVjNjtiYWNrZ3JvdW5kLWNvbG9yOiNlMGY1YzZ9CmlucHV0W3R5cGU9YnV0dG9uXS5vcmFuZ2U6aG92ZXIsIC5idXR0b24ub3JhbmdlOmhvdmVyLCBidXR0b24ub3JhbmdlOmhvdmVye2JvcmRlci1jb2xvcjojZmVjMjllO2NvbG9yOiNmODc0MjN9CmlucHV0W3R5cGU9YnV0dG9uXS5vcmFuZ2UsIC5idXR0b24ub3JhbmdlLCBidXR0b24ub3Jhbmdle2JvcmRlci1jb2xvcjojZmZkYWFhO2JhY2tncm91bmQtY29sb3I6I2ZmZGFhYTtjb2xvcjojZjg3NDIzfQppbnB1dFt0eXBlPWJ1dHRvbl0ucmVkOmhvdmVyLCAuYnV0dG9uLnJlZDpob3ZlciwgYnV0dG9uLnJlZDpob3Zlcntib3JkZXItY29sb3I6I2ZhYWJiODtjb2xvcjojZDYyYzQ5fQppbnB1dFt0eXBlPWJ1dHRvbl0ucmVkLCAuYnV0dG9uLnJlZCwgYnV0dG9uLnJlZHtib3JkZXItY29sb3I6I2ZlZDNkMztiYWNrZ3JvdW5kLWNvbG9yOiNmZWQzZDM7Y29sb3I6I2Q2MmM0OX0KaW5wdXRbdHlwZT1idXR0b25dLnZpb2xldDpob3ZlciwgLmJ1dHRvbi52aW9sZXQ6aG92ZXIsIGJ1dHRvbi52aW9sZXQ6aG92ZXJ7Ym9yZGVyLWNvbG9yOiNkM2JmZmY7Y29sb3I6IzdhNDFiYX0KaW5wdXRbdHlwZT1idXR0b25dLnZpb2xldCwgLmJ1dHRvbi52aW9sZXQsIGJ1dHRvbi52aW9sZXR7Ym9yZGVyLWNvbG9yOiNlY2UxZmY7YmFja2dyb3VuZC1jb2xvcjojZWNlMWZmO2NvbG9yOiM3YTQxYmF9CmE6YWN0aXZlLCBhOmZvY3Vze291dGxpbmU6bm9uZX0KYSwgLnBzZXVkb2xpbmt7Y29sb3I6IzJkNjZiODtjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOmNvbG9yIDAuM3M7LXdlYmtpdC10cmFuc2l0aW9uOmNvbG9yIDAuM3MsIGJvcmRlciAwLjNzOy1vcGVyYS10cmFuc2l0aW9uOmNvbG9yIDAuM3MsIGJvcmRlciAwLjNzOy1tcy10cmFuc2l0aW9uOmNvbG9yIDAuM3MsIGJvcmRlciAwLjNzOy1tb3otdHJhbnNpdGlvbjpjb2xvciAwLjNzLCBib3JkZXIgMC4zc30KLnBzZXVkb2xpbmt7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtjb2xvcjojMmQ2NmI4fQphOmhvdmVyLCAucHNldWRvbGluazpob3ZlciwgLnBzZXVkb2J1dHRvbjpob3Zlcntjb2xvcjojMTJhNWRjfQouaG92ZXJsaW5rIC5wc2V1ZG9saW5re3RleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOmluaGVyaXQ7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSgyNTUsIDI1NSwgMjU1LCAwKX0KLmhvdmVybGluazpob3ZlciAucHNldWRvbGlua3t0ZXh0LWRlY29yYXRpb246bm9uZTtjb2xvcjojMmQ2NmI4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICM5ZWNkZjh9Ci5ob3Zlcmxpbms6aG92ZXIgLnBzZXVkb2xpbms6aG92ZXJ7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzlhZTBmMTtjb2xvcjojMTJhNWRjfQphIGltZ3tib3JkZXI6bm9uZSFpbXBvcnRhbnR9Ci53MXt3aWR0aDoxcHghaW1wb3J0YW50fQoudzJ7d2lkdGg6MnB4IWltcG9ydGFudH0KLncze3dpZHRoOjNweCFpbXBvcnRhbnR9Ci53NHt3aWR0aDo0cHghaW1wb3J0YW50fQoudzV7d2lkdGg6NXB4IWltcG9ydGFudH0KLnc2e3dpZHRoOjZweCFpbXBvcnRhbnR9Ci53N3t3aWR0aDo3cHghaW1wb3J0YW50fQoudzh7d2lkdGg6OHB4IWltcG9ydGFudH0KLnc5e3dpZHRoOjlweCFpbXBvcnRhbnR9Ci53MTB7d2lkdGg6MTBweCFpbXBvcnRhbnR9Ci53MTF7d2lkdGg6MTFweCFpbXBvcnRhbnR9Ci53MTJ7d2lkdGg6MTJweCFpbXBvcnRhbnR9Ci53MTN7d2lkdGg6MTNweCFpbXBvcnRhbnR9Ci53MTR7d2lkdGg6MTRweCFpbXBvcnRhbnR9Ci53MTV7d2lkdGg6MTVweCFpbXBvcnRhbnR9Ci53MTZ7d2lkdGg6MTZweCFpbXBvcnRhbnR9Ci53MTd7d2lkdGg6MTdweCFpbXBvcnRhbnR9Ci53MTh7d2lkdGg6MThweCFpbXBvcnRhbnR9Ci53MTl7d2lkdGg6MTlweCFpbXBvcnRhbnR9Ci53MjB7d2lkdGg6MjBweCFpbXBvcnRhbnR9Ci53MjF7d2lkdGg6MjFweCFpbXBvcnRhbnR9Ci53MjJ7d2lkdGg6MjJweCFpbXBvcnRhbnR9Ci53MjN7d2lkdGg6MjNweCFpbXBvcnRhbnR9Ci53MjR7d2lkdGg6MjRweCFpbXBvcnRhbnR9Ci53MjV7d2lkdGg6MjVweCFpbXBvcnRhbnR9Ci53MzB7d2lkdGg6MzBweCFpbXBvcnRhbnR9Ci53MzJ7d2lkdGg6MzJweCFpbXBvcnRhbnR9Ci53MzV7d2lkdGg6MzVweCFpbXBvcnRhbnR9Ci53NDB7d2lkdGg6NDBweCFpbXBvcnRhbnR9Ci53NDV7d2lkdGg6NDVweCFpbXBvcnRhbnR9Ci53NDh7d2lkdGg6NDhweCFpbXBvcnRhbnR9Ci53NTB7d2lkdGg6NTBweCFpbXBvcnRhbnR9Ci53NTV7d2lkdGg6NTVweCFpbXBvcnRhbnR9Ci53NjB7d2lkdGg6NjBweCFpbXBvcnRhbnR9Ci53NjR7d2lkdGg6NjRweCFpbXBvcnRhbnR9Ci53NjV7d2lkdGg6NjVweCFpbXBvcnRhbnR9Ci53NzB7d2lkdGg6NzBweCFpbXBvcnRhbnR9Ci53NzV7d2lkdGg6NzVweCFpbXBvcnRhbnR9Ci53ODB7d2lkdGg6ODBweCFpbXBvcnRhbnR9Ci53ODV7d2lkdGg6ODVweCFpbXBvcnRhbnR9Ci53OTB7d2lkdGg6OTBweCFpbXBvcnRhbnR9Ci53OTV7d2lkdGg6OTVweCFpbXBvcnRhbnR9Ci53OTZ7d2lkdGg6OTZweCFpbXBvcnRhbnR9Ci53MTAwe3dpZHRoOjEwMHB4IWltcG9ydGFudH0KLncxMDV7d2lkdGg6MTA1cHghaW1wb3J0YW50fQoudzExMHt3aWR0aDoxMTBweCFpbXBvcnRhbnR9Ci53MTE1e3dpZHRoOjExNXB4IWltcG9ydGFudH0KLncxMjB7d2lkdGg6MTIwcHghaW1wb3J0YW50fQoudzEyNXt3aWR0aDoxMjVweCFpbXBvcnRhbnR9Ci53MTMwe3dpZHRoOjEzMHB4IWltcG9ydGFudH0KLncxMzV7d2lkdGg6MTM1cHghaW1wb3J0YW50fQoudzE0MHt3aWR0aDoxNDBweCFpbXBvcnRhbnR9Ci53MTQ1e3dpZHRoOjE0NXB4IWltcG9ydGFudH0KLncxNTB7d2lkdGg6MTUwcHghaW1wb3J0YW50fQoudzE1NXt3aWR0aDoxNTVweCFpbXBvcnRhbnR9Ci53MTYwe3dpZHRoOjE2MHB4IWltcG9ydGFudH0KLncxNjV7d2lkdGg6MTY1cHghaW1wb3J0YW50fQoudzE3MHt3aWR0aDoxNzBweCFpbXBvcnRhbnR9Ci53MTc1e3dpZHRoOjE3NXB4IWltcG9ydGFudH0KLncxODB7d2lkdGg6MTgwcHghaW1wb3J0YW50fQoudzE4NXt3aWR0aDoxODVweCFpbXBvcnRhbnR9Ci53MTkwe3dpZHRoOjE5MHB4IWltcG9ydGFudH0KLncxOTV7d2lkdGg6MTk1cHghaW1wb3J0YW50fQoudzIwMHt3aWR0aDoyMDBweCFpbXBvcnRhbnR9Ci53MjEwe3dpZHRoOjIxMHB4IWltcG9ydGFudH0KLncyMjB7d2lkdGg6MjIwcHghaW1wb3J0YW50fQoudzIzMHt3aWR0aDoyMzBweCFpbXBvcnRhbnR9Ci53MjQwe3dpZHRoOjI0MHB4IWltcG9ydGFudH0KLncyNTB7d2lkdGg6MjUwcHghaW1wb3J0YW50fQoudzI2MHt3aWR0aDoyNjBweCFpbXBvcnRhbnR9Ci53Mjcwe3dpZHRoOjI3MHB4IWltcG9ydGFudH0KLncyODB7d2lkdGg6MjgwcHghaW1wb3J0YW50fQoudzI5MHt3aWR0aDoyOTBweCFpbXBvcnRhbnR9Ci53MzAwe3dpZHRoOjMwMHB4IWltcG9ydGFudH0KLnczMTB7d2lkdGg6MzEwcHghaW1wb3J0YW50fQoudzMyMHt3aWR0aDozMjBweCFpbXBvcnRhbnR9Ci53MzMwe3dpZHRoOjMzMHB4IWltcG9ydGFudH0KLnczNDB7d2lkdGg6MzQwcHghaW1wb3J0YW50fQoudzM1MHt3aWR0aDozNTBweCFpbXBvcnRhbnR9Ci53MzYwe3dpZHRoOjM2MHB4IWltcG9ydGFudH0KLnczNzB7d2lkdGg6MzcwcHghaW1wb3J0YW50fQoudzM4MHt3aWR0aDozODBweCFpbXBvcnRhbnR9Ci53Mzkwe3dpZHRoOjM5MHB4IWltcG9ydGFudH0KLnc0MDB7d2lkdGg6NDAwcHghaW1wb3J0YW50fQoudzQyMHt3aWR0aDo0MjBweCFpbXBvcnRhbnR9Ci53NDUwe3dpZHRoOjQ1MHB4IWltcG9ydGFudH0KLnc1MDB7d2lkdGg6NTAwcHghaW1wb3J0YW50fQoudzUyMHt3aWR0aDo1MjBweCFpbXBvcnRhbnR9Ci53NTUwe3dpZHRoOjU1MHB4IWltcG9ydGFudH0KLnc2MDB7d2lkdGg6NjAwcHghaW1wb3J0YW50fQoudzYyMHt3aWR0aDo2MjBweCFpbXBvcnRhbnR9Ci53NjUwe3dpZHRoOjY1MHB4IWltcG9ydGFudH0KLnc3MDB7d2lkdGg6NzAwcHghaW1wb3J0YW50fQoudzcyMHt3aWR0aDo3MjBweCFpbXBvcnRhbnR9Ci53NzUwe3dpZHRoOjc1MHB4IWltcG9ydGFudH0KLnc4MDB7d2lkdGg6ODAwcHghaW1wb3J0YW50fQoudzgyMHt3aWR0aDo4MjBweCFpbXBvcnRhbnR9Ci53ODUwe3dpZHRoOjg1MHB4IWltcG9ydGFudH0KLnc5MDB7d2lkdGg6OTAwcHghaW1wb3J0YW50fQoudzkyMHt3aWR0aDo5MjBweCFpbXBvcnRhbnR9Ci53OTUwe3dpZHRoOjk1MHB4IWltcG9ydGFudH0KLncxMDAwe3dpZHRoOjEwMDBweCFpbXBvcnRhbnR9Ci53MTA1MHt3aWR0aDoxMDUwcHghaW1wb3J0YW50fQoudzExMDB7d2lkdGg6MTEwMHB4IWltcG9ydGFudH0KLncxMTUwe3dpZHRoOjExNTBweCFpbXBvcnRhbnR9Ci53MTE2MHt3aWR0aDoxMTYwcHghaW1wb3J0YW50fQoudzEyMDB7d2lkdGg6MTIwMHB4IWltcG9ydGFudH0KLncxMjUwe3dpZHRoOjEyNTBweCFpbXBvcnRhbnR9Ci53MTMwMHt3aWR0aDoxMzAwcHghaW1wb3J0YW50fQoudzEzNTB7d2lkdGg6MTM1MHB4IWltcG9ydGFudH0KLncxNDAwe3dpZHRoOjE0MDBweCFpbXBvcnRhbnR9Ci53MTQ1MHt3aWR0aDoxNDUwcHghaW1wb3J0YW50fQoudzE1MDB7d2lkdGg6MTUwMHB4IWltcG9ydGFudH0KLnc1cHt3aWR0aDo1JSFpbXBvcnRhbnR9Ci53MTBwe3dpZHRoOjEwJSFpbXBvcnRhbnR9Ci53MTVwe3dpZHRoOjE1JSFpbXBvcnRhbnR9Ci53MjBwe3dpZHRoOjIwJSFpbXBvcnRhbnR9Ci53MjVwe3dpZHRoOjI1JSFpbXBvcnRhbnR9Ci53MzBwe3dpZHRoOjMwJSFpbXBvcnRhbnR9Ci53MzVwe3dpZHRoOjM1JSFpbXBvcnRhbnR9Ci53NDBwe3dpZHRoOjQwJSFpbXBvcnRhbnR9Ci53NDVwe3dpZHRoOjQ1JSFpbXBvcnRhbnR9Ci53NTBwe3dpZHRoOjUwJSFpbXBvcnRhbnR9Ci53NTVwe3dpZHRoOjU1JSFpbXBvcnRhbnR9Ci53NjBwe3dpZHRoOjYwJSFpbXBvcnRhbnR9Ci53NjVwe3dpZHRoOjY1JSFpbXBvcnRhbnR9Ci53NzBwe3dpZHRoOjcwJSFpbXBvcnRhbnR9Ci53NzVwe3dpZHRoOjc1JSFpbXBvcnRhbnR9Ci53ODBwe3dpZHRoOjgwJSFpbXBvcnRhbnR9Ci53ODVwe3dpZHRoOjg1JSFpbXBvcnRhbnR9Ci53OTBwe3dpZHRoOjkwJSFpbXBvcnRhbnR9Ci53OTVwe3dpZHRoOjk1JSFpbXBvcnRhbnR9Ci53MTAwcHt3aWR0aDoxMDAlIWltcG9ydGFudH0KLmgwe2hlaWdodDowcHghaW1wb3J0YW50fQouaDF7aGVpZ2h0OjFweCFpbXBvcnRhbnR9Ci5oMntoZWlnaHQ6MnB4IWltcG9ydGFudH0KLmgze2hlaWdodDozcHghaW1wb3J0YW50fQouaDR7aGVpZ2h0OjRweCFpbXBvcnRhbnR9Ci5oNXtoZWlnaHQ6NXB4IWltcG9ydGFudH0KLmgxMHtoZWlnaHQ6MTBweCFpbXBvcnRhbnR9Ci5oMTV7aGVpZ2h0OjE1cHghaW1wb3J0YW50fQouaDE2e2hlaWdodDoxNnB4IWltcG9ydGFudH0KLmgyMHtoZWlnaHQ6MjBweCFpbXBvcnRhbnR9Ci5oMjR7aGVpZ2h0OjI0cHghaW1wb3J0YW50fQouaDI1e2hlaWdodDoyNXB4IWltcG9ydGFudH0KLmgzMHtoZWlnaHQ6MzBweCFpbXBvcnRhbnR9Ci5oMzJ7aGVpZ2h0OjMycHghaW1wb3J0YW50fQouaDM1e2hlaWdodDozNXB4IWltcG9ydGFudH0KLmg0MHtoZWlnaHQ6NDBweCFpbXBvcnRhbnR9Ci5oNDV7aGVpZ2h0OjQ1cHghaW1wb3J0YW50fQouaDQ4e2hlaWdodDo0OHB4IWltcG9ydGFudH0KLmg1MHtoZWlnaHQ6NTBweCFpbXBvcnRhbnR9Ci5oNTV7aGVpZ2h0OjU1cHghaW1wb3J0YW50fQouaDYwe2hlaWdodDo2MHB4IWltcG9ydGFudH0KLmg2NHtoZWlnaHQ6NjRweCFpbXBvcnRhbnR9Ci5oNjV7aGVpZ2h0OjY1cHghaW1wb3J0YW50fQouaDcwe2hlaWdodDo3MHB4IWltcG9ydGFudH0KLmg3NXtoZWlnaHQ6NzVweCFpbXBvcnRhbnR9Ci5oODB7aGVpZ2h0OjgwcHghaW1wb3J0YW50fQouaDg1e2hlaWdodDo4NXB4IWltcG9ydGFudH0KLmg5MHtoZWlnaHQ6OTBweCFpbXBvcnRhbnR9Ci5oOTV7aGVpZ2h0Ojk1cHghaW1wb3J0YW50fQouaDk2e2hlaWdodDo5NnB4IWltcG9ydGFudH0KLmgxMDB7aGVpZ2h0OjEwMHB4IWltcG9ydGFudH0KLmgxMTB7aGVpZ2h0OjExMHB4IWltcG9ydGFudH0KLmgxMjB7aGVpZ2h0OjEyMHB4IWltcG9ydGFudH0KLmgxMzB7aGVpZ2h0OjEzMHB4IWltcG9ydGFudH0KLmgxNDB7aGVpZ2h0OjE0MHB4IWltcG9ydGFudH0KLmgxNTB7aGVpZ2h0OjE1MHB4IWltcG9ydGFudH0KLmgxNjB7aGVpZ2h0OjE2MHB4IWltcG9ydGFudH0KLmgxNzB7aGVpZ2h0OjE3MHB4IWltcG9ydGFudH0KLmgxODB7aGVpZ2h0OjE4MHB4IWltcG9ydGFudH0KLmgxOTB7aGVpZ2h0OjE5MHB4IWltcG9ydGFudH0KLmgyMDB7aGVpZ2h0OjIwMHB4IWltcG9ydGFudH0KLmgyNTB7aGVpZ2h0OjI1MHB4IWltcG9ydGFudH0KLmgzMDB7aGVpZ2h0OjMwMHB4IWltcG9ydGFudH0KLmgzNTB7aGVpZ2h0OjM1MHB4IWltcG9ydGFudH0KLmg0MDB7aGVpZ2h0OjQwMHB4IWltcG9ydGFudH0KLmg0NTB7aGVpZ2h0OjQ1MHB4IWltcG9ydGFudH0KLmg1MDB7aGVpZ2h0OjUwMHB4IWltcG9ydGFudH0KLmg1NTB7aGVpZ2h0OjU1MHB4IWltcG9ydGFudH0KLmg2MDB7aGVpZ2h0OjYwMHB4IWltcG9ydGFudH0KLmg2NTB7aGVpZ2h0OjY1MHB4IWltcG9ydGFudH0KLmg3MDB7aGVpZ2h0OjcwMHB4IWltcG9ydGFudH0KLmg3NTB7aGVpZ2h0Ojc1MHB4IWltcG9ydGFudH0KLmg4MDB7aGVpZ2h0OjgwMHB4IWltcG9ydGFudH0KLmg4NTB7aGVpZ2h0Ojg1MHB4IWltcG9ydGFudH0KLmg5MDB7aGVpZ2h0OjkwMHB4IWltcG9ydGFudH0KLmg5NTB7aGVpZ2h0Ojk1MHB4IWltcG9ydGFudH0KLmgxMDAwe2hlaWdodDoxMDAwcHghaW1wb3J0YW50fQouaGF7aGVpZ2h0OmF1dG8haW1wb3J0YW50fQouZGl7ZGlzcGxheTppbmxpbmUhaW1wb3J0YW50fQouZGlie2Rpc3BsYXk6aW5saW5lLWJsb2NrIWltcG9ydGFudH0KLmRie2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fQouZGkuaGlkZSwgLmRiLmhpZGUsIC5kaWIuaGlkZSwgLmRpLmZpbHRlci1ub21hdGNoLCAuZGIuZmlsdGVyLW5vbWF0Y2gsIC5kaWIuZmlsdGVyLW5vbWF0Y2h7ZGlzcGxheTpub25lIWltcG9ydGFudH0KLm9oe292ZXJmbG93OmhpZGRlbiFpbXBvcnRhbnR9Ci5vdntvdmVyZmxvdzp2aXNpYmxlIWltcG9ydGFudH0KLmZse2Zsb2F0OmxlZnR9Ci5mcntmbG9hdDpyaWdodH0KLmNie2NsZWFyOmJvdGh9Ci5jcntjbGVhcjpyaWdodH0KLmNse2NsZWFyOmxlZnR9Ci5wMHtwYWRkaW5nOjBweCFpbXBvcnRhbnR9Ci5wMXtwYWRkaW5nOjFweCFpbXBvcnRhbnR9Ci5wMntwYWRkaW5nOjJweCFpbXBvcnRhbnR9Ci5wM3twYWRkaW5nOjNweCFpbXBvcnRhbnR9Ci5wNHtwYWRkaW5nOjRweCFpbXBvcnRhbnR9Ci5wNXtwYWRkaW5nOjVweCFpbXBvcnRhbnR9Ci5wNntwYWRkaW5nOjZweCFpbXBvcnRhbnR9Ci5wN3twYWRkaW5nOjdweCFpbXBvcnRhbnR9Ci5wOHtwYWRkaW5nOjhweCFpbXBvcnRhbnR9Ci5wOXtwYWRkaW5nOjlweCFpbXBvcnRhbnR9Ci5wMTB7cGFkZGluZzoxMHB4IWltcG9ydGFudH0KLnAxNXtwYWRkaW5nOjE1cHghaW1wb3J0YW50fQoucDIwe3BhZGRpbmc6MjBweCFpbXBvcnRhbnR9Ci5wMjV7cGFkZGluZzoyNXB4IWltcG9ydGFudH0KLnAzMHtwYWRkaW5nOjMwcHghaW1wb3J0YW50fQoucDM1e3BhZGRpbmc6MzVweCFpbXBvcnRhbnR9Ci5wNDB7cGFkZGluZzo0MHB4IWltcG9ydGFudH0KLnA0NXtwYWRkaW5nOjQ1cHghaW1wb3J0YW50fQoucDUwe3BhZGRpbmc6NTBweCFpbXBvcnRhbnR9Ci5wNTV7cGFkZGluZzo1NXB4IWltcG9ydGFudH0KLnA2MHtwYWRkaW5nOjYwcHghaW1wb3J0YW50fQoucDY1e3BhZGRpbmc6NjVweCFpbXBvcnRhbnR9Ci5wNzB7cGFkZGluZzo3MHB4IWltcG9ydGFudH0KLnA3NXtwYWRkaW5nOjc1cHghaW1wb3J0YW50fQoucDgwe3BhZGRpbmc6ODBweCFpbXBvcnRhbnR9Ci5wODV7cGFkZGluZzo4NXB4IWltcG9ydGFudH0KLnA5MHtwYWRkaW5nOjkwcHghaW1wb3J0YW50fQoucDk1e3BhZGRpbmc6OTVweCFpbXBvcnRhbnR9Ci5wMTAwe3BhZGRpbmc6MTAwcHghaW1wb3J0YW50fQoucDExMHtwYWRkaW5nOjExMHB4IWltcG9ydGFudH0KLnAxMjB7cGFkZGluZzoxMjBweCFpbXBvcnRhbnR9Ci5wMTMwe3BhZGRpbmc6MTMwcHghaW1wb3J0YW50fQoucDE0MHtwYWRkaW5nOjE0MHB4IWltcG9ydGFudH0KLnAxNTB7cGFkZGluZzoxNTBweCFpbXBvcnRhbnR9Ci5wMTYwe3BhZGRpbmc6MTYwcHghaW1wb3J0YW50fQoucDE3MHtwYWRkaW5nOjE3MHB4IWltcG9ydGFudH0KLnAxODB7cGFkZGluZzoxODBweCFpbXBvcnRhbnR9Ci5wMTkwe3BhZGRpbmc6MTkwcHghaW1wb3J0YW50fQoucDIwMHtwYWRkaW5nOjIwMHB4IWltcG9ydGFudH0KLnAyNTB7cGFkZGluZzoyNTBweCFpbXBvcnRhbnR9Ci5wMzAwe3BhZGRpbmc6MzAwcHghaW1wb3J0YW50fQoucDM1MHtwYWRkaW5nOjM1MHB4IWltcG9ydGFudH0KLnA0MDB7cGFkZGluZzo0MDBweCFpbXBvcnRhbnR9Ci5wNDUwe3BhZGRpbmc6NDUwcHghaW1wb3J0YW50fQoucDUwMHtwYWRkaW5nOjUwMHB4IWltcG9ydGFudH0KLnBsMHtwYWRkaW5nLWxlZnQ6MHB4IWltcG9ydGFudH0KLnBsMXtwYWRkaW5nLWxlZnQ6MXB4IWltcG9ydGFudH0KLnBsMntwYWRkaW5nLWxlZnQ6MnB4IWltcG9ydGFudH0KLnBsM3twYWRkaW5nLWxlZnQ6M3B4IWltcG9ydGFudH0KLnBsNHtwYWRkaW5nLWxlZnQ6NHB4IWltcG9ydGFudH0KLnBsNXtwYWRkaW5nLWxlZnQ6NXB4IWltcG9ydGFudH0KLnBsNntwYWRkaW5nLWxlZnQ6NnB4IWltcG9ydGFudH0KLnBsN3twYWRkaW5nLWxlZnQ6N3B4IWltcG9ydGFudH0KLnBsOHtwYWRkaW5nLWxlZnQ6OHB4IWltcG9ydGFudH0KLnBsOXtwYWRkaW5nLWxlZnQ6OXB4IWltcG9ydGFudH0KLnBsMTB7cGFkZGluZy1sZWZ0OjEwcHghaW1wb3J0YW50fQoucGwxMXtwYWRkaW5nLWxlZnQ6MTFweCFpbXBvcnRhbnR9Ci5wbDEye3BhZGRpbmctbGVmdDoxMnB4IWltcG9ydGFudH0KLnBsMTN7cGFkZGluZy1sZWZ0OjEzcHghaW1wb3J0YW50fQoucGwxNHtwYWRkaW5nLWxlZnQ6MTRweCFpbXBvcnRhbnR9Ci5wbDE1e3BhZGRpbmctbGVmdDoxNXB4IWltcG9ydGFudH0KLnBsMTZ7cGFkZGluZy1sZWZ0OjE2cHghaW1wb3J0YW50fQoucGwxN3twYWRkaW5nLWxlZnQ6MTdweCFpbXBvcnRhbnR9Ci5wbDE4e3BhZGRpbmctbGVmdDoxOHB4IWltcG9ydGFudH0KLnBsMTl7cGFkZGluZy1sZWZ0OjE5cHghaW1wb3J0YW50fQoucGwyMHtwYWRkaW5nLWxlZnQ6MjBweCFpbXBvcnRhbnR9Ci5wbDIxe3BhZGRpbmctbGVmdDoyMXB4IWltcG9ydGFudH0KLnBsMjJ7cGFkZGluZy1sZWZ0OjIycHghaW1wb3J0YW50fQoucGwyM3twYWRkaW5nLWxlZnQ6MjNweCFpbXBvcnRhbnR9Ci5wbDI0e3BhZGRpbmctbGVmdDoyNHB4IWltcG9ydGFudH0KLnBsMjV7cGFkZGluZy1sZWZ0OjI1cHghaW1wb3J0YW50fQoucGwyNntwYWRkaW5nLWxlZnQ6MjZweCFpbXBvcnRhbnR9Ci5wbDI3e3BhZGRpbmctbGVmdDoyN3B4IWltcG9ydGFudH0KLnBsMjh7cGFkZGluZy1sZWZ0OjI4cHghaW1wb3J0YW50fQoucGwyOXtwYWRkaW5nLWxlZnQ6MjlweCFpbXBvcnRhbnR9Ci5wbDMwe3BhZGRpbmctbGVmdDozMHB4IWltcG9ydGFudH0KLnBsMzV7cGFkZGluZy1sZWZ0OjM1cHghaW1wb3J0YW50fQoucGw0MHtwYWRkaW5nLWxlZnQ6NDBweCFpbXBvcnRhbnR9Ci5wbDQ1e3BhZGRpbmctbGVmdDo0NXB4IWltcG9ydGFudH0KLnBsNTB7cGFkZGluZy1sZWZ0OjUwcHghaW1wb3J0YW50fQoucGw1NXtwYWRkaW5nLWxlZnQ6NTVweCFpbXBvcnRhbnR9Ci5wbDYwe3BhZGRpbmctbGVmdDo2MHB4IWltcG9ydGFudH0KLnBsNjV7cGFkZGluZy1sZWZ0OjY1cHghaW1wb3J0YW50fQoucGw3MHtwYWRkaW5nLWxlZnQ6NzBweCFpbXBvcnRhbnR9Ci5wbDc1e3BhZGRpbmctbGVmdDo3NXB4IWltcG9ydGFudH0KLnBsODB7cGFkZGluZy1sZWZ0OjgwcHghaW1wb3J0YW50fQoucGw4NXtwYWRkaW5nLWxlZnQ6ODVweCFpbXBvcnRhbnR9Ci5wbDkwe3BhZGRpbmctbGVmdDo5MHB4IWltcG9ydGFudH0KLnBsOTV7cGFkZGluZy1sZWZ0Ojk1cHghaW1wb3J0YW50fQoucGwxMDB7cGFkZGluZy1sZWZ0OjEwMHB4IWltcG9ydGFudH0KLnBsMTEwe3BhZGRpbmctbGVmdDoxMTBweCFpbXBvcnRhbnR9Ci5wbDEyMHtwYWRkaW5nLWxlZnQ6MTIwcHghaW1wb3J0YW50fQoucGwxMzB7cGFkZGluZy1sZWZ0OjEzMHB4IWltcG9ydGFudH0KLnBsMTQwe3BhZGRpbmctbGVmdDoxNDBweCFpbXBvcnRhbnR9Ci5wbDE1MHtwYWRkaW5nLWxlZnQ6MTUwcHghaW1wb3J0YW50fQoucGwxNjB7cGFkZGluZy1sZWZ0OjE2MHB4IWltcG9ydGFudH0KLnBsMTcwe3BhZGRpbmctbGVmdDoxNzBweCFpbXBvcnRhbnR9Ci5wbDE4MHtwYWRkaW5nLWxlZnQ6MTgwcHghaW1wb3J0YW50fQoucGwxOTB7cGFkZGluZy1sZWZ0OjE5MHB4IWltcG9ydGFudH0KLnBsMjAwe3BhZGRpbmctbGVmdDoyMDBweCFpbXBvcnRhbnR9Ci5wcjB7cGFkZGluZy1yaWdodDowcHghaW1wb3J0YW50fQoucHIxe3BhZGRpbmctcmlnaHQ6MXB4IWltcG9ydGFudH0KLnByMntwYWRkaW5nLXJpZ2h0OjJweCFpbXBvcnRhbnR9Ci5wcjN7cGFkZGluZy1yaWdodDozcHghaW1wb3J0YW50fQoucHI0e3BhZGRpbmctcmlnaHQ6NHB4IWltcG9ydGFudH0KLnByNXtwYWRkaW5nLXJpZ2h0OjVweCFpbXBvcnRhbnR9Ci5wcjZ7cGFkZGluZy1yaWdodDo2cHghaW1wb3J0YW50fQoucHI3e3BhZGRpbmctcmlnaHQ6N3B4IWltcG9ydGFudH0KLnByOHtwYWRkaW5nLXJpZ2h0OjhweCFpbXBvcnRhbnR9Ci5wcjl7cGFkZGluZy1yaWdodDo5cHghaW1wb3J0YW50fQoucHIxMHtwYWRkaW5nLXJpZ2h0OjEwcHghaW1wb3J0YW50fQoucHIxMXtwYWRkaW5nLXJpZ2h0OjExcHghaW1wb3J0YW50fQoucHIxMntwYWRkaW5nLXJpZ2h0OjEycHghaW1wb3J0YW50fQoucHIxM3twYWRkaW5nLXJpZ2h0OjEzcHghaW1wb3J0YW50fQoucHIxNHtwYWRkaW5nLXJpZ2h0OjE0cHghaW1wb3J0YW50fQoucHIxNXtwYWRkaW5nLXJpZ2h0OjE1cHghaW1wb3J0YW50fQoucHIxNntwYWRkaW5nLXJpZ2h0OjE2cHghaW1wb3J0YW50fQoucHIxN3twYWRkaW5nLXJpZ2h0OjE3cHghaW1wb3J0YW50fQoucHIxOHtwYWRkaW5nLXJpZ2h0OjE4cHghaW1wb3J0YW50fQoucHIxOXtwYWRkaW5nLXJpZ2h0OjE5cHghaW1wb3J0YW50fQoucHIyMHtwYWRkaW5nLXJpZ2h0OjIwcHghaW1wb3J0YW50fQoucHIyMXtwYWRkaW5nLXJpZ2h0OjIxcHghaW1wb3J0YW50fQoucHIyMntwYWRkaW5nLXJpZ2h0OjIycHghaW1wb3J0YW50fQoucHIyM3twYWRkaW5nLXJpZ2h0OjIzcHghaW1wb3J0YW50fQoucHIyNHtwYWRkaW5nLXJpZ2h0OjI0cHghaW1wb3J0YW50fQoucHIyNXtwYWRkaW5nLXJpZ2h0OjI1cHghaW1wb3J0YW50fQoucHIyNntwYWRkaW5nLXJpZ2h0OjI2cHghaW1wb3J0YW50fQoucHIyN3twYWRkaW5nLXJpZ2h0OjI3cHghaW1wb3J0YW50fQoucHIyOHtwYWRkaW5nLXJpZ2h0OjI4cHghaW1wb3J0YW50fQoucHIyOXtwYWRkaW5nLXJpZ2h0OjI5cHghaW1wb3J0YW50fQoucHIzMHtwYWRkaW5nLXJpZ2h0OjMwcHghaW1wb3J0YW50fQoucHIzNXtwYWRkaW5nLXJpZ2h0OjM1cHghaW1wb3J0YW50fQoucHI0MHtwYWRkaW5nLXJpZ2h0OjQwcHghaW1wb3J0YW50fQoucHI0NXtwYWRkaW5nLXJpZ2h0OjQ1cHghaW1wb3J0YW50fQoucHI1MHtwYWRkaW5nLXJpZ2h0OjUwcHghaW1wb3J0YW50fQoucHI1NXtwYWRkaW5nLXJpZ2h0OjU1cHghaW1wb3J0YW50fQoucHI2MHtwYWRkaW5nLXJpZ2h0OjYwcHghaW1wb3J0YW50fQoucHI2NXtwYWRkaW5nLXJpZ2h0OjY1cHghaW1wb3J0YW50fQoucHI3MHtwYWRkaW5nLXJpZ2h0OjcwcHghaW1wb3J0YW50fQoucHI3NXtwYWRkaW5nLXJpZ2h0Ojc1cHghaW1wb3J0YW50fQoucHI4MHtwYWRkaW5nLXJpZ2h0OjgwcHghaW1wb3J0YW50fQoucHI4NXtwYWRkaW5nLXJpZ2h0Ojg1cHghaW1wb3J0YW50fQoucHI5MHtwYWRkaW5nLXJpZ2h0OjkwcHghaW1wb3J0YW50fQoucHI5NXtwYWRkaW5nLXJpZ2h0Ojk1cHghaW1wb3J0YW50fQoucHIxMDB7cGFkZGluZy1yaWdodDoxMDBweCFpbXBvcnRhbnR9Ci5wcjExMHtwYWRkaW5nLXJpZ2h0OjExMHB4IWltcG9ydGFudH0KLnByMTIwe3BhZGRpbmctcmlnaHQ6MTIwcHghaW1wb3J0YW50fQoucHIxMzB7cGFkZGluZy1yaWdodDoxMzBweCFpbXBvcnRhbnR9Ci5wcjE0MHtwYWRkaW5nLXJpZ2h0OjE0MHB4IWltcG9ydGFudH0KLnByMTUwe3BhZGRpbmctcmlnaHQ6MTUwcHghaW1wb3J0YW50fQoucHIxNjB7cGFkZGluZy1yaWdodDoxNjBweCFpbXBvcnRhbnR9Ci5wcjE3MHtwYWRkaW5nLXJpZ2h0OjE3MHB4IWltcG9ydGFudH0KLnByMTgwe3BhZGRpbmctcmlnaHQ6MTgwcHghaW1wb3J0YW50fQoucHIxOTB7cGFkZGluZy1yaWdodDoxOTBweCFpbXBvcnRhbnR9Ci5wcjIwMHtwYWRkaW5nLXJpZ2h0OjIwMHB4IWltcG9ydGFudH0KLnB0MHtwYWRkaW5nLXRvcDowcHghaW1wb3J0YW50fQoucHQxe3BhZGRpbmctdG9wOjFweCFpbXBvcnRhbnR9Ci5wdDJ7cGFkZGluZy10b3A6MnB4IWltcG9ydGFudH0KLnB0M3twYWRkaW5nLXRvcDozcHghaW1wb3J0YW50fQoucHQ0e3BhZGRpbmctdG9wOjRweCFpbXBvcnRhbnR9Ci5wdDV7cGFkZGluZy10b3A6NXB4IWltcG9ydGFudH0KLnB0NntwYWRkaW5nLXRvcDo2cHghaW1wb3J0YW50fQoucHQ3e3BhZGRpbmctdG9wOjdweCFpbXBvcnRhbnR9Ci5wdDh7cGFkZGluZy10b3A6OHB4IWltcG9ydGFudH0KLnB0OXtwYWRkaW5nLXRvcDo5cHghaW1wb3J0YW50fQoucHQxMHtwYWRkaW5nLXRvcDoxMHB4IWltcG9ydGFudH0KLnB0MTF7cGFkZGluZy10b3A6MTFweCFpbXBvcnRhbnR9Ci5wdDEye3BhZGRpbmctdG9wOjEycHghaW1wb3J0YW50fQoucHQxM3twYWRkaW5nLXRvcDoxM3B4IWltcG9ydGFudH0KLnB0MTR7cGFkZGluZy10b3A6MTRweCFpbXBvcnRhbnR9Ci5wdDE1e3BhZGRpbmctdG9wOjE1cHghaW1wb3J0YW50fQoucHQxNntwYWRkaW5nLXRvcDoxNnB4IWltcG9ydGFudH0KLnB0MTd7cGFkZGluZy10b3A6MTdweCFpbXBvcnRhbnR9Ci5wdDE4e3BhZGRpbmctdG9wOjE4cHghaW1wb3J0YW50fQoucHQxOXtwYWRkaW5nLXRvcDoxOXB4IWltcG9ydGFudH0KLnB0MjB7cGFkZGluZy10b3A6MjBweCFpbXBvcnRhbnR9Ci5wdDIxe3BhZGRpbmctdG9wOjIxcHghaW1wb3J0YW50fQoucHQyMntwYWRkaW5nLXRvcDoyMnB4IWltcG9ydGFudH0KLnB0MjN7cGFkZGluZy10b3A6MjNweCFpbXBvcnRhbnR9Ci5wdDI0e3BhZGRpbmctdG9wOjI0cHghaW1wb3J0YW50fQoucHQyNXtwYWRkaW5nLXRvcDoyNXB4IWltcG9ydGFudH0KLnB0MjZ7cGFkZGluZy10b3A6MjZweCFpbXBvcnRhbnR9Ci5wdDI3e3BhZGRpbmctdG9wOjI3cHghaW1wb3J0YW50fQoucHQyOHtwYWRkaW5nLXRvcDoyOHB4IWltcG9ydGFudH0KLnB0Mjl7cGFkZGluZy10b3A6MjlweCFpbXBvcnRhbnR9Ci5wdDMwe3BhZGRpbmctdG9wOjMwcHghaW1wb3J0YW50fQoucHQzNXtwYWRkaW5nLXRvcDozNXB4IWltcG9ydGFudH0KLnB0NDB7cGFkZGluZy10b3A6NDBweCFpbXBvcnRhbnR9Ci5wdDQ1e3BhZGRpbmctdG9wOjQ1cHghaW1wb3J0YW50fQoucHQ1MHtwYWRkaW5nLXRvcDo1MHB4IWltcG9ydGFudH0KLnB0NTV7cGFkZGluZy10b3A6NTVweCFpbXBvcnRhbnR9Ci5wdDYwe3BhZGRpbmctdG9wOjYwcHghaW1wb3J0YW50fQoucHQ2NXtwYWRkaW5nLXRvcDo2NXB4IWltcG9ydGFudH0KLnB0NzB7cGFkZGluZy10b3A6NzBweCFpbXBvcnRhbnR9Ci5wdDc1e3BhZGRpbmctdG9wOjc1cHghaW1wb3J0YW50fQoucHQ4MHtwYWRkaW5nLXRvcDo4MHB4IWltcG9ydGFudH0KLnB0ODV7cGFkZGluZy10b3A6ODVweCFpbXBvcnRhbnR9Ci5wdDkwe3BhZGRpbmctdG9wOjkwcHghaW1wb3J0YW50fQoucHQ5NXtwYWRkaW5nLXRvcDo5NXB4IWltcG9ydGFudH0KLnB0MTAwe3BhZGRpbmctdG9wOjEwMHB4IWltcG9ydGFudH0KLnB0MTEwe3BhZGRpbmctdG9wOjExMHB4IWltcG9ydGFudH0KLnB0MTIwe3BhZGRpbmctdG9wOjEyMHB4IWltcG9ydGFudH0KLnB0MTMwe3BhZGRpbmctdG9wOjEzMHB4IWltcG9ydGFudH0KLnB0MTQwe3BhZGRpbmctdG9wOjE0MHB4IWltcG9ydGFudH0KLnB0MTUwe3BhZGRpbmctdG9wOjE1MHB4IWltcG9ydGFudH0KLnB0MTYwe3BhZGRpbmctdG9wOjE2MHB4IWltcG9ydGFudH0KLnB0MTcwe3BhZGRpbmctdG9wOjE3MHB4IWltcG9ydGFudH0KLnB0MTgwe3BhZGRpbmctdG9wOjE4MHB4IWltcG9ydGFudH0KLnB0MTkwe3BhZGRpbmctdG9wOjE5MHB4IWltcG9ydGFudH0KLnB0MjAwe3BhZGRpbmctdG9wOjIwMHB4IWltcG9ydGFudH0KLnBiMHtwYWRkaW5nLWJvdHRvbTowcHghaW1wb3J0YW50fQoucGIxe3BhZGRpbmctYm90dG9tOjFweCFpbXBvcnRhbnR9Ci5wYjJ7cGFkZGluZy1ib3R0b206MnB4IWltcG9ydGFudH0KLnBiM3twYWRkaW5nLWJvdHRvbTozcHghaW1wb3J0YW50fQoucGI0e3BhZGRpbmctYm90dG9tOjRweCFpbXBvcnRhbnR9Ci5wYjV7cGFkZGluZy1ib3R0b206NXB4IWltcG9ydGFudH0KLnBiNntwYWRkaW5nLWJvdHRvbTo2cHghaW1wb3J0YW50fQoucGI3e3BhZGRpbmctYm90dG9tOjdweCFpbXBvcnRhbnR9Ci5wYjh7cGFkZGluZy1ib3R0b206OHB4IWltcG9ydGFudH0KLnBiOXtwYWRkaW5nLWJvdHRvbTo5cHghaW1wb3J0YW50fQoucGIxMHtwYWRkaW5nLWJvdHRvbToxMHB4IWltcG9ydGFudH0KLnBiMTF7cGFkZGluZy1ib3R0b206MTFweCFpbXBvcnRhbnR9Ci5wYjEye3BhZGRpbmctYm90dG9tOjEycHghaW1wb3J0YW50fQoucGIxM3twYWRkaW5nLWJvdHRvbToxM3B4IWltcG9ydGFudH0KLnBiMTR7cGFkZGluZy1ib3R0b206MTRweCFpbXBvcnRhbnR9Ci5wYjE1e3BhZGRpbmctYm90dG9tOjE1cHghaW1wb3J0YW50fQoucGIxNntwYWRkaW5nLWJvdHRvbToxNnB4IWltcG9ydGFudH0KLnBiMTd7cGFkZGluZy1ib3R0b206MTdweCFpbXBvcnRhbnR9Ci5wYjE4e3BhZGRpbmctYm90dG9tOjE4cHghaW1wb3J0YW50fQoucGIxOXtwYWRkaW5nLWJvdHRvbToxOXB4IWltcG9ydGFudH0KLnBiMjB7cGFkZGluZy1ib3R0b206MjBweCFpbXBvcnRhbnR9Ci5wYjIxe3BhZGRpbmctYm90dG9tOjIxcHghaW1wb3J0YW50fQoucGIyMntwYWRkaW5nLWJvdHRvbToyMnB4IWltcG9ydGFudH0KLnBiMjN7cGFkZGluZy1ib3R0b206MjNweCFpbXBvcnRhbnR9Ci5wYjI0e3BhZGRpbmctYm90dG9tOjI0cHghaW1wb3J0YW50fQoucGIyNXtwYWRkaW5nLWJvdHRvbToyNXB4IWltcG9ydGFudH0KLnBiMjZ7cGFkZGluZy1ib3R0b206MjZweCFpbXBvcnRhbnR9Ci5wYjI3e3BhZGRpbmctYm90dG9tOjI3cHghaW1wb3J0YW50fQoucGIyOHtwYWRkaW5nLWJvdHRvbToyOHB4IWltcG9ydGFudH0KLnBiMjl7cGFkZGluZy1ib3R0b206MjlweCFpbXBvcnRhbnR9Ci5wYjMwe3BhZGRpbmctYm90dG9tOjMwcHghaW1wb3J0YW50fQoucGIzNXtwYWRkaW5nLWJvdHRvbTozNXB4IWltcG9ydGFudH0KLnBiNDB7cGFkZGluZy1ib3R0b206NDBweCFpbXBvcnRhbnR9Ci5wYjQ1e3BhZGRpbmctYm90dG9tOjQ1cHghaW1wb3J0YW50fQoucGI1MHtwYWRkaW5nLWJvdHRvbTo1MHB4IWltcG9ydGFudH0KLnBiNTV7cGFkZGluZy1ib3R0b206NTVweCFpbXBvcnRhbnR9Ci5wYjYwe3BhZGRpbmctYm90dG9tOjYwcHghaW1wb3J0YW50fQoucGI2NXtwYWRkaW5nLWJvdHRvbTo2NXB4IWltcG9ydGFudH0KLnBiNzB7cGFkZGluZy1ib3R0b206NzBweCFpbXBvcnRhbnR9Ci5wYjc1e3BhZGRpbmctYm90dG9tOjc1cHghaW1wb3J0YW50fQoucGI4MHtwYWRkaW5nLWJvdHRvbTo4MHB4IWltcG9ydGFudH0KLnBiODV7cGFkZGluZy1ib3R0b206ODVweCFpbXBvcnRhbnR9Ci5wYjkwe3BhZGRpbmctYm90dG9tOjkwcHghaW1wb3J0YW50fQoucGI5NXtwYWRkaW5nLWJvdHRvbTo5NXB4IWltcG9ydGFudH0KLnBiMTAwe3BhZGRpbmctYm90dG9tOjEwMHB4IWltcG9ydGFudH0KLnBiMTEwe3BhZGRpbmctYm90dG9tOjExMHB4IWltcG9ydGFudH0KLnBiMTIwe3BhZGRpbmctYm90dG9tOjEyMHB4IWltcG9ydGFudH0KLnBiMTMwe3BhZGRpbmctYm90dG9tOjEzMHB4IWltcG9ydGFudH0KLnBiMTQwe3BhZGRpbmctYm90dG9tOjE0MHB4IWltcG9ydGFudH0KLnBiMTUwe3BhZGRpbmctYm90dG9tOjE1MHB4IWltcG9ydGFudH0KLnBiMTYwe3BhZGRpbmctYm90dG9tOjE2MHB4IWltcG9ydGFudH0KLnBiMTcwe3BhZGRpbmctYm90dG9tOjE3MHB4IWltcG9ydGFudH0KLnBiMTgwe3BhZGRpbmctYm90dG9tOjE4MHB4IWltcG9ydGFudH0KLnBiMTkwe3BhZGRpbmctYm90dG9tOjE5MHB4IWltcG9ydGFudH0KLnBiMjAwe3BhZGRpbmctYm90dG9tOjIwMHB4IWltcG9ydGFudH0KLm1sLTUwe21hcmdpbi1sZWZ0Oi01MHB4IWltcG9ydGFudH0KLm1sLTQwe21hcmdpbi1sZWZ0Oi00MHB4IWltcG9ydGFudH0KLm1sLTMwe21hcmdpbi1sZWZ0Oi0zMHB4IWltcG9ydGFudH0KLm1sLTI1e21hcmdpbi1sZWZ0Oi0yNXB4IWltcG9ydGFudH0KLm1sLTIwe21hcmdpbi1sZWZ0Oi0yMHB4IWltcG9ydGFudH0KLm1sLTE1e21hcmdpbi1sZWZ0Oi0xNXB4IWltcG9ydGFudH0KLm1sLTEwe21hcmdpbi1sZWZ0Oi0xMHB4IWltcG9ydGFudH0KLm1sLTl7bWFyZ2luLWxlZnQ6LTlweCFpbXBvcnRhbnR9Ci5tbC04e21hcmdpbi1sZWZ0Oi04cHghaW1wb3J0YW50fQoubWwtN3ttYXJnaW4tbGVmdDotN3B4IWltcG9ydGFudH0KLm1sLTZ7bWFyZ2luLWxlZnQ6LTZweCFpbXBvcnRhbnR9Ci5tbC01e21hcmdpbi1sZWZ0Oi01cHghaW1wb3J0YW50fQoubWwtNHttYXJnaW4tbGVmdDotNHB4IWltcG9ydGFudH0KLm1sLTN7bWFyZ2luLWxlZnQ6LTNweCFpbXBvcnRhbnR9Ci5tbC0ye21hcmdpbi1sZWZ0Oi0ycHghaW1wb3J0YW50fQoubWwtMXttYXJnaW4tbGVmdDotMXB4IWltcG9ydGFudH0KLm1sMHttYXJnaW4tbGVmdDowcHghaW1wb3J0YW50fQoubWwxe21hcmdpbi1sZWZ0OjFweCFpbXBvcnRhbnR9Ci5tbDJ7bWFyZ2luLWxlZnQ6MnB4IWltcG9ydGFudH0KLm1sM3ttYXJnaW4tbGVmdDozcHghaW1wb3J0YW50fQoubWw0e21hcmdpbi1sZWZ0OjRweCFpbXBvcnRhbnR9Ci5tbDV7bWFyZ2luLWxlZnQ6NXB4IWltcG9ydGFudH0KLm1sNnttYXJnaW4tbGVmdDo2cHghaW1wb3J0YW50fQoubWw3e21hcmdpbi1sZWZ0OjdweCFpbXBvcnRhbnR9Ci5tbDh7bWFyZ2luLWxlZnQ6OHB4IWltcG9ydGFudH0KLm1sOXttYXJnaW4tbGVmdDo5cHghaW1wb3J0YW50fQoubWwxMHttYXJnaW4tbGVmdDoxMHB4IWltcG9ydGFudH0KLm1sMTF7bWFyZ2luLWxlZnQ6MTFweCFpbXBvcnRhbnR9Ci5tbDEye21hcmdpbi1sZWZ0OjEycHghaW1wb3J0YW50fQoubWwxM3ttYXJnaW4tbGVmdDoxM3B4IWltcG9ydGFudH0KLm1sMTR7bWFyZ2luLWxlZnQ6MTRweCFpbXBvcnRhbnR9Ci5tbDE1e21hcmdpbi1sZWZ0OjE1cHghaW1wb3J0YW50fQoubWwxNnttYXJnaW4tbGVmdDoxNnB4IWltcG9ydGFudH0KLm1sMTd7bWFyZ2luLWxlZnQ6MTdweCFpbXBvcnRhbnR9Ci5tbDE4e21hcmdpbi1sZWZ0OjE4cHghaW1wb3J0YW50fQoubWwxOXttYXJnaW4tbGVmdDoxOXB4IWltcG9ydGFudH0KLm1sMjB7bWFyZ2luLWxlZnQ6MjBweCFpbXBvcnRhbnR9Ci5tbDI1e21hcmdpbi1sZWZ0OjI1cHghaW1wb3J0YW50fQoubWwzMHttYXJnaW4tbGVmdDozMHB4IWltcG9ydGFudH0KLm1sMzV7bWFyZ2luLWxlZnQ6MzVweCFpbXBvcnRhbnR9Ci5tbDQwe21hcmdpbi1sZWZ0OjQwcHghaW1wb3J0YW50fQoubWw0NXttYXJnaW4tbGVmdDo0NXB4IWltcG9ydGFudH0KLm1sNTB7bWFyZ2luLWxlZnQ6NTBweCFpbXBvcnRhbnR9Ci5tbDU1e21hcmdpbi1sZWZ0OjU1cHghaW1wb3J0YW50fQoubWw2MHttYXJnaW4tbGVmdDo2MHB4IWltcG9ydGFudH0KLm1sNjV7bWFyZ2luLWxlZnQ6NjVweCFpbXBvcnRhbnR9Ci5tbDcwe21hcmdpbi1sZWZ0OjcwcHghaW1wb3J0YW50fQoubWw3NXttYXJnaW4tbGVmdDo3NXB4IWltcG9ydGFudH0KLm1sODB7bWFyZ2luLWxlZnQ6ODBweCFpbXBvcnRhbnR9Ci5tbDg1e21hcmdpbi1sZWZ0Ojg1cHghaW1wb3J0YW50fQoubWw5MHttYXJnaW4tbGVmdDo5MHB4IWltcG9ydGFudH0KLm1sOTV7bWFyZ2luLWxlZnQ6OTVweCFpbXBvcnRhbnR9Ci5tbDEwMHttYXJnaW4tbGVmdDoxMDBweCFpbXBvcnRhbnR9Ci5tbDExMHttYXJnaW4tbGVmdDoxMTBweCFpbXBvcnRhbnR9Ci5tbDEyMHttYXJnaW4tbGVmdDoxMjBweCFpbXBvcnRhbnR9Ci5tbDEzMHttYXJnaW4tbGVmdDoxMzBweCFpbXBvcnRhbnR9Ci5tbDE0MHttYXJnaW4tbGVmdDoxNDBweCFpbXBvcnRhbnR9Ci5tbDE1MHttYXJnaW4tbGVmdDoxNTBweCFpbXBvcnRhbnR9Ci5tbDE2MHttYXJnaW4tbGVmdDoxNjBweCFpbXBvcnRhbnR9Ci5tbDE3MHttYXJnaW4tbGVmdDoxNzBweCFpbXBvcnRhbnR9Ci5tbDE4MHttYXJnaW4tbGVmdDoxODBweCFpbXBvcnRhbnR9Ci5tbDE5MHttYXJnaW4tbGVmdDoxOTBweCFpbXBvcnRhbnR9Ci5tbDIwMHttYXJnaW4tbGVmdDoyMDBweCFpbXBvcnRhbnR9Ci5tci01MHttYXJnaW4tcmlnaHQ6LTUwcHghaW1wb3J0YW50fQoubXItNDB7bWFyZ2luLXJpZ2h0Oi00MHB4IWltcG9ydGFudH0KLm1yLTMwe21hcmdpbi1yaWdodDotMzBweCFpbXBvcnRhbnR9Ci5tci0yNXttYXJnaW4tcmlnaHQ6LTI1cHghaW1wb3J0YW50fQoubXItMjB7bWFyZ2luLXJpZ2h0Oi0yMHB4IWltcG9ydGFudH0KLm1yLTE1e21hcmdpbi1yaWdodDotMTVweCFpbXBvcnRhbnR9Ci5tci0xMHttYXJnaW4tcmlnaHQ6LTEwcHghaW1wb3J0YW50fQoubXItOXttYXJnaW4tcmlnaHQ6LTlweCFpbXBvcnRhbnR9Ci5tci04e21hcmdpbi1yaWdodDotOHB4IWltcG9ydGFudH0KLm1yLTd7bWFyZ2luLXJpZ2h0Oi03cHghaW1wb3J0YW50fQoubXItNnttYXJnaW4tcmlnaHQ6LTZweCFpbXBvcnRhbnR9Ci5tci01e21hcmdpbi1yaWdodDotNXB4IWltcG9ydGFudH0KLm1yLTR7bWFyZ2luLXJpZ2h0Oi00cHghaW1wb3J0YW50fQoubXItM3ttYXJnaW4tcmlnaHQ6LTNweCFpbXBvcnRhbnR9Ci5tci0ye21hcmdpbi1yaWdodDotMnB4IWltcG9ydGFudH0KLm1yLTF7bWFyZ2luLXJpZ2h0Oi0xcHghaW1wb3J0YW50fQoubXIwe21hcmdpbi1yaWdodDowcHghaW1wb3J0YW50fQoubXIxe21hcmdpbi1yaWdodDoxcHghaW1wb3J0YW50fQoubXIye21hcmdpbi1yaWdodDoycHghaW1wb3J0YW50fQoubXIze21hcmdpbi1yaWdodDozcHghaW1wb3J0YW50fQoubXI0e21hcmdpbi1yaWdodDo0cHghaW1wb3J0YW50fQoubXI1e21hcmdpbi1yaWdodDo1cHghaW1wb3J0YW50fQoubXI2e21hcmdpbi1yaWdodDo2cHghaW1wb3J0YW50fQoubXI3e21hcmdpbi1yaWdodDo3cHghaW1wb3J0YW50fQoubXI4e21hcmdpbi1yaWdodDo4cHghaW1wb3J0YW50fQoubXI5e21hcmdpbi1yaWdodDo5cHghaW1wb3J0YW50fQoubXIxMHttYXJnaW4tcmlnaHQ6MTBweCFpbXBvcnRhbnR9Ci5tcjExe21hcmdpbi1yaWdodDoxMXB4IWltcG9ydGFudH0KLm1yMTJ7bWFyZ2luLXJpZ2h0OjEycHghaW1wb3J0YW50fQoubXIxM3ttYXJnaW4tcmlnaHQ6MTNweCFpbXBvcnRhbnR9Ci5tcjE0e21hcmdpbi1yaWdodDoxNHB4IWltcG9ydGFudH0KLm1yMTV7bWFyZ2luLXJpZ2h0OjE1cHghaW1wb3J0YW50fQoubXIxNnttYXJnaW4tcmlnaHQ6MTZweCFpbXBvcnRhbnR9Ci5tcjE3e21hcmdpbi1yaWdodDoxN3B4IWltcG9ydGFudH0KLm1yMTh7bWFyZ2luLXJpZ2h0OjE4cHghaW1wb3J0YW50fQoubXIxOXttYXJnaW4tcmlnaHQ6MTlweCFpbXBvcnRhbnR9Ci5tcjIwe21hcmdpbi1yaWdodDoyMHB4IWltcG9ydGFudH0KLm1yMjV7bWFyZ2luLXJpZ2h0OjI1cHghaW1wb3J0YW50fQoubXIzMHttYXJnaW4tcmlnaHQ6MzBweCFpbXBvcnRhbnR9Ci5tcjM1e21hcmdpbi1yaWdodDozNXB4IWltcG9ydGFudH0KLm1yNDB7bWFyZ2luLXJpZ2h0OjQwcHghaW1wb3J0YW50fQoubXI0NXttYXJnaW4tcmlnaHQ6NDVweCFpbXBvcnRhbnR9Ci5tcjUwe21hcmdpbi1yaWdodDo1MHB4IWltcG9ydGFudH0KLm1yNTV7bWFyZ2luLXJpZ2h0OjU1cHghaW1wb3J0YW50fQoubXI2MHttYXJnaW4tcmlnaHQ6NjBweCFpbXBvcnRhbnR9Ci5tcjY1e21hcmdpbi1yaWdodDo2NXB4IWltcG9ydGFudH0KLm1yNzB7bWFyZ2luLXJpZ2h0OjcwcHghaW1wb3J0YW50fQoubXI3NXttYXJnaW4tcmlnaHQ6NzVweCFpbXBvcnRhbnR9Ci5tcjgwe21hcmdpbi1yaWdodDo4MHB4IWltcG9ydGFudH0KLm1yODV7bWFyZ2luLXJpZ2h0Ojg1cHghaW1wb3J0YW50fQoubXI5MHttYXJnaW4tcmlnaHQ6OTBweCFpbXBvcnRhbnR9Ci5tcjk1e21hcmdpbi1yaWdodDo5NXB4IWltcG9ydGFudH0KLm1yMTAwe21hcmdpbi1yaWdodDoxMDBweCFpbXBvcnRhbnR9Ci5tcjExMHttYXJnaW4tcmlnaHQ6MTEwcHghaW1wb3J0YW50fQoubXIxMjB7bWFyZ2luLXJpZ2h0OjEyMHB4IWltcG9ydGFudH0KLm1yMTMwe21hcmdpbi1yaWdodDoxMzBweCFpbXBvcnRhbnR9Ci5tcjE0MHttYXJnaW4tcmlnaHQ6MTQwcHghaW1wb3J0YW50fQoubXIxNTB7bWFyZ2luLXJpZ2h0OjE1MHB4IWltcG9ydGFudH0KLm1yMTYwe21hcmdpbi1yaWdodDoxNjBweCFpbXBvcnRhbnR9Ci5tcjE3MHttYXJnaW4tcmlnaHQ6MTcwcHghaW1wb3J0YW50fQoubXIxODB7bWFyZ2luLXJpZ2h0OjE4MHB4IWltcG9ydGFudH0KLm1yMTkwe21hcmdpbi1yaWdodDoxOTBweCFpbXBvcnRhbnR9Ci5tcjIwMHttYXJnaW4tcmlnaHQ6MjAwcHghaW1wb3J0YW50fQoubXQtNTB7bWFyZ2luLXRvcDotNTBweCFpbXBvcnRhbnR9Ci5tdC00MHttYXJnaW4tdG9wOi00MHB4IWltcG9ydGFudH0KLm10LTMwe21hcmdpbi10b3A6LTMwcHghaW1wb3J0YW50fQoubXQtMjV7bWFyZ2luLXRvcDotMjVweCFpbXBvcnRhbnR9Ci5tdC0yMHttYXJnaW4tdG9wOi0yMHB4IWltcG9ydGFudH0KLm10LTE1e21hcmdpbi10b3A6LTE1cHghaW1wb3J0YW50fQoubXQtMTB7bWFyZ2luLXRvcDotMTBweCFpbXBvcnRhbnR9Ci5tdC05e21hcmdpbi10b3A6LTlweCFpbXBvcnRhbnR9Ci5tdC04e21hcmdpbi10b3A6LThweCFpbXBvcnRhbnR9Ci5tdC03e21hcmdpbi10b3A6LTdweCFpbXBvcnRhbnR9Ci5tdC02e21hcmdpbi10b3A6LTZweCFpbXBvcnRhbnR9Ci5tdC01e21hcmdpbi10b3A6LTVweCFpbXBvcnRhbnR9Ci5tdC00e21hcmdpbi10b3A6LTRweCFpbXBvcnRhbnR9Ci5tdC0ze21hcmdpbi10b3A6LTNweCFpbXBvcnRhbnR9Ci5tdC0ye21hcmdpbi10b3A6LTJweCFpbXBvcnRhbnR9Ci5tdC0xe21hcmdpbi10b3A6LTFweCFpbXBvcnRhbnR9Ci5tdDB7bWFyZ2luLXRvcDowcHghaW1wb3J0YW50fQoubXQxe21hcmdpbi10b3A6MXB4IWltcG9ydGFudH0KLm10MnttYXJnaW4tdG9wOjJweCFpbXBvcnRhbnR9Ci5tdDN7bWFyZ2luLXRvcDozcHghaW1wb3J0YW50fQoubXQ0e21hcmdpbi10b3A6NHB4IWltcG9ydGFudH0KLm10NXttYXJnaW4tdG9wOjVweCFpbXBvcnRhbnR9Ci5tdDZ7bWFyZ2luLXRvcDo2cHghaW1wb3J0YW50fQoubXQ3e21hcmdpbi10b3A6N3B4IWltcG9ydGFudH0KLm10OHttYXJnaW4tdG9wOjhweCFpbXBvcnRhbnR9Ci5tdDl7bWFyZ2luLXRvcDo5cHghaW1wb3J0YW50fQoubXQxMHttYXJnaW4tdG9wOjEwcHghaW1wb3J0YW50fQoubXQxMXttYXJnaW4tdG9wOjExcHghaW1wb3J0YW50fQoubXQxMnttYXJnaW4tdG9wOjEycHghaW1wb3J0YW50fQoubXQxM3ttYXJnaW4tdG9wOjEzcHghaW1wb3J0YW50fQoubXQxNHttYXJnaW4tdG9wOjE0cHghaW1wb3J0YW50fQoubXQxNXttYXJnaW4tdG9wOjE1cHghaW1wb3J0YW50fQoubXQxNnttYXJnaW4tdG9wOjE2cHghaW1wb3J0YW50fQoubXQxN3ttYXJnaW4tdG9wOjE3cHghaW1wb3J0YW50fQoubXQxOHttYXJnaW4tdG9wOjE4cHghaW1wb3J0YW50fQoubXQxOXttYXJnaW4tdG9wOjE5cHghaW1wb3J0YW50fQoubXQyMHttYXJnaW4tdG9wOjIwcHghaW1wb3J0YW50fQoubXQyNXttYXJnaW4tdG9wOjI1cHghaW1wb3J0YW50fQoubXQzMHttYXJnaW4tdG9wOjMwcHghaW1wb3J0YW50fQoubXQzNXttYXJnaW4tdG9wOjM1cHghaW1wb3J0YW50fQoubXQ0MHttYXJnaW4tdG9wOjQwcHghaW1wb3J0YW50fQoubXQ0NXttYXJnaW4tdG9wOjQ1cHghaW1wb3J0YW50fQoubXQ1MHttYXJnaW4tdG9wOjUwcHghaW1wb3J0YW50fQoubXQ1NXttYXJnaW4tdG9wOjU1cHghaW1wb3J0YW50fQoubXQ2MHttYXJnaW4tdG9wOjYwcHghaW1wb3J0YW50fQoubXQ2NXttYXJnaW4tdG9wOjY1cHghaW1wb3J0YW50fQoubXQ3MHttYXJnaW4tdG9wOjcwcHghaW1wb3J0YW50fQoubXQ3NXttYXJnaW4tdG9wOjc1cHghaW1wb3J0YW50fQoubXQ4MHttYXJnaW4tdG9wOjgwcHghaW1wb3J0YW50fQoubXQ4NXttYXJnaW4tdG9wOjg1cHghaW1wb3J0YW50fQoubXQ5MHttYXJnaW4tdG9wOjkwcHghaW1wb3J0YW50fQoubXQ5NXttYXJnaW4tdG9wOjk1cHghaW1wb3J0YW50fQoubXQxMDB7bWFyZ2luLXRvcDoxMDBweCFpbXBvcnRhbnR9Ci5tdDExMHttYXJnaW4tdG9wOjExMHB4IWltcG9ydGFudH0KLm10MTIwe21hcmdpbi10b3A6MTIwcHghaW1wb3J0YW50fQoubXQxMzB7bWFyZ2luLXRvcDoxMzBweCFpbXBvcnRhbnR9Ci5tdDE0MHttYXJnaW4tdG9wOjE0MHB4IWltcG9ydGFudH0KLm10MTUwe21hcmdpbi10b3A6MTUwcHghaW1wb3J0YW50fQoubXQxNjB7bWFyZ2luLXRvcDoxNjBweCFpbXBvcnRhbnR9Ci5tdDE3MHttYXJnaW4tdG9wOjE3MHB4IWltcG9ydGFudH0KLm10MTgwe21hcmdpbi10b3A6MTgwcHghaW1wb3J0YW50fQoubXQxOTB7bWFyZ2luLXRvcDoxOTBweCFpbXBvcnRhbnR9Ci5tdDIwMHttYXJnaW4tdG9wOjIwMHB4IWltcG9ydGFudH0KLm1iLTUwe21hcmdpbi1ib3R0b206LTUwcHghaW1wb3J0YW50fQoubWItNDB7bWFyZ2luLWJvdHRvbTotNDBweCFpbXBvcnRhbnR9Ci5tYi0zMHttYXJnaW4tYm90dG9tOi0zMHB4IWltcG9ydGFudH0KLm1iLTI1e21hcmdpbi1ib3R0b206LTI1cHghaW1wb3J0YW50fQoubWItMjB7bWFyZ2luLWJvdHRvbTotMjBweCFpbXBvcnRhbnR9Ci5tYi0xNXttYXJnaW4tYm90dG9tOi0xNXB4IWltcG9ydGFudH0KLm1iLTEwe21hcmdpbi1ib3R0b206LTEwcHghaW1wb3J0YW50fQoubWItOXttYXJnaW4tYm90dG9tOi05cHghaW1wb3J0YW50fQoubWItOHttYXJnaW4tYm90dG9tOi04cHghaW1wb3J0YW50fQoubWItN3ttYXJnaW4tYm90dG9tOi03cHghaW1wb3J0YW50fQoubWItNnttYXJnaW4tYm90dG9tOi02cHghaW1wb3J0YW50fQoubWItNXttYXJnaW4tYm90dG9tOi01cHghaW1wb3J0YW50fQoubWItNHttYXJnaW4tYm90dG9tOi00cHghaW1wb3J0YW50fQoubWItM3ttYXJnaW4tYm90dG9tOi0zcHghaW1wb3J0YW50fQoubWItMnttYXJnaW4tYm90dG9tOi0ycHghaW1wb3J0YW50fQoubWItMXttYXJnaW4tYm90dG9tOi0xcHghaW1wb3J0YW50fQoubWIwe21hcmdpbi1ib3R0b206MHB4IWltcG9ydGFudH0KLm1iMXttYXJnaW4tYm90dG9tOjFweCFpbXBvcnRhbnR9Ci5tYjJ7bWFyZ2luLWJvdHRvbToycHghaW1wb3J0YW50fQoubWIze21hcmdpbi1ib3R0b206M3B4IWltcG9ydGFudH0KLm1iNHttYXJnaW4tYm90dG9tOjRweCFpbXBvcnRhbnR9Ci5tYjV7bWFyZ2luLWJvdHRvbTo1cHghaW1wb3J0YW50fQoubWI2e21hcmdpbi1ib3R0b206NnB4IWltcG9ydGFudH0KLm1iN3ttYXJnaW4tYm90dG9tOjdweCFpbXBvcnRhbnR9Ci5tYjh7bWFyZ2luLWJvdHRvbTo4cHghaW1wb3J0YW50fQoubWI5e21hcmdpbi1ib3R0b206OXB4IWltcG9ydGFudH0KLm1iMTB7bWFyZ2luLWJvdHRvbToxMHB4IWltcG9ydGFudH0KLm1iMTF7bWFyZ2luLWJvdHRvbToxMXB4IWltcG9ydGFudH0KLm1iMTJ7bWFyZ2luLWJvdHRvbToxMnB4IWltcG9ydGFudH0KLm1iMTN7bWFyZ2luLWJvdHRvbToxM3B4IWltcG9ydGFudH0KLm1iMTR7bWFyZ2luLWJvdHRvbToxNHB4IWltcG9ydGFudH0KLm1iMTV7bWFyZ2luLWJvdHRvbToxNXB4IWltcG9ydGFudH0KLm1iMTZ7bWFyZ2luLWJvdHRvbToxNnB4IWltcG9ydGFudH0KLm1iMTd7bWFyZ2luLWJvdHRvbToxN3B4IWltcG9ydGFudH0KLm1iMTh7bWFyZ2luLWJvdHRvbToxOHB4IWltcG9ydGFudH0KLm1iMTl7bWFyZ2luLWJvdHRvbToxOXB4IWltcG9ydGFudH0KLm1iMjB7bWFyZ2luLWJvdHRvbToyMHB4IWltcG9ydGFudH0KLm1iMjV7bWFyZ2luLWJvdHRvbToyNXB4IWltcG9ydGFudH0KLm1iMzB7bWFyZ2luLWJvdHRvbTozMHB4IWltcG9ydGFudH0KLm1iMzV7bWFyZ2luLWJvdHRvbTozNXB4IWltcG9ydGFudH0KLm1iNDB7bWFyZ2luLWJvdHRvbTo0MHB4IWltcG9ydGFudH0KLm1iNDV7bWFyZ2luLWJvdHRvbTo0NXB4IWltcG9ydGFudH0KLm1iNTB7bWFyZ2luLWJvdHRvbTo1MHB4IWltcG9ydGFudH0KLm1iNTV7bWFyZ2luLWJvdHRvbTo1NXB4IWltcG9ydGFudH0KLm1iNjB7bWFyZ2luLWJvdHRvbTo2MHB4IWltcG9ydGFudH0KLm1iNjV7bWFyZ2luLWJvdHRvbTo2NXB4IWltcG9ydGFudH0KLm1iNzB7bWFyZ2luLWJvdHRvbTo3MHB4IWltcG9ydGFudH0KLm1iNzV7bWFyZ2luLWJvdHRvbTo3NXB4IWltcG9ydGFudH0KLm1iODB7bWFyZ2luLWJvdHRvbTo4MHB4IWltcG9ydGFudH0KLm1iODV7bWFyZ2luLWJvdHRvbTo4NXB4IWltcG9ydGFudH0KLm1iOTB7bWFyZ2luLWJvdHRvbTo5MHB4IWltcG9ydGFudH0KLm1iOTV7bWFyZ2luLWJvdHRvbTo5NXB4IWltcG9ydGFudH0KLm1iMTAwe21hcmdpbi1ib3R0b206MTAwcHghaW1wb3J0YW50fQoubWIxMTB7bWFyZ2luLWJvdHRvbToxMTBweCFpbXBvcnRhbnR9Ci5tYjEyMHttYXJnaW4tYm90dG9tOjEyMHB4IWltcG9ydGFudH0KLm1iMTMwe21hcmdpbi1ib3R0b206MTMwcHghaW1wb3J0YW50fQoubWIxNDB7bWFyZ2luLWJvdHRvbToxNDBweCFpbXBvcnRhbnR9Ci5tYjE1MHttYXJnaW4tYm90dG9tOjE1MHB4IWltcG9ydGFudH0KLm1iMTYwe21hcmdpbi1ib3R0b206MTYwcHghaW1wb3J0YW50fQoubWIxNzB7bWFyZ2luLWJvdHRvbToxNzBweCFpbXBvcnRhbnR9Ci5tYjE4MHttYXJnaW4tYm90dG9tOjE4MHB4IWltcG9ydGFudH0KLm1iMTkwe21hcmdpbi1ib3R0b206MTkwcHghaW1wb3J0YW50fQoubWIyMDB7bWFyZ2luLWJvdHRvbToyMDBweCFpbXBvcnRhbnR9Ci56aTF7ei1pbmRleDoxfQouemkye3otaW5kZXg6Mn0KLnppM3t6LWluZGV4OjN9Ci56aTR7ei1pbmRleDo0fQouemk1e3otaW5kZXg6NX0KLnppNnt6LWluZGV4OjZ9Ci56aTd7ei1pbmRleDo3fQouemk4e3otaW5kZXg6OH0KLnppOXt6LWluZGV4Ojl9Ci56aTEwe3otaW5kZXg6MTB9Ci56aTExe3otaW5kZXg6MTF9Ci56aTEye3otaW5kZXg6MTJ9Ci56aTEze3otaW5kZXg6MTN9Ci56aTE0e3otaW5kZXg6MTR9Ci56aTE1e3otaW5kZXg6MTV9Ci56aTE2e3otaW5kZXg6MTZ9Ci56aTE3e3otaW5kZXg6MTd9Ci56aTE4e3otaW5kZXg6MTh9Ci56aTE5e3otaW5kZXg6MTl9Ci56aTIwe3otaW5kZXg6MjB9Ci5mczQwe2ZvbnQtc2l6ZTo0MCUhaW1wb3J0YW50fQouZnM0NXtmb250LXNpemU6NDUlIWltcG9ydGFudH0KLmZzNTB7Zm9udC1zaXplOjUwJSFpbXBvcnRhbnR9Ci5mczU1e2ZvbnQtc2l6ZTo1NSUhaW1wb3J0YW50fQouZnM2MHtmb250LXNpemU6NjAlIWltcG9ydGFudH0KLmZzNjV7Zm9udC1zaXplOjY1JSFpbXBvcnRhbnR9Ci5mczcwe2ZvbnQtc2l6ZTo3MCUhaW1wb3J0YW50fQouZnM3NXtmb250LXNpemU6NzUlIWltcG9ydGFudH0KLmZzODB7Zm9udC1zaXplOjgwJSFpbXBvcnRhbnR9Ci5mczg1e2ZvbnQtc2l6ZTo4NSUhaW1wb3J0YW50fQouZnM5MHtmb250LXNpemU6OTAlIWltcG9ydGFudH0KLmZzOTV7Zm9udC1zaXplOjk1JSFpbXBvcnRhbnR9Ci5mczEwMHtmb250LXNpemU6MTAwJSFpbXBvcnRhbnR9Ci5mczEwNXtmb250LXNpemU6MTA1JSFpbXBvcnRhbnR9Ci5mczExMHtmb250LXNpemU6MTEwJSFpbXBvcnRhbnR9Ci5mczExNXtmb250LXNpemU6MTE1JSFpbXBvcnRhbnR9Ci5mczEyMHtmb250LXNpemU6MTIwJSFpbXBvcnRhbnR9Ci5mczEyNXtmb250LXNpemU6MTI1JSFpbXBvcnRhbnR9Ci5mczEzMHtmb250LXNpemU6MTMwJSFpbXBvcnRhbnR9Ci5mczE0MHtmb250LXNpemU6MTQwJSFpbXBvcnRhbnR9Ci5mczE1MHtmb250LXNpemU6MTUwJSFpbXBvcnRhbnR9Ci5mczE2MHtmb250LXNpemU6MTYwJSFpbXBvcnRhbnR9Ci5mczE3MHtmb250LXNpemU6MTcwJSFpbXBvcnRhbnR9Ci5mczE4MHtmb250LXNpemU6MTgwJSFpbXBvcnRhbnR9Ci5mczE5MHtmb250LXNpemU6MTkwJSFpbXBvcnRhbnR9Ci5mczIwMHtmb250LXNpemU6MjAwJSFpbXBvcnRhbnR9Ci5mczIxMHtmb250LXNpemU6MjEwJSFpbXBvcnRhbnR9Ci5mczIyMHtmb250LXNpemU6MjIwJSFpbXBvcnRhbnR9Ci5mczIzMHtmb250LXNpemU6MjMwJSFpbXBvcnRhbnR9Ci5mczI0MHtmb250LXNpemU6MjQwJSFpbXBvcnRhbnR9Ci5mczI1MHtmb250LXNpemU6MjUwJSFpbXBvcnRhbnR9Ci5mczI2MHtmb250LXNpemU6MjYwJSFpbXBvcnRhbnR9Ci5mczI4MHtmb250LXNpemU6MjgwJSFpbXBvcnRhbnR9Ci5mczMwMHtmb250LXNpemU6MzAwJSFpbXBvcnRhbnR9Ci5mczMyMHtmb250LXNpemU6MzIwJSFpbXBvcnRhbnR9Ci5mczM0MHtmb250LXNpemU6MzQwJSFpbXBvcnRhbnR9Ci5mczM2MHtmb250LXNpemU6MzYwJSFpbXBvcnRhbnR9Ci5mczM4MHtmb250LXNpemU6MzgwJSFpbXBvcnRhbnR9Ci5mczQwMHtmb250LXNpemU6NDAwJSFpbXBvcnRhbnR9Ci5saDcwe2xpbmUtaGVpZ2h0OjAuN2VtfQoubGg3NXtsaW5lLWhlaWdodDowLjc1ZW19Ci5saDgwe2xpbmUtaGVpZ2h0OjAuOGVtfQoubGg4NXtsaW5lLWhlaWdodDowLjg1ZW19Ci5saDkwe2xpbmUtaGVpZ2h0OjAuOWVtfQoubGg5NXtsaW5lLWhlaWdodDowLjk1ZW19Ci5saDEwMHtsaW5lLWhlaWdodDoxZW19Ci5saDEwNXtsaW5lLWhlaWdodDoxLjA1ZW19Ci5saDExMHtsaW5lLWhlaWdodDoxLjFlbX0KLmxoMTE1e2xpbmUtaGVpZ2h0OjEuMTVlbX0KLmxoMTIwe2xpbmUtaGVpZ2h0OjEuMmVtfQoubGgxMjV7bGluZS1oZWlnaHQ6MS4yNWVtfQoubGgxMzB7bGluZS1oZWlnaHQ6MS4zZW19Ci5saDE0MHtsaW5lLWhlaWdodDoxLjRlbX0KLmxoMTUwe2xpbmUtaGVpZ2h0OjEuNWVtfQoubGgxNjB7bGluZS1oZWlnaHQ6MS42ZW19Ci5saDE3MHtsaW5lLWhlaWdodDoxLjdlbX0KLmxoMTgwe2xpbmUtaGVpZ2h0OjEuOGVtfQoubGgxOTB7bGluZS1oZWlnaHQ6MS45ZW19Ci5saDIwMHtsaW5lLWhlaWdodDoyZW19Ci5saDIyMHtsaW5lLWhlaWdodDoyLjJlbX0KLmxoMjQwe2xpbmUtaGVpZ2h0OjIuNGVtfQoubGgyNTB7bGluZS1oZWlnaHQ6Mi41ZW19Ci5saDI2MHtsaW5lLWhlaWdodDoyLjZlbX0KLmxoMjgwe2xpbmUtaGVpZ2h0OjIuOGVtfQoubGgzMDB7bGluZS1oZWlnaHQ6M2VtfQouc21hbGx7Zm9udC1zaXplOjkwJTtsaW5lLWhlaWdodDoxLjM3ZW19Ci5ib2xke2ZvbnQtd2VpZ2h0OmJvbGR9Ci5ib2xkZXJ7Zm9udC13ZWlnaHQ6Ym9sZGVyfQouZncyMDB7Zm9udC13ZWlnaHQ6MjAwfQouZnczMDB7Zm9udC13ZWlnaHQ6MzAwfQouZnc0MDB7Zm9udC13ZWlnaHQ6NDAwfQouZnc1MDB7Zm9udC13ZWlnaHQ6NTAwfQouZnc2MDB7Zm9udC13ZWlnaHQ6NjAwfQoudGRue3RleHQtZGVjb3JhdGlvbjpub25lIWltcG9ydGFudH0KLnRkbHt0ZXh0LWRlY29yYXRpb246bGluZS10aHJvdWdoIWltcG9ydGFudH0KLmZpbHRlci1ub21hdGNoe2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9Ci5ud3t3aGl0ZS1zcGFjZTpub3dyYXB9Ci5lbGx7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXN9Ci53YmF7d29yZC1icmVhazpicmVhay1hbGx9Ci52YXR7dmVydGljYWwtYWxpZ246dG9wIWltcG9ydGFudH0KLnZhYnt2ZXJ0aWNhbC1hbGlnbjpib3R0b20haW1wb3J0YW50fQoudmFse3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lIWltcG9ydGFudH0KLnZhbXt2ZXJ0aWNhbC1hbGlnbjptaWRkbGUhaW1wb3J0YW50fQoudGFje3RleHQtYWxpZ246Y2VudGVyIWltcG9ydGFudH0KLnRhcnt0ZXh0LWFsaWduOnJpZ2h0IWltcG9ydGFudH0KLnRhbHt0ZXh0LWFsaWduOmxlZnQhaW1wb3J0YW50fQouYmJze2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHJnYmEoMTA3LCAxNTksIDIxOSwgMC4zNSl9Ci5idHN7Ym9yZGVyLXRvcDoxcHggc29saWQgcmdiYSgxMDcsIDE1OSwgMjE5LCAwLjM1KX0KLmJiZHtib3JkZXItYm90dG9tOjFweCBkb3R0ZWQgcmdiYSgxMDcsIDE1OSwgMjE5LCAwLjM1KX0KLmJ0ZHtib3JkZXItdG9wOjFweCBkb3R0ZWQgcmdiYSgxMDcsIDE1OSwgMjE5LCAwLjM1KX0KLmJhc3tib3JkZXI6MXB4IHNvbGlkIHJnYmEoMTA3LCAxNTksIDIxOSwgMC4zNSl9Ci5iYWR7Ym9yZGVyOjFweCBkb3R0ZWQgcmdiYSgxMDcsIDE1OSwgMjE5LCAwLjM1KX0KLmJyMntib3JkZXItcmFkaXVzOjJweCFpbXBvcnRhbnR9Ci5icjR7Ym9yZGVyLXJhZGl1czo0cHghaW1wb3J0YW50fQouYnI2e2JvcmRlci1yYWRpdXM6NnB4IWltcG9ydGFudH0KLmJyOHtib3JkZXItcmFkaXVzOjhweCFpbXBvcnRhbnR9Ci5icjEwe2JvcmRlci1yYWRpdXM6MTBweCFpbXBvcnRhbnR9Ci5icjEwMHtib3JkZXItcmFkaXVzOjEwMHB4IWltcG9ydGFudH0KLmIxe2JvcmRlci13aWR0aDoxcHghaW1wb3J0YW50fQouYjJ7Ym9yZGVyLXdpZHRoOjJweCFpbXBvcnRhbnR9Ci5iM3tib3JkZXItd2lkdGg6M3B4IWltcG9ydGFudH0KLmI0e2JvcmRlci13aWR0aDo0cHghaW1wb3J0YW50fQouYjV7Ym9yZGVyLXdpZHRoOjVweCFpbXBvcnRhbnR9CkBrZXlmcmFtZXMgcm90YXRlMzYwe2Zyb217dHJhbnNmb3JtOnNjYWxlKDEpIHJvdGF0ZSgwZGVnKX0KdG97dHJhbnNmb3JtOnNjYWxlKDEpIHJvdGF0ZSgzNjBkZWcpfX0KLmFyb3QwNXN7YW5pbWF0aW9uLW5hbWU6cm90YXRlMzYwO2FuaW1hdGlvbi1kdXJhdGlvbjowLjVzO2FuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6aW5maW5pdGU7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpsaW5lYXJ9Ci5hcm90MXN7YW5pbWF0aW9uLW5hbWU6cm90YXRlMzYwO2FuaW1hdGlvbi1kdXJhdGlvbjoxczthbmltYXRpb24taXRlcmF0aW9uLWNvdW50OmluZmluaXRlO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246bGluZWFyfQouYXJvdDJze2FuaW1hdGlvbi1uYW1lOnJvdGF0ZTM2MDthbmltYXRpb24tZHVyYXRpb246MnM7YW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDppbmZpbml0ZTthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmxpbmVhcn0KZGl2Lm15LW1vZGFsLXNjcmVlbntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjIsIDUwLCA5MCwgMC44OCk7cG9zaXRpb246Zml4ZWQ7ei1pbmRleDoxOTk3O3RvcDowO2xlZnQ6MH0KZGl2Lm15LW1vZGFse3Bvc2l0aW9uOmZpeGVkO3otaW5kZXg6MTk5ODtib3gtc2hhZG93OjAgMCA2OXB4IDEwcHggcmdiYSgyOCwgMzIsIDM4LCAwLjUpO3BhZGRpbmc6MzBweDtiYWNrZ3JvdW5kLWNvbG9yOndoaXRlO3RleHQtYWxpZ246bGVmdDtib3JkZXI6MXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yYWRpdXM6M3B4fQpkaXYubXktbW9kYWwubXktbW9kYWwtbG9hZGluZ3tiYWNrZ3JvdW5kLWltYWdlOnVybCgnLi4vaS9sb2FkZXItYmFyMi5naWYnKTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteDtiYWNrZ3JvdW5kLXBvc2l0aW9uOmxlZnQgdG9wfQpkaXYubXktbW9kYWwgPiAubXktbW9kYWwtY2xvc2V7Zm9udC1mYW1pbHk6IkhlbHZldGljYSBOZXVlIiwgIlNlZ29lIFVJIiwgQXJpYWwsIHNhbnM7cG9zaXRpb246YWJzb2x1dGU7dG9wOi05cHQ7cmlnaHQ6LThwdDtmb250LXNpemU6MjBwdDtsaW5lLWhlaWdodDoxM3B0O21hcmdpbjowO2JvcmRlcjpub25lO3BhZGRpbmc6NHB0IDZwdCA4cHQgNnB0O2NvbG9yOiMyZDY2Yjg7Ym9yZGVyLXJhZGl1czoyMHB0O2JhY2tncm91bmQ6I2U1ZjNmZjt0cmFuc2l0aW9uOmNvbG9yIDAuM3M7Y3Vyc29yOnBvaW50ZXI7ei1pbmRleDoxOTk5fQpkaXYubXktbW9kYWwgPiAubXktbW9kYWwtY2xvc2U6aG92ZXJ7Y29sb3I6IzEyYTVkY30KZGl2Lm15LW1vZGFsLm15LW1vZGFsLW92ZXJsYXl7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxOTk4O2JveC1zaGFkb3c6MCAwIDExcHggNnB4IHJnYmEoMjgsIDMyLCAzOCwgMC4wOCksIDAgMCA2cHggcmdiYSgyOCwgMzIsIDM4LCAwLjE1KTtwYWRkaW5nOjEwcHggMTVweCAxM3B4IDE1cHg7Ym9yZGVyLXJhZGl1czozcHh9CmRpdi5teS1tb2RhbC5teS1tb2RhbC1vdmVybGF5ID4gLm15LW1vZGFsLWNsb3Nle3RvcDotMC4ycHQ7cmlnaHQ6LTAuMnB0O2JhY2tncm91bmQ6bm9uZTtwYWRkaW5nOjJwdCAzcHQgM3B0IDNwdH0KZGl2Lm15LW1vZGFsID4gLm15LW1vZGFsLW5vc2V7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDo4cHg7aGVpZ2h0OjhweDtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMjgsIDMyLCAzOCwgMC4xNSk7Ym9yZGVyLXRvcDpub25lO2JvcmRlci1yaWdodDpub25lO2JhY2tncm91bmQtY29sb3I6d2hpdGU7dG9wOjA7bGVmdDowfQpkaXYubXktbW9kYWwubm9zZS1sZWZ0OmJlZm9yZSwgZGl2Lm15LW1vZGFsLm5vc2UtcmlnaHQ6YmVmb3JlLCBkaXYubXktbW9kYWwubm9zZS10b3A6YmVmb3JlLCBkaXYubXktbW9kYWwubm9zZS1ib3R0b206YmVmb3Jle2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6OHB4O2hlaWdodDo4cHg7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDI4LCAzMiwgMzgsIDAuMTUpO2JvcmRlci10b3A6bm9uZTtib3JkZXItcmlnaHQ6bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOndoaXRlfQpkaXYubXktbW9kYWwubm9zZS1sZWZ0e21hcmdpbi1sZWZ0OjdweH0KZGl2Lm15LW1vZGFsLm5vc2UtcmlnaHR7bWFyZ2luLXJpZ2h0OjdweH0KZGl2Lm15LW1vZGFsLm5vc2UtdG9we21hcmdpbi10b3A6N3B4fQpkaXYubXktbW9kYWwubm9zZS1ib3R0b217bWFyZ2luLWJvdHRvbTo3cHh9CmRpdi5teS1tb2RhbC5ub3NlLWxlZnQ6YmVmb3Jle2xlZnQ6LTZweDt0b3A6NTAlO21hcmdpbi10b3A6LTVweDt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKTstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoNDVkZWcpOy1tb3otdHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyk7LW1zLXRyYW5zZm9ybTpyb3RhdGUoNDVkZWcpOy1vLXRyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfQpkaXYubXktbW9kYWwubm9zZS1yaWdodDpiZWZvcmV7cmlnaHQ6LTZweDt0b3A6NTAlO21hcmdpbi10b3A6LTVweDt0cmFuc2Zvcm06cm90YXRlKC0xMzVkZWcpOy13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtMTM1ZGVnKTstbW96LXRyYW5zZm9ybTpyb3RhdGUoLTEzNWRlZyk7LW1zLXRyYW5zZm9ybTpyb3RhdGUoLTEzNWRlZyk7LW8tdHJhbnNmb3JtOnJvdGF0ZSgtMTM1ZGVnKX0KZGl2Lm15LW1vZGFsLm5vc2UtdG9wOmJlZm9yZXtsZWZ0OjUwJTt0b3A6LTZweDttYXJnaW4tbGVmdDotNXB4O3RyYW5zZm9ybTpyb3RhdGUoMTM1ZGVnKTstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMTM1ZGVnKTstbW96LXRyYW5zZm9ybTpyb3RhdGUoMTM1ZGVnKTstbXMtdHJhbnNmb3JtOnJvdGF0ZSgxMzVkZWcpOy1vLXRyYW5zZm9ybTpyb3RhdGUoMTM1ZGVnKX0KZGl2Lm15LW1vZGFsLm5vc2UtYm90dG9tOmJlZm9yZXtsZWZ0OjUwJTtib3R0b206LTZweDttYXJnaW4tbGVmdDotNXB4O3RyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKTstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKTstbW96LXRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKTstbXMtdHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpOy1vLXRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKX0KLm15LXRhZ3N7cG9zaXRpb246cmVsYXRpdmV9Ci5teS10YWdzIC50YWd7cGFkZGluZzowLjE1ZW0gMC4zNWVtIDAuMjJlbSAwLjM1ZW07d2hpdGUtc3BhY2U6bm93cmFwO3RleHQtZGVjb3JhdGlvbjpub25lfQoubXktdGFncyAudGFnLmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMTU4LCAyMDUsIDI0OCwgMC4zNSk7Y29sb3I6IzIzNGY4Zjt0ZXh0LWRlY29yYXRpb246bm9uZTtib3JkZXItcmFkaXVzOjJweH0KLm15LWVycm9yIC5teS10YWdzIC50YWcuYWN0aXZle2JhY2tncm91bmQtY29sb3I6cmdiYSgyMzQsIDExNCwgMTM0LCAwLjM1KTtjb2xvcjojZDYyYzQ5fQoubXktdGFncyAudGFnLmFjdGl2ZTpob3Zlcntjb2xvcjojMTJhNWRjfQouc2VsZWN0Mi1jb250YWluZXJ7bWFyZ2luOjA7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlfQouc2VsZWN0Mi1jb250YWluZXIsIC5zZWxlY3QyLWRyb3AsIC5zZWxlY3QyLXNlYXJjaCwgLnNlbGVjdDItc2VhcmNoIGlucHV0ey13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94Oy1tb3otYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveH0KLnNlbGVjdDItY29udGFpbmVyIC5zZWxlY3QyLWNob2ljZXtkaXNwbGF5OmJsb2NrO3BhZGRpbmc6MCAwIDAgMC40ZW07b3ZlcmZsb3c6aGlkZGVuO3Bvc2l0aW9uOnJlbGF0aXZlO21pbi1oZWlnaHQ6MmVtO2JvcmRlcjoxcHggc29saWQgI2QwZDZkZDt3aGl0ZS1zcGFjZTpub3dyYXA7Y29sb3I6aW5oZXJpdDt0ZXh0LWRlY29yYXRpb246bm9uZTtib3JkZXItcmFkaXVzOjJweDtiYWNrZ3JvdW5kLWNsaXA6cGFkZGluZy1ib3g7LXdlYmtpdC10b3VjaC1jYWxsb3V0Om5vbmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lO2JhY2tncm91bmQtY29sb3I6I2ZmZn0KLnNlbGVjdDItY29udGFpbmVyLnNlbGVjdDItZHJvcC1hYm92ZSAuc2VsZWN0Mi1jaG9pY2V7Ym9yZGVyLWJvdHRvbS1jb2xvcjojZDBkNmRkO2JvcmRlci1yYWRpdXM6MCAwIDJweCAycHh9Ci5zZWxlY3QyLWNvbnRhaW5lci5zZWxlY3QyLWFsbG93Y2xlYXIgLnNlbGVjdDItY2hvaWNlIC5zZWxlY3QyLWNob3NlbnttYXJnaW4tcmlnaHQ6NDJweH0KLnNlbGVjdDItY29udGFpbmVyIC5zZWxlY3QyLWNob2ljZSA+IC5zZWxlY3QyLWNob3NlbnttYXJnaW4tcmlnaHQ6MjZweDtkaXNwbGF5OmJsb2NrO292ZXJmbG93OmhpZGRlbjt3aGl0ZS1zcGFjZTpub3dyYXA7dGV4dC1vdmVyZmxvdzplbGxpcHNpcztmbG9hdDpub25lO3dpZHRoOmF1dG87bGluZS1oZWlnaHQ6MS45ZW07Y29sb3I6IzRkNWE2YX0KaHRtbFtkaXI9InJ0bCJdIC5zZWxlY3QyLWNvbnRhaW5lciAuc2VsZWN0Mi1jaG9pY2UgPiAuc2VsZWN0Mi1jaG9zZW57bWFyZ2luLWxlZnQ6MjZweDttYXJnaW4tcmlnaHQ6MH0KLnNlbGVjdDItY29udGFpbmVyIC5zZWxlY3QyLWNob2ljZSBhYmJye2Rpc3BsYXk6bm9uZTt3aWR0aDoxMnB4O2hlaWdodDoxMnB4O3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjI0cHg7dG9wOjhweDtmb250LXNpemU6MXB4O3RleHQtZGVjb3JhdGlvbjpub25lO2JvcmRlcjowO2JhY2tncm91bmQtcG9zaXRpb246cmlnaHQgdG9wO2N1cnNvcjpwb2ludGVyO291dGxpbmU6MH0KLnNlbGVjdDItY29udGFpbmVyLnNlbGVjdDItYWxsb3djbGVhciAuc2VsZWN0Mi1jaG9pY2UgYWJicntkaXNwbGF5OmlubGluZS1ibG9ja30KLnNlbGVjdDItY29udGFpbmVyIC5zZWxlY3QyLWNob2ljZSBhYmJyOmhvdmVye2JhY2tncm91bmQtcG9zaXRpb246cmlnaHQgLTExcHg7Y3Vyc29yOnBvaW50ZXJ9Ci5zZWxlY3QyLWRyb3AtbWFza3tib3JkZXI6MDttYXJnaW46MDtwYWRkaW5nOjA7cG9zaXRpb246Zml4ZWQ7bGVmdDowO3RvcDowO21pbi1oZWlnaHQ6MTAwJTttaW4td2lkdGg6MTAwJTtoZWlnaHQ6YXV0bzt3aWR0aDphdXRvO29wYWNpdHk6MDt6LWluZGV4OjI5OTc7YmFja2dyb3VuZC1jb2xvcjojZmZmO2ZpbHRlcjphbHBoYShvcGFjaXR5PTApfQouc2VsZWN0Mi1kcm9we3dpZHRoOjEwMCU7bWFyZ2luLXRvcDotMXB4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6Mjk5ODt0b3A6MTAwJTtmb250LXNpemU6MC44ZW07bGluZS1oZWlnaHQ6MS4zNWVtO2JhY2tncm91bmQ6I2ZmZjtjb2xvcjppbmhlcml0O2JvcmRlcjoxcHggc29saWQgI2QwZDZkZDtib3JkZXItdG9wOjA7Y29sb3I6IzRkNWE2YTtib3JkZXItcmFkaXVzOjAgMCAycHggMnB4fQouc2VsZWN0Mi1kcm9wIGxpe21hcmdpbi1sZWZ0OjB9Ci5zZWxlY3QyLWRyb3Auc2VsZWN0Mi1kcm9wLWFib3Zle21hcmdpbi10b3A6MXB4O2JvcmRlci10b3A6MXB4IHNvbGlkICNkMGQ2ZGQ7Ym9yZGVyLWJvdHRvbTowO2JvcmRlci1yYWRpdXM6MnB4IDJweCAwIDB9Ci5zZWxlY3QyLWRyb3AtYWN0aXZle2JvcmRlcjoxcHggc29saWQgIzllY2RmODtib3JkZXItdG9wOm5vbmV9Ci5zZWxlY3QyLWRyb3Auc2VsZWN0Mi1kcm9wLWFib3ZlLnNlbGVjdDItZHJvcC1hY3RpdmV7Ym9yZGVyLXRvcDoxcHggc29saWQgIzllY2RmOH0KLnNlbGVjdDItZHJvcC1hdXRvLXdpZHRoe2JvcmRlci10b3A6MXB4IHNvbGlkICNkMGQ2ZGQ7d2lkdGg6YXV0b30KLnNlbGVjdDItY29udGFpbmVyIC5zZWxlY3QyLWNob2ljZSAuc2VsZWN0Mi1hcnJvd3tkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoxLjJlbTtoZWlnaHQ6MTAwJTtwb3NpdGlvbjphYnNvbHV0ZTtyaWdodDowO3RvcDowO3BhZGRpbmctbGVmdDoxcHg7cGFkZGluZy10b3A6MC4wNmVtO2JvcmRlci1yYWRpdXM6MCAycHggMnB4IDB9Ci5zZWxlY3QyLWNvbnRhaW5lciAuc2VsZWN0Mi1jaG9pY2UgLnNlbGVjdDItYXJyb3cgYntjb250ZW50OiIiO3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO2hlaWdodDowLjNlbTt3aWR0aDowLjNlbTt0b3A6LTAuMTZlbTtsZWZ0OjAuMjNlbTtmb250LXNpemU6MS4zZW07bGluZS1oZWlnaHQ6MWVtO2JvcmRlci1zdHlsZTpzb2xpZDtib3JkZXItd2lkdGg6MC4xMmVtIDAuMTJlbSAwIDA7dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXI7dHJhbnNmb3JtOnJvdGF0ZSgxMzVkZWcpO3RyYW5zaXRpb246b3BhY2l0eSAwLjNzO29wYWNpdHk6MC42fQouc2VsZWN0Mi1zZWFyY2h7ZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6MTAwJTttaW4taGVpZ2h0OjI2cHg7bWFyZ2luOjA7cGFkZGluZzo0cHggNHB4IDAgNHB4O3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6Mjk5OTt3aGl0ZS1zcGFjZTpub3dyYXB9Ci5zZWxlY3QyLXNlYXJjaCBpbnB1dHt3aWR0aDoxMDAlO2hlaWdodDphdXRvIWltcG9ydGFudDttaW4taGVpZ2h0OjI2cHg7cGFkZGluZzo0cHggMjBweCA0cHggNXB4O21hcmdpbjowO291dGxpbmU6bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOndoaXRlO2JhY2tncm91bmQtcG9zaXRpb246MTAwJSAtMjFweH0KLnNlbGVjdDItY29udGFpbmVyLWFjdGl2ZSAuc2VsZWN0Mi1jaG9pY2UsIC5zZWxlY3QyLWNvbnRhaW5lci1hY3RpdmUgLnNlbGVjdDItY2hvaWNlc3tib3JkZXI6MXB4IHNvbGlkICM5ZWNkZjg7b3V0bGluZTpub25lfQouc2VsZWN0Mi1kcm9wZG93bi1vcGVuIC5zZWxlY3QyLWNob2ljZXtib3JkZXItYm90dG9tLWNvbG9yOnRyYW5zcGFyZW50O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czowO2JhY2tncm91bmQtY29sb3I6cmdiYSgxNTgsIDIwNSwgMjQ4LCAwLjM1KX0KLnNlbGVjdDItZHJvcGRvd24tb3Blbi5zZWxlY3QyLWRyb3AtYWJvdmUgLnNlbGVjdDItY2hvaWNlLCAuc2VsZWN0Mi1kcm9wZG93bi1vcGVuLnNlbGVjdDItZHJvcC1hYm92ZSAuc2VsZWN0Mi1jaG9pY2Vze2JvcmRlcjoxcHggc29saWQgIzllY2RmODtib3JkZXItdG9wLWNvbG9yOnRyYW5zcGFyZW50fQouc2VsZWN0Mi1kcm9wZG93bi1vcGVuIC5zZWxlY3QyLWNob2ljZSAuc2VsZWN0Mi1hcnJvdyBie2xlZnQ6MC4yNWVtO3RvcDotMC4wMmVtO3RyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKX0KLnNlbGVjdDItaGlkZGVuLWFjY2Vzc2libGV7Ym9yZGVyOjA7Y2xpcDpyZWN0KDAgMCAwIDApO2hlaWdodDoxcHg7bWFyZ2luOi0xcHg7b3ZlcmZsb3c6aGlkZGVuO3BhZGRpbmc6MDtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDoxcHh9Ci5zZWxlY3QyLXJlc3VsdHN7bWF4LWhlaWdodDoyNTBweDtwYWRkaW5nOjAgMCAwIDRweDttYXJnaW46NHB4IDRweCA0cHggMDtwb3NpdGlvbjpyZWxhdGl2ZTtvdmVyZmxvdy14OmhpZGRlbjtvdmVyZmxvdy15OmF1dG87LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnJnYmEoMCwgMCwgMCwgMCk7LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2h9Ci5zZWxlY3QyLWRyb3AudGFsbCAuc2VsZWN0Mi1yZXN1bHRze21heC1oZWlnaHQ6MzUwcHh9Ci5zZWxlY3QyLWRyb3AudGFsbGVyIC5zZWxlY3QyLXJlc3VsdHN7bWF4LWhlaWdodDo0NTBweH0KaHRtbFtkaXI9InJ0bCJdIC5zZWxlY3QyLXJlc3VsdHN7cGFkZGluZzowIDRweCAwIDA7bWFyZ2luOjRweCAwIDRweCA0cHh9Ci5zZWxlY3QyLXJlc3VsdHMgdWwuc2VsZWN0Mi1yZXN1bHQtc3Vie21hcmdpbjowO3BhZGRpbmctbGVmdDowfQouc2VsZWN0Mi1yZXN1bHRzIGxpe2xpc3Qtc3R5bGU6bm9uZTtkaXNwbGF5Omxpc3QtaXRlbTtiYWNrZ3JvdW5kLWltYWdlOm5vbmV9Ci5zZWxlY3QyLXJlc3VsdHMgbGkuc2VsZWN0Mi1yZXN1bHQtd2l0aC1jaGlsZHJlbiA+IC5zZWxlY3QyLXJlc3VsdC1sYWJlbHtmb250LXdlaWdodDpib2xkfQouc2VsZWN0Mi1yZXN1bHRzIC5zZWxlY3QyLXJlc3VsdC1sYWJlbHtwYWRkaW5nOjFweCAwcHggMnB4O21hcmdpbjowO2N1cnNvcjpwb2ludGVyO21pbi1oZWlnaHQ6MWVtOy13ZWJraXQtdG91Y2gtY2FsbG91dDpub25lOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZX0KLnNlbGVjdDItcmVzdWx0cy1kZXB0LTEgLnNlbGVjdDItcmVzdWx0LWxhYmVse3BhZGRpbmctbGVmdDowcHh9Ci5zZWxlY3QyLXJlc3VsdHMtZGVwdC0yIC5zZWxlY3QyLXJlc3VsdC1sYWJlbHtwYWRkaW5nLWxlZnQ6MTBweH0KLnNlbGVjdDItcmVzdWx0cy1kZXB0LTMgLnNlbGVjdDItcmVzdWx0LWxhYmVse3BhZGRpbmctbGVmdDoyMHB4fQouc2VsZWN0Mi1yZXN1bHRzLWRlcHQtNCAuc2VsZWN0Mi1yZXN1bHQtbGFiZWx7cGFkZGluZy1sZWZ0OjMwcHh9Ci5zZWxlY3QyLXJlc3VsdHMgLnNlbGVjdDItaGlnaGxpZ2h0ZWR7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDE1OCwgMjA1LCAyNDgsIDAuMzUpO2NvbG9yOiM0ZDVhNmF9Ci5zZWxlY3QyLXJlc3VsdHMgbGkgZW17YmFja2dyb3VuZDpyZ2JhKDIwMywgMjMxLCAyNTQsIDAuMzUpO2ZvbnQtc3R5bGU6bm9ybWFsfQouc2VsZWN0Mi1yZXN1bHRzIC5zZWxlY3QyLWhpZ2hsaWdodGVkIGVte2JhY2tncm91bmQ6dHJhbnNwYXJlbnR9Ci5zZWxlY3QyLXJlc3VsdHMgLnNlbGVjdDItaGlnaGxpZ2h0ZWQgdWx7YmFja2dyb3VuZDojZmZmO2NvbG9yOiM0ZDVhNmF9Ci5zZWxlY3QyLXJlc3VsdHMgLnNlbGVjdDItbm8tcmVzdWx0cywgLnNlbGVjdDItcmVzdWx0cyAuc2VsZWN0Mi1zZWFyY2hpbmcsIC5zZWxlY3QyLXJlc3VsdHMgLnNlbGVjdDItYWpheC1lcnJvciwgLnNlbGVjdDItcmVzdWx0cyAuc2VsZWN0Mi1zZWxlY3Rpb24tbGltaXR7YmFja2dyb3VuZDpyZ2JhKDE4NSwgMTkyLCAyMDMsIDAuMzUpO2Rpc3BsYXk6bGlzdC1pdGVtO3BhZGRpbmctbGVmdDo1cHh9Ci5zZWxlY3QyLXJlc3VsdHMgLnNlbGVjdDItZGlzYWJsZWQuc2VsZWN0Mi1oaWdobGlnaHRlZHtjb2xvcjojNGQ1YTZhO2JhY2tncm91bmQ6cmdiYSgyMjcsIDIzMiwgMjM1LCAwLjM1KTtkaXNwbGF5Omxpc3QtaXRlbTtjdXJzb3I6ZGVmYXVsdH0KLnNlbGVjdDItcmVzdWx0cyAuc2VsZWN0Mi1kaXNhYmxlZHtiYWNrZ3JvdW5kOnJnYmEoMjI3LCAyMzIsIDIzNSwgMC4zNSk7ZGlzcGxheTpsaXN0LWl0ZW07Y3Vyc29yOmRlZmF1bHR9Ci5zZWxlY3QyLXJlc3VsdHMgLnNlbGVjdDItc2VsZWN0ZWR7ZGlzcGxheTpub25lfQouc2VsZWN0Mi1yZXN1bHRzIC5zZWxlY3QyLWFqYXgtZXJyb3J7YmFja2dyb3VuZDpyZ2JhKDI1NCwgMjExLCAyMTEsIDAuMzUpfQouc2VsZWN0Mi1tb3JlLXJlc3VsdHN7YmFja2dyb3VuZDpyZ2JhKDE4NSwgMTkyLCAyMDMsIDAuMzUpO2Rpc3BsYXk6bGlzdC1pdGVtfQouc2VsZWN0Mi1jb250YWluZXIuc2VsZWN0Mi1jb250YWluZXItZGlzYWJsZWQgLnNlbGVjdDItY2hvaWNle2JhY2tncm91bmQtY29sb3I6cmdiYSgyMjcsIDIzMiwgMjM1LCAwLjM1KTtiYWNrZ3JvdW5kLWltYWdlOm5vbmU7Ym9yZGVyOjFweCBzb2xpZCAjZTNlOGViO2N1cnNvcjpkZWZhdWx0fQouc2VsZWN0Mi1jb250YWluZXIuc2VsZWN0Mi1jb250YWluZXItZGlzYWJsZWQgLnNlbGVjdDItY2hvaWNlIC5zZWxlY3QyLWFycm93e29wYWNpdHk6MC41fQouc2VsZWN0Mi1jb250YWluZXIuc2VsZWN0Mi1jb250YWluZXItZGlzYWJsZWQgLnNlbGVjdDItY2hvaWNlIGFiYnJ7ZGlzcGxheTpub25lfQouc2VsZWN0Mi1jb250YWluZXItbXVsdGkgLnNlbGVjdDItY2hvaWNlc3ttaW4taGVpZ2h0OjI2cHg7YmFja2dyb3VuZC1jb2xvcjojZmZmO2JvcmRlcjoxcHggc29saWQgI2QwZDZkZDtib3JkZXItcmFkaXVzOjJweDttYXJnaW46MDtwYWRkaW5nOjAgMCAycHggMDtjdXJzb3I6dGV4dDtvdmVyZmxvdzpoaWRkZW47aGVpZ2h0OmF1dG8haW1wb3J0YW50O3Bvc2l0aW9uOnJlbGF0aXZlfQouc2VsZWN0Mi1sb2NrZWR7cGFkZGluZzozcHggNXB4IDNweCA1cHghaW1wb3J0YW50fQouc2VsZWN0Mi1jb250YWluZXItbXVsdGkuc2VsZWN0Mi1jb250YWluZXItYWN0aXZlIC5zZWxlY3QyLWNob2ljZXN7Ym9yZGVyOjFweCBzb2xpZCAjOWVjZGY4O291dGxpbmU6bm9uZX0KLnNlbGVjdDItY29udGFpbmVyLW11bHRpIC5zZWxlY3QyLWNob2ljZXMgbGl7ZmxvYXQ6bGVmdDtsaXN0LXN0eWxlOm5vbmV9Ci5zZWxlY3QyLWNvbnRhaW5lci1tdWx0aSAuc2VsZWN0Mi1jaG9pY2VzIC5zZWxlY3QyLXNlYXJjaC1maWVsZHttYXJnaW46MDtwYWRkaW5nOjA7d2hpdGUtc3BhY2U6bm93cmFwfQouc2VsZWN0Mi1jb250YWluZXItbXVsdGkgLnNlbGVjdDItY2hvaWNlcyAuc2VsZWN0Mi1zZWFyY2gtZmllbGQgaW5wdXR7cGFkZGluZzozcHggNnB4O21hcmdpbjozcHggMDtmb250LXNpemU6MC45ZW07bGluZS1oZWlnaHQ6MS4xZW07b3V0bGluZTpub25lO2JvcmRlcjowIWltcG9ydGFudDtiYWNrZ3JvdW5kOnRyYW5zcGFyZW50IWltcG9ydGFudH0KLm15LWVycm9yIC5zZWxlY3QyLWNvbnRhaW5lci1tdWx0aSAuc2VsZWN0Mi1jaG9pY2VzIC5zZWxlY3QyLXNlYXJjaC1maWVsZCBpbnB1dCwgLm15LWVycm9yIC5zZWxlY3QyLWNvbnRhaW5lci1tdWx0aSAuc2VsZWN0Mi1jaG9pY2VzIC5zZWxlY3QyLXNlYXJjaC1maWVsZCBpbnB1dDpmb2N1c3tib3JkZXI6MCFpbXBvcnRhbnR9Ci5zZWxlY3QyLWRlZmF1bHR7Y29sb3I6I2I5YzBjYiFpbXBvcnRhbnR9Ci5zZWxlY3QyLWNvbnRhaW5lci1tdWx0aSAuc2VsZWN0Mi1jaG9pY2VzIC5zZWxlY3QyLXNlYXJjaC1jaG9pY2V7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDE4NSwgMTkyLCAyMDMsIDAuMzUpO2ZpbHRlcjpub25lO2JhY2tncm91bmQtaW1hZ2U6bm9uZTtjb2xvcjojNGQ1YTZhO2JvcmRlcjpub25lO2xpbmUtaGVpZ2h0OjEuMWVtO2ZvbnQtc2l6ZTowLjllbTtwYWRkaW5nOjNweCA4cHggNHB4IDE2cHg7bWFyZ2luOjNweCAwIDBweCAzcHg7cG9zaXRpb246cmVsYXRpdmU7Y3Vyc29yOmRlZmF1bHQ7LXdlYmtpdC10b3VjaC1jYWxsb3V0Om5vbmU7LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lfQouc2VsZWN0Mi1jb250YWluZXItbXVsdGkgLnNlbGVjdDItY2hvaWNlcyAuc2VsZWN0Mi1zZWFyY2gtY2hvaWNlIC5zZWxlY3QyLWNob3NlbntjdXJzb3I6ZGVmYXVsdH0KLnNlbGVjdDItY29udGFpbmVyLW11bHRpIC5zZWxlY3QyLWNob2ljZXMgLnNlbGVjdDItc2VhcmNoLWNob2ljZS1mb2N1c3tiYWNrZ3JvdW5kOnJnYmEoMTU4LCAyMDUsIDI0OCwgMC4zNSl9Ci5zZWxlY3QyLXNlYXJjaC1jaG9pY2UtY2xvc2V7ZGlzcGxheTpibG9jazt3aWR0aDoxMnB4O2hlaWdodDoxM3B4O3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjNweDt0b3A6NHB4O2ZvbnQtc2l6ZToxcHg7b3V0bGluZTpub25lO2JhY2tncm91bmQtcG9zaXRpb246cmlnaHQgdG9wfQouc2VsZWN0Mi1jb250YWluZXItbXVsdGkgLnNlbGVjdDItc2VhcmNoLWNob2ljZS1jbG9zZXtsZWZ0OjNweH0KLnNlbGVjdDItY29udGFpbmVyLW11bHRpIC5zZWxlY3QyLWNob2ljZXMgLnNlbGVjdDItc2VhcmNoLWNob2ljZSAuc2VsZWN0Mi1zZWFyY2gtY2hvaWNlLWNsb3NlOmhvdmVye2JhY2tncm91bmQtcG9zaXRpb246cmlnaHQgLTExcHh9Ci5zZWxlY3QyLWNvbnRhaW5lci1tdWx0aSAuc2VsZWN0Mi1jaG9pY2VzIC5zZWxlY3QyLXNlYXJjaC1jaG9pY2UtZm9jdXMgLnNlbGVjdDItc2VhcmNoLWNob2ljZS1jbG9zZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0IC0xMXB4fQouc2VsZWN0Mi1jb250YWluZXItbXVsdGkuc2VsZWN0Mi1jb250YWluZXItZGlzYWJsZWQgLnNlbGVjdDItY2hvaWNlc3tiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjI3LCAyMzIsIDIzNSwgMC4zNSk7YmFja2dyb3VuZC1pbWFnZTpub25lO2JvcmRlcjoxcHggc29saWQgI2UzZThlYjtjdXJzb3I6ZGVmYXVsdH0KLnNlbGVjdDItY29udGFpbmVyLW11bHRpLnNlbGVjdDItY29udGFpbmVyLWRpc2FibGVkIC5zZWxlY3QyLWNob2ljZXMgLnNlbGVjdDItc2VhcmNoLWNob2ljZXtwYWRkaW5nLWxlZnQ6NXB4O2JhY2tncm91bmQtaW1hZ2U6bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjI3LCAyMzIsIDIzNSwgMC4zNSl9Ci5zZWxlY3QyLWNvbnRhaW5lci1tdWx0aS5zZWxlY3QyLWNvbnRhaW5lci1kaXNhYmxlZCAuc2VsZWN0Mi1jaG9pY2VzIC5zZWxlY3QyLXNlYXJjaC1jaG9pY2UgLnNlbGVjdDItc2VhcmNoLWNob2ljZS1jbG9zZXtkaXNwbGF5Om5vbmU7YmFja2dyb3VuZDpub25lfQouc2VsZWN0Mi1yZXN1bHQtc2VsZWN0YWJsZSAuc2VsZWN0Mi1tYXRjaCwgLnNlbGVjdDItcmVzdWx0LXVuc2VsZWN0YWJsZSAuc2VsZWN0Mi1tYXRjaHt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfQouc2VsZWN0Mi1vZmZzY3JlZW4sIC5zZWxlY3QyLW9mZnNjcmVlbjpmb2N1c3tjbGlwOnJlY3QoMCAwIDAgMCkhaW1wb3J0YW50O3dpZHRoOjFweCFpbXBvcnRhbnQ7aGVpZ2h0OjFweCFpbXBvcnRhbnQ7Ym9yZGVyOjAhaW1wb3J0YW50O21hcmdpbjowIWltcG9ydGFudDtwYWRkaW5nOjAhaW1wb3J0YW50O292ZXJmbG93OmhpZGRlbiFpbXBvcnRhbnQ7cG9zaXRpb246YWJzb2x1dGUhaW1wb3J0YW50O291dGxpbmU6MCFpbXBvcnRhbnQ7bGVmdDowcHghaW1wb3J0YW50O3RvcDowcHghaW1wb3J0YW50fQouc2VsZWN0Mi1kaXNwbGF5LW5vbmV7ZGlzcGxheTpub25lfQouc2VsZWN0Mi1tZWFzdXJlLXNjcm9sbGJhcntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LTEwMDAwcHg7bGVmdDotMTAwMDBweDt3aWR0aDoxMDBweDtoZWlnaHQ6MTAwcHg7b3ZlcmZsb3c6c2Nyb2xsfQouc2VsZWN0Mi1zZWFyY2ggaW5wdXQsIC5zZWxlY3QyLXNlYXJjaC1jaG9pY2UtY2xvc2UsIC5zZWxlY3QyLWNvbnRhaW5lciAuc2VsZWN0Mi1jaG9pY2UgYWJicntiYWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUIyWlhKemFXOXVQU0l4TGpFaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02ZUd4cGJtczlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1RrdmVHeHBibXNpSUhnOUlqQWlJSGs5SWpBaUlIZHBaSFJvUFNJeU5EQWlJR2hsYVdkb2REMGlNVFl3SWlCMmFXVjNRbTk0UFNJd0xDQXdMQ0F5TkRBc0lERTJNQ0krQ2p4d1lYUm9JR1E5SWsweU1Td3pPQ0JNTkRjc016Z2dURE0wTERZd0lFd3lNU3d6T0NCNklFMDVNeXcxTkNCTU1UQTJMRE15SUV3eE1Ua3NOVFFnVERrekxEVTBJSG9pSUdacGJHdzlJaU13TURBd01EQWlJR1pwYkd3dGIzQmhZMmwwZVQwaU1DNHlOU0l2UGdvOGNHRjBhQ0JrUFNKTk1qSTFMRFV6SUV3eU1qa3NOVGNnVERJeE9TdzJOeUJNTWpJNUxEYzNJRXd5TWpVc09ERWdUREl4TlN3M01TQk1NakExTERneElFd3lNREVzTnpjZ1RESXhNU3cyTnlCTU1qQXhMRFUzSUV3eU1EVXNOVE1nVERJeE5TdzJNeUJNTWpJMUxEVXpJSG9pSUdacGJHdzlJaU13TURBd01EQWlJR1pwYkd3dGIzQmhZMmwwZVQwaU1DNHpOU0l2UGdvOGNHRjBhQ0JrUFNKTk1qSTFMRGtnVERJeU9Td3hNeUJNTWpFNUxESXpJRXd5TWprc016TWdUREl5TlN3ek55Qk1NakUxTERJM0lFd3lNRFVzTXpjZ1RESXdNU3d6TXlCTU1qRXhMREl6SUV3eU1ERXNNVE1nVERJd05TdzVJRXd5TVRVc01Ua2dUREl5TlN3NUlIb2lJR1pwYkd3OUlpTXdNREF3TURBaUlHWnBiR3d0YjNCaFkybDBlVDBpTUM0eU1TSXZQZ284Y0dGMGFDQmtQU0pOTVRrd0xERXdPQ0JETWpBd0xERXdPQ0F5TURnc01URTJJREl3T0N3eE1qWWdRekl3T0N3eE16QWdNakEzTERFek15QXlNRFVzTVRNMklFd3lNVGdzTVRRNUlFTXlNVGt1TXpZM0xERTFNQzR6TmpjZ01qRTVMak0yTnl3eE5USXVOak16SURJeE9Dd3hOVFFnUXpJeE5pNDJNek1zTVRVMUxqTTJOeUF5TVRRdU16WTNMREUxTlM0ek5qY2dNakV6TERFMU5DQk1NakF3TERFME1TQkRNVGszTERFME15QXhPVE11TlRRc01UUTBJREU1TUN3eE5EUWdRekU0TUN3eE5EUWdNVGN5TERFek5pQXhOeklzTVRJMklFTXhOeklzTVRFMklERTRNQ3d4TURnZ01Ua3dMREV3T0NCNklFMHhPVEFzTVRFMElFTXhPRE1zTVRFMElERTNPQ3d4TVRrZ01UYzRMREV5TmlCRE1UYzRMREV6TXlBeE9ETXNNVE00SURFNU1Dd3hNemdnUXpFNU55d3hNemdnTWpBeUxERXpNeUF5TURJc01USTJJRU15TURJc01URTVJREU1Tnl3eE1UUWdNVGt3TERFeE5DQjZJaUJtYVd4c1BTSWpNREF3TURBd0lpQm1hV3hzTFc5d1lXTnBkSGs5SWpBdU1qVWlMejRLUEM5emRtYytDZz09KSFpbXBvcnRhbnQ7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0IWltcG9ydGFudDtiYWNrZ3JvdW5kLXNpemU6NjBweCA0MHB4IWltcG9ydGFudH0KLnVpLXNsaWRlcntib3JkZXI6MXB4IHNvbGlkICNkMGQ2ZGQhaW1wb3J0YW50O2JvcmRlci1yYWRpdXM6MTAwcHghaW1wb3J0YW50O2JhY2tncm91bmQ6d2hpdGU7Zm9udC1zaXplOjkwJTtkaXNwbGF5OmlubGluZS1ibG9jaztwb3NpdGlvbjpyZWxhdGl2ZTt0ZXh0LWFsaWduOmxlZnR9Ci51aS1zbGlkZXItaG9yaXpvbnRhbHtoZWlnaHQ6MC40ZW19Ci51aS1zbGlkZXItaGFuZGxle2JvcmRlcjoxcHggc29saWQgI2QwZDZkZDtiYWNrZ3JvdW5kOiNlM2U4ZWI7Ym9yZGVyLXJhZGl1czozcHg7aGVpZ2h0OjEuMWVtO3dpZHRoOjEuMWVtO291dGxpbmU6bm9uZSFpbXBvcnRhbnQ7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxO2N1cnNvcjpkZWZhdWx0fQoudWktc2xpZGVyLWhhbmRsZS51aS1zdGF0ZS1ob3ZlcntiYWNrZ3JvdW5kOiNjYmU3ZmU7Ym9yZGVyOjFweCBzb2xpZCAjOWVjZGY4fQoudWktc2xpZGVyIC51aS1zbGlkZXItcmFuZ2V7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDoxO2ZvbnQtc2l6ZTouN2VtO2Rpc3BsYXk6YmxvY2s7Ym9yZGVyOjA7YmFja2dyb3VuZC1wb3NpdGlvbjowIDB9Ci51aS1zbGlkZXItaG9yaXpvbnRhbCAudWktc2xpZGVyLWhhbmRsZXt0b3A6LTAuNGVtO21hcmdpbi1sZWZ0Oi0wLjU1ZW19Ci51aS1zbGlkZXItaG9yaXpvbnRhbCAudWktc2xpZGVyLXJhbmdle3RvcDowO2hlaWdodDoxMDAlfQoudWktc2xpZGVyLWhvcml6b250YWwgLnVpLXNsaWRlci1yYW5nZS1taW57bGVmdDowfQoudWktc2xpZGVyLWhvcml6b250YWwgLnVpLXNsaWRlci1yYW5nZS1tYXh7cmlnaHQ6MH0KLnVpLXNsaWRlci12ZXJ0aWNhbHt3aWR0aDouNGVtO2hlaWdodDoxMDBweH0KLnVpLXNsaWRlci12ZXJ0aWNhbCAudWktc2xpZGVyLWhhbmRsZXtsZWZ0Oi0wLjRlbTttYXJnaW4tbGVmdDowO21hcmdpbi1ib3R0b206LTAuNTVlbX0KLnVpLXNsaWRlci12ZXJ0aWNhbCAudWktc2xpZGVyLXJhbmdle2xlZnQ6MDt3aWR0aDoxMDAlfQoudWktc2xpZGVyLXZlcnRpY2FsIC51aS1zbGlkZXItcmFuZ2UtbWlue2JvdHRvbTowfQoudWktc2xpZGVyLXZlcnRpY2FsIC51aS1zbGlkZXItcmFuZ2UtbWF4e3RvcDowfQppbnB1dFt0eXBlPSJyYW5nZSJdIHtib3JkZXI6MXB4IHNvbGlkICNkMGQ2ZGQ7Ym9yZGVyLXJhZGl1czoxMDBweDtiYWNrZ3JvdW5kOndoaXRlO2ZvbnQtc2l6ZTo5MCU7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjAuNGVtfQppbnB1dFt0eXBlPSJyYW5nZSJdOjotd2Via2l0LXNsaWRlci10aHVtYnstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTtwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6MDttYXJnaW4tbGVmdDowO3otaW5kZXg6MTtib3JkZXI6MXB4IHNvbGlkICNkMGQ2ZGQ7YmFja2dyb3VuZDojZTNlOGViO2JvcmRlci1yYWRpdXM6M3B4O2hlaWdodDoxLjFlbTt3aWR0aDoxLjFlbX0KaW5wdXRbdHlwZT0icmFuZ2UiXTo6LXdlYmtpdC1zbGlkZXItdGh1bWI6aG92ZXJ7YmFja2dyb3VuZDojYjdkYmZiO2JvcmRlcjoxcHggc29saWQgI2I3ZGJmYn0KLnVpLXdpZGdldHtmb250LXNpemU6OTAlfQpib2R5ID4gLnVpLWF1dG9jb21wbGV0ZXtmb250LXNpemU6MTVweDtsaW5lLWhlaWdodDoxLjNlbX0KLnVpLXdpZGdldC1jb250ZW50e2JvcmRlcjoxcHggc29saWQgI2QwZDZkZDtib3JkZXItcmFkaXVzOjJweDtiYWNrZ3JvdW5kOndoaXRlO2NvbG9yOiM0ZDVhNmF9Ci51aS1zdGF0ZS1hY3RpdmV7YmFja2dyb3VuZC1jb2xvcjojY2JlN2ZlfQoudWktc3RhdGUtaGlnaGxpZ2h0e2JveC1zaGFkb3c6MCAwIDAgMXB4ICNkMGQ2ZGQgaW5zZXR9Ci51aS1zdGF0ZS1kaXNhYmxlZCwgLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1kaXNhYmxlZCwgLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWRpc2FibGVke29wYWNpdHk6LjY7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NzApfQoudWktd2lkZ2V0LW92ZXJsYXl7cG9zaXRpb246Zml4ZWQ7dG9wOjA7bGVmdDowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCV9Ci51aS1zdGF0ZS1mb2N1c3tiYWNrZ3JvdW5kLWNvbG9yOiNjYmU3ZmV9Ci51aS1hdXRvY29tcGxldGV7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO2N1cnNvcjpkZWZhdWx0O2JvcmRlci1jb2xvcjojOWVjZGY4O2JvcmRlci10b3A6bm9uZTtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjBweDtib3JkZXItdG9wLXJpZ2h0LXJhZGl1czowcHg7ei1pbmRleDo5OTk5fQoudWktbWVudXtsaXN0LXN0eWxlOm5vbmU7cGFkZGluZzowO21hcmdpbjowO2Rpc3BsYXk6YmxvY2s7b3V0bGluZTpub25lfQoudWktbWVudSAudWktbWVudXtwb3NpdGlvbjphYnNvbHV0ZX0KLnVpLW1lbnUgLnVpLW1lbnUtaXRlbXtwb3NpdGlvbjpyZWxhdGl2ZTttYXJnaW46MDtwYWRkaW5nOjNweCAxZW0gM3B4IC40ZW07Y3Vyc29yOnBvaW50ZXI7bWluLWhlaWdodDowO2xpc3Qtc3R5bGUtaW1hZ2U6dXJsKCJkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhBUUFCQUlBQUFBQUFBUC8vL3lINUJBRUFBQUFBTEFBQUFBQUJBQUVBQUFJQlJBQTciKX0KLnVpLXRvb2x0aXB7cGFkZGluZzo4cHg7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDo5OTk5O21heC13aWR0aDozMDBweDstd2Via2l0LWJveC1zaGFkb3c6MCAwIDVweCAjYWFhO2JveC1zaGFkb3c6MCAwIDVweCAjYWFhfQoudWktdG9vbHRpcHtwYWRkaW5nOjhweCAxMnB4IDlweCAxMnB4O3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6NTk5OTk7bWF4LXdpZHRoOjI1MHB4O21pbi13aWR0aDoyMDBweDtib3gtc2hhZG93OjJweCAycHggMHB4IHJnYmEoMjgsIDMyLCAzOCwgMC4wOCk7Ym9yZGVyOjFweCBzb2xpZCAjZDBkNmRkO2JhY2tncm91bmQtY29sb3I6d2hpdGU7Zm9udC1zaXplOjkwJTtsaW5lLWhlaWdodDoxLjNlbTtjb2xvcjojNmI5ZmRiO2hlaWdodDphdXRvfQoudWktdG9vbHRpcDpiZWZvcmV7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi03cHg7dG9wOjEwcHg7d2lkdGg6MTFweDtoZWlnaHQ6MTFweDtib3JkZXI6MXB4IHNvbGlkICNkMGQ2ZGQ7Ym9yZGVyLXRvcDpub25lO2JvcmRlci1yaWdodDpub25lO2JhY2tncm91bmQtY29sb3I6d2hpdGU7dHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyk7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKTstbW96LXRyYW5zZm9ybTpyb3RhdGUoNDVkZWcpOy1tcy10cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKTstby10cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKTt6LWluZGV4OjU5OTk4fQouQ29kZU1pcnJvcntmb250OjEzcHggQ291c2luZSwgdWktbW9ub3NwYWNlLCBNb25hY28sIE1lcmxvLCBtb25vc3BhY2U7aGVpZ2h0OmF1dG99Ci5Db2RlTWlycm9yLXNjcm9sbHtvdmVyZmxvdzphdXRvfQouQ29kZU1pcnJvci1saW5lc3twYWRkaW5nOjRweCAwfQouQ29kZU1pcnJvciBwcmV7cGFkZGluZzowIDRweH0KLkNvZGVNaXJyb3Itc2Nyb2xsYmFyLWZpbGxlciwgLkNvZGVNaXJyb3ItZ3V0dGVyLWZpbGxlcntiYWNrZ3JvdW5kLWNvbG9yOndoaXRlfQouQ29kZU1pcnJvci1ndXR0ZXJze2JvcmRlci1yaWdodDoxcHggc29saWQgI2RkZDtiYWNrZ3JvdW5kLWNvbG9yOiNmN2Y3Zjc7d2hpdGUtc3BhY2U6bm93cmFwfQouQ29kZU1pcnJvci1saW5lbnVtYmVye3BhZGRpbmc6MCAzcHggMCA1cHg7bWluLXdpZHRoOjIwcHg7dGV4dC1hbGlnbjpyaWdodDtjb2xvcjojOTk5O3doaXRlLXNwYWNlOm5vd3JhcH0KLkNvZGVNaXJyb3IgZGl2LkNvZGVNaXJyb3ItY3Vyc29ye2JvcmRlci1sZWZ0OjFweCBzb2xpZCBibGFjazt6LWluZGV4OjN9Ci5Db2RlTWlycm9yIGRpdi5Db2RlTWlycm9yLXNlY29uZGFyeWN1cnNvcntib3JkZXItbGVmdDoxcHggc29saWQgc2lsdmVyfQouQ29kZU1pcnJvci5jbS1rZXltYXAtZmF0LWN1cnNvciBkaXYuQ29kZU1pcnJvci1jdXJzb3J7d2lkdGg6YXV0bztib3JkZXI6MDtiYWNrZ3JvdW5kOiM3ZTc7ei1pbmRleDoxfQouY20tdGFie2Rpc3BsYXk6aW5saW5lLWJsb2NrfQouY20tcy1kZWZhdWx0IC5jbS1rZXl3b3Jke2NvbG9yOiM2MTM0OTR9Ci5jbS1zLWRlZmF1bHQgLmNtLWF0b217Y29sb3I6I2ZmODAwMX0KLmNtLXMtZGVmYXVsdCAuY20tbnVtYmVye2NvbG9yOiM2NTljMTN9Ci5jbS1zLWRlZmF1bHQgLmNtLWRlZntjb2xvcjojYzMwYzNifQouY20tcy1kZWZhdWx0IC5jbS12YXJpYWJsZXtjb2xvcjojMzNiZmFkfQouY20tcy1kZWZhdWx0IC5jbS12YXJpYWJsZS0ye2NvbG9yOiMwMDU1YWF9Ci5jbS1zLWRlZmF1bHQgLmNtLXZhcmlhYmxlLTN7Y29sb3I6IzAwODg1NX0KLmNtLXMtZGVmYXVsdCAuY20tcHJvcGVydHl7Y29sb3I6IzQzNGU1ZH0KLmNtLXMtZGVmYXVsdCAuY20tb3BlcmF0b3J7Y29sb3I6IzM2MzYzNn0KLmNtLXMtZGVmYXVsdCAuY20tY29tbWVudHtjb2xvcjojNGFhYTAwfQouY20tcy1kZWZhdWx0IC5jbS1zdHJpbmd7Y29sb3I6IzQwNjNiMH0KLmNtLXMtZGVmYXVsdCAuY20tc3RyaW5nLTJ7Y29sb3I6I2ZmNTUwMH0KLmNtLXMtZGVmYXVsdCAuY20tbWV0YXtjb2xvcjojNTU1NTU1fQouY20tcy1kZWZhdWx0IC5jbS1xdWFsaWZpZXJ7Y29sb3I6IzU1NTU1NX0KLmNtLXMtZGVmYXVsdCAuY20tYnVpbHRpbntjb2xvcjojMzMwMGFhfQouY20tcy1kZWZhdWx0IC5jbS1icmFja2V0e2NvbG9yOiM5OTk5Nzd9Ci5jbS1zLWRlZmF1bHQgLmNtLXRhZ3tjb2xvcjojNWY5MTFlfQouY20tcy1kZWZhdWx0IC5jbS1hdHRyaWJ1dGV7Y29sb3I6I2Q5Mjc2OH0KLmNtLXMtZGVmYXVsdCAuY20taGVhZGVye2NvbG9yOiNiNjAwMDB9Ci5jbS1zLWRlZmF1bHQgLmNtLXF1b3Rle2NvbG9yOiNmODM0Yzh9Ci5jbS1zLWRlZmF1bHQgLmNtLWhye2NvbG9yOiM5OTk5OTl9Ci5jbS1zLWRlZmF1bHQgLmNtLWxpbmt7Y29sb3I6IzU0ODFhMH0KLmNtLW5lZ2F0aXZle2NvbG9yOiNkZDQ0NDR9Ci5jbS1wb3NpdGl2ZXtjb2xvcjojMjI5OTIyfQouY20taGVhZGVyLCAuY20tc3Ryb25ne2ZvbnQtd2VpZ2h0OmJvbGR9Ci5jbS1lbXtmb250LXN0eWxlOml0YWxpY30KLmNtLWxpbmt7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX0KLmNtLXN0cmlrZXRocm91Z2h7dGV4dC1kZWNvcmF0aW9uOmxpbmUtdGhyb3VnaH0KLmNtLXMtZGVmYXVsdCAuY20tZXJyb3J7Y29sb3I6I2Q2MmM0OX0KLmNtLWludmFsaWRjaGFye2NvbG9yOiNmZjAwMDB9CmRpdi5Db2RlTWlycm9yIHNwYW4uQ29kZU1pcnJvci1tYXRjaGluZ2JyYWNrZXR7Y29sb3I6IzAwZmYwMH0KZGl2LkNvZGVNaXJyb3Igc3Bhbi5Db2RlTWlycm9yLW5vbm1hdGNoaW5nYnJhY2tldHtjb2xvcjojZmYyMjIyfQouQ29kZU1pcnJvci1hY3RpdmVsaW5lLWJhY2tncm91bmR7YmFja2dyb3VuZDojZThmMmZmfQouQ29kZU1pcnJvcntsaW5lLWhlaWdodDoxLjMyZW07cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQ6d2hpdGU7Y29sb3I6IzMzM30KLkNvZGVNaXJyb3Itc2Nyb2xse21hcmdpbi1ib3R0b206LTMwcHg7bWFyZ2luLXJpZ2h0Oi0zMHB4O3BhZGRpbmctYm90dG9tOjMwcHg7cGFkZGluZy1yaWdodDozMHB4O2hlaWdodDoxMDAlO291dGxpbmU6bm9uZTtwb3NpdGlvbjpyZWxhdGl2ZTstbW96LWJveC1zaXppbmc6Y29udGVudC1ib3g7Ym94LXNpemluZzpjb250ZW50LWJveH0KLkNvZGVNaXJyb3Itc2l6ZXJ7cG9zaXRpb246cmVsYXRpdmV9Ci5Db2RlTWlycm9yLXZzY3JvbGxiYXIsIC5Db2RlTWlycm9yLWhzY3JvbGxiYXIsIC5Db2RlTWlycm9yLXNjcm9sbGJhci1maWxsZXIsIC5Db2RlTWlycm9yLWd1dHRlci1maWxsZXJ7cG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDo2O2Rpc3BsYXk6bm9uZX0KLkNvZGVNaXJyb3ItdnNjcm9sbGJhcntyaWdodDowO3RvcDowO292ZXJmbG93LXg6aGlkZGVuO292ZXJmbG93LXk6c2Nyb2xsfQouQ29kZU1pcnJvci1oc2Nyb2xsYmFye2JvdHRvbTowO2xlZnQ6MDtvdmVyZmxvdy15OmhpZGRlbjtvdmVyZmxvdy14OnNjcm9sbH0KLkNvZGVNaXJyb3Itc2Nyb2xsYmFyLWZpbGxlcntyaWdodDowO2JvdHRvbTowfQouQ29kZU1pcnJvci1ndXR0ZXItZmlsbGVye2xlZnQ6MDtib3R0b206MH0KLkNvZGVNaXJyb3ItZ3V0dGVyc3twb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7dG9wOjA7cGFkZGluZy1ib3R0b206MzBweDt6LWluZGV4OjN9Ci5Db2RlTWlycm9yLWd1dHRlcnt3aGl0ZS1zcGFjZTpub3JtYWw7aGVpZ2h0OjEwMCU7LW1vei1ib3gtc2l6aW5nOmNvbnRlbnQtYm94O2JveC1zaXppbmc6Y29udGVudC1ib3g7cGFkZGluZy1ib3R0b206MzBweDttYXJnaW4tYm90dG9tOi0zMnB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrOyp6b29tOjE7KmRpc3BsYXk6aW5saW5lfQouQ29kZU1pcnJvci1ndXR0ZXItZWx0e3Bvc2l0aW9uOmFic29sdXRlO2N1cnNvcjpkZWZhdWx0O3otaW5kZXg6NH0KLkNvZGVNaXJyb3ItbGluZXN7Y3Vyc29yOnRleHQ7bGluZS1oZWlnaHQ6MS4zZW19Ci5Db2RlTWlycm9yIHByZXstbW96LWJvcmRlci1yYWRpdXM6MDstd2Via2l0LWJvcmRlci1yYWRpdXM6MDtib3JkZXItcmFkaXVzOjA7Ym9yZGVyLXdpZHRoOjA7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZTppbmhlcml0O21hcmdpbjowO3doaXRlLXNwYWNlOnByZTt3b3JkLXdyYXA6bm9ybWFsO2xpbmUtaGVpZ2h0OmluaGVyaXQ7Y29sb3I6aW5oZXJpdDt6LWluZGV4OjI7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6dmlzaWJsZX0KLkNvZGVNaXJyb3Itd3JhcCBwcmV7d29yZC13cmFwOmJyZWFrLXdvcmQ7d2hpdGUtc3BhY2U6cHJlLXdyYXA7d29yZC1icmVhazpub3JtYWx9Ci5Db2RlTWlycm9yLWNvZGUgcHJle2JvcmRlci1yaWdodDozMHB4IHNvbGlkIHRyYW5zcGFyZW50O3dpZHRoOi13ZWJraXQtZml0LWNvbnRlbnQ7d2lkdGg6LW1vei1maXQtY29udGVudDt3aWR0aDpmaXQtY29udGVudH0KLkNvZGVNaXJyb3Itd3JhcCAuQ29kZU1pcnJvci1jb2RlIHByZXtib3JkZXItcmlnaHQ6bm9uZTt3aWR0aDphdXRvfQouQ29kZU1pcnJvci1saW5lYmFja2dyb3VuZHtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7cmlnaHQ6MDt0b3A6MDtib3R0b206MDt6LWluZGV4OjB9Ci5Db2RlTWlycm9yLWxpbmV3aWRnZXR7cG9zaXRpb246cmVsYXRpdmU7ei1pbmRleDoyO292ZXJmbG93OmF1dG99Ci5Db2RlTWlycm9yLXdyYXAgLkNvZGVNaXJyb3Itc2Nyb2xse292ZXJmbG93LXg6aGlkZGVufQouQ29kZU1pcnJvci1tZWFzdXJle3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjEwMCU7aGVpZ2h0OjA7b3ZlcmZsb3c6aGlkZGVuO3Zpc2liaWxpdHk6aGlkZGVufQouQ29kZU1pcnJvci1tZWFzdXJlIHByZXtwb3NpdGlvbjpzdGF0aWN9Ci5Db2RlTWlycm9yIGRpdi5Db2RlTWlycm9yLWN1cnNvcntwb3NpdGlvbjphYnNvbHV0ZTt2aXNpYmlsaXR5OmhpZGRlbjtib3JkZXItcmlnaHQ6bm9uZTt3aWR0aDowfQouQ29kZU1pcnJvci1mb2N1c2VkIGRpdi5Db2RlTWlycm9yLWN1cnNvcnt2aXNpYmlsaXR5OnZpc2libGV9Ci5Db2RlTWlycm9yLXNlbGVjdGVke2JhY2tncm91bmQ6I2Q5ZDlkOX0KLkNvZGVNaXJyb3ItZm9jdXNlZCAuQ29kZU1pcnJvci1zZWxlY3RlZHtiYWNrZ3JvdW5kOiNkN2Q0ZjB9Ci5jbS1zZWFyY2hpbmd7YmFja2dyb3VuZDojZmZhO2JhY2tncm91bmQ6cmdiYSgyNTUsIDI1NSwgMCwgMC40KX0KQG1lZGlhIHByaW50ey5Db2RlTWlycm9yIGRpdi5Db2RlTWlycm9yLWN1cnNvcnt2aXNpYmlsaXR5OmhpZGRlbn19Ci5qY3JvcC1ob2xkZXJ7ZGlyZWN0aW9uOmx0cjt0ZXh0LWFsaWduOmxlZnR9Ci5qY3JvcC12bGluZSwgLmpjcm9wLWhsaW5le2JhY2tncm91bmQ6I2ZmZmZmZjtmb250LXNpemU6MDtwb3NpdGlvbjphYnNvbHV0ZX0KLmpjcm9wLXZsaW5le2hlaWdodDoxMDAlO3dpZHRoOjFweCFpbXBvcnRhbnR9Ci5qY3JvcC12bGluZS5yaWdodHtyaWdodDowfQouamNyb3AtaGxpbmV7aGVpZ2h0OjFweCFpbXBvcnRhbnQ7d2lkdGg6MTAwJX0KLmpjcm9wLWhsaW5lLmJvdHRvbXtib3R0b206MH0KLmpjcm9wLXRyYWNrZXJ7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50Oy13ZWJraXQtdG91Y2gtY2FsbG91dDpub25lOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfQouamNyb3AtaGFuZGxle2JhY2tncm91bmQtY29sb3I6IzM4NDE0Yztib3JkZXI6MXB4ICNlM2U4ZWIgc29saWQ7Zm9udC1zaXplOjFweDtoZWlnaHQ6N3B4O3dpZHRoOjdweH0KLmpjcm9wLWhhbmRsZS5vcmQtbntsZWZ0OjUwJTttYXJnaW4tbGVmdDotNHB4O21hcmdpbi10b3A6LTRweDt0b3A6MH0KLmpjcm9wLWhhbmRsZS5vcmQtc3tib3R0b206MDtsZWZ0OjUwJTttYXJnaW4tYm90dG9tOi00cHg7bWFyZ2luLWxlZnQ6LTRweH0KLmpjcm9wLWhhbmRsZS5vcmQtZXttYXJnaW4tcmlnaHQ6LTRweDttYXJnaW4tdG9wOi00cHg7cmlnaHQ6MDt0b3A6NTAlfQouamNyb3AtaGFuZGxlLm9yZC13e2xlZnQ6MDttYXJnaW4tbGVmdDotNHB4O21hcmdpbi10b3A6LTRweDt0b3A6NTAlfQouamNyb3AtaGFuZGxlLm9yZC1ud3tsZWZ0OjA7bWFyZ2luLWxlZnQ6LTRweDttYXJnaW4tdG9wOi00cHg7dG9wOjB9Ci5qY3JvcC1oYW5kbGUub3JkLW5le21hcmdpbi1yaWdodDotNHB4O21hcmdpbi10b3A6LTRweDtyaWdodDowO3RvcDowfQouamNyb3AtaGFuZGxlLm9yZC1zZXtib3R0b206MDttYXJnaW4tYm90dG9tOi00cHg7bWFyZ2luLXJpZ2h0Oi00cHg7cmlnaHQ6MH0KLmpjcm9wLWhhbmRsZS5vcmQtc3d7Ym90dG9tOjA7bGVmdDowO21hcmdpbi1ib3R0b206LTRweDttYXJnaW4tbGVmdDotNHB4fQouamNyb3AtZHJhZ2Jhci5vcmQtbiwgLmpjcm9wLWRyYWdiYXIub3JkLXN7aGVpZ2h0OjdweDt3aWR0aDoxMDAlfQouamNyb3AtZHJhZ2Jhci5vcmQtZSwgLmpjcm9wLWRyYWdiYXIub3JkLXd7aGVpZ2h0OjEwMCU7d2lkdGg6N3B4fQouamNyb3AtZHJhZ2Jhci5vcmQtbnttYXJnaW4tdG9wOi00cHh9Ci5qY3JvcC1kcmFnYmFyLm9yZC1ze2JvdHRvbTowO21hcmdpbi1ib3R0b206LTRweH0KLmpjcm9wLWRyYWdiYXIub3JkLWV7bWFyZ2luLXJpZ2h0Oi00cHg7cmlnaHQ6MH0KLmpjcm9wLWRyYWdiYXIub3JkLXd7bWFyZ2luLWxlZnQ6LTRweH0KLmpjcm9wLWxpZ2h0IC5qY3JvcC12bGluZSwgLmpjcm9wLWxpZ2h0IC5qY3JvcC1obGluZXtiYWNrZ3JvdW5kOiNmZmZmZmY7ZmlsdGVyOmFscGhhKG9wYWNpdHk9NzApIWltcG9ydGFudDtvcGFjaXR5Oi43MCFpbXBvcnRhbnR9Ci5qY3JvcC1saWdodCAuamNyb3AtaGFuZGxley1tb3otYm9yZGVyLXJhZGl1czozcHg7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDtiYWNrZ3JvdW5kLWNvbG9yOiMwMDA7Ym9yZGVyLWNvbG9yOiNGRkY7Ym9yZGVyLXJhZGl1czozcHh9Ci5qY3JvcC1kYXJrIC5qY3JvcC12bGluZSwgLmpjcm9wLWRhcmsgLmpjcm9wLWhsaW5le2JhY2tncm91bmQ6IzAwMDtmaWx0ZXI6YWxwaGEob3BhY2l0eT03MCkhaW1wb3J0YW50O29wYWNpdHk6LjchaW1wb3J0YW50fQouamNyb3AtZGFyayAuamNyb3AtaGFuZGxley1tb3otYm9yZGVyLXJhZGl1czozcHg7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDtiYWNrZ3JvdW5kLWNvbG9yOiNGRkY7Ym9yZGVyLWNvbG9yOiMwMDA7Ym9yZGVyLXJhZGl1czozcHh9Ci5zb2xpZC1saW5lIC5qY3JvcC12bGluZSwgLnNvbGlkLWxpbmUgLmpjcm9wLWhsaW5le2JhY2tncm91bmQ6I0ZGRn0KLmpjcm9wLWhvbGRlciBpbWcsIGltZy5qY3JvcC1wcmV2aWV3e21heC13aWR0aDpub25lfQouamNyb3AtaG9sZGVyIGRpdntwb3NpdGlvbjpzdGF0aWN9Ci5qc29uZGlmZnBhdGNoLWRlbHRhe2ZvbnQtZmFtaWx5OkNvdXNpbmUsIHVpLW1vbm9zcGFjZSwgTW9uYWNvLCBNZXJsbywgbW9ub3NwYWNlO2ZvbnQtc2l6ZToxZW07bWFyZ2luOjA7cGFkZGluZzowIDAgMCAxMnB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrfQouanNvbmRpZmZwYXRjaC1kZWx0YSBwcmV7Zm9udC1mYW1pbHk6Q291c2luZSwgdWktbW9ub3NwYWNlLCBNb25hY28sIE1lcmxvLCBtb25vc3BhY2U7Zm9udC1zaXplOjEycHg7bWFyZ2luOjA7cGFkZGluZzowO2Rpc3BsYXk6aW5saW5lLWJsb2NrfQp1bC5qc29uZGlmZnBhdGNoLWRlbHRhe2xpc3Qtc3R5bGUtdHlwZTpub25lO3BhZGRpbmc6MCAwIDAgMjBweDttYXJnaW46MH0KLmpzb25kaWZmcGF0Y2gtZGVsdGEgdWx7bGlzdC1zdHlsZS10eXBlOm5vbmU7cGFkZGluZzowIDAgMCAyMHB4O21hcmdpbjowfQouanNvbmRpZmZwYXRjaC1hZGRlZCAuanNvbmRpZmZwYXRjaC1wcm9wZXJ0eS1uYW1lLCAuanNvbmRpZmZwYXRjaC1hZGRlZCAuanNvbmRpZmZwYXRjaC12YWx1ZSBwcmUsIC5qc29uZGlmZnBhdGNoLW1vZGlmaWVkIC5qc29uZGlmZnBhdGNoLXJpZ2h0LXZhbHVlIHByZSwgLmpzb25kaWZmcGF0Y2gtdGV4dGRpZmYtYWRkZWR7YmFja2dyb3VuZDojZTBmNWM2O292ZXJmbG93LXdyYXA6YW55d2hlcmV9Ci5qc29uZGlmZnBhdGNoLWRlbGV0ZWQgLmpzb25kaWZmcGF0Y2gtcHJvcGVydHktbmFtZSwgLmpzb25kaWZmcGF0Y2gtZGVsZXRlZCBwcmUsIC5qc29uZGlmZnBhdGNoLW1vZGlmaWVkIC5qc29uZGlmZnBhdGNoLWxlZnQtdmFsdWUgcHJlLCAuanNvbmRpZmZwYXRjaC10ZXh0ZGlmZi1kZWxldGVke2JhY2tncm91bmQ6I2ZlZDNkMzt0ZXh0LWRlY29yYXRpb246bGluZS10aHJvdWdoO292ZXJmbG93LXdyYXA6YW55d2hlcmV9Ci5qc29uZGlmZnBhdGNoLXVuY2hhbmdlZCwgLmpzb25kaWZmcGF0Y2gtbW92ZWRlc3RpbmF0aW9ue2NvbG9yOiM2Yjc2ODU7b3ZlcmZsb3ctd3JhcDphbnl3aGVyZX0KLmpzb25kaWZmcGF0Y2gtdW5jaGFuZ2VkLCAuanNvbmRpZmZwYXRjaC1tb3ZlZGVzdGluYXRpb24gPiAuanNvbmRpZmZwYXRjaC12YWx1ZXt0cmFuc2l0aW9uOmFsbCAwLjNzOy13ZWJraXQtdHJhbnNpdGlvbjphbGwgMC4zcztvdmVyZmxvdy15OmhpZGRlbn0KLmpzb25kaWZmcGF0Y2gtdW5jaGFuZ2VkLXNob3dpbmcgLmpzb25kaWZmcGF0Y2gtdW5jaGFuZ2VkLCAuanNvbmRpZmZwYXRjaC11bmNoYW5nZWQtc2hvd2luZyAuanNvbmRpZmZwYXRjaC1tb3ZlZGVzdGluYXRpb24gPiAuanNvbmRpZmZwYXRjaC12YWx1ZXttYXgtaGVpZ2h0OjEwMHB4fQouanNvbmRpZmZwYXRjaC11bmNoYW5nZWQtaGlkZGVuIC5qc29uZGlmZnBhdGNoLXVuY2hhbmdlZCwgLmpzb25kaWZmcGF0Y2gtdW5jaGFuZ2VkLWhpZGRlbiAuanNvbmRpZmZwYXRjaC1tb3ZlZGVzdGluYXRpb24gPiAuanNvbmRpZmZwYXRjaC12YWx1ZXttYXgtaGVpZ2h0OjB9Ci5qc29uZGlmZnBhdGNoLXVuY2hhbmdlZC1oaWRpbmcgLmpzb25kaWZmcGF0Y2gtbW92ZWRlc3RpbmF0aW9uID4gLmpzb25kaWZmcGF0Y2gtdmFsdWUsIC5qc29uZGlmZnBhdGNoLXVuY2hhbmdlZC1oaWRkZW4gLmpzb25kaWZmcGF0Y2gtbW92ZWRlc3RpbmF0aW9uID4gLmpzb25kaWZmcGF0Y2gtdmFsdWV7ZGlzcGxheTpibG9ja30KLmpzb25kaWZmcGF0Y2gtdW5jaGFuZ2VkLXZpc2libGUgLmpzb25kaWZmcGF0Y2gtdW5jaGFuZ2VkLCAuanNvbmRpZmZwYXRjaC11bmNoYW5nZWQtdmlzaWJsZSAuanNvbmRpZmZwYXRjaC1tb3ZlZGVzdGluYXRpb24gPiAuanNvbmRpZmZwYXRjaC12YWx1ZXttYXgtaGVpZ2h0OjEwMHB4fQouanNvbmRpZmZwYXRjaC11bmNoYW5nZWQtaGlkaW5nIC5qc29uZGlmZnBhdGNoLXVuY2hhbmdlZCwgLmpzb25kaWZmcGF0Y2gtdW5jaGFuZ2VkLWhpZGluZyAuanNvbmRpZmZwYXRjaC1tb3ZlZGVzdGluYXRpb24gPiAuanNvbmRpZmZwYXRjaC12YWx1ZXttYXgtaGVpZ2h0OjB9Ci5qc29uZGlmZnBhdGNoLXVuY2hhbmdlZC1zaG93aW5nIC5qc29uZGlmZnBhdGNoLWFycm93LCAuanNvbmRpZmZwYXRjaC11bmNoYW5nZWQtaGlkaW5nIC5qc29uZGlmZnBhdGNoLWFycm93e2Rpc3BsYXk6bm9uZX0KLmpzb25kaWZmcGF0Y2gtdmFsdWV7ZGlzcGxheTppbmxpbmUtYmxvY2t9Ci5qc29uZGlmZnBhdGNoLXByb3BlcnR5LW5hbWV7ZGlzcGxheTppbmxpbmUtYmxvY2s7cGFkZGluZy1yaWdodDo1cHg7dmVydGljYWwtYWxpZ246dG9wfQouanNvbmRpZmZwYXRjaC1wcm9wZXJ0eS1uYW1lOmFmdGVye2NvbnRlbnQ6JzonfQouanNvbmRpZmZwYXRjaC1jaGlsZC1ub2RlLXR5cGUtYXJyYXkgPiAuanNvbmRpZmZwYXRjaC1wcm9wZXJ0eS1uYW1lOmFmdGVye2NvbnRlbnQ6JzpbJ30KLmpzb25kaWZmcGF0Y2gtY2hpbGQtbm9kZS10eXBlLWFycmF5OmFmdGVye2NvbnRlbnQ6J10sJ30KZGl2Lmpzb25kaWZmcGF0Y2gtY2hpbGQtbm9kZS10eXBlLWFycmF5OmJlZm9yZXtjb250ZW50OidbJ30KZGl2Lmpzb25kaWZmcGF0Y2gtY2hpbGQtbm9kZS10eXBlLWFycmF5OmFmdGVye2NvbnRlbnQ6J10nfQouanNvbmRpZmZwYXRjaC1jaGlsZC1ub2RlLXR5cGUtb2JqZWN0ID4gLmpzb25kaWZmcGF0Y2gtcHJvcGVydHktbmFtZTphZnRlcntjb250ZW50Oic6eyd9Ci5qc29uZGlmZnBhdGNoLWNoaWxkLW5vZGUtdHlwZS1vYmplY3Q6YWZ0ZXJ7Y29udGVudDonfSwnfQpkaXYuanNvbmRpZmZwYXRjaC1jaGlsZC1ub2RlLXR5cGUtb2JqZWN0OmJlZm9yZXtjb250ZW50Oid7J30KZGl2Lmpzb25kaWZmcGF0Y2gtY2hpbGQtbm9kZS10eXBlLW9iamVjdDphZnRlcntjb250ZW50Oid9J30KLmpzb25kaWZmcGF0Y2gtdmFsdWUgcHJlOmFmdGVye2NvbnRlbnQ6JywnfQpsaTpsYXN0LWNoaWxkID4gLmpzb25kaWZmcGF0Y2gtdmFsdWUgcHJlOmFmdGVyLCAuanNvbmRpZmZwYXRjaC1tb2RpZmllZCA+IC5qc29uZGlmZnBhdGNoLWxlZnQtdmFsdWUgcHJlOmFmdGVye2NvbnRlbnQ6Jyd9Ci5qc29uZGlmZnBhdGNoLW1vZGlmaWVkIC5qc29uZGlmZnBhdGNoLXZhbHVle2Rpc3BsYXk6aW5saW5lLWJsb2NrfQouanNvbmRpZmZwYXRjaC1tb2RpZmllZCAuanNvbmRpZmZwYXRjaC1yaWdodC12YWx1ZXttYXJnaW4tbGVmdDo1cHh9Ci5qc29uZGlmZnBhdGNoLW1vdmVkIC5qc29uZGlmZnBhdGNoLXZhbHVle2Rpc3BsYXk6bm9uZX0KLmpzb25kaWZmcGF0Y2gtbW92ZWQgLmpzb25kaWZmcGF0Y2gtbW92ZWQtZGVzdGluYXRpb257ZGlzcGxheTppbmxpbmUtYmxvY2s7YmFja2dyb3VuZDojZmZlZjkxO2NvbG9yOiM0ZDVhNmF9Ci5qc29uZGlmZnBhdGNoLW1vdmVkIC5qc29uZGlmZnBhdGNoLW1vdmVkLWRlc3RpbmF0aW9uOmJlZm9yZXtjb250ZW50OicgPT4gJ30KdWwuanNvbmRpZmZwYXRjaC10ZXh0ZGlmZntwYWRkaW5nOjB9Ci5qc29uZGlmZnBhdGNoLXRleHRkaWZmLWxvY2F0aW9ue2NvbG9yOiM4ODkyOWY7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWluLXdpZHRoOjYwcHh9Ci5qc29uZGlmZnBhdGNoLXRleHRkaWZmLWxpbmV7ZGlzcGxheTppbmxpbmUtYmxvY2t9Ci5qc29uZGlmZnBhdGNoLXRleHRkaWZmLWxpbmUtbnVtYmVyOmFmdGVye2NvbnRlbnQ6JywnfQouanNvbmRpZmZwYXRjaC1lcnJvcntiYWNrZ3JvdW5kOiNkNjJjNDk7Y29sb3I6d2hpdGU7Zm9udC13ZWlnaHQ6Ym9sZH0KQGZvbnQtZmFjZXtmb250LWZhbWlseToiZm91bmRhdGlvbi1pY29ucyI7c3JjOnVybCgiZm91bmRhdGlvbi1pY29ucy53b2ZmIikgZm9ybWF0KCJ3b2ZmIiksIHVybCgiZm91bmRhdGlvbi1pY29ucy50dGYiKSBmb3JtYXQoInRydWV0eXBlIik7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3R5bGU6bm9ybWFsfQouZmktYWRkcmVzcy1ib29rOmJlZm9yZSwgLmZpLWFsZXJ0OmJlZm9yZSwgLmZpLWFsaWduLWNlbnRlcjpiZWZvcmUsIC5maS1hbGlnbi1qdXN0aWZ5OmJlZm9yZSwgLmZpLWFsaWduLWxlZnQ6YmVmb3JlLCAuZmktYWxpZ24tcmlnaHQ6YmVmb3JlLCAuZmktYW5jaG9yOmJlZm9yZSwgLmZpLWFubm90YXRlOmJlZm9yZSwgLmZpLWFyY2hpdmU6YmVmb3JlLCAuZmktYXJyb3ctZG93bjpiZWZvcmUsIC5maS1hcnJvdy1sZWZ0OmJlZm9yZSwgLmZpLWFycm93LXJpZ2h0OmJlZm9yZSwgLmZpLWFycm93LXVwOmJlZm9yZSwgLmZpLWFycm93cy1jb21wcmVzczpiZWZvcmUsIC5maS1hcnJvd3MtZXhwYW5kOmJlZm9yZSwgLmZpLWFycm93cy1pbjpiZWZvcmUsIC5maS1hcnJvd3Mtb3V0OmJlZm9yZSwgLmZpLWFzbDpiZWZvcmUsIC5maS1hc3RlcmlzazpiZWZvcmUsIC5maS1hdC1zaWduOmJlZm9yZSwgLmZpLWJhY2tncm91bmQtY29sb3I6YmVmb3JlLCAuZmktYmF0dGVyeS1lbXB0eTpiZWZvcmUsIC5maS1iYXR0ZXJ5LWZ1bGw6YmVmb3JlLCAuZmktYmF0dGVyeS1oYWxmOmJlZm9yZSwgLmZpLWJpdGNvaW4tY2lyY2xlOmJlZm9yZSwgLmZpLWJpdGNvaW46YmVmb3JlLCAuZmktYmxpbmQ6YmVmb3JlLCAuZmktYmx1ZXRvb3RoOmJlZm9yZSwgLmZpLWJvbGQ6YmVmb3JlLCAuZmktYm9vay1ib29rbWFyazpiZWZvcmUsIC5maS1ib29rOmJlZm9yZSwgLmZpLWJvb2ttYXJrOmJlZm9yZSwgLmZpLWJyYWlsbGU6YmVmb3JlLCAuZmktYnVyc3QtbmV3OmJlZm9yZSwgLmZpLWJ1cnN0LXNhbGU6YmVmb3JlLCAuZmktYnVyc3Q6YmVmb3JlLCAuZmktY2FsZW5kYXI6YmVmb3JlLCAuZmktY2FtZXJhOmJlZm9yZSwgLmZpLWNoZWNrOmJlZm9yZSwgLmZpLWNoZWNrYm94OmJlZm9yZSwgLmZpLWNsaXBib2FyZC1ub3RlczpiZWZvcmUsIC5maS1jbGlwYm9hcmQtcGVuY2lsOmJlZm9yZSwgLmZpLWNsaXBib2FyZDpiZWZvcmUsIC5maS1jbG9jazpiZWZvcmUsIC5maS1jbG9zZWQtY2FwdGlvbjpiZWZvcmUsIC5maS1jbG91ZDpiZWZvcmUsIC5maS1jb21tZW50LW1pbnVzOmJlZm9yZSwgLmZpLWNvbW1lbnQtcXVvdGVzOmJlZm9yZSwgLmZpLWNvbW1lbnQtdmlkZW86YmVmb3JlLCAuZmktY29tbWVudDpiZWZvcmUsIC5maS1jb21tZW50czpiZWZvcmUsIC5maS1jb21wYXNzOmJlZm9yZSwgLmZpLWNvbnRyYXN0OmJlZm9yZSwgLmZpLWNyZWRpdC1jYXJkOmJlZm9yZSwgLmZpLWNyb3A6YmVmb3JlLCAuZmktY3Jvd246YmVmb3JlLCAuZmktY3NzMzpiZWZvcmUsIC5maS1kYXRhYmFzZTpiZWZvcmUsIC5maS1kaWUtZml2ZTpiZWZvcmUsIC5maS1kaWUtZm91cjpiZWZvcmUsIC5maS1kaWUtb25lOmJlZm9yZSwgLmZpLWRpZS1zaXg6YmVmb3JlLCAuZmktZGllLXRocmVlOmJlZm9yZSwgLmZpLWRpZS10d286YmVmb3JlLCAuZmktZGlzbGlrZTpiZWZvcmUsIC5maS1kb2xsYXItYmlsbDpiZWZvcmUsIC5maS1kb2xsYXI6YmVmb3JlLCAuZmktZG93bmxvYWQ6YmVmb3JlLCAuZmktZWplY3Q6YmVmb3JlLCAuZmktZWxldmF0b3I6YmVmb3JlLCAuZmktZXVybzpiZWZvcmUsIC5maS1leWU6YmVmb3JlLCAuZmktZmFzdC1mb3J3YXJkOmJlZm9yZSwgLmZpLWZlbWFsZS1zeW1ib2w6YmVmb3JlLCAuZmktZmVtYWxlOmJlZm9yZSwgLmZpLWZpbHRlcjpiZWZvcmUsIC5maS1maXJzdC1haWQ6YmVmb3JlLCAuZmktZmxhZzpiZWZvcmUsIC5maS1mb2xkZXItYWRkOmJlZm9yZSwgLmZpLWZvbGRlci1sb2NrOmJlZm9yZSwgLmZpLWZvbGRlcjpiZWZvcmUsIC5maS1mb290OmJlZm9yZSwgLmZpLWZvdW5kYXRpb246YmVmb3JlLCAuZmktZ3JhcGgtYmFyOmJlZm9yZSwgLmZpLWdyYXBoLWhvcml6b250YWw6YmVmb3JlLCAuZmktZ3JhcGgtcGllOmJlZm9yZSwgLmZpLWdyYXBoLXRyZW5kOmJlZm9yZSwgLmZpLWd1aWRlLWRvZzpiZWZvcmUsIC5maS1oZWFyaW5nLWFpZDpiZWZvcmUsIC5maS1oZWFydDpiZWZvcmUsIC5maS1ob21lOmJlZm9yZSwgLmZpLWh0bWw1OmJlZm9yZSwgLmZpLWluZGVudC1sZXNzOmJlZm9yZSwgLmZpLWluZGVudC1tb3JlOmJlZm9yZSwgLmZpLWluZm86YmVmb3JlLCAuZmktaXRhbGljOmJlZm9yZSwgLmZpLWtleTpiZWZvcmUsIC5maS1sYXB0b3A6YmVmb3JlLCAuZmktbGF5b3V0OmJlZm9yZSwgLmZpLWxpZ2h0YnVsYjpiZWZvcmUsIC5maS1saWtlOmJlZm9yZSwgLmZpLWxpbms6YmVmb3JlLCAuZmktbGlzdC1idWxsZXQ6YmVmb3JlLCAuZmktbGlzdC1udW1iZXI6YmVmb3JlLCAuZmktbGlzdC10aHVtYm5haWxzOmJlZm9yZSwgLmZpLWxpc3Q6YmVmb3JlLCAuZmktbG9jazpiZWZvcmUsIC5maS1sb29wOmJlZm9yZSwgLmZpLW1hZ25pZnlpbmctZ2xhc3M6YmVmb3JlLCAuZmktbWFpbDpiZWZvcmUsIC5maS1tYWxlLWZlbWFsZTpiZWZvcmUsIC5maS1tYWxlLXN5bWJvbDpiZWZvcmUsIC5maS1tYWxlOmJlZm9yZSwgLmZpLW1hcDpiZWZvcmUsIC5maS1tYXJrZXI6YmVmb3JlLCAuZmktbWVnYXBob25lOmJlZm9yZSwgLmZpLW1pY3JvcGhvbmU6YmVmb3JlLCAuZmktbWludXMtY2lyY2xlOmJlZm9yZSwgLmZpLW1pbnVzOmJlZm9yZSwgLmZpLW1vYmlsZS1zaWduYWw6YmVmb3JlLCAuZmktbW9iaWxlOmJlZm9yZSwgLmZpLW1vbml0b3I6YmVmb3JlLCAuZmktbW91bnRhaW5zOmJlZm9yZSwgLmZpLW11c2ljOmJlZm9yZSwgLmZpLW5leHQ6YmVmb3JlLCAuZmktbm8tZG9nczpiZWZvcmUsIC5maS1uby1zbW9raW5nOmJlZm9yZSwgLmZpLXBhZ2UtYWRkOmJlZm9yZSwgLmZpLXBhZ2UtY29weTpiZWZvcmUsIC5maS1wYWdlLWNzdjpiZWZvcmUsIC5maS1wYWdlLWRlbGV0ZTpiZWZvcmUsIC5maS1wYWdlLWRvYzpiZWZvcmUsIC5maS1wYWdlLWVkaXQ6YmVmb3JlLCAuZmktcGFnZS1leHBvcnQtY3N2OmJlZm9yZSwgLmZpLXBhZ2UtZXhwb3J0LWRvYzpiZWZvcmUsIC5maS1wYWdlLWV4cG9ydC1wZGY6YmVmb3JlLCAuZmktcGFnZS1leHBvcnQ6YmVmb3JlLCAuZmktcGFnZS1maWxsZWQ6YmVmb3JlLCAuZmktcGFnZS1tdWx0aXBsZTpiZWZvcmUsIC5maS1wYWdlLXBkZjpiZWZvcmUsIC5maS1wYWdlLXJlbW92ZTpiZWZvcmUsIC5maS1wYWdlLXNlYXJjaDpiZWZvcmUsIC5maS1wYWdlOmJlZm9yZSwgLmZpLXBhaW50LWJ1Y2tldDpiZWZvcmUsIC5maS1wYXBlcmNsaXA6YmVmb3JlLCAuZmktcGF1c2U6YmVmb3JlLCAuZmktcGF3OmJlZm9yZSwgLmZpLXBheXBhbDpiZWZvcmUsIC5maS1wZW5jaWw6YmVmb3JlLCAuZmktcGhvdG86YmVmb3JlLCAuZmktcGxheS1jaXJjbGU6YmVmb3JlLCAuZmktcGxheS12aWRlbzpiZWZvcmUsIC5maS1wbGF5OmJlZm9yZSwgLmZpLXBsdXM6YmVmb3JlLCAuZmktcG91bmQ6YmVmb3JlLCAuZmktcG93ZXI6YmVmb3JlLCAuZmktcHJldmlvdXM6YmVmb3JlLCAuZmktcHJpY2UtdGFnOmJlZm9yZSwgLmZpLXByaWNldGFnLW11bHRpcGxlOmJlZm9yZSwgLmZpLXByaW50OmJlZm9yZSwgLmZpLXByb2hpYml0ZWQ6YmVmb3JlLCAuZmktcHJvamVjdGlvbi1zY3JlZW46YmVmb3JlLCAuZmktcHV6emxlOmJlZm9yZSwgLmZpLXF1b3RlOmJlZm9yZSwgLmZpLXJlY29yZDpiZWZvcmUsIC5maS1yZWZyZXNoOmJlZm9yZSwgLmZpLXJlc3VsdHMtZGVtb2dyYXBoaWNzOmJlZm9yZSwgLmZpLXJlc3VsdHM6YmVmb3JlLCAuZmktcmV3aW5kLXRlbjpiZWZvcmUsIC5maS1yZXdpbmQ6YmVmb3JlLCAuZmktcnNzOmJlZm9yZSwgLmZpLXNhZmV0eS1jb25lOmJlZm9yZSwgLmZpLXNhdmU6YmVmb3JlLCAuZmktc2hhcmU6YmVmb3JlLCAuZmktc2hlcmlmZi1iYWRnZTpiZWZvcmUsIC5maS1zaGllbGQ6YmVmb3JlLCAuZmktc2hvcHBpbmctYmFnOmJlZm9yZSwgLmZpLXNob3BwaW5nLWNhcnQ6YmVmb3JlLCAuZmktc2h1ZmZsZTpiZWZvcmUsIC5maS1zb2NpYWwtYW5kcm9pZDpiZWZvcmUsIC5maS1zb2NpYWwtYXBwbGU6YmVmb3JlLCAuZmktc29jaWFsLWZhY2Vib29rOmJlZm9yZSwgLmZpLXNvY2lhbC1naXRodWI6YmVmb3JlLCAuZmktc29jaWFsLXNreXBlOmJlZm9yZSwgLmZpLXNvY2lhbC1zdGFjay1vdmVyZmxvdzpiZWZvcmUsIC5maS1zb2NpYWwtdHdpdHRlcjpiZWZvcmUsIC5maS1zb2NpYWwtd2luZG93czpiZWZvcmUsIC5maS1zb2NpYWwteW91dHViZTpiZWZvcmUsIC5maS1zb3VuZDpiZWZvcmUsIC5maS1zdGFyOmJlZm9yZSwgLmZpLXN0b3A6YmVmb3JlLCAuZmktc3RyaWtldGhyb3VnaDpiZWZvcmUsIC5maS1zdWJzY3JpcHQ6YmVmb3JlLCAuZmktc3VwZXJzY3JpcHQ6YmVmb3JlLCAuZmktdGFibGV0LWxhbmRzY2FwZTpiZWZvcmUsIC5maS10YWJsZXQtcG9ydHJhaXQ6YmVmb3JlLCAuZmktdGFyZ2V0LXR3bzpiZWZvcmUsIC5maS10YXJnZXQ6YmVmb3JlLCAuZmktdGVsZXBob25lLWFjY2Vzc2libGU6YmVmb3JlLCAuZmktdGVsZXBob25lOmJlZm9yZSwgLmZpLXRleHQtY29sb3I6YmVmb3JlLCAuZmktdGh1bWJuYWlsczpiZWZvcmUsIC5maS10aWNrZXQ6YmVmb3JlLCAuZmktdG9yc28tYnVzaW5lc3M6YmVmb3JlLCAuZmktdG9yc28tZmVtYWxlOmJlZm9yZSwgLmZpLXRvcnNvOmJlZm9yZSwgLmZpLXRvcnNvcy1hbGwtZmVtYWxlOmJlZm9yZSwgLmZpLXRvcnNvcy1hbGw6YmVmb3JlLCAuZmktdG9yc29zLWZlbWFsZS1tYWxlOmJlZm9yZSwgLmZpLXRvcnNvcy1tYWxlLWZlbWFsZTpiZWZvcmUsIC5maS10b3Jzb3M6YmVmb3JlLCAuZmktdHJhc2g6YmVmb3JlLCAuZmktdHJlZXM6YmVmb3JlLCAuZmktdHJvcGh5OmJlZm9yZSwgLmZpLXVuZGVybGluZTpiZWZvcmUsIC5maS11bml2ZXJzYWwtYWNjZXNzOmJlZm9yZSwgLmZpLXVubGluazpiZWZvcmUsIC5maS11bmxvY2s6YmVmb3JlLCAuZmktdXBsb2FkLWNsb3VkOmJlZm9yZSwgLmZpLXVwbG9hZDpiZWZvcmUsIC5maS11c2I6YmVmb3JlLCAuZmktdmlkZW86YmVmb3JlLCAuZmktdm9sdW1lLW5vbmU6YmVmb3JlLCAuZmktdm9sdW1lLXN0cmlrZTpiZWZvcmUsIC5maS12b2x1bWU6YmVmb3JlLCAuZmktd2ViOmJlZm9yZSwgLmZpLXdoZWVsY2hhaXI6YmVmb3JlLCAuZmktd2lkZ2V0OmJlZm9yZSwgLmZpLXdyZW5jaDpiZWZvcmUsIC5maS14LWNpcmNsZTpiZWZvcmUsIC5maS14OmJlZm9yZSwgLmZpLXllbjpiZWZvcmUsIC5maS16b29tLWluOmJlZm9yZSwgLmZpLXpvb20tb3V0OmJlZm9yZXtmb250LWZhbWlseToiZm91bmRhdGlvbi1pY29ucyI7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtdmFyaWFudDpub3JtYWw7dGV4dC10cmFuc2Zvcm06bm9uZTtsaW5lLWhlaWdodDoxOy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7ZGlzcGxheTppbmxpbmUtYmxvY2s7dGV4dC1kZWNvcmF0aW9uOmluaGVyaXR9Ci5maS1hZGRyZXNzLWJvb2s6YmVmb3Jle2NvbnRlbnQ6IlxmMTAwIn0KLmZpLWFsZXJ0OmJlZm9yZXtjb250ZW50OiJcZjEwMSJ9Ci5maS1hbGlnbi1jZW50ZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMTAyIn0KLmZpLWFsaWduLWp1c3RpZnk6YmVmb3Jle2NvbnRlbnQ6IlxmMTAzIn0KLmZpLWFsaWduLWxlZnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTA0In0KLmZpLWFsaWduLXJpZ2h0OmJlZm9yZXtjb250ZW50OiJcZjEwNSJ9Ci5maS1hbmNob3I6YmVmb3Jle2NvbnRlbnQ6IlxmMTA2In0KLmZpLWFubm90YXRlOmJlZm9yZXtjb250ZW50OiJcZjEwNyJ9Ci5maS1hcmNoaXZlOmJlZm9yZXtjb250ZW50OiJcZjEwOCJ9Ci5maS1hcnJvdy1kb3duOmJlZm9yZXtjb250ZW50OiJcZjEwOSJ9Ci5maS1hcnJvdy1sZWZ0OmJlZm9yZXtjb250ZW50OiJcZjEwYSJ9Ci5maS1hcnJvdy1yaWdodDpiZWZvcmV7Y29udGVudDoiXGYxMGIifQouZmktYXJyb3ctdXA6YmVmb3Jle2NvbnRlbnQ6IlxmMTBjIn0KLmZpLWFycm93cy1jb21wcmVzczpiZWZvcmV7Y29udGVudDoiXGYxMGQifQouZmktYXJyb3dzLWV4cGFuZDpiZWZvcmV7Y29udGVudDoiXGYxMGUifQouZmktYXJyb3dzLWluOmJlZm9yZXtjb250ZW50OiJcZjEwZiJ9Ci5maS1hcnJvd3Mtb3V0OmJlZm9yZXtjb250ZW50OiJcZjExMCJ9Ci5maS1hc2w6YmVmb3Jle2NvbnRlbnQ6IlxmMTExIn0KLmZpLWFzdGVyaXNrOmJlZm9yZXtjb250ZW50OiJcZjExMiJ9Ci5maS1hdC1zaWduOmJlZm9yZXtjb250ZW50OiJcZjExMyJ9Ci5maS1iYWNrZ3JvdW5kLWNvbG9yOmJlZm9yZXtjb250ZW50OiJcZjExNCJ9Ci5maS1iYXR0ZXJ5LWVtcHR5OmJlZm9yZXtjb250ZW50OiJcZjExNSJ9Ci5maS1iYXR0ZXJ5LWZ1bGw6YmVmb3Jle2NvbnRlbnQ6IlxmMTE2In0KLmZpLWJhdHRlcnktaGFsZjpiZWZvcmV7Y29udGVudDoiXGYxMTcifQouZmktYml0Y29pbi1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTE4In0KLmZpLWJpdGNvaW46YmVmb3Jle2NvbnRlbnQ6IlxmMTE5In0KLmZpLWJsaW5kOmJlZm9yZXtjb250ZW50OiJcZjExYSJ9Ci5maS1ibHVldG9vdGg6YmVmb3Jle2NvbnRlbnQ6IlxmMTFiIn0KLmZpLWJvbGQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTFjIn0KLmZpLWJvb2stYm9va21hcms6YmVmb3Jle2NvbnRlbnQ6IlxmMTFkIn0KLmZpLWJvb2s6YmVmb3Jle2NvbnRlbnQ6IlxmMTFlIn0KLmZpLWJvb2ttYXJrOmJlZm9yZXtjb250ZW50OiJcZjExZiJ9Ci5maS1icmFpbGxlOmJlZm9yZXtjb250ZW50OiJcZjEyMCJ9Ci5maS1idXJzdC1uZXc6YmVmb3Jle2NvbnRlbnQ6IlxmMTIxIn0KLmZpLWJ1cnN0LXNhbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTIyIn0KLmZpLWJ1cnN0OmJlZm9yZXtjb250ZW50OiJcZjEyMyJ9Ci5maS1jYWxlbmRhcjpiZWZvcmV7Y29udGVudDoiXGYxMjQifQouZmktY2FtZXJhOmJlZm9yZXtjb250ZW50OiJcZjEyNSJ9Ci5maS1jaGVjazpiZWZvcmV7Y29udGVudDoiXGYxMjYifQouZmktY2hlY2tib3g6YmVmb3Jle2NvbnRlbnQ6IlxmMTI3In0KLmZpLWNsaXBib2FyZC1ub3RlczpiZWZvcmV7Y29udGVudDoiXGYxMjgifQouZmktY2xpcGJvYXJkLXBlbmNpbDpiZWZvcmV7Y29udGVudDoiXGYxMjkifQouZmktY2xpcGJvYXJkOmJlZm9yZXtjb250ZW50OiJcZjEyYSJ9Ci5maS1jbG9jazpiZWZvcmV7Y29udGVudDoiXGYxMmIifQouZmktY2xvc2VkLWNhcHRpb246YmVmb3Jle2NvbnRlbnQ6IlxmMTJjIn0KLmZpLWNsb3VkOmJlZm9yZXtjb250ZW50OiJcZjEyZCJ9Ci5maS1jb21tZW50LW1pbnVzOmJlZm9yZXtjb250ZW50OiJcZjEyZSJ9Ci5maS1jb21tZW50LXF1b3RlczpiZWZvcmV7Y29udGVudDoiXGYxMmYifQouZmktY29tbWVudC12aWRlbzpiZWZvcmV7Y29udGVudDoiXGYxMzAifQouZmktY29tbWVudDpiZWZvcmV7Y29udGVudDoiXGYxMzEifQouZmktY29tbWVudHM6YmVmb3Jle2NvbnRlbnQ6IlxmMTMyIn0KLmZpLWNvbXBhc3M6YmVmb3Jle2NvbnRlbnQ6IlxmMTMzIn0KLmZpLWNvbnRyYXN0OmJlZm9yZXtjb250ZW50OiJcZjEzNCJ9Ci5maS1jcmVkaXQtY2FyZDpiZWZvcmV7Y29udGVudDoiXGYxMzUifQouZmktY3JvcDpiZWZvcmV7Y29udGVudDoiXGYxMzYifQouZmktY3Jvd246YmVmb3Jle2NvbnRlbnQ6IlxmMTM3In0KLmZpLWNzczM6YmVmb3Jle2NvbnRlbnQ6IlxmMTM4In0KLmZpLWRhdGFiYXNlOmJlZm9yZXtjb250ZW50OiJcZjEzOSJ9Ci5maS1kaWUtZml2ZTpiZWZvcmV7Y29udGVudDoiXGYxM2EifQouZmktZGllLWZvdXI6YmVmb3Jle2NvbnRlbnQ6IlxmMTNiIn0KLmZpLWRpZS1vbmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTNjIn0KLmZpLWRpZS1zaXg6YmVmb3Jle2NvbnRlbnQ6IlxmMTNkIn0KLmZpLWRpZS10aHJlZTpiZWZvcmV7Y29udGVudDoiXGYxM2UifQouZmktZGllLXR3bzpiZWZvcmV7Y29udGVudDoiXGYxM2YifQouZmktZGlzbGlrZTpiZWZvcmV7Y29udGVudDoiXGYxNDAifQouZmktZG9sbGFyLWJpbGw6YmVmb3Jle2NvbnRlbnQ6IlxmMTQxIn0KLmZpLWRvbGxhcjpiZWZvcmV7Y29udGVudDoiXGYxNDIifQouZmktZG93bmxvYWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTQzIn0KLmZpLWVqZWN0OmJlZm9yZXtjb250ZW50OiJcZjE0NCJ9Ci5maS1lbGV2YXRvcjpiZWZvcmV7Y29udGVudDoiXGYxNDUifQouZmktZXVybzpiZWZvcmV7Y29udGVudDoiXGYxNDYifQouZmktZXllOmJlZm9yZXtjb250ZW50OiJcZjE0NyJ9Ci5maS1mYXN0LWZvcndhcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTQ4In0KLmZpLWZlbWFsZS1zeW1ib2w6YmVmb3Jle2NvbnRlbnQ6IlxmMTQ5In0KLmZpLWZlbWFsZTpiZWZvcmV7Y29udGVudDoiXGYxNGEifQouZmktZmlsdGVyOmJlZm9yZXtjb250ZW50OiJcZjE0YiJ9Ci5maS1maXJzdC1haWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTRjIn0KLmZpLWZsYWc6YmVmb3Jle2NvbnRlbnQ6IlxmMTRkIn0KLmZpLWZvbGRlci1hZGQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTRlIn0KLmZpLWZvbGRlci1sb2NrOmJlZm9yZXtjb250ZW50OiJcZjE0ZiJ9Ci5maS1mb2xkZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMTUwIn0KLmZpLWZvb3Q6YmVmb3Jle2NvbnRlbnQ6IlxmMTUxIn0KLmZpLWZvdW5kYXRpb246YmVmb3Jle2NvbnRlbnQ6IlxmMTUyIn0KLmZpLWdyYXBoLWJhcjpiZWZvcmV7Y29udGVudDoiXGYxNTMifQouZmktZ3JhcGgtaG9yaXpvbnRhbDpiZWZvcmV7Y29udGVudDoiXGYxNTQifQouZmktZ3JhcGgtcGllOmJlZm9yZXtjb250ZW50OiJcZjE1NSJ9Ci5maS1ncmFwaC10cmVuZDpiZWZvcmV7Y29udGVudDoiXGYxNTYifQouZmktZ3VpZGUtZG9nOmJlZm9yZXtjb250ZW50OiJcZjE1NyJ9Ci5maS1oZWFyaW5nLWFpZDpiZWZvcmV7Y29udGVudDoiXGYxNTgifQouZmktaGVhcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTU5In0KLmZpLWhvbWU6YmVmb3Jle2NvbnRlbnQ6IlxmMTVhIn0KLmZpLWh0bWw1OmJlZm9yZXtjb250ZW50OiJcZjE1YiJ9Ci5maS1pbmRlbnQtbGVzczpiZWZvcmV7Y29udGVudDoiXGYxNWMifQouZmktaW5kZW50LW1vcmU6YmVmb3Jle2NvbnRlbnQ6IlxmMTVkIn0KLmZpLWluZm86YmVmb3Jle2NvbnRlbnQ6IlxmMTVlIn0KLmZpLWl0YWxpYzpiZWZvcmV7Y29udGVudDoiXGYxNWYifQouZmkta2V5OmJlZm9yZXtjb250ZW50OiJcZjE2MCJ9Ci5maS1sYXB0b3A6YmVmb3Jle2NvbnRlbnQ6IlxmMTYxIn0KLmZpLWxheW91dDpiZWZvcmV7Y29udGVudDoiXGYxNjIifQouZmktbGlnaHRidWxiOmJlZm9yZXtjb250ZW50OiJcZjE2MyJ9Ci5maS1saWtlOmJlZm9yZXtjb250ZW50OiJcZjE2NCJ9Ci5maS1saW5rOmJlZm9yZXtjb250ZW50OiJcZjE2NSJ9Ci5maS1saXN0LWJ1bGxldDpiZWZvcmV7Y29udGVudDoiXGYxNjYifQouZmktbGlzdC1udW1iZXI6YmVmb3Jle2NvbnRlbnQ6IlxmMTY3In0KLmZpLWxpc3QtdGh1bWJuYWlsczpiZWZvcmV7Y29udGVudDoiXGYxNjgifQouZmktbGlzdDpiZWZvcmV7Y29udGVudDoiXGYxNjkifQouZmktbG9jazpiZWZvcmV7Y29udGVudDoiXGYxNmEifQouZmktbG9vcDpiZWZvcmV7Y29udGVudDoiXGYxNmIifQouZmktbWFnbmlmeWluZy1nbGFzczpiZWZvcmV7Y29udGVudDoiXGYxNmMifQouZmktbWFpbDpiZWZvcmV7Y29udGVudDoiXGYxNmQifQouZmktbWFsZS1mZW1hbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTZlIn0KLmZpLW1hbGUtc3ltYm9sOmJlZm9yZXtjb250ZW50OiJcZjE2ZiJ9Ci5maS1tYWxlOmJlZm9yZXtjb250ZW50OiJcZjE3MCJ9Ci5maS1tYXA6YmVmb3Jle2NvbnRlbnQ6IlxmMTcxIn0KLmZpLW1hcmtlcjpiZWZvcmV7Y29udGVudDoiXGYxNzIifQouZmktbWVnYXBob25lOmJlZm9yZXtjb250ZW50OiJcZjE3MyJ9Ci5maS1taWNyb3Bob25lOmJlZm9yZXtjb250ZW50OiJcZjE3NCJ9Ci5maS1taW51cy1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTc1In0KLmZpLW1pbnVzOmJlZm9yZXtjb250ZW50OiJcZjE3NiJ9Ci5maS1tb2JpbGUtc2lnbmFsOmJlZm9yZXtjb250ZW50OiJcZjE3NyJ9Ci5maS1tb2JpbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMTc4In0KLmZpLW1vbml0b3I6YmVmb3Jle2NvbnRlbnQ6IlxmMTc5In0KLmZpLW1vdW50YWluczpiZWZvcmV7Y29udGVudDoiXGYxN2EifQouZmktbXVzaWM6YmVmb3Jle2NvbnRlbnQ6IlxmMTdiIn0KLmZpLW5leHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTdjIn0KLmZpLW5vLWRvZ3M6YmVmb3Jle2NvbnRlbnQ6IlxmMTdkIn0KLmZpLW5vLXNtb2tpbmc6YmVmb3Jle2NvbnRlbnQ6IlxmMTdlIn0KLmZpLXBhZ2UtYWRkOmJlZm9yZXtjb250ZW50OiJcZjE3ZiJ9Ci5maS1wYWdlLWNvcHk6YmVmb3Jle2NvbnRlbnQ6IlxmMTgwIn0KLmZpLXBhZ2UtY3N2OmJlZm9yZXtjb250ZW50OiJcZjE4MSJ9Ci5maS1wYWdlLWRlbGV0ZTpiZWZvcmV7Y29udGVudDoiXGYxODIifQouZmktcGFnZS1kb2M6YmVmb3Jle2NvbnRlbnQ6IlxmMTgzIn0KLmZpLXBhZ2UtZWRpdDpiZWZvcmV7Y29udGVudDoiXGYxODQifQouZmktcGFnZS1leHBvcnQtY3N2OmJlZm9yZXtjb250ZW50OiJcZjE4NSJ9Ci5maS1wYWdlLWV4cG9ydC1kb2M6YmVmb3Jle2NvbnRlbnQ6IlxmMTg2In0KLmZpLXBhZ2UtZXhwb3J0LXBkZjpiZWZvcmV7Y29udGVudDoiXGYxODcifQouZmktcGFnZS1leHBvcnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTg4In0KLmZpLXBhZ2UtZmlsbGVkOmJlZm9yZXtjb250ZW50OiJcZjE4OSJ9Ci5maS1wYWdlLW11bHRpcGxlOmJlZm9yZXtjb250ZW50OiJcZjE4YSJ9Ci5maS1wYWdlLXBkZjpiZWZvcmV7Y29udGVudDoiXGYxOGIifQouZmktcGFnZS1yZW1vdmU6YmVmb3Jle2NvbnRlbnQ6IlxmMThjIn0KLmZpLXBhZ2Utc2VhcmNoOmJlZm9yZXtjb250ZW50OiJcZjE4ZCJ9Ci5maS1wYWdlOmJlZm9yZXtjb250ZW50OiJcZjE4ZSJ9Ci5maS1wYWludC1idWNrZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMThmIn0KLmZpLXBhcGVyY2xpcDpiZWZvcmV7Y29udGVudDoiXGYxOTAifQouZmktcGF1c2U6YmVmb3Jle2NvbnRlbnQ6IlxmMTkxIn0KLmZpLXBhdzpiZWZvcmV7Y29udGVudDoiXGYxOTIifQouZmktcGF5cGFsOmJlZm9yZXtjb250ZW50OiJcZjE5MyJ9Ci5maS1wZW5jaWw6YmVmb3Jle2NvbnRlbnQ6IlxmMTk0In0KLmZpLXBob3RvOmJlZm9yZXtjb250ZW50OiJcZjE5NSJ9Ci5maS1wbGF5LWNpcmNsZTpiZWZvcmV7Y29udGVudDoiXGYxOTYifQouZmktcGxheS12aWRlbzpiZWZvcmV7Y29udGVudDoiXGYxOTcifQouZmktcGxheTpiZWZvcmV7Y29udGVudDoiXGYxOTgifQouZmktcGx1czpiZWZvcmV7Y29udGVudDoiXGYxOTkifQouZmktcG91bmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTlhIn0KLmZpLXBvd2VyOmJlZm9yZXtjb250ZW50OiJcZjE5YiJ9Ci5maS1wcmV2aW91czpiZWZvcmV7Y29udGVudDoiXGYxOWMifQouZmktcHJpY2UtdGFnOmJlZm9yZXtjb250ZW50OiJcZjE5ZCJ9Ci5maS1wcmljZXRhZy1tdWx0aXBsZTpiZWZvcmV7Y29udGVudDoiXGYxOWUifQouZmktcHJpbnQ6YmVmb3Jle2NvbnRlbnQ6IlxmMTlmIn0KLmZpLXByb2hpYml0ZWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWEwIn0KLmZpLXByb2plY3Rpb24tc2NyZWVuOmJlZm9yZXtjb250ZW50OiJcZjFhMSJ9Ci5maS1wdXp6bGU6YmVmb3Jle2NvbnRlbnQ6IlxmMWEyIn0KLmZpLXF1b3RlOmJlZm9yZXtjb250ZW50OiJcZjFhMyJ9Ci5maS1yZWNvcmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWE0In0KLmZpLXJlZnJlc2g6YmVmb3Jle2NvbnRlbnQ6IlxmMWE1In0KLmZpLXJlc3VsdHMtZGVtb2dyYXBoaWNzOmJlZm9yZXtjb250ZW50OiJcZjFhNiJ9Ci5maS1yZXN1bHRzOmJlZm9yZXtjb250ZW50OiJcZjFhNyJ9Ci5maS1yZXdpbmQtdGVuOmJlZm9yZXtjb250ZW50OiJcZjFhOCJ9Ci5maS1yZXdpbmQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWE5In0KLmZpLXJzczpiZWZvcmV7Y29udGVudDoiXGYxYWEifQouZmktc2FmZXR5LWNvbmU6YmVmb3Jle2NvbnRlbnQ6IlxmMWFiIn0KLmZpLXNhdmU6YmVmb3Jle2NvbnRlbnQ6IlxmMWFjIn0KLmZpLXNoYXJlOmJlZm9yZXtjb250ZW50OiJcZjFhZCJ9Ci5maS1zaGVyaWZmLWJhZGdlOmJlZm9yZXtjb250ZW50OiJcZjFhZSJ9Ci5maS1zaGllbGQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWFmIn0KLmZpLXNob3BwaW5nLWJhZzpiZWZvcmV7Y29udGVudDoiXGYxYjAifQouZmktc2hvcHBpbmctY2FydDpiZWZvcmV7Y29udGVudDoiXGYxYjEifQouZmktc2h1ZmZsZTpiZWZvcmV7Y29udGVudDoiXGYxYjIifQouZmktc29jaWFsLWFuZHJvaWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWI3In0KLmZpLXNvY2lhbC1hcHBsZTpiZWZvcmV7Y29udGVudDoiXGYxYjgifQouZmktc29jaWFsLWZhY2Vib29rOmJlZm9yZXtjb250ZW50OiJcZjFjNCJ9Ci5maS1zb2NpYWwtZ2l0aHViOmJlZm9yZXtjb250ZW50OiJcZjFjOSJ9Ci5maS1zb2NpYWwtcmRpbzpiZWZvcmV7Y29udGVudDoiXGYxZDcifQouZmktc29jaWFsLXJlZGRpdDpiZWZvcmV7Y29udGVudDoiXGYxZDgifQouZmktc29jaWFsLXNreXBlOmJlZm9yZXtjb250ZW50OiJcZjFkYSJ9Ci5maS1zb2NpYWwtc3RhY2stb3ZlcmZsb3c6YmVmb3Jle2NvbnRlbnQ6IlxmMWRmIn0KLmZpLXNvY2lhbC10d2l0dGVyOmJlZm9yZXtjb250ZW50OiJcZjFlNCJ9Ci5maS1zb2NpYWwtd2luZG93czpiZWZvcmV7Y29udGVudDoiXGYxZTYifQouZmktc29jaWFsLXlvdXR1YmU6YmVmb3Jle2NvbnRlbnQ6IlxmMWVhIn0KLmZpLXNvdW5kOmJlZm9yZXtjb250ZW50OiJcZjFlZCJ9Ci5maS1zdGFyOmJlZm9yZXtjb250ZW50OiJcZjFlZSJ9Ci5maS1zdG9wOmJlZm9yZXtjb250ZW50OiJcZjFlZiJ9Ci5maS1zdHJpa2V0aHJvdWdoOmJlZm9yZXtjb250ZW50OiJcZjFmMCJ9Ci5maS1zdWJzY3JpcHQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWYxIn0KLmZpLXN1cGVyc2NyaXB0OmJlZm9yZXtjb250ZW50OiJcZjFmMiJ9Ci5maS10YWJsZXQtbGFuZHNjYXBlOmJlZm9yZXtjb250ZW50OiJcZjFmMyJ9Ci5maS10YWJsZXQtcG9ydHJhaXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMWY0In0KLmZpLXRhcmdldC10d286YmVmb3Jle2NvbnRlbnQ6IlxmMWY1In0KLmZpLXRhcmdldDpiZWZvcmV7Y29udGVudDoiXGYxZjYifQouZmktdGVsZXBob25lLWFjY2Vzc2libGU6YmVmb3Jle2NvbnRlbnQ6IlxmMWY3In0KLmZpLXRlbGVwaG9uZTpiZWZvcmV7Y29udGVudDoiXGYxZjgifQouZmktdGV4dC1jb2xvcjpiZWZvcmV7Y29udGVudDoiXGYxZjkifQouZmktdGh1bWJuYWlsczpiZWZvcmV7Y29udGVudDoiXGYxZmEifQouZmktdGlja2V0OmJlZm9yZXtjb250ZW50OiJcZjFmYiJ9Ci5maS10b3Jzby1idXNpbmVzczpiZWZvcmV7Y29udGVudDoiXGYxZmMifQouZmktdG9yc28tZmVtYWxlOmJlZm9yZXtjb250ZW50OiJcZjFmZCJ9Ci5maS10b3JzbzpiZWZvcmV7Y29udGVudDoiXGYxZmUifQouZmktdG9yc29zLWFsbC1mZW1hbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMWZmIn0KLmZpLXRvcnNvcy1hbGw6YmVmb3Jle2NvbnRlbnQ6IlxmMjAwIn0KLmZpLXRvcnNvcy1mZW1hbGUtbWFsZTpiZWZvcmV7Y29udGVudDoiXGYyMDEifQouZmktdG9yc29zLW1hbGUtZmVtYWxlOmJlZm9yZXtjb250ZW50OiJcZjIwMiJ9Ci5maS10b3Jzb3M6YmVmb3Jle2NvbnRlbnQ6IlxmMjAzIn0KLmZpLXRyYXNoOmJlZm9yZXtjb250ZW50OiJcZjIwNCJ9Ci5maS10cmVlczpiZWZvcmV7Y29udGVudDoiXGYyMDUifQouZmktdHJvcGh5OmJlZm9yZXtjb250ZW50OiJcZjIwNiJ9Ci5maS11bmRlcmxpbmU6YmVmb3Jle2NvbnRlbnQ6IlxmMjA3In0KLmZpLXVuaXZlcnNhbC1hY2Nlc3M6YmVmb3Jle2NvbnRlbnQ6IlxmMjA4In0KLmZpLXVubGluazpiZWZvcmV7Y29udGVudDoiXGYyMDkifQouZmktdW5sb2NrOmJlZm9yZXtjb250ZW50OiJcZjIwYSJ9Ci5maS11cGxvYWQtY2xvdWQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjBiIn0KLmZpLXVwbG9hZDpiZWZvcmV7Y29udGVudDoiXGYyMGMifQouZmktdXNiOmJlZm9yZXtjb250ZW50OiJcZjIwZCJ9Ci5maS12aWRlbzpiZWZvcmV7Y29udGVudDoiXGYyMGUifQouZmktdm9sdW1lLW5vbmU6YmVmb3Jle2NvbnRlbnQ6IlxmMjBmIn0KLmZpLXZvbHVtZS1zdHJpa2U6YmVmb3Jle2NvbnRlbnQ6IlxmMjEwIn0KLmZpLXZvbHVtZTpiZWZvcmV7Y29udGVudDoiXGYyMTEifQouZmktd2ViOmJlZm9yZXtjb250ZW50OiJcZjIxMiJ9Ci5maS13aGVlbGNoYWlyOmJlZm9yZXtjb250ZW50OiJcZjIxMyJ9Ci5maS13aWRnZXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjE0In0KLmZpLXdyZW5jaDpiZWZvcmV7Y29udGVudDoiXGYyMTUifQouZmkteC1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6IlxmMjE2In0KLmZpLXg6YmVmb3Jle2NvbnRlbnQ6IlxmMjE3In0KLmZpLXllbjpiZWZvcmV7Y29udGVudDoiXGYyMTgifQouZmktem9vbS1pbjpiZWZvcmV7Y29udGVudDoiXGYyMTkifQouZmktem9vbS1vdXQ6YmVmb3Jle2NvbnRlbnQ6IlxmMjFhIn0KI2N3LW5vdGVze3BvaW50ZXItZXZlbnRzOm5vbmU7cG9zaXRpb246Zml4ZWQ7cmlnaHQ6MjBweDt0b3A6MjBweDt3aWR0aDoyOTBweDtwYWRkaW5nOjBweDt6LWluZGV4OjMwMDJ9CiNjdy1ub3RlcyA+IGRpdnttYXJnaW4tYm90dG9tOjE1cHg7Ym9yZGVyLXJhZGl1czozcHg7d2lkdGg6MjkwcHg7cGFkZGluZzoxNXB4O2JhY2tncm91bmQtY29sb3I6cmdiYSgzNSwgNzksIDE0MywgMC45KTtib3gtc2hhZG93OjAgMCAwIDFweCB3aGl0ZTtjb2xvcjp3aGl0ZTtmb250LXNpemU6MTJwdDtsaW5lLWhlaWdodDoxNXB0O3dvcmQtd3JhcDpicmVhay13b3JkO292ZXJmbG93OmhpZGRlbn0KI2N3LW5vdGVzID4gZGl2LmVycm9ye2JhY2tncm91bmQtY29sb3I6cmdiYSgyMzQsIDExNCwgMTM0LCAwLjkpfQojY3ctbm90ZXMgPiBkaXYud2FybmluZ3tiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LCAyMzMsIDEyNywgMC45KTtjb2xvcjpyZ2JhKDIwNCwgMTM0LCAxMywgMC45KX0KI2N3LW5vdGVzID4gZGl2Lm9re2JhY2tncm91bmQtY29sb3I6cmdiYSgyMjQsIDI0NSwgMTk4LCAwLjkpO2NvbG9yOiM2NTljMTN9Ci5teS1lcnJvciBpbnB1dDpub3QoW3R5cGU9cmFkaW9dKTpub3QoW3R5cGU9Y2hlY2tib3hdKSwgLm15LWVycm9yIHRleHRhcmVhLCAubXktZXJyb3IgYnV0dG9ue2JvcmRlcjoxcHggc29saWQgI2ZjYzFjNztjb2xvcjojZDYyYzQ5fQoubXktZXJyb3IgaW5wdXQ6bm90KFt0eXBlPXJhZGlvXSk6bm90KFt0eXBlPWNoZWNrYm94XSk6Zm9jdXMsIC5teS1lcnJvciB0ZXh0YXJlYTpmb2N1c3tib3JkZXI6MXB4IHNvbGlkICNlYTcyODZ9Ci5teS1lcnJvciAubGFiZWwsIC5teS1lcnJvciBsYWJlbCwgLm15LWVycm9ye2NvbG9yOiNlYTcyODYhaW1wb3J0YW50fQoubXktZXJyb3IgaW5wdXRbdHlwZT0icmFuZ2UiXTo6LXdlYmtpdC1zbGlkZXItdGh1bWJ7Ym9yZGVyOjFweCBzb2xpZCAjZmNjMWM3O2JhY2tncm91bmQtY29sb3I6I2ZlZDNkM30KLm15LWVycm9yIGlucHV0W3R5cGU9InJhbmdlIl06Zm9jdXMgOjotd2Via2l0LXNsaWRlci10aHVtYntib3JkZXI6MXB4IHNvbGlkICNlYTcyODY7YmFja2dyb3VuZC1jb2xvcjojZmVkM2QzfQoubXktZXJyb3IgLnNlbGVjdDItY29udGFpbmVyIC5zZWxlY3QyLWNob2ljZXtib3JkZXI6MXB4IHNvbGlkICNmY2MxYzchaW1wb3J0YW50fQoubXktZXJyb3IgLnNlbGVjdDItY29udGFpbmVyLnNlbGVjdDItY29udGFpbmVyLWFjdGl2ZSAuc2VsZWN0Mi1jaG9pY2V7Ym9yZGVyOjFweCBzb2xpZCAjZWE3Mjg2IWltcG9ydGFudH0KLm15LWVycm9yIC5zZWxlY3QyLWNvbnRhaW5lciAuc2VsZWN0Mi1jaG9pY2UgPiAuc2VsZWN0Mi1jaG9zZW57Y29sb3I6I2Q2MmM0OX0KLm15LWVycm9yIC5zZWxlY3QyLWNvbnRhaW5lciAuc2VsZWN0Mi1jaG9pY2Uuc2VsZWN0Mi1kZWZhdWx0ID4gLnNlbGVjdDItY2hvc2Vue2NvbG9yOiNiOWMwY2J9Ci5teS1lcnJvciAuc2VsZWN0Mi1kcm9wZG93bi1vcGVuIC5zZWxlY3QyLWNob2ljZSAuc2VsZWN0Mi1hcnJvdywgLm15LWVycm9yIC5zZWxlY3QyLWRyb3Bkb3duLW9wZW4uc2VsZWN0Mi1jb250YWluZXItYWN0aXZlIC5zZWxlY3QyLWNob2ljZSAuc2VsZWN0Mi1hcnJvd3tib3JkZXItbGVmdDpub25lIWltcG9ydGFudH0KLm15LWVycm9yIC5zZWxlY3QyLWNvbnRhaW5lci1tdWx0aSAuc2VsZWN0Mi1jaG9pY2Vze2JvcmRlcjoxcHggc29saWQgI2ZjYzFjNyFpbXBvcnRhbnR9Ci5teS1lcnJvciAuc2VsZWN0Mi1jb250YWluZXItbXVsdGkuc2VsZWN0Mi1jb250YWluZXItYWN0aXZlIC5zZWxlY3QyLWNob2ljZXN7Ym9yZGVyOjFweCBzb2xpZCAjZWE3Mjg2IWltcG9ydGFudH0KLm15LWVycm9yIC5zZWxlY3QyLWNvbnRhaW5lci1tdWx0aSAuc2VsZWN0Mi1jaG9pY2VzIC5zZWxlY3QyLXNlYXJjaC1jaG9pY2V7YmFja2dyb3VuZC1jb2xvcjojZmVkM2QzO2NvbG9yOiNkNjJjNDl9Ci5teS1lcnJvciAuc2VsZWN0Mi1kcm9wZG93bi1vcGVuIC5zZWxlY3QyLWNob2ljZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjUwLCAxNzEsIDE4NCwgMC4zNSl9Ci5teS1lcnJvciAubXktdGFncyAudGFne2NvbG9yOiNlYTcyODZ9Ci5teS1lcnJvciAubXktdGFncyAudGFnLmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOiNmZWQzZDM7Y29sb3I6I2Q2MmM0OX0KLm15LWVycm9yID4gZGl2Lm15LW1vZGFse2JvcmRlci1jb2xvcjpyZ2JhKDI1MCwgMTcxLCAxODQsIDAuMzUpO2JveC1zaGFkb3c6MCAwIDExcHggNnB4IHJnYmEoMTczLCAzNCwgNTcsIDAuOTIpLCAwIDAgNnB4IHJnYmEoMTczLCAzNCwgNTcsIDAuODUpfQoubXktZXJyb3IgPiBkaXYubXktbW9kYWwubm9zZS1sZWZ0OmJlZm9yZSwgLm15LWVycm9yID4gZGl2Lm15LW1vZGFsLm5vc2UtcmlnaHQ6YmVmb3JlLCAubXktZXJyb3IgPiBkaXYubXktbW9kYWwubm9zZS10b3A6YmVmb3JlLCAubXktZXJyb3IgPiBkaXYubXktbW9kYWwubm9zZS1ib3R0b206YmVmb3Jle2JvcmRlci1ib3R0b20tY29sb3I6cmdiYSgyNTAsIDE3MSwgMTg0LCAwLjM1KTtib3JkZXItbGVmdC1jb2xvcjpyZ2JhKDI1MCwgMTcxLCAxODQsIDAuMzUpfQoubXktZXJyb3IgLnVpLXNsaWRlcntib3JkZXI6MXB4IHNvbGlkICNmY2MxYzchaW1wb3J0YW50fQoubXktZXJyb3IgLnVpLXNsaWRlci1oYW5kbGV7Ym9yZGVyOjFweCBzb2xpZCAjZmNjMWM3O2JhY2tncm91bmQ6I2ZlZDNkM30KLm15LWVycm9yIC51aS1zbGlkZXItaGFuZGxlLnVpLXN0YXRlLWZvY3Vze2JvcmRlcjoxcHggc29saWQgI2VhNzI4Nn0KQGZvbnQtZmFjZXtmb250LWZhbWlseTonQ291c2luZSc7c3JjOnVybCgnY291c2luZS1yZWd1bGFyLnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKTtmb250LXdlaWdodDpub3JtYWw7Zm9udC1zdHlsZTpub3JtYWx9CiNjdy1ib2R5e21hcmdpbjowIGF1dG8gMCBhdXRvO2ZvbnQtc2l6ZToxNnB4O2xpbmUtaGVpZ2h0OjEuNGVtO3RleHQtcmVuZGVyaW5nOmdlb21ldHJpY1ByZWNpc2lvbjtmb250LXdlaWdodDozMDA7YmFja2dyb3VuZC1jb2xvcjp3aGl0ZX0KI2N3LWJvZHkgLmN3LWJ1c3l7aGVpZ2h0OjRweDtkaXNwbGF5OmlubGluZS1ibG9jazttaW4td2lkdGg6MzBweDtib3JkZXItcmFkaXVzOjEwcHg7b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQtaW1hZ2U6dXJsKC4uL2kvbG9hZGVyLWJhcjIuZ2lmKTtiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteH0KI2N3LWJvZHkgaW5wdXQsICNjdy1ib2R5IGJ1dHRvbiwgI2N3LWJvZHkgdGV4dGFyZWF7Zm9udC13ZWlnaHQ6aW5oZXJpdH0KI2N3LWJvZHkgLm15LWVycm9yLXRpcHtmb250LXNpemU6ODUlO2NvbG9yOnJnYmEoMjA0LDAsMzIsMC43KTtwYWRkaW5nOjBweCAwIDZweCAwcHg7bGluZS1oZWlnaHQ6MS4yZW19CiNjdy1ib2R5IC5teS1lcnJvciAudmFyaWFudHMgLnRhZy5hY3RpdmV7YmFja2dyb3VuZC1jb2xvcjojZmRkO2NvbG9yOnJnYmEoMjA0LDAsMzIsMC43KX0KI2N3LWJvZHkgLm15LXJvdyBpbnB1dCwgLm15LXJvdyB0ZXh0YXJlYSwgLm15LXJvdyBzZWxlY3QsIC5teS1yb3cgLmJ1dHRvbnttYXJnaW46MH0KI2N3LWJvZHkgLm15LXJvdyB0ZXh0YXJlYXt2ZXJ0aWNhbC1hbGlnbjp0b3B9CiNjdy1ib2R5IC5teS1yb3cgLm15LWxhYmVse2ZvbnQtc2l6ZTo5MCU7bGluZS1oZWlnaHQ6MS4xZW19CiNjdy1ib2R5IC5teS1yb3cgLm15LXNob3J0Y3V0e21hcmdpbjowIDAgMCAwLjI1ZW07dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTtjb2xvcjojNTQ4MWEwO2N1cnNvcjpwb2ludGVyO29wYWNpdHk6MC43O3RyYW5zaXRpb246b3BhY2l0eSAwLjNzOy13ZWJraXQtdHJhbnNpdGlvbjpvcGFjaXR5IDAuM3MsIGJvcmRlciAwLjNzOy1vcGVyYS10cmFuc2l0aW9uOm9wYWNpdHkgMC4zcywgYm9yZGVyIDAuM3M7LW1zLXRyYW5zaXRpb246b3BhY2l0eSAwLjNzLCBib3JkZXIgMC4zczstbW96LXRyYW5zaXRpb246b3BhY2l0eSAwLjNzLCBib3JkZXIgMC4zc30KI2N3LWJvZHkgLm15LXJvdyAubXktc2hvcnRjdXQ6aG92ZXJ7b3BhY2l0eToxfQojY3ctYm9keSAubXktcm93IGRpdi5teS1lcnJvci10aXB7cGFkZGluZzowLjNlbSAwIDAgMH0KI2N3LWJvZHkgLm15LXJvdyBzcGFuLm15LWVycm9yLXRpcHtwYWRkaW5nOjB9CiNjdy1ib2R5IGNvZGV7Zm9udC1mYW1pbHk6J0NvdXNpbmUnO2ZvbnQtc2l6ZTo5NSV9CiNjdy1ib2R5IC51aS1zZWFyY2h7Ym9yZGVyLXJhZGl1czo1MHB4IWltcG9ydGFudDtwYWRkaW5nLWxlZnQ6MjJweDtwYWRkaW5nLXJpZ2h0OjIycHg7cG9zaXRpb246cmVsYXRpdmV9CiNjdy1ib2R5IC51aS1zZWFyY2gtY2xlYXJ7bWFyZ2luOjFweCAwIC0xcHggLTIxcHg7cG9zaXRpb246cmVsYXRpdmU7b3BhY2l0eTowO2Rpc3BsYXk6bm9uZTstd2Via2l0LXRyYW5zaXRpb246b3BhY2l0eSAwLjNzO2N1cnNvcjpwb2ludGVyO3otaW5kZXg6NX0KI2N3LWJvZHkgLnVpLXNlYXJjaC5zbWFsbCArIC51aS1zZWFyY2gtY2xlYXIgIHttYXJnaW4tYm90dG9tOi0ycHh9CiNjdy1ib2R5IC51aS1zZWFyY2guYmcteWVsbG93ICsgLnVpLXNlYXJjaC1jbGVhcntvcGFjaXR5OjAuNTtkaXNwbGF5OmlubGluZS1ibG9ja30KI2N3LWJvZHkgLnVpLXNlYXJjaC5iZy15ZWxsb3cgKyAudWktc2VhcmNoLWNsZWFyOmhvdmVye29wYWNpdHk6MX0KI2N3LWJvZHkgLm15LXNlYXJjaCBpbnB1dC51aS1zZWFyY2h7YmFja2dyb3VuZC1jb2xvcjojRkZGMDg4IWltcG9ydGFudDtib3JkZXItY29sb3I6I2ZmY2Y2MyFpbXBvcnRhbnR9CiNjdy1ib2R5IC5teS1zZWFyY2ggLnVpLXNlYXJjaC1jbGVhcntvcGFjaXR5OjAuNSFpbXBvcnRhbnQ7ZGlzcGxheTppbmxpbmUtYmxvY2shaW1wb3J0YW50fQojY3ctYm9keSAuc2VsZWN0Mi1jb250YWluZXIgLnNlbGVjdDItY2hvaWNle2ZvbnQtc2l6ZTo5MCU7bGluZS1oZWlnaHQ6MS43ZW19CiNjdy1ub3Rlc3t0b3A6NTBweH0KYm9keT5zcGFuLnVpLWhlbHBlci1oaWRkZW4tYWNjZXNzaWJsZXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fQpidXR0b24ubWFya2ZvY3VzLCAgLmJ1dHRvbi5tYXJrZm9jdXN7cG9zaXRpb246cmVsYXRpdmV9CmJ1dHRvbi5tYXJrZm9jdXM6Zm9jdXM6YWZ0ZXIsIC5idXR0b24ubWFya2ZvY3VzOmZvY3VzOmFmdGVye2NvbnRlbnQ6IiAiO3Bvc2l0aW9uOmFic29sdXRlO3RvcDozcHg7cmlnaHQ6M3B4O3dpZHRoOjRweDtoZWlnaHQ6NHB4O2JvcmRlci1yYWRpdXM6M3B4O292ZXJmbG93OmhpZGRlbjtiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYhaW1wb3J0YW50O3otaW5kZXg6KzJ9Ci5hZG93bjpiZWZvcmUsIC5hcmlnaHQ6YmVmb3JlLCAuYWxlZnQ6YmVmb3JlLCAuYXVwOmJlZm9yZXtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOjAuMTRlbSAwLjE0ZW0gMCAwO2NvbnRlbnQ6IiI7ZGlzcGxheTppbmxpbmUtYmxvY2s7aGVpZ2h0OjAuM2VtO2xlZnQ6MC4zNWVtO3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDowLjA1ZW07dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXI7dHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpO3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO3dpZHRoOjAuM2VtO3RyYW5zaXRpb246b3BhY2l0eSAwLjNzO29wYWNpdHk6MC42O3doaXRlLXNwYWNlOm5vcm1hbH0KLmFkb3duOmhvdmVyOmJlZm9yZSwgLmFyaWdodDpob3ZlcjpiZWZvcmUsIC5hbGVmdDpob3ZlcjpiZWZvcmUsIC5hdXA6aG92ZXI6YmVmb3Jle29wYWNpdHk6MC45fQouYXJpZ2h0OmJlZm9yZXtsZWZ0OjAuMmVtO3RvcDotMC4wN2VtO3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfQouYWRvd246YmVmb3Jle3RvcDotMC4xNmVtO3RyYW5zZm9ybTpyb3RhdGUoMTM1ZGVnKX0KLmFsZWZ0OmJlZm9yZXt0b3A6LTAuMTJlbTtsZWZ0OjAuNDVlbTt0cmFuc2Zvcm06cm90YXRlKC0xMzVkZWcpfQpib2R5LnRoZW1lLWRhcmt7ZmlsdGVyOmJyaWdodG5lc3MoMC45NikgaW52ZXJ0KCkgY29udHJhc3QoMC45KSBicmlnaHRuZXNzKDEuMjUpIGh1ZS1yb3RhdGUoMTgyZGVnKSBicmlnaHRuZXNzKDAuOSkgc2F0dXJhdGUoMS4yKTtjb2xvcjojNWE2MTY5fQpib2R5LnRoZW1lLWRhcmsgI2N3LWJvZHl7YmFja2dyb3VuZC1jb2xvcjojZjhmOWZifQpib2R5LnRoZW1lLWRhcmsgI2J0bi1jbG9zZS1hY3RpdmUtdGFie2NvbG9yOnJnYmEoODQsOTgsMTIyLDAuMyl9CmJvZHkudGhlbWUtZGFyayAub3Jhbmdle2NvbG9yOiNjMTZmMDAhaW1wb3J0YW50fQpib2R5LnRoZW1lLWRhcmsgLnJlZCAgICB7Y29sb3I6I2U2Njk3ZSFpbXBvcnRhbnR9CmJvZHkudGhlbWUtZGFyayAueGdyYXkgCXtjb2xvcjojNjY3MjgwIWltcG9ydGFudH0KYm9keS50aGVtZS1kYXJrIC5ncmF5LTF7Y29sb3I6IzVhNjE2OSFpbXBvcnRhbnR9CmJvZHkudGhlbWUtZGFyayAudGVhbCAgIHtjb2xvcjojMDA5MTc4IWltcG9ydGFudH0KYm9keS50aGVtZS1kYXJrIGlucHV0W3R5cGU9cmFkaW9dLCAgYm9keS50aGVtZS1kYXJrIGlucHV0W3R5cGU9Y2hlY2tib3hdIHthY2NlbnQtY29sb3I6IzMxNzdmZn0KYm9keS50aGVtZS1kYXJrIGEsICBib2R5LnRoZW1lLWRhcmsgLnBzZXVkb2xpbmssICBib2R5LnRoZW1lLWRhcmsgLnBzZXVkb2J1dHRvbntjb2xvcjojNTk3YWFifQpib2R5LnRoZW1lLWRhcmsgYTpob3ZlciwgIGJvZHkudGhlbWUtZGFyayAucHNldWRvbGluazpob3ZlciwgIGJvZHkudGhlbWUtZGFyayAucHNldWRvYnV0dG9uOmhvdmVye2NvbG9yOiMyZTdkZmZ9CmJvZHkudGhlbWUtZGFyayAuYnV0dG9uIAkJCXtjb2xvcjojNGQ1YTZhfQpib2R5LnRoZW1lLWRhcmsgLmJ1dHRvbjpob3Zlcntjb2xvcjojNGE3OWJmfQpib2R5LnRoZW1lLWRhcmsgaW5wdXRbdHlwZT1idXR0b25dLmdyZWVuLCAgYm9keS50aGVtZS1kYXJrIC5idXR0b24uZ3JlZW4sICBib2R5LnRoZW1lLWRhcmsgYnV0dG9uLmdyZWVue2JvcmRlci1jb2xvcjojY2RlNmIwO2JhY2tncm91bmQtY29sb3I6I2NkZTZiMDtjb2xvcjojNTc4ZjAxIWltcG9ydGFudH0KYm9keS50aGVtZS1kYXJrIGlucHV0W3R5cGU9YnV0dG9uXS5ncmVlbjpob3ZlciwgIGJvZHkudGhlbWUtZGFyayAuYnV0dG9uLmdyZWVuOmhvdmVyLCAgYm9keS50aGVtZS1kYXJrIGJ1dHRvbi5ncmVlbjpob3Zlcntib3JkZXItY29sb3I6Izc0YWYzMDtjb2xvcjojNWE5ZDAwIWltcG9ydGFudH0KYm9keS50aGVtZS1kYXJrIGlucHV0W3R5cGU9YnV0dG9uXS50ZWFsLCAgYm9keS50aGVtZS1kYXJrIC5idXR0b24udGVhbCwgIGJvZHkudGhlbWUtZGFyayBidXR0b24udGVhbHtib3JkZXItY29sb3I6I2E1ZGJjYTtiYWNrZ3JvdW5kLWNvbG9yOiNhNWRiY2F9CmJvZHkudGhlbWUtZGFyayBpbnB1dFt0eXBlPWJ1dHRvbl0udGVhbDpob3ZlciwgIGJvZHkudGhlbWUtZGFyayAuYnV0dG9uLnRlYWw6aG92ZXIsICBib2R5LnRoZW1lLWRhcmsgYnV0dG9uLnRlYWw6aG92ZXJ7Ym9yZGVyLWNvbG9yOiMyM2E2OTB9CmJvZHkudGhlbWUtZGFyayAubXktdGFncyAudGFnLmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoNzYsMTA0LDEyOSwwLjM1KX0KYm9keS50aGVtZS1kYXJrIGlucHV0W3R5cGU9dGV4dF0sICBib2R5LnRoZW1lLWRhcmsgaW5wdXRbdHlwZT1wYXNzd29yZF0sICBib2R5LnRoZW1lLWRhcmsgaW5wdXRbdHlwZT1udW1iZXJdLCAgYm9keS50aGVtZS1kYXJrIGlucHV0W3R5cGU9ZW1haWxdLCAgYm9keS50aGVtZS1kYXJrIGlucHV0W3R5cGU9dGVsXSwgIGJvZHkudGhlbWUtZGFyayBpbnB1dFt0eXBlPWRhdGVdLCAgYm9keS50aGVtZS1kYXJrIGlucHV0W3R5cGU9dGltZV0sIGJvZHkudGhlbWUtZGFyayB0ZXh0YXJlYXtib3JkZXItY29sb3I6I2RmZTNlOH0KYm9keS50aGVtZS1kYXJrIGlucHV0W3R5cGU9J2J1dHRvbiddOmRpc2FibGVkLCAgYm9keS50aGVtZS1kYXJrIGlucHV0W3R5cGU9J2J1dHRvbiddOmRpc2FibGVkOmhvdmVyLCAgYm9keS50aGVtZS1kYXJrIGJ1dHRvbjpkaXNhYmxlZCwgIGJvZHkudGhlbWUtZGFyayBidXR0b246ZGlzYWJsZWQ6aG92ZXIsICBib2R5LnRoZW1lLWRhcmsgLmJ1dHRvbi5kaXNhYmxlZCwgIGJvZHkudGhlbWUtZGFyayAuYnV0dG9uLmRpc2FibGVkOmhvdmVye2NvbG9yOiM4ODkyOWYhaW1wb3J0YW50fQpib2R5LnRoZW1lLWRhcmsgdGV4dGFyZWE6Zm9jdXN7Ym9yZGVyLWNvbG9yOiM5ZWNkZjh9CmJvZHkudGhlbWUtZGFyayAubXktZXJyb3IgaW5wdXQ6bm90KFt0eXBlPXJhZGlvXSk6bm90KFt0eXBlPWNoZWNrYm94XSksICBib2R5LnRoZW1lLWRhcmsgLm15LWVycm9yIHRleHRhcmVhe2JvcmRlci1jb2xvcjojZmNjMWM3fQpib2R5LnRoZW1lLWRhcmsgLm15LW1hbmlmZXN0LTFjam1tczdpICNsLWFwcHMgLmwtYXBwLmFwcC1idXN5e29wYWNpdHk6MC4zNX0KYm9keS50aGVtZS1kYXJrIC5teS1tYW5pZmVzdC0xY2ptbXM3aSAjbC1hcHBzIC5sLWFwcHt0cmFuc2l0aW9uOm9wYWNpdHkgMC4zc30KYm9keS50aGVtZS1kYXJrIC5zZWxlY3QyLWNvbnRhaW5lci1tdWx0aSAuc2VsZWN0Mi1jaG9pY2VzLCBib2R5LnRoZW1lLWRhcmsgLnNlbGVjdDItY29udGFpbmVyIC5zZWxlY3QyLWNob2ljZXtib3JkZXItY29sb3I6I2RmZTNlOH0KYm9keS50aGVtZS1kYXJrIC5zZWxlY3QyLWNvbnRhaW5lci1hY3RpdmUgLnNlbGVjdDItY2hvaWNlLCAgYm9keS50aGVtZS1kYXJrIC5zZWxlY3QyLWNvbnRhaW5lci1hY3RpdmUgLnNlbGVjdDItY2hvaWNlc3tib3JkZXItY29sb3I6IzllY2RmOH0KYm9keS50aGVtZS1kYXJrIC5zZWxlY3QyLWRyb3B7Y29sb3I6IzYzNjg2ZH0KYm9keS50aGVtZS1kYXJrIC5zZWxlY3QyLXJlc3VsdHMgbGkuc2VsZWN0Mi1yZXN1bHQtd2l0aC1jaGlsZHJlbiA+IC5zZWxlY3QyLXJlc3VsdC1sYWJlbHtmb250LXdlaWdodDpib2xkZXI7Y29sb3I6IzM5M2EzY30KYm9keS50aGVtZS1kYXJrICNsLWhlYWRlcntiYWNrZ3JvdW5kLWNvbG9yOiNmM2Y1ZjghaW1wb3J0YW50fQpib2R5LnRoZW1lLWRhcmsgI2wtaGVhZGVyIC5sLXRhYiBhe2NvbG9yOiM0YzVkNmUhaW1wb3J0YW50fQpib2R5LnRoZW1lLWRhcmsgI2wtaGVhZGVyIC5sLXRhYiBhLnN5c3RlbXtjb2xvcjojNDA3MzAwIWltcG9ydGFudH0KYm9keS50aGVtZS1kYXJrICNsLWhlYWRlciAubC10YWIuYWN0aXZlOmJlZm9yZXtiYWNrZ3JvdW5kLWNvbG9yOiNkOGRmZTghaW1wb3J0YW50fQpib2R5LnRoZW1lLWRhcmsgI2wtaGVhZGVyICNsLWFwcHRhYnMsIGJvZHkudGhlbWUtZGFyayAjbC1oZWFkZXIgI2wtYXNpZGV7Ym9yZGVyLXRvcC1jb2xvcjojY2RkNWUxfQpib2R5LnRoZW1lLWRhcmsgI2N3LWJvZHkgI2wtaGVhZGVyICNsLWFzaWRlIC5hc2lkZS1idG57Ym9yZGVyLWxlZnQtY29sb3I6I2NkZDVlMTtjb2xvcjojNTI1NzViIWltcG9ydGFudH0KYm9keS50aGVtZS1kYXJrICNjdy1ib2R5ICNsLWhlYWRlciAjbC1hc2lkZSAjYnRuLWNsb3NlLWFsbC10YWJze2NvbG9yOiM1MjU3NWIhaW1wb3J0YW50fQpib2R5LnRoZW1lLWRhcmsgI2N3LWJvZHkgI2wtaGVhZGVyICNsLWFzaWRlIC5hc2lkZS1idG4gYXtjb2xvcjojNTI1NzViIWltcG9ydGFudH0KYm9keS50aGVtZS1kYXJrICNsLWhlYWRlciAjc3ZnLXVuYXV0aHtzdHJva2U6I2ZmNTQwMCFpbXBvcnRhbnR9CmJvZHkudGhlbWUtZGFyayAjbC1oZWFkZXIgI3N2Zy1hdXRoe3N0cm9rZTojMzA3NzAwIWltcG9ydGFudH0KYm9keS50aGVtZS1kYXJrICNsLWhlYWRlciAubC10YWI6aG92ZXIgI2J0bi10YWJjbG9zZXtjb2xvcjpyZ2JhKDY5LDEzMywxNjksMC42KX0KYm9keS50aGVtZS1kYXJrICNjdy1ib2R5IC52aWV3LXJvd3tiYWNrZ3JvdW5kLWNvbG9yOiNmOGY5ZmJ9CmJvZHkudGhlbWUtZGFyayAjY3ctYm9keSAudmlldy1yb3c6bnRoLWNoaWxkKDJuKzApIHtiYWNrZ3JvdW5kLWNvbG9yOiNmMmY0ZjZ9CmJvZHkudGhlbWUtZGFyayAjY3ctYm9keSAudmlldy1yb3cgLmJ0bi1kYnN0YXIucm93LXN0YXJ7Y29sb3I6Izc3NGUwMH0KYm9keS50aGVtZS1kYXJrICNjdy1ib2R5IC52aWV3LXJvdyAuYnRuLWRiYWNsLm9yYW5nZTF7Y29sb3I6I2I1ODE2MCFpbXBvcnRhbnR9CmJvZHkudGhlbWUtZGFyayBkaXYubXktbW9kYWx7Ym94LXNoYWRvdzowcHggMHB4IDBweCAycHggcmdiYSgwLDI5LDc5LDAuNikhaW1wb3J0YW50O2JhY2tncm91bmQtY29sb3I6I2ZjZmNmY30KYm9keS50aGVtZS1kYXJrICNjdy1ib2R5ID4gZGl2Lm15LW1vZGFsLXNjcmVlbntiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjQ1LDI0OSwyNTUsMC45KSFpbXBvcnRhbnR9CmJvZHkudGhlbWUtZGFyayBidXR0b24ubWFya2ZvY3VzOmZvY3VzOmFmdGVyLCAgYm9keS50aGVtZS1kYXJrIC5idXR0b24ubWFya2ZvY3VzOmZvY3VzOmFmdGVye2JhY2tncm91bmQtY29sb3I6IzZkNmQ2ZCFpbXBvcnRhbnR9CmJvZHkudGhlbWUtZGFyayBkaXYubXktbW9kYWwubm9zZS1sZWZ0OmJlZm9yZSwgIGJvZHkudGhlbWUtZGFyayBkaXYubXktbW9kYWwubm9zZS1yaWdodDpiZWZvcmUsICBib2R5LnRoZW1lLWRhcmsgZGl2Lm15LW1vZGFsLm5vc2UtdG9wOmJlZm9yZSwgIGJvZHkudGhlbWUtZGFyayBkaXYubXktbW9kYWwubm9zZS1ib3R0b206YmVmb3Jle3dpZHRoOjZweDtoZWlnaHQ6NnB4O2JvcmRlcjoycHggc29saWQgcmdiYSgwLDI5LDc5LDAuNik7Ym9yZGVyLXRvcC1jb2xvcjp0cmFuc3BhcmVudDtib3JkZXItcmlnaHQtY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1jb2xvcjojZmNmY2ZjfQpib2R5LnRoZW1lLWRhcmsgI2N3LWJvZHkgPiBkaXYubXktbW9kYWwgPiAubXktbW9kYWwtY2xvc2V7YmFja2dyb3VuZC1jb2xvcjojOWJiMWM2fQpib2R5LnRoZW1lLWRhcmsgI3ZpZXctcGFuZWxzLm1vZGUtZ3JpZCAudmlldy1yZXN1bHRzLWhlYWR7YmFja2dyb3VuZC1jb2xvcjojZWFmMGZkIWltcG9ydGFudH0KYm9keS50aGVtZS1kYXJrICN2aWV3LWdyaWQtY29scyBpbnB1dDpmb2N1c3tiYWNrZ3JvdW5kOnJnYmEoNCw4OCwxOTgsMC4xNSl9CmJvZHkudGhlbWUtZGFyayAjbC1hcHBzIC5sLWFwcCAuZmVhdGhlcjphZnRlcntiYWNrZ3JvdW5kLWltYWdlOmxpbmVhci1ncmFkaWVudCh0byB0b3AsIHJnYmEoMjQ3LDI0OCwyNTAsMSksIHJnYmEoMjQ3LDI0OCwyNTAsMCkpfQpib2R5LnRoZW1lLWRhcmsgI2wtYXBwcyAubC1hcHAgLmZlYXRoZXI6YmVmb3Jle2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgcmdiYSgyNDcsMjQ4LDI1MCwxKSwgcmdiYSgyNDcsMjQ4LDI1MCwwKSl9CmJvZHkudGhlbWUtZGFyayAubXktbWFuaWZlc3QtMWFvYzF4ZmwgI2RvYzpob3ZlcntiYWNrZ3JvdW5kOiNmOGY5ZmJ9CmJvZHkudGhlbWUtZGFyayAuanZhbC1zdHJpbmcgICB7Y29sb3I6IzYxNzI5NH0KYm9keS50aGVtZS1kYXJrIC5qdmFsLWZ1bmN0aW9ue2NvbG9yOnJnYmEoMTQ2LDkzLDE4NiwwLjkpfQpib2R5LnRoZW1lLWRhcmsgaW1nI3NpY29uLCBib2R5LnRoZW1lLWRhcmsgLml2YWx1ZSBhLmJhc2U2NGltYWdlIGltZywgYm9keS50aGVtZS1kYXJrIC5jbS1lbW9qaSwgYm9keS50aGVtZS1kYXJrIGppe2ZpbHRlcjpicmlnaHRuZXNzKDAuOCkgaHVlLXJvdGF0ZSgxODBkZWcpIGludmVydCgpIHNhdHVyYXRlKDEuMikgY29udHJhc3QoMS4xKX0KYm9keS50aGVtZS1kYXJrICNlLWxvZ28sIGJvZHkudGhlbWUtZGFyayAjbC1yb290PnN2Z3tmaWx0ZXI6YnJpZ2h0bmVzcygwLjgpIGh1ZS1yb3RhdGUoMTg1ZGVnKSBpbnZlcnQoKSBzYXR1cmF0ZSgxLjUpIGNvbnRyYXN0KDEuMyl9CmJvZHkudGhlbWUtZGFyayAjZS1sb2dvICsgI2UtdGl0bGV7Y29sb3I6IzVjNzg5MyFpbXBvcnRhbnR9CmJvZHkudGhlbWUtZGFyayAuQ29kZU1pcnJvcntiYWNrZ3JvdW5kOiNmZGZlZmZ9CmJvZHkudGhlbWUtZGFyayAuY20tcy1kZWZhdWx0IC5jbS1kZWYgICAgICAgIHtjb2xvcjojZmY3ODlifQpib2R5LnRoZW1lLWRhcmsgLmNtLXMtZGVmYXVsdCAuY20ta2V5d29yZCAgICB7Y29sb3I6IzcxNWI5Y30KYm9keS50aGVtZS1kYXJrIC5jbS1zLWRlZmF1bHQgLmNtLW51bWJlciAgICAge2NvbG9yOiM0Nzc2MDB9CmJvZHkudGhlbWUtZGFyayAuY20tcy1kZWZhdWx0IC5jbS12YXJpYWJsZSAgIHtjb2xvcjojMWU4MDY0fQpib2R5LnRoZW1lLWRhcmsgLmNtLXMtZGVmYXVsdCAuY20tdmFyaWFibGUtMntjb2xvcjojM2E2YTlhfQpib2R5LnRoZW1lLWRhcmsgLmNtLXMtZGVmYXVsdCAuY20tc3RyaW5nICAgICB7Y29sb3I6IzYxNzI5NH0KYm9keS50aGVtZS1kYXJrIC5jbS1zLWRlZmF1bHQgLmNtLXN0cmluZy0yICAge2NvbG9yOiNkMDRlMWV9CmJvZHkudGhlbWUtZGFyayAuY20tcy1kZWZhdWx0IC5jbS1wcm9wZXJ0eSAgIHtjb2xvcjojNDM0ZTVkfQpib2R5LnRoZW1lLWRhcmsgLmNtLXMtZGVmYXVsdCAuY20tdGFnICAgICAgICB7Y29sb3I6IzczYWMxOX0KYm9keS50aGVtZS1kYXJrIC5jbS1zLWRlZmF1bHQgLmNtLWF0dHJpYnV0ZSAge2NvbG9yOiNlYTkwYjF9CmJvZHkudGhlbWUtZGFyayAuY20tcy1kZWZhdWx0IC5jbS1vcGVyYXRvciAgIHtjb2xvcjojOGU1NzAwfQpib2R5LnRoZW1lLWRhcmsgLmNtLXMtZGVmYXVsdCAuY20tYXRvbSAgICAgICB7Y29sb3I6I2JkNjY2Nn0KYm9keS50aGVtZS1kYXJrIC5jbS1zLWRlZmF1bHQgLmNtLWNvbW1lbnQgICAge2NvbG9yOiNhNGI3Yjd9CmJvZHkudGhlbWUtZGFyayAuanNvbmRpZmZwYXRjaC1hZGRlZCAuanNvbmRpZmZwYXRjaC1wcm9wZXJ0eS1uYW1lLCAgYm9keS50aGVtZS1kYXJrIC5qc29uZGlmZnBhdGNoLWFkZGVkIC5qc29uZGlmZnBhdGNoLXZhbHVlIHByZSwgIGJvZHkudGhlbWUtZGFyayAuanNvbmRpZmZwYXRjaC1tb2RpZmllZCAuanNvbmRpZmZwYXRjaC1yaWdodC12YWx1ZSBwcmUsICBib2R5LnRoZW1lLWRhcmsgLmpzb25kaWZmcGF0Y2gtdGV4dGRpZmYtYWRkZWR7YmFja2dyb3VuZDojYWRjYjg3fQpib2R5LnRoZW1lLWRhcmsgLmxvZy1mb3VuZCwgYm9keS50aGVtZS1kYXJrIC5qdmFsLWZvdW5kLWtleSwgYm9keS50aGVtZS1kYXJrIC52aWV3LWZvdW5ke2JhY2tncm91bmQtY29sb3I6IzljODEwMCFpbXBvcnRhbnQ7Y29sb3I6d2hpdGUhaW1wb3J0YW50fQpib2R5LnRoZW1lLWRhcmsgLkNvZGVNaXJyb3IgLmNtLWZvdW5ke291dGxpbmUtY29sb3I6IzljODEwMCFpbXBvcnRhbnQ7YmFja2dyb3VuZC1jb2xvcjojOWM4MTAwIWltcG9ydGFudDtjb2xvcjp3aGl0ZSFpbXBvcnRhbnR9CmJvZHkudGhlbWUtZGFyayAjY3ctbm90ZXMgPiBkaXZ7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDE1MiwxNzEsMTk5LDAuODUpO2NvbG9yOiM1MTYxNzI7Ym94LXNoYWRvdzpub25lO2JhY2tkcm9wLWZpbHRlcjpibHVyKDJweCl9CmJvZHkudGhlbWUtZGFyayAjY3ctbm90ZXMgPiBkaXYub2t7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDE3MCwyMDksMTIzLDAuODUpO2NvbG9yOiMzOTVhMDh9CmJvZHkudGhlbWUtZGFyayAjY3ctbm90ZXMgPiBkaXYuZXJyb3J7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwxNTUsMTcxLDAuODUpO2NvbG9yOmJsYWNrfQpib2R5LnRoZW1lLWRhcmsgI2N3LW5vdGVzID4gZGl2Lndhcm5pbmd7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMjA3LDEzNiwxNiwwLjg1KTtjb2xvcjpibGFja30K" }, "index.html": { "content_type": "text/html", "data": "PCFET0NUWVBFIGh0bWw+CjxodG1sPgogIDxoZWFkPgogICAgPHRpdGxlPiBQaG90b24gMS4yNCA8L3RpdGxlPgogICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MC45NSwgd2lkdGg9ZGV2aWNlLXdpZHRoLCB1c2VyLXNjYWxhYmxlPXllcywgbWluaW11bS1zY2FsZT0wLjcsIG1heGltdW0tc2NhbGU9Mi4wIj4KICAgIDxsaW5rIHJlbD0iaWNvbiIgdHlwZT0iaW1hZ2UvcG5nIiBocmVmPSJmYXZpY29uLnBuZyI+CiAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24iIGhyZWY9ImkvYXBwbGUtaWNvbi5wbmciPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL3Bob3Rvbi5jc3MiIC8+CiAgICA8c2NyaXB0PgogICAgICAvLyBSZWRpcmVjdCB0byB2YWxpZCBfcmV3cml0ZSBlbmRwb2ludCAKICAgICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSA9PSAnL19waG90b24nKSB3aW5kb3cubG9jYXRpb24gPSAnL19waG90b24vJzsKICAgICAgLy8gUHJlaW5pdAogICAgICB3aW5kb3cuRERPQyA9IHsKICAgICAgICBydW46ICBbe2NvbnRhaW5lcjonI2N3LXNwYWNlJywgbWFuaWZlc3Q6J2N3LlBob3RvbicsIGRhdGE6e319XSwKICAgICAgICBhcHBzOiB7fSwKICAgICAgICBfbWU6ICB7bmFtZTonJywgcm9sZXM6W119LAogICAgICB9OwogICAgPC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0ibGliL2dlbmVyYWwuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9ImxpYi9wbHVnaW5zLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJwaG90b24uanMiPjwvc2NyaXB0PgogICAgPG5vc2NyaXB0PgogICAgICA8ZGl2IGNsYXNzPSJwdDMwIHBsMTAwIGZzMTEwIGxoMTcwIHc4MDAgZnc0MDAgeGdyYXkiPgogICAgICAgIDxpbWcgc3JjPSJpL2FwcGxlLWljb24ucG5nIiBjbGFzcz0ibWwtMTAgdzEwMCBtYjIwIGRiIj4KICAgICAgCUphdmFTY3JpcHQgaXMgZGlzYWJsZWQgd2hpY2ggbGlrZWx5IG1lYW5zIENvdWNoREIgQ1NQIHBvbGljeSBwcmV2ZW50cyBQaG90b24gZnJvbSBzdGFydGluZy4gVG8gZml4IHRoZSBwb2xpY3k6IAogICAgICAgIDx1bD4KICAgICAgICAgIDxsaSBjbGFzcz0icHQ3Ij5SaWdodC1jbGljayA8YSBocmVmPSIvX3V0aWxzLyNfY29uZmlnIj5GYXV4dG9uPC9hPiBsaW5rIGFuZCBzZWxlY3QgPGk+T3BlbiBpbiBuZXcgdGFiLi4uPC9pPiA8L2xpPgogICAgICAgICAgPGxpIGNsYXNzPSJwdDciPlN3aXRjaCB0byBGYXV4dG9uIHRhYiwgY2xpY2sgPGNvZGUgY2xhc3M9ImJnLWdyYXk2IHBsNiBwcjYgZnM5MCBicjQgZGliIG53Ij48Yj4rPC9iPiZ0aGluc3A7QWRkIG9wdGlvbjwvY29kZT4gYnV0dG9uIDwvbGk+CiAgICAgICAgICA8bGkgY2xhc3M9InB0NyI+RmlsbCBwb3B1cCB3aXRoIAogICAgICAgICAgICA8Y29kZSBjbGFzcz0iYmctZ3JheTQgcGw0IHByNCBmczkwIGJyMiI+Y3NwPC9jb2RlPiwgCiAgICAgICAgICAgIDxjb2RlIGNsYXNzPSJiZy1ncmF5NCBwbDQgcHI0IGZzOTAgYnIyIj5hdHRhY2htZW50c19lbmFibGU8L2NvZGU+LCAKICAgICAgICAgICAgYW5kIDxjb2RlIGNsYXNzPSJiZy1ncmF5NCBwbDQgcHI0IGZzOTAgYnIyIj5mYWxzZTwvY29kZT4gdmFsdWVzIHJlc3BlY3RpdmVseSwgCiAgICAgICAgICAgIGNsaWNrIDxjb2RlIGNsYXNzPSJiZy1ncmF5NiBwbDYgcHI2IGZzOTAgYnI0IGRpYiI+Q3JlYXRlPC9jb2RlPiBidXR0b24uIAogICAgICAgICAgPC9saT4KICAgICAgICA8L3VsPgogICAgICAgIDxicj5BZnRlciB0dW5pbmcgQ1NQIHlvdSB3aWxsIG5lZWQgdG8gc2hpZnQtcmVsb2FkIHRoaXMgdGFiIChDdHJsLVNoaWZ0LVIpLiAKICAgICAgICBJZiBQaG90b24gc3RpbGwgZmFpbHMgdG8gc3RhcnQgY2xvc2UgdGhlIHRhYiwgYW5kIHRoZW4gcmUtb3BlbiBpdCAoQ3RybC1XLCB0aGVuIEN0cmwtU2hpZnQtVCkuCiAgICAgIDwvZGl2PgogICAgPC9ub3NjcmlwdD4KICA8L2hlYWQ+CgogIDxib2R5IHN0eWxlPSJmb250LXdlaWdodDozMDA7IiBjbGFzcz0iIj4KICAgIDxkaXYgaWQ9ImN3LW5vdGVzIj48L2Rpdj4KICAgIDxkaXYgaWQ9ImN3LWJvZHkiID4KICAgICAgPGRpdiBpZD0iY3ctaGVhZGVyIj48L2Rpdj4KICAgICAgPGRpdiBpZD0iY3ctc3BhY2UiIGNsYXNzPSJwdDAiIHN0eWxlPSJtaW4td2lkdGg6MTE1MHB4O3dpZHRoOjEwMCU7Ij4KICAgICAgICA8ZGl2IHN0eWxlPSJ3aWR0aDoxMDAlO3BhZGRpbmc6MjAwcHggMTAwcHg7Zm9udC1zaXplOjI4cHg7dGV4dC1hbGlnbjpjZW50ZXI7bGluZS1oZWlnaHQ6MWVtO2NvbG9yOiMzMzQzNTM7Ij4KICAgICAgICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjQycHg7aGVpZ2h0OjQycHg7cGFkZGluZzoycHg7Ym9yZGVyLXJhZGl1czoxMDBweDtib3JkZXI6MS41cHggc29saWQgI2FlYjZjMTttYXJnaW46MTBweCA1cHggLTEwcHggMDsiPgogICAgICAgICAgICA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMzIiIGhlaWdodD0iMTYuNSIgdmlld0JveD0iMCwwLDMxLDE2IiBzdHlsZT0iZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luLXRvcDoxMXB4OyI+CiAgICAgICAgICAgICAgPHBhdGggZmlsbD0iI2Q3MWQyZiIgZD0iTTMwLDEyIEwzMCwxNSBMMSwxNSBMMSwxMiBMMzAsMTIgeiIvPgogICAgICAgICAgICAgIDxwYXRoIGZpbGw9IiNmYTQ4NDgiIGQ9Ik0zLDMgQzMuMSwzLjcgMy4yLDQuMyAzLjIsNC42IEMzLjQsNS43IDMuOSw2LjYgNC43LDcuMiBDNS40LDcuNyA2LjIsOCA3LDggQzgsNy45IDExLjYsOCAxMy4xLDggQzE0LDggMTQuNiw4LjYgMTUsOS41IEwxNSwxMSBMMSwxMSBMMSwzLjggQzIuNiwzLjEgMS45LDMuNCAzLDMgTTI3LjksMyBDMjcuOCwzLjcgMjcuNyw0LjMgMjcuNyw0LjYgQzI3LjUsNS43IDI3LDYuNiAyNi4yLDcuMiBDMjUuNSw3LjcgMjQuNyw4IDIzLjksOCBDMjIuOSw3LjkgMTkuMyw4IDE3LjgsOCBDMTYuOSw4IDE2LjMsOC42IDE2LDkuNSBMMTYsMTEgTDMwLDExIEwzMCwzLjggQzI4LjMsMy4xIDI5LDMuNCAyNy45LDMgeiIvPgogICAgICAgICAgICAgIDxwYXRoIGZpbGw9IiNmZjY3NjciIGQ9Ik0xNSwxIEwxNSw3LjcgQzE0LjYsNy4xIDE0LDYuOSAxMy40LDYuOCBDOS41LDYuOCA4LjYsNi44IDcuNiw2LjggQzcuNCw2LjggNy4zLDYuOCA3LjMsNi44IEM1LjgsNi44IDQuNCw1LjcgNC4xLDQgTDQsMi44IEM3LjUsMS41IDExLjMsMSAxNSwxIE0xNiwxIEwxNiw3LjcgQzE2LjMsNy4xIDE2LjksNi45IDE3LjUsNi44IEMyMS40LDYuOCAyMi4zLDYuOCAyMy4zLDYuOCBDMjMuNSw2LjggMjMuNiw2LjggMjMuNiw2LjggQzI1LjEsNi44IDI2LjUsNS43IDI2LjgsNCBMMjcsMi44IEMyMy40LDEuNSAxOS42LDEgMTYsMSB6Ii8+CiAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgPC9kaXY+CiAgICAgICAgICBQaG90b24gMS4yNAogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPHN0eWxlIGlkPSJzY3JvbGxiYXItdHdlYWsiPjwvc3R5bGU+CiAgPC9ib2R5Pgo8L2h0bWw+" }, "perftest.html": { "content_type": "text/html", "data": "PCFET0NUWVBFIGh0bWw+IDxodG1sPiA8aGVhZD4gPHRpdGxlPkNvdWNoREIgcGVyZiB0ZXN0PC90aXRsZT4gPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1TZWN1cml0eS1Qb2xpY3kiIGNvbnRlbnQ9ImNoaWxkLXNyYyAnc2VsZicgZGF0YTogYmxvYjo7IGRlZmF1bHQtc3JjICdzZWxmJzsgaW1nLXNyYyAnc2VsZicgZGF0YTogYmxvYjo7IGZvbnQtc3JjICdzZWxmJzsgc2NyaXB0LXNyYyAnc2VsZicgJ3Vuc2FmZS1pbmxpbmUnICd1bnNhZmUtZXZhbCc7IHN0eWxlLXNyYyAnc2VsZicgJ3Vuc2FmZS1pbmxpbmUnICd1bnNhZmUtZXZhbCc7Ii8+IDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MC44LCBtYXhpbXVtLXNjYWxlPTEuMCwgbWluaW11bS1zY2FsZT0wLjUsIHVzZXItc2NhbGFibGU9bm8iLz4gPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiLz4gPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL3Bob3Rvbi5jc3MiLz4gPHNjcmlwdCBzcmM9ImxpYi9nZW5lcmFsLmpzIj48L3NjcmlwdD4gPHN0eWxlPioge2JveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDttYXJnaW46MDtwYWRkaW5nOjA7fTwvc3R5bGU+IDwvaGVhZD4gPHNjcmlwdD4kKGZ1bmN0aW9uKCl7JCgiI2N3LWJvZHkiKS5teSh7aWQ6ImN3LkNvdWNoLlBlcmZUZXN0IixidWlsZDo4MixwYXJhbXM6e30sZGF0YTp7Y291Y2g6e3ZlcnNpb246IiJ9LGRiOiJ6LXBlcmZ0ZXN0Iix0ZXN0czp7fSxsYXRlbmN5OjAsdGhyZWFkczozLHE6IjEiLG46IjEiLGxvZzpbXSxkb2NzOltdLHJldnM6e30sZGRvY3M6e1ZhbGlkYXRvcjp7X2lkOiJfZGVzaWduL3ZhbGlkYXRlIix2YWxpZGF0ZV9kb2NfdXBkYXRlOiIgIGZ1bmN0aW9uKG5ld0RvYywgb2xkRG9jLCB1c2VyQ3R4LCBzZWNPYmope1xuICAgICAgaWYgKG5ld0RvYy5fZGVsZXRlZCA9PT0gdHJ1ZSkgcmV0dXJuIHRydWU7XG4gICAgICBpZiAodXNlckN0eC5uYW1lLmxlbmd0aD4wICYmIG5ld0RvYy5faWQubGVuZ3RoPjMpIHJldHVybiB0cnVlO1xuICAgICAgZWxzZSB0aHJvdyh7Zm9yYmlkZGVuOiAnT3VjaCd9KTtcbiAgICB9In0sVmlld3M6e19pZDoiX2Rlc2lnbi9tYXByZWR1Y2UiLHZpZXdzOntjb3VudGE6e21hcDoiICBmdW5jdGlvbihkb2Mpe1xuICAgICAgICAgIGVtaXQgKGRvYy50eXBlLCAxKTtcbiAgICAgICAgfSIscmVkdWNlOiJfc3VtIn19fX19LGluaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPWEuZGF0YTtyZXR1cm4gYS5Eb2NzLnB1c2goYS5HZW5Eb2NzKCksYS5HZW5Eb2NzKCksYS5HZW5Eb2NzKCkpLHguaHRtbCgkLm15LmZvcm1nZW4oYS5IVE1MKSksJC5hamF4KHt1cmw6Ii8iLG1ldGhvZDoiZ2V0IixkYXRhVHlwZToianNvbiIsaGVhZGVyczp7QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uIn19KS50aGVuKGZ1bmN0aW9uKHgpe2IuY291Y2g9eH0pfSx1aTp7IiNsb2ciOmZ1bmN0aW9uKHgpe3JldHVybiB4LmxvZy5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIjx0cj48dGQ+ezF9PC90ZD48L3RyPiIuYXNzaWduKHguam9pbigiPC90ZD48dGQ+IikpfSkuam9pbigiIil8fHZvaWQgMH0sIiNkYiI6ImRiIiwiI3NxIjp7YmluZDoicSIsY3NzOntoaWRlOmZ1bmN0aW9uKHgpe3JldHVybiB4LmNvdWNoLnZlcnNpb25bMF08IjIifX19LCIjc24iOntiaW5kOiJuIixjc3M6e2hpZGU6ZnVuY3Rpb24oeCl7cmV0dXJuIHguY291Y2gudmVyc2lvblswXTwiMiJ9fX0sIiN2ZXIiOntiaW5kOiJjb3VjaC52ZXJzaW9uIix3YXRjaDoiI2xvZyJ9LCIjYnRuLXN0YXJ0IjpmdW5jdGlvbih4LGEpe251bGwhPWEmJnRoaXMuUnVuVGVzdHMoKX0sIiNtc2ctcW4iOntjc3M6e2hpZGU6ZnVuY3Rpb24oeCl7cmV0dXJuIHguY291Y2gudmVyc2lvblswXTwiMiJ9fX19LEhUTUw6Wyc8ZGl2IGNsYXNzPSJ3NjAwIj4nLCc8aDMgY2xhc3M9Im1iMTAiPkNvdWNoREIgPHNwYW4gaWQ9InZlciI+PC9zcGFuPiB3cml0ZSBhbmQgdmlld2luZGV4IHBlcmZvcm1hbmNlIHRlc3Q8L2gzPicse3JvdzoiMjUlIixsYWJlbDoiMzBweCIscm93Q3NzOiJteS1yb3cgZGliIHZhdCBwcjIwIixsYWJlbENzczoibXktbGFiZWwgdGFyIHByMTAifSxbIkRCIiwiaW5wI2RiLncxMDBwIl0sWyJRIiwibnVtI3NxLncxMDBwIl0sWyJOIiwibnVtI3NuLncxMDBwIl0sJzxkaXYgY2xhc3M9IncyNXAgZGliIHZhdCI+PGJ1dHRvbiBpZD0iYnRuLXN0YXJ0IiBjbGFzcz0iZ3JlZW4gdzEwMHAiPlN0YXJ0PC9idXR0b24+PC9kaXY+JywnPHRhYmxlIGNsYXNzPSJ3MTAwcCBtdDEwIj48dGJvZHkgaWQ9ImxvZyI+JywiPC90Ym9keT48L3RhYmxlPiIsIjxkaXY+PGJyPlRoaXMgdGVzdCBjcmVhdGVzL3VwZGF0ZXMgMjYwIGJyYW5jaHkgZG9jcyBvZiBkaWZmZXJlbnQgc2l6ZXMsIGFuZCAyIGRlc2lnbiBkb2NzIHdpdGggdmlldyBhbmQgdmFsaWRhdG9yLiAiLCc8c3BhbiBpZD0ibXNnLXFuIj5QbGF5IHdpdGggUSBhbmQgTiB0byBleHBsb3JlIGhvdyBzaGFyZGluZyBpbXBhY3RzIHBlcmZvcm1hbmNlLjwvc3Bhbj4gPC9kaXY+JywiPC9kaXY+Il0sRG9jczpbXSxzdHlsZTp7IiI6ImZvbnQtc2l6ZToxNnB4O2xpbmUtaGVpZ2h0OjIycHg7Zm9udC1mYW1pbHk6Jy1hcHBsZS1zeXN0ZW0nLCdCbGlua01hY1N5c3RlbUZvbnQnLCdIZWx2ZXRpY2EgTmV1ZScsJ1NlZ29lIFVJJyxIZWx2ZXRpY2EsVGFob21hLEFyaWFsLFZlcmRhbmEsU2Fucy1zZXJpZiIsIiAudzYwMCI6IndpZHRoOjYwMHB4OyIsIiAudzEwMHAiOiJ3aWR0aDoxMDAlOyIsIiB0YWJsZSI6ImZvbnQtc2l6ZTppbmhlcml0O2JvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7IiwiIHRkIjoiYm9yZGVyOjFweCBzb2xpZCAjZGRkO3BhZGRpbmc6M3B4IDZweDtmb250LXNpemU6aW5oZXJpdDt3aWR0aDoyNSU7IiwiIHRkOmZpcnN0LWNoaWxkIjoid2lkdGg6NTAlOyJ9LFRlc3RzOntDcmVhdGU6e30sV3JpdGU6W3tuYW1lOiJDcmVhdGUgZG9jLCAxMCDDlyAxTWIiLG46MTAsZG9jczoiZDFtIixzaXplOjJlNixkdXI6MCxjdHI6MH0se25hbWU6IkNyZWF0ZSBkb2MsIDUwIMOXIDEwMGIiLG46NTAsZG9jczoiZDEwMCIsc2l6ZToxMDgsZHVyOjAsY3RyOjB9LHtuYW1lOiJDcmVhdGUgZG9jLCA1MCDDlyAxa2IiLG46NTAsZG9jczoiZDFrIixzaXplOjEwMTAsZHVyOjAsY3RyOjB9LHtuYW1lOiJDcmVhdGUgZG9jLCA1MCDDlyAxMGtiIixuOjUwLGRvY3M6ImQxMGsiLHNpemU6MTAxMDAsZHVyOjAsY3RyOjB9LHtuYW1lOiJDcmVhdGUgZG9jLCA1MCDDlyAxMGtiIGZsYXQiLG46NTAsZG9jczoiZDEwa2YiLHNpemU6MTAxMDAsZHVyOjAsY3RyOjB9LHtuYW1lOiJDcmVhdGUgZG9jLCA1MCDDlyAxMDBrYiIsbjo1MCxkb2NzOiJkMTAwayIsc2l6ZToxMDFlMyxkdXI6MCxjdHI6MH1dLFZpZXdzRGRvYzp7bmFtZToiQ3JlYXRlIG1hcC9yZWR1Y2UgZGRvYyIsZGRvYzoiVmlld3MifSxWaWV3czp7bmFtZToiQnVpbGQgdmlld2luZGV4Iix2aWV3OiJfZGVzaWduL21hcHJlZHVjZS9fdmlldy9jb3VudGE/Z3JvdXBfbGV2ZWw9MiJ9LFVwZGF0ZTpbe25hbWU6IlVwZGF0ZSBkb2MsIDUwIMOXIDEwMGIiLG46NTAsZG9jczoiZDEwMCIsc2l6ZToxMDgsZHVyOjAsY3RyOjB9LHtuYW1lOiJVcGRhdGUgZG9jLCA1MCDDlyAxa2IiLG46NTAsZG9jczoiZDFrIixzaXplOjEwMTAsZHVyOjAsY3RyOjB9LHtuYW1lOiJVcGRhdGUgZG9jLCA1MCDDlyAxMGtiIixuOjUwLGRvY3M6ImQxMGsiLHNpemU6MTAxMDAsZHVyOjAsY3RyOjB9LHtuYW1lOiJVcGRhdGUgZG9jLCA1MCDDlyAxMGtiIGZsYXQiLG46NTAsZG9jczoiZDEwa2YiLHNpemU6MTAxMDAsZHVyOjAsY3RyOjB9LHtuYW1lOiJVcGRhdGUgZG9jLCA1MCDDlyAxMDBrYiIsbjo1MCxkb2NzOiJkMTAwayIsc2l6ZToxMDFlMyxkdXI6MCxjdHI6MH1dLFZhbGlkYXRvcjp7bmFtZToiQ3JlYXRlIHZhbGlkYXRvciBkZG9jIixkZG9jOiJWYWxpZGF0b3IifSxVcGRhdGUyOlt7bmFtZToiVXBkYXRlIGRvYywgNTAgw5cgMTAwYiIsbjo1MCxkb2NzOiJkMTAwIixzaXplOjEwOCxkdXI6MCxjdHI6MH0se25hbWU6IlVwZGF0ZSBkb2MsIDUwIMOXIDFrYiIsbjo1MCxkb2NzOiJkMWsiLHNpemU6MTAxMCxkdXI6MCxjdHI6MH0se25hbWU6IlVwZGF0ZSBkb2MsIDUwIMOXIDEwa2IiLG46NTAsZG9jczoiZDEwayIsc2l6ZToxMDEwMCxkdXI6MCxjdHI6MH0se25hbWU6IlVwZGF0ZSBkb2MsIDUwIMOXIDEwa2IgZmxhdCIsbjo1MCxkb2NzOiJkMTBrZiIsc2l6ZToxMDEwMCxkdXI6MCxjdHI6MH0se25hbWU6IlVwZGF0ZSBkb2MsIDUwIMOXIDEwMGtiIixuOjUwLGRvY3M6ImQxMDBrIixzaXplOjEwMWUzLGR1cjowLGN0cjowfV19LEdlbkRvY3M6ZnVuY3Rpb24oKXt0aGlzLmRhdGE7dmFyIHg9NDY2NTYsYT1bXSxiPVtdLGM9W10sZD1bXSxlPVtdLGY9W10sZz1bXTtyZXR1cm4gMTAuLnRpbWVzKGZ1bmN0aW9uKCl7Zm9yKHZhciB4PSIiLGI9MCxjPTEwMDAyO2I8YztiKyspeCs9U3RyaW5nLmZyb21DaGFyQ29kZShOdW1iZXIucmFuZG9tKDAsMjU1KSk7YS5wdXNoKGJ0b2EoeCkpfSksMWUzLnRpbWVzKGZ1bmN0aW9uKCl7Yi5wdXNoKG0oKSl9KSwxMDAuLnRpbWVzKGZ1bmN0aW9uKCl7Yy5wdXNoKGwoKSl9KSwxMDAuLnRpbWVzKGZ1bmN0aW9uKCl7ZC5wdXNoKGsoKSl9KSwxMDAuLnRpbWVzKGZ1bmN0aW9uKCl7ZS5wdXNoKGkoKSl9KSwxMDAuLnRpbWVzKGZ1bmN0aW9uKCl7Zi5wdXNoKGooKSl9KSwxMC4udGltZXMoZnVuY3Rpb24oKXtnLnB1c2goaCgpKX0pLHtkMTAwOmIsZDFrOmMsZDEwazpkLGQxMGtmOmUsZDEwMGs6ZixkMW06Z307ZnVuY3Rpb24gaCgpe3gudG9TdHJpbmcoMzYpO3grPTE7dmFyIGU9e19pZDpuKCksdHlwZToiZDFtYiIsZzpiLnNhbXBsZSgxMCksYjp7YzpbcCgpLHAoKV0sZDpOdW1iZXIucmFuZG9tKDFlNywxZTgtMSksZTpNYXRoLnJhbmRvbSgpPi41fSxzOnt4Ont5OmQuc2FtcGxlKCl9LHo6ZC5zYW1wbGUoMyksbTp7dDpbZi5zYW1wbGUoKSxkLnNhbXBsZSgpXSxxOmMuc2FtcGxlKDcpLHI6Yi5zYW1wbGUoMTApfX0sX2F0dGFjaG1lbnRzOnt9fTtyZXR1cm4gOS4udGltZXMoZnVuY3Rpb24oeCl7ZS5fYXR0YWNobWVudHNbcCgpK3grIi5iaW4iXT17Y29udGVudF90eXBlOiJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iLGRhdGE6YS5zYW1wbGUoNykuam9pbigiIil9fSksZX1mdW5jdGlvbiBpKCl7eC50b1N0cmluZygzNik7cmV0dXJuIHgrPTEse19pZDpuKCksdHlwZToiZDEwa2YiLGc6YS5zYW1wbGUoKS50byg5OTUwKX19ZnVuY3Rpb24gaigpe3gudG9TdHJpbmcoMzYpO3JldHVybiB4Kz0xLHtfaWQ6bigpLHR5cGU6ImQxMDBrIixnOltkLnNhbXBsZSgpLGQuc2FtcGxlKCksZC5zYW1wbGUoKV0sYjp7YzpbcCgpLHAoKV0sZDpOdW1iZXIucmFuZG9tKDFlNywxZTgtMSksZTpNYXRoLnJhbmRvbSgpPi41fSxzOnt4Ont5OmQuc2FtcGxlKCl9LHo6ZC5zYW1wbGUoMyksbTp7dDpbZC5zYW1wbGUoKSxkLnNhbXBsZSgpXSxxOmMuc2FtcGxlKDcpLHI6Yi5zYW1wbGUoMTApfX19fWZ1bmN0aW9uIGsoKXt4LnRvU3RyaW5nKDM2KTtyZXR1cm4geCs9MSx7X2lkOm4oKSx0eXBlOiJkMTBrIixnOltjLnNhbXBsZSgpLGMuc2FtcGxlKCksYy5zYW1wbGUoKV0sYjp7YzpbcCgpLHAoKV0sZDpOdW1iZXIucmFuZG9tKDFlNywxZTgtMSksZTpNYXRoLnJhbmRvbSgpPi41fSxzOnt4Ont5OmMuc2FtcGxlKCl9LHo6Yy5zYW1wbGUoMyksbTp7dDpbYy5zYW1wbGUoKSxjLnNhbXBsZSgpXSxxOmIuc2FtcGxlKDMpfX19fWZ1bmN0aW9uIGwoKXt4LnRvU3RyaW5nKDM2KTtyZXR1cm4geCs9MSx7X2lkOm4oKSx0eXBlOiJkMWtiIixmOmIuc2FtcGxlKDMpLGI6e2M6W3AoKSxwKCldLGQ6TnVtYmVyLnJhbmRvbSgxZTcsMWU4LTEpfSxzOnt4Ont5OmIuc2FtcGxlKCl9LHo6Yi5zYW1wbGUoNSl9fX1mdW5jdGlvbiBtKCl7eC50b1N0cmluZygzNik7cmV0dXJuIHgrPTEse19pZDpuKCksdHlwZToiZDEwMCIsYTpbcCgpLHAoKSxwKCldLGI6e2M6W28oKV0sZDpOdW1iZXIucmFuZG9tKDFlNywxZTgtMSksZTpNYXRoLnJhbmRvbSgpPi41fX19ZnVuY3Rpb24gbigpe3ZhciBhPXgudG9TdHJpbmcoMzYpLnJldmVyc2UoKTtyZXR1cm4geCs9MSxhfWZ1bmN0aW9uIG8oKXtyZXR1cm4gTnVtYmVyLnJhbmRvbSg0NjY1NiwxNjc5NjE1KS50b1N0cmluZygzNil9ZnVuY3Rpb24gcCgpe3JldHVybiBvKCkrbygpfX0sVE1ha2VEQjpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YS5kYXRhLGM9Yi5kYixkPVtdLGU9JC5EZWZlcnJlZCgpLGY9e0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiJ9O3JldHVybiBoKCkudGhlbihnKS50aGVuKGkpLnRoZW4oaSkudGhlbihpKS50aGVuKGkpLnRoZW4oaSkudGhlbihpKS50aGVuKGkpLnRoZW4oaSkudGhlbihpKS50aGVuKGkpLmFsd2F5cyhmdW5jdGlvbigpe2IubGF0ZW5jeXx8KGIubGF0ZW5jeT0oZC5taW4oKXx8MCkuY2xhbXAoMSwxZTYpLGIubG9nLnB1c2goWyJDcmVhdGVkIERCIixjLCIiXSksYi5sb2cucHVzaChbIkxhdGVuY3kiLCJ+IisoMHxiLmxhdGVuY3kpKyJtcyIsIiJdKSxhLm15LmNoZWNrKCIjbG9nIikpLGUucmVzb2x2ZSgpfSksZS5wcm9taXNlKCk7ZnVuY3Rpb24gZygpe3ZhciB4PSQuRGVmZXJyZWQoKTtyZXR1cm4gJC5hamF4KHt1cmw6Ii97ZGJ9P3E9e3F9Jm49e259Ii5hc3NpZ24oYiksbWV0aG9kOiJwdXQiLGhlYWRlcnM6ZixjYWNoZTohMX0pLmFsd2F5cyhmdW5jdGlvbigpe3gucmVzb2x2ZSgpfSkseC5wcm9taXNlKCl9ZnVuY3Rpb24gaCgpe3ZhciB4PSQuRGVmZXJyZWQoKTtyZXR1cm4gJC5hamF4KHt1cmw6Ii8iK2MsbWV0aG9kOiJkZWxldGUiLGhlYWRlcnM6ZixjYWNoZTohMX0pLmFsd2F5cyhmdW5jdGlvbigpe3gucmVzb2x2ZSgpfS5kZWJvdW5jZSg1MDApKSx4LnByb21pc2UoKX1mdW5jdGlvbiBpKCl7dmFyIHg9RGF0ZS5ub3coKSxhPSQuRGVmZXJyZWQoKTtyZXR1cm4gJC5hamF4KHt1cmw6Ii8iK2MsbWV0aG9kOiJnZXQifSkudGhlbihmdW5jdGlvbigpe2QucHVzaChEYXRlLm5vdygpLXgtMil9KS5hbHdheXMoZnVuY3Rpb24oKXthLnJlc29sdmUoKX0uZGVib3VuY2UoNTApKSxhLnByb21pc2UoKX19LFRXcml0ZURvY3M6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzLGM9Yi5kYXRhLGQ9Yy5kYixlPVtdLGY9JC5EZWZlcnJlZCgpLGc9W107cmV0dXJuIHguZm9yRWFjaChmdW5jdGlvbih4KXt4LmN0cj0wLHgubi50aW1lcyhmdW5jdGlvbihiKXt2YXIgZT1hW3guZG9jc11bYl07Yy5yZXZzW2UuX2lkXT9lLl9yZXY9Yy5yZXZzW2UuX2lkXTpkZWxldGUgZS5fcmV2O3ZhciBmPXt1cmw6Ii8iK2QrIi8iK2UuX2lkLG1ldGhvZDoicHV0Iix0aW1lb3V0OjFlNixjb250ZW50VHlwZToiYXBwbGljYXRpb24vanNvbiIsZGF0YTpKU09OLnN0cmluZ2lmeShlKSxkYXRhVHlwZToianNvbiJ9O2cucHVzaChbZix4LGUuX2lkXSl9KX0pLGgoKSxmLnByb21pc2UoKTtmdW5jdGlvbiBoKCl7aWYoIWcubGVuZ3RoKXtpZihlLmxlbmd0aClyZXR1cm47cmV0dXJuIGYucmVzb2x2ZSgpfWUubGVuZ3RoPj1jLnRocmVhZHN8fChjLnRocmVhZHMtZS5sZW5ndGgpLnRpbWVzKGZ1bmN0aW9uKCl7dmFyIHg9Zy5zaGlmdCgpO2koeFswXSx4WzFdLHhbMl0pfSl9ZnVuY3Rpb24gaSh4LGEsYil7dmFyIGQsZj1hLGc9JC5hamF4KHgpO3JldHVybiBlLnB1c2goZyksZD1EYXRlLm5vdygpLGcuZG9uZShmdW5jdGlvbih4KXtlLnJlbW92ZShnKSxmLmR1cis9RGF0ZS5ub3coKS1kLWMubGF0ZW5jeSxmLmN0cis9MSxmLmN0cj09Zi5uJiZqKGYubmFtZSxmLmR1ci9mLm58MCxmLnNpemUpLCF4LmVycm9yJiZ4LnJldiYmYiYmKGMucmV2c1tiXT14LnJldiksaCgpfSksZ31mdW5jdGlvbiBqKHgsYSxkKXtpZihhJiZkKXt2YXIgZT1kL2EqMWUzfDA7LTE9PShmPWMubG9nLmZpbmRJbmRleChhPT5hLm5hbWU9PXgpKSYmKGY9Yy5sb2cubGVuZ3RoKSxjLmxvZ1tmXT1beCwifiIrYSsibXMiLGUuYnl0ZXMoZT4xZTY/MjowKS5yZXBsYWNlKCJCIiwiYiIpKyIvcyJdfWVsc2V7dmFyIGY7LTE9PShmPWMubG9nLmZpbmRJbmRleChhPT5hLm5hbWU9PXgpKSYmYy5sb2cucHVzaChbeCwiUnVubmluZy4uLiJdKX1iLm15LmNoZWNrKCIjbG9nIil9fSxUTWFrZURkb2M6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPWEuZGF0YSxjPWIuZGRvY3NbeC5kZG9jXSxkPWIuZGIsZT1bXSxmPSQuRGVmZXJyZWQoKSxnPXtBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24ifTtyZXR1cm4gaCgpLnRoZW4oaSkuZG9uZShmdW5jdGlvbigpe2IubG9nLnB1c2goW3gubmFtZSwiX2QvIitjLl9pZC5zcGxpdCgiLyIpLmxhc3QoKSwiIl0pLGEubXkuY2hlY2soIiNsb2ciKSxmLnJlc29sdmUoKX0pLGYucHJvbWlzZSgpO2Z1bmN0aW9uIGgoKXt2YXIgeD0kLkRlZmVycmVkKCk7cmV0dXJuICQuYWpheCh7dXJsOiIvIitkKyIvIitjLl9pZCxtZXRob2Q6InB1dCIsaGVhZGVyczpnLGRhdGE6SlNPTi5zdHJpbmdpZnkoYyl9KS5hbHdheXMoZnVuY3Rpb24oKXt4LnJlc29sdmUoKX0pLHgucHJvbWlzZSgpfWZ1bmN0aW9uIGkoKXt2YXIgeD1EYXRlLm5vdygpLGE9JC5EZWZlcnJlZCgpO3JldHVybiAkLmFqYXgoe3VybDoiLyIrZCxtZXRob2Q6ImdldCJ9KS50aGVuKGZ1bmN0aW9uKCl7ZS5wdXNoKERhdGUubm93KCkteC0yKX0pLmFsd2F5cyhmdW5jdGlvbigpe2EucmVzb2x2ZSgpfSksYS5wcm9taXNlKCl9fSxURmV0Y2hWaWV3OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj1hLmRhdGEsYz1iLmRiLGQ9JC5EZWZlcnJlZCgpLGU9e0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiJ9O3JldHVybiBmKCkuYWx3YXlzKGZ1bmN0aW9uKCl7ZC5yZXNvbHZlKCl9KSxkLnByb21pc2UoKTtmdW5jdGlvbiBmKCl7dmFyIGQ9RGF0ZS5ub3coKSxmPSQuRGVmZXJyZWQoKTtyZXR1cm4gJC5hamF4KHt1cmw6Ii8iK2MrIi8iK3gudmlldyxtZXRob2Q6ImdldCIsaGVhZGVyczplLGRhdGFUeXBlOiJqc29uIn0pLnRoZW4oZnVuY3Rpb24oKXt2YXIgYz1EYXRlLm5vdygpLWQ7Yi5sb2cucHVzaChbeC5uYW1lLCJ+IitjKyJtcyIsKDcyZTgvYykuYnl0ZXMoMikucmVwbGFjZSgiQiIsImIiKSsiL3MiXSksYS5teS5jaGVjaygiI2xvZyIpfSkuYWx3YXlzKGZ1bmN0aW9uKCl7Zi5yZXNvbHZlKCl9KSxmLnByb21pc2UoKX19LFJ1blRlc3RzOmZ1bmN0aW9uKCl7dmFyIHg9dGhpcyxhPXguZGF0YTtyZXR1cm4gYS5sYXRlbmN5PTAsYS5sb2c9W10sYS5yZXZzPXt9LGEuZG9jcz1PYmplY3QuY2xvbmUoeC5Eb2NzLCEwKSxhLnRlc3RzPU9iamVjdC5jbG9uZSh4LlRlc3RzLCEwKSx4Lm15LmZpbmQoIiNsb2ciKS5odG1sKCI8YnI+U3RhcnRpbmcgdGVzdC4uLjxicj4iKSx4LlRNYWtlREIoYS50ZXN0cy5DcmVhdGUpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4geC5UV3JpdGVEb2NzKGEudGVzdHMuV3JpdGUsYS5kb2NzWzBdKX0pLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4geC5UTWFrZURkb2MoYS50ZXN0cy5WaWV3c0Rkb2MpfSkudGhlbihmdW5jdGlvbigpe3JldHVybiB4LlRGZXRjaFZpZXcoYS50ZXN0cy5WaWV3cyl9KS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIHguVFdyaXRlRG9jcyhhLnRlc3RzLlVwZGF0ZSxhLmRvY3NbMV0pfSkudGhlbihmdW5jdGlvbigpe3JldHVybiB4LlRNYWtlRGRvYyhhLnRlc3RzLlZhbGlkYXRvcil9KS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIHguVFdyaXRlRG9jcyhhLnRlc3RzLlVwZGF0ZTIsYS5kb2NzWzJdKX0pLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4geC5URmV0Y2hWaWV3KGEudGVzdHMuVmlld3MpfSl9fSl9KTs8L3NjcmlwdD4gPG5vc2NyaXB0PiA8ZGl2IGNsYXNzPSJ0YWMgcDEwMCBmczEyMCBsaDE3MCI+IExvY2FsIENvdWNoREIgQ1NQIHBvbGljeSBsaWtlbHkgcHJldmVudHMgUGVyZiBUZXN0IGZyb20gc3RhcnRpbmcuPGJyPiBZb3UgbGlrZWx5IG5lZWQgdG8gPGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Ii9fdXRpbHMvI19jb25maWciPnJ1biBGYXV4dG9uPC9hPiBhbmQgc2V0IHRoZSA8Y29kZSBjbGFzcz0iYmctZ3JheTQgcGw0IHByNCBmczkwIGJyMyI+Y3NwL2F0dGFjaG1lbnRzX2VuYWJsZTwvY29kZT4gY29uZmlnIGtleSB0byA8Y29kZSBjbGFzcz0iYmctZ3JheTQgcGw0IHByNCBmczkwIGJyMyI+ZmFsc2U8L2NvZGU+LiA8L2Rpdj4gPC9ub3NjcmlwdD4gPGJvZHkgc3R5bGU9Im92ZXJmbG93OmF1dG87Ij4gPGRpdiBpZD0iY3ctYm9keSIgY2xhc3M9IiIgc3R5bGU9InBhZGRpbmc6MTAwcHg7d2lkdGg6ODAwcHg7bWFyZ2luOjAgYXV0bzsiPjwvZGl2PiA8L2JvZHk+IDwvaHRtbD4=" }, "photon.js": { "content_type": "text/javascript", "data": "LypQaG90b24gMS4yNCBib290c3RyYXAgYW5kIGFwcHMsIChjKSAyMDI0IGVybW91dGgqLwokLmV4dGVuZCh3aW5kb3cuRERPQy5hcHBzLHsiY3cuUGhvdG9uIjp7aWQ6ImN3LlBob3RvbiIsYnVpbGQ6MzIsVmVyc2lvbjoiMS4yNCIsQ2ZnOntyb290UmVwbzoiaHR0cHM6Ly9jZG4uY2xvdWR3YWxsLm1lL3Bob3Rvbi8iLHVwZGF0ZToicmVtaW5kIixyb2xlczpbXSxtYXhXaWR0aDoiMjAwMCIsbWF4VGFiczoxNSxzY3JvbGxTcGVlZDoiMCIsZm9udDoiYXV0byIsZm9udFdlaWdodDoiNDAwIixmb250Q29kZToiYXV0byIsaWNvbjoiIixsaXN0Q29sczpbImluZm8iLCJzZWN1cml0eSJdLGJhdGNoRGJJbmZvRGVsYXk6NSxiYXRjaENvbXBhY3REZWxheTo1MDAsYmF0Y2hDcmVhdGVEZWxheToxNTAsYmF0Y2hVcGRhdGVDZmc6MTAwLGxvb3BBY3RpdmVUYXNrczo1LHRhc2tzUmVhZFJlcGxpY2F0b3I6ITAsc3RhdHNSZWZyZXNoOjEwLHBpbmdTZXNzaW9uOjAsdGFiQmFyOiJhdXRvIix0aGVtZToiIixncm91cGluZzpbIm5vcm1hbCIsImF1dG8iXX0sbGFuZzp7ZW46e1NxbEVkOntUWFRfVElUTEU6IlNRTCBxcnkgezF9IixUWFRfVElUTEUwOiJVbnRpdGxlZCBTUUwgcXJ5IixUQUdfTU9ERTp7dGFnczpbe01hbmdvOiJqc29uIn1dLGVtcHR5OntTUUw6InNxbCJ9fSxCVE5fUEFORUxfQ0xPU0U6IkNsb3NlIGVkaXRvciIsRVJSX05PX0pTT046IkNhbuKAmXQgY29udmVydCB0byBNYW5nbyIsRVJSX05FQVI6IkVycm9yIG5lYXIgJ3sxfSciLEVSUl9VTlNVUFA6InsxfSBpcyBub3Qgc3VwcG9ydGVkIixFUlJfQVNDREVTQzoiQWxsIEFTQyBvciBhbGwgREVTQyIsRVJSX1NRTDoiU1FMIGVycm9yOiB7MX0iLEJUTl9SVU46IlF1ZXJ5IixUSVBfUlVOOiJFeGVjdXRlcyBxdWVyeSBhbmQgc2hvd3MgdGhlIHJlc3VsdCIsQlROX0VYUEw6IkV4cGxhaW4iLFRJUF9FWFBMOiJFeHBsYWlucyBxdWVyeSwgYWxsIGhpZGRlbiBwYXJhbXMgYW5kIGluZGV4ZXMgaW52b2x2ZWQiLEJUTl9TQVZFOidTYXZlIGFzPHNwYW4gY2xhc3M9Im1yLTMiPuKApjwvc3Bhbj4nLEJUTl9SRU5BTUU6IlJlbmFtZeKApiIsVElQX1NBVkU6IlNhdmVzIFNRTCBxdWVyeSB0byBsb2NhbFN0b3JhZ2UgZm9yIGxhdGVyIHJlLXVzZSIsQlROX0RFTDoiRGVsIixUSVBfREVMOiJEZWxldGVzIHRoaXMgU1FMIHF1ZXJ5IGZyb20gbG9jYWxTdG9yYWdlIGFuZCBzd2l0Y2hlcyB0byBEZWZhdWx0IHF1ZXJ5IixCVE5fUkVTRVQ6JzxzcGFuIGNsYXNzPSJtci0zIj5SZXNldDwvc3Bhbj4nLFRJUF9SRVNFVDoiUmVzZXRzIHRvIGluaXRpYWwgZGVmYXVsdCBxdWVyeSIsVFhUX1NUQVNIOiI8aDM+TWVtb2l6ZSBxdWVyeTwvaDM+PHA+U2F2ZXMgU1FMIHF1ZXJ5IHRvIGxvY2FsU3RvcmFnZSBmb3IgbGF0ZXIgcmUtdXNlLjwvcD4iLFBMQ19TVEFTSDoiUXVlcnkgdGl0bGUsIDMuLi4zMCBjaGFycyIsRVJSX1NUQVNIX1JFUToiVGl0bGUgcmVxdWlyZWQiLEVSUl9TVEFTSF9MRU46IjMuLi4zMCBjaGFyYWN0ZXJzIixFUlJfU1RBU0hfRVhJU1Q6IkFscmVhZHkgZXhpc3RzIixCVE5fU1RBU0hfT0s6IlNhdmUgcXVlcnkiLEJUTl9TVEFTSF9PSzE6IlNhdmUgJiBzd2l0Y2ggdG8gbmV3IixCVE5fU1RBU0hfQ0FOQ0VMOiJDYW5jZWwifSxUSVBfTE9HSU46IkxvZyBpbiIsVElQX1BST0ZJTEU6IkVkaXQgdXNlciBcbnByb2ZpbGUgZG9jIixUSVBfQ09ORklHOiJDb3VjaERCIGNvbmZpZyIsVElQX1NIQVJFOiJQaG90b24gc2V0dGluZ3MgYW5kIHVwZGF0ZSwgQ291Y2hEQiBpbmZvIixUSVBfUk9PVDoiU2luZ2xlIGNsaWNrOiBsaXN0IG9mIERCcyBcbkRvdWJsZSBjbGljazogY2xvc2UgYWxsIHRhYnMiLEJUTl9YQUxMOiLinJUgQ2xvc2UgYWxswqAiLEJUTl9YRExHOic8ZGl2IGNsYXNzPSJwYWJjIHBzZXVkb2xpbmsgdGRuIHA3IHRhciBsaDEwMCBmdzMwMCBvOTAiIHN0eWxlPSJ0b3A6MDtyaWdodDowOyI+4pyVPC9kaXY+JyxFUlJfUkVRX0lOVkFMSURDQUxMOiJJbnZhbGlkIHJlcXVlc3QgcGFyYW1zLCBwcm9iYWJseSBpbnZhbGlkIGNvbW1hbmQsIG9yIHRoZXJl4oCZcyBhIGJ1ZyIsRVJSX1JFUV9BVVRIUkVROiJZb3UgbmVlZCB0byBsb2cgaW4gdG8gdXNlIFBob3RvbiIsRVJSX1JFUV9ST0xFUkVROiJJbnN1ZmZpY2llbnQgcHJpdmlsZWdlcyB0byBydW4gUGhvdG9uIixFUlJfUkVROnswOiJPZmZsaW5lIiw0MDA6IkJhZCByZXF1ZXN0Iiw0MDE6IlVuYXV0aG9yaXplZCIsNDAzOiJGb3JiaWRkZW4iLDQwNDoiTm90IGZvdW5kIiw0MDU6Ik5vdCBhbGxvd2VkIiw0MDg6IlRpbWVvdXQiLDQwOToiQ29uZmxpY3QiLDQxMjoiUHJlY29uZGl0aW9uIGZhaWxlZCIsNDI5OiJUb28gbWFueSByZXF1ZXN0cyIsNTAwOiJJbnRlcm5hbCBlcnJvciIsNTAxOiJOb3QgaW1wbGVtZW50ZWQiLDUwMzoiU2VydmljZSB1bmF2YWlsYWJsZSIsNTA0OiJHYXRld2F5IHRpbWVvdXQiLDUwOToiQmFuZHdpZHRoIHF1b3RhIiw5OTk6IlVua25vd24gZXJyb3IifSxGQUlMX1RPT19NQU5ZX1RBQlM6InsxfSB0YWJzIG1heGltdW0sIHBsZWFzZSwgY2xvc2Ugc29tZXRoaW5nIG9yIGRvdWJsZS1jbGljayB0aGUgbG9nbyB0byBjbG9zZSBhbGwgdGFicy4iLEZBSUxfVEFCX0FQUDoiRmFpbGVkIHN0YXJ0aW5nIHRhYiBhcHAuIFNlZSBjb25zb2xlIGZvciBkZXRhaWxzLiIsRExHX1VOTE9BRDoiVGhlcmUgYXJlIHVuc2F2ZWQgY2hhbmdlcy4gUmVsb2FkPyIsRExHX1VOU0FWRUQ6IlRoZXJlIGFyZSB1bnNhdmVkIGNoYW5nZXMuIFByb2NlZWQ/IixVUERfT0xEOiJZb3VyIHZlcnNpb24gb2YgUGhvdG9uIGlzIG1vcmUgdGhhbiB7MX0gbW9udGh7Mn0gb2xkLiAiLFVQRF9NT05USDoiWW91IHVwZGF0ZWQgUGhvdG9uIG1vcmUgdGhhbiB7MX0gbW9udGh7Mn0gYWdvLiAiLFVQRF9UQUlMOidUbyB1cGRhdGUgY2xpY2sgPHNwYW4gY2xhc3M9ImZpLXdyZW5jaCBvODAiPjwvc3Bhbj4gaWNvbiBhdCBuYXZiYXIsIGFuZCB0aGVuIGNsaWNrIOKAmENoZWNrIGZvciB1cGRhdGVz4oCZIGJ1dHRvbi4nLE1TR19ORVdEQl9PSzoiQ3JlYXRlZCBuZXcgREIg4oCYezF94oCZIixNU0dfTkVXREJfRkFJTDoiRmFpbGVkIGNyZWF0aW5nIERCIOKAmHsxfeKAmS4gU2VydmVyIHJlc3BvbmRlZCDigJh7Mn06IHszfeKAmSIsTVNHX05FV0RCX05PQUNMOiJEQiDigJh7MX3igJkgY3JlYXRlZCBidXQgc2VjdXJpdHkgY29uZmlnIGZhaWxlZCwgd2hpY2ggbWVhbnMgREIgaXMgcHVibGljLiBTZXJ2ZXIgcmVzcG9uZGVkIOKAmHsyfTrCoHszfeKAmSIsTVNHX1NFQ0RCX09LOiJVcGRhdGVkIHNlY3VyaXR5IG9iamVjdCBmb3Ig4oCYezF94oCZIixNU0dfU0VDREJfRkFJTDoiRmFpbGVkIHVwZGF0aW5nIHNlY3VyaXR5IG9iamVjdCBmb3Ig4oCYezF94oCZLiBTZXJ2ZXIgcmVzcG9uZGVkIOKAmHsyfTrCoHszfSIsTmV3SW5kZXg6e1RYVF9ORVc6IjxoMz5DcmVhdGUgbmV3IGluZGV4PC9oMz48cD5TYXZlcyBpbmRleCBpbnRvIGV4aXN0aW5nIG9yIG5ldyBkZXNpZ24gZG9jdW1lbnQuPC9wPiIsTEJMX1RZUEU6IlR5cGUiLFRBR19UWVBFOlt7IkpTIHZpZXciOiJqYXZhc2NyaXB0In0seyJFcmxhbmcgdmlldyI6ImVybGFuZyJ9LHsiTWFuZ28gaW5kZXgiOiJxdWVyeSJ9XSxMQkxfRERPQzoiRGRvYyBuYW1lIixQTENfRERPQzoiU2hvcnQgb2YgZnVsbCBmb3JtIixFUlJfWExBTkc6IkRkb2MgYWxyZWFkeSBleGlzdHMgYW5kIGhhcyBkaWZmZXJlbnQgdHlwZSIsUExDX05FVzoiS2V5IG5hbWUgaW4gLnZpZXdzIHByb3Agb2YgZGRvYyIsTVNHX0VSTEFORzoiRXJsYW5nIHZpZXdzIG1heSBiZSBub3Qgc3VwcG9ydGVkIGJ5IHlvdXIgQ291Y2hEQiIsQlROX05FV19DQU5DRUw6IkNhbmNlbCIsRVJSX05PX05BTUU6IkludmFsaWQgZGRvYyBvciBpbmRleCBuYW1lLCBjYW7igJl0IGNyZWF0ZSBpbmRleCIsRVJSX05PX05BTUVfUlVOOiJZb3UgY2Fu4oCZdCBydW4gZGVmYXVsdCBpbmRleCwgcGxlYXNlIHVzZSBTYXZlIGFzIGJ1dHRvbiIsRVJSX0VSUkRPQzoiQ2Fu4oCZdCBzYXZlIGludmFsaWQgaW5kZXguIHsxfS4iLE1TR19TQVZFRDoiVXBkYXRlZCB7MX0sIHJlbG9hZGluZyBlbnRyaWVzIixNU0dfRkFJTDoiRmFpbGVkIHNhdmluZyB7MX0uIFNlcnZlciByZXNwb25kZWQg4oCYezJ9OsKgezN94oCZIixqYXZhc2NyaXB0OntMQkxfTkVXOiJWaWV3IG5hbWUiLFRYVF9USVRMRTp7TkVXOiJDcmVhdGUgbmV3IHZpZXciLFVQRDoiVXBkYXRlIHZpZXcifSxUWFRfREVTQzp7TkVXOiJTYXZlcyB2aWV3IGludG8gbmV3IGRkb2MgaW4gPGI+ezF9PC9iPi4iLEFERDoiQWRkcyB2aWV3IGludG8gZXhpc3RpbmcgZGRvYyBpbiA8Yj57MX08L2I+LiIsVVBEOiJPdmVyd3JpdGVzIGV4aXN0aW5nIHZpZXcgaW5kZXggb2YgPGI+ezF9PC9iPi4ifSxCVE5fT0s6e05FVzoiQ3JlYXRlIGRkb2MgYW5kIHZpZXciLEFERDoiQWRkIHZpZXcgdG8gZGRvYyIsVVBEOiJPdmVyd3JpdGUgdmlldyJ9LEVSUl9ORVdfUkVROiJWaWV3IG5hbWUgcmVxdWlyZWQiLEVSUl9ORVdfU0xBU0g6IlNsYXNoZXMgYXJlIG5vdCBhbGxvd2VkIixFWFA6e05FVzoiVGFyZ2V0IGRlc2lnbiBkb2MgZG9lc27igJl0IGV4aXN0IGFuZCB3aWxsIGJlIGNyZWF0ZWQuIixBREQ6Ik5ldyB2aWV3IHdpbGwgYmUgYWRkZWQgaW50byBleGlzdGluZyBkZXNpZ24gZG9jLiIsVVBEOic8c3BhbiBjbGFzcz0icmVkMSBmaS1hbGVydCI+PC9zcGFuPiBWaWV3IGFscmVhZHkgZXhpc3RzIGFuZCB3aWxsIGJlIHJlcGxhY2VkLid9fSxxdWVyeTp7TEJMX05FVzoiSW5kZXggbmFtZSIsVFhUX1RJVExFOntORVc6IkNyZWF0ZSBuZXcgaW5kZXgiLFVQRDoiVXBkYXRlIGluZGV4In0sVFhUX0RFU0M6e05FVzoiU2F2ZXMgTWFuZ28gaW5kZXggaW50byBuZXcgZGRvYyBpbiA8Yj57MX08L2I+LiIsQUREOiJBZGRzIE1hbmdvIGluZGV4IGludG8gZXhpc3RpbmcgZGRvYyBpbiA8Yj57MX08L2I+LiIsVVBEOiJPdmVyd3JpdGVzIGV4aXN0aW5nIE1hbmdvIGluZGV4IG9mIDxiPnsxfTwvYj4uIn0sQlROX09LOntORVc6IkNyZWF0ZSBkZG9jIGFuZCBpbmRleCIsQUREOiJBZGQgaW5kZXggdG8gZGRvYyIsVVBEOiJPdmVyd3JpdGUgaW5kZXgifSxFUlJfTkVXX1JFUToiSW5kZXggbmFtZSByZXF1aXJlZCIsRVJSX05FV19TTEFTSDoiU2xhc2hlcyBhcmUgbm90IGFsbG93ZWQiLEVYUDp7TkVXOiJUYXJnZXQgZGVzaWduIGRvYyBkb2VzbuKAmXQgZXhpc3QgYW5kIHdpbGwgYmUgY3JlYXRlZC4iLEFERDoiTmV3IGluZGV4IHdpbGwgYmUgYWRkZWQgaW50byBleGlzdGluZyBkZXNpZ24gZG9jLiIsVVBEOic8c3BhbiBjbGFzcz0icmVkMSBmaS1hbGVydCI+PC9zcGFuPiBWaWV3IGFscmVhZHkgZXhpc3RzIGFuZCB3aWxsIGJlIHJlcGxhY2VkLid9fX0sSW5kZXhFZDp7VFhUX1RJVExFOiJNYW5nbyBpbmRleCB7MX3CoGluwqB7Mn0iLFRYVF9USVRMRTA6IkRlZmF1bHQgTWFuZ28gaW5kZXgiLEJUTl9QQU5FTF9DTE9TRToiQ2xvc2UgZWRpdG9yIixUQUdfTU9ERTp7dGFnczpbe0pTT046Impzb24ifV0sZW1wdHk6e1NvdXJjZToiamF2YXNjcmlwdCJ9fSxFUlJfTk9fSU5ERVg6Ik11c3QgaGF2ZSAuaW5kZXguZmllbGRzIGFycmF5IixFUlJfTk9fVFlQRTonUHJvcGVydHkgLnR5cGUgc2hvdWxkIGJlICJqc29uIicsRVJSX05PX0pTT046IkNhbuKAmXQgY29udmVydCB0byBKU09OIixCVE5fUlVOOiJTYXZlIGFuZCBydW4iLEJUTl9SVU4wOiJDcmVhdGUgbmV3IGFuZCBydW4iLFRJUF9SVU46IlNhdmVzIGluZGV4IGFuZCBzaG93cyBpbmRleCBlbnRyaWVzIixNU0dfRkFJTDoiRmFpbGVkIHNhdmluZyB7MX0uIFNlcnZlciByZXNwb25kZWQg4oCYezJ9OsKgezN94oCZIixNU0dfU0FWRUQ6IlVwZGF0ZWQgezF9LCByZWxvYWRpbmcgaW5kZXggZW50cmllcyIsQlROX1NBVkVBUzoiU2F2ZSBhc+KApiIsVElQX1NBVkVBUzoiU2F2ZXMgaW5kZXggdW5kZXIgZGlmZmVyZW50IG5hbWUgYW5kIHNob3dzIGluZGV4IGVudHJpZXMiLEJUTl9ERUw6IkRlbOKApiIsVElQX0RFTDoiRGVsZXRlcyB0aGlzIE1hbmdvIGluZGV4IixCVE5fUkVWRVJUOiJSZXZlcnQiLFRJUF9SRVZFUlQ6IlJldmVydHMgZWRpdG9yIHRvIHNhdmVkIGluZGV4IGNvZGUiLEVSUl9OT19OQU1FOiJJbnZhbGlkIGRkb2Mgb3IgaW5kZXggbmFtZSwgY2Fu4oCZdCBjcmVhdGUgaW5kZXgiLEVSUl9OT19OQU1FX1JVTjoiWW91IGNhbuKAmXQgcnVuIGRlZmF1bHQgaW5kZXgsIHBsZWFzZSB1c2UgU2F2ZSBhcyBidXR0b24iLEVSUl9FUlJET0M6IkNhbuKAmXQgc2F2ZSBpbnZhbGlkIGluZGV4LiB7MX0uIixNU0dfREVMX1RFWFQ6JzxzcGFuIGNsYXNzPSJyZWQxIGZpLWFsZXJ0Ij48L3NwYW4+IERlbGV0ZSBNYW5nbyBpbmRleCB7MX0gZnJvbSB7Mn0/JyxCVE5fREVMX1lFUzoiRGVsZXRlIixCVE5fREVMX05POiJDYW5jZWwiLE1TR19ERUxfT0s6IkluZGV4IHsxfSBkZWxldGVkIixNU0dfREVMX0ZBSUw6IkZhaWxlZCBkZWxldGluZyB7MX0uIFNlcnZlciByZXNwb25kZWQg4oCYezJ9OsKgezN94oCZIn0sVmlld0VkOntUWFRfVElUTEU6e2phdmFzY3JpcHQ6IkpTIHZpZXcgezF94oCJL+KAiXsyfSIsZXJsYW5nOiJFcmxhbmcgdmlldyB7MX3igIkv4oCJezJ9In0sVEFHX01PREU6e3RhZ3M6W1t7UmVkdWNlOiJyZWR1Y2UifSx7SlNPTjoianNvbiJ9XV0sZW1wdHk6e01hcDoibWFwIn19LEJUTl9QQU5FTF9DTE9TRToiQ2xvc2UgZWRpdG9yIixFUlJfTk9fTUFQOiJNYXAgaXMgbm90IGEgZnVuY3Rpb24iLEVSUl9OT19SRURVQ0U6IlJlZHVjZSBpcyBub3QgYSBmdW5jdGlvbiIsRVJSX0ZfQlVJTFRJTjoiVW5rbm93biBidWlsdC1pbiByZWR1Y2VyIixFUlJfRVJSRE9DOiJDYW7igJl0IHNhdmUgaW52YWxpZCBkZXNpZ24gZG9jLiB7MX0uIixCVE5fUlVOOiJSdW4gdmlldyIsVElQX1JVTjoiUnVucyBzYXZlZCB2aWV3IGluZGV4IHF1ZXJ5IixCVE5fU0FWRToiU2F2ZSBhbmQgcnVuIixUSVBfU0FWRToiU2F2ZXMgdmlldyBhbmQgc2hvd3MgdGhlIHJlc3VsdCIsTVNHX0ZBSUw6IkZhaWxlZCBzYXZpbmcgezF9LiBTZXJ2ZXIgcmVzcG9uZGVkIOKAmHsyfTrCoHszfeKAmSIsTVNHX1NBVkVEOiJVcGRhdGVkIHsxfSwgcmVsb2FkaW5nIHZpZXciLEJUTl9TQVZFQVM6IlNhdmUgYXPigKYiLFRJUF9TQVZFQVM6IlNhdmVzIHZpZXcgdW5kZXIgZGlmZmVyZW50IG5hbWUgYW5kIHNob3dzIHRoZSByZXN1bHQiLEJUTl9SRVZFUlQ6IlJldmVydCIsVElQX1JFVkVSVDoiUmV2ZXJ0cyBlZGl0b3IgdG8gc2F2ZWQgdmlldyBjb2RlIixCVE5fREVMOiJEZWzigKYiLFRJUF9ERUw6IkRlbGV0ZXMgdGhpcyB2aWV3IGluZGV4IixFUlJfTk9fTkFNRToiSW52YWxpZCBkZG9jIG9yIHZpZXcgbmFtZSwgY2Fu4oCZdCBjcmVhdGUgdmlldyIsTVNHX0RFTF9URVhUOic8c3BhbiBjbGFzcz0icmVkMSBmaS1hbGVydCI+PC9zcGFuPiBEZWxldGUgdmlldyBpbmRleCB7MX0gZnJvbSB7Mn0/JyxCVE5fREVMX1lFUzoiRGVsZXRlIixCVE5fREVMX05POiJDYW5jZWwiLE1TR19ERUxfT0s6IlZpZXcgezF9IGRlbGV0ZWQiLE1TR19ERUxfRkFJTDoiRmFpbGVkIGRlbGV0aW5nIHsxfS4gU2VydmVyIHJlc3BvbmRlZCDigJh7Mn06wqB7M33igJkifSxNYW5nb0VkOntUWFRfVElUTEU6Ik1hbmdvIHFyeSB7MX0iLFRYVF9USVRMRTA6IlVudGl0bGVkIE1hbmdvIHFyeSIsVEFHX01PREU6e3RhZ3M6W3tKU09OOiJqc29uIn1dLGVtcHR5OntTb3VyY2U6ImphdmFzY3JpcHQifX0sQlROX1BBTkVMX0NMT1NFOiJDbG9zZSBlZGl0b3IiLEVSUl9OT19TRUxFQ1RPUjoiTm8gLnNlbGVjdG9yIHByb3BlcnR5IixFUlJfTk9fRklFTERTOiJObyAuZmllbGRzIGFycmF5IixFUlJfRU1QVFlfRklFTERTOiJFbXB0eSAuZmllbGRzIGFycmF5IixFUlJfTk9fSlNPTjoiQ2Fu4oCZdCBjb252ZXJ0IHRvIEpTT04iLEVSUl9NQU5HT19LRVlTOiJVbmtub3duIGtleSB7MX0iLEVSUl9JTlZBTElEX09QRVJBVE9SOiJJbnZhbGlkIG9wZXJhdG9yIHsxfSIsRVJSX1ZfTU9EMDoiJG1vZCBkaXZpc29yIGlzIDAiLEVSUl9WX01PRDE6IiRtb2QgbXVzdCBiZSBbZGl2aXNvciwgcmVtYWluZGVyXSIsRVJSX1ZfTU9ERDoiJG1vZCBkaXZpc29yIG11c3QgYmUgYW4gaW50ZWdlciIsRVJSX1ZfTU9EUjoiJG1vZCByZW1haW5kZXIgbXVzdCBiZSBhbiBpbnRlZ2VyIixFUlJfVl9FWElTVDoiJGV4aXN0cyBtdXN0IGJlIGEgYm9vbCIsRVJSX1ZfVFlQRTA6IiR0eXBlIG11c3QgYmUgYSBzdHJpbmciLEVSUl9WX1RZUEUxOiJJbnZhbGlkICR0eXBlIixFUlJfVl9TSVpFOiIkc2l6ZSBtdXN0IGJlIGFuIGludGVnZXIiLEVSUl9WX1JFR0VYOiIkcmVnZXggbXVzdCBiZSBhIHN0cmluZyIsRVJSX1ZfQVJSOiJ7MX0gbXVzdCBiZSBhbiBhcnJheSIsRVJSX1ZfT0JKOiJ7MX0gbXVzdCBiZSBhbiBvYmplY3QiLEJUTl9SVU46IlF1ZXJ5IixUSVBfUlVOOiJFeGVjdXRlcyBxdWVyeSBhbmQgc2hvd3MgdGhlIHJlc3VsdCIsQlROX0VYUEw6IkV4cGxhaW4iLFRJUF9FWFBMOiJFeHBsYWlucyBxdWVyeSwgYWxsIGhpZGRlbiBwYXJhbXMgYW5kIGluZGV4ZXMgaW52b2x2ZWQiLEJUTl9TQVZFOidTYXZlIGFzPHNwYW4gY2xhc3M9Im1yLTMiPuKApjwvc3Bhbj4nLEJUTl9SRU5BTUU6IlJlbmFtZeKApiIsVElQX1NBVkU6IlNhdmVzIE1hbmdvIHF1ZXJ5IHRvIGxvY2FsU3RvcmFnZSBmb3IgbGF0ZXIgcmUtdXNlIixCVE5fREVMOiJEZWwiLFRJUF9ERUw6IkRlbGV0ZXMgdGhpcyBNYW5nbyBxdWVyeSBmcm9tIGxvY2FsU3RvcmFnZSBhbmQgc3dpdGNoZXMgdG8gRGVmYXVsdCBxdWVyeSIsQlROX1JFU0VUOic8c3BhbiBjbGFzcz0ibXItMyI+UmVzZXQ8L3NwYW4+JyxUSVBfUkVTRVQ6IlJlc2V0cyB0byBpbml0aWFsIGRlZmF1bHQgcXVlcnkiLFRYVF9TVEFTSDoiPGgzPk1lbW9pemUgcXVlcnk8L2gzPjxwPlNhdmVzIE1hbmdvIHF1ZXJ5IHRvIGxvY2FsU3RvcmFnZSBmb3IgbGF0ZXIgcmUtdXNlLjwvcD4iLFBMQ19TVEFTSDoiUXVlcnkgdGl0bGUsIDMuLi4zMCBjaGFycyIsRVJSX1NUQVNIX1JFUToiVGl0bGUgcmVxdWlyZWQiLEVSUl9TVEFTSF9MRU46IjMuLi4zMCBjaGFyYWN0ZXJzIixFUlJfU1RBU0hfRVhJU1Q6IkFscmVhZHkgZXhpc3RzIixCVE5fU1RBU0hfT0s6IlNhdmUgcXVlcnkiLEJUTl9TVEFTSF9PSzE6IlNhdmUgJiBzd2l0Y2ggdG8gbmV3IixCVE5fU1RBU0hfQ0FOQ0VMOiJDYW5jZWwifSxVc2VyRG9jOntUWFRfVElUTEU6IkNyZWF0ZSBuZXcgdXNlciIsVFhUX1RJVExFX0VEOiJDaGFuZ2UgcGFzc3dvcmQgb3Igcm9sZXMiLExCTF9OOiJOYW1lIixQTENfTjoiVXNlciBsb2dpbiIsRVJSX046IkNhbuKAmXQgc3RhcnQgd2l0aCBfIG9yIGNvbnRhaW4gOiIsRVJSX05YOiJVc2VybmFtZSBhbHJlYWR5IGV4aXN0cyIsTEJMX1A6IlBhc3N3b3JkIixQTENfUDoiVXNlciBwYXNzc3dvcmQiLFBMQ19QX0VEOiJDaGFuZ2UgdXNlciBwYXNzc3dvcmQiLEVSUl9QOiJSZXF1aXJlZCIsTEJMX1I6IlJvbGVzIixQTENfUjoiQWRkIHJvbGVzIixFUlJfUjoiUm9sZXMgY2Fu4oCZdCBzdGFydCB3aXRoIF8iLEJUTl9TQVZFOiJTYXZlIHVzZXIiLEJUTl9ET0M6IkNyZWF0ZSBlbXB0eSBKU09O4oCmIixCVE5fQ0FOQ0VMOiJDYW5jZWwiLE1TR19PSzoiVXNlciB7MX0gc3VjY2Vzc2Z1bGx5IHNhdmVkIixNU0dfRkFJTDoiRmFpbGVkIHNhdmluZyB1c2VyIHsxfS4gU2VydmVyIHJlc3BvbmRlZCDigJh7Mn06wqB7M33igJkifSxEZWxEQjp7VFhUX1RJVExFOiJEZWxldGUgREJzIixUWFRfVElUTEUxOiJEZWxldGUgREIiLFBMQ19EQlM6IlNlbGVjdCBEQnMgdG8gZGVsZXRlIixFUlJfREJTOiJTZWxlY3QgYXQgbGVhc3Qgb25lIERCIixMQkxfTkVXOiJSZS1jcmVhdGUgREJzIGFmdGVyIGRlbGV0aW9uIixMQkxfTkVXX0FDTDoiQXBwbHkgb3JpZ2luYWwgc2VjdXJpdHkgb2JqZWN0cyIsTEJMX05FV19RTlA6IlJlc3RvcmUgc2hhcmRpbmcgc2V0dGluZ3MiLFRYVF9XQVJOOmZ1bmN0aW9uKHgpe3ZhciBhPU9iamVjdC5jbG9uZSh4KTtyZXR1cm4gYS5zY291bnQ9YS5jb3VudDwyPyIiOiJzIixhLnNpemU9KCthLnNpemUpLmJ5dGVzKDEpLnJlcGxhY2UoL0IkLywiYiIpLGEuZGlzaz0oK2EuZGlzaykuYnl0ZXMoMSkucmVwbGFjZSgvQiQvLCJiIiksWyJZb3UgYXJlIGRlbGV0aW5nIHtjb3VudH0gREJ7c2NvdW50fSBjb250YWluaW5nIHtzaXplfSBvZiBkYXRhLiIsIkRlbGV0aW9uIHdpbGwgZnJlZSB+e2Rpc2t9IG9mIGRpc2sgc3BhY2UgYXQgPG5vYnI+e2Jhc2V9PC9ub2JyPi4iXS5qb2luKCIgIikuYXNzaWduKGEpfSxCVE5fU1RBUlQ6ZnVuY3Rpb24oeCl7cmV0dXJuIHg/IkRlbGV0ZSAiK3grIiBEQiIrKHg+MT8icyI6IiIpOiJOb3RoaW5nIHRvIGRlbGV0ZSJ9LEJUTl9DQU5DRUw6IkNhbmNlbCIsTVNHX09LOiJTdWNjZXNzZnVsbHkgZGVsZXRlZCDigJh7MX3igJkgREIiLE1TR19GQUlMOiJGYWlsZWQgZGVsZXRpbmcgREIg4oCYezF94oCZLiBTZXJ2ZXIgcmVzcG9uZGVkIOKAmHsyfTogezN94oCZIn0sU2VjT2JqOntUWFRfVElUTEU6IkFjY2VzcyBjb250cm9sIixMQkxfREJTOiJEQnMiLFBMQ19EQlM6IlNlbGVjdCBEQiBuYW1lcyB0byBzZXQgQUNMIixFUlJfREJTOiJTZWxlY3QgYXQgbGVhc3Qgb25lIERCIixUWFRfQURNOiJBZG1pbmlzdHJhdG9ycyIsTEJMX1VBRE06IlVzZXJzIixQTENfVUFETToiVXNlciBuYW1lcyIsTEJMX0dBRE06IlJvbGVzIixQTENfR0FETToiUm9sZXMgd2l0aCBhZG1pbiBhY2Nlc3MiLEVSUl9BRE06IkludmFsaWQgbmFtZSIsRVJSX1VOQU1FOiJOYW1lcyBjYW7igJl0IHN0YXJ0IHdpdGggXyBvciBjb250YWluIDoiLFRYVF9NRU06Ik1lbWJlcnMiLFBMQ19VTUVNOiJVc2VyIG5hbWVzIixQTENfR01FTToiUm9sZXMgd2l0aCBtZW1iZXIgYWNjZXNzIixCVE5fU1RBUlQ6IlNldCBzZWN1cml0eSIsQlROX0NBTkNFTDoiQ2FuY2VsIixNU0dfT0s6IlNlY3VyaXR5IG9iamVjdCBmb3IgREIg4oCYezF94oCZIHVwZGF0ZWQiLE1TR19GQUlMOiJGYWlsZWQgdXBkYXRpbmcgc2VjdXJpdHkgb2JqZWN0IGZvciBEQiDigJh7MX3igJkuIFNlcnZlciByZXNwb25kZWQg4oCYezJ9OiB7M33igJkifSxMb2dpbjp7VFhUX0xPR0lOOiJMb2cgaW4iLFBMQ19VTkFNRToiVXNlcm5hbWUiLFBMQ19QV0Q6IlBhc3N3b3JkIixCVE5fTE9HSU46IkNyZWF0ZSBzZXNzaW9uIixCVE5fQ0FOQ0VMOiJDYW5jZWwiLE1TR19BVVRIX09LOiJBdXRob3JpemVkIGFzIHsxfSIsTVNHX0FVVEhfRkFJTDoiQXV0aG9yaXphdGlvbiBhcyB7MX0gZmFpbGVkLiBTZXJ2ZXIgcmVzcG9uZGVkIHsyfTrCoHszfSJ9LExvZ291dDp7VFhUX0xPR09VVDoiTG9nIG91dCBhbmQgcmVsb2FkIixUWFRfUFJPRklMRToiT3BlbiB1c2VyIHByb2ZpbGUgZG9jIixNU0dfTE9HT1VUX1NUQVJUOiJMb2dnaW5nIG91dC4uLiIsTVNHX0xPR09VVF9PSzoiWW91IHdhcyBsb2dnZWQgb3V0IHN1Y2Nlc3NmdWxseSIsTVNHX0xPR09VVF9GQUlMOiJMb2cgb3V0IGZhaWxlZC4gU2VydmVyIHJlc3BvbmRlZCB7MX06wqB7Mn0iLFRYVF9DTEVBUl9WU1RBVEU6IkNsZWFyIGxvY2FsIHNldHRpbmdzLi4uIixIRFJfQ0xFQVJfRExHOiJDbGVhciBsb2NhbCBzZXR0aW5ncyIsVFhUX0NMRUFSX0RMRzoiUmVtb3ZlIFBob3RvbiBzZXR0aW5ncyBzdG9yZWQgaW4gdGhpcyBicm93c2VyIGxvY2FsIHN0b3JhZ2U6IixPUFRfQ0xFQVJfRExHOltbIkZvcmdldCBhbGwgb3BlbiB0YWJzIiwiY3cuUGhvdG9uLlRhYkNsb3NlSGlzdG9yeSJdLFsiUmVzZXQgREIgZ3JvdXAgZm9sZHMiLCJjdy5QaG90b24uREJzLkdyb3VwcyJdLFsiRm9yZ2V0IERCIGZhdm9yaXRlcyIsImN3LlBob3Rvbi5EQnMuU3RhcnMiXSxbIkZvcmdldCB2aWV3IGdyaWQgZmllbGRzIiwiY3cuUGhvdG9uLlZpZXdTdGF0ZS4iXSxbIkZvcmdldCBkb2Mgdmlld3N0YXRlcyIsImN3LlN5cy5KU09OLnZpZXdzdGF0ZS4iXSxbIlJlc2V0IHRhc2sgZ3JvdXAgZm9sZHMiLCJjdy5QaG90b24uVGFza3MuRm9sZCJdLFsiRm9yZ2V0IHN0b3JlZCBNYW5nbyBxdWVyaWVzIiwiY3cuUGhvdG9uLk1hbmdvLiIsITFdLFsiRm9yZ2V0IHN0b3JlZCBTUUwgcXVlcmllcyIsImN3LlBob3Rvbi5TUUwuIiwhMV1dLEJUTl9DTEVBUl9PSzoiQ2xlYXIgYW5kIHJlbG9hZCIsQlROX0NMRUFSX05POiJDYW5jZWwiLE1TR19WU1RBVEVfQ0xFQU5FRDoiTG9jYWwgdmlld3N0YXRlIGNhY2hlIGNsZWFuZWQifSxUYWI6e0JUTl9DTE9TRVRBQjoiQ2xvc2UgdGFiIn0sTmV3REI6e1RYVF9USVRMRToiQ3JlYXRlIERCcyIsVFhUX1RJVExFMToiQ3JlYXRlIERCIixMQkxfREJTOiJOYW1lcyIsUExDX0RCUzoiREJzIHRvIGNyZWF0ZSIsRVJSX0RCX0VYSVNUOiJEQiB7MX0gYWxyZWFkeSBleGlzdHMiLEVSUl9EQl9OQU1FOiJPbmx5IGxvd2VyY2FzZSBhLXosIDAtOSBhbmQgXyQoKSstLyBhcmUgYWxsb3dlZCIsRVJSX0RCX1VORDoiREIgbmFtZXMgbXVzdCBzdGFydCB3aXRoIGxvd2VyY2FzZSBhLXoiLFRYVF9BRE06IkFkbWluaXN0cmF0b3JzIixMQkxfVUFETToiVXNlcnMiLFBMQ19VQURNOiJVc2VyIG5hbWVzIixMQkxfR0FETToiUm9sZXMiLFBMQ19HQURNOiJSb2xlcyB3aXRoIGFkbWluIGFjY2VzcyIsRVJSX0FETToiSW52YWxpZCBuYW1lIixFUlJfVU5BTUU6Ik5hbWVzIGNhbuKAmXQgc3RhcnQgd2l0aCBfIG9yIGNvbnRhaW4gOiIsVFhUX01FTToiTWVtYmVycyIsUExDX1VNRU06IlVzZXIgbmFtZXMiLFBMQ19HTUVNOiJSb2xlcyB3aXRoIG1lbWJlciBhY2Nlc3MiLExCTF9DTFVTVEVSOiJTdG9yYWdlIixUWFRfU0hBUkRTOmZ1bmN0aW9uKHgpe3JldHVybiJzaGFyZCIrKHg+MT8icyI6IiIpfSxUWFRfQ09QSUVTOmZ1bmN0aW9uKHgpe3JldHVybiJkYXRhIGNvcCIrKHg8Mj8ieSI6ImllcyIpfSxUWFRfUEFSVElUSU9OUzoicGFydGl0aW9uZWQiLEJUTl9TVEFSVDoiQ3JlYXRlIERCcyIsQlROX1NUQVJUX1BVQkxJQzoiQ3JlYXRlIHB1YmxpYyBEQnMiLEJUTl9DQU5DRUw6IkNhbmNlbCJ9LENvbXBhY3Q6e1RYVF9USVRMRToiQ29tcGFjdCBEQnMiLFRYVF9USVRMRTE6IkNvbXBhY3QgREIiLFRYVF9EQkxJU1Q6ZnVuY3Rpb24oeCl7dmFyIGE9eC5sZW5ndGg7cmV0dXJuIllvdSBhcmUgZ29pbmcgdG8gY29tcGFjdCB7MX0gYnVja2V0ezJ9OiAiLmFzc2lnbihhLGE8Mj8iIjoicyIpK3gubWFwKGZ1bmN0aW9uKHgpe3JldHVybiB4LmVzY2FwZUhUTUwoKX0pLmpvaW4oIiwgIil9LFBMQ19EQlM6IlNlbGVjdCBEQnMgdG8gY29tcGFjdCIsUExDX0RET0NTOiJTZWxlY3QgZGRvY3MgZm9yIHZpZXcgY29tcGFjdGlvbiIsRVJSX0RCUzoiU2VsZWN0IGF0IGxlYXN0IG9uZSBEQiIsRVJSX0RET0NTOiJTZWxlY3QgYXQgbGVhc3Qgb25lIGRlc2lnbiBkb2MiLFRBR19PUDpbeyJTdHJpcCBvbGQgcmV2cyI6ImRvY3MifSx7IlN0cmlwIG9sZCB2aWV3cyI6InZpZXdzIn0seyJDb21wYWN0IHZpZXdzIjoiZGRvY3MifV0sRVJSX09QOiJTZWxlY3QgYXQgbGVhc3Qgb25lIGFjdGlvbiIsRVJSX1ZDOiJWaWV3IGNvbXBhY3Rpb24gcmVxdWlyZXMgc2VsZWN0aW5nIGRkb2NzLCBzbyBpdOKAmXMgdW5hdmFpbGFibGUgZm9yIG11bHRpcGxlIERCcyBzZWxlY3RlZCIsQlROX1NUQVJUOiJTdGFydCBjb21wYWN0aW9uIixCVE5fQ0FOQ0VMOiJDYW5jZWwiLE1TR19DT01QQUNUX1NUQVJUOiJTdGFydGVkIGNvbXBhY3Rpb24gb2Yg4oCYezF94oCZIixNU0dfQ09NUEFDVF9GQUlMOiJGYWlsZWQgc3RhcnRpbmcgY29tcGFjdGlvbiBvZiDigJh7MX3igJkuIFNlcnZlciByZXNwb25kZWQg4oCYezJ9OsKgezN94oCZIixNU0dfQ09NUEFDVF9GQUlMX1NPTUU6IkVycm9ycyBzdGFydGluZyBhdCBsZWFzdCBvbmUgY29tcGFjdGlvbiB0YXNrLiBDaGVjayBjb25zb2xlIGZvciBkZXRhaWxzLiJ9LCRzdGF0czp7fSwkdmlldzp7TVNHX0xPQURJTkc6IkxvYWRpbmcuLi4iLE9QVF9BTExET0NTOiJBbGwgZG9jdW1lbnRzIixPUFRfRERPQ1M6IkRlc2lnbiBkb2N1bWVudHMiLE9QVF9DSEFOR0VTOiJDaGFuZ2VzIGZlZWQiLE9QVF9MT0NBTDoiTG9jYWwgZG9jdW1lbnRzIixPUFRfQ09ORkxJQ1RTOiJEb2N1bWVudHMgdy9jb25mbGljdHMiLE9QVF9NUVJJRVM6IkxvY2FsIE1hbmdvIHF1ZXJpZXMiLE9QVF9NSU5ESUNFUzoiTWFuZ28gaW5kaWNlcyIsT1BUX1NRTFFSSUVTOiJMb2NhbCBTUUwgcXVlcmllcyIsVFhUX0ZST006ImZyb20iLFBMQ19TVEFSVEtFWToiU3RhcnQga2V5IG9yIF81IHRvIHNraXAgNSIsVElQX1NISUZUX01JTlVTOiJTaGlmdCBmcmFtZSBiYWNrd2FyZCIsVElQX1NISUZUX1BMVVM6IlNoaWZ0IGZyYW1lIGZvcndhcmQiLFRJUF9DTEVBUl9GSUxURVI6IkNsZWFyIHN0YXJ0a2V5IixUSVBfVVA6Ik9wZW4gezF9IGRvYyBsaXN0IixUSVBfUkVMT0FEOiJSZWxvYWQiLEJUTl9ORVdET0M6Ik5ldyBkb2PigIkiLEJUTl9ORVdET0NfUE9QVVA6Ik5ldyBkb2PigKYiLEJUTl9ORVdVU0VSX0RMRzoiTmV3IHVzZXLigKYiLEJUTl9ORVdJRFg6IkFkZCB2aWV34oCmIixCVE5fQ09QWURPQ1M6IkNvcHkvZHVtcOKApiIsQlROX0RFTDA6IkRlbOKApiIsQlROX0RFTERPQ1M6J0RlbDxzcGFuIGNsYXNzPSJ3MTI4MHBsdXMiPiBkb2NzPC9zcGFuPuKApicsQlROX0RFTDFET0M6J0RlbDxzcGFuIGNsYXNzPSJ3MTI4MHBsdXMiPiBkb2M8L3NwYW4+4oCmJyxCVE5fQUNMOiJBQ0zigKYiLEJUTl9DT01QQUNUOiJDb21wYWN04oCmIixCVE5fQ0FOQ0VMOiJDYW5jZWwiLEJUTl9ORVdNSURYOiJDcmVhdGUgaW5kZXjigKYiLFRJUF9DTE9TRUpTT046IkNsb3NlIEpTT04iLFRJUF9BRERDT0w6IkFkZCBjb2x1bW4iLFBMQ19TRUFSQ0g6IlNlYXJjaCIsVFhUX0REU1RBVFM6JzxzcGFuPkluZGV4IGRhdGE6wqB7Mn08L3NwYW4+IDxzcGFuIGNsYXNzPSJtbDE1Ij5JbmRleCBkaXNrIHNpemU6wqB7MX08L3NwYW4+JyxFUlJfR0VUVklFV1M6IkZhaWxlZCByZWFkaW5nIGxpc3Qgb2YgdmlldyBmdW5jdGlvbnMgZm9yIHsxfSBEQi4iLEVSUl9HRVRBQ0w6IkZhaWxlZCByZWFkaW5nIHNlY3VyaXR5IG9iamVjdCIsVFhUX0VNUFRZOiJTZXJ2ZXIgcmVzcG9uZGVkIHdpdGggZW1wdHkgbGlzdCIsVFhUX05PVEZPVU5EOiJOb3RoaW5nIGZvdW5kIixUWFRfTUFQVklFVzpmdW5jdGlvbih4LGEsYixjKXtpZigheCYmIWEpcmV0dXJuIk5vIHJvd3MiO3ZhciBkPSIiO3JldHVybiBudWxsPT1iPyhkPSJ7MX0gb2YgezJ9Ii5hc3NpZ24oeCxhKSxjfHwoZCs9IiByb3ciKygxIT1hPyJzIjoiIikpKTooZD0nRm91bmQgPHNwYW4gY2xhc3M9InZpZXctZm91bmQgcGwzIHByMyI+JytiKyI8L3NwYW4+IixjfHwoZCs9IiByb3ciKygxIT1iPyJzIjoiIikpKSxkfSxCVE5fVklFV0NPREU6IkNvZGUiLEJUTl9WSUVXQ09ERV9HTTonPHNwYW4gY2xhc3M9ImZpLWFsaWduLWxlZnQgcGwxIHByMSBvODAiPjwvc3Bhbj4nLFRJUF9WSUVXQ09ERToiRWRpdCB2aWV3aW5kZXggb3IgcXVlcnkgc291cmNlIGNvZGUiLEJUTl9HUkVEVUNFX0dNOic8c3BhbiBjbGFzcz0iZmktc2FmZXR5LWNvbmUgZGliIHZhdCByb3QxODAgbzkwIGZzOTUiPjwvc3Bhbj4nLFRJUF9HUkVEVUNFOiJDbGljayB0byB0dXJuIHJlZHVjZSBvbiIsTVNHX1NUQVJUX0NIQU5HRToiU3RhcnRpbmcgZnJvbSBrZXkgezF9IixFUlJfTk9UQVVTRVI6Ik5vdCBhIHVzZXIiLFRYVF9TRUxFQ1Q6IlNlbGVjdCB7MX0iLFRYVF9VTlNFTEVDVDoiVW5zZWxlY3QgezF9IixUWFRfVU5TRUxFQ1RfT0Y6J1VuY2hlY2sgezF9PHNwYW4gY2xhc3M9InBsMSBmczgwIGxoMTUwIGRpYiB2YXQgbzYwIG1yLTMiPjp7Mn08L3NwYW4+JyxUWFRfU0VMRUNUX0FMTDoiYWxsIixUWFRfU0VMRUNUX0ZJTFRFUjoiZm91bmQiLFRJUF9BTkNIT1I6Ik9wZW4gSlNPTiBpbiBuZXcgYnJvd3NlciB0YWIiLFRBR19SRURVQ0U6e3RhZ3M6W1t7Ikdyb3VwIG5vbmUiOiIwIn0seyLigIlMMeKAiSI6IjEifSx7IuKAiUwy4oCJIjoiMiJ9LHsi4oCJTDPigIkiOiIzIn0seyLigIlMNOKAiSI6IjQifSx7IuKAiUw14oCJIjoiNSJ9LHtFeGFjdDoiOTkifV1dLGVtcHR5OnsiTm8gcmVkdWNlIjoiIn0sZ3JvdXBzaGltOiIiLHRhZ3NoaW06IiJ9LFNFTF9SRURVQ0U6W3tpZDoiIix0ZXh0OiJObyByZWR1Y2UifSx7aWQ6IjAiLHRleHQ6IlJlZHVjZSBhbGwifSx7aWQ6IjEiLHRleHQ6IlJlZHVjZSBMMSJ9LHtpZDoiMiIsdGV4dDoiUmVkdWNlIEwyIn0se2lkOiIzIix0ZXh0OiJSZWR1Y2UgTDMifSx7aWQ6IjQiLHRleHQ6IlJlZHVjZSBMNCJ9LHtpZDoiNSIsdGV4dDoiUmVkdWNlIEw1In1dLFRBR19XSVRIRE9DUzp7dGFnczpbeyJJbmNsdWRlIGRvY3MiOiJkb2NzIn1dLGVtcHR5OnsiUmV2cyBvbmx5IjoiIn0sZ3JvdXBzaGltOiIiLHRhZ3NoaW06IiJ9LFRYVF9ERUxfVElUTEU6IkJ1bGsgZGVsZXRlIGRvY3MiLFRYVF9ERUxfV0FSTjpmdW5jdGlvbih4LGEpe3JldHVybiJZb3UgYXJlIGdvaW5nIHRvIGRlbGV0ZSAiK3grIiBkb2MiKyh4PjE/InMiOiIiKSsiIGZyb20gdGhlIOKAmCIrYSsi4oCZIERCLiJ9LFRYVF9ERUxfV0FSTl9ISURERU46ZnVuY3Rpb24oeCxhKXtyZXR1cm4iT25seSAiK2ErIiBkb2MiKyhhPjE/InMiOiIiKSsiIG9mICIreCsiIHNlbGVjdGVkICIrKDE9PWE/ImlzIjoiYXJlIikrIiB2aXNpYmxlIGluIGN1cnJlbnQgc2NvcGUsIGJlIGNhcmVmdWwuIn0sQlROX0RFTF9TVEFSVDoiUHJvY2VlZCIsTEJMX0RFTF9BTEw6IkRlbCBkb2NzIGFuZCB0aGVpciBjb250ZW50IixMQkxfREVMX1JFVEFJTjoiTWFyayBkb2NzIGFzIGRlbGV0ZWQsIGJ1dCByZXRhaW4gY29udGVudCIsTEJMX0RFTF9QVVJHRToiUHVyZ2UgZG9jcyBjb21wbGV0ZWx5IixNU0dfREVMX09LOmZ1bmN0aW9uKHgsYSxiLGMpe3ZhciBkPSIgZnJvbSB0aGUg4oCYIitiKyLigJkgREIiO3JldHVybiBhPT14P2Q9IlN1Y2Nlc3NmdWxseSAiKygicHVyZ2UiIT1jPyJkZWxldGVkICI6InB1cmdlZCAiKSthKyIgZG9jIisoYT4xPyJzIjoiIikrZDooZD0iRGVsZXRlZCAiK2ErIiBkb2MiKyhhPjE/InMiOiIiKStkKyIsIGJ1dCBmYWlsZWQgdG8gZGVsZXRlICIrKHgtYSkrIiBkb2MiKyh4LWE+MT8icyI6IiIpKyIuICIsZCs9IlBvc3NpYmx5LCBkZWxldGlvbiB3YXMgZGVuaWVkIGJ5IHZhbGlkYXRlIGZ1bmN0aW9uLCBvciBkb2MiKyh4LWE+MT8icyB3ZXJlIjoiIHdhcyIpKyIgYWxyZWFkeSBkZWxldGVkLiAiLGQrPSJTZWUgY29uc29sZSBmb3IgZGV0YWlscy4iKSxkfSxNU0dfREVMX0ZBSUw6IkZhaWxlZCBkZWxldGluZyBkb2Nz4oCZLiBTZXJ2ZXIgcmVzcG9uZGVkIOKAmHsxfTogezJ94oCZIn0sJGRiczp7VElQX1JFTE9BRDoiUmVsb2FkIERCIGxpc3QiLEJUTl9ORVdEQjoiTmV3IERC4oCmIixCVE5fQ09NUEFDVDoiQ29tcGFjdOKApiIsQlROX0RFTERCOiJEZWxldGXigKYiLEJUTl9EVU1QOiImbmJzcDtaaXDigKYmbmJzcDsiLEJUTl9VTkRVTVA6IlJlc3RvcmXigKYiLEJUTl9TVEFUUzoiU3RhdHPigIkiLEJUTl9DQU5DRUw6IkNhbmNlbCIsUExDX1NFQVJDSDoiU2VhcmNoIixQTENfU0VBUkNIX0RCUzoiU2VhcmNoIERCcyIsUExDX1NFQVJDSF9UQVNLUzoiU2VhcmNoIHRhc2tzIixUWFRfREJTVklFVzpmdW5jdGlvbih4LGEsYil7dmFyIGM9IiI7cmV0dXJuIGM9eHx8YT94PT1hP3grIiBEQiIrKGE+MT8icyI6IiIpOng+MWU0fHxhPjFlND8iezF9IC8gezJ9Ii5hc3NpZ24oeCxhKTp4Pjk5JiZhPjk5fHx4Pjk5OXx8YT45OTk/InsxfSBvZiB7Mn0iLmFzc2lnbih4LGEpOiJ7MX0gb2YgezJ9IERCIi5hc3NpZ24oeCxhKSsoYT4xPyJzIjoiIik6Ik5vIERCcyIsYiYmKGMrPSIgIitiKSxjfSxUWFRfVEFTS1ZJRVc6ZnVuY3Rpb24oeCxhKXtyZXR1cm4geHx8YT8oeD09YT8iezF9IHRhc2siOiJ7MX0gb2YgezJ9IHRhc2siKS5hc3NpZ24oeCxhKSsoYT4xPyJzIjoiIik6Ik5vIHRhc2tzIn0sVElQX0RCU0laRToiRGF0YTogezF9XG5EaXNrOiB7Mn0iLE1TR19ORVdEQl9TVEFSVDoiQ3JlYXRlZCBuZXcgREIg4oCYezF94oCZIixNU0dfTkVXREJfRkFJTDoiRmFpbGVkIGNyZWF0aW5nIERCIOKAmHsxfeKAmS4gU2VydmVyIHJlc3BvbmRlZCDigJh7Mn06IHszfeKAmSIsTVNHX05FV0RCX05PQUNMOiJEQiDigJh7MX3igJkgY3JlYXRlZCwgYnV0IHNldHRpbmcgc2VjdXJpdHkgY29uZmlnIGZhaWxlZCwgc28gREIgaXMgcHVibGljLiBTZXJ2ZXIgcmVzcG9uZGVkIOKAmHsyfTrCoHszfeKAmSIsVFhUX1NFTEVDVDoiU2VsZWN0IHsxfSIsVFhUX1VOU0VMRUNUOiJVbnNlbGVjdCB7MX0iLFRYVF9TRUxFQ1RfQUxMOiJhbGwiLFRYVF9TRUxFQ1RfRklMVEVSOiJmaWx0ZXJlZCIsSF9ET0NTOiJEb2NzIixIX0RFTERPQ1M6IkRlbGV0ZWQiLEhfU0VROiJTZXEiLEhfU0laRToiRGlzayIsVElQX0RPQ19JTkZPOiJTaG93IERCIGluZm8iLFRJUF9CVE5fQUNMOiJFZGl0IERCIGFjY2VzcyBjb250cm9sIGxpc3QiLFRJUF9CVE5fU1RBUjoiQWRkL3JlbW92ZSB0byBmYXZvcml0ZXMsIHNob3duIGF0IHRoZSB0b3Agb2YgdGhlIGxpc3QiLFRJUF9CVE5fSU5GTzoiU2hvdyBEQiBpbmZvIEpTT04iLFRJUF9DTE9TRUpTT046IkNsb3NlIEpTT04iLFRYVF9EQklORk9fTE9BRDoiTG9hZGluZy4uLiIsRVJSX0RCSU5GTzoiRXJyb3IgcmVhZGluZyBEQiBpbmZvIixUWFRfVEFTS19USVRMRToiVGFza3MiLFRBR1NfVEFTS19UWVBFOnt0YWdzOltbe0FjdGl2ZToiYWN0aXZlIn1dLFt7U3luYzoicmVwbGljYXRpb24ifSx7Q29tcGFjdGlvbjoiY29tcGFjdGlvbiJ9XV0sZW1wdHk6eyLigIlBbGzigIkiOiIifX0sVElQX1RBU0tfUkVMT0FEOiJSZWxvYWQgdGFza3MiLEJUTl9UQVNLX05FV1NZTkM6Ik5ldyBzeW5j4oCmIixCVE5fVEFTS18xREI6IlN5bmMgRELigKYiLEJUTl9UQVNLX0RCUzoiU3luYyBEQnPigKYiLEJUTl9UQVNLX1JFU1lOQzoiUmVzdGFydOKApiIsVFhUX1RfU0VMRUNUOiJTZWxlY3QgezF9IixUWFRfVF9VTlNFTEVDVDoiVW5zZWxlY3QgezF9IixUWFRfVF9TRUxFQ1RfQUxMOiJhbGwiLFRYVF9UX1NFTEVDVF9GSUxURVI6ImZpbHRlcmVkIixUWFRfVEFTS19SRVNZTkNfVElUTEU6IlJlc3RhcnQgcmVwbGljYXRpb25zIixUWFRfVEFTS19SRVNZTkNfV0FSTjpmdW5jdGlvbih4LGEsYil7cmV0dXJuJ1lvdSBhcmUgZ29pbmcgdG8gcmVzdGFydCA8c3BhbiBjbGFzcz0iYm9sZGVyIj4nK3grIjwvc3Bhbj4gc3luYyB0YXNrIisoeD4xPyJzIjoiIikrIi4gVGFzayBkb2MiKyh4PjE/InMiOiIiKSsiIGluICIrYisiIERCIHdpbGwgYmUgZGVsZXRlZCwgYW5kIHRoZW4gcmUtY3JlYXRlZC4ifSxCVE5fVEFTS19QUk9DRUVEOiJQcm9jZWVkIixNU0dfVEFTS19SRVNZTkM6IlN5bmMgZG9jcyBkZWxldGVkLCB0YXNrcyBzdG9wcGVkLiBUcnlpbmcgdG8gcmVzdGFydCBzeW5jIHRhc2tzLi4uIixNU0dfVEFTS19SRVNZTkNfT0s6IlN5bmMgdGFza3MgcmVzdGFydGVkIixFUlJfVEFTS19SRVNZTkM6IkVycm9yIHJlc3RhcnRpbmcgc3luYyB0YXNrcywgc2VydmVyIHJlc3BvbmRlZCB7MX0iLEJUTl9UQVNLX1NUT1A6IlJlbW92ZeKApiIsVFhUX1RBU0tfU1RPUF9USVRMRToiU3RvcC9yZW1vdmUgcmVwbGljYXRpb24gdGFza3MiLFRYVF9UQVNLX1NUT1BfV0FSTjpmdW5jdGlvbih4LGEsYil7dmFyIGM9eCthLGQ9J1lvdSBhcmUgZ29pbmcgdG8gc3RvcCBhbmQgcmVtb3ZlIDxzcGFuIGNsYXNzPSJib2xkZXIiPicrYysiPC9zcGFuPiBzeW5jIHRhc2siKyhjPjE/InMiOiIiKSsiLiAiO3JldHVybiB4PjAmJihkPWQrIlRhc2sgZG9jIisoeD4xPyJzIjoiIikrIiBpbiAiK2IrIiBEQiB3aWxsIGJlIGRlbGV0ZWQuIiksZH0sTVNHX1RBU0tfU1RPUDoiU3luYyBkb2NzIGRlbGV0ZWQsIHRhc2tzIHN0b3BwZWQiLEVSUl9UQVNLX1NUT1A6IkVycm9yIHN0b3BwaW5nIHRhc2tzLCBzZXJ2ZXIgcmVzcG9uZGVkIHsxfSJ9LCRkb2M6e1RYVF9MT0FESU5HOiJMb2FkaW5nIGRvY3VtZW50Li4uIixUWFRfUkVWOiJMYXRlc3QgcmV2aXNpb24iLFBMQ19TRUFSQ0g6IlNlYXJjaCIsVElQX1VQOiJPcGVuIHsxfSBEQiBkb2MgbGlzdCIsVElQX1JFTE9BRDoiUmVsb2FkIixUSVBfRE9DSlNPTjoiT3BlbiB7MX0gSlNPTiBpbiBuZXcgYnJvd3NlciB0YWIiLEJUTl9TQVZFOiLigIlTYXZlwqAiLEJUTl9TQVZFQVM6IkNsb25l4oCmIixCVE5fREVMOiJEZWzigKYiLEJUTl9ESUZGOiJEaWZm4oCJIixCVE5fQ0FOQ0VMOiJDYW5jZWwiLFRYVF9ISVNUX1RJVExFOiJFZGl0IGhpc3RvcnkiLFRYVF9ISVNUX0VNUFRZOiJDaGFuZ2UgaGlzdG9yeSBpcyBlbXB0eSIsQlROX0hJU1RfQ0xFQVI6IkNsZWFyIixCVE5fSElTVF9VTkRPOiLigIlVbmRv4oCJIixNU0dfU0FWRToiRG9jIHsxfSB3YXMgc3VjY2Vzc2Z1bGx5IHNhdmVkIHdpdGggcmV2aXNpb24gezJ9IixFUlJfU0FWRToiRXJyb3Igc2F2aW5nIGRvYywgc2VydmVyIHJlc3BvbmRlZCB7MX0iLEVSUl9TQVZFTE9BRDoiRG9jIHdhcyBzYXZlZCwgaG93ZXZlciBsb2FkaW5nIGl0IGFmdGVyIHNhdmUgZmFpbGVkLiBTZXJ2ZXIgcmVzcG9uZGVkIHsxfSIsTVNHX0VEUzoiVGhlcmUgYXJlIGFjdGl2ZSBlZGl0b3JzIGNvbnRhaW5pbmcgbm90IHlldCBhcHBsaWVkIGNoYW5nZXMuIixCVE5fRURTX1lFUzoiQXBwbHkgY2hhbmdlcyBhbmQgc2F2ZcKgIixCVE5fRURTX05POiJEaXNjYXJkIGFuZCBzYXZlwqAiLE1TR19DT05GTElDVDonPGRpdiBjbGFzcz0iZnMxMzAgbGgxNTAgbWIyIGJvbGRlciBvcmFuZ2UiPkNvbmZsaWN0PC9kaXY+Q29uZmxpY3Qgc2F2aW5nIGRvYyDigJh7MX3igJkgPGJyPjxzcGFuIGNsYXNzPSJkaWIgdzE0MCI+WW91ciByZXY6IDwvc3Bhbj48bm9icj57Mn08L25vYnI+IDxicj48c3BhbiBjbGFzcz0iZGliIHcxNDAiPkRCIHJldjogICA8L3NwYW4+PG5vYnI+ezN9PC9ub2JyPi4nLEJUTl9DT05GTElDVF9ZRVM6Ik92ZXJ3cml0ZSBEQiBkb2MiLEJUTl9DT05GTElDVF9OTzoiQ2FuY2VsIHNhdmUiLE1TR19DT05GTElDVF9DQU5DRUxMRUQ6IkNhbmNlbGxlZCwgZG9jIHdhcyBub3Qgc2F2ZWQiLE1TR19DT05GTElDVF9MT0FERkFJTDoiRmFpbGVkIGxvYWRpbmcgY29uZmxpY3RpbmcgcmV2aXNpb24sIGRvYyBjYW4gbm90IGJlIHNhdmVkIixUWFRfREVMX1RJVExFOiJEZWxldGUgZG9jIixUWFRfREVMX1RJVExFX0NPTkZMSUNUOiJEZWxldGUgZG9jIGNvbmZsaWN0IixUWFRfREVMX1dBUk46IllvdSBhcmUgZ29pbmcgdG8gZGVsZXRlIGRvYyA8bm9icj7igJh7MX3igJk8L25vYnI+IGZyb20gdGhlIOKAmHsyfeKAmSBEQi4iLEJUTl9ERUxfU1RBUlQ6IlByb2NlZWQiLFRYVF9ERUxfTk9ERUw6Ik5vdGUsIHRoYXQgdGhlIGRvYyBoYXMgY29uZmxpY3QgcmV2aXNpb25zLCBhbmQgb25lIG9mIHRoZW0gcHJvYmFibHkgYmVjb21lIGFjdGl2ZSBhZnRlciBkZWxldGlvbi4iLFRYVF9ERUxfQ09ORkxJQ1Q6Ik5vdGUsIHRoYXQgeW91IGFyZSBkZWxldGluZyBjb25mbGljdCByZXZpc2lvbiwgaXQgd2lsbCBub3QgYWZmZWN0IGFjdGl2ZSB2ZXJzaW9uIG9mIHRoZSBkb2MuIixMQkxfREVMX0FMTDoiRGVsIGRvYyBhbmQgaXRzIGNvbnRlbnQiLExCTF9ERUxfUkVUQUlOOiJNYXJrIGRvYyBhcyBkZWxldGVkLCBidXQgcmV0YWluIGNvbnRlbnQiLExCTF9ERUxfUFVSR0U6IlB1cmdlIGRvYyBjb21wbGV0ZWx5IixNU0dfREVMX09LOiJTdWNjZXNzZnVsbHkgZGVsZXRlZCBkb2Mg4oCYezF94oCZIGZyb20gdGhlIOKAmHsyfeKAmSBEQiIsTVNHX0RFTF9GQUlMOiJGYWlsZWQgZGVsZXRpbmcgZG9jIOKAmHsxfeKAmS4gU2VydmVyIHJlc3BvbmRlZCDigJh7Mn06IHszfeKAmSIsTVNHX0RFTF9SRUxPQUQ6IlVwZGF0ZWQgbGF0ZXN0IGFjdGl2ZSByZXZpc2lvbiBvZiB0aGUgZG9jIixNU0dfREVMX1JFTE9BRF9GQUlMOiJGYWlsZWQgcmVhZGluZyBhY3RpdmUgcmV2IG9mIGRvYyDigJh7MX3igJkuIFNlcnZlciByZXNwb25kZWQg4oCYezJ9OiB7M33igJkiLFRJUF9CVE5fRExaSVA6IkRvd25sb2FkIGRvYyBhbmQgYXR0YWNoZWQgZmlsZXMgYXMgWklQIixNU0dfRExaSVBfTk9aSVA6IllvdXIgYnJvd3NlciBjYW7igJl0IGNyZWF0ZSBaSVAsIHNvcnJ5LiIsTVNHX0RMWklQX1JFQUQxOiJSZWFkaW5nIGFuZCBjb21wcmVzc2luZyB0aGUgZG9jLi4uIixNU0dfRExaSVBfUkVBRDI6IlJlYWRpbmcgYW5kIGNvbXByZXNzaW5nIHRoZSBkb2MgYW5kIGF0dGFjaGVkIGZpbGVzLi4uIixNU0dfRExaSVBfRVJST1I6IkVycm9yIGNyZWF0aW5nIGFyY2hpdmUiLE1TR19ETFpJUF9PSzoiRG9uZSBjb21wcmVzc2luZyBkb2MgdG8gWklQIixUWFRfRExHQUREOiJBZGQgZmlsZXMiLEJUTl9BVFRBQ0g6IkF0dGFjaCBmaWxlcyIsVFhUX0FEREZJTEVTOiJEcmFnIGZpbGVzIGhlcmUgb3IgY2xpY2sgdG8gc2VsZWN0IixUWFRfQURETU9SRToiRHJhZyBtb3JlIGZpbGVzIGhlcmUgb3IgY2xpY2sgdG8gc2VsZWN0In0sJGZpbGU6e1BMQ19TRUFSQ0g6IlNlYXJjaCIsVElQX1VQOiJPcGVuIHBhcmVudCBkb2MiLFRJUF9SRUxPQUQ6IlJlbG9hZCIsQlROX1NBVkU6IlNhdmUgZmlsZSAiLEJUTl9TQVZFQVM6IlNhdmUgYXPigKYiLEJUTl9ERUw6IkRlbGV0ZeKApiIsQlROX0NBTkNFTDoiQ2FuY2VsIixNU0dfU0FWRToiRmlsZSB7MX0gd2FzIHN1Y2Nlc3NmdWxseSBzYXZlZCBpbnRvIHsyfSIsRVJSX1NBVkU6IkVycm9yIHNhdmluZyBmaWxlIHsxfSBpbnRvIGl0cyBkb2MsIHNlcnZlciByZXNwb25kZWQgezJ9IixNU0dfU1RBVFM6ZnVuY3Rpb24oeCxhLGIpe3ZhciBjPXg9PnguZm9ybWF0KCkucmVwbGFjZUFsbCgiLCIsIuKAiuKAiiIpO3JldHVybltjKHgpKyIgbGluZSIrKDEhPXg/InMiOiIiKSxhPDJlNT9jKGEpKyIgY2hhciIrKDEhPWE/InMiOiIiKTpudWxsLGMoYikrIiBieXRlIisoMSE9Yj8icyI6IiIpXS5jb21wYWN0KCkuam9pbigiwqAgwrcgwqAiKX19LCRkaWZmOntUSVBfVVA6Ik9wZW4gezF9IERCIGRvYyBsaXN0IixUWFRfQkFOOiJTa2lwIixQTENfQkFOOiJOb2RlcyB0byBleGNsdWRlIixMQkxfU1JDOiJTaG93IHNvdXJjZSIsVFhUX1JFVjoiTGF0ZXN0IHJldmlzaW9uIixQTENfU1JDOiJTb3VyY2UgcmV2aXNpb24uLi4iLFBMQ19UR1Q6IlRhcmdldCByZXZpc2lvbi4uLiIsVFhUX05PRElGRjoiTm8gZGlmZmVyZW5jZSIsVFhUX1NFTEVDVDoiU2VsZWN0IGRpZmZlcmVudCByZXZpc2lvbnMifSwkY29uZmlnOntQTENfU0VBUkNIOiJTZWFyY2giLFBMQ19SRUxPQUQ6IlJlbG9hZCIsRVJSX1JFTE9BRDoiRXJyb3IgcmVsb2FkaW5nIGNvbmZpZy4gU2VydmVyIHJlc3BvbmRlZCB7MX06IHsyfSIsQlROX1NBVkU6IlNhdmUgY2hhbmdlcyAmbmJzcDsiLEJUTl9SRVZFUlQ6IlJldmVydCB0byBzYXZlZCAiLEJUTl9DQU5DRUw6IkNhbmNlbCIsQlROX0NMT1NFOiJDbG9zZSIsVFhUX0hJU1RfVElUTEU6IkNvbmZpZyBjaGFuZ2VzIixUWFRfSElTVF9FTVBUWToiTm8gdW5zYXZlZCBjaGFuZ2VzIixCVE5fSElTVF9VTkRPOiLigIlVbmRv4oCJIixFUlJfVkFMOntDSEFSUzoiRm9yYmlkZGVuIGNoYXJzIGluIGEga2V5LCBvbmx5IGEteiwgMC05IGFuZCBfLSEgYWxsb3dlZCIsVkFMU1RSSU5HOiJWYWx1ZSBjYW7igJl0IGJlIG51bGwsIGFycmF5IG9yIG9iamVjdCJ9LE1TR19TQVZFX09LOiJTdWNjZXNzZnVsbHkgdXBkYXRlZCBjb25maWciLE1TR19TQVZFX0ZBSUw6IkZhaWxlZCB1cGRhdGluZyBzb21lIGtleXMsIHNlZSBjb25zb2xlIGZvciBkZXRhaWxzIixNU0dfQ0xVU1RFUjoiWW91IGFyZSBvcGVyYXRpbmcgYSBjbHVzdGVyLiBQcm9wYWdhdGUgY29uZmlnIGNoYW5nZXMgdG8gYWxsIG5vZGVzPyIsQlROX1NBVkVDTFVTVEVSOiJTYXZlIHRvIGFsbCBub2RlcyIsQlROX1NBVkVOT0RFOiJTYXZlIHRvIHsxfSBvbmx5IixCQU5fSFRUUDoiS2V5IGNhbuKAmXQgYmUgY2hhbmdlZCB0aHJvdWdoIEhUVFAsIGVkaXQgbG9jYWwuaW5pIHNlcnZlcnNpZGUuIFJlYXNvbiBpcyBDVkUtMjAxNy0xMjYzNi4iLEJBTl9DTFVTVEVSOiJLZXkgY2Fu4oCZdCBiZSBjaGFuZ2VkIHVzaW5nIGFkbWluIHBhbmVsLiIsTVNHX1VOS05PV05fS0VZOiJVbmtub3duIGNvbmZpZyBrZXkiLEhFTFA6e09CSl9QQVRIUzp7VjE6Imh0dHBzOi8vZG9jcy5jb3VjaGRiLm9yZy9lbi8xLjYuMS9jb25maWcvIixWMjoiaHR0cHM6Ly9kb2NzLmNvdWNoZGIub3JnL2VuL3N0YWJsZS9jb25maWcvIixWMzoiaHR0cHM6Ly9kb2NzLmNvdWNoZGIub3JnL2VuL3N0YWJsZS9jb25maWcvIixDQjoiaHR0cHM6Ly9naXRsYWIuY29tL0NvdWNoYm94L2NvdWNoYm94In0sVFhUX0RPQ1M6Ik9mZmljaWFsIGRvY3VtZW50YXRpb24iLFRYVF9FWFQ6Ik1vcmUgZGV0YWlsc+KApiIsVFhUX05PRE9DUzoiTm8gb2ZmaWNpYWwgZG9jdW1lbnRhdGlvbiIsYWRtaW5zOntfXzoie1YyfWF1dGguaHRtbCNzZXJ2ZXItYWRtaW5pc3RyYXRvcnMiLCIiOiJDb3VjaERCIG5vZGUgYWRtaW5pc3RyYXRvcnMsIHVzZXJzIGhhdmluZyBgX2FkbWluYCByb2xlIiwiKiI6IktleSBpcyB1c2VyIG5hbWUsIHZhbHVlIGlzIHBhc3N3b3JkIGhhc2gsIG9yIG5ldyBwYXNzd29yZCBmb3IgdGhlIHVzZXIifSxhdHRhY2htZW50czp7X186IntWMn1taXNjLmh0bWwje2tleX0iLCIiOiJDb25maWd1cmF0aW9uIG9mIGF0dGFjaG1lbnQgZmlsZSBzdG9yYWdlIixjb21wcmVzc2libGVfdHlwZXM6IkNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGNvbXByZXNzaWJsZSBNSU1FIHR5cGVzIGxpa2UgYHRleHQvKiwgYXBwbGljYXRpb24vamF2YXNjcmlwdGAiLGNvbXByZXNzaW9uX2xldmVsOiJabGliIGNvbXByZXNzaW9uIGxldmVsLCBudW1iZXIgMOKAkzkifSxjaHR0cGQ6e19fOiJ7VjN9aHR0cC5odG1sI3trZXl9IiwiIjoiSFRUUCBzZXJ2ZXIgb3B0aW9ucyIsYWRtaW5fb25seV9hbGxfZGJzOiJXaGVuIGB0cnVlYCBwcmV2ZW50cyBub24tYWRtaW5zIGZyb20gYWNjZXNzaW5nIGAvX2FsbF9kYnNgIixhbGxvd19qc29ucDoiSWYgYHRydWVgIGVuYWJsZXMgSlNPTlAgc3VwcG9ydCwgYGZhbHNlYCByZWNvbW1lbmRlZCIsYXV0aGVudGljYXRpb25faGFuZGxlcnM6Ikxpc3Qgb2YgYXV0aGVudGljYXRpb24gaGFuZGxlcnMgdXNlZCBieSBDb3VjaERCIixiaW5kX2FkZHJlc3M6IklQIGFkZHJlc3MgbGlzdGVuZWQgYnkgQ291Y2hEQiIsYmFja2xvZzoiTW9jaGlXZWIgcGFyYW0sIHNvY2tldCBiYWNrbG9nIHNpemUsIGJ5dGVzIixidWxrX2dldF91c2VfYmF0Y2hlczoiU2V0IGBmYWxzZWAgdG8gZGlzYWJsZSBiYXRjaGluZyBhcyBpbiBwcmUtMy4zIixidWZmZXJfcmVzcG9uc2U6IldoYWVuIGBmYWxzZWAgcmVzcG9zZSBzdGFydHMgYWZ0ZXIgZmlyc3Qgcm93IGlzIGNhbGN1bGF0ZWQiLGNoYW5nZXNfdGltZW91dDoiQ2hhbmdlcyBmZWVkIHRpbWVvdXQsIG1pbGxpc2Vjb25kcyIsY29uZmlnX3doaXRlbGlzdDoiT25seSB3aGl0ZWxpc3RlZCB2YWx1ZXMgbWF5IGJlIGNoYW5nZWQgdmlhIHRoZSBgL19jb25maWdgIEhUVFAgZW5kcG9pbnRzIixkaXNjb25uZWN0X2NoZWNrX21zZWM6Ik1pbGxpc2Vjb25kcyBiZXR3ZWVuIGNoZWNrcyBmb3IgY2xpZW50IGRpc2Nvbm5lY3RzIGR1cmluZyBzdHJlYW1pbmciLGRpc2Nvbm5lY3RfY2hlY2tfaml0dGVyX21zZWM6IkppdHRlciBmb3IgYGRpc2Nvbm5lY3RfY2hlY2tfbXNlY2AiLGVuYWJsZV9jb3JzOiJJZiBgdHJ1ZWAgYWxsb3dzIENPUlMiLG1heF9odHRwX3JlcXVlc3Rfc2l6ZToiTGltaXQgdGhlIG1heGltdW0gc2l6ZSBvZiB0aGUgSFRUUCByZXF1ZXN0IGJvZHksIGJ5dGVzIixtYXhfZGJfbnVtYmVyX2Zvcl9kYnNfaW5mb19yZXE6Ik1heCBudW1iZXIgb2YgREJzIGFsbG93ZWQgZm9yIGAvX2Ric19pbmZvYCByZXF1ZXN0Iixwb3J0OiJDb3VjaERCIHBvcnQsIG51bWJlciAxLi4uNjU1MzUiLHByZWZlcl9taW5pbWFsOiJNaW5pbWFsIHNldCBvZiBoZWFkZXJzIHRvIHNlbmQgaWYgUHJlZmVyOnJldHVybj1taW5pbWFsIGhlYWRlciByZWNlaXZlZCIscmVxdWlyZV92YWxpZF91c2VyOiJXaGVuIGB0cnVlYCwgbm8gcmVxdWVzdHMgYXJlIGFsbG93ZWQgZnJvbSBhbm9ueW1vdXMgdXNlcnMiLHNjcnViX2pzb25fcmVxdWVzdDpbIldoZW4gYGZhbHNlYCBhbGxvd3Mgc2Vuc2l0aXZlIHJlcXVlc3QgaGVhZGVycyB0byBsZWFrIHRocm91Z2ggcmVzcG9uc2UiLCJodHRwczovL2dpdGh1Yi5jb20vYXBhY2hlL2NvdWNoZGIvcHVsbC80ODc4Il0sc2VjdXJlX3Jld3JpdGVzOiJBbGxvd3MgYF9yZXdyaXRlYCBydWxlcyBwb2ludGluZyB0byBkaWZmZXJlbnQgREIiLHNvY2tldF9vcHRpb25zOiJUaGUgc29ja2V0IG9wdGlvbnMgZm9yIHRoZSBsaXN0ZW5pbmcgc29ja2V0IGluIENvdWNoREIifSxjaHR0cGRfYXV0aDp7X186IntWM31hdXRoLmh0bWwje2tleX0iLCIiOiJBdXRoZW50aWNhdGlvbiBjb25maWciLHBhc3N3b3JkX3JlZ2V4cDoiUmVnRXhwIHJlc3RyaWN0aW5nIHBhc3N3b3JkIHZhbHVlIn0sY2x1c3Rlcjp7X186IntWMn1jbHVzdGVyLmh0bWwje2tleX0iLCIiOiJDbHVzdGVyIG9wdGlvbnMiLG46Ik51bWJlciBvZiByZXBsaWNhcyBvZiBlYWNoIGRvY3VtZW50IGluIGEgY2x1c3RlciwgbnVtYmVyIDErIixwbGFjZW1lbnQ6IlNldHMgdGhlIGNsdXN0ZXItd2lkZSByZXBsaWNhIHBsYWNlbWVudCBwb2xpY3kgZm9yIG5ldyBkYXRhYmFzZXMiLHE6IkRlZmF1bHQgbnVtYmVyIG9mIHNoYXJkcyBmb3IgbmV3bHkgY3JlYXRlZCBkYXRhYmFzZXMsIG51bWJlciAxKyIsc2VlZGxpc3Q6Ikxpc3Qgb2Ygbm9kZXMgdG8gY29udGFjdCBpbiBvcmRlciB0byBqb2luIGEgY2x1c3RlciJ9LGNvbXBhY3Rpb25fZGFlbW9uOntfXzoie1YyfWNvbXBhY3Rpb24uaHRtbCN7a2V5fSIsIiI6IkNvbXBhY3Rpb24gZGFlbW9uIGNvbmZpZyIsY2hlY2tfaW50ZXJ2YWw6IkRlbGF5IGJlZm9yZSBhdXRvLWNvbXBhY3Rpb24gZGFlbW9uIGNoZWNrcyBhIERCLCBzZWNvbmRzIixtaW5fZmlsZV9zaXplOiJNaW5pbWFsIERCIGZpbGUgc2l6ZSBmb3IgY29tcGFjdGlvbiBkYWVtb24gdG8gdHJpZ2dlciBjaGVjayIsc25vb3plX3BlcmlvZF9tczoiTWluaW11bSBnYXAgYmV0d2VlbiBzdWJzZXF1ZW50IGRhZW1vbiBhY3RpdmF0aW9ucywgbWlsbGlzZWNvbmRzIn0sY29tcGFjdGlvbnM6e19fOiJ7VjJ9Y29tcGFjdGlvbi5odG1sI3trZXl9IiwiIjoiQSBsaXN0IG9mIHJ1bGVzIHRvIGRldGVybWluZSB3aGVuIHRvIHJ1biBhdXRvbWF0aWMgY29tcGFjdGlvbiIsIioiOidLZXkgaXMgREIgbmFtZSwgdmFsdWUgaXMgbGlrZWBbe2RiX2ZyYWdtZW50YXRpb24sIjcwJSJ9LCB7dmlld19mcmFnbWVudGF0aW9uLCI2MCUifSwge2Zyb20sIjIzOjAwIn0se3RvLCIwNDowMCJ9XWAnfSxjb3JzOntfXzoie1YyfWh0dHAuaHRtbCN7a2V5fSIsIiI6IkNyb3NzLW9yaWdpbiByZXNvdXJjZSBzaGFyaW5nIGNvbmZpZyIsY3JlZGVudGlhbHM6IklmIHNldCBgdHJ1ZWAsIENvdWNoIHNlbmRzIGF1dGggY29va2llcyBmb3IgY3Jvc3Mtb3JpZ2luIHJlcXVlc3RzIixoZWFkZXJzOiJIZWFkZXJzIGFjY2VwdGVkIGZvciBDT1JTIHJlcXVlc3RzLCBnb29kIGRlZmF1bHQgaXMgYGFjY2VwdCwgYXV0aG9yaXphdGlvbiwgY29udGVudC10eXBlLCBvcmlnaW5gIixtYXhfYWdlOiJTZXRzIG1heCBhZ2UgaGVhZGVyIGZvciBPUFRJT05TIHJlc3BvbnNlLCBzZWNvbmRzIixtZXRob2RzOiJMaXN0IG9mIGFsbG93ZWQgbWV0aG9kcywgbGlrZSBgR0VULCBQT1NULCBQVVQsIERFTEVURSwgT1BUSU9OUywgSEVBRGAiLG9yaWdpbnM6Ikxpc3Qgb2Ygb3JpZ2lucyBzZXBhcmF0ZWQgYnkgYSBjb21tYSwgbGlrZSBgaHR0cDovL2RvbWFpbjAuY29tLCBodHRwczovL2RvbWFpbjEuY29tOjQ0M2AifSxjb3VjaF9odHRwZF9hdXRoOntfXzoie1YyfWF1dGguaHRtbCN7a2V5fSIsIiI6IkF1dGhlbnRpY2F0aW9uIGNvbmZpZyIsYWxsb3dfcGVyc2lzdGVudF9jb29raWVzOiJXaGVuIGB0cnVlYCwgQ291Y2ggYXV0by1yZWZyZXNoZXMgc2Vzc2lvbiBjb29raWVzIHRpbWUgdG8gdGltZSIsYXV0aF9jYWNoZV9zaXplOiJIb3cgbWFueSB1c2VycyBhcmUgY2FjaGVkIGluIG1lbW9yeSwgbnVtYmVyIixhdXRoZW50aWNhdGlvbl9yZWRpcmVjdDoiUmVkaXJlY3Rpb24gb24gc3VjY2Vzc2Z1bCBhdXRoZW50aWNhdGlvbiBpZiB0aGUgY2xpZW50IGFjY2VwdHMgYHRleHQvaHRtbGAiLGNvb2tpZV9kb21haW46IkNvbmZpZ3VyZXMgdGhlIGRvbWFpbiBhdHRyaWJ1dGUgb2YgdGhlIGBBdXRoU2Vzc2lvbmAgY29va2llIixpdGVyYXRpb25zOiJQYXNzd29yZCBoYXNoaW5nIGl0ZXJhdGlvbnMgY291bnQiLG1heF9pdGVyYXRpb25zOiJNYXhpbXVtIFBCS0RGMiBpdGVyYXRpb25zIGNvdW50IixtaW5faXRlcmF0aW9uczoiTWluaW11bSBQQktERjIgaXRlcmF0aW9ucyBjb3VudCIscHJveHlfdXNlX3NlY3JldDoiRm9yY2UgcHJveHkgYXV0aCB0byB1c2Ugc2VjcmV0IHRva2VuLCBgZmFsc2VgIG1ha2VzIENvdWNoIHZlcnkgdW5wcm90ZWN0ZWQiLHB1YmxpY19maWVsZHM6Ikxpc3Qgb2YgcHVibGljIGZpZWxkcyBpbiBgX3VzZXJzYCBkb2N1bWVudHMgdGhhdCBhcmUgdXNlciBwcm9maWxlcyIscmVxdWlyZV92YWxpZF91c2VyOiJXaGVuIGB0cnVlYCwgbm8gcmVxdWVzdHMgYXJlIGFsbG93ZWQgZnJvbSBhbm9ueW1vdXMgdXNlcnMiLHNlY3JldDoiU2VjcmV0IHRva2VuIHVzZWQgZm9yIFByb3h5IGFuZCBDb29raWUgYXV0aGVudGljYXRpb24iLHNhbWVfc2l0ZToiU2FtZVNpdGUgYXR0cmlidXRlIGZvciBhdXRoIGNvb2tpZSwgYG5vbmVgLCBgbGF4YCBvciBgc3RyaWN0YCAiLGhhc2hfYWxnb3JpdGhtczoiQ29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgaGFzaCBhbGdvcml0aG1zIChzaGEsIHNoYTIyNCwgc2hhMjU2LCBzaGEzODQsIHNoYTUxMikgZm9yIGNvb2tpZSBITUFDLiAiLHRpbWVvdXQ6Ik51bWJlciBvZiBzZWNvbmRzIHNpbmNlIHRoZSBsYXN0IHJlcXVlc3QgYmVmb3JlIHNlc3Npb24gZXhwaXJlcyIsdXNlcnNfZGJfcHVibGljOiJBbGxvdyBhbGwgdXNlcnMgdG8gdmlldyB1c2VyIGRvY3VtZW50cyIseF9hdXRoX3JvbGVzOiJQcm94eSBBdXRoIHJvbGVzIGhlYWRlciBuYW1lLCBkZWZhdWx0IGlzIGBYLUF1dGgtQ291Y2hEQi1Sb2xlc2AiLHhfYXV0aF90b2tlbjoiUHJveHkgQXV0aCB0b2tlbiBoZWFkZXIgbmFtZSwgZGVmYXVsdCBpcyBgWC1BdXRoLUNvdWNoREItVG9rZW5gIix4X2F1dGhfdXNlcm5hbWU6IlByb3h5IEF1dGggdXNlcm5hbWUgaGVhZGVyIG5hbWUsIGRlZmF1bHQgaXMgYFgtQXV0aC1Db3VjaERCLVVzZXJOYW1lYCJ9LGNvdWNoX2h0dHBkX29hdXRoOntfXzoie1YxfWF1dGguaHRtbCN7a2V5fSIsIiI6IkhUVFAgT0F1dGggQ29uZmlndXJhdGlvbiIsdXNlX3VzZXJzX2RiOiJJZiBgdHJ1ZWAgT0F1dGggdG9rZW4gYW5kIGNvbnN1bWVyIHNlY3JldHMgYXJlIGxvb2tlZCB1cCBpbiBgX3VzZXJzYCBkb2NzIn0sY291Y2hfcGVydXNlcjp7X186IntWMn1jb3VjaC1wZXJ1c2VyLmh0bWwje2tleX0iLCIiOiJHZW5lcmF0ZXMgYSBEQiBmb3IgZWFjaCBgX3VzZXJzYCBtZW1iZXIiLGRlbGV0ZV9kYnM6IkRlbGV0ZSBhIHVzZXIgREIgb24gYF91c2Vyc2AgZG9jIGRlbGV0aW9uIixlbmFibGU6IklmIGB0cnVlYCBhdXRvLWNyZWF0ZXMgYHVzZXIte2hleG5hbWV9YCBEQiBmb3IgZWFjaCBgX3VzZXJzYCBtZW1lYmVyIn0sY291Y2hkYjp7X186IntWMn1jb3VjaGRiLmh0bWwje2tleX0iLCIiOiJCYXNlIENvdWNoREIgb3B0aW9ucyIsYXR0YWNobWVudF9zdHJlYW1fYnVmZmVyX3NpemU6IkJ1ZmZlciB1c2VkIHdoaWxlIHN0cmVhbWluZyBhbiBhdHRhY2htZW50LCBieXRlcyIsZGF0YWJhc2VfZGlyOiJEYXRhYmFzZXMgbG9jYXRpb24gZGlyZWN0b3J5IixkZWZhdWx0X3NlY3VyaXR5OiJEZWZhdWx0IHNlY3VyaXR5IG9iamVjdCBmb3IgREJzLCBgZXZlcnlvbmVgIGFuZCBgYWRtaW5fbG9jYWxgIG1ha2UgREIgcHVibGljLCBgYWRtaW5fb25seWAgcHJvdGVjdHMiLGRlbGF5ZWRfY29tbWl0czoiSWYgYHRydWVgIENvdWNoIGd1YXJhbnRlZXMgY2hhbmdlcyBhcmUgd3JpdHRlbiB0byBkaXNrIGJlZm9yZSBgMjB4YCByZXNwb25zZSBpcyBzZW50IixmaWxlX2NvbXByZXNzaW9uOiJDb21wcmVzc2lvbiBtZXRob2QgZm9yIGRvY3VtZW50cywgYG5vbmVgLCBgc25hcHB5YCBvciBgZGVmbGF0ZV9OYCIsZnN5bmNfb3B0aW9uczoiRnN5bmMgb3B0aW9ucyIsbWFpbnRlbmFuY2VfbW9kZToiSWYgc2V0IGB0cnVlYCwgbm9kZSBpcyBub3QgaW4gY2x1c3RlciwgYW5kIGAvX3VwYCByZXR1cm5zIGA0MDRgIixtYXhfZGJzX29wZW46IkxpbWl0IG9mIHNpbXVsdGFuZW91c2x5IG9wZW5lZCBkYXRhYmFzZXMsIG51bWJlciIsbWF4X2RvY3VtZW50X3NpemU6IkxpbWl0IG1heGltdW0gZG9jdW1lbnQgYm9keSBzaXplLCBieXRlcyIsb3NfcHJvY2Vzc190aW1lb3V0OiJFeHRlcm5hbCBwcm9jZXNzZXMgdGltZSBsaW1pdCwgbWlsbGlzZWNvbmRzIix1cmlfZmlsZToiRGlzY292ZXJ5IENvdWNoREIgaGVscCBmaWxlIix1c2Vyc19kYl9zdWZmaXg6IlNwZWNpZmllcyB0aGUgc3VmZml4IG9mIHRoZSBzeXN0ZW0gZGF0YWJhc2Ugb2YgdXNlcnMiLHV0aWxfZHJpdmVyX2RpcjoiU3BlY2lmaWVzIGxvY2F0aW9uIG9mIGJpbmFyeSBkcml2ZXJzIix1dWlkOiJVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyBDb3VjaERCIHNlcnZlciBpbnN0YW5jZSIsdmlld19pbmRleF9kaXI6IlZpZXcgaW5kZXhlcyBsb2NhdGlvbiBkaXJlY3RvcnkiLHVzZXJzX2RiX3NlY3VyaXR5X2VkaXRhYmxlOlsiQWxsb3cgZWRpdHMgb24gdGhlIGBfc2VjdXJpdHlgIG9iamVjdCBpbiB0aGUgdXNlciBkYiIsIiJdfSxjc3A6e19fOiJ7VjN9bWlzYy5odG1sI3trZXl9IiwiIjoiQ29udGVudCBzZWN1cml0eSBwb2xpY3kgc2V0dGluZ3MiLGVuYWJsZToiSWYgYHRydWVgIGVuYWJsZXMgQ1NQIGhlYWRlcnMgZm9yIEZhdXh0b24iLGhlYWRlcl92YWx1ZToiRGVmYXVsdCBGYXV4dG9uIENTUCBoZWFkZXIgdmFsdWUiLGF0dGFjaG1lbnRzX2VuYWJsZToiSWYgYHRydWVgIGVuYWJsZXMgQ1NQIGhlYWRlcnMgZm9yIGRvYyBhdHRhY2htZW50cyIsYXR0YWNobWVudHNfaGVhZGVyX3ZhbHVlOiJEZWZhdWx0IENTUCBoZWFkZXIgdmFsdWUgZm9yIGRvYyBhdHRhY2htZW50cyIsc2hvd2xpc3RfZW5hYmxlOiJJZiBgdHJ1ZWAgZW5hYmxlcyBDU1AgaGVhZGVycyBmb3Igbm9uLUpTT04gc2hvdy9saXN0IHJlc3VsdHMiLHNob3dsaXN0X2hlYWRlcl92YWx1ZToiRGVmYXVsdCBDU1AgaGVhZGVyIHZhbHVlIGZvciBub24tSlNPTiBzaG93L2xpc3QgcmVzdWx0cyJ9LGRhZW1vbnM6e19fOiJ7VjJ9c2VydmljZXMuaHRtbCN7a2V5fSIsIiI6IkNvdWNoREIgRGFlbW9uaXplZCBNaW5pIEFwcHMiLGF1dGhfY2FjaGU6IkF1dGhlbnRpY2F0aW9uIGNhY2hpbmcgbG9jYXRvciIsY29tcGFjdGlvbl9kYWVtb246IkNvbXBhY3Rpb24gZGFlbW9uIGxvY2F0b3IiLGV4dGVybmFsX21hbmFnZXI6IkV4dGVybmFsIHByb2Nlc3NlcyBtYW5hZ2VyIGxvY2F0b3IiLGh0dHBkOiJOb2RlIEhUVFAgc2VydmVyIGRhZW1vbiBsb2NhdG9yIixpbmRleF9zZXJ2ZXI6IkNvdWNoREIgaW5kZXggc2VydmVyIGxvY2F0b3IiLHF1ZXJ5X3NlcnZlcnM6IlF1ZXJ5IHNlcnZlcnMgbWFuYWdlciBsb2NhdG9yIixyZXBsaWNhdG9yX21hbmFnZXI6IkNvdWNoIHJlcGxpY2F0b3IgbWFuYWdlciBsb2NhdG9yIixzdGF0c19hZ2dyZWdhdG9yOiJDb3VjaCBzdGF0cyBhZ2dyZWdhdG9yIGRhZW1vbiBsb2NhdG9yIixzdGF0c19jb2xsZWN0b3I6IkNvdWNoIHN0YXRzIGNvbGxlY3RvciBkYWVtb24gbG9jYXRvciIsdXVpZHM6IlVVSURzIGdlbmVyYXRvciBkYWVtb24gbG9jYXRvciIsdmhvc3RzOiJNYW5hZ2VyIG9mIGB2aG9zdHNgIGNvbm5lY3Rpb25zIGxvY2F0b3IifSxkYXRhYmFzZV9jb21wYWN0aW9uOntfXzoie1YyfWNvbXBhY3Rpb24uaHRtbCN7a2V5fSIsIiI6IkRhdGFiYXNlIGNvbXBhY3Rpb24gb3B0aW9ucyIsY2hlY2twb2ludF9hZnRlcjoiVHJpZ2dlcnMgYSBjaGVja3BvaW50IGFmdGVyIHRoZSBzcGVjaWZpZWQgYW1vdW50IG9mIGJ5dGVzIHdlcmUgY29waWVkIixkb2NfYnVmZmVyX3NpemU6IlRoZSBjb3B5IGJ1ZmZlcuKAmXMgbWF4aW11bSBzaXplLCBieXRlcyJ9LGRyZXlmdXM6e19fOiJ7VjN9cXVlcnktc2VydmVycy5odG1sI3trZXl9IiwiIjoiRHJleWZ1cyBzZWFyY2ggc3Vic3lzdGVtIGNvbmZpZ3VyYXRpb24iLGxpbWl0OiJEZWZhdWx0IHJlc3VsdCBzZXQgbGltaXQgZm9yIGdsb2JhbCBzZWFyY2giLGxpbWl0X3BhcnRpdGlvbnM6IkRlZmF1bHQgcmVzdWx0IHNldCBsaW1pdCBmb3IgcGFydGl0aW9uZWQgREJzIixtYXhfbGltaXQ6Ik1heGltdW0gcmVzdWx0IHNldCBmb3IgZ2xvYmFsIHNlYXJjaCIsbWF4X2xpbWl0X3BhcnRpdGlvbnM6Ik1heGltdW0gcmVzdWx0IHNldCBmb3IgcGFydGl0aW9uZWQgc2VhcmNoIixuYW1lOiJDbG91c2VhdSBKVk0gbm9kZSBuYW1lIGFuZCBsb2NhdGlvbiIscmV0cnlfbGltaXQ6Ik1heGltdW0gbnVtYmVyIG9mIGNvbm5lY3Rpb24gcmV0cmllcyJ9LGh0dHBkOntfXzoie1YyfWh0dHAuaHRtbCN7a2V5fSIsIiI6IkhUVFAgc2VydmVyIGNvbmZpZywgZm9yIDIueCBvbmx5IGZvciBsb2NhbCA1OTg2IHBvcnQiLCJXV1ctQXV0aGVudGljYXRlIjoiSWYgYHRydWVgIHRyaWdnZXIgYmFzaWMtYXV0aCBwb3AtdXAgb24gdW5hdXRob3JpemVkIHJlcXVlc3RzIixhbGxvd19qc29ucDoiSWYgYHRydWVgIGVuYWJsZXMgSlNPTlAgc3VwcG9ydCwgYGZhbHNlYCByZWNvbW1lbmRlZCIsYXV0aGVudGljYXRpb25faGFuZGxlcnM6Ikxpc3Qgb2YgYXV0aGVudGljYXRpb24gaGFuZGxlcnMgdXNlZCBieSBDb3VjaERCIixiaW5kX2FkZHJlc3M6IklQIGFkZHJlc3MgbGlzdGVuZWQgYnkgQ291Y2hEQiIsY2hhbmdlc190aW1lb3V0OiJDaGFuZ2VzIGZlZWQgdGltZW91dCwgbWlsbGlzZWNvbmRzIixjb25maWdfd2hpdGVsaXN0OiJPbmx5IHdoaXRlbGlzdGVkIHZhbHVlcyBtYXkgYmUgY2hhbmdlZCB2aWEgdGhlIGAvX2NvbmZpZ2AgSFRUUCBlbmRwb2ludHMiLGRlZmF1bHRfaGFuZGxlcjoiRGVmYXVsdCByZXF1ZXN0IGhhbmRsZXIgbG9jYXRvciIsZW5hYmxlX2NvcnM6IklmIGB0cnVlYCBhbGxvd3MgQ09SUyIsZW5hYmxlX3hmcmFtZV9vcHRpb25zOiJDb250cm9scyBYLUZyYW1lLU9wdGlvbnMgaGVhZGVyIixsb2dfbWF4X2NodW5rX3NpemU6Ik1heCByZXNwb25zZSBzaXplIGZvciBgL19sb2dgIHJlcXVlc3QiLG1heF9odHRwX3JlcXVlc3Rfc2l6ZToiTGltaXQgdGhlIG1heGltdW0gc2l6ZSBvZiB0aGUgSFRUUCByZXF1ZXN0IGJvZHksIGJ5dGVzIixwb3J0OiJDb3VjaERCIHBvcnQsIG51bWJlciAx4oCTNjU1MzUiLHJlZGlyZWN0X3Zob3N0X2hhbmRsZXI6IkN1c3RvbWl6ZXMgdGhlIGRlZmF1bHQgZnVuY3Rpb24gdGhhdCBoYW5kbGVzIHJlcXVlc3RzIHRvIHZpcnR1YWwgaG9zdHMiLHNlY3VyZV9yZXdyaXRlczoiQWxsb3dzIGBfcmV3cml0ZWAgcnVsZXMgcG9pbnRpbmcgdG8gZGlmZmVyZW50IERCIixzZXJ2ZXJfb3B0aW9uczoiTW9jaGlXZWIgd2ViIHNlcnZlciBvcHRpb25zIixzb2NrZXRfb3B0aW9uczoiVGhlIHNvY2tldCBvcHRpb25zIGZvciB0aGUgbGlzdGVuaW5nIHNvY2tldCBpbiBDb3VjaERCIix2aG9zdF9nbG9iYWxfaGFuZGxlcnM6Ikxpc3Qgb2YgZ2xvYmFsIGhhbmRsZXJzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgdmlydHVhbCBob3N0cyIseF9mb3J3YXJkZWRfaG9zdDoiWC1Gb3J3YXJkZXItSG9zdCIseF9mb3J3YXJkZWRfcHJvdG86IlgtRm9yd2FyZGVyLVByb3RvIix4X2ZvcndhcmRlZF9zc2w6IlgtRm9yd2FyZGVyLVNzbCJ9LGh0dHBkX2RiX2hhbmRsZXJzOntfXzoie1YxfWh0dHAtaGFuZGxlcnMuaHRtbCN7a2V5fSIsIiI6IkhUVFAgZW5kcG9pbnRzIGF2YWlsYWJsZSBmb3IgZXZlcnkgQ291Y2hEQiBkYXRhYmFzZSIsIioiOiJLZXkgaXMgZW5kcG9pbnQgbmFtZSwgdmFsdWUgaXMgaGFuZGxlciBmdW5jdGlvbiBsb2NhdG9yIn0saHR0cGRfZGVzaWduX2hhbmRsZXJzOntfXzoie1YxfWh0dHAtaGFuZGxlcnMuaHRtbCN7a2V5fSIsIiI6IkhUVFAgZW5kcG9pbnRzIGF2YWlsYWJsZSBmb3IgZGVzaWduIGRvY3VtZW50cyIsIioiOiJLZXkgaXMgZW5kcG9pbnQgbmFtZSwgdmFsdWUgaXMgaGFuZGxlciBmdW5jdGlvbiBsb2NhdG9yIn0saHR0cGRfZ2xvYmFsX2hhbmRsZXJzOntfXzoie1YxfWh0dHAtaGFuZGxlcnMuaHRtbCN7a2V5fSIsIiI6Ikdsb2JhbCBIVFRQIGVuZHBvaW50cyIsIioiOiJLZXkgaXMgZW5kcG9pbnQgbmFtZSwgdmFsdWUgaXMgaGFuZGxlciBmdW5jdGlvbiBsb2NhdG9yIn0saW9xOntfXzoie1YzfWlvcS5odG1sI3trZXl9IiwiIjoiSU8gcXVldWUgcHJpb3JpdGl6YXRpb24gb3B0aW9ucyIsY29uY3VycmVuY3k6Ik51bWJlciBvZiBjb25jdXJyZW50IGluLWZsaWdodCBJTyByZXF1ZXN0cyB0aGF0IHRoZSBxdWV1ZWluZyBzeXN0ZW0gd2lsbCBzdWJtaXQiLHJhdGlvOiJCYWNrZ3JvdW5kIElPIHJlcXVlc3RzIHF1b3RhIHJhdGlvIn0sImlvcS5ieXBhc3MiOntfXzoie1YzfWlvcS5odG1sI3trZXl9IiwiIjoiTGlzdCBvZiBvcGVyYXRpb25zIHRoYXQgY2FuIGJ5cGFzcyBJTyBxdWV1ZSIsIioiOiJLZXkgaXMgdGhlIG9wZXJhdGlvbiwgdmFsdWUgaXMgYnlwYXNzIHN0YXR1cyBmb3IgaXQifSxrZW46e19fOiJ7VjN9aW5kZXhidWlsZHMuaHRtbCN7a2V5fSIsIiI6IkJhY2tncm91bmQgaW5kZXggYnVpbGRzIixiYXRjaF9jaGFubmVsczoiQ29udHJvbHMgdGhlIG51bWJlciBvZiBiYWNrZ3JvdW5kIHZpZXcgYnVpbGRzIHRoYXQgY2FuIGJlIHJ1bm5pbmcgaW4gcGFyYWxsZWwiLGluY3JlbWVudGFsX2NoYW5uZWxzOiJBZGRpdGlvbmFsIHNsb3RzIGZvciBzaG9ydCBqb2JzIixtYXhfaW5jcmVtZW50YWxfdXBkYXRlczoiVGhyZXNob2xkIGRlZmluaW5nIGEgam9iIGFzIHNob3J0In0sImtlbi5pZ25vcmUiOntfXzoie1YzfWluZGV4YnVpbGRzLmh0bWwje2tleX0iLCIiOiJBdXRvLWluZGV4aW5nIGJsYWNrbGlzdCIsIioiOiJLZXkgaXMgYSBzaGFyZCBuYW1lIHRvIHNraXAgd2hpbGUgYXV0by1pbmRleGluZywgdmFsdWUgc2hvdWxkIGJlIGB0cnVlYCJ9LGxvZzp7X186IntWMn1sb2dnaW5nLmh0bWwje2tleX0iLCIiOiJMb2dnaW5nIG9wdGlvbnMiLHdyaXRlcjoiU2V0IHRoZSBsb2cgd3JpdGVyIHRvIHVzZTogYHN0ZGVycmAsIGBmaWxlYCwgYHN5c2xvZ2AiLGZpbGU6IkxvZ2dpbmcgZmlsZSBwYXRoIixpbmNsdWRlX3Nhc2w6IklmIGB0cnVlYCBwdXRzIFNBU0wgaW5mbyBpbnRvIGxvZ3MiLGxldmVsOiJMb2dnaW5nIHZlcmJvc2l0eTogYGRlYnVnYCwgYGluZm9gLCBgbm90aWNlYCwgYHdhcm5gLCBgZXJyYCwgYG5vbmVgIixzeXNsb2dfYXBwaWQ6IlNwZWNpZmllcyBhcHBsaWNhdGlvbiBuYW1lIGZvciB0aGUgYHN5c2xvZ2Agd3JpdGVyIixzeXNsb2dfZmFjaWxpdHk6IlNwZWNpZmllcyB0aGUgc3lzbG9nIGZhY2lsaXR5IHRvIHVzZSB3aXRoIHRoZSBgc3lzbG9nYCB3cml0ZXIiLHN5c2xvZ19ob3N0OiJTcGVjaWZpZXMgdGhlIGhvc3QgdG8gc2VuZCBsb2dzIHRvIGJ5IGBzeXNsb2dgIHdyaXRlciIsc3lzbG9nX3BvcnQ6IlNwZWNpZmllcyB0aGUgcG9ydCB0byBzZW5kIGxvZ3MgdG8gYnkgYHN5c2xvZ2Agd3JpdGVyIix3cml0ZV9idWZmZXI6IkJ1ZmZlciBmb3IgYGZpbGVgIGxvZyB3cml0ZXIsIGJ5dGVzIix3cml0ZV9kZWxheToiRGVsYXkgZm9yIGBmaWxlYCBsb2cgd3JpdGVyLCBtaWxsaXNlY29uZHMifSxuYXRpdmVfcXVlcnlfc2VydmVyczp7X186IntWMn1xdWVyeS1zZXJ2ZXJzLmh0bWwje2tleX0iLCIiOiJOYXRpdmUgRXJsYW5nIHF1ZXJ5IHNlcnZlciIsZW5hYmxlX2VybGFuZ19xdWVyeV9zZXJ2ZXI6IldoZW4gYHRydWVgLCBFcmxhbmcgUVMgaXMgZW5hYmxlZCIsZXJsYW5nOiJFcmxhbmcgUVMgbG9jYXRvciBmb3IgQ291Y2ggMS54In0scHVyZ2U6e19fOiJ7VjN9bWlzYy5odG1sI3trZXl9IiwiIjoiQ29uZmlndXJhdGlvbiBvZiBkYXRhYmFzZSBwdXJnZSIsbWF4X2RvY3VtZW50X2lkX251bWJlcjoiTWF4IG51bWJlciBvZiBkb2NzIGFsbG93ZWQgaW4gYSBzaW5nbGUgcHVyZ2UgcmVxdWVzdCIsbWF4X3JldmlzaW9uc19udW1iZXI6Ik1heCBudW1iZXIgb2YgYWNjdW11bGF0ZWQgcmV2aXNpb25zIGluIGEgc2luZ2xlIHB1cmdlIHJlcXVlc3QiLGluZGV4X2xhZ193YXJuX3NlY29uZHM6Ik1heCBkdXJhdGlvbiBmb3IgdXBkYXRpbmcgaW5kZXggdG8gY29tcGx5IGxvY2FsIHB1cmdlIGNoZWNrcG9pbnQifSxxdWVyeV9zZXJ2ZXJzOntfXzoie1YyfXF1ZXJ5LXNlcnZlcnMuaHRtbCN7a2V5fSIsIiI6IlF1ZXJ5IHNlcnZlcnMgbGlzdCIsIioiOiJLZXkgaXMgbGFuZ3VhZ2UsIHZhbHVlIGlzIHBhdGggdG8gcHJvY2Vzc29yIn0scXVlcnlfc2VydmVyX2NvbmZpZzp7X186IntWMn1xdWVyeS1zZXJ2ZXJzLmh0bWwje2tleX0iLCIiOiJRdWVyeSBzZXJ2ZXJzIGNvbmZpZ3VyYXRpb24iLGNvbW1pdF9mcmVxOiJEZWxheSBpbiBzZWNvbmRzIGJlZm9yZSB2aWV3IGluZGV4IGNoYW5nZXMgYXJlIGNvbW1pdHRlZCB0byBkaXNrIixsaW1pdDoiTnVtYmVyIG9mIE9TIHByb2Nlc3NlcyB1c2FibGUgYnkgUXVlcnkgU2VydmVycyIsb3NfcHJvY2Vzc19saW1pdDoiTnVtYmVyIG9mIE9TIHByb2Nlc3NlcyB1c2FibGUgYnkgUXVlcnkgU2VydmVycyIscmVkdWNlX2xpbWl0OiJDb250cm9scyBpZiByZWR1Y2UgdGhyb3dzIGVycm9yIG9uIGEgc3RlcCB3aGljaCBpcyBtb3JlIHRoYW4gdHdpY2UgYXMgbGFyZ2UgYXMgaW5wdXQiLHNvZnRfbGltaXQ6IlNvZnQgbGltaXQgb24gdGhlIG51bWJlciBvZiBPUyBwcm9jZXNzZXMgdXNhYmxlIGJ5IFF1ZXJ5IFNlcnZlcnMiLG9zX3Byb2Nlc3Nfc29mdF9saW1pdDoiU29mdCBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIE9TIHByb2Nlc3NlcyB1c2FibGUgYnkgUXVlcnkgU2VydmVycyJ9LHJlcGxpY2F0b3I6e19fOiJ7VjJ9cmVwbGljYXRvci5odG1sI3trZXl9IiwiIjoiUmVwbGljYXRvciBEQiBjb25maWciLGF1dGhfcGx1Z2luczoiTGlzdCBvZiByZXBsaWNhdG9yIGNsaWVudCBhdXRoZW50aWNhdGlvbiBwbHVnaW5zIixjZXJ0X2ZpbGU6IlBhdGggdG8gYSBmaWxlIGNvbnRhaW5pbmcgdGhlIHVzZXLigJlzIGNlcnRpZmljYXRlIixjaGVja3BvaW50X2ludGVydmFsOiJSZXBsaWNhdGlvbiBjaGVja3BvaW50IGludGVydmFsLCBtaWxsaXNlY29uZHMiLGNvbm5lY3Rpb25fdGltZW91dDoiSFRUUCBjb25uZWN0aW9uIHRpbWVvdXQgcGVyIHJlcGxpY2F0aW9uIGluIG1pbGxpc2Vjb25kcywgZGl2aWRlZCBieSAzIGZvciBwdWxsIHN5bmMiLGh0dHBfY29ubmVjdGlvbnM6Ik1heCBudW1iZXIgb2YgSFRUUCBjb25uZWN0aW9ucyBwZXIgcmVwbGljYXRpb24iLGludGVydmFsOiJTY2hlZHVsaW5nIGludGVydmFsIGluIG1pbGxpc2Vjb25kcyIsa2V5X2ZpbGU6IlBhdGggdG8gZmlsZSBjb250YWluaW5nIHVzZXLigJlzIHByaXZhdGUgUEVNIGVuY29kZWQga2V5IixtYXhfY2h1cm46Ik1heCBudW1iZXIgb2YgcmVwbGljYXRpb24gam9icyB0byBzdGFydC9zdG9wIGR1cmluZyByZXNjaGVkdWxpbmciLG1heF9qb2JzOiJNYXggbnVtYmVyIG9mIGFjdGl2ZWx5IHJ1bm5pbmcgcmVwbGljYXRpb25zIixwYXNzd29yZDoiVXNlcuKAmXMgcGFzc3dvcmQsIGlmIHRoZSBwcml2YXRlIGtleSBmaWxlIGlzIHBhc3N3b3JkIHByb3RlY3RlZCIscmV0cmllc19wZXJfcmVxdWVzdDoiSWYgYSByZXF1ZXN0IGZhaWxzLCB0aGUgcmVwbGljYXRvciB3aWxsIHJldHJ5IGl0IHVwIHRvIE4gdGltZXMiLHNvY2tldF9vcHRpb25zOiJGaW5lIHR1bmUgcmVwbGljYXRpb24gc29ja2V0IG9wdGlvbnMiLHNzbF9jZXJ0aWZpY2F0ZV9tYXhfZGVwdGg6Ik1heGltdW0gcGVlciBjZXJ0aWZpY2F0ZSBkZXB0aCIsc3NsX3RydXN0ZWRfY2VydGlmaWNhdGVzX2ZpbGU6IkZpbGUgY29udGFpbmluZyBhIGxpc3Qgb2YgcGVlciB0cnVzdGVkIGNlcnRpZmljYXRlcyBpbiB0aGUgUEVNIGZvcm1hdCIsdXBkYXRlX2RvY3M6IklmIGB0cnVlYCBDb3VjaCB1cGRhdGVzIF9yZXBsaWNhdG9yIGRvY3Mgb24gdGFzayBlcnJvciBhbmQgc3RhcnQiLHVzZV9jaGVja3BvaW50czoiSWYgYHRydWVgIENvdWNoREIgbWFrZXMgY2hlY2twb2ludHMgZHVyaW5nIGFuZCBhdCB0aGUgY29tcGxldGlvbiBvZiByZXBsaWNhdGlvbiIsdmVyaWZ5X3NzbF9jZXJ0aWZpY2F0ZXM6IklmIGBmYWxzZWAgaW52YWxpZCBjZXJ0aWZpY2F0ZXMgZG8gbm90IHByZXZlbnQgcmVwbGljYXRpb24iLHdvcmtlcl9iYXRjaF9zaXplOiJOdW1iZXIgb2YgZG9jcyB0byByZWFkIGluIGJhdGNoIGR1cmluZyBzeW5jIix3b3JrZXJfcHJvY2Vzc2VzOiJOdW1iZXIgb2YgYSByZXBsaWNhdGlvbiBzdWItcHJvY2Vzc2VzIHRvIHJ1biBzaW11bHRhbmVvdXNseSIsd2lubmluZ19yZXZzX29ubHk6IldoZW4gYHRydWVgIHJlcGxpY2F0ZXMgd2lubmluZyByZXZzIG9ubHkgZGlzY2FyZGluZyBjb25mbGljdHM7IGRlZmF1bHQgaXMgYGZhbHNlYCJ9LHJlc2hhcmRpbmc6e19fOiJ7VjJ9cmVzaGFyZGluZy5odG1sI3trZXl9IiwiIjoiUmVzaGFyZGluZyBjb25maWd1cmF0aW9uIixkZWxldGVfc291cmNlOiJpZiBgdHJ1ZWAgc291cmNlIHNoYXJkIHNob3VsZCBiZSBkZWxldGVkIGFmdGVyIHJlc2hhcmRpbmciLG1heF9qb2JzOiJNYXhpbXVtIG51bWJlciBvZiByZXNoYXJkaW5nIGpvYnMgcGVyIGNsdXN0ZXIgbm9kZSIsbWF4X3JldHJpZXM6IkhvdyBtYW55IHRpbWVzIHRvIHJldHJ5IHNoYXJkIHNwbGl0dGluZyBzdGVwcyBpZiB0aGV5IGZhaWwiLHJldHJ5X2ludGVydmFsX3NlYzoiSG93IGxvbmcgdG8gd2FpdCBiZXR3ZWVuIHN1YnNlcXVlbnQgcmV0cmllcywgc2Vjb25kcyIsc291cmNlX2Nsb3NlX3RpbWVvdXRfc2VjOiJIb3cgbWFueSBzZWNvbmRzIHRvIHdhaXQgZm9yIHRoZSBzb3VyY2Ugc2hhcmQgdG8gY2xvc2UiLHVwZGF0ZV9zaGFyZF9tYXBfdGltZW91dF9zZWM6IkhvdyBtYW55IHNlY29uZHMgdG8gd2FpdCBmb3IgdGhlIHNoYXJkIG1hcCB1cGRhdGUgb3BlcmF0aW9uIHRvIGNvbXBsZXRlIn0sc21vb3NoOntfXzoie1YzfWNvbXBhY3Rpb24uaHRtbCN7a2V5fSIsIiI6IkF1dG9jb21wYWN0aW9uIGRhZW1vbiBzZXR0aW5ncyIsZGJfY2hhbm5lbHM6Ikxpc3Qgb2YgY29tbWEgc2VwYXJhdGVkIGRiIGNvbXBhY3Rpb24gY2hhbm5lbCBuYW1lcyIsdmlld19jaGFubmVsczoiTGlzdCBvZiBjb21tYSBzZXBhcmF0ZWQgdmlldyBpbmRleCBjb21wYWN0aW9uIGNoYW5uZWwgbmFtZXMiLHN0YWxlbmVzczoiTWludXRlcyBiZWZvcmUgcHJpb3JpdHkgcXVldWUgaXMgcmVidWlsdCwgZGVmYXVsdCBpcyA1IixjbGVhbnVwX2luZGV4X2ZpbGVzOiJXaGVuIGB0cnVlYCwgY29tcGFjdG9yIGRlbGV0ZXMgb3JwaGFuZWQgaW5kZXggZmlsZXM7IGRlZmF1bHQgaXMgYGZhbHNlYCIsd2FpdF9zZWNzOiJUaW1lIGlzIHNlY29uZHMgdG8gd2FybSB1cCBjb21wYWN0aW9uIGNoYW5uZWwsIGRlZmF1bHQgaXMgMzAiLHBlcnNpc3Q6WyJJZiBgdHJ1ZWAgcGVyc2lzdHMgam9icyBiZXR3ZWVuIG5vZGUgcmVzdGFydCwgZGVmYXVsdCBpcyBgZmFsc2VgIiwiIl19LCJzbW9vc2gucmF0aW9fZGJzIjp7X186IntWM31jb21wYWN0aW9uLmh0bWwjc21vb3NoLjxjaGFubmVsPiIsIiI6IkNvbnRyb2xzIHJlc291cmNlIGFsbG9jYXRpb24gZm9yIGRicyBjb21wYWN0aW9uIGNoYW5uZWwiLGNhcGFjaXR5OiJNYXggaXRlbXMgdGhlIGNoYW5uZWwgY2FuIGhvbGQgKGxvdyBwcmlvcml0eSBpdGVtcyBkcm9wcGVkIGZpcnN0KSwgZGVmYXVsdCA5OTk5Iixjb25jdXJyZW5jeToiTWF4IGpvYnMgdGhhdCBjYW4gcnVuIGNvbmN1cnJlbnRseSBpbiB0aGlzIGNoYW5uZWwsIGRlZmF1bHRzIHRvIDEiLG1pbl9wcmlvcml0eToiTWluIHByaW9yaXR5IG9mIGFuIGl0ZW0gdG8gZW5xdWV1ZSIsbWF4X3ByaW9yaXR5OiJNYXggcHJpb3JpdHkgb2YgYW4gaXRlbSB0byBlbnF1ZXVlIixtaW5fc2l6ZToiTWluIHNpemUgb2YgYW4gaXRlbSB0byBlbnF1ZXVlIixtYXhfc2l6ZToiTWF4IHNpemUgb2YgYW4gaXRlbSB0byBlbnF1ZXVlIixtaW5fY2hhbmdlczoiTWluIGNoYW5nZXMgc2luY2UgbGFzdCBjb21wYWN0aW9uIGJlZm9yZSB0aGUgaXRlbSB3aWxsIGJlIGVucXVldWVkIixwcmlvcml0eToiUHJpb3JpdHkgY2FsYyBtZXRob2Q6IHJhdGlvIChkZWZhdWx0LCBzaXplcy5maWxlL3NpemVzLmFjdGl2ZSksIG9yIHNsYWNrIChzaXplcy5maWxlLXNpemVzLmFjdGl2ZSkifSwic21vb3NoLnJhdGlvX3ZpZXdzIjp7X186IntWM31jb21wYWN0aW9uLmh0bWwjc21vb3NoLjxjaGFubmVsPiIsIiI6IkNvbnRyb2xzIHJlc291cmNlIGFsbG9jYXRpb24gZm9yIHZpZXcgaW5kaWNlcyBjb21wYWN0aW9uIGNoYW5uZWwiLGNhcGFjaXR5OiJNYXggaXRlbXMgdGhlIGNoYW5uZWwgY2FuIGhvbGQgKGxvdyBwcmlvcml0eSBpdGVtcyBkcm9wcGVkIGZpcnN0KSwgZGVmYXVsdCA5OTk5Iixjb25jdXJyZW5jeToiTWF4IGpvYnMgdGhhdCBjYW4gcnVuIGNvbmN1cnJlbnRseSBpbiB0aGlzIGNoYW5uZWwsIGRlZmF1bHRzIHRvIDEiLG1pbl9wcmlvcml0eToiTWluIHByaW9yaXR5IG9mIGFuIGl0ZW0gdG8gZW5xdWV1ZSIsbWF4X3ByaW9yaXR5OiJNYXggcHJpb3JpdHkgb2YgYW4gaXRlbSB0byBlbnF1ZXVlIixtaW5fc2l6ZToiTWluIHNpemUgb2YgYW4gaXRlbSB0byBlbnF1ZXVlIixtYXhfc2l6ZToiTWF4IHNpemUgb2YgYW4gaXRlbSB0byBlbnF1ZXVlIixtaW5fY2hhbmdlczoiTWluIGNoYW5nZXMgc2luY2UgbGFzdCBjb21wYWN0aW9uIGJlZm9yZSB0aGUgaXRlbSB3aWxsIGJlIGVucXVldWVkIixwcmlvcml0eToiUHJpb3JpdHkgY2FsYyBtZXRob2Q6IHJhdGlvIChkZWZhdWx0LCBzaXplcy5maWxlL3NpemVzLmFjdGl2ZSksIG9yIHNsYWNrIChzaXplcy5maWxlLXNpemVzLmFjdGl2ZSkifSwic21vb3NoLmlnbm9yZSI6e19fOiIiLCIiOiJMaXN0IG9mIHNoYXJkcyBpZ25vcmVkIGJ5IHNtb29zaCBhdXRvLWNvbXBhY3RvciBzZXJ2aWNlIiwiKiI6IlNoYXJkIG5hbWUgdG8gYmUgaWdub3JlZCBieSBzbW9vc2ggYXV0by1jb21wYWN0b3IifSxzc2w6e19fOiJ7VjJ9aHR0cC5odG1sI3trZXl9IiwiIjoiSFRUUFMgb3B0aW9ucyIsY2FjZXJ0X2ZpbGU6IkNBIENlcnRpZmljYXRlIGZpbGUgcGF0aCIsY2VydF9maWxlOiJDZXJ0aWZpY2F0ZSBmaWxlIHBhdGgiLGNpcGhlcnM6IlNwZWNpZnkgcGVybWl0dGVkIHNlcnZlciBjaXBoZXIgbGlzdCwgSlNPTiBhcnJheSBvZiBzdHJpbmdzIixmYWlsX2lmX25vX3BlZXJfY2VydDoiUmVxdWlyZSBwcmVzZW5jZSBvZiBjbGllbnQgY2VydGlmaWNhdGUgaWYgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uIGlzIGVuYWJsZWQiLGtleV9maWxlOiJDZXJ0aWZpY2F0ZSBrZXkgZmlsZSBwYXRoIixwYXNzd29yZDoiQ2VydGlmaWNhdGUga2V5IHBhc3N3b3JkIixzZWN1cmVfcmVuZWdvdGlhdGU6IkVuYWJsZSBzZWN1cmUgcmVuZWdvdGlhdGlvbiIsc3NsX2NlcnRpZmljYXRlX21heF9kZXB0aDoiTWF4aW11bSBwZWVyIGNlcnRpZmljYXRlIGRlcHRoIix0bHNfdmVyc2lvbnM6IlNwZWNpZnkgcGVybWl0dGVkIHNlcnZlciBTU0wvVExTIHByb3RvY29sIHZlcnNpb25zIix2ZXJpZnlfZnVuOiJTU0wgdmVyaWZpY2F0aW9uIGZ1bmN0aW9uIGxvY2F0b3IiLHZlcmlmeV9zc2xfY2VydGlmaWNhdGVzOiJJZiBgdHJ1ZWAgZW5hYmxlcyBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24ifSxzdGF0czp7X186IntWMn1taXNjLmh0bWwje2tleX0iLCIiOiJTdGF0aXN0aWMgY2FsY3VsYXRpb24iLHJhdGU6IlJhdGUgb2Ygc3RhdGlzdGljcyBnYXRoZXJpbmcgaW4gbWlsbGlzZWNvbmRzIixzYW1wbGVzOiJJbnRlcnZhbHMgZm9yIG1lYW4gYW5kIHN0YW5kYXJkIGRldmlhdGlvbiwgc2Vjb25kcyJ9LHV1aWRzOntfXzoie1YyfW1pc2MuaHRtbCN7a2V5fSIsIiI6IlVVSURzIGNvbmZpZyIsYWxnb3JpdGhtOiJHZW5lcmF0aW9uIGFsZ29yaXRobSwgYHJhbmRvbWAsIGBzZXF1ZW50aWFsYCwgYHV0Y19yYW5kb21gLCBgdXRjX2lkYCIsbWF4X2NvdW50OiJQZXItcmVxdWVzdCBVVUlEIGxpbWl0LCBudW1iZXIiLHV0Y19pZF9zdWZmaXg6IlN1ZmZpeCB0byBhcHBlbmQgd2hlbiBgdXRjX2lkYCBVVUlEIGdlbmVyYXRvciBpcyB1c2VkIn0sdmVuZG9yOntfXzoie1YyfW1pc2MuaHRtbCN7a2V5fSIsIiI6IlZlbmRvciBpbmZvcm1hdGlvbiIsIioiOiJLZXkgaXMgYSBrZXkgZm9yIGBHRVQgL2AgcmVzcG9uc2UsIHZhbHVlIGlzIHJldHVybmVkIHVuZGVyIHRoZSBrZXkifSx2aG9zdHM6e19fOiJ7VjJ9aHR0cC5odG1sI3trZXl9IiwiIjoiVmlydHVhbCBob3N0cyBsaXN0IiwiKiI6IktleSBpcyBsaWtlIGBkb21haW4ubmFtZTo1OTg0YCwgdmFsdWUgaXMgYC9kYm5hbWUvZG9jLy4uLmAifSx2aWV3X2NvbXBhY3Rpb246e19fOiJ7VjJ9Y29tcGFjdGlvbi5odG1sI3trZXl9IiwiIjoiVmlld3MgY29tcGFjdGlvbiBvcHRpb25zIixrZXl2YWx1ZV9idWZmZXJfc2l6ZToiS2V5LVZhbHVlcyBidWZmZXIgc2l6ZSwgYnl0ZXMifSxjb3VjaGJveDp7X186IntDQn0jY291Y2hib3gtMSIsIiI6IkNvdWNoYm94IGNvbmZpZyIsZGVidWc6IlR1cm5zIG9uIGRlYnVnIG1vZGUgKG1vcmUgaW5mb3JtYXRpdmUgbWVzc2FnZXMpIixub2RlbmFtZToiU2hvcnRjdXQgbmFtZSBvZiBjdXJyZW50IG5vZGUiLG5vZGVzOiJMaXN0IG9mIG5vZGVzLCBKU09OOyBub2RlbmFtZXMgYXJlIGtleXMsIFVSTHMgYXJlIHZhbHVlcyIsbWF4X3BhcmFsbGVsX2NoYW5nZXM6Ik1heGltdW0gY2hhbmdlcyB0aWNrcyBwcm9jZXNzZWQgc2ltdWx0YW5lb3VzbHkiLGNvbGRfc3RhcnQ6IkRlZmluZXMgaWYgZmlyc3QgcnVuIHN0YXJ0cyBmcm9tIGN1cnJlbnQgc2VxdWVuY2VzIG9yIERCIGZpcnN0IHNlcSAoJ25vcm1hbCcpIixhcGk6IkNvbmZpZ3VyZXMgUkVTVCBBUEksIEpTT04iLHByb3h5OiJQcm94eSBzZXR0aW5ncywgSlNPTi4gRGVmYXVsdCBpcyBhIG1hc2sgYSBwYXRoIHJld3JpdGVzIGludG8iLHNvY2tldDoiU29ja2V0LmlvIGNvbmZpZyIsbWFpbDoiRW1lcmdlbmN5IG5vdGlmaWNhdGlvbnMgZW1haWxzIixyZWRpc19pcDoiUmVkaXMgZG9tYWluIG9yIElQIGFkZHJlc3MiLHJlZGlzX3BvcnQ6IlJlZGlzIHBvcnQiLHJlZGlzX3Bhc3N3b3JkOiJSZWRpcyBwYXNzd29yZCwgaWYgYW55IixyZWRpc19jb21tYW5kZXI6IlJlZGlzIGNvbW1hbmRlciBjb25maWcsIEpTT04ifSxjb3VjaGJveF9hcGk6e19fOiJ7Q0J9I3Jlc3QtYXBpIiwiIjoiTGlzdCBvZiBlbmRwb2ludHMgYW5kIGRkb2NzIGF0dGFjaGVkIHRvIHRoZW0iLCIqIjoiS2V5IGlzIGVuZHBvaW50IHdpdGggYWxsIGAvYCByZXBsYWNlZCB3aXRoIGAhYCwgdmFsdWUgaXMgYGRiL2Rkb2MgcGx1Z2luMSBwbHVnaW4yIC4uLmAifSxjb3VjaGJveF9ob29rczp7X186IntDQn0jaG9va3MtY29uZmlndXJhdGlvbiIsIiI6Ikxpc3Qgb2YgZGVzaWduIGRvY3VtZW50cyB3aXRoIGhvb2tzIGFuZCBwbHVnaW5zIHRoZXkgY2FuIHVzZSIsIioiOiJLZXkgaXMgcGF0aCBvZiBkZG9jLCB2YWx1ZSBpcyBhIGxpc3Qgb2YgcGx1Z2lucyBhdmFpbGFibGUgZm9yIHRoZSBkZG9j4oCZcyBob29rcyJ9LGNvdWNoYm94X3BsdWdpbnM6e19fOiJ7Q0J9I2NvdWNoYm94LXBsdWdpbnMiLCIiOiJDb3VjaGJveCBwbHVnaW5zIGNvbmZpZyIsIioiOiJLZXlzIGlzIGEgcGx1Z2luIG5hbWUsIHZhbHVlIGlzIEpTT04gcGx1Z2luIGNvbmZpZyJ9fX0sJGFib3V0OntMX1BITzoiUGhvdG9uIHZlcnNpb24iLExfUEhPQUREOiJQaG90b24gYWRkb25zIixMX1BIT0xJQlM6IlBob3RvbiBsaWJzIixUSVBfUEhPTElCUzoiU2hvdyBsaWJzLi4uIixMX1BIT0hJU1Q6IlBob3RvbiBoaXN0b3J5IixUSVBfUEhPSElTVDoiU2hvdyB2ZXJzaW9ucy4uLiIsVFhUX1BIT0hJU1Q6JzxoMz5QaG90b24gaGlzdG9yeTwvaDM+PHVsIGNsYXNzPSJmczkwIG10OCBtYjEyIiBzdHlsZT0ibWF4LWhlaWdodDozNTBweDtvdmVyZmxvdy15OnNjcm9sbDsiPnsxfTwvdWw+JyxMX1BIT0ZPTlRTOiJGb250cyB1c2VkIixMX1ZFUjoiQ291Y2hEQiB2ZXJzaW9uIixMX1ZFTkRPUjoiVmVuZG9yIixMX1VSTDoiTm9kZSBVUkwiLExfQ09VQ0g6IldlbGNvbWUgbXNnIixMX0ZFQVQ6IkF1eCBmZWF0dXJlcyIsTF9DTFVTVEVSOiJDbHVzdGVyIixUWFRfQ0xVU1RFUjpmdW5jdGlvbih4KXtyZXR1cm4geCsoeCUxMD09MSYmeCUxMDAhPTExPyIgbm9kZSI6IiBub2RlcyIpfSxMX1BFUkY6Ik5vZGUgdG9vbHMiLExfUEVSRlRFU1Q6IlBlcmYgdGVzdC4uLiIsVElQX1BFUkZURVNUOiJSdW4gc3VwZXJmaWNpYWwgQ291Y2hEQiBwZXJmb3JtYW5jZSB0ZXN0IGluIHNlcGFyYXRlIGJyb3dzZXIgdGFiIixMX0xPR1M6IkxvZ3MuLi4iLFRJUF9MT0dTOiJTaG93IENvdWNoREIgbG9ncyIsTF9TV1ZFUlM6IlZlcnNpb25zLi4uIixUSVBfU1dWRVJTOiJTaG93IENvdWNoREIgc2VydmVyIHNvZnR3YXJlIHZlcnNpb25zIixMX0dJVEhVQjoiUGhvdG9uIGF0IEdpdGh1YiIsTF9TT1VSQ0VTOiJTb3VyY2UgY29kZSIsTF9ETDoiRG93bmxvYWQgUGhvdG9uIGFwcCBqc29uLi4uIixMX0RMX0xJTks6IkNsaWNrIHRvIGRvd25sb2FkIixMX0RMUFJFUDoiUHJlcGFyaW5nIGpzb24uLi4iLExfQ0hFQ0tfVVBEQVRFUzoiQ2hlY2sgZm9yIHVwZGF0ZXMiLFRYVF9VUEQ6J05ldyB2ZXJzaW9uIGZvdW5kLiBMb2NhbCB2ZXJzaW9uIGlzIDxub2JyIGNsYXNzPSJib2xkZXIiPnsxfTwvbm9icj4sIGxhdGVzdCBpcyA8bm9iciBjbGFzcz0iYm9sZGVyIj57Mn08L25vYnI+LiB7M30gJyxUWFRfVVBEX0ZFQVRVUkVTOic8dWwgY2xhc3M9ImZzOTAgbXQ4IG1iMTIiIHN0eWxlPSJtYXgtaGVpZ2h0OjM1MHB4O292ZXJmbG93LXk6c2Nyb2xsOyI+ezF9PC91bD4nLE1TR19VUERfTk9ORUVEOiJObyB1cGRhdGUgbmVlZGVkIixCVE5fVVBEQVRFOiJVcGRhdGUgUGhvdG9uIixCVE5fQ0FOQ0VMOiJDYW5jZWwiLEVSUl9VUERBVEVfQ0hFQ0s6IkZhaWxlZCByZWFkaW5nIG5ldyB2ZXJzaW9uLCBzb3JyeSIsRVJSX1VQREFURToiRmFpbGVkIHVwZGF0aW5nIFBob3Rvbi4gU2VydmVyIHJlc3BvbmRlZCB7MX06wqB7Mn0iLE1TR19VUERBVEVfT0s6IlBob3RvbiB3YXMgdXBkYXRlZCwgcGxlYXNlIHJlbG9hZCB0aGUgcGFnZSIsU19USVRMRToiQ3VzdG9taXplIFBob3RvbiIsU19SRVBPOiJVcGRhdGUgcmVwbyBVUkwiLFNfVVBEOiJVcGRhdGUgcmVtaW5kZXIiLFRBR19VUEQ6e3RhZ3M6W1t7TmV2ZXI6Im5vIn1dXSxlbXB0eTp7IlRpbWUgdG8gdGltZSI6InJlbWluZCJ9fSxTX1BJTkc6IlBpbmcgL19zZXNzaW9uIixUQUdfUElORzp7dGFnczpbW3siRXZlcnkgbWluIjoiMSJ9LHsiRXZlcnkgNeKAiW1pbiI6IjUifV1dLGVtcHR5OntOZXZlcjoiMCJ9fSxTX1NDUk9MTDoiU2Nyb2xsYmFycyIsVEFHX1NDUk9MTDp7dGFnczpbW3siSG92ZXIgc2xpbSI6IjMifSx7IlNsaW0gJiBicmlzayI6IjQifV1dLGVtcHR5OntOYXRpdmU6IjAifX0sU19GRkFNSUxZOiJVSSBmb250IGZhbWlseSIsU19GV0VJR0hUOiJGb250IHdlaWdodCIsVEFHX0ZXRUlHSFQ6e3RhZ3M6W3tUaGluOiIzMDAifV0sZW1wdHk6e05vcm1hbDoiNDAwIn19LFNfRkNGQU1JTFk6Ijxjb2RlPkNvZGU8L2NvZGU+IGZvbnQgZmFtaWx5IixTX1BPTEw6IlRhc2sgcG9sbCBpbnRlcnZhbCIsU19TVEFUU19QT0xMOiJTdGF0cyBwb2xsIGludGVydmFsIixTX0lDT046IkJyb3dzZXIgdGFiIGljb24iLFNfQ09MUzoiREIgbGlzdCBjb2x1bW5zIixUQUdfQ09MUzpbeyJEQiBzaXplIjoiaW5mbyJ9LHsiQUNMIGluZm8iOiJzZWN1cml0eSJ9XSxTX1RIRU1FOiJVSSB0aGVtZSIsVEFHX1RIRU1FOnt0YWdzOltbe0Rhcms6ImRhcmsifSx7Ik1hdGNoIGJyb3dzZXIiOiJhdXRvIn1dXSxlbXB0eTp7TGlnaHQ6IiJ9fSxTX0dST1VQOiJEQiBncm91cHMiLFRBR19HUk9VUDp7dGFnczpbW3sxMDoidGlueSJ9LHszMDoic21hbGwifSx7MTAwOiJub3JtYWwifSx7MjUwOiJsYXJnZSJ9XSxbe1ByZWZpeGVkOiJhdXRvIn1dXSxlbXB0eTp7Tm86IiJ9LHRhZ3NoaW06IiIsZ3JvdXBzaGltOiLigIoifSxCVE5fSUNPTjoiVXBsb2FkIG5ldyBpY29u4oCmIixCVE5fSUNPTl9SRVNFVDoiUmVzZXQgaWNvbiIsQlROX0FQUExZOiJBcHBseSJ9LCRsb2c6e1RYVF9USVRMRToiTG9ncyIsVFhUX0tCOiJrYiIsVFhUX1NJWkU6IlNob3ciLFRYVF9PRkZTRVQ6Im9mZnNldCIsUExDX1NFQVJDSDoiU2VhcmNoIGluIGxvZ3MiLFBMQ19SRUxPQUQ6IlJlbG9hZCIsVEFHX0RJUjp7dGFnczpbeyLigKZhdCB0aGUgYm90dG9tIjoiZm9yd2FyZCJ9XSxlbXB0eTp7IkxhdGVzdCBhdCB0aGUgdG9wIjoicmV2ZXJzZSJ9fX0sJGVycm9yOntUWFRfRVJSOic8ZGl2IGNsYXNzPSJyZWQgdGFsIHc1MHAgcGw3MCBsaDE3MCBkaWIgdmF0Ij5FcnJvciBzd2l0Y2hpbmcgPGk+ezF9PC9pPjxicj48c3BhbiBjbGFzcz0iYm9sZGVyIj57Mn08L3NwYW4+PC9kaXY+JyxCVE5fUkVUUlk6JzxzcGFuIGNsYXNzPSJmaS1yZWZyZXNoIG82MCI+PC9zcGFuPsKgVHJ5IGFnYWluwqAnLEJUTl9BVVRIOic8c3BhbiBjbGFzcz0iZmktdG9yc28gbzYwIj48L3NwYW4+IExvZyBpbiAnLFRYVF9DM19BTExfREJTXzQwMTonPGRpdiBjbGFzcz0idGFsIHc1MHAgcGw3MCBsaDE3MCBkaWIgdmF0Ij5Tb3JyeSwgQ291Y2hEQiAzIGhpZGVzIGZ1bGwgbGlzdCBvZiBEQnMgZnJvbSBub24tYWRtaW4gdXNlcnMuIFRvIG5hdmlnYXRlIHRocm91Z2ggREJzIHNlbGVjdCBhIERCIHlvdSB2aXNpdGVkIHJlY2VudGx5IChpZiBhbnkpLCBvciBlbnRlciBrbm93biBEQiBuYW1lLjwvZGl2PicsUExDX0RCTkFNRToiRW50ZXIgZXhpc3RpbmcgREIgbmFtZSIsQlROX0dPOiJPcGVuIERCIn19fSxCYXNlOiIiLEFsbDp7fSxHcm91cHM6e30sVGFiczpbXSxUeXBlczpbXSxIaXN0b3J5OltdLERvd25sb2FkVVJMOiExLFJlcGxpY2F0b3JEQjoiIixpc0NsdXN0ZXI6ITAsaXNJRTohMSxpT1M6ITEsaXNXZWJLaXQ6ITEsaXNNYWM6ITAsY2FuWmlwOm51bGwsQ291Y2g6e3ZlcnNpb246IiIscTowLG46MCxwb3J0OjU5ODR9LFVzZXJzOntfc2VxOjB9LE1lbWJlcnNoaXA6e30sUGFuZWxIZWlnaHQ6MCxpc0JhcjohMSxDTXByZWZpeDoiamkiLGRhdGE6e3BhdGg6W10sbmFtZToiIixmb250OiJpbmhlcml0Iixmb250Q29kZToiQ291c2luZSJ9LHBhcmFtczp7cmVzdHlsZToxNixzdHJpY3Q6ITB9LGluaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPShhLmRhdGEsYS5DZmcpLGM9JC5EZWZlcnJlZCgpLGQ9d2luZG93LkRET0MsZT13aW5kb3cubG9jYXRpb24sZj13aW5kb3cubmF2aWdhdG9yLGc9T2JqZWN0LmtleXMoYSkuZmlsdGVyKC9eXCQvKTt0cnl7bmV3IFJlZ0V4cCgiXlxccHtFbW9qaX0iLCJ1Iil9Y2F0Y2goeCl7YS5VLnRhZ0Vtb2ppPWEuVS5ub29wfWEudGFnRW1vamk9YS5VLnRhZ0Vtb2ppLGEuX2NvbXBpbGVkPWEuX2NvbXBpbGVkfHwhKGN3LmRic3x8ImJvb2xlYW4iPT10eXBlb2YgY3cuZGVidWcpLE9iamVjdC5rZXlzKGEuRikuZm9yRWFjaCh4PT5hW3hdPWFbeF18fGEuRlt4XS5iaW5kKGEpKSxbIiR2aWV3IiwiJGZpbGUiLCJWaWV3RWQiXS5mb3JFYWNoKHg9PmFbeF0uQ01wcmVmaXg9YS5DTXByZWZpeCksYS5TZXNzaW9uPWEuU2Vzc2lvbi5kZWJvdW5jZSgxZTMpLGEuVHlwZXM9Zy5zbGljZSgwKSxhLmlzSUU9ISFmLnVzZXJBZ2VudC5tYXRjaCgvRWRnZXxUcmlkZW50LyksYS5pc01hYz0vTWFjLy50ZXN0KGYucGxhdGZvcm0rIiIpLGEuaU9TPS9eKGlQYWR8aVBob25lKSQvLnRlc3QoZi5wbGF0Zm9ybSsiIil8fGEuaXNNYWMmJmYubWF4VG91Y2hQb2ludHM+MSxhLmlzV2ViS2l0PSFhLmlzSUUmJi9BcHBsZVdlYktpdC8udGVzdChmLnVzZXJBZ2VudCsiIiksYS5Mcz1hLkxzKCksYS5McygiVGFza3MuU3RhcnMiKSYmKGEuTHMoIkRCcy5TdGFycyIsYS5McygiVGFza3MuU3RhcnMiKSksYS5McygiVGFza3MuU3RhcnMiLG51bGwpKSxhLkJhc2V8fChhLkJhc2U9ZD9kLl9iYXNlOltlLnByb3RvY29sLCIiLGUuaG9zdCwiIl0uY29tcGFjdCgpLmpvaW4oIi8iKSksYS5fY29tcGlsZWQmJi9eV2luLy50ZXN0KGYucGxhdGZvcm0rIiIpJiYkKCIjc2Nyb2xsYmFyLXR3ZWFrIikudGV4dChbIiB7d2lkdGg6NHB4OyBoZWlnaHQ6NHB4O30iLCItdGh1bWIge2JhY2tncm91bmQ6cmdiYSg5MCw5MCw5MCwwLjIpOyBib3JkZXItcmFkaXVzOjJweDt9IiwiLXRyYWNrIHtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsMCk7Il0ubWFwKHg9PiI6Oi13ZWJraXQtc2Nyb2xsYmFyIit4KS5qb2luKCJcbiIpKSx4Lmh0bWwoYS5IVE1MKSxPYmplY3Qua2V5cyhhLkVkKS5mb3JFYWNoKGZ1bmN0aW9uKHgpe2EuRWRbeF0uaWQmJihhLkVkW3hdPSQuZXh0ZW5kKCEwLCQubXkuY2FjaGUoYS5FZFt4XS5pZCl8fHt9LGEuRWRbeF0se1BobzphLlBobyxVOmEuVX0pKX0pO3ZhciBoPWEuRWQuanNvbnRyZWU7aC5VPWEuVSxoLiRmaWxlcy5BZGQuUGhvPWEuUGhvLCQuZXh0ZW5kKCEwLGguJGZpbGVzLnVpLHsiLmlrZXkiOmguJG11bHRpLnVpWyIuaWtleSJdLCIuYnRuLWpzb24iOmguJG11bHRpLnVpWyIuYnRuLWpzb24iXX0pLFsiSGlzdG9yeSIsIkhUTUwuSGlzdG9yeVJvdyIsIkV4dEVkLk5vZGVVcGRhdGVkIiwiRXh0RWQuRWRpdG9ySW52b2tlZCIsInN0eWxlLiAiLCJjbWRVbmRvIiwidWkuI2RvYy1oaXN0b3J5IiwidWkuI3N0eWxlLWhpc3RvcnkiLCJ1aS4jZW1wdHktaGlzdG9yeSIsInVpLiNidG4taGlzdG9yeS11bmRvIiwic3R5bGUuICNkb2MtaGlzdG9yeSJdLmZvckVhY2goZnVuY3Rpb24oeCl7Y3cubGliLnVubWFzayhhLiRjb25maWcsY3cubGliLmdldHJlZihhLiRkb2MseCkseCl9KSxhLiRzdGF0cz0kLmV4dGVuZCghMCx7fSwkLm15LmNhY2hlKGEuJHN0YXRzLmlkKXx8e30sYS4kc3RhdHMpO3ZhciBpPVsiVGFiIiwiTG9naW4iLCJMb2dvdXQiLCJSZXFKU09OIiwiQ29tcGFjdCIsIk5ld0RCIiwiRGVsREIiLCJTZWNPYmoiLCJVc2VyRG9jIiwiTWFuZ29FZCIsIlZpZXdFZCIsIkluZGV4RWQiLCJTcWxFZCIsIk5ld0luZGV4IiwiU3luY1Rhc2siLCJTeW5jVGFzay5EdW1wWmlwIiwiU3luY1Rhc2suVW5kdW1wIl0uYWRkKGcpLGo9WyJpc0lFIiwiaU9TIiwiaXNXZWJLaXQiLCJ0YWdFbW9qaSIsIlBobyIsIlJlcSIsInRydW5jIiwicDJ1IiwiU2VsMlNjcm9sbCIsIm5pY2VTY3JvbGwiLCJzZWxlY3QyIl07aWYoaS5mb3JFYWNoKGZ1bmN0aW9uKHgpe3ZhciBiPWN3LmxpYi5nZXRyZWYoYSx4KTtiJiYoYi5sYW5nJiYkLmV4dGVuZChiLmxhbmcsYS5sYW5nW3hdfHx7fSksai5mb3JFYWNoKGZ1bmN0aW9uKHgpe2JbeF09YVt4XX0pLGIuQnVzeT1hLkYuQnVzeSl9KSxhLmoyaD1hLkVkLmpzb250cmVlLmoyaCx4Lm9uKCJ0YWJjbG9zZS5teSIsKHgsYik9PmEuQ2xvc2UoYikpLGEuX2NvbXBpbGVkKXt2YXIgaz1hLkxzKCJUYWJDbG9zZUhpc3RvcnkiKTtpZihrJiZrLmxlbmd0aClpZihEYXRlLm5vdygpLWtbMF0uc3RhbXA8M2U0KWEuVGFicz1PYmplY3QuY2xvbmUoa1swXS50YWJzLCEwKTtlbHNle3ZhciBsPVtdO2suZm9yRWFjaChmdW5jdGlvbih4KXtEYXRlLm5vdygpLXguc3RhbXA+MTU1NTJlNnx8bC5sZW5ndGg8eC50YWJzLmxlbmd0aCYmKGw9eC50YWJzKX0pLGwubGVuZ3RoJiYoYS5UYWJzPU9iamVjdC5jbG9uZShrWzBdLnRhYnMsITApKX12YXIgbT1hLkxzKCJDZmciKTttPU9iamVjdC5pc09iamVjdChtKT9tOnt9LCQuZXh0ZW5kKCEwLGEuQ2ZnLG0pLCQuZXh0ZW5kKGEuQ2ZnLE9iamVjdC5zZWxlY3QobXx8e30sWyJsaXN0Q29scyIsImdyb3VwaW5nIl0pKSwiJ1BUIE1vbm8nIj09YS5DZmcuZm9udENvZGUmJihhLkNmZy5mb250Q29kZT0iQ291c2luZSIpLCInUFQgTW9ubyciPT1hLkNmZy5mb250JiYoYS5DZmcuZm9udD0iQ291c2luZSIpLGEuQ2ZnLnRhYkJhcj0iYXV0byIsJC5uaWNlc2Nyb2xsLm9wdGlvbnMubW91c2VzY3JvbGxzdGVwPTI1KmEuQ2ZnLnNjcm9sbFNwZWVkLTUsJC5leHRlbmQoYS5DZmcsZCYmZC5zZXR0aW5ncz9kLnNldHRpbmdzOnt9KX1yZXR1cm4gYj1hLkNmZyx4LnRoZW4oZnVuY3Rpb24oKXthLl9jb21waWxlZHx8KGN3LmxvZygiUGhvdG9uIHN0YXJ0ZWQgaW4gQ2xvdWRXYWxsIikseC5vbigiY2xpY2subXkiLCJhIixmdW5jdGlvbih4KXt2YXIgYj0kKHguY3VycmVudFRhcmdldCkuYXR0cigiaHJlZiIpO2lmKCIjIj09YlswXSl7dmFyIGM9ZGVjb2RlVVJJQ29tcG9uZW50KGIucmVwbGFjZSgvXiMrXC8/LywiIikpLnNwbGl0KCIvIikuY29tcGFjdCghMCk7cmV0dXJuIGEuU3dpdGNoKGMpLCExfX0pLGEuVGFicy5sZW5ndGh8fHguZmluZCgiI2wtcm9vdHRhYiAjbC1yb290IikudHJpZ2dlcigiY2xpY2siKSksYS5fY29tcGlsZWQmJighZnVuY3Rpb24oeCl7ZnVuY3Rpb24gYigpe3ZhciB4PShlLmhhc2grIiIpLnJlcGxhY2UoL14jKy8sIiIpLnNwbGl0KCIvIikubWFwKGRlY29kZVVSSUNvbXBvbmVudCk7Il9kZXNpZ24iPT14WzFdJiYoeFsyXT0iX2Rlc2lnbi8iK3hbMl0seC5yZW1vdmVBdCgxKSksYS5Td2l0Y2goeCl9JCh3aW5kb3cpLm9uKCJoYXNoY2hhbmdlLnBobyIsYi5kZWJvdW5jZSgxZTMvNjArMykpLG51bGwhPXgmJihlLmhhc2g9eCsiIiksJCh3aW5kb3cpLnRyaWdnZXIoImhhc2hjaGFuZ2UiKX0oKSwkKCdsaW5rW3JlbD0iaWNvbiJdJykuYXR0cigiaHJlZiIsYi5pY29ufHxhLmZpbGVzWyJmYXZpY29uLnBuZyJdLnVybCksd2luZG93Lm9uYmVmb3JldW5sb2FkPWZ1bmN0aW9uKHgpe2lmKGEuVGFicy5maW5kKHg9PnguaGFzaDAhPXguaGFzaDEpKXt2YXIgYj1hLmxhbmcuRExHX1VOTE9BRDt4LnJldHVyblZhbHVlPWJ9cmV0dXJuIGJ9LCQod2luZG93KS5vbigidW5sb2FkIixmdW5jdGlvbigpe3ZhciB4PU9iamVjdC5jbG9uZShhLlRhYnMsITApLGI9YS5McygiVGFiQ2xvc2VIaXN0b3J5Iil8fFtdO2IudW5zaGlmdCh7c3RhbXA6RGF0ZS5ub3coKSx0YWJzOngubWFwKGZ1bmN0aW9uKHgpe3JldHVybiB4LnJ1bj0hMSx4LmVycm9yPSExLHguaGFzaDA9eC5oYXNoMT0iIix4fSl9KSxhLkxzKCJUYWJDbG9zZUhpc3RvcnkiLGIudG8oMykpfSksYS5VcGRhdGVyLmRlYm91bmNlKDFlMykoKSxhLnBpbmdTZXNzaW9uLmV2ZXJ5KDFlNCksd2luZG93Lm1hdGNoTWVkaWEmJndpbmRvdy5tYXRjaE1lZGlhKCIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIikuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIixmdW5jdGlvbih4KXsiYXV0byI9PWEuQ2ZnLnRoZW1lJiZhLlNldFRoZW1lKCJhdXRvIil9KSksYS5teS5yZXN0eWxlKCl9LmRlYm91bmNlKDEwKSksYS5HZXRMaXN0KCkuYWx3YXlzKGZ1bmN0aW9uKCl7Yy5yZXNvbHZlKCl9KSxjLnByb21pc2UoKX0sdWk6eyIjbC1yb290Ijp7aW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzO3guYXR0cigidGl0bGUiLGEubGFuZy5USVBfUk9PVCkseC5vbigiZGJsY2xpY2subXkiLGZ1bmN0aW9uKCl7cmV0dXJuIGEuQ2xvc2VBbGwuZGVsYXkoNTApLCExfSl9LGJpbmQ6ZnVuY3Rpb24oeCl7cmV0dXJuW3RoaXMuU1ZHLmxvZ28sJzxzcGFuIGNsYXNzPSJub2JhciBwbDggZnMxMTUgdzIyMCBudyBvaCBlbGwgbGgxODAiPicsd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLCI8L3NwYW4+Il0uam9pbigiIil9fSwiI2J0bi1hc2lkZS1hdXRoIjp7YmluZDpmdW5jdGlvbih4LGEsYil7dmFyIGM9dGhpcyxkPWN3Lm1lKCksZT1jLmlzQmFyLGY9IiI7aWYoYi5hdHRyKCJ0aXRsZSIsZD9jLmxhbmcuVElQX1BST0ZJTEU6Yy5sYW5nLlRJUF9MT0dJTiksZj0nPHNwYW4gaWQ9ImJ0bi1hdXRoLXBvcHVwIj57MX08L3NwYW4+Jy5hc3NpZ24oZD9jLlNWRy51c2VyOmMuU1ZHLmxvZ2luKSxudWxsPT1hKXJldHVybiBmO2lmKGIuZGF0YSgibW9kYWwiKSliLm1vZGFsKCEwKTtlbHNlIGlmKGQpeyhjdy5tZSgicm9sZXMiKXx8W10pLmxlbmd0aDt2YXIgZz1jLmlzQmFyPzI1MDpjLm15LmZpbmQoIiNsLWhlYWRlciIpLndpZHRoKCktNDI7Yy5teS5tb2RhbCgiI2J0bi1hc2lkZS1hdXRoIix7Ym91bmQ6NSxtYW5pZmVzdDpjLkxvZ291dCx3aWR0aDpnLG5vc2U6ZT8idG9wIjoiYm90dG9tIixhbGlnbjoiezF9O3JpZ2h0Oi00NHB4OyIuYXNzaWduKGU/InRvcDo4NyUiOiJib3R0b206MTE3JSIpLGVzYzohMCxlbnRlcjohMSxzY3JlZW46ITEsejoxOTk2fSl9ZWxzZSBjLm15Lm1vZGFsKCIjYnRuLWFzaWRlLWF1dGgiLHttYW5pZmVzdDpjLkxvZ2luLGJvdW5kOjIsd2lkdGg6MzIwLGNsb3NlOiExLGVzYzohMCxlbnRlcjohMSxzY3JlZW46ITAsZ2xvYmFsOiEwLHo6M2UzLGNzczoicDIwIHB0MTUgeGdyYXkifSk7cmV0dXJuIGZ9LGV2ZW50czoiY2xpY2subXkiLGxpc3Rlbjp7dXNlckN0eDpmdW5jdGlvbih4LGEpe09iamVjdC5pc09iamVjdChhKSYmdGhpcy5teS5jaGVjaygiI2J0bi1hc2lkZS1hdXRoIil9fX0sIiNidG4tYXNpZGUtY29uZmlnIjp7YmluZDpmdW5jdGlvbih4LGEsYil7cmV0dXJuIGIuYXR0cigidGl0bGUiLHRoaXMubGFuZy5USVBfQ09ORklHKSwnPGEgaHJlZj0iI19jb25maWciPicrdGhpcy5TVkcuY29uZmlnKyI8L2E+In19LCIjYnRuLWFzaWRlLXNoYXJlIjp7YmluZDpmdW5jdGlvbih4LGEsYil7cmV0dXJuIGIuYXR0cigidGl0bGUiLHRoaXMubGFuZy5USVBfU0hBUkUpLCc8YSBocmVmPSIjX2Fib3V0Ij4nK3RoaXMuU1ZHLnNoYXJlKyI8L2E+In0sZXZlbnRzOiJjbGljay5teSJ9LCIjYnRuLWNsb3NlLWFjdGl2ZS10YWIiOntiaW5kOmZ1bmN0aW9uKHgsYSl7bnVsbCE9YSYmdGhpcy5teS5maW5kKCIjbC1hcHB0YWJzIC5sLXRhYi5hY3RpdmUgI2J0bi10YWJjbG9zZSIpLnRyaWdnZXIoImNsaWNrLm15Iil9LGV2ZW50czoiY2xpY2subXkifSwiI2J0bi1jbG9zZS1hbGwtdGFicyI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gbnVsbCE9YSYmdGhpcy5DbG9zZUFsbC5kZWxheSg1MCwhMCksdGhpcy5sYW5nLkJUTl9YQUxMfSxldmVudHM6WyJjbGljay5teSJdfSwiI2wtYXBwdGFicyI6e2luaXQ6ZnVuY3Rpb24oeCl7eC5zb3J0YWJsZSh7ZGlzdGFuY2U6NX0pfSxkZWxheToxLG1lcmdlOiExLGlkOlsiaWQiXSxoYXNoOmZ1bmN0aW9uKHgpe3JldHVybiBjdy5saWIuc2RibShbeC5uYW1lLHguYWN0aXZlLHguZXJyb3IseC5oYXNoMCx4Lmhhc2gxXSl9LGxpc3Q6JzxkaXYgY2xhc3M9ImwtdGFiIj48L2Rpdj4nLGJpbmQ6InRoaXMuVGFicyIsbWFuaWZlc3Q6InRoaXMuVGFiIn19LHN0eWxlOnsiICAiOmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj14LndpZHRoKCksYz0hKGI+PTE0MjAmJiJ0b3AiIT1hLkNmZy50YWJCYXIpLGQ9YS5DZmcsZT1kLmZvbnQrIiIsZj1hLmlzTWFjLGc9L0xpbnV4Ly50ZXN0KHdpbmRvdy5uYXZpZ2F0b3IucGxhdGZvcm0rIiIpLGg9YjwoYz8xMzgwOjE1MTApPzE1OjE2LGk9aC0xLjgsaj1kLmZvbnRXZWlnaHQsaz0iJy1hcHBsZS1zeXN0ZW0nLCdCbGlua01hY1N5c3RlbUZvbnQnLCdIZWx2ZXRpY2EgTmV1ZScsJ1NlZ29lIFVJJyxVYnVudHUsSGVsdmV0aWNhLFRhaG9tYSxWZXJkYW5hLHNhbnMtc2VyaWYiOyJhdXRvIiE9ZSYmKGs9ZSsiLHNhbnMtc2VyaWYiKTt2YXIgbD0iQ291c2luZSx1aS1tb25vc3BhY2UsTW9uYWNvLENvbnNvbGFzLG1vbm9zcGFjZSI7ImF1dG8iIT1kLmZvbnRDb2RlJiYiQ291c2luZSIhPWQuZm9udENvZGUmJihsPSInIitkLmZvbnRDb2RlKyInLENvdXNpbmUsdWktbW9ub3NwYWNlLG1vbm9zcGFjZSIpLGEuZGF0YS5mb250PWssYS5kYXRhLmZvbnRDb2RlPWw7dmFyIG09ImZvbnQtZmFtaWx5OiAiK2srIjtmb250LXdlaWdodDp7Mn07IixuPW0rImZvbnQtc2l6ZTp7MX1weCFpbXBvcnRhbnQ7IjthLl9jb21waWxlZCYmKCQoImJvZHkiKS5jc3MoeyJmb250LWZhbWlseSI6aywiZm9udC13ZWlnaHQiOmp9KSwkKCIjY3ctYm9keSIpLmNzcyh7ImZvbnQtZmFtaWx5IjprLCJmb250LXdlaWdodCI6an0pKTt2YXIgbz0iZm9udC13ZWlnaHQ6ezF9IWltcG9ydGFudDsiLmFzc2lnbigoK2orKGY/MTAwOjE1MCkpLmNsYW1wKDQwMCw2MDApKTtyZXR1cm4gYS5fY29tcGlsZWQmJiQoIiNjdy1ub3RlcyIpLmNzcyh7dG9wOmM/IjUwcHgiOiIxOHB4In0pLHsiIjpuLmFzc2lnbihoLGopKyJsaW5lLWhlaWdodDoxLjZlbTsiLCIgLnBsc2hpbSI6Yj4oYz8xMjcwOjE2MDApPyJwYWRkaW5nLWxlZnQ6MTZweDsiOiIiLCIgYnV0dG9uLCBpbnB1dCwgdGV4dGFyZWEiOm0uYXNzaWduKCItIixqKSwiIC5Db2RlTWlycm9yLCAucHJlIjoiZm9udC1zaXplOnsxfXB4IWltcG9ydGFudDsgZm9udC1mYW1pbHk6ezJ9IWltcG9ydGFudDsiLmFzc2lnbihpLGwpLCIgY29kZSI6ImZvbnQtZmFtaWx5OnsxfSFpbXBvcnRhbnQ7Ii5hc3NpZ24obCksIiAuanNvbmRpZmZwYXRjaC1kZWx0YSwgLmpzb25kaWZmcGF0Y2gtZGVsdGEgcHJlIjoiZm9udC1mYW1pbHk6ezF9IWltcG9ydGFudDsiLmFzc2lnbihsKSwiICNkaWZmLmpzb25kaWZmIjoiZm9udC1zaXplOnsxfXB4IWltcG9ydGFudDsiLmFzc2lnbihpKSwiIC5ib2xkZXIsIC5sLXRhYi5hY3RpdmUgYSI6bywiICN2aWV3LXBhbmVsIC5qdmFsLWtleSwgI3ZpZXctcGFuZWwgLmp2YWwtYnJhY2tldCI6bywiICN2aWV3LXJlc3VsdHMgaW5wdXQ6Y2hlY2tlZCtkaXY+LmxibDRjaGVjaywgI2RiLWxpc3QgaW5wdXQ6Y2hlY2tlZCtkaXY+LmxibDRjaGVjayI6bysiZm9udC1zaXplOnsxfSU7IGxpbmUtaGVpZ2h0OjEuMmVtOyIuYXNzaWduKCJhdXRvIj09ZT9nfHxmPzk3Ojk2Ljg6ZS5pbmRleE9mKCJIZWx2ZXRpY2EiKT4tMT85NzplLmluZGV4T2YoIlRhaG9tYSIpPi0xPzk1Ojk3KSwiICNidG4tY2xvc2UtYWN0aXZlLXRhYiI6eyIiOmM/ImRpc3BsYXk6bm9uZSI6InJpZ2h0OjA7dG9wOjA7ei1pbmRleDoxOTk2OyIsIiAiOiJjb2xvcjpyZ2JhKDE1OCwxODQsMjMwLDAuMyk7IHRyYW5zaXRpb246IGNvbG9yIDAuNnM7IGZvbnQtc2l6ZToxOHB4OyBsaW5lLWhlaWdodDoyNHB4OyB3aWR0aDoyNHB4O3RleHQtYWxpZ246Y2VudGVyOyIsIjpob3ZlciI6ImNvbG9yOnJnYmEoMjU1LDMwLDY0LDAuNSk7In19fSwiIC54cGFuZWwiOnsiIjoiYm9yZGVyLXJhZGl1czoycHggMnB4IDAgMDsgaGVpZ2h0OjMxcHg7IiwiIC54YnV0dG9uIjoiYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsMjU1LDI1NSwwLjYpOyBib3JkZXI6MXB4IHNvbGlkIHRyYW5zcGFyZW50IWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czoycHg7IHBhZGRpbmctbGVmdDogMC41ZW07IHBhZGRpbmctcmlnaHQ6IDAuNWVtOyIsIiAubXktdGFncyI6eyIiOiJkaXNwbGF5OmlubGluZS1ibG9jazsgdmVydGljYWwtYWxpZ246dG9wOyBtYXJnaW4tdG9wOiAycHg7IGxpbmUtaGVpZ2h0OjIwcHg7ICIsIiAudGFnIjoiZGlzcGxheTppbmxpbmUtYmxvY2s7ICIsIiAudGFnLmFjdGl2ZSI6ImJhY2tncm91bmQtY29sb3I6I2QzZGFlMDtjb2xvcjogIzRkNWE2YTsifX0sIiAuYmctcGdyYXkiOiJiYWNrZ3JvdW5kLWNvbG9yOiNlM2U5ZWM7IiwiIGJ1dHRvbiwgLmJ1dHRvbiI6InBhZGRpbmc6MC4zZW0gMC42ZW0gMC40ZW0gMC42ZW0iLCIgLm5vY3dtaW4iOiJkaXNwbGF5Om5vbmUhaW1wb3J0YW50IiwiIC5ub3RhcCI6Ii13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogcmdiYSgwLDAsMCwwKTsiLCIgLm15LW1vZGFsLW92ZXJsYXkiOiJib3gtc2hhZG93OiAycHggM3B4IDIycHggLTdweCByZ2JhKDEwLCAyMCwgMjksIDAuOCkhaW1wb3J0YW50O2JvcmRlci1yYWRpdXM6MnB4IWltcG9ydGFudDsiLCIgLmRpZiI6ImRpc3BsYXk6aW5saW5lLWZsZXg7IiwiIC53MTFwIjoid2lkdGg6MTElOyIsIiAudzEycCI6IndpZHRoOjEyJTsiLCIgLncxOHAiOiJ3aWR0aDoxOCU7IiwiIC53MCI6IndpZHRoOjBweDsiLCIgLnczNiI6IndpZHRoOjM2cHg7IiwiIC53MzciOiJ3aWR0aDozN3B4OyIsIiAudzM4Ijoid2lkdGg6MzhweDsiLCIgLnc0MiI6IndpZHRoOjQycHg7IiwiIC53MmVtIjoid2lkdGg6MmVtOyIsIiAubXcxMDBwIjoibWF4LXdpZHRoOjEwMCU7IiwiIC5tdzk1cCI6Im1heC13aWR0aDo5NSU7IiwiIC5ib2xkZXIiOiJmb250LXdlaWdodDpib2xkZXI7IiwiIC5saWdodGVyIjoiZm9udC13ZWlnaHQ6bGlnaHRlcjsiLCIgLmxoMTQwaSI6ImxpbmUtaGVpZ2h0OjEuNGVtIWltcG9ydGFudDsiLCIgLnRyYW5zIjoicG9pbnRlci1ldmVudHM6bm9uZTsiLCIgLnBhYmMiOiJwb3NpdGlvbjphYnNvbHV0ZTsiLCIgLnByZWwiOiJwb3NpdGlvbjpyZWxhdGl2ZTsiLCIgLnBsMDVlbSI6InBhZGRpbmctbGVmdDowLjVlbTsiLCIgLnByMDVlbSI6InBhZGRpbmctcmlnaHQ6MC41ZW07IiwiIC53YmEiOiJ3b3JkLWJyZWFrOmJyZWFrLWFsbDsiLCIgLnduIjoid2hpdGUtc3BhY2U6bm9ybWFsOyB0cmFuc2l0aW9uOiB3aWR0aCAwLjFzOyIsIiAub3hoIjoib3ZlcmZsb3cteDpoaWRkZW47IiwiIC50dzEwMCI6InRyYW5zaXRpb246d2lkdGggMC4xcyIsIiAudHc1MDAiOiJ0cmFuc2l0aW9uOndpZHRoIDAuNXMiLCIgLnJvdDE4MCI6InRyYW5zZm9ybTogcm90YXRlKDE4MGRlZyk7IiwiIC5ieHRvcCI6ImJvcmRlcjoxcHggc29saWQgI2QzZGFlMDsgYm9yZGVyLXRvcDpub25lOyBib3JkZXItcmFkaXVzOiAwIDAgMnB4IDJweDsiLCIgLmJ4dG9wLTMxIjp7IjphZnRlciI6J2JvcmRlcjoxcHggc29saWQgI2QzZGFlMDsgYm9yZGVyLXRvcDpub25lOyBib3JkZXItcmFkaXVzOiAwIDAgMnB4IDJweDt0b3A6MzFweDsgbGVmdDowOyB3aWR0aDpjYWxjKDEwMCUgLSAycHgpOyBoZWlnaHQ6Y2FsYygxMDAlIC0gMzJweCk7cG9pbnRlci1ldmVudHM6bm9uZTsgei1pbmRleDozOyBjb250ZW50OiIgIjsgcG9zaXRpb246YWJzb2x1dGU7ICd9LCIgc2VjdGlvbiI6Im91dGxpbmU6IG5vbmU7IiwiIC5teS10YWdzLmJ1dHRvbnMiOnsiIC50YWciOiJib3JkZXItcmFkaXVzOjA7IGJvcmRlcjogMXB4IHNvbGlkICNkMGQ2ZGQ7IHRyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAwLjJzLCBjb2xvciAwLjJzO21hcmdpbi1sZWZ0Oi0xcHg7IGNvbG9yOiM4Yzk2YTI7IGJvcmRlci1sZWZ0Om5vbmU7IGJvcmRlci1yaWdodDpub25lOyIsIiAudGFnOmhvdmVyIjoiY29sb3I6IzE0NzNiZjsiLCIgLnRhZy5hY3RpdmUiOiJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7IGNvbG9yOiM1NTZiODM7IiwiIC50YWcuYWN0aXZlOmFmdGVyIjonY29udGVudDoiICI7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6MnB4OyBsZWZ0OjJweDsgd2lkdGg6Y2FsYygxMDAlIC0gNHB4KTsgaGVpZ2h0OmNhbGMoMTAwJSAtIDRweCk7Ym9yZGVyLXJhZGl1czoycHg7IGJhY2tncm91bmQtY29sb3I6cmdiYSgwLDEzOCwyNTUsMC4yKTsnLCIgLnRhZzpmaXJzdC1jaGlsZCI6ImJvcmRlci1yYWRpdXM6M3B4IDAgMCAzcHg7IGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2QwZDZkZDsiLCIgLnRhZzpsYXN0LWNoaWxkIjoiYm9yZGVyLXJhZGl1czowIDNweCAzcHggMDsgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2QwZDZkZDsiLCIgLnRhZzpmaXJzdC1jaGlsZDpsYXN0LWNoaWxkIjoiYm9yZGVyLXJhZGl1czozcHg7IGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2QwZDZkZDsgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2QwZDZkZDsifSwiIGRpdi5teS1tb2RhbCI6ImJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjI0LCAyMjgsIDIzMiwgMC41NSk7IiwiIC5teS1tb2RhbC5tb2RhbC1idXN5Ijp7IjphZnRlciI6J2NvbnRlbnQ6IiAiO3Bvc2l0aW9uOmFic29sdXRlOyB0b3A6LTFweDsgbGVmdDowOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTsgei1pbmRleDo1O2JvcmRlci1yYWRpdXM6MnB4O2JhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwwLjYpOyBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoaS9sb2FkZXItYmFyMi5naWYpOyBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7YmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIC03cHg7JywiLm5vc2UtdG9wOmJlZm9yZSI6InotaW5kZXg6NjsifSwiIC5wcmUiOiJ3aGl0ZS1zcGFjZTpwcmUtd3JhcDsgd29yZC13cmFwOmJyZWFrLXdvcmQ7IiwiICNsLWJvYXJkIjp7IiAiOmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj14LndpZHRoKCksYz14LnBhcmVudCgpLmhhc0NsYXNzKCJteS1tb2RhbC1mb3JtIiksZD0od2luZG93LmlubmVySGVpZ2h0LyhjPzEuMzoxKXwwKSsicHgiLGU9IShiPj0xNDIwJiYidG9wIiE9YS5DZmcudGFiQmFyKSxmPWU/MDoxMjYrYi8xMHwwO3JldHVybnsiIjplP1sid2lkdGg6MTAwJTsgcGFkZGluZzowOyBvdmVyZmxvdzpoaWRkZW47IixhLl9jb21waWxlZD8iaGVpZ2h0OmNhbGMoIitkKyIgLSAzMnB4KTsiOiJoZWlnaHQ6Y2FsYygiK2QrIiAtIDcwcHgpOyJdLmpvaW4oIiIpOlsiZGlzcGxheTppbmxpbmUtYmxvY2s7IG92ZXJmbG93OmhpZGRlbjsgd2lkdGg6Y2FsYygxMDAlIC0gezF9cHgpOyIuYXNzaWduKGYpLGEuX2NvbXBpbGVkPyJoZWlnaHQ6IitkKyI7IjoiaGVpZ2h0OmNhbGMoIitkKyIgLSAzOHB4KTsiXS5qb2luKCIiKSwiICNsLXBpdm90LXJiIjoicG9zaXRpb246YWJzb2x1dGU7IGJvdHRvbTowOyByaWdodDowOyB3aWR0aDoxcHg7IGhlaWdodDoxcHg7IiwiIC53MTI4MHBsdXMiOmItZjwxMjgwPyJkaXNwbGF5Om5vbmUhaW1wb3J0YW50OyI6IiIsIiAudzEyMDBwbHVzIjpiLWY8MTIwMD8iZGlzcGxheTpub25lIWltcG9ydGFudDsiOiIifX19LCIgI2wtYXBwcyI6eyIiOiJtaW4td2lkdGg6MTAyMHB4OyBtYXJnaW46MCBhdXRvOyBtYXgtd2lkdGg6MTAwJTsiLCIgLmwtYXBwIjp7IiI6Im9wYWNpdHk6MTsgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzOyB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogZWFzZS1vdXQ7IiwiICI6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPSEoeC53aWR0aCgpPj0xNDIwJiYidG9wIiE9YS5DZmcudGFiQmFyKSxjPWEuX2NvbXBpbGVkLGQ9eC5wYXJlbnQoKS5oYXNDbGFzcygibXktbW9kYWwtZm9ybSIpLGU9KHdpbmRvdy5pbm5lckhlaWdodC8oZD8xLjM6MSl8MCktKGM/MDozMikrKGI/MDozMiksZj0iaGVpZ2h0OmNhbGMoIisoZSsicHgiKSsiIC0gIjtyZXR1cm4gYS5QYW5lbEhlaWdodD1lLTg0LGEuaXNCYXI9Yix7IiAuYXBwaGVpZ2h0IjpmKyIzMnB4KTsiLCIgLnBhbmVsaGVpZ2h0IjpmKyI4NHB4KTsiLCIgLnBhbmVsaGVpZ2h0LTQiOmYrIjg4cHgpOyIsIiAucGFuZWxoZWlnaHQtOCI6ZisiOTJweCk7IiwiIC5wYW5lbGhlaWdodC0xNiI6ZisiMTAwcHgpOyIsIiAucGFuZWxoZWlnaHQtMzIiOmYrIjExNnB4KTsiLCIgLnBhbmVsaGVpZ2h0LTQ4IjpmKyIxMzJweCk7IiwiIC5wYW5lbGhlaWdodC02MyI6ZisiMTQ3cHgpOyIsIiAucGFuZWxoZWlnaHQtNjQiOmYrIjE0OHB4KTsifX0sIiAuYXBwLWhlYWQiOnsiIjoiZGlzcGxheTpibG9jaztoZWlnaHQ6NTJweDtvdmVyZmxvdzpoaWRkZW47d2lkdGg6MTAwJTsiLCIgYnV0dG9uLCAuYnV0dG9uLCAudGFnLmJ0biI6ImhlaWdodDoyZW07cGFkZGluZy10b3A6MC4yZW07cGFkZGluZy1ib3R0b206NHB4O2xpbmUtaGVpZ2h0OjE5cHg7dGV4dC1hbGlnbjpjZW50ZXI7In0sIi5hcHAtYnVzeSI6Im9wYWNpdHk6MC41O3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlLWluOyIsIiAuZmVhdGhlciI6eyI6YmVmb3JlIjp7IiI6J2NvbnRlbnQ6IiAiO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDt3aWR0aDpjYWxjKDEwMCUgLSAxMnB4KTtoZWlnaHQ6MTVweDsgcG9pbnRlci1ldmVudHM6bm9uZTtiYWNrZ3JvdW5kLWltYWdlOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2JhKDI1NSwyNTUsMjU1LDEpLCByZ2JhKDI1NSwyNTUsMjU1LDApKTt6LWluZGV4OjE5OTA7J30sIjphZnRlciI6eyIiOidjb250ZW50OiIgIjtwb3NpdGlvbjphYnNvbHV0ZTtib3R0b206MDtsZWZ0OjA7d2lkdGg6Y2FsYygxMDAlIC0gMTJweCk7aGVpZ2h0OjE1cHg7YmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIHRvcCwgcmdiYSgyNTUsMjU1LDI1NSwxKSwgcmdiYSgyNTUsMjU1LDI1NSwwKSk7ei1pbmRleDoxOTkwOyd9fX0sIiAuYXBwLWJ1c3k6YWZ0ZXIiOidjb250ZW50OiIgIjsgYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LDApO3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6KzE5OTM7IHdpZHRoOjEwMCU7IGhlaWdodDoxMTAlOyB0b3A6MDsgbGVmdDowOyd9LCIgLmNvbC1qc29uIjp7IiI6InBhZGRpbmc6MCAwIDAgNnB4IWltcG9ydGFudDt3b3JkLXdyYXA6bm9ybWFsOyIsIiAuQ29kZU1pcnJvciI6ImJhY2tncm91bmQ6bm9uZTtmb250LXNpemU6OTUlIWltcG9ydGFudDtsaW5lLWhlaWdodDoxLjNlbSFpbXBvcnRhbnQ7IiwiPmRpdi5jb2wtdHJpbSI6ImRpc3BsYXk6bm9uZSFpbXBvcnRhbnQ7IiwiPmRpdi5jb2wtZWQiOiJkaXNwbGF5OmJsb2NrIWltcG9ydGFudDsiLCI+ZGl2LmNvbC1lZC1jbG9zZSI6eyIiOiJkaXNwbGF5OmJsb2NrIWltcG9ydGFudDsgY3Vyc29yOnBvaW50ZXI7IHRleHQtYWxpZ246cmlnaHQ7IHBvc2l0aW9uOmFic29sdXRlO3RvcDowOyByaWdodDo1cHg7IHdpZHRoOjk1JSFpbXBvcnRhbnQ7IGhlaWdodDoyMXB4OyB6LWluZGV4OjU7dHJhbnNpdGlvbjpjb2xvciAwLjVzOyBjb2xvcjpyZ2JhKDQxLDEwOSwxNjYsMC43NSk7IiwiOmhvdmVyIjoiY29sb3I6IzEyYTVkYzsifX0sIiAuanZhbC10cmltIjoiZGlzcGxheTppbmxpbmUtYmxvY2s7Ym9yZGVyLXJhZGl1czoycHg7cGFkZGluZzoxcHggMnB4O2xpbmUtaGVpZ2h0OjEuMWVtO2NvbG9yOnJnYmEoMjEzLCA0OCwgODksIDAuNjMpO2JhY2tncm91bmQtY29sb3I6cmdiYSg0MywgMTA3LCAxOTIsIDAuMDcpOyIsIiAuanZhbC1zaG9ydCI6ImNvbG9yOnJnYmEoODgsMTAxLDEyMywwLjYzKTsiLCIgLmp2YWwta2V5IjoibWFyZ2luLWxlZnQ6MnB4OyBjb2xvcjojNGQ1YTZhOyIsIiAuanZhbC1icmFja2V0Ky5qdmFsLWtleSI6Im1hcmdpbi1sZWZ0OjBweDsiLCIgLmp2YWwtYnJhY2tldCI6ImNvbG9yOiAjODE5NWM1OyIsIiAuanZhbC1zaW1wbGUiOiJjb2xvcjpyZ2JhKDUyLCAxNDMsIDI3LCAwLjc4KTsiLCIgLmp2YWwtdW5kZWZpbmVkIjoiY29sb3I6cmdiYSgxMTcsMTI4LDEzOCwwLjQxKTsiLCIgLmp2YWwtc3RyaW5nIjoiY29sb3I6IzNiNWU4NTsiLCIgLmp2YWwtbnVtYmVyIjoiY29sb3I6IzViOTgwOCIsIiAuQ29kZU1pcnJvci1saW5lbnVtYmVyIjoid2hpdGUtc3BhY2U6bm93cmFwOyIsIiAuQ29kZU1pcnJvci1ndXR0ZXJzIjoiYmFja2dyb3VuZDp3aGl0ZTt4Ym9yZGVyLXJpZ2h0Om5vbmU7IiwiIC5Db2RlTWlycm9yIC5jbS1wcm9wZXJ0eSI6ImNvbG9yOiM0MzRlNWQ7IiwiIC5Db2RlTWlycm9yIC5jbS12YXJpYWJsZSI6ImNvbG9yOiMzM2JmYWQ7IiwiIC5Db2RlTWlycm9yIC5jbS1rZXl3b3JkIjoiY29sb3I6IzkwMjU5ZTsiLCIgLkNvZGVNaXJyb3IgLmNtLW1hdGNoaGlnaGxpZ2h0IjoiYmFja2dyb3VuZC1jb2xvcjogcmdiYSg5MiwyNTUsMiwwLjM3KTsgYm94LXNoYWRvdzpub25lOyBib3JkZXItcmFkaXVzOiAxcHg7IiwiIC5Db2RlTWlycm9yIC5jbS1mb3VuZCI6ImJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LDIzMiwxMjEsMC43NSkhaW1wb3J0YW50O291dGxpbmU6IDFweCBzb2xpZCByZ2JhKDI1NSwyMzIsMTIxLDAuNzUpIWltcG9ydGFudDtib3JkZXItcmFkaXVzOjFweDsiLCIgICAiOmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj14LndpZHRoKCksYz0iYm9vbGVhbiI9PXR5cGVvZiBhLmlzRkY/YS5pc0ZGOmEuaXNGRj0vRmlyZWZveC8udGVzdCh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudHx8IiIpLGQ9YS5DZmcsZT1kLnRhYkJhcixmPSEoYj49MTQyMCYmInRvcCIhPWUpLGc9ZC50aGVtZSxoPSJkYXJrIj09Z3x8ImF1dG8iPT1nJiZ3aW5kb3cubWF0Y2hNZWRpYSYmd2luZG93Lm1hdGNoTWVkaWEoIihwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykiKS5tYXRjaGVzLGk9eC5wYXJlbnQoKS5oYXNDbGFzcygibXktbW9kYWwtZm9ybSIpLGo9KHdpbmRvdy5pbm5lckhlaWdodC8oaT8xLjM6MSl8MCktKGEuX2NvbXBpbGVkPzA6MzIpLGs9e2hlaWdodDphLl9jb21waWxlZD8iMTAwdmgiOmorInB4IixodGFiOmY/MzI6ajw2NTA/MzQ6ajw3MDA/MzY6ajw4MDA/Mzg6NDAsd3RhYjpmPzA6MTI2K2IvMTB8MH0sbD0oLjU1KihiLWsud3RhYil8MCktNDAtMi0zMzg7cmV0dXJueyIgI2RiLWxpc3QgLnZpZXctcm93IjpjJiYhYS5pc01hYz8id2lkdGg6ezF9cHg7Ii5hc3NpZ24obCszMzgpOm51bGwsIiAjZGItcGFuZWwiOnsiICNkYi1saXN0IC52aWV3LXJvdyI6e319LCIgI2wtaGVhZGVyIjp7IiI6Zj9bIndpZHRoOjEwMCU7aGVpZ2h0OjMycHg7b3ZlcmZsb3c6aGlkZGVuOyIsImJhY2tncm91bmQtc2l6ZTogMnB4IDMycHg7YmFja2dyb3VuZC1wb3NpdGlvbjowIDA7IixoJiZhLl9jb21waWxlZD8iYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgI2Q2ZGNlOCwgI2YyZjhmZik7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjY2RkNWUxOyI6ImJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICMwYzE5MzIsICM0YjYyN2MpOyJdLmpvaW4oIiIpOlsiYmFja2dyb3VuZC1jb2xvcjogIzFlMzU1Mzsgd2lkdGg6e3d0YWJ9cHg7IGhlaWdodDp7aGVpZ2h0fTsiLCJvdmVyZmxvdzpoaWRkZW47IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB2ZXJ0aWNhbC1hbGlnbjp0b3A7Il0uam9pbigiIikuYXNzaWduKGspLCIgI2wtdGFicyAiOiJtYXgtd2lkdGg6MTAwJTsiLCIgLm5vYmFyIjpmPyJkaXNwbGF5Om5vbmU7IjoiZGlzcGxheTppbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWduOnRvcDsiLCIgI2wtdGFicyI6eyIiOmY/Im1pbi13aWR0aDoxMDIwcHg7IG1hcmdpbjowIGF1dG87Ijoid2lkdGg6MTAwJTsgaGVpZ2h0OntoZWlnaHR9OyIuYXNzaWduKGspLCIgLnVpLXNvcnRhYmxlLWhlbHBlciI6Zj8iYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDEwMiwxMjAsMTUyLDAuOCk7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkICM5ZWE2YjA7Ijp7IjpiZWZvcmUiOlsnY29udGVudDoiICI7ZGlzcGxheTpibG9jazsgd2lkdGg6ezJ9cHg7IGhlaWdodDp7MX1weDsnLmFzc2lnbihrLmh0YWIsay53dGFiLTEwKSwiYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNDIsMjQ2LDI1NSwwLjIpOyBwb3NpdGlvbjphYnNvbHV0ZTsgYm90dG9tOjBweDsgbGVmdDo1cHg7IiwiYm9yZGVyLXJhZGl1czogM3B4OyJdLmpvaW4oIiIpfSwiIC51aS1zb3J0YWJsZS1wbGFjZWhvbGRlcisubC10YWIiOmY/ImJvcmRlci1sZWZ0OjFweCBzb2xpZCAjOWVhNmIwOyI6IiIsIiAudGFiLWJ1c3k6YWZ0ZXIiOmY/Wydjb250ZW50OiIgIjsgYmFja2dyb3VuZC1pbWFnZTogdXJsKGkvbG9hZGVyLWJhcjIuZ2lmKTsgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OyBiYWNrZ3JvdW5kLXBvc2l0aW9uLXk6IC0ycHg7JywicG9zaXRpb246YWJzb2x1dGU7IHdpZHRoOjEwMCU7IGhlaWdodDoycHg7IGJvdHRvbTowOyBsZWZ0OjA7IHotaW5kZXg6KzE5ODA7IG92ZXJmbG93OmhpZGRlbjsiXS5qb2luKCIiKTpbJ2NvbnRlbnQ6IiAiOyBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoaS9sb2FkZXItYmFyMi5naWYpOyBiYWNrZ3JvdW5kLXJlcGVhdDogcmVwZWF0LXg7IGJhY2tncm91bmQtcG9zaXRpb24teTogLTFweDsnLCJwb3NpdGlvbjphYnNvbHV0ZTsgd2lkdGg6ezF9cHg7IGhlaWdodDoycHg7IHRvcDoxcHg7IGxlZnQ6MnB4OyB6LWluZGV4OisxOTgwOyBvdmVyZmxvdzpoaWRkZW47Ii5hc3NpZ24oay5odGFiLTIpLCJ0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7IHRyYW5zZm9ybS1vcmlnaW46IDAgMDsgYm9yZGVyLXJhZGl1czogMnB4IDJweCAwIDA7Il0uam9pbigiIil9LCIgI2wtcm9vdHRhYiI6eyIiOmY/IndpZHRoOiA3MnB4OyI6IndpZHRoOiB7d3RhYn1weDsgaGVpZ2h0OjU4cHg7bGluZS1oZWlnaHQ6MzdweDtvdmVyZmxvdzpoaWRkZW47Ii5hc3NpZ24oayksIiAjbC1yb290IjoiZGlzcGxheTpibG9jazsiKyhmPyJ3aWR0aDogNzJweDsgcGFkZGluZzozcHggMTBweCAwIDIwcHg7ICI6IndpZHRoOiB7d3RhYn1weDsgcGFkZGluZzoxM3B4IDAgMCAxMHB4OyBoZWlnaHQ6NThweDsiLmFzc2lnbihrKSksIi5sLXRhYiI6Zj8iIjoiYm9yZGVyLXRvcDpub25lOyIsIi5sLXRhYjpiZWZvcmUiOmY/IiI6ImRpc3BsYXk6bm9uZTsifSwiICNsLWFwcHRhYnMiOmY/IndpZHRoOmNhbGMoMTAwJSAtIDcycHggLSA5NnB4KTsgd2hpdGUtc3BhY2U6bm93cmFwOyBvdmVyZmxvdzpoaWRkZW47Ijoid2lkdGg6MTAwJTsgYm9yZGVyLXRvcDoxcHggc29saWQgIzRmNjQ4MTsgcGFkZGluZy10b3A6NXB4OyBoZWlnaHQ6ezF9cHg7Ii5hc3NpZ24oai05NCksIiAubC10YWIiOnsiIjpmP1sibGluZS1oZWlnaHQ6MjlweDsgaGVpZ2h0OjMycHg7IG1pbi13aWR0aDo3MnB4OyBtYXgtd2lkdGg6MzAwcHg7IHRyYW5zaXRpb246d2lkdGggMC4yczsiLCJib3JkZXItcmlnaHQ6MXB4IHNvbGlkICIsaCYmYS5fY29tcGlsZWQ/IiNjZGQ1ZTEiOiIjOWVhNmIwIiwiOyBib3JkZXItbGVmdDoxcHggc29saWQgdHJhbnNwYXJlbnQ7IiwiZGlzcGxheTppbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWduOnRvcDsgb3ZlcmZsb3c6aGlkZGVuIDsiXS5qb2luKCIiKTpbImxpbmUtaGVpZ2h0OnsyfXB4OyBoZWlnaHQ6ezF9cHg7Ii5hc3NpZ24oay5odGFiLGsuaHRhYi0zKSwiZGlzcGxheTppbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWduOnRvcDsiXS5qb2luKCIiKSwiICI6Zj8id2lkdGg6Y2FsYygxMDAlIC8gIisoYS5UYWJzLmxlbmd0aHx8MSkrIik7Ijoid2lkdGg6MTAwJTsiLCIgI2J0bi10YWJjbG9zZSI6ImN1cnNvcjpwb2ludGVyOyBkaXNwbGF5Om5vbmU7IisoZj8iY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwwLjI1KTsiOiJjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LDApOyIpLCIgI2wtdGFic3RhdGUiOnsiIjoiY29sb3I6cmdiYSgxMzEsMTk4LDI1NSwwLjYyKTsiLCIuaGlkZSsjYnRuLXRhYmNsb3NlIjoiZGlzcGxheTpibG9jazsifSwiIC5sLXRhYm1hcmsiOnsiIjpbIndpZHRoOjE2cHg7cG9zaXRpb246YWJzb2x1dGU7bGluZS1oZWlnaHQ6MjBweDt0ZXh0LWFsaWduOmNlbnRlcjsiLCJ0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MsIGNvbG9yIDAuM3M7IixmPyJyaWdodDowOyB0b3A6MDsiOiJyaWdodDo2cHg7IHRvcDp7MX1weDsiLmFzc2lnbigoay5odGFiLTIzKS8yKV0uam9pbigiIil9LCI6aG92ZXIgIjp7IiAjbC10YWJzdGF0ZSI6ImRpc3BsYXk6bm9uZSFpbXBvcnRhbnQ7IiwiICNidG4tdGFiY2xvc2UiOiJkaXNwbGF5OmJsb2NrIWltcG9ydGFudDsgY29sb3I6cmdiYSgyNTUsMjU1LDI1NSwwLjYpOyJ9LCIgI2J0bi10YWJjbG9zZTpob3ZlciI6ImNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMC45KTsiLCIgYSI6InRleHQtZGVjb3JhdGlvbjpub25lO3RyYW5zaXRpb246IG9wYWNpdHkgMC4zczsgY29sb3I6d2hpdGU7IG9wYWNpdHk6MC44IWltcG9ydGFudDsiLCIgYS5zeXN0ZW0iOiJjb2xvcjojZDhmZmE0OyIsIjpob3ZlciBhIjoib3BhY2l0eToxIWltcG9ydGFudDsiLCIgI2wtdGFibmFtZSI6eyIiOiJ3aWR0aDpjYWxjKDEwMCUgLSAxNnB4KTtkaXNwbGF5OmlubGluZS1ibG9jazsgb3ZlcmZsb3c6aGlkZGVuOyB0ZXh0LW92ZXJmbG93OmVsbGlwc2lzOyB3aGl0ZS1zcGFjZTpub3dyYXA7IisoZj8icGFkZGluZzowIDAgNHB4IDZweDsiOiJwYWRkaW5nOjAgMCA0cHggMTFweDsiKSwiLnNtYWxsZXIgLmwtdGFiLW5hbWUiOiJmb250LXNpemU6MC45MmVtOyIsIiAubC10YWItaWNvIjpmPyJkaXNwbGF5Om5vbmU7Ijoid2lkdGg6MjJweDsgZGlzcGxheTppbmxpbmUtYmxvY2s7IHBhZGRpbmctcmlnaHQ6NXB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7In0sIjpiZWZvcmUiOmY/IiI6eyIiOlsnY29udGVudDoiICI7ZGlzcGxheTpibG9jazsgd2lkdGg6ezF9cHg7IGhlaWdodDoxcHg7Jy5hc3NpZ24oay53dGFiLTIwKSwiYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNDIsMjQ1LDI1NSwwLjEpOyBwb3NpdGlvbjphYnNvbHV0ZTsgYm90dG9tOjBweDsgbGVmdDoxMHB4OyIsImJvcmRlci1yYWRpdXM6IDBweDsgdHJhbnNpdGlvbjogd2lkdGggMC4xcywgaGVpZ2h0IDAuMDZzLCBib3JkZXItcmFkaXVzIDAuMXMsIGJhY2tncm91bmQtY29sb3IgMC4ycywgbGVmdCAwLjFzOyJdLmpvaW4oIiIpfSwiLmFjdGl2ZSI6eyIgYSI6ImNvbG9yOiMwMjBlMWUhaW1wb3J0YW50O29wYWNpdHk6MC44IWltcG9ydGFudDsgeGZvbnQtd2VpZ2h0OmJvbGRlcjsiLCI6aG92ZXIgYSI6Im9wYWNpdHk6MC45NSFpbXBvcnRhbnQ7IiwiIjpmP1siYmFja2dyb3VuZC1zaXplOiAycHggMzJweDsgYmFja2dyb3VuZC1wb3NpdGlvbjowIDA7IiwiYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgI2EzYjVjZCwgI2QyZGVlZSk7Il0uam9pbigiIik6eyI6YmVmb3JlIjpbJ2NvbnRlbnQ6IiAiO2Rpc3BsYXk6YmxvY2s7IHdpZHRoOnsyfXB4OyBoZWlnaHQ6ezF9cHg7Jy5hc3NpZ24oay5odGFiLGsud3RhYi0xMCksImJhY2tncm91bmQtY29sb3I6ICNjOGQxZGUhaW1wb3J0YW50OyBwb3NpdGlvbjphYnNvbHV0ZTsgYm90dG9tOjBweDsgbGVmdDo1cHg7IiwiYm9yZGVyLXJhZGl1czogM3B4OyJdLmpvaW4oIiIpfSwiICNsLXRhYnN0YXRlIjoiY29sb3I6cmdiYSgzNywxMzcsMjE1LDAuOCk7IiwiICNidG4tdGFiY2xvc2UiOmY/ImNvbG9yOnJnYmEoMCwxOCw0MCwwLjMpOyI6ImNvbG9yOnJnYmEoMCwxNyw0MCwwKTsiLCI6aG92ZXIgI2J0bi10YWJjbG9zZSI6ImNvbG9yOnJnYmEoMCwxOCw0MCwwLjYpOyIsIiAjYnRuLXRhYmNsb3NlOmhvdmVyIjoiY29sb3I6cmdiYSgwLDE4LDQwLDAuOCk7In19LCIgI2wtYXNpZGUiOnsiIjoicG9zaXRpb246YWJzb2x1dGU7IHsyfTowOyByaWdodDowOyB3aWR0aDp7MX1weDsiLmFzc2lnbihmPzk2Omsud3RhYixmPyJ0b3AiOiJib3R0b20iKSsoZj8iYm9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjOWVhNmIwOyI6ImJvcmRlci10b3A6MXB4IHNvbGlkICM0ZjY0ODE7IikrIndoaXRlLXNwYWNlOm5vd3JhcDsgei1pbmRleDoyOyIsIiAuYXNpZGUtYnRuIjpbIndpZHRoOnsxfXB4OyBoZWlnaHQ6ezJ9cHg7IGN1cnNvcjpwb2ludGVyOyIuYXNzaWduKGY/MzI6ay53dGFiLzUsZj8zMjozNSksZj8iIjoicGFkZGluZzoxcHggMCAwIDA7IHRleHQtYWxpZ246Y2VudGVyOyIsZj8iYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICM5ZWE2YjA7IjoiYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICM0ZjY0ODE7IiwiZGlzcGxheTppbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWduOnRvcDsgb3ZlcmZsb3c6aGlkZGVuOyIsInRyYW5zaXRpb246IGNvbG9yIDAuM3MsIG9wYWNpdHkgMC4zczsgY29sb3I6d2hpdGUhaW1wb3J0YW50OyIsIm9wYWNpdHk6MC43IWltcG9ydGFudDsiXS5qb2luKCIiKSwiIC5hc2lkZS1idG46aG92ZXIiOiJvcGFjaXR5OjEhaW1wb3J0YW50OyIsIiAjYnRuLWNsb3NlLWFsbC10YWJzIjp7IiI6Im9wYWNpdHk6MC42OyBjb2xvcjp3aGl0ZTsgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzOyB3aWR0aDpjYWxjKDEwMCUgLSAzICogezF9cHgpOyIuYXNzaWduKGsud3RhYi81KSwiOmhvdmVyIjoib3BhY2l0eToxOyJ9LCIgYSI6InRleHQtZGVjb3JhdGlvbjpub25lOyBjb2xvcjp3aGl0ZTsiLCIgYTpob3ZlciI6ImNvbG9yOndoaXRlOyJ9fX19fSxQaG86ZnVuY3Rpb24oeCl7cmV0dXJuIG51bGw9PXg/dGhpczpPYmplY3QuaXNBcnJheSh4KT9jdy5saWIuZ2V0cmVmKHRoaXMseCk6dGhpc1t4XX0sU2V0VGl0bGU6ZnVuY3Rpb24oeCl7dGhpcy5fY29tcGlsZWQmJiQoImhlYWQgdGl0bGUiKS50ZXh0KHgrIiIpfSxwMnU6ZnVuY3Rpb24oeCxhKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHg/Yih4LDEpOngubWFwKGIpO2Z1bmN0aW9uIGIoeCxiKXt2YXIgYz1lbmNvZGVVUklDb21wb25lbnQ7aWYoYXx8MT09Ynx8Mj09Yil7aWYoL15fZGVzaWduXC8uKyQvLnRlc3QoeCkpcmV0dXJuIl9kZXNpZ24vIitjKHguZnJvbSg4KSk7aWYoL15fbG9jYWxcLy4rJC8udGVzdCh4KSlyZXR1cm4iX2xvY2FsLyIrYyh4LmZyb20oNykpfXJldHVybiBjKHgpfX0sajJoOmZ1bmN0aW9uKCl7fSxuaWNlU2Nyb2xsOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIHRoaXMuaU9TfHx0aGlzLmlzTWFjfHx0aGlzLmlzV2ViS2l0fHwiMCI9PXRoaXMuQ2ZnLnNjcm9sbFNwZWVkP3guY3NzKHsib3ZlcmZsb3cteSI6dGhpcy5pc1dlYktpdD8ib3ZlcmxheSI6ImF1dG8iLCItbXMtb3ZlcmZsb3ctc3R5bGUiOiItbXMtYXV0b2hpZGluZy1zY3JvbGxiYXIiLCItd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZyI6InRvdWNoIiwic2Nyb2xsYmFyLXdpZHRoIjoidGhpbiIsIm92ZXJmbG93LXgiOiJoaWRkZW4ifSk6eC5uaWNlU2Nyb2xsKGF8fHtjdXJzb3Jjb2xvcjoiIzIzNCIsY3Vyc29yb3BhY2l0eW1pbjouMDcsY3Vyc29yb3BhY2l0eW1heDouNCx6aW5kZXg6M30pLHh9LHNlbGVjdDI6ZnVuY3Rpb24oeCxhLGIpe3ZhciBjPXRoaXMsZD14LnNlbGVjdDIoYSk7cmV0dXJuIGMuaU9TJiYoIShhfHx7fSkubXVsdGlwbGUmJiEoYXx8e30pLnRhZ3N8fGIpJiYoZC5vbigic2VsZWN0Mi1vcGVuIixjLnNlbGVjdDJpT1NibHVyKSxkLm9uKCJzZWxlY3QyLWNsb3NlIixmdW5jdGlvbigpe3NldFRpbWVvdXQoYy5zZWxlY3QyaU9TYmx1ciw1MCl9KSksZH0sc2VsZWN0MmlPU2JsdXI6ZnVuY3Rpb24oKXskKCIuc2VsZWN0Mi1zZWFyY2ggaW5wdXQsIDpmb2N1cywgaW5wdXQiKS5wcm9wKCJmb2N1cyIsITEpLmJsdXIoKX0sdHJ1bmM6ZnVuY3Rpb24oeCxhKXtyZXR1cm4geC5sZW5ndGg+YSsxP3gudHJ1bmNhdGUoYSwibWlkZGxlIiwi4oCmIik6eH0sZGllOmZ1bmN0aW9uKHgpeyQod2luZG93KS5vZmYoIi5waG8iKSx4LmZpbmQoIiNsLWFwcHM+ZGl2IikuZWFjaChmdW5jdGlvbigpeyQodGhpcykubXkoInJlbW92ZSIpfSl9LHBpbmdTZXNzaW9uOmZ1bmN0aW9uKCl7dmFyIHg9dGhpcyxhPXgubGFzdFBpbmd8fDAsYj1EYXRlLm5vdygpLGM9KCt4LkNmZy5waW5nU2Vzc2lvbnx8MCkuY2xhbXAoMCwxZTMpOyFjfHwoYi1hKS82ZTQ8Y3x8KHgubGFzdFBpbmc9Yix4LlNlc3Npb24oKSl9LGRiVHlwZTp7c3luY3N0YXRlOiIiLHN0YW1wOjAsY29tbWl0dGVkX3VwZGF0ZV9zZXE6LTEsY29tcGFjdF9ydW5uaW5nOiExLGRhdGFfc2l6ZToiIixkaXNrX3NpemU6MCxzaXplc2FmZToiIixzaXpldGlwOiIiLGRiX25hbWU6IiIsZGlza19mb3JtYXRfdmVyc2lvbjoiIixkb2NfY291bnQ6IiIsZG9jX2RlbF9jb3VudDoiIixpbnN0YW5jZV9zdGFydF90aW1lOiIiLHB1cmdlX3NlcToiIix1cGRhdGVfc2VxOiIiLHVwZGF0ZV9zZXFfc2FmZToiIixzZWN1cml0eTp7c3RhbXA6MCxzZXE6LTEsYWRtaW5zOntuYW1lczpbXSxyb2xlczpbXX0sbWVtYmVyczp7bmFtZXM6W10scm9sZXM6W119fSxwcm90ZWN0ZWQ6IiIsc3RhcjoiIixncm91cDoiIix0YXNrczp7c3RhbXA6MCxwaWRzOltdfSxzeW5jczp7c3RhbXA6MCxkb2NzOltdfX0sTGlic1VzZWQ6e2pRdWVyeToiaHR0cHM6Ly9qcXVlcnkuY29tLyIsIiQudWkiOiJodHRwczovL2pxdWVyeXVpLmNvbS8iLCIkLm15IjoiaHR0cDovL2pxdWVyeW15LmNvbS8iLCIkLnRhZ3MiOiIiLCIkLmxpc3QiOiIiLHNlbGVjdDI6Imh0dHBzOi8vc2VsZWN0Mi5naXRodWIuaW8vc2VsZWN0Mi8iLENvZGVNaXJyb3I6Imh0dHBzOi8vY29kZW1pcnJvci5uZXQvIixuaWNlU2Nyb2xsOiJodHRwczovL2dpdGh1Yi5jb20vaW51eWFrc2EvanF1ZXJ5Lm5pY2VzY3JvbGwiLEpDcm9wOiJodHRwczovL2dpdGh1Yi5jb20vdGFwbW9kby9KY3JvcCIsU3VnYXI6Imh0dHBzOi8vc3VnYXJqcy5jb20iLFE6Imh0dHBzOi8vZ2l0aHViLmNvbS9rcmlza293YWwvcSIsaG90a2V5czoiaHR0cHM6Ly9naXRodWIuY29tL2pheXdjamxvdmUvaG90a2V5cyIsVVJMcG9seWZpbGw6Imh0dHBzOi8vZ2l0aHViLmNvbS93ZWJjb21wb25lbnRzL1VSTCIsIndlYi1zdHJlYW1zLXBvbHlmaWxsIjoiaHR0cHM6Ly9naXRodWIuY29tL01hdHRpYXNCdWVsZW5zL3dlYi1zdHJlYW1zLXBvbHlmaWxsIixTdHJlYW1TYXZlcjoiaHR0cHM6Ly9naXRodWIuY29tL2ppbW15d2FydGluZy9TdHJlYW1TYXZlci5qcyIsZmZsYXRlOiJodHRwczovL2dpdGh1Yi5jb20vMTAxYXJyb3d6L2ZmbGF0ZSIsanNvbmRpZmY6Imh0dHBzOi8vZ2l0aHViLmNvbS9iZW5qYW1pbmUvanNvbmRpZmZwYXRjaCIsc3FsdG9tYW5nbzoiaHR0cHM6Ly9naXRodWIuY29tL2dseW5uYmlyZC9zcWx0b21hbmdvIiwiY3cubGliIjoiaHR0cHM6Ly9jbG91ZHdhbGwubWUvYXBpL2N3X2xpYiJ9LEZvbnRzVXNlZDp7Q291c2luZToiaHR0cHM6Ly93d3cuZm9udHNxdWlycmVsLmNvbS9mb250cy9jb3VzaW5lIiwiRm91bmRhdGlvbiBJY29ucyI6Imh0dHBzOi8venVyYi5jb20vcGxheWdyb3VuZC9mb3VuZGF0aW9uLWljb24tZm9udHMtMyJ9LEhUTUw6JzxkaXYgaWQ9ImJ0bi1jbG9zZS1hY3RpdmUtdGFiIiBjbGFzcz0iY3Agbm9iYXIgcGFiYyBmdzIwMCIgdGl0bGU9IkNsb3NlIHRhYiI+4pyVPC9kaXY+PGRpdiBpZD0ibC1oZWFkZXIiPjxkaXYgaWQ9ImwtdGFicyI+PGRpdiBpZD0ibC1yb290dGFiIiBjbGFzcz0ibC10YWIiPjxhIGlkPSJsLXJvb3QiIGhyZWY9IiMiIGNsYXNzPSIiPlBob3RvbjwvYT48L2Rpdj48ZGl2IGlkPSJsLWFwcHRhYnMiIGNsYXNzPSJkaWIgdmF0IG9oIj48L2Rpdj48ZGl2IGlkPSJsLWFzaWRlIj48ZGl2IGlkPSJidG4tY2xvc2UtYWxsLXRhYnMiIGNsYXNzPSJub2JhciBmdzIwMCBmczkwIHRhYyBsaDI0MCBjcCI+PC9kaXY+PGRpdiBpZD0iYnRuLWFzaWRlLWF1dGgiIGNsYXNzPSJhc2lkZS1idG4iPjwvZGl2PjxkaXYgaWQ9ImJ0bi1hc2lkZS1jb25maWciIGNsYXNzPSJhc2lkZS1idG4iPjwvZGl2PjxkaXYgaWQ9ImJ0bi1hc2lkZS1zaGFyZSIgY2xhc3M9ImFzaWRlLWJ0biI+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBpZD0ibC1ib2FyZCI+PGRpdiBpZD0ibC1hcHBzIj48L2Rpdj48ZGl2IGlkPSJsLXBpdm90LXJiIj48L2Rpdj48L2Rpdj4nLFNWRzp7bG9nbzonPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjAiIHk9IjAiIHdpZHRoPSIzMSIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCwgMCwgMzEsIDE2Ij5cbiAgPGcgaWQ9IlBob3RvbkxvZ28iPlxuICAgICA8cGF0aCBkPSJNMTUuNSwwIEMyMC4zLDAuMCAyNC4yLDAuNiAyNy44LDEuOSBMMjguMCwxLjkgQzI5LjYsMi41IDI5LjIsMi40IDI5LjQsMi40IEwzMSwzLjEgTDMxLDE2IEwwLDE2IEwwLDMuMSBDMS43LDIuNCAxLjMsMi41IDIuNCwyLjEgTDIuOSwxLjkgQzYuNywwLjYgMTAuNiwwLjAgMTUuMSwwLjAgeiIgXG5cdFx0XHRcdFx0IGZpbGw9IiAjRkZGRkZGIiBmaWxsLW9wYWNpdHk9IjEiLz5cbiAgICAgPHBhdGggZD0iTTMwLDEyIEwzMCwxNSBMMSwxNSBMMSwxMiBMMzAsMTIgeiIgXG5cdFx0XHRcdFx0IGZpbGw9IiAjZDcxZDJmIi8+XG4gICAgIDxwYXRoIGQ9Ik0zLjAsMy4wIEMzLjEsMy43IDMuMiw0LjMgMy4yLDQuNiBDMy40LDUuNyAzLjksNi42IDQuNyw3LjIgQzUuNCw3LjcgNi4yLDguMCA3LjAsOC4wIEM4LjAsNy45IDExLjYsOC4wIDEzLjEsOC4wIEMxNC4wLDguMCAxNC42LDguNiAxNSw5LjUgTDE1LDExIEwxLDExIEwxLDMuOCBDMi42LDMuMSAxLjksMy40IDMuMCwzLjAgeiIgXG5cdFx0XHRcdFx0IGZpbGw9IiAjRkE0ODQ4Ii8+XG4gICAgIDxwYXRoIGQ9Ik0xNSwxIEwxNSw3LjcgQzE0LjYsNy4xIDE0LjAsNi45IDEzLjQsNi44IEM5LjUsNi44IDguNiw2LjggNy42LDYuOCBDNy40LDYuOCA3LjMsNi44IDcuMyw2LjggQzUuOCw2LjggNC40LDUuNyA0LjEsNC4wIEw0LDIuOCBDNy41LDEuNSAxMS4zLDEuMCAxNSwxIHoiIFxuXHRcdFx0XHRcdCBmaWxsPSIgI0ZGNjc2NyIvPlxuICAgICA8cGF0aCBkPSJNMjcuOSwzLjAgQzI3LjgsMy43IDI3LjcsNC4zIDI3LjcsNC42IEMyNy41LDUuNyAyNy4wLDYuNiAyNi4yLDcuMiBDMjUuNSw3LjcgMjQuNyw4LjAgMjMuOSw4LjAgQzIyLjksNy45IDE5LjMsOC4wIDE3LjgsOC4wIEMxNi45LDguMCAxNi4zLDguNiAxNiw5LjUgTDE2LDExIEwzMCwxMSBMMzAsMy44IEMyOC4zLDMuMSAyOS4wLDMuNCAyNy45LDMuMCB6IiBcblx0XHRcdFx0XHQgZmlsbD0iICNGQTQ4NDgiLz5cbiAgICAgPHBhdGggZD0iTTE2LDEgTDE2LDcuNyBDMTYuMyw3LjEgMTYuOSw2LjkgMTcuNSw2LjggQzIxLjQsNi44IDIyLjMsNi44IDIzLjMsNi44IEMyMy41LDYuOCAyMy42LDYuOCAyMy42LDYuOCBDMjUuMSw2LjggMjYuNSw1LjcgMjYuOCw0LjAgTDI3LDIuOCBDMjMuNCwxLjUgMTkuNiwxLjAgMTYsMSB6IiBcblx0XHRcdFx0XHQgZmlsbD0iICNGRjY3NjciLz5cbiAgPC9nPlxuPC9zdmc+Jyx1c2VyOic8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMCIgeT0iMCIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIiB2aWV3Qm94PSIwLCAwLCAzMiwgMzIiPlxuXHQ8ZyBpZD0iYnRuLXVzZXItc3ZnIj48Zz5cbiAgICA8cGF0aCBpZD0ic3ZnLWF1dGgiIGQ9Ik0yNi4yNSwyMC42NSBMMjMuNTUsMjMuMzUgTDIxLjc1LDIxLjU1IE0yNCwxNy41IEMyMS41MSwxNy41IDE5LjUsMTkuNTEgMTkuNSwyMiBDMTkuNSwyNC40OCAyMS41MSwyNi41IDI0LDI2LjUgQzI2LjQ4LDI2LjUgMjguNSwyNC40OCAyOC41LDIyIEMyOC41LDE5LjUxIDI2LjQ4LDE3LjUgMjQsMTcuNSB6IiBmaWxsLW9wYWNpdHk9IjAiIFxuICAgICAgc3Ryb2tlPSIjOWJkMDg5IiBzdHJva2Utd2lkdGg9IjEiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPlxuICAgIDxwYXRoIGQ9Ik0xOC45OSwxOC40NCBMMTYsMTcuMzYgTDE2LDE1LjMyIE0xNywyMi41IEw2LjUsMjIuNSBMNi41LDIxLjAxIEM2LjUsMjAuMDEgNy4xMSwxOS4xMSA4LjA1LDE4Ljc3IEwxMiwxNy4zNiBMMTIsMTUuMzIgTTE3Ljk0LDExLjIzIEMxNy45NCw4LjYyIDE2LjE4LDYuNSAxNCw2LjUgQzExLjgxLDYuNSAxMC4wNSw4LjYyIDEwLjA1LDExLjIzIEMxMC4wNSwxMy44NSAxMS44MSwxNS45NyAxNCwxNS45NyBDMTYuMTcsMTUuOTcgMTcuOTQsMTMuODUgMTcuOTQsMTEuMjMgeiBNMTAuMDksMTAuNDcgQzEwLjU3LDEwLjcyIDExLjA1LDEwLjg0IDExLjYyLDEwLjg0IEMxMi43NiwxMC44NCAxNC4xNCwxMC4xNyAxNC41OSw5LjMxIEMxNS4zMywxMC42MSAxNi4xOSwxMS4xMCAxNy41NCwxMC44NCBDMTcuNjcsMTAuODEgMTcuNzgsMTAuODIgMTcuOTEsMTAuODEiIGZpbGwtb3BhY2l0eT0iMCIgXG4gICAgICBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz5cbiAgPC9nPjwvZz5cbjwvc3ZnPicsbG9naW46JzxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwIiB5PSIwIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjAsIDAsIDMyLCAzMiI+XG4gIDxnIGlkPSJsb2dvX2xvZ2luIj5cbiAgICA8Zz5cbiAgICAgIDxwYXRoIGQ9Ik0xNi41LDE5LjUgTDQuNSwxOS41IEw0LjUsMTAuNSBMMjcuNSwxMC41IEwyNy41LDE2LjUyIE04LjUsMTcgTDguNSwxMyBNNi44MiwxNi4wOSBMMTAuMTcsMTMuOTAgTTYuODMsMTMuODkgTDEwLjE2LDE2LjExIE0xNC41LDE3IEwxNC41LDEzIE0xMi44MiwxNi4wOSBMMTYuMTcsMTMuOTAgTTEyLjgzLDEzLjg5IEwxNi4xNiwxNi4xMSIgZmlsbC1vcGFjaXR5PSIwIiBcbiAgICAgIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPlxuICAgICAgPHBhdGggaWQ9InN2Zy11bmF1dGgiIGQ9Ik0xOC41LDE5LjgzIEwyNy41LDE5LjgzIEwyNy41LDI2LjUwIEwxOC41LDI2LjUwIHogTTIyLjk3LDIyLjU3IEwyMi45NywyNC4yNCBNMjUuNjcsMTkuODMgTDI1LjY3LDE5LjAwIEMyNS42NywxNy42MiAyNC40NiwxNi41MCAyMi45NywxNi41MCBDMjEuNDgsMTYuNTAgMjAuMjcsMTcuNjIgMjAuMjcsMTkuMDAgTDIwLjI3LDE5LjgzIE0yMy40MiwyMi4xNSBDMjMuNDIsMjEuOTIgMjMuMjIsMjEuNzQgMjIuOTcsMjEuNzQgQzIyLjcyLDIxLjc0IDIyLjUyLDIxLjkyIDIyLjUyLDIyLjE1IEMyMi41MiwyMi4zOCAyMi43MiwyMi41NyAyMi45NywyMi41NyBDMjMuMjIsMjIuNTcgMjMuNDIsMjIuMzggMjMuNDIsMjIuMTUgeiIgZmlsbC1vcGFjaXR5PSIwIiBcbiAgICAgIHN0cm9rZT0iI2ZmNjA2NCIgc3Ryb2tlLXdpZHRoPSIxIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz5cbiAgICA8L2c+XG4gIDwvZz5cbjwvc3ZnPicsY29uZmlnOic8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMCIgeT0iMCIgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIiB2aWV3Qm94PSIwLCAwLCAzMiwgMzIiPlxuICA8ZyBpZD0ibG9nb19jZmciPlxuICAgIDxwYXRoIGQ9Ik0xNi40OCwxOC41IEwxNi40OCwxMS41IE0yMi41MSwxNi41IEwyMi41MSwxOC41IE0xMC40OCw3LjUgTDEwLjQ4LDEyLjUgTTEwLjQ4LDE0LjUgTDEwLjQ4LDE4LjUgTTIyLjUxLDcuNSBMMjIuNTEsMTQuNSBNMTYuNDgsNy41IEwxNi40OCw5LjUgTTIwLjUxLDE2LjUgTDI0LjUxLDE2LjUgTDI0LjUxLDE0LjUgTDIwLjUxLDE0LjUgeiBNMTQuNDgsMTEuNSBMMTguNDgsMTEuNSBMMTguNDgsOS41IEwxNC40OCw5LjUgeiBNOC40OCwxNC41IEwxMi40OCwxNC41IEwxMi40OCwxMi41IEw4LjQ4LDEyLjUgeiBNMjIuNTIsMjEuNSBDMjEuNjksMjEuNSAyMS4wMiwyMi4xNyAyMS4wMiwyMyBDMjEuMDIsMjMuODIgMjEuNjksMjQuNSAyMi41MiwyNC41IEMyMy4zNSwyNC41IDI0LjAyLDIzLjgyIDI0LjAyLDIzIEMyNC4wMiwyMi4xNyAyMy4zNSwyMS41IDIyLjUyLDIxLjUgeiBNMTYuNDgsMjEuNSBDMTUuNjUsMjEuNSAxNC45OCwyMi4xNyAxNC45OCwyMyBDMTQuOTgsMjMuODIgMTUuNjUsMjQuNSAxNi40OCwyNC41IEMxNy4zMSwyNC41IDE3Ljk4LDIzLjgyIDE3Ljk4LDIzIEMxNy45OCwyMi4xNyAxNy4zMSwyMS41IDE2LjQ4LDIxLjUgeiBNMTAuNDgsMjEuNSBDOS42NSwyMS41IDguOTgsMjIuMTcgOC45OCwyMyBDOC45OCwyMy44MiA5LjY1LDI0LjUgMTAuNDgsMjQuNSBDMTEuMzEsMjQuNSAxMS45OCwyMy44MiAxMS45OCwyMyBDMTEuOTgsMjIuMTcgMTEuMzEsMjEuNSAxMC40OCwyMS41IHoiIGZpbGwtb3BhY2l0eT0iMCIgXG4gICAgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+XG4gIDwvZz5cbjwvc3ZnPicsc2hhcmU6JzxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwIiB5PSIwIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZpZXdCb3g9IjEsIDAsIDMzLCAzMiI+XG4gIDxnIGlkPSJsb2dvX3NldHRpbmdzIj5cbiAgICA8cGF0aCBkPSJNMjMuNTg5LDE2Ljg0NyBDMjUuNDY3LDE0Ljk2OCAyNS44MywxMi4xNDIgMjQuNjgxLDkuODk5IEwyMS42NDEsMTIuNzk5IEwxOS4yMDEsMTIuNzk5IEwxOS4yMDEsMTAuNTAzIEwyMi4xNiw3LjMxIEMxOS45MTgsNi4xNjMgMTcuMDYyLDYuNTI2IDE1LjE4NCw4LjQwMyBDMTMuMzA3LDEwLjI4IDEyLjkyNSwxMy4wOTcgMTQuMDczLDE1LjM0MSBMNi44ODQsMjIuNTIyIEM2LjE2NywyMy4yMzkgNi4xNjEsMjQuNDAxIDYuODc5LDI1LjExOSBDNy41OTcsMjUuODM3IDguNzU3LDI1LjgzNyA5LjQ3NCwyNS4xMTkgTDE2LjY1MywxNy45MzkgQzE4Ljg5NiwxOS4wODcgMjEuNzEyLDE4LjcyMyAyMy41ODksMTYuODQ3IHogTTIzLjMzNCwxNy4yMTkgTDE5LjIwMSwxMi43OTkgTTE2LjkwNSwxMi43OTkgTDE1LjUyNywxNC4xNzYgTTE4LjA1MywxMy45NDcgTDE2LjY3NiwxNS4zMjQgTTE5LjIwMSwxNS4wOTUgTDE3LjgyNCwxNi40NzIiIFxuICAgICAgICAgIGZpbGwtb3BhY2l0eT0iMCIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMSIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPlxuICA8L2c+XG48L3N2Zz4nfSxob3RrZXlzOnsiY3RybCtzLGNtZCtzIjpmdW5jdGlvbigpe3ZhciB4PXRoaXMubXkuZmluZCgiI2wtYXBwcz4ubC1hcHA6bm90KC5oaWRlKSIpO2lmKCF4Lmxlbmd0aClyZXR1cm4hMTt2YXIgYT14Lm15KCJtYW5pZmVzdCIpO3JldHVybiEhYS5jbWRTYXZlJiYoYS5jbWRTYXZlKCksITEpfSwiY3RybCt6LGNtZCt6IjpmdW5jdGlvbigpe3ZhciB4PXRoaXMubXkuZmluZCgiI2wtYXBwcz4ubC1hcHA6bm90KC5oaWRlKSIpO2lmKCF4Lmxlbmd0aClyZXR1cm4hMTt2YXIgYT14Lm15KCJtYW5pZmVzdCIpO3JldHVybiEhYS5jbWRVbmRvJiYoYS5jbWRVbmRvKCksITEpfSwiY3RybCt3LGFsdCt3IjpmdW5jdGlvbih4KXt2YXIgYT10aGlzO3JldHVybiB4LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLGEubXkuZmluZCgiI2wtYXBwdGFicyAubC10YWIuYWN0aXZlICNidG4tdGFiY2xvc2UiKS50cmlnZ2VyKCJjbGljay5teSIpLCExfX0sVTp7dGFnRW1vamk6ZnVuY3Rpb24oeCl7dmFyIGE9bmV3IFJlZ0V4cCgiXFxwe1JJfVxccHtSSX18XFxwe0Vtb2ppfShcXHB7RU1vZH0rfFxcdXtGRTBGfVxcdXsyMEUzfT98W1xcdXtFMDAyMH0tXFx1e0UwMDdFfV0rXFx1e0UwMDdGfSk/KFxcdXsyMDBEfVxccHtFbW9qaX0oXFxwe0VNb2R9K3xcXHV7RkUwRn1cXHV7MjBFM30/fFtcXHV7RTAwMjB9LVxcdXtFMDA3RX1dK1xcdXtFMDA3Rn0pPykrfFxccHtFUHJlc30oXFxwe0VNb2R9K3xcXHV7RkUwRn1cXHV7MjBFM30/fFtcXHV7RTAwMjB9LVxcdXtFMDA3RX1dK1xcdXtFMDA3Rn0pP3xcXHB7RW1vaml9KFxccHtFTW9kfSt8XFx1e0ZFMEZ9XFx1ezIwRTN9P3xbXFx1e0UwMDIwfS1cXHV7RTAwN0V9XStcXHV7RTAwN0Z9KSIsImd1Iik7cmV0dXJuIHgucmVwbGFjZShhLGZ1bmN0aW9uKHgpe3JldHVybiI8amk+Iit4KyI8L2ppPiJ9KX0sbm9vcDpmdW5jdGlvbih4KXtyZXR1cm4geH19LEY6e01ldHJpYzpmdW5jdGlvbih4LGEpe2lmKCIiPT14KXJldHVybiB4O2E9YXx8Njt2YXIgYj0reHx8MDtpZighYilyZXR1cm4gMDt2YXIgYz0rYi50b0V4cG9uZW50aWFsKCkuc3BsaXQoImUiKVsxXTtpZihiPCsoIjFlIithKSlyZXR1cm4gYisiIjt2YXIgZD1jPjc/MzoyLGU9YyYmYyUzIT0yP2MlMz09MD8yOjE6MDtyZXR1cm4gYi5tZXRyaWMoZSxkKX0sQnl0ZXM6ZnVuY3Rpb24oeCl7aWYoIiI9PXgpcmV0dXJuIHg7dmFyIGE9K3h8fDA7aWYoIWEpcmV0dXJuIiI7dmFyIGI9K2EudG9FeHBvbmVudGlhbCgpLnNwbGl0KCJlIilbMV07cmV0dXJuIGEuYnl0ZXMoYiUzPT0wJiZiPzE6MCl9LFBva2VCdWNrZXQ6ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuUmVxKFt4XSl9LFNldFRoZW1lOmZ1bmN0aW9uKHgpe2lmKHRoaXMuX2NvbXBpbGVkKXJldHVybiJhdXRvIj09eCYmd2luZG93Lm1hdGNoTWVkaWEmJndpbmRvdy5tYXRjaE1lZGlhKCIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIikubWF0Y2hlcz8oYSgpLCQoImJvZHkiKS5hZGRDbGFzcygidGhlbWUtZGFyayIpKTp4PyhhKCksJCgiYm9keSIpLmFkZENsYXNzKCJ0aGVtZS0iK3gpKTphKCksJCgiYm9keSIpLnRyaWdnZXIoInJlc2l6ZSIpLHg7ZnVuY3Rpb24gYSgpeyQoImJvZHkiKS5yZW1vdmVDbGFzcygoeCxhKT0+KGEubWF0Y2goLyhefFxzKXRoZW1lLVxTKy9nKXx8W10pLmpvaW4oIiAiKSl9fSxTZWwyU2Nyb2xsOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpczthP3guZmluZCgiLnNlbGVjdDItY29udGFpbmVyPi5zZWxlY3QyLWNob2ljZXMiKS5lYWNoKGZ1bmN0aW9uKCl7Yi5uaWNlU2Nyb2xsKCQodGhpcykse2JvdW5jZXNjcm9sbDohMCxjdXJzb3Jjb2xvcjoiIzIzNCIsY3Vyc29yb3BhY2l0eW1pbjouMSxjdXJzb3JvcGFjaXR5bWF4Oi40LHJhaWxwYWRkaW5nOntyaWdodDoxfX0pfSk6eC5maW5kKCIuc2VsZWN0Mi1jb250YWluZXI+LnNlbGVjdDItY2hvaWNlcyIpLmVhY2goZnVuY3Rpb24oKXt2YXIgeD0kKHRoaXMpLmdldE5pY2VTY3JvbGw7ImZ1bmN0aW9uIj09dHlwZW9mIHgmJngoKS5yZW1vdmUoKX0pfSxTZXNzaW9uOmZ1bmN0aW9uKCl7dmFyIHg9dGhpcyxhPXRoaXMuaXNJRTt4LlBobygiX2NvbXBpbGVkIikmJndpbmRvdy5ERE9DJiYkLmFqYXgoe3VybDp4LkJhc2UucmVwbGFjZSgvXC8rJC8sIiIpKyIvX3Nlc3Npb24iLG1ldGhvZDoiZ2V0IixkYXRhVHlwZToianNvbiIsaGVhZGVyczp7QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uIn0sY2FjaGU6IWF9KS50aGVuKGZ1bmN0aW9uKHgpe2lmKE9iamVjdC5pc09iamVjdCh4KSYmeC51c2VyQ3R4KXt2YXIgYT14LnVzZXJDdHgsYj17bmFtZTphLm5hbWV8fCIiLHJvbGVzOmEucm9sZXN8fFtdfTthLm5hbWV8fCgkLmV4dGVuZCh3aW5kb3cuRERPQy5fbWUsYiksJC5teS5yYWRpbygidXNlckN0eCIsYikpfX0pfSxDbG9zZUFsbDpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YS5UYWJzLnJlZHVjZShmdW5jdGlvbihhLGIpe3JldHVybih4P2IuYWN0aXZlOiFiLnBhdGgubGVuZ3RoKXx8Yi5oYXNoMCE9Yi5oYXNoMT9hOihhLnB1c2goe3RhYmlkOmIuaWQsZW5mb3JjZTohMCxzaWxlbnQ6ITB9KSxhKX0sW10pO2IubGFzdCgpLnNpbGVudD0hMSxiLm1hcChmdW5jdGlvbih4KXthLkNsb3NlKHgpfS5sYXp5KDMwKSl9LEJ1c3k6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPWEuZGF0YTthLm15LnJvb3QoKS50b2dnbGVDbGFzcygiYXBwLWJ1c3kiLHgpLCQubXkucmFkaW8oImFwcGJ1c3kiLHtpZDpiLnRhYmlkLGJ1c3k6eH0pfSxSZXE6ZnVuY3Rpb24oeCxhKXtPYmplY3QuaXNTdHJpbmc7dmFyIGI9T2JqZWN0LmlzT2JqZWN0LGM9T2JqZWN0LmlzQXJyYXksZD10aGlzLmlzSUUsZT1mdW5jdGlvbih4KXtyZXR1cm4iX25vZGUvX2xvY2FsL19ub2RlcyIhPXg/d2luZG93LmVuY29kZVVSSUNvbXBvbmVudCh4KTp4fSxmPXRoaXMsZz0oZi5kYXRhLGYuQ2ZnKSxoPWYubGFuZyxpPSQuRGVmZXJyZWQoKSxqPSQuZXh0ZW5kKCEwLHttZXRob2Q6IkdFVCIsZGF0YVR5cGU6Impzb24iLGhlYWRlcnM6e0FjY2VwdDoiYXBwbGljYXRpb24vanNvbiJ9LGNhY2hlOiFkfSxiKHgpP3g6Yyh4KT97dXJsOnh9Ont1cmw6eCsiIn0pLGs9bShqLnVybCxmLkJhc2UpO3JldHVybiBhP2s6KGt8fGwoNDAwLGguRVJSX1JFUV9JTlZBTElEQ0FMTCksZi5fY29tcGlsZWQmJiEvXC9fc2Vzc2lvbiQvLnRlc3QoaykmJmshPWYuQmFzZSYmZy5yb2xlcy5sZW5ndGgmJi0xPT1jdy5tZSgicm9sZXMiKS5pbmRleE9mKCJfYWRtaW4iKSYmMD09Y3cubWUoInJvbGVzIikuaW50ZXJzZWN0KGcucm9sZXMpLmxlbmd0aD8oY3cubWUoKT9sKDQwMyxoLkVSUl9SRVFfUk9MRVJFUSx7b2s6ITEscmVhc29uOiJjb25maWcifSk6bCg0MDEsaC5FUlJfUkVRX0FVVEhSRVEse29rOiExLHJlYXNvbjoiY29uZmlnIn0pLGkucHJvbWlzZSgpKTooai51cmw9aywkLmFqYXgoaikudGhlbihmdW5jdGlvbih4LGEsYil7aS5yZXNvbHZlKHgsYil9KS5mYWlsKGZ1bmN0aW9uKHgsYSl7dmFyIGI7dHJ5e2I9SlNPTi5wYXJzZSh4LnJlc3BvbnNlVGV4dCl9Y2F0Y2goeCl7fU9iamVjdC5pc09iamVjdChiKXx8KGI9e3Jlc3BvbnNlOngucmVzcG9uc2VUZXh0fSksYi5vaz0hMTt2YXIgYz14LnN0YXR1cztsKGMsYi5yZWFzb258fGIubWVzc2FnZXx8IiIsYiksZi5fY29tcGlsZWQmJmN3Lm1lKCJuYW1lIikmJig0MDE9PWN8fDQwMz09YykmJmYuU2Vzc2lvbigpfSksaS5wcm9taXNlKCkpKTtmdW5jdGlvbiBsKHgsYSxiKXt2YXIgYz1pc05hTih4KT81MDA6K3gsZD1pc05hTih4KSYmIWE/eDphO2R8fChkPWguRVJSX1JFUVtjXXx8aC5FUlJfUkVRWzk5OV0pLGQrPSIiLGkucmVqZWN0KGMsZCxiKX1mdW5jdGlvbiBtKHgsYSl7dmFyIGI9W10sYz17fSxkPVtdLGY9IiIsZz1hPyhhKyIiKS5yZXBsYWNlKC9cLyskLywiIikrIi8iOiIiLGg9e3N0YXJ0a2V5OjEsZW5ka2V5OjEsc3RhcnRfa2V5OjEsZW5kX2tleToxLGtleToxfSxpPS9eX2Rlc2lnblwvLztyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHg/Zj0vXmh0dHBbc10/Oi8udGVzdCh4KT94OmcreC5yZXBsYWNlKC9eXC8rLywiIik6T2JqZWN0LmlzQXJyYXkoeCkmJih4LmZvckVhY2goZnVuY3Rpb24oeCxhKXtpZigiIiE9PXgmJm51bGwhPXgpaWYoT2JqZWN0LmlzT2JqZWN0KHgpKSQuZXh0ZW5kKCEwLGMseCk7ZWxzZSBpZihpLnRlc3QoeCsiIikpe3ZhciBkPSh4KyIiKS5zcGxpdCgiLyIpO2IuYWRkKFtkWzBdLGQuZnJvbSgxKS5qb2luKCIvIildKX1lbHNlIGIucHVzaChlKHgrIiIpKX0pLGQ9T2JqZWN0LmtleXMoYykubWFwKGZ1bmN0aW9uKHgpe3ZhciBhPWNbeF07cmV0dXJuKGhbeF18fCJzdHJpbmciIT10eXBlb2YgYSkmJihhPUpTT04uc3RyaW5naWZ5KGEpKSxlKHgpKyI9IitlKGEpfSksZj1nK2Iuam9pbigiLyIpKyhkLmxlbmd0aD8iPyIrZC5qb2luKCImIik6IiIpKSxmfX0sU3dpdGNoOmZ1bmN0aW9uKHgsYSxiKXt2YXIgYz10aGlzLGQ9dSxlPWMuZGF0YSxmPWMuVGFicy5maW5kSW5kZXgoZnVuY3Rpb24oeCl7cmV0dXJuIHguYWN0aXZlfSl8fDAsZz1PYmplY3QuaXNTdHJpbmcoeCk/eC5yZXBsYWNlKC9eIy8sIiIpLnNwbGl0KCIvIikuY29tcGFjdCghMCk6T2JqZWN0LmlzQXJyYXkoeCk/eC5zbGljZSgwKS5jb21wYWN0KCEwKTpbXTtnLmxlbmd0aD4yJiZnLmpvaW4oIi8iKS5zdGFydHNXaXRoKCJfbm9kZS9fbG9jYWwvX25vZGVzIikmJigoZz1nLmZyb20oMikpWzBdPSJfbm9kZS9fbG9jYWwvX25vZGVzIiksIl9ub2RlL19sb2NhbC9fdmVyc2lvbnMiPT1nLmpvaW4oIi8iKSYmKGc9WyJfbm9kZS9fbG9jYWwiLCJfdmVyc2lvbnMiXSksWzEsMiwzXS5mb3JFYWNoKGZ1bmN0aW9uKHgpey9eXyhkZXNpZ258bG9jYWwpJC8udGVzdChnW3hdKSYmKGdbeCsxXSYmKGdbeCsxXT1nW3hdKyIvIitnW3grMV0pLGcucmVtb3ZlQXQoeCkpfSk7dmFyIGgsaT1nLmpvaW4oIlxmZmZkIiksaj1bXTtpZihjLlRhYnMuZm9yRWFjaCh4PT54LnBhdGguam9pbigiXGZmZmQiKT09aT9qLnB1c2goeCk6MCksai5sZW5ndGg+MSYmYSYmKGpbMF09ai5maW5kKHg9PnguaWQ9PWEpfHxqWzBdKSwoaD1qWzBdKSYmaC5hY3RpdmUmJmgucnVuKXJldHVybiExO3ZhciBrLGw9L14oX25vZGVcL19sb2NhbHxfbm9kZVwvX2xvY2FsXC9fbm9kZXN8X3VzZXJzfF9yZXBsaWNhdG9yfF9kYnN8X25vZGVzfF9nbG9iYWxfY2hhbmdlcykkLy50ZXN0KGdbMF0pfHwvXlthLXpBLVowLTkkXChcKVwrXC1dW2EtekEtWjAtOSRcKFwpXCtcLVwvX1wuXSokLy50ZXN0KGdbMF0pLG09ImVycm9yIixuPSJFcnJvciIsbz1jLlR5cGVzLnJlZHVjZShmdW5jdGlvbih4LGEpe2lmKHgub2t8fCFjW2FdLm1hdGNoKXJldHVybiB4O3ZhciBiPWNbYV0ubWF0Y2guY2FsbChjLGcuc2xpY2UoMCksbCk7cmV0dXJuIGImJiQuZXh0ZW5kKHgse29rOiEwLHR5cGU6YS5zdWJzdHIoMSl9LGIpLHh9LHtvazohMSx0aXRsZToiRXJyb3IiLHR5cGU6ImVycm9yIixwYXRoOmd9KTtpZihtPW8udHlwZSxuPW8udGl0bGUsaz1vLmFwcERhdGEsZz1vLnBhdGgsImVycm9yIj09bSYmKGs9e2Vycm9yOiJVbnJlY29nbml6ZWQgY29tbWFuZCJ9KSwhaCl7aWYoYy5UYWJzLmxlbmd0aD49Yy5DZmcubWF4VGFicyYmZy5sZW5ndGgpe3ZhciBwPWMuVGFicy5maW5kKHg9PiJhYm91dCI9PXgudHlwZSl8fGMuVGFicy5tYXAoZnVuY3Rpb24oeCxhKXtyZXR1cm4geC50cz14LnRzfHwiMDAwMDAwIisoOTktYSkudG9TdHJpbmcoMzYpLHh9KS5maWx0ZXIoZnVuY3Rpb24oeCl7cmV0dXJuIXguZXJyb3ImJiF4LmFjdGl2ZSYmeC5oYXNoMD09eC5oYXNoMX0pLnNvcnRCeSgidHMiKVswXTtpZighcClyZXR1cm4gY3cubGliLm5vdGUoYy5sYW5nLkZBSUxfVE9PX01BTllfVEFCUy5hc3NpZ24oYy5DZmcubWF4VGFicysiIiksImVycm9yIiksITE7Yy5DbG9zZSh7dGFiaWQ6cC5pZCxzaWxlbnQ6ITB9KX0hMCxoPXtpZDpjdy5saWIuc2RibShEYXRlLm5vdygpK2cpLHR5cGU6bSxoYXNoMDoiIixoYXNoMToiIixhY3RpdmU6ITAsbmFtZTpuLHBhdGg6Zy5zbGljZSgwKSxlcnJvcjoiZXJyb3IiPT1tLHJ1bjohMSx0czpEYXRlLm5vdygpLnRvU3RyaW5nKDM2KX07dmFyIHE9MCxyPS9eKGRic3xjb25maWd8YWJvdXR8c3RhdHN8bG9nKSQvO2lmKHIudGVzdChtKSkiYWJvdXQiIT1tPyhxPWMuVGFicy5maW5kSW5kZXgoeD0+IXIudGVzdCh4LnR5cGUpKXx8MCkmJmMuVGFic1txLTFdJiYiIj09Yy5UYWJzW3EtMV0ucGF0aCYmKHEtPTEpOnE9Yy5UYWJzLmxlbmd0aDtlbHNlIGlmKDE9PWcubGVuZ3RoJiZjLlRhYnNbZl0ucGF0aFswXT09Z1swXSlmb3IocT1mO3E+MCYmYy5UYWJzW3EtMV0ucGF0aFswXT09Z1swXTspcS09MTtlbHNlIHE9Mj09Zy5sZW5ndGgmJmMuVGFic1tmXS5wYXRoLnRvKDIpKyIiPT1nKyIiP2Y6ZisxO2MuVGFicy5pbnNlcnQoaCxxKX1pZihjLlRhYnMuZm9yRWFjaCh4PT54IT09aD94LmFjdGl2ZT0hMTowKSxoLmFjdGl2ZT0hMCxoLnRzPURhdGUubm93KCkudG9TdHJpbmcoMzYpLGMuSGlzdG9yeS5yZW1vdmUoaC5pZCksYy5IaXN0b3J5LnB1c2goaC5pZCksYy5fY29tcGlsZWQpe3ZhciBzPWgucGF0aC5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudCh4KX0pLmpvaW4oIi8iKTtsb2NhdGlvbi5oYXNoLnJlcGxhY2UoL14jLywiIikhPXMmJihsb2NhdGlvbi5oYXNoPSIjIitzKX1jLlNldFRpdGxlKGgubmFtZSksZCgpLGMubXkucmVzdHlsZSgpO3ZhciB0PXYobSxnLGguaWQsayk7ZnVuY3Rpb24gdSgpe2MubXkucmVjYWxjKCIjbC1hcHB0YWJzIiksZS5wYXRoPU9iamVjdC5jbG9uZShnLCEwKX1mdW5jdGlvbiB2KHgsYSxkLGUpe3ZhciBmLGc9Y1siJCIreF0saD1jLm15LmZpbmQoIiNsLWFwcHM+I2FwcC0iK2QpO3JldHVybiFoLmxlbmd0aHx8IWguaXMoIi5teS1mb3JtIikmJiJlcnJvciI9PXg/KGgubGVuZ3RofHwoaD0kKCc8ZGl2IGNsYXNzPSJsLWFwcCIgaWQ9ImFwcC0nK2QrJyI+PC9kaXY+JyksYy5teS5maW5kKCIjbC1hcHBzIikuYXBwZW5kKGgpKSxjLm15LmZpbmQoIiNsLWFwcHM+LmwtYXBwIikuYWRkQ2xhc3MoImhpZGUiKSxoLnJlbW92ZUNsYXNzKCJoaWRlIiksZj1oLm15KGcsJC5leHRlbmQoe3BhdGg6YSx0YWJpZDpkfSxlfHx7fSwiZXJyb3IiPT14P3t9OmJ8fHt9KSkpOmMubXkuZmluZCgiI2wtYXBwcz4ubC1hcHAiKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHg9JCh0aGlzKTt4LmlzKGgpP3gucmVtb3ZlQ2xhc3MoImhpZGUiKTp4LmFkZENsYXNzKCJoaWRlIil9KSxmfHxofXQudGhlbiYmdC50aGVuKGZ1bmN0aW9uKCl7dmFyIHg9ITE7aC5ydW49ITAsaC5oYXNoMD1oLmhhc2gxPXQubXkoIm1hbmlmZXN0IikuaGFzaCgpLGgubmFtZT10Lm15KCJtYW5pZmVzdCIpLnRpdGxlKCksYy5TZXRUaXRsZShoLm5hbWUpLHQub24oImNoYW5nZS5teSIsZnVuY3Rpb24oKXtoLmhhc2gxPXQubXkoIm1hbmlmZXN0IikuaGFzaCgpO3ZhciBhPXQubXkoIm1hbmlmZXN0IikudGl0bGUoKTtoLmhhc2gwIT1oLmhhc2gxfHxhIT1oLm5hbWU/KGgubmFtZT1hLHg9ITAsZCgpKTp4JiZkKCksaC5hY3RpdmUmJmMuU2V0VGl0bGUoaC5uYW1lKX0uZGVib3VuY2UoNTAwKSksdC5vbigicmVzZXR0YWJoYXNoLm15IixmdW5jdGlvbigpe2guaGFzaDA9aC5oYXNoMT10Lm15KCJtYW5pZmVzdCIpLmhhc2goKSxoLm5hbWU9dC5teSgibWFuaWZlc3QiKS50aXRsZSgpLGQoKX0uZGVib3VuY2UoMTAwKSksZCgpfSkuZmFpbChmdW5jdGlvbih4LGIpe2MuUGhvKCJDb3VjaCIpLnZlcj49IjAwMy4iJiZjdy5tZSgpJiYhZy5sZW5ndGh8fGN3LmxpYi5ub3RlKGMubGFuZy5GQUlMX1RBQl9BUFAsImVycm9yIiksYy5teS5maW5kKCIjbC1hcHBzPiNhcHAtIithKS5yZW1vdmUoKSxoLmVycm9yPSEwLGNvbnNvbGUubG9nKHgsYiksaC5oYXNoMT1oLmhhc2gwPSJlcnJvciIsdigiZXJyb3IiLGcsaC5pZCx7ZXJyb3I6T2JqZWN0LmlzU3RyaW5nKHgpJiZPYmplY3QuaXNTdHJpbmcoYik/eCsiICIrYjp4fSl9LmRlYm91bmNlKDEwKSl9LENsb3NlOmZ1bmN0aW9uKHgpe3ZhciBhLGI9dGhpcyxjPSExO2lmKE9iamVjdC5pc09iamVjdCh4KT8oYT14LnRhYmlkfHwiIix4LmVuZm9yY2V8fCExLGM9eC5zaWxlbnR8fCExKTphPXgrIiIsIShiLlRhYnMubGVuZ3RoPDIpJiZhKXt2YXIgZD1iLlRhYnMuZmluZCh4PT54LmlkPT1hKTtpZihkKXt2YXIgZT1iLm15LmZpbmQoIiNsLWFwcHM+I2FwcC0iK2EpO2UubGVuZ3RoJiZlLmlzKCIubXktZm9ybSIpPyhkLmhhc2gxPWUubXkoIm1hbmlmZXN0IikuaGFzaCgpLGQuaGFzaDE9PWQuaGFzaDA/ZihlLGQpOiQubXkubW9kYWwoe21hbmlmZXN0OmIuQ29uZmlybSxkYXRhOnt5ZXM6IkNsb3NlIHRhYiZuYnNwOyIsbm86IkNhbmNlbCBjbG9zZSIsY2FuY2VsOiIiLHRleHQ6Yi5sYW5nLkRMR19VTlNBVkVELHVzZUJ1dHRvbnM6ITB9LHdpZHRoOjMwMCxjbG9zZTpiLmxhbmcuQlROX1hETEcsZXNjOiEwLGVudGVyOiExLGNzczoibGgxNzAgeGdyYXkgcDIwIHBiMjUiLGZvY3VzOiIjYnRuLXllcyJ9KS50aGVuKGZ1bmN0aW9uKHgpeyJ5ZXMiPT14LmNtZCYmZihlLGQpfSkpOmcoIWQuYWN0aXZlKX19ZnVuY3Rpb24gZih4LGEpe3gubXkoInJlbW92ZSIpLHgucmVtb3ZlKCksZyghYS5hY3RpdmUpfWZ1bmN0aW9uIGcoeCl7aWYoYi5IaXN0b3J5LnJlbW92ZShhKSxiLlRhYnMucmVtb3ZlKGQpLHgpY3x8Yi5teS5yZWNhbGMoIiNsLWFwcHRhYnMiKTtlbHNlIGlmKGIuSGlzdG9yeS5sZW5ndGgpe2Zvcih2YXIgZSxmO2IuSGlzdG9yeS5sZW5ndGgmJiFlOylmPWIuSGlzdG9yeS5wb3AoKSxlPWIuVGFicy5maW5kKHg9PnguaWQ9PWYpO2V8fChlPWIuVGFic1swXSksYi5Td2l0Y2goZS5wYXRoLGUuaWQpfWVsc2UgYi5teS5yZWNhbGMoIiNsLWFwcHRhYnMiKSxiLl9jb21waWxlZCYmd2luZG93Lmhpc3RvcnkuYmFjaygpO2N8fGIubXkucmVzdHlsZSgpfX0sR2V0TGlzdDpmdW5jdGlvbigpe3ZhciB4PXRoaXMsYT0oeC5kYXRhLCQuRGVmZXJyZWQoKSksYj1lbmNvZGVVUklDb21wb25lbnQsYz0iIixkPVtdLGU9Il9ub2RlL19sb2NhbC9fbm9kZXMiLGY9W3guUmVxKFsiX2FsbF9kYnMiXSkudGhlbihmdW5jdGlvbihhKXt2YXIgYz1PYmplY3Qua2V5cyh4LkFsbCksZD1hLnNsaWNlKDApO2Muc3VidHJhY3QoZCkuZm9yRWFjaChmdW5jdGlvbihhKXthIT1lJiZkZWxldGUgeC5BbGxbYV19KSxkLmZvckVhY2goZnVuY3Rpb24oYSl7aWYoIXguQWxsW2FdKXt2YXIgYz1hLmVzY2FwZUhUTUwoKSxkPWcoYSksZT1jLGY9YS5sZW5ndGgsaD0wO2Y+MTUmJihoPWYtKDE1K2YlMyksZT1hLnRvKGYtaCkrYS5mcm9tKGYtaCkucmVwbGFjZSgvKC57M30pL2csIiQxPHdicj4iKSk7dmFyIGk9JC5leHRlbmQoITAse25hbWU6YSxuYW1lc2FmZTpjLGhuYW1lOmUsdG9vbHRpcDpkLGhyZWY6YihhKX0seC5kYlR5cGUpO3guQWxsW2FdPSQuZXh0ZW5kKCEwLGkseC5BbGxbYV18fHt9KX19KSx4Lkdyb3VwREJzKCl9KS50aGVuKGZ1bmN0aW9uKCl7eC5QaG8oIkNvdWNoIikudmVyPCIwMDMuInx8IWN3Lm1lKCJyb2xlcyIpLmZpbmQoIl9hZG1pbiIpfHwoeC5BbGxbZV09eC5BbGxbZV18fCQuZXh0ZW5kKCEwLHtuYW1lOmUsbmFtZXNhZmU6ZSxobmFtZTplLHRvb2x0aXA6ZSxocmVmOmIoZSl9LHguZGJUeXBlKSl9KS5mYWlsKGZ1bmN0aW9uKHgsYixjKXtjb25zb2xlLmxvZyh4LGIsYyksYS5yZWplY3QoeCxiLGMpfSldO3JldHVybiBmLnB1c2goaCgpKSxRLmFsbFNldHRsZWQoZikudGhlbihmdW5jdGlvbigpe3guQWxsW2NdP3guUmVwbGljYXRvckRCPWM6eC5SZXBsaWNhdG9yREI9eC5SZXBsaWNhdG9yREJ8fCJfcmVwbGljYXRvciIsYS5yZXNvbHZlKHguQWxsKX0pLGEucHJvbWlzZSgpO2Z1bmN0aW9uIGcoeCl7aWYoIS9edXNlcmRiLShbMC05YS1oXXsyfSl7MSx9JC8udGVzdCh4KSlyZXR1cm4geC5sZW5ndGg+MjA/eDoiIjt2YXIgYT14LmZyb20oNyksYj0iIjt0cnl7Yj1kZWNvZGVVUklDb21wb25lbnQoYS5yZXBsYWNlKC8oLi4pL2csIiUkMSIpKX1jYXRjaCh4KXt9cmV0dXJuIGI/IlVzZXIgREIgZm9yICIrYjp4Lmxlbmd0aD4yMD94OiIifWZ1bmN0aW9uIGgoKXt2YXIgYT1bXTtyZXR1cm4geC5Db3VjaC52ZXJzaW9ufHwoYS5wdXNoKHguUmVxKHt1cmw6W10sZGF0YVR5cGU6Impzb24ifSkudGhlbihhPT54LkNvdWNoLnZlcnNpb24/YTokLmV4dGVuZCh4LkNvdWNoLGEpKS5mYWlsKGE9PnskLmV4dGVuZCh4LkNvdWNoLHtjb3VjaGRiOiJXZWxjb21lIix2ZXJzaW9uOiIyLjMuMSIsdXVpZDoiMTEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwZmYiLGZlYXR1cmVzOltdLHZlbmRvcjp7bmFtZToiRmFrZWQgcmVzcG9uc2UifX0pfSkuYWx3YXlzKGwpKSwheC5QaG8oIl9jb21waWxlZCIpfHx3aW5kb3cuRERPQyYmd2luZG93LkRET0MuX2RifHxhLnB1c2goeC5SZXEoe3VybDpbIl9kYnJvb3QiXSxkYXRhVHlwZToianNvbiJ9KS50aGVuKGZ1bmN0aW9uKGEpeyQuZXh0ZW5kKHguQ291Y2gsYSksbCgpfSkuZmFpbCh4PT5jb25zb2xlLmxvZygiVGhpcyA0MDAgaXMgbm9ybWFsIikpKSksUS5hbGxTZXR0bGVkKGEpLnRoZW4oaSl9ZnVuY3Rpb24gaSgpe3ZhciBhPVtdO3JldHVybiB4LkNvdWNoLnZlcjwiMDAyLiI/KGEucHVzaCh4LlJlcShbIl9jb25maWciLCJyZXBsaWNhdG9yIiwiZGIiXSkudGhlbihmdW5jdGlvbih4KXsic3RyaW5nIj09dHlwZW9mIHgmJihjPXgpfSkuZmFpbChmdW5jdGlvbigpe2NvbnNvbGUubG9nKCJUaGlzIDQweCBpcyBub3JtYWwiKX0pLHguUmVxKFsiX2NvbmZpZyIsImh0dHBkIiwicG9ydCJdKS50aGVuKGZ1bmN0aW9uKGEpeyJzdHJpbmciPT10eXBlb2YgYSYmKHguQ291Y2gucG9ydD1hKX0pKSx4LkNvdWNoLm1heEJhdGNoPTApOmEucHVzaCh4LkdldE1lbWJlcnNoaXAoKS50aGVuKGZ1bmN0aW9uKHgpe2Q9eH0pLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gaygpfSksaigpLHguUmVxKFsiX25vZGUiLCJfbG9jYWwiLCJfY29uZmlnIiwiY2h0dHBkIiwicG9ydCJdKS50aGVuKGZ1bmN0aW9uKGEpeyJzdHJpbmciPT10eXBlb2YgYSYmKHguQ291Y2gucG9ydD1hKX0pKSxRLmFsbFNldHRsZWQoYSl9ZnVuY3Rpb24gaigpe2lmKCF4LlBobygiQ291Y2giKS5xKXJldHVybiB4LlJlcShbIl9ub2RlIiwiX2xvY2FsIiwiX2NvbmZpZyIsImNsdXN0ZXIiXSkudGhlbihmdW5jdGlvbihhKXthJiYib2JqZWN0Ij09dHlwZW9mIGEmJih4LkNvdWNoLnE9KyhhLnF8fDApLHguQ291Y2gubj0rKGEubnx8MCkpfSkuZmFpbChmdW5jdGlvbigpe3guQ291Y2gucT0wLGNvbnNvbGUubG9nKCJUaGlzIDQweCBpcyBub3JtYWwiKX0pfWZ1bmN0aW9uIGsoKXtyZXR1cm4hZC5sZW5ndGh8fHguQ291Y2gudmVyPCIwMDIuMDAyLiJ8fHguQ291Y2gubWF4QmF0Y2g+MD8oeC5Db3VjaC5tYXhCYXRjaD14LkNvdWNoLm1heEJhdGNofHwwLHZvaWQgMCk6eC5SZXEoWyJfbm9kZSIsIl9sb2NhbCIsIl9jb25maWciLCJjaHR0cGQiLCJtYXhfZGJfbnVtYmVyX2Zvcl9kYnNfaW5mb19yZXEiXSkudGhlbihmdW5jdGlvbihhKXt4LkNvdWNoLm1heEJhdGNoPSJzdHJpbmciPT10eXBlb2YgYT8rYTowfSkuZmFpbChmdW5jdGlvbigpe3guQ291Y2gubWF4QmF0Y2g9eC5Db3VjaC52ZXI+IjAwMy4wMDEuIj8xMDA6MCxjb25zb2xlLmxvZygiVGhpcyA0MHggaXMgbm9ybWFsIil9KX1mdW5jdGlvbiBsKCl7eC5Db3VjaC52ZXI9eC5Db3VjaC52ZXJzaW9uLnNwbGl0KCIuIikubWFwKGZ1bmN0aW9uKHgpe3JldHVybigiMDAiKygreHx8cGFyc2VJbnQoeCl8fDApLnRvU3RyaW5nKCkpLnN1YnN0cigtMyl9KS5qb2luKCIuIil9fSxHZXRNZW1iZXJzaGlwOmZ1bmN0aW9uKCl7dmFyIHgsYT10aGlzO3JldHVybiBPYmplY3Quc2l6ZSh4PWEuUGhvKCJNZW1iZXJzaGlwIikpP2IoeCk6YS5SZXEoWyJfbWVtYmVyc2hpcCJdKS50aGVuKGIpO2Z1bmN0aW9uIGIoeCl7dmFyIGI9W107cmV0dXJuIE9iamVjdC5pc09iamVjdCh4KSYmT2JqZWN0LmlzQXJyYXkoeC5hbGxfbm9kZXMpJiZPYmplY3QuaXNBcnJheSh4LmNsdXN0ZXJfbm9kZXMpJiYoJC5leHRlbmQoITAsYS5QaG8oIk1lbWJlcnNoaXAiKSx4KSxiPXguY2x1c3Rlcl9ub2Rlcy5zbGljZSgwKS5pbnRlcnNlY3QoeC5hbGxfbm9kZXMpKSxifX0sR2V0VXNlcnM6ZnVuY3Rpb24oKXt2YXIgeD10aGlzLGE9JC5EZWZlcnJlZCgpLGI9eC5Vc2VycztyZXR1cm4oYi5fc2VxP3guUmVxKHt1cmw6WyJfdXNlcnMiLCJfY2hhbmdlcyIse3NpbmNlOmIuX3NlcX1dLGRhdGFUeXBlOiJqc29uIn0pOnguUmVxKHt1cmw6WyJfdXNlcnMiLCJfYWxsX2RvY3MiLHt1cGRhdGVfc2VxOiEwfV0sZGF0YVR5cGU6Impzb24ifSkpLnRoZW4oZnVuY3Rpb24oeCl7Yi5fc2VxPXgubGFzdF9zZXF8fHgudXBkYXRlX3NlcSwoeC5yb3dzfHx4LnJlc3VsdHN8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHgpe2lmKCJvcmcuY291Y2hkYi51c2VyOiI9PXguaWQudG8oMTcpKXt2YXIgYT14LmlkLmZyb20oMTcpO3guZGVsZXRlZD9kZWxldGUgYlthXTpiW2FdPSEwfX0pfSkuYWx3YXlzKGZ1bmN0aW9uKCl7YS5yZXNvbHZlKE9iamVjdC5rZXlzKGIpLnNvcnQoKS5yZW1vdmUoL15fLykpfSksYS5wcm9taXNlKCl9LEdyb3VwREJzOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcyxjPWIuQWxsLGQ9Yi5QaG8oIkNmZyIpLmdyb3VwaW5nLGU9KHg9eHx8T2JqZWN0LmtleXMoYyksYT1hfHxPYmplY3Qua2V5cyhiLkxzKCJEQnMuU3RhcnMiKXx8e30pLGN3LmxpYi5hMm8oYSkpLGY9ZC5maW5kKCJ0aW55Iik/MTA6ZC5maW5kKCJzbWFsbCIpPzMwOmQuZmluZCgibGFyZ2UiKT8yNTA6MTAwLGc9Zi8zfDAsaD14LmZpbHRlcih4PT4hZVt4XSkuc29ydCgpO2lmKHgubGVuZ3RoPDIqZ3x8ZCsiIj09IiIpcmV0dXJuIE9iamVjdC5rZXlzKGMpLmZvckVhY2goeD0+Y1t4XS5ncm91cD0iIiksYi5Hcm91cHM9e307aWYoZC5maW5kKCJhdXRvIikpe2lmKGQuZmluZCgiYXV0byIpKXtsPXsiIjowfTt2YXIgaT17fTtoPShoPWgubWFwKGZ1bmN0aW9uKHgsYSl7dmFyIGI9KHgubWF0Y2goL15bYS16MC05XCRdK1tcL1wtX1wrXS8pfHxbXSlbMF07cmV0dXJuIGI/KGxbYl18fChpW2JdPWEsbFtiXT0wKSxsW2JdKz0xLHtkYjp4LGdyb3VwOmJ9KToobFsiIl0rPTEse2RiOngsZ3JvdXA6IiJ9KX0pKS5tYXAoZnVuY3Rpb24oeCl7dmFyIGE9eC5ncm91cDtyZXR1cm4gYT8obFthXT9sW2FdPGcmJihsWyIiXSs9bFthXSxkZWxldGUgbFthXSx4Lmdyb3VwPSIiKTp4Lmdyb3VwPSIiLHgpOnh9KTt2YXIgaj1bXSxrPW51bGw7bT0wO2guZm9yRWFjaChmdW5jdGlvbih4LGEpe2lmKCJfIiE9eC5kYlswXSl7aWYoeC5ncm91cClyZXR1cm4gaz1udWxsO2t8fGoucHVzaCh7aTA6YSxzaXplOjAscGY6e319KTt2YXIgYj1qLmxhc3QoKSxjPXguZGJbMF07Yi5wZltjXXx8KGIucGZbY109e2kwOmEsc2l6ZTowfSksYi5wZltjXS5zaXplKz0xLGIuc2l6ZSs9MSxrPXh9fSksKGo9ai5maWx0ZXIoeD0+eC5zaXplPj1mKSkuZm9yRWFjaChmdW5jdGlvbih4KXt2YXIgYT14LnBmO09iamVjdC5rZXlzKGEpLmZvckVhY2goZnVuY3Rpb24oeCl7dmFyIGI9YVt4XSxjPWIuc2l6ZTxmLWc/IiI6eDtjJiYoaVtjXT1iLmkwLGxbY109Yi5zaXplLGxbIiJdLT1iLnNpemUpO2Zvcih2YXIgZD0wO2Q8Yi5zaXplO2QrKyloW2IuaTArZF0uZ3JvdXA9Y30pfSksT2JqZWN0LmtleXMobCkuZm9yRWFjaChmdW5jdGlvbih4KXtpZih4JiYhKGxbeF08ZitnKSl7dmFyIGE9bFt4XSxiPWEvZjtiIT09KDB8YikmJihiPU1hdGguY2VpbChiKSk7Zm9yKHZhciBjPU1hdGguY2VpbChhL2IpLmNsYW1wKC45KmZ8MCxmKSxkPWlbeF0sZT0xO2U8YjtlKyspZm9yKHZhciBqPTAsaz0wO2s8YztrKyspKGo9ZSpjK2spPGEmJihoW2Qral0uZ3JvdXArPSI6IitlKX19KX19ZWxzZXt2YXIgbD17IiI6MH0sbT0wO2g9aC5tYXAoZnVuY3Rpb24oeCxhKXtpZigiXyI9PXhbMF0pcmV0dXJue2RiOngsZ3JvdXA6IiJ9O3ZhciBiPSI6IittO3JldHVybiBsW2JdfHwobFtiXT0wKSxsW2JdKz0xLGxbYl0+PWYmJihtKz0xKSx7ZGI6eCxncm91cDpifX0pfWw9eyIiOntzaXplOjAsc3RhcnQ6IiIsZW5kOiIifX0saz1udWxsO3JldHVybiBoLmZvckVhY2goZnVuY3Rpb24oeCxhKXt2YXIgYj14Lmdyb3VwO2NbeC5kYl0uZ3JvdXA9YixiJiYhbFtiXSYmKGxbYl09e2lkOmIsaGVhZDpiLnNwbGl0KCI6IilbMF0sc3RhcnQ6eC5kYixlbmQ6IiIsc2l6ZTowLGkwOmF9KSwhYnx8aFthKzFdJiZoW2ErMV0uZ3JvdXA9PWJ8fChsW2JdLmVuZD14LmRiKSxsW2JdLnNpemUrPTF9KSxiLkdyb3Vwcz1sfSxVcGRhdGVyOmZ1bmN0aW9uKCl7dmFyIHg9dGhpczt4LkxzO2lmKHguX2NvbXBpbGVkJiZjdy5tZSgpJiYicmVtaW5kIj09eC5DZmcudXBkYXRlKXt2YXIgYT14LkxzKCJMYXN0VXBkYXRlIil8fHt9LGI9d2luZG93LkRET0MsYz1EYXRlLm5vdygpLGQ9IiIsZT0yNjc4NGU1LGY9MDtpZighKGEucmVtaW5kZXImJmMtYS5yZW1pbmRlcjxlKihNYXRoLnJhbmRvbSgpLzIrLjUpKSl7aWYoYS5zdGFtcCl7aWYoKGY9KGMtYS5zdGFtcCkvZSk8MS4xKXJldHVybjtkPXgubGFuZy5VUERfTU9OVEguYXNzaWduKDB8ZixmPjE/InMiOiIiKX1lbHNle2lmKChmPShjLWIuc3RhbXApL2UpPDEuMSlyZXR1cm47ZD14LmxhbmcuVVBEX09MRC5hc3NpZ24oMHxmLGY+MT8icyI6IiIpfWQmJihkKz14LmxhbmcuVVBEX1RBSUwsY3cubGliLm5vdGUoZCwieHh4Iiw2ZTMpLGEucmVtaW5kZXI9Yyx4LkxzKCJMYXN0VXBkYXRlIixhKSl9fX0sTHM6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPXdpbmRvdy5sb2NhbFN0b3JhZ2UsYz1mLGQ9eHx8YS5pZHx8IlgiLGU9T2JqZWN0LmlzU3RyaW5nO2lmKGEuX2NvbXBpbGVkKXRyeXtoLmRlbGF5KDNlMyl9Y2F0Y2goeCl7fXJldHVybiBjO2Z1bmN0aW9uIGYoeCxhKXt2YXIgYyxmPWQrIi4iK3g7cmV0dXJuIG51bGw9PT1hP2IucmVtb3ZlSXRlbShmKTp2b2lkIDAhPT1hP2Iuc2V0SXRlbShmLEpTT04uc3RyaW5naWZ5KGEpKTooYz1iLmdldEl0ZW0oZiksZShjKT9nKGMpOm51bGwpfWZ1bmN0aW9uIGcoeCl7dHJ5e3JldHVybiBKU09OLnBhcnNlKHgpfWNhdGNoKHgpe31yZXR1cm4gbnVsbH1mdW5jdGlvbiBoKCl7dmFyIHg9RGF0ZS5ub3coKTtpZighKEpTT04uc3RyaW5naWZ5KGIpLmxlbmd0aDwxZTYpKU9iamVjdC5rZXlzKGIpLmZpbHRlcihmdW5jdGlvbih4KXtyZXR1cm4geC5zdGFydHNXaXRoKCJjdy5TeXMuSlNPTi52aWV3c3RhdGUiKX0pLnJlZHVjZShmdW5jdGlvbihhLGMpe3ZhciBkPWIuZ2V0SXRlbShjKTtpZighZShkKSlyZXR1cm4gYTt2YXIgZj1nKGQpO3JldHVybiBmJiZmLnN0YW1wJiZmLnN0YW1wPngtMzE1MzZlNiYmYS5wdXNoKFtjLGZdKSxhfSxbXSkuc29ydEJ5KGZ1bmN0aW9uKHgpe3JldHVybiB4WzFdLnN0YW1wfSkudG8oLTFlMykuZm9yRWFjaChmdW5jdGlvbih4KXtiLnJlbW92ZUl0ZW0oeFswXSl9KX19LENyZWF0ZURCczpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXMsYz1iLmxhbmcsZD1iLlBobygiQ2ZnIikuYmF0Y2hDcmVhdGVEZWxheSxlPWIuUGhvKCJDb3VjaCIpLGY9ZS52ZXIsZz1lLnE7cmV0dXJuIFEuYWxsU2V0dGxlZCh4Lm1hcChoKSkudGhlbihmdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oKXskLm15LnJhZGlvKCJkYmxpc3QiLHgubWFwKHg9PngubmFtZSkpfS5kZWxheSg1MCksYX0pO2Z1bmN0aW9uIGgoeCxlKXt2YXIgaD0kLmV4dGVuZCghMCx7bmFtZToiIixzZWN1cml0eTpudWxsLHE6MCxuOjAscGFydGl0aW9uZWQ6ITEsY3JlYXRlOiEwfSx4KTtoLnNlY3VyaXR5PSQuZXh0ZW5kKCEwLHthZG1pbnM6e25hbWVzOltdLHJvbGVzOltdfSxtZW1iZXJzOntuYW1lczpbXSxyb2xlczpbXX19LHguc2VjdXJpdHl8fHt9KTt2YXIgaj1oLm5hbWUsaz17fSxsPSQuRGVmZXJyZWQoKTtyZXR1cm4gZj4iMDAyLiImJitnPjAmJitoLnE+MCYmJC5leHRlbmQoayx7cToraC5xfHwyLG46K2gubnx8MX0pLGY+IjAwMy4iJiZoLnBhcnRpdGlvbmVkJiYraC5xPjEmJihrLnBhcnRpdGlvbmVkPSEwKSxmdW5jdGlvbigpeyhoLmNyZWF0ZT9iLlJlcSh7dXJsOltqLGtdLG1ldGhvZDoiUFVUIixjb250ZW50VHlwZToiYXBwbGljYXRpb24vanNvbiJ9KS50aGVuKG0pOm0oKSkudGhlbihmdW5jdGlvbigpe2wucmVzb2x2ZShoKX0pLmZhaWwoZnVuY3Rpb24oeCxjLGQpe2wucmVqZWN0KHgsYyxkLGgpLGF8fGN3LmxpYi5ub3RlKGIubGFuZy5NU0dfTkVXREJfRkFJTC5hc3NpZ24oaix4LGkoYykpLCJlcnJvciIsMWU0KX0pfS5kZWxheShlKmR8fDApLGwucHJvbWlzZSgpO2Z1bmN0aW9uIG0oKXt2YXIgZD0kLkRlZmVycmVkKCk7cmV0dXJuIG51bGwhPXguc2VjdXJpdHl8fGguY3JlYXRlJiZmPiIwMDMuIj9iLlJlcSh7dXJsOltqLCJfc2VjdXJpdHkiXSxtZXRob2Q6IlBVVCIsY29udGVudFR5cGU6ImFwcGxpY2F0aW9uL2pzb24iLGRhdGE6SlNPTi5zdHJpbmdpZnkoT2JqZWN0LnNlbGVjdChoLnNlY3VyaXR5LFsiYWRtaW5zIiwibWVtYmVycyJdKSl9KS50aGVuKGZ1bmN0aW9uKCl7YXx8ZSgpfSkuZmFpbChmdW5jdGlvbih4LGIsZCl7YXx8Y3cubGliLm5vdGUoY1toLmNyZWF0ZT8iTVNHX05FV0RCX05PQUNMIjoiTVNHX1NFQ0RCX0ZBSUwiXS5hc3NpZ24oaix4LGkoYikpLCJ3YXJuaW5nIiw2ZTMpfSkuYWx3YXlzKGZ1bmN0aW9uKCl7ZC5yZXNvbHZlKGgpfSk6KCFhJiZoLmNyZWF0ZSYmZSgpLGQucmVzb2x2ZShoKSksZC5wcm9taXNlKCk7ZnVuY3Rpb24gZSgpe2N3LmxpYi5ub3RlKGguY3JlYXRlP2MuTVNHX05FV0RCX09LLmFzc2lnbihqKTpjLk1TR19TRUNEQl9PSy5hc3NpZ24oaikpfX19ZnVuY3Rpb24gaSh4KXtyZXR1cm4oeCsiIikuZXNjYXBlSFRNTCgpfX0sQ29tcGlsZVQ6ZnVuY3Rpb24oeCl7Zm9yKHZhciBhLGIsYyxkPS9ce1thLXowLTlfXVthLXowLTlfXXswLDE5fVwuP1thLXowLTlfXXswLDIwfVx9L2dpLGU9W10sZj0wLGc9MCxoPTA7bnVsbCE9PShhPWQuZXhlYyh4KSk7KWM9KGI9YVswXSkubGVuZ3RoLGc9ZC5sYXN0SW5kZXgsZS5wdXNoKHguc3Vic3RyaW5nKGYsZy1jKSksZj1nLGUucHVzaChbYl0uY29uY2F0KGIuc3Vic3RyKDEsYy0yKS5zcGxpdCgiLiIpKSksaCs9MjtyZXR1cm4gZS5wdXNoKHguc3Vic3RyKGYpKSxkPW51bGwse3N0YW1wOkRhdGUubm93KCksdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4geH0sdmFsdWVPZjpmdW5jdGlvbigpe3JldHVybiB4fSxhc3NpZ246ZnVuY3Rpb24oYSl7dmFyIGI9IiIsYz0ib2JqZWN0IjtpZih0eXBlb2YgYSE9PWMpcmV0dXJuIHg7Zm9yKHZhciBkLGYsZz0wLGk9MTtnPGg7Zys9Mil7Yis9ZVtnXSxkPWVbZysxXSxpPTEsZj1hO2Rve2Y9ZltkW2krK11dfXdoaWxlKHR5cGVvZiBmPT09YyYmaTxkLmxlbmd0aCk7Yis9dm9pZCAwIT09Zj9mOmRbMF19cmV0dXJuIGIrZVtoXX19fX0sRWQ6e2pzb250cmVlOntpZDoiY3cuU3lzLkpTT04iLHBhcmFtczp7fSx1aTp7IiNidG4tc2F2ZSI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtudWxsIT1hJiZ0aGlzLm15LnRyaWdnZXIoIiNidG4tc2F2ZSIsInNhdmVkb2MubXkiKX19fSxMaWI6e2lzU3lzdGVtOmZ1bmN0aW9uKHgpe3JldHVybiF0aGlzLm15LnJvb3QoKS5wYXJlbnRzKCIubC1hcHAiKS5lcSgwKS5teSgiZGF0YSIpLmlzTmV3JiYhISgxPT14LmxldmVsJiYvXl8oaWR8cmV2fHJldnNfaW5mb3xsb2NhbF9zZXEpJC8udGVzdCh4LmtleSkmJngudmFsdWV8fHgubGV2ZWw+MiYmIl9yZXZzX2luZm8iPT14LnBhdGhbMV18fCJfY29uZmxpY3RzIj09eC5wYXRoWzFdKX19LHN0eWxlOnsiICI6IiIsIiAuaXJvb3QuaXNlZGl0b3IiOiJwYWRkaW5nLWxlZnQ6MCFpbXBvcnRhbnQ7IiwiIC5pcm9vdC5pc2VkaXRvcj4uaWtleSI6ImRpc3BsYXk6bm9uZSIsIiAuaXJvb3Q+LmllZGl0b3IiOiJwYWRkaW5nLXRvcDo0cHg7IiwiIC5pcm9vdD4uaWVkaXRvciAuQ29kZU1pcnJvci1zY3JvbGwiOmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMuUGhvKCJQYW5lbEhlaWdodCIpLTMyO3JldHVybiJtaW4taGVpZ2h0OnsxfXB4O21heC1oZWlnaHQ6ezF9cHg7aGVpZ2h0OnsxfXB4O292ZXJmbG93OnNjcm9sbDsiLmFzc2lnbihhKX19LExzOmZ1bmN0aW9uKCl7dmFyIHg9d2luZG93LmxvY2FsU3RvcmFnZTtyZXR1cm4gZnVuY3Rpb24oYSxiKXt2YXIgYz0iY3cuU3lzLkpTT04uIithO2lmKGIpcmV0dXJuIHguc2V0SXRlbShjLEpTT04uc3RyaW5naWZ5KGIpKTtpZihudWxsPT09Ynx8ITE9PT1iKXJldHVybiB4LnJlbW92ZUl0ZW0oYyk7dmFyIGQ9eC5nZXRJdGVtKGMpO3JldHVybiBPYmplY3QuaXNTdHJpbmcoZCk/SlNPTi5wYXJzZShkKTpudWxsfX0sTWFrZUxpc3Q6ZnVuY3Rpb24oeCxhLGIpe3ZhciBjPXRoaXMsZD1bXSxlPXgudmFsdWUsZj1jdy5saWIuc2RibSxnPXdpbmRvdy5hdG9iLGg9Yy5kYXRhLnZpZXdzdGF0ZXx8e30saT1jLmRhdGEuZm91bmR8fHt9LGo9eC5sZXZlbCsxLGs9Yy5kYXRhLnNlYXJjaC5sZW5ndGg+MixsPS9eZGF0YTppbWFnZVwvKGpwZWd8cG5nfGdpZnxzdmdcK3htbCk7YmFzZTY0LC8sbT1PYmplY3Qua2V5cyhlKTtyZXR1cm4iX2F0dGFjaG1lbnRzIj09eC5rZXkmJjE9PXgucGF0aC5sZW5ndGgmJiJSb290Ij09eC5wYXRoWzBdJiYobT1tLnNvcnRCeShmdW5jdGlvbih4KXt2YXIgYT14LmluZGV4T2YoIi8iKT4tMTtyZXR1cm4vXmluZGV4XC5odG0vLnRlc3QoeCk/IjAiK3g6YT8iMiIreDoiMSIreH0pKSxtLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGcsbSxvPWVbYV0scD0kLnR5cGUobykscT0ib2JqZWN0Ij09cHx8ImFycmF5Ij09cD8ibXVsdGkiOnAscj14LnBhdGguc2xpY2UoMCkuYWRkKHgua2V5KSxzPWMuUGF0aFNpZyhyLGEpO2smJiFpW3NdfHwoIm11bHRpIj09cSYmKCJSb290IiE9eC5rZXl8fHgucGF0aC5sZW5ndGh8fCJfYXR0YWNobWVudHMiIT1hPyJfYXR0YWNobWVudHMiPT14LmtleSYmMT09eC5wYXRoLmxlbmd0aCYmIlJvb3QiPT14LnBhdGhbMF0mJihxPSJmaWxlIik6cT0iZmlsZXMiKSwic3RyaW5nIj09cCYmKGsmJjh8aVtzXT9xPSJmb3VuZCI6by5sZW5ndGg+MTEmJigvXltcc1xyXG5cdF0qZnVuY3Rpb24vLnRlc3Qoby5zdWJzdHIoMCwyMCkpJiYvXH1bXHJcblx0XHNdKiQvLnRlc3Qoby5zdWJzdHIoLTEwKSl8fC9eW1xzXHJcblx0XSpcKFtcc1xyXG5cdF0qZnVuY3Rpb24vLnRlc3Qoby50bygyMCkpJiYvXH1bXHJcblx0XHNdKlwpW1xyXG5cdFxzXSokLy50ZXN0KG8uc3Vic3RyKC0xMCkpKT9xPSJmdW5jdGlvbiI6by5sZW5ndGg+MTYwJiZvLmxlbmd0aDwxNWU0JiYvXlthLXpBLVowLTlcK1wvXSskLy50ZXN0KG8uc3Vic3RyKDAsMTU4KSkmJi9eW2EtekEtWjAtOVwrXC9dKz17MCwyfSQvLnRlc3Qobyk/InN0cmluZyI9PXR5cGVvZihtPW4obykpJiYocT0iYmFzZTY0Iik6by5sZW5ndGg+MTYwJiZvLmxlbmd0aDwxNWU0JiZsLnRlc3QobykmJiJzdHJpbmciPT10eXBlb2YobT1uKG8ucmVwbGFjZShsLCIiKSkpJiYocT0iYmFzZTY0IikpLGd8fChnPWYoW2Esb10pKSxrJiYhaVtzXXx8ZC5wdXNoKHtzdGF0ZTpifHwoaz9pW3NdOmhbc118fDEpLGxldmVsOmosbWFuaWZlc3Q6IiQiK3EscGF0aDpyLHR5cGU6cCxrZXk6YSxpZDphLHZhbHVlOiJmdW5jdGlvbiI9PXR5cGVvZiBlW2FdP2VbYV0rIiI6ZVthXSxiaW46bSxoYXNoOmd9KSl9KSxkO2Z1bmN0aW9uIG4oeCl7dmFyIGE7dHJ5e2E9Zyh4KX1jYXRjaCh4KXt9cmV0dXJuIGF9fSwkZmlsZXM6e2lkOiJTeXMuSlNPTi5GaWxlcyIsZGF0YTp7fSxMaXN0OltdLENNOiJqYXZhc2NyaXB0IixUeHQ6e29iamVjdDpbIkZpbGVzIHsiLCJ9Il0sYXJyYXk6WyJBcnJheSBbIiwiXSJdfSxtYXhEZXB0aDo3MDAsaW5pdDpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXMsYz1hLmRhdGE7eC5hZGRDbGFzcygiZWQtbm9kZS0iK2IuUGF0aFNpZyhjLnBhdGgsYy5rZXkpKSx4Lmh0bWwoYi5IVE1MKSxjLnN0YXRlPjEmJihiLkxpc3Q9Yi5NYWtlTGlzdChjKSkseC5maW5kKCIuaWxpc3Q6ZXEoMCkiKS5vbigiY2hhbmdlLm15IixmdW5jdGlvbigpe2IuUlQoIlJlam9pbiIpKGMsYi5MaXN0KX0uZGVib3VuY2UoMzAwKSkseC5vbigiY2xpY2subXkiLCIuaWxpc3Q6ZXEoMCkgLmJ0bi1kZWwiLGZ1bmN0aW9uKGMpe2Muc3RvcFByb3BhZ2F0aW9uKCk7dmFyIGQ9JCh0aGlzKS5wYXJlbnRzKCIubXktZm9ybSIpLmVxKDApLGU9ZC5wYXJlbnQoKS5kYXRhKCJteSIpLmRhdGEsZj0kLnR5cGUoZS52YWx1ZSksZz1kLm15KCJkYXRhIikua2V5LGg9T2JqZWN0LmNsb25lKGUudmFsdWVbZ10sITApOyJvYmplY3QiPT1mP2RlbGV0ZSBlLnZhbHVlW2ddOiJhcnJheSI9PWYmJmUudmFsdWUucmVtb3ZlQXQoZyksYi5Ob2RlVXBkYXRlZChlLnBhdGguY29uY2F0KGUua2V5LGcpLGgsdm9pZCAwKSxiLlJUKCJMaWIiKS5yZWxpc3QoeCxiLGEpfSl9LHVpOnsiLml2YWx1ZSI6e2Nzczp7aGlkZTpmdW5jdGlvbigpe3JldHVybiF0aGlzLkxpc3QubGVuZ3RofSxub2NvbXA6ZnVuY3Rpb24oeCl7dmFyIGE9MCxiPTA7cmV0dXJuIE9iamVjdC5rZXlzKHgudmFsdWUpLmZvckVhY2goZnVuY3Rpb24oYyl7dmFyIGQsZT0wOyhkPXgudmFsdWVbY10pJiYoZT0oZC5kYXRhP2QuZGF0YS5sZW5ndGgvNCozfDA6MCl8fCtkLmxlbmd0aHx8K2Quc2l6ZXx8MCxhKz1lLGIrPSsoeC52YWx1ZVtjXS5lbmNvZGVkX2xlbmd0aHx8ZSkpfSksYT09Yn19LHdhdGNoOlsiLmlkZXNjIl19LCIuaWxpc3QiOntkZWxheTowLGNoZWNrOiExLGJpbmQ6InRoaXMuTGlzdCIsbGlzdDonPGRpdiBjbGFzcz0iaXJvdyI+PC9kaXY+JyxpZDpmdW5jdGlvbih4KXtyZXR1cm4geC5pZH0saGFzaDpmdW5jdGlvbih4KXtyZXR1cm4geC5oYXNofSxtYW5pZmVzdDpmdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5SVCh4Lm1hbmlmZXN0KXx8dGhpcy5SVCgiJHN0cmluZyIpfSx3YXRjaDpbIi5pZGVzYyJdfSwiLmlrZXkiOnt9LCIuYnRuLWpzb24iOnt9LCIjYnRuLXVwbG9hZCI6e2JpbmQ6ZnVuY3Rpb24oeCxhLGIpe2lmKG51bGwhPWEpe3ZhciBjPXRoaXM7Yi5kYXRhKCJtb2RhbCIpPyhiLm1vZGFsKCEwKSxkKCkpOihiLnBhcmVudCgpLmFkZENsYXNzKCJob3ZlciIpLGMubXkubW9kYWwoIiNidG4tdXBsb2FkIix7bWFuaWZlc3Q6Yy5BZGQsZGF0YTp7fSx3aWR0aDo1MDAsYWxpZ246InRvcDoxMDMlLCByaWdodDotMzhweDsiLG5vc2U6InRvcCJ9KS50aGVuKGZ1bmN0aW9uKGEpe3ZhciBiPU9iamVjdC5jbG9uZSh4LnZhbHVlLCEwKTthLmZpbGVzLmZvckVhY2goZnVuY3Rpb24oYSl7eC52YWx1ZVthLm5hbWVdPU9iamVjdC5zZWxlY3QoYSxbImNvbnRlbnRfdHlwZSIsImRhdGEiXSl9KSxjLk5vZGVVcGRhdGVkKHgucGF0aC5jb25jYXQoeC5rZXkpLGIsT2JqZWN0LmNsb25lKHgudmFsdWUsITApKSx4LnN0YXRlPTIsYy5MaXN0PWMuTWFrZUxpc3QoeCksYy5teS5yZWRyYXcoKX0pLmFsd2F5cyhmdW5jdGlvbigpe2QoKX0pKX1mdW5jdGlvbiBkKCl7Yi5wYXJlbnQoKS5yZW1vdmVDbGFzcygiaG92ZXIiKX19fSwiI2J0bi1iNjQiOntiaW5kOmZ1bmN0aW9uKHgsYSl7aWYobnVsbCE9YSl7dmFyIGI9dGhpcztiLlJUKCJHZXRBdHRzIikoKS50aGVuKGZ1bmN0aW9uKCl7Yi5teS5yZWRyYXcoKX0pfX19LCIuaWRlc2MiOntkZWxheToxMCxiaW5kOmZ1bmN0aW9uKHgsYSxiKXt2YXIgYz10aGlzLGQ9KHRoaXMuTGlzdCxjLlR4dFt4LnR5cGVdKSxlPU9iamVjdC5zaXplKHgudmFsdWUpLGY9IiI7MT09eC5zdGF0ZSYmYy5TaG93SXRlbXM/Zj1jLlNob3dJdGVtczooZj1kWzBdK2UrZFsxXSsiICIsMj09eC5zdGF0ZSYmKGY9JzxzcGFuIGNsYXNzPSJvNDAiPicrZisiPC9zcGFuPiIpKTt2YXIgZz0wLGg9MDtyZXR1cm4gT2JqZWN0LmtleXMoeC52YWx1ZSkuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYixjPTA7KGI9eC52YWx1ZVthXSkmJihjPShiLmRhdGE/Yi5kYXRhLmxlbmd0aC80KjN8MDowKXx8K2IubGVuZ3RofHwrYi5zaXplfHwwLGcrPWMsaCs9Kyh4LnZhbHVlW2FdLmVuY29kZWRfbGVuZ3RofHxjKSl9KSxnJiYoZj1bJzxkaXYgY2xhc3M9ImRpYiB2YXQgbXI1IiBzdHlsZT0id2lkdGg6ezR9OyI+ezF9PC9kaXY+JywnPGRpdiBjbGFzcz0iZGliIHZhdCB3OTAgdGFyIG85MCI+ezJ9PC9kaXY+JywnPGRpdiBjbGFzcz0iZGliIHZhdCB3OTAgcGw1IHRhbCBvNjAgZnM5NSI+ezN9PC9kaXY+J10uam9pbigiIikuYXNzaWduKGYsaShnKSxnIT1oP2koaCk6IiIsMj09eC5zdGF0ZT8yNzItYy5sYWJlbFdpZHRoKyJweCI6ImF1dG8iKSksZjtmdW5jdGlvbiBpKHgpe3JldHVybiB4LmJ5dGVzKDEpLnJlcGxhY2UoL0IkLywiYiIpLnJlcGxhY2UoL14oWzAtOVwuXSspKFthLXpdKykkL2ksJyQxPGRpdiBjbGFzcz0idzM1IGRpYiB0YWwgcGwyIj4kMjwvZGl2PicpfX0sd2F0Y2g6WyIuaWtleSIsIi5idG4tanNvbiJdfX0sc3R5bGU6eyI+Lml2YWx1ZT4uaWxpc3Q+Lmlyb3ciOmZ1bmN0aW9uKCl7dmFyIHg9MjUwLGE9eC0yNztyZXR1cm57IiAuaW5hdiI6InBhZGRpbmctbGVmdDoiK2ErInB4OyIsIiAuaW5hdj4uaWtleSI6Im1hcmdpbi1sZWZ0Oi0iK2ErInB4O3dpZHRoOiIrYSsicHg7IiwiPi5pbmF2IjoicGFkZGluZy1sZWZ0OiIreCsicHg7IiwiPi5pbmF2Pi5pa2V5IjoibWFyZ2luLWxlZnQ6LSIreCsicHg7d2lkdGg6Iit4KyJweDsiLCIgLmlrZXkiOiJjdXJzb3I6bm9ybWFsOyIsIiAuaWFjdCAuYnV0dG9uIjoicGFkZGluZzogMC4xNWVtIDAgMC4wNWVtIDA7IiwiIC5pZGVzYz5kaXYiOiJkaXNwbGF5OmlubGluZS1ibG9jazsgdmVydGljYWwtYWxpZ246dG9wOyJ9fSwiIC5pdmFsdWUgLmluYXYiOiJtYXJnaW46MDsiLCIgLm5vY29tcCAuc2l6ZWNvbXAiOiJkaXNwbGF5Om5vbmUhaW1wb3J0YW50OyJ9LEhUTUw6JzxkaXYgY2xhc3M9ImluYXYiPjxkaXYgY2xhc3M9ImlrZXkgaWtleXRyZWUiPjwvZGl2PjxkaXYgY2xhc3M9ImlkZXNjIGNwIiB0aXRsZT0iRWRpdCBhcyByYXcgSlNPTiI+4oCTPC9kaXY+PGRpdiBjbGFzcz0iaWVkaXRvciI+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0iaXZhbHVlIGltdWx0aSBoaWRlIj48ZGl2IGNsYXNzPSJpbGlzdCI+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0iaWFjdCBidXR0b25zIj48YnV0dG9uIGlkPSJidG4tYjY0IiBjbGFzcz0iYnV0dG9uIiB0aXRsZT0iRmV0Y2ggYXR0YWNobWVudHPigJkgYmFzZTY0IiBzdHlsZT0id2lkdGg6NzRweDsiPjxzcGFuIGNsYXNzPSJmaS1hcmNoaXZlIG1yNCBtbDEiPjwvc3Bhbj48c3BhbiBjbGFzcz0iZnM4NSBsaDEyMCBkaWIgdmF0Ij5iYXNlNjQ8L3NwYW4+PC9idXR0b24+PGJ1dHRvbiBjbGFzcz0iYnRuLWpzb24gYnV0dG9uIGhpZGUiIHRpdGxlPSJFZGl0IGFzIEpTT04iPjxzcGFuIGNsYXNzPSJib2xkIGRpYiB2YXQgbXQtMSBtYjEiPnsmIzgyMDI7fTwvc3Bhbj48L2J1dHRvbj48YnV0dG9uIGlkPSJidG4tdXBsb2FkIiBjbGFzcz0iYnV0dG9uIiB0aXRsZT0iQWRkIGF0dGFjaG1lbnQiPjxzcGFuIGNsYXNzPSJmaS1wYXBlcmNsaXAiPjwvc3Bhbj48L2J1dHRvbj48YnV0dG9uIGNsYXNzPSJidG4tZGVsIGJ1dHRvbiByZWQiICB0aXRsZT0iRGVsIGFsbCBhdHRhY2htZW50cyI+JnRoaW5zcDs8c3BhbiBjbGFzcz0iZmktdHJhc2giPjwvc3Bhbj4mdGhpbnNwOzwvYnV0dG9uPjwvZGl2PicsTm9kZVVwZGF0ZWQ6ZnVuY3Rpb24oKXt9LEFkZDp7bGFuZzp7fSxpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXM7JC5leHRlbmQoYS5sYW5nLGEuUGhvKCJsYW5nIikuJGRvYykseC5odG1sKGEuSFRNTC5hc3NpZ24oYS5sYW5nKSl9LGRhdGE6e2ZpbGVzOltdfSx1aTp7IiNmbGlzdCI6e2luaXQ6ZnVuY3Rpb24oeCl7dHJ5e3RoaXMuUGhvKCJuaWNlU2Nyb2xsIikoeCl9Y2F0Y2goeCl7fX0sYmluZDoiZmlsZXMiLGxpc3Q6Ij5kaXYiLG1lcmdlOiExLGlkOlsibmFtZSJdLGhhc2g6ZnVuY3Rpb24oeCl7cmV0dXJuIGN3LmxpYi5zZGJtKFt4Lm5hbWUseC5jb250ZW50X3R5cGUseC5kYXRhLmxlbmd0aCx4LmRhdGEudG8oMjAwKV0pfSxtYW5pZmVzdDp7dWk6eyIjZm5hbWUiOiJuYW1lIiwiI2ZzaXplIjpmdW5jdGlvbih4LGEpe3JldHVybih4LmRhdGEubGVuZ3RoLzQqM3wwKS5ieXRlcygxKS5yZXBsYWNlKC9eKFswLTlcLl0rKShbYS16XSspJC9pLCckMTxkaXYgY2xhc3M9IncyNSBkaWIgdGFsIHBsMiI+JDI8L2Rpdj4nKX0sIiNmdHlwZSI6ImNvbnRlbnRfdHlwZSIsIiNidG4tZmRlbCI6e2RlbGF5OjEwLGJpbmQ6ZnVuY3Rpb24oeCxhKXtudWxsIT1hJiZ0aGlzLm15LnJlbW92ZSgpfSxldmVudHM6ImNsaWNrLm15In19fX0sIiNidG4tYXR0YWRkIjp7YmluZDpmdW5jdGlvbih4LGEpe251bGwhPWEmJnRoaXMubXkuY29tbWl0KCl9LGNzczp7IjpkaXNhYmxlZCI6ZnVuY3Rpb24oeCl7cmV0dXJuIXguZmlsZXMubGVuZ3RofX0sd2F0Y2g6IiNmbGlzdCJ9LCIjYnRuLWF0dGNhbmNlbCI6ZnVuY3Rpb24oeCxhKXtudWxsIT1hJiZ0aGlzLm15LmNhbmNlbCgpfSwiI211cGxvYWQiOntiaW5kOmZ1bmN0aW9uKHgsYSxiKXtpZihudWxsIT1hJiZhKXtmb3IodmFyIGM9dGhpcyxkPWJbMF0uZmlsZXMsZT1bXSxmPXguZmlsZXMucmVkdWNlKGZ1bmN0aW9uKHgsYSl7cmV0dXJuIHhbYS5uYW1lXT1hLHh9LHt9KSxnPVtdLGg9MDtoPGQubGVuZ3RoO2grKyllLnB1c2goZFtoXSk7ZS5mb3JFYWNoKGZ1bmN0aW9uKHgsYSl7aWYoeCl7dmFyIGIsYyxkPXtuYW1lOngubmFtZSxjb250ZW50X3R5cGU6eC50eXBlfHwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIn0sZT0kLkRlZmVycmVkKCksaD1uZXcgRmlsZVJlYWRlcixpPVtdO2gub25sb2FkPWZ1bmN0aW9uKGEpe2M9bmV3IFVpbnQ4QXJyYXkoYS50YXJnZXQucmVzdWx0KTtmb3IodmFyIGc9MDtnPGMubGVuZ3RoO2crKylpLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShjW2ddKSk7Yj13aW5kb3cuYnRvYShpLmpvaW4oIiIpKSxkLmRhdGE9YixmW3gubmFtZV09ZCxlLnJlc29sdmUoKX0saC5yZWFkQXNBcnJheUJ1ZmZlcih4KSxnLnB1c2goZS5wcm9taXNlKCkpfX0pLFEuYWxsU2V0dGxlZChnKS50aGVuKGZ1bmN0aW9uKCl7eC5maWxlcz1PYmplY3QudmFsdWVzKGYpLGIud3JhcCgiPGZvcm0+IikuY2xvc2VzdCgiZm9ybSIpLmdldCgwKS5yZXNldCgpLGIudW53cmFwKCJmb3JtIiksYy5teS5yZWNhbGMoIiNmbGlzdCIpLGMubXkuY2hlY2soIiNtdXBsb2FkIil9LmRlYm91bmNlKDApKS50aGVuKGZ1bmN0aW9uKCl7Yy5teS5maW5kKCIjYnRuLWF0dGFkZCIpLmZvY3VzKCl9LmRlYm91bmNlKDEwMCkpfX0sY3NzOnsic2VsZjpoMTAwIjpmdW5jdGlvbih4LGEpe3JldHVybiB4LmZpbGVzLmxlbmd0aDw9M30sInNlbGY6aDQwIjpmdW5jdGlvbih4LGEpe3JldHVybiB4LmZpbGVzLmxlbmd0aD4zfX0sd2F0Y2g6WyIjZmxpc3QiXX0sIiN4dXBsb2FkIjp7YmluZDpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXMubGFuZztyZXR1cm4geC5maWxlcy5sZW5ndGg+Mz8nPHNwYW4gY2xhc3M9ImZpLWFyY2hpdmUgbzMwIG1yMiBmczExMCI+PC9zcGFuPiAnK2IuVFhUX0FERE1PUkU6JzxzcGFuIGNsYXNzPSJmaS1hcmNoaXZlIG8zMCBmczMwMCI+PC9zcGFuPjxicj4nK2IuVFhUX0FEREZJTEVTfSxjc3M6eyJoMTAwIHB0MTYgdGFjIjpmdW5jdGlvbih4LGEpe3JldHVybiB4LmZpbGVzLmxlbmd0aDw9M30sImg0MCBwdDEwIHBsMTAiOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIHguZmlsZXMubGVuZ3RoPjN9fSx3YXRjaDpbIiNtdXBsb2FkIiwiI2ZsaXN0Il19fSxIVE1MOic8ZGl2IGNsYXNzPSJmczEzMCBsaDE2MCBib2xkZXIiPntUWFRfRExHQUREfTwvZGl2PjxkaXYgaWQ9ImZsaXN0IiBjbGFzcz0iZnM5NSIgc3R5bGU9Im1heC1oZWlnaHQ6NDB2aDsiPjxkaXYgY2xhc3M9ImZyb3cgbXQyIG1iNCI+PGRpdiBpZD0iYnRuLWZkZWwiIGNsYXNzPSJyZWQyIHcyMCBkaWIgdmF0IHB0MyBjcCI+4pyVPC9kaXY+PGRpdiBjbGFzcz0idzI4MCBkaWIgdmF0Ij48aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9IncxMDBwIiBpZD0iZm5hbWUiIHBsYWNlaG9sZGVyPSJGaWxlIHBhdGgvbmFtZS5leHQiPjwvZGl2PjxkaXYgaWQ9ImZzaXplIiBjbGFzcz0idzcwIGRpYiB2YXQgcHQzIGdyYXkgdGFyIGZzOTAiPjwvZGl2PjxkaXYgaWQ9ImZ0eXBlIiBjbGFzcz0idzEzMCBkaWIgdmF0IHB0MyBncmF5IG53IGVsbCBmczkwIj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJtdDMgbWIxMCI+PGlucHV0IGlkPSJtdXBsb2FkIiB0eXBlPSJmaWxlIiBtdWx0aXBsZSBjbGFzcz0iaDEwMCB3MTAwcCBjcCIgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MTtvcGFjaXR5OjA7Ij48ZGl2IGlkPSJ4dXBsb2FkIiBjbGFzcz0iaDEwMCBwdDE2IHcxMDBwIHRhYyB3MTAwcCBiZy1ncmF5NCBicjIgdHJhbnMiPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Im10NSBwdDEwIGJ0ZCI+PGJ1dHRvbiBpZD0iYnRuLWF0dGFkZCIgY2xhc3M9Im1hcmtmb2N1cyBncmVlbiBtcjIiPntCVE5fQVRUQUNIfTwvYnV0dG9uPjxidXR0b24gaWQ9ImJ0bi1hdHRjYW5jZWwiIGNsYXNzPSJtYXJrZm9jdXMiPntCVE5fQ0FOQ0VMfTwvYnV0dG9uPjwvZGl2Picsc3R5bGU6eyIgLnRyYW5zIjoicG9pbnRlci1ldmVudHM6IG5vbmU7In19fSwkZmlsZTp7aWQ6IlN5cy5KU09OLkZpbGUiLGRhdGE6e30scGFyYW1zOntkZWxheTowfSxMaXN0OltdLENNOiJqYXZhc2NyaXB0IixyZXY6IiIsaW5pdDpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXMsYz1iLmRhdGE7eC5hZGRDbGFzcygiZWQtbm9kZS0iK2IuUGF0aFNpZyhjLnBhdGgsYy5rZXkpKSx4Lmh0bWwoYi5IVE1MLmFzc2lnbih7aWRlc2M6Yi5pZGVzYyhjKX0pKSxiLnJldj1iLlJUKCJNUm9vdCIpKCkubXkoImRhdGEiKS5yZXZ9LFNob3dJdGVtczpudWxsLGlkZXNjOmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj14LnZhbHVlLGM9e3NpemU6ZCgoYi5kYXRhP2IuZGF0YS5sZW5ndGgvNCozfDA6MCl8fCtiLmxlbmd0aHx8K2Iuc2l6ZXx8MCksc2l6ZXg6Yi5lbmNvZGVkX2xlbmd0aD9kKCtiLmVuY29kZWRfbGVuZ3RoKToiIixtaW1lOihiLmNvbnRlbnRfdHlwZXx8ImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpLmVzY2FwZUhUTUwoKSxyZXZwb3M6Yi5kaWdlc3QmJm51bGwhPWIucmV2cG9zPyJyOiAgIitiLnJldnBvczphLkhUTUxuZXd9O3JldHVybiBhLkhUTUxyb3cuYXNzaWduKGMpO2Z1bmN0aW9uIGQoeCl7cmV0dXJuIHguYnl0ZXMoMSkucmVwbGFjZSgvXihbMC05XC5dKykoW2Etel0rKSQvaSwnJDE8ZGl2IGNsYXNzPSJ3MzUgZGliIHRhbCBwbDIiPiQyPC9kaXY+Jyl9fSx1aTp7Ii5pa2V5Ijp7ZGVsYXk6MCxiaW5kOmZ1bmN0aW9uKHgsYSl7aWYobnVsbD09YSl7dmFyIGI9dGhpcyxjPWVuY29kZVVSSUNvbXBvbmVudCxkPWIuVS50YWdFbW9qaSxlPSgvXih8XHMrKSQvLnRlc3QoeC5rZXkpPyciJyt4LmtleSsnIic6eC5rZXkudHJ1bmNhdGUoNTAsL1wvLy50ZXN0KHgua2V5KT8ibGVmdCI6Im1pZGRsZSIsIuKApiIpKS5yZXBsYWNlKC9cLy9nLCLigIkv4oCJIikuZXNjYXBlSFRNTCgpO2lmKGU9ZChlKSxudWxsPT14LnZhbHVlLnJldnBvcylyZXR1cm4gZTt2YXIgZj1iLlJUKCJkYXRhIiksZz1mLmRvYy5faWR8fCIiLGg9Zi5kb2MuX3Jldj8oW2YuYmFzZXVybC5yZXBsYWNlKC9cLyQvLCIiKSxjKGYuZGJuYW1lKSxnLnN0YXJ0c1dpdGgoIl9kZXNpZ24vIik/Il9kZXNpZ24vIitjKGcuZnJvbSg4KSk6YyhnKSx4LmtleV0uam9pbigiLyIpKyh0aGlzLnJldj8iP3Jldj0iK3RoaXMucmV2OiIiKSkuZXNjYXBlSFRNTCgpOiIiO3JldHVybiBmLmRvYy5fcmV2Pyc8YSBocmVmPSJ7MX0iIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0idGRuIj57Mn08L2E+Jy5hc3NpZ24oaCxlKTplfX19LCIjYnRuLWRvd25sb2FkIjp7YmluZDpmdW5jdGlvbih4LGEsYil7aWYobnVsbCE9eC52YWx1ZS5yZXZwb3Mpe3ZhciBjPXRoaXMuUlQoImRhdGEiKSxkPWVuY29kZVVSSUNvbXBvbmVudDtiLmF0dHIoImRvd25sb2FkIix4LmtleS5zcGxpdCgiLyIpLmxhc3QoKSksYi5hdHRyKCJocmVmIixbYy5iYXNldXJsLnJlcGxhY2UoL1wvJC8sIiIpLGQoYy5kYm5hbWUpLGQoYy5kb2MuX2lkKSx4LmtleV0uam9pbigiLyIpKyh0aGlzLnJldj8iP3Jldj0iK3RoaXMucmV2OiIiKSl9fSxjc3M6eyJzZWxmOmhpZGUiOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIG51bGw9PXgudmFsdWUucmV2cG9zfX19LCIjYnRuLWZpbGVkaXQiOntiaW5kOmZ1bmN0aW9uKHgsYSxiKXtpZihudWxsIT14LnZhbHVlLnJldnBvcyl7dmFyIGM9dGhpcy5SVCgiZGF0YSIpLGQ9ZW5jb2RlVVJJQ29tcG9uZW50O2IuYXR0cigiaHJlZiIsWyIjIitkKGMuZGJuYW1lKSxkKGMuZG9jLl9pZCksZCh4LmtleSldLmpvaW4oIi8iKSl9fSxjc3M6eyJzZWxmOmhpZGUiOmZ1bmN0aW9uKHgsYSl7dmFyIGI9eC52YWx1ZS5jb250ZW50X3R5cGU7cmV0dXJuIG51bGw9PXgudmFsdWUucmV2cG9zfHx0aGlzLnJldnx8ISgvXnRleHRcLy4qLy50ZXN0KGIpfHwvXC8oanNvbnxqYXZhc2NyaXB0fHhtbHxzdmcpLy50ZXN0KGIpKX19fX0sSFRNTHJvdzonPGRpdiBjbGFzcz0idzkwIHRhciBvOTAgc2l6ZWZ1bGwiPntzaXplfTwvZGl2PjxkaXYgY2xhc3M9Inc5MCBwbDUgdGFsIG82MCBmczk1IHNpemVjb21wIj57c2l6ZXh9PC9kaXY+PGRpdiBjbGFzcz0idzIwMCBwcjEwIG53IGVsbCBvNjAgZnM5NSI+e21pbWV9PC9kaXY+PGRpdiBjbGFzcz0ibzYwIHB0MiBmczk1Ij57cmV2cG9zfTwvZGl2PicsSFRNTG5ldzonPHNwYW4gY2xhc3M9ImZpLWJ1cnN0LW5ldyBvcmFuZ2UgbWwtMyI+IE5ldzwvc3Bhbj4nLEhUTUw6JzxkaXYgY2xhc3M9ImluYXYiPjxkaXYgY2xhc3M9ImlrZXkgeGdyYXkgZnMxMDAiPntpa2V5fTwvZGl2PjxkaXYgY2xhc3M9ImlkZXNjIHc0NTAiPntpZGVzY308L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJpYWN0IGJ1dHRvbnMiPjxidXR0b24gY2xhc3M9ImJ0bi10YWtlb3V0IGJ1dHRvbiIgdGl0bGU9IlZpZXcgYXMgSlNPTiI+PHNwYW4gY2xhc3M9ImZpLXNob3BwaW5nLWJhZyBmczk1Ij48L3NwYW4+PC9idXR0b24+PGEgaWQ9ImJ0bi1maWxlZGl0IiBjbGFzcz0iYnV0dG9uIGZzOTAgdmF0IHB0MyBwYjAgaGlkZSIgdGl0bGU9IkVkaXQgYXR0YWNobWVudCI+PHNwYW4gY2xhc3M9ImZpLXBlbmNpbCI+PC9zcGFuPjwvYT48YSBpZD0iYnRuLWRvd25sb2FkIiBjbGFzcz0iYnV0dG9uIGZzOTAgdmF0IiB0aXRsZT0iRG93bmxvYWQgZmlsZSIgZG93bmxvYWQ9IiAiPjxzcGFuIGNsYXNzPSJmaS1kb3dubG9hZCI+PC9zcGFuPjwvYT48YnV0dG9uIGNsYXNzPSJidG4tZGVsIGJ1dHRvbiByZWQgdmF0IiAgdGl0bGU9IkRlbCBub2RlIj4mdGhpbnNwOzxzcGFuIGNsYXNzPSJmaS10cmFzaCBmczk1Ij48L3NwYW4+JnRoaW5zcDs8L2J1dHRvbj48L2Rpdj4nfX0sanNvbnRleHQ6e319LCRhYm91dDp7aWQ6ImN3LlBob3Rvbi4kYWJvdXQiLHBhcmFtczp7cmVzdHlsZToyMCxzdHJpY3Q6ITB9LGluaGVyaXQ6WyJTZXRUaGVtZSJdLGhhc2g6ZnVuY3Rpb24oKXtyZXR1cm4iYWJvdXQifSx0aXRsZTpmdW5jdGlvbigpe3JldHVybiJBYm91dCB0aGlzIG5vZGUifSxtYXRjaDpmdW5jdGlvbih4LGEpe3JldHVybiBhfHwxIT14Lmxlbmd0aHx8Il9hYm91dCIhPXhbMF0/bnVsbDp7dGl0bGU6IkFib3V0In19LGxhbmc6e30sSlNPTjohMSxCbG9iOiExLFVybDohMSxkYXRhOntwaG90b246e30sc2VydmljZTp7Y291Y2hkYjoiTm8gbWVzc2FnZSIsdmVyc2lvbjoiPz8iLHZlbmRvcjp7bmFtZToidW5rbm93biIsdmVyc2lvbjoiIix2YXJpYW50OiIifSxmZWF0dXJlczpbXX0sZGRvYzp7fSxjZmc6e21heFdpZHRoOiIyMDAwIixzY3JvbGxTcGVlZDoiMyIsbGlzdENvbHM6W10scm9vdFJlcG86IiIsdXBkYXRlOiJyZW1pbmQiLGZvbnQ6ImF1dG8iLGZvbnRXZWlnaHQ6IjMwMCIsZm9udENvZGU6ImF1dG8iLGljb246IiIsbWF4VGFiczoxNSxsb29wQWN0aXZlVGFza3M6NSxwaW5nU2Vzc2lvbjowLGdyb3VwaW5nOltdLHRoZW1lOiIifX0sTGluazonPGEgaHJlZj0iezF9IiB0YXJnZXQ9Il9ibGFuayIgcmVmZXJyZXJwb2xpY3k9Im5vLXJlZmVycmVyIiBjbGFzcz0idGRuIG53IG1sNCI+ezJ9PC9hPicsaW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9JC5EZWZlcnJlZCgpO3JldHVybiBhLlVybD1hLlBobygpLkRvd25sb2FkVVJMLCQuZXh0ZW5kKCEwLGEuZGF0YS5jZmcsYS5QaG8oIkNmZyIpKSxbIi8vczMtZXUtd2VzdC0xLmFtYXpvbmF3cy5jb20vY2RuLmNsb3Vkd2FsbC5tZS9waG90b24vIl0uaW5kZXhPZihhLmRhdGEuY2ZnLnJvb3RSZXBvKT4tMSYmKGEuZGF0YS5jZmcucm9vdFJlcG89Imh0dHBzOi8vY2RuLmNsb3Vkd2FsbC5tZS9waG90b24vIiksYS5yZWxvYWREQkxpc3Q9YS5yZWxvYWREQkxpc3QuZGVib3VuY2UoNTAwKSxhLlJlcSh7dXJsOltdLGNvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi9qc29uIixkYXRhVHlwZToianNvbiJ9KS50aGVuKGZ1bmN0aW9uKHgpeyQuZXh0ZW5kKCEwLGEuZGF0YS5zZXJ2aWNlLHgpfSkuYWx3YXlzKGZ1bmN0aW9uKCl7eC5odG1sKCQubXkuZm9ybWdlbihhLkhUTUwpLmFzc2lnbihhLmxhbmcpKSxhLm5pY2VTY3JvbGwoeC5maW5kKCIjYWFsbCIpKSxiLnJlc29sdmUoKX0pLGIucHJvbWlzZSgpfSx1aTp7IiNhcGhvIjpmdW5jdGlvbigpe3JldHVybiB0aGlzLlBobygiVmVyc2lvbiIpLnJlcGxhY2UoL1teMC05XC5dL2csIiIpfSwiI2FwaG9idWlsZCI6ZnVuY3Rpb24oKXt2YXIgeD10aGlzLGE9eC5QaG8oImJ1aWxkIiksYj1EYXRlLmNyZWF0ZSh4LlBobygic3RhbXAiKXx8RGF0ZS5ub3coKSkuZm9ybWF0KCJ7eXl5eX0te01NfS17ZGR9Iik7cmV0dXJuIGE/KHdpbmRvdy5ERE9DJiZ3aW5kb3cuRERPQy52ZXJzaW9ucyYmd2luZG93LkRET0MudmVyc2lvbnMubGluZXMoKVswXS5yZXBsYWNlKC9bXlwuXGRdL2csIiIpIT14LlBobygiVmVyc2lvbiIpLnJlcGxhY2UoL1teMC05XC5dL2csIiIpKyIuIithJiYoYSs9IiZiZXRhOyIpLCc8c3BhbiBjbGFzcz0iZ3JheSI+QnVpbGQgJythKyIsICIrYisiPC9zcGFuPiIpOiIifSwiI2FwaG9hZGQiOmZ1bmN0aW9uKCl7dmFyIHg9KHdpbmRvdy5ERE9DfHx7YXBwczp7ZWQ6e2lkOiJjdy5TeXMuSlNPTiJ9fX0pLmFwcHMsYT1bXTtyZXR1cm4gT2JqZWN0LmtleXMoeCkuZm9yRWFjaChmdW5jdGlvbihiKXt2YXIgYz14W2JdO2MuaWQmJiFjLmlkLnN0YXJ0c1dpdGgoImN3LlBob3RvbiIpJiZhLnB1c2goWyhjLm5hbWV8fGMuaWQpKyLCoCIsYy5WZXJzaW9ufHxjLnZlcnNpb258fG51bGwsYy5idWlsZD8iLiIrYy5idWlsZDpudWxsXS5jb21wYWN0KCkuam9pbigiIikpfSksYS5qb2luKCI8YnI+Iil9LCIjYXBob2xpYnMiOmZ1bmN0aW9uKCl7dmFyIHg9dGhpcyxhPXguUGhvKCJMaWJzVXNlZCIpO3JldHVybiBPYmplY3Qua2V5cyhhKS5tYXAoZnVuY3Rpb24oYil7cmV0dXJuIGFbYl0/eC5MaW5rLmFzc2lnbihhW2JdLGIpOic8c3BhbiBjbGFzcz0idGRuIG53IG1sNCI+JytiKyI8L3NwYW4+In0pLmpvaW4oIiwgIil9LCIjYnRuLXNob3dsaWJzIjp7YmluZDpmdW5jdGlvbih4LGEsYil7bnVsbCE9YSYmKGIuYWRkQ2xhc3MoImhpZGUiKSxiLm5leHQoKS5yZW1vdmVDbGFzcygiaGlkZSIpKX0sZXZlbnRzOiJjbGljay5teSJ9LCIjYnRuLXNob3doaXN0Ijp7YmluZDpmdW5jdGlvbih4LGEpe2lmKG51bGwhPWEmJndpbmRvdy5ERE9DJiZ3aW5kb3cuRERPQy52ZXJzaW9ucyl7dmFyIGI9dGhpcyxjPWIubGFuZzskLm15Lm1vZGFsKHttYW5pZmVzdDpiLlBobygiQ29uZmlybSIpLGRhdGE6e3RleHQ6Yy5UWFRfUEhPSElTVC5hc3NpZ24oYi5SZW5kZXJOZXdzKHdpbmRvdy5ERE9DLnZlcnNpb25zLDAsITApKSx5ZXM6IiIsbm86IiIsY2FuY2VsOiJDbG9zZSIsdXNlQnV0dG9uczohMH0sd2lkdGg6NDUwLGNzczoicDIwIHhncmF5IGxoMTcwIixmb2N1czoiI2J0bi1jYW5jZWwiLGNsb3NlOiExLGVzYzohMH0pfX19LCIjYXBob2ZvbnRzIjpmdW5jdGlvbigpe3ZhciB4PXRoaXMsYT14LlBobygiRm9udHNVc2VkIik7cmV0dXJuIE9iamVjdC5rZXlzKGEpLm1hcChmdW5jdGlvbihiKXtyZXR1cm4gYVtiXT94LkxpbmsuYXNzaWduKGFbYl0sYik6JzxzcGFuIGNsYXNzPSJ0ZG4gbncgbWw0Ij4nK2IrIjwvc3Bhbj4ifSkuam9pbigiLCAiKX0sIiNhdmVyIjoic2VydmljZS52ZXJzaW9uIiwiI2F2ZW5kb3IiOmZ1bmN0aW9uKHgpe3ZhciBhPXguc2VydmljZS52ZW5kb3I7cmV0dXJuKGEubmFtZSsiICIrYS52ZXJzaW9uKyhhLnZhcmlhbnQ/IiAoIithLnZhcmlhbnQrIikiOiIiKSkuZXNjYXBlSFRNTCgpfSwiI2Fub2RlIjpmdW5jdGlvbih4KXt2YXIgYT10aGlzLlBobygiQmFzZSIpO3JldHVybic8YSBocmVmPSJ7MX0iIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0idGRuIj57Mn0gezN9PC9hPicuYXNzaWduKGEsJzxzcGFuIGNsYXNzPSJmczkwICcrKC9eaHR0cHM6Ly50ZXN0KGEpPyJmaS1sb2NrIGJsdWUyIjoiZmktdW5sb2NrIHJlZDIiKSsnIj48L3NwYW4+JyxhLnJlcGxhY2UoL15odHRwW3NdPzpcL1wvfFwvL2csIiIpLmVzY2FwZUhUTUwoKSl9LCIjYWxvZ3MiOntjc3M6eyJzZWxmOmhpZGUiOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuUGhvKCJDb3VjaCIpLnZlcj49IjAwMi4ifHwhY3cubWUoInJvbGVzIikuZmluZCgiX2FkbWluIil9fX0sIiNhd2VsY29tZSI6ZnVuY3Rpb24oeCl7cmV0dXJuIHguc2VydmljZS5jb3VjaGRiLmVzY2FwZUhUTUwoKX0sIiNhZmVhdHVyZXMiOntiaW5kOmZ1bmN0aW9uKHgsYSxiKXt2YXIgYz14LnNlcnZpY2UuZmVhdHVyZXM7cmV0dXJuIE9iamVjdC5pc0FycmF5KGMpJiZjLmxlbmd0aD8oYi5wYXJlbnQoKS5yZW1vdmVDbGFzcygiaGlkZSIpLHguc2VydmljZS5mZWF0dXJlcy5qb2luKCIsICIpLmVzY2FwZUhUTUwoKSk6KGIucGFyZW50KCkuYWRkQ2xhc3MoImhpZGUiKSwi4oCUIil9fSwiI2Fzd2VycyI6e2Nzczp7InNlbGY6aGlkZSI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5QaG8oIkNvdWNoIikudmVyPCIwMDMuMDAzInx8IWN3Lm1lKCJyb2xlcyIpLmZpbmQoIl9hZG1pbiIpfX19LCIjYWNsdXN0ZXIiOntiaW5kOmZ1bmN0aW9uKHgsYSxiKXt2YXIgYz10aGlzLlBobygiTWVtYmVyc2hpcCIpLmNsdXN0ZXJfbm9kZXN8fFtdO3JldHVybiBiLnBhcmVudCgpLnRvZ2dsZUNsYXNzKCJoaWRlIixjLmxlbmd0aDwyKSxjLmxlbmd0aD90aGlzLmxhbmcuVFhUX0NMVVNURVIoYy5sZW5ndGgpOiLigJQifX0sIiNhcGVyZnRlc3QiOntiaW5kOmZ1bmN0aW9uKHgsYSxiKXtudWxsPT1hJiZiLmF0dHIoImhyZWYiLHdpbmRvdy5sb2NhdGlvbi5ocmVmLnNwbGl0KCIjIilbMF0ucmVwbGFjZSgvaW5kZXguaHRtbCQvLCIiKS5yZXBsYWNlKC9cLyQvLCIiKSsiL3BlcmZ0ZXN0Lmh0bWwiKX0sY3NzOntoaWRlOmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuUGhvKCJfY29tcGlsZWQiKXx8LTE9PShjdy5tZSgicm9sZXMiKXx8W10pLmluZGV4T2YoIl9hZG1pbiIpfX19LCIjaGlkZWNvdWNoYXBwIjp7Y3NzOntoaWRlOmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuUGhvKCJfY29tcGlsZWQiKXx8LTE9PShjdy5tZSgicm9sZXMiKXx8W10pLmluZGV4T2YoIl9hZG1pbiIpfX19LCIjYnRuLWFkbCI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtpZihudWxsIT1hKXt2YXIgYj10aGlzOyQubXkubW9kYWwoe21hbmlmZXN0OiQuZXh0ZW5kKCEwLHtsYW5nOmIubGFuZyxQaG86Yi5QaG8sUmVxOmIuUmVxfSxiLkRvd25sb2FkKSxkYXRhOnt9LGdsb2JhbDohMCxzY3JlZW46ITAsZXNjOiEwLGVudGVyOiEwLGNzczoicDI1IHRhYyIsY2xvc2U6Yi5QaG8oImxhbmciKS5CVE5fWERMRyx3aWR0aDozMDB9KX19LGV2ZW50czoiY2xpY2subXkifSwiI3Nmb250Ijp7aW5pdDpmdW5jdGlvbih4KXt0aGlzLnNlbGVjdDIoeCx7ZGF0YTpbe2lkOiJhdXRvIix0ZXh0OiJBdXRvIn0se2lkOiInLWFwcGxlLXN5c3RlbScsJ0JsaW5rTWFjU3lzdGVtRm9udCciLHRleHQ6IkFwcGxlIHN5c3RlbSBmb250In0se2lkOiInU2Vnb2UgVUknIix0ZXh0OiJTZWdvZSBVSSJ9LHtpZDoiJ0hlbHZldGljYSBOZXVlJyxIZWx2ZXRpY2EiLHRleHQ6IkhlbHZldGljYSJ9LHtpZDoiVWJ1bnR1Iix0ZXh0OiJVYnVudHUifSx7aWQ6IlRhaG9tYSIsdGV4dDoiVGFob21hIn0se2lkOiJDb3VzaW5lIix0ZXh0OiJDb3VzaW5lIChtb25vc3BhY2VkKSJ9XSxtaW5pbXVtUmVzdWx0c0ZvclNlYXJjaDoxMn0pfSxiaW5kOiJjZmcuZm9udCJ9LCIjc3RoZW1lIjp7aW5pdDpmdW5jdGlvbih4KXt4LnRhZ3ModGhpcy5sYW5nLlRBR19USEVNRSl9LGJpbmQ6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gbnVsbD09YT9beC5jZmcudGhlbWUrIiJdOih4LmNmZy50aGVtZSE9YSsiIiYmKHguY2ZnLnRoZW1lPWErIiIsdGhpcy5TZXRUaGVtZS5kZWxheSg1LGErIiIpKSxhKX19LCIjc2Z3ZWlnaHQiOntpbml0OmZ1bmN0aW9uKHgpe3gudGFncyh0aGlzLmxhbmcuVEFHX0ZXRUlHSFQpfSxiaW5kOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIG51bGw9PWE/W3guY2ZnLmZvbnRXZWlnaHQrIiJdOih4LmNmZy5mb250V2VpZ2h0PWErIiIsYSl9fSwiI3NjZm9udCI6e2luaXQ6ZnVuY3Rpb24oeCl7dGhpcy5zZWxlY3QyKHgse2RhdGE6W3tpZDoiYXV0byIsdGV4dDoiQXV0byJ9LHtpZDoiQ291c2luZSIsdGV4dDoiQ291c2luZSJ9LHtpZDoiTW9uYWNvIix0ZXh0OiJNb25hY28ifSx7aWQ6IkNvbnNvbGFzIix0ZXh0OiJDb25zb2xhcyJ9LHtpZDoiRmlyYSBDb2RlIix0ZXh0OiJGaXJhIENvZGUifV0sbWluaW11bVJlc3VsdHNGb3JTZWFyY2g6MTJ9KX0sYmluZDoiY2ZnLmZvbnRDb2RlIn0sIiNzY29scyI6e2luaXQ6ZnVuY3Rpb24oeCl7eC50YWdzKHt0YWdzOnRoaXMubGFuZy5UQUdfQ09MU30pfSxiaW5kOiJjZmcubGlzdENvbHMiLGNzczp7IjpkaXNhYmxlZCI6ZnVuY3Rpb24oKXtyZXR1cm4hY3cubWUoKX19fSwiI3Nncm91cCI6e2luaXQ6ZnVuY3Rpb24oeCl7eC50YWdzKHRoaXMubGFuZy5UQUdfR1JPVVApfSxiaW5kOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIG51bGwhPWEmJmErIiIhPXguY2ZnLmdyb3VwaW5nKyIiJiYoeC5jZmcuZ3JvdXBpbmc9YSx0aGlzLnJlbG9hZERCTGlzdCgpKSx4LmNmZy5ncm91cGluZ30sY3NzOnsiOmRpc2FibGVkIjpmdW5jdGlvbigpe3JldHVybiFjdy5tZSgpfX19LCIjc3Njcm9sbCI6e2luaXQ6ZnVuY3Rpb24oeCl7eC50YWdzKCQuZXh0ZW5kKHt0YWdzaGltOiIiLGdyb3Vwc2hpbToiIn0sdGhpcy5sYW5nLlRBR19TQ1JPTEwpKX0sYmluZDpmdW5jdGlvbih4LGEpe3JldHVybiBudWxsIT1hJiYoeC5jZmcuc2Nyb2xsU3BlZWQ9YSsiInx8IjIiKSxbeC5jZmcuc2Nyb2xsU3BlZWQrIiJdfSxjc3M6e2hpZGU6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5QaG8oIl9jb21waWxlZCIpfHx0aGlzLlBobygiaU9TIil8fHRoaXMuUGhvKCJpc01hYyIpfHx0aGlzLlBobygiaXNXZWJLaXQiKX19fSwiI3NwaW5nIjp7aW5pdDpmdW5jdGlvbih4KXt4LnRhZ3MoJC5leHRlbmQoe3RhZ3NoaW06IiIsZ3JvdXBzaGltOiIifSx0aGlzLmxhbmcuVEFHX1BJTkcpKX0sYmluZDpmdW5jdGlvbih4LGEpe3JldHVybiBudWxsIT1hJiYoeC5jZmcucGluZ1Nlc3Npb249KyhhKyIiKXx8MCksW3guY2ZnLnBpbmdTZXNzaW9uKyIiXX19LCIjc3BvbGwiOntiaW5kOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIG51bGwhPWEmJih4LmNmZy5sb29wQWN0aXZlVGFza3M9aXNOYU4oYSl8fCIiPT1hPzU6KDB8K2EpLmNsYW1wKDEsMzYwMCkpLHguY2ZnLmxvb3BBY3RpdmVUYXNrcysiIn0sZXZlbnRzOlsiYmx1ci5teSJdLGNzczp7IjpkaXNhYmxlZCI6ZnVuY3Rpb24oKXtyZXR1cm4hY3cubWUoKX19fSwiI3N0YXRzcG9sbCI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gbnVsbCE9YSYmKHguY2ZnLnN0YXRzUmVmcmVzaD1pc05hTihhKXx8IiI9PWE/MTA6KDB8K2EpLmNsYW1wKDUsMTIwKSkseC5jZmcuc3RhdHNSZWZyZXNoKyIifSxldmVudHM6WyJibHVyLm15Il0sY3NzOnsiOmRpc2FibGVkIjpmdW5jdGlvbigpe3JldHVybiFjdy5tZSgpfX19LCIjc3JlcG8iOntiaW5kOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIG51bGwhPWEmJih4LmNmZy5yb290UmVwbz1hLnJlcGxhY2UoL1xzL2csIiIpKSx4LmNmZy5yb290UmVwb30sY3NzOnsiOmRpc2FibGVkIjpmdW5jdGlvbih4LGEpe3JldHVybiF0aGlzLlBobygiX2NvbXBpbGVkIil8fCEoIXdpbmRvdy5ERE9DfHwhd2luZG93LkRET0Muc2V0dGluZ3Mucm9vdFJlcG8pfHwhY3cubWUoKX19fSwiI3N1cGQiOntpbml0OmZ1bmN0aW9uKHgpe3gudGFncygkLmV4dGVuZCghMCx7fSx0aGlzLmxhbmcuVEFHX1VQRCx7dGFnc2hpbToiIixncm91cHNoaW06IiJ9KSl9LGJpbmQ6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gbnVsbCE9YSYmKHguY2ZnLnVwZGF0ZT1hKyIifHwicmVtaW5kIiksW3guY2ZnLnVwZGF0ZSsiIl19LGNzczp7IjpkaXNhYmxlZCI6ZnVuY3Rpb24oKXtyZXR1cm4hY3cubWUoKX19fSwiI3NpY29uIjp7YmluZDpmdW5jdGlvbih4LGEpe3JldHVybiB4LmNmZy5pY29uP3guY2ZnLmljb246dGhpcy5QaG8oImZpbGVzIilbImZhdmljb24ucG5nIl0udXJsfSx3YXRjaDpbIiNidG4tcmVzZXRpY29uIl19LCIjYnRuLXNldGljb24iOntiaW5kOmZ1bmN0aW9uKHgsYSl7aWYobnVsbCE9YSl7dmFyIGI9dGhpcyxjPSQoImJvZHkiKSxkPSJ0aGVtZS1kYXJrIixlPWMuaGFzQ2xhc3MoZCk7Yy5yZW1vdmVDbGFzcyhkKSxiLm15Lm1vZGFsKCIjYnRuLXNldGljb24iLHttYW5pZmVzdDpiLkNyb3BwZXIsc2NyZWVuOiJyZ2JhKDEwLDIwLDMwLDAuOTcpIixnbG9iYWw6ITAsY3NzOiJwMjUifSkudGhlbihmdW5jdGlvbihhKXt4LmNmZy5pY29uPWEuZGF0YSxiLm15LmNoZWNrKCIjc2ljb24iKX0pLmFsd2F5cyhmdW5jdGlvbigpe2MudG9nZ2xlQ2xhc3MoZCxlKX0pfX0sZXZlbnRzOiJjbGljay5teSIsY3NzOntoaWRlOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIXRoaXMuUGhvKCJfY29tcGlsZWQiKXx8ISghd2luZG93LkRET0N8fCF3aW5kb3cuRERPQy5zZXR0aW5ncy5pY29uKXx8IWN3Lm1lKCl9fSx3YXRjaDpbIiNzdGhlbWUiXX0sIiNidG4tcmVzZXRpY29uIjp7YmluZDpmdW5jdGlvbih4LGEpe251bGwhPWEmJih4LmNmZy5pY29uPSIiKX0sZXZlbnRzOiJjbGljay5teSIsd2F0Y2g6WyIjc3RoZW1lIl0sY3NzOntoaWRlOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIXRoaXMuUGhvKCJfY29tcGlsZWQiKXx8ISghd2luZG93LkRET0N8fCF3aW5kb3cuRERPQy5zZXR0aW5ncy5pY29uKXx8IWN3Lm1lKCl9fX0sIiNzcHJveHkiOntkZWxheToyMDAsYmluZDpmdW5jdGlvbih4LGEpe2lmKG51bGw9PWEpe3ZhciBiPXRoaXM7JC5leHRlbmQoYi5QaG8oIkNmZyIpLHguY2ZnKSxiLlBobygiX2NvbXBpbGVkIikmJihiLlBobygiTHMiKSgiQ2ZnIix4LmNmZyksJC5uaWNlc2Nyb2xsLm9wdGlvbnMubW91c2VzY3JvbGxzdGVwPTI1KnguY2ZnLnNjcm9sbFNwZWVkLTUsJCgnbGlua1tyZWw9Imljb24iXScpLmF0dHIoImhyZWYiLHguY2ZnLmljb258fGIuUGhvKCJmaWxlcyIpWyJmYXZpY29uLnBuZyJdLnVybCkpLCQod2luZG93KS50cmlnZ2VyKCJyZXNpemUiKSwkLm15LnJhZGlvKCJwaG90b25fY2ZnX2NoYW5nZSIsT2JqZWN0LmNsb25lKHguY2ZnLCEwKSl9fSx3YXRjaDpbIiNzcmVwbyIsIiNzdXBkIiwiI3N0aGVtZSIsIiNzZm9udCIsIiNzY2ZvbnQiLCIjc2Z3ZWlnaHQiLCIjc3dpZHRoIiwiI3Nwb2xsIiwiI3N0YXRzcG9sbCIsIiNzaWNvbiIsIiNidG4tcmVzZXRpY29uIiwiI3Njb2xzIiwiI3Nncm91cCIsIiNzc2Nyb2xsIiwiI3NiYXIiLCIjc3BpbmciXSxsaXN0ZW46e3VzZXJDdHg6ZnVuY3Rpb24oeCxhKXtPYmplY3QuaXNPYmplY3QoYSkmJiQubXkucmFkaW8oInJlbG9hZCIse2lkOngudGFiaWQscGF0aDp4LnBhdGh9KX19fSwiI2F1cGQiOntiaW5kOmZ1bmN0aW9uKHgsYSl7aWYobnVsbCE9YSl7dmFyIGIsYyxkLGU9dGhpcyxmPWUuUGhvKCJDZmciKS5yb290UmVwbyxnPWUubGFuZyxoPSIiO2Q9L19kZXNpZ25cL3Bob3RvbiQvLnRlc3QoZik/e3ZlcnNpb246ZixwaG90b246ZisiP2F0dGFjaG1lbnRzPXRydWUifTp7dmVyc2lvbjpmKyJ2ZXJzaW9uLmpzb24iLHBob3RvbjpmKyJwaG90b24uanNvbiJ9LCQuYWpheCh7dXJsOmQudmVyc2lvbixkYXRhVHlwZToianNvbiJ9KS50aGVuKGZ1bmN0aW9uKHgpe2Z1bmN0aW9uIGEoeCl7dmFyIGE9eC5zcGxpdCgiLiIpO3JldHVybiAxZTEyKmFbMF0rMWU2KmFbMV0rKGlzTmFOKGFbMl0pPzk5OTk5OTorYVsyXSl9Yj1lLlBobygiVmVyc2lvbiIpKyIuIitlLlBobygiYnVpbGQiKSxjPXgudmVyc2lvbnx8IjAuMC4wIjt2YXIgZj1hKGIpO3JldHVybiBmPj1hKGMpPyhlLlBobygiTHMiKSgiTGFzdFVwZGF0ZSIse3JlbWluZGVyOkRhdGUubm93KCl9KSxjdy5saWIubm90ZShnLk1TR19VUERfTk9ORUVEKSk6KHgudmVyc2lvbnMmJihoPWUuUmVuZGVyTmV3cyh4LnZlcnNpb25zLGYsITEpKS5sZW5ndGgmJihoPWcuVFhUX1VQRF9GRUFUVVJFUy5hc3NpZ24oaCkpLCQuYWpheCh7dXJsOmQucGhvdG9uLGRhdGFUeXBlOiJqc29uIn0pLnRoZW4oaSkpfSkuZmFpbChmdW5jdGlvbigpe2N3LmxpYi5ub3RlKGcuRVJSX1VQREFURV9DSEVDSywiZXJyb3IiKX0pfWZ1bmN0aW9uIGkoeCl7JC5teS5tb2RhbCh7bWFuaWZlc3Q6ZS5QaG8oIkNvbmZpcm0iKSxkYXRhOnt0ZXh0OmcuVFhUX1VQRC5hc3NpZ24oYixjLGgpLHllczpnLkJUTl9VUERBVEUsbm86Zy5CVE5fQ0FOQ0VMLGNhbmNlbDoiIix1c2VCdXR0b25zOiEwfSx3aWR0aDo0NTAsY3NzOiJwMjAgeGdyYXkgbGgxNzAgcGIyNSIsZm9jdXM6IiNidG4teWVzIn0pLnRoZW4oZnVuY3Rpb24oYSl7aWYoInllcyIhPWEuY21kfHwhd2luZG93LkRET0MpcmV0dXJuIGUuUGhvKCJMcyIpKCJMYXN0VXBkYXRlIix7cmVtaW5kZXI6RGF0ZS5ub3coKX0pLHZvaWQgMDt4Ll9yZXY9ZS5kYXRhLmRkb2MuX3Jldnx8d2luZG93LkRET0MuX3Jldix3aW5kb3cuRERPQyYmd2luZG93LkRET0Muc2V0dGluZ3MmJih4LnNldHRpbmdzPXdpbmRvdy5ERE9DLnNldHRpbmdzKTt2YXIgYj17fTtPYmplY3Qua2V5cyh4Ll9hdHRhY2htZW50cykuZm9yRWFjaChmdW5jdGlvbihhKXtiW2FdPU9iamVjdC5zZWxlY3QoeC5fYXR0YWNobWVudHNbYV0sWyJjb250ZW50X3R5cGUiLCJkYXRhIl0pfSkseC5fYXR0YWNobWVudHM9YixlLlJlcSh7dXJsOltERE9DLl9kYnx8Il9waG90b24iLHguX2lkXSxtZXRob2Q6IlBVVCIsZGF0YTpKU09OLnN0cmluZ2lmeSh4KSxjb250ZW50VHlwZToiYXBwbGljYXRpb24vanNvbiIsZGF0YVR5cGU6InRleHQifSkudGhlbihmdW5jdGlvbigpe2N3LmxpYi5ub3RlKGcuTVNHX1VQREFURV9PSywiIiw2ZTMpLGUuUGhvKCJMcyIpKCJMYXN0VXBkYXRlIix7c3RhbXA6RGF0ZS5ub3coKX0pfSkuZmFpbChmdW5jdGlvbih4LGEsYil7Y3cubGliLm5vdGUoZy5FUlJfVVBEQVRFLmFzc2lnbih4LGEpLCJlcnJvciIpfSl9KX19LGV2ZW50czoiY2xpY2subXkifX0scmVsb2FkREJMaXN0OmZ1bmN0aW9uKCl7JC5teS5yYWRpbygiZGJsaXN0IixPYmplY3Qua2V5cyh0aGlzLlBobygiQWxsIikpKX0sc3R5bGU6eyIgY29kZSI6ImZvbnQtc2l6ZToxMDMlOyIsIiAjc2ljb24iOmZ1bmN0aW9uKHgpe3ZhciBhPXdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvfHwuOTk5O3JldHVybiBhPT1NYXRoLnJvdW5kKGEpPyJpbWFnZS1yZW5kZXJpbmc6cGl4ZWxhdGVkOyI6IiJ9fSxBY3Rpb25zOntjbGVhbkxTOmZ1bmN0aW9uKCl7Zm9yKHZhciB4LGEsYj1sb2NhbFN0b3JhZ2UsYz1bXSxkPTA7ZDxiLmxlbmd0aDtkKyspeD1iLmtleShkKSxhPWIuZ2V0SXRlbSh4KSx4LnN0YXJ0c1dpdGgoImN3LlBob3Rvbi5WaWV3U3RhdGUuIikmJihhLmhhcygnWyIudmFsdWUiJyl8fGEuaGFzKCdbIi5kb2MiXScpKSYmYy5wdXNoKGIua2V5KGQpKTtjLmZvckVhY2goeD0+Yi5yZW1vdmVJdGVtKHgpKX19LFJlbmRlck5ld3M6ZnVuY3Rpb24oeCxhLGIpe3RoaXMubGFuZyxhPWF8fDA7cmV0dXJuIHguc3BsaXQoIiMjIikuY29tcGFjdCghMCkubWFwKHg9PngudHJpbSgpKS5yZWR1Y2UoZnVuY3Rpb24oeCxkKXt2YXIgZT1kLnNwbGl0KC9cblxuLyk7cmV0dXJuIGMoZVswXSk+YSYmKGImJngucHVzaCgiPGg0PnsxfTwvaDQ+Ii5hc3NpZ24oZVswXSkpLHgucHVzaChlLnNsaWNlKDEpLm1hcChmdW5jdGlvbih4KXtyZXR1cm4iPGxpPnsxfTwvbGk+Ii5hc3NpZ24oeC5lc2NhcGVIVE1MKCkucmVwbGFjZSgvKGBbXmBdK2ApL2csIjxjb2RlPiQxPC9jb2RlPiIpLnJlcGxhY2UoL2AvZywiIikpfSkuam9pbigiXG4iKSkpLHh9LFtdKS5qb2luKCJcbiIpO2Z1bmN0aW9uIGMoeCl7dmFyIGE9eC5zcGxpdCgiLiIpO3JldHVybiAxZTEyKmFbMF0rMWU2KmFbMV0rKGlzTmFOKGFbMl0pPzk5OTk5OTorYVsyXSl9fSxIVE1MOlsnPGRpdiBjbGFzcz0ieGdyYXkgYXBwaGVpZ2h0IiBpZD0iYWFsbCIgc3R5bGU9Im1hcmdpbjowIGF1dG8gMCBhdXRvOyBwYWRkaW5nOjUycHggY2FsYyg1MCUgLSA0MjVweCkgMjBweCBjYWxjKDUwJSAtIDQyNXB4KTsiPicsJzxkaXYgY2xhc3M9Inc0NTAgZGliIHZhdCI+Jyx7cm93OiI0NTBweCIsbGFiZWw6IjEyMHB4Iixyb3dDc3M6Im15LXJvdyBwYjIiLGxhYmVsQ3NzOiJteS1sYWJlbCBmczkwIn0sJzxkaXYgaWQ9ImF0aXRsZSI+JywnPHNwYW4gY2xhc3M9ImRpYiBmczE1MCBsaDE2MCBwcjIwIiBzdHlsZT0ibWluLXdpZHRoOjEyMHB4OyI+JywnQ291Y2hEQiA8c3BhbiBpZD0iYXZlciI+PC9zcGFuPicsIjwvc3Bhbj4iLCI8L2Rpdj4iLFsie0xfVVJMfSIsInNwbiNhbm9kZSJdLFsie0xfQ0xVU1RFUn0iLCJzcG4jYWNsdXN0ZXIiXSxbIntMX1ZFTkRPUn0iLCJzcG4jYXZlbmRvciJdLFsie0xfQ09VQ0h9Iiwic3BuI2F3ZWxjb21lIl0sWyJ7TF9GRUFUfSIsInNwbiNhZmVhdHVyZXMiXSxbIntMX1BFUkZ9IiwnPGEgaWQ9ImFwZXJmdGVzdCIgY2xhc3M9InRkbiBtcjEwIiBocmVmPSIiIHRhcmdldD0iX2JsYW5rIiAgdGl0bGU9IntUSVBfUEVSRlRFU1R9Ij4nLCc8c3BhbiBjbGFzcz0iZmktZ3JhcGgtaG9yaXpvbnRhbCBibHVlMiBmczkwIj48L3NwYW4+JywiJm5ic3A7e0xfUEVSRlRFU1R9IiwiPC9hPiIsJzxhIGlkPSJhbG9ncyIgY2xhc3M9ImhpZGUgdGRuIG1yMTAiIGhyZWY9IiNfbG9nIiAgdGl0bGU9IntUSVBfTE9HU30iPicsJzxzcGFuIGNsYXNzPSJmaS1saXN0LXRodW1ibmFpbHMgYmx1ZTIgZnM5MCI+PC9zcGFuPicsIiZuYnNwO3tMX0xPR1N9IiwiPC9hPiIsJzxhIGlkPSJhc3dlcnMiIGNsYXNzPSJoaWRlIHRkbiBtcjEwIiBocmVmPSIjX25vZGUlMkZfbG9jYWwvX3ZlcnNpb25zIiB0aXRsZT0ie1RJUF9TV1ZFUlN9Ij4nLCc8c3BhbiBjbGFzcz0iZmktbGlzdC10aHVtYm5haWxzIGJsdWUyIGZzOTAiPjwvc3Bhbj4nLCImbmJzcDt7TF9TV1ZFUlN9IiwiPC9hPiJdLCc8ZGl2IGlkPSJhdGl0bGUiIGNsYXNzPSJtdDIwIj4nLCc8c3BhbiBjbGFzcz0iZGliIGZzMTUwIGxoMTYwIHByNiBtYjIiIHN0eWxlPSJtaW4td2lkdGg6MTIwcHg7Ij4nLCdQaG90b27CoDxzcGFuIGlkPSJhcGhvIj48L3NwYW4+JywiPC9zcGFuPiIsJzxzcGFuIGlkPSJhcGhvYnVpbGQiPjwvc3Bhbj4nLCI8L2Rpdj4iLHtyb3dDc3M6Im15LXJvdyBwYjYifSxbIntMX1BIT0FERH0iLCJzcG4jYXBob2FkZCJdLFsie0xfUEhPSElTVH0iLCJzcG4jYnRuLXNob3doaXN0LnBzZXVkb2xpbmsudGRuIix7dHh0OiJ7VElQX1BIT0hJU1R9In1dLFsie0xfUEhPTElCU30iLCJzcG4jYnRuLXNob3dsaWJzLnBzZXVkb2xpbmsudGRuIix7dHh0OiJ7VElQX1BIT0xJQlN9In0sInNwbiNhcGhvbGlicy5kaWIudmF0Lm1sLTQuaGlkZSJdLFsie0xfUEhPRk9OVFN9Iiwic3BuI2FwaG9mb250cy5kaWIudmF0Lm1sLTQiXSx7cm93Q3NzOiJteS1yb3cgbXQxNSBtYjIwICJ9LCc8ZGl2IGlkPSJoaWRlY291Y2hhcHAiIGNsYXNzPSJoaWRlIj4nLFsiICIsJzxidXR0b24gaWQ9ImF1cGQiIGNsYXNzPSJmczEwMCI+PHNwYW4gY2xhc3M9ImZpLWNsb3VkIG80MCI+PC9zcGFuPiB7TF9DSEVDS19VUERBVEVTfcKgPC9idXR0b24+J10se3Jvd0NzczoibXktcm93IG10NyJ9LFsiICIsJzxzcGFuIGNsYXNzPSJibHVlIG81MCBmaS1kb3dubG9hZCBmczk1IG1yMiBmczkwIj48L3NwYW4+IDxzcGFuIGlkPSJidG4tYWRsIiBjbGFzcz0icHNldWRvbGluayB0ZG4iPntMX0RMfTwvc3Bhbj4nXSxbIiAiLCc8c3BhbiBjbGFzcz0iYmx1ZSBvNjAgZmktc29jaWFsLWdpdGh1YiBtcjIiPjwvc3Bhbj4gJywnPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2VybW91dGgvY291Y2gtcGhvdG9uIiByZWZlcnJlcnBvbGljeT0ibm8tcmVmZXJyZXIiIHJlbD0ibm9mb2xsb3ciIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0idGRuIj57TF9HSVRIVUJ9PC9hPiddLCI8L2Rpdj4iLHtyb3dDc3M6Im15LXJvdyBtdDIwIn0sWyIgIiwnPHNwYW4gY2xhc3M9ImdyYXkgZnM5MCI+KGMpIDIwMjQgZXJtb3V0aC4gUGhvdG9uIGlzIE1JVCBsaWNlbnNlZC48L3NwYW4+J10sIjwvZGl2PiIsJzxkaXYgY2xhc3M9InczNzAgZGliIHZhdCBtbDMwIj4nLHtyb3c6IjM3MHB4IixsYWJlbDoiMTMwcHgiLHJvd0NzczoibXktcm93IHBiOSIsbGFiZWxDc3M6Im15LWxhYmVsIGZzOTAgdmF0IHB0OSJ9LCc8ZGl2IGlkPSJhdGl0bGUiIGNsYXNzPSJmczE1MCBsaDE2MCBwYjYiPntTX1RJVExFfTwvZGl2PicsWyJ7U19SRVBPfSIsImlucCNzcmVwby53MTAwcCIse3NwZWxsY2hlY2s6ImZhbHNlIixhdXRvY29tcGxldGU6Im9mZiJ9XSxbIntTX1VQRH0iLCJkaXYjc3VwZC5kaWIudmF0LncxMDBwLmxoMTgwLnBiMi5udyJdLFsie1NfVEhFTUV9IiwiZGl2I3N0aGVtZS5kaWIudmF0LncxMDBwLmxoMTgwLnBiMSJdLFsie1NfRkNGQU1JTFl9IiwiaW5wI3NjZm9udC53MTAwcC5mczExMCJdLFsie1NfRkZBTUlMWX0iLCJpbnAjc2ZvbnQudzEwMHAuZnMxMTAiXSxbIntTX0ZXRUlHSFR9IiwiZGl2I3Nmd2VpZ2h0LmRpYi52YXQudzEwMHAubGgxODAucGIxIl0sWyJ7U19TQ1JPTEx9IiwiZGl2I3NzY3JvbGwuZGliLnZhdC53MTAwcC5saDE4MC5wYjEiXSxbIntTX0NPTFN9IiwiZGl2I3Njb2xzLmRpYi52YXQudzEwMHAubGgxODAucGIxIl0sWyJ7U19HUk9VUH0iLCJkaXYjc2dyb3VwLmRpYi52YXQudzEwMHAubGgxODAucGIxLm53Il0sWyJ7U19QSU5HfSIsImRpdiNzcGluZy5kaWIudmF0LncxMDBwLmxoMTgwLnBiMyJdLFsie1NfUE9MTH0iLCJudW0jc3BvbGwudzY1Iix7bWluOiIxIixtYXg6IjM2MDAiLHN0ZXA6IjEifSwiPHNwYW4+IHM8L3NwYW4+Il0sWyJ7U19TVEFUU19QT0xMfSIsIm51bSNzdGF0c3BvbGwudzY1Iix7bWluOiI1IixtYXg6IjEyMCIsc3RlcDoiNSJ9LCI8c3Bhbj4gczwvc3Bhbj4iXSx7bGFiZWxDc3M6Im15LWxhYmVsIGZzOTAgcHQ4In0sWyJ7U19JQ09OfSIsJzxpbWcgc3R5bGU9IndpZHRoOjY0cHg7aGVpZ2h0OjY0cHg7IiBjbGFzcz0iZGliIHZhdCBicjIiIGlkPSJzaWNvbiI+JywnPGRpdiBjbGFzcz0iZGliIHZhdCBwdDMgcGwxMCI+JywnPHNwYW4gY2xhc3M9InBzZXVkb2xpbmsgdGRuIiBpZD0iYnRuLXNldGljb24iPntCVE5fSUNPTn08L3NwYW4+IDxicj4nLCc8c3BhbiBjbGFzcz0icHNldWRvbGluayB0ZG4gaGlkZSIgaWQ9ImJ0bi1yZXNldGljb24iPntCVE5fSUNPTl9SRVNFVH08L3NwYW4+J10sJzxkaXYgaWQ9InNwcm94eSIgY2xhc3M9ImhpZGUiPjwvZGl2PicsIjwvZGl2PiJdLENyb3BwZXI6e3BhcmFtczp7d2lkdGg6Njg2fSxkYXRhOntmaWxlbmFtZToiIixkYXRhOiIiLGNyb3BwZWQ6ITEsc2l6ZTo2NH0saW5pdDpmdW5jdGlvbih4LGEpe3ZhciBiPSQubXkuZm9ybWdlbihbJzxkaXYgY2xhc3M9ImZsIG1yMjAgdGFjIHZhdCBiZy1sZ3JheSIgc3R5bGU9IndpZHRoOjYwMHB4O2hlaWdodDo0NTBweDtvdmVyZmxvdzpoaWRkZW47cG9zaXRpb246cmVsYXRpdmU7bGluZS1oZWlnaHQ6NDUwcHg7IiBpZD0iY3JvcC1mcmFtZSI+JywnPGltZyBpZD0ic291cmNlIiBjbGFzcz0idmFtIiBzdHlsZT0ibWF4LXdpZHRoOjYwMHB4OyBtYXgtaGVpZ2h0OjQ1MHB4OyBiYWNrZ3JvdW5kOndoaXRlIiBzcmM9IiIgLz4nLCc8ZGl2IGNsYXNzPSJ3NjAwICBkaWIiIHN0eWxlPSJoZWlnaHQ6NDUwcHg7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowIj4nLCc8c3BhbiBjbGFzcz0iZGliIHZhbSBmczExMCBidXR0b24iPicsJzxzcGFuIGNsYXNzPSJmaS1waG90byI+PHNwYW4gY2xhc3M9ImZzMTEwIj4gJm5ic3A7U2VsZWN0IEltYWdlPC9zcGFuPjwvc3Bhbj4nLCI8L3NwYW4+IiwnPGlucHV0IHR5cGU9ImZpbGUiIGlkPSJmaWxlIiBjbGFzcz0idzYwMCBkaWIiIGFjY2VwdD0iaW1hZ2UvanBlZyxpbWFnZS9wbmciIHN0eWxlPSJoZWlnaHQ6NDUwcHg7Y3Vyc29yOnBvaW50ZXI7b3BhY2l0eTowOyBwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjAiPicsIjwvZGl2PiIsIjwvZGl2PiIsJzxkaXYgY2xhc3M9Inc2NSBkaWIgdmF0IiBpZD0ieHByZXZpZXciPicsJzxpbWcgaWQ9ImlwcmV2aWV3IiBzdHlsZT0id2lkdGg6NjRweDtoZWlnaHQ6NjRweDtib3JkZXI6bm9uZTsiIGNsYXNzPSJiZy1ncmF5NyI+Jyx7cm93OiI2NXB4Iixyb3dDc3M6Im10NSBmczkwIHRhYyJ9LFsiIiwiYnRuI2J0bi1hcHBseS53NjUuZ3JlZW4iLHt2YWw6IlNldCJ9XSwiPC9kaXY+IiwnPGRpdiBjbGFzcz0idzY1IGRpYiB2YXQiIGlkPSJ4d2FybiI+JywiPC9kaXY+IiwnPGRpdiBjbGFzcz0iaGlkZSI+JywnPGNhbnZhcyBpZD0ieDIiIHdpZHRoPScrMiphLmRhdGEuc2l6ZSsiIGhlaWdodD0iKzIqYS5kYXRhLnNpemUrIj48L2NhbnZhcz4iLCc8Y2FudmFzIGlkPSJwcmV2aWV3IiBjbGFzcz0iYmctbGdyYXkiIHN0eWxlPSJ3aWR0aDo2NHB4O2hlaWdodDo2NHB4IiB3aWR0aD0nK2EuZGF0YS5zaXplKyIgaGVpZ2h0PSIrYS5kYXRhLnNpemUrJyBzdHlsZT0ib3ZlcmZsb3c6aGlkZGVuOyI+PC9jYW52YXM+JywiPC9kaXY+IiwnPGltZyBpZD0ibWFzazEiIGNsYXNzPSJoaWRlIiBzcmM9ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QjJaWEp6YVc5dVBTSXhMakVpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUQwaU1DSWdlVDBpTUNJZ2QybGtkR2c5SWpZMElpQm9aV2xuYUhROUlqWTBJaUIyYVdWM1FtOTRQU0l3TERBc05qUXNOalFpUGdvZ0lEeHdZWFJvSUdROUlrMHdMRE15SUVNd0xEQWdNQ3d3SURNeUxEQWdRelkwTERBZ05qUXNNQ0EyTkN3ek1pQkROalFzTmpRZ05qUXNOalFnTXpJc05qUWdRekFzTmpRZ01DdzJOQ0F3TERNeUlpQm1hV3hzUFNJalJqQkdNRVl3SWk4K0Nqd3ZjM1puUGdvPSI+J10pO3guaHRtbChiKX0sc3R5bGU6eyIgLmpjcm9wLWhvbGRlciI6ImRpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOm1pZGRsZSJ9LHVpOnsiI2ZpbGUiOntiaW5kOmZ1bmN0aW9uKHgsYSxiKXt2YXIgYyxkPXRoaXMsZT1iLm15KCkucm9vdCxmPWUuZmluZCgiI3ByZXZpZXciKSxnPWUuZmluZCgiI3NvdXJjZSIpLGg9ZS5maW5kKCIjeDIiKSxpPWUuZmluZCgiI21hc2sxIiksaj17azoxfSxrPSIiO2Z1bmN0aW9uIGwoYSl7aWYocGFyc2VJbnQoYS53KT4wKXt2YXIgYixjLGUsaz1nWzBdLGw9ai5rLG09YS53Kmx8MDsoYj1mWzBdLmdldENvbnRleHQoIjJkIikpLmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbj0iY29weSIsYi5maWxsU3R5bGU9InRyYW5zcGFyZW50IixiLmZpbGxSZWN0KDAsMCx4LnNpemUseC5zaXplKSxiLmRyYXdJbWFnZShpWzBdLDAsMCx4LnNpemUseC5zaXplLDAsMCx4LnNpemUseC5zaXplKSxiLmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbj0ic291cmNlLWluIixtPjIqeC5zaXplPygoZT0oYz1oWzBdKS5nZXRDb250ZXh0KCIyZCIpKS5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb249ImNvcHkiLGUuZmlsbFN0eWxlPSJ0cmFuc3BhcmVudCIsZS5maWxsUmVjdCgwLDAsMip4LnNpemUsMip4LnNpemUpLGUuZHJhd0ltYWdlKGssYS54Kmx8MCxhLnkqbHwwLG0sbSwwLDAsMip4LnNpemUsMip4LnNpemUpLGIuZHJhd0ltYWdlKGMsMCwwLDIqeC5zaXplLDIqeC5zaXplLDAsMCx4LnNpemUseC5zaXplKSk6Yi5kcmF3SW1hZ2UoayxhLngqbHwwLGEueSpsfDAsbSxtLDAsMCx4LnNpemUseC5zaXplKSx4LmRhdGE9Y3cubGliLmltYWdlKGYpLm1hcChmdW5jdGlvbih4KXtyZXR1cm4oKDI1NSp4fDApPj4yPDwyKS8yNTV9KS5zaGFycGVuKDEuNikuYnJpZ2h0bmVzcygxLjEpLnBuZygpLGQubXkuZmluZCgiI2lwcmV2aWV3IikuYXR0cigic3JjIix4LmRhdGEpLHguY3JvcHBlZD0hMCxkLm15LmNoZWNrKCIjYnRuLWFwcGx5Iil9fW51bGwhPWEmJmEmJihjPWJbMF0uZmlsZXNbMF0pJiZmdW5jdGlvbigpe3guZmlsZW5hbWU9Yy5uYW1lO3ZhciBhLGQ9bmV3IEZpbGVSZWFkZXIsZT1bXTtkLm9ubG9hZD1mdW5jdGlvbih4KXthPW5ldyBVaW50OEFycmF5KHgudGFyZ2V0LnJlc3VsdCk7Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDtiKyspZS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoYVtiXSkpO2s9d2luZG93LmJ0b2EoZS5qb2luKCIiKSl9LGQub25sb2FkZW5kPWZ1bmN0aW9uKCl7Zy5sb2FkKGZ1bmN0aW9uKCl7ai5rPWdbMF0ubmF0dXJhbFdpZHRoL2cud2lkdGgoKX0pLGcucmVtb3ZlQ2xhc3MoImhpZGUiKS5hdHRyKCJzcmMiLCJkYXRhOmltYWdlL2pwZWc7YmFzZTY0LCIrayksai5rPWdbMF0ubmF0dXJhbFdpZHRoL2cud2lkdGgoKSxnLkpjcm9wKHtvbkNoYW5nZTpsLG9uU2VsZWN0OmwuZGVib3VuY2UoMjApLGFzcGVjdFJhdGlvOjEsbWluU2l6ZTpbNjQsNjRdLGFsbG93TW92ZTohMH0sZnVuY3Rpb24oKXt0aGlzLmFuaW1hdGVUbyhbMTAwLDEwMCwzMDAsMzAwXSl9KSxrPSIiLGIucGFyZW50KCkuYWRkQ2xhc3MoImhpZGUiKX0sZC5yZWFkQXNBcnJheUJ1ZmZlcihjKX0oKX19LCIjYnRuLWFwcGx5Ijp7ZGVsYXk6NTAsYmluZDpmdW5jdGlvbih4LGEpe251bGwhPWEmJnguY3JvcHBlZCYmdGhpcy5teS5jb21taXQoKX0sZXZlbnRzOiJjbGljay5teSIsY3NzOnsiOmRpc2FibGVkIjpmdW5jdGlvbih4LGEpe3JldHVybiF4LmNyb3BwZWR9fX19fSxEb3dubG9hZDp7ZGF0YTp7Y2ZnOnt9fSxKU09OOiExLEJsb2I6ITEsVXJsOiExLGluaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpczthLlVybD1hLlBobygpLkRvd25sb2FkVVJMLCQuZXh0ZW5kKCEwLGEuZGF0YS5jZmcsYS5QaG8oIkNmZyIpKSx4Lmh0bWwoJC5teS5mb3JtZ2VuKGEuSFRNTCkuYXNzaWduKGEubGFuZykpLHgudGhlbihmdW5jdGlvbigpe2EucmVhZFBob3RvbigpfSkuZmFpbChmdW5jdGlvbih4LGEpe2NvbnNvbGUubG9nKHgsYSl9KX0sdWk6eyIjYWRsIjp7YmluZDpmdW5jdGlvbih4LGEsYil7dmFyIGM9dGhpcyxkPWMuVXJsLGU9d2luZG93LkRET0M7cmV0dXJuIGMuUGhvKCJfY29tcGlsZWQiKSYmZSYmIiIhPT1kPyExPT09ZD8nPHNwYW4gY2xhc3M9InhncmF5Ij4nK2MubGFuZy5MX0RMUFJFUCsiPC9zcGFuPiI6KGIuYXR0cigiaHJlZiIsZCksYi5hdHRyKCJkb3dubG9hZCIsInBob3Rvbi0iK2MuUGhvKCJWZXJzaW9uIikucmVwbGFjZSgvW14wLTlcLl0vZywiIikrIi4iK2MuUGhvKCJidWlsZCIpKyIuanNvbiIpLGMubGFuZy5MX0RMX0xJTkspOiJObyBhcHAgY29kZSwgc29ycnkifX0sIiNhc2l6ZSI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gdGhpcy5CbG9iP3RoaXMuQmxvYi5zaXplLmZvcm1hdCgpLnJlcGxhY2UoL1xEL2csIuKAiSIpKyIgYnl0ZXMiOiIifSx3YXRjaDoiI2FkbCJ9fSxIVE1MOlt7cm93Q3NzOiJteS1yb3cgbXQ1IG1iNSJ9LFsiICIsJzxzcGFuIGNsYXNzPSJibHVlIG81MCBmaS1kb3dubG9hZCBmczk1IG1yMiI+PC9zcGFuPiA8YSBocmVmPSIiIGlkPSJhZGwiIGNsYXNzPSJ0ZG4iIGRvd25sb2FkPSJwaG90b24uanNvbiI+PC9hPiddLFsiICIsJzxzcGFuIGlkPSJhc2l6ZSIgY2xhc3M9Im81MCBmczgwIj48L3NwYW4+J11dLHJlYWRQaG90b246ZnVuY3Rpb24oKXt2YXIgeD10aGlzLGE9d2luZG93LkRET0M7aWYoIXguUGhvKCJfY29tcGlsZWQiKXx8IWEpcmV0dXJuIiI7eC5Vcmx8fHguUmVxKHt1cmw6W2EuX2RifHwiX3Bob3RvbiIsYS5faWQse2F0dGFjaG1lbnRzOiEwfV19KS50aGVuKGZ1bmN0aW9uKGEpe3guZGF0YS5kZG9jPWE7dmFyIGI9JC5leHRlbmQoITAse19pZDoiIixuYW1lOiIiLHZlcnNpb246eC5QaG8oIlZlcnNpb24iKSsiLiIreC5QaG8oImJ1aWxkIil9LE9iamVjdC5yZWplY3QoYSxbIl9yZXYiLCJfYXR0YWNobWVudHMiXSkpO2IuX2F0dGFjaG1lbnRzPXt9LE9iamVjdC5rZXlzKGEuX2F0dGFjaG1lbnRzKS5mb3JFYWNoKGZ1bmN0aW9uKHgpe3ZhciBjPWEuX2F0dGFjaG1lbnRzW3hdO2IuX2F0dGFjaG1lbnRzW3hdPXtjb250ZW50X3R5cGU6Yy5jb250ZW50X3R5cGUsZGF0YTpjLmRhdGF9fSkseC5KU09OPWI7Y3cubGliLmJhc2U2NDJibG9iKGN3LmxpYi5iYXNlNjQoSlNPTi5zdHJpbmdpZnkoYixudWxsLCIgICIpKSxmdW5jdGlvbihhKXt4LkJsb2I9YSx4LlVybD1VUkwuY3JlYXRlT2JqZWN0VVJMKGEpLHguUGhvKCkuRG93bmxvYWRVUkw9eC5VcmwseC5teS5jaGVjaygiI2FkbCIpLHgubXkuY2hlY2soIiNhc2l6ZSIpfSwiYXBwbGljYXRpb24vanNvbiIpfSkuZmFpbChmdW5jdGlvbigpe3guVXJsPSIiLHgubXkuY2hlY2soIiNhZGwiKX0pfSxzdHlsZTp7IiI6ImZvbnQtc2l6ZToxOHB4OyJ9fX0sJGVycm9yOntpZDoiY3cuUGhvdG9uLiRlcnJvciIsbGFuZzp7fSxkYXRhOntlcnJvcjoiIixwYXRoOltdLG1lc3NhZ2U6IiJ9LGhhc2g6ZnVuY3Rpb24oKXtyZXR1cm4iZXJyb3IifSx0aXRsZTpmdW5jdGlvbigpe3JldHVybiJFcnJvciBzd2l0Y2hpbmcgIyIrdGhpcy5kYXRhLnBhdGguam9pbigiLyIpfSxEQjJnbzoiIixEQmxpc3Q6W10saXNDb3VjaDNhbmRBbGxEQnM6ITEsaW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YS5kYXRhO2EuaXNDb3VjaDNhbmRBbGxEQnM9YS5QaG8oIkNvdWNoIikudmVyPj0iMDAzLiImJmN3Lm1lKCkmJiFiLnBhdGgubGVuZ3RoLHguaHRtbChhLkhUTUwpLGEuaXNDb3VjaDNhbmRBbGxEQnMmJngudGhlbihmdW5jdGlvbigpe3guZmluZCgiI2UtZGJuYW1lIikub24oImtleXVwLm15IixmdW5jdGlvbihhKXt2YXIgYj1hLmtleUNvZGU7MTMhPWImJjEwIT1ifHxmdW5jdGlvbigpe3guZmluZCgiI2J0bi1nbyIpLnRyaWdnZXIoImNsaWNrIil9LmRlYm91bmNlKDUwKSgpfSl9KX0sdWk6eyIjZS1sb2dvIjpmdW5jdGlvbigpe3JldHVybiB0aGlzLlBobygiU1ZHIikubG9nb30sIiNlLW1zZyI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYixjPXRoaXMsZD14LmVycm9yO3RyeXtiPU9iamVjdC5pc1N0cmluZyhkKT9kKyIiOkpTT04uc3RyaW5naWZ5KGQpfWNhdGNoKHgpe31yZXR1cm4gYnx8KGI9ZCsiInx8IlVuZGVmaW5lZCBlcnJvciIpLGI9Yi5zcGxpdCgidG8gaW5pdGlhbGl6ZToiKS5sYXN0KCkuY29tcGFjdCgpLHgubWVzc2FnZT1iLGMuaXNDb3VjaDNhbmRBbGxEQnM/Yy5sYW5nLlRYVF9DM19BTExfREJTXzQwMTpjLmxhbmcuVFhUX0VSUi5hc3NpZ24oIiMiK3gucGF0aC5qb2luKCIvIikuZXNjYXBlSFRNTCgpLGIpfSxsaXN0ZW46e3VzZXJDdHg6ZnVuY3Rpb24oeCxhKXtPYmplY3QuaXNPYmplY3QoYSkmJihhLm5hbWV8fHRoaXMuaXNDb3VjaDNhbmRBbGxEQnMpJiYvXHM0MFszMV1ccy8udGVzdCh4LmVycm9yKSYmJC5teS5yYWRpbygicmVsb2FkIix7aWQ6eC50YWJpZCxwYXRoOngucGF0aH0pfX19LCIjZS1jZGJuYW1lIjp7Y3NzOntoaWRlOmZ1bmN0aW9uKHgpe3JldHVybiF0aGlzLmlzQ291Y2gzYW5kQWxsREJzfX19LCIjZS1kYm5hbWUiOntkZWxheToyMCxpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXM7YS5kYXRhO3RoaXMuaXNDb3VjaDNhbmRBbGxEQnMmJih4LmF0dHIoInBsYWNlaG9sZGVyIix0aGlzLmxhbmcuUExDX0RCTkFNRSksYS5EQmxpc3Q9KGEuUGhvKCJMcyIpKCJUYWJDbG9zZUhpc3RvcnkiKXx8W10pLm1hcChmdW5jdGlvbih4KXtyZXR1cm4geC50YWJzfSkuZmxhdHRlbigpLm1hcChmdW5jdGlvbih4KXtyZXR1cm4geC5wYXRofSkuZmlsdGVyKGZ1bmN0aW9uKHgpe3JldHVybiB4Lmxlbmd0aCYmIl8iIT14WzBdWzBdfSkubWFwKGZ1bmN0aW9uKHgpe3JldHVybiB4WzBdfSkudW5pcXVlKCkuc29ydCgpLGEuREJsaXN0Lmxlbmd0aCYmeC5hdXRvY29tcGxldGUoe2RlbGF5OjAsc291cmNlOmEuREJsaXN0LGNsb3NlOmZ1bmN0aW9uKHgsYil7YS5teS5jaGVjaygiI2J0bi1kYm5hbWUiKX0uZGVib3VuY2UoMTApLHNlbGVjdDpmdW5jdGlvbih4LGIpe2EubXkuY2hlY2soIiNlLWRibmFtZSIpLGEuU3dpdGNoLmRlYm91bmNlKDYwKSgpfS5kZWJvdW5jZSgxMCksYXBwZW5kVG86YS5teS5yb290KCksbWluTGVuZ3RoOjB9KSl9LGJpbmQ6InRoaXMuREIyZ28ifSwiI2J0bi1kYm5hbWUiOntiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcyxjPWIubXkuZmluZCgiI2UtZGJuYW1lIiksZD0hIWIuREJsaXN0Lmxlbmd0aCYmYy5hdXRvY29tcGxldGUoIndpZGdldCIpLmlzKCI6dmlzaWJsZSIpO3JldHVybiBudWxsIT1hJiYoZD9jLmF1dG9jb21wbGV0ZSgiY2xvc2UiKTpjLmF1dG9jb21wbGV0ZSgic2VhcmNoIiwiIiksZD0hZCksJzxzcGFuIGNsYXNzPSJ7MX0iPjwvc3Bhbj4nLmFzc2lnbihkPyJhdXAiOiJhZG93biIpfSxldmVudHM6ImNsaWNrLm15Iixjc3M6e2hpZGU6ZnVuY3Rpb24oeCl7cmV0dXJuIXRoaXMuREJsaXN0Lmxlbmd0aH19LHdhdGNoOlsiI2UtZGJuYW1lIl19LCIjYnRuLWdvIjp7ZGVsYXk6MjUsYmluZDpmdW5jdGlvbih4LGEsYil7dmFyIGM9dGhpcztyZXR1cm4gbnVsbCE9YSYmYy5Td2l0Y2goKSxjLmxhbmcuQlROX0dPfSxjc3M6eyI6ZGlzYWJsZWQiOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIS9eW2EtejAtOV8kXChcKVwrXC1cL10rJC8udGVzdCh0aGlzLkRCMmdvKX19LHdhdGNoOlsiI2UtZGJuYW1lIl19LCIjZS1jcmVsb2FkIjp7Y3NzOntoaWRlOmZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmlzQ291Y2gzYW5kQWxsREJzfX19LCIjYnRuLXJlbG9hZCI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj0iNDAxIj09eC5tZXNzYWdlLnRvKDMpJiYhY3cubWUoKTtpZihudWxsPT1hKXJldHVybiB0aGlzLmxhbmdbYj8iQlROX0FVVEgiOiJCVE5fUkVUUlkiXTtiPyQoIiNidG4tYXV0aC1wb3B1cCIpLnRyaWdnZXIoImNsaWNrIik6JC5teS5yYWRpbygicmVsb2FkIix7aWQ6eC50YWJpZCxwYXRoOngucGF0aH0pfX19LGRpZTpmdW5jdGlvbih4KXt0aGlzLmlzQ291Y2gzYW5kQWxsREJzJiZ0aGlzLkRCbGlzdC5sZW5ndGgmJnguZmluZCgiI2UtZGJuYW1lIikuYXV0b2NvbXBsZXRlKCJkZXN0cm95Iil9LFN3aXRjaDpmdW5jdGlvbigpe3ZhciB4PXRoaXM7d2luZG93LmxvY2F0aW9uLmhhc2g9eC5EQjJnbyx4Lm15LmZpbmQoIiNlLWRibmFtZSIpLmF1dG9jb21wbGV0ZSgib3B0aW9uIiwic291cmNlIix4LkRCbGlzdD14LkRCbGlzdC5hZGQoeC5EQjJnbykudW5pcXVlKCkpfSxIVE1MOic8ZGl2IGNsYXNzPSJwMTAwIHRhYyI+PGRpdiBjbGFzcz0idzUwcCBtdDI1IHRhbCBkaWIgdmF0IG1iMTUiPjxkaXYgaWQ9ImUtbG9nbyI+PC9kaXY+PGRpdiBpZD0iZS10aXRsZSIgY2xhc3M9ImRpYiB2YXQiPlBob3RvbjwvZGl2PjwvZGl2PjxkaXYgaWQ9ImUtbXNnIiBjbGFzcz0iIj48L2Rpdj48Zm9ybSBpZD0iZS1jZGJuYW1lIiBjbGFzcz0ibXQyNSBmczk1IGhpZGUiPjxkaXYgY2xhc3M9Inc1MHAgdGFsIGRpYiB2YXQgcGw3MCI+PGlucHV0IHR5cGU9InRleHQiIGlkPSJlLWRibmFtZSIgc3R5bGU9IndpZHRoOiBjYWxjKDEwMCUgLSAxMjJweCk7IG1heC13aWR0aDo2MDBweDsiIGNsYXNzPSJtcjIiPjxzcGFuIHN0eWxlPSIiIGNsYXNzPSJwc2V1ZG9saW5rIHRkbiBiZm9sZCBkaWIgdmF0IiB0eHQ9IiIgaWQ9ImJ0bi1kYm5hbWUiPjxzcGFuIGNsYXNzPSJhZG93biI+PC9zcGFuPjwvc3Bhbj48ZGl2IGNsYXNzPSJ3MTIwIGRpYiB2YXQiPjxidXR0b24gaWQ9ImJ0bi1nbyIgY2xhc3M9IncxMjAgcHIxNSI+PC9idXR0b24+PC9kaXY+PC9kaXY+PC9mb3JtPjxkaXYgaWQ9ImUtY3JlbG9hZCIgY2xhc3M9Im10MjUgZnM5NSBoaWRlIj48ZGl2IGNsYXNzPSJ3NTBwIHRhbCBkaWIgdmF0IHBsNzAiPjxidXR0b24gaWQ9ImJ0bi1yZWxvYWQiIGNsYXNzPSJ3MTIwIHByMTUiPjwvYnV0dG9uPjwvZGl2PjwvZGl2PjwvZGl2Picsc3R5bGU6eyIgI2UtbG9nbyI6eyIiOlsid2lkdGg6NTVweDsgaGVpZ2h0OjU1cHg7IGJvcmRlcjoycHggc29saWQgI2EwYjBjMDsgYm9yZGVyLXJhZGl1czo2MHB4OyIsImRpc3BsYXk6aW5saW5lLWJsb2NrOyB2ZXJ0aWNhbC1hbGlnbjp0b3A7IG1hcmdpbi1yaWdodDoxM3B4OyBwYWRkaW5nOjE0cHggMDsgdGV4dC1hbGlnbjpjZW50ZXI7Il0sIiBzdmciOiJ3aWR0aDozOXB4OyBoZWlnaHQ6MjBweDsifSwiICNlLXRpdGxlIjoiZm9udC1zaXplOjYwcHg7IGxpbmUtaGVpZ2h0OjAuOWVtOyBjb2xvcjojOTVhNWI1OyBmb250LXdlaWdodDoyMDA7IiwiIC51aS13aWRnZXQiOiJmb250LXNpemU6MTAwJSIsIiAudWktYXV0b2NvbXBsZXRlIjoibGluZS1oZWlnaHQ6MS4zZW07IG1heC1oZWlnaHQ6MTl2aDsgb3ZlcmZsb3cteTphdXRvOyAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzp0b3VjaDsiLCIgLmJmb2xkIjp7IiI6WyJ3aWR0aDoyMHB4IWltcG9ydGFudDsgcGFkZGluZy1sZWZ0OjA7IHBhZGRpbmctcmlnaHQ6MDsgIiwiYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czowOyBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjA7IiwibWFyZ2luLWxlZnQ6LTIxcHg7IHotaW5kZXg6KzE7Il0sIiBkaXYiOiJmb250LXNpemU6NjAlOyBvcGFjaXR5OjAuNTsgdGV4dC1hbGlnbjpjZW50ZXI7IGxpbmUtaGVpZ2h0OjMuMmVtOyB3aWR0aDoxMDAlOyJ9LCIgdWwiOnsiLnVpLWF1dG9jb21wbGV0ZSI6Im1heC13aWR0aDpjYWxjKDEwMCUgLSAxMTVweCk7In19LHBhcmFtczp7c3RyaWN0OiEwfX0sJGRvYzp7aWQ6ImN3LlBob3Rvbi4kZG9jIixsYW5nOnt9LGhhc2g6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kYXRhLmlzTmV3P2N3LmxpYi5yYW5kOCgpOmN3LmxpYi5jcmMyKHRoaXMuZGF0YS5kb2MpfSxwYXJhbXM6e3Jlc3R5bGU6MjUsc3RyaWN0OiEwfSxpY29Dc3M6ZnVuY3Rpb24oeCl7cmV0dXJuIl91c2VycyI9PXgucGF0aFswXT8iZmktdG9yc28gZnM5MCI6eC5wYXRoWzFdLnN0YXJ0c1dpdGgoIl9kZXNpZ24iKT8iZmktcGFnZS1maWxsZWQgZnM5MCI6Il9uZXciPT14LnBhdGhbMV0/ImZpLXBhZ2UtYWRkIGZzOTAiOiJmaS1wYWdlIGZzOTAifSx0aXRsZTpmdW5jdGlvbigpe3ZhciB4PXRoaXMsYT14LmRhdGEsYj1hLnBhdGgsYz1hLmRvYy5faWQsZD1iWzBdO3JldHVybiAyPT1iLmxlbmd0aCYmIl92ZXJzaW9ucyI9PWJbMV0/Il9ub2RlL19sb2NhbC9fdmVyc2lvbnMiOihjPSJfZGVzaWduLyI9PWMudG8oOCk/Il9kIitjLmZyb20oNyk6Il91c2VycyI9PWQ/Yy5mcm9tKDE3KTpjLFt4LnRydW5jKGQsKDI4LWMubGVuZ3RoKS5jbGFtcCgxMCwxNikpLCLigIkv4oCJIixjLGEucmV2PyLigIlA4oCJIithLnJldjoiIl0uam9pbigiIikpfSxtYXRjaDpmdW5jdGlvbih4LGEpe2lmKGEpcmV0dXJuIl9uZXciPT14WzFdP3t0aXRsZToiTmV3IGRvYyIsYXBwRGF0YTp7aXNOZXc6ITAsZG9jOiJfdXNlcnMiPT14WzBdP3tfaWQ6Im9yZy5jb3VjaGRiLnVzZXI6X3VzZXJuYW1lXyIsdHlwZToidXNlciIsbmFtZToiX3VzZXJuYW1lXyIscGFzc3dvcmQ6Il9wYXNzd29yZF8iLHJvbGVzOltdfTp4WzBdPT10aGlzLlJlcGxpY2F0b3JEQj97X2lkOiIiLHNvdXJjZToiIix0YXJnZXQ6IiIsY3JlYXRlX3RhcmdldDohMSxjb250aW51b3VzOiExLGRvY19pZHM6W10sZmlsdGVyOiIiLHVzZXJfY3R4OntuYW1lOiIiLHJvbGVzOltdfSxxdWVyeTp7fX06e319fToyPT14Lmxlbmd0aCYmIl92ZXJzaW9ucyI9PXhbMV0/e3RpdGxlOiJfbm9kZS9fbG9jYWwvX3ZlcnNpb25zIix0eXBlOiJkb2MifToyIT14Lmxlbmd0aHx8Il8iPT14WzFdWzBdJiYhL15fKGRlc2lnbnxsb2NhbClcLy8udGVzdCh4WzFdKT8zIT14Lmxlbmd0aHx8Il8iPT14WzFdWzBdJiYhL15fZGVzaWduXC8vLnRlc3QoeFsxXSl8fCJfIiE9eFsyXVswXT92b2lkIDA6e3RpdGxlOnRoaXMudHJ1bmMoeFswXSwxMCkrIuKAiS/igIkiK3hbMV0sdHlwZToiZG9jIixhcHBEYXRhOntyZXY6eFsyXS5yZXBsYWNlKC9eXEQrLywiIikscmV2bGFzdDp4WzJdLnJlcGxhY2UoL15cRCsvLCIiKX19Ont0aXRsZTp0aGlzLnRydW5jKHhbMF0sMTApKyLigIkv4oCJIit4WzFdLHR5cGU6ImRvYyJ9fSxkYXRhOntpc05ldzohMSxwYXRoOltdLHJldjoiIixyZXZsYXN0OiIiLHJldnN0YXJ0OiIiLHNlYXJjaDoiIixyZWFkb25seTohMSxkb2M6e19pZDoiIn0sY29uZmxpY3RzOltdLHJldnM6W10sYXR0czohMX0sRG9jOltdLFJUOmZ1bmN0aW9uKHgpe3JldHVybiBudWxsPT14P3RoaXM6T2JqZWN0LmlzQXJyYXkoeCk/Y3cubGliLmdldHJlZih0aGlzLHgpOnRoaXNbeF19LGluaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPWEuZGF0YTtyZXR1cm4geC5hZGRDbGFzcygibnciKSxiLnBhdGgubGVuZ3RoPigiX2Rlc2lnbiI9PWIucGF0aFsxXT8zOjIpJiYoYi5yZXY9Yi5wYXRoLmxhc3QoKS5yZXBsYWNlKC9eXEQrLywiIikpLGIucmV2c3RhcnQ9Yi5yZXYsMj09Yi5wYXRoLmxlbmd0aCYmIl92ZXJzaW9ucyI9PWIucGF0aFsxXSYmKGIucmVhZG9ubHk9ITApLGEuSFRNTC5IaXN0b3J5Um93PWEuUGhvKCJDb21waWxlVCIpKGEuSFRNTC5IaXN0b3J5Um93KSxhLkhpc3RvcnkuaW5pdChhLHgpLHguaHRtbCgnPGRpdiBjbGFzcz0idGFjIGZzMTIwIGdyYXkgcHQxNTAgdzEwMHAiPntUWFRfTE9BRElOR308L2Rpdj4nLmFzc2lnbihhLmxhbmcpKSxiLnJlYWRvbmx5JiZ4LmFkZENsYXNzKCJyZWFkb25seWpzb24iKSxhLkdldERvYygpLnRoZW4oZnVuY3Rpb24oKXtpZihiLmRvYy5fZGVsZXRlZCYmYi5kb2MuX2F0dGFjaG1lbnRzKXJldHVybiBhLkdldEF0dHMoITApLnRoZW4oZnVuY3Rpb24oeCl7Yi5kb2MuX2F0dGFjaG1lbnRzPXguX2F0dGFjaG1lbnRzfSl9KS50aGVuKGZ1bmN0aW9uKCl7eC5odG1sKGEuSFRNTC5BcHAuYXNzaWduKGEubGFuZykpfSkudGhlbihmdW5jdGlvbigpe2EuQnVzeSghMSl9LmRlYm91bmNlKDEwMCkpfSx1aTp7IiNhcHAtdGl0bGUiOntkZWxheToxMDUsYmluZDpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YS5wMnUsYz14LmRvYy5faWQsZD0iIixlPSJfbm9kZS9fbG9jYWwvX3ZlcnNpb25zIj09eC5wYXRoLmpvaW4oIi8iKT8iX25vZGUvX2xvY2FsL192ZXJzaW9ucyI6IiI7ZD0oYz1lfHxjfHx4LnBhdGhbMV0rKCJfZGVzaWduIj09eC5wYXRoWzFdPyIvIit4LnBhdGhbMl06IiIpKS5lc2NhcGVIVE1MKCk7dmFyIGY9JzxhIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0idGRuIiBocmVmPSJ7MX0iIHRpdGxlPSJ7M30iPnsyfTwvYT4nLmFzc2lnbihlPyIvIitlOlsiIixiKHgucGF0aFswXSksYihjKV0uam9pbigiLyIpLmVzY2FwZUhUTUwoKSsoeC5yZXY/Ij9yZXY9Iit4LnJldjoiIiksYS50YWdFbW9qaShkKSx4LmRvYy5fcmV2P2EubGFuZy5USVBfRE9DSlNPTi5hc3NpZ24oYy5sZW5ndGg+MTA/ZDoiZG9jIik6IiIpO3JldHVybic8c3BhbiBjbGFzcz0iZnMxNTAgbGgxMzAgeGdyYXkgbXQtMSB7Mn0iPnsxfTwvc3Bhbj4nLmFzc2lnbih4LmRvYy5fcmV2P2Y6YS50YWdFbW9qaShkKSx4LmRvYy5fZGVsZXRlZD8icmVkLXN0cmlrZSI6IiIpfSx3YXRjaDpbIiNhcHAtcmV2IiwiI2pzZWRpdG9yIl19LCIjYXBwLXJldiI6e2luaXQ6ZnVuY3Rpb24oeCl7dGhpcy5SZXZzTGlzdCgiI2FwcC1yZXYiKX0sYmluZDpmdW5jdGlvbih4LGEpe3JldHVybiBudWxsIT1hJiYoeC5yZXYhPWEmJih4LmF0dHM9ITEpLHgucmV2PWEpLHgucmV2fSxjc3M6eyI6ZGlzYWJsZWQiOmZ1bmN0aW9uKHgpe3JldHVybi9eX2xvY2FsXC8vLnRlc3QoeC5kb2MuX2lkKXx8dm9pZCAwIT09eC5kb2MuX2RlbGV0ZWR9fX0sIiNhcHAtc2VhcmNoIjp7ZGVsYXk6MjAsYmluZDpmdW5jdGlvbih4LGEpe3JldHVybiBudWxsPT1hP3guc2VhcmNoOih4LnNlYXJjaD1hLmxlbmd0aDwzPyIiOmEsdGhpcy5Eb2NbMF0mJnRoaXMuRG9jWzBdLnNlYXJjaCE9eC5zZWFyY2gmJnRoaXMubXkuZmluZCgiI2pzb24tc2VhcmNoIikudmFsKHguc2VhcmNoKS50cmlnZ2VyKCJjaGVjayIpLGEpfSxjc3M6eyJteS1zZWFyY2giOi9eLnszLH0kL319LCIjanNlZGl0b3IiOntkZWxheToxMDAsY2hlY2s6ITEsbGlzdDoiPGRpdj48L2Rpdj4iLG1lcmdlOiExLGluaXQ6ZnVuY3Rpb24oeCl7dGhpcy5uaWNlU2Nyb2xsKHgpfSxpZDpmdW5jdGlvbih4KXtyZXR1cm4geC5kb2MuX2lkfHx4Ll9pZH0saGFzaDpmdW5jdGlvbih4KXtyZXR1cm4gY3cubGliLnNkYm0oeC5kb2MpfSxtYW5pZmVzdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YS5kYXRhLnBhdGgsYz0iX25vZGUvX2xvY2FsL192ZXJzaW9ucyI9PWIuam9pbigiLyIpPyJfbm9kZS9fbG9jYWwvX3ZlcnNpb25zIjoiIjtyZXR1cm4gJC5leHRlbmQoITAse30sYS5QaG8oIkVkIikuanNvbnRyZWUsYS5FeHRFZCx7TVJvb3Q6ZnVuY3Rpb24oKXtyZXR1cm4gYS5teS5yb290KCl9LEdldEF0dHM6YS5HZXRBdHRzLGNtZFNhdmU6YS5jbWRTYXZlLGRhdGE6e2xhYmVsV2lkdGg6Yz8xOTA6Il9yZXBsaWNhdG9yIj09YlswXT8xODA6Il9kIj09YlsxXS50bygyKT8xNjU6MTUwLHJlYWRvbmx5OmEuZGF0YS5yZWFkb25seSxfaWQ6Y3x8eC5kb2MuX2lkfX0pfSxiaW5kOiJ0aGlzLkRvYyJ9LCIjc3RhdGUtcHJveHkiOntkZWxheTo1MCxiaW5kOmZ1bmN0aW9uKHgsYSl7aWYobnVsbD09YSl7dmFyIGI9dGhpczt4LnJldj94LnBhdGgubGFzdCgpIT14LmRvYy5faWQ/eC5wYXRoW3gucGF0aC5sZW5ndGgtMV09Il8iK3gucmV2OngucGF0aC5wdXNoKCJfIit4LnJldik6eC5wYXRoLmxhc3QoKSE9eC5kb2MuX2lkJiYoeC5wYXRoLmxlbmd0aD0oeC5wYXRoLmxlbmd0aC0xKS5jbGFtcCgyLDYpKSx4LnJldiE9eC5yZXZsYXN0JiYoJC5teS5yYWRpbygicGF0aGNoYW5nZSIse2lkOngudGFiaWQscGF0aDp4LnBhdGgsdGl0bGU6Yi50aXRsZSgpfSkseC5yZXZsYXN0Mj14LnJldmxhc3QseC5yZXZsYXN0PXgucmV2LGIuR2V0RG9jKCEwLCEwKS50aGVuKGZ1bmN0aW9uKCl7eC5yZXZsYXN0Mj1udWxsfSkuYWx3YXlzKGZ1bmN0aW9uKCl7Yi5CdXN5KCExKX0uZGVib3VuY2UoNTApKSl9fSx3YXRjaDoiI2FwcC1yZXYiLGxpc3Rlbjp7ZGJkZWxldGVkOmZ1bmN0aW9uKHgsYSl7aWYoYT09eC5wYXRoWzBdKXt2YXIgYj10aGlzOyhmdW5jdGlvbigpe2IubXkucm9vdCgpLnRyaWdnZXIoInRhYmNsb3NlIix7dGFiaWQ6eC50YWJpZCxlbmZvcmNlOiEwfSl9KS5kZWJvdW5jZShOdW1iZXIucmFuZG9tKDEwLDUwKSkoKX19fX0sIiNidG4tcm9vdCI6e2RlbGF5OjEwMCxiaW5kOmZ1bmN0aW9uKHgsYSxiKXt2YXIgYz10aGlzLnAydTtiLmF0dHIoImhyZWYiLCIjIitjKHgucGF0aFswXSkpLGIuYXR0cigidGl0bGUiLHRoaXMubGFuZy5USVBfVVAuYXNzaWduKHgucGF0aFswXSkpfX0sIiNidG4tcmVsb2FkIjp7YmluZDpmdW5jdGlvbih4LGEpe2lmKG51bGwhPWEpe3ZhciBiPXRoaXM7Yi5HZXREb2MoITAsITApLmFsd2F5cyhmdW5jdGlvbigpe2IuQnVzeSghMSl9LmRlYm91bmNlKDUwKSl9fSxsaXN0ZW46e2ZpbGV1cGRhdGU6ZnVuY3Rpb24oeCxhKXtpZigheC5yZXYmJk9iamVjdC5pc09iamVjdChhKSYmYS5kYj09eC5wYXRoWzBdJiZhLmRvYz09eC5kb2MuX2lkJiZhLnJldj09eC5kb2MuX3Jldil7dmFyIGI9dGhpcztiLkdldERvYyghMCwhMCkuYWx3YXlzKGZ1bmN0aW9uKCl7Yi5CdXN5KCExKX0uZGVib3VuY2UoNTApKX19fSxjc3M6eyI6ZGlzYWJsZWQiOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIXguZG9jfHwheC5kb2MuX3Jldn19fSwiI2J0bi1kbHppcCI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtudWxsIT1hJiZ0aGlzLlJlYWRBbmRaaXAoKX0sY3NzOnsiOmRpc2FibGVkIjpmdW5jdGlvbih4LGEpe3JldHVybiF4LmRvY3x8IXguZG9jLl9yZXZ9fX0sIiNidG4tZG9jLWRlbCI6e2RlbGF5OjIwLGJpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzO251bGwhPWEmJihiLkJ1c3koITApLGIuRGVsRG9jKCkuYWx3YXlzKGZ1bmN0aW9uKCl7Yi5CdXN5KCExKX0uZGVib3VuY2UoNTApKSl9LGNzczp7IjpkaXNhYmxlZCI6ZnVuY3Rpb24oeCxhKXtpZih4LmRvYy5fZGVsZXRlZClyZXR1cm4hMDt2YXIgYj14LmNvbmZsaWN0c3x8W10sYz14LnJldnMmJngucmV2c1swXSYmeC5yZXZzWzBdPT14LmRvYy5fcmV2O3JldHVybiBiLmxlbmd0aD8hYyYmLTE9PWIuaW5kZXhPZih4LmRvYy5fcmV2fHwiIik6ISgvXl9sb2NhbFwvLy50ZXN0KHguZG9jLl9pZCl8fHguZG9jLl9yZXYmJmMpfSwic2VsZjpoaWRlIjpmdW5jdGlvbih4KXtyZXR1cm4gdm9pZCAwIT09eC5kb2MuX2RlbGV0ZWR9fSx3YXRjaDpbIiNhcHAtcmV2Il19LCIjYnRuLWRvYy1kaWZmIjp7YmluZDpmdW5jdGlvbih4LGEsYil7dmFyIGM9dGhpcy5wMnU7Yi5hdHRyKCJocmVmIiwiI3sxfS9fZGlmZi97Mn0vezN9L3s0fSIuYXNzaWduKGMoeC5wYXRoWzBdKSxjKHgucGF0aFsxXSksIl8iKyh4LnJldnx8IiIpLCJfIikpfSxjc3M6eyJzZWxmOmhpZGUiOmZ1bmN0aW9uKHgpe3JldHVybiB4LmNvbmZsaWN0cy5sZW5ndGgreC5yZXZzLmxlbmd0aDwyfHwvXl9sb2NhbFwvLy50ZXN0KHguZG9jLl9pZCl9fSx3YXRjaDpbIiNhcHAtcmV2Il19LCIjYnRuLWRvYy1zYXZlIjp7ZGVsYXk6MTA1LGJpbmQ6ZnVuY3Rpb24oeCxhKXtudWxsIT1hJiZ0aGlzLmNtZFNhdmUoKX0sY3NzOnsiOmRpc2FibGVkIjpmdW5jdGlvbih4KXtyZXR1cm4hIXguZG9jLl9kZWxldGVkfX0sd2F0Y2g6WyIjanNlZGl0b3IiXX0sIiNidG4tZG9jLXNhdmVhcyI6e2RlbGF5OjEwNSxiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGIsYz10aGlzO2Z1bmN0aW9uIGQoeCl7ZnVuY3Rpb24gYSgpe09iamVjdC5rZXlzKHguZG9jLl9hdHRhY2htZW50c3x8e30pLmZvckVhY2goZnVuY3Rpb24oYSl7eC5kb2MuX2F0dGFjaG1lbnRzW2FdPU9iamVjdC5zZWxlY3QoeC5kb2MuX2F0dGFjaG1lbnRzW2FdLFsiY29udGVudF90eXBlIiwiZGF0YSJdKX0pLGMuQnVzeSghMSksYy5QaG8oKS5Td2l0Y2goW3gucGF0aFswXSx4LmRvYy5faWRdLG51bGwse2lzTmV3OiEwLHBhdGg6W3gucGF0aFswXSx4LmRvYy5faWRdLGRvYzpPYmplY3QubWVyZ2Uoe19pZDp4LmRvYy5faWR9LE9iamVjdC5yZWplY3QoY3cubGliLmRyeSh4LmRvYyksWyJfcmV2IiwiX2lkIl0pKX0pfWMuQnVzeSghMCkseC5kb2MuX2F0dGFjaG1lbnRzJiZPYmplY3Quc2l6ZSh4LmRvYy5fYXR0YWNobWVudHMpJiZPYmplY3QudmFsdWVzKHguZG9jLl9hdHRhY2htZW50cykuZmlsdGVyKGZ1bmN0aW9uKHgpe3JldHVybiF4LmRhdGF9KS5sZW5ndGg/Yy5HZXRBdHRzKCEwKS50aGVuKGZ1bmN0aW9uKGIpe3ZhciBjPWIuX2F0dGFjaG1lbnRzO2lmKGMpe3guZG9jLl9hdHRhY2htZW50c3x8KHguZG9jLl9hdHRhY2htZW50cz17fSk7dmFyIGQ9eC5kb2MuX2F0dGFjaG1lbnRzO09iamVjdC5rZXlzKGMpLmZvckVhY2goZnVuY3Rpb24oeCl7ZFt4XSYmIWRbeF0uZGF0YSYmKGRbeF09T2JqZWN0LnNlbGVjdChjW3hdLFsiY29udGVudF90eXBlIiwiZGF0YSJdKSl9KX1lbHNlIGQ9eC5kb2MuX2F0dGFjaG1lbnRzfHx7fTtPYmplY3Qua2V5cyhkKS5mb3JFYWNoKGZ1bmN0aW9uKHgpe2RbeF0uZGF0YXx8ZGVsZXRlIGRbeF19KSxhKCl9KTphKCl9bnVsbCE9YSYmYy5teS5tb2RhbCgiI2J0bi1kb2Mtc2F2ZWFzIix7cm9vdDpjLm15LnJvb3QoKSxzY3JlZW46ITAsZ2xvYmFsOiEwLGVzYzohMCxlbnRlcjohMSxjbG9zZTpjLlBobygibGFuZyIpLkJUTl9YRExHLHdpZHRoOjQ1MCx6OjE5OTUsY3NzOiJwMjAgcHQxNSIsbWFuaWZlc3Q6JC5leHRlbmQoITAse1JlcTpjLlJlcSxQaG86Yy5QaG8sUlQ6Yy5SVH0sYy5OZXdEb2NUZ3QpLGRhdGE6T2JqZWN0LmNsb25lKGMuZGF0YSwhMCl9KS50aGVuKGZ1bmN0aW9uKHgpe2I9eH0pLnRoZW4oYy5BcHBseUVkcykudGhlbihmdW5jdGlvbigpe2QoYil9KX0sY3NzOnsic2VsZjpoaWRlIjpmdW5jdGlvbih4KXtyZXR1cm4geC5pc05ld30sIjpkaXNhYmxlZCI6ZnVuY3Rpb24oeCl7cmV0dXJuISF4LmRvYy5fZGVsZXRlZH19LHdhdGNoOlsiI2pzZWRpdG9yIl19LCIjZG9jLWhpc3RvcnkiOntkZWxheToyMCxpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj0oYS5kYXRhLE9iamVjdC5pc0FycmF5LE9iamVjdC5pc09iamVjdCxhLnRhZ0Vtb2ppKTthLm5pY2VTY3JvbGwoeCkseC5saXN0KHtkYXRhOmEuSGlzdG9yeS5zdGVwcyxkZWxheTowLGNodW5rOjUwLHNvcnRCeTpudWxsLGlkOmZ1bmN0aW9uKHgpe3JldHVybiB4LmlkfSxoYXNoOmZ1bmN0aW9uKHgpe3JldHVybiB4LmlkK3guaGFzaH0sdGVtcGxhdGU6ZnVuY3Rpb24oeCxjKXtyZXR1cm4gYS5IVE1MLkhpc3RvcnlSb3cuYXNzaWduKHtwYXRoOmIoeC5zcGF0aCksaWNvOiJpbnMiPT14Lm9wPyJwbHVzIjoiZGVsIj09eC5vcD8ibWludXMiOiJjaGVjayIsaGFzaDp4Lmhhc2gsc3ZhbDpiKHguc3ZhbCksb3A6eC5vcCx0aXA6WyJDbGljayB0byB1bmRvICIrKCJpbnMiPT14Lm9wPyJpbnNlcnRpb24uIjoiZGVsIj09eC5vcD8iZGVsZXRpb24uIjoiZWRpdHMuIiksImlucyIhPXgub3A/IlJlc3RvcmVkIHZhbHVlOiAiK3gudmFsLnRydW5jYXRlKDE1MCkuZXNjYXBlSFRNTCgpOm51bGxdLmNvbXBhY3QoKS5qb2luKCJcbiIpfSl9fSkseC5vbigiY2xpY2subXkiLCIuaC1yb3ciLGZ1bmN0aW9uKHgpe3ZhciBiPSQoeC5jdXJyZW50VGFyZ2V0KS5pbmRleCgpO2EuSGlzdG9yeS51bmRvKGIpfSl9LGJpbmQ6ZnVuY3Rpb24oeCxhLGIpe251bGwhPWEmJihiLmxpc3QoImRhdGEiLHRoaXMuSGlzdG9yeS5zdGVwcyksYlswXS5zY3JvbGxUb3A9MWU2KX0sd2F0Y2g6WyIjYnRuLWhpc3RvcnktY2xlYXIiXX0sIiNzdHlsZS1oaXN0b3J5Ijp7ZGVsYXk6MTAwLGJpbmQ6ZnVuY3Rpb24oKXt2YXIgeD10aGlzLGE9Ii5teS1mb3JtLSIreC5teS5yb290KCkubXkoKS5jaWQrJyAuaC1yb3dbZGF0YS1wYXRoPSJ7MX0iXTpob3Zlcn4uaC1yb3dbZGF0YS1wYXRofD0iezF9Il17YmFja2dyb3VuZC1jb2xvcjogI2VmZjZmZjsgb3BhY2l0eTowLjU7fScsYj17fTtyZXR1cm4geC5IaXN0b3J5LnN0ZXBzLmZvckVhY2goZnVuY3Rpb24oeCl7Ylt4Lmhhc2hdPTF9KSxPYmplY3Qua2V5cyhiKS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIGEuYXNzaWduKHgpfSkuam9pbigiXG4iKX0sd2F0Y2g6WyIjZG9jLWhpc3RvcnkiLCIjYnRuLWhpc3RvcnktY2xlYXIiXX0sIiNlbXB0eS1oaXN0b3J5Ijp7ZGVsYXk6MjAsY3NzOntoaWRlOmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLkhpc3Rvcnkuc3RlcHMubGVuZ3RofX0sd2F0Y2g6WyIjZG9jLWhpc3RvcnkiXX0sIiNidG4taGlzdG9yeS1jbGVhciI6e2RlbGF5OjEwLGJpbmQ6ZnVuY3Rpb24oeCxhKXtudWxsIT1hJiZ0aGlzLkhpc3RvcnkuY2xlYXIoITApfSxjc3M6eyI6ZGlzYWJsZWQiOmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuSGlzdG9yeS5zdGVwcy5sZW5ndGh9fSx3YXRjaDpbIiNkb2MtaGlzdG9yeSJdfSwiI2J0bi1oaXN0b3J5LXVuZG8iOntkZWxheToxMCxiaW5kOmZ1bmN0aW9uKHgsYSl7bnVsbCE9YSYmdGhpcy5jbWRVbmRvKCl9LGNzczp7IjpkaXNhYmxlZCI6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5IaXN0b3J5LnN0ZXBzLmxlbmd0aH19LHdhdGNoOlsiI2RvYy1oaXN0b3J5Il19fSxkaWU6ZnVuY3Rpb24oeCl7dmFyIGE9eC5maW5kKCIjanNlZGl0b3IiKS5nZXROaWNlU2Nyb2xsOyJmdW5jdGlvbiI9PXR5cGVvZiBhJiZhKCkucmVtb3ZlKCl9LGNtZFVuZG86ZnVuY3Rpb24oKXt0aGlzLkhpc3Rvcnkuc3RlcHMubGVuZ3RoJiZ0aGlzLkhpc3RvcnkudW5kbyh0aGlzLkhpc3Rvcnkuc3RlcHMubGVuZ3RoLTEpfSxjbWRTYXZlOmZ1bmN0aW9uKCl7dmFyIHg9dGhpcyxhPXguZGF0YTthLnJlYWRvbmx5fHxhLmRvYy5fZGVsZXRlZHx8eC5BcHBseUVkcygpLnRoZW4oZnVuY3Rpb24oKXt4LlNhdmVBbGwoKS5hbHdheXMoZnVuY3Rpb24oKXt4LkJ1c3koITEpfS5kZWJvdW5jZSg1MCkpfSl9LEhUTUw6e0FwcDonPGRpdiBpZD0iY29sLWVkIiBjbGFzcz0iZGliIHZhdCB3biI+PGRpdiBpZD0iYS1oZWFkIiBjbGFzcz0iYXBwLWhlYWQgbncgcHQxOCBwbDIwIHByMjAgbGgxNjAiPjxkaXYgY2xhc3M9ImZyIHcxNTUgZnM5NSI+PGRpdiBjbGFzcz0iZmktbWFnbmlmeWluZy1nbGFzcyBibHVlIG81MCBmczk1IiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB6LWluZGV4OiArMTsgbGVmdDogOHB4O3RvcDogMC4yZW07Ij48L2Rpdj48aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImFwcC1zZWFyY2giIGNsYXNzPSJ1aS1zZWFyY2ggdzEwMHAgbWwwIG1yMCBtdDAgcHIxMCIgc3BlbGxjaGVjaz0iZmFsc2UiIGF1dG9jb21wbGV0ZT0ib2ZmIiBwbGFjZWhvbGRlcj0ie1BMQ19TRUFSQ0h9IiBzdHlsZT0iYmFja2dyb3VuZC1pbWFnZTpub25lO3BhZGRpbmctcmlnaHQ6MTlweCFpbXBvcnRhbnQ7Ij48c3BhbiBjbGFzcz0iZmkteCBmczgwIGRpYiB2YXQgcHQyIGJsdWUgdWktc2VhcmNoLWNsZWFyIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LTE5cHghaW1wb3J0YW50OyJvbmNsaWNrPSIkKHRoaXMpLnNpYmxpbmdzKFwnaW5wdXQ6ZXEoMClcJykudmFsKFwnXCcpLmJsdXIoKSI+PC9zcGFuPjwvZGl2PjxhIGlkPSJidG4tcm9vdCIgY2xhc3M9InczNiBidXR0b24gbXIyIHRkbiBkaWIgdmF0IHBsMCBwcjAgZnc2MDAgcm9oaWRlIiB0aXRsZT0iREIgZG9jIGxpc3QiPi4uLzwvYT48YnV0dG9uIGlkPSJidG4tcmVsb2FkIiBjbGFzcz0idzM2IG1yMiIgdGl0bGU9IntUSVBfUkVMT0FEfSI+PHNwYW4gY2xhc3M9ImZpLWxvb3AiPjwvc3Bhbj48L2J1dHRvbj48YnV0dG9uIGlkPSJidG4tZGx6aXAiIGNsYXNzPSJ3MzYgbXI3IHJvaGlkZSIgdGl0bGU9IntUSVBfQlROX0RMWklQfSI+PHNwYW4gY2xhc3M9ImZpLWRvd25sb2FkIj48L3NwYW4+PC9idXR0b24+PGRpdiBpZD0iYXBwLXRpdGxlIiBjbGFzcz0iZGliIHZhdCBlbGwgbXI3IG53Ij48L2Rpdj48ZGl2IGNsYXNzPSJkaWIgdmF0IHcxODAgbXI2IHJvaGlkZSI+PGlucHV0IGlkPSJhcHAtcmV2IiB0eXBlPSJ0ZXh0IiBjbGFzcz0idzEwMHAgZnMxMTAgdmF0Ij48L2Rpdj48ZGl2IGNsYXNzPSJudyBkaWIgdmF0Ij48YnV0dG9uIGlkPSJidG4tZG9jLXNhdmUiIGNsYXNzPSJncmVlbiBtcjIgcm9oaWRlIj57QlROX1NBVkV9PC9idXR0b24+PGJ1dHRvbiBpZD0iYnRuLWRvYy1zYXZlYXMiIGNsYXNzPSJ0ZWFsIG1yMiByb2hpZGUgcHIwNWVtIj57QlROX1NBVkVBU308L2J1dHRvbj48YnV0dG9uIGlkPSJidG4tZG9jLWRlbCIgY2xhc3M9InJlZCBtcjIgcm9oaWRlIj57QlROX0RFTH08L2J1dHRvbj48YSBocmVmPSIiIGlkPSJidG4tZG9jLWRpZmYiIGNsYXNzPSJoaWRlIGJ1dHRvbiB0ZG4gdmF0IHJvaGlkZSIgc3R5bGU9ImxpbmUtaGVpZ2h0OjEuNGVtOyI+e0JUTl9ESUZGfTwvYT48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJwYW5lbGhlaWdodCBmZWF0aGVyIj48ZGl2IGlkPSJqc2VkaXRvciIgY2xhc3M9InBhbmVsaGVpZ2h0IHBsMjAgcHIyMCBwdDEwIHBiMTYiIHN0eWxlPSJvdXRsaW5lOm5vbmU7Ij48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGlkPSJjb2wtaGlzdG9yeSIgY2xhc3M9ImRpYiB2YXQgeGdyYXkgd24gcm9oaWRlIj48ZGl2IGlkPSJoLWhlYWQiIGNsYXNzPSJhcHAtaGVhZCBudyBwdDE4IHByMjAgbGgxNjAiPjxkaXYgY2xhc3M9ImZyIj48YnV0dG9uIGlkPSJidG4taGlzdG9yeS11bmRvIiBjbGFzcz0ibGgxNDAgbXIyIj57QlROX0hJU1RfVU5ET308L2J1dHRvbj48YnV0dG9uIGlkPSJidG4taGlzdG9yeS1jbGVhciIgY2xhc3M9ImxoMTQwIj57QlROX0hJU1RfQ0xFQVJ9PC9idXR0b24+PC9kaXY+PHNwYW4gY2xhc3M9ImZzMTUwIGRpYiB2YXQgcGw1IG85MCBwdDMiPntUWFRfSElTVF9USVRMRX08L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0icGFuZWxoZWlnaHQgZmVhdGhlciI+PGRpdiBpZD0iZW1wdHktaGlzdG9yeSIgY2xhc3M9ImhpZGUgcGFiYyBwbDUgcHQ4IGdyYXkiIHN0eWxlPSJ0b3A6MDsgbGVmdDowOyI+e1RYVF9ISVNUX0VNUFRZfTwvZGl2PjxkaXYgaWQ9ImRvYy1oaXN0b3J5IiBjbGFzcz0icGFuZWxoZWlnaHQgcHIyMCBwdDEwIHBiMTYiIHN0eWxlPSJvdXRsaW5lOm5vbmU7Ij48L2Rpdj48L2Rpdj48c3R5bGUgaWQ9InN0eWxlLWhpc3RvcnkiIGNsYXNzPSJoaWRlIj48L3N0eWxlPjxkaXYgaWQ9InNjcm9sbC1wcm94eSIgY2xhc3M9ImhpZGUiPjwvZGl2PjwvZGl2PjxkaXYgaWQ9InN0YXRlLXByb3h5IiBjbGFzcz0iaGlkZSI+PC9kaXY+PGRpdiBpZD0iemlwLXRlc3RlciIgY2xhc3M9ImhpZGUiPjwvZGl2PicsSGlzdG9yeVJvdzonPGRpdiBjbGFzcz0iaC1yb3cgdzEwMHAgY3Agb3Ate29wfSIgdGl0bGU9Int0aXB9IiBkYXRhLXBhdGg9IntoYXNofSI+PGRpdiBjbGFzcz0iaC11YnRuIHBhYmMgcGw0IHB0MyBmczk1IGJsdWUyIiBzdHlsZT0idG9wOjA7IHJpZ2h0OjA7IHRyYW5zZm9ybTpyb3RhdGVZKDE4MGRlZyk7Ij48c3BhbiBjbGFzcz0iZmktcmVmcmVzaCI+PC9zcGFuPjwvZGl2PjxzcGFuIGNsYXNzPSJ3MTUgZGliIHZhdCBtbC0xNSBvNDAgZnM4NSBtdDEgZmkte2ljb30iPjwvc3Bhbj48ZGl2IGNsYXNzPSJtdzEwMHAgdGRuIGRpYiBudyBvaCBlbGwgcHNldWRvbGluayI+e3BhdGh9IDwvZGl2PjxkaXYgY2xhc3M9InRkaSBtdzEwMHAgZnM5MCBsaDEzMCBvNzAgZGliIHZhbCBudyBvaCBlbGwiPntzdmFsfTwvZGl2PjwvZGl2Pid9LEhpc3Rvcnk6e2luaXQ6ZnVuY3Rpb24oeCl7T2JqZWN0LmtleXMoeC5IaXN0b3J5KS5mb3JFYWNoKGZ1bmN0aW9uKGEpeyJmdW5jdGlvbiI9PXR5cGVvZiB4Lkhpc3RvcnlbYV0mJih4Lkhpc3RvcnlbYV09eC5IaXN0b3J5W2FdLmJpbmQoeCkpfSkseC5IaXN0b3J5LmNsZWFyKCl9LGVtaXQ6ZnVuY3Rpb24oeCxhLGIsYyl7dmFyIGQ9dGhpcyxlPWQuSGlzdG9yeSxmPWQuRG9jWzBdLmRvYyxnPSEwLGg9eC5mbGF0KCksaT1bXSxqPU9iamVjdC5pc09iamVjdCxrPU9iamVjdC5pc0FycmF5LGw9KGUuaGFzaCxlLnJhbmQpO2lmKGooYSkmJmooYikpe3ZhciBtPVthLGJdLnJlZHVjZShmdW5jdGlvbih4LGEsYil7cmV0dXJuIE9iamVjdC5rZXlzKGEpLmZvckVhY2goZnVuY3Rpb24oYyl7eFtjXXx8KHhbY109W3ZvaWQgMCx2b2lkIDBdKSx4W2NdW2JdPWN3LmxpYi5zZGJtKGFbY10pfSkseH0se30pO09iamVjdC52YWx1ZXMobSkuZmlsdGVyKGZ1bmN0aW9uKHgpe3JldHVybiB4WzBdIT14WzFdfSkubGVuZ3RoPDEwJiYoT2JqZWN0LmtleXMobSkuZm9yRWFjaChmdW5jdGlvbih4KXt2YXIgYz1tW3hdO2lmKGNbMF0hPWNbMV0pe3ZhciBkPW51bGw9PWNbMF0/ImlucyI6dm9pZCAwPT09Y1sxXT8iZGVsIjoidXBkIjtpLnB1c2goW2guY29uY2F0KHgpLGQsdm9pZCAwPT09Y1swXT9iW3hdOmFbeF0sImRlbCI9PWQ/bnVsbDpiW3hdXSl9fSksZz0hMSl9aWYoZyl7dmFyIG49dm9pZCAwPT09YT8iaW5zIjp2b2lkIDA9PT1iPyJkZWwiOiJ1cGQiO2kucHVzaChbaCxuLCJpbnMiPT1uP2I6YSwiZGVsIj09bj9udWxsOmJdKX1mdW5jdGlvbiBvKHgsYSxiLGQpe3ZhciBnPWN3LmxpYi5nZXRyZWYoZix4LnNsaWNlKDEpLnRvKC0xKSksaD1rKGcpLGk9ImRlbCI9PWEmJmg/KytlLmRlbHM6MCxqPXgubGVuZ3RoLG09SlNPTi5zdHJpbmdpZnkoYixudWxsLCIgIiksbj1udWxsO2lmKCFoKXt2YXIgbz1PYmplY3Qua2V5cyhnKSxwPW8uaW5kZXhPZih4Lmxhc3QoKSk7ImRlbCIhPWE/bj1bcD4wP29bcC0xXTpudWxsLHA9PW8ubGVuZ3RoLTE/bnVsbDpwPi0xP29bcCsxXTpudWxsXTpjJiYobj1jKX12YXIgcT1lLnJlaGFzaCh7aWQ6bCgpLHRzOkRhdGUubm93KCkscGF0aDp4LGN0eDpuLGhhc2g6IiIsb3A6YSx2YWw6bSxkZWw6aSxyb3c6aCxzcGF0aDoiIixzdmFsOigiZGVsIj09YT8iwqB3YXMgIittLnRvKDEwMCkucmVwbGFjZSgvXG5ccysvZywiIik6IsKgPcKgICIrSlNPTi5zdHJpbmdpZnkoZCkudG8oMTAwKSkucmVwbGFjZSgvXFxuL2csIsK2IikuZXNjYXBlSFRNTCgpLnJlcGxhY2UoL8K2L2csJzxzcGFuIGNsYXNzPSJncmF5MiBwbDEgcHIxIj7Ctjwvc3Bhbj4nKX0pO2lmKCJkZWwiPT1hJiZoKXt2YXIgcj1lLmhhc2goeC50bygtMSksMCkrIi0iLHM9K3gubGFzdCgpO2Uuc3RlcHMuZm9yRWFjaChmdW5jdGlvbih4KXtpZih4Lmhhc2guc3RhcnRzV2l0aChyKSl7dmFyIGE9K3gucGF0aFtqLTFdO2EhPXN8fHguZGVsP2E+cyYmKHgucGF0aFtqLTFdPShhLTEpLmNsYW1wKDAsMWU2KSsiIixlLnJlaGFzaCh4KSk6KHguZGVsPWksZS5yZWhhc2goeCkpfX0pfWlmKCJpbnMiPT1hJiZoKXtyPWUuaGFzaCh4LnRvKC0xKSwwKSsiLSIscz0reC5sYXN0KCk7ZS5zdGVwcy5mb3JFYWNoKGZ1bmN0aW9uKHgpe2lmKHguaGFzaC5zdGFydHNXaXRoKHIpKXt2YXIgYT0reC5wYXRoW2otMV07YT49cyYmKHgucGF0aFtqLTFdPShhKzEpLmNsYW1wKDAsMWU2KSsiIixlLnJlaGFzaCh4KSl9fSl9ZS5zdGVwcy5wdXNoKHEpfWkuZm9yRWFjaChmdW5jdGlvbih4KXtvKHhbMF0seFsxXSx4WzJdLHhbM10pfSksZC5teS5jaGVjaygiI2RvYy1oaXN0b3J5Iil9LHVuZG86ZnVuY3Rpb24oeCl7Zm9yKHZhciBhPXRoaXMsYj0oYS5kYXRhLGEuSGlzdG9yeSksYz1iLnN0ZXBzLGQ9Y1t4XSxlPWQuaGFzaCxmPWIuaGFzaChkLnBhdGgudG8oLTEpLDApKyItIixnPWQucGF0aC5zbGljZSgxKSxoPWcubGVuZ3RoLGk9SlNPTi5wYXJzZShkLnZhbCksaj1kLm9wLGs9MCxsPWEuRG9jWzBdLmRvYyxtPShPYmplY3QuaXNPYmplY3QsT2JqZWN0LmlzQXJyYXkpLG49KGIuaGFzaCwwKSxvPWw7bjxnLmxlbmd0aC0xJiZvJiYib2JqZWN0Ij09dHlwZW9mIG87bisrKW89Im9iamVjdCI9PXR5cGVvZiBvW2dbbl1dJiZudWxsIT1vW2dbbl1dP29bZ1tuXV06bnVsbDtpZighbylyZXR1cm4gcigiTm9kZSB0byBtb2RpZnkgZG9lc27igJl0IGV4aXN0Iik7ZnVuY3Rpb24gcCh4KXtpZih4KWZvcih2YXIgYT0rZy5sYXN0KCksZD1mLGU9MDtlPGMubGVuZ3RoO2UrKyljW2VdLmhhc2guc3RhcnRzV2l0aChkKSYmK2NbZV0ucGF0aFtoXT49YSYmKGNbZV0ucGF0aFtoXT0iIisoK2NbZV0ucGF0aFtoXSt4KS5jbGFtcCgwLDFlNiksYi5yZWhhc2goY1tlXSkpfWZ1bmN0aW9uIHEoKXt2YXIgeD0iZGVsIj09aj8iaW5zIjoiaW5zIj09aj8iZGVsIjoidXBkIixiPWEubXkuZmluZCgiI2pzZWRpdG9yPmRpdiIpLm15KCJtYW5pZmVzdCIpLk11dGF0ZSh7cGF0aDpnLGN0eDpkLmN0eCx2YWw6ImRlbCIhPXg/aTp2b2lkIDAsb3A6eCxleHBhbmQ6ITAsYmxpbms6ImJnLWJsdWU3In0pO2IuZXJyb3I/cihiLmVycm9yKTphLm15LmNoZWNrKCIjZG9jLWhpc3RvcnkiKX1mdW5jdGlvbiByKHgpe2N3LmxpYi5ub3RlKHgsImVycm9yIiw0ZTMpLGEubXkuY2hlY2soIiNkb2MtaGlzdG9yeSIpfSJkZWwiIT1qJiZkLnJvdyYmYy5maWx0ZXIoZnVuY3Rpb24oYSxiKXtyZXR1cm4hKGI8PSt4KSYmKGEucm93JiYiZGVsIj09YS5vcCYmYS5kZWw9PWQuZGVsJiZhLnBhdGgubGVuZ3RoPT1oKzEmJmEuaGFzaC5zdGFydHNXaXRoKGYpKX0pLmxlbmd0aCYmKGo9ImlucyI9PWo/Im5vb3AiOiJ1cGQiPT1qPyJkZWwiOmopLCJkZWwiPT1qP2g/bShvKSYmL15cZCskLy50ZXN0KGcubGFzdCgpKSYmcCgxK2spOmw9aToidXBkIj09anx8ImlucyI9PWomJmgmJm0obykmJi9eXGQrJC8udGVzdChnLmxhc3QoKSkmJnAoLTErayksYi5zdGVwcz1jLm1hcChmdW5jdGlvbihhLGIpe3JldHVybiBiPT14fHxiPngmJmEuaGFzaC5zdGFydHNXaXRoKGUpP251bGw6YX0pLmNvbXBhY3QoKSxxKCl9LGNsZWFyOmZ1bmN0aW9uKHgpe3RoaXMuSGlzdG9yeS5zdGVwcz1bXSx0aGlzLkhpc3RvcnkuZGVscz0wLHgmJnRoaXMubXkuY2hlY2soIiNkb2MtaGlzdG9yeSIpfSxoYXNoOmZ1bmN0aW9uKHgsYSl7dmFyIGI9eC5mbGF0KCksYz1iLmxlbmd0aC0xO3JldHVybiBiLm1hcChmdW5jdGlvbih4LGIpe3JldHVybiBjdy5saWIuc2RibShiIT1jfHwwPT1hP3g6W3gsYV0pfSkuam9pbigiLSIpfSxyZWhhc2g6ZnVuY3Rpb24oeCl7cmV0dXJuIHguaGFzaD10aGlzLkhpc3RvcnkuaGFzaCh4LnBhdGgseC5kZWwpLHguc3BhdGg9eC5wYXRoLmxlbmd0aDwyPyJEb2Mgcm9vdCI6eC5wYXRoLnNsaWNlKDEpLmpvaW4oIuKAiS7igIkiKS50cnVuY2F0ZSgzMiwibWlkZGxlIiwiLi4uIikuZXNjYXBlSFRNTCgpLHh9LHJhbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gTnVtYmVyLnJhbmRvbSgwLDIxNzY3ODIzMzUpLnRvU3RyaW5nKDM2KS5wYWRMZWZ0KDYsIjAiKX0sc3RlcHM6W10sZGVsczowfSxzdHlsZTp7IiAiOmZ1bmN0aW9uKHgpe3ZhciBhPTB8eC53aWR0aCgpLGI9MHwoYS80LjUpLmNsYW1wKDI3MCw0NTApLGM9YS1iLGQ9IndpZHRoOnsxfXB4IjtyZXR1cm57IiAjY29sLWVkIjpkLmFzc2lnbihjKSwiICNjb2wtaGlzdG9yeSI6ZC5hc3NpZ24oYil9fSwiICNqc2VkaXRvciI6eyI+ZGl2IjoibWluLWhlaWdodDo5OS45JTsiLCI+Lm15LWZvcm0+c2VjdGlvbj4jZWRpdG9yIjoibWluLWhlaWdodDpjYWxjKDEwMHZoIC0gODBweCkiLCI+Lm15LWZvcm0+c2VjdGlvbj4jZWRpdG9yPiNkb2M+LmlhY3QuYnV0dG9ucyI6InBhZGRpbmctcmlnaHQ6M3B4OyIsIiAuaWFjdCAuYnV0dG9uIjoiICBoZWlnaHQ6IDEuN2VtO2xpbmUtaGVpZ2h0OiAxLjFlbTsifSwiIC5teS1tb2RhbC1mb3JtIjp7IiAuQ29kZU1pcnJvciAuQ29kZU1pcnJvci1saW5lcyI6ImxpbmUtaGVpZ2h0OjE3cHg7IiwiIC5Db2RlTWlycm9yLXNjcm9sbCI6Im1pbi1oZWlnaHQ6MTUwcHg7bWF4LWhlaWdodDpjYWxjKDE4ICogMTdweCArIDZweCk7IiwiIC5Db2RlTWlycm9yLWxpbmVudW1iZXJzIjoidHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzOyIsIi5lZC1lcnJvciAuQ29kZU1pcnJvci1saW5lbnVtYmVycyI6ImJhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsIDIwMCwgMjAwLCAwLjc1KTsiLCIgLkNvZGVNaXJyb3IiOiJtaW4taGVpZ2h0OjE1MHB4OyBoZWlnaHQ6YXV0bzsiLCIgLmJ1dHRvbnMgYnV0dG9uIjoibWFyZ2luLXJpZ2h0OiAycHg7cGFkZGluZzogMC40ZW0gMC43ZW0gMC40ZW0gMC43ZW07Zm9udC1zaXplOiA5MCU7In0sIiAjYXBwLXRpdGxlIjp7IiI6Im1heC13aWR0aDogY2FsYygxMDAlIC0gNDIwcHggLSA0MHB4IC0gMTYuM2VtKTsgbWluLXdpZHRoOjZlbTsgb3BhY2l0eTowLjg7IHRyYW5zaXRpb246IG9wYWNpdHkgMC41czsiLCI6aG92ZXIiOiJvcGFjaXR5OjE7In0sIiAjZG9jLWhpc3RvcnkiOnsiIC5oLXJvdyI6eyIiOiJiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOyBib3JkZXItcmFkaXVzOjFweDsgbWFyZ2luLWJvdHRvbToxcHg7IHBhZGRpbmc6MnB4IDE1cHggMXB4IDIwcHg7dHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjVzOyBsaW5lLWhlaWdodDoxLjNlbTsiLCIgLnRkaSI6InRleHQtZGVjb3JhdGlvbjppbmhlcml0OyIsIi5vcC1kZWwiOiJ0ZXh0LWRlY29yYXRpb246cmdiYSgwLDAsMCwwLjQpIHNvbGlkIGxpbmUtdGhyb3VnaCFpbXBvcnRhbnQ7IiwiIC5oLXVidG4iOiJvcGFjaXR5OjA7IHRyYW5zaXRpb246IG9wYWNpdHkgMC41czsiLCI6aG92ZXIiOnsiIjoiYmFja2dyb3VuZC1jb2xvcjogI2UyZjBmZjsiLCIgLmgtdWJ0biI6Im9wYWNpdHk6MTsifX19LCIgLnJlZC1zdHJpa2U6YWZ0ZXIiOidwb3NpdGlvbjphYnNvbHV0ZTsgei1pbmRleDorMTsgd2lkdGg6MTAwJTsgaGVpZ2h0OjUwJTsgdG9wOjA7IGxlZnQ6MDtjb250ZW50OiIgIjsgYm9yZGVyLWJvdHRvbToxLjVweCBkYXNoZWQgI2ZlMjYyNjsgcG9pbnRlci1ldmVudHM6bm9uZTsnLCIucmVhZG9ubHlqc29uIC5yb2hpZGUiOiJkaXNwbGF5Om5vbmUhaW1wb3J0YW50OyIsIiAuZWQtbm9kZS0xM3Q2ZDZjNSI6eyIgLmlhY3QiOiJ0b3A6MnB4IiwiIC5pZGVzYyI6eyIiOiJwYWRkaW5nLXRvcDoxcHg7IiwiIC5mczk1IjoicGFkZGluZy10b3A6MXB4OyJ9fX0sRXh0RWQ6e2RhdGE6e21heERlcHRoOjUwMH0sSFRNTDp7SXRlbVJvb3Q6JzxkaXYgY2xhc3M9ImluYXYgaXJvb3QiPjxkaXYgY2xhc3M9ImlrZXkiIHRpdGxlPSJGb2xkL3VuZm9sZCBhbGwgZmlyc3QtbGV2ZWwgc3VidHJlZXMiPjwvZGl2PjxkaXYgY2xhc3M9ImlkZXNjIGNwIiB0aXRsZT0iRWRpdCBhcyByYXcgSlNPTiwgSlMgc3ludGF4IGFsbG93ZWQiPuKAkzwvZGl2PjxkaXYgY2xhc3M9ImllZGl0b3IgcGFuZWxoZWlnaHQtMzIiPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Iml2YWx1ZSBpbXVsdGkgaGlkZSI+PGRpdiBjbGFzcz0iaWxpc3QiPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9ImlhY3QgYnV0dG9ucyI+PGJ1dHRvbiBjbGFzcz0iYnRuLWFkZCBidXR0b24gZ3JlZW4iIHRpdGxlPSJBZGQgbmV3IHByb3BlcnR5Ij4mdGhpbnNwOzxzcGFuIGNsYXNzPSJmaS1wbHVzIj48L3NwYW4+JnRoaW5zcDs8L2J1dHRvbj48YnV0dG9uIGNsYXNzPSJidG4tdGFrZW91dCBidXR0b24iIHRpdGxlPSJDb3B5IC8gcGFzdGUgLyBlZGl0IGFzIEpTT04iPjxzcGFuIGNsYXNzPSJmaS1zaG9wcGluZy1iYWciPjwvc3Bhbj48L2J1dHRvbj48YnV0dG9uIGNsYXNzPSJidG4tZGVsIGhpZGUiPjwvYnV0dG9uPjxidXR0b24gY2xhc3M9ImJ0bi1qc29uIGhpZGUiPjwvYnV0dG9uPjxidXR0b24gaWQ9ImJ0bi1hdHRhY2giIGNsYXNzPSJidXR0b24iIHRpdGxlPSJBZGQgYXR0YWNobWVudCIgc3R5bGU9IndpZHRoOjc0cHgiPjxzcGFuIGNsYXNzPSJmaS1wYXBlcmNsaXAgbXIzIG1sMSI+PC9zcGFuPjxzcGFuIGNsYXNzPSJmczg1IGxoMTIwIGRpYiB2YXQiPkF0dGFjaOKApjwvc3Bhbj48L2J1dHRvbj48L2Rpdj4nfSx1aTp7IiNkb2MiOnttYW5pZmVzdDpmdW5jdGlvbih4KXtpZighdGhpcy5IVE1MLkl0ZW1Sb290KXJldHVybiB0aGlzLiRtdWx0aTt2YXIgYT10aGlzLGI9YS4kZmlsZXMuQWRkO3JldHVybiAkLmV4dGVuZCghMCx7fSxhLiRtdWx0aSx7SFRNTDphLkhUTUwuSXRlbVJvb3QsdWk6eyIjYnRuLWF0dGFjaCI6e2JpbmQ6ZnVuY3Rpb24oeCxhLGMpe2lmKG51bGwhPWEpe3ZhciBkPXRoaXM7aWYoYy5kYXRhKCJtb2RhbCIpKXJldHVybiBjLm1vZGFsKCEwKSxlKCksdm9pZCAwO2MucGFyZW50KCkuYWRkQ2xhc3MoImhvdmVyIiksZC5teS5tb2RhbCgiI2J0bi1hdHRhY2giLHttYW5pZmVzdDpiLGRhdGE6e30sd2lkdGg6NTAwLGFsaWduOiJ0b3A6MTAzJSwgcmlnaHQ6MHB4OyIsbm9zZToidG9wIn0pLnRoZW4oZnVuY3Rpb24oYSl7aWYoYS5maWxlcy5sZW5ndGgpe3gudmFsdWUuX2F0dGFjaG1lbnRzfHwoeC52YWx1ZS5fYXR0YWNobWVudHM9e30pO3ZhciBiPSQuZXh0ZW5kKCEwLHt9LHgudmFsdWUuX2F0dGFjaG1lbnRzKTthLmZpbGVzLmZvckVhY2goZnVuY3Rpb24oYSl7eC52YWx1ZS5fYXR0YWNobWVudHNbYS5uYW1lXT1PYmplY3Quc2VsZWN0KGEsWyJjb250ZW50X3R5cGUiLCJkYXRhIl0pfSksZC5SVCgiZGF0YSIpLnZpZXdzdGF0ZXx8KGQuUlQoImRhdGEiKS52aWV3c3RhdGU9e30pLGQuUlQoImRhdGEiKS52aWV3c3RhdGVbY3cubGliLnNkYm0oIlJvb3TinYBfYXR0YWNobWVudHMiKV09MixkLkxpc3Q9ZC5NYWtlTGlzdCh4KSxkLk5vZGVVcGRhdGVkKFsiUm9vdCIsIl9hdHRhY2htZW50cyJdLGIseC52YWx1ZS5fYXR0YWNobWVudHMpLGQubXkucmVkcmF3KCl9fS5kZWJvdW5jZSgyMCkpLmFsd2F5cyhmdW5jdGlvbigpe2UoKX0pfWZ1bmN0aW9uIGUoKXtjLnBhcmVudCgpLnJlbW92ZUNsYXNzKCJob3ZlciIpfX0sY3NzOnsiOmRpc2FibGVkIjpmdW5jdGlvbigpe3JldHVybiB0aGlzLlJUKCJkYXRhIikucmVhZG9ubHl9fX19fSl9fX0sTm9kZVVwZGF0ZWQ6ZnVuY3Rpb24oeCxhLGIsYyl7dGhpcy5teS5wYXJlbnQoKS5IaXN0b3J5LmVtaXQoeCxhLGIsY3x8bnVsbCl9LEVkaXRvckludm9rZWQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzLGM9YS5teS5yb290KCksZD1jLmhlaWdodCgpLGU9Yy5wYXJlbnRzKCIjanNlZGl0b3IiKS5lcSgwKSxmPWVbMF0uc2Nyb2xsVG9wLGc9ZS5vZmZzZXQoKS50b3AsaD1jLm9mZnNldCgpLnRvcC1nLGk9Yi5QaG8oIm15Iikucm9vdCgpLmhlaWdodCgpLTYyO2g+aS1kLTMwJiZlLmFuaW1hdGUoe3Njcm9sbFRvcDooaCtkK2YtaSs0MCkuY2xhbXAoMCwxZTYpKyJweCJ9LDEwMCl9fSxTYXZlQWxsOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcyxjPWIuZGF0YSxkPU9iamVjdC5tZXJnZShjLmRvYy5fZGVsZXRlZD97X2RlbGV0ZWQ6ITB9Ont9LGN3LmxpYi5kcnkoYy5kb2MpLCEwKSxlPSQuRGVmZXJyZWQoKSxmPWIubGFuZzshMT09PWMuZG9jLl9kZWxldGVkJiZkZWxldGUgZC5fcmV2O3ZhciBnPSJQT1NUIixoPVtjLnBhdGhbMF1dLGk9eyJYLUNvdWNoLUZ1bGwtQ29tbWl0IjoidHJ1ZSJ9O3JldHVybiJzdHJpbmciPT10eXBlb2YgZC5faWQ/Yy5pc05ld3x8IWQuX3Jldnx8L1wvLy50ZXN0KGQuX2lkKXx8dm9pZCAwIT09Yy5kb2MuX2RlbGV0ZWR8fChnPSJQVVQiLGgucHVzaChkLl9pZCkpOmRlbGV0ZSBkLl9pZCxudWxsPT1kLl9pZCYmKGRlbGV0ZSBkLl9kZWxldGVkLGRlbGV0ZSBkLl9yZXYpLHh8fGF8fGIuQnVzeS5kZWJvdW5jZSgxMCkoITApLGooZCkuZmFpbChmdW5jdGlvbihnLGgsaSl7NDA5IT1nPyhhfHxjdy5saWIubm90ZShmLkVSUl9TQVZFLmFzc2lnbihnKyI6ICIrbChpLnJlYXNvbnx8aCkpLCJlcnJvciIpLGUucmVqZWN0KGcsaCxpKSk6Yi5SZXEoe21ldGhvZDoiR0VUIix1cmw6W2MucGF0aFswXSxkLl9pZF19KS50aGVuKGZ1bmN0aW9uKGcpeyQubXkubW9kYWwoe21hbmlmZXN0OmIuUGhvKCJDb25maXJtIiksd2lkdGg6NTAwLGRhdGE6e3RleHQ6Zi5NU0dfQ09ORkxJQ1QuYXNzaWduKG0oZC5faWQsNDApLG0oZC5fcmV2LDI1KSxtKGcuX3JldiwyNSkpLHllczpmLkJUTl9DT05GTElDVF9ZRVMsbm86Zi5CVE5fQ09ORkxJQ1RfTk8sY2FuY2VsOiIiLHVzZUJ1dHRvbnM6ITB9LGNzczoieGdyYXkgbGgxNzAgcDIwIHBiMjUiLGVzYzohMSxlbnRlcjohMSxmb2N1czoiI2J0bi15ZXMifSkudGhlbihmdW5jdGlvbihkKXsieWVzIj09ZC5jbWQ/KGMuZG9jLl9yZXY9Zy5fcmV2LGIuU2F2ZUFsbCh4LGEpLnRoZW4oZnVuY3Rpb24oeCl7byghMCl9KS5mYWlsKGZ1bmN0aW9uKHgsYSxiKXtlLnJlamVjdCh4LGEsYil9KSk6aygpfSkuZmFpbChrKX0pLmZhaWwoZnVuY3Rpb24oeCxiLGMpe2NvbnNvbGUubG9nKHgsYixjKSxhfHxjdy5saWIubm90ZShmLk1TR19DT05GTElDVF9MT0FERkFJTCksZS5yZWplY3QoOTk5LCJDYW5jZWxsZWQgYnkgdXNlciIsZi5NU0dfQ09ORkxJQ1RfTE9BREZBSUwpfSl9KSxlLmFsd2F5cyh4PT5iLkJ1c3kuZGVib3VuY2UoMTUpKCExKSksZS5wcm9taXNlKCk7ZnVuY3Rpb24gaihhKXtyZXR1cm4gYi5SZXEoe3VybDpoLG1ldGhvZDpnLGhlYWRlcnM6aSxjb250ZW50VHlwZToiYXBwbGljYXRpb24vanNvbiIsZGF0YTpKU09OLnN0cmluZ2lmeShhKSxkYXRhVHlwZToiUFVUIj09Zz8idGV4dCI6Impzb24ifSkudGhlbihmdW5jdGlvbihiKXt2YXIgZD1iO3RyeXtkPU9iamVjdC5pc1N0cmluZyhiKT9KU09OLnBhcnNlKGIpOmJ9Y2F0Y2goeCl7fWlmKHgpcmV0dXJuIG4oKSxlLnJlc29sdmUoJC5leHRlbmQoYSx7X2lkOmQuaWQsX3JldjpkLnJldn0pKTtjLmRvYy5fY29uZmxpY3RzJiZjLmRvYy5fY29uZmxpY3RzLmluZGV4T2YoYy5kb2MuX3Jldik+LTEmJmMucmV2P28uZGVib3VuY2UoMjApKGQucmV2KTpvLmRlYm91bmNlKDIwKSghMCl9KX1mdW5jdGlvbiBrKCl7YXx8Y3cubGliLm5vdGUoZi5NU0dfQ09ORkxJQ1RfQ0FOQ0VMTEVEKSxlLnJlamVjdCg5OTksIkNhbmNlbGxlZCBieSB1c2VyIixmLk1TR19DT05GTElDVF9DQU5DRUxMRUQpfWZ1bmN0aW9uIGwoeCl7cmV0dXJuKHgrIiIpLmVzY2FwZUhUTUwoKX1mdW5jdGlvbiBtKHgsYSl7cmV0dXJuIGIudGFnRW1vamkobCgoeCsiIikudHJ1bmNhdGUoYXx8MTUsInJpZ2h0Iiwi4oCmIikpKX1mdW5jdGlvbiBuKCl7JC5teS5yYWRpbygiZGJ1cGRhdGUiLHtkYjpjLnBhdGhbMF0sY21kOiJ3cml0ZSIsZG9jczpbYy5kb2MuX2lkXX0pLGMucGF0aFswXT09Yi5QaG8oIlJlcGxpY2F0b3JEQiIpJiZjLmRvYy5jcmVhdGVfdGFyZ2V0PygvKGxvY2FsaG9zdHwxMjdcLjBcLjBcLjEpLy50ZXN0KGMuZG9jLnRhcmdldCsiIil8fC0xPT0oYy5kb2MudGFyZ2V0KyIiKS5pbmRleE9mKCIvIikpJiZmdW5jdGlvbigpeyQubXkucmFkaW8oImRibGlzdCIsWyJfcmVwbGljYXRvciIsKGMuZG9jLnRhcmdldCsiIikuc3BsaXQoIi8iKS5sYXN0KCldLmNvbXBhY3QoInRydWUiKSl9LmRlYm91bmNlKDMwMCkoKTokLm15LnJhZGlvKCJkYmxpc3QiLFtjLnBhdGhbMF1dKSxhfHxjdy5saWIubm90ZShmLk1TR19TQVZFLmFzc2lnbihtKGMuZG9jLl9pZCksbShjLnJldnx8Yy5kb2MuX3Jldnx8IiIpKSwib2siKX1mdW5jdGlvbiBvKHgpeyEwPT09eD8oYy5wYXRoWzFdPWMuZG9jLl9pZCxjLnBhdGgubGVuZ3RoPTIsYy5yZXY9IiIsYy5pc05ldyYmKGMuaXNOZXc9ITEsJC5teS5yYWRpbygicGF0aGNoYW5nZSIse2lkOmMudGFiaWQscGF0aDpjLnBhdGgsdGl0bGU6Yi50aXRsZSgpfSkpLGIuR2V0RG9jKCEwLCEwKS50aGVuKGZ1bmN0aW9uKCl7bigpLGUucmVzb2x2ZShjLmRvYyl9KS5mYWlsKGZ1bmN0aW9uKHgsYixjKXtyZXR1cm4gYXx8Y3cubGliLm5vdGUoZi5FUlJfU0FWRUxPQUQuYXNzaWduKHgrIjogIitsKGIpKSwiZXJyb3IiKSxlLnJlamVjdCh4LGYuRVJSX1NBVkVMT0FELmFzc2lnbihiKSxjKX0pKTpjLnJldiYmInN0cmluZyI9PXR5cGVvZiB4JiYoYy5yZXY9eCxjLnBhdGhbYy5wYXRoLmxlbmd0aC0xXT0iXyIreCxiLm15LnJlY2FsYygiI3N0YXRlLXByb3h5IiksbigpLGUucmVzb2x2ZShjLmRvYykpfX0sR2V0RG9jOmZ1bmN0aW9uKHgsYSl7dmFyIGIsYyxkPXRoaXMsZT1kLmRhdGEsZj17Y29uZmxpY3RzOiEwLGxvY2FsX3NlcTohMCxyZXZzX2luZm86ITAsYXR0X2VuY29kaW5nX2luZm86ITB9LGc9ITE7aWYoZC5CdXN5LmRlYm91bmNlKDIwKSghMCksZS5pc05ldyl7dmFyIGg9JC5EZWZlcnJlZCgpO3JldHVybiBkLlJlcShbIl91dWlkcyIse2NvdW50OjV9XSkudGhlbihmdW5jdGlvbih4KXtlLmRvYy5faWQ9ZS5kb2MuX2lkfHwoeC51dWlkc3x8WyIiXSkuc2FtcGxlKCl9KS5hbHdheXMoZnVuY3Rpb24oKXtlLmRvYy5faWR8fChlLmRvYy5faWQ9TnVtYmVyLnJhbmRvbSg3ODM2NDE2NDA5NiwyODIxMTA5OTA3NDU1KS50b1N0cmluZygzNikpLGQuRG9jPVt7ZGJuYW1lOmUucGF0aFswXSxyZXZpc2lvbjoiIixiYXNldXJsOmQuUGhvKCJCYXNlIiksZG9jOmQuZGF0YS5kb2N9XSxkLkJ1c3kuZGVib3VuY2UoNTApKCExKSxoLnJlc29sdmUoKX0pLGgucHJvbWlzZSgpfXJldHVybiBlLnBhdGgubGVuZ3RoPigiX2Rlc2lnbiI9PWUucGF0aFsxXT8zOjIpPyhjPWUucGF0aC5sYXN0KCkucmVwbGFjZSgvXlxEKy8sIiIpLGI9ZS5wYXRoLnRvKC0xKSk6Il9ub2RlL19sb2NhbC9fdmVyc2lvbnMiPT1lLnBhdGguam9pbigiLyIpPyhiPWUucGF0aC5qb2luKCIvIikuc3BsaXQoIi8iKSxnPSEwKTpiPWUucGF0aC5zbGljZSgwKSxlLmF0dHMmJmIucHVzaCh7YXR0YWNobWVudHM6ITAsYXR0X2VuY29kaW5nX2luZm86ITB9KSxoPSQuRGVmZXJyZWQoKSxjP2QuUmVxKGIuY29uY2F0KFskLmV4dGVuZCghMCx7fSxmLHtyZXY6Y30pXSkpLnRoZW4oZnVuY3Rpb24oeCl7ZS5kb2M9ayh4KSxlLmRvYy5fZGVsZXRlZD8oZS5yZXZzPVtjXSxlLmNvbmZpbGN0cz1bXSxoLnJlc29sdmUoKSk6ZC5SZXEoYi5jb25jYXQoW2ZdKSkudGhlbihmdW5jdGlvbih4KXtlLmRvYz0kLmV4dGVuZChlLmRvYyxPYmplY3Quc2VsZWN0KHgsWyJfY29uZmxpY3RzIiwiX3JldnNfaW5mbyIsIl9sb2NhbF9zZXEiXSkpLGwoZS5kb2MpfSkuZmFpbChmdW5jdGlvbigpe2UucmV2cz1bY10sZS5jb25maWxjdHM9W119KS5hbHdheXMoZnVuY3Rpb24oKXtoLnJlc29sdmUoKX0pfSkuZmFpbChmdW5jdGlvbih4LGEsYil7aC5yZWplY3QoeCxhLGIpfSk6ZC5SZXEoZz9iOmIuY29uY2F0KFtmXSkpLnRoZW4oZnVuY3Rpb24oeCl7aih4KSxoLnJlc29sdmUoKX0pLmZhaWwoZnVuY3Rpb24oKXtiPVtiWzBdLCJfYWxsX2RvY3MiLHtrZXk6ZS5wYXRoLmZyb20oMSkuam9pbigiLyIpLGluY2x1ZGVfZG9jczohMH1dLGQuUmVxKGIuY29uY2F0KFtmXSkpLnRoZW4oZnVuY3Rpb24oeCl7eC5yb3dzJiZ4LnJvd3NbMF0mJngucm93c1swXS5kb2M/KGooeC5yb3dzWzBdLmRvYyksaC5yZXNvbHZlKCkpOmgucmVqZWN0KDQwNCwiTm90IGZvdW5kIil9KS5mYWlsKGZ1bmN0aW9uKHgsYSxiKXtoLnJlamVjdCh4LGEsYil9KX0pLGguYWx3YXlzKGZ1bmN0aW9uKCl7aSgpLGQuQnVzeS5kZWJvdW5jZSg1MCkoITEpfSksaDtmdW5jdGlvbiBpKCl7YSYmZC5SZXZzTGlzdCgiI2FwcC1yZXYiKSxkLkRvYz1be2RibmFtZTplLnBhdGhbMF0scmV2aXNpb246ZS5yZXYsYmFzZXVybDpkLlBobygiQmFzZSIpLGRvYzpkLmRhdGEuZG9jfV0sZC5IaXN0b3J5LmNsZWFyKCEwKSxkLm15LnRyaWdnZXIoIiNzdGF0ZS1wcm94eSIsInJlc2V0dGFiaGFzaC5teSIpLHgmJmQubXkucmVkcmF3KCl9ZnVuY3Rpb24gaih4KXtlLmRvYz1rKHgpLGwoZS5kb2MpfWZ1bmN0aW9uIGsoeCl7aWYoIl92ZXJzaW9ucyI9PWJbMl0pcmV0dXJuIHg7dmFyIGE9e19pZDoiIixfcmV2OiIifTtyZXR1cm4geC5fZGVsZXRlZCYmKGEuX2RlbGV0ZWQ9ITApLHguX2F0dGFjaG1lbnRzJiYoYS5fYXR0YWNobWVudHM9e30pLCQuZXh0ZW5kKGEseCl9ZnVuY3Rpb24gbCh4KXtPYmplY3QuaXNBcnJheSh4Ll9yZXZzX2luZm8pJiYoeC5fcmV2c19pbmZvPXguX3JldnNfaW5mby5maWx0ZXIoZnVuY3Rpb24oeCl7cmV0dXJuImF2YWlsYWJsZSI9PXguc3RhdHVzfSkpLGUuY29uZmxpY3RzPXguX2NvbmZsaWN0c3x8W10sZS5yZXZzPSh4Ll9yZXZzX2luZm98fFtdKS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIHgucmV2fSl9fSxHZXRBdHRzOmZ1bmN0aW9uKHgpe3ZhciBhLGI9dGhpcyxjPWIuZGF0YSxkPVtdLGU9Yy5wYXRoLnNsaWNlKDApO3JldHVybiBlLmxlbmd0aD4oIl9kZXNpZ24iPT1lWzFdPzM6Mik/KGE9ZS5sYXN0KCkucmVwbGFjZSgvXlxEKy8sIiIpLGQ9ZS50bygtMSkpOmQ9ZSxhJiZkLnB1c2goe3JldjphfSksZC5wdXNoKHthdHRhY2htZW50czohMCxhdHRfZW5jb2RpbmdfaW5mbzohMH0pLHh8fGIuQnVzeS5kZWJvdW5jZSgxMCkoITApLGIuUmVxKGQpLnRoZW4oZnVuY3Rpb24oYSl7cmV0dXJuIHg/YTooYS5fYXR0YWNobWVudHMmJihjLmF0dHM9ITAsYy5kb2MuX2F0dGFjaG1lbnRzPWEuX2F0dGFjaG1lbnRzKSxiLkRvYz1be2RibmFtZTpjLnBhdGhbMF0scmV2aXNpb246Yy5yZXYsYmFzZXVybDpiLlBobygiQmFzZSIpLGRvYzpiLmRhdGEuZG9jfV0sYi5teS50cmlnZ2VyKCIjc3RhdGUtcHJveHkiLCJyZXNldHRhYmhhc2gubXkiKSxiLm15LnJlZHJhdygpLGEpfSkuZmFpbChmdW5jdGlvbigpe2MuYXR0cz0hMX0pLmFsd2F5cyhmdW5jdGlvbigpe3h8fGIuQnVzeSghMSl9LmRlYm91bmNlKDIwKSl9LERlbERvYzpmdW5jdGlvbigpe3ZhciB4PXRoaXMsYT14LmRhdGEsYj1PYmplY3QuY2xvbmUoY3cubGliLmRyeShhLmRvYyksITApLGM9YS5yZXZzWzBdJiZhLnJldnNbMF09PWEuZG9jLl9yZXYsZD0tMSE9YS5jb25mbGljdHMuaW5kZXhPZihhLmRvYy5fcmV2fHwiIiksZT14LmxhbmcsZj1mdW5jdGlvbih4KXtyZXR1cm4oeCsiIikuZXNjYXBlSFRNTCgpfSxnPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHgudGFnRW1vamkoZigoYSsiIikudHJ1bmNhdGUoYnx8MTUsInJpZ2h0Iiwi4oCmIikpKX0saD0kLkRlZmVycmVkKCksaT1bYS5wYXRoWzBdLGIuX2lkLHtyZXY6Yi5fcmV2fV0saj0nPGRpdiBjbGFzcz0ibWIxMCI+ezF9PC9kaXY+JztyZXR1cm4geC5teS5tb2RhbCh7d2lkdGg6MzUwLHJvb3Q6eC5teS5yb290KCksc2NyZWVuOiEwLGdsb2JhbDohMCxlc2M6ITAsZW50ZXI6ITEsbWFuaWZlc3Q6JC5leHRlbmQoITAse30seC5QaG8oIkNvbmZpcm0iKSx7dWk6eydpbnB1dFtuYW1lPSJyZXRhaW4iXSc6InJldGFpbiJ9LHN0eWxlOnsiIGxhYmVsIjoibWFyZ2luOjA7bGluZS1oZWlnaHQ6aW5oZXJpdDtjb2xvcjppbmhlcml0OyJ9fSksZGF0YTp7cmV0YWluOiJubyIsdGV4dDpbZD8iIjonPGRpdiBjbGFzcz0iZnMxMzAgcmVkIG1iNSI+JytlLlRYVF9ERUxfVElUTEUrIjwvZGl2PiIsZD8nPGRpdiBjbGFzcz0iZnMxMzAgb3JhbmdlIG1iNSI+JytlLlRYVF9ERUxfVElUTEVfQ09ORkxJQ1QrIjwvZGl2PiI6IiIsai5hc3NpZ24oZS5UWFRfREVMX1dBUk4uYXNzaWduKGcoYi5faWQsMjUpLGcoYS5wYXRoWzBdLDI1KSkpLGouYXNzaWduKFsnPGxhYmVsIGNsYXNzPSJ4Z3JheSI+PGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJyZXRhaW4iIHZhbHVlPSJubyIgY2xhc3M9Im1yNiI+ICcrZS5MQkxfREVMX0FMTCsiPC9sYWJlbD4iLCc8bGFiZWwgY2xhc3M9InhncmF5Ij48aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9InJldGFpbiIgdmFsdWU9InJldGFpbiIgY2xhc3M9Im1yNiI+ICcrZS5MQkxfREVMX1JFVEFJTisiPC9sYWJlbD4iXS5jb25jYXQoeC5QaG8oIkNvdWNoIikudmVyPj0iMDAyLjAwMy4iP1snPGxhYmVsIGNsYXNzPSJ4Z3JheSI+PGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSJyZXRhaW4iIHZhbHVlPSJwdXJnZSIgY2xhc3M9Im1yNiI+ICcrZS5MQkxfREVMX1BVUkdFKyI8L2xhYmVsPiJdOltdKS5qb2luKCIiKSksYS5jb25mbGljdHMubGVuZ3RoJiZjP2ouYXNzaWduKGUuVFhUX0RFTF9OT0RFTCk6IiIsZD9qLmFzc2lnbihlLlRYVF9ERUxfQ09ORkxJQ1QpOiIiXS5jb21wYWN0KCEwKS5qb2luKCIiKSx5ZXNjc3M6ZD8ib3JhbmdlIjoicmVkIix5ZXM6ZS5CVE5fREVMX1NUQVJULG5vOmUuQlROX0NBTkNFTCxjYW5jZWw6IiJ9LHo6MTk5NSxjc3M6ImxoMTYwIHhncmF5IHAyMCBwYjI1IixjbG9zZTp4LlBobygibGFuZyIpLkJUTl9YRExHfSkudGhlbihmdW5jdGlvbih4KXtpZigieWVzIiE9eC5jbWQpcmV0dXJuIGgucmVqZWN0KDk5OSwiQ2FuY2VsbGVkIiwiQ2FuY2VsbGVkIik7ayh4LnJldGFpbisiIil9KS5mYWlsKGZ1bmN0aW9uKCl7aC5yZWplY3QoOTk5LCJDYW5jZWxsZWQiLCJDYW5jZWxsZWQiKX0pLGgucHJvbWlzZSgpO2Z1bmN0aW9uIGsoYyl7dmFyIGQsaixrLG09e25vOnt1cmw6aSxtZXRob2Q6IkRFTEVURSIsaGVhZGVyczp7IlgtQ291Y2gtRnVsbC1Db21taXQiOiJ0cnVlIn19LHJldGFpbjp7dXJsOlthLnBhdGhbMF0sIl9idWxrX2RvY3MiXSxtZXRob2Q6IlBPU1QiLGNvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi9qc29uIixoZWFkZXJzOnsiWC1Db3VjaC1GdWxsLUNvbW1pdCI6InRydWUifSxkYXRhOkpTT04uc3RyaW5naWZ5KHtkb2NzOltPYmplY3QubWVyZ2Uoe19kZWxldGVkOiEwfSxiKV19KX0scHVyZ2U6e3VybDpbYS5wYXRoWzBdLCJfcHVyZ2UiXSxtZXRob2Q6IlBPU1QiLGNvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi9qc29uIixoZWFkZXJzOnsiWC1Db3VjaC1GdWxsLUNvbW1pdCI6InRydWUifSxkYXRhOkpTT04uc3RyaW5naWZ5KChkPWIuX2lkLGo9Yi5fcmV2LGs9e30sa1tkXT1bal0saykpfX1bY107cmV0dXJuIHguUmVxKG0pLnRoZW4oZnVuY3Rpb24oZCl7Y3cubGliLm5vdGUoZS5NU0dfREVMX09LLmFzc2lnbihnKGIuX2lkKSxnKGEucGF0aFswXSkpLCJvayIpO3RyeXskLm15LnJhZGlvKCJkYnVwZGF0ZSIse2RiOmEucGF0aFswXSxjbWQ6ImRlbGV0ZSIsZG9jczpbYi5faWRdfSksJC5teS5yYWRpbygiZGJsaXN0IixbYS5wYXRoWzBdXSl9Y2F0Y2goeCl7Y29uc29sZS5sb2coeCl9InB1cmdlIiE9YyYmYS5jb25mbGljdHMubGVuZ3RoP2woITApOihmdW5jdGlvbigpe3gubXkucm9vdCgpLnRyaWdnZXIoInRhYmNsb3NlIix7dGFiaWQ6YS50YWJpZCxlbmZvcmNlOiEwfSl9LmRlYm91bmNlKDEwMCkoKSxoLnJlc29sdmUoZCkpfSkuZmFpbChmdW5jdGlvbih4LGMsZCl7cmV0dXJuIGN3LmxpYi5ub3RlKGUuTVNHX0RFTF9GQUlMLmFzc2lnbihnKGIuX2lkKSx4LGYoYykpLCJlcnJvciIpLCQubXkucmFkaW8oImRidXBkYXRlIixhLnBhdGhbMF0pLGgucmVqZWN0KHgsYyxkKX0pfWZ1bmN0aW9uIGwoYyl7YS5wYXRoWzFdPWIuX2lkLGEucGF0aC5sZW5ndGg9Mjt2YXIgZD1hLnJldjthLnJldj0iIixkJiYkLm15LnJhZGlvKCJwYXRoY2hhbmdlIix7aWQ6YS50YWJpZCxwYXRoOmEucGF0aCx0aXRsZTp4LnRpdGxlKCl9KSx4LkdldERvYyghMCkudGhlbihmdW5jdGlvbigpe2N3LmxpYi5ub3RlKGUuTVNHX0RFTF9SRUxPQUQsIiIsNGUzKSx4LlJldnNMaXN0KCIjYXBwLXJldiIpLGgucmVzb2x2ZShhLmRvYyl9KS5mYWlsKGZ1bmN0aW9uKGIsYyxkKXtjdy5saWIubm90ZShlLk1TR19ERUxfUkVMT0FEX0ZBSUwuYXNzaWduKGcoYS5kb2MuX2lkKSxiLGYoYykpLCJlcnJvciIpLGgucmVqZWN0KGIsYyxkKSx4Lm15LnRyaWdnZXIoIiNidG4tZGVsLWRvYyIsInRhYmNsb3NlIix7dGFiaWQ6YS50YWJpZCxlbmZvcmNlOiEwfSl9KX19LFJldnNMaXN0OmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcyxjPWIuZGF0YSxkPVt7aWQ6IiIsdGV4dDphfHxiLmxhbmcuVFhUX1JFVn1dO2Z1bmN0aW9uIGUoeCxhKXt2YXIgYj14LnRleHQ7cmV0dXJuIngiPT0oYj0vXHMvLnRlc3QoYik/YjpiLnJlcGxhY2UoIi0iLCLigJMiKS50cnVuY2F0ZShhLCJtaWRkbGUiLCc8c3BhbiBjbGFzcz0ib3JhbmdlIj7igKY8L3NwYW4+JykpWzBdJiYoYj0nPHNwYW4gY2xhc3M9InJlZDEgYm9sZGVyIj7igKA8L3NwYW4+4oCJJytiLmZyb20oMSkpLCI8bm9icj4iK2IrIjwvbm9icj4ifWMuY29uZmxpY3RzLmZvckVhY2goZnVuY3Rpb24oeCl7ZC5wdXNoKHtpZDp4LHRleHQ6IngiK3h9KX0pLGMucmV2cy5mb3JFYWNoKGZ1bmN0aW9uKHgpe2QucHVzaCh7aWQ6eCx0ZXh0Onh9KX0pLGIuc2VsZWN0MihiLm15LmZpbmQoeCkse2RhdGE6ZCxmb3JtYXRSZXN1bHQ6ZS5maWxsKHZvaWQgMCwxNyksZm9ybWF0U2VsZWN0aW9uOmUuZmlsbCh2b2lkIDAsMTQpLG1pbmltdW1SZXN1bHRzRm9yU2VhcmNoOjN9KX0sQXBwbHlFZHM6ZnVuY3Rpb24oKXt2YXIgeD10aGlzLGE9KHguZGF0YSwkLkRlZmVycmVkKCkpLGI9eC5teS5maW5kKCIjanNlZGl0b3IgYnV0dG9uI2J0bi1jaGFuZ2U6dmlzaWJsZSIpLGM9Yi5sZW5ndGg7cmV0dXJuIGM/eC5teS5tb2RhbCgiI2J0bi1kb2Mtc2F2ZSIse21hbmlmZXN0OnguUGhvKCJDb25maXJtIiksZGF0YTp7dGV4dDp4LmxhbmcuTVNHX0VEUyx5ZXM6eC5sYW5nLkJUTl9FRFNfWUVTLG5vOngubGFuZy5CVE5fRURTX05PLHVzZUJ1dHRvbnM6ITB9LHdpZHRoOjQ1MCx6OjE5OTUsc2NyZWVuOiEwLGdsb2JhbDohMCxmb2N1czoiI2J0bi15ZXMifSkudGhlbihmdW5jdGlvbih4KXtpZigieWVzIiE9eC5jbWQpcmV0dXJuIGEucmVzb2x2ZSgpLHZvaWQgMDtiLmVhY2goZnVuY3Rpb24oeCxiKXskKGIpLnRyaWdnZXIoImNsaWNrIikseD09Yy0xJiZhLnJlc29sdmUuZGVsYXkoNDAwKX0ubGF6eSgyMCkpfSkuZmFpbChmdW5jdGlvbigpe2EucmVqZWN0KCl9KTphLnJlc29sdmUoKSxhLnByb21pc2UoKX0sUmVhZEFuZFppcDpmdW5jdGlvbigpe3ZhciB4PXRoaXMsYT14LmRhdGEsYj14Lmxhbmc7eC5CdXN5LmRlYm91bmNlKDEwKSghMCk7dmFyIGM9IiIsZD1hLnBhdGguc2xpY2UoMCksZT1lbmNvZGVVUklDb21wb25lbnQoYS5kb2MuX2lkLnRvKDMyKSkucmVwbGFjZSgvJS4uL2csIi0iKSsiLnppcCIsZj17YXR0YWNobWVudHM6ITB9O2EucGF0aC5sZW5ndGg+KCJfZGVzaWduIj09YS5wYXRoWzFdPzM6MikmJihkLnBvcCgpLGM9YS5wYXRoLmxhc3QoKS5yZXBsYWNlKC9eXEQrLywiIikpLGMmJihmLnJldj1jKSxkLnB1c2goZik7dmFyIGcsaCxpPSExLGo9ZW5jb2RlVVJJQ29tcG9uZW50KGEuZG9jLl9pZCsiIikucmVwbGFjZSgvJS4uL2csIi0iKTtmdW5jdGlvbiBrKCl7dmFyIGE9JC5EZWZlcnJlZCgpLGI9eC5teS5maW5kKCIjemlwLXRlc3RlciIpO3JldHVybiBiLm15KHguUGhvKCJTeW5jVGFzayIpLlppcFRlc3Rlcix7fSkudGhlbihmdW5jdGlvbih4KXthLnJlc29sdmUoITApLGZ1bmN0aW9uKCl7Yi5teSgicmVtb3ZlIil9LmRlbGF5KDIwMCl9KS5mYWlsKGZ1bmN0aW9uKHgpe2EucmVzb2x2ZSghMSl9KSxhLnByb21pc2UoKX1mdW5jdGlvbiBsKCl7eC5CdXN5LmRlYm91bmNlKDEwKSghMSl9IlRleHRFbmNvZGVyImluIHdpbmRvdz8oZz1uZXcgVGV4dEVuY29kZXIsaD0oeD0+Zy5lbmNvZGUoeCkpKTpoPSh4PT5mZmxhdGUuc3RyVG9VOCh4KSksaygpLnRoZW4oZnVuY3Rpb24oYyl7aWYoYylyZXR1cm4gY3cubGliLm5vdGUoYlsiTVNHX0RMWklQX1JFQUQiKyhhLmRvYy5fYXR0YWNobWVudHM/MjoxKV0pLHguUGhvKCJSZXEiKShkKTtjdy5saWIubm90ZShiLk1TR19ETFpJUF9OT1pJUCwiZXJyb3IiKSxsKCl9KS50aGVuKGZ1bmN0aW9uKHgpe2lmKG51bGwhPXgpe3ZhciBjPW5ldyBmZmxhdGUuWmlwLGQ9c3RyZWFtU2F2ZXIuY3JlYXRlV3JpdGVTdHJlYW0oZSx7cGF0aG5hbWU6Ii9fc3RyZWFtLyIrZSxzaWduYWw6ZnVuY3Rpb24oKXt9fSkuZ2V0V3JpdGVyKCk7Yy5vbmRhdGE9ZnVuY3Rpb24oeCxiLGMpe3g/bigiRmFpbGVkIHppcHBpbmc6ICIrKCh4fHwidW5rbm93biBlcnJvciIpKyIiKS50cnVuY2F0ZSgxMDApKTooYiYmYi5sZW5ndGgmJihkLndyaXRlKGIpLGEuYnl0ZXMrPWIubGVuZ3RoKSxjJiYoaT9uKCJBYm9ydGVkIik6bSgpKSl9O3ZhciBmPXguX2F0dGFjaG1lbnRzfHx7fSxnPU9iamVjdC5yZWplY3QoeCwiX2F0dGFjaG1lbnRzIik7T2JqZWN0LnNpemUoZikmJihnLl9hdHRhY2htZW50cz17fSxPYmplY3Qua2V5cyhmKS5mb3JFYWNoKHg9PmcuX2F0dGFjaG1lbnRzW3hdPU9iamVjdC5yZWplY3QoZlt4XSwiZGF0YSIpKSksayhqKyIvXy5qc29uIixoKEpTT04uc3RyaW5naWZ5KGcsbnVsbCwiICAiKSkpLE9iamVjdC5zaXplKGYpJiZPYmplY3Qua2V5cyhmKS5mb3JFYWNoKGZ1bmN0aW9uKHgpe2soaisiLyIreCxVaW50OEFycmF5LmZyb20od2luZG93LmF0b2IoZlt4XS5kYXRhKSx4PT54LmNoYXJDb2RlQXQoMCkpKX0pLGMuZW5kKCl9ZnVuY3Rpb24gayh4LGEpe2EuYnl0ZUxlbmd0aDt2YXIgYj1uZXcgZmZsYXRlLkFzeW5jWmlwRGVmbGF0ZSh4KTtjLmFkZChiKSxiLnB1c2goYSwhMCl9ZnVuY3Rpb24gbSgpe2QuY2xvc2UoKSxsKCksZnVuY3Rpb24oKXtjdy5saWIubm90ZShiLk1TR19ETFpJUF9PSywib2siKX0uZGVsYXkoMWUzKX1mdW5jdGlvbiBuKHgpe2k9ITAsY3cubGliLm5vdGUoeCwiZXJyb3IiLDZlMyksZC5hYm9ydCgpLGMudGVybWluYXRlKCksbCgpfX0pLmZhaWwoZnVuY3Rpb24oKXtsKCksY3cubGliLm5vdGUoYi5NU0dfRExaSVBfRVJST1IsImVycm9yIil9KX0sTmV3RG9jVGd0OntpZDoiY3cuUGhvdG9uLiRkb2MuTmV3RG9jVGd0Iixpbmhlcml0OlsiUGhvIl0sZGF0YTp7fSxuZXdfZGI6IiIsbmV3X2lkOiIiLGluaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPWEuZGF0YTthLm5ld19kYj1iLnBhdGhbMF0sYS5uZXdfaWQ9Yi5kb2MuX2lkLHguaHRtbCgkLm15LmZvcm1nZW4oYS5IVE1MKS5hc3NpZ24oYS5sYW5nKSl9LHVpOnsiI3RndC1kYiI6e2luaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpczt4LnNlbGVjdDIoe2RhdGE6T2JqZWN0LmtleXMoYS5QaG8oIkFsbCIpKS5zb3J0KCkubWFwKGZ1bmN0aW9uKHgpe3JldHVybntpZDp4LHRleHQ6eH19KSxtdWx0aXBsZTohMX0pfSxiaW5kOiJ0aGlzLm5ld19kYiJ9LCIjdGd0LWlkIjp7YmluZDoidGhpcy5uZXdfaWQiLGNoZWNrOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcy5sYW5nO3JldHVybiBhP2E9PXguZG9jLl9pZCYmdGhpcy5uZXdfZGI9PXgucGF0aFswXT9iLkVSUl9JRF9FUTphJiYhL15fZGVzaWduXC8uKyQvLnRlc3QoYSkmJiJfIj09YVswXT9iLkVSUl9JRF9VU0M6dm9pZCAwOmIuRVJSX0lEX1JFUX0sd2F0Y2g6WyIjdGd0LWRiIiwiI2J0bi1nZW5pZCJdfSwiI2J0bi1nZW5pZCI6ZnVuY3Rpb24oeCxhKXtpZihudWxsIT1hKXt2YXIgYj10aGlzLGM9eC5kb2MuX2lkLnNwbGl0KCI6IiksZD1jLmxlbmd0aD4xP2MuZnJvbSgxKS5qb2luKCI6Iik6eC5kb2MuX2lkLGU9Yi5uZXdfaWQ7aWYoL15fZGVzaWduXC8vLnRlc3QoZCkpZT0vXGR7MSwzfSQvLnRlc3QoZCk/ZC5yZXBsYWNlKC9cZHsxLDN9JC8sIiIpKygrZC5tYXRjaCgvXGR7MSwzfSQvKVswXSsxKTpkKyIxIjtlbHNlIGlmKC9eY3ctLiskLy50ZXN0KGQpKWU9ZC5yZXBsYWNlKC9bYS16MC05XXs0fSQvLCIiKStjdy5saWIucmFuZDQoKTtlbHNlIGlmKC9eX2xvY2FsXC8vLnRlc3QoZCkpZT0iX2xvY2FsLyIrY3cubGliLnJhbmQ4KCk7ZWxzZSBpZigvXlxkezEyfVthLXowLTldezh9JC8udGVzdChkKSllPShEYXRlLm5vdygpKyIiKS50bygxMikrY3cubGliLnJhbmQ4KCk7ZWxzZSBpZigvXlswLTldKyQvLnRlc3QoZCkpZT0iIixkLmxlbmd0aC50aW1lcyh4PT5lKz0iIitOdW1iZXIucmFuZG9tKDAsOSkpO2Vsc2V7aWYoIS9bYS16MC05XS9pLnRlc3QoZCl8fC9eWzAtOWEtZl17MzJ9JC8udGVzdChkKSlyZXR1cm4gYi5SZXEoWyJfdXVpZHMiLHtjb3VudDozfV0pLnRoZW4oZnVuY3Rpb24oeCl7aigoeC51dWlkc3x8W2N3LmxpYi5yYW5kOCgpK2N3LmxpYi5yYW5kOCgpXSkuc2FtcGxlKCkpLGIubXkucmVjYWxjKCIjdGd0LWlkIiksYi5teS5jaGVjaygiI3RndC1pZCIpfSksdm9pZCAwO3ZhciBmPVN0cmluZy5mcm9tQ2hhckNvZGUsZz1bXSxoPVtdLGk9W107MjYuLnRpbWVzKHg9PmcucHVzaChmKDY1K3gpKSksMjYuLnRpbWVzKHg9PmgucHVzaChmKDk3K3gpKSksMTAuLnRpbWVzKHg9PmkucHVzaCgiIit4KSksZT1kLmNoYXJzKCkubWFwKGZ1bmN0aW9uKHgpe3JldHVybi9eW2EtejAtOV0kL2kudGVzdCh4KT8vXltBLUZdJC8udGVzdCh4KT9nLnRvKDYpLnNhbXBsZSgpOi9eW0ctWl0kLy50ZXN0KHgpP2cuc2FtcGxlKCk6L15bYS1mXSQvLnRlc3QoeCk/aC50byg2KS5zYW1wbGUoKTovXltnLXpdJC8udGVzdCh4KT9oLnNhbXBsZSgpOmkuc2FtcGxlKCk6eH0pLmpvaW4oIiIpfXJldHVybiBqKGUpLHZvaWQgMH1mdW5jdGlvbiBqKHgpe2IubmV3X2lkPWMubGVuZ3RoPjE/Y1swXSsiOiIreDp4fX0sIiNidG4tYXBwbHkiOntiaW5kOmZ1bmN0aW9uKHgsYSl7bnVsbCE9YSYmKHgucGF0aFswXT10aGlzLm5ld19kYix4LmRvYy5faWQ9dGhpcy5uZXdfaWQsdGhpcy5teS5jb21taXQoKSl9LGNzczp7IjpkaXNhYmxlZCI6ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5teS52YWxpZCgpfX0sd2F0Y2g6WyIjdGd0LWRiIiwiI3RndC1pZCJdfSwiI2J0bi1jYW5jZWwiOmZ1bmN0aW9uKHgsYSl7bnVsbCE9YSYmdGhpcy5teS5jYW5jZWwoKX19LEhUTUw6Wyc8ZGl2IGNsYXNzPSJmczEzMCBsaDE0MCBmdzUwMCBtYjciPntUWFRfVElUTEV9PC9kaXY+Jyx7cm93OiI0NTBweCIsbGFiZWw6IjEwMHB4Iixyb3dDc3M6Im15LXJvdyBwYjgiLGxhYmVsQ3NzOiJteS1sYWJlbCBmczkwIn0sWyJ7TEJMX0RCfSIsImlucCN0Z3QtZGIudzEwMHAuZnMxMTUiLHtzcGVsbGNoZWNrOiJmYWxzZSIsYXV0b2NvbXBsZXRlOiJvZmYifV0se2xhYmVsQ3NzOiJteS1sYWJlbCBmczkwIHB0MTAifSxbIntMQkxfSUR9IiwnPGRpdiBjbGFzcz0iZGliIHZhdCIgc3R5bGU9IndpZHRoOmNhbGMoMTAwJSAtIDQwcHgpOyI+JywiaW5wI3RndC1pZC53MTAwcC5mczEwMCIse3BsYzoiTm9uLWVtcHR5IHN0cmluZyIsc3BlbGxjaGVjazoiZmFsc2UiLGF1dG9jb21wbGV0ZToib2ZmIn0sIm1zZyIsIjwvZGl2PiIsImJ1dCNidG4tZ2VuaWQudzM2Lm1sNC5mciIse3R4dDonPHNwYW4gY2xhc3M9ImZpLWxvb3AiPjwvc3Bhbj4nLHRpcDoie0JUTl9HRU5JRH0ifV0sWyIgIiwnPGRpdiBjbGFzcz0iZnM4NSBsaDEzMCBkaWIgdmF0IG82MCBwYjMiPntUWFRfV0FSTn08L2Rpdj4nXSwnPGRpdiBjbGFzcz0icHQxNSBidGQiPicsJzxidXR0b24gaWQ9ImJ0bi1hcHBseSIgY2xhc3M9Im1hcmtmb2N1cyBncmVlbiBtcjIiPntCVE5fQVBQTFl9PC9idXR0b24+JywnPGJ1dHRvbiBpZD0iYnRuLWNhbmNlbCIgY2xhc3M9Im1hcmtmb2N1cyI+e0JUTl9DQU5DRUx9PC9idXR0b24+JywiPC9kaXY+Il0sbGFuZzp7ZW46e1RYVF9USVRMRToiTmV3IGRvYyBsb2NhdGlvbiIsTEJMX0RCOiJUYXJnZXQgREIiLExCTF9JRDoiTmV3IGRvYyBfaWQiLEJUTl9HRU5JRDoiR2VuZXJhdGUgbmV3IGRvYyBfaWQiLEJUTl9BUFBMWToiQ2xvbmUgZG9jIixCVE5fQ0FOQ0VMOiJDYW5jZWwiLFRYVF9XQVJOOiJDbG9uaW5nIGRvZXNu4oCZdCBzYXZlIG5ldyBkb2MgaW1tZWRpYXRlbHksIGp1c3Qgb3BlbnMgaXQgaW4gZWRpdG9yIHRvIHNhdmUgbGF0ZXIuIixFUlJfSURfRVE6Ik5ldyBfaWQgbXVzdCBiZSBkaWZmZXJlbnQsIG9yIGNoYW5nZSBEQiIsRVJSX0lEX1JFUToiTm9uLWVtcHR5IHN0cmluZyByZXF1aXJlZCIsRVJSX0lEX1VTQzoiRG9jIF9pZCBjYW7igJl0IHN0YXJ0IHdpdGggXyBzeW1ib2wifX0sc3R5bGU6eyIiOiJmb250LXNpemU6MTZweDsgbGluZS1oZWlnaHQ6MjJweDsifX19LCRkaWZmOntpZDoiY3cuUGhvdG9uLiRkaWZmIixsYW5nOnt9LHJlcXVpcmU6W3sid2luZG93Lmpzb25kaWZmcGF0Y2giOiJsaWIvZGlmZi5qcyJ9XSxwYXJhbXM6e3Jlc3R5bGU6MTAwLHN0cmljdDohMH0sZGF0YTp7aWQ6IiIscmV2OlsiIiwiIl0sc2tpcDpbIl9yZXYiLCJsb2ciXSxkb2M6e30sY29uZmxpY3RzOltdLHJldnM6W10scGFyYW1zOltdLGpzb246W3t9LHt9XX0saGFzaDpmdW5jdGlvbigpe3JldHVybiJkaWZmIn0saWNvQ3NzOmZ1bmN0aW9uKHgpe3JldHVybiJmaS1jb250cmFzdCBmczkwIn0sdGl0bGU6ZnVuY3Rpb24oKXt2YXIgeD10aGlzLmRhdGEsYT0iRGlmZiAiK3RoaXMuZGF0YS5pZDtyZXR1cm4geC5yZXZbMF0hPXgucmV2WzFdJiYoYSs9IiwgezF9fnsyfSIuYXNzaWduKHgucmV2WzBdP3gucmV2WzBdLnNwbGl0KCItIilbMF06Imxhc3QiLHgucmV2WzFdP3gucmV2WzFdLnNwbGl0KCItIilbMF06Imxhc3QiKSksYX0sbWF0Y2g6ZnVuY3Rpb24oeCxhKXtpZighKHgubGVuZ3RoPDMpJiZhJiYiX2RpZmYiPT14WzFdKXJldHVybiJfZGVzaWduIj09eFsyXSYmeFszXSYmKHhbM109eFsyXSsiLyIreFszXSx4LnJlbW92ZUF0KDIpKSx7dGl0bGU6IkRpZmYgIit0aGlzLnRydW5jKHhbMl0sMjApLGFwcERhdGE6e2lkOnhbMl0scmV2OlsoeFszXXx8IiIpLnJlcGxhY2UoL15cRCsvLCIiKSwoeFs0XXx8IiIpLnJlcGxhY2UoL15cRCsvLCIiKV0scGF0aDp4fX19LGluaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPWEuZGF0YTt0cnl7YS5EaWZmPWpzb25kaWZmcGF0Y2guY3JlYXRlKHtvYmplY3RIYXNoOmZ1bmN0aW9uKHgsYSl7aWYoT2JqZWN0LmlzQXJyYXkoeCkmJk9iamVjdC5pc051bWJlcih4WzBdKSlyZXR1cm4geFswXSsiIjtpZihPYmplY3QuaXNPYmplY3QoeCkpe2lmKHZvaWQgMCE9PXguX2lkKXJldHVybiB4Ll9pZCsiIjtpZih2b2lkIDAhPT14LmlkKXJldHVybiB4LmlkKyIiO2lmKHZvaWQgMCE9PXgubmFtZSlyZXR1cm4geC5uYW1lKyIifXJldHVybiIkJGluZGV4OiIrYX19KX1jYXRjaCh4KXt9cmV0dXJuIGIucGF0aC5sZW5ndGg+MyYmKGIucmV2WzBdPShiLnBhdGhbM118fCIiKS5yZXBsYWNlKC9eXEQrLywiIiksYi5yZXZbMV09KGIucGF0aFs0XXx8IiIpLnJlcGxhY2UoL15cRCsvLCIiKSkseC50aGVuKGZ1bmN0aW9uKGIpe2EubmljZVNjcm9sbCh4LmZpbmQoIiNkaWZmIikpfSksYS5HZXREb2MoKS50aGVuKGZ1bmN0aW9uKCl7eC5odG1sKGEuSFRNTC5hc3NpZ24oYS5sYW5nKSl9KX0sUmV2c0xpc3Q6ZnVuY3Rpb24oKXt2YXIgeD10aGlzO3guZGF0YTt4LlBobygiJGRvYyIpLlJldnNMaXN0LmNhbGwoeCwiI2RvYy1yZXYwIikseC5QaG8oIiRkb2MiKS5SZXZzTGlzdC5jYWxsKHgsIiNkb2MtcmV2MSIpfSxHZXRSZXZzOmZ1bmN0aW9uKCl7dmFyIHg9dGhpcyxhPXguZGF0YSxiPVtdO3JldHVybiBhLnJldlswXT9hLmpzb25bMF0uX3JldiYmYS5yZXZbMF09PWEuanNvblswXS5fcmV2fHxiLnB1c2goeC5SZXEoe3VybDpbYS5wYXRoWzBdLGEuaWQse3JldjphLnJldlswXX1dfSkudGhlbihmdW5jdGlvbih4KXthLmpzb25bMF09eH0pKTphLmpzb25bMF09JC5leHRlbmQoITAse30sYS5kb2MpLGEucmV2WzFdP2EuanNvblsxXS5fcmV2JiZhLnJldlsxXT09YS5qc29uWzFdLl9yZXZ8fGIucHVzaCh4LlJlcSh7dXJsOlthLnBhdGhbMF0sYS5pZCx7cmV2OmEucmV2WzFdfV19KS50aGVuKGZ1bmN0aW9uKHgpe2EuanNvblsxXT14fSkpOmEuanNvblsxXT0kLmV4dGVuZCghMCx7fSxhLmRvYyksUS5hbGxTZXR0bGVkKGIpfSxkaWU6ZnVuY3Rpb24oeCl7dmFyIGE9eC5maW5kKCIjZGlmZiIpLmdldE5pY2VTY3JvbGw7ImZ1bmN0aW9uIj09dHlwZW9mIGEmJmEoKS5yZW1vdmUoKX0sdWk6eyIjYnRuLXJvb3QiOntkZWxheToxMDAsYmluZDpmdW5jdGlvbih4LGEsYil7dmFyIGM9dGhpcy5wMnU7Yi5hdHRyKCJocmVmIiwiIyIrYyh4LnBhdGhbMF0pKSxiLmF0dHIoInRpdGxlIix0aGlzLmxhbmcuVElQX1VQLmFzc2lnbih4LnBhdGhbMF0pKX19LCIjZG9jLWlkIjp7YmluZDpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9dGhpcy5wMnUsYz0nPGEgY2xhc3M9InRkbiIgaHJlZj0iI3sxfSIgdGl0bGU9InszfSI+ezJ9PC9hPicuYXNzaWduKGIoeC5wYXRoWzBdKSxhLnRhZ0Vtb2ppKGEudHJ1bmMoeC5wYXRoWzBdLDE1KS5lc2NhcGVIVE1MKCkpLHgucGF0aFswXS5lc2NhcGVIVE1MKCkpLGQ9JzxhIGNsYXNzPSJ0ZG4iIGhyZWY9IiN7MX0iIHRpdGxlPSJ7M30iPnsyfTwvYT4nLmFzc2lnbihiKHgucGF0aFswXSkrIi8iK2IoeC5pZCkrKHgucmV2WzBdPyIvXyIreC5yZXZbMF06IiIpLGEudGFnRW1vamkoYS50cnVuYyh4LmlkLDE1MCkuZXNjYXBlSFRNTCgpKSx4LmlkLmVzY2FwZUhUTUwoKSk7cmV0dXJuWyc8c3BhbiBjbGFzcz0iZnMxNTAgbGgxMzAgeGdyYXkgbXQtMSBvODAiPicsJzxzcGFuIGNsYXNzPSJvOTAiPkRpZmYgPC9zcGFuPicsJzxzcGFuIGNsYXNzPSIiPnsyfTwvc3Bhbj4nLCI8L3NwYW4+Il0uam9pbigiIikuYXNzaWduKGMsZCl9LHdhdGNoOlsiI2RvYy1yZXYwIl19LCIjcHJvcC1oaWRlIjp7aW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzO2Euc2VsZWN0Mih4LHttdWx0aXBsZTohMCx0YWdzOlsiX3JldiIsImxvZyJdLHBsYWNlaG9sZGVyOmEubGFuZy5QTENfQkFOfSl9LGJpbmQ6InNraXAifSwiI2RvYy1yZXYwIjp7YmluZDoicmV2LjAiLGluaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpczthLlBobygiJGRvYyIpLlJldnNMaXN0LmNhbGwoYSwiI2RvYy1yZXYwIil9fSwiI2RvYy1yZXYxIjp7YmluZDoicmV2LjEiLGluaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpczthLlBobygiJGRvYyIpLlJldnNMaXN0LmNhbGwoYSwiI2RvYy1yZXYxIil9fSwnaW5wdXRbbmFtZT0ic2V0dGluZ3MiXSc6InBhcmFtcyIsIiNkaWZmIjp7ZGVsYXk6MTAwLGJpbmQ6ZnVuY3Rpb24oeCl7dmFyIGEsYixjLGQ9dGhpcyxlPXguanNvbixmPXguc2tpcC5zbGljZSgwKS5jb25jYXQoWyJfY29uZmxpY3RzIiwiX3JldnNfaW5mbyJdKTtyZXR1cm4iIj09eC5yZXZbMF0mJiIiPT14LnJldlsxXXx8eC5yZXZbMF09PXgucmV2WzFdPyc8ZGl2IGNsYXNzPSJ0YWMgcDUwIGZzMTUwIG9yYW5nZSI+ezF9PC9kaXY+Jy5hc3NpZ24oZC5sYW5nLlRYVF9TRUxFQ1QpOihiPU9iamVjdC5yZWplY3QoZVswXSxmKSxjPU9iamVjdC5yZWplY3QoZVsxXSxmKSxudWxsPT0oYT1kLkRpZmYuZGlmZihiLGMpKT8nPGRpdiBjbGFzcz0idGFjIHA1MCBmczEyMCBncmVlbiI+ezF9PC9kaXY+Jy5hc3NpZ24oZC5sYW5nLlRYVF9OT0RJRkYpOigtMT09eC5wYXJhbXMuaW5kZXhPZigidW5jaGFuZ2VkIik/anNvbmRpZmZwYXRjaC5mb3JtYXR0ZXJzLmh0bWwuaGlkZVVuY2hhbmdlZCgpOmpzb25kaWZmcGF0Y2guZm9ybWF0dGVycy5odG1sLnNob3dVbmNoYW5nZWQoKSxkLnRhZ0Vtb2ppKGpzb25kaWZmcGF0Y2guZm9ybWF0dGVycy5odG1sLmZvcm1hdChhLGIpKSkpfSx3YXRjaDpbJ2lucHV0W25hbWU9InNldHRpbmdzIl0nLCIjcHJvcC1oaWRlIl19LCIjZGlmZi1wcm94eSI6e2RlbGF5OjMwMCxiaW5kOmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXM7KCIiIT14LnJldlswXXx8IiIhPXgucmV2WzFdfHx4Lmpzb25bMF0uX3JldikmJmEuR2V0UmV2cygpLnRoZW4oZnVuY3Rpb24oKXthLm15LmNoZWNrKCIjZGlmZiIpfSk7eC5wYXRoLnNsaWNlKDApO3gucGF0aFszXT09Il8iK3gucmV2WzBdJiZ4LnBhdGhbNF09PSJfIit4LnJldlsxXXx8KHgucGF0aFszXT0iXyIreC5yZXZbMF0seC5wYXRoWzRdPSJfIit4LnJldlsxXSwkLm15LnJhZGlvKCJwYXRoY2hhbmdlIix7aWQ6eC50YWJpZCxwYXRoOngucGF0aCx0aXRsZTphLnRpdGxlKCl9KSl9LHdhdGNoOlsiI2RvYy1yZXYwIiwiI2RvYy1yZXYxIl19fSxIVE1MOic8ZGl2IGlkPSJhLWhlYWQiIGNsYXNzPSJhcHAtaGVhZCBudyBwdDE4IHBsMjAgcHIxMCBsaDE2MCI+PGEgaWQ9ImJ0bi1yb290IiBjbGFzcz0idzM3IGJ1dHRvbiBtcjYgdGRuIGRpYiB2YXQgcGwwIHByMCBmdzYwMCIgdGl0bGU9IntUSVBfVVB9Ij4uLi88L2E+PGRpdiBpZD0iZG9jLWlkIiBjbGFzcz0iZGliIHZhdCBudyBvaCBlbGwgbXI2Ij48L2Rpdj48ZGl2IGNsYXNzPSJkaWIgdmF0IHcxODAgbXIiPjxpbnB1dCBpZD0iZG9jLXJldjAiIHR5cGU9InRleHQiIGNsYXNzPSJ3MTAwcCBmczExMCB2YXQiPjwvZGl2PjxkaXYgY2xhc3M9ImRpYiB2YXQgbzgwIHRhYyB3MzAgcHQxIj52czwvZGl2PjxkaXYgY2xhc3M9ImRpYiB2YXQgdzE4MCI+PGlucHV0IGlkPSJkb2MtcmV2MSIgdHlwZT0idGV4dCIgY2xhc3M9IncxMDBwIGZzMTEwIHZhdCI+PC9kaXY+PGRpdiBjbGFzcz0iZnIiPjxkaXYgY2xhc3M9ImRpYiB2YXQgdzI1MCBtbDEwIG1yOCI+PGRpdiBjbGFzcz0iZGliIHZhdCB3NTAgcHI3IHRhciBwdDEiPntUWFRfQkFOfTwvZGl2PjxkaXYgY2xhc3M9IncyMDAgZGliIHZhdCBmczkwIj48aW5wdXQgaWQ9InByb3AtaGlkZSIgdHlwZT0idGV4dCIgY2xhc3M9IncxMDBwIGZzMTEwIHZhdCI+PC9kaXY+PC9kaXY+PGxhYmVsIGNsYXNzPSJ3MTIwIGRpYiB2YXQgcHQxIGxoMTIwIiBzdHlsZT0iY29sb3I6aW5oZXJpdDsiPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ic2V0dGluZ3MiIHZhbHVlPSJ1bmNoYW5nZWQiIGNsYXNzPSJ2YW0gZnMxMDUiLz48c3BhbiBjbGFzcz0iZGliIHZhdCBwdDEgcGw3Ij57TEJMX1NSQ308L3NwYW4+PC9sYWJlbD48L2Rpdj48L2Rpdj48c2VjdGlvbiBpZD0idmlldy1wYW5lbHMiIGNsYXNzPSJ3MTAwcCBwYW5lbGhlaWdodCBmZWF0aGVyIHBsMjAiPjxkaXYgaWQ9ImRpZmYiIGNsYXNzPSJqc29uZGlmZiB3MTAwcCBwYW5lbGhlaWdodCBwcjIwIHB0MTAgcGIxNiBsaDEzMCI+PC9kaXY+PC9zZWN0aW9uPjxkaXYgaWQ9ImRpZmYtcHJveHkiPjwvZGl2Picsc3R5bGU6eyIgI2RvYy1pZCI6Im1heC13aWR0aDpjYWxjKDEwMCUgLSA4NDVweCk7IG1pbi13aWR0aDoxNTBweDsiLCIgcHJlIjp7IiI6ImZvbnQtc2l6ZTppbmhlcml0OyBvdmVyZmxvdzpoaWRkZW47IHRleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7IHdoaXRlLXNwYWNlOiBhdXRvOyB3b3JkLWJyZWFrOmF1dG87IiwiICI6ZnVuY3Rpb24oeCl7cmV0dXJuIm1heC13aWR0aDp7MX1weDsiLmFzc2lnbih4LndpZHRoKCktMjIwKX19LCIgLmpzb25kaWZmcGF0Y2gtZGVsdGEiOiJwYWRkaW5nLWxlZnQ6MDsgZm9udC1zaXplOmluaGVyaXQ7In0sR2V0RG9jOmZ1bmN0aW9uKHgsYSl7dmFyIGIsYyxkPXRoaXMsZT1kLmRhdGEsZj17Y29uZmxpY3RzOiEwLHJldnNfaW5mbzohMH07cmV0dXJuIGQuQnVzeS5kZWJvdW5jZSgyMCkoITApLGI9W2UucGF0aFswXSxlLmlkLGZdLChjPWQuUmVxKGIpLnRoZW4oZnVuY3Rpb24oYil7ZS5kb2M9YixnKGUuZG9jKSxhJiZkLlJldnNMaXN0KCksZC5teS50cmlnZ2VyKCIjc3RhdGUtcHJveHkiLCJyZXNldHRhYmhhc2gubXkiKSx4JiZkLm15LnJlZHJhdygpfSkpLmFsd2F5cyhmdW5jdGlvbigpe2QuQnVzeSghMSl9LmRlYm91bmNlKDUwKSksYztmdW5jdGlvbiBnKHgpe09iamVjdC5pc0FycmF5KHguX3JldnNfaW5mbykmJih4Ll9yZXZzX2luZm89eC5fcmV2c19pbmZvLmZpbHRlcihmdW5jdGlvbih4KXtyZXR1cm4iYXZhaWxhYmxlIj09eC5zdGF0dXN9KSksZS5jb25mbGljdHM9eC5fY29uZmxpY3RzfHxbXSxlLnJldnM9KHguX3JldnNfaW5mb3x8W10pLm1hcChmdW5jdGlvbih4KXtyZXR1cm4geC5yZXZ9KX19fSwkZmlsZTp7aWQ6ImN3LlBob3Rvbi4kZmlsZSIsbGFuZzp7fSxwYXJhbXM6e3Jlc3R5bGU6MjAsc3RyaWN0OiEwfSxkYXRhOntwYXRoOltdLHNlYXJjaDoiIixmbmFtZToiIixmbmFtZTA6IiIsdGV4dDoiIixzcmM6IiIsbWltZToibnVsbCIsZG9jOntfaWQ6IiJ9fSxoYXNoOmZ1bmN0aW9uKCl7cmV0dXJuIGN3LmxpYi5jcmMyKHt0ZXh0OnRoaXMuZGF0YS50ZXh0LnJlcGxhY2UoL1xyXG4vZywiXG4iKX0pfSxpY29Dc3M6ZnVuY3Rpb24oeCl7cmV0dXJuImZpLXBhcGVyY2xpcCBmczkwIn0sdGl0bGU6ZnVuY3Rpb24oKXt2YXIgeD10aGlzLGE9eC5kYXRhLGI9YS5wYXRoLGM9YS5kb2MuX2lkO3JldHVyblt4LnRydW5jKCJfZGVzaWduLyI9PWMudG8oOCk/Il9kIitjLmZyb20oNyk6Il91c2VycyI9PWJbMF0/Yy5mcm9tKDE3KTpjLDgpLCLigIkv4oCJIixhLmZuYW1lXS5qb2luKCIiKX0sbWF0Y2g6ZnVuY3Rpb24oeCxhKXtpZihhKXt2YXIgYj14WzFdLGM9eFsyXTtyZXR1cm4geC5sZW5ndGg+MiYmIl8iIT1jWzBdJiYoIl8iIT1iWzBdfHwvXl9kZXNpZ25cLy8udGVzdChiKSk/e3R5cGU6ImZpbGUiLHRpdGxlOlt0aGlzLnRydW5jKGIsOCkseC5zbGljZSgyKS5qb2luKCIvIildLmpvaW4oIuKAiS/igIkiKSxhcHBEYXRhOntmbmFtZTp4LnNsaWNlKDIpLmpvaW4oIi8iKSxkb2M6e19pZDpifX19OnZvaWQgMH19LHNlYXJjaFJlOm51bGwsQ01wcmVmaXg6IiIsaW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YS5kYXRhO3JldHVybiBiLmZuYW1lMD1iLmZuYW1lLGEuR2V0RmlsZSgpLnRoZW4oZnVuY3Rpb24oKXt4Lmh0bWwoYS5IVE1MLmFzc2lnbihhLmxhbmcpKX0pfSx1aTp7IiNhcHAtc2VhcmNoIjp7ZGVsYXk6MjAsYmluZDpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXM7cmV0dXJuIG51bGwhPWEmJih4LnNlYXJjaD1hKSx4LnNlYXJjaC5sZW5ndGg8Mj9iLnNlYXJjaFJlPW51bGw6Yi5zZWFyY2hSZT1uZXcgUmVnRXhwKCIoIitSZWdFeHAuZXNjYXBlKHguc2VhcmNoKSsiKSIsImkiKSx4LnNlYXJjaH0sY3NzOnsibXktc2VhcmNoIjovXi57Mix9JC99fSwiI2ZvdW5kIjp7ZGVsYXk6MTMwLGluaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpczt4Lm9uKCJjbGljay5teSIsIi5wc2V1ZG9saW5rIixmdW5jdGlvbigpe3ZhciB4PSskKHRoaXMpLnRleHQoKSxiPWEubXkuZmluZCgiI3R4dGVkaXRvciIpLm5leHQoKVswXS5Db2RlTWlycm9yO2Iuc2Nyb2xsSW50b1ZpZXcoe2xpbmU6eCxjaGFyOjF9LDQ4KTt2YXIgYz1mdW5jdGlvbigpe2IuYWRkTGluZUNsYXNzKHgtMSwiYmFja2dyb3VuZCIsImJnLXllbGxvdzQiKSxmdW5jdGlvbigpe2IucmVtb3ZlTGluZUNsYXNzKHgtMSwiYmFja2dyb3VuZCIsImJnLXllbGxvdzQiKX0uZGVib3VuY2UoMTAwKSgpfTtjLmRlYm91bmNlKDEwMCkoKSxjLmRlYm91bmNlKDMwMCkoKX0pfSxiaW5kOmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMuc2VhcmNoUmUsYj1bXTtyZXR1cm4gYSYmKHgudGV4dC5saW5lcygpLmZvckVhY2goZnVuY3Rpb24oeCxjKXtiLmxlbmd0aDwxMDAmJmEudGVzdCh4KSYmYi5wdXNoKGMrMSl9KSxiLmxlbmd0aCk/Wyc8ZGl2IGNsYXNzPSJicjIgeWVsbG93LTEgYmcteWVsbG93NCBwbDcgcHI3IHB0MiBwYjIgZnM5MCBsaDEzMCI+JywiIEZvdW5kIEAgIixiLm1hcChmdW5jdGlvbih4KXtyZXR1cm4nPHNwYW4gY2xhc3M9InBzZXVkb2xpbmsgdGRuIj4nK3grIjwvc3Bhbj4ifSkuam9pbigiLCAiKSwiPC9kaXY+Il0uam9pbigiIik6IiJ9LGNzczp7aGlkZTpmdW5jdGlvbigpe3JldHVybiF0aGlzLnNlYXJjaFJlfX0sd2F0Y2g6IiNhcHAtc2VhcmNoIn0sIiN0eHRlZGl0b3IiOntkZWxheToxMCxpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj1hLmRhdGE7Q29kZU1pcnJvci5mcm9tVGV4dEFyZWEoeFswXSx7bW9kZTphLm1pbWUybW9kZShiLm1pbWUpfHxhLkNNcHJlZml4KyJudWxsIixsaW5lTnVtYmVyczohMCx2aWV3cG9ydE1hcmdpbjoxMDAsc2Nyb2xsYmFyU3R5bGU6KG51bGwsIm5hdGl2ZSIpLGxpbmVXcmFwcGluZzohMCx0YWJTaXplOjIsaW5kZW50V2l0aFRhYnM6ITEsdGhlbWU6ImRlZmF1bHQiLHJlYWRPbmx5OiExLGV4dHJhS2V5czp7IkN0cmwtUyI6ZnVuY3Rpb24oKXthLlNhdmVGaWxlKCl9LCJDbWQtUyI6ZnVuY3Rpb24oKXthLlNhdmVGaWxlKCl9LCJDdHJsLUYiOmMsIkNtZC1GIjpjfSxzdHlsZVNlbGVjdGVkVGV4dDohMCxoaWdobGlnaHRTZWxlY3Rpb25NYXRjaGVzOnttaW5DaGFyczozfX0pO3hbMF0ubmV4dFNpYmxpbmcuQ29kZU1pcnJvcjtmdW5jdGlvbiBjKCl7dmFyIGM9eFswXS5uZXh0U2libGluZy5Db2RlTWlycm9yLmdldFNlbGVjdGlvbigpO2MubGVuZ3RoPjImJihiLnNlYXJjaD1iLnNlYXJjaD09Yz8iIjpjLGEubXkucmVjYWxjKCIjYXBwLXNlYXJjaCIpLGEubXkuY2hlY2soIiNhcHAtc2VhcmNoIikpfX0sYmluZDoidGV4dCJ9LCIjYXBwLXRpdGxlIjp7ZGVsYXk6NTAsYmluZDpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YS5wMnUsYz0nPGEgY2xhc3M9InRkbiIgaHJlZj0iI3sxfSIgdGl0bGU9InszfSI+ezJ9PC9hPicuYXNzaWduKGIoeC5wYXRoWzBdKSx0aGlzLnRydW5jKHgucGF0aFswXSwxNSkuZXNjYXBlSFRNTCgpLHgucGF0aFswXS5lc2NhcGVIVE1MKCkpLGQ9eC5kb2MuX2lkfHx4LnBhdGhbMV0rKCJfZGVzaWduIj09eC5wYXRoWzFdPyIvIit4LnBhdGhbMl06IiIpLGU9JzxhIGNsYXNzPSJ0ZG4iIGhyZWY9InsxfSIgdGl0bGU9InszfSI+ezJ9PC9hPicuYXNzaWduKFsiIyIsYih4LnBhdGhbMF0pLGIoZCldLmpvaW4oIi8iKS5lc2NhcGVIVE1MKCksYS50YWdFbW9qaShkLmVzY2FwZUhUTUwoKSksZC5sZW5ndGg+MTU/ZC5lc2NhcGVIVE1MKCk6IiIpO3JldHVyblsnPHNwYW4gY2xhc3M9ImZzMTQwIGxoMTMwIHhncmF5IG84MCI+JywnPHNwYW4gY2xhc3M9Im84MCI+ezJ9PC9zcGFuPuKAiS/igIk8c3BhbiBjbGFzcz0iIj57MX08L3NwYW4+4oCJL+KAiTxzcGFuIGNsYXNzPSIiPnszfTwvc3Bhbj4nLCI8L3NwYW4+Il0uam9pbigiIikuYXNzaWduKGUsYyxhLnRhZ0Vtb2ppKHguZm5hbWUuZXNjYXBlSFRNTCgpKSl9LHdhdGNoOlsiI2FwcC1yZXYiLCIjdHh0ZWRpdG9yIl19LCIjZWRzdGF0cyI6e2RlbGF5OjEwMCxiaW5kOmZ1bmN0aW9uKHgsYSl7aWYobnVsbD09YSlyZXR1cm4gdGhpcy5sYW5nLk1TR19TVEFUUyh4LnRleHQuc3BsaXQoIlxuIikubGVuZ3RoLFsuLi54LnRleHRdLmxlbmd0aCx1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoeC50ZXh0KSkubGVuZ3RoKX0sd2F0Y2g6WyIjdHh0ZWRpdG9yIl19LCIjYnRuLXJvb3QiOntkZWxheToxMDAsYmluZDpmdW5jdGlvbih4LGEsYil7dmFyIGM9dGhpcy5wMnU7Yi5hdHRyKCJocmVmIiwiIyIrYyh4LnBhdGhbMF0pKyIvIitjKHgucGF0aFsxXSkpfX0sIiNidG4tcmVsb2FkIjp7YmluZDpmdW5jdGlvbih4LGEpe251bGwhPWEmJnRoaXMuR2V0RmlsZSgpfX0sIiNidG4tZmlsZS1zYXZlIjp7YmluZDpmdW5jdGlvbih4LGEpe251bGwhPWEmJnRoaXMuY21kU2F2ZSgpfX19LG1pbWUybW9kZTpmdW5jdGlvbih4KXt2YXIgYT0ibnVsbCIsYj17amF2YXNjcmlwdDovXC8oamF2YXNjcmlwdHxqc29uKSQvaSxodG1sbWl4ZWQ6L1wvKGh0bWx8aHRtfHN2Z1wreG1sKSQvaSxjc3M6L1wvKGNzc3xsZXNzKSQvaSx4bWw6L1wreG1sJC9pfTtyZXR1cm4gT2JqZWN0LmtleXMoYikuZm9yRWFjaChmdW5jdGlvbihjKXsibnVsbCI9PWEmJmJbY10udGVzdCh4KSYmKGE9Yyl9KSx0aGlzLkNNcHJlZml4K2F9LGRpZTpmdW5jdGlvbih4KXt2YXIgYT14LmZpbmQoIiNlZGNvbnRhaW5lciIpLmdldE5pY2VTY3JvbGw7ImZ1bmN0aW9uIj09dHlwZW9mIGEmJmEoKS5yZW1vdmUoKX0sY21kU2F2ZTpmdW5jdGlvbigpe3RoaXMuU2F2ZUZpbGUoKX0sSFRNTDonPGRpdiBpZD0iYS1oZWFkIiBjbGFzcz0iYXBwLWhlYWQgbncgcHQxOCBwbDIwIHByMjAgbGgxNjAiPjxkaXYgY2xhc3M9ImZyIHcxNTUgZnM5NSI+PGRpdiBjbGFzcz0iZmktbWFnbmlmeWluZy1nbGFzcyBibHVlIG81MCBmczk1IiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB6LWluZGV4OiArMTsgbGVmdDogOHB4O3RvcDogMC4yZW07Ij48L2Rpdj48aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImFwcC1zZWFyY2giIGNsYXNzPSJ1aS1zZWFyY2ggdzEwMHAgbWwwIG1yMCBtdDAgcHIxMCIgc3BlbGxjaGVjaz0iZmFsc2UiIGF1dG9jb21wbGV0ZT0ib2ZmIiBwbGFjZWhvbGRlcj0ie1BMQ19TRUFSQ0h9IiBzdHlsZT0iYmFja2dyb3VuZC1pbWFnZTpub25lO3BhZGRpbmctcmlnaHQ6MTlweCFpbXBvcnRhbnQ7Ij48c3BhbiBjbGFzcz0iZmkteCBmczgwIGRpYiB2YXQgcHQyIGJsdWUgdWktc2VhcmNoLWNsZWFyIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LTE5cHghaW1wb3J0YW50OyJvbmNsaWNrPSIkKHRoaXMpLnNpYmxpbmdzKFwnaW5wdXQ6ZXEoMClcJykudmFsKFwnXCcpLmJsdXIoKSI+PC9zcGFuPjwvZGl2PjxhIGlkPSJidG4tcm9vdCIgY2xhc3M9InczOCBidXR0b24gbXIyIHRkbiBkaWIgdmF0IHBsMCBwcjAgZnc2MDAiIHRpdGxlPSJ7VElQX1VQfSI+Li4vPC9hPjxidXR0b24gaWQ9ImJ0bi1yZWxvYWQiIGNsYXNzPSJ3MzggbXI4IiB0aXRsZT0ie1RJUF9SRUxPQUR9Ij48c3BhbiBjbGFzcz0iZmktbG9vcCI+PC9zcGFuPjwvYnV0dG9uPjxkaXYgaWQ9ImFwcC10aXRsZSIgY2xhc3M9ImRpYiB2YXQgZWxsIG1yMjAgbnciPjwvZGl2PjxkaXYgY2xhc3M9Im53IGRpYiB2YXQiPjxidXR0b24gaWQ9ImJ0bi1maWxlLXNhdmUiIGNsYXNzPSJncmVlbiBtcjIiPntCVE5fU0FWRX08L2J1dHRvbj48L2Rpdj48ZGl2IGlkPSJlZHN0YXRzIiBjbGFzcz0ibXQzIG1yMTUgZnM5MCBncmF5MiBmciI+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0icGFuZWxoZWlnaHQgcGwyMCBwcjIwIHB0MTYgcGIxNiI+PGRpdiBpZCA9ICJlZGNvbnRhaW5lciIgY2xhc3M9InBhbmVsaGVpZ2h0LTMyIGJhcyBvaCBicjIiIHN0eWxlPSJvdXRsaW5lOm5vbmU7Ij48dGV4dGFyZWEgaWQ9InR4dGVkaXRvciIgY2xhc3M9IncxMDBwIHBhbmVsaGVpZ2h0LTMyIj48L3RleHRhcmVhPjwvZGl2PjxkaXYgaWQ9ImZvdW5kIiBjbGFzcz0iaGlkZSB3MTQ1IiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDorMzt0b3A6MjFweDtyaWdodDoyNHB4OyI+PC9kaXY+PC9kaXY+JyxzdHlsZTp7IiAuQ29kZU1pcnJvciI6ImZvbnQtc2l6ZTo4NyUhaW1wb3J0YW50O2hlaWdodDoxMDAlOy13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNoOyIsIiAuQ29kZU1pcnJvci1zY3JvbGwiOmZ1bmN0aW9uKHgpe3JldHVybiJtaW4taGVpZ2h0OiIrKHRoaXMuUGhvKCJQYW5lbEhlaWdodCIpLTM0KSsicHg7In0sIiAubXktbW9kYWwtZm9ybSI6eyIgLkNvZGVNaXJyb3IgLkNvZGVNaXJyb3ItbGluZXMiOiJsaW5lLWhlaWdodDoxN3B4OyIsIiAuQ29kZU1pcnJvci1zY3JvbGwiOiJtaW4taGVpZ2h0OjE1MHB4O21heC1oZWlnaHQ6Y2FsYygxOCAqIDE3cHggKyA2cHgpOyIsIiAuQ29kZU1pcnJvci1saW5lbnVtYmVycyI6InRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zczsiLCIuZWQtZXJyb3IgLkNvZGVNaXJyb3ItbGluZW51bWJlcnMiOiJiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LCAyMDAsIDIwMCwgMC43NSk7IiwiIC5Db2RlTWlycm9yIjoibWluLWhlaWdodDoxNTBweDsgaGVpZ2h0OmF1dG87IiwiIC5idXR0b25zIGJ1dHRvbiI6Im1hcmdpbi1yaWdodDogMnB4O3BhZGRpbmc6IDAuNGVtIDAuN2VtIDAuNGVtIDAuN2VtO2ZvbnQtc2l6ZTogOTAlOyJ9LCIgI2FwcC10aXRsZSI6Im1heC13aWR0aDpjYWxjKDEwMCUgLSAzMzBweCAtIDI3MHB4IC0gNDBweCk7In0sR2V0RmlsZTpmdW5jdGlvbigpe3ZhciB4PXRoaXMsYT14LmRhdGEsYj17dXJsOmEucGF0aC5zbGljZSgwKSxkYXRhVHlwZToidGV4dCIsdGltZW91dDozZTQsY2FoY2U6ITEsaGVhZGVyczp7QWNjZXB0OiIqLyoifX07cmV0dXJuIHguQnVzeS5kZWJvdW5jZSgxMCkoITApLHguUmVxKGIpLnRoZW4oZnVuY3Rpb24oYixjKXthLnNyYz1hLnRleHQ9YixhLm1pbWU9Yy5nZXRSZXNwb25zZUhlYWRlcigiY29udGVudC10eXBlIikrIiIseC5teS50cmlnZ2VyKCIjZWRjb250YWluZXIiLCJyZXNldHRhYmhhc2gubXkiKSx4Lm15LnJlZHJhdygpfSkuZmFpbChmdW5jdGlvbigpe30pLmFsd2F5cyhmdW5jdGlvbigpe3guQnVzeSghMSl9LmRlYm91bmNlKDE1KSl9LFNhdmVGaWxlOmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj1hLmRhdGEsYz1iLnBhdGgudG8oIl9kZXNpZ24iPT1iLnBhdGhbMV0/MzoyKSxkPXt1cmw6Yy5zbGljZSgwKSxtZXRob2Q6InB1dCIsaGVhZGVyczp7IlgtQ291Y2gtRnVsbC1Db21taXQiOiJ0cnVlIiwiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24vanNvbiJ9LGRhdGE6IiJ9LGU9JC5EZWZlcnJlZCgpLGY9YS5sYW5nLGc9IiI7cmV0dXJuIGEuQnVzeS5kZWJvdW5jZSgxMCkoITApLGEuUmVxKGMpLnRoZW4oZnVuY3Rpb24oeCl7eC5fYXR0YWNobWVudHN8fCh4Ll9hdHRhY2htZW50cz17fSkseC5fYXR0YWNobWVudHNbYi5mbmFtZV09e2NvbnRlbnRfdHlwZTpiLm1pbWUsZGF0YTpjdy5saWIuYmFzZTY0KGIudGV4dCl9LGc9eC5fcmV2LGQuZGF0YT1KU09OLnN0cmluZ2lmeSh4KX0pLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gYS5SZXEoZCl9KS50aGVuKGZ1bmN0aW9uKCl7eHx8Y3cubGliLm5vdGUoZi5NU0dfU0FWRS5hc3NpZ24oaShiLmZuYW1lLDQwKSxpKGIuZG9jLl9pZCwyMCkpLCJvayIpLCQubXkucmFkaW8oImRidXBkYXRlIix7ZGI6Yi5wYXRoWzBdLGNtZDoid3JpdGUiLGRvY3M6W2IuZG9jLl9pZF19KSwkLm15LnJhZGlvKCJkYmxpc3QiLFtiLnBhdGhbMF1dKSwkLm15LnJhZGlvKCJmaWxldXBkYXRlIix7ZGI6Yi5wYXRoWzBdLGRvYzpiLmRvYy5faWQscmV2OmcsZmlsZTpiLmZuYW1lfSksYS5teS50cmlnZ2VyKCIjZWRjb250YWluZXIiLCJyZXNldHRhYmhhc2gubXkiKSxlLnJlc29sdmUoKX0pLmZhaWwoZnVuY3Rpb24oYSxjLGQpe3h8fGN3LmxpYi5ub3RlKGYuRVJSX1NBVkUuYXNzaWduKGkoYi5mbmFtZSw0MCksYSsiOiAiK2goZC5yZWFzb258fGMpKSwiZXJyb3IiKSxlLnJlamVjdChhLGMsZCl9KS5hbHdheXMoZnVuY3Rpb24oKXthLkJ1c3koITEpfS5kZWJvdW5jZSgxNSkpLGUucHJvbWlzZSgpO2Z1bmN0aW9uIGgoeCl7cmV0dXJuKHgrIiIpLmVzY2FwZUhUTUwoKX1mdW5jdGlvbiBpKHgsYil7cmV0dXJuIGEudGFnRW1vamkoaCgoeCsiIikudHJ1bmNhdGUoYnx8MTUsInJpZ2h0Iiwi4oCmIikpKX19fSwkY29uZmlnOntpZDoiY3cuUGhvdG9uLiRjb25maWciLGxhbmc6e30scGFyYW1zOntyZXN0eWxlOjI1LHN0cmljdDohMH0saGFzaDpmdW5jdGlvbigpe3JldHVybiBjdy5saWIuY3JjMigodGhpcy5Eb2NbMF18fHt9KS5kb2N8fHt9KX0sdGl0bGU6ZnVuY3Rpb24oKXtyZXR1cm4iQ291Y2hEQiBjb25maWcifSxtYXRjaDpmdW5jdGlvbih4LGEpe3JldHVybiBhfHwxIT14Lmxlbmd0aHx8Il9jb25maWciIT14WzBdP251bGw6e3RpdGxlOiJDb3VjaERCIGNvbmZpZyJ9fSxkYXRhOntwYXRoOltdLG5vZGU6IiIsZG9jOnt9LHN0YW1wOjB9LERvYzpbXSxPbGQ6e30sTm9kZXM6W10sTWVtYmVyc0NoZWNrZWQ6ITEsaW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzO2EuZGF0YTthLkhUTUwuSGlzdG9yeVJvdz1hLlBobygiQ29tcGlsZVQiKShhLkhUTUwuSGlzdG9yeVJvdyksYS5IaXN0b3J5LmluaXQoYSx4KTt2YXIgYj1hLmxhbmcuSEVMUDtyZXR1cm4gJC5leHRlbmQoYi5jaHR0cGRfYXV0aCxPYmplY3QucmVqZWN0KGIuY291Y2hfaHR0cGRfYXV0aCxbIl9fIiwiIl0pKSwkLmV4dGVuZChiLmNodHRwZCxPYmplY3QucmVqZWN0KGIuaHR0cGQsWyJfXyIsIiJdKSksYS5HZXQoITEsITApLnRoZW4oZnVuY3Rpb24oYil7eC5hZGRDbGFzcygibnciKS5odG1sKGEuSFRNTC5BcHAuYXNzaWduKGEubGFuZykuYXNzaWduKHtUSVRMRV9IVE1MOmEuSFRNTC5UaXRsZUhUTUxbYS5QaG8oImlzQ2x1c3RlciIpPzE6MF19KSl9KX0sdWk6eyIjYXBwLXRpdGxlIjp7aW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzO2EuTm9kZXMubGVuZ3RoPjEmJmEuc2VsZWN0Mih4LHtkYXRhOmEuTm9kZXMubWFwKGZ1bmN0aW9uKHgpe3JldHVybntpZDp4LHRleHQ6eH19KSxtaW5pbXVtUmVzdWx0c0ZvclNlYXJjaDoxMn0pfSxiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcztyZXR1cm4gYi5Ob2Rlcy5sZW5ndGg8Mj93aW5kb3cubG9jYXRpb24uaG9zdDoobnVsbCE9YSYmeC5ub2RlIT1hJiYoeC5ub2RlPWEsZnVuY3Rpb24oKXtiLkdldCghMCkudGhlbihmdW5jdGlvbigpe2IuSGlzdG9yeS5jbGVhcighMCl9KX0uZGVsYXkoMjApKSx4Lm5vZGUpfX0sIiNhcHAtc2VhcmNoIjp7ZGVsYXk6MjAsYmluZDpmdW5jdGlvbih4LGEpe3JldHVybiBudWxsPT1hP3guc2VhcmNoOih4LnNlYXJjaD1hLmxlbmd0aDwzPyIiOmEsdGhpcy5Eb2NbMF0mJnRoaXMuRG9jWzBdLnNlYXJjaCE9eC5zZWFyY2gmJnRoaXMubXkuZmluZCgiI2pzb24tc2VhcmNoIikudmFsKHguc2VhcmNoKS50cmlnZ2VyKCJjaGVjayIpLGEpfSxjc3M6eyJteS1zZWFyY2giOi9eLnszLH0kL319LCIjanNlZGl0b3IiOntkZWxheToxMDAsY2hlY2s6ITEsbGlzdDoiPGRpdj48L2Rpdj4iLG1lcmdlOiExLGluaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpczthLm5pY2VTY3JvbGwoeCx7Ym91bmNlc2Nyb2xsOiEwLGN1cnNvcmNvbG9yOiIjMjM0IixjdXJzb3JvcGFjaXR5bWluOi4wNyxjdXJzb3JvcGFjaXR5bWF4Oi40fSkseC5vbigiY2xpY2subXkiLCIuYnRuLWhlbHAiLGZ1bmN0aW9uKCl7dmFyIHg9JCh0aGlzKSxiPXgucGFyZW50KCkucGFyZW50KCksYz1iLm15KCJkYXRhIiksZD1jLnBhdGguc2xpY2UoMSkuY29uY2F0KFtjLmtleV0pO2lmKHguZGF0YSgibW9kYWwiKSlyZXR1cm4gJCh0aGlzKS5tb2RhbCghMCk7ZFsxXXx8KGRbMV09IiIpO3ZhciBlPWIubXkoIm1hbmlmZXN0IikuSGVscChkKTt4LnBhcmVudCgpLmFkZENsYXNzKCJob3ZlciIpLGIuYWRkQ2xhc3MoImhvdmVyIiksJCh0aGlzKS5tb2RhbCh7bWFuaWZlc3Q6e2luaXQ6Wyc8ZGl2IGlkPSJpbmZvLXRpdGxlIiBjbGFzcz0iZnMxMTAgYm9sZGVyIG10MyBtYjciPjwvZGl2PicsJzxkaXYgaWQ9ImluZm8taGVscCIgc3R5bGU9IndvcmQtYnJlYWs6bm9ybWFsOyI+PC9kaXY+JywnPGRpdiBpZD0iaW5mby11cmwiIGNsYXNzPSJtdDciPjwvZGl2PiddLHVpOnsiI2luZm8taGVscCI6InRpcCIsIiNpbmZvLXRpdGxlIjoidGl0bGUiLCIjaW5mby11cmwiOntiaW5kOiJ1cmwiLGNzczp7aGlkZTpmdW5jdGlvbih4KXtyZXR1cm4heC51cmx9fX19fSxkYXRhOnt0aXRsZTpkLmpvaW4oIuKAiS/igIkiKSx0aXA6KGUudGlwfHxhLmxhbmcuTVNHX1VOS05PV05fS0VZKS5lc2NhcGVIVE1MKCkucmVwbGFjZSgvYChbXmBdKylgL2csJzxjb2RlIGNsYXNzPSJkaWIgdmF0Ij4kMTwvY29kZT4nKSx1cmw6ZS51cmx9LHdpZHRoOjM1MCxhbGlnbjoidG9wOjEwMyU7cmlnaHQ6LTM4cHg7Iixub3NlOiJ0b3AifSkuYWx3YXlzKGZ1bmN0aW9uKCl7eC5wYXJlbnQoKS5yZW1vdmVDbGFzcygiaG92ZXIiKSxiLnJlbW92ZUNsYXNzKCJob3ZlciIpfSl9KX0saWQ6ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuZGF0YS5zdGFtcH0saGFzaDpmdW5jdGlvbih4KXtyZXR1cm4gY3cubGliLmNyYzIoeC5kb2MpfSxtYW5pZmVzdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPWEuUGhvKCJDb3VjaCIpLnZlcixjPVsiaHR0cGRfZ2xvYmFsX2hhbmRsZXJzIiwibmF0aXZlX3F1ZXJ5X3NlcnZlcnMiLCJodHRwZF9kZXNpZ25faGFuZGxlcnMiLCJkYWVtb25zIiwicXVlcnlfc2VydmVycyIsImh0dHBkX2RiX2hhbmRsZXJzIiwiZXh0ZXJuYWwiLCJvc19kYWVtb25zIl07cmV0dXJuKGI+PSIwMDEuMDA3LjAwMCImJmI8IjAwMi4ifHxiPj0iMDAyLjAwMS4wMDEiKSYmKGMuaW5kZXhPZih4LnBhdGhbMV0pPi0xfHxjLmluZGV4T2YoeC5rZXkpPi0xKSYmYS5sYW5nLkJBTl9IVFRQfS5iaW5kKHRoaXMpO3JldHVybiAkLmV4dGVuZCghMCx7fSxhLlBobygiRWQiKS5qc29udHJlZSxhLkV4dEVkLHtkYXRhOntsYWJlbFdpZHRoOjI1MH19LHtsYW5nOntIRUxQOmEubGFuZy5IRUxQfSxNRWRpdDp7ZGF0YTp7Y29tbWl0VHlwZUtleXM6e2F1dG86WyJFbnRlciJdfX19LE1Sb290OmZ1bmN0aW9uKCl7cmV0dXJuIGEubXkucm9vdCgpfX0se0xpYjp7aXNTeXN0ZW06Yn19KX0sYmluZDoidGhpcy5Eb2MifSwiI2J0bi1jZmctc2F2ZSI6e2RlbGF5OjIwLGJpbmQ6ZnVuY3Rpb24oeCxhKXtudWxsIT1hJiZ0aGlzLmNtZFNhdmUoKX0sY3NzOnsiOmRpc2FibGVkIjpmdW5jdGlvbih4LGEpe3JldHVybiF0aGlzLkhpc3Rvcnkuc3RlcHMubGVuZ3RofX0sd2F0Y2g6WyIjY2ZnLXdhcm4iLCIjZG9jLWhpc3RvcnkiXX0sIiNidG4tcmVsb2FkIjp7YmluZDpmdW5jdGlvbih4LGEpe2lmKG51bGwhPWEpe3ZhciBiPXRoaXM7Yi5HZXQoITApLnRoZW4oZnVuY3Rpb24oKXtiLkhpc3RvcnkuY2xlYXIoITApfSl9fSxsaXN0ZW46e3VzZXJDdHg6ZnVuY3Rpb24oeCxhKXtPYmplY3QuaXNPYmplY3QoYSkmJihhLm5hbWV8fCQubXkucmFkaW8oInJlbG9hZCIse2lkOngudGFiaWQscGF0aDp4LnBhdGh9KSl9LHJldmVydF9jb25maWc6ZnVuY3Rpb24oKXt0aGlzLkdldC5kZWJvdW5jZSgxNTApKCEwKX19fX0sZGllOmZ1bmN0aW9uKHgpe3ZhciBhPXguZmluZCgiI2pzZWRpdG9yIikuZ2V0TmljZVNjcm9sbDsiZnVuY3Rpb24iPT10eXBlb2YgYSYmYSgpLnJlbW92ZSgpfSxjbWRTYXZlOmZ1bmN0aW9uKCl7dmFyIHg9dGhpcyxhPXguZGF0YSxiPXgubGFuZzt4Lk5vZGVzLmxlbmd0aD4xP3gubXkubW9kYWwoIiNidG4tY2ZnLXNhdmUiLHttYW5pZmVzdDp4LlBobygiQ29uZmlybSIpLHdpZHRoOjU1MCxkYXRhOnt0ZXh0OmIuTVNHX0NMVVNURVIseWVzOmIuQlROX1NBVkVDTFVTVEVSLHllc2Nzczoib3JhbmdlIixubzpiLkJUTl9TQVZFTk9ERS5hc3NpZ24oeC50cnVuYyhhLm5vZGUsMjIpLmVzY2FwZUhUTUwoKSksbm9jc3M6ImdyZWVuIix1c2VCdXR0b25zOiEwfSxnbG9iYWw6ITAsc2NyZWVuOiEwLHo6MTk5Mixmb2N1czoiI2J0bi15ZXMifSkudGhlbihmdW5jdGlvbihiKXsibm8iPT1iLmNtZD94LlNhdmUoW2Eubm9kZV0pOnguU2F2ZSgpfSk6eC5TYXZlKCl9LHN0eWxlOnsiICNqc2VkaXRvcj5kaXYiOiJmb250LXNpemU6MTQuNXB4IWltcG9ydGFudDttaW4taGVpZ2h0OjU1MHB4OyIsIiAjanNlZGl0b3IgLmluYXYiOiJtYXJnaW46MXB4IDAhaW1wb3J0YW50OyIsIiAuaWFjdCAuYnV0dG9uIjoicGFkZGluZzogMC4wNWVtIDAgMC4xZW0gMCFpbXBvcnRhbnQ7IiwiICNqc2VkaXRvcj4ubXktZm9ybT5zZWN0aW9uPiNlZGl0b3I+I2RvYz4uaWFjdC5idXR0b25zIjoicGFkZGluZy1yaWdodDozcHg7IiwiIC5Db2RlTWlycm9yLWxpbmVudW1iZXIiOiJ3aGl0ZS1zcGFjZTpub3dyYXA7IiwiIC5teS1tb2RhbC1mb3JtIjp7IiAuQ29kZU1pcnJvciAuQ29kZU1pcnJvci1saW5lcyI6ImxpbmUtaGVpZ2h0OjE3cHg7IiwiIC5Db2RlTWlycm9yLXNjcm9sbCI6Im1pbi1oZWlnaHQ6MTUwcHg7bWF4LWhlaWdodDpjYWxjKDE4ICogMTdweCArIDZweCk7IiwiIC5Db2RlTWlycm9yLWxpbmVudW1iZXJzIjoidHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzOyIsIi5lZC1lcnJvciAuQ29kZU1pcnJvci1saW5lbnVtYmVycyI6ImJhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsIDIwMCwgMjAwLCAwLjc1KTsiLCIgLkNvZGVNaXJyb3IgLmNtLXByb3BlcnR5IjoiY29sb3I6IzQzNGU1ZDsiLCIgLkNvZGVNaXJyb3IgLmNtLXZhcmlhYmxlIjoiY29sb3I6IzMzYmZhZDsiLCIgLkNvZGVNaXJyb3IgLmNtLWtleXdvcmQiOiJjb2xvcjojOTAyNTllOyIsIiAuQ29kZU1pcnJvciI6Im1pbi1oZWlnaHQ6MTUwcHg7IGhlaWdodDphdXRvOyIsIiAuYnV0dG9ucyBidXR0b24iOiJtYXJnaW4tcmlnaHQ6IDJweDtwYWRkaW5nOiAwLjRlbSAwLjdlbSAwLjRlbSAwLjdlbTtmb250LXNpemU6IDkwJTsiLCIgY29kZSI6ImJhY2tncm91bmQtY29sb3I6ICNlYmYwZjMhaW1wb3J0YW50O2JvcmRlci1yYWRpdXM6IDJweDtmb250LXNpemU6IDg1JTsgcGFkZGluZzogMC4xZW0gMC4zZW0ifX0sRXh0RWQ6e0hUTUw6e0l0ZW1Sb290Oic8ZGl2IGNsYXNzPSJpbmF2IGlyb290Ij48ZGl2IGNsYXNzPSJpa2V5Ij48L2Rpdj48ZGl2IGNsYXNzPSJpZGVzYyBjcCI+4oCTPC9kaXY+PGRpdiBjbGFzcz0iaWVkaXRvciBwYW5lbGhlaWdodC0zMiI+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0iaXZhbHVlIGltdWx0aSBoaWRlIj48ZGl2IGNsYXNzPSJpbGlzdCI+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0iaWFjdCBidXR0b25zIj48YnV0dG9uIGNsYXNzPSJidG4tYWRkIGJ1dHRvbiBncmVlbiIgdGl0bGU9IkFkZCBuZXcgcHJvcGVydHkiPiZ0aGluc3A7PHNwYW4gY2xhc3M9ImZpLXBsdXMiPjwvc3Bhbj4mdGhpbnNwOzwvYnV0dG9uPjxidXR0b24gY2xhc3M9ImJ0bi10YWtlb3V0IGJ1dHRvbiIgdGl0bGU9IkNvcHkgLyBwYXN0ZSAvIGVkaXQgYXMgSlNPTiI+PHNwYW4gY2xhc3M9ImZpLXNob3BwaW5nLWJhZyI+PC9zcGFuPjwvYnV0dG9uPjxidXR0b24gY2xhc3M9ImJ0bi1qc29uIGhpZGUiPjwvYnV0dG9uPjxidXR0b24gaWQ9ImJ0bi1yZXZlcnQiIGNsYXNzPSJidXR0b24iICB0aXRsZT0iUmV2ZXJ0IHRvIHNhdmVkIj4mdGhpbnNwOzxzcGFuIGNsYXNzPSJmaS1yZWZyZXNoIj48L3NwYW4+JnRoaW5zcDs8L2J1dHRvbj48L2Rpdj4nLEl0ZW1TaW1wbGU6JzxkaXYgY2xhc3M9ImluYXYiPjxkaXYgY2xhc3M9ImlrZXkgaWtleXNpbXBsZSI+PC9kaXY+PGRpdiBjbGFzcz0iaXZhbHVlIj48L2Rpdj48ZGl2IGNsYXNzPSJpZWRpdG9yIj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJpYWN0IGJ1dHRvbnMiPjxidXR0b24gY2xhc3M9ImJ0bi1oZWxwIGJ1dHRvbiB0ZWFsIiB0aXRsZT0iQ29uZmlnIGtleSBpbmZvIj4mdGhpbnNwOzxzcGFuIGNsYXNzPSJmaS1pbmZvIj48L3NwYW4+JnRoaW5zcDs8L2J1dHRvbj48YnV0dG9uIGNsYXNzPSJidG4tZGVsIGJ1dHRvbiByZWQiIHRpdGxlPSJEZWwgcHJvcGVydHkiPiZ0aGluc3A7PHNwYW4gY2xhc3M9ImZpLXRyYXNoIj48L3NwYW4+JnRoaW5zcDs8L2J1dHRvbj48L2Rpdj4nLEl0ZW1Db21wbGV4Oic8ZGl2IGNsYXNzPSJpbmF2Ij48ZGl2IGNsYXNzPSJpa2V5IGlrZXl0cmVlIj48L2Rpdj48ZGl2IGNsYXNzPSJpZGVzYyBjcCI+4oCTPC9kaXY+PGRpdiBjbGFzcz0iaWVkaXRvciI+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0iaXZhbHVlIGltdWx0aSBoaWRlIj48ZGl2IGNsYXNzPSJpbGlzdCI+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0iaWFjdCBidXR0b25zIj48YnV0dG9uIGNsYXNzPSJidG4tYWRkIGJ1dHRvbiBncmVlbiIgdGl0bGU9IkFkZCBuZXcgcHJvcGVydHkiPiZ0aGluc3A7PHNwYW4gY2xhc3M9ImZpLXBsdXMiPjwvc3Bhbj4mdGhpbnNwOzwvYnV0dG9uPjxidXR0b24gY2xhc3M9ImJ0bi1oZWxwIGJ1dHRvbiB0ZWFsIiB0aXRsZT0iQ29uZmlnIGtleSBpbmZvIj4mdGhpbnNwOzxzcGFuIGNsYXNzPSJmaS1pbmZvIj48L3NwYW4+JnRoaW5zcDs8L2J1dHRvbj48YnV0dG9uIGNsYXNzPSJidG4tanNvbiBoaWRlIj48L2J1dHRvbj48YnV0dG9uIGNsYXNzPSJidG4tZGVsIGJ1dHRvbiByZWQiICB0aXRsZT0iRGVsIG5vZGUiPiZ0aGluc3A7PHNwYW4gY2xhc3M9ImZpLXRyYXNoIj48L3NwYW4+JnRoaW5zcDs8L2J1dHRvbj48L2Rpdj4nfSx1aTp7IiNkb2MiOnttYW5pZmVzdDpmdW5jdGlvbih4KXtpZighdGhpcy5IVE1MLkl0ZW1Sb290KXJldHVybiB0aGlzLiRtdWx0aTt2YXIgYT10aGlzO3JldHVybiAkLmV4dGVuZCghMCx7fSxhLiRtdWx0aSx7SFRNTDphLkhUTUwuSXRlbVJvb3QsdWk6eyIjYnRuLXJldmVydCI6e2JpbmQ6ZnVuY3Rpb24oeCxhLGIpe251bGwhPWEmJiQubXkucmFkaW8oInJldmVydF9jb25maWciLCEwKX19fX0pfX19LEhlbHA6ZnVuY3Rpb24oeCl7eC5zbGljZSgwKTt2YXIgYT10aGlzLmxhbmcuSEVMUCxiPW51bGwsYz0iIixkPSIiLGU9IiIsZj1PYmplY3QuaXNBcnJheTtpZihhKXtudWxsPT14WzFdJiYoeFsxXT0iIik7dmFyIGc9YVt4WzBdXXx8e307ZyYmKGM9KGI9Z1t4WzFdXXx8Z1siKiJdfHwiIik/ZihiKT9iWzBdKyIuIjpiKyIuIjoiIixlPWYoYik/YlsxXTpnLl9fLGMmJmUmJihkPWUuYXNzaWduKCQuZXh0ZW5kKHtrZXk6eC5jb21wYWN0KCEwKS5qb2luKCIvIil9LGEuT0JKX1BBVEhTKSkpKSxkP2Q9JzxhIGhyZWY9InsxfSIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJ0ZG4gcGwyIHByNSIgcmVmZXJyZXJwb2xpY3k9Im5vLXJlZmVycmVyIiByZWw9Im5vZm9sbG93Ij48c3BhbiBjbGFzcz0iZmktcGFnZSBmczkwIG83MCI+PC9zcGFuPiZuYnNwO3syfTwvYT4nLmFzc2lnbihkLGYoYik/YS5UWFRfRVhUOmEuVFhUX0RPQ1MpOmMmJihkPSc8c3BhbiBjbGFzcz0iZnM5MCBvNzAiPnsxfTwvc3Bhbj4nLmFzc2lnbihhLlRYVF9OT0RPQ1MpKX1yZXR1cm57dGlwOmMsdXJsOmR9fX0sR2V0OmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcyxjPWIuZGF0YSxkPSQuRGVmZXJyZWQoKSxlPVtdLGY9Yi5QaG8oIk1lbWJlcnNoaXAiKXx8e307cmV0dXJuIWIuUGhvKCJpc0NsdXN0ZXIiKSYmYi5NZW1iZXJzQ2hlY2tlZHx8KGIuTWVtYmVyc0NoZWNrZWQ9ITAsT2JqZWN0LmlzQXJyYXkoZi5hbGxfbm9kZXMpJiZPYmplY3QuaXNBcnJheShmLmNsdXN0ZXJfbm9kZXMpPygoZT1mLmNsdXN0ZXJfbm9kZXMuc2xpY2UoMCkuaW50ZXJzZWN0KGYuYWxsX25vZGVzKSkubGVuZ3RoPDImJihiLlBobygpLmlzQ2x1c3Rlcj0hMSksYi5Ob2Rlcz1lLC0xPT1lLmluZGV4T2YoYy5ub2RlKSYmKGMubm9kZT1lWzBdKSk6Yi5QaG8oKS5pc0NsdXN0ZXI9ITEpLGcoKSxkLnByb21pc2UoKTtmdW5jdGlvbiBnKCl7dmFyIGU9WyJfY29uZmlnIl07Yi5Ob2Rlcy5sZW5ndGgmJigxIT1iLk5vZGVzLmxlbmd0aCYmYy5ub2RlP2UudW5zaGlmdCgiX25vZGUiLGMubm9kZSk6ZS51bnNoaWZ0KCJfbm9kZSIsYi5Ob2Rlc1swXSkpLGIuUmVxKGUpLnRoZW4oZnVuY3Rpb24oeCl7dmFyIGE9e307cmV0dXJuIE9iamVjdC5rZXlzKHgpLnNvcnQoKS5mb3JFYWNoKGZ1bmN0aW9uKGIpe09iamVjdC5pc09iamVjdCh4W2JdKT9hW2JdPU9iamVjdC5rZXlzKHhbYl0pLnNvcnQoKS5yZWR1Y2UoZnVuY3Rpb24oYSxjKXtyZXR1cm4gYVtjXT1oKHhbYl1bY10pLGF9LHt9KTphW2JdPXhbYl19KSxjLmRvYz1hLGIuRG9jPVt7bGFiZWxXaWR0aDoyNTAsZG9jOmIuZGF0YS5kb2MsX2lkOiJfY29uZmlnIn1dLGIuT2xkPU9iamVjdC5jbG9uZShjLmRvYywhMCksYS5jaHR0cGQmJnZvaWQgMCE9PWEuY2h0dHBkLm1heF9kYl9udW1iZXJfZm9yX2Ric19pbmZvX3JlcSYmKGIuUGhvKCJDb3VjaCIpLm1heEJhdGNoPSthLmNodHRwZC5tYXhfZGJfbnVtYmVyX2Zvcl9kYnNfaW5mb19yZXF8fDApLHh9KS50aGVuKGZ1bmN0aW9uKGEpe2Muc3RhbXA9RGF0ZS5ub3coKSx4JiZiLm15LnJlY2FsYygiI2pzZWRpdG9yIiksYi5teS50cmlnZ2VyKCIjY2ZnLXByb3h5IiwicmVzZXR0YWJoYXNoLm15IiksZC5yZXNvbHZlKGEpfSkuZmFpbChmdW5jdGlvbih4LGMsZSl7YXx8Y3cubGliLm5vdGUoYi5sYW5nLkVSUl9SRUxPQUQuYXNzaWduKHgsYy50cnVuY2F0ZSg0NSwicmlnaHQiLCLigKYiKS5lc2NhcGVIVE1MKCkpLCJlcnJvciIpLGQucmVqZWN0KHgsYyxlKX0pfWZ1bmN0aW9uIGgoeCl7cmV0dXJuInN0cmluZyIhPXR5cGVvZiB4P3g6InRydWUiPT14fHwiZmFsc2UiIT14JiYoL15cZHsxLDE1fSQvLnRlc3QoeCk/K3g6eCl9fSxTYXZlOmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj0oYS5QaG8oIl9jb21waWxlZCIpLGEubGFuZyksYz1bXSxkPXt9LGU9KHh8fGEuTm9kZXMpLnNsaWNlKDApLGY9YS5Eb2NbMF0uZG9jO2M9T2JqZWN0LnZhbHVlcyhhLkhpc3Rvcnkuc3RlcHMucmVkdWNlKGZ1bmN0aW9uKHgsYSl7dmFyIGI9YS5vcDtpZihhLnBhdGgubGVuZ3RoPjIpe3ZhciBjPWEucGF0aC5zbGljZSgxKS5qb2luKCLigIMiKTt4W2NdPXtrZXk6Yyx2YWx1ZToiZGVsIiE9Yj9jdy5saWIuZ2V0cmVmKGYsYS5wYXRoLnNsaWNlKDEpKSsiIjpudWxsfX1lbHNle3ZhciBkPWEucGF0aFsxXSxlPWN3LmxpYi5nZXRyZWYoZixkKTtPYmplY3Qua2V5cyhlKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBjPVtkLGFdLGU9Yy5qb2luKCLigIMiKTt4W2VdPXtrZXk6ZSx2YWx1ZToiZGVsIiE9Yj9jdy5saWIuZ2V0cmVmKGYsYykrIiI6bnVsbH19KX1yZXR1cm4geH0se30pKSxlLmxlbmd0aCYmKGM9Yy5yZWR1Y2UoZnVuY3Rpb24oeCxhKXtyZXR1cm4gZS5mb3JFYWNoKGZ1bmN0aW9uKGIpe3gucHVzaCh7dXJsOlsiX25vZGUiLGIsIl9jb25maWciXSxrZXk6YS5rZXksdmFsdWU6YS52YWx1ZX0pfSkseH0sW10pKTt2YXIgZz1jLmxlbmd0aDtmdW5jdGlvbiBoKCl7T2JqZWN0LnNpemUoZCk/KGN3LmxpYi5ub3RlKGIuTVNHX1NBVkVfRkFJTCwiZXJyb3IiKSxjb25zb2xlLmxvZygiRXJyb3JzIGR1cmluZyBjb25maWcgdXBkYXRlOiIpLGNvbnNvbGUubG9nKGQpKTooY3cubGliLm5vdGUoYi5NU0dfU0FWRV9PSywib2siKSxhLkdldCghMCkudGhlbihmdW5jdGlvbigpe2EuSGlzdG9yeS5jbGVhcighMCl9KSl9Yy5mb3JFYWNoKGZ1bmN0aW9uKHgsYil7YS5SZXEoe3VybDooeC51cmx8fFsiX2NvbmZpZyJdKS5jb25jYXQoeC5rZXkuc3BsaXQoIuKAgyIpKSxtZXRob2Q6bnVsbCE9PXgudmFsdWU/IlBVVCI6IkRFTEVURSIsY29udGVudFR5cGU6bnVsbCE9PXgudmFsdWU/ImFwcGxpY2F0aW9uL2pzb24iOm51bGwsZGF0YTpudWxsIT09eC52YWx1ZT9KU09OLnN0cmluZ2lmeSh4LnZhbHVlKTp2b2lkIDB9KS50aGVuKGZ1bmN0aW9uKCl7InJlcGxpY2F0b3LigINkYiI9PXgua2V5JiYoYS5QaG8oKS5SZXBsaWNhdG9yREI9eC52YWx1ZSl9KS5mYWlsKGZ1bmN0aW9uKGEsYixjKXtkW3gua2V5XT17Y29kZTphLGVycm9yOmIscmVhc29uOmN9fSkuYWx3YXlzKGZ1bmN0aW9uKCl7KGctPTEpfHxoKCl9KX0ubGF6eShhLlBobygiQ2ZnIikuYmF0Y2hVcGRhdGVDZmd8fDEwMCkpfSxIVE1MOntBcHA6JzxkaXYgaWQ9ImNvbC1lZCIgY2xhc3M9ImRpYiB2YXQgd24iPjxkaXYgaWQ9ImEtaGVhZCIgY2xhc3M9ImFwcC1oZWFkIG53IHB0MTggcGwyMCBwcjIwIGxoMTYwIj48ZGl2IGNsYXNzPSJmciB3MTU1IGZzOTUiPjxkaXYgY2xhc3M9ImZpLW1hZ25pZnlpbmctZ2xhc3MgYmx1ZSBvNTAgZnM5NSIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgei1pbmRleDogKzE7IGxlZnQ6IDhweDt0b3A6IDAuMmVtOyI+PC9kaXY+PGlucHV0IHR5cGU9InRleHQiIGlkPSJhcHAtc2VhcmNoIiBjbGFzcz0idWktc2VhcmNoIHcxMDBwIG1sMCBtcjAgbXQwIHByMTAiIHNwZWxsY2hlY2s9ImZhbHNlIiBhdXRvY29tcGxldGU9Im9mZiIgcGxhY2Vob2xkZXI9IntQTENfU0VBUkNIfSIgc3R5bGU9ImJhY2tncm91bmQtaW1hZ2U6bm9uZTtwYWRkaW5nLXJpZ2h0OjE5cHghaW1wb3J0YW50OyI+PHNwYW4gY2xhc3M9ImZpLXggZnM4MCBkaWIgdmF0IHB0MiBibHVlIHVpLXNlYXJjaC1jbGVhciIgc3R5bGU9Im1hcmdpbi1sZWZ0Oi0xOXB4IWltcG9ydGFudDsib25jbGljaz0iJCh0aGlzKS5zaWJsaW5ncyhcJ2lucHV0OmVxKDApXCcpLnZhbChcJ1wnKS5ibHVyKCkiPjwvc3Bhbj48L2Rpdj57VElUTEVfSFRNTH08ZGl2IGNsYXNzPSJudyBtcjEwIGRpYiB2YXQgdGFjIHc0MHAiID48YnV0dG9uIGlkPSJidG4tcmVsb2FkIiBjbGFzcz0idzQwIG1yMiIgdGl0bGU9IntCVE5fUkVWRVJUfSI+PHNwYW4gY2xhc3M9ImZpLXJlZnJlc2giPjwvc3Bhbj48L2J1dHRvbj48YnV0dG9uIGlkPSJidG4tY2ZnLXNhdmUiIGNsYXNzPSJncmVlbiBtcjIiIGRpc2FibGVkPntCVE5fU0FWRX08L2J1dHRvbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJwYW5lbGhlaWdodCBmZWF0aGVyIj48ZGl2IGlkPSJqc2VkaXRvciIgY2xhc3M9InBhbmVsaGVpZ2h0IHBsMjAgcHIyMCBwdDEwIHBiMTYiIHN0eWxlPSJvdXRsaW5lOm5vbmU7Ij48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGlkPSJjb2wtaGlzdG9yeSIgY2xhc3M9ImRpYiB2YXQgeGdyYXkgd24iPjxkaXYgaWQ9ImgtaGVhZCIgY2xhc3M9ImFwcC1oZWFkIG53IHB0MTggcHIyMCBsaDE2MCI+PGRpdiBjbGFzcz0iZnIiPjxidXR0b24gaWQ9ImJ0bi1oaXN0b3J5LXVuZG8iIGNsYXNzPSJsaDE0MCI+e0JUTl9ISVNUX1VORE99PC9idXR0b24+PC9kaXY+PHNwYW4gY2xhc3M9ImZzMTUwIGRpYiB2YXQgcGw1IG85MCBwdDMiPntUWFRfSElTVF9USVRMRX08L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0icGFuZWxoZWlnaHQgZmVhdGhlciI+PGRpdiBpZD0iZW1wdHktaGlzdG9yeSIgY2xhc3M9ImhpZGUgcGFiYyBwbDUgcHQ4IGdyYXkiIHN0eWxlPSJ0b3A6MDsgbGVmdDowOyI+e1RYVF9ISVNUX0VNUFRZfTwvZGl2PjxkaXYgaWQ9ImRvYy1oaXN0b3J5IiBjbGFzcz0icGFuZWxoZWlnaHQgcHIyMCBwdDEwIHBiMTYiIHN0eWxlPSJvdXRsaW5lOm5vbmU7Ij48L2Rpdj48L2Rpdj48c3R5bGUgaWQ9InN0eWxlLWhpc3RvcnkiIGNsYXNzPSJoaWRlIj48L3N0eWxlPjxkaXYgaWQ9InNjcm9sbC1wcm94eSIgY2xhc3M9ImhpZGUiPjwvZGl2PjwvZGl2PjxkaXYgaWQ9ImNmZy1wcm94eSIgY2xhc3M9ImhpZGUiPjwvZGl2PicsVGl0bGVIVE1MOlsnPGRpdiBpZD0iYXBwLXRpdGxlIiBjbGFzcz0iZGliIHZhdCBmczE2MCBsaDEyMCBlbGwgbXIyMCIgc3R5bGU9Im1heC13aWR0aDo0MCUiPjwvZGl2PicsJzxkaXYgY2xhc3M9ImRpYiB2YXQgZnMxMTUgbXIyMCB3NDBwIj48aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImFwcC10aXRsZSIgY2xhc3M9IncxMDBwIGJvbGRlciI+PC9kaXY+J119fSwkdmlldzp7aWQ6ImN3LlBob3Rvbi4kdmlldyIsbGFuZzp7fSxwYXJhbXM6e3Jlc3R5bGU6MjAsc3RyaWN0OiEwfSxpbmhlcml0OlsiQnl0ZXMiLCJNZXRyaWMiXSxTdGVwczpbMSwxMCwyMCw1MCwxMDAsMjAwLDUwMCwxZTNdLE1vZGFsczp7fSxSZXN1bHQ6W10sUm93czpbXSxFcnJvcjoiIixmUm93czpudWxsLGdSb3dzOm51bGwsaXNFbXB0eTohMSxEZG9jczp7fSxWaWV3czpbXSxWaTp7fSxWaUVkczp7fSxQZW5kaW5nOnt9LExpc3Q6W10sRmllbGRzOltdLENvbHVtbnM6W10sRWRpdG9yOltdLGhhc1NlbGVjdGlvbjohMSxsYXN0UmVhZFN0YW1wOjAsQ01wcmVmaXg6IiIsbTpmdW5jdGlvbigpe30sUlQ6ZnVuY3Rpb24oeCl7cmV0dXJuIG51bGw9PXg/dGhpczpPYmplY3QuaXNBcnJheSh4KT9jdy5saWIuZ2V0cmVmKHRoaXMseCk6dGhpc1t4XX0sSW5kZXg6ZnVuY3Rpb24oeCl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHgsbnVsbCwiICAiKX0sZGllOmZ1bmN0aW9uKHgpe3RoaXMuc3Rhc2hWaWV3U3RhdGUoKSxbIiN2aWV3LXJlc3VsdHMiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPXguZmluZChhKTsiZnVuY3Rpb24iPT10eXBlb2YgYi5nZXROaWNlU2Nyb2xsJiZiLmdldE5pY2VTY3JvbGwoKS5yZW1vdmUoKSxiLmxpc3QoInJlbW92ZSIpfSk7dHJ5e3guZmluZCgiI3ZpZXctbmFtZSIpLmRhdGEoKS5zZWxlY3QyLmRyb3Bkb3duLmZpbmQoIi5zZWxlY3QyLXJlc3VsdHMiKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHg9JCh0aGlzKS5nZXROaWNlU2Nyb2xsOyJmdW5jdGlvbiI9PXR5cGVvZiB4JiZ4KCkucmVtb3ZlKCl9KX1jYXRjaCh4KXt9fSxzMnA6ZnVuY3Rpb24oKXt2YXIgeD10aGlzLGE9eC5kYXRhLGI9W2EucGF0aFswXV07aWYoIWEuc3RhcnQmJiFhLnZpZXcpcmV0dXJuW2EucGF0aFswXV07dmFyIGM9eC5WaVthLnZpZXddLGQ9YS52aWV3LnNwbGl0KCLvv70iKTtyZXR1cm4iX2ZpbmQiPT1hLnZpZXcudG8oNSk/KGIucHVzaCgiX2ZpbmQiKSxiLnB1c2goZFsxXXx8IkRlZmF1bHQgcXVlcnkiKSk6Il9zcWwiPT1hLnZpZXcudG8oNCk/KGIucHVzaCgiX3NxbCIpLGIucHVzaChkWzFdfHwiRGVmYXVsdCBTUUwiKSk6Il9pZHgiPT1hLnZpZXcudG8oNCk/KGIucHVzaCgiX2luZGV4IiksIl9pZHgv77+9IiE9YS52aWV3LnRvKDYpP2IucHVzaChkWzBdLnNwbGl0KCIvIilbMV0sZFsxXSk6Yi5wdXNoKCJEZWZhdWx0IGluZGV4IikpOmM/Yi5wdXNoKCJfdmlldyIsYy5wYXRoWzJdLGMucGF0aFs0XSk6eC5pc1ZpZXdTcGVjaWFsKGEudmlldyk/Yi5wdXNoKGEudmlldyk6Yi5wdXNoKCJfYWxsX2RvY3MiKSxhLnN0YXJ0PyhiLnB1c2goYS5zdGFydCwoYS5yZXZlcnNlPyItIjoiIikrICthLmxpbWl0KSxiKTpifSxpc1ZpZXdTcGVjaWFsOmZ1bmN0aW9uKHgpe3JldHVybi9eXyhkZXNpZ25fZG9jc3xsb2NhbF9kb2NzfGNoYW5nZXN8Y29uZmxpY3RzKSQvLnRlc3QoeCsiIil9LGhhc2g6ZnVuY3Rpb24oKXtyZXR1cm4idmlldyJ9LGljb0NzczpmdW5jdGlvbih4KXt2YXIgYT14LnBhdGhbMF0sYj14LnBhdGgubGVuZ3RoO2lmKDE9PWIpcmV0dXJuIl91c2VycyI9PWE/ImZpLXRvcnNvcyBmczkwIjoiX3JlcGxpY2F0b3IiPT1hPyJmaS1wYWdlLW11bHRpcGxlIGZzOTAiOiJ3MSBwcjMiO3ZhciBjPXgucGF0aFsxXSxkPXtfdmlldzoiZmktZXllIGxoMTEwIGRpYiB2YW0iLF9maW5kOiJmaS1tYWduaWZ5aW5nLWdsYXNzIGZzOTAiLF9zcWw6ImZpLW1hZ25pZnlpbmctZ2xhc3MgZnM5MCIsX2NoYW5nZXM6ImZpLXNodWZmbGUgZnM5NSIsX2Rlc2lnbl9kb2NzOiJmaS13aWRnZXQgZnM5NSIsX2xvY2FsX2RvY3M6ImZpLWFubm90YXRlIGZzOTAiLF9jb25mbGljdHM6ImZpLXNoYXJlIGZzOTAifVtjXXx8ImZpLXRodW1ibmFpbHMgZnM5MCI7cmV0dXJuKCJfdmlldyI9PWMmJmI+NHx8L15fKGNofGxvfGFsbHxkZSkvLnRlc3QoYykmJmI+Mnx8L15fKHNxfGZpKS8udGVzdChjKSYmYj4zKSYmKGQrPSIgIisoeC5hY3RpdmU/JCgiYm9keSIpLmlzKCIudGhlbWUtZGFyayIpPyJ5ZWxsb3ctMiI6Im9yYW5nZS0xIjoieWVsbG93LTEiKSksZH0sdGl0bGU6ZnVuY3Rpb24oKXt2YXIgeD10aGlzLGE9eC5kYXRhLGI9YS5wYXRoLGM9YS52aWV3LGQ9Il9maW5kIj09Yy50byg1KSxlPSJfc3FsIj09Yy50byg0KSxmPXguaXNWaWV3U3BlY2lhbChjKSxnPWM/Zj9jOmMuc3BsaXQoIu+/vSIpLnRvKDIpLm1hcChmdW5jdGlvbih4LGEpe3JldHVybigoYT94Onguc3BsaXQoIi8iKVsxXSl8fHh8fCIiKS50cnVuY2F0ZShhPzMwOjEwLCJtaWRkbGUiLCIuLi4iKX0pLmpvaW4oIuKAii/igIoiKToiIixoPWU/Ijo6IjpkPyLiirYiOmY/Ii8iOiLDtyI7cmV0dXJuKGc/YlswXS50cnVuY2F0ZSgxNSwibWlkZGxlIiwiLi4uIik6YlswXSkrKGc/IuKAiSIraCsi4oCJIitnOiIiKX0sbWF0Y2g6ZnVuY3Rpb24oeCxhKXtpZihhJiYoMT09eC5sZW5ndGh8fC9eXyh2aWV3fGFsbF9kb2NzfGxvY2FsX2RvY3N8ZGVzaWduX2RvY3N8ZmluZHxzcWx8aW5kZXh8Y2hhbmdlc3xjb25mbGljdHMpJC8udGVzdCh4WzFdKSkpe3ZhciBiPXgubGVuZ3RoLGM9eFsxXXx8Il9hbGxfZG9jcyIsZD17dGl0bGU6eFswXSx0eXBlOiJ2aWV3IixhcHBEYXRhOnt9fSxlPS9eXyhkZXNpZ258bG9jYWwpX2RvY3MkLy50ZXN0KGMpO2lmKC9eXyhhbGx8ZGVzaWdufGxvY2FsKV9kb2NzJC8udGVzdChjKSk0PT1ifHxlP2QuYXBwRGF0YT17c3RhcnQ6eFsyXSxsaW1pdDoiKyIrKHRoaXMuJHZpZXcuU3RlcHMuZmluZChNYXRoLmFicygreFszXSkpfHwiMTAwIikscmV2ZXJzZToiLSI9PSh4WzNdKyIiKVswXX06eC5sZW5ndGg9MSxlJiYoZC50aXRsZSs9IuKAiS/igIkiK2MucmVwbGFjZSgvX2RvY3MkLywiIiksZC5hcHBEYXRhLnZpZXc9Yyk7ZWxzZSBpZigiX2NoYW5nZXMiPT1jKWQudGl0bGUrPSLigIkv4oCJIitjLGQuYXBwRGF0YT17dmlldzpjLHN0YXJ0OnhbMl0sbGltaXQ6IisiKyh0aGlzLiR2aWV3LlN0ZXBzLmZpbmQoTWF0aC5hYnMoK3hbM10pKXx8IjEwMCIpLHJldmVyc2U6Ii0iPT0oeFszXSsiIilbMF19O2Vsc2UgaWYoIl9jb25mbGljdHMiPT1jKWQudGl0bGUrPSLigIkv4oCJIitjLGQuYXBwRGF0YT17dmlldzpjLHN0YXJ0OnhbMl0sbGltaXQ6IisiKyh0aGlzLiR2aWV3LlN0ZXBzLmZpbmQoTWF0aC5hYnMoK3hbM10pKXx8IjEwMCIpLHJldmVyc2U6Ii0iPT0oeFszXSsiIilbMF19O2Vsc2UgaWYoIl9maW5kIj09YyliPjU/eC5sZW5ndGg9NTpkLmFwcERhdGE9e3N0YXJ0OnhbM10sbGltaXQ6IisiKyh0aGlzLiR2aWV3LlN0ZXBzLmZpbmQoTWF0aC5hYnMoK3hbNF0pKXx8IjEwMCIpLHJldmVyc2U6Ii0iPT0oeFs0XSsiIilbMF19O2Vsc2UgaWYoIl9zcWwiPT1jKWI+NT94Lmxlbmd0aD01OmQuYXBwRGF0YT17c3RhcnQ6eFszXSxsaW1pdDoiKyIrKHRoaXMuJHZpZXcuU3RlcHMuZmluZChNYXRoLmFicygreFs0XSkpfHwiMTAwIikscmV2ZXJzZToiLSI9PSh4WzRdKyIiKVswXX07ZWxzZSBpZigiX2luZGV4Ij09YylpZihiPjYpeC5sZW5ndGg9NjtlbHNle3ZhciBmPSJEZWZhdWx0IGluZGV4Ij09eFsyXSYmKDM9PWJ8fDU9PWIpO2QuYXBwRGF0YT17c3RhcnQ6Zj94WzNdOnhbNF0sbGltaXQ6IisiKyh0aGlzLiR2aWV3LlN0ZXBzLmZpbmQoTWF0aC5hYnMoKyhmP3hbNF06eFs1XSkpKXx8IjEwMCIpLHJldmVyc2U6Ii0iPT0oKGY/eFs0XTp4WzVdKSsiIilbMF19fWVsc2V7aWYoIl92aWV3IiE9YylyZXR1cm47NiE9Yj94Lmxlbmd0aD00OmQuYXBwRGF0YT17c3RhcnQ6eFs0XSxsaW1pdDoiKyIrKHRoaXMuJHZpZXcuU3RlcHMuZmluZChNYXRoLmFicygreFs1XSkpfHwiMTAwIikscmV2ZXJzZToiLSI9PSh4WzVdKyIiKVswXX19cmV0dXJuIGQucGF0aD14LGR9fSxqc2V2YWw6ZnVuY3Rpb24ocyl7dmFyIHI7dHJ5e3I9ZXZhbCgiKCIrcysiKSIpfWNhdGNoKHgpe31yZXR1cm4gcn0sZGF0YTp7cGF0aDpbXSxzZWFyY2g6IiIsdmlldzoiIixzdGFydDoiIixsaW1pdDoiKzEwMCIscmV2ZXJzZTohMSxyZWR1Y2U6W10saW5jbDpbXSxzdGF0ZToiIixzZWxlY3Rpb246W10sbGluazoiIixkdXI6MCxzaXplOjAsZ3JpZDohMCxjb2x1bW5zOlsiLnZhbHVlIl0sc2hhZG93OlsiLnZhbHVlIl0sdG90YWxfcm93czowLG9mZnNldDowLHNlcToiIix4a2V5OiIwIixlZGl0b3I6ITEsbWFuZ286e2FjdGl2ZToiRGVmYXVsdCBxdWVyeSIsbW9kZTpbImphdmFzY3JpcHQiXSxxdWVyeTpbe25hbWU6IkRlZmF1bHQgcXVlcnkiLHRleHQ6Iih7fSkiLGpzb246e30sZXJyb3JzOltdLHN0YW1wOjB9XX0sc3FsOnthY3RpdmU6IkRlZmF1bHQgU1FMIixtb2RlOlsic3FsIl0scXVlcnk6W3tuYW1lOiJEZWZhdWx0IFNRTCIsdGV4dDoiIixqc29uOnt9LGVycm9yczpbXSxzdGFtcDowfV19fSxEZWZhdWx0TWFuZ29Rcnk6e25hbWU6IkRlZmF1bHQgcXVlcnkiLHR5cGU6Im1hbmdvIix0ZXh0OiIoe1xuICAvLyBNYXRjaGluZyBkb2NzIHNlbGVjdG9yXG4gIHNlbGVjdG9yOiB7XG4gICAgX2lkOiB7JGd0OiAnJ31cbiAgfSxcbiAgXG4gIC8vIERvYyBmaWVsZHMgdG8gcmV0dXJuLCBcbiAgLy8gY29tbWVudCBvdXQgdG8gZ2V0IHdob2xlIGRvY3NcbiAgZmllbGRzOiBbJ19pZCcsICdfcmV2JywgLyoneC55JyovXSxcbiAgXG4gIC8vIFNvcnQgb3JkZXIsIGxpa2U6XG4gIC8vIHNvcnQ6IFt7X2lkOidhc2MnfSwge25hbWU6ICdkZXNjJ31dXG4gIFxuICAvLyBVc2UgQ21kLVIgb3IgQ3RybC1SIHRvIHJ1biBxdWVyeVxufSkiLGpzb246e3NlbGVjdG9yOntfaWQ6eyRndDoiIn19LGZpZWxkczpbIl9pZCIsIl9yZXYiXX0sZXJyb3JzOltdLHN0YW1wOjB9LERlZmF1bHRTcWxRcnk6e25hbWU6IkRlZmF1bHQgU1FMIix0eXBlOiJzcWwiLHRleHQ6Ii0tIERlbW8gU1FMIHF1ZXJ5XG5TRUxFQ1QgX2lkLCBfcmV2LCBuYW1lLCB0eXBlIFxuRlJPTSBfIC0tIDwtIHRoaXMgaXMgaWdub3JlZFxuV0hFUkUgX2lkID4gJyciLGpzb246e3NlbGVjdG9yOntfaWQ6eyRndDoiIn19LGZpZWxkczpbIl9pZCIsIl9yZXYiLCJuYW1lIiwidHlwZSJdfSxlcnJvcnM6W10sc3RhbXA6MH0sRGVmYXVsdE1hbmdvSWR4OntuYW1lOiJEZWZhdWx0IGluZGV4IixkZG9jOiIiLHR5cGU6ImluZGV4Iix0ZXh0OiIoe1xuICBpbmRleDoge1xuICAgIGZpZWxkczogW3tfaWQ6ICdhc2MnfV0sXG4gICAgLy8gcGFydGlhbF9maWx0ZXJfc2VsZWN0b3I6e1xuICAgIC8vICAgJ2Zvby5iYXInOnskZ3Q6MH1cbiAgICAvLyB9XG4gIH1cbn0pIixqc29uOntpbmRleDp7ZmllbGRzOlt7X2lkOiJhc2MifV19fSxlcnJvcnM6W10sc3RhbXA6MH0sdWk6eyIjYnRuLXJvb3QiOntkZWxheToxMDAsYmluZDpmdW5jdGlvbih4LGEsYil7Yi5hdHRyKCJocmVmIiwiIyIreC5wYXRoWzBdKSxiLmF0dHIoInRpdGxlIix0aGlzLmxhbmcuVElQX1VQLmFzc2lnbih4LnBhdGhbMF0pKX19LCIjeC1idG4tcm9vdCI6e2Nzczp7dzA6ZnVuY3Rpb24oeCl7cmV0dXJuIXgudmlld30sdzQwOmZ1bmN0aW9uKHgpe3JldHVybiEheC52aWV3fX0sd2F0Y2g6WyIjdmlldy1uYW1lIl19LCIueC12aWV3LW5hdiI6e2RlbGF5OjEwLGNzczp7bmFycm93ZXI6ZnVuY3Rpb24oeCl7cmV0dXJuIXgudmlld319LHdhdGNoOlsiI3ZpZXctbmFtZSJdfSwiI3ZpZXctbmFtZSI6e2luaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpczthLmRhdGE7YS5zZWxlY3QyKHgse2RhdGE6dGhpcy5WaWV3cyxmb3JtYXRTZWxlY3Rpb246YS5mb3JtYXRTZWwyLGRyb3Bkb3duQ3NzQ2xhc3M6InRhbGwiLG1pbmltdW1SZXN1bHRzRm9yU2VhcmNoOjEyfSl9LGJpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzO2lmKG51bGw9PWEpcmV0dXJuIHgudmlldztpZih4LnZpZXchPWEpe3ZhciBjPWIucmVzdG9yZVZpZXdTdGF0ZShhLCExKTtiLnN0YXNoVmlld1N0YXRlKCkseC52aWV3PWEsYi5jbGVhblZpZXdTdGF0ZSgpLGIucmVzdG9yZVZpZXdTdGF0ZSghMSwhMSksYi5idWlsZEdyaWRDb2x1bW5zKCksdm9pZCAwPT09Yy5lZGl0b3ImJigiX2ZpbmQiPT1hLnRvKDUpfHwiX2lkeCI9PWEudG8oNCl8fCJfc3FsIj09YS50byg0KT94LmVkaXRvcj0hMDphfHwoeC5lZGl0b3I9ITEpKX1yZXR1cm4geC52aWV3fX0sIiN2aWV3LWxpbWl0Ijp7aW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YS5kYXRhLGM9KE1hdGguYWJzKCtiLmxpbWl0KXx8MTAwKS5jbGFtcCgxLDFlNCk7YS5zZWxlY3QyKHgse2RhdGE6dGhpcy5TdGVwcy5jb25jYXQoW2NdKS51bmlxdWUoKS5zb3J0QnkoKS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJue2lkOiIrIit4LHRleHQ6eDwxZTM/eCsiIjp4LzFlMysiSyJ9fSksbWluaW11bVJlc3VsdHNGb3JTZWFyY2g6MWU0fSl9LGJpbmQ6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gbnVsbD09YT94LmxpbWl0Oih4LmxpbWl0PWEseC5saW1pdCl9fSwiI3ZpZXctc3RhcnRrZXkiOntkZWxheTowLGJpbmQ6InN0YXJ0IixldmVudHM6ImlucHV0Lm15Iix3YXRjaDpbIiNidG4tY2xlYXItc3RhcnRrZXkiLCIjYnRuLXZpZXctcGx1cyIsIiNidG4tdmlldy1taW51cyIsIiN2aWV3LW5hbWUiXSxjc3M6eyJteS1zZWFyY2giOi9eLnsxLH0kL319LCIjYnRuLXZpZXctbWludXMiOntkZWxheToxLGJpbmQ6ZnVuY3Rpb24oeCxhKXtpZihudWxsIT1hKXt2YXIgYj10aGlzLGM9eC5zdGFydCxkPSt4LnRvdGFsX3Jvd3MsZT0reC5saW1pdCxmPWIuVmlbeC52aWV3XSYmYi5WaVt4LnZpZXddLnJlZHVjZSYmeC5yZWR1Y2UrIiIsZz0iX2ZpbmQiPT14LnZpZXcudG8oNSl8fCJfc3FsIj09eC52aWV3LnRvKDQpLGg9Il9sb2NhbF9kb2NzIj09eC52aWV3O3guc3RhcnQ/L15fXGQrJC8udGVzdCh4LnN0YXJ0KSYmKGM9Il8iKygoK3guc3RhcnQuc3Vic3RyKDEpfHwwKS1lKS5jbGFtcCgwLGZ8fGd8fGg/MWUxMjpkKSk6KGQ+ZXx8Znx8Z3x8aCkmJihjPSJfIisoZC1lKS5jbGFtcCgwLDFlMTIpKSwiXzAiPT1jJiYoYz0iIikseC5zdGFydD1jfX0sY3NzOnsiOmRpc2FibGVkIjpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXM7cmV0dXJuIHguc3RhcnQmJiEvXl9cZCskLy50ZXN0KHguc3RhcnQpfHwheC5zdGFydCYmYi5Sb3dzLmxlbmd0aDw9K3gubGltaXR8fCJfY2hhbmdlcyI9PXgudmlld319LHdhdGNoOlsiI3ZpZXctc3RhcnRrZXkiLCIjdmlldy1saW1pdCIsIiNzdGF0ZS1wcm94eSJdfSwiI2J0bi12aWV3LXBsdXMiOntkZWxheToxLGJpbmQ6ZnVuY3Rpb24oeCxhKXtpZihudWxsIT1hKXt2YXIgYj10aGlzLGM9eC5zdGFydCxkPSt4LnRvdGFsX3Jvd3MsZT0reC5saW1pdCxmPWIuVmlbeC52aWV3XSYmYi5WaVt4LnZpZXddLnJlZHVjZSYmeC5yZWR1Y2UrIiIsZz0iX2ZpbmQiPT14LnZpZXcudG8oNSl8fCJfc3FsIj09eC52aWV3LnRvKDQpLGg9Il9sb2NhbF9kb2NzIj09eC52aWV3O2lmKCJfY2hhbmdlcyI9PXgudmlldyYmeC5yZXZlcnNlKWM9Yi5SZXN1bHRbMF0ucmVzdWx0c1tlXT9iLlJlc3VsdFswXS5yZXN1bHRzW2UtMV0uc2VxKyIiOiIiO2Vsc2UgaWYoeC5zdGFydClpZigvXl9cZCskLy50ZXN0KHguc3RhcnQpKXt2YXIgaT0oK3guc3RhcnQuc3Vic3RyKDEpfHwwKStlO2M9Il8iKyhpPj1kJiYhZiYmIWcmJiFoPzA6aSl9ZWxzZSBjPWIuUm93cy5sZW5ndGg8PWU/IiI6SlNPTi5zdHJpbmdpZnkoYi5Sb3dzW2VdLmtleSkucmVwbGFjZSgvXiJ8IiQvZywiIik7ZWxzZShkPmV8fGZ8fGd8fGgpJiYoYz0iXyIrZSk7Il8wIj09YyYmKGM9IiIpLHguc3RhcnQ9Y319LGNzczp7IjpkaXNhYmxlZCI6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzO3JldHVybiF4LnN0YXJ0JiZiLlJvd3MubGVuZ3RoPD0reC5saW1pdHx8Il9jaGFuZ2VzIj09eC52aWV3JiYheC5yZXZlcnNlfX0sd2F0Y2g6WyIjdmlldy1saW1pdCIsIiNzdGF0ZS1wcm94eSJdfSwiI3ZpZXctZ3JpZCI6e2RlbGF5OjEsaW5pdDpmdW5jdGlvbih4KXt4LnRhZ3Moe3RhZ3M6W3snPHNwYW4gY2xhc3M9ImZpLXRodW1ibmFpbHMgZnMxMTUgbGgxMzAiIHRpdGxlPSJHcmlkIHZpZXciPjwvc3Bhbj4nOiJncmlkIn1dLGVtcHR5OnsnPHNwYW4gY2xhc3M9ImZpLWxpc3QtdGh1bWJuYWlscyBmczExNSBsaDEzMCIgdGl0bGU9IkxpbmUgdmlldyI+PC9zcGFuPic6IiJ9LHRhZ2NzczoidGFnIGJ0biB3MzIgZGliIGNwIix0YWdzaGltOiIiLGdyb3Vwc2hpbToiIn0pfSxiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGIsYz10aGlzO3JldHVybiBudWxsIT1hJiYoYj0hIShhKyIiKSx4LmdyaWQ9Yix4LmdyaWQ/KHgudmlldyYmIl9sb2NhbF9kb2NzIiE9eC52aWV3fHwoeC5pbmNsPVsiZG9jcyJdKSxjLlJvd3MubGVuZ3RoJiYoYy5GaWVsZHMubGVuZ3RofHxjLmJ1aWxkRmllbGRzTGlzdCgpLC9eKF9kZXNpZ25fZG9jc3xfY29uZmxpY3RzKSQvLnRlc3QoeC52aWV3KXx8eC5jb2x1bW5zWzBdJiZ4LmNvbHVtbnMrIiIhPSIudmFsdWUiJiZ4LmNvbHVtbnMrIiIhPSIuZG9jInx8KHguY29sdW1ucz1jLmRlcml2ZUdyaWRDb2x1bW5zKCkpKSxjLmJ1aWxkR3JpZENvbHVtbnMoKSxjLm15LnJlc3R5bGUoKSk6Yy5jbG9zZUF1dG9jb21wbGV0ZXMoKSxjLnN0YXNoVmlld1N0YXRlKCksYy5teS5yZWNhbGMoIiN2aWV3LWdyaWQtY29scyIpLGMubXkuY2hlY2soIiN2aWV3LWdyaWQtY29scyIpKSx4LmdyaWQ/WyJncmlkIl06W119LHdhdGNoOlsiI3ZpZXctbmFtZSJdfSwiI2FwcC1zZWFyY2giOntkZWxheToxNTAsYmluZDpmdW5jdGlvbih4LGEpe3JldHVybiBudWxsPT1hP3guc2VhcmNoOmEubGVuZ3RoPDI/KHRoaXMuZlNlYXJjaD10aGlzLmNtU2VhcmNoPW51bGwseC5zZWFyY2g9IiIsYSk6KHguc2VhcmNoPWEsdGhpcy5mU2VhcmNoPW5ldyBSZWdFeHAoIigiK1JlZ0V4cC5lc2NhcGUoYSkrIikiLCJpIiksdGhpcy5jbVNlYXJjaD1uZXcgUmVnRXhwKCJeIitSZWdFeHAuZXNjYXBlKGEpLCJpIiksYSl9LGNzczp7Im15LXNlYXJjaCI6L14uezIsfSQvfSx3YXRjaDpbIiNzdGF0ZS1wcm94eSJdfSwiI3ZpZXctcGFuZWxzIjp7d2F0Y2g6WyIjdmlldy1uYW1lIiwiI2J0bi12aWV3Y29kZSJdLGNzczp7InZpZXctZWRpdG9yIjpmdW5jdGlvbih4KXtyZXR1cm4hL14oX2NoYW5nZXN8X2Rlc2lnbl9kb2NzfF9sb2NhbF9kb2NzfCkkLy50ZXN0KHgudmlldykmJiEheC5lZGl0b3J9LCJ2aWV3LW1hbmdvIjpmdW5jdGlvbih4KXtyZXR1cm4vXl8oZmluZHxzcWwpLy50ZXN0KHgudmlldyl8fCJfY29uZmxpY3RzIj09eC52aWV3fSwidmlldy1pbmRleCI6ZnVuY3Rpb24oeCl7cmV0dXJuIl9pZHgiPT14LnZpZXcudG8oNCl9LCJ2aWV3LWNoYW5nZXMiOmZ1bmN0aW9uKHgpe3JldHVybiJfY2hhbmdlcyI9PXgudmlldy50byg4KX0sIm1vZGUtZ3JpZCI6ZnVuY3Rpb24oeCl7cmV0dXJuIHguZ3JpZH0sIm1vZGUtanNvbiI6ZnVuY3Rpb24oeCl7cmV0dXJuIXguZ3JpZH0sImRiLXVzZXJzIjpmdW5jdGlvbih4KXtyZXR1cm4iX3VzZXJzIj09eC5wYXRoWzBdfX19LCIjYnRuLXJlbG9hZCI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtpZihudWxsIT1hKXt2YXIgYj1bXTt4LnNlbGVjdGlvbi5sZW5ndGgmJi9eKHxfZGVzaWduX2RvY3N8X2xvY2FsX2RvY3MpJC8udGVzdCh4LnZpZXcpJiYoYj14LnNlbGVjdGlvbi5zb3J0KCkudW5pcXVlKCkpLHRoaXMuR2V0VmlldyghMCxiKSxiLmxlbmd0aHx8L15fKGRlc2lnbnxsb2NhbClfZG9jcyQvLnRlc3QoeC52aWV3KXx8Il9pZHgv77+9Ij09eC52aWV3LnRvKDYpfHx0aGlzLkdldFZpZXdzKCEwKX19LGxpc3Rlbjp7dXNlckN0eDpmdW5jdGlvbih4LGEpe09iamVjdC5pc09iamVjdChhKSYmIWEubmFtZSYmL15fKHVzZXJzfHJlcGxpY2F0b3IpJC8udGVzdCh4LnBhdGhbMF0pJiYkLm15LnJhZGlvKCJyZWxvYWQiLHtpZDp4LnRhYmlkLHBhdGg6eC5wYXRofSl9LGRidXBkYXRlOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpczshT2JqZWN0LmlzT2JqZWN0KGEpfHwid3JpdGUiIT1hLmNtZCYmImRlbGV0ZSIhPWEuY21kfHxhLmRiPT14LnBhdGhbMF0mJihhLmRvY3N8fFtdKS5maW5kKHgudmlldy5zcGxpdCgi77+9IilbMF0pJiZiLkdldFZpZXdzKCEwKX19fSwiI2J0bi12aWV3LWNvbXBhY3QiOntiaW5kOmZ1bmN0aW9uKHgsYSxiKXtpZihudWxsIT1hKXt2YXIgYz10aGlzLGQ9eC5wYXRoLGU9e30sZj1PYmplY3Quc2l6ZShjLlZpKT97ZGRvY3M6T2JqZWN0LmtleXMoYy5WaSkubWFwKGZ1bmN0aW9uKHgpe3JldHVybiB4LnNwbGl0KCLvv70iKVswXS5zcGxpdCgiLyIpWzFdfSkudW5pcXVlKCkuc29ydCgpfTp7fTtiLmRhdGEoIm1vZGFsIik/Yy5teS5tb2RhbCgiI2J0bi12aWV3LWNvbXBhY3QiLCEwKTooYy5Nb2RhbHMuaGVhZCYmYy5Nb2RhbHMuaGVhZC5tb2RhbCghMCksYy5Nb2RhbHMuaGVhZD1iLCJfZGVzaWduX2RvY3MiPT14LnZpZXcmJihlPXtkc2VsZWN0aW9uOihmLmRkb2NzfHxbXSkuaW50ZXJzZWN0KHguc2VsZWN0aW9uLm1hcChmdW5jdGlvbih4KXtyZXR1cm4geC5zcGxpdCgiLyIpWzFdfSkpLnNsaWNlKDApLG9wczpbInZpZXdzIiwiZGRvY3MiXX0pLGMubXkubW9kYWwoIiNidG4tdmlldy1jb21wYWN0Iix7bWFuaWZlc3Q6JC5leHRlbmQoITAse30sYy5QaG8oIkNvbXBhY3QiKSx7Q0I6e2Rkb2NzOmZ1bmN0aW9uKHgpe2MuR2V0VmlldyghMCl9fX0pLHdpZHRoOjM3MCxkYXRhOiQuZXh0ZW5kKHtzZWxlY3Rpb246W3gucGF0aFswXV0sb3BzOlsiZG9jcyIsInZpZXdzIl19LGYsIl92aWV3Ij09ZFsxXT97b3BzOlsiZGRvY3MiXSxkc2VsZWN0aW9uOltkWzJdXX06e30sZSksYWxpZ246InRvcDoxMDIlOyIsbm9zZToidG9wIixjc3M6InhncmF5IixzY3JlZW46InJnYmEoMjU1LDI1NSwyNTUsMCkiLGVzYzohMCxib3VuZDoyMCxmb2N1czoiI2J0bi1zdGFydCJ9KS5hbHdheXMoZnVuY3Rpb24oKXtjLk1vZGFscy5oZWFkPW51bGx9KSl9fX0sIiNidG4tdmlldy1hY2wiOntiaW5kOmZ1bmN0aW9uKHgsYSxiKXtpZihudWxsIT1hKXt2YXIgYz10aGlzO2IuZGF0YSgibW9kYWwiKT9jLm15Lm1vZGFsKCIjYnRuLXZpZXctYWNsIiwhMCk6Yy5SZXEoW3gucGF0aFswXSwiX3NlY3VyaXR5Il0pLnRoZW4oZnVuY3Rpb24oYSl7Yy5Nb2RhbHMuaGVhZCYmYy5Nb2RhbHMuaGVhZC5tb2RhbCghMCksYy5Nb2RhbHMuaGVhZD1iLGMubXkubW9kYWwoIiNidG4tdmlldy1hY2wiLHttYW5pZmVzdDpjLlBobygiU2VjT2JqIiksd2lkdGg6MzgwLGRhdGE6JC5leHRlbmQoITAse30se2RiczpbeC5wYXRoWzBdXSxhZG1pbnM6YS5hZG1pbnN8fHtuYW1lczpbXSxyb2xlczpbXX0sbWVtYmVyczphLm1lbWJlcnN8fHtuYW1lczpbXSxyb2xlczpbXX19KSxhbGlnbjoidG9wOjEwMiU7Iixub3NlOiJ0b3AiLGNzczoieGdyYXkiLHNjcmVlbjoicmdiYSgyNTUsMjU1LDI1NSwwKSIsZXNjOiEwLGJvdW5kOjIwLGZvY3VzOiIjYnRuLXN0YXJ0In0pLmFsd2F5cyhmdW5jdGlvbigpe2MuTW9kYWxzLmhlYWQ9bnVsbH0pfSkuZmFpbChmdW5jdGlvbih4LGEsYil7Y3cubGliLm5vdGUoYy5sYW5nLkVSUl9HRVRBQ0wsImVycm9yIil9KX19LGNzczp7InNlbGY6aGlkZSI6ZnVuY3Rpb24oeCl7cmV0dXJuISF4LnZpZXd9fSx3YXRjaDpbIiN2aWV3LW5hbWUiXX0sIiNidG4tdmlldy1uZXdkb2MiOntpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXM7Il91c2VycyI9PWEuZGF0YS5wYXRoWzBdJiYoeC5vbigiY2xpY2subXkiLGZ1bmN0aW9uKGIpe3JldHVybiB4LmRhdGEoIm1vZGFsIik/KGEubXkubW9kYWwoIiNidG4tdmlldy1uZXdkb2MiLCEwKSwhMSk6KGEuTW9kYWxzLmhlYWQmJmEuTW9kYWxzLmhlYWQubW9kYWwoITApLGEuTW9kYWxzLmhlYWQ9eCxhLm15Lm1vZGFsKCIjYnRuLXZpZXctbmV3ZG9jIix7bWFuaWZlc3Q6YS5QaG8oIlVzZXJEb2MiKSx3aWR0aDozODAsZGF0YTp7fSxhbGlnbjoidG9wOjEwMiU7bGVmdDotMTQ3cHg7Iixub3NlOiJ0b3AiLGNzczoieGdyYXkiLHNjcmVlbjohMSxlc2M6ITAsZm9jdXM6ITAsYm91bmQ6MjB9KS5hbHdheXMoZnVuY3Rpb24oKXthLk1vZGFscy5oZWFkPW51bGx9KSwhMSl9KSx4Lmh0bWwoJzxzcGFuIGNsYXNzPSJsaDE0MCI+JythLmxhbmcuQlROX05FV1VTRVJfRExHKyI8L3NwYW4+IikpfSxiaW5kOmZ1bmN0aW9uKHgsYSxiKXtiLmF0dHIoImhyZWYiLCIjIitlbmNvZGVVUklDb21wb25lbnQoeC5wYXRoWzBdKSsiL19uZXciKX0sY3NzOnt9LHdhdGNoOlsiI3ZpZXctYWN0aW9ucyJdfSwiI2J0bi12aWV3LW5ld2luZGV4Ijp7YmluZDpmdW5jdGlvbih4LGEsYil7aWYobnVsbCE9YSl7dmFyIGM9dGhpcyxkPSIiLGU9ImphdmFzY3JpcHQiOy9eXyhkZXNpZ258aWR4KVwvLy50ZXN0KHgudmlldyk/ZD14LnZpZXcuc3BsaXQoIu+/vSIpWzBdOi9eZGVzaWduXC8vLnRlc3QoeC5zZWxlY3Rpb25bMF18fCIiKSYmKGQ9eC5zZWxlY3Rpb25bMF0pLGQ9ZD8iX2Rlc2lnbi8iK2QucmVwbGFjZSgvXl8oZGVzaWdufGlkeClcLy8sIiIpOiIiLGMuRGRvY3NbZF0mJihlPWMuRGRvY3NbZF0ubGFuZ3VhZ2V8fGUpLGMuY3JlYXRlTmV3SWR4RGxnKGIse19maXhsYW5nOiExLF92YWxpZDohMCxfc2F2ZTohMCxsYW5ndWFnZTplLGRkb2M6ZH0pLnRoZW4oZnVuY3Rpb24oeCl7dmFyIGE7ZnVuY3Rpb24gYigpe2MuY2hhbmdlVmlldyhbInF1ZXJ5Ij09eC5sYW5ndWFnZT8iX2lkeC8iOiJfZGVzaWduLyIseC5kZG9jLnJlcGxhY2UoL15fZGVzaWduXC8vLCIiKSwi77+9Iix4Lm5hbWVdLmpvaW4oIiIpKX0oYT1jLlBlbmRpbmcuX3ZpZXdsaXN0KT9hLnRoZW4oYi5kZWJvdW5jZSgzMCkpOmIoKX0uZGVib3VuY2UoMzApKX19LGNzczp7InNlbGY6aGlkZSI6ZnVuY3Rpb24oeCl7cmV0dXJuISF4LnZpZXcmJnguc2VsZWN0aW9uLmxlbmd0aH19LHdhdGNoOlsiI3ZpZXctYWN0aW9ucyJdfSwiI3ZpZXctYWN0aW9ucyI6e2RlbGF5OjUwLGNzczp7aGFzU2VsZWN0aW9uOmZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmhhc1NlbGVjdGlvbj0hKCIiIT14LnJlZHVjZXx8Il9maW5kIj09eC52aWV3LnRvKDUpfHwiX3NxbCI9PXgudmlldy50byg0KXx8IXguc2VsZWN0aW9uLmludGVyc2VjdCh0aGlzLlJvd3MudG8oK3gubGltaXQpLm1hcChmdW5jdGlvbih4KXtyZXR1cm4geC5pZH0pKS5sZW5ndGgpLHRoaXMuaGFzU2VsZWN0aW9ufSxpc0Rkb2NzOmZ1bmN0aW9uKHgpe3JldHVybiJfZGVzaWduX2RvY3MiPT14LnZpZXd9fSx3YXRjaDpbIiN2aWV3LW5hbWUiLCIjYnRuLXNlbGVjdCJdfSwiI2J0bi12aWV3LWRlbGRvY3MiOntkZWxheToyMCxiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcztpZihudWxsIT1hKXtiLkJ1c3koITApO3ZhciBjPWIubXkuZmluZCgiI2J0bi12aWV3LWNvcHlkb2NzIik7Yy5kYXRhKCJtb2RhbCIpJiZjLm1vZGFsKCEwKSxiLkRlbERvY3MoKS5hbHdheXMoZnVuY3Rpb24oKXtiLkJ1c3koITEpfS5kZWJvdW5jZSgxMCkpfXZhciBkPWIubGFuZ1t4LnNlbGVjdGlvbi5sZW5ndGg+MT8iQlROX0RFTERPQ1MiOiJCVE5fREVMMURPQyJdO3JldHVybiJfZGVzaWduX2RvY3MiPT14LnZpZXc/ZDpkLnN0cmlwVGFncygpfSx3YXRjaDpbIiN2aWV3LWFjdGlvbnMiXX0sIiNidG4tdmlldy1jb3B5ZG9jcyI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtpZihudWxsIT1hKXt2YXIgYj10aGlzLGM9Yi5teS5maW5kKCIjYnRuLXZpZXctY29weWRvY3MiKTtpZihjLmRhdGEoIm1vZGFsIikpcmV0dXJuIGMubW9kYWwoITApLHZvaWQgMDtjLm1vZGFsKHtyb290OmIubXkucm9vdCgpLG1hbmlmZXN0OiQuZXh0ZW5kKCEwLHt9LGIuUGhvKCJTeW5jVGFzayIpLHtwYXJhbXM6e3dpZHRoOjUwMH19KSxkYXRhOnt0YXNrOiJDb3B5IixzcmM6e3VybDp4LnBhdGhbMF0sZmlsdGVyOlsiaWRzIl0saWRzOnguc2VsZWN0aW9uLnNsaWNlKDApfX0sZm9jdXM6IiNydGFyZ2V0Iixub3NlOiJ0b3AiLGFsaWduOiJ0b3A6MTAzJSIsZHJhZzoiLmNtIixjc3M6InhncmF5Iixlc2M6ITAsYm91bmQ6MH0pfX0sY3NzOnsiOmRpc2FibGVkIjpmdW5jdGlvbih4KXtyZXR1cm4hY3cubWUoKX0sInNlbGY6aGlkZSI6ZnVuY3Rpb24oeCl7cmV0dXJuIl9sb2NhbF9kb2NzIj09eC52aWV3fX0sbGlzdGVuOnt1c2VyQ3R4OmZ1bmN0aW9uKHgsYSl7dGhpcy5teS5jaGVjaygiI2J0bi12aWV3LWNvcHlkb2NzIil9fSx3YXRjaDpbIiN2aWV3LW5hbWUiXX0sIiNidG4tdmlld2NvZGUiOntiaW5kOmZ1bmN0aW9uKHgsYSxiKXt2YXIgYz10aGlzO3JldHVybiBudWxsIT1hJiZ4LnZpZXcmJihjLmNsb3NlQXV0b2NvbXBsZXRlcygpLGMuRWRTd2l0Y2goKSx4LmVkaXRvcj0hMCxjLnN0YXNoVmlld1N0YXRlKCkpLGMubGFuZ1t4LmdyaWQmJigiX3NxbCI9PXgudmlldy50byg0KXx8Il9maW5kIj09eC52aWV3LnRvKDUpfHx0aGlzLlZpW3gudmlld10mJnRoaXMuVmlbeC52aWV3XS5yZWR1Y2UpPyJCVE5fVklFV0NPREVfR00iOiJCVE5fVklFV0NPREUiXX0sY3NzOntoaWRlOmZ1bmN0aW9uKHgpe3JldHVybiEheC5lZGl0b3J8fC9eKHxfZGVzaWduX2RvY3N8X2xvY2FsX2RvY3N8X2NoYW5nZXN8X2NvbmZsaWN0cykkLy50ZXN0KHgudmlldyl9fSxldmVudHM6ImNsaWNrLm15Iix3YXRjaDpbIiN2aWV3LW5hbWUiLCIjdmlldy1ncmlkIl19LCIjYnRuLXZpZXctZGlyIjp7YmluZDpmdW5jdGlvbih4LGEpe3JldHVybiBudWxsIT1hJiYoeC5yZXZlcnNlPSF4LnJldmVyc2UpLHgucmV2ZXJzZT8i4pa8Ijoi4payIn0sZXZlbnRzOiJjbGljay5teSJ9LCIjdmlldy1jb2xzIjp7ZGVsYXk6MzAsYmluZDpmdW5jdGlvbih4LGEpe2lmKCgiX2ZpbmQiPT14LnZpZXcudG8oNSl8fCJfc3FsIj09eC52aWV3LnRvKDQpfHwiX2NvbmZsaWN0cyI9PXgudmlldykmJnguZ3JpZClyZXR1cm4iIyI7dmFyIGIsYz0reC50b3RhbF9yb3dzLGQ9eC5zZWFyY2g7cmV0dXJuIHRoaXMubGFuZy5UWFRfTUFQVklFVyhNYXRoLm1pbih0aGlzLlJvd3MubGVuZ3RoLCt4LmxpbWl0KSwtMT09Yz8iPz8iOmM8OTk5OT9jOiJ+IitjLm1ldHJpYygxLDQpLGQubGVuZ3RoPjEmJihiPXguZ3JpZD90aGlzLmdSb3dzOnRoaXMuZlJvd3MpP2IubGVuZ3RoOm51bGwseC5ncmlkJiZ0aGlzLlZpW3gudmlld10mJnRoaXMuVmlbeC52aWV3XS5yZWR1Y2UpfSx3YXRjaDpbIiN2aWV3LXJlc3VsdHMtanNvbiIsIiNzdGF0ZS1wcm94eSIsIiN2aWV3LWdyaWQiXX0sIiN2aWV3LWxpbmtzIjp7YmluZDpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXMsYz0nPGEgY2xhc3M9InRkbiIgaHJlZj0iI3sxfSI+ezJ9PC9hPicsZD14LnBhdGgsZT14LnZpZXcuc3BsaXQoIu+/vSIpLGY9Yi5wMnUoZFswXSksZz1iLnRydW5jKGRbMF0sMjUpLmVzY2FwZUhUTUwoKTtyZXR1cm4geC52aWV3Py9eKF9kZXNpZ25fZG9jc3xfbG9jYWxfZG9jcykkLy50ZXN0KHgudmlldyk/W2MuYXNzaWduKGYsZyksIi8iLCc8c3BhbiBjbGFzcz0ieGdyYXkiPicreC52aWV3KyI8L3NwYW4+IHwgIl0uam9pbigi4oCJIik6Il9maW5kIj09eC52aWV3LnRvKDUpfHwiX3NxbCI9PXgudmlldy50byg0KT9bYy5hc3NpZ24oZixnKSwiLyIsJzxzcGFuIGNsYXNzPSJ4Z3JheSI+X2ZpbmQ8L3NwYW4+J10uam9pbigi4oCJIik6Il9jb25mbGljdHMiPT14LnZpZXc/W2MuYXNzaWduKGYsZyksIi8iLCc8c3BhbiBjbGFzcz0ieGdyYXkiPl9jb25mbGljdHM8L3NwYW4+J10uam9pbigi4oCJIik6Il9pZHgv77+9Ij09eC52aWV3LnRvKDYpP1tjLmFzc2lnbihmLGcpLCIvIiwiX2FsbF9kb2NzIHwgIl0uam9pbigi4oCJIik6Il9pZHgiPT14LnZpZXcudG8oNCk/W2MuYXNzaWduKGYsZyksIi8iLGMuYXNzaWduKGYrIi9fZGVzaWduIitlWzBdLmZyb20oNCksKCJfZGVzaWduIitlWzBdLmZyb20oNCkpLmVzY2FwZUhUTUwoKSldLmpvaW4oIuKAiSIpKyIgfCAiOltjLmFzc2lnbihmLGcpLCIvIixjLmFzc2lnbihmKyIvIitlWzBdLGVbMF0uZXNjYXBlSFRNTCgpKV0uam9pbigi4oCJIikrIiB8ICI6W2csIi8iLCc8c3BhbiBjbGFzcz0ieGdyYXkiPl9hbGxfZG9jczwvc3Bhbj4nXS5qb2luKCLigIkiKSsiIHwgIn0sd2F0Y2g6WyIjdmlldy1yZXN1bHRzLWpzb24iLCIjc3RhdGUtcHJveHkiXX0sIiN2aWV3LWRkc3RhdHMiOntiaW5kOmZ1bmN0aW9uKHgpe2lmKCJfZGVzaWduX2RvY3MiIT14LnZpZXcpcmV0dXJuIiI7dmFyIGE9MCxiPTA7cmV0dXJuIHRoaXMuUm93cy5mb3JFYWNoKGZ1bmN0aW9uKHgpe3gudmFsdWUmJngudmFsdWUuc2l6ZXMmJihhKz14LnZhbHVlLnNpemVzLmFjdGl2ZSxiKz14LnZhbHVlLnNpemVzLmZpbGUpfSksYSYmYj90aGlzLmxhbmcuVFhUX0REU1RBVFMuYXNzaWduKHRoaXMuQnl0ZXMoYiksdGhpcy5CeXRlcyhhKSk6IiJ9LGNzczp7InNlbGY6aGlkZSI6ZnVuY3Rpb24oeCxhKXtyZXR1cm4iX2Rlc2lnbl9kb2NzIiE9eC52aWV3fX0sd2F0Y2g6WyIjdmlldy1yZXN1bHRzLWpzb24iLCIjc3RhdGUtcHJveHkiXX0sIiN2aWV3LXdpdGhkb2NzIjp7ZGVsYXk6MTAsaW5pdDpmdW5jdGlvbih4KXt4LnRhZ3ModGhpcy5sYW5nLlRBR19XSVRIRE9DUyl9LGJpbmQ6ImluY2wiLGNzczp7InNlbGY6aGlkZSI6ZnVuY3Rpb24oeCxhKXtyZXR1cm4hIXgudmlldyYmIl9sb2NhbF9kb2NzIiE9eC52aWV3fX0sd2F0Y2g6WyIjdmlldy1uYW1lIiwiI3ZpZXctZ3JpZCJdfSwiI3ZpZXctcmVkdWNlIjp7ZGVsYXk6MTAsaW5pdDpmdW5jdGlvbih4KXt4LnRhZ3ModGhpcy5sYW5nLlRBR19SRURVQ0UpfSxiaW5kOmZ1bmN0aW9uKHgsYSl7aWYobnVsbD09YSlyZXR1cm5beC5yZWR1Y2VdO2lmKCEheC5yZWR1Y2UhPSEhKGErIiIpKXt2YXIgYj14LmNvbHVtbnM7eC5jb2x1bW5zPXguc2hhZG93LHguc2hhZG93PWJ9cmV0dXJuIHgucmVkdWNlPWErIiIsW3gucmVkdWNlXX0sY3NzOnsic2VsZjpoaWRlIjpmdW5jdGlvbih4LGEpe3JldHVybiF0aGlzLlZpW3gudmlld118fCF0aGlzLlZpW3gudmlld10ucmVkdWNlfX0sd2F0Y2g6WyIjdmlldy1uYW1lIiwiI3NlbC1yZWR1Y2UiXX0sIiNidG4tYW5jaG9yIjp7ZGVsYXk6MTAsYmluZDpmdW5jdGlvbih4LGEsYil7Yi5hdHRyKCJocmVmIikhPXgubGluayYmYi5hdHRyKCJocmVmIix4LmxpbmspfSx3YXRjaDoiI3N0YXRlLXByb3h5Iixjc3M6e2hpZGU6ZnVuY3Rpb24oeCl7cmV0dXJuIl9maW5kIj09eC52aWV3LnRvKDUpfHwiX3NxbCI9PXgudmlldy50byg0KXx8Il9jb25mbGljdHMiPT14LnZpZXd9fX0sIiN2aWV3LXBuYXYtanNvbiI6e2Nzczp7aGlkZTpmdW5jdGlvbih4KXtyZXR1cm4hIXguZ3JpZH19LHdhdGNoOlsiI3ZpZXctZ3JpZCJdfSwiI2J0bi1zZWxlY3QiOntkZWxheTo1MCxiaW5kOmZ1bmN0aW9uKHgsYSl7aWYoIiIhPXgucmVkdWNlfHwiX2ZpbmQiPT14LnZpZXcudG8oNSl8fCJfc3FsIj09eC52aWV3LnRvKDQpfHwiX2NvbmZsaWN0cyI9PXgudmlldylyZXR1cm4iIjt2YXIgYj10aGlzLGM9KCh4LmdyaWQ/Yi5nUm93czpiLmZSb3dzKXx8Yi5Sb3dzKS50bygreC5saW1pdCkubWFwKHg9PnguaWQpLnVuaXF1ZSgpLGQ9eC5zZWxlY3Rpb24uaW50ZXJzZWN0KGMpLGU9ZC5sZW5ndGgsZj14LnNlbGVjdGlvbi5sZW5ndGgsZz1iLmxhbmc7cmV0dXJuIG51bGwhPWEmJih4LnNlbGVjdGlvbj1lP3guc2VsZWN0aW9uLnN1YnRyYWN0KGMpLnVuaXF1ZSgpOmY/W106eC5zZWxlY3Rpb24uY29uY2F0KGMpLnVuaXF1ZSgpLGU9KGQ9eC5zZWxlY3Rpb24uaW50ZXJzZWN0KGMpKS5sZW5ndGgpLGUmJmU9PWY/Zy5UWFRfVU5TRUxFQ1QuYXNzaWduKGU9PWMubGVuZ3RoP2cuVFhUX1NFTEVDVF9BTEw6ZSk6IWUmJmY/Zy5UWFRfVU5TRUxFQ1QuYXNzaWduKGYpOmUmJmUhPWY/Zy5UWFRfVU5TRUxFQ1RfT0YuYXNzaWduKGUsZik6Zy5UWFRfU0VMRUNULmFzc2lnbih4LnNlYXJjaC5sZW5ndGg+MT9nLlRYVF9TRUxFQ1RfRklMVEVSOmcuVFhUX1NFTEVDVF9BTEwpfSxldmVudHM6ImNsaWNrLm15Iixjc3M6e2hpZGU6ZnVuY3Rpb24oeCxhKXtyZXR1cm4hKHRoaXMuZlJvd3N8fHRoaXMuUm93cykubGVuZ3RofHwiIiE9eC5yZWR1Y2V8fCJfZmluZCI9PXgudmlldy50byg1KXx8Il9zcWwiPT14LnZpZXcudG8oNCl8fCJfY29uZmxpY3RzIj09eC52aWV3fX0sd2F0Y2g6WyIjdmlldy1hY3Rpb25zIiwiI3N0YXRlLXByb3h5IiwiI2FwcC1zZWFyY2giLCIjYnRuLXJlZHVjZSJdfSwiI2J0bi1ncmlkLWFkZGNvbCI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtpZihudWxsIT1hJiZ4LmdyaWQpe3ZhciBiPXRoaXM7eC5jb2x1bW5zKyIiPT0iLnZhbHVlIj94LmNvbHVtbnM9Yi5kZXJpdmVHcmlkQ29sdW1ucygpOnguY29sdW1ucy5wdXNoKCIiKSxiLmJ1aWxkR3JpZENvbHVtbnMoKSxiLnVwZGF0ZUdyaWRGcm9tQ29sdW1ucy5kZWxheSgxKSxiLm15LnJlc3R5bGUoKX19LGV2ZW50czoiY2xpY2subXkiLGNzczp7aGlkZTpmdW5jdGlvbih4KXtyZXR1cm4heC5ncmlkfHx0aGlzLkNvbHVtbnMubGVuZ3RoPjd9fSx3YXRjaDpbIiN2aWV3LWdyaWQiLCIjZ3JpZC1wcm94eSJdfSwiI3NlbC1yZWR1Y2UiOntkZWxheToyMCxpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXM7YS5kYXRhO2Euc2VsZWN0Mih4LHttdWx0aXBsZTohMSxkYXRhOmEubGFuZy5TRUxfUkVEVUNFLG1pbmltdW1SZXN1bHRzRm9yU2VhcmNoOjEyfSl9LGJpbmQ6ZnVuY3Rpb24oeCxhKXtpZihudWxsPT1hKXJldHVybiB4LnJlZHVjZSsiIjtpZighIXgucmVkdWNlIT0hIShhKyIiKSYmeC5ncmlkKXt2YXIgYj14LmNvbHVtbnM7eC5jb2x1bW5zPXguc2hhZG93LHguc2hhZG93PWJ9cmV0dXJuIHgucmVkdWNlPWErIiIseC5yZWR1Y2V9LGNzczp7aGlkZTpmdW5jdGlvbih4LGEpe3JldHVybiEoeC5ncmlkJiZ0aGlzLlZpW3gudmlld10mJnRoaXMuVmlbeC52aWV3XS5yZWR1Y2UmJngucmVkdWNlKyIiKX19LHdhdGNoOlsiI3ZpZXctZ3JpZCIsIiN2aWV3LW5hbWUiLCIjdmlldy1yZWR1Y2UiLCIjYnRuLXJlZHVjZSJdfSwiI2J0bi1yZWR1Y2UiOntkZWxheToyMCxiaW5kOmZ1bmN0aW9uKHgsYSl7aWYobnVsbCE9YSl7dmFyIGI9eC5jb2x1bW5zO3guY29sdW1ucz14LnNoYWRvdyx4LnNoYWRvdz1iLHgucmVkdWNlPSIxIn1yZXR1cm4gdGhpcy5sYW5nLkJUTl9HUkVEVUNFX0dNfSxjc3M6eyJzZWxmOmhpZGUiOmZ1bmN0aW9uKHgsYSl7cmV0dXJuISh4LmdyaWQmJnRoaXMuVmlbeC52aWV3XSYmdGhpcy5WaVt4LnZpZXddLnJlZHVjZSYmISh4LnJlZHVjZSsiIikpfX0sZXZlbnRzOiJjbGljay5teSIsd2F0Y2g6WyIjdmlldy1ncmlkIiwiI3ZpZXctbmFtZSIsIiNzZWwtcmVkdWNlIiwiI3ZpZXctcmVkdWNlIl19LCIjdmlldy1wbmF2LWdyaWQiOntjc3M6e2hpZGU6ZnVuY3Rpb24oeCl7cmV0dXJuIXguZ3JpZH19LHdhdGNoOlsiI3ZpZXctZ3JpZCJdfSwiI3ZpZXctZ3JpZC1jb2xzIjp7Y2hlY2s6ITAsZGVsYXk6MTUsaW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzO2EuZGF0YTt4LnNvcnRhYmxlKHtheGlzOiJ4IixkaXN0YW5jZTo1LGhhbmRsZToiLnZpZXctZ3JpZC1jb2xzLXNvcnQiLHVwZGF0ZTpmdW5jdGlvbih4KXthLnVwZGF0ZUdyaWRGcm9tQ29sdW1ucy5kZWxheSgyMSl9fSksYS5idWlsZEdyaWRDb2x1bW5zKCl9LG1lcmdlOiExLGJpbmQ6InRoaXMuQ29sdW1ucyIsbGlzdDonPGRpdiBjbGFzcz0idmlldy1ncmlkLWNvbHVtbiBkaWIgdmF0Ij48ZGl2IGNsYXNzPSJ2aWV3LWdyaWQtY29scy1zb3J0IiB0aXRsZT0iRHJhZyBoZXJlIHRvIHNvcnQgY29sdW1ucyI+PC9kaXY+PGRpdiBjbGFzcz0idzEwMHAgZGliIHZhdCI+PGlucHV0IGNsYXNzPSJncmlkLWNvbHVtbi1wdHIgYm9sZGVyIiB0eXBlPSJ0ZXh0IiBzcGVsbGNoZWNrPSJmYWxzZSI+PHNwYW4gaWQ9ImJ0bi1mb2xkIiBjbGFzcz0icHNldWRvbGluayB0ZG4gYmZvbGQgZGliIHZhdCI+PHNwYW4gY2xhc3M9ImFkb3duIj48L3NwYW4+PC9zcGFuPjwvZGl2PjwvZGl2PicsaWQ6WyJpZCJdLG1hbmlmZXN0OmZ1bmN0aW9uKHgsYSl7cmV0dXJuIHRoaXMuR3JpZENvbHVtbigpfSx3YXRjaDpbIiNidG4tZ3JpZC1hZGRjb2wiLCIjdmlldy1ncmlkIl19LCIjZ3JpZC1wcm94eSI6e2RlbGF5OjEsYmluZDpmdW5jdGlvbih4LGEpe251bGw9PWF9fSwiI3ZpZXctZ3JpZC1jb2xzLXN0eWxlIjp7YmluZDpmdW5jdGlvbih4LGEpe2Zvcih2YXIgYj10aGlzLkNvbHVtbnMsYz1iLmxlbmd0aCxkPSIubXktZm9ybS0iK3RoaXMubXkucm9vdCgpLmRhdGEoIm15IikuY2lkLGU9dGhpcy5QaG8oImRhdGEiKS5mb250Q29kZSxmPVtdLGc9MCxoPTAsaT1udWxsLGo9IiIsaz0iIixsPSIiO2c8YztnKyspaj1iW2ddLmNhc3QsKGJbZ10mJiJpbnQiPT1qfHwiY3VyciI9PWp8fCJoZXgiPT1qKSYmKGs9ZCsiIC5tb2RlLWdyaWQgdGQuZ3JpZC1jb2x1bW46bnRoLWNoaWxkKCIrKGgrMikrIikiLGw9ImZvbnQtZmFtaWx5OiIrZSsiOyBmb250LXNpemU6MC45NWVtOyBwYWRkaW5nLXRvcDowLjEyZW0haW1wb3J0YW50OyIsZi5wdXNoKGsrInsiKygiaGV4IiE9aj8idGV4dC1hbGlnbjpyaWdodDsiOiIiKStsKyJ9IiksZi5wdXNoKGsrIj5kaXZ7bWluLWhlaWdodDoxLjhlbTtsaW5lLWhlaWdodDoxLjM1ZW07fSIpKSxiW2ddLmNvbHMhPT1pJiYoaCs9MSksaT1iW2ddLmNvbHM7cmV0dXJuIGYuam9pbigiXG4iKX0sd2F0Y2g6WyIjdmlldy1ncmlkLWNvbHMiXX0sIiNyZXEtZHVyIjp7ZGVsYXk6MTAwLGJpbmQ6ZnVuY3Rpb24oeCl7dmFyIGE9eC5kdXIsYj14LnNpemU7cmV0dXJuIGEmJmI/dGhpcy5CeXRlcyhiKSsiIMK3ICIrYSsibXMiOiIifSxjc3M6e2hpZGU6ZnVuY3Rpb24oeCl7cmV0dXJuIXguZHVyfHwheC5zaXplfX0sd2F0Y2g6WyIjc3RhdGUtcHJveHkiXX0sIiNzdGF0ZS1wcm94eSI6e2RlbGF5OjIwLHJlY2FsY0RlcHRoOjEsYmluZDpmdW5jdGlvbih4LGEpe2lmKG51bGw9PWEpe3ZhciBiPXRoaXM7eC5wYXRoLnNsaWNlKDApO3gucGF0aD1iLnMycCgpO3ZhciBjPWN3LmxpYi5zZGJtKFt4LnZpZXcseC5zdGFydCx4LmxpbWl0LHgucmV2ZXJzZSx4LnJlZHVjZSsiIix4LnZpZXcmJiJfbG9jYWxfZG9jcyIhPXgudmlldz8iIjp4LmluY2wrIiJdKTt4LnN0YXRlIT1jJiYoYi5zdGFzaFZpZXdTdGF0ZSgpLCQubXkucmFkaW8oInBhdGhjaGFuZ2UiLHtpZDp4LnRhYmlkLHBhdGg6eC5wYXRoLHRpdGxlOmIudGl0bGUoKX0pLHguc3RhdGU9Yyx4LnZpZXcmJiFiLmlzVmlld1NwZWNpYWwoeC52aWV3KXx8KHguZWRpdG9yPSExKSx4LmVkaXRvcj9iLkVkU3dpdGNoKCk6Yi5FZGl0b3IubGVuZ3RoPTAsYi5HZXRWaWV3KCEwKSxiLm15LnJlY2FsYygiI3ZpZXctZWQtY29udGFpbmVyIikpfX0sd2F0Y2g6WyIjdmlldy1ncmlkIiwiI3ZpZXctc3RhcnRrZXkiLCIjdmlldy1uYW1lIiwiI3ZpZXctbGltaXQiLCIjYnRuLXZpZXctZGlyIiwiI3ZpZXctcmVkdWNlIiwiI3ZpZXctd2l0aGRvY3MiLCIjYnRuLXJlZHVjZSIsIiNncmlkLXByb3h5Il0sbGlzdGVuOntkYnVwZGF0ZTpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXM7bnVsbCE9YSYmKE9iamVjdC5pc09iamVjdChhKT9hLmRiOmErIiIpPT14LnBhdGhbMF0mJigoYS5kb2NzfHxbXSkuZmluZCgvXl9kZXNpZ24vKT8oYS5kb2NzLmZvckVhY2goZnVuY3Rpb24oeCl7Yi5EZG9jc1t4XSYmZGVsZXRlIGIuRGRvY3NbeF19KSxiLkdldFZpZXdzKCEwKS50aGVuKGZ1bmN0aW9uKCl7YS5za2lwVmlld1VwZGF0ZXx8Yi5HZXRWaWV3KCEwKX0uZGVib3VuY2UoMjApKSk6YS5za2lwVmlld1VwZGF0ZXx8Yi5HZXRWaWV3KCEwKSl9LGRiZGVsZXRlZDpmdW5jdGlvbih4LGEpe2lmKGE9PXgucGF0aFswXSl7dmFyIGI9dGhpczsoZnVuY3Rpb24oKXtiLm15LnJvb3QoKS50cmlnZ2VyKCJ0YWJjbG9zZSIse3RhYmlkOngudGFiaWQsZW5mb3JjZTohMH0pfSkuZGVib3VuY2UoTnVtYmVyLnJhbmRvbSgxMCw1MCkpKCl9fX19LCIjdmlldy1yZXEtZXJyb3IiOntkZWxheTo1MCxpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj1hLmRhdGEsYz0iX2Rlc2lnbi9tYW5nby1pZHgiO3gub24oImNsaWNrLm15IiwiI2J0bi1hZGQtbWFuZ28taWR4IixmdW5jdGlvbigpe3ZhciBkPWEuRWRpdG9yLmxlbmd0aD9hLkVkaXRvclswXToiX3NxbCI9PWIudmlldy50byg0KT9iLnNxbC5xdWVyeS5maW5kKHg9PngubmFtZT09Yi5zcWwuYWN0aXZlKToiX2ZpbmQiPT1iLnZpZXcudG8oNSk/Yi5tYW5nby5xdWVyeS5maW5kKHg9PngubmFtZT09Yi5tYW5nby5hY3RpdmUpOltdO2EuY3JlYXRlTmV3SWR4RGxnKHgse19maXhsYW5nOiEwLF92YWxpZDohMCxfc2F2ZTohMCxsYW5ndWFnZToicXVlcnkiLGRkb2M6Yyxqc29uOntpbmRleDp7ZmllbGRzOmQuanNvbi5zb3J0fHxbXX19fSkudGhlbihmdW5jdGlvbih4KXt2YXIgYjtmdW5jdGlvbiBjKCl7YS5SVCgibXkiKS50cmlnZ2VyKCIjYnRuLXJlbG9hZCIsImNsaWNrLm15Iil9KGI9YS5QZW5kaW5nLl92aWV3bGlzdCk/Yi50aGVuKGMuZGVib3VuY2UoMzApKTpjKCl9LmRlYm91bmNlKDMwKSl9KX0sYmluZDpmdW5jdGlvbih4LGEpe2lmKG51bGw9PWEpe3ZhciBiPXRoaXMsYz1iLkVycm9yP2IuRXJyb3IuZXNjYXBlSFRNTCgpOmIuaXNFbXB0eT9iLmxhbmcuVFhUX0VNUFRZOmIuZlNlYXJjaCYmISh4LmdyaWQ/Yi5nUm93czpiLmZSb3dzfHxbXSkubGVuZ3RoP2IubGFuZy5UWFRfTk9URk9VTkQ6IiI7cmV0dXJuIGIuRXJyb3ImJmIuRXJyb3IuZW5kc1dpdGgoIm5vX3VzYWJsZV9pbmRleCIpJiYoYys9Jzxicj48YnI+PGJ1dHRvbiBpZD0iYnRuLWFkZC1tYW5nby1pZHgiIGNsYXNzPSJmczk1Ij57MX08L2J1dHRvbj4nLmFzc2lnbihiLmxhbmcuQlROX05FV01JRFgpKSxjfX0sY3NzOntyZWQxOmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLkVycm9yfSxoaWRlOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcztyZXR1cm4hKGIuRXJyb3J8fGIuaXNFbXB0eXx8Yi5mU2VhcmNoJiYhKHguZ3JpZD9iLmdSb3dzOmIuZlJvd3N8fFtdKS5sZW5ndGgpfX0sd2F0Y2g6WyIjc3RhdGUtcHJveHkiLCIjdmlldy1yZXN1bHRzLWpzb24iLCIjdmlldy1yZXN1bHRzLWdyaWQiXX0sIiN2aWV3LWVkLWNvbnRhaW5lciI6e2RlbGF5OjEwMCxpbml0OmZ1bmN0aW9uKHgpe30sYmluZDoidGhpcy5FZGl0b3IiLG1hbmlmZXN0OmZ1bmN0aW9uKHgpe3ZhciBhPXgudHlwZTtyZXR1cm4gdGhpcy5QaG8oInZpZXciPT1hPyJWaWV3RWQiOiJpbmRleCI9PWE/IkluZGV4RWQiOiJzcWwiPT1hPyJTcWxFZCI6Ik1hbmdvRWQiKX0sbGlzdDonPGRpdj48ZGl2IGNsYXNzPSJ3MTAwcCB0YWMgcHQ1MCBsaDIwMCI+PGRpdiBjbGFzcz0iY3ctYnVzeSB3MTAwIGgzIj48L2Rpdj48L2Rpdj48L2Rpdj4nLGlkOlsibmFtZSIsInR5cGUiLCJkZG9jIiwicmV2Il0sd2F0Y2g6WyIjYnRuLXZpZXdjb2RlIl19LCIjdmlldy1yZXN1bHRzIjp7aW5pdDpmdW5jdGlvbih4KXt0aGlzLm5pY2VTY3JvbGwoeCl9LGNzczp7fX0sIiN2aWV3LXJlc3VsdHMtanNvbiI6e2RlbGF5OjEwLGluaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPWEuVERvY3MsYz1hLlRNYXAsZD1hLlRNYW5nbyxlPWEuZGF0YTt4Lmxpc3Qoe2RhdGE6YS5Sb3dzLnRvKCtlLmxpbWl0KSxkZWxheTowLGNodW5rOjUwLHNvcnRCeTpudWxsLGlkOng9PnguX2lkeCxoYXNoOmZ1bmN0aW9uKHgpe3ZhciBiPWUudmlldztyZXR1cm4gY3cubGliLnNkYm0oW2IsZS5zZXF8fCIiLGEuUm93cy5sZW5ndGgsYiYmIl9sb2NhbF9kb2NzIiE9Yj8iIjplLmluY2wsbnVsbD09eC5kb2MseC5fY2hlY2tlZCxlLnNlYXJjaC5sZW5ndGg+MT9lLnNlYXJjaDoiICIsIl9kZXNpZ25fZG9jcyI9PWJ8fCJfY2hhbmdlcyI9PWI/W3gudmFsdWUseC52aWV3X2luZGV4XToiICJdKX0sdGVtcGxhdGU6ZnVuY3Rpb24oeCxhKXt2YXIgZj1lLnZpZXc7cmV0dXJuIGYmJiJfbG9jYWxfZG9jcyIhPWZ8fGUuaW5jbC5sZW5ndGg/Il9maW5kIj09Zi50byg1KXx8Il9zcWwiPT1mLnRvKDQpfHwiX2NvbmZsaWN0cyI9PWY/ZCh4LGEpOmMoeCxhKTpiKHgsYSl9fSkseC5vbigiY2xpY2subXkiLCIuY29sLXZhbHMiLGZ1bmN0aW9uKHgpe3ZhciBiLGMsZCxlPSQoeC5jdXJyZW50VGFyZ2V0KSxmPWUucGFyZW50KCkuZGF0YSgia2V5IiksZz1PYmplY3QuaXNTdHJpbmcoZik/ZjpKU09OLnN0cmluZ2lmeShmKTtpZighZS5pcygiLmNvbC1qc29uIikpe2lmKCEoYj0oYS5Sb3dzfHxbXSkuZmluZChmdW5jdGlvbih4KXtyZXR1cm4geC5faWR4PT1nfSkpKXJldHVybiExO2IuX2luZGV4LGUuYWRkQ2xhc3MoImNvbC1qc29uIiksZS5maW5kKCI+LmNvbC1lZC1jbG9zZSIpLmxlbmd0aHx8KGQ9Yi5fa2pzb24rYi5fdmpzb24sZS5hcHBlbmQoYz0kKCc8ZGl2IGNsYXNzPSJjb2wtZWQgcHJlIGZzODUgbGgxMjAgcGw0Ij48L2Rpdj4nKSksZS5hcHBlbmQoJzxkaXYgY2xhc3M9ImNvbC1lZC1jbG9zZSBmczEzMCBsaDEzMCIgdGl0bGU9InsxfSI+4pyVPC9kaXY+Jy5hc3NpZ24oYS5SVCgibGFuZyIpLlRJUF9DTE9TRUpTT04pKSxDb2RlTWlycm9yKGNbMF0se21vZGU6YS5DTXByZWZpeCsiamF2YXNjcmlwdCIsbGluZU51bWJlcnM6ITEsc2Nyb2xsYmFyU3R5bGU6bnVsbCxsaW5lV3JhcHBpbmc6ITAsdGFiU2l6ZToyLHRoZW1lOiJkZWZhdWx0IixyZWFkT25seTohMH0pLnNldFZhbHVlKCIoIitkKyIpIiksYS5mU2VhcmNoJiZjWzBdLmNoaWxkcmVuWzBdLkNvZGVNaXJyb3IuYWRkT3ZlcmxheSh7dG9rZW46ZnVuY3Rpb24oeCxiKXtpZih4Lm1hdGNoKGEuY21TZWFyY2gpKXJldHVybiB4LmVhdChhLmNtU2VhcmNoKSwiZm91bmQiO2Zvcig7bnVsbCE9eC5uZXh0KCkmJiF4Lm1hdGNoKGEuY21TZWFyY2gsITEpOyk7cmV0dXJuIG51bGx9fSkpfX0pLHgub24oImNsaWNrLm15IiwiLmNvbC1lZC1jbG9zZSIsZnVuY3Rpb24oeCl7cmV0dXJuICQoeC5jdXJyZW50VGFyZ2V0KS5wYXJlbnQoKS5yZW1vdmVDbGFzcygiY29sLWpzb24iKSwhMX0pfSxiaW5kOmZ1bmN0aW9uKHgsYSxiKXtpZihudWxsPT1hKXt2YXIgYyxkPXRoaXMsZT0iIj09eC5yZWR1Y2UmJiJfZmluZCIhPXgudmlldy50byg1KSYmIl9zcWwiIT14LnZpZXcudG8oNCk7aWYoIXguZ3JpZCl7aWYoL14oX2Rlc2lnbl9kb2NzfF9sb2NhbF9kb2NzfCkkLy50ZXN0KHgudmlldyl8fGUpe3ZhciBmPWN3LmxpYi5hMm8oeC5zZWxlY3Rpb24pO2QuUm93cy5mb3JFYWNoKHg9PnguX2NoZWNrZWQ9ZltlP3guaWQ6eC5rZXldPyJjaGVja2VkIjoiIil9eC5zZWFyY2gubGVuZ3RoPjEmJihjPWQuZlNlYXJjaCk/KGQuZlJvd3M9ZC5Sb3dzLnRvKCt4LmxpbWl0KS5maWx0ZXIoeD0+Yy50ZXN0KHguX2tqc29uKXx8Yy50ZXN0KHguX3Zqc29uKSksYi5saXN0KCJkYXRhIixkLmZSb3dzKSk6KGQuZlJvd3M9bnVsbCxiLmxpc3QoImRhdGEiLGQuUm93cy50bygreC5saW1pdCkpKX19fSx3YXRjaDpbIiNzdGF0ZS1wcm94eSIsIiN2aWV3LWFjdGlvbnMiLCIjYnRuLXNlbGVjdCIsIiNhcHAtc2VhcmNoIl19LCIjdmlldy1yZXN1bHRzLWdyaWQiOntkZWxheTo1MCxpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj1hLlRHcmlkTWFwLGM9YS5kYXRhO3RoaXMudXBkYXRlR3JpZEhUTUw9dGhpcy51cGRhdGVHcmlkSFRNTC5kZWJvdW5jZSgzMCkseC5saXN0KHtkYXRhOihhLmdSb3dzfHxbXSkudG8oK2MubGltaXQpLGRlbGF5OjAsY2h1bms6NTAsc29ydEJ5Om51bGwsaWQ6eD0+eC5faWR4LGhhc2g6ZnVuY3Rpb24oeCl7dmFyIGI9Il9kZXNpZ25fZG9jcyI9PWMudmlldztyZXR1cm4gY3cubGliLnNkYm0oW2MudmlldyxjLnNlcXx8IiIsYS5Sb3dzLmxlbmd0aCx4Ll9jaGVja2VkLGEuQ29sdW1ucyxudWxsPT14LmRvYyxjLnNlYXJjaC5sZW5ndGg+MT9jLnNlYXJjaDoiICIsYnx8Il9jaGFuZ2VzIj09Yy52aWV3P1t4LnZhbHVlLHgudmlld19pbmRleF06IiAiXSl9LHRlbXBsYXRlOmJ9KSx4Lm9uKCJjbGljay5teSIsInRkLmdyaWQtY29sdW1uIixmdW5jdGlvbih4KXt2YXIgYixjLGQsZT0kKHguY3VycmVudFRhcmdldCksZj1lLnBhcmVudCgpLmRhdGEoImtleSIpLGc9T2JqZWN0LmlzU3RyaW5nKGYpP2Y6SlNPTi5zdHJpbmdpZnkoZik7aWYoIWUuaXMoIi5jb2wtanNvbiIpKXtpZighKGI9KGEuZ1Jvd3N8fFtdKS5maW5kKHg9PnguX2lkeD09ZykpKXJldHVybiExO3ZhciBoPSQoJzx0ZCBjbGFzcz0iZ3JpZC1jb2x1bW4gY29sLWpzb24gcHJlbCIgY29sc3Bhbj0iezF9Ij48L3RkPicuYXNzaWduKGEuQ29sdW1ucy5sZW5ndGgpKTtoPWguaW5zZXJ0QWZ0ZXIoZS5wYXJlbnQoKS5jaGlsZHJlbigpWzBdKSxiLl9pbmRleCxkPWIuX2tqc29uK2IuX3Zqc29uLGguYXBwZW5kKCc8ZGl2IGNsYXNzPSJjb2wtZWQgcHJlIGZzODUgbGgxMjAiPjwvZGl2PicpLGguYXBwZW5kKCc8ZGl2IGNsYXNzPSJjb2wtZWQtY2xvc2UgZnMxMzAgbGgxMzAiIHRpdGxlPSJ7MX0iPuKclTwvZGl2PicuYXNzaWduKGEuUlQoImxhbmciKS5USVBfQ0xPU0VKU09OKSksYz1oLmZpbmQoIi5jb2wtZWQiKSxDb2RlTWlycm9yKGNbMF0se21vZGU6YS5DTXByZWZpeCsiamF2YXNjcmlwdCIsbGluZU51bWJlcnM6ITEsc2Nyb2xsYmFyU3R5bGU6bnVsbCxsaW5lV3JhcHBpbmc6ITAsdGFiU2l6ZToyLHRoZW1lOiJkZWZhdWx0IixyZWFkT25seTohMH0pLnNldFZhbHVlKCIoIitkKyIpIiksYS5mU2VhcmNoJiZjWzBdLmNoaWxkcmVuWzBdLkNvZGVNaXJyb3IuYWRkT3ZlcmxheSh7dG9rZW46ZnVuY3Rpb24oeCxiKXtpZih4Lm1hdGNoKGEuY21TZWFyY2gpKXJldHVybiB4LmVhdChhLmNtU2VhcmNoKSwiZm91bmQiO2Zvcig7bnVsbCE9eC5uZXh0KCkmJiF4Lm1hdGNoKGEuY21TZWFyY2gsITEpOyk7cmV0dXJuIG51bGx9fSl9fSkseC5vbigiY2xpY2subXkiLCIuY29sLWVkLWNsb3NlIixmdW5jdGlvbih4KXtyZXR1cm4gJCh4LmN1cnJlbnRUYXJnZXQpLnBhcmVudCgpLnJlbW92ZSgpLCExfSl9LGJpbmQ6ZnVuY3Rpb24oeCxhLGIpe251bGw9PWEmJnguZ3JpZCYmdGhpcy51cGRhdGVHcmlkSFRNTCgpfSx3YXRjaDpbIiN2aWV3LWdyaWQiLCIjZ3JpZC1wcm94eSIsIiN2aWV3LWFjdGlvbnMiLCIjYnRuLXNlbGVjdCIsIiNhcHAtc2VhcmNoIl19fSxIVE1MOic8ZGl2IGlkPSJhLWhlYWQiIGNsYXNzPSJhcHAtaGVhZCBudyBwdDE4IHBsMjAgcHIyMCBsaDE2MCI+PGRpdiBjbGFzcz0iZnIgdzEwcCBmczk1IHppMiI+PGRpdiBjbGFzcz0iZmktbWFnbmlmeWluZy1nbGFzcyB4Z3JheSBvNTAgZnM5NSIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgei1pbmRleDogKzE7IGxlZnQ6IDhweDt0b3A6IDAuMmVtOyI+PC9kaXY+PGlucHV0IHR5cGU9InRleHQiIGlkPSJhcHAtc2VhcmNoIiBjbGFzcz0idWktc2VhcmNoIHcxMDBwIG1sMCBtcjAgbXQwIHByMTAiIHNwZWxsY2hlY2s9ImZhbHNlIiBhdXRvY29tcGxldGU9Im9mZiIgcGxhY2Vob2xkZXI9IntQTENfU0VBUkNIfSIgc3R5bGU9ImJhY2tncm91bmQtaW1hZ2U6bm9uZTtwYWRkaW5nLXJpZ2h0OjE5cHghaW1wb3J0YW50OyI+PHNwYW4gY2xhc3M9ImZpLXggZnM4MCBkaWIgdmF0IHB0MiBibHVlIHVpLXNlYXJjaC1jbGVhciIgc3R5bGU9Im1hcmdpbi1sZWZ0Oi0xOXB4IWltcG9ydGFudDsib25jbGljaz0iJCh0aGlzKS5zaWJsaW5ncyhcJ2lucHV0OmVxKDApXCcpLnZhbChcJ1wnKS5ibHVyKCkiPjwvc3Bhbj48L2Rpdj48ZGl2IGlkPSJ4LWJ0bi1yb290IiBjbGFzcz0iZGliIHZhdCBvaCB7X3Vwd2lkdGh9IHR3MTAwIj48YSBpZD0iYnRuLXJvb3QiIGNsYXNzPSJ3MzggYnV0dG9uIG1yMiB0ZG4gZGliIHZhdCBwbDAgcHIwIGZ3NjAwIiB0aXRsZT0iREIgZG9jIGxpc3QiPi4uLzwvYT48L2Rpdj48c2VjdGlvbiBjbGFzcz0ieC12aWV3LW5hdiBudyBkaWIgdmF0IiBzdHlsZT0iIj48YnV0dG9uIGlkPSJidG4tcmVsb2FkIiBjbGFzcz0idzM4ICBtcjIiIHRpdGxlPSJ7VElQX1JFTE9BRH0iPjxzcGFuIGNsYXNzPSJmaS1sb29wIj48L3NwYW4+PC9idXR0b24+PGRpdiBjbGFzcz0iZGliIHZhdCBtcjIgYm9sZGVyIiBzdHlsZT0id2lkdGg6Y2FsYygoMTAwJSAtIDIwNHB4KSAvIDIgKyAxMnB4KTsiPjxpbnB1dCBpZD0idmlldy1uYW1lIiB0eXBlPSJ0ZXh0IiBjbGFzcz0iIHcxMDBwIGZzMTEwIHZhdCI+PC9kaXY+PGRpdiBjbGFzcz0iZnM5NSBkaWIgdmF0IiBzdHlsZT0id2lkdGg6Y2FsYygoMTAwJSAtIDIwNHB4KSAvIDIgKyA0cHgpOyI+PGRpdiBjbGFzcz0iZmkta2V5IHhncmF5IG81MCIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgei1pbmRleDogKzE7IGxlZnQ6IDZweDt0b3A6IDAuMmVtOyI+PC9kaXY+PGlucHV0IGlkPSJ2aWV3LXN0YXJ0a2V5IiB0eXBlPSJ0ZXh0IiBjbGFzcz0idmF0IHVpLXNlYXJjaCB3MTAwcCIgcGxhY2Vob2xkZXI9IntQTENfU1RBUlRLRVl9IiBzcGVsbGNoZWNrPSJmYWxzZSIgYXV0b2NvbXBsZXRlPSJvZmYiIHN0eWxlPSJiYWNrZ3JvdW5kLWltYWdlOm5vbmU7cGFkZGluZy1yaWdodDoxN3B4IWltcG9ydGFudDtwYWRkaW5nLWxlZnQ6MjFweCFpbXBvcnRhbnQ7Ym9yZGVyLXJhZGl1czoycHghaW1wb3J0YW50OyI+PHNwYW4gY2xhc3M9ImZpLXggZnM4MCBkaWIgdmF0IHB0MiBibHVlIHcxNSBwbDIgdWktc2VhcmNoLWNsZWFyIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LTE1cHghaW1wb3J0YW50OyJvbmNsaWNrPSIkKHRoaXMpLnNpYmxpbmdzKFwnaW5wdXQ6ZXEoMClcJykudmFsKFwnXCcpLnRyaWdnZXIoXCdpbnB1dFwnKSI+PC9zcGFuPjwvZGl2PjxzcGFuIGNsYXNzPSJidXR0b25zIG1sMiI+PGJ1dHRvbiBpZD0iYnRuLXZpZXctbWludXMiIGNsYXNzPSJ3MmVtIG1yMiBwbDAgcHIwIiB0aXRsZT0ie1RJUF9TSElGVF9NSU5VU30iPjxzcGFuIGNsYXNzPSJmaS1hcnJvdy1sZWZ0IG84MCI+PC9zcGFuPjwvYnV0dG9uPjxidXR0b24gaWQ9ImJ0bi12aWV3LXBsdXMiIGNsYXNzPSJ3MmVtIG1yMiBwbDAgcHIwIiB0aXRsZT0ie1RJUF9TSElGVF9QTFVTfSI+PHNwYW4gY2xhc3M9ImZpLWFycm93LXJpZ2h0IG84MCI+PC9zcGFuPjwvYnV0dG9uPjwvc3Bhbj48ZGl2IGNsYXNzPSJkaWIgdmF0IHc3MCI+PGlucHV0IGlkPSJ2aWV3LWxpbWl0IiB0eXBlPSJ0ZXh0IiBjbGFzcz0iIHcxMDBwIGZzMTEwIHZhdCI+PC9kaXY+PC9zZWN0aW9uPjxkaXYgY2xhc3M9ImRpYiB2YXQgcHI1IGJ1dHRvbnMiIGlkPSJ2aWV3LWdyaWQiPjwvZGl2PjxkaXYgaWQ9InZpZXctYWN0aW9ucyIgY2xhc3M9Im53IHBsMyBkaWIgdmF0IiBzdHlsZT0id2lkdGg6Y2FsYyg1MyUgLSAyNzBweCk7Ij48YSBocmVmPSIiIGlkPSJidG4tdmlldy1uZXdkb2MiIGNsYXNzPSJidXR0b24gZnMxMDAgdGRuIGRpYiBncmVlbiB2YXQgbXIyIG5vdDRzZWwiPjxzcGFuIGNsYXNzPSJsaDE0MCI+e0JUTl9ORVdET0N9PC9zcGFuPjwvYT48YnV0dG9uIGlkPSJidG4tdmlldy1kZWxkb2NzIiBjbGFzcz0ib2s0c2VsIG1yMiByZWQiPntCVE5fREVMRE9DU308L2J1dHRvbj48YnV0dG9uIGlkPSJidG4tdmlldy1jb3B5ZG9jcyIgY2xhc3M9Im9rNHNlbCBtcjIiIHhkaXNhYmxlZD57QlROX0NPUFlET0NTfTwvYnV0dG9uPjxidXR0b24gaWQ9ImJ0bi12aWV3LW5ld2luZGV4IiBjbGFzcz0ibm90NGRkb2Nzc2VsIHByOCBtcjIiPntCVE5fTkVXSURYfTwvYnV0dG9uPjxidXR0b24gaWQ9ImJ0bi12aWV3LWNvbXBhY3QiIGNsYXNzPSJub3Q0c2VsIG9rNGRkb2NzIHByOCBtcjIiPntCVE5fQ09NUEFDVH08L2J1dHRvbj48YnV0dG9uIGlkPSJidG4tdmlldy1hY2wiIGNsYXNzPSJub3Q0c2VsIj57QlROX0FDTH08L2J1dHRvbj48L2Rpdj48L2Rpdj48c2VjdGlvbiBpZD0idmlldy1wYW5lbHMiIGNsYXNzPSJ3MTAwcCBwdDE2IG53IHBsMjAgcHIyMCI+PHNlY3Rpb24gaWQ9InZpZXctZWQtY29udGFpbmVyIiBjbGFzcz0idmF0IHduIHBhbmVsaGVpZ2h0LTMyIGJyMiBtcjIwIGJ4dG9wLTMxIiBzdHlsZT0ib3V0bGluZTpub25lOyI+PC9zZWN0aW9uPjxkaXYgaWQ9InZpZXctcGFuZWwiIGNsYXNzPSJkaWIgdmF0IHduIHBhbmVsaGVpZ2h0LTMyIGJyMiI+PGRpdiBjbGFzcz0iYmctcGdyYXkgYmJzIGxoMTYwIG53IG9oIGVsbCB2aWV3LXJlc3VsdHMtaGVhZCB4cGFuZWwgYmFzIj48ZGl2IGNsYXNzPSJ2aWV3LXBuYXYtY29ybmVyIGhjb2x3MSBkaWIgdmF0IHB0MSBudyBvaCBlbGwgcHIyIj48c3BhbiBpZD0iYnRuLXZpZXctZGlyIiBjbGFzcz0iZGliIHBsOCBwcjYgbXIyIHZhdCBjcCBvNTAgZnM4MCBwdDIgcHNldWRvbGluayB0ZG4gaDMwIj48L3NwYW4+PGRpdiBpZD0idmlldy1jb2xzIiBjbGFzcz0iZGliIHZhdCBudyB4Z3JheSBtcjUiPjwvZGl2PjxkaXYgY2xhc3M9InZpZXctYnRucy1ib3ggZGliIHZhdCI+PGRpdiBpZD0iYnRuLXNlbGVjdCIgY2xhc3M9ImJ1dHRvbiB4YnV0dG9uIHB0MiBoMjUgbXQxIGZzOTAgbGgxMzAgdGRuIGRpYiB2YXQgbWwzIGhpZGUiPjwvZGl2PjxzcGFuIGNsYXNzPSJzZWwtcGFyZW50IG1sMyB3MTEwIGRpYiB2YXQgZnM5NSBsaDE0MCBtci0xIGhpZGUiPjxpbnB1dCBpZD0ic2VsLXJlZHVjZSIgdHlwZT0idGV4dCIgY2xhc3M9IncxMDBwIj48L3NwYW4+PGRpdiBpZD0iYnRuLXJlZHVjZSIgY2xhc3M9ImJ1dHRvbiBvcmFuZ2UgeGJ1dHRvbiBwdDIgaDI1IG10MSBmczkwIGxoMTMwIHRkbiBkaWIgdmF0IG1sMyBoaWRlIiB0aXRsZT0ie1RJUF9HUkVEVUNFfSI+PHNwYW4gY2xhc3M9ImZpLXNhZmV0eS1jb25lIHJvdDE4MCBkaWIgdmF0Ij48L3NwYW4+PC9kaXY+PGRpdiBpZD0iYnRuLXZpZXdjb2RlIiBjbGFzcz0iYnV0dG9uIGJsdWUgeGJ1dHRvbiBwdDIgaDI1IHcyNyB0YWMgbXQxIGZzOTAgbGgxNDAgdGRuIGRpYiB2YXQgbWwzIGhpZGUiIHRpdGxlPSJ7VElQX1ZJRVdDT0RFfSI+e0JUTl9WSUVXQ09ERX08L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGlkPSJ2aWV3LXBuYXYtanNvbiIgY2xhc3M9Imhjb2x3MiBkaWIgcHQxIGdyYXkgZnM5MCI+PHNwYW4gY2xhc3M9InZpZXctZWRpdG9yLWhpZGUgZ3JheSBmciBwcjggdzM1cCBlbGwgdGFyIj48c3BhbiBpZD0idmlldy1saW5rcyI+PC9zcGFuPjxhIGhyZWY9IiIgaWQ9ImJ0bi1hbmNob3IiIGNsYXNzPSJ0ZG4gbzcwIGRpYiB2YXQgbXQxIG1iLTEiIHRhcmdldD0iX2JsYW5rIiB0aXRsZT0ie1RJUF9BTkNIT1J9Ij48c3BhbiBjbGFzcz0iZmktYW5jaG9yIj48L3NwYW4+PC9hPjwvc3Bhbj48c3BhbiBpZD0idmlldy1yZWR1Y2UiIGNsYXNzPSJtdDEgcGw3IGhpZGUiPjwvc3Bhbj48c3BhbiBpZD0idmlldy13aXRoZG9jcyIgY2xhc3M9Im10MSBoaWRlIj48L3NwYW4+PHNwYW4gaWQ9InZpZXctZGRzdGF0cyIgY2xhc3M9Im10MSBwbDcgeGdyYXkgaGlkZSI+PC9zcGFuPjwvZGl2PjxkaXYgaWQ9InZpZXctcG5hdi1ncmlkIiBjbGFzcz0iaGNvbHcyIGRpYiB2YXQgZnM5NSBncmF5IGhpZGUiPjxkaXYgaWQ9InZpZXctZ3JpZC1jb2xzIj48L2Rpdj48ZGl2IGlkPSJidG4tZ3JpZC1hZGRjb2wiIGNsYXNzPSJidXR0b24gcDAgbGgxNjAgZnMxMTAgdGRuIGRpYiB2YXQgYmxzIGJvbGRlciB0YWMiIHRpdGxlPSJ7VElQX0FERENPTH0iPis8L2Rpdj48c3R5bGUgaWQ9InZpZXctZ3JpZC1jb2xzLXN0eWxlIj48L3N0eWxlPjwvZGl2PjwvZGl2PjxkaXYgaWQ9InZpZXctcmVxLWVycm9yIiBjbGFzcz0idzEwMHAgaGlkZSByZWQxIHRhYyB6aTIiIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTt0b3A6ODBweDtsZWZ0OjA7Ij48L2Rpdj48c2VjdGlvbiBpZD0idmlldy1yZXN1bHRzIiBjbGFzcz0icGFuZWxoZWlnaHQtNjMgZ3JheS0xIGxoMTcwIGJ4dG9wIiBzdHlsZT0ib3V0bGluZTpub25lOyI+PHNlY3Rpb24gaWQ9InZpZXctcmVzdWx0cy1qc29uIiBjbGFzcz0idzEwMHAiIHN0eWxlPSJvdXRsaW5lOm5vbmU7Ij48L3NlY3Rpb24+PHRhYmxlIGNsYXNzPSJncmlkLXRhYmxlIiBjZWxsc3BhY2luZz0iMCI+PHRib2R5IGlkPSJ2aWV3LXJlc3VsdHMtZ3JpZCIgY2xhc3M9Im15LWNvbnRhaW5lciI+PC90Ym9keT48L3RhYmxlPjwvc2VjdGlvbj48L2Rpdj48L3NlY3Rpb24+PGRpdiBpZD0ic3RhdGUtcHJveHkiIGNsYXNzPSJoaWRlIj48L2Rpdj48ZGl2IGlkPSJncmlkLXByb3h5IiBjbGFzcz0iaGlkZSI+PC9kaXY+PGRpdiBpZD0icmVxLWR1ciIgY2xhc3M9ImhpZGUiPjwvZGl2Picsc3R5bGU6eyIgI3ZpZXctYWN0aW9ucyI6eyIgLm5vdDRzZWwiOiJkaXNwbGF5OmlubGluZS1ibG9jazsiLCIgLm9rNHNlbCI6ImRpc3BsYXk6bm9uZTsiLCIuaGFzU2VsZWN0aW9uIjp7IiAubm90NHNlbCI6ImRpc3BsYXk6bm9uZSFpbXBvcnRhbnQ7IiwiIC5vazRzZWwiOiJkaXNwbGF5OmlubGluZS1ibG9jazsiLCIuaXNEZG9jcyI6eyIgLm9rNGRkb2NzIjoiZGlzcGxheTppbmxpbmUtYmxvY2shaW1wb3J0YW50OyIsIiAubm90NGRkb2Nzc2VsIjoiZGlzcGxheTpub25lIWltcG9ydGFudDsifX19LCIgLngtdmlldy1uYXYiOnsiIjoid2lkdGg6Y2FsYygzNSUgKyAyMjhweCk7IHRyYW5zaXRpb246IHdpZHRoIDAuMXM7IiwiLm5hcnJvd2VyIjoid2lkdGg6Y2FsYygzNSUgKyAyMDhweCk7In0sIiAjcmVxLWR1ciI6InBvc2l0aW9uOmFic29sdXRlOyBib3R0b206LTAuNzVlbTsgcmlnaHQ6MyU7Zm9udC1zaXplOjgwJTsgbGluZS1oZWlnaHQ6MS4yNWVtOyBjb2xvcjojOGE5MDlhOyBib3JkZXI6MXB4IHNvbGlkICNjYmQzZGI7YmFja2dyb3VuZDp3aGl0ZTsgYm9yZGVyLXJhZGl1czoxMHB4OyBwYWRkaW5nOjBweCA1cHggMXB4IDVweDsiLCIgI3ZpZXctcGFuZWxzIjp7IiI6eyIgI3ZpZXctcGFuZWwiOiJ3aWR0aDoxMDAlOyIsIiAjdmlldy1lZC1jb250YWluZXIiOiJkaXNwbGF5Om5vbmU7d2lkdGg6MzUlOyIsIiAuaGNvbHcxIjoid2lkdGg6MzglOyB0cmFuc2l0aW9uOndpZHRoIDAuMXM7IiwiIC5oY29sdzIiOiJ3aWR0aDo2MiU7IHRyYW5zaXRpb246d2lkdGggMC4xczsifSwiLnZpZXctZWRpdG9yIjp7IiAjdmlldy1wYW5lbCI6IndpZHRoOmNhbGMoNjAlIC0gMjBweCk7IiwiICN2aWV3LWVkLWNvbnRhaW5lciI6IndpZHRoOjQwJTsgZGlzcGxheTppbmxpbmUtYmxvY2s7ICIsIiAuaGNvbHcxIjoid2lkdGg6MzglOyIsIiAuaGNvbHcyIjoid2lkdGg6NjIlOyIsIiAudmlldy1lZGl0b3ItaGlkZSI6ImRpc3BsYXk6bm9uZSFpbXBvcnRhbnQ7In0sIi52aWV3LWVkaXRvci52aWV3LW1hbmdvIjp7IiAjdmlldy1wYW5lbCI6IndpZHRoOmNhbGMoNjUlIC0gMjBweCk7IiwiICN2aWV3LWVkLWNvbnRhaW5lciI6IndpZHRoOjM1JTsgZGlzcGxheTppbmxpbmUtYmxvY2s7In0sIi52aWV3LW1hbmdvIjp7IiAjdmlldy1yZXN1bHRzIjp7IiAuY29sLWlkcyI6IndpZHRoOjclO3BhZGRpbmc6M3B4IDJweCAzcHggN3B4OyIsIiAuY29sLXZhbHMiOiJ3aWR0aDo5MyU7IHBhZGRpbmctbGVmdDo1cHg7In0sIiAjYnRuLXZpZXctZGlyIjoiZGlzcGxheTpub25lIWltcG9ydGFudDsiLCIgI3ZpZXctY29scyI6InBhZGRpbmctbGVmdDo2cHg7IiwiLm1vZGUtZ3JpZCI6eyIgLmhjb2x3MSI6IndpZHRoOjY1cHghaW1wb3J0YW50OyIsIiAuaGNvbHcyIjoid2lkdGg6Y2FsYygxMDAlIC0gNjVweCkhaW1wb3J0YW50OyIsIiB0YWJsZS5ncmlkLXRhYmxlIjp7IiB0ZC5nY29sdzAiOiJ3aWR0aDo2NXB4IWltcG9ydGFudDsifX19LCIudmlldy1lZGl0b3Iudmlldy1pbmRleCI6eyIgI3ZpZXctcGFuZWwiOiJ3aWR0aDpjYWxjKDY1JSAtIDIwcHgpOyIsIiAjdmlldy1lZC1jb250YWluZXIiOiJ3aWR0aDozNSU7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyJ9LCIudmlldy1pbmRleCI6eyIgLnZpZXctdG9maWx0ZXIiOiJkaXNwbGF5Om5vbmUhaW1wb3J0YW50OyJ9LCIudmlldy1jaGFuZ2VzIjp7IiAudmlldy10b2ZpbHRlciI6ImRpc3BsYXk6bm9uZSFpbXBvcnRhbnQ7In0sIi5tb2RlLWpzb24iOnsiIC5ncmlkLXRhYmxlIjoiZGlzcGxheTpub25lOyJ9LCIubW9kZS1ncmlkIjp7IiAjdmlldy1yZXN1bHRzLWpzb24iOiJkaXNwbGF5Om5vbmU7IiwiIC5oY29sdzEiOiJ3aWR0aDozMzBweDsgYmFja2dyb3VuZC1jb2xvcjojZTNlOWVjOyBtaW4taGVpZ2h0OiAyOXB4OyIsIiAuaGNvbHcyIjoid2lkdGg6Y2FsYygxMDAlIC0gMzMwcHgpOyIsIiAudmlldy1idG5zLWJveCI6ImZsb2F0OnJpZ2h0IiwiLnZpZXctZWRpdG9yIjp7IiAuaGNvbHcxIjoid2lkdGg6MjgwcHg7IiwiIC5oY29sdzIiOiJ3aWR0aDpjYWxjKDEwMCUgLSAyODBweCk7IiwiIHRhYmxlLmdyaWQtdGFibGUiOnsiIHRkLmdjb2x3MCI6IndpZHRoOjI4MHB4OyJ9fSwiICN2aWV3LWdyaWQtY29scyI6eyIiOiJ3aWR0aDpjYWxjKDEwMCUgLSAzMHB4KTsgZGlzcGxheTppbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWduOnRvcDsiLCIgaW5wdXQiOiJib3JkZXItbGVmdC1jb2xvcjojZTNlOWVjOyJ9LCIgI2J0bi1ncmlkLWFkZGNvbCI6eyIiOiJib3JkZXI6bm9uZTsgYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICNlM2U5ZWMhaW1wb3J0YW50OyB3aWR0aDozMHB4OyBoZWlnaHQ6MjlweDsgYm9yZGVyLXJhZGl1czogMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmN2Y4IWltcG9ydGFudDsiLCI6aG92ZXIiOiJiYWNrZ3JvdW5kLWNvbG9yOndoaXRlIWltcG9ydGFudDsifSwiIC52aWV3LXJlc3VsdHMtaGVhZCI6ImJhY2tncm91bmQtY29sb3I6I2YwZjhmZiFpbXBvcnRhbnQiLCIgdGFibGUuZ3JpZC10YWJsZSI6eyIiOiJib3JkZXItY29sbGFwc2U6c2VwYXJhdGU7IHRhYmxlLWxheW91dDpmaXhlZDsgd2lkdGg6MTAwJTsiLCIgdHIiOiJ3aWR0aDoxMDAlIiwiIHRyOmxhc3QtY2hpbGQgdGQiOiJib3JkZXItYm90dG9tOiAxcHggc29saWQgI2VjZWZmMzsiLCIgdGQiOnsiIjoicGFkZGluZzowOyB2ZXJ0aWNhbC1hbGlnbjp0b3A7IHRyYW5zaXRpb246d2lkdGggMC4xczsgbWluLWhlaWdodDogMmVtOyIsIi5nY29sdiI6ImJvcmRlci1sZWZ0OiAxcHggc29saWQgcmdiYSgwLDE0LDM1LDAuMDcpOyIsIi5nY29sdj5kaXYiOiJwYWRkaW5nOiA1cHggNXB4IDZweCA3cHg7IG1pbi1oZWlnaHQ6MmVtOyIsIi5nY29sdzAiOiJ3aWR0aDozMzBweDsgIiwiID5kaXYiOiJ3aWR0aDoxMDAlOyB3b3JkLWJyZWFrOmJyZWFrLXdvcmQ7IiwiID5kaXYudzEwMHAtMzAiOiJ3aWR0aDpjYWxjKDEwMCUgLSAzMHB4KTsgd29yZC1icmVhazpicmVhay13b3JkOyBwYWRkaW5nOiA2cHggN3B4IDZweCAwOyIsIi5jb2wtanNvbiI6eyIgfnRkIjoiZGlzcGxheTpub25lIWltcG9ydGFudDsiLCIiOiJwYWRkaW5nOjAhaW1wb3J0YW50OyJ9fX19LCIgLnZpZXctaG92ZXJidG4udmlldy1lZGl0dXNlciI6ImRpc3BsYXk6bm9uZSIsIi5kYi11c2VycyAudmlldy1ob3ZlcmJ0bi52aWV3LWVkaXR1c2VyIjoiZGlzcGxheTppbmxpbmUtYmxvY2shaW1wb3J0YW50OyJ9LCIgICN2aWV3LXBhbmVscyI6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPWEubXkuZmluZCgiI3ZpZXctcGFuZWxzIiksYz1iLmxlbmd0aD9iLndpZHRoKCk6MTA1MCxkPSguMzYqY3wwKS5jbGFtcCg0MzAsNTgwKSxlPSguMjUqY3wwKS5jbGFtcCgzNzAsNDcwKSxmPXsiLnZpZXctZWRpdG9yIjp7IiAjdmlldy1wYW5lbCI6IndpZHRoOnsxfXB4OyIuYXNzaWduKGMtZC0yMCksIiAjdmlldy1lZC1jb250YWluZXIiOiJ3aWR0aDp7MX1weDsiLmFzc2lnbihkKX0sIi52aWV3LWVkaXRvci52aWV3LW1hbmdvIjp7IiAjdmlldy1wYW5lbCI6IndpZHRoOnsxfXB4OyIuYXNzaWduKGMtZS0yMCksIiAjdmlldy1lZC1jb250YWluZXIiOiJ3aWR0aDp7MX1weDsiLmFzc2lnbihlKX0sIi52aWV3LWVkaXRvci52aWV3LWluZGV4Ijp7IiAjdmlldy1wYW5lbCI6IndpZHRoOnsxfXB4OyIuYXNzaWduKGMtZS0yMCksIiAjdmlldy1lZC1jb250YWluZXIiOiJ3aWR0aDp7MX1weDsiLmFzc2lnbihlKX0sIi5tb2RlLWdyaWQiOnt9fSxnPShhLkNvbHVtbnN8fFtdKS5sZW5ndGh8fDEsaD1hLmRhdGEudmlldyxpPSJfZmluZCI9PWgudG8oNSl8fCJfc3FsIj09aC50byg0KXx8Il9jb25mbGljdHMiPT1oLGo9Il9pZHgiPT1oLnRvKDQpLGs9ISFhLmRhdGEuZWRpdG9yLGw9az9jLShpfHxqP2U6ZCktMjA6YyxtPShsLTItKGk/NjU6a3x8aj8yODA6MzMwKSkvZzthLmNsb3NlQXV0b2NvbXBsZXRlcyYmYS5jbG9zZUF1dG9jb21wbGV0ZXMoKSxmWyIgdGFibGUuZ3JpZC10YWJsZSJdPSJ3aWR0aDp7MX1weCFpbXBvcnRhbnQ7Ii5hc3NpZ24obC0yKTt2YXIgbj1bMSwyLDMsNCw1LDYsNyw4XS5yZWR1Y2UoZnVuY3Rpb24oeCxhLGIpe3ZhciBjPSJ3aWR0aDoiK2EqbSsicHg7IjtyZXR1cm4geFsiIC5nY29sdyIrYV09Yyx4fSx7IiAudmlldy1ncmlkLWNvbHVtbiI6IndpZHRoOmNhbGMoKDEwMCUgKyAzMHB4KS8gIitnKyIpOyIsIiAudmlldy1ncmlkLWNvbHVtbjpsYXN0LWNoaWxkIjoid2lkdGg6Y2FsYygoKDEwMCUgKyAzMHB4KS8gIitnKyIpIC0gMzBweCk7In0pO3JldHVybiBmWyIubW9kZS1ncmlkIl09bixmfSwiICN2aWV3LWdyaWQtY29scyI6eyIgLnZpZXctZ3JpZC1jb2x1bW4iOnsiLnVpLXNvcnRhYmxlLWhlbHBlciI6eyIiOiJiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNTUsMC43KTsiLCIgLnZpZXctZ3JpZC1jb2xzLXNvcnQiOiJiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMTIwLDE2OCwyMjIsMC41KTsifX0sIiBpbnB1dCI6eyIiOiJib3JkZXItcmFkaXVzOiAwOyBib3JkZXItdG9wOm5vbmU7IGJvcmRlci1ib3R0b206bm9uZTsgYm9yZGVyLXJpZ2h0Om5vbmU7IHBhZGRpbmctcmlnaHQ6MjBweDt3aWR0aDogY2FsYygxMDAlICsgMXB4KTsgaGVpZ2h0OjI5cHg7IGxpbmUtaGVpZ2h0OjI5cHg7IGJhY2tncm91bmQ6dHJhbnNwYXJlbnQ7ICIsIjpmb2N1cyI6ImJhY2tncm91bmQ6cmdiYSgwLDE1NSwyNTUsMC4xMik7In0sIiAudmlldy1ncmlkLWNvbHMtc29ydCI6eyIiOiJjdXJzb3I6bW92ZTsgcG9zaXRpb246YWJzb2x1dGU7IHRvcDowOyBsZWZ0OjA7IGhlaWdodDozcHg7IHotaW5kZXg6MTsgd2lkdGg6MTAwJTsgdHJhbnNpdGlvbjpiYWNrZ3JvdW5kIDAuM3M7IiwiOmhvdmVyIjoiYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDEyMCwxNjgsMjIyLDAuNSk7In19LCIgI3ZpZXctcmVzdWx0cyI6eyIiOiJsaW5lLWhlaWdodDoxLjRlbTsiLCIgLnZpZXctcm93IjoibWluLWhlaWdodDoyZW07IiwiIC52aWV3LXJvdzpudGgtY2hpbGQoMm4rMCkiOiJiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjA2LDIxNCwyMjYsMC4yKTsiLCIgLnZpZXctaG92ZXJidG4iOiJkaXNwbGF5OmlubGluZS1ibG9jazt3aWR0aDoyMHB4O2xpbmUtaGVpZ2h0OjEuMmVtO29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgMC41czt0ZXh0LWFsaWduOmNlbnRlcjtjdXJzb3I6cG9pbnRlcjsiLCIgLnZpZXctcm93OmhvdmVyIC52aWV3LWhvdmVyYnRuIjoib3BhY2l0eTowLjU7IiwiIC52aWV3LXJvdzpob3ZlciAudmlldy1ob3ZlcmJ0bjpob3ZlciI6Im9wYWNpdHk6MC44OyIsIiAudmlldy1ob3ZlcmJ0bi5ob3ZlciI6Im9wYWNpdHk6MC43OyIsIiAudmlldy1yb3c+ZGl2IjoiZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246dG9wO3dvcmQtd3JhcDogYnJlYWstd29yZDsiLCIgLmNvbC1pZHMiOiJ3aWR0aDozOCU7IHBhZGRpbmc6NHB4IDIwcHggNXB4IDhweDsiLCIgLmNvbC1pZHMudzM1cC0zMCI6IndpZHRoOmNhbGMoMzglIC0gMzBweCk7IiwiIC5jb2wtdmFscyI6eyIiOiJ3aWR0aDo2MiU7IHBhZGRpbmctbGVmdDoxMHB4OyIsIiAuY29sLXRyaW0iOiJjdXJzb3I6cG9pbnRlciIsIiAuY29sLWVkIjoiZGlzcGxheTpub25lOyIsIiAuY29sLWVkLWNsb3NlIjoiZGlzcGxheTpub25lOyJ9LCIgLnc0MHAtMzAiOiJ3aWR0aDpjYWxjKDQwJSAtIDMwcHgpOyIsIiAudzM4cC0zMCI6IndpZHRoOmNhbGMoMzglIC0gMzBweCk7IiwiIC53NjJwIjoid2lkdGg6NjIlOyJ9LCIgLmJicyI6ImJvcmRlci1ib3R0b20tY29sb3I6I2UzZTllYzsiLCIgLmJhcyI6ImJvcmRlci1jb2xvcjojZTNlOWVjOyIsIiAuYnJzIjoiYm9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZTNlOWVjOyIsIiAudmlldy1mb3VuZCI6ImJhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsMjMyLDEyMSwwLjc1KTsgYm9yZGVyLXJhZGl1czoycHg7IiwiIC5jZWxsLWZvdW5kIjoiYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyMzIsMTIxLDAuNCk7IiwiIC5teS1tb2RhbC1mb3JtIC5Db2RlTWlycm9yLXNjcm9sbCI6Im1pbi1oZWlnaHQ6MTUwcHg7bWF4LWhlaWdodDpjYWxjKDIwICogMTZweCArIDZweCk7IiwiIC5teS1tb2RhbC1mb3JtIC5Db2RlTWlycm9yIjp7IiI6Im1pbi1oZWlnaHQ6MTUwcHg7aGVpZ2h0OmF1dG87Zm9udC1zaXplOjEzcHghaW1wb3J0YW50IiwiIC5Db2RlTWlycm9yLWxpbmVzIjoibGluZS1oZWlnaHQ6MTdweCFpbXBvcnRhbnQ7IiwiIC5jbS1wcm9wZXJ0eSI6ImNvbG9yOiM0MzRlNWQ7IiwiIC5jbS12YXJpYWJsZSI6ImNvbG9yOiMzM2JmYWQ7IiwiIC5jbS1rZXl3b3JkIjoiY29sb3I6IzkwMjU5ZTsifSwiIC52aWV3LXBuYXYtY29ybmVyIC5zZWxlY3QyLWNvbnRhaW5lciI6eyIuc2VsZWN0Mi1jb250YWluZXItYWN0aXZlIjp7IiBhLnNlbGVjdDItY2hvaWNlIjoiYm9yZGVyLWNvbG9yOiM5ZWNkZjg7In0sIiBhLnNlbGVjdDItY2hvaWNlIjp7IiI6ImhlaWdodDoyN3B4OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZjNmNmY3OyBib3JkZXItY29sb3I6I2UzZTllYzsiLCIgLnNlbGVjdDItYXJyb3ciOiJib3JkZXItbGVmdC1jb2xvcjojZTNlOWVjOyBiYWNrZ3JvdW5kLWNvbG9yOiNmM2Y2Zjc7In19LCIgLnVpLXdpZGdldCI6ImZvbnQtc2l6ZToxMDAlIiwiIC51aS1hdXRvY29tcGxldGUiOiJmb250LXNpemU6MC45ZW07IGxpbmUtaGVpZ2h0OjEuMjVlbTsgbWF4LWhlaWdodDo1MHZoOyB6LWluZGV4OjE4MDA7b3ZlcmZsb3cteTphdXRvOy13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNoOyIsIiAuYmZvbGQiOnsiIjpbIndpZHRoOjIwcHghaW1wb3J0YW50OyBwYWRkaW5nLWxlZnQ6MDsgcGFkZGluZy1yaWdodDowOyAiLCJib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MDsiLCJtYXJnaW4tbGVmdDotMjFweDsgei1pbmRleDorMTsiXSwiIGRpdiI6ImZvbnQtc2l6ZTo2MCU7IG9wYWNpdHk6MC41O3RleHQtYWxpZ246Y2VudGVyO2xpbmUtaGVpZ2h0OjMuNGVtO3dpZHRoOjEwMCU7In0sIiAuYnRzLWJsdWUiOnsiOmJlZm9yZSI6J3Bvc2l0aW9uOmFic29sdXRlOyB0b3A6LTFweDsgbGVmdDowOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MXB4OyBwb2ludGVyLWV2ZW50czpub25lO292ZXJmbG93OmhpZGRlbjsgY29udGVudDoiICI7IGJvcmRlci10b3A6MXB4IHNvbGlkICM5ZWNkZjg7IHotaW5kZXg6MjsnLCIgaW5wdXQiOiJib3JkZXItbGVmdDoxcHggc29saWQgIzllY2RmODsgYm9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjOWVjZGY4OyJ9fSxpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj1hLmRhdGEsYz1hLmxhbmc7eC5odG1sKCc8ZGl2IGNsYXNzPSJncmF5MSBmczEwNSBwdDEwMCBwYjEwMCB0YWMiPnsxfTwvZGl2PicuYXNzaWduKGMuTVNHX0xPQURJTkcpKSxhLkxzPWEuUGhvKCJMcyIpLGEudGFnRW1vamk9YS5QaG8oIlUiKS50YWdFbW9qaSxPYmplY3Qua2V5cyhhLkYpLmZvckVhY2goZnVuY3Rpb24oeCl7ImZ1bmN0aW9uIj09dHlwZW9mIGEuRlt4XSYmKGFbeF09YS5GW3hdLmJpbmQoYSkpfSksT2JqZWN0LmtleXMoYS5UKS5mb3JFYWNoKGZ1bmN0aW9uKHgpe2EuVFt4XT1hLlBobygiQ29tcGlsZVQiKShhLlRbeF0pfSksYS5WaWV3cz1hLkRlZmF1bHRWaWV3cygpLGEuVE1hcD1hLlRNYXAoKSxhLlREb2NzPWEuVERvY3MoKSxhLlRNYW5nbz1hLlRNYW5nbygpLGEuVEdyaWRNYXA9YS5UR3JpZE1hcCgpO3ZhciBkPWEuUGhvKCJMcyIpKCJNYW5nby4iK2IucGF0aFswXSk7T2JqZWN0LmlzT2JqZWN0KGQpJiZkLnF1ZXJ5JiYkLmV4dGVuZChiLm1hbmdvLGQpO3ZhciBlPWEuUGhvKCJMcyIpKCJTUUwuIitiLnBhdGhbMF0pO3JldHVybiBPYmplY3QuaXNPYmplY3QoZSkmJmUucXVlcnkmJiQuZXh0ZW5kKGIuc3FsLGUpLHgub24oImNsaWNrLm15IiwiLnZpZXctdG9maWx0ZXIiLGZ1bmN0aW9uKHgpe3ZhciBkPSQoeC5jdXJyZW50VGFyZ2V0KS5kYXRhKCJmaWx0ZXIiKTtiLnN0YXJ0PU9iamVjdC5pc1N0cmluZyhkKT8vXiJcZCsiJC8udGVzdChkKT9kOmQucmVwbGFjZSgvXiJ8IiQvZywiIik6SlNPTi5zdHJpbmdpZnkoZCksY3cubGliLm5vdGUoYy5NU0dfU1RBUlRfQ0hBTkdFLmFzc2lnbihiLnN0YXJ0KSksYS5teS5yZWNhbGMoIiN2aWV3LXN0YXJ0a2V5IiksYS5teS5jaGVjaygiI3ZpZXctc3RhcnRrZXkiKX0uZGVib3VuY2UoNDApKSx4Lm9uKCJjbGljay5teSIsIi5idG4tb3Blbi1kb2MiLGZ1bmN0aW9uKHgpe3ZhciBiPSQoeC5jdXJyZW50VGFyZ2V0KS5kYXRhKCJ1cmwiKTthLlBobygiU3dpdGNoIikoYi5zcGxpdCgiLyIpLm1hcChmdW5jdGlvbih4KXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHgpfSkpfSkseC5vbigiY2xpY2subXkiLCIudmlldy1lZGl0dXNlciIsZnVuY3Rpb24oYil7dmFyIGQ9JChiLmN1cnJlbnRUYXJnZXQpLGU9JChiLmN1cnJlbnRUYXJnZXQpLmRhdGEoInVzZXIiKTtpZignIic9PWVbMF0mJihlPUpTT04ucGFyc2UoZSkpLCFlLnN0YXJ0c1dpdGgoIm9yZy5jb3VjaGRiLnVzZXI6IikpcmV0dXJuIGN3LmxpYi5ub3RlKGMuRVJSX05PVEFVU0VSLCJlcnJvciIpLCExO2QuYWRkQ2xhc3MoImhvdmVyIiksYS5SZXEoWyJfdXNlcnMiLGVdKS50aGVuKGZ1bmN0aW9uKGIpe3JldHVybiBkLm1vZGFsKHtyb290OngsbWFuaWZlc3Q6YS5QaG8oIlVzZXJEb2MiKSxkYXRhOmIsd2lkdGg6MzgwLGJvdW5kOjAsbm9zZToibGVmdCIsY3NzOiJ4Z3JheSIsYWxpZ246ImxlZnQ6MTAwJTt0b3A6LTU3cHg7IixzY3JlZW46InJnYmEoMjU1LDI1NSwyNTUsMCkiLGVzYzohMH0pfSkuYWx3YXlzKGZ1bmN0aW9uKCl7ZC5yZW1vdmVDbGFzcygiaG92ZXIiKX0pfS5kZWJvdW5jZSg1KSkseC5vbigiY2xpY2subXkiLCdpbnB1dFtuYW1lPSJkb2NzLXNlbGVjdGlvbiJdJyxmdW5jdGlvbigpe3ZhciB4PSQodGhpcykudmFsKCk7JCh0aGlzKS5pcygiOmNoZWNrZWQiKT9iLnNlbGVjdGlvbj1iLnNlbGVjdGlvbi5hZGQoeCkudW5pcXVlKCk6Yi5zZWxlY3Rpb24ucmVtb3ZlKHgpLGEubXkuY2hlY2soIiN2aWV3LWFjdGlvbnMiKX0pLCJfdXNlcnMiPT1iLnBhdGhbMF0mJmEuUGhvKCJDZmciKS5saXN0Q29scy5pbmRleE9mKCJzZWN1cml0eSIpPi0xJiZ4LnRoZW4oZnVuY3Rpb24oKXthLkdldFNlYygpfSkseC50aGVuKGZ1bmN0aW9uKCl7YS5uaWNlU2Nyb2xsKHguZmluZCgiI3ZpZXctbmFtZSIpLmRhdGEoKS5zZWxlY3QyLmRyb3Bkb3duLmZpbmQoIi5zZWxlY3QyLXJlc3VsdHMiKSx7Ym91bmNlc2Nyb2xsOiEwLGN1cnNvcmNvbG9yOiIjMjM0IixjdXJzb3JvcGFjaXR5bWluOi4xLGN1cnNvcm9wYWNpdHltYXg6LjQscmFpbHBhZGRpbmc6e3JpZ2h0OjF9fSl9KSxhLkJ1c3koITApLGEuUGhvKCJQb2tlQnVja2V0IikoYi5wYXRoWzBdKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIGEuR2V0Vmlld3MoITEsITApLnRoZW4oZnVuY3Rpb24oKXt2YXIgeD1iLnBhdGhbMl0sYz1iLnBhdGhbM107aWYoIl9maW5kIj09Yi5wYXRoWzFdKXt2YXIgZD14KyIiO2IubWFuZ28ucXVlcnkuZmluZCh4PT54Lm5hbWU9PWQpfHwoZD0iRGVmYXVsdCBxdWVyeSIpLGIudmlldz0iX2ZpbmTvv70iK2QsYi5lZGl0b3I9ITB9ZWxzZSBpZigiX3NxbCI9PWIucGF0aFsxXSl7ZD14KyIiO2Iuc3FsLnF1ZXJ5LmZpbmQoeD0+eC5uYW1lPT1kKXx8KGQ9IkRlZmF1bHQgU1FMIiksYi52aWV3PSJfc3Fs77+9IitkLGIuZWRpdG9yPSEwfWVsc2UgaWYoIl9pbmRleCI9PWIucGF0aFsxXSkiRGVmYXVsdCBpbmRleCIhPWIucGF0aFsyXXx8Yi5wYXRoWzNdP2Iudmlldz0iX2lkeC97MX3vv717Mn0iLmFzc2lnbihiLnBhdGhbMl0sYi5wYXRoWzNdKTpiLnZpZXc9Il9pZHgv77+9RGVmYXVsdCBpbmRleCIsYi5lZGl0b3I9ITA7ZWxzZSBpZihhLmlzVmlld1NwZWNpYWwoYi5wYXRoWzFdKSliLnZpZXc9Yi5wYXRoWzFdO2Vsc2UgaWYoeCYmYyl7dmFyIGU9Il9kZXNpZ24vIit4KyLvv70iK2M7Yi52aWV3PWEuVmlbZV0/ZToiIn1iLmdyaWQ9ISFiLnZpZXd9KX0pLnRoZW4oZnVuY3Rpb24oKXthLnJlc3RvcmVWaWV3U3RhdGUoITEsITEpLHguaHRtbChhLkhUTUwuYXNzaWduKGMpLmFzc2lnbih7X3Vwd2lkdGg6Yi52aWV3PyJ3NDAiOiJ3MCJ9KSl9KS5mYWlsKGZ1bmN0aW9uKCl7YS5CdXN5KCExKX0pfSxGOntjaGFuZ2VWaWV3OmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcztiLmRhdGEudmlldz14LGIuY2xlYW5WaWV3U3RhdGUoe2NvbHVtbnM6ITB9KSxiLnJlc3RvcmVWaWV3U3RhdGUoITEsITEpLGF8fChiLlJUKCJteSIpLnJlY2FsYygiI3ZpZXctbmFtZSIpLGIuUlQoIm15IikuY2hlY2soIiN2aWV3LW5hbWUiKSl9LGNsZWFuVmlld1N0YXRlOmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj1hLmRhdGEsYz0kLmV4dGVuZCh7c2hhZG93OiEwLGNvbHVtbnM6ITF9LHh8fHt9KTtiLnN0YXJ0PSIiLGIucmVkdWNlPSIiLGIuZ3JpZD0hIWIudmlldyYmIl9sb2NhbF9kb2NzIiE9Yi52aWV3LGMuc2hhZG93JiYoYi5zaGFkb3c9WyIudmFsdWUiXSksYy5jb2x1bW5zJiYoYi5jb2x1bW5zPVsiLnZhbHVlIl0pLGIuc2VsZWN0aW9uPVtdLGEuUm93cz1bXSxhLmdSb3dzPVtdLGEuZlJvd3M9bnVsbCxhLkNvbHVtbnM9W10sYS5GaWVsZHM9W10sYS5FcnJvcj0iIixhLkVkaXRvcj1bXX0sZ2V0UmVmU3RhcjpmdW5jdGlvbiB4KGEsYil7dmFyIGMsZCxlPSJzdHJpbmciPT10eXBlb2YgYj9iLnNwbGl0KCIuIik6T2JqZWN0LmlzQXJyYXkoYik/YjpbXSxmPWEsZz0wO2ZvcihnPTA7ZzxlLmxlbmd0aCYmbnVsbD09ZCYmbnVsbCE9ZjtnKyspIioiPT0oYz1lW2ddKSYmT2JqZWN0LmlzQXJyYXkoZik/KGQ9ZS5zbGljZShnKzEpLGY9Zi5yZWR1Y2UoZnVuY3Rpb24oYSxiKXtpZihudWxsPT1iKXJldHVybiBhO3ZhciBjPXgoYixkKTtyZXR1cm4gbnVsbCE9YyYmYS5wdXNoKGMpLGF9LFtdKSk6IioiPT1jJiZPYmplY3QuaXNPYmplY3QoZik/KGQ9ZS5zbGljZShnKzEpLGY9T2JqZWN0LnZhbHVlcyhmKS5yZWR1Y2UoZnVuY3Rpb24oYSxiKXtpZihudWxsPT1iKXJldHVybiBhO3ZhciBjPXgoYixkKTtyZXR1cm4gbnVsbCE9YyYmYS5wdXNoKGMpLGF9LFtdKSk6Zj1mW2NdO3JldHVybiBmfSxmb3JtYXRTZWwyOmZ1bmN0aW9uKHgpe2lmKHguaWQpe3ZhciBhPXguaWQuc3BsaXQoIu+/vSIpO3JldHVybiBhWzFdPyhhWzBdLnNwbGl0KCIvIikubGFzdCgpLnRydW5jYXRlKCgzMC1hWzFdLmxlbmd0aCkuY2xhbXAoMTAsMzApLCJtaWRkbGUiLCIuLi4iKSsi4oCJL+KAiSIrYVsxXSkuZXNjYXBlSFRNTCgpOngudGV4dH1yZXR1cm4geC50ZXh0fSxjcmVhdGVOZXdJZHhEbGc6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzO2IuZGF0YTtyZXR1cm4geC5tb2RhbCh7bWFuaWZlc3Q6JC5leHRlbmQoe1JUOmIuUlR9LGIuUGhvKCJOZXdJbmRleCIpKSxkYXRhOmEsY3NzOiJwMTUiLGdsb2JhbDohMCxzY3JlZW46ITAsd2lkdGg6NDAwLGVzYzohMCxmb2N1czphLmRkb2M/IiNtdmlldyI6IiNtZGRvYyIsY2xvc2U6Yi5QaG8oImxhbmciKS5CVE5fWERMRyxib3VuZDoyMCx6OjE5OTV9KX0sRGVmYXVsdFZpZXdzOmZ1bmN0aW9uKCl7dmFyIHg9dGhpcyxhPXgubGFuZyxiPXguUGhvKFsiQ291Y2giLCJ2ZXIiXSksYz1be2lkOiIiLHRleHQ6YS5PUFRfQUxMRE9DUyxvcmRlcjoiX18xIn0se2lkOiJfZGVzaWduX2RvY3MiLHRleHQ6YS5PUFRfRERPQ1Msb3JkZXI6Il9fMyJ9LHtpZDoiX2NoYW5nZXMiLHRleHQ6YS5PUFRfQ0hBTkdFUyxvcmRlcjoiX181In1dO2lmKGI+PSIwMDIuMDAwIil7aWYoYj49IjAwMi4wMDEuMDAyIiYmYy5wdXNoKHtpZDoiX2xvY2FsX2RvY3MiLHRleHQ6YS5PUFRfTE9DQUwsb3JkZXI6Il9fNCJ9KSxiPj0iMDAyLjAwMy4wMDAiJiZjLnB1c2goe2lkOiJfY29uZmxpY3RzIix0ZXh0OmEuT1BUX0NPTkZMSUNUUyxvcmRlcjoiX18yIn0pLCJfbm9kZS9fbG9jYWwvX25vZGVzIj09eC5kYXRhLnBhdGhbMF0pcmV0dXJuIGM7dmFyIGQ9e3RleHQ6YS5PUFRfTVFSSUVTLGNoaWxkcmVuOltdLG9yZGVyOiJ+MiJ9O3guZGF0YS5tYW5nby5xdWVyeS5mb3JFYWNoKGZ1bmN0aW9uKHgpe2QuY2hpbGRyZW4ucHVzaCh7aWQ6Il9maW5k77+9Iit4Lm5hbWUsdGV4dDoiwqDCoCIreC5uYW1lLG9yZGVyOigiRGVmYXVsdCBxdWVyeSI9PXgubmFtZT8iXzEgIjoiXzIgIikreC5uYW1lfSl9KSxkLmNoaWxkcmVuPWQuY2hpbGRyZW4uc29ydEJ5KCJvcmRlciIpLGMucHVzaChkKTt2YXIgZT17dGV4dDphLk9QVF9TUUxRUklFUyxjaGlsZHJlbjpbXSxvcmRlcjoifjMifTt4LmRhdGEuc3FsLnF1ZXJ5LmZvckVhY2goZnVuY3Rpb24oeCl7ZS5jaGlsZHJlbi5wdXNoKHtpZDoiX3NxbO+/vSIreC5uYW1lLHRleHQ6IsKgwqAiK3gubmFtZSxvcmRlcjooIkRlZmF1bHQgU1FMIj09eC5uYW1lPyJfMSAiOiJfMiAiKSt4Lm5hbWV9KX0pLGUuY2hpbGRyZW49ZS5jaGlsZHJlbi5zb3J0QnkoIm9yZGVyIiksYy5wdXNoKGUpO3ZhciBmPXt0ZXh0OmEuT1BUX01JTkRJQ0VTLGNoaWxkcmVuOlt7aWQ6Il9pZHgv77+9Iit4LkRlZmF1bHRNYW5nb0lkeC5uYW1lLHRleHQ6IsKgwqAiK3guRGVmYXVsdE1hbmdvSWR4Lm5hbWUsb3JkZXI6Il8wIn1dLG9yZGVyOiJ+NCJ9O2MucHVzaChmKX1yZXR1cm4gY30sVE1hcDpmdW5jdGlvbigpe3ZhciB4PXRoaXMsYT14LmRhdGEsYj14LlBobygiajJoIiksYz14LnRhZ0Vtb2ppLGQ9eC5ULmRlc2lnbl9kb2NzLGU9eC5ULnZpZXcsZj14LlQudmlld19ub2lkLGc9eC5ULnZpZXdfZmlsdGVyLGg9eC5ULnZpZXdfZmlsdGVyX25vaWQ7cmV0dXJuIGZ1bmN0aW9uKG0sbil7dmFyIG8scCxxPXguUm93cy5sZW5ndGgscj0iX2lkeCI9PWEudmlldy50byg0KSxzPSIiPT14LmRhdGEucmVkdWNlLHQ9Il9kZXNpZ25fZG9jcyI9PWEudmlldyx1PSJfbG9jYWxfZG9jcyI9PWEudmlldyx2PSJfY2hhbmdlcyI9PWEudmlldyx3PXE8MTIwP2k6cTwyNTA/ajprLHk9cTw0MD8yZTM6cTw2MD81MDA6cTwxMjA/MzAwOjIwMCx6PXE8NDA/NTpxPDYwPzQ6cTwxMjA/MzpxPDI1MD8zOjIsQT1hLnZpZXcmJiF1fHwhYS5pbmNsLmxlbmd0aD9yP20ua2V5Om0udmFsdWU6bS5kb2MsQj1iKEEseSxbIl9pZCIsImlkIiwibmFtZSJdLHopO3JldHVybiAxPT1CLmxlbmd0aCYmInNob3J0Ij09QlswXVswXSYmKCJ7Ij09QlswXVsxXVswXT9CWzBdWzFdPSJPYmplY3QgIitCWzBdWzFdOiJbIj09QlswXVsxXVswXSYmKEJbMF1bMV09IkFycmF5ICIrQlswXVsxXSkpLG89Qi5tYXAodykuam9pbigiIikseC5mU2VhcmNoJiZhLnNlYXJjaC5sZW5ndGg+MT8ocD0ocj9tLmlkOmwobS5rZXkpKS5lc2NhcGVIVE1MKCksKHM/ZzpoKS5hc3NpZ24oe19pZHg6bS5faWR4LF9pZHhzYWZlOm0uX2lkeHNhZmUsY2hlY2tlZDptLl9jaGVja2VkLGlkOm0ua2V5LGlkc2FmZWZpbHRlcjpjKChyP20uaWQ6bChtLmtleSkpLnJlcGxhY2UoeC5mU2VhcmNoLCLvv7EkMe+/sCIpLmVzY2FwZUhUTUwoKS5yZXBsYWNlKCLvv7EiLCc8c3BhbiBjbGFzcz0idmlldy1mb3VuZCI+JykucmVwbGFjZSgi77+wIiwiPC9zcGFuPiIpKSxpZHNhZmU6cCxqaWRzYWZlOmMocCksZG9jaWRzYWZlOm51bGwhPW0uaWQ/KG0uaWQrIiIpLmVzY2FwZUhUTUwoKToiIixocmVmOm0uaWQ/eC5wMnUoW2EucGF0aFswXSxtLmlkXSkuam9pbigiLyIpLmVzY2FwZUhUTUwoKToiIixub2RvYzptLmlkPyIiOiJoaWRlIixrZXk6bS5rZXksaHRtbDpjKG8pLGNzczpvLmxlbmd0aD4yNTA/ImZzOTUgbGgxNDAgcHQzIHBiMyI6ImxoMTQwIHB0MiBwYjIifSkpOihwPSh0fHx2P20ua2V5OnI/bS5pZDpsKG0ua2V5KSkuZXNjYXBlSFRNTCgpLCh0fHx2P2Q6cz9lOmYpLmFzc2lnbih7X2lkeDptLl9pZHgsX2lkeHNhZmU6bS5faWR4c2FmZSxfZGVsOm0uX2RlbCxjaGVja2VkOm0uX2NoZWNrZWQsaWQ6bS5rZXksaWRzYWZlOnAsamlkc2FmZTpjKHApLGRvY2lkc2FmZTpudWxsIT1tLmlkPyhtLmlkKyIiKS5lc2NhcGVIVE1MKCk6IiIsaHJlZjptLmlkP3gucDJ1KG0uX2RlbD9bYS5wYXRoWzBdLG0uaWQsIl8iK20uX2RlbF06W2EucGF0aFswXSxtLmlkXSkuam9pbigiLyIpLmVzY2FwZUhUTUwoKToiIixub2RvYzptLmlkPyIiOiJoaWRlIixrZXk6bS5rZXksaHRtbDpjKG8pLGNzczpvLmxlbmd0aD4yNTA/ImZzOTUgbGgxNDAgcHQzIHBiMyI6ImxoMTQwIHB0MiBwYjIifSkpfTtmdW5jdGlvbiBpKHgpe3JldHVybiB4WzBdPyc8c3BhbiBjbGFzcz0ianZhbC0nK3hbMF0rJyI+Jyt4WzFdKyI8L3NwYW4+Ijp4WzFdfWZ1bmN0aW9uIGooeCl7cmV0dXJuImJyYWNrZXQiIT14WzBdJiYia2V5IiE9eFswXT94WzFdOic8c3BhbiBjbGFzcz0ianZhbC0nK3hbMF0rJyI+Jyt4WzFdKyI8L3NwYW4+In1mdW5jdGlvbiBrKHgpe3JldHVybiB4WzFdfWZ1bmN0aW9uIGwoeCl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHgsbnVsbCwxKS5yZXBsYWNlKC9eXHMrL2dtLCIgIikucmVwbGFjZSgvXG4vZywiIikucmVwbGFjZSgve1xzL2csInsiKS5yZXBsYWNlKC9cc30vZywifSIpLnJlcGxhY2UoL1xbXHMvZywiWyIpLnJlcGxhY2UoL1xzXF0vZywiXSIpfX0sVERvY3M6ZnVuY3Rpb24oKXt2YXIgeD10aGlzLGE9eC5kYXRhLGI9eC50YWdFbW9qaSxjPXguVC5kb2NzLGQ9eC5ULnVzZXJfZG9jcztyZXR1cm4iX3VzZXJzIiE9YS5wYXRoWzBdP2Z1bmN0aW9uKHgsYSl7cmV0dXJuIGMuYXNzaWduKGUoeCxhKSl9OmZ1bmN0aW9uKHgsYSl7dmFyIGI9ZSh4LGEpO3JldHVybiJvcmcuY291Y2hkYi51c2VyOiIhPXgua2V5LnN1YnN0cigwLDE3KT9jLmFzc2lnbihiKTpkLmFzc2lnbihiKX07ZnVuY3Rpb24gZShjLGQpe3JldHVybntpZDpjLmtleSxpZHNhZmU6KGMua2V5KyIiKS5lc2NhcGVIVE1MKCksamlkc2FmZTpiKChjLmtleSsiIikuZXNjYXBlSFRNTCgpKSxjaGVja2VkOmMuX2NoZWNrZWQsaHJlZjpjLmlkP3gucDJ1KGMuX2RlbD9bYS5wYXRoWzBdLGMuaWQsIl8iK2MuX2RlbF06W2EucGF0aFswXSxjLmlkXSkuam9pbigiLyIpLmVzY2FwZUhUTUwoKToiIixyZXY6KChjLnZhbHVlfHx7fSkucmV2KyIiKS5lc2NhcGVIVE1MKCl9fX0sVE1hbmdvOmZ1bmN0aW9uKCl7dmFyIHg9dGhpcyxhPSh4LmRhdGEseC5QaG8oImoyaCIpKSxiPXgudGFnRW1vamksYz14LlQubWFuZ287eC5ULnZpZXdfZmlsdGVyO3JldHVybiBmdW5jdGlvbihnLGgpe3ZhciBpLGo9eC5Sb3dzLmxlbmd0aCxrPWo8MTIwP2Q6ajwyNTA/ZTpmLGw9ajw0MD8yZTM6ajw2MD81MDA6ajwxMjA/MzAwOjIwMCxtPWo8NDA/NTpqPDYwPzQ6ajwxMjA/MzpqPDI1MD8zOjIsbj1nLnZhbHVlLG89YShuLGwsWyJfaWQiLCJpZCIsIm5hbWUiXSxtKTtyZXR1cm4gMT09by5sZW5ndGgmJiJzaG9ydCI9PW9bMF1bMF0mJigieyI9PW9bMF1bMV1bMF0/b1swXVsxXT0iT2JqZWN0ICIrb1swXVsxXToiWyI9PW9bMF1bMV1bMF0mJihvWzBdWzFdPSJBcnJheSAiK29bMF1bMV0pKSxpPW8ubWFwKGspLmpvaW4oIiIpLGMuYXNzaWduKHtfaWR4OmcuX2lkeCxfaWR4c2FmZTpnLl9pZHhzYWZlLF9oYXN1cmw6Zy5faGFzdXJsLGlkOmcua2V5KyIiLGlkc2FmZTpnLmtleSsiIixqaWRzYWZlOmIoKGcua2V5KyIiKS5lc2NhcGVIVE1MKCkpLGhyZWY6Zy5ocmVmfHwiIixub2RvYzoiIixrZXk6aCsiIixodG1sOmksY3NzOmkubGVuZ3RoPjI1MD8iZnM5NSBsaDE0MCBwdDMgcGIzIjoibGgxNDAgcHQyIHBiMiJ9KX07ZnVuY3Rpb24gZCh4KXtyZXR1cm4geFswXT8nPHNwYW4gY2xhc3M9Imp2YWwtJyt4WzBdKyciPicreFsxXSsiPC9zcGFuPiI6eFsxXX1mdW5jdGlvbiBlKHgpe3JldHVybiJicmFja2V0IiE9eFswXSYmImtleSIhPXhbMF0/eFsxXTonPHNwYW4gY2xhc3M9Imp2YWwtJyt4WzBdKyciPicreFsxXSsiPC9zcGFuPiJ9ZnVuY3Rpb24gZih4KXtyZXR1cm4geFsxXX19LHVwZGF0ZUdyaWRIVE1MOmZ1bmN0aW9uKCl7dmFyIHg9dGhpcyxhPXguZGF0YSxiPXguRi5nZXRSZWZTdGFyLGM9IiI9PWEucmVkdWNlJiYhKCJfZmluZCI9PWEudmlldy50byg1KXx8Il9zcWwiPT1hLnZpZXcudG8oNCkpLGQ9KGEudmlldyx4LkNvbHVtbnMucmVkdWNlKGZ1bmN0aW9uKHgsYSl7aWYoeC5sYXN0KCkmJngubGFzdCgpLmNvbHM9PWEuY29scylyZXR1cm4geC5sYXN0KCkuc3Bhbis9MSx4O3ZhciBiPShhLmNhc3Q/YS5jb2xzLnRvKGEuY29scy5sZW5ndGgtYS5jYXN0Lmxlbmd0aC0yKTphLmNvbHMpLnNwbGl0KCIuIik7cmV0dXJuIiIhPT1iWzBdP2IudW5zaGlmdCgidmFsdWUiKTpiLnNoaWZ0KCkseC5wdXNoKHtzZWw6YixzcGFuOjEsY29sczphLmNvbHMsY2FzdDphLmNhc3R9KSx4fSxbXSkpLGU9Y3cubGliLmEybyhhLnNlbGVjdGlvbik7eC5Sb3dzLmZvckVhY2goeD0+eC5fY2hlY2tlZD1lW2M/eC5pZDp4LmtleV0/ImNoZWNrZWQiOiIiKSx4LmdSb3dzPXguUm93cy50bygrYS5saW1pdCk7dmFyIGY9YS5zZWFyY2gubGVuZ3RoPjEmJnguZlNlYXJjaD94LmZTZWFyY2g6bnVsbDtmJiYoeC5nUm93cz14LmdSb3dzLmZpbHRlcih4PT5mLnRlc3QoeC5fa2pzb24pfHxmLnRlc3QoeC5fdmpzb24pKSkseC5nUm93cy5mb3JFYWNoKGZ1bmN0aW9uKHgsYSl7eC5jb2xzPWQubWFwKGZ1bmN0aW9uKGEpe3ZhciBjPWEuc2VsLmxlbmd0aD9iKHgsYS5zZWwpOnZvaWQgMCxkPSJzdHJpbmciPT10eXBlb2YgYyxlPW51bGwhPWYmJmYudGVzdChkP2M6SlNPTi5zdHJpbmdpZnkoYykpO3JldHVybnt2YWw6YyxzcGFuOmEuc3Bhbixjc3M6ZT8iY2VsbC1mb3VuZCI6IiIsY2FzdDphLmNhc3R9fSl9KSx4Lm15LmZpbmQoIiN2aWV3LXJlc3VsdHMtZ3JpZCIpLmxpc3QoImRhdGEiLHguZ1Jvd3MpfSxidWlsZEdyaWRDb2x1bW5zOmZ1bmN0aW9uKCl7dmFyIHg9dGhpcyxhPXguZGF0YTthLmdyaWQ/eC5Db2x1bW5zPWEuY29sdW1ucy5tYXAoZnVuY3Rpb24oeCl7dmFyIGE9KHgubWF0Y2goL1xzXC9bYS16XVthLXowLTldezAsNX0kLyl8fFsiIl0pWzBdLnN1YnN0cigyKTtyZXR1cm57aWQ6IngiK051bWJlci5yYW5kb20oMWU1LDFlNiksY29sczp4LGNhc3Q6YX19KTp4LkNvbHVtbnM9W119LHVwZGF0ZUdyaWRGcm9tQ29sdW1uczpmdW5jdGlvbigpe3ZhciB4PXRoaXMsYT14LmRhdGE7aWYoYS5ncmlkJiYoeC5Db2x1bW5zfHxbXSkubGVuZ3RoKXt2YXIgYj1hLmNvbHVtbnMubGVuZ3RoO2EuY29sdW1ucz14LkNvbHVtbnMubWFwKHg9PnguY29scykseC5zdGFzaFZpZXdTdGF0ZSgpLGIhPSh4LkNvbHVtbnN8fFtdKS5sZW5ndGgmJngubXkucmVzdHlsZSgpLHgubXkuY2hlY2soIiNncmlkLXByb3h5Iil9fSxkZXJpdmVHcmlkQ29sdW1uczpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9KHg9KCt4fHw1KS5jbGFtcCgxLDgpLGN3LmxpYi5hMm8oImlkIGtleSByZXYgLmlkIC5rZXkgLnJldiAuZG9jIC5faWQgLl9yZXYgLnZhbHVlIC5kb2MuX2lkIC5kb2MuX3JldiDigIwiLnNwbGl0KCIgIikpKSxjPWEuRmllbGRzLnNvcnRCeShmdW5jdGlvbih4KXt2YXIgYT14LnZhbHVlLGI9eC5jdHI7cmV0dXJuInRpdGxlIiE9YSYmIm5hbWUiIT1hfHwoYio9MS41KSwic3RhbXAiIT1hJiYidHMiIT1hJiYidGltZVN0YW1wIiE9YXx8KGIqPTEuNCksInR5cGUiPT1hJiYoYio9MS4yKSxifSwhMCkuZmlsdGVyKHg9PiFiW3gudmFsdWVdKS50byh4KS5tYXAoeD0+eC52YWx1ZSk7cmV0dXJuIGMubGVuZ3RofHwoYz1bIi52YWx1ZSJdKSxjfSxzdGFzaFZpZXdTdGF0ZTpmdW5jdGlvbigpe3ZhciB4PXRoaXMsYT14LmRhdGEsYj1jdy5saWIuc2RibShbYS5wYXRoWzBdLGEudmlld10pLGM9e3JlZHVjZTphLnJlZHVjZSxncmlkOmEuZ3JpZCxjb2x1bW5zOihhLmNvbHVtbnN8fFsiLnZhbHVlIl0pLnNsaWNlKDApLHNoYWRvdzooYS5zaGFkb3d8fFsiLnZhbHVlIl0pLnNsaWNlKDApLGVkaXRvcjphLmVkaXRvcixpbmNsOmEuaW5jbH07cmV0dXJuIHguTHMoIlZpZXdTdGF0ZS4iK2IsYykse2tleTpiLHN0YXRlOmN9fSxyZXN0b3JlVmlld1N0YXRlOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcyxjPWIuZGF0YSxkPXh8fGMudmlldyxlPWN3LmxpYi5zZGJtKFtjLnBhdGhbMF0sZF0pLGY9KGQudG8oNSksZC50byg0KSwiX2lkeCI9PWQudG8oNCkpLGc9Il9kZXNpZ25fZG9jcyI9PWQsaD0iX2NoYW5nZXMiPT1kLGk9Il9jb25mbGljdHMiPT1kLGo9Yi5McygiVmlld1N0YXRlLiIrZSl8fHt9O2lmKCFqLmNvbHVtbnN8fCFqLmNvbHVtbnMubGVuZ3RofHxqLmNvbHVtbnMrIiI9PSIudmFsdWUifHxpJiZqLmxlbmd0aDwzKWlmKGQpaWYoaSlqLmNvbHVtbnM9WyJfaWQiLCJfcmV2IiwiX2NvbmZsaWN0cyAvbGlzdCIsIm5hbWUiXTtlbHNlIGlmKGcpai5jb2x1bW5zPVsidmlld3MgL2tleXMiLCJmaWx0ZXJzIC9rZXlzIiwiLmRvYy5vcHRpb25zIC9rdiIsIi5kb2MubGFuZ3VhZ2UiLCJzaXplcy5maWxlIC9ieXRlcyJdO2Vsc2UgaWYoaClqLmNvbHVtbnM9WyJyZXYiLCJyZXYiLCJkZWxldGVkIiwic2VxIl07ZWxzZSBpZihmKXt2YXIgayxsPSJfZGVzaWduLyIrZC5zcGxpdCgi77+9IilbMF0uZnJvbSg1KSxtPWQuc3BsaXQoIu+/vSIpWzFdLG49W107bSYmKGs9Y3cubGliLmdldHJlZihiLkRkb2NzLFtsLCJ2aWV3cyIsbSwibWFwIiwiZmllbGRzIl0pKSYmT2JqZWN0LnNpemUoayk+MT8oT2JqZWN0LnNpemUoaykuY2xhbXAoMiw4KS50aW1lcyh4PT5uLnB1c2goIi5rZXkuIit4KSksai5jb2x1bW5zPW4pOmouY29sdW1ucz1bIi5rZXkiXX1lbHNlIGouY29sdW1ucz1bIi52YWx1ZSJdO2Vsc2Ugai5jb2x1bW5zPShqLmluY2x8fCIiKSsiIj9bIi5kb2MiXTpbInJldiJdO3JldHVybiB4fHwkLmV4dGVuZChjLE9iamVjdC5zZWxlY3QoaixbInJlZHVjZSIsImdyaWQiLCJjb2x1bW5zIiwic2hhZG93IiwiZWRpdG9yIiwiaW5jbCJdKSksYSYmYi5teS5yZWRyYXcoKSxqfSxjbG9zZUF1dG9jb21wbGV0ZXM6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpczthLm15JiZhLm15LmZpbmQoIi51aS1hdXRvY29tcGxldGUtaW5wdXQiKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGE9JCh0aGlzKTthLmlzKHgpfHwoYS5hdXRvY29tcGxldGUoImNsb3NlIiksYS5uZXh0KCkudHJpZ2dlcigiY2hlY2subXkiKSl9KX0sYnVpbGRGaWVsZHNMaXN0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj1hLmRhdGEsYz14fHxhLlJlc3VsdFswXXx8e3Jvd3M6W119LGQ9KE9iamVjdC5pc0FycmF5LE9iamVjdC5pc09iamVjdCksZT17fSxmPSJfZGVzaWduX2RvY3MiPT1iLnZpZXcsZz0iX2xvY2FsX2RvY3MiPT1iLnZpZXc7aWYoYS5GaWVsZHMubGVuZ3RoKXJldHVybiBhLkZpZWxkcztjLmRvY3M/Yy5kb2NzLm1hcCh4PT4oe3ZhbHVlOnh9KSkuZm9yRWFjaChpLmZpbGwoMCwiIikpOmMucmVzdWx0cz9jLnJlc3VsdHMubWFwKHg9Pih7dmFsdWU6eH0pKS5mb3JFYWNoKGkuZmlsbCgwLCIiKSk6KGMucm93c3x8W10pLm1hcChmdW5jdGlvbih4KXtyZXR1cm4gT2JqZWN0LnNlbGVjdCh4LCFiLnZpZXd8fGZ8fGc/WyJpZCIsInZhbHVlIiwiZG9jIl06WyJpZCIsImtleSIsInZhbHVlIl0pfSkuZm9yRWFjaChpLmZpbGwoMCwiIikpO3ZhciBoPU9iamVjdC5rZXlzKGUpO3JldHVybiBoLmxlbmd0aD4xMDAmJihoPWguZmlsdGVyKHg9Pnguc3BsaXQoIi4iKS5sZW5ndGg8KCIuIj09eFswXT81OjQpKSksaC5sZW5ndGg+MTAwJiYoaD1oLmZpbHRlcih4PT54LnNwbGl0KCIuIikubGVuZ3RoPCgiLiI9PXhbMF0/NDozKSkpLGgubGVuZ3RoPjEwMCYmKGg9aC5maWx0ZXIoeD0+eC5zcGxpdCgiLiIpLmxlbmd0aDwoIi4iPT14WzBdPzM6MikpKSxoLmxlbmd0aD4xMDAmJihoPWgudG8oMTAwKSksYS5GaWVsZHM9W3tsYWJlbDoiw5cgRGVsZXRlIGNvbHVtbiIsdmFsdWU6IuKAjCIsY3RyOjB9XS5jb25jYXQoaC5zb3J0KGZ1bmN0aW9uKHgsYSl7cmV0dXJuIi4iIT1hWzBdJiYiLiIhPXhbMF18fGFbMF09PXhbMF0/YT54Py0xOmE8eD8xOjA6Ii4iPT1hWzBdPy0xOjF9KS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJue2xhYmVsOngudHJ1bmNhdGUoNTAsIm1pZGRsZSIsIsKg4oCmwqAiKSx2YWx1ZTp4LGN0cjplW3hdfX0pKTtmdW5jdGlvbiBpKHgsYSxiKXt4PjN8fGQoYikmJk9iamVjdC5rZXlzKGIpLmZvckVhY2goZnVuY3Rpb24oYyl7aWYoYy5sZW5ndGgmJiJfYXR0YWNobWVudHMiIT1jKXt2YXIgZD1iW2NdLGY9JC50eXBlKGQpLGc9KCIudmFsdWUiPT1hPyIiOmErIi4iKStjO2VbZ109KGVbZ118fDApKyh4PjE/LjE6MSksIm9iamVjdCI9PWY/aSh4KzEsZyxkKToiYXJyYXkiPT1mJiZkLmxlbmd0aCYmaSh4KzEsYSsiLiIrYysiLjAiLGRbMF0pfX0pfX0sVEdyaWRNYXA6ZnVuY3Rpb24oKXt2YXIgeD10aGlzLGE9eC5kYXRhLGI9eC5QaG8oImoyaCIpLGM9eC50YWdFbW9qaSxkPXguVC5ncmlkX3ZpZXcsZT14LlQuZ3JpZF9kb2MsZj14LlQuZ3JpZF9tYW5nbyxnPXguVC5ncmlkX2NvbHVtbjtyZXR1cm4gZnVuY3Rpb24obCxtKXt2YXIgbj14LlJvd3MubGVuZ3RoLG89Il9pZHgiPT1hLnZpZXcudG8oNCkscD0vXl8oZmluZHxzcWwpLy50ZXN0KGEudmlldyl8fCJfY29uZmxpY3RzIj09YS52aWV3LHE9IXAmJiIiPT14LmRhdGEucmVkdWNlLHI9Il9kZXNpZ25fZG9jcyI9PWEudmlldyxzPSJfY2hhbmdlcyI9PWEudmlldyx0PWksdT1uPDQwPzJlMzpuPDYwPzE1MDA6bjwxMjA/MWUzOjcwMCx2PW48MTIwPzY6NSx3PXguRi5HcmlkQ2FzdCx5PSFhLnZpZXd8fHJ8fHN8fHA/bC5rZXk6bz9sLmlkOmoobC5rZXkpO3JldHVybighYS52aWV3fHxyfHxzP2U6cT9kOmYpLmFzc2lnbih7X2lkeDpsLl9pZHgsX2lkeHNhZmU6bC5faWR4c2FmZSxfaGFzdXJsOmwuX2hhc3VybCxjaGVja2VkOmwuX2NoZWNrZWQsaWQ6bC5rZXksaWRzYWZlOnkuZXNjYXBlSFRNTCgpLGlkc2FmZWZpbHRlcjpjKHguZlNlYXJjaD95LnJlcGxhY2UoeC5mU2VhcmNoLCLvv7EkMe+/sCIpLmVzY2FwZUhUTUwoKS5yZXBsYWNlKCLvv7EiLCc8c3BhbiBjbGFzcz0idmlldy1mb3VuZCI+JykucmVwbGFjZSgi77+wIiwiPC9zcGFuPiIpOnkuZXNjYXBlSFRNTCgpKSxkb2NpZHNhZmU6bnVsbCE9bC5pZD8obC5pZCsiIikuZXNjYXBlSFRNTCgpOiIiLGhyZWY6bC5faGFzdXJsP2wuaHJlZjpsLmlkP3gucDJ1KGwuX2RlbD9bYS5wYXRoWzBdLGwuaWQsIl8iK2wuX2RlbF06W2EucGF0aFswXSxsLmlkXSkuam9pbigiLyIpLmVzY2FwZUhUTUwoKToiIixub2RvYzpsLmlkPyIiOiJoaWRlIixrZXk6bC5rZXksY29sdW1uczpsLmNvbHMubWFwKGZ1bmN0aW9uKHgsYSl7dmFyIGQ9IiIsZT14LnZhbCxmPXR5cGVvZiB4LnZhbDtyZXR1cm4gd1t4LmNhc3RdJiYoZj10eXBlb2YoZT13W3guY2FzdF0oZSxmKSkpLGQ9Im9iamVjdCI9PWY/ayhqKGUpKToibnVtYmVyIj09Zj9oKGUpOiJzdHJpbmciPT1mP2U/ayhlKS5yZXBsYWNlKC9eW1xyXG5dKy8sIiIpLnJlcGxhY2UoL1tcclxuXSsvZywiPGJyPiIpOiciIic6YihlLHUsW10sdikubWFwKHQpLmpvaW4oIiIpLGcuYXNzaWduKHtpZHg6bSsiXyIrYSx2YWw6YyhkKSxjc3M6W2QubGVuZ3RoPjEwMD8iZnM5NSBsaDE0MCBwdDEgIjoiIiwib2JqZWN0Ij09Zj8iYXNqc29uICI6IiIsImdjb2x2IGdjb2x3Iit4LnNwYW4rIiAiLHguY3NzfHwiIl0uam9pbigiIil9KX0pLmpvaW4oIiIpfSl9O2Z1bmN0aW9uIGgoeCl7cmV0dXJuJzxzcGFuIGNsYXNzPSJqdmFsLW51bWJlcicrKC9cZHsxMH0vLnRlc3QoeCk/IiBmczk1IjoiIikrJyI+Jyt4KyI8L3NwYW4+In1mdW5jdGlvbiBpKHgpe3JldHVybiB4WzBdPyc8c3BhbiBjbGFzcz0ianZhbC0nK3hbMF0rJyI+Jyt4WzFdKyI8L3NwYW4+Ijp4WzFdfWZ1bmN0aW9uIGooeCl7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHgsbnVsbCwxKS5yZXBsYWNlKC9eXHMrL2dtLCIgIikucmVwbGFjZSgvXG4vZywiIikucmVwbGFjZSgve1xzL2csInsiKS5yZXBsYWNlKC9cc30vZywifSIpLnJlcGxhY2UoL1xbXHMvZywiWyIpLnJlcGxhY2UoL1xzXF0vZywiXSIpfWZ1bmN0aW9uIGsoYSl7dmFyIGI9MjU2Kzc2OC8oKHguQ29sdW1uc3x8W10pLmxlbmd0aHx8MSl8MDtyZXR1cm4gYS5sZW5ndGg+MS4xKmI/YS50byhiKS5lc2NhcGVIVE1MKCkrJzxzcGFuIGNsYXNzPSJyZWQxIHBsMyBib2xkIj7igKY8L3NwYW4+JzphLmVzY2FwZUhUTUwoKX19LEdyaWRDYXN0OntkdDpmdW5jdGlvbih4LGEpe2lmKCF4fHwhL14obnVtYmVyfHN0cmluZykkLy50ZXN0KGEpKXJldHVybiB4O3ZhciBiPURhdGUuY3JlYXRlKC9eW2ktdV1bYS16MC05XXs3fSQvLnRlc3QoeCk/cGFyc2VJbnQoeCwzNik6K3h8fHgpO3JldHVybiBiLmlzVmFsaWQoKT9iLmZvcm1hdCgie2R9IHtNb259IHt5eXl5fSwge0h9OnttbX06e3NzfSIpOnh9LGludDpmdW5jdGlvbih4KXt2YXIgYTtpZigibnVtYmVyIiE9dHlwZW9mIHgpe2lmKCJzdHJpbmciIT10eXBlb2YgeClyZXR1cm4geDtpZihpc05hTihwYXJzZUludCh4KSkpcmV0dXJuIHg7YT1wYXJzZUludCh4KS5mb3JtYXQoMCwi4oCJIil9ZWxzZSBhPXguZm9ybWF0KDAsIuKAiSIpO3JldHVybiBhKyLCoCJ9LGN1cnI6ZnVuY3Rpb24oeCl7cmV0dXJuIm51bWJlciIhPXR5cGVvZiB4P3g6eC5mb3JtYXQoMiwi4oCJIikrIsKgIn0sYnl0ZXM6ZnVuY3Rpb24oeCl7cmV0dXJuIm51bWJlciIhPXR5cGVvZiB4P3g6eC5ieXRlcygyKS5yZXBsYWNlKC8oXERcRD8pJC8sIuKAiuKAiiQxIil9LGhleDpmdW5jdGlvbih4LGEpe2lmKCJudW1iZXIiPT1hJiZNYXRoLmZsb29yKHgpPT09eCl7dmFyIGI9eC50b1N0cmluZygxNiksYz0iLSI9PWJbMF0/Ii0iOiIiLGQ9Yi5zdWJzdHIoYz8xOjApLnRvVXBwZXJDYXNlKCksZT1kLmxlbmd0aDtyZXR1cm4gYysoZD1kLnBhZExlZnQoZTw9ND80OmU8OD84OjAsIjAiKSl9cmV0dXJuInN0cmluZyI9PWE/dW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KHgpKS5jb2RlcygpLm1hcChmdW5jdGlvbih4LGEpe3JldHVybih4PDE2PyIwIjoiIikreC50b1N0cmluZygxNikrKGElND09Mz8iICI6IuKAryIpfSkuam9pbigiIikudG9VcHBlckNhc2UoKTp4fSxsaXN0OmZ1bmN0aW9uKHgsYSl7cmV0dXJuIm9iamVjdCIhPWE/eDpPYmplY3QudmFsdWVzKHgpLm1hcChmdW5jdGlvbih4KXtyZXR1cm4ib2JqZWN0IiE9dHlwZW9mIHg/KHgrIiIpLnJlcGxhY2UoL1tcclxuXSsvZywiICIpOkpTT04uc3RyaW5naWZ5KHgpfSkuam9pbigiXG4iKX0sa2V5czpmdW5jdGlvbih4LGEpe3JldHVybiJvYmplY3QiIT1hP3g6T2JqZWN0LmtleXMoeCkubWFwKGZ1bmN0aW9uKHgpe3JldHVybiB4LnJlcGxhY2UoL1tcclxuXSsvZywiICIpfSkuam9pbigiXG4iKX0sa3Y6ZnVuY3Rpb24oeCxhKXtyZXR1cm4ib2JqZWN0IiE9YT94Ok9iamVjdC5rZXlzKHgpLm1hcChmdW5jdGlvbihhKXt2YXIgYj14W2FdO3JldHVybiBhLnJlcGxhY2UoL1tcclxuXSsvZywiICIpKyI6wqAiKygib2JqZWN0IiE9dHlwZW9mIGI/KGIrIiIpLnJlcGxhY2UoL1tcclxuXSsvZywiICIpOkpTT04uc3RyaW5naWZ5KGIpKX0pLmpvaW4oIlxuIil9fSxHZXRTZWM6ZnVuY3Rpb24oKXt2YXIgeD10aGlzLGE9eC5QaG8oIkFsbCIpLGI9T2JqZWN0LmtleXMoYSksYz1bXSxkPURhdGUubm93KCk7cmV0dXJuIGIuZm9yRWFjaChmdW5jdGlvbih4KXsoIWFbeF0uc2VjdXJpdHl8fGFbeF0uc2VjdXJpdHkuc3RhbXArMzZlNTxkKSYmYy5wdXNoKHgpfSksYz1jLnRvKDEwMCkseC5QaG8oIiRkYnMiKS5CYXRjaEluZm8uY2FsbCh7UGhvOnguUGhvLFJlcTp4LlJlcSxCYXRjaDp7fSxBbGw6YSxSZWxpc3Q6ZnVuY3Rpb24oKXt9LFJlbGlzdE5vdzpmdW5jdGlvbigpe319LGMseC5QaG8oIkNmZyIpLmJhdGNoRGJJbmZvRGVsYXksWyJzZWN1cml0eSJdKX0sRGVsRG9jczpmdW5jdGlvbigpe3ZhciB4PSQuRGVmZXJyZWQoKSxhPXRoaXMsYj1hLmRhdGEsYz1iLnNlbGVjdGlvbi5zbGljZSgwKS51bmlxdWUoKSxkPWMubGVuZ3RoLGU9KGEuZlJvd3N8fGEuUm93cykubWFwKGZ1bmN0aW9uKHgpe3JldHVybiB4LmlkfSkudW5pcXVlKCkuaW50ZXJzZWN0KGMpLmxlbmd0aCxmPWEubGFuZyxnPWEuUGhvKCJDb3VjaCIpLnZlcixoPWZ1bmN0aW9uKHgpe3JldHVybih4KyIiKS5lc2NhcGVIVE1MKCl9LGk9ZnVuY3Rpb24oeCxhKXtyZXR1cm4gaCgoeCsiIikudHJ1bmNhdGUoYXx8MTUsInJpZ2h0Iiwi4oCmIikpfSxqPSc8ZGl2IGNsYXNzPSJtYjEwIj57MX08L2Rpdj4nLGs9JzxsYWJlbCBjbGFzcz0ieGdyYXkiPjxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0icmV0YWluIiB2YWx1ZT0iezF9IiBjbGFzcz0ibXI2Ij4gezJ9PC9sYWJlbD4nO3JldHVybiAkLm15Lm1vZGFsKHt3aWR0aDozODAsbWFuaWZlc3Q6JC5leHRlbmQoITAse30sYS5QaG8oIkNvbmZpcm0iKSx7dWk6eydpbnB1dFtuYW1lPSJyZXRhaW4iXSc6InJldGFpbiJ9LHN0eWxlOnsiIGxhYmVsIjoibWFyZ2luOjA7bGluZS1oZWlnaHQ6aW5oZXJpdDtjb2xvcjppbmhlcml0OyJ9fSksZGF0YTp7cmV0YWluOiJubyIsdGV4dDpbJzxkaXYgY2xhc3M9ImZzMTMwIHJlZCBtYjUiPicrZi5UWFRfREVMX1RJVExFKyI8L2Rpdj4iLGouYXNzaWduKGYuVFhUX0RFTF9XQVJOKGQsaShiLnBhdGhbMF0sMjUpKSksZSE9ZD9qLmFzc2lnbihmLlRYVF9ERUxfV0FSTl9ISURERU4oZCxlKSk6IiIsai5hc3NpZ24oay5hc3NpZ24oIm5vIixmLkxCTF9ERUxfQUxMKStrLmFzc2lnbigicmV0YWluIixmLkxCTF9ERUxfUkVUQUlOKSsoZz49IjAwMi4wMDMuIj9rLmFzc2lnbigicHVyZ2UiLGYuTEJMX0RFTF9QVVJHRSk6IiIpKV0uam9pbigiIikseWVzY3NzOiJyZWQiLHllczpmLkJUTl9ERUxfU1RBUlQsbm86Zi5CVE5fQ0FOQ0VMLGNhbmNlbDoiIn0sY3NzOiJsaDE2MCB4Z3JheSBwMjAgcGIyNSIsY2xvc2U6YS5QaG8oImxhbmciKS5CVE5fWERMRyxmb2N1czoiI2J0bi1ubyIsZXNjOiEwLGVudGVyOiExfSkudGhlbihmdW5jdGlvbihhKXtpZigieWVzIiE9YS5jbWQpcmV0dXJuIHgucmVqZWN0KDk5OSwiQ2FuY2VsbGVkIiwiQ2FuY2VsbGVkIik7bChhLnJldGFpbisiIil9KS5mYWlsKGZ1bmN0aW9uKCl7eC5yZWplY3QoOTk5LCJDYW5jZWxsZWQiLCJDYW5jZWxsZWQiKX0pLHgucHJvbWlzZSgpO2Z1bmN0aW9uIGwoZCl7dmFyIGU9Yy51bmlxdWUoKS5zb3J0KCksZz17dXJsOltiLnBhdGhbMF0sIl9idWxrX2RvY3MiXSxtZXRob2Q6IlBPU1QiLGNvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi9qc29uIixkYXRhOiJbXSJ9O2lmKCJubyI9PWR8fCJyZXRhaW4iPT1kKWcuaGVhZGVycz17IlgtQ291Y2gtRnVsbC1Db21taXQiOiJ0cnVlIn07ZWxzZXtpZigicHVyZ2UiIT1kKXJldHVybiB4LnJlamVjdCg5OTksIlVua25vd24gbW9kZSIsIkNhbmNlbGxlZCIpLHZvaWQgMDtnLnVybFsxXT0iX3B1cmdlIn1yZXR1cm4gaihlLCJyZXRhaW4iIT1kKS50aGVuKGZ1bmN0aW9uKHgpe3JldHVybiBnLmRhdGE9SlNPTi5zdHJpbmdpZnkoInB1cmdlIiE9ZD97ZG9jczp4fTp4LnJlZHVjZShmdW5jdGlvbih4LGEpe3JldHVybiB4W2EuX2lkXT1bYS5fcmV2XSx4fSx7fSkpLGEuUmVxKGcpLnRoZW4oZnVuY3Rpb24oeCl7cmV0dXJuIGsoeCxlKX0pLmZhaWwobCl9KTtmdW5jdGlvbiBqKHgsYyl7dmFyIGQ9e3VybDpbYi5wYXRoWzBdLCJfYWxsX2RvY3MiLHtpbmNsdWRlX2RvY3M6IWN9XSxtZXRob2Q6IlBPU1QiLGNvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi9qc29uIixkYXRhOkpTT04uc3RyaW5naWZ5KHtrZXlzOnh9KX07cmV0dXJuIGEuUmVxKGQpLnRoZW4oZnVuY3Rpb24oeCl7cmV0dXJuIHgucm93cy5tYXAoZnVuY3Rpb24oeCl7dmFyIGE9Yz97X2lkOnguaWQsX3Jldjp4LnZhbHVlLnJldn06eC5kb2M7cmV0dXJuIGEuX2RlbGV0ZWQ9ITAsYX0pfSl9ZnVuY3Rpb24gayhjLGUpe3ZhciBnLGg9ZS5sZW5ndGg7Zz0icHVyZ2UiIT1kP2MuY291bnQoZnVuY3Rpb24oeCl7cmV0dXJuIXguZXJyb3J9KTpPYmplY3Quc2l6ZShjLnB1cmdlZCksY3cubGliLm5vdGUoZi5NU0dfREVMX09LKGgsZyxpKGIucGF0aFswXSksZCksaD09Zz8ib2siOiJlcnJvciIsNWUzKSxoPmcmJmNvbnNvbGUubG9nKGMpLCQubXkucmFkaW8oImRidXBkYXRlIix7ZGI6Yi5wYXRoWzBdLGNtZDoiZGVsZXRlIixkb2NzOmV9KSwkLm15LnJhZGlvKCJkYmxpc3QiLFtiLnBhdGhbMF1dKSxiLnNlbGVjdGlvbj1bXSxlLmZvckVhY2goZnVuY3Rpb24oeCl7Il8iPT14WzBdJiZhLkRkb2NzW3hdJiZkZWxldGUgYS5EZG9jc1t4XX0pLGEubXkuY2hlY2soIiN2aWV3LW5hbWUiKSx4LnJlc29sdmUoYyl9ZnVuY3Rpb24gbChhLGIsYyl7cmV0dXJuIGN3LmxpYi5ub3RlKGYuTVNHX0RFTF9GQUlMLmFzc2lnbihhLGgoYikpLCJlcnJvciIpLHgucmVqZWN0KGEsYixjKX19fSxFZFN3aXRjaDpmdW5jdGlvbigpe3ZhciB4PXRoaXMsYT14LmRhdGE7aWYoL14oX2Rlc2lnbl9kb2NzfF9sb2NhbF9kb2NzfCkkLy50ZXN0KGEudmlldykpcmV0dXJuIHguRWRpdG9yLmxlbmd0aD0wLHZvaWQgMDtpZigiX2QiPT1hLnZpZXcudG8oMikpe3ZhciBiPXguVmlbYS52aWV3XTtpZighKGY9eC5WaUVkcylbYS52aWV3XXx8ZlthLnZpZXddLnJldiE9Yi5yZXYpe3ZhciBjPWEudmlldy5zcGxpdCgi77+9Iik7ZlthLnZpZXddPXtkZG9jOmNbMF0sbmFtZTpjWzFdLHJldjpiLnJldix0eXBlOiJ2aWV3Iixtb2RlOlsibWFwIl0sbGFuZ3VhZ2U6ImpzIj09Yi50eXBlPyJqYXZhc2NyaXB0IjpiLnR5cGUsbWFwOmIudmlldy5tYXB8fCIiLHJlZHVjZTpiLnZpZXcucmVkdWNlfHwiIixqc29uOnt9LGVycm9yczpbXSxzdGFtcDpEYXRlLm5vdygpfX14LkVkaXRvclswXSE9ZlthLnZpZXddJiYoeC5FZGl0b3JbMF09ZlthLnZpZXddKX1lbHNlIGlmKCJfZmluZCI9PWEudmlldy50byg1KSl7dmFyIGQ9YS5tYW5nbyxlPWEudmlldy5zcGxpdCgi77+9IilbMV0rIiI7KGI9ZC5xdWVyeS5maW5kKHg9PngubmFtZT09ZSkpfHwoZT0iRGVmYXVsdCBxdWVyeSIsYj1kLnF1ZXJ5LmZpbmQoeD0+eC5uYW1lPT1lKSksZC5hY3RpdmU9ZSxiLnN0YW1wfHwoYi5zdGFtcD1EYXRlLm5vdygpLGIudGV4dD14LkRlZmF1bHRNYW5nb1FyeS50ZXh0KSx4LkVkaXRvclswXSE9YiYmKHguRWRpdG9yPVtiXSxiLmpzb249eC5qc2V2YWwoYi50ZXh0KSxPYmplY3QuaXNPYmplY3QoYi5qc29uKXx8KGIuanNvbj17fSkpfWVsc2UgaWYoIl9zcWwiPT1hLnZpZXcudG8oNCkpe2Q9YS5zcWwsZT1hLnZpZXcuc3BsaXQoIu+/vSIpWzFdKyIiOyhiPWQucXVlcnkuZmluZCh4PT54Lm5hbWU9PWUpKXx8KGU9IkRlZmF1bHQgU1FMIixiPWQucXVlcnkuZmluZCh4PT54Lm5hbWU9PWUpKSxiLnR5cGU9InNxbCIsZC5hY3RpdmU9ZSxiLnN0YW1wfHwoYi5zdGFtcD1EYXRlLm5vdygpLGIudGV4dD14LkRlZmF1bHRTcWxRcnkudGV4dCxiLmpzb249eC5EZWZhdWx0U3FsUXJ5Lmpzb24pLHguRWRpdG9yWzBdIT1iJiYoeC5FZGl0b3I9W2JdLE9iamVjdC5pc09iamVjdChiLmpzb24pfHwoYi5qc29uPXt9KSl9ZWxzZSBpZigiX2lkeCI9PWEudmlldy50byg0KSl7dmFyIGY7Yj14LlZpW2Eudmlld118fE9iamVjdC5jbG9uZSh4LkRlZmF1bHRNYW5nb0lkeCwhMCk7aWYoIShmPXguVmlFZHMpW2Eudmlld118fGZbYS52aWV3XS5yZXYhPWIucmV2KXtjPWEudmlldy5zcGxpdCgi77+9Iik7ZlthLnZpZXddPXtkZG9jOiJfZGVzaWduLyIrY1swXS5zcGxpdCgiLyIpWzFdLG5hbWU6Y1sxXSxyZXY6Yi5yZXYsdHlwZToiaW5kZXgiLG1vZGU6WyJqYXZhc2NyaXB0Il0sdGV4dDpiLnZpZXc/Yi52aWV3LnNvdXJjZTpiLnRleHQsanNvbjp7fSxlcnJvcnM6W10sc3RhbXA6RGF0ZS5ub3coKX19eC5FZGl0b3JbMF0hPWZbYS52aWV3XSYmKHguRWRpdG9yWzBdPWZbYS52aWV3XSl9cmV0dXJuIGEuZ3JpZCYmeC5teS5yZXN0eWxlKCkseC5FZGl0b3JbMF19LEdldERkb2NzSW5mbzpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXMsYz0oYi5kYXRhLGF8fFtdKSxkPXgubWFwKGZ1bmN0aW9uKHgpe3JldHVybiBPYmplY3QuaXNPYmplY3QoeCk/JC5leHRlbmQoITAse30sT2JqZWN0LnJlamVjdCh4LFsiaW5jbHVkZV9kb2NzIl0pKTp4fSksZT17fSxmPSQuRGVmZXJyZWQoKTtyZXR1cm4gYi5SZXEoe3VybDpkLGhlYWRlcnM6eyJDb250ZW50LXR5cGUiOiJhcHBsaWNhdGlvbi9qc29uIn0sbWV0aG9kOmMubGVuZ3RoPyJwb3N0IjoiZ2V0IixkYXRhOmMubGVuZ3RoP0pTT04uc3RyaW5naWZ5KHtrZXlzOmN9KTpudWxsfSkudGhlbihmdW5jdGlvbihhKXt2YXIgYz1bXTsoYS5yb3dzfHxbXSkuZm9yRWFjaChmdW5jdGlvbihhKXtjLnB1c2goYi5SZXEoe3VybDpbeFswXSxhLmlkLCJfaW5mbyJdLGhlYWRlcnM6eyJDb250ZW50LXR5cGUiOiJhcHBsaWNhdGlvbi9qc29uIn19KSl9KSxRLmFsbFNldHRsZWQoYykudGhlbihmdW5jdGlvbih4KXsoeHx8W10pLmZvckVhY2goZnVuY3Rpb24oeCl7aWYoImZ1bGZpbGxlZCI9PXguc3RhdGUpe3ZhciBhPXgudmFsdWUudmlld19pbmRleCxiPU9iamVjdC5zZWxlY3QoYS5zaXplc3x8e2FjdGl2ZTphLmRhdGFfc2l6ZXx8MCxmaWxlOmEuZGlza19zaXplfHwwfSxbImFjdGl2ZSIsImZpbGUiXSk7ZVsiX2Rlc2lnbi8iK3gudmFsdWUubmFtZV09e3ZhbHVlOntzaXplczpifSx2aWV3X2luZGV4OmF8fHt9fX19KSxmLnJlc29sdmUoZSl9KX0pLGYucHJvbWlzZSgpfX0sR2V0Vmlld3M6ZnVuY3Rpb24oeCxhLGIpe3ZhciBjPXRoaXMsZD1jLmRhdGEsZT1PYmplY3QuaXNTdHJpbmcsZj1PYmplY3QuaXNPYmplY3QsZz1PYmplY3QuaXNBcnJheSxoPShPYmplY3QuaXNGdW5jdGlvbixkLnBhdGhbMF0pLGk9W2gsIl9hbGxfZG9jcyIse3N0YXJ0a2V5OiJfZGVzaWduIixlbmRrZXk6Il9kZXNpZ24wIixpbmNsdWRlX2RvY3M6ITB9XSxqPWMuRGVmYXVsdFZpZXdzKCksaz1jLmxhbmcuT1BUX01JTkRJQ0VTLGw9ai5maW5kKHg9PngudGV4dD09ayksbT17fSxuPSQuRGVmZXJyZWQoKTtyZXR1cm4gYj8oai5yZW1vdmUobCksYy5WaWV3cy5mb3JFYWNoKGZ1bmN0aW9uKHgpeyF4LmNoaWxkcmVufHwiXyIhPXgudGV4dFswXSYmIk1hbmdvIiE9eC50ZXh0LnRvKDUpfHxqLnB1c2goeCl9KSxjLlZpZXdzPWouc29ydEJ5KGZ1bmN0aW9uKHgpe3JldHVybih4Lm9yZGVyfHwiIikreC50ZXh0fSkseCYmKGMuc2VsZWN0MihjLm15LmZpbmQoIiN2aWV3LW5hbWUiKSx7ZGF0YTpqLGRyb3Bkb3duQ3NzQ2xhc3M6InRhbGwiLGZvcm1hdFNlbGVjdGlvbjpjLmZvcm1hdFNlbDIsbWluaW11bVJlc3VsdHNGb3JTZWFyY2g6MTJ9KSxjLm15LnJlY2FsYygiI3ZpZXctbmFtZSIpKSxuLnJlc29sdmUoKSxqKTpjLlBlbmRpbmcuX3ZpZXdsaXN0PyhuLnJlc29sdmUoKSxjLlBlbmRpbmcuX3ZpZXdsaXN0KTooYy5QZW5kaW5nLl92aWV3bGlzdD1uLnByb21pc2UoKSxjLlJlcShpKS50aGVuKGZ1bmN0aW9uKHgpe3ZhciBhPXgucm93c3x8W107aWYoIWEubGVuZ3RoJiYiX2ZpbmQiIT1kLnZpZXcudG8oNSkpcmV0dXJuIGMuY2hhbmdlVmlldygiIiwhMCksdm9pZCAwO2EuZm9yRWFjaChmdW5jdGlvbih4KXt2YXIgYT14LmRvYztpZihhKXt2YXIgYj1hLnZpZXdzfHx7fSxkPWEuX3JldixpPU9iamVjdC5rZXlzKGIpLGs9e3RleHQ6eC5pZCxjaGlsZHJlbjpbXX0sbj1lKGEubGFuZ3VhZ2UpP2EubGFuZ3VhZ2U6ImphdmFzY3JpcHQiO2MuRGRvY3NbYS5faWRdJiZjLkRkb2NzW2EuX2lkXS5fcmV2PT1hLl9yZXZ8fChjLkRkb2NzW2EuX2lkXT0kLmV4dGVuZCghMCx7fSxhKSksaS5sZW5ndGgmJihpLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGM9YlthXTtpZigicXVlcnkiIT1uKXtpZighZihjKXx8IWUoYy5tYXApfHwhYy5tYXApcmV0dXJuO3ZhciBpPXtpZDpyPXguaWQrIu+/vSIrYSx0ZXh0OiLCoMKgIithfSxqPXtwYXRoOltoLCJfZGVzaWduIix4LmlkLnNwbGl0KCIvIilbMV0sIl92aWV3IixhXSxyZXY6ZCxyZWR1Y2U6ITEsdHlwZToianMifTsiamF2YXNjcmlwdCIhPW4mJihqLnR5cGU9bixpLnRleHQrPSLCoCgiK24udGl0bGVpemUoKSsiKSIpLGoudmlldz1PYmplY3QuY2xvbmUoYywhMCk7dmFyIG89Yy5yZWR1Y2UscD0iIixxPSIiO2UobykmJm8mJigiXyI9PW9bMF0mJihwPW8uZnJvbSgxKSksKHE9InN1bSI9PXA/Is6jIjoiY291bnQiPT1wPyIjIjoibWluIj09cD8i4oq7IjoibWF4Ij09cD8i4oq8Ijoic3RhdHMiPT1wPyI9Ijoic3Vtc3FyIj09cD8izqPCsiI6InJlZHVjZSIpJiYoaS50ZXh0Kz0i4oCJ4oeS4oCJIitxLGoucmVkdWNlPSEwKSksay5jaGlsZHJlbi5wdXNoKGkpLG1bcl09an1lbHNlIGlmKGwmJiJxdWVyeSI9PW4pe2lmKCEoZihjKSYmZihjLm1hcCkmJmYoYy5tYXAuZmllbGRzKSYmZihjLm9wdGlvbnMpJiZmKGMub3B0aW9ucy5kZWYpJiZnKGMub3B0aW9ucy5kZWYuZmllbGRzKSkpcmV0dXJuO3ZhciByLHM9eC5pZC5zcGxpdCgiLyIpWzFdO2k9e2lkOnI9Il9pZHgvIitzKyLvv70iK2EsdGV4dDoiwqDCoCIrYSsiwqBpbsKgX2QvIitzLG9yZGVyOiJfMSJ9OyhqPXtwYXRoOltoLCJfZGVzaWduIix4LmlkLnNwbGl0KCIvIilbMV0sIl92aWV3IixhXSxyZXY6ZCxyZWR1Y2U6ITEsdHlwZToiIn0pLnZpZXc9T2JqZWN0LmNsb25lKGMsITApO3ZhciB0PWMub3B0aW9ucy5kZWY7ai52aWV3LnNvdXJjZT1bIih7IiwiXG5cdGluZGV4OiB7IiwiXG5cdFx0ZmllbGRzOiBbezF9XSIsdC5wYXJ0aWFsX2ZpbHRlcl9zZWxlY3Rvcj8iLFxuXHRcdHBhcnRpYWxfZmlsdGVyX3NlbGVjdG9yOiAiK0pTT04uc3RyaW5naWZ5KHQucGFydGlhbF9maWx0ZXJfc2VsZWN0b3IsbnVsbCwiXHQiKS5saW5lcygpLm1hcChmdW5jdGlvbih4LGEpe3JldHVybihhPyJcdFx0IjoiIikreH0pLmpvaW4oIlxuIik6IiIsJ1xuXHR9LFxuXHRuYW1lOiB7Mn0sXG5cdGRkb2M6IHszfSxcblx0dHlwZTogImpzb24iJywiXG59KSJdLmpvaW4oIiIpLmFzc2lnbih0LmZpZWxkcy5tYXAoSlNPTi5zdHJpbmdpZnkpLmpvaW4oIiwgIiksSlNPTi5zdHJpbmdpZnkoYSksSlNPTi5zdHJpbmdpZnkoeC5pZC5zcGxpdCgiLyIpLmZyb20oMSkuam9pbigiLyIpKSksbVtyXT1qLGwuY2hpbGRyZW4ucHVzaChpKX19KSxrLmNoaWxkcmVuLmxlbmd0aCYmKGsuY2hpbGRyZW49ay5jaGlsZHJlbi5zb3J0QnkoInRleHQiKSxqLnB1c2goaykpKX19KSxqPWouc29ydEJ5KGZ1bmN0aW9uKHgpe3JldHVybih4Lm9yZGVyfHwiIikreC50ZXh0fSksbCYmKGwuY2hpbGRyZW49bC5jaGlsZHJlbi5zb3J0QnkoZnVuY3Rpb24oeCl7cmV0dXJuKHgub3JkZXJ8fCIiKSt4LnRleHR9KSl9KS5mYWlsKGZ1bmN0aW9uKHgsYixkKXthfHxjdy5saWIubm90ZShjLmxhbmcuRVJSX0dFVFZJRVdTLmFzc2lnbihoKSwiZXJyb3IiKX0pLmFsd2F5cyhmdW5jdGlvbigpe2MuUGVuZGluZy5fdmlld2xpc3Q9bnVsbCxjLlZpZXdzPWosYy5WaT1tLCFkLnZpZXd8fG1bZC52aWV3XXx8Il9maW5kIj09ZC52aWV3LnRvKDUpfHwiX3NxbCI9PWQudmlldy50byg0KXx8L15fKGRlc2lnbl9kb2NzfGxvY2FsX2RvY3N8Y2hhbmdlc3xjb25mbGljdHMpJC8udGVzdChkLnZpZXcpfHxjLmNoYW5nZVZpZXcoIiIsITApLHgmJihjLnNlbGVjdDIoYy5teS5maW5kKCIjdmlldy1uYW1lIikse2RhdGE6aixkcm9wZG93bkNzc0NsYXNzOiJ0YWxsIixmb3JtYXRTZWxlY3Rpb246Yy5mb3JtYXRTZWwyLG1pbmltdW1SZXN1bHRzRm9yU2VhcmNoOjEyfSksYy5teS5yZWNhbGMoIiN2aWV3LW5hbWUiKSxjLm15LmNoZWNrKCIjdmlldy1uYW1lIikpLG4ucmVzb2x2ZShqKX0pLG4ucHJvbWlzZSgpKX0sR2V0VmlldzpmdW5jdGlvbih4LGEpe3ZhciBiLGM9T2JqZWN0LmlzQXJyYXksZD1PYmplY3QuaXNPYmplY3QsZT1KU09OLnN0cmluZ2lmeSxmPWN3LmxpYi5qc29uLGc9dGhpcyxoPWcuZGF0YSxpPWgucGF0aFswXSxqPXtsaW1pdDoxMDAsdXBkYXRlX3NlcTohMH0saz1oLnZpZXcsbD1nLlZpW2gudmlld10/Zy5WaVtoLnZpZXddLnBhdGguc2xpY2UoMCk6W2ksaC52aWV3KyIifHwiX2FsbF9kb2NzIl0sbT0iZ2V0IixuPXt9LG89Il9maW5kIj09ay50byg1KSxwPSJfc3FsIj09ay50byg0KSxxPSJfaWR4Ij09ay50byg0KSxyPSJfZGVzaWduX2RvY3MiPT1rLHM9Il9sb2NhbF9kb2NzIj09ayx0PSJfY2hhbmdlcyI9PWssdT0iX2NvbmZsaWN0cyI9PWssdj1jKGEpJiYhbz9hLnNsaWNlKDApOltdLHc9ISF2Lmxlbmd0aCx5PW51bGwsej0oJC5EZWZlcnJlZCgpLFtdKSxBPXt9LEI9e30sQz0hMSxEPShnLkluZGV4LCIiKSxFPTAsRj0wLEc9MzAsSD03MDtmdW5jdGlvbiBJKCl7aWYoaC5ncmlkJiYhciYmIXUmJiF0KXt2YXIgeD1oLmNvbHVtbnMrIiI7eCYmIi52YWx1ZSIhPXgmJiIuZG9jIiE9eHx8KGguY29sdW1ucz1nLmRlcml2ZUdyaWRDb2x1bW5zKCkpLGcuYnVpbGRHcmlkQ29sdW1ucygpfWguZ3JpZD8oZy5teS5yZWNhbGMoIiN2aWV3LWdyaWQtY29scyIpLGcubXkuY2hlY2soIiN2aWV3LWdyaWQtY29scyIpLGcubXkuY2hlY2suZGVsYXkoMjAsIiNncmlkLXByb3h5IiksZy5teS5yZXN0eWxlLmRlbGF5KDEwKSk6KGcubXkuY2hlY2soIiNzdGF0ZS1wcm94eSIpLGcubXkucmVzdHlsZSgpKX12YXIgSj1sO2lmKHImJihnLlBobyhbIkNvdWNoIiwidmVyIl0pPCIwMDIuMDAwIiYmKGxbMV09Il9hbGxfZG9jcyIsaltoLnJldmVyc2U/ImVuZGtleSI6InN0YXJ0a2V5Il09Il9kZXNpZ24vIixqW2gucmV2ZXJzZT8ic3RhcnRrZXkiOiJlbmRrZXkiXT0iX2Rlc2lnbjAiKSxqLmluY2x1ZGVfZG9jcz0hMCksdSl3PSExLGxbMV09Il9maW5kIixtPSJwb3N0IixuPXtuYW1lOiJDb25mbGljdHMiLGpzb246e3NlbGVjdG9yOntfY29uZmxpY3RzOnskZXhpc3RzOiEwfX0sY29uZmxpY3RzOiEwLGZpZWxkczpbIl9pZCIsIl9yZXYiLCJfY29uZmxpY3RzIiwidHlwZSIsIm5hbWUiXX19LHk9ZSgkLmV4dGVuZCghMCx7fSx7bGltaXQ6TWF0aC5hYnMoK2gubGltaXQpKzEsc2tpcDovXl9cZCskLy50ZXN0KGguc3RhcnQpPytoLnN0YXJ0LmZyb20oMSk6MH0sbi5qc29uKSksaj17fTtlbHNlIGlmKG98fHApdz0hMSxsWzFdPSJfZmluZCIsbT0icG9zdCIsbj1nLkVkaXRvclswXXx8aFtwPyJzcWwiOiJtYW5nbyJdLnF1ZXJ5LmZpbmQoeD0+eC5uYW1lPT1rLmZyb20oNikpfHxoW3A/InNxbCI6Im1hbmdvIl0ucXVlcnkuZmluZCh4PT54Lm5hbWU9PSJEZWZhdWx0ICIrKHA/IlNRTCI6InF1ZXJ5IikpLHk9ZSgkLmV4dGVuZCghMCx7fSx7bGltaXQ6TWF0aC5hYnMoK2gubGltaXQpKzEsc2tpcDovXl9cZCskLy50ZXN0KGguc3RhcnQpPytoLnN0YXJ0LmZyb20oMSk6MH0sbi5qc29uKSksaj17fTtlbHNle2lmKGgucmV2ZXJzZV50JiYhdyYmKGouZGVzY2VuZGluZz0hMCksai5saW1pdD1NYXRoLmFicygraC5saW1pdCkrMSxoLnN0YXJ0KWlmKC9eX1xkKyQvLnRlc3QoaC5zdGFydCkpai5za2lwPStoLnN0YXJ0LnN1YnN0cigxKXx8MDtlbHNle3RyeXtiPUpTT04ucGFyc2UoaC5zdGFydCl9Y2F0Y2goeCl7fWouc3RhcnRrZXk9dm9pZCAwIT09Yj9iOmguc3RhcnR9KCFrfHxzKSYmKGguaW5jbHx8W10pLmluZGV4T2YoImRvY3MiKT4tMSYmKGouaW5jbHVkZV9kb2NzPSEwKSx0JiYoai5zdHlsZT0iYWxsX2RvY3MiLGRlbGV0ZSBqLnVwZGF0ZV9zZXEsai5zdGFydGtleSYmKGouc2luY2U9ai5zdGFydGtleSxkZWxldGUgai5zdGFydGtleSkpLCFxJiZnLlZpW2tdJiZnLlZpW2tdLnJlZHVjZT8oRD1oLnJlZHVjZSsiIik/IjAiPT1EP2ouZ3JvdXA9ITE6Ijk5Ij09RD9qLmdyb3VwPSEwOmouZ3JvdXBfbGV2ZWw9K0Q6ai5yZWR1Y2U9ITE6cSYmKGoucmVkdWNlPSExLCJfaWR4L++/vSI9PWsudG8oNikmJihsWzFdPSJfYWxsX2RvY3MiKSksai5yZWR1Y2UmJih3PSExKSx3JiYobT0icG9zdCIseT1lKHtrZXlzOnYuc29ydCgpLnVuaXF1ZSgpfSksZGVsZXRlIGouc3RhcnRrZXksZGVsZXRlIGouZW5ka2V5LGRlbGV0ZSBqLnNraXApfXZhciBLPUouY29uY2F0KFtqXSksTD1lKEspO2lmKGguZ3JpZCYmZy5jbG9zZUF1dG9jb21wbGV0ZXMoKSwhZy5QZW5kaW5nW0xdKXtTLmRlbGF5KDgwLCEwKSxoLmR1cj0wLGguc2l6ZT0wO3ZhciBNPSQuRGVmZXJyZWQoKTt6LnB1c2goTS5wcm9taXNlKCkpLE0ucmVzb2x2ZS5kZWxheShIKSxFPURhdGUubm93KCksei5wdXNoKGcuUmVxKHt1cmw6SyxoZWFkZXJzOnsiQ29udGVudC10eXBlIjoiYXBwbGljYXRpb24vanNvbiJ9LG1ldGhvZDptLGRhdGE6eSxkYXRhVHlwZToidGV4dCJ9KS50aGVuKGZ1bmN0aW9uKHgpe2guZHVyPURhdGUubm93KCktRSxGPXVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudCh4KSkubGVuZ3RoLEI9SlNPTi5wYXJzZSh4KX0pLmZhaWwoZnVuY3Rpb24oeCxhLGIpe2guZHVyPURhdGUubm93KCktRSxCPXtjb2RlOngsZXJyOmEsbXNnOmJ9fSkpLHImJnoucHVzaChnLkdldERkb2NzSW5mbyhLLHc/djpudWxsKS50aGVuKGZ1bmN0aW9uKHgpe0E9eH0pKSxnLlBlbmRpbmdbTF09US5hbGxTZXR0bGVkKHopLnRoZW4oZnVuY3Rpb24oYSl7aWYoZy5QZW5kaW5nW0xdPW51bGwsaC5zaXplPUYsImZ1bGZpbGxlZCIhPWFbMV0uc3RhdGUpcmV0dXJuIGcuUmVzdWx0WzBdPXtyb3dzOltdLHVybDpMLGNvZGU6Qi5jb2RlLHN0YW1wOkRhdGUubm93KCkrIiIsb2s6ITEsZXJyb3I6Qi5lcnIsbXNnOkIubXNnfSxnLlJvd3M9W10sZy5FcnJvcj0iRXJyb3IgIitCLmNvZGUrIjogIitCLmVycisoQi5tc2cuZXJyb3I/IiwgIitCLm1zZy5lcnJvcjoiIikseCYmSS5kZWxheShHKSxnLlJlc3VsdFswXTtpZihnLkVycm9yPSIiLGcuRmllbGRzPVtdLGcuUmVzdWx0WzBdPU9iamVjdC5jbG9uZShCLCEwKSxvfHx1fHxwP1IoQik6cT9QKEIpOnQ/TyhCKTpOKEIpLHImJkIucm93cyl7dmFyIGI9e307Qi5yb3dzLmZvckVhY2goeD0+Ylt4LmlkXT14LnZhbHVlKSxnLlJlc3VsdFswXS5yb3dzLmZvckVhY2goZnVuY3Rpb24oeCl7Ylt4LmlkXSYmKHgudmFsdWU9T2JqZWN0LnJlamVjdChiW3guaWRdLC9eXy8pKX0pfWcuaXNFbXB0eT0hZy5Sb3dzLmxlbmd0aCwhaC5ncmlkfHx0fHxyfHx1fHxnLmJ1aWxkRmllbGRzTGlzdCgpLHgmJihnLm15LmZpbmQoIiNidG4tdmlld2NvZGUiKS5kYXRhKCJtb2RhbCIpJiZnLm15Lm1vZGFsKCIjYnRuLXZpZXdjb2RlIiwhMCksSS5kZWxheShHKSl9KS50aGVuKHg9PlMuZGVsYXkoKEgtOS1EYXRlLm5vdygpK0UpLmNsYW1wKDEsSCksITEpKX1yZXR1cm4gZy5QZW5kaW5nW0xdO2Z1bmN0aW9uIE4oeCl7eC5zdGFtcD1EYXRlLm5vdygpKyIiLHgudXJsPUorIiIsaC50b3RhbF9yb3dzPXgudG90YWxfcm93c3x8LTEsaC5vZmZzZXQ9eC5vZmZzZXR8fC0xLGguc2VxPSh4LnVwZGF0ZV9zZXF8fERhdGUubm93KCkpKyIiO3ZhciBhPVsiZmlsdGVycyIsInZpZXdzIiwibGlzdHMiLCJzaG93cyIsImFwaSIsImhvb2tzIiwicmV3cml0ZXMiLCJzaXplcyJdO3JldHVybiB4LnJvd3MuZm9yRWFjaChmdW5jdGlvbih4LGEpe3ImJmooeCkseC5fdmpzb249ZihPYmplY3QucmVqZWN0KHgscj9bImtleSIsImRvYyJdOlsia2V5Il0pLCIgICIpLmZyb20oMikseC5fa2pzb249J3tcbiAgImtleSI6ICcrZSh4LmtleSkrIixcbiIseC5faWR4PWUoW3gua2V5LHguaWQsYV0pLHguX2lkeHNhZmU9eC5faWR4LmVzY2FwZUhUTUwoKX0pLGcuUm93cz13P2koeC5yb3dzfHxbXSxnLlJvd3MpOih4LnJvd3N8fFtdKS5zbGljZSgwKSxoLmxpbms9Zy5SZXEoSywhMCkseDtmdW5jdGlvbiBiKHgpe3JldHVybiJ7MX0gTE9DLCB7Mn0gY2hhcnMiLmFzc2lnbih4LmxpbmVzKCkubGVuZ3RoLHgubGVuZ3RoKX1mdW5jdGlvbiBpKHgsYSl7dmFyIGI9eC5yZWR1Y2UoZnVuY3Rpb24oeCxhKXtyZXR1cm4geFtlKGEua2V5KSsiXG4iK2UoYS5pZCldPWEseH0se30pO3JldHVybiBhLm1hcChmdW5jdGlvbih4KXt2YXIgYT1iW2UoeC5rZXkpKyJcbiIrZSh4LmlkKV07cmV0dXJuIHZvaWQgMCE9PWE/YTp4fSl9ZnVuY3Rpb24gaih4KXt2YXIgZT14LnZhbHVlLnJldjt4LmRlc2M9Ikxpc3Qgb2YgZGRvYyBmdW5jdGlvbnMiLHgubGFuZ3VhZ2U9eC5kb2MubGFuZ3VhZ2V8fCJqYXZhc2NyaXB0Iix4LnZhbHVlPSQuZXh0ZW5kKHtyZXY6ZX0sT2JqZWN0LnNlbGVjdCh4LmRvYyxhKSksYS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBlPXgudmFsdWVbYV07InN0cmluZyI9PXR5cGVvZiBlP3gudmFsdWVbYV09YihlKTpjKGUpP3gudmFsdWVbYV09IkFycmF5W3sxfV0iLmFzc2lnbihlLmxlbmd0aCk6ZChlKSYmInZpZXdzIj09YT94LnZhbHVlW2FdPU9iamVjdC5rZXlzKHgudmFsdWVbYV0pLnJlZHVjZShmdW5jdGlvbihjLGUpe3ZhciBmPXgudmFsdWVbYV1bZV0sZz1mLm1hcCxoPWYucmVkdWNlO3JldHVybiJzdHJpbmciPT10eXBlb2YgZz8oY1tlXT0iTWFwOiAiK2IoZyksInN0cmluZyI9PXR5cGVvZiBoJiYoY1tlXSs9IjsgUmVkdWNlOiAiKygiXyI9PWhbMF0/aDpiKGgpKSkpOiJxdWVyeSI9PXgubGFuZ3VhZ2UmJmQoZykmJihjW2VdPSJNYW5nbyBpbmRleCIsZChnLmZpZWxkcykmJihjW2VdKz0iLCBmaWVsZHM6ICIrT2JqZWN0LmtleXMoZy5maWVsZHMpLmpvaW4oIiwgIikpKSxjfSx7fSk6ZChlKSYmKHgudmFsdWVbYV09T2JqZWN0LmtleXMoeC52YWx1ZVthXSkucmVkdWNlKGZ1bmN0aW9uKGMsZCl7dmFyIGU9eC52YWx1ZVthXVtkXTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGUmJihjW2RdPWIoZSkpLGN9LHt9KSl9KSwkLmV4dGVuZCghMCx4LEFbeC5pZF18fHt9KX19ZnVuY3Rpb24gTyh4KXt4LnN0YW1wPURhdGUubm93KCkrIiIseC51cmw9SisiIixoLnRvdGFsX3Jvd3M9LTEsaC5vZmZzZXQ9eC5vZmZzZXR8fC0xLGguc2VxPXgubGFzdF9zZXErIiI7dmFyIGE9eC5yZXN1bHRzLm1hcChmdW5jdGlvbih4LGEpe3JldHVybntpZDp4LmlkLGtleTp4LmlkLHZhbHVlOiQuZXh0ZW5kKHguZGVsZXRlZD97ZGVsZXRlZDohMH06e30se3NlcTooeC5zZXErIiIpLnNwbGl0KCItIilbMF0scmV2OnguY2hhbmdlc1swXS5yZXZ9KSxfdmpzb246Zih4LCIgICIpLmZyb20oMSksX2tqc29uOiJ7IixfaWR4OmUoeC5pZCksX2lkeHNhZmU6ZSh4LmlkKS5lc2NhcGVIVE1MKCksX2RlbDp4LmRlbGV0ZWQ/eC5jaGFuZ2VzWzBdLnJldjoiIn19KTtyZXR1cm4gZy5Sb3dzPShhfHxbXSkuc2xpY2UoMCksaC5saW5rPWcuUmVxKEssITApLHh9ZnVuY3Rpb24gUCh4KXtyZXR1cm4geC5zdGFtcD1EYXRlLm5vdygpKyIiLHgudXJsPUorIiIsaC50b3RhbF9yb3dzPXgudG90YWxfcm93c3x8LTEsaC5vZmZzZXQ9eC5vZmZzZXR8fC0xLGguc2VxPSh4LnVwZGF0ZV9zZXF8fERhdGUubm93KCkpKyIiLHgucm93cy5mb3JFYWNoKGZ1bmN0aW9uKHgsYSl7eC5fdmpzb249Zih4LCIgICIpLmZyb20oMikseC5fa2pzb249IntcbiIseC5faWR4PWUoW3gua2V5LHguaWQsYV0pLHguX2lkeHNhZmU9eC5faWR4LmVzY2FwZUhUTUwoKX0pLGcuUm93cz0oeC5yb3dzfHxbXSkuc2xpY2UoMCksaC5saW5rPWcuUmVxKEssITApLHh9ZnVuY3Rpb24gUih4KXt4LnN0YW1wPURhdGUubm93KCkrIiIseC51cmw9SisiIixoLnRvdGFsX3Jvd3M9LTEsaC5vZmZzZXQ9bi5za2lwfHwtMSxoLnNlcT0oeC51cGRhdGVfc2VxfHxEYXRlLm5vdygpKSsiIjt2YXIgYT0vXl9cZCskLy50ZXN0KGguc3RhcnQpPytoLnN0YXJ0LmZyb20oMSk6MCxiPXguZG9jcy5tYXAoZnVuY3Rpb24oeCxiKXt2YXIgYz14Ll9pZD8oaSsiLyIreC5faWQpLmVzY2FwZUhUTUwoKToiIjtyZXR1cm57aWQ6YStiKyIiLGtleTphK2IrIiIsdmFsdWU6eCxocmVmOmMsX3Zqc29uOmYoeCwiICAiKS5mcm9tKDEpLF9ranNvbjoieyIsX2lkeDplKFthK2JdKSxfaWR4c2FmZTplKFthK2JdKS5lc2NhcGVIVE1MKCksX2hhc3VybDpjPyJidG4tb3Blbi1kb2MgcHNldWRvbGluayB0ZG4iOiIifX0pO3JldHVybiBnLlJvd3M9KGJ8fFtdKS5zbGljZSgwKSxoLmxpbms9Zy5SZXEoSywhMCkseH1mdW5jdGlvbiBTKHgpeyh4JiYhQ3x8IXgpJiYoZy5teSYmZy5teS5yb290KCkudG9nZ2xlQ2xhc3MoImFwcC1idXN5Iix4KSwkLm15LnJhZGlvKCJhcHBidXN5Iix7aWQ6aC50YWJpZCxidXN5Onh9KSksQz0hMH19LEdyaWRDb2x1bW46ZnVuY3Rpb24oKXt2YXIgeD10aGlzO3JldHVybntSVDp4LlJULHVwZGF0ZUdyaWRGcm9tQ29sdW1uczp4LnVwZGF0ZUdyaWRGcm9tQ29sdW1ucyxpZDoiY3cuUGhvdG9uLiR2aWV3LkdyaWRDb2x1bW4iLGRhdGE6e2lkOiIiLHJhdzoiIixjb2xzOiIuaWQiLGNhc3Q6IiJ9LHVpOnsiLmdyaWQtY29sdW1uLXB0ciI6e2RlbGF5OjEwLGluaXQ6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcztmdW5jdGlvbiBjKGEsYil7eC5teS5maW5kKCIuZ3JpZC1jb2x1bW4tcHRyIikudHJpZ2dlcigiYmx1ciIpfWZ1bmN0aW9uIGQoYSxjKXtpZighYS50ZXJtKXJldHVybiBjKGIuRmllbGRzKCkpO3ZhciBkPWIuRmllbGRzKCk7aWYoL1xzXC9bYS16MC05XXswLDZ9JC8udGVzdChhLnRlcm0pKXt2YXIgZT1hLnRlcm0ucmVwbGFjZSgvXHNcL1thLXowLTldezAsNn0kLywiIiksZj14LlJUKCkuRi5HcmlkQ2FzdDtjKFtkWzBdXS5jb25jYXQoT2JqZWN0LmtleXMoZikubWFwKGZ1bmN0aW9uKHgpe3JldHVybntsYWJlbDoiLyIreCx2YWx1ZTplKyIgLyIreH19KSkpfWVsc2V7dmFyIGc9bmV3IFJlZ0V4cChSZWdFeHAuZXNjYXBlKGEudGVybSksImkiKTtjKFtkWzBdXS5jb25jYXQoZC5zbGljZSgxKS5maWx0ZXIoZnVuY3Rpb24oeCl7cmV0dXJuIGcudGVzdCh4LnZhbHVlKX0pKSl9fWEuYXV0b2NvbXBsZXRlKHtkZWxheTowLHNvdXJjZTpkLHNlbGVjdDpjLmRlYm91bmNlKDIwKSxhcHBlbmRUbzp4Lm15LnJvb3QoKSxtaW5MZW5ndGg6MH0pLGEub24oImtleXVwLm15IixmdW5jdGlvbih4KXt2YXIgYj14LmtleUNvZGU7MTMhPWImJjEwIT1ifHxhLmJsdXIoKX0pfSxiaW5kOmZ1bmN0aW9uKHgsYSxiKXt2YXIgYz10aGlzLGQ9ITE7aWYobnVsbCE9YSl7dmFyIGU9eC5jb2xzOy9cc1wvW2Etel1bYS16MC05XXswLDV9JC8udGVzdChhKT94LmNhc3Q9YS5tYXRjaCgvXHNcL1thLXpdW2EtejAtOV17MCw1fSQvKVswXS5zdWJzdHIoMik6eC5jYXN0PSIiLHguY29scz1hLGIuYXR0cigidGl0bGUiLHguY29scy5sZW5ndGg+OD94LmNvbHM6IiIpLGQ9ZSE9YX1yZXR1cm4i4oCMIj09eC5jb2xzJiZjLm15LnJlbW92ZS5kZWxheSgxMCksZCYmYy51cGRhdGVHcmlkRnJvbUNvbHVtbnMuZGVsYXkoNTEpLHguY29sc319LCIjYnRuLWZvbGQiOntiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcyxjPWIubXkuZmluZCgiLmdyaWQtY29sdW1uLXB0ciIpLGQ9Yy5hdXRvY29tcGxldGUoIndpZGdldCIpLmlzKCI6dmlzaWJsZSIpO3JldHVybiBudWxsIT1hJiYoZD9jLmF1dG9jb21wbGV0ZSgiY2xvc2UiKTooYy5hdXRvY29tcGxldGUoInNlYXJjaCIsIiIpLGIuUlQoImNsb3NlQXV0b2NvbXBsZXRlcyIpKGMpKSxkPSFkKSwnPHNwYW4gY2xhc3M9InsxfSI+PC9zcGFuPicuYXNzaWduKGQ/ImF1cCI6ImFkb3duIil9LGV2ZW50czoiY2xpY2subXkiLHdhdGNoOlsiLmdyaWQtY29sdW1uLXB0ciJdfX0sRmllbGRzOmZ1bmN0aW9uKCl7dmFyIGE9eC5idWlsZEZpZWxkc0xpc3QoKTtyZXR1cm4geC5Db2x1bW5zLmxlbmd0aDwyJiYoYT1hLnNsaWNlKDEpKSxhfSxkaWU6ZnVuY3Rpb24oeCl7eC5maW5kKCIuZ3JpZC1jb2x1bW4tcHRyIikuYXV0b2NvbXBsZXRlKCJkZXN0cm95Iil9fX0sVDp7dmlld19ub2lkOic8ZGl2IGNsYXNzPSJ2aWV3LXJvdyIgZGF0YS1rZXk9IntfaWR4c2FmZX0iPjxkaXYgY2xhc3M9ImNvbC1pZHMiPntqaWRzYWZlfTxkaXYgY2xhc3M9InZpZXctdG9maWx0ZXIgcHNldWRvbGluayB2aWV3LWhvdmVyYnRuIG1sNSIgZGF0YS1maWx0ZXI9IntpZHNhZmV9Ij48c3BhbiBjbGFzcz0iZmktZmlsdGVyIj48L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0idmlldy1ob3ZlcmJ0biB7bm9kb2N9IHBzZXVkb2xpbmsiPjxzcGFuIGNsYXNzPSJmaS1wYWdlLWZpbGxlZCBidG4tb3Blbi1kb2MiIGRhdGEtdXJsPSJ7aHJlZn0iPjwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJjb2wtdmFscyB7Y3NzfSI+PGRpdiBjbGFzcz0iY29sLXRyaW0iPntodG1sfTwvZGl2PjwvZGl2PjwvZGl2PicsdmlldzonPGRpdiBjbGFzcz0idmlldy1yb3ciIGRhdGEta2V5PSJ7X2lkeHNhZmV9Ij48aW5wdXQgY2xhc3M9IncyMyBkaWIgdmF0IHRhYyBtbDQgbXIxIG10OCIgdHlwZT0iY2hlY2tib3giIG5hbWU9ImRvY3Mtc2VsZWN0aW9uIiB7Y2hlY2tlZH0gdmFsdWU9Intkb2NpZHNhZmV9Ij48ZGl2IGNsYXNzPSJjb2wtaWRzIHczNXAtMzAgcGwwIj48c3BhbiBjbGFzcz0ibGJsNGNoZWNrIj57amlkc2FmZX08L3NwYW4+PGRpdiBjbGFzcz0idmlldy10b2ZpbHRlciBwc2V1ZG9saW5rIHZpZXctaG92ZXJidG4gbWw1IiBkYXRhLWZpbHRlcj0ie2lkc2FmZX0iPjxzcGFuIGNsYXNzPSJmaS1maWx0ZXIiPjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSJ2aWV3LWhvdmVyYnRuIHtub2RvY30gcHNldWRvbGluayI+PHNwYW4gY2xhc3M9ImZpLXBhZ2UtZmlsbGVkIGJ0bi1vcGVuLWRvYyIgZGF0YS11cmw9IntocmVmfSI+PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9InZpZXctZWRpdHVzZXIgdmlldy1ob3ZlcmJ0biBwc2V1ZG9saW5rIiBkYXRhLXVzZXI9IntpZHNhZmV9Ij48c3BhbiBjbGFzcz0iZmktdG9yc28gZnMxMTAiPjwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJjb2wtdmFscyB7Y3NzfSI+PGRpdiBjbGFzcz0iY29sLXRyaW0iPntodG1sfTwvZGl2PjwvZGl2PjwvZGl2Picsdmlld19maWx0ZXJfbm9pZDonPGRpdiBjbGFzcz0idmlldy1yb3ciIGRhdGEta2V5PSJ7X2lkeHNhZmV9Ij48ZGl2IGNsYXNzPSJjb2wtaWRzIj48c3BhbiBjbGFzcz0ibGJsNGNoZWNrIj57aWRzYWZlZmlsdGVyfTwvc3Bhbj48ZGl2IGNsYXNzPSJ2aWV3LXRvZmlsdGVyIHBzZXVkb2xpbmsgdmlldy1ob3ZlcmJ0biBtbDUiIGRhdGEtZmlsdGVyPSJ7aWRzYWZlfSI+PHNwYW4gY2xhc3M9ImZpLWZpbHRlciI+PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9InZpZXctaG92ZXJidG4ge25vZG9jfSBwc2V1ZG9saW5rIj48c3BhbiBjbGFzcz0iZmktcGFnZS1maWxsZWQgYnRuLW9wZW4tZG9jIiBkYXRhLXVybD0ie2hyZWZ9Ij48L3NwYW4+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0iY29sLXZhbHMge2Nzc30iPjxkaXYgY2xhc3M9ImNvbC10cmltIj57aHRtbH08L2Rpdj48L2Rpdj48L2Rpdj4nLHZpZXdfZmlsdGVyOic8ZGl2IGNsYXNzPSJ2aWV3LXJvdyIgZGF0YS1rZXk9IntfaWR4c2FmZX0iPjxpbnB1dCBjbGFzcz0idzIzIGRpYiB2YXQgdGFjIG1sNCBtcjEgbXQ4IiB0eXBlPSJjaGVja2JveCIgbmFtZT0iZG9jcy1zZWxlY3Rpb24iIHtjaGVja2VkfSB2YWx1ZT0ie2RvY2lkc2FmZX0iPjxkaXYgY2xhc3M9ImNvbC1pZHMgdzM1cC0zMCBwbDAiPjxzcGFuIGNsYXNzPSJsYmw0Y2hlY2siPntpZHNhZmVmaWx0ZXJ9PC9zcGFuPjxkaXYgY2xhc3M9InZpZXctdG9maWx0ZXIgcHNldWRvbGluayB2aWV3LWhvdmVyYnRuIG1sNSIgZGF0YS1maWx0ZXI9IntpZHNhZmV9Ij48c3BhbiBjbGFzcz0iZmktZmlsdGVyIj48L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0idmlldy1ob3ZlcmJ0biB7bm9kb2N9IHBzZXVkb2xpbmsiPjxzcGFuIGNsYXNzPSJmaS1wYWdlLWZpbGxlZCBidG4tb3Blbi1kb2MiIGRhdGEtdXJsPSJ7aHJlZn0iPjwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJjb2wtdmFscyB7Y3NzfSI+PGRpdiBjbGFzcz0iY29sLXRyaW0iPntodG1sfTwvZGl2PjwvZGl2PjwvZGl2PicsbWFuZ286JzxkaXYgY2xhc3M9InZpZXctcm93IiBkYXRhLWtleT0ie19pZHhzYWZlfSI+PGRpdiBjbGFzcz0iY29sLWlkcyB7X2hhc3VybH0iIGRhdGEtdXJsPSJ7aHJlZn0iPntqaWRzYWZlfTwvZGl2PjxkaXYgY2xhc3M9ImNvbC12YWxzIHtjc3N9Ij48ZGl2IGNsYXNzPSJjb2wtdHJpbSI+e2h0bWx9PC9kaXY+PC9kaXY+PC9kaXY+Jyxkb2NzOic8ZGl2IGNsYXNzPSJ3MTAwcCB2aWV3LXJvdyI+PGlucHV0IGNsYXNzPSJ3MjMgZGliIHRhYyBtbDQgbXIxIG10OCIgdHlwZT0iY2hlY2tib3giIG5hbWU9ImRvY3Mtc2VsZWN0aW9uIiB7Y2hlY2tlZH0gdmFsdWU9IntpZHNhZmV9Ij48ZGl2IGNsYXNzPSJ3MzhwLTMwIHByMTIgcHQzIj48c3BhbiBjbGFzcz0iYnRuLW9wZW4tZG9jIHBzZXVkb2xpbmsgdGRuIGxibDRjaGVjayIgZGF0YS11cmw9IntocmVmfSI+e2ppZHNhZmV9PC9zcGFuPjxkaXYgY2xhc3M9InZpZXctdG9maWx0ZXIgdmlldy1ob3ZlcmJ0biBtbDUiIGRhdGEtZmlsdGVyPSJ7aWRzYWZlfSI+PHNwYW4gY2xhc3M9ImZpLWZpbHRlciBvNTAgYmx1ZSI+PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9InZpZXctZWRpdHVzZXIgdmlldy1ob3ZlcmJ0biIgZGF0YS11c2VyPSJ7aWRzYWZlfSI+PHNwYW4gY2xhc3M9ImZpLXRvcnNvIG81MCBmczExMCBibHVlIj48L3NwYW4+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0idzYycCBwcjEwIHBsMyBwdDMiPntyZXZ9PC9kaXY+PC9kaXY+JyxkZXNpZ25fZG9jczonPGRpdiBjbGFzcz0idzEwMHAgdmlldy1yb3ciIGRhdGEta2V5PSJ7X2lkeHNhZmV9Ij48aW5wdXQgY2xhc3M9IncyMyBkaWIgdmF0IHRhYyBtbDQgbXIxIG10OCIgdHlwZT0iY2hlY2tib3giIG5hbWU9ImRvY3Mtc2VsZWN0aW9uIiB7Y2hlY2tlZH0gdmFsdWU9IntpZHNhZmV9Ij48ZGl2IGNsYXNzPSJjb2wtaWRzIHczNXAtMzAgcHIyMCBwbDAiPjxzcGFuIGNsYXNzPSJidG4tb3Blbi1kb2MgbGJsNGNoZWNrIHBzZXVkb2xpbmsgdGRuIiBkYXRhLXVybD0ie2hyZWZ9Ij57amlkc2FmZX08L3NwYW4+PGRpdiBjbGFzcz0idmlldy10b2ZpbHRlciB2aWV3LWhvdmVyYnRuIG1sNSIgZGF0YS1maWx0ZXI9IntpZHNhZmV9Ij48c3BhbiBjbGFzcz0iZmktZmlsdGVyIG81MCBibHVlIj48L3NwYW4+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0iY29sLXZhbHMge2Nzc30iPjxkaXYgY2xhc3M9ImNvbC10cmltIj57aHRtbH08L2Rpdj48L2Rpdj48L2Rpdj4nLHVzZXJfZG9jczonPGRpdiBjbGFzcz0idzEwMHAgdmlldy1yb3cgcHQzIj48aW5wdXQgY2xhc3M9IncyMyBkaWIgdGFjIG1sNCBtcjEgcHQyIiB0eXBlPSJjaGVja2JveCIgbmFtZT0iZG9jcy1zZWxlY3Rpb24iIHtjaGVja2VkfSB2YWx1ZT0ie2lkc2FmZX0iPjxkaXYgY2xhc3M9InczOHAtMzAgcHIyMCI+PHNwYW4gY2xhc3M9ImJ0bi1vcGVuLWRvYyBsYmw0Y2hlY2sgcHNldWRvbGluayB0ZG4iIGRhdGEtdXJsPSJ7aHJlZn0iPntqaWRzYWZlfTwvc3Bhbj48ZGl2IGNsYXNzPSJ2aWV3LXRvZmlsdGVyIHZpZXctaG92ZXJidG4gbWw1IiBkYXRhLWZpbHRlcj0ie2lkc2FmZX0iPjxzcGFuIGNsYXNzPSJmaS1maWx0ZXIgbzUwIGJsdWUiPjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSJ2aWV3LWVkaXR1c2VyIHZpZXctaG92ZXJidG4iIGRhdGEtdXNlcj0ie2lkc2FmZX0iPjxzcGFuIGNsYXNzPSJmaS10b3JzbyBvNTAgZnMxMTAgYmx1ZSI+PC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9Inc2MnAgcHIxMCI+e3Jldn08L2Rpdj48L2Rpdj4nLGdyaWRfdmlldzonPHRyIGNsYXNzPSJ2aWV3LXJvdyIgZGF0YS1rZXk9IntfaWR4c2FmZX0iPjx0ZCBjbGFzcz0iZ2NvbHcwIj48aW5wdXQgY2xhc3M9IncyMyBkaWIgdmF0IHRhYyBtbDQgbXIxIG10OSIgdHlwZT0iY2hlY2tib3giIG5hbWU9ImRvY3Mtc2VsZWN0aW9uIiB7Y2hlY2tlZH0gdmFsdWU9Intkb2NpZHNhZmV9Ij48ZGl2IGNsYXNzPSJ3MTAwcC0zMCBkaWIiPjxzcGFuIGNsYXNzPSJsYmw0Y2hlY2siPntpZHNhZmVmaWx0ZXJ9PC9zcGFuPjxkaXYgY2xhc3M9InZpZXctdG9maWx0ZXIgcHNldWRvbGluayB2aWV3LWhvdmVyYnRuIG1sNSIgZGF0YS1maWx0ZXI9IntpZHNhZmV9Ij48c3BhbiBjbGFzcz0iZmktZmlsdGVyIj48L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0idmlldy1ob3ZlcmJ0biB7bm9kb2N9IHBzZXVkb2xpbmsiPjxzcGFuIGNsYXNzPSJmaS1wYWdlLWZpbGxlZCBidG4tb3Blbi1kb2MiIGRhdGEtdXJsPSJ7aHJlZn0iPjwvc3Bhbj48L2Rpdj48L2Rpdj48L3RkPntjb2x1bW5zfTwvdHI+JyxncmlkX2RvYzonPHRyIGNsYXNzPSJ2aWV3LXJvdyIgZGF0YS1rZXk9IntfaWR4c2FmZX0iPjx0ZCBjbGFzcz0iZ2NvbHcwIj48aW5wdXQgY2xhc3M9IncyMyBkaWIgdmF0IHRhYyBtbDQgbXIxIG10OSIgdHlwZT0iY2hlY2tib3giIG5hbWU9ImRvY3Mtc2VsZWN0aW9uIiB7Y2hlY2tlZH0gdmFsdWU9Intkb2NpZHNhZmV9Ij48ZGl2IGNsYXNzPSJ3MTAwcC0zMCBkaWIiPjxzcGFuIGNsYXNzPSJidG4tb3Blbi1kb2MgbGJsNGNoZWNrIHBzZXVkb2xpbmsgdGRuIiBkYXRhLXVybD0ie2hyZWZ9Ij57aWRzYWZlZmlsdGVyfTwvc3Bhbj48ZGl2IGNsYXNzPSJ2aWV3LXRvZmlsdGVyIHBzZXVkb2xpbmsgdmlldy1ob3ZlcmJ0biBtbDUiIGRhdGEtZmlsdGVyPSJ7aWRzYWZlfSI+PHNwYW4gY2xhc3M9ImZpLWZpbHRlciI+PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9InZpZXctZWRpdHVzZXIgdmlldy1ob3ZlcmJ0biIgZGF0YS11c2VyPSJ7aWRzYWZlfSI+PHNwYW4gY2xhc3M9ImZpLXRvcnNvIG81MCBmczExMCBibHVlIj48L3NwYW4+PC9kaXY+PC9kaXY+PC90ZD57Y29sdW1uc308L3RyPicsZ3JpZF9tYW5nbzonPHRyIGNsYXNzPSJ2aWV3LXJvdyIgZGF0YS1rZXk9IntfaWR4c2FmZX0iPjx0ZCBjbGFzcz0iZ2NvbHcwIj48ZGl2IGNsYXNzPSJ3MTAwcCBkaWIgcGw4IHB0NSB7X2hhc3VybH0iIGRhdGEtdXJsPSJ7aHJlZn0iPntpZHNhZmVmaWx0ZXJ9PC9kaXY+PC90ZD57Y29sdW1uc308L3RyPicsZ3JpZF9jb2x1bW46Jzx0ZCBjbGFzcz0iZ3JpZC1jb2x1bW4gY3Age2Nzc30iIGRhdGEtaWR4PSJ7aWR4fSI+PGRpdj57dmFsfTwvZGl2PjwvdGQ+J319LCRkYnM6e2lkOiJjdy5QaG90b24uJGRicyIsbGFuZzp7fSxoYXNoOmZ1bmN0aW9uKCl7cmV0dXJuImxpc3QifSx0aXRsZTpmdW5jdGlvbigpe3JldHVybiJEQiBsaXN0IGFuZCB0YXNrcyJ9LG1hdGNoOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIHgubGVuZ3RoP251bGw6e3RpdGxlOiJEQiBsaXN0IGFuZCB0YXNrcyJ9fSxpbmhlcml0OlsiQnl0ZXMiLCJNZXRyaWMiXSxkYXRhOntyZXZlcnNlOiExLHNlYXJjaDoiIixzZWxlY3Rpb246W10sb3NlbDp7fSxzdGFyczp7fSxncm91cHM6e30sdGFzazp7c2VhcmNoOiIiLGZpbHRlcjpbIiJdLGxpc3Q6W10sc2VsZWN0aW9uOltdLGZvbGQ6e30sc2VxOjB9LHNlcnZpY2U6e3ZlcnNpb246IiJ9fSxBbGw6e30sR3JvdXBzOnt9LExpc3Q6W10sQmF0Y2g6e30sVGFza3M6W10sQWxsVGFza3M6e30sTW9kYWxzOnt9LFRhc2tMb29wOiExLFRhc2tMb29wSW50ZXJ2YWw6ITEsTGFzdFN5bmM6e3NyYzp7fSx0Z3Q6e319LHVpOnsiI2RiLXNlYXJjaCI6e2RlbGF5OjE1MCxiaW5kOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIG51bGwhPWEmJih4LnNlYXJjaD1hKSx0aGlzLm15LmZpbmQoIiNkYi1saXN0IikudG9nZ2xlQ2xhc3MoImhhc3NlYXJjaCIsISF4LnNlYXJjaCkseC5zZWFyY2h9LGNzczp7Im15LXNlYXJjaCI6L14uezIsfSQvfX0sIiNidG4tcmVsb2FkIjp7YmluZDpmdW5jdGlvbih4LGEpe251bGwhPWEmJih4LnNlbGVjdGlvbi5sZW5ndGg/dGhpcy5CYXRjaEluZm8oeC5zZWxlY3Rpb24sdGhpcy5QaG8oIkNmZyIpLmJhdGNoRGJJbmZvRGVsYXkpOnRoaXMuR2V0TGlzdCghMCkpfX0sIiNidG4tdmlldy1kaXIiOntiaW5kOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIG51bGwhPWEmJih4LnJldmVyc2U9IXgucmV2ZXJzZSkseC5yZXZlcnNlPyLilrwiOiLilrIifSxldmVudHM6ImNsaWNrLm15In0sIiNidG4tc2VsZWN0Ijp7ZGVsYXk6MTAsYmluZDpmdW5jdGlvbih4LGEpe3ZhciBiLGM9dGhpcyxkPU9iamVjdC5rZXlzKGMuQWxsKSxlPWMuTGlzdC5maWx0ZXIoeD0+IXgudHlwZSkubWFwKGZ1bmN0aW9uKHgpe3JldHVybiB4Lm5hbWV9KSxmPXguc2VsZWN0aW9uLGc9Zi5pbnRlcnNlY3QoZSksaD1nLmxlbmd0aCxpPWMubGFuZztyZXR1cm4gYj1oP2kuVFhUX1VOU0VMRUNULmFzc2lnbihnLmxlbmd0aD09ZC5sZW5ndGg/aS5UWFRfU0VMRUNUX0FMTDpmLmxlbmd0aCk6aS5UWFRfU0VMRUNULmFzc2lnbihlLmxlbmd0aD09ZC5sZW5ndGg/aS5UWFRfU0VMRUNUX0FMTDplLmxlbmd0aCksbnVsbCE9YSYmKHguc2VsZWN0aW9uPWg/W106Zi5jb25jYXQoZSkudW5pcXVlKCkseC5vc2VsPWN3LmxpYi5hMm8oeC5zZWxlY3Rpb24pKSxifSxldmVudHM6ImNsaWNrLm15Iixjc3M6eyJzZWxmOmhpZGUiOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIXRoaXMuTGlzdC5sZW5ndGh9fSx3YXRjaDpbIiN2aWV3LWhhc3NlbGVjdGlvbiIsIiNkYi1wcm94eSJdfSwiI3ZpZXctY29scyI6e2RlbGVheToyMCxiaW5kOmZ1bmN0aW9uKHgsYSl7Zm9yKHZhciBiLGM9dGhpcy5MaXN0LGQ9MCxlPSh4PTAsMCk7ZTxjLmxlbmd0aDtlKyspZCs9KGI9Imdyb3VwIj09Y1tlXS50eXBlKT8wOjEseCs9Yj8wOmNbZV0uZGlza19zaXplfHwwO3JldHVybiB0aGlzLmxhbmcuVFhUX0RCU1ZJRVcoZCxPYmplY3Quc2l6ZSh0aGlzLkFsbCkseD8nPHNwYW4gY2xhc3M9ImZzODUgbzcwIHBsNiI+Jyt0aGlzLkJ5dGVzKHgpKyI8L3NwYW4+IjowKX0sd2F0Y2g6WyIjZGItcHJveHkiXX0sIiN2aWV3LWxpbmtzIjp7YmluZDpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXMuUGhvKCJCYXNlIik7cmV0dXJuWyc8YSB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9InRkbiIgaHJlZj0iezF9Ij57Mn08L2E+Jy5hc3NpZ24oYixiLnJlcGxhY2UoL15odHRwW3NdPzpcL1wvfFwvL2csIiIpLmVzY2FwZUhUTUwoKSldLmpvaW4oIuKAiSIpfX0sIiNkYi1saXN0Ijp7ZGVsYXk6NTAsaW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YS5Sb3csYz1hLlJvd0dyb3VwLGQ9YS5Ob3JtREIsZT1hLmRhdGEsZj1hLmxhbmc7ZnVuY3Rpb24gZyh4KXtyZXR1cm4geC5wYXJlbnQoKS5wYXJlbnQoKS5maW5kKCI+aW5wdXQiKS5hdHRyKCJ2YWx1ZSIpfXgubGlzdCh7ZGF0YTpbXSxkZWxheTowLGNodW5rOjEwMCxzb3J0Qnk6bnVsbCxpZDpmdW5jdGlvbih4KXtyZXR1cm4iZ3JvdXAiPT14LnR5cGU/eC5pZDp4Lm5hbWV9LGhhc2g6ZnVuY3Rpb24oeCl7cmV0dXJuImdyb3VwIj09eC50eXBlP2N3LmxpYi5zZGJtKFt4LmhlYWQseC5zdGFydCx4LmVuZCx4LmZvbGQseC5kaXNrXSk6Y3cubGliLnNkYm0oW3gubmFtZSx4LnN0YW1wLHgudXBkYXRlX3NlcSsieCIsZS5vc2VsW3gubmFtZV0/IngiOiIiLHguc3Rhcix4LnNpemV0aXAseC5zZWN1cml0eS5zdGFtcCx4LnRhc2tzLnN0YW1wLHguc3luY3Muc3RhbXBdKX0sdGVtcGxhdGU6ZnVuY3Rpb24oeCl7cmV0dXJuImdyb3VwIj09eC50eXBlP2MuYXNzaWduKHgpOmIuYXNzaWduKGQoeCkpfX0pLGEubmljZVNjcm9sbCh4KSx4Lm9uKCJjbGljay5teSIsIi5idG4tZGJhY2wiLGZ1bmN0aW9uKHgpe3ZhciBiPSQoeC5jdXJyZW50VGFyZ2V0KSxjPWcoYik7YS5SZXEoW2MsIl9zZWN1cml0eSJdKS50aGVuKGZ1bmN0aW9uKHgpe2IubW9kYWwoe3Jvb3Q6YS5teS5yb290KCksbWFuaWZlc3Q6YS5QaG8oIlNlY09iaiIpLGRhdGE6e2RiczpbY10sYWRtaW5zOnguYWRtaW5zfHx7bmFtZXM6W10scm9sZXM6W119LG1lbWJlcnM6eC5tZW1iZXJzfHx7bmFtZXM6W10scm9sZXM6W119fSx3aWR0aDo0ODAsYm91bmQ6MCxub3NlOiJsZWZ0Iixjc3M6InhncmF5IixhbGlnbjoibGVmdDo3MCU7dG9wOi0zNnB4OyIsc2NyZWVuOiJyZ2JhKDI1NSwyNTUsMjU1LDApIixlc2M6ITB9KX0pfSkseC5vbigiY2xpY2subXkiLCIuYnRuLWRic3RhciIsZnVuY3Rpb24oeCl7dmFyIGI9ZygkKHguY3VycmVudFRhcmdldCkpLGM9ZS5zdGFyc1tiXT0hZS5zdGFyc1tiXTthLkFsbFtiXS5zdGFyPWM/InJvdy1zdGFyIjoiIixhLkxzKCJEQnMuU3RhcnMiLE9iamVjdC5rZXlzKGUuc3RhcnMpLnJlZHVjZShmdW5jdGlvbih4LGEpe3JldHVybiBlLnN0YXJzW2FdJiYoeFthXT0hMCkseH0se30pKSxjJiYoYS5BbGxbYl0uZ3JvdXA9IiIpLGEuUGhvKCJHcm91cERCcyIpKCksYS5SZWxpc3ROb3coKSxhLkJhdGNoSW5mbyhbYl0pfSkseC5vbigiY2xpY2subXkiLCIuYnRuLWRiaW5mbyIsZnVuY3Rpb24oeCl7JCh4LmN1cnJlbnRUYXJnZXQpLnBhcmVudCgpLnBhcmVudCgpLmZpbmQoIi50YXAtZGJpbmZvIikudHJpZ2dlcigiY2xpY2siKX0pLHgub24oImNsaWNrLm15IiwiLnRhcC1kYmluZm8iLGZ1bmN0aW9uKHgpe3ZhciBiLGMsZD0kKHguY3VycmVudFRhcmdldCksZT1kLnBhcmVudCgpLGc9ZS5maW5kKCI+aW5wdXQiKS5hdHRyKCJ2YWx1ZSIpO2lmKCFhLkFsbFtnXXx8ZC5pcygiLmNvbC1qc29uIikpcmV0dXJuITE7ZC5hZGRDbGFzcygiY29sLWpzb24iKSxlLmFkZENsYXNzKCJoYXMtY29sLWpzb24iKSxkLmZpbmQoIj4uY29sLWVkLWNsb3NlIikubGVuZ3RoPyhiPWQuZmluZCgiPi5jb2wtZWQ+LkNvZGVNaXJyb3IiKSxjPWJbMF0uQ29kZU1pcnJvcik6KGQuYXBwZW5kKGI9JCgnPGRpdiBjbGFzcz0iY29sLWVkIHByZSBmczg1IGxoMTIwIHBsNCBoaWRlIj48L2Rpdj4nKSksZC5hcHBlbmQoJzxkaXYgY2xhc3M9ImNvbC1lZC1jbG9zZSBmczEzMCBsaDEzMCBoaWRlIiB0aXRsZT0iezF9Ij7inJU8L2Rpdj4nLmFzc2lnbihmLlRJUF9DTE9TRUpTT04pKSxjPUNvZGVNaXJyb3IoYlswXSx7bW9kZToiamF2YXNjcmlwdCIsbGluZU51bWJlcnM6ITEsc2Nyb2xsYmFyU3R5bGU6bnVsbCxsaW5lV3JhcHBpbmc6ITAsdGFiU2l6ZToyLHRoZW1lOiJkZWZhdWx0IixyZWFkT25seTohMH0pKSxjLnNldFZhbHVlKGYuVFhUX0RCSU5GT19MT0FEKTt2YXIgaD17aW5mbzoiRmFpbCB0byBsb2FkIixzZWN1cml0eToiRmFpbCB0byBsb2FkIn07US5hbGxTZXR0bGVkKFthLlJlcSh7dXJsOltnXX0pLnRoZW4oZnVuY3Rpb24oeCl7aC5pbmZvPXh9KSxhLlJlcSh7dXJsOltnLCJfc2VjdXJpdHkiXX0pLnRoZW4oZnVuY3Rpb24oeCl7aC5zZWN1cml0eT14fSldKS50aGVuKGZ1bmN0aW9uKCl7Yy5zZXRWYWx1ZSgiKCIrY3cubGliLmpzb24oaCwiICIsNDMpKyIpIil9KS5mYWlsKGZ1bmN0aW9uKCl7Y3cubGliLm5vdGUoZi5FUlJfREJJTkZPLCJlcnJvciIpLGQucmVtb3ZlQ2xhc3MoImNvbC1qc29uIil9KX0pLHgub24oImNsaWNrLm15IiwiLmNvbC1lZC1jbG9zZSIsZnVuY3Rpb24oeCl7dmFyIGI9JCh4LmN1cnJlbnRUYXJnZXQpLnBhcmVudCgpLGM9Yi5wYXJlbnQoKS5maW5kKCI+aW5wdXQiKS5hdHRyKCJ2YWx1ZSIpO3JldHVybiBiLnJlbW92ZUNsYXNzKCJjb2wtanNvbiIpLGIucGFyZW50KCkucmVtb3ZlQ2xhc3MoImhhcy1jb2wtanNvbiIpLGEuQmF0Y2hJbmZvKFtjXSwwLFsiaW5mbyIsInNlY3VyaXR5Il0pLCExfSkseC5vbigiY2xpY2subXkiLCIuZGItZ3JvdXAiLGZ1bmN0aW9uKHgpe3ZhciBiPSQoeC5jdXJyZW50VGFyZ2V0KS5kYXRhKCJncm91cCIpLGM9ZS5ncm91cHNbYl09IWUuZ3JvdXBzW2JdO2EuTHMoIkRCcy5Hcm91cHMiLE9iamVjdC5rZXlzKGUuZ3JvdXBzKS5yZWR1Y2UoZnVuY3Rpb24oeCxhKXtyZXR1cm4gZS5ncm91cHNbYV0mJih4W2FdPTEpLHh9LHt9KSksYyYmYS5CYXRjaEluZm8oT2JqZWN0LmtleXMoYS5BbGwpLmZpbHRlcih4PT5hLkFsbFt4XS5ncm91cD09YiksbnVsbCxbImluZm8iLCJzZWN1cml0eSJdKSxhLm15LmNoZWNrKCIjZGItcHJveHkiKSxhLm15LmNoZWNrKCIjdmlldy1oYXNzZWxlY3Rpb24iKX0pfSxiaW5kOmZ1bmN0aW9uKHgsYSxiKXtudWxsPT1hJiZiLmxpc3QoImRhdGEiLHRoaXMuTGlzdCl9LHdhdGNoOlsiI2RiLXByb3h5IiwiI3ZpZXctaGFzc2VsZWN0aW9uIl19LCIjZGItcHJveHkiOntkZWxheTo1MCxiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcyxjPShiLlJvdyxiLkFsbCksZD14LnJldmVyc2U/LTE6MSxlPS1kO2lmKGIuTGlzdD1PYmplY3QudmFsdWVzKGMpLnNvcnQoZnVuY3Rpb24oeCxhKXtyZXR1cm4geC5zdGFyPmEuc3Rhcj8tMWUzOnguc3RhcjxhLnN0YXI/MWUzOngubmFtZT5hLm5hbWU/ZDplfSkseC5zZWFyY2gubGVuZ3RoPjEpe3ZhciBmPW5ldyBSZWdFeHAoeC5zZWFyY2gudG9Mb3dlckNhc2UoKS5zcGxpdCgiICIpLmNvbXBhY3QoITApLm1hcChmdW5jdGlvbih4KXtyZXR1cm4geC5lc2NhcGVSZWdFeHAoKX0pLmpvaW4oInwiKSk7Yi5MaXN0PWIuTGlzdC5maWx0ZXIoZnVuY3Rpb24oeCl7cmV0dXJuIGYudGVzdCh4Lm5hbWUudG9Mb3dlckNhc2UoKSl8fCEheC50b29sdGlwJiZmLnRlc3QoeC50b29sdGlwLnRvTG93ZXJDYXNlKCkpfSl9ZWxzZXt2YXIgZz0iIixoPXt9O2IuTGlzdC5mb3JFYWNoKGZ1bmN0aW9uKHgpe3ZhciBhPXguZ3JvdXA7aWYoYSl7aFthXXx8KGhbYV09WzAsMF0pO3ZhciBiPSt4LmRpc2tfc2l6ZXx8MDtiJiYoaFthXVswXSs9YixoW2FdWzFdKz0xKX19KSxiLkxpc3Q9Yi5MaXN0LnJlZHVjZShmdW5jdGlvbihhLGMpe3ZhciBkPWMuZ3JvdXAsZT1iLlBobygiR3JvdXBzIilbZF07cmV0dXJuIGQmJmQhPWcmJmEucHVzaCgkLmV4dGVuZCghMCx7dHlwZToiZ3JvdXAiLGZvbGQ6eC5ncm91cHNbZF0/ImFkb3duIjoiYXJpZ2h0IixkaXNrOiFoW2RdfHxoW2RdWzFdPGUuc2l6ZT8iIjpiLkJ5dGVzKGhbZF1bMF0pfSxlKSksZCYmIXguZ3JvdXBzW2RdfHxhLnB1c2goYyksZz1kLGF9LFtdKX19LGxpc3Rlbjp7dXNlckN0eDpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXM7YSYmKGEubmFtZT8oYi5HZXRMaXN0KCEwKSxiLlJlc3RhcnRQb2xsKCkpOiQubXkucmFkaW8oInJlbG9hZCIse2lkOngudGFiaWQscGF0aDp4LnBhdGh9KSl9LGRibGlzdDpmdW5jdGlvbih4LGEpe09iamVjdC5pc0FycmF5KGEpJiZ0aGlzLkdldExpc3QoITAsYSl9fSx3YXRjaDpbIiNidG4tdmlldy1kaXIiLCIjZGItc2VhcmNoIiwiI2J0bi1zZWxlY3QiXX0sIiN2aWV3LWhhc3NlbGVjdGlvbiI6e2Nzczp7fSx3YXRjaDpbIiNkYi1zZWFyY2giLCIjYnRuLXNlbGVjdCJdfSwiI2J0bi1uZXdkYiI6e2JpbmQ6ZnVuY3Rpb24oeCxhLGIpe2lmKG51bGwhPWEpe3ZhciBjPXRoaXMsZD1jLm15LmZpbmQoIiNkYi1saXN0Iikud2lkdGgoKS0zMTArMTUwLTMxO2IuZGF0YSgibW9kYWwiKT9jLm15Lm1vZGFsKCIjYnRuLW5ld2RiIiwhMCk6KGMuTW9kYWxzLmhlYWQmJmMuTW9kYWxzLmhlYWQubW9kYWwoITApLGMuTW9kYWxzLmhlYWQ9YixjLm15Lm1vZGFsKCIjYnRuLW5ld2RiIix7bWFuaWZlc3Q6Yy5QaG8oIk5ld0RCIiksd2lkdGg6ZDw1NTA/ZCs4MDpkLGRhdGE6Yy5QaG8oIkNvdWNoIikudmVyPCIwMDMuIj97fTp7YWRtaW5zOntyb2xlczpbIl9hZG1pbiJdfSxtZW1iZXJzOntyb2xlczpbIl9hZG1pbiJdfX0sYWxpZ246InRvcDoxMDIlO2xlZnQ6LTQycHg7Iixub3NlOiJ0b3AiLGNzczoieGdyYXkiLGRyYWc6Ii5jbSIsc2NyZWVuOiExLGVzYzohMCxmb2N1czonaW5wdXRbdHlwZT0idGV4dCJdOmVxKDApJ30pLmFsd2F5cyhmdW5jdGlvbigpe2MuTW9kYWxzLmhlYWQ9bnVsbH0pKX19LGNzczp7IjpkaXNhYmxlZCI6ZnVuY3Rpb24oeCl7cmV0dXJuIWN3Lm1lKCl9fSxsaXN0ZW46e3VzZXJDdHg6ZnVuY3Rpb24oeCxhKXt0aGlzLm15LmNoZWNrKCIjYnRuLW5ld2RiIil9fX0sIiNidG4tY29tcGFjdCI6e2JpbmQ6ZnVuY3Rpb24oeCxhLGIpe2lmKG51bGwhPWEpe3ZhciBjPXRoaXM7Yi5kYXRhKCJtb2RhbCIpP2MubXkubW9kYWwoIiNidG4tY29tcGFjdCIsITApOihjLk1vZGFscy5oZWFkJiZjLk1vZGFscy5oZWFkLm1vZGFsKCEwKSxjLk1vZGFscy5oZWFkPWIsYy5teS5tb2RhbCgiI2J0bi1jb21wYWN0Iix7bWFuaWZlc3Q6Yy5QaG8oIkNvbXBhY3QiKSx3aWR0aDozODAsZGF0YTp7c2VsZWN0aW9uOnguc2VsZWN0aW9uLnNsaWNlKDApfSxhbGlnbjoidG9wOjEwMiU7bGVmdDowOyIsbm9zZToidG9wIixjc3M6InhncmF5IixzY3JlZW46ITEsZXNjOiEwLGZvY3VzOiIjYnRuLXN0YXJ0In0pLmFsd2F5cyhmdW5jdGlvbigpe2MuTW9kYWxzLmhlYWQ9bnVsbH0pKX19LGNzczp7IjpkaXNhYmxlZCI6ZnVuY3Rpb24oeCl7cmV0dXJuIWN3Lm1lKCl8fCF4LnNlbGVjdGlvbi5sZW5ndGh8fCF0aGlzLkxpc3QubWFwKGZ1bmN0aW9uKHgpe3JldHVybiB4Lm5hbWV9KS5pbnRlcnNlY3QoeC5zZWxlY3Rpb24pLmxlbmd0aH19LHdhdGNoOlsiI3ZpZXctaGFzc2VsZWN0aW9uIl0sbGlzdGVuOnt1c2VyQ3R4OmZ1bmN0aW9uKHgsYSl7dGhpcy5teS5jaGVjaygiI2J0bi1jb21wYWN0Iil9fX0sIiNidG4tZGVsZGIiOntiaW5kOmZ1bmN0aW9uKHgsYSxiKXtpZihudWxsIT1hKXt2YXIgYz10aGlzO2IuZGF0YSgibW9kYWwiKT9jLm15Lm1vZGFsKCIjYnRuLWRlbGRiIiwhMCk6KGMuTW9kYWxzLmhlYWQmJmMuTW9kYWxzLmhlYWQubW9kYWwoITApLGMuTW9kYWxzLmhlYWQ9YiwkLm15Lm1vZGFsKHttYW5pZmVzdDpjLlBobygiRGVsREIiKSx3aWR0aDozODAsZGF0YTp7ZGJzOnguc2VsZWN0aW9uLnNsaWNlKDApfSxmb2N1czoiI2J0bi1jYW5jZWwiLGNzczoieGdyYXkgcDIwIHB0MTUiLGNsb3NlOmMuUGhvKCJsYW5nIikuQlROX1hETEcsZXNjOiEwLGVudGVyOiExfSkudGhlbihmdW5jdGlvbigpe3guc2VsZWN0aW9uLmxlbmd0aD0wLHgub3NlbD17fX0pLmFsd2F5cyhmdW5jdGlvbigpe2MuTW9kYWxzLmhlYWQ9bnVsbH0pKX19LGNzczp7IjpkaXNhYmxlZCI6ZnVuY3Rpb24oeCl7cmV0dXJuIWN3Lm1lKCl8fCF4LnNlbGVjdGlvbi5sZW5ndGh8fCF0aGlzLkxpc3QubWFwKGZ1bmN0aW9uKHgpe3JldHVybiB4Lm5hbWV9KS5pbnRlcnNlY3QoeC5zZWxlY3Rpb24pLmxlbmd0aH19LHdhdGNoOlsiI3ZpZXctaGFzc2VsZWN0aW9uIl0sbGlzdGVuOnt1c2VyQ3R4OmZ1bmN0aW9uKHgsYSl7dGhpcy5teS5jaGVjaygiI2J0bi1kZWxkYiIpfX19LCIjYnRuLWR1bXAiOntiaW5kOmZ1bmN0aW9uKHgsYSxiKXt2YXIgYyxkLGU9dGhpcyxmPXt1cmw6IiIsZGJzOltdfSxnPXt0YXNrOnguc2VsZWN0aW9uLmxlbmd0aD4xPyJNdWx0aSI6IlN5bmMiLG1vZGU6WyJ6aXAiXSxkdW1wT25seTohMCxzcmM6Zn07aWYobnVsbCE9YSl7aWYoYi5kYXRhKCJtb2RhbCIpKXJldHVybiBiLm1vZGFsKCEwKSx2b2lkIDA7ZS5Nb2RhbHMuaGVhZCYmZS5Nb2RhbHMuaGVhZC5tb2RhbCghMCksZS5Nb2RhbHMuaGVhZD1iLDE9PXguc2VsZWN0aW9uLmxlbmd0aD9mLnVybD14LnNlbGVjdGlvblswXTp4LnNlbGVjdGlvbi5sZW5ndGg+MSYmKGYuZGJzPXguc2VsZWN0aW9uLnNsaWNlKDApKSxjPWUubXkuZmluZCgiI2RiLWxpc3QiKS53aWR0aCgpLTMxMCxjKz1jPDMwMD8zMTA6Yzw0NjA/MjMwOmM8NTMwPzE1MDpjPDYxMD84MDowLGQ9Yi5wb3NpdGlvbigpLmxlZnQrYi5wYXJlbnQoKS5wb3NpdGlvbigpLmxlZnQsYi5tb2RhbCh7bWFuaWZlc3Q6JC5leHRlbmQoITAse30sZS5QaG8oIlN5bmNUYXNrIikse1Jlc3RhcnRQb2xsOmUuUmVzdGFydFBvbGwscGFyYW1zOnt3aWR0aDpjLTMxfX0pLGRhdGE6Zyxub3NlOiJ0b3AiLGFsaWduOiJ0b3A6MTAzJTsgbGVmdDotezF9cHg7Ii5hc3NpZ24oZCksZHJhZzoiLmNtIixjc3M6InhncmF5Iixlc2M6ITAsZm9jdXM6IiNydHppcGZpbGUifSkuYWx3YXlzKGZ1bmN0aW9uKCl7ZS5Nb2RhbHMuaGVhZD1udWxsfSl9cmV0dXJuIHguc2VsZWN0aW9uLmxlbmd0aD90aGlzLmxhbmcuQlROX0RVTVA6dGhpcy5sYW5nLkJUTl9VTkRVTVB9LGNzczp7IjpkaXNhYmxlZCI6ZnVuY3Rpb24oeCxhKXtyZXR1cm4hY3cubWUoKX19LGxpc3Rlbjp7dXNlckN0eDpmdW5jdGlvbih4LGEpe3RoaXMubXkuY2hlY2soIiNidG4tbmV3c3luYyIpfX0sd2F0Y2g6WyIjdGFzay1saXN0IiwiI3ZpZXctaGFzc2VsZWN0aW9uIl19LCIjdGFzay1maWx0ZXIiOntpbml0OmZ1bmN0aW9uKHgpe3gudGFncygkLmV4dGVuZCghMCx7fSx0aGlzLmxhbmcuVEFHU19UQVNLX1RZUEUse3RhZ3NoaW06IuKAiSIsZ3JvdXBzaGltOiLigIkifSkpfSxiaW5kOiJ0YXNrLmZpbHRlciJ9LCIjdGFzay1jb2xzIjp7YmluZDpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXM7cmV0dXJuIGIubGFuZy5UWFRfVEFTS1ZJRVcoYi5UYXNrcy5sZW5ndGg/eC50YXNrLmxpc3QuZmlsdGVyKGIuTm9Hcm91cCkubGVuZ3RoOjAsYi5UYXNrcy5maWx0ZXIoYi5Ob0dyb3VwKS5sZW5ndGgpfSx3YXRjaDpbIiN0YXNrLWZpbHRlciIsIiN0YXNrLWxpc3QiLCIjdGFzay1zZWFyY2giXX0sIiN0YXNrLXNlYXJjaCI6e2RlbGF5OjEwMCxiaW5kOiJ0YXNrLnNlYXJjaCIsY3NzOnsibXktc2VhcmNoIjovXi57Mix9JC99fSwiI3Rhc2stbGlzdCI6e2RlbGF5OjUwLGluaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPWEuVFRhc2ssYz1hLmRhdGE7ZnVuY3Rpb24gZCgpe2EubXkucmVjYWxjKCIjdGFzay1saXN0IiksYS5teS5jaGVjaygiI3Rhc2stbGlzdCIpfWZ1bmN0aW9uIGUoeCl7cmV0dXJuIE9iamVjdC5rZXlzKHgpLnJlZHVjZShmdW5jdGlvbihhLGIpe3JldHVybiB4W2JdJiYoYVtiXT0hMCksYX0se30pfXgubGlzdCh7ZGF0YTphLlRhc2tzLGRlbGF5OjAsY2h1bms6MTAwLHNvcnRCeTpudWxsLGlkOmZ1bmN0aW9uKHgpe3JldHVybiB4LnBpZCt4LmRvY19pZH0saGFzaDpmdW5jdGlvbih4KXtyZXR1cm4gY3cubGliLnNkYm0oW3gucGlkLHguX2dyb3VwfHwifiIseC5fdHlwZXx8In4iLHguX3NlbGVjdGVkPyJzZWwiOiJ1bnNlbCIseC5fZm9sZD8iZm9sZCI6InVuZm9sZCIseC50eXBlLHguX3Byb2dyZXNzLHguX3N0YXJ0ZWQseC5fZGVzYyx4LmZpbHRlcl0pfSx0ZW1wbGF0ZTpmdW5jdGlvbih4KXtyZXR1cm4gYih4KX19KSxhLm5pY2VTY3JvbGwoeCkseC5vbigiY2xpY2subXkiLCdpbnB1dFtuYW1lPSJ0YXNrLXNlbGVjdGlvbiJdJyxmdW5jdGlvbihiKXt2YXIgZT1bXSxmPXguZmluZCgnaW5wdXRbbmFtZT0idGFzay1zZWxlY3Rpb24iXScpLGc9JChiLnRhcmdldCkudmFsKCk7Zi5lYWNoKGZ1bmN0aW9uKCl7dmFyIHg9JCh0aGlzKTt4LmlzKCI6Y2hlY2tlZCIpJiZlLnB1c2goeC52YWwoKSl9KTt2YXIgaCxpPWEuVGFza3MuZmluZChmdW5jdGlvbih4KXtyZXR1cm4geC5yZXBsaWNhdGlvbl9pZD09Zy5lc2NhcGVIVE1MKCl9KSxqPXt9LGs9IiI7aSYmKGg9aS5fc2VsZWN0ZWQ9ZS5pbmRleE9mKGcpPi0xLCJncm91cCI9PWkuX3R5cGU/KGs9Zy5mcm9tKDIpLGkuX2ZvbGQ9IWgmJmkuX2ZvbGQsaCYmKGMudGFzay5mb2xkW2tdPSExKSxhLlRhc2tzLmZvckVhY2goZnVuY3Rpb24oeCl7eC5yZXBsaWNhdGlvbl9pZCE9ZyYmeC5fZ3JvdXA9PWsmJigoeC5fc2VsZWN0ZWQ9aCk/ZS5wdXNoKHgucmVwbGljYXRpb25faWQpOmUucmVtb3ZlKHgucmVwbGljYXRpb25faWQpKX0pKTooaz1pLl9ncm91cCkmJihqPWEuVGFza3MuZmluZChmdW5jdGlvbih4KXtyZXR1cm4iZ3JvdXAiPT14Ll90eXBlJiZ4LnBob3Rvbl90YXNrPT1rfSkpJiYoai5fc2VsZWN0ZWQ9aS5fc2VsZWN0ZWQmJmouX3NlbGVjdGVkKSksYy50YXNrLnNlbGVjdGlvbj1lLnVuaXF1ZSgpLGQoKX0pLHgub24oImNsaWNrLm15IiwiLnRhc2tsYWJlbCIsZnVuY3Rpb24oKXskKHRoaXMpLnBhcmVudCgpLmZpbmQoImlucHV0IikudHJpZ2dlcigiY2xpY2siKX0pLHgub24oImNsaWNrLm15IiwiLnRhc2stZ3JvdXAiLGZ1bmN0aW9uKCl7Yy50YXNrLnNlYXJjaD0kKHRoaXMpLmF0dHIoInRpdGxlIil8fCQodGhpcykudGV4dCgpLGEubXkucmVjYWxjKCIjdGFzay1zZWFyY2giKX0pLHgub24oImNsaWNrLm15IiwiLnRhc2stZm9sZGdyb3VwIixmdW5jdGlvbigpe3ZhciB4PSQodGhpcykuZGF0YSgiZ3JvdXAiKS5yZXBsYWNlKC9eX18vLCIiKSxiPWMudGFzay5mb2xkW3hdPSFjLnRhc2suZm9sZFt4XSxmPSJfXyIreCxnPWEuVGFza3MuZmluZChmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsaWNhdGlvbl9pZD09Znx8YS5fZ3JvdXA9PXh9KTtnLl9mb2xkPWIsZy5fc2VsZWN0ZWQ9Zy5fc2VsZWN0ZWQmJiFiLGImJmMudGFzay5zZWxlY3Rpb24ucmVtb3ZlKCJfXyIreCksYS5McygiVGFza3MuRm9sZCIsZShjLnRhc2suZm9sZCkpLGEuVGFza3MuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgZD1hLl9zZWxlY3RlZDthLl9ncm91cD09eCYmKGEuX3NlbGVjdGVkPWEuX3NlbGVjdGVkJiYhYixkJiYhYS5fc2VsZWN0ZWQmJmMudGFzay5zZWxlY3Rpb24ucmVtb3ZlKGEucmVwbGljYXRpb25faWQpKX0pLGQoKX0uZGVib3VuY2UoMTApKSx4Lm9uKCJjbGljay5teSIsIi5idG4tZG9uZS1yZXN0YXJ0IixmdW5jdGlvbigpe3ZhciB4PSQodGhpcykuZGF0YSgiaWQiKTthLlJlc3RhcnRUYXNrcyghMSxbeF0pfSl9LGJpbmQ6ZnVuY3Rpb24oeCxhLGIpe2lmKG51bGw9PWEpe2lmKHgudGFzay5zZWFyY2guZnJvbSgxKXx8IiIhPXgudGFzay5maWx0ZXIpe3ZhciBjPXRoaXMuVGFza3Muc2xpY2UoMCksZD14LnRhc2suZmlsdGVyLmV4Y2x1ZGUoImFjdGl2ZSIpKyIiO2lmKHgudGFzay5maWx0ZXIuZmluZCgiYWN0aXZlIikmJihjPWMuZmlsdGVyKGZ1bmN0aW9uKHgpe3JldHVybiJFcnJvciIhPXgucGlkJiYiRG9uZSIhPXgucGlkfSkpLCJjb21wYWN0aW9uIj09ZCl4LnRhc2subGlzdD1jLmZpbHRlcihmdW5jdGlvbih4KXtyZXR1cm4vY29tcGFjdGlvbiQvLnRlc3QoeC50eXBlKX0pO2Vsc2V7dmFyIGU9ZD9jLmZpbHRlcihmdW5jdGlvbih4KXtyZXR1cm4hKCgicmVwbGljYXRpb24iIT1kfHwiZ3JvdXAiIT14Ll90eXBlKSYmLTE9PSh4LnR5cGUrIiIpLmluZGV4T2YoZCkpfSk6YztpZih4LnRhc2suc2VhcmNoLmxlbmd0aD4xKXt2YXIgZj1uZXcgUmVnRXhwKHgudGFzay5zZWFyY2gudG9Mb3dlckNhc2UoKS5zcGxpdCgifCIpLmNvbXBhY3QoITApLm1hcChmdW5jdGlvbih4KXtyZXR1cm4geC5lc2NhcGVSZWdFeHAoKX0pLmpvaW4oInwiKSk7ZT1lLmZpbHRlcihmdW5jdGlvbih4KXtyZXR1cm4gZi50ZXN0KHguX2luZGV4KX0pfXgudGFzay5saXN0PWgoZS5maWx0ZXIoZykpfX1lbHNlIHgudGFzay5saXN0PXRoaXMuVGFza3MuZmlsdGVyKGcpO3RoaXMubXkuZmluZCgiI3Rhc2stbGlzdCIpLmxpc3QoImRhdGEiLHgudGFzay5saXN0KX1mdW5jdGlvbiBnKGEpe3JldHVybiJncm91cCI9PWEuX3R5cGV8fCFhLl9ncm91cHx8IXgudGFzay5mb2xkW2EuX2dyb3VwXX1mdW5jdGlvbiBoKHgpe3ZhciBhPXt9O3JldHVybiB4LmZvckVhY2goZnVuY3Rpb24oeCl7Imdyb3VwIiE9eC5fdHlwZSYmeC5fZ3JvdXAmJihhW3guX2dyb3VwXT0oYVt4Ll9ncm91cF18fDApKzEpfSkseC5maWx0ZXIoZnVuY3Rpb24oeCl7cmV0dXJuISEoImdyb3VwIiE9eC5fdHlwZXx8YVt4Ll9ncm91cF18fHguX2ZvbGQmJnguX3J1bil9KX19LHdhdGNoOlsiI3Rhc2stZmlsdGVyIiwiI3Rhc2stc2VhcmNoIiwiI2J0bi1zZWxlY3QtdGFza3MiXX0sIiNidG4tc2VsZWN0LXRhc2tzIjp7ZGVsYXk6MCxiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcyxjPWIuVGFza3Muc2xpY2UoMCkubWFwKGZ1bmN0aW9uKHgpe3JldHVybiB4LnJlcGxpY2F0aW9uX2lkfSkuY29tcGFjdCgpLGQ9eC50YXNrLmxpc3QubWFwKGZ1bmN0aW9uKHgpe3JldHVybiB4LnJlcGxpY2F0aW9uX2lkfSkuY29tcGFjdCgpLGU9eC50YXNrLnNlbGVjdGlvbi5pbnRlcnNlY3QoZCkuZmlsdGVyKGIuTm9Hcm91cCksZj1lLmZpbHRlcihiLk5vR3JvdXApLmxlbmd0aCxnPWIubGFuZztyZXR1cm4gbnVsbCE9YSYmKHgudGFzay5zZWxlY3Rpb249Zj94LnRhc2suc2VsZWN0aW9uLnN1YnRyYWN0KGQpLnVuaXF1ZSgpOngudGFzay5zZWxlY3Rpb24uY29uY2F0KGQpLnVuaXF1ZSgpLGU9eC50YXNrLnNlbGVjdGlvbixiLlRhc2tzLmZvckVhY2goZnVuY3Rpb24oeCl7eC5yZXBsaWNhdGlvbl9pZCYmIXguX2ZvbGQmJih4Ll9zZWxlY3RlZD1lLmluZGV4T2YoeC5yZXBsaWNhdGlvbl9pZCk+LTEpfSkpLChmPShlPXgudGFzay5zZWxlY3Rpb24uaW50ZXJzZWN0KGQpKS5maWx0ZXIoYi5Ob0dyb3VwKS5sZW5ndGgpP2cuVFhUX1RfVU5TRUxFQ1QuYXNzaWduKGUubGVuZ3RoPT1jLmxlbmd0aD9nLlRYVF9UX1NFTEVDVF9BTEw6Zik6Zy5UWFRfVF9TRUxFQ1QuYXNzaWduKGQubGVuZ3RoPT1jLmxlbmd0aD9nLlRYVF9UX1NFTEVDVF9BTEw6Zy5UWFRfVF9TRUxFQ1RfRklMVEVSKX0sZXZlbnRzOiJjbGljay5teSIsY3NzOnsic2VsZjpoaWRlIjpmdW5jdGlvbih4LGEpe3JldHVybiF4LnRhc2subGlzdC5maW5kKGZ1bmN0aW9uKHgpe3JldHVybiB4LnJlcGxpY2F0aW9uX2lkJiYiZ3JvdXAiIT14Ll90eXBlfSl9fSx3YXRjaDpbIiN0YXNrLWxpc3QiLCIjdGFzay1maWx0ZXIiLCIjdGFzay1zZWFyY2giXX0sIiNidG4tcmVsb2Fkc3luYyI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtudWxsIT1hJiZ0aGlzLlJlc3RhcnRQb2xsLmRlYm91bmNlKDUwMCkoKX0sY3NzOnsiOmRpc2FibGVkIjpmdW5jdGlvbih4LGEpe3JldHVybiFjdy5tZSgpfX0sd2F0Y2g6WyIjdGFzay1saXN0Il0sbGlzdGVuOnt1c2VyQ3R4OmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcztPYmplY3QuaXNPYmplY3QoYSkmJihhLm5hbWU/Yi5teS5jaGVjaygiI2J0bi1yZWxvYWRzeW5jIik6KGIuVGFza3MubGVuZ3RoPTAseC50YXNrLnNlbGVjdGlvbi5sZW5ndGg9MCxiLm15LnJlY2FsYygiI3Rhc2stbGlzdCIpLGIubXkuY2hlY2soIiN0YXNrLWNvbHMiKSxiLm15LmNoZWNrKCIjdGFzay1saXN0IikpKX19fSwiI2J0bi1yZXN5bmMiOntiaW5kOmZ1bmN0aW9uKHgsYSxiKXtpZihudWxsIT1hKXt2YXIgYz10aGlzO2lmKGIuZGF0YSgibW9kYWwiKSlyZXR1cm4gYi5tb2RhbCghMCksdm9pZCAwO2MuTW9kYWxzLnRhc2tzJiZjLk1vZGFscy50YXNrcy5tb2RhbCghMCksYy5SZXN0YXJ0VGFza3MoKS50aGVuKGZ1bmN0aW9uKCl7eC50YXNrLnNlbGVjdGlvbi5sZW5ndGg9MCxjLm15LmNoZWNrKCIjdGFzay1saXN0IiksYy5SZXN0YXJ0UG9sbC5kZWJvdW5jZSgzMDApKCksYy5SZXN0YXJ0UG9sbC5kZWJvdW5jZSgyNTAwKSgpfSl9fSxjc3M6eyI6ZGlzYWJsZWQiOmZ1bmN0aW9uKHgpe2lmKCF4LnRhc2suc2VsZWN0aW9uLmxlbmd0aClyZXR1cm4hMDt2YXIgYT14LnRhc2suc2VsZWN0aW9uLmZpbHRlcih0aGlzLk5vR3JvdXApLmludGVyc2VjdCh4LnRhc2subGlzdC5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIHgucmVwbGljYXRpb25faWR9KSk7aWYoIWEubGVuZ3RoKXJldHVybiEwO3ZhciBiPWN3LmxpYi5hMm8oYSksYz0hMDtyZXR1cm4gdGhpcy5UYXNrcy5mb3JFYWNoKGZ1bmN0aW9uKHgpeyF4LmRvY19pZCYmYlt4LnJlcGxpY2F0aW9uX2lkXSYmKGM9ITEpfSksIWN9fSx3YXRjaDpbIiN0YXNrLWZpbHRlciIsIiN0YXNrLWxpc3QiXX0sIiNidG4tc3RvcHN5bmMiOntiaW5kOmZ1bmN0aW9uKHgsYSl7aWYobnVsbCE9YSl7dmFyIGI9dGhpcztiLlJlc3RhcnRUYXNrcyghMCkudGhlbihmdW5jdGlvbigpe3gudGFzay5zZWxlY3Rpb24ubGVuZ3RoPTAsYi5teS5jaGVjaygiI3Rhc2stbGlzdCIpLGIuUmVzdGFydFBvbGwuZGVib3VuY2UoMzAwKSgpLGIuUmVzdGFydFBvbGwuZGVib3VuY2UoMjUwMCkoKX0pfX0sY3NzOnsiOmRpc2FibGVkIjpmdW5jdGlvbih4KXtyZXR1cm4heC50YXNrLnNlbGVjdGlvbi5sZW5ndGh8fCgheC50YXNrLnNlbGVjdGlvbi5maWx0ZXIodGhpcy5Ob0dyb3VwKS5pbnRlcnNlY3QoeC50YXNrLmxpc3QubWFwKGZ1bmN0aW9uKHgpe3JldHVybiB4LnJlcGxpY2F0aW9uX2lkfSkpLmxlbmd0aHx8dm9pZCAwKX19LHdhdGNoOlsiI3Rhc2stZmlsdGVyIiwiI3Rhc2stbGlzdCJdfSwiI2J0bi1uZXdzeW5jIjp7YmluZDpmdW5jdGlvbih4LGEsYil7dmFyIGMsZD10aGlzLGU9eC5zZWxlY3Rpb24ubGVuZ3RoLGY9ZT4xPyJNdWx0aSI6IlN5bmMiLGc9e3VybDoiIixkYnM6W119LGg9e3Rhc2s6ZixzcmM6Z30saT00MjtpZihudWxsIT1hKXtpZihiLmRhdGEoIm1vZGFsIikpcmV0dXJuIGIubW9kYWwoITApLHZvaWQgMDtkLk1vZGFscy50YXNrcyYmZC5Nb2RhbHMudGFza3MubW9kYWwoITApLDE9PWU/Zy51cmw9eC5zZWxlY3Rpb25bMF06ZT4xJiYoZy5kYnM9eC5zZWxlY3Rpb24uc2xpY2UoMCkpLGQuTW9kYWxzLnRhc2tzPWIsZC5MYXN0U3luYy50YXNrPT1mJiZKU09OLnN0cmluZ2lmeShnKT09SlNPTi5zdHJpbmdpZnkoT2JqZWN0LnNlbGVjdChkLkxhc3RTeW5jLnNyYyxbInVybCIsImRicyJdKSk/aD1kLkxhc3RTeW5jOmQuTGFzdFN5bmM9aCwoYz1kLm15LmZpbmQoIiNycGFuZWwiKS53aWR0aCgpLTMyKTw0NjA/KGMrPTE4MyxpKz0xODMpOmM8NTYwJiYoYys9MTAyLGkrPTEwMiksYi5tb2RhbCh7cm9vdDpkLm15LmZpbmQoIiNycGFuZWwiKSxtYW5pZmVzdDokLmV4dGVuZCghMCx7fSxkLlBobygiU3luY1Rhc2siKSx7UmVzdGFydFBvbGw6ZC5SZXN0YXJ0UG9sbCxwYXJhbXM6e3dpZHRoOmN9fSksZGF0YTpoLG5vc2U6InRvcCIsYWxpZ246InRvcDoxMDMlOyBsZWZ0Oi17MX1weDsiLmFzc2lnbihpKSxkcmFnOiIuY20iLGNzczoieGdyYXkiLGVzYzohMCxmb2N1czpkLkxhc3RTeW5jLnNyYy51cmw/IiNydGFyZ2V0IjoiI3Jzb3VyY2UifSkuYWx3YXlzKGZ1bmN0aW9uKCl7ZC5Nb2RhbHMudGFza3M9bnVsbH0pfXJldHVybiB0aGlzLmxhbmdbZT8xPT1lPyJCVE5fVEFTS18xREIiOiJCVE5fVEFTS19EQlMiOiJCVE5fVEFTS19ORVdTWU5DIl19LGNzczp7IjpkaXNhYmxlZCI6ZnVuY3Rpb24oeCxhKXtyZXR1cm4hY3cubWUoKX19LGxpc3Rlbjp7dXNlckN0eDpmdW5jdGlvbih4LGEpe3RoaXMubXkuY2hlY2soIiNidG4tbmV3c3luYyIpfX0sd2F0Y2g6WyIjdGFzay1saXN0IiwiI3ZpZXctaGFzc2VsZWN0aW9uIl19fSxkaWU6ZnVuY3Rpb24oeCl7dGhpcy5UYXNrTG9vcCYmdGhpcy5UYXNrTG9vcC5jYW5jZWwoKSxbIiNkYi1saXN0IiwiI3Rhc2stbGlzdCJdLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI9eC5maW5kKGEpOyJmdW5jdGlvbiI9PXR5cGVvZiBiLmdldE5pY2VTY3JvbGwmJmIuZ2V0TmljZVNjcm9sbCgpLnJlbW92ZSgpLGIubGlzdCgicmVtb3ZlIil9KX0sUlQ6ZnVuY3Rpb24oeCl7cmV0dXJuIG51bGw9PXg/dGhpczpPYmplY3QuaXNBcnJheSh4KT9jdy5saWIuZ2V0cmVmKHRoaXMseCk6dGhpc1t4XX0sUmVsaXN0OmZ1bmN0aW9uKCl7dGhpcy5teS5jaGVjaygiI2RiLXByb3h5Iil9LEdldExpc3Q6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzLGM9Yi5kYXRhO3JldHVybiBiLlBobygiR2V0TGlzdCIpKCkudGhlbihmdW5jdGlvbigpe2IuQWxsPWIuUGhvKCJBbGwiKSxPYmplY3Qua2V5cyhiLkFsbCkuZm9yRWFjaChmdW5jdGlvbih4KXtiLkFsbFt4XS5zdGFyPWMuc3RhcnNbeF0/InJvdy1zdGFyIjoiIn0pLHgmJmIuUmVsaXN0KCksYi5CYXRjaEluZm8oYXx8T2JqZWN0LmtleXMoYi5BbGwpLGIuUGhvKCJDZmciKS5iYXRjaERiSW5mb0RlbGF5KX0pfSxOb3JtREI6ZnVuY3Rpb24oeCxhKXt2YXIgYixjLGQ9dGhpcyxlPWF8fGQuZGF0YS5vc2VsO3JldHVybihjPXguZGlza19zaXplKSYmKGI9eC5kYXRhX3NpemUpJiYoeC5zaXplc2FmZT0nPHNwYW4gY2xhc3M9InsxfSI+ezJ9PC9zcGFuPicuYXNzaWduKGIvYzwuMT8icmVkIG83MCI6Yi9jPC41PyJvcmFuZ2UgbzkwIjoieGdyYXkiLGQuQnl0ZXMoYykpLHguc2l6ZXRpcD1kLmxhbmcuVElQX0RCU0laRS5hc3NpZ24oZC5CeXRlcyhiKSxkLkJ5dGVzKGMpKSkseC5ncm91cF94PXguZ3JvdXA/IngiOiIiLHguZG9jX2NvdW50X3NhZmU9IiIhPT14LmRvY19jb3VudD9kLk1ldHJpYyh4LmRvY19jb3VudCw2KToiIix4LmRvY19kZWxfY291bnRfc2FmZT0iIiE9PXguZG9jX2RlbF9jb3VudD9kLk1ldHJpYyh4LmRvY19kZWxfY291bnQsNik6IiIseC51cGRhdGVfc2VxX3NhZmU9IiIhPT14LnVwZGF0ZV9zZXE/ZC5NZXRyaWMoKHgudXBkYXRlX3NlcSsiIikuc3BsaXQoIi0iKVswXSw3KToiIix4LmNoZWNrZWQ9ZVt4Lm5hbWVdPyJjaGVja2VkIjoiIix4fSxOb0dyb3VwOmZ1bmN0aW9uKHgpe3JldHVybiJzdHJpbmciPT10eXBlb2YgeD8iX18iIT14LnRvKDIpOiJncm91cCIhPXguX3R5cGV9LHN0eWxlOnsiIC52aWV3LXJvdyI6eyIiOiJ3aWR0aDoxMDAlOyBtaW4taGVpZ2h0OjJlbTsgcGFkZGluZzowLjM1ZW0gMDsgbGluZS1oZWlnaHQ6MS4yZW07IGJhY2tncm91bmQtY29sb3I6d2hpdGU7IiwiOm50aC1jaGlsZCgybiswKSI6ImJhY2tncm91bmQtY29sb3I6I2Y1ZjdmOTsiLCIgc3ZnIjoibWFyZ2luLWJvdHRvbToxcHg7IiwiLnJvdy1zdGFyKy52aWV3LXJvdyI6ImJvcmRlci10b3A6MXB4IHNvbGlkICNlMWU1ZTg7IiwiLnJvdy1zdGFyKy52aWV3LXJvdy5yb3ctc3RhciI6ImJvcmRlci10b3A6bm9uZTsiLCIgLmJ0bi1kYnN0YXIiOiJjb2xvcjojZDBkNmRkOyIsIiAuYnRuLWRic3Rhci5yb3ctc3RhciAiOiJjb2xvcjojZmZiNDJhOyJ9LCIgLnRhcnJvdyI6ImRpc3BsYXk6aW5saW5lLWJsb2NrO3dpZHRoOjMxcHg7cGFkZGluZy1yaWdodDoxcHg7dGV4dC1hbGlnbjpjZW50ZXI7IiwiIC5yb3ctc2VsIjoid2lkdGg6MjNweDsgbWFyZ2luOiAwIDJweCAycHggM3B4OyB0ZXh0LWFsaWduOmNlbnRlcjsgZGlzcGxheTppbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWduOm1pZGRsZTsiLCIgI2RiLWxpc3QiOnsiIjoib3V0bGluZTpub25lOyIsIiAuY29sLTgwIjoid2lkdGg6ODBweDsgcGFkZGluZzoxcHggNnB4IDAgMDsgdGV4dC1hbGlnbjpyaWdodDsiLCIgLmNvbC03MCI6IndpZHRoOjcwcHg7IGZvbnQtc2l6ZTowLjllbTsgbGluZS1oZWlnaHQ6MS4yZW07IHRleHQtYWxpZ246bGVmdDsgcGFkZGluZzozcHggMCAwIDZweDsiLCIgLnZpZXctcm93Ijoid2hpdGUtc3BhY2U6IG5vd3JhcDsiLCIgLmRiLWJ0bnMiOnsiIjond2lkdGg6NTVweDsgZGlzcGxheTppbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWduOnRvcDsgdGV4dC1hbGlnbjpyaWdodDsgZm9udC1mYW1pbHk6ICJmb3VuZGF0aW9uLWljb25zIjsgZm9udC13ZWlnaHQ6NDAwOycsIj5zcGFuIjoib3BhY2l0eTowLjY7Zm9udC1zaXplOjAuOWVtOyBjdXJzb3I6cG9pbnRlcjsgcGFkZGluZzogMCAzcHggMCAycHg7In0sIiAudmlldy1yb3c+ZGl2IjoiZGlzcGxheTppbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWduOnRvcDsgd29yZC13cmFwOmJyZWFrLXdvcmQ7IHdoaXRlLXNwYWNlOmJyZWFrLXNwYWNlczsiLCIgLnZpZXctYXV4PmRpdiI6ImRpc3BsYXk6aW5saW5lLWJsb2NrOyB2ZXJ0aWNhbC1hbGlnbjp0b3A7IG1pbi1oZWlnaHQ6MS4zZW07IiwiIC5kYi1nZW5lcmFsIjoid2lkdGg6Y2FsYygxMDAlIC0gIDMzOHB4IC0gNTVweCk7IiwiIC5kYi1ncm91cC1uYW1lIjoid2lkdGg6Y2FsYygxMDAlIC0gMzM4cHggKyAxNTBweCk7IiwiIC5taDE5ZW0iOiJtaW4taGVpZ2h0OjEuOWVtOyIsIiAubWgxM2VtIjoibWluLWhlaWdodDoxLjNlbTsiLCIgLnh3NDVwIjoibWF4LXdpZHRoOjQ1JTtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczsiLCIgLmNvbC1pZHMiOiJ3aWR0aDozMCU7cGFkZGluZzowIDIwcHggMCA4cHg7IiwiIC5jb2wtdmFscyI6IndpZHRoOjcwJTsgcGFkZGluZy1sZWZ0OjEwcHg7IiwiIC5jb2wtanNvbiI6eyIiOiJ3aWR0aDozNzBweCFpbXBvcnRhbnQ7IHotaW5kZXg6NDsgYmFja2dyb3VuZC1jb2xvcjppbmhlcml0OyBtaW4taGVpZ2h0OjJlbTttYXJnaW46LTAuMzVlbSAwIC0wLjM1ZW0gLTYwcHg7IHBhZGRpbmc6IDAuMjVlbSAwIWltcG9ydGFudDsifSwiIC52aWV3LXRvZmlsdGVyIjoiZGlzcGxheTppbmxpbmUtYmxvY2s7IG1hcmdpbi1sZWZ0OjVweDt3aWR0aDoyMHB4O2xpbmUtaGVpZ2h0OjEuMmVtO29wYWNpdHk6MDt0cmFuc2l0aW9uOm9wYWNpdHkgMC41czsiLCIgLnZpZXctcm93OmhvdmVyIC52aWV3LXRvZmlsdGVyIjoib3BhY2l0eTowLjU7Y3Vyc29yOnBvaW50ZXI7IiwiIC5kYi1ncm91cCI6eyIiOiJ6LWluZGV4OjI7Ym9yZGVyLXRvcDoxcHggc29saWQgI2UxZTVlODsiLCIrLmRiLWdyb3VwLnp6YXJpZ2h0IjoiYm9yZGVyLXRvcDpub25lOyIsIi56emFyaWdodCsuemdycCI6ImJvcmRlci10b3A6MXB4IHNvbGlkICNlMWU1ZTg7IiwiOmxhc3QtY2hpbGQiOiJib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZTFlNWU4OyJ9LCIgLnpncnB4Ky56Z3JwIjoiYm9yZGVyLXRvcDoxcHggc29saWQgI2UxZTVlODsiLCIgLnpncnB4PmlucHV0LnJvdy1zZWwiOiJtYXJnaW4tbGVmdDoyMHB4OyIsIiAuemdycHg+LmRiLWdlbmVyYWwiOiJ3aWR0aDpjYWxjKDEwMCUgLSAgMzM4cHggLSA1NXB4IC0gMThweCk7IiwiIC52aWV3LXJvdzpsYXN0LWNoaWxkLnpncnB4IjoiYm9yZGVyLWJvdHRvbToxcHggc29saWQgI2UxZTVlODsiLCIuaGFzc2VhcmNoIjp7IiAuemdycHgrLnpncnAiOiJib3JkZXItdG9wOm5vbmU7IiwiIC56Z3JweD5pbnB1dC5yb3ctc2VsIjoibWFyZ2luLWxlZnQ6M3B4OyIsIiAuemdycHg+LmRiLWdlbmVyYWwiOiJ3aWR0aDpjYWxjKDEwMCUgLSAgMzM4cHggLSA1NXB4KTsifX0sIiAjdGFzay1wYW5lbCI6eyIiOiJvdXRsaW5lOm5vbmU7In0sIiAudGFwLWRiaW5mbyI6ImN1cnNvcjpwb2ludGVyOyIsIiAuY2ItdGFzay1yb3ciOiJ3aWR0aDoyN3B4OyBtYXJnaW4tbGVmdDotMjdweDsiLCIgI2RiLXBhbmVsIjp7IjpiZWZvcmUiOidjb250ZW50OiIgIjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MHB4O3otaW5kZXg6MTtoZWlnaHQ6MTAwJTtyaWdodDoyMzBweDt3aWR0aDo4MHB4O2JvcmRlci1sZWZ0OjFweCBzb2xpZCByZ2JhKDE3OCwxODQsMTkwLDAuMik7Ym9yZGVyLXJpZ2h0OjFweCBkb3R0ZWQgcmdiYSgxNzgsMTg0LDE5MCwwLjQpO3BvaW50ZXItZXZlbnRzOm5vbmU7JywiOmFmdGVyIjonY29udGVudDoiICI7cG9zaXRpb246YWJzb2x1dGU7dG9wOjBweDt6LWluZGV4OjM7aGVpZ2h0OjEwMCU7cmlnaHQ6ODBweDt3aWR0aDo4MHB4O2JvcmRlci1sZWZ0OjFweCBzb2xpZCByZ2JhKDE3OCwxODQsMTkwLDAuMik7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCByZ2JhKDE3OCwxODQsMTkwLDAuMik7cG9pbnRlci1ldmVudHM6bm9uZTsnfSwiIC5iYnMiOiJib3JkZXItYm90dG9tLWNvbG9yOiNlM2U5ZWM7IiwiIC5iYXMiOiJib3JkZXItY29sb3I6I2UzZTllYzsiLCIgLmJycyI6ImJvcmRlci1yaWdodDoxcHggc29saWQgI2UzZTllYzsiLCIgLmJyc2wiOiJib3JkZXItcmlnaHQ6MXB4IHNvbGlkIHJnYmEoMjExLDIxNywyMjIsMC4zKTsiLCIgLmJjZWxsMCI6ImJvcmRlci1sZWZ0OjFweCBzb2xpZCByZ2JhKDExNSwxMjEsMTI4LDAuMSk7IiwiIC5iY2VsbDEiOiJib3JkZXItbGVmdDoxcHggc29saWQgcmdiYSgxMTUsMTIxLDEyOCwwLjA3KTsiLCIgLncxMDBwLTMzOCI6IndpZHRoOmNhbGMoMTAwJSAtIDMzOHB4KTsiLCIgLncxMDBwLTMxMCI6IndpZHRoOmNhbGMoMTAwJSAtIDMxMXB4KTsiLCIgLnRhc2stcm93LXRpcCI6Im1pbi13aWR0aDozMCU7IHRleHQtYWxpZ246Y2VudGVyOyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGJvcmRlci1yYWRpdXM6MnB4OyBwYWRkaW5nOiAwIDJweCAxcHggMnB4OyIsIiAuYnRuLWRvbmUtcmVzdGFydCI6eyIiOiJvcGFjaXR5OjAuNDt0cmFuc2l0aW9uOm9wYWNpdHkgMC41czsiLCI6aG92ZXIiOiJvcGFjaXR5OjE7In19LGluaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPWEuZGF0YTtyZXR1cm4gYS5Mcz1hLlBobygiTHMiKSxhLlJvdz1hLlJvdy5hc3NpZ24oYS5sYW5nKSxhLlBobygiaXNJRSIpfHxbIlJvdyJdLmZvckVhY2goZnVuY3Rpb24oeCl7YVt4XT1hLlBobygiQ29tcGlsZVQiKShhW3hdKX0pLCQuZXh0ZW5kKGIudGFzay5mb2xkLGEuTHMoIlRhc2tzLkZvbGQiKXx8e30pLCQuZXh0ZW5kKGIuc3RhcnMsYS5McygiREJzLlN0YXJzIil8fHt9KSwkLmV4dGVuZChiLmdyb3VwcyxhLkxzKCJEQnMuR3JvdXBzIil8fHt9KSxhLlJlbGlzdE5vdz1hLlJlbGlzdC5kZWJvdW5jZSgxMCksYS5SZWxpc3Q9YS5SZWxpc3QudGhyb3R0bGUoNTAwKSxhLkFycm93cz1hLkFycm93cy5zcGxpdCgiXG5cbiIpLHguaHRtbChhLkhUTUwuYXNzaWduKGEubGFuZykpLHgub24oImNsaWNrLm15IiwnaW5wdXRbbmFtZT0iZGItc2VsZWN0aW9uIl0nLGZ1bmN0aW9uKCl7dmFyIGM9W107eC5maW5kKCdpbnB1dFtuYW1lPSJkYi1zZWxlY3Rpb24iXScpLmVhY2goZnVuY3Rpb24oKXt2YXIgeD0kKHRoaXMpO3guaXMoIjpjaGVja2VkIikmJmMucHVzaCh4LnZhbCgpKX0pLGIuc2VsZWN0aW9uPWMsYi5vc2VsPWN3LmxpYi5hMm8oYi5zZWxlY3Rpb24pLGEubXkuY2hlY2soIiN2aWV3LWhhc3NlbGVjdGlvbiIpfSkseC50aGVuKGZ1bmN0aW9uKCl7JC5leHRlbmQoITAsYS5kYXRhLnNlcnZpY2UsYS5QaG8oIkNvdWNoIikpfS5kZWJvdW5jZSgxMDApKSxhLkdldExpc3QoITApLnRoZW4oZnVuY3Rpb24oKXthLlRhc2tMb29wSW50ZXJ2YWw9YS5QaG8oIkNmZyIpLmxvb3BBY3RpdmVUYXNrcyxhLkdldFRhc2tzKCEwKSxhLlJlc3RhcnRQb2xsKCl9KX0sSFRNTDonPGRpdiBjbGFzcz0idzU1cCBkaWIgdmF0Ij48ZGl2IGlkPSJhLWhlYWQiIGNsYXNzPSJhcHAtaGVhZCBudyBwdDE4IHBsMjAgcHIyMCBsaDE2MCI+PGRpdiBjbGFzcz0iZnIgZnM5NSB6aTIiIHN0eWxlPSJtYXgtd2lkdGg6MTgwcHg7d2lkdGg6Y2FsYygxMDAlIC0gNDU1cHgpOyI+PGRpdiBjbGFzcz0iZmktbWFnbmlmeWluZy1nbGFzcyBibHVlIG81MCBmczk1IiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB6LWluZGV4OiArMTsgbGVmdDogOHB4O3RvcDogMC4yZW07Ij48L2Rpdj48aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImRiLXNlYXJjaCIgY2xhc3M9InVpLXNlYXJjaCB3MTAwcCBtbDAgbXIwIG10MCBwcjEwIiBzcGVsbGNoZWNrPSJmYWxzZSIgYXV0b2NvbXBsZXRlPSJvZmYiIHBsYWNlaG9sZGVyPSJ7UExDX1NFQVJDSF9EQlN9IiBzdHlsZT0iYmFja2dyb3VuZC1pbWFnZTpub25lO3BhZGRpbmctcmlnaHQ6MTlweCFpbXBvcnRhbnQ7Ij48c3BhbiBjbGFzcz0iZmkteCBmczgwIGRpYiB2YXQgcHQyIGJsdWUgdWktc2VhcmNoLWNsZWFyIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LTE5cHghaW1wb3J0YW50OyJvbmNsaWNrPSIkKHRoaXMpLnNpYmxpbmdzKFwnaW5wdXQ6ZXEoMClcJykudmFsKFwnXCcpLmJsdXIoKSI+PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9Im53IGRpYiB2YXQgdzc1cCBwcjEwIj48YnV0dG9uIGlkPSJidG4tcmVsb2FkIiBjbGFzcz0idzM4IG1yMiIgdGl0bGU9IntUSVBfUkVMT0FEfSI+PHNwYW4gY2xhc3M9ImZpLWxvb3AiPjwvc3Bhbj48L2J1dHRvbj48YnV0dG9uIGlkPSJidG4tbmV3ZGIiIGNsYXNzPSJncmVlbiBtcjIiPntCVE5fTkVXREJ9PC9idXR0b24+PHNwYW4gaWQ9InZpZXctaGFzc2VsZWN0aW9uIj48YnV0dG9uIGlkPSJidG4tZGVsZGIiIGNsYXNzPSJtcjIgcmVkIiBkaXNhYmxlZD57QlROX0RFTERCfTwvYnV0dG9uPjxidXR0b24gaWQ9ImJ0bi1jb21wYWN0IiBjbGFzcz0ibXIyIiBkaXNhYmxlZD57QlROX0NPTVBBQ1R9PC9idXR0b24+PGJ1dHRvbiBpZD0iYnRuLWR1bXAiIGNsYXNzPSJtcjIiIHN0eWxlPSJtaW4td2lkdGg6NzVweCI+e0JUTl9VTkRVTVB9PC9idXR0b24+PC9zcGFuPjxzcGFuIGNsYXNzPSJwbHNoaW0gZGliIHZhdCI+PHNwYW4gaWQ9ImJ0bi1zdGF0cyIgY2xhc3M9Im1yMiI+PGEgaHJlZj0iI19zdGF0cyIgY2xhc3M9InRkbiBsaDE0MGkgYnV0dG9uIj57QlROX1NUQVRTfTwvYT48L3NwYW4+PC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgaWQ9ImRiLXBhbmVsIiBjbGFzcz0icGFuZWxoZWlnaHQtMzIgYnIyIG10MTYgbWwyMCBtcjIwIj48ZGl2IGNsYXNzPSJiZy1wZ3JheSBiYnMgbGgxNjAgcHQyIG53IG9oIGVsbCB4cGFuZWwiPjxkaXYgY2xhc3M9IncxMDBwLTMxMCBkaWIgdmF0IG53IG9oIGVsbCI+PHNwYW4gaWQ9ImJ0bi12aWV3LWRpciIgY2xhc3M9ImRpYiBwbDggcHI2IG1yMiB2YXQgY3AgbzUwIGZzODAgcHQxIHBzZXVkb2xpbmsgdGRuIGgzMCI+PC9zcGFuPjxzcGFuIGlkPSJ2aWV3LWxpbmtzIiBjbGFzcz0iZ3JheSBoaWRlIj48L3NwYW4+PGRpdiBpZD0idmlldy1jb2xzIiBjbGFzcz0iZGliIHZhdCBwcjEyIG53IHhncmF5Ij48L2Rpdj48ZGl2IGlkPSJidG4tc2VsZWN0IiBjbGFzcz0iYnV0dG9uIHhidXR0b24gcHQyIGgyNSBtdDEgZnM5MCBsaDEzMCB0ZG4gZnIgbXIzIj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJ3MzEwIGRpYiBncmF5IGZzOTAiPjxkaXYgY2xhc3M9Inc4MCBkaWIgdGFyIHByNiI+e0hfRE9DU308L2Rpdj48ZGl2IGNsYXNzPSJ3NzAgZGliIHBsNyI+e0hfREVMRE9DU308L2Rpdj48ZGl2IGNsYXNzPSJ3ODAgZGliIHRhciBwcjciPntIX1NFUX08L2Rpdj48ZGl2IGNsYXNzPSJ3ODAgZGliIHRhciBwcjciPntIX1NJWkV9PC9kaXY+PC9kaXY+PC9kaXY+PHNlY3Rpb24gaWQ9ImRiLWxpc3QiIGNsYXNzPSJwYW5lbGhlaWdodC02MyB4Z3JheSBsaDE3MCBieHRvcCBveGgiPjwvc2VjdGlvbj48L2Rpdj48ZGl2IGlkPSJkYi1wcm94eSIgY2xhc3M9ImhpZGUiPjwvZGl2PjwvZGl2PjxkaXYgaWQ9InJwYW5lbCIgY2xhc3M9Inc0NXAgZGliIHZhdCBwcjIwIj48ZGl2IGlkPSJhLWhlYWQiIGNsYXNzPSJhcHAtaGVhZCBudyBwdDE4IG1iMTYgdGFsIj48ZGl2IGNsYXNzPSJmciBmczk1IHRhbCIgc3R5bGU9Im1heC13aWR0aDoxODBweDt3aWR0aDpjYWxjKDEwMCUgLSAzNTBweCk7Ij48ZGl2IGNsYXNzPSJmaS1tYWduaWZ5aW5nLWdsYXNzIGJsdWUgbzUwIGZzOTUiIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHotaW5kZXg6ICsxOyBsZWZ0OiA4cHg7dG9wOiAwLjJlbTsiPjwvZGl2PjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0idGFzay1zZWFyY2giIGNsYXNzPSJ1aS1zZWFyY2ggdzEwMHAgbWwwIG1yMCBtdDAgcHIxMCIgc3BlbGxjaGVjaz0iZmFsc2UiIGF1dG9jb21wbGV0ZT0ib2ZmIiBwbGFjZWhvbGRlcj0ie1BMQ19TRUFSQ0hfVEFTS1N9IiBzdHlsZT0iYmFja2dyb3VuZC1pbWFnZTpub25lO3BhZGRpbmctcmlnaHQ6MTlweCFpbXBvcnRhbnQ7Ij48c3BhbiBjbGFzcz0iZmkteCBmczgwIGRpYiB2YXQgcHQyIGJsdWUgdWktc2VhcmNoLWNsZWFyIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LTE5cHghaW1wb3J0YW50OyJvbmNsaWNrPSIkKHRoaXMpLnNpYmxpbmdzKFwnaW5wdXQ6ZXEoMClcJykudmFsKFwnXCcpLmJsdXIoKSI+PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9Inc3MHAgZGliIj48YnV0dG9uIGlkPSJidG4tcmVsb2Fkc3luYyIgY2xhc3M9Inc0MCBtcjIiIHRpdGxlPSJ7VElQX1RBU0tfUkVMT0FEfSI+PHNwYW4gY2xhc3M9ImZpLWxvb3AiPjwvc3Bhbj48L2J1dHRvbj48YnV0dG9uIGlkPSJidG4tbmV3c3luYyIgY2xhc3M9Im1yMiB3MTA1IHBsNCBwcjIgYmx1ZSI+e0JUTl9UQVNLX05FV1NZTkN9PC9idXR0b24+PGJ1dHRvbiBpZD0iYnRuLXJlc3luYyIgY2xhc3M9Im9yYW5nZSBtcjIiIGRpc2FibGVkPntCVE5fVEFTS19SRVNZTkN9PC9idXR0b24+PGJ1dHRvbiBpZD0iYnRuLXN0b3BzeW5jIiBjbGFzcz0icmVkIiBkaXNhYmxlZD57QlROX1RBU0tfU1RPUH08L2J1dHRvbj48L2Rpdj48L2Rpdj48ZGl2IGlkPSJ0YXNrLXBhbmVsIiBjbGFzcz0icGFuZWxoZWlnaHQtMzIgYnIyIG10MTYiPjxkaXY+PGRpdiBjbGFzcz0iYmctcGdyYXkgbGgxNzAgeHBhbmVsIHB0MSI+PGRpdiBjbGFzcz0iZnIgcHI0IHRhciI+PHNwYW4gaWQ9InRhc2stZmlsdGVyIiBjbGFzcz0iaHBhbmVsIGZzOTAgcGw0Ij48L3NwYW4+PC9kaXY+PGRpdiBpZD0idGFzay1jb2xzIiBjbGFzcz0iZGliIHZhdCBwbDggbncgeGdyYXkgcHQxIHByMTIiPjwvZGl2PjxkaXYgaWQ9ImJ0bi1zZWxlY3QtdGFza3MiIGNsYXNzPSJidXR0b24geGJ1dHRvbiBwdDIgaDI1IG10MiBmczkwIGxoMTMwIHRkbiBkaWIgdmF0IGhpZGUiPjwvZGl2PjwvZGl2PjxzZWN0aW9uIGlkPSJ0YXNrLWxpc3QiIGNsYXNzPSJwYW5lbGhlaWdodC02MyB4Z3JheSBsaDE3MCBieHRvcCI+PC9zZWN0aW9uPjwvZGl2PjwvZGl2PjxkaXYgaWQ9InN0YXR1cy1wcm94eSIgY2xhc3M9ImhpZGUiPjwvZGl2PjwvZGl2PicsUm93Oic8ZGl2IGNsYXNzPSJ2aWV3LXJvdyBkYi1idWNrZXQge3N0YXJ9IHpncnB7Z3JvdXBfeH0iPjxpbnB1dCBjbGFzcz0iY3Agcm93LXNlbCIgdHlwZT0iY2hlY2tib3giIG5hbWU9ImRiLXNlbGVjdGlvbiIge2NoZWNrZWR9IHZhbHVlPSJ7bmFtZXNhZmV9Ij48ZGl2IGNsYXNzPSJkYi1nZW5lcmFsIG1oMTNlbSBwcjIiPjxhIGhyZWY9IiN7aHJlZn0iIGNsYXNzPSJ0ZG4gbXIyMCBsYmw0Y2hlY2sgdmlldy1kYi1uYW1lIiB0aXRsZT0ie3Rvb2x0aXB9Ij57aG5hbWV9PC9hPjwvZGl2PjxkaXYgY2xhc3M9ImRiLWJ0bnMiPjxzcGFuIGNsYXNzPSJidG4tZGJhY2wge3Byb3RlY3RlZH0gcHI1IiB0aXRsZT0ie1RJUF9CVE5fQUNMfSI+PC9zcGFuPjxzcGFuIGNsYXNzPSJidG4tZGJpbmZvIGxncmF5IiB0aXRsZT0ie1RJUF9CVE5fSU5GT30iPu+Fnjwvc3Bhbj48c3BhbiBjbGFzcz0iYnRuLWRic3RhciB7c3Rhcn0gcHI1IiB0aXRsZT0ie1RJUF9CVE5fU1RBUn0iPu+Hrjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSJ3MzEwIHZpZXctYXV4IGZzOTUgdGFwLWRiaW5mbyIgdGl0bGU9IntUSVBfRE9DX0lORk99Ij48ZGl2IGNsYXNzPSJjb2wtdHJpbSBjb2wtODAiIHRpdGxlPSJ7ZG9jX2NvdW50fSI+e2RvY19jb3VudF9zYWZlfTwvZGl2PjxkaXYgY2xhc3M9ImNvbC10cmltIGNvbC03MCBncmF5Ij57ZG9jX2RlbF9jb3VudF9zYWZlfTwvZGl2PjxkaXYgY2xhc3M9ImNvbC10cmltIGNvbC04MCIgdGl0bGU9Int1cGRhdGVfc2VxfSI+e3VwZGF0ZV9zZXFfc2FmZX08L2Rpdj48ZGl2IGNsYXNzPSJjb2wtdHJpbSBjb2wtODAgcHI4IiB0aXRsZT0ie3NpemV0aXB9Ij57c2l6ZXNhZmV9PC9kaXY+PC9kaXY+PC9kaXY+JyxSb3dHcm91cDonPGRpdiBjbGFzcz0idmlldy1yb3cgZGItZ3JvdXAgY3Agenp7Zm9sZH0iIGRhdGEtZ3JvdXA9IntpZH0iPjxkaXYgY2xhc3M9IncyMCBtbDMgbXIyIHBsMSBmczEwNSI+PHNwYW4gY2xhc3M9Intmb2xkfSI+PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9ImRiLWdyb3VwLW5hbWUgbWgxM2VtIHByMiBtcjIiPjxkaXYgY2xhc3M9Inh3NDVwIGRpYiB2YXQgbncgZnc1MDAgbzkwIj57c3RhcnR9PC9kaXY+PHNwYW4gY2xhc3M9ImJsdWUxIGZ3NjAwIj7igInCt8K3wrfigIk8L3NwYW4+PGRpdiBjbGFzcz0ieHc0NXAgZGliIHZhdCBudyBncmF5MSI+e2VuZH08L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJ3MTYwIHZpZXctYXV4IGZzOTUiPjxkaXYgY2xhc3M9ImNvbC10cmltIGNvbC04MCB0YXIgZ3JheTIiPntzaXplfSBEQnM8L2Rpdj48ZGl2IGNsYXNzPSJjb2wtdHJpbSBjb2wtODAgdGFyIHByOCBncmF5MiI+e2Rpc2t9PC9kaXY+PC9kaXY+PC9kaXY+JyxBcnJvd3M6JzxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwIiB5PSIwIiB3aWR0aD0iMTYiIGhlaWdodD0iOCIgdmlld0JveD0iMCwgMCwgMTYsIDgiPlxuICA8ZyBpZD0iTGF5ZXJfMSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAsIC0wKSI+XG4gICAgPHBhdGggZD0iTTEuNSw0LjUgTDE1LjUsNC41IE0xMi41LDcuNSBMMTUuNSw0LjUgTDEyLjUsMS41IiBmaWxsLW9wYWNpdHk9IjAiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPlxuICA8L2c+XG48L3N2Zz5cblxuPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjAiIHk9IjAiIHdpZHRoPSIxNi4zNzUiIGhlaWdodD0iOCIgdmlld0JveD0iMCwgMCwgMTYuMzc1LCA4Ij5cbiAgPGcgaWQ9IkxheWVyXzEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAuMzc1LCAtMTApIj5cbiAgICA8cGF0aCBkPSJNNi43NSwxNC41IEwxNS41LDE0LjUgTTEyLjUsMTcuNSBMMTUuNSwxNC41IEwxMi41LDExLjUgTTEuMTI1LDExLjY4NyBMMywxNC44MTMgTDMsMTcuNSBDMywxNy41IDUsMTcuNSA1LDE3LjUgQzUsMTcuNSA1LDE0LjgxMyA1LDE0LjgxMyBMNi44NzUsMTEuNjg3IEwxLjEyNSwxMS42ODcgeiIgZmlsbC1vcGFjaXR5PSIwIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz5cbiAgPC9nPlxuPC9zdmc+XG5cbjxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwIiB5PSIwIiB3aWR0aD0iMTYiIGhlaWdodD0iOCIgdmlld0JveD0iMCwgMCwgMTYsIDgiPlxuICA8ZyBpZD0iTGF5ZXJfMSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAsIC0yMCkiPlxuICAgIDxwYXRoIGQ9Ik00LjUsMjEuNSBMNS41LDIxLjUgTDUuNSwyNy41IEw0LjUsMjcuNSBNMi41LDIxLjUgTDEuNSwyMS41IEwxLjUsMjcuNSBMMi41LDI3LjUgTTE1LjUsMjQuNSBMNywyNC41IE0xMi41LDI3LjUgTDE1LjUsMjQuNSBMMTIuNSwyMS41IiBmaWxsLW9wYWNpdHk9IjAiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPlxuICA8L2c+XG48L3N2Zz5cblxuPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjAiIHk9IjAiIHdpZHRoPSIxNiIgaGVpZ2h0PSI4IiB2aWV3Qm94PSIwLCAwLCAxNiwgOCI+XG4gIDxnIGlkPSJMYXllcl8xIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTYsIC0wKSI+XG4gICAgPHBhdGggZD0iTTMxLjUsNC41IEwxNy41LDQuNSBNMjAuNSwxLjUgTDE3LjUsNC41IEwyMC41LDcuNSIgZmlsbC1vcGFjaXR5PSIwIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz5cbiAgPC9nPlxuPC9zdmc+XG5cbjxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwIiB5PSIwIiB3aWR0aD0iMTYuMzc1IiBoZWlnaHQ9IjgiIHZpZXdCb3g9IjAsIDAsIDE2LjM3NSwgOCI+XG4gIDxnIGlkPSJMYXllcl8xIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTYsIC0xMCkiPlxuICAgIDxwYXRoIGQ9Ik0yNi4yNSwxNC41IEwxNy41LDE0LjUgTTIwLjUsMTcuNSBMMTcuNSwxNC41IEwyMC41LDExLjUgTTMxLjg3NSwxMS42ODcgTDMwLDE0LjgxMyBMMzAsMTcuNSBDMzAsMTcuNSAyOCwxNy41IDI4LDE3LjUgQzI4LDE3LjUgMjgsMTQuODEzIDI4LDE0LjgxMyBMMjYuMTI1LDExLjY4NyBMMzEuODc1LDExLjY4NyB6IiBmaWxsLW9wYWNpdHk9IjAiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPlxuICA8L2c+XG48L3N2Zz5cblxuPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjAiIHk9IjAiIHdpZHRoPSIxNiIgaGVpZ2h0PSI4IiB2aWV3Qm94PSIwLCAwLCAxNiwgOCI+XG4gIDxnIGlkPSJMYXllcl8xIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTYsIC0yMCkiPlxuICAgIDxwYXRoIGQ9Ik0yOC41LDI3LjUgTDI3LjUsMjcuNSBMMjcuNSwyMS41IEwyOC41LDIxLjUgTTMwLjUsMjcuNSBMMzEuNSwyNy41IEwzMS41LDIxLjUgTDMwLjUsMjEuNSBNMTcuNSwyNC41IEwyNiwyNC41IE0yMC41LDIxLjUgTDE3LjUsMjQuNSBMMjAuNSwyNy41IiBmaWxsLW9wYWNpdHk9IjAiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2Utd2lkdGg9IjEiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPlxuICA8L2c+XG48L3N2Zz4nLEJhdGNoSW5mbzpmdW5jdGlvbih4LGEsYil7dmFyIGM9dGhpcyxkPWMuQWxsLGU9KGE9bnVsbCE9YT9hOmMuUGhvKCJDZmciKS5iYXRjaERiSW5mb0RlbGF5LFtdKSxmPWJ8fGMuUGhvKCJDZmciKS5saXN0Q29sc3x8W10sZz1mLmluZGV4T2YoImluZm8iKT4tMSxoPWYuaW5kZXhPZigic2VjdXJpdHkiKT4tMSxpPWMuUGhvKCJDb3VjaCIpLm1heEJhdGNofHwwLGo9e30saz1jLm15P2MubXkuZmluZCgiI2RiLWxpc3QiKTpudWxsLGw9eC5maWx0ZXIoZnVuY3Rpb24oeCl7cmV0dXJuISFjLkFsbFt4XX0pLnNvcnQoZnVuY3Rpb24oeCxhKXt2YXIgYj1kW3hdLnN0YXIsYz1kW2FdLnN0YXI7cmV0dXJuIGI+Yz8tMTpiPT1jPzA6MX0pLG09bC5sZW5ndGg7cmV0dXJuIGk8Mnx8bC5sZW5ndGg8Mj9sLmZvckVhY2goZnVuY3Rpb24oeCxiKXt2YXIgZj1kW3hdO2lmKGMuQmF0Y2hbeF0pcmV0dXJuIGUucHVzaChjLkJhdGNoW3hdKTshKGd8fGh8fGYuc3Rhcil8fGYuZ3JvdXAmJmMuZGF0YSYmIWMuZGF0YS5ncm91cHNbZi5ncm91cF18fGUucHVzaChRLmRlbGF5KDUrYSpiKS50aGVuKG4uZmlsbCh4KSkpfSk6aT4xJiYobC5mb3JFYWNoKGZ1bmN0aW9uKHgsYil7dmFyIGY9ZFt4XSxrPSFmLmdyb3VwfHwhYy5kYXRhfHxjLmRhdGEuZ3JvdXBzW2YuZ3JvdXBdOyhnfHxmLnN0YXIpJiZrPyFqLl98fGpbai5fXS5sZW5ndGg+PWk/KGouXz14LGpbeF09W3hdKTpqW2ouX10ucHVzaCh4KTpoJiZrJiZlLnB1c2goUS5kZWxheSg1K2EqYikudGhlbihxLmZpbGwoeCkpLnRoZW4oYy5SZWxpc3QpKX0pLGU9KGouXz9vKCk6W10pLmNvbmNhdChlKSksUS5hbGxTZXR0bGVkKGUpLnRoZW4oZnVuY3Rpb24oKXsxPT1sLmxlbmd0aCYmaz9rLmxpc3QoInJvdyIsYy5Ob3JtREIoYy5BbGxbbFswXV0pKTpjLlJlbGlzdE5vdygpfSksZTtmdW5jdGlvbiBuKHgpe3ZhciBhLGI9W10uY29uY2F0KHgpLGU9Yi5qb2luKCIvIiksZj0hIWRbZV0uc3RhcjtyZXR1cm4oZ3x8aHx8ZikmJihhPWd8fGY/Yy5SZXEoe3VybDpifSkudGhlbihmdW5jdGlvbih4KXtpZihkW2VdKXJldHVybiB4LnNpemVzJiYoeC5kaXNrX3NpemU9eC5zaXplcy5maWxlLHguZGF0YV9zaXplPXguc2l6ZXMuYWN0aXZlKSwkLmV4dGVuZChkW2VdLHgse3N0YW1wOkRhdGUubm93KCl9KSwoaHx8ZikmJmRbZV0uc2VjdXJpdHkuc2VxPHBhcnNlSW50KGRbZV0udXBkYXRlX3NlcSk/cShlKTp2b2lkIDB9LGZ1bmN0aW9uKHgpezQwND09eCYmZFtlXSYmIl9ub2RlL19sb2NhbC9fbm9kZXMiIT1lP2RlbGV0ZSBjLkFsbFtlXTokLmV4dGVuZChkW2VdLGMuUGhvKCJkYlR5cGUiKSx7c3RhbXA6RGF0ZS5ub3coKX0pfSk6cShlKSk/KGMuQmF0Y2hbZV09US5hbGxTZXR0bGVkKFthXSkudGhlbihmdW5jdGlvbigpeyhtLT0xKT9jLlJlbGlzdCgpOmMuUmVsaXN0Tm93KCksZGVsZXRlIGMuQmF0Y2hbZV19KSxjLkJhdGNoW2VdKTokLkRlZmVycmVkKCkucmVzb2x2ZSgpfWZ1bmN0aW9uIG8oKXt2YXIgeD1bXTtyZXR1cm4gT2JqZWN0LmtleXMoaikuZm9yRWFjaChmdW5jdGlvbihiLGMpe2lmKCJfIiE9Yil7dmFyIGQ9altiXTt4LnB1c2goUS5kZWxheSgxK2EqYyooMHxNYXRoLmxvZyhpKSkpLnRoZW4ocC5maWxsKGQpKSl9fSksYy5QaG8oIkNvdWNoIikudmVyPiIwMDMuIiYmeC5wdXNoKG4oIl9ub2RlL19sb2NhbC9fbm9kZXMiKSkseH1mdW5jdGlvbiBwKHgpe3ZhciBiPXguc2xpY2UoMCksZT1bXSxmPVtdO3JldHVybiBjLlJlcSh7dXJsOlsiX2Ric19pbmZvIl0sbWV0aG9kOiJwb3N0Iixjb250ZW50VHlwZToiYXBwbGljYXRpb24vanNvbiIsZGF0YTpKU09OLnN0cmluZ2lmeSh7a2V5czpifSl9KS50aGVuKGZ1bmN0aW9uKHgpe09iamVjdC5pc0FycmF5KHgpJiYoeC5mb3JFYWNoKGZ1bmN0aW9uKHgpe3ZhciBhPXgua2V5LGI9ISFkW2FdLnN0YXI7aWYoZFthXSl7aWYoeC5lcnJvciYmIl9ub2RlL19sb2NhbC9fbm9kZXMiIT1hKXJldHVybiBkZWxldGUgYy5BbGxbYV0sdm9pZCAwO3ZhciBmPXguaW5mbztmJiYoZi5zaXplcyYmKGYuZGlza19zaXplPWYuc2l6ZXMuZmlsZSxmLmRhdGFfc2l6ZT1mLnNpemVzLmFjdGl2ZSksJC5leHRlbmQoZFthXSxmLHtzdGFtcDpEYXRlLm5vdygpfSkpLChofHxiKSYmZFthXS5zZWN1cml0eS5zZXE8cGFyc2VJbnQoZFthXS51cGRhdGVfc2VxKSYmZS5wdXNoKGEpfX0pLGMuUmVsaXN0KCksZS5sZW5ndGgmJihlLmZvckVhY2goZnVuY3Rpb24oeCxiKXtmLnB1c2goUS5kZWxheSgxK2EqYikudGhlbihxLmZpbGwoeCkpKX0pLFEuYWxsU2V0dGxlZChmKS50aGVuKGZ1bmN0aW9uKCl7Yy5SZWxpc3QoKX0pKSl9KX1mdW5jdGlvbiBxKHgpe3JldHVybiBjLlJlcSh7dXJsOlt4LCJfc2VjdXJpdHkiXX0pLnRoZW4oZnVuY3Rpb24oYSl7aWYoZFt4XSl7dmFyIGI9JC5leHRlbmQoITAse3N0YW1wOkRhdGUubm93KCksc2VxOnBhcnNlSW50KGRbeF0udXBkYXRlX3NlcSksYWRtaW5zOntuYW1lczpbXSxyb2xlczpbXX0sbWVtYmVyczp7bmFtZXM6W10scm9sZXM6W119fSxhKTsiXyI9PXhbMF0mJmIubWVtYmVycy5yb2xlcy5wdXNoKCJfYWRtaW4iKTt2YXIgYz0iIjtjPWIubWVtYmVycy5yb2xlcy5sZW5ndGgrYi5tZW1iZXJzLm5hbWVzLmxlbmd0aD09MD9iLmFkbWlucy5yb2xlcy5sZW5ndGgrYi5hZG1pbnMubmFtZXMubGVuZ3RoIT0wPyJvcmFuZ2UxIGZpLXVubG9jayI6InJlZCBmaS11bmxvY2siOiJncmF5MyBmaS1sb2NrIiwkLmV4dGVuZChkW3hdLHtzZWN1cml0eTpiLHByb3RlY3RlZDpjfSl9fSl9fSxHZXRUYXNrczpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YS5kYXRhLGM9KGEuQWxsLGEubGFuZywiPG5vYnI+ezF9PC9ub2JyPiIpLGQ9Jzxub2JyIHRpdGxlPSJ7Mn0iPnsxfTwvbm9icj4nLGU9JzxzcGFuIGNsYXNzPSJ7Mn0iPnsxfTwvc3Bhbj4nLGY9JC5EZWZlcnJlZCgpLGc9YS5BcnJvd3MsaD1hLlBobygiQ291Y2giKS52ZXIsaT1hLlBobygiUmVwbGljYXRvckRCIik7cmV0dXJuIWEubXkuaW5kb20oKXx8YS5teS5yb290KCkuaGFzQ2xhc3MoImhpZGUiKXx8d2luZG93LmRvY3VtZW50LmhpZGRlbj9mLnJlc29sdmUoKS5wcm9taXNlKCk6Y3cubWUoIm5hbWUiKT9hLlRhc2tMb29wSW50ZXJ2YWwhPWEuUGhvKCJDZmciKS5sb29wQWN0aXZlVGFza3M/KGEuUmVzdGFydFBvbGwuZGVib3VuY2UoMSkoKSxmLnJlc29sdmUoKS5wcm9taXNlKCkpOihqKCkudGhlbihrKS50aGVuKGwpLmZhaWwoZnVuY3Rpb24oeCxiLGMpe3g+NDAwJiZ4PDYwMCYmIWN3Lm1lKCJuYW1lIik/YS5UYXNrcz1bXTpjb25zb2xlLmxvZyh4LGIsYyl9KS5hbHdheXMocS5kZWJvdW5jZSgxKSksZi5wcm9taXNlKCkpOihhLlRhc2tzPVtdLHEuZGVib3VuY2UoMSkoKSxmLnByb21pc2UoKSk7ZnVuY3Rpb24gaigpe3ZhciB4PSQuRGVmZXJyZWQoKTtyZXR1cm4gYS5SZXEoe3VybDpbIl9hY3RpdmVfdGFza3MiXX0pLnRoZW4oYykuZmFpbCh4PT5jKFtdKSk7ZnVuY3Rpb24gYyhiKXt2YXIgYz1iLmNvbmNhdChhLlRhc2tNb2NrfHxbXSkuc29ydEJ5KCJ0eXBlIik7Yy5mb3JFYWNoKG0pLGMuZm9yRWFjaChmdW5jdGlvbih4KXt4Ll9uZXc9ITAseC5kb2NfaWQ/ZCgiZG9jX2lkIix4LCEwKTp4LnJlcGxpY2F0aW9uX2lkP2QoInJlcGxpY2F0aW9uX2lkIix4LCEwKTp4LnBpZCYmZCgicGlkIix4LCExKX0pLGEuVGFza3MucmVtb3ZlKGZ1bmN0aW9uKHgpe3JldHVybiF4Ll9uZXcmJiJFcnJvciIhPXgucGlkJiYiRG9uZSIhPXgucGlkfSksYS5UYXNrcy5mb3JFYWNoKGZ1bmN0aW9uKHgpe3guX25ldz0hMX0pLHgucmVzb2x2ZSgpfWZ1bmN0aW9uIGQoeCxjLGQpe3ZhciBlLGY7Y1t4XSYmKGQmJihjLl9zZWxlY3RlZD1iLnRhc2suc2VsZWN0aW9uLmluZGV4T2YoYy5yZXBsaWNhdGlvbl9pZCk+LTEpLChmPWEuVGFza3MuZmluZEluZGV4KGZ1bmN0aW9uKGEpe3JldHVybiBhW3hdPT1jW3hdfSkpPi0xPygoZT1hLlRhc2tzW2ZdKS5maWx0ZXImJihjLmZpbHRlcj1lLmZpbHRlciksZS5waG90b25fdGFzayYmKGMucGhvdG9uX3Rhc2s9ZS5waG90b25fdGFzayksZS5fdHlwZSYmKGMuX3R5cGU9ZS5fdHlwZSksYS5UYXNrc1tmXT1jKTphLlRhc2tzLnB1c2goYykpfX1mdW5jdGlvbiBrKCl7aWYoIShoPCIwMDIuIikpe3ZhciB4PSQuRGVmZXJyZWQoKTtyZXR1cm4gYS5SZXEoe3VybDpbIl9zY2hlZHVsZXIiLCJqb2JzIl19KS50aGVuKGZ1bmN0aW9uKHgpeygoeHx8e30pLmpvYnN8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHgpe3ZhciBiLGM9eC5oaXN0b3J5fHxbXSxkPWNbMF0sZT0oZHx8e30pLnR5cGU7IXgucGlkJiZ4LmRvY19pZCYmYy5sZW5ndGgmJiJjcmFzaGVkIj09ZSYmKChiPWEuVGFza3MuZmluZChmdW5jdGlvbihhKXtyZXR1cm4gYS5kb2NfaWQ9PXguZG9jX2lkfSkpJiZhLlRhc2tzLnJlbW92ZShiKSxhLlRhc2tzLnB1c2goJC5leHRlbmQobyh7X2lkOnguZG9jX2lkLHNvdXJjZTp4LnNvdXJjZSx0YXJnZXQ6eC50YXJnZXQsY29udGludW91czovY29udGludW91cyQvLnRlc3QoeC5pZCksb3duZXI6eC51c2VyfHwiPyIsX3JlcGxpY2F0aW9uX3N0YXRlOiJlcnJvciIsX3JlcGxpY2F0aW9uX3N0YXRlX3RpbWU6ZC50aW1lc3RhbXAsX3JlcGxpY2F0aW9uX2lkOnguaWQsX3JlcGxpY2F0aW9uX3N0YXRlX3JlYXNvbjpkLnJlYXNvbnx8IlVua25vd24ifSksYiYmYi5waG90b25fdGFzaz97cGhvdG9uX3Rhc2s6Yi5waG90b25fdGFza306e30pKSl9KX0pLmFsd2F5cyhmdW5jdGlvbigpe3gucmVzb2x2ZSgpfSkseC5wcm9taXNlKCl9fWZ1bmN0aW9uIGwoKXtpZighYS5QaG8oIkNmZyIpLnRhc2tzUmVhZFJlcGxpY2F0b3J8fGIudGFzay5maWx0ZXIuaW5kZXhPZigiY29tcGFjdGlvbiIpPi0xKXJldHVybiBxKCk7dmFyIHgsYz1pO3JldHVybih4PWIudGFzay5zZXE/YS5SZXEoe3VybDpbYywiX2NoYW5nZXMiLHtpbmNsdWRlX2RvY3M6ITAsc2luY2U6Yi50YXNrLnNlcX1dLGRhdGFUeXBlOiJqc29uIn0pOmEuUmVxKHt1cmw6W2MsIl9hbGxfZG9jcyIse2luY2x1ZGVfZG9jczohMCx1cGRhdGVfc2VxOiEwfV0sZGF0YVR5cGU6Impzb24ifSkpLnRoZW4oZnVuY3Rpb24oeCl7Yi50YXNrLnNlcT14Lmxhc3Rfc2VxfHx4LnVwZGF0ZV9zZXEsKHgucm93c3x8eC5yZXN1bHRzKS5mb3JFYWNoKGZ1bmN0aW9uKHgpe2lmKHguZG9jLl9kZWxldGVkKXJldHVybiBhLlRhc2tzLnJlbW92ZShmdW5jdGlvbihhKXtyZXR1cm4gYS5kb2NfaWQ9PXguZG9jLl9pZH0pLHZvaWQgMDt2YXIgYixjPXguZG9jLl9yZXBsaWNhdGlvbl9zdGF0ZTsiZXJyb3IiPT1jJiYoYS5UYXNrcy5yZW1vdmUoZnVuY3Rpb24oYSl7cmV0dXJuIGEuZG9jX2lkPT14LmRvYy5faWR9KSxhLlRhc2tzLnB1c2gobyh4LmRvYykpKSwiY29tcGxldGVkIj09Yz8oYS5UYXNrcy5yZW1vdmUoZnVuY3Rpb24oYSl7cmV0dXJuIGEuZG9jX2lkPT14LmRvYy5faWR9KSx4LmRvYy5fcmVwbGljYXRpb25faWR8fCh4LmRvYy5fcmVwbGljYXRpb25faWQ9Y3cubGliLnNkYm0oeC5kb2MuX2lkKSksYS5UYXNrcy5wdXNoKHAoeC5kb2MpKSk6ImNvbXBsZXRlZCIhPWMmJihPYmplY3QuaXNTdHJpbmcoeC5kb2MuZmlsdGVyKXx8T2JqZWN0LmlzQXJyYXkoeC5kb2MuZG9jX2lkcykpJiYoYj1hLlRhc2tzLmZpbmQoZnVuY3Rpb24oYSl7cmV0dXJuIGEuZG9jX2lkPT14LmRvYy5faWR9KSkmJihiLmZpbHRlcj14LmRvYy5maWx0ZXJ8fHguZG9jLmRvY19pZHMpLHguZG9jLnBob3Rvbl90YXNrJiYoYj1hLlRhc2tzLmZpbmQoZnVuY3Rpb24oYSl7cmV0dXJuIGEuZG9jX2lkPT14LmRvYy5faWR9KSkmJihiLnBob3Rvbl90YXNrPXguZG9jLnBob3Rvbl90YXNrKX0pfSkseH1mdW5jdGlvbiBtKHgpe2lmKCJncm91cCI9PXguX3R5cGUpcmV0dXJuIHg7dmFyIGE9eC50eXBlLGI9bnVsbD09YT8iIjphLnJlcGxhY2UoL18vZywiICIpLnJlcGxhY2UoL2RhdGFiYXNlL2dpLCJEQiIpLnJlcGxhY2UoL2NvbXBhY3Rpb24vZ2ksImNvbXBhY3QiKS5yZXBsYWNlKC9yZXBsaWNhdGlvbi9naSwiIik7Yj0oYj1iLmNvbXBhY3QoKSk/YisiOiI6IiIseC5fdHlwZT0iIjt2YXIgZT0nPGRpdiBjbGFzcz0idGFycm93Ij57MX08L2Rpdj4nLGY9JzxzcGFuIGNsYXNzPSJyZWQxIGZzOTUiPnsxfTwvc3Bhbj4nLGc9JzxzcGFuIGNsYXNzPSJncmF5IGZzOTUiPnsxfTwvc3Bhbj4nO3guX2luZGV4PUpTT04uc3RyaW5naWZ5KE9iamVjdC5yZWplY3QoeCwvXl8vKSkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bIixce1x9XFtcXV0vZywiICIpLmNvbXBhY3QoKS5zdHJpcFRhZ3MoKSx4LmZpbHRlciYmT2JqZWN0LmlzQXJyYXkoeC5maWx0ZXIpJiYoeC5kb2NzPSEwKSwiRXJyb3IiPT14LnBpZD8oeC5fcGlkPWYuYXNzaWduKCc8c3BhbiBjbGFzcz0iZmktYWxlcnQgcmVkMSBmczk1Ij48L3NwYW4+IEVycm9yJykseC5fcGlkc2FmZT14Ll9yZWFzb258fCJFcnJvciIsZT1mLmFzc2lnbihlKSk6IkRvbmUiPT14LnBpZD8oeC5fcGlkPWcuYXNzaWduKCJEb25lIikseC5fcGlkc2FmZT0iRG9uZSIsZT1nLmFzc2lnbihlKSk6KHguX3BpZD0n4oC5PHNwYW4gY2xhc3M9ImZzOTUiPicreC5waWQucmVwbGFjZSgvWzw+XS9nLCIiKSsiPC9zcGFuPuKAuiIseC5fcGlkc2FmZT10KHgucGlkKSk7dmFyIGg9eC5zdGFydGVkX29uO2lmKGgpe3ZhciBqPURhdGUuY3JlYXRlKDFlMyoraCk7ai5pc1RoaXNZZWFyKCk/ai5pc1RvZGF5KCk/eC5fc3RhcnQ9ai5mb3JtYXQoIntIfTp7bW19Ontzc30iKTp4Ll9zdGFydD1qLmZvcm1hdCgie2R9IHtNb259LCB7SH06e21tfSIpOnguX3N0YXJ0PWouZm9ybWF0KCJ7ZH0ge01vbn0ge3l5eXl9Iil9ZWxzZSB4Ll9zdGFydD0iPz8/IjtpZigiRXJyb3IiPT14LnBpZD94Ll9wcm9ncmVzcz0iIjoiRG9uZSI9PXgucGlkP3guX3Byb2dyZXNzPSIxMDAlIjp4Ll9wcm9ncmVzcz1PYmplY3QuaXNOdW1iZXIoeC5wcm9ncmVzcyk/KDB8eC5wcm9ncmVzcy5jbGFtcCgwLDEwMCkpKyIlIjoiICIseC5zb3VyY2UmJngudGFyZ2V0KXt2YXIgaz14LnNvdXJjZSxsPXgudGFyZ2V0LG09dyhrKSxvPXcobCk7eC5waG90b25fdGFzazt4Ll9ncm91cD1zKHgpO3ZhciBwPXguX2dyb3VwPyI4LSIreC5fZ3JvdXA6IiI7bS5lbmRzV2l0aChvKT9tPW0udG8obS5sZW5ndGgtby5sZW5ndGgpKyJ+IjpvLmVuZHNXaXRoKG0pJiYobz1vLnRvKG8ubGVuZ3RoLW0ubGVuZ3RoKSsifiIpLC9cLy8udGVzdChtKSYmIS9cLy8udGVzdChvKT8oeC5fbGVmdD1wKygiRXJyb3IiPT14LnBpZD8iMS0iOnguZG9jX2lkPyIyLSI6IjMtIikrbysiMi0iK20seC5fZGVzYz1kLmFzc2lnbih1KG8sMzApLHQobCkpK2UuYXNzaWduKG4oeCwhMCkpK2QuYXNzaWduKHUobSwzMCksdChrKSkpOih4Ll9sZWZ0PXArKCJFcnJvciI9PXgucGlkPyIxLSI6eC5kb2NfaWQ/IjItIjoiMy0iKSttKyIxLSIrbyx4Ll9kZXNjPWQuYXNzaWduKHUobSwzMCksdChrKSkrZS5hc3NpZ24obih4LCExKSkrZC5hc3NpZ24odShvLDMwKSx0KGwpKSkseC5kb2NfaWQmJih4Ll9kZXNjPSc8YSBjbGFzcz0idGRuIiBocmVmPSIjJytpKyIvIit0KHguZG9jX2lkKSsnIj4nK3guX2Rlc2MrIjwvYT4iKX1lbHNlL2NvbXBhY3Rpb24vLnRlc3QoeC50eXBlKT8oeC5fZGVzYz1jLmFzc2lnbih2KHgsNjApKSx4Ll9sZWZ0PSI5LSIreC5kYXRhYmFzZSx4Ll9ncm91cD1zKHgpKToiaW5kZXhlciI9PXgudHlwZT8oeC5fZGVzYz1jLmFzc2lnbih2KHgsMzApKSx4Ll9sZWZ0PSJJLSIreC5fZGVzYyx4Ll9ncm91cD0i4oCNSW5kZXhlcuKAjSIpOnguX2Rlc2M9eC5fcGlkO3JldHVybiB4fWZ1bmN0aW9uIG4oeCxhKXthPWE7dmFyIGI9eC5zb3VyY2UsYz14LnRhcmdldDtyZXR1cm4geC5zb3VyY2UmJngudGFyZ2V0Pyh2b2lkIDA9PT1hJiYoYT0vXC8vLnRlc3QodyhiKSkmJiEvXC8vLnRlc3QodyhjKSkpLGE/eC5kb2NzP2dbNV06eC5maWx0ZXI/Z1s0XTpnWzNdOnguZG9jcz9nWzJdOnguZmlsdGVyP2dbMV06Z1swXSk6IiJ9ZnVuY3Rpb24gbyh4KXtyZXR1cm4gJC5leHRlbmQocCh4KSx7cGlkOiJFcnJvciIsX3JlYXNvbjp0KHguX3JlcGxpY2F0aW9uX3N0YXRlX3JlYXNvbnx8IkVycm9yIiksZG9jX2lkOnguX2lkLHByb2dyZXNzOjB9KX1mdW5jdGlvbiBwKHgpe3ZhciBhPURhdGUuY3JlYXRlKHguX3JlcGxpY2F0aW9uX3N0YXRlX3RpbWUpLnZhbHVlT2YoKS8xZTN8MDtyZXR1cm57cGlkOiJEb25lIixjb250aW51b3VzOnguY29udGludW91cyxyZXBsaWNhdGlvbl9pZDp4Ll9yZXBsaWNhdGlvbl9pZCxfc2VsZWN0ZWQ6Yi50YXNrLnNlbGVjdGlvbi5pbmRleE9mKHguX3JlcGxpY2F0aW9uX2lkKT4tMSxkb2NfaWQ6eC5faWQscHJvZ3Jlc3M6MTAwLHBob3Rvbl90YXNrOngucGhvdG9uX3Rhc2t8fCIiLHNvdXJjZTp4LnNvdXJjZSxmaWx0ZXI6eC5maWx0ZXJ8fHguZG9jX2lkc3x8bnVsbCx0YXJnZXQ6eC50YXJnZXQsc3RhcnRlZF9vbjphLHVwZGF0ZWRfb246YSx0eXBlOiJyZXBsaWNhdGlvbiJ9fWZ1bmN0aW9uIHEoKXt2YXIgYz1hLlRhc2tzLnNsaWNlKDApO2M9Yy5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIG0oeCl9KS5zb3J0KGZ1bmN0aW9uKHgsYSl7cmV0dXJuIHguX2xlZnQ8YS5fbGVmdD8tMTp4Ll9sZWZ0PmEuX2xlZnQ/MTowfSk7dmFyIGQ9e307Yz0oYz1jLnJldmVyc2UoKSkucmVkdWNlKGZ1bmN0aW9uKHgsYSxlKXt4LnB1c2goYSk7dmFyIGYsZz1zKGEpLGg9Y1tlKzFdO2lmKCFnKXJldHVybiB4O2RbZ118fChkW2ddPXtydW46MCxkb25lOjAsZXJyOjAsc2VsOjB9KSwoZj1kW2ddKVsiRXJyb3IiPT1hLnBpZD8iZXJyIjoiRG9uZSI9PWEucGlkPyJkb25lIjoicnVuIl0rPTEsZi5zZWwrPWEuX3NlbGVjdGVkPzE6MDt2YXIgaT0iX18iK2N3LmxpYi5zZGJtKGcpO3JldHVybiBoJiZzKGgpPT1nfHx4LnB1c2goe3BpZDppLF9waWQ6IiIsY29udGludW91czohMSxyZXBsaWNhdGlvbl9pZDppLGRvY19pZDoiIixwaG90b25fdGFzazpnLHJlcGxpY2F0aW9uX2lkOi8oY29tcGFjdGlvbnxpbmRleGVyKSQvLnRlc3QoYS50eXBlKT8iIjoiX18iK2cuZXNjYXBlSFRNTCgpLGZpbHRlcjoiIix0YXJnZXQ6IiIsc3RhcnRlZF9vbjoiIix1cGRhdGVkX29uOiIiLF90eXBlOiJncm91cCIsX3NlbGVjdGVkOmYucnVuK2YuZG9uZStmLmVycj09Zi5zZWwsX3J1bjpmLnJ1bixfZ3JvdXA6ZyxfZm9sZDohIWIudGFzay5mb2xkW2ddLF9kZXNjOnQoZyksX3Byb2dyZXNzOnIoZil9KSx4fSxbXSksYS5UYXNrcy5sZW5ndGg9MCxjLnJldmVyc2UoKS5mb3JFYWNoKGZ1bmN0aW9uKHgpe2EuVGFza3MucHVzaCh4KX0pLGIudGFzay5zZWxlY3Rpb24ubGVuZ3RoPTAsYS5UYXNrcy5mb3JFYWNoKHg9PnguX3NlbGVjdGVkP2IudGFzay5zZWxlY3Rpb24ucHVzaCh4LnJlcGxpY2F0aW9uX2lkKToiIikseCYmKGEubXkucmVjYWxjKCIjdGFzay1saXN0IiksYS5teS5jaGVjaygiI3Rhc2stY29scyIpLGEubXkuY2hlY2soIiN0YXNrLWxpc3QiKSxhLm15LmNoZWNrKCIjYnRuLXNlbGVjdC10YXNrcyIpKSxmLnJlc29sdmUoYS5UYXNrcyl9ZnVuY3Rpb24gcih4KXt2YXIgYT0iIHRhc2stcm93LXRpcCI7cmV0dXJuW3guZXJyP2UuYXNzaWduKHguZXJyLCJyZWQxIGJnLXJlZDYiK2EpOiIiLHgucnVuP2UuYXNzaWduKHgucnVuLCJncmVlbiBiZy1ncmVlbjYiK2EpOiIiLHguZG9uZT9lLmFzc2lnbih4LmRvbmUsImdyYXkxIGJnLWdyYXk2IG84MCIrYSk6IiJdLmNvbXBhY3QoITApLmpvaW4oIiAiKX1mdW5jdGlvbiBzKHgpe3JldHVybi9jb21wYWN0aW9uJC8udGVzdCh4LnR5cGUpPyLigI1EQiBjb21wYWN0aW9u4oCNIjoiaW5kZXhlciI9PXgudHlwZT8i4oCNSW5kZXhlcuKAjSI6eC5waG90b25fdGFza3x8YSh4LnRhcmdldCl8fGEoeC5zb3VyY2UpfHwiIjtmdW5jdGlvbiBhKHgpe2lmKCEvXmh0dHBbc10/OlwvLy50ZXN0KHgpKXJldHVybiIiO3ZhciBhPSIiO3RyeXsibG9jYWxob3N0IiE9KGE9bmV3IFVSTCh4KS5ob3N0bmFtZSsiIikmJiIxMjcuMC4wLjEiIT1hfHwoYT0iIil9Y2F0Y2goeCl7fXJldHVybiBhfX1mdW5jdGlvbiB0KHgpe3JldHVybigoL15odHRwW3NdP1w6XC9cLy8udGVzdCh4KT95KHgpOngpKyIiKS5lc2NhcGVIVE1MKCl9ZnVuY3Rpb24gdSh4LGEpe3ZhciBiPWF8fDIwO2lmKCEvXC8vLnRlc3QoeCkpcmV0dXJuIHQoKHgrIiIpLnRydW5jYXRlKGIsIm1pZGRsZSIsIuKApiIpKTt2YXIgYz14LnNwbGl0KCIvIik7cmV0dXJuIGNbMF0ubGVuZ3RoPi42KmI/dChjWzBdLnRydW5jYXRlKC42KmJ8MCwibWlkZGxlIiwi4oCmIikpKyIvIit0KGMuc2xpY2UoMSkuam9pbigiLyIpKTp0KCh4KyIiKS50cnVuY2F0ZShiLCJtaWRkbGUiLCLigKYiKSl9ZnVuY3Rpb24gdih4LGEpe3ZhciBiPXguZGF0YWJhc2V8fCI/PyIsYz14LmRlc2lnbl9kb2N1bWVudHx8IiI7cmV0dXJuL3NoYXJkc1wvWzAtOWEtZl17OH0tWzAtOWEtZl17OH1cLy4rJC8udGVzdChiKT91KGIuc3Vic3RyKDI1KS5yZXBsYWNlKC9cLlxkKyQvLCIiKSxhKSsoYz8iOiBfZC8iK3QoYy5zdWJzdHIoOCkpOiIiKStkKGIuc3Vic3RyKDcsMTcpKTp1KGIsYSkrKGM/IjogX2QvIit0KGMuc3Vic3RyKDgpKToiIik7ZnVuY3Rpb24gZCh4KXt2YXIgYT14LnNwbGl0KCItIikubWFwKGZ1bmN0aW9uKHgpe3JldHVybiBwYXJzZUludCh4LDE2KX0pLGI9TWF0aC5yb3VuZChhWzFdLWFbMF0rMSksYz1NYXRoLnJvdW5kKGFbMF0vYisxKSxkPU1hdGgucm91bmQoNDI5NDk2NzI5Ni9iKTtyZXR1cm4gZS5hc3NpZ24oIiBbIitjKyIvIitkKyJdIiwiZnM5NSBncmF5MSIpfX1mdW5jdGlvbiB3KHgpe2lmKCEvXmh0dHBbc10/OlwvXC8uKy8udGVzdCh4KSlyZXR1cm4geDt2YXIgYT1uZXcgVVJMKHgpLGI9IjEyNy4wLjAuMSI9PWEuaG9zdG5hbWV8fCJsb2NhbGhvc3QiPT1hLmhvc3RuYW1lP2EucGF0aG5hbWUucmVwbGFjZSgvXlwvfFwvJC9nLCIiKTphLmhvc3RuYW1lK2EucGF0aG5hbWUucmVwbGFjZSgvXC8kLywiIik7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChiKX1mdW5jdGlvbiB5KHgpe3JldHVybiB4LnJlcGxhY2UoL14oaHR0cFtzXT9cOlwvXC9bXlw6QFwvXSs6KVteQF0rKEAuKykkLywiJDHigKLigKLigKLigKLigKIkMiIpfX0sUmVzdGFydFBvbGw6ZnVuY3Rpb24oKXt2YXIgeD10aGlzO3guVGFza0xvb3BJbnRlcnZhbD14LlBobygiQ2ZnIikubG9vcEFjdGl2ZVRhc2tzLHguVGFza0xvb3AmJih4LlRhc2tMb29wLmNhbmNlbCgpLHguR2V0VGFza3MoITApKSx4LlRhc2tMb29wPXguR2V0VGFza3MuZmlsbCghMCkuZXZlcnkoMWUzKnguVGFza0xvb3BJbnRlcnZhbCl9LFJlc3RhcnRUYXNrczpmdW5jdGlvbih4LGEpe3ZhciBiLGM9dGhpcyxkPWMuZGF0YSxlPWMubGFuZyxmPSQuRGVmZXJyZWQoKSxnPShhfHxjLmRhdGEudGFzay5zZWxlY3Rpb24pLmZpbHRlcihjLk5vR3JvdXApLnNsaWNlKDApLGg9Yy5QaG8oIlJlcGxpY2F0b3JEQiIpLGk9W10saj1bXSxrPWN3LmxpYi5hMm8oZC50YXNrLmxpc3QubWFwKGZ1bmN0aW9uKHgpe3JldHVybiB4LnJlcGxpY2F0aW9uX2lkfSkpO2c9Zy5maWx0ZXIoZnVuY3Rpb24oeCl7cmV0dXJuISFrW3hdfSk7dmFyIGw9Yy5UYXNrcy5maWx0ZXIoZnVuY3Rpb24oeCl7cmV0dXJuIGcuaW5kZXhPZih4LnJlcGxpY2F0aW9uX2lkKT4tMSYmeC5kb2NfaWR9KS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIHguZG9jX2lkfSksbT1jLlRhc2tzLmZpbHRlcihmdW5jdGlvbih4KXtyZXR1cm4gZy5pbmRleE9mKHgucmVwbGljYXRpb25faWQpPi0xJiYheC5kb2NfaWR9KS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJue2NhbmNlbDohMCxyZXBsaWNhdGlvbl9pZDp4LnJlcGxpY2F0aW9uX2lkfX0pLG49e3dpZHRoOjMwMCxtYW5pZmVzdDpjLlBobygiQ29uZmlybSIpLGRhdGE6e3RleHQ6Wyc8ZGl2IGNsYXNzPSJmczEzMCAnKyh4PyJyZWQiOiJvcmFuZ2UiKSsnIG1iNSI+JyxlW3g/IlRYVF9UQVNLX1NUT1BfVElUTEUiOiJUWFRfVEFTS19SRVNZTkNfVElUTEUiXSwiPC9kaXY+IixlW3g/IlRYVF9UQVNLX1NUT1BfV0FSTiI6IlRYVF9UQVNLX1JFU1lOQ19XQVJOIl0obC5sZW5ndGgsbS5sZW5ndGgsaCldLmpvaW4oIiIpLHllc2Nzczp4PyJyZWQiOiJvcmFuZ2UiLHllczplLkJUTl9UQVNLX1BST0NFRUQsbm86ZS5CVE5fQ0FOQ0VMLGNhbmNlbDoiIix1c2VCdXR0b25zOiEwfSxjc3M6ImxoMTYwIHhncmF5IHAyMCBwYjI1IixjbG9zZTpjLlBobygibGFuZyIpLkJUTl9YRExHLGVzYzohMCxlbnRlcjohMSxzY3JlZW46ITAsZ2xvYmFsOiEwfTtyZXR1cm4oYSYmYS5sZW5ndGgmJmwubGVuZ3RoPyQuRGVmZXJyZWQoKS5yZXNvbHZlKHtjbWQ6InllcyJ9KTp4PyQubXkubW9kYWwobik6KGI9Yy5Nb2RhbHMudGFza3M9Yy5teS5maW5kKCIjYnRuLXJlc3luYyIpKS5tb2RhbCgkLmV4dGVuZChuLHtyb290OmMubXkuZmluZCgiI3JwYW5lbCIpLHNjcmVlbjohMSxnbG9iYWw6ITEsY3NzOiJsaDE2MCB4Z3JheSBwMTUgcGIyMCIsYWxpZ246InRvcDoxMDIlO2xlZnQ6MDsiLG5vc2U6InRvcCIsZm9jdXM6IiNidG4teWVzIn0pKSkudGhlbihmdW5jdGlvbih4KXtpZigieWVzIiE9eC5jbWQpcmV0dXJuIGYucmVqZWN0KDk5OSwiQ2FuY2VsbGVkIiwiQ2FuY2VsbGVkIik7bygpfSkuZmFpbChmdW5jdGlvbigpe2YucmVqZWN0KDk5OSwiQ2FuY2VsbGVkIiwiQ2FuY2VsbGVkIil9KS5hbHdheXMoZnVuY3Rpb24oKXtjLk1vZGFscy50YXNrcz09YiYmKGMuTW9kYWxzLnRhc2tzPW51bGwpfSksZi5wcm9taXNlKCk7ZnVuY3Rpb24gbygpe3ZhciBhO2Z1bmN0aW9uIGIoeCl7cmV0dXJuIGMuUmVxKHt1cmw6W2gsIl9idWxrX2RvY3MiXSxtZXRob2Q6IlBPU1QiLGNvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi9qc29uIixkYXRhVHlwZToianNvbiIsaGVhZGVyczp7IlgtQ291Y2gtRnVsbC1Db21taXQiOiJ0cnVlIn0sZGF0YTpKU09OLnN0cmluZ2lmeSh7ZG9jczp4fSl9KX1sLmxlbmd0aCYmKGE9Yy5SZXEoe3VybDpbaCwiX2FsbF9kb2NzIix7aW5jbHVkZV9kb2NzOiEwLGF0dGFjaG1lbnRzOiEwfV0sbWV0aG9kOiJQT1NUIixjb250ZW50VHlwZToiYXBwbGljYXRpb24vanNvbiIsZGF0YTpKU09OLnN0cmluZ2lmeSh7a2V5czpsfSl9KS50aGVuKGZ1bmN0aW9uKHgpe3gucm93cy5mb3JFYWNoKGZ1bmN0aW9uKHgpe3ZhciBhPXguZG9jO2oucHVzaCh7X2lkOmEuX2lkLF9yZXY6YS5fcmV2LF9kZWxldGVkOiEwfSk7dmFyIGI9e19pZDphLl9pZH07YS5fYXR0YWNobWVudHMmJihiLl9hdHRhY2htZW50cz1hLl9hdHRhY2htZW50cyksJC5leHRlbmQoYixPYmplY3QucmVqZWN0KGEsL15fLykpLGkucHVzaChiKX0pfSkudGhlbihmdW5jdGlvbigpe3JldHVybiBiKGopfSkudGhlbihmdW5jdGlvbihhKXtpZih4KXJldHVybiBhO2N3LmxpYi5ub3RlKGMubGFuZy5NU0dfVEFTS19SRVNZTkMpO3ZhciBkPSQuRGVmZXJyZWQoKTtyZXR1cm4gZnVuY3Rpb24oKXtiKGkpLnRoZW4oZnVuY3Rpb24oeCl7dmFyIGE9eC5yZWR1Y2UoZnVuY3Rpb24oeCxhKXtyZXR1cm4gYS5vayYmIjEtIiE9KGEucmV2fHwiIikuc3Vic3RyKDAsMil8fHgucHVzaChhLmlkKSx4fSxbXSk7aWYoIWEubGVuZ3RoKXJldHVybiBkLnJlc29sdmUoeCk7dmFyIGM9Y3cubGliLmEybyhhKTtyZXR1cm4gYihpLmZpbHRlcihmdW5jdGlvbih4KXtyZXR1cm4hIWNbeC5faWRdfSkpLnRoZW4oZnVuY3Rpb24oeCl7ZC5yZXNvbHZlKHgpfSl9KS5mYWlsKGZ1bmN0aW9uKHgsYSxiKXtkLnJlamVjdCh4LGEsYil9KX0uZGVib3VuY2UoMWUzKSgpLGQucHJvbWlzZSgpfSkpLG0ubGVuZ3RoJiYobC5sZW5ndGg/YS50aGVuOmZ1bmN0aW9uKHgpe2E9eCgpfSkoZnVuY3Rpb24oKXt2YXIgeD0kLkRlZmVycmVkKCksYT1tLm1hcChmdW5jdGlvbih4KXtyZXR1cm4gYy5SZXEoe3VybDpbIl9yZXBsaWNhdGUiXSxtZXRob2Q6IlBPU1QiLGRhdGFUeXBlOiJqc29uIixjb250ZW50VHlwZToiYXBwbGljYXRpb24vanNvbiIsZGF0YTpKU09OLnN0cmluZ2lmeSh4KX0pfSk7cmV0dXJuIFEuYWxsU2V0dGxlZChhKS50aGVuKGZ1bmN0aW9uKGEpe3gucmVzb2x2ZSgpfSxmdW5jdGlvbigpe3gucmVzb2x2ZSgpfSkseC5wcm9taXNlKCl9KSxhLnRoZW4oZnVuY3Rpb24oKXtjdy5saWIubm90ZShlW3g/Ik1TR19UQVNLX1NUT1AiOiJNU0dfVEFTS19SRVNZTkNfT0siXSwib2siKSwkLm15LnJhZGlvKCJkYmxpc3QiLFtoXSkseHx8JC5teS5yYWRpbygiZGJ1cGRhdGUiLHtkYjpoLGNtZDoid3JpdGUiLGRvY3M6aS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIHguX2lkfSl9KSxmLnJlc29sdmUoaSl9KS5mYWlsKGZ1bmN0aW9uKGEsYixjKXtjdy5saWIubm90ZShlW3g/IkVSUl9UQVNLX1NUT1AiOiJFUlJfVEFTS19SRVNZTkMiXS5hc3NpZ24oYSsiOiAiK2IpLCJlcnJvciIpLGNvbnNvbGUubG9nKGEsYixjLCJVbnNhdmVkIHRhc2tzOiIsaSksZi5yZWplY3QoYSxiLGMpfSl9fSxUVGFzazpmdW5jdGlvbih4KXt2YXIgYT10aGlzLmRhdGEsYj0nPGRpdiBjbGFzcz0iY2ItdGFzay1yb3cgZGliIHZhdCBmczkwIj57MX08L2Rpdj4nO3JldHVybiBiPSgiRXJyb3IiIT14LnBpZHx8eC5kb2NfaWQpJiZ4LnJlcGxpY2F0aW9uX2lkP2IuYXNzaWduKCc8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InRhc2stc2VsZWN0aW9uIiBjbGFzcz0iY3Agcm93LXNlbCBtbDIiIHZhbHVlPSJ7cmVwbGljYXRpb25faWR9IiAnKyh4Ll9zZWxlY3RlZD8iY2hlY2tlZD4iOiI+IikpOmIuYXNzaWduKCImbmJzcDsiKSwoImdyb3VwIiE9eC5fdHlwZT9bJzxkaXYgY2xhc3M9InZpZXctcm93IHBsMjcgcHI4Ij4nLGIsJzxkaXYgY2xhc3M9InRhc2tsYWJlbCBjcCBkaWIgdzIwcCBlbGwgZnM5NSBwdDEgZ3JlZW4xIHZhdCIgdGl0bGU9IntfcGlkc2FmZX0iPntfcGlkfTwvZGl2PicsJzxkaXYgY2xhc3M9ImRpYiB3NzBwIGVsbCBwcjEwIHZhdCI+e190eXBlfSB7X2Rlc2N9PC9kaXY+JywiRG9uZSI9PXgucGlkP1snPGRpdiBjbGFzcz0iZGliIHcxMHAgdmF0IHRhciBncmF5IGZzOTAiPicsJzxkaXYgY2xhc3M9ImJ0bi1kb25lLXJlc3RhcnQgcDAgZGliIHZhdCB0YWMgYmctZ3JheTYgZ3JheTEgYnIyIGNwIiAnLCdkYXRhLWlkPSJ7cmVwbGljYXRpb25faWR9IiBzdHlsZT0ibWluLXdpZHRoOjYwJSIgdGl0bGU9IlJlc3RhcnQgc3luYyI+JywnPHNwYW4gY2xhc3M9ImZpLXBsYXkiPjwvc3Bhbj4nLCI8L2Rpdj48L2Rpdj4iXS5qb2luKCIiKTpbJzxkaXYgY2xhc3M9ImRpYiB3MTBwIHZhdCB0YXIgZ3JheSBwdDEgZnM5MCI+e19wcm9ncmVzc308L2Rpdj4nXS5qb2luKCIiKSwiPC9kaXY+Il0uam9pbigiIik6Wyc8ZGl2IGNsYXNzPSJ2aWV3LXJvdyBwbDI3IHByOCI+JyxiLCc8ZGl2IGNsYXNzPSJkaWIgdzgwcCBlbGwgcHIxMCB2YXQgbzgwIHRhc2stZm9sZGdyb3VwIGNwIiAnLCdkYXRhLWdyb3VwPSJ7JysoeC5yZXBsaWNhdGlvbl9pZD8icmVwbGljYXRpb25faWQiOiJfZ3JvdXAiKSsnfSI+JywnPHNwYW4gY2xhc3M9ImJvbGRlciI+e19kZXNjfTwvc3Bhbj4nLCc8c3BhbiBjbGFzcz0iJysoYS50YXNrLmZvbGRbeC5waG90b25fdGFza10/ImFyaWdodCI6ImFkb3duIikrJyI+PC9zcGFuPicsIjwvZGl2PiIsJzxkaXYgY2xhc3M9ImRpYiB3MjBwIHZhdCB0YXIgZ3JheSBib2xkZXIgZnM5MCI+e19wcm9ncmVzc308L2Rpdj4nLCI8L2Rpdj4iXS5qb2luKCIiKSkuYXNzaWduKHgpfSxwYXJhbXM6e3N0cmljdDohMH19LCRsb2c6e2lkOiJjdy5QaG90b24uJGxvZyIsbGFuZzp7fSxkYXRhOntzcmM6ImNvdWNoIixzZWFyY2g6IiIsc2l6ZToiMTAiLG9mZnNldDoiMCIsbGluZXM6IiIsZGlyOiJyZXZlcnNlIn0sUHJldjpbXSxoYXNoOmZ1bmN0aW9uKCl7cmV0dXJuImxvZyJ9LGljb0NzczpmdW5jdGlvbih4KXtyZXR1cm4iZmktYWxpZ24tbGVmdCBmczkwIn0sdGl0bGU6ZnVuY3Rpb24oKXtyZXR1cm4iTG9ncyJ9LG1hdGNoOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIGF8fDEhPXgubGVuZ3RofHwiX2xvZyIhPXhbMF0/bnVsbDp7dGl0bGU6IkxvZ3MifX0saW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YS5kYXRhO3JldHVybiAkLmV4dGVuZChiLGEuUGhvKCJMcyIpKCJMb2dzIil8fHt9KSxhLlByZXY9W2Iuc2l6ZSxiLm9mZnNldF0sYS5HZXQoITEsITApLnRoZW4oZnVuY3Rpb24oYil7eC5odG1sKGEuSFRNTC5hc3NpZ24oYS5sYW5nKSksYS5uaWNlU2Nyb2xsKHguZmluZCgiI3JlcG9ydCIpKX0pfSx1aTp7IiNsc2l6ZSI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gbnVsbCE9YSYmKHguc2l6ZT1pc05hTihhKXx8IWE/IjEwIjooMHwrYSkuY2xhbXAoMSw1MDApKyIiLHRoaXMubXkuZmluZCgiI2xvZmZzZXQiKS5hdHRyKCJzdGVwIix4LnNpemUpKSx4LnNpemV9fSwiI2xvZmZzZXQiOiJvZmZzZXQiLCIjbG9nLXNlYXJjaCI6e2RlbGF5OjE1MCxiaW5kOiJzZWFyY2giLGNzczp7Im15LXNlYXJjaCI6L14uezIsfSQvfX0sIiNsb2dkaXIiOntpbml0OmZ1bmN0aW9uKHgpe3gudGFncyh0aGlzLmxhbmcuVEFHX0RJUil9LGJpbmQ6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gbnVsbCE9YSYmKHguZGlyPWErIiIpLHguZGlyfX0sIiNsb2ctcHJveHkiOntkZWxheTozMDAsYmluZDpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXM7W3guc2l6ZSx4Lm9mZnNldCx4LmRpcl0rIiIhPWIuUHJldisiIiYmYi5HZXQoKS50aGVuKGZ1bmN0aW9uKCl7Yi5teS5yZWNhbGMoIiNsb2dzIil9KS5hbHdheXMoZnVuY3Rpb24oKXtiLlByZXY9W3guc2l6ZSx4Lm9mZnNldCx4LmRpcl0sYi5QaG8oIkxzIikoIkxvZ3MiLHtzaXplOnguc2l6ZX0pfSl9LHdhdGNoOlsiI2xzaXplIiwiI2xvZmZzZXQiLCIjbG9nZGlyIl19LCIjbG9ncyI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYjtyZXR1cm4geC5zZWFyY2gubGVuZ3RoPjE/KGI9bmV3IFJlZ0V4cCgiKCIrUmVnRXhwLmVzY2FwZSh4LnNlYXJjaCkrIikiLCJpIikseC5saW5lcy5saW5lcygpLnJlZHVjZShmdW5jdGlvbih4LGEpe3JldHVybiJbIiE9YVswXSYmeC5sZW5ndGg/eFt4Lmxlbmd0aC0xXSs9IlxuIithOngucHVzaChhKSx4fSxbXSkuZmlsdGVyKGZ1bmN0aW9uKHgpe3JldHVybiBiLnRlc3QoeCl9KS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIHgucmVwbGFjZShiLCLvv7EkMe+/sCIpLmVzY2FwZUhUTUwoKS5yZXBsYWNlKCLvv7EiLCc8c3BhbiBjbGFzcz0ibG9nLWZvdW5kIj4nKS5yZXBsYWNlKCLvv7AiLCI8L3NwYW4+Iil9KS5qb2luKCJcbiIpKTp4LmxpbmVzLmVzY2FwZUhUTUwoKX0sd2F0Y2g6WyIjbG9nLXNlYXJjaCJdfSwiI2J0bi1yZWxvYWQiOmZ1bmN0aW9uKHgsYSl7aWYobnVsbCE9YSl7dmFyIGI9dGhpcztiLkdldCgpLnRoZW4oZnVuY3Rpb24oKXtiLm15LnJlY2FsYygiI2xvZ3MiKX0pfX0sIiNidG4tbG9nLW1pbnVzIjp7YmluZDpmdW5jdGlvbih4LGEpe251bGwhPWEmJih4Lm9mZnNldD0oK3gub2Zmc2V0LSt4LnNpemUpLmNsYW1wKDAsMWUxMCkrIiIpfSxjc3M6eyI6ZGlzYWJsZWQiOmZ1bmN0aW9uKHgpe3JldHVybiEreC5vZmZzZXR9fSx3YXRjaDoiI2xvZmZzZXQiLHJlY2FsYzoiI2xvZmZzZXQifSwiI2J0bi1sb2ctcGx1cyI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtudWxsIT1hJiYoeC5vZmZzZXQ9KCt4Lm9mZnNldCsgK3guc2l6ZSkuY2xhbXAoMCwxZTEwKSsiIil9LHdhdGNoOiIjbG9mZnNldCIscmVjYWxjOiIjbG9mZnNldCJ9fSxkaWU6ZnVuY3Rpb24oeCl7dmFyIGE9eC5maW5kKCIjcmVwb3J0IikuZ2V0TmljZVNjcm9sbDsiZnVuY3Rpb24iPT10eXBlb2YgYSYmYSgpLnJlbW92ZSgpfSxIVE1MOic8ZGl2IGlkPSJhLWhlYWQiIGNsYXNzPSJhcHAtaGVhZCBudyBwdDE4IHBsMjAgcHIyMCBsaDE2MCI+PGRpdiBjbGFzcz0iZnIgdzE1MCBmczk1Ij48ZGl2IGNsYXNzPSJmaS1tYWduaWZ5aW5nLWdsYXNzIHhncmF5IG81MCBmczk1IiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB6LWluZGV4OiArMTsgbGVmdDogOHB4O3RvcDogMC4yZW07Ij48L2Rpdj48aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImxvZy1zZWFyY2giIGNsYXNzPSJ1aS1zZWFyY2ggdzEwMHAgbWwwIG1yMCBtdDAgcHIxMCIgc3BlbGxjaGVjaz0iZmFsc2UiIGF1dG9jb21wbGV0ZT0ib2ZmIiBwbGFjZWhvbGRlcj0ie1BMQ19TRUFSQ0h9IiBzdHlsZT0iYmFja2dyb3VuZC1pbWFnZTpub25lO3BhZGRpbmctcmlnaHQ6MTlweCFpbXBvcnRhbnQ7Ij48c3BhbiBjbGFzcz0iZmkteCBmczgwIGRpYiB2YXQgcHQyIGJsdWUgdWktc2VhcmNoLWNsZWFyIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LTE5cHghaW1wb3J0YW50OyJvbmNsaWNrPSIkKHRoaXMpLnNpYmxpbmdzKFwnaW5wdXQ6ZXEoMClcJykudmFsKFwnXCcpLmJsdXIoKSI+PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9Im53IGRpYiB2YXQiPjxidXR0b24gaWQ9ImJ0bi1yZWxvYWQiIGNsYXNzPSJ3NDAgbXI4IHZhdCIgdGl0bGU9IntQTENfUkVMT0FEfSI+PHNwYW4gY2xhc3M9ImZpLWxvb3AiPjwvc3Bhbj48L2J1dHRvbj48c3BhbiBjbGFzcz0iYm9sZGVyIGZzMTUwIGxoMTMwIHhncmF5IG1yMzAgZGliIHZhdCI+e1RYVF9USVRMRX08L3NwYW4+IDxkaXYgY2xhc3M9ImRpYiB2YXQiPjxzcGFuPntUWFRfU0laRX08L3NwYW4+IDxpbnB1dCBpZD0ibHNpemUiIHR5cGU9Im51bWJlciIgY2xhc3M9Inc3MCIgbWluPSIxIiBtYXg9IjUwMCIgc3RlcD0iMSI+IDxzcGFuPntUWFRfS0J9LCB7VFhUX09GRlNFVH08L3NwYW4+IDxpbnB1dCBpZD0ibG9mZnNldCIgdHlwZT0ibnVtYmVyIiBjbGFzcz0idzEwMCIgbWluPSIwIiBtYXg9IjEwMDAwMDAiIHN0ZXA9IjEwIj4gPHNwYW4+e1RYVF9LQn08L3NwYW4+IDwvZGl2PjxzcGFuIGNsYXNzPSJidXR0b25zIG1sMTAiPjxidXR0b24gaWQ9ImJ0bi1sb2ctbWludXMiIGNsYXNzPSJ3NDAgbXIyIHBsMCBwcjAiPjxzcGFuIGNsYXNzPSJmaS1hcnJvdy1sZWZ0IG84MCI+PC9zcGFuPjwvYnV0dG9uPjxidXR0b24gaWQ9ImJ0bi1sb2ctcGx1cyIgY2xhc3M9Inc0MCBtcjIgcGwwIHByMCI+PHNwYW4gY2xhc3M9ImZpLWFycm93LXJpZ2h0IG84MCI+PC9zcGFuPjwvYnV0dG9uPjwvc3Bhbj48c3BhbiBpZD0ibG9nZGlyIiBjbGFzcz0ibWwyMCI+PC9zcGFuPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9InBhbmVsaGVpZ2h0LTQgZmVhdGhlciBtdDQiPjxkaXYgaWQ9InJlcG9ydCIgY2xhc3M9InBsMjAgcHIyMCBwYW5lbGhlaWdodC00IHByZSI+PGRpdiBpZD0ibG9ncyIgY2xhc3M9ImZzOTAgbGgxNDAgcGIxMiBwdDgiPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXYgaWQ9ImxvZy1wcm94eSIgY2xhc3M9ImhpZGUiPjwvZGl2Picsc3R5bGU6eyIgcHJlIjoid2hpdGUtc3BhY2U6IHByZS13cmFwOyIsIiAubG9nLWZvdW5kIjoiYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyMzIsMTIxLDAuOTQpO2JvcmRlci1yYWRpdXM6MnB4OyJ9LEdldDpmdW5jdGlvbigpe3ZhciB4PXRoaXMsYT0xMDI0KnguZGF0YS5zaXplLGI9MTAyNCooeC5kYXRhLm9mZnNldHx8MCksYz1bIl9sb2ciLHtieXRlczphfSxiP3tvZmZzZXQ6Yn06bnVsbF0uY29tcGFjdCgpO3JldHVybiB4LlJlcSh7dXJsOmMsZGF0YVR5cGU6InRleHQifSkudGhlbihmdW5jdGlvbihhKXt2YXIgYj1hLmxpbmVzKCkucmVkdWNlKGZ1bmN0aW9uKHgsYSl7cmV0dXJuIlsiIT1hWzBdJiZ4Lmxlbmd0aD94W3gubGVuZ3RoLTFdKz0iXG4iK2E6eC5wdXNoKGEpLHh9LFtdKTsicmV2ZXJzZSI9PXguZGF0YS5kaXImJihiPWIucmV2ZXJzZSgpKSx4LmRhdGEubGluZXM9Yi5qb2luKCJcbiIpfSl9LHBhcmFtczp7c3RyaWN0OiEwfX0sJHN0YXRzOntpZDoiY3cuQ291Y2guTW9uaXRvciIsQ29uZmlnOntzdGF0c01heFRpbWVmcmFtZToxODAwLHNlcmllTWF4TGVuZ3RoOjRlM30sZGF0YTp7cHJlc2V0TW91bnRlZDohMSxkb2M6e25hbWU6IlN0YXRzIn19LGhhc2g6ZnVuY3Rpb24oKXtyZXR1cm4iX3N0YXRzIn0sdGl0bGU6ZnVuY3Rpb24oKXtyZXR1cm4iU3RhdHMifSxtYXRjaDpmdW5jdGlvbih4LGEpe3JldHVybiBhfHwxIT14Lmxlbmd0aHx8Il9zdGF0cyIhPXhbMF0/bnVsbDp7dGl0bGU6IlN0YXRzIn19LHVpOnsiI25vZGVzIjp7aW5pdDpmdW5jdGlvbih4KXt0aGlzLm5pY2VTY3JvbGwoeCl9LGxpc3Rlbjp7cGhvdG9uX2NmZ19jaGFuZ2U6ZnVuY3Rpb24oKXt2YXIgeD10aGlzO3guQ2ZnKCkuc3RhdHNSZWZyZXNoIT14LlBobygiQ2ZnIikuc3RhdHNSZWZyZXNoJiYoeC5DZmcoKS5zdGF0c1JlZnJlc2g9eC5QaG8oIkNmZyIpLnN0YXRzUmVmcmVzaCwkLm15LnJhZGlvKCJjb3VjaF9tb25pdG9yX2NmZ19jaGFuZ2UiLE9iamVjdC5jbG9uZSh4LkNmZygpKSkpfSx1c2VyQ3R4OmZ1bmN0aW9uKHgsYSl7T2JqZWN0LmlzT2JqZWN0KGEpJiYkLm15LnJhZGlvKCJyZWxvYWQiLHtpZDp4LnRhYmlkLHBhdGg6eC5wYXRofSl9fX0sIiNlbmNyeXB0Ijp7aW5pdDpmdW5jdGlvbigpe30sYmluZDoiZHVtbXkifSwiI21uYW1lIjp7YmluZDpmdW5jdGlvbigpe3JldHVybiB3aW5kb3cubG9jYXRpb24uaG9zdH0sY3NzOnsiYm9sZGVyIGZzMTgwIjpmdW5jdGlvbigpe3JldHVybiExfSxmczE3MDpmdW5jdGlvbigpe3JldHVybiEwfX19fSxkaWU6ZnVuY3Rpb24oeCl7dGhpcy5UaW1lci5jYW5jZWwoKTt2YXIgYT14LmZpbmQoIiNub2RlcyIpLmdldE5pY2VTY3JvbGw7ImZ1bmN0aW9uIj09dHlwZW9mIGEmJmEoKS5yZW1vdmUoKX0sc3R5bGU6eyIgLm5vY3dtaW4iOiJkaXNwbGF5Om5vbmUhaW1wb3J0YW50OyIsIiAjYXBwLXNlYXJjaCI6ImRpc3BsYXk6bm9uZSFpbXBvcnRhbnQ7IiwiICNub2RlLXRpbGVzIjpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9eC53aWR0aCgpLGM9KGEuUGhvKCJNZW1iZXJzaGlwIikuY2x1c3Rlcl9ub2Rlc3x8WzFdKS5sZW5ndGgsZD0iIjtyZXR1cm4hIWEuZGF0YS5wcmVzZXRNb3VudGVkJiYoeC5maW5kKCJkaXYjcHJpbWUiKS5lYWNoKGZ1bmN0aW9uKCl7JCh0aGlzKS50cmlnZ2VyKCJyZWNhbGMiLCEwKX0pLHguZmluZCgiZGl2I3lheGlzIikuZWFjaChmdW5jdGlvbigpeyQodGhpcykudHJpZ2dlcigicmVjYWxjIil9KSksYS5DZmcoKS5zdGF0c1NjYWxlWT1jPihiPD0xNDAwPzI6NCk/MS4xOjEuNSwoYz4zfHxjPjEmJmI+MTQwMCkmJihkPXsiIC5ubm9kZSI6IndpZHRoOmNhbGMoNTAlIC0gMTZweCk7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyJ9KSxkfX0sQXV0b1NhdmVOb2RlOmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj1hLkxzLGM9JC5leHRlbmQoITAse30seCksZD1hLkNmZygpLnNlcmllTWF4TGVuZ3RoO2Z1bmN0aW9uIGUoeCl7cmV0dXJuIHgubWFwKGZ1bmN0aW9uKHgpe3JldHVybiAwPT14PyIiOngudG9TdHJpbmcoMzYpfSkuam9pbigiICIpfWEuUGhvKCJfY29tcGlsZWQiKSYmKFsiZ2F1Z2VzIiwic2VyaWVzIl0uZm9yRWFjaChmdW5jdGlvbih4KXt2YXIgYT1jW3hdO2EmJmEuZm9yRWFjaChmdW5jdGlvbih4KXt4LnJvd3M9eC5yb3dzLm1hcChmdW5jdGlvbih4KXtyZXR1cm4geC50byhkKX0pLm1hcChlKSx4LnRpbWU9ZSh4LnRpbWUudG8oeC5yb3dzLmxlbmd0aD4xP2Q6MTApKX0pfSksYigiU3RhdHMubm9kZS4iK2MubmFtZSxPYmplY3QucmVqZWN0KGMsWyJ1cmwiLCJjb3VjaCIsIm5hbWVzIiwiY29sb3JzIiwidW5pdHMiXSkpKX0sTW91bnQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPWEuZGF0YSxjPSh4fHxhLm15LnJvb3QoKSkud2lkdGgoKSxkPSEhYi5wcmVzZXRNb3VudGVkLGU9YS5QaG8oIkNvdWNoIikudmVyLGY9YS5kZWZhdWx0Tm9kZXNbZT49IjAwMi4iPyIyLngiOiIxLngiXTtpZihNYXRoLmxvZzEwPU1hdGgubG9nMTB8fGZ1bmN0aW9uKHgpe3JldHVybiBNYXRoLmxvZyh4KSpNYXRoLkxPRzEwRX0sIWQpe2lmKGEuQ2ZnKCkuc3RhdHNSZWZyZXNoPWEuUGhvKCJDZmciKS5zdGF0c1JlZnJlc2gsZT49IjAwMi4iKXtiLmRvYy5ub2Rlcz0oYS5QaG8oIk1lbWJlcnNoaXAiKS5jbHVzdGVyX25vZGVzfHxbXSkubWFwKGZ1bmN0aW9uKHgpe3ZhciBhPU9iamVjdC5jbG9uZShmLCEwKTtyZXR1cm4gYS5uYW1lPXgsYS51cmw9Ii9fbm9kZS97MX0vIi5hc3NpZ24oZW5jb2RlVVJJQ29tcG9uZW50KHgpKSxhfSk7dmFyIGc9Yi5kb2Mubm9kZXMubGVuZ3RoO2EuQ2ZnKCkuc3RhdHNTY2FsZVk9Zz4oYzw9MTQwMD8yOjQpPzEuMToxLjV9ZWxzZSBiLmRvYy5ub2Rlcz1bJC5leHRlbmQoITAse30sZildLGEuQ2ZnKCkuc3RhdHNTY2FsZVk9MS41O2EuTHM9YS5QaG8oIkxzIik7dmFyIGg9YS5DZmcoKS5zZXJpZU1heExlbmd0aD00ZTMvYi5kb2Mubm9kZXMubGVuZ3RofDA7YS5QaG8oIl9jb21waWxlZCIpJiZiLmRvYy5ub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKHgpe3ZhciBiPWEuTHMoIlN0YXRzLm5vZGUuIit4Lm5hbWUpO2ImJihbImdhdWdlcyIsInNlcmllcyJdLmZvckVhY2goZnVuY3Rpb24oeCl7dmFyIGE9Ylt4XTthJiZhLmZvckVhY2goZnVuY3Rpb24oeCl7eC50aW1lPWkoeC50aW1lKS50byhoKSx4LnJvd3M9eC5yb3dzLm1hcChpKS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIHgudG8oaCl9KX0pfSksJC5leHRlbmQoITAseCxiKSl9KSxiLnByZXNldE1vdW50ZWQ9ITB9cmV0dXJuIGIuZG9jLm5vZGVzO2Z1bmN0aW9uIGkoeCl7cmV0dXJuIHguc3BsaXQoIiAiKS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIHBhcnNlSW50KHh8fCIwIiwzNil9KX19LHBhcmFtczp7c3RyaWN0OiEwfX0sVGFiOntpZDoiY3cuUGhvdG9uLlRhYiIsbGFuZzp7fSxkYXRhOntpZDoiIixuYW1lOiIiLHR5cGU6IiIsaGFzaDA6IiIsaGFzaDE6IiIsYWN0aXZlOiExLHBhdGg6W10sZXJyb3I6ITEscnVuOiExfSxpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXM7eC5odG1sKGEuSFRNTC5hc3NpZ24oYS5sYW5nKSl9LHVpOnsiI2wtdGFibmFtZSI6e2JpbmQ6ZnVuY3Rpb24oeCxhLGIpe3ZhciBjPXRoaXM7Yy5teS5maW5kKCJhI2wtdGFibmFtZSIpLmF0dHIoImhyZWYiLCIjIitjLnAydSh4LnBhdGh8fFtdKS5qb2luKCIvIikpLmF0dHIoInRpdGxlIix4LnBhdGguam9pbigiLyIpKS50b2dnbGVDbGFzcygic3lzdGVtIiwheC5wYXRoWzBdfHwvXihfYWJvdXR8X3N0YXRzfF9jb25maWd8X2xvZykkLy50ZXN0KHgucGF0aFswXSkpLGMubXkucm9vdCgpLnRvZ2dsZUNsYXNzKCJhY3RpdmUiLCEheC5hY3RpdmUpO3ZhciBkPSc8c3BhbiBjbGFzcz0ibC10YWItaWNvIHsxfSI+PC9zcGFuPicsZT0nPHNwYW4gY2xhc3M9ImwtdGFiLW5hbWUiPnsxfTwvc3Bhbj4nLGY9Yy5QaG8oWyIkIit4LnR5cGUsImljb0NzcyJdKTtyZXR1cm4oZj9kLmFzc2lnbihmKHgpKToiIikrZS5hc3NpZ24oYy50YWdFbW9qaSh4Lm5hbWUuZXNjYXBlSFRNTCgpKSl9LGNzczp7c21hbGxlcjpmdW5jdGlvbih4KXtyZXR1cm4geC5uYW1lLmxlbmd0aD4yMH0sYm9sZGVyOmZ1bmN0aW9uKHgpe3JldHVybiAxPT14LnBhdGgubGVuZ3RofX0sZXZlbnRzOiJjbGljay5teSJ9LCIjbC10YWJzdGF0ZSI6e2Nzczp7aGlkZTpmdW5jdGlvbih4KXtyZXR1cm4heC5lcnJvciYmeC5oYXNoMD09eC5oYXNoMX0scmVkOmZ1bmN0aW9uKHgpe3JldHVybiEheC5lcnJvcn19LHdhdGNoOiIjbC10YWJuYW1lIn0sIiNidG4tdGFiY2xvc2UiOntiaW5kOmZ1bmN0aW9uKHgsYSl7bnVsbCE9YSYmdGhpcy5teS50cmlnZ2VyKCIjYnRuLXRhYmNsb3NlIiwidGFiY2xvc2UiLHguaWQpfSxldmVudHM6ImNsaWNrLm15In0sIiN0YWItcHJveHkiOntiaW5kOmZ1bmN0aW9uKCl7fSxsaXN0ZW46e2FwcGJ1c3k6ZnVuY3Rpb24oeCxhKXtPYmplY3QuaXNPYmplY3QoYSkmJmEuaWQ9PXguaWQmJnRoaXMubXkucm9vdCgpLnRvZ2dsZUNsYXNzKCJ0YWItYnVzeSIsISFhLmJ1c3kpfSxwYXRoY2hhbmdlOmZ1bmN0aW9uKHgsYSl7aWYoT2JqZWN0LmlzT2JqZWN0KGEpKXt2YXIgYj10aGlzLGM9YS5wYXRoLnNsaWNlKDApO2lmKGEuaWQhPXguaWQpe2lmKGMuam9pbigi77+9IikhPXgucGF0aC5qb2luKCLvv70iKSlyZXR1cm47eC5oYXNoMD09eC5oYXNoMSYmYi5QaG8oIkNsb3NlIikoe3RhYmlkOnguaWQsZW5mb3JjZTohMH0pfWVsc2UgeC5wYXRoPWMseC5uYW1lPWEudGl0bGV8fHgubmFtZSxiLlBobygiX2NvbXBpbGVkIikmJnguYWN0aXZlJiZ3aW5kb3cubG9jYXRpb24ucmVwbGFjZSgiIyIrYi5wMnUoYykuam9pbigiLyIpKSxiLm15LmNoZWNrKCIjbC10YWJuYW1lIil9fSxyZWxvYWQ6ZnVuY3Rpb24oeCxhKXtpZihPYmplY3QuaXNPYmplY3QoYSkmJmEuaWQ9PXguaWQpe3ZhciBiPXRoaXMsYz1hLnBhdGguc2xpY2UoMCksZD0kKCIjbC1hcHBzPiNhcHAtIithLmlkKTtkLmxlbmd0aCYmZC5pcygiLm15LWZvcm0iKSYmKGQubXkoInJlbW92ZSIpLGQucmVtb3ZlKCkseC5ydW49ITEseC5lcnJvcj0hMSx4Lmhhc2gwPXguaGFzaDE9IiIseC5hY3RpdmUmJmIuUGhvKCJTd2l0Y2giKShjKSl9fX19fSxIVE1MOic8YSBocmVmPSIiIGlkPSJsLXRhYm5hbWUiIG9uYXV4Y2xpY2s9IiQodGhpcykucGFyZW50KCkuZmluZChcJyNidG4tdGFiY2xvc2VcJykuY2xpY2soKTtyZXR1cm4gZmFsc2U7Ij48L2E+PGRpdiBpZD0ibC10YWJzdGF0ZSIgY2xhc3M9ImwtdGFibWFyayI+4oCiPC9kaXY+PGRpdiBpZD0iYnRuLXRhYmNsb3NlIiBjbGFzcz0ibC10YWJtYXJrIiB0aXRsZT0ie0JUTl9DTE9TRVRBQn0iPuKclTwvZGl2PjxkaXYgaWQ9InRhYi1wcm94eSIgY2xhc3M9ImhpZGUiPjwvZGl2PicscGFyYW1zOntzdHJpY3Q6ITB9fSxDb25maXJtOntpZDoiY3cuUGhvdG9uLkNvbmZpcm0iLHBhcmFtczp7ZGVsYXk6NSxzdHJpY3Q6ITB9LGRhdGE6e2NtZDoiIix0ZXh0OiIiLGNzczoieGdyYXkiLHllczoiWWVzIixubzoiTm8iLGNhbmNlbDoiQ2FuY2VsIix5ZXNjc3M6ImdyZWVuIixub2NzczoiIix1c2VCdXR0b25zOiExfSxpbml0OmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcy5kYXRhO3guZm9ybWdlbihbJzxkaXYgY2xhc3M9IicrYi5jc3MrJyI+JytiLnRleHQrIjwvZGl2PiIse2xhYmVsOiI3MHB4Iixyb3c6YS5wYXJhbXMud2lkdGgrInB4Iixyb3dDc3M6Im15LXJvdyBtdDE1IHB0MTUgbWItNSB4Z3JheSBidGQifSxbIiIsInNwbiNidG4teWVzLmJ1dHRvbi4iKyhiLnllc2Nzcz9iLnllc2NzcysiLiI6IiIpKyJtcjUgICIse3R4dDpiLnllcysiIn0sInNwbiNidG4tbm8uYnV0dG9uLiIrKGIubm9jc3M/Yi5ub2NzcysiLiI6IiIpKyJtcjUuaGlkZSIse3R4dDpiLm5vKyIifSwic3BuI2J0bi1jYW5jZWwuYnV0dG9uLmZyLmhpZGUiLHt0eHQ6Yi5jYW5jZWwrIiJ9XS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIGIudXNlQnV0dG9ucyYmInN0cmluZyI9PXR5cGVvZiB4JiZ4P3gucmVwbGFjZSgvXnNwbiMoLispJC8sImJ1dCMkMS5tYXJrZm9jdXMiKTp4fSldKX0sdWk6eyIjYnRuLXllcyI6e2JpbmQ6ZnVuY3Rpb24oeCxhLGIpe251bGwhPWEmJih4LmNtZD0ieWVzIixiLnRyaWdnZXIoImNvbW1pdCIpKX0sZXZlbnRzOiJjbGljay5teSIsY3NzOnsic2VsZjpoaWRlIjpmdW5jdGlvbih4KXtyZXR1cm4heC55ZXN9fX0sIiNidG4tbm8iOntiaW5kOmZ1bmN0aW9uKHgsYSxiKXtudWxsIT1hJiYoeC5jbWQ9Im5vIixiLnRyaWdnZXIoImNvbW1pdCIpKX0sZXZlbnRzOiJjbGljay5teSIsY3NzOnsic2VsZjpoaWRlIjpmdW5jdGlvbih4KXtyZXR1cm4heC5ub319fSwiI2J0bi1jYW5jZWwiOntiaW5kOmZ1bmN0aW9uKHgsYSxiKXtudWxsIT1hJiYoeC5jbWQ9ImNhbmNlbCIsYi50cmlnZ2VyKCJjYW5jZWwiKSl9LGV2ZW50czoiY2xpY2subXkiLGNzczp7InNlbGY6aGlkZSI6ZnVuY3Rpb24oeCl7cmV0dXJuIXguY2FuY2VsfX19fSxzdHlsZTp7IiI6ImZvbnQtc2l6ZToxNnB4OyBsaW5lLWhlaWdodDoyMnB4OyIsIiBjb2RlIjoiYmFja2dyb3VuZDojZTNlOGViOyBwYWRkaW5nOjAuMWVtIDAuM2VtOyBib3JkZXItcmFkaXVzOjJweDsifX0sTmV3SW5kZXg6e2lkOiJjdy5QaG90b24uTmV3SW5kZXgiLGluaGVyaXQ6WyJSVCJdLHBhcmFtczp7cmVzdHlsZTo1MCxzdHJpY3Q6ITB9LGxhbmc6e30sZGF0YTp7X2ZpeGxhbmc6ITEsX2Rkb2NzOltdLF92YWxpZDohMCxfc2F2ZTohMSxfc3RheWJ1c3k6ITAsZGRvYzoiIixuYW1lOiIiLGxhbmd1YWdlOiJqYXZhc2NyaXB0IixpbmRleDp7fSx2aWV3Ont9LGVycm9yczpbXX0saW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzO2EuZGF0YTt4Lmh0bWwoJC5teS5mb3JtZ2VuKGEuSFRNTCkuYXNzaWduKGEubGFuZykpfSx1aTp7IiNtdGl0bGUiOntiaW5kOmZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLnhMYW5nKCkuVFhUX1RJVExFWyJVUEQiPT10aGlzLmRkb2NPcCgpPyJVUEQiOiJORVciXX0sd2F0Y2g6WyIjbWRkb2MiLCIjbXZpZXciLCIjbWxhbmciXX0sIiNtZGVzYyI6e2JpbmQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcy54TGFuZygpLlRYVF9ERVNDW3RoaXMuZGRvY09wKCldLmFzc2lnbih0aGlzLlJUKFsiZGF0YSIsInBhdGgiXSlbMF0udHJ1bmNhdGUoNTAsIm1pZGRsZSIsIi4uLiIpLmVzY2FwZUhUTUwoKSk7cmV0dXJuIHguX2ZpeGxhbmcmJiJxdWVyeSI9PXgubGFuZ3VhZ2UmJnguanNvbiYmeC5qc29uLmluZGV4JiYoYSs9Ijxicj4gRmllbGRzIHRvIGluZGV4OiAiK3guanNvbi5pbmRleC5maWVsZHMubWFwKGZ1bmN0aW9uKHgpe3JldHVybigic3RyaW5nIj09dHlwZW9mIHg/eDpPYmplY3Qua2V5cyh4KVswXSkuZXNjYXBlSFRNTCgpfSkuam9pbigiLCAiKSsiLiIpLGF9LHdhdGNoOlsiI21kZG9jIiwiI212aWV3IiwiI21sYW5nIl19LCIjZndhcm4iOntiaW5kOmZ1bmN0aW9uKHgsYSl7cmV0dXJuW3RoaXMueExhbmcoKS5FWFBbdGhpcy5kZG9jT3AoKV18fCIiLCJlcmxhbmciPT14Lmxhbmd1YWdlP3RoaXMubGFuZy5NU0dfRVJMQU5HOiIiXS5jb21wYWN0KCEwKS5qb2luKCIgIil9LHdhdGNoOlsiI21kZG9jIiwiI212aWV3Il0sY3NzOntoaWRlOmZ1bmN0aW9uKHgpe2lmKHguX3ZhbGlkPXRoaXMubXkudmFsaWQoKSwheC5fdmFsaWQpcmV0dXJuITB9fX0sIiNidG4tbmV3LW9rIjp7ZGVsYXk6MzAsYmluZDpmdW5jdGlvbih4LGEpe251bGwhPWEmJnRoaXMuZG9Db21taXQoKTt2YXIgYj0iX2Rlc2lnbi8iK3guZGRvYy5yZXBsYWNlKC9eX2Rlc2lnblwvLywiIik7dGhpcy5SVChbIkRkb2NzIixiXSk7cmV0dXJuIHRoaXMueExhbmcoKS5CVE5fT0tbdGhpcy5kZG9jT3AoKV19LHdhdGNoOlsiI21kZG9jIiwiI212aWV3IiwiI21sYW5nIl0sY3NzOnsiOmRpc2FibGVkIjpmdW5jdGlvbih4KXtyZXR1cm4heC5fdmFsaWR9LCJzZWxmOm9yYW5nZSI6ZnVuY3Rpb24oKXtyZXR1cm4iVVBEIj09dGhpcy5kZG9jT3AoKX0sInNlbGY6Z3JlZW4iOmZ1bmN0aW9uKCl7cmV0dXJuIlVQRCIhPXRoaXMuZGRvY09wKCl9fX0sIiNidG4tbmV3LWNhbmNlbCI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtudWxsIT1hJiZ0aGlzLm15LmNhbmNlbCgpfX0sIiNtbGFuZyI6e2luaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcy5kYXRhLmxhbmd1YWdlLGI9dGhpcy5sYW5nLlRBR19UWVBFLnNsaWNlKDApO3gudGFncyh7dGFnczpbYi5maWx0ZXIoeD0+T2JqZWN0LnZhbHVlcyh4KVswXSE9YSldLGVtcHR5OmIuZmluZCh4PT5PYmplY3QudmFsdWVzKHgpWzBdPT1hKX0pfSxiaW5kOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIG51bGwhPWEmJih4Lmxhbmd1YWdlPWErIiIpLHguX2ZpeGxhbmd8fCQuZXh0ZW5kKHgsdGhpcy5EZWZhdWx0c1t4Lmxhbmd1YWdlXSksW3gubGFuZ3VhZ2VdfSxjc3M6e2hpZGU6ZnVuY3Rpb24oeCxhKXtyZXR1cm4geC5fZml4bGFuZ319fSwiI21kZG9jIjp7aW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9T2JqZWN0LmVudHJpZXMoYS5SVChbIkRkb2NzIl0pKS5tYXAoeD0+KHtuYW1lOnhbMF0sbGFuZzp4WzFdLmxhbmd1YWdlfHwiamF2YXNjcmlwdCJ9KSkuc29ydEJ5KCJuYW1lIik7ZnVuY3Rpb24gYyh4LGIpe2EubXkuZmluZCgiI21kZG9jIikudHJpZ2dlcigiYmx1ciIpfWZ1bmN0aW9uIGQoeCxjKXt2YXIgZD1hLmRhdGEubGFuZ3VhZ2V8fCJqYXZhc2NyaXB0IixlPWIuZmlsdGVyKHg9PngubGFuZz09ZCkubWFwKHg9PngubmFtZSk7aWYoIXgudGVybSlyZXR1cm4gYyhlLm1hcCh4PT4oe2xhYmVsOngsdmFsdWU6eH0pKSk7dmFyIGY9bmV3IFJlZ0V4cChSZWdFeHAuZXNjYXBlKHgudGVybSksImkiKTtyZXR1cm4gYyhlLmZpbHRlcih4PT5mLnRlc3QoeCkpLm1hcCh4PT4oe2xhYmVsOngsdmFsdWU6eH0pKSl9eC5hdXRvY29tcGxldGUoe2RlbGF5OjAsc291cmNlOmQsc2VsZWN0OmMuZGVib3VuY2UoMTApLGFwcGVuZFRvOmEubXkucm9vdCgpLG1pbkxlbmd0aDowfSl9LGJpbmQ6ZnVuY3Rpb24oeCxhKXtpZihudWxsPT1hKXJldHVybiB4LmRkb2M7eC5kZG9jPWF9LGNoZWNrOmZ1bmN0aW9uKHgsYSl7dmFyIGI9Il9kZXNpZ24vIithLnJlcGxhY2UoL15fZGVzaWduXC8vLCIiKSxjPXRoaXMuUlQoWyJEZG9jcyIsYl0pO2lmKGMmJihjLmxhbmd1YWdlfHwiamF2YXNjcmlwdCIpIT14Lmxhbmd1YWdlKXJldHVybiB0aGlzLmxhbmcuRVJSX1hMQU5HfSx3YXRjaDpbIiNtbGFuZyJdfSwiI212aWV3Ijp7aW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzO2EuZGF0YTt4Lm9uKCJrZXl1cC5teSIsZnVuY3Rpb24oeCl7dmFyIGI9eC5rZXlDb2RlOzEzIT1iJiYxMCE9Ynx8IWEubXkudmFsaWQoKXx8YS5kb0NvbW1pdCgpfSl9LGJpbmQ6ZnVuY3Rpb24oeCxhKXtpZihudWxsPT1hKXJldHVybiB4Lm5hbWU7eC5uYW1lPWF9LGNoZWNrOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIGE/YS5pbmRleE9mKCIvIik+LTE/dGhpcy5sYW5nLkVSUl9ORVdfU0xBU0g6dm9pZCAwOnRoaXMueExhbmcoKS5FUlJfTkVXX1JFUX19LCIjeG12aWV3Ijp7YmluZDpmdW5jdGlvbih4LGEpe3JldHVybiB0aGlzLnhMYW5nKCkuTEJMX05FV30sd2F0Y2g6WyIjbWxhbmciXX19LEhUTUw6Wyc8ZGl2IGNsYXNzPSJ4Z3JheSI+JywnPGRpdiBpZD0ibXRpdGxlIiBjbGFzcz0ibXQyIGZzMTMwIGxoMTMwIGZ3NTAwIj48L2Rpdj4nLCc8ZGl2IGlkPSJtZGVzYyIgY2xhc3M9Im10NSBtYjQiPjwvZGl2PicsIjwvZGl2PiIse3JvdzoiMTAwJSIsbGFiZWw6IjkwcHgiLGxhYmVsQ3NzOiJteS1sYWJlbCBmczkwIG84MCIscm93Q3NzOiJteS1yb3cgcHQ2IHBiMiJ9LFsie0xCTF9UWVBFfSIsInNwbiNtbGFuZyJdLHtyb3dDc3M6Im15LXJvdyBwdDgifSxbIntMQkxfRERPQ30iLCJpbnAjbWRkb2MudzEwMHAiLHtwbGM6IntQTENfRERPQ30iLHNwZWxsY2hlY2s6ImZhbHNlIixhdXRvY29tcGxldGU6Im9mZiJ9LCJtc2ciXSxbJzxzcGFuIGlkPSJ4bXZpZXciPjwvc3Bhbj4nLCJpbnAjbXZpZXcudzEwMHAiLHtwbGM6IntQTENfTkVXfSIsc3BlbGxjaGVjazoiZmFsc2UiLGF1dG9jb21wbGV0ZToib2ZmIn0sIm1zZyJdLCc8ZGl2IGlkPSJmd2FybiIgY2xhc3M9InhncmF5IHB0MTIgaGlkZSI+PC9kaXY+JywnPGRpdiBjbGFzcz0ibXQxNiBwdDcgYnRkIGZzOTUiPicsWyIiLCJidXQjYnRuLW5ldy1vay5ncmVlbi5tcjIubWFya2ZvY3VzIix7dHh0OiJ7QlROX05FV19PS30ifSwiYnV0I2J0bi1uZXctY2FuY2VsLm1hcmtmb2N1cyIse3R4dDoie0JUTl9ORVdfQ0FOQ0VMfSJ9XSwiPC9kaXY+Il0sc3R5bGU6eyIiOiJmb250LXNpemU6MTZweDtsaW5lLWhlaWdodDoyMnB4OyIsIiBiIjoiZm9udC13ZWlnaHQ6NTAwOyBvcGFjaXR5OjAuOTsgd29yZC1icmVhazogYnJlYWstd29yZDsgY29sb3I6IzJhNDU2ODsifSxkb0NvbW1pdDpmdW5jdGlvbigpe3RoaXMubXkudmFsaWQoKSYmKHRoaXMuZGF0YS5fc2F2ZT90aGlzLlNhdmVJbmRleCgpLmFsd2F5cyh0aGlzLm15LmNvbW1pdCk6dGhpcy5teS5jb21taXQoKSl9LGRkb2NPcDpmdW5jdGlvbigpe3ZhciB4PXRoaXMuZGF0YSxhPSJfZGVzaWduLyIreC5kZG9jLnJlcGxhY2UoL15fZGVzaWduXC8vLCIiKSxiPXRoaXMuUlQoWyJEZG9jcyIsYV0pO3JldHVybiBiP2Iudmlld3MmJmIudmlld3NbeC5uYW1lXT8iVVBEIjoiQUREIjoiTkVXIn0seExhbmc6ZnVuY3Rpb24oKXt2YXIgeD10aGlzLmRhdGEubGFuZ3VhZ2U7cmV0dXJuIHRoaXMubGFuZ1t4XXx8dGhpcy5sYW5nLmphdmFzY3JpcHR9LERlZmF1bHRzOntlcmxhbmc6e21hcDonZnVuKHtEb2N9KSAtPlxuXHQlJSBCYXNpYyBFcmxhbmcgbWFwIGZ1bmN0aW9uLFxuICAlJSBlbXVsYXRlcyBfYWxsX2RvY3NcbiAgSyA9IHByb3BsaXN0czpnZXRfdmFsdWUoPDwiX2lkIj4+LCBEb2MpLFxuICBWID0gcHJvcGxpc3RzOmdldF92YWx1ZSg8PCJfcmV2Ij4+LCBEb2MpLFxuICBFbWl0KEssIHtbezw8InJldiI+PixWfV19KVxuZW5kLicscmVkdWNlOiIifSxqYXZhc2NyaXB0OnttYXA6IiBmdW5jdGlvbihkb2Mpe1xuICAvLyBTYW1wbGUgSlMgbWFwIGZ1bmN0aW9uLFxuICAvLyBlbXVsYXRlcyBfYWxsX2RvY3NcbiAgZW1pdChkb2MuX2lkLCB7cmV2OmRvYy5fcmV2fSk7XG59IixyZWR1Y2U6IiJ9LHF1ZXJ5Ontqc29uOntpbmRleDp7ZmllbGRzOlt7X2lkOiJhc2MifSx7X3JldjoiYXNjIn1dfX19fSxTYXZlSW5kZXg6ZnVuY3Rpb24oeCxhKXt2YXIgYixjLGQ9dGhpcyxlPWQuZGF0YSxmPWF8fGUubmFtZSxnPSJfZGVzaWduLyIrKGUuZGRvYy5yZXBsYWNlKC9eX2Rlc2lnblwvLywiIil8fCItIitOdW1iZXIucmFuZG9tKDQ2NjU2LDE2Nzk2MTUpLnRvU3RyaW5nKDM2KSksaD0icXVlcnkiPT1lLmxhbmd1YWdlLGk9ZC5SVChbImRhdGEiLCJwYXRoIl0pWzBdO2QuUlQoWyJkYXRhIiwidGFiaWQiXSk7aWYoZS5lcnJvcnMubGVuZ3RoKXJldHVybiBjdy5saWIubm90ZShkLmxhbmcuRVJSX0VSUkRPQy5hc3NpZ24oZS5lcnJvcnNbMF0pLCJlcnJvciIpLCQuRGVmZXJyZWQoKS5yZWplY3QoZS5lcnJvcnNbMF0pO2lmKGgpe2lmKGUuZGRvY3x8KGUuZGRvYz1nLmZyb20oOCkpLChiPSQuZXh0ZW5kKCEwLHt9LHh8fGUuanNvbikpLmRkb2M9Zy5mcm9tKDgpLGIubmFtZT1lLm5hbWV8fCJpXyIrTnVtYmVyLnJhbmRvbSg0NjY1NiwxNjc5NjE1KS50b1N0cmluZygzNiksIWIuZGRvYylyZXR1cm4gY3cubGliLm5vdGUoZC5sYW5nLkVSUl9OT19OQU1FX1JVTiwiZXJyb3IiKSwkLkRlZmVycmVkKCkucmVqZWN0KGQubGFuZy5FUlJfTk9fTkFNRV9SVU4pfWVsc2UgZS5kZG9jfHwoZS5kZG9jPWcpLChjPSQuZXh0ZW5kKCEwLHt9LHh8fGQuUlQoWyJEZG9jcyIsZ10pKSkuX2lkfHwoYz17X2lkOmcsbGFuZ3VhZ2U6ZS5sYW5ndWFnZXx8ImphdmFzY3JpcHQifSksYy52aWV3c3x8KGMudmlld3M9e30pLGUubWFwLnRyaW0oKT9jdy5saWIudW5tYXNrKGMsW2UubWFwXSxbWyJ2aWV3cyIsZiwibWFwIl1dKTpjdy5saWIuZ2V0cmVmKGMsWyJ2aWV3cyIsZiwibWFwIl0pJiYoYy52aWV3c1tmXS5tYXA9dm9pZCAwKSxlLnJlZHVjZS50cmltKCkmJmUubWFwLnRyaW0oKT9jdy5saWIudW5tYXNrKGMsW2UucmVkdWNlXSxbWyJ2aWV3cyIsZiwicmVkdWNlIl1dKTpjdy5saWIuZ2V0cmVmKGMsWyJ2aWV3cyIsZiwicmVkdWNlIl0pJiYoYy52aWV3c1tmXS5yZWR1Y2U9dm9pZCAwKTtkLlJUKCJCdXN5IikoITApO3ZhciBqPVtpLGg/Il9pbmRleCI6Z10saz1KU09OLnN0cmluZ2lmeShoP2I6YyksbD1oPyJwb3N0IjoicHV0IjtyZXR1cm4gZC5SZXEoe3VybDpqLG1ldGhvZDpsLGhlYWRlcnM6eyJYLUNvdWNoLUZ1bGwtQ29tbWl0IjoidHJ1ZSJ9LGNvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi9qc29uIixkYXRhOmssZGF0YVR5cGU6Impzb24ifSkudGhlbihmdW5jdGlvbih4KXtofHwoZS5yZXY9eC5yZXYpLGN3LmxpYi5ub3RlKGQubGFuZy5NU0dfU0FWRUQuYXNzaWduKGg/Yi5kZG9jKyIuIitiLm5hbWU6ZyksIm9rIiksJC5teS5yYWRpbygiZGJ1cGRhdGUiLHtkYjppLGNtZDoid3JpdGUiLGRvY3M6W2ddLHNraXBWaWV3VXBkYXRlOiEwfSl9KS5mYWlsKGZ1bmN0aW9uKHgsYSl7Y3cubGliLm5vdGUoZC5sYW5nLk1TR19GQUlMLmFzc2lnbihoP2IuZGRvYysiLiIrYi5uYW1lOmcseCxhKSwiZXJyb3IiKSxkLlJUKCJCdXN5IikoITEpfSkuYWx3YXlzKGZ1bmN0aW9uKCl7ZS5fc3RheWJ1c3l8fGQuUlQoIkJ1c3kiKSghMSl9KX19LEluZGV4RWQ6e2lkOiJjdy5QaG90b24uSW5kZXhFZCIsaW5oZXJpdDpbIlJUIl0scGFyYW1zOntyZXN0eWxlOjUwLHN0cmljdDohMH0sbGFuZzp7fSxDTXByZWZpeDoiIixIVE1MOic8ZGl2IGNsYXNzPSJiZy1wZ3JheSBsaDE2MCBwdDIgeGdyYXkgbncgb2ggZWxsIHhwYW5lbCI+PGRpdiBjbGFzcz0iZnM5MCBmciBwdDEgdGFyIj48c3BhbiBpZD0idmlldy1taS1tb2RlIiBjbGFzcz0ibXQwIj48L3NwYW4+PHNwYW4gaWQ9ImJ0bi12aWV3LW1pLWNsb3NlIiBjbGFzcz0icHI5IHBsOCBtbDYgcHNldWRvbGluayB0ZG4iIHN0eWxlPSJib3JkZXItbGVmdDoxcHggc29saWQgcmdiYSgwLDAsMCwwLjIpOyIgdGl0bGU9IntCVE5fUEFORUxfQ0xPU0V9Ij7inJU8L3NwYW4+PC9kaXY+PGRpdiBpZD0idmlldy1taS1uYW1lIiBjbGFzcz0iYm9sZGVyIHBsOCBvaCBudyBlbGwiPjwvZGl2PjwvZGl2PjxzZWN0aW9uIGlkPSJ2aWV3LW1pLXByb3h5IiBjbGFzcz0iYmJzIHBsMSBwcjEiPjx0ZXh0YXJlYSBpZD0idmlldy1taS1lZCIgY2xhc3M9IncxMDBwIj48L3RleHRhcmVhPjwvc2VjdGlvbj48c2VjdGlvbiBpZD0idmlldy1lZC1idXR0b25zIiBjbGFzcz0ibncgcDgiIHN0eWxlPSIiPjxkaXYgY2xhc3M9ImZyIj48YnV0dG9uIGlkPSJidG4tdmlldy1taS1yZXZlcnQiIGNsYXNzPSJvcmFuZ2UgaGlkZSIgdGl0bGU9IntUSVBfUkVWRVJUfSI+PHNwYW4gY2xhc3M9ImZpLXJlZnJlc2ggZnM5NSBvNjAiPjwvc3Bhbj7CoHtCVE5fUkVWRVJUfcKgPC9idXR0b24+PGJ1dHRvbiBpZD0iYnRuLXZpZXctbWktZGVsIiBjbGFzcz0icmVkIGhpZGUgbWwyIiB0aXRsZT0ie1RJUF9ERUx9Ij48c3BhbiBjbGFzcz0iZmktdHJhc2ggZnM5NSBvNjAiPjwvc3Bhbj7CoHtCVE5fREVMfTwvYnV0dG9uPjwvZGl2PjxidXR0b24gaWQ9ImJ0bi12aWV3LW1pLXJ1biIgY2xhc3M9Im1yMiBncmVlbiIgZGlzYWJsZWQgdGl0bGU9IntUSVBfUlVOfSI+PHNwYW4gY2xhc3M9ImZpLXBsYXkgZnM5NSBvNjAiPjwvc3Bhbj7CoHtCVE5fUlVOfTwvYnV0dG9uPjxidXR0b24gaWQ9ImJ0bi12aWV3LW1pLXNhdmVhcyIgY2xhc3M9Im1yMiIgdGl0bGU9IntUSVBfU0FWRUFTfSI+PHNwYW4gY2xhc3M9ImZpLXNhdmUgZnM5NSBvNjAiPjwvc3Bhbj7CoHtCVE5fU0FWRUFTfTwvYnV0dG9uPjwvc2VjdGlvbj4nLGluaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpczt4Lmh0bWwoYS5IVE1MLmFzc2lnbihhLmxhbmcpKX0sZGF0YTp7ZGRvYzoiIixuYW1lOiIiLHR5cGU6ImluZGV4Iixtb2RlOlsiamF2YXNjcmlwdCJdLHRleHQ6IiIsanNvbjp7fSxlcnJvcnM6W10sc3RhbXA6MCxyZXY6IiJ9LHVpOnsiI3ZpZXctbWktZWQiOntpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj1hLmRhdGEubW9kZSsiIjtDb2RlTWlycm9yLmZyb21UZXh0QXJlYSh4WzBdLHttb2RlOmIsbGluZU51bWJlcnM6ITEsdmlld3BvcnRNYXJnaW46MTAwLHNjcm9sbGJhclN0eWxlOm51bGwsbGluZVdyYXBwaW5nOiEwLHRhYlNpemU6Mix0aGVtZToiZGVmYXVsdCIscmVhZE9ubHk6Impzb24iPT1iLGV4dHJhS2V5czp7IkN0cmwtUiI6ZnVuY3Rpb24oKXthLlNhdmVJbmRleCgpfSwiQ21kLVIiOmZ1bmN0aW9uKCl7YS5TYXZlSW5kZXgoKX19fSl9LGJpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj14Lm1vZGUrIiI7cmV0dXJuIG51bGwhPWEmJiJqc29uIiE9YiYmKHgudGV4dD1hKSwianNvbiI9PWI/SlNPTi5zdHJpbmdpZnkoeC5qc29uLG51bGwsIlx0Iik6eC50ZXh0fX0sIiN2aWV3LW1pLXByb3h5Ijp7aW5pdDpmdW5jdGlvbih4KXt0aGlzLm5pY2VTY3JvbGwoeCl9LGRlbGF5OjIwMCxiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcyxjPU9iamVjdC5pc09iamVjdCxkPU9iamVjdC5pc0FycmF5LGU9eC50ZXh0LGY9bnVsbDt4LmVycm9ycz1bXSxudWxsIT0oZj1iLlJUKCJqc2V2YWwiKSgiKCIrZSsiKSIpKSYmYyhmKT9jKGYuaW5kZXgpJiZkKGYuaW5kZXguZmllbGRzKT9mLnR5cGUmJiJqc29uIiE9PWYudHlwZSYmeC5lcnJvcnMucHVzaChiLmxhbmcuRVJSX05PX1RZUEUpOnguZXJyb3JzLnB1c2goYi5sYW5nLkVSUl9OT19JTkRFWCk6eC5lcnJvcnMucHVzaChiLmxhbmcuRVJSX05PX0pTT04pLHguanNvbj14LmVycm9ycy5sZW5ndGg/e306Zn0sd2F0Y2g6WyIjdmlldy1taS1lZCJdLGNzczp7cmVkOmZ1bmN0aW9uKHgpe3JldHVybiB4LmVycm9ycy5sZW5ndGg+MH19fSwiI3ZpZXctbWktbW9kZSI6e2luaXQ6ZnVuY3Rpb24oeCl7eC50YWdzKHRoaXMubGFuZy5UQUdfTU9ERSl9LGJpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzO2lmKG51bGw9PWEpcmV0dXJuIHgubW9kZTt4Lm1vZGU9YTt2YXIgYz1iLm15LmZpbmQoIiN2aWV3LW1pLWVkIikubmV4dCgpWzBdLkNvZGVNaXJyb3I7cmV0dXJuIGMuc2V0T3B0aW9uKCJtb2RlIixhKyIiKSxjLnNldE9wdGlvbigicmVhZE9ubHkiLCJqc29uIj09YSsiIiksYi5teS5yZWNhbGMoIiN2aWV3LW1pLWVkIiksYX19LCIjdmlldy1taS1uYW1lIjp7ZGVsYXk6NTAsYmluZDpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXMsYz1iLlJUKCJkYXRhIik7cmV0dXJuIHguZXJyb3JzLmxlbmd0aD94LmVycm9yc1swXS5lc2NhcGVIVE1MKCk6eC5kZG9jLnNwbGl0KCIvIilbMV0/Yi5sYW5nLlRYVF9USVRMRS5hc3NpZ24oeC5uYW1lLmVzY2FwZUhUTUwoKSwnPGEgY2xhc3M9InRkbiIgaHJlZj0iI3sxfS97Mn0iPl9kL3szfTwvYT4nLmFzc2lnbihjLnBhdGhbMF0seC5kZG9jLHguZGRvYy5mcm9tKDgpLmVzY2FwZUhUTUwoKSkpOiJEZWZhdWx0IE1hbmdvIGluZGV4In0sY3NzOntyZWQ6ZnVuY3Rpb24oeCl7cmV0dXJuIHguZXJyb3JzLmxlbmd0aD4wfSxib2xkZXI6ZnVuY3Rpb24oeCl7cmV0dXJuIDA9PXguZXJyb3JzLmxlbmd0aH19LHdhdGNoOlsiI3ZpZXctbWktcHJveHkiXX0sIiNidG4tdmlldy1taS1jbG9zZSI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtpZihudWxsIT1hKXt2YXIgYj10aGlzLlJUO2IoImRhdGEiKS5lZGl0b3I9ITEsYigic3Rhc2hWaWV3U3RhdGUiKSgpLGIoIm15IikuY2hlY2soIiNidG4tdmlld2NvZGUiKSxiKCJteSIpLnJlc3R5bGUuZGVsYXkoNTApfX19LCIjYnRuLXZpZXctbWktcnVuIjp7YmluZDpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXMsYz0iX2lkeC8iK3guZGRvYy5mcm9tKDgpKyLvv70iK3gubmFtZSxkPWIuUlQoWyJWaSIsYywidmlldyJdKXx8e3NvdXJjZTpiLlJUKCJEZWZhdWx0TWFuZ29JZHgiKS50ZXh0fSxlPWIubGFuZyxmPSc8c3BhbiBjbGFzcz0iZmktcGxheSBmczk1IG82MCI+PC9zcGFuPsKgJyxnPXgudGV4dCE9KGQuc291cmNlfHwiIik7cmV0dXJuIG51bGwhPWEmJmcmJiJfZGVzaWduLyIhPXguZGRvYyYmYi5TYXZlSW5kZXgoKSxmK2UuQlROX1JVTn0sZGVsYXk6NTAsY3NzOnsiOmRpc2FibGVkIjpmdW5jdGlvbih4KXtpZigiX2Rlc2lnbi8iPT14LmRkb2N8fHguZXJyb3JzLmxlbmd0aHx8eC5qc29uLmRkb2MmJnguanNvbi5kZG9jIT14LmRkb2MuZnJvbSg4KXx8eC5qc29uLm5hbWUmJnguanNvbi5uYW1lIT14Lm5hbWUpcmV0dXJuITA7dmFyIGE9dGhpcyxiPSJfaWR4LyIreC5kZG9jLmZyb20oOCkrIu+/vSIreC5uYW1lLGM9YS5SVChbIlZpIixiLCJ2aWV3Il0pfHx7c291cmNlOmEuUlQoIkRlZmF1bHRNYW5nb0lkeCIpLnRleHR9O3JldHVybiB4LnRleHQ9PShjLnNvdXJjZXx8IiIpfX0sd2F0Y2g6WyIjdmlldy1taS1wcm94eSJdfSwiI2J0bi12aWV3LW1pLXJldmVydCI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzLGM9Il9pZHgvIit4LmRkb2MuZnJvbSg4KSsi77+9Iit4Lm5hbWUsZD1iLlJUKFsiVmkiLGMsInZpZXciXSl8fHtzb3VyY2U6Yi5SVCgiRGVmYXVsdE1hbmdvSWR4IikudGV4dH07bnVsbCE9YSYmKHgudGV4dD1kLnNvdXJjZSl9LGRlbGF5OjUwLGNzczp7InNlbGY6aGlkZSI6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPSJfaWR4LyIreC5kZG9jLmZyb20oOCkrIu+/vSIreC5uYW1lLGM9YS5SVChbIlZpIixiLCJ2aWV3Il0pfHx7c291cmNlOmEuUlQoIkRlZmF1bHRNYW5nb0lkeCIpLnRleHR9O3JldHVybiB4LnRleHQ9PWMuc291cmNlfX0scmVjYWxjOlsiI3ZpZXctbWktZWQiXSx3YXRjaDpbIiN2aWV3LW1pLXByb3h5Il19LCIjYnRuLXZpZXctbWktZGVsIjp7YmluZDpmdW5jdGlvbih4LGEpe2lmKG51bGwhPWEpe3ZhciBiPXRoaXMsYz1iLmxhbmcsZD0nPHNwYW4gY2xhc3M9ImZ3NTAwIj57MX08L3NwYW4+JzskLm15Lm1vZGFsKHtkYXRhOnt5ZXM6Yy5CVE5fREVMX1lFUyx5ZXNjc3M6InJlZCIsbm86Yy5CVE5fREVMX05PLGNhbmNlbDoiIix0ZXh0OmMuTVNHX0RFTF9URVhULmFzc2lnbihkLmFzc2lnbih4Lm5hbWUuZXNjYXBlSFRNTCgpKSxkLmFzc2lnbih4LmRkb2MuZnJvbSg4KS5lc2NhcGVIVE1MKCkpKX0sbWFuaWZlc3Q6Yi5QaG8oIkNvbmZpcm0iKSxjbG9zZTpiLlBobygibGFuZyIpLkJUTl9YRExHLGVzYzohMCxnbG9iYWw6ITAsc2NyZWVuOiEwfSkudGhlbihmdW5jdGlvbih4KXsieWVzIj09eC5jbWQmJmIuRGVsSW5kZXgoKX0pfX0sZGVsYXk6MjAsY3NzOnsic2VsZjpoaWRlIjpmdW5jdGlvbih4KXtpZigheC5kZG9jLmZyb20oOCkpcmV0dXJuITB9fSx3YXRjaDpbIiN2aWV3LW1pLXByb3h5Il19LCIjYnRuLXZpZXctbWktc2F2ZWFzIjp7Y3NzOnsiOmRpc2FibGVkIjpmdW5jdGlvbih4LGEpe3JldHVybiEheC5lcnJvcnMubGVuZ3RofX0sd2F0Y2g6WyIjdmlldy1taS1wcm94eSJdLGJpbmQ6ZnVuY3Rpb24oeCxhLGIpe3ZhciBjPXRoaXMsZD1jLlJUO2lmKG51bGwhPWEpe2lmKGIuZGF0YSgibW9kYWwiKSlyZXR1cm4gYi5tb2RhbCghMCksdm9pZCAwO3ZhciBlPSQuZXh0ZW5kKCEwLHtfZml4bGFuZzohMCxfdmFsaWQ6ITAsX3NhdmU6ITAsbGFuZ3VhZ2U6InF1ZXJ5IixkZG9jOiIifSwiX2Rlc2lnbi8iIT14LmRkb2M/T2JqZWN0LnJlamVjdCh4LFsibmFtZSJdKTpPYmplY3QucmVqZWN0KHgsWyJkZG9jIiwibmFtZSJdKSxPYmplY3Quc2VsZWN0KHguanNvbixbImRkb2MiLCJuYW1lIl0pKTskLmV4dGVuZCghMCxlLGQoWyJkYXRhIiwibWFuZ28iXSkpLGQoKS5jcmVhdGVOZXdJZHhEbGcoYixlKS50aGVuKGZ1bmN0aW9uKGEpe3ZhciBiLGU9Yy5teS5jaGVjaztmdW5jdGlvbiBmKCl7YS5kZG9jLmZyb20oOCk9PXguZGRvYyYmYS5uYW1lPT14Lm5hbWU/KGUoIiNidG4tdmlldy1taS1yZXZlcnQiKSxlKCIjYnRuLXZpZXctbWktcnVuIiksZCgiR2V0VmlldyIpKCEwKSk6ZCgiY2hhbmdlVmlldyIpKCJfaWR4LyIrYS5kZG9jKyLvv70iK2EubmFtZSl9KGI9ZCgiUGVuZGluZyIpLl92aWV3bGlzdCk/Yi50aGVuKGYuZGVib3VuY2UoNTApKTpmKCl9LmRlYm91bmNlKDUwKSl9fSxldmVudHM6ImNsaWNrLm15In19LHN0eWxlOnsiIC5Db2RlTWlycm9yIjoiZm9udC1zaXplOjAuODEyNWVtIWltcG9ydGFudDtwYWRkaW5nOjBweDttaW4taGVpZ2h0OjMwMHB4OyIsIiAuQ29kZU1pcnJvci1zY3JvbGwiOiJtaW4taGVpZ2h0OjMwMHB4OyIsIiAjdmlldy1taS1wcm94eSI6ZnVuY3Rpb24oeCl7cmV0dXJuIm1heC1oZWlnaHQ6IisoeC5wYXJlbnQoKS5oZWlnaHQoKS00OC0zMikrInB4OyJ9LCIgI3ZpZXctbWktcHJveHkucmVkIC5Db2RlTWlycm9yLWxpbmVudW1iZXJzIjoiYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDIwMCwgMjAwLCAwLjc1KTsiLCIgI2J0bi12aWV3LW1pLWRlbCI6ImRpc3BsYXk6bm9uZTsiLCIgI2J0bi12aWV3LW1pLXJldmVydC5oaWRlICsgI2J0bi12aWV3LW1pLWRlbCI6ImRpc3BsYXk6aW5saW5lLWJsb2NrOyJ9LGRpZTpmdW5jdGlvbih4KXt2YXIgYT14LmZpbmQoIiN2aWV3LW1pLXByb3h5IikuZ2V0TmljZVNjcm9sbDsiZnVuY3Rpb24iPT10eXBlb2YgYSYmYSgpLnJlbW92ZSgpfSxTYXZlSW5kZXg6ZnVuY3Rpb24oKXt2YXIgeD10aGlzLGE9eC5QaG8oIk5ld0luZGV4IiksYj14LmRhdGE7KGE9eC5QaG8oIk5ld0luZGV4IikpLlNhdmVJbmRleC5jYWxsKHtfc3RheWJ1c3k6ITAsbGFuZzphLmxhbmcsUlQ6eC5SVCxQaG86eC5QaG8sUmVxOnguUmVxLGRhdGE6e2xhbmd1YWdlOiJxdWVyeSIsZXJyb3JzOmIuZXJyb3JzLGRkb2M6Yi5kZG9jLG5hbWU6Yi5uYW1lLGpzb246Yi5qc29ufX0pLnRoZW4oZnVuY3Rpb24oYSl7dmFyIGI7ZnVuY3Rpb24gYygpe3gubXkuY2hlY2soIiNidG4tdmlldy1taS1yZXZlcnQiKSx4Lm15LmNoZWNrKCIjYnRuLXZpZXctbWktcnVuIil9KGI9eC5SVCgiUGVuZGluZyIpLl92aWV3bGlzdCk/Yi50aGVuKGMuZGVib3VuY2UoNTApKTpjKCkseC5SVCgiR2V0VmlldyIpKCEwKX0uZGVib3VuY2UoNTApKX0sRGVsSW5kZXg6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzLGM9Yi5kYXRhLGQ9eHx8Yy5kZG9jLGU9YXx8Yy5uYW1lLGY9Yi5SVCxnPWYoWyJkYXRhIiwicGF0aCJdKTtmKFsiZGF0YSIsInRhYmlkIl0pO3JldHVybiBmKCJCdXN5IikoITApLGIuUmVxKHt1cmw6W2dbMF0sIl9pbmRleCIsZCwianNvbiIsZV0sbWV0aG9kOiJERUxFVEUiLGhlYWRlcnM6eyJYLUNvdWNoLUZ1bGwtQ29tbWl0IjoidHJ1ZSJ9LGNvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi9qc29uIixkYXRhVHlwZToianNvbiJ9KS50aGVuKGZ1bmN0aW9uKHgpe2N3LmxpYi5ub3RlKGIubGFuZy5NU0dfREVMX09LLmFzc2lnbihkKyIuIitlKSwib2siKSxmKCJjaGFuZ2VWaWV3IikoIiIpLGZ1bmN0aW9uKCl7JC5teS5yYWRpbygiZGJ1cGRhdGUiLHtkYjpnWzBdLGNtZDoid3JpdGUiLGRvY3M6W2RdfSl9LmRlYm91bmNlKDEwMCkoKX0pLmZhaWwoZnVuY3Rpb24oeCxhKXtjdy5saWIubm90ZShiLmxhbmcuTVNHX0RFTF9GQUlMLmFzc2lnbihkKyIuIitlLHgsYSksImVycm9yIil9KS5hbHdheXMoZigiQnVzeSIpLmZpbGwoITEpKX19LFZpZXdFZDp7aWQ6ImN3LlBob3Rvbi5WaWV3RWQiLGluaGVyaXQ6WyJSVCJdLHBhcmFtczp7cmVzdHlsZTo1MCxzdHJpY3Q6ITB9LGxhbmc6e30sQ01wcmVmaXg6IiIsSFRNTDonPGRpdiBjbGFzcz0iYmctcGdyYXkgbGgxNjAgcHQyIHhncmF5IG53IG9oIGVsbCB4cGFuZWwiPjxkaXYgY2xhc3M9ImZzOTAgZnIgcHQxIHRhciI+PHNwYW4gaWQ9InZpZXctbXItbW9kZSIgY2xhc3M9Im10MCI+PC9zcGFuPjxzcGFuIGlkPSJidG4tdmlldy1tci1jbG9zZSIgY2xhc3M9InByOSBwbDggbWw2IHBzZXVkb2xpbmsgdGRuIiBzdHlsZT0iYm9yZGVyLWxlZnQ6MXB4IHNvbGlkIHJnYmEoMCwwLDAsMC4yKTsiIHRpdGxlPSJ7QlROX1BBTkVMX0NMT1NFfSI+4pyVPC9zcGFuPjwvZGl2PjxkaXYgaWQ9InZpZXctbXItbmFtZSIgY2xhc3M9ImJvbGRlciBwbDggb2ggbncgZWxsIj48L2Rpdj48L2Rpdj48c2VjdGlvbiBpZD0idmlldy1tci1wcm94eSIgY2xhc3M9ImJicyBwbDEgcHIxIj48dGV4dGFyZWEgaWQ9InZpZXctbXItZWQiIGNsYXNzPSJ3MTAwcCI+PC90ZXh0YXJlYT48L3NlY3Rpb24+PHNlY3Rpb24gaWQ9InZpZXctZWQtYnV0dG9ucyIgY2xhc3M9Im53IHA4IiBzdHlsZT0iIj48ZGl2IGNsYXNzPSJmciI+PGJ1dHRvbiBpZD0iYnRuLXZpZXctbXItcmV2ZXJ0IiBjbGFzcz0ib3JhbmdlIGhpZGUiIHRpdGxlPSJ7VElQX1JFVkVSVH0iPjxzcGFuIGNsYXNzPSJmaS1yZWZyZXNoIGZzOTUgbzYwIj48L3NwYW4+wqB7QlROX1JFVkVSVH3CoDwvYnV0dG9uPjxidXR0b24gaWQ9ImJ0bi12aWV3LW1yLWRlbCIgY2xhc3M9InJlZCBoaWRlIG1sMiIgdGl0bGU9IntUSVBfREVMfSI+PHNwYW4gY2xhc3M9ImZpLXRyYXNoIGZzOTUgbzYwIj48L3NwYW4+wqB7QlROX0RFTH08L2J1dHRvbj48L2Rpdj48YnV0dG9uIGlkPSJidG4tdmlldy1tci1ydW4iIGNsYXNzPSJtcjIgZ3JlZW4iIGRpc2FibGVkIHRpdGxlPSJ7VElQX1JVTn0iPjxzcGFuIGNsYXNzPSJmaS1wbGF5IGZzOTUgbzYwIj48L3NwYW4+wqB7QlROX1JVTn08L2J1dHRvbj48YnV0dG9uIGlkPSJidG4tdmlldy1tci1zYXZlYXMiIGNsYXNzPSJtcjIiIHRpdGxlPSJ7VElQX1NBVkVBU30iPjxzcGFuIGNsYXNzPSJmaS1zYXZlIGZzOTUgbzYwIj48L3NwYW4+wqB7QlROX1NBVkVBU308L2J1dHRvbj48L3NlY3Rpb24+Jyxpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXM7YS5qc2V2YWw9YS5SVCgianNldmFsIikseC5odG1sKGEuSFRNTC5hc3NpZ24oYS5sYW5nKSkseC50aGVuKGZ1bmN0aW9uKCl7eC5maW5kKCIuQ29kZU1pcnJvciIpWzBdLkNvZGVNaXJyb3IucmVmcmVzaCgpfS5kZWJvdW5jZSgxMDApKX0sZGF0YTp7ZGRvYzoiIixuYW1lOiIiLHR5cGU6InZpZXciLG1vZGU6WyJtYXAiXSxtYXA6IiIscmVkdWNlOiIiLGpzb246e30sZXJyb3JzOltdLHN0YW1wOjAscmV2OiIifSx1aTp7IiN2aWV3LW1yLWVkIjp7ZGVsYXk6MzAwLGluaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPWEuZGF0YSxjPWIubW9kZSsiIjtDb2RlTWlycm9yLmZyb21UZXh0QXJlYSh4WzBdLHttb2RlOiJqc29uIj09Yz9jOmEuQ01wcmVmaXgrKGIubGFuZ3VhZ2V8fCJqYXZhc2NyaXB0IiksbGluZU51bWJlcnM6ITAsdmlld3BvcnRNYXJnaW46MTAwLHNjcm9sbGJhclN0eWxlOm51bGwsbGluZVdyYXBwaW5nOiExLHRhYlNpemU6Mix0aGVtZToiZGVmYXVsdCIscmVhZE9ubHk6Impzb24iPT1jLGV4dHJhS2V5czp7IkN0cmwtUiI6ZnVuY3Rpb24oKXthLlNhdmVWaWV3KCl9LCJDbWQtUiI6ZnVuY3Rpb24oKXthLlNhdmVWaWV3KCl9fX0pfSxiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGI9eC5tb2RlKyIiO3JldHVybiBudWxsIT1hJiYianNvbiIhPWImJih4W2JdPWEpLCJqc29uIj09Yj9KU09OLnN0cmluZ2lmeSh4Lmpzb24sbnVsbCwiXHQiKTp4W2JdfX0sIiN2aWV3LW1yLXByb3h5Ijp7aW5pdDpmdW5jdGlvbih4KXt0aGlzLm5pY2VTY3JvbGwoeCl9LGRlbGF5OjEwMCxiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcyxjPU9iamVjdC5pc0Z1bmN0aW9uLGQ9T2JqZWN0LmlzU3RyaW5nKHgubGFuZ3VhZ2UpP3gubGFuZ3VhZ2U6ImphdmFzY3JpcHQiLGU9eC5tYXAsZj14LnJlZHVjZXx8IiIsZz1udWxsLGg9L14oJSVbXlxyXG5dKltcclxuXSspKltcclxuXHNcdF0qZnVuW1xyXG5cc1x0XSpcKFtcclxuXHNcdF0qXHs/LyxpPS9cLltcclxuXHNcdF0qJC8saj1bIl9zdW0iLCJfY291bnQiLCJfbWluIiwiX21heCIsIl9zdGF0cyIsIl9zdW1zcXIiXSxrPXguZXJyb3JzPVtdO251bGw9PWEmJigiamF2YXNjcmlwdCI9PWQ/KG51bGwhPShnPWIuanNldmFsKCIoIitlKyIpIikpJiZjKGcpfHxrLnB1c2goYi5sYW5nLkVSUl9OT19NQVApLGYmJiJfIiE9ZlswXSYmKGc9bnVsbCxudWxsIT0oZz1iLmpzZXZhbCgiKCIrZisiKSIpKSYmYyhnKXx8ay5wdXNoKGIubGFuZy5FUlJfTk9fUkVEVUNFKSksIl8iPT1mWzBdJiYtMT09ai5pbmRleE9mKGYudHJpbSgpKSYmay5wdXNoKGIubGFuZy5FUlJfRl9CVUlMVElOKSk6ImVybGFuZyI9PWQmJihoLnRlc3QoZSkmJmkudGVzdChlKXx8ay5wdXNoKGIubGFuZy5FUlJfTk9fTUFQKSwiXyI9PWZbMF0mJi0xPT1qLmluZGV4T2YoZi50cmltKCkpP2sucHVzaChiLmxhbmcuRVJSX0ZfQlVJTFRJTik6IWZ8fCJfIj09ZlswXXx8aC50ZXN0KGYpJiZpLnRlc3QoZil8fGsucHVzaChiLmxhbmcuRVJSX05PX1JFRFVDRSkpLHguanNvbj17fSx4LmVycm9ycy5sZW5ndGh8fChlLnRyaW0oKSYmKHguanNvbi5tYXA9ZSksZi50cmltKCkmJih4Lmpzb24ucmVkdWNlPWYpKSl9LHdhdGNoOlsiI3ZpZXctbXItZWQiXSxjc3M6e3JlZDpmdW5jdGlvbih4KXtyZXR1cm4geC5lcnJvcnMubGVuZ3RoPjB9fX0sIiN2aWV3LW1yLW1vZGUiOntpbml0OmZ1bmN0aW9uKHgpe3gudGFncyh0aGlzLmxhbmcuVEFHX01PREUpfSxiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcztpZihudWxsPT1hKXJldHVybiB4Lm1vZGU7eC5tb2RlPWE7dmFyIGM9Yi5teS5maW5kKCIjdmlldy1tci1lZCIpLm5leHQoKVswXS5Db2RlTWlycm9yO3JldHVybiBjLnNldE9wdGlvbigibW9kZSIsImpzb24iPT1hKyIiPyJqc29uIjpiLkNNcHJlZml4K3gubGFuZ3VhZ2UpLGMuc2V0T3B0aW9uKCJyZWFkT25seSIsImpzb24iPT1hKyIiKSxiLm15LnJlY2FsYygiI3ZpZXctbXItZWQiKSxhfX0sIiN2aWV3LW1yLW5hbWUiOntkZWxheTo1MCxpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj1hLlJUKCJkYXRhIiksYz1hLmRhdGE7eC5vbigiY2xpY2subXkiLCJhIixmdW5jdGlvbigpe3ZhciB4PWEuUGhvKCJFZCIpLmpzb250cmVlLkxzKCksZD0idmlld3N0YXRlLiIrY3cubGliLnNkYm0oYi5wYXRoWzBdKyIvIitjLmRkb2MpLGU9KHgoZCl8fHtzdGF0ZTpbXX0pLnN0YXRlfHxbXTtlPWUuY29uY2F0KFtjdy5saWIuc2RibSgiUm9vdOKdgHZpZXdzIiksY3cubGliLnNkYm0oIlJvb3TinYB2aWV3c+KdgCIrYy5uYW1lKV0pLnVuaXF1ZSgpLHgoZCx7c3RhbXA6RGF0ZS5ub3coKSxzdGF0ZTplfSl9KX0sYmluZDpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXMsYz1iLlJUKCJkYXRhIik7cmV0dXJuIHguZXJyb3JzLmxlbmd0aD94LmVycm9yc1swXS5lc2NhcGVIVE1MKCk6Yi5sYW5nLlRYVF9USVRMRVt4Lmxhbmd1YWdlXS5hc3NpZ24oJzxhIGNsYXNzPSJ0ZG4iIGhyZWY9IiN7MX0vezJ9Ij5fZC97M308L2E+Jy5hc3NpZ24oYy5wYXRoWzBdLHguZGRvYyx4LmRkb2MuZnJvbSg4KS5lc2NhcGVIVE1MKCkpLHgubmFtZS5lc2NhcGVIVE1MKCkpfSxjc3M6e3JlZDpmdW5jdGlvbih4KXtyZXR1cm4geC5lcnJvcnMubGVuZ3RoPjB9LGJvbGRlcjpmdW5jdGlvbih4KXtyZXR1cm4gMD09eC5lcnJvcnMubGVuZ3RofX0sd2F0Y2g6WyIjdmlldy1tci1wcm94eSJdfSwiI2J0bi12aWV3LW1yLWNsb3NlIjp7YmluZDpmdW5jdGlvbih4LGEpe2lmKG51bGwhPWEpe3ZhciBiPXRoaXMuUlQ7YigiZGF0YSIpLmVkaXRvcj0hMSxiKCJzdGFzaFZpZXdTdGF0ZSIpKCksYigibXkiKS5jaGVjaygiI2J0bi12aWV3Y29kZSIpLGIoIm15IikucmVzdHlsZS5kZWxheSg1MCl9fX0sIiNidG4tdmlldy1tci1ydW4iOntkZWxheTo1MCxiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcyxjPXguZGRvYysi77+9Iit4Lm5hbWUsZD1iLlJUKFsiVmkiLGMsInZpZXciXSl8fHt9LGU9eC5tYXAhPShkLm1hcHx8IiIpfHx4LnJlZHVjZSE9KGQucmVkdWNlfHwiIik7cmV0dXJuIG51bGwhPWEmJmUmJiJfZGVzaWduLyIhPXguZGRvYz9iLlNhdmVWaWV3KCk6bnVsbCE9YSYmYi5SVCgiR2V0VmlldyIpKCEwKSwnPHNwYW4gY2xhc3M9ImZpLXBsYXkgZnM5NSBvNjAiPjwvc3Bhbj7CoCcrYi5sYW5nLkJUTl9TQVZFfSxjc3M6eyI6ZGlzYWJsZWQiOmZ1bmN0aW9uKHgpe2lmKHguZXJyb3JzLmxlbmd0aClyZXR1cm4hMDt2YXIgYT10aGlzLGI9eC5kZG9jKyLvv70iK3gubmFtZSxjPWEuUlQoWyJWaSIsYiwidmlldyJdKXx8e307YS5sYW5nO3JldHVybiEoeC5tYXAhPShjLm1hcHx8IiIpfHx4LnJlZHVjZSE9KGMucmVkdWNlfHwiIikpfSwic2VsZjpncmVlbiI6ZnVuY3Rpb24oeCl7aWYoeC5lcnJvcnMubGVuZ3RoKXJldHVybiExO3ZhciBhPXRoaXMsYj14LmRkb2MrIu+/vSIreC5uYW1lLGM9YS5SVChbIlZpIixiLCJ2aWV3Il0pfHx7fTtyZXR1cm4geC5tYXAhPShjLm1hcHx8IiIpfHx4LnJlZHVjZSE9KGMucmVkdWNlfHwiIil9fSx3YXRjaDpbIiN2aWV3LW1yLXByb3h5Il19LCIjYnRuLXZpZXctbXItcmV2ZXJ0Ijp7ZGVsYXk6NTAsYmluZDpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXMsYz14LmRkb2MrIu+/vSIreC5uYW1lLGQ9Yi5SVChbIlZpIixjLCJ2aWV3Il0pfHx7fTtudWxsIT1hJiYoeC5tYXA9ZC5tYXB8fCIiLHgucmVkdWNlPWQucmVkdWNlfHwiIil9LGNzczp7InNlbGY6aGlkZSI6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPXguZGRvYysi77+9Iit4Lm5hbWUsYz1hLlJUKFsiVmkiLGIsInZpZXciXSl8fHt9O3JldHVybiB4Lm1hcD09KGMubWFwfHwiIikmJngucmVkdWNlPT0oYy5yZWR1Y2V8fCIiKX19LHJlY2FsYzpbIiN2aWV3LW1yLWVkIl0sd2F0Y2g6WyIjdmlldy1tci1wcm94eSJdfSwiI2J0bi12aWV3LW1yLWRlbCI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtpZihudWxsIT1hKXt2YXIgYj10aGlzLGM9Yi5sYW5nLGQ9JzxzcGFuIGNsYXNzPSJmdzUwMCI+ezF9PC9zcGFuPic7JC5teS5tb2RhbCh7ZGF0YTp7eWVzOmMuQlROX0RFTF9ZRVMseWVzY3NzOiJyZWQiLG5vOmMuQlROX0RFTF9OTyxjYW5jZWw6IiIsdGV4dDpjLk1TR19ERUxfVEVYVC5hc3NpZ24oeC5uYW1lLmVzY2FwZUhUTUwoKSx4LmRkb2MuZXNjYXBlSFRNTCgpKX0sbWFuaWZlc3Q6Yi5QaG8oIkNvbmZpcm0iKSxkYXRhOnt5ZXM6Yy5CVE5fREVMX1lFUyx5ZXNjc3M6InJlZCIsbm86Yy5CVE5fREVMX05PLGNhbmNlbDoiIix0ZXh0OmMuTVNHX0RFTF9URVhULmFzc2lnbihkLmFzc2lnbih4Lm5hbWUuZXNjYXBlSFRNTCgpKSxkLmFzc2lnbih4LmRkb2MuZXNjYXBlSFRNTCgpKSl9LG1hbmlmZXN0OmIuUGhvKCJDb25maXJtIiksY2xvc2U6Yi5QaG8oImxhbmciKS5CVE5fWERMRyxlc2M6ITAsZ2xvYmFsOiEwLHNjcmVlbjohMH0pLnRoZW4oZnVuY3Rpb24oeCl7InllcyI9PXguY21kJiZiLkRlbFZpZXcoKX0pfX0sZGVsYXk6NTAsY3NzOnsic2VsZjpoaWRlIjpmdW5jdGlvbih4KXtpZigheC5kZG9jLmZyb20oOCkpcmV0dXJuITB9fSx3YXRjaDpbIiN2aWV3LW1yLXByb3h5Il19LCIjYnRuLXZpZXctbXItc2F2ZWFzIjp7Y3NzOnsiOmRpc2FibGVkIjpmdW5jdGlvbih4LGEpe3JldHVybiEheC5lcnJvcnMubGVuZ3RofX0sd2F0Y2g6WyIjdmlldy1tci1wcm94eSJdLGJpbmQ6ZnVuY3Rpb24oeCxhLGIpe3ZhciBjPXRoaXMsZD1jLlJUO2lmKG51bGwhPWEpe2lmKGIuZGF0YSgibW9kYWwiKSlyZXR1cm4gYi5tb2RhbCghMCksdm9pZCAwO3ZhciBlPWMuUlQoWyJEZG9jcyIseC5kZG9jLCJsYW5ndWFnZSJdKXx8ImphdmFzY3JpcHQiLGY9JC5leHRlbmQoITAse19maXhsYW5nOiEwLF92YWxpZDohMCxfc2F2ZTohMCxsYW5ndWFnZTplLGRkb2M6IiJ9LE9iamVjdC5yZWplY3QoeCxbImxhbmd1YWdlIl0pKTtkKCkuY3JlYXRlTmV3SWR4RGxnKGIsZikudGhlbihmdW5jdGlvbihhKXt2YXIgYixlPWMubXkuY2hlY2s7ZnVuY3Rpb24gZigpe2EuZGRvYz09eC5kZG9jJiZhLm5hbWU9PXgubmFtZT8oZSgiI2J0bi12aWV3LW1yLXJldmVydCIpLGUoIiNidG4tdmlldy1tci1ydW4iKSk6ZCgiY2hhbmdlVmlldyIpKGEuZGRvYysi77+9IithLm5hbWUpLGQoIkdldFZpZXciKSghMCl9KGI9ZCgiUGVuZGluZyIpLl92aWV3bGlzdCk/Yi50aGVuKGYuZGVib3VuY2UoNTApKTpmKCl9LmRlYm91bmNlKDUwKSl9fSxldmVudHM6ImNsaWNrLm15In19LHN0eWxlOnsiIC5Db2RlTWlycm9yIjoiZm9udC1zaXplOjAuODEyNWVtIWltcG9ydGFudDtwYWRkaW5nOjBweDttaW4taGVpZ2h0OjMwMHB4OyIsIiAuQ29kZU1pcnJvci1zY3JvbGwiOiJtaW4taGVpZ2h0OjMwMHB4OyIsIiAjdmlldy1tci1wcm94eSI6ZnVuY3Rpb24oeCl7cmV0dXJuIm1heC1oZWlnaHQ6IisoeC5wYXJlbnQoKS5oZWlnaHQoKS00OC0zMSkrInB4OyJ9LCIgI3ZpZXctbXItcHJveHkucmVkIC5Db2RlTWlycm9yLWxpbmVudW1iZXJzIjoiYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDIwMCwgMjAwLCAwLjc1KTsiLCIgI2J0bi12aWV3LW1yLWRlbCI6ImRpc3BsYXk6bm9uZTsiLCIgI2J0bi12aWV3LW1yLXJldmVydC5oaWRlICsgI2J0bi12aWV3LW1yLWRlbCI6ImRpc3BsYXk6aW5saW5lLWJsb2NrOyJ9LGRpZTpmdW5jdGlvbih4KXt2YXIgYT14LmZpbmQoIiN2aWV3LW1yLXByb3h5IikuZ2V0TmljZVNjcm9sbDsiZnVuY3Rpb24iPT10eXBlb2YgYSYmYSgpLnJlbW92ZSgpfSxTYXZlVmlldzpmdW5jdGlvbigpe3ZhciB4PXRoaXMsYT14LlBobygiTmV3SW5kZXgiKSxiPXguZGF0YTtyZXR1cm4gYS5TYXZlSW5kZXguY2FsbCh7bGFuZzphLmxhbmcsUlQ6eC5SVCxQaG86eC5QaG8sUmVxOnguUmVxLGRhdGE6e19zdGF5YnVzeTohMCxsYW5ndWFnZTp4LlJUKFsiRGRvY3MiLGIuZGRvY10pLmxhbmd1YWdlfHwiamF2YXNjcmlwdCIsZXJyb3JzOmIuZXJyb3JzLGRkb2M6Yi5kZG9jLG5hbWU6Yi5uYW1lLG1hcDpiLmpzb24ubWFwLHJlZHVjZTpiLmpzb24ucmVkdWNlfHwiIn19KS50aGVuKGZ1bmN0aW9uKGEpe3ZhciBiO2Z1bmN0aW9uIGMoKXt4Lm15LmNoZWNrKCIjYnRuLXZpZXctbXItcmV2ZXJ0IikseC5teS5jaGVjaygiI2J0bi12aWV3LW1yLXJ1biIpfShiPXguUlQoIlBlbmRpbmciKS5fdmlld2xpc3QpP2IudGhlbihjLmRlYm91bmNlKDUwKSk6YygpLHguUlQoIkdldFZpZXciKSghMCl9LmRlYm91bmNlKDUwKSl9LERlbFZpZXc6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzLGM9Yi5kYXRhLGQ9YXx8Yy5uYW1lLGU9Yi5SVCxmPWUoWyJkYXRhIiwicGF0aCJdKTtlKFsiZGF0YSIsInRhYmlkIl0pO2lmKGMuZXJyb3JzLmxlbmd0aClyZXR1cm4gY3cubGliLm5vdGUoYi5sYW5nLkVSUl9FUlJET0MuYXNzaWduKGMuZXJyb3JzWzBdKSwiZXJyb3IiKSwkLkRlZmVycmVkKCkucmVqZWN0KGMuZXJyb3JzWzBdKTt2YXIgZz0kLmV4dGVuZCghMCx7fSx4fHxlKFsiRGRvY3MiLGMuZGRvY10pKTtyZXR1cm4gY3cubGliLmdldHJlZihnLFsidmlld3MiLGRdKSYmZGVsZXRlIGcudmlld3NbZF0sZSgiQnVzeSIpKCEwKSxiLlJlcSh7dXJsOltmWzBdLGcuX2lkXSxtZXRob2Q6IlBVVCIsaGVhZGVyczp7IlgtQ291Y2gtRnVsbC1Db21taXQiOiJ0cnVlIn0sY29udGVudFR5cGU6ImFwcGxpY2F0aW9uL2pzb24iLGRhdGE6SlNPTi5zdHJpbmdpZnkoZyksZGF0YVR5cGU6Impzb24ifSkudGhlbihmdW5jdGlvbih4KXtjLnJldj14LnJldixjdy5saWIubm90ZShiLmxhbmcuTVNHX0RFTF9PSy5hc3NpZ24oZy5faWQrIi4iK2QpLCJvayIpLGUoImNoYW5nZVZpZXciKSgiIiksZnVuY3Rpb24oKXskLm15LnJhZGlvKCJkYnVwZGF0ZSIse2RiOmZbMF0sY21kOiJ3cml0ZSIsZG9jczpbZy5faWRdfSl9LmRlYm91bmNlKDEwMCkoKX0pLmZhaWwoZnVuY3Rpb24oeCxhKXtjdy5saWIubm90ZShiLmxhbmcuTVNHX0RFTF9GQUlMLmFzc2lnbihnLl9pZCsiLiIrZCx4LGEpLCJlcnJvciIpfSkuYWx3YXlzKGUoIkJ1c3kiKS5maWxsKCExKSl9fSxNYW5nb0VkOntpZDoiY3cuUGhvdG9uLk1hbmdvRWQiLGluaGVyaXQ6WyJSVCJdLHBhcmFtczp7cmVzdHlsZTo1MCxzdHJpY3Q6ITB9LGxhbmc6e30sSFRNTDonPGRpdiBjbGFzcz0iYmctcGdyYXkgbGgxNjAgcHQyIHhncmF5IG53IG9oIGVsbCB4cGFuZWwiPjxkaXYgY2xhc3M9ImZzOTAgdGFyIGZyIHB0MSI+PHNwYW4gaWQ9InZpZXctbWFuZ28tbW9kZSIgY2xhc3M9Im10MCI+PC9zcGFuPjxzcGFuIGlkPSJidG4tdmlldy1tYW5nby1jbG9zZSIgY2xhc3M9InByOSBwbDggbWw2IHBzZXVkb2xpbmsgdGRuIiBzdHlsZT0iYm9yZGVyLWxlZnQ6MXB4IHNvbGlkIHJnYmEoMCwwLDAsMC4yKTsiIHRpdGxlPSJ7QlROX1BBTkVMX0NMT1NFfSI+4pyVPC9zcGFuPjwvZGl2PjxkaXYgaWQ9InZpZXctbWFuZ28tbmFtZSIgY2xhc3M9ImJvbGRlciBwbDggb2ggbncgZWxsIj48L2Rpdj48L2Rpdj48c2VjdGlvbiBpZD0idmlldy1tYW5nby1wcm94eSIgY2xhc3M9ImJicyBwbDEgcHIxIj48dGV4dGFyZWEgaWQ9InZpZXctbWFuZ28tZWQiIGNsYXNzPSJ3MTAwcCI+PC90ZXh0YXJlYT48L3NlY3Rpb24+PHNlY3Rpb24gaWQ9InZpZXctbWFuZ28tYnV0dG9ucyIgY2xhc3M9Im53IHA4IiBzdHlsZT0iIj48ZGl2IGNsYXNzPSJmciI+PGJ1dHRvbiBpZD0iYnRuLXZpZXctbWFuZ28tcmV2ZXJ0IiBjbGFzcz0iaGlkZSIgdGl0bGU9IntUSVBfUkVTRVR9Ij48c3BhbiBjbGFzcz0iZmktcmVmcmVzaCBmczk1IG82MCI+PC9zcGFuPsKge0JUTl9SRVNFVH3CoDwvYnV0dG9uPjxidXR0b24gaWQ9ImJ0bi12aWV3LW1hbmdvLWRlbCIgY2xhc3M9ImhpZGUgcmVkIiB0aXRsZT0ie1RJUF9ERUx9Ij48c3BhbiBjbGFzcz0iZmktdHJhc2ggZnM5NSBvNjAiPjwvc3Bhbj7CoHtCVE5fREVMfTwvYnV0dG9uPjwvZGl2PjxidXR0b24gaWQ9ImJ0bi12aWV3LW1hbmdvLXJ1biIgY2xhc3M9Im1yMiBncmVlbiIgdGl0bGU9IntUSVBfUlVOfSI+PHNwYW4gY2xhc3M9ImZpLXBsYXkgZnM5NSBvNjAiPjwvc3Bhbj7CoHtCVE5fUlVOfTwvYnV0dG9uPjxidXR0b24gaWQ9ImJ0bi12aWV3LW1hbmdvLXN0YXNoIiBjbGFzcz0ibXIyIiB0aXRsZT0ie1RJUF9TQVZFfSI+PHNwYW4gY2xhc3M9ImZpLXNhdmUgZnM5NSBvNjAiPjwvc3Bhbj7CoHtCVE5fU0FWRX08L2J1dHRvbj48YnV0dG9uIGlkPSJidG4tdmlldy1tYW5nby1leHBsYWluIiBjbGFzcz0ibXIyIiB0aXRsZT0ie1RJUF9FWFBMfSI+PHNwYW4gY2xhc3M9ImZpLW1lZ2FwaG9uZSBmczk1IG82MCI+PC9zcGFuPsKge0JUTl9FWFBMfTwvYnV0dG9uPjwvc2VjdGlvbj4nLGluaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpczt4Lmh0bWwoYS5IVE1MLmFzc2lnbihhLmxhbmcpKSxhLlRleHQ9YS5kYXRhLnRleHQsYS5WYWxpZGF0ZT1hLlZhbGlkYXRlKCksYS5NYW5nb0tleXM9Y3cubGliLmEybyhhLk1hbmdvS2V5cy5zcGxpdCgiICIpKX0sZGF0YTp7bmFtZToiVW50aXRsZWQgcXVlcnkiLHR5cGU6Im1hbmdvIix0ZXh0OiIoe1xuXHQvLyBXcml0ZSB5b3VyIG1hbmdvIHF1ZXJ5LCBKUyBzeW50YXggYWxsb3dlZFxufSkiLGpzb246e30sZXJyb3JzOltdLHN0YW1wOjB9LE1vZGU6WyJqYXZhc2NyaXB0Il0sVGV4dDoiIix1aTp7IiN2aWV3LW1hbmdvLWVkIjp7aW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YS5Nb2RlKyIiO0NvZGVNaXJyb3IuZnJvbVRleHRBcmVhKHhbMF0se21vZGU6YixsaW5lTnVtYmVyczohMSx2aWV3cG9ydE1hcmdpbjoxMDAsc2Nyb2xsYmFyU3R5bGU6bnVsbCxsaW5lV3JhcHBpbmc6ITAsdGFiU2l6ZToyLHRoZW1lOiJkZWZhdWx0IixyZWFkT25seToianNvbiI9PWIsZXh0cmFLZXlzOnsiQ3RybC1SIjpmdW5jdGlvbigpe2EuUlQoIkdldFZpZXciKSghMCl9LCJDbWQtUiI6ZnVuY3Rpb24oKXthLlJUKCJHZXRWaWV3IikoITApfX19KX0sYmluZDpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXMuTW9kZSsiIjtyZXR1cm4gbnVsbCE9YSYmImpzb24iIT1iJiYoeC50ZXh0PWEpLCJqc29uIj09Yj9jdy5saWIuanNvbih4Lmpzb24sIiAgIiw0MCk6eC50ZXh0fX0sIiN2aWV3LW1hbmdvLXByb3h5Ijp7aW5pdDpmdW5jdGlvbih4KXt0aGlzLm5pY2VTY3JvbGwoeCl9LGRlbGF5OjIwMCxiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcy5WYWxpZGF0ZSh4LnRleHQpO09iamVjdC5pc09iamVjdChiKT94LmVycm9ycz1bXTp4LmVycm9ycz1iLHguanNvbj14LmVycm9ycy5sZW5ndGg/e306Yn0sd2F0Y2g6WyIjdmlldy1tYW5nby1lZCJdLGNzczp7cmVkOmZ1bmN0aW9uKHgpe3JldHVybiB4LmVycm9ycy5sZW5ndGg+MH19fSwiI2J0bi12aWV3LW1hbmdvLXJ1biI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzO2lmKG51bGwhPWEpe3ZhciBjPWIuUlQsZD1jKCJkYXRhIikuZ3JpZCxlPWMoImRhdGEiKS5jb2x1bW5zLGY9ZS5zbGljZSgwKSxnPShjKCJqc2V2YWwiKSgiKCIreC50ZXh0KyIpIil8fHtmaWVsZHM6W119KS5maWVsZHN8fFtdLGg9KGMoImpzZXZhbCIpKCIoIitiLlRleHQrIikiKXx8e2ZpZWxkczpbXX0pLmZpZWxkc3x8W10saT1nLnN1YnRyYWN0KGgpLnN1YnRyYWN0KGguc3VidHJhY3QoZikpLGo9ZisiIj09Ii52YWx1ZSImJmcubGVuZ3RoP2cudG8oOCk6Zi5jb25jYXQoaS5zdWJ0cmFjdChmKSkudG8oOCk7ZSsiIiE9aisiIiYmKGMoImRhdGEiKS5jb2x1bW5zPWouc2xpY2UoMCksZCYmYygiYnVpbGRHcmlkQ29sdW1ucyIpKCkpLGIuVGV4dD14LnRleHQsYygiR2V0VmlldyIpKCEwKS50aGVuKGZ1bmN0aW9uKCl7ZCYmKGMoIm15IikucmVjYWxjKCIjdmlldy1ncmlkLWNvbHMiKSxjKCJteSIpLmNoZWNrKCIjdmlldy1ncmlkLWNvbHMiKSl9KX19LGNzczp7IjpkaXNhYmxlZCI6ZnVuY3Rpb24oeCl7cmV0dXJuIHguZXJyb3JzLmxlbmd0aD4wfHx0aGlzLlRleHQ9PXgudGV4dH19LHdhdGNoOlsiI3ZpZXctbWFuZ28tcHJveHkiXX0sIiNidG4tdmlldy1tYW5nby1leHBsYWluIjp7YmluZDpmdW5jdGlvbih4LGEsYil7dmFyIGM9dGhpcztpZihudWxsIT1hKXt2YXIgZD1jLm15LmZpbmQoIiN2aWV3LW1hbmdvLXByb3h5IiksZT1kLm91dGVySGVpZ2h0KCktMyxmPWQub3V0ZXJXaWR0aCgpLTMyO2lmKGIuZGF0YSgibW9kYWwiKSlyZXR1cm4gYi5tb2RhbCghMCksdm9pZCAwO2IubW9kYWwoe2NzczoicDE1IHB0MCIsYWxpZ246ImJvdHRvbToxNDAlIixub3NlOiJib3R0b20iLGRhdGE6e2hlaWdodDplKyJweCIsZHJhZzohMCxyZXE6e3VybDpbYy5SVCgiZGF0YSIpLnBhdGhbMF0sIl9leHBsYWluIl0sbWV0aG9kOiJwb3N0IixkYXRhOkpTT04uc3RyaW5naWZ5KHguanNvbil9fSx3aWR0aDpmLGRyYWc6IiNkcmFnZ2VyIixib3VuZDoiMCIscm9vdDoiIixtYW5pZmVzdDpjLlBobygiUmVxSlNPTiIpfSl9fSxjc3M6eyI6ZGlzYWJsZWQiOmZ1bmN0aW9uKHgpe3JldHVybiExLHguZXJyb3JzLmxlbmd0aD4wfX0sd2F0Y2g6WyIjdmlldy1tYW5nby1wcm94eSJdfSwiI3ZpZXctbWFuZ28tbW9kZSI6e2luaXQ6ZnVuY3Rpb24oeCl7eC50YWdzKHRoaXMubGFuZy5UQUdfTU9ERSl9LGJpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzO2lmKG51bGw9PWEpcmV0dXJuIGIuTW9kZTtiLk1vZGU9YTt2YXIgYz1iLm15LmZpbmQoIiN2aWV3LW1hbmdvLWVkIikubmV4dCgpWzBdLkNvZGVNaXJyb3I7cmV0dXJuIGMuc2V0T3B0aW9uKCJtb2RlIixhKyIiKSxjLnNldE9wdGlvbigicmVhZE9ubHkiLCJqc29uIj09YSsiIiksYi5teS5yZWNhbGMoIiN2aWV3LW1hbmdvLWVkIiksYX19LCIjdmlldy1tYW5nby1uYW1lIjp7ZGVsYXk6MjUwLGJpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzLGM9Yi5SVCgiZGF0YSIpO2lmKGIuUGhvKCJMcyIpKCJNYW5nby4iK2MucGF0aFswXSxjLm1hbmdvKSwheC5lcnJvcnMubGVuZ3RoKXt2YXIgZD14Lm5hbWUrIiI7cmV0dXJuIkRlZmF1bHQgcXVlcnkiPT1kP2IubGFuZy5UWFRfVElUTEUwOmIubGFuZy5UWFRfVElUTEUuYXNzaWduKGQuZXNjYXBlSFRNTCgpKX1yZXR1cm4geC5lcnJvcnNbMF0uZXNjYXBlSFRNTCgpfSxjc3M6e3JlZDpmdW5jdGlvbih4KXtyZXR1cm4geC5lcnJvcnMubGVuZ3RoPjB9LGJvbGRlcjpmdW5jdGlvbih4KXtyZXR1cm4gMD09eC5lcnJvcnMubGVuZ3RofX0sd2F0Y2g6WyIjdmlldy1tYW5nby1wcm94eSJdfSwiI2J0bi12aWV3LW1hbmdvLWNsb3NlIjp7YmluZDpmdW5jdGlvbih4LGEpe2lmKG51bGwhPWEpe3ZhciBiPXRoaXMuUlQ7YigiZGF0YSIpLmVkaXRvcj0hMSxiKCJzdGFzaFZpZXdTdGF0ZSIpKCksYigibXkiKS5jaGVjaygiI2J0bi12aWV3Y29kZSIpLGIoIm15IikucmVzdHlsZS5kZWxheSg1MCl9fX0sIiNidG4tdmlldy1tYW5nby1kZWwiOntjc3M6eyJzZWxmOmhpZGUiOmZ1bmN0aW9uKCl7cmV0dXJuIkRlZmF1bHQgcXVlcnkiPT10aGlzLlJUKFsiZGF0YSIsIm1hbmdvIiwiYWN0aXZlIl0pfX0sYmluZDpmdW5jdGlvbih4LGEpe2lmKG51bGwhPWEpe3ZhciBiPXRoaXMsYz1iLlJUKFsiZGF0YSIsIm1hbmdvIl0pO2MuYWN0aXZlPSJEZWZhdWx0IHF1ZXJ5IixjLnF1ZXJ5LnJlbW92ZShmdW5jdGlvbihhKXtyZXR1cm4gYS5uYW1lPT14Lm5hbWV9KSxiLlJUKCJkYXRhIikudmlldz0iX2ZpbmTvv71EZWZhdWx0IHF1ZXJ5IixiLlJUKCJHZXRWaWV3cyIpKCEwLCExLCEwKSxiLlJUKCJteSIpLnJlZHJhdy5kZWJvdW5jZSg1MCkoKX19fSwiI2J0bi12aWV3LW1hbmdvLXJldmVydCI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzO251bGwhPWEmJih4LnRleHQ9Yi5SVCgiRGVmYXVsdE1hbmdvUXJ5IikudGV4dCl9LGRlbGF5OjEwMCxjc3M6eyJzZWxmOmhpZGUiOmZ1bmN0aW9uKHgpe3JldHVybiJEZWZhdWx0IHF1ZXJ5IiE9eC5uYW1lfSwiOmRpc2FibGVkIjpmdW5jdGlvbih4KXt2YXIgYT10aGlzO3JldHVybiB4LnRleHQ9PWEuUlQoIkRlZmF1bHRNYW5nb1FyeSIpLnRleHR9fSxyZWNhbGM6WyIjdmlldy1tYW5nby1lZCJdLHdhdGNoOlsiI3ZpZXctbWFuZ28tcHJveHkiXX0sIiNidG4tdmlldy1tYW5nby1zdGFzaCI6e2Nzczp7IjpkaXNhYmxlZCI6ZnVuY3Rpb24oeCxhKXtyZXR1cm4iRGVmYXVsdCBxdWVyeSIhPXgubmFtZT90aGlzLlRleHQ9PXgudGV4dDp4LnRleHQ9PXRoaXMuUlQoIkRlZmF1bHRNYW5nb1FyeSIpLnRleHR9fSx3YXRjaDpbIiN2aWV3LW1hbmdvLXByb3h5Il0sYmluZDpmdW5jdGlvbih4LGEsYil7dmFyIGM9dGhpcyxkPShjLlJUKFsiZGF0YSIsIm1hbmdvIiwiYWN0aXZlIl0pLCc8c3BhbiBjbGFzcz0iZmktc2F2ZSBmczk1IG82MCI+PC9zcGFuPsKgJytjLmxhbmcuQlROX1NBVkUpO3JldHVybiBudWxsPT1hP2Q6Yi5kYXRhKCJtb2RhbCIpPyhiLm1vZGFsKCEwKSxkKTooYy5teS5tb2RhbCgiI2J0bi12aWV3LW1hbmdvLXN0YXNoIix7ZGF0YTokLmV4dGVuZCghMCx7X25ldzp7fX0sYy5SVChbImRhdGEiLCJtYW5nbyJdKSksbWFuaWZlc3Q6e2RhdGE6e30sTmFtZToiIixRcnk6W10saW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YS5kYXRhO2EuUXJ5PU9iamVjdC5jbG9uZShiLnF1ZXJ5LCEwKSx4Lmh0bWwoJC5teS5mb3JtZ2VuKFsnPGRpdiBjbGFzcz0ibWI4Ij4nLCc8ZGl2IGlkPSJmdGl0bGUiIGNsYXNzPSJ4Z3JheSI+e1RYVF9TVEFTSH08L2Rpdj4nLFsiIiwiaW5wI210aXRsZS53MTAwcCIse3BsYzoie1BMQ19TVEFTSH0iLHNwZWxsY2hlY2s6ImZhbHNlIixhdXRvY29tcGxldGU6Im9mZiJ9LCJtc2ciXSwiPC9kaXY+IiwnPGRpdiBjbGFzcz0ibXQxNSBwdDE1IGJ0ZCBmczk1Ij4nLFsiIiwiYnRuI2J0bi1zdGFzaC1vay5ncmVlbi5tcjIiLHt2YWw6IntCVE5fU1RBU0hfT0t9In1dLCI8L2Rpdj4iXSkuYXNzaWduKGMubGFuZykpfSx1aTp7IiNtdGl0bGUiOntiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcztpZihudWxsPT1hKXJldHVybiBiLk5hbWU7aWYoYi5OYW1lPWEuY29tcGFjdCgpLGIuTmFtZS5sZW5ndGg+MiYmYi5OYW1lLmxlbmd0aDwzMSl7dmFyIGM9T2JqZWN0LmNsb25lKHgucXVlcnkuZmluZChmdW5jdGlvbihhKXtyZXR1cm4gYS5uYW1lPT14LmFjdGl2ZX0pLCEwKTtjLm5hbWU9Yi5OYW1lLGMuc3RhbXA9RGF0ZS5ub3coKSx4Ll9uZXc9Y31yZXR1cm4gYX0sY2hlY2s6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gYS5jb21wYWN0KCk/YS5jb21wYWN0KCkubGVuZ3RoPDN8fGEubGVuZ3RoPjMwP2MubGFuZy5FUlJfU1RBU0hfTEVOOnRoaXMuUXJ5LmZpbmQoZnVuY3Rpb24oeCl7cmV0dXJuIHgubmFtZT09YX0pP2MubGFuZy5FUlJfU1RBU0hfRVhJU1Q6dm9pZCAwOmMubGFuZy5FUlJfU1RBU0hfUkVRfX0sIiNidG4tc3Rhc2gtb2siOntiaW5kOmZ1bmN0aW9uKHgsYSl7bnVsbCE9YSYmdGhpcy5teS5jb21taXQoKX0sd2F0Y2g6WyIjbXRpdGxlIl0sY3NzOnsiOmRpc2FibGVkIjpmdW5jdGlvbigpe3JldHVybiF0aGlzLm15LnZhbGlkKCl9fX19LHN0eWxlOnt9fSxjc3M6InAxNSIsZ2xvYmFsOiEwLHNjcmVlbjohMCx3aWR0aDo0MDAsZXNjOiEwLGVudGVyOiEwLGJvdW5kOjIwfSkudGhlbihmdW5jdGlvbih4KXt4LnF1ZXJ5LnB1c2goeC5fbmV3KSx4LmFjdGl2ZT14Ll9uZXcubmFtZSwkLmV4dGVuZChjLlJUKCJkYXRhIikubWFuZ28sT2JqZWN0LnJlamVjdCh4LCJfbmV3IikpLGMuUlQoImRhdGEiKS52aWV3PSJfZmluZO+/vSIreC5hY3RpdmUsYy5SVCgiR2V0Vmlld3MiKSghMCwhMSwhMCksYy5SVCgibXkiKS5yZWRyYXcoKX0pLGQpfSxldmVudHM6ImNsaWNrLm15In19LHN0eWxlOnsiIC5Db2RlTWlycm9yIjoiZm9udC1zaXplOjAuODEyNWVtIWltcG9ydGFudDsgcGFkZGluZzo0cHg7IG1pbi1oZWlnaHQ6MzAwcHg7IiwiICN2aWV3LW1hbmdvLXByb3h5IjpmdW5jdGlvbih4KXtyZXR1cm4ibWF4LWhlaWdodDoiKyh4LnBhcmVudCgpLmhlaWdodCgpLTQ4LTMyKSsicHg7In0sIiAjdmlldy1tYW5nby1wcm94eS5yZWQgLkNvZGVNaXJyb3ItbGluZW51bWJlcnMiOiJiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjAwLCAyMDAsIDAuNzUpOyJ9LGRpZTpmdW5jdGlvbih4KXt2YXIgYT14LmZpbmQoIiN2aWV3LW1hbmdvLXByb3h5IikuZ2V0TmljZVNjcm9sbDsiZnVuY3Rpb24iPT10eXBlb2YgYSYmYSgpLnJlbW92ZSgpfSxNYW5nb0tleXM6InNlbGVjdG9yIGxpbWl0IHNraXAgc29ydCBmaWVsZHMgdXNlX2luZGV4IGNvbmZsaWN0cyByIGJvb2ttYXJrIHVwZGF0ZSBzdGFibGUgc3RhbGUgZXhlY3V0aW9uX3N0YXRzIixWYWxpZGF0ZTpmdW5jdGlvbigpe3ZhciB4PXRoaXMsYT0oeC5kYXRhLHgubGFuZyksYj1PYmplY3QuaXNBcnJheSxjPU9iamVjdC5pc09iamVjdCxkPU9iamVjdC5pc1N0cmluZyxlPU9iamVjdC5zaXplLGY9Y3cubGliLmEybyxnPWYoWyIkYWxsIiwiJGFsbE1hdGNoIiwiJGFuZCIsIiRlbGVtTWF0Y2giLCIkZXhpc3RzIiwiJGluIiwiJGtleU1hcE1hdGNoIiwiJG1vZCIsIiRuaW4iLCIkbm9yIiwiJG5vdCIsIiRvciIsIiRyZWdleCIsIiRzaXplIiwiJHR5cGUiXSksaD1mKFsiJGluIiwiJG5pbiIsIiRtb2QiLCIkYWxsIl0pLGk9ZihbIiRlcSIsIiRuZSIsIiRndCIsIiRndGUiLCIkbHQiLCIkbHRlIl0pLGo9ZihbIm51bGwiLCJib29sZWFuIiwibnVtYmVyIiwic3RyaW5nIiwiYXJyYXkiLCJvYmplY3QiXSk7cmV0dXJuIGs7ZnVuY3Rpb24gayhkKXt2YXIgZj1bXSxnPXguUlQoImpzZXZhbCIpKCIoIitkKyIpIil8fG51bGw7aWYobnVsbCE9ZyYmYyhnKSlpZihjKGcuc2VsZWN0b3IpJiZlKGcuc2VsZWN0b3IpKWlmKGIoZy5maWVsZHMpKWlmKGcuZmllbGRzLmxlbmd0aCl0cnl7bChnLnNlbGVjdG9yLCEwKX1jYXRjaCh4KXtmLnB1c2goeC5tZXNzYWdlKyIiKX1lbHNlIGYucHVzaChhLkVSUl9FTVBUWV9GSUVMRFMpO2Vsc2UgZi5wdXNoKGEuRVJSX05PX0ZJRUxEUyk7ZWxzZSBmLnB1c2goYS5FUlJfTk9fU0VMRUNUT1IpO2Vsc2UgZi5wdXNoKGEuRVJSX05PX0pTT04pO3JldHVybiFmLmxlbmd0aCYmZShnKT4yJiZPYmplY3Qua2V5cyhnKS5mb3JFYWNoKGZ1bmN0aW9uKGIpe3guTWFuZ29LZXlzW2JdfHxmLnB1c2goYS5FUlJfTUFOR09fS0VZUy5hc3NpZ24oIi4iK2IpKX0pLGYubGVuZ3RoP2Y6Z31mdW5jdGlvbiBsKHgsZCl7aWYoYih4KSlmb3IodmFyIGU9MDtlPHgubGVuZ3RoO2UrKylrPXhbZV0sKGIoayl8fGMoaykpJiZsKGssZCk7ZWxzZXt2YXIgZj1PYmplY3Qua2V5cyh4KTtmb3IoZT0wO2U8Zi5sZW5ndGg7ZSsrKXt2YXIgaj1mW2VdLGs9eFtqXTtpZigiJCI9PWpbMF0mJiFnW2pdJiYhaFtqXSYmIWlbal0pdGhyb3cgbmV3IEVycm9yKGEuRVJSX0lOVkFMSURfT1BFUkFUT1IuYXNzaWduKGopKTtnW2pdJiZtKGosayxkKSxpW2pdfHwoaFtqXXx8KGIoayl8fGMoaykpJiZsKGssZCkpfX19ZnVuY3Rpb24gbSh4LGUsZil7dmFyIGc9IiI7aWYoWyIkaW4iLCIkbmluIiwiJG9yIiwiJGFuZCIsIiRtb2QiLCIkbm9yIiwiJGFsbCJdLmZpbmQoeCkmJihiKGUpfHwoZz1hLkVSUl9WX0FSUi5hc3NpZ24oeCkpKSxbIiRub3QiLCIkZWxlbU1hdGNoIiwiJGFsbE1hdGNoIiwiJGtleU1hcE1hdGNoIl0uZmluZCh4KSYmKGMoZSl8fChnPWEuRVJSX1ZfT0JKLmFzc2lnbih4KSkpLCFnKXtpZigiJG1vZCI9PXgmJmIoZSkpaWYoMiE9ZS5sZW5ndGgpZz1hLkVSUl9WX01PRDE7ZWxzZXt2YXIgaD1lWzBdLGk9ZVsxXTswPT09aCYmKGc9YS5FUlJfVl9NT0QwKSwibnVtYmVyIj09dHlwZW9mIGgmJnBhcnNlSW50KGgsMTApPT09aHx8KGc9YS5FUlJfVl9NT0REKSxwYXJzZUludChpLDEwKSE9aSYmKGc9YS5FUlJfVl9NT0RSKX0iJGV4aXN0cyI9PXgmJiJib29sZWFuIiE9dHlwZW9mIGUmJihnPWEuRVJSX1ZfRVhJU1QpLCIkdHlwZSI9PXgmJihkKGUpP2pbZV18fChnPWEuRVJSX1ZfVFlQRTEpOmc9YS5FUlJfVl9UWVBFMCksIiRzaXplIj09eCYmcGFyc2VJbnQoZSwxMCkhPT1lJiYoZz1hLkVSUl9WX1NJWkUpLCIkcmVnZXgiPT14JiYoZChlKXx8KGc9YS5FUlJfVl9SRUdFWCkpfWlmKGcpdGhyb3cgbmV3IEVycm9yKGcpfX19LFNxbEVkOntpZDoiY3cuUGhvdG9uLlNxbEVkIixpbmhlcml0OlsiUlQiXSxwYXJhbXM6e3Jlc3R5bGU6NTAsc3RyaWN0OiEwfSxsYW5nOnt9LHJlcXVpcmU6W3sid2luZG93LnNxbDJtYW5nbyI6ImxpYi9zcWwycGhvdG9uLmpzIn1dLEhUTUw6JzxkaXYgY2xhc3M9ImJnLXBncmF5IGxoMTYwIHB0MiB4Z3JheSBudyBvaCBlbGwgeHBhbmVsIj48ZGl2IGNsYXNzPSJmczkwIHRhciBmciBwdDEiPjxzcGFuIGlkPSJ2aWV3LXNxbC1tb2RlIiBjbGFzcz0ibXQwIj48L3NwYW4+PHNwYW4gaWQ9ImJ0bi12aWV3LXNxbC1jbG9zZSIgY2xhc3M9InByOSBwbDggbWw2IHBzZXVkb2xpbmsgdGRuIiBzdHlsZT0iYm9yZGVyLWxlZnQ6MXB4IHNvbGlkIHJnYmEoMCwwLDAsMC4yKTsiIHRpdGxlPSJ7QlROX1BBTkVMX0NMT1NFfSI+4pyVPC9zcGFuPjwvZGl2PjxkaXYgaWQ9InZpZXctc3FsLW5hbWUiIGNsYXNzPSJib2xkZXIgcGw4IG9oIG53IGVsbCI+PC9kaXY+PC9kaXY+PHNlY3Rpb24gaWQ9InZpZXctc3FsLXByb3h5IiBjbGFzcz0iYmJzIHBsMSBwcjEiPjx0ZXh0YXJlYSBpZD0idmlldy1zcWwtZWQiIGNsYXNzPSJ3MTAwcCI+PC90ZXh0YXJlYT48L3NlY3Rpb24+PHNlY3Rpb24gaWQ9InZpZXctc3FsLWJ1dHRvbnMiIGNsYXNzPSJudyBwOCIgc3R5bGU9IiI+PGRpdiBjbGFzcz0iZnIiPjxidXR0b24gaWQ9ImJ0bi12aWV3LXNxbC1yZXZlcnQiIGNsYXNzPSJoaWRlIiB0aXRsZT0ie1RJUF9SRVNFVH0iPjxzcGFuIGNsYXNzPSJmaS1yZWZyZXNoIGZzOTUgbzYwIj48L3NwYW4+wqB7QlROX1JFU0VUfcKgPC9idXR0b24+PGJ1dHRvbiBpZD0iYnRuLXZpZXctc3FsLWRlbCIgY2xhc3M9ImhpZGUgcmVkIiB0aXRsZT0ie1RJUF9ERUx9Ij48c3BhbiBjbGFzcz0iZmktdHJhc2ggZnM5NSBvNjAiPjwvc3Bhbj7CoHtCVE5fREVMfTwvYnV0dG9uPjwvZGl2PjxidXR0b24gaWQ9ImJ0bi12aWV3LXNxbC1ydW4iIGNsYXNzPSJtcjIgZ3JlZW4iIHRpdGxlPSJ7VElQX1JVTn0iPjxzcGFuIGNsYXNzPSJmaS1wbGF5IGZzOTUgbzYwIj48L3NwYW4+wqB7QlROX1JVTn08L2J1dHRvbj48YnV0dG9uIGlkPSJidG4tdmlldy1zcWwtc3Rhc2giIGNsYXNzPSJtcjIiIHRpdGxlPSJ7VElQX1NBVkV9Ij48c3BhbiBjbGFzcz0iZmktc2F2ZSBmczk1IG82MCI+PC9zcGFuPsKge0JUTl9TQVZFfTwvYnV0dG9uPjxidXR0b24gaWQ9ImJ0bi12aWV3LXNxbC1leHBsYWluIiBjbGFzcz0ibXIyIiB0aXRsZT0ie1RJUF9FWFBMfSI+PHNwYW4gY2xhc3M9ImZpLW1lZ2FwaG9uZSBmczk1IG82MCI+PC9zcGFuPsKge0JUTl9FWFBMfTwvYnV0dG9uPjwvc2VjdGlvbj4nLGluaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpczt4Lmh0bWwoYS5IVE1MLmFzc2lnbihhLmxhbmcpKSxhLlRleHQ9YS5kYXRhLnRleHR9LGRhdGE6e25hbWU6IlVudGl0bGVkIFNRTCIsdHlwZToic3FsIix0ZXh0OiItLSBXcml0ZSBTUUxcblNFTEVDVCBfaWQgRlJPTSBfIixqc29uOnt9LGVycm9yczpbXSxzdGFtcDowfSxNb2RlOlsic3FsIl0sVGV4dDoiIix1aTp7IiN2aWV3LXNxbC1lZCI6e2luaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPWEuTW9kZSsiIjtDb2RlTWlycm9yLmZyb21UZXh0QXJlYSh4WzBdLHttb2RlOmIsbGluZU51bWJlcnM6ITEsdmlld3BvcnRNYXJnaW46MTAwLHNjcm9sbGJhclN0eWxlOm51bGwsbGluZVdyYXBwaW5nOiEwLHRhYlNpemU6Mix0aGVtZToiZGVmYXVsdCIscmVhZE9ubHk6Impzb24iPT1iLGV4dHJhS2V5czp7IkN0cmwtUiI6ZnVuY3Rpb24oKXthLlJUKCJHZXRWaWV3IikoITApfSwiQ21kLVIiOmZ1bmN0aW9uKCl7YS5SVCgiR2V0VmlldyIpKCEwKX19fSl9LGJpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzLk1vZGUrIiI7cmV0dXJuIG51bGwhPWEmJiJqc29uIiE9YiYmKHgudGV4dD1hKSwianNvbiI9PWI/Y3cubGliLmpzb24oeC5qc29uLCIgICIsNDApOngudGV4dH19LCIjdmlldy1zcWwtcHJveHkiOntpbml0OmZ1bmN0aW9uKHgpe3RoaXMubmljZVNjcm9sbCh4KX0sZGVsYXk6MjAwLGJpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzLlZhbGlkYXRlKHgudGV4dC5yZXBsYWNlKC8tLVteXHJcbl0rL2csIiIpKTtPYmplY3QuaXNPYmplY3QoYik/eC5lcnJvcnM9W106eC5lcnJvcnM9W2IrIiJdLHguanNvbj14LmVycm9ycy5sZW5ndGg/e306T2JqZWN0LnJlamVjdChiLCJ0YWJsZSIpfSx3YXRjaDpbIiN2aWV3LXNxbC1lZCJdLGNzczp7cmVkOmZ1bmN0aW9uKHgpe3JldHVybiB4LmVycm9ycy5sZW5ndGg+MH19fSwiI2J0bi12aWV3LXNxbC1ydW4iOntiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcztpZihudWxsIT1hKXt2YXIgYz1iLlJULGQ9YygiZGF0YSIpLmdyaWQsZT1jKCJkYXRhIikuY29sdW1ucyxmPWUuc2xpY2UoMCksZz0oYygianNldmFsIikoIigiK3gudGV4dCsiKSIpfHx7ZmllbGRzOltdfSkuZmllbGRzfHxbXSxoPShjKCJqc2V2YWwiKSgiKCIrYi5UZXh0KyIpIil8fHtmaWVsZHM6W119KS5maWVsZHN8fFtdLGk9Zy5zdWJ0cmFjdChoKS5zdWJ0cmFjdChoLnN1YnRyYWN0KGYpKSxqPWYrIiI9PSIudmFsdWUiJiZnLmxlbmd0aD9nLnRvKDgpOmYuY29uY2F0KGkuc3VidHJhY3QoZikpLnRvKDgpO2UrIiIhPWorIiImJihjKCJkYXRhIikuY29sdW1ucz1qLnNsaWNlKDApLGQmJmMoImJ1aWxkR3JpZENvbHVtbnMiKSgpKSxiLlRleHQ9eC50ZXh0LGMoIkdldFZpZXciKSghMCkudGhlbihmdW5jdGlvbigpe2QmJihjKCJteSIpLnJlY2FsYygiI3ZpZXctZ3JpZC1jb2xzIiksYygibXkiKS5jaGVjaygiI3ZpZXctZ3JpZC1jb2xzIikpfSl9fSxjc3M6eyI6ZGlzYWJsZWQiOmZ1bmN0aW9uKHgpe3JldHVybiB4LmVycm9ycy5sZW5ndGg+MHx8dGhpcy5UZXh0PT14LnRleHR9fSx3YXRjaDpbIiN2aWV3LXNxbC1wcm94eSJdfSwiI2J0bi12aWV3LXNxbC1leHBsYWluIjp7YmluZDpmdW5jdGlvbih4LGEsYil7dmFyIGM9dGhpcztpZihudWxsIT1hKXt2YXIgZD1jLm15LmZpbmQoIiN2aWV3LXNxbC1wcm94eSIpLGU9ZC5vdXRlckhlaWdodCgpLTMsZj1kLm91dGVyV2lkdGgoKS0zMjtpZihiLmRhdGEoIm1vZGFsIikpcmV0dXJuIGIubW9kYWwoITApLHZvaWQgMDtiLm1vZGFsKHtjc3M6InAxNSBwdDAiLGFsaWduOiJib3R0b206MTQwJSIsbm9zZToiYm90dG9tIixkYXRhOntoZWlnaHQ6ZSsicHgiLGRyYWc6ITAscmVxOnt1cmw6W2MuUlQoImRhdGEiKS5wYXRoWzBdLCJfZXhwbGFpbiJdLG1ldGhvZDoicG9zdCIsZGF0YTpKU09OLnN0cmluZ2lmeSh4Lmpzb24pfX0sd2lkdGg6ZixkcmFnOiIjZHJhZ2dlciIsYm91bmQ6IjAiLHJvb3Q6IiIsbWFuaWZlc3Q6Yy5QaG8oIlJlcUpTT04iKX0pfX0sY3NzOnsiOmRpc2FibGVkIjpmdW5jdGlvbih4KXtyZXR1cm4hMSx4LmVycm9ycy5sZW5ndGg+MH19LHdhdGNoOlsiI3ZpZXctc3FsLXByb3h5Il19LCIjdmlldy1zcWwtbW9kZSI6e2luaXQ6ZnVuY3Rpb24oeCl7eC50YWdzKHRoaXMubGFuZy5UQUdfTU9ERSl9LGJpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzO2lmKG51bGw9PWEpcmV0dXJuIGIuTW9kZTtiLk1vZGU9YTt2YXIgYz1iLm15LmZpbmQoIiN2aWV3LXNxbC1lZCIpLm5leHQoKVswXS5Db2RlTWlycm9yO3JldHVybiBjLnNldE9wdGlvbigibW9kZSIsYSsiIiksYy5zZXRPcHRpb24oInJlYWRPbmx5IiwianNvbiI9PWErIiIpLGIubXkucmVjYWxjKCIjdmlldy1zcWwtZWQiKSxhfX0sIiN2aWV3LXNxbC1uYW1lIjp7ZGVsYXk6MjUwLGJpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzLGM9Yi5SVCgiZGF0YSIpO2lmKGIuUGhvKCJMcyIpKCJTUUwuIitjLnBhdGhbMF0sYy5zcWwpLCF4LmVycm9ycy5sZW5ndGgpe3ZhciBkPXgubmFtZSsiIjtyZXR1cm4iRGVmYXVsdCBTUUwiPT1kP2IubGFuZy5UWFRfVElUTEUwOmIubGFuZy5UWFRfVElUTEUuYXNzaWduKGQuZXNjYXBlSFRNTCgpKX1yZXR1cm4geC5lcnJvcnNbMF0uZXNjYXBlSFRNTCgpfSxjc3M6e3JlZDpmdW5jdGlvbih4KXtyZXR1cm4geC5lcnJvcnMubGVuZ3RoPjB9LGJvbGRlcjpmdW5jdGlvbih4KXtyZXR1cm4gMD09eC5lcnJvcnMubGVuZ3RofX0sd2F0Y2g6WyIjdmlldy1zcWwtcHJveHkiXX0sIiNidG4tdmlldy1zcWwtY2xvc2UiOntiaW5kOmZ1bmN0aW9uKHgsYSl7aWYobnVsbCE9YSl7dmFyIGI9dGhpcy5SVDtiKCJkYXRhIikuZWRpdG9yPSExLGIoInN0YXNoVmlld1N0YXRlIikoKSxiKCJteSIpLmNoZWNrKCIjYnRuLXZpZXdjb2RlIiksYigibXkiKS5yZXN0eWxlLmRlbGF5KDUwKX19fSwiI2J0bi12aWV3LXNxbC1kZWwiOntjc3M6eyJzZWxmOmhpZGUiOmZ1bmN0aW9uKCl7cmV0dXJuIkRlZmF1bHQgU1FMIj09dGhpcy5SVChbImRhdGEiLCJzcWwiLCJhY3RpdmUiXSl9fSxiaW5kOmZ1bmN0aW9uKHgsYSl7aWYobnVsbCE9YSl7dmFyIGI9dGhpcyxjPWIuUlQoWyJkYXRhIiwic3FsIl0pO2MuYWN0aXZlPSJEZWZhdWx0IFNRTCIsYy5xdWVyeS5yZW1vdmUoZnVuY3Rpb24oYSl7cmV0dXJuIGEubmFtZT09eC5uYW1lfSksYi5SVCgiZGF0YSIpLnZpZXc9Il9zcWzvv71EZWZhdWx0IFNRTCIsYi5SVCgiR2V0Vmlld3MiKSghMCwhMSwhMCksYi5SVCgibXkiKS5yZWRyYXcuZGVib3VuY2UoNTApKCl9fX0sIiNidG4tdmlldy1zcWwtcmV2ZXJ0Ijp7YmluZDpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXM7bnVsbCE9YSYmKHgudGV4dD1iLlJUKCJEZWZhdWx0U3FsUXJ5IikudGV4dCl9LGRlbGF5OjEwMCxjc3M6eyJzZWxmOmhpZGUiOmZ1bmN0aW9uKHgpe3JldHVybiJEZWZhdWx0IFNRTCIhPXgubmFtZX0sIjpkaXNhYmxlZCI6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcztyZXR1cm4geC50ZXh0PT1hLlJUKCJEZWZhdWx0U3FsUXJ5IikudGV4dH19LHJlY2FsYzpbIiN2aWV3LXNxbC1lZCJdLHdhdGNoOlsiI3ZpZXctc3FsLXByb3h5Il19LCIjYnRuLXZpZXctc3FsLXN0YXNoIjp7Y3NzOnsiOmRpc2FibGVkIjpmdW5jdGlvbih4LGEpe3JldHVybiJEZWZhdWx0IFNRTCIhPXgubmFtZT90aGlzLlRleHQ9PXgudGV4dDp4LnRleHQ9PXRoaXMuUlQoIkRlZmF1bHRTcWxRcnkiKS50ZXh0fX0sd2F0Y2g6WyIjdmlldy1zcWwtcHJveHkiXSxiaW5kOmZ1bmN0aW9uKHgsYSxiKXt2YXIgYz10aGlzLGQ9KGMuUlQoWyJkYXRhIiwic3FsIiwiYWN0aXZlIl0pLCc8c3BhbiBjbGFzcz0iZmktc2F2ZSBmczk1IG82MCI+PC9zcGFuPsKgJytjLmxhbmcuQlROX1NBVkUpO3JldHVybiBudWxsPT1hP2Q6Yi5kYXRhKCJtb2RhbCIpPyhiLm1vZGFsKCEwKSxkKTooYy5teS5tb2RhbCgiI2J0bi12aWV3LXNxbC1zdGFzaCIse2RhdGE6JC5leHRlbmQoITAse19uZXc6e319LGMuUlQoWyJkYXRhIiwic3FsIl0pKSxtYW5pZmVzdDp7ZGF0YTp7fSxOYW1lOiIiLFFyeTpbXSxpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj1hLmRhdGE7YS5Rcnk9T2JqZWN0LmNsb25lKGIucXVlcnksITApLHguaHRtbCgkLm15LmZvcm1nZW4oWyc8ZGl2IGNsYXNzPSJtYjgiPicsJzxkaXYgaWQ9ImZ0aXRsZSIgY2xhc3M9InhncmF5Ij57VFhUX1NUQVNIfTwvZGl2PicsWyIiLCJpbnAjbXRpdGxlLncxMDBwIix7cGxjOiJ7UExDX1NUQVNIfSIsc3BlbGxjaGVjazoiZmFsc2UiLGF1dG9jb21wbGV0ZToib2ZmIn0sIm1zZyJdLCI8L2Rpdj4iLCc8ZGl2IGNsYXNzPSJtdDE1IHB0MTUgYnRkIGZzOTUiPicsWyIiLCJidG4jYnRuLXN0YXNoLW9rLmdyZWVuLm1yMiIse3ZhbDoie0JUTl9TVEFTSF9PS30ifV0sIjwvZGl2PiJdKS5hc3NpZ24oYy5sYW5nKSl9LHVpOnsiI210aXRsZSI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzO2lmKG51bGw9PWEpcmV0dXJuIGIuTmFtZTtpZihiLk5hbWU9YS5jb21wYWN0KCksYi5OYW1lLmxlbmd0aD4yJiZiLk5hbWUubGVuZ3RoPDMxKXt2YXIgYz1PYmplY3QuY2xvbmUoeC5xdWVyeS5maW5kKGE9PmEubmFtZT09eC5hY3RpdmUpLCEwKTtjLm5hbWU9Yi5OYW1lLGMuc3RhbXA9RGF0ZS5ub3coKSx4Ll9uZXc9Y31yZXR1cm4gYX0sY2hlY2s6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gYS5jb21wYWN0KCk/YS5jb21wYWN0KCkubGVuZ3RoPDN8fGEubGVuZ3RoPjMwP2MubGFuZy5FUlJfU1RBU0hfTEVOOnRoaXMuUXJ5LmZpbmQoZnVuY3Rpb24oeCl7cmV0dXJuIHgubmFtZT09YX0pP2MubGFuZy5FUlJfU1RBU0hfRVhJU1Q6dm9pZCAwOmMubGFuZy5FUlJfU1RBU0hfUkVRfX0sIiNidG4tc3Rhc2gtb2siOntiaW5kOmZ1bmN0aW9uKHgsYSl7bnVsbCE9YSYmdGhpcy5teS5jb21taXQoKX0sd2F0Y2g6WyIjbXRpdGxlIl0sY3NzOnsiOmRpc2FibGVkIjpmdW5jdGlvbigpe3JldHVybiF0aGlzLm15LnZhbGlkKCl9fX19fSxjc3M6InAxNSIsZ2xvYmFsOiEwLHNjcmVlbjohMCx3aWR0aDo0MDAsZXNjOiEwLGVudGVyOiEwLGJvdW5kOjIwfSkudGhlbihmdW5jdGlvbih4KXt4LnF1ZXJ5LnB1c2goeC5fbmV3KSx4LmFjdGl2ZT14Ll9uZXcubmFtZSwkLmV4dGVuZChjLlJUKCJkYXRhIikuc3FsLE9iamVjdC5yZWplY3QoeCwiX25ldyIpKSxjLlJUKCJkYXRhIikudmlldz0iX3NxbO+/vSIreC5hY3RpdmUsYy5SVCgiR2V0Vmlld3MiKSghMCwhMSwhMCksYy5SVCgibXkiKS5yZWRyYXcoKX0pLGQpfSxldmVudHM6ImNsaWNrLm15In19LHN0eWxlOnsiIC5Db2RlTWlycm9yIjoiZm9udC1zaXplOjAuODEyNWVtIWltcG9ydGFudDsgcGFkZGluZzo0cHg7IG1pbi1oZWlnaHQ6MzAwcHg7IiwiICN2aWV3LXNxbC1wcm94eSI6ZnVuY3Rpb24oeCl7cmV0dXJuIm1heC1oZWlnaHQ6IisoeC5wYXJlbnQoKS5oZWlnaHQoKS00OC0zMikrInB4OyJ9LCIgI3ZpZXctc3FsLXByb3h5LnJlZCAuQ29kZU1pcnJvci1saW5lbnVtYmVycyI6ImJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyMDAsIDIwMCwgMC43NSk7In0sZGllOmZ1bmN0aW9uKHgpe3ZhciBhPXguZmluZCgiI3ZpZXctc3FsLXByb3h5IikuZ2V0TmljZVNjcm9sbDsiZnVuY3Rpb24iPT10eXBlb2YgYSYmYSgpLnJlbW92ZSgpfSxWYWxpZGF0ZTpmdW5jdGlvbih4KXt2YXIgYT10aGlzLmxhbmcsYj0iIixjPSIiO3RyeXtiPXdpbmRvdy5zcWwybWFuZ28ucGFyc2UoeCl9Y2F0Y2goeCl7Yz14KyIiLGNvbnNvbGUubG9nKGMpLGI9L05PVEhJTkcgQ09OU1VNRUQvLnRlc3QoYyk/YS5FUlJfTkVBUi5hc3NpZ24oYy5zcGxpdCgiU3RvcHBlZCBhdCAtICIpWzFdLnJlcGxhY2UoLycvZywiIikudHJ1bmNhdGUoMTApKTovb24gbGluZSBcZC8udGVzdChjKT8oYj1jLnNwbGl0KCJlcnJvciBvbiBsaW5lICIpWzFdKS5zcGxpdCgiOiIpLm1hcCgoeCxhKT0+YT94OngtMSkuam9pbigiOiIpOi91bnN1cHBvcnRlZCBTUUwgb3BlcmF0aW9uLy50ZXN0KGMpP2EuRVJSX1VOU1VQUC5hc3NpZ24oYy5zcGxpdCgidW5zdXBwb3J0ZWQgU1FMIG9wZXJhdGlvbiIpWzFdLnRyaW0oKS50b1VwcGVyQ2FzZSgpKTovIChub3Rcc3x1bilzdXBwb3J0ZWQkLy50ZXN0KGMpP2EuRVJSX1VOU1VQUC5hc3NpZ24oYy5zcGxpdCgiRXJyb3I6ICIpWzFdLnRyaW0oKS5yZXBsYWNlKC8gKG5vdFxzfHVuKXN1cHBvcnRlZCQvLCIiKS50b1VwcGVyQ2FzZSgpKTovYWxsIEFTQyBvciBhbGwgREVTQy9pLnRlc3QoYyk/YS5FUlJfQVNDREVTQzphLkVSUl9OT19KU09OfXJldHVybiBifX0sVXNlckRvYzp7aWQ6ImN3LlBob3Rvbi5Vc2VyRG9jIixsYW5nOnt9LGRhdGE6e19pZDoib3JnLmNvdWNoZGIudXNlcjoiLHR5cGU6InVzZXIiLG5hbWU6IiIscGFzc3dvcmQ6IiIscm9sZXM6W119LFJvbGVzOltdLFNlYzp7fSxVc2Vyczp7fSxJczp7YTp7fSxtOnt9fSxpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj1hLmRhdGEsYz1hLlBobygiQWxsIiksZD1iLl9pZC5zcGxpdCgiOiIpWzFdO2EuU2VjPU9iamVjdC5rZXlzKGMpLnJlZHVjZShmdW5jdGlvbih4LGIpe3ZhciBlPWNbYl0uc2VjdXJpdHksZj0oZS5hZG1pbnN8fHt9KS5yb2xlc3x8W10sZz0oZS5tZW1iZXJzfHx7fSkucm9sZXN8fFtdLGg9KGUuYWRtaW5zfHx7fSkubmFtZXN8fFtdLGk9KGUubWVtYmVyc3x8e30pLm5hbWVzfHxbXTtyZXR1cm4gaC5pbmRleE9mKGQpPi0xJiYoYS5Jcy5hW2JdPSEwKSxpLmluZGV4T2YoZCk+LTEmJihhLklzLm1bYl09ITApLGYuZm9yRWFjaChmdW5jdGlvbihhKXt4W2FdfHwoeFthXT17YTp7fSxtOnt9fSkseFthXS5hW2JdPSEwfSksZy5mb3JFYWNoKGZ1bmN0aW9uKGEpe3hbYV18fCh4W2FdPXthOnt9LG06e319KSx4W2FdLm1bYl09ITB9KSx4fSx7fSksYS5Sb2xlcz1PYmplY3Qua2V5cyhhLlNlYykucmVtb3ZlKC9eXy8pLnNvcnQoKSxiLl9yZXYmJihhLmxhbmcuVFhUX1RJVExFPWEubGFuZy5UWFRfVElUTEVfRUQsYS5sYW5nLlBMQ19QPWEubGFuZy5QTENfUF9FRCkseC5odG1sKCQubXkuZm9ybWdlbihhLkhUTUwpLmFzc2lnbihhLmxhbmcpKSxhLlBobygiR2V0VXNlcnMiKSgpLnRoZW4oZnVuY3Rpb24oeCl7YS5Vc2Vycz1jdy5saWIuYTJvKHgpfSkseC50aGVuKGZ1bmN0aW9uKCl7YS5TZWwyU2Nyb2xsKHgsITApfSl9LHNhdmVVc2VyOmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj14fHxhLmRhdGEsYz1mdW5jdGlvbih4KXtyZXR1cm4oeCsiIikuZXNjYXBlSFRNTCgpfTtyZXR1cm4gYS5SZXEoe3VybDpbIl91c2VycyIsYi5faWRdLG1ldGhvZDoiUFVUIixjb250ZW50VHlwZToiYXBwbGljYXRpb24vanNvbiIsZGF0YTpKU09OLnN0cmluZ2lmeShiKX0pLnRoZW4oZnVuY3Rpb24oKXtjdy5saWIubm90ZShhLmxhbmcuTVNHX09LLmFzc2lnbihjKGIubmFtZSkpLCJvayIpLCQubXkucmFkaW8oImRidXBkYXRlIiwiX3VzZXJzIil9KS5mYWlsKGZ1bmN0aW9uKHgsZCl7Y3cubGliLm5vdGUoYS5sYW5nLk1TR19GQUlMLmFzc2lnbihjKGIubmFtZSkseCxjKGQpKSwiZXJyb3IiKX0pfSx1aTp7IiN1bmFtZSI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gbnVsbCE9YSYmKHgubmFtZT1hLHguX2lkPSJvcmcuY291Y2hkYi51c2VyOiIrYSkseC5uYW1lfSxjaGVjazpmdW5jdGlvbih4LGEpe3JldHVybiBhLmhhcygiOiIpfHwvXl8vLnRlc3QoYSk/dGhpcy5sYW5nLkVSUl9OOnRoaXMuVXNlcnNbYV0mJiF4Ll9yZXY/dGhpcy5sYW5nLkVSUl9OWDp2b2lkIDB9LGNzczp7IjpkaXNhYmxlZCI6ZnVuY3Rpb24oeCl7cmV0dXJuISF4Ll9yZXZ9LCJzZWxmOnhncmF5IjpmdW5jdGlvbih4KXtyZXR1cm4hIXguX3Jldn19fSwiI3VwYXNzIjoicGFzc3dvcmQiLCIjdXJvbGVzIjp7aW5pdDpmdW5jdGlvbih4KXt0aGlzLlMyKCIjdXJvbGVzIix0aGlzLlJvbGVzLCJQTENfUiIpfSxiaW5kOiJyb2xlcyIsY2hlY2s6ZnVuY3Rpb24oeCxhKXtpZihhLmZpbmQoL15fLykpcmV0dXJuIHRoaXMubGFuZy5FUlJfUn19LCIjdWFjY2VzcyI6e2RlbGF5OjUwLGluaXQ6ZnVuY3Rpb24oeCl7dGhpcy5uaWNlU2Nyb2xsKHgpfSxiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcyxjPWIuU2VjLGQ9e30sZT1bXSxmPXt9LGc9W10saD1bXSxpPSc8c3BhbiBjbGFzcz0iZnc1MDAiPnsxfSA8L3NwYW4+IHsyfSc7cmV0dXJuIHgucm9sZXMuZm9yRWFjaChmdW5jdGlvbih4KXtjW3hdJiYoJC5leHRlbmQoZCxjW3hdLmEpLCQuZXh0ZW5kKGYsY1t4XS5tKSl9KSwkLmV4dGVuZChkLGIuSXMuYSksJC5leHRlbmQoZixiLklzLm0pLGU9T2JqZWN0LmtleXMoZCkuc29ydCgpLGc9T2JqZWN0LmtleXMoZikuc3VidHJhY3QoZSkuc29ydCgpLGUubGVuZ3RoJiYoZS5sZW5ndGg+MjA/aC5wdXNoKGkuYXNzaWduKCJBZG1pbiIsIm9mICIrZS5sZW5ndGgrIiBEQnMiKSk6aC5wdXNoKGkuYXNzaWduKCJBZG1pbjoiLGUubWFwKHg9PngudHJ1bmNhdGUoMjAsIm1pZGRsZSIsIuKApiIpKS5qb2luKCIsICIpKSkpLGcubGVuZ3RoJiYoZy5sZW5ndGg+MjA/aC5wdXNoKGkuYXNzaWduKCJNZW1iZXIiLCJvZiAiK2cubGVuZ3RoKyIgREJzIikpOmgucHVzaChpLmFzc2lnbigiTWVtYmVyOiIsZy5tYXAoeD0+eC50cnVuY2F0ZSgyMCwibWlkZGxlIiwi4oCmIikpLmpvaW4oIiwgIikpKSksbnVsbD09YSYmYi5teS50cmlnZ2VyKCIjdWFjY2VzcyIsImxheW91dCIpLGguam9pbigiPGJyPiIpfSx3YXRjaDoiI3Vyb2xlcyIsY3NzOntoaWRlOmZ1bmN0aW9uKHgpe3JldHVybiF4LnJvbGVzLmxlbmd0aH19fSwiI2J0bi1zdGFydCI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtpZihudWxsIT1hKXt2YXIgYj10aGlzO2lmKHguX3Jldil7dmFyIGM9Y3cubGliLmRyeShPYmplY3QuY2xvbmUoeCwhMCkpO2MucGFzc3dvcmQ/KGRlbGV0ZSBjLmRlcml2ZWRfa2V5LGRlbGV0ZSBjLml0ZXJhdGlvbnMsZGVsZXRlIGMucGFzc3dvcmRfc2NoZW1lKTpkZWxldGUgYy5wYXNzd29yZCxiLnNhdmVVc2VyKGMpLnRoZW4oZnVuY3Rpb24oKXtiLm15LmNhbmNlbCgpfSl9ZWxzZSBiLnNhdmVVc2VyKCkudGhlbihmdW5jdGlvbigpe2IubXkuY2FuY2VsKCl9KX19LHdhdGNoOlsiI3VuYW1lIiwiI3Vyb2xlcyIsIiN1cGFzcyJdLGNzczp7IjpkaXNhYmxlZCI6ZnVuY3Rpb24oeCxhKXtyZXR1cm4hdGhpcy5teS52YWxpZCgpfHwheC5uYW1lfHwheC5wYXNzd29yZCYmIXguX3Jldn19fSwiI2J0bi1vdGhlcmRvYyI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtudWxsIT1hJiZ0aGlzLm15LmNhbmNlbCgpfSxjc3M6eyJzZWxmOmhpZGUiOmZ1bmN0aW9uKHgsYSl7cmV0dXJuISF4Ll9yZXZ8fCEheC5uYW1lfHwhIXgucGFzc3dvcmR8fHgucm9sZXMubGVuZ3RoPjB9fSx3YXRjaDpbIiN1bmFtZSIsIiN1cGFzcyIsIiN1cm9sZXMiXX0sIiNidG4tY2FuY2VsIjpmdW5jdGlvbih4LGEpe251bGwhPWEmJnRoaXMubXkuY2FuY2VsKCl9fSxkaWU6ZnVuY3Rpb24oeCl7dGhpcy5TZWwyU2Nyb2xsKHgsITEpLFsiI3VhY2Nlc3MiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPXguZmluZChhKTsiZnVuY3Rpb24iPT10eXBlb2YgYi5nZXROaWNlU2Nyb2xsJiZiLmdldE5pY2VTY3JvbGwoKS5yZW1vdmUoKX0pfSxTMjpmdW5jdGlvbih4LGEsYil7dGhpcy5zZWxlY3QyKHRoaXMubXkuZmluZCh4KSx7dGFnczphLHBsYWNlaG9sZGVyOnRoaXMubGFuZ1tiXSxtaW5pbXVtUmVzdWx0c0ZvclNlYXJjaDoxMix0b2tlblNlcGFyYXRvcnM6WyIgIiwiLCJdfSl9LEhUTUw6Wyc8ZGl2IGlkPSJjdGl0bGUiIGNsYXNzPSJmczEzMCBtYjIgbGgxNjAgYm9sZGVyIj57VFhUX1RJVExFfTwvZGl2Picse3JvdzoiMTAwJSIsbGFiZWw6Ijc1cHgiLHJvd0NzczoibXktcm93IHB0MyBwYjMiLGxhYmVsQ3NzOiJteS1sYWJlbCJ9LFsie0xCTF9OfSIsImlucCN1bmFtZS5mczExMCIse3BsYzoie1BMQ19OfSIsc3BlbGxjaGVjazoiZmFsc2UiLGF1dG9jb21wbGV0ZToib2ZmIn0sIm1zZyJdLFsie0xCTF9QfSIsImlucCN1cGFzcy5mczExMCIse3BsYzoie1BMQ19QfSIsc3BlbGxjaGVjazoiZmFsc2UiLGF1dG9jb21wbGV0ZToib2ZmIn0sIm1zZyJdLHtyb3dDc3M6Im15LXJvdyBwdDcgcGIzIixsYWJlbENzczoibXktbGFiZWwgdmF0IHB0NiJ9LFsie0xCTF9SfSIsImlucCN1cm9sZXMuZnMxMDUiLCJtc2ciXSwnPGRpdiBpZD0idWFjY2VzcyIgY2xhc3M9ImhpZGUgZWxsIHcxMDBwIGZzOTAgZ3JheSBsaDEzMCBtdDQgbWItNCBwbDc1Ij48L2Rpdj4nLCc8ZGl2IGNsYXNzPSJtdDEyIHB0MTUgYnRkIj4nLCc8YnV0dG9uIGlkPSJidG4tc3RhcnQiIGNsYXNzPSJncmVlbiBtcjIiPntCVE5fU0FWRX08L2J1dHRvbj4nLCc8YnV0dG9uIGlkPSJidG4tY2FuY2VsIj57QlROX0NBTkNFTH08L2J1dHRvbj4nLCc8ZGl2IGNsYXNzPSJmciI+JywnPGEgaHJlZj0iI191c2Vycy9fbmV3IiBpZD0iYnRuLW90aGVyZG9jIiBjbGFzcz0iYnV0dG9uIHRkbiBkaWIgdmF0Ij4nLCc8c3BhbiBjbGFzcz0iIj57QlROX0RPQ308L3NwYW4+JywiPC9hPiIsIjwvZGl2PiIsIjwvZGl2PiJdLHN0eWxlOnsiIGlucHV0IjoiZGlzcGxheTppbmxpbmUtYmxvY2s7IiwiIC5zZWxlY3QyLWNvbnRhaW5lcj4uc2VsZWN0Mi1jaG9pY2VzIjoibWF4LWhlaWdodDoxNjBweDsiLCIgI3VhY2Nlc3MiOiJtYXgtaGVpZ2h0OjMwMHB4OyJ9LHBhcmFtczp7c3RyaWN0OiEwfX0sTG9naW46e2lkOiJjdy5QaG90b24uTG9naW4iLHBhcmFtczp7cmVzdHlsZTozNTAsc3RyaWN0OiEwfSxsYW5nOnt9LGRhdGE6e25hbWU6IiIscGFzc3dvcmQ6IiJ9LGluaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpczt4Lmh0bWwoYS5IVE1MLmFzc2lnbihhLmxhbmcpKSx4LmZpbmQoIiN1cHdkIikub24oImtleXVwLm15IixmdW5jdGlvbihhKXt2YXIgYj1hLmtleUNvZGU7MTMhPWImJjEwIT1ifHx4LmZpbmQoIiNidG4tc2VuZCIpLnRyaWdnZXIoImNsaWNrIil9KSx4LmZpbmQoIiN1bmFtZSIpLm9uKCJrZXl1cC5teSIsZnVuY3Rpb24oYSl7dmFyIGI9YS5rZXlDb2RlOzEzIT1iJiYxMCE9Ynx8eC5maW5kKCIjdXB3ZCIpLmZvY3VzKCl9KX0sdWk6eyIjdWxvZ28iOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuUGhvKCJDZmciKS5pY29ufHx0aGlzLlBobygiZmlsZXMiKVsiZmF2aWNvbi5wbmciXS51cmx9LCIjdW5hbWUiOiJuYW1lIiwiI3Vwd2QiOiJwYXNzd29yZCIsIiNidG4tc2VuZCI6e2RlbGF5OjEwLGJpbmQ6ZnVuY3Rpb24oeCxhKXtpZihudWxsIT1hKXt2YXIgYj10aGlzO2IuZG9Mb2dpbigpLnRoZW4oZnVuY3Rpb24oKXtiLm15LmNhbmNlbCgpfSl9fSxjc3M6eyI6ZGlzYWJsZWQiOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIXgubmFtZXx8IXgucGFzc3dvcmR9fSx3YXRjaDpbIiN1bmFtZSIsIiN1cHdkIl19LCIjYnRuLWNhbmNlbCI6ZnVuY3Rpb24oeCxhKXtudWxsIT1hJiZ0aGlzLm15LmNhbmNlbCgpfX0sSFRNTDonPGRpdiBjbGFzcz0iZnMxNTAgbGgxNDAgZnc1MDAgbWI4Ij48aW1nIHNyYz0iIiBpZD0idWxvZ28iIGNsYXNzPSJ3MjEgZGliIG1iLTEgbXIxMCBjbS1lbW9qaSI+e1RYVF9MT0dJTn08L2Rpdj48aW5wdXQgY2xhc3M9IncxMDBwIGZzMTIwIG1iMTUiIGlkPSJ1bmFtZSIgdHlwZT0idGV4dCIgcGxhY2Vob2xkZXI9IntQTENfVU5BTUV9IiBhdXRvY29tcGxldGU9Im9mZiIgYXV0b2NvcnJlY3Q9Im9mZiIgYXV0b2NhcGl0YWxpemU9Im9mZiIgc3BlbGxjaGVjaz0iZmFsc2UiPjxpbnB1dCBjbGFzcz0idzEwMHAgZnMxMjAgbWIxNSIgaWQ9InVwd2QiIHR5cGU9InBhc3N3b3JkIiBwbGFjZWhvbGRlcj0ie1BMQ19QV0R9IiBhdXRvY29tcGxldGU9ImN1cnJlbnQtcGFzc3dvcmQiIGF1dG9jb3JyZWN0PSJvZmYiIGF1dG9jYXBpdGFsaXplPSJvZmYiIHNwZWxsY2hlY2s9ImZhbHNlIj48ZGl2IGNsYXNzPSJwdDE1IGJ0ZCI+PGJ1dHRvbiBpZD0iYnRuLXNlbmQiIGNsYXNzPSJtYXJrZm9jdXMgZ3JlZW4gbXIyIj57QlROX0xPR0lOfTwvYnV0dG9uPjxidXR0b24gaWQ9ImJ0bi1jYW5jZWwiIGNsYXNzPSJtYXJrZm9jdXMiPntCVE5fQ0FOQ0VMfTwvYnV0dG9uPjwvZGl2PicsZG9Mb2dpbjpmdW5jdGlvbigpe3ZhciB4PXRoaXMsYT14LlBobygiX2NvbXBpbGVkIiksYj0kLmV4dGVuZCghMCx7fSx4LmRhdGEpLGM9eC5sYW5nO3JldHVybiB4Lm15LnJvb3QoKS5wYXJlbnQoKS5hZGRDbGFzcygibW9kYWwtYnVzeSIpLHguUmVxKHt1cmw6WyJfc2Vzc2lvbiJdLG1ldGhvZDoiUE9TVCIsZGF0YVR5cGU6Impzb24iLGNvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi9qc29uIixkYXRhOkpTT04uc3RyaW5naWZ5KGIpfSkudGhlbihmdW5jdGlvbihkKXt2YXIgZT17bmFtZTpkLm5hbWV8fGIubmFtZSxyb2xlczpkLnJvbGVzfSxmPSQuRGVmZXJyZWQoKTtyZXR1cm4gYSYmJC5leHRlbmQoITAsd2luZG93LkRET0MuX21lLGUpLHguUGhvKCJHZXRMaXN0IikoKS5hbHdheXMoZnVuY3Rpb24oKXskLm15LnJhZGlvKCJ1c2VyQ3R4IixlKSxjdy5saWIubm90ZShjLk1TR19BVVRIX09LLmFzc2lnbigoYi5uYW1lfHwiIikuZXNjYXBlSFRNTCgpKSwib2siKSxmLnJlc29sdmUoKX0pLGYucHJvbWlzZSgpfSkuZmFpbChmdW5jdGlvbihkLGUpe2EmJiQuZXh0ZW5kKHdpbmRvdy5ERE9DLl9tZSx7bmFtZToiIixyb2xlczpbXX0pLCQubXkucmFkaW8oInVzZXJDdHgiLHtuYW1lOm51bGwscm9sZXM6W119KSx4LlBobygibXkiKS5jaGVjaygiI2J0bi1hc2lkZS1hdXRoIiksY3cubGliLm5vdGUoYy5NU0dfQVVUSF9GQUlMLmFzc2lnbigoYi5uYW1lfHwiIikuZXNjYXBlSFRNTCgpLGQsZS5lc2NhcGVIVE1MKCkpLCJlcnJvciIpfSkuYWx3YXlzKGZ1bmN0aW9uKCl7eC5teS5yb290KCkucGFyZW50KCkucmVtb3ZlQ2xhc3MoIm1vZGFsLWJ1c3kiKX0pfSxzdHlsZTp7IiI6ImZvbnQtc2l6ZToxN3B4OyBsaW5lLWhlaWdodDoxLjdlbTsifX0sTG9nb3V0OntpZDoiY3cuUGhvdG9uLkxvZ291dCIscGFyYW1zOntyZXN0eWxlOjM1MCxzdHJpY3Q6ITB9LGxhbmc6e30sZGF0YTp7fSxpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXM7eC5odG1sKGEuSFRNTC5hc3NpZ24oYS5sYW5nKSkseC50aGVuKGZ1bmN0aW9uKCl7eC50cmlnZ2VyKCJsYXlvdXQubXkiKX0uZGVib3VuY2UoMTAwKSl9LEhUTUw6JzxkaXYgaWQ9Imx0aXRsZSIgY2xhc3M9Im1iNiBsaDE0MCI+PC9kaXY+PGRpdiBjbGFzcz0iZ3JheSBwbDEiPjxkaXY+PHNwYW4gY2xhc3M9ImZpLXBvd2VyIGZzOTAgbXIzIj48L3NwYW4+IDxzcGFuIGlkPSJidG4tbG9nb3V0IiBjbGFzcz0icHNldWRvbGluayB0ZG4iPntUWFRfTE9HT1VUfTwvc3Bhbj48L2Rpdj48ZGl2IGlkPSJ4cHJvZmlsZSI+PHNwYW4gY2xhc3M9ImZpLXRvcnNvIG85MCBtcjMiPjwvc3Bhbj4gPGEgaWQ9ImJ0bi1wcm9maWxlIiBocmVmPSIiIGNsYXNzPSJwc2V1ZG9saW5rIHRkbiI+e1RYVF9QUk9GSUxFfTwvYT48L2Rpdj48ZGl2PjxzcGFuIGNsYXNzPSJmaS1leWUgIG1yMyI+PC9zcGFuPiA8c3BhbiBpZD0iYnRuLXh2aWV3c3RhdGUiIGNsYXNzPSJwc2V1ZG9saW5rIHRkbiI+e1RYVF9DTEVBUl9WU1RBVEV9PC9zcGFuPjwvZGl2PjwvZGl2PicsdWk6eyIjbHRpdGxlIjp7YmluZDpmdW5jdGlvbih4LGEpe3ZhciBiPSc8ZGl2IGNsYXNzPSJmczEzMCB4Z3JheSBsaDEyMCB3MTAwcCBvaCBlbGwiPnsxfTwvZGl2PicuYXNzaWduKGN3Lm1lKCkuZXNjYXBlSFRNTCgpKSxjPWN3Lm1lKCJyb2xlcyIpfHxbXTtyZXR1cm4gYy5sZW5ndGgmJihiKz0nPGRpdiBpZD0ibG15cm9sZXMiIGNsYXNzPSJncmF5IGZzODUgbGgxNDAgb2giPnsxfTwvZGl2PicuYXNzaWduKGMubWFwKGZ1bmN0aW9uKHgpe3JldHVybiI8bm9icj4iK3guZXNjYXBlSFRNTCgpKyI8L25vYnI+In0pLmpvaW4oIiwgIikpKSxifX0sIiNidG4tcHJvZmlsZSI6e2RlbGF5OjMwLGJpbmQ6ZnVuY3Rpb24oeCxhLGIpe2IuYXR0cigiaHJlZiIsIiNfdXNlcnMvb3JnLmNvdWNoZGIudXNlcjoiK2N3Lm1lKCkpLG51bGwhPWEmJnRoaXMubXkuY2FuY2VsKCl9fSwiI2J0bi1sb2dvdXQiOntkZWxheTozMCxiaW5kOmZ1bmN0aW9uKHgsYSxiKXtudWxsIT1hJiYodGhpcy5kb0xvZ291dCgpLHRoaXMubXkuY2FuY2VsKCkpfX0sIiNidG4teHZpZXdzdGF0ZSI6e2RlbGF5OjMwLGJpbmQ6ZnVuY3Rpb24oeCxhLGIpe251bGwhPWEmJih0aGlzLmRvQ2xlYW5MUygpLHRoaXMubXkuY2FuY2VsKCkpfX19LGRvTG9nb3V0OmZ1bmN0aW9uKCl7dmFyIHg9dGhpcyxhPXgubGFuZyxiPWZ1bmN0aW9uKHgpe3JldHVybih4KyIiKS5lc2NhcGVIVE1MKCl9O2N3LmxpYi5ub3RlKGEuTVNHX0xPR09VVF9TVEFSVCwiIiwxZTMpLHguUmVxKHt1cmw6WyJfc2Vzc2lvbiJdLG1ldGhvZDoiUE9TVCIsZGF0YVR5cGU6Impzb24iLGNvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi9qc29uIixkYXRhOkpTT04uc3RyaW5naWZ5KHtuYW1lOiIwIixwYXNzd29yZDoiMCJ9KX0pLnRoZW4oZnVuY3Rpb24oeCl7Y3cubGliLm5vdGUoYS5NU0dfTE9HT1VUX0ZBSUwuYXNzaWduKDk5OSwiU2VydmVyIHJldHVybmVkIGludmFsaWQgcmVzcG9uc2UiKSwiZXJyb3IiKX0pLmZhaWwoZnVuY3Rpb24oYyxkLGUpezQwMSE9YyYmNDAzIT1jPyhjdy5saWIubm90ZShhLk1TR19MT0dPVVRfRkFJTC5hc3NpZ24oYyxiKGQpKSwiZXJyb3IiKSx4LlBobygibXkiKS5jaGVjaygiI2J0bi1hc2lkZS1hdXRoIikpOihjdy5saWIubm90ZShhLk1TR19MT0dPVVRfT0ssIm9rIikseC5QaG8oIl9jb21waWxlZCIpJiZmdW5jdGlvbigpe3dpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKX0uZGVsYXkoNTAwKSl9KX0sc3R5bGU6eyIgI2xteXJvbGVzIjoibWF4LWhlaWdodDoxNWVtOyBvdmVyZmxvdy15OiBhdXRvIWltcG9ydGFudDsifSxkb0NsZWFuTFM6ZnVuY3Rpb24oKXt2YXIgeD10aGlzLGE9eC5sYW5nO3guZGF0YTskLm15Lm1vZGFsKHttYW5pZmVzdDokLmV4dGVuZCghMCx7fSx4LlBobygiQ29uZmlybSIpLHt1aTp7J2lucHV0W25hbWU9Im9wdHMiXSc6Im9wdHMifX0pLHdpZHRoOjMwMCxkYXRhOntvcHRzOmEuT1BUX0NMRUFSX0RMRy5maWx0ZXIoeD0+ITEhPT14WzJdKS5tYXAoeD0+eFsxXSksdGV4dDonPGRpdiBjbGFzcz0iZnMxMzAgb3JhbmdlIG1iNSI+JythLkhEUl9DTEVBUl9ETEcrIjwvZGl2PiIrYS5UWFRfQ0xFQVJfRExHK2EuT1BUX0NMRUFSX0RMRy5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuJzxsYWJlbCBjbGFzcz0ieGdyYXkgbGgxNTAiPjxpbnB1dCBuYW1lPSJvcHRzIiB0eXBlPSJjaGVja2JveCIgY2xhc3M9Im1yNSBtbDEiIHZhbHVlPSJ7Mn0iPnsxfTwvbGFiZWw+Jy5hc3NpZ24oeCl9KS5qb2luKCIiKSx5ZXM6YS5CVE5fQ0xFQVJfT0sseWVzY3NzOiJvcmFuZ2UiLG5vOmEuQlROX0NMRUFSX05PLGNhbmNlbDoiIix1c2VCdXR0b25zOiEwfSxjc3M6InhncmF5IGxoMTcwIHAyMCBwYjI1IixjbG9zZTp4LlBobygibGFuZyIpLkJUTl9YRExHLGVzYzohMCxlbnRlcjohMCxmb2N1czoiI2J0bi15ZXMifSkudGhlbihmdW5jdGlvbihiKXtpZigieWVzIj09Yi5jbWQpe3ZhciBjPXdpbmRvdy5sb2NhbFN0b3JhZ2UsZD1iLm9wdHM7T2JqZWN0LmtleXMoYykuZmlsdGVyKGZ1bmN0aW9uKHgpe2Zvcih2YXIgYT0wLGI9ITE7YTxkLmxlbmd0aCYmIWI7YSsrKWI9eC5zdGFydHNXaXRoKGRbYV0pO3JldHVybiBifSkuZm9yRWFjaCh4PT5jLnJlbW92ZUl0ZW0oeCkpLGN3LmxpYi5ub3RlKGEuTVNHX1ZTVEFURV9DTEVBTkVELCJvayIpLHguUGhvKCJfY29tcGlsZWQiKSYmZnVuY3Rpb24oKXtkLmZpbmQoImN3LlBob3Rvbi5UYWJDbG9zZUhpc3RvcnkiKSYmKHguUGhvKCJUYWJzIikubGVuZ3RoPTApLHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKX0uZGVsYXkoNTAwKX19KX19LENvbXBhY3Q6e2lkOiJjdy5QaG90b24uQ29tcGFjdCIsbGFuZzp7fSxkYXRhOntzZWxlY3Rpb246W10sb3BzOlsiZG9jcyJdLGRkb2NzOltdLGRzZWxlY3Rpb246W119LGluaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPWEuZGF0YTtiLkFsbD1hLlBobygiQWxsIiksYi5hbGw9T2JqZWN0LmtleXMoYi5BbGwpLnNvcnQoKSx4Lmh0bWwoYS5IVE1MLmFzc2lnbihhLmxhbmcpKSx4LnRoZW4oZnVuY3Rpb24oKXthLlNlbDJTY3JvbGwoeCwhMCl9LmRlYm91bmNlKDE1KSl9LENCOntkb2NzOmZ1bmN0aW9uKCl7fSxkZG9jczpmdW5jdGlvbigpe30sdmlld3M6ZnVuY3Rpb24oKXt9fSx1aTp7IiNjdGl0bGUiOntiaW5kOmZ1bmN0aW9uKHgpe3JldHVybiAxPT14LnNlbGVjdGlvbi5sZW5ndGg/dGhpcy5sYW5nLlRYVF9USVRMRTE6dGhpcy5sYW5nLlRYVF9USVRMRX0sd2F0Y2g6WyIjZGJzIl19LCIjZGJzIjp7aW5pdDpmdW5jdGlvbih4KXt0aGlzLnNlbGVjdDIoeCx7ZGF0YTp0aGlzLmRhdGEuYWxsLm1hcChmdW5jdGlvbih4KXtyZXR1cm57aWQ6eCx0ZXh0Onh9fSksbXVsdGlwbGU6ITAscGxhY2Vob2xkZXI6dGhpcy5sYW5nLlBMQ19EQlMsbWluaW11bVJlc3VsdHNGb3JTZWFyY2g6MTJ9LCEwKX0sYmluZDoic2VsZWN0aW9uIixjaGVjazpmdW5jdGlvbih4LGEpe3JldHVybiBhLmxlbmd0aD8iIjp0aGlzLmxhbmcuRVJSX0RCU30sY3NzOnsiOmRpc2FibGVkIjpmdW5jdGlvbih4KXtyZXR1cm4geC5kZG9jcy5sZW5ndGg+MH19fSwiI2Rib3BzIjp7aW5pdDpmdW5jdGlvbih4KXt4LnRhZ3Moe3RhZ3M6dGhpcy5sYW5nLlRBR19PUC50byh0aGlzLmRhdGEuZGRvY3MubGVuZ3RoPzM6Mil9KX0sYmluZDoib3BzIixjaGVjazpmdW5jdGlvbih4LGEpe3JldHVybiBhLmxlbmd0aD8iIjp0aGlzLmxhbmcuRVJSX09QfX0sIiNkZG9jcyI6e2luaXQ6ZnVuY3Rpb24oeCl7dGhpcy5zZWxlY3QyKHgse2RhdGE6dGhpcy5kYXRhLmRkb2NzLm1hcChmdW5jdGlvbih4KXtyZXR1cm57aWQ6eCx0ZXh0OiJfZGVzaWduLyIreH19KSxtdWx0aXBsZTohMCxwbGFjZWhvbGRlcjp0aGlzLmxhbmcuUExDX0RET0NTLG1pbmltdW1SZXN1bHRzRm9yU2VhcmNoOjEyfSl9LGJpbmQ6ImRzZWxlY3Rpb24iLGNoZWNrOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIWEubGVuZ3RoJiZ4Lm9wcy5pbmRleE9mKCJkZG9jcyIpPi0xP3RoaXMubGFuZy5FUlJfRERPQ1M6IiJ9LGNzczp7aGlkZTpmdW5jdGlvbih4LGEpe3JldHVybi0xPT14Lm9wcy5pbmRleE9mKCJkZG9jcyIpfHwxIT14LnNlbGVjdGlvbi5sZW5ndGh9fSx3YXRjaDpbIiNkYm9wcyIsIiNkYnMiXX0sIiNidG4tc3RhcnQiOntkZWxheTo1MCxiaW5kOmZ1bmN0aW9uKHgsYSl7aWYobnVsbCE9YSl7dHJ5e3RoaXMuZG9Db21wYWN0KCl9Y2F0Y2goeCl7Y29uc29sZS5sb2coeCl9dGhpcy5teS5jYW5jZWwoKX19LGNzczp7IjpkaXNhYmxlZCI6ZnVuY3Rpb24oeCxhKXtyZXR1cm4heC5zZWxlY3Rpb24ubGVuZ3RofHwheC5vcHMubGVuZ3RofHwhdGhpcy5teS52YWxpZCgpfX0sd2F0Y2g6WyIjZGJzIiwiI2Rib3BzIiwiI2Rkb2NzIl19LCIjYnRuLWNhbmNlbCI6ZnVuY3Rpb24oeCxhKXtudWxsIT1hJiZ0aGlzLm15LmNhbmNlbCgpfX0sZG9Db21wYWN0OmZ1bmN0aW9uKCl7dmFyIHgsYSxiPXRoaXMsYz0kLmV4dGVuZCghMCx7fSxiLmRhdGEpLGQ9KGIuUGhvKCJfY29tcGlsZWQiKSxiLmxhbmcpLGU9Yy5zZWxlY3Rpb24ubGVuZ3RoO2Z1bmN0aW9uIGYoKXsoZS09MSk+MHx8WzcwMCwyNTAwLDc1MDAsMTVlM10uZm9yRWFjaChmdW5jdGlvbih4KXtnLmRlYm91bmNlKHgpKCl9KX1mdW5jdGlvbiBnKCl7JC5teS5yYWRpbygiZGJsaXN0IixjLnNlbGVjdGlvbil9Yy5vcHMubGVuZ3RoJiZlJiZPYmplY3Qua2V5cyhjLkFsbCkuaW50ZXJzZWN0KGMuc2VsZWN0aW9uKS5sZW5ndGgmJmMuc2VsZWN0aW9uLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIGc9W107Yy5vcHMuZmluZCgiZG9jcyIpJiZnLnB1c2goYi5SZXEoe3VybDpbZSwiX2NvbXBhY3QiXSxtZXRob2Q6IlBPU1QiLGNvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi9qc29uIn0pLmZhaWwoZnVuY3Rpb24oeCxhLGIpe2NvbnNvbGUubG9nKCJFcnJvciBzdGFydGluZyBkYXRhIGNvbXBhY3Rpb24gb2YgIitlLHgsYSxiKX0pKSxjLm9wcy5maW5kKCJ2aWV3cyIpJiZnLnB1c2goYi5SZXEoe3VybDpbZSwiX3ZpZXdfY2xlYW51cCJdLG1ldGhvZDoiUE9TVCIsY29udGVudFR5cGU6ImFwcGxpY2F0aW9uL2pzb24ifSkuZmFpbChmdW5jdGlvbih4LGEsYil7Y29uc29sZS5sb2coIkVycm9yIHN0YXJ0aW5nIHB1cmdpbmcgb2xkIHZpZXdzIG9mICIrZSx4LGEsYil9KSksYy5vcHMuZmluZCgiZGRvY3MiKSYmKHg9Yy5kc2VsZWN0aW9uLmNvbXBhY3QoITApLGE9ZnVuY3Rpb24oKXtiLkNCLmRkb2NzKHgpfS5kZWJvdW5jZSg1KS5hZnRlcih4Lmxlbmd0aCkseC5mb3JFYWNoKGZ1bmN0aW9uKHgpe2cucHVzaChiLlJlcSh7dXJsOltlLCJfY29tcGFjdCIseF0sbWV0aG9kOiJQT1NUIixjb250ZW50VHlwZToiYXBwbGljYXRpb24vanNvbiJ9KS5mYWlsKGZ1bmN0aW9uKGEsYixjKXtjb25zb2xlLmxvZygiRXJyb3Igc3RhcnRpbmcgdmlldyBjb21wYWN0aW9uIG9mICIrZSsiL19kZXNpZ24vIit4LGEsYixjKX0pLmFsd2F5cyhmdW5jdGlvbigpe2EoKX0pKX0pKSxRLmFsbChnKS50aGVuKGZ1bmN0aW9uKHgpe2N3LmxpYi5ub3RlKGQuTVNHX0NPTVBBQ1RfU1RBUlQuYXNzaWduKGUpKSxmKCl9KS5mYWlsKGZ1bmN0aW9uKHgsYSxiKXtjdy5saWIubm90ZShkLk1TR19DT01QQUNUX0ZBSUxfU09NRSwiZXJyb3IiKSxmKCl9KX0ubGF6eShiLlBobygiQ2ZnIikuYmF0Y2hDb21wYWN0RGVsYXkpKX0sZGllOmZ1bmN0aW9uKHgpe3RoaXMuU2VsMlNjcm9sbCh4LCExKX0sSFRNTDonPGRpdiBpZD0iY3RpdGxlIiBjbGFzcz0iZnMxMzAgbWIxMCBib2xkZXIiPntUWFRfVElUTEV9PC9kaXY+PGRpdiBjbGFzcz0ibWIxMCBmczEwNSI+PGlucHV0IGlkPSJkYnMiIGNsYXNzPSJ3MTAwcCI+PC9kaXY+PGRpdiBjbGFzcz0ibWIxMCI+PHNwYW4gaWQ9ImRib3BzIj48L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0ibWIxMCBmczEwNSBoaWRlIj48aW5wdXQgaWQ9ImRkb2NzIiBjbGFzcz0idzEwMHAiPjwvZGl2PjxkaXYgY2xhc3M9Im10MTAgcHQxMCBidGQiPjxidXR0b24gaWQ9ImJ0bi1zdGFydCIgY2xhc3M9Im1hcmtmb2N1cyBncmVlbiBtcjIiPntCVE5fU1RBUlR9PC9idXR0b24+PGJ1dHRvbiBpZD0iYnRuLWNhbmNlbCIgY2xhc3M9Im1hcmtmb2N1cyI+e0JUTl9DQU5DRUx9PC9idXR0b24+PC9kaXY+JyxzdHlsZTp7IiBpbnB1dCI6ImRpc3BsYXk6aW5saW5lLWJsb2NrOyIsIiAuc2VsZWN0Mi1jb250YWluZXI+LnNlbGVjdDItY2hvaWNlcyI6Im1heC1oZWlnaHQ6MjE0cHg7In0scGFyYW1zOntzdHJpY3Q6ITB9fSxOZXdEQjp7aWQ6ImN3LlBob3Rvbi5OZXdEQiIsbGFuZzp7fSxkYXRhOntkYnM6W10sYWxsOltdLGFsbG86e30sdXNlcnM6W10scm9sZXM6W10sYWRtaW5zOntuYW1lczpbXSxyb2xlczpbXX0sbWVtYmVyczp7bmFtZXM6W10scm9sZXM6W119LHE6MCxuOjAscGFydGl0aW9uZWQ6ITF9LFVzZXJzOltdLFMyOmZ1bmN0aW9uKHgsYSxiKXt0aGlzLnNlbGVjdDIodGhpcy5teS5maW5kKHgpLHt0YWdzOmEscGxhY2Vob2xkZXI6dGhpcy5sYW5nW2JdLHRva2VuU2VwYXJhdG9yczpbIiAiLCIsIl0sbWluaW11bVJlc3VsdHNGb3JTZWFyY2g6MTJ9KX0saW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YS5kYXRhLGM9YS5QaG8oIkFsbCIpO2Z1bmN0aW9uIGQoKXt4LnBhcmVudCgpLmNzcygiaGVpZ2h0IiwiYXV0byIpfWIuYWxsPU9iamVjdC5rZXlzKGMpLGIuYWxsbz1jdy5saWIuYTJvKGIuYWxsKSx4Lmh0bWwoJC5teS5mb3JtZ2VuKGEuSFRNTCkuYXNzaWduKGEubGFuZykpLGIucm9sZXM9T2JqZWN0LmtleXMoT2JqZWN0LmtleXMoYykucmVkdWNlKGZ1bmN0aW9uKHgsYSl7dmFyIGI9Y1thXS5zZWN1cml0eTtyZXR1cm5bXS5hZGQoYi5hZG1pbnMucm9sZXMpLmFkZChiLm1lbWJlcnMucm9sZXMpLmZvckVhY2goZnVuY3Rpb24oYSl7eFthXT0hMH0pLHh9LHt9KSkuYWRkKCJfYWRtaW4iKS51bmlxdWUoKS5zb3J0KCksYi5xPWEuUGhvKCJDb3VjaCIpLnEsYi5uPWEuUGhvKCJDb3VjaCIpLm4seC5wYXJlbnQoKS5vbigiZHJhZ3N0b3AiLGQpLHgudGhlbihmdW5jdGlvbigpe2QoKX0pLFEuYWxsKFthLlBobygiR2V0VXNlcnMiKSgpLnRoZW4oZnVuY3Rpb24oeCl7Yi51c2Vycz14fSkseF0pLnRoZW4oZnVuY3Rpb24oKXthLlMyKCIjdWFkbSIsYS5kYXRhLnVzZXJzLCJQTENfVUFETSIpLGEuUzIoIiN1bWVtIixhLmRhdGEudXNlcnMsIlBMQ19VTUVNIiksYS5TZWwyU2Nyb2xsKHgsITApfSl9LHVpOnsiI2N0aXRsZSI6e2JpbmQ6ZnVuY3Rpb24oeCl7cmV0dXJuIDE9PXguZGJzLmxlbmd0aD90aGlzLmxhbmcuVFhUX1RJVExFMTp0aGlzLmxhbmcuVFhUX1RJVExFfSx3YXRjaDpbIiNkYnMiXX0sIiNkYnMiOntpbml0OmZ1bmN0aW9uKHgpe3RoaXMuc2VsZWN0Mih4LHt0YWdzOltdLHBsYWNlaG9sZGVyOnRoaXMubGFuZy5QTENfREJTLHRva2VuU2VwYXJhdG9yczpbIiAiLCIsIl0sbWluaW11bVJlc3VsdHNGb3JTZWFyY2g6MTJ9KX0sYmluZDoiZGJzIixjaGVjazpmdW5jdGlvbih4LGEpe3ZhciBiPVtdLGM9W10sZD1bXTtyZXR1cm4gYS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3guYWxsb1thXSYmYi5wdXNoKGEpLC9eW2EtejAtOV8kXChcKVwrXC1cL10rJC8udGVzdChhKXx8Yy5wdXNoKGEpLC9eW2Etel0vLnRlc3QoYSl8fGQucHVzaChhKX0pLGIubGVuZ3RoP3RoaXMubGFuZy5FUlJfREJfRVhJU1QuYXNzaWduKGIuam9pbigiLCAiKS5lc2NhcGVIVE1MKCkpOmMubGVuZ3RoP3RoaXMubGFuZy5FUlJfREJfTkFNRTpkLmxlbmd0aD90aGlzLmxhbmcuRVJSX0RCX1VORDp2b2lkIDB9fSwiI3VhZG0iOntpbml0OmZ1bmN0aW9uKHgpe3RoaXMuUzIoIiN1YWRtIix0aGlzLmRhdGEudXNlcnMsIlBMQ19VQURNIil9LGJpbmQ6ImFkbWlucy5uYW1lcyIsY2hlY2s6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gdGhpcy5pc1VuYW1lcyhhKX19LCIjZ2FkbSI6e2luaXQ6ZnVuY3Rpb24oeCl7dGhpcy5TMigiI2dhZG0iLHRoaXMuZGF0YS5yb2xlcywiUExDX0dBRE0iKX0sYmluZDoiYWRtaW5zLnJvbGVzIn0sIiN1bWVtIjp7aW5pdDpmdW5jdGlvbih4KXt0aGlzLlMyKCIjdW1lbSIsdGhpcy5kYXRhLnVzZXJzLCJQTENfVU1FTSIpfSxiaW5kOiJtZW1iZXJzLm5hbWVzIixjaGVjazpmdW5jdGlvbih4LGEpe3JldHVybiB0aGlzLmlzVW5hbWVzKGEpfX0sIiNnbWVtIjp7aW5pdDpmdW5jdGlvbih4KXt0aGlzLlMyKCIjZ21lbSIsdGhpcy5kYXRhLnJvbGVzLCJQTENfR01FTSIpfSxiaW5kOiJtZW1iZXJzLnJvbGVzIn0sIiNxc2hhcmRzIjpmdW5jdGlvbih4LGEpe3JldHVybiBudWxsIT1hJiYoeC5xPWlzTmFOKCthKT8xOjB8KCthKS5jbGFtcCgxLDFlMykpLHgucX0sIiNxc2hhcmRzdHh0Ijp7YmluZDpmdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5sYW5nLlRYVF9TSEFSRFMoeC5xKX0sd2F0Y2g6WyIjcXNoYXJkcyJdfSwiI25jb3BpZXMiOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIG51bGwhPWEmJih4Lm49aXNOYU4oK2EpPzE6MHwoK2EpLmNsYW1wKDEsMWU0KSkseC5ufSwiI25jb3BpZXN0eHQiOntiaW5kOmZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmxhbmcuVFhUX0NPUElFUyh4Lm4pfSx3YXRjaDpbIiNuY29waWVzIl19LCdpbnB1dFtuYW1lPSJwYXJ0aXRpb25lZCJdJzp7YmluZDpmdW5jdGlvbih4LGEpe3JldHVybiBudWxsIT1hJiYoeC5wYXJ0aXRpb25lZD1hLmxlbmd0aD4wKSx4LnBhcnRpdGlvbmVkP1sicGFydGl0aW9uZWQiXTpbXX0sY3NzOntoaWRlOmZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLlBobygiQ291Y2giKS52ZXI8IjAwMy4ifHx4LnE8Mn19LHdhdGNoOlsiI3FzaGFyZHMiXX0sIiNjbHVzdGVyaW5nIjp7Y3NzOntoaWRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuUGhvKCJDb3VjaCIpLnZlcjwiMDAyLiJ9fX0sIiNidG4tc3RhcnQiOntiaW5kOmZ1bmN0aW9uKHgsYSl7aWYobnVsbD09YSlyZXR1cm4gdGhpcy5sYW5nWyJCVE5fU1RBUlQiKyh4Lm1lbWJlcnMubmFtZXMreC5tZW1iZXJzLnJvbGVzPyIiOiJfUFVCTElDIildO3RyeXt0aGlzLmRvQ3JlYXRlKCl9Y2F0Y2goeCl7Y29uc29sZS5sb2coeCl9dGhpcy5teS5jYW5jZWwoKX0sY3NzOnsiOmRpc2FibGVkIjpmdW5jdGlvbih4LGEpe3JldHVybiF4LmRicy5sZW5ndGh8fCF0aGlzLm15LnZhbGlkKCl9LCJzZWxmOm9yYW5nZSI6ZnVuY3Rpb24oeCl7cmV0dXJuISh4Lm1lbWJlcnMubmFtZXMreC5tZW1iZXJzLnJvbGVzKX0sInNlbGY6Z3JlZW4iOmZ1bmN0aW9uKHgpe3JldHVybiEhKHgubWVtYmVycy5uYW1lcyt4Lm1lbWJlcnMucm9sZXMpfX0sd2F0Y2g6WyIjZGJzIiwiI3VtZW0iLCIjZ21lbSJdfSwiI2J0bi1jYW5jZWwiOmZ1bmN0aW9uKHgsYSl7bnVsbCE9YSYmdGhpcy5teS5jYW5jZWwoKX19LGRvQ3JlYXRlOmZ1bmN0aW9uKCl7dmFyIHg9dGhpcyxhPXguZGF0YSxiPXguUGhvKCJDb3VjaCIpLGM9Yi52ZXIsZD17bmFtZToiIixzZWN1cml0eTpPYmplY3Quc2VsZWN0KGEsWyJhZG1pbnMiLCJtZW1iZXJzIl0pfTtjPiIwMDIuIiYmK2IucT4wJiYkLmV4dGVuZChkLHtxOithLnEsbjorYS5ufSksYz4iMDAzLiImJmEucGFydGl0aW9uZWQmJithLnE+MSYmKGQucGFydGl0aW9uZWQ9ITApO3ZhciBlPWEuZGJzLm1hcChmdW5jdGlvbih4KXtyZXR1cm4gJC5leHRlbmQoITAse30sZCx7bmFtZTp4fSl9KTtyZXR1cm4geC5QaG8oIkNyZWF0ZURCcyIpKGUsITEpfSxpc1VuYW1lczpmdW5jdGlvbih4KXt2YXIgYT0iIixiPXRoaXM7cmV0dXJuIHguZm9yRWFjaChmdW5jdGlvbih4KXsiX2FkbWluIiE9eCYmKHguaGFzKCI6Iil8fC9eXy8udGVzdCh4KSkmJihhPWIubGFuZy5FUlJfVU5BTUUpfSksYX0sZGllOmZ1bmN0aW9uKHgpe3RoaXMuU2VsMlNjcm9sbCh4LCExKX0sSFRNTDpbJzxkaXYgY2xhc3M9ImZzMTMwIG1iMiBsaDE2MCBib2xkZXIgY20iPicsJzxzcGFuIGNsYXNzPSJmaS1saXN0IG80MCBmczg1IG1yMyI+PC9zcGFuPiAnLCc8c3BhbiBpZD0iY3RpdGxlIj57VFhUX1RJVExFfTwvc3Bhbj4nLCI8L2Rpdj4iLHtyb3c6IjEwMCUiLGxhYmVsOiI2MHB4Iixyb3dDc3M6Im15LXJvdyBwdDMgcGIzIixsYWJlbENzczoibXktbGFiZWwifSxbIntMQkxfREJTfSIsImlucCNkYnMuZnMxMDUubGgxNjAiLCJtc2ciXSwnPHNlY3Rpb24gaWQ9ImNsdXN0ZXJpbmciPicsWyJ7TEJMX0NMVVNURVJ9IiwnPHNwYW4gY2xhc3M9ImZzOTUiPicsIm51bSNxc2hhcmRzLnc1MC5tcjUiLHttaW46MSxtYXg6MzJ9LCJzcGFuI3FzaGFyZHN0eHQuZGliLnc3MCIsIm51bSNuY29waWVzLnc1MC5tcjUiLHttaW46MSxtYXg6MTZ9LCJzcGFuI25jb3BpZXN0eHQuZGliLnc5MCIsJzxzcGFuIGNsYXNzPSJoaWRlIj48bGFiZWwgY2xhc3M9ImRpYiB4Z3JheSBjcCI+JywnPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJwYXJ0aXRpb25lZCIgY2xhc3M9ImZzMTEwIHZhbSBtcjMgY3AiIHZhbHVlPSJwYXJ0aXRpb25lZCI+IHtUWFRfUEFSVElUSU9OU30nLCI8L2xhYmVsPjwvc3Bhbj4iLCI8L3NwYW4+Il0sIjwvc2VjdGlvbj4iLCc8ZGl2IGNsYXNzPSJmczEyMCBtdDEwIG1iMiI+e1RYVF9BRE19PC9kaXY+JyxbIntMQkxfVUFETX0iLCJpbnAjdWFkbS5mczEwNS5saDE2MCIsIm1zZyJdLFsie0xCTF9HQURNfSIsImlucCNnYWRtLmZzMTA1LmxoMTYwIiwibXNnIl0sJzxkaXYgY2xhc3M9ImZzMTIwIG10MTAgbWIyIj57VFhUX01FTX08L2Rpdj4nLFsie0xCTF9VQURNfSIsImlucCN1bWVtLmZzMTA1LmxoMTYwIiwibXNnIl0sWyJ7TEJMX0dBRE19IiwiaW5wI2dtZW0uZnMxMDUubGgxNjAiLCJtc2ciXSwnPGRpdiBjbGFzcz0ibXQxMiBwdDE1IGJ0ZCI+JywnPGJ1dHRvbiBpZD0iYnRuLXN0YXJ0IiBjbGFzcz0ibWFya2ZvY3VzIGdyZWVuIG1yMiI+e0JUTl9TVEFSVH08L2J1dHRvbj4nLCc8YnV0dG9uIGlkPSJidG4tY2FuY2VsIiBjbGFzcz0ibWFya2ZvY3VzIj57QlROX0NBTkNFTH08L2J1dHRvbj4nLCI8L2Rpdj4iXSxzdHlsZTp7IiBpbnB1dCI6ImRpc3BsYXk6aW5saW5lLWJsb2NrOyIsIiAuc2VsZWN0Mi1jb250YWluZXI+LnNlbGVjdDItY2hvaWNlcyI6Im1heC1oZWlnaHQ6NTZweDsifSxwYXJhbXM6e3N0cmljdDohMH19LERlbERCOntpZDoiY3cuUGhvdG9uLkRlbERCIixsYW5nOnt9LGRhdGE6e2RiczpbXSxhbGw6W10sYWxsbzp7fSxyZW5ldzohMSxyZW5ld2FjbDohMCxyZW5ld3FucDohMCxoYXNhY2w6ITAsaGFzcW5wOiEwLHJlc29yZTpbXX0saW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YS5kYXRhLGM9YS5QaG8oIkFsbCIpO2IuZGJzLmZvckVhY2goZnVuY3Rpb24oeCl7dmFyIGE9Y1t4XTthLmNsdXN0ZXImJmEuY2x1c3Rlci5xfHwoYi5oYXNxbnA9ITEpLGEuc2VjdXJpdHkmJmEuc2VjdXJpdHkuc3RhbXB8fChiLmhhc2FjbD0hMSl9KSxiLmFsbD1iLmRicy5zbGljZSgwKSxiLmFsbG89Y3cubGliLmEybyhiLmFsbCkseC5odG1sKCQubXkuZm9ybWdlbihhLkhUTUwpLmFzc2lnbihhLmxhbmcpKSx4LnRoZW4oZnVuY3Rpb24oKXthLlNlbDJTY3JvbGwoeCwhMCl9LmRlYm91bmNlKDE1KSl9LHVpOnsiI2N0aXRsZSI6e2JpbmQ6ZnVuY3Rpb24oeCl7cmV0dXJuIDE9PXguZGJzLmxlbmd0aD90aGlzLmxhbmcuVFhUX1RJVExFMTp0aGlzLmxhbmcuVFhUX1RJVExFfSx3YXRjaDpbIiNkYnMiXX0sIiNkYnMiOntpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMuZGF0YS5hbGw7dGhpcy5zZWxlY3QyKHgse2RhdGE6YS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJue2lkOngsdGV4dDp4fX0pLG11bHRpcGxlOiEwLHBsYWNlaG9sZGVyOnRoaXMubGFuZy5QTENfREJTLHJlYWRPbmx5OjE9PWEubGVuZ3RoLG1pbmltdW1SZXN1bHRzRm9yU2VhcmNoOjEyfSl9LGJpbmQ6ImRicyIsY2hlY2s6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gYS5sZW5ndGg/IiI6dGhpcy5sYW5nLkVSUl9EQlN9LGNzczp7IjpkaXNhYmxlZCI6ZnVuY3Rpb24oeCl7cmV0dXJuIDE9PXguYWxsLmxlbmd0aH19fSwiI2RlbHdhcm4iOntiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcyxjPXtzaXplOjAsY291bnQ6MCxkaXNrOjAsYmFzZToobmV3IFVSTChiLlBobygiQmFzZSIpKS5ob3N0bmFtZSsiIikudHJ1bmNhdGUoNDUsIm1pZGRsZSIpLmVzY2FwZUhUTUwoKX0sZD1iLlBobygiQWxsIik7cmV0dXJuIHguZGJzLmZvckVhY2goZnVuY3Rpb24oeCl7dmFyIGE9ZFt4XTthJiYoYy5zaXplKz0rYS5kYXRhX3NpemV8fDAsYy5kaXNrKz0rYS5kaXNrX3NpemV8fDApfSksYy5jb3VudD14LmRicy5sZW5ndGgseC5kYnMubGVuZ3RoP2IubGFuZy5UWFRfV0FSTihjKToiIn0sd2F0Y2g6IiNkYnMifSwiI2RlbG5ldyI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gbnVsbCE9YSYmKHgucmVuZXc9ISFhLmxlbmd0aCkseC5yZW5ldz9bIm9rIl06W119fSwiI2RlbG5ldzEiOntiaW5kOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIG51bGwhPWEmJih4LnJlbmV3YWNsPSEhYS5sZW5ndGgpLHgucmVuZXdhY2w/WyJvayJdOltdfSx3YXRjaDpbIiNkZWxuZXciXSxjc3M6e2hpZGU6ZnVuY3Rpb24oeCl7cmV0dXJuIXguaGFzYWNsfSwiOmRpc2FibGVkIG84MCI6ZnVuY3Rpb24oeCl7cmV0dXJuIXgucmVuZXd9fX0sIiNkZWxuZXcyIjp7YmluZDpmdW5jdGlvbih4LGEpe3JldHVybiBudWxsIT1hJiYoeC5yZW5ld3FucD0hIWEubGVuZ3RoKSx4LnJlbmV3cW5wP1sib2siXTpbXX0sd2F0Y2g6WyIjZGVsbmV3Il0sY3NzOntoaWRlOmZ1bmN0aW9uKHgpe3JldHVybiF4Lmhhc3FucHx8dGhpcy5QaG8oIkNvdWNoIikudmVyPCIwMDIuIn0sIjpkaXNhYmxlZCBvODAiOmZ1bmN0aW9uKHgpe3JldHVybiF4LnJlbmV3fX19LCIjYnRuLXN0YXJ0Ijp7YmluZDpmdW5jdGlvbih4LGEpe2lmKG51bGw9PWEpcmV0dXJuIHRoaXMubGFuZy5CVE5fU1RBUlQoeC5kYnMubGVuZ3RoKTt0cnl7dGhpcy5kb0RlbGV0ZVooKX1jYXRjaCh4KXtjb25zb2xlLmxvZyh4KX10aGlzLm15LmNvbW1pdCgpfSxjc3M6eyI6ZGlzYWJsZWQiOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIXguZGJzLmxlbmd0aHx8IXRoaXMubXkudmFsaWQoKX19LHdhdGNoOlsiI2RicyJdfSwiI2J0bi1jYW5jZWwiOmZ1bmN0aW9uKHgsYSl7bnVsbCE9YSYmdGhpcy5teS5jYW5jZWwoKX19LGRvRGVsZXRlWjpmdW5jdGlvbigpe3ZhciB4PXRoaXMsYT0kLmV4dGVuZCghMCx7fSx4LmRhdGEpLGI9KHguUGhvKCJfY29tcGlsZWQiKSx4LlBobygiQ2ZnIikuYmF0Y2hDcmVhdGVEZWxheSksYz1mdW5jdGlvbih4KXtyZXR1cm4oeCsiIikuZXNjYXBlSFRNTCgpfSxkPXgubGFuZyxlPWEuZGJzLGY9ZS5sZW5ndGgsZz1bXSxoPVtdO2lmKGYpe3ZhciBpPXguUGhvKCJBbGwiKTthLnJlbmV3JiZlLmZvckVhY2goZnVuY3Rpb24oeCl7dmFyIGI9aVt4XTtpZihiKXt2YXIgYz17Y3JlYXRlOiEwLG5hbWU6eCxzZWN1cml0eTpudWxsfTtiLnNlY3VyaXR5JiZiLnNlY3VyaXR5LnN0YW1wJiZhLnJlbmV3YWNsJiYoYy5zZWN1cml0eT0kLmV4dGVuZCghMCx7fSxPYmplY3Quc2VsZWN0KGIuc2VjdXJpdHksWyJhZG1pbnMiLCJtZW1iZXJzIl0pKSksYi5jbHVzdGVyJiZiLmNsdXN0ZXIucSYmYS5yZW5ld3FucCYmKGMucT1iLmNsdXN0ZXIucSxjLm49Yi5jbHVzdGVyLm4sYy5wYXJ0aXRpb25lZD0hIWIucHJvcHMmJiEhYi5wcm9wcy5wYXJ0aXRpb25lZCksZy5wdXNoKGMpfX0pLFEuYWxsU2V0dGxlZChlLm1hcChmdW5jdGlvbihlLGYpe3ZhciBnPSQuRGVmZXJyZWQoKTtyZXR1cm4gZnVuY3Rpb24oKXt4LlJlcSh7dXJsOltlXSxtZXRob2Q6IkRFTEVURSJ9KS50aGVuKGZ1bmN0aW9uKCl7Y3cubGliLm5vdGUoZC5NU0dfT0suYXNzaWduKGUpLCJvayIpLGEucmVuZXd8fCQubXkucmFkaW8oImRiZGVsZXRlZCIsZSl9KS5mYWlsKGZ1bmN0aW9uKHgsYSxiKXtoLnB1c2goZSksY3cubGliLm5vdGUoZC5NU0dfRkFJTC5hc3NpZ24oZSx4LGMoYSkpLCJlcnJvciIpfSkuYWx3YXlzKGZ1bmN0aW9uKCl7Zy5yZXNvbHZlKCl9KX0uZGVsYXkoZipiKSxnLnByb21pc2UoKX0pKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuICQubXkucmFkaW8oImRibGlzdCIsW10pLGEucmVuZXc/eC5QaG8oIkNyZWF0ZURCcyIpKGcuZmlsdGVyKGZ1bmN0aW9uKHgpe3JldHVybiFoLmZpbmQoeC5uYW1lKX0pLCExKS50aGVuKGZ1bmN0aW9uKCl7JC5teS5yYWRpbygiZGJsaXN0IixnLm1hcChmdW5jdGlvbih4KXtyZXR1cm4geC5uYW1lfSkuc3VidHJhY3QoaCkpfSk6YS5kYnN9KX19LGRpZTpmdW5jdGlvbih4KXt0aGlzLlNlbDJTY3JvbGwoeCwhMSl9LEhUTUw6Wyc8ZGl2IGlkPSJjdGl0bGUiIGNsYXNzPSJmczEzMCBtYjUgbGgxNjAgcmVkIj57VFhUX1RJVExFfTwvZGl2PicsJzxkaXYgY2xhc3M9Im1iMTAgZnMxMDUiPjxpbnB1dCBpZD0iZGJzIiBjbGFzcz0idzEwMHAiPjwvZGl2PicsJzxkaXYgY2xhc3M9Im1iMTAiPjxzcGFuIGlkPSJkZWx3YXJuIj48L3NwYW4+PC9kaXY+JywnPGRpdiBjbGFzcz0ibWI4Ij4nLCc8bGFiZWwgY2xhc3M9InhncmF5IGxoMTMwIj4nLCc8c3BhbiBjbGFzcz0idzIwIGRpYiI+PGlucHV0IGlkPSJkZWxuZXciIHR5cGU9ImNoZWNrYm94IiB2YWx1ZT0ib2siPiA8L3NwYW4+e0xCTF9ORVd9JywiPC9sYWJlbD4iLCc8ZGl2PjxsYWJlbCBjbGFzcz0ieGdyYXkgbGgxMzAgcGwyMCI+PGlucHV0IGlkPSJkZWxuZXcxIiB0eXBlPSJjaGVja2JveCIgdmFsdWU9Im9rIj4mbmJzcDsge0xCTF9ORVdfQUNMfTwvbGFiZWw+PC9kaXY+JywnPGRpdj48bGFiZWwgY2xhc3M9InhncmF5IGxoMTMwIHBsMjAiPjxpbnB1dCBpZD0iZGVsbmV3MiIgdHlwZT0iY2hlY2tib3giIHZhbHVlPSJvayI+Jm5ic3A7IHtMQkxfTkVXX1FOUH08L2xhYmVsPjwvZGl2PicsIjwvZGl2PiIsJzxkaXYgY2xhc3M9Im10MTIgcHQxNSBidGQiPicsJzxidXR0b24gaWQ9ImJ0bi1zdGFydCIgY2xhc3M9InJlZCBtYXJrZm9jdXMgbXIyIj57QlROX1NUQVJUfTwvYnV0dG9uPicsJzxidXR0b24gaWQ9ImJ0bi1jYW5jZWwiIGNsYXNzPSJtYXJrZm9jdXMiPntCVE5fQ0FOQ0VMfTwvYnV0dG9uPicsIjwvZGl2PiJdLHN0eWxlOnsiIjoiZm9udC1zaXplOjE2cHgiLCIgLnNlbGVjdDItY29udGFpbmVyPi5zZWxlY3QyLWNob2ljZXMiOiJtYXgtaGVpZ2h0OjIxNHB4OyJ9LHBhcmFtczp7c3RyaWN0OiEwfX0sU2VjT2JqOntpZDoiY3cuUGhvdG9uLlNlY09iaiIsbGFuZzp7fSxkYXRhOntkYnM6W10sYWxsOltdLGFsbG86e30sdXNlcnM6W10scm9sZXM6W10sYWRtaW5zOntuYW1lczpbXSxyb2xlczpbXX0sbWVtYmVyczp7bmFtZXM6W10scm9sZXM6W119fSxVc2VyczpbXSxTMjpmdW5jdGlvbih4LGEsYixjKXt0aGlzLnNlbGVjdDIodGhpcy5teS5maW5kKHgpLHt0YWdzOmEscGxhY2Vob2xkZXI6dGhpcy5sYW5nW2JdLG1pbmltdW1SZXN1bHRzRm9yU2VhcmNoOjEyfSwhIWMpfSxpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj1hLmRhdGEsYz1hLlBobygiQWxsIik7Yi5hbGw9T2JqZWN0LmtleXMoYykuc29ydCgpLGIuYWxsbz1jdy5saWIuYTJvKGIuYWxsKSx4Lmh0bWwoJC5teS5mb3JtZ2VuKGEuSFRNTCkuYXNzaWduKGEubGFuZykpLGIucm9sZXM9T2JqZWN0LmtleXMoT2JqZWN0LmtleXMoYykucmVkdWNlKGZ1bmN0aW9uKHgsYSl7dmFyIGI9Y1thXS5zZWN1cml0eTtyZXR1cm5bXS5hZGQoYi5hZG1pbnMucm9sZXMpLmFkZChiLm1lbWJlcnMucm9sZXMpLmZvckVhY2goZnVuY3Rpb24oYSl7eFthXT0hMH0pLHh9LHt9KSkuYWRkKCJfYWRtaW4iKS51bmlxdWUoKS5zb3J0KCksUS5hbGwoW2EuUGhvKCJHZXRVc2VycyIpKCkudGhlbihmdW5jdGlvbih4KXtiLnVzZXJzPXh9KSx4XSkudGhlbihmdW5jdGlvbigpe2EuUzIoIiN1YWRtIixhLmRhdGEudXNlcnMsIlBMQ19VQURNIiksYS5TMigiI3VtZW0iLGEuZGF0YS51c2VycywiUExDX1VNRU0iKSx4LnRyaWdnZXIoImxheW91dCIpLGEuU2VsMlNjcm9sbCh4LCEwKX0pfSx1aTp7IiNkYnMiOntpbml0OmZ1bmN0aW9uKHgpe3RoaXMuc2VsZWN0Mih4LHt0YWdzOnRoaXMuZGF0YS5hbGwubWFwKGZ1bmN0aW9uKHgpe3JldHVybntpZDp4LHRleHQ6eH19KSxtdWx0aXBsZTohMCxwbGFjZWhvbGRlcjp0aGlzLmxhbmcuUExDX0RCUyxtaW5pbXVtUmVzdWx0c0ZvclNlYXJjaDoxMn0sITApfSxiaW5kOiJkYnMiLGNoZWNrOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIGEubGVuZ3RoPyIiOnRoaXMubGFuZy5FUlJfREJTfX0sIiN1YWRtIjp7aW5pdDpmdW5jdGlvbih4KXt0aGlzLlMyKCIjdWFkbSIsdGhpcy5kYXRhLnVzZXJzLCJQTENfVUFETSIsITApfSxiaW5kOiJhZG1pbnMubmFtZXMiLGNoZWNrOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIHRoaXMuaXNVbmFtZXMoYSl9fSwiI2dhZG0iOntpbml0OmZ1bmN0aW9uKHgpe3RoaXMuUzIoIiNnYWRtIix0aGlzLmRhdGEucm9sZXMsIlBMQ19HQURNIil9LGJpbmQ6ImFkbWlucy5yb2xlcyJ9LCIjdW1lbSI6e2luaXQ6ZnVuY3Rpb24oeCl7dGhpcy5TMigiI3VtZW0iLHRoaXMuZGF0YS51c2VycywiUExDX1VNRU0iLCEwKX0sYmluZDoibWVtYmVycy5uYW1lcyIsY2hlY2s6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gdGhpcy5pc1VuYW1lcyhhKX19LCIjZ21lbSI6e2luaXQ6ZnVuY3Rpb24oeCl7dGhpcy5TMigiI2dtZW0iLHRoaXMuZGF0YS5yb2xlcywiUExDX0dNRU0iKX0sYmluZDoibWVtYmVycy5yb2xlcyJ9LCIjYnRuLXN0YXJ0Ijp7YmluZDpmdW5jdGlvbih4LGEpe2lmKG51bGw9PWEpcmV0dXJuIHRoaXMubGFuZy5CVE5fU1RBUlQ7dHJ5e3RoaXMuZG9TZWNVcGRhdGUoKX1jYXRjaCh4KXtjb25zb2xlLmxvZyh4KX10aGlzLm15LmNhbmNlbCgpfSxjc3M6eyI6ZGlzYWJsZWQiOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIXguZGJzLmxlbmd0aHx8IXRoaXMubXkudmFsaWQoKX19LHdhdGNoOlsiI2RicyIsIiN1bWVtIiwiI2dtZW0iXX0sIiNidG4tY2FuY2VsIjpmdW5jdGlvbih4LGEpe251bGwhPWEmJnRoaXMubXkuY2FuY2VsKCl9LCIjbGF5cHJveHkiOntkZWxheToxNTAsd2F0Y2g6WyIjZGJzIiwiI3VhZG0iLCIjZ2FkbSIsIiN1bWVtIiwiI2dtZW0iXSxiaW5kOmZ1bmN0aW9uKCl7dGhpcy5teS50cmlnZ2VyKCIjbGF5cHJveHkiLCJsYXlvdXQiKX19fSxpc1VuYW1lczpmdW5jdGlvbih4KXt2YXIgYT0iIixiPXRoaXM7cmV0dXJuIHguZm9yRWFjaChmdW5jdGlvbih4KXsiX2FkbWluIiE9eCYmKHguaGFzKCI6Iil8fC9eXy8udGVzdCh4KSkmJihhPWIubGFuZy5FUlJfVU5BTUUpfSksYX0sZG9TZWNVcGRhdGU6ZnVuY3Rpb24oKXt2YXIgeD10aGlzLGE9JC5leHRlbmQoITAse30seC5kYXRhKSxiPSh4LlBobygiX2NvbXBpbGVkIiksZnVuY3Rpb24oeCl7cmV0dXJuKHgrIiIpLmVzY2FwZUhUTUwoKX0pLGM9eC5sYW5nLGQ9YS5kYnMubGVuZ3RoLGU9T2JqZWN0LnNlbGVjdChhLFsiYWRtaW5zIiwibWVtYmVycyJdKSxmPShlLm1lbWJlcnMubmFtZXMsZS5tZW1iZXJzLnJvbGVzLGUuYWRtaW5zLm5hbWVzLGUuYWRtaW5zLnJvbGVzLGUubWVtYmVycy5uYW1lcyxlLm1lbWJlcnMucm9sZXMsYS5kYnMpO2QmJmYuZm9yRWFjaChmdW5jdGlvbihhLGcpe3guUmVxKHt1cmw6W2EsIl9zZWN1cml0eSJdLG1ldGhvZDoiUFVUIixjb250ZW50VHlwZToiYXBwbGljYXRpb24vanNvbiIsZGF0YTpKU09OLnN0cmluZ2lmeShlKX0pLnRoZW4oZnVuY3Rpb24oKXtjdy5saWIubm90ZShjLk1TR19PSy5hc3NpZ24oYSksIm9rIil9KS5mYWlsKGZ1bmN0aW9uKHgsZCxlKXtjdy5saWIubm90ZShjLk1TR19GQUlMLmFzc2lnbihhLHgsYihkKSksImVycm9yIil9KS5hbHdheXMoZnVuY3Rpb24oKXtnPT1kLTEmJiQubXkucmFkaW8oImRibGlzdCIsZil9KX0ubGF6eSh4LlBobygiQ2ZnIikuYmF0Y2hDcmVhdGVEZWxheSkpfSxkaWU6ZnVuY3Rpb24oeCl7dGhpcy5TZWwyU2Nyb2xsKHgsITEpfSxIVE1MOlsnPGRpdiBjbGFzcz0iZnMxMzAgbWIyIGxoMTYwIGJvbGRlciI+e1RYVF9USVRMRX08L2Rpdj4nLHtyb3c6IjEwMCUiLGxhYmVsOiI2MHB4Iixyb3dDc3M6Im15LXJvdyBwdDMgcGIzIixsYWJlbENzczoibXktbGFiZWwifSxbIntMQkxfREJTfSIsImlucCNkYnMuZnMxMDUiLCJtc2ciXSwnPGRpdiBjbGFzcz0iZnMxMjAgbXQxMCBtYjIiPntUWFRfQURNfTwvZGl2PicsWyJ7TEJMX1VBRE19IiwiaW5wI3VhZG0uZnMxMDUiLCJtc2ciXSxbIntMQkxfR0FETX0iLCJpbnAjZ2FkbS5mczEwNSIsIm1zZyJdLCc8ZGl2IGNsYXNzPSJmczEyMCBtdDEwIG1iMiI+e1RYVF9NRU19PC9kaXY+JyxbIntMQkxfVUFETX0iLCJpbnAjdW1lbS5mczEwNSIsIm1zZyJdLFsie0xCTF9HQURNfSIsImlucCNnbWVtLmZzMTA1IiwibXNnIl0sJzxkaXYgY2xhc3M9Im10MTIgcHQxNSBidGQiPicsJzxidXR0b24gaWQ9ImJ0bi1zdGFydCIgY2xhc3M9Im1hcmtmb2N1cyBncmVlbiBtcjIiPntCVE5fU1RBUlR9PC9idXR0b24+JywnPGJ1dHRvbiBpZD0iYnRuLWNhbmNlbCIgY2xhc3M9Im1hcmtmb2N1cyI+e0JUTl9DQU5DRUx9PC9idXR0b24+JywiPC9kaXY+IiwnPGRpdiBpZD0ibGF5cHJveHkiIGNsYXNzPSJoaWRlIj48L2Rpdj4nXSxzdHlsZTp7IiBpbnB1dCI6ImRpc3BsYXk6aW5saW5lLWJsb2NrOyIsIiAuc2VsZWN0Mi1jb250YWluZXI+LnNlbGVjdDItY2hvaWNlcyI6Im1heC1oZWlnaHQ6NTZweDsifSxwYXJhbXM6e3N0cmljdDohMH19LFJlcUpTT046e2lkOiJjdy5QaG90b24uUmVxSlNPTiIscGFyYW1zOntyZXN0eWxlOjEwMCxzdHJpY3Q6ITB9LGRhdGE6e3RleHQ6IkxvYWRpbmcuLi4iLGRyYWc6ITEsaGVpZ2h0OiJub25lIixyZXE6e3VybDpbXSxoZWFkZXJzOnsiQ29udGVudC10eXBlIjoiYXBwbGljYXRpb24vanNvbiJ9LG1ldGhvZDoiZ2V0In0sY206e21vZGU6ImphdmFzY3JpcHQiLGxpbmVOdW1iZXJzOiExLHNjcm9sbGJhclN0eWxlOm51bGwsbGluZVdyYXBwaW5nOiEwLHRhYlNpemU6Mix0aGVtZToiZGVmYXVsdCIscmVhZE9ubHk6ITB9fSxpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj1hLmRhdGE7ZnVuY3Rpb24gYyhjKXtiLnRleHQ9IigiK2N3LmxpYi5qc29uKGMsIiAgIix4LndpZHRoKCkvOC4yfDApKyIpIixhLm15LnJlY2FsYygiI3RyZXN1bHQiKX14Lmh0bWwoW2IuZHJhZz8nPGRpdiBpZD0iZHJhZ2dlciI+PC9kaXY+JzoiIiwnPHRleHRhcmVhIGlkPSJ0cmVzdWx0IiBjbGFzcz0idzEwMHAiPjwvdGV4dGFyZWE+J10uam9pbigiIikpLHgudGhlbihmdW5jdGlvbigpe2EuUmVxKGIucmVxKS50aGVuKGZ1bmN0aW9uKHgpe2MoeCl9LmRlYm91bmNlKDUwKSkuZmFpbChmdW5jdGlvbih4LGEsYil7YyhhKX0pLmFsd2F5cyhmdW5jdGlvbigpe3gudHJpZ2dlcigibGF5b3V0Iil9LmRlYm91bmNlKDUwKSl9KX0sdWk6eyIjdHJlc3VsdCI6e2JpbmQ6InRleHQiLGluaXQ6ZnVuY3Rpb24oeCl7Q29kZU1pcnJvci5mcm9tVGV4dEFyZWEoeFswXSx0aGlzLmRhdGEuY20pfX19LHN0eWxlOnsiICNkcmFnZ2VyIjoid2lkdGg6MTAwJTtoZWlnaHQ6MTVweDtjdXJzb3I6bW92ZTsiLCIgLkNvZGVNaXJyb3IiOmZ1bmN0aW9uKCl7cmV0dXJuInBhZGRpbmc6MHB4OyBoZWlnaHQ6Iit0aGlzLmRhdGEuaGVpZ2h0KyIhaW1wb3J0YW50OyJ9LCIgLkNvZGVNaXJyb3ItbGluZSI6ImZvbnQtc2l6ZToxM3B4OyAiLCIgLkNvZGVNaXJyb3Itc2Nyb2xsIjoibWF4LWhlaWdodDpub25lIWltcG9ydGFudDsifX0sZmlsZXM6eyJmYXZpY29uLnBuZyI6e2RpZ2VzdDoibWQ1LW9DM3FJSTBZS2ZYTDBnWlFsN1NtL2c9PSIsY29udGVudF90eXBlOiJpbWFnZS9wbmciLGRhdGE6ImlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFEOEFBQUJBQ0FZQUFBQ3RLNi9MQUFBQUdYUkZXSFJUYjJaMGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUQ1cEpSRUZVZU5yY1d3MTRWRlY2L3M2OWR5WXprOHhNUW42QWhFQVNDRCtXQnl4ZFZza3VLaUtpZG9rc3JWYTJXQzF0bi9xRHN1dUR1MHRiYmYzWjdkYjFXVnQzVVhaclFaRHFzMXBSMGE0cmlxS3VLTHBhUUFSYWtCOURRZ2lFWkNiSi9ONTdUci8zM3R3d2lVbElNTUhFNytGd1p5YjNudk8rNTN6bis3djNpaFUvdklkNkZDRklUNlhJTkRUU1RJMEkvendhUlZvdHFqdWc2SStxQkxVMEVlbTZvQlFwOHZBSmJhazA1ZmgxSWtuVTBpWW9KMGVSdExnckE3OUovbG1ScnBSUFNpMmJLTzBuOHNRMVRiWlpRaVEwRWp5QVJzcTBTT1BUVzFzRkJiTWx3ekFvSHBlVWxjVlg4UFZlUHMreUZBWHppRDdjcHFoNGdxQndqazR5TGUxeHBTSEpNQ1ZaWGkrUlVqM1NNMmdRaFhrd1FicUJzVjdGdEM3Z1k0RmdMQmFhTk52UE1ra1hHdWJaYml3bmxhRHRmUHdOWDcrT2oyMkRoVy9BeVd0Q0ZQSGhKN3hBTjNxOWxtaHRUVkFpZ1piaXlSRHAzTnhRVTA1MmRpSVVDcExYbDBXcFJKTGlzUmkxdHJYNW1wdWplVktxQXAvUCs4Yytudzl0RlNsTjhhU3Q1WWxaeWYwMkRFbnl2R2dMK2JEQm80dnNVNmVpdkRWYTFLaWlvdHFMTHFvS3pQakQ2WGxsNDBySjR6RThmRTVSYi8yazB5WWRQbEpESC8zUHpxWnQ3MzRRTzNyc1dIRTRHRndhekFrdTVRM0dHMGt0NGRPZUh4TGtlVVVXODM5cnJWUTZxNmJ1QkkwcXptKzQ5ayt1RHMyWjh3MmZiaGdsL2UyUEo0Z3FKNVNqNWYzWk5RdnpMTk9rTjk1NEo3SHA1VmVpTlRYMVJjWEZoYzk1dk42a0VPb3YrZlNuempsNTJCQmV3eklseGRzcEt6WG15T0hqTkdQNnBPWWZyTGd0WjNUeHlLS0JWRTJlUUxwczNzVSt0R04xeDgzSDFxeHYvV2puLythT0t4MzVwSkxlQnd5UG1zMTREcDg3OHBMK3RmSThjZnVlUGJWaTdOZ3hrVlVQLzhoZlBIcGtMZzJ5OE1RYWQvM0RuYmwxeDQ2bkh2cjVMK043OWg0ZFUzbGV5Y0dtcUhxWS8vemRmbXR0UDEyZExneHRSeUlSbjhxcjBMcnM5ci9KbmozckFpSGF6ZlM1Rk1VcjhQYnZ0cXRmclBwVmZIVHg2SURQNTkrdFRIayt1enFycjY1TzY0ZEZ5ek04V21OZGJkMVVuNUVWZVdUVmcxa1hWVjM0cFJCMzFrV2ppMmJQRW8rcytwa0hlSUFMK0lDeno1NnBUd01wbXFaN3RLUDdEaHdLejUxN1NlcSsrLzh1cHlBL3owTkRRSUFEZUlBTCtJQVRlQWVFdkJKaW5LRWI3MzJ5Ny84Q2YvR2RhODNyLy93YXcrdjE2RFNFQkhpQUMvaUFFM2lCKzh3R3J5ZXRWZmJHQ21oWjN0MTc5KzczMy9LM1M4MzVsMS9DTVl6UWFBaUtybXZhMWRYenllZkxNbGYvNm5IL2xDbVZ1NlVsUi9LZllqMXhORlJLOXRDWlRrS1hCdy9zUDV6em5jV0xVdk12djlqN1plM3Z2dHNCb1RGT0xkb1NUVDN6eklzNTQ4ZVhIbFNXTnNxeXJCN1VYampoV1RmdE40Mm5ta2ZPdW5CR2JOSENiM21HNklKM2F3aUJ0MnJXakRiZ0I0K2VPR3JDVGlveW1xTWpTMHd6ZmFVcHJjak5OeS8xR29ZdWFCZ0o4TjU4MDFKdm12R0RCL2lBVjFldVdxVGxPTG10T1ZwUHlyRDN6NXFEaDQ2b2YxeTVJc2Z2OHhrMERJV1RJczgvTVg3d0FCL0ZKanJTMGtEUjFoTWRyY3ZLQ3hpNmpVM05VYytDNnNzVFplVmpkUnJHQXZ6Z0FUNU1iQ1A0ZFZwNUdEWTBUYk4vQ0hIYStlMVlXeXl5WlBHMVB2b0tDSGlBanlhMGJ6djhOSEk1NjNralJ0T3BVeEZxT05GSWxSV1QvN3V4c2JGaThYVUxhZEtrQ1lNWHhMZ2hwNjFwR1o4SHhRVnlqcDN0b3c4Ly9OaklIMUgwOVIyN2RxMXZibzR5NTJZeVhEZmd5OHJ5S3lIbnh1S3B5THg1bDRiUGVyVFdWcUthR3FMang0a2FHb2hIY1g1TEpPd3lsdDFxYTRtcXE0a1dMQ0I2NlNXaVRadUlTa3JzMG8vZGZLeDBPVGxFSTBadzlzOUo0a2gyMTZXbHptOW5JY3pIdDM3RHN4RkYxbHp3VEtWU2Nkc3dYbmI1bFhaRVk1cm12ZlZIYTloTlhPVmgxZTk3ejU5K1NyUnZuM01FMGJZMklrNkdLSms4M1Rnbjc2aFRjWXBLUjQ0UXpaN3RYTi9VNUZ3Zmp6dm5RUlBzbkpuUFE5SE9iVWhTc3JPZENSay9ubWp5Wk9mWXAzS2FvSVZYWCtIWnV2VjNWUFhOaSs0MURPTk8rRHFqdnJhbVBVVE0rdDdKRTAxVXZXQitnSG92dFJEdDJrWDArOThUSFR2R0pqUkNGSTBTdGJRNDVEd2VCemhXRUo4QlhOTTZGZmJzODBIR0daZ29qM09SM0Z4SEsxeHh0UVFUQ2EzQnhHQnNUTXpPblVTaEVGR1lGWFQwYUtLdmZZMW8yalJudkI2a3V2ckt3SDg5czRrQzJkbmZTNldTZDlvcjcxaEFNWmxYWGg4L1lleEpqcE1MdWw1bzdkaEJXbUVoQ2FqbWd3OFNIVGpnckRBRTVEQm9RVUhuL1p6NVdYYUpJcnY3N3JZdUZWQzcvNHdVMnhaTUNMUU1rdyt0ZWY5OW9na1RpRmF1Sk1WYlNwNDRRZnI1NTNmcUtzdnJJZkNMSjlJRmJQUW1LNlgyYVo0c0R4bGU0Nlk0cTkxbGw4M0p6Z3p0NVR2dlVQcWVlMGd0VzBacTJ6Ym5EL3YzTzZzTTlVTUxCQnp5TG5oWGJYdkpvL3R0SE4zbWpvSHhNSzZMQVhpQUM2Y3pUdUFGYnVEUFJBRis0QW0rNEEzRFQ0Ym11U0VhYmFGdnpQcTZ2Mk9TV2MzTUgvK1k2TmxuN2RtMEd0b0xweE1uT25zUGhqS1Q3TG10Wkp5ZURPQUFIdUNDbGpKTzRBVnU0QWNQVjhBUFBNRVh2TFdjWUQ2cUlybCt2eithNWN0UU1WekU2bVB2S1c2Q2paUk5jZWJNN2xYM3l4SVhCK01DUHVCME1kdjRNOGlESDNpQ0wzaHIvS0Vrellha3ZLejAxT2YyRzFRTG5mUE15amZmSklIUGMrY1M5K0M0TDllQzk2WDFzeVRjNXdZY3dNTzRnQTg0YlUwQVZ1RFhPaWRrNEFtKzRLMUZJaWVtSnhKSnFxd2NIK3lsV2tEaTVFbXl0bTkzdm4vLyswN0hVQzlZYmxqaE16VjNtd2p4T1VEMmQvenVxbkZmK3NPNEdCODRnQWNxei9pQXM4T1RkQ1BnQ2I3Z3pmbVBtc2FXbmlyS3gvWmVmZVVnUTkxOU44a1hYeVN0ckl6b3JydUlmdnRib2s4K2NTeHZaclNXYWVrejl5Zk9nVCt2cXp1dHJqamlPd1FyaUhQZHlYQTFKbE56M0hGZzZCQXJYSEVGQi9GbEpOa2RBcDhkRFBVaTRQbjZHMjhUZUxORDlwU2tMVW41K2ZsNnIvdUtWVWtkUGt6eWpqdUlIbmpBbVlDYmJuSWlPUVFxN3NwMU5VcVpFd0ZTQ0hvMmJIQW1BWUxqeFJkekVMN0VjV3R1SDVuRU04bWpEL1NIMkFDUkgrQ3g2a3RlZllWSkJLNWU3QkY0Z2k5NEc0S3NvT0l2UG45blZaRmRMVGc2TEM4bnRYVXJ5ZHR1STFxNGtNUWxsemdBMmtGMGN3dXJlNWsweVFsOW9lS3dJWXNYTytyYlF6V3RSK0VBUzIzWlltdWp3cGFzcUhENjdDM1ZaWjdnQzk0SXhmS1VzbmpzUHNUTjZCZ1R3QkdXdVhzM2FTKzg0TVRrYm4zYzNjL3RyVlBaQzMvSDlXeUZOU1lyc0VKMjNsbEdpbFZXcmwzckJDMmNiWFdzTkYranVnWkI3amdJZEJEUWZQd3hpWFpjWnlJT0FVL3daY25yc1ZDaDlXU2hBUUN1andkWDJPOEljN3VxZThkSDFYbXZBakEzdVhjdkdmZmVTNElUR0JBM3NWZC8vV3RuRWpOdk5IVEYwRlg5MlVZSWhNVzRwcCt1VjJxYVpQS3lTUWlkWXJGV3lnMEgreDVrdUNGdGY5d1l6b1ZoMnJpUjFJd1pKSzY3anRUeno5dmZCWUlVWkhQOUNaak9JcG9FVC9EbGl5S0dJcjFGNkJvbDRzbnVPeC9vS0k2Tm1vQ2ZyYTkzaHVBanZ0dkdEcG94TUZYTTA3aTdTSng1Z3ErUTFNSXJuNjcxOEpmR3hsTldSVVdaM21sL3M4OVVVQzlqQU10NDZBdVpZTEo5c3ZtbzhCMWVJeU1hKzhLQ3Z0eTRJVVBBay9reVQ2dldzSlRZeGZrdEhUejBXZlBNbVRQeU13TWJEM3k1WVRoR2FDQ0Y0d0pSVmVWVVdxcXJTY1AyZ2Q4ZVNBRnBURUNYZ09jUTgyUysrVGJ2Y0xod0o2a0dUb28rYllFYnpLai9rT0k5T1ZnMWE5bSs2alJsQ2dsdWc1TC9kT051d2RQbnk4b0hiODdudFZvUEc2OURoMnM2VGIzaS9YZjB4aHNkZDJVTVF2VzZxeHNjYU9GVmg3Y3BmZnh4RWhtckQ1NkZoZmtvMXRZYXJTMk5xTncyYzU2Ym0rU1kxODNzOERqSVNYWS9TQmFHK20ycTdoMkJzdTFWOFdPUGNmN3VrQWMvNWhsaTRzM2diVWl5MkM1WTYwS2g0UEozM24wL2Z1bWMyWFpPcjdIYVovRStGTERPdlNRS1E1WTg0aERlVmxxR3ZRSS81dWszWlhxZGJYdlR5VFJXZGpYbnVjdGZlKzJOTnBjOFZOSEN4VzVrTnR5RTNhZUU2OHpZVXVESFBQMW15bHdOelRCczlWQnFuOWViWlgxNjRMT0NaQ3B0MTd1VW0xM0JZbXJhOENQZmp0dU5Nc0VML01hV2xWcXBWSEtmdmZLalNrcmQwdlZEQlcxdEt6WnRlamwyelo5V0J6Ulc5VkVyVjNKQW9BOVA4bXlyRkd1czFyNWx3YXVnY0VRZ2xKZjNrR0ViY0VIaTBua0wydDI2MXo5OTJ2UllUYzJ4eUJQclZvWDdWYnNmOHZPZzZQb2JibzJVbG80Tzc5eTFNK0RldE9pNFY1ZElKdU5DYVZ2OGZtLzQxVmRmVDlCWFNNREg3L2VGQmVsYndOUGxMRzVldHJ6RE5VZ3BRK0hjd2toZFRYMWt6WC84VzhqcjlRejc1VStsMG1ycFh5MlBGbzhaRlk1R0cxbWp0YWpydWpYY3EwT1QyQ05LUmxsRm5ndGtCOElibm5yNks3SDY0QUUrVXNubkhINlNYTTZvM3RMcGhrSUJMY3JMRGFWZjNMVFpkL2pRWjlad0pnNzg0QUUrVEd5UjQ5bE84OVhDd1pIa3R0elFLQkltM0xwY1dsRStUdHp6encrMnhoTUpjemdTQjI3Z0J3L3dFYnlNNFdBUmhYSUtPMXFYbGNkN0VMWmYzR0FZbnBjTlRROC8rdWlhbEdsYWFqZ1JCMTdnQm43d0FCL3c2c3BWYzU2MzY3WmRsVDhpOS9pNzczMFUyUGo4UzJtY1BEeGlla25BQzl6QUR4NDljVFNFdC9zQXhxN2VLbEV4b2JMcytKTlBiY3dKaFVMbS9IbEQ5eUhFZG84bFg5bjhwbVM4M2lsVEtsdE5TMVlRWHRUUXU0ZmM4OG83YVdkTUpsTlRwMHlhRUYvOXl6WEdDNXRla2J4L2hxUUtBQmZ3UGNJNGdSZTRnYjhqc2UrbW5YRVZoVkpIVE11OGNNcWtpYkgxVHo1dFBQR2Z6NWpzTzRlVUZ3QWU0QUsrUDVnOE1RYTh3SDNHaWxxZjFFblFMaXN0eDB5ZVVINW95NWF0NGIyNzkwWHUvTUh0Z2FIdzVQWEp4cWIwVC8vbDRWamQ4Zm93NDR1WUtWbXVkR3JxeTdWOTM3K0ttc3kwekM4dUtkNmRNSlBoVzI1ZGtYeHIyM3RLS2ZWbDdXL0MrTGZjZWtjYWVJQUwrSUN6cjMzb1ZkK2MwMnVwU1VQMHgwbU9rTGhuUmtyVHhhT3RNUzJ2ZUZSNDl1WlgzaEx2ZjdBak1uWHFaQzBZekRsbkR5emlOWlA3N3Y5WjYydXZ2dW1ycUJocnRNYjBoLzArN1dvbG5WczhlQnRONDJSR25hSHdlbGFXbSszOWQvZnZVUlhublZkeU5KMU9ocGZkL3ZmZSsrNy9hVE5lQUJwTTB1Z2Y0MkE4akl2eDkrK1JGY0J6TnYyZFZXVVNlWUdacHNNOGFDa0hFa3NtVm81N3JQRlVKSGY1SFhmYnI1WlZYem5mZmJYc2kxdnhqRmZMNnVzYThXcFpMbytYTkZQcHYrYnhONWpwczM5KzhRdWpZMVhiZ0FoS3ovSXNLaDlYc3Q2VVZ0SFR6NzVBLzc1dWd4cFZXRlJYVlRVejg2WENQbFNmTWw0cTNQWkJyUDVFUTNFNEorZ0xCb00rN3IvTkpHbS9WTWpqZnVHSkhiQ2FOSHVFalhobzJiSlUwWWdSb1ovazVZVnY1TXlwNUsyM3R0SG16YTkvN25WU2Z5RFEwK3VrSHAvUGk2ZW04emdIenlzckhhT0VVR3RqQ2ZsRFE2TUdSUU5uWUkxQnNNSjRiR3NwWTF3YUk1a2Q5QWV2RHdRQzM5SjAvUUpXa3dLMlNVVnAwNkpFVTRUYzJ3bzZSMkErdjUrS2NZOWVhQ2M1a3RxdUtmMmxGa28rRVZSNkcrNDh5RUh3S29QNkxMMUZDazhxcm1hU3ExVjdwSVdqTHNnbk5LUDlGWElqcmduWnhsRlRRblhjWWxIdTlZUHFOZjVmZ0FFQXY0TVhNRjYzNXdrQUFBQUFTVVZPUks1Q1lJST0ifX0sc3RhbXA6MTcxOTUzODgxNjY3Nn0sImN3LlBob3Rvbi5TeW5jVGFzayI6e2lkOiJjdy5QaG90b24uU3luY1Rhc2siLGJ1aWxkOjU4LGxhbmc6e1RYVF9USVRMRToiTmV3IHJlcGxpY2F0aW9uL2R1bXAiLFRYVF9USVRMRV9TWU5DOiJOZXcgcmVwbGljYXRpb24iLFRYVF9USVRMRV9aRFU6IlJlc3RvcmUgZnJvbSBaSVAiLFRYVF9USVRMRV9aSVA6IkR1bXAgdG8gWklQIixUWFRfVElUTEVfRFVNUDoiUmVzdG9yZSBmcm9tIFpJUCBkdW1wIixMQkxfTU9ERToiTW9kZSIsVEFHX01PREU6e3RhZ3M6W1t7T25jZToib25jZSJ9LHtMaXZlOiJsaXZlIn0se1pJUDoiemlwIn1dLFt7bmFtZToiVXNlIF9yZXBsaWNhdG9yIGRvYyIsdmFsdWU6ImRvYyIsY3NzOiJub3ppcCJ9XSxbe25hbWU6IlR3byB3YXkiLHZhbHVlOiIyd2F5Iixjc3M6Im5vemlwIn1dXSxncm91cHNoaW06JzxzcGFuIGNsYXNzPSJvNjAgbm96aXAiPiZ0aGluc3A7wrcmdGhpbnNwOzwvc3Bhbj4nLHRhZ3NoaW06IiZ0aGluc3A7In0sVEFHX01PREVfQ09QWTp7dGFnczpbW3siUmVwbGljYXRlIGRvY3MiOiJvbmNlIn0seyJEdW1wIGRvY3MgdG8gWklQIjoiemlwIn1dXSxncm91cHNoaW06JzxzcGFuIGNsYXNzPSJvNjAgbm96aXAiPiZ0aGluc3A7wrcmdGhpbnNwOzwvc3Bhbj4nLHRhZ3NoaW06IiZ0aGluc3A7In0sTEJMX0lEOiJTeW5jIG5hbWUiLFBMQ19JRDoiRG9jIF9pZCBmb3Ige19yZXBsaWNhdG9yfSBEQiIsRVJSX0lEOiJSZXF1aXJlZCIsRVJSX0lEX1VORDoiQ2Fu4oCZdCBzdGFydCB3aXRoIHVuZGVyc2NvcmUiLExCTF9GUk9NOiJTb3VyY2UgREIiLFBMQ19GUk9NOiJMb2NhbCBuYW1lIG9yIHJlbW90ZSBVUkwiLEVSUl9GUk9NOiJFeGlzdGluZyBEQiBuYW1lIG9yIHZhbGlkIFVSTCIsRVJSX0ZST01fVVJMOiJJbnZhbGlkIFVSTCIsRVJSX1BXRDoiUGxlYXNlIHByb3ZpZGUgY3JlZGVudGlhbHMiLExCTF9aSVBEVU1QOiJTcmMgemlwIGR1bXAiLFBMQ19aSVBEVU1QOic8ZGl2IGNsYXNzPSJ0YWMiPjxzcGFuIGNsYXNzPSJmaS1hcmNoaXZlIG8zMCBmczMwMCI+PC9zcGFuPjxicj5TZWxlY3Qgb3IgZHJhZyAuemlwIERCIGR1bXAgb3IgLmpzb24gY2hhbmdlcyBmZWVkIGhlcmU8L2Rpdj4nLFRJUF9aSVBEVU1QOiJTZWxlY3Qgb3IgZHJhZyAuemlwIERCIGR1bXAgaGVyZSIsRVJSX1pJUERVTVA6IkludmFsaWQgemlwIixMQkxfU1JDX0NSRURTOiJTb3VyY2UgY3JlZHMiLFBMQ19VTkFNRToiVXNlcm5hbWUiLEVSUl9VTk9fOiJDYW7igJl0IHN0YXJ0IHdpdGggXyIsUExDX1VQV0Q6IlBhc3N3b3JkIixFUlJfTk9QV0Q6IlBhc3N3b3JkIHJlcXVpcmVkIixUWFRfVUNUWDoiVXNlIC51c2VyQ3R4IHByb3Agd2l0aCBfYWRtaW4gcm9sZSIsTEJMX0ZJTFRFUjoiRmlsdGVyIixUQUdfRklMVEVSOnt0YWdzOltbe25hbWU6IkJ5IF9pZHMiLHZhbHVlOiJpZHMifSx7bmFtZToiRnVuY3Rpb24iLHZhbHVlOiJmbiIsY3NzOiJub3ppcCJ9LHtuYW1lOiJTa2lwIF9kZWxldGVkIix2YWx1ZToieGRlbCJ9XSx7bmFtZToiU2tpcCBkZG9jcyIsdmFsdWU6InhkZG9jIn0se25hbWU6IlNraXAgY29uZmxpY3RzIix2YWx1ZToieHJldnMiLGNzczoiemlwb25seSJ9XSxlbXB0eTp7Tm86IiJ9LHRhZ3NoaW06IiIsZ3JvdXBzaGltOiLigIkifSxMQkxfRE9DUzoiRG9jcyB0byBzeW5jIixQTENfRE9DUzoiSlNPTiBbXSBvZiBkb2MgX2lkLXMgdG8gcmVwbGljYXRlIixFUlJfRE9DUzoiTXVzdCBiZSBub24tZW1wdHkgSlNPTiBhcnJheSBvZiBzdHJpbmdzIixMQkxfRk46IkZpbHRlciBmbiIsUExDX0ZOOiJkZG9jTmFtZS9maWx0ZXJGbk5hbWUsIGZpbHRlciBmdW5jdGlvbiIsRVJSX0ZOX0RFU0lHTjoiTm8gX2Rlc2lnbiBwcmVmaXgsIG9ubHkgZGRvY05hbWUvZmlsdGVyIixFUlJfRk46IlZhbGlkIGZvcm1hdCBpcyBkZG9jTmFtZS9maWx0ZXIiLExCTF9RUlk6IlFyeSBwYXJhbXMiLFBMQ19RUlk6IlF1ZXJ5IHBhcmFtcyBmb3IgZmlsdGVyIGZuLCBKU09OIG9iamVjdCIsRVJSX1FSWToiTXVzdCBiZSBub24tZW1wdHkgSlNPTiBvYmplY3QiLExCTF9UTzoiVGFyZ2V0IERCIixQTENfVE86IkxvY2FsIG5hbWUgb3IgcmVtb3RlIFVSTCIsRVJSX1RPOiJJbnZhbGlkIERCIFVSTCIsRVJSX1RPX1VSTDoiTWFsZm9ybWVkIFVSTCIsRVJSX1RPX01JU1M6Ik1pc3NpbmcgbG9jYWwgdGFyZ2V0IERCIixFUlJfRFVQOiJTb3VyY2UgYW5kIFRhcmdldCBtdXN0IGJlIGRpZmZlcmVudCIsRVJSX0NSRURTOiJDcmVkZW50aWFscyByZXF1aXJlZCwgbGlrZSBodHRwOi8vdXNlcjpwd2RAYWJjLnh5ei/igKYiLExCTF9UR1RfQ1JFRFM6IlRhcmdldCBjcmVkcyIsRVJSX1VSRVFfQ1Q6IlJlcXVpcmVkIHdpdGggQ3JlYXRlIHRhcmdldCIsVFhUX05FV1RHVDoiQ3JlYXRlIHRhcmdldCIsVElQX1RHVF9ROiJOdW1iZXIgb2Ygc2hhcmRzLCBmb3IgbmV3bHkgY3JlYXRlZCBEQnMgb25seSIsVElQX1RHVF9OOiJOdW1iZXIgb2YgZGF0YSBjb3BpZXMgc3RvcmVkIGluIGEgY2x1c3RlciwgZm9yIG5ld2x5IGNyZWF0ZWQgREJzIG9ubHkiLFRYVF9DT1BZQUNMOiJDb3B5IHNvdXJjZSBEQiBzZWN1cml0eSAgZGVzY3JpcHRvcnMiLEJUTl9TVEFSVDpmdW5jdGlvbih4KXtyZXR1cm4iU3RhcnQgezF9IHJlcGxpY2F0aW9uezJ9Ii5hc3NpZ24oMT09eD8iIjp4LHg+MT8icyI6IiIpfSxCVE5fU1RBUlRfRE9DOmZ1bmN0aW9uKHgpe3JldHVybiJDcmVhdGUgezF9IGRvY3syfSBhbmQgc3RhcnQiLmFzc2lnbigxPT14PyIiOngseD4xPyJzIjoiIil9LEJUTl9TVEFSVF9aSVA6ZnVuY3Rpb24oeCl7cmV0dXJuIkR1bXAgezF9IERCezJ9IHRvIC56aXAiLmFzc2lnbigxPT14PyIiOngseD4xPyJzIjoiIil9LEJUTl9TVEFSVF9VTlpJUDpmdW5jdGlvbih4KXtyZXR1cm4iU3RhcnQgcmVzdG9yZSJ9LEJUTl9DQU5DRUw6IkNhbmNlbCIsQlROX0NMRUFSOiJDbGVhciIsTVNHX1NUQVJUOiJTdGFydGluZyB7MX0gc3luYyB0YXNrLi4uIixNU0dfT0tfT05DRToiUmVwbGljYXRpb24gZnJvbSB7MX0gZmluaXNoZWQiLE1TR19PS19ET0M6IkNyZWF0ZWQgX3JlcGxpY2F0b3IgZG9jIGZvciB7MX0gb3V0Ym91bmQgc3luYyIsTVNHX09LX0xJVkU6IkNyZWF0ZWQgYSB0YXNrIGZvciB7MX0gb3V0Ym91bmQgc3luYyIsTVNHX09LX09OQ0VfQkFDSzoiUmVwbGljYXRpb24gdG8gezF9IGZpbmlzaGVkIixNU0dfT0tfRE9DX0JBQ0s6IkNyZWF0ZWQgX3JlcGxpY2F0b3IgZG9jIGZvciB7MX0gaW5ib3VuZCBzeW5jIixNU0dfT0tfTElWRV9CQUNLOiJDcmVhdGVkIGEgdGFzayBmb3IgezF9IGluYm91bmQgc3luYyIsTVNHX0ZBSUw6IkZhaWxlZCBzdGFydGluZyB7MX0gc3luYy4gU2VydmVyIHJlc3BvbmRlZCDigJh7Mn06wqB7M33igJkiLE1TR19aSVBfUlVOTklORzoiQ2Fu4oCZdCBzdGFydCBuZXcgZHVtcCB3aGlsZSBhbm90aGVyIGR1bXAgdGFzayBpcyBydW5uaW5nLiBSZXRyeSB3aGVuIGl0IGZpbmlzaGVzLiIsRVJSX0pPQjp7VDoiRmFpbGVkIHsxfSBmb3IgezJ9IERCLiBTZXJ2ZXIgcmVzcG9uZGVkIOKAmHszfTrCoHs0feKAmSIsQzoiIENvbnRpbnVpbmcgdGFzay4iLEdFVDoicmVhZGluZyBkZG9jcyIsVVRJTFM6ImNyZWF0aW5nIHV0aWwgZGRvYyIsRkRET0M6InJlcGxpY2F0aW5nIGZpbHRlcmluZyBkZG9jIHRvIHRhcmdldCIsQUNMOiJjbG9uaW5nIHNlY3VyaXR5IG9iamVjdCB0byB0YXJnZXQiLFRPOiJjcmVhdGluZyBvdXRib3VuZCBzeW5jIixGUk9NOiJjcmVhdGluZyBpbmJvdW5kIHN5bmMifSxNdWx0aTp7VFhUX1RJVExFOiJOZXcgYmFja3VwL3Jlc3RvcmUgam9iIixUQUdfTU9ERTp7dGFnczpbW3tPbmNlOiJvbmNlIn0se0xpdmU6ImxpdmUifSx7WklQOiJ6aXAifV0sW3tuYW1lOiJVc2UgX3JlcGxpY2F0b3IgZG9jcyIsdmFsdWU6ImRvYyIsY3NzOiJub3ppcCJ9XSxbe25hbWU6IlR3byB3YXkiLHZhbHVlOiIyd2F5Iixjc3M6Im5vemlwIn1dXSxncm91cHNoaW06JzxzcGFuIGNsYXNzPSJvNjAgbm96aXAiPiZ0aGluc3A7wrcmdGhpbnNwOzwvc3Bhbj4nLHRhZ3NoaW06IiZ0aGluc3A7In0sTEJMX0lEOiJEb2NzIHByZWZpeCIsUExDX0lEOiJQcmVmaXggZm9yIHtfcmVwbGljYXRvcn0gZG9jcyIsRVJSX0lEX1VORDoiRG9jIG5hbWVzIGNhbuKAmXQgc3RhcnQgd2l0aCB1bmRlcnNjb3JlIixMQkxfRlJPTToiU291cmNlIERCcyIsUExDX0ZST006IlNlbGVjdCBEQnMgdG8gYmFja3VwL3Jlc3RvcmUiLEVSUl9GUk9NOiJBdCBsZWFzdCBvbmUgREIgcmVxdWlyZWQiLExCTF9VTlBSRUZJWDoiVW5wcmVmaXggREJzIixQTENfVU5QUkVGSVg6IlByZWZpeCB0byByZW1vdmUgZnJvbSBEQiBuYW1lcyIsVElQX1VOUFJFRklYOiJEQiBuYW1lcyBub3Qgc3RhcnRpbmcgd2l0aCBwcmVmaXggYXJlIGtlcHQgaW50YWN0IixMQkxfRklMVEVSOiJGaWx0ZXIiLFRBR19GSUxURVI6e3RhZ3M6W3tuYW1lOiJTa2lwIF9kZWxldGVkIix2YWx1ZToieGRlbCJ9LHtuYW1lOiJTa2lwIGRkb2NzIix2YWx1ZToieGRkb2MifSx7bmFtZToiU2tpcCBjb25mbGljdHMiLHZhbHVlOiJ4cmV2cyIsY3NzOiJ6aXBvbmx5In1dLGVtcHR5OntObzoiIn0sdGFnc2hpbToiIixncm91cHNoaW06IuKAiSJ9LExCTF9UTzoiVGFyZ2V0IENvdWNoIixQTENfVE86IlRhcmdldCBDb3VjaERCIHJvb3QgVVJMIixFUlJfVE86IlBsZWFzZSBwcm92aWRlIHZhbGlkIFVSTCIsTEJMX1RHVF9DUkVEUzoiVGFyZ2V0IGNyZWRzIixMQkxfUFJFRklYOiJBZGQgcHJlZml4IixQTENfUFJFRklYOiJTdHJpbmcgdG8gcHJlcGVuZCB0byB0YXJnZXQgREIgbmFtZXMiLFRYVF9ORVdUR1Q6IkNyZWF0ZSB0YXJnZXQgREJzIixUWFRfQ09QWUFDTDoiQ29weSBzZWN1cml0eSAgZGVzY3JpcHRvcnMgZnJvbSBzb3VyY2UgREJzIixNU0dfU1RBUlRJTkc6IkNyZWF0aW5nIHN5bmMgdGFza3MuLi4iLE1TR19TVEFSVDoiU3RhcnRpbmcgezF9IHN5bmMuLi4iLE1TR19GQUlMOiJGYWlsZWQgc3RhcnRpbmcgezF9IHN5bmMuIFNlcnZlciByZXNwb25kZWQg4oCYezJ9OsKgezN94oCZIn0sQ29weTp7VFhUX1RJVExFOiJSZXBsaWNhdGUvZHVtcCBkb2NzIixCVE5fU1RBUlQ6ZnVuY3Rpb24oeCxhLGIpe3JldHVybiJ6aXAiPT1iPyJEdW1wIHsxfSBkb2N7Mn0iLmFzc2lnbigxPT1hPyIiOmEsYT4xPyJzIjoiIik6IlJlcGxpY2F0ZSB7MX0gZG9jezJ9Ii5hc3NpZ24oMT09YT8iIjphLGE+MT8icyI6IiIpfX0sZW46e1RYVF9USVRMRToiTmV3IHJlcGxpY2F0aW9uL2R1bXAiLFRYVF9USVRMRV9TWU5DOiJOZXcgcmVwbGljYXRpb24iLFRYVF9USVRMRV9aRFU6IlJlc3RvcmUgZnJvbSBaSVAiLFRYVF9USVRMRV9aSVA6IkR1bXAgdG8gWklQIixUWFRfVElUTEVfRFVNUDoiUmVzdG9yZSBmcm9tIFpJUCBkdW1wIixMQkxfTU9ERToiTW9kZSIsVEFHX01PREU6e3RhZ3M6W1t7T25jZToib25jZSJ9LHtMaXZlOiJsaXZlIn0se1pJUDoiemlwIn1dLFt7bmFtZToiVXNlIF9yZXBsaWNhdG9yIGRvYyIsdmFsdWU6ImRvYyIsY3NzOiJub3ppcCJ9XSxbe25hbWU6IlR3byB3YXkiLHZhbHVlOiIyd2F5Iixjc3M6Im5vemlwIn1dXSxncm91cHNoaW06JzxzcGFuIGNsYXNzPSJvNjAgbm96aXAiPiZ0aGluc3A7wrcmdGhpbnNwOzwvc3Bhbj4nLHRhZ3NoaW06IiZ0aGluc3A7In0sVEFHX01PREVfQ09QWTp7dGFnczpbW3siUmVwbGljYXRlIGRvY3MiOiJvbmNlIn0seyJEdW1wIGRvY3MgdG8gWklQIjoiemlwIn1dXSxncm91cHNoaW06JzxzcGFuIGNsYXNzPSJvNjAgbm96aXAiPiZ0aGluc3A7wrcmdGhpbnNwOzwvc3Bhbj4nLHRhZ3NoaW06IiZ0aGluc3A7In0sTEJMX0lEOiJTeW5jIG5hbWUiLFBMQ19JRDoiRG9jIF9pZCBmb3Ige19yZXBsaWNhdG9yfSBEQiIsRVJSX0lEOiJSZXF1aXJlZCIsRVJSX0lEX1VORDoiQ2Fu4oCZdCBzdGFydCB3aXRoIHVuZGVyc2NvcmUiLExCTF9GUk9NOiJTb3VyY2UgREIiLFBMQ19GUk9NOiJMb2NhbCBuYW1lIG9yIHJlbW90ZSBVUkwiLEVSUl9GUk9NOiJFeGlzdGluZyBEQiBuYW1lIG9yIHZhbGlkIFVSTCIsRVJSX0ZST01fVVJMOiJJbnZhbGlkIFVSTCIsRVJSX1BXRDoiUGxlYXNlIHByb3ZpZGUgY3JlZGVudGlhbHMiLExCTF9aSVBEVU1QOiJTcmMgemlwIGR1bXAiLFBMQ19aSVBEVU1QOic8ZGl2IGNsYXNzPSJ0YWMiPjxzcGFuIGNsYXNzPSJmaS1hcmNoaXZlIG8zMCBmczMwMCI+PC9zcGFuPjxicj5TZWxlY3Qgb3IgZHJhZyAuemlwIERCIGR1bXAgb3IgLmpzb24gY2hhbmdlcyBmZWVkIGhlcmU8L2Rpdj4nLFRJUF9aSVBEVU1QOiJTZWxlY3Qgb3IgZHJhZyAuemlwIERCIGR1bXAgaGVyZSIsRVJSX1pJUERVTVA6IkludmFsaWQgemlwIixMQkxfU1JDX0NSRURTOiJTb3VyY2UgY3JlZHMiLFBMQ19VTkFNRToiVXNlcm5hbWUiLEVSUl9VTk9fOiJDYW7igJl0IHN0YXJ0IHdpdGggXyIsUExDX1VQV0Q6IlBhc3N3b3JkIixFUlJfTk9QV0Q6IlBhc3N3b3JkIHJlcXVpcmVkIixUWFRfVUNUWDoiVXNlIC51c2VyQ3R4IHByb3Agd2l0aCBfYWRtaW4gcm9sZSIsTEJMX0ZJTFRFUjoiRmlsdGVyIixUQUdfRklMVEVSOnt0YWdzOltbe25hbWU6IkJ5IF9pZHMiLHZhbHVlOiJpZHMifSx7bmFtZToiRnVuY3Rpb24iLHZhbHVlOiJmbiIsY3NzOiJub3ppcCJ9LHtuYW1lOiJTa2lwIF9kZWxldGVkIix2YWx1ZToieGRlbCJ9XSx7bmFtZToiU2tpcCBkZG9jcyIsdmFsdWU6InhkZG9jIn0se25hbWU6IlNraXAgY29uZmxpY3RzIix2YWx1ZToieHJldnMiLGNzczoiemlwb25seSJ9XSxlbXB0eTp7Tm86IiJ9LHRhZ3NoaW06IiIsZ3JvdXBzaGltOiLigIkifSxMQkxfRE9DUzoiRG9jcyB0byBzeW5jIixQTENfRE9DUzoiSlNPTiBbXSBvZiBkb2MgX2lkLXMgdG8gcmVwbGljYXRlIixFUlJfRE9DUzoiTXVzdCBiZSBub24tZW1wdHkgSlNPTiBhcnJheSBvZiBzdHJpbmdzIixMQkxfRk46IkZpbHRlciBmbiIsUExDX0ZOOiJkZG9jTmFtZS9maWx0ZXJGbk5hbWUsIGZpbHRlciBmdW5jdGlvbiIsRVJSX0ZOX0RFU0lHTjoiTm8gX2Rlc2lnbiBwcmVmaXgsIG9ubHkgZGRvY05hbWUvZmlsdGVyIixFUlJfRk46IlZhbGlkIGZvcm1hdCBpcyBkZG9jTmFtZS9maWx0ZXIiLExCTF9RUlk6IlFyeSBwYXJhbXMiLFBMQ19RUlk6IlF1ZXJ5IHBhcmFtcyBmb3IgZmlsdGVyIGZuLCBKU09OIG9iamVjdCIsRVJSX1FSWToiTXVzdCBiZSBub24tZW1wdHkgSlNPTiBvYmplY3QiLExCTF9UTzoiVGFyZ2V0IERCIixQTENfVE86IkxvY2FsIG5hbWUgb3IgcmVtb3RlIFVSTCIsRVJSX1RPOiJJbnZhbGlkIERCIFVSTCIsRVJSX1RPX1VSTDoiTWFsZm9ybWVkIFVSTCIsRVJSX1RPX01JU1M6Ik1pc3NpbmcgbG9jYWwgdGFyZ2V0IERCIixFUlJfRFVQOiJTb3VyY2UgYW5kIFRhcmdldCBtdXN0IGJlIGRpZmZlcmVudCIsRVJSX0NSRURTOiJDcmVkZW50aWFscyByZXF1aXJlZCwgbGlrZSBodHRwOi8vdXNlcjpwd2RAYWJjLnh5ei/igKYiLExCTF9UR1RfQ1JFRFM6IlRhcmdldCBjcmVkcyIsRVJSX1VSRVFfQ1Q6IlJlcXVpcmVkIHdpdGggQ3JlYXRlIHRhcmdldCIsVFhUX05FV1RHVDoiQ3JlYXRlIHRhcmdldCIsVElQX1RHVF9ROiJOdW1iZXIgb2Ygc2hhcmRzLCBmb3IgbmV3bHkgY3JlYXRlZCBEQnMgb25seSIsVElQX1RHVF9OOiJOdW1iZXIgb2YgZGF0YSBjb3BpZXMgc3RvcmVkIGluIGEgY2x1c3RlciwgZm9yIG5ld2x5IGNyZWF0ZWQgREJzIG9ubHkiLFRYVF9DT1BZQUNMOiJDb3B5IHNvdXJjZSBEQiBzZWN1cml0eSAgZGVzY3JpcHRvcnMiLEJUTl9TVEFSVDpmdW5jdGlvbih4KXtyZXR1cm4iU3RhcnQgezF9IHJlcGxpY2F0aW9uezJ9Ii5hc3NpZ24oMT09eD8iIjp4LHg+MT8icyI6IiIpfSxCVE5fU1RBUlRfRE9DOmZ1bmN0aW9uKHgpe3JldHVybiJDcmVhdGUgezF9IGRvY3syfSBhbmQgc3RhcnQiLmFzc2lnbigxPT14PyIiOngseD4xPyJzIjoiIil9LEJUTl9TVEFSVF9aSVA6ZnVuY3Rpb24oeCl7cmV0dXJuIkR1bXAgezF9IERCezJ9IHRvIC56aXAiLmFzc2lnbigxPT14PyIiOngseD4xPyJzIjoiIil9LEJUTl9TVEFSVF9VTlpJUDpmdW5jdGlvbih4KXtyZXR1cm4iU3RhcnQgcmVzdG9yZSJ9LEJUTl9DQU5DRUw6IkNhbmNlbCIsQlROX0NMRUFSOiJDbGVhciIsTVNHX1NUQVJUOiJTdGFydGluZyB7MX0gc3luYyB0YXNrLi4uIixNU0dfT0tfT05DRToiUmVwbGljYXRpb24gZnJvbSB7MX0gZmluaXNoZWQiLE1TR19PS19ET0M6IkNyZWF0ZWQgX3JlcGxpY2F0b3IgZG9jIGZvciB7MX0gb3V0Ym91bmQgc3luYyIsTVNHX09LX0xJVkU6IkNyZWF0ZWQgYSB0YXNrIGZvciB7MX0gb3V0Ym91bmQgc3luYyIsTVNHX09LX09OQ0VfQkFDSzoiUmVwbGljYXRpb24gdG8gezF9IGZpbmlzaGVkIixNU0dfT0tfRE9DX0JBQ0s6IkNyZWF0ZWQgX3JlcGxpY2F0b3IgZG9jIGZvciB7MX0gaW5ib3VuZCBzeW5jIixNU0dfT0tfTElWRV9CQUNLOiJDcmVhdGVkIGEgdGFzayBmb3IgezF9IGluYm91bmQgc3luYyIsTVNHX0ZBSUw6IkZhaWxlZCBzdGFydGluZyB7MX0gc3luYy4gU2VydmVyIHJlc3BvbmRlZCDigJh7Mn06wqB7M33igJkiLE1TR19aSVBfUlVOTklORzoiQ2Fu4oCZdCBzdGFydCBuZXcgZHVtcCB3aGlsZSBhbm90aGVyIGR1bXAgdGFzayBpcyBydW5uaW5nLiBSZXRyeSB3aGVuIGl0IGZpbmlzaGVzLiIsRVJSX0pPQjp7VDoiRmFpbGVkIHsxfSBmb3IgezJ9IERCLiBTZXJ2ZXIgcmVzcG9uZGVkIOKAmHszfTrCoHs0feKAmSIsQzoiIENvbnRpbnVpbmcgdGFzay4iLEdFVDoicmVhZGluZyBkZG9jcyIsVVRJTFM6ImNyZWF0aW5nIHV0aWwgZGRvYyIsRkRET0M6InJlcGxpY2F0aW5nIGZpbHRlcmluZyBkZG9jIHRvIHRhcmdldCIsQUNMOiJjbG9uaW5nIHNlY3VyaXR5IG9iamVjdCB0byB0YXJnZXQiLFRPOiJjcmVhdGluZyBvdXRib3VuZCBzeW5jIixGUk9NOiJjcmVhdGluZyBpbmJvdW5kIHN5bmMifSxNdWx0aTp7VFhUX1RJVExFOiJOZXcgYmFja3VwL3Jlc3RvcmUgam9iIixUQUdfTU9ERTp7dGFnczpbW3tPbmNlOiJvbmNlIn0se0xpdmU6ImxpdmUifSx7WklQOiJ6aXAifV0sW3tuYW1lOiJVc2UgX3JlcGxpY2F0b3IgZG9jcyIsdmFsdWU6ImRvYyIsY3NzOiJub3ppcCJ9XSxbe25hbWU6IlR3byB3YXkiLHZhbHVlOiIyd2F5Iixjc3M6Im5vemlwIn1dXSxncm91cHNoaW06JzxzcGFuIGNsYXNzPSJvNjAgbm96aXAiPiZ0aGluc3A7wrcmdGhpbnNwOzwvc3Bhbj4nLHRhZ3NoaW06IiZ0aGluc3A7In0sTEJMX0lEOiJEb2NzIHByZWZpeCIsUExDX0lEOiJQcmVmaXggZm9yIHtfcmVwbGljYXRvcn0gZG9jcyIsRVJSX0lEX1VORDoiRG9jIG5hbWVzIGNhbuKAmXQgc3RhcnQgd2l0aCB1bmRlcnNjb3JlIixMQkxfRlJPTToiU291cmNlIERCcyIsUExDX0ZST006IlNlbGVjdCBEQnMgdG8gYmFja3VwL3Jlc3RvcmUiLEVSUl9GUk9NOiJBdCBsZWFzdCBvbmUgREIgcmVxdWlyZWQiLExCTF9VTlBSRUZJWDoiVW5wcmVmaXggREJzIixQTENfVU5QUkVGSVg6IlByZWZpeCB0byByZW1vdmUgZnJvbSBEQiBuYW1lcyIsVElQX1VOUFJFRklYOiJEQiBuYW1lcyBub3Qgc3RhcnRpbmcgd2l0aCBwcmVmaXggYXJlIGtlcHQgaW50YWN0IixMQkxfRklMVEVSOiJGaWx0ZXIiLFRBR19GSUxURVI6e3RhZ3M6W3tuYW1lOiJTa2lwIF9kZWxldGVkIix2YWx1ZToieGRlbCJ9LHtuYW1lOiJTa2lwIGRkb2NzIix2YWx1ZToieGRkb2MifSx7bmFtZToiU2tpcCBjb25mbGljdHMiLHZhbHVlOiJ4cmV2cyIsY3NzOiJ6aXBvbmx5In1dLGVtcHR5OntObzoiIn0sdGFnc2hpbToiIixncm91cHNoaW06IuKAiSJ9LExCTF9UTzoiVGFyZ2V0IENvdWNoIixQTENfVE86IlRhcmdldCBDb3VjaERCIHJvb3QgVVJMIixFUlJfVE86IlBsZWFzZSBwcm92aWRlIHZhbGlkIFVSTCIsTEJMX1RHVF9DUkVEUzoiVGFyZ2V0IGNyZWRzIixMQkxfUFJFRklYOiJBZGQgcHJlZml4IixQTENfUFJFRklYOiJTdHJpbmcgdG8gcHJlcGVuZCB0byB0YXJnZXQgREIgbmFtZXMiLFRYVF9ORVdUR1Q6IkNyZWF0ZSB0YXJnZXQgREJzIixUWFRfQ09QWUFDTDoiQ29weSBzZWN1cml0eSAgZGVzY3JpcHRvcnMgZnJvbSBzb3VyY2UgREJzIixNU0dfU1RBUlRJTkc6IkNyZWF0aW5nIHN5bmMgdGFza3MuLi4iLE1TR19TVEFSVDoiU3RhcnRpbmcgezF9IHN5bmMuLi4iLE1TR19GQUlMOiJGYWlsZWQgc3RhcnRpbmcgezF9IHN5bmMuIFNlcnZlciByZXNwb25kZWQg4oCYezJ9OsKgezN94oCZIn0sQ29weTp7VFhUX1RJVExFOiJSZXBsaWNhdGUvZHVtcCBkb2NzIixCVE5fU1RBUlQ6ZnVuY3Rpb24oeCxhLGIpe3JldHVybiJ6aXAiPT1iPyJEdW1wIHsxfSBkb2N7Mn0iLmFzc2lnbigxPT1hPyIiOmEsYT4xPyJzIjoiIik6IlJlcGxpY2F0ZSB7MX0gZG9jezJ9Ii5hc3NpZ24oMT09YT8iIjphLGE+MT8icyI6IiIpfX0sRVJSX1pJUF9TVFJFQU06IkZhaWxlZCB0byBzdGFydCBzdHJlYW1pbmcuIFNlZSBjb25zb2xlIGZvciBkZXRhaWxzLiIsRVJSX1VOWklQX0ZBSUw6IlVuemlwIGZhaWxlZC4gU2VlIGNvbnNvbGUgZm9yIGRldGFpbHMuIixFUlJfVU5aSVBfQUJSVDoiVW56aXAgYW5kIHNhdmUgYWJvcnRlZC4iLE1TR19VTlpJUF9PSzoiRHVtcCByZXN0b3JlIGNvbXBsZXRlZC4iLExCTF9aSVBPUFQ6IlN0b3JlIERCIG1ldGEiLFRBR19aSVBPUFQ6e3RhZ3M6W3tuYW1lOiJTZWN1cml0eSBvYmplY3RzIix2YWx1ZToiYWNsIn0se25hbWU6IlNoYXJkaW5nIHNldHRpbmdzIix2YWx1ZToicW5wIn1dLHRhZ3NoaW06IiIsZ3JvdXBzaGltOiLigIkifSxFUlJfVU5aSVA6IkZhaWxlZCB1bnppcHBpbmc6IHsxfSIsRVJSX1dST05HWklQOiJaaXAgZmlsZSBwcm92aWRlZCBpcyBub3QgYSBQaG90b24gQ291Y2hEQiBkdW1wIixNU0dfVU5aSVBFTkQ6IlppcCBmaWxlIGVuZGVkLCB7MX0gZmlsZXMgcGlwZWQsIHsyfSBmaWxlcyBkcm9wcGVkIixFUlJfVU5aSVBOVEY6IkVycm9yIG5vdGlmeWluZyB1bnppcHBlZCBkb2MgcHVtcHMiLE1TR19SRUFEUEFVU0VEOiJcblJlYWRlciBwYXVzZWQsIHsxfSBmaWxlcyBpbiB0aGUgYnVmZmVyXG4iLE1TR19SRUFEUkU6IlxuUmVhZGVyIHJlc3RhcnRlZFxuIixFUlJfSl9KU09OOiJOb3QgYSBKU09OIGZpbGUiLEVSUl9KX0ZFRUQ6Ik5vdCBhIF9jaGFuZ2VzIGZlZWQgb3IgZG9jcyBhcmUgbWlzc2luZyIsRVJSX0pfRklMRVM6IkRvYyBhdHRhY2htZW50cyBoYXZlIG5vIGRhdGEiLExCTF9aSVBGSUxFOiJUYXJnZXQgZmlsZSIsUExDX1pJUEZJTEU6IlRhcmdldCAuemlwIGFyY2hpdmUgZmlsZSBuYW1lIixFUlJfTk9aSVA6IllvdXIgYnJvd3NlciBkb2VzbuKAmXQgaGF2ZSBhbGwgZmVhdHVyZXMgcmVxdWlyZWQgdG8gY3JlYXRlIFpJUCBmaWxlIG9uIHRoZSBmbHksIHNvcnJ5LiBVc2UgQ0xJIHRvb2xzIHRvIGR1bXAgeW91ciBkYXRhLiIsTVNHX1pJUF9CTE9COic8c3BhbiBjbGFzcz0iZGliIHcyMCB0YWMgbWwtMjAgZmktYWxlcnQgcmVkMSI+PC9zcGFuPllvdXIgYnJvd3NlciBkb2VzbuKAmXQgYWxsb3cgY2xpZW50LXNpZGUgc3RyZWFtaW5nIHRvIGEgZmlsZS4gSXQgbWVhbnMgYWxsIGRhdGEgc2hvdWxkIGZpdCBpbiBtZW1vcnksIHNvIGRvbnTigJl0IGR1bXAgbW9yZSB0aGFuIHNldmVyYWwgaHVuZHJlZHMgb2YgbWVnYWJheXRlcy4gJyxNU0dfWklQX1dBUk46IlpJUCBiYWNrdXAgaXMgZXhwZXJpbWVudGFsLiBVc2UgcHJvdmVuIENMSSB0b29scyBmb3LCoERCcyBsYXJnZXIgdGhhbiBzZXZlcmFswqBHQnMsIG9ywqBpbiBjYXNlIHlvdXIgbmV0d29yayBjb25uZWN0aW9uIGlzwqBmbGFreS4iLExCTF9VTlpJUE9QVDoiVW56aXAgb3B0aW9ucyIsVEFHX1VOWklQT1BUOnt0YWdzOlt7bmFtZToiQ3JlYXRlIERCcyIsdmFsdWU6ImNyZWF0ZSJ9LHtuYW1lOiJQdXQgQUNMIix2YWx1ZToiYWNsIn0se25hbWU6IlNraXAgZGVsZXRlZCIsdmFsdWU6InhkZWwifSx7bmFtZToiU2tpcCBjb25mbGljdHMiLHZhbHVlOiJ4cmV2cyJ9XSx0YWdzaGltOiIiLGdyb3Vwc2hpbToi4oCJIn0sTEJMX1VOWklQREJTOiJSZXN0b3JlIERCcyIsVW56aXBEQlJvdzp7VElQX1JFTU9WRToiRG8gbm90IHJlc3RvcmUgdGhpcyBEQiIsUExDX1RHVDoiVGFyZ2V0IERCIG5hbWUiLE1TR19ORVdEQjoiTmV3IixNU0dfTk9EQjoiTm8gREIiLEVSUl9OT0RCOiJEQiBkb2VzbuKAmXQgZXhpc3QiLEVSUl9EQkNIQVJTOiJPbmx5IGxvd2VyY2FzZSBhLXosIDAtOSBhbmQgIF8kKCkrLSBhbGxvd2VkIixFUlJfREIxQ0hBUjoiTXVzdCBzdGFydCB3aXRoIGEteiJ9LER1bXBaaXA6e1RYVF9USVRMRToiRHVtcCB0byB6aXAiLEJUTl9BQk9SVDoiQWJvcnQgemlwIixFUlJfREJfUkVBRDonRmFpbGVkIHJlYWRpbmcgPHNwYW4gY2xhc3M9ImZ3NDAwIj57MX08L3NwYW4+IERCLiBEdW1wIGFib3J0ZWQuJyxNU0dfVEVSTUJZVToiVGVybWluYXRlZCBieSB1c2VyIixFUlJfRE9DTElTVDoiRmFpbGVkIHJlYWRpbmcgZG9jIGxpc3QiLEVSUl9GSUxFUkVBRDoiRmF0YWwgZmFpbHVyZSByZWFkaW5nIHsxfSwgZHVtcCBhYm9ydGVkLiIsTVNHX0RVTVBET05FOiJaSVAgZHVtcCB3YXMgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQuIixNU0dfVE9UQUwxOmZ1bmN0aW9uKHgsYSl7cmV0dXJuInsxfSBkb2N7Mn0gb2YgezN9Ii5hc3NpZ24oeCx4PjE/InMiOiIiLGEpfSxNU0dfVE9UQUwyOmZ1bmN0aW9uKHgsYSl7cmV0dXJuInsxfSBkb2NzLCB7Mn0gcmF3Ii5hc3NpZ24oeCxhLmJ5dGVzKDIpLnJlcGxhY2UoL0IkLywiYiIpKX19LFVuZHVtcDp7VFhUX1RJVExFOiJSZXN0b3JlIGZyb20gdGhlIGR1bXAiLEJUTl9BQk9SVDoiQWJvcnQgcmVzdG9yZSIsTVNHX0ZBSUxOT1RFOiJ7MX1SZXN0b3JlIGFib3J0ZWQsIHsyfSBvZiB7M30gZG9jcyBzYXZlZC4iLEVSUl9TQVZFRE9DOiJGYWlsZWQgc2F2aW5nIGRvYyB7MX0uICIsTVNHX1RPVEFMMTpmdW5jdGlvbih4KXtyZXR1cm4iezF9IGRvY3syfSIuYXNzaWduKHgseD4xPyJzIjoiIil9LE1TR19UT1RBTDI6ZnVuY3Rpb24oeCxhKXtyZXR1cm4iezF9IGRvY3syfSwgezN9IHJhdyIuYXNzaWduKHgseD4xPyJzIjoiIixhLmJ5dGVzKDIpLnJlcGxhY2UoL0IkLywiYiIpKX19fX0sZGF0YTp7dGFzazoiTXVsdGkiLGRvYzoiIixtb2RlOlsib25jZSJdLGR1bXBPbmx5OiExLHNyYzp7dXJsOiIiLGRiczpbXSx1c2VyOiIiLHB3ZDoiIix1Y3R4OltdLHVucHJlZml4OiIiLGZpbHRlcjpbXSxmbjoiIixpZHM6W10scXVlcnk6e30semlwOiExLG9wdHM6W119LHRndDp7dXJsOiIiLHVzZXI6IiIscHdkOiIiLHByZWZpeDoiIixjcmVhdGU6ITEscToiIixuOiIiLGFjbDohMSx6aXBmaWxlOiIiLG9wdHM6WyJjcmVhdGUiXX0sdGFza3M6W119LERCczpbXSxpc0NvdWNoMjohMSxjYW5aaXA6bnVsbCxjYW5TdHJlYW06ITAsaXNTdHJlYW1pbmc6ITEsVW56aXBUbzpbXSxVbnppcERCbWFwOm51bGwsZG9jc1RvU2F2ZTpbXSxVbnppcFN0cmVhbTp7fSxVbnppcE9wdHM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kYXRhLnRndC5vcHRzfSx1aTp7IiNydGl0bGUiOntiaW5kOmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMubGFuZztyZXR1cm4geC5tb2RlKyIiPT0iemlwIj94LnNyYy56aXA/YS5UWFRfVElUTEVfRFVNUDp4LnNyYy5kYnMubGVuZ3RofHx4LnNyYy51cmw/YS5UWFRfVElUTEVfWklQOmEuVFhUX1RJVExFX1pEVTphLlRYVF9USVRMRV9TWU5DfSx3YXRjaDpbIiNybW9kZSIsIiNyemlwZHVtcCIsIiNyc291cmNlIiwiI3Jzb3VyY2VzIl19LCIjcm1vZGUiOntpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj0oYS5kYXRhLE9iamVjdC5jbG9uZShhLmxhbmdbIkNvcHkiPT10aGlzLmRhdGEudGFzaz8iVEFHX01PREVfQ09QWSI6IlRBR19NT0RFIl0sITApKTsiemlwIiE9dGhpcy5kYXRhLm1vZGUmJiJDb3B5IiE9dGhpcy5kYXRhLnRhc2smJihiLnRhZ3NbMF09Yi50YWdzWzBdLnJlbW92ZSh4PT4iemlwIj09T2JqZWN0LnZhbHVlcyh4KVswXSkpLHgudGFncyhiKSx0aGlzLmRhdGEuZHVtcE9ubHkmJngucGFyZW50KCkuYWRkQ2xhc3MoImhpZGUiKX0sYmluZDpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXM7aWYobnVsbCE9YSYmKHgubW9kZT1hLmxlbmd0aCYmImRvYyIhPWE/YTpbIm9uY2UiXS5jb25jYXQoYSkpLHgubW9kZS5pbmRleE9mKCJ6aXAiKT4tMSl7eC5tb2RlOyEwPT09Yi5jYW5aaXA/eC5tb2RlLmxlbmd0aD4xJiYoeC5tb2RlPVsiemlwIl0pOiExPT09Yi5jYW5aaXA/YygpOm51bGw9PT1iLmNhblppcCYmZCgpLnRoZW4oZnVuY3Rpb24oeCl7Yi5QaG8oKS5jYW5aaXA9eCxiLmNhblppcD14LHh8fChjKCksYi5teS5yZWNhbGMoIiNybW9kZSIpKX0pfXJldHVybiJ6aXAiPT14Lm1vZGVbMF0/KHgudGd0LnppcGZpbGU9eC50Z3QuemlwZmlsZXx8KCJTeW5jIj09eC50YXNrP3guc3JjLnVybCsiLSI6ImR1bXAtIikrRGF0ZS5ub3coKS50b1N0cmluZygzNikrIi56aXAiLGIubXkucm9vdCgpLmFkZENsYXNzKCJoYXN6aXAiKSk6Yi5teS5yb290KCkucmVtb3ZlQ2xhc3MoImhhc3ppcCIpLHgubW9kZTtmdW5jdGlvbiBjKCl7InppcCI9PXgubW9kJiZ4LmR1bXBPbmx5P2IubXkuY2FuY2VsKCk6eC5tb2RlPVsib25jZSJdLGN3LmxpYi5ub3RlKGIubGFuZy5FUlJfTk9aSVAsImVycm9yIil9ZnVuY3Rpb24gZCgpe3ZhciB4PSQuRGVmZXJyZWQoKSxhPWIubXkuZmluZCgiI3ppcC10ZXN0ZXIiKTtyZXR1cm4gYS5teShiLlppcFRlc3Rlcix7fSkudGhlbihmdW5jdGlvbihiKXt4LnJlc29sdmUoITApLGZ1bmN0aW9uKCl7YS5teSgicmVtb3ZlIil9LmRlbGF5KDIwMCl9KS5mYWlsKGZ1bmN0aW9uKGEpe3gucmVzb2x2ZSghMSl9KSx4LnByb21pc2UoKX19fSwiI3hzc2hpbSI6e2Nzczp7aGlkZTpmdW5jdGlvbigpe3JldHVybiExfX19LCIjcmRvY2lkIjp7YmluZDoiZG9jIixjaGVjazpmdW5jdGlvbih4LGEpe2lmKHgubW9kZS5maW5kKCJkb2MiKSlyZXR1cm4gYT8iXyI9PWFbMF0/dGhpcy5sYW5nLkVSUl9JRF9VTkQ6dm9pZCAwOnRoaXMubGFuZy5FUlJfSUR9LGNzczp7c2hpZGU6ZnVuY3Rpb24oeCl7cmV0dXJuIXgubW9kZS5maW5kKCJkb2MiKX19LHdhdGNoOlsiI3Jtb2RlIl19LCIjYnRuLXN0YXJ0Ijp7ZGVsYXk6NjAsYmluZDpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXM7aWYobnVsbCE9YSlpZigiemlwIj09eC5tb2RlKXt2YXIgYz1iLm15LnJvb3QoKS5wYXJlbnRzKCIjbC1ib2FyZCIpLmVxKDApLGQ9Yy5maW5kKCIjbC1waXZvdC1yYiIpO2lmKGQuZGF0YSgibW9kYWwiKSljdy5saWIubm90ZShiLmxhbmcuTVNHX1pJUF9SVU5OSU5HKTtlbHNlIGlmKHguc3JjLnppcCl7dHJ5e2IucnVuVW5kdW1wKGQsYykuYWx3YXlzKGZ1bmN0aW9uKCl7Yi5jbGVhbkRhdGEoeCl9KX1jYXRjaCh4KXtjb25zb2xlLmxvZyh4KX1iLkRvbnRTdG9wVW56aXA9ITAsYi5teS5jYW5jZWwoKX1lbHNlIGIucnVuWmlwKGQsYykudGhlbihmdW5jdGlvbigpe2IuY2xlYW5EYXRhKHgpfSksYi5teS5jYW5jZWwoKX1lbHNlIGIucnVuVGFza3MoKS50aGVuKGZ1bmN0aW9uKGEpe3ZhciBjPSEwO2EuZm9yRWFjaChmdW5jdGlvbih4KXsicmVqZWN0ZWQiPT14LnN0YXRlJiYoYz0hMSl9KSxjJiZiLmNsZWFuRGF0YSh4KSxPYmplY3QuaXNGdW5jdGlvbihiLlJlc3RhcnRQb2xsKSYmYi5SZXN0YXJ0UG9sbC5kZWJvdW5jZShiLmlzQ291Y2gyPzFlMzoxMDApKCl9KSxiLm15LmNhbmNlbCgpO3JldHVybiB0aGlzLmxhbmdbInppcCI9PXgubW9kZSYmIkNvcHkiIT14LnRhc2s/eC5zcmMuemlwfHx4LmR1bXBPbmx5JiYheC5zcmMuZGJzLmxlbmd0aCYmIXguc3JjLnVybD8iQlROX1NUQVJUX1VOWklQIjoiQlROX1NUQVJUX1pJUCI6eC5tb2RlLmZpbmQoImRvYyIpPyJCVE5fU1RBUlRfRE9DIjoiQlROX1NUQVJUIl0oKHguc3JjLmRicy5sZW5ndGh8fDEpKih4Lm1vZGUuZmluZCgiMndheSIpPzI6MSkseC5zcmMuaWRzLmxlbmd0aCx4Lm1vZGUpfSxjc3M6eyI6ZGlzYWJsZWQiOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIXRoaXMubXkudmFsaWQoKXx8KCEoeC5zcmMudXJsfHx4LnNyYy5kYnMubGVuZ3RofHx4LnNyYy56aXApfHwoInppcCI9PXgubW9kZT94LnNyYy5maWx0ZXIuZmluZCgiaWRzIikmJiF4LnNyYy5pZHMubGVuZ3RofHwheC50Z3QuemlwZmlsZSYmIXguc3JjLnppcDoheC50Z3QudXJsKSl9fSx3YXRjaDpbIiNyZG9jaWQiLCIjcnNvdXJjZSIsIiNyc291cmNlcyIsIiNyc2xvZ2luIiwiI3JzcGFzcyIsIiNyZm4iLCIjcmRvY3MiLCIjcnF1ZXJ5IiwiI3J0YXJnZXQiLCIjcnRsb2dpbiIsIiNydHBhc3MiLCIjcnR6aXBmaWxlIiwiI3J0dW56aXBkYnMiXX0sIiNidG4tY2xlYXIiOntkZWxheTo2MCxiaW5kOmZ1bmN0aW9uKHgsYSl7bnVsbCE9YSYmKHRoaXMuY2xlYW5EYXRhKHgpLHRoaXMubXkucmVkcmF3KCkpfSxjc3M6eyJzZWxmOmhpZGUiOmZ1bmN0aW9uKHgpe3JldHVybiJDb3B5Ij09eC50YXNrfHx4LmR1bXBPbmx5JiYiemlwIj09eC5tb2RlfX19LCIjYnRuLWNhbmNlbCI6ZnVuY3Rpb24oeCxhKXtudWxsIT1hJiYodGhpcy5jbGVhbkRhdGEoeCksdGhpcy5teS5jYW5jZWwoKSl9LCIjeHNvdXJjZSI6e2Nzczp7aGlkZTpmdW5jdGlvbih4KXtyZXR1cm4iU3luYyIhPXgudGFza3x8InppcCI9PXgubW9kZSYmeC5zcmMuemlwfHwiemlwIj09eC5tb2RlJiZ4LmR1bXBPbmx5JiYheC5zcmMudXJsfX0sd2F0Y2g6WyIjcnppcGR1bXAiXX0sIiNyc291cmNlIjp7ZGVsYXk6MjAsaW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzO2Z1bmN0aW9uIGIoYixjKXthLm15LmNoZWNrKCIjcnNvdXJjZSIpLGEuZml4SGVpZ2h0LmRlYm91bmNlKDEwMCkoeCl9IlN5bmMiPT1hLmRhdGEudGFzayYmeC5hdXRvY29tcGxldGUoe2RlbGF5OjAsc291cmNlOnRoaXMuREJzLGNsb3NlOmZ1bmN0aW9uKHgsYil7YS5teS5jaGVjaygiI2J0bi1mb2xkc3JjIil9LmRlYm91bmNlKDEwKSxzZWxlY3Q6Yi5kZWJvdW5jZSgxMCksYXBwZW5kVG86YS5teS5yb290KCksbWluTGVuZ3RoOjFlNH0pfSxiaW5kOmZ1bmN0aW9uKHgsYSl7aWYobnVsbD09YSlyZXR1cm4geC5zcmMudXJsO3ZhciBiPWEucmVwbGFjZSgvW1xyXG5cdFxzXS9nLCIiKSxjPWIubWF0Y2goL1wvXC8oW15cLzpcc10rKTooW15cLzpAXHNdKylALisvKTtyZXR1cm4gYyYmMz09Yy5sZW5ndGg/KHguc3JjLnVzZXI9Y1sxXSx4LnNyYy5wd2Q9Y1syXSx4LnNyYy51cmw9Yi5yZXBsYWNlKGNbMV0rIjoiK2NbMl0rIkAiLCIiKSk6eC5zcmMudXJsPWIseC5zcmMudXJsfSxjaGVjazpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXM7aWYoYSl7dmFyIGM9dGhpcy5sYW5nO3JldHVybiBiLmlzVVJMKGEpJiYhYi5pc1ZhbGlkVVJMKGEpP2IubGFuZy5FUlJfRlJPTV9VUkw6IlN5bmMiIT14LnRhc2t8fGIuUGhvKFsiQWxsIixhXSl8fGIuaXNCdWNrZXRVUkwoYSk/dm9pZCAwOmMuRVJSX0ZST019fSxsaXN0ZW46e2RibGlzdDpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXM7aWYoYSlyZXR1cm4gZnVuY3Rpb24oKXtiLm15LmNoZWNrKCIjcnNvdXJjZSIpfS5kZWJvdW5jZSgyMDApKCksITB9fX0sIiNyemlwZHVtcCI6e2RlbGF5OjIwLGJpbmQ6ZnVuY3Rpb24oeCxhLGIpe2lmKG51bGwhPWEmJmEpe3ZhciBjPXRoaXMsZD1iWzBdLmZpbGVzWzBdO2lmKGQmJiFjLmlzU3RyZWFtaW5nKXt2YXIgZT0vXC5qc29uJC9pLnRlc3QoZC5uYW1lKyIiKSxmPSFlJiYhIWQuc3RyZWFtJiZkLnNpemU+NWU2O3guc3JjLnppcD1kLm5hbWUuc3BsaXQoIi8iKS5sYXN0KCk7dHJ5eyhlP2Muc3RhcnRVbmZlZWRTeW5jKGQpOmY/Yy5zdGFydFVuemlwU3RyZWFtKGQpOmMuc3RhcnRVbnppcFN5bmMoZCkpLnRoZW4oZnVuY3Rpb24oYSl7dmFyIGI9YS5pbmZvOyQuZXh0ZW5kKGMuVW56aXBTdHJlYW0sT2JqZWN0LnJlamVjdChhLFsiaW5mbyJdKSksYy5VbnppcFRvPWIuZGJzLGMubXkucmVjYWxjKCIjcnR1bnppcGRicyIpLGIuZGJzLm1hcCh4PT54LnNlY3VyaXR5PzE6MCkuc3VtKCkmJmZ1bmN0aW9uKCl7eC50Z3Qub3B0cz14LnRndC5vcHRzLmFkZCgiYWNsIikuc2xpY2UoMCksYy5teS5yZWNhbGMoIiNydHVuemlwb3B0cyIpfS5kZWxheSg1MCl9KS5mYWlsKGZ1bmN0aW9uKHgsYSl7Y3cubGliLm5vdGUoYy5sYW5nLkVSUl9VTlpJUC5hc3NpZ24oeCksImVycm9yIiw2ZTMpLGMubXkuY2FuY2VsKCl9KS5hbHdheXMoZnVuY3Rpb24oKXtiLnZhbChudWxsKSxiLnRyaWdnZXIoImNoZWNrIil9KX1jYXRjaCh4KXtjb25zb2xlLmxvZyh4KSxjdy5saWIubm90ZShjLmxhbmcuRVJSX1VOWklQLmFzc2lnbih4KyIiKSwiZXJyb3IiLDZlMyksYy5teS5jYW5jZWwoKX19fX0sY3NzOntoaWRlOmZ1bmN0aW9uKHgpe3JldHVybiB4LnNyYy5kYnMubGVuZ3RofHx4LnNyYy51cmwubGVuZ3RofHx4Lm1vZGUrIiIhPSJ6aXAifHwiTXVsdGkiPT14LnRhc2t9LCJzZWxmOmgxMDAiOmZ1bmN0aW9uKHgpe3JldHVybiF4LnNyYy56aXB9fSx3YXRjaDpbIiNybW9kZSIsIiNyc291cmNlIl19LCIjcnppcGR1bXBpbmZvIjp7YmluZDpmdW5jdGlvbih4LGEpe3JldHVybiB4LnNyYy56aXA/JzxzcGFuIGNsYXNzPSJmaS1jaGVjayBncmVlbiBmczkwIHByNSI+PC9zcGFuPicreC5zcmMuemlwLnRydW5jYXRlKDYwLCJtaWRkbGUiLCIuLi4iKTp0aGlzLmxhbmcuUExDX1pJUERVTVB9LHdhdGNoOlsiI3J6aXBkdW1wIl0sY3NzOnsic2VsZjp0cmFucyI6ZnVuY3Rpb24oeCl7cmV0dXJuIXguc3JjLnppcH0saGFzRmlsZTpmdW5jdGlvbih4KXtyZXR1cm4hIXguc3JjLnppcH19fSwiI2J0bi1mb2xkc3JjIjp7YmluZDpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXMubXkuZmluZCgiI3Jzb3VyY2UiKSxjPSJTeW5jIj09eC50YXNrJiZiLmF1dG9jb21wbGV0ZSgid2lkZ2V0IikuaXMoIjp2aXNpYmxlIik7cmV0dXJuIG51bGwhPWEmJihjP2IuYXV0b2NvbXBsZXRlKCJjbG9zZSIpOmIuYXV0b2NvbXBsZXRlKCJzZWFyY2giLCIiKSxjPSFjKSwnPHNwYW4gY2xhc3M9InsxfSI+PC9zcGFuPicuYXNzaWduKGM/ImF1cCI6ImFkb3duIil9LGV2ZW50czoiY2xpY2subXkiLGNzczp7aGlkZTpmdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5pc1VSTCh4LnNyYy51cmwpfX0sd2F0Y2g6WyIjcnNvdXJjZSJdfSwiI3Jzb3VyY2VzIjp7aW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzOyJNdWx0aSI9PWEuZGF0YS50YXNrJiZhLnNlbGVjdDIoeCx7dGFnczphLkRCcy5tYXAoZnVuY3Rpb24oeCl7cmV0dXJue2lkOngsdGV4dDp4fX0pLG11bHRpcGxlOiEwLHBsYWNlaG9sZGVyOmEubGFuZy5QTENfRlJPTSx0b2tlblNlcGFyYXRvcnM6WyIgIiwiLCJdLG1pbmltdW1SZXN1bHRzRm9yU2VhcmNoOjEyfSwhMCl9LGNoZWNrOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIGEubGVuZ3RofHwiTXVsdGkiIT14LnRhc2s/IiI6dGhpcy5sYW5nLkVSUl9GUk9NfSxiaW5kOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIG51bGwhPWEmJiJzdHJpbmciIT10eXBlb2YgYSYmKHguc3JjLmRicz1hKSx4LnNyYy5kYnN9LGNzczp7aGlkZTpmdW5jdGlvbih4KXtyZXR1cm4iTXVsdGkiIT14LnRhc2t9fX0sIiN4c2NyZWRzIjp7Y3NzOntzaGlkZTpmdW5jdGlvbih4KXtyZXR1cm4hIXguc3JjLnppcHx8ISh4Lm1vZGUuZmluZCgiZG9jIil8fHRoaXMuaXNVUkwoeC5zcmMudXJsKXx8eC5tb2RlLmZpbmQoImxpdmUiKSYmdGhpcy5pc0NvdWNoMil9fSx3YXRjaDpbIiNybW9kZSIsIiNyc291cmNlIl19LCIjcnNsb2dpbiI6e2JpbmQ6InNyYy51c2VyIixjc3M6e2hpZGU6ZnVuY3Rpb24oeCl7cmV0dXJuISF4LnNyYy51Y3R4Lmxlbmd0aH19LGNoZWNrOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIl8iPT0oYXx8IiIpWzBdP3RoaXMubGFuZy5FUlJfVU5PXzoiIn0sd2F0Y2g6WydpbnB1dFtuYW1lPSJydXNlckN0eCJdJywiI3Jtb2RlIiwiI3Jzb3VyY2UiXX0sIiNyc3Bhc3MiOntiaW5kOiJzcmMucHdkIixjc3M6e2hpZGU6ZnVuY3Rpb24oeCl7cmV0dXJuISF4LnNyYy51Y3R4Lmxlbmd0aH19LGNoZWNrOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIHguc3JjLnVzZXImJiFhP3RoaXMubGFuZy5FUlJfTk9QV0Q6IiJ9LHdhdGNoOlsnaW5wdXRbbmFtZT0icnVzZXJDdHgiXScsIiNybW9kZSIsIiNyc291cmNlIiwiI3JzbG9naW4iXX0sJ2lucHV0W25hbWU9InJ1c2VyQ3R4Il0nOntiaW5kOiJzcmMudWN0eCIsY3NzOntoaWRlOmZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLmlzQ291Y2gyfHwheC5tb2RlLmZpbmQoImRvYyIpfHx0aGlzLmlzVVJMKHguc3JjLnVybCl8fHguc3JjLnVzZXJ9fSx3YXRjaDpbIiNybW9kZSIsIiNyc291cmNlIiwiI3JzbG9naW4iXX0sIiNydW5wcmVmaXgiOntiaW5kOiJzcmMudW5wcmVmaXgiLGNzczp7aGlkZTpmdW5jdGlvbih4KXtyZXR1cm4iTXVsdGkiIT14LnRhc2t8fCJ6aXAiPT14Lm1vZGV9fSx3YXRjaDpbIiNybW9kZSJdfSwiI3JmaWx0ZXIiOntpbml0OmZ1bmN0aW9uKHgpe3gudGFncyh0aGlzLmxhbmcuVEFHX0ZJTFRFUil9LGJpbmQ6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gbnVsbCE9YSYmKHguc3JjLmZpbHRlcj1hLmZpbmQoL154Lyk/YS5maWx0ZXIoL154Lyk6YSkseC5zcmMuZmlsdGVyfSxjc3M6e2hpZGU6ZnVuY3Rpb24oeCl7cmV0dXJuIkNvcHkiPT14LnRhc2t8fCJ6aXAiPT14Lm1vZGUmJiF4LnNyYy51cmwmJiJNdWx0aSIhPXgudGFza319LHdhdGNoOlsiI3J6aXBkdW1wIiwiI3Jzb3VyY2UiXX0sIiNyZG9jcyI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtpZihudWxsPT1hKXJldHVybiB4LnNyYy5pZHMubGVuZ3RoP2N3LmxpYi5qc29uKHguc3JjLmlkcywiICAiKToiIjtpZigiIj09YSlyZXR1cm4geC5zcmMuaWRzPVtdLGE7dmFyIGI7dHJ5e2I9SlNPTi5wYXJzZShhKX1jYXRjaCh4KXt9cmV0dXJuIE9iamVjdC5pc0FycmF5KGIpJiZiLmxlbmd0aCYmIWIuZmluZChmdW5jdGlvbih4KXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIHh9KXx8KGI9W10pLHguc3JjLmlkcz1iLGF9LGNoZWNrOmZ1bmN0aW9uKHgsYSl7aWYoYSl7dmFyIGI7dHJ5e2I9SlNPTi5wYXJzZShhKX1jYXRjaCh4KXt9cmV0dXJuIE9iamVjdC5pc0FycmF5KGIpJiZiLmxlbmd0aCYmIWIuZmluZChmdW5jdGlvbih4KXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIHh9KT92b2lkIDA6dGhpcy5sYW5nLkVSUl9ET0NTfX0sY3NzOntoaWRlOmZ1bmN0aW9uKHgpe3JldHVybiJpZHMiIT14LnNyYy5maWx0ZXJ9fSx3YXRjaDpbIiNyZmlsdGVyIiwiI3Jtb2RlIl19LCIjcmZuIjp7YmluZDoic3JjLmZuIixjc3M6e2hpZGU6ZnVuY3Rpb24oeCl7cmV0dXJuImZuIiE9eC5zcmMuZmlsdGVyfHwiemlwIj09eC5tb2RlfX0sd2F0Y2g6WyIjcmZpbHRlciIsIiNybW9kZSJdfSwiI3JxdWVyeSI6e2Nzczp7aGlkZTpmdW5jdGlvbih4KXtyZXR1cm4iZm4iIT14LnNyYy5maWx0ZXJ8fCF4LnNyYy5mbnx8InppcCI9PXgubW9kZX19LHdhdGNoOlsiI3JmaWx0ZXIiLCIjcmZuIiwiI3Jtb2RlIl19LCIjcnppcG9wdHMiOntpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj1PYmplY3QuY2xvbmUoYS5sYW5nLlRBR19aSVBPUFQsITApO2EuUGhvKCJDb3VjaCIpLnZlcjwiMDAyLiImJmIudGFncy5yZW1vdmUoZnVuY3Rpb24oeCl7cmV0dXJuInFucCI9PXgudmFsdWV9KSx4LnRhZ3MoYil9LGJpbmQ6InNyYy5vcHRzIixjc3M6e2hpZGU6ZnVuY3Rpb24oeCxhKXtyZXR1cm4iemlwIiE9eC5tb2RlfHwiQ29weSI9PXgudGFza3x8eC5zcmMuemlwfHwheC5zcmMudXJsJiYheC5zcmMuZGJzLmxlbmd0aH19LHdhdGNoOlsiI3Jtb2RlIiwiI3Jzb3VyY2VzIiwiI3Jzb3VyY2UiLCIjcnppcGR1bXAiXX0sIiNydGFyZ2V0Ijp7ZGVsYXk6MjAsaW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YS5kYXRhO2Z1bmN0aW9uIGMoYixjKXthLm15LmNoZWNrKCIjcnRhcmdldCIpLGEuZml4SGVpZ2h0LmRlYm91bmNlKDEwMCkoeCl9L14oU3luY3xDb3B5KSQvLnRlc3QoYi50YXNrKSYmeC5hdXRvY29tcGxldGUoe2RlbGF5OjAsc291cmNlOmEuREJzLGNsb3NlOmZ1bmN0aW9uKHgsYil7YS5teS5jaGVjaygiI2J0bi1mb2xkdGd0Iil9LmRlYm91bmNlKDEwKSxzZWxlY3Q6Yy5kZWJvdW5jZSgxMCksYXBwZW5kVG86YS5teS5yb290KCksbWluTGVuZ3RoOjFlNH0pfSxiaW5kOiJ0Z3QudXJsIixjaGVjazpmdW5jdGlvbih4LGEpe2lmKGEpaWYodGhpcy5pc1VSTChhKSl7aWYoIXRoaXMuaXNWYWxpZFVSTChhKSlyZXR1cm4gdGhpcy5sYW5nLkVSUl9UT19VUkw7aWYoIk11bHRpIiE9eC50YXNrJiYhdGhpcy5pc0J1Y2tldFVSTChhKSlyZXR1cm4gdGhpcy5sYW5nLkVSUl9UT31lbHNlIGlmKCF4LnRndC5jcmVhdGUmJiF0aGlzLlBobyhbIkFsbCIsYV0pKXJldHVybiB0aGlzLmxhbmcuRVJSX1RPX01JU1N9LHdhdGNoOlsnaW5wdXRbbmFtZT0icnRjcmVhdGVkYiJdJ10sbGlzdGVuOntkYmxpc3Q6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzO2lmKGEpcmV0dXJuIGZ1bmN0aW9uKCl7Yi5teS5jaGVjaygiI3J0YXJnZXQiKX0uZGVib3VuY2UoMjAwKSgpLCEwfX19LCIjYnRuLWZvbGR0Z3QiOntiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcy5teS5maW5kKCIjcnRhcmdldCIpLGM9Ik11bHRpIiE9eC50YXNrJiZiLmF1dG9jb21wbGV0ZSgid2lkZ2V0IikuaXMoIjp2aXNpYmxlIik7cmV0dXJuIG51bGwhPWEmJihjP2IuYXV0b2NvbXBsZXRlKCJjbG9zZSIpOmIuYXV0b2NvbXBsZXRlKCJzZWFyY2giLCIiKSxjPSFjKSwnPHNwYW4gY2xhc3M9InsxfSI+PC9zcGFuPicuYXNzaWduKGM/ImF1cCI6ImFkb3duIil9LGV2ZW50czoiY2xpY2subXkiLGNzczp7aGlkZTpmdW5jdGlvbih4KXtyZXR1cm4hL14oU3luY3xDb3B5KSQvLnRlc3QoeC50YXNrKX19fSwiI3h0Y3JlZHMiOntjc3M6e3NoaWRlOmZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLm5lZWRUZ3RDcmVkcygpfX0sd2F0Y2g6WyIjcm1vZGUiLCIjcnRhcmdldCJdfSwiI3J0bG9naW4iOntiaW5kOiJ0Z3QudXNlciIsY2hlY2s6ZnVuY3Rpb24oeCxhKXtyZXR1cm4hYSYmeC50Z3QuY3JlYXRlJiYodGhpcy5pc1VSTCh4LnRndC51cmwpfHwhdGhpcy5EQnMuZmluZCh4LnRndC51cmwpJiYodGhpcy5pc0NvdWNoMiYmIXgubW9kZS5maW5kKCJvbmNlIil8fHgubW9kZS5maW5kKCJkb2MiKSkpP3RoaXMubGFuZy5FUlJfVVJFUV9DVDoiXyI9PShhfHwiIilbMF0/dGhpcy5sYW5nLkVSUl9VTk9fOiIifSxjc3M6eyI6ZGlzYWJsZWQiOmZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLm5lZWRUZ3RDcmVkcygpfX0sd2F0Y2g6WyIjcm1vZGUiLCdpbnB1dFtuYW1lPSJydGNyZWF0ZWRiIl0nLCIjcnRhcmdldCJdfSwiI3J0cGFzcyI6e2JpbmQ6InRndC5wd2QiLGNoZWNrOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIHgudGd0LnVzZXImJiFhP3RoaXMubGFuZy5FUlJfTk9QV0Q6IiJ9LGNzczp7IjpkaXNhYmxlZCI6ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMubmVlZFRndENyZWRzKCl9fSx3YXRjaDpbIiNydGxvZ2luIl19LCIjcnByZWZpeCI6e2JpbmQ6InRndC5wcmVmaXgiLGNzczp7aGlkZTpmdW5jdGlvbih4KXtyZXR1cm4iTXVsdGkiIT14LnRhc2t9fX0sJ2lucHV0W25hbWU9InJ0Y3JlYXRlZGIiXSc6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtyZXR1cm4oeC50Z3QuY3JlYXRlPW51bGwhPWE/ISFhLmxlbmd0aDp4LnRndC5jcmVhdGUpP1siY3JlYXRlIl06W119LGNzczp7aGlkZTpmdW5jdGlvbih4KXtyZXR1cm4heC50Z3QudXJsfHwhIXRoaXMuREJzLmZpbmQoeC50Z3QudXJsKX19LHdhdGNoOlsiI3J0YXJnZXQiXX0sIiN4dG5vbnppcCI6e2Nzczp7aGlkZTpmdW5jdGlvbih4LGEpe3JldHVybiJ6aXAiPT14Lm1vZGV9fSx3YXRjaDpbIiNybW9kZSJdfSwiI3J0emlwZmlsZSI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtyZXR1cm4geC5tb2RlKyIiIT0iemlwIiYmKHgudGd0LnppcGZpbGU9IiIpLG51bGw9PWE/eC50Z3QuemlwZmlsZTooeC50Z3QuemlwZmlsZT1hLmNvbXBhY3QoKSxhKX0sY3NzOntoaWRlOmZ1bmN0aW9uKHgsYSl7cmV0dXJuInppcCIhPXgubW9kZXx8IXguc3JjLnVybCYmIXguc3JjLmRicy5sZW5ndGh8fCEheC5zcmMuemlwfX0sd2F0Y2g6WyIjcm1vZGUiLCIjcnNvdXJjZSIsIiNyemlwZmlsZSJdfSwiI3J0dW56aXBvcHRzIjp7aW5pdDpmdW5jdGlvbih4KXt4LnRhZ3ModGhpcy5sYW5nLlRBR19VTlpJUE9QVCl9LGJpbmQ6ZnVuY3Rpb24oeCxhKXtpZihudWxsPT1hKXJldHVybiB4LnRndC5vcHRzO3ZhciBiPXgudGd0Lm9wdHM7cmV0dXJuIHgudGd0Lm9wdHM9YSxiLmZpbmQoImNyZWF0ZSIpIT1hLmZpbmQoImNyZWF0ZSIpJiYodGhpcy5VbnppcFRvPXRoaXMuVW56aXBUby5jbG9uZSghMCksdGhpcy5teS5maW5kKCIjcnR1bnppcGRicyIpLmZpbmQoImlucHV0I3VuemlwLXRndCIpLmVhY2goZnVuY3Rpb24oKXskKHRoaXMpLnRyaWdnZXIoImJsdXIiKX0pKSx4LnRndC5vcHRzfSxjc3M6e2hpZGU6ZnVuY3Rpb24oeCxhKXtyZXR1cm4iemlwIiE9eC5tb2RlfHwiQ29weSI9PXgudGFza3x8IXguc3JjLnppcH19LHdhdGNoOlsiI3Jtb2RlIiwiI3J6aXBkdW1wIl19LCIjcnR1bnppcGRicyI6e2JpbmQ6InRoaXMuVW56aXBUbyIsaW5pdDpmdW5jdGlvbih4KXt0aGlzLm5pY2VTY3JvbGwoeCl9LGxpc3Q6JzxkaXYgY2xhc3M9IncxMDBwIGZzOTAgbXQzIGNiIj48L2Rpdj4nLG1hbmlmZXN0OmZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLlVuemlwREJSb3d9LGNoZWNrOiEwLG1lcmdlOiExLGlkOmZ1bmN0aW9uKHgpe3JldHVybiB4Lm5hbWUrIiAiK3RoaXMuZGF0YS50Z3Qub3B0c30saGFzaDpmdW5jdGlvbih4KXtyZXR1cm4gY3cubGliLmNyYzIoeCx0aGlzLmRhdGEudGd0Lm9wdHMpfX0sIiN4cnR1bnppcGRicyI6e2Nzczp7aGlkZTpmdW5jdGlvbih4KXtyZXR1cm4iemlwIiE9eC5tb2RlfHwhdGhpcy5VbnppcFRvLmxlbmd0aH19LHdhdGNoOlsiI3J0dW56aXBkYnMiLCIjcm1vZGUiXX0sIiNydHppcHdhcm4iOntiaW5kOmZ1bmN0aW9uKHgsYSxiKXt2YXIgYz10aGlzLGQ9Yy5sYW5nLGU9W2QuTVNHX1pJUF9XQVJOXTtyZXR1cm4iemlwIiE9eC5tb2RlP2IucGFyZW50KCkuYWRkQ2xhc3MoImhpZGUiKTpiLnBhcmVudCgpLnJlbW92ZUNsYXNzKCJoaWRlIiksYy5jYW5TdHJlYW18fGUucHVzaChkLk1TR19aSVBfQkxPQiksZS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuJzxkaXYgY2xhc3M9Im10MiBtYjQiPicreCsiPC9kaXY+In0pfSx3YXRjaDpbIiNybW9kZSIsIiNyc291cmNlIiwiI3J6aXBmaWxlIl19fSxpc0J1Y2tldFVSTDpmdW5jdGlvbih4LGEpe3JldHVybiBhPy9eaHR0cFtzXT86XC9cL1teXC86XHNdKzpbXlwvOkBcc10rQFteXC9cc117Mix9KFwvW15cL1xzXSspK1tcL10/JC8udGVzdCh4KTovXmh0dHBbc10/OlwvXC9bXlwvXHNdezIsfShcL1teXC9cc10rKStbXC9dPyQvLnRlc3QoeCl9LGlzTG9jYWxEQjpmdW5jdGlvbih4KXt2YXIgYT10aGlzLlBobygiQ291Y2giKS5wb3J0LGI9IiI7cmV0dXJuIHRoaXMuaXNVUkwoeCk/KHguaW5kZXhPZigibG9jYWxob3N0OiIrYSsiLyIpPi0xfHx4LmluZGV4T2YoIjEyNy4wLjAuMToiK2ErIi8iKT4tMSkmJihiPXguc3BsaXQoIj8iKVswXS5zcGxpdCgiLyIpLmNvbXBhY3QoITApLmxhc3QoKSk6Yj14LGJ9LGlzVVJMOmZ1bmN0aW9uKHgpe3JldHVybi9eaHR0cFtzXT86XC9cLy8udGVzdCh4KX0saXNWYWxpZFVSTDpmdW5jdGlvbih4KXt2YXIgYT0hMTt0cnl7YT1uZXcgVVJMKHgpfWNhdGNoKHgpe31yZXR1cm4gYX0sZml4SGVpZ2h0OmZ1bmN0aW9uKHgpe3guaGVpZ2h0KDApLmhlaWdodCgoeFswXS5zY3JvbGxIZWlnaHQtMTApLmNsYW1wKDE4LDEwMCkpfSxjbGVhbkRhdGE6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpczskLmV4dGVuZCh4LHtkb2M6IiIsbW9kZTpbIm9uY2UiXX0pLCQuZXh0ZW5kKHguc3JjLHt1cmw6IiIsZGJzOltdLHVzZXI6IiIscHdkOiIiLHVjdHg6W10sZmlsdGVyOltdLGZuOiIiLGlkczpbXSxxdWVyeTp7fSx1bnByZWZpeDoiIix6aXA6ITEsb3B0czpbXX0pLCQuZXh0ZW5kKHgudGd0LHt1cmw6IiIsdXNlcjoiIixwd2Q6IiIsY3JlYXRlOiExLHByZWZpeDoiIixxOiIiLG46IiIsYWNsOiExLHppcGZpbGU6IiIsb3B0czpbImNyZWF0ZSJdfSksYS5teS5maW5kKCIjcnR6aXBmaWxlIikudmFsKG51bGwpLGEuVW56aXBUbz1bXSwhYS5Eb250U3RvcFVuemlwJiZhLlVuemlwU3RyZWFtLmFib3J0JiYoYS5VbnppcFN0cmVhbS5hYm9ydCgpLGEuVW56aXBTdHJlYW09e30pfSxkaWU6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpczthLlNlbDJTY3JvbGwoeCwhMCksIlN5bmMiPT1hLmRhdGEudGFzayYmeC5maW5kKCIjcnNvdXJjZSIpLmF1dG9jb21wbGV0ZSgiZGVzdHJveSIpLCJNdWx0aSIhPWEuZGF0YS50YXNrJiZ4LmZpbmQoIiNydGFyZ2V0IikuYXV0b2NvbXBsZXRlKCJkZXN0cm95IiksIWEuRG9udFN0b3BVbnppcCYmYS5VbnppcFN0cmVhbS5hYm9ydCYmYS5VbnppcFN0cmVhbS5hYm9ydCgpfSxzdHlsZTp7IiB0ZXh0YXJlYSI6InJlc2l6ZTpub25lO3dvcmQtd3JhcDpicmVhay13b3JkOyIsIiAubXktZXJyb3ItdGlwIjoicGFkZGluZzowLjFlbSAwIDAuMmVtIDA7IiwiIC51aS13aWRnZXQiOiJmb250LXNpemU6MTAwJSIsIiAudWktYXV0b2NvbXBsZXRlIjoibGluZS1oZWlnaHQ6MS4zZW07IG1heC1oZWlnaHQ6MTl2aDsgb3ZlcmZsb3cteTphdXRvOy13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOnRvdWNoOyIsIiAudzEwMHAtMjAiOiJ3aWR0aDpjYWxjKDEwMCUgLSAyMHB4KTsiLCIgLmJmb2xkIjp7IiI6IndpZHRoOjIwcHghaW1wb3J0YW50OyBwYWRkaW5nLWxlZnQ6MDsgcGFkZGluZy1yaWdodDowOyBib3JkZXItdG9wLWxlZnQtcmFkaXVzOjA7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MDttYXJnaW46MC4xZW0gMCAwIC0yMXB4OyB6LWluZGV4OisxOyB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuM3MsIGNvbG9yIDAuM3M7IG9wYWNpdHk6MC42OyIsIjpob3ZlciI6Im9wYWNpdHk6MC45OyJ9LCIgLnNlbGVjdDItY29udGFpbmVyPi5zZWxlY3QyLWNob2ljZXMiOiJtYXgtaGVpZ2h0OjEwOXB4OyIsIi5oYXN6aXAgLm5vemlwIjoiZGlzcGxheTpub25lIWltcG9ydGFudDsiLCIgLnppcG9ubHkiOiJkaXNwbGF5Om5vbmUhaW1wb3J0YW50OyIsIi5oYXN6aXAgLnppcG9ubHkiOiJkaXNwbGF5OmlubGluZSFpbXBvcnRhbnQ7IiwiIC5teS1yb3csIC5teS1ncm91cCI6InRyYW5zaXRpb246IGhlaWdodCAwLjFzLCBtaW4taGVpZ2h0IDAuMXMsIHBhZGRpbmcgMC4wNXM7IG1pbi1oZWlnaHQ6IDE1cHg7IGhlaWdodDphdXRvOyIsIiAuc2hpZGUiOiJvdmVyZmxvdzpoaWRkZW47IG1pbi1oZWlnaHQ6MDsgaGVpZ2h0OjBweDsgcGFkZGluZy10b3A6MCFpbXBvcnRhbnQ7cGFkZGluZy1ib3R0b206MCFpbXBvcnRhbnQ7IiwiIHVsIjp7Ii51aS1hdXRvY29tcGxldGUiOiJtYXgtd2lkdGg6Y2FsYygxMDAlIC0gMTE1cHgpOyIsIiBsaS51aS1tZW51LWl0ZW0iOiJ3b3JkLWJyZWFrOiBicmVhay1hbGw7In0sIiAjcnppcGR1bXBpbmZvIjp7IiI6ImhlaWdodDoxMDBweDttYXJnaW4tdG9wOi0xMDBweDsgdHJhbnNpdGlvbjpwYWRkaW5nIDAuMnMsIGhlaWdodCAwLjJzO2Rpc3BsYXk6IGZsZXg7YWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IiwiLmhhc0ZpbGUiOiJoZWlnaHQ6Mi4xZW07bWFyZ2luLXRvcDotMi4xZW07In19LFppcFRlc3Rlcjp7cmVxdWlyZTpbeyJ3aW5kb3cuV3JpdGFibGVTdHJlYW0iOiJsaWIvd2Vic3RyZWFtcy5qcyJ9LHsid2luZG93LnN0cmVhbVNhdmVyIjoibGliL3N0cmVhbXNhdmVyLmpzIiwid2luZG93LmZmbGF0ZSI6ImxpYi9mZmxhdGUuanMifV0saW5pdDpbJzxkaXYgaWQ9IngtZHVtbXkiPjwvZGl2PiddLHVpOnsiI3gtZHVtbXkiOmZ1bmN0aW9uKCl7fX19LGluaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPWEuZGF0YTtpZihhLmxhbmdbYi50YXNrXSYmJC5leHRlbmQoYS5sYW5nLGEubGFuZ1tiLnRhc2tdKSwiVW56aXBEQlJvdyBEdW1wWmlwIFVuZHVtcCIuc3BsaXQoIiAiKS5mb3JFYWNoKGZ1bmN0aW9uKHgpeyQuZXh0ZW5kKGFbeF0ubGFuZyxhLmxhbmdbeF18fHt9KX0pLGEuREJzPU9iamVjdC5rZXlzKGEuUGhvKCJBbGwiKSkuc29ydCgpLHguaHRtbCgkLm15LmZvcm1nZW4oYS5IVE1MKS5hc3NpZ24oYS5sYW5nKS5hc3NpZ24oe19yZXBsaWNhdG9yOmEuUGhvKCJSZXBsaWNhdG9yREIiKX0pKSxhLmlzQ291Y2gyPWEuUGhvKCJDb3VjaCIpLnZlcj49IjAwMi4iLGIuZHVtcE9ubHkmJihiLm1vZGU9WyJ6aXAiXSksYS5jYW5aaXA9bnVsbCE9PWEuUGhvKCJjYW5aaXAiKT9hLlBobygiY2FuWmlwIik6ImZldGNoImluIHdpbmRvdyYmIlVpbnQ4QXJyYXkiaW4gd2luZG93JiYiQmxvYiJpbiB3aW5kb3cmJiJNYXAiaW4gd2luZG93JiZudWxsLGEuY2FuU3RyZWFtPSF3aW5kb3cuc2FmYXJpJiYic2VydmljZVdvcmtlciJpbiBuYXZpZ2F0b3IsIkNvcHkiIT1iLnRhc2smJmIuc3JjLm9wdHMucHVzaCgiYWNsIiksImZhbHNlIj09YS5jYW5aaXAmJmIuZHVtcE9ubHkpcmV0dXJuICQuRGVmZXJyZWQoKS5yZWplY3QoYS5sYW5nLkVSUl9OT1pJUCk7ZnVuY3Rpb24gYygpe3gucGFyZW50KCkuY3NzKCJoZWlnaHQiLCJhdXRvIil9eC5maW5kKCJ0ZXh0YXJlYSIpLmVhY2goZnVuY3Rpb24oKXt2YXIgeD0kKHRoaXMpO3gub24oImlucHV0Lm15LGtleXVwLm15IixmdW5jdGlvbigpe2EuZml4SGVpZ2h0KHgpfSl9KSx4LnBhcmVudCgpLm9uKCJkcmFnc3RvcCIsYykseC50aGVuKGZ1bmN0aW9uKCl7eC5maW5kKCJ0ZXh0YXJlYSIpLmVhY2goZnVuY3Rpb24oKXskKHRoaXMpLnRyaWdnZXIoImlucHV0Iil9KSxhLlNlbDJTY3JvbGwoeCwhMCksIlN5bmMiPT1iLnRhc2smJmZ1bmN0aW9uKCl7eC5maW5kKCIjcnNvdXJjZSIpLmF1dG9jb21wbGV0ZSgib3B0aW9uIiwibWluTGVuZ3RoIiwwKX0uZGVib3VuY2UoMTAwKSgpLC9eKFN5bmN8Q29weSkkLy50ZXN0KGIudGFzaykmJmZ1bmN0aW9uKCl7eC5maW5kKCIjcnRhcmdldCIpLmF1dG9jb21wbGV0ZSgib3B0aW9uIiwibWluTGVuZ3RoIiwwKX0uZGVib3VuY2UoMTAwKSgpfS5kZWJvdW5jZSgyMCkpLnRoZW4oZnVuY3Rpb24oKXt4LnBhcmVudCgpLnRyaWdnZXIoImxheW91dCIpLGMoKX0uZGVib3VuY2UoMTUwKSl9LEhUTUw6W3tyb3c6IjEwMCUiLHJvd0NzczoibXktcm93IHB0MyBwYjMgZnMxMDAiLGxhYmVsOiIxMTVweCIsbGFiZWxDc3M6Im15LWxhYmVsIGRpYiB2YXQgbXQ5In0sJzxkaXYgY2xhc3M9ImZzMTMwIG1iMiBsaDE2MCBib2xkZXIgY20iPicsJzxzcGFuIGNsYXNzPSJmaS1saXN0IG80MCBmczg1IG1yMyI+PC9zcGFuPiA8c3BhbiBpZD0icnRpdGxlIj57VFhUX1RJVExFfTwvc3Bhbj4nLCI8L2Rpdj4iLCc8Zm9ybSBpZD0ieHJjcmVhdGUiIGF1dG9jb21wbGV0ZT0ib2ZmIj4nLFsie0xCTF9NT0RFfSIsImRpdiNybW9kZS5kaWIudmF0LmZzMTA1LmxoMTgwIl0sWyJ7TEJMX0lEfSIsImlucCNyZG9jaWQudzEwMHAiLHtwbGM6IntQTENfSUR9IixzcGVsbGNoZWNrOiJmYWxzZSJ9LCJtc2ciXSwnPGRpdiBpZD0ieHNvdXJjZSIgY2xhc3M9Im15LWdyb3VwIj4nLFsnPHNwYW4gY2xhc3M9ImJvbGRlciBmczEwNSI+e0xCTF9GUk9NfTwvc3Bhbj4nLCc8ZGl2IGNsYXNzPSJkaWIgdmF0IHcxMDBwIj4nLCJ0eHQjcnNvdXJjZS53MTAwcC5mczEwMC5saDEzMCIse3BsYzoie1BMQ19GUk9NfSIsc3BlbGxjaGVjazoiZmFsc2UifSwibXNnIiwiPC9kaXY+Iiwic3BuI2J0bi1mb2xkc3JjLnBzZXVkb2xpbmsudGRuLmJmb2xkLmRpYi52YXQiLHt0eHQ6IjxkaXY+4pa8PC9kaXY+In1dLCI8L2Rpdj4iLCc8ZGl2IGlkPSJ4emlwZHVtcCI+JyxbJzxzcGFuIGNsYXNzPSJib2xkZXIgZnMxMDUiPntMQkxfWklQRFVNUH08L3NwYW4+JywnPGlucHV0IGlkPSJyemlwZHVtcCIgdHlwZT0iZmlsZSIgYWNjZXB0PSIuemlwLCAuanNvbiwgYXBwbGljYXRpb24vemlwLCBhcHBsaWNhdGlvbi9qc29uIiBjbGFzcz0idzEwMHAgY3AgbzAiIHN0eWxlPSJoZWlnaHQ6Mi4xZW07IiBwbGFjZWhvbGRlcj0ie1RJUF9aSVBEVU1QfSI+JywnPGRpdiBpZD0icnppcGR1bXBpbmZvIiBjbGFzcz0idzEwMHAgYmctZ3JheTQgYnIyIHRyYW5zIj57UExDX1pJUERVTVB9PC9kaXY+J10sIjwvZGl2PiIsJzxkaXYgaWQ9Inhzc2hpbSIgY2xhc3M9ImhpZGUiPicsWyc8c3BhbiBjbGFzcz0iYm9sZGVyIGZzMTA1Ij57TEJMX0ZST019PC9zcGFuPicsImlucCNyc291cmNlcy53MTAwcC5mczExMC5saDE2MCIsIm1zZyJdLCc8ZGl2IGlkPSJ4c2NyZWRzIiBjbGFzcz0ibXktZ3JvdXAgc2hpZGUiPicsWyJ7TEJMX1NSQ19DUkVEU30iLCc8ZGl2IGNsYXNzPSJkaWIgdmF0IHc1MHAgcHI2Ij4nLCc8ZGl2IGNsYXNzPSJkaWIgdmF0IG1yLTIwIHppMSB0YWMgdzIwIHB0MyBwbDIgbzMwIj48c3BhbiBjbGFzcz0iZmktdG9yc28iPjwvc3Bhbj48L2Rpdj4nLCJpbnAjcnNsb2dpbi53MTAwcC5mczk1LmxoMTMwLnBsMjAiLHtwbGM6IntQTENfVU5BTUV9IixhdXRvY29tcGxldGU6Im9mZiIsYXV0b2NvcnJlY3Q6Im9mZiIsYXV0b2NhcGl0YWxpemU6Im9mZiIsc3BlbGxjaGVjazoiZmFsc2UifSwibXNnIiwiPC9kaXY+IiwnPGRpdiBjbGFzcz0iZGliIHZhdCB3NTBwIj4nLCc8ZGl2IGNsYXNzPSJkaWIgdmF0IG1yLTIwIHppMSB0YWMgdzIwIHB0MyBwbDIgbzQwIj48c3BhbiBjbGFzcz0iZmkta2V5Ij48L3NwYW4+PC9kaXY+JywicHdkI3JzcGFzcy53MTAwcC5mczk1LmxoMTMwLnBsMjAiLHtwbGM6IntQTENfVVBXRH0iLGF1dG9jb21wbGV0ZToibmV3LXBhc3N3b3JkIn0sIm1zZyIsIjwvZGl2PiIsJzxkaXYgY2xhc3M9ImRpYiB2YXQgdzEwMHAiPjxsYWJlbCBjbGFzcz0iZGliIG10MyB2YXQgY3AgZ3JheTEgbGgxNTAgbWIzIHcxMDBwIGZzOTUiPicsJzxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0icnVzZXJDdHgiIHZhbHVlPSJfYWRtaW4iIGNsYXNzPSJtcjYgZnMxMTAgbGgxMDAiPicsIntUWFRfVUNUWH0iLCI8L2xhYmVsPjwvZGl2PiJdLCI8L2Rpdj4iLFsie0xCTF9VTlBSRUZJWH0iLCJpbnAjcnVucHJlZml4Lnc3NXAuZnM5NS5saDEzMCIse3BsYzoie1BMQ19VTlBSRUZJWH0iLHRpdGxlOiJ7VElQX1VOUFJFRklYfSJ9XSxbIntMQkxfRklMVEVSfSIsImRpdiNyZmlsdGVyLmRpYi52YXQubGgxNjAucHQyLnBiMiJdLFsie0xCTF9ET0NTfSIsInR4dCNyZG9jcy53MTAwcC5mczk1LmxoMTMwIix7cGxjOiJ7UExDX0RPQ1N9IixhdXRvY29tcGxldGU6Im9mZiIsYXV0b2NvcnJlY3Q6Im9mZiIsYXV0b2NhcGl0YWxpemU6Im9mZiIsc3BlbGxjaGVjazoiZmFsc2UifSwibXNnIl0sWyJ7TEJMX0ZOfSIsImlucCNyZm4udzEwMHAuZnM5NS5saDEzMCIse3BsYzoie1BMQ19GTn0iLGF1dG9jb21wbGV0ZToib2ZmIixhdXRvY29ycmVjdDoib2ZmIixhdXRvY2FwaXRhbGl6ZToib2ZmIixzcGVsbGNoZWNrOiJmYWxzZSJ9LCJtc2ciXSxbIntMQkxfUVJZfSIsInR4dCNycXVlcnkudzEwMHAuZnM5NS5saDEzMCIse3BsYzoie1BMQ19RUll9IixhdXRvY29tcGxldGU6Im9mZiIsYXV0b2NvcnJlY3Q6Im9mZiIsYXV0b2NhcGl0YWxpemU6Im9mZiIsc3BlbGxjaGVjazoiZmFsc2UifSwibXNnIl0sJzxkaXYgY2xhc3M9IncxMDBwIGgxMCBtdDEwIG9oIGJ0ZCI+PC9kaXY+JywiPC9kaXY+IiwnPGRpdiBpZD0ieHRub256aXAiIGNsYXNzPSJ3MTAwcCI+JyxbJzxzcGFuIGNsYXNzPSJib2xkZXIgZnMxMDUiPntMQkxfVE99PC9zcGFuPicsJzxkaXYgY2xhc3M9ImRpYiB2YXQgdzEwMHAiPicsInR4dCNydGFyZ2V0LncxMDBwLmZzMTAwLmxoMTMwIix7cGxjOiJ7UExDX1RPfSJ9LCJtc2ciLCI8L2Rpdj4iLCJzcG4jYnRuLWZvbGR0Z3QucHNldWRvbGluay50ZG4uYmZvbGQuZGliLnZhdCIse3R4dDoiPGRpdj7ilrw8L2Rpdj4ifV0sJzxkaXYgaWQ9Inh0Y3JlZHMiIGNsYXNzPSJteS1ncm91cCBzaGlkZSI+JyxbIntMQkxfVEdUX0NSRURTfSIsJzxkaXYgY2xhc3M9ImRpYiB2YXQgdzUwcCBwcjYiPicsJzxkaXYgY2xhc3M9ImRpYiB2YXQgbXItMjAgemkxIHRhYyB3MjAgcHQzIHBsMiBvMzAiPjxzcGFuIGNsYXNzPSJmaS10b3JzbyI+PC9zcGFuPjwvZGl2PicsImlucCNydGxvZ2luLncxMDBwLmZzOTUubGgxMzAucGwyMCIse3BsYzoie1BMQ19VTkFNRX0iLGF1dG9jb21wbGV0ZToib2ZmIixhdXRvY29ycmVjdDoib2ZmIixhdXRvY2FwaXRhbGl6ZToib2ZmIixzcGVsbGNoZWNrOiJmYWxzZSJ9LCJtc2ciLCI8L2Rpdj4iLCc8ZGl2IGNsYXNzPSJkaWIgdmF0IHc1MHAiPicsJzxkaXYgY2xhc3M9ImRpYiB2YXQgbXItMjAgemkxIHRhYyB3MjAgcHQzIHBsMiBvNDAiPjxzcGFuIGNsYXNzPSJmaS1rZXkiPjwvc3Bhbj48L2Rpdj4nLCJwd2QjcnRwYXNzLncxMDBwLmZzOTUubGgxMzAucGwyMCIse3BsYzoie1BMQ19VUFdEfSIsYXV0b2NvbXBsZXRlOiJuZXctcGFzc3dvcmQifSwibXNnIiwiPC9kaXY+Il0sIjwvZGl2PiIsWyJ7TEJMX1BSRUZJWH0iLCJpbnAjcnByZWZpeC53NzVwLmZzOTUubGgxMzAiLHtwbGM6IntQTENfUFJFRklYfSJ9XSxbIiAiLCc8bGFiZWwgY2xhc3M9ImRpYiBjcCBncmF5MSBsaDEyMCBmczk1IHc1MHAiPicsJzxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0icnRjcmVhdGVkYiIgdmFsdWU9ImNyZWF0ZSIgY2xhc3M9Im1yNiBmczExMCI+Jywie1RYVF9ORVdUR1R9IiwiPC9sYWJlbD4iXSwiPC9kaXY+IixbJzxzcGFuIGNsYXNzPSJib2xkZXIgZnMxMDUiPntMQkxfWklQRklMRX08L3NwYW4+JywiaW5wI3J0emlwZmlsZS53MTAwcC5mczEwMC5saDEzMCIse3BsYzoie1BMQ19aSVBGSUxFfSIsc3BlbGxjaGVjazoiZmFsc2UifV0sWyJ7TEJMX1pJUE9QVH0iLCJkaXYjcnppcG9wdHMuZGliLnZhdC5saDE2MC5wdDIucGIyIl0sJzxkaXYgaWQ9InhydHVuemlwZGJzIiBjbGFzcz0ibXQtNSBoaWRlIj4nLFsnPHNwYW4gY2xhc3M9ImJvbGRlciBmczEwNSI+e0xCTF9VTlpJUERCU308L3NwYW4+JywnPGRpdiBpZD0icnR1bnppcGRicyJjbGFzcz0iZGliIHZhdCB3MTAwcCBwYjUgbWItNSIgc3R5bGU9Im1heC1oZWlnaHQ6MjBlbTsiPjwvZGl2PiddLFsie0xCTF9VTlpJUE9QVH0iLCJkaXYjcnR1bnppcG9wdHMuZGliLnZhdC5saDE2MC5wdDUucGIyIl0sIjwvZGl2PiIsWyIgIiwnPGRpdiBpZD0icnR6aXB3YXJuIiBjbGFzcz0iZGliIHZhdCB3MTAwcCBmczg1IGxoMTMwIG84MCI+PC9kaXY+J10sIjwvZm9ybT4iLCc8ZGl2IGNsYXNzPSJtdDEwIHB0MTMgYnRkIj4nLCc8ZGl2IGNsYXNzPSJmciI+PGJ1dHRvbiBpZD0iYnRuLWNsZWFyIiBjbGFzcz0ibWFya2ZvY3VzIj57QlROX0NMRUFSfTwvYnV0dG9uPjwvZGl2PicsJzxidXR0b24gaWQ9ImJ0bi1zdGFydCIgY2xhc3M9ImdyZWVuIG1yMiBtYXJrZm9jdXMiPntCVE5fU1RBUlR9PC9idXR0b24+JywnPGJ1dHRvbiBpZD0iYnRuLWNhbmNlbCIgY2xhc3M9Im1hcmtmb2N1cyI+e0JUTl9DQU5DRUx9PC9idXR0b24+JywiPC9kaXY+IiwnPGRpdiBpZD0iemlwLXRlc3RlciIgY2xhc3M9ImhpZGUiPjwvZGl2PiddLFVuemlwREJSb3c6e2lkOiJjdy5QaG90b24uU3luY1Rhc2suVW56aXBEQlJvdyIsaW5oZXJpdDpbIkRCcyIsIlBobyIsIlVuemlwT3B0cyJdLGxhbmc6e30sZGF0YTp7bmFtZToiIix0YXJnZXQ6IiIsZG9jX2NvdW50OjAscmF3X3NpemU6MCxzZWN1cml0eTpudWxsfSxpbml0OmZ1bmN0aW9uKHgpe3guaHRtbCh0aGlzLkhUTUwuYXNzaWduKHRoaXMubGFuZykpLHRoaXMuZGF0YS50YXJnZXQ9dGhpcy5kYXRhLm5hbWUsdGhpcy5EQnM9Y3cubGliLmEybyh0aGlzLkRCcyl9LHVpOnsiI2J0bi1yZW1vdmUiOntiaW5kOmZ1bmN0aW9uKHgsYSl7bnVsbCE9YSYmKDE9PXRoaXMubXkucGFyZW50KCkuVW56aXBUby5sZW5ndGg/dGhpcy5teS5wYXJlbnQoKS5teS5maW5kKCIjYnRuLWNhbmNlbCIpLnRyaWdnZXIoImNsaWNrLm15Iik6dGhpcy5teS5yZW1vdmUoKSl9LGV2ZW50czpbImNsaWNrLm15Il19LCIjdW56aXAtc3JjIjp7ZGVsYXk6NTAsYmluZDpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXMuVW56aXBPcHRzKCkuZmluZCgiY3JlYXRlIiksYz10aGlzLlBobyhbIkFsbCIseC50YXJnZXRdKTtyZXR1cm4nPHNwYW4gY2xhc3M9ImZzMTE1IGJvbGRlciI+ezF9PC9zcGFuPiA8c3BhbiBjbGFzcz0ibzQwIGZpLWFycm93LXJpZ2h0IHBsMiI+PC9zcGFuPiB7Mn0nLmFzc2lnbih4Lm5hbWUudHJ1bmNhdGUoNDAsIm1pZGRsZSIsIi4uLiIpLmVzY2FwZUhUTUwoKSxjPyIiOmI/JzxzcGFuIGNsYXNzPSJwbDQgcHI1IHB0MSBwYjIgYmctZ3JlZW4yIGZzOTAgd2hpdGUgZnc2MDAgbncgYnIyIj57MX08L3NwYW4+Jy5hc3NpZ24odGhpcy5sYW5nLk1TR19ORVdEQik6JzxzcGFuIGNsYXNzPSJwbDQgcHI1IHB0MSBwYjIgYmctcmVkMiBmczkwIHdoaXRlIGZ3NjAwIGJyMiI+ezF9PC9zcGFuPicuYXNzaWduKHRoaXMubGFuZy5NU0dfTk9EQikpfSx3YXRjaDpbIiN1bnppcC10Z3QiXX0sIiN1bnppcC10Z3QiOntkZWxheTo1MCxiaW5kOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIG51bGwhPWEmJih4LnRhcmdldD1hKSx4LnRhcmdldH0sY2hlY2s6ZnVuY3Rpb24oeCxhKXtyZXR1cm4vXlthLXowLTlfJFwoXClcK1wtXC9dKyQvLnRlc3QoYSk/L15bYS16XS8udGVzdChhKT90aGlzLlVuemlwT3B0cygpLmZpbmQoImNyZWF0ZSIpfHx0aGlzLlBobyhbIkFsbCIsYV0pP3ZvaWQgMDp0aGlzLmxhbmcuRVJSX05PREI6dGhpcy5sYW5nLkVSUl9EQjFDSEFSOnRoaXMubGFuZy5FUlJfREJDSEFSU30sbGlzdGVuOntkYmxpc3Q6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzO2lmKGEpcmV0dXJuIGZ1bmN0aW9uKCl7Yi5teS5jaGVjaygiI3VuemlwLXRndCIpfS5kZWJvdW5jZSgyMDApKCksITB9fX0sIiN1bnppcC1pbmZvIjp7YmluZDpmdW5jdGlvbih4LGEpe3ZhciBiPU9iamVjdC5pc0FycmF5KHguZmlsdGVyKT94LmZpbHRlcjpbXSxjPWIubGVuZ3RoP2IubGVuZ3RoOnguZG9jX2NvdW50Kyh4LmRvY19kZWxfY291bnR8fDApLGQ9IiIsZT0iIjtpZihkPWIubGVuZ3RoPyJQYXJ0aWFsIGR1bXA6IHsxfSBkb2N7Mn0iLmFzc2lnbihiLmxlbmd0aCxiLmxlbmd0aD4xPyJzIjoiIik6InsxfSBkb2N7Mn0sIHszfSByYXciLmFzc2lnbihjPjFlMz9jLmFiYnIoMSkucmVwbGFjZSgibSIsIk0iKTpjLGM+MT8icyI6IiIseC5yYXdfc2l6ZS5ieXRlcygyKS5yZXBsYWNlKC9CJC8sImIiKSksbnVsbCE9eC5zZWN1cml0eSl7dmFyIGY9JC5leHRlbmQoITAse2FkbWluczp7bmFtZXM6W10scm9sZXM6W119LG1lbWJlcnM6e25hbWVzOltdLHJvbGVzOltdfX0seC5zZWN1cml0eSksZz1bZi5hZG1pbnMubmFtZXMsZi5hZG1pbnMucm9sZXMsZi5tZW1iZXJzLm5hbWVzLGYubWVtYmVycy5yb2xlc10uZmxhdHRlbigpLmxlbmd0aDtlPSc8c3BhbiBjbGFzcz0iezF9Ij48L3NwYW4+IHsyfSBBQ0wuICcuYXNzaWduKGc/ImZpLWxvY2sgZ3JlZW4xIjoiZmktdW5sb2NrIG9yYW5nZTEiLGc/IkhhcyI6IkVtcHR5Iil9cmV0dXJuIGUrZH19fSxIVE1MOic8ZGl2IGlkPSJidG4tcmVtb3ZlIiBjbGFzcz0iZnIgcDUgY3AgcmVkMSBsaDEwMCBtdDQiIHRpdGxlPSJ7VElQX1JFTU9WRX0iPuKclTwvZGl2PjxkaXYgY2xhc3M9Inc0MHAgZnIiPjxpbnB1dCBpZD0idW56aXAtdGd0IiB0eXBlPSJ0ZXh0IiBjbGFzcz0idzEwMHAgbXQzIiBzcGVsbGNoZWNrPSJmYWxzZSIgcGxhY2Vob2xkZXI9IntQTENfVEdUfSI+PC9kaXY+PGRpdiBpZD0idW56aXAtc3JjIiBjbGFzcz0idzU1cCBsaDEzMCBwdDMgbWIzIHdiYSI+PC9kaXY+PGRpdiBpZD0idW56aXAtaW5mbyIgY2xhc3M9IncxMDBwIG1iMiBmczkwIGxoMTIwIG83MCI+PC9kaXY+J30scnVuWmlwOmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcyxjPWIuZGF0YSxkPSJNdWx0aSI9PWMudGFzayxlPWIuRHVtcFppcCxmPShjLnRndC56aXBmaWxlLHtkYnM6KGQ/Yy5zcmMuZGJzLnVuaXF1ZSgpOltjLnNyYy51cmxdKS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJue3VybDp4LGRyb3A6T2JqZWN0LnNlbGVjdChjLnNyYyxbImZpbHRlciIsImZuIiwiaWRzIiwicXVlcnkiXSl9fSksbmFtZTpjLnRndC56aXBmaWxlLnJlcGxhY2UoL1wuemlwJC9pLCIiKXx8ImR1bXAiLG9wdHM6Yy5zcmMub3B0c30pO3JldHVybiB4Lm1vZGFsKHtyb290OmEsZGF0YTpmLG1hbmlmZXN0OmUsZ2xvYmFsOiExLGNsb3NlOiExLGVzYzohMSxhbGlnbjoiYm90dG9tOjEycHg7cmlnaHQ6MjBweDsiLGNzczoicDEwIHhncmF5IixkcmFnOiIuY20iLHdpZHRoOjQ1MH0pLnRoZW4oZnVuY3Rpb24oKXt9KS5mYWlsKGZ1bmN0aW9uKHgpe2NvbnNvbGUubG9nKHgpLGN3LmxpYi5ub3RlKGIubGFuZy5FUlJfWklQX1NUUkVBTSwiZXJyb3IiKX0pfSxydW5VbmR1bXA6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzLGM9Yi5kYXRhLGQ9Ik11bHRpIj09Yy50YXNrLGU9JC5leHRlbmQoITAse30sYi5VbmR1bXApO2MudGd0LnppcGZpbGUsZD9jLnNyYy5kYnMudW5pcXVlKCk6Yy5zcmMudXJsO2IuVW56aXBEQm1hcD17fSxiLlVuemlwVG8uZm9yRWFjaChmdW5jdGlvbih4KXtiLlVuemlwREJtYXBbeC5uYW1lXT14LnRhcmdldH0pLCQuZXh0ZW5kKGUsT2JqZWN0LnNlbGVjdChiLFsiVW56aXBTdHJlYW0iLCJVbnppcERCbWFwIl0pKTt2YXIgZj17ZG9jc1RvU2F2ZTpiLmRvY3NUb1NhdmUsZGJzOmIuVW56aXBUby5tYXAoZnVuY3Rpb24oeCl7cmV0dXJue3NyYzp4Lm5hbWUsbmFtZTp4LnRhcmdldCxmaWx0ZXI6eC5maWx0ZXIsdG90YWxTaXplOngucmF3X3NpemUsdG90YWxEb2NzOnguY2h1bmtzX2NvdW50fHx4LmRvY19jb3VudCsoeC5kb2NfZGVsX2NvdW50fHwwKSxzZWN1cml0eTp4LnNlY3VyaXR5LGNsdXN0ZXI6eC5jbHVzdGVyfHxudWxsLHByb3BzOngucHJvcHN8fG51bGwsZG9uZURvY3M6MH19KSxvcHRzOmMudGd0Lm9wdHN9O3JldHVybiB4Lm1vZGFsKHtyb290OmEsZGF0YTpmLG1hbmlmZXN0OmUsZ2xvYmFsOiExLGNsb3NlOiExLGVzYzohMSxhbGlnbjoiYm90dG9tOjEycHg7cmlnaHQ6MjBweDsiLGNzczoicDEwIHhncmF5IixkcmFnOiIuY20iLHdpZHRoOjQ1MH0pLnRoZW4oZnVuY3Rpb24oeCl7dmFyIGE9eC5zdGF0dXM7cmV0dXJuImFib3J0ZWQiPT1hP2N3LmxpYi5ub3RlKGIubGFuZy5FUlJfVU5aSVBfQUJSVCwiZXJyb3IiLDhlMyk6ImRvbmUiPT1hP2N3LmxpYi5ub3RlKGIubGFuZy5NU0dfVU5aSVBfT0ssIm9rIiw4ZTMpOnZvaWQgMH0pLmZhaWwoZnVuY3Rpb24oeCl7Yi5VbnppcFN0cmVhbS5hYm9ydCgpLGNvbnNvbGUubG9nKHgsZiksY3cubGliLm5vdGUoYi5sYW5nLkVSUl9VTlpJUF9GQUlMLCJlcnJvciIsNWUzKX0pLmFsd2F5cyhmdW5jdGlvbigpe2IuZG9jc1RvU2F2ZT1bXX0pfSxzdGFydFVuemlwU3RyZWFtOmZ1bmN0aW9uKHgpe3ZhciBhLGI9dGhpcyxjPWIuZGF0YSxkPWIubGFuZyxlPSQuRGVmZXJyZWQoKSxmPSExLGc9ITEsaD0hMSxpPSExLGo9W10saz1uZXcgVWludDhBcnJheSgneyJuZXdfZWRpdHMiOmZhbHNlLCJkb2NzIjpbJy5jb2RlcygpKSxsPW5ldyBVaW50OEFycmF5KCd7Im5ld19lZGl0cyI6ZmFsc2UsImRvY3MiOicuY29kZXMoKSksbT1uZXcgVWludDhBcnJheSgiXX0iLmNvZGVzKCkpLG49bmV3IFVpbnQ4QXJyYXkoIn0iLmNvZGVzKCkpLG89bmV3IGZmbGF0ZS5VbnppcChGKTtvLnJlZ2lzdGVyKGZmbGF0ZS5Bc3luY1VuemlwSW5mbGF0ZSk7dmFyIHA9eC5zdHJlYW0oKSxxPVtdLHI9cC5nZXRSZWFkZXIoKSxzPWIuZG9jc1RvU2F2ZSx0PTEsdT0wLHY9MCx3PSExO2IuaXNTdHJlYW1pbmc9ITAsYy5zcmMuemlwPXgubmFtZTt2YXIgeT0hMSx6PXNldEludGVydmFsKEQsMTcpLEE9c2V0SW50ZXJ2YWwoQiwzKTtyZXR1cm4gZS5wcm9taXNlKCk7ZnVuY3Rpb24gQigpeyFnJiZxLmxlbmd0aCYmcS5zaGlmdCgpLnN0YXJ0KCl9ZnVuY3Rpb24gQygpe3RyeXtjbGVhckludGVydmFsKEEpfWNhdGNoKHgpe319ZnVuY3Rpb24gRCgpe2d8fGZ8fHl8fCh5PSEwLHIucmVhZCgpLnRoZW4oRykpfWZ1bmN0aW9uIEUoKXt0cnl7Y2xlYXJJbnRlcnZhbCh6KX1jYXRjaCh4KXt9fWZ1bmN0aW9uIEYoeCl7aWYoZylyZXR1cm4geC50ZXJtaW5hdGUoKTt2YXIgYz14Lm5hbWUsZD0vXC9fY29uZmxpY3RzXC8vLnRlc3QoYyksbz1NKGMuc3BsaXQoIi8iKVswXSkscD0oYi5VbnppcERCbWFwfHx7fSlbb10scj1bXSx5PSJfaW5mby5qc29uIj09YztpZih5fHxjIT1vJiYobnVsbD09PWIuVW56aXBEQm1hcHx8cCkmJi9eW2EtejAtOV8kXChcKVwrXC1cL10rXC8uK1wuanNvbiQvLnRlc3QoTShjKSkpe3IucHVzaChkP2w6ayk7dmFyIHo9e25hbWU6YyxzcmNkYjpvLGRlc3RkYjpwLHNpemU6MCxyZWFkeTohMSxzYXZlZDohMSxlcnJvcnM6W10scmVxOm51bGx9O3QrPTEseXx8KHUrPTEpLHgub25kYXRhPWZ1bmN0aW9uKGEsYixjKXtpZihnKXJldHVybiB4LnRlcm1pbmF0ZSgpO2E/SigoKGF8fCJ1bmtub3duIGVycm9yIikrIiIpLnRydW5jYXRlKDEwMCkpOihiJiYoci5wdXNoKGIpLHouc2l6ZSs9Yi5sZW5ndGgpLGMmJkEoKSl9LHEucHVzaCh4KX1lbHNlIHgub25kYXRhPWZ1bmN0aW9uKCl7aWYoZylyZXR1cm4geC50ZXJtaW5hdGUoKX0scS5wdXNoKHgpLHYrPTE7ZnVuY3Rpb24gQSgpe3JldHVybiBnP3gudGVybWluYXRlKCk6KHQtPTEsei5yZWFkeT0hMCxyLnB1c2goZD9uOm0pLHkmJiF3PyhLKCksdz0hMCxhPXtpbmZvOkpTT04ucGFyc2UoSChyKSkuZG9jc1swXSxwYXVzZTpLLGFib3J0OkosY29udGludWU6TCxub3RpZnk6ZnVuY3Rpb24oeCl7ai5wdXNoKHgpfSxnZXRTdGF0czpmdW5jdGlvbigpe3JldHVybntpc1ppcFJlYWQ6aSxmaWxlczp1LGRyb3A6dn19LGlzUGF1c2VkOmZ1bmN0aW9uKCl7cmV0dXJuIGZ9LGlzQWJvcnRlZDpmdW5jdGlvbigpe3JldHVybiBnfHxofSxpc0RvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gaH0saXNBbGxSZWFkOmZ1bmN0aW9uKCl7cmV0dXJuIGl9fSxyPXZvaWQgMCxlLnJlc29sdmUoYSkpOih6LnJlcT17dXJsOiIiLHByb2Nlc3NEYXRhOiExLG1ldGhvZDoicG9zdCIsZGF0YTpuZXcgQmxvYihyKSxoZWFkZXJzOnsiQ29udGVudC10eXBlIjoiYXBwbGljYXRpb24vanNvbiIsQWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uIn19LHMucHVzaCh6KSxJKCJkb2MiLHouc2l6ZSksMD09dCYmKGIuaXNTdHJlYW1pbmc9ITEsaD0hMCxFKCksQygpLHMucHVzaChudWxsKSxJKCJlbmRlZCIpLGUucmVqZWN0KCkpLHZvaWQgMCkpfX1mdW5jdGlvbiBHKHgpe3ZhciBhPXguZG9uZSxiPXgudmFsdWU7YT8oby5wdXNoKGJ8fG5ldyBVaW50OEFycmF5LCEwKSx0LT0xLGk9ITAsRSgpLGNvbnNvbGUubG9nKGQuTVNHX1VOWklQRU5ELmFzc2lnbih1LHYpKSx3fHxlLnJlamVjdChkLkVSUl9XUk9OR1pJUCkpOm8ucHVzaChiKSx5PSExfWZ1bmN0aW9uIEgoeCl7dmFyIGE9bmV3IFVpbnQ4QXJyYXkoeC5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIHgubGVuZ3RofSkuc3VtKCkpLGI9MDtyZXR1cm4geC5mb3JFYWNoKGZ1bmN0aW9uKHgpe3ZhciBjPXgubGVuZ3RoO2Euc2V0KHgsYiksYis9Y30pLGRlY29kZVVSSUNvbXBvbmVudChlc2NhcGUoU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLGEpKSl9ZnVuY3Rpb24gSSh4LGIpe2EmJmouZm9yRWFjaChmdW5jdGlvbihhKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgYSl0cnl7YSh4LGIpfWNhdGNoKHgpe2NvbnNvbGUubG9nKGQuRVJSX1VOWklQTlRGLHgpfX0pfWZ1bmN0aW9uIEooeCl7Zz0hMCxoPSEwLGIuaXNTdHJlYW1pbmc9ITEsYi5kb2NzVG9TYXZlLmxlbmd0aD0wLEUoKSxDKCksci5jYW5jZWwoKS50aGVuKGZ1bmN0aW9uKCl7ci5yZWxlYXNlTG9jaygpO3RyeXtwLmNhbmNlbCgpfWNhdGNoKHgpe2NvbnNvbGUubG9nKHgpfX0pLGNvbnNvbGUubG9nKCJcblJlYWRlciBjYW5jZWxsZWRcbiIrKHh8fCIiKSkseCYmY3cubGliLm5vdGUoeCwiIiw2ZTMpfWZ1bmN0aW9uIEsoKXtmPSEwLGNvbnNvbGUubG9nKGQuTVNHX1JFQURQQVVTRUQuYXNzaWduKHMubGVuZ3RoKSl9ZnVuY3Rpb24gTCgpe2Y9ITEsY29uc29sZS5sb2coZC5NU0dfUkVBRFJFKX1mdW5jdGlvbiBNKHgpe3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoeCl9fSxzdGFydFVuemlwU3luYzpmdW5jdGlvbih4KXt2YXIgYSxiPXRoaXMsYz0oYi5kYXRhLGIubGFuZyksZD1iLmRvY3NUb1NhdmUsZT0kLkRlZmVycmVkKCksZj1bXSxnPSExLGg9ITEsaT0hMTtyZXR1cm4gYi5pc1N0cmVhbWluZz0hMCx4LmFycmF5QnVmZmVyKCkudGhlbihmdW5jdGlvbih4KXtmZmxhdGUudW56aXAobmV3IFVpbnQ4QXJyYXkoeCksZnVuY3Rpb24oeCxrKXtkLmxlbmd0aD0wLHg/Y29uc29sZS5sb2coeCk6T2JqZWN0LmtleXMoaykuZm9yRWFjaChmdW5jdGlvbih4KXt2YXIgYz1qKHguc3BsaXQoIi8iKVswXSksZT0iX2luZm8uanNvbiI9PXg7aWYoZXx8aih4KSE9YyYmL15bYS16MC05XyRcKFwpXCtcLVwvXStcLy4rXC5qc29uJC8udGVzdChqKHgpKSlyZXR1cm4gZT8oYT17aW5mbzpKU09OLnBhcnNlKGooZXNjYXBlKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxrW3hdKSkpKSxwYXVzZTpmdW5jdGlvbigpe30sYWJvcnQ6ZnVuY3Rpb24oKXtoPSEwLGk9ITAsYi5pc1N0cmVhbWluZz0hMSxiLmRvY3NUb1NhdmUubGVuZ3RoPTB9LGNvbnRpbnVlOmZ1bmN0aW9uKCl7fSxub3RpZnk6ZnVuY3Rpb24oeCl7Zi5wdXNoKHgpfSxnZXRTdGF0czpmdW5jdGlvbigpe3JldHVybntpc1ppcFJlYWQ6ITAsZmlsZXM6T2JqZWN0LnNpemUoayksZHJvcDowfX0saXNQYXVzZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gZ30saXNBYm9ydGVkOmZ1bmN0aW9uKCl7cmV0dXJuIGh8fGl9LGlzRG9uZTpmdW5jdGlvbigpe3JldHVybiBpfSxpc0FsbFJlYWQ6ZnVuY3Rpb24oKXtyZXR1cm4hMH19LHZvaWQgMCk6KGQucHVzaCh7bmFtZTp4LHNyY2RiOmMsZGVzdGRiOm51bGwsc2l6ZTprW3hdLmxlbmd0aCxyZWFkeTohMSxzYXZlZDohMSxlcnJvcnM6W10scmVxOntwcm9jZXNzRGF0YTohMSx1cmw6IiIsbWV0aG9kOiJwb3N0IixkYXRhOi9cL19jb25mbGljdHNcLy8udGVzdCh4KT9uZXcgQmxvYihbJ3sibmV3X2VkaXRzIjpmYWxzZSwiZG9jcyI6JyxrW3hdLCJ9Il0pOm5ldyBCbG9iKFsneyJuZXdfZWRpdHMiOmZhbHNlLCJkb2NzIjpbJyxrW3hdLCJdfSJdKSxoZWFkZXJzOnsiQ29udGVudC10eXBlIjoiYXBwbGljYXRpb24vanNvbiIsQWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uIn19fSksdm9pZCAwKX0pLGQucHVzaChudWxsKSxhP2UucmVzb2x2ZShhKTplLnJlamVjdCh4P3grIiI6Yy5FUlJfV1JPTkdaSVApfSl9KSxlLmFsd2F5cyhmdW5jdGlvbigpe2IuaXNTdHJlYW1pbmc9ITF9LmRlYm91bmNlKDIwKSksZS5wcm9taXNlKCk7ZnVuY3Rpb24gaih4KXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHgpfX0sc3RhcnRVbmZlZWRTeW5jOmZ1bmN0aW9uKHgpe3ZhciBhLGI9T2JqZWN0LmlzT2JqZWN0LGM9T2JqZWN0LmlzQXJyYXksZD10aGlzLGU9KGQuZGF0YSxkLmxhbmcpLGY9ZC5kb2NzVG9TYXZlLGc9JC5EZWZlcnJlZCgpLGg9W10saT0wLGo9ITEsaz0hMSxsPSExO2QuaXNTdHJlYW1pbmc9ITA7dmFyIG09KHgubmFtZSsiIikudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9cLmpzb24kLywiIikucmVwbGFjZSgvW15hLXowLTlfJCgpK1wtXS9nLCItIik7ZnVuY3Rpb24gbih4KXt2YXIgYSxkPVtdLGc9IiI7dHJ5e2E9SlNPTi5wYXJzZSh4KX1jYXRjaCh4KXtyZXR1cm4gZS5FUlJfSl9KU09OfWlmKCFiKGEpKXJldHVybiBlLkVSUl9KX0ZFRUQ7dmFyIGg9YS5yZXN1bHRzfHxhLnJvd3M7aWYoIWMoaCl8fCFoLmxlbmd0aClyZXR1cm4gZS5FUlJfSl9GRUVEO2guZm9yRWFjaChmdW5jdGlvbih4KXtpZighZyl7dmFyIGE9eC5kb2M7aWYoIWF8fCFiKGEpfHwheC5kb2MuX2lkKXJldHVybiBnPWUuRVJSX0pfRkVFRDt2YXIgYz1hLl9hdHRhY2htZW50cztpZihjKXtpZighYihjKSlyZXR1cm4gZz1lLkVSUl9KX0ZFRUQ7T2JqZWN0LmtleXMoYykuZm9yRWFjaChmdW5jdGlvbih4KXtpZighZyl7dmFyIGE9Y1t4XTthLmNvbnRlbnRfdHlwZSYmYS5kYXRhfHwoZz1lLkVSUl9KX0ZJTEVTKX19KX1nfHxkLnB1c2goSlNPTi5zdHJpbmdpZnkoT2JqZWN0LnNlbGVjdChhLC9eW15fXXxeXyhpZHxyZXZ8ZGVsZXRlZHxhdHRhY2htZW50cykvKSkpfX0pO3ZhciBqPXtwcm9jZXNzRGF0YTohMSx1cmw6IiIsbWV0aG9kOiJwb3N0IixoZWFkZXJzOnsiQ29udGVudC10eXBlIjoiYXBwbGljYXRpb24vanNvbiIsQWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uIn19O3JldHVybiBkLmZvckVhY2goZnVuY3Rpb24oeCxhKXtpKz14Lmxlbmd0aCxmLnB1c2goe25hbWU6Il9jaHVuayIrYSxzcmNkYjptLGRlc3RkYjpudWxsLHNpemU6eC5sZW5ndGgscmVhZHk6ITEsc2F2ZWQ6ITEsZXJyb3JzOltdLHJlcTokLmV4dGVuZCghMCx7ZGF0YTpuZXcgQmxvYihbJ3sibmV3X2VkaXRzIjpmYWxzZSwiZG9jcyI6WycseCwiXX0iXSl9LGopfSl9KSxmLnB1c2gobnVsbCksZ3x8ZH1yZXR1cm4gbT0vXlthLXpdLy50ZXN0KG0pP206ImRiLSIrbSx4LnRleHQoKS50aGVuKGZ1bmN0aW9uKHgpe2YubGVuZ3RoPTA7dmFyIGI9bih4KTtjKGIpfHxnLnJlamVjdChiKTt2YXIgZT1iO2E9e2luZm86e3VzZXI6Y3cubWUoKSxkYXRlOkRhdGUuY3JlYXRlKCkudG9KU09OKCkscGhvdG9uOiIxLjI0LjAwIixjb3VjaDpkLlBobygiQ291Y2giKS52ZXJzaW9uLGhvc3Q6Il8iLGRiczpbe25hbWU6bSxmaWx0ZXI6bnVsbCxzdGFydF9zZXE6MCxtYXhfc2VxOjFlMTAsdHM6RGF0ZS5ub3coKSxzZWN1cml0eTpudWxsLHJhd19zaXplOmksZG9jX2NvdW50OmUubGVuZ3RoLGRvY19kZWxfY291bnQ6MH1dfSxwYXVzZTpmdW5jdGlvbigpe30sYWJvcnQ6ZnVuY3Rpb24oKXtrPSEwLGw9ITAsZC5pc1N0cmVhbWluZz0hMSxkLmRvY3NUb1NhdmUubGVuZ3RoPTB9LGNvbnRpbnVlOmZ1bmN0aW9uKCl7fSxub3RpZnk6ZnVuY3Rpb24oeCl7aC5wdXNoKHgpfSxnZXRTdGF0czpmdW5jdGlvbigpe3JldHVybntpc1ppcFJlYWQ6ITAsZmlsZXM6ZS5sZW5ndGgsZHJvcDowfX0saXNQYXVzZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gan0saXNBYm9ydGVkOmZ1bmN0aW9uKCl7cmV0dXJuIGt8fGx9LGlzRG9uZTpmdW5jdGlvbigpe3JldHVybiBsfSxpc0FsbFJlYWQ6ZnVuY3Rpb24oKXtyZXR1cm4hMH19LGcucmVzb2x2ZShhKX0pLGcucHJvbWlzZSgpfSxydW5UYXNrczpmdW5jdGlvbigpe3ZhciB4PXRoaXMsYT14LmRhdGEsYj0iaHR0cDovL2xvY2FsaG9zdDoiK3guUGhvKCJDb3VjaCIpLnBvcnQrIi8iLGM9Ik11bHRpIj09YS50YXNrLGQ9ISFhLm1vZGUuZmluZCgiZG9jIiksZT0oYS5tb2RlLmZpbmQoIjJ3YXkiKSwhIWEubW9kZS5maW5kKCJsaXZlIikpLGY9eC5pc0NvdWNoMiYmKGV8fGQpLGc9IXguaXNDb3VjaDImJiEhYS5zcmMudWN0eC5sZW5ndGgsaD1bXSxpPXt9LGo9e2RvYzoiIixtb2RlOltdLHNyYzp7ZGI6IiIsdXJsOiIiLHVjdHg6W10sZmlsdGVyOltdLGZuOiIiLHF1ZXJ5Ont9LGlkczpbXX0sdGd0Ont1cmw6IiIsY3JlYXRlOiExLGFjbDohMX19O2M/YS5zcmMuZGJzLnVuaXF1ZSgpLmZvckVhY2goZnVuY3Rpb24oeCl7dmFyIGI9JC5leHRlbmQoITAse30saixPYmplY3QucmVqZWN0KGEsInRhc2tzIikpLGM9YS50Z3QucHJlZml4Kyh4LnN0YXJ0c1dpdGgoYS5zcmMudW5wcmVmaXgpP3gucmVwbGFjZShhLnNyYy51bnByZWZpeCwiIik6eCk7Yi5zcmMuZGI9eCxiLnNyYy51cmw9Zj9sKHgsYi5zcmMudXNlcixiLnNyYy5wd2QpOngsZyYmKGIudXNlcl9jdHg9e25hbWU6Y3cubWUoKSxyb2xlczphLnNyYy51Y3R4LnNsaWNlKDApfSksYi50Z3QudXJsPWwoYi50Z3QudXJsKygiLyI9PWIudGd0LnVybC5zdWJzdHIoLTEpPyIiOiIvIikrbShjKSxiLnRndC51c2VyLGIudGd0LnB3ZCksaC5wdXNoKGIpfSk6KGk9JC5leHRlbmQoITAse30saixPYmplY3QucmVqZWN0KGEsInRhc2tzIikpLGcmJiF4LmlzVVJMKGEuc3JjLnVybCkmJihpLnVzZXJfY3R4PXtuYW1lOmN3Lm1lKCkscm9sZXM6YS5zcmMudWN0eC5zbGljZSgwKX0pLChmfHx4LmlzVVJMKGkuc3JjLnVybCkpJiYoaS5zcmMudXJsPWwoaS5zcmMudXJsLGkuc3JjLnVzZXIsaS5zcmMucHdkKSksKGZ8fHguaXNVUkwoaS50Z3QudXJsKXx8aS50Z3QudXNlciYmaS50Z3QucHdkKSYmKGkudGd0LnVybD1sKGkudGd0LnVybCxpLnRndC51c2VyLGkudGd0LnB3ZCkpLGg9W2ldKSxjJiZjdy5saWIubm90ZSh4LmxhbmcuTVNHX1NUQVJUSU5HKTt2YXIgaz1bXTtyZXR1cm4gaC5mb3JFYWNoKGZ1bmN0aW9uKGEsYil7ay5wdXNoKFEuZGVsYXkoMSsxMDAqYikudGhlbihmdW5jdGlvbigpe3JldHVybiB4LnJ1blRhc2tDaGFpbihhKX0pKX0pLFEuYWxsU2V0dGxlZChrKTtmdW5jdGlvbiBsKGEsYyxlKXt2YXIgZjtpZih4LmlzVVJMKGEpKWY9bmV3IFVSTChhKTtlbHNle2lmKCEoZHx8Y3x8eC5pc0NvdWNoMikpcmV0dXJuIGE7Zj1uZXcgVVJMKGIrbShhKSl9cmV0dXJuIGMmJihmLnVzZXJuYW1lPWMsZi5wYXNzd29yZD1lKSxmKyIifWZ1bmN0aW9uIG0oeCl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudCh4KX19LHJ1blRhc2tDaGFpbjpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YS5sYW5nLGM9Yi5FUlJfSk9CLGQ9T2JqZWN0LGU9YS5QaG8oIlJlcGxpY2F0b3JEQiIpLGY9Y3cubGliLm5vdGUsZz1kLm1lcmdlKHtkb2M6IiIsbW9kZTpbXSxzcmM6e2RiOiIiLHVybDoiIix1Y3R4OltdLGZpbHRlcjpbXSxmbjoiIixxdWVyeTp7fSxpZHM6W119LHRndDp7dXJsOiIiLGNyZWF0ZTohMSxhY2w6ITF9fSx4LCEwKSxoPWEuaXNMb2NhbERCKGcuc3JjLnVybCksaT1oLGo9KGEuaXNMb2NhbERCKGcudGd0LnVybCksISFnLm1vZGUuZmluZCgiZG9jIikpLGs9ISFnLm1vZGUuZmluZCgibGl2ZSIpLGw9ISFnLm1vZGUuZmluZCgiMndheSIpLG09IiIsbj1bXSxvPSQuRGVmZXJyZWQoKSxwPSQuRGVmZXJyZWQoKTtyZXR1cm4gby50aGVuKHEpLnRoZW4ocikudGhlbihzKS50aGVuKHQpLnRoZW4odSkuZmFpbChmdW5jdGlvbigpe2YobS5lc2NhcGVIVE1MKCksImVycm9yIiw1ZTMpLHAucmVqZWN0KDQ5OSxtKX0pLmFsd2F5cyhmdW5jdGlvbigpe3AucmVzb2x2ZSgpfSksby5yZXNvbHZlLmRlYm91bmNlKDEpKCkscC5wcm9taXNlKCk7ZnVuY3Rpb24gcSgpe2lmKGgpe3ZhciB4PSQuRGVmZXJyZWQoKTtyZXR1cm4gYS5SZXEodih7dXJsOltpLCJfYWxsX2RvY3MiLHtzdGFydGtleToiX2Rlc2lnbi8iLGVuZGtleToiX2Rlc2lnbjAifV0sbWV0aG9kOiJHRVQifSkpLnRoZW4oZnVuY3Rpb24oYSl7YS5yb3dzLmZvckVhY2goZnVuY3Rpb24oeCl7bi5wdXNoKHguaWQpfSkseC5yZXNvbHZlKCl9KS5mYWlsKGZ1bmN0aW9uKGEsYil7bT1jLlQuYXNzaWduKGMuR0VULGksYSxiKSx4LnJlamVjdChhLG0pfSkseC5wcm9taXNlKCl9fWZ1bmN0aW9uIHIoKXtpZihoJiZnLnNyYy5maWx0ZXIuZmluZCgvXngoZGVsfGRkb2N8Y29uZmxpY3QpJC8pKXt2YXIgeD0kLkRlZmVycmVkKCksYj1kLmNsb25lKGEuRGRvYywhMCk7cmV0dXJuIG4uZmluZChiLl9pZCk/YS5SZXEodih7dXJsOltpLGIuX2lkXSxtZXRob2Q6IkdFVCJ9KSkudGhlbihmdW5jdGlvbihhKXthLnZlcnNpb249PWIudmVyc2lvbj94LnJlc29sdmUoKTooYi5fcmV2PWEuX3JldixlKCkpfSkuZmFpbChmKTplKCkseC5wcm9taXNlKCl9ZnVuY3Rpb24gZSgpe2EuUmVxKHYoe3VybDpbaSxiLl9pZF0sbWV0aG9kOiJQVVQiLGRhdGE6Y3cubGliLmpzb24oJC5leHRlbmQoYix7c3RhbXA6RGF0ZS5ub3coKX0pKSxkYXRhVHlwZToidGV4dCJ9KSkudGhlbihmdW5jdGlvbigpe3gucmVzb2x2ZSgpfSkuZmFpbChmKX1mdW5jdGlvbiBmKGEsYil7bT1jLlQuYXNzaWduKGMuVVRJTFMsaSxhLGIpLHgucmVqZWN0KGEsbSl9fWZ1bmN0aW9uIHMoKXtpZihnLm1vZGUuZmluZCgiMndheSIpJiZoJiZnLnNyYy5maWx0ZXIuZmluZCgvXihmbnx4ZGVsfHhkZG9jfHhjb25mbGljdCkkLykpe3ZhciB4PWEuRGRvYy5faWQ7aWYoZy5zcmMuZmlsdGVyLmZpbmQoImZuIikpe2lmKCFnLnNyYy5mbilyZXR1cm47eD0iX2Rlc2lnbi8iK2cuc3JjLmZuLnNwbGl0KCIvIilbMF19dmFyIGI9JC5EZWZlcnJlZCgpO3JldHVybiBhLlJlcSh2KHt1cmw6WyJfcmVwbGljYXRlIl0sbWV0aG9kOiJQT1NUIix0aW1lb3V0OjZlNCxkYXRhVHlwZToidGV4dCIsZGF0YTpKU09OLnN0cmluZ2lmeSh7c291cmNlOmcuc3JjLnVybCx0YXJnZXQ6Zy50Z3QudXJsLGNvbnRpbnVvdXM6ITEsY3JlYXRlX3RhcmdldDohIWcudGd0LmNyZWF0ZSxkb2NfaWRzOlt4XX0pfSkpLnRoZW4oZnVuY3Rpb24oKXtiLnJlc29sdmUoKX0pLmZhaWwoZnVuY3Rpb24oeCxhKXtmKGMuVC5hc3NpZ24oYy5GRERPQyxpLHgsYSkrYy5DLCJ3YXJuaW5nIiksYi5yZXNvbHZlKCl9KSxiLnByb21pc2UoKX19ZnVuY3Rpb24gdCgpe31mdW5jdGlvbiB1KCl7dmFyIHgsbj1bXSxvPXtzb3VyY2U6Zy5zcmMudXJsLHRhcmdldDpnLnRndC51cmwsY29udGludW91czohIWcubW9kZS5maW5kKCJsaXZlIiksY3JlYXRlX3RhcmdldDohIWcudGd0LmNyZWF0ZX07Zy5zcmMuZmlsdGVyLmZpbmQoImZuIikmJmcuc3JjLmZuPyhvLmZpbHRlcj1nLnNyYy5mbixkLnNpemUoZy5zcmMucXVlcnkpJiYoby5xdWVyeV9wYXJhbXM9ZC5jbG9uZShnLnNyYy5xdWVyeSwhMCkpKTpnLnNyYy5maWx0ZXIuZmluZCgiaWRzIik/by5kb2NfaWRzPWQuY2xvbmUoZy5zcmMuaWRzLCEwKToobj1nLnNyYy5maWx0ZXIuZmluZEFsbCgvXngoZGVsfGRkb2N8Y29uZmxpY3QpJC8pKS5sZW5ndGgmJihvLmZpbHRlcj1hLkRkb2MuX2lkLnNwbGl0KCIvIilbMV0rIi9leGNsdWRlIixvLnF1ZXJ5X3BhcmFtcz1uLnJlZHVjZShmdW5jdGlvbih4LGEpe3JldHVybiB4W2FdPSJUIix4fSx7fSkpLGomJihvLl9pZD1nLmRvYysoaD8iLCAiK2krIiA9PiI6bD8iLCBvdXRib3VuZCI6IiIpLG8ub3duZXI9Y3cubWUoKSxvLnBob3Rvbl90YXNrPWcuZG9jKyIiLGcudXNlcl9jdHgmJihvLnVzZXJfY3R4PU9iamVjdC5jbG9uZShnLnVzZXJfY3R4LCEwKSkpO3ZhciBwPWcuc3JjLnVybC5zcGxpdCgiLyIpLmNvbXBhY3QoITApLmxhc3QoKS5lc2NhcGVIVE1MKCkscT0kLkRlZmVycmVkKCk7cmV0dXJuIGp8fGt8fGYoYi5NU0dfU1RBUlQuYXNzaWduKHApKSxsJiYoeD0kLmV4dGVuZCghMCx7fSxvLHtzb3VyY2U6Zy50Z3QudXJsLHRhcmdldDpnLnNyYy51cmwsY3JlYXRlX3RhcmdldDohMX0pLGomJih4Ll9pZD1nLmRvYysoaD8iLCAiK2krIiA8PSI6IiwgaW5ib3VuZCIpKSkscihvKS50aGVuKGZ1bmN0aW9uKCl7dmFyIHg9YltqPyJNU0dfT0tfRE9DIjprPyJNU0dfT0tfTElWRSI6Ik1TR19PS19PTkNFIl07Zih4LmFzc2lnbihwKSwib2siKSx0KGcudGd0LnVybCksbD9RLmRlbGF5KG8uY3JlYXRlX3RhcmdldD81ZTM6aj8yZTM6MTAwKS50aGVuKGZ1bmN0aW9uKCl7cygpLmFsd2F5cyhmdW5jdGlvbigpe3EucmVzb2x2ZSgpfSl9KTpxLnJlc29sdmUoKX0pLmZhaWwoZnVuY3Rpb24oeCxhKXttPWMuVC5hc3NpZ24oYy5UTyxpLHgsYSkscS5yZWplY3QoeCxtKX0pLHEucHJvbWlzZSgpO2Z1bmN0aW9uIHIoeCl7dmFyIGI9eC5faWQsYz17dXJsOmI/W2UsYl06WyJfcmVwbGljYXRlIl0sbWV0aG9kOmI/IlBVVCI6IlBPU1QiLGRhdGFUeXBlOiJ0ZXh0IixkYXRhOkpTT04uc3RyaW5naWZ5KHgpLHRpbWVvdXQ6Ynx8eC5jb250aW51b3VzPzFlNDozZTV9O3JldHVybiBhLlJlcSh2KGMpKX1mdW5jdGlvbiBzKCl7cmV0dXJuIHIoeCkudGhlbihmdW5jdGlvbigpe3ZhciB4PWJbKGo/Ik1TR19PS19ET0MiOms/Ik1TR19PS19MSVZFIjoiTVNHX09LX09OQ0UiKSsiX0JBQ0siXTtmKHguYXNzaWduKHApLCJvayIpLHQoZy5zcmMudXJsKX0pLmZhaWwoZnVuY3Rpb24oeCxhKXtmKGMuVC5hc3NpZ24oYy5GUk9NLGkseCxhKStjLkMsIndhcm5pbmciKX0pfWZ1bmN0aW9uIHQoeCl7dmFyIGI9YS5pc0xvY2FsREIoeCk7IWsmJmImJiQubXkucmFkaW8oImRibGlzdCIsW2JdKSxqJiYkLm15LnJhZGlvKCJkYmxpc3QiLFtlXSl9fWZ1bmN0aW9uIHYoeCl7cmV0dXJuICQuZXh0ZW5kKCEwLHt1cmw6W10sbWV0aG9kOiIiLGNvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi9qc29uIixoZWFkZXJzOnsiWC1Db3VjaC1GdWxsLUNvbW1pdCI6InRydWUifSxkYXRhVHlwZToianNvbiIsdGltZW91dDoxZTR9LHgpfX0sbmVlZFRndENyZWRzOmZ1bmN0aW9uKCl7dmFyIHg9dGhpcy5kYXRhO3JldHVybiJNdWx0aSIhPXgudGFzayYmKCJDb3B5Ij09eC50YXNrJiYhdGhpcy5pc1VSTCh4LnRndC51cmwpfHwhKHgudGd0LmNyZWF0ZSYmIXRoaXMuREJzLmZpbmQoeC50Z3QudXJsKSYmKHRoaXMuaXNDb3VjaDJ8fHgubW9kZS5maW5kKCJkb2MiKSkpJiYhKHgubW9kZS5maW5kKCJkb2MiKXx8dGhpcy5pc1VSTCh4LnRndC51cmwpfHx4Lm1vZGUuZmluZCgibGl2ZSIpJiZ0aGlzLmlzQ291Y2gyKSl9LER1bXBaaXA6e2lkOiJjdy5QaG90b24uRHVtcFppcCIscGFyYW1zOntyZXN0eWxlOjIwMH0sRGF0YVVybHM6W10sbGFuZzp7fSxyZXF1aXJlOlt7IndpbmRvdy5Xcml0YWJsZVN0cmVhbSI6ImxpYi93ZWJzdHJlYW1zLmpzIn0seyJ3aW5kb3cuc3RyZWFtU2F2ZXIiOiJsaWIvc3RyZWFtc2F2ZXIuanMiLCJ3aW5kb3cuZmZsYXRlIjoibGliL2ZmbGF0ZS5qcyJ9XSxkYXRhOntkYnM6W10sbmFtZToiZHVtcCIsemlwOm51bGwsdXJsOiIiLG9wdHM6W10sYnl0ZXM6MCx6Ynl0ZXM6MCxkb25lOiExLHN0YXR1czoicmVhZHkiLG1heFJlYWRTdHJlYW1zOjQsbWF4RmVlZENodW5rOjIwOTcxNTIsbWluRmVlZERvY3M6MTUsbWF4RmVlZERvY3M6MTAwLG1heFJlc3RhcnRzOjN9LERCczp7fSxTdGFtcDowLERvY0xpc3Q6W10sREJzUmVhZEN0cjowLFN0cmVhbTp7YWJvcnQ6ZnVuY3Rpb24oKXt9fSxJbmZvRG9jOnt9LGluaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPWEuZGF0YTtyZXR1cm4geC5odG1sKGEuSFRNTC5hc3NpZ24oYS5sYW5nKSkseC50aGVuKGZ1bmN0aW9uKCl7YS5TdHJlYW09YS5TdHJlYW1Eb2NzKCksYi5zdGF0dXM9InN0cmVhbWluZyJ9LmRlYm91bmNlKDUwKSksYS5SZWFkREJzSW5mbygpLnRoZW4oZnVuY3Rpb24oKXthLlN0YW1wPURhdGUubm93KCl9KX0sdWk6eyIjZGItcm93cyI6e2JpbmQ6ImRicyIsaW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzO2EuZGF0YTthLm5pY2VTY3JvbGwoeCl9LGxpc3Q6JzxkaXYgY2xhc3M9Im10NSBwdDUgcGI1IGJiZCI+PC9kaXY+JyxtYW5pZmVzdDpmdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5EQlJvd30saWQ6ZnVuY3Rpb24oeCl7cmV0dXJuIHgudXJsfSxoYXNoOmZ1bmN0aW9uKHgpe3JldHVybiBjdy5saWIuc2RibShbeC50b3RhbERvY3MrIiIseC50b3RhbFNpemUrIiJdKX19LCIjYnl0ZXMiOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIHguYnl0ZXM/dGhpcy5CeXRlc1QuYXNzaWduKHguYnl0ZXMuYnl0ZXMoMSkucmVwbGFjZSgvQiQvLCJiIikseC5kb25lPyJmaS1jaGVjayBvNzAgZ3JlZW4gZnM4MCI6ImZpLWFycm93LXJpZ2h0IG81MCB4Z3JheSBmczgwIix4LnpieXRlcy5ieXRlcygxKS5yZXBsYWNlKC9CJC8sImIiKSk6IiJ9LCIjc3RyZWFtLXNwZWVkIjp7YmluZDpmdW5jdGlvbih4LGEpe3ZhciBiPShEYXRlLm5vdygpLXRoaXMuU3RhbXArMSkvMWUzLGM9KDgqeC5ieXRlcy9ifDApLmNsYW1wKDAsMWU5KTtyZXR1cm4gYz9jLmJ5dGVzKDEpLnJlcGxhY2UoL0IkLywiYml0L3MiKToiIn0sd2F0Y2g6WyIjYnl0ZXMiXX0sIiNidG4tc3RvcCI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtudWxsIT1hJiZ0aGlzLlN0cmVhbS5hYm9ydCgpfX19LHN0eWxlOnsiICI6ZnVuY3Rpb24oeCl7cmV0dXJuInN0cmVhbWluZyI9PXRoaXMuZGF0YS5zdGF0dXMmJngudHJpZ2dlcigibGF5b3V0IiksImZvbnQtc2l6ZToxNXB4OyBsaW5lLWhlaWdodDoxLjRlbTsifX0sSFRNTDonPGRpdiBjbGFzcz0iZnMxMzAgZnc0MDAgY20iPjxzcGFuIGNsYXNzPSJmaS1saXN0IG80MCBmczg1IG1yMyI+PC9zcGFuPiB7VFhUX1RJVExFfTwvZGl2PjxkaXYgaWQ9ImRiLXJvd3MiIGNsYXNzPSJtdDEwIGJ0ZCBtYjEwIiBzdHlsZT0ibWF4LWhlaWdodDo1MDBweDsiPjwvZGl2PjxkaXY+PGRpdiBpZD0ic3RyZWFtLXNwZWVkIiBjbGFzcz0idzI1cCBvNTAgZnIgdGFyIG10NSI+PC9kaXY+PGRpdiBpZD0iYnl0ZXMiIGNsYXNzPSJmciB3NDVwIG10NSBvNzAiPjwvZGl2PjxidXR0b24gaWQ9ImJ0bi1zdG9wIiBjbGFzcz0ibXI1Ij57QlROX0FCT1JUfTwvYnV0dG9uPjwvZGl2PicsQnl0ZXNUOic8c3BhbiBjbGFzcz0iZGliIHc0NXAgdGFyIj57MX08L3NwYW4+PHNwYW4gY2xhc3M9ImRpYiB3MTBwIHRhYyB7Mn0iPjwvc3Bhbj48c3BhbiBjbGFzcz0iZGliIHc0NXAgdGFsIj57M308L3NwYW4+JyxkaWU6ZnVuY3Rpb24oeCl7dGhpcy5EYXRhVXJscy5mb3JFYWNoKGZ1bmN0aW9uKHgpe1VSTC5yZXZva2VPYmplY3RVUkwoeCl9KX0sUmVhZERCc0luZm86ZnVuY3Rpb24oKXt2YXIgeD10aGlzLGE9eC5kYXRhLGI9YS5vcHRzfHxbXTtyZXR1cm4geC5EQnNSZWFkQ3RyPWEuZGJzLmxlbmd0aCxRLmFsbChhLmRicy5tYXAoZnVuY3Rpb24oYSl7dmFyIGQ9L14oaHR0cFtzXT86XC9cL3xcLykvLnRlc3QoYS51cmwpP2EudXJsLnNwbGl0KCIvIikuY29tcGFjdCghMCkubGFzdCgpOmEudXJsLGU9YS5kcm9wLmZpbHRlcnx8W10sZj1lLmZpbmQoImlkcyIpJiZhLmRyb3AuaWRzfHxbXSxnPS9eKGh0dHBbc10/OlwvXC98XC8pLy50ZXN0KGEudXJsKT9hLnVybDoiLyIrYyhhLnVybCksaD0hIWUuZmluZCgieGRlbCIpO3JldHVybiB4LlJlcShnKS50aGVuKGZ1bmN0aW9uKGMpe3ZhciBlPShjLmRvY19jb3VudHx8MCkrKGg/MDpjLmRvY19kZWxfY291bnR8fDApLGc9KGMuc2l6ZXM/Yy5zaXplcy5hY3RpdmU6Yy5kYXRhX3NpemUpfHwwO2EudG90YWxTaXplPWcsYS50b3RhbERvY3M9ZSxhLm1heFNlcT1jLnVwZGF0ZV9zZXE/KyhjLnVwZGF0ZV9zZXErIiIpLnNwbGl0KCItIilbMF06LTE7dmFyIGk9WyJkb2NfY291bnQiXTtofHxpLnB1c2goImRvY19kZWxfY291bnQiKSxiLmZpbmQoInFucCIpJiZpLnB1c2goInByb3BzIiwiY2x1c3RlciIpLHguSW5mb0RvY1tkXT0kLmV4dGVuZCghMCx7bmFtZTpkLGZpbHRlcjpmLmxlbmd0aD9mOm51bGwsc3RhcnRfc2VxOjAsbWF4X3NlcTphLm1heFNlcSx0czpEYXRlLm5vdygpLHNlY3VyaXR5Om51bGwscmF3X3NpemU6Zyxkb2NfY291bnQ6MCxkb2NfZGVsX2NvdW50OjB9LE9iamVjdC5zZWxlY3QoYyxpKSl9KS50aGVuKGZ1bmN0aW9uKCl7aWYoYi5maW5kKCJhY2wiKSl7dmFyIGE9JC5EZWZlcnJlZCgpO3JldHVybiB4LlJlcShnKyIvX3NlY3VyaXR5IikudGhlbihmdW5jdGlvbihiKXtPYmplY3QuaXNPYmplY3QoYikmJih4LkluZm9Eb2NbZF0uc2VjdXJpdHk9YiksYS5yZXNvbHZlKCl9KS5mYWlsKGZ1bmN0aW9uKCl7YS5yZXNvbHZlKCl9KSxhLnByb21pc2UoKX19KS5mYWlsKGZ1bmN0aW9uKCl7Y3cubGliLm5vdGUoeC5sYW5nLkVSUl9EQl9SRUFELmFzc2lnbihkKSwiZXJyb3IiKX0pfSkpO2Z1bmN0aW9uIGMoeCl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudCh4KX19LFN0cmVhbURvY3M6ZnVuY3Rpb24oKXt2YXIgeCxhLGI9dGhpcyxjPWIuZGF0YSxkPXt9LGU9e30sZj1bXSxnPVtdLGg9Yy5tYXhSZWFkU3RyZWFtcyxpPWMubWF4UmVzdGFydHN8fDMsaj0hMCxrPSExLGw9QS50aHJvdHRsZSgyNTApLG09InsxfS97Mn0/cmV2PXszfSZhdHRhY2htZW50cz10cnVlIixuPSJ7MX0vezJ9P2F0dGFjaG1lbnRzPXRydWUiLG89InsxfS97Mn0/b3Blbl9yZXZzPXszfSZhdHRhY2htZW50cz10cnVlIjsiVGV4dEVuY29kZXIiaW4gd2luZG93Pyh4PW5ldyBUZXh0RW5jb2RlcixhPWZ1bmN0aW9uKGEpe3JldHVybiB4LmVuY29kZShhKX0pOmE9ZnVuY3Rpb24oeCl7cmV0dXJuIGZmbGF0ZS5zdHJUb1U4KHgpfTt2YXIgcCxxPW5ldyBmZmxhdGUuWmlwLHI9c3RyZWFtU2F2ZXIuY3JlYXRlV3JpdGVTdHJlYW0oYy5uYW1lKyIuemlwIix7cGF0aG5hbWU6Ii9fc3RyZWFtLyIrYy5uYW1lKyIuemlwIixzaWduYWw6c30pLmdldFdyaXRlcigpO3JldHVybiBxLm9uZGF0YT1mdW5jdGlvbih4LGEsYil7eD9DKCJGYWlsZWQgemlwcGluZzogIisoKHh8fCJ1bmtub3duIGVycm9yIikrIiIpLnRydW5jYXRlKDEwMCkpOihhJiZhLmxlbmd0aCYmKHIud3JpdGUoYSksYy56Ynl0ZXMrPWEubGVuZ3RoKSxiJiYoaz9DKCJBYm9ydGVkIik6QigpKSl9LHA9Yi5QaG8sdCgiX2luZm8uanNvbiIsYShKU09OLnN0cmluZ2lmeSh7dXNlcjpjdy5tZSgpLGRhdGU6KG5ldyBEYXRlKS50b0lTT1N0cmluZygpLnJlcGxhY2UoL1wuXGQrLywiIikscGhvdG9uOnAoIlZlcnNpb24iKSsiLiIrcCgiYnVpbGQiKSxjb3VjaDpwKFsiQ291Y2giLCJ2ZXJzaW9uIl0pLGhvc3Q6Y3cubGliLmNyYzIod2luZG93LmxvY2F0aW9uLmhvc3RuYW1lKSxkYnM6T2JqZWN0LnZhbHVlcyhiLkluZm9Eb2MpfSxudWxsLCIgICIpKSksYy5kYnMuZm9yRWFjaChmdW5jdGlvbih4KXtiLkRCc1t4LnVybF09eCxPYmplY3QuaXNBcnJheSh4LmRyb3AuaWRzKSYmeC5kcm9wLmlkcy5sZW5ndGg/KHguZHJvcC5pZHMuZm9yRWFjaChmdW5jdGlvbihhKXt1KHgudXJsLHtpZDphLGRvYzpudWxsLHJldnM6W119KX0pLGIuREJzUmVhZEN0ci09MSxnLnB1c2gobnVsbCkpOmIuUHJlcGFyZURvY0xpc3QoeCx1KS50aGVuKGZ1bmN0aW9uKGEpe0QoIkRCOiB7MX0sIGRvY3M6IHtkb2NzfSwgc2VxOiB7c2VxfSIuYXNzaWduKGEpLmFzc2lnbih4LnVybC5zcGxpdCgiLyIpLmxhc3QoKSkpLGIuREJzUmVhZEN0cnx8Zy5wdXNoKG51bGwpLHkoKX0pLmZhaWwoZnVuY3Rpb24oKXtDKGIubGFuZy5FUlJfRE9DTElTVCl9KX0pLHthYm9ydDpmdW5jdGlvbih4KXtrPSEwLEMoeHx8Yi5sYW5nLk1TR19URVJNQllVKX19O2Z1bmN0aW9uIHMoeCl7InVzZXIgYWJvcnRlZCI9PXgmJkMoIlVzZXIgYWJvcnRlZCIpfWZ1bmN0aW9uIHQoeCxhKXt2YXIgYixjPWEuYnl0ZUxlbmd0aDtiPWM8MTI4P25ldyBmZmxhdGUuWmlwUGFzc1Rocm91Z2goeCk6YzwxNjM4ND9uZXcgZmZsYXRlLlppcERlZmxhdGUoeCk6bmV3IGZmbGF0ZS5Bc3luY1ppcERlZmxhdGUoeCkscS5hZGQoYiksYi5wdXNoKGEsITApfWZ1bmN0aW9uIHUoeCxhKXt2YXIgYj0vXihodHRwW3NdPzpcL1wvfFwvKS8udGVzdCh4KSxjPWEuaWQsZD1hLnJldjtyZXR1cm4gYS5yZXZzLmxlbmd0aCYmZy5wdXNoKHtkYjp4LGlkOmMsbmFtZTpbdyhiP3guc3BsaXQoIi8iKS5jb21wYWN0KCEwKS5sYXN0KCk6eCkrIi8iLCJfY29uZmxpY3RzLyIsdyhjLCEwKSsiLmpzb24iXS5qb2luKCIiKSx1cmw6by5hc3NpZ24oYj94OiIvIit2KHgpLHYoYyksdihKU09OLnN0cmluZ2lmeShhLnJldnMpKSksb3B0czp7aGVhZGVyczp7QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uIn19LGlzUmV2czohMH0pLGcucHVzaCh7ZGI6eCxpZDpjLG5hbWU6W3coYj94LnNwbGl0KCIvIikuY29tcGFjdCghMCkubGFzdCgpOngpKyIvIixhLmRlbD8iX2RlbGV0ZWQvIjoiIix3KGMsYS5kZWwpKyIuanNvbiJdLmpvaW4oIiIpLGRvYzphLmRvYyx1cmw6KGQ/bTpuKS5hc3NpZ24oYj94OiIvIit2KHgpLHYoYyksZCksb3B0czp7aGVhZGVyczp7QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uIn19fSkseSgpLGt9ZnVuY3Rpb24gdih4KXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHgpfWZ1bmN0aW9uIHcoeCxhKXt2YXIgYj0hYSYmL15fZGVzaWduXC8vLnRlc3QoeCk7cmV0dXJuKGI/Il9kZXNpZ24vIjoiIikrKGI/eC5zdWJzdHIoOCk6eCkucmVwbGFjZSgvWyJcLzolPD5cP1xcXHxdL2csdikucmVwbGFjZSgvXCovZywiJTJBIil9ZnVuY3Rpb24geSgpe2lmKCFrKWZvcih2YXIgeD17fTtPYmplY3Quc2l6ZShkKTxoJiZnLmxlbmd0aCYmbnVsbCE9PXg7KW51bGw9PT0oeD1nLnNoaWZ0KCkpPzA9PU9iamVjdC5zaXplKGQpP3EuZW5kKCk6Zy5wdXNoKG51bGwpOmRbeC5uYW1lXT16KHgpfWZ1bmN0aW9uIHooeCl7aWYoaylyZXR1cm4gJC5EZWZlcnJlZCgpLnJlamVjdCgpO3ZhciBoPSQuRGVmZXJyZWQoKTtyZXR1cm4gbnVsbCE9eC5kb2M/bS5kZWxheSgwLHguZG9jKTpmZXRjaCh4LnVybCx4Lm9wdHMpLnRoZW4oZnVuY3Rpb24oYSl7aWYoYS5vaylyZXR1cm4geC5pc1JldnM/YS5qc29uKCk6YS5hcnJheUJ1ZmZlcigpOzQwND09YS5zdGF0dXM/KGIuREJzW3guZGJdLmRvbmVEb2NzKz0xLGYucHVzaCh4LnVybCksZnVuY3Rpb24oKXtoLnJlc29sdmUoKX0uZGVib3VuY2UoNTApKCkpOihlW3gudXJsXT0oZVt4LnVybF18fFtdKS5wdXNoKFthLnN0YXR1cyxEYXRlLm5vdygpXS5qb2luKCIgIikpLGVbeC51cmxdLmxlbmd0aDxpP251bGw9PT1nLmxhc3QoKT8oZy5wb3AoKSxnLnB1c2goeCxudWxsKSk6Zy5wdXNoKHgsbnVsbCk6aj9DKGIubGFuZy5FUlJfRklMRVJFQUQuYXNzaWduKHgudXJsLmVzY2FwZUhUTUwoKSkpOihiLkRCc1t4LmRiXS5kb25lRG9jcys9MSxmdW5jdGlvbigpe2gucmVzb2x2ZSgpfS5kZWJvdW5jZSg1MCkoKSkpfSkudGhlbihtKS5jYXRjaChmdW5jdGlvbigpe0QoIkZhaWxlZCByZWFkaW5nICIreC5pZCksaC5yZWplY3QoYi5sYW5nLkVSUl9GSUxFUkUuYXNzaWduKHguaWQpKX0pLGguYWx3YXlzKGZ1bmN0aW9uKCl7ZGVsZXRlIGRbeC5uYW1lXSx5KCl9KSxoLnByb21pc2UoKTtmdW5jdGlvbiBtKGQpe3ZhciBmPSEwO2lmKGQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciljLmJ5dGVzKz1kLmJ5dGVMZW5ndGgsdCh4Lm5hbWUsbmV3IFVpbnQ4QXJyYXkoZCkpO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBkKXt2YXIgZz1hKGQpO2MuYnl0ZXMrPWcuYnl0ZUxlbmd0aCx0KHgubmFtZSxnKX1lbHNlIE9iamVjdC5pc0FycmF5KGQpJiYoZj0hMSx0KHgubmFtZSxhKCJbXG4iK2QubWFwKGZ1bmN0aW9uKHgpe3JldHVybiBKU09OLnN0cmluZ2lmeSh4Lm9rKX0pLmpvaW4oIixcbiIpKyJcbl0iKSkpO0QoIkRvbmUgIit4LmRiKyIvIit4Lm5hbWUpLGgucmVzb2x2ZSgpLGYmJihiLkRCc1t4LmRiXS5kb25lRG9jcys9MSksZGVsZXRlIGVbeC51cmxdLGwoKX19ZnVuY3Rpb24gQSgpe2IubXkuY2hlY2soIiNieXRlcyIpLCQubXkucmFkaW8oImRiU3RyZWFtVXBkYXRlIix7fSl9ZnVuY3Rpb24gQigpe0QoIkRvbmUiKSxjLmRvbmU9ITAsci5jbG9zZSgpLEEoKSxjdy5saWIubm90ZSgnPHNwYW4gY2xhc3M9ImZ3NDAwIj57MX08L3NwYW4+Jy5hc3NpZ24oYi5sYW5nLk1TR19EVU1QRE9ORSksIm9rIiw1ZTMpLGZ1bmN0aW9uKCl7Yi5teS5jb21taXQoKX0uZGVsYXkoM2UzKX1mdW5jdGlvbiBDKHgpe2lmKGMuZG9uZSlyZXR1cm4gYi5teS5jb21taXQoKTtrPSEwLGN3LmxpYi5ub3RlKHgsImVycm9yIiw2ZTMpLHIuYWJvcnQoKSxxLnRlcm1pbmF0ZSgpLGMuZXJyb3I9eCxiLm15LmNvbW1pdCgpfWZ1bmN0aW9uIEQoeCxhLGMpe2IuX2RlYnVnJiZjb25zb2xlLmxvZyh4LGEsYyl9fSxQcmVwYXJlRG9jTGlzdDpmdW5jdGlvbih4LGEpe3ZhciBiPSQuRGVmZXJyZWQoKSxjPXRoaXMsZD1jLmRhdGEsZT1kLm1heEZlZWRDaHVuayxmPXgudG90YWxTaXplJiZ4LnRvdGFsRG9jcz94LnRvdGFsU2l6ZS94LnRvdGFsRG9jc3wwOjAsZz0hKGYmJiEoZj5lL2QubWluRmVlZERvY3MpKSxoPShnP2QubWF4RmVlZERvY3M6TWF0aC5jZWlsKGUvZikpLmNsYW1wKGQubWluRmVlZERvY3MsZC5tYXhGZWVkRG9jcyksaT1kLm1heFJlc3RhcnRzfHwzLGo9eC5zaW5jZXx8MCxrPSEhKHguZHJvcC5maWx0ZXJ8fFtdKS5maW5kKCJ4ZGRvYyIpLGw9ISEoeC5kcm9wLmZpbHRlcnx8W10pLmZpbmQoInhkZWwiKSxtPSEhKHguZHJvcC5maWx0ZXJ8fFtdKS5maW5kKCJ4cmV2cyIpLG49Wy9eKGh0dHBbc10/OlwvXC98XC8pLy50ZXN0KHgudXJsKT94LnVybDoiLyIrcSh4LnVybCksIi9fY2hhbmdlcz9zaW5jZT17MX0iLG0/IiI6IiZzdHlsZT1hbGxfZG9jcyIsZz8iIjoiJmluY2x1ZGVfZG9jcz10cnVlJmF0dGFjaG1lbnRzPXRydWUiLCImbGltaXQ9IitoXS5qb2luKCIiKSxvPXMuZGVib3VuY2UoMWUzKSxwPTA7cmV0dXJuIHIoKSxiLnByb21pc2UoKTtmdW5jdGlvbiBxKHgpe3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoeCl9ZnVuY3Rpb24gcigpe2MuUmVxKG4uYXNzaWduKGopKS50aGVuKGZ1bmN0aW9uKGQpe2o9ZC5sYXN0X3NlcTt2YXIgZT0oZC5yZXN1bHRzfHxbXSkuZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiF0KGEuc2VxLHgubWF4U2VxKX0pLGY9ITE7aWYoIWUubGVuZ3RoKXJldHVybiBjLkRCc1JlYWRDdHItPTEsYi5yZXNvbHZlKHtkb2NzOnAsc2VxOmp9KTtmb3IodmFyIGg9ZS5maWx0ZXIoZnVuY3Rpb24oeCl7cmV0dXJuIShsJiZ4LmRlbGV0ZWR8fGsmJi9eX2Rlc2lnblwvLy50ZXN0KHguaWQpKX0pLm1hcChmdW5jdGlvbih4KXtyZXR1cm57aWQ6eC5pZCxyZXY6eC5jaGFuZ2VzWzBdLnJldixkZWw6ISF4LmRlbGV0ZWQsZG9jOmd8fCF4LmRvYz9udWxsOkpTT04uc3RyaW5naWZ5KHguZG9jKSxyZXZzOm0/W106eC5jaGFuZ2VzLnNsaWNlKDEpLm1hcChmdW5jdGlvbih4KXtyZXR1cm4geC5yZXZ9KX19KSxpPTA7aTxoLmxlbmd0aCYmIWY7aSsrKWY9YSh4LnVybCxoW2ldKSxwKz0xO2Y/Yi5yZWplY3Qoe2Vycm9yOiJhYm9ydGVkIixkb2NzOnAsc2VxOmp9KTpyKCl9KS5mYWlsKGZ1bmN0aW9uKHgsYSxiKXtjb25zb2xlLmxvZyh4LGEsYiksbygpfSl9ZnVuY3Rpb24gcygpe2lmKChpLT0xKTwxKXJldHVybiBiLnJlamVjdChjLmxhbmcuRVJSX0RPQ0xJU1QpO3IoKX1mdW5jdGlvbiB0KHgsYSl7aWYoLTE9PWEpcmV0dXJuITE7dmFyIGI9eCsiLSI7cmV0dXJuK2Iuc3Vic3RyKDAsYi5pbmRleE9mKCItIikpPmF9fSxEQlJvdzp7aWQ6ImN3LlBob3Rvbi5EdW1wWmlwLkRCUm93Iixpbmhlcml0OlsibGFuZyJdLGluaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpczthLmRhdGE7eC5odG1sKGEuSFRNTCl9LGRhdGE6e3VybDoiIixzaW5jZTowLGRyb3A6e2ZpbHRlcjpbXSxmbjoiIixpZHM6W10scXVlcnk6e319LG1vZGU6Impzb24iLHRvdGFsU2l6ZTowLHRvdGFsRG9jczowLGRvbmVEb2NzOjAsbWF4U2VxOjB9LHVpOnsiI251bS10b3RhbCI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtpZigheC50b3RhbERvY3MpcmV0dXJuIiI7dmFyIGI9eC5kcm9wLmlkcy5sZW5ndGh8fHgudG90YWxEb2NzO3JldHVybiBNYXRoLmZsb29yKHguZG9uZURvY3MvYioxMDApLmNsYW1wKDAsMTAwKSsiJSJ9LGxpc3Rlbjp7ZGJTdHJlYW1VcGRhdGU6ZnVuY3Rpb24oeCxhKXtpZihPYmplY3QuaXNPYmplY3QoYSkpcmV0dXJuIG51bGx9fX0sIiNudW0tYmciOntiaW5kOmZ1bmN0aW9uKHgsYSxiKXt2YXIgYz14LmRyb3AuaWRzLmxlbmd0aHx8eC50b3RhbERvY3M7Yz9iLmNzcyh7aGVpZ2h0Oih4LmRvbmVEb2NzL2MqMi41KS5jbGFtcCgwLDIuNSkrImVtIn0pOmIuY3NzKHtoZWlnaHQ6IjBweCJ9KX0sbGlzdGVuOntkYlN0cmVhbVVwZGF0ZTpmdW5jdGlvbih4LGEpe2lmKE9iamVjdC5pc09iamVjdChhKSlyZXR1cm4gbnVsbH19fSwiI2RiLW5hbWUiOntiaW5kOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudCgvXmh0dHBbc10/OlwvXC8vLnRlc3QoeC51cmwpfHwiLyI9PXgudXJsWzBdP3gudXJsLnNwbGl0KCIvIikubGFzdCgpOngudXJsKS50cnVuY2F0ZSgzNSwibWlkZGxlIiwiLi4uIikuZXNjYXBlSFRNTCgpfX0sIiNkYi10b3RhbHMiOntiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGI9eC5kcm9wLmlkcy5sZW5ndGg7Ynx8eC50b3RhbERvY3M7cmV0dXJuIGI/dGhpcy5sYW5nLk1TR19UT1RBTDEoYix4LnRvdGFsRG9jcyk6dGhpcy5sYW5nLk1TR19UT1RBTDIoeC50b3RhbERvY3MseC50b3RhbFNpemUpfX19LEhUTUw6JzxkaXYgY2xhc3M9Im51bS1jb250IGRpYiB2YXQiPjxkaXYgaWQ9Im51bS1iZyIgY2xhc3M9IncxMDBwIj48L2Rpdj48ZGl2IGlkPSJudW0tdG90YWwiIGNsYXNzPSJ3MTAwcCB0YWMgZnMxMTAgZnczMDAgbzcwIGxoMjAwIHB0MSI+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0iZGItaW5mbyBkaWIgdmF0Ij48ZGl2IGlkPSJkYi1uYW1lIiBjbGFzcz0idzEwMHAgZnMxMjAgZnc0MDAgbncgb2ggZWxsIj48L2Rpdj48ZGl2IGlkPSJkYi10b3RhbHMiIGNsYXNzPSJ3MTAwcCBmczkwIG84MCBudyBvaCBlbGwiPjwvZGl2PjwvZGl2Picsc3R5bGU6eyIgLm51bS1jb250Ijp7IiI6IndpZHRoOjNlbTsgaGVpZ2h0OjIuNWVtOyB0ZXh0LWFsaWduOmNlbnRlcjsgcG9zaXRpb246IHJlbGF0aXZlOyBib3JkZXItcmFkaXVzOiAycHg7IG92ZXJmbG93OiBoaWRkZW47IGJhY2tncm91bmQtY29sb3I6I2YyZjVmODsiLCIgI251bS1iZyI6InBvc2l0aW9uOmFic29sdXRlOyBib3R0b206MDsgbGVmdDogMDsgYmFja2dyb3VuZC1jb2xvcjojYzNlZTk0OyB0cmFuc2l0aW9uOiBoZWlnaHQgMC4yczsifSwiIC5kYi1pbmZvIjp7IiI6IndpZHRoOiBjYWxjKDEwMCUgLSAzZW0pOyBvdmVyZmxvdzogaGlkZGVuOyBwYWRkaW5nLWxlZnQ6IDFlbTsifX19fSxVbmR1bXA6e2lkOiJjdy5QaG90b24uVW5kdW1wIixwYXJhbXM6e3Jlc3R5bGU6MjAwfSxEYXRhVXJsczpbXSxsYW5nOnt9LHJlcXVpcmU6W3sid2luZG93LldyaXRhYmxlU3RyZWFtIjoibGliL3dlYnN0cmVhbXMuanMifSx7IndpbmRvdy5mZmxhdGUiOiJsaWIvZmZsYXRlLmpzIn1dLGRhdGE6e2RiczpbXSxkb2NzVG9TYXZlOltdLG9wdHM6W10sYnl0ZXM6MCx6Ynl0ZXM6MCxkb25lOiExLHN0YXR1czoiIixtYXhCdWZmZXI6MmU4LG1heFdyaXRlU3RyZWFtczo2LG1heFJlc3RhcnRzOjN9LFVuemlwREJtYXA6bnVsbCxVbnppcFN0cmVhbTp7fSxpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj1hLmRhdGE7eC5odG1sKGEuSFRNTC5hc3NpZ24oYS5sYW5nKSkseC50aGVuKGZ1bmN0aW9uKCl7Yi5zdGF0dXM9InN0cmVhbWluZyIsYS5QcmVwYXJlREJzKCkudGhlbihmdW5jdGlvbigpe2EuU2F2ZXI9YS5TYXZlRG9jcygpfSl9LmRlYm91bmNlKDUwKSksYS5TdGFtcD1EYXRlLm5vdygpfSx1aTp7IiNkYi1yb3dzIjp7YmluZDoiZGJzIixpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXM7YS5kYXRhO2EubmljZVNjcm9sbCh4KX0sbGlzdDonPGRpdiBjbGFzcz0ibXQ1IHB0NSBwYjUgYmJkIj48L2Rpdj4nLG1hbmlmZXN0OmZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLkRCUm93fSxpZDpmdW5jdGlvbih4KXtyZXR1cm4geC51cmx9LGhhc2g6ZnVuY3Rpb24oeCl7cmV0dXJuIGN3LmxpYi5zZGJtKFt4LnRvdGFsRG9jcysiIix4LnRvdGFsU2l6ZSsiIl0pfX0sIiNieXRlcyI6ZnVuY3Rpb24oeCxhKXtyZXR1cm4geC5ieXRlcz8nPHNwYW4gY2xhc3M9ImZpLXVwbG9hZC1jbG91ZCBvNTAgeGdyYXkgZnM4MCI+PC9zcGFuPiAnK3guYnl0ZXMuYnl0ZXMoMSkucmVwbGFjZSgvQiQvLCJiIik6IiJ9LCIjc3RyZWFtLXNwZWVkIjp7YmluZDpmdW5jdGlvbih4LGEpe3ZhciBiPShEYXRlLm5vdygpLXRoaXMuU3RhbXArMSkvMWUzLGM9KDgqeC5ieXRlcy9ifDApLmNsYW1wKDAsMWU5KTtyZXR1cm4gYz9jLmJ5dGVzKDEpLnJlcGxhY2UoL0IkLywiYml0L3MiKToiIn0sd2F0Y2g6WyIjYnl0ZXMiXX0sIiNidG4tc3RvcCI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtudWxsIT1hJiYodGhpcy5BYm9ydCgpLHRoaXMubXkuY29tbWl0KCkpfX19LFNhdmVyOm51bGwsQWJvcnQ6ZnVuY3Rpb24oKXt2YXIgeD10aGlzLGE9eC5kYXRhO3RyeXt4LlNhdmVyLmFib3J0KCl9Y2F0Y2goeCl7fXRyeXt4LlVuemlwU3RyZWFtLmFib3J0KCl9Y2F0Y2goeCl7fSQubXkucmFkaW8oImRibGlzdCIsYS5kYnMubWFwKGZ1bmN0aW9uKHgpe3JldHVybiB4Lm5hbWV9KSksYS5zdGF0dXM9ImFib3J0ZWQifSxIVE1MOic8ZGl2IGNsYXNzPSJmczEzMCBmdzQwMCBjbSI+PHNwYW4gY2xhc3M9ImZpLWxpc3QgbzQwIGZzODUgbXIzIj48L3NwYW4+IHtUWFRfVElUTEV9PC9kaXY+PGRpdiBpZD0iZGItcm93cyIgY2xhc3M9Im10MTAgYnRkIG1iMTAiIHN0eWxlPSJtYXgtaGVpZ2h0OjQ1MHB4OyI+PC9kaXY+PGRpdj48ZGl2IGlkPSJzdHJlYW0tc3BlZWQiIGNsYXNzPSJ3MjVwIG81MCBmciB0YXIgbXQ1Ij48L2Rpdj48ZGl2IGlkPSJieXRlcyIgY2xhc3M9ImZyIHcyNXAgbXQ1IG83MCI+PC9kaXY+PGJ1dHRvbiBpZD0iYnRuLXN0b3AiIGNsYXNzPSJtcjUiPntCVE5fQUJPUlR9PC9idXR0b24+PC9kaXY+JyxzdHlsZTp7IiAiOmZ1bmN0aW9uKHgpe3JldHVybiJzdHJlYW1pbmciPT10aGlzLmRhdGEuc3RhdHVzJiZ4LnRyaWdnZXIoImxheW91dCIpLCJmb250LXNpemU6MTVweDsgbGluZS1oZWlnaHQ6MS40ZW07In19LFByZXBhcmVEQnM6ZnVuY3Rpb24oKXt2YXIgeCxhPXRoaXMsYj1hLmRhdGEsYz0oYS5VbnppcERCbWFwLGEuUGhvKCJBbGwiKSksZD1hLlBobygiQ291Y2giKSxlPU9iamVjdC5pc09iamVjdCxmPVtdO2lmKGIub3B0cy5maW5kKCJjcmVhdGUiKSl7dmFyIGc9Yi5kYnMucmVkdWNlKGZ1bmN0aW9uKHgsYSl7aWYoY1thLm5hbWVdKXJldHVybiB4O2YucHVzaChhLm5hbWUpO3ZhciBnPSQuZXh0ZW5kKHtuYW1lOmEubmFtZSxzZWN1cml0eTpiLm9wdHMuZmluZCgiYWNsIikmJmUoYS5zZWN1cml0eSk/YS5zZWN1cml0eTpudWxsLHBhcnRpdGlvbmVkOmUoYS5wcm9wcykmJiEhYS5wcm9wcy5wYXJ0aXRpb25lZH0sZC52ZXI+IjAwMi4iJiZlKGEuY2x1c3Rlcik/e3E6K2EuY2x1c3Rlci5xPjA/K2EuY2x1c3Rlci5xOitkLnF8fDIsbjooK2EuY2x1c3Rlci5ufHwxKS5jbGFtcCgxLGQubnx8MSl9Ont9KTtyZXR1cm4geC5wdXNoKGcpLHh9LFtdKTt4PWcubGVuZ3RoP2EuUGhvKCJDcmVhdGVEQnMiKShnLCExKTokLkRlZmVycmVkKCkucmVzb2x2ZShbXSl9ZWxzZSB4PSQuRGVmZXJyZWQoKS5yZXNvbHZlKCk7cmV0dXJuIHgudGhlbihmdW5jdGlvbigpe2lmKCFiLm9wdHMuZmluZCgiYWNsIikpcmV0dXJuITA7dmFyIHg9Y3cubGliLmEybyhmKSxjPWIuZGJzLnJlZHVjZShmdW5jdGlvbihhLGIpe3JldHVybiB4W2IubmFtZV18fG51bGw9PWIuc2VjdXJpdHk/YTooYS5wdXNoKHtjcmVhdGU6ITEsbmFtZTpiLm5hbWUsc2VjdXJpdHk6ZShiLnNlY3VyaXR5KT9iLnNlY3VyaXR5Om51bGx9KSxhKX0sW10pO3JldHVybiFjLmxlbmd0aHx8YS5QaG8oIkNyZWF0ZURCcyIpKGMsITEpfSkuZmFpbChmdW5jdGlvbigpe2EuQWJvcnQoKSxhLm15LmNvbW1pdCgpfSl9LFNhdmVEb2NzOmZ1bmN0aW9uKCl7dmFyIHg9dGhpcyxhPXguZGF0YSxiPXt9LGM9MCxkPWEuZG9jc1RvU2F2ZSxlPWEubWF4QnVmZmVyLGY9YS5tYXhXcml0ZVN0cmVhbXMsZz1hLm1heFJlc3RhcnRzfHwzLGg9ITEsaT0hMSxqPXguVW56aXBEQm1hcCxrPTEsbD0wLG09MCxuPTAsbz01MDAscD0xZTMvbyo1LHE9T2JqZWN0LnNpemUscj1BLmRlYm91bmNlKG8pLHM9RS50aHJvdHRsZSgyNTApLHQ9ISFhLm9wdHMuZmluZCgieGRlbCIpLHU9ISFhLm9wdHMuZmluZCgieHJldnMiKTtkLmZvckVhY2goZnVuY3Rpb24oeCl7bnVsbCE9PXgmJihrKz0xLGMrPXguc2l6ZSl9KTt2YXIgdj14LlVuemlwU3RyZWFtO3JldHVybiB2Lm5vdGlmeSh3KSx2LmlzRG9uZSgpfHx2LmNvbnRpbnVlKCkseSgpLHIoKSxGLmRlbGF5KDFlMykse2Fib3J0OmZ1bmN0aW9uKCl7ZC5mb3JFYWNoKGZ1bmN0aW9uKHgpe251bGwhPXgmJngucmVxJiYoeC5yZXEuZGF0YT12b2lkIDApfSksZC5sZW5ndGg9MCxpPSEwfX07ZnVuY3Rpb24gdyh4LGEpeyJkb2MiPT14PyhrKz0xLCEoKGMrPWEpPmV8fGQubGVuZ3RoPjE1MCl8fHYuaXNQYXVzZWQoKXx8di5pc0FsbFJlYWQoKXx8di5wYXVzZSgpLHkuZGVsYXkoMikpOiJlbmRlZCI9PXgmJnkuZGVsYXkoNTApfWZ1bmN0aW9uIHkoKXtpZighaSYmIWgpZm9yKHZhciB4LGE9e307cShiKTxmJiZkLmxlbmd0aCYmbnVsbCE9PWE7KW51bGw9PShhPWQuc2hpZnQoKSk/MD09cShiKT9rLT0xOmQucHVzaChudWxsKTohalthLnNyY2RiXXx8dCYmL1wvX2RlbGV0ZWRcLy8udGVzdChhLm5hbWUpfHx1JiYvXC9fY29uZmxpY3RzXC8vLnRlc3QoYS5uYW1lKT8oay09MSxjLT1hLnNpemUsYS5yZXEuZGF0YT12b2lkIDAsbSs9MSk6KHg9eihhKSkmJihiW2EubmFtZV09eCl9ZnVuY3Rpb24geihlKXtpZihpKXJldHVybiAkLkRlZmVycmVkKCkucmVqZWN0KCk7dmFyIGYsaD1qW2Uuc3JjZGJdLG09YS5kYnMuZmluZChmdW5jdGlvbih4KXtyZXR1cm4geC5zcmM9PWUuc3JjZGJ9KTtpZighbSlyZXR1cm4geS5kZWJvdW5jZSgxMCkoKSx2b2lkIDA7e3JldHVybiBlLnJlcS51cmw9Ii97MX0vX2J1bGtfZG9jcyIuYXNzaWduKEgoaCkpLGUuZXJyb3JzLmxlbmd0aD8oY29uc29sZS5sb2coZS5lcnJvcnMpLGY9JC5EZWZlcnJlZCgpLGZ1bmN0aW9uKCl7Y29uc29sZS5sb2coIlJldHJ5ICIrZS5uYW1lKSx4LlJlcShlLnJlcSkudGhlbihmdW5jdGlvbih4KXtmLnJlc29sdmUoeCl9LGZ1bmN0aW9uKHgsYSxiKXtmLnJlamVjdCh4LGEsYil9KX0uZGVib3VuY2UoMWUzKlsxLDMsMTAsMzBdW2UuZXJyb3JzLmxlbmd0aC5jbGFtcCgwLDMpXSkoKSk6Zj14LlJlcShlLnJlcSksZi50aGVuKGZ1bmN0aW9uKHgpe3gubGVuZ3RoJiZ4WzBdLmVycm9yP28oeFswXS5lcnJvcisiICIrSlNPTi5zdHJpbmdpZnkoeFswXS5yZWFzb24pKTooay09MSxtLmRvbmVEb2NzKz0xLGMtPWUuc2l6ZSxlLnNhdmVkPSEwLGUucmVxLmRhdGE9dm9pZCAwLGwrPTEpfSkuZmFpbChmdW5jdGlvbih4LGEsYil7byh4KyI6ICIrYSsiICIrYil9KS5hbHdheXMoZnVuY3Rpb24oKXtuPTAsZGVsZXRlIGJbZS5uYW1lXSxhLmJ5dGVzKz1lLnNpemUscygpLEQoKSx5LmRlbGF5KDEpfS5kZWJvdW5jZSgxKSk7ZnVuY3Rpb24gbyhhKXtpZihjb25zb2xlLmxvZyhhKSxlLmVycm9ycy5wdXNoKGEpLGUuZXJyb3JzLmxlbmd0aDxnKW51bGw9PT1kLmxhc3QoKT8oZC5wb3AoKSxkLnB1c2goZSksZC5wdXNoKG51bGwpKTpkLnB1c2goZSk7ZWxzZXt2YXIgYj1tLm5hbWUrIi8iK2RlY29kZVVSSUNvbXBvbmVudChlLm5hbWUuZnJvbShlLnNyY2RiLmxlbmd0aCsxKS5yZXBsYWNlKC9cLmpzb24kLywiIikpO0MoeC5sYW5nLkVSUl9TQVZFRE9DLmFzc2lnbihiKSkseC5teS5maW5kKCIjYnRuLXN0b3AiKS50cmlnZ2VyKCJjbGljay5teSIpfX19fWZ1bmN0aW9uIEEoKXtpfHxofHwoaz4wPyh5KCkscigpLGQubGVuZ3RofHwxIT1rfHxxKGIpfHxHKCl8fChuKz0xKT49cCYmKGQucHVzaChudWxsKSxjb25zb2xlLmxvZygiUHVtcCBzdGFsbGVkLCBlbmZvcmNlIHB1bXAgYWJvcnQiKSkpOkIoKSl9ZnVuY3Rpb24gQigpe2g9ITAscygpLHYuaXNBbGxSZWFkKCk/JC5teS5yYWRpbygiZGJsaXN0IixhLmRicy5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIHgubmFtZX0pKTooeC5TYXZlci5hYm9ydD1mdW5jdGlvbigpe30seC5BYm9ydCgpKSxhLnN0YXR1cz0iZG9uZSIseC5teS5jb21taXQoKSxjb25zb2xlLmxvZygiRG9uZSByZXN0b3JlLCB7MX0gZG9jcyBzYXZlZC4iLmFzc2lnbihsKSl9ZnVuY3Rpb24gQyhiKXtjdy5saWIubm90ZSh4LmxhbmcuTVNHX0ZBSUxOT1RFLmFzc2lnbihifHwiIixhLmRicy5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIHguZG9uZURvY3N9KS5zdW0oKSxhLmRicy5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIHgudG90YWxEb2NzfSkuc3VtKCkpLCJlcnJvciIsOGUzKX1mdW5jdGlvbiBEKCl7IXYuaXNEb25lKCkmJnYuaXNQYXVzZWQoKSYmYzxlLzImJmQubGVuZ3RoPDUxMiYmdi5jb250aW51ZSgpLHIoKX1mdW5jdGlvbiBFKCl7eC5teS5jaGVjaygiI2J5dGVzIiksJC5teS5yYWRpbygidW5kdW1wV3JpdGVVcGRhdGUiLHt9KX1mdW5jdGlvbiBGKCl7aXx8aHx8KCQubXkucmFkaW8oImRibGlzdCIsT2JqZWN0LnZhbHVlcyhqKSksRi5kZWxheSg1ZTMpKX1mdW5jdGlvbiBHKCl7dmFyIHg9di5nZXRTdGF0cygpLGE9eC5pc1ppcFJlYWQsYj14LmZpbGVzO3guZHJvcDtyZXR1cm4hYXx8Yj5sK219ZnVuY3Rpb24gSCh4KXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHgpfX0sREJSb3c6e2lkOiJjdy5QaG90b24uVW5kdW1wLkRCUm93Iixpbmhlcml0OlsibGFuZyJdLGluaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpczthLmRhdGE7eC5odG1sKGEuSFRNTCl9LGRhdGE6e25hbWU6IiIsdGFyZ2V0OiIiLHRvdGFsU2l6ZTowLHRvdGFsRG9jczowLGRvbmVEb2NzOjB9LHVpOnsiI251bS10b3RhbCI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj1PYmplY3QuaXNBcnJheSh4LmZpbHRlcik/eC5maWx0ZXIubGVuZ3RoOngudG90YWxEb2NzO3JldHVybiBiP01hdGguZmxvb3IoeC5kb25lRG9jcy9iKjEwMCkuY2xhbXAoMCwxMDApKyIlIjoiIn0sbGlzdGVuOnt1bmR1bXBXcml0ZVVwZGF0ZTpmdW5jdGlvbih4LGEpe2lmKE9iamVjdC5pc09iamVjdChhKSlyZXR1cm4gbnVsbH19fSwiI251bS1iZyI6e2JpbmQ6ZnVuY3Rpb24oeCxhLGIpe3ZhciBjPU9iamVjdC5pc0FycmF5KHguZmlsdGVyKT94LmZpbHRlci5sZW5ndGg6eC50b3RhbERvY3M7Yz9iLmNzcyh7aGVpZ2h0Oih4LmRvbmVEb2NzL2MqMi41KS5jbGFtcCgwLDIuNSkrImVtIn0pOmIuY3NzKHtoZWlnaHQ6IjBweCJ9KX0sbGlzdGVuOnt1bmR1bXBXcml0ZVVwZGF0ZTpmdW5jdGlvbih4LGEpe2lmKE9iamVjdC5pc09iamVjdChhKSlyZXR1cm4gbnVsbH19fSwiI2RiLW5hbWUiOntiaW5kOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIHgubmFtZS50cnVuY2F0ZSg0MCwibWlkZGxlIiwiLi4uIikuZXNjYXBlSFRNTCgpfX0sIiNkYi10b3RhbHMiOntiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGI9T2JqZWN0LmlzQXJyYXkoeC5maWx0ZXIpP3guZmlsdGVyOltdLGM9Yi5sZW5ndGg/Yi5sZW5ndGg6eC50b3RhbERvY3M7cmV0dXJuIGIubGVuZ3RoP3RoaXMubGFuZy5NU0dfVE9UQUwxKGIubGVuZ3RoKTp0aGlzLmxhbmcuTVNHX1RPVEFMMihjLHgudG90YWxTaXplKX19fSxIVE1MOic8ZGl2IGNsYXNzPSJkYi1pbmZvIGRpYiB2YXQiPjxkaXYgaWQ9ImRiLW5hbWUiIGNsYXNzPSJ3MTAwcCBmczEyMCBmdzQwMCBudyBvaCBlbGwiPjwvZGl2PjxkaXYgaWQ9ImRiLXRvdGFscyIgY2xhc3M9IncxMDBwIGZzOTAgbzgwIG53IG9oIGVsbCI+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0ibnVtLWNvbnQgZGliIHZhdCI+PGRpdiBpZD0ibnVtLWJnIiBjbGFzcz0idzEwMHAiPjwvZGl2PjxkaXYgaWQ9Im51bS10b3RhbCIgY2xhc3M9IncxMDBwIHRhYyBmczExMCBmdzMwMCBvNzAgbGgyMDAgcHQxIj48L2Rpdj48L2Rpdj4nLHN0eWxlOnsiIC5udW0tY29udCI6eyIiOiJ3aWR0aDozZW07IGhlaWdodDoyLjVlbTsgdGV4dC1hbGlnbjpjZW50ZXI7IHBvc2l0aW9uOiByZWxhdGl2ZTsgYm9yZGVyLXJhZGl1czogMnB4OyBvdmVyZmxvdzogaGlkZGVuOyBiYWNrZ3JvdW5kLWNvbG9yOiNmMmY1Zjg7IiwiICNudW0tYmciOiJwb3NpdGlvbjphYnNvbHV0ZTsgYm90dG9tOjA7IGxlZnQ6IDA7IGJhY2tncm91bmQtY29sb3I6IzkzZWVkZTsgdHJhbnNpdGlvbjogaGVpZ2h0IDAuMnM7In0sIiAuZGItaW5mbyI6eyIiOiJ3aWR0aDogY2FsYygxMDAlIC0gM2VtKTsgb3ZlcmZsb3c6IGhpZGRlbjsgcGFkZGluZy1sZWZ0OiByaWdodGVtOyJ9fX19LERkb2M6e19pZDoiX2Rlc2lnbi9waG90b24tc3luYyIsbGFuZ3VhZ2U6ImphdmFzY3JpcHQiLG5hbWU6IlBob3RvbiBzeW5jIHV0aWxzIix2ZXJzaW9uOiIwMS4wMSIsc3RhbXA6MCxvcHRpb25zOntjb25mbGljdHM6ITB9LGZpbHRlcnM6e2V4Y2x1ZGU6ZnVuY3Rpb24oeCxhKXt2YXIgYj1hLnF1ZXJ5fHx7fSxjPXguX2lkO3JldHVybiEoYi54ZGVsJiZ4Ll9kZWxldGVkfHxiLnhkZG9jJiYiX2Rlc2lnbi8iPT1jLnN1YnN0cigwLDgpKX19fSxzdGFtcDoxNzE5NTk2Nzg4ODYxLHBhcmFtczp7c3RyaWN0OiEwfX0sImN3LlN5cy5KU09OIjp7aWQ6ImN3LlN5cy5KU09OIixidWlsZDoxMDQsVmVyc2lvbjoiMi45IixkYXRhOntkb2M6e30sbWF4RGVwdGg6MTUwLGxhYmVsV2lkdGg6MTMwLHRyZWU6e30sY21kOiIiLHRpdGxlOiJVbnRpdGxlZCBKU09OIixyYXc6IiIsdmlld3N0YXRlOnt9LHNlYXJjaDoiIixmb3VuZDp7fX0sUlQ6ZnVuY3Rpb24oeCl7cmV0dXJuIHg/dGhpc1t4XTp0aGlzfSxNUm9vdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm15LnJvb3QoKX0scGFyYW1zOntyZXN0eWxlOjEwMCxkZWxheTowLHN0cmljdDohMH0saG90a2V5czp7ImN0cmwrcyxjbWQrcyI6ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMubXkuZmluZCgiI2J0bi1zYXZlIikudHJpZ2dlcigiY2xpY2siKSwhMX19LExpYjp7cmVsaXN0OmZ1bmN0aW9uKHgsYSl7YS5MaXN0PWEuTWFrZUxpc3QoYS5kYXRhKSx4LmZpbmQoIj4uaXZhbHVlPi5pbGlzdCIpLnRyaWdnZXIoInJlY2FsYyIpLHguZmluZCgiPi5pbmF2Pi5pZGVzYyIpLnRyaWdnZXIoImNoZWNrIil9LGtpY2s6ZnVuY3Rpb24oeCxhKXtmb3IodmFyIGIgaW4geClkZWxldGUgeFtiXTtPYmplY3QubWVyZ2UoeCxhKSxPYmplY3QuaXNBcnJheSh4KSYmKHgubGVuZ3RoPWEubGVuZ3RoKX0sa2V5QmluZDpmdW5jdGlvbih4LGEsYil7dmFyIGMsZD10aGlzLmxhYmVsV2lkdGgvM3wwO3JldHVybiA0Jnguc3RhdGUmJnRoaXMuUlQoIlNlYXJjaFJlIik/Yz14LmtleS5yZXBsYWNlKHRoaXMuUlQoIlNlYXJjaFJlIiksIu+/sSQx77+wIikuZXNjYXBlSFRNTCgpLnJlcGxhY2UoIu+/sSIsJzxzcGFuIGNsYXNzPSJqdmFsLWZvdW5kLWtleSI+JykucmVwbGFjZSgi77+wIiwiPC9zcGFuPiIpOih4LmtleS5sZW5ndGg+ZCYmYi5hdHRyKCJ0aXRsZSIseC5rZXkuZXNjYXBlSFRNTCgpKSxjPS9eKHxccyspJC8udGVzdCh4LmtleSk/JyInK3gua2V5LmVzY2FwZUhUTUwoKSsnIic6eC5rZXkudHJ1bmNhdGUoZCwicmlnaHQiLCLigKYiKS5lc2NhcGVIVE1MKCkpLHRoaXMuVS50YWdFbW9qaShjKX0sY29tbW9uSW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YS5kYXRhO3guYWRkQ2xhc3MoImVkLW5vZGUtIithLlBhdGhTaWcoYi5wYXRoLGIua2V5KSkseC5odG1sKGEuSFRNTCl9fSxNZW1TdGF0ZTpmdW5jdGlvbih4KXt2YXIgYT10aGlzLmRhdGE7YS52aWV3c3RhdGV8fChhLnZpZXdzdGF0ZT17fSk7dmFyIGI9dGhpcy5QYXRoU2lnKHgucGF0aCx4LmtleSk7YS52aWV3c3RhdGVbYl0hPXguc3RhdGUmJihhLnZpZXdzdGF0ZVtiXT14LnN0YXRlLGEuX2lkJiZ0aGlzLk1lbVN0YXRlU2F2ZSgpKX0sTWVtU3RhdGVTYXZlOmZ1bmN0aW9uKCl7dmFyIHg9dGhpcy5kYXRhO2lmKHguX2lkJiZPYmplY3Quc2l6ZSh4LnZpZXdzdGF0ZSkpe3ZhciBhPU9iamVjdC5rZXlzKHgudmlld3N0YXRlKS5yZWR1Y2UoZnVuY3Rpb24oYSxiKXtyZXR1cm4gMj09eC52aWV3c3RhdGVbYl0mJmEucHVzaChiKSxhfSxbXSk7dGhpcy5Mcygidmlld3N0YXRlLiIrY3cubGliLnNkYm0oKHguZGJuYW1lfHwiIikrIi8iK3guX2lkKSx7c3RhbXA6RGF0ZS5ub3coKSxzdGF0ZTphfSl9fSxNZW1TdGF0ZVJlc3RvcmU6ZnVuY3Rpb24oKXt2YXIgeD10aGlzLmRhdGE7aWYoeC5faWQpe3ZhciBhPXRoaXMuTHMoInZpZXdzdGF0ZS4iK2N3LmxpYi5zZGJtKCh4LmRibmFtZXx8IiIpKyIvIit4Ll9pZCkpO2lmKCFPYmplY3QuaXNPYmplY3QoYSkpcmV0dXJuO3gudmlld3N0YXRlPWEuc3RhdGUucmVkdWNlKGZ1bmN0aW9uKHgsYSl7cmV0dXJuIHhbYV09Mix4fSx7fSl9fSxQYXRoU2lnOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIGN3LmxpYi5zZGJtKFt4LGFdLmNvbXBhY3QoKS5mbGF0KCkuam9pbigi4p2AIikpfSxSZWpvaW46ZnVuY3Rpb24oeCxhKXtmb3IodmFyIGIsYz10aGlzLkluZGV4LGQ9MDtkPGEubGVuZ3RoO2QrKyliPWFbZF0sL14ob2J8YXIpLy50ZXN0KGIudHlwZSl8fCh4LnZhbHVlW2Iua2V5XT1iLnZhbHVlKSxjLmRpcnR5PSEwfSxOb2RlVXBkYXRlZDpmdW5jdGlvbih4LGEsYil7fSxFZGl0b3JJbnZva2VkOmZ1bmN0aW9uKHgsYSl7fSxIZWxwOmZ1bmN0aW9uKHgpe3JldHVybnt0aXA6IiIsdXJsOiIifX0sdG9qc29uOmZ1bmN0aW9uKHgsYSxiLGMpe3JldHVybiBjdy5saWIuanNvbih4LGIsY3x8ODApfSxTZWFyY2hSZTohMSxpbml0OmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcyxjPWEuZGF0YSxkPWMubWF4RGVwdGgsZT0oRGF0ZS5ub3coKSxPYmplY3Qua2V5cyksZj1lKGIpLm1hcChmdW5jdGlvbih4KXtyZXR1cm4vXlwkW2Etel0vLnRlc3QoeCk/eC5mcm9tKDEpOiIifSkuY29tcGFjdCghMCksZz1PYmplY3QuaXNBcnJheSxoPU9iamVjdC5pc09iamVjdDtiLkxzPWIuTHMoIiIpLE9iamVjdC5pc0Z1bmN0aW9uKGIuRGIpJiYoYi5EYj1iLkRiKHgpKSx4Lmh0bWwoYi5IVE1MLk1haW4pLGIuTWVtU3RhdGVTYXZlPWIuTWVtU3RhdGVTYXZlLmRlYm91bmNlKDcwMCk7dmFyIGk9IlJUIFJvb3QgSW5saW5lQ00gTWFrZUxpc3QgTm9kZVVwZGF0ZWQgSGVscCBQYXRoU2lnIi5zcGxpdCgiICIpO2lmKGYuZm9yRWFjaChmdW5jdGlvbih4KXt2YXIgYT1iWyIkIit4XTthLmxhYmVsV2lkdGg9Yy5sYWJlbFdpZHRoLGEuVT1iLlUsaS5mb3JFYWNoKGZ1bmN0aW9uKHgpe2FbeF09Ylt4XX0pLCJtdWx0aSI9PXg/KGEuSFRNTD1iLkhUTUwuSXRlbUNvbXBsZXgsYS5tYXhEZXB0aD1kKTooYS5IVE1MfHwoYS5IVE1MPWIuSFRNTC5JdGVtU2ltcGxlKSxhLmluaXR8fChhLmluaXQ9Yi5MaWIuY29tbW9uSW5pdCksYS51aVsiLmlrZXkiXS5iaW5kfHwoYS51aVsiLmlrZXkiXS5iaW5kPWIuTGliLmtleUJpbmQpKSxhLnBhcmFtc3x8KGEucGFyYW1zPXt9KSxhLnBhcmFtcy5zdHJpY3Q9ITB9KSwkLmV4dGVuZChiLkRvYyx7c3RhdGU6MixsZXZlbDowLHBhdGg6W10sdHlwZToib2JqZWN0IixrZXk6IlJvb3QiLHZhbHVlOmEuZGF0YS5kb2N9KSxjLl9pZD1jLl9pZHx8Yy5kb2MuX2lkfHwiIixudWxsPT09Yy5kb2MuX3JldiYmZGVsZXRlIGMuZG9jLl9yZXYsWyJhZGQiLCJ0YWtlb3V0Il0uZm9yRWFjaChmdW5jdGlvbihhKXt4Lm9uKCJjbGljay5teSIsIi5idG4tIithLGIuRXZlbnRbYV0uZmlsbCh2b2lkIDAsdm9pZCAwLGIsYi5NUm9vdCgpKSl9KSx4Lm9uKCJjbGljay5teSIsIi5pcm9vdD4uaWtleSIsZnVuY3Rpb24oeCl7dmFyIGE9Yy52aWV3c3RhdGUsZj1iLlBhdGhTaWcsZz17IjEzZmRneHhrIjohMH0saD1lKGEpLm1hcCh4PT4yPT1hW3hdP3g6bnVsbCkuY29tcGFjdCgpLGk9ZShjLmRvYykubWFwKGZ1bmN0aW9uKHgpe3ZhciBhPWMuZG9jW3hdLGI9Im9iamVjdCI9PXR5cGVvZiBhJiZPYmplY3Quc2l6ZShhKTtpZighYilyZXR1cm4gbnVsbDt2YXIgZT1mKFsiUm9vdCJdLHgpO3JldHVybiBiJiZiPj1kJiYoZ1tlXT0hMCksZX0pLmNvbXBhY3QoKTtpLmludGVyc2VjdChoKS5sZW5ndGg+MD8oaS5mb3JFYWNoKHg9PjI9PWFbeF0/YVt4XT0xOjApLGIuTWVtU3RhdGVTYXZlKCkpOihpLmZvckVhY2goeD0+Z1t4XT8wOmFbeF09MiksYi5NZW1TdGF0ZVNhdmUoKSl9KSx4Lm9uKCJjbGljay5teSIsIi5pa2V5IixmdW5jdGlvbih4KXt2YXIgYT0kKHguY3VycmVudFRhcmdldCksYj1hLm15KCkucm9vdCxjPWEubXkoKS5kYXRhO2coYy52YWx1ZSl8fGgoYy52YWx1ZSk/MTYmYy5zdGF0ZSYmYi50cmlnZ2VyKCJlZGl0b3JjYW5jZWwubXkiKTpiLnRyaWdnZXIoImVkaXRvcmNhbmNlbC5teSIpfSkseC5vbigiY2xpY2subXkiLCIuaWRlc2MiLGZ1bmN0aW9uKHgpe3guc3RvcFByb3BhZ2F0aW9uKCk7dmFyIGE9JCh0aGlzKS5teSgpLnJvb3QsYj1hLm15KCJkYXRhIikubWFuaWZlc3Q7cmV0dXJuL15cJChtdWx0aXxmaWxlcykvLnRlc3QoYnx8IiRtdWx0aSIpJiZhLmZpbmQoIj4uaWFjdD4uYnRuLWpzb24iKS50cmlnZ2VyKCJjbGljayIpLCExfSkseC5vbigiY2xpY2subXkiLCIjZG9jPi5pYWN0Pi5idG4tZGVsIixmdW5jdGlvbihhKXthLnN0b3BQcm9wYWdhdGlvbigpLHgudHJpZ2dlcigiY2FuY2VsIil9KSxiLm9uSW5pdC5sZW5ndGgmJngudGhlbihmdW5jdGlvbigpe2Iub25Jbml0LmZvckVhY2goZnVuY3Rpb24oYyl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGMpdHJ5e2MuY2FsbChiLHgsYSl9Y2F0Y2goeCl7fX0pfSkseC5vbigianNvbmRvY3NhdmUubXkiLGZ1bmN0aW9uKHgpe3JldHVybiBiLmNtZFNhdmU/Yi5jbWRTYXZlKCk6Yi5teS5maW5kKCIjYnRuLXNhdmUiKS50cmlnZ2VyKCJjbGljayIpLCExfSksYi5NZW1TdGF0ZVJlc3RvcmUmJmIuTWVtU3RhdGVSZXN0b3JlKCksImNyZWF0ZSIhPWMuY21kJiZiLmRiJiZiLmFwcCYmYi5hcHAubG9jYWwpcmV0dXJuIGN3LmxpYi5zY3JvbGxZJiZjdy5saWIuc2Nyb2xsWSh4KSxiLmRiLmdldChjLmRvYy5faWQse2F0dGFjaG1lbnRzOiEwLHJldnNfaW5mbzohMCxjb25mbGljdHM6ITB9KS50aGVuKGZ1bmN0aW9uKHgpeyQuZXh0ZW5kKGMuZG9jLE9iamVjdC5zZWxlY3QoeCxbIl9hdHRhY2htZW50cyJdKSkseC5fY29uZmxpY3RzJiZ4Ll9jb25mbGljdHMubGVuZ3RoJiYoYy5kb2MuX2NvbmZsaWN0cz14Ll9jb25mbGljdHMuc2xpY2UoMCkpLGMuZG9jLl9yZXZzX2luZm89eC5fcmV2c19pbmZvLmZpbHRlcihmdW5jdGlvbih4KXtyZXR1cm4ibWlzc2luZyIhPXguc3RhdHVzfSl9KX0sb25Jbml0OltdLGRpZTpmdW5jdGlvbigpe3ZhciB4LGE9dGhpcy5CbG9icztmb3IoeCBpbiBhKVVSTC5yZXZva2VPYmplY3RVUkwoYVt4XSl9LEJsb2JzOnt9LERvYzp7fSxJbmRleDp7ZGlydHk6ITAsaWR4OltdfSxVOnt0YWdFbW9qaTpmdW5jdGlvbih4KXtyZXR1cm4geH19LHVpOnsiI2J0bi1zYXZlIjp7YmluZDpmdW5jdGlvbih4LGEsYil7dmFyIGM9dGhpcztudWxsIT1hJiZjLmRiLnNhdmUoeC5kb2MpLnRoZW4oZnVuY3Rpb24oYSl7dmFyIGQ9e2RvYzphfTtjLkxpYi5raWNrKHguZG9jLGEpO3ZhciBlPWMuTHMoInZpZXdzdGF0ZS4iK2EuX2lkKTtlJiYoZS5zdGFtcD5kLnN0YW1wfHwhT2JqZWN0LnNpemUoeC52aWV3c3RhdGUpKSYmKHgudmlld3N0YXRlPWUuc3RhdGUpLHguX2lkPWEuX2lkfHwiIixhLl9yZXYmJih4Ll9yZXY9YS5fcmV2KSwkLmV4dGVuZChjLkRvYyx7c3RhdGU6MixsZXZlbDowLHBhdGg6W10sdHlwZToib2JqZWN0IixrZXk6IlJvb3QiLHZhbHVlOnguZG9jfSksYi5teSgiZmluZCIsIiNkb2MgLmlrZXl0cmVlOmVxKDApIikudHJpZ2dlcigiY2xpY2siKX0sZnVuY3Rpb24oeCxhKXtjdy5saWIubm90ZSgiU2F2ZSBmYWlsZWQsIHNlZSBjb25zb2xlIiwiZXJyb3IiKSxjb25zb2xlLmxvZyhhLHgpfSl9fSwiI2RvY3RpdGxlIjp7YmluZDpmdW5jdGlvbih4KXtyZXR1cm4geC5faWQ9eC5kb2MuX2lkfHx4Ll9pZCx4Ll9yZXY9eC5kb2MuX3Jldix4LnRpdGxlPSh4LmRvYy5fZGJ8fCh0aGlzLmRifHx7bmFtZToiTm9EQiJ9KS5uYW1lKSsi4oCJL+KAiSIrKHguZG9jLl9pZHx8IiIpLHgudGl0bGV9LHdhdGNoOlsiI2RvYyJdLGRlbGF5OjMwfSwiI2pzb24tc2VhcmNoIjp7ZGVsYXk6MjAwLGJpbmQ6ZnVuY3Rpb24oeCxhKXtpZihudWxsPT1hKXJldHVybiB4LnNlYXJjaDt2YXIgYj10aGlzLGM9eC5zZWFyY2g7cmV0dXJuIHguc2VhcmNoPWEubGVuZ3RoPDM/IiI6YSx4LnNlYXJjaD8oYi5TZWFyY2hSZT1uZXcgUmVnRXhwKCIoIitSZWdFeHAuZXNjYXBlKGEuY29tcGFjdCgpKSsiKSIsImkiKSxiLlNlYXJjaCgpLGIubXkudHJpZ2dlcigiI2RvYyAuaWtleTplcSgwKSIsImNsaWNrLm15IiksYSk6KGIuU2VhcmNoUmU9ITEseC5mb3VuZD17fSxjJiZiLm15LnRyaWdnZXIoIiNkb2MgLmlrZXk6ZXEoMCkiLCJjbGljay5teSIpLGEpfSxjc3M6eyJteS1zZWFyY2giOi9eLnszLH0kL30sZXZlbnRzOiJpbnB1dC5teSBjaGVjay5teSJ9LCIjZG9jIjp7ZGVsYXk6MjAsYmluZDoidGhpcy5Eb2MiLGNoZWNrOiExfX0sajJoOmZ1bmN0aW9uKHgsYSxiLGMsZCl7dmFyIGU9Ynx8W10sZj1jdy5saWIuYTJvKGUpLGc9ISFkLGg9W107cmV0dXJuIGwoaih4LGEsMCkpLGg7ZnVuY3Rpb24gaSh4LGEsYil7dmFyIGQsZixoLGksaz17a2V5Om51bGwsdmFsOm51bGwsZW1wdHk6ITEsc2l6ZToyLGxlZnQ6InsiLHJpZ2h0OiJ9Iix0cmltOjAsdHlwZToib2JqZWN0Iixyb3dzOltdfSxsPTAsbT17fSxuPU9iamVjdC5rZXlzKHgpO2lmKCFuLmxlbmd0aClyZXR1cm4gay5lbXB0eT0hMCxrLnNpemU9MixrLnZhbD0iIixrO2lmKGI+PWN8fG4ubGVuZ3RoPjUwKXJldHVybiBrLnRyaW09bi5sZW5ndGgsay5zaXplPTIsazt2YXIgbz0oMS41KmEvbi5sZW5ndGh8MCkuY2xhbXAoMTAsLjkqYXwwKSxwPTA7bT17fTtmb3IoZD0wO2Q8ZS5sZW5ndGgmJmw8YS1vLzM7ZCsrKW51bGwhPXhbaD1lW2RdXSYmKG1baF09ITAsaT1oLnRydW5jYXRlKChvLyhnPzE6MikpLmNsYW1wKDEyLDEwMCksInJpZ2h0Iiwi4oCmIiksIS9ccy8udGVzdChpKSYmaXx8KGk9JyInK2krJyInKSwoZj1qKHhbaF0sbyxiKzEpKS5rZXk9aSxsKz1pLmxlbmd0aCsoZz8wOmYuc2l6ZSkscCs9MSxrLnJvd3MucHVzaChmKSk7Zm9yKGQ9MDtkPG4ubGVuZ3RoJiZsPGEtby8zO2QrKyltW2g9bltkXV18fChpPWgudHJ1bmNhdGUoKG8vKGc/MToyKSkuY2xhbXAoMTIsMTAwKSwicmlnaHQiLCLigKYiKSwhL1xzLy50ZXN0KGkpJiZpfHwoaT0nIicraSsnIicpLChmPWooeFtoXSxvLGIrMSkpLmtleT1pLGwrPWkubGVuZ3RoKyhnPzA6Zi5zaXplKSxwKz0xLGsucm93cy5wdXNoKGYpKTtyZXR1cm4gay50cmltPW4ubGVuZ3RoLXAsay5zaXplPWwsa31mdW5jdGlvbiBqKHgsYSxiKXt2YXIgZCxlLGY9e2tleTpudWxsLHZhbDpudWxsLGVtcHR5OiExLHNpemU6MCxsZWZ0OiIiLHJpZ2h0OiIiLHRyaW06MCx0eXBlOiIiLHJvd3M6W119LGc9MCxoPTAsaz0wLGw9dHlwZW9mIHg7aWYobnVsbD09PXh8fCJvYmplY3QiIT1sKXJldHVybiJ1bmRlZmluZWQiPT1sPyhmLnR5cGU9InVuZGVmaW5lZCIsZT14KyIiKToic3RyaW5nIiE9bD8oZi50eXBlPSJudW1iZXIiIT1sPyJzaW1wbGUiOmwsZT14KyIiKTooZi50eXBlPSJzdHJpbmciLChoPXgubGVuZ3RoKTw9YS0xP2U9eDooZT14LnN1YnN0cigwLGEpLGYudHJpbT1oLWEpLGUubGVuZ3RoJiYiLSIhPWVbMF0mJiEvXHMvLnRlc3QoZSl8fChmLmxlZnQ9Zi5yaWdodD0nIicsZys9MikpLGcrPWUubGVuZ3RoLGYuc2l6ZT1nLGYuZW1wdHk9IWUubGVuZ3RoLGYudmFsPWUsZjtpZighT2JqZWN0LmlzQXJyYXkoeCkpcmV0dXJuIGkoeCxhLGIpO2lmKGYudHlwZT0iYXJyYXkiLGYubGVmdD0iWyIsZi5yaWdodD0iXSIsZys9Mix4Lmxlbmd0aClpZihiPGMmJngubGVuZ3RoPDUwJiZhL3gubGVuZ3RoPjUpe2s9KDEuNSphL3gubGVuZ3RofDApLmNsYW1wKDEwLC45KmF8MCksaD0wO3ZhciBtPTA7Zm9yKGQ9MDtkPHgubGVuZ3RoJiZoPGEtay8zO2QrKylnKz0oZT1qKHhbZF0sayxiKzEpKS5zaXplLGgrPWUuc2l6ZSxtKz0xLGYucm93cy5wdXNoKGUpO2YudHJpbT14Lmxlbmd0aC1tfWVsc2UgZi50cmltPXgubGVuZ3RoO2Vsc2UgZi5lbXB0eT0hMCxnPTIsZi52YWw9IiI7cmV0dXJuIGYuc2l6ZT1nLGZ9ZnVuY3Rpb24gayh4LGEpe2gucHVzaChbeCxhXSl9ZnVuY3Rpb24gbCh4KXtpZihudWxsIT14LmtleSYmKGsoImtleSIseC5rZXkpLGd8fGsoIiIsIjogIikpLHguZW1wdHkpcmV0dXJuIGsoImVtcHR5Iix4LmxlZnQrKHgudmFsfHwiIikreC5yaWdodCksdm9pZCAwO3ZhciBiPXgudHlwZSxjPSExO2lmKG51bGwhPXgudmFsKXtpZih4LmxlZnQmJmsoImJyYWNrZXQiLHgubGVmdCkseC52YWwubGVuZ3RoPGEvNSYmZlt4LmtleV0mJihjPSEwKSwoIWd8fGMpJiYoZyYmYyYmaygiIiwiOiAiKSxrKGIseC52YWwuZXNjYXBlSFRNTCgpKSx4LnRyaW0pKXt2YXIgZD0iKyI7aygidHJpbSIsIm9iamVjdCI9PWJ8fCJhcnJheSI9PWI/ZCt4LnRyaW06IuKApiIpfXgucmlnaHQmJmsoImJyYWNrZXQiLHgucmlnaHQpLGN8fCFnfHx4LnJpZ2h0fHwic2ltcGxlIj09Ynx8Im51bWJlciI9PWJ8fGsoImJyYWNrZXQiLCJzdHJpbmciPT1iPyciIic6Im9iamVjdCI9PWI/Int9IjoiW10iKX1lbHNlIGlmKHgucm93cy5sZW5ndGgpe3gubGVmdCYmaygiYnJhY2tldCIseC5sZWZ0KTt2YXIgZSxoPXgucm93cy5sZW5ndGg7Zm9yKGU9MDtlPGg7ZSsrKWwoeC5yb3dzW2VdKSwoZSE9aC0xfHx4LnRyaW0pJiZrKCIiLCIsICIpO2lmKHgudHJpbSl7ZD0iKyI7aygidHJpbSIsIm9iamVjdCI9PWJ8fCJhcnJheSI9PWI/ZCt4LnRyaW06IuKApiIpfXgucmlnaHQmJmsoImJyYWNrZXQiLHgucmlnaHQpfWVsc2UgeC50cmltJiYoIm9iamVjdCI9PWI/aygic2hvcnQiLCJ7Iit4LnRyaW0rIn0iKToiYXJyYXkiPT1iJiZrKCJzaG9ydCIsIlsiK3gudHJpbSsiXSIpKX19LElubGluZUNNOmZ1bmN0aW9uKHgsYSxiKXt2YXIgYz1hLmRhdGEsZD0kLnR5cGUoYy52YWx1ZSksZT0vXihvYnxhcikvLnRlc3QoZCksZj1hLlJUKCJNRWRpdCIpLnBhcnNlU3RyaW5nLGc9YS5SVCgiTGliIikua2ljayxoPWEuUlQoIiRudW1iZXIiKS5GLkNhbGMsaT1hLlJUKCJ0b2pzb24iKXx8SlNPTi5zdHJpbmdpZnk7ZnVuY3Rpb24gaih4KXtyZXR1cm4gYS5teS5yb290KCkuZmluZCh4KX1mdW5jdGlvbiBrKHgsYil7aWYoYy5oYXNoPWN3LmxpYi5zZGJtKFtjLmlkLGMudmFsdWVdKSxqKCI+LmluYXY+LmllZGl0b3IiKS5teSgicmVtb3ZlIiksaigiPi5pbmF2IikucmVtb3ZlQ2xhc3MoImlzZWRpdG9yIiksZSl7Yy5zdGF0ZT14PzIzOSZjLnN0YXRlOjIzNyZjLnN0YXRlfDEsMSZjLnN0YXRlP2EuTGlzdD1bXTphLkxpc3Q9YS5NYWtlTGlzdChjKTt2YXIgZD1qKCI+LmluYXY+LmlkZXNjIiksZj1qKCI+Lml2YWx1ZT4uaWxpc3QiKSxnPWooIj4uaW5hdj4uaWtleSIpO2QucmVtb3ZlQ2xhc3MoImhpZGUiKSxifHwoZi50cmlnZ2VyKCJyZWNhbGMiKSxmLnRyaWdnZXIoImNoZWNrIikpLGQudHJpZ2dlcigiY2hlY2siKSxnLnRyaWdnZXIoImNoZWNrIil9ZWxzZSBjLnN0YXRlPTEsaigiPi5pbmF2Pi5pdmFsdWUiKS5yZW1vdmVDbGFzcygiaGlkZSIpfXgub24oImNsaWNrLm15IixmdW5jdGlvbihiKXt2YXIgZD0kKGIudGFyZ2V0KTtpZighZC5pcygiYSIpJiYhZC5pcygiaW1nIikmJighZXx8MTYmYy5zdGF0ZSkpe3ZhciBmPWooIj4uaW5hdiIpO2lmKCFmLmhhc0NsYXNzKCJpc2VkaXRvciIpKXt2YXIgZz1hLlJUKCJMaWIiKS5pc1N5c3RlbS5jYWxsKGEsYyk7ZyYmY3cubGliLm5vdGUoT2JqZWN0LmlzU3RyaW5nKGcpP2c6IlRoaXMgcHJvcCBpcyByZWFkLW9ubHkuIiwid2FybmluZyIpLGMuc3RhdGU9ZT8xNnxjLnN0YXRlOjIsZi5hZGRDbGFzcygiaXNlZGl0b3IiKSxqKGU/Ij4uaW5hdj4uaWRlc2MiOiI+LmluYXY+Lml2YWx1ZSIpLmFkZENsYXNzKCJoaWRlIik7dmFyIGg9aigiPi5pbmF2Pi5pZWRpdG9yIik7aC5teShhLlJUKCJNRWRpdCIpLHt0ZXh0OmU/IigiK2koYy52YWx1ZSxudWxsLCIgICIsKChoLndpZHRoKCktODIpLmNsYW1wKDk2LDk2MCkvOC4yfDApLTQpKyIpIjpjLnZhbHVlKyIiLG1vZGU6YS5DTXx8ImF1dG8iLHJlYWRvbmx5OmcsZXhwZWN0OiQudHlwZShjLnZhbHVlKX0pLnRoZW4oZnVuY3Rpb24oKXt2YXIgYj1hLlJUKCJFZGl0b3JJbnZva2VkIik7ImZ1bmN0aW9uIj09dHlwZW9mIGImJmIoeCxhKX0pfX19LmRlYm91bmNlKDE1KSksYS5teS5yb290KCkub24oImVkaXRvcmNvbW1pdC5teSIsZnVuY3Rpb24oeCl7eC5zdG9wUHJvcGFnYXRpb24oKTt2YXIgYz1qKCI+LmluYXYiKSxpPWEuZGF0YSxsPSIiO2lmKGMuaGFzQ2xhc3MoImlzZWRpdG9yIikpe3ZhciBtLG4sbz1pLnZhbHVlLHA9T2JqZWN0LmNsb25lKG8sITApLHE9aigiPi5pbmF2Pi5pZWRpdG9yIikubXkoImRhdGEiKS50ZXh0O2U/KG09ZihxKSwkLnR5cGUobyk9PSQudHlwZShtKT8oZyhpLnZhbHVlLG0pLGEubXkucmVkcmF3KCkpOigobj1hLm15LnBhcmVudCgpKS5kYXRhLnZhbHVlW2kua2V5XT1tLGkudmFsdWU9bi5kYXRhLnZhbHVlW2kua2V5XSxhLlJUKCJMaWIiKS5yZWxpc3Qobi5teS5yb290KCksbikpKToibnVtYmVyIj09ZD9udWxsIT1oKHEsbnVsbCk/aS52YWx1ZT1oKHEsbnVsbCk6bD0iRXhwcmVzc2lvbiBtdXN0IHJldHVybiBhIG51bWJlciI6aS52YWx1ZT1xLGw/Y3cubGliLm5vdGUobCwiZXJyb3IiLDNlMyk6KGEuTm9kZVVwZGF0ZWQoW2kucGF0aCxpLmtleV0scCxpLnZhbHVlKSxmdW5jdGlvbigpe2soITApLCJmdW5jdGlvbiI9PXR5cGVvZiBiP2IoaS52YWx1ZSxvKTplfHxqKCI+LmluYXY+Lml2YWx1ZSIpLnRyaWdnZXIoImNoZWNrIil9LmRlbGF5KDEwKSl9fSkub24oImVkaXRvcmNhbmNlbC5teSIsZnVuY3Rpb24oeCl7eC5zdG9wUHJvcGFnYXRpb24oKSxrKGUsITApfSl9LE11dGF0ZTpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YS5kYXRhLGM9Yi5kb2MsZD1iLnZpZXdzdGF0ZSxlPU9iamVjdC5pc09iamVjdCxmPU9iamVjdC5pc0FycmF5LGc9YS5QYXRoU2lnO0pTT04uc3RyaW5naWZ5O2lmKCFlKHgpKXJldHVybntlcnJvcjoiSW52YWxpZCBwYXJhbXMifTt2YXIgaD0kLmV4dGVuZCh7cGF0aDpudWxsLGN0eDpudWxsLG9wOiJ1cGQiLHZhbDp2b2lkIDAsZXhwYW5kOiExLGJsaW5rOiExLGVkaXQ6ITF9LHgpO2lmKCFmKGgucGF0aCkpcmV0dXJue2Vycm9yOiJJbnZhbGlkIHBhdGgifTt2YXIgaT1bIlJvb3QiXS5jb25jYXQoaC5wYXRoLmZsYXQoKSksaj1pLnBvcCgpLGs9aS5zbGljZSgxKSxsPS9eKG5vcHxpbnN8ZGVsfHVwZCkkLy50ZXN0KGgub3ApP2gub3A6bnVsbDtpZihudWxsPT1sKXJldHVybntlcnJvcjoiSW52YWxpZCBvcCJ9O2lmKC9eKGluc3x1cGQpJC8udGVzdChsKSYmdm9pZCAwPT09aC52YWwpcmV0dXJue2Vycm9yOiJObyB2YWx1ZSJ9O3ZhciBtLG4sbyxwLHE9e30scj0wO2lmKCJub3AiIT09bCl7aWYobnVsbD09KG09eihjLGspKSlyZXR1cm57ZXJyb3I6Ik5vZGUgaXMgdW5yZWFjaGVhYmxlIn07aWYoZihtKSl7aWYoaj0raixpc05hTihqKXx8ajwwfHxqIT0oMHxqKSlyZXR1cm57ZXJyb3I6IkludmFsaWQgbm9kZSBpbmRleCJ9O2lmKCJpbnMiPT1sJiZqPm0ubGVuZ3RoJiYoaj1tLmxlbmd0aCksL14oZGVsfHVwZCkkLy50ZXN0KGwpJiZqPm0ubGVuZ3RoLTEpcmV0dXJue2Vycm9yOiJOb2RlIGluZGV4IGlzIG91dCBvZiBhcnJheSJ9fX1lKG0pJiYhbS5oYXNPd25Qcm9wZXJ0eShqKSYmaC5jdHgmJihsPSJpbnMiKSwidXBkIj09bD9tW2pdPWgudmFsOiJkZWwiPT1sP2YobSk/bS5yZW1vdmVBdChqKTpkZWxldGUgbVtqXToiaW5zIj09bCYmKGYobSk/bS5pbnNlcnQoZihoLnZhbCk/W2gudmFsXTpoLnZhbCxqKTohKG89aC5jdHgpfHwhZihvKXx8by5sZW5ndGg8Mj9tW2pdPWgudmFsOigocD0obj1PYmplY3Qua2V5cyhtKSkuaW5kZXhPZihvWzBdKSk+LTE/cj1wKzE6KHA9bi5pbmRleE9mKG9bMV0pKT4tMSYmKHI9cC5jbGFtcCgwLDFlNikpLG4uc2xpY2UocikuZm9yRWFjaChmdW5jdGlvbih4KXtxW3hdPW1beF0sZGVsZXRlIG1beF19KSxtW2pdPWgudmFsLG4uc2xpY2UocikuZm9yRWFjaChmdW5jdGlvbih4KXttW3hdPXFbeF0sZGVsZXRlIHFbeF19KSkpO3ZhciBzLHQsdT1nKGksaiksdj1bXSx3PSIiO2lmKCh2PWkubWFwKGZ1bmN0aW9uKHgsYSl7cmV0dXJuIGcoaS50byhhKzEpKX0pLnNsaWNlKDEpKS5mb3JFYWNoKGZ1bmN0aW9uKHgpe3c9d3x8Mj09ZFt4XT93Onh9KSx3fHwodz12Lmxhc3QoKXx8Y3cubGliLnNkYm0oIlJvb3QiKSkscz1hLm15LmZpbmQoIi5lZC1ub2RlLSIrdykubXkoIm1hbmlmZXN0IiksaC5leHBhbmQmJih2LmZvckVhY2goZnVuY3Rpb24oeCl7ZFt4XT0yfSksZFt1XT1mKGgudmFsKXx8ZShoLnZhbCk/MjoxLHMuZGF0YS5zdGF0ZT0yKSwyPT1zLmRhdGEuc3RhdGUmJihzLkxpc3Q9cy5NYWtlTGlzdChzLmRhdGEpKSx0PWEubXkuZmluZCgiLmVkLW5vZGUtIit1KSwidXBkIj09bCYmdC5sZW5ndGgmJiQudHlwZSh0Lm15KCJkYXRhIikudmFsdWUpPT0kLnR5cGUoaC52YWwpKXt2YXIgeT10Lm15KCJkYXRhIik7eS52YWx1ZT1oLnZhbCwiJG11bHRpIj09eS5tYW5pZmVzdCYmMiZ5LnN0YXRlJiYodC5teSgibWFuaWZlc3QiKS5MaXN0PXQubXkoIm1hbmlmZXN0IikuTWFrZUxpc3QoeSkpLHQubXkoInJlZHJhdyIpfWVsc2UgMj09cy5kYXRhLnN0YXRlJiYocy5MaXN0PXMuTWFrZUxpc3Qocy5kYXRhKSkscy5teS5yZWRyYXcoKTtyZXR1cm4gaC5leHBhbmQmJmEuTWVtU3RhdGVTYXZlKCksaC5leHBhbmQmJmguYmxpbmsmJmZ1bmN0aW9uKCl7dmFyIHg9YS5teS5maW5kKCIuZWQtbm9kZS0iKygiZGVsIiE9bD91OnYubGFzdCgpKSksYj1PYmplY3QuaXNTdHJpbmcoaC5ibGluayk/aC5ibGluazoib3JhbmdlIjt4LmFkZENsYXNzKGIpLGZ1bmN0aW9uKCl7eC5yZW1vdmVDbGFzcyhiKX0uZGVsYXkoNTAwKX0uZGVsYXkoMTAwKSx7b2s6ITAsZXhwYW5kZWQ6dn07ZnVuY3Rpb24geih4LGEpe2Zvcih2YXIgYj14LGM9YS5sZW5ndGgsZD0wO2Q8YyYmbnVsbCE9YjtkKyspYj1iW2FbZF1dLGUoYil8fGYoYil8fChiPW51bGwpO3JldHVybiBifX0sU2VhcmNoOmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj17fSxjPWEuU2VhcmNoUmV8fHg7aWYoIWMpcmV0dXJuIGEuZGF0YS5mb3VuZD17fTthLkluZGV4LmRpcnR5JiYoYS5JbmRleC5pZHg9ayhhLkRvYy52YWx1ZSksYS5JbmRleC5kaXJ0eT0hMSk7Zm9yKHZhciBkLGU9Y3cubGliLnNkYm0sZj0wLGc9YS5JbmRleC5pZHgsaD0wLGk9MDtoPGcubGVuZ3RoO2grKylpZihmPTAsaT0oZD1nW2hdKS5wLmxlbmd0aCxjLnRlc3QoZC5rKSYmKGZ8PTQpLGQudiYmYy50ZXN0KGQudikmJihmfD04KSxmKWZvcih2YXIgaj0xO2o8aTtqKyspYltlKGQucC5zbGljZSgwLGopLmpvaW4oIuKdgCIpKyLinYAiK2QucFtqXSldPWo9PWktMT9mOjM7cmV0dXJuIGEuZGF0YS5mb3VuZD1iO2Z1bmN0aW9uIGsoeCl7dmFyIGE9WyJSb290Il0sYj1bXTtmdW5jdGlvbiBjKHgpe09iamVjdC5rZXlzKHgpLmZvckVhY2goZnVuY3Rpb24oZCl7dmFyIGU9JC50eXBlKHhbZF0pOyJvYmplY3QiPT1lfHwiYXJyYXkiPT1lPyhhLnB1c2goZCksYyh4W2RdKSxiLnB1c2goe2s6ZC50b0xvd2VyQ2FzZSgpLHA6YS5zbGljZSgwKSx2OiExfSksYS5wb3AoKSk6InN0cmluZyI9PWU/Yi5wdXNoKHtrOmQudG9Mb3dlckNhc2UoKSxwOmEuc2xpY2UoMCkuYWRkKGQpLHY6eFtkXS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1tcclxuXHRcc10rL2csIiAiKX0pOmIucHVzaCh7azpkLnRvTG93ZXJDYXNlKCkscDphLnNsaWNlKDApLmFkZChkKSx2OnhbZF0rIiJ9KX0pfXJldHVybiBjKHgpLGJ9fSxFdmVudDp7YWRkOmZ1bmN0aW9uKHgsYSxiLGMpe3guc3RvcFByb3BhZ2F0aW9uKCk7dmFyIGQ9JCh0aGlzKSxlPWQucGFyZW50cygiLm15LWZvcm0iKS5lcSgwKSxmPWUuZGF0YSgibXkiKS5kYXRhLGc9ZS5kYXRhKCJteSIpLm1hbmlmZXN0LGg9JC50eXBlKGYudmFsdWUpLGk9ImFycmF5Ij09aCxqPShlLm15KCJkYXRhIikua2V5LGIuTHMoIkNsaXAiKXx8e3R5cGU6IiJ9KSxrPXtvYmplY3Q6e30sYXJyYXk6W10sc3RyaW5nOiIiLGJvb2xlYW46ITAsbnVtYmVyOjB9O2QucGFyZW50KCkuYWRkQ2xhc3MoImhvdmVyIiksZS5hZGRDbGFzcygiaG92ZXIiKSwkKHRoaXMpLm1vZGFsKHttYW5pZmVzdDpiLk1BZGQsZGF0YTp7Y21kOiJwcmVwZW5kIix0ZXh0OlsiTmV3ICIsaT8ibWVtYmVyIjoicHJvcGVydHkiLCcgaW4mbmJzcDs8c3BhbiBjbGFzcz0iYm9sZGVyIG53Ij4nLGIuVS50YWdFbW9qaShmLmtleS50cnVuY2F0ZSgyNSwibWlkZGxlIiwi4oCmIikuZXNjYXBlSFRNTCgpKSxpPyI6W10iOiI6e30iLCI8L3NwYW4+Il0uam9pbigiIikscHJlcGVuZDppPyJJbnNlcnQiOiJQcmVwZW5kIixhcHBlbmQ6aT8iIjoiQXBwZW5kIixpc2FycmF5Omksa2V5Omk/IjAiOiIiLGNsaXA6aixrZXlzOmk/e306T2JqZWN0LmtleXMoZi52YWx1ZSkucmVkdWNlKGZ1bmN0aW9uKHgsYSl7cmV0dXJuIHhbYV09ITAseH0se30pLGZpbGU6e319LHdpZHRoOjMxMCxhbGlnbjoidG9wOjEwMyU7cmlnaHQ6LTExNHB4OyIscm9vdDpjLGJvdW5kOjEsbm9zZToidG9wIixzY3JlZW46InJnYmEoMjU1LDI1NSwyNTUsMCkiLGNsb3NlOiExLGVzYzohMCxlbnRlcjohMH0pLnRoZW4oZnVuY3Rpb24oeCl7dmFyIGEsYyxkPXguY21kLGo9ITAsbD1bXSxtPVtdO2lmKHguY2xpcC50eXBlJiYiY2xpcCI9PXgudHlwZSYmKGsuY2xpcD14LmNsaXAudmFsdWUpLGM9T2JqZWN0LmNsb25lKCJmaWxlIj09eC50eXBlP3guZmlsZTprW3gudHlwZV0sITApLHguaXNhcnJheXx8KCJzdHJpbmciPT14LnR5cGUmJnguZmlsZS5kYXRhP2M9ImRhdGE6Iit4LmZpbGUuY29udGVudF90eXBlKyI7YmFzZTY0LCIreC5maWxlLmRhdGE6ZGVsZXRlIGMubmFtZSksMT09Zi5sZXZlbCYmL14oX2lkfF9yZXYpJC8udGVzdCh4LmtleSkpcmV0dXJuIGN3LmxpYi5ub3RlKCJDYW7igJl0IGNoYW5nZSBzeXN0ZW0gcHJvcGVydGllcy4iLCJlcnJvciIpLHZvaWQgMDtpZigvXihvYikvLnRlc3QoaCkpaWYoImFwcGVuZCI9PWR8fG51bGwhPWYudmFsdWVbeC5rZXldKWYudmFsdWVbeC5rZXldPWMsbigpO2Vsc2UgaWYoInByZXBlbmQiPT1kKXtmb3IoYSBpbiBsPU9iamVjdC5rZXlzKGYudmFsdWUpKW0ucHVzaChmLnZhbHVlW2xbYV1dKSxkZWxldGUgZi52YWx1ZVtsW2FdXTtmb3IoYSBpbiBmLnZhbHVlW3gua2V5XT1jLGwpbFthXSE9PXgua2V5JiYoZi52YWx1ZVtsW2FdXT1tW2FdKTttPWw9bnVsbCxuKCl9ZWxzZSBqPSExO2Vsc2UgaT8oeC5rZXk9KCt4LmtleXx8MCkuY2xhbXAoMCxmLnZhbHVlLmxlbmd0aCkrIiIsZi52YWx1ZS5pbnNlcnQoT2JqZWN0LmlzQXJyYXkoYyk/W2NdOmMseC5rZXkpLG4oKSk6aj0hMTtmdW5jdGlvbiBuKCl7Yi5Ob2RlVXBkYXRlZChbZi5wYXRoLGYua2V5LHgua2V5XSx2b2lkIDAsYyl9aiYmKGcuTGlzdD1iLk1ha2VMaXN0KGYpLGYuc3RhdGU9MixlLmZpbmQoIi5pZGVzYzplcSgwKSIpLnRyaWdnZXIoImNoZWNrIiksZS5maW5kKCIuaWxpc3Q6ZXEoMCkiKS50cmlnZ2VyKCJyZWNhbGMiKSl9KS5hbHdheXMoZnVuY3Rpb24oKXtkLnBhcmVudCgpLnJlbW92ZUNsYXNzKCJob3ZlciIpLGUucmVtb3ZlQ2xhc3MoImhvdmVyIil9KX0sdGFrZW91dDpmdW5jdGlvbih4LGEsYixjKXt4LnN0b3BQcm9wYWdhdGlvbigpO3ZhciBkPSQodGhpcyksZT1kLnBhcmVudHMoIi5teS1mb3JtIikuZXEoMCksZj1lLmRhdGEoIm15IikuZGF0YSxnPWUuZGF0YSgibXkiKS5tYW5pZmVzdCxoPU9iamVjdCxpPShoLnNpemUsaC5jbG9uZSksaj1oLm1lcmdlO2QucGFyZW50KCkuYWRkQ2xhc3MoImhvdmVyIiksZS5hZGRDbGFzcygiaG92ZXIiKSxkLm1vZGFsKHttYW5pZmVzdDpiLk1UYWtlb3V0LGRhdGE6e2pzb246KGIudG9qc29ufHxKU09OLnN0cmluZ2lmeSkoZi52YWx1ZSxudWxsLCIgICIpLHBhdGg6Zi5wYXRoLGtleTpmLmtleSxyZXBsYWNlOmguc2l6ZShmLnZhbHVlKT8iUmVwbGFjZSI6IlNhdmUiLGV4dGVuZDpoLnNpemUoZi52YWx1ZSk/IkV4dGVuZCI6IiJ9LHdpZHRoOihlLndpZHRoKCktMTYwKS5jbGFtcCg1MDAsMWUzKSxhbGlnbjoidG9wOjEwMyU7cmlnaHQ6LTc2cHg7Iixyb290OmMuZmluZCgic2VjdGlvbiNlZGl0b3IiKS5lcSgwKSxub3NlOiJ0b3AiLHNjcmVlbjoicmdiYSgyNTUsMjU1LDI1NSwwKSIsY2xvc2U6ITAsZXNjOiEwLGVudGVyOiEwLGJvdW5kOjJ9KS50aGVuKGZ1bmN0aW9uKHgpe3ZhciBhLGMsZCxrPSEwO2Z1bmN0aW9uIGwoKXtiLk5vZGVVcGRhdGVkKFtmLnBhdGgsZi5rZXldLGMsZi52YWx1ZSl9YT1iLm15LnBhcmVudCgpJiZiLm15LnBhcmVudCgpLmRhdGEuaXNOZXc/eC5ub2RlOjA9PWYubGV2ZWw/aC5yZWplY3QoeC5ub2RlLC9eKF9pZHxfcmV2KSQvKTp4Lm5vZGUsImV4dGVuZCI9PXguY21kPyhjPWkoZi52YWx1ZSwhMCksaihmLnZhbHVlLGEsITApKToicmVwbGFjZSI9PXguY21kPyhjPWkoZi52YWx1ZSwhMCksZD17fSwwPT1mLmxldmVsJiZmLnZhbHVlLl9yZXYmJihkPWguc2VsZWN0KGYudmFsdWUsL14oX2lkfF9yZXYpJC8pKSxiLlJUKCJMaWIiKS5raWNrKGYudmFsdWUsYSksMD09Zi5sZXZlbCYmaihmLnZhbHVlLGQpKTprPSExLGsmJihmLnN0YXRlPTIsbCgpLGIuUlQoIkxpYiIpLnJlbGlzdChlLGcpKX0pLmFsd2F5cyhmdW5jdGlvbigpe2QucGFyZW50KCkucmVtb3ZlQ2xhc3MoImhvdmVyIiksZS5yZW1vdmVDbGFzcygiaG92ZXIiKX0pfX0sSFRNTDp7TWFpbjonPHNlY3Rpb24gc3R5bGU9IiI+PHNlY3Rpb24gaWQ9ImVkaXRvciIgY2xhc3M9ImRpYiB3MTAwcCI+PGRpdiBjbGFzcz0icGI1IGZzMTMwIG5vY3dtaW4iPjxkaXYgaWQ9ImRvY3RpdGxlIiBjbGFzcz0iZnMxMTAgdzYwcCBwdDQgYm9sZGVyIGRpYiB2YXQgeGdyYXkgbncgb2ggZWxsIHByMTAiID48L2Rpdj48ZGl2IGNsYXNzPSJ3MjBwIGZzOTAgZGliIHZhdCI+PGRpdiBjbGFzcz0iZmktbWFnbmlmeWluZy1nbGFzcyB4Z3JheSBvNTAgZnM5NSIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgei1pbmRleDogKzE7IGxlZnQ6IDhweDt0b3A6IDAuMmVtOyI+PC9kaXY+PGlucHV0IHR5cGU9InRleHQiIGlkPSJqc29uLXNlYXJjaCIgY2xhc3M9InVpLXNlYXJjaCB3MTAwcCBtbDAgbXIwIG10MCBwcjEwIiBwbGFjZWhvbGRlcj0iU2VhcmNoIiBzdHlsZT0iYmFja2dyb3VuZC1pbWFnZTpub25lO3BhZGRpbmctcmlnaHQ6MTlweCFpbXBvcnRhbnQ7Ij48c3BhbiBjbGFzcz0iZmkteCBmczgwIGRpYiB2YXQgcHQyIGJsdWUgdWktc2VhcmNoLWNsZWFyIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LTE5cHghaW1wb3J0YW50OyJvbmNsaWNrPSIkKHRoaXMpLnNpYmxpbmdzKFwnaW5wdXQ6ZXEoMClcJykudmFsKFwnXCcpLnRyaWdnZXIoXCdjaGVjay5teVwnKSI+PC9zcGFuPjwvZGl2PjxidXR0b24gY2xhc3M9ImJ1dHRvbiBtcjAgZnIgdzE1MCBmczkwIiBpZD0iYnRuLXNhdmUiPlNhdmU8L2J1dHRvbj48L2Rpdj48ZGl2IGlkPSJkb2MiIGNsYXNzPSJpcm93XHR4Z3JheSI+PC9kaXY+PC9zZWN0aW9uPjwvc2VjdGlvbj4nLEl0ZW1TaW1wbGU6JzxkaXYgY2xhc3M9ImluYXYiPjxkaXYgY2xhc3M9ImlrZXkgaWtleXNpbXBsZSI+PC9kaXY+PGRpdiBjbGFzcz0iaXZhbHVlIj48L2Rpdj48ZGl2IGNsYXNzPSJpZWRpdG9yIj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJpYWN0IGJ1dHRvbnMiPjxidXR0b24gY2xhc3M9ImJ0bi1kZWwgYnV0dG9uIHJlZCIgdGl0bGU9IkRlbCBwcm9wZXJ0eSI+JnRoaW5zcDs8c3BhbiBjbGFzcz0iZmktdHJhc2giPjwvc3Bhbj4mdGhpbnNwOzwvYnV0dG9uPjwvZGl2PicsSXRlbUNvbXBsZXg6JzxkaXYgY2xhc3M9ImluYXYiPjxkaXYgY2xhc3M9ImlrZXkgaWtleXRyZWUiPjwvZGl2PjxzZWN0aW9uIGNsYXNzPSJpZGVzYyBjcCIgdGl0bGU9IkVkaXQgYXMgcmF3IEpTT04iPuKAkzwvc2VjdGlvbj48ZGl2IGNsYXNzPSJpZWRpdG9yIj48L2Rpdj48L2Rpdj48c2VjdGlvbiBjbGFzcz0iaXZhbHVlIGltdWx0aSBoaWRlIj48ZGl2IGNsYXNzPSJpbGlzdCI+PC9kaXY+PC9zZWN0aW9uPjxkaXYgY2xhc3M9ImlhY3QgYnV0dG9ucyI+PGJ1dHRvbiBjbGFzcz0iYnRuLWFkZCBidXR0b24gZ3JlZW4iIHRpdGxlPSJBZGQgbmV3IHByb3BlcnR5Ij4mdGhpbnNwOzxzcGFuIGNsYXNzPSJmaS1wbHVzIj48L3NwYW4+JnRoaW5zcDs8L2J1dHRvbj48YnV0dG9uIGNsYXNzPSJidG4tanNvbiBoaWRlIj48L2J1dHRvbj48YnV0dG9uIGNsYXNzPSJidG4tZGVsIGJ1dHRvbiByZWQiICB0aXRsZT0iRGVsIG5vZGUiPiZ0aGluc3A7PHNwYW4gY2xhc3M9ImZpLXRyYXNoIj48L3NwYW4+JnRoaW5zcDs8L2J1dHRvbj48L2Rpdj4nfSxzdHlsZTp7IiAiOiJmb250LXNpemU6MTVweDtmb250LWZhbWlseTogJy1hcHBsZS1zeXN0ZW0nLCdCbGlua01hY1N5c3RlbUZvbnQnLCdIZWx2ZXRpY2EgTmV1ZScsJ1NlZ29lIFVJJyxIZWx2ZXRpY2EsVGFob21hLFZlcmRhbmEsU2Fucy1zZXJpZjtmb250LXdlaWdodDo0MDA7bWluLWhlaWdodDo1MDBweDsgbWF4LXdpZHRoOjE5MDBweDsiLCIgLmJvbGRlciI6ImZvbnQtd2VpZ2h0OmJvbGRlcjsiLCIgLmN0IjoiY3Vyc29yOnRleHQ7IiwiICNkb2N0aXRsZSI6ZnVuY3Rpb24oeCxhLGIpe3JldHVybiJ3aWR0aDoiKyh4LndpZHRoKCkuY2xhbXAoMCwxNTAwKS0yMjAtMjAtMTQ0KSsicHgifSwiICAuaXJvdyI6ZnVuY3Rpb24oKXt2YXIgeD10aGlzLmRhdGEubGFiZWxXaWR0aDtyZXR1cm57IiAuaWtleSI6IndpZHRoOiIreCsicHg7IiwiIC5pbmF2IjoicGFkZGluZy1sZWZ0OiIreCsicHg7IiwiIC5pbmF2Pi5pa2V5IjoibWFyZ2luLWxlZnQ6LSIreCsicHg7In19LCIgLmlyb290IC5pa2V5IjoiY3Vyc29yOm5zLXJlc2l6ZTsiLCIgLmp2YWwtYnJhY2tldCI6ImZvbnQtd2VpZ2h0OmluaGVyaXQ7Y29sb3I6IHJnYmEoMCwxODEsMTYxLDAuNzIpOyIsIiAuanZhbC10cmltIjoiZGlzcGxheTppbmxpbmUtYmxvY2s7Ym9yZGVyLXJhZGl1czoycHg7cGFkZGluZzowcHggMnB4IDFweCAycHg7bGluZS1oZWlnaHQ6MS4xZW07Y29sb3I6cmdiYSgyMTMsIDQ4LCA4OSwgMC42Myk7YmFja2dyb3VuZC1jb2xvcjpyZ2JhKDQzLDEwNywxOTIsMC4wNyk7IiwiIC5qdmFsLXNob3J0IjoiY29sb3I6cmdiYSg4OCwxMDEsMTIzLDAuNjMpOyIsIiAuanZhbC1lbXB0eSI6ImNvbG9yOnJnYmEoODgsMTAxLDEyMywwLjYzKTsiLCIgLmp2YWwta2V5IjoiZm9udC13ZWlnaHQ6aW5oZXJpdDttYXJnaW4tbGVmdDozcHg7IiwiIC5qdmFsLWJyYWNrZXQrLmp2YWwta2V5IjoibWFyZ2luLWxlZnQ6MXB4OyIsIiAuanZhbC1zaW1wbGUiOiJjb2xvcjpyZ2JhKDI1NSw5NywwLDAuODcpOyIsIiAuanZhbC11bmRlZmluZWQiOiJjb2xvcjpyZ2JhKDIyMCwyMjcsMjMwLDAuODcpOyIsIiAuanZhbC1udW1iZXIiOiJjb2xvcjpyZ2JhKDUyLDE0MywyNywwLjgpIiwiIC5qdmFsLW51bGwiOiJjb2xvcjpyZ2JhKDIxNCwwLDI2LDAuOCkiLCIgLmp2YWwtc3RyaW5nIjoiY29sb3I6cmdiYSgzMCw2NSwxNjQsMC44KTsiLCIgLmp2YWwtZnVuY3Rpb24iOiJjb2xvcjpyZ2JhKDE0MywzNiwxNTgsMC44KTsiLCIgLmp2YWwtZm91bmQta2V5IjoiYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyMjEsMCwwLjcpO3BhZGRpbmctbGVmdDoxcHg7cGFkZGluZy1yaWdodDoxcHg7Ym9yZGVyLXJhZGl1czoycHg7IiwiIC5pcm9vdD4uaWVkaXRvciAuQ29kZU1pcnJvci1zY3JvbGwiOiJtYXgtaGVpZ2h0OmNhbGMoMTAwdmggLSAxMjBweCk7IGhlaWdodDoxMDAlOyBvdmVyZmxvdy15OnNjcm9sbDsiLCIiOnsiIHRleHRhcmVhIjoiZm9udC1mYW1pbHk6Q291c2luZSwnUFQgTW9ubycsTW9uYWNvLCdMdWNpZGEgQ29uc29sZScsbW9ub3NwYWNlOyIsIiAuaXJvdyI6IndpZHRoOmNhbGMoMTAwJSAtIDFweCk7ZGlzcGxheTppbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWduOnRvcDsgcGFkZGluZzowcHggMHB4IDBweCAyNXB4OyBib3JkZXItbGVmdDoxcHggc29saWQgcmdiYSg3MCwxMDUsMTM1LDAuMjUpOyBsaW5lLWhlaWdodDoxLjNlbTsgbWFyZ2luLWxlZnQ6MXB4OyB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuMjVzOyIsIiAuaXJvdzpiZWZvcmUiOidjb250ZW50OiIiO3Bvc2l0aW9uOmFic29sdXRlO3RvcDoxNXB4O2xlZnQ6MDt3aWR0aDoxOHB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkIHJnYmEoNzAsMTA1LDEzNSwwLjI1KTsnLCIgLmlyb3c6bGFzdC1jaGlsZCI6ImJvcmRlcjpub25lOyIsIiAuaXJvdzpsYXN0LWNoaWxkOmFmdGVyIjonY29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7aGVpZ2h0OjE1cHg7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkIHJnYmEoNzAsMTA1LDEzNSwwLjI1KTsnLCIgLmlyb3c6aG92ZXIsLmlyb3cuaG92ZXIiOiJiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjA2LCAyMTQsIDIyNiwgMC4yKTsiLCIgLmlrZXkiOiJwYWRkaW5nLXJpZ2h0OjEwcHg7ZGlzcGxheTppbmxpbmUtYmxvY2s7IHdvcmQtYnJlYWs6YnJlYWstYWxsO2ZvbnQtc2l6ZTo5NSU7IGxpbmUtaGVpZ2h0OjEuMmVtO29wYWNpdHk6MC44OyBvdmVyZmxvdzpoaWRkZW47dmVydGljYWwtYWxpZ246dG9wO21hcmdpbjowLjI1ZW0gMCAwLjNlbSAwcHg7IiwiIC5pa2V5dHJlZSI6ImN1cnNvcjogbnMtcmVzaXplOyIsIiAuaWxhYmVsIjoiZm9udC1zaXplOjgwJTtwYWRkaW5nOjAgNXB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsMCwwLDAuMDUpOyBib3JkZXItcmFkaXVzOjJweDtvcGFjaXR5OjAuOTsgZGlzcGxheTppbmxpbmUtYmxvY2s7IG1hcmdpbjotMXB4IDVweCAwIDBweDsiLCIgLml2YWx1ZSwgLmlsaXN0Ijoid29yZC1icmVhazogYnJlYWstYWxsOyIsIiAuaXZhbHVlIjoibGluZS1oZWlnaHQ6IDEuNmVtO2N1cnNvcjpwb2ludGVyOyIsIiAuaWRlc2MiOiJsaW5lLWhlaWdodDogMS41ZW07IiwiIC5pdmFsdWUsIC5pbGlzdCwgLmlkZXNjIjoid2lkdGg6MTAwJTsgZGlzcGxheTppbmxpbmUtYmxvY2s7IHZlcnRpY2FsLWFsaWduOnRvcDsiLCIgLmlkZXNjIC5pbW9kZSI6ImRpc3BsYXk6aW5saW5lLWJsb2NrOyB2ZXJ0aWNhbC1hbGlnbjp0b3A7IGZvbnQtc2l6ZTo5NSU7IGxpbmUtaGVpZ2h0OjEuNWVtOyBtYXJnaW4tbGVmdDoyMHB4OyIsIiAuaW1vZGUgPiBzcGFuIjoiZGlzcGxheTppbmxpbmUtYmxvY2s7IHBhZGRpbmc6MGVtIDAuNWVtOyBtYXJnaW4tcmlnaHQ6MC4wZW07IGJvcmRlci1yYWRpdXM6MnB4OyBib3JkZXI6IDFweCBzb2xpZCAjNDM0ZTVkMDA7IGNvbG9yOiM0MzRlNWQ5MDsiLCIgLmltb2RlLm1vZGUtdHJlZSAubW9kZS10cmVlLCAuaW1vZGUubW9kZS1qc29uIC5tb2RlLWpzb24sIC5pbW9kZS5tb2RlLWpzIC5tb2RlLWpzLCAuaW1vZGUubW9kZS1kaWZmIC5tb2RlLWRpZmYiOiJjb2xvcjojNDM0ZTVkYzA7IGJhY2tncm91bmQtY29sb3I6ICM0MzRlNWQxYTsgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsiLCIgLmltdWx0aS5pdmFsdWUiOiJjdXJzb3I6aW5oZXJpdDsiLCIgLmlzZWRpdG9yIC5pdmFsdWUiOiJ3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7IHdoaXRlLXNwYWNlOnByZTsgcGFkZGluZzowLjJlbSAwLjNlbSAwLjJlbSAwLjRlbTsgZm9udC1mYW1pbHk6Q291c2luZSwnUFQgTW9ubycsTW9uYWNvLCdMdWNpZGEgQ29uc29sZScsbW9ub3NwYWNlOyBtYXgtaGVpZ2h0OjQwMHB4OyBvdmVyZmxvdzphdXRvO292ZXJmbG93Om92ZXJsYXk7IG91dGxpbmU6bm9uZTsgYm9yZGVyOjFweCBzb2xpZCByZ2JhKDAsMCwwLDAuMik7IGZvbnQtc2l6ZTo5MCU7IGJvcmRlci1yYWRpdXM6MnB4O21hcmdpbjotMXB4IDAgLTFweCAwOyB0YWItc2l6ZToyOyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDI1NSwyNDAsMC44KTsgY3Vyc29yOnRleHQ7IiwiIC5pc2VkaXRvcn4uaXZhbHVlIjoiZGlzcGxheTpub25lOyIsIiAuaWJvb2xlYW4tdGFnIjoicGFkZGluZzowIDlweCAxcHggOXB4OyBkaXNwbGF5OmlubGluZS1ibG9jazsgdmVydGljYWwtYWxpZ246dG9wOyBib3JkZXItcmFkaXVzOjEwMHB4OyIsIiAuaXNlZGl0b3IgLmllZHR5cGUiOiJwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjZweDsgcmlnaHQ6ODZweDsgZm9udC1zaXplOiAwLjhlbTsgbGluZS1oZWlnaHQ6IDEuMmVtOyBib3JkZXItcmFkaXVzOjIwcHg7IHBhZGRpbmc6IDAgNXB4IDFweCA1cHg7IiwiIC5pbmF2IjoibWFyZ2luOjJweCAwOyIsIiAuaW5hdiAuaWVkaXRvciI6IndpZHRoOjEwMCU7ZGlzcGxheTpub25lO3dvcmQtYnJlYWs6bm9ybWFsOyIsIiAuaW5hdiAuaXZhbHVlLmhpZGV+LmllZGl0b3IiOiJkaXNwbGF5OmlubGluZS1ibG9jazsiLCIgLmluYXYgLmlkZXNjLmhpZGV+LmllZGl0b3IiOiJkaXNwbGF5OmlubGluZS1ibG9jazsiLCIgLmluYXYgLmllZGl0b3IgLmljbWZyYW1lIjoib3ZlcmZsb3c6aGlkZGVuOyBib3JkZXI6MXB4IHNvbGlkICNkMWRmZTk7IGJvcmRlci1yYWRpdXM6MnB4OyIsIiAuaW5hdiAuaWVkaXRvciAuYnV0dG9uIjoicGFkZGluZzogMC4yNWVtIDAuN2VtIDAuMTVlbSAwLjdlbTttYXJnaW4tdG9wOiAwOyBtYXJnaW4tYm90dG9tOiAwOyIsIiAuQ29kZU1pcnJvciI6ImZvbnQtc2l6ZToxMy4ycHg7IGZvbnQtZmFtaWx5OkNvdXNpbmUsJ1BUIE1vbm8nLE1vbmFjbyxtb25vc3BhY2U7IGxpbmUtaGVpZ2h0OjEuNGVtOyBjb2xvcjogIzQzNGU1ZDsiLCIgLkNvZGVNaXJyb3IgLkNvZGVNaXJyb3ItbGluZXMiOiJsaW5lLWhlaWdodDoxN3B4OyIsIiAuQ29kZU1pcnJvci1zY3JvbGwiOiJtYXgtaGVpZ2h0OmNhbGMoMjAgKiAxNnB4ICsgNnB4KTsiLCIgLkNvZGVNaXJyb3ItbGluZW51bWJlcnMiOiJ0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3M7IiwiIC5lZC1lcnJvciAuQ29kZU1pcnJvci1saW5lbnVtYmVycyI6ImJhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsIDIwMCwgMjAwLCAwLjc1KTsiLCIgLkNvZGVNaXJyb3IgLmNtLXByb3BlcnR5IjoiY29sb3I6IzQzNGU1ZDsiLCIgLkNvZGVNaXJyb3IgLmNtLXZhcmlhYmxlIjoiY29sb3I6IzMzYmZhZDsiLCIgLkNvZGVNaXJyb3IgLmNtLWtleXdvcmQiOiJjb2xvcjojOTAyNTllOyIsIiAuQ29kZU1pcnJvci5yZWFkb25seSI6ImJhY2tncm91bmQtY29sb3I6I2Y4ZjlmYTsgb3BhY2l0eTogMC44OyIsIiAubXktbW9kYWwtZm9ybSAuQ29kZU1pcnJvciI6Im1pbi1oZWlnaHQ6MTUwcHg7IGhlaWdodDphdXRvOyIsIiAubXktbW9kYWwtZm9ybSAuQ29kZU1pcnJvci1zY3JvbGwiOiJtaW4taGVpZ2h0OjE1MHB4OyIsIiAuaW5hdiAuaWVkaXRvciAuQ29kZU1pcnJvciI6Im1pbi1oZWlnaHQ6MjVweDsgaGVpZ2h0OmF1dG87IiwiIC5pYWN0IjoicG9zaXRpb246YWJzb2x1dGU7IHRvcDozcHg7IHJpZ2h0OjNweDtvcGFjaXR5OjA7dHJhbnNpdGlvbjpvcGFjaXR5IDAuM3M7Ym9yZGVyLXJhZGl1czozcHg7IiwiIC5pYWN0OmhvdmVyLCAuaWFjdC5ob3ZlciI6ImRpc3BsYXk6YmxvY2s7b3BhY2l0eToxIWltcG9ydGFudDsiLCIgLmluYXY6aG92ZXJ+LmlhY3QiOiJkaXNwbGF5OmJsb2NrO29wYWNpdHk6MC43OyIsIiAuaWFjdCAuYnV0dG9uIjoicGFkZGluZzowLjI1ZW0gMCAwLjE1ZW0gMDttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowO3RleHQtYWxpZ246Y2VudGVyO3dpZHRoOjM2cHg7d2hpdGUtc3BhY2U6bm93cmFwOyIsIiAuaW5hdi5pc2VkaXRvcn4uaWFjdCI6ImRpc3BsYXk6bm9uZTsiLCIgI2RvYyI6InBhZGRpbmc6MDsgYm9yZGVyOm5vbmU7b3ZlcmZsb3c6dmlzaWJsZTsiLCIgI2RvYzpiZWZvcmUsICNkb2M6YWZ0ZXIiOiJkaXNwbGF5Om5vbmU7IiwiICNkb2M6aG92ZXIiOiJiYWNrZ3JvdW5kOndoaXRlOyIsIiAjZG9jPi5pbmF2IjoicGFkZGluZy1sZWZ0OjEyMHB4OyIsIiAjZG9jPi5pbmF2IC5pa2V5IjoiZm9udC1zaXplOjEwNSU7Zm9udC13ZWlnaHQ6Ym9sZDttYXJnaW46MCAwIDAgLTEyMHB4O3dpZHRoOjEyMHB4OyIsIiAjZG9jPi5pYWN0Ijoib3BhY2l0eTowLjM7dG9wOjA7cmlnaHQ6MDsiLCIgLnRhZy5hY3RpdmUiOiJiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDEzNSwgMjEyLCAwLCAwLjE3KSFpbXBvcnRhbnQ7Y29sb3I6IHJnYig2NSwgMTMyLCAwKSFpbXBvcnRhbnQ7IiwiIC5idXR0b25zIGJ1dHRvbiI6ImJvcmRlci1yYWRpdXM6MDttYXJnaW4tcmlnaHQ6MnB4OyBwYWRkaW5nOjAuNGVtIDAuN2VtIDAuNGVtIDAuN2VtO3dpZHRoOjM2cHg7Zm9udC1zaXplOjkwJTsiLCIgLmJ1dHRvbnMgYnV0dG9uOmxhc3QtY2hpbGQiOiJib3JkZXItdG9wLXJpZ2h0LXJhZGl1czozcHg7IGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjNweDsgbWFyZ2luLXJpZ2h0OjA7IiwiIC5idXR0b25zIGJ1dHRvbjpmaXJzdC1jaGlsZCI6ImJvcmRlci10b3AtbGVmdC1yYWRpdXM6M3B4OyBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjNweDsiLCIgLmJ1dHRvbnMgLmJ1dHRvbiI6ImJvcmRlci1yYWRpdXM6MDttYXJnaW4tcmlnaHQ6MnB4OyIsIiAuYnV0dG9ucyAuYnV0dG9uOmxhc3QtY2hpbGQiOiJib3JkZXItdG9wLXJpZ2h0LXJhZGl1czozcHg7IGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjNweDsgbWFyZ2luLXJpZ2h0OjA7IiwiIC5idXR0b25zIC5idXR0b246Zmlyc3QtY2hpbGQiOiJib3JkZXItdG9wLWxlZnQtcmFkaXVzOjNweDsgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czozcHg7IiwiIGEuYmFzZTY0aW1hZ2UgaW1nIjoiYmFja2dyb3VuZDogd2hpdGU7IGJvcmRlcjogMXB4IHNvbGlkICNkZGQhaW1wb3J0YW50OyBwYWRkaW5nOiAzcHg7IG1heC13aWR0aDogMTAlOyBtaW4td2lkdGg6IDIlOyBtYXgtaGVpZ2h0OiA2MHB4OyIsIiAuYmFzZTY0aW1hZ2V+ZGl2Ijoid2lkdGg6ODclOyIsIiAuYmFzZTY0aWNvfmRpdiI6IndpZHRoOjg3JTsiLCIgLnc1NSI6IndpZHRoOjU1cHg7IiwiIC5oNTUiOiJoZWlnaHQ6NTVweDsifX0sTVRha2VvdXQ6e2luaGVyaXQ6WyJVIl0saW5pdDpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXM7Yi5VfHwoYi5VPXt0YWdFbW9qaTpmdW5jdGlvbih4KXtyZXR1cm4geH19KSxiLlN0YXJ0SGFzaD0kLm15LmYuc2RibUNvZGUoYS5kYXRhLmpzb24pLGIuZGF0YS5qc29uPSIoIitiLmRhdGEuanNvbisiKSIseC5odG1sKGIuSFRNTCl9LEhUTUw6JzxkaXYgaWQ9InRpdGxlIiBjbGFzcz0ibWI1IGZzMTA1IGJvbGRlciI+PC9kaXY+PGRpdiBjbGFzcz0ibmVlZHNjbGljayIgc3R5bGU9ImJvcmRlcjoxcHggc29saWQgI2RkZDsgbWFyZ2luOjJweCAwIDhweCAwO2JvcmRlci1yYWRpdXM6MnB4Ij48dGV4dGFyZWEgaWQ9Impzb24iIGF1dG9jb21wbGV0ZT0ib2ZmIiBhdXRvY29ycmVjdD0ib2ZmIiBhdXRvY2FwaXRhbGl6ZT0ib2ZmIiBzcGVsbGNoZWNrPSJmYWxzZSI+PC90ZXh0YXJlYT48L2Rpdj48ZGl2PjxkaXYgY2xhc3M9ImZyIGdyYXkgcHQ1IiBpZD0iaW5mbyI+PC9kaXY+PGRpdiBjbGFzcz0iYnV0dG9ucyBkaWIgdmF0IGZzMTEwIG10NCI+PGJ1dHRvbiBjbGFzcz0iYnV0dG9uIHc5MCIgaWQ9ImJ0bi1yZXBsYWNlIj5SZXBsYWNlPC9idXR0b24+PGJ1dHRvbiBjbGFzcz0iYnV0dG9uIHc5MCIgaWQ9ImJ0bi1leHRlbmQiPkV4dGVuZDwvYnV0dG9uPjxidXR0b24gY2xhc3M9ImJ1dHRvbiB3OTAiIGlkPSJidG4tY2FuY2VsIj5DYW5jZWw8L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPSJsZ3JheSBwbDMwIGRpYiB2YXQgcHQ1IiBpZD0iaW5mbyI+SlNPTiBvciBqcyBleHByZXNzaW9uIOKHoTwvZGl2PjxkaXYgY2xhc3M9InBsMzAgZGliIHZhdCBwdDUgbzcwIj48c3BhbiBjbGFzcz0icHNldWRvbGluayB0ZG4iIGlkPSJidG4tc3RyaXAiIHRpdGxlPSJSZW1vdmVzIGFsbCBfKiBzeXN0ZW0gZmllbGRzIGV4Y2VwdCBfaWQgYW5kIF9hdHRhY2htZW50cyI+U3RyaXAgXyBrZXlzPC9zcGFuPjwvZGl2PjwvZGl2PicsQ01wcmVmaXg6ImppIix1aTp7IiN0aXRsZSI6ZnVuY3Rpb24oeCxhLGIpe3ZhciBjPXRoaXM7cmV0dXJuIkpTT04gZm9yICIreC5wYXRoLnNsaWNlKDApLmFkZCh4LmtleSkubWFwKHg9PmUoeCwyNSkpLmpvaW4oIi8iKTtmdW5jdGlvbiBkKHgpe3JldHVybih4KyIiKS5lc2NhcGVIVE1MKCl9ZnVuY3Rpb24gZSh4LGEpe3JldHVybiBjLlUudGFnRW1vamkoZCgoeCsiIikudHJ1bmNhdGUoYXx8MTUsIm1pZGRsZSIsIuKApiIpKSl9fSwiI2pzb24iOntkZWxheToyMCxiaW5kOiJqc29uIixpbml0OmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcyxjPWIuZGF0YS5qc29uLmxlbmd0aDw1ZTU7Q29kZU1pcnJvci5mcm9tVGV4dEFyZWEoeFswXSx7bW9kZTpiLkNNcHJlZml4KyhjPyJqYXZhc2NyaXB0IjoidGV4dCIpLGxpbmVOdW1iZXJzOmMsdmlld3BvcnRNYXJnaW46MTAwLGluZGVudFdpdGhUYWJzOiEwLGluZGVudFVuaXQ6MixzY3JvbGxiYXJTdHlsZTpudWxsLGxpbmVXcmFwcGluZzohMCx0YWJTaXplOjIsdGhlbWU6ImRlZmF1bHQiLGF1dG9mb2N1czohMH0pfX0sIiNidG4tcmVwbGFjZSI6e2JpbmQ6ZnVuY3Rpb24oeCxhLGIpe3JldHVybiBudWxsIT1hJiYoeC5ub2RlPXRoaXMuUGFyc2VkLHguY21kPSJyZXBsYWNlIixiLnRyaWdnZXIoImNvbW1pdCIpKSx4LnJlcGxhY2V9LGNzczp7IjpkaXNhYmxlZCI6ZnVuY3Rpb24oeCxhKXtyZXR1cm4hdGhpcy5EaXJ0eXx8IXRoaXMuUGFyc2VkfSwic2VsZjpvcmFuZ2UiOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIHRoaXMuRGlydHkmJiEhdGhpcy5QYXJzZWR9fSx3YXRjaDoiI2luZm8ifSwiI2J0bi1leHRlbmQiOntiaW5kOmZ1bmN0aW9uKHgsYSxiKXtyZXR1cm4gbnVsbCE9YSYmKHgubm9kZT10aGlzLlBhcnNlZCx4LmNtZD0iZXh0ZW5kIixiLnRyaWdnZXIoImNvbW1pdCIpKSx4LmV4dGVuZH0sY3NzOnsiOmRpc2FibGVkIjpmdW5jdGlvbih4LGEpe3JldHVybiF0aGlzLkRpcnR5fHwhdGhpcy5QYXJzZWR9LCJzZWxmOm9yYW5nZSI6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gdGhpcy5EaXJ0eSYmISF0aGlzLlBhcnNlZH0sInNlbGY6aGlkZSI6ZnVuY3Rpb24oeCl7cmV0dXJuIXguZXh0ZW5kfX0sd2F0Y2g6IiNpbmZvIn0sIiNidG4tY2FuY2VsIjp7YmluZDpmdW5jdGlvbih4LGEsYil7bnVsbCE9YSYmYi50cmlnZ2VyKCJjYW5jZWwiKX19LCIjYnRuLXN0cmlwIjp7YmluZDpmdW5jdGlvbih4LGEsYil7aWYobnVsbCE9YSl7dmFyIGM9dGhpcy5QYXJzZWQsZD1bIl9pZCIsIl9hdHRhY2htZW50cyJdLnJlZHVjZShmdW5jdGlvbih4LGEpe3JldHVybiB2b2lkIDAhPT1jW2FdJiYoeFthXT1jW2FdKSx4fSx7fSk7dGhpcy5QYXJzZWQ9JC5leHRlbmQoZCxPYmplY3QucmVqZWN0KHRoaXMuUGFyc2VkLC9eXy8pKSx4Lmpzb249IigiK0pTT04uc3RyaW5naWZ5KHRoaXMuUGFyc2VkLG51bGwsIiAgIikrIikiLHRoaXMubXkucmVjYWxjKCIjanNvbiIpfX0sY3NzOnsic2VsZjpoaWRlIjpmdW5jdGlvbih4LGEpe3JldHVybiF0aGlzLlBhcnNlZHx8IU9iamVjdC5rZXlzKHRoaXMuUGFyc2VkKS5maW5kQWxsKC9eXy8pLnJlbW92ZSgiX2lkIikucmVtb3ZlKCJfYXR0YWNobWVudHMiKS5sZW5ndGh9fSx3YXRjaDoiI2luZm8ifSwiI2luZm8iOntkZWxheTo0MDAsYmluZDpmdW5jdGlvbihkLHYsJG8pe3ZhciBwYXJzZSxzPXVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChkLmpzb24pKS5sZW5ndGg7dHJ5e3BhcnNlPWV2YWwoIigiK2QuanNvbisiKSIpLHBhcnNlPU9iamVjdC5pc09iamVjdChwYXJzZSl8fE9iamVjdC5pc0FycmF5KHBhcnNlKT9KU09OLnBhcnNlKCQubXkudG9qc29uKHBhcnNlKSk6bnVsbH1jYXRjaCh4KXt9cmV0dXJuIHRoaXMuUGFyc2VkPXBhcnNlfHxudWxsLCRvLm15KCkucm9vdC50b2dnbGVDbGFzcygiZWQtZXJyb3IiLCFwYXJzZSksdGhpcy5IYXNoPSQubXkuZi5zZGJtQ29kZShkLmpzb24pLHRoaXMuRGlydHk9dGhpcy5TdGFydEhhc2ghPXRoaXMuSGFzaCxzLm1ldHJpYygyKSsiYiJ9LHdhdGNoOiIjanNvbiJ9fSxzdHlsZTp7IiAjanNvbiI6ImJvcmRlcjogbm9uZTsgd2lkdGg6IDEwMCU7ZGlzcGxheTogYmxvY2s7aGVpZ2h0OiAzMDBweDtmb250LXNpemU6IDAuN2VtO3dvcmQtd3JhcDogbm9ybWFsOyBvdmVyZmxvdy14OiBoaWRkZW47IiwiIC5Db2RlTWlycm9yIjp7IiI6Im1pbi1oZWlnaHQ6MTUwcHg7aGVpZ2h0OmF1dG87Zm9udC1zaXplOjEzcHghaW1wb3J0YW50OyIsIiAuQ29kZU1pcnJvci1saW5lcyI6ImxpbmUtaGVpZ2h0OjE3cHghaW1wb3J0YW50OyIsIiAuY20tcHJvcGVydHkiOiJjb2xvcjojNDM0ZTVkOyIsIiAuY20tdmFyaWFibGUiOiJjb2xvcjojMzNiZmFkOyIsIiAuY20ta2V5d29yZCI6ImNvbG9yOiM5MDI1OWU7In19fSxNQWRkOntpbml0OmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpczt4LmZvcm1nZW4oYi5IVE1MKSxhLmRhdGEuaXNhcnJheSYmeC5maW5kKCIjbmtleSIpLmF0dHIoInR5cGUiLCJudW1iZXIiKX0sZGF0YTp7Y21kOiIiLGtleToiIix0eXBlOiJzdHJpbmciLGlzYXJyYXk6ITEsdGV4dDoiQ3JlYXRlIG5ldyBwcm9wZXJ0eSIscHJlcGVuZDoiUHJlcGVuZCIsYXBwZW5kOiJBcHBlbmQiLHVwbG9hZDonPHNwYW4gY2xhc3M9InBzZXVkb2xpbmsgZGliIHcxMDBwIHZhdCB0YWMiPlNlbGVjdCBmaWxlLi4uPC9zcGFuPicsa2V5czp7fSxmaWxlOnt9fSxDTXByZWZpeDoiIix1aTp7IiNudGV4dCI6InRleHQiLCIjbmtleSI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gbnVsbCE9YSYmKHguaXNhcnJheT94LmtleT1hLnJlcGxhY2UoL1xEL2csIiIpOngua2V5PWEpLHgua2V5fSx3YXRjaDoiI250eXBlIn0sIiNudHlwZSI6e2JpbmQ6ZnVuY3Rpb24oeCxhLGIpe3JldHVybiBudWxsIT1hJiYoeC50eXBlPWEsIkNsaXAiIT1hfHx4LmtleXx8eC5pc2FycmF5fHwoeC5rZXk9eC5jbGlwLmtleSkpLHgudHlwZX0saW5pdDpmdW5jdGlvbih4LGEpe3gudGFncyh7dGFnczpbW3sie09ian0iOiJvYmplY3QifSx7IltBcnJdIjoiYXJyYXkifSx7TnVtOiJudW1iZXIifSx7Qm9vbDoiYm9vbGVhbiJ9LHtGaWxlOiJmaWxlIn1dXSxlbXB0eTp7JyJTdHIiJzoic3RyaW5nIn0sdGFnY3NzOiJ0YWcgYmx1ZSBjcCBwbDUgcHI1Iix0YWdzaGltOiIiLGdyb3Vwc2hpbToiIn0pfSxyZWNhbGM6IiNua2V5dHlwZSJ9LCIjbmtleXR5cGUiOmZ1bmN0aW9uKHgpe3JldHVybiB4LmlzYXJyYXk/IkluZGV4IjoiS2V5In0sIiN4dXBsb2FkIjp7d2F0Y2g6IiNudHlwZSIsY3NzOntoaWRlOmZ1bmN0aW9uKHgpe3JldHVybiJmaWxlIiE9eC50eXBlfX19LCIjdXBsb2FkIjp7YmluZDpmdW5jdGlvbih4LGEsYil7dmFyIGMsZCxlPXt9O251bGwhPWEmJmEmJigoYz1iWzBdLmZpbGVzWzBdKS5zaXplPngubGltaXQ/KGN3Lm5vdGUoIk1heCB1cGxvYWQgZmlsZSBzaXplIGlzICIrKDEqeC5saW1pdCkuYWJicigxKSsiYiIsImVycm9yIiksYi53cmFwKCI8Zm9ybT4iKS5jbG9zZXN0KCJmb3JtIikuZ2V0KDApLnJlc2V0KCkpOmMmJmZ1bmN0aW9uKCl7ZS5uYW1lPWMubmFtZSxlLmNvbnRlbnRfdHlwZT1jLnR5cGV8fCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iO3ZhciBhLGY9bmV3IEZpbGVSZWFkZXIsZz1bXTtmLm9ubG9hZD1mdW5jdGlvbihmKXthPW5ldyBVaW50OEFycmF5KGYudGFyZ2V0LnJlc3VsdCk7Zm9yKHZhciBoPTA7aDxhLmxlbmd0aDtoKyspZy5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoYVtoXSkpO2Q9d2luZG93LmJ0b2EoZy5qb2luKCIiKSksZS5kYXRhPWQsZS5sZW5ndGg9Zy5sZW5ndGgsJC5leHRlbmQoeC5maWxlLGUpLHgua2V5fHx4LmlzYXJyYXl8fCh4LmtleT1jLm5hbWUpLCF4LmtleSYmeC5pc2FycmF5LGIud3JhcCgiPGZvcm0+IikuY2xvc2VzdCgiZm9ybSIpLmdldCgwKS5yZXNldCgpLGIubXkoImZpbmQiLCIuY3ctYXR0LXVwbG9hZD5zcGFuIikudGV4dChjLm5hbWUudHJ1bmNhdGUoMTUsIm1pZGRsZSIsIuKApiIpKyIgIitlLmxlbmd0aC5tZXRyaWMoMiwhMSkrImIiKSx4LmtleT09Yy5uYW1lJiZiLm15KCJmaW5kIiwiI25rZXkiKS52YWwoeC5rZXkpLnRyaWdnZXIoImJsdXIiKX0sZi5yZWFkQXNBcnJheUJ1ZmZlcihjKX0oKSl9LGNzczp7aGlkZTpmdW5jdGlvbih4KXtyZXR1cm4heC51cGxvYWR9fX0sIi5jdy1hdHQtdXBsb2FkIjoidXBsb2FkIiwiI2J0bi10bzAiOntiaW5kOmZ1bmN0aW9uKHgsYSxiKXtyZXR1cm4gbnVsbCE9YSYmKHguY21kPSJwcmVwZW5kIixiLnRyaWdnZXIoImNvbW1pdCIpKSx4LmtleXNbeC5rZXldJiYheC5pc2FycmF5PyJSZXBsYWNlIjp4LnByZXBlbmR9LGNzczp7IjpkaXNhYmxlZCI6ZnVuY3Rpb24oeCl7cmV0dXJuIXgua2V5fSwic2VsZjpyZWQiOmZ1bmN0aW9uKHgpe3JldHVybiB4LmtleXNbeC5rZXldJiYheC5pc2FycmF5fX0sd2F0Y2g6IiNua2V5In0sIiNidG4tdG8xIjp7YmluZDpmdW5jdGlvbih4LGEsYil7cmV0dXJuIG51bGwhPWEmJih4LmNtZD0iYXBwZW5kIixiLnRyaWdnZXIoImNvbW1pdCIpKSx4LmFwcGVuZH0sY3NzOnsiOmRpc2FibGVkIjpmdW5jdGlvbih4KXtyZXR1cm4heC5rZXl9LCJzZWxmOmhpZGUiOmZ1bmN0aW9uKHgpe3JldHVybiF4LmFwcGVuZHx8L15cZCskLy50ZXN0KHgua2V5KXx8eC5rZXlzW3gua2V5XX19LHdhdGNoOiIjbmtleSJ9LCIjYnRuLWNhbmNlbCI6ZnVuY3Rpb24oeCxhLGIpe251bGwhPWEmJmIudHJpZ2dlcigiY2FuY2VsIil9fSxIVE1MOlsnPGRpdiBpZD0ibnRleHQiPjwvZGl2Picse2xhYmVsOiI1MHB4Iixyb3c6IjEwMCUiLHJvd0NzczoibXktcm93IHB0NSBwYjUiLGxhYmVsQ3NzOiJteS1sYWJlbCBncmF5IGZzOTAifSxbJzxzcGFuIGlkPSJua2V5dHlwZSI+S2V5PC9zcGFuPicsImlucCNua2V5LncxMDBwIiwibXNnLm10Mi5tYi0yIl0sWyJUeXBlIiwic3BuI250eXBlLmRpdi52YXQuZnM5NSJdLCc8ZGl2IGlkPSJ4dXBsb2FkIiBjbGFzcz0icGw2MCBtdDUgbWIxMCBoaWRlIj4nLCc8c3BhbiBjbGFzcz0iY3ctYXR0LXVwbG9hZCBidXR0b24gdzEwMHAiPjwvc3Bhbj4nLCc8aW5wdXQgaWQ9InVwbG9hZCIgY2xhc3M9InBsNjAiIHR5cGU9ImZpbGUiIC8+JywiPC9kaXY+Iix7cm93Q3NzOiJteS1yb3cgcHQ1IHBiMiBidXR0b25zIHBsNTAifSxbIiIsImJ1dCNidG4tdG8wLmJ1dHRvbi5ncmVlbi53OTUiLHt0eHQ6IlByZXBlbmQifSwiYnV0I2J0bi10bzEuYnV0dG9uLmdyZWVuLnc4NSIse3R4dDoiQXBwZW5kIn0sImJ1dCNidG4tY2FuY2VsLmJ1dHRvbi53NzUubXIwIix7dHh0OiJDYW5jZWwifV1dLHN0eWxlOnsiIC5jdy1hdHQtaXRlbSI6IndoaXRlLXNwYWNlOm5vd3JhcDsgb3ZlcmZsb3c6aGlkZGVuOyBwYWRkaW5nOjAuMmVtIDAgMC4yZW0gMDsgbGluZS1oZWlnaHQ6MS40ZW07IiwiIGlucHV0W3R5cGU9ZmlsZV0iOiJ3aWR0aDoyNDBweDtjdXJzb3I6cG9pbnRlcjtvcGFjaXR5OjA7IHBvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6NjBweDtoZWlnaHQ6MzVweDsifX0sTUVkaXQ6e2RhdGE6e3RleHQ6IiIsbW9kZToiYXV0byIscmVhZG9ubHk6ITEsY29tbWl0S2V5czpbXSxjb21taXRUeXBlS2V5czp7fSxjYW5jZWxLZXlzOltdLGNhbmNlbFR5cGVLZXlzOnt9LGV4cGVjdDoic3RyaW5nIix0eXBlOiJzdHJpbmcifSxpbml0Oic8ZGl2IHN0eWxlPSJ3aWR0aDpjYWxjKDEwMCUgLSA4MHB4KTsiIGNsYXNzPSJpY21mcmFtZSBkaWIgdmF0IG10LTEgbWItMSI+PHRleHRhcmVhIGlkPSJpZWQiIHN0eWxlID0id2lkdGg6MTAwJTt4bWF4LWhlaWdodDozMDBweDsiIGNsYXNzPSJ4Z3JheSI+PC90ZXh0YXJlYT48L2Rpdj48ZGl2IGlkPSJpZWR0eXBlIiBjbGFzcz0iaWVkdHlwZSBoaWRlIHdoaXRlIGJvbGQgY3AgemkyIiBzdHlsZT0iIiB0aXRsZT0iQ2xpY2sgdG8gcHJldHRpZnkgSlNPTiI+YXJyYXk8L2Rpdj48ZGl2IGNsYXNzPSJidXR0b25zIHc4MCBkaWIgdmF0IHRhciBvMTAwIHByMyBwdDAiPjxidXR0b24gaWQ9ImJ0bi1jaGFuZ2UiIGNsYXNzPSJidXR0b24gZ3JlZW4gdzM2IiB0aXRsZT0iQXBwbHkgY2hhbmdlcyI+PHNwYW4gY2xhc3M9ImZpLWNoZWNrIj48L3NwYW4+PC9idXR0b24+PGJ1dHRvbiBpZD0iYnRuLWRpc2NhcmQiIGNsYXNzPSJidXR0b24gdzM2IiB0aXRsZT0iRGlzY2FyZCBjaGFuZ2VzIj48c3BhbiBjbGFzcz0iZmkteCI+PC9zcGFuPjwvYnV0dG9uPjwvZGl2PicsQ01wcmVmaXg6ImppIix1aTp7IiNpZWQiOntiaW5kOiJ0ZXh0Iixpbml0OmZ1bmN0aW9uKHgpe3ZhciBhLGI9dGhpcyxjPWIuZGF0YSxkPWMudGV4dCxlPWMubW9kZSxmPSJudW1iZXIiPT1lLGc9ITA7aWYoImF1dG8iPT1lKWlmKCgoYT1kLnN1YnN0cigwLDgwMCkpLm1hdGNoKC8odmFyXHN8Y29uc3Rcc3xmdW5jdGlvbltcc1woXXxyZXR1cm5cc3xbXHNcdF1pZlxzKS9nKXx8W10pLmxlbmd0aD4yKXtlPSJqYXZhc2NyaXB0Ijt2YXIgaD0wO2QubGluZXMoKS5mb3JFYWNoKGZ1bmN0aW9uKHgsYSl7YT4yMDB8fHgubGVuZ3RoPmgmJihoPXgubGVuZ3RoKX0pLGg+MTUwJiZoPDFlMyYmITB9ZWxzZS88XC8oZGl2fHNwYW58cHxhfHNjcmlwdHxoZWFkfHRpdGxlfHN2Z3xwYXRoKS8udGVzdChhKXx8Lzwoc3ZnfHBhdGh8Z3JvdXApXHMvLnRlc3QoYSk/KGU9Imh0bWxtaXhlZCIsITApOkNvZGVNaXJyb3IubW9kZXMuZXJsYW5nJiYvXiglJVteXHJcbl0qW1xyXG5dKykqW1xyXG5cc1x0XSpmdW5bXHJcblxzXHRdKlwoW1xyXG5cc1x0XSpcez8vLnRlc3QoYSk/KGU9ImVybGFuZyIsITApOihlPSJ0ZXh0IiwvW1xyXG5dLy50ZXN0KGEpfHwoITAsZC5sZW5ndGg8ODAwJiYoZz0hMSkpKTtmdW5jdGlvbiBpKCl7Yi5teS50cmlnZ2VyKCIjaWVkIiwiZWRpdG9yY29tbWl0Lm15Iil9ZnVuY3Rpb24gaigpe2IubXkudHJpZ2dlcigiI2llZCIsImVkaXRvcmNhbmNlbC5teSIpfWZ1bmN0aW9uIGsoKXsoZnVuY3Rpb24oKXtiLm15LnJvb3QoKS50cmlnZ2VyKCJqc29uZG9jc2F2ZS5teSIpfSkuZGVsYXkoMTAwKSxiLm15LnRyaWdnZXIuZGVsYXkoMjAsIiNpZWQiLCJlZGl0b3Jjb21taXQubXkiKX0ibnVtYmVyIj09ZT8oZT0iamF2YXNjcmlwdCIsZz0hMSk6ImI2NCI9PWUmJihlPSJ0ZXh0IiwhMCxnPSExKSwidGV4dCI9PWUmJihlPSJudWxsIiksQ29kZU1pcnJvci5mcm9tVGV4dEFyZWEoeFswXSx7bW9kZTooLTE9PWUuaW5kZXhPZigiLyIpP2IuQ01wcmVmaXg6IiIpK2Usdmlld3BvcnRNYXJnaW46MTAwLGxpbmVOdW1iZXJzOmcsaW5kZW50V2l0aFRhYnM6ITAsaW5kZW50VW5pdDoyLHRhYlNpemU6Mix0aGVtZToiZGVmYXVsdCIscmVhZE9ubHk6Yy5yZWFkb25seSxhdXRvZm9jdXM6ITAsbGluZVdyYXBwaW5nOiEwLGV4dHJhS2V5czokLmV4dGVuZCh7RXNjOmosIkN0cmwtRW50ZXIiOmkuZGVib3VuY2UoMjApLCJDbWQtRW50ZXIiOmkuZGVib3VuY2UoMjApLCJDbWQtUyI6aywiQ3RybC1TIjprfSxmP3tFbnRlcjppfTp7fSxjLmNvbW1pdEtleXMuY29uY2F0KGMuY29tbWl0VHlwZUtleXNbYy5tb2RlXT9jLmNvbW1pdFR5cGVLZXlzW2MubW9kZV06W10pLnJlZHVjZShmdW5jdGlvbih4LGEpe3JldHVybiB4W2FdPWkseH0se30pLGMuY2FuY2VsS2V5cy5jb25jYXQoYy5jYW5jZWxUeXBlS2V5c1tjLm1vZGVdP2MuY2FuY2VsVHlwZUtleXNbYy5tb2RlXTpbXSkucmVkdWNlKGZ1bmN0aW9uKHgsYSl7cmV0dXJuIHhbYV09aix4fSx7fSksYy5jb21taXRUeXBlS2V5c1tjLm1vZGVdP2MuY29tbWl0VHlwZUtleXNbYy5tb2RlXTpbXSl9KSxjLnJlYWRvbmx5JiZ4Lm5leHQoKS5hZGRDbGFzcygicmVhZG9ubHkiKX19LCIjYnRuLWNoYW5nZSI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtudWxsIT1hJiZ0aGlzLm15LnRyaWdnZXIoIiNpZWQiLCJlZGl0b3Jjb21taXQubXkiKX0sY3NzOnsiOmRpc2FibGVkIjpmdW5jdGlvbih4KXtyZXR1cm4hIXgucmVhZG9ubHl9fX0sIiNidG4tZGlzY2FyZCI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtudWxsIT1hJiZ0aGlzLm15LnRyaWdnZXIoIiNpZWQiLCJlZGl0b3JjYW5jZWwubXkiKX19LCIjaWVkdHlwZSI6e2luaXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPWEuZGF0YTt4Lm9uKCJjbGljay5teSIsZnVuY3Rpb24oKXtpZihiLnR5cGU9PWIuZXhwZWN0KXt2YXIgeD1hLm15LmZpbmQoIi5pY21mcmFtZSIpLndpZHRoKCkvOC4yfDA7Yi50ZXh0PSIoIitjdy5saWIuanNvbihjdy5saWIudW5qc29uKGEucGFyc2VTdHJpbmcoYi50ZXh0KSkse2FsbG93SlM6ITAsdGFiQ2hhcnM6IiAgIixtYXhXaWR0aDp4fSkrIikiLGEubXkucmVjYWxjKCIjaWVkIil9fS5kZWJvdW5jZSg1MCkpfSxkZWxheTozMDAsYmluZDpmdW5jdGlvbih4LGEpe2lmKG51bGw9PWEpcmV0dXJuIm9iamVjdCIhPXguZXhwZWN0JiYiYXJyYXkiIT14LmV4cGVjdHx8KHgudHlwZT0kLnR5cGUodGhpcy5wYXJzZVN0cmluZyh4LnRleHQpKSkseC50eXBlfSxjc3M6eyJiZy1yZWQxIjpmdW5jdGlvbih4KXtyZXR1cm4geC50eXBlIT14LmV4cGVjdH0sImJnLWdyYXkyIjpmdW5jdGlvbih4KXtyZXR1cm4geC50eXBlPT14LmV4cGVjdH0saGlkZTpmdW5jdGlvbih4KXtyZXR1cm4hKCJvYmplY3QiPT14LmV4cGVjdHx8ImFycmF5Ij09eC5leHBlY3QpfX0sd2F0Y2g6WyIjaWVkIl19fSxwYXJzZVN0cmluZzpmdW5jdGlvbiBfcGFyc2VTdHJpbmcodmFsKXt2YXIgbyxlcnI7dHJ5e289SlNPTi5wYXJzZSh2YWwpfWNhdGNoKHgpe2Vycj0hMH1pZihlcnIpe3RyeXtvPWV2YWwoIigiK3ZhbCsiKSIpLGVycj0hMX1jYXRjaCh4KXtlcnI9ITB9IWVyciYmL14ob2J8YXIpLy50ZXN0KCQudHlwZShvKSkmJihvPUpTT04ucGFyc2UoY3cubGliLmpzb24obykpKX1yZXR1cm4gZXJyfHx2b2lkIDA9PT1vP3ZhbDpvfX0sJG11bHRpOntpZDoiU3lzLkpTT04uT2JqZWN0IixwYXJhbXM6e25vcm1hbGl6ZWQ6ITB9LGRhdGE6e30sTGlzdDpbXSxDTToiamF2YXNjcmlwdCIsRjp7fSxUeHQ6e29iamVjdDpbIk9iamVjdCB7IiwifSJdLGFycmF5OlsiQXJyYXkgWyIsIl0iXX0sbWF4RGVwdGg6MWUzLGluaXQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzLGM9Yi5kYXRhO3guYWRkQ2xhc3MoImVkLW5vZGUtIitiLlBhdGhTaWcoYy5wYXRoLGMua2V5KSkseC5odG1sKGIuSFRNTCksYy5zdGF0ZT4xJiYoYi5MaXN0PWIuTWFrZUxpc3QoYi5kYXRhKSkseC50aGVuKGZ1bmN0aW9uKCl7eC5vbigiY2xpY2subXkiLCIuaWxpc3Q6ZXEoMCkgLmJ0bi1kZWwiLGZ1bmN0aW9uKGMpe2Muc3RvcFByb3BhZ2F0aW9uKCk7dmFyIGQ9JCh0aGlzKS5wYXJlbnRzKCIubXktZm9ybSIpLmVxKDApLGU9ZC5wYXJlbnQoKS5kYXRhKCJteSIpLmRhdGEsZj1iLlJUKCJMaWIiKS5pc1N5c3RlbS5jYWxsKGQubXkoIm1hbmlmZXN0IiksZC5teSgiZGF0YSIpKSxnPSQudHlwZShlLnZhbHVlKSxoPWQubXkoImRhdGEiKS5rZXksaT1udWxsO2lmKGYpY3cubGliLm5vdGUoIkRlbGV0aW9uIGlzIG5vdCBhbGxvd2VkIiwiZXJyb3IiKTtlbHNle2lmKCJvYmplY3QiPT1nKXt2YXIgaj1PYmplY3Qua2V5cyhlLnZhbHVlKSxrPWouaW5kZXhPZihoKTtpPVtudWxsLG51bGxdLGs+MCYmKGlbMF09altrLTFdKSxrPGoubGVuZ3RoLTEmJihpWzFdPWpbaysxXSl9Yi5Ob2RlVXBkYXRlZChbZS5wYXRoLGUua2V5LGhdLGUudmFsdWVbaF0sdm9pZCAwLGkpLCJvYmplY3QiPT1nP2RlbGV0ZSBlLnZhbHVlW2hdOiJhcnJheSI9PWcmJmUudmFsdWUucmVtb3ZlQXQoaCksYi5SVCgiTGliIikucmVsaXN0KHgsYixhKX19KX0pfSx1aTp7Ii5pdmFsdWUiOntkZWxheTowLGNzczp7aGlkZTpmdW5jdGlvbigpe3JldHVybiF0aGlzLkxpc3QubGVuZ3RofX19LCIuYnRuLWpzb24iOntkZWxheTouMDEsaW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzO2EuSW5saW5lQ00oeCxhKX0sYmluZDpmdW5jdGlvbih4LGEsYil7aWYobnVsbCE9YSl7eC5zdGF0ZT0xNnx4LnN0YXRlfX0scmVjYWxjOlsiLmlrZXkiLCIuaWRlc2MiXX0sIi5pa2V5Ijp7ZGVsYXk6MTAsYmluZDpmdW5jdGlvbih4LGEsYil7dmFyIGMsZD10aGlzLGU9ZC5sYWJlbFdpZHRoLzN8MCxmPSIkbXVsdGkiPT14Lm1hbmlmZXN0LGc9ISEoMTYmeC5zdGF0ZSksaD1PYmplY3Quc2l6ZSh4LnZhbHVlKTtyZXR1cm4gbnVsbD09YXx8Z3x8KGg8PWQubWF4RGVwdGg/KHguc3RhdGU9MSZ4LnN0YXRlJiYoIWZ8fGgpfHwheC5sZXZlbD8yNTQmeC5zdGF0ZXwyOjI1MyZ4LnN0YXRlfDEsMiZ4LnN0YXRlP2QuTGlzdD1kLk1ha2VMaXN0KHgpOihkLkxpc3Q9W10sZC5TaG93SXRlbXM9bnVsbCkpOihkLkxpc3Q9W10sZC5TaG93SXRlbXM9bnVsbCx4LnN0YXRlPTI1MyZ4LnN0YXRlfDEsZC5teS5maW5kKCIuaWRlc2MiKS50cmlnZ2VyKCJjbGljay5teSIpKSxkLlJUKCJNZW1TdGF0ZSIpKHgpKSw0Jnguc3RhdGUmJmQuUlQoIlNlYXJjaFJlIik/Yz14LmtleS5yZXBsYWNlKGQuUlQoIlNlYXJjaFJlIiksIu+/sSQx77+wIikuZXNjYXBlSFRNTCgpLnJlcGxhY2UoIu+/sSIsJzxzcGFuIGNsYXNzPSJqdmFsLWZvdW5kLWtleSI+JykucmVwbGFjZSgi77+wIiwiPC9zcGFuPiIpOih4LmtleS5sZW5ndGg+ZSYmYi5hdHRyKCJ0aXRsZSIseC5rZXkuZXNjYXBlSFRNTCgpKSxjPS9eKHxccyspJC8udGVzdCh4LmtleSk/JyInK3gua2V5LmVzY2FwZUhUTUwoKSsnIic6eC5rZXkudHJ1bmNhdGUoZSwicmlnaHQiLCLigKYiKS5lc2NhcGVIVE1MKCksMTgmeC5zdGF0ZT8oYz0nPHNwYW4gY2xhc3M9ImZ3NTAwIj4nK2MrIjwvc3Bhbj4iLDE2Jnguc3RhdGV8fCFofHwoYys9JzxzcGFuIGNsYXNzPSJhZG93biI+PC9zcGFuPicpKTpoJiYoYys9JzxzcGFuIGNsYXNzPSJhcmlnaHQiPjwvc3Bhbj4nKSksZC5VLnRhZ0Vtb2ppKGMpfSxldmVudHM6ImNsaWNrLm15IixyZWNhbGM6WyIuaXZhbHVlIiwiLmlkZXNjIiwiLmlsaXN0Il19LCIuaWRlc2MiOntkZWxheTowLGJpbmQ6ZnVuY3Rpb24oeCxhLGIpe3ZhciBjPXRoaXMsZD0oYy5MaXN0LGMuVHh0W3gudHlwZV0sT2JqZWN0LnNpemUoeC52YWx1ZSkpLGU9KHgubWFuaWZlc3QsIiIpO2lmKG51bGw9PWEpe2lmKDE2Jnguc3RhdGUpZT0iIjtlbHNlIGlmKGMuTGlzdC5sZW5ndGgpZT0ib2JqZWN0Ij09eC50eXBlPyJPYmplY3QgeyIrZCsifSI6IkFycmF5IFsiK2QrIl0iO2Vsc2UgaWYoIWMuUlQoIlNlYXJjaFJlIil8fHgucGF0aC5sZW5ndGgpe3ZhciBmPWMuUlQoImoyaCIpKHgudmFsdWUsNTAsWyJpZCIsIm5hbWUiLCJsZW5ndGgiLCJzdGF0dXMiXSwiYXJyYXkiIT14LnR5cGU/MToyLCJhcnJheSIhPXgudHlwZSk7MT09Zi5sZW5ndGgmJiJzaG9ydCI9PWZbMF1bMF0mJigieyI9PWZbMF1bMV1bMF0/ZlswXVsxXT0iT2JqZWN0ICIrZlswXVsxXToiWyI9PWZbMF1bMV1bMF0mJihmWzBdWzFdPSJBcnJheSAiK2ZbMF1bMV0pKSxlKz1mLm1hcChmdW5jdGlvbih4KXtyZXR1cm4geFswXT8nPHNwYW4gY2xhc3M9Imp2YWwtJyt4WzBdKyciPicreFsxXSsiPC9zcGFuPiI6eFsxXX0pLmpvaW4oIiIpfWVsc2UgZT0nPHNwYW4gY2xhc3M9ImxoMTE1IGRpYiB2YXQiPkZvdW5kIG5vIG5vZGVzIGNvbnRhaW5pbmcgPHNwYW4gY2xhc3M9ImJvbGRlciI+ezF9PC9zcGFuPjwvc3Bhbj4nLmFzc2lnbihjLlJUKCJkYXRhIikuc2VhcmNoLmVzY2FwZUhUTUwoKSk7Yi5odG1sKGMuVS50YWdFbW9qaShlKSl9fSxyZWNhbGM6WyIuaXZhbHVlIiwiLmlrZXkiLCIuaWxpc3QiXX0sIi5pbGlzdCI6e2RlbGF5OjAsaW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzO3gub24oImNoYW5nZS5teSIsZnVuY3Rpb24oKXthLlJUKCJSZWpvaW4iKShhLmRhdGEsYS5MaXN0KX0uZGVib3VuY2UoMzAwKSl9LGJpbmQ6InRoaXMuTGlzdCIsbGlzdDonPGRpdiBjbGFzcz0iaXJvdyI+PC9kaXY+JyxpZDpmdW5jdGlvbih4KXtyZXR1cm4iWCIreC5pZH0saGFzaDpmdW5jdGlvbih4KXtyZXR1cm4iWCIreC5oYXNofSxtYW5pZmVzdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzO3JldHVybiBhLlJUKHgubWFuaWZlc3QpfHxhLlJUKCIkc3RyaW5nIil9fX19LCRzdHJpbmc6e2lkOiJTeXMuSlNPTi5TdHJpbmciLENNOiJhdXRvIixGOnt9LHVpOnsiLmlrZXkiOnt9LCIuaXZhbHVlIjp7aW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzO2EuZGF0YTthLklubGluZUNNKHgsYSl9LGJpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzO3JldHVybiAyIT14LnN0YXRlP2MoeC52YWx1ZSk6KG51bGwhPWEmJih4LnZhbHVlPWEpLGMoeC52YWx1ZSkpO2Z1bmN0aW9uIGMoeCl7dmFyIGE9JzxzcGFuIGNsYXNzPSJqdmFsLWJyYWNrZXQiPiZxdW90Ozwvc3Bhbj4nLGM9JzxzcGFuIGNsYXNzPSJvMzAiPuKAicK24oCJPC9zcGFuPic7cmV0dXJuIHgubGVuZ3RoPjE0MD9hKz14LnRydW5jYXRlKDE0MCkuZXNjYXBlSFRNTCgpLnJlcGxhY2UoL1xuL2csYykrJyZxdW90OyA8c3BhbiBjbGFzcz0iaWxhYmVsIj4nK3gubGVuZ3RoKyIgY2hhcnM8L3NwYW4+IjphKz14LmVzY2FwZUhUTUwoKS5yZXBsYWNlKC9cbi9nLGMpKyc8c3BhbiBjbGFzcz0ianZhbC1icmFja2V0Ij4mcXVvdDs8L3NwYW4+JyxiLlUudGFnRW1vamkoYSl9fSxldmVudHM6ImlucHV0Lm15In19fSwkZm91bmQ6e2lkOiJTeXMuSlNPTi5Gb3VuZCIsQ006ImF1dG8iLEY6e30sdWk6eyIuaWtleSI6e30sIi5pdmFsdWUiOntpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXM7YS5kYXRhO2EuSW5saW5lQ00oeCxhKX0sYmluZDpmdW5jdGlvbih4LGEpe3ZhciBiLGMsZD10aGlzLlUudGFnRW1vamksZT0odGhpcy5sYWJlbFdpZHRoLHgudmFsdWUpO3JldHVybiA4Jnguc3RhdGUmJnRoaXMuUlQoIlNlYXJjaFJlIik/KGI9Wyc8c3BhbiBjbGFzcz0ianZhbC1icmFja2V0Ij4mcXVvdDs8L3NwYW4+JywoYz0oYj1lLnJlcGxhY2UodGhpcy5SVCgiU2VhcmNoUmUiKSwi77+xJDHvv7EiKSkuc3BsaXQoIu+/sSIpKVswXS50cnVuY2F0ZSgxNDAsImxlZnQiLCLigKYiKS5lc2NhcGVIVE1MKCksJzxzcGFuIGNsYXNzPSJqdmFsLWZvdW5kLWtleSI+JytjWzFdLmVzY2FwZUhUTUwoKSsiPC9zcGFuPiIsY1syXS50cnVuY2F0ZSgxNDAsInJpZ2h0Iiwi4oCmIikuZXNjYXBlSFRNTCgpLCc8c3BhbiBjbGFzcz0ianZhbC1icmFja2V0Ij4mcXVvdDs8L3NwYW4+JyxlLmxlbmd0aD4yODA/JzxzcGFuIGNsYXNzPSJpbGFiZWwiPicrZS5sZW5ndGgrIiBjaGFyczwvc3Bhbj4iOiIiXS5qb2luKCIiKSxkKGIpKToyIT14LnN0YXRlP2YoeC52YWx1ZSk6KG51bGwhPWEmJih4LnZhbHVlPWEpLGYoeC52YWx1ZSkpO2Z1bmN0aW9uIGYoeCl7dmFyIGE9JzxzcGFuIGNsYXNzPSJqdmFsLWJyYWNrZXQiPiZxdW90Ozwvc3Bhbj4nO3JldHVybiB4Lmxlbmd0aD4xNDA/YSs9eC50cnVuY2F0ZSgxNDApLmVzY2FwZUhUTUwoKSsnJnF1b3Q7IDxzcGFuIGNsYXNzPSJpbGFiZWwiPicreC5sZW5ndGgrIiBjaGFyczwvc3Bhbj4iOmErPXguZXNjYXBlSFRNTCgpKyc8c3BhbiBjbGFzcz0ianZhbC1icmFja2V0Ij4mcXVvdDs8L3NwYW4+JyxkKGEpfX0sZXZlbnRzOiJpbnB1dC5teSJ9fX0sJGZ1bmN0aW9uOntpZDoiU3lzLkpTT04uRnVuY3Rpb24iLENNOiJqYXZhc2NyaXB0IixGOnt9LHVpOnsiLmlrZXkiOnt9LCIuaXZhbHVlIjp7aW5pdDpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXM7Yi5kYXRhO2IuSW5saW5lQ00oeCxiKX0sYmluZDpmdW5jdGlvbih4LGEpe2lmKDIhPXguc3RhdGUpe3ZhciBiPSIiLGM9L15bXHNcclxuXHRdKlwoP1tcc1xyXG5cdF0qZnVuY3Rpb24vLGQ9L1tcc1xyXG5cdF0qXClbXHNcclxuXHRdKiQvO2lmKHgudmFsdWUubGVuZ3RoPjEwMCl7dmFyIGU9eC52YWx1ZS5zcGxpdCgiKSIsMSlbMF07Yis9Wyc8c3BhbiBjbGFzcz0ianZhbC1mdW5jdGlvbiI+ZnVuY3Rpb24gPC9zcGFuPiAnLGUucmVwbGFjZShjLCIiKS5zcGxpdCgiKCIpWzBdLnRyaW0oKSwiKCIsZS5zcGxpdCgiKCIpWzFdKyIpIHsiLCcgPHNwYW4gY2xhc3M9ImlsYWJlbCBsaDE0MCI+JywoeC52YWx1ZS5tYXRjaCgvW1xyXG5dKy9nKXx8IiIpLmxlbmd0aCsxKyIgTE9DLCAiLHgudmFsdWUubGVuZ3RoKyIgY2hhcnMiLCI8L3NwYW4+ICIsIn0iXS5qb2luKCIiKX1lbHNlIGI9JzxzcGFuIGNsYXNzPSJqdmFsLWZ1bmN0aW9uIj5mdW5jdGlvbjwvc3Bhbj4nK3gudmFsdWUucmVwbGFjZShjLCIiKS5yZXBsYWNlKGQsIiIpLmVzY2FwZUhUTUwoKTtyZXR1cm4gdGhpcy5VLnRhZ0Vtb2ppKGIpfXJldHVybiBudWxsIT1hJiYoeC52YWx1ZT1hKSx4LnZhbHVlfSxldmVudHM6ImlucHV0Lm15In19fSwkYmFzZTY0OntpZDoiU3lzLkpTT04uQmFzZTY0IixDTToiYjY0IixGOnt9LHVpOnsiLmlrZXkiOnt9LCIuaXZhbHVlIjp7aW5pdDpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXM7Yi5kYXRhO2IuSW5saW5lQ00oeCxiKX0sYmluZDpmdW5jdGlvbih4LGEsYil7dmFyIGM9IiIsZD10aGlzLlJUKCJCbG9icyIpLGU9L15pbWFnZVwvLy50ZXN0KHgubWltZSsiIikmJngudmFsdWUubGVuZ3RoPDVlNT9kW3guaGFzaF06bnVsbCxmPSIiO2lmKDIhPXguc3RhdGUpe3ZhciBnPWIud2lkdGgoKTtlPyhjKz1bJzxhIGhyZWY9IicrZSsnIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9ImJhc2U2NGltYWdlIj4nLCc8aW1nIHNyYz0iJytlKyciIGNsYXNzPSJmbCBtcjEwIi8+JywiPC9hPiJdLmpvaW4oIiIpLGctPTgwKTp4Lm1pbWUmJnguZm5hbWUmJihmPXguZm5hbWV8fCJ1bnRpdGxlZC5iaW4iLGMrPSc8YSBocmVmPSInK2RbeC5oYXNoXSsnIiAgY2xhc3M9ImJhc2U2NGljbyB3NTUgaDU1IHRhYyBkaWIgdmF0IG1yMTAgbGdyYXkgZnMyMDAgYmctbGdyYXkgYnIyIiBkb3dubG9hZD0iJytmKyciICB0aXRsZT0iRG93bmxvYWQgJytmKyciICBzdHlsZT0ibGluZS1oZWlnaHQ6NTVweCI+PHNwYW4gY2xhc3M9IicrKHguaWNvfHwiZmktYXJjaGl2ZSIpKyciPjwvc3Bhbj48L2E+JyxnLT04MCk7dmFyIGg9KGcvMTAqMi41fDApLmNsYW1wKDE0MCw2MDApO3JldHVybiBjKz0nPGRpdiBjbGFzcz0iZGliIHZhdCBiYXNlNjRzdHJpbmciPicsYys9JyInLHgudmFsdWUubGVuZ3RoPmg/Yys9eC52YWx1ZS50cnVuY2F0ZShoKSsnIiZuYnNwOzxhIGhyZWY9IicrZFt4Lmhhc2hdKyciIHRhcmdldD0iX2JsYW5rIiBjbGFzcz0iaWxhYmVsIHRkbiI+JysoZT8iT3BlbiI6IkRvd25sb2FkIikrIiZuYnNwOyIreC5zaXplLm1ldHJpYygyKSsiYjwvYT4iOmMrPXgudmFsdWUrJyInLGUmJihjKz0iPC9kaXY+IiksY31yZXR1cm4gbnVsbCE9YSYmKHgudmFsdWU9YSkseC52YWx1ZX0sZXZlbnRzOlsiaW5wdXQubXkiXX19LE1pbWU6eyJhcHBsaWNhdGlvbi94LWNvbXByZXNzZWQiOi9cLnppcCQvaSwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsIjovXC54bHN4PyQvaSwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIjovXC4oY2RyfGRhdHxyYXIpJC9pLCJhcHBsaWNhdGlvbi9qc29uIjovXC4oanNufGpzb24pJC9pLCJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IjovXC5qcyQvaSwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQiOi9cLmRvY3gkL2ksImFwcGxpY2F0aW9uL21zd29yZCI6L1wuZG9jPyQvaSwiYXBwbGljYXRpb24vcGRmIjovXC5wZGYkL2ksInRleHQvcGxhaW4iOi9cLnR4dCQvaSwidGV4dC9odG1sIjovXC4oW3hdP2h0bVtsXT8pJC9pLCJ0ZXh0L3htbCI6L1wuKHhtbHx4c2R8eHNmfHhzbHx4c2x0KSQvaSwiaW1hZ2UvcG5nIjovXC5wbmckL2ksImltYWdlL2pwZWciOi9cLmpwZT9nJC9pLCJpbWFnZS9naWYiOi9cLmdpZiQvaSwiaW1hZ2Uvc3ZnK3htbCI6L1wuc3ZnJC9pfSxJY286eyJmaS1waG90byI6L1wuKHBuZ3xqcFtlXT9nfGdpZnx0aWZbZl0/fGJtcHxzdmcpJC9pLCJmaS1zb2NpYWwtYWRvYmUiOi9cLihwZGZ8YWl8cHNkKSQvaSwiZmktcGFnZS1kb2MiOi9cLihkb2NbeF0/fHR4dHxydGYpJC9pLCJmaS1ncmFwaC1waWUiOi9cLih4bHNbeF0/fGNzdikkL2ksImZpLWFyY2hpdmUiOi9cLih6aXB8cmFyfDd6fDd6aXApJC9pLCJmaS1odG1sNSBwbDIiOi9cLihodG1bbF18cGhwKSQvaSwiZmktY3NzMyBwbDIiOi9cLmNzcyQvaSwiZmktd2lkZ2V0IjovXC4oanNbb25dP3xwaHB8YXNwfGphcnxjfGVybCkkL2ksImZpLXNvdW5kIjovXC4od2F2fGFpZmZ8bXAzfG9nZ3xtcGVnMykkL2l9LGluaXQ6ZnVuY3Rpb24oeCl7dmFyIGEsYj10aGlzLGM9Yi5kYXRhO2lmKHguYWRkQ2xhc3MoImVkLW5vZGUtIitiLlBhdGhTaWcoYy5wYXRoLGMua2V5KSkseC5odG1sKGIuSFRNTCksIWMuc2lnKXt2YXIgZD0vXmRhdGE6aW1hZ2VcLyhqcGVnfHBuZ3xnaWZ8c3ZnXCt4bWwpO2Jhc2U2NCwvLGU9ZC50ZXN0KGMudmFsdWUpLGY9ZT9jLnZhbHVlLnJlcGxhY2UoZCwiIik6Yy52YWx1ZTtpZihjLnNpemU9KGYubGVuZ3RoLzQqMykuZmxvb3IoKSxjLnNpZz1hPXdpbmRvdy5hdG9iKGYudG8oNDAwKSksZSljLm1pbWU9Yy52YWx1ZS50bygzMCkuc3BsaXQoIjtiYXNlNjQiKVswXS5zcGxpdCgiOiIpWzFdO2Vsc2UgaWYoIsO/w5jDv8OgIj09PWEudG8oNCk/Yy5taW1lPSJpbWFnZS9qcGVnIjoiwolQTkciPT09YS50byg0KT9jLm1pbWU9ImltYWdlL3BuZyI6L148XD94bWwvLnRlc3QoYSkmJi88c3ZnXHN2ZXJzaW9uXHMqPVxzKiIxXC5cZCIvLnRlc3QoYSkmJihjLm1pbWU9ImltYWdlL3N2Zyt4bWwiKSwhYy5taW1lJiYzPT1jLnBhdGgubGVuZ3RoJiYiX2F0dGFjaG1lbnRzIj09Yy5wYXRoWzFdKXt2YXIgZyxoPSJmaS1wYXBlcmNsaXAiLGk9ImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIsaj1jLnBhdGhbMl07Zm9yKGcgaW4gYi5NaW1lKWIuTWltZVtnXS50ZXN0KGopJiYoaT1nKTtmb3IoZyBpbiBiLkljbyliLkljb1tnXS50ZXN0KGopJiYoaD1nKTtjLm1pbWU9aSxjLmljbz1oLGMuZm5hbWU9an1jLm1pbWU9Yy5taW1lfHwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIixiLlJUKCJCbG9icyIpW2MuaGFzaF09VVJMLmNyZWF0ZU9iamVjdFVSTCgkLm15LmYuYmFzZTY0MmJsb2IoYy52YWx1ZS5yZXBsYWNlKC9eZGF0YTppbWFnZVwvKGpwZWd8cG5nfGdpZnxzdmdcK3htbCk7YmFzZTY0LC8sIiIpLG51bGwsYy5taW1lKSl9fX0sJG51bWJlcjp7aWQ6IlN5cy5KU09OLk51bWJlciIsQ006Im51bWJlciIsRjp7TjJTOmZ1bmN0aW9uKHgpe3ZhciBhPSc8c3BhbiBjbGFzcz0ianZhbC1udW1iZXIiPicreC50b1N0cmluZygpKyI8L3NwYW4+IjtyZXR1cm4geDwxZTEzJiZ4PjhlMTEmJng9PT0oK3gpLmZsb29yKCkmJihhKz0nIDxzcGFuIGNsYXNzPSJpbGFiZWwgeGdyYXkgbGgxNDAgdmF0IG10NCI+PHNwYW4gY2xhc3M9ImZpLWNsb2NrIj48L3NwYW4+ICcrRGF0ZS5jcmVhdGUoeCkuZm9ybWF0KCJ7ZH0ge01vbn0ge3l5eXl9LCB7SH06e21tfTp7c3N9LCBMb2NhbCIpKyI8L3NwYW4+IiksYX0sQ2FsYzpmdW5jdGlvbihzLHByZXYpe2lmKCFpc05hTihzKSlyZXR1cm4rczt2YXIgbj1udWxsO3RyeXtuPWV2YWwoIigiK3MrIikiKX1jYXRjaCh4KXt9cmV0dXJuIG51bGw9PT1ufHxpc05hTihuKT9wcmV2OitufX0sdWk6eyIuaWtleSI6e30sIi5pdmFsdWUiOntpbml0OmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcyxjPWIuZGF0YTtiLklubGluZUNNKHgsYixmdW5jdGlvbihhLGQpe2MudmFsdWU9Yi5GLkNhbGMoYSxkKSx4LnRyaWdnZXIoImNoZWNrIil9KX0sYmluZDpmdW5jdGlvbih4LGEpe3ZhciBiLGM9eC52YWx1ZSsiIjtyZXR1cm4gOCZ4LnN0YXRlJiZ0aGlzLlJUKCJTZWFyY2hSZSIpP1soYj1jLnJlcGxhY2UodGhpcy5SVCgiU2VhcmNoUmUiKSwi77+xJDHvv7EiKS5zcGxpdCgi77+xIikpWzBdLnRydW5jYXRlKDE0MCwibGVmdCIsIuKApiIpLmVzY2FwZUhUTUwoKSwnPHNwYW4gY2xhc3M9Imp2YWwtZm91bmQta2V5Ij4nK2JbMV0uZXNjYXBlSFRNTCgpKyI8L3NwYW4+IixiWzJdLnRydW5jYXRlKDE0MCwicmlnaHQiLCLigKYiKS5lc2NhcGVIVE1MKCldLmpvaW4oIiIpOjE9PXguc3RhdGV8fDQ9PXguc3RhdGU/dGhpcy5GLk4yUyh4LnZhbHVlKToobnVsbCE9YSYmKHgudmFsdWU9dGhpcy5GLkNhbGMoYSx4LnZhbHVlKSksdGhpcy5GLk4yUyh4LnZhbHVlKSl9LGV2ZW50czoiaW5wdXQubXkifX19LCRib29sZWFuOntpZDoiU3lzLkpTT04uQm9vbGVhbiIsdWk6eyIuaWtleSI6e30sIi5pdmFsdWUiOntiaW5kOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIG51bGwhPWEmJih4LnZhbHVlPSF4LnZhbHVlLHRoaXMuTm9kZVVwZGF0ZWQoW3gucGF0aCx4LmtleV0sIXgudmFsdWUseC52YWx1ZSkpLHRoaXMuVlt4LnZhbHVlPzE6MF19LGV2ZW50czoiY2xpY2subXkifX0sVjpbJzxzcGFuIGNsYXNzPSJpYm9vbGVhbi10YWcgZ3JheSBtbC05Ij50cnVlPC9zcGFuPjxzcGFuIGNsYXNzPSJpYm9vbGVhbi10YWcgeWVsbG93LTEgYmcteWVsbG93NSI+ZmFsc2U8L3NwYW4+JywnPHNwYW4gY2xhc3M9Imlib29sZWFuLXRhZyBibHVlLTEgYmctYmx1ZTQgbzgwIG1sLTkiPnRydWU8L3NwYW4+PHNwYW4gY2xhc3M9Imlib29sZWFuLXRhZyBncmF5Ij5mYWxzZTwvc3Bhbj4nXX0sJG51bGw6e2lkOiJTeXMuSlNPTi5OdWxsIix1aTp7Ii5pa2V5Ijp7fSwiLml2YWx1ZSI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtyZXR1cm4nPHNwYW4gY2xhc3M9InJlZCBvODAiPm51bGw8L3NwYW4+J319fX0sc3RhbXA6MTcxOTE5MzQ5NjQwNX0sImN3LkNvdWNoLk1vbml0b3IiOntpZDoiY3cuQ291Y2guTW9uaXRvciIsYnVpbGQ6NjQsVmVyc2lvbjoiMi4xIixwYXJhbXM6e3Jlc3R5bGU6NDAsc3RyaWN0OiEwfSxkYXRhOntzZWFyY2g6IiIsY21kOiIiLGRvYzp7bmFtZToiVW5uYW1lZCBtZXNoIix0eXBlOiJjb3VjaHN0YXRzIixjcnlwdG86Ii0iLG5vZGVzOltdLGxvZzpbXX19LENvbmZpZzp7c3RhdHNTY2FsZVk6MS41LHN0YXRzTWF4R3JhcGhzOjQsc3RhdHNNYXhUaW1lZnJhbWU6OTAwLHN0YXRzUmVmcmVzaDoxMCxzZXJpZU1heExlbmd0aDoxZTR9LENmZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLkNvbmZpZ30saW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9KGEuZGF0YSxhLmRhdGEuZG9jKTtpZihhLk1vdW50KHgpLGIubm9kZXMubGVuZ3RofHxiLm5vZGVzLnB1c2goJC5leHRlbmQoITAse30sYS5kZWZhdWx0Tm9kZXNbIjEueCJdKSksYi5ub2Rlcy5mb3JFYWNoKGEuQXBwbHlQcmVzZXRzKSxbIk5vZGUiLCJTZXJpZSIsIkdhdWdlIl0uZm9yRWFjaChmdW5jdGlvbih4KXtbInNlbGVjdDIiLCJSZXEiXS5mb3JFYWNoKGZ1bmN0aW9uKGIpe2FbeF1bYl09YVtiXX0pfSkseC5odG1sKGEuSFRNTCkseC50aGVuKGZ1bmN0aW9uKCl7YS5UaW1lcj1mdW5jdGlvbigpeyQubXkucmFkaW8oImNvdWNoX21vbml0b3JfdGltZXIiLERhdGUubm93KCkpfS5ldmVyeSgyZTMpfS5kZWJvdW5jZSgxMDApKSxjdy5saWIuc2Nyb2xsWSYmY3cubGliLnNjcm9sbFkoeCksIWN3Lm1lKCkpcmV0dXJuICQuRGVmZXJyZWQoKS5yZWplY3QoNDAxLCJZb3UgbmVlZCB0byBsb2cgaW4gdG8gc2VlIHN0YXRzIix7b2s6ITEscmVhc29uOiJjb25maWcifSkucHJvbWlzZSgpfSx1aTp7IiNtbmFtZSI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtyZXR1cm4oeC5kb2MubmFtZXx8IlVudGl0bGVkIG1vbml0b3JpbmcgZ3JvdXAiKS5lc2NhcGVIVE1MKCl9fSwiI25vZGVzIjp7YmluZDoiZG9jLm5vZGVzIixsaXN0Oic8ZGl2IGNsYXNzPSJubm9kZSI+PC9kaXY+JyxpZDpbIm5hbWUiXSxtYW5pZmVzdDpmdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5Ob2RlfSxjc3M6e25vdGl0bGU6ZnVuY3Rpb24oeCl7cmV0dXJuIHguZG9jLm5vZGVzLmxlbmd0aDwyfX19LCIjYnRuLXVwZGF0ZSI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtudWxsIT1hJiYkLm15LnJhZGlvKCJjb3VjaF9tb25pdG9yX3JlZnJlc2giLCEwKX19fSxkaWU6ZnVuY3Rpb24oKXt0aGlzLlRpbWVyLmNhbmNlbCgpfSxzZWxlY3QyOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIHguc2VsZWN0MihhKX0sQXV0b1NhdmVOb2RlOmZ1bmN0aW9uKCl7fSxMczpmdW5jdGlvbigpe30sTW91bnQ6ZnVuY3Rpb24oKXt9LEhUTUw6JzxkaXYgaWQ9ImEtaGVhZCIgY2xhc3M9ImFwcC1oZWFkIHhncmF5IG53IHB0MTggcGwyMCBwcjIwIGxoMTYwIj48ZGl2IGNsYXNzPSJmciB3MTJwIGZzOTUgbWw2IGhpZGUiPjxkaXYgY2xhc3M9ImZpLW1hZ25pZnlpbmctZ2xhc3MgeGdyYXkgbzUwIGZzOTUiIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHotaW5kZXg6ICsxOyBsZWZ0OiA4cHg7dG9wOiAwLjJlbTsiPjwvZGl2PjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iYXBwLXNlYXJjaCIgY2xhc3M9InVpLXNlYXJjaCB3MTAwcCBtbDAgbXIwIG10MCBwcjEwIiBwbGFjZWhvbGRlcj0iU2VhcmNoIiBzdHlsZT0iYmFja2dyb3VuZC1pbWFnZTpub25lO3BhZGRpbmctcmlnaHQ6MTlweCFpbXBvcnRhbnQ7Ij48c3BhbiBjbGFzcz0iZmkteCBmczgwIGRpYiB2YXQgcHQyIGJsdWUgdWktc2VhcmNoLWNsZWFyIiBzdHlsZT0ibWFyZ2luLWxlZnQ6LTE5cHghaW1wb3J0YW50OyIgb25jbGljaz0iJCh0aGlzKS5zaWJsaW5ncyhcJ2lucHV0OmVxKDApXCcpLnZhbChcJ1wnKS5ibHVyKCkiPjwvc3Bhbj48L2Rpdj48ZGl2IGNsYXNzPSJkaWIgdmF0Ij48YnV0dG9uIGlkPSJidG4tdXBkYXRlIiBjbGFzcz0idzQwIG1yMiIgdGl0bGU9IlVwZGF0ZSI+PHNwYW4gY2xhc3M9ImZpLWxvb3AiPjwvc3Bhbj48L2J1dHRvbj48L2Rpdj48ZGl2IGlkPSJtbmFtZSIgY2xhc3M9ImRpYiBmczE4MCBsaDEyMCBtdC0yIGJvbGRlciB2YXQgbncgb2ggZWxsIHByNiBwbDYiIHN0eWxlPSJ3aWR0aDpjYWxjKDM1JSAtIDQycHgpOyI+PC9kaXY+PGRpdiBpZD0ibWNvbnRyb2xzIiBjbGFzcz0iZnIgbm9jd21pbiB0YXIiIHN0eWxlPSJ3aWR0aDpjYWxjKDUzJSAtIDZweCk7Ij48ZGl2IGNsYXNzPSJmbCI+PGJ1dHRvbiBpZD0iYnRuLWFkZCIgY2xhc3M9InRlYWwgbXIxMCB0YWMiPjxzcGFuIGNsYXNzPSJmaS1wbHVzIG81MCI+PC9zcGFuPiBBZGQuLi48L2J1dHRvbj48L2Rpdj48ZGl2IGNsYXNzPSJkaWIgdmF0IHc2MHAgdGFsIiBzdHlsZT0ibWF4LXdpZHRoOjI1MHB4OyI+PGlucHV0IGlkPSJlbmNyeXB0IiB0eXBlPSJ0ZXh0IiBjbGFzcz0idzEwMHAgZnMxMTAgdmF0IHByMiI+PC9kaXY+PGJ1dHRvbiBpZD0iYnRuLXNhdmUiIGNsYXNzPSJncmVlbiBtcjIgdGFjIj7CoFNhdmXCoDwvYnV0dG9uPjxidXR0b24gaWQ9ImJ0bi1jbG9zZSIgY2xhc3M9InRhYyI+wqBDbG9zZcKgPC9idXR0b24+PC9kaXY+PC9kaXY+PHNlY3Rpb24gaWQ9Im5vZGUtdGlsZXMiIGNsYXNzPSJwYW5lbGhlaWdodCBwbDIwIGZlYXRoZXIgdzEwMHAiPjxkaXYgaWQ9Im5vZGVzIiBjbGFzcz0ibm5vZGVzIHhncmF5IHcxMDBwIHBhbmVsaGVpZ2h0Ij48L2Rpdj48L3NlY3Rpb24+JyxQcmVzZXRzOntSUFM6e25hbWU6IlJlcXVlc3QgcmF0ZSIsbW9kZToic3VtIixuYW1lczpbIlJlcXVlc3QgcmF0ZSIsIjIwWCIsIjQwWCIsIjUwMCJdLHVuaXRzOlsicmVxL3MiLCJyZXEiLCJyZXEiLCJyZXEiXSxjb2xvcnM6WyJpbmhlcml0IiwiIHJnYmEoNTAsMjA5LDAsMC42OSkiLCIgcmdiYSgyNTUsMTIzLDAsMC42OSkiLCIgcmdiYSgyMjksMCwyMzUsMC42OSkiXSxmaWVsZHM6W1siMjAwIiwiMjAxIiwiMjAyIiwiNDAwIiwiNDAxIiwiNDAzIiwiNDA0IiwiNDA5IiwiNTAwIl0sWyIyMDAiLCIyMDEiLCIyMDIiXSxbIjQwMCIsIjQwMSIsIjQwMyIsIjQwNCIsIjQwOSJdLFsiNTAwIl1dLHJvd3M6W1swXSxbMF0sWzBdLFswXV0sdGltZTpbMTBdfSxEQlJXOntuYW1lOiJEQnMgcmVhZHMvd3JpdGVzIHJhdGUiLG1vZGU6InN1bSIsbmFtZXM6WyJSVyByYXRlIiwiUmVhZHMiLCJXcml0ZXMiLCJWaWV3IHJlYWRzIl0sdW5pdHM6WyJEQiBvcHMvcyIsIm9wcyIsIm9wcyIsIm9wcyJdLGNvbG9yczpbImluaGVyaXQiLCIgcmdiYSgzNSwxMzcsMjU1LDAuNTgpIiwiIHJnYmEoMjU1LDM4LDExNywwLjU4KSIsIiByZ2JhKDI1NSwxOTUsMCwwLjgpIl0sZmllbGRzOltbImRhdGFiYXNlX3JlYWRzIiwiZGF0YWJhc2Vfd3JpdGVzIl0sWyJkYXRhYmFzZV9yZWFkcyJdLFsiZGF0YWJhc2Vfd3JpdGVzIl0sWyJ2aWV3X3JlYWRzIl1dLHJvd3M6W1swXSxbMF0sWzBdXSx0aW1lOlsxMF19LEFVVEg6e25hbWU6IkF1dGggaGl0cyBhbmQgbWlzc2VzIixtb2RlOiJzdW0iLG5hbWVzOlsiQXV0aCBoaXRzL21pc3NlcyBycHMiLCJIaXRzIiwiTWlzc2VzIl0sdW5pdHM6WyJhdXRoIHJwcyIsInJlcSIsInJlcSJdLGNvbG9yczpbImluaGVyaXQiLCIgcmdiYSgyMCwyMzIsMCwwLjY5KSIsIiByZ2JhKDI1NSwzOCwzOCwwLjY5KSJdLGZpZWxkczpbWyJhdXRoX2NhY2hlX2hpdHMiLCJhdXRoX2NhY2hlX21pc3NlcyJdLFsiYXV0aF9jYWNoZV9oaXRzIl0sWyJhdXRoX2NhY2hlX21pc3NlcyJdXSxyb3dzOltbMF0sWzBdLFswXV0sdGltZTpbMTBdfSxGRUVEUzp7bmFtZToiTnVtYmVyIG9mIGNvbnRpbnVvdXMgX2NoYW5nZXMgZmVlZHMgYWN0aXZlIixuYW1lczpbIkNvbnRpbnVvdXMgX2NoYW5nZXMgZmVlZHMiLCJGZWVkcyJdLHVuaXRzOlsic3luYyBmZWVkcyIsIiJdLGNvbG9yczpbImluaGVyaXQiLCIgcmdiYSg4NiwxMjMsMTcyLDAuNjIpIl0sZmllbGRzOltbImNsaWVudHNfcmVxdWVzdGluZ19jaGFuZ2VzIl0sWyJjbGllbnRzX3JlcXVlc3RpbmdfY2hhbmdlcyJdXSxyb3dzOltbMF0sWzBdXSx0aW1lOlsxMF0sbW9kZToiY3VycmVudCJ9LEZJTEVTOntuYW1lOiJPcGVuIE9TIGZpbGVzIixuYW1lczpbIkZpbGVzIiwiRmlsZXMiXSx1bml0czpbIm9wZW4gZmlsZXMiLCIiXSxjb2xvcnM6WyJpbmhlcml0IiwiIHJnYmEoODYsMTIzLDE3MiwwLjYyKSJdLGZpZWxkczpbWyJvcGVuX29zX2ZpbGVzIl0sWyJvcGVuX29zX2ZpbGVzIl1dLHJvd3M6W1swXSxbMF1dLHRpbWU6WzEwXSxtb2RlOiJjdXJyZW50In0sUkFNOntuYW1lOiJSQU0iLG5hbWVzOlsiUkFNLCBNYiIsIk5vZGUgUkFNLCBNYiJdLHVuaXRzOlsiTWIgUkFNIiwiTWIiXSxjb2xvcnM6WyJpbmhlcml0IiwiIHJnYmEoNjMsMTY5LDE1OCwwLjYyKSJdLGRlbm9taW5hdG9yOjEwNDg1NzYsZmllbGRzOltbImF0b20iLCJiaW5hcnkiLCJjb2RlIiwiZXRzIiwib3RoZXIiLCJwcm9jZXNzZXMiXSxbImF0b20iLCJiaW5hcnkiLCJjb2RlIiwiZXRzIiwib3RoZXIiLCJwcm9jZXNzZXMiXV0scm93czpbWzBdLFswXV0sdGltZTpbMTBdLG1vZGU6ImN1cnJlbnQifSxVUFRJTUU6e25hbWU6IlVwdGltZSIsbmFtZXM6WyJVcHRpbWUsIGRheXMiLCJEYXlzIl0sdW5pdHM6WyJkYXlzIHVwdGltZSIsImRheXMiXSxjb2xvcnM6WyJpbmhlcml0IiwiIHJnYmEoNjMsMTY5LDE1OCwwLjYyKSJdLGRlbm9taW5hdG9yOjg2NDAwLGZpZWxkczpbWyJ1cHRpbWUiXSxbInVwdGltZSJdXSxyb3dzOltbMF0sWzBdXSx0aW1lOlsxMF0sbW9kZToiY3VycmVudCJ9fSxkZWZhdWx0Tm9kZXM6eyIxLngiOntuYW1lOiJOb2RlIDEiLGNvdWNoOiIxLngiLHVybDoiLyIsaGVhbHRoOiIiLGdhdWdlczpbe25hbWU6Ik9wZW4gZmlsZXMiLHByZXNldDoiRklMRVMifSx7bmFtZToiQWN0aXZlIF9jaGFuZ2VzIGZlZWRzIixwcmVzZXQ6IkZFRURTIn1dLHNlcmllczpbe25hbWU6IlJlcXVlc3QgcmF0ZSIscHJlc2V0OiJSUFMifSx7bmFtZToiREJzIFIvVyByYXRlIixwcmVzZXQ6IkRCUlcifV19LCIyLngiOntuYW1lOiJOb2RlIDEiLGNvdWNoOiIyLngiLHVybDoiLyIsaGVhbHRoOiIiLGdhdWdlczpbe25hbWU6Ik9wZW4gZmlsZXMiLHByZXNldDoiRklMRVMifSx7bmFtZToiQWN0aXZlIF9jaGFuZ2VzIGZlZWRzIixwcmVzZXQ6IkZFRURTIn0se25hbWU6IlVwdGltZSIscHJlc2V0OiJVUFRJTUUifV0sc2VyaWVzOlt7bmFtZToiUmVxdWVzdCByYXRlIixwcmVzZXQ6IlJQUyJ9LHtuYW1lOiJEQnMgUi9XIHJhdGUiLHByZXNldDoiREJSVyJ9LHtuYW1lOiJSQU0iLHByZXNldDoiUkFNIn1dfX0sUmVxOmZ1bmN0aW9uKHgpe3ZhciBhPSQuZXh0ZW5kKCEwLHt9LHgpO3JldHVybiAkLmFqYXgoYSl9LEFwcGx5UHJlc2V0czpmdW5jdGlvbih4KXt2YXIgYT10aGlzLlByZXNldHMsYj1PYmplY3QuaXNBcnJheTtyZXR1cm4oeC5zZXJpZXN8fFtdKS5mb3JFYWNoKGMpLCh4LmdhdWdlc3x8W10pLmZvckVhY2goYykseDtmdW5jdGlvbiBjKGMpe2lmKGMucHJlc2V0JiZhW2MucHJlc2V0XSl7dmFyIGQ9YVtjLnByZXNldF0sZT1PYmplY3Quc2VsZWN0KGMsWyJyb3dzIiwidGltZSJdKTtyZXR1cm4gJC5leHRlbmQoYyxPYmplY3QuY2xvbmUoZCwhMCksZSksYihjLnJvd3MpJiZiKGMudGltZSl8fChjLnJvd3M9T2JqZWN0LmNsb25lKGQucm93cywhMCksYy50aW1lPVsxMF0pLGMucm93cy5sZW5ndGg8Yy5maWVsZHMubGVuZ3RoJiYoYy5yb3dzPWMucm93cy5hZGQoT2JqZWN0LmNsb25lKGQucm93cywhMCkpLnRvKGMuZmllbGRzLmxlbmd0aCkpLHh9fX0sR2VuQXhpczpmdW5jdGlvbih4KXt2YXIgYT14LkNmZygpLnN0YXRzTWF4VGltZWZyYW1lLGI9NjAqeC5DZmcoKS5zdGF0c1NjYWxlWSxjPXguVC5QaXZvdFgsZD14LlQuUGl2b3RZLGU9eC5ULlBpdm90VGV4dCxmPVtdLGc9W107cmV0dXJuIHguQXhpcy5oNjA9PWI/eC5BeGlzOig3Li50aW1lcyhmdW5jdGlvbih4KXtmLnVuc2hpZnQoYy5hc3NpZ24oIk0wLHsyfSBMezF9LHsyfSAiLmFzc2lnbihhKzIwMCx4KihiLzYpKy41KSwiIHJnYmEoMTU4LDE3NCwxOTIsIisoeD82PT14PyIwLjQpIjoiMC4xNSkiOiIwLjI1KSIpKSl9KSwoYS82MCkudGltZXMoZnVuY3Rpb24oeCl7dmFyIGE9eCsxO2cudW5zaGlmdChkLmFzc2lnbigiTXsxfSwwIEx7MX0sezJ9ICIuYXNzaWduKDYwKmEsYiksIiByZ2JhKDE1OCwxNzQsMTkyLDAuMzUpIikrZS5hc3NpZ24oNjAqYSsyLCLiiJIiK2ErIm1pbiIpKX0pLHguQXhpcz17aDYwOmIsYXhpc3g6ZlswXSxwaXZvdHN4OmYuc2xpY2UoMSkuam9pbigiIikscGl2b3RzeTpnLmpvaW4oIiIpfSl9LEdlbkdyYXBoczpmdW5jdGlvbih4KXt2YXIgYT14LmRhdGEsYj14LmhCYXIsYz14LkNmZygpLnN0YXRzTWF4VGltZWZyYW1lLGQ9eC5DZmcoKS5zdGF0c01heEdyYXBocyxlPXguQ2ZnKCkuc3RhdHNTY2FsZVksZj02MCplLGc9YS5maWVsZHMubGVuZ3RoLGg9YS5yb3dzLnNsaWNlKDApLGk9YS50aW1lLnNsaWNlKDEpLGo9YS5jb2xvcnMsaz1hLm5hbWVzLGw9YS51bml0cyxtPWEuZGVub21pbmF0b3J8fDEsbj1hLnRpbWVbMF0vMTAsbz14LkF4aXMscD1vLmF4aXN4LHE9by5waXZvdHN4LHI9by5waXZvdHN5LHM9eC5ULkJhcix0PXguVC5HcmFwaCx1PXguVC5MaW5lLHY9eC5ULkJhclRpcCx3PVtdO0UoKSxpLmxlbmd0aC50aW1lcyhmdW5jdGlvbih4KXt2YXIgaj1pW3hdLzEwLG89MSxwPVtdO2lmKG4tPWosaj5jKXtpZih3Lmxlbmd0aD49ZClyZXR1cm47dmFyIHE9RShuLGopO289cS9qLGo9cX1nLnRpbWVzKGZ1bmN0aW9uKGQpe2lmKGQpe3ZhciBnPWhbZF1beCsxXXx8MCxpPXdbMF0ubGluZXNbZF0saz13WzBdLmR0LGw9d1swXS5keDtpZihwLnB1c2goZyksIShsK2s+MipjKzIwMCkpe3ZhciBuPSJjdXJyZW50Ij09YS5tb2RlP2YrLjUtYihnKm8vbSwxKSplOmYrMS1iKGcqby9tLGopKmUqLjk5MTg7aSs9aT8iTHsxfSx7M30gTHsyfSx7M30gIi5hc3NpZ24oRChsK2srKGovMykuY2xhbXAoMCwzKSksRChsK2sraiksbik6Ik17MX0sezN9IEx7Mn0sezN9ICIuYXNzaWduKEQobCksRChsK2sraiksbiksd1swXS5saW5lc1tkXT1pfX19KSx3WzBdLmR0Kz1qLHdbMF0uY292ZXJzKz1zLmFzc2lnbigiIixqLHYuYXNzaWduKHt0aW1lOkRhdGUuY3JlYXRlKDFlMyoobitqKSkuZm9ybWF0KCJ7ZH0ge01vbn0ge3l5eXl9LCB7SEh9OnttbX06e3NzfSIpLGR1cjoiRHVyYXRpb246ICIrai5yb3VuZCgxKSsicyIscm93czpwLm1hcChmdW5jdGlvbih4LGEpe3JldHVybiBrW2ErMV0rIjogIisobyp4L20pLnJvdW5kKDEpKyIgIitsW2ErMV19KS5qb2luKCJcbiIpfSkpfSksdy5yZXZlcnNlKCk7dmFyIHk9eC5teS5yb290KCkud2lkdGgoKXx8MCx6PSh5PjA/KHktMTAwLTQxKS5jbGFtcCgzMDAsM2UzKTp4LlByZXZXaWR0aCl8fDMwMCxBPUcod1swXS5kdCksQj13WzFdP3dbMV0uZHQ6MCxDPXdbMl0/d1syXS5kdDowO3JldHVybiB4LlByZXZXaWR0aD16LHdbMF0ud2lkdGg9eix6PDQ1MD93Lmxlbmd0aD0xOno8NzIwP0I/KEI9Qi5jbGFtcCgxNTAsei8zKSx3WzBdLndpZHRoPUE9KHotQikuY2xhbXAoMzAwLDFlNiksd1sxXS53aWR0aD16LUEtMzEsdy5sZW5ndGg9Mik6dy5sZW5ndGg9MTpCJiYhQz8oQj1HKEIuY2xhbXAoMTIwLHovMykpLHdbMF0ud2lkdGg9QT0oei1CKS5jbGFtcCgzMDAsMWU2KSx3WzFdLndpZHRoPXotQS0zMSx3Lmxlbmd0aD0yKTpDPyh3WzFdLndpZHRoPUI9Qi5jbGFtcCgxMjAsei8zLjUtMzEpLHdbMl0ud2lkdGg9Qz1DLmNsYW1wKDEyMCx6LzEuOC1CLTYxKSx3WzBdLndpZHRoPXotQi1DLTYxLHcubGVuZ3RoPTMpOncubGVuZ3RoPTEsdy5mb3JFYWNoKEYpLHc7ZnVuY3Rpb24gRCh4KXtyZXR1cm4geC5jbGFtcCgtYy0yMDAsYysyMDApLnJvdW5kKDIpfWZ1bmN0aW9uIEUoeCxhKXt2YXIgYj17ZW5kOiIiLHdpZHRoOjAsZHg6MCxkdDowLGxpbmVzOlsiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIiwiIl0udG8oZyksY292ZXJzOiIiLHN2ZzoiIn0sYz0wO2lmKHgpe3ZhciBkPURhdGUuY3JlYXRlKE1hdGgucm91bmQoMWUzKngpKS5jbG9uZSghMCkuY2xvbmUoITApO2Quc2V0TWlsbGlzZWNvbmRzKDApLGQuc2V0U2Vjb25kcygwKSxkLmFkZE1pbnV0ZXMoMSksTWF0aC5hYnMoeC1kLnZhbHVlT2YoKS8xZTMpPDUmJmQuYWRkTWludXRlcygxKSxjPU1hdGgucm91bmQoZC52YWx1ZU9mKCkvMTAwKS8xMC14LGIuZW5kPWQuZm9ybWF0KCd7SEh9OnttbX08YnI+PHNwYW4gY2xhc3M9ImZzODAgbzcwIj57eXl5eX3Ct3tNTX3Ct3tkZH08L3NwYW4+Jyl9cmV0dXJuIHcudW5zaGlmdChiKSxjfHxhfWZ1bmN0aW9uIEYoeCxhKXt4LnN2Zz10LmFzc2lnbih4LndpZHRoLTEsZisxLHErKGE/cjoiIikreC5saW5lcy5tYXAoZnVuY3Rpb24oeCxhKXtyZXR1cm4gYT91LmFzc2lnbih4LGpbYV0pOiIifSkuam9pbigiIikrcCl9ZnVuY3Rpb24gRyh4KXtyZXR1cm4gNjAqKE1hdGguZmxvb3IoeC82MCkrMSl9fSxzdHlsZTp7IiI6ImZvbnQtc2l6ZToxNnB4OyBsaW5lLWhlaWdodDoxLjRlbTsiLCIgI25vZGUtdGlsZXMiOiIiLCIgLncxMnAiOiJ3aWR0aDoxMiU7IiwiIC53MThwIjoid2lkdGg6MTglOyIsIiAubm5vZGVzIjp7IiI6InBhZGRpbmc6MTZweCA0cHggMHB4IDBweDsiLCIgLm5ub2RlIjp7IiI6WyJib3JkZXI6MXB4IHNvbGlkIHJnYmEoMjAxLDIxOSwyMzQsMCk7IGJvcmRlci1yYWRpdXM6IDNweDsgIiwicGFkZGluZzoycHggMTVweCAxMHB4IDE1cHg7IG1hcmdpbjogMHB4IDE2cHggMTZweCAwO2JhY2tncm91bmQ6I2Y0ZjhmYTsiXSwiIC5uc2VyaWVzIjoid2lkdGg6IGNhbGMoMTAwJSAtIDExMHB4KTsiLCIgLm50aXRsZSI6ImJvcmRlci1ib3R0b206MXB4IGRvdHRlZCByZ2JhKDE2MCwxNzYsMTkyLDAuNTYpOyIsIiAucGFsZWJnIjoiYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LDApOyB0cmFuc2l0aW9uOmJhY2tncm91bmQtY29sb3IgMC4zczsiLCIgLmd1bml0cyI6ImZvbnQtc2l6ZToxMDUlOyBsaW5lLWhlaWdodDoxLjJlbTsiLCIgLmd2YWwiOiJmb250LXNpemU6MTgwJTsgbGluZS1oZWlnaHQ6MWVtOyIsIiAuZ25hbWVzIjp7IiI6Im9wYWNpdHk6IDAuMzsgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjNzOyBmb250LXNpemU6MC43ZW07IGxpbmUtaGVpZ2h0OjEuMTVlbTsgZm9udC13ZWlnaHQ6NTAwOyIsIj5zcGFuIjoiIHdoaXRlLXNwYWNlOiBub3dyYXA7In0sIi5yZWQxIjp7IiAucmhpc3RvIC5yc2hpbSI6ImJvcmRlci1ib3R0b206MXB4IGRvdHRlZCAjZmY3MTgwOyBiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMjU1LDEyNywxMjksMC4yKTsiLCIgLnJoaXN0byAucnNoaW0+ZGl2IjoiYm9yZGVyLXRvcDoxcHggZG90dGVkIHJnYmEoMjU1LDEyNywxMjksMC43KTsifX0sIi5ub3RpdGxlIjp7IiAubnRpdGxlIjoiZGlzcGxheTpub25lOyIsIiAubm5vZGUiOiJwYWRkaW5nLXRvcDo4cHg7In19LCIgLnJnYXVnZSI6ZnVuY3Rpb24oKXt2YXIgeD02MCp0aGlzLkNmZygpLnN0YXRzU2NhbGVZO3JldHVybnsiIjoiZGlzcGxheTpibG9jazsgcGFkZGluZy10b3A6IDVweDsgaGVpZ2h0OnsxfXB4OyAiLmFzc2lnbih4KzE2KSwiOmFmdGVyIjpbJ2NvbnRlbnQ6IiI7IGhlaWdodDp7MX1weDsgd2lkdGg6MXB4OyB0b3A6OHB4OyByaWdodDowcHg7Jy5hc3NpZ24oeCs0KSwicG9zaXRpb246YWJzb2x1dGU7IGJvcmRlci1yaWdodDoxcHggZG90dGVkIHJnYmEoMTYwLDE3NiwxOTIsMC41Nik7ICJdfX0sIiAucnNlcmllIjp7IiI6ZnVuY3Rpb24oKXt2YXIgeD02MCp0aGlzLkNmZygpLnN0YXRzU2NhbGVZO3JldHVybiJkaXNwbGF5OmJsb2NrOyB3aWR0aDoxMDAlOyBwYWRkaW5nLXRvcDogNXB4OyBoZWlnaHQ6ezF9cHg7IG92ZXJmbG93OmhpZGRlbjsiLmFzc2lnbih4KzE2KX0sIjpob3ZlciI6eyIgLmduYW1lcyI6Im9wYWNpdHk6MTsiLCIgLnBhbGViZyI6ImJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsifSwiIC5yaGlzdG8iOmZ1bmN0aW9uKCl7dmFyIHg9NjAqdGhpcy5DZmcoKS5zdGF0c1NjYWxlWXwwO3JldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHsiIjoid2lkdGg6Y2FsYygxMDAlIC0gMTAwcHgpOyBwYWRkaW5nLXRvcDo1cHg7IGZvbnQtd2VpZ2h0OjQwMDsiLCIgLnJzY2FsZSI6eyIiOiJ3aWR0aDo0MHB4OyBoZWlnaHQ6e2g2MX1weDsgZm9udC13ZWlnaHQ6NDAwOyBjb2xvcjogIzgwOTBhMDsiLCI+ZGl2Ijoid2lkdGg6MTAwJTsgaGVpZ2h0OntoMTB9cHg7IGZvbnQtc2l6ZTo5cHg7IGxpbmUtaGVpZ2h0OjcuMnB4OyBwYWRkaW5nLXJpZ2h0OjRweDsgdGV4dC1hbGlnbjpyaWdodDsgb3ZlcmZsb3c6aGlkZGVuOyIsIj5kaXY6Zmlyc3QtY2hpbGQiOiJtYXJnaW4tdG9wOi0ycHg7IiwiPmRpdjphZnRlciI6J2NvbnRlbnQ6IiAiOyBwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjJweDsgcmlnaHQ6MDsgd2lkdGg6MnB4OyBvdmVyZmxvdzpoaWRkZW47IGJvcmRlci10b3A6MXB4IHNvbGlkICNhMGIwYzA7J30sIiAucnNoaW0iOnsiIjoiaGVpZ2h0OntoNjF9cHg7IHdpZHRoOjA7IGJvcmRlci1ib3R0b206MXB4IGRvdHRlZCAjYTBiMGMwOyBvdmVyZmxvdzpoaWRkZW47IiwiPmRpdiI6ImhlaWdodDp7aDEwfXB4OyB3aWR0aDoxMDAlOyBib3JkZXItdG9wOjFweCBkb3R0ZWQgcmdiYSgxNjAsMTc2LDE5MiwwLjM3KTsifSwiIC5ydmFsdWVzIjp7IiI6Inh3aWR0aDpjYWxjKDEwMCUgLSA0MXB4KTsgd2lkdGg6YXV0bzsgaGVpZ2h0OntoNjF9cHg7b3ZlcmZsb3c6aGlkZGVuOyBjb2xvcjogIzgwOTBhMDsiLCIgLnJiYXJzIjp7Ij4ucmJhciI6eyIiOiJkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjp0b3A7b3ZlcmZsb3c6aGlkZGVuO2hlaWdodDp7aDYwfXB4OyIsIj5kaXYiOiJwb3NpdGlvbjphYnNvbHV0ZTsgYm90dG9tOjA7IGxlZnQ6MDsgd2lkdGg6MTAwJTsifSwiIC5yY292ZXIiOnsiIjoicG9zaXRpb246YWJzb2x1dGU7IHRvcDowOyBsZWZ0OjA7IHotaW5kZXg6KzI7IiwiPi5yYmFyIjp7IiI6WyJkaXNwbGF5OmlubGluZS1ibG9jazsgdmVydGljYWwtYWxpZ246dG9wOyBvdmVyZmxvdzpoaWRkZW47IiwiaGVpZ2h0OntoNjF9cHg7IHRyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAwLjNzOyIsImJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LDE5MywzOSwwKTsiXSwiOmhvdmVyIjoiYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsMTkzLDM5LDAuNDMpOyJ9fX0sIiAueHJzdmciOnsiIjoiYm9yZGVyLWJvdHRvbToxcHggc29saWQgcmdiYSgxNjAsMTc2LDE5MiwwLjM3KTsifSwiIC5ydGltZSI6InBvc2l0aW9uOmFic29sdXRlOyB0b3A6LTFweDsgbGVmdDoycHg7IGZvbnQtc2l6ZToxMHB4OyBsaW5lLWhlaWdodDoxNXB4OyBjb2xvcjpyZ2JhKDE2MCwxNzYsMTkyLDAuODEpOyJ9LCIgLnJib3VuZHMiOiJib3JkZXItbGVmdDoxcHggc29saWQgcmdiYSgxNjAsMTc2LDE5MiwwLjQpOyBib3JkZXItcmlnaHQ6MXB4IHNvbGlkIHJnYmEoMTYwLDE3NiwxOTIsMC40KTsiLCIgdHNwYW4iOiJmaWxsOnJnYmEoMTYwLDE3NiwxOTIsMC44MSk7IiwiICN0YWlsIC5yZ3JhcGgiOiJtYXgtd2lkdGg6NjAwcHg7IG92ZXJmbG93OmhpZGRlbjsiLCIgI3lheGlzIjoicG9zaXRpb246YWJzb2x1dGU7IHRvcDowOyBsZWZ0OjA7IHotaW5kZXg6KzE7In0pLmFzc2lnbih7aDEwOngvNixoNjA6eCxoNjE6eCsxLGg2Mjp4KzIsaDYzOngrM30pKX19LCIgLmFwcC1oZWFkIjp7IiI6ImRpc3BsYXk6IGJsb2NrOyBoZWlnaHQ6IDUycHg7IG92ZXJmbG93OiBoaWRkZW47IHdpZHRoOiAxMDAlOyJ9fSxOb2RlOntpZDoiY3cuQ291Y2guTW9uaXRvci5Ob2RlIixwYXJhbXM6e3Jlc3R5bGU6NTB9LGluaGVyaXQ6WyJTZXJpZSIsIkdhdWdlIiwiQ2ZnIiwiR2VuR3JhcGhzIiwiR2VuQXhpcyIsIkF1dG9TYXZlTm9kZSJdLFJUOmZ1bmN0aW9uKHgpe3JldHVybiBudWxsPT14P3RoaXM6T2JqZWN0LmlzQXJyYXkoeCk/Y3cubGliLmdldHJlZih0aGlzLHgpOnRoaXNbeF19LGRhdGE6e25hbWU6Ik5vZGUiLGhlYWx0aDoiIix1cmw6Ii8iLHNlcmllczpbXSxnYXVnZXM6W119LFBlbmRpbmc6bnVsbCxpbml0OmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj0oYS5kYXRhLGEuQ2ZnKCkuc3RhdHNSZWZyZXNoKTtyZXR1cm4geC5odG1sKGEuSFRNTCkseC50aGVuKGZ1bmN0aW9uKCl7YS5HZXRTdGF0cy5kZWJvdW5jZSgxZTMpKCksYS5HZXRTdGF0cy5kZWJvdW5jZSgxZTMqYi8zKSgpLGEuVGltZXI9ZnVuY3Rpb24oKXthLkdldFN0YXRzKCl9LmV2ZXJ5KDFlMypiKX0uZGVib3VuY2UoMSkpLGEuR2V0U3RhdHMoITApfSx1aTp7IiNubmFtZSI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXtyZXR1cm4geC5uYW1lLnNwbGl0KCJAIikubWFwKGZ1bmN0aW9uKHgpe3JldHVybiB4LmVzY2FwZUhUTUwoKX0pLmpvaW4oJzxzcGFuIGNsYXNzPSJvNjAgcGwyIHByMiI+QDwvc3Bhbj4nKX0sY3NzOntyZWQ6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gdGhpcy5teS5yb290KCkudG9nZ2xlQ2xhc3MoInJlZDEiLCEheC5oZWFsdGgpLCExfX19LCIjbnNlcmllcyI6e2JpbmQ6InNlcmllcyIsaGFzaDpmdW5jdGlvbih4KXtyZXR1cm4gY3cubGliLnNkYm0oW3gucm93cyx4LnRpbWVdKX0sbGlzdDonPGRpdiBjbGFzcz0icnNlcmllIj48L2Rpdj4nLG1hbmlmZXN0OmZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLlNlcmllfX0sIiNuZ2F1Z2VzIjp7YmluZDoiZ2F1Z2VzIixoYXNoOmZ1bmN0aW9uKHgpe3JldHVybiBjdy5saWIuc2RibShbeC5yb3dzLHgudGltZV0pfSxsaXN0Oic8ZGl2IGNsYXNzPSJyZ2F1Z2UiPjwvZGl2PicsbWFuaWZlc3Q6ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuR2F1Z2V9fSwiI25wcm94eSI6e2JpbmQ6ZnVuY3Rpb24oKXt9LGxpc3Rlbjp7Y291Y2hfbW9uaXRvcl9yZWZyZXNoOmZ1bmN0aW9uKHgsYSl7dGhpcy5HZXRTdGF0cygpfSxjb3VjaF9tb25pdG9yX2NmZ19jaGFuZ2U6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzO2IuVGltZXIuY2FuY2VsKCksYi5UaW1lcj1mdW5jdGlvbigpe2IuR2V0U3RhdHMoKX0uZXZlcnkoMWUzKmIuQ2ZnKCkuc3RhdHNSZWZyZXNoKSxiLkdldFN0YXRzKCl9fX19LGRpZTpmdW5jdGlvbigpe3RoaXMuVGltZXIuY2FuY2VsKCl9LEhUTUw6JzxkaXYgY2xhc3M9Im50aXRsZSBwYjUgbWI1Ij48ZGl2IGlkPSJubmFtZSIgY2xhc3M9Im5uYW1lIGZzMTYwIGxoMTQwIHB0MiBib2xkZXIiPjwvZGl2PjwvZGl2PjxkaXYgaWQ9Im5nYXVnZXMiIGNsYXNzPSJuZ2F1Z2VzIHcxMTAgZGliIHZhdCI+PC9kaXY+PGRpdiBpZD0ibnNlcmllcyIgY2xhc3M9Im5zZXJpZXMgZGliIHZhdCI+PC9kaXY+PGRpdiBpZD0ibnByb3h5IiBjbGFzcz0iaGlkZSI+PC9kaXY+JyxHZXRTdGF0czpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YS5kYXRhLGM9Y3cubGliLm1hc2ssZD0kLkRlZmVycmVkKCksZT1PYmplY3QuaXNPYmplY3QsZj1PYmplY3QuaXNOdW1iZXIsZz17fTtpZihhLlBlbmRpbmcpcmV0dXJuIGEuUGVuZGluZzt2YXIgaD1bXSxpPSIiLGo9OTAwKmEuQ2ZnKCkuc3RhdHNSZWZyZXNoLGs9Yi5jb3VjaDwiMi4iP1siX3N0YXRzIl06WyJfc3RhdHMiLCJfc3lzdGVtIl07cmV0dXJuIGIuY291Y2g+PSIyLiImJiEvXC9fbm9kZS8udGVzdChiLnVybCkmJihpPSJfbm9kZS9fbG9jYWwvIiksYi5oZWFsdGg9IiIsay5mb3JFYWNoKGZ1bmN0aW9uKHgpe3ZhciBjPXtBY2NlcHQ6ImFwcGxpY2F0aW9uL2pzb24ifTtiLmJhc2ljJiYoYy5BdXRob3JpemF0aW9uPSJCYXNpYyAiK2IuYmFzaWMpLGgucHVzaChhLlJlcSh7dXJsOmIudXJsKygiLyIhPWIudXJsLnN1YnN0cigtMSk/Ii8iOiIiKStpK3gsbWV0aG9kOiJnZXQiLGRhdGFUeXBlOiJqc29uIixoZWFkZXJzOmMsdGltZW91dDpqfSkudGhlbihmdW5jdGlvbih4KXskLmV4dGVuZChnLGwoeCkpfSkuZmFpbChmdW5jdGlvbih4LGEsYyl7Yi5oZWFsdGg9YysiIn0pKX0pLGEuUGVuZGluZz1RLmFsbFNldHRsZWQoaCkudGhlbihmdW5jdGlvbigpe2IuaGVhbHRofHxtKGcpLHh8fChhLm15LmZpbmQoIiNuc2VyaWVzIikudHJpZ2dlcigicmVjYWxjIiksYS5teS5maW5kKCIjbmdhdWdlcyIpLnRyaWdnZXIoInJlY2FsYyIpKTt0cnl7YS5BdXRvU2F2ZU5vZGUoYil9Y2F0Y2goeCl7fX0pLmZpbmFsbHkoZnVuY3Rpb24oKXthLlBlbmRpbmc9bnVsbCx4fHxhLm15LmZpbmQoIiNubmFtZSIpLnRyaWdnZXIoImNoZWNrIiksZC5yZXNvbHZlKCl9KSxhLlBlbmRpbmc7ZnVuY3Rpb24gbCh4KXt2YXIgYT17fTtyZXR1cm4geC5tZW1vcnkmJngudXB0aW1lP0pTT04uc3RyaW5naWZ5KHgsZnVuY3Rpb24oeCxiKXtyZXR1cm4gZihiKSYmKGFbeF09YiksYn0pOkpTT04uc3RyaW5naWZ5KHgsZnVuY3Rpb24oeCxiKXtyZXR1cm4gZShiKSYmKGYoYi5zdW0pfHxmKGIudmFsdWUpKSYmKGFbeF09Yi5zdW18fGIudmFsdWV8fDApLGJ9KSxhfWZ1bmN0aW9uIG0oeCl7dmFyIGQ9YS5DZmcoKS5zZXJpZU1heExlbmd0aDtmdW5jdGlvbiBlKGEsYil7dmFyIGU9TWF0aC5yb3VuZChEYXRlLm5vdygpLzEwMCk7YS50aW1lWzBdPWUtYS50aW1lWzBdLGEudGltZS51bnNoaWZ0KGUpLGEuZmllbGRzLmZvckVhY2goZnVuY3Rpb24oYixkKXt2YXIgZT1jKHgsYikuc3VtKCl8fDA7ImN1cnJlbnQiIT1hLm1vZGUmJihhLnJvd3NbZF1bMF09ZS1hLnJvd3NbZF1bMF0pLGEucm93c1tkXS51bnNoaWZ0KGUpLDI9PWEudGltZS5sZW5ndGgmJihhLnJvd3NbZF1bMV09MCl9KSxhLnJvd3NbMF0ubGVuZ3RoPjEwJiYoYS5yb3dzWzBdLmxlbmd0aD0xMCksMj09YS50aW1lLmxlbmd0aD8oYS50aW1lWzFdPTMwLGEuZmllbGRzLmZvckVhY2goZnVuY3Rpb24oeCxiKXthLnJvd3NbYl1bMV09MH0pKTphLnRpbWUubGVuZ3RoPmQmJihhLnRpbWUubGVuZ3RoPWQsYS5yb3dzLmZvckVhY2goZnVuY3Rpb24oeCxhKXt4Lmxlbmd0aD5kJiYoeC5sZW5ndGg9ZCl9KSl9Yi5zZXJpZXMuZm9yRWFjaChlKSxiLmdhdWdlcy5mb3JFYWNoKGUpfX19LFNlcmllOntpZDoiY3cuQ291Y2guTW9uaXRvci5TZXJpZSIscGFyYW1zOntyZXN0eWxlOjYwfSxpbmhlcml0OlsiQ2ZnIiwiR2VuR3JhcGhzIiwiR2VuQXhpcyJdLGRhdGE6e25hbWU6IlJvdyIsZGVub21pbmF0b3I6MSxuYW1lczpbXSxjb2xvcnM6W10sZmllbGRzOltdLHJvd3M6W10sdGltZTpbXX0saW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzO2EuZGF0YTthLkdlbkF4aXMoYSkseC5odG1sKGEuSFRNTCl9LHVpOnsiLmd2YWwiOntiaW5kOmZ1bmN0aW9uKHgsYSl7dmFyIGI9MDtyZXR1cm4gYj0iY3VycmVudCI9PXgubW9kZT8reC5yb3dzWzBdWzBdfHwwOngudGltZVsxXT8xMCooK3gucm93c1swXVsxXXx8MCkveC50aW1lWzFdOjAsKGIvPXguZGVub21pbmF0b3J8fDEpPDE/Yi5yb3VuZCgyKSsiIjpiPjk5JiZiPDFlND8oMHxiKSsiIjpiLnJvdW5kKDEpLm1ldHJpYygzLDMpLnJlcGxhY2UoLyhcZFxkXGQ/XC5cZClcZHsxLDJ9LywiJDEiKX0sd2F0Y2g6IiNwcmltZSJ9LCIuZ3VuaXRzIjp7YmluZDoidW5pdHMuMCJ9LCIucnNoaW0iOntiaW5kOmZ1bmN0aW9uKHgsYSxiKXtpZihudWxsPT1hKXt2YXIgYz1NYXRoLnJvdW5kKERhdGUubm93KCkvMWUzLXgudGltZVswXS8xMCk7Yi5jc3Moe3dpZHRoOmMrInB4In0pfX0sbGlzdGVuOntjb3VjaF9tb25pdG9yX3RpbWVyOmZ1bmN0aW9uKHgsYSl7cmV0dXJuITB9fX0sIiN5YXhpcyI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzLGM9Yi5HZW5BeGlzKGIpO2lmKG51bGw9PWEpcmV0dXJuIGIuVC5HcmFwaC5hc3NpZ24oYi5DZmcoKS5zdGF0c01heFRpbWVmcmFtZSw2MCpiLkNmZygpLnN0YXRzU2NhbGVZLGMucGl2b3RzeSl9LHdhdGNoOiIjcHJpbWUifSwiLmduYW1lcyI6ZnVuY3Rpb24oeCl7cmV0dXJuIHgubmFtZXMuc2xpY2UoMSkubWFwKGZ1bmN0aW9uKGEsYil7cmV0dXJuJzxzcGFuIHN0eWxlPSJjb2xvcjp7Mn0iPnsxfTwvc3Bhbj4nLmFzc2lnbihhLHguY29sb3JzW2IrMV0pfSkuam9pbigiICIpfSwiI3ByaW1lIjp7ZGVsYXk6NTAsYmluZDpmdW5jdGlvbih4LGEpe2lmKG51bGw9PWEpe3ZhciBiPXRoaXMsYz0oYi5HZW5BeGlzKGIpLGIuR2VuR3JhcGhzKGIpKSxkPWIuVC5UYWlsR3JhcGgsZT1iLkNmZygpLnN0YXRzTWF4VGltZWZyYW1lLGY9J3sxfTxkaXYgY2xhc3M9InJjb3ZlciI+ezJ9PC9kaXY+JztyZXR1cm4gYi5teS5maW5kKCIjdGFpbCIpLmh0bWwoYy5zbGljZSgxKS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIGQuYXNzaWduKGYuYXNzaWduKHguc3ZnLHguY292ZXJzKSx4LmVuZCl9KS5qb2luKCIiKSksYi5teS5maW5kKCIjdGlja2luZyIpLmNzcyh7d2lkdGg6Y1swXS53aWR0aC5jbGFtcCgzMDEsZSsxKSsicHgifSksZi5hc3NpZ24oY1swXS5zdmcsY1swXS5jb3ZlcnMpfX19fSxoQmFyOmZ1bmN0aW9uKHgsYSl7dmFyIGI9KCt4fHwwKS5jbGFtcCgwLDFlNTMpLGM9KCthfHwwKS5jbGFtcCgxLDFlNTMpO3JldHVybigxMCpNYXRoLmxvZzEwKDErMTAqYi9jKSkuY2xhbXAoMCw2MSkucm91bmQoMSl9LEhUTUw6JzxkaXYgY2xhc3M9ImdibG9jayBkaWIgdmF0IHcxMDAiPjxkaXYgY2xhc3M9Imd2YWwgdGFyIG84MCBtdC0xIj48L2Rpdj48ZGl2IGNsYXNzPSJndW5pdHMgdGFyIG85MCI+PC9kaXY+PGRpdiBjbGFzcz0iZ25hbWVzIHRhciBtdDIiPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9InJoaXN0byBkaWIgdmF0IG53IG9oIj48ZGl2IGNsYXNzPSJyc2NhbGUgZGliIHZhdCI+PGRpdj4xMDBLPC9kaXY+PGRpdj4xMEs8L2Rpdj48ZGl2PjEwMDA8L2Rpdj48ZGl2PjEwMDwvZGl2PjxkaXY+MTA8L2Rpdj48ZGl2PjE8L2Rpdj48L2Rpdj48ZGl2IGlkPSJ0aWNraW5nIiBjbGFzcz0icnZhbHVlcyBkaWIgdmF0IG53IHJib3VuZHMiPjxkaXYgaWQ9InlheGlzIiBjbGFzcz0ieWF4aXMiPjwvZGl2PjxkaXYgY2xhc3M9InJzaGltIGRpYiB2YXQgcGFsZWJnIj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48ZGl2PjwvZGl2PjxkaXY+PC9kaXY+PGRpdj48L2Rpdj48L2Rpdj48ZGl2IGlkPSJwcmltZSIgY2xhc3M9InJiYXJzIGRpYiB2YXQgbncgcGFsZWJnIj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJydmFsdWVzIGRpYiB2YXQiPjxkaXYgaWQ9InRhaWwiIGNsYXNzPSJyYmFycyBkaWIgdmF0IG53Ij48L2Rpdj48L2Rpdj48L2Rpdj4nLEF4aXM6e3Bpdm90c3g6IiIscGl2b3RzeToiIixheGlzeDoiIn0sVDp7QmFyOic8ZGl2IGNsYXNzPSJyYmFyIiBzdHlsZT0id2lkdGg6ezJ9cHg7IiB0aXRsZT0iezN9Ij57MX08L2Rpdj4nLEJhclRpcDoie3RpbWV9XG57ZHVyfVxue3Jvd3N9IixHcmFwaDonPHN2ZyBjbGFzcz0icnN2ZyIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBzdHlsZT0id2lkdGg6ezF9cHg7aGVpZ2h0OnsyfXB4OyIgeD0iMCIgeT0iMCIgd2lkdGg9InsxfSIgaGVpZ2h0PSJ7Mn0iIHZpZXdCb3g9IjAsIDAsIHsxfSwgezJ9Ij57M308L3N2Zz4nLFRhaWxHcmFwaDonPGRpdiBjbGFzcz0iZGliIHZhdCBtbDMwIHJib3VuZHMgcmdyYXBoIHBhbGViZyI+PGRpdiBjbGFzcz0icnRpbWUiPnsyfTwvZGl2PnsxfTxkaXYgY2xhc3M9InJjb3ZlciI+PC9kaXY+PC9kaXY+JyxMaW5lOic8cGF0aCBkPSJ7MX0iIGZpbGwtb3BhY2l0eT0iMCIgc3Ryb2tlPSJ7Mn0iIHN0cm9rZS13aWR0aD0iMS41IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4nLFBpdm90WDonPHBhdGggZD0iezF9IiBmaWxsLW9wYWNpdHk9IjAiIHN0cm9rZT0iezJ9IiBzdHJva2Utd2lkdGg9IjEiLz4nLFBpdm90WTonPHBhdGggZD0iezF9IiBmaWxsLW9wYWNpdHk9IjAiIHN0cm9rZT0iezJ9IiBzdHJva2Utd2lkdGg9IjEiIHN0cm9rZS1kYXNoYXJyYXk9IjEsMSIvPicsUGl2b3RUZXh0Oic8dGV4dD48dHNwYW4geD0iezF9IiB5PSIxMCIgZm9udC1zaXplPSIxMCIgeGZpbGw9IiM1RTVENTMiPnsyfTwvdHNwYW4+PC90ZXh0Pid9fSxHYXVnZTp7aWQ6ImN3LkNvdWNoLk1vbml0b3IuR2F1Z2UiLHBhcmFtczp7cmVzdHlsZTo2MH0saW5oZXJpdDpbIkNmZyJdLGRhdGE6e25hbWU6IlJvdyIsbW9kZToiIixuYW1lczpbXSxjb2xvcnM6W10sZmllbGRzOltdLHJvd3M6W10sdGltZTpbXX0saW5pdDpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YS5kYXRhO2IuZmllbGRzLmxlbmd0aD0xLGIucm93cy5sZW5ndGg9MSx4Lmh0bWwoYS5IVE1MKX0sdWk6eyIuZ3ZhbCI6e2JpbmQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj0wO3JldHVybiBiPSJjdXJyZW50Ij09eC5tb2RlPyt4LnJvd3NbMF1bMF18fDA6eC50aW1lWzFdPzEwKigreC5yb3dzWzBdWzFdfHwwKS94LnRpbWVbMV06MCwoYi89eC5kZW5vbWluYXRvcnx8MSk8MT9iLnJvdW5kKDIpKyIiOmI+OTkmJmI8MWU0PygwfGIpKyIiOmIucm91bmQoMSkubWV0cmljKDMsMykucmVwbGFjZSgvKFxkXGRcZD9cLlxkKVxkezEsMn0vLCIkMSIpfX0sIi5ndW5pdHMiOntiaW5kOiJ1bml0cy4wIn19LEhUTUw6JzxkaXYgY2xhc3M9ImdibG9jayBwcjEwIHcxMTAgZGliIHZhdCI+PGRpdiBjbGFzcz0iZ3ZhbCBvODAgbXQtMSI+PC9kaXY+PGRpdiBjbGFzcz0iZ3VuaXRzIG85MCI+PC9kaXY+PC9kaXY+J30sc3RhbXA6MTY0Njg3MzA4NTMyMH19KSwkKGZ1bmN0aW9uKCl7dmFyIHg9bmV3IFVSTChsb2NhdGlvbi5ocmVmKSxhPXgucGF0aG5hbWUucmVwbGFjZSgvXlwvLywiIikuc3BsaXQoIi8iKS5yZXZlcnNlKCkubWFwKG0pLGI9Il9kZXNpZ24iPT1hWzJdLGM9Il9waG90b24iPT1hWzFdLGQ9YS5mcm9tKGI/NDozKS5yZXZlcnNlKCksZT17YmFzZTp4Lm9yaWdpbisiLyIrKGQubGVuZ3RoP2QubWFwKGwpLmpvaW4oIi8iKSsiLyI6IiIpLGRiOmFbYz8xOmI/MzoyXSxkb2M6Yz8iX2Rlc2lnbi9waG90b24iOmI/Il9kZXNpZ24vIithWzFdOmFbMV19OyQubXkubW9kYWwucGFyZW50KCIjY3ctYm9keSIpLCQod2luZG93KS5vbigicmVzaXplIixmdW5jdGlvbigpeyQoIi5teS1tb2RhbCIpLmVhY2goZnVuY3Rpb24oKXskKHRoaXMpLnRyaWdnZXIoImxheW91dCIpfSl9LmRlYm91bmNlKDMwKSksd2luZG93LmN3Lm1lPWZ1bmN0aW9uKHgpe3ZhciBhPSh3aW5kb3cuRERPQ3x8e30pLl9tZXx8e25hbWU6IiIscm9sZXM6W10sbG9jYWxlOiJlbiJ9O3JldHVybiBudWxsPT09eD9hOnZvaWQgMD09PXg/YS5uYW1lOmFbeF19O3ZhciBmPXdpbmRvdy5ERE9DPSQuZXh0ZW5kKHdpbmRvdy5ERE9DLHtfYmFzZTplLmJhc2UsX2RiOmUuZGIsX2RvYzplLmRvY30pO3JldHVybiBPYmplY3Qua2V5cyhmLmFwcHN8fHt9KS5mb3JFYWNoKGZ1bmN0aW9uKHgpeyQubXkuY2FjaGUoZi5hcHBzW3hdKX0pLGcoKS50aGVuKGgpLnRoZW4oaikudGhlbihpKS5mYWlsKGZ1bmN0aW9uKHgsYSxiKXtjb25zb2xlLmxvZyh4LGEsYiksY3cubGliLm5vdGUoIlBob3RvbiAxLjI0IGZhaWxlZCB0byBzdGFydCwgc2VlIGNvbnNvbGUgZm9yIGRldGFpbHMiLCJlcnJvciIsM2U0KX0pLHdpbmRvdy5teT1mdW5jdGlvbih4KXtyZXR1cm4gJCh4fHx3aW5kb3cuJDApLm15KCJtYW5pZmVzdCIpfSx2b2lkIDA7ZnVuY3Rpb24gZygpe3JldHVybiBRLmFsbChbayhlLmJhc2UrKGUuZGI/bChlLmRiKSsiLyI6IiIpK2UuZG9jKS50aGVuKGZ1bmN0aW9uKHgpeyQuZXh0ZW5kKCEwLGYsT2JqZWN0LnNlbGVjdCh4LCJfaWQgX3JldiBuYW1lIHN0YW1wIHNldHRpbmdzIHZlcnNpb24gdmVyc2lvbnMiLnNwbGl0KCIgIikpKX0pLGsoZS5iYXNlKyJfc2Vzc2lvbiIpLnRoZW4oZnVuY3Rpb24oeCl7JC5leHRlbmQoITAsZi5fbWUseC51c2VyQ3R4fHx7fSl9KV0pLnRoZW4oZnVuY3Rpb24oeCl7dmFyIGE9Zi5fbWU7cmV0dXJuIGEubmFtZT1hLm5hbWV8fCIiLGEucm9sZXMuZm9yRWFjaChmdW5jdGlvbih4KXsvXmxhbmdcLVthLXpdezJ9JC8udGVzdCh4KSYmKGEubG9jYWxlPXguc3BsaXQoIi0iKVsxXSwkLm15LmxvY2FsZShhLmxvY2FsZSkpfSksZn0pfWZ1bmN0aW9uIGgoKXt0cnl7dmFyIHg9SlNPTi5wYXJzZSh3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oImN3LlBob3Rvbi5DZmciKXx8Int9IikudGhlbWV8fCIiOyJhdXRvIj09eCYmd2luZG93Lm1hdGNoTWVkaWEmJndpbmRvdy5tYXRjaE1lZGlhKCIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIikubWF0Y2hlcz8kKCJib2R5IikuYWRkQ2xhc3MoInRoZW1lLWRhcmsiKTp4JiYkKCJib2R5IikuYWRkQ2xhc3MoInRoZW1lLSIreCl9Y2F0Y2goeCl7fX1mdW5jdGlvbiBpKCl7dmFyIHg9JCgiI2N3LXNwYWNlIikubXkoIm1hbmlmZXN0IiksYT14LmhvdGtleXM7T2JqZWN0LmtleXMoYSkuZm9yRWFjaChmdW5jdGlvbihiKXt2YXIgYz1hW2JdOyJmdW5jdGlvbiI9PXR5cGVvZiBjP3dpbmRvdy5ob3RrZXlzKGIsYy5iaW5kKHgpKTp3aW5kb3cuaG90a2V5cyhiLGNbMF0sY1sxXS5iaW5kKHgpKX0pfWZ1bmN0aW9uIGooKXt2YXIgeD1mLnJ1bixhPVtdO3JldHVybiB4LmZvckVhY2goZnVuY3Rpb24oeCl7dmFyIGI9JCh4LmNvbnRhaW5lcik7YS5wdXNoKGIubXkoeC5tYW5pZmVzdCx4LmRhdGF8fHt9KSl9KSxRLmFsbChhKX1mdW5jdGlvbiBrKHgpe3JldHVybiAkLmFqYXgoJC5leHRlbmQoe21ldGhvZDoiZ2V0IixkYXRhVHlwZToianNvbiIsaGVhZGVyczp7YWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uIn0sY2FjaGU6ITF9LHt1cmw6eH0pKX1mdW5jdGlvbiBsKHgpe3JldHVybiBlbmNvZGVVUklDb21wb25lbnQoeCl9ZnVuY3Rpb24gbSh4KXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHgpfX0pOw==" }, "favicon.png": { "content_type": "image/png", "data": "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" }, "lib/diff.js": { "content_type": "text/javascript", "data": "LypHb29nbGUgRGlmZiBNYXRjaCBhbmQgUGF0Y2gsIGpzb25kaWZmcGF0Y2ggMC4xLjM4Ki8KIWZ1bmN0aW9uKHgpe2lmKCJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmInVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGUpbW9kdWxlLmV4cG9ydHM9eCgpO2Vsc2UgaWYoImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZClkZWZpbmUoW10seCk7ZWxzZXt2YXIgYTsidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz9hPXdpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9hPWdsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYmJihhPXNlbGYpLGEuanNvbmRpZmZwYXRjaD14KCl9fShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiB4KGEsYixjKXtmdW5jdGlvbiBkKGYsZyl7aWYoIWJbZl0pe2lmKCFhW2ZdKXt2YXIgaD0iZnVuY3Rpb24iPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZTtpZighZyYmaClyZXR1cm4gaChmLCEwKTtpZihlKXJldHVybiBlKGYsITApO3ZhciBpPW5ldyBFcnJvcigiQ2Fubm90IGZpbmQgbW9kdWxlICciK2YrIiciKTt0aHJvdyBpLmNvZGU9Ik1PRFVMRV9OT1RfRk9VTkQiLGl9dmFyIGo9YltmXT17ZXhwb3J0czp7fX07YVtmXVswXS5jYWxsKGouZXhwb3J0cyxmdW5jdGlvbih4KXt2YXIgYj1hW2ZdWzFdW3hdO3JldHVybiBkKGJ8fHgpfSxqLGouZXhwb3J0cyx4LGEsYixjKX1yZXR1cm4gYltmXS5leHBvcnRzfWZvcih2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZSxmPTA7ZjxjLmxlbmd0aDtmKyspZChjW2ZdKTtyZXR1cm4gZH0oezE6W2Z1bmN0aW9uKHgsYSxiKXt4KCIuL2Vudmlyb25tZW50IikuaXNCcm93c2VyJiYod2luZG93LmRpZmZfbWF0Y2hfcGF0Y2g9eCgiLi4vcHVibGljL2V4dGVybmFsL2RpZmZfbWF0Y2hfcGF0Y2hfdW5jb21wcmVzc2VkIikpLGEuZXhwb3J0cz14KCIuL21haW4iKX0seyIuLi9wdWJsaWMvZXh0ZXJuYWwvZGlmZl9tYXRjaF9wYXRjaF91bmNvbXByZXNzZWQiOjIsIi4vZW52aXJvbm1lbnQiOjksIi4vbWFpbiI6MTZ9XSwyOltmdW5jdGlvbih4LGEsYil7ZnVuY3Rpb24gYygpe3RoaXMuRGlmZl9UaW1lb3V0PTEsdGhpcy5EaWZmX0VkaXRDb3N0PTQsdGhpcy5NYXRjaF9UaHJlc2hvbGQ9LjUsdGhpcy5NYXRjaF9EaXN0YW5jZT0xZTMsdGhpcy5QYXRjaF9EZWxldGVUaHJlc2hvbGQ9LjUsdGhpcy5QYXRjaF9NYXJnaW49NCx0aGlzLk1hdGNoX01heEJpdHM9MzJ9dmFyIGQ9LTEsZT0xLGY9MDtjLkRpZmYsYy5wcm90b3R5cGUuZGlmZl9tYWluPWZ1bmN0aW9uKHgsYSxiLGMpe3ZvaWQgMD09PWMmJihjPXRoaXMuRGlmZl9UaW1lb3V0PD0wP051bWJlci5NQVhfVkFMVUU6KG5ldyBEYXRlKS5nZXRUaW1lKCkrMWUzKnRoaXMuRGlmZl9UaW1lb3V0KTt2YXIgZD1jO2lmKG51bGw9PXh8fG51bGw9PWEpdGhyb3cgbmV3IEVycm9yKCJOdWxsIGlucHV0LiAoZGlmZl9tYWluKSIpO2lmKHg9PWEpcmV0dXJuIHg/W1tmLHhdXTpbXTt2b2lkIDA9PT1iJiYoYj0hMCk7dmFyIGU9YixnPXRoaXMuZGlmZl9jb21tb25QcmVmaXgoeCxhKSxoPXguc3Vic3RyaW5nKDAsZyk7eD14LnN1YnN0cmluZyhnKSxhPWEuc3Vic3RyaW5nKGcpLGc9dGhpcy5kaWZmX2NvbW1vblN1ZmZpeCh4LGEpO3ZhciBpPXguc3Vic3RyaW5nKHgubGVuZ3RoLWcpO3g9eC5zdWJzdHJpbmcoMCx4Lmxlbmd0aC1nKSxhPWEuc3Vic3RyaW5nKDAsYS5sZW5ndGgtZyk7dmFyIGo9dGhpcy5kaWZmX2NvbXB1dGVfKHgsYSxlLGQpO3JldHVybiBoJiZqLnVuc2hpZnQoW2YsaF0pLGkmJmoucHVzaChbZixpXSksdGhpcy5kaWZmX2NsZWFudXBNZXJnZShqKSxqfSxjLnByb3RvdHlwZS5kaWZmX2NvbXB1dGVfPWZ1bmN0aW9uKHgsYSxiLGMpe3ZhciBnO2lmKCF4KXJldHVybltbZSxhXV07aWYoIWEpcmV0dXJuW1tkLHhdXTt2YXIgaD14Lmxlbmd0aD5hLmxlbmd0aD94OmEsaT14Lmxlbmd0aD5hLmxlbmd0aD9hOngsaj1oLmluZGV4T2YoaSk7aWYoLTEhPWopcmV0dXJuIGc9W1tlLGguc3Vic3RyaW5nKDAsaildLFtmLGldLFtlLGguc3Vic3RyaW5nKGoraS5sZW5ndGgpXV0seC5sZW5ndGg+YS5sZW5ndGgmJihnWzBdWzBdPWdbMl1bMF09ZCksZztpZigxPT1pLmxlbmd0aClyZXR1cm5bW2QseF0sW2UsYV1dO2g9aT1udWxsO3ZhciBrPXRoaXMuZGlmZl9oYWxmTWF0Y2hfKHgsYSk7aWYoayl7dmFyIGw9a1swXSxtPWtbMV0sbj1rWzJdLG89a1szXSxwPWtbNF0scT10aGlzLmRpZmZfbWFpbihsLG4sYixjKSxyPXRoaXMuZGlmZl9tYWluKG0sbyxiLGMpO3JldHVybiBxLmNvbmNhdChbW2YscF1dLHIpfXJldHVybiBiJiZ4Lmxlbmd0aD4xMDAmJmEubGVuZ3RoPjEwMD90aGlzLmRpZmZfbGluZU1vZGVfKHgsYSxjKTp0aGlzLmRpZmZfYmlzZWN0Xyh4LGEsYyl9LGMucHJvdG90eXBlLmRpZmZfbGluZU1vZGVfPWZ1bmN0aW9uKHgsYSxiKXt4PShtPXRoaXMuZGlmZl9saW5lc1RvQ2hhcnNfKHgsYSkpWzBdLGE9bVsxXTt2YXIgYz1tWzJdLGc9dGhpcy5kaWZmX2Jpc2VjdF8oeCxhLGIpO3RoaXMuZGlmZl9jaGFyc1RvTGluZXNfKGcsYyksdGhpcy5kaWZmX2NsZWFudXBTZW1hbnRpYyhnKSxnLnB1c2goW2YsIiJdKTtmb3IodmFyIGg9MCxpPTAsaj0wLGs9IiIsbD0iIjtoPGcubGVuZ3RoOyl7c3dpdGNoKGdbaF1bMF0pe2Nhc2UgZTpqKyssbCs9Z1toXVsxXTticmVhaztjYXNlIGQ6aSsrLGsrPWdbaF1bMV07YnJlYWs7Y2FzZSBmOmlmKGk+PTEmJmo+PTEpe3ZhciBtPXRoaXMuZGlmZl9tYWluKGssbCwhMSxiKTtnLnNwbGljZShoLWktaixpK2opLGg9aC1pLWo7Zm9yKHZhciBuPW0ubGVuZ3RoLTE7bj49MDtuLS0pZy5zcGxpY2UoaCwwLG1bbl0pO2grPW0ubGVuZ3RofWo9MCxpPTAsaz0iIixsPSIifWgrK31yZXR1cm4gZy5wb3AoKSxnfSxjLnByb3RvdHlwZS5kaWZmX2Jpc2VjdF89ZnVuY3Rpb24oeCxhLGIpe2Zvcih2YXIgYz14Lmxlbmd0aCxmPWEubGVuZ3RoLGc9TWF0aC5jZWlsKChjK2YpLzIpLGg9ZyxpPTIqZyxqPW5ldyBBcnJheShpKSxrPW5ldyBBcnJheShpKSxsPTA7aT5sO2wrKylqW2xdPS0xLGtbbF09LTE7altoKzFdPTAsa1toKzFdPTA7Zm9yKHZhciBtPWMtZixuPW0lMiE9MCxvPTAscD0wLHE9MCxyPTAscz0wO2c+cyYmISgobmV3IERhdGUpLmdldFRpbWUoKT5iKTtzKyspe2Zvcih2YXIgdD0tcytvO3MtcD49dDt0Kz0yKXtmb3IodmFyIHU9aCt0LHY9KEI9dD09LXN8fHQhPXMmJmpbdS0xXTxqW3UrMV0/alt1KzFdOmpbdS0xXSsxKS10O2M+QiYmZj52JiZ4LmNoYXJBdChCKT09YS5jaGFyQXQodik7KUIrKyx2Kys7aWYoalt1XT1CLEI+YylwKz0yO2Vsc2UgaWYodj5mKW8rPTI7ZWxzZSBpZihuKXtpZigoej1oK20tdCk+PTAmJmk+eiYmLTEhPWtbel0paWYoQj49KHk9Yy1rW3pdKSlyZXR1cm4gdGhpcy5kaWZmX2Jpc2VjdFNwbGl0Xyh4LGEsQix2LGIpfX1mb3IodmFyIHc9LXMrcTtzLXI+PXc7dys9Mil7Zm9yKHZhciB5LHo9aCt3LEE9KHk9dz09LXN8fHchPXMmJmtbei0xXTxrW3orMV0/a1t6KzFdOmtbei0xXSsxKS13O2M+eSYmZj5BJiZ4LmNoYXJBdChjLXktMSk9PWEuY2hhckF0KGYtQS0xKTspeSsrLEErKztpZihrW3pdPXkseT5jKXIrPTI7ZWxzZSBpZihBPmYpcSs9MjtlbHNlIGlmKCFuKXtpZigodT1oK20tdyk+PTAmJmk+dSYmLTEhPWpbdV0pe3ZhciBCO3Y9aCsoQj1qW3VdKS11O2lmKEI+PSh5PWMteSkpcmV0dXJuIHRoaXMuZGlmZl9iaXNlY3RTcGxpdF8oeCxhLEIsdixiKX19fX1yZXR1cm5bW2QseF0sW2UsYV1dfSxjLnByb3RvdHlwZS5kaWZmX2Jpc2VjdFNwbGl0Xz1mdW5jdGlvbih4LGEsYixjLGQpe3ZhciBlPXguc3Vic3RyaW5nKDAsYiksZj1hLnN1YnN0cmluZygwLGMpLGc9eC5zdWJzdHJpbmcoYiksaD1hLnN1YnN0cmluZyhjKSxpPXRoaXMuZGlmZl9tYWluKGUsZiwhMSxkKSxqPXRoaXMuZGlmZl9tYWluKGcsaCwhMSxkKTtyZXR1cm4gaS5jb25jYXQoail9LGMucHJvdG90eXBlLmRpZmZfbGluZXNUb0NoYXJzXz1mdW5jdGlvbih4LGEpe2Z1bmN0aW9uIGIoeCl7Zm9yKHZhciBhPSIiLGI9MCxlPS0xLGY9Yy5sZW5ndGg7ZTx4Lmxlbmd0aC0xOyl7LTE9PShlPXguaW5kZXhPZigiXG4iLGIpKSYmKGU9eC5sZW5ndGgtMSk7dmFyIGc9eC5zdWJzdHJpbmcoYixlKzEpO2I9ZSsxLChkLmhhc093blByb3BlcnR5P2QuaGFzT3duUHJvcGVydHkoZyk6dm9pZCAwIT09ZFtnXSk/YSs9U3RyaW5nLmZyb21DaGFyQ29kZShkW2ddKTooYSs9U3RyaW5nLmZyb21DaGFyQ29kZShmKSxkW2ddPWYsY1tmKytdPWcpfXJldHVybiBhfXZhciBjPVtdLGQ9e307cmV0dXJuIGNbMF09IiIsW2IoeCksYihhKSxjXX0sYy5wcm90b3R5cGUuZGlmZl9jaGFyc1RvTGluZXNfPWZ1bmN0aW9uKHgsYSl7Zm9yKHZhciBiPTA7Yjx4Lmxlbmd0aDtiKyspe2Zvcih2YXIgYz14W2JdWzFdLGQ9W10sZT0wO2U8Yy5sZW5ndGg7ZSsrKWRbZV09YVtjLmNoYXJDb2RlQXQoZSldO3hbYl1bMV09ZC5qb2luKCIiKX19LGMucHJvdG90eXBlLmRpZmZfY29tbW9uUHJlZml4PWZ1bmN0aW9uKHgsYSl7aWYoIXh8fCFhfHx4LmNoYXJBdCgwKSE9YS5jaGFyQXQoMCkpcmV0dXJuIDA7Zm9yKHZhciBiPTAsYz1NYXRoLm1pbih4Lmxlbmd0aCxhLmxlbmd0aCksZD1jLGU9MDtkPmI7KXguc3Vic3RyaW5nKGUsZCk9PWEuc3Vic3RyaW5nKGUsZCk/ZT1iPWQ6Yz1kLGQ9TWF0aC5mbG9vcigoYy1iKS8yK2IpO3JldHVybiBkfSxjLnByb3RvdHlwZS5kaWZmX2NvbW1vblN1ZmZpeD1mdW5jdGlvbih4LGEpe2lmKCF4fHwhYXx8eC5jaGFyQXQoeC5sZW5ndGgtMSkhPWEuY2hhckF0KGEubGVuZ3RoLTEpKXJldHVybiAwO2Zvcih2YXIgYj0wLGM9TWF0aC5taW4oeC5sZW5ndGgsYS5sZW5ndGgpLGQ9YyxlPTA7ZD5iOyl4LnN1YnN0cmluZyh4Lmxlbmd0aC1kLHgubGVuZ3RoLWUpPT1hLnN1YnN0cmluZyhhLmxlbmd0aC1kLGEubGVuZ3RoLWUpP2U9Yj1kOmM9ZCxkPU1hdGguZmxvb3IoKGMtYikvMitiKTtyZXR1cm4gZH0sYy5wcm90b3R5cGUuZGlmZl9jb21tb25PdmVybGFwXz1mdW5jdGlvbih4LGEpe3ZhciBiPXgubGVuZ3RoLGM9YS5sZW5ndGg7aWYoMD09Ynx8MD09YylyZXR1cm4gMDtiPmM/eD14LnN1YnN0cmluZyhiLWMpOmM+YiYmKGE9YS5zdWJzdHJpbmcoMCxiKSk7dmFyIGQ9TWF0aC5taW4oYixjKTtpZih4PT1hKXJldHVybiBkO2Zvcih2YXIgZT0wLGY9MTs7KXt2YXIgZz14LnN1YnN0cmluZyhkLWYpLGg9YS5pbmRleE9mKGcpO2lmKC0xPT1oKXJldHVybiBlO2YrPWgsKDA9PWh8fHguc3Vic3RyaW5nKGQtZik9PWEuc3Vic3RyaW5nKDAsZikpJiYoZT1mLGYrKyl9fSxjLnByb3RvdHlwZS5kaWZmX2hhbGZNYXRjaF89ZnVuY3Rpb24oeCxhKXtmdW5jdGlvbiBiKHgsYSxiKXtmb3IodmFyIGMsZCxlLGYsZz14LnN1YnN0cmluZyhiLGIrTWF0aC5mbG9vcih4Lmxlbmd0aC80KSksaD0tMSxpPSIiOy0xIT0oaD1hLmluZGV4T2YoZyxoKzEpKTspe3ZhciBrPWouZGlmZl9jb21tb25QcmVmaXgoeC5zdWJzdHJpbmcoYiksYS5zdWJzdHJpbmcoaCkpLGw9ai5kaWZmX2NvbW1vblN1ZmZpeCh4LnN1YnN0cmluZygwLGIpLGEuc3Vic3RyaW5nKDAsaCkpO2kubGVuZ3RoPGwrayYmKGk9YS5zdWJzdHJpbmcoaC1sLGgpK2Euc3Vic3RyaW5nKGgsaCtrKSxjPXguc3Vic3RyaW5nKDAsYi1sKSxkPXguc3Vic3RyaW5nKGIrayksZT1hLnN1YnN0cmluZygwLGgtbCksZj1hLnN1YnN0cmluZyhoK2spKX1yZXR1cm4gMippLmxlbmd0aD49eC5sZW5ndGg/W2MsZCxlLGYsaV06bnVsbH1pZih0aGlzLkRpZmZfVGltZW91dDw9MClyZXR1cm4gbnVsbDt2YXIgYz14Lmxlbmd0aD5hLmxlbmd0aD94OmEsZD14Lmxlbmd0aD5hLmxlbmd0aD9hOng7aWYoYy5sZW5ndGg8NHx8MipkLmxlbmd0aDxjLmxlbmd0aClyZXR1cm4gbnVsbDt2YXIgZSxmLGcsaCxpLGo9dGhpcyxrPWIoYyxkLE1hdGguY2VpbChjLmxlbmd0aC80KSksbD1iKGMsZCxNYXRoLmNlaWwoYy5sZW5ndGgvMikpO3JldHVybiBrfHxsPyhlPWw/ayYma1s0XS5sZW5ndGg+bFs0XS5sZW5ndGg/azpsOmsseC5sZW5ndGg+YS5sZW5ndGg/KGY9ZVswXSxnPWVbMV0saD1lWzJdLGk9ZVszXSk6KGg9ZVswXSxpPWVbMV0sZj1lWzJdLGc9ZVszXSksW2YsZyxoLGksZVs0XV0pOm51bGx9LGMucHJvdG90eXBlLmRpZmZfY2xlYW51cFNlbWFudGljPWZ1bmN0aW9uKHgpe2Zvcih2YXIgYT0hMSxiPVtdLGM9MCxnPW51bGwsaD0wLGk9MCxqPTAsaz0wLGw9MDtoPHgubGVuZ3RoOyl4W2hdWzBdPT1mPyhiW2MrK109aCxpPWssaj1sLGs9MCxsPTAsZz14W2hdWzFdKTooeFtoXVswXT09ZT9rKz14W2hdWzFdLmxlbmd0aDpsKz14W2hdWzFdLmxlbmd0aCxudWxsIT09ZyYmZy5sZW5ndGg8PU1hdGgubWF4KGksaikmJmcubGVuZ3RoPD1NYXRoLm1heChrLGwpJiYoeC5zcGxpY2UoYltjLTFdLDAsW2QsZ10pLHhbYltjLTFdKzFdWzBdPWUsYy0tLGg9LS1jPjA/YltjLTFdOi0xLGk9MCxqPTAsaz0wLGw9MCxnPW51bGwsYT0hMCkpLGgrKztmb3IoYSYmdGhpcy5kaWZmX2NsZWFudXBNZXJnZSh4KSx0aGlzLmRpZmZfY2xlYW51cFNlbWFudGljTG9zc2xlc3MoeCksaD0xO2g8eC5sZW5ndGg7KXtpZih4W2gtMV1bMF09PWQmJnhbaF1bMF09PWUpe3ZhciBtPXhbaC0xXVsxXSxuPXhbaF1bMV0sbz10aGlzLmRpZmZfY29tbW9uT3ZlcmxhcF8obSxuKTsobz49bS5sZW5ndGgvMnx8bz49bi5sZW5ndGgvMikmJih4LnNwbGljZShoLDAsW2Ysbi5zdWJzdHJpbmcoMCxvKV0pLHhbaC0xXVsxXT1tLnN1YnN0cmluZygwLG0ubGVuZ3RoLW8pLHhbaCsxXVsxXT1uLnN1YnN0cmluZyhvKSxoKyspLGgrK31oKyt9fSxjLnByb3RvdHlwZS5kaWZmX2NsZWFudXBTZW1hbnRpY0xvc3NsZXNzPWZ1bmN0aW9uKHgpe2Z1bmN0aW9uIGEoeCxhKXtpZigheHx8IWEpcmV0dXJuIDU7dmFyIGY9MDtyZXR1cm4oeC5jaGFyQXQoeC5sZW5ndGgtMSkubWF0Y2goYil8fGEuY2hhckF0KDApLm1hdGNoKGIpKSYmKGYrKywoeC5jaGFyQXQoeC5sZW5ndGgtMSkubWF0Y2goYyl8fGEuY2hhckF0KDApLm1hdGNoKGMpKSYmKGYrKywoeC5jaGFyQXQoeC5sZW5ndGgtMSkubWF0Y2goZCl8fGEuY2hhckF0KDApLm1hdGNoKGQpKSYmKGYrKywoeC5tYXRjaChlKXx8YS5tYXRjaChnKSkmJmYrKykpKSxmfWZvcih2YXIgYj0vW15hLXpBLVowLTldLyxjPS9ccy8sZD0vW1xyXG5dLyxlPS9cblxyP1xuJC8sZz0vXlxyP1xuXHI/XG4vLGg9MTtoPHgubGVuZ3RoLTE7KXtpZih4W2gtMV1bMF09PWYmJnhbaCsxXVswXT09Zil7dmFyIGk9eFtoLTFdWzFdLGo9eFtoXVsxXSxrPXhbaCsxXVsxXSxsPXRoaXMuZGlmZl9jb21tb25TdWZmaXgoaSxqKTtpZihsKXt2YXIgbT1qLnN1YnN0cmluZyhqLmxlbmd0aC1sKTtpPWkuc3Vic3RyaW5nKDAsaS5sZW5ndGgtbCksaj1tK2ouc3Vic3RyaW5nKDAsai5sZW5ndGgtbCksaz1tK2t9Zm9yKHZhciBuPWksbz1qLHA9ayxxPWEoaSxqKSthKGosayk7ai5jaGFyQXQoMCk9PT1rLmNoYXJBdCgwKTspe2krPWouY2hhckF0KDApLGo9ai5zdWJzdHJpbmcoMSkray5jaGFyQXQoMCksaz1rLnN1YnN0cmluZygxKTt2YXIgcj1hKGksaikrYShqLGspO3I+PXEmJihxPXIsbj1pLG89aixwPWspfXhbaC0xXVsxXSE9biYmKG4/eFtoLTFdWzFdPW46KHguc3BsaWNlKGgtMSwxKSxoLS0pLHhbaF1bMV09byxwP3hbaCsxXVsxXT1wOih4LnNwbGljZShoKzEsMSksaC0tKSl9aCsrfX0sYy5wcm90b3R5cGUuZGlmZl9jbGVhbnVwRWZmaWNpZW5jeT1mdW5jdGlvbih4KXtmb3IodmFyIGE9ITEsYj1bXSxjPTAsZz0iIixoPTAsaT0hMSxqPSExLGs9ITEsbD0hMTtoPHgubGVuZ3RoOyl4W2hdWzBdPT1mPyh4W2hdWzFdLmxlbmd0aDx0aGlzLkRpZmZfRWRpdENvc3QmJihrfHxsKT8oYltjKytdPWgsaT1rLGo9bCxnPXhbaF1bMV0pOihjPTAsZz0iIiksaz1sPSExKTooeFtoXVswXT09ZD9sPSEwOms9ITAsZyYmKGkmJmomJmsmJmx8fGcubGVuZ3RoPHRoaXMuRGlmZl9FZGl0Q29zdC8yJiZpK2oraytsPT0zKSYmKHguc3BsaWNlKGJbYy0xXSwwLFtkLGddKSx4W2JbYy0xXSsxXVswXT1lLGMtLSxnPSIiLGkmJmo/KGs9bD0hMCxjPTApOihoPS0tYz4wP2JbYy0xXTotMSxrPWw9ITEpLGE9ITApKSxoKys7YSYmdGhpcy5kaWZmX2NsZWFudXBNZXJnZSh4KX0sYy5wcm90b3R5cGUuZGlmZl9jbGVhbnVwTWVyZ2U9ZnVuY3Rpb24oeCl7eC5wdXNoKFtmLCIiXSk7Zm9yKHZhciBhLGI9MCxjPTAsZz0wLGg9IiIsaT0iIjtiPHgubGVuZ3RoOylzd2l0Y2goeFtiXVswXSl7Y2FzZSBlOmcrKyxpKz14W2JdWzFdLGIrKzticmVhaztjYXNlIGQ6YysrLGgrPXhbYl1bMV0sYisrO2JyZWFrO2Nhc2UgZjpjK2c+MT8oMCE9PWMmJjAhPT1nJiYoMCE9PShhPXRoaXMuZGlmZl9jb21tb25QcmVmaXgoaSxoKSkmJihiLWMtZz4wJiZ4W2ItYy1nLTFdWzBdPT1mP3hbYi1jLWctMV1bMV0rPWkuc3Vic3RyaW5nKDAsYSk6KHguc3BsaWNlKDAsMCxbZixpLnN1YnN0cmluZygwLGEpXSksYisrKSxpPWkuc3Vic3RyaW5nKGEpLGg9aC5zdWJzdHJpbmcoYSkpLDAhPT0oYT10aGlzLmRpZmZfY29tbW9uU3VmZml4KGksaCkpJiYoeFtiXVsxXT1pLnN1YnN0cmluZyhpLmxlbmd0aC1hKSt4W2JdWzFdLGk9aS5zdWJzdHJpbmcoMCxpLmxlbmd0aC1hKSxoPWguc3Vic3RyaW5nKDAsaC5sZW5ndGgtYSkpKSwwPT09Yz94LnNwbGljZShiLWMtZyxjK2csW2UsaV0pOjA9PT1nP3guc3BsaWNlKGItYy1nLGMrZyxbZCxoXSk6eC5zcGxpY2UoYi1jLWcsYytnLFtkLGhdLFtlLGldKSxiPWItYy1nKyhjPzE6MCkrKGc/MTowKSsxKTowIT09YiYmeFtiLTFdWzBdPT1mPyh4W2ItMV1bMV0rPXhbYl1bMV0seC5zcGxpY2UoYiwxKSk6YisrLGc9MCxjPTAsaD0iIixpPSIifSIiPT09eFt4Lmxlbmd0aC0xXVsxXSYmeC5wb3AoKTt2YXIgaj0hMTtmb3IoYj0xO2I8eC5sZW5ndGgtMTspeFtiLTFdWzBdPT1mJiZ4W2IrMV1bMF09PWYmJih4W2JdWzFdLnN1YnN0cmluZyh4W2JdWzFdLmxlbmd0aC14W2ItMV1bMV0ubGVuZ3RoKT09eFtiLTFdWzFdPyh4W2JdWzFdPXhbYi0xXVsxXSt4W2JdWzFdLnN1YnN0cmluZygwLHhbYl1bMV0ubGVuZ3RoLXhbYi0xXVsxXS5sZW5ndGgpLHhbYisxXVsxXT14W2ItMV1bMV0reFtiKzFdWzFdLHguc3BsaWNlKGItMSwxKSxqPSEwKTp4W2JdWzFdLnN1YnN0cmluZygwLHhbYisxXVsxXS5sZW5ndGgpPT14W2IrMV1bMV0mJih4W2ItMV1bMV0rPXhbYisxXVsxXSx4W2JdWzFdPXhbYl1bMV0uc3Vic3RyaW5nKHhbYisxXVsxXS5sZW5ndGgpK3hbYisxXVsxXSx4LnNwbGljZShiKzEsMSksaj0hMCkpLGIrKztqJiZ0aGlzLmRpZmZfY2xlYW51cE1lcmdlKHgpfSxjLnByb3RvdHlwZS5kaWZmX3hJbmRleD1mdW5jdGlvbih4LGEpe3ZhciBiLGM9MCxmPTAsZz0wLGg9MDtmb3IoYj0wO2I8eC5sZW5ndGgmJih4W2JdWzBdIT09ZSYmKGMrPXhbYl1bMV0ubGVuZ3RoKSx4W2JdWzBdIT09ZCYmKGYrPXhbYl1bMV0ubGVuZ3RoKSwhKGM+YSkpO2IrKylnPWMsaD1mO3JldHVybiB4Lmxlbmd0aCE9YiYmeFtiXVswXT09PWQ/aDpoKyhhLWcpfSxjLnByb3RvdHlwZS5kaWZmX3ByZXR0eUh0bWw9ZnVuY3Rpb24oeCl7Zm9yKHZhciBhPVtdLGI9MCxjPS8mL2csZz0vPC9nLGg9Lz4vZyxpPS9cbi9nLGo9MDtqPHgubGVuZ3RoO2orKyl7dmFyIGs9eFtqXVswXSxsPXhbal1bMV0sbT1sLnJlcGxhY2UoYywiJmFtcDsiKS5yZXBsYWNlKGcsIiZsdDsiKS5yZXBsYWNlKGgsIiZndDsiKS5yZXBsYWNlKGksIiZwYXJhOzxicj4iKTtzd2l0Y2goayl7Y2FzZSBlOmFbal09JzxpbnMgc3R5bGU9ImJhY2tncm91bmQ6I2U2ZmZlNjsiPicrbSsiPC9pbnM+IjticmVhaztjYXNlIGQ6YVtqXT0nPGRlbCBzdHlsZT0iYmFja2dyb3VuZDojZmZlNmU2OyI+JyttKyI8L2RlbD4iO2JyZWFrO2Nhc2UgZjphW2pdPSI8c3Bhbj4iK20rIjwvc3Bhbj4ifWshPT1kJiYoYis9bC5sZW5ndGgpfXJldHVybiBhLmpvaW4oIiIpfSxjLnByb3RvdHlwZS5kaWZmX3RleHQxPWZ1bmN0aW9uKHgpe2Zvcih2YXIgYT1bXSxiPTA7Yjx4Lmxlbmd0aDtiKyspeFtiXVswXSE9PWUmJihhW2JdPXhbYl1bMV0pO3JldHVybiBhLmpvaW4oIiIpfSxjLnByb3RvdHlwZS5kaWZmX3RleHQyPWZ1bmN0aW9uKHgpe2Zvcih2YXIgYT1bXSxiPTA7Yjx4Lmxlbmd0aDtiKyspeFtiXVswXSE9PWQmJihhW2JdPXhbYl1bMV0pO3JldHVybiBhLmpvaW4oIiIpfSxjLnByb3RvdHlwZS5kaWZmX2xldmVuc2h0ZWluPWZ1bmN0aW9uKHgpe2Zvcih2YXIgYT0wLGI9MCxjPTAsZz0wO2c8eC5sZW5ndGg7ZysrKXt2YXIgaD14W2ddWzBdLGk9eFtnXVsxXTtzd2l0Y2goaCl7Y2FzZSBlOmIrPWkubGVuZ3RoO2JyZWFrO2Nhc2UgZDpjKz1pLmxlbmd0aDticmVhaztjYXNlIGY6YSs9TWF0aC5tYXgoYixjKSxiPTAsYz0wfX1yZXR1cm4gYStNYXRoLm1heChiLGMpfSxjLnByb3RvdHlwZS5kaWZmX3RvRGVsdGE9ZnVuY3Rpb24oeCl7Zm9yKHZhciBhPVtdLGI9MDtiPHgubGVuZ3RoO2IrKylzd2l0Y2goeFtiXVswXSl7Y2FzZSBlOmFbYl09IisiK2VuY29kZVVSSSh4W2JdWzFdKTticmVhaztjYXNlIGQ6YVtiXT0iLSIreFtiXVsxXS5sZW5ndGg7YnJlYWs7Y2FzZSBmOmFbYl09Ij0iK3hbYl1bMV0ubGVuZ3RofXJldHVybiBhLmpvaW4oIlx0IikucmVwbGFjZSgvJTIwL2csIiAiKX0sYy5wcm90b3R5cGUuZGlmZl9mcm9tRGVsdGE9ZnVuY3Rpb24oeCxhKXtmb3IodmFyIGI9W10sYz0wLGc9MCxoPWEuc3BsaXQoL1x0L2cpLGk9MDtpPGgubGVuZ3RoO2krKyl7dmFyIGo9aFtpXS5zdWJzdHJpbmcoMSk7c3dpdGNoKGhbaV0uY2hhckF0KDApKXtjYXNlIisiOnRyeXtiW2MrK109W2UsZGVjb2RlVVJJKGopXX1jYXRjaCh4KXt0aHJvdyBuZXcgRXJyb3IoIklsbGVnYWwgZXNjYXBlIGluIGRpZmZfZnJvbURlbHRhOiAiK2opfWJyZWFrO2Nhc2UiLSI6Y2FzZSI9Ijp2YXIgaz1wYXJzZUludChqLDEwKTtpZihpc05hTihrKXx8MD5rKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBudW1iZXIgaW4gZGlmZl9mcm9tRGVsdGE6ICIraik7dmFyIGw9eC5zdWJzdHJpbmcoZyxnKz1rKTsiPSI9PWhbaV0uY2hhckF0KDApP2JbYysrXT1bZixsXTpiW2MrK109W2QsbF07YnJlYWs7ZGVmYXVsdDppZihoW2ldKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBkaWZmIG9wZXJhdGlvbiBpbiBkaWZmX2Zyb21EZWx0YTogIitoW2ldKX19aWYoZyE9eC5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJEZWx0YSBsZW5ndGggKCIrZysiKSBkb2VzIG5vdCBlcXVhbCBzb3VyY2UgdGV4dCBsZW5ndGggKCIreC5sZW5ndGgrIikuIik7cmV0dXJuIGJ9LGMucHJvdG90eXBlLm1hdGNoX21haW49ZnVuY3Rpb24oeCxhLGIpe2lmKG51bGw9PXh8fG51bGw9PWF8fG51bGw9PWIpdGhyb3cgbmV3IEVycm9yKCJOdWxsIGlucHV0LiAobWF0Y2hfbWFpbikiKTtyZXR1cm4gYj1NYXRoLm1heCgwLE1hdGgubWluKGIseC5sZW5ndGgpKSx4PT1hPzA6eC5sZW5ndGg/eC5zdWJzdHJpbmcoYixiK2EubGVuZ3RoKT09YT9iOnRoaXMubWF0Y2hfYml0YXBfKHgsYSxiKTotMX0sYy5wcm90b3R5cGUubWF0Y2hfYml0YXBfPWZ1bmN0aW9uKHgsYSxiKXtmdW5jdGlvbiBjKHgsYyl7dmFyIGQ9eC9hLmxlbmd0aCxmPU1hdGguYWJzKGItYyk7cmV0dXJuIGUuTWF0Y2hfRGlzdGFuY2U/ZCtmL2UuTWF0Y2hfRGlzdGFuY2U6Zj8xOmR9aWYoYS5sZW5ndGg+dGhpcy5NYXRjaF9NYXhCaXRzKXRocm93IG5ldyBFcnJvcigiUGF0dGVybiB0b28gbG9uZyBmb3IgdGhpcyBicm93c2VyLiIpO3ZhciBkPXRoaXMubWF0Y2hfYWxwaGFiZXRfKGEpLGU9dGhpcyxmPXRoaXMuTWF0Y2hfVGhyZXNob2xkLGc9eC5pbmRleE9mKGEsYik7LTEhPWcmJihmPU1hdGgubWluKGMoMCxnKSxmKSwtMSE9KGc9eC5sYXN0SW5kZXhPZihhLGIrYS5sZW5ndGgpKSYmKGY9TWF0aC5taW4oYygwLGcpLGYpKSk7dmFyIGg9MTw8YS5sZW5ndGgtMTtnPS0xO2Zvcih2YXIgaSxqLGssbD1hLmxlbmd0aCt4Lmxlbmd0aCxtPTA7bTxhLmxlbmd0aDttKyspe2ZvcihpPTAsaj1sO2o+aTspYyhtLGIraik8PWY/aT1qOmw9aixqPU1hdGguZmxvb3IoKGwtaSkvMitpKTtsPWo7dmFyIG49TWF0aC5tYXgoMSxiLWorMSksbz1NYXRoLm1pbihiK2oseC5sZW5ndGgpK2EubGVuZ3RoLHA9QXJyYXkobysyKTtwW28rMV09KDE8PG0pLTE7Zm9yKHZhciBxPW87cT49bjtxLS0pe3ZhciByPWRbeC5jaGFyQXQocS0xKV07aWYocFtxXT0wPT09bT8ocFtxKzFdPDwxfDEpJnI6KHBbcSsxXTw8MXwxKSZyfChrW3ErMV18a1txXSk8PDF8MXxrW3ErMV0scFtxXSZoKXt2YXIgcz1jKG0scS0xKTtpZihmPj1zKXtpZihmPXMsISgoZz1xLTEpPmIpKWJyZWFrO249TWF0aC5tYXgoMSwyKmItZyl9fX1pZihjKG0rMSxiKT5mKWJyZWFrO2s9cH1yZXR1cm4gZ30sYy5wcm90b3R5cGUubWF0Y2hfYWxwaGFiZXRfPWZ1bmN0aW9uKHgpe2Zvcih2YXIgYT17fSxiPTA7Yjx4Lmxlbmd0aDtiKyspYVt4LmNoYXJBdChiKV09MDtmb3IoYj0wO2I8eC5sZW5ndGg7YisrKWFbeC5jaGFyQXQoYildfD0xPDx4Lmxlbmd0aC1iLTE7cmV0dXJuIGF9LGMucHJvdG90eXBlLnBhdGNoX2FkZENvbnRleHRfPWZ1bmN0aW9uKHgsYSl7aWYoMCE9YS5sZW5ndGgpe2Zvcih2YXIgYj1hLnN1YnN0cmluZyh4LnN0YXJ0Mix4LnN0YXJ0Mit4Lmxlbmd0aDEpLGM9MDthLmluZGV4T2YoYikhPWEubGFzdEluZGV4T2YoYikmJmIubGVuZ3RoPHRoaXMuTWF0Y2hfTWF4Qml0cy10aGlzLlBhdGNoX01hcmdpbi10aGlzLlBhdGNoX01hcmdpbjspYys9dGhpcy5QYXRjaF9NYXJnaW4sYj1hLnN1YnN0cmluZyh4LnN0YXJ0Mi1jLHguc3RhcnQyK3gubGVuZ3RoMStjKTtjKz10aGlzLlBhdGNoX01hcmdpbjt2YXIgZD1hLnN1YnN0cmluZyh4LnN0YXJ0Mi1jLHguc3RhcnQyKTtkJiZ4LmRpZmZzLnVuc2hpZnQoW2YsZF0pO3ZhciBlPWEuc3Vic3RyaW5nKHguc3RhcnQyK3gubGVuZ3RoMSx4LnN0YXJ0Mit4Lmxlbmd0aDErYyk7ZSYmeC5kaWZmcy5wdXNoKFtmLGVdKSx4LnN0YXJ0MS09ZC5sZW5ndGgseC5zdGFydDItPWQubGVuZ3RoLHgubGVuZ3RoMSs9ZC5sZW5ndGgrZS5sZW5ndGgseC5sZW5ndGgyKz1kLmxlbmd0aCtlLmxlbmd0aH19LGMucHJvdG90eXBlLnBhdGNoX21ha2U9ZnVuY3Rpb24oeCxhLGIpe3ZhciBnLGg7aWYoInN0cmluZyI9PXR5cGVvZiB4JiYic3RyaW5nIj09dHlwZW9mIGEmJnZvaWQgMD09PWIpZz14LChoPXRoaXMuZGlmZl9tYWluKGcsYSwhMCkpLmxlbmd0aD4yJiYodGhpcy5kaWZmX2NsZWFudXBTZW1hbnRpYyhoKSx0aGlzLmRpZmZfY2xlYW51cEVmZmljaWVuY3koaCkpO2Vsc2UgaWYoeCYmIm9iamVjdCI9PXR5cGVvZiB4JiZ2b2lkIDA9PT1hJiZ2b2lkIDA9PT1iKWg9eCxnPXRoaXMuZGlmZl90ZXh0MShoKTtlbHNlIGlmKCJzdHJpbmciPT10eXBlb2YgeCYmYSYmIm9iamVjdCI9PXR5cGVvZiBhJiZ2b2lkIDA9PT1iKWc9eCxoPWE7ZWxzZXtpZigic3RyaW5nIiE9dHlwZW9mIHh8fCJzdHJpbmciIT10eXBlb2YgYXx8IWJ8fCJvYmplY3QiIT10eXBlb2YgYil0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gY2FsbCBmb3JtYXQgdG8gcGF0Y2hfbWFrZS4iKTtnPXgsaD1ifWlmKDA9PT1oLmxlbmd0aClyZXR1cm5bXTtmb3IodmFyIGk9W10saj1uZXcgYy5wYXRjaF9vYmosaz0wLGw9MCxtPTAsbj1nLG89ZyxwPTA7cDxoLmxlbmd0aDtwKyspe3ZhciBxPWhbcF1bMF0scj1oW3BdWzFdO3N3aXRjaChrfHxxPT09Znx8KGouc3RhcnQxPWwsai5zdGFydDI9bSkscSl7Y2FzZSBlOmouZGlmZnNbaysrXT1oW3BdLGoubGVuZ3RoMis9ci5sZW5ndGgsbz1vLnN1YnN0cmluZygwLG0pK3Irby5zdWJzdHJpbmcobSk7YnJlYWs7Y2FzZSBkOmoubGVuZ3RoMSs9ci5sZW5ndGgsai5kaWZmc1trKytdPWhbcF0sbz1vLnN1YnN0cmluZygwLG0pK28uc3Vic3RyaW5nKG0rci5sZW5ndGgpO2JyZWFrO2Nhc2UgZjpyLmxlbmd0aDw9Mip0aGlzLlBhdGNoX01hcmdpbiYmayYmaC5sZW5ndGghPXArMT8oai5kaWZmc1trKytdPWhbcF0sai5sZW5ndGgxKz1yLmxlbmd0aCxqLmxlbmd0aDIrPXIubGVuZ3RoKTpyLmxlbmd0aD49Mip0aGlzLlBhdGNoX01hcmdpbiYmayYmKHRoaXMucGF0Y2hfYWRkQ29udGV4dF8oaixuKSxpLnB1c2goaiksaj1uZXcgYy5wYXRjaF9vYmosaz0wLG49byxsPW0pfXEhPT1lJiYobCs9ci5sZW5ndGgpLHEhPT1kJiYobSs9ci5sZW5ndGgpfXJldHVybiBrJiYodGhpcy5wYXRjaF9hZGRDb250ZXh0XyhqLG4pLGkucHVzaChqKSksaX0sYy5wcm90b3R5cGUucGF0Y2hfZGVlcENvcHk9ZnVuY3Rpb24oeCl7Zm9yKHZhciBhPVtdLGI9MDtiPHgubGVuZ3RoO2IrKyl7dmFyIGQ9eFtiXSxlPW5ldyBjLnBhdGNoX29iajtlLmRpZmZzPVtdO2Zvcih2YXIgZj0wO2Y8ZC5kaWZmcy5sZW5ndGg7ZisrKWUuZGlmZnNbZl09ZC5kaWZmc1tmXS5zbGljZSgpO2Uuc3RhcnQxPWQuc3RhcnQxLGUuc3RhcnQyPWQuc3RhcnQyLGUubGVuZ3RoMT1kLmxlbmd0aDEsZS5sZW5ndGgyPWQubGVuZ3RoMixhW2JdPWV9cmV0dXJuIGF9LGMucHJvdG90eXBlLnBhdGNoX2FwcGx5PWZ1bmN0aW9uKHgsYSl7aWYoMD09eC5sZW5ndGgpcmV0dXJuW2EsW11dO3g9dGhpcy5wYXRjaF9kZWVwQ29weSh4KTt2YXIgYj10aGlzLnBhdGNoX2FkZFBhZGRpbmcoeCk7YT1iK2ErYix0aGlzLnBhdGNoX3NwbGl0TWF4KHgpO2Zvcih2YXIgYz0wLGc9W10saD0wO2g8eC5sZW5ndGg7aCsrKXt2YXIgaSxqLGs9eFtoXS5zdGFydDIrYyxsPXRoaXMuZGlmZl90ZXh0MSh4W2hdLmRpZmZzKSxtPS0xO2lmKGwubGVuZ3RoPnRoaXMuTWF0Y2hfTWF4Qml0cz8tMSE9KGk9dGhpcy5tYXRjaF9tYWluKGEsbC5zdWJzdHJpbmcoMCx0aGlzLk1hdGNoX01heEJpdHMpLGspKSYmKCgtMT09KG09dGhpcy5tYXRjaF9tYWluKGEsbC5zdWJzdHJpbmcobC5sZW5ndGgtdGhpcy5NYXRjaF9NYXhCaXRzKSxrK2wubGVuZ3RoLXRoaXMuTWF0Y2hfTWF4Qml0cykpfHxpPj1tKSYmKGk9LTEpKTppPXRoaXMubWF0Y2hfbWFpbihhLGwsayksLTE9PWkpZ1toXT0hMSxjLT14W2hdLmxlbmd0aDIteFtoXS5sZW5ndGgxO2Vsc2UgaWYoZ1toXT0hMCxjPWktayxsPT0oaj0tMT09bT9hLnN1YnN0cmluZyhpLGkrbC5sZW5ndGgpOmEuc3Vic3RyaW5nKGksbSt0aGlzLk1hdGNoX01heEJpdHMpKSlhPWEuc3Vic3RyaW5nKDAsaSkrdGhpcy5kaWZmX3RleHQyKHhbaF0uZGlmZnMpK2Euc3Vic3RyaW5nKGkrbC5sZW5ndGgpO2Vsc2V7dmFyIG49dGhpcy5kaWZmX21haW4obCxqLCExKTtpZihsLmxlbmd0aD50aGlzLk1hdGNoX01heEJpdHMmJnRoaXMuZGlmZl9sZXZlbnNodGVpbihuKS9sLmxlbmd0aD50aGlzLlBhdGNoX0RlbGV0ZVRocmVzaG9sZClnW2hdPSExO2Vsc2V7dGhpcy5kaWZmX2NsZWFudXBTZW1hbnRpY0xvc3NsZXNzKG4pO2Zvcih2YXIgbyxwPTAscT0wO3E8eFtoXS5kaWZmcy5sZW5ndGg7cSsrKXt2YXIgcj14W2hdLmRpZmZzW3FdO3JbMF0hPT1mJiYobz10aGlzLmRpZmZfeEluZGV4KG4scCkpLHJbMF09PT1lP2E9YS5zdWJzdHJpbmcoMCxpK28pK3JbMV0rYS5zdWJzdHJpbmcoaStvKTpyWzBdPT09ZCYmKGE9YS5zdWJzdHJpbmcoMCxpK28pK2Euc3Vic3RyaW5nKGkrdGhpcy5kaWZmX3hJbmRleChuLHArclsxXS5sZW5ndGgpKSksclswXSE9PWQmJihwKz1yWzFdLmxlbmd0aCl9fX19cmV0dXJuW2E9YS5zdWJzdHJpbmcoYi5sZW5ndGgsYS5sZW5ndGgtYi5sZW5ndGgpLGddfSxjLnByb3RvdHlwZS5wYXRjaF9hZGRQYWRkaW5nPWZ1bmN0aW9uKHgpe2Zvcih2YXIgYT10aGlzLlBhdGNoX01hcmdpbixiPSIiLGM9MTthPj1jO2MrKyliKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGMpO2ZvcihjPTA7Yzx4Lmxlbmd0aDtjKyspeFtjXS5zdGFydDErPWEseFtjXS5zdGFydDIrPWE7dmFyIGQ9eFswXSxlPWQuZGlmZnM7aWYoMD09ZS5sZW5ndGh8fGVbMF1bMF0hPWYpZS51bnNoaWZ0KFtmLGJdKSxkLnN0YXJ0MS09YSxkLnN0YXJ0Mi09YSxkLmxlbmd0aDErPWEsZC5sZW5ndGgyKz1hO2Vsc2UgaWYoYT5lWzBdWzFdLmxlbmd0aCl7dmFyIGc9YS1lWzBdWzFdLmxlbmd0aDtlWzBdWzFdPWIuc3Vic3RyaW5nKGVbMF1bMV0ubGVuZ3RoKStlWzBdWzFdLGQuc3RhcnQxLT1nLGQuc3RhcnQyLT1nLGQubGVuZ3RoMSs9ZyxkLmxlbmd0aDIrPWd9aWYoMD09KGU9KGQ9eFt4Lmxlbmd0aC0xXSkuZGlmZnMpLmxlbmd0aHx8ZVtlLmxlbmd0aC0xXVswXSE9ZillLnB1c2goW2YsYl0pLGQubGVuZ3RoMSs9YSxkLmxlbmd0aDIrPWE7ZWxzZSBpZihhPmVbZS5sZW5ndGgtMV1bMV0ubGVuZ3RoKXtnPWEtZVtlLmxlbmd0aC0xXVsxXS5sZW5ndGg7ZVtlLmxlbmd0aC0xXVsxXSs9Yi5zdWJzdHJpbmcoMCxnKSxkLmxlbmd0aDErPWcsZC5sZW5ndGgyKz1nfXJldHVybiBifSxjLnByb3RvdHlwZS5wYXRjaF9zcGxpdE1heD1mdW5jdGlvbih4KXtmb3IodmFyIGE9dGhpcy5NYXRjaF9NYXhCaXRzLGI9MDtiPHgubGVuZ3RoO2IrKylpZih4W2JdLmxlbmd0aDE+YSl7dmFyIGc9eFtiXTt4LnNwbGljZShiLS0sMSk7Zm9yKHZhciBoPWcuc3RhcnQxLGk9Zy5zdGFydDIsaj0iIjswIT09Zy5kaWZmcy5sZW5ndGg7KXt2YXIgaz1uZXcgYy5wYXRjaF9vYmosbD0hMDtmb3Ioay5zdGFydDE9aC1qLmxlbmd0aCxrLnN0YXJ0Mj1pLWoubGVuZ3RoLCIiIT09aiYmKGsubGVuZ3RoMT1rLmxlbmd0aDI9ai5sZW5ndGgsay5kaWZmcy5wdXNoKFtmLGpdKSk7MCE9PWcuZGlmZnMubGVuZ3RoJiZrLmxlbmd0aDE8YS10aGlzLlBhdGNoX01hcmdpbjspe3ZhciBtPWcuZGlmZnNbMF1bMF0sbj1nLmRpZmZzWzBdWzFdO209PT1lPyhrLmxlbmd0aDIrPW4ubGVuZ3RoLGkrPW4ubGVuZ3RoLGsuZGlmZnMucHVzaChnLmRpZmZzLnNoaWZ0KCkpLGw9ITEpOm09PT1kJiYxPT1rLmRpZmZzLmxlbmd0aCYmay5kaWZmc1swXVswXT09ZiYmbi5sZW5ndGg+MiphPyhrLmxlbmd0aDErPW4ubGVuZ3RoLGgrPW4ubGVuZ3RoLGw9ITEsay5kaWZmcy5wdXNoKFttLG5dKSxnLmRpZmZzLnNoaWZ0KCkpOihuPW4uc3Vic3RyaW5nKDAsYS1rLmxlbmd0aDEtdGhpcy5QYXRjaF9NYXJnaW4pLGsubGVuZ3RoMSs9bi5sZW5ndGgsaCs9bi5sZW5ndGgsbT09PWY/KGsubGVuZ3RoMis9bi5sZW5ndGgsaSs9bi5sZW5ndGgpOmw9ITEsay5kaWZmcy5wdXNoKFttLG5dKSxuPT1nLmRpZmZzWzBdWzFdP2cuZGlmZnMuc2hpZnQoKTpnLmRpZmZzWzBdWzFdPWcuZGlmZnNbMF1bMV0uc3Vic3RyaW5nKG4ubGVuZ3RoKSl9aj0oaj10aGlzLmRpZmZfdGV4dDIoay5kaWZmcykpLnN1YnN0cmluZyhqLmxlbmd0aC10aGlzLlBhdGNoX01hcmdpbik7dmFyIG89dGhpcy5kaWZmX3RleHQxKGcuZGlmZnMpLnN1YnN0cmluZygwLHRoaXMuUGF0Y2hfTWFyZ2luKTsiIiE9PW8mJihrLmxlbmd0aDErPW8ubGVuZ3RoLGsubGVuZ3RoMis9by5sZW5ndGgsMCE9PWsuZGlmZnMubGVuZ3RoJiZrLmRpZmZzW2suZGlmZnMubGVuZ3RoLTFdWzBdPT09Zj9rLmRpZmZzW2suZGlmZnMubGVuZ3RoLTFdWzFdKz1vOmsuZGlmZnMucHVzaChbZixvXSkpLGx8fHguc3BsaWNlKCsrYiwwLGspfX19LGMucHJvdG90eXBlLnBhdGNoX3RvVGV4dD1mdW5jdGlvbih4KXtmb3IodmFyIGE9W10sYj0wO2I8eC5sZW5ndGg7YisrKWFbYl09eFtiXTtyZXR1cm4gYS5qb2luKCIiKX0sYy5wcm90b3R5cGUucGF0Y2hfZnJvbVRleHQ9ZnVuY3Rpb24oeCl7dmFyIGE9W107aWYoIXgpcmV0dXJuIGE7Zm9yKHZhciBiPXguc3BsaXQoIlxuIiksZz0wLGg9L15AQCAtKFxkKyksPyhcZCopIFwrKFxkKyksPyhcZCopIEBAJC87ZzxiLmxlbmd0aDspe3ZhciBpPWJbZ10ubWF0Y2goaCk7aWYoIWkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHBhdGNoIHN0cmluZzogIitiW2ddKTt2YXIgaj1uZXcgYy5wYXRjaF9vYmo7Zm9yKGEucHVzaChqKSxqLnN0YXJ0MT1wYXJzZUludChpWzFdLDEwKSwiIj09PWlbMl0/KGouc3RhcnQxLS0sai5sZW5ndGgxPTEpOiIwIj09aVsyXT9qLmxlbmd0aDE9MDooai5zdGFydDEtLSxqLmxlbmd0aDE9cGFyc2VJbnQoaVsyXSwxMCkpLGouc3RhcnQyPXBhcnNlSW50KGlbM10sMTApLCIiPT09aVs0XT8oai5zdGFydDItLSxqLmxlbmd0aDI9MSk6IjAiPT1pWzRdP2oubGVuZ3RoMj0wOihqLnN0YXJ0Mi0tLGoubGVuZ3RoMj1wYXJzZUludChpWzRdLDEwKSksZysrO2c8Yi5sZW5ndGg7KXt2YXIgaz1iW2ddLmNoYXJBdCgwKTt0cnl7dmFyIGw9ZGVjb2RlVVJJKGJbZ10uc3Vic3RyaW5nKDEpKX1jYXRjaCh4KXt0aHJvdyBuZXcgRXJyb3IoIklsbGVnYWwgZXNjYXBlIGluIHBhdGNoX2Zyb21UZXh0OiAiK2wpfWlmKCItIj09aylqLmRpZmZzLnB1c2goW2QsbF0pO2Vsc2UgaWYoIisiPT1rKWouZGlmZnMucHVzaChbZSxsXSk7ZWxzZSBpZigiICI9PWspai5kaWZmcy5wdXNoKFtmLGxdKTtlbHNle2lmKCJAIj09aylicmVhaztpZigiIiE9PWspdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHBhdGNoIG1vZGUgIicraysnIiBpbjogJytsKX1nKyt9fXJldHVybiBhfSxjLnBhdGNoX29iaj1mdW5jdGlvbigpe3RoaXMuZGlmZnM9W10sdGhpcy5zdGFydDE9bnVsbCx0aGlzLnN0YXJ0Mj1udWxsLHRoaXMubGVuZ3RoMT0wLHRoaXMubGVuZ3RoMj0wfSxjLnBhdGNoX29iai5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtmb3IodmFyIHgsYT1bIkBAIC0iKygwPT09dGhpcy5sZW5ndGgxP3RoaXMuc3RhcnQxKyIsMCI6MT09dGhpcy5sZW5ndGgxP3RoaXMuc3RhcnQxKzE6dGhpcy5zdGFydDErMSsiLCIrdGhpcy5sZW5ndGgxKSsiICsiKygwPT09dGhpcy5sZW5ndGgyP3RoaXMuc3RhcnQyKyIsMCI6MT09dGhpcy5sZW5ndGgyP3RoaXMuc3RhcnQyKzE6dGhpcy5zdGFydDIrMSsiLCIrdGhpcy5sZW5ndGgyKSsiIEBAXG4iXSxiPTA7Yjx0aGlzLmRpZmZzLmxlbmd0aDtiKyspe3N3aXRjaCh0aGlzLmRpZmZzW2JdWzBdKXtjYXNlIGU6eD0iKyI7YnJlYWs7Y2FzZSBkOng9Ii0iO2JyZWFrO2Nhc2UgZjp4PSIgIn1hW2IrMV09eCtlbmNvZGVVUkkodGhpcy5kaWZmc1tiXVsxXSkrIlxuIn1yZXR1cm4gYS5qb2luKCIiKS5yZXBsYWNlKC8lMjAvZywiICIpfSx0aGlzLmRpZmZfbWF0Y2hfcGF0Y2g9Yyx0aGlzLkRJRkZfREVMRVRFPWQsdGhpcy5ESUZGX0lOU0VSVD1lLHRoaXMuRElGRl9FUVVBTD1mfSx7fV0sMzpbZnVuY3Rpb24oeCxhLGIpe3ZhciBjPXgoIi4uL3BpcGUiKS5QaXBlLGQ9ZnVuY3Rpb24oKXt9O2QucHJvdG90eXBlLnNldFJlc3VsdD1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5yZXN1bHQ9eCx0aGlzLmhhc1Jlc3VsdD0hMCx0aGlzfSxkLnByb3RvdHlwZS5leGl0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXhpdGluZz0hMCx0aGlzfSxkLnByb3RvdHlwZS5zd2l0Y2hUbz1mdW5jdGlvbih4LGEpe3JldHVybiJzdHJpbmciPT10eXBlb2YgeHx8eCBpbnN0YW5jZW9mIGM/dGhpcy5uZXh0UGlwZT14Oih0aGlzLm5leHQ9eCxhJiYodGhpcy5uZXh0UGlwZT1hKSksdGhpc30sZC5wcm90b3R5cGUucHVzaD1mdW5jdGlvbih4LGEpe3JldHVybiB4LnBhcmVudD10aGlzLHZvaWQgMCE9PWEmJih4LmNoaWxkTmFtZT1hKSx4LnJvb3Q9dGhpcy5yb290fHx0aGlzLHgub3B0aW9ucz14Lm9wdGlvbnN8fHRoaXMub3B0aW9ucyx0aGlzLmNoaWxkcmVuPyh0aGlzLmNoaWxkcmVuW3RoaXMuY2hpbGRyZW4ubGVuZ3RoLTFdLm5leHQ9eCx0aGlzLmNoaWxkcmVuLnB1c2goeCkpOih0aGlzLmNoaWxkcmVuPVt4XSx0aGlzLm5leHRBZnRlckNoaWxkcmVuPXRoaXMubmV4dHx8bnVsbCx0aGlzLm5leHQ9eCkseC5uZXh0PXRoaXMsdGhpc30sYi5Db250ZXh0PWR9LHsiLi4vcGlwZSI6MTd9XSw0OltmdW5jdGlvbih4LGEsYil7dmFyIGM9eCgiLi9jb250ZXh0IikuQ29udGV4dCxkPWZ1bmN0aW9uKHgsYSl7dGhpcy5sZWZ0PXgsdGhpcy5yaWdodD1hLHRoaXMucGlwZT0iZGlmZiJ9O2QucHJvdG90eXBlPW5ldyBjLGIuRGlmZkNvbnRleHQ9ZH0seyIuL2NvbnRleHQiOjN9XSw1OltmdW5jdGlvbih4LGEsYil7dmFyIGM9eCgiLi9jb250ZXh0IikuQ29udGV4dCxkPWZ1bmN0aW9uKHgsYSl7dGhpcy5sZWZ0PXgsdGhpcy5kZWx0YT1hLHRoaXMucGlwZT0icGF0Y2gifTtkLnByb3RvdHlwZT1uZXcgYyxiLlBhdGNoQ29udGV4dD1kfSx7Ii4vY29udGV4dCI6M31dLDY6W2Z1bmN0aW9uKHgsYSxiKXt2YXIgYz14KCIuL2NvbnRleHQiKS5Db250ZXh0LGQ9ZnVuY3Rpb24oeCl7dGhpcy5kZWx0YT14LHRoaXMucGlwZT0icmV2ZXJzZSJ9O2QucHJvdG90eXBlPW5ldyBjLGIuUmV2ZXJzZUNvbnRleHQ9ZH0seyIuL2NvbnRleHQiOjN9XSw3OltmdW5jdGlvbih4LGEsYil7YS5leHBvcnRzPWZ1bmN0aW9uKHgsYSl7dmFyIGI7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBhJiYoYj0vXihcZHs0fSktKFxkezJ9KS0oXGR7Mn0pVChcZHsyfSk6KFxkezJ9KTooXGR7Mn0pKD86XC4oXGQqKSk/KFp8KFsrXC1dKShcZHsyfSk6KFxkezJ9KSkkLy5leGVjKGEpKT9uZXcgRGF0ZShEYXRlLlVUQygrYlsxXSwrYlsyXS0xLCtiWzNdLCtiWzRdLCtiWzVdLCtiWzZdLCsoYls3XXx8MCkpKTphfX0se31dLDg6W2Z1bmN0aW9uKHgsYSxiKXt2YXIgYz14KCIuL3Byb2Nlc3NvciIpLlByb2Nlc3NvcixkPXgoIi4vcGlwZSIpLlBpcGUsZT14KCIuL2NvbnRleHRzL2RpZmYiKS5EaWZmQ29udGV4dCxmPXgoIi4vY29udGV4dHMvcGF0Y2giKS5QYXRjaENvbnRleHQsZz14KCIuL2NvbnRleHRzL3JldmVyc2UiKS5SZXZlcnNlQ29udGV4dCxoPXgoIi4vZmlsdGVycy90cml2aWFsIiksaT14KCIuL2ZpbHRlcnMvbmVzdGVkIiksaj14KCIuL2ZpbHRlcnMvYXJyYXlzIiksaz14KCIuL2ZpbHRlcnMvZGF0ZXMiKSxsPXgoIi4vZmlsdGVycy90ZXh0cyIpLG09ZnVuY3Rpb24oeCl7dGhpcy5wcm9jZXNzb3I9bmV3IGMoeCksdGhpcy5wcm9jZXNzb3IucGlwZShuZXcgZCgiZGlmZiIpLmFwcGVuZChpLmNvbGxlY3RDaGlsZHJlbkRpZmZGaWx0ZXIsaC5kaWZmRmlsdGVyLGsuZGlmZkZpbHRlcixsLmRpZmZGaWx0ZXIsaS5vYmplY3RzRGlmZkZpbHRlcixqLmRpZmZGaWx0ZXIpLnNob3VsZEhhdmVSZXN1bHQoKSksdGhpcy5wcm9jZXNzb3IucGlwZShuZXcgZCgicGF0Y2giKS5hcHBlbmQoaS5jb2xsZWN0Q2hpbGRyZW5QYXRjaEZpbHRlcixqLmNvbGxlY3RDaGlsZHJlblBhdGNoRmlsdGVyLGgucGF0Y2hGaWx0ZXIsbC5wYXRjaEZpbHRlcixpLnBhdGNoRmlsdGVyLGoucGF0Y2hGaWx0ZXIpLnNob3VsZEhhdmVSZXN1bHQoKSksdGhpcy5wcm9jZXNzb3IucGlwZShuZXcgZCgicmV2ZXJzZSIpLmFwcGVuZChpLmNvbGxlY3RDaGlsZHJlblJldmVyc2VGaWx0ZXIsai5jb2xsZWN0Q2hpbGRyZW5SZXZlcnNlRmlsdGVyLGgucmV2ZXJzZUZpbHRlcixsLnJldmVyc2VGaWx0ZXIsaS5yZXZlcnNlRmlsdGVyLGoucmV2ZXJzZUZpbHRlcikuc2hvdWxkSGF2ZVJlc3VsdCgpKX07bS5wcm90b3R5cGUub3B0aW9ucz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnByb2Nlc3Nvci5vcHRpb25zLmFwcGx5KHRoaXMucHJvY2Vzc29yLGFyZ3VtZW50cyl9LG0ucHJvdG90eXBlLmRpZmY9ZnVuY3Rpb24oeCxhKXtyZXR1cm4gdGhpcy5wcm9jZXNzb3IucHJvY2VzcyhuZXcgZSh4LGEpKX0sbS5wcm90b3R5cGUucGF0Y2g9ZnVuY3Rpb24oeCxhKXtyZXR1cm4gdGhpcy5wcm9jZXNzb3IucHJvY2VzcyhuZXcgZih4LGEpKX0sbS5wcm90b3R5cGUucmV2ZXJzZT1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5wcm9jZXNzb3IucHJvY2VzcyhuZXcgZyh4KSl9LG0ucHJvdG90eXBlLnVucGF0Y2g9ZnVuY3Rpb24oeCxhKXtyZXR1cm4gdGhpcy5wYXRjaCh4LHRoaXMucmV2ZXJzZShhKSl9LGIuRGlmZlBhdGNoZXI9bX0seyIuL2NvbnRleHRzL2RpZmYiOjQsIi4vY29udGV4dHMvcGF0Y2giOjUsIi4vY29udGV4dHMvcmV2ZXJzZSI6NiwiLi9maWx0ZXJzL2FycmF5cyI6MTAsIi4vZmlsdGVycy9kYXRlcyI6MTEsIi4vZmlsdGVycy9uZXN0ZWQiOjEzLCIuL2ZpbHRlcnMvdGV4dHMiOjE0LCIuL2ZpbHRlcnMvdHJpdmlhbCI6MTUsIi4vcGlwZSI6MTcsIi4vcHJvY2Vzc29yIjoxOH1dLDk6W2Z1bmN0aW9uKHgsYSxiKXtiLmlzQnJvd3Nlcj0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvd30se31dLDEwOltmdW5jdGlvbih4LGEsYil7ZnVuY3Rpb24gYyh4LGEsYixjKXtmb3IodmFyIGQ9MDtiPmQ7ZCsrKWZvcih2YXIgZT14W2RdLGY9MDtjPmY7ZisrKXtpZihlPT09YVtmXSlyZXR1cm4hMH19ZnVuY3Rpb24gZCh4LGEsYixjLGQpe3ZhciBlPXhbYl0sZj1hW2NdO2lmKGU9PT1mKXJldHVybiEwO2lmKCJvYmplY3QiIT10eXBlb2YgZXx8Im9iamVjdCIhPXR5cGVvZiBmKXJldHVybiExO3ZhciBnLGgsaT1kLm9iamVjdEhhc2g7cmV0dXJuIGk/KCJudW1iZXIiPT10eXBlb2YgYj8oZC5oYXNoQ2FjaGUxPWQuaGFzaENhY2hlMXx8W10sdm9pZCAwPT09KGc9ZC5oYXNoQ2FjaGUxW2JdKSYmKGQuaGFzaENhY2hlMVtiXT1nPWkoZSxiKSkpOmc9aShlKSx2b2lkIDAhPT1nJiYoIm51bWJlciI9PXR5cGVvZiBjPyhkLmhhc2hDYWNoZTI9ZC5oYXNoQ2FjaGUyfHxbXSx2b2lkIDA9PT0oaD1kLmhhc2hDYWNoZTJbY10pJiYoZC5oYXNoQ2FjaGUyW2NdPWg9aShmLGMpKSk6aD1pKGYpLHZvaWQgMCE9PWgmJmc9PT1oKSk6ZC5tYXRjaEJ5UG9zaXRpb24mJmI9PT1jfXZhciBlPXgoIi4uL2NvbnRleHRzL2RpZmYiKS5EaWZmQ29udGV4dCxmPXgoIi4uL2NvbnRleHRzL3BhdGNoIikuUGF0Y2hDb250ZXh0LGc9eCgiLi4vY29udGV4dHMvcmV2ZXJzZSIpLlJldmVyc2VDb250ZXh0LGg9eCgiLi9sY3MiKSxpPTMsaj0iZnVuY3Rpb24iPT10eXBlb2YgQXJyYXkuaXNBcnJheT9BcnJheS5pc0FycmF5OmZ1bmN0aW9uKHgpe3JldHVybiB4IGluc3RhbmNlb2YgQXJyYXl9LGs9ImZ1bmN0aW9uIj09dHlwZW9mIEFycmF5LnByb3RvdHlwZS5pbmRleE9mP2Z1bmN0aW9uKHgsYSl7cmV0dXJuIHguaW5kZXhPZihhKX06ZnVuY3Rpb24oeCxhKXtmb3IodmFyIGI9eC5sZW5ndGgsYz0wO2I+YztjKyspaWYoeFtjXT09PWEpcmV0dXJuIGM7cmV0dXJuLTF9LGw9ZnVuY3Rpb24oeCl7aWYoeC5sZWZ0SXNBcnJheSl7dmFyIGEsYixmLGcsaixsPXtvYmplY3RIYXNoOngub3B0aW9ucyYmeC5vcHRpb25zLm9iamVjdEhhc2gsbWF0Y2hCeVBvc2l0aW9uOngub3B0aW9ucyYmeC5vcHRpb25zLm1hdGNoQnlQb3NpdGlvbn0sbT0wLG49MCxvPXgubGVmdCxwPXgucmlnaHQscT1vLmxlbmd0aCxyPXAubGVuZ3RoO2ZvcihxPjAmJnI+MCYmIWwub2JqZWN0SGFzaCYmImJvb2xlYW4iIT10eXBlb2YgbC5tYXRjaEJ5UG9zaXRpb24mJihsLm1hdGNoQnlQb3NpdGlvbj0hYyhvLHAscSxyKSk7cT5tJiZyPm0mJmQobyxwLG0sbSxsKTspYT1tLGc9bmV3IGUoeC5sZWZ0W2FdLHgucmlnaHRbYV0pLHgucHVzaChnLGEpLG0rKztmb3IoO3E+bittJiZyPm4rbSYmZChvLHAscS0xLW4sci0xLW4sbCk7KWI9cS0xLW4sZj1yLTEtbixnPW5ldyBlKHgubGVmdFtiXSx4LnJpZ2h0W2ZdKSx4LnB1c2goZyxmKSxuKys7aWYobStuPT09cSl7aWYocT09PXIpcmV0dXJuIHZvaWQgeC5zZXRSZXN1bHQodm9pZCAwKS5leGl0KCk7Zm9yKGo9anx8e190OiJhIn0sYT1tO3Itbj5hO2ErKylqW2FdPVtwW2FdXTtyZXR1cm4gdm9pZCB4LnNldFJlc3VsdChqKS5leGl0KCl9aWYobStuPT09cil7Zm9yKGo9anx8e190OiJhIn0sYT1tO3Etbj5hO2ErKylqWyJfIithXT1bb1thXSwwLDBdO3JldHVybiB2b2lkIHguc2V0UmVzdWx0KGopLmV4aXQoKX1kZWxldGUgbC5oYXNoQ2FjaGUxLGRlbGV0ZSBsLmhhc2hDYWNoZTI7dmFyIHM9by5zbGljZShtLHEtbiksdD1wLnNsaWNlKG0sci1uKSx1PWguZ2V0KHMsdCxkLGwpLHY9W107Zm9yKGo9anx8e190OiJhIn0sYT1tO3Etbj5hO2ErKylrKHUuaW5kaWNlczEsYS1tKTwwJiYoalsiXyIrYV09W29bYV0sMCwwXSx2LnB1c2goYSkpO3ZhciB3PSEwO3gub3B0aW9ucyYmeC5vcHRpb25zLmFycmF5cyYmITE9PT14Lm9wdGlvbnMuYXJyYXlzLmRldGVjdE1vdmUmJih3PSExKTt2YXIgeT0hMTt4Lm9wdGlvbnMmJngub3B0aW9ucy5hcnJheXMmJngub3B0aW9ucy5hcnJheXMuaW5jbHVkZVZhbHVlT25Nb3ZlJiYoeT0hMCk7dmFyIHo9di5sZW5ndGg7Zm9yKGE9bTtyLW4+YTthKyspe3ZhciBBPWsodS5pbmRpY2VzMixhLW0pO2lmKDA+QSl7dmFyIEI9ITE7aWYodyYmej4wKWZvcih2YXIgQz0wO3o+QztDKyspaWYoZChzLHQsKGI9dltDXSktbSxhLW0sbCkpe2pbIl8iK2JdLnNwbGljZSgxLDIsYSxpKSx5fHwoalsiXyIrYl1bMF09IiIpLGY9YSxnPW5ldyBlKHgubGVmdFtiXSx4LnJpZ2h0W2ZdKSx4LnB1c2goZyxmKSx2LnNwbGljZShDLDEpLEI9ITA7YnJlYWt9Qnx8KGpbYV09W3BbYV1dKX1lbHNlIGI9dS5pbmRpY2VzMVtBXSttLGY9dS5pbmRpY2VzMltBXSttLGc9bmV3IGUoeC5sZWZ0W2JdLHgucmlnaHRbZl0pLHgucHVzaChnLGYpfXguc2V0UmVzdWx0KGopLmV4aXQoKX19O2wuZmlsdGVyTmFtZT0iYXJyYXlzIjt2YXIgbT17bnVtZXJpY2FsbHk6ZnVuY3Rpb24oeCxhKXtyZXR1cm4geC1hfSxudW1lcmljYWxseUJ5OmZ1bmN0aW9uKHgpe3JldHVybiBmdW5jdGlvbihhLGIpe3JldHVybiBhW3hdLWJbeF19fX0sbj1mdW5jdGlvbih4KXtpZih4Lm5lc3RlZCYmImEiPT09eC5kZWx0YS5fdCl7dmFyIGEsYixjPXguZGVsdGEsZD14LmxlZnQsZT1bXSxnPVtdLGg9W107Zm9yKGEgaW4gYylpZigiX3QiIT09YSlpZigiXyI9PT1hWzBdKXtpZigwIT09Y1thXVsyXSYmY1thXVsyXSE9PWkpdGhyb3cgbmV3IEVycm9yKCJvbmx5IHJlbW92YWwgb3IgbW92ZSBjYW4gYmUgYXBwbGllZCBhdCBvcmlnaW5hbCBhcnJheSBpbmRpY2VzLCBpbnZhbGlkIGRpZmYgdHlwZTogIitjW2FdWzJdKTtlLnB1c2gocGFyc2VJbnQoYS5zbGljZSgxKSwxMCkpfWVsc2UgMT09PWNbYV0ubGVuZ3RoP2cucHVzaCh7aW5kZXg6cGFyc2VJbnQoYSwxMCksdmFsdWU6Y1thXVswXX0pOmgucHVzaCh7aW5kZXg6cGFyc2VJbnQoYSwxMCksZGVsdGE6Y1thXX0pO2ZvcihhPShlPWUuc29ydChtLm51bWVyaWNhbGx5KSkubGVuZ3RoLTE7YT49MDthLS0pe3ZhciBqPWNbIl8iKyhiPWVbYV0pXSxrPWQuc3BsaWNlKGIsMSlbMF07alsyXT09PWkmJmcucHVzaCh7aW5kZXg6alsxXSx2YWx1ZTprfSl9dmFyIGw9KGc9Zy5zb3J0KG0ubnVtZXJpY2FsbHlCeSgiaW5kZXgiKSkpLmxlbmd0aDtmb3IoYT0wO2w+YTthKyspe3ZhciBuPWdbYV07ZC5zcGxpY2Uobi5pbmRleCwwLG4udmFsdWUpfXZhciBvLHA9aC5sZW5ndGg7aWYocD4wKWZvcihhPTA7cD5hO2ErKyl7dmFyIHE9aFthXTtvPW5ldyBmKHgubGVmdFtxLmluZGV4XSxxLmRlbHRhKSx4LnB1c2gobyxxLmluZGV4KX1yZXR1cm4geC5jaGlsZHJlbj92b2lkIHguZXhpdCgpOnZvaWQgeC5zZXRSZXN1bHQoeC5sZWZ0KS5leGl0KCl9fTtuLmZpbHRlck5hbWU9ImFycmF5cyI7dmFyIG89ZnVuY3Rpb24oeCl7aWYoeCYmeC5jaGlsZHJlbiYmImEiPT09eC5kZWx0YS5fdCl7Zm9yKHZhciBhLGI9eC5jaGlsZHJlbi5sZW5ndGgsYz0wO2I+YztjKyspYT14LmNoaWxkcmVuW2NdLHgubGVmdFthLmNoaWxkTmFtZV09YS5yZXN1bHQ7eC5zZXRSZXN1bHQoeC5sZWZ0KS5leGl0KCl9fTtvLmZpbHRlck5hbWU9ImFycmF5c0NvbGxlY3RDaGlsZHJlbiI7dmFyIHA9ZnVuY3Rpb24oeCl7aWYoeC5uZXN0ZWQpe2lmKCJhIj09PXguZGVsdGEuX3Qpe3ZhciBhLGI7Zm9yKGEgaW4geC5kZWx0YSkiX3QiIT09YSYmKGI9bmV3IGcoeC5kZWx0YVthXSkseC5wdXNoKGIsYSkpO3guZXhpdCgpfX1lbHNlIHguZGVsdGFbMl09PT1pJiYoeC5uZXdOYW1lPSJfIit4LmRlbHRhWzFdLHguc2V0UmVzdWx0KFt4LmRlbHRhWzBdLHBhcnNlSW50KHguY2hpbGROYW1lLnN1YnN0cigxKSwxMCksaV0pLmV4aXQoKSl9O3AuZmlsdGVyTmFtZT0iYXJyYXlzIjt2YXIgcT1mdW5jdGlvbih4LGEsYil7aWYoInN0cmluZyI9PXR5cGVvZiBhJiYiXyI9PT1hWzBdKXJldHVybiBwYXJzZUludChhLnN1YnN0cigxKSwxMCk7aWYoaihiKSYmMD09PWJbMl0pcmV0dXJuIl8iK2E7dmFyIGM9K2E7Zm9yKHZhciBkIGluIHgpe3ZhciBlPXhbZF07aWYoaihlKSlpZihlWzJdPT09aSl7dmFyIGY9cGFyc2VJbnQoZC5zdWJzdHIoMSksMTApLGc9ZVsxXTtpZihnPT09K2EpcmV0dXJuIGY7Yz49ZiYmZz5jP2MrKzpmPj1jJiZjPmcmJmMtLX1lbHNlIGlmKDA9PT1lWzJdKXtjPj1wYXJzZUludChkLnN1YnN0cigxKSwxMCkmJmMrK31lbHNlIDE9PT1lLmxlbmd0aCYmYz49ZCYmYy0tfXJldHVybiBjfSxyPWZ1bmN0aW9uKHgpe2lmKHgmJnguY2hpbGRyZW4mJiJhIj09PXguZGVsdGEuX3Qpe2Zvcih2YXIgYSxiPXguY2hpbGRyZW4ubGVuZ3RoLGM9e190OiJhIn0sZD0wO2I+ZDtkKyspe3ZhciBlPShhPXguY2hpbGRyZW5bZF0pLm5ld05hbWU7dm9pZCAwPT09ZSYmKGU9cSh4LmRlbHRhLGEuY2hpbGROYW1lLGEucmVzdWx0KSksY1tlXSE9PWEucmVzdWx0JiYoY1tlXT1hLnJlc3VsdCl9eC5zZXRSZXN1bHQoYykuZXhpdCgpfX07ci5maWx0ZXJOYW1lPSJhcnJheXNDb2xsZWN0Q2hpbGRyZW4iLGIuZGlmZkZpbHRlcj1sLGIucGF0Y2hGaWx0ZXI9bixiLmNvbGxlY3RDaGlsZHJlblBhdGNoRmlsdGVyPW8sYi5yZXZlcnNlRmlsdGVyPXAsYi5jb2xsZWN0Q2hpbGRyZW5SZXZlcnNlRmlsdGVyPXJ9LHsiLi4vY29udGV4dHMvZGlmZiI6NCwiLi4vY29udGV4dHMvcGF0Y2giOjUsIi4uL2NvbnRleHRzL3JldmVyc2UiOjYsIi4vbGNzIjoxMn1dLDExOltmdW5jdGlvbih4LGEsYil7dmFyIGM9ZnVuY3Rpb24oeCl7eC5sZWZ0IGluc3RhbmNlb2YgRGF0ZT8oeC5yaWdodCBpbnN0YW5jZW9mIERhdGU/eC5sZWZ0LmdldFRpbWUoKSE9PXgucmlnaHQuZ2V0VGltZSgpP3guc2V0UmVzdWx0KFt4LmxlZnQseC5yaWdodF0pOnguc2V0UmVzdWx0KHZvaWQgMCk6eC5zZXRSZXN1bHQoW3gubGVmdCx4LnJpZ2h0XSkseC5leGl0KCkpOngucmlnaHQgaW5zdGFuY2VvZiBEYXRlJiZ4LnNldFJlc3VsdChbeC5sZWZ0LHgucmlnaHRdKS5leGl0KCl9O2MuZmlsdGVyTmFtZT0iZGF0ZXMiLGIuZGlmZkZpbHRlcj1jfSx7fV0sMTI6W2Z1bmN0aW9uKHgsYSxiKXt2YXIgYz1mdW5jdGlvbih4LGEsYixjKXtyZXR1cm4geFtiXT09PWFbY119LGQ9ZnVuY3Rpb24oeCxhLGIsYyl7dmFyIGQsZSxmPXgubGVuZ3RoLGc9YS5sZW5ndGgsaD1bZisxXTtmb3IoZD0wO2YrMT5kO2QrKylmb3IoaFtkXT1bZysxXSxlPTA7ZysxPmU7ZSsrKWhbZF1bZV09MDtmb3IoaC5tYXRjaD1iLGQ9MTtmKzE+ZDtkKyspZm9yKGU9MTtnKzE+ZTtlKyspYih4LGEsZC0xLGUtMSxjKT9oW2RdW2VdPWhbZC0xXVtlLTFdKzE6aFtkXVtlXT1NYXRoLm1heChoW2QtMV1bZV0saFtkXVtlLTFdKTtyZXR1cm4gaH0sZT1mdW5jdGlvbih4LGEsYixjLGQsZil7aWYoMD09PWN8fDA9PT1kKXJldHVybntzZXF1ZW5jZTpbXSxpbmRpY2VzMTpbXSxpbmRpY2VzMjpbXX07aWYoeC5tYXRjaChhLGIsYy0xLGQtMSxmKSl7dmFyIGc9ZSh4LGEsYixjLTEsZC0xLGYpO3JldHVybiBnLnNlcXVlbmNlLnB1c2goYVtjLTFdKSxnLmluZGljZXMxLnB1c2goYy0xKSxnLmluZGljZXMyLnB1c2goZC0xKSxnfXJldHVybiB4W2NdW2QtMV0+eFtjLTFdW2RdP2UoeCxhLGIsYyxkLTEsZik6ZSh4LGEsYixjLTEsZCxmKX0sZj1mdW5jdGlvbih4LGEsYixmKXt2YXIgZz1kKHgsYSxifHxjLGY9Znx8e30pLGg9ZShnLHgsYSx4Lmxlbmd0aCxhLmxlbmd0aCxmKTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHgmJiJzdHJpbmciPT10eXBlb2YgYSYmKGguc2VxdWVuY2U9aC5zZXF1ZW5jZS5qb2luKCIiKSksaH07Yi5nZXQ9Zn0se31dLDEzOltmdW5jdGlvbih4LGEsYil7dmFyIGM9eCgiLi4vY29udGV4dHMvZGlmZiIpLkRpZmZDb250ZXh0LGQ9eCgiLi4vY29udGV4dHMvcGF0Y2giKS5QYXRjaENvbnRleHQsZT14KCIuLi9jb250ZXh0cy9yZXZlcnNlIikuUmV2ZXJzZUNvbnRleHQsZj1mdW5jdGlvbih4KXtpZih4JiZ4LmNoaWxkcmVuKXtmb3IodmFyIGEsYj14LmNoaWxkcmVuLmxlbmd0aCxjPXgucmVzdWx0LGQ9MDtiPmQ7ZCsrKXZvaWQgMCE9PShhPXguY2hpbGRyZW5bZF0pLnJlc3VsdCYmKChjPWN8fHt9KVthLmNoaWxkTmFtZV09YS5yZXN1bHQpO2MmJngubGVmdElzQXJyYXkmJihjLl90PSJhIikseC5zZXRSZXN1bHQoYykuZXhpdCgpfX07Zi5maWx0ZXJOYW1lPSJjb2xsZWN0Q2hpbGRyZW4iO3ZhciBnPWZ1bmN0aW9uKHgpe2lmKCF4LmxlZnRJc0FycmF5JiYib2JqZWN0Ij09PXgubGVmdFR5cGUpe3ZhciBhLGI7Zm9yKGEgaW4geC5sZWZ0KWI9bmV3IGMoeC5sZWZ0W2FdLHgucmlnaHRbYV0pLHgucHVzaChiLGEpO2ZvcihhIGluIHgucmlnaHQpdm9pZCAwPT09eC5sZWZ0W2FdJiYoYj1uZXcgYyh2b2lkIDAseC5yaWdodFthXSkseC5wdXNoKGIsYSkpO3JldHVybiB4LmNoaWxkcmVuJiYwIT09eC5jaGlsZHJlbi5sZW5ndGg/dm9pZCB4LmV4aXQoKTp2b2lkIHguc2V0UmVzdWx0KHZvaWQgMCkuZXhpdCgpfX07Zy5maWx0ZXJOYW1lPSJvYmplY3RzIjt2YXIgaD1mdW5jdGlvbih4KXtpZih4Lm5lc3RlZCYmIXguZGVsdGEuX3Qpe3ZhciBhLGI7Zm9yKGEgaW4geC5kZWx0YSliPW5ldyBkKHgubGVmdFthXSx4LmRlbHRhW2FdKSx4LnB1c2goYixhKTt4LmV4aXQoKX19O2guZmlsdGVyTmFtZT0ib2JqZWN0cyI7dmFyIGk9ZnVuY3Rpb24oeCl7aWYoeCYmeC5jaGlsZHJlbiYmIXguZGVsdGEuX3Qpe2Zvcih2YXIgYSxiPXguY2hpbGRyZW4ubGVuZ3RoLGM9MDtiPmM7YysrKWE9eC5jaGlsZHJlbltjXSx4LmxlZnQuaGFzT3duUHJvcGVydHkoYS5jaGlsZE5hbWUpJiZ2b2lkIDA9PT1hLnJlc3VsdD9kZWxldGUgeC5sZWZ0W2EuY2hpbGROYW1lXTp4LmxlZnRbYS5jaGlsZE5hbWVdIT09YS5yZXN1bHQmJih4LmxlZnRbYS5jaGlsZE5hbWVdPWEucmVzdWx0KTt4LnNldFJlc3VsdCh4LmxlZnQpLmV4aXQoKX19O2kuZmlsdGVyTmFtZT0iY29sbGVjdENoaWxkcmVuIjt2YXIgaj1mdW5jdGlvbih4KXtpZih4Lm5lc3RlZCYmIXguZGVsdGEuX3Qpe3ZhciBhLGI7Zm9yKGEgaW4geC5kZWx0YSliPW5ldyBlKHguZGVsdGFbYV0pLHgucHVzaChiLGEpO3guZXhpdCgpfX07ai5maWx0ZXJOYW1lPSJvYmplY3RzIjt2YXIgaz1mdW5jdGlvbih4KXtpZih4JiZ4LmNoaWxkcmVuJiYheC5kZWx0YS5fdCl7Zm9yKHZhciBhLGI9eC5jaGlsZHJlbi5sZW5ndGgsYz17fSxkPTA7Yj5kO2QrKyljWyhhPXguY2hpbGRyZW5bZF0pLmNoaWxkTmFtZV0hPT1hLnJlc3VsdCYmKGNbYS5jaGlsZE5hbWVdPWEucmVzdWx0KTt4LnNldFJlc3VsdChjKS5leGl0KCl9fTtrLmZpbHRlck5hbWU9ImNvbGxlY3RDaGlsZHJlbiIsYi5jb2xsZWN0Q2hpbGRyZW5EaWZmRmlsdGVyPWYsYi5vYmplY3RzRGlmZkZpbHRlcj1nLGIucGF0Y2hGaWx0ZXI9aCxiLmNvbGxlY3RDaGlsZHJlblBhdGNoRmlsdGVyPWksYi5yZXZlcnNlRmlsdGVyPWosYi5jb2xsZWN0Q2hpbGRyZW5SZXZlcnNlRmlsdGVyPWt9LHsiLi4vY29udGV4dHMvZGlmZiI6NCwiLi4vY29udGV4dHMvcGF0Y2giOjUsIi4uL2NvbnRleHRzL3JldmVyc2UiOjZ9XSwxNDpbZnVuY3Rpb24oeCxhLGIpe3ZhciBjPTIsZD02MCxlPW51bGwsZj1mdW5jdGlvbihhKXtpZighZSl7dmFyIGI7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBkaWZmX21hdGNoX3BhdGNoKWI9ImZ1bmN0aW9uIj09dHlwZW9mIGRpZmZfbWF0Y2hfcGF0Y2g/bmV3IGRpZmZfbWF0Y2hfcGF0Y2g6bmV3IGRpZmZfbWF0Y2hfcGF0Y2guZGlmZl9tYXRjaF9wYXRjaDtlbHNlIGlmKCJmdW5jdGlvbiI9PXR5cGVvZiB4KXRyeXt2YXIgYz14KCIuLi8uLi9wdWJsaWMvZXh0ZXJuYWwvIisiZGlmZl9tYXRjaF9wYXRjaF91bmNvbXByZXNzZWQiKTtiPW5ldyBjLmRpZmZfbWF0Y2hfcGF0Y2h9Y2F0Y2goeCl7Yj1udWxsfWlmKCFiKXtpZighYSlyZXR1cm4gbnVsbDt2YXIgZD1uZXcgRXJyb3IoInRleHQgZGlmZl9tYXRjaF9wYXRjaCBsaWJyYXJ5IG5vdCBmb3VuZCIpO3Rocm93IGQuZGlmZl9tYXRjaF9wYXRjaF9ub3RfZm91bmQ9ITAsZH1lPXtkaWZmOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIGIucGF0Y2hfdG9UZXh0KGIucGF0Y2hfbWFrZSh4LGEpKX0scGF0Y2g6ZnVuY3Rpb24oeCxhKXtmb3IodmFyIGM9Yi5wYXRjaF9hcHBseShiLnBhdGNoX2Zyb21UZXh0KGEpLHgpLGQ9MDtkPGNbMV0ubGVuZ3RoO2QrKylpZighY1sxXVtkXSl7bmV3IEVycm9yKCJ0ZXh0IHBhdGNoIGZhaWxlZCIpLnRleHRQYXRjaEZhaWxlZD0hMH1yZXR1cm4gY1swXX19fXJldHVybiBlfSxnPWZ1bmN0aW9uKHgpe2lmKCJzdHJpbmciPT09eC5sZWZ0VHlwZSl7dmFyIGE9eC5vcHRpb25zJiZ4Lm9wdGlvbnMudGV4dERpZmYmJngub3B0aW9ucy50ZXh0RGlmZi5taW5MZW5ndGh8fGQ7aWYoeC5sZWZ0Lmxlbmd0aDxhfHx4LnJpZ2h0Lmxlbmd0aDxhKXJldHVybiB2b2lkIHguc2V0UmVzdWx0KFt4LmxlZnQseC5yaWdodF0pLmV4aXQoKTt2YXIgYj1mKCk7aWYoIWIpcmV0dXJuIHZvaWQgeC5zZXRSZXN1bHQoW3gubGVmdCx4LnJpZ2h0XSkuZXhpdCgpO3ZhciBlPWIuZGlmZjt4LnNldFJlc3VsdChbZSh4LmxlZnQseC5yaWdodCksMCxjXSkuZXhpdCgpfX07Zy5maWx0ZXJOYW1lPSJ0ZXh0cyI7dmFyIGg9ZnVuY3Rpb24oeCl7aWYoIXgubmVzdGVkJiZ4LmRlbHRhWzJdPT09Yyl7dmFyIGE9ZighMCkucGF0Y2g7eC5zZXRSZXN1bHQoYSh4LmxlZnQseC5kZWx0YVswXSkpLmV4aXQoKX19O2guZmlsdGVyTmFtZT0idGV4dHMiO3ZhciBpPWZ1bmN0aW9uKHgpe3ZhciBhLGIsYyxkLGUsZj1udWxsLGc9L15AQCArXC0oXGQrKSwoXGQrKSArXCsoXGQrKSwoXGQrKSArQEAkLztmb3IoYT0wLGI9KGM9eC5zcGxpdCgiXG4iKSkubGVuZ3RoO2I+YTthKyspe3ZhciBoPShkPWNbYV0pLnNsaWNlKDAsMSk7IkAiPT09aD8oZj1nLmV4ZWMoZCksbnVsbCxudWxsLGNbYV09IkBAIC0iK2ZbM10rIiwiK2ZbNF0rIiArIitmWzFdKyIsIitmWzJdKyIgQEAiKToiKyI9PT1oPyhhLGNbYV09Ii0iK2NbYV0uc2xpY2UoMSksIisiPT09Y1thLTFdLnNsaWNlKDAsMSkmJihlPWNbYV0sY1thXT1jW2EtMV0sY1thLTFdPWUpKToiLSI9PT1oJiYoYSxjW2FdPSIrIitjW2FdLnNsaWNlKDEpKX1yZXR1cm4gYy5qb2luKCJcbiIpfSxqPWZ1bmN0aW9uKHgpe3gubmVzdGVkfHx4LmRlbHRhWzJdPT09YyYmeC5zZXRSZXN1bHQoW2koeC5kZWx0YVswXSksMCxjXSkuZXhpdCgpfTtqLmZpbHRlck5hbWU9InRleHRzIixiLmRpZmZGaWx0ZXI9ZyxiLnBhdGNoRmlsdGVyPWgsYi5yZXZlcnNlRmlsdGVyPWp9LHt9XSwxNTpbZnVuY3Rpb24oeCxhLGIpe3ZhciBjPSJmdW5jdGlvbiI9PXR5cGVvZiBBcnJheS5pc0FycmF5P0FycmF5LmlzQXJyYXk6ZnVuY3Rpb24oeCl7cmV0dXJuIHggaW5zdGFuY2VvZiBBcnJheX0sZD1mdW5jdGlvbih4KXtpZih4LmxlZnQhPT14LnJpZ2h0KWlmKHZvaWQgMCE9PXgubGVmdCl7aWYodm9pZCAwIT09eC5yaWdodCl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHgubGVmdHx8ImZ1bmN0aW9uIj09dHlwZW9mIHgucmlnaHQpdGhyb3cgbmV3IEVycm9yKCJmdW5jdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQiKTtyZXR1cm4geC5sZWZ0VHlwZT1udWxsPT09eC5sZWZ0PyJudWxsIjp0eXBlb2YgeC5sZWZ0LHgucmlnaHRUeXBlPW51bGw9PT14LnJpZ2h0PyJudWxsIjp0eXBlb2YgeC5yaWdodCx4LmxlZnRUeXBlIT09eC5yaWdodFR5cGU/dm9pZCB4LnNldFJlc3VsdChbeC5sZWZ0LHgucmlnaHRdKS5leGl0KCk6ImJvb2xlYW4iPT09eC5sZWZ0VHlwZXx8Im51bWJlciI9PT14LmxlZnRUeXBlP3ZvaWQgeC5zZXRSZXN1bHQoW3gubGVmdCx4LnJpZ2h0XSkuZXhpdCgpOigib2JqZWN0Ij09PXgubGVmdFR5cGUmJih4LmxlZnRJc0FycmF5PWMoeC5sZWZ0KSksIm9iamVjdCI9PT14LnJpZ2h0VHlwZSYmKHgucmlnaHRJc0FycmF5PWMoeC5yaWdodCkpLHgubGVmdElzQXJyYXkhPT14LnJpZ2h0SXNBcnJheT92b2lkIHguc2V0UmVzdWx0KFt4LmxlZnQseC5yaWdodF0pLmV4aXQoKTp2b2lkIDApfXguc2V0UmVzdWx0KFt4LmxlZnQsMCwwXSkuZXhpdCgpfWVsc2V7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHgucmlnaHQpdGhyb3cgbmV3IEVycm9yKCJmdW5jdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQiKTt4LnNldFJlc3VsdChbeC5yaWdodF0pLmV4aXQoKX1lbHNlIHguc2V0UmVzdWx0KHZvaWQgMCkuZXhpdCgpfTtkLmZpbHRlck5hbWU9InRyaXZpYWwiO3ZhciBlPWZ1bmN0aW9uKHgpe3JldHVybiB2b2lkIDA9PT14LmRlbHRhP3ZvaWQgeC5zZXRSZXN1bHQoeC5sZWZ0KS5leGl0KCk6KHgubmVzdGVkPSFjKHguZGVsdGEpLHgubmVzdGVkP3ZvaWQgMDoxPT09eC5kZWx0YS5sZW5ndGg/dm9pZCB4LnNldFJlc3VsdCh4LmRlbHRhWzBdKS5leGl0KCk6Mj09PXguZGVsdGEubGVuZ3RoP3ZvaWQgeC5zZXRSZXN1bHQoeC5kZWx0YVsxXSkuZXhpdCgpOjM9PT14LmRlbHRhLmxlbmd0aCYmMD09PXguZGVsdGFbMl0/dm9pZCB4LnNldFJlc3VsdCh2b2lkIDApLmV4aXQoKTp2b2lkIDApfTtlLmZpbHRlck5hbWU9InRyaXZpYWwiO3ZhciBmPWZ1bmN0aW9uKHgpe3JldHVybiB2b2lkIDA9PT14LmRlbHRhP3ZvaWQgeC5zZXRSZXN1bHQoeC5kZWx0YSkuZXhpdCgpOih4Lm5lc3RlZD0hYyh4LmRlbHRhKSx4Lm5lc3RlZD92b2lkIDA6MT09PXguZGVsdGEubGVuZ3RoP3ZvaWQgeC5zZXRSZXN1bHQoW3guZGVsdGFbMF0sMCwwXSkuZXhpdCgpOjI9PT14LmRlbHRhLmxlbmd0aD92b2lkIHguc2V0UmVzdWx0KFt4LmRlbHRhWzFdLHguZGVsdGFbMF1dKS5leGl0KCk6Mz09PXguZGVsdGEubGVuZ3RoJiYwPT09eC5kZWx0YVsyXT92b2lkIHguc2V0UmVzdWx0KFt4LmRlbHRhWzBdXSkuZXhpdCgpOnZvaWQgMCl9O2YuZmlsdGVyTmFtZT0idHJpdmlhbCIsYi5kaWZmRmlsdGVyPWQsYi5wYXRjaEZpbHRlcj1lLGIucmV2ZXJzZUZpbHRlcj1mfSx7fV0sMTY6W2Z1bmN0aW9uKHgsYSxiKXt2YXIgYyxkPXgoIi4vZW52aXJvbm1lbnQiKSxlPXgoIi4vZGlmZnBhdGNoZXIiKS5EaWZmUGF0Y2hlcjtpZihiLkRpZmZQYXRjaGVyPWUsYi5jcmVhdGU9ZnVuY3Rpb24oeCl7cmV0dXJuIG5ldyBlKHgpfSxiLmRhdGVSZXZpdmVyPXgoIi4vZGF0ZS1yZXZpdmVyIiksYi5kaWZmPWZ1bmN0aW9uKCl7cmV0dXJuIGN8fChjPW5ldyBlKSxjLmRpZmYuYXBwbHkoYyxhcmd1bWVudHMpfSxiLnBhdGNoPWZ1bmN0aW9uKCl7cmV0dXJuIGN8fChjPW5ldyBlKSxjLnBhdGNoLmFwcGx5KGMsYXJndW1lbnRzKX0sYi51bnBhdGNoPWZ1bmN0aW9uKCl7cmV0dXJuIGN8fChjPW5ldyBlKSxjLnVucGF0Y2guYXBwbHkoYyxhcmd1bWVudHMpfSxiLnJldmVyc2U9ZnVuY3Rpb24oKXtyZXR1cm4gY3x8KGM9bmV3IGUpLGMucmV2ZXJzZS5hcHBseShjLGFyZ3VtZW50cyl9LGQuaXNCcm93c2VyKWIuaG9tZXBhZ2U9Imh0dHBzOi8vZ2l0aHViLmNvbS9iZW5qYW1pbmUvanNvbmRpZmZwYXRjaCIsYi52ZXJzaW9uPSIwLjEuMzgiO2Vsc2V7dmFyIGY9eCgiLi4vcGFja2FnZS5qc29uIik7Yi5ob21lcGFnZT1mLmhvbWVwYWdlLGIudmVyc2lvbj1mLnZlcnNpb247dmFyIGc9eCgiLi9mb3JtYXR0ZXJzIik7Yi5mb3JtYXR0ZXJzPWcsYi5jb25zb2xlPWcuY29uc29sZX19LHsiLi9kYXRlLXJldml2ZXIiOjcsIi4vZGlmZnBhdGNoZXIiOjgsIi4vZW52aXJvbm1lbnQiOjl9XSwxNzpbZnVuY3Rpb24oeCxhLGIpe3ZhciBjPWZ1bmN0aW9uKHgpe3RoaXMubmFtZT14LHRoaXMuZmlsdGVycz1bXX07Yy5wcm90b3R5cGUucHJvY2Vzcz1mdW5jdGlvbih4KXtpZighdGhpcy5wcm9jZXNzb3IpdGhyb3cgbmV3IEVycm9yKCJhZGQgdGhpcyBwaXBlIHRvIGEgcHJvY2Vzc29yIGJlZm9yZSB1c2luZyBpdCIpO2Zvcih2YXIgYT10aGlzLmRlYnVnLGI9dGhpcy5maWx0ZXJzLmxlbmd0aCxjPXgsZD0wO2I+ZDtkKyspe3ZhciBlPXRoaXMuZmlsdGVyc1tkXTtpZihhJiZ0aGlzLmxvZygiZmlsdGVyOiAiK2UuZmlsdGVyTmFtZSksZShjKSwib2JqZWN0Ij09dHlwZW9mIGMmJmMuZXhpdGluZyl7Yy5leGl0aW5nPSExO2JyZWFrfX0hYy5uZXh0JiZ0aGlzLnJlc3VsdENoZWNrJiZ0aGlzLnJlc3VsdENoZWNrKGMpfSxjLnByb3RvdHlwZS5sb2c9ZnVuY3Rpb24oeCl7Y29uc29sZS5sb2coIltqc29uZGlmZnBhdGNoXSAiK3RoaXMubmFtZSsiIHBpcGUsICIreCl9LGMucHJvdG90eXBlLmFwcGVuZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZpbHRlcnMucHVzaC5hcHBseSh0aGlzLmZpbHRlcnMsYXJndW1lbnRzKSx0aGlzfSxjLnByb3RvdHlwZS5wcmVwZW5kPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsdGVycy51bnNoaWZ0LmFwcGx5KHRoaXMuZmlsdGVycyxhcmd1bWVudHMpLHRoaXN9LGMucHJvdG90eXBlLmluZGV4T2Y9ZnVuY3Rpb24oeCl7aWYoIXgpdGhyb3cgbmV3IEVycm9yKCJhIGZpbHRlciBuYW1lIGlzIHJlcXVpcmVkIik7Zm9yKHZhciBhPTA7YTx0aGlzLmZpbHRlcnMubGVuZ3RoO2ErKyl7aWYodGhpcy5maWx0ZXJzW2FdLmZpbHRlck5hbWU9PT14KXJldHVybiBhfXRocm93IG5ldyBFcnJvcigiZmlsdGVyIG5vdCBmb3VuZDogIit4KX0sYy5wcm90b3R5cGUubGlzdD1mdW5jdGlvbigpe2Zvcih2YXIgeD1bXSxhPTA7YTx0aGlzLmZpbHRlcnMubGVuZ3RoO2ErKyl7dmFyIGI9dGhpcy5maWx0ZXJzW2FdO3gucHVzaChiLmZpbHRlck5hbWUpfXJldHVybiB4fSxjLnByb3RvdHlwZS5hZnRlcj1mdW5jdGlvbih4KXt2YXIgYT10aGlzLmluZGV4T2YoeCksYj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSk7aWYoIWIubGVuZ3RoKXRocm93IG5ldyBFcnJvcigiYSBmaWx0ZXIgaXMgcmVxdWlyZWQiKTtyZXR1cm4gYi51bnNoaWZ0KGErMSwwKSxBcnJheS5wcm90b3R5cGUuc3BsaWNlLmFwcGx5KHRoaXMuZmlsdGVycyxiKSx0aGlzfSxjLnByb3RvdHlwZS5iZWZvcmU9ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcy5pbmRleE9mKHgpLGI9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpO2lmKCFiLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoImEgZmlsdGVyIGlzIHJlcXVpcmVkIik7cmV0dXJuIGIudW5zaGlmdChhLDApLEFycmF5LnByb3RvdHlwZS5zcGxpY2UuYXBwbHkodGhpcy5maWx0ZXJzLGIpLHRoaXN9LGMucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsdGVycy5sZW5ndGg9MCx0aGlzfSxjLnByb3RvdHlwZS5zaG91bGRIYXZlUmVzdWx0PWZ1bmN0aW9uKHgpe2lmKCExIT09eCl7aWYoIXRoaXMucmVzdWx0Q2hlY2spe3ZhciBhPXRoaXM7cmV0dXJuIHRoaXMucmVzdWx0Q2hlY2s9ZnVuY3Rpb24oeCl7aWYoIXguaGFzUmVzdWx0KXtjb25zb2xlLmxvZyh4KTt2YXIgYj1uZXcgRXJyb3IoYS5uYW1lKyIgZmFpbGVkIik7dGhyb3cgYi5ub1Jlc3VsdD0hMCxifX0sdGhpc319ZWxzZSB0aGlzLnJlc3VsdENoZWNrPW51bGx9LGIuUGlwZT1jfSx7fV0sMTg6W2Z1bmN0aW9uKHgsYSxiKXt2YXIgYz1mdW5jdGlvbih4KXt0aGlzLnNlbGZPcHRpb25zPXgsdGhpcy5waXBlcz17fX07Yy5wcm90b3R5cGUub3B0aW9ucz1mdW5jdGlvbih4KXtyZXR1cm4geCYmKHRoaXMuc2VsZk9wdGlvbnM9eCksdGhpcy5zZWxmT3B0aW9uc30sYy5wcm90b3R5cGUucGlwZT1mdW5jdGlvbih4LGEpe2lmKCJzdHJpbmciPT10eXBlb2YgeCl7aWYodm9pZCAwPT09YSlyZXR1cm4gdGhpcy5waXBlc1t4XTt0aGlzLnBpcGVzW3hdPWF9aWYoeCYmeC5uYW1lKXtpZigoYT14KS5wcm9jZXNzb3I9PT10aGlzKXJldHVybiBhO3RoaXMucGlwZXNbYS5uYW1lXT1hfXJldHVybiBhLnByb2Nlc3Nvcj10aGlzLGF9LGMucHJvdG90eXBlLnByb2Nlc3M9ZnVuY3Rpb24oeCxhKXt2YXIgYj14O2Iub3B0aW9ucz10aGlzLm9wdGlvbnMoKTtmb3IodmFyIGMsZCxlPWF8fHgucGlwZXx8ImRlZmF1bHQiO2U7KXZvaWQgMCE9PWIubmV4dEFmdGVyQ2hpbGRyZW4mJihiLm5leHQ9Yi5uZXh0QWZ0ZXJDaGlsZHJlbixiLm5leHRBZnRlckNoaWxkcmVuPW51bGwpLCJzdHJpbmciPT10eXBlb2YgZSYmKGU9dGhpcy5waXBlKGUpKSxlLnByb2Nlc3MoYiksZD1iLGM9ZSxlPW51bGwsYiYmYi5uZXh0JiYoYj1iLm5leHQsZT1kLm5leHRQaXBlfHxiLnBpcGV8fGMpO3JldHVybiBiLmhhc1Jlc3VsdD9iLnJlc3VsdDp2b2lkIDB9LGIuUHJvY2Vzc29yPWN9LHt9XX0se30sWzFdKSgxKX0pLGZ1bmN0aW9uKHgpe2lmKCJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmInVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGUpbW9kdWxlLmV4cG9ydHM9eCgpO2Vsc2UgaWYoImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZClkZWZpbmUoW10seCk7ZWxzZXt2YXIgYTsidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz9hPXdpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9hPWdsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYmJihhPXNlbGYpLChhLmpzb25kaWZmcGF0Y2h8fChhLmpzb25kaWZmcGF0Y2g9e30pKS5mb3JtYXR0ZXJzPXgoKX19KGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIHgoYSxiLGMpe2Z1bmN0aW9uIGQoZixnKXtpZighYltmXSl7aWYoIWFbZl0pe3ZhciBoPSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFnJiZoKXJldHVybiBoKGYsITApO2lmKGUpcmV0dXJuIGUoZiwhMCk7dmFyIGk9bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrZisiJyIpO3Rocm93IGkuY29kZT0iTU9EVUxFX05PVF9GT1VORCIsaX12YXIgaj1iW2ZdPXtleHBvcnRzOnt9fTthW2ZdWzBdLmNhbGwoai5leHBvcnRzLGZ1bmN0aW9uKHgpe3ZhciBiPWFbZl1bMV1beF07cmV0dXJuIGQoYnx8eCl9LGosai5leHBvcnRzLHgsYSxiLGMpfXJldHVybiBiW2ZdLmV4cG9ydHN9Zm9yKHZhciBlPSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlLGY9MDtmPGMubGVuZ3RoO2YrKylkKGNbZl0pO3JldHVybiBkfSh7MTpbZnVuY3Rpb24oeCxhLGIpe2EuZXhwb3J0cz14KCIuL2Zvcm1hdHRlcnMiKX0seyIuL2Zvcm1hdHRlcnMiOjZ9XSwyOltmdW5jdGlvbih4LGEsYil7Yi5pc0Jyb3dzZXI9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3d9LHt9XSwzOltmdW5jdGlvbih4LGEsYil7dmFyIGM9eCgiLi9iYXNlIikuQmFzZUZvcm1hdHRlcixkPWZ1bmN0aW9uKCl7dGhpcy5pbmNsdWRlTW92ZURlc3RpbmF0aW9ucz0hMX07ZC5wcm90b3R5cGU9bmV3IGMsZC5wcm90b3R5cGUucHJlcGFyZUNvbnRleHQ9ZnVuY3Rpb24oeCl7Yy5wcm90b3R5cGUucHJlcGFyZUNvbnRleHQuY2FsbCh0aGlzLHgpLHguaW5kZW50PWZ1bmN0aW9uKHgpe3RoaXMuaW5kZW50TGV2ZWw9KHRoaXMuaW5kZW50TGV2ZWx8fDApKyh2b2lkIDA9PT14PzE6eCksdGhpcy5pbmRlbnRQYWQ9bmV3IEFycmF5KHRoaXMuaW5kZW50TGV2ZWwrMSkuam9pbigiJm5ic3A7Jm5ic3A7Iil9LHgucm93PWZ1bmN0aW9uKGEsYil7eC5vdXQoJzx0cj48dGQgc3R5bGU9IndoaXRlLXNwYWNlOiBub3dyYXA7Ij48cHJlIGNsYXNzPSJqc29uZGlmZnBhdGNoLWFubm90YXRlZC1pbmRlbnQiIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2siPicpLHgub3V0KHguaW5kZW50UGFkKSx4Lm91dCgnPC9wcmU+PHByZSBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrIj4nKSx4Lm91dChhKSx4Lm91dCgnPC9wcmU+PC90ZD48dGQgY2xhc3M9Impzb25kaWZmcGF0Y2gtZGVsdGEtbm90ZSI+PGRpdj4nKSx4Lm91dChiKSx4Lm91dCgiPC9kaXY+PC90ZD48L3RyPiIpfX0sZC5wcm90b3R5cGUudHlwZUZvcm1hdHR0ZXJFcnJvckZvcm1hdHRlcj1mdW5jdGlvbih4LGEpe3gucm93KCIiLCc8cHJlIGNsYXNzPSJqc29uZGlmZnBhdGNoLWVycm9yIj4nK2ErIjwvcHJlPiIpfSxkLnByb3RvdHlwZS5mb3JtYXRUZXh0RGlmZlN0cmluZz1mdW5jdGlvbih4LGEpe3ZhciBiPXRoaXMucGFyc2VUZXh0RGlmZihhKTt4Lm91dCgnPHVsIGNsYXNzPSJqc29uZGlmZnBhdGNoLXRleHRkaWZmIj4nKTtmb3IodmFyIGM9MCxkPWIubGVuZ3RoO2Q+YztjKyspe3ZhciBlPWJbY107eC5vdXQoJzxsaT48ZGl2IGNsYXNzPSJqc29uZGlmZnBhdGNoLXRleHRkaWZmLWxvY2F0aW9uIj48c3BhbiBjbGFzcz0ianNvbmRpZmZwYXRjaC10ZXh0ZGlmZi1saW5lLW51bWJlciI+JytlLmxvY2F0aW9uLmxpbmUrJzwvc3Bhbj48c3BhbiBjbGFzcz0ianNvbmRpZmZwYXRjaC10ZXh0ZGlmZi1jaGFyIj4nK2UubG9jYXRpb24uY2hyKyc8L3NwYW4+PC9kaXY+PGRpdiBjbGFzcz0ianNvbmRpZmZwYXRjaC10ZXh0ZGlmZi1saW5lIj4nKTtmb3IodmFyIGY9ZS5waWVjZXMsZz0wLGg9Zi5sZW5ndGg7aD5nO2crKyl7dmFyIGk9ZltnXTt4Lm91dCgnPHNwYW4gY2xhc3M9Impzb25kaWZmcGF0Y2gtdGV4dGRpZmYtJytpLnR5cGUrJyI+JytpLnRleHQrIjwvc3Bhbj4iKX14Lm91dCgiPC9kaXY+PC9saT4iKX14Lm91dCgiPC91bD4iKX0sZC5wcm90b3R5cGUucm9vdEJlZ2luPWZ1bmN0aW9uKHgsYSxiKXt4Lm91dCgnPHRhYmxlIGNsYXNzPSJqc29uZGlmZnBhdGNoLWFubm90YXRlZC1kZWx0YSI+JyksIm5vZGUiPT09YSYmKHgucm93KCJ7IikseC5pbmRlbnQoKSksImFycmF5Ij09PWImJngucm93KCciX3QiOiAiYSIsJywiQXJyYXkgZGVsdGEgKG1lbWJlciBuYW1lcyBpbmRpY2F0ZSBhcnJheSBpbmRpY2VzKSIpfSxkLnByb3RvdHlwZS5yb290RW5kPWZ1bmN0aW9uKHgsYSl7Im5vZGUiPT09YSYmKHguaW5kZW50KC0xKSx4LnJvdygifSIpKSx4Lm91dCgiPC90YWJsZT4iKX0sZC5wcm90b3R5cGUubm9kZUJlZ2luPWZ1bmN0aW9uKHgsYSxiLGMsZCl7eC5yb3coIiZxdW90OyIrYSsiJnF1b3Q7OiB7IiksIm5vZGUiPT09YyYmeC5pbmRlbnQoKSwiYXJyYXkiPT09ZCYmeC5yb3coJyJfdCI6ICJhIiwnLCJBcnJheSBkZWx0YSAobWVtYmVyIG5hbWVzIGluZGljYXRlIGFycmF5IGluZGljZXMpIil9LGQucHJvdG90eXBlLm5vZGVFbmQ9ZnVuY3Rpb24oeCxhLGIsYyxkLGUpeyJub2RlIj09PWMmJnguaW5kZW50KC0xKSx4LnJvdygifSIrKGU/IiI6IiwiKSl9LGQucHJvdG90eXBlLmZvcm1hdF91bmNoYW5nZWQ9ZnVuY3Rpb24oKXt9LGQucHJvdG90eXBlLmZvcm1hdF9tb3ZlZGVzdGluYXRpb249ZnVuY3Rpb24oKXt9LGQucHJvdG90eXBlLmZvcm1hdF9ub2RlPWZ1bmN0aW9uKHgsYSxiKXt0aGlzLmZvcm1hdERlbHRhQ2hpbGRyZW4oeCxhLGIpfTt2YXIgZSxmPWZ1bmN0aW9uKHgpe3JldHVybic8cHJlIHN0eWxlPSJkaXNwbGF5OmlubGluZS1ibG9jayI+JnF1b3Q7Jyt4KyImcXVvdDs8L3ByZT4ifSxnPXthZGRlZDpmdW5jdGlvbih4LGEsYixjKXt2YXIgZD0iIDxwcmU+KFtuZXdWYWx1ZV0pPC9wcmU+IjtyZXR1cm4gdm9pZCAwPT09Yz8ibmV3IHZhbHVlIitkOiJudW1iZXIiPT10eXBlb2YgYz8iaW5zZXJ0IGF0IGluZGV4ICIrYytkOiJhZGQgcHJvcGVydHkgIitmKGMpK2R9LG1vZGlmaWVkOmZ1bmN0aW9uKHgsYSxiLGMpe3ZhciBkPSIgPHByZT4oW3ByZXZpb3VzVmFsdWUsIG5ld1ZhbHVlXSk8L3ByZT4iO3JldHVybiB2b2lkIDA9PT1jPyJtb2RpZnkgdmFsdWUiK2Q6Im51bWJlciI9PXR5cGVvZiBjPyJtb2RpZnkgYXQgaW5kZXggIitjK2Q6Im1vZGlmeSBwcm9wZXJ0eSAiK2YoYykrZH0sZGVsZXRlZDpmdW5jdGlvbih4LGEsYixjKXt2YXIgZD0iIDxwcmU+KFtwcmV2aW91c1ZhbHVlLCAwLCAwXSk8L3ByZT4iO3JldHVybiB2b2lkIDA9PT1jPyJkZWxldGUgdmFsdWUiK2Q6Im51bWJlciI9PXR5cGVvZiBjPyJyZW1vdmUgaW5kZXggIitjK2Q6ImRlbGV0ZSBwcm9wZXJ0eSAiK2YoYykrZH0sbW92ZWQ6ZnVuY3Rpb24oeCxhLGIsYyl7cmV0dXJuJ21vdmUgZnJvbSA8c3BhbiB0aXRsZT0iKHBvc2l0aW9uIHRvIHJlbW92ZSBhdCBvcmlnaW5hbCBzdGF0ZSkiPmluZGV4ICcrYysnPC9zcGFuPiB0byA8c3BhbiB0aXRsZT0iKHBvc2l0aW9uIHRvIGluc2VydCBhdCBmaW5hbCBzdGF0ZSkiPmluZGV4ICcreFsxXSsiPC9zcGFuPiJ9LHRleHRkaWZmOmZ1bmN0aW9uKHgsYSxiLGMpe3JldHVybiJ0ZXh0IGRpZmYiKyh2b2lkIDA9PT1jPyIiOiJudW1iZXIiPT10eXBlb2YgYz8iIGF0IGluZGV4ICIrYzoiIGF0IHByb3BlcnR5ICIrZihjKSkrJywgZm9ybWF0IGlzIDxhIGhyZWY9Imh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvZ29vZ2xlLWRpZmYtbWF0Y2gtcGF0Y2gvd2lraS9VbmlkaWZmIj5hIHZhcmlhdGlvbiBvZiBVbmlkaWZmPC9hPid9fSxoPWZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcy5nZXREZWx0YVR5cGUoYSksYz1nW2JdLGQ9YyYmYy5hcHBseShjLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSksZT1KU09OLnN0cmluZ2lmeShhLG51bGwsMik7InRleHRkaWZmIj09PWImJihlPWUuc3BsaXQoIlxcbiIpLmpvaW4oJ1xcbiIrXG4gICAiJykpLHguaW5kZW50KCkseC5yb3coZSxkKSx4LmluZGVudCgtMSl9O2QucHJvdG90eXBlLmZvcm1hdF9hZGRlZD1oLGQucHJvdG90eXBlLmZvcm1hdF9tb2RpZmllZD1oLGQucHJvdG90eXBlLmZvcm1hdF9kZWxldGVkPWgsZC5wcm90b3R5cGUuZm9ybWF0X21vdmVkPWgsZC5wcm90b3R5cGUuZm9ybWF0X3RleHRkaWZmPWgsYi5Bbm5vdGF0ZWRGb3JtYXR0ZXI9ZCxiLmZvcm1hdD1mdW5jdGlvbih4LGEpe3JldHVybiBlfHwoZT1uZXcgZCksZS5mb3JtYXQoeCxhKX19LHsiLi9iYXNlIjo0fV0sNDpbZnVuY3Rpb24oeCxhLGIpe3ZhciBjPSJmdW5jdGlvbiI9PXR5cGVvZiBBcnJheS5pc0FycmF5P0FycmF5LmlzQXJyYXk6ZnVuY3Rpb24oeCl7cmV0dXJuIHggaW5zdGFuY2VvZiBBcnJheX0sZD0iZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmtleXM/ZnVuY3Rpb24oeCl7cmV0dXJuIE9iamVjdC5rZXlzKHgpfTpmdW5jdGlvbih4KXt2YXIgYT1bXTtmb3IodmFyIGIgaW4geCl4Lmhhc093blByb3BlcnR5KGIpJiZhLnB1c2goYik7cmV0dXJuIGF9LGU9ZnVuY3Rpb24oeCl7cmV0dXJuIl8iPT09eC5zdWJzdHIoMCwxKT94LnNsaWNlKDEpOnh9LGY9ZnVuY3Rpb24oeCl7cmV0dXJuIl90Ij09PXg/LTE6Il8iPT09eC5zdWJzdHIoMCwxKT9wYXJzZUludCh4LnNsaWNlKDEpLDEwKTpwYXJzZUludCh4LDEwKSsuMX0sZz1mdW5jdGlvbih4LGEpe3JldHVybiBmKHgpLWYoYSl9LGg9ZnVuY3Rpb24oKXt9O2gucHJvdG90eXBlLmZvcm1hdD1mdW5jdGlvbih4LGEpe3ZhciBiPXt9O3JldHVybiB0aGlzLnByZXBhcmVDb250ZXh0KGIpLHRoaXMucmVjdXJzZShiLHgsYSksdGhpcy5maW5hbGl6ZShiKX0saC5wcm90b3R5cGUucHJlcGFyZUNvbnRleHQ9ZnVuY3Rpb24oeCl7eC5idWZmZXI9W10seC5vdXQ9ZnVuY3Rpb24oKXt0aGlzLmJ1ZmZlci5wdXNoLmFwcGx5KHRoaXMuYnVmZmVyLGFyZ3VtZW50cyl9fSxoLnByb3RvdHlwZS50eXBlRm9ybWF0dHRlck5vdEZvdW5kPWZ1bmN0aW9uKHgsYSl7dGhyb3cgbmV3IEVycm9yKCJjYW5ub3QgZm9ybWF0IGRlbHRhIHR5cGU6ICIrYSl9LGgucHJvdG90eXBlLnR5cGVGb3JtYXR0dGVyRXJyb3JGb3JtYXR0ZXI9ZnVuY3Rpb24oeCxhKXtyZXR1cm4gYS50b1N0cmluZygpfSxoLnByb3RvdHlwZS5maW5hbGl6ZT1mdW5jdGlvbih4KXtyZXR1cm4gYyh4LmJ1ZmZlcik/eC5idWZmZXIuam9pbigiIik6dm9pZCAwfSxoLnByb3RvdHlwZS5yZWN1cnNlPWZ1bmN0aW9uKHgsYSxiLGMsZCxlLGYpe3ZhciBnPWEmJmU/ZS52YWx1ZTpiO2lmKHZvaWQgMCE9PWF8fHZvaWQgMCE9PWMpe3ZhciBoPXRoaXMuZ2V0RGVsdGFUeXBlKGEsZSksaT0ibm9kZSI9PT1oPyJhIj09PWEuX3Q/ImFycmF5Ijoib2JqZWN0IjoiIjt2b2lkIDAhPT1jP3RoaXMubm9kZUJlZ2luKHgsYyxkLGgsaSxmKTp0aGlzLnJvb3RCZWdpbih4LGgsaSk7dHJ5eyh0aGlzWyJmb3JtYXRfIitoXXx8dGhpcy50eXBlRm9ybWF0dHRlck5vdEZvdW5kKHgsaCkpLmNhbGwodGhpcyx4LGEsZyxjLGQsZSl9Y2F0Y2goYil7dGhpcy50eXBlRm9ybWF0dHRlckVycm9yRm9ybWF0dGVyKHgsYixhLGcsYyxkLGUpLCJ1bmRlZmluZWQiIT10eXBlb2YgY29uc29sZSYmY29uc29sZS5lcnJvciYmY29uc29sZS5lcnJvcihiLnN0YWNrKX12b2lkIDAhPT1jP3RoaXMubm9kZUVuZCh4LGMsZCxoLGksZik6dGhpcy5yb290RW5kKHgsaCxpKX19LGgucHJvdG90eXBlLmZvcm1hdERlbHRhQ2hpbGRyZW49ZnVuY3Rpb24oeCxhLGIpe3ZhciBjPXRoaXM7dGhpcy5mb3JFYWNoRGVsdGFLZXkoYSxiLGZ1bmN0aW9uKGQsZSxmLGcpe2MucmVjdXJzZSh4LGFbZF0sYj9iW2VdOnZvaWQgMCxkLGUsZixnKX0pfSxoLnByb3RvdHlwZS5mb3JFYWNoRGVsdGFLZXk9ZnVuY3Rpb24oeCxhLGIpe3ZhciBmLGg9ZCh4KSxpPSJhIj09PXguX3Qsaj17fTtpZih2b2lkIDAhPT1hKWZvcihmIGluIGEpdm9pZCAwIT09eFtmXXx8aSYmdm9pZCAwIT09eFsiXyIrZl18fGgucHVzaChmKTtmb3IoZiBpbiB4KXt2YXIgaz14W2ZdO2MoaykmJjM9PT1rWzJdJiYoaltrWzFdLnRvU3RyaW5nKCldPXtrZXk6Zix2YWx1ZTphJiZhW3BhcnNlSW50KGYuc3Vic3RyKDEpKV19LCExIT09dGhpcy5pbmNsdWRlTW92ZURlc3RpbmF0aW9ucyYmdm9pZCAwPT09YSYmdm9pZCAwPT09eFtrWzFdXSYmaC5wdXNoKGtbMV0udG9TdHJpbmcoKSkpfWk/aC5zb3J0KGcpOmguc29ydCgpO2Zvcih2YXIgbD0wLG09aC5sZW5ndGg7bT5sO2wrKyl7dmFyIG49aFtsXTtpZighaXx8Il90IiE9PW4pe3ZhciBvPWk/Im51bWJlciI9PXR5cGVvZiBuP246cGFyc2VJbnQoZShuKSwxMCk6bixwPWw9PT1tLTE7YihuLG8saltvXSxwKX19fSxoLnByb3RvdHlwZS5nZXREZWx0YVR5cGU9ZnVuY3Rpb24oeCxhKXtpZih2b2lkIDA9PT14KXJldHVybiB2b2lkIDAhPT1hPyJtb3ZlZGVzdGluYXRpb24iOiJ1bmNoYW5nZWQiO2lmKGMoeCkpe2lmKDE9PT14Lmxlbmd0aClyZXR1cm4iYWRkZWQiO2lmKDI9PT14Lmxlbmd0aClyZXR1cm4ibW9kaWZpZWQiO2lmKDM9PT14Lmxlbmd0aCYmMD09PXhbMl0pcmV0dXJuImRlbGV0ZWQiO2lmKDM9PT14Lmxlbmd0aCYmMj09PXhbMl0pcmV0dXJuInRleHRkaWZmIjtpZigzPT09eC5sZW5ndGgmJjM9PT14WzJdKXJldHVybiJtb3ZlZCJ9ZWxzZSBpZigib2JqZWN0Ij09dHlwZW9mIHgpcmV0dXJuIm5vZGUiO3JldHVybiJ1bmtub3duIn0saC5wcm90b3R5cGUucGFyc2VUZXh0RGlmZj1mdW5jdGlvbih4KXtmb3IodmFyIGE9W10sYj14LnNwbGl0KCJcbkBAICIpLGM9MCxkPWIubGVuZ3RoO2Q+YztjKyspe3ZhciBlPWJbY10sZj17cGllY2VzOltdfSxnPS9eKD86QEAgKT9bLStdPyhcZCspLChcZCspLy5leGVjKGUpLnNsaWNlKDEpO2YubG9jYXRpb249e2xpbmU6Z1swXSxjaHI6Z1sxXX07Zm9yKHZhciBoPWUuc3BsaXQoIlxuIikuc2xpY2UoMSksaT0wLGo9aC5sZW5ndGg7aj5pO2krKyl7dmFyIGs9aFtpXTtpZihrLmxlbmd0aCl7dmFyIGw9e3R5cGU6ImNvbnRleHQifTsiKyI9PT1rLnN1YnN0cigwLDEpP2wudHlwZT0iYWRkZWQiOiItIj09PWsuc3Vic3RyKDAsMSkmJihsLnR5cGU9ImRlbGV0ZWQiKSxsLnRleHQ9ay5zbGljZSgxKSxmLnBpZWNlcy5wdXNoKGwpfX1hLnB1c2goZil9cmV0dXJuIGF9LGIuQmFzZUZvcm1hdHRlcj1ofSx7fV0sNTpbZnVuY3Rpb24oeCxhLGIpe2Z1bmN0aW9uIGMoeCl7Zm9yKHZhciBhPXgsYj1bWy8mL2csIiZhbXA7Il0sWy88L2csIiZsdDsiXSxbLz4vZywiJmd0OyJdLFsvJy9nLCImYXBvczsiXSxbLyIvZywiJnF1b3Q7Il1dLGM9MDtjPGIubGVuZ3RoO2MrKylhPWEucmVwbGFjZShiW2NdWzBdLGJbY11bMV0pO3JldHVybiBhfXZhciBkPXgoIi4vYmFzZSIpLkJhc2VGb3JtYXR0ZXIsZT1mdW5jdGlvbigpe307ZS5wcm90b3R5cGU9bmV3IGQsZS5wcm90b3R5cGUudHlwZUZvcm1hdHR0ZXJFcnJvckZvcm1hdHRlcj1mdW5jdGlvbih4LGEpe3gub3V0KCc8cHJlIGNsYXNzPSJqc29uZGlmZnBhdGNoLWVycm9yIj4nK2ErIjwvcHJlPiIpfSxlLnByb3RvdHlwZS5mb3JtYXRWYWx1ZT1mdW5jdGlvbih4LGEpe3gub3V0KCI8cHJlPiIrYyhKU09OLnN0cmluZ2lmeShhLG51bGwsMikpKyI8L3ByZT4iKX0sZS5wcm90b3R5cGUuZm9ybWF0VGV4dERpZmZTdHJpbmc9ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzLnBhcnNlVGV4dERpZmYoYSk7eC5vdXQoJzx1bCBjbGFzcz0ianNvbmRpZmZwYXRjaC10ZXh0ZGlmZiI+Jyk7Zm9yKHZhciBkPTAsZT1iLmxlbmd0aDtlPmQ7ZCsrKXt2YXIgZj1iW2RdO3gub3V0KCc8bGk+PGRpdiBjbGFzcz0ianNvbmRpZmZwYXRjaC10ZXh0ZGlmZi1sb2NhdGlvbiI+PHNwYW4gY2xhc3M9Impzb25kaWZmcGF0Y2gtdGV4dGRpZmYtbGluZS1udW1iZXIiPicrZi5sb2NhdGlvbi5saW5lKyc8L3NwYW4+PHNwYW4gY2xhc3M9Impzb25kaWZmcGF0Y2gtdGV4dGRpZmYtY2hhciI+JytmLmxvY2F0aW9uLmNocisnPC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9Impzb25kaWZmcGF0Y2gtdGV4dGRpZmYtbGluZSI+Jyk7Zm9yKHZhciBnPWYucGllY2VzLGg9MCxpPWcubGVuZ3RoO2k+aDtoKyspe3ZhciBqPWdbaF07eC5vdXQoJzxzcGFuIGNsYXNzPSJqc29uZGlmZnBhdGNoLXRleHRkaWZmLScrai50eXBlKyciPicrYyhkZWNvZGVVUklDb21wb25lbnQoai50ZXh0KSkrIjwvc3Bhbj4iKX14Lm91dCgiPC9kaXY+PC9saT4iKX14Lm91dCgiPC91bD4iKX07dmFyIGY9ZnVuY3Rpb24oeCl7eD14fHxkb2N1bWVudDt2YXIgYT1mdW5jdGlvbih4KXtyZXR1cm4geC50ZXh0Q29udGVudHx8eC5pbm5lclRleHR9LGI9ZnVuY3Rpb24oeCxhLGIpe2Zvcih2YXIgYz14LnF1ZXJ5U2VsZWN0b3JBbGwoYSksZD0wLGU9Yy5sZW5ndGg7ZT5kO2QrKyliKGNbZF0pfSxjPWZ1bmN0aW9uKHgsYSl7Zm9yKHZhciBiPTAsYz14LmNoaWxkcmVuLmxlbmd0aDtjPmI7YisrKWEoeC5jaGlsZHJlbltiXSxiKX07Yih4LCIuanNvbmRpZmZwYXRjaC1hcnJvdyIsZnVuY3Rpb24oeCl7dmFyIGI9eC5wYXJlbnROb2RlLGQ9eC5jaGlsZHJlblswXSxlPWQuY2hpbGRyZW5bMV07ZC5zdHlsZS5kaXNwbGF5PSJub25lIjt2YXIgZixnPWEoYi5xdWVyeVNlbGVjdG9yKCIuanNvbmRpZmZwYXRjaC1tb3ZlZC1kZXN0aW5hdGlvbiIpKSxoPWIucGFyZW50Tm9kZTtpZihjKGgsZnVuY3Rpb24oeCl7eC5nZXRBdHRyaWJ1dGUoImRhdGEta2V5Iik9PT1nJiYoZj14KX0pLGYpdHJ5e3ZhciBpPWYub2Zmc2V0VG9wLWIub2Zmc2V0VG9wO2Quc2V0QXR0cmlidXRlKCJoZWlnaHQiLE1hdGguYWJzKGkpKzYpLHguc3R5bGUudG9wPS04KyhpPjA/MDppKSsicHgiO3ZhciBqPWk+MD8iTTMwLDAgUS0xMCwiK01hdGgucm91bmQoaS8yKSsiIDI2LCIrKGktNCk6Ik0zMCwiKy1pKyIgUS0xMCwiK01hdGgucm91bmQoLWkvMikrIiAyNiw0IjtlLnNldEF0dHJpYnV0ZSgiZCIsaiksZC5zdHlsZS5kaXNwbGF5PSIifWNhdGNoKHgpe3JldHVybn19KX07ZS5wcm90b3R5cGUucm9vdEJlZ2luPWZ1bmN0aW9uKHgsYSxiKXt2YXIgYz0ianNvbmRpZmZwYXRjaC0iK2ErKGI/IiBqc29uZGlmZnBhdGNoLWNoaWxkLW5vZGUtdHlwZS0iK2I6IiIpO3gub3V0KCc8ZGl2IGNsYXNzPSJqc29uZGlmZnBhdGNoLWRlbHRhICcrYysnIj4nKX0sZS5wcm90b3R5cGUucm9vdEVuZD1mdW5jdGlvbih4KXt4Lm91dCgiPC9kaXY+IisoeC5oYXNBcnJvd3M/JzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij5zZXRUaW1lb3V0KCcrZi50b1N0cmluZygpKyIsMTApOzxcL3NjcmlwdD4iOiIiKSl9LGUucHJvdG90eXBlLm5vZGVCZWdpbj1mdW5jdGlvbih4LGEsYixjLGQpe3ZhciBlPSJqc29uZGlmZnBhdGNoLSIrYysoZD8iIGpzb25kaWZmcGF0Y2gtY2hpbGQtbm9kZS10eXBlLSIrZDoiIik7eC5vdXQoJzxsaSBjbGFzcz0iJytlKyciIGRhdGEta2V5PSInK2IrJyI+PGRpdiBjbGFzcz0ianNvbmRpZmZwYXRjaC1wcm9wZXJ0eS1uYW1lIj4nK2IrIjwvZGl2PiIpfSxlLnByb3RvdHlwZS5ub2RlRW5kPWZ1bmN0aW9uKHgpe3gub3V0KCI8L2xpPiIpfSxlLnByb3RvdHlwZS5mb3JtYXRfdW5jaGFuZ2VkPWZ1bmN0aW9uKHgsYSxiKXt2b2lkIDAhPT1iJiYoeC5vdXQoJzxkaXYgY2xhc3M9Impzb25kaWZmcGF0Y2gtdmFsdWUiPicpLHRoaXMuZm9ybWF0VmFsdWUoeCxiKSx4Lm91dCgiPC9kaXY+IikpfSxlLnByb3RvdHlwZS5mb3JtYXRfbW92ZWRlc3RpbmF0aW9uPWZ1bmN0aW9uKHgsYSxiKXt2b2lkIDAhPT1iJiYoeC5vdXQoJzxkaXYgY2xhc3M9Impzb25kaWZmcGF0Y2gtdmFsdWUiPicpLHRoaXMuZm9ybWF0VmFsdWUoeCxiKSx4Lm91dCgiPC9kaXY+IikpfSxlLnByb3RvdHlwZS5mb3JtYXRfbm9kZT1mdW5jdGlvbih4LGEsYil7dmFyIGM9ImEiPT09YS5fdD8iYXJyYXkiOiJvYmplY3QiO3gub3V0KCc8dWwgY2xhc3M9Impzb25kaWZmcGF0Y2gtbm9kZSBqc29uZGlmZnBhdGNoLW5vZGUtdHlwZS0nK2MrJyI+JyksdGhpcy5mb3JtYXREZWx0YUNoaWxkcmVuKHgsYSxiKSx4Lm91dCgiPC91bD4iKX0sZS5wcm90b3R5cGUuZm9ybWF0X2FkZGVkPWZ1bmN0aW9uKHgsYSl7eC5vdXQoJzxkaXYgY2xhc3M9Impzb25kaWZmcGF0Y2gtdmFsdWUiPicpLHRoaXMuZm9ybWF0VmFsdWUoeCxhWzBdKSx4Lm91dCgiPC9kaXY+Iil9LGUucHJvdG90eXBlLmZvcm1hdF9tb2RpZmllZD1mdW5jdGlvbih4LGEpe3gub3V0KCc8ZGl2IGNsYXNzPSJqc29uZGlmZnBhdGNoLXZhbHVlIGpzb25kaWZmcGF0Y2gtbGVmdC12YWx1ZSI+JyksdGhpcy5mb3JtYXRWYWx1ZSh4LGFbMF0pLHgub3V0KCc8L2Rpdj48ZGl2IGNsYXNzPSJqc29uZGlmZnBhdGNoLXZhbHVlIGpzb25kaWZmcGF0Y2gtcmlnaHQtdmFsdWUiPicpLHRoaXMuZm9ybWF0VmFsdWUoeCxhWzFdKSx4Lm91dCgiPC9kaXY+Iil9LGUucHJvdG90eXBlLmZvcm1hdF9kZWxldGVkPWZ1bmN0aW9uKHgsYSl7eC5vdXQoJzxkaXYgY2xhc3M9Impzb25kaWZmcGF0Y2gtdmFsdWUiPicpLHRoaXMuZm9ybWF0VmFsdWUoeCxhWzBdKSx4Lm91dCgiPC9kaXY+Iil9LGUucHJvdG90eXBlLmZvcm1hdF9tb3ZlZD1mdW5jdGlvbih4LGEpe3gub3V0KCc8ZGl2IGNsYXNzPSJqc29uZGlmZnBhdGNoLXZhbHVlIj4nKSx0aGlzLmZvcm1hdFZhbHVlKHgsYVswXSkseC5vdXQoJzwvZGl2PjxkaXYgY2xhc3M9Impzb25kaWZmcGF0Y2gtbW92ZWQtZGVzdGluYXRpb24iPicrYVsxXSsiPC9kaXY+IikseC5vdXQoJzxkaXYgY2xhc3M9Impzb25kaWZmcGF0Y2gtYXJyb3ciIHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IGxlZnQ6IC0zNHB4OyI+ICAgICAgICA8c3ZnIHdpZHRoPSIzMCIgaGVpZ2h0PSI2MCIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgZGlzcGxheTogbm9uZTsiPiAgICAgICAgPGRlZnM+ICAgICAgICAgICAgPG1hcmtlciBpZD0ibWFya2VyQXJyb3ciIG1hcmtlcldpZHRoPSI4IiBtYXJrZXJIZWlnaHQ9IjgiIHJlZng9IjIiIHJlZnk9IjQiICAgICAgICAgICAgICAgICAgIG9yaWVudD0iYXV0byIgbWFya2VyVW5pdHM9InVzZXJTcGFjZU9uVXNlIj4gICAgICAgICAgICAgICAgPHBhdGggZD0iTTEsMSBMMSw3IEw3LDQgTDEsMSIgc3R5bGU9ImZpbGw6ICMzMzk7IiAvPiAgICAgICAgICAgIDwvbWFya2VyPiAgICAgICAgPC9kZWZzPiAgICAgICAgPHBhdGggZD0iTTMwLDAgUS0xMCwyNSAyNiw1MCIgc3R5bGU9InN0cm9rZTogIzg4Zjsgc3Ryb2tlLXdpZHRoOiAycHg7IGZpbGw6IG5vbmU7ICAgICAgICBzdHJva2Utb3BhY2l0eTogMC41OyBtYXJrZXItZW5kOiB1cmwoI21hcmtlckFycm93KTsiPjwvcGF0aD4gICAgICAgIDwvc3ZnPiAgICAgICAgPC9kaXY+JykseC5oYXNBcnJvd3M9ITB9LGUucHJvdG90eXBlLmZvcm1hdF90ZXh0ZGlmZj1mdW5jdGlvbih4LGEpe3gub3V0KCc8ZGl2IGNsYXNzPSJqc29uZGlmZnBhdGNoLXZhbHVlIj4nKSx0aGlzLmZvcm1hdFRleHREaWZmU3RyaW5nKHgsYVswXSkseC5vdXQoIjwvZGl2PiIpfTt2YXIgZyxoPWZ1bmN0aW9uKHgsYSxiKXt2YXIgYz1hfHxkb2N1bWVudC5ib2R5LGQ9Impzb25kaWZmcGF0Y2gtdW5jaGFuZ2VkLSIsZT17c2hvd2luZzpkKyJzaG93aW5nIixoaWRpbmc6ZCsiaGlkaW5nIix2aXNpYmxlOmQrInZpc2libGUiLGhpZGRlbjpkKyJoaWRkZW4ifSxnPWMuY2xhc3NMaXN0O2lmKGcpe2lmKCFiKXJldHVybiBnLnJlbW92ZShlLnNob3dpbmcpLGcucmVtb3ZlKGUuaGlkaW5nKSxnLnJlbW92ZShlLnZpc2libGUpLGcucmVtb3ZlKGUuaGlkZGVuKSx2b2lkKCExPT09eCYmZy5hZGQoZS5oaWRkZW4pKTshMT09PXg/KGcucmVtb3ZlKGUuc2hvd2luZyksZy5hZGQoZS52aXNpYmxlKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Zy5hZGQoZS5oaWRpbmcpfSwxMCkpOihnLnJlbW92ZShlLmhpZGluZyksZy5hZGQoZS5zaG93aW5nKSxnLnJlbW92ZShlLmhpZGRlbikpO3ZhciBoPXNldEludGVydmFsKGZ1bmN0aW9uKCl7ZihjKX0sMTAwKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Zy5yZW1vdmUoZS5zaG93aW5nKSxnLnJlbW92ZShlLmhpZGluZyksITE9PT14PyhnLmFkZChlLmhpZGRlbiksZy5yZW1vdmUoZS52aXNpYmxlKSk6KGcuYWRkKGUudmlzaWJsZSksZy5yZW1vdmUoZS5oaWRkZW4pKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Zy5yZW1vdmUoZS52aXNpYmxlKSxjbGVhckludGVydmFsKGgpfSxiKzQwMCl9LGIpfX0saT1mdW5jdGlvbih4LGEpe3JldHVybiBoKCExLHgsYSl9O2IuSHRtbEZvcm1hdHRlcj1lLGIuc2hvd1VuY2hhbmdlZD1oLGIuaGlkZVVuY2hhbmdlZD1pLGIuZm9ybWF0PWZ1bmN0aW9uKHgsYSl7cmV0dXJuIGd8fChnPW5ldyBlKSxnLmZvcm1hdCh4LGEpfX0seyIuL2Jhc2UiOjR9XSw2OltmdW5jdGlvbih4LGEsYil7dmFyIGM9eCgiLi4vZW52aXJvbm1lbnQiKTtpZihiLmJhc2U9eCgiLi9iYXNlIiksYi5odG1sPXgoIi4vaHRtbCIpLGIuYW5ub3RhdGVkPXgoIi4vYW5ub3RhdGVkIiksIWMuaXNCcm93c2VyKXt2YXIgZD0iLi9jb25zb2xlIjtiLmNvbnNvbGU9eChkKX19LHsiLi4vZW52aXJvbm1lbnQiOjIsIi4vYW5ub3RhdGVkIjozLCIuL2Jhc2UiOjQsIi4vaHRtbCI6NX1dfSx7fSxbMV0pKDEpfSk7" }, "lib/fflate.js": { "content_type": "text/javascript", "data": "LyogaHR0cHM6Ly9naXRodWIuY29tLzEwMWFycm93ei9mZmxhdGUgdjAuNi4xMCAqLwoKIWZ1bmN0aW9uKGYpe3R5cGVvZiBtb2R1bGUhPSd1bmRlZmluZWQnJiZ0eXBlb2YgZXhwb3J0cz09J29iamVjdCc/bW9kdWxlLmV4cG9ydHM9ZigpOnR5cGVvZiBkZWZpbmUhPSd1bmRlZmluZWQnJiZkZWZpbmUuYW1kP2RlZmluZShbJ2ZmbGF0ZScsZl0pOih0eXBlb2Ygc2VsZiE9J3VuZGVmaW5lZCc/c2VsZjp0aGlzKS5mZmxhdGU9ZigpfShmdW5jdGlvbigpe3ZhciBfZT17fTsidXNlIHN0cmljdCI7dmFyIHQ9KHR5cGVvZiBtb2R1bGUhPSd1bmRlZmluZWQnJiZ0eXBlb2YgZXhwb3J0cz09J29iamVjdCc/ZnVuY3Rpb24oX2YpeyJ1c2Ugc3RyaWN0Ijt2YXIgZSx0PSI7dmFyIF9fdz1yZXF1aXJlKCd3b3JrZXJfdGhyZWFkcycpO19fdy5wYXJlbnRQb3J0Lm9uKCdtZXNzYWdlJyxmdW5jdGlvbihtKXtvbm1lc3NhZ2Uoe2RhdGE6bX0pfSkscG9zdE1lc3NhZ2U9ZnVuY3Rpb24obSx0KXtfX3cucGFyZW50UG9ydC5wb3N0TWVzc2FnZShtLHQpfSxjbG9zZT1wcm9jZXNzLmV4aXQ7c2VsZj1nbG9iYWwiO3RyeXtlPXJlcXVpcmUoIndvcmtlcl90aHJlYWRzIikuV29ya2VyfWNhdGNoKGUpe31leHBvcnRzLmRlZmF1bHQ9ZT9mdW5jdGlvbihyLG4sbyxhLHMpe3ZhciB1PSExLGk9bmV3IGUocit0LHtldmFsOiEwfSkub24oImVycm9yIiwoZnVuY3Rpb24oZSl7cmV0dXJuIHMoZSxudWxsKX0pKS5vbigibWVzc2FnZSIsKGZ1bmN0aW9uKGUpe3JldHVybiBzKG51bGwsZSl9KSkub24oImV4aXQiLChmdW5jdGlvbihlKXtlJiYhdSYmcyhFcnJvcigiZXhpdGVkIHdpdGggY29kZSAiK2UpLG51bGwpfSkpO3JldHVybiBpLnBvc3RNZXNzYWdlKG8sYSksaS50ZXJtaW5hdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdT0hMCxlLnByb3RvdHlwZS50ZXJtaW5hdGUuY2FsbChpKX0saX06ZnVuY3Rpb24oZSx0LHIsbixvKXtzZXRJbW1lZGlhdGUoKGZ1bmN0aW9uKCl7cmV0dXJuIG8oRXJyb3IoImFzeW5jIG9wZXJhdGlvbnMgdW5zdXBwb3J0ZWQgLSB1cGRhdGUgdG8gTm9kZSAxMisgKG9yIE5vZGUgMTAtMTEgd2l0aCB0aGUgLS1leHBlcmltZW50YWwtd29ya2VyIENMSSBmbGFnKSIpLG51bGwpfSkpO3ZhciBhPWZ1bmN0aW9uKCl7fTtyZXR1cm57dGVybWluYXRlOmEscG9zdE1lc3NhZ2U6YX19O3JldHVybiBfZn06ZnVuY3Rpb24oX2YpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT17fTtfZi5kZWZhdWx0PWZ1bmN0aW9uKHIsdCxuLG8sYSl7dmFyIHU9bmV3IFdvcmtlcihlW3RdfHwoZVt0XT1VUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFtyXSx7dHlwZToidGV4dC9qYXZhc2NyaXB0In0pKSkpO3JldHVybiB1Lm9uZXJyb3I9ZnVuY3Rpb24oZSl7cmV0dXJuIGEoZS5lcnJvcixudWxsKX0sdS5vbm1lc3NhZ2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGEobnVsbCxlLmRhdGEpfSx1LnBvc3RNZXNzYWdlKG4sbyksdX07cmV0dXJuIF9mfSkoe30pLG49VWludDhBcnJheSxyPVVpbnQxNkFycmF5LGU9VWludDMyQXJyYXksaT1uZXcgbihbMCwwLDAsMCwwLDAsMCwwLDEsMSwxLDEsMiwyLDIsMiwzLDMsMywzLDQsNCw0LDQsNSw1LDUsNSwwLDAsMCwwXSksbz1uZXcgbihbMCwwLDAsMCwxLDEsMiwyLDMsMyw0LDQsNSw1LDYsNiw3LDcsOCw4LDksOSwxMCwxMCwxMSwxMSwxMiwxMiwxMywxMywwLDBdKSxhPW5ldyBuKFsxNiwxNywxOCwwLDgsNyw5LDYsMTAsNSwxMSw0LDEyLDMsMTMsMiwxNCwxLDE1XSkscz1mdW5jdGlvbih0LG4pe2Zvcih2YXIgaT1uZXcgcigzMSksbz0wO288MzE7KytvKWlbb109bis9MTw8dFtvLTFdO3ZhciBhPW5ldyBlKGlbMzBdKTtmb3Iobz0xO288MzA7KytvKWZvcih2YXIgcz1pW29dO3M8aVtvKzFdOysrcylhW3NdPXMtaVtvXTw8NXxvO3JldHVybltpLGFdfSxmPXMoaSwyKSx1PWZbMF0saD1mWzFdO3VbMjhdPTI1OCxoWzI1OF09Mjg7Zm9yKHZhciBjPXMobywwKSxsPWNbMF0scD1jWzFdLHY9bmV3IHIoMzI3NjgpLGQ9MDtkPDMyNzY4OysrZCl7dmFyIGc9KDQzNjkwJmQpPj4+MXwoMjE4NDUmZCk8PDE7dltkXT0oKDY1MjgwJihnPSg2MTY4MCYoZz0oNTI0MjgmZyk+Pj4yfCgxMzEwNyZnKTw8MikpPj4+NHwoMzg1NSZnKTw8NCkpPj4+OHwoMjU1JmcpPDw4KT4+PjF9dmFyIHc9ZnVuY3Rpb24odCxuLGUpe2Zvcih2YXIgaT10Lmxlbmd0aCxvPTAsYT1uZXcgcihuKTtvPGk7KytvKSsrYVt0W29dLTFdO3ZhciBzLGY9bmV3IHIobik7Zm9yKG89MDtvPG47KytvKWZbb109ZltvLTFdK2Fbby0xXTw8MTtpZihlKXtzPW5ldyByKDE8PG4pO3ZhciB1PTE1LW47Zm9yKG89MDtvPGk7KytvKWlmKHRbb10pZm9yKHZhciBoPW88PDR8dFtvXSxjPW4tdFtvXSxsPWZbdFtvXS0xXSsrPDxjLHA9bHwoMTw8YyktMTtsPD1wOysrbClzW3ZbbF0+Pj51XT1ofWVsc2UgZm9yKHM9bmV3IHIoaSksbz0wO288aTsrK28pdFtvXSYmKHNbb109dltmW3Rbb10tMV0rK10+Pj4xNS10W29dKTtyZXR1cm4gc30seT1uZXcgbigyODgpO2ZvcihkPTA7ZDwxNDQ7KytkKXlbZF09ODtmb3IoZD0xNDQ7ZDwyNTY7KytkKXlbZF09OTtmb3IoZD0yNTY7ZDwyODA7KytkKXlbZF09Nztmb3IoZD0yODA7ZDwyODg7KytkKXlbZF09ODt2YXIgbT1uZXcgbigzMik7Zm9yKGQ9MDtkPDMyOysrZCltW2RdPTU7dmFyIGI9dyh5LDksMCkseD13KHksOSwxKSx6PXcobSw1LDApLGs9dyhtLDUsMSksTT1mdW5jdGlvbih0KXtmb3IodmFyIG49dFswXSxyPTE7cjx0Lmxlbmd0aDsrK3IpdFtyXT5uJiYobj10W3JdKTtyZXR1cm4gbn0sQT1mdW5jdGlvbih0LG4scil7dmFyIGU9bi84fDA7cmV0dXJuKHRbZV18dFtlKzFdPDw4KT4+KDcmbikmcn0sUz1mdW5jdGlvbih0LG4pe3ZhciByPW4vOHwwO3JldHVybih0W3JdfHRbcisxXTw8OHx0W3IrMl08PDE2KT4+KDcmbil9LEQ9ZnVuY3Rpb24odCl7cmV0dXJuKHQvOHwwKSsoNyZ0JiYxKX0sQz1mdW5jdGlvbih0LGksbyl7KG51bGw9PWl8fGk8MCkmJihpPTApLChudWxsPT1vfHxvPnQubGVuZ3RoKSYmKG89dC5sZW5ndGgpO3ZhciBhPW5ldyh0IGluc3RhbmNlb2Ygcj9yOnQgaW5zdGFuY2VvZiBlP2U6bikoby1pKTtyZXR1cm4gYS5zZXQodC5zdWJhcnJheShpLG8pKSxhfSxVPWZ1bmN0aW9uKHQscixlKXt2YXIgcz10Lmxlbmd0aDtpZighc3x8ZSYmIWUubCYmczw1KXJldHVybiByfHxuZXcgbigwKTt2YXIgZj0hcnx8ZSxoPSFlfHxlLmk7ZXx8KGU9e30pLHJ8fChyPW5ldyBuKDMqcykpO3ZhciBjPWZ1bmN0aW9uKHQpe3ZhciBlPXIubGVuZ3RoO2lmKHQ+ZSl7dmFyIGk9bmV3IG4oTWF0aC5tYXgoMiplLHQpKTtpLnNldChyKSxyPWl9fSxwPWUuZnx8MCx2PWUucHx8MCxkPWUuYnx8MCxnPWUubCx5PWUuZCxtPWUubSxiPWUubix6PTgqcztkb3tpZighZyl7ZS5mPXA9QSh0LHYsMSk7dmFyIFU9QSh0LHYrMSwzKTtpZih2Kz0zLCFVKXt2YXIgST10WyhZPUQodikrNCktNF18dFtZLTNdPDw4LE89WStJO2lmKE8+cyl7aWYoaCl0aHJvdyJ1bmV4cGVjdGVkIEVPRiI7YnJlYWt9ZiYmYyhkK0kpLHIuc2V0KHQuc3ViYXJyYXkoWSxPKSxkKSxlLmI9ZCs9SSxlLnA9dj04Kk87Y29udGludWV9aWYoMT09VSlnPXgseT1rLG09OSxiPTU7ZWxzZXtpZigyIT1VKXRocm93ImludmFsaWQgYmxvY2sgdHlwZSI7dmFyIFQ9QSh0LHYsMzEpKzI1NyxaPUEodCx2KzEwLDE1KSs0LEY9VCtBKHQsdis1LDMxKSsxO3YrPTE0O2Zvcih2YXIgRT1uZXcgbihGKSxHPW5ldyBuKDE5KSxQPTA7UDxaOysrUClHW2FbUF1dPUEodCx2KzMqUCw3KTt2Kz0zKlo7dmFyIGo9TShHKSxxPSgxPDxqKS0xLEg9dyhHLGosMSk7Zm9yKFA9MDtQPEY7KXt2YXIgWSxCPUhbQSh0LHYscSldO2lmKHYrPTE1JkIsKFk9Qj4+PjQpPDE2KUVbUCsrXT1ZO2Vsc2V7dmFyIEo9MCxLPTA7Zm9yKDE2PT1ZPyhLPTMrQSh0LHYsMyksdis9MixKPUVbUC0xXSk6MTc9PVk/KEs9MytBKHQsdiw3KSx2Kz0zKToxOD09WSYmKEs9MTErQSh0LHYsMTI3KSx2Kz03KTtLLS07KUVbUCsrXT1KfX12YXIgTD1FLnN1YmFycmF5KDAsVCksTj1FLnN1YmFycmF5KFQpO209TShMKSxiPU0oTiksZz13KEwsbSwxKSx5PXcoTixiLDEpfWlmKHY+eil7aWYoaCl0aHJvdyJ1bmV4cGVjdGVkIEVPRiI7YnJlYWt9fWYmJmMoZCsxMzEwNzIpO2Zvcih2YXIgUT0oMTw8bSktMSxSPSgxPDxiKS0xLFY9djs7Vj12KXt2YXIgVz0oSj1nW1ModCx2KSZRXSk+Pj40O2lmKCh2Kz0xNSZKKT56KXtpZihoKXRocm93InVuZXhwZWN0ZWQgRU9GIjticmVha31pZighSil0aHJvdyJpbnZhbGlkIGxlbmd0aC9saXRlcmFsIjtpZihXPDI1NilyW2QrK109VztlbHNle2lmKDI1Nj09Vyl7Vj12LGc9bnVsbDticmVha312YXIgWD1XLTI1NDtXPjI2NCYmKFg9QSh0LHYsKDE8PCh0dD1pW1A9Vy0yNTddKSktMSkrdVtQXSx2Kz10dCk7dmFyICQ9eVtTKHQsdikmUl0sXz0kPj4+NDtpZighJCl0aHJvdyJpbnZhbGlkIGRpc3RhbmNlIjtpZih2Kz0xNSYkLE49bFtfXSxfPjMpe3ZhciB0dD1vW19dO04rPVModCx2KSYoMTw8dHQpLTEsdis9dHR9aWYodj56KXtpZihoKXRocm93InVuZXhwZWN0ZWQgRU9GIjticmVha31mJiZjKGQrMTMxMDcyKTtmb3IodmFyIG50PWQrWDtkPG50O2QrPTQpcltkXT1yW2QtTl0scltkKzFdPXJbZCsxLU5dLHJbZCsyXT1yW2QrMi1OXSxyW2QrM109cltkKzMtTl07ZD1udH19ZS5sPWcsZS5wPVYsZS5iPWQsZyYmKHA9MSxlLm09bSxlLmQ9eSxlLm49Yil9d2hpbGUoIXApO3JldHVybiBkPT1yLmxlbmd0aD9yOkMociwwLGQpfSxJPWZ1bmN0aW9uKHQsbixyKXt2YXIgZT1uLzh8MDt0W2VdfD1yPDw9NyZuLHRbZSsxXXw9cj4+Pjh9LE89ZnVuY3Rpb24odCxuLHIpe3ZhciBlPW4vOHwwO3RbZV18PXI8PD03Jm4sdFtlKzFdfD1yPj4+OCx0W2UrMl18PXI+Pj4xNn0sVD1mdW5jdGlvbih0LGUpe2Zvcih2YXIgaT1bXSxvPTA7bzx0Lmxlbmd0aDsrK28pdFtvXSYmaS5wdXNoKHtzOm8sZjp0W29dfSk7dmFyIGE9aS5sZW5ndGgscz1pLnNsaWNlKCk7aWYoIWEpcmV0dXJuW3EsMF07aWYoMT09YSl7dmFyIGY9bmV3IG4oaVswXS5zKzEpO3JldHVybiBmW2lbMF0uc109MSxbZiwxXX1pLnNvcnQoKGZ1bmN0aW9uKHQsbil7cmV0dXJuIHQuZi1uLmZ9KSksaS5wdXNoKHtzOi0xLGY6MjUwMDF9KTt2YXIgdT1pWzBdLGg9aVsxXSxjPTAsbD0xLHA9Mjtmb3IoaVswXT17czotMSxmOnUuZitoLmYsbDp1LHI6aH07bCE9YS0xOyl1PWlbaVtjXS5mPGlbcF0uZj9jKys6cCsrXSxoPWlbYyE9bCYmaVtjXS5mPGlbcF0uZj9jKys6cCsrXSxpW2wrK109e3M6LTEsZjp1LmYraC5mLGw6dSxyOmh9O3ZhciB2PXNbMF0ucztmb3Iobz0xO288YTsrK28pc1tvXS5zPnYmJih2PXNbb10ucyk7dmFyIGQ9bmV3IHIodisxKSxnPVooaVtsLTFdLGQsMCk7aWYoZz5lKXtvPTA7dmFyIHc9MCx5PWctZSxtPTE8PHk7Zm9yKHMuc29ydCgoZnVuY3Rpb24odCxuKXtyZXR1cm4gZFtuLnNdLWRbdC5zXXx8dC5mLW4uZn0pKTtvPGE7KytvKXt2YXIgYj1zW29dLnM7aWYoIShkW2JdPmUpKWJyZWFrO3crPW0tKDE8PGctZFtiXSksZFtiXT1lfWZvcih3Pj4+PXk7dz4wOyl7dmFyIHg9c1tvXS5zO2RbeF08ZT93LT0xPDxlLWRbeF0rKy0xOisrb31mb3IoO28+PTAmJnc7LS1vKXt2YXIgej1zW29dLnM7ZFt6XT09ZSYmKC0tZFt6XSwrK3cpfWc9ZX1yZXR1cm5bbmV3IG4oZCksZ119LFo9ZnVuY3Rpb24odCxuLHIpe3JldHVybi0xPT10LnM/TWF0aC5tYXgoWih0LmwsbixyKzEpLFoodC5yLG4scisxKSk6blt0LnNdPXJ9LEY9ZnVuY3Rpb24odCl7Zm9yKHZhciBuPXQubGVuZ3RoO24mJiF0Wy0tbl07KTtmb3IodmFyIGU9bmV3IHIoKytuKSxpPTAsbz10WzBdLGE9MSxzPWZ1bmN0aW9uKHQpe2VbaSsrXT10fSxmPTE7Zjw9bjsrK2YpaWYodFtmXT09byYmZiE9bikrK2E7ZWxzZXtpZighbyYmYT4yKXtmb3IoO2E+MTM4O2EtPTEzOClzKDMyNzU0KTthPjImJihzKGE+MTA/YS0xMTw8NXwyODY5MDphLTM8PDV8MTIzMDUpLGE9MCl9ZWxzZSBpZihhPjMpe2ZvcihzKG8pLC0tYTthPjY7YS09NilzKDgzMDQpO2E+MiYmKHMoYS0zPDw1fDgyMDgpLGE9MCl9Zm9yKDthLS07KXMobyk7YT0xLG89dFtmXX1yZXR1cm5bZS5zdWJhcnJheSgwLGkpLG5dfSxFPWZ1bmN0aW9uKHQsbil7Zm9yKHZhciByPTAsZT0wO2U8bi5sZW5ndGg7KytlKXIrPXRbZV0qbltlXTtyZXR1cm4gcn0sRz1mdW5jdGlvbih0LG4scil7dmFyIGU9ci5sZW5ndGgsaT1EKG4rMik7dFtpXT0yNTUmZSx0W2krMV09ZT4+PjgsdFtpKzJdPTI1NV50W2ldLHRbaSszXT0yNTVedFtpKzFdO2Zvcih2YXIgbz0wO288ZTsrK28pdFtpK28rNF09cltvXTtyZXR1cm4gOCooaSs0K2UpfSxQPWZ1bmN0aW9uKHQsbixlLHMsZix1LGgsYyxsLHAsdil7SShuLHYrKyxlKSwrK2ZbMjU2XTtmb3IodmFyIGQ9VChmLDE1KSxnPWRbMF0seD1kWzFdLGs9VCh1LDE1KSxNPWtbMF0sQT1rWzFdLFM9RihnKSxEPVNbMF0sQz1TWzFdLFU9RihNKSxaPVVbMF0sUD1VWzFdLGo9bmV3IHIoMTkpLHE9MDtxPEQubGVuZ3RoOysrcSlqWzMxJkRbcV1dKys7Zm9yKHE9MDtxPFoubGVuZ3RoOysrcSlqWzMxJlpbcV1dKys7Zm9yKHZhciBIPVQoaiw3KSxZPUhbMF0sQj1IWzFdLEo9MTk7Sj40JiYhWVthW0otMV1dOy0tSik7dmFyIEssTCxOLFEsUj1wKzU8PDMsVj1FKGYseSkrRSh1LG0pK2gsVz1FKGYsZykrRSh1LE0pK2grMTQrMypKK0UoaixZKSsoMipqWzE2XSszKmpbMTddKzcqalsxOF0pO2lmKFI8PVYmJlI8PVcpcmV0dXJuIEcobix2LHQuc3ViYXJyYXkobCxsK3ApKTtpZihJKG4sdiwxKyhXPFYpKSx2Kz0yLFc8Vil7Sz13KGcseCwwKSxMPWcsTj13KE0sQSwwKSxRPU07dmFyIFg9dyhZLEIsMCk7Zm9yKEkobix2LEMtMjU3KSxJKG4sdis1LFAtMSksSShuLHYrMTAsSi00KSx2Kz0xNCxxPTA7cTxKOysrcSlJKG4sdiszKnEsWVthW3FdXSk7dis9MypKO2Zvcih2YXIgJD1bRCxaXSxfPTA7XzwyOysrXyl7dmFyIHR0PSRbX107Zm9yKHE9MDtxPHR0Lmxlbmd0aDsrK3EpSShuLHYsWFtudD0zMSZ0dFtxXV0pLHYrPVlbbnRdLG50PjE1JiYoSShuLHYsdHRbcV0+Pj41JjEyNyksdis9dHRbcV0+Pj4xMil9fWVsc2UgSz1iLEw9eSxOPXosUT1tO2ZvcihxPTA7cTxjOysrcSlpZihzW3FdPjI1NSl7dmFyIG50O08obix2LEtbMjU3KyhudD1zW3FdPj4+MTgmMzEpXSksdis9TFtudCsyNTddLG50PjcmJihJKG4sdixzW3FdPj4+MjMmMzEpLHYrPWlbbnRdKTt2YXIgcnQ9MzEmc1txXTtPKG4sdixOW3J0XSksdis9UVtydF0scnQ+MyYmKE8obix2LHNbcV0+Pj41JjgxOTEpLHYrPW9bcnRdKX1lbHNlIE8obix2LEtbc1txXV0pLHYrPUxbc1txXV07cmV0dXJuIE8obix2LEtbMjU2XSksditMWzI1Nl19LGo9bmV3IGUoWzY1NTQwLDEzMTA4MCwxMzEwODgsMTMxMTA0LDI2MjE3NiwxMDQ4NzA0LDEwNDg4MzIsMjExNDU2MCwyMTE3NjMyXSkscT1uZXcgbigwKSxIPWZ1bmN0aW9uKHQsYSxzLGYsdSxjKXt2YXIgbD10Lmxlbmd0aCx2PW5ldyBuKGYrbCs1KigxK01hdGguY2VpbChsLzdlMykpK3UpLGQ9di5zdWJhcnJheShmLHYubGVuZ3RoLXUpLGc9MDtpZighYXx8bDw4KWZvcih2YXIgdz0wO3c8PWw7dys9NjU1MzUpe3ZhciB5PXcrNjU1MzU7eTxsP2c9RyhkLGcsdC5zdWJhcnJheSh3LHkpKTooZFt3XT1jLGc9RyhkLGcsdC5zdWJhcnJheSh3LGwpKSl9ZWxzZXtmb3IodmFyIG09althLTFdLGI9bT4+PjEzLHg9ODE5MSZtLHo9KDE8PHMpLTEsaz1uZXcgcigzMjc2OCksTT1uZXcgcih6KzEpLEE9TWF0aC5jZWlsKHMvMyksUz0yKkEsVT1mdW5jdGlvbihuKXtyZXR1cm4odFtuXV50W24rMV08PEFedFtuKzJdPDxTKSZ6fSxJPW5ldyBlKDI1ZTMpLE89bmV3IHIoMjg4KSxUPW5ldyByKDMyKSxaPTAsRj0wLEU9KHc9MCwwKSxIPTAsWT0wO3c8bDsrK3cpe3ZhciBCPVUodyksSj0zMjc2NyZ3LEs9TVtCXTtpZihrW0pdPUssTVtCXT1KLEg8PXcpe3ZhciBMPWwtdztpZigoWj43ZTN8fEU+MjQ1NzYpJiZMPjQyMyl7Zz1QKHQsZCwwLEksTyxULEYsRSxZLHctWSxnKSxFPVo9Rj0wLFk9dztmb3IodmFyIE49MDtOPDI4NjsrK04pT1tOXT0wO2ZvcihOPTA7TjwzMDsrK04pVFtOXT0wfXZhciBRPTIsUj0wLFY9eCxXPUotSyYzMjc2NztpZihMPjImJkI9PVUody1XKSlmb3IodmFyIFg9TWF0aC5taW4oYixMKS0xLCQ9TWF0aC5taW4oMzI3NjcsdyksXz1NYXRoLm1pbigyNTgsTCk7Vzw9JCYmLS1WJiZKIT1LOyl7aWYodFt3K1FdPT10W3crUS1XXSl7Zm9yKHZhciB0dD0wO3R0PF8mJnRbdyt0dF09PXRbdyt0dC1XXTsrK3R0KTtpZih0dD5RKXtpZihRPXR0LFI9Vyx0dD5YKWJyZWFrO3ZhciBudD1NYXRoLm1pbihXLHR0LTIpLHJ0PTA7Zm9yKE49MDtOPG50OysrTil7dmFyIGV0PXctVytOKzMyNzY4JjMyNzY3LGl0PWV0LWtbZXRdKzMyNzY4JjMyNzY3O2l0PnJ0JiYocnQ9aXQsSz1ldCl9fX1XKz0oSj1LKS0oSz1rW0pdKSszMjc2OCYzMjc2N31pZihSKXtJW0UrK109MjY4NDM1NDU2fGhbUV08PDE4fHBbUl07dmFyIG90PTMxJmhbUV0sYXQ9MzEmcFtSXTtGKz1pW290XStvW2F0XSwrK09bMjU3K290XSwrK1RbYXRdLEg9dytRLCsrWn1lbHNlIElbRSsrXT10W3ddLCsrT1t0W3ddXX19Zz1QKHQsZCxjLEksTyxULEYsRSxZLHctWSxnKSwhYyYmNyZnJiYoZz1HKGQsZysxLHEpKX1yZXR1cm4gQyh2LDAsZitEKGcpK3UpfSxZPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PW5ldyBJbnQzMkFycmF5KDI1Niksbj0wO248MjU2Oysrbil7Zm9yKHZhciByPW4sZT05Oy0tZTspcj0oMSZyJiYtMzA2Njc0OTEyKV5yPj4+MTt0W25dPXJ9cmV0dXJuIHR9KCksQj1mdW5jdGlvbigpe3ZhciB0PS0xO3JldHVybntwOmZ1bmN0aW9uKG4pe2Zvcih2YXIgcj10LGU9MDtlPG4ubGVuZ3RoOysrZSlyPVlbMjU1JnJebltlXV1ecj4+Pjg7dD1yfSxkOmZ1bmN0aW9uKCl7cmV0dXJufnR9fX0sSj1mdW5jdGlvbigpe3ZhciB0PTEsbj0wO3JldHVybntwOmZ1bmN0aW9uKHIpe2Zvcih2YXIgZT10LGk9bixvPXIubGVuZ3RoLGE9MDthIT1vOyl7Zm9yKHZhciBzPU1hdGgubWluKGErMjY1NSxvKTthPHM7KythKWkrPWUrPXJbYV07ZT0oNjU1MzUmZSkrMTUqKGU+PjE2KSxpPSg2NTUzNSZpKSsxNSooaT4+MTYpfXQ9ZSxuPWl9LGQ6ZnVuY3Rpb24oKXtyZXR1cm4oMjU1Jih0JT02NTUyMSkpPDwyNHx0Pj4+ODw8MTZ8KDI1NSYobiU9NjU1MjEpKTw8OHxuPj4+OH19fSxLPWZ1bmN0aW9uKHQsbixyLGUsaSl7cmV0dXJuIEgodCxudWxsPT1uLmxldmVsPzY6bi5sZXZlbCxudWxsPT1uLm1lbT9NYXRoLmNlaWwoMS41Kk1hdGgubWF4KDgsTWF0aC5taW4oMTMsTWF0aC5sb2codC5sZW5ndGgpKSkpOjEyK24ubWVtLHIsZSwhaSl9LEw9ZnVuY3Rpb24odCxuKXt2YXIgcj17fTtmb3IodmFyIGUgaW4gdClyW2VdPXRbZV07Zm9yKHZhciBlIGluIG4pcltlXT1uW2VdO3JldHVybiByfSxOPWZ1bmN0aW9uKHQsbixyKXtmb3IodmFyIGU9dCgpLGk9IiIrdCxvPWkuc2xpY2UoaS5pbmRleE9mKCJbIikrMSxpLmxhc3RJbmRleE9mKCJdIikpLnJlcGxhY2UoLyAvZywiIikuc3BsaXQoIiwiKSxhPTA7YTxlLmxlbmd0aDsrK2Epe3ZhciBzPWVbYV0sZj1vW2FdO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBzKXtuKz0iOyIrZisiPSI7dmFyIHU9IiIrcztpZihzLnByb3RvdHlwZSlpZigtMSE9dS5pbmRleE9mKCJbbmF0aXZlIGNvZGVdIikpe3ZhciBoPXUuaW5kZXhPZigiICIsOCkrMTtuKz11LnNsaWNlKGgsdS5pbmRleE9mKCIoIixoKSl9ZWxzZSBmb3IodmFyIGMgaW4gbis9dSxzLnByb3RvdHlwZSluKz0iOyIrZisiLnByb3RvdHlwZS4iK2MrIj0iK3MucHJvdG90eXBlW2NdO2Vsc2Ugbis9dX1lbHNlIHJbZl09c31yZXR1cm5bbixyXX0sUT1bXSxSPWZ1bmN0aW9uKHQpe3ZhciBpPVtdO2Zvcih2YXIgbyBpbiB0KSh0W29daW5zdGFuY2VvZiBufHx0W29daW5zdGFuY2VvZiByfHx0W29daW5zdGFuY2VvZiBlKSYmaS5wdXNoKCh0W29dPW5ldyB0W29dLmNvbnN0cnVjdG9yKHRbb10pKS5idWZmZXIpO3JldHVybiBpfSxWPWZ1bmN0aW9uKG4scixlLGkpe3ZhciBvO2lmKCFRW2VdKXtmb3IodmFyIGE9IiIscz17fSxmPW4ubGVuZ3RoLTEsdT0wO3U8ZjsrK3UpYT0obz1OKG5bdV0sYSxzKSlbMF0scz1vWzFdO1FbZV09TihuW2ZdLGEscyl9dmFyIGg9TCh7fSxRW2VdWzFdKTtyZXR1cm4gdC5kZWZhdWx0KFFbZV1bMF0rIjtvbm1lc3NhZ2U9ZnVuY3Rpb24oZSl7Zm9yKHZhciBrIGluIGUuZGF0YSlzZWxmW2tdPWUuZGF0YVtrXTtvbm1lc3NhZ2U9IityKyJ9IixlLGgsUihoKSxpKX0sVz1mdW5jdGlvbigpe3JldHVybltuLHIsZSxpLG8sYSx1LGwseCxrLHYsdyxNLEEsUyxELEMsVSxBdCxydCxldF19LFg9ZnVuY3Rpb24oKXtyZXR1cm5bbixyLGUsaSxvLGEsaCxwLGIseSx6LG0sdixqLHEsdyxJLE8sVCxaLEYsRSxHLFAsRCxDLEgsSyx4dCxydF19LCQ9ZnVuY3Rpb24oKXtyZXR1cm5bY3QsdnQsaHQsQixZXX0sXz1mdW5jdGlvbigpe3JldHVybltsdCxwdF19LHR0PWZ1bmN0aW9uKCl7cmV0dXJuW2R0LGh0LEpdfSxudD1mdW5jdGlvbigpe3JldHVybltndF19LHJ0PWZ1bmN0aW9uKHQpe3JldHVybiBwb3N0TWVzc2FnZSh0LFt0LmJ1ZmZlcl0pfSxldD1mdW5jdGlvbih0KXtyZXR1cm4gdCYmdC5zaXplJiZuZXcgbih0LnNpemUpfSxpdD1mdW5jdGlvbih0LG4scixlLGksbyl7dmFyIGE9VihyLGUsaSwoZnVuY3Rpb24odCxuKXthLnRlcm1pbmF0ZSgpLG8odCxuKX0pKTtyZXR1cm4gYS5wb3N0TWVzc2FnZShbdCxuXSxuLmNvbnN1bWU/W3QuYnVmZmVyXTpbXSksZnVuY3Rpb24oKXthLnRlcm1pbmF0ZSgpfX0sb3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHQub25kYXRhPWZ1bmN0aW9uKHQsbil7cmV0dXJuIHBvc3RNZXNzYWdlKFt0LG5dLFt0LmJ1ZmZlcl0pfSxmdW5jdGlvbihuKXtyZXR1cm4gdC5wdXNoKG4uZGF0YVswXSxuLmRhdGFbMV0pfX0sYXQ9ZnVuY3Rpb24odCxuLHIsZSxpKXt2YXIgbyxhPVYodCxlLGksKGZ1bmN0aW9uKHQscil7dD8oYS50ZXJtaW5hdGUoKSxuLm9uZGF0YS5jYWxsKG4sdCkpOihyWzFdJiZhLnRlcm1pbmF0ZSgpLG4ub25kYXRhLmNhbGwobix0LHJbMF0sclsxXSkpfSkpO2EucG9zdE1lc3NhZ2Uociksbi5wdXNoPWZ1bmN0aW9uKHQscil7aWYobyl0aHJvdyJzdHJlYW0gZmluaXNoZWQiO2lmKCFuLm9uZGF0YSl0aHJvdyJubyBzdHJlYW0gaGFuZGxlciI7YS5wb3N0TWVzc2FnZShbdCxvPXJdLFt0LmJ1ZmZlcl0pfSxuLnRlcm1pbmF0ZT1mdW5jdGlvbigpe2EudGVybWluYXRlKCl9fSxzdD1mdW5jdGlvbih0LG4pe3JldHVybiB0W25dfHRbbisxXTw8OH0sZnQ9ZnVuY3Rpb24odCxuKXtyZXR1cm4odFtuXXx0W24rMV08PDh8dFtuKzJdPDwxNnx0W24rM108PDI0KT4+PjB9LHV0PWZ1bmN0aW9uKHQsbil7cmV0dXJuIGZ0KHQsbikrNDI5NDk2NzI5NipmdCh0LG4rNCl9LGh0PWZ1bmN0aW9uKHQsbixyKXtmb3IoO3I7KytuKXRbbl09cixyPj4+PTh9LGN0PWZ1bmN0aW9uKHQsbil7dmFyIHI9bi5maWxlbmFtZTtpZih0WzBdPTMxLHRbMV09MTM5LHRbMl09OCx0WzhdPW4ubGV2ZWw8Mj80Ojk9PW4ubGV2ZWw/MjowLHRbOV09MywwIT1uLm10aW1lJiZodCh0LDQsTWF0aC5mbG9vcihuZXcgRGF0ZShuLm10aW1lfHxEYXRlLm5vdygpKS8xZTMpKSxyKXt0WzNdPTg7Zm9yKHZhciBlPTA7ZTw9ci5sZW5ndGg7KytlKXRbZSsxMF09ci5jaGFyQ29kZUF0KGUpfX0sbHQ9ZnVuY3Rpb24odCl7aWYoMzEhPXRbMF18fDEzOSE9dFsxXXx8OCE9dFsyXSl0aHJvdyJpbnZhbGlkIGd6aXAgZGF0YSI7dmFyIG49dFszXSxyPTEwOzQmbiYmKHIrPXRbMTBdfDIrKHRbMTFdPDw4KSk7Zm9yKHZhciBlPShuPj4zJjEpKyhuPj40JjEpO2U+MDtlLT0hdFtyKytdKTtyZXR1cm4gcisoMiZuKX0scHQ9ZnVuY3Rpb24odCl7dmFyIG49dC5sZW5ndGg7cmV0dXJuKHRbbi00XXx0W24tM108PDh8dFtuLTJdPDwxNnx0W24tMV08PDI0KT4+PjB9LHZ0PWZ1bmN0aW9uKHQpe3JldHVybiAxMCsodC5maWxlbmFtZSYmdC5maWxlbmFtZS5sZW5ndGgrMXx8MCl9LGR0PWZ1bmN0aW9uKHQsbil7dmFyIHI9bi5sZXZlbCxlPTA9PXI/MDpyPDY/MTo5PT1yPzM6Mjt0WzBdPTEyMCx0WzFdPWU8PDZ8KGU/MzItMiplOjEpfSxndD1mdW5jdGlvbih0KXtpZig4IT0oMTUmdFswXSl8fHRbMF0+Pj40Pjd8fCh0WzBdPDw4fHRbMV0pJTMxKXRocm93ImludmFsaWQgemxpYiBkYXRhIjtpZigzMiZ0WzFdKXRocm93ImludmFsaWQgemxpYiBkYXRhOiBwcmVzZXQgZGljdGlvbmFyaWVzIG5vdCBzdXBwb3J0ZWQifTtmdW5jdGlvbiB3dCh0LG4pe3JldHVybiBufHwiZnVuY3Rpb24iIT10eXBlb2YgdHx8KG49dCx0PXt9KSx0aGlzLm9uZGF0YT1uLHR9dmFyIHl0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LG4pe258fCJmdW5jdGlvbiIhPXR5cGVvZiB0fHwobj10LHQ9e30pLHRoaXMub25kYXRhPW4sdGhpcy5vPXR8fHt9fXJldHVybiB0LnByb3RvdHlwZS5wPWZ1bmN0aW9uKHQsbil7dGhpcy5vbmRhdGEoSyh0LHRoaXMubywwLDAsIW4pLG4pfSx0LnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKHQsbil7aWYodGhpcy5kKXRocm93InN0cmVhbSBmaW5pc2hlZCI7aWYoIXRoaXMub25kYXRhKXRocm93Im5vIHN0cmVhbSBoYW5kbGVyIjt0aGlzLmQ9bix0aGlzLnAodCxufHwhMSl9LHR9KCk7X2UuRGVmbGF0ZT15dDt2YXIgbXQ9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCxuKXthdChbWCxmdW5jdGlvbigpe3JldHVybltvdCx5dF19XSx0aGlzLHd0LmNhbGwodGhpcyx0LG4pLChmdW5jdGlvbih0KXt2YXIgbj1uZXcgeXQodC5kYXRhKTtvbm1lc3NhZ2U9b3Qobil9KSw2KX19KCk7ZnVuY3Rpb24gYnQodCxuLHIpe2lmKHJ8fChyPW4sbj17fSksImZ1bmN0aW9uIiE9dHlwZW9mIHIpdGhyb3cibm8gY2FsbGJhY2siO3JldHVybiBpdCh0LG4sW1hdLChmdW5jdGlvbih0KXtyZXR1cm4gcnQoeHQodC5kYXRhWzBdLHQuZGF0YVsxXSkpfSksMCxyKX1mdW5jdGlvbiB4dCh0LG4pe3JldHVybiBLKHQsbnx8e30sMCwwKX1fZS5Bc3luY0RlZmxhdGU9bXQsX2UuZGVmbGF0ZT1idCxfZS5kZWZsYXRlU3luYz14dDt2YXIgenQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMucz17fSx0aGlzLnA9bmV3IG4oMCksdGhpcy5vbmRhdGE9dH1yZXR1cm4gdC5wcm90b3R5cGUuZT1mdW5jdGlvbih0KXtpZih0aGlzLmQpdGhyb3cic3RyZWFtIGZpbmlzaGVkIjtpZighdGhpcy5vbmRhdGEpdGhyb3cibm8gc3RyZWFtIGhhbmRsZXIiO3ZhciByPXRoaXMucC5sZW5ndGgsZT1uZXcgbihyK3QubGVuZ3RoKTtlLnNldCh0aGlzLnApLGUuc2V0KHQsciksdGhpcy5wPWV9LHQucHJvdG90eXBlLmM9ZnVuY3Rpb24odCl7dGhpcy5kPXRoaXMucy5pPXR8fCExO3ZhciBuPXRoaXMucy5iLHI9VSh0aGlzLnAsdGhpcy5vLHRoaXMucyk7dGhpcy5vbmRhdGEoQyhyLG4sdGhpcy5zLmIpLHRoaXMuZCksdGhpcy5vPUMocix0aGlzLnMuYi0zMjc2OCksdGhpcy5zLmI9dGhpcy5vLmxlbmd0aCx0aGlzLnA9Qyh0aGlzLnAsdGhpcy5zLnAvOHwwKSx0aGlzLnMucCY9N30sdC5wcm90b3R5cGUucHVzaD1mdW5jdGlvbih0LG4pe3RoaXMuZSh0KSx0aGlzLmMobil9LHR9KCk7X2UuSW5mbGF0ZT16dDt2YXIga3Q9ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCl7dGhpcy5vbmRhdGE9dCxhdChbVyxmdW5jdGlvbigpe3JldHVybltvdCx6dF19XSx0aGlzLDAsKGZ1bmN0aW9uKCl7dmFyIHQ9bmV3IHp0O29ubWVzc2FnZT1vdCh0KX0pLDcpfX0oKTtmdW5jdGlvbiBNdCh0LG4scil7aWYocnx8KHI9bixuPXt9KSwiZnVuY3Rpb24iIT10eXBlb2Ygcil0aHJvdyJubyBjYWxsYmFjayI7cmV0dXJuIGl0KHQsbixbV10sKGZ1bmN0aW9uKHQpe3JldHVybiBydChBdCh0LmRhdGFbMF0sZXQodC5kYXRhWzFdKSkpfSksMSxyKX1mdW5jdGlvbiBBdCh0LG4pe3JldHVybiBVKHQsbil9X2UuQXN5bmNJbmZsYXRlPWt0LF9lLmluZmxhdGU9TXQsX2UuaW5mbGF0ZVN5bmM9QXQ7dmFyIFN0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LG4pe3RoaXMuYz1CKCksdGhpcy5sPTAsdGhpcy52PTEseXQuY2FsbCh0aGlzLHQsbil9cmV0dXJuIHQucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24odCxuKXt5dC5wcm90b3R5cGUucHVzaC5jYWxsKHRoaXMsdCxuKX0sdC5wcm90b3R5cGUucD1mdW5jdGlvbih0LG4pe3RoaXMuYy5wKHQpLHRoaXMubCs9dC5sZW5ndGg7dmFyIHI9Syh0LHRoaXMubyx0aGlzLnYmJnZ0KHRoaXMubyksbiYmOCwhbik7dGhpcy52JiYoY3Qocix0aGlzLm8pLHRoaXMudj0wKSxuJiYoaHQocixyLmxlbmd0aC04LHRoaXMuYy5kKCkpLGh0KHIsci5sZW5ndGgtNCx0aGlzLmwpKSx0aGlzLm9uZGF0YShyLG4pfSx0fSgpO19lLkd6aXA9U3QsX2UuQ29tcHJlc3M9U3Q7dmFyIER0PWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQsbil7YXQoW1gsJCxmdW5jdGlvbigpe3JldHVybltvdCx5dCxTdF19XSx0aGlzLHd0LmNhbGwodGhpcyx0LG4pLChmdW5jdGlvbih0KXt2YXIgbj1uZXcgU3QodC5kYXRhKTtvbm1lc3NhZ2U9b3Qobil9KSw4KX19KCk7ZnVuY3Rpb24gQ3QodCxuLHIpe2lmKHJ8fChyPW4sbj17fSksImZ1bmN0aW9uIiE9dHlwZW9mIHIpdGhyb3cibm8gY2FsbGJhY2siO3JldHVybiBpdCh0LG4sW1gsJCxmdW5jdGlvbigpe3JldHVybltVdF19XSwoZnVuY3Rpb24odCl7cmV0dXJuIHJ0KFV0KHQuZGF0YVswXSx0LmRhdGFbMV0pKX0pLDIscil9ZnVuY3Rpb24gVXQodCxuKXtufHwobj17fSk7dmFyIHI9QigpLGU9dC5sZW5ndGg7ci5wKHQpO3ZhciBpPUsodCxuLHZ0KG4pLDgpLG89aS5sZW5ndGg7cmV0dXJuIGN0KGksbiksaHQoaSxvLTgsci5kKCkpLGh0KGksby00LGUpLGl9X2UuQXN5bmNHemlwPUR0LF9lLkFzeW5jQ29tcHJlc3M9RHQsX2UuZ3ppcD1DdCxfZS5jb21wcmVzcz1DdCxfZS5nemlwU3luYz1VdCxfZS5jb21wcmVzc1N5bmM9VXQ7dmFyIEl0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLnY9MSx6dC5jYWxsKHRoaXMsdCl9cmV0dXJuIHQucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24odCxuKXtpZih6dC5wcm90b3R5cGUuZS5jYWxsKHRoaXMsdCksdGhpcy52KXt2YXIgcj10aGlzLnAubGVuZ3RoPjM/bHQodGhpcy5wKTo0O2lmKHI+PXRoaXMucC5sZW5ndGgmJiFuKXJldHVybjt0aGlzLnA9dGhpcy5wLnN1YmFycmF5KHIpLHRoaXMudj0wfWlmKG4pe2lmKHRoaXMucC5sZW5ndGg8OCl0aHJvdyJpbnZhbGlkIGd6aXAgc3RyZWFtIjt0aGlzLnA9dGhpcy5wLnN1YmFycmF5KDAsLTgpfXp0LnByb3RvdHlwZS5jLmNhbGwodGhpcyxuKX0sdH0oKTtfZS5HdW56aXA9SXQ7dmFyIE90PWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3RoaXMub25kYXRhPXQsYXQoW1csXyxmdW5jdGlvbigpe3JldHVybltvdCx6dCxJdF19XSx0aGlzLDAsKGZ1bmN0aW9uKCl7dmFyIHQ9bmV3IEl0O29ubWVzc2FnZT1vdCh0KX0pLDkpfX0oKTtmdW5jdGlvbiBUdCh0LG4scil7aWYocnx8KHI9bixuPXt9KSwiZnVuY3Rpb24iIT10eXBlb2Ygcil0aHJvdyJubyBjYWxsYmFjayI7cmV0dXJuIGl0KHQsbixbVyxfLGZ1bmN0aW9uKCl7cmV0dXJuW1p0XX1dLChmdW5jdGlvbih0KXtyZXR1cm4gcnQoWnQodC5kYXRhWzBdKSl9KSwzLHIpfWZ1bmN0aW9uIFp0KHQscil7cmV0dXJuIFUodC5zdWJhcnJheShsdCh0KSwtOCkscnx8bmV3IG4ocHQodCkpKX1fZS5Bc3luY0d1bnppcD1PdCxfZS5ndW56aXA9VHQsX2UuZ3VuemlwU3luYz1adDt2YXIgRnQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsbil7dGhpcy5jPUooKSx0aGlzLnY9MSx5dC5jYWxsKHRoaXMsdCxuKX1yZXR1cm4gdC5wcm90b3R5cGUucHVzaD1mdW5jdGlvbih0LG4pe3l0LnByb3RvdHlwZS5wdXNoLmNhbGwodGhpcyx0LG4pfSx0LnByb3RvdHlwZS5wPWZ1bmN0aW9uKHQsbil7dGhpcy5jLnAodCk7dmFyIHI9Syh0LHRoaXMubyx0aGlzLnYmJjIsbiYmNCwhbik7dGhpcy52JiYoZHQocix0aGlzLm8pLHRoaXMudj0wKSxuJiZodChyLHIubGVuZ3RoLTQsdGhpcy5jLmQoKSksdGhpcy5vbmRhdGEocixuKX0sdH0oKTtfZS5abGliPUZ0O3ZhciBFdD1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0LG4pe2F0KFtYLHR0LGZ1bmN0aW9uKCl7cmV0dXJuW290LHl0LEZ0XX1dLHRoaXMsd3QuY2FsbCh0aGlzLHQsbiksKGZ1bmN0aW9uKHQpe3ZhciBuPW5ldyBGdCh0LmRhdGEpO29ubWVzc2FnZT1vdChuKX0pLDEwKX19KCk7ZnVuY3Rpb24gR3QodCxuLHIpe2lmKHJ8fChyPW4sbj17fSksImZ1bmN0aW9uIiE9dHlwZW9mIHIpdGhyb3cibm8gY2FsbGJhY2siO3JldHVybiBpdCh0LG4sW1gsdHQsZnVuY3Rpb24oKXtyZXR1cm5bUHRdfV0sKGZ1bmN0aW9uKHQpe3JldHVybiBydChQdCh0LmRhdGFbMF0sdC5kYXRhWzFdKSl9KSw0LHIpfWZ1bmN0aW9uIFB0KHQsbil7bnx8KG49e30pO3ZhciByPUooKTtyLnAodCk7dmFyIGU9Syh0LG4sMiw0KTtyZXR1cm4gZHQoZSxuKSxodChlLGUubGVuZ3RoLTQsci5kKCkpLGV9X2UuQXN5bmNabGliPUV0LF9lLnpsaWI9R3QsX2UuemxpYlN5bmM9UHQ7dmFyIGp0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLnY9MSx6dC5jYWxsKHRoaXMsdCl9cmV0dXJuIHQucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24odCxuKXtpZih6dC5wcm90b3R5cGUuZS5jYWxsKHRoaXMsdCksdGhpcy52KXtpZih0aGlzLnAubGVuZ3RoPDImJiFuKXJldHVybjt0aGlzLnA9dGhpcy5wLnN1YmFycmF5KDIpLHRoaXMudj0wfWlmKG4pe2lmKHRoaXMucC5sZW5ndGg8NCl0aHJvdyJpbnZhbGlkIHpsaWIgc3RyZWFtIjt0aGlzLnA9dGhpcy5wLnN1YmFycmF5KDAsLTQpfXp0LnByb3RvdHlwZS5jLmNhbGwodGhpcyxuKX0sdH0oKTtfZS5VbnpsaWI9anQ7dmFyIHF0PWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3RoaXMub25kYXRhPXQsYXQoW1csbnQsZnVuY3Rpb24oKXtyZXR1cm5bb3QsenQsanRdfV0sdGhpcywwLChmdW5jdGlvbigpe3ZhciB0PW5ldyBqdDtvbm1lc3NhZ2U9b3QodCl9KSwxMSl9fSgpO2Z1bmN0aW9uIEh0KHQsbixyKXtpZihyfHwocj1uLG49e30pLCJmdW5jdGlvbiIhPXR5cGVvZiByKXRocm93Im5vIGNhbGxiYWNrIjtyZXR1cm4gaXQodCxuLFtXLG50LGZ1bmN0aW9uKCl7cmV0dXJuW1l0XX1dLChmdW5jdGlvbih0KXtyZXR1cm4gcnQoWXQodC5kYXRhWzBdLGV0KHQuZGF0YVsxXSkpKX0pLDUscil9ZnVuY3Rpb24gWXQodCxuKXtyZXR1cm4gVSgoZ3QodCksdC5zdWJhcnJheSgyLC00KSksbil9X2UuQXN5bmNVbnpsaWI9cXQsX2UudW56bGliPUh0LF9lLnVuemxpYlN5bmM9WXQ7dmFyIEJ0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLkc9SXQsdGhpcy5JPXp0LHRoaXMuWj1qdCx0aGlzLm9uZGF0YT10fXJldHVybiB0LnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKHQscil7aWYoIXRoaXMub25kYXRhKXRocm93Im5vIHN0cmVhbSBoYW5kbGVyIjtpZih0aGlzLnMpdGhpcy5zLnB1c2godCxyKTtlbHNle2lmKHRoaXMucCYmdGhpcy5wLmxlbmd0aCl7dmFyIGU9bmV3IG4odGhpcy5wLmxlbmd0aCt0Lmxlbmd0aCk7ZS5zZXQodGhpcy5wKSxlLnNldCh0LHRoaXMucC5sZW5ndGgpfWVsc2UgdGhpcy5wPXQ7aWYodGhpcy5wLmxlbmd0aD4yKXt2YXIgaT10aGlzLG89ZnVuY3Rpb24oKXtpLm9uZGF0YS5hcHBseShpLGFyZ3VtZW50cyl9O3RoaXMucz0zMT09dGhpcy5wWzBdJiYxMzk9PXRoaXMucFsxXSYmOD09dGhpcy5wWzJdP25ldyB0aGlzLkcobyk6OCE9KDE1JnRoaXMucFswXSl8fHRoaXMucFswXT4+ND43fHwodGhpcy5wWzBdPDw4fHRoaXMucFsxXSklMzE/bmV3IHRoaXMuSShvKTpuZXcgdGhpcy5aKG8pLHRoaXMucy5wdXNoKHRoaXMucCxyKSx0aGlzLnA9bnVsbH19fSx0fSgpO19lLkRlY29tcHJlc3M9QnQ7dmFyIEp0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLkc9T3QsdGhpcy5JPWt0LHRoaXMuWj1xdCx0aGlzLm9uZGF0YT10fXJldHVybiB0LnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKHQsbil7QnQucHJvdG90eXBlLnB1c2guY2FsbCh0aGlzLHQsbil9LHR9KCk7ZnVuY3Rpb24gS3QodCxuLHIpe2lmKHJ8fChyPW4sbj17fSksImZ1bmN0aW9uIiE9dHlwZW9mIHIpdGhyb3cibm8gY2FsbGJhY2siO3JldHVybiAzMT09dFswXSYmMTM5PT10WzFdJiY4PT10WzJdP1R0KHQsbixyKTo4IT0oMTUmdFswXSl8fHRbMF0+PjQ+N3x8KHRbMF08PDh8dFsxXSklMzE/TXQodCxuLHIpOkh0KHQsbixyKX1mdW5jdGlvbiBMdCh0LG4pe3JldHVybiAzMT09dFswXSYmMTM5PT10WzFdJiY4PT10WzJdP1p0KHQsbik6OCE9KDE1JnRbMF0pfHx0WzBdPj40Pjd8fCh0WzBdPDw4fHRbMV0pJTMxP0F0KHQsbik6WXQodCxuKX1fZS5Bc3luY0RlY29tcHJlc3M9SnQsX2UuZGVjb21wcmVzcz1LdCxfZS5kZWNvbXByZXNzU3luYz1MdDt2YXIgTnQ9ZnVuY3Rpb24odCxyLGUsaSl7Zm9yKHZhciBvIGluIHQpe3ZhciBhPXRbb10scz1yK287YSBpbnN0YW5jZW9mIG4/ZVtzXT1bYSxpXTpBcnJheS5pc0FycmF5KGEpP2Vbc109W2FbMF0sTChpLGFbMV0pXTpOdChhLHMrIi8iLGUsaSl9fSxRdD0idW5kZWZpbmVkIiE9dHlwZW9mIFRleHRFbmNvZGVyJiZuZXcgVGV4dEVuY29kZXIsUnQ9InVuZGVmaW5lZCIhPXR5cGVvZiBUZXh0RGVjb2RlciYmbmV3IFRleHREZWNvZGVyLFZ0PTA7dHJ5e1J0LmRlY29kZShxLHtzdHJlYW06ITB9KSxWdD0xfWNhdGNoKHQpe312YXIgV3Q9ZnVuY3Rpb24odCl7Zm9yKHZhciBuPSIiLHI9MDs7KXt2YXIgZT10W3IrK10saT0oZT4xMjcpKyhlPjIyMykrKGU+MjM5KTtpZihyK2k+dC5sZW5ndGgpcmV0dXJuW24sQyh0LHItMSldO2k/Mz09aT8oZT0oKDE1JmUpPDwxOHwoNjMmdFtyKytdKTw8MTJ8KDYzJnRbcisrXSk8PDZ8NjMmdFtyKytdKS02NTUzNixuKz1TdHJpbmcuZnJvbUNoYXJDb2RlKDU1Mjk2fGU+PjEwLDU2MzIwfDEwMjMmZSkpOm4rPVN0cmluZy5mcm9tQ2hhckNvZGUoMSZpPygzMSZlKTw8Nnw2MyZ0W3IrK106KDE1JmUpPDwxMnwoNjMmdFtyKytdKTw8Nnw2MyZ0W3IrK10pOm4rPVN0cmluZy5mcm9tQ2hhckNvZGUoZSl9fSxYdD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5vbmRhdGE9dCxWdD90aGlzLnQ9bmV3IFRleHREZWNvZGVyOnRoaXMucD1xfXJldHVybiB0LnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKHQscil7aWYoIXRoaXMub25kYXRhKXRocm93Im5vIGNhbGxiYWNrIjtpZihyPSEhcix0aGlzLnQpe2lmKHRoaXMub25kYXRhKHRoaXMudC5kZWNvZGUodCx7c3RyZWFtOiEwfSkscikscil7aWYodGhpcy50LmRlY29kZSgpLmxlbmd0aCl0aHJvdyJpbnZhbGlkIHV0Zi04IGRhdGEiO3RoaXMudD1udWxsfX1lbHNle2lmKCF0aGlzLnApdGhyb3cic3RyZWFtIGZpbmlzaGVkIjt2YXIgZT1uZXcgbih0aGlzLnAubGVuZ3RoK3QubGVuZ3RoKTtlLnNldCh0aGlzLnApLGUuc2V0KHQsdGhpcy5wLmxlbmd0aCk7dmFyIGk9V3QoZSksbz1pWzBdLGE9aVsxXTtpZihyKXtpZihhLmxlbmd0aCl0aHJvdyJpbnZhbGlkIHV0Zi04IGRhdGEiO3RoaXMucD1udWxsfWVsc2UgdGhpcy5wPWE7dGhpcy5vbmRhdGEobyxyKX19LHR9KCk7X2UuRGVjb2RlVVRGOD1YdDt2YXIgJHQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMub25kYXRhPXR9cmV0dXJuIHQucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24odCxuKXtpZighdGhpcy5vbmRhdGEpdGhyb3cibm8gY2FsbGJhY2siO2lmKHRoaXMuZCl0aHJvdyJzdHJlYW0gZmluaXNoZWQiO3RoaXMub25kYXRhKF90KHQpLHRoaXMuZD1ufHwhMSl9LHR9KCk7ZnVuY3Rpb24gX3QodCxyKXtpZihyKXtmb3IodmFyIGU9bmV3IG4odC5sZW5ndGgpLGk9MDtpPHQubGVuZ3RoOysraSllW2ldPXQuY2hhckNvZGVBdChpKTtyZXR1cm4gZX1pZihRdClyZXR1cm4gUXQuZW5jb2RlKHQpO3ZhciBvPXQubGVuZ3RoLGE9bmV3IG4odC5sZW5ndGgrKHQubGVuZ3RoPj4xKSkscz0wLGY9ZnVuY3Rpb24odCl7YVtzKytdPXR9O2ZvcihpPTA7aTxvOysraSl7aWYocys1PmEubGVuZ3RoKXt2YXIgdT1uZXcgbihzKzgrKG8taTw8MSkpO3Uuc2V0KGEpLGE9dX12YXIgaD10LmNoYXJDb2RlQXQoaSk7aDwxMjh8fHI/ZihoKTpoPDIwNDg/KGYoMTkyfGg+PjYpLGYoMTI4fDYzJmgpKTpoPjU1Mjk1JiZoPDU3MzQ0PyhmKDI0MHwoaD02NTUzNisoMTA0NzU1MiZoKXwxMDIzJnQuY2hhckNvZGVBdCgrK2kpKT4+MTgpLGYoMTI4fGg+PjEyJjYzKSxmKDEyOHxoPj42JjYzKSxmKDEyOHw2MyZoKSk6KGYoMjI0fGg+PjEyKSxmKDEyOHxoPj42JjYzKSxmKDEyOHw2MyZoKSl9cmV0dXJuIEMoYSwwLHMpfWZ1bmN0aW9uIHRuKHQsbil7aWYobil7Zm9yKHZhciByPSIiLGU9MDtlPHQubGVuZ3RoO2UrPTE2Mzg0KXIrPVN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCx0LnN1YmFycmF5KGUsZSsxNjM4NCkpO3JldHVybiByfWlmKFJ0KXJldHVybiBSdC5kZWNvZGUodCk7dmFyIGk9V3QodCk7aWYoaVsxXS5sZW5ndGgpdGhyb3ciaW52YWxpZCB1dGYtOCBkYXRhIjtyZXR1cm4gaVswXX1fZS5FbmNvZGVVVEY4PSR0LF9lLnN0clRvVTg9X3QsX2Uuc3RyRnJvbVU4PXRuO3ZhciBubj1mdW5jdGlvbih0KXtyZXR1cm4gMT09dD8zOnQ8Nj8yOjk9PXQ/MTowfSxybj1mdW5jdGlvbih0LG4pe3JldHVybiBuKzMwK3N0KHQsbisyNikrc3QodCxuKzI4KX0sZW49ZnVuY3Rpb24odCxuLHIpe3ZhciBlPXN0KHQsbisyOCksaT10bih0LnN1YmFycmF5KG4rNDYsbis0NitlKSwhKDIwNDgmc3QodCxuKzgpKSksbz1uKzQ2K2UsYT1mdCh0LG4rMjApLHM9ciYmNDI5NDk2NzI5NT09YT9vbih0LG8pOlthLGZ0KHQsbisyNCksZnQodCxuKzQyKV0sZj1zWzBdLHU9c1sxXSxoPXNbMl07cmV0dXJuW3N0KHQsbisxMCksZix1LGksbytzdCh0LG4rMzApK3N0KHQsbiszMiksaF19LG9uPWZ1bmN0aW9uKHQsbil7Zm9yKDsxIT1zdCh0LG4pO24rPTQrc3QodCxuKzIpKTtyZXR1cm5bdXQodCxuKzEyKSx1dCh0LG4rNCksdXQodCxuKzIwKV19LGFuPWZ1bmN0aW9uKHQpe3ZhciBuPTA7aWYodClmb3IodmFyIHIgaW4gdCl7dmFyIGU9dFtyXS5sZW5ndGg7aWYoZT42NTUzNSl0aHJvdyJleHRyYSBmaWVsZCB0b28gbG9uZyI7bis9ZSs0fXJldHVybiBufSxzbj1mdW5jdGlvbih0LG4scixlLGksbyxhLHMpe3ZhciBmPWUubGVuZ3RoLHU9ci5leHRyYSxoPXMmJnMubGVuZ3RoLGM9YW4odSk7aHQodCxuLG51bGwhPWE/MzM2MzkyNDg6NjczMjQ3NTIpLG4rPTQsbnVsbCE9YSYmKHRbbisrXT0yMCx0W24rK109ci5vcyksdFtuXT0yMCxuKz0yLHRbbisrXT1yLmZsYWc8PDF8KG51bGw9PW8mJjgpLHRbbisrXT1pJiY4LHRbbisrXT0yNTUmci5jb21wcmVzc2lvbix0W24rK109ci5jb21wcmVzc2lvbj4+ODt2YXIgbD1uZXcgRGF0ZShudWxsPT1yLm10aW1lP0RhdGUubm93KCk6ci5tdGltZSkscD1sLmdldEZ1bGxZZWFyKCktMTk4MDtpZihwPDB8fHA+MTE5KXRocm93ImRhdGUgbm90IGluIHJhbmdlIDE5ODAtMjA5OSI7aWYoaHQodCxuLHA8PDI1fGwuZ2V0TW9udGgoKSsxPDwyMXxsLmdldERhdGUoKTw8MTZ8bC5nZXRIb3VycygpPDwxMXxsLmdldE1pbnV0ZXMoKTw8NXxsLmdldFNlY29uZHMoKT4+PjEpLG4rPTQsbnVsbCE9byYmKGh0KHQsbixyLmNyYyksaHQodCxuKzQsbyksaHQodCxuKzgsci5zaXplKSksaHQodCxuKzEyLGYpLGh0KHQsbisxNCxjKSxuKz0xNixudWxsIT1hJiYoaHQodCxuLGgpLGh0KHQsbis2LHIuYXR0cnMpLGh0KHQsbisxMCxhKSxuKz0xNCksdC5zZXQoZSxuKSxuKz1mLGMpZm9yKHZhciB2IGluIHUpe3ZhciBkPXVbdl0sZz1kLmxlbmd0aDtodCh0LG4sK3YpLGh0KHQsbisyLGcpLHQuc2V0KGQsbis0KSxuKz00K2d9cmV0dXJuIGgmJih0LnNldChzLG4pLG4rPWgpLG59LGZuPWZ1bmN0aW9uKHQsbixyLGUsaSl7aHQodCxuLDEwMTAxMDI1NiksaHQodCxuKzgsciksaHQodCxuKzEwLHIpLGh0KHQsbisxMixlKSxodCh0LG4rMTYsaSl9LHVuPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLmZpbGVuYW1lPXQsdGhpcy5jPUIoKSx0aGlzLnNpemU9MCx0aGlzLmNvbXByZXNzaW9uPTB9cmV0dXJuIHQucHJvdG90eXBlLnByb2Nlc3M9ZnVuY3Rpb24odCxuKXt0aGlzLm9uZGF0YShudWxsLHQsbil9LHQucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24odCxuKXtpZighdGhpcy5vbmRhdGEpdGhyb3cibm8gY2FsbGJhY2sgLSBhZGQgdG8gWklQIGFyY2hpdmUgYmVmb3JlIHB1c2hpbmciO3RoaXMuYy5wKHQpLHRoaXMuc2l6ZSs9dC5sZW5ndGgsbiYmKHRoaXMuY3JjPXRoaXMuYy5kKCkpLHRoaXMucHJvY2Vzcyh0LG58fCExKX0sdH0oKTtfZS5aaXBQYXNzVGhyb3VnaD11bjt2YXIgaG49ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsbil7dmFyIHI9dGhpcztufHwobj17fSksdW4uY2FsbCh0aGlzLHQpLHRoaXMuZD1uZXcgeXQobiwoZnVuY3Rpb24odCxuKXtyLm9uZGF0YShudWxsLHQsbil9KSksdGhpcy5jb21wcmVzc2lvbj04LHRoaXMuZmxhZz1ubihuLmxldmVsKX1yZXR1cm4gdC5wcm90b3R5cGUucHJvY2Vzcz1mdW5jdGlvbih0LG4pe3RyeXt0aGlzLmQucHVzaCh0LG4pfWNhdGNoKHQpe3RoaXMub25kYXRhKHQsbnVsbCxuKX19LHQucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24odCxuKXt1bi5wcm90b3R5cGUucHVzaC5jYWxsKHRoaXMsdCxuKX0sdH0oKTtfZS5aaXBEZWZsYXRlPWhuO3ZhciBjbj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxuKXt2YXIgcj10aGlzO258fChuPXt9KSx1bi5jYWxsKHRoaXMsdCksdGhpcy5kPW5ldyBtdChuLChmdW5jdGlvbih0LG4sZSl7ci5vbmRhdGEodCxuLGUpfSkpLHRoaXMuY29tcHJlc3Npb249OCx0aGlzLmZsYWc9bm4obi5sZXZlbCksdGhpcy50ZXJtaW5hdGU9dGhpcy5kLnRlcm1pbmF0ZX1yZXR1cm4gdC5wcm90b3R5cGUucHJvY2Vzcz1mdW5jdGlvbih0LG4pe3RoaXMuZC5wdXNoKHQsbil9LHQucHJvdG90eXBlLnB1c2g9ZnVuY3Rpb24odCxuKXt1bi5wcm90b3R5cGUucHVzaC5jYWxsKHRoaXMsdCxuKX0sdH0oKTtfZS5Bc3luY1ppcERlZmxhdGU9Y247dmFyIGxuPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLm9uZGF0YT10LHRoaXMudT1bXSx0aGlzLmQ9MX1yZXR1cm4gdC5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHQpe3ZhciByPXRoaXM7aWYoMiZ0aGlzLmQpdGhyb3cic3RyZWFtIGZpbmlzaGVkIjt2YXIgZT1fdCh0LmZpbGVuYW1lKSxpPWUubGVuZ3RoLG89dC5jb21tZW50LGE9byYmX3Qobykscz1pIT10LmZpbGVuYW1lLmxlbmd0aHx8YSYmby5sZW5ndGghPWEubGVuZ3RoLGY9aSthbih0LmV4dHJhKSszMDtpZihpPjY1NTM1KXRocm93ImZpbGVuYW1lIHRvbyBsb25nIjt2YXIgdT1uZXcgbihmKTtzbih1LDAsdCxlLHMpO3ZhciBoPVt1XSxjPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTAsbj1oO3Q8bi5sZW5ndGg7dCsrKXIub25kYXRhKG51bGwsblt0XSwhMSk7aD1bXX0sbD10aGlzLmQ7dGhpcy5kPTA7dmFyIHA9dGhpcy51Lmxlbmd0aCx2PUwodCx7ZjplLHU6cyxvOmEsdDpmdW5jdGlvbigpe3QudGVybWluYXRlJiZ0LnRlcm1pbmF0ZSgpfSxyOmZ1bmN0aW9uKCl7aWYoYygpLGwpe3ZhciB0PXIudVtwKzFdO3Q/dC5yKCk6ci5kPTF9bD0xfX0pLGQ9MDt0Lm9uZGF0YT1mdW5jdGlvbihlLGksbyl7aWYoZSlyLm9uZGF0YShlLGksbyksci50ZXJtaW5hdGUoKTtlbHNlIGlmKGQrPWkubGVuZ3RoLGgucHVzaChpKSxvKXt2YXIgYT1uZXcgbigxNik7aHQoYSwwLDEzNDY5NTc2MCksaHQoYSw0LHQuY3JjKSxodChhLDgsZCksaHQoYSwxMix0LnNpemUpLGgucHVzaChhKSx2LmM9ZCx2LmI9ZitkKzE2LHYuY3JjPXQuY3JjLHYuc2l6ZT10LnNpemUsbCYmdi5yKCksbD0xfWVsc2UgbCYmYygpfSx0aGlzLnUucHVzaCh2KX0sdC5wcm90b3R5cGUuZW5kPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztpZigyJnRoaXMuZCl7aWYoMSZ0aGlzLmQpdGhyb3cic3RyZWFtIGZpbmlzaGluZyI7dGhyb3cic3RyZWFtIGZpbmlzaGVkIn10aGlzLmQ/dGhpcy5lKCk6dGhpcy51LnB1c2goe3I6ZnVuY3Rpb24oKXsxJnQuZCYmKHQudS5zcGxpY2UoLTEsMSksdC5lKCkpfSx0OmZ1bmN0aW9uKCl7fX0pLHRoaXMuZD0zfSx0LnByb3RvdHlwZS5lPWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTAscj0wLGU9MCxpPTAsbz10aGlzLnU7aTxvLmxlbmd0aDtpKyspZSs9NDYrKHU9b1tpXSkuZi5sZW5ndGgrYW4odS5leHRyYSkrKHUubz91Lm8ubGVuZ3RoOjApO2Zvcih2YXIgYT1uZXcgbihlKzIyKSxzPTAsZj10aGlzLnU7czxmLmxlbmd0aDtzKyspe3ZhciB1O3NuKGEsdCx1PWZbc10sdS5mLHUudSx1LmMscix1Lm8pLHQrPTQ2K3UuZi5sZW5ndGgrYW4odS5leHRyYSkrKHUubz91Lm8ubGVuZ3RoOjApLHIrPXUuYn1mbihhLHQsdGhpcy51Lmxlbmd0aCxlLHIpLHRoaXMub25kYXRhKG51bGwsYSwhMCksdGhpcy5kPTJ9LHQucHJvdG90eXBlLnRlcm1pbmF0ZT1mdW5jdGlvbigpe2Zvcih2YXIgdD0wLG49dGhpcy51O3Q8bi5sZW5ndGg7dCsrKW5bdF0udCgpO3RoaXMuZD0yfSx0fSgpO2Z1bmN0aW9uIHBuKHQscixlKXtpZihlfHwoZT1yLHI9e30pLCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93Im5vIGNhbGxiYWNrIjt2YXIgaT17fTtOdCh0LCIiLGkscik7dmFyIG89T2JqZWN0LmtleXMoaSksYT1vLmxlbmd0aCxzPTAsZj0wLHU9YSxoPUFycmF5KGEpLGM9W10sbD1mdW5jdGlvbigpe2Zvcih2YXIgdD0wO3Q8Yy5sZW5ndGg7Kyt0KWNbdF0oKX0scD1mdW5jdGlvbigpe3ZhciB0PW5ldyBuKGYrMjIpLHI9cyxpPWYtcztmPTA7Zm9yKHZhciBvPTA7bzx1Oysrbyl7dmFyIGE9aFtvXTt0cnl7dmFyIGM9YS5jLmxlbmd0aDtzbih0LGYsYSxhLmYsYS51LGMpO3ZhciBsPTMwK2EuZi5sZW5ndGgrYW4oYS5leHRyYSkscD1mK2w7dC5zZXQoYS5jLHApLHNuKHQscyxhLGEuZixhLnUsYyxmLGEubSkscys9MTYrbCsoYS5tP2EubS5sZW5ndGg6MCksZj1wK2N9Y2F0Y2godCl7cmV0dXJuIGUodCxudWxsKX19Zm4odCxzLGgubGVuZ3RoLGksciksZShudWxsLHQpfTthfHxwKCk7Zm9yKHZhciB2PWZ1bmN0aW9uKHQpe3ZhciBuPW9bdF0scj1pW25dLHU9clswXSx2PXJbMV0sZD1CKCksZz11Lmxlbmd0aDtkLnAodSk7dmFyIHc9X3QobikseT13Lmxlbmd0aCxtPXYuY29tbWVudCxiPW0mJl90KG0pLHg9YiYmYi5sZW5ndGgsej1hbih2LmV4dHJhKSxrPTA9PXYubGV2ZWw/MDo4LE09ZnVuY3Rpb24ocixpKXtpZihyKWwoKSxlKHIsbnVsbCk7ZWxzZXt2YXIgbz1pLmxlbmd0aDtoW3RdPUwodix7c2l6ZTpnLGNyYzpkLmQoKSxjOmksZjp3LG06Yix1OnkhPW4ubGVuZ3RofHxiJiZtLmxlbmd0aCE9eCxjb21wcmVzc2lvbjprfSkscys9MzAreSt6K28sZis9NzYrMiooeSt6KSsoeHx8MCkrbywtLWF8fHAoKX19O2lmKHk+NjU1MzUmJk0oImZpbGVuYW1lIHRvbyBsb25nIixudWxsKSxrKWlmKGc8MTZlNCl0cnl7TShudWxsLHh0KHUsdikpfWNhdGNoKHQpe00odCxudWxsKX1lbHNlIGMucHVzaChidCh1LHYsTSkpO2Vsc2UgTShudWxsLHUpfSxkPTA7ZDx1OysrZCl2KGQpO3JldHVybiBsfWZ1bmN0aW9uIHZuKHQscil7cnx8KHI9e30pO3ZhciBlPXt9LGk9W107TnQodCwiIixlLHIpO3ZhciBvPTAsYT0wO2Zvcih2YXIgcyBpbiBlKXt2YXIgZj1lW3NdLHU9ZlswXSxoPWZbMV0sYz0wPT1oLmxldmVsPzA6OCxsPShNPV90KHMpKS5sZW5ndGgscD1oLmNvbW1lbnQsdj1wJiZfdChwKSxkPXYmJnYubGVuZ3RoLGc9YW4oaC5leHRyYSk7aWYobD42NTUzNSl0aHJvdyJmaWxlbmFtZSB0b28gbG9uZyI7dmFyIHc9Yz94dCh1LGgpOnUseT13Lmxlbmd0aCxtPUIoKTttLnAodSksaS5wdXNoKEwoaCx7c2l6ZTp1Lmxlbmd0aCxjcmM6bS5kKCksYzp3LGY6TSxtOnYsdTpsIT1zLmxlbmd0aHx8diYmcC5sZW5ndGghPWQsbzpvLGNvbXByZXNzaW9uOmN9KSksbys9MzArbCtnK3ksYSs9NzYrMioobCtnKSsoZHx8MCkreX1mb3IodmFyIGI9bmV3IG4oYSsyMikseD1vLHo9YS1vLGs9MDtrPGkubGVuZ3RoOysrayl7dmFyIE07c24oYiwoTT1pW2tdKS5vLE0sTS5mLE0udSxNLmMubGVuZ3RoKTt2YXIgQT0zMCtNLmYubGVuZ3RoK2FuKE0uZXh0cmEpO2Iuc2V0KE0uYyxNLm8rQSksc24oYixvLE0sTS5mLE0udSxNLmMubGVuZ3RoLE0ubyxNLm0pLG8rPTE2K0ErKE0ubT9NLm0ubGVuZ3RoOjApfXJldHVybiBmbihiLG8saS5sZW5ndGgseix4KSxifV9lLlppcD1sbixfZS56aXA9cG4sX2UuemlwU3luYz12bjt2YXIgZG49ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKHQsbil7dGhpcy5vbmRhdGEobnVsbCx0LG4pfSx0LmNvbXByZXNzaW9uPTAsdH0oKTtfZS5VbnppcFBhc3NUaHJvdWdoPWRuO3ZhciBnbj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt2YXIgdD10aGlzO3RoaXMuaT1uZXcgenQoKGZ1bmN0aW9uKG4scil7dC5vbmRhdGEobnVsbCxuLHIpfSkpfXJldHVybiB0LnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKHQsbil7dHJ5e3RoaXMuaS5wdXNoKHQsbil9Y2F0Y2gocil7dGhpcy5vbmRhdGEocix0LG4pfX0sdC5jb21wcmVzc2lvbj04LHR9KCk7X2UuVW56aXBJbmZsYXRlPWduO3ZhciB3bj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxuKXt2YXIgcj10aGlzO248MzJlND90aGlzLmk9bmV3IHp0KChmdW5jdGlvbih0LG4pe3Iub25kYXRhKG51bGwsdCxuKX0pKToodGhpcy5pPW5ldyBrdCgoZnVuY3Rpb24odCxuLGUpe3Iub25kYXRhKHQsbixlKX0pKSx0aGlzLnRlcm1pbmF0ZT10aGlzLmkudGVybWluYXRlKX1yZXR1cm4gdC5wcm90b3R5cGUucHVzaD1mdW5jdGlvbih0LG4pe3RoaXMuaS50ZXJtaW5hdGUmJih0PUModCwwKSksdGhpcy5pLnB1c2godCxuKX0sdC5jb21wcmVzc2lvbj04LHR9KCk7X2UuQXN5bmNVbnppcEluZmxhdGU9d247dmFyIHluPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLm9uZmlsZT10LHRoaXMuaz1bXSx0aGlzLm89ezA6ZG59LHRoaXMucD1xfXJldHVybiB0LnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKHQscil7dmFyIGU9dGhpcztpZighdGhpcy5vbmZpbGUpdGhyb3cibm8gY2FsbGJhY2siO2lmKCF0aGlzLnApdGhyb3cic3RyZWFtIGZpbmlzaGVkIjtpZih0aGlzLmM+MCl7dmFyIGk9TWF0aC5taW4odGhpcy5jLHQubGVuZ3RoKSxvPXQuc3ViYXJyYXkoMCxpKTtpZih0aGlzLmMtPWksdGhpcy5kP3RoaXMuZC5wdXNoKG8sIXRoaXMuYyk6dGhpcy5rWzBdLnB1c2gobyksKHQ9dC5zdWJhcnJheShpKSkubGVuZ3RoKXJldHVybiB0aGlzLnB1c2godCxyKX1lbHNle3ZhciBhPTAscz0wLGY9dm9pZCAwLHU9dm9pZCAwO3RoaXMucC5sZW5ndGg/dC5sZW5ndGg/KCh1PW5ldyBuKHRoaXMucC5sZW5ndGgrdC5sZW5ndGgpKS5zZXQodGhpcy5wKSx1LnNldCh0LHRoaXMucC5sZW5ndGgpKTp1PXRoaXMucDp1PXQ7Zm9yKHZhciBoPXUubGVuZ3RoLGM9dGhpcy5jLGw9YyYmdGhpcy5kLHA9ZnVuY3Rpb24oKXt2YXIgdCxuPWZ0KHUscyk7aWYoNjczMjQ3NTI9PW4pe2E9MSxmPXMsdi5kPW51bGwsdi5jPTA7dmFyIHI9c3QodSxzKzYpLGk9c3QodSxzKzgpLG89MjA0OCZyLGw9OCZyLHA9c3QodSxzKzI2KSxkPXN0KHUscysyOCk7aWYoaD5zKzMwK3ArZCl7dmFyIGc9W107di5rLnVuc2hpZnQoZyksYT0yO3ZhciB3LHk9ZnQodSxzKzE4KSxtPWZ0KHUscysyMiksYj10bih1LnN1YmFycmF5KHMrMzAscys9MzArcCksIW8pOzQyOTQ5NjcyOTU9PXk/KHQ9bD9bLTJdOm9uKHUscykseT10WzBdLG09dFsxXSk6bCYmKHk9LTEpLHMrPWQsdi5jPXk7dmFyIHg9e25hbWU6Yixjb21wcmVzc2lvbjppLHN0YXJ0OmZ1bmN0aW9uKCl7aWYoIXgub25kYXRhKXRocm93Im5vIGNhbGxiYWNrIjtpZih5KXt2YXIgdD1lLm9baV07aWYoIXQpdGhyb3cidW5rbm93biBjb21wcmVzc2lvbiB0eXBlICIraTsodz15PDA/bmV3IHQoYik6bmV3IHQoYix5LG0pKS5vbmRhdGE9ZnVuY3Rpb24odCxuLHIpe3gub25kYXRhKHQsbixyKX07Zm9yKHZhciBuPTAscj1nO248ci5sZW5ndGg7bisrKXcucHVzaChyW25dLCExKTtlLmtbMF09PWcmJmUuYz9lLmQ9dzp3LnB1c2gocSwhMCl9ZWxzZSB4Lm9uZGF0YShudWxsLHEsITApfSx0ZXJtaW5hdGU6ZnVuY3Rpb24oKXt3JiZ3LnRlcm1pbmF0ZSYmdy50ZXJtaW5hdGUoKX19O3k+PTAmJih4LnNpemU9eSx4Lm9yaWdpbmFsU2l6ZT1tKSx2Lm9uZmlsZSh4KX1yZXR1cm4iYnJlYWsifWlmKGMpe2lmKDEzNDY5NTc2MD09bilyZXR1cm4gZj1zKz0xMisoLTI9PWMmJjgpLGE9Myx2LmM9MCwiYnJlYWsiO2lmKDMzNjM5MjQ4PT1uKXJldHVybiBmPXMtPTQsYT0zLHYuYz0wLCJicmVhayJ9fSx2PXRoaXM7czxoLTQmJiJicmVhayIhPT1wKCk7KytzKTtpZih0aGlzLnA9cSxjPDApe3ZhciBkPXUuc3ViYXJyYXkoMCxhP2YtMTItKC0yPT1jJiY4KS0oMTM0Njk1NzYwPT1mdCh1LGYtMTYpJiY0KTpzKTtsP2wucHVzaChkLCEhYSk6dGhpcy5rWysoMj09YSldLnB1c2goZCl9aWYoMiZhKXJldHVybiB0aGlzLnB1c2godS5zdWJhcnJheShzKSxyKTt0aGlzLnA9dS5zdWJhcnJheShzKX1pZihyKXtpZih0aGlzLmMpdGhyb3ciaW52YWxpZCB6aXAgZmlsZSI7dGhpcy5wPW51bGx9fSx0LnByb3RvdHlwZS5yZWdpc3Rlcj1mdW5jdGlvbih0KXt0aGlzLm9bdC5jb21wcmVzc2lvbl09dH0sdH0oKTtmdW5jdGlvbiBtbih0LHIpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiByKXRocm93Im5vIGNhbGxiYWNrIjtmb3IodmFyIGU9W10saT1mdW5jdGlvbigpe2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7Kyt0KWVbdF0oKX0sbz17fSxhPXQubGVuZ3RoLTIyOzEwMTAxMDI1NiE9ZnQodCxhKTstLWEpaWYoIWF8fHQubGVuZ3RoLWE+NjU1NTgpcmV0dXJuIHZvaWQgcigiaW52YWxpZCB6aXAgZmlsZSIsbnVsbCk7dmFyIHM9c3QodCxhKzgpO3N8fHIobnVsbCx7fSk7dmFyIGY9cyx1PWZ0KHQsYSsxNiksaD00Mjk0OTY3Mjk1PT11O2lmKGgpe2lmKGE9ZnQodCxhLTEyKSwxMDEwNzU3OTIhPWZ0KHQsYSkpcmV0dXJuIHZvaWQgcigiaW52YWxpZCB6aXAgZmlsZSIsbnVsbCk7Zj1zPWZ0KHQsYSszMiksdT1mdCh0LGErNDgpfWZvcih2YXIgYz1mdW5jdGlvbihhKXt2YXIgZj1lbih0LHUsaCksYz1mWzBdLGw9ZlsxXSxwPWZbMl0sdj1mWzNdLGQ9Zls0XSxnPXJuKHQsZls1XSk7dT1kO3ZhciB3PWZ1bmN0aW9uKHQsbil7dD8oaSgpLHIodCxudWxsKSk6KG9bdl09biwtLXN8fHIobnVsbCxvKSl9O2lmKGMpaWYoOD09Yyl7dmFyIHk9dC5zdWJhcnJheShnLGcrbCk7aWYobDwzMmU0KXRyeXt3KG51bGwsQXQoeSxuZXcgbihwKSkpfWNhdGNoKHQpe3codCxudWxsKX1lbHNlIGUucHVzaChNdCh5LHtzaXplOnB9LHcpKX1lbHNlIHcoInVua25vd24gY29tcHJlc3Npb24gdHlwZSAiK2MsbnVsbCk7ZWxzZSB3KG51bGwsQyh0LGcsZytsKSl9LGw9MDtsPGY7KytsKWMoKTtyZXR1cm4gaX1mdW5jdGlvbiBibih0KXtmb3IodmFyIHI9e30sZT10Lmxlbmd0aC0yMjsxMDEwMTAyNTYhPWZ0KHQsZSk7LS1lKWlmKCFlfHx0Lmxlbmd0aC1lPjY1NTU4KXRocm93ImludmFsaWQgemlwIGZpbGUiO3ZhciBpPXN0KHQsZSs4KTtpZighaSlyZXR1cm57fTt2YXIgbz1mdCh0LGUrMTYpLGE9NDI5NDk2NzI5NT09bztpZihhKXtpZihlPWZ0KHQsZS0xMiksMTAxMDc1NzkyIT1mdCh0LGUpKXRocm93ImludmFsaWQgemlwIGZpbGUiO2k9ZnQodCxlKzMyKSxvPWZ0KHQsZSs0OCl9Zm9yKHZhciBzPTA7czxpOysrcyl7dmFyIGY9ZW4odCxvLGEpLHU9ZlswXSxoPWZbMV0sYz1mWzJdLGw9ZlszXSxwPWZbNF0sdj1ybih0LGZbNV0pO2lmKG89cCx1KXtpZig4IT11KXRocm93InVua25vd24gY29tcHJlc3Npb24gdHlwZSAiK3U7cltsXT1BdCh0LnN1YmFycmF5KHYsditoKSxuZXcgbihjKSl9ZWxzZSByW2xdPUModCx2LHYraCl9cmV0dXJuIHJ9X2UuVW56aXA9eW4sX2UudW56aXA9bW4sX2UudW56aXBTeW5jPWJuO3JldHVybiBfZX0pCg==" }, "lib/general.js": { "content_type": "text/javascript", "data": "LyogCiogUGhvdG9uIDEuMjQgZ2VuZXJhbCBzY3JpcHRzCiog4oCUIFN1Z2FyIDEuNC4xCiog4oCUIGdpdGh1Yi91cmwtcG9seWZpbGwKKiDigJQgalF1ZXJ5IDIuMS4zICsgTWlncmF0ZSAxLjIuMQoqIOKAlCBqUXVlcnkubXkgMS4zLjQKKiDigJQgalF1ZXJ5LnRhZ3MgMC41Ciog4oCUIFEuanMgCiog4oCUIGN3LmxpYiAxLjIuMSB0cmltbWVkCiovCgovKlN1Z2FyIDEuNC4xLCB0cmltbWVkIGxvY2FsZXMqLwooZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7dmFyIHgsYT1PYmplY3QsYj1BcnJheSxjPVJlZ0V4cCxkPURhdGUsZT1TdHJpbmcsZj1OdW1iZXIsZz1NYXRoLGg9InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOnRoaXMsaT1hLnByb3RvdHlwZS50b1N0cmluZyxqPWEucHJvdG90eXBlLmhhc093blByb3BlcnR5LGs9YS5kZWZpbmVQcm9wZXJ0eSYmYS5kZWZpbmVQcm9wZXJ0aWVzLGw9ImZ1bmN0aW9uIj09dHlwZW9mIGMoKSxtPSEoIjAiaW4gbmV3IGUoImEiKSksbj17fSxvPS9eXFtvYmplY3QgRGF0ZXxBcnJheXxTdHJpbmd8TnVtYmVyfFJlZ0V4cHxCb29sZWFufEFyZ3VtZW50c1xdJC8scD0iQm9vbGVhbixOdW1iZXIsU3RyaW5nLEFycmF5LERhdGUsUmVnRXhwLEZ1bmN0aW9uIi5zcGxpdCgiLCIpLHE9QSgiYm9vbGVhbiIscFswXSkscj1BKCJudW1iZXIiLHBbMV0pLHM9QSgic3RyaW5nIixwWzJdKSx0PXoocFszXSksdT16KHBbNF0pLHY9eihwWzVdKSx3PXoocFs2XSk7ZnVuY3Rpb24geSh4LGEsYil7cmV0dXJuKGJ8fEIoeCkpPT09IltvYmplY3QgIithKyJdIn1mdW5jdGlvbiB6KHgpe3ZhciBhPSJBcnJheSI9PT14JiZiLmlzQXJyYXl8fGZ1bmN0aW9uKGEsYil7cmV0dXJuIHkoYSx4LGIpfTtyZXR1cm4gblt4XT1hLGF9ZnVuY3Rpb24gQSh4LGEpe3ZhciBiPWZ1bmN0aW9uKGIpe3JldHVybiBRKGIpP3koYixhKTp0eXBlb2YgYj09PXh9O3JldHVybiBuW2FdPWIsYn1mdW5jdGlvbiBCKHgpe3JldHVybiBpLmNhbGwoeCl9ZnVuY3Rpb24gQygpe0QoYSksVChwLGZ1bmN0aW9uKHgsYSl7RChoW2FdKX0pfWZ1bmN0aW9uIEQoeCl7eC5TdWdhck1ldGhvZHN8fChJKHgsIlN1Z2FyTWV0aG9kcyIse30pLEUoeCwhMSwhMCx7ZXh0ZW5kOmZ1bmN0aW9uKGEsYixjKXtFKHgsITEhPT1jLGIsYSl9LHN1Z2FyUmVzdG9yZTpmdW5jdGlvbigpe3JldHVybiBHKHRoaXMseCxhcmd1bWVudHMsZnVuY3Rpb24oeCxhLGIpe0koeCxhLGIubWV0aG9kKX0pfSxzdWdhclJldmVydDpmdW5jdGlvbigpe3JldHVybiBHKHRoaXMseCxhcmd1bWVudHMsZnVuY3Rpb24oeCxhLGIpe2IuZXhpc3RlZD9JKHgsYSxiLm9yaWdpbmFsKTpkZWxldGUgeFthXX0pfX0pKX1mdW5jdGlvbiBFKHgsYSxiLGMpe3ZhciBkPWE/eC5wcm90b3R5cGU6eDtEKHgpLFQoYyxmdW5jdGlvbihjLGUpe3ZhciBmPWRbY10sZz1QKGQsYyk7dyhiKSYmZiYmKGU9SChmLGUsYikpLCExPT09YiYmZnx8SShkLGMsZSkseC5TdWdhck1ldGhvZHNbY109e21ldGhvZDplLGV4aXN0ZWQ6ZyxvcmlnaW5hbDpmLGluc3RhbmNlOmF9fSl9ZnVuY3Rpb24gRih4LGEsYixjLGQpe3ZhciBlPXt9OyhjPXMoYyk/Yy5zcGxpdCgiLCIpOmMpLmZvckVhY2goZnVuY3Rpb24oeCxhKXtkKGUseCxhKX0pLEUoeCxhLGIsZSl9ZnVuY3Rpb24gRyh4LGEsYixjKXt2YXIgZD0wPT09Yi5sZW5ndGgsZT1KKGIpLGY9ITE7cmV0dXJuIFQoYS5TdWdhck1ldGhvZHMsZnVuY3Rpb24oYSxiKXsoZHx8LTEhPT1lLmluZGV4T2YoYSkpJiYoZj0hMCxjKGIuaW5zdGFuY2U/eC5wcm90b3R5cGU6eCxhLGIpKX0pLGZ9ZnVuY3Rpb24gSCh4LGEsYil7cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKT9hLmFwcGx5KHRoaXMsYXJndW1lbnRzKTp4LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gSSh4LGIsYyl7az9hLmRlZmluZVByb3BlcnR5KHgsYix7dmFsdWU6Yyxjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMH0pOnhbYl09Y31mdW5jdGlvbiBKKHgsYSxiKXt2YXIgYyxkPVtdLGU9Ynx8MDtmb3IoYz14Lmxlbmd0aDtlPGM7ZSsrKWQucHVzaCh4W2VdKSxhJiZhLmNhbGwoeCx4W2VdLGUpO3JldHVybiBkfWZ1bmN0aW9uIEsoeCxhLGIpe3ZhciBjPXhbYnx8MF07cmV0dXJuIHQoYykmJih4PWMsYj0wKSxKKHgsYSxiKX1mdW5jdGlvbiBMKHgpe2lmKCF4fHwheC5jYWxsKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbGxiYWNrIGlzIG5vdCBjYWxsYWJsZSIpfWZ1bmN0aW9uIE0oYSl7cmV0dXJuIGEhPT14fWZ1bmN0aW9uIE4oYSl7cmV0dXJuIGE9PT14fWZ1bmN0aW9uIE8oeCxhKXtyZXR1cm4hUih4KSYmYSBpbiB4fWZ1bmN0aW9uIFAoeCxhKXtyZXR1cm4hIXgmJmouY2FsbCh4LGEpfWZ1bmN0aW9uIFEoeCl7cmV0dXJuISF4JiYoIm9iamVjdCI9PXR5cGVvZiB4fHxsJiZ2KHgpKX1mdW5jdGlvbiBSKHgpe3ZhciBhPXR5cGVvZiB4O3JldHVybiBudWxsPT14fHwic3RyaW5nIj09PWF8fCJudW1iZXIiPT09YXx8ImJvb2xlYW4iPT09YX1mdW5jdGlvbiBTKHgsYSl7YT1hfHxCKHgpO3RyeXtpZih4JiZ4LmNvbnN0cnVjdG9yJiYhUCh4LCJjb25zdHJ1Y3RvciIpJiYhUCh4LmNvbnN0cnVjdG9yLnByb3RvdHlwZSwiaXNQcm90b3R5cGVPZiIpKXJldHVybiExfWNhdGNoKHgpe3JldHVybiExfXJldHVybiEheCYmIltvYmplY3QgT2JqZWN0XSI9PT1hJiYiaGFzT3duUHJvcGVydHkiaW4geH1mdW5jdGlvbiBUKHgsYSl7dmFyIGI7Zm9yKGIgaW4geClpZihQKHgsYikmJiExPT09YS5jYWxsKHgsYix4W2JdLHgpKWJyZWFrfWZ1bmN0aW9uIFUoeCxhKXtmb3IodmFyIGI9MDtiPHg7YisrKWEoYil9ZnVuY3Rpb24gVih4LGEpe3JldHVybiBUKGEsZnVuY3Rpb24oYil7eFtiXT1hW2JdfSkseH1mdW5jdGlvbiBXKHgpe3JldHVybiBSKHgpJiYoeD1hKHgpKSxtJiZzKHgpJiZYKHgpLHh9ZnVuY3Rpb24gWCh4KXtmb3IodmFyIGEsYj0wO2E9eC5jaGFyQXQoYik7KXhbYisrXT1hfWZ1bmN0aW9uIFkoeCl7Vih0aGlzLFcoeCkpfVkucHJvdG90eXBlLmNvbnN0cnVjdG9yPWE7dmFyIFo9Zy5hYnMsJD1nLnBvdyxfPWcuY2VpbCx4eD1nLmZsb29yLGF4PWcucm91bmQsYng9Zy5taW4sY3g9Zy5tYXg7ZnVuY3Rpb24gZHgoeCxhLGIpe3ZhciBjPSQoMTAsWihhfHwwKSk7cmV0dXJuIGE8MCYmKGM9MS9jKSwoYj1ifHxheCkoeCpjKS9jfXZhciBleCxmeD00OCxneD01NyxoeD02NTI5NixpeD02NTMwNSxqeD0iLiIsa3g9Iu+8jiIsbHg9IiwiLG14PSIiLG54PXt9O2Z1bmN0aW9uIG94KHgpe3JldHVybiB4Pj1meCYmeDw9Z3h8fHg+PWh4JiZ4PD1peH1mdW5jdGlvbiBweCgpe3ZhciB4LGE7Zm9yKGE9MDthPD05O2ErKyl4PXF4KGEraHgpLG14Kz14LG54W3hdPXF4KGErZngpO254W2x4XT0iIixueFtreF09angsbnhbanhdPWp4LGV4PWMoIlsiK214K2t4K2x4K2p4KyJdIiwiZyIpfWZ1bmN0aW9uIHF4KHgpe3JldHVybiBlLmZyb21DaGFyQ29kZSh4KX1mdW5jdGlvbiByeCgpe3JldHVybiJcdFxuXHZcZlxyIMKg4ZqA4aCO4oCA4oCB4oCC4oCD4oCE4oCF4oCG4oCH4oCI4oCJ4oCK4oCv4oGfXHUyMDI4XHUyMDI544CAXHVmZWZmIn1mdW5jdGlvbiBzeCh4LGEpe3ZhciBiPSIiO2Zvcih4PXgudG9TdHJpbmcoKTthPjA7KTEmYSYmKGIrPXgpLChhPj49MSkmJih4Kz14KTtyZXR1cm4gYn1mdW5jdGlvbiB0eCh4LGEpe3ZhciBiLGM7cmV0dXJuIGI9eC5yZXBsYWNlKGV4LGZ1bmN0aW9uKHgpe3ZhciBhPW54W3hdO3JldHVybiBhPT09angmJihjPSEwKSxhfSksYz9wYXJzZUZsb2F0KGIpOnBhcnNlSW50KGIsYXx8MTApfWZ1bmN0aW9uIHV4KHgsYSxiLGMpe3ZhciBkPVooeCkudG9TdHJpbmcoY3x8MTApO3JldHVybiBkPXN4KCIwIixhLWQucmVwbGFjZSgvXC5cZCsvLCIiKS5sZW5ndGgpK2QsKGJ8fHg8MCkmJihkPSh4PDA/Ii0iOiIrIikrZCksZH1mdW5jdGlvbiB2eCh4KXtpZih4Pj0xMSYmeDw9MTMpcmV0dXJuInRoIjtzd2l0Y2goeCUxMCl7Y2FzZSAxOnJldHVybiJzdCI7Y2FzZSAyOnJldHVybiJuZCI7Y2FzZSAzOnJldHVybiJyZCI7ZGVmYXVsdDpyZXR1cm4idGgifX1mdW5jdGlvbiB3eCh4LGEpe3ZhciBiPSIiO2Z1bmN0aW9uIGMoeCxjKXsoeHx8YS5pbmRleE9mKGMpPi0xKSYmKGIrPWMpfXJldHVybiBhPWF8fCIiLGMoeC5tdWx0aWxpbmUsIm0iKSxjKHguaWdub3JlQ2FzZSwiaSIpLGMoeC5nbG9iYWwsImciKSxjKHguc3RpY2t5LCJ5IiksYn1mdW5jdGlvbiB5eCh4KXtyZXR1cm4gcyh4KXx8KHg9ZSh4KSkseC5yZXBsYWNlKC8oW1xcL1wnKis/fCgpXFtcXXt9Ll4kXSkvZywiXFwkMSIpfWZ1bmN0aW9uIHp4KHgsYSl7cmV0dXJuIHhbImdldCIrKHguX3V0Yz8iVVRDIjoiIikrYV0oKX1mdW5jdGlvbiBBeCh4LGEsYil7cmV0dXJuIHhbInNldCIrKHguX3V0YyYmIklTT1dlZWsiIT1hPyJVVEMiOiIiKSthXShiKX1mdW5jdGlvbiBCeCh4LGIpe3ZhciBjLGQsZixnLGgsaixrLGwsbT10eXBlb2YgeDtpZigic3RyaW5nIj09PW0pcmV0dXJuIHg7aWYoYz1TKHgsZj1pLmNhbGwoeCkpLGQ9dCh4LGYpLG51bGwhPXgmJmN8fGQpe2lmKGJ8fChiPVtdKSxiLmxlbmd0aD4xKWZvcihrPWIubGVuZ3RoO2stLTspaWYoYltrXT09PXgpcmV0dXJuIkNZQyI7Zm9yKGIucHVzaCh4KSxnPXgudmFsdWVPZigpK2UoeC5jb25zdHJ1Y3Rvciksaz0wLGw9KGg9ZD94OmEua2V5cyh4KS5zb3J0KCkpLmxlbmd0aDtrPGw7aysrKWcrPShqPWQ/azpoW2tdKStCeCh4W2pdLGIpO2IucG9wKCl9ZWxzZSBnPTEveD09LTEvMD8iLTAiOmUoeCYmeC52YWx1ZU9mP3gudmFsdWVPZigpOngpO3JldHVybiBtK2YrZ31mdW5jdGlvbiBDeCh4LGEpe3JldHVybiB4PT09YT8wIT09eHx8MS94PT0xL2E6ISghRHgoeCl8fCFEeChhKSkmJkJ4KHgpPT09QngoYSl9ZnVuY3Rpb24gRHgoeCl7dmFyIGE9Qih4KTtyZXR1cm4gby50ZXN0KGEpfHxTKHgsYSl9ZnVuY3Rpb24gRXgoeCxhLGIpe3ZhciBjLGQ9eC5sZW5ndGgsZT1hLmxlbmd0aCxmPSExIT09YVtlLTFdO3JldHVybiBlPihmPzE6Mik/KGM9W10sSihhLGZ1bmN0aW9uKGEpe2lmKHEoYSkpcmV0dXJuITE7Yy5wdXNoKEZ4KHgsZCxhLGYsYikpfSksYyk6RngoeCxkLGFbMF0sZixiKX1mdW5jdGlvbiBGeCh4LGEsYixjLGQpe3JldHVybiBjJiYoYiU9YSk8MCYmKGI9YStiKSxkP3guY2hhckF0KGIpOnhbYl19ZnVuY3Rpb24gR3goeCxiKXtGKGIsITAsITEseCxmdW5jdGlvbih4LGIpe3hbYisoImVxdWFsIj09PWI/InMiOiIiKV09ZnVuY3Rpb24oKXtyZXR1cm4gYVtiXS5hcHBseShudWxsLFt0aGlzXS5jb25jYXQoSihhcmd1bWVudHMpKSl9fSl9ZnVuY3Rpb24gSHgoeCxhLGIsYyl7dmFyIGQ9eC5sZW5ndGgsZT0tMT09YyxmPWU/ZC0xOjAsZz1KeChiLGYpO2ZvcihnPDAmJihnPWQrZyksKCFlJiZnPDB8fGUmJmc+PWQpJiYoZz1mKTtlJiZnPj0wfHwhZSYmZzxkOyl7aWYoeFtnXT09PWEpcmV0dXJuIGc7Zys9Y31yZXR1cm4tMX1mdW5jdGlvbiBJeCh4LGEsYixjKXt2YXIgZCxlLGY9eC5sZW5ndGgsZz0wLGg9TShiKTtpZihMKGEpLDA9PWYmJiFoKXRocm93IG5ldyBUeXBlRXJyb3IoIlJlZHVjZSBjYWxsZWQgb24gZW1wdHkgYXJyYXkgd2l0aCBubyBpbml0aWFsIHZhbHVlIik7Zm9yKGg/ZD1iOihkPXhbYz9mLTE6Z10sZysrKTtnPGY7KShlPWM/Zi1nLTE6ZylpbiB4JiYoZD1hKGQseFtlXSxlLHgpKSxnKys7cmV0dXJuIGR9ZnVuY3Rpb24gSngoeCxhKXtyZXR1cm4gaXNOYU4oeCk/YTpwYXJzZUludCh4Pj4wKX1mdW5jdGlvbiBLeCh4KXtpZigwPT09eC5sZW5ndGgpdGhyb3cgbmV3IFR5cGVFcnJvcigiRmlyc3QgYXJndW1lbnQgbXVzdCBiZSBkZWZpbmVkIil9ZnVuY3Rpb24gTHgoKXt2YXIgeD1yeCgpLm1hdGNoKC9eXHMrJC8pO3RyeXtlLnByb3RvdHlwZS50cmltLmNhbGwoWzFdKX1jYXRjaChhKXt4PSExfUUoZSwhMCwheCx7dHJpbTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKCkudHJpbUxlZnQoKS50cmltUmlnaHQoKX0sdHJpbUxlZnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZXBsYWNlKGMoIl5bIityeCgpKyJdKyIpLCIiKX0sdHJpbVJpZ2h0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVwbGFjZShjKCJbIityeCgpKyJdKyQiKSwiIil9fSl9ZnVuY3Rpb24gTXgoKXt2YXIgeD1uZXcgZChkLlVUQygxOTk5LDExLDMxKSksYT0iMTk5OS0xMi0zMVQwMDowMDowMC4wMDBaIixiPXgudG9JU09TdHJpbmcmJngudG9JU09TdHJpbmcoKT09PWE7RihkLCEwLCFiLCJ0b0lTT1N0cmluZyx0b0pTT04iLGZ1bmN0aW9uKHgsYSl7eFthXT1mdW5jdGlvbigpe3JldHVybiB1eCh0aGlzLmdldFVUQ0Z1bGxZZWFyKCksNCkrIi0iK3V4KHRoaXMuZ2V0VVRDTW9udGgoKSsxLDIpKyItIit1eCh0aGlzLmdldFVUQ0RhdGUoKSwyKSsiVCIrdXgodGhpcy5nZXRVVENIb3VycygpLDIpKyI6Iit1eCh0aGlzLmdldFVUQ01pbnV0ZXMoKSwyKSsiOiIrdXgodGhpcy5nZXRVVENTZWNvbmRzKCksMikrIi4iK3V4KHRoaXMuZ2V0VVRDTWlsbGlzZWNvbmRzKCksMykrIloifX0pfWZ1bmN0aW9uIE54KHgpe3JldHVybiB4PWMoeCksZnVuY3Rpb24oYSl7cmV0dXJuIHgudGVzdChhKX19ZnVuY3Rpb24gT3goeCl7dmFyIGE9eC5nZXRUaW1lKCk7cmV0dXJuIGZ1bmN0aW9uKHgpe3JldHVybiEoIXh8fCF4LmdldFRpbWUpJiZ4LmdldFRpbWUoKT09PWF9fWZ1bmN0aW9uIFB4KHgpe3JldHVybiBmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGE9PT14fHx4LmNhbGwodGhpcyxhLGIsYyl9fWZ1bmN0aW9uIFF4KHgpe3JldHVybiBmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGE9PT14fHx4LmNhbGwoYyxiLGEsYyl9fWZ1bmN0aW9uIFJ4KHgsYSl7dmFyIGI9e307cmV0dXJuIGZ1bmN0aW9uKGMsZCxlKXt2YXIgZjtpZighUShjKSlyZXR1cm4hMTtmb3IoZiBpbiB4KWlmKGJbZl09YltmXXx8VHgoeFtmXSxhKSwhMT09PWJbZl0uY2FsbChlLGNbZl0sZCxlKSlyZXR1cm4hMTtyZXR1cm4hMH19ZnVuY3Rpb24gU3goeCl7cmV0dXJuIGZ1bmN0aW9uKGEpe3JldHVybiBhPT09eHx8Q3goYSx4KX19ZnVuY3Rpb24gVHgoeCxhKXtpZihSKHgpKTtlbHNle2lmKHYoeCkpcmV0dXJuIE54KHgpO2lmKHUoeCkpcmV0dXJuIE94KHgpO2lmKHcoeCkpcmV0dXJuIGE/UXgoeCk6UHgoeCk7aWYoUyh4KSlyZXR1cm4gUngoeCxhKX1yZXR1cm4gU3goeCl9ZnVuY3Rpb24gVXgoeCxhLGIsYyl7cmV0dXJuIGE/YS5hcHBseT9hLmFwcGx5KGIsY3x8W10pOncoeFthXSk/eFthXS5jYWxsKHgpOnhbYV06eH1mdW5jdGlvbiBWeCh4LGEsYixjKXt2YXIgZCxlLGY9K3gubGVuZ3RoO2ZvcihiPDAmJihiPXgubGVuZ3RoK2IpLGU9aXNOYU4oYik/MDpiLCEwPT09YyYmKGYrPWUpO2U8Zjspe2lmKCEoKGQ9ZSV4Lmxlbmd0aClpbiB4KSlyZXR1cm4gV3goeCxhLGUsYyk7aWYoITE9PT1hLmNhbGwoeCx4W2RdLGQseCkpYnJlYWs7ZSsrfX1mdW5jdGlvbiBXeCh4LGEsYixjKXt2YXIgZCxlPVtdO2ZvcihkIGluIHgpWHgoeCxkKSYmZD49YiYmZS5wdXNoKHBhcnNlSW50KGQpKTtyZXR1cm4gZS5zb3J0KCkuZWFjaChmdW5jdGlvbihiKXtyZXR1cm4gYS5jYWxsKHgseFtiXSxiLHgpfSkseH1mdW5jdGlvbiBYeCh4LGEpe3JldHVybiBhIGluIHgmJll4KGEpPT1hJiY0Mjk0OTY3Mjk1IT1hfWZ1bmN0aW9uIFl4KHgpe3JldHVybiB4Pj4+MH1mdW5jdGlvbiBaeCh4LGEsYixjLGQsZSl7dmFyIGYsZyxoO3JldHVybiB4Lmxlbmd0aD4wJiYoaD1UeChhKSxWeCh4LGZ1bmN0aW9uKGEsYil7aWYoaC5jYWxsKGUsYSxiLHgpKXJldHVybiBmPWEsZz1iLCExfSxiLGMpKSxkP2c6Zn1mdW5jdGlvbiAkeCh4LGEpe3ZhciBiLGM9W10sZD17fTtyZXR1cm4gVngoeCxmdW5jdGlvbihlLGYpe2I9YT9VeChlLGEseCxbZSxmLHhdKTplLGVhKGQsYil8fGMucHVzaChlKX0pLGN9ZnVuY3Rpb24gX3goeCxhLGIpe3ZhciBjPVtdLGQ9e307cmV0dXJuIGEuZWFjaChmdW5jdGlvbih4KXtlYShkLHgpfSkseC5lYWNoKGZ1bmN0aW9uKHgpe3ZhciBhPUJ4KHgpLGU9IUR4KHgpO2RhKGQsYSx4LGUpIT09YiYmKGZhKGQsYSx4LGUpLGMucHVzaCh4KSl9KSxjfWZ1bmN0aW9uIHhhKHgsYSxiKXthPWF8fDEvMCxiPWJ8fDA7dmFyIGM9W107cmV0dXJuIFZ4KHgsZnVuY3Rpb24oeCl7dCh4KSYmYjxhP2M9Yy5jb25jYXQoeGEoeCxhLGIrMSkpOmMucHVzaCh4KX0pLGN9ZnVuY3Rpb24gYWEoeCl7cmV0dXJuIE8oeCwibGVuZ3RoIikmJiFzKHgpJiYhUyh4KX1mdW5jdGlvbiBiYSh4KXtyZXR1cm4gTyh4LCJsZW5ndGgiKSYmKCJbb2JqZWN0IEFyZ3VtZW50c10iPT09Qih4KXx8ISF4LmNhbGxlZSl9ZnVuY3Rpb24gY2EoeCl7dmFyIGE9W107cmV0dXJuIEooeCxmdW5jdGlvbih4KXthPWEuY29uY2F0KHgpfSksYX1mdW5jdGlvbiBkYSh4LGEsYixjKXt2YXIgZD1hIGluIHg7cmV0dXJuIGMmJih4W2FdfHwoeFthXT1bXSksZD0tMSE9PXhbYV0uaW5kZXhPZihiKSksZH1mdW5jdGlvbiBlYSh4LGEpe3ZhciBiPUJ4KGEpLGM9IUR4KGEpLGQ9ZGEoeCxiLGEsYyk7cmV0dXJuIGM/eFtiXS5wdXNoKGEpOnhbYl09YSxkfWZ1bmN0aW9uIGZhKHgsYSxiLGMpe3ZhciBkLGU9MDtpZihjKWZvcihkPXhbYV07ZTxkLmxlbmd0aDspZFtlXT09PWI/ZC5zcGxpY2UoZSwxKTplKz0xO2Vsc2UgZGVsZXRlIHhbYV19ZnVuY3Rpb24gZ2EoeCxhLGMsZCl7dmFyIGUsZixnLGgsaT1bXSxqPSJtYXgiPT09YyxrPSJtaW4iPT09YyxsPWIuaXNBcnJheSh4KTtmb3IoZiBpbiB4KWlmKHguaGFzT3duUHJvcGVydHkoZikpe2lmKE4oaD1VeChlPXhbZl0sYSx4LGw/W2UscGFyc2VJbnQoZikseF06W10pKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY29tcGFyZSB3aXRoIHVuZGVmaW5lZCIpO2g9PT1nP2kucHVzaChlKTooTihnKXx8aiYmaD5nfHxrJiZoPGcpJiYoaT1bZV0sZz1oKX1yZXR1cm4gbHx8KGk9eGEoaSwxKSksZD9pOmlbMF19ZnVuY3Rpb24gaGEoeCxhKXt2YXIgYyxkLGUsZixnLGgsaT0wLGo9MCxrPWJbbmFdLGw9YltvYV0sbT1iW3BhXSxuPWJbbWFdLG89YltxYV07eD1pYSh4LGssbCksYT1pYShhLGssbCk7ZG97ZT1qYSh4LGksbSksZj1qYShhLGksbSksYz1rYShlLG4pLGQ9a2EoZixuKSwtMT09PWN8fC0xPT09ZD8oYz14LmNoYXJDb2RlQXQoaSl8fG51bGwsZD1hLmNoYXJDb2RlQXQoaSl8fG51bGwsbyYmb3goYykmJm94KGQpJiYoYz10eCh4LnNsaWNlKGkpKSxkPXR4KGEuc2xpY2UoaSkpKSk6KGc9ZSE9PXguY2hhckF0KGkpKSE9PShoPWYhPT1hLmNoYXJBdChpKSkmJjA9PT1qJiYoaj1nLWgpLGkrPTF9d2hpbGUobnVsbCE9YyYmbnVsbCE9ZCYmYz09PWQpO3JldHVybiBjPT09ZD9qOmMtZH1mdW5jdGlvbiBpYSh4LGEsYil7cmV0dXJuIHMoeCl8fCh4PWUoeCkpLGImJih4PXgudG9Mb3dlckNhc2UoKSksYSYmKHg9eC5yZXBsYWNlKGEsIiIpKSx4fWZ1bmN0aW9uIGphKHgsYSxiKXt2YXIgYz14LmNoYXJBdChhKTtyZXR1cm4gYltjXXx8Y31mdW5jdGlvbiBrYSh4LGEpe3JldHVybiB4P2EuaW5kZXhPZih4KTpudWxsfUMoKSxweCgpLEUoYSwhMSwhMSx7a2V5czpmdW5jdGlvbih4KXt2YXIgYT1bXTtpZighUSh4KSYmIXYoeCkmJiF3KHgpKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdCByZXF1aXJlZCIpO3JldHVybiBUKHgsZnVuY3Rpb24oeCxiKXthLnB1c2goeCl9KSxhfX0pLEUoYiwhMSwhMSx7aXNBcnJheTpmdW5jdGlvbih4KXtyZXR1cm4gdCh4KX19KSxFKGIsITAsITEse2V2ZXJ5OmZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcy5sZW5ndGgsYz0wO2ZvcihLeChhcmd1bWVudHMpO2M8Yjspe2lmKGMgaW4gdGhpcyYmIXguY2FsbChhLHRoaXNbY10sYyx0aGlzKSlyZXR1cm4hMTtjKyt9cmV0dXJuITB9LHNvbWU6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzLmxlbmd0aCxjPTA7Zm9yKEt4KGFyZ3VtZW50cyk7YzxiOyl7aWYoYyBpbiB0aGlzJiZ4LmNhbGwoYSx0aGlzW2NdLGMsdGhpcykpcmV0dXJuITA7YysrfXJldHVybiExfSxtYXA6ZnVuY3Rpb24oeCxhKXthPWFyZ3VtZW50c1sxXTt2YXIgYj10aGlzLmxlbmd0aCxjPTAsZD1uZXcgQXJyYXkoYik7Zm9yKEt4KGFyZ3VtZW50cyk7YzxiOyljIGluIHRoaXMmJihkW2NdPXguY2FsbChhLHRoaXNbY10sYyx0aGlzKSksYysrO3JldHVybiBkfSxmaWx0ZXI6ZnVuY3Rpb24oeCl7dmFyIGE9YXJndW1lbnRzWzFdLGI9dGhpcy5sZW5ndGgsYz0wLGQ9W107Zm9yKEt4KGFyZ3VtZW50cyk7YzxiOyljIGluIHRoaXMmJnguY2FsbChhLHRoaXNbY10sYyx0aGlzKSYmZC5wdXNoKHRoaXNbY10pLGMrKztyZXR1cm4gZH0saW5kZXhPZjpmdW5jdGlvbih4KXt2YXIgYT1hcmd1bWVudHNbMV07cmV0dXJuIHModGhpcyk/dGhpcy5pbmRleE9mKHgsYSk6SHgodGhpcyx4LGEsMSl9LGxhc3RJbmRleE9mOmZ1bmN0aW9uKHgpe3ZhciBhPWFyZ3VtZW50c1sxXTtyZXR1cm4gcyh0aGlzKT90aGlzLmxhc3RJbmRleE9mKHgsYSk6SHgodGhpcyx4LGEsLTEpfSxmb3JFYWNoOmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMubGVuZ3RoLGI9MCxjPWFyZ3VtZW50c1sxXTtmb3IoTCh4KTtiPGE7KWIgaW4gdGhpcyYmeC5jYWxsKGMsdGhpc1tiXSxiLHRoaXMpLGIrK30scmVkdWNlOmZ1bmN0aW9uKHgpe3JldHVybiBJeCh0aGlzLHgsYXJndW1lbnRzWzFdKX0scmVkdWNlUmlnaHQ6ZnVuY3Rpb24oeCl7cmV0dXJuIEl4KHRoaXMseCxhcmd1bWVudHNbMV0sITApfX0pLEUoRnVuY3Rpb24sITAsITEse2JpbmQ6ZnVuY3Rpb24oeCl7dmFyIGEsYj10aGlzLGM9Sihhcmd1bWVudHMsbnVsbCwxKTtpZighdyh0aGlzKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJGdW5jdGlvbi5wcm90b3R5cGUuYmluZCBjYWxsZWQgb24gYSBub24tZnVuY3Rpb24iKTtyZXR1cm4oYT1mdW5jdGlvbigpe3JldHVybiBiLmFwcGx5KGIucHJvdG90eXBlJiZ0aGlzIGluc3RhbmNlb2YgYj90aGlzOngsYy5jb25jYXQoSihhcmd1bWVudHMpKSl9KS5wcm90b3R5cGU9dGhpcy5wcm90b3R5cGUsYX19KSxFKGQsITEsITEse25vdzpmdW5jdGlvbigpe3JldHVybihuZXcgZCkuZ2V0VGltZSgpfX0pLEx4KCksTXgoKTt2YXIgbGE9IkFscGhhbnVtZXJpY1NvcnQiLG1hPSJBbHBoYW51bWVyaWNTb3J0T3JkZXIiLG5hPSJBbHBoYW51bWVyaWNTb3J0SWdub3JlIixvYT0iQWxwaGFudW1lcmljU29ydElnbm9yZUNhc2UiLHBhPSJBbHBoYW51bWVyaWNTb3J0RXF1aXZhbGVudHMiLHFhPSJBbHBoYW51bWVyaWNTb3J0TmF0dXJhbCI7ZnVuY3Rpb24gcmEoKXt2YXIgeD1iLnByb3RvdHlwZS5tYXAsYT1mdW5jdGlvbigpe3ZhciB4PWFyZ3VtZW50cztyZXR1cm4geC5sZW5ndGg+MCYmIXcoeFswXSl9O0YoYiwhMCxhLCJldmVyeSxhbGwsc29tZSxmaWx0ZXIsYW55LG5vbmUsZmluZCxmaW5kSW5kZXgiLGZ1bmN0aW9uKHgsYSl7dmFyIGM9Yi5wcm90b3R5cGVbYV07eFthXT1mdW5jdGlvbih4KXt2YXIgYT1UeCh4KTtyZXR1cm4gYy5jYWxsKHRoaXMsZnVuY3Rpb24oeCxiKXtyZXR1cm4gYSh4LGIsdGhpcyl9KX19KSxFKGIsITAsYSx7bWFwOmZ1bmN0aW9uKGEpe3JldHVybiB4LmNhbGwodGhpcyxmdW5jdGlvbih4LGIpe3JldHVybiBVeCh4LGEsdGhpcyxbeCxiLHRoaXNdKX0pfX0pfWZ1bmN0aW9uIHNhKCl7dmFyIHg9IkHDgcOAw4LDg8SEQkPEhsSMw4dExI7DkEXDicOIxJrDisOLxJhGR8SeSMSxScONw4zEsMOOw49KS0zFgU1OxYPFh8ORT8OTw5LDlFBRUsWYU8WaxaDFnlTFpFXDmsOZxa7Dm8OcVldYWcOdWsW5xbvFvcOew4bFksOYw5XDhcOEw5YiLGE9IkHDgcOAw4LDg8OELEPDhyxFw4nDiMOKw4ssScONw4zEsMOOw48sT8OTw5LDlMOVw5YsU8OfLFXDmsOZw5vDnCI7YlttYV09eC5zcGxpdCgiIikubWFwKGZ1bmN0aW9uKHgpe3JldHVybiB4K3gudG9Mb3dlckNhc2UoKX0pLmpvaW4oIiIpO3ZhciBjPXt9O1Z4KGEuc3BsaXQoIiwiKSxmdW5jdGlvbih4KXt2YXIgYT14LmNoYXJBdCgwKTtWeCh4LnNsaWNlKDEpLnNwbGl0KCIiKSxmdW5jdGlvbih4KXtjW3hdPWEsY1t4LnRvTG93ZXJDYXNlKCldPWEudG9Mb3dlckNhc2UoKX0pfSksYltxYV09ITAsYltvYV09ITAsYltwYV09Y31mdW5jdGlvbiB0YSh4KXtyZXR1cm4gYS5rZXlzKFcoeCkpfWZ1bmN0aW9uIHVhKHgsYyl7RihhLCExLCEwLHgsZnVuY3Rpb24oeCxhKXt4W2FdPWZ1bmN0aW9uKHgsZCxlKXt2YXIgZixnLGg9dGEoeCk7cmV0dXJuIGN8fChnPVR4KGQsITApKSxmPWIucHJvdG90eXBlW2FdLmNhbGwoaCxmdW5jdGlvbihhKXt2YXIgYj14W2FdO3JldHVybiBjP1V4KGIsZCx4LFthLGIseF0pOmcoYixhLHgpfSxlKSx0KGYpJiYoZj1mLnJlZHVjZShmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGFbYl09eFtiXSxhfSx7fSkpLGZ9fSksR3goeCxZKX1mdW5jdGlvbiB2YSgpe2JbbGFdPWhhfUUoYiwhMSwhMCx7Y3JlYXRlOmZ1bmN0aW9uKCl7dmFyIHg9W107cmV0dXJuIEooYXJndW1lbnRzLGZ1bmN0aW9uKGEpeyhiYShhKXx8YWEoYSkpJiYoYT1iLnByb3RvdHlwZS5zbGljZS5jYWxsKGEsMCkpLHg9eC5jb25jYXQoYSl9KSx4fX0pLEUoYiwhMCwhMSx7ZmluZDpmdW5jdGlvbih4LGEpe3JldHVybiBMKHgpLFp4KHRoaXMseCwwLCExLCExLGEpfSxmaW5kSW5kZXg6ZnVuY3Rpb24oeCxhKXt2YXIgYjtyZXR1cm4gTCh4KSxOKGI9WngodGhpcyx4LDAsITEsITAsYSkpPy0xOmJ9fSksRShiLCEwLCEwLHtmaW5kRnJvbTpmdW5jdGlvbih4LGEsYil7cmV0dXJuIFp4KHRoaXMseCxhLGIpfSxmaW5kSW5kZXhGcm9tOmZ1bmN0aW9uKHgsYSxiKXtyZXR1cm4gTihhPVp4KHRoaXMseCxhLGIsITApKT8tMTphfSxmaW5kQWxsOmZ1bmN0aW9uKHgsYSxiKXt2YXIgYyxkPVtdO3JldHVybiB0aGlzLmxlbmd0aD4wJiYoYz1UeCh4KSxWeCh0aGlzLGZ1bmN0aW9uKHgsYSxiKXtjKHgsYSxiKSYmZC5wdXNoKHgpfSxhLGIpKSxkfSxjb3VudDpmdW5jdGlvbih4KXtyZXR1cm4gTih4KT90aGlzLmxlbmd0aDp0aGlzLmZpbmRBbGwoeCkubGVuZ3RofSxyZW1vdmVBdDpmdW5jdGlvbih4LGEpe3JldHVybiBOKHgpP3RoaXM6KE4oYSkmJihhPXgpLHRoaXMuc3BsaWNlKHgsYS14KzEpLHRoaXMpfSxpbmNsdWRlOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIHRoaXMuY2xvbmUoKS5hZGQoeCxhKX0sZXhjbHVkZTpmdW5jdGlvbigpe3JldHVybiBiLnByb3RvdHlwZS5yZW1vdmUuYXBwbHkodGhpcy5jbG9uZSgpLGFyZ3VtZW50cyl9LGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuIFYoW10sdGhpcyl9LHVuaXF1ZTpmdW5jdGlvbih4KXtyZXR1cm4gJHgodGhpcyx4KX0sZmxhdHRlbjpmdW5jdGlvbih4KXtyZXR1cm4geGEodGhpcyx4KX0sdW5pb246ZnVuY3Rpb24oKXtyZXR1cm4gJHgodGhpcy5jb25jYXQoY2EoYXJndW1lbnRzKSkpfSxpbnRlcnNlY3Q6ZnVuY3Rpb24oKXtyZXR1cm4gX3godGhpcyxjYShhcmd1bWVudHMpLCExKX0sc3VidHJhY3Q6ZnVuY3Rpb24oeCl7cmV0dXJuIF94KHRoaXMsY2EoYXJndW1lbnRzKSwhMCl9LGF0OmZ1bmN0aW9uKCl7cmV0dXJuIEV4KHRoaXMsYXJndW1lbnRzKX0sZmlyc3Q6ZnVuY3Rpb24oeCl7cmV0dXJuIE4oeCk/dGhpc1swXTooeDwwJiYoeD0wKSx0aGlzLnNsaWNlKDAseCkpfSxsYXN0OmZ1bmN0aW9uKHgpe2lmKE4oeCkpcmV0dXJuIHRoaXNbdGhpcy5sZW5ndGgtMV07dmFyIGE9dGhpcy5sZW5ndGgteDwwPzA6dGhpcy5sZW5ndGgteDtyZXR1cm4gdGhpcy5zbGljZShhKX0sZnJvbTpmdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5zbGljZSh4KX0sdG86ZnVuY3Rpb24oeCl7cmV0dXJuIE4oeCkmJih4PXRoaXMubGVuZ3RoKSx0aGlzLnNsaWNlKDAseCl9LG1pbjpmdW5jdGlvbih4LGEpe3JldHVybiBnYSh0aGlzLHgsIm1pbiIsYSl9LG1heDpmdW5jdGlvbih4LGEpe3JldHVybiBnYSh0aGlzLHgsIm1heCIsYSl9LGxlYXN0OmZ1bmN0aW9uKHgsYSl7cmV0dXJuIGdhKHRoaXMuZ3JvdXBCeS5hcHBseSh0aGlzLFt4XSksImxlbmd0aCIsIm1pbiIsYSl9LG1vc3Q6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gZ2EodGhpcy5ncm91cEJ5LmFwcGx5KHRoaXMsW3hdKSwibGVuZ3RoIiwibWF4IixhKX0sc3VtOmZ1bmN0aW9uKHgpe3ZhciBhPXg/dGhpcy5tYXAoeCk6dGhpcztyZXR1cm4gYS5sZW5ndGg+MD9hLnJlZHVjZShmdW5jdGlvbih4LGEpe3JldHVybiB4K2F9KTowfSxhdmVyYWdlOmZ1bmN0aW9uKHgpe3ZhciBhPXg/dGhpcy5tYXAoeCk6dGhpcztyZXR1cm4gYS5sZW5ndGg+MD9hLnN1bSgpL2EubGVuZ3RoOjB9LGluR3JvdXBzOmZ1bmN0aW9uKHgsYSl7dmFyIGI9YXJndW1lbnRzLmxlbmd0aD4xLGM9dGhpcyxkPVtdLGU9Xyh0aGlzLmxlbmd0aC94KTtyZXR1cm4gVSh4LGZ1bmN0aW9uKHgpe3ZhciBmPXgqZSxnPWMuc2xpY2UoZixmK2UpO2ImJmcubGVuZ3RoPGUmJlUoZS1nLmxlbmd0aCxmdW5jdGlvbigpe2c9Zy5hZGQoYSl9KSxkLnB1c2goZyl9KSxkfSxpbkdyb3Vwc09mOmZ1bmN0aW9uKHgsYSl7dmFyIGIsYz1bXSxkPXRoaXMubGVuZ3RoLGU9dGhpcztyZXR1cm4gMD09PWR8fDA9PT14P2U6KE4oeCkmJih4PTEpLE4oYSkmJihhPW51bGwpLFUoXyhkL3gpLGZ1bmN0aW9uKGQpe2ZvcihiPWUuc2xpY2UoeCpkLHgqZCt4KTtiLmxlbmd0aDx4OyliLnB1c2goYSk7Yy5wdXNoKGIpfSksYyl9LGlzRW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4gMD09dGhpcy5jb21wYWN0KCkubGVuZ3RofSxzb3J0Qnk6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzLmNsb25lKCk7cmV0dXJuIGIuc29ydChmdW5jdGlvbihjLGQpe3ZhciBlLGY7cmV0dXJuIGU9VXgoYyx4LGIsW2NdKSxmPVV4KGQseCxiLFtkXSksKHMoZSkmJnMoZik/aGEoZSxmKTplPGY/LTE6ZT5mPzE6MCkqKGE/LTE6MSl9KSxifSxyYW5kb21pemU6ZnVuY3Rpb24oKXtmb3IodmFyIHgsYSxiPXRoaXMuY29uY2F0KCksYz1iLmxlbmd0aDtjOyl4PWcucmFuZG9tKCkqY3wwLGE9YlstLWNdLGJbY109Ylt4XSxiW3hdPWE7cmV0dXJuIGJ9LHppcDpmdW5jdGlvbigpe3ZhciB4PUooYXJndW1lbnRzKTtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oYSxiKXtyZXR1cm5bYV0uY29uY2F0KHgubWFwKGZ1bmN0aW9uKHgpe3JldHVybiBiIGluIHg/eFtiXTpudWxsfSkpfSl9LHNhbXBsZTpmdW5jdGlvbih4KXt2YXIgYT10aGlzLnJhbmRvbWl6ZSgpO3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjA/YS5zbGljZSgwLHgpOmFbMF19LGVhY2g6ZnVuY3Rpb24oeCxhLGIpe3JldHVybiBWeCh0aGlzLHgsYSxiKSx0aGlzfSxhZGQ6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gcihmKGEpKSYmIWlzTmFOKGEpfHwoYT10aGlzLmxlbmd0aCksYi5wcm90b3R5cGUuc3BsaWNlLmFwcGx5KHRoaXMsW2EsMF0uY29uY2F0KHgpKSx0aGlzfSxyZW1vdmU6ZnVuY3Rpb24oKXt2YXIgeD10aGlzO3JldHVybiBKKGFyZ3VtZW50cyxmdW5jdGlvbihhKXtmb3IodmFyIGI9MCxjPVR4KGEpO2I8eC5sZW5ndGg7KWMoeFtiXSxiLHgpP3guc3BsaWNlKGIsMSk6YisrfSkseH0sY29tcGFjdDpmdW5jdGlvbih4KXt2YXIgYT1bXTtyZXR1cm4gVngodGhpcyxmdW5jdGlvbihiLGMpe3QoYik/YS5wdXNoKGIuY29tcGFjdCgpKTp4JiZiP2EucHVzaChiKTp4fHxudWxsPT1ifHxiLnZhbHVlT2YoKSE9Yi52YWx1ZU9mKCl8fGEucHVzaChiKX0pLGF9LGdyb3VwQnk6ZnVuY3Rpb24oeCxhKXt2YXIgYixjPXRoaXMsZD17fTtyZXR1cm4gVngoYyxmdW5jdGlvbihhLGUpe2I9VXgoYSx4LGMsW2EsZSxjXSksZFtiXXx8KGRbYl09W10pLGRbYl0ucHVzaChhKX0pLGEmJlQoZCxhKSxkfSxub25lOmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuYW55LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KSxFKGIsITAsITAse2FsbDpiLnByb3RvdHlwZS5ldmVyeSxhbnk6Yi5wcm90b3R5cGUuc29tZSxpbnNlcnQ6Yi5wcm90b3R5cGUuYWRkfSksRShhLCExLCEwLHttYXA6ZnVuY3Rpb24oeCxhKXt2YXIgYixjLGQ9e307Zm9yKGIgaW4geClQKHgsYikmJihjPXhbYl0sZFtiXT1VeChjLGEseCxbYixjLHhdKSk7cmV0dXJuIGR9LHJlZHVjZTpmdW5jdGlvbih4KXt2YXIgYT10YSh4KS5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIHhbYV19KTtyZXR1cm4gYS5yZWR1Y2UuYXBwbHkoYSxKKGFyZ3VtZW50cyxudWxsLDEpKX0sZWFjaDpmdW5jdGlvbih4LGEpe3JldHVybiBMKGEpLFQoeCxhKSx4fSxzaXplOmZ1bmN0aW9uKHgpe3JldHVybiB0YSh4KS5sZW5ndGh9fSk7dmFyIHdhLHlhLHphPSJhbnksYWxsLG5vbmUsY291bnQsZmluZCxmaW5kQWxsLGlzRW1wdHkiLnNwbGl0KCIsIiksQWE9InN1bSxhdmVyYWdlLG1pbixtYXgsbGVhc3QsbW9zdCIuc3BsaXQoIiwiKSxCYT0ibWFwLHJlZHVjZSxzaXplIi5zcGxpdCgiLCIpLENhPXphLmNvbmNhdChBYSkuY29uY2F0KEJhKTtyYSgpLHNhKCksdWEoemEpLHVhKEFhLCEwKSxHeChCYSxZKSx2YSgpO3ZhciBEYSxFYSxGYSxHYT1bImFtcG0iLCJob3VyIiwibWludXRlIiwic2Vjb25kIiwiYW1wbSIsInV0YyIsIm9mZnNldF9zaWduIiwib2Zmc2V0X2hvdXJzIiwib2Zmc2V0X21pbnV0ZXMiLCJhbXBtIl0sSGE9Iig/OlssLl1cXGQrKT8iLElhPSJbMC01XVxcZCIrSGEsSmE9Iih7dH0pP1xccyooIisoIlxcZHsxLDJ9IitIYSkrIikoPzp7aH0oIitJYSsiKT97bX0oPzo6PygiK0lhKyIpe3N9KT9cXHMqKD86KHt0fSl8KFopfCg/OihbKy1dKShcXGR7MiwyfSkoPzo6PyhcXGR7MiwyfSkpPyk/KT98XFxzKih7dH0pKSIsS2E9IuOAh+S4gOS6jOS4ieWbm+S6lOWFreS4g+WFq+S5neWNgeeZvuWNg+S4hyIsTGE9e30sTWE9W10sTmE9e30sT2E9e3l5eXk6ZnVuY3Rpb24oeCl7cmV0dXJuIHp4KHgsIkZ1bGxZZWFyIil9LHl5OmZ1bmN0aW9uKHgpe3JldHVybiB6eCh4LCJGdWxsWWVhciIpJTEwMH0sb3JkOmZ1bmN0aW9uKHgpe3ZhciBhPXp4KHgsIkRhdGUiKTtyZXR1cm4gYSt2eChhKX0sdHo6ZnVuY3Rpb24oeCl7cmV0dXJuIHguZ2V0VVRDT2Zmc2V0KCl9LGlzb3R6OmZ1bmN0aW9uKHgpe3JldHVybiB4LmdldFVUQ09mZnNldCghMCl9LFo6ZnVuY3Rpb24oeCl7cmV0dXJuIHguZ2V0VVRDT2Zmc2V0KCl9LFpaOmZ1bmN0aW9uKHgpe3JldHVybiB4LmdldFVUQ09mZnNldCgpLnJlcGxhY2UoLyhcZHsyfSkkLywiOiQxIil9fSxQYT1be25hbWU6InllYXIiLG1ldGhvZDoiRnVsbFllYXIiLGFtYmlndW91czohMCxtdWx0aXBsaWVyOmZ1bmN0aW9uKHgpe3JldHVybiAyNCooMzY1Kyh4P3guaXNMZWFwWWVhcigpPzE6MDouMjUpKSo2MCo2MCoxZTN9fSx7bmFtZToibW9udGgiLGVycm9yOi45MTksbWV0aG9kOiJNb250aCIsYW1iaWd1b3VzOiEwLG11bHRpcGxpZXI6ZnVuY3Rpb24oeCxhKXt2YXIgYixjPTMwLjQzNzU7cmV0dXJuIHgmJmE8PShiPXguZGF5c0luTW9udGgoKSkuZGF5cygpJiYoYz1iKSwyNCpjKjYwKjYwKjFlM319LHtuYW1lOiJ3ZWVrIixtZXRob2Q6IklTT1dlZWsiLG11bHRpcGxpZXI6ZnVuY3Rpb24oKXtyZXR1cm4gNjA0OGU1fX0se25hbWU6ImRheSIsZXJyb3I6Ljk1OCxtZXRob2Q6IkRhdGUiLGFtYmlndW91czohMCxtdWx0aXBsaWVyOmZ1bmN0aW9uKCl7cmV0dXJuIDg2NGU1fX0se25hbWU6ImhvdXIiLG1ldGhvZDoiSG91cnMiLG11bHRpcGxpZXI6ZnVuY3Rpb24oKXtyZXR1cm4gMzZlNX19LHtuYW1lOiJtaW51dGUiLG1ldGhvZDoiTWludXRlcyIsbXVsdGlwbGllcjpmdW5jdGlvbigpe3JldHVybiA2ZTR9fSx7bmFtZToic2Vjb25kIixtZXRob2Q6IlNlY29uZHMiLG11bHRpcGxpZXI6ZnVuY3Rpb24oKXtyZXR1cm4gMWUzfX0se25hbWU6Im1pbGxpc2Vjb25kIixtZXRob2Q6Ik1pbGxpc2Vjb25kcyIsbXVsdGlwbGllcjpmdW5jdGlvbigpe3JldHVybiAxfX1dLFFhPXt9O2Z1bmN0aW9uIFJhKHgpe1YodGhpcyx4KSx0aGlzLmNvbXBpbGVkRm9ybWF0cz1NYS5jb25jYXQoKX1mdW5jdGlvbiBTYSh4LGEpe3ZhciBiO2lmKHMoeCl8fCh4PSIiKSxiPVFhW3hdfHxRYVt4LnNsaWNlKDAsMildLCExPT09YSYmIWIpdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBsb2NhbGUuIik7cmV0dXJuIGJ8fHlhfWZ1bmN0aW9uIFRhKHgsYSl7dmFyIGIsYztmdW5jdGlvbiBkKHgpe3ZhciBhPWJbeF07cyhhKT9iW3hdPWEuc3BsaXQoIiwiKTphfHwoYlt4XT1bXSl9ZnVuY3Rpb24gZSh4LGEpe3JldHVybih4PXguc3BsaXQoIisiKS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIHgucmVwbGFjZSgvKC4rKTooLispJC8sZnVuY3Rpb24oeCxhLGIpe3JldHVybiBiLnNwbGl0KCJ8IikubWFwKGZ1bmN0aW9uKHgpe3JldHVybiBhK3h9KS5qb2luKCJ8Iil9KX0pLmpvaW4oInwiKSkuc3BsaXQoInwiKS5mb3JFYWNoKGEpfWZ1bmN0aW9uIGYoeCxhLGMpe3ZhciBkPVtdO2JbeF0uZm9yRWFjaChmdW5jdGlvbih4LGIpe2EmJih4Kz0iKyIreC5zbGljZSgwLDMpKSxlKHgsZnVuY3Rpb24oeCxhKXtkW2EqYytiXT14LnRvTG93ZXJDYXNlKCl9KX0pLGJbeF09ZH1mdW5jdGlvbiBnKHgsYSxjKXt2YXIgZD0iXFxkeyIreCsiLCIrYSsifSI7cmV0dXJuIGMmJihkKz0ifCg/OiIrV2EoYi5udW1iZXJzKSsiKSsiKSxkfWZ1bmN0aW9uIGgoKXt2YXIgeD1bIi0/XFxkKyJdLmNvbmNhdChiLmFydGljbGVzKTtyZXR1cm4gYi5udW1iZXJzJiYoeD14LmNvbmNhdChiLm51bWJlcnMpKSxXYSh4KX1mdW5jdGlvbiBpKHgsYSl7Ylt4XT1iW3hdfHxhfWZ1bmN0aW9uIGooKXt2YXIgeD1bXTtiLm1vZGlmaWVyc0J5TmFtZT17fSxiLm1vZGlmaWVycy5wdXNoKHtuYW1lOiJkYXkiLHNyYzoieWVzdGVyZGF5Iix2YWx1ZTotMX0pLGIubW9kaWZpZXJzLnB1c2goe25hbWU6ImRheSIsc3JjOiJ0b2RheSIsdmFsdWU6MH0pLGIubW9kaWZpZXJzLnB1c2goe25hbWU6ImRheSIsc3JjOiJ0b21vcnJvdyIsdmFsdWU6MX0pLGIubW9kaWZpZXJzLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGM9YS5uYW1lO2UoYS5zcmMsZnVuY3Rpb24oZCl7dmFyIGU9YltjXTtiLm1vZGlmaWVyc0J5TmFtZVtkXT1hLHgucHVzaCh7bmFtZTpjLHNyYzpkLHZhbHVlOmEudmFsdWV9KSxiW2NdPWU/ZSsifCIrZDpkfSl9KSxiLmRheSs9InwiK1dhKGIud2Vla2RheXMpLGIubW9kaWZpZXJzPXh9cmV0dXJuIGI9bmV3IFJhKGEpLGQoIm1vZGlmaWVycyIpLCJtb250aHMsd2Vla2RheXMsdW5pdHMsbnVtYmVycyxhcnRpY2xlcyx0b2tlbnMsdGltZU1hcmtlcixhbXBtLHRpbWVTdWZmaXhlcyxkYXRlUGFyc2UsdGltZVBhcnNlIi5zcGxpdCgiLCIpLmZvckVhY2goZCksZigibW9udGhzIixjPSFiLm1vbnRoU3VmZml4LDEyKSxmKCJ3ZWVrZGF5cyIsYyw3KSxmKCJ1bml0cyIsITEsOCksZigibnVtYmVycyIsITEsMTApLGkoImNvZGUiLHgpLGkoImRhdGUiLGcoMSwyLGIuZGlnaXREYXRlKSksaSgieWVhciIsIidcXGR7Mn18IitnKDQsNCkpLGkoIm51bSIsaCgpKSxqKCksYi5tb250aFN1ZmZpeCYmKGIubW9udGg9ZygxLDIpLGIubW9udGhzPSIxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiIuc3BsaXQoIiwiKS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIHgrYi5tb250aFN1ZmZpeH0pKSxiLmZ1bGxfbW9udGg9ZygxLDIpKyJ8IitXYShiLm1vbnRocyksYi50aW1lU3VmZml4ZXMubGVuZ3RoPjAmJmIuYWRkRm9ybWF0KHRiKEphLGIpLCExLEdhKSxiLmFkZEZvcm1hdCgie2RheX0iLCEwKSxiLmFkZEZvcm1hdCgie21vbnRofSIrKGIubW9udGhTdWZmaXh8fCIiKSksYi5hZGRGb3JtYXQoInt5ZWFyfSIrKGIueWVhclN1ZmZpeHx8IiIpKSxiLnRpbWVQYXJzZS5mb3JFYWNoKGZ1bmN0aW9uKHgpe2IuYWRkRm9ybWF0KHgsITApfSksYi5kYXRlUGFyc2UuZm9yRWFjaChmdW5jdGlvbih4KXtiLmFkZEZvcm1hdCh4KX0pLFFhW3hdPWJ9ZnVuY3Rpb24gVWEoeCxhLGIsZCl7eC5jb21waWxlZEZvcm1hdHMudW5zaGlmdCh7dmFyaWFudDpkLGxvY2FsZTp4LHJlZzpjKCJeIithKyIkIiwiaSIpLHRvOmJ9KX1mdW5jdGlvbiBWYSh4KXtyZXR1cm4geC5zbGljZSgwLDEpLnRvVXBwZXJDYXNlKCkreC5zbGljZSgxKX1mdW5jdGlvbiBXYSh4KXtyZXR1cm4geC5maWx0ZXIoZnVuY3Rpb24oeCl7cmV0dXJuISF4fSkuam9pbigifCIpfWZ1bmN0aW9uIFhhKCl7dmFyIHg9ZC5TdWdhck5ld0RhdGU7cmV0dXJuIHg/eCgpOm5ldyBkfWZ1bmN0aW9uIFlhKHgsYSl7dmFyIGI7cmV0dXJuIFEoeFswXSk/eDpyKHhbMF0pJiYhcih4WzFdKT9beFswXV06cyh4WzBdKSYmYT9bWmEoeFswXSkseFsxXV06KGI9e30sRWEuZm9yRWFjaChmdW5jdGlvbihhLGMpe2JbYS5uYW1lXT14W2NdfSksW2JdKX1mdW5jdGlvbiBaYSh4LGEpe3ZhciBiLGM9e307cmV0dXJuKGI9eC5tYXRjaCgvXihcZCspP1xzPyhcdys/KXM/JC9pKSkmJihOKGEpJiYoYT1wYXJzZUludChiWzFdKXx8MSksY1tiWzJdLnRvTG93ZXJDYXNlKCldPWEpLGN9ZnVuY3Rpb24gJGEoeCxhLGIpe3ZhciBjLGQ7Zm9yKE4oYikmJihiPUZhLmxlbmd0aCksYz1hfHwwO2M8YiYmITEhPT14KChkPUZhW2NdKS5uYW1lLGQsYyk7YysrKTt9ZnVuY3Rpb24gX2EoeCxhKXt2YXIgYixjLGQ9e307cmV0dXJuIGEuZm9yRWFjaChmdW5jdGlvbihhLGUpe04oYj14W2UrMV0pfHwiIj09PWJ8fCgieWVhciI9PT1hJiYoZC55ZWFyQXNTdHJpbmc9Yi5yZXBsYWNlKC8nLywiIikpLGM9cGFyc2VGbG9hdChiLnJlcGxhY2UoLycvLCIiKS5yZXBsYWNlKC8sLywiLiIpKSxkW2FdPWlzTmFOKGMpP2IudG9Mb3dlckNhc2UoKTpjKX0pLGR9ZnVuY3Rpb24geGIoeCl7cmV0dXJuIGFiKHg9eC50cmltKCkucmVwbGFjZSgvXmp1c3QgKD89bm93KXxcLiskL2ksIiIpKX1mdW5jdGlvbiBhYih4KXtyZXR1cm4geC5yZXBsYWNlKERhLGZ1bmN0aW9uKHgsYSxiKXt2YXIgYyxkLGU9MCxmPTE7cmV0dXJuIGE/eDooYi5zcGxpdCgiIikucmV2ZXJzZSgpLmZvckVhY2goZnVuY3Rpb24oeCl7dmFyIGE9TGFbeF0sYj1hPjk7Yj8oYyYmKGUrPWYpLGYqPWEvKGR8fDEpLGQ9YSk6KCExPT09YyYmKGYqPTEwKSxlKz1mKmEpLGM9Yn0pLGMmJihlKz1mKSxlKX0pfWZ1bmN0aW9uIGJiKHgsYSxiLGMpe3ZhciBlLGYsZyxoLGksaixrLGwsbSxuLG87ZnVuY3Rpb24gcCh4KXtoLnB1c2goeCl9ZnVuY3Rpb24gcSgpe2guZm9yRWFjaChmdW5jdGlvbih4KXt4LmNhbGwoKX0pfWZ1bmN0aW9uIHQoKXt2YXIgeD1lLmdldFdlZWtkYXkoKTtlLnNldFdlZWtkYXkoNyooai5udW0tMSkrKHg+bT9tKzc6bSkpfWZ1bmN0aW9uIHYoKXt2YXIgeD1pLm1vZGlmaWVyc0J5TmFtZVtqLmVkZ2VdOyRhKGZ1bmN0aW9uKHgpe2lmKE0oalt4XSkpcmV0dXJuIGs9eCwhMX0sNCksInllYXIiPT09az9qLnNwZWNpZmljaXR5PSJtb250aCI6Im1vbnRoIiE9PWsmJiJ3ZWVrIiE9PWt8fChqLnNwZWNpZmljaXR5PSJkYXkiKSxlWyh4LnZhbHVlPDA/ImVuZE9mIjoiYmVnaW5uaW5nT2YiKStWYShrKV0oKSwtMj09PXgudmFsdWUmJmUucmVzZXQoKX1mdW5jdGlvbiB3KCl7dmFyIHg7JGEoZnVuY3Rpb24oYSxiLGMpe2lmKCJkYXkiPT09YSYmKGE9ImRhdGUiKSxNKGpbYV0pKXtpZihjPj1sKXJldHVybiB3YihlKSwhMTsoeD14fHx7fSlbYV09althXSxkZWxldGUgalthXX19KSx4JiZwKGZ1bmN0aW9uKCl7ZS5zZXQoeCwhMCl9KX1yZXR1cm4gZT1YYSgpLGg9W10sZS51dGMoYyksdSh4KT9lLnV0Yyh4LmlzVVRDKCkpLnNldFRpbWUoeC5nZXRUaW1lKCkpOnIoeCk/ZS5zZXRUaW1lKHgpOlEoeCk/KGUuc2V0KHgsITApLGo9eCk6cyh4KSYmKGc9U2EoYSkseD14Yih4KSxnJiZUKGcuZ2V0Rm9ybWF0cygpLGZ1bmN0aW9uKGIsYyl7dmFyIGQ9eC5tYXRjaChjLnJlZyk7aWYoZClyZXR1cm4gaT1jLmxvY2FsZSxqPV9hKGQsYy50byxpKSxpLmNhY2hlZEZvcm1hdD1jLGoudXRjJiZlLnV0YygpLGoudGltZXN0YW1wPyhqPWoudGltZXN0YW1wLCExKTooYy52YXJpYW50JiYhcyhqLm1vbnRoKSYmKHMoai5kYXRlKXx8Zy5oYXNWYXJpYW50KGEpKSYmKG89ai5tb250aCxqLm1vbnRoPWouZGF0ZSxqLmRhdGU9byksai55ZWFyJiYyPT09ai55ZWFyQXNTdHJpbmcubGVuZ3RoJiYoai55ZWFyPWNiKGoueWVhcikpLGoubW9udGgmJihqLm1vbnRoPWkuZ2V0TW9udGgoai5tb250aCksai5zaGlmdCYmIWoudW5pdCYmKGoudW5pdD1pLnVuaXRzWzddKSksai53ZWVrZGF5JiZqLmRhdGU/ZGVsZXRlIGoud2Vla2RheTpqLndlZWtkYXkmJihqLndlZWtkYXk9aS5nZXRXZWVrZGF5KGoud2Vla2RheSksai5zaGlmdCYmIWoudW5pdCYmKGoudW5pdD1pLnVuaXRzWzVdKSksai5kYXkmJihvPWkubW9kaWZpZXJzQnlOYW1lW2ouZGF5XSk/KGouZGF5PW8udmFsdWUsZS5yZXNldCgpLGY9ITApOmouZGF5JiYobT1pLmdldFdlZWtkYXkoai5kYXkpKT4tMSYmKGRlbGV0ZSBqLmRheSxqLm51bSYmai5tb250aD8ocCh0KSxqLmRheT0xKTpqLndlZWtkYXk9bSksai5kYXRlJiYhcihqLmRhdGUpJiYoai5kYXRlPWkuZ2V0TnVtZXJpY0RhdGUoai5kYXRlKSksaS5tYXRjaFBNKGouYW1wbSkmJmouaG91cjwxMj9qLmhvdXIrPTEyOmkubWF0Y2hBTShqLmFtcG0pJiYxMj09PWouaG91ciYmKGouaG91cj0wKSwoIm9mZnNldF9ob3VycyJpbiBqfHwib2Zmc2V0X21pbnV0ZXMiaW4gaikmJihlLnV0YygpLGoub2Zmc2V0X21pbnV0ZXM9ai5vZmZzZXRfbWludXRlc3x8MCxqLm9mZnNldF9taW51dGVzKz02MCpqLm9mZnNldF9ob3VycywiLSI9PT1qLm9mZnNldF9zaWduJiYoai5vZmZzZXRfbWludXRlcyo9LTEpLGoubWludXRlLT1qLm9mZnNldF9taW51dGVzKSxqLnVuaXQmJihmPSEwLG49aS5nZXROdW1iZXIoai5udW0pLGw9aS5nZXRVbml0SW5kZXgoai51bml0KSxrPXdhLnVuaXRzW2xdLHcoKSxqLnNoaWZ0JiYobio9KG89aS5tb2RpZmllcnNCeU5hbWVbai5zaGlmdF0pP28udmFsdWU6MCksai5zaWduJiYobz1pLm1vZGlmaWVyc0J5TmFtZVtqLnNpZ25dKSYmKG4qPW8udmFsdWUpLE0oai53ZWVrZGF5KSYmKGUuc2V0KHt3ZWVrZGF5Omoud2Vla2RheX0sITApLGRlbGV0ZSBqLndlZWtkYXkpLGpba109KGpba118fDApK24pLGouZWRnZSYmcCh2KSwiLSI9PT1qLnllYXJfc2lnbiYmKGoueWVhcio9LTEpLCRhKGZ1bmN0aW9uKHgsYSxiKXt2YXIgYz1qW3hdLGQ9YyUxO2QmJihqW0ZhW2ItMV0ubmFtZV09YXgoZCooInNlY29uZCI9PT14PzFlMzo2MCkpLGpbeF09eHgoYykpfSwxLDQpLCExKX0pLGo/Zj9lLmFkdmFuY2Uoaik6KGUuX3V0YyYmZS5yZXNldCgpLHNiKGUsaiwhMCwhMSxiKSk6KCJub3ciIT09eCYmKGU9bmV3IGQoeCkpLGMmJmUuYWRkTWludXRlcygtZS5nZXRUaW1lem9uZU9mZnNldCgpKSkscSgpLGUudXRjKCExKSkse2RhdGU6ZSxzZXQ6an19ZnVuY3Rpb24gY2IoeCl7cmV0dXJuIDEwMCpheCh6eChYYSgpLCJGdWxsWWVhciIpLzEwMCktMTAwKmF4KHgvMTAwKSt4fWZ1bmN0aW9uIGRiKHgpe3ZhciBhPXp4KHg9eC5jbG9uZSgpLCJEYXkiKXx8NztyZXR1cm4geC5hZGREYXlzKDQtYSkucmVzZXQoKSwxK3h4KHguZGF5c1NpbmNlKHguY2xvbmUoKS5iZWdpbm5pbmdPZlllYXIoKSkvNyl9ZnVuY3Rpb24gZWIoeCl7dmFyIGEsYj1aKHgpLGM9YixkPTA7cmV0dXJuICRhKGZ1bmN0aW9uKHgsZSxmKXsoYT14eChkeChiL2UubXVsdGlwbGllcigpLDEpKSk+PTEmJihjPWEsZD1mKX0sMSksW2MsZCx4XX1mdW5jdGlvbiBmYih4KXt2YXIgYT1lYih4Lm1pbGxpc2Vjb25kc0Zyb21Ob3coKSk7cmV0dXJuIGdiKHgsYSkmJihhWzBdPVooeC5tb250aHNGcm9tTm93KCkpLGFbMV09NiksYX1mdW5jdGlvbiBnYih4LGEpe3JldHVybiA2PT09YVsxXXx8NT09PWFbMV0mJjQ9PT1hWzBdJiZ4LmRheXNGcm9tTm93KCk+PVhhKCkuZGF5c0luTW9udGgoKX1mdW5jdGlvbiBoYih4LGEpe3ZhciBiPWZ1bmN0aW9uKHgsYSl7dmFyIGI9engoeCwiSG91cnMiKTtyZXR1cm4gU2EoYSkuYW1wbVt4eChiLzEyKV18fCIifTtsYigidCIsYiwxKSxsYigidHQiLGIpLGxiKCJUIixiLDEsMSksbGIoIlRUIixiLG51bGwsMil9ZnVuY3Rpb24gaWIoeCxhKXt2YXIgYj1mdW5jdGlvbih4LGEpe3ZhciBiPXp4KHgsIkRheSIpO3JldHVybiBTYShhKS53ZWVrZGF5c1tiXX07bGIoImRvdyIsYiwzKSxsYigiRG93IixiLDMsMSksbGIoIndlZWtkYXkiLGIpLGxiKCJXZWVrZGF5IixiLG51bGwsMSl9ZnVuY3Rpb24gamIoeCxhKXtrYigibW9uIiwwLDMpLGtiKCJtb250aCIsMCksa2IoIm1vbnRoMiIsMSksa2IoIm1vbnRoMyIsMil9ZnVuY3Rpb24ga2IoeCxhLGIpe3ZhciBjPWZ1bmN0aW9uKHgsYil7dmFyIGM9engoeCwiTW9udGgiKTtyZXR1cm4gU2EoYikubW9udGhzW2MrMTIqYV19O2xiKHgsYyxiKSxsYihWYSh4KSxjLGIsMSl9ZnVuY3Rpb24gbGIoeCxhLGIsYyl7T2FbeF09ZnVuY3Rpb24oeCxkKXt2YXIgZT1hKHgsZCk7cmV0dXJuIGImJihlPWUuc2xpY2UoMCxiKSksYyYmKGU9ZS5zbGljZSgwLGMpLnRvVXBwZXJDYXNlKCkrZS5zbGljZShjKSksZX19ZnVuY3Rpb24gbWIoeCxhLGIpe09hW3hdPWEsT2FbeCt4XT1mdW5jdGlvbih4LGIpe3JldHVybiB1eChhKHgsYiksMil9LGImJihPYVt4K3greF09ZnVuY3Rpb24oeCxiKXtyZXR1cm4gdXgoYSh4LGIpLDMpfSxPYVt4K3greCt4XT1mdW5jdGlvbih4LGIpe3JldHVybiB1eChhKHgsYiksNCl9KX1mdW5jdGlvbiBuYih4KXt2YXIgYT14Lm1hdGNoKC8oXHtcdytcfSl8W157fV0rL2cpO05hW3hdPWEubWFwKGZ1bmN0aW9uKHgpe3JldHVybiB4LnJlcGxhY2UoL1x7KFx3KylcfS8sZnVuY3Rpb24oYSxiKXtyZXR1cm4geD1PYVtiXXx8YixifSkseH0pfWZ1bmN0aW9uIG9iKHgsYSxiKXt2YXIgYyxkLGUsZixnPSIiO2ZvcihlPTAsZD0oYz1OYVthXSkubGVuZ3RoO2U8ZDtlKyspZj1jW2VdLGcrPXcoZik/Zih4LGIpOmY7cmV0dXJuIGd9ZnVuY3Rpb24gcGIoeCxhLGIsYyl7dmFyIGQ7cmV0dXJuIHguaXNWYWxpZCgpPyhEYXRlW2FdP2E9RGF0ZVthXTp3KGEpJiYoZD1mYih4KSxhPWEuYXBwbHkoeCxkLmNvbmNhdChTYShjKSkpKSwhYSYmYj8oMD09PShkPWR8fGZiKHgpKVsxXSYmKGRbMV09MSxkWzBdPTEpLFNhKGMpLmdldFJlbGF0aXZlRm9ybWF0KGQpKTooInNob3J0IiE9PShhPWF8fCJsb25nIikmJiJsb25nIiE9PWEmJiJmdWxsIiE9PWF8fChhPVNhKGMpW2FdKSxOYVthXXx8bmIoYSksb2IoeCxhLGMpKSk6IkludmFsaWQgRGF0ZSJ9ZnVuY3Rpb24gcWIoeCxhLGIsYyxkKXt2YXIgZSxmLGcsaCxpLGosaz0wLGw9MCxtPTA7cmV0dXJuIGM+MCYmKGw9bT1jLGk9ITApLCEhKGU9YmIoYSxiLG51bGwsZCkpLmRhdGUuaXNWYWxpZCgpJiYoZS5zZXQmJmUuc2V0LnNwZWNpZmljaXR5JiYoUGEuZm9yRWFjaChmdW5jdGlvbihhLGIpe2EubmFtZT09PWUuc2V0LnNwZWNpZmljaXR5JiYoaz1hLm11bHRpcGxpZXIoZS5kYXRlLHgtZS5kYXRlKS0xKX0pLGo9VmEoZS5zZXQuc3BlY2lmaWNpdHkpLChlLnNldC5lZGdlfHxlLnNldC5zaGlmdCkmJmUuZGF0ZVsiYmVnaW5uaW5nT2YiK2pdKCksIm1vbnRoIj09PWUuc2V0LnNwZWNpZmljaXR5JiYoaD1lLmRhdGUuY2xvbmUoKVsiZW5kT2YiK2pdKCkuZ2V0VGltZSgpKSwhaSYmZS5zZXQuc2lnbiYmIm1pbGxpc2Vjb25kIiE9ZS5zZXQuc3BlY2lmaWNpdHkmJihsPTUwLG09LTUwKSksZj14LmdldFRpbWUoKSxnPWUuZGF0ZS5nZXRUaW1lKCksaD1yYih4LGcsaD1ofHxnK2spLGY+PWctbCYmZjw9aCttKX1mdW5jdGlvbiByYih4LGEsYil7dmFyIGMsZSxmLGc7cmV0dXJuIGM9bmV3IGQoYSksMjMhPT16eChlPW5ldyBkKGIpLnV0Yyh4LmlzVVRDKCkpLCJIb3VycyIpJiYoZj1jLmdldFRpbWV6b25lT2Zmc2V0KCkpIT09KGc9ZS5nZXRUaW1lem9uZU9mZnNldCgpKSYmKGIrPShnLWYpLm1pbnV0ZXMoKSksYn1mdW5jdGlvbiBzYih4LGEsYixjLGQpe3ZhciBlO2Z1bmN0aW9uIGYoeCl7cmV0dXJuIE0oYVt4XSk/YVt4XTphW3grInMiXX1mdW5jdGlvbiBnKHgpe3JldHVybiBNKGYoeCkpfWZ1bmN0aW9uIGgoeCxhKXtyZXR1cm4gZyh4KXx8YSYmZygid2Vla2RheSIpfWZ1bmN0aW9uIGkoKXtzd2l0Y2goZCl7Y2FzZS0xOnJldHVybiB4PlhhKCk7Y2FzZSAxOnJldHVybiB4PFhhKCl9fWlmKHIoYSkmJmMpYT17bWlsbGlzZWNvbmRzOmF9O2Vsc2UgaWYocihhKSlyZXR1cm4geC5zZXRUaW1lKGEpLHg7aWYoTShhLmRhdGUpJiYoYS5kYXk9YS5kYXRlKSwkYShmdW5jdGlvbihjLGQsZil7dmFyIGk9ImRheSI9PT1jO2lmKGgoYyxpKSlyZXR1cm4gYS5zcGVjaWZpY2l0eT1jLGU9K2YsITE7IWJ8fCJ3ZWVrIj09PWN8fGkmJmcoIndlZWsiKXx8QXgoeCxkLm1ldGhvZCxpPzE6MCl9KSxQYS5mb3JFYWNoKGZ1bmN0aW9uKGIsZCl7dmFyIGUsaD1iLm5hbWUsaT1iLm1ldGhvZDtQYVtkLTFdO04oZT1mKGgpKXx8KGM/KCJ3ZWVrIj09PWgmJihlPShhLmRheXx8MCkrNyplLGk9IkRhdGUiKSxlPWUqYyt6eCh4LGkpKToibW9udGgiPT09aCYmZygiZGF5IikmJkF4KHgsIkRhdGUiLDE1KSxBeCh4LGksZSksYyYmIm1vbnRoIj09PWgmJnViKHgsZSkpfSksIWMmJiFnKCJkYXkiKSYmZygid2Vla2RheSIpKXt2YXIgaj1mKCJ3ZWVrZGF5Iik7eC5zZXRXZWVrZGF5KGopfXJldHVybiBpKCkmJiRhKGZ1bmN0aW9uKGEsYil7aWYoKGIuYW1iaWd1b3VzfHwid2VlayI9PT1hJiZnKCJ3ZWVrZGF5IikpJiYhaChhLCJkYXkiPT09YSkpcmV0dXJuIHhbYi5hZGRNZXRob2RdKGQpLCExfSxlKzEpLHh9ZnVuY3Rpb24gdGIoeCxhLGIpe3ZhciBjLGQ9e2g6MCxtOjEsczoyfTtyZXR1cm4gYT1hfHx3YSx4LnJlcGxhY2UoL3soW2Etel0pfS9nLGZ1bmN0aW9uKHgsZSl7dmFyIGY9W10sZz0iaCI9PT1lLGg9ZyYmIWI7cmV0dXJuInQiPT09ZT9hLmFtcG0uam9pbigifCIpOihnJiZmLnB1c2goIjoiKSwoYz1hLnRpbWVTdWZmaXhlc1tkW2VdXSkmJmYucHVzaChjKyJcXHMqIiksMD09PWYubGVuZ3RoPyIiOiIoPzoiK2Yuam9pbigifCIpKyIpIisoaD8iIjoiPyIpKX0pfWZ1bmN0aW9uIHViKHgsYSl7YTwwJiYoYT1hJTEyKzEyKSxhJTEyIT16eCh4LCJNb250aCIpJiZBeCh4LCJEYXRlIiwwKX1mdW5jdGlvbiB2Yih4LGEsYil7dmFyIGMsZDtyZXR1cm4gcih4WzFdKT9jPVlhKHgpWzBdOihjPXhbMF0sZD14WzFdKSxiYihjLGQsYSxiKS5kYXRlfWZ1bmN0aW9uIHdiKHgpe3guc2V0VGltZShOYU4pfWZ1bmN0aW9uIHliKCl7RmE9UGEuY29uY2F0KCkucmV2ZXJzZSgpLChFYT1QYS5jb25jYXQoKSkuc3BsaWNlKDIsMSl9ZnVuY3Rpb24gemIoKXtGKGQsITAsITAsUGEsZnVuY3Rpb24oeCxhLGIpe3ZhciBjLGUsZj1hLm5hbWUsZz1WYShmKSxoPWEubXVsdGlwbGllcigpO2Z1bmN0aW9uIGkoeCl7dmFyIGI9eC9oLGM9YiUxLGQ9YS5lcnJvcnx8Ljk5OTtyZXR1cm4gYyYmWihjJTEpPmQmJihiPWF4KGIpKSxiPDA/XyhiKTp4eChiKX1hLmFkZE1ldGhvZD0iYWRkIitnKyJzIixjPWZ1bmN0aW9uKHgsYSl7cmV0dXJuIGkodGhpcy5nZXRUaW1lKCktZC5jcmVhdGUoeCxhKS5nZXRUaW1lKCkpfSxlPWZ1bmN0aW9uKHgsYSl7cmV0dXJuIGkoZC5jcmVhdGUoeCxhKS5nZXRUaW1lKCktdGhpcy5nZXRUaW1lKCkpfSx4W2YrInNBZ28iXT1lLHhbZisic1VudGlsIl09ZSx4W2YrInNTaW5jZSJdPWMseFtmKyJzRnJvbU5vdyJdPWMseFthLmFkZE1ldGhvZF09ZnVuY3Rpb24oeCxhKXt2YXIgYj17fTtyZXR1cm4gYltmXT14LHRoaXMuYWR2YW5jZShiLGEpfSxIYihhLGgpLGI8MyYmWyJMYXN0IiwiVGhpcyIsIk5leHQiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3hbImlzIithK2ddPWZ1bmN0aW9uKCl7cmV0dXJuIHFiKHRoaXMsYSsiICIrZiwiZW4iKX19KSxiPDQmJih4WyJiZWdpbm5pbmdPZiIrZ109ZnVuY3Rpb24oKXt2YXIgeD17fTtzd2l0Y2goZil7Y2FzZSJ5ZWFyIjp4LnllYXI9engodGhpcywiRnVsbFllYXIiKTticmVhaztjYXNlIm1vbnRoIjp4Lm1vbnRoPXp4KHRoaXMsIk1vbnRoIik7YnJlYWs7Y2FzZSJkYXkiOnguZGF5PXp4KHRoaXMsIkRhdGUiKTticmVhaztjYXNlIndlZWsiOngud2Vla2RheT0wfXJldHVybiB0aGlzLnNldCh4LCEwKX0seFsiZW5kT2YiK2ddPWZ1bmN0aW9uKCl7dmFyIHg9e2hvdXJzOjIzLG1pbnV0ZXM6NTksc2Vjb25kczo1OSxtaWxsaXNlY29uZHM6OTk5fTtzd2l0Y2goZil7Y2FzZSJ5ZWFyIjp4Lm1vbnRoPTExLHguZGF5PTMxO2JyZWFrO2Nhc2UibW9udGgiOnguZGF5PXRoaXMuZGF5c0luTW9udGgoKTticmVhaztjYXNlIndlZWsiOngud2Vla2RheT02fXJldHVybiB0aGlzLnNldCh4LCEwKX0pfSl9ZnVuY3Rpb24gQWIoKXt3YS5hZGRGb3JtYXQoIihbKy1dKT8oXFxkezQsNH0pWy0uXT97ZnVsbF9tb250aH1bLS5dPyhcXGR7MSwyfSk/IiwhMCxbInllYXJfc2lnbiIsInllYXIiLCJtb250aCIsImRhdGUiXSwhMSwhMCksd2EuYWRkRm9ybWF0KCIoXFxkezEsMn0pWy0uXFwvXXtmdWxsX21vbnRofSg/OlstLlxcL10oXFxkezIsNH0pKT8iLCEwLFsiZGF0ZSIsIm1vbnRoIiwieWVhciJdLCEwKSx3YS5hZGRGb3JtYXQoIntmdWxsX21vbnRofVstLl0oXFxkezQsNH0pIiwhMSxbIm1vbnRoIiwieWVhciJdKSx3YS5hZGRGb3JtYXQoIlxcL0RhdGVcXCgoXFxkKyg/OlsrLV1cXGR7NCw0fSk/KVxcKVxcLyIsITEsWyJ0aW1lc3RhbXAiXSksd2EuYWRkRm9ybWF0KHRiKEphLHdhKSwhMSxHYSksTWE9d2EuY29tcGlsZWRGb3JtYXRzLnNsaWNlKDAsNykucmV2ZXJzZSgpLHdhLmNvbXBpbGVkRm9ybWF0cz13YS5jb21waWxlZEZvcm1hdHMuc2xpY2UoNykuY29uY2F0KE1hKX1mdW5jdGlvbiBCYigpe21iKCJmIixmdW5jdGlvbih4KXtyZXR1cm4gengoeCwiTWlsbGlzZWNvbmRzIil9LCEwKSxtYigicyIsZnVuY3Rpb24oeCl7cmV0dXJuIHp4KHgsIlNlY29uZHMiKX0pLG1iKCJtIixmdW5jdGlvbih4KXtyZXR1cm4gengoeCwiTWludXRlcyIpfSksbWIoImgiLGZ1bmN0aW9uKHgpe3JldHVybiB6eCh4LCJIb3VycyIpJTEyfHwxMn0pLG1iKCJIIixmdW5jdGlvbih4KXtyZXR1cm4gengoeCwiSG91cnMiKX0pLG1iKCJkIixmdW5jdGlvbih4KXtyZXR1cm4gengoeCwiRGF0ZSIpfSksbWIoIk0iLGZ1bmN0aW9uKHgpe3JldHVybiB6eCh4LCJNb250aCIpKzF9KSxoYigpLGliKCksamIoKSxPYS5tcz1PYS5mLE9hLm1pbGxpc2Vjb25kcz1PYS5mLE9hLnNlY29uZHM9T2EucyxPYS5taW51dGVzPU9hLm0sT2EuaG91cnM9T2EuaCxPYVsiMjRociJdPU9hLkgsT2FbIjEyaHIiXT1PYS5oLE9hLmRhdGU9T2EuZCxPYS5kYXk9T2EuZCxPYS55ZWFyPU9hLnl5eXl9ZnVuY3Rpb24gQ2IoKXtGKGQsITAsITAsInNob3J0LGxvbmcsZnVsbCIsZnVuY3Rpb24oeCxhKXt4W2FdPWZ1bmN0aW9uKHgpe3JldHVybiBwYih0aGlzLGEsITEseCl9fSl9ZnVuY3Rpb24gRGIoKXtLYS5zcGxpdCgiIikuZm9yRWFjaChmdW5jdGlvbih4LGEpe2E+OSYmKGE9JCgxMCxhLTkpKSxMYVt4XT1hfSksVihMYSxueCksRGE9YygiKFvmnJ/pgLHlkahdKT8oWyIrS2ErbXgrIl0rKSg/IeaYqCkiLCJnIil9ZnVuY3Rpb24gRWIoKXt2YXIgeD0idG9kYXkseWVzdGVyZGF5LHRvbW9ycm93LHdlZWtkYXksd2Vla2VuZCxmdXR1cmUscGFzdCIuc3BsaXQoIiwiKSxhPXdhLndlZWtkYXlzLnNsaWNlKDAsNyksYj13YS5tb250aHMuc2xpY2UoMCwxMik7RihkLCEwLCEwLHguY29uY2F0KGEpLmNvbmNhdChiKSxmdW5jdGlvbih4LGEpe3hbImlzIitWYShhKV09ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuaXMoYSwwLHgpfX0pfWZ1bmN0aW9uIEZiKCl7ZC51dGN8fChkLnV0Yz17Y3JlYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHZiKGFyZ3VtZW50cywwLCEwKX0scGFzdDpmdW5jdGlvbigpe3JldHVybiB2Yihhcmd1bWVudHMsLTEsITApfSxmdXR1cmU6ZnVuY3Rpb24oKXtyZXR1cm4gdmIoYXJndW1lbnRzLDEsITApfX0pfWZ1bmN0aW9uIEdiKCl7RShkLCExLCEwLHtSRkMxMTIzOiJ7RG93fSwge2RkfSB7TW9ufSB7eXl5eX0ge0hIfTp7bW19Ontzc30ge3R6fSIsUkZDMTAzNjoie1dlZWtkYXl9LCB7ZGR9LXtNb259LXt5eX0ge0hIfTp7bW19Ontzc30ge3R6fSIsSVNPODYwMV9EQVRFOiJ7eXl5eX0te01NfS17ZGR9IixJU084NjAxX0RBVEVUSU1FOiJ7eXl5eX0te01NfS17ZGR9VHtISH06e21tfTp7c3N9LntmZmZ9e2lzb3R6fSJ9KX1mdW5jdGlvbiBIYih4LGEpe3ZhciBiPXgubmFtZSxjPXt9O2Z1bmN0aW9uIGQoKXtyZXR1cm4gYXgodGhpcyphKX1mdW5jdGlvbiBlKCl7cmV0dXJuIHZiKGFyZ3VtZW50cylbeC5hZGRNZXRob2RdKHRoaXMpfWZ1bmN0aW9uIGcoKXtyZXR1cm4gdmIoYXJndW1lbnRzKVt4LmFkZE1ldGhvZF0oLXRoaXMpfWNbYl09ZCxjW2IrInMiXT1kLGNbYisiQmVmb3JlIl09ZyxjW2IrInNCZWZvcmUiXT1nLGNbYisiQWdvIl09ZyxjW2IrInNBZ28iXT1nLGNbYisiQWZ0ZXIiXT1lLGNbYisic0FmdGVyIl09ZSxjW2IrIkZyb21Ob3ciXT1lLGNbYisic0Zyb21Ob3ciXT1lLGYuZXh0ZW5kKGMpfWZ1bmN0aW9uIEliKHgsYSl7dGhpcy5zdGFydD1MYih4KSx0aGlzLmVuZD1MYihhKX1mdW5jdGlvbiBKYih4KXtyZXR1cm4gcyh4KT94LmNoYXJDb2RlQXQoMCk6eH1mdW5jdGlvbiBLYih4KXtyZXR1cm4gbnVsbD09eD94OnUoeCk/eC5nZXRUaW1lKCk6eC52YWx1ZU9mKCl9ZnVuY3Rpb24gTGIoeCl7cmV0dXJuIHUoeCk/bmV3IGQoeC5nZXRUaW1lKCkpOktiKHgpfWZ1bmN0aW9uIE1iKHgpe3ZhciBhPUtiKHgpO3JldHVybiEhYXx8MD09PWF9ZnVuY3Rpb24gTmIoeCl7dmFyIGEsYixjO3JldHVybiByKHgpP3g6KGE9eC50b0xvd2VyQ2FzZSgpLm1hdGNoKC9eKFxkKyk/XHM/KFx3Kz8pcz8kL2kpLGI9cGFyc2VJbnQoYVsxXSl8fDEsKGM9YVsyXS5zbGljZSgwLDEpLnRvVXBwZXJDYXNlKCkrYVsyXS5zbGljZSgxKSkubWF0Y2goL2hvdXJ8bWludXRlfHNlY29uZC9pKT9jKz0icyI6IlllYXIiPT09Yz9jPSJGdWxsWWVhciI6IkRheSI9PT1jJiYoYz0iRGF0ZSIpLFtiLGNdKX1mdW5jdGlvbiBPYih4LGEpe3ZhciBiLGMsZSxmO3JldHVybiByKGEpP25ldyBkKHguZ2V0VGltZSgpK2EpOihiPWFbMF0sZT16eCh4LGM9YVsxXSksQXgoZj1uZXcgZCh4LmdldFRpbWUoKSksYyxlK2IpLGYpfWZ1bmN0aW9uIFBiKHgsYSl7cmV0dXJuIGUuZnJvbUNoYXJDb2RlKHguY2hhckNvZGVBdCgwKSthKX1mdW5jdGlvbiBRYih4LGEpe3JldHVybiB4K2F9ZnVuY3Rpb24gUmIoeCxhLGIsYyxkKXthIT09MS8wJiYoeC50aW1lcnN8fCh4LnRpbWVycz1bXSkscihhKXx8KGE9MSkseC5fY2FuY2VsZWQ9ITEseC50aW1lcnMucHVzaChzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7eC5fY2FuY2VsZWR8fGIuYXBwbHkoYyxkfHxbXSl9LGEpKSl9ZnVuY3Rpb24gU2IoeCxhLGIsYyxkLGUpe3ZhciBmLGcsaD14LnRvRml4ZWQoMjApLGk9aC5zZWFyY2goL1wuLyktaC5zZWFyY2goL1sxLTldLyk7cmV0dXJuIGk+MCYmKGktPTEpLGc9Y3goYngoeHgoaS8zKSwhMT09PWQ/Yi5sZW5ndGg6ZCksLWMpLGY9Yi5jaGFyQXQoZytjLTEpLGk8LTkmJihnPS0zLGE9WihpKS05LGY9Yi5zbGljZSgwLDEpKSxkeCh4LyhlPyQoMiwxMCpnKTokKDEwLDMqZykpLGF8fDApLmZvcm1hdCgpK2YudHJpbSgpfWZ1bmN0aW9uIFRiKCl7ZnVuY3Rpb24geCh4KXtyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuIGE/ZHgodGhpcyxhLHgpOngodGhpcyl9fUUoZiwhMCwhMCx7Y2VpbDp4KF8pLHJvdW5kOngoYXgpLGZsb29yOngoeHgpfSksRihmLCEwLCEwLCJhYnMscG93LHNpbixhc2luLGNvcyxhY29zLHRhbixhdGFuLGV4cCxwb3csc3FydCIsZnVuY3Rpb24oeCxhKXt4W2FdPWZ1bmN0aW9uKHgsYil7cmV0dXJuIGdbYV0odGhpcyx4LGIpfX0pfVJhLnByb3RvdHlwZT17Z2V0TW9udGg6ZnVuY3Rpb24oeCl7cmV0dXJuIHIoeCk/eC0xOnRoaXMubW9udGhzLmluZGV4T2YoeCklMTJ9LGdldFdlZWtkYXk6ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMud2Vla2RheXMuaW5kZXhPZih4KSU3fSxnZXROdW1iZXI6ZnVuY3Rpb24oeCl7dmFyIGE7cmV0dXJuIHIoeCk/eDp4JiYtMSE9PShhPXRoaXMubnVtYmVycy5pbmRleE9mKHgpKT8oYSsxKSUxMDoxfSxnZXROdW1lcmljRGF0ZTpmdW5jdGlvbih4KXt2YXIgYT10aGlzO3JldHVybiB4LnJlcGxhY2UoYyh0aGlzLm51bSwiZyIpLGZ1bmN0aW9uKHgpe3JldHVybiBhLmdldE51bWJlcih4KXx8IiJ9KX0sZ2V0VW5pdEluZGV4OmZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLnVuaXRzLmluZGV4T2YoeCklOH0sZ2V0UmVsYXRpdmVGb3JtYXQ6ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY29udmVydEFkanVzdGVkVG9Gb3JtYXQoeCx4WzJdPjA/ImZ1dHVyZSI6InBhc3QiKX0sZ2V0RHVyYXRpb246ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMuY29udmVydEFkanVzdGVkVG9Gb3JtYXQoZWIoeCksImR1cmF0aW9uIil9LGhhc1ZhcmlhbnQ6ZnVuY3Rpb24oeCl7cmV0dXJuImVuIj09PSh4PXh8fHRoaXMuY29kZSl8fCJlbi1VUyI9PT14fHx0aGlzLnZhcmlhbnR9LG1hdGNoQU06ZnVuY3Rpb24oeCl7cmV0dXJuIHg9PT10aGlzLmFtcG1bMF19LG1hdGNoUE06ZnVuY3Rpb24oeCl7cmV0dXJuIHgmJng9PT10aGlzLmFtcG1bMV19LGNvbnZlcnRBZGp1c3RlZFRvRm9ybWF0OmZ1bmN0aW9uKHgsYSl7dmFyIGIsYyxkLGU9eFswXSxmPXhbMV0sZz14WzJdLGg9dGhpc1thXXx8dGhpcy5yZWxhdGl2ZTtyZXR1cm4gdyhoKT9oLmNhbGwodGhpcyxlLGYsZyxhKTooZD10aGlzLnBsdXJhbCYmZT4xPzE6MCxjPXRoaXMudW5pdHNbOCpkK2ZdfHx0aGlzLnVuaXRzW2ZdLHRoaXMuY2FwaXRhbGl6ZVVuaXQmJihjPVZhKGMpKSxiPXRoaXMubW9kaWZpZXJzLmZpbHRlcihmdW5jdGlvbih4KXtyZXR1cm4ic2lnbiI9PXgubmFtZSYmeC52YWx1ZT09KGc+MD8xOi0xKX0pWzBdLGgucmVwbGFjZSgvXHsoLio/KVx9L2csZnVuY3Rpb24oeCxhKXtzd2l0Y2goYSl7Y2FzZSJudW0iOnJldHVybiBlO2Nhc2UidW5pdCI6cmV0dXJuIGM7Y2FzZSJzaWduIjpyZXR1cm4gYi5zcmN9fSkpfSxnZXRGb3JtYXRzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2FjaGVkRm9ybWF0P1t0aGlzLmNhY2hlZEZvcm1hdF0uY29uY2F0KHRoaXMuY29tcGlsZWRGb3JtYXRzKTp0aGlzLmNvbXBpbGVkRm9ybWF0c30sYWRkRm9ybWF0OmZ1bmN0aW9uKHgsYSxiLGMsZCl7dmFyIGUsZixnLGg9Ynx8W10saT10aGlzO3g9KHg9eC5yZXBsYWNlKC9ccysvZywiWywuIF0qIikpLnJlcGxhY2UoL1x7KFteLF0rPylcfS9nLGZ1bmN0aW9uKHgsYSl7dmFyIGMsZCxlLGY9YS5tYXRjaCgvXD8kLyksZz1hLm1hdGNoKC9eKFxkKylcPz8kLyksaj1hLm1hdGNoKC8oXGQpKD86LShcZCkpPy8pLGs9YS5yZXBsYWNlKC9bXmEtel0rJC8sIiIpO3JldHVybiBnP2M9aS50b2tlbnNbZ1sxXV06aVtrXT9jPWlba106aVtrKyJzIl0mJihjPWlbaysicyJdLGomJihkPVtdLGMuZm9yRWFjaChmdW5jdGlvbih4LGEpe3ZhciBiPWElKGkudW5pdHM/ODpjLmxlbmd0aCk7Yj49alsxXSYmYjw9KGpbMl18fGpbMV0pJiZkLnB1c2goeCl9KSxjPWQpLGM9V2EoYykpLGc/ZT0iKD86IitjKyIpIjooYnx8aC5wdXNoKGspLGU9IigiK2MrIikiKSxmJiYoZSs9Ij8iKSxlfSksYT8oZT10YihKYSxpLGQpLGY9WyJ0IiwiW1xcc1xcdTMwMDBdIl0uY29uY2F0KGkudGltZU1hcmtlciksZz14Lm1hdGNoKC9cXGRce1xkLFxkXH1cKStcPz8kLyksVWEoaSwiKD86IitlKyIpWyxcXHNcXHUzMDAwXSs/Iit4LEdhLmNvbmNhdChoKSxjKSxVYShpLHgrIig/OlssXFxzXSooPzoiK2Yuam9pbigifCIpKyhnPyIrIjoiKiIpKyIpIitlKyIpPyIsaC5jb25jYXQoR2EpLGMpKTpVYShpLHgsaCxjKX19LEUoZCwhMSwhMCx7Y3JlYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHZiKGFyZ3VtZW50cyl9LHBhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdmIoYXJndW1lbnRzLC0xKX0sZnV0dXJlOmZ1bmN0aW9uKCl7cmV0dXJuIHZiKGFyZ3VtZW50cywxKX0sYWRkTG9jYWxlOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIFRhKHgsYSl9LHNldExvY2FsZTpmdW5jdGlvbih4LGEpe3ZhciBiPVNhKHgsITEpO3JldHVybiB5YT1iLHgmJnghPWIuY29kZSYmKGIuY29kZT14KSxifSxnZXRMb2NhbGU6ZnVuY3Rpb24oeCl7cmV0dXJuIHg/U2EoeCwhMSk6eWF9LGFkZEZvcm1hdDpmdW5jdGlvbih4LGEsYil7VWEoU2EoYikseCxhKX19KSxFKGQsITAsITAse3NldDpmdW5jdGlvbigpe3ZhciB4PVlhKGFyZ3VtZW50cyk7cmV0dXJuIHNiKHRoaXMseFswXSx4WzFdKX0sc2V0V2Vla2RheTpmdW5jdGlvbih4KXtpZighTih4KSlyZXR1cm4gQXgodGhpcywiRGF0ZSIsengodGhpcywiRGF0ZSIpK3gtengodGhpcywiRGF5IikpfSxzZXRJU09XZWVrOmZ1bmN0aW9uKHgpe3ZhciBhPXp4KHRoaXMsIkRheSIpfHw3O2lmKCFOKHgpKXJldHVybiB0aGlzLnNldCh7bW9udGg6MCxkYXRlOjR9KSx0aGlzLnNldCh7d2Vla2RheToxfSkseD4xJiZ0aGlzLmFkZFdlZWtzKHgtMSksMSE9PWEmJnRoaXMuYWR2YW5jZSh7ZGF5czphLTF9KSx0aGlzLmdldFRpbWUoKX0sZ2V0SVNPV2VlazpmdW5jdGlvbigpe3JldHVybiBkYih0aGlzKX0sYmVnaW5uaW5nT2ZJU09XZWVrOmZ1bmN0aW9uKCl7dmFyIHg9dGhpcy5nZXREYXkoKTtyZXR1cm4gMD09PXg/eD0tNjoxIT09eCYmKHg9MSksdGhpcy5zZXRXZWVrZGF5KHgpLHRoaXMucmVzZXQoKX0sZW5kT2ZJU09XZWVrOmZ1bmN0aW9uKCl7cmV0dXJuIDAhPT10aGlzLmdldERheSgpJiZ0aGlzLnNldFdlZWtkYXkoNyksdGhpcy5lbmRPZkRheSgpfSxnZXRVVENPZmZzZXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcy5fdXRjPzA6dGhpcy5nZXRUaW1lem9uZU9mZnNldCgpLGI9ITA9PT14PyI6IjoiIjtyZXR1cm4hYSYmeD8iWiI6dXgoeHgoLWEvNjApLDIsITApK2IrdXgoWihhJTYwKSwyKX0sdXRjOmZ1bmN0aW9uKHgpe3JldHVybiBJKHRoaXMsIl91dGMiLCEwPT09eHx8MD09PWFyZ3VtZW50cy5sZW5ndGgpLHRoaXN9LGlzVVRDOmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLl91dGN8fDA9PT10aGlzLmdldFRpbWV6b25lT2Zmc2V0KCl9LGFkdmFuY2U6ZnVuY3Rpb24oKXt2YXIgeD1ZYShhcmd1bWVudHMsITApO3JldHVybiBzYih0aGlzLHhbMF0seFsxXSwxKX0scmV3aW5kOmZ1bmN0aW9uKCl7dmFyIHg9WWEoYXJndW1lbnRzLCEwKTtyZXR1cm4gc2IodGhpcyx4WzBdLHhbMV0sLTEpfSxpc1ZhbGlkOmZ1bmN0aW9uKCl7cmV0dXJuIWlzTmFOKHRoaXMuZ2V0VGltZSgpKX0saXNBZnRlcjpmdW5jdGlvbih4LGEsYil7cmV0dXJuIHRoaXMuZ2V0VGltZSgpPmQuY3JlYXRlKHgpLmdldFRpbWUoKS0oYXx8MCl9LGlzQmVmb3JlOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIHRoaXMuZ2V0VGltZSgpPGQuY3JlYXRlKHgpLmdldFRpbWUoKSsoYXx8MCl9LGlzQmV0d2VlbjpmdW5jdGlvbih4LGEsYil7dmFyIGM9dGhpcy5nZXRUaW1lKCksZT1kLmNyZWF0ZSh4KS5nZXRUaW1lKCksZj1kLmNyZWF0ZShhKS5nZXRUaW1lKCksZz1ieChlLGYpLGg9Y3goZSxmKTtyZXR1cm4gZy0oYj1ifHwwKTxjJiZoK2I+Y30saXNMZWFwWWVhcjpmdW5jdGlvbigpe3ZhciB4PXp4KHRoaXMsIkZ1bGxZZWFyIik7cmV0dXJuIHglND09MCYmeCUxMDAhPTB8fHglNDAwPT0wfSxkYXlzSW5Nb250aDpmdW5jdGlvbigpe3JldHVybiAzMi16eChuZXcgZCh6eCh0aGlzLCJGdWxsWWVhciIpLHp4KHRoaXMsIk1vbnRoIiksMzIpLCJEYXRlIil9LGZvcm1hdDpmdW5jdGlvbih4LGEpe3JldHVybiBwYih0aGlzLHgsITEsYSl9LHJlbGF0aXZlOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIHMoeCkmJihhPXgseD1udWxsKSxwYih0aGlzLHgsITAsYSl9LGlzOmZ1bmN0aW9uKHgsYSxiKXt2YXIgYyxkO2lmKHRoaXMuaXNWYWxpZCgpKXtpZihzKHgpKXN3aXRjaCh4PXgudHJpbSgpLnRvTG93ZXJDYXNlKCksZD10aGlzLmNsb25lKCkudXRjKGIpLCEwKXtjYXNlImZ1dHVyZSI9PT14OnJldHVybiB0aGlzLmdldFRpbWUoKT5YYSgpLmdldFRpbWUoKTtjYXNlInBhc3QiPT09eDpyZXR1cm4gdGhpcy5nZXRUaW1lKCk8WGEoKS5nZXRUaW1lKCk7Y2FzZSJ3ZWVrZGF5Ij09PXg6cmV0dXJuIHp4KGQsIkRheSIpPjAmJnp4KGQsIkRheSIpPDY7Y2FzZSJ3ZWVrZW5kIj09PXg6cmV0dXJuIDA9PT16eChkLCJEYXkiKXx8Nj09PXp4KGQsIkRheSIpO2Nhc2UoYz13YS53ZWVrZGF5cy5pbmRleE9mKHgpJTcpPi0xOnJldHVybiB6eChkLCJEYXkiKT09PWM7Y2FzZShjPXdhLm1vbnRocy5pbmRleE9mKHgpJTEyKT4tMTpyZXR1cm4gengoZCwiTW9udGgiKT09PWN9cmV0dXJuIHFiKHRoaXMseCxudWxsLGEsYil9fSxyZXNldDpmdW5jdGlvbih4KXt2YXIgYSxiPXt9O3JldHVybiJkYXRlIj09PSh4PXh8fCJob3VycyIpJiYoeD0iZGF5cyIpLGE9UGEuc29tZShmdW5jdGlvbihhKXtyZXR1cm4geD09PWEubmFtZXx8eD09PWEubmFtZSsicyJ9KSxiW3hdPXgubWF0Y2goL15kYXlzPy8pPzE6MCxhP3RoaXMuc2V0KGIsITApOnRoaXN9LGNsb25lOmZ1bmN0aW9uKCl7dmFyIHg9bmV3IGQodGhpcy5nZXRUaW1lKCkpO3JldHVybiB4LnV0YyghIXRoaXMuX3V0YykseH19KSxFKGQsITAsITAse2lzbzpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRvSVNPU3RyaW5nKCl9LGdldFdlZWtkYXk6ZC5wcm90b3R5cGUuZ2V0RGF5LGdldFVUQ1dlZWtkYXk6ZC5wcm90b3R5cGUuZ2V0VVRDRGF5fSksRShmLCEwLCEwLHtkdXJhdGlvbjpmdW5jdGlvbih4KXtyZXR1cm4gU2EoeCkuZ2V0RHVyYXRpb24odGhpcyl9fSksd2E9eWE9ZC5hZGRMb2NhbGUoImVuIix7cGx1cmFsOiEwLHRpbWVNYXJrZXI6ImF0IixhbXBtOiJhbSxwbSIsbW9udGhzOiJKYW51YXJ5LEZlYnJ1YXJ5LE1hcmNoLEFwcmlsLE1heSxKdW5lLEp1bHksQXVndXN0LFNlcHRlbWJlcixPY3RvYmVyLE5vdmVtYmVyLERlY2VtYmVyIix3ZWVrZGF5czoiU3VuZGF5LE1vbmRheSxUdWVzZGF5LFdlZG5lc2RheSxUaHVyc2RheSxGcmlkYXksU2F0dXJkYXkiLHVuaXRzOiJtaWxsaXNlY29uZDp8cyxzZWNvbmQ6fHMsbWludXRlOnxzLGhvdXI6fHMsZGF5OnxzLHdlZWs6fHMsbW9udGg6fHMseWVhcjp8cyIsbnVtYmVyczoib25lLHR3byx0aHJlZSxmb3VyLGZpdmUsc2l4LHNldmVuLGVpZ2h0LG5pbmUsdGVuIixhcnRpY2xlczoiYSxhbix0aGUiLHRva2VuczoidGhlLHN0fG5kfHJkfHRoLG9mIixzaG9ydDoie01vbnRofSB7ZH0sIHt5eXl5fSIsbG9uZzoie01vbnRofSB7ZH0sIHt5eXl5fSB7aH06e21tfXt0dH0iLGZ1bGw6IntXZWVrZGF5fSB7TW9udGh9IHtkfSwge3l5eXl9IHtofTp7bW19Ontzc317dHR9IixwYXN0OiJ7bnVtfSB7dW5pdH0ge3NpZ259IixmdXR1cmU6IntudW19IHt1bml0fSB7c2lnbn0iLGR1cmF0aW9uOiJ7bnVtfSB7dW5pdH0iLG1vZGlmaWVyczpbe25hbWU6InNpZ24iLHNyYzoiYWdvfGJlZm9yZSIsdmFsdWU6LTF9LHtuYW1lOiJzaWduIixzcmM6ImZyb20gbm93fGFmdGVyfGZyb218aW58bGF0ZXIiLHZhbHVlOjF9LHtuYW1lOiJlZGdlIixzcmM6Imxhc3QgZGF5Iix2YWx1ZTotMn0se25hbWU6ImVkZ2UiLHNyYzoiZW5kIix2YWx1ZTotMX0se25hbWU6ImVkZ2UiLHNyYzoiZmlyc3QgZGF5fGJlZ2lubmluZyIsdmFsdWU6MX0se25hbWU6InNoaWZ0IixzcmM6Imxhc3QiLHZhbHVlOi0xfSx7bmFtZToic2hpZnQiLHNyYzoidGhlfHRoaXMiLHZhbHVlOjB9LHtuYW1lOiJzaGlmdCIsc3JjOiJuZXh0Iix2YWx1ZToxfV0sZGF0ZVBhcnNlOlsie21vbnRofSB7eWVhcn0iLCJ7c2hpZnR9IHt1bml0PTUtN30iLCJ7MD99IHtkYXRlfXsxfSIsInswP30ge2VkZ2V9IG9mIHtzaGlmdD99IHt1bml0PTQtNz99e21vbnRoP317eWVhcj99Il0sdGltZVBhcnNlOlsie251bX0ge3VuaXR9IHtzaWdufSIsIntzaWdufSB7bnVtfSB7dW5pdH0iLCJ7MH0ge251bX17MX0ge2RheX0gb2Yge21vbnRofSB7eWVhcj99Iiwie3dlZWtkYXk/fSB7bW9udGh9IHtkYXRlfXsxP30ge3llYXI/fSIsIntkYXRlfSB7bW9udGh9IHt5ZWFyfSIsIntkYXRlfSB7bW9udGh9Iiwie3NoaWZ0fSB7d2Vla2RheX0iLCJ7c2hpZnR9IHdlZWsge3dlZWtkYXl9Iiwie3dlZWtkYXl9IHsyP30ge3NoaWZ0fSB3ZWVrIiwie251bX0ge3VuaXQ9NC01fSB7c2lnbn0ge2RheX0iLCJ7MD99IHtkYXRlfXsxfSBvZiB7bW9udGh9IiwiezA/fXttb250aD99IHtkYXRlP317MT99IG9mIHtzaGlmdH0ge3VuaXQ9Ni03fSJdfSkseWIoKSx6YigpLEFiKCksQmIoKSxDYigpLERiKCksRWIoKSxGYigpLEdiKCksSWIucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNWYWxpZCgpP3RoaXMuc3RhcnQrIi4uIit0aGlzLmVuZDoiSW52YWxpZCBSYW5nZSJ9LEUoSWIsITAsITAse2lzVmFsaWQ6ZnVuY3Rpb24oKXtyZXR1cm4gTWIodGhpcy5zdGFydCkmJk1iKHRoaXMuZW5kKSYmdHlwZW9mIHRoaXMuc3RhcnQ9PXR5cGVvZiB0aGlzLmVuZH0sc3BhbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlzVmFsaWQoKT9aKEpiKHRoaXMuZW5kKS1KYih0aGlzLnN0YXJ0KSkrMTpOYU59LGNvbnRhaW5zOmZ1bmN0aW9uKHgpe3JldHVybiBudWxsIT14JiYoeC5zdGFydCYmeC5lbmQ/eC5zdGFydD49dGhpcy5zdGFydCYmeC5zdGFydDw9dGhpcy5lbmQmJnguZW5kPj10aGlzLnN0YXJ0JiZ4LmVuZDw9dGhpcy5lbmQ6eD49dGhpcy5zdGFydCYmeDw9dGhpcy5lbmQpfSxldmVyeTpmdW5jdGlvbih4LGEpe3ZhciBiLGM9dGhpcy5zdGFydCxkPXRoaXMuZW5kLGU9ZDxjLGY9YyxnPTAsaD1bXTtmb3Iodyh4KSYmKGE9eCx4PW51bGwpLHg9eHx8MSxyKGMpP2I9UWI6cyhjKT9iPVBiOnUoYykmJih4PU5iKHgpLGI9T2IpLGUmJng+MCYmKHgqPS0xKTtlP2Y+PWQ6Zjw9ZDspaC5wdXNoKGYpLGEmJmEoZixnKSxmPWIoZix4KSxnKys7cmV0dXJuIGh9LHVuaW9uOmZ1bmN0aW9uKHgpe3JldHVybiBuZXcgSWIodGhpcy5zdGFydDx4LnN0YXJ0P3RoaXMuc3RhcnQ6eC5zdGFydCx0aGlzLmVuZD54LmVuZD90aGlzLmVuZDp4LmVuZCl9LGludGVyc2VjdDpmdW5jdGlvbih4KXtyZXR1cm4geC5zdGFydD50aGlzLmVuZHx8eC5lbmQ8dGhpcy5zdGFydD9uZXcgSWIoTmFOLE5hTik6bmV3IEliKHRoaXMuc3RhcnQ+eC5zdGFydD90aGlzLnN0YXJ0Onguc3RhcnQsdGhpcy5lbmQ8eC5lbmQ/dGhpcy5lbmQ6eC5lbmQpfSxjbG9uZTpmdW5jdGlvbih4KXtyZXR1cm4gbmV3IEliKHRoaXMuc3RhcnQsdGhpcy5lbmQpfSxjbGFtcDpmdW5jdGlvbih4KXt2YXIgYT10aGlzLnN0YXJ0LGI9dGhpcy5lbmQsYz1iPGE/YjphLGQ9YT5iP2E6YjtyZXR1cm4gTGIoeDxjP2M6eD5kP2Q6eCl9fSksW2YsZSxkXS5mb3JFYWNoKGZ1bmN0aW9uKHgpe0UoeCwhMSwhMCx7cmFuZ2U6ZnVuY3Rpb24oYSxiKXtyZXR1cm4geC5jcmVhdGUmJihhPXguY3JlYXRlKGEpLGI9eC5jcmVhdGUoYikpLG5ldyBJYihhLGIpfX0pfSksRShmLCEwLCEwLHt1cHRvOmZ1bmN0aW9uKHgsYSxiKXtyZXR1cm4gZi5yYW5nZSh0aGlzLHgpLmV2ZXJ5KGIsYSl9LGNsYW1wOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIG5ldyBJYih4LGEpLmNsYW1wKHRoaXMpfSxjYXA6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuY2xhbXAoeCxhKX19KSxFKGYsITAsITAse2Rvd250bzpmLnByb3RvdHlwZS51cHRvfSksRShiLCExLGZ1bmN0aW9uKHgpe3JldHVybiB4IGluc3RhbmNlb2YgSWJ9LHtjcmVhdGU6ZnVuY3Rpb24oeCl7cmV0dXJuIHguZXZlcnkoKX19KSxFKEZ1bmN0aW9uLCEwLCEwLHtsYXp5OmZ1bmN0aW9uKHgsYSxiKXt2YXIgYyxkLGUsZixnPXRoaXMsaD1bXSxpPSExO2Z1bmN0aW9uIGooKXtyZXR1cm4gaC5sZW5ndGg8Yi0oaSYmYT8xOjApJiZoLnB1c2goW3RoaXMsYXJndW1lbnRzXSksaXx8KGk9ITAsYT9jKCk6UmIoaixkLGMpKSxmfXJldHVybiBiPWJ8fDEvMCxkPV8oeD14fHwxKSxlPWF4KGQveCl8fDEsYz1mdW5jdGlvbigpe3ZhciB4LGE9aC5sZW5ndGg7aWYoMCE9YSl7Zm9yKHg9Y3goYS1lLDApO2E+eDspZj1GdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkuYXBwbHkoZyxoLnNoaWZ0KCkpLGEtLTtSYihqLGQsZnVuY3Rpb24oKXtpPSExLGMoKX0pfX0san0sdGhyb3R0bGU6ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMubGF6eSh4LCEwLDEpfSxkZWJvdW5jZTpmdW5jdGlvbih4KXt2YXIgYT10aGlzO2Z1bmN0aW9uIGIoKXtiLmNhbmNlbCgpLFJiKGIseCxhLHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gYn0sZGVsYXk6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcztyZXR1cm4gUmIoYSx4LGEsYSxKKGFyZ3VtZW50cyxudWxsLDEpKSxhfSxldmVyeTpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YXJndW1lbnRzO2Z1bmN0aW9uIGMoKXthLmFwcGx5KGEsYiksUmIoYSx4LGMpfXJldHVybiBiPWIubGVuZ3RoPjE/SihiLG51bGwsMSk6W10sUmIoYSx4LGMpLGF9LGNhbmNlbDpmdW5jdGlvbigpe3ZhciB4LGE9dGhpcy50aW1lcnM7aWYodChhKSlmb3IoO3g9YS5zaGlmdCgpOyljbGVhclRpbWVvdXQoeCk7cmV0dXJuIHRoaXMuX2NhbmNlbGVkPSEwLHRoaXN9LGFmdGVyOmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj0wLGM9W107aWYocih4KSl7aWYoMD09PXgpcmV0dXJuIGEuY2FsbCgpLGF9ZWxzZSB4PTE7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGQ7aWYoYy5wdXNoKEooYXJndW1lbnRzKSksKytiPT14KXJldHVybiBkPWEuY2FsbCh0aGlzLGMpLGI9MCxjPVtdLGR9fSxvbmNlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGhyb3R0bGUoMS8wLCEwKX0sZmlsbDpmdW5jdGlvbigpe3ZhciB4PXRoaXMsYT1KKGFyZ3VtZW50cyk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGI9Sihhcmd1bWVudHMpO3JldHVybiBhLmZvckVhY2goZnVuY3Rpb24oeCxhKXsobnVsbCE9eHx8YT49Yi5sZW5ndGgpJiZiLnNwbGljZShhLDAseCl9KSx4LmFwcGx5KHRoaXMsYil9fX0pLEUoZiwhMSwhMCx7cmFuZG9tOmZ1bmN0aW9uKHgsYSl7dmFyIGIsYztyZXR1cm4gMT09YXJndW1lbnRzLmxlbmd0aCYmKGE9eCx4PTApLGI9YngoeHx8MCxOKGEpPzE6YSksYz1jeCh4fHwwLE4oYSk/MTphKSsxLHh4KGcucmFuZG9tKCkqKGMtYikrYil9fSksRShmLCEwLCEwLHtsb2c6ZnVuY3Rpb24oeCl7cmV0dXJuIGcubG9nKHRoaXMpLyh4P2cubG9nKHgpOjEpfSxhYmJyOmZ1bmN0aW9uKHgpe3JldHVybiBTYih0aGlzLHgsImttYnQiLDAsNCl9LG1ldHJpYzpmdW5jdGlvbih4LGEpe3JldHVybiBTYih0aGlzLHgsIm7OvG0ga01HVFBFIiw0LE4oYSk/MTphKX0sYnl0ZXM6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gU2IodGhpcyx4LCJrTUdUUEUiLDAsTihhKT80OmEsITApKyJCIn0saXNJbnRlZ2VyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMlMT09MH0saXNPZGQ6ZnVuY3Rpb24oKXtyZXR1cm4haXNOYU4odGhpcykmJiF0aGlzLmlzTXVsdGlwbGVPZigyKX0saXNFdmVuOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNNdWx0aXBsZU9mKDIpfSxpc011bHRpcGxlT2Y6ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMleD09MH0sZm9ybWF0OmZ1bmN0aW9uKHgsYSxiKXt2YXIgYyxkLGUsZixnPSIiO2ZvcihOKGEpJiYoYT0iLCIpLE4oYikmJihiPSIuIiksZT0oZD0ocih4KT9keCh0aGlzLHh8fDApLnRvRml4ZWQoY3goeCwwKSk6dGhpcy50b1N0cmluZygpKS5yZXBsYWNlKC9eLS8sIiIpLnNwbGl0KCIuIikpWzBdLGY9ZFsxXSxjPWUubGVuZ3RoO2M+MDtjLT0zKWM8ZS5sZW5ndGgmJihnPWErZyksZz1lLnNsaWNlKGN4KDAsYy0zKSxjKStnO3JldHVybiBmJiYoZys9YitzeCgiMCIsKHh8fDApLWYubGVuZ3RoKStmKSwodGhpczwwPyItIjoiIikrZ30saGV4OmZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLnBhZCh4fHwxLCExLDE2KX0sdGltZXM6ZnVuY3Rpb24oeCl7aWYoeClmb3IodmFyIGE9MDthPHRoaXM7YSsrKXguY2FsbCh0aGlzLGEpO3JldHVybiB0aGlzLnRvTnVtYmVyKCl9LGNocjpmdW5jdGlvbigpe3JldHVybiBlLmZyb21DaGFyQ29kZSh0aGlzKX0scGFkOmZ1bmN0aW9uKHgsYSxiKXtyZXR1cm4gdXgodGhpcyx4LGEsYil9LG9yZGluYWxpemU6ZnVuY3Rpb24oKXt2YXIgeD1aKHRoaXMpO3JldHVybiB0aGlzK3Z4KHBhcnNlSW50KHgudG9TdHJpbmcoKS5zbGljZSgtMikpKX0sdG9OdW1iZXI6ZnVuY3Rpb24oKXtyZXR1cm4gcGFyc2VGbG9hdCh0aGlzLDEwKX19KSxUYigpO3ZhciBVYixWYixXYj0iaXNPYmplY3QsaXNOYU4iLnNwbGl0KCIsIiksWGI9ImtleXMsdmFsdWVzLHNlbGVjdCxyZWplY3QsZWFjaCxtZXJnZSxjbG9uZSxlcXVhbCx3YXRjaCx0YXAsaGFzLHRvUXVlcnlTdHJpbmciLnNwbGl0KCIsIik7ZnVuY3Rpb24gWWIoeCxhLGIsYyl7dmFyIGQsZSxmLGc9L14oLis/KShcWy4qXF0pJC87KGU9YS5tYXRjaChnKSk/KGY9ZVsxXSxlWzJdLnJlcGxhY2UoL15cW3xcXSQvZywiIikuc3BsaXQoIl1bIikuZm9yRWFjaChmdW5jdGlvbihhKXtkPSFhfHxhLm1hdGNoKC9eXGQrJC8pLCFmJiZ0KHgpJiYoZj14Lmxlbmd0aCksUCh4LGYpfHwoeFtmXT1kP1tdOnt9KSx4PXhbZl0sZj1hfSksIWYmJmQmJihmPXgubGVuZ3RoLnRvU3RyaW5nKCkpLFliKHgsZixiLGMpKTp4W2FdPSEoIWN8fCJ0cnVlIiE9PWIpfHwoIWN8fCJmYWxzZSIhPT1iKSYmYn1mdW5jdGlvbiBaYih4LGEpe3ZhciBiO3JldHVybiB0KGEpfHxRKGEpJiZhLnRvU3RyaW5nPT09aT8oYj1bXSxUKGEsZnVuY3Rpb24oYSxjKXt4JiYoYT14KyJbIithKyJdIiksYi5wdXNoKFpiKGEsYykpfSksYi5qb2luKCImIikpOng/JGIoeCkrIj0iKyh1KGEpP2EuZ2V0VGltZSgpOiRiKGEpKToiIn1mdW5jdGlvbiAkYih4KXtyZXR1cm4geHx8ITE9PT14fHwwPT09eD9lbmNvZGVVUklDb21wb25lbnQoeCkucmVwbGFjZSgvJTIwL2csIisiKToiIn1mdW5jdGlvbiBfYih4LGEsYil7cmV0dXJuIHYoeCk/eC50ZXN0KGEpOlEoeCk/eFthXT09PWI6YT09PWUoeCl9ZnVuY3Rpb24geGMoeCxhLGIpe3ZhciBjLGQ9eCBpbnN0YW5jZW9mIFk/bmV3IFk6e307cmV0dXJuIFQoeCxmdW5jdGlvbih4LGUpe2M9ITEsSyhhLGZ1bmN0aW9uKGEpe19iKGEseCxlKSYmKGM9ITApfSwxKSxjPT09YiYmKGRbeF09ZSl9KSxkfWZ1bmN0aW9uIGFjKCl7RihhLCExLCEwLHAsZnVuY3Rpb24oeCxhKXt2YXIgYj0iaXMiK2E7V2IucHVzaChiKSx4W2JdPW5bYV19KX1mdW5jdGlvbiBiYygpe0UoYSwhMSxmdW5jdGlvbigpe3JldHVybiAwPT09YXJndW1lbnRzLmxlbmd0aH0se2V4dGVuZDpmdW5jdGlvbigpe3ZhciB4PVdiLmNvbmNhdChYYik7dm9pZCAwIT09Q2EmJih4PXguY29uY2F0KENhKSksR3goeCxhKX19KX1mdW5jdGlvbiBjYyh4KXt2YXIgYT1lLkluZmxlY3Rvcjt4PWEmJmEuYWNyb255bXNbeF07aWYocyh4KSlyZXR1cm4geH1mdW5jdGlvbiBkYyh4KXtpZigoeD0reCk8MHx8eD09PTEvMCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCBudW1iZXIiKTtyZXR1cm4geH1mdW5jdGlvbiBlYyh4LGEpe3JldHVybiBzeChNKGEpP2E6IiAiLHgpfWZ1bmN0aW9uIGZjKHgsYSxiLGMsZCl7dmFyIGUsZjtpZih4Lmxlbmd0aDw9YSlyZXR1cm4geC50b1N0cmluZygpO3N3aXRjaChjPU4oYyk/Ii4uLiI6YyxiKXtjYXNlImxlZnQiOnJldHVybiBjKyhkP2djKHgsYSwhMCk6eC5zbGljZSh4Lmxlbmd0aC1hKSk7Y2FzZSJtaWRkbGUiOnJldHVybiBlPV8oYS8yKSxmPXh4KGEvMiksKGQ/Z2MoeCxlKTp4LnNsaWNlKDAsZSkpK2MrKGQ/Z2MoeCxmLCEwKTp4LnNsaWNlKHgubGVuZ3RoLWYpKTtkZWZhdWx0OnJldHVybihkP2djKHgsYSk6eC5zbGljZSgwLGEpKStjfX1mdW5jdGlvbiBnYyh4LGEsYil7aWYoYilyZXR1cm4gZ2MoeC5yZXZlcnNlKCksYSkucmV2ZXJzZSgpO3ZhciBkPWMoIig/PVsiK3J4KCkrIl0pIiksZT14LnNwbGl0KGQpLGY9MDtyZXR1cm4gZS5maWx0ZXIoZnVuY3Rpb24oeCl7cmV0dXJuKGYrPXgubGVuZ3RoKTw9YX0pLmpvaW4oIiIpfWZ1bmN0aW9uIGhjKHgsYSxiKXtyZXR1cm4gcyhhKSYmLTE9PT0oYT14LmluZGV4T2YoYSkpJiYoYT1iP3gubGVuZ3RoOjApLGF9ZnVuY3Rpb24gaWMoeCl7aWYoaC5idG9hKXJldHVybiBVYj1oLmJ0b2EsVmI9aC5hdG9iLHZvaWQgMDt2YXIgYT0vW15BLVphLXowLTlcK1wvXD1dL2c7VWI9ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGgsaT0iIixqPTA7ZG97ZT0oYj1hLmNoYXJDb2RlQXQoaisrKSk+PjIsZj0oMyZiKTw8NHwoYz1hLmNoYXJDb2RlQXQoaisrKSk+PjQsZz0oMTUmYyk8PDJ8KGQ9YS5jaGFyQ29kZUF0KGorKykpPj42LGg9NjMmZCxpc05hTihjKT9nPWg9NjQ6aXNOYU4oZCkmJihoPTY0KSxpPWkreC5jaGFyQXQoZSkreC5jaGFyQXQoZikreC5jaGFyQXQoZykreC5jaGFyQXQoaCksYj1jPWQ9IiIsZT1mPWc9aD0iIn13aGlsZShqPGEubGVuZ3RoKTtyZXR1cm4gaX0sVmI9ZnVuY3Rpb24oYil7dmFyIGMsZCxlLGYsZyxoLGk9IiIsaj0wO2lmKGIubWF0Y2goYSkpdGhyb3cgbmV3IEVycm9yKCJTdHJpbmcgY29udGFpbnMgaW52YWxpZCBiYXNlNjQgY2hhcmFjdGVycyIpO2I9Yi5yZXBsYWNlKC9bXkEtWmEtejAtOVwrXC9cPV0vZywiIik7ZG97ZT14LmluZGV4T2YoYi5jaGFyQXQoaisrKSksYz0oMTUmKGY9eC5pbmRleE9mKGIuY2hhckF0KGorKykpKSk8PDR8KGc9eC5pbmRleE9mKGIuY2hhckF0KGorKykpKT4+MixkPSgzJmcpPDw2fChoPXguaW5kZXhPZihiLmNoYXJBdChqKyspKSksaSs9cXgoZTw8MnxmPj40KSw2NCE9ZyYmKGkrPXF4KGMpKSw2NCE9aCYmKGkrPXF4KGQpKSxjPWQ9IiIsZT1mPWc9aD0iIn13aGlsZShqPGIubGVuZ3RoKTtyZXR1cm4gaX19RShhLCExLCEwLHt3YXRjaDpmdW5jdGlvbih4LGIsYyl7aWYoayl7dmFyIGQ9eFtiXTthLmRlZmluZVByb3BlcnR5KHgsYix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGR9LHNldDpmdW5jdGlvbihhKXtkPWMuY2FsbCh4LGIsZCxhKX19KX19fSksRShhLCExLGZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MX0se2tleXM6ZnVuY3Rpb24oeCxiKXt2YXIgYz1hLmtleXMoeCk7cmV0dXJuIGMuZm9yRWFjaChmdW5jdGlvbihhKXtiLmNhbGwoeCxhLHhbYV0pfSksY319KSxFKGEsITEsITAse2lzT2JqZWN0OmZ1bmN0aW9uKHgpe3JldHVybiBTKHgpfSxpc05hTjpmdW5jdGlvbih4KXtyZXR1cm4gcih4KSYmeC52YWx1ZU9mKCkhPXgudmFsdWVPZigpfSxlcXVhbDpmdW5jdGlvbih4LGEpe3JldHVybiBDeCh4LGEpfSxleHRlbmRlZDpmdW5jdGlvbih4KXtyZXR1cm4gbmV3IFkoeCl9LG1lcmdlOmZ1bmN0aW9uKHgsZSxmLGcpe3ZhciBoLGksaixrLGwsbSxuO2lmKHgmJiJzdHJpbmciIT10eXBlb2YgZSlmb3IoaCBpbiBlKWlmKFAoZSxoKSYmeCl7aWYoaz1lW2hdLG09TShsPXhbaF0pLGk9UShrKSxqPVEobCksbj1tJiYhMT09PWc/bDprLG0mJncoZykmJihuPWcuY2FsbChlLGgsbCxrKSksZiYmKGl8fGopKWlmKHUoaykpbj1uZXcgZChrLmdldFRpbWUoKSk7ZWxzZXtpZighdihrKSl7anx8KHhbaF09Yi5pc0FycmF5KGspP1tdOnt9KSxhLm1lcmdlKHhbaF0sayxmLGcpO2NvbnRpbnVlfW49bmV3IGMoay5zb3VyY2Usd3goaykpfXhbaF09bn1yZXR1cm4geH0sdmFsdWVzOmZ1bmN0aW9uKHgsYSl7dmFyIGI9W107cmV0dXJuIFQoeCxmdW5jdGlvbihjLGQpe2IucHVzaChkKSxhJiZhLmNhbGwoeCxkKX0pLGJ9LGNsb25lOmZ1bmN0aW9uKHgsYil7dmFyIGMsZDtpZighUSh4KSlyZXR1cm4geDtpZihkPUIoeCksdSh4LGQpJiZ4LmNsb25lKXJldHVybiB4LmNsb25lKCk7aWYodSh4LGQpfHx2KHgsZCkpcmV0dXJuIG5ldyB4LmNvbnN0cnVjdG9yKHgpO2lmKHggaW5zdGFuY2VvZiBZKWM9bmV3IFk7ZWxzZSBpZih0KHgsZCkpYz1bXTtlbHNle2lmKCFTKHgsZCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2xvbmUgbXVzdCBiZSBhIGJhc2ljIGRhdGEgdHlwZS4iKTtjPXt9fXJldHVybiBhLm1lcmdlKGMseCxiKX0sZnJvbVF1ZXJ5U3RyaW5nOmZ1bmN0aW9uKHgsYil7dmFyIGM9YS5leHRlbmRlZCgpO3JldHVybih4PXgmJngudG9TdHJpbmc/eC50b1N0cmluZygpOiIiKS5yZXBsYWNlKC9eLio/XD8vLCIiKS5zcGxpdCgiJiIpLmZvckVhY2goZnVuY3Rpb24oeCl7dmFyIGE9eC5zcGxpdCgiPSIpOzI9PT1hLmxlbmd0aCYmWWIoYyxhWzBdLGRlY29kZVVSSUNvbXBvbmVudChhWzFdKSxiKX0pLGN9LHRvUXVlcnlTdHJpbmc6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gWmIoYSx4KX0sdGFwOmZ1bmN0aW9uKHgsYSl7dmFyIGI9YTtyZXR1cm4gdyhhKXx8KGI9ZnVuY3Rpb24oKXthJiZ4W2FdKCl9KSxiLmNhbGwoeCx4KSx4fSxoYXM6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gUCh4LGEpfSxzZWxlY3Q6ZnVuY3Rpb24oeCl7cmV0dXJuIHhjKHgsYXJndW1lbnRzLCEwKX0scmVqZWN0OmZ1bmN0aW9uKHgpe3JldHVybiB4Yyh4LGFyZ3VtZW50cywhMSl9fSksYWMoKSxiYygpLEd4KFhiLFkpLEUoYywhMSwhMCx7ZXNjYXBlOmZ1bmN0aW9uKHgpe3JldHVybiB5eCh4KX19KSxFKGMsITAsITAse2dldEZsYWdzOmZ1bmN0aW9uKCl7cmV0dXJuIHd4KHRoaXMpfSxzZXRGbGFnczpmdW5jdGlvbih4KXtyZXR1cm4gYyh0aGlzLnNvdXJjZSx4KX0sYWRkRmxhZzpmdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5zZXRGbGFncyh3eCh0aGlzLHgpKX0scmVtb3ZlRmxhZzpmdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5zZXRGbGFncyh3eCh0aGlzKS5yZXBsYWNlKHgsIiIpKX19KSxFKGUsITAsITEse3JlcGVhdDpmdW5jdGlvbih4KXtyZXR1cm4gc3godGhpcyx4PWRjKHgpKX19KSxFKGUsITAsZnVuY3Rpb24oeCl7cmV0dXJuIHYoeCl8fGFyZ3VtZW50cy5sZW5ndGg+Mn0se3N0YXJ0c1dpdGg6ZnVuY3Rpb24oeCl7dmFyIGEsYj1hcmd1bWVudHMsZD1iWzFdLGU9YlsyXSxmPXRoaXM7cmV0dXJuIGQmJihmPWYuc2xpY2UoZCkpLE4oZSkmJihlPSEwKSxhPXYoeCk/eC5zb3VyY2UucmVwbGFjZSgiXiIsIiIpOnl4KHgpLGMoIl4iK2EsZT8iIjoiaSIpLnRlc3QoZil9LGVuZHNXaXRoOmZ1bmN0aW9uKHgpe3ZhciBhLGI9YXJndW1lbnRzLGQ9YlsxXSxlPWJbMl0sZj10aGlzO3JldHVybiBNKGQpJiYoZj1mLnNsaWNlKDAsZCkpLE4oZSkmJihlPSEwKSxhPXYoeCk/eC5zb3VyY2UucmVwbGFjZSgiJCIsIiIpOnl4KHgpLGMoYSsiJCIsZT8iIjoiaSIpLnRlc3QoZil9fSksRShlLCEwLCEwLHtlc2NhcGVSZWdFeHA6ZnVuY3Rpb24oKXtyZXR1cm4geXgodGhpcyl9LGVzY2FwZVVSTDpmdW5jdGlvbih4KXtyZXR1cm4geD9lbmNvZGVVUklDb21wb25lbnQodGhpcyk6ZW5jb2RlVVJJKHRoaXMpfSx1bmVzY2FwZVVSTDpmdW5jdGlvbih4KXtyZXR1cm4geD9kZWNvZGVVUkkodGhpcyk6ZGVjb2RlVVJJQ29tcG9uZW50KHRoaXMpfSxlc2NhcGVIVE1MOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVwbGFjZSgvJi9nLCImYW1wOyIpLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7IikucmVwbGFjZSgvJy9nLCImYXBvczsiKS5yZXBsYWNlKC9cLy9nLCImI3gyZjsiKX0sdW5lc2NhcGVIVE1MOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVwbGFjZSgvJmx0Oy9nLCI8IikucmVwbGFjZSgvJmd0Oy9nLCI+IikucmVwbGFjZSgvJnF1b3Q7L2csJyInKS5yZXBsYWNlKC8mYXBvczsvZywiJyIpLnJlcGxhY2UoLyYjeDJmOy9nLCIvIikucmVwbGFjZSgvJmFtcDsvZywiJiIpfSxlbmNvZGVCYXNlNjQ6ZnVuY3Rpb24oKXtyZXR1cm4gVWIodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMpKSl9LGRlY29kZUJhc2U2NDpmdW5jdGlvbigpe3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoZXNjYXBlKFZiKHRoaXMpKSl9LGVhY2g6ZnVuY3Rpb24oeCxhKXt2YXIgYixkLGU7aWYodyh4KT8oYT14LHg9L1tcc1xTXS9nKTp4P3MoeCk/eD1jKHl4KHgpLCJnaSIpOnYoeCkmJih4PWMoeC5zb3VyY2Usd3goeCwiZyIpKSk6eD0vW1xzXFNdL2csYj10aGlzLm1hdGNoKHgpfHxbXSxhKWZvcihkPTAsZT1iLmxlbmd0aDtkPGU7ZCsrKWJbZF09YS5jYWxsKHRoaXMsYltkXSxkLGIpfHxiW2RdO3JldHVybiBifSxzaGlmdDpmdW5jdGlvbih4KXt2YXIgYT0iIjtyZXR1cm4geD14fHwwLHRoaXMuY29kZXMoZnVuY3Rpb24oYil7YSs9cXgoYit4KX0pLGF9LGNvZGVzOmZ1bmN0aW9uKHgpe3ZhciBhLGIsYz1bXTtmb3IoYT0wLGI9dGhpcy5sZW5ndGg7YTxiO2ErKyl7dmFyIGQ9dGhpcy5jaGFyQ29kZUF0KGEpO2MucHVzaChkKSx4JiZ4LmNhbGwodGhpcyxkLGEpfXJldHVybiBjfSxjaGFyczpmdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5lYWNoKHgpfSx3b3JkczpmdW5jdGlvbih4KXtyZXR1cm4gdGhpcy50cmltKCkuZWFjaCgvXFMrL2cseCl9LGxpbmVzOmZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLnRyaW0oKS5lYWNoKC9eLiokL2dtLHgpfSxwYXJhZ3JhcGhzOmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMudHJpbSgpLnNwbGl0KC9bXHJcbl17Mix9Lyk7cmV0dXJuIGE9YS5tYXAoZnVuY3Rpb24oYSl7aWYoeCl2YXIgYj14LmNhbGwoYSk7cmV0dXJuIGJ8fGF9KX0saXNCbGFuazpmdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy50cmltKCkubGVuZ3RofSxoYXM6ZnVuY3Rpb24oeCl7cmV0dXJuLTEhPT10aGlzLnNlYXJjaCh2KHgpP3g6eXgoeCkpfSxhZGQ6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gYT1OKGEpP3RoaXMubGVuZ3RoOmEsdGhpcy5zbGljZSgwLGEpK3grdGhpcy5zbGljZShhKX0scmVtb3ZlOmZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLnJlcGxhY2UoeCwiIil9LHJldmVyc2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zcGxpdCgiIikucmV2ZXJzZSgpLmpvaW4oIiIpfSxjb21wYWN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHJpbSgpLnJlcGxhY2UoLyhbXHJcblxz44CAXSkrL2csZnVuY3Rpb24oeCxhKXtyZXR1cm4i44CAIj09PWE/YToiICJ9KX0sYXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRXgodGhpcyxhcmd1bWVudHMsITApfSxmcm9tOmZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLnNsaWNlKGhjKHRoaXMseCwhMCkpfSx0bzpmdW5jdGlvbih4KXtyZXR1cm4gTih4KSYmKHg9dGhpcy5sZW5ndGgpLHRoaXMuc2xpY2UoMCxoYyh0aGlzLHgpKX0sZGFzaGVyaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudW5kZXJzY29yZSgpLnJlcGxhY2UoL18vZywiLSIpfSx1bmRlcnNjb3JlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVwbGFjZSgvWy1cc10rL2csIl8iKS5yZXBsYWNlKGUuSW5mbGVjdG9yJiZlLkluZmxlY3Rvci5hY3JvbnltUmVnRXhwLGZ1bmN0aW9uKHgsYSl7cmV0dXJuKGE+MD8iXyI6IiIpK3gudG9Mb3dlckNhc2UoKX0pLnJlcGxhY2UoLyhbQS1aXGRdKykoW0EtWl1bYS16XSkvZywiJDFfJDIiKS5yZXBsYWNlKC8oW2EtelxkXSkoW0EtWl0pL2csIiQxXyQyIikudG9Mb3dlckNhc2UoKX0sY2FtZWxpemU6ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMudW5kZXJzY29yZSgpLnJlcGxhY2UoLyhefF8pKFteX10rKS9nLGZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWNjKGMpLGY9ITEhPT14fHxkPjA7cmV0dXJuIGU/Zj9lOmUudG9Mb3dlckNhc2UoKTpmP2MuY2FwaXRhbGl6ZSgpOmN9KX0sc3BhY2lmeTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnVuZGVyc2NvcmUoKS5yZXBsYWNlKC9fL2csIiAiKX0sc3RyaXBUYWdzOmZ1bmN0aW9uKCl7dmFyIHg9dGhpcztyZXR1cm4gSyhhcmd1bWVudHMubGVuZ3RoPjA/YXJndW1lbnRzOlsiIl0sZnVuY3Rpb24oYSl7eD14LnJlcGxhY2UoYygiPC8/Iit5eChhKSsiW148Pl0qPiIsImdpIiksIiIpfSkseH0scmVtb3ZlVGFnczpmdW5jdGlvbigpe3ZhciB4PXRoaXM7cmV0dXJuIEsoYXJndW1lbnRzLmxlbmd0aD4wP2FyZ3VtZW50czpbIlxcUysiXSxmdW5jdGlvbihhKXt2YXIgYj1jKCI8KCIrYSsiKVtePD5dKig/OlxcLz58Pi4qPzxcXC9cXDE+KSIsImdpIik7eD14LnJlcGxhY2UoYiwiIil9KSx4fSx0cnVuY2F0ZTpmdW5jdGlvbih4LGEsYil7cmV0dXJuIGZjKHRoaXMseCxhLGIpfSx0cnVuY2F0ZU9uV29yZDpmdW5jdGlvbih4LGEsYil7cmV0dXJuIGZjKHRoaXMseCxhLGIsITApfSxwYWQ6ZnVuY3Rpb24oeCxhKXt2YXIgYixjLGQ7cmV0dXJuIHg9ZGMoeCksYj1jeCgwLHgtdGhpcy5sZW5ndGgpLzIsYz14eChiKSxkPV8oYiksZWMoYyxhKSt0aGlzK2VjKGQsYSl9LHBhZExlZnQ6ZnVuY3Rpb24oeCxhKXtyZXR1cm4geD1kYyh4KSxlYyhjeCgwLHgtdGhpcy5sZW5ndGgpLGEpK3RoaXN9LHBhZFJpZ2h0OmZ1bmN0aW9uKHgsYSl7cmV0dXJuIHg9ZGMoeCksdGhpcytlYyhjeCgwLHgtdGhpcy5sZW5ndGgpLGEpfSxmaXJzdDpmdW5jdGlvbih4KXtyZXR1cm4gTih4KSYmKHg9MSksdGhpcy5zdWJzdHIoMCx4KX0sbGFzdDpmdW5jdGlvbih4KXtOKHgpJiYoeD0xKTt2YXIgYT10aGlzLmxlbmd0aC14PDA/MDp0aGlzLmxlbmd0aC14O3JldHVybiB0aGlzLnN1YnN0cihhKX0sdG9OdW1iZXI6ZnVuY3Rpb24oeCl7cmV0dXJuIHR4KHRoaXMseCl9LGNhcGl0YWxpemU6ZnVuY3Rpb24oeCl7dmFyIGE7cmV0dXJuIHRoaXMudG9Mb3dlckNhc2UoKS5yZXBsYWNlKHg/L1teJ10vZzovXlxTLyxmdW5jdGlvbih4KXt2YXIgYixjPXgudG9VcHBlckNhc2UoKTtyZXR1cm4gYj1hP3g6YyxhPWMhPT14LGJ9KX0sYXNzaWduOmZ1bmN0aW9uKCl7dmFyIHg9e307cmV0dXJuIEsoYXJndW1lbnRzLGZ1bmN0aW9uKGEsYil7UShhKT9WKHgsYSk6eFtiKzFdPWF9KSx0aGlzLnJlcGxhY2UoL1x7KFtee10rPylcfS9nLGZ1bmN0aW9uKGEsYil7cmV0dXJuIFAoeCxiKT94W2JdOmF9KX19KSxFKGUsITAsITAse2luc2VydDplLnByb3RvdHlwZS5hZGR9KSxpYygiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLz0iKTt2YXIgamMsa2MsbGM9W10sbWM9W10sbmM9W10sb2M9W10scGM9e307ZnVuY3Rpb24gcWMoeCxhKXt2YXIgYj14LmluZGV4T2YoYSk7Yj4tMSYmeC5zcGxpY2UoYiwxKX1mdW5jdGlvbiByYyh4LGEsYil7cyhhKSYmcWMobmMsYSkscWMobmMsYikseC51bnNoaWZ0KHtydWxlOmEscmVwbGFjZW1lbnQ6Yn0pfWZ1bmN0aW9uIHNjKHgsYSl7cmV0dXJuIHg9PWF8fCJhbGwiPT14fHwheH1mdW5jdGlvbiB0Yyh4KXtyZXR1cm4gbmMuc29tZShmdW5jdGlvbihhKXtyZXR1cm4gbmV3IGMoIlxcYiIrYSsiJCIsImkiKS50ZXN0KHgpfSl9ZnVuY3Rpb24gdWMoeCxhKXtyZXR1cm4oeD1zKHgpP3gudG9TdHJpbmcoKToiIikuaXNCbGFuaygpfHx0Yyh4KT94OnZjKHgsYT9sYzptYyl9ZnVuY3Rpb24gdmMoeCxhKXtyZXR1cm4gVChhLGZ1bmN0aW9uKGEsYil7aWYoeC5tYXRjaChiLnJ1bGUpKXJldHVybiB4PXgucmVwbGFjZShiLnJ1bGUsYi5yZXBsYWNlbWVudCksITF9KSx4fWZ1bmN0aW9uIHdjKHgpe3JldHVybiB4LnJlcGxhY2UoL15cVypbYS16XS8sZnVuY3Rpb24oeCl7cmV0dXJuIHgudG9VcHBlckNhc2UoKX0pfWpjPVsiYW5kIiwib3IiLCJub3IiLCJhIiwiYW4iLCJ0aGUiLCJzbyIsImJ1dCIsInRvIiwib2YiLCJhdCIsImJ5IiwiZnJvbSIsImludG8iLCJvbiIsIm9udG8iLCJvZmYiLCJvdXQiLCJpbiIsIm92ZXIiLCJ3aXRoIiwiZm9yIl0sKGtjPXthY3JvbnltOmZ1bmN0aW9uKHgpe3BjW3gudG9Mb3dlckNhc2UoKV09eDt2YXIgYj1hLmtleXMocGMpLm1hcChmdW5jdGlvbih4KXtyZXR1cm4gcGNbeF19KTtrYy5hY3JvbnltUmVnRXhwPWMoYi5qb2luKCJ8IiksImciKX0scGx1cmFsOmZ1bmN0aW9uKHgsYSl7cmMobGMseCxhKX0sc2luZ3VsYXI6ZnVuY3Rpb24oeCxhKXtyYyhtYyx4LGEpfSxpcnJlZ3VsYXI6ZnVuY3Rpb24oeCxhKXt2YXIgYj14LmZpcnN0KCksZD14LmZyb20oMSksZT1hLmZpcnN0KCksZj1hLmZyb20oMSksZz1lLnRvVXBwZXJDYXNlKCksaD1lLnRvTG93ZXJDYXNlKCksaT1iLnRvVXBwZXJDYXNlKCksaj1iLnRvTG93ZXJDYXNlKCk7cWMobmMseCkscWMobmMsYSksaT09Zz8oa2MucGx1cmFsKG5ldyBjKCIoezF9KXsyfSQiLmFzc2lnbihiLGQpLCJpIiksIiQxIitmKSxrYy5wbHVyYWwobmV3IGMoIih7MX0pezJ9JCIuYXNzaWduKGUsZiksImkiKSwiJDEiK2YpLGtjLnNpbmd1bGFyKG5ldyBjKCIoezF9KXsyfSQiLmFzc2lnbihlLGYpLCJpIiksIiQxIitkKSk6KGtjLnBsdXJhbChuZXcgYygiezF9ezJ9JCIuYXNzaWduKGksZCkpLGcrZiksa2MucGx1cmFsKG5ldyBjKCJ7MX17Mn0kIi5hc3NpZ24oaixkKSksaCtmKSxrYy5wbHVyYWwobmV3IGMoInsxfXsyfSQiLmFzc2lnbihnLGYpKSxnK2YpLGtjLnBsdXJhbChuZXcgYygiezF9ezJ9JCIuYXNzaWduKGgsZikpLGgrZiksa2Muc2luZ3VsYXIobmV3IGMoInsxfXsyfSQiLmFzc2lnbihnLGYpKSxpK2QpLGtjLnNpbmd1bGFyKG5ldyBjKCJ7MX17Mn0kIi5hc3NpZ24oaCxmKSksaitkKSl9LHVuY291bnRhYmxlOmZ1bmN0aW9uKHgpe3ZhciBhPWIuaXNBcnJheSh4KT94OkooYXJndW1lbnRzKTtuYz1uYy5jb25jYXQoYSl9LGh1bWFuOmZ1bmN0aW9uKHgsYSl7b2MudW5zaGlmdCh7cnVsZTp4LHJlcGxhY2VtZW50OmF9KX0sY2xlYXI6ZnVuY3Rpb24oeCl7c2MoeCwic2luZ3VsYXJzIikmJihtYz1bXSksc2MoeCwicGx1cmFscyIpJiYobGM9W10pLHNjKHgsInVuY291bnRhYmxlcyIpJiYobmM9W10pLHNjKHgsImh1bWFucyIpJiYob2M9W10pLHNjKHgsImFjcm9ueW1zIikmJihwYz17fSl9fSkucGx1cmFsKC8kLywicyIpLGtjLnBsdXJhbCgvcyQvZ2ksInMiKSxrYy5wbHVyYWwoLyhheHx0ZXN0KWlzJC9naSwiJDFlcyIpLGtjLnBsdXJhbCgvKG9jdG9wfHZpcnxmdW5nfGZvY3xyYWRpfGFsdW1uKShpfHVzKSQvZ2ksIiQxaSIpLGtjLnBsdXJhbCgvKGNlbnN1c3xhbGlhc3xzdGF0dXMpJC9naSwiJDFlcyIpLGtjLnBsdXJhbCgvKGJ1KXMkL2dpLCIkMXNlcyIpLGtjLnBsdXJhbCgvKGJ1ZmZhbHx0b21hdClvJC9naSwiJDFvZXMiKSxrYy5wbHVyYWwoLyhbdGldKXVtJC9naSwiJDFhIiksa2MucGx1cmFsKC8oW3RpXSlhJC9naSwiJDFhIiksa2MucGx1cmFsKC9zaXMkL2dpLCJzZXMiKSxrYy5wbHVyYWwoL2YrZT8kL2dpLCJ2ZXMiKSxrYy5wbHVyYWwoLyhjdWZmfHJvb2YpJC9naSwiJDFzIiksa2MucGx1cmFsKC8oW2h0XWl2ZSkkL2dpLCIkMXMiKSxrYy5wbHVyYWwoLyhbXmFlaW91eV1vKSQvZ2ksIiQxZXMiKSxrYy5wbHVyYWwoLyhbXmFlaW91eV18cXUpeSQvZ2ksIiQxaWVzIiksa2MucGx1cmFsKC8oeHxjaHxzc3xzaCkkL2dpLCIkMWVzIiksa2MucGx1cmFsKC8obWF0cnx2ZXJ0fGluZCkoPzppeHxleCkkL2dpLCIkMWljZXMiKSxrYy5wbHVyYWwoLyhbbWxdKW91c2UkL2dpLCIkMWljZSIpLGtjLnBsdXJhbCgvKFttbF0paWNlJC9naSwiJDFpY2UiKSxrYy5wbHVyYWwoL14ob3gpJC9naSwiJDFlbiIpLGtjLnBsdXJhbCgvXihveGVuKSQvZ2ksIiQxIiksa2MucGx1cmFsKC8ocXVpeikkL2dpLCIkMXplcyIpLGtjLnBsdXJhbCgvKHBob3R8Y2FudHxob218emVyfHBpYW58cG9ydGljfHByfHF1YXJ0fGtpbW9uKW8kL2dpLCIkMW9zIiksa2MucGx1cmFsKC8oY3JhZnQpJC9naSwiJDEiKSxrYy5wbHVyYWwoLyhbZnRdKVtlb117Mn0odGg/KSQvZ2ksIiQxZWUkMiIpLGtjLnNpbmd1bGFyKC9zJC9naSwiIiksa2Muc2luZ3VsYXIoLyhbcHN0XVthaXVdcykkL2dpLCIkMSIpLGtjLnNpbmd1bGFyKC8oW2FlaW91eV0pc3MkL2dpLCIkMXNzIiksa2Muc2luZ3VsYXIoLyhuKWV3cyQvZ2ksIiQxZXdzIiksa2Muc2luZ3VsYXIoLyhbdGldKWEkL2dpLCIkMXVtIiksa2Muc2luZ3VsYXIoLygoYSluYWx5fChiKWF8KGQpaWFnbm98KHApYXJlbnRoZXwocClyb2dub3wocyl5bm9wfCh0KWhlKXNlcyQvZ2ksIiQxJDJzaXMiKSxrYy5zaW5ndWxhcigvKF5hbmFseSlzZXMkL2dpLCIkMXNpcyIpLGtjLnNpbmd1bGFyKC8oaSkoZnx2ZXMpJC9pLCIkMWZlIiksa2Muc2luZ3VsYXIoLyhbYWVvbHJdZj8pKGZ8dmVzKSQvaSwiJDFmIiksa2Muc2luZ3VsYXIoLyhbaHRdaXZlKXMkL2dpLCIkMSIpLGtjLnNpbmd1bGFyKC8oW15hZWlvdXldfHF1KWllcyQvZ2ksIiQxeSIpLGtjLnNpbmd1bGFyKC8ocyllcmllcyQvZ2ksIiQxZXJpZXMiKSxrYy5zaW5ndWxhcigvKG0pb3ZpZXMkL2dpLCIkMW92aWUiKSxrYy5zaW5ndWxhcigvKHh8Y2h8c3N8c2gpZXMkL2dpLCIkMSIpLGtjLnNpbmd1bGFyKC8oW21sXSkob3VzfGljKWUkL2dpLCIkMW91c2UiKSxrYy5zaW5ndWxhcigvKGJ1cykoZXMpPyQvZ2ksIiQxIiksa2Muc2luZ3VsYXIoLyhvKWVzJC9naSwiJDEiKSxrYy5zaW5ndWxhcigvKHNob2Upcz8kL2dpLCIkMSIpLGtjLnNpbmd1bGFyKC8oY3Jpc3xheHx0ZXN0KVtpZV1zJC9naSwiJDFpcyIpLGtjLnNpbmd1bGFyKC8ob2N0b3B8dmlyfGZ1bmd8Zm9jfHJhZGl8YWx1bW4pKGl8dXMpJC9naSwiJDF1cyIpLGtjLnNpbmd1bGFyKC8oY2Vuc3VzfGFsaWFzfHN0YXR1cykoZXMpPyQvZ2ksIiQxIiksa2Muc2luZ3VsYXIoL14ob3gpKGVuKT8vZ2ksIiQxIiksa2Muc2luZ3VsYXIoLyh2ZXJ0fGluZCkoZXh8aWNlcykkL2dpLCIkMWV4Iiksa2Muc2luZ3VsYXIoLyhtYXRyKShpeHxpY2VzKSQvZ2ksIiQxaXgiKSxrYy5zaW5ndWxhcigvKHF1aXopKHplcyk/JC9naSwiJDEiKSxrYy5zaW5ndWxhcigvKGRhdGFiYXNlKXM/JC9naSwiJDEiKSxrYy5zaW5ndWxhcigvZWUodGg/KSQvZ2ksIm9vJDEiKSxrYy5pcnJlZ3VsYXIoInBlcnNvbiIsInBlb3BsZSIpLGtjLmlycmVndWxhcigibWFuIiwibWVuIiksa2MuaXJyZWd1bGFyKCJjaGlsZCIsImNoaWxkcmVuIiksa2MuaXJyZWd1bGFyKCJzZXgiLCJzZXhlcyIpLGtjLmlycmVndWxhcigibW92ZSIsIm1vdmVzIiksa2MuaXJyZWd1bGFyKCJzYXZlIiwic2F2ZXMiKSxrYy5pcnJlZ3VsYXIoImNvdyIsImtpbmUiKSxrYy5pcnJlZ3VsYXIoImdvb3NlIiwiZ2Vlc2UiKSxrYy5pcnJlZ3VsYXIoInpvbWJpZSIsInpvbWJpZXMiKSxrYy51bmNvdW50YWJsZSgiZXF1aXBtZW50LGluZm9ybWF0aW9uLHJpY2UsbW9uZXksc3BlY2llcyxzZXJpZXMsZmlzaCxzaGVlcCxqZWFucyIuc3BsaXQoIiwiKSksRShlLCEwLCEwLHtwbHVyYWxpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdWModGhpcywhMCl9LHNpbmd1bGFyaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHVjKHRoaXMsITEpfSxodW1hbml6ZTpmdW5jdGlvbigpe3ZhciB4PXZjKHRoaXMsb2MpO3JldHVybiB3Yyh4PSh4PXgucmVwbGFjZSgvX2lkJC9nLCIiKSkucmVwbGFjZSgvKF8pPyhbYS16XGRdKikvZ2ksZnVuY3Rpb24oeCxhLGIpe3JldHVybihhPyIgIjoiIikrKChQKHBjLGIpP3BjW2JdOm51bGwpfHxiLnRvTG93ZXJDYXNlKCkpfSkpfSx0aXRsZWl6ZTpmdW5jdGlvbigpe3ZhciB4LGEsYixjPS9bLjo7IV0kLztyZXR1cm4gdGhpcy5zcGFjaWZ5KCkuaHVtYW5pemUoKS53b3JkcyhmdW5jdGlvbihkLGUsZil7cmV0dXJuIHg9Yy50ZXN0KGQpLGI9MD09ZXx8ZT09Zi5sZW5ndGgtMXx8eHx8YSxhPXgsYnx8LTE9PT1qYy5pbmRleE9mKGQpP3djKGQpOmR9KS5qb2luKCIgIil9LHBhcmFtZXRlcml6ZTpmdW5jdGlvbih4KXt2YXIgYT10aGlzO3JldHVybiB2b2lkIDA9PT14JiYoeD0iLSIpLGEubm9ybWFsaXplJiYoYT1hLm5vcm1hbGl6ZSgpKSxhPWEucmVwbGFjZSgvW15hLXowLTlcLV9dKy9naSx4KSx4JiYoYT1hLnJlcGxhY2UobmV3IGMoIl57c2VwfSt8e3NlcH0rJHwoe3NlcH0pe3NlcH0rIi5hc3NpZ24oe3NlcDp5eCh4KX0pLCJnIiksIiQxIikpLGVuY29kZVVSSShhLnRvTG93ZXJDYXNlKCkpfX0pLGUuSW5mbGVjdG9yPWtjLGUuSW5mbGVjdG9yLmFjcm9ueW1zPXBjO3ZhciB5Yz1be25hbWVzOlsiQXJhYmljIl0sc291cmNlOiLYgC3bvyJ9LHtuYW1lczpbIkN5cmlsbGljIl0sc291cmNlOiLQgC3TvyJ9LHtuYW1lczpbIkRldmFuYWdhcmkiXSxzb3VyY2U6IuCkgC3gpb8ifSx7bmFtZXM6WyJHcmVlayJdLHNvdXJjZToizbAtz78ifSx7bmFtZXM6WyJIYW5ndWwiXSxzb3VyY2U6IuqwgC3tnq/hhIAt4Ye/In0se25hbWVzOlsiSGFuIiwiS2FuamkiXSxzb3VyY2U6IuS4gC3pv7/vpIAt76u/In0se25hbWVzOlsiSGVicmV3Il0sc291cmNlOiLWkC3XvyJ9LHtuYW1lczpbIkhpcmFnYW5hIl0sc291cmNlOiLjgYAt44Kf44O7LeODvCJ9LHtuYW1lczpbIkthbmEiXSxzb3VyY2U6IuOBgC3jg7/vvaEt776fIn0se25hbWVzOlsiS2F0YWthbmEiXSxzb3VyY2U6IuOCoC3jg7/vvaEt776fIn0se25hbWVzOlsiTGF0aW4iXSxzb3VyY2U6IgEtf8KALcO/xIAtxb/GgC3JjyJ9LHtuYW1lczpbIlRoYWkiXSxzb3VyY2U6IuC4gC3gub8ifV07ZnVuY3Rpb24gemMoKXt5Yy5mb3JFYWNoKGZ1bmN0aW9uKHgpe3ZhciBhPWMoIl5bIit4LnNvdXJjZSsiXFxzXSskIiksYj1jKCJbIit4LnNvdXJjZSsiXSIpO3gubmFtZXMuZm9yRWFjaChmdW5jdGlvbih4KXtJKGUucHJvdG90eXBlLCJpcyIreCxmdW5jdGlvbigpe3JldHVybiBhLnRlc3QodGhpcy50cmltKCkpfSksSShlLnByb3RvdHlwZSwiaGFzIit4LGZ1bmN0aW9uKCl7cmV0dXJuIGIudGVzdCh0aGlzKX0pfSl9KX12YXIgQWMsQmM9NjUyNDgsQ2M9W3t0eXBlOiJhIixzdGFydDo2NSxlbmQ6OTB9LHt0eXBlOiJhIixzdGFydDo5NyxlbmQ6MTIyfSx7dHlwZToibiIsc3RhcnQ6NDgsZW5kOjU3fSx7dHlwZToicCIsc3RhcnQ6MzMsZW5kOjQ3fSx7dHlwZToicCIsc3RhcnQ6NTgsZW5kOjY0fSx7dHlwZToicCIsc3RhcnQ6OTEsZW5kOjk2fSx7dHlwZToicCIsc3RhcnQ6MTIzLGVuZDoxMjZ9XSxEYz0vW1x1MDAyMC1cdTAwQTVdfFtcdUZGNjEtXHVGRjlGXVvvvp7vvp9dPy9nLEVjPS9bXHUzMDAwLVx1MzAxQ118W1x1MzAxQS1cdTMwRkNdfFtcdUZGMDEtXHVGRjYwXXxbXHVGRkUwLVx1RkZFNl0vZyxGYz0i772h772k772i772jwqXCosKjIixHYz0i44CC44CB44CM44CN77+l77+g77+hIixIYz0vW+OCq+OCreOCr+OCseOCs+OCteOCt+OCueOCu+OCveOCv+ODgeODhOODhuODiOODj+ODkuODleODmOODm10vLEljPS9b44OP44OS44OV44OY44Ob44OyXS8sSmM9Iu+9se+9su+9s++9tO+9te+9p++9qO+9qe+9qu+9q++9tu+9t++9uO+9ue+9uu+9u++9vO+9ve+9vu+9v+++gO++ge++gu+9r+++g+++hO++he++hu++h+++iO++ie++iu++i+++jO++je++ju++j+++kO++ke++ku++k+++lO+9rO++le+9re++lu+9ru++l+++mO++me++mu++m+++nO+9pu++ne+9sO+9pSIsS2M9IuOCouOCpOOCpuOCqOOCquOCoeOCo+OCpeOCp+OCqeOCq+OCreOCr+OCseOCs+OCteOCt+OCueOCu+OCveOCv+ODgeODhOODg+ODhuODiOODiuODi+ODjOODjeODjuODj+ODkuODleODmOODm+ODnuODn+ODoOODoeODouODpOODo+ODpuODpeODqOODp+ODqeODquODq+ODrOODreODr+ODsuODs+ODvOODuyI7ZnVuY3Rpb24gTGMoeCxhLGIsYyl7QWN8fE1jKCk7dmFyIGQ9SihhKS5qb2luKCIiKSxlPUFjW2NdO3JldHVybiBkPWQucmVwbGFjZSgvYWxsLywiIikucmVwbGFjZSgvKFx3KWxwaGFiZXR8dW1iZXJzP3xhdGFrYW5hfHBhY2VzP3x1bmN0dWF0aW9uL2csIiQxIikseC5yZXBsYWNlKGIsZnVuY3Rpb24oeCl7cmV0dXJuIWVbeF18fGQmJiFkLmhhcyhlW3hdLnR5cGUpP3g6ZVt4XS50b30pfWZ1bmN0aW9uIE1jKCl7dmFyIHg7QWM9e3plbmtha3U6e30saGFua2FrdTp7fX0sQ2MuZm9yRWFjaChmdW5jdGlvbih4KXtVKHguZW5kLXguc3RhcnQrMSxmdW5jdGlvbihhKXthKz14LnN0YXJ0LE5jKHgudHlwZSxxeChhKSxxeChhK0JjKSl9KX0pLEtjLmVhY2goZnVuY3Rpb24oYSxiKXtOYygiayIseD1KYy5jaGFyQXQoYiksYSksYS5tYXRjaChIYykmJk5jKCJrIix4KyLvvp4iLGEuc2hpZnQoMSkpLGEubWF0Y2goSWMpJiZOYygiayIseCsi776fIixhLnNoaWZ0KDIpKX0pLEdjLmVhY2goZnVuY3Rpb24oeCxhKXtOYygicCIsRmMuY2hhckF0KGEpLHgpfSksTmMoImsiLCLvvbPvvp4iLCLjg7QiKSxOYygiayIsIu+9pu++niIsIuODuiIpLE5jKCJzIiwiICIsIuOAgCIpfWZ1bmN0aW9uIE5jKHgsYSxiKXtBYy56ZW5rYWt1W2FdPXt0eXBlOngsdG86Yn0sQWMuaGFua2FrdVtiXT17dHlwZTp4LHRvOmF9fUUoZSwhMCwhMCx7aGFua2FrdTpmdW5jdGlvbigpe3JldHVybiBMYyh0aGlzLGFyZ3VtZW50cyxFYywiaGFua2FrdSIpfSx6ZW5rYWt1OmZ1bmN0aW9uKCl7cmV0dXJuIExjKHRoaXMsYXJndW1lbnRzLERjLCJ6ZW5rYWt1Iil9LGhpcmFnYW5hOmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXM7cmV0dXJuITEhPT14JiYoYT1hLnplbmtha3UoImsiKSksYS5yZXBsYWNlKC9bXHUzMEExLVx1MzBGNl0vZyxmdW5jdGlvbih4KXtyZXR1cm4geC5zaGlmdCgtOTYpfSl9LGthdGFrYW5hOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVwbGFjZSgvW1x1MzA0MS1cdTMwOTZdL2csZnVuY3Rpb24oeCl7cmV0dXJuIHguc2hpZnQoOTYpfSl9fSksemMoKX0pLmNhbGwodGhpcyk7CgovKlVSTCBwb2x5ZmlsbCwgKGMpIEFubmUgdmFuIEtlc3RlcmVuLCBkZWVwIHJlZmFjdG9yZWQgYnkgZXJtb3V0aCovCiFmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYihhKXtyZXR1cm4gdm9pZCAwIT09bFthXX1mdW5jdGlvbiBjKCl7aC5jYWxsKHRoaXMpLHRoaXMuX2lzSW52YWxpZD0hMH1mdW5jdGlvbiBkKGEpe3JldHVybiIiPT1hJiZjLmNhbGwodGhpcyksYS50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIGUoYSl7dmFyIGI9YS5jaGFyQ29kZUF0KDApO3JldHVybiBiPjMyJiZiPDEyNyYmWzM0LDM1LDYwLDYyLDYzLDk2XS5pbmRleE9mKGIpPT0tMT9hOmVuY29kZVVSSUNvbXBvbmVudChhKX1mdW5jdGlvbiBmKGEpe3ZhciBiPWEuY2hhckNvZGVBdCgwKTtyZXR1cm4gYj4zMiYmYjwxMjcmJlszNCwzNSw2MCw2Miw5Nl0uaW5kZXhPZihiKT09LTE/YTplbmNvZGVVUklDb21wb25lbnQoYSl9ZnVuY3Rpb24gZyhhLGcsaCl7ZnVuY3Rpb24gaShhKXt0LnB1c2goYSl9dmFyIGo9Z3x8InNjaGVtZSBzdGFydCIsaz0wLHE9IiIscj0hMSxzPSExLHQ9W107YTpmb3IoOyhhW2stMV0hPW58fDA9PWspJiYhdGhpcy5faXNJbnZhbGlkOyl7dmFyIHU9YVtrXTtzd2l0Y2goail7Y2FzZSJzY2hlbWUgc3RhcnQiOmlmKCF1fHwhby50ZXN0KHUpKXtpZihnKXtpKCJJbnZhbGlkIHNjaGVtZS4iKTticmVhayBhfXE9IiIsaj0ibm8gc2NoZW1lIjtjb250aW51ZX1xKz11LnRvTG93ZXJDYXNlKCksaj0ic2NoZW1lIjticmVhaztjYXNlInNjaGVtZSI6aWYodSYmcC50ZXN0KHUpKXErPXUudG9Mb3dlckNhc2UoKTtlbHNle2lmKCI6IiE9dSl7aWYoZyl7aWYobj09dSlicmVhayBhO2koIkNvZGUgcG9pbnQgbm90IGFsbG93ZWQgaW4gc2NoZW1lOiAiK3UpO2JyZWFrIGF9cT0iIixrPTAsaj0ibm8gc2NoZW1lIjtjb250aW51ZX1pZih0aGlzLl9zY2hlbWU9cSxxPSIiLGcpYnJlYWsgYTtiKHRoaXMuX3NjaGVtZSkmJih0aGlzLl9pc1JlbGF0aXZlPSEwKSxqPSJmaWxlIj09dGhpcy5fc2NoZW1lPyJyZWxhdGl2ZSI6dGhpcy5faXNSZWxhdGl2ZSYmaCYmaC5fc2NoZW1lPT10aGlzLl9zY2hlbWU/InJlbGF0aXZlIG9yIGF1dGhvcml0eSI6dGhpcy5faXNSZWxhdGl2ZT8iYXV0aG9yaXR5IGZpcnN0IHNsYXNoIjoic2NoZW1lIGRhdGEifWJyZWFrO2Nhc2Uic2NoZW1lIGRhdGEiOiI/Ij09dT8ocXVlcnk9Ij8iLGo9InF1ZXJ5Iik6IiMiPT11Pyh0aGlzLl9mcmFnbWVudD0iIyIsaj0iZnJhZ21lbnQiKTpuIT11JiYiXHQiIT11JiYiXG4iIT11JiYiXHIiIT11JiYodGhpcy5fc2NoZW1lRGF0YSs9ZSh1KSk7YnJlYWs7Y2FzZSJubyBzY2hlbWUiOmlmKGgmJmIoaC5fc2NoZW1lKSl7aj0icmVsYXRpdmUiO2NvbnRpbnVlfWkoIk1pc3Npbmcgc2NoZW1lLiIpLGMuY2FsbCh0aGlzKTticmVhaztjYXNlInJlbGF0aXZlIG9yIGF1dGhvcml0eSI6aWYoIi8iIT11fHwiLyIhPWFbaysxXSl7aSgiRXhwZWN0ZWQgLywgZ290OiAiK3UpLGo9InJlbGF0aXZlIjtjb250aW51ZX1qPSJhdXRob3JpdHkgaWdub3JlIHNsYXNoZXMiO2JyZWFrO2Nhc2UicmVsYXRpdmUiOmlmKHRoaXMuX2lzUmVsYXRpdmU9ITAsImZpbGUiIT10aGlzLl9zY2hlbWUmJih0aGlzLl9zY2hlbWU9aC5fc2NoZW1lKSxuPT11KXt0aGlzLl9ob3N0PWguX2hvc3QsdGhpcy5fcG9ydD1oLl9wb3J0LHRoaXMuX3BhdGg9aC5fcGF0aC5zbGljZSgpLHRoaXMuX3F1ZXJ5PWguX3F1ZXJ5LHRoaXMuX3VzZXJuYW1lPWguX3VzZXJuYW1lLHRoaXMuX3Bhc3N3b3JkPWguX3Bhc3N3b3JkO2JyZWFrIGF9aWYoIi8iPT11fHwiXFwiPT11KSJcXCI9PXUmJmkoIlxcIGlzIGFuIGludmFsaWQgY29kZSBwb2ludC4iKSxqPSJyZWxhdGl2ZSBzbGFzaCI7ZWxzZSBpZigiPyI9PXUpdGhpcy5faG9zdD1oLl9ob3N0LHRoaXMuX3BvcnQ9aC5fcG9ydCx0aGlzLl9wYXRoPWguX3BhdGguc2xpY2UoKSx0aGlzLl9xdWVyeT0iPyIsdGhpcy5fdXNlcm5hbWU9aC5fdXNlcm5hbWUsdGhpcy5fcGFzc3dvcmQ9aC5fcGFzc3dvcmQsaj0icXVlcnkiO2Vsc2V7aWYoIiMiIT11KXt2YXIgdj1hW2srMV0sdz1hW2srMl07KCJmaWxlIiE9dGhpcy5fc2NoZW1lfHwhby50ZXN0KHUpfHwiOiIhPXYmJiJ8IiE9dnx8biE9dyYmIi8iIT13JiYiXFwiIT13JiYiPyIhPXcmJiIjIiE9dykmJih0aGlzLl9ob3N0PWguX2hvc3QsdGhpcy5fcG9ydD1oLl9wb3J0LHRoaXMuX3VzZXJuYW1lPWguX3VzZXJuYW1lLHRoaXMuX3Bhc3N3b3JkPWguX3Bhc3N3b3JkLHRoaXMuX3BhdGg9aC5fcGF0aC5zbGljZSgpLHRoaXMuX3BhdGgucG9wKCkpLGo9InJlbGF0aXZlIHBhdGgiO2NvbnRpbnVlfXRoaXMuX2hvc3Q9aC5faG9zdCx0aGlzLl9wb3J0PWguX3BvcnQsdGhpcy5fcGF0aD1oLl9wYXRoLnNsaWNlKCksdGhpcy5fcXVlcnk9aC5fcXVlcnksdGhpcy5fZnJhZ21lbnQ9IiMiLHRoaXMuX3VzZXJuYW1lPWguX3VzZXJuYW1lLHRoaXMuX3Bhc3N3b3JkPWguX3Bhc3N3b3JkLGo9ImZyYWdtZW50In1icmVhaztjYXNlInJlbGF0aXZlIHNsYXNoIjppZigiLyIhPXUmJiJcXCIhPXUpeyJmaWxlIiE9dGhpcy5fc2NoZW1lJiYodGhpcy5faG9zdD1oLl9ob3N0LHRoaXMuX3BvcnQ9aC5fcG9ydCx0aGlzLl91c2VybmFtZT1oLl91c2VybmFtZSx0aGlzLl9wYXNzd29yZD1oLl9wYXNzd29yZCksaj0icmVsYXRpdmUgcGF0aCI7Y29udGludWV9IlxcIj09dSYmaSgiXFwgaXMgYW4gaW52YWxpZCBjb2RlIHBvaW50LiIpLGo9ImZpbGUiPT10aGlzLl9zY2hlbWU/ImZpbGUgaG9zdCI6ImF1dGhvcml0eSBpZ25vcmUgc2xhc2hlcyI7YnJlYWs7Y2FzZSJhdXRob3JpdHkgZmlyc3Qgc2xhc2giOmlmKCIvIiE9dSl7aSgiRXhwZWN0ZWQgJy8nLCBnb3Q6ICIrdSksaj0iYXV0aG9yaXR5IGlnbm9yZSBzbGFzaGVzIjtjb250aW51ZX1qPSJhdXRob3JpdHkgc2Vjb25kIHNsYXNoIjticmVhaztjYXNlImF1dGhvcml0eSBzZWNvbmQgc2xhc2giOmlmKGo9ImF1dGhvcml0eSBpZ25vcmUgc2xhc2hlcyIsIi8iIT11KXtpKCJFeHBlY3RlZCAnLycsIGdvdDogIit1KTtjb250aW51ZX1icmVhaztjYXNlImF1dGhvcml0eSBpZ25vcmUgc2xhc2hlcyI6aWYoIi8iIT11JiYiXFwiIT11KXtqPSJhdXRob3JpdHkiO2NvbnRpbnVlfWkoIkV4cGVjdGVkIGF1dGhvcml0eSwgZ290OiAiK3UpO2JyZWFrO2Nhc2UiYXV0aG9yaXR5IjppZigiQCI9PXUpe3ImJihpKCJAIGFscmVhZHkgc2Vlbi4iKSxxKz0iJTQwIikscj0hMDtmb3IodmFyIHg9MDt4PHEubGVuZ3RoO3grKyl7dmFyIHk9cVt4XTtpZigiXHQiIT15JiYiXG4iIT15JiYiXHIiIT15KWlmKCI6IiE9eXx8bnVsbCE9PXRoaXMuX3Bhc3N3b3JkKXt2YXIgej1lKHkpO251bGwhPT10aGlzLl9wYXNzd29yZD90aGlzLl9wYXNzd29yZCs9ejp0aGlzLl91c2VybmFtZSs9en1lbHNlIHRoaXMuX3Bhc3N3b3JkPSIiO2Vsc2UgaSgiSW52YWxpZCB3aGl0ZXNwYWNlIGluIGF1dGhvcml0eS4iKX1xPSIifWVsc2V7aWYobj09dXx8Ii8iPT11fHwiXFwiPT11fHwiPyI9PXV8fCIjIj09dSl7ay09cS5sZW5ndGgscT0iIixqPSJob3N0Ijtjb250aW51ZX1xKz11fWJyZWFrO2Nhc2UiZmlsZSBob3N0IjppZihuPT11fHwiLyI9PXV8fCJcXCI9PXV8fCI/Ij09dXx8IiMiPT11KXsyIT1xLmxlbmd0aHx8IW8udGVzdChxWzBdKXx8IjoiIT1xWzFdJiYifCIhPXFbMV0/MD09cS5sZW5ndGg/aj0icmVsYXRpdmUgcGF0aCBzdGFydCI6KHRoaXMuX2hvc3Q9ZC5jYWxsKHRoaXMscSkscT0iIixqPSJyZWxhdGl2ZSBwYXRoIHN0YXJ0Iik6aj0icmVsYXRpdmUgcGF0aCI7Y29udGludWV9Ilx0Ij09dXx8IlxuIj09dXx8IlxyIj09dT9pKCJJbnZhbGlkIHdoaXRlc3BhY2UgaW4gZmlsZSBob3N0LiIpOnErPXU7YnJlYWs7Y2FzZSJob3N0IjpjYXNlImhvc3RuYW1lIjppZigiOiIhPXV8fHMpe2lmKG49PXV8fCIvIj09dXx8IlxcIj09dXx8Ij8iPT11fHwiIyI9PXUpe2lmKHRoaXMuX2hvc3Q9ZC5jYWxsKHRoaXMscSkscT0iIixqPSJyZWxhdGl2ZSBwYXRoIHN0YXJ0IixnKWJyZWFrIGE7Y29udGludWV9Ilx0IiE9dSYmIlxuIiE9dSYmIlxyIiE9dT8oIlsiPT11P3M9ITA6Il0iPT11JiYocz0hMSkscSs9dSk6aSgiSW52YWxpZCBjb2RlIHBvaW50IGluIGhvc3QvaG9zdG5hbWU6ICIrdSl9ZWxzZSBpZih0aGlzLl9ob3N0PWQuY2FsbCh0aGlzLHEpLHE9IiIsaj0icG9ydCIsImhvc3RuYW1lIj09ZylicmVhayBhO2JyZWFrO2Nhc2UicG9ydCI6aWYoL1swLTldLy50ZXN0KHUpKXErPXU7ZWxzZXtpZihuPT11fHwiLyI9PXV8fCJcXCI9PXV8fCI/Ij09dXx8IiMiPT11fHxnKXtpZigiIiE9cSl7dmFyIEE9cGFyc2VJbnQocSwxMCk7QSE9bFt0aGlzLl9zY2hlbWVdJiYodGhpcy5fcG9ydD1BKyIiKSxxPSIifWlmKGcpYnJlYWsgYTtqPSJyZWxhdGl2ZSBwYXRoIHN0YXJ0Ijtjb250aW51ZX0iXHQiPT11fHwiXG4iPT11fHwiXHIiPT11P2koIkludmFsaWQgY29kZSBwb2ludCBpbiBwb3J0OiAiK3UpOmMuY2FsbCh0aGlzKX1icmVhaztjYXNlInJlbGF0aXZlIHBhdGggc3RhcnQiOmlmKCJcXCI9PXUmJmkoIidcXCcgbm90IGFsbG93ZWQgaW4gcGF0aC4iKSxqPSJyZWxhdGl2ZSBwYXRoIiwiLyIhPXUmJiJcXCIhPXUpY29udGludWU7YnJlYWs7Y2FzZSJyZWxhdGl2ZSBwYXRoIjppZihuIT11JiYiLyIhPXUmJiJcXCIhPXUmJihnfHwiPyIhPXUmJiIjIiE9dSkpIlx0IiE9dSYmIlxuIiE9dSYmIlxyIiE9dSYmKHErPWUodSkpO2Vsc2V7IlxcIj09dSYmaSgiXFwgbm90IGFsbG93ZWQgaW4gcmVsYXRpdmUgcGF0aC4iKTt2YXIgQjsoQj1tW3EudG9Mb3dlckNhc2UoKV0pJiYocT1CKSwiLi4iPT1xPyh0aGlzLl9wYXRoLnBvcCgpLCIvIiE9dSYmIlxcIiE9dSYmdGhpcy5fcGF0aC5wdXNoKCIiKSk6Ii4iPT1xJiYiLyIhPXUmJiJcXCIhPXU/dGhpcy5fcGF0aC5wdXNoKCIiKToiLiIhPXEmJigiZmlsZSI9PXRoaXMuX3NjaGVtZSYmMD09dGhpcy5fcGF0aC5sZW5ndGgmJjI9PXEubGVuZ3RoJiZvLnRlc3QocVswXSkmJiJ8Ij09cVsxXSYmKHE9cVswXSsiOiIpLHRoaXMuX3BhdGgucHVzaChxKSkscT0iIiwiPyI9PXU/KHRoaXMuX3F1ZXJ5PSI/IixqPSJxdWVyeSIpOiIjIj09dSYmKHRoaXMuX2ZyYWdtZW50PSIjIixqPSJmcmFnbWVudCIpfWJyZWFrO2Nhc2UicXVlcnkiOmd8fCIjIiE9dT9uIT11JiYiXHQiIT11JiYiXG4iIT11JiYiXHIiIT11JiYodGhpcy5fcXVlcnkrPWYodSkpOih0aGlzLl9mcmFnbWVudD0iIyIsaj0iZnJhZ21lbnQiKTticmVhaztjYXNlImZyYWdtZW50IjpuIT11JiYiXHQiIT11JiYiXG4iIT11JiYiXHIiIT11JiYodGhpcy5fZnJhZ21lbnQrPXUpfWsrK319ZnVuY3Rpb24gaCgpe3RoaXMuX3NjaGVtZT0iIix0aGlzLl9zY2hlbWVEYXRhPSIiLHRoaXMuX3VzZXJuYW1lPSIiLHRoaXMuX3Bhc3N3b3JkPW51bGwsdGhpcy5faG9zdD0iIix0aGlzLl9wb3J0PSIiLHRoaXMuX3BhdGg9W10sdGhpcy5fcXVlcnk9IiIsdGhpcy5fZnJhZ21lbnQ9IiIsdGhpcy5faXNJbnZhbGlkPSExLHRoaXMuX2lzUmVsYXRpdmU9ITF9ZnVuY3Rpb24gaShhLGIpe3ZvaWQgMD09PWJ8fGIgaW5zdGFuY2VvZiBpfHwoYj1uZXcgaShTdHJpbmcoYikpKSxhPVN0cmluZyhhKSx0aGlzLl91cmw9YSxoLmNhbGwodGhpcyk7dmFyIGM9YS5yZXBsYWNlKC9eWyBcdFxyXG5cZl0rfFsgXHRcclxuXGZdKyQvZywiIik7Zy5jYWxsKHRoaXMsYyxudWxsLGIpfXZhciBqPSExO2lmKCFhLmZvcmNlSlVSTCl0cnl7dmFyIGs9bmV3IFVSTCgiYiIsImh0dHA6Ly94OnlAYSIpO2sucGF0aG5hbWU9ImMlMjBkIixqPSJodHRwOi8veDp5QGEvYyUyMGQiPT09ay5ocmVmfWNhdGNoKGEpe31pZighail7dmFyIGw9T2JqZWN0LmNyZWF0ZShudWxsKTtsLmZ0cD0yMSxsLmZpbGU9MCxsLmdvcGhlcj03MCxsLmh0dHA9ODAsbC5odHRwcz00NDMsbC53cz04MCxsLndzcz00NDM7dmFyIG09T2JqZWN0LmNyZWF0ZShudWxsKTttWyIlMmUiXT0iLiIsbVsiLiUyZSJdPSIuLiIsbVsiJTJlLiJdPSIuLiIsbVsiJTJlJTJlIl09Ii4uIjt2YXIgbj12b2lkIDAsbz0vW2EtekEtWl0vLHA9L1thLXpBLVowLTlcK1wtXC5dLztpLnByb3RvdHlwZT17dG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ocmVmfSxnZXQgaHJlZigpe2lmKHRoaXMuX2lzSW52YWxpZClyZXR1cm4gdGhpcy5fdXJsO3ZhciBhPSIiO3JldHVybiIiPT10aGlzLl91c2VybmFtZSYmbnVsbD09dGhpcy5fcGFzc3dvcmR8fChhPXRoaXMuX3VzZXJuYW1lKyhudWxsIT10aGlzLl9wYXNzd29yZD8iOiIrdGhpcy5fcGFzc3dvcmQ6IiIpKyJAIiksdGhpcy5wcm90b2NvbCsodGhpcy5faXNSZWxhdGl2ZT8iLy8iK2ErdGhpcy5ob3N0OiIiKSt0aGlzLnBhdGhuYW1lK3RoaXMuX3F1ZXJ5K3RoaXMuX2ZyYWdtZW50fSxzZXQgaHJlZihhKXtoLmNhbGwodGhpcyksZy5jYWxsKHRoaXMsYSl9LGdldCBwcm90b2NvbCgpe3JldHVybiB0aGlzLl9zY2hlbWUrIjoifSxzZXQgcHJvdG9jb2woYSl7dGhpcy5faXNJbnZhbGlkfHxnLmNhbGwodGhpcyxhKyI6Iiwic2NoZW1lIHN0YXJ0Iil9LGdldCBob3N0KCl7cmV0dXJuIHRoaXMuX2lzSW52YWxpZD8iIjp0aGlzLl9wb3J0P3RoaXMuX2hvc3QrIjoiK3RoaXMuX3BvcnQ6dGhpcy5faG9zdH0sc2V0IGhvc3QoYSl7IXRoaXMuX2lzSW52YWxpZCYmdGhpcy5faXNSZWxhdGl2ZSYmZy5jYWxsKHRoaXMsYSwiaG9zdCIpfSxnZXQgaG9zdG5hbWUoKXtyZXR1cm4gdGhpcy5faG9zdH0sc2V0IGhvc3RuYW1lKGEpeyF0aGlzLl9pc0ludmFsaWQmJnRoaXMuX2lzUmVsYXRpdmUmJmcuY2FsbCh0aGlzLGEsImhvc3RuYW1lIil9LGdldCBwb3J0KCl7cmV0dXJuIHRoaXMuX3BvcnR9LHNldCBwb3J0KGEpeyF0aGlzLl9pc0ludmFsaWQmJnRoaXMuX2lzUmVsYXRpdmUmJmcuY2FsbCh0aGlzLGEsInBvcnQiKX0sZ2V0IHBhdGhuYW1lKCl7cmV0dXJuIHRoaXMuX2lzSW52YWxpZD8iIjp0aGlzLl9pc1JlbGF0aXZlPyIvIit0aGlzLl9wYXRoLmpvaW4oIi8iKTp0aGlzLl9zY2hlbWVEYXRhfSxzZXQgcGF0aG5hbWUoYSl7IXRoaXMuX2lzSW52YWxpZCYmdGhpcy5faXNSZWxhdGl2ZSYmKHRoaXMuX3BhdGg9W10sZy5jYWxsKHRoaXMsYSwicmVsYXRpdmUgcGF0aCBzdGFydCIpKX0sZ2V0IHNlYXJjaCgpe3JldHVybiB0aGlzLl9pc0ludmFsaWR8fCF0aGlzLl9xdWVyeXx8Ij8iPT10aGlzLl9xdWVyeT8iIjp0aGlzLl9xdWVyeX0sc2V0IHNlYXJjaChhKXshdGhpcy5faXNJbnZhbGlkJiZ0aGlzLl9pc1JlbGF0aXZlJiYodGhpcy5fcXVlcnk9Ij8iLCI/Ij09YVswXSYmKGE9YS5zbGljZSgxKSksZy5jYWxsKHRoaXMsYSwicXVlcnkiKSl9LGdldCBoYXNoKCl7cmV0dXJuIHRoaXMuX2lzSW52YWxpZHx8IXRoaXMuX2ZyYWdtZW50fHwiIyI9PXRoaXMuX2ZyYWdtZW50PyIiOnRoaXMuX2ZyYWdtZW50fSxzZXQgaGFzaChhKXt0aGlzLl9pc0ludmFsaWR8fCh0aGlzLl9mcmFnbWVudD0iIyIsIiMiPT1hWzBdJiYoYT1hLnNsaWNlKDEpKSxnLmNhbGwodGhpcyxhLCJmcmFnbWVudCIpKX0sZ2V0IG9yaWdpbigpe3ZhciBhO2lmKHRoaXMuX2lzSW52YWxpZHx8IXRoaXMuX3NjaGVtZSlyZXR1cm4iIjtzd2l0Y2godGhpcy5fc2NoZW1lKXtjYXNlImRhdGEiOmNhc2UiZmlsZSI6Y2FzZSJqYXZhc2NyaXB0IjpjYXNlIm1haWx0byI6cmV0dXJuIm51bGwifXJldHVybiBhPXRoaXMuaG9zdCxhP3RoaXMuX3NjaGVtZSsiOi8vIithOiIifSxnZXQgdXNlcm5hbWUoKXtyZXR1cm4gdGhpcy5fdXNlcm5hbWV9LHNldCB1c2VybmFtZShhKXt0aGlzLl9pc0ludmFsaWR8fCh0aGlzLl91c2VybmFtZT1lbmNvZGVVUklDb21wb25lbnQoYSsiIikpfSxnZXQgcGFzc3dvcmQoKXtyZXR1cm4gdGhpcy5fcGFzc3dvcmR9LHNldCBwYXNzd29yZChhKXt0aGlzLl9pc0ludmFsaWR8fCh0aGlzLl9wYXNzd29yZD1lbmNvZGVVUklDb21wb25lbnQoYSsiIikpfX07dmFyIHE9YS5VUkw7cSYmKGkuY3JlYXRlT2JqZWN0VVJMPWZ1bmN0aW9uKGEpe3JldHVybiBxLmNyZWF0ZU9iamVjdFVSTC5hcHBseShxLGFyZ3VtZW50cyl9LGkucmV2b2tlT2JqZWN0VVJMPWZ1bmN0aW9uKGEpe3EucmV2b2tlT2JqZWN0VVJMKGEpfSksYS5VUkw9aX19KHdpbmRvdyk7CgovKmpRdWVyeSAyLjEuMyovCiFmdW5jdGlvbihhLGIpeyJvYmplY3QiPT10eXBlb2YgbW9kdWxlJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZS5leHBvcnRzP21vZHVsZS5leHBvcnRzPWEuZG9jdW1lbnQ/YihhLCEwKTpmdW5jdGlvbihhKXtpZighYS5kb2N1bWVudCl0aHJvdyBuZXcgRXJyb3IoImpRdWVyeSByZXF1aXJlcyBhIHdpbmRvdyB3aXRoIGEgZG9jdW1lbnQiKTtyZXR1cm4gYihhKX06YihhKX0oInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OnRoaXMsZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKGEpe3ZhciBiPWEubGVuZ3RoLGM9Xy50eXBlKGEpO3JldHVybiJmdW5jdGlvbiI9PT1jfHxfLmlzV2luZG93KGEpPyExOjE9PT1hLm5vZGVUeXBlJiZiPyEwOiJhcnJheSI9PT1jfHwwPT09Ynx8Im51bWJlciI9PXR5cGVvZiBiJiZiPjAmJmItMSBpbiBhfWZ1bmN0aW9uIGQoYSxiLGMpe2lmKF8uaXNGdW5jdGlvbihiKSlyZXR1cm4gXy5ncmVwKGEsZnVuY3Rpb24oYSxkKXtyZXR1cm4hIWIuY2FsbChhLGQsYSkhPT1jfSk7aWYoYi5ub2RlVHlwZSlyZXR1cm4gXy5ncmVwKGEsZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1iIT09Y30pO2lmKCJzdHJpbmciPT10eXBlb2YgYil7aWYoaGIudGVzdChiKSlyZXR1cm4gXy5maWx0ZXIoYixhLGMpO2I9Xy5maWx0ZXIoYixhKX1yZXR1cm4gXy5ncmVwKGEsZnVuY3Rpb24oYSl7cmV0dXJuIFUuY2FsbChiLGEpPj0wIT09Y30pfWZ1bmN0aW9uIGUoYSxiKXtmb3IoOyhhPWFbYl0pJiYxIT09YS5ub2RlVHlwZTspO3JldHVybiBhfWZ1bmN0aW9uIGYoYSl7dmFyIGI9b2JbYV09e307cmV0dXJuIF8uZWFjaChhLm1hdGNoKG5iKXx8W10sZnVuY3Rpb24oYSxjKXtiW2NdPSEwfSksYn1mdW5jdGlvbiBnKCl7Wi5yZW1vdmVFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixnLCExKSxhLnJlbW92ZUV2ZW50TGlzdGVuZXIoImxvYWQiLGcsITEpLF8ucmVhZHkoKX1mdW5jdGlvbiBoKCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMuY2FjaGU9e30sMCx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJue319fSksdGhpcy5leHBhbmRvPV8uZXhwYW5kbytoLnVpZCsrfWZ1bmN0aW9uIGkoYSxiLGMpe3ZhciBkO2lmKHZvaWQgMD09PWMmJjE9PT1hLm5vZGVUeXBlKWlmKGQ9ImRhdGEtIitiLnJlcGxhY2UodWIsIi0kMSIpLnRvTG93ZXJDYXNlKCksYz1hLmdldEF0dHJpYnV0ZShkKSwic3RyaW5nIj09dHlwZW9mIGMpe3RyeXtjPSJ0cnVlIj09PWM/ITA6ImZhbHNlIj09PWM/ITE6Im51bGwiPT09Yz9udWxsOitjKyIiPT09Yz8rYzp0Yi50ZXN0KGMpP18ucGFyc2VKU09OKGMpOmN9Y2F0Y2goZSl7fXNiLnNldChhLGIsYyl9ZWxzZSBjPXZvaWQgMDtyZXR1cm4gY31mdW5jdGlvbiBqKCl7cmV0dXJuITB9ZnVuY3Rpb24gaygpe3JldHVybiExfWZ1bmN0aW9uIGwoKXt0cnl7cmV0dXJuIFouYWN0aXZlRWxlbWVudH1jYXRjaChhKXt9fWZ1bmN0aW9uIG0oYSxiKXtyZXR1cm4gXy5ub2RlTmFtZShhLCJ0YWJsZSIpJiZfLm5vZGVOYW1lKDExIT09Yi5ub2RlVHlwZT9iOmIuZmlyc3RDaGlsZCwidHIiKT9hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpWzBdfHxhLmFwcGVuZENoaWxkKGEub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0Ym9keSIpKTphfWZ1bmN0aW9uIG4oYSl7cmV0dXJuIGEudHlwZT0obnVsbCE9PWEuZ2V0QXR0cmlidXRlKCJ0eXBlIikpKyIvIithLnR5cGUsYX1mdW5jdGlvbiBvKGEpe3ZhciBiPUtiLmV4ZWMoYS50eXBlKTtyZXR1cm4gYj9hLnR5cGU9YlsxXTphLnJlbW92ZUF0dHJpYnV0ZSgidHlwZSIpLGF9ZnVuY3Rpb24gcChhLGIpe2Zvcih2YXIgYz0wLGQ9YS5sZW5ndGg7ZD5jO2MrKylyYi5zZXQoYVtjXSwiZ2xvYmFsRXZhbCIsIWJ8fHJiLmdldChiW2NdLCJnbG9iYWxFdmFsIikpfWZ1bmN0aW9uIHEoYSxiKXt2YXIgYyxkLGUsZixnLGgsaSxqO2lmKDE9PT1iLm5vZGVUeXBlKXtpZihyYi5oYXNEYXRhKGEpJiYoZj1yYi5hY2Nlc3MoYSksZz1yYi5zZXQoYixmKSxqPWYuZXZlbnRzLGopKXtkZWxldGUgZy5oYW5kbGUsZy5ldmVudHM9e307Zm9yKGUgaW4gailmb3IoYz0wLGQ9altlXS5sZW5ndGg7ZD5jO2MrKylfLmV2ZW50LmFkZChiLGUsaltlXVtjXSl9c2IuaGFzRGF0YShhKSYmKGg9c2IuYWNjZXNzKGEpLGk9Xy5leHRlbmQoe30saCksc2Iuc2V0KGIsaSkpfX1mdW5jdGlvbiByKGEsYil7dmFyIGM9YS5nZXRFbGVtZW50c0J5VGFnTmFtZT9hLmdldEVsZW1lbnRzQnlUYWdOYW1lKGJ8fCIqIik6YS5xdWVyeVNlbGVjdG9yQWxsP2EucXVlcnlTZWxlY3RvckFsbChifHwiKiIpOltdO3JldHVybiB2b2lkIDA9PT1ifHxiJiZfLm5vZGVOYW1lKGEsYik/Xy5tZXJnZShbYV0sYyk6Y31mdW5jdGlvbiBzKGEsYil7dmFyIGM9Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOyJpbnB1dCI9PT1jJiZ5Yi50ZXN0KGEudHlwZSk/Yi5jaGVja2VkPWEuY2hlY2tlZDooImlucHV0Ij09PWN8fCJ0ZXh0YXJlYSI9PT1jKSYmKGIuZGVmYXVsdFZhbHVlPWEuZGVmYXVsdFZhbHVlKX1mdW5jdGlvbiB0KGIsYyl7dmFyIGQsZT1fKGMuY3JlYXRlRWxlbWVudChiKSkuYXBwZW5kVG8oYy5ib2R5KSxmPWEuZ2V0RGVmYXVsdENvbXB1dGVkU3R5bGUmJihkPWEuZ2V0RGVmYXVsdENvbXB1dGVkU3R5bGUoZVswXSkpP2QuZGlzcGxheTpfLmNzcyhlWzBdLCJkaXNwbGF5Iik7cmV0dXJuIGUuZGV0YWNoKCksZn1mdW5jdGlvbiB1KGEpe3ZhciBiPVosYz1PYlthXTtyZXR1cm4gY3x8KGM9dChhLGIpLCJub25lIiE9PWMmJmN8fChOYj0oTmJ8fF8oIjxpZnJhbWUgZnJhbWVib3JkZXI9JzAnIHdpZHRoPScwJyBoZWlnaHQ9JzAnLz4iKSkuYXBwZW5kVG8oYi5kb2N1bWVudEVsZW1lbnQpLGI9TmJbMF0uY29udGVudERvY3VtZW50LGIud3JpdGUoKSxiLmNsb3NlKCksYz10KGEsYiksTmIuZGV0YWNoKCkpLE9iW2FdPWMpLGN9ZnVuY3Rpb24gdihhLGIsYyl7dmFyIGQsZSxmLGcsaD1hLnN0eWxlO3JldHVybiBjPWN8fFJiKGEpLGMmJihnPWMuZ2V0UHJvcGVydHlWYWx1ZShiKXx8Y1tiXSksYyYmKCIiIT09Z3x8Xy5jb250YWlucyhhLm93bmVyRG9jdW1lbnQsYSl8fChnPV8uc3R5bGUoYSxiKSksUWIudGVzdChnKSYmUGIudGVzdChiKSYmKGQ9aC53aWR0aCxlPWgubWluV2lkdGgsZj1oLm1heFdpZHRoLGgubWluV2lkdGg9aC5tYXhXaWR0aD1oLndpZHRoPWcsZz1jLndpZHRoLGgud2lkdGg9ZCxoLm1pbldpZHRoPWUsaC5tYXhXaWR0aD1mKSksdm9pZCAwIT09Zz9nKyIiOmd9ZnVuY3Rpb24gdyhhLGIpe3JldHVybntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYSgpPyhkZWxldGUgdGhpcy5nZXQsdm9pZCAwKToodGhpcy5nZXQ9YikuYXBwbHkodGhpcyxhcmd1bWVudHMpfX19ZnVuY3Rpb24geChhLGIpe2lmKGIgaW4gYSlyZXR1cm4gYjtmb3IodmFyIGM9YlswXS50b1VwcGVyQ2FzZSgpK2Iuc2xpY2UoMSksZD1iLGU9WGIubGVuZ3RoO2UtLTspaWYoYj1YYltlXStjLGIgaW4gYSlyZXR1cm4gYjtyZXR1cm4gZH1mdW5jdGlvbiB5KGEsYixjKXt2YXIgZD1UYi5leGVjKGIpO3JldHVybiBkP01hdGgubWF4KDAsZFsxXS0oY3x8MCkpKyhkWzJdfHwicHgiKTpifWZ1bmN0aW9uIHooYSxiLGMsZCxlKXtmb3IodmFyIGY9Yz09PShkPyJib3JkZXIiOiJjb250ZW50Iik/NDoid2lkdGgiPT09Yj8xOjAsZz0wOzQ+ZjtmKz0yKSJtYXJnaW4iPT09YyYmKGcrPV8uY3NzKGEsYyt3YltmXSwhMCxlKSksZD8oImNvbnRlbnQiPT09YyYmKGctPV8uY3NzKGEsInBhZGRpbmciK3diW2ZdLCEwLGUpKSwibWFyZ2luIiE9PWMmJihnLT1fLmNzcyhhLCJib3JkZXIiK3diW2ZdKyJXaWR0aCIsITAsZSkpKTooZys9Xy5jc3MoYSwicGFkZGluZyIrd2JbZl0sITAsZSksInBhZGRpbmciIT09YyYmKGcrPV8uY3NzKGEsImJvcmRlciIrd2JbZl0rIldpZHRoIiwhMCxlKSkpO3JldHVybiBnfWZ1bmN0aW9uIEEoYSxiLGMpe3ZhciBkPSEwLGU9IndpZHRoIj09PWI/YS5vZmZzZXRXaWR0aDphLm9mZnNldEhlaWdodCxmPVJiKGEpLGc9ImJvcmRlci1ib3giPT09Xy5jc3MoYSwiYm94U2l6aW5nIiwhMSxmKTtpZigwPj1lfHxudWxsPT1lKXtpZihlPXYoYSxiLGYpLCgwPmV8fG51bGw9PWUpJiYoZT1hLnN0eWxlW2JdKSxRYi50ZXN0KGUpKXJldHVybiBlO2Q9ZyYmKFkuYm94U2l6aW5nUmVsaWFibGUoKXx8ZT09PWEuc3R5bGVbYl0pLGU9cGFyc2VGbG9hdChlKXx8MH1yZXR1cm4gZSt6KGEsYixjfHwoZz8iYm9yZGVyIjoiY29udGVudCIpLGQsZikrInB4In1mdW5jdGlvbiBCKGEsYil7Zm9yKHZhciBjLGQsZSxmPVtdLGc9MCxoPWEubGVuZ3RoO2g+ZztnKyspZD1hW2ddLGQuc3R5bGUmJihmW2ddPXJiLmdldChkLCJvbGRkaXNwbGF5IiksYz1kLnN0eWxlLmRpc3BsYXksYj8oZltnXXx8Im5vbmUiIT09Y3x8KGQuc3R5bGUuZGlzcGxheT0iIiksIiI9PT1kLnN0eWxlLmRpc3BsYXkmJnhiKGQpJiYoZltnXT1yYi5hY2Nlc3MoZCwib2xkZGlzcGxheSIsdShkLm5vZGVOYW1lKSkpKTooZT14YihkKSwibm9uZSI9PT1jJiZlfHxyYi5zZXQoZCwib2xkZGlzcGxheSIsZT9jOl8uY3NzKGQsImRpc3BsYXkiKSkpKTtmb3IoZz0wO2g+ZztnKyspZD1hW2ddLGQuc3R5bGUmJihiJiYibm9uZSIhPT1kLnN0eWxlLmRpc3BsYXkmJiIiIT09ZC5zdHlsZS5kaXNwbGF5fHwoZC5zdHlsZS5kaXNwbGF5PWI/ZltnXXx8IiI6Im5vbmUiKSk7cmV0dXJuIGF9ZnVuY3Rpb24gQyhhLGIsYyxkLGUpe3JldHVybiBuZXcgQy5wcm90b3R5cGUuaW5pdChhLGIsYyxkLGUpfWZ1bmN0aW9uIEQoKXtyZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpe1liPXZvaWQgMH0pLFliPV8ubm93KCl9ZnVuY3Rpb24gRShhLGIpe3ZhciBjLGQ9MCxlPXtoZWlnaHQ6YX07Zm9yKGI9Yj8xOjA7ND5kO2QrPTItYiljPXdiW2RdLGVbIm1hcmdpbiIrY109ZVsicGFkZGluZyIrY109YTtyZXR1cm4gYiYmKGUub3BhY2l0eT1lLndpZHRoPWEpLGV9ZnVuY3Rpb24gRihhLGIsYyl7Zm9yKHZhciBkLGU9KGNjW2JdfHxbXSkuY29uY2F0KGNjWyIqIl0pLGY9MCxnPWUubGVuZ3RoO2c+ZjtmKyspaWYoZD1lW2ZdLmNhbGwoYyxiLGEpKXJldHVybiBkfWZ1bmN0aW9uIEcoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGssbD10aGlzLG09e30sbj1hLnN0eWxlLG89YS5ub2RlVHlwZSYmeGIoYSkscD1yYi5nZXQoYSwiZnhzaG93Iik7Yy5xdWV1ZXx8KGg9Xy5fcXVldWVIb29rcyhhLCJmeCIpLG51bGw9PWgudW5xdWV1ZWQmJihoLnVucXVldWVkPTAsaT1oLmVtcHR5LmZpcmUsaC5lbXB0eS5maXJlPWZ1bmN0aW9uKCl7aC51bnF1ZXVlZHx8aSgpfSksaC51bnF1ZXVlZCsrLGwuYWx3YXlzKGZ1bmN0aW9uKCl7bC5hbHdheXMoZnVuY3Rpb24oKXtoLnVucXVldWVkLS0sXy5xdWV1ZShhLCJmeCIpLmxlbmd0aHx8aC5lbXB0eS5maXJlKCl9KX0pKSwxPT09YS5ub2RlVHlwZSYmKCJoZWlnaHQiaW4gYnx8IndpZHRoImluIGIpJiYoYy5vdmVyZmxvdz1bbi5vdmVyZmxvdyxuLm92ZXJmbG93WCxuLm92ZXJmbG93WV0saj1fLmNzcyhhLCJkaXNwbGF5Iiksaz0ibm9uZSI9PT1qP3JiLmdldChhLCJvbGRkaXNwbGF5Iil8fHUoYS5ub2RlTmFtZSk6aiwiaW5saW5lIj09PWsmJiJub25lIj09PV8uY3NzKGEsImZsb2F0IikmJihuLmRpc3BsYXk9ImlubGluZS1ibG9jayIpKSxjLm92ZXJmbG93JiYobi5vdmVyZmxvdz0iaGlkZGVuIixsLmFsd2F5cyhmdW5jdGlvbigpe24ub3ZlcmZsb3c9Yy5vdmVyZmxvd1swXSxuLm92ZXJmbG93WD1jLm92ZXJmbG93WzFdLG4ub3ZlcmZsb3dZPWMub3ZlcmZsb3dbMl19KSk7Zm9yKGQgaW4gYilpZihlPWJbZF0sJGIuZXhlYyhlKSl7aWYoZGVsZXRlIGJbZF0sZj1mfHwidG9nZ2xlIj09PWUsZT09PShvPyJoaWRlIjoic2hvdyIpKXtpZigic2hvdyIhPT1lfHwhcHx8dm9pZCAwPT09cFtkXSljb250aW51ZTtvPSEwfW1bZF09cCYmcFtkXXx8Xy5zdHlsZShhLGQpfWVsc2Ugaj12b2lkIDA7aWYoXy5pc0VtcHR5T2JqZWN0KG0pKSJpbmxpbmUiPT09KCJub25lIj09PWo/dShhLm5vZGVOYW1lKTpqKSYmKG4uZGlzcGxheT1qKTtlbHNle3A/ImhpZGRlbiJpbiBwJiYobz1wLmhpZGRlbik6cD1yYi5hY2Nlc3MoYSwiZnhzaG93Iix7fSksZiYmKHAuaGlkZGVuPSFvKSxvP18oYSkuc2hvdygpOmwuZG9uZShmdW5jdGlvbigpe18oYSkuaGlkZSgpfSksbC5kb25lKGZ1bmN0aW9uKCl7dmFyIGI7cmIucmVtb3ZlKGEsImZ4c2hvdyIpO2ZvcihiIGluIG0pXy5zdHlsZShhLGIsbVtiXSl9KTtmb3IoZCBpbiBtKWc9RihvP3BbZF06MCxkLGwpLGQgaW4gcHx8KHBbZF09Zy5zdGFydCxvJiYoZy5lbmQ9Zy5zdGFydCxnLnN0YXJ0PSJ3aWR0aCI9PT1kfHwiaGVpZ2h0Ij09PWQ/MTowKSl9fWZ1bmN0aW9uIEgoYSxiKXt2YXIgYyxkLGUsZixnO2ZvcihjIGluIGEpaWYoZD1fLmNhbWVsQ2FzZShjKSxlPWJbZF0sZj1hW2NdLF8uaXNBcnJheShmKSYmKGU9ZlsxXSxmPWFbY109ZlswXSksYyE9PWQmJihhW2RdPWYsZGVsZXRlIGFbY10pLGc9Xy5jc3NIb29rc1tkXSxnJiYiZXhwYW5kImluIGcpe2Y9Zy5leHBhbmQoZiksZGVsZXRlIGFbZF07Zm9yKGMgaW4gZiljIGluIGF8fChhW2NdPWZbY10sYltjXT1lKX1lbHNlIGJbZF09ZX1mdW5jdGlvbiBJKGEsYixjKXt2YXIgZCxlLGY9MCxnPWJjLmxlbmd0aCxoPV8uRGVmZXJyZWQoKS5hbHdheXMoZnVuY3Rpb24oKXtkZWxldGUgaS5lbGVtfSksaT1mdW5jdGlvbigpe2lmKGUpcmV0dXJuITE7Zm9yKHZhciBiPVlifHxEKCksYz1NYXRoLm1heCgwLGouc3RhcnRUaW1lK2ouZHVyYXRpb24tYiksZD1jL2ouZHVyYXRpb258fDAsZj0xLWQsZz0wLGk9ai50d2VlbnMubGVuZ3RoO2k+ZztnKyspai50d2VlbnNbZ10ucnVuKGYpO3JldHVybiBoLm5vdGlmeVdpdGgoYSxbaixmLGNdKSwxPmYmJmk/YzooaC5yZXNvbHZlV2l0aChhLFtqXSksITEpfSxqPWgucHJvbWlzZSh7ZWxlbTphLHByb3BzOl8uZXh0ZW5kKHt9LGIpLG9wdHM6Xy5leHRlbmQoITAse3NwZWNpYWxFYXNpbmc6e319LGMpLG9yaWdpbmFsUHJvcGVydGllczpiLG9yaWdpbmFsT3B0aW9uczpjLHN0YXJ0VGltZTpZYnx8RCgpLGR1cmF0aW9uOmMuZHVyYXRpb24sdHdlZW5zOltdLGNyZWF0ZVR3ZWVuOmZ1bmN0aW9uKGIsYyl7dmFyIGQ9Xy5Ud2VlbihhLGoub3B0cyxiLGMsai5vcHRzLnNwZWNpYWxFYXNpbmdbYl18fGoub3B0cy5lYXNpbmcpO3JldHVybiBqLnR3ZWVucy5wdXNoKGQpLGR9LHN0b3A6ZnVuY3Rpb24oYil7dmFyIGM9MCxkPWI/ai50d2VlbnMubGVuZ3RoOjA7aWYoZSlyZXR1cm4gdGhpcztmb3IoZT0hMDtkPmM7YysrKWoudHdlZW5zW2NdLnJ1bigxKTtyZXR1cm4gYj9oLnJlc29sdmVXaXRoKGEsW2osYl0pOmgucmVqZWN0V2l0aChhLFtqLGJdKSx0aGlzfX0pLGs9ai5wcm9wcztmb3IoSChrLGoub3B0cy5zcGVjaWFsRWFzaW5nKTtnPmY7ZisrKWlmKGQ9YmNbZl0uY2FsbChqLGEsayxqLm9wdHMpLGQpcmV0dXJuIGQ7cmV0dXJuIF8ubWFwKGssRixqKSxfLmlzRnVuY3Rpb24oai5vcHRzLnN0YXJ0KSYmai5vcHRzLnN0YXJ0LmNhbGwoYSxqKSxfLmZ4LnRpbWVyKF8uZXh0ZW5kKGkse2VsZW06YSxhbmltOmoscXVldWU6ai5vcHRzLnF1ZXVlfSkpLGoucHJvZ3Jlc3Moai5vcHRzLnByb2dyZXNzKS5kb25lKGoub3B0cy5kb25lLGoub3B0cy5jb21wbGV0ZSkuZmFpbChqLm9wdHMuZmFpbCkuYWx3YXlzKGoub3B0cy5hbHdheXMpfWZ1bmN0aW9uIEooYSl7cmV0dXJuIGZ1bmN0aW9uKGIsYyl7InN0cmluZyIhPXR5cGVvZiBiJiYoYz1iLGI9IioiKTt2YXIgZCxlPTAsZj1iLnRvTG93ZXJDYXNlKCkubWF0Y2gobmIpfHxbXTtpZihfLmlzRnVuY3Rpb24oYykpZm9yKDtkPWZbZSsrXTspIisiPT09ZFswXT8oZD1kLnNsaWNlKDEpfHwiKiIsKGFbZF09YVtkXXx8W10pLnVuc2hpZnQoYykpOihhW2RdPWFbZF18fFtdKS5wdXNoKGMpfX1mdW5jdGlvbiBLKGEsYixjLGQpe2Z1bmN0aW9uIGUoaCl7dmFyIGk7cmV0dXJuIGZbaF09ITAsXy5lYWNoKGFbaF18fFtdLGZ1bmN0aW9uKGEsaCl7dmFyIGo9aChiLGMsZCk7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBqfHxnfHxmW2pdP2c/IShpPWopOnZvaWQgMDooYi5kYXRhVHlwZXMudW5zaGlmdChqKSxlKGopLCExKX0pLGl9dmFyIGY9e30sZz1hPT09dGM7cmV0dXJuIGUoYi5kYXRhVHlwZXNbMF0pfHwhZlsiKiJdJiZlKCIqIil9ZnVuY3Rpb24gTChhLGIpe3ZhciBjLGQsZT1fLmFqYXhTZXR0aW5ncy5mbGF0T3B0aW9uc3x8e307Zm9yKGMgaW4gYil2b2lkIDAhPT1iW2NdJiYoKGVbY10/YTpkfHwoZD17fSkpW2NdPWJbY10pO3JldHVybiBkJiZfLmV4dGVuZCghMCxhLGQpLGF9ZnVuY3Rpb24gTShhLGIsYyl7Zm9yKHZhciBkLGUsZixnLGg9YS5jb250ZW50cyxpPWEuZGF0YVR5cGVzOyIqIj09PWlbMF07KWkuc2hpZnQoKSx2b2lkIDA9PT1kJiYoZD1hLm1pbWVUeXBlfHxiLmdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LVR5cGUiKSk7aWYoZClmb3IoZSBpbiBoKWlmKGhbZV0mJmhbZV0udGVzdChkKSl7aS51bnNoaWZ0KGUpO2JyZWFrfWlmKGlbMF1pbiBjKWY9aVswXTtlbHNle2ZvcihlIGluIGMpe2lmKCFpWzBdfHxhLmNvbnZlcnRlcnNbZSsiICIraVswXV0pe2Y9ZTticmVha31nfHwoZz1lKX1mPWZ8fGd9cmV0dXJuIGY/KGYhPT1pWzBdJiZpLnVuc2hpZnQoZiksY1tmXSk6dm9pZCAwfWZ1bmN0aW9uIE4oYSxiLGMsZCl7dmFyIGUsZixnLGgsaSxqPXt9LGs9YS5kYXRhVHlwZXMuc2xpY2UoKTtpZihrWzFdKWZvcihnIGluIGEuY29udmVydGVycylqW2cudG9Mb3dlckNhc2UoKV09YS5jb252ZXJ0ZXJzW2ddO2ZvcihmPWsuc2hpZnQoKTtmOylpZihhLnJlc3BvbnNlRmllbGRzW2ZdJiYoY1thLnJlc3BvbnNlRmllbGRzW2ZdXT1iKSwhaSYmZCYmYS5kYXRhRmlsdGVyJiYoYj1hLmRhdGFGaWx0ZXIoYixhLmRhdGFUeXBlKSksaT1mLGY9ay5zaGlmdCgpLGYpaWYoIioiPT09ZilmPWk7ZWxzZSBpZigiKiIhPT1pJiZpIT09Zil7aWYoZz1qW2krIiAiK2ZdfHxqWyIqICIrZl0sIWcpZm9yKGUgaW4gailpZihoPWUuc3BsaXQoIiAiKSxoWzFdPT09ZiYmKGc9altpKyIgIitoWzBdXXx8alsiKiAiK2hbMF1dLGcpKXtnPT09ITA/Zz1qW2VdOmpbZV0hPT0hMCYmKGY9aFswXSxrLnVuc2hpZnQoaFsxXSkpO2JyZWFrfWlmKGchPT0hMClpZihnJiZhWyJ0aHJvd3MiXSliPWcoYik7ZWxzZSB0cnl7Yj1nKGIpfWNhdGNoKGwpe3JldHVybntzdGF0ZToicGFyc2VyZXJyb3IiLGVycm9yOmc/bDoiTm8gY29udmVyc2lvbiBmcm9tICIraSsiIHRvICIrZn19fXJldHVybntzdGF0ZToic3VjY2VzcyIsZGF0YTpifX1mdW5jdGlvbiBPKGEsYixjLGQpe3ZhciBlO2lmKF8uaXNBcnJheShiKSlfLmVhY2goYixmdW5jdGlvbihiLGUpe2N8fHljLnRlc3QoYSk/ZChhLGUpOk8oYSsiWyIrKCJvYmplY3QiPT10eXBlb2YgZT9iOiIiKSsiXSIsZSxjLGQpfSk7ZWxzZSBpZihjfHwib2JqZWN0IiE9PV8udHlwZShiKSlkKGEsYik7ZWxzZSBmb3IoZSBpbiBiKU8oYSsiWyIrZSsiXSIsYltlXSxjLGQpfWZ1bmN0aW9uIFAoYSl7cmV0dXJuIF8uaXNXaW5kb3coYSk/YTo5PT09YS5ub2RlVHlwZSYmYS5kZWZhdWx0Vmlld312YXIgUT1bXSxSPVEuc2xpY2UsUz1RLmNvbmNhdCxUPVEucHVzaCxVPVEuaW5kZXhPZixWPXt9LFc9Vi50b1N0cmluZyxYPVYuaGFzT3duUHJvcGVydHksWT17fSxaPWEuZG9jdW1lbnQsJD0iMi4xLjMiLF89ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IF8uZm4uaW5pdChhLGIpfSxhYj0vXltcc1x1RkVGRlx4QTBdK3xbXHNcdUZFRkZceEEwXSskL2csYmI9L14tbXMtLyxjYj0vLShbXGRhLXpdKS9naSxkYj1mdW5jdGlvbihhLGIpe3JldHVybiBiLnRvVXBwZXJDYXNlKCl9O18uZm49Xy5wcm90b3R5cGU9e2pxdWVyeTokLGNvbnN0cnVjdG9yOl8sc2VsZWN0b3I6IiIsbGVuZ3RoOjAsdG9BcnJheTpmdW5jdGlvbigpe3JldHVybiBSLmNhbGwodGhpcyl9LGdldDpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbCE9YT8wPmE/dGhpc1thK3RoaXMubGVuZ3RoXTp0aGlzW2FdOlIuY2FsbCh0aGlzKX0scHVzaFN0YWNrOmZ1bmN0aW9uKGEpe3ZhciBiPV8ubWVyZ2UodGhpcy5jb25zdHJ1Y3RvcigpLGEpO3JldHVybiBiLnByZXZPYmplY3Q9dGhpcyxiLmNvbnRleHQ9dGhpcy5jb250ZXh0LGJ9LGVhY2g6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gXy5lYWNoKHRoaXMsYSxiKX0sbWFwOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnB1c2hTdGFjayhfLm1hcCh0aGlzLGZ1bmN0aW9uKGIsYyl7cmV0dXJuIGEuY2FsbChiLGMsYil9KSl9LHNsaWNlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKFIuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0sZmlyc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgwKX0sbGFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKC0xKX0sZXE6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5sZW5ndGgsYz0rYSsoMD5hP2I6MCk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGM+PTAmJmI+Yz9bdGhpc1tjXV06W10pfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmV2T2JqZWN0fHx0aGlzLmNvbnN0cnVjdG9yKG51bGwpfSxwdXNoOlQsc29ydDpRLnNvcnQsc3BsaWNlOlEuc3BsaWNlfSxfLmV4dGVuZD1fLmZuLmV4dGVuZD1mdW5jdGlvbigpe3ZhciBhLGIsYyxkLGUsZixnPWFyZ3VtZW50c1swXXx8e30saD0xLGk9YXJndW1lbnRzLmxlbmd0aCxqPSExO2ZvcigiYm9vbGVhbiI9PXR5cGVvZiBnJiYoaj1nLGc9YXJndW1lbnRzW2hdfHx7fSxoKyspLCJvYmplY3QiPT10eXBlb2YgZ3x8Xy5pc0Z1bmN0aW9uKGcpfHwoZz17fSksaD09PWkmJihnPXRoaXMsaC0tKTtpPmg7aCsrKWlmKG51bGwhPShhPWFyZ3VtZW50c1toXSkpZm9yKGIgaW4gYSljPWdbYl0sZD1hW2JdLGchPT1kJiYoaiYmZCYmKF8uaXNQbGFpbk9iamVjdChkKXx8KGU9Xy5pc0FycmF5KGQpKSk/KGU/KGU9ITEsZj1jJiZfLmlzQXJyYXkoYyk/YzpbXSk6Zj1jJiZfLmlzUGxhaW5PYmplY3QoYyk/Yzp7fSxnW2JdPV8uZXh0ZW5kKGosZixkKSk6dm9pZCAwIT09ZCYmKGdbYl09ZCkpO3JldHVybiBnfSxfLmV4dGVuZCh7ZXhwYW5kbzoialF1ZXJ5IisoJCtNYXRoLnJhbmRvbSgpKS5yZXBsYWNlKC9cRC9nLCIiKSxpc1JlYWR5OiEwLGVycm9yOmZ1bmN0aW9uKGEpe3Rocm93IG5ldyBFcnJvcihhKX0sbm9vcDpmdW5jdGlvbigpe30saXNGdW5jdGlvbjpmdW5jdGlvbihhKXtyZXR1cm4iZnVuY3Rpb24iPT09Xy50eXBlKGEpfSxpc0FycmF5OkFycmF5LmlzQXJyYXksaXNXaW5kb3c6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWEmJmE9PT1hLndpbmRvd30saXNOdW1lcmljOmZ1bmN0aW9uKGEpe3JldHVybiFfLmlzQXJyYXkoYSkmJmEtcGFyc2VGbG9hdChhKSsxPj0wfSxpc1BsYWluT2JqZWN0OmZ1bmN0aW9uKGEpe3JldHVybiJvYmplY3QiIT09Xy50eXBlKGEpfHxhLm5vZGVUeXBlfHxfLmlzV2luZG93KGEpPyExOmEuY29uc3RydWN0b3ImJiFYLmNhbGwoYS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsImlzUHJvdG90eXBlT2YiKT8hMTohMH0saXNFbXB0eU9iamVjdDpmdW5jdGlvbihhKXt2YXIgYjtmb3IoYiBpbiBhKXJldHVybiExO3JldHVybiEwfSx0eXBlOmZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1hP2ErIiI6Im9iamVjdCI9PXR5cGVvZiBhfHwiZnVuY3Rpb24iPT10eXBlb2YgYT9WW1cuY2FsbChhKV18fCJvYmplY3QiOnR5cGVvZiBhfSxnbG9iYWxFdmFsOmZ1bmN0aW9uKGEpe3ZhciBiLGM9ZXZhbDthPV8udHJpbShhKSxhJiYoMT09PWEuaW5kZXhPZigidXNlIHN0cmljdCIpPyhiPVouY3JlYXRlRWxlbWVudCgic2NyaXB0IiksYi50ZXh0PWEsWi5oZWFkLmFwcGVuZENoaWxkKGIpLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYikpOmMoYSkpfSxjYW1lbENhc2U6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZShiYiwibXMtIikucmVwbGFjZShjYixkYil9LG5vZGVOYW1lOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGEubm9kZU5hbWUmJmEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWIudG9Mb3dlckNhc2UoKX0sZWFjaDpmdW5jdGlvbihhLGIsZCl7dmFyIGUsZj0wLGc9YS5sZW5ndGgsaD1jKGEpO2lmKGQpe2lmKGgpZm9yKDtnPmYmJihlPWIuYXBwbHkoYVtmXSxkKSxlIT09ITEpO2YrKyk7ZWxzZSBmb3IoZiBpbiBhKWlmKGU9Yi5hcHBseShhW2ZdLGQpLGU9PT0hMSlicmVha31lbHNlIGlmKGgpZm9yKDtnPmYmJihlPWIuY2FsbChhW2ZdLGYsYVtmXSksZSE9PSExKTtmKyspO2Vsc2UgZm9yKGYgaW4gYSlpZihlPWIuY2FsbChhW2ZdLGYsYVtmXSksZT09PSExKWJyZWFrO3JldHVybiBhfSx0cmltOmZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1hPyIiOihhKyIiKS5yZXBsYWNlKGFiLCIiKX0sbWFrZUFycmF5OmZ1bmN0aW9uKGEsYil7dmFyIGQ9Ynx8W107cmV0dXJuIG51bGwhPWEmJihjKE9iamVjdChhKSk/Xy5tZXJnZShkLCJzdHJpbmciPT10eXBlb2YgYT9bYV06YSk6VC5jYWxsKGQsYSkpLGR9LGluQXJyYXk6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBudWxsPT1iPy0xOlUuY2FsbChiLGEsYyl9LG1lcmdlOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPStiLmxlbmd0aCxkPTAsZT1hLmxlbmd0aDtjPmQ7ZCsrKWFbZSsrXT1iW2RdO3JldHVybiBhLmxlbmd0aD1lLGF9LGdyZXA6ZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZCxlPVtdLGY9MCxnPWEubGVuZ3RoLGg9IWM7Zz5mO2YrKylkPSFiKGFbZl0sZiksZCE9PWgmJmUucHVzaChhW2ZdKTtyZXR1cm4gZX0sbWFwOmZ1bmN0aW9uKGEsYixkKXt2YXIgZSxmPTAsZz1hLmxlbmd0aCxoPWMoYSksaT1bXTtpZihoKWZvcig7Zz5mO2YrKyllPWIoYVtmXSxmLGQpLG51bGwhPWUmJmkucHVzaChlKTtlbHNlIGZvcihmIGluIGEpZT1iKGFbZl0sZixkKSxudWxsIT1lJiZpLnB1c2goZSk7cmV0dXJuIFMuYXBwbHkoW10saSl9LGd1aWQ6MSxwcm94eTpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGImJihjPWFbYl0sYj1hLGE9YyksXy5pc0Z1bmN0aW9uKGEpPyhkPVIuY2FsbChhcmd1bWVudHMsMiksZT1mdW5jdGlvbigpe3JldHVybiBhLmFwcGx5KGJ8fHRoaXMsZC5jb25jYXQoUi5jYWxsKGFyZ3VtZW50cykpKX0sZS5ndWlkPWEuZ3VpZD1hLmd1aWR8fF8uZ3VpZCsrLGUpOnZvaWQgMH0sbm93OkRhdGUubm93LHN1cHBvcnQ6WX0pLF8uZWFjaCgiQm9vbGVhbiBOdW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCBFcnJvciIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe1ZbIltvYmplY3QgIitiKyJdIl09Yi50b0xvd2VyQ2FzZSgpfSk7dmFyIGViPWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYSxiLGMsZCl7dmFyIGUsZixnLGgsaSxqLGwsbixvLHA7aWYoKGI/Yi5vd25lckRvY3VtZW50fHxiOk8pIT09RyYmRihiKSxiPWJ8fEcsYz1jfHxbXSxoPWIubm9kZVR5cGUsInN0cmluZyIhPXR5cGVvZiBhfHwhYXx8MSE9PWgmJjkhPT1oJiYxMSE9PWgpcmV0dXJuIGM7aWYoIWQmJkkpe2lmKDExIT09aCYmKGU9c2IuZXhlYyhhKSkpaWYoZz1lWzFdKXtpZig5PT09aCl7aWYoZj1iLmdldEVsZW1lbnRCeUlkKGcpLCFmfHwhZi5wYXJlbnROb2RlKXJldHVybiBjO2lmKGYuaWQ9PT1nKXJldHVybiBjLnB1c2goZiksY31lbHNlIGlmKGIub3duZXJEb2N1bWVudCYmKGY9Yi5vd25lckRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGcpKSYmTShiLGYpJiZmLmlkPT09ZylyZXR1cm4gYy5wdXNoKGYpLGN9ZWxzZXtpZihlWzJdKXJldHVybiAkLmFwcGx5KGMsYi5nZXRFbGVtZW50c0J5VGFnTmFtZShhKSksYztpZigoZz1lWzNdKSYmdi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKXJldHVybiAkLmFwcGx5KGMsYi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGcpKSxjfWlmKHYucXNhJiYoIUp8fCFKLnRlc3QoYSkpKXtpZihuPWw9TixvPWIscD0xIT09aCYmYSwxPT09aCYmIm9iamVjdCIhPT1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpe2ZvcihqPXooYSksKGw9Yi5nZXRBdHRyaWJ1dGUoImlkIikpP249bC5yZXBsYWNlKHViLCJcXCQmIik6Yi5zZXRBdHRyaWJ1dGUoImlkIixuKSxuPSJbaWQ9JyIrbisiJ10gIixpPWoubGVuZ3RoO2ktLTspaltpXT1uK20oaltpXSk7bz10Yi50ZXN0KGEpJiZrKGIucGFyZW50Tm9kZSl8fGIscD1qLmpvaW4oIiwiKX1pZihwKXRyeXtyZXR1cm4gJC5hcHBseShjLG8ucXVlcnlTZWxlY3RvckFsbChwKSksY31jYXRjaChxKXt9ZmluYWxseXtsfHxiLnJlbW92ZUF0dHJpYnV0ZSgiaWQiKX19fXJldHVybiBCKGEucmVwbGFjZShpYiwiJDEiKSxiLGMsZCl9ZnVuY3Rpb24gYygpe2Z1bmN0aW9uIGEoYyxkKXtyZXR1cm4gYi5wdXNoKGMrIiAiKT53LmNhY2hlTGVuZ3RoJiZkZWxldGUgYVtiLnNoaWZ0KCldLGFbYysiICJdPWR9dmFyIGI9W107cmV0dXJuIGF9ZnVuY3Rpb24gZChhKXtyZXR1cm4gYVtOXT0hMCxhfWZ1bmN0aW9uIGUoYSl7dmFyIGI9Ry5jcmVhdGVFbGVtZW50KCJkaXYiKTt0cnl7cmV0dXJuISFhKGIpfWNhdGNoKGMpe3JldHVybiExfWZpbmFsbHl7Yi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYiksYj1udWxsfX1mdW5jdGlvbiBmKGEsYil7Zm9yKHZhciBjPWEuc3BsaXQoInwiKSxkPWEubGVuZ3RoO2QtLTspdy5hdHRySGFuZGxlW2NbZF1dPWJ9ZnVuY3Rpb24gZyhhLGIpe3ZhciBjPWImJmEsZD1jJiYxPT09YS5ub2RlVHlwZSYmMT09PWIubm9kZVR5cGUmJih+Yi5zb3VyY2VJbmRleHx8ViktKH5hLnNvdXJjZUluZGV4fHxWKTtpZihkKXJldHVybiBkO2lmKGMpZm9yKDtjPWMubmV4dFNpYmxpbmc7KWlmKGM9PT1iKXJldHVybi0xO3JldHVybiBhPzE6LTF9ZnVuY3Rpb24gaChhKXtyZXR1cm4gZnVuY3Rpb24oYil7dmFyIGM9Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT1jJiZiLnR5cGU9PT1hfX1mdW5jdGlvbiBpKGEpe3JldHVybiBmdW5jdGlvbihiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuKCJpbnB1dCI9PT1jfHwiYnV0dG9uIj09PWMpJiZiLnR5cGU9PT1hfX1mdW5jdGlvbiBqKGEpe3JldHVybiBkKGZ1bmN0aW9uKGIpe3JldHVybiBiPStiLGQoZnVuY3Rpb24oYyxkKXtmb3IodmFyIGUsZj1hKFtdLGMubGVuZ3RoLGIpLGc9Zi5sZW5ndGg7Zy0tOyljW2U9ZltnXV0mJihjW2VdPSEoZFtlXT1jW2VdKSl9KX0pfWZ1bmN0aW9uIGsoYSl7cmV0dXJuIGEmJiJ1bmRlZmluZWQiIT10eXBlb2YgYS5nZXRFbGVtZW50c0J5VGFnTmFtZSYmYX1mdW5jdGlvbiBsKCl7fWZ1bmN0aW9uIG0oYSl7Zm9yKHZhciBiPTAsYz1hLmxlbmd0aCxkPSIiO2M+YjtiKyspZCs9YVtiXS52YWx1ZTtyZXR1cm4gZH1mdW5jdGlvbiBuKGEsYixjKXt2YXIgZD1iLmRpcixlPWMmJiJwYXJlbnROb2RlIj09PWQsZj1RKys7cmV0dXJuIGIuZmlyc3Q/ZnVuY3Rpb24oYixjLGYpe2Zvcig7Yj1iW2RdOylpZigxPT09Yi5ub2RlVHlwZXx8ZSlyZXR1cm4gYShiLGMsZil9OmZ1bmN0aW9uKGIsYyxnKXt2YXIgaCxpLGo9W1AsZl07aWYoZyl7Zm9yKDtiPWJbZF07KWlmKCgxPT09Yi5ub2RlVHlwZXx8ZSkmJmEoYixjLGcpKXJldHVybiEwfWVsc2UgZm9yKDtiPWJbZF07KWlmKDE9PT1iLm5vZGVUeXBlfHxlKXtpZihpPWJbTl18fChiW05dPXt9KSwoaD1pW2RdKSYmaFswXT09PVAmJmhbMV09PT1mKXJldHVybiBqWzJdPWhbMl07aWYoaVtkXT1qLGpbMl09YShiLGMsZykpcmV0dXJuITB9fX1mdW5jdGlvbiBvKGEpe3JldHVybiBhLmxlbmd0aD4xP2Z1bmN0aW9uKGIsYyxkKXtmb3IodmFyIGU9YS5sZW5ndGg7ZS0tOylpZighYVtlXShiLGMsZCkpcmV0dXJuITE7cmV0dXJuITB9OmFbMF19ZnVuY3Rpb24gcChhLGMsZCl7Zm9yKHZhciBlPTAsZj1jLmxlbmd0aDtmPmU7ZSsrKWIoYSxjW2VdLGQpO3JldHVybiBkfWZ1bmN0aW9uIHEoYSxiLGMsZCxlKXtmb3IodmFyIGYsZz1bXSxoPTAsaT1hLmxlbmd0aCxqPW51bGwhPWI7aT5oO2grKykoZj1hW2hdKSYmKCFjfHxjKGYsZCxlKSkmJihnLnB1c2goZiksaiYmYi5wdXNoKGgpKTtyZXR1cm4gZ31mdW5jdGlvbiByKGEsYixjLGUsZixnKXtyZXR1cm4gZSYmIWVbTl0mJihlPXIoZSkpLGYmJiFmW05dJiYoZj1yKGYsZykpLGQoZnVuY3Rpb24oZCxnLGgsaSl7dmFyIGosayxsLG09W10sbj1bXSxvPWcubGVuZ3RoLHI9ZHx8cChifHwiKiIsaC5ub2RlVHlwZT9baF06aCxbXSkscz0hYXx8IWQmJmI/cjpxKHIsbSxhLGgsaSksdD1jP2Z8fChkP2E6b3x8ZSk/W106ZzpzO2lmKGMmJmMocyx0LGgsaSksZSlmb3Ioaj1xKHQsbiksZShqLFtdLGgsaSksaz1qLmxlbmd0aDtrLS07KShsPWpba10pJiYodFtuW2tdXT0hKHNbbltrXV09bCkpO2lmKGQpe2lmKGZ8fGEpe2lmKGYpe2ZvcihqPVtdLGs9dC5sZW5ndGg7ay0tOykobD10W2tdKSYmai5wdXNoKHNba109bCk7ZihudWxsLHQ9W10saixpKX1mb3Ioaz10Lmxlbmd0aDtrLS07KShsPXRba10pJiYoaj1mP2FiKGQsbCk6bVtrXSk+LTEmJihkW2pdPSEoZ1tqXT1sKSl9fWVsc2UgdD1xKHQ9PT1nP3Quc3BsaWNlKG8sdC5sZW5ndGgpOnQpLGY/ZihudWxsLGcsdCxpKTokLmFwcGx5KGcsdCl9KX1mdW5jdGlvbiBzKGEpe2Zvcih2YXIgYixjLGQsZT1hLmxlbmd0aCxmPXcucmVsYXRpdmVbYVswXS50eXBlXSxnPWZ8fHcucmVsYXRpdmVbIiAiXSxoPWY/MTowLGk9bihmdW5jdGlvbihhKXtyZXR1cm4gYT09PWJ9LGcsITApLGo9bihmdW5jdGlvbihhKXtyZXR1cm4gYWIoYixhKT4tMX0sZywhMCksaz1bZnVuY3Rpb24oYSxjLGQpe3ZhciBlPSFmJiYoZHx8YyE9PUMpfHwoKGI9Yykubm9kZVR5cGU/aShhLGMsZCk6aihhLGMsZCkpO3JldHVybiBiPW51bGwsZX1dO2U+aDtoKyspaWYoYz13LnJlbGF0aXZlW2FbaF0udHlwZV0paz1bbihvKGspLGMpXTtlbHNle2lmKGM9dy5maWx0ZXJbYVtoXS50eXBlXS5hcHBseShudWxsLGFbaF0ubWF0Y2hlcyksY1tOXSl7Zm9yKGQ9KytoO2U+ZCYmIXcucmVsYXRpdmVbYVtkXS50eXBlXTtkKyspO3JldHVybiByKGg+MSYmbyhrKSxoPjEmJm0oYS5zbGljZSgwLGgtMSkuY29uY2F0KHt2YWx1ZToiICI9PT1hW2gtMl0udHlwZT8iKiI6IiJ9KSkucmVwbGFjZShpYiwiJDEiKSxjLGQ+aCYmcyhhLnNsaWNlKGgsZCkpLGU+ZCYmcyhhPWEuc2xpY2UoZCkpLGU+ZCYmbShhKSl9ay5wdXNoKGMpfXJldHVybiBvKGspfWZ1bmN0aW9uIHQoYSxjKXt2YXIgZT1jLmxlbmd0aD4wLGY9YS5sZW5ndGg+MCxnPWZ1bmN0aW9uKGQsZyxoLGksail7dmFyIGssbCxtLG49MCxvPSIwIixwPWQmJltdLHI9W10scz1DLHQ9ZHx8ZiYmdy5maW5kLlRBRygiKiIsaiksdT1QKz1udWxsPT1zPzE6TWF0aC5yYW5kb20oKXx8LjEsdj10Lmxlbmd0aDtmb3IoaiYmKEM9ZyE9PUcmJmcpO28hPT12JiZudWxsIT0oaz10W29dKTtvKyspe2lmKGYmJmspe2ZvcihsPTA7bT1hW2wrK107KWlmKG0oayxnLGgpKXtpLnB1c2goayk7YnJlYWt9aiYmKFA9dSl9ZSYmKChrPSFtJiZrKSYmbi0tLGQmJnAucHVzaChrKSl9aWYobis9byxlJiZvIT09bil7Zm9yKGw9MDttPWNbbCsrXTspbShwLHIsZyxoKTtpZihkKXtpZihuPjApZm9yKDtvLS07KXBbb118fHJbb118fChyW29dPVkuY2FsbChpKSk7cj1xKHIpfSQuYXBwbHkoaSxyKSxqJiYhZCYmci5sZW5ndGg+MCYmbitjLmxlbmd0aD4xJiZiLnVuaXF1ZVNvcnQoaSl9cmV0dXJuIGomJihQPXUsQz1zKSxwfTtyZXR1cm4gZT9kKGcpOmd9dmFyIHUsdix3LHgseSx6LEEsQixDLEQsRSxGLEcsSCxJLEosSyxMLE0sTj0ic2l6emxlIisxKm5ldyBEYXRlLE89YS5kb2N1bWVudCxQPTAsUT0wLFI9YygpLFM9YygpLFQ9YygpLFU9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT09PWImJihFPSEwKSwwfSxWPTE8PDMxLFc9e30uaGFzT3duUHJvcGVydHksWD1bXSxZPVgucG9wLFo9WC5wdXNoLCQ9WC5wdXNoLF89WC5zbGljZSxhYj1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0wLGQ9YS5sZW5ndGg7ZD5jO2MrKylpZihhW2NdPT09YilyZXR1cm4gYztyZXR1cm4tMX0sYmI9ImNoZWNrZWR8c2VsZWN0ZWR8YXN5bmN8YXV0b2ZvY3VzfGF1dG9wbGF5fGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxpc21hcHxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkIixjYj0iW1xceDIwXFx0XFxyXFxuXFxmXSIsZGI9Iig/OlxcXFwufFtcXHctXXxbXlxceDAwLVxceGEwXSkrIixlYj1kYi5yZXBsYWNlKCJ3IiwidyMiKSxmYj0iXFxbIitjYisiKigiK2RiKyIpKD86IitjYisiKihbKl4kfCF+XT89KSIrY2IrIiooPzonKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcInwoIitlYisiKSl8KSIrY2IrIipcXF0iLGdiPSI6KCIrZGIrIikoPzpcXCgoKCcoKD86XFxcXC58W15cXFxcJ10pKiknfFwiKCg/OlxcXFwufFteXFxcXFwiXSkqKVwiKXwoKD86XFxcXC58W15cXFxcKClbXFxdXXwiK2ZiKyIpKil8LiopXFwpfCkiLGhiPW5ldyBSZWdFeHAoY2IrIisiLCJnIiksaWI9bmV3IFJlZ0V4cCgiXiIrY2IrIit8KCg/Ol58W15cXFxcXSkoPzpcXFxcLikqKSIrY2IrIiskIiwiZyIpLGpiPW5ldyBSZWdFeHAoIl4iK2NiKyIqLCIrY2IrIioiKSxrYj1uZXcgUmVnRXhwKCJeIitjYisiKihbPit+XXwiK2NiKyIpIitjYisiKiIpLGxiPW5ldyBSZWdFeHAoIj0iK2NiKyIqKFteXFxdJ1wiXSo/KSIrY2IrIipcXF0iLCJnIiksbWI9bmV3IFJlZ0V4cChnYiksbmI9bmV3IFJlZ0V4cCgiXiIrZWIrIiQiKSxvYj17SUQ6bmV3IFJlZ0V4cCgiXiMoIitkYisiKSIpLENMQVNTOm5ldyBSZWdFeHAoIl5cXC4oIitkYisiKSIpLFRBRzpuZXcgUmVnRXhwKCJeKCIrZGIucmVwbGFjZSgidyIsIncqIikrIikiKSxBVFRSOm5ldyBSZWdFeHAoIl4iK2ZiKSxQU0VVRE86bmV3IFJlZ0V4cCgiXiIrZ2IpLENISUxEOm5ldyBSZWdFeHAoIl46KG9ubHl8Zmlyc3R8bGFzdHxudGh8bnRoLWxhc3QpLShjaGlsZHxvZi10eXBlKSg/OlxcKCIrY2IrIiooZXZlbnxvZGR8KChbKy1dfCkoXFxkKilufCkiK2NiKyIqKD86KFsrLV18KSIrY2IrIiooXFxkKyl8KSkiK2NiKyIqXFwpfCkiLCJpIiksYm9vbDpuZXcgUmVnRXhwKCJeKD86IitiYisiKSQiLCJpIiksbmVlZHNDb250ZXh0Om5ldyBSZWdFeHAoIl4iK2NiKyIqWz4rfl18OihldmVufG9kZHxlcXxndHxsdHxudGh8Zmlyc3R8bGFzdCkoPzpcXCgiK2NiKyIqKCg/Oi1cXGQpP1xcZCopIitjYisiKlxcKXwpKD89W14tXXwkKSIsImkiKX0scGI9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSxxYj0vXmhcZCQvaSxyYj0vXltee10rXHtccypcW25hdGl2ZSBcdy8sc2I9L14oPzojKFtcdy1dKyl8KFx3Kyl8XC4oW1x3LV0rKSkkLyx0Yj0vWyt+XS8sdWI9Lyd8XFwvZyx2Yj1uZXcgUmVnRXhwKCJcXFxcKFtcXGRhLWZdezEsNn0iK2NiKyI/fCgiK2NiKyIpfC4pIiwiaWciKSx3Yj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9IjB4IitiLTY1NTM2O3JldHVybiBkIT09ZHx8Yz9iOjA+ZD9TdHJpbmcuZnJvbUNoYXJDb2RlKGQrNjU1MzYpOlN0cmluZy5mcm9tQ2hhckNvZGUoZD4+MTB8NTUyOTYsMTAyMyZkfDU2MzIwKX0seGI9ZnVuY3Rpb24oKXtGKCl9O3RyeXskLmFwcGx5KFg9Xy5jYWxsKE8uY2hpbGROb2RlcyksTy5jaGlsZE5vZGVzKSxYW08uY2hpbGROb2Rlcy5sZW5ndGhdLm5vZGVUeXBlfWNhdGNoKHliKXskPXthcHBseTpYLmxlbmd0aD9mdW5jdGlvbihhLGIpe1ouYXBwbHkoYSxfLmNhbGwoYikpfTpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1hLmxlbmd0aCxkPTA7YVtjKytdPWJbZCsrXTspO2EubGVuZ3RoPWMtMX19fXY9Yi5zdXBwb3J0PXt9LHk9Yi5pc1hNTD1mdW5jdGlvbihhKXt2YXIgYj1hJiYoYS5vd25lckRvY3VtZW50fHxhKS5kb2N1bWVudEVsZW1lbnQ7cmV0dXJuIGI/IkhUTUwiIT09Yi5ub2RlTmFtZTohMX0sRj1iLnNldERvY3VtZW50PWZ1bmN0aW9uKGEpe3ZhciBiLGMsZD1hP2Eub3duZXJEb2N1bWVudHx8YTpPO3JldHVybiBkIT09RyYmOT09PWQubm9kZVR5cGUmJmQuZG9jdW1lbnRFbGVtZW50PyhHPWQsSD1kLmRvY3VtZW50RWxlbWVudCxjPWQuZGVmYXVsdFZpZXcsYyYmYyE9PWMudG9wJiYoYy5hZGRFdmVudExpc3RlbmVyP2MuYWRkRXZlbnRMaXN0ZW5lcigidW5sb2FkIix4YiwhMSk6Yy5hdHRhY2hFdmVudCYmYy5hdHRhY2hFdmVudCgib251bmxvYWQiLHhiKSksST0heShkKSx2LmF0dHJpYnV0ZXM9ZShmdW5jdGlvbihhKXtyZXR1cm4gYS5jbGFzc05hbWU9ImkiLCFhLmdldEF0dHJpYnV0ZSgiY2xhc3NOYW1lIil9KSx2LmdldEVsZW1lbnRzQnlUYWdOYW1lPWUoZnVuY3Rpb24oYSl7cmV0dXJuIGEuYXBwZW5kQ2hpbGQoZC5jcmVhdGVDb21tZW50KCIiKSksIWEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKS5sZW5ndGh9KSx2LmdldEVsZW1lbnRzQnlDbGFzc05hbWU9cmIudGVzdChkLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpLHYuZ2V0QnlJZD1lKGZ1bmN0aW9uKGEpe3JldHVybiBILmFwcGVuZENoaWxkKGEpLmlkPU4sIWQuZ2V0RWxlbWVudHNCeU5hbWV8fCFkLmdldEVsZW1lbnRzQnlOYW1lKE4pLmxlbmd0aH0pLHYuZ2V0QnlJZD8ody5maW5kLklEPWZ1bmN0aW9uKGEsYil7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBiLmdldEVsZW1lbnRCeUlkJiZJKXt2YXIgYz1iLmdldEVsZW1lbnRCeUlkKGEpO3JldHVybiBjJiZjLnBhcmVudE5vZGU/W2NdOltdfX0sdy5maWx0ZXIuSUQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKHZiLHdiKTtyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuIGEuZ2V0QXR0cmlidXRlKCJpZCIpPT09Yn19KTooZGVsZXRlIHcuZmluZC5JRCx3LmZpbHRlci5JRD1mdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2UodmIsd2IpO3JldHVybiBmdW5jdGlvbihhKXt2YXIgYz0idW5kZWZpbmVkIiE9dHlwZW9mIGEuZ2V0QXR0cmlidXRlTm9kZSYmYS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpO3JldHVybiBjJiZjLnZhbHVlPT09Yn19KSx3LmZpbmQuVEFHPXYuZ2V0RWxlbWVudHNCeVRhZ05hbWU/ZnVuY3Rpb24oYSxiKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIGIuZ2V0RWxlbWVudHNCeVRhZ05hbWU/Yi5nZXRFbGVtZW50c0J5VGFnTmFtZShhKTp2LnFzYT9iLnF1ZXJ5U2VsZWN0b3JBbGwoYSk6dm9pZCAwfTpmdW5jdGlvbihhLGIpe3ZhciBjLGQ9W10sZT0wLGY9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZShhKTtpZigiKiI9PT1hKXtmb3IoO2M9ZltlKytdOykxPT09Yy5ub2RlVHlwZSYmZC5wdXNoKGMpO3JldHVybiBkfXJldHVybiBmfSx3LmZpbmQuQ0xBU1M9di5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lJiZmdW5jdGlvbihhLGIpe3JldHVybiBJP2IuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShhKTp2b2lkIDB9LEs9W10sSj1bXSwodi5xc2E9cmIudGVzdChkLnF1ZXJ5U2VsZWN0b3JBbGwpKSYmKGUoZnVuY3Rpb24oYSl7SC5hcHBlbmRDaGlsZChhKS5pbm5lckhUTUw9IjxhIGlkPSciK04rIic+PC9hPjxzZWxlY3QgaWQ9JyIrTisiLVxmXScgbXNhbGxvd2NhcHR1cmU9Jyc+PG9wdGlvbiBzZWxlY3RlZD0nJz48L29wdGlvbj48L3NlbGVjdD4iLGEucXVlcnlTZWxlY3RvckFsbCgiW21zYWxsb3djYXB0dXJlXj0nJ10iKS5sZW5ndGgmJkoucHVzaCgiWypeJF09IitjYisiKig/OicnfFwiXCIpIiksYS5xdWVyeVNlbGVjdG9yQWxsKCJbc2VsZWN0ZWRdIikubGVuZ3RofHxKLnB1c2goIlxcWyIrY2IrIiooPzp2YWx1ZXwiK2JiKyIpIiksYS5xdWVyeVNlbGVjdG9yQWxsKCJbaWR+PSIrTisiLV0iKS5sZW5ndGh8fEoucHVzaCgifj0iKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIjpjaGVja2VkIikubGVuZ3RofHxKLnB1c2goIjpjaGVja2VkIiksYS5xdWVyeVNlbGVjdG9yQWxsKCJhIyIrTisiKyoiKS5sZW5ndGh8fEoucHVzaCgiLiMuK1srfl0iKX0pLGUoZnVuY3Rpb24oYSl7dmFyIGI9ZC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpO2Iuc2V0QXR0cmlidXRlKCJ0eXBlIiwiaGlkZGVuIiksYS5hcHBlbmRDaGlsZChiKS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCJEIiksYS5xdWVyeVNlbGVjdG9yQWxsKCJbbmFtZT1kXSIpLmxlbmd0aCYmSi5wdXNoKCJuYW1lIitjYisiKlsqXiR8IX5dPz0iKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIjplbmFibGVkIikubGVuZ3RofHxKLnB1c2goIjplbmFibGVkIiwiOmRpc2FibGVkIiksYS5xdWVyeVNlbGVjdG9yQWxsKCIqLDp4IiksSi5wdXNoKCIsLio6Iil9KSksKHYubWF0Y2hlc1NlbGVjdG9yPXJiLnRlc3QoTD1ILm1hdGNoZXN8fEgud2Via2l0TWF0Y2hlc1NlbGVjdG9yfHxILm1vek1hdGNoZXNTZWxlY3Rvcnx8SC5vTWF0Y2hlc1NlbGVjdG9yfHxILm1zTWF0Y2hlc1NlbGVjdG9yKSkmJmUoZnVuY3Rpb24oYSl7di5kaXNjb25uZWN0ZWRNYXRjaD1MLmNhbGwoYSwiZGl2IiksTC5jYWxsKGEsIltzIT0nJ106eCIpLEsucHVzaCgiIT0iLGdiKX0pLEo9Si5sZW5ndGgmJm5ldyBSZWdFeHAoSi5qb2luKCJ8IikpLEs9Sy5sZW5ndGgmJm5ldyBSZWdFeHAoSy5qb2luKCJ8IikpLGI9cmIudGVzdChILmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKSxNPWJ8fHJiLnRlc3QoSC5jb250YWlucyk/ZnVuY3Rpb24oYSxiKXt2YXIgYz05PT09YS5ub2RlVHlwZT9hLmRvY3VtZW50RWxlbWVudDphLGQ9YiYmYi5wYXJlbnROb2RlO3JldHVybiBhPT09ZHx8ISghZHx8MSE9PWQubm9kZVR5cGV8fCEoYy5jb250YWlucz9jLmNvbnRhaW5zKGQpOmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24mJjE2JmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oZCkpKX06ZnVuY3Rpb24oYSxiKXtpZihiKWZvcig7Yj1iLnBhcmVudE5vZGU7KWlmKGI9PT1hKXJldHVybiEwO3JldHVybiExfSxVPWI/ZnVuY3Rpb24oYSxiKXtpZihhPT09YilyZXR1cm4gRT0hMCwwO3ZhciBjPSFhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uLSFiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uO3JldHVybiBjP2M6KGM9KGEub3duZXJEb2N1bWVudHx8YSk9PT0oYi5vd25lckRvY3VtZW50fHxiKT9hLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIpOjEsMSZjfHwhdi5zb3J0RGV0YWNoZWQmJmIuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYSk9PT1jP2E9PT1kfHxhLm93bmVyRG9jdW1lbnQ9PT1PJiZNKE8sYSk/LTE6Yj09PWR8fGIub3duZXJEb2N1bWVudD09PU8mJk0oTyxiKT8xOkQ/YWIoRCxhKS1hYihELGIpOjA6NCZjPy0xOjEpfTpmdW5jdGlvbihhLGIpe2lmKGE9PT1iKXJldHVybiBFPSEwLDA7dmFyIGMsZT0wLGY9YS5wYXJlbnROb2RlLGg9Yi5wYXJlbnROb2RlLGk9W2FdLGo9W2JdO2lmKCFmfHwhaClyZXR1cm4gYT09PWQ/LTE6Yj09PWQ/MTpmPy0xOmg/MTpEP2FiKEQsYSktYWIoRCxiKTowO2lmKGY9PT1oKXJldHVybiBnKGEsYik7Zm9yKGM9YTtjPWMucGFyZW50Tm9kZTspaS51bnNoaWZ0KGMpO2ZvcihjPWI7Yz1jLnBhcmVudE5vZGU7KWoudW5zaGlmdChjKTtmb3IoO2lbZV09PT1qW2VdOyllKys7cmV0dXJuIGU/ZyhpW2VdLGpbZV0pOmlbZV09PT1PPy0xOmpbZV09PT1PPzE6MH0sZCk6R30sYi5tYXRjaGVzPWZ1bmN0aW9uKGEsYyl7cmV0dXJuIGIoYSxudWxsLG51bGwsYyl9LGIubWF0Y2hlc1NlbGVjdG9yPWZ1bmN0aW9uKGEsYyl7aWYoKGEub3duZXJEb2N1bWVudHx8YSkhPT1HJiZGKGEpLGM9Yy5yZXBsYWNlKGxiLCI9JyQxJ10iKSwhKCF2Lm1hdGNoZXNTZWxlY3Rvcnx8IUl8fEsmJksudGVzdChjKXx8SiYmSi50ZXN0KGMpKSl0cnl7dmFyIGQ9TC5jYWxsKGEsYyk7aWYoZHx8di5kaXNjb25uZWN0ZWRNYXRjaHx8YS5kb2N1bWVudCYmMTEhPT1hLmRvY3VtZW50Lm5vZGVUeXBlKXJldHVybiBkfWNhdGNoKGUpe31yZXR1cm4gYihjLEcsbnVsbCxbYV0pLmxlbmd0aD4wfSxiLmNvbnRhaW5zPWZ1bmN0aW9uKGEsYil7cmV0dXJuKGEub3duZXJEb2N1bWVudHx8YSkhPT1HJiZGKGEpLE0oYSxiKX0sYi5hdHRyPWZ1bmN0aW9uKGEsYil7KGEub3duZXJEb2N1bWVudHx8YSkhPT1HJiZGKGEpO3ZhciBjPXcuYXR0ckhhbmRsZVtiLnRvTG93ZXJDYXNlKCldLGQ9YyYmVy5jYWxsKHcuYXR0ckhhbmRsZSxiLnRvTG93ZXJDYXNlKCkpP2MoYSxiLCFJKTp2b2lkIDA7cmV0dXJuIHZvaWQgMCE9PWQ/ZDp2LmF0dHJpYnV0ZXN8fCFJP2EuZ2V0QXR0cmlidXRlKGIpOihkPWEuZ2V0QXR0cmlidXRlTm9kZShiKSkmJmQuc3BlY2lmaWVkP2QudmFsdWU6bnVsbH0sYi5lcnJvcj1mdW5jdGlvbihhKXt0aHJvdyBuZXcgRXJyb3IoIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIrYSl9LGIudW5pcXVlU29ydD1mdW5jdGlvbihhKXt2YXIgYixjPVtdLGQ9MCxlPTA7aWYoRT0hdi5kZXRlY3REdXBsaWNhdGVzLEQ9IXYuc29ydFN0YWJsZSYmYS5zbGljZSgwKSxhLnNvcnQoVSksRSl7Zm9yKDtiPWFbZSsrXTspYj09PWFbZV0mJihkPWMucHVzaChlKSk7Zm9yKDtkLS07KWEuc3BsaWNlKGNbZF0sMSl9cmV0dXJuIEQ9bnVsbCxhfSx4PWIuZ2V0VGV4dD1mdW5jdGlvbihhKXt2YXIgYixjPSIiLGQ9MCxlPWEubm9kZVR5cGU7aWYoZSl7aWYoMT09PWV8fDk9PT1lfHwxMT09PWUpe2lmKCJzdHJpbmciPT10eXBlb2YgYS50ZXh0Q29udGVudClyZXR1cm4gYS50ZXh0Q29udGVudDtmb3IoYT1hLmZpcnN0Q2hpbGQ7YTthPWEubmV4dFNpYmxpbmcpYys9eChhKX1lbHNlIGlmKDM9PT1lfHw0PT09ZSlyZXR1cm4gYS5ub2RlVmFsdWV9ZWxzZSBmb3IoO2I9YVtkKytdOyljKz14KGIpO3JldHVybiBjfSx3PWIuc2VsZWN0b3JzPXtjYWNoZUxlbmd0aDo1MCxjcmVhdGVQc2V1ZG86ZCxtYXRjaDpvYixhdHRySGFuZGxlOnt9LGZpbmQ6e30scmVsYXRpdmU6eyI+Ijp7ZGlyOiJwYXJlbnROb2RlIixmaXJzdDohMH0sIiAiOntkaXI6InBhcmVudE5vZGUifSwiKyI6e2RpcjoicHJldmlvdXNTaWJsaW5nIixmaXJzdDohMH0sIn4iOntkaXI6InByZXZpb3VzU2libGluZyJ9fSxwcmVGaWx0ZXI6e0FUVFI6ZnVuY3Rpb24oYSl7cmV0dXJuIGFbMV09YVsxXS5yZXBsYWNlKHZiLHdiKSxhWzNdPShhWzNdfHxhWzRdfHxhWzVdfHwiIikucmVwbGFjZSh2Yix3YiksIn49Ij09PWFbMl0mJihhWzNdPSIgIithWzNdKyIgIiksYS5zbGljZSgwLDQpfSxDSElMRDpmdW5jdGlvbihhKXtyZXR1cm4gYVsxXT1hWzFdLnRvTG93ZXJDYXNlKCksIm50aCI9PT1hWzFdLnNsaWNlKDAsMyk/KGFbM118fGIuZXJyb3IoYVswXSksYVs0XT0rKGFbNF0/YVs1XSsoYVs2XXx8MSk6MiooImV2ZW4iPT09YVszXXx8Im9kZCI9PT1hWzNdKSksYVs1XT0rKGFbN10rYVs4XXx8Im9kZCI9PT1hWzNdKSk6YVszXSYmYi5lcnJvcihhWzBdKSxhfSxQU0VVRE86ZnVuY3Rpb24oYSl7dmFyIGIsYz0hYVs2XSYmYVsyXTtyZXR1cm4gb2IuQ0hJTEQudGVzdChhWzBdKT9udWxsOihhWzNdP2FbMl09YVs0XXx8YVs1XXx8IiI6YyYmbWIudGVzdChjKSYmKGI9eihjLCEwKSkmJihiPWMuaW5kZXhPZigiKSIsYy5sZW5ndGgtYiktYy5sZW5ndGgpJiYoYVswXT1hWzBdLnNsaWNlKDAsYiksYVsyXT1jLnNsaWNlKDAsYikpLGEuc2xpY2UoMCwzKSl9fSxmaWx0ZXI6e1RBRzpmdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2UodmIsd2IpLnRvTG93ZXJDYXNlKCk7cmV0dXJuIioiPT09YT9mdW5jdGlvbigpe3JldHVybiEwfTpmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZSYmYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09Yn19LENMQVNTOmZ1bmN0aW9uKGEpe3ZhciBiPVJbYSsiICJdO3JldHVybiBifHwoYj1uZXcgUmVnRXhwKCIoXnwiK2NiKyIpIithKyIoIitjYisifCQpIikpJiZSKGEsZnVuY3Rpb24oYSl7cmV0dXJuIGIudGVzdCgic3RyaW5nIj09dHlwZW9mIGEuY2xhc3NOYW1lJiZhLmNsYXNzTmFtZXx8InVuZGVmaW5lZCIhPXR5cGVvZiBhLmdldEF0dHJpYnV0ZSYmYS5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKX0pfSxBVFRSOmZ1bmN0aW9uKGEsYyxkKXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIGY9Yi5hdHRyKGUsYSk7cmV0dXJuIG51bGw9PWY/IiE9Ij09PWM6Yz8oZis9IiIsIj0iPT09Yz9mPT09ZDoiIT0iPT09Yz9mIT09ZDoiXj0iPT09Yz9kJiYwPT09Zi5pbmRleE9mKGQpOiIqPSI9PT1jP2QmJmYuaW5kZXhPZihkKT4tMToiJD0iPT09Yz9kJiZmLnNsaWNlKC1kLmxlbmd0aCk9PT1kOiJ+PSI9PT1jPygiICIrZi5yZXBsYWNlKGhiLCIgIikrIiAiKS5pbmRleE9mKGQpPi0xOiJ8PSI9PT1jP2Y9PT1kfHxmLnNsaWNlKDAsZC5sZW5ndGgrMSk9PT1kKyItIjohMSk6ITB9fSxDSElMRDpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPSJudGgiIT09YS5zbGljZSgwLDMpLGc9Imxhc3QiIT09YS5zbGljZSgtNCksaD0ib2YtdHlwZSI9PT1iO3JldHVybiAxPT09ZCYmMD09PWU/ZnVuY3Rpb24oYSl7cmV0dXJuISFhLnBhcmVudE5vZGV9OmZ1bmN0aW9uKGIsYyxpKXt2YXIgaixrLGwsbSxuLG8scD1mIT09Zz8ibmV4dFNpYmxpbmciOiJwcmV2aW91c1NpYmxpbmciLHE9Yi5wYXJlbnROb2RlLHI9aCYmYi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLHM9IWkmJiFoO2lmKHEpe2lmKGYpe2Zvcig7cDspe2ZvcihsPWI7bD1sW3BdOylpZihoP2wubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXI6MT09PWwubm9kZVR5cGUpcmV0dXJuITE7bz1wPSJvbmx5Ij09PWEmJiFvJiYibmV4dFNpYmxpbmcifXJldHVybiEwfWlmKG89W2c/cS5maXJzdENoaWxkOnEubGFzdENoaWxkXSxnJiZzKXtmb3Ioaz1xW05dfHwocVtOXT17fSksaj1rW2FdfHxbXSxuPWpbMF09PT1QJiZqWzFdLG09alswXT09PVAmJmpbMl0sbD1uJiZxLmNoaWxkTm9kZXNbbl07bD0rK24mJmwmJmxbcF18fChtPW49MCl8fG8ucG9wKCk7KWlmKDE9PT1sLm5vZGVUeXBlJiYrK20mJmw9PT1iKXtrW2FdPVtQLG4sbV07YnJlYWt9fWVsc2UgaWYocyYmKGo9KGJbTl18fChiW05dPXt9KSlbYV0pJiZqWzBdPT09UCltPWpbMV07ZWxzZSBmb3IoOyhsPSsrbiYmbCYmbFtwXXx8KG09bj0wKXx8by5wb3AoKSkmJigoaD9sLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkhPT1yOjEhPT1sLm5vZGVUeXBlKXx8ISsrbXx8KHMmJigobFtOXXx8KGxbTl09e30pKVthXT1bUCxtXSksbCE9PWIpKTspO3JldHVybiBtLT1lLG09PT1kfHxtJWQ9PT0wJiZtL2Q+PTB9fX0sUFNFVURPOmZ1bmN0aW9uKGEsYyl7dmFyIGUsZj13LnBzZXVkb3NbYV18fHcuc2V0RmlsdGVyc1thLnRvTG93ZXJDYXNlKCldfHxiLmVycm9yKCJ1bnN1cHBvcnRlZCBwc2V1ZG86ICIrYSk7cmV0dXJuIGZbTl0/ZihjKTpmLmxlbmd0aD4xPyhlPVthLGEsIiIsY10sdy5zZXRGaWx0ZXJzLmhhc093blByb3BlcnR5KGEudG9Mb3dlckNhc2UoKSk/ZChmdW5jdGlvbihhLGIpe2Zvcih2YXIgZCxlPWYoYSxjKSxnPWUubGVuZ3RoO2ctLTspZD1hYihhLGVbZ10pLGFbZF09IShiW2RdPWVbZ10pfSk6ZnVuY3Rpb24oYSl7cmV0dXJuIGYoYSwwLGUpfSk6Zn19LHBzZXVkb3M6e25vdDpkKGZ1bmN0aW9uKGEpe3ZhciBiPVtdLGM9W10sZT1BKGEucmVwbGFjZShpYiwiJDEiKSk7cmV0dXJuIGVbTl0/ZChmdW5jdGlvbihhLGIsYyxkKXtmb3IodmFyIGYsZz1lKGEsbnVsbCxkLFtdKSxoPWEubGVuZ3RoO2gtLTspKGY9Z1toXSkmJihhW2hdPSEoYltoXT1mKSl9KTpmdW5jdGlvbihhLGQsZil7cmV0dXJuIGJbMF09YSxlKGIsbnVsbCxmLGMpLGJbMF09bnVsbCwhYy5wb3AoKX19KSxoYXM6ZChmdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oYyl7cmV0dXJuIGIoYSxjKS5sZW5ndGg+MH19KSxjb250YWluczpkKGZ1bmN0aW9uKGEpe3JldHVybiBhPWEucmVwbGFjZSh2Yix3YiksZnVuY3Rpb24oYil7cmV0dXJuKGIudGV4dENvbnRlbnR8fGIuaW5uZXJUZXh0fHx4KGIpKS5pbmRleE9mKGEpPi0xfX0pLGxhbmc6ZChmdW5jdGlvbihhKXtyZXR1cm4gbmIudGVzdChhfHwiIil8fGIuZXJyb3IoInVuc3VwcG9ydGVkIGxhbmc6ICIrYSksYT1hLnJlcGxhY2UodmIsd2IpLnRvTG93ZXJDYXNlKCksZnVuY3Rpb24oYil7dmFyIGM7ZG8gaWYoYz1JP2IubGFuZzpiLmdldEF0dHJpYnV0ZSgieG1sOmxhbmciKXx8Yi5nZXRBdHRyaWJ1dGUoImxhbmciKSlyZXR1cm4gYz1jLnRvTG93ZXJDYXNlKCksYz09PWF8fDA9PT1jLmluZGV4T2YoYSsiLSIpO3doaWxlKChiPWIucGFyZW50Tm9kZSkmJjE9PT1iLm5vZGVUeXBlKTtyZXR1cm4hMX19KSx0YXJnZXQ6ZnVuY3Rpb24oYil7dmFyIGM9YS5sb2NhdGlvbiYmYS5sb2NhdGlvbi5oYXNoO3JldHVybiBjJiZjLnNsaWNlKDEpPT09Yi5pZH0scm9vdDpmdW5jdGlvbihhKXtyZXR1cm4gYT09PUh9LGZvY3VzOmZ1bmN0aW9uKGEpe3JldHVybiBhPT09Ry5hY3RpdmVFbGVtZW50JiYoIUcuaGFzRm9jdXN8fEcuaGFzRm9jdXMoKSkmJiEhKGEudHlwZXx8YS5ocmVmfHx+YS50YWJJbmRleCl9LGVuYWJsZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZGlzYWJsZWQ9PT0hMX0sZGlzYWJsZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZGlzYWJsZWQ9PT0hMH0sY2hlY2tlZDpmdW5jdGlvbihhKXt2YXIgYj1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PWImJiEhYS5jaGVja2VkfHwib3B0aW9uIj09PWImJiEhYS5zZWxlY3RlZH0sc2VsZWN0ZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucGFyZW50Tm9kZSYmYS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgsYS5zZWxlY3RlZD09PSEwfSxlbXB0eTpmdW5jdGlvbihhKXtmb3IoYT1hLmZpcnN0Q2hpbGQ7YTthPWEubmV4dFNpYmxpbmcpaWYoYS5ub2RlVHlwZTw2KXJldHVybiExO3JldHVybiEwfSxwYXJlbnQ6ZnVuY3Rpb24oYSl7cmV0dXJuIXcucHNldWRvcy5lbXB0eShhKX0saGVhZGVyOmZ1bmN0aW9uKGEpe3JldHVybiBxYi50ZXN0KGEubm9kZU5hbWUpfSxpbnB1dDpmdW5jdGlvbihhKXtyZXR1cm4gcGIudGVzdChhLm5vZGVOYW1lKX0sYnV0dG9uOmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09YiYmImJ1dHRvbiI9PT1hLnR5cGV8fCJidXR0b24iPT09Yn0sdGV4dDpmdW5jdGlvbihhKXt2YXIgYjtyZXR1cm4iaW5wdXQiPT09YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiYidGV4dCI9PT1hLnR5cGUmJihudWxsPT0oYj1hLmdldEF0dHJpYnV0ZSgidHlwZSIpKXx8InRleHQiPT09Yi50b0xvd2VyQ2FzZSgpKX0sZmlyc3Q6aihmdW5jdGlvbigpe3JldHVyblswXX0pLGxhc3Q6aihmdW5jdGlvbihhLGIpe3JldHVybltiLTFdfSksZXE6aihmdW5jdGlvbihhLGIsYyl7cmV0dXJuWzA+Yz9jK2I6Y119KSxldmVuOmooZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MDtiPmM7Yys9MilhLnB1c2goYyk7cmV0dXJuIGF9KSxvZGQ6aihmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0xO2I+YztjKz0yKWEucHVzaChjKTtyZXR1cm4gYX0pLGx0OmooZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZD0wPmM/YytiOmM7LS1kPj0wOylhLnB1c2goZCk7cmV0dXJuIGF9KSxndDpqKGZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQ9MD5jP2MrYjpjOysrZDxiOylhLnB1c2goZCk7cmV0dXJuIGF9KX19LHcucHNldWRvcy5udGg9dy5wc2V1ZG9zLmVxO2Zvcih1IGlue3JhZGlvOiEwLGNoZWNrYm94OiEwLGZpbGU6ITAscGFzc3dvcmQ6ITAsaW1hZ2U6ITB9KXcucHNldWRvc1t1XT1oKHUpO2Zvcih1IGlue3N1Ym1pdDohMCxyZXNldDohMH0pdy5wc2V1ZG9zW3VdPWkodSk7cmV0dXJuIGwucHJvdG90eXBlPXcuZmlsdGVycz13LnBzZXVkb3Msdy5zZXRGaWx0ZXJzPW5ldyBsLHo9Yi50b2tlbml6ZT1mdW5jdGlvbihhLGMpe3ZhciBkLGUsZixnLGgsaSxqLGs9U1thKyIgIl07aWYoaylyZXR1cm4gYz8wOmsuc2xpY2UoMCk7Zm9yKGg9YSxpPVtdLGo9dy5wcmVGaWx0ZXI7aDspeyghZHx8KGU9amIuZXhlYyhoKSkpJiYoZSYmKGg9aC5zbGljZShlWzBdLmxlbmd0aCl8fGgpLGkucHVzaChmPVtdKSksZD0hMSwoZT1rYi5leGVjKGgpKSYmKGQ9ZS5zaGlmdCgpLGYucHVzaCh7dmFsdWU6ZCx0eXBlOmVbMF0ucmVwbGFjZShpYiwiICIpfSksaD1oLnNsaWNlKGQubGVuZ3RoKSk7Zm9yKGcgaW4gdy5maWx0ZXIpIShlPW9iW2ddLmV4ZWMoaCkpfHxqW2ddJiYhKGU9altnXShlKSl8fChkPWUuc2hpZnQoKSxmLnB1c2goe3ZhbHVlOmQsdHlwZTpnLG1hdGNoZXM6ZX0pLGg9aC5zbGljZShkLmxlbmd0aCkpO2lmKCFkKWJyZWFrfXJldHVybiBjP2gubGVuZ3RoOmg/Yi5lcnJvcihhKTpTKGEsaSkuc2xpY2UoMCl9LEE9Yi5jb21waWxlPWZ1bmN0aW9uKGEsYil7dmFyIGMsZD1bXSxlPVtdLGY9VFthKyIgIl07aWYoIWYpe2ZvcihifHwoYj16KGEpKSxjPWIubGVuZ3RoO2MtLTspZj1zKGJbY10pLGZbTl0/ZC5wdXNoKGYpOmUucHVzaChmKTtmPVQoYSx0KGUsZCkpLGYuc2VsZWN0b3I9YX1yZXR1cm4gZn0sQj1iLnNlbGVjdD1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZSxmLGcsaCxpLGo9ImZ1bmN0aW9uIj09dHlwZW9mIGEmJmEsbD0hZCYmeihhPWouc2VsZWN0b3J8fGEpO2lmKGM9Y3x8W10sMT09PWwubGVuZ3RoKXtpZihmPWxbMF09bFswXS5zbGljZSgwKSxmLmxlbmd0aD4yJiYiSUQiPT09KGc9ZlswXSkudHlwZSYmdi5nZXRCeUlkJiY5PT09Yi5ub2RlVHlwZSYmSSYmdy5yZWxhdGl2ZVtmWzFdLnR5cGVdKXtpZihiPSh3LmZpbmQuSUQoZy5tYXRjaGVzWzBdLnJlcGxhY2UodmIsd2IpLGIpfHxbXSlbMF0sIWIpcmV0dXJuIGM7aiYmKGI9Yi5wYXJlbnROb2RlKSxhPWEuc2xpY2UoZi5zaGlmdCgpLnZhbHVlLmxlbmd0aCl9Zm9yKGU9b2IubmVlZHNDb250ZXh0LnRlc3QoYSk/MDpmLmxlbmd0aDtlLS0mJihnPWZbZV0sIXcucmVsYXRpdmVbaD1nLnR5cGVdKTspaWYoKGk9dy5maW5kW2hdKSYmKGQ9aShnLm1hdGNoZXNbMF0ucmVwbGFjZSh2Yix3YiksdGIudGVzdChmWzBdLnR5cGUpJiZrKGIucGFyZW50Tm9kZSl8fGIpKSl7aWYoZi5zcGxpY2UoZSwxKSxhPWQubGVuZ3RoJiZtKGYpLCFhKXJldHVybiAkLmFwcGx5KGMsZCksYzticmVha319cmV0dXJuKGp8fEEoYSxsKSkoZCxiLCFJLGMsdGIudGVzdChhKSYmayhiLnBhcmVudE5vZGUpfHxiKSxjfSx2LnNvcnRTdGFibGU9Ti5zcGxpdCgiIikuc29ydChVKS5qb2luKCIiKT09PU4sdi5kZXRlY3REdXBsaWNhdGVzPSEhRSxGKCksdi5zb3J0RGV0YWNoZWQ9ZShmdW5jdGlvbihhKXtyZXR1cm4gMSZhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKEcuY3JlYXRlRWxlbWVudCgiZGl2IikpfSksZShmdW5jdGlvbihhKXtyZXR1cm4gYS5pbm5lckhUTUw9IjxhIGhyZWY9JyMnPjwvYT4iLCIjIj09PWEuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoImhyZWYiKX0pfHxmKCJ0eXBlfGhyZWZ8aGVpZ2h0fHdpZHRoIixmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGM/dm9pZCAwOmEuZ2V0QXR0cmlidXRlKGIsInR5cGUiPT09Yi50b0xvd2VyQ2FzZSgpPzE6Mil9KSx2LmF0dHJpYnV0ZXMmJmUoZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW5uZXJIVE1MPSI8aW5wdXQvPiIsYS5maXJzdENoaWxkLnNldEF0dHJpYnV0ZSgidmFsdWUiLCIiKSwiIj09PWEuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUoInZhbHVlIil9KXx8ZigidmFsdWUiLGZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gY3x8ImlucHV0IiE9PWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT92b2lkIDA6YS5kZWZhdWx0VmFsdWV9KSxlKGZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1hLmdldEF0dHJpYnV0ZSgiZGlzYWJsZWQiKX0pfHxmKGJiLGZ1bmN0aW9uKGEsYixjKXt2YXIgZDtyZXR1cm4gYz92b2lkIDA6YVtiXT09PSEwP2IudG9Mb3dlckNhc2UoKTooZD1hLmdldEF0dHJpYnV0ZU5vZGUoYikpJiZkLnNwZWNpZmllZD9kLnZhbHVlOm51bGx9KSxifShhKTtfLmZpbmQ9ZWIsXy5leHByPWViLnNlbGVjdG9ycyxfLmV4cHJbIjoiXT1fLmV4cHIucHNldWRvcyxfLnVuaXF1ZT1lYi51bmlxdWVTb3J0LF8udGV4dD1lYi5nZXRUZXh0LF8uaXNYTUxEb2M9ZWIuaXNYTUwsXy5jb250YWlucz1lYi5jb250YWluczt2YXIgZmI9Xy5leHByLm1hdGNoLm5lZWRzQ29udGV4dCxnYj0vXjwoXHcrKVxzKlwvPz4oPzo8XC9cMT58KSQvLGhiPS9eLlteOiNcW1wuLF0qJC87Xy5maWx0ZXI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWJbMF07cmV0dXJuIGMmJihhPSI6bm90KCIrYSsiKSIpLDE9PT1iLmxlbmd0aCYmMT09PWQubm9kZVR5cGU/Xy5maW5kLm1hdGNoZXNTZWxlY3RvcihkLGEpP1tkXTpbXTpfLmZpbmQubWF0Y2hlcyhhLF8uZ3JlcChiLGZ1bmN0aW9uKGEpe3JldHVybiAxPT09YS5ub2RlVHlwZX0pKX0sXy5mbi5leHRlbmQoe2ZpbmQ6ZnVuY3Rpb24oYSl7dmFyIGIsYz10aGlzLmxlbmd0aCxkPVtdLGU9dGhpczsKaWYoInN0cmluZyIhPXR5cGVvZiBhKXJldHVybiB0aGlzLnB1c2hTdGFjayhfKGEpLmZpbHRlcihmdW5jdGlvbigpe2ZvcihiPTA7Yz5iO2IrKylpZihfLmNvbnRhaW5zKGVbYl0sdGhpcykpcmV0dXJuITB9KSk7Zm9yKGI9MDtjPmI7YisrKV8uZmluZChhLGVbYl0sZCk7cmV0dXJuIGQ9dGhpcy5wdXNoU3RhY2soYz4xP18udW5pcXVlKGQpOmQpLGQuc2VsZWN0b3I9dGhpcy5zZWxlY3Rvcj90aGlzLnNlbGVjdG9yKyIgIithOmEsZH0sZmlsdGVyOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnB1c2hTdGFjayhkKHRoaXMsYXx8W10sITEpKX0sbm90OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnB1c2hTdGFjayhkKHRoaXMsYXx8W10sITApKX0saXM6ZnVuY3Rpb24oYSl7cmV0dXJuISFkKHRoaXMsInN0cmluZyI9PXR5cGVvZiBhJiZmYi50ZXN0KGEpP18oYSk6YXx8W10sITEpLmxlbmd0aH19KTt2YXIgaWIsamI9L14oPzpccyooPFtcd1xXXSs+KVtePl0qfCMoW1x3LV0qKSkkLyxrYj1fLmZuLmluaXQ9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkO2lmKCFhKXJldHVybiB0aGlzO2lmKCJzdHJpbmciPT10eXBlb2YgYSl7aWYoYz0iPCI9PT1hWzBdJiYiPiI9PT1hW2EubGVuZ3RoLTFdJiZhLmxlbmd0aD49Mz9bbnVsbCxhLG51bGxdOmpiLmV4ZWMoYSksIWN8fCFjWzFdJiZiKXJldHVybiFifHxiLmpxdWVyeT8oYnx8aWIpLmZpbmQoYSk6dGhpcy5jb25zdHJ1Y3RvcihiKS5maW5kKGEpO2lmKGNbMV0pe2lmKGI9YiBpbnN0YW5jZW9mIF8/YlswXTpiLF8ubWVyZ2UodGhpcyxfLnBhcnNlSFRNTChjWzFdLGImJmIubm9kZVR5cGU/Yi5vd25lckRvY3VtZW50fHxiOlosITApKSxnYi50ZXN0KGNbMV0pJiZfLmlzUGxhaW5PYmplY3QoYikpZm9yKGMgaW4gYilfLmlzRnVuY3Rpb24odGhpc1tjXSk/dGhpc1tjXShiW2NdKTp0aGlzLmF0dHIoYyxiW2NdKTtyZXR1cm4gdGhpc31yZXR1cm4gZD1aLmdldEVsZW1lbnRCeUlkKGNbMl0pLGQmJmQucGFyZW50Tm9kZSYmKHRoaXMubGVuZ3RoPTEsdGhpc1swXT1kKSx0aGlzLmNvbnRleHQ9Wix0aGlzLnNlbGVjdG9yPWEsdGhpc31yZXR1cm4gYS5ub2RlVHlwZT8odGhpcy5jb250ZXh0PXRoaXNbMF09YSx0aGlzLmxlbmd0aD0xLHRoaXMpOl8uaXNGdW5jdGlvbihhKT8idW5kZWZpbmVkIiE9dHlwZW9mIGliLnJlYWR5P2liLnJlYWR5KGEpOmEoXyk6KHZvaWQgMCE9PWEuc2VsZWN0b3ImJih0aGlzLnNlbGVjdG9yPWEuc2VsZWN0b3IsdGhpcy5jb250ZXh0PWEuY29udGV4dCksXy5tYWtlQXJyYXkoYSx0aGlzKSl9O2tiLnByb3RvdHlwZT1fLmZuLGliPV8oWik7dmFyIGxiPS9eKD86cGFyZW50c3xwcmV2KD86VW50aWx8QWxsKSkvLG1iPXtjaGlsZHJlbjohMCxjb250ZW50czohMCxuZXh0OiEwLHByZXY6ITB9O18uZXh0ZW5kKHtkaXI6ZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZD1bXSxlPXZvaWQgMCE9PWM7KGE9YVtiXSkmJjkhPT1hLm5vZGVUeXBlOylpZigxPT09YS5ub2RlVHlwZSl7aWYoZSYmXyhhKS5pcyhjKSlicmVhaztkLnB1c2goYSl9cmV0dXJuIGR9LHNpYmxpbmc6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9W107YTthPWEubmV4dFNpYmxpbmcpMT09PWEubm9kZVR5cGUmJmEhPT1iJiZjLnB1c2goYSk7cmV0dXJuIGN9fSksXy5mbi5leHRlbmQoe2hhczpmdW5jdGlvbihhKXt2YXIgYj1fKGEsdGhpcyksYz1iLmxlbmd0aDtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtmb3IodmFyIGE9MDtjPmE7YSsrKWlmKF8uY29udGFpbnModGhpcyxiW2FdKSlyZXR1cm4hMH0pfSxjbG9zZXN0OmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjLGQ9MCxlPXRoaXMubGVuZ3RoLGY9W10sZz1mYi50ZXN0KGEpfHwic3RyaW5nIiE9dHlwZW9mIGE/XyhhLGJ8fHRoaXMuY29udGV4dCk6MDtlPmQ7ZCsrKWZvcihjPXRoaXNbZF07YyYmYyE9PWI7Yz1jLnBhcmVudE5vZGUpaWYoYy5ub2RlVHlwZTwxMSYmKGc/Zy5pbmRleChjKT4tMToxPT09Yy5ub2RlVHlwZSYmXy5maW5kLm1hdGNoZXNTZWxlY3RvcihjLGEpKSl7Zi5wdXNoKGMpO2JyZWFrfXJldHVybiB0aGlzLnB1c2hTdGFjayhmLmxlbmd0aD4xP18udW5pcXVlKGYpOmYpfSxpbmRleDpmdW5jdGlvbihhKXtyZXR1cm4gYT8ic3RyaW5nIj09dHlwZW9mIGE/VS5jYWxsKF8oYSksdGhpc1swXSk6VS5jYWxsKHRoaXMsYS5qcXVlcnk/YVswXTphKTp0aGlzWzBdJiZ0aGlzWzBdLnBhcmVudE5vZGU/dGhpcy5maXJzdCgpLnByZXZBbGwoKS5sZW5ndGg6LTF9LGFkZDpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLnB1c2hTdGFjayhfLnVuaXF1ZShfLm1lcmdlKHRoaXMuZ2V0KCksXyhhLGIpKSkpfSxhZGRCYWNrOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmFkZChudWxsPT1hP3RoaXMucHJldk9iamVjdDp0aGlzLnByZXZPYmplY3QuZmlsdGVyKGEpKX19KSxfLmVhY2goe3BhcmVudDpmdW5jdGlvbihhKXt2YXIgYj1hLnBhcmVudE5vZGU7cmV0dXJuIGImJjExIT09Yi5ub2RlVHlwZT9iOm51bGx9LHBhcmVudHM6ZnVuY3Rpb24oYSl7cmV0dXJuIF8uZGlyKGEsInBhcmVudE5vZGUiKX0scGFyZW50c1VudGlsOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gXy5kaXIoYSwicGFyZW50Tm9kZSIsYyl9LG5leHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGUoYSwibmV4dFNpYmxpbmciKX0scHJldjpmdW5jdGlvbihhKXtyZXR1cm4gZShhLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dEFsbDpmdW5jdGlvbihhKXtyZXR1cm4gXy5kaXIoYSwibmV4dFNpYmxpbmciKX0scHJldkFsbDpmdW5jdGlvbihhKXtyZXR1cm4gXy5kaXIoYSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIF8uZGlyKGEsIm5leHRTaWJsaW5nIixjKX0scHJldlVudGlsOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gXy5kaXIoYSwicHJldmlvdXNTaWJsaW5nIixjKX0sc2libGluZ3M6ZnVuY3Rpb24oYSl7cmV0dXJuIF8uc2libGluZygoYS5wYXJlbnROb2RlfHx7fSkuZmlyc3RDaGlsZCxhKX0sY2hpbGRyZW46ZnVuY3Rpb24oYSl7cmV0dXJuIF8uc2libGluZyhhLmZpcnN0Q2hpbGQpfSxjb250ZW50czpmdW5jdGlvbihhKXtyZXR1cm4gYS5jb250ZW50RG9jdW1lbnR8fF8ubWVyZ2UoW10sYS5jaGlsZE5vZGVzKX19LGZ1bmN0aW9uKGEsYil7Xy5mblthXT1mdW5jdGlvbihjLGQpe3ZhciBlPV8ubWFwKHRoaXMsYixjKTtyZXR1cm4iVW50aWwiIT09YS5zbGljZSgtNSkmJihkPWMpLGQmJiJzdHJpbmciPT10eXBlb2YgZCYmKGU9Xy5maWx0ZXIoZCxlKSksdGhpcy5sZW5ndGg+MSYmKG1iW2FdfHxfLnVuaXF1ZShlKSxsYi50ZXN0KGEpJiZlLnJldmVyc2UoKSksdGhpcy5wdXNoU3RhY2soZSl9fSk7dmFyIG5iPS9cUysvZyxvYj17fTtfLkNhbGxiYWNrcz1mdW5jdGlvbihhKXthPSJzdHJpbmciPT10eXBlb2YgYT9vYlthXXx8ZihhKTpfLmV4dGVuZCh7fSxhKTt2YXIgYixjLGQsZSxnLGgsaT1bXSxqPSFhLm9uY2UmJltdLGs9ZnVuY3Rpb24oZil7Zm9yKGI9YS5tZW1vcnkmJmYsYz0hMCxoPWV8fDAsZT0wLGc9aS5sZW5ndGgsZD0hMDtpJiZnPmg7aCsrKWlmKGlbaF0uYXBwbHkoZlswXSxmWzFdKT09PSExJiZhLnN0b3BPbkZhbHNlKXtiPSExO2JyZWFrfWQ9ITEsaSYmKGo/ai5sZW5ndGgmJmsoai5zaGlmdCgpKTpiP2k9W106bC5kaXNhYmxlKCkpfSxsPXthZGQ6ZnVuY3Rpb24oKXtpZihpKXt2YXIgYz1pLmxlbmd0aDshZnVuY3Rpb24gZihiKXtfLmVhY2goYixmdW5jdGlvbihiLGMpe3ZhciBkPV8udHlwZShjKTsiZnVuY3Rpb24iPT09ZD9hLnVuaXF1ZSYmbC5oYXMoYyl8fGkucHVzaChjKTpjJiZjLmxlbmd0aCYmInN0cmluZyIhPT1kJiZmKGMpfSl9KGFyZ3VtZW50cyksZD9nPWkubGVuZ3RoOmImJihlPWMsayhiKSl9cmV0dXJuIHRoaXN9LHJlbW92ZTpmdW5jdGlvbigpe3JldHVybiBpJiZfLmVhY2goYXJndW1lbnRzLGZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjOyhjPV8uaW5BcnJheShiLGksYykpPi0xOylpLnNwbGljZShjLDEpLGQmJihnPj1jJiZnLS0saD49YyYmaC0tKX0pLHRoaXN9LGhhczpmdW5jdGlvbihhKXtyZXR1cm4gYT9fLmluQXJyYXkoYSxpKT4tMTohKCFpfHwhaS5sZW5ndGgpfSxlbXB0eTpmdW5jdGlvbigpe3JldHVybiBpPVtdLGc9MCx0aGlzfSxkaXNhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIGk9aj1iPXZvaWQgMCx0aGlzfSxkaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiFpfSxsb2NrOmZ1bmN0aW9uKCl7cmV0dXJuIGo9dm9pZCAwLGJ8fGwuZGlzYWJsZSgpLHRoaXN9LGxvY2tlZDpmdW5jdGlvbigpe3JldHVybiFqfSxmaXJlV2l0aDpmdW5jdGlvbihhLGIpe3JldHVybiFpfHxjJiYhanx8KGI9Ynx8W10sYj1bYSxiLnNsaWNlP2Iuc2xpY2UoKTpiXSxkP2oucHVzaChiKTprKGIpKSx0aGlzfSxmaXJlOmZ1bmN0aW9uKCl7cmV0dXJuIGwuZmlyZVdpdGgodGhpcyxhcmd1bWVudHMpLHRoaXN9LGZpcmVkOmZ1bmN0aW9uKCl7cmV0dXJuISFjfX07cmV0dXJuIGx9LF8uZXh0ZW5kKHtEZWZlcnJlZDpmdW5jdGlvbihhKXt2YXIgYj1bWyJyZXNvbHZlIiwiZG9uZSIsXy5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksInJlc29sdmVkIl0sWyJyZWplY3QiLCJmYWlsIixfLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwicmVqZWN0ZWQiXSxbIm5vdGlmeSIsInByb2dyZXNzIixfLkNhbGxiYWNrcygibWVtb3J5IildXSxjPSJwZW5kaW5nIixkPXtzdGF0ZTpmdW5jdGlvbigpe3JldHVybiBjfSxhbHdheXM6ZnVuY3Rpb24oKXtyZXR1cm4gZS5kb25lKGFyZ3VtZW50cykuZmFpbChhcmd1bWVudHMpLHRoaXN9LHRoZW46ZnVuY3Rpb24oKXt2YXIgYT1hcmd1bWVudHM7cmV0dXJuIF8uRGVmZXJyZWQoZnVuY3Rpb24oYyl7Xy5lYWNoKGIsZnVuY3Rpb24oYixmKXt2YXIgZz1fLmlzRnVuY3Rpb24oYVtiXSkmJmFbYl07ZVtmWzFdXShmdW5jdGlvbigpe3ZhciBhPWcmJmcuYXBwbHkodGhpcyxhcmd1bWVudHMpO2EmJl8uaXNGdW5jdGlvbihhLnByb21pc2UpP2EucHJvbWlzZSgpLmRvbmUoYy5yZXNvbHZlKS5mYWlsKGMucmVqZWN0KS5wcm9ncmVzcyhjLm5vdGlmeSk6Y1tmWzBdKyJXaXRoIl0odGhpcz09PWQ/Yy5wcm9taXNlKCk6dGhpcyxnP1thXTphcmd1bWVudHMpfSl9KSxhPW51bGx9KS5wcm9taXNlKCl9LHByb21pc2U6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWE/Xy5leHRlbmQoYSxkKTpkfX0sZT17fTtyZXR1cm4gZC5waXBlPWQudGhlbixfLmVhY2goYixmdW5jdGlvbihhLGYpe3ZhciBnPWZbMl0saD1mWzNdO2RbZlsxXV09Zy5hZGQsaCYmZy5hZGQoZnVuY3Rpb24oKXtjPWh9LGJbMV5hXVsyXS5kaXNhYmxlLGJbMl1bMl0ubG9jayksZVtmWzBdXT1mdW5jdGlvbigpe3JldHVybiBlW2ZbMF0rIldpdGgiXSh0aGlzPT09ZT9kOnRoaXMsYXJndW1lbnRzKSx0aGlzfSxlW2ZbMF0rIldpdGgiXT1nLmZpcmVXaXRofSksZC5wcm9taXNlKGUpLGEmJmEuY2FsbChlLGUpLGV9LHdoZW46ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGU9MCxmPVIuY2FsbChhcmd1bWVudHMpLGc9Zi5sZW5ndGgsaD0xIT09Z3x8YSYmXy5pc0Z1bmN0aW9uKGEucHJvbWlzZSk/ZzowLGk9MT09PWg/YTpfLkRlZmVycmVkKCksaj1mdW5jdGlvbihhLGMsZCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2NbYV09dGhpcyxkW2FdPWFyZ3VtZW50cy5sZW5ndGg+MT9SLmNhbGwoYXJndW1lbnRzKTplLGQ9PT1iP2kubm90aWZ5V2l0aChjLGQpOi0taHx8aS5yZXNvbHZlV2l0aChjLGQpfX07aWYoZz4xKWZvcihiPW5ldyBBcnJheShnKSxjPW5ldyBBcnJheShnKSxkPW5ldyBBcnJheShnKTtnPmU7ZSsrKWZbZV0mJl8uaXNGdW5jdGlvbihmW2VdLnByb21pc2UpP2ZbZV0ucHJvbWlzZSgpLmRvbmUoaihlLGQsZikpLmZhaWwoaS5yZWplY3QpLnByb2dyZXNzKGooZSxjLGIpKTotLWg7cmV0dXJuIGh8fGkucmVzb2x2ZVdpdGgoZCxmKSxpLnByb21pc2UoKX19KTt2YXIgcGI7Xy5mbi5yZWFkeT1mdW5jdGlvbihhKXtyZXR1cm4gXy5yZWFkeS5wcm9taXNlKCkuZG9uZShhKSx0aGlzfSxfLmV4dGVuZCh7aXNSZWFkeTohMSxyZWFkeVdhaXQ6MSxob2xkUmVhZHk6ZnVuY3Rpb24oYSl7YT9fLnJlYWR5V2FpdCsrOl8ucmVhZHkoITApfSxyZWFkeTpmdW5jdGlvbihhKXsoYT09PSEwPy0tXy5yZWFkeVdhaXQ6Xy5pc1JlYWR5KXx8KF8uaXNSZWFkeT0hMCxhIT09ITAmJi0tXy5yZWFkeVdhaXQ+MHx8KHBiLnJlc29sdmVXaXRoKFosW19dKSxfLmZuLnRyaWdnZXJIYW5kbGVyJiYoXyhaKS50cmlnZ2VySGFuZGxlcigicmVhZHkiKSxfKFopLm9mZigicmVhZHkiKSkpKX19KSxfLnJlYWR5LnByb21pc2U9ZnVuY3Rpb24oYil7cmV0dXJuIHBifHwocGI9Xy5EZWZlcnJlZCgpLCJjb21wbGV0ZSI9PT1aLnJlYWR5U3RhdGU/c2V0VGltZW91dChfLnJlYWR5KTooWi5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixnLCExKSxhLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGcsITEpKSkscGIucHJvbWlzZShiKX0sXy5yZWFkeS5wcm9taXNlKCk7dmFyIHFiPV8uYWNjZXNzPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe3ZhciBoPTAsaT1hLmxlbmd0aCxqPW51bGw9PWM7aWYoIm9iamVjdCI9PT1fLnR5cGUoYykpe2U9ITA7Zm9yKGggaW4gYylfLmFjY2VzcyhhLGIsaCxjW2hdLCEwLGYsZyl9ZWxzZSBpZih2b2lkIDAhPT1kJiYoZT0hMCxfLmlzRnVuY3Rpb24oZCl8fChnPSEwKSxqJiYoZz8oYi5jYWxsKGEsZCksYj1udWxsKTooaj1iLGI9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBqLmNhbGwoXyhhKSxjKX0pKSxiKSlmb3IoO2k+aDtoKyspYihhW2hdLGMsZz9kOmQuY2FsbChhW2hdLGgsYihhW2hdLGMpKSk7cmV0dXJuIGU/YTpqP2IuY2FsbChhKTppP2IoYVswXSxjKTpmfTtfLmFjY2VwdERhdGE9ZnVuY3Rpb24oYSl7cmV0dXJuIDE9PT1hLm5vZGVUeXBlfHw5PT09YS5ub2RlVHlwZXx8ISthLm5vZGVUeXBlfSxoLnVpZD0xLGguYWNjZXB0cz1fLmFjY2VwdERhdGEsaC5wcm90b3R5cGU9e2tleTpmdW5jdGlvbihhKXtpZighaC5hY2NlcHRzKGEpKXJldHVybiAwO3ZhciBiPXt9LGM9YVt0aGlzLmV4cGFuZG9dO2lmKCFjKXtjPWgudWlkKys7dHJ5e2JbdGhpcy5leHBhbmRvXT17dmFsdWU6Y30sT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoYSxiKX1jYXRjaChkKXtiW3RoaXMuZXhwYW5kb109YyxfLmV4dGVuZChhLGIpfX1yZXR1cm4gdGhpcy5jYWNoZVtjXXx8KHRoaXMuY2FjaGVbY109e30pLGN9LHNldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZT10aGlzLmtleShhKSxmPXRoaXMuY2FjaGVbZV07aWYoInN0cmluZyI9PXR5cGVvZiBiKWZbYl09YztlbHNlIGlmKF8uaXNFbXB0eU9iamVjdChmKSlfLmV4dGVuZCh0aGlzLmNhY2hlW2VdLGIpO2Vsc2UgZm9yKGQgaW4gYilmW2RdPWJbZF07cmV0dXJuIGZ9LGdldDpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuY2FjaGVbdGhpcy5rZXkoYSldO3JldHVybiB2b2lkIDA9PT1iP2M6Y1tiXX0sYWNjZXNzOmZ1bmN0aW9uKGEsYixjKXt2YXIgZDtyZXR1cm4gdm9pZCAwPT09Ynx8YiYmInN0cmluZyI9PXR5cGVvZiBiJiZ2b2lkIDA9PT1jPyhkPXRoaXMuZ2V0KGEsYiksdm9pZCAwIT09ZD9kOnRoaXMuZ2V0KGEsXy5jYW1lbENhc2UoYikpKToodGhpcy5zZXQoYSxiLGMpLHZvaWQgMCE9PWM/YzpiKX0scmVtb3ZlOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGY9dGhpcy5rZXkoYSksZz10aGlzLmNhY2hlW2ZdO2lmKHZvaWQgMD09PWIpdGhpcy5jYWNoZVtmXT17fTtlbHNle18uaXNBcnJheShiKT9kPWIuY29uY2F0KGIubWFwKF8uY2FtZWxDYXNlKSk6KGU9Xy5jYW1lbENhc2UoYiksYiBpbiBnP2Q9W2IsZV06KGQ9ZSxkPWQgaW4gZz9bZF06ZC5tYXRjaChuYil8fFtdKSksYz1kLmxlbmd0aDtmb3IoO2MtLTspZGVsZXRlIGdbZFtjXV19fSxoYXNEYXRhOmZ1bmN0aW9uKGEpe3JldHVybiFfLmlzRW1wdHlPYmplY3QodGhpcy5jYWNoZVthW3RoaXMuZXhwYW5kb11dfHx7fSl9LGRpc2NhcmQ6ZnVuY3Rpb24oYSl7YVt0aGlzLmV4cGFuZG9dJiZkZWxldGUgdGhpcy5jYWNoZVthW3RoaXMuZXhwYW5kb11dfX07dmFyIHJiPW5ldyBoLHNiPW5ldyBoLHRiPS9eKD86XHtbXHdcV10qXH18XFtbXHdcV10qXF0pJC8sdWI9LyhbQS1aXSkvZztfLmV4dGVuZCh7aGFzRGF0YTpmdW5jdGlvbihhKXtyZXR1cm4gc2IuaGFzRGF0YShhKXx8cmIuaGFzRGF0YShhKX0sZGF0YTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHNiLmFjY2VzcyhhLGIsYyl9LHJlbW92ZURhdGE6ZnVuY3Rpb24oYSxiKXtzYi5yZW1vdmUoYSxiKX0sX2RhdGE6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiByYi5hY2Nlc3MoYSxiLGMpfSxfcmVtb3ZlRGF0YTpmdW5jdGlvbihhLGIpe3JiLnJlbW92ZShhLGIpfX0pLF8uZm4uZXh0ZW5kKHtkYXRhOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGY9dGhpc1swXSxnPWYmJmYuYXR0cmlidXRlcztpZih2b2lkIDA9PT1hKXtpZih0aGlzLmxlbmd0aCYmKGU9c2IuZ2V0KGYpLDE9PT1mLm5vZGVUeXBlJiYhcmIuZ2V0KGYsImhhc0RhdGFBdHRycyIpKSl7Zm9yKGM9Zy5sZW5ndGg7Yy0tOylnW2NdJiYoZD1nW2NdLm5hbWUsMD09PWQuaW5kZXhPZigiZGF0YS0iKSYmKGQ9Xy5jYW1lbENhc2UoZC5zbGljZSg1KSksaShmLGQsZVtkXSkpKTtyYi5zZXQoZiwiaGFzRGF0YUF0dHJzIiwhMCl9cmV0dXJuIGV9cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBhP3RoaXMuZWFjaChmdW5jdGlvbigpe3NiLnNldCh0aGlzLGEpfSk6cWIodGhpcyxmdW5jdGlvbihiKXt2YXIgYyxkPV8uY2FtZWxDYXNlKGEpO2lmKGYmJnZvaWQgMD09PWIpe2lmKGM9c2IuZ2V0KGYsYSksdm9pZCAwIT09YylyZXR1cm4gYztpZihjPXNiLmdldChmLGQpLHZvaWQgMCE9PWMpcmV0dXJuIGM7aWYoYz1pKGYsZCx2b2lkIDApLHZvaWQgMCE9PWMpcmV0dXJuIGN9ZWxzZSB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYz1zYi5nZXQodGhpcyxkKTtzYi5zZXQodGhpcyxkLGIpLC0xIT09YS5pbmRleE9mKCItIikmJnZvaWQgMCE9PWMmJnNiLnNldCh0aGlzLGEsYil9KX0sbnVsbCxiLGFyZ3VtZW50cy5sZW5ndGg+MSxudWxsLCEwKX0scmVtb3ZlRGF0YTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7c2IucmVtb3ZlKHRoaXMsYSl9KX19KSxfLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO3JldHVybiBhPyhiPShifHwiZngiKSsicXVldWUiLGQ9cmIuZ2V0KGEsYiksYyYmKCFkfHxfLmlzQXJyYXkoYyk/ZD1yYi5hY2Nlc3MoYSxiLF8ubWFrZUFycmF5KGMpKTpkLnB1c2goYykpLGR8fFtdKTp2b2lkIDB9LGRlcXVldWU6ZnVuY3Rpb24oYSxiKXtiPWJ8fCJmeCI7dmFyIGM9Xy5xdWV1ZShhLGIpLGQ9Yy5sZW5ndGgsZT1jLnNoaWZ0KCksZj1fLl9xdWV1ZUhvb2tzKGEsYiksZz1mdW5jdGlvbigpe18uZGVxdWV1ZShhLGIpfTsiaW5wcm9ncmVzcyI9PT1lJiYoZT1jLnNoaWZ0KCksZC0tKSxlJiYoImZ4Ij09PWImJmMudW5zaGlmdCgiaW5wcm9ncmVzcyIpLGRlbGV0ZSBmLnN0b3AsZS5jYWxsKGEsZyxmKSksIWQmJmYmJmYuZW1wdHkuZmlyZSgpfSxfcXVldWVIb29rczpmdW5jdGlvbihhLGIpe3ZhciBjPWIrInF1ZXVlSG9va3MiO3JldHVybiByYi5nZXQoYSxjKXx8cmIuYWNjZXNzKGEsYyx7ZW1wdHk6Xy5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IikuYWRkKGZ1bmN0aW9uKCl7cmIucmVtb3ZlKGEsW2IrInF1ZXVlIixjXSl9KX0pfX0pLF8uZm4uZXh0ZW5kKHtxdWV1ZTpmdW5jdGlvbihhLGIpe3ZhciBjPTI7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBhJiYoYj1hLGE9ImZ4IixjLS0pLGFyZ3VtZW50cy5sZW5ndGg8Yz9fLnF1ZXVlKHRoaXNbMF0sYSk6dm9pZCAwPT09Yj90aGlzOnRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBjPV8ucXVldWUodGhpcyxhLGIpO18uX3F1ZXVlSG9va3ModGhpcyxhKSwiZngiPT09YSYmImlucHJvZ3Jlc3MiIT09Y1swXSYmXy5kZXF1ZXVlKHRoaXMsYSl9KX0sZGVxdWV1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Xy5kZXF1ZXVlKHRoaXMsYSl9KX0sY2xlYXJRdWV1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5xdWV1ZShhfHwiZngiLFtdKX0scHJvbWlzZTpmdW5jdGlvbihhLGIpe3ZhciBjLGQ9MSxlPV8uRGVmZXJyZWQoKSxmPXRoaXMsZz10aGlzLmxlbmd0aCxoPWZ1bmN0aW9uKCl7LS1kfHxlLnJlc29sdmVXaXRoKGYsW2ZdKX07Zm9yKCJzdHJpbmciIT10eXBlb2YgYSYmKGI9YSxhPXZvaWQgMCksYT1hfHwiZngiO2ctLTspYz1yYi5nZXQoZltnXSxhKyJxdWV1ZUhvb2tzIiksYyYmYy5lbXB0eSYmKGQrKyxjLmVtcHR5LmFkZChoKSk7cmV0dXJuIGgoKSxlLnByb21pc2UoYil9fSk7dmFyIHZiPS9bKy1dPyg/OlxkKlwufClcZCsoPzpbZUVdWystXT9cZCt8KS8uc291cmNlLHdiPVsiVG9wIiwiUmlnaHQiLCJCb3R0b20iLCJMZWZ0Il0seGI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT1ifHxhLCJub25lIj09PV8uY3NzKGEsImRpc3BsYXkiKXx8IV8uY29udGFpbnMoYS5vd25lckRvY3VtZW50LGEpfSx5Yj0vXig/OmNoZWNrYm94fHJhZGlvKSQvaTshZnVuY3Rpb24oKXt2YXIgYT1aLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxiPWEuYXBwZW5kQ2hpbGQoWi5jcmVhdGVFbGVtZW50KCJkaXYiKSksYz1aLmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7Yy5zZXRBdHRyaWJ1dGUoInR5cGUiLCJyYWRpbyIpLGMuc2V0QXR0cmlidXRlKCJjaGVja2VkIiwiY2hlY2tlZCIpLGMuc2V0QXR0cmlidXRlKCJuYW1lIiwidCIpLGIuYXBwZW5kQ2hpbGQoYyksWS5jaGVja0Nsb25lPWIuY2xvbmVOb2RlKCEwKS5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5jaGVja2VkLGIuaW5uZXJIVE1MPSI8dGV4dGFyZWE+eDwvdGV4dGFyZWE+IixZLm5vQ2xvbmVDaGVja2VkPSEhYi5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5kZWZhdWx0VmFsdWV9KCk7dmFyIHpiPSJ1bmRlZmluZWQiO1kuZm9jdXNpbkJ1YmJsZXM9Im9uZm9jdXNpbiJpbiBhO3ZhciBBYj0vXmtleS8sQmI9L14oPzptb3VzZXxwb2ludGVyfGNvbnRleHRtZW51KXxjbGljay8sQ2I9L14oPzpmb2N1c2luZm9jdXN8Zm9jdXNvdXRibHVyKSQvLERiPS9eKFteLl0qKSg/OlwuKC4rKXwpJC87Xy5ldmVudD17Z2xvYmFsOnt9LGFkZDpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmLGcsaCxpLGosayxsLG0sbixvLHAscT1yYi5nZXQoYSk7aWYocSlmb3IoYy5oYW5kbGVyJiYoZj1jLGM9Zi5oYW5kbGVyLGU9Zi5zZWxlY3RvciksYy5ndWlkfHwoYy5ndWlkPV8uZ3VpZCsrKSwoaT1xLmV2ZW50cyl8fChpPXEuZXZlbnRzPXt9KSwoZz1xLmhhbmRsZSl8fChnPXEuaGFuZGxlPWZ1bmN0aW9uKGIpe3JldHVybiB0eXBlb2YgXyE9PXpiJiZfLmV2ZW50LnRyaWdnZXJlZCE9PWIudHlwZT9fLmV2ZW50LmRpc3BhdGNoLmFwcGx5KGEsYXJndW1lbnRzKTp2b2lkIDB9KSxiPShifHwiIikubWF0Y2gobmIpfHxbIiJdLGo9Yi5sZW5ndGg7ai0tOyloPURiLmV4ZWMoYltqXSl8fFtdLG49cD1oWzFdLG89KGhbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxuJiYobD1fLmV2ZW50LnNwZWNpYWxbbl18fHt9LG49KGU/bC5kZWxlZ2F0ZVR5cGU6bC5iaW5kVHlwZSl8fG4sbD1fLmV2ZW50LnNwZWNpYWxbbl18fHt9LGs9Xy5leHRlbmQoe3R5cGU6bixvcmlnVHlwZTpwLGRhdGE6ZCxoYW5kbGVyOmMsZ3VpZDpjLmd1aWQsc2VsZWN0b3I6ZSxuZWVkc0NvbnRleHQ6ZSYmXy5leHByLm1hdGNoLm5lZWRzQ29udGV4dC50ZXN0KGUpLG5hbWVzcGFjZTpvLmpvaW4oIi4iKX0sZiksKG09aVtuXSl8fChtPWlbbl09W10sbS5kZWxlZ2F0ZUNvdW50PTAsbC5zZXR1cCYmbC5zZXR1cC5jYWxsKGEsZCxvLGcpIT09ITF8fGEuYWRkRXZlbnRMaXN0ZW5lciYmYS5hZGRFdmVudExpc3RlbmVyKG4sZywhMSkpLGwuYWRkJiYobC5hZGQuY2FsbChhLGspLGsuaGFuZGxlci5ndWlkfHwoay5oYW5kbGVyLmd1aWQ9Yy5ndWlkKSksZT9tLnNwbGljZShtLmRlbGVnYXRlQ291bnQrKywwLGspOm0ucHVzaChrKSxfLmV2ZW50Lmdsb2JhbFtuXT0hMCl9LHJlbW92ZTpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmLGcsaCxpLGosayxsLG0sbixvLHAscT1yYi5oYXNEYXRhKGEpJiZyYi5nZXQoYSk7aWYocSYmKGk9cS5ldmVudHMpKXtmb3IoYj0oYnx8IiIpLm1hdGNoKG5iKXx8WyIiXSxqPWIubGVuZ3RoO2otLTspaWYoaD1EYi5leGVjKGJbal0pfHxbXSxuPXA9aFsxXSxvPShoWzJdfHwiIikuc3BsaXQoIi4iKS5zb3J0KCksbil7Zm9yKGw9Xy5ldmVudC5zcGVjaWFsW25dfHx7fSxuPShkP2wuZGVsZWdhdGVUeXBlOmwuYmluZFR5cGUpfHxuLG09aVtuXXx8W10saD1oWzJdJiZuZXcgUmVnRXhwKCIoXnxcXC4pIitvLmpvaW4oIlxcLig/Oi4qXFwufCkiKSsiKFxcLnwkKSIpLGc9Zj1tLmxlbmd0aDtmLS07KWs9bVtmXSwhZSYmcCE9PWsub3JpZ1R5cGV8fGMmJmMuZ3VpZCE9PWsuZ3VpZHx8aCYmIWgudGVzdChrLm5hbWVzcGFjZSl8fGQmJmQhPT1rLnNlbGVjdG9yJiYoIioqIiE9PWR8fCFrLnNlbGVjdG9yKXx8KG0uc3BsaWNlKGYsMSksay5zZWxlY3RvciYmbS5kZWxlZ2F0ZUNvdW50LS0sbC5yZW1vdmUmJmwucmVtb3ZlLmNhbGwoYSxrKSk7ZyYmIW0ubGVuZ3RoJiYobC50ZWFyZG93biYmbC50ZWFyZG93bi5jYWxsKGEsbyxxLmhhbmRsZSkhPT0hMXx8Xy5yZW1vdmVFdmVudChhLG4scS5oYW5kbGUpLGRlbGV0ZSBpW25dKX1lbHNlIGZvcihuIGluIGkpXy5ldmVudC5yZW1vdmUoYSxuK2Jbal0sYyxkLCEwKTtfLmlzRW1wdHlPYmplY3QoaSkmJihkZWxldGUgcS5oYW5kbGUscmIucmVtb3ZlKGEsImV2ZW50cyIpKX19LHRyaWdnZXI6ZnVuY3Rpb24oYixjLGQsZSl7dmFyIGYsZyxoLGksaixrLGwsbT1bZHx8Wl0sbj1YLmNhbGwoYiwidHlwZSIpP2IudHlwZTpiLG89WC5jYWxsKGIsIm5hbWVzcGFjZSIpP2IubmFtZXNwYWNlLnNwbGl0KCIuIik6W107aWYoZz1oPWQ9ZHx8WiwzIT09ZC5ub2RlVHlwZSYmOCE9PWQubm9kZVR5cGUmJiFDYi50ZXN0KG4rXy5ldmVudC50cmlnZ2VyZWQpJiYobi5pbmRleE9mKCIuIik+PTAmJihvPW4uc3BsaXQoIi4iKSxuPW8uc2hpZnQoKSxvLnNvcnQoKSksaj1uLmluZGV4T2YoIjoiKTwwJiYib24iK24sYj1iW18uZXhwYW5kb10/YjpuZXcgXy5FdmVudChuLCJvYmplY3QiPT10eXBlb2YgYiYmYiksYi5pc1RyaWdnZXI9ZT8yOjMsYi5uYW1lc3BhY2U9by5qb2luKCIuIiksYi5uYW1lc3BhY2VfcmU9Yi5uYW1lc3BhY2U/bmV3IFJlZ0V4cCgiKF58XFwuKSIrby5qb2luKCJcXC4oPzouKlxcLnwpIikrIihcXC58JCkiKTpudWxsLGIucmVzdWx0PXZvaWQgMCxiLnRhcmdldHx8KGIudGFyZ2V0PWQpLGM9bnVsbD09Yz9bYl06Xy5tYWtlQXJyYXkoYyxbYl0pLGw9Xy5ldmVudC5zcGVjaWFsW25dfHx7fSxlfHwhbC50cmlnZ2VyfHxsLnRyaWdnZXIuYXBwbHkoZCxjKSE9PSExKSl7aWYoIWUmJiFsLm5vQnViYmxlJiYhXy5pc1dpbmRvdyhkKSl7Zm9yKGk9bC5kZWxlZ2F0ZVR5cGV8fG4sQ2IudGVzdChpK24pfHwoZz1nLnBhcmVudE5vZGUpO2c7Zz1nLnBhcmVudE5vZGUpbS5wdXNoKGcpLGg9ZztoPT09KGQub3duZXJEb2N1bWVudHx8WikmJm0ucHVzaChoLmRlZmF1bHRWaWV3fHxoLnBhcmVudFdpbmRvd3x8YSl9Zm9yKGY9MDsoZz1tW2YrK10pJiYhYi5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpOyliLnR5cGU9Zj4xP2k6bC5iaW5kVHlwZXx8bixrPShyYi5nZXQoZywiZXZlbnRzIil8fHt9KVtiLnR5cGVdJiZyYi5nZXQoZywiaGFuZGxlIiksayYmay5hcHBseShnLGMpLGs9aiYmZ1tqXSxrJiZrLmFwcGx5JiZfLmFjY2VwdERhdGEoZykmJihiLnJlc3VsdD1rLmFwcGx5KGcsYyksYi5yZXN1bHQ9PT0hMSYmYi5wcmV2ZW50RGVmYXVsdCgpKTtyZXR1cm4gYi50eXBlPW4sZXx8Yi5pc0RlZmF1bHRQcmV2ZW50ZWQoKXx8bC5fZGVmYXVsdCYmbC5fZGVmYXVsdC5hcHBseShtLnBvcCgpLGMpIT09ITF8fCFfLmFjY2VwdERhdGEoZCl8fGomJl8uaXNGdW5jdGlvbihkW25dKSYmIV8uaXNXaW5kb3coZCkmJihoPWRbal0saCYmKGRbal09bnVsbCksXy5ldmVudC50cmlnZ2VyZWQ9bixkW25dKCksXy5ldmVudC50cmlnZ2VyZWQ9dm9pZCAwLGgmJihkW2pdPWgpKSxiLnJlc3VsdH19LGRpc3BhdGNoOmZ1bmN0aW9uKGEpe2E9Xy5ldmVudC5maXgoYSk7dmFyIGIsYyxkLGUsZixnPVtdLGg9Ui5jYWxsKGFyZ3VtZW50cyksaT0ocmIuZ2V0KHRoaXMsImV2ZW50cyIpfHx7fSlbYS50eXBlXXx8W10saj1fLmV2ZW50LnNwZWNpYWxbYS50eXBlXXx8e307aWYoaFswXT1hLGEuZGVsZWdhdGVUYXJnZXQ9dGhpcywhai5wcmVEaXNwYXRjaHx8ai5wcmVEaXNwYXRjaC5jYWxsKHRoaXMsYSkhPT0hMSl7Zm9yKGc9Xy5ldmVudC5oYW5kbGVycy5jYWxsKHRoaXMsYSxpKSxiPTA7KGU9Z1tiKytdKSYmIWEuaXNQcm9wYWdhdGlvblN0b3BwZWQoKTspZm9yKGEuY3VycmVudFRhcmdldD1lLmVsZW0sYz0wOyhmPWUuaGFuZGxlcnNbYysrXSkmJiFhLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCk7KSghYS5uYW1lc3BhY2VfcmV8fGEubmFtZXNwYWNlX3JlLnRlc3QoZi5uYW1lc3BhY2UpKSYmKGEuaGFuZGxlT2JqPWYsYS5kYXRhPWYuZGF0YSxkPSgoXy5ldmVudC5zcGVjaWFsW2Yub3JpZ1R5cGVdfHx7fSkuaGFuZGxlfHxmLmhhbmRsZXIpLmFwcGx5KGUuZWxlbSxoKSx2b2lkIDAhPT1kJiYoYS5yZXN1bHQ9ZCk9PT0hMSYmKGEucHJldmVudERlZmF1bHQoKSxhLnN0b3BQcm9wYWdhdGlvbigpKSk7cmV0dXJuIGoucG9zdERpc3BhdGNoJiZqLnBvc3REaXNwYXRjaC5jYWxsKHRoaXMsYSksYS5yZXN1bHR9fSxoYW5kbGVyczpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZSxmLGc9W10saD1iLmRlbGVnYXRlQ291bnQsaT1hLnRhcmdldDtpZihoJiZpLm5vZGVUeXBlJiYoIWEuYnV0dG9ufHwiY2xpY2siIT09YS50eXBlKSlmb3IoO2khPT10aGlzO2k9aS5wYXJlbnROb2RlfHx0aGlzKWlmKGkuZGlzYWJsZWQhPT0hMHx8ImNsaWNrIiE9PWEudHlwZSl7Zm9yKGQ9W10sYz0wO2g+YztjKyspZj1iW2NdLGU9Zi5zZWxlY3RvcisiICIsdm9pZCAwPT09ZFtlXSYmKGRbZV09Zi5uZWVkc0NvbnRleHQ/XyhlLHRoaXMpLmluZGV4KGkpPj0wOl8uZmluZChlLHRoaXMsbnVsbCxbaV0pLmxlbmd0aCksZFtlXSYmZC5wdXNoKGYpO2QubGVuZ3RoJiZnLnB1c2goe2VsZW06aSxoYW5kbGVyczpkfSl9cmV0dXJuIGg8Yi5sZW5ndGgmJmcucHVzaCh7ZWxlbTp0aGlzLGhhbmRsZXJzOmIuc2xpY2UoaCl9KSxnfSxwcm9wczoiYWx0S2V5IGJ1YmJsZXMgY2FuY2VsYWJsZSBjdHJsS2V5IGN1cnJlbnRUYXJnZXQgZXZlbnRQaGFzZSBtZXRhS2V5IHJlbGF0ZWRUYXJnZXQgc2hpZnRLZXkgdGFyZ2V0IHRpbWVTdGFtcCB2aWV3IHdoaWNoIi5zcGxpdCgiICIpLGZpeEhvb2tzOnt9LGtleUhvb2tzOntwcm9wczoiY2hhciBjaGFyQ29kZSBrZXkga2V5Q29kZSIuc3BsaXQoIiAiKSxmaWx0ZXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbnVsbD09YS53aGljaCYmKGEud2hpY2g9bnVsbCE9Yi5jaGFyQ29kZT9iLmNoYXJDb2RlOmIua2V5Q29kZSksYX19LG1vdXNlSG9va3M6e3Byb3BzOiJidXR0b24gYnV0dG9ucyBjbGllbnRYIGNsaWVudFkgb2Zmc2V0WCBvZmZzZXRZIHBhZ2VYIHBhZ2VZIHNjcmVlblggc2NyZWVuWSB0b0VsZW1lbnQiLnNwbGl0KCIgIiksZmlsdGVyOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGY9Yi5idXR0b247cmV0dXJuIG51bGw9PWEucGFnZVgmJm51bGwhPWIuY2xpZW50WCYmKGM9YS50YXJnZXQub3duZXJEb2N1bWVudHx8WixkPWMuZG9jdW1lbnRFbGVtZW50LGU9Yy5ib2R5LGEucGFnZVg9Yi5jbGllbnRYKyhkJiZkLnNjcm9sbExlZnR8fGUmJmUuc2Nyb2xsTGVmdHx8MCktKGQmJmQuY2xpZW50TGVmdHx8ZSYmZS5jbGllbnRMZWZ0fHwwKSxhLnBhZ2VZPWIuY2xpZW50WSsoZCYmZC5zY3JvbGxUb3B8fGUmJmUuc2Nyb2xsVG9wfHwwKS0oZCYmZC5jbGllbnRUb3B8fGUmJmUuY2xpZW50VG9wfHwwKSksYS53aGljaHx8dm9pZCAwPT09Znx8KGEud2hpY2g9MSZmPzE6MiZmPzM6NCZmPzI6MCksYX19LGZpeDpmdW5jdGlvbihhKXtpZihhW18uZXhwYW5kb10pcmV0dXJuIGE7dmFyIGIsYyxkLGU9YS50eXBlLGY9YSxnPXRoaXMuZml4SG9va3NbZV07Zm9yKGd8fCh0aGlzLmZpeEhvb2tzW2VdPWc9QmIudGVzdChlKT90aGlzLm1vdXNlSG9va3M6QWIudGVzdChlKT90aGlzLmtleUhvb2tzOnt9KSxkPWcucHJvcHM/dGhpcy5wcm9wcy5jb25jYXQoZy5wcm9wcyk6dGhpcy5wcm9wcyxhPW5ldyBfLkV2ZW50KGYpLGI9ZC5sZW5ndGg7Yi0tOyljPWRbYl0sYVtjXT1mW2NdO3JldHVybiBhLnRhcmdldHx8KGEudGFyZ2V0PVopLDM9PT1hLnRhcmdldC5ub2RlVHlwZSYmKGEudGFyZ2V0PWEudGFyZ2V0LnBhcmVudE5vZGUpLGcuZmlsdGVyP2cuZmlsdGVyKGEsZik6YX0sc3BlY2lhbDp7bG9hZDp7bm9CdWJibGU6ITB9LGZvY3VzOnt0cmlnZ2VyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMhPT1sKCkmJnRoaXMuZm9jdXM/KHRoaXMuZm9jdXMoKSwhMSk6dm9pZCAwfSxkZWxlZ2F0ZVR5cGU6ImZvY3VzaW4ifSxibHVyOnt0cmlnZ2VyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXM9PT1sKCkmJnRoaXMuYmx1cj8odGhpcy5ibHVyKCksITEpOnZvaWQgMH0sZGVsZWdhdGVUeXBlOiJmb2N1c291dCJ9LGNsaWNrOnt0cmlnZ2VyOmZ1bmN0aW9uKCl7cmV0dXJuImNoZWNrYm94Ij09PXRoaXMudHlwZSYmdGhpcy5jbGljayYmXy5ub2RlTmFtZSh0aGlzLCJpbnB1dCIpPyh0aGlzLmNsaWNrKCksITEpOnZvaWQgMH0sX2RlZmF1bHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIF8ubm9kZU5hbWUoYS50YXJnZXQsImEiKX19LGJlZm9yZXVubG9hZDp7cG9zdERpc3BhdGNoOmZ1bmN0aW9uKGEpe3ZvaWQgMCE9PWEucmVzdWx0JiZhLm9yaWdpbmFsRXZlbnQmJihhLm9yaWdpbmFsRXZlbnQucmV0dXJuVmFsdWU9YS5yZXN1bHQpfX19LHNpbXVsYXRlOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPV8uZXh0ZW5kKG5ldyBfLkV2ZW50LGMse3R5cGU6YSxpc1NpbXVsYXRlZDohMCxvcmlnaW5hbEV2ZW50Ont9fSk7ZD9fLmV2ZW50LnRyaWdnZXIoZSxudWxsLGIpOl8uZXZlbnQuZGlzcGF0Y2guY2FsbChiLGUpLGUuaXNEZWZhdWx0UHJldmVudGVkKCkmJmMucHJldmVudERlZmF1bHQoKX19LF8ucmVtb3ZlRXZlbnQ9ZnVuY3Rpb24oYSxiLGMpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lciYmYS5yZW1vdmVFdmVudExpc3RlbmVyKGIsYywhMSl9LF8uRXZlbnQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF8uRXZlbnQ/KGEmJmEudHlwZT8odGhpcy5vcmlnaW5hbEV2ZW50PWEsdGhpcy50eXBlPWEudHlwZSx0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1hLmRlZmF1bHRQcmV2ZW50ZWR8fHZvaWQgMD09PWEuZGVmYXVsdFByZXZlbnRlZCYmYS5yZXR1cm5WYWx1ZT09PSExP2o6ayk6dGhpcy50eXBlPWEsYiYmXy5leHRlbmQodGhpcyxiKSx0aGlzLnRpbWVTdGFtcD1hJiZhLnRpbWVTdGFtcHx8Xy5ub3coKSx0aGlzW18uZXhwYW5kb109ITAsdm9pZCAwKTpuZXcgXy5FdmVudChhLGIpfSxfLkV2ZW50LnByb3RvdHlwZT17aXNEZWZhdWx0UHJldmVudGVkOmssaXNQcm9wYWdhdGlvblN0b3BwZWQ6ayxpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDprLHByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPWosYSYmYS5wcmV2ZW50RGVmYXVsdCYmYS5wcmV2ZW50RGVmYXVsdCgpfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1qLGEmJmEuc3RvcFByb3BhZ2F0aW9uJiZhLnN0b3BQcm9wYWdhdGlvbigpfSxzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZD1qLGEmJmEuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uJiZhLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLHRoaXMuc3RvcFByb3BhZ2F0aW9uKCl9fSxfLmVhY2goe21vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToibW91c2VvdXQiLHBvaW50ZXJlbnRlcjoicG9pbnRlcm92ZXIiLHBvaW50ZXJsZWF2ZToicG9pbnRlcm91dCJ9LGZ1bmN0aW9uKGEsYil7Xy5ldmVudC5zcGVjaWFsW2FdPXtkZWxlZ2F0ZVR5cGU6YixiaW5kVHlwZTpiLGhhbmRsZTpmdW5jdGlvbihhKXt2YXIgYyxkPXRoaXMsZT1hLnJlbGF0ZWRUYXJnZXQsZj1hLmhhbmRsZU9iajtyZXR1cm4oIWV8fGUhPT1kJiYhXy5jb250YWlucyhkLGUpKSYmKGEudHlwZT1mLm9yaWdUeXBlLGM9Zi5oYW5kbGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxhLnR5cGU9YiksY319fSksWS5mb2N1c2luQnViYmxlc3x8Xy5lYWNoKHtmb2N1czoiZm9jdXNpbiIsYmx1cjoiZm9jdXNvdXQifSxmdW5jdGlvbihhLGIpe3ZhciBjPWZ1bmN0aW9uKGEpe18uZXZlbnQuc2ltdWxhdGUoYixhLnRhcmdldCxfLmV2ZW50LmZpeChhKSwhMCl9O18uZXZlbnQuc3BlY2lhbFtiXT17c2V0dXA6ZnVuY3Rpb24oKXt2YXIgZD10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMsZT1yYi5hY2Nlc3MoZCxiKTtlfHxkLmFkZEV2ZW50TGlzdGVuZXIoYSxjLCEwKSxyYi5hY2Nlc3MoZCxiLChlfHwwKSsxKX0sdGVhcmRvd246ZnVuY3Rpb24oKXt2YXIgZD10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMsZT1yYi5hY2Nlc3MoZCxiKS0xO2U/cmIuYWNjZXNzKGQsYixlKTooZC5yZW1vdmVFdmVudExpc3RlbmVyKGEsYywhMCkscmIucmVtb3ZlKGQsYikpfX19KSxfLmZuLmV4dGVuZCh7b246ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZixnO2lmKCJvYmplY3QiPT10eXBlb2YgYSl7InN0cmluZyIhPXR5cGVvZiBiJiYoYz1jfHxiLGI9dm9pZCAwKTtmb3IoZyBpbiBhKXRoaXMub24oZyxiLGMsYVtnXSxlKTtyZXR1cm4gdGhpc31pZihudWxsPT1jJiZudWxsPT1kPyhkPWIsYz1iPXZvaWQgMCk6bnVsbD09ZCYmKCJzdHJpbmciPT10eXBlb2YgYj8oZD1jLGM9dm9pZCAwKTooZD1jLGM9YixiPXZvaWQgMCkpLGQ9PT0hMSlkPWs7ZWxzZSBpZighZClyZXR1cm4gdGhpcztyZXR1cm4gMT09PWUmJihmPWQsZD1mdW5jdGlvbihhKXtyZXR1cm4gXygpLm9mZihhKSxmLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZC5ndWlkPWYuZ3VpZHx8KGYuZ3VpZD1fLmd1aWQrKykpLHRoaXMuZWFjaChmdW5jdGlvbigpe18uZXZlbnQuYWRkKHRoaXMsYSxkLGMsYil9KX0sb25lOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLm9uKGEsYixjLGQsMSl9LG9mZjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZTtpZihhJiZhLnByZXZlbnREZWZhdWx0JiZhLmhhbmRsZU9iailyZXR1cm4gZD1hLmhhbmRsZU9iaixfKGEuZGVsZWdhdGVUYXJnZXQpLm9mZihkLm5hbWVzcGFjZT9kLm9yaWdUeXBlKyIuIitkLm5hbWVzcGFjZTpkLm9yaWdUeXBlLGQuc2VsZWN0b3IsZC5oYW5kbGVyKSx0aGlzO2lmKCJvYmplY3QiPT10eXBlb2YgYSl7Zm9yKGUgaW4gYSl0aGlzLm9mZihlLGIsYVtlXSk7cmV0dXJuIHRoaXN9cmV0dXJuKGI9PT0hMXx8ImZ1bmN0aW9uIj09dHlwZW9mIGIpJiYoYz1iLGI9dm9pZCAwKSxjPT09ITEmJihjPWspLHRoaXMuZWFjaChmdW5jdGlvbigpe18uZXZlbnQucmVtb3ZlKHRoaXMsYSxjLGIpfSl9LHRyaWdnZXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Xy5ldmVudC50cmlnZ2VyKGEsYix0aGlzKX0pfSx0cmlnZ2VySGFuZGxlcjpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXNbMF07cmV0dXJuIGM/Xy5ldmVudC50cmlnZ2VyKGEsYixjLCEwKTp2b2lkIDB9fSk7dmFyIEViPS88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFtcdzpdKylbXj5dKilcLz4vZ2ksRmI9LzwoW1x3Ol0rKS8sR2I9Lzx8JiM/XHcrOy8sSGI9LzwoPzpzY3JpcHR8c3R5bGV8bGluaykvaSxJYj0vY2hlY2tlZFxzKig/OltePV18PVxzKi5jaGVja2VkLikvaSxKYj0vXiR8XC8oPzpqYXZhfGVjbWEpc2NyaXB0L2ksS2I9L150cnVlXC8oLiopLyxMYj0vXlxzKjwhKD86XFtDREFUQVxbfC0tKXwoPzpcXVxdfC0tKT5ccyokL2csTWI9e29wdGlvbjpbMSwiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPiIsIjwvc2VsZWN0PiJdLHRoZWFkOlsxLCI8dGFibGU+IiwiPC90YWJsZT4iXSxjb2w6WzIsIjx0YWJsZT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSx0ZDpbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il0sX2RlZmF1bHQ6WzAsIiIsIiJdfTtNYi5vcHRncm91cD1NYi5vcHRpb24sTWIudGJvZHk9TWIudGZvb3Q9TWIuY29sZ3JvdXA9TWIuY2FwdGlvbj1NYi50aGVhZCxNYi50aD1NYi50ZCxfLmV4dGVuZCh7Y2xvbmU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnLGg9YS5jbG9uZU5vZGUoITApLGk9Xy5jb250YWlucyhhLm93bmVyRG9jdW1lbnQsYSk7aWYoIShZLm5vQ2xvbmVDaGVja2VkfHwxIT09YS5ub2RlVHlwZSYmMTEhPT1hLm5vZGVUeXBlfHxfLmlzWE1MRG9jKGEpKSlmb3IoZz1yKGgpLGY9cihhKSxkPTAsZT1mLmxlbmd0aDtlPmQ7ZCsrKXMoZltkXSxnW2RdKTtpZihiKWlmKGMpZm9yKGY9Znx8cihhKSxnPWd8fHIoaCksZD0wLGU9Zi5sZW5ndGg7ZT5kO2QrKylxKGZbZF0sZ1tkXSk7ZWxzZSBxKGEsaCk7cmV0dXJuIGc9cihoLCJzY3JpcHQiKSxnLmxlbmd0aD4wJiZwKGcsIWkmJnIoYSwic2NyaXB0IikpLGh9LGJ1aWxkRnJhZ21lbnQ6ZnVuY3Rpb24oYSxiLGMsZCl7Zm9yKHZhciBlLGYsZyxoLGksaixrPWIuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLGw9W10sbT0wLG49YS5sZW5ndGg7bj5tO20rKylpZihlPWFbbV0sZXx8MD09PWUpaWYoIm9iamVjdCI9PT1fLnR5cGUoZSkpXy5tZXJnZShsLGUubm9kZVR5cGU/W2VdOmUpO2Vsc2UgaWYoR2IudGVzdChlKSl7Zm9yKGY9Znx8ay5hcHBlbmRDaGlsZChiLmNyZWF0ZUVsZW1lbnQoImRpdiIpKSxnPShGYi5leGVjKGUpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpLGg9TWJbZ118fE1iLl9kZWZhdWx0LGYuaW5uZXJIVE1MPWhbMV0rZS5yZXBsYWNlKEViLCI8JDE+PC8kMj4iKStoWzJdLGo9aFswXTtqLS07KWY9Zi5sYXN0Q2hpbGQ7Xy5tZXJnZShsLGYuY2hpbGROb2RlcyksZj1rLmZpcnN0Q2hpbGQsZi50ZXh0Q29udGVudD0iIn1lbHNlIGwucHVzaChiLmNyZWF0ZVRleHROb2RlKGUpKTtmb3Ioay50ZXh0Q29udGVudD0iIixtPTA7ZT1sW20rK107KWlmKCghZHx8LTE9PT1fLmluQXJyYXkoZSxkKSkmJihpPV8uY29udGFpbnMoZS5vd25lckRvY3VtZW50LGUpLGY9cihrLmFwcGVuZENoaWxkKGUpLCJzY3JpcHQiKSxpJiZwKGYpLGMpKWZvcihqPTA7ZT1mW2orK107KUpiLnRlc3QoZS50eXBlfHwiIikmJmMucHVzaChlKTtyZXR1cm4ga30sY2xlYW5EYXRhOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYixjLGQsZSxmPV8uZXZlbnQuc3BlY2lhbCxnPTA7dm9pZCAwIT09KGM9YVtnXSk7ZysrKXtpZihfLmFjY2VwdERhdGEoYykmJihlPWNbcmIuZXhwYW5kb10sZSYmKGI9cmIuY2FjaGVbZV0pKSl7aWYoYi5ldmVudHMpZm9yKGQgaW4gYi5ldmVudHMpZltkXT9fLmV2ZW50LnJlbW92ZShjLGQpOl8ucmVtb3ZlRXZlbnQoYyxkLGIuaGFuZGxlKTtyYi5jYWNoZVtlXSYmZGVsZXRlIHJiLmNhY2hlW2VdfWRlbGV0ZSBzYi5jYWNoZVtjW3NiLmV4cGFuZG9dXX19fSksXy5mbi5leHRlbmQoe3RleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIHFiKHRoaXMsZnVuY3Rpb24oYSl7cmV0dXJuIHZvaWQgMD09PWE/Xy50ZXh0KHRoaXMpOnRoaXMuZW1wdHkoKS5lYWNoKGZ1bmN0aW9uKCl7KDE9PT10aGlzLm5vZGVUeXBlfHwxMT09PXRoaXMubm9kZVR5cGV8fDk9PT10aGlzLm5vZGVUeXBlKSYmKHRoaXMudGV4dENvbnRlbnQ9YSl9KX0sbnVsbCxhLGFyZ3VtZW50cy5sZW5ndGgpfSxhcHBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYSl7aWYoMT09PXRoaXMubm9kZVR5cGV8fDExPT09dGhpcy5ub2RlVHlwZXx8OT09PXRoaXMubm9kZVR5cGUpe3ZhciBiPW0odGhpcyxhKTtiLmFwcGVuZENoaWxkKGEpfX0pfSxwcmVwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZ1bmN0aW9uKGEpe2lmKDE9PT10aGlzLm5vZGVUeXBlfHwxMT09PXRoaXMubm9kZVR5cGV8fDk9PT10aGlzLm5vZGVUeXBlKXt2YXIgYj1tKHRoaXMsYSk7Yi5pbnNlcnRCZWZvcmUoYSxiLmZpcnN0Q2hpbGQpfX0pfSxiZWZvcmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcyl9KX0sYWZ0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcy5uZXh0U2libGluZyl9KX0scmVtb3ZlOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjLGQ9YT9fLmZpbHRlcihhLHRoaXMpOnRoaXMsZT0wO251bGwhPShjPWRbZV0pO2UrKylifHwxIT09Yy5ub2RlVHlwZXx8Xy5jbGVhbkRhdGEocihjKSksYy5wYXJlbnROb2RlJiYoYiYmXy5jb250YWlucyhjLm93bmVyRG9jdW1lbnQsYykmJnAocihjLCJzY3JpcHQiKSksYy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGMpKTtyZXR1cm4gdGhpc30sZW1wdHk6ZnVuY3Rpb24oKXtmb3IodmFyIGEsYj0wO251bGwhPShhPXRoaXNbYl0pO2IrKykxPT09YS5ub2RlVHlwZSYmKF8uY2xlYW5EYXRhKHIoYSwhMSkpLGEudGV4dENvbnRlbnQ9IiIpO3JldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbihhLGIpe3JldHVybiBhPW51bGw9PWE/ITE6YSxiPW51bGw9PWI/YTpiLHRoaXMubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIF8uY2xvbmUodGhpcyxhLGIpfSl9LGh0bWw6ZnVuY3Rpb24oYSl7cmV0dXJuIHFiKHRoaXMsZnVuY3Rpb24oYSl7dmFyIGI9dGhpc1swXXx8e30sYz0wLGQ9dGhpcy5sZW5ndGg7aWYodm9pZCAwPT09YSYmMT09PWIubm9kZVR5cGUpcmV0dXJuIGIuaW5uZXJIVE1MO2lmKCJzdHJpbmciPT10eXBlb2YgYSYmIUhiLnRlc3QoYSkmJiFNYlsoRmIuZXhlYyhhKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKV0pe2E9YS5yZXBsYWNlKEViLCI8JDE+PC8kMj4iKTt0cnl7Zm9yKDtkPmM7YysrKWI9dGhpc1tjXXx8e30sMT09PWIubm9kZVR5cGUmJihfLmNsZWFuRGF0YShyKGIsITEpKSxiLmlubmVySFRNTD1hKTtiPTB9Y2F0Y2goZSl7fX1iJiZ0aGlzLmVtcHR5KCkuYXBwZW5kKGEpfSxudWxsLGEsYXJndW1lbnRzLmxlbmd0aCl9LHJlcGxhY2VXaXRoOmZ1bmN0aW9uKCl7dmFyIGE9YXJndW1lbnRzWzBdO3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cyxmdW5jdGlvbihiKXthPXRoaXMucGFyZW50Tm9kZSxfLmNsZWFuRGF0YShyKHRoaXMpKSxhJiZhLnJlcGxhY2VDaGlsZChiLHRoaXMpfSksYSYmKGEubGVuZ3RofHxhLm5vZGVUeXBlKT90aGlzOnRoaXMucmVtb3ZlKCl9LGRldGFjaDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5yZW1vdmUoYSwhMCl9LGRvbU1hbmlwOmZ1bmN0aW9uKGEsYil7YT1TLmFwcGx5KFtdLGEpO3ZhciBjLGQsZSxmLGcsaCxpPTAsaj10aGlzLmxlbmd0aCxrPXRoaXMsbD1qLTEsbT1hWzBdLHA9Xy5pc0Z1bmN0aW9uKG0pO2lmKHB8fGo+MSYmInN0cmluZyI9PXR5cGVvZiBtJiYhWS5jaGVja0Nsb25lJiZJYi50ZXN0KG0pKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYyl7dmFyIGQ9ay5lcShjKTtwJiYoYVswXT1tLmNhbGwodGhpcyxjLGQuaHRtbCgpKSksZC5kb21NYW5pcChhLGIpfSk7aWYoaiYmKGM9Xy5idWlsZEZyYWdtZW50KGEsdGhpc1swXS5vd25lckRvY3VtZW50LCExLHRoaXMpLGQ9Yy5maXJzdENoaWxkLDE9PT1jLmNoaWxkTm9kZXMubGVuZ3RoJiYoYz1kKSxkKSl7Zm9yKGU9Xy5tYXAocihjLCJzY3JpcHQiKSxuKSxmPWUubGVuZ3RoO2o+aTtpKyspZz1jLGkhPT1sJiYoZz1fLmNsb25lKGcsITAsITApLGYmJl8ubWVyZ2UoZSxyKGcsInNjcmlwdCIpKSksYi5jYWxsKHRoaXNbaV0sZyxpKTtpZihmKWZvcihoPWVbZS5sZW5ndGgtMV0ub3duZXJEb2N1bWVudCxfLm1hcChlLG8pLGk9MDtmPmk7aSsrKWc9ZVtpXSxKYi50ZXN0KGcudHlwZXx8IiIpJiYhcmIuYWNjZXNzKGcsImdsb2JhbEV2YWwiKSYmXy5jb250YWlucyhoLGcpJiYoZy5zcmM/Xy5fZXZhbFVybCYmXy5fZXZhbFVybChnLnNyYyk6Xy5nbG9iYWxFdmFsKGcudGV4dENvbnRlbnQucmVwbGFjZShMYiwiIikpKX1yZXR1cm4gdGhpc319KSxfLmVhY2goe2FwcGVuZFRvOiJhcHBlbmQiLHByZXBlbmRUbzoicHJlcGVuZCIsaW5zZXJ0QmVmb3JlOiJiZWZvcmUiLGluc2VydEFmdGVyOiJhZnRlciIscmVwbGFjZUFsbDoicmVwbGFjZVdpdGgifSxmdW5jdGlvbihhLGIpe18uZm5bYV09ZnVuY3Rpb24oYSl7Zm9yKHZhciBjLGQ9W10sZT1fKGEpLGY9ZS5sZW5ndGgtMSxnPTA7Zj49ZztnKyspYz1nPT09Zj90aGlzOnRoaXMuY2xvbmUoITApLF8oZVtnXSlbYl0oYyksVC5hcHBseShkLGMuZ2V0KCkpO3JldHVybiB0aGlzLnB1c2hTdGFjayhkKX19KTt2YXIgTmIsT2I9e30sUGI9L15tYXJnaW4vLFFiPW5ldyBSZWdFeHAoIl4oIit2YisiKSg/IXB4KVthLXolXSskIiwiaSIpLFJiPWZ1bmN0aW9uKGIpe3JldHVybiBiLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcub3BlbmVyP2Iub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGIsbnVsbCk6YS5nZXRDb21wdXRlZFN0eWxlKGIsbnVsbCl9OyFmdW5jdGlvbigpe2Z1bmN0aW9uIGIoKXtnLnN0eWxlLmNzc1RleHQ9Ii13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94Oy1tb3otYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtkaXNwbGF5OmJsb2NrO21hcmdpbi10b3A6MSU7dG9wOjElO2JvcmRlcjoxcHg7cGFkZGluZzoxcHg7d2lkdGg6NHB4O3Bvc2l0aW9uOmFic29sdXRlIixnLmlubmVySFRNTD0iIixlLmFwcGVuZENoaWxkKGYpO3ZhciBiPWEuZ2V0Q29tcHV0ZWRTdHlsZShnLG51bGwpO2M9IjElIiE9PWIudG9wLGQ9IjRweCI9PT1iLndpZHRoLGUucmVtb3ZlQ2hpbGQoZil9dmFyIGMsZCxlPVouZG9jdW1lbnRFbGVtZW50LGY9Wi5jcmVhdGVFbGVtZW50KCJkaXYiKSxnPVouY3JlYXRlRWxlbWVudCgiZGl2Iik7Zy5zdHlsZSYmKGcuc3R5bGUuYmFja2dyb3VuZENsaXA9ImNvbnRlbnQtYm94IixnLmNsb25lTm9kZSghMCkuc3R5bGUuYmFja2dyb3VuZENsaXA9IiIsWS5jbGVhckNsb25lU3R5bGU9ImNvbnRlbnQtYm94Ij09PWcuc3R5bGUuYmFja2dyb3VuZENsaXAsZi5zdHlsZS5jc3NUZXh0PSJib3JkZXI6MDt3aWR0aDowO2hlaWdodDowO3RvcDowO2xlZnQ6LTk5OTlweDttYXJnaW4tdG9wOjFweDtwb3NpdGlvbjphYnNvbHV0ZSIsZi5hcHBlbmRDaGlsZChnKSxhLmdldENvbXB1dGVkU3R5bGUmJl8uZXh0ZW5kKFkse3BpeGVsUG9zaXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gYigpLGN9LGJveFNpemluZ1JlbGlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PWQmJmIoKSxkfSxyZWxpYWJsZU1hcmdpblJpZ2h0OmZ1bmN0aW9uKCl7dmFyIGIsYz1nLmFwcGVuZENoaWxkKFouY3JlYXRlRWxlbWVudCgiZGl2IikpO3JldHVybiBjLnN0eWxlLmNzc1RleHQ9Zy5zdHlsZS5jc3NUZXh0PSItd2Via2l0LWJveC1zaXppbmc6Y29udGVudC1ib3g7LW1vei1ib3gtc2l6aW5nOmNvbnRlbnQtYm94O2JveC1zaXppbmc6Y29udGVudC1ib3g7ZGlzcGxheTpibG9jazttYXJnaW46MDtib3JkZXI6MDtwYWRkaW5nOjAiLGMuc3R5bGUubWFyZ2luUmlnaHQ9Yy5zdHlsZS53aWR0aD0iMCIsZy5zdHlsZS53aWR0aD0iMXB4IixlLmFwcGVuZENoaWxkKGYpLGI9IXBhcnNlRmxvYXQoYS5nZXRDb21wdXRlZFN0eWxlKGMsbnVsbCkubWFyZ2luUmlnaHQpLGUucmVtb3ZlQ2hpbGQoZiksZy5yZW1vdmVDaGlsZChjKSxifX0pKX0oKSxfLnN3YXA9ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGUsZixnPXt9O2ZvcihmIGluIGIpZ1tmXT1hLnN0eWxlW2ZdLGEuc3R5bGVbZl09YltmXTtlPWMuYXBwbHkoYSxkfHxbXSk7Zm9yKGYgaW4gYilhLnN0eWxlW2ZdPWdbZl07cmV0dXJuIGV9O3ZhciBTYj0vXihub25lfHRhYmxlKD8hLWNbZWFdKS4rKS8sVGI9bmV3IFJlZ0V4cCgiXigiK3ZiKyIpKC4qKSQiLCJpIiksVWI9bmV3IFJlZ0V4cCgiXihbKy1dKT0oIit2YisiKSIsImkiKSxWYj17cG9zaXRpb246ImFic29sdXRlIix2aXNpYmlsaXR5OiJoaWRkZW4iLGRpc3BsYXk6ImJsb2NrIn0sV2I9e2xldHRlclNwYWNpbmc6IjAiLGZvbnRXZWlnaHQ6IjQwMCJ9LFhiPVsiV2Via2l0IiwiTyIsIk1veiIsIm1zIl07Xy5leHRlbmQoe2Nzc0hvb2tzOntvcGFjaXR5OntnZXQ6ZnVuY3Rpb24oYSxiKXtpZihiKXt2YXIgYz12KGEsIm9wYWNpdHkiKTtyZXR1cm4iIj09PWM/IjEiOmN9fX19LGNzc051bWJlcjp7Y29sdW1uQ291bnQ6ITAsZmlsbE9wYWNpdHk6ITAsZmxleEdyb3c6ITAsZmxleFNocmluazohMCxmb250V2VpZ2h0OiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHdpZG93czohMCx6SW5kZXg6ITAsem9vbTohMH0sY3NzUHJvcHM6eyJmbG9hdCI6ImNzc0Zsb2F0In0sc3R5bGU6ZnVuY3Rpb24oYSxiLGMsZCl7aWYoYSYmMyE9PWEubm9kZVR5cGUmJjghPT1hLm5vZGVUeXBlJiZhLnN0eWxlKXt2YXIgZSxmLGcsaD1fLmNhbWVsQ2FzZShiKSxpPWEuc3R5bGU7cmV0dXJuIGI9Xy5jc3NQcm9wc1toXXx8KF8uY3NzUHJvcHNbaF09eChpLGgpKSxnPV8uY3NzSG9va3NbYl18fF8uY3NzSG9va3NbaF0sdm9pZCAwPT09Yz9nJiYiZ2V0ImluIGcmJnZvaWQgMCE9PShlPWcuZ2V0KGEsITEsZCkpP2U6aVtiXTooZj10eXBlb2YgYywic3RyaW5nIj09PWYmJihlPVViLmV4ZWMoYykpJiYoYz0oZVsxXSsxKSplWzJdK3BhcnNlRmxvYXQoXy5jc3MoYSxiKSksZj0ibnVtYmVyIiksbnVsbCE9YyYmYz09PWMmJigibnVtYmVyIiE9PWZ8fF8uY3NzTnVtYmVyW2hdfHwoYys9InB4IiksWS5jbGVhckNsb25lU3R5bGV8fCIiIT09Y3x8MCE9PWIuaW5kZXhPZigiYmFja2dyb3VuZCIpfHwoaVtiXT0iaW5oZXJpdCIpLGcmJiJzZXQiaW4gZyYmdm9pZCAwPT09KGM9Zy5zZXQoYSxjLGQpKXx8KGlbYl09YykpLHZvaWQgMCl9fSxjc3M6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGUsZixnLGg9Xy5jYW1lbENhc2UoYik7cmV0dXJuIGI9Xy5jc3NQcm9wc1toXXx8KF8uY3NzUHJvcHNbaF09eChhLnN0eWxlLGgpKSxnPV8uY3NzSG9va3NbYl18fF8uY3NzSG9va3NbaF0sZyYmImdldCJpbiBnJiYoZT1nLmdldChhLCEwLGMpKSx2b2lkIDA9PT1lJiYoZT12KGEsYixkKSksIm5vcm1hbCI9PT1lJiZiIGluIFdiJiYoZT1XYltiXSksIiI9PT1jfHxjPyhmPXBhcnNlRmxvYXQoZSksYz09PSEwfHxfLmlzTnVtZXJpYyhmKT9mfHwwOmUpOmV9fSksXy5lYWNoKFsiaGVpZ2h0Iiwid2lkdGgiXSxmdW5jdGlvbihhLGIpe18uY3NzSG9va3NbYl09e2dldDpmdW5jdGlvbihhLGMsZCl7cmV0dXJuIGM/U2IudGVzdChfLmNzcyhhLCJkaXNwbGF5IikpJiYwPT09YS5vZmZzZXRXaWR0aD9fLnN3YXAoYSxWYixmdW5jdGlvbigpe3JldHVybiBBKGEsYixkKX0pOkEoYSxiLGQpOnZvaWQgMH0sc2V0OmZ1bmN0aW9uKGEsYyxkKXt2YXIgZT1kJiZSYihhKTtyZXR1cm4geShhLGMsZD96KGEsYixkLCJib3JkZXItYm94Ij09PV8uY3NzKGEsImJveFNpemluZyIsITEsZSksZSk6MCl9fX0pLF8uY3NzSG9va3MubWFyZ2luUmlnaHQ9dyhZLnJlbGlhYmxlTWFyZ2luUmlnaHQsZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj9fLnN3YXAoYSx7ZGlzcGxheToiaW5saW5lLWJsb2NrIn0sdixbYSwibWFyZ2luUmlnaHQiXSk6dm9pZCAwfSksXy5lYWNoKHttYXJnaW46IiIscGFkZGluZzoiIixib3JkZXI6IldpZHRoIn0sZnVuY3Rpb24oYSxiKXtfLmNzc0hvb2tzW2ErYl09e2V4cGFuZDpmdW5jdGlvbihjKXtmb3IodmFyIGQ9MCxlPXt9LGY9InN0cmluZyI9PXR5cGVvZiBjP2Muc3BsaXQoIiAiKTpbY107ND5kO2QrKyllW2Erd2JbZF0rYl09ZltkXXx8ZltkLTJdfHxmWzBdO3JldHVybiBlfX0sUGIudGVzdChhKXx8KF8uY3NzSG9va3NbYStiXS5zZXQ9eSl9KSxfLmZuLmV4dGVuZCh7Y3NzOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHFiKHRoaXMsZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZj17fSxnPTA7aWYoXy5pc0FycmF5KGIpKXtmb3IoZD1SYihhKSxlPWIubGVuZ3RoO2U+ZztnKyspZltiW2ddXT1fLmNzcyhhLGJbZ10sITEsZCk7cmV0dXJuIGZ9cmV0dXJuIHZvaWQgMCE9PWM/Xy5zdHlsZShhLGIsYyk6Xy5jc3MoYSxiKX0sYSxiLGFyZ3VtZW50cy5sZW5ndGg+MSl9LHNob3c6ZnVuY3Rpb24oKXtyZXR1cm4gQih0aGlzLCEwKX0saGlkZTpmdW5jdGlvbigpe3JldHVybiBCKHRoaXMpfSx0b2dnbGU6ZnVuY3Rpb24oYSl7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgYT9hP3RoaXMuc2hvdygpOnRoaXMuaGlkZSgpOnRoaXMuZWFjaChmdW5jdGlvbigpe3hiKHRoaXMpP18odGhpcykuc2hvdygpOl8odGhpcykuaGlkZSgpfSl9fSksXy5Ud2Vlbj1DLEMucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpDLGluaXQ6ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3RoaXMuZWxlbT1hLHRoaXMucHJvcD1jLHRoaXMuZWFzaW5nPWV8fCJzd2luZyIsdGhpcy5vcHRpb25zPWIsdGhpcy5zdGFydD10aGlzLm5vdz10aGlzLmN1cigpLHRoaXMuZW5kPWQsdGhpcy51bml0PWZ8fChfLmNzc051bWJlcltjXT8iIjoicHgiKX0sY3VyOmZ1bmN0aW9uKCl7dmFyIGE9Qy5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gYSYmYS5nZXQ/YS5nZXQodGhpcyk6Qy5wcm9wSG9va3MuX2RlZmF1bHQuZ2V0KHRoaXMpfSxydW46ZnVuY3Rpb24oYSl7dmFyIGIsYz1DLnByb3BIb29rc1t0aGlzLnByb3BdO3JldHVybiB0aGlzLnBvcz1iPXRoaXMub3B0aW9ucy5kdXJhdGlvbj9fLmVhc2luZ1t0aGlzLmVhc2luZ10oYSx0aGlzLm9wdGlvbnMuZHVyYXRpb24qYSwwLDEsdGhpcy5vcHRpb25zLmR1cmF0aW9uKTphLHRoaXMubm93PSh0aGlzLmVuZC10aGlzLnN0YXJ0KSpiK3RoaXMuc3RhcnQsdGhpcy5vcHRpb25zLnN0ZXAmJnRoaXMub3B0aW9ucy5zdGVwLmNhbGwodGhpcy5lbGVtLHRoaXMubm93LHRoaXMpLGMmJmMuc2V0P2Muc2V0KHRoaXMpOkMucHJvcEhvb2tzLl9kZWZhdWx0LnNldCh0aGlzKSx0aGlzfX0sQy5wcm90b3R5cGUuaW5pdC5wcm90b3R5cGU9Qy5wcm90b3R5cGUsQy5wcm9wSG9va3M9e19kZWZhdWx0OntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI7cmV0dXJuIG51bGw9PWEuZWxlbVthLnByb3BdfHxhLmVsZW0uc3R5bGUmJm51bGwhPWEuZWxlbS5zdHlsZVthLnByb3BdPyhiPV8uY3NzKGEuZWxlbSxhLnByb3AsIiIpLGImJiJhdXRvIiE9PWI/YjowKTphLmVsZW1bYS5wcm9wXX0sc2V0OmZ1bmN0aW9uKGEpe18uZnguc3RlcFthLnByb3BdP18uZnguc3RlcFthLnByb3BdKGEpOmEuZWxlbS5zdHlsZSYmKG51bGwhPWEuZWxlbS5zdHlsZVtfLmNzc1Byb3BzW2EucHJvcF1dfHxfLmNzc0hvb2tzW2EucHJvcF0pP18uc3R5bGUoYS5lbGVtLGEucHJvcCxhLm5vdythLnVuaXQpOmEuZWxlbVthLnByb3BdPWEubm93fX19LEMucHJvcEhvb2tzLnNjcm9sbFRvcD1DLnByb3BIb29rcy5zY3JvbGxMZWZ0PXtzZXQ6ZnVuY3Rpb24oYSl7YS5lbGVtLm5vZGVUeXBlJiZhLmVsZW0ucGFyZW50Tm9kZSYmKGEuZWxlbVthLnByb3BdPWEubm93KX19LF8uZWFzaW5nPXtsaW5lYXI6ZnVuY3Rpb24oYSl7cmV0dXJuIGF9LHN3aW5nOmZ1bmN0aW9uKGEpe3JldHVybi41LU1hdGguY29zKGEqTWF0aC5QSSkvMn19LF8uZng9Qy5wcm90b3R5cGUuaW5pdCxfLmZ4LnN0ZXA9e307dmFyIFliLFpiLCRiPS9eKD86dG9nZ2xlfHNob3d8aGlkZSkkLyxfYj1uZXcgUmVnRXhwKCJeKD86KFsrLV0pPXwpKCIrdmIrIikoW2EteiVdKikkIiwiaSIpLGFjPS9xdWV1ZUhvb2tzJC8sYmM9W0ddLGNjPXsiKiI6W2Z1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5jcmVhdGVUd2VlbihhLGIpLGQ9Yy5jdXIoKSxlPV9iLmV4ZWMoYiksZj1lJiZlWzNdfHwoXy5jc3NOdW1iZXJbYV0/IiI6InB4IiksZz0oXy5jc3NOdW1iZXJbYV18fCJweCIhPT1mJiYrZCkmJl9iLmV4ZWMoXy5jc3MoYy5lbGVtLGEpKSxoPTEsaT0yMDtpZihnJiZnWzNdIT09Zil7Zj1mfHxnWzNdLGU9ZXx8W10sZz0rZHx8MTtkbyBoPWh8fCIuNSIsZy89aCxfLnN0eWxlKGMuZWxlbSxhLGcrZik7d2hpbGUoaCE9PShoPWMuY3VyKCkvZCkmJjEhPT1oJiYtLWkpfXJldHVybiBlJiYoZz1jLnN0YXJ0PStnfHwrZHx8MCxjLnVuaXQ9ZixjLmVuZD1lWzFdP2crKGVbMV0rMSkqZVsyXTorZVsyXSksY31dfTtfLkFuaW1hdGlvbj1fLmV4dGVuZChJLHt0d2VlbmVyOmZ1bmN0aW9uKGEsYil7Xy5pc0Z1bmN0aW9uKGEpPyhiPWEsYT1bIioiXSk6YT1hLnNwbGl0KCIgIik7Zm9yKHZhciBjLGQ9MCxlPWEubGVuZ3RoO2U+ZDtkKyspYz1hW2RdLGNjW2NdPWNjW2NdfHxbXSxjY1tjXS51bnNoaWZ0KGIpfSxwcmVmaWx0ZXI6ZnVuY3Rpb24oYSxiKXtiP2JjLnVuc2hpZnQoYSk6YmMucHVzaChhKX19KSxfLnNwZWVkPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hJiYib2JqZWN0Ij09dHlwZW9mIGE/Xy5leHRlbmQoe30sYSk6e2NvbXBsZXRlOmN8fCFjJiZifHxfLmlzRnVuY3Rpb24oYSkmJmEsZHVyYXRpb246YSxlYXNpbmc6YyYmYnx8YiYmIV8uaXNGdW5jdGlvbihiKSYmYn07cmV0dXJuIGQuZHVyYXRpb249Xy5meC5vZmY/MDoibnVtYmVyIj09dHlwZW9mIGQuZHVyYXRpb24/ZC5kdXJhdGlvbjpkLmR1cmF0aW9uIGluIF8uZnguc3BlZWRzP18uZnguc3BlZWRzW2QuZHVyYXRpb25dOl8uZnguc3BlZWRzLl9kZWZhdWx0LChudWxsPT1kLnF1ZXVlfHxkLnF1ZXVlPT09ITApJiYoZC5xdWV1ZT0iZngiKSxkLm9sZD1kLmNvbXBsZXRlLGQuY29tcGxldGU9ZnVuY3Rpb24oKXtfLmlzRnVuY3Rpb24oZC5vbGQpJiZkLm9sZC5jYWxsKHRoaXMpLGQucXVldWUmJl8uZGVxdWV1ZSh0aGlzLGQucXVldWUpfSxkfSxfLmZuLmV4dGVuZCh7ZmFkZVRvOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLmZpbHRlcih4YikuY3NzKCJvcGFjaXR5IiwwKS5zaG93KCkuZW5kKCkuYW5pbWF0ZSh7b3BhY2l0eTpifSxhLGMsZCl9LGFuaW1hdGU6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9Xy5pc0VtcHR5T2JqZWN0KGEpLGY9Xy5zcGVlZChiLGMsZCksZz1mdW5jdGlvbigpe3ZhciBiPUkodGhpcyxfLmV4dGVuZCh7fSxhKSxmKTsoZXx8cmIuZ2V0KHRoaXMsImZpbmlzaCIpKSYmYi5zdG9wKCEwKX07cmV0dXJuIGcuZmluaXNoPWcsZXx8Zi5xdWV1ZT09PSExP3RoaXMuZWFjaChnKTp0aGlzLnF1ZXVlKGYucXVldWUsZyl9LHN0b3A6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWZ1bmN0aW9uKGEpe3ZhciBiPWEuc3RvcDtkZWxldGUgYS5zdG9wLGIoYyl9O3JldHVybiJzdHJpbmciIT10eXBlb2YgYSYmKGM9YixiPWEsYT12b2lkIDApLGImJmEhPT0hMSYmdGhpcy5xdWV1ZShhfHwiZngiLFtdKSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj0hMCxlPW51bGwhPWEmJmErInF1ZXVlSG9va3MiLGY9Xy50aW1lcnMsZz1yYi5nZXQodGhpcyk7aWYoZSlnW2VdJiZnW2VdLnN0b3AmJmQoZ1tlXSk7ZWxzZSBmb3IoZSBpbiBnKWdbZV0mJmdbZV0uc3RvcCYmYWMudGVzdChlKSYmZChnW2VdKTtmb3IoZT1mLmxlbmd0aDtlLS07KWZbZV0uZWxlbSE9PXRoaXN8fG51bGwhPWEmJmZbZV0ucXVldWUhPT1hfHwoZltlXS5hbmltLnN0b3AoYyksYj0hMSxmLnNwbGljZShlLDEpKTsoYnx8IWMpJiZfLmRlcXVldWUodGhpcyxhKX0pfSxmaW5pc2g6ZnVuY3Rpb24oYSl7cmV0dXJuIGEhPT0hMSYmKGE9YXx8ImZ4IiksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGIsYz1yYi5nZXQodGhpcyksZD1jW2ErInF1ZXVlIl0sZT1jW2ErInF1ZXVlSG9va3MiXSxmPV8udGltZXJzLGc9ZD9kLmxlbmd0aDowO2ZvcihjLmZpbmlzaD0hMCxfLnF1ZXVlKHRoaXMsYSxbXSksZSYmZS5zdG9wJiZlLnN0b3AuY2FsbCh0aGlzLCEwKSxiPWYubGVuZ3RoO2ItLTspZltiXS5lbGVtPT09dGhpcyYmZltiXS5xdWV1ZT09PWEmJihmW2JdLmFuaW0uc3RvcCghMCksZi5zcGxpY2UoYiwxKSk7CmZvcihiPTA7Zz5iO2IrKylkW2JdJiZkW2JdLmZpbmlzaCYmZFtiXS5maW5pc2guY2FsbCh0aGlzKTtkZWxldGUgYy5maW5pc2h9KX19KSxfLmVhY2goWyJ0b2dnbGUiLCJzaG93IiwiaGlkZSJdLGZ1bmN0aW9uKGEsYil7dmFyIGM9Xy5mbltiXTtfLmZuW2JdPWZ1bmN0aW9uKGEsZCxlKXtyZXR1cm4gbnVsbD09YXx8ImJvb2xlYW4iPT10eXBlb2YgYT9jLmFwcGx5KHRoaXMsYXJndW1lbnRzKTp0aGlzLmFuaW1hdGUoRShiLCEwKSxhLGQsZSl9fSksXy5lYWNoKHtzbGlkZURvd246RSgic2hvdyIpLHNsaWRlVXA6RSgiaGlkZSIpLHNsaWRlVG9nZ2xlOkUoInRvZ2dsZSIpLGZhZGVJbjp7b3BhY2l0eToic2hvdyJ9LGZhZGVPdXQ6e29wYWNpdHk6ImhpZGUifSxmYWRlVG9nZ2xlOntvcGFjaXR5OiJ0b2dnbGUifX0sZnVuY3Rpb24oYSxiKXtfLmZuW2FdPWZ1bmN0aW9uKGEsYyxkKXtyZXR1cm4gdGhpcy5hbmltYXRlKGIsYSxjLGQpfX0pLF8udGltZXJzPVtdLF8uZngudGljaz1mdW5jdGlvbigpe3ZhciBhLGI9MCxjPV8udGltZXJzO2ZvcihZYj1fLm5vdygpO2I8Yy5sZW5ndGg7YisrKWE9Y1tiXSxhKCl8fGNbYl0hPT1hfHxjLnNwbGljZShiLS0sMSk7Yy5sZW5ndGh8fF8uZnguc3RvcCgpLFliPXZvaWQgMH0sXy5meC50aW1lcj1mdW5jdGlvbihhKXtfLnRpbWVycy5wdXNoKGEpLGEoKT9fLmZ4LnN0YXJ0KCk6Xy50aW1lcnMucG9wKCl9LF8uZnguaW50ZXJ2YWw9MTMsXy5meC5zdGFydD1mdW5jdGlvbigpe1pifHwoWmI9c2V0SW50ZXJ2YWwoXy5meC50aWNrLF8uZnguaW50ZXJ2YWwpKX0sXy5meC5zdG9wPWZ1bmN0aW9uKCl7Y2xlYXJJbnRlcnZhbChaYiksWmI9bnVsbH0sXy5meC5zcGVlZHM9e3Nsb3c6NjAwLGZhc3Q6MjAwLF9kZWZhdWx0OjQwMH0sXy5mbi5kZWxheT1mdW5jdGlvbihhLGIpe3JldHVybiBhPV8uZng/Xy5meC5zcGVlZHNbYV18fGE6YSxiPWJ8fCJmeCIsdGhpcy5xdWV1ZShiLGZ1bmN0aW9uKGIsYyl7dmFyIGQ9c2V0VGltZW91dChiLGEpO2Muc3RvcD1mdW5jdGlvbigpe2NsZWFyVGltZW91dChkKX19KX0sZnVuY3Rpb24oKXt2YXIgYT1aLmNyZWF0ZUVsZW1lbnQoImlucHV0IiksYj1aLmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpLGM9Yi5hcHBlbmRDaGlsZChaLmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpKTthLnR5cGU9ImNoZWNrYm94IixZLmNoZWNrT249IiIhPT1hLnZhbHVlLFkub3B0U2VsZWN0ZWQ9Yy5zZWxlY3RlZCxiLmRpc2FibGVkPSEwLFkub3B0RGlzYWJsZWQ9IWMuZGlzYWJsZWQsYT1aLmNyZWF0ZUVsZW1lbnQoImlucHV0IiksYS52YWx1ZT0idCIsYS50eXBlPSJyYWRpbyIsWS5yYWRpb1ZhbHVlPSJ0Ij09PWEudmFsdWV9KCk7dmFyIGRjLGVjLGZjPV8uZXhwci5hdHRySGFuZGxlO18uZm4uZXh0ZW5kKHthdHRyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHFiKHRoaXMsXy5hdHRyLGEsYixhcmd1bWVudHMubGVuZ3RoPjEpfSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtfLnJlbW92ZUF0dHIodGhpcyxhKX0pfX0pLF8uZXh0ZW5kKHthdHRyOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGY9YS5ub2RlVHlwZTtpZihhJiYzIT09ZiYmOCE9PWYmJjIhPT1mKXJldHVybiB0eXBlb2YgYS5nZXRBdHRyaWJ1dGU9PT16Yj9fLnByb3AoYSxiLGMpOigxPT09ZiYmXy5pc1hNTERvYyhhKXx8KGI9Yi50b0xvd2VyQ2FzZSgpLGQ9Xy5hdHRySG9va3NbYl18fChfLmV4cHIubWF0Y2guYm9vbC50ZXN0KGIpP2VjOmRjKSksdm9pZCAwPT09Yz9kJiYiZ2V0ImluIGQmJm51bGwhPT0oZT1kLmdldChhLGIpKT9lOihlPV8uZmluZC5hdHRyKGEsYiksbnVsbD09ZT92b2lkIDA6ZSk6bnVsbCE9PWM/ZCYmInNldCJpbiBkJiZ2b2lkIDAhPT0oZT1kLnNldChhLGMsYikpP2U6KGEuc2V0QXR0cmlidXRlKGIsYysiIiksYyk6KF8ucmVtb3ZlQXR0cihhLGIpLHZvaWQgMCkpfSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlPTAsZj1iJiZiLm1hdGNoKG5iKTtpZihmJiYxPT09YS5ub2RlVHlwZSlmb3IoO2M9ZltlKytdOylkPV8ucHJvcEZpeFtjXXx8YyxfLmV4cHIubWF0Y2guYm9vbC50ZXN0KGMpJiYoYVtkXT0hMSksYS5yZW1vdmVBdHRyaWJ1dGUoYyl9LGF0dHJIb29rczp7dHlwZTp7c2V0OmZ1bmN0aW9uKGEsYil7aWYoIVkucmFkaW9WYWx1ZSYmInJhZGlvIj09PWImJl8ubm9kZU5hbWUoYSwiaW5wdXQiKSl7dmFyIGM9YS52YWx1ZTtyZXR1cm4gYS5zZXRBdHRyaWJ1dGUoInR5cGUiLGIpLGMmJihhLnZhbHVlPWMpLGJ9fX19fSksZWM9e3NldDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGI9PT0hMT9fLnJlbW92ZUF0dHIoYSxjKTphLnNldEF0dHJpYnV0ZShjLGMpLGN9fSxfLmVhY2goXy5leHByLm1hdGNoLmJvb2wuc291cmNlLm1hdGNoKC9cdysvZyksZnVuY3Rpb24oYSxiKXt2YXIgYz1mY1tiXXx8Xy5maW5kLmF0dHI7ZmNbYl09ZnVuY3Rpb24oYSxiLGQpe3ZhciBlLGY7cmV0dXJuIGR8fChmPWZjW2JdLGZjW2JdPWUsZT1udWxsIT1jKGEsYixkKT9iLnRvTG93ZXJDYXNlKCk6bnVsbCxmY1tiXT1mKSxlfX0pO3ZhciBnYz0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pO18uZm4uZXh0ZW5kKHtwcm9wOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHFiKHRoaXMsXy5wcm9wLGEsYixhcmd1bWVudHMubGVuZ3RoPjEpfSxyZW1vdmVQcm9wOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtkZWxldGUgdGhpc1tfLnByb3BGaXhbYV18fGFdfSl9fSksXy5leHRlbmQoe3Byb3BGaXg6eyJmb3IiOiJodG1sRm9yIiwiY2xhc3MiOiJjbGFzc05hbWUifSxwcm9wOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGYsZz1hLm5vZGVUeXBlO2lmKGEmJjMhPT1nJiY4IT09ZyYmMiE9PWcpcmV0dXJuIGY9MSE9PWd8fCFfLmlzWE1MRG9jKGEpLGYmJihiPV8ucHJvcEZpeFtiXXx8YixlPV8ucHJvcEhvb2tzW2JdKSx2b2lkIDAhPT1jP2UmJiJzZXQiaW4gZSYmdm9pZCAwIT09KGQ9ZS5zZXQoYSxjLGIpKT9kOmFbYl09YzplJiYiZ2V0ImluIGUmJm51bGwhPT0oZD1lLmdldChhLGIpKT9kOmFbYl19LHByb3BIb29rczp7dGFiSW5kZXg6e2dldDpmdW5jdGlvbihhKXtyZXR1cm4gYS5oYXNBdHRyaWJ1dGUoInRhYmluZGV4Iil8fGdjLnRlc3QoYS5ub2RlTmFtZSl8fGEuaHJlZj9hLnRhYkluZGV4Oi0xfX19fSksWS5vcHRTZWxlY3RlZHx8KF8ucHJvcEhvb2tzLnNlbGVjdGVkPXtnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5wYXJlbnROb2RlO3JldHVybiBiJiZiLnBhcmVudE5vZGUmJmIucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4LG51bGx9fSksXy5lYWNoKFsidGFiSW5kZXgiLCJyZWFkT25seSIsIm1heExlbmd0aCIsImNlbGxTcGFjaW5nIiwiY2VsbFBhZGRpbmciLCJyb3dTcGFuIiwiY29sU3BhbiIsInVzZU1hcCIsImZyYW1lQm9yZGVyIiwiY29udGVudEVkaXRhYmxlIl0sZnVuY3Rpb24oKXtfLnByb3BGaXhbdGhpcy50b0xvd2VyQ2FzZSgpXT10aGlzfSk7dmFyIGhjPS9bXHRcclxuXGZdL2c7Xy5mbi5leHRlbmQoe2FkZENsYXNzOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlLGYsZyxoPSJzdHJpbmciPT10eXBlb2YgYSYmYSxpPTAsaj10aGlzLmxlbmd0aDtpZihfLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtfKHRoaXMpLmFkZENsYXNzKGEuY2FsbCh0aGlzLGIsdGhpcy5jbGFzc05hbWUpKX0pO2lmKGgpZm9yKGI9KGF8fCIiKS5tYXRjaChuYil8fFtdO2o+aTtpKyspaWYoYz10aGlzW2ldLGQ9MT09PWMubm9kZVR5cGUmJihjLmNsYXNzTmFtZT8oIiAiK2MuY2xhc3NOYW1lKyIgIikucmVwbGFjZShoYywiICIpOiIgIiksZCl7Zm9yKGY9MDtlPWJbZisrXTspZC5pbmRleE9mKCIgIitlKyIgIik8MCYmKGQrPWUrIiAiKTtnPV8udHJpbShkKSxjLmNsYXNzTmFtZSE9PWcmJihjLmNsYXNzTmFtZT1nKX1yZXR1cm4gdGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGg9MD09PWFyZ3VtZW50cy5sZW5ndGh8fCJzdHJpbmciPT10eXBlb2YgYSYmYSxpPTAsaj10aGlzLmxlbmd0aDtpZihfLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtfKHRoaXMpLnJlbW92ZUNsYXNzKGEuY2FsbCh0aGlzLGIsdGhpcy5jbGFzc05hbWUpKX0pO2lmKGgpZm9yKGI9KGF8fCIiKS5tYXRjaChuYil8fFtdO2o+aTtpKyspaWYoYz10aGlzW2ldLGQ9MT09PWMubm9kZVR5cGUmJihjLmNsYXNzTmFtZT8oIiAiK2MuY2xhc3NOYW1lKyIgIikucmVwbGFjZShoYywiICIpOiIiKSxkKXtmb3IoZj0wO2U9YltmKytdOylmb3IoO2QuaW5kZXhPZigiICIrZSsiICIpPj0wOylkPWQucmVwbGFjZSgiICIrZSsiICIsIiAiKTtnPWE/Xy50cmltKGQpOiIiLGMuY2xhc3NOYW1lIT09ZyYmKGMuY2xhc3NOYW1lPWcpfXJldHVybiB0aGlzfSx0b2dnbGVDbGFzczpmdW5jdGlvbihhLGIpe3ZhciBjPXR5cGVvZiBhO3JldHVybiJib29sZWFuIj09dHlwZW9mIGImJiJzdHJpbmciPT09Yz9iP3RoaXMuYWRkQ2xhc3MoYSk6dGhpcy5yZW1vdmVDbGFzcyhhKTp0aGlzLmVhY2goXy5pc0Z1bmN0aW9uKGEpP2Z1bmN0aW9uKGMpe18odGhpcykudG9nZ2xlQ2xhc3MoYS5jYWxsKHRoaXMsYyx0aGlzLmNsYXNzTmFtZSxiKSxiKX06ZnVuY3Rpb24oKXtpZigic3RyaW5nIj09PWMpZm9yKHZhciBiLGQ9MCxlPV8odGhpcyksZj1hLm1hdGNoKG5iKXx8W107Yj1mW2QrK107KWUuaGFzQ2xhc3MoYik/ZS5yZW1vdmVDbGFzcyhiKTplLmFkZENsYXNzKGIpO2Vsc2UoYz09PXpifHwiYm9vbGVhbiI9PT1jKSYmKHRoaXMuY2xhc3NOYW1lJiZyYi5zZXQodGhpcywiX19jbGFzc05hbWVfXyIsdGhpcy5jbGFzc05hbWUpLHRoaXMuY2xhc3NOYW1lPXRoaXMuY2xhc3NOYW1lfHxhPT09ITE/IiI6cmIuZ2V0KHRoaXMsIl9fY2xhc3NOYW1lX18iKXx8IiIpfSl9LGhhc0NsYXNzOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0iICIrYSsiICIsYz0wLGQ9dGhpcy5sZW5ndGg7ZD5jO2MrKylpZigxPT09dGhpc1tjXS5ub2RlVHlwZSYmKCIgIit0aGlzW2NdLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UoaGMsIiAiKS5pbmRleE9mKGIpPj0wKXJldHVybiEwO3JldHVybiExfX0pO3ZhciBpYz0vXHIvZztfLmZuLmV4dGVuZCh7dmFsOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlPXRoaXNbMF07e2lmKGFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGQ9Xy5pc0Z1bmN0aW9uKGEpLHRoaXMuZWFjaChmdW5jdGlvbihjKXt2YXIgZTsxPT09dGhpcy5ub2RlVHlwZSYmKGU9ZD9hLmNhbGwodGhpcyxjLF8odGhpcykudmFsKCkpOmEsbnVsbD09ZT9lPSIiOiJudW1iZXIiPT10eXBlb2YgZT9lKz0iIjpfLmlzQXJyYXkoZSkmJihlPV8ubWFwKGUsZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/IiI6YSsiIn0pKSxiPV8udmFsSG9va3NbdGhpcy50eXBlXXx8Xy52YWxIb29rc1t0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldLGImJiJzZXQiaW4gYiYmdm9pZCAwIT09Yi5zZXQodGhpcyxlLCJ2YWx1ZSIpfHwodGhpcy52YWx1ZT1lKSl9KTtpZihlKXJldHVybiBiPV8udmFsSG9va3NbZS50eXBlXXx8Xy52YWxIb29rc1tlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldLGImJiJnZXQiaW4gYiYmdm9pZCAwIT09KGM9Yi5nZXQoZSwidmFsdWUiKSk/YzooYz1lLnZhbHVlLCJzdHJpbmciPT10eXBlb2YgYz9jLnJlcGxhY2UoaWMsIiIpOm51bGw9PWM/IiI6Yyl9fX0pLF8uZXh0ZW5kKHt2YWxIb29rczp7b3B0aW9uOntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9Xy5maW5kLmF0dHIoYSwidmFsdWUiKTtyZXR1cm4gbnVsbCE9Yj9iOl8udHJpbShfLnRleHQoYSkpfX0sc2VsZWN0OntnZXQ6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiLGMsZD1hLm9wdGlvbnMsZT1hLnNlbGVjdGVkSW5kZXgsZj0ic2VsZWN0LW9uZSI9PT1hLnR5cGV8fDA+ZSxnPWY/bnVsbDpbXSxoPWY/ZSsxOmQubGVuZ3RoLGk9MD5lP2g6Zj9lOjA7aD5pO2krKylpZihjPWRbaV0sISghYy5zZWxlY3RlZCYmaSE9PWV8fChZLm9wdERpc2FibGVkP2MuZGlzYWJsZWQ6bnVsbCE9PWMuZ2V0QXR0cmlidXRlKCJkaXNhYmxlZCIpKXx8Yy5wYXJlbnROb2RlLmRpc2FibGVkJiZfLm5vZGVOYW1lKGMucGFyZW50Tm9kZSwib3B0Z3JvdXAiKSkpe2lmKGI9XyhjKS52YWwoKSxmKXJldHVybiBiO2cucHVzaChiKX1yZXR1cm4gZ30sc2V0OmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjLGQsZT1hLm9wdGlvbnMsZj1fLm1ha2VBcnJheShiKSxnPWUubGVuZ3RoO2ctLTspZD1lW2ddLChkLnNlbGVjdGVkPV8uaW5BcnJheShkLnZhbHVlLGYpPj0wKSYmKGM9ITApO3JldHVybiBjfHwoYS5zZWxlY3RlZEluZGV4PS0xKSxmfX19fSksXy5lYWNoKFsicmFkaW8iLCJjaGVja2JveCJdLGZ1bmN0aW9uKCl7Xy52YWxIb29rc1t0aGlzXT17c2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uaXNBcnJheShiKT9hLmNoZWNrZWQ9Xy5pbkFycmF5KF8oYSkudmFsKCksYik+PTA6dm9pZCAwfX0sWS5jaGVja09ufHwoXy52YWxIb29rc1t0aGlzXS5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PT1hLmdldEF0dHJpYnV0ZSgidmFsdWUiKT8ib24iOmEudmFsdWV9KX0pLF8uZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IGxvYWQgcmVzaXplIHNjcm9sbCB1bmxvYWQgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe18uZm5bYl09ZnVuY3Rpb24oYSxjKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4wP3RoaXMub24oYixudWxsLGEsYyk6dGhpcy50cmlnZ2VyKGIpfX0pLF8uZm4uZXh0ZW5kKHtob3ZlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm1vdXNlZW50ZXIoYSkubW91c2VsZWF2ZShifHxhKX0sYmluZDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMub24oYSxudWxsLGIsYyl9LHVuYmluZDpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm9mZihhLG51bGwsYil9LGRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLm9uKGIsYSxjLGQpfSx1bmRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5vZmYoYSwiKioiKTp0aGlzLm9mZihiLGF8fCIqKiIsYyl9fSk7dmFyIGpjPV8ubm93KCksa2M9L1w/LztfLnBhcnNlSlNPTj1mdW5jdGlvbihhKXtyZXR1cm4gSlNPTi5wYXJzZShhKyIiKX0sXy5wYXJzZVhNTD1mdW5jdGlvbihhKXt2YXIgYixjO2lmKCFhfHwic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIG51bGw7dHJ5e2M9bmV3IERPTVBhcnNlcixiPWMucGFyc2VGcm9tU3RyaW5nKGEsInRleHQveG1sIil9Y2F0Y2goZCl7Yj12b2lkIDB9cmV0dXJuKCFifHxiLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwYXJzZXJlcnJvciIpLmxlbmd0aCkmJl8uZXJyb3IoIkludmFsaWQgWE1MOiAiK2EpLGJ9O3ZhciBsYz0vIy4qJC8sbWM9LyhbPyZdKV89W14mXSovLG5jPS9eKC4qPyk6WyBcdF0qKFteXHJcbl0qKSQvZ20sb2M9L14oPzphYm91dHxhcHB8YXBwLXN0b3JhZ2V8ListZXh0ZW5zaW9ufGZpbGV8cmVzfHdpZGdldCk6JC8scGM9L14oPzpHRVR8SEVBRCkkLyxxYz0vXlwvXC8vLHJjPS9eKFtcdy4rLV0rOikoPzpcL1wvKD86W15cLz8jXSpAfCkoW15cLz8jOl0qKSg/OjooXGQrKXwpfCkvLHNjPXt9LHRjPXt9LHVjPSIqLyIuY29uY2F0KCIqIiksdmM9YS5sb2NhdGlvbi5ocmVmLHdjPXJjLmV4ZWModmMudG9Mb3dlckNhc2UoKSl8fFtdO18uZXh0ZW5kKHthY3RpdmU6MCxsYXN0TW9kaWZpZWQ6e30sZXRhZzp7fSxhamF4U2V0dGluZ3M6e3VybDp2Yyx0eXBlOiJHRVQiLGlzTG9jYWw6b2MudGVzdCh3Y1sxXSksZ2xvYmFsOiEwLHByb2Nlc3NEYXRhOiEwLGFzeW5jOiEwLGNvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLTgiLGFjY2VwdHM6eyIqIjp1Yyx0ZXh0OiJ0ZXh0L3BsYWluIixodG1sOiJ0ZXh0L2h0bWwiLHhtbDoiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCIsanNvbjoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0In0sY29udGVudHM6e3htbDoveG1sLyxodG1sOi9odG1sLyxqc29uOi9qc29uL30scmVzcG9uc2VGaWVsZHM6e3htbDoicmVzcG9uc2VYTUwiLHRleHQ6InJlc3BvbnNlVGV4dCIsanNvbjoicmVzcG9uc2VKU09OIn0sY29udmVydGVyczp7IiogdGV4dCI6U3RyaW5nLCJ0ZXh0IGh0bWwiOiEwLCJ0ZXh0IGpzb24iOl8ucGFyc2VKU09OLCJ0ZXh0IHhtbCI6Xy5wYXJzZVhNTH0sZmxhdE9wdGlvbnM6e3VybDohMCxjb250ZXh0OiEwfX0sYWpheFNldHVwOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGI/TChMKGEsXy5hamF4U2V0dGluZ3MpLGIpOkwoXy5hamF4U2V0dGluZ3MsYSl9LGFqYXhQcmVmaWx0ZXI6SihzYyksYWpheFRyYW5zcG9ydDpKKHRjKSxhamF4OmZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYyhhLGIsYyxnKXt2YXIgaSxrLHIscyx1LHc9YjsyIT09dCYmKHQ9MixoJiZjbGVhclRpbWVvdXQoaCksZD12b2lkIDAsZj1nfHwiIix2LnJlYWR5U3RhdGU9YT4wPzQ6MCxpPWE+PTIwMCYmMzAwPmF8fDMwND09PWEsYyYmKHM9TShsLHYsYykpLHM9TihsLHMsdixpKSxpPyhsLmlmTW9kaWZpZWQmJih1PXYuZ2V0UmVzcG9uc2VIZWFkZXIoIkxhc3QtTW9kaWZpZWQiKSx1JiYoXy5sYXN0TW9kaWZpZWRbZV09dSksdT12LmdldFJlc3BvbnNlSGVhZGVyKCJldGFnIiksdSYmKF8uZXRhZ1tlXT11KSksMjA0PT09YXx8IkhFQUQiPT09bC50eXBlP3c9Im5vY29udGVudCI6MzA0PT09YT93PSJub3Rtb2RpZmllZCI6KHc9cy5zdGF0ZSxrPXMuZGF0YSxyPXMuZXJyb3IsaT0hcikpOihyPXcsKGF8fCF3KSYmKHc9ImVycm9yIiwwPmEmJihhPTApKSksdi5zdGF0dXM9YSx2LnN0YXR1c1RleHQ9KGJ8fHcpKyIiLGk/by5yZXNvbHZlV2l0aChtLFtrLHcsdl0pOm8ucmVqZWN0V2l0aChtLFt2LHcscl0pLHYuc3RhdHVzQ29kZShxKSxxPXZvaWQgMCxqJiZuLnRyaWdnZXIoaT8iYWpheFN1Y2Nlc3MiOiJhamF4RXJyb3IiLFt2LGwsaT9rOnJdKSxwLmZpcmVXaXRoKG0sW3Ysd10pLGomJihuLnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsW3YsbF0pLC0tXy5hY3RpdmV8fF8uZXZlbnQudHJpZ2dlcigiYWpheFN0b3AiKSkpfSJvYmplY3QiPT10eXBlb2YgYSYmKGI9YSxhPXZvaWQgMCksYj1ifHx7fTt2YXIgZCxlLGYsZyxoLGksaixrLGw9Xy5hamF4U2V0dXAoe30sYiksbT1sLmNvbnRleHR8fGwsbj1sLmNvbnRleHQmJihtLm5vZGVUeXBlfHxtLmpxdWVyeSk/XyhtKTpfLmV2ZW50LG89Xy5EZWZlcnJlZCgpLHA9Xy5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IikscT1sLnN0YXR1c0NvZGV8fHt9LHI9e30scz17fSx0PTAsdT0iY2FuY2VsZWQiLHY9e3JlYWR5U3RhdGU6MCxnZXRSZXNwb25zZUhlYWRlcjpmdW5jdGlvbihhKXt2YXIgYjtpZigyPT09dCl7aWYoIWcpZm9yKGc9e307Yj1uYy5leGVjKGYpOylnW2JbMV0udG9Mb3dlckNhc2UoKV09YlsyXTtiPWdbYS50b0xvd2VyQ2FzZSgpXX1yZXR1cm4gbnVsbD09Yj9udWxsOmJ9LGdldEFsbFJlc3BvbnNlSGVhZGVyczpmdW5jdGlvbigpe3JldHVybiAyPT09dD9mOm51bGx9LHNldFJlcXVlc3RIZWFkZXI6ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLnRvTG93ZXJDYXNlKCk7cmV0dXJuIHR8fChhPXNbY109c1tjXXx8YSxyW2FdPWIpLHRoaXN9LG92ZXJyaWRlTWltZVR5cGU6ZnVuY3Rpb24oYSl7cmV0dXJuIHR8fChsLm1pbWVUeXBlPWEpLHRoaXN9LHN0YXR1c0NvZGU6ZnVuY3Rpb24oYSl7dmFyIGI7aWYoYSlpZigyPnQpZm9yKGIgaW4gYSlxW2JdPVtxW2JdLGFbYl1dO2Vsc2Ugdi5hbHdheXMoYVt2LnN0YXR1c10pO3JldHVybiB0aGlzfSxhYm9ydDpmdW5jdGlvbihhKXt2YXIgYj1hfHx1O3JldHVybiBkJiZkLmFib3J0KGIpLGMoMCxiKSx0aGlzfX07aWYoby5wcm9taXNlKHYpLmNvbXBsZXRlPXAuYWRkLHYuc3VjY2Vzcz12LmRvbmUsdi5lcnJvcj12LmZhaWwsbC51cmw9KChhfHxsLnVybHx8dmMpKyIiKS5yZXBsYWNlKGxjLCIiKS5yZXBsYWNlKHFjLHdjWzFdKyIvLyIpLGwudHlwZT1iLm1ldGhvZHx8Yi50eXBlfHxsLm1ldGhvZHx8bC50eXBlLGwuZGF0YVR5cGVzPV8udHJpbShsLmRhdGFUeXBlfHwiKiIpLnRvTG93ZXJDYXNlKCkubWF0Y2gobmIpfHxbIiJdLG51bGw9PWwuY3Jvc3NEb21haW4mJihpPXJjLmV4ZWMobC51cmwudG9Mb3dlckNhc2UoKSksbC5jcm9zc0RvbWFpbj0hKCFpfHxpWzFdPT09d2NbMV0mJmlbMl09PT13Y1syXSYmKGlbM118fCgiaHR0cDoiPT09aVsxXT8iODAiOiI0NDMiKSk9PT0od2NbM118fCgiaHR0cDoiPT09d2NbMV0/IjgwIjoiNDQzIikpKSksbC5kYXRhJiZsLnByb2Nlc3NEYXRhJiYic3RyaW5nIiE9dHlwZW9mIGwuZGF0YSYmKGwuZGF0YT1fLnBhcmFtKGwuZGF0YSxsLnRyYWRpdGlvbmFsKSksSyhzYyxsLGIsdiksMj09PXQpcmV0dXJuIHY7aj1fLmV2ZW50JiZsLmdsb2JhbCxqJiYwPT09Xy5hY3RpdmUrKyYmXy5ldmVudC50cmlnZ2VyKCJhamF4U3RhcnQiKSxsLnR5cGU9bC50eXBlLnRvVXBwZXJDYXNlKCksbC5oYXNDb250ZW50PSFwYy50ZXN0KGwudHlwZSksZT1sLnVybCxsLmhhc0NvbnRlbnR8fChsLmRhdGEmJihlPWwudXJsKz0oa2MudGVzdChlKT8iJiI6Ij8iKStsLmRhdGEsZGVsZXRlIGwuZGF0YSksbC5jYWNoZT09PSExJiYobC51cmw9bWMudGVzdChlKT9lLnJlcGxhY2UobWMsIiQxXz0iK2pjKyspOmUrKGtjLnRlc3QoZSk/IiYiOiI/IikrIl89IitqYysrKSksbC5pZk1vZGlmaWVkJiYoXy5sYXN0TW9kaWZpZWRbZV0mJnYuc2V0UmVxdWVzdEhlYWRlcigiSWYtTW9kaWZpZWQtU2luY2UiLF8ubGFzdE1vZGlmaWVkW2VdKSxfLmV0YWdbZV0mJnYuc2V0UmVxdWVzdEhlYWRlcigiSWYtTm9uZS1NYXRjaCIsXy5ldGFnW2VdKSksKGwuZGF0YSYmbC5oYXNDb250ZW50JiZsLmNvbnRlbnRUeXBlIT09ITF8fGIuY29udGVudFR5cGUpJiZ2LnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsbC5jb250ZW50VHlwZSksdi5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLGwuZGF0YVR5cGVzWzBdJiZsLmFjY2VwdHNbbC5kYXRhVHlwZXNbMF1dP2wuYWNjZXB0c1tsLmRhdGFUeXBlc1swXV0rKCIqIiE9PWwuZGF0YVR5cGVzWzBdPyIsICIrdWMrIjsgcT0wLjAxIjoiIik6bC5hY2NlcHRzWyIqIl0pO2ZvcihrIGluIGwuaGVhZGVycyl2LnNldFJlcXVlc3RIZWFkZXIoayxsLmhlYWRlcnNba10pO2lmKGwuYmVmb3JlU2VuZCYmKGwuYmVmb3JlU2VuZC5jYWxsKG0sdixsKT09PSExfHwyPT09dCkpcmV0dXJuIHYuYWJvcnQoKTt1PSJhYm9ydCI7Zm9yKGsgaW57c3VjY2VzczoxLGVycm9yOjEsY29tcGxldGU6MX0pdltrXShsW2tdKTtpZihkPUsodGMsbCxiLHYpLGQpe3YucmVhZHlTdGF0ZT0xLGomJm4udHJpZ2dlcigiYWpheFNlbmQiLFt2LGxdKSxsLmFzeW5jJiZsLnRpbWVvdXQ+MCYmKGg9c2V0VGltZW91dChmdW5jdGlvbigpe3YuYWJvcnQoInRpbWVvdXQiKX0sbC50aW1lb3V0KSk7dHJ5e3Q9MSxkLnNlbmQocixjKX1jYXRjaCh3KXtpZighKDI+dCkpdGhyb3cgdztjKC0xLHcpfX1lbHNlIGMoLTEsIk5vIFRyYW5zcG9ydCIpO3JldHVybiB2fSxnZXRKU09OOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gXy5nZXQoYSxiLGMsImpzb24iKX0sZ2V0U2NyaXB0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIF8uZ2V0KGEsdm9pZCAwLGIsInNjcmlwdCIpfX0pLF8uZWFjaChbImdldCIsInBvc3QiXSxmdW5jdGlvbihhLGIpe19bYl09ZnVuY3Rpb24oYSxjLGQsZSl7cmV0dXJuIF8uaXNGdW5jdGlvbihjKSYmKGU9ZXx8ZCxkPWMsYz12b2lkIDApLF8uYWpheCh7dXJsOmEsdHlwZTpiLGRhdGFUeXBlOmUsZGF0YTpjLHN1Y2Nlc3M6ZH0pfX0pLF8uX2V2YWxVcmw9ZnVuY3Rpb24oYSl7cmV0dXJuIF8uYWpheCh7dXJsOmEsdHlwZToiR0VUIixkYXRhVHlwZToic2NyaXB0Iixhc3luYzohMSxnbG9iYWw6ITEsInRocm93cyI6ITB9KX0sXy5mbi5leHRlbmQoe3dyYXBBbGw6ZnVuY3Rpb24oYSl7dmFyIGI7cmV0dXJuIF8uaXNGdW5jdGlvbihhKT90aGlzLmVhY2goZnVuY3Rpb24oYil7Xyh0aGlzKS53cmFwQWxsKGEuY2FsbCh0aGlzLGIpKX0pOih0aGlzWzBdJiYoYj1fKGEsdGhpc1swXS5vd25lckRvY3VtZW50KS5lcSgwKS5jbG9uZSghMCksdGhpc1swXS5wYXJlbnROb2RlJiZiLmluc2VydEJlZm9yZSh0aGlzWzBdKSxiLm1hcChmdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzO2EuZmlyc3RFbGVtZW50Q2hpbGQ7KWE9YS5maXJzdEVsZW1lbnRDaGlsZDtyZXR1cm4gYX0pLmFwcGVuZCh0aGlzKSksdGhpcyl9LHdyYXBJbm5lcjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKF8uaXNGdW5jdGlvbihhKT9mdW5jdGlvbihiKXtfKHRoaXMpLndyYXBJbm5lcihhLmNhbGwodGhpcyxiKSl9OmZ1bmN0aW9uKCl7dmFyIGI9Xyh0aGlzKSxjPWIuY29udGVudHMoKTtjLmxlbmd0aD9jLndyYXBBbGwoYSk6Yi5hcHBlbmQoYSl9KX0sd3JhcDpmdW5jdGlvbihhKXt2YXIgYj1fLmlzRnVuY3Rpb24oYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihjKXtfKHRoaXMpLndyYXBBbGwoYj9hLmNhbGwodGhpcyxjKTphKX0pfSx1bndyYXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQoKS5lYWNoKGZ1bmN0aW9uKCl7Xy5ub2RlTmFtZSh0aGlzLCJib2R5Iil8fF8odGhpcykucmVwbGFjZVdpdGgodGhpcy5jaGlsZE5vZGVzKX0pLmVuZCgpfX0pLF8uZXhwci5maWx0ZXJzLmhpZGRlbj1mdW5jdGlvbihhKXtyZXR1cm4gYS5vZmZzZXRXaWR0aDw9MCYmYS5vZmZzZXRIZWlnaHQ8PTB9LF8uZXhwci5maWx0ZXJzLnZpc2libGU9ZnVuY3Rpb24oYSl7cmV0dXJuIV8uZXhwci5maWx0ZXJzLmhpZGRlbihhKX07dmFyIHhjPS8lMjAvZyx5Yz0vXFtcXSQvLHpjPS9ccj9cbi9nLEFjPS9eKD86c3VibWl0fGJ1dHRvbnxpbWFnZXxyZXNldHxmaWxlKSQvaSxCYz0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxrZXlnZW4pL2k7Xy5wYXJhbT1mdW5jdGlvbihhLGIpe3ZhciBjLGQ9W10sZT1mdW5jdGlvbihhLGIpe2I9Xy5pc0Z1bmN0aW9uKGIpP2IoKTpudWxsPT1iPyIiOmIsZFtkLmxlbmd0aF09ZW5jb2RlVVJJQ29tcG9uZW50KGEpKyI9IitlbmNvZGVVUklDb21wb25lbnQoYil9O2lmKHZvaWQgMD09PWImJihiPV8uYWpheFNldHRpbmdzJiZfLmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbCksXy5pc0FycmF5KGEpfHxhLmpxdWVyeSYmIV8uaXNQbGFpbk9iamVjdChhKSlfLmVhY2goYSxmdW5jdGlvbigpe2UodGhpcy5uYW1lLHRoaXMudmFsdWUpfSk7ZWxzZSBmb3IoYyBpbiBhKU8oYyxhW2NdLGIsZSk7cmV0dXJuIGQuam9pbigiJiIpLnJlcGxhY2UoeGMsIisiKX0sXy5mbi5leHRlbmQoe3NlcmlhbGl6ZTpmdW5jdGlvbigpe3JldHVybiBfLnBhcmFtKHRoaXMuc2VyaWFsaXplQXJyYXkoKSl9LHNlcmlhbGl6ZUFycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7dmFyIGE9Xy5wcm9wKHRoaXMsImVsZW1lbnRzIik7cmV0dXJuIGE/Xy5tYWtlQXJyYXkoYSk6dGhpc30pLmZpbHRlcihmdW5jdGlvbigpe3ZhciBhPXRoaXMudHlwZTtyZXR1cm4gdGhpcy5uYW1lJiYhXyh0aGlzKS5pcygiOmRpc2FibGVkIikmJkJjLnRlc3QodGhpcy5ub2RlTmFtZSkmJiFBYy50ZXN0KGEpJiYodGhpcy5jaGVja2VkfHwheWIudGVzdChhKSl9KS5tYXAoZnVuY3Rpb24oYSxiKXt2YXIgYz1fKHRoaXMpLnZhbCgpO3JldHVybiBudWxsPT1jP251bGw6Xy5pc0FycmF5KGMpP18ubWFwKGMsZnVuY3Rpb24oYSl7cmV0dXJue25hbWU6Yi5uYW1lLHZhbHVlOmEucmVwbGFjZSh6YywiXHJcbiIpfX0pOntuYW1lOmIubmFtZSx2YWx1ZTpjLnJlcGxhY2UoemMsIlxyXG4iKX19KS5nZXQoKX19KSxfLmFqYXhTZXR0aW5ncy54aHI9ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIG5ldyBYTUxIdHRwUmVxdWVzdH1jYXRjaChhKXt9fTt2YXIgQ2M9MCxEYz17fSxFYz17MDoyMDAsMTIyMzoyMDR9LEZjPV8uYWpheFNldHRpbmdzLnhocigpO2EuYXR0YWNoRXZlbnQmJmEuYXR0YWNoRXZlbnQoIm9udW5sb2FkIixmdW5jdGlvbigpe2Zvcih2YXIgYSBpbiBEYylEY1thXSgpfSksWS5jb3JzPSEhRmMmJiJ3aXRoQ3JlZGVudGlhbHMiaW4gRmMsWS5hamF4PUZjPSEhRmMsXy5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKGEpe3ZhciBiO3JldHVybiBZLmNvcnN8fEZjJiYhYS5jcm9zc0RvbWFpbj97c2VuZDpmdW5jdGlvbihjLGQpe3ZhciBlLGY9YS54aHIoKSxnPSsrQ2M7aWYoZi5vcGVuKGEudHlwZSxhLnVybCxhLmFzeW5jLGEudXNlcm5hbWUsYS5wYXNzd29yZCksYS54aHJGaWVsZHMpZm9yKGUgaW4gYS54aHJGaWVsZHMpZltlXT1hLnhockZpZWxkc1tlXTthLm1pbWVUeXBlJiZmLm92ZXJyaWRlTWltZVR5cGUmJmYub3ZlcnJpZGVNaW1lVHlwZShhLm1pbWVUeXBlKSxhLmNyb3NzRG9tYWlufHxjWyJYLVJlcXVlc3RlZC1XaXRoIl18fChjWyJYLVJlcXVlc3RlZC1XaXRoIl09IlhNTEh0dHBSZXF1ZXN0Iik7Zm9yKGUgaW4gYylmLnNldFJlcXVlc3RIZWFkZXIoZSxjW2VdKTtiPWZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbigpe2ImJihkZWxldGUgRGNbZ10sYj1mLm9ubG9hZD1mLm9uZXJyb3I9bnVsbCwiYWJvcnQiPT09YT9mLmFib3J0KCk6ImVycm9yIj09PWE/ZChmLnN0YXR1cyxmLnN0YXR1c1RleHQpOmQoRWNbZi5zdGF0dXNdfHxmLnN0YXR1cyxmLnN0YXR1c1RleHQsInN0cmluZyI9PXR5cGVvZiBmLnJlc3BvbnNlVGV4dD97dGV4dDpmLnJlc3BvbnNlVGV4dH06dm9pZCAwLGYuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpKX19LGYub25sb2FkPWIoKSxmLm9uZXJyb3I9YigiZXJyb3IiKSxiPURjW2ddPWIoImFib3J0Iik7dHJ5e2Yuc2VuZChhLmhhc0NvbnRlbnQmJmEuZGF0YXx8bnVsbCl9Y2F0Y2goaCl7aWYoYil0aHJvdyBofX0sYWJvcnQ6ZnVuY3Rpb24oKXtiJiZiKCl9fTp2b2lkIDB9KSxfLmFqYXhTZXR1cCh7YWNjZXB0czp7c2NyaXB0OiJ0ZXh0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIGFwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCJ9LGNvbnRlbnRzOntzY3JpcHQ6Lyg/OmphdmF8ZWNtYSlzY3JpcHQvfSxjb252ZXJ0ZXJzOnsidGV4dCBzY3JpcHQiOmZ1bmN0aW9uKGEpe3JldHVybiBfLmdsb2JhbEV2YWwoYSksYX19fSksXy5hamF4UHJlZmlsdGVyKCJzY3JpcHQiLGZ1bmN0aW9uKGEpe3ZvaWQgMD09PWEuY2FjaGUmJihhLmNhY2hlPSExKSxhLmNyb3NzRG9tYWluJiYoYS50eXBlPSJHRVQiKX0pLF8uYWpheFRyYW5zcG9ydCgic2NyaXB0IixmdW5jdGlvbihhKXtpZihhLmNyb3NzRG9tYWluKXt2YXIgYixjO3JldHVybntzZW5kOmZ1bmN0aW9uKGQsZSl7Yj1fKCI8c2NyaXB0PiIpLnByb3Aoe2FzeW5jOiEwLGNoYXJzZXQ6YS5zY3JpcHRDaGFyc2V0LHNyYzphLnVybH0pLm9uKCJsb2FkIGVycm9yIixjPWZ1bmN0aW9uKGEpe2IucmVtb3ZlKCksYz1udWxsLGEmJmUoImVycm9yIj09PWEudHlwZT80MDQ6MjAwLGEudHlwZSl9KSxaLmhlYWQuYXBwZW5kQ2hpbGQoYlswXSl9LGFib3J0OmZ1bmN0aW9uKCl7YyYmYygpfX19fSk7dmFyIEdjPVtdLEhjPS8oPSlcPyg/PSZ8JCl8XD9cPy87Xy5hamF4U2V0dXAoe2pzb25wOiJjYWxsYmFjayIsanNvbnBDYWxsYmFjazpmdW5jdGlvbigpe3ZhciBhPUdjLnBvcCgpfHxfLmV4cGFuZG8rIl8iK2pjKys7cmV0dXJuIHRoaXNbYV09ITAsYX19KSxfLmFqYXhQcmVmaWx0ZXIoImpzb24ganNvbnAiLGZ1bmN0aW9uKGIsYyxkKXt2YXIgZSxmLGcsaD1iLmpzb25wIT09ITEmJihIYy50ZXN0KGIudXJsKT8idXJsIjoic3RyaW5nIj09dHlwZW9mIGIuZGF0YSYmIShiLmNvbnRlbnRUeXBlfHwiIikuaW5kZXhPZigiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIikmJkhjLnRlc3QoYi5kYXRhKSYmImRhdGEiKTtyZXR1cm4gaHx8Impzb25wIj09PWIuZGF0YVR5cGVzWzBdPyhlPWIuanNvbnBDYWxsYmFjaz1fLmlzRnVuY3Rpb24oYi5qc29ucENhbGxiYWNrKT9iLmpzb25wQ2FsbGJhY2soKTpiLmpzb25wQ2FsbGJhY2ssaD9iW2hdPWJbaF0ucmVwbGFjZShIYywiJDEiK2UpOmIuanNvbnAhPT0hMSYmKGIudXJsKz0oa2MudGVzdChiLnVybCk/IiYiOiI/IikrYi5qc29ucCsiPSIrZSksYi5jb252ZXJ0ZXJzWyJzY3JpcHQganNvbiJdPWZ1bmN0aW9uKCl7cmV0dXJuIGd8fF8uZXJyb3IoZSsiIHdhcyBub3QgY2FsbGVkIiksZ1swXX0sYi5kYXRhVHlwZXNbMF09Impzb24iLGY9YVtlXSxhW2VdPWZ1bmN0aW9uKCl7Zz1hcmd1bWVudHN9LGQuYWx3YXlzKGZ1bmN0aW9uKCl7YVtlXT1mLGJbZV0mJihiLmpzb25wQ2FsbGJhY2s9Yy5qc29ucENhbGxiYWNrLEdjLnB1c2goZSkpLGcmJl8uaXNGdW5jdGlvbihmKSYmZihnWzBdKSxnPWY9dm9pZCAwfSksInNjcmlwdCIpOnZvaWQgMH0pLF8ucGFyc2VIVE1MPWZ1bmN0aW9uKGEsYixjKXtpZighYXx8InN0cmluZyIhPXR5cGVvZiBhKXJldHVybiBudWxsOyJib29sZWFuIj09dHlwZW9mIGImJihjPWIsYj0hMSksYj1ifHxaO3ZhciBkPWdiLmV4ZWMoYSksZT0hYyYmW107cmV0dXJuIGQ/W2IuY3JlYXRlRWxlbWVudChkWzFdKV06KGQ9Xy5idWlsZEZyYWdtZW50KFthXSxiLGUpLGUmJmUubGVuZ3RoJiZfKGUpLnJlbW92ZSgpLF8ubWVyZ2UoW10sZC5jaGlsZE5vZGVzKSl9O3ZhciBJYz1fLmZuLmxvYWQ7Xy5mbi5sb2FkPWZ1bmN0aW9uKGEsYixjKXtpZigic3RyaW5nIiE9dHlwZW9mIGEmJkljKXJldHVybiBJYy5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dmFyIGQsZSxmLGc9dGhpcyxoPWEuaW5kZXhPZigiICIpO3JldHVybiBoPj0wJiYoZD1fLnRyaW0oYS5zbGljZShoKSksYT1hLnNsaWNlKDAsaCkpLF8uaXNGdW5jdGlvbihiKT8oYz1iLGI9dm9pZCAwKTpiJiYib2JqZWN0Ij09dHlwZW9mIGImJihlPSJQT1NUIiksZy5sZW5ndGg+MCYmXy5hamF4KHt1cmw6YSx0eXBlOmUsZGF0YVR5cGU6Imh0bWwiLGRhdGE6Yn0pLmRvbmUoZnVuY3Rpb24oYSl7Zj1hcmd1bWVudHMsZy5odG1sKGQ/XygiPGRpdj4iKS5hcHBlbmQoXy5wYXJzZUhUTUwoYSkpLmZpbmQoZCk6YSl9KS5jb21wbGV0ZShjJiZmdW5jdGlvbihhLGIpe2cuZWFjaChjLGZ8fFthLnJlc3BvbnNlVGV4dCxiLGFdKX0pLHRoaXN9LF8uZWFjaChbImFqYXhTdGFydCIsImFqYXhTdG9wIiwiYWpheENvbXBsZXRlIiwiYWpheEVycm9yIiwiYWpheFN1Y2Nlc3MiLCJhamF4U2VuZCJdLGZ1bmN0aW9uKGEsYil7Xy5mbltiXT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5vbihiLGEpfX0pLF8uZXhwci5maWx0ZXJzLmFuaW1hdGVkPWZ1bmN0aW9uKGEpe3JldHVybiBfLmdyZXAoXy50aW1lcnMsZnVuY3Rpb24oYil7cmV0dXJuIGE9PT1iLmVsZW19KS5sZW5ndGh9O3ZhciBKYz1hLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtfLm9mZnNldD17c2V0T2Zmc2V0OmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrPV8uY3NzKGEsInBvc2l0aW9uIiksbD1fKGEpLG09e307InN0YXRpYyI9PT1rJiYoYS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiKSxoPWwub2Zmc2V0KCksZj1fLmNzcyhhLCJ0b3AiKSxpPV8uY3NzKGEsImxlZnQiKSxqPSgiYWJzb2x1dGUiPT09a3x8ImZpeGVkIj09PWspJiYoZitpKS5pbmRleE9mKCJhdXRvIik+LTEsaj8oZD1sLnBvc2l0aW9uKCksZz1kLnRvcCxlPWQubGVmdCk6KGc9cGFyc2VGbG9hdChmKXx8MCxlPXBhcnNlRmxvYXQoaSl8fDApLF8uaXNGdW5jdGlvbihiKSYmKGI9Yi5jYWxsKGEsYyxoKSksbnVsbCE9Yi50b3AmJihtLnRvcD1iLnRvcC1oLnRvcCtnKSxudWxsIT1iLmxlZnQmJihtLmxlZnQ9Yi5sZWZ0LWgubGVmdCtlKSwidXNpbmciaW4gYj9iLnVzaW5nLmNhbGwoYSxtKTpsLmNzcyhtKX19LF8uZm4uZXh0ZW5kKHtvZmZzZXQ6ZnVuY3Rpb24oYSl7aWYoYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdm9pZCAwPT09YT90aGlzOnRoaXMuZWFjaChmdW5jdGlvbihiKXtfLm9mZnNldC5zZXRPZmZzZXQodGhpcyxhLGIpfSk7dmFyIGIsYyxkPXRoaXNbMF0sZT17dG9wOjAsbGVmdDowfSxmPWQmJmQub3duZXJEb2N1bWVudDtpZihmKXJldHVybiBiPWYuZG9jdW1lbnRFbGVtZW50LF8uY29udGFpbnMoYixkKT8odHlwZW9mIGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0IT09emImJihlPWQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpLGM9UChmKSx7dG9wOmUudG9wK2MucGFnZVlPZmZzZXQtYi5jbGllbnRUb3AsbGVmdDplLmxlZnQrYy5wYWdlWE9mZnNldC1iLmNsaWVudExlZnR9KTplfSxwb3NpdGlvbjpmdW5jdGlvbigpe2lmKHRoaXNbMF0pe3ZhciBhLGIsYz10aGlzWzBdLGQ9e3RvcDowLGxlZnQ6MH07cmV0dXJuImZpeGVkIj09PV8uY3NzKGMsInBvc2l0aW9uIik/Yj1jLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOihhPXRoaXMub2Zmc2V0UGFyZW50KCksYj10aGlzLm9mZnNldCgpLF8ubm9kZU5hbWUoYVswXSwiaHRtbCIpfHwoZD1hLm9mZnNldCgpKSxkLnRvcCs9Xy5jc3MoYVswXSwiYm9yZGVyVG9wV2lkdGgiLCEwKSxkLmxlZnQrPV8uY3NzKGFbMF0sImJvcmRlckxlZnRXaWR0aCIsITApKSx7dG9wOmIudG9wLWQudG9wLV8uY3NzKGMsIm1hcmdpblRvcCIsITApLGxlZnQ6Yi5sZWZ0LWQubGVmdC1fLmNzcyhjLCJtYXJnaW5MZWZ0IiwhMCl9fX0sb2Zmc2V0UGFyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXMub2Zmc2V0UGFyZW50fHxKYzthJiYhXy5ub2RlTmFtZShhLCJodG1sIikmJiJzdGF0aWMiPT09Xy5jc3MoYSwicG9zaXRpb24iKTspYT1hLm9mZnNldFBhcmVudDtyZXR1cm4gYXx8SmN9KX19KSxfLmVhY2goe3Njcm9sbExlZnQ6InBhZ2VYT2Zmc2V0IixzY3JvbGxUb3A6InBhZ2VZT2Zmc2V0In0sZnVuY3Rpb24oYixjKXt2YXIgZD0icGFnZVlPZmZzZXQiPT09YztfLmZuW2JdPWZ1bmN0aW9uKGUpe3JldHVybiBxYih0aGlzLGZ1bmN0aW9uKGIsZSxmKXt2YXIgZz1QKGIpO3JldHVybiB2b2lkIDA9PT1mP2c/Z1tjXTpiW2VdOihnP2cuc2Nyb2xsVG8oZD9hLnBhZ2VYT2Zmc2V0OmYsZD9mOmEucGFnZVlPZmZzZXQpOmJbZV09Zix2b2lkIDApfSxiLGUsYXJndW1lbnRzLmxlbmd0aCxudWxsKX19KSxfLmVhY2goWyJ0b3AiLCJsZWZ0Il0sZnVuY3Rpb24oYSxiKXtfLmNzc0hvb2tzW2JdPXcoWS5waXhlbFBvc2l0aW9uLGZ1bmN0aW9uKGEsYyl7cmV0dXJuIGM/KGM9dihhLGIpLFFiLnRlc3QoYyk/XyhhKS5wb3NpdGlvbigpW2JdKyJweCI6Yyk6dm9pZCAwfSl9KSxfLmVhY2goe0hlaWdodDoiaGVpZ2h0IixXaWR0aDoid2lkdGgifSxmdW5jdGlvbihhLGIpe18uZWFjaCh7cGFkZGluZzoiaW5uZXIiK2EsY29udGVudDpiLCIiOiJvdXRlciIrYX0sZnVuY3Rpb24oYyxkKXtfLmZuW2RdPWZ1bmN0aW9uKGQsZSl7dmFyIGY9YXJndW1lbnRzLmxlbmd0aCYmKGN8fCJib29sZWFuIiE9dHlwZW9mIGQpLGc9Y3x8KGQ9PT0hMHx8ZT09PSEwPyJtYXJnaW4iOiJib3JkZXIiKTtyZXR1cm4gcWIodGhpcyxmdW5jdGlvbihiLGMsZCl7dmFyIGU7cmV0dXJuIF8uaXNXaW5kb3coYik/Yi5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrYV06OT09PWIubm9kZVR5cGU/KGU9Yi5kb2N1bWVudEVsZW1lbnQsTWF0aC5tYXgoYi5ib2R5WyJzY3JvbGwiK2FdLGVbInNjcm9sbCIrYV0sYi5ib2R5WyJvZmZzZXQiK2FdLGVbIm9mZnNldCIrYV0sZVsiY2xpZW50IithXSkpOnZvaWQgMD09PWQ/Xy5jc3MoYixjLGcpOl8uc3R5bGUoYixjLGQsZyl9LGIsZj9kOnZvaWQgMCxmLG51bGwpfX0pfSksXy5mbi5zaXplPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVuZ3RofSxfLmZuLmFuZFNlbGY9Xy5mbi5hZGRCYWNrLCJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQmJmRlZmluZSgianF1ZXJ5IixbXSxmdW5jdGlvbigpe3JldHVybiBffSk7dmFyIEtjPWEualF1ZXJ5LExjPWEuJDtyZXR1cm4gXy5ub0NvbmZsaWN0PWZ1bmN0aW9uKGIpe3JldHVybiBhLiQ9PT1fJiYoYS4kPUxjKSxiJiZhLmpRdWVyeT09PV8mJihhLmpRdWVyeT1LYyksX30sdHlwZW9mIGI9PT16YiYmKGEualF1ZXJ5PWEuJD1fKSxffSk7CgovKiEgalF1ZXJ5IE1pZ3JhdGUgdjEuMi4xIHwgKGMpIDIwMDUsIDIwMTMgalF1ZXJ5IEZvdW5kYXRpb24sIEluYy4gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycyB8IGpxdWVyeS5vcmcvbGljZW5zZSAqLwpqUXVlcnkubWlncmF0ZU11dGU9PT12b2lkIDAmJihqUXVlcnkubWlncmF0ZU11dGU9ITApLGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKG4pe3ZhciByPXQuY29uc29sZTtpW25dfHwoaVtuXT0hMCxlLm1pZ3JhdGVXYXJuaW5ncy5wdXNoKG4pLHImJnIud2FybiYmIWUubWlncmF0ZU11dGUmJihyLndhcm4oIkpRTUlHUkFURTogIituKSxlLm1pZ3JhdGVUcmFjZSYmci50cmFjZSYmci50cmFjZSgpKSl9ZnVuY3Rpb24gYSh0LGEsaSxvKXtpZihPYmplY3QuZGVmaW5lUHJvcGVydHkpdHJ5e3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkodCxhLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcihvKSxpfSxzZXQ6ZnVuY3Rpb24oZSl7cihvKSxpPWV9fSksbn1jYXRjaChzKXt9ZS5fZGVmaW5lUHJvcGVydHlCcm9rZW49ITAsdFthXT1pfXZhciBpPXt9O2UubWlncmF0ZVdhcm5pbmdzPVtdLCFlLm1pZ3JhdGVNdXRlJiZ0LmNvbnNvbGUmJnQuY29uc29sZS5sb2cmJnQuY29uc29sZS5sb2coIkpRTUlHUkFURTogTG9nZ2luZyBpcyBhY3RpdmUiKSxlLm1pZ3JhdGVUcmFjZT09PW4mJihlLm1pZ3JhdGVUcmFjZT0hMCksZS5taWdyYXRlUmVzZXQ9ZnVuY3Rpb24oKXtpPXt9LGUubWlncmF0ZVdhcm5pbmdzLmxlbmd0aD0wfSwiQmFja0NvbXBhdCI9PT1kb2N1bWVudC5jb21wYXRNb2RlJiZyKCJqUXVlcnkgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBRdWlya3MgTW9kZSIpO3ZhciBvPWUoIjxpbnB1dC8+Iix7c2l6ZToxfSkuYXR0cigic2l6ZSIpJiZlLmF0dHJGbixzPWUuYXR0cix1PWUuYXR0ckhvb2tzLnZhbHVlJiZlLmF0dHJIb29rcy52YWx1ZS5nZXR8fGZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9LGM9ZS5hdHRySG9va3MudmFsdWUmJmUuYXR0ckhvb2tzLnZhbHVlLnNldHx8ZnVuY3Rpb24oKXtyZXR1cm4gbn0sbD0vXig/OmlucHV0fGJ1dHRvbikkL2ksZD0vXlsyMzhdJC8scD0vXig/OmF1dG9mb2N1c3xhdXRvcGxheXxhc3luY3xjaGVja2VkfGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkfHNlbGVjdGVkKSQvaSxmPS9eKD86Y2hlY2tlZHxzZWxlY3RlZCkkL2k7YShlLCJhdHRyRm4iLG98fHt9LCJqUXVlcnkuYXR0ckZuIGlzIGRlcHJlY2F0ZWQiKSxlLmF0dHI9ZnVuY3Rpb24odCxhLGksdSl7dmFyIGM9YS50b0xvd2VyQ2FzZSgpLGc9dCYmdC5ub2RlVHlwZTtyZXR1cm4gdSYmKDQ+cy5sZW5ndGgmJnIoImpRdWVyeS5mbi5hdHRyKCBwcm9wcywgcGFzcyApIGlzIGRlcHJlY2F0ZWQiKSx0JiYhZC50ZXN0KGcpJiYobz9hIGluIG86ZS5pc0Z1bmN0aW9uKGUuZm5bYV0pKSk/ZSh0KVthXShpKTooInR5cGUiPT09YSYmaSE9PW4mJmwudGVzdCh0Lm5vZGVOYW1lKSYmdC5wYXJlbnROb2RlJiZyKCJDYW4ndCBjaGFuZ2UgdGhlICd0eXBlJyBvZiBhbiBpbnB1dCBvciBidXR0b24gaW4gSUUgNi83LzgiKSwhZS5hdHRySG9va3NbY10mJnAudGVzdChjKSYmKGUuYXR0ckhvb2tzW2NdPXtnZXQ6ZnVuY3Rpb24odCxyKXt2YXIgYSxpPWUucHJvcCh0LHIpO3JldHVybiBpPT09ITB8fCJib29sZWFuIiE9dHlwZW9mIGkmJihhPXQuZ2V0QXR0cmlidXRlTm9kZShyKSkmJmEubm9kZVZhbHVlIT09ITE/ci50b0xvd2VyQ2FzZSgpOm59LHNldDpmdW5jdGlvbih0LG4scil7dmFyIGE7cmV0dXJuIG49PT0hMT9lLnJlbW92ZUF0dHIodCxyKTooYT1lLnByb3BGaXhbcl18fHIsYSBpbiB0JiYodFthXT0hMCksdC5zZXRBdHRyaWJ1dGUocixyLnRvTG93ZXJDYXNlKCkpKSxyfX0sZi50ZXN0KGMpJiZyKCJqUXVlcnkuZm4uYXR0cignIitjKyInKSBtYXkgdXNlIHByb3BlcnR5IGluc3RlYWQgb2YgYXR0cmlidXRlIikpLHMuY2FsbChlLHQsYSxpKSl9LGUuYXR0ckhvb2tzLnZhbHVlPXtnZXQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj0oZS5ub2RlTmFtZXx8IiIpLnRvTG93ZXJDYXNlKCk7cmV0dXJuImJ1dHRvbiI9PT1uP3UuYXBwbHkodGhpcyxhcmd1bWVudHMpOigiaW5wdXQiIT09biYmIm9wdGlvbiIhPT1uJiZyKCJqUXVlcnkuZm4uYXR0cigndmFsdWUnKSBubyBsb25nZXIgZ2V0cyBwcm9wZXJ0aWVzIiksdCBpbiBlP2UudmFsdWU6bnVsbCl9LHNldDpmdW5jdGlvbihlLHQpe3ZhciBhPShlLm5vZGVOYW1lfHwiIikudG9Mb3dlckNhc2UoKTtyZXR1cm4iYnV0dG9uIj09PWE/Yy5hcHBseSh0aGlzLGFyZ3VtZW50cyk6KCJpbnB1dCIhPT1hJiYib3B0aW9uIiE9PWEmJnIoImpRdWVyeS5mbi5hdHRyKCd2YWx1ZScsIHZhbCkgbm8gbG9uZ2VyIHNldHMgcHJvcGVydGllcyIpLGUudmFsdWU9dCxuKX19O3ZhciBnLGgsdj1lLmZuLmluaXQsbT1lLnBhcnNlSlNPTix5PS9eKFtePF0qKSg8W1x3XFddKz4pKFtePl0qKSQvO2UuZm4uaW5pdD1mdW5jdGlvbih0LG4sYSl7dmFyIGk7cmV0dXJuIHQmJiJzdHJpbmciPT10eXBlb2YgdCYmIWUuaXNQbGFpbk9iamVjdChuKSYmKGk9eS5leGVjKGUudHJpbSh0KSkpJiZpWzBdJiYoIjwiIT09dC5jaGFyQXQoMCkmJnIoIiQoaHRtbCkgSFRNTCBzdHJpbmdzIG11c3Qgc3RhcnQgd2l0aCAnPCcgY2hhcmFjdGVyIiksaVszXSYmcigiJChodG1sKSBIVE1MIHRleHQgYWZ0ZXIgbGFzdCB0YWcgaXMgaWdub3JlZCIpLCIjIj09PWlbMF0uY2hhckF0KDApJiYocigiSFRNTCBzdHJpbmcgY2Fubm90IHN0YXJ0IHdpdGggYSAnIycgY2hhcmFjdGVyIiksZS5lcnJvcigiSlFNSUdSQVRFOiBJbnZhbGlkIHNlbGVjdG9yIHN0cmluZyAoWFNTKSIpKSxuJiZuLmNvbnRleHQmJihuPW4uY29udGV4dCksZS5wYXJzZUhUTUwpP3YuY2FsbCh0aGlzLGUucGFyc2VIVE1MKGlbMl0sbiwhMCksbixhKTp2LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZS5mbi5pbml0LnByb3RvdHlwZT1lLmZuLGUucGFyc2VKU09OPWZ1bmN0aW9uKGUpe3JldHVybiBlfHxudWxsPT09ZT9tLmFwcGx5KHRoaXMsYXJndW1lbnRzKToocigialF1ZXJ5LnBhcnNlSlNPTiByZXF1aXJlcyBhIHZhbGlkIEpTT04gc3RyaW5nIiksbnVsbCl9LGUudWFNYXRjaD1mdW5jdGlvbihlKXtlPWUudG9Mb3dlckNhc2UoKTt2YXIgdD0vKGNocm9tZSlbIFwvXShbXHcuXSspLy5leGVjKGUpfHwvKHdlYmtpdClbIFwvXShbXHcuXSspLy5leGVjKGUpfHwvKG9wZXJhKSg/Oi4qdmVyc2lvbnwpWyBcL10oW1x3Ll0rKS8uZXhlYyhlKXx8Lyhtc2llKSAoW1x3Ll0rKS8uZXhlYyhlKXx8MD5lLmluZGV4T2YoImNvbXBhdGlibGUiKSYmLyhtb3ppbGxhKSg/Oi4qPyBydjooW1x3Ll0rKXwpLy5leGVjKGUpfHxbXTtyZXR1cm57YnJvd3Nlcjp0WzFdfHwiIix2ZXJzaW9uOnRbMl18fCIwIn19LGUuYnJvd3Nlcnx8KGc9ZS51YU1hdGNoKG5hdmlnYXRvci51c2VyQWdlbnQpLGg9e30sZy5icm93c2VyJiYoaFtnLmJyb3dzZXJdPSEwLGgudmVyc2lvbj1nLnZlcnNpb24pLGguY2hyb21lP2gud2Via2l0PSEwOmgud2Via2l0JiYoaC5zYWZhcmk9ITApLGUuYnJvd3Nlcj1oKSxhKGUsImJyb3dzZXIiLGUuYnJvd3NlciwialF1ZXJ5LmJyb3dzZXIgaXMgZGVwcmVjYXRlZCIpLGUuc3ViPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLG4pe3JldHVybiBuZXcgdC5mbi5pbml0KGUsbil9ZS5leHRlbmQoITAsdCx0aGlzKSx0LnN1cGVyY2xhc3M9dGhpcyx0LmZuPXQucHJvdG90eXBlPXRoaXMoKSx0LmZuLmNvbnN0cnVjdG9yPXQsdC5zdWI9dGhpcy5zdWIsdC5mbi5pbml0PWZ1bmN0aW9uKHIsYSl7cmV0dXJuIGEmJmEgaW5zdGFuY2VvZiBlJiYhKGEgaW5zdGFuY2VvZiB0KSYmKGE9dChhKSksZS5mbi5pbml0LmNhbGwodGhpcyxyLGEsbil9LHQuZm4uaW5pdC5wcm90b3R5cGU9dC5mbjt2YXIgbj10KGRvY3VtZW50KTtyZXR1cm4gcigialF1ZXJ5LnN1YigpIGlzIGRlcHJlY2F0ZWQiKSx0fSxlLmFqYXhTZXR1cCh7Y29udmVydGVyczp7InRleHQganNvbiI6ZS5wYXJzZUpTT059fSk7dmFyIGI9ZS5mbi5kYXRhO2UuZm4uZGF0YT1mdW5jdGlvbih0KXt2YXIgYSxpLG89dGhpc1swXTtyZXR1cm4hb3x8ImV2ZW50cyIhPT10fHwxIT09YXJndW1lbnRzLmxlbmd0aHx8KGE9ZS5kYXRhKG8sdCksaT1lLl9kYXRhKG8sdCksYSE9PW4mJmEhPT1pfHxpPT09bik/Yi5hcHBseSh0aGlzLGFyZ3VtZW50cyk6KHIoIlVzZSBvZiBqUXVlcnkuZm4uZGF0YSgnZXZlbnRzJykgaXMgZGVwcmVjYXRlZCIpLGkpfTt2YXIgaj0vXC8oamF2YXxlY21hKXNjcmlwdC9pLHc9ZS5mbi5hbmRTZWxmfHxlLmZuLmFkZEJhY2s7ZS5mbi5hbmRTZWxmPWZ1bmN0aW9uKCl7cmV0dXJuIHIoImpRdWVyeS5mbi5hbmRTZWxmKCkgcmVwbGFjZWQgYnkgalF1ZXJ5LmZuLmFkZEJhY2soKSIpLHcuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxlLmNsZWFufHwoZS5jbGVhbj1mdW5jdGlvbih0LGEsaSxvKXthPWF8fGRvY3VtZW50LGE9IWEubm9kZVR5cGUmJmFbMF18fGEsYT1hLm93bmVyRG9jdW1lbnR8fGEscigialF1ZXJ5LmNsZWFuKCkgaXMgZGVwcmVjYXRlZCIpO3ZhciBzLHUsYyxsLGQ9W107aWYoZS5tZXJnZShkLGUuYnVpbGRGcmFnbWVudCh0LGEpLmNoaWxkTm9kZXMpLGkpZm9yKGM9ZnVuY3Rpb24oZSl7cmV0dXJuIWUudHlwZXx8ai50ZXN0KGUudHlwZSk/bz9vLnB1c2goZS5wYXJlbnROb2RlP2UucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKTplKTppLmFwcGVuZENoaWxkKGUpOm59LHM9MDtudWxsIT0odT1kW3NdKTtzKyspZS5ub2RlTmFtZSh1LCJzY3JpcHQiKSYmYyh1KXx8KGkuYXBwZW5kQ2hpbGQodSksdS5nZXRFbGVtZW50c0J5VGFnTmFtZSE9PW4mJihsPWUuZ3JlcChlLm1lcmdlKFtdLHUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpKSxjKSxkLnNwbGljZS5hcHBseShkLFtzKzEsMF0uY29uY2F0KGwpKSxzKz1sLmxlbmd0aCkpO3JldHVybiBkfSk7dmFyIFE9ZS5ldmVudC5hZGQseD1lLmV2ZW50LnJlbW92ZSxrPWUuZXZlbnQudHJpZ2dlcixOPWUuZm4udG9nZ2xlLFQ9ZS5mbi5saXZlLE09ZS5mbi5kaWUsUz0iYWpheFN0YXJ0fGFqYXhTdG9wfGFqYXhTZW5kfGFqYXhDb21wbGV0ZXxhamF4RXJyb3J8YWpheFN1Y2Nlc3MiLEM9UmVnRXhwKCJcXGIoPzoiK1MrIilcXGIiKSxIPS8oPzpefFxzKWhvdmVyKFwuXFMrfClcYi8sQT1mdW5jdGlvbih0KXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIHR8fGUuZXZlbnQuc3BlY2lhbC5ob3Zlcj90OihILnRlc3QodCkmJnIoIidob3ZlcicgcHNldWRvLWV2ZW50IGlzIGRlcHJlY2F0ZWQsIHVzZSAnbW91c2VlbnRlciBtb3VzZWxlYXZlJyIpLHQmJnQucmVwbGFjZShILCJtb3VzZWVudGVyJDEgbW91c2VsZWF2ZSQxIikpfTtlLmV2ZW50LnByb3BzJiYiYXR0ckNoYW5nZSIhPT1lLmV2ZW50LnByb3BzWzBdJiZlLmV2ZW50LnByb3BzLnVuc2hpZnQoImF0dHJDaGFuZ2UiLCJhdHRyTmFtZSIsInJlbGF0ZWROb2RlIiwic3JjRWxlbWVudCIpLGUuZXZlbnQuZGlzcGF0Y2gmJmEoZS5ldmVudCwiaGFuZGxlIixlLmV2ZW50LmRpc3BhdGNoLCJqUXVlcnkuZXZlbnQuaGFuZGxlIGlzIHVuZG9jdW1lbnRlZCBhbmQgZGVwcmVjYXRlZCIpLGUuZXZlbnQuYWRkPWZ1bmN0aW9uKGUsdCxuLGEsaSl7ZSE9PWRvY3VtZW50JiZDLnRlc3QodCkmJnIoIkFKQVggZXZlbnRzIHNob3VsZCBiZSBhdHRhY2hlZCB0byBkb2N1bWVudDogIit0KSxRLmNhbGwodGhpcyxlLEEodHx8IiIpLG4sYSxpKX0sZS5ldmVudC5yZW1vdmU9ZnVuY3Rpb24oZSx0LG4scixhKXt4LmNhbGwodGhpcyxlLEEodCl8fCIiLG4scixhKX0sZS5mbi5lcnJvcj1mdW5jdGlvbigpe3ZhciBlPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKTtyZXR1cm4gcigialF1ZXJ5LmZuLmVycm9yKCkgaXMgZGVwcmVjYXRlZCIpLGUuc3BsaWNlKDAsMCwiZXJyb3IiKSxhcmd1bWVudHMubGVuZ3RoP3RoaXMuYmluZC5hcHBseSh0aGlzLGUpOih0aGlzLnRyaWdnZXJIYW5kbGVyLmFwcGx5KHRoaXMsZSksdGhpcyl9LGUuZm4udG9nZ2xlPWZ1bmN0aW9uKHQsbil7aWYoIWUuaXNGdW5jdGlvbih0KXx8IWUuaXNGdW5jdGlvbihuKSlyZXR1cm4gTi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cigialF1ZXJ5LmZuLnRvZ2dsZShoYW5kbGVyLCBoYW5kbGVyLi4uKSBpcyBkZXByZWNhdGVkIik7dmFyIGE9YXJndW1lbnRzLGk9dC5ndWlkfHxlLmd1aWQrKyxvPTAscz1mdW5jdGlvbihuKXt2YXIgcj0oZS5fZGF0YSh0aGlzLCJsYXN0VG9nZ2xlIit0Lmd1aWQpfHwwKSVvO3JldHVybiBlLl9kYXRhKHRoaXMsImxhc3RUb2dnbGUiK3QuZ3VpZCxyKzEpLG4ucHJldmVudERlZmF1bHQoKSxhW3JdLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8ITF9O2ZvcihzLmd1aWQ9aTthLmxlbmd0aD5vOylhW28rK10uZ3VpZD1pO3JldHVybiB0aGlzLmNsaWNrKHMpfSxlLmZuLmxpdmU9ZnVuY3Rpb24odCxuLGEpe3JldHVybiByKCJqUXVlcnkuZm4ubGl2ZSgpIGlzIGRlcHJlY2F0ZWQiKSxUP1QuYXBwbHkodGhpcyxhcmd1bWVudHMpOihlKHRoaXMuY29udGV4dCkub24odCx0aGlzLnNlbGVjdG9yLG4sYSksdGhpcyl9LGUuZm4uZGllPWZ1bmN0aW9uKHQsbil7cmV0dXJuIHIoImpRdWVyeS5mbi5kaWUoKSBpcyBkZXByZWNhdGVkIiksTT9NLmFwcGx5KHRoaXMsYXJndW1lbnRzKTooZSh0aGlzLmNvbnRleHQpLm9mZih0LHRoaXMuc2VsZWN0b3J8fCIqKiIsbiksdGhpcyl9LGUuZXZlbnQudHJpZ2dlcj1mdW5jdGlvbihlLHQsbixhKXtyZXR1cm4gbnx8Qy50ZXN0KGUpfHxyKCJHbG9iYWwgZXZlbnRzIGFyZSB1bmRvY3VtZW50ZWQgYW5kIGRlcHJlY2F0ZWQiKSxrLmNhbGwodGhpcyxlLHQsbnx8ZG9jdW1lbnQsYSl9LGUuZWFjaChTLnNwbGl0KCJ8IiksZnVuY3Rpb24odCxuKXtlLmV2ZW50LnNwZWNpYWxbbl09e3NldHVwOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gdCE9PWRvY3VtZW50JiYoZS5ldmVudC5hZGQoZG9jdW1lbnQsbisiLiIrZS5ndWlkLGZ1bmN0aW9uKCl7ZS5ldmVudC50cmlnZ2VyKG4sbnVsbCx0LCEwKX0pLGUuX2RhdGEodGhpcyxuLGUuZ3VpZCsrKSksITF9LHRlYXJkb3duOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMhPT1kb2N1bWVudCYmZS5ldmVudC5yZW1vdmUoZG9jdW1lbnQsbisiLiIrZS5fZGF0YSh0aGlzLG4pKSwhMX19fSl9KGpRdWVyeSx3aW5kb3cpOwoKLypqUXVlcnkubXkgMS4zLjQsIChjKSAyMDI0IGVybW91dGgqLwohZnVuY3Rpb24oeCl7dmFyIGE9IjEuMy40IixiPXdpbmRvdy5VUkx8fHdpbmRvdy53ZWJraXRVUkwsYz0hZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcixkPSgod2luZG93Lm5hdmlnYXRvci5sYW5ndWFnZXx8d2luZG93Lm5hdmlnYXRvci51c2VyTGFuZ3VhZ2V8fCJlbiIpKyIiKS5zcGxpdCgiLSIpWzBdLnRvTG93ZXJDYXNlKCksZT0ie3l5eXl9LXtNTX0te2RkfSIsZj0ie0hIfTp7bW19IixnPSJvYmplY3QiLGg9ImRhdGEiLGk9ImFycmF5IixqPSJzdHJpbmciLGs9ImZ1bmN0aW9uIixsPSJjaGFuZ2UiLG09L150aGlzXC4vLG49T2JqZWN0LmlzQXJyYXksbz1PYmplY3QuaXNCb29sZWFuLHA9T2JqZWN0LmlzU3RyaW5nLHE9T2JqZWN0LmlzT2JqZWN0LHI9T2JqZWN0LmlzTnVtYmVyLHM9T2JqZWN0LmlzUmVnRXhwLHQ9T2JqZWN0LmlzRnVuY3Rpb24sdT1mdW5jdGlvbih4KXtyZXR1cm4gbnVsbCE9eCYmdHlwZW9mIHg9PWcmJnQoeC50aGVuKX0sdj1VKHgsIm15LmYucmVwbyIpP3gubXkuZi5yZXBvKCk6e19zcmM6e30sX25hbWU6IkRlZmF1bHQgbWFuaWZlc3QgY2FjaGUifSx3PVUoeCwibXkuZi5yZXN0eWxlcyIpP3gubXkuZi5yZXN0eWxlcygpOnt9LHk9T2JqZWN0Lm1lcmdlLHo9T2JqZWN0LmNsb25lLEE9T2JqZWN0LmtleXMsQj14LmV4dGVuZCxDPXguRGVmZXJyZWQsRD14LnR5cGUsRT1udWxsLEY9ZnVuY3Rpb24oeCl7cmV0dXJuIG51bGwhPXh9LEc9eC5hamF4LEg9YXgsST1EYXRlLm5vdyxKPXR4LEs9e3ZhbHM6eyIubXktZm9ybSI6ZnVuY3Rpb24oeCxhKXtpZih4JiZ4Lm15KXt2YXIgYj14Lm15KGgpO3JldHVybiBPYmplY3QuZXF1YWwoYixhKT9iOngubXkoaCxhLCEwKX1yZXR1cm4gYXx8RX0sIi5oYXNEYXRlcGlja2VyIjpmdW5jdGlvbih4LGEpe0YoYSkmJnguZGF0ZXBpY2tlcigic2V0RGF0ZSIsIiI9PWE/YTpEYXRlLmNyZWF0ZShhKSk7dmFyIGI9eC5kYXRlcGlja2VyKCJnZXREYXRlIik7cmV0dXJuIGI/Yi5mb3JtYXQoZSk6IiJ9LCIubXktdGFncyI6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gRihhKSYmKHAoYSl8fHIoYSk/eC50YWdzKGgsW2ErIiJdKTpuKGEpJiZ4LnRhZ3MoaCxhKSkseC50YWdzKGgpfSwiLnVpLWRyYWdnYWJsZSI6ZnVuY3Rpb24oeCxhKXtpZihGKGEpJiZxKGEpKXt2YXIgYj17fTtpc05hTihhLmxlZnQpfHwoYi5sZWZ0PSgrYS5sZWZ0KS5jZWlsKDIpKyJweCIpLGlzTmFOKGEudG9wKXx8KGIudG9wPSgrYS50b3ApLmNlaWwoMikrInB4IiksKGIubGVmdHx8Yi50b3ApJiZ4LmNzcyhiKX12YXIgYz14LnBvc2l0aW9uKCk7cmV0dXJue2xlZnQ6YSYmIWlzTmFOKGEubGVmdCk/KCthLmxlZnQpLmNlaWwoMik6Yy5sZWZ0LmNlaWwoMiksdG9wOmEmJiFpc05hTihhLnRvcCk/KCthLnRvcCkuY2VpbCgyKTpjLnRvcC5jZWlsKDIpfX0sIi5teS1mb3JtLWxpc3QiOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGYsZyxoPShhLmRhdGEoImZvcm1saXN0Iil8fHt9KS5nZW5lcmF0b3J8fHt9LGk9aC5zZWxlY3Rvcnx8Ij4ubXktZm9ybSIsaj0hIWgubWVyZ2Usaz1oLnRlbXBsYXRlfHwiPGRpdj48L2Rpdj4iLGw9L1x7Ly50ZXN0KGspLG09aC5oYXNofHxZLG89aC5pZHx8WSxwPWguZXh0LHE9aC5kZWxheXx8NTAscj0idWktc29ydGFibGUiLHM9Ii4iK3IrIi1wbGFjZWhvbGRlciIsdD0oYS5pcygiLiIrciksISFhLmNoaWxkcmVuKHMpLmxlbmd0aCksdT1bXSx2PVtdLHc9SSgpLHk9YS5maW5kKGkpO2lmKEYoYikmJm4oYikpe2lmKHQpcmV0dXJuIGI7aWYoZD1bXSxlPXt9LHkuZWFjaChmdW5jdGlvbihhKXt2YXIgYixjPXgodGhpcyksZj1jLmRhdGEoIm15Iik7ZiYmKGQucHVzaChmLmRhdGEpLCFqJiYoYj1jLmRhdGEoImZvcm1saXN0IikpJiYoZVtiLm9pZF09Zi5kYXRhKSl9KSwhVChkLGIsIj09Iikpe3ZhciB6PVtdLEE9W10sQj17fSxDPXt9O2Zvcih2PVtdLGM9MDtjPGIubGVuZ3RoO2MrKylBW2NdPW8oYltjXSxjKSsiIixCW0FbY11dPWMseltjXT0obyE9PW0/bShiW2NdLGMpOkFbY10pKyIiO2Zvcih5LmVhY2goZnVuY3Rpb24oKXt2YXIgYT14KHRoaXMpLGM9KGEuZGF0YSgiZm9ybWxpc3QiKXx8e30pLm9pZDtjJiZRKEIsYykmJihqfHxiW0JbY11dPT09ZVtjXSk/Q1tjXT14KHRoaXMpOmEuaGFzQ2xhc3MoIm15LWZvcm0iKT9hLm15KCJyZW1vdmUiLCEwKTphLnJlbW92ZSgpfSksYz0wO2M8Yi5sZW5ndGg7YysrKVEoQyxBW2NdKT8oZj1DW0FbY11dLmRldGFjaCgpLmFwcGVuZFRvKGEpLHUucHVzaChmLm15KCJkYXRhIikpLHpbY10hPT0oZi5kYXRhKCJmb3JtbGlzdCIpfHx7fSkuaGFzaCYmKGomJnUubGFzdCgpIT09YltjXSYmaC5tZXJnZSh1Lmxhc3QoKSxiW2NdKSx2LnB1c2goZikpKTooKGY9eChsP2suYXNzaWduKGJbY10pOmspLmFwcGVuZFRvKGEpKS5kYXRhKCJmb3JtbGlzdCIse2xpc3Q6YltjXSxpbmRleDpjLGhhc2g6eltjXSxvaWQ6QVtjXX0pLHV4LmNhbGwoZixieChoLnBhcmVudCxoLm1hbmlmZXN0LGJbY10sYyxiLGEpLGJbY10pLnRoZW4oZnVuY3Rpb24oeCl7eC5vbigiY2hhbmdlLm15IixFLmRlYm91bmNlKHEvMS4zKSl9LmZpbGwoZikpLHUucHVzaChmLm15KCJkYXRhIikpKTtpZih2Lmxlbmd0aCYmcCl7Zm9yKGM9MDtjPHYubGVuZ3RoO2MrKylHKHZbY10pO3Y9W119cmV0dXJuIGQ9ZT1udWxsLHV9cmV0dXJuIGU9bnVsbCxkfWlmKHkubGVuZ3RoKXtpZih3LWguc3RhbXA+MS40KnF8fHctaC5zdGFtcD4xMDB8fCFoLnN0YXNoZWR8fGguc3Rhc2hlZC5sZW5ndGghPT15Lmxlbmd0aC0odD8xOjApKXt0JiYoZz1hLmZpbmQoIj4uIityKyItaGVscGVyIikpO3ZhciBEPTA7Zm9yKHkuZWFjaChmdW5jdGlvbihhLGIpe3ZhciBjLGQsZSxmPXgoYiksaD0hMTt0JiZmLmhhc0NsYXNzKHIrIi1oZWxwZXIiKXx8KHQmJmYuaGFzQ2xhc3MocisiLXBsYWNlaG9sZGVyIikmJihmPWcpLGM9Zi5kYXRhKCJteSIpLGQ9Zi5kYXRhKCJmb3JtbGlzdCIpLGMmJmQmJih1LnB1c2goYy5kYXRhKSxEIT1kLmluZGV4JiYoZC5pbmRleD1ELGg9ITApLHAmJihlPW0oYy5kYXRhLEQpKyIiKSE9PWQuaGFzaCYmKGQuaGFzaD1lLGg9ITApLEQrPTEsaCYmdi5wdXNoKGYpKSl9KSxjPTA7Yzx2Lmxlbmd0aDtjKyspRyh2W2NdKTt2PVtdLGguc3RhbXA9dyxoLnN0YXNoZWQ9dX1lbHNlIHU9aC5zdGFzaGVkLnNsaWNlKDApO3JldHVybiB1fXJldHVybiBifHxbXTtmdW5jdGlvbiBFKCl7dmFyIGIsYyxkPXgodGhpcyksZT1kLmRhdGEoIm15Iik7ZSYmKGM9KGI9ZC5kYXRhKCJmb3JtbGlzdCIpKS5pbmRleCxiLmhhc2g9bShlLmRhdGEsYykrIiIsYi5vaWQ9byE9PW0/byhlLmRhdGEsYykrIiI6Yi5oYXNoKSxhLnRyaWdnZXIoImNoZWNrLm15Iil9ZnVuY3Rpb24gRyh4KXt4LmRhdGEoIm15IikubG9ja3RpbGwrcS8xLjM8dyYmeC5teSgicmVkcmF3Iil9fSwiaW5wdXRbdHlwZT1kYXRlXSI6ZnVuY3Rpb24oeCxhKXt2YXIgYjtyZXR1cm4gRihhKT8oYj0iIiE9YT9EYXRlLmNyZWF0ZShhKS5mb3JtYXQoZSk6IiIscChiKSYmIS9JbnZhbGlkLy50ZXN0KGIpJiZ4LnZhbChiKSxiKToiIiE9KGI9eC52YWwoKSk/RGF0ZS5jcmVhdGUoYikuZm9ybWF0KGUpOiIifSwiaW5wdXRbdHlwZT10aW1lXSI6ZnVuY3Rpb24oeCxhKXt2YXIgYjtyZXR1cm4gRihhKT8oYj0iIiE9YT9EYXRlLmNyZWF0ZShhKS5mb3JtYXQoZik6IiIscChiKSYmIS9JbnZhbGlkLy50ZXN0KGIpJiZ4LnZhbChiKSxiKToiIiE9KGI9eC52YWwoKSk/RGF0ZS5jcmVhdGUoYikuZm9ybWF0KGYpOiIifSxpbnB1dDp7Ilt0eXBlPSd0ZXh0J10sW3R5cGU9J251bWJlciddLFt0eXBlPSdidXR0b24nXSxbdHlwZT0ncmFuZ2UnXSxbdHlwZT0naGlkZGVuJ10sOm5vdChbdHlwZV0pIjp7Ii51aS1zbGlkZXItaW5wdXQiOmZ1bmN0aW9uKHgsYSl7RihhKSYmeC52YWwoYSkuc2xpZGVyKCJyZWZyZXNoIil9LCJkaXYuc2VsZWN0Mi1jb250YWluZXIraW5wdXQiOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIEYoYSkmJkpTT04uc3RyaW5naWZ5KGEpIT09SlNPTi5zdHJpbmdpZnkoeC5zZWxlY3QyKCJ2YWwiKSkmJnguc2VsZWN0MigidmFsIixuKGEpP2E6W2FdKSx4LnNlbGVjdDIoInZhbCIpfSwiIjpmdW5jdGlvbih4LGEpe0YoYSkmJngudmFsKGErIiIpfX0sIlt0eXBlPSdwYXNzd29yZCddLFt0eXBlPSd0ZWwnXSxbdHlwZT0nZW1haWwnXSxbdHlwZT0nc2VhcmNoJ10iOmZ1bmN0aW9uKHgsYSl7RihhKSYmeC52YWwoYSsiIil9LCI6cmFkaW8iOmZ1bmN0aW9uKGEsYil7dmFyIGM9LTE7aWYoRihiKSl7YS5lYWNoKGZ1bmN0aW9uKGEpe3ZhciBkPXgodGhpcykudmFsKCk7YisiIj09ZCsiIiYmKGM9YSl9KTt2YXIgZD1hLmVxKDApLmNoZWNrYm94cmFkaW87aWYoZCYmYS5lYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPXgodGhpcyk7YyE9YSYmYi5pcygiOmNoZWNrZWQiKSYmYi5wcm9wKCJjaGVja2VkIiwhMSkuY2hlY2tib3hyYWRpbygicmVmcmVzaCIpfSksYz4tMSl7dmFyIGU9YS5lcShjKTtlLmlzKCI6Y2hlY2tlZCIpfHwoZS5wcm9wKCJjaGVja2VkIiwhMCksZCYmZS5jaGVja2JveHJhZGlvKCJyZWZyZXNoIikpfWVsc2UgZHx8YS5lYWNoKGZ1bmN0aW9uKCl7eCh0aGlzKS5wcm9wKCJjaGVja2VkIiwhMSl9KX1pZigtMT09Yylmb3IodmFyIGY9MDtmPGEubGVuZ3RoO2YrKylhLmVxKGYpLmlzKCI6Y2hlY2tlZCIpJiYoYz1mKTtyZXR1cm4tMSE9Yz9hLmVxKGMpLnZhbCgpOiIifSwiOmNoZWNrYm94IjpmdW5jdGlvbihhLGIpe3ZhciBjPWIsZD1bXTtpZihGKGMpKXtuKGMpfHwoYz1bYl0pO3ZhciBlPSEhYS5lcSgwKS5jaGVja2JveHJhZGlvO2EuZWFjaChmdW5jdGlvbihhKXt2YXIgYj14KHRoaXMpLGY9Yi52YWwoKSxnPWIuaXMoIjpjaGVja2VkIik7LTEhPWMuaW5kZXhPZihmKT8oZC5wdXNoKGYpLGd8fGIucHJvcCgiY2hlY2tlZCIsITApKTpnJiZiLnByb3AoImNoZWNrZWQiLCExKSxlJiZiLmNoZWNrYm94cmFkaW8oInJlZnJlc2giKX0pfWVsc2UgYS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGE9eCh0aGlzKTthLmlzKCI6Y2hlY2tlZCIpJiZkLnB1c2goYS52YWwoKSl9KTtyZXR1cm4gZH19LHNlbGVjdDp7Ii51aS1zbGlkZXItc3dpdGNoIjpmdW5jdGlvbih4LGEpe0YoYSkmJih4LnZhbChhKyIiKSx4LnNsaWRlcigicmVmcmVzaCIpKX0sImRpdi5zZWxlY3QyLWNvbnRhaW5lcitzZWxlY3QiOnsiW211bHRpcGxlXSI6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gRihhKSYmeC5zZWxlY3QyKCJ2YWwiLG4oYSk/YTpbYV0pLHguc2VsZWN0MigidmFsIil9LCIiOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIEYoYSkmJnguc2VsZWN0MigidmFsIixhKyIiKSx4LnNlbGVjdDIoInZhbCIpfX0sIi5zZWxlY3QyLWhpZGRlbi1hY2Nlc3NpYmxlIjp7IlttdWx0aXBsZV0iOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIEYoYSkmJkpTT04uc3RyaW5naWZ5KGEpIT09SlNPTi5zdHJpbmdpZnkoeC5zZWxlY3QyKCJ2YWwiKSkmJngudmFsKG4oYSk/YTpbYV0pLnRyaWdnZXIoImNoYW5nZS5zZWxlY3QyIikseC5zZWxlY3QyKCJ2YWwiKX0sIiI6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gRihhKSYmeC52YWwoYSsiIikudHJpZ2dlcigiY2hhbmdlLnNlbGVjdDIiKSx4LnZhbCgpfX0sIlttdWx0aXBsZV0iOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIEYoYSkmJih4LnZhbChhLFtdKSx4LnNlbGVjdG1lbnUmJih4LmRhdGEoInVpU2VsZWN0bWVudSIpfHx4LmRhdGEoInNlbGVjdG1lbnUiKSkmJnguc2VsZWN0bWVudSgicmVmcmVzaCIsITApKSx4LnZhbCgpfHxbXX0sIiI6ZnVuY3Rpb24oeCxhKXtGKGEpJiYoeC52YWwoYSsiIikseC5zZWxlY3RtZW51JiYoeC5kYXRhKCJ1aVNlbGVjdG1lbnUiKXx8eC5kYXRhKCJzZWxlY3RtZW51IikpJiZ4LnNlbGVjdG1lbnUoInJlZnJlc2giLCEwKSl9fSx0ZXh0YXJlYTp7Ii5teS1jbGVkaXRvciI6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gRihhKSYmeC52YWwoYSkuY2xlZGl0b3IoKVswXS51cGRhdGVGcmFtZSgpLHgudmFsKCl9LCJkaXYucmVkYWN0b3JfYm94IHRleHRhcmVhLC5yZWRhY3RvciI6ZnVuY3Rpb24oeCxhKXt2YXIgYj14Lmhhc0NsYXNzKCJteS1yZWRhY3Rvci05Iik7cmV0dXJuIEYoYSk/KGI/eC5yZWRhY3Rvcigic2V0IixhKTp4LnNldENvZGUoYSwhMSksYSk6Yj94LnJlZGFjdG9yKCJnZXQiKTp4LmdldENvZGUoKX0sIi5teS1jb2RlbWlycm9yIjpmdW5jdGlvbih4LGEpe3JldHVybiBGKGEpPyh4WzBdLm5leHRTaWJsaW5nLkNvZGVNaXJyb3Iuc2V0VmFsdWUoYSksYSk6eFswXS5uZXh0U2libGluZy5Db2RlTWlycm9yLmdldFZhbHVlKCl9LCIiOmZ1bmN0aW9uKHgsYSl7RihhKSYmeC52YWwoYSsiIil9fSwiZmllbGRzZXQsZm9ybSxzZWN0aW9uLGZvb3Rlcixhc2lkZSwubXktY29udGFpbmVyIjpmdW5jdGlvbih4LGEpe3ZhciBiPVMoeFswXSwwKS5zb3J0KCksYz1hO3JldHVybiBGKGEpJiYocChhKSYmKGM9YS5zcGxpdCgvWyxcc10rLykuY29tcGFjdCghMCkpLG4oYykmJihjLnNvcnQoKSxjLmpvaW4oIiAiKSE9PWIuam9pbigiICIpJiYoeC5hdHRyKCJjc3MiLGMuam9pbigiICIpKSxiPWMpKSksYn0sImRpdixzcGFuIjp7Ii51aS1zbGlkZXIiOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIEYoYSkmJnguc2xpZGVyKCJvcHRpb24iLHguc2xpZGVyKCJvcHRpb24iLCJ2YWx1ZXMiKT8idmFsdWVzIjoidmFsdWUiLEwuY2xvbmUoYSkpLEwuY2xvbmUoeC5zbGlkZXIoIm9wdGlvbiIsInZhbHVlcyIpfHx4LnNsaWRlcigib3B0aW9uIiwidmFsdWUiKXx8MCl9LCIudWktYnV0dG9uc2V0IjpmdW5jdGlvbihhLGIpe2lmKEYoYikpe2lmKCIiPT1iKXt2YXIgYz1FO2lmKGEuZmluZCgiOnJhZGlvIikuZWFjaChmdW5jdGlvbigpe2M9KHgodGhpcykudmFsKCl8fHgodGhpcykuYnV0dG9uKCJvcHRpb24iLCJsYWJlbCIpKT09Yj94KHRoaXMpOmN9KSxjKXJldHVybiBjLmF0dHIoImNoZWNrZWQiLCEwKSxhLmJ1dHRvbnNldCgicmVmcmVzaCIpLGJ9fWVsc2V7dmFyIGQ9YS5maW5kKCI6cmFkaW86Y2hlY2tlZCIpO2lmKGQubGVuZ3RoJiZkLmJ1dHRvbilyZXR1cm4gZC52YWwoKXx8ZC5idXR0b24oIm9wdGlvbiIsImxhYmVsIil9cmV0dXJuIGEuZmluZCgiOnJhZGlvOmNoZWNrZWQiKS5hdHRyKCJjaGVja2VkIiwhMSksYS5idXR0b25zZXQoInJlZnJlc2giKSwiIn0sIi5hY2VfZWRpdG9yIjpmdW5jdGlvbih4LGEpe3JldHVybiBGKGEpJiZhY2UuZWRpdCh4WzBdKS5zZXRWYWx1ZShhKSxhY2UuZWRpdCh4WzBdKS5nZXRWYWx1ZShhKX0sIiI6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gRihhKSYmeC5odG1sKGEpLHguaHRtbCgpfX0sImEscCxsaSx0ZCx0aCxoMSxoMixoMyxoNCxoNSxoNixwcmUsY29kZSI6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gRihhKSYmeC5odG1sKGEpLHguaHRtbCgpfSxpbWc6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gRihhKSYmeC5hdHRyKCJzcmMiLGEpLHguYXR0cigic3JjIil8fCIifSwiIjpmdW5jdGlvbih4LGEpe3JldHVybiBGKGEpJiZ4Lmh0bWwoYSkseC5odG1sKCl8fHgudGV4dCgpfHx4LnZhbCgpKyIifHwiIn19LG1zZzp7IiI6e2VuOiJJbnZhbGlkIGlucHV0IixydToi0J3QtdCy0LXRgNC90L7QtSDQt9C90LDRh9C10L3QuNC1In0sZm9ybUVycm9yOntlbjoiRm9ybSBlcnJvciIscnU6ItCe0YjQuNCx0LrQsCDRhNC+0YDQvNGLIn0saW5pdEZhaWxlZDp7ZW46JzxwIGNsYXNzPSJteS1lcnJvciI+Rm9ybSBpbml0IGZhaWxlZDwvcD4nLHJ1Oic8cCBjbGFzcz0ibXktZXJyb3IiPtCe0YjQuNCx0LrQsCDQuNC90LjRhtC40LDQu9C40LfQsNGG0LjQuCDRhNC+0YDQvNGLPC9wPid9LGJhZElucHV0OntlbjoiSW52YWxpZCBpbnB1dCIscnU6ItCd0LXQstC10YDQvdC+0LUg0LfQvdCw0YfQtdC90LjQtSJ9LHBhdHRlcm5NaXNtYXRjaDp7ZW46IlBhdHRlcm4gbWlzbWF0Y2giLHJ1OiLQndC1INGB0L7QvtGC0LLQtdGC0YHRgtCy0YPQtdGCINGI0LDQsdC70L7QvdGDIn0scmFuZ2VPdmVyZmxvdzp7ZW46Ik92ZXIgbWF4aW11bSIscnU6ItCR0L7Qu9GM0YjQtSDQvNCw0LrRgdC40LzRg9C80LAifSxyYW5nZVVuZGVyZmxvdzp7ZW46IlVuZGVyIG1pbmltdW0iLHJ1OiLQnNC10L3RjNGI0LUg0LzQuNC90LjQvNGD0LzQsCJ9LHN0ZXBNaXNtYXRjaDp7ZW46IlN0ZXAgbWlzbWF0Y2giLHJ1OiLQndC1INC60YDQsNGC0L3QviDRiNCw0LPRgyJ9LHRvb0xvbmc6e2VuOiJUb28gbG9uZyIscnU6ItCh0LvQuNGI0LrQvtC8INC00LvQuNC90L3QviJ9LHR5cGVNaXNtYXRjaDp7ZW46IkludmFsaWQgdHlwZSIscnU6ItCd0LXQstC10YDQvdGL0Lkg0YLQuNC/In0sdmFsdWVNaXNzaW5nOntlbjoiUmVxdWlyZWQiLHJ1OiLQntCx0Y/Qt9Cw0YLQtdC70YzQvdC+0LUg0L/QvtC70LUifX0sZXZlbnRzOnsiLmhhc0RhdGVwaWNrZXIiOiJjaGFuZ2UubXkgY2hlY2subXkiLCIubXktZm9ybSwubXktdGFncyI6ImNoYW5nZS5teSBjaGVjay5teSIsIi51aS1zbGlkZXIiOiJzbGlkZS5teSBjaGVjay5teSIsImRpdi5yZWRhY3Rvcl9ib3ggdGV4dGFyZWEiOiJyZWRhY3Rvci5teSBjaGVjay5teSIsIi5teS1jb2RlbWlycm9yIjoiY29kZW1pcnJvci5teSBjaGVjay5teSIsIi5hY2VfZWRpdG9yIjoiYWNlLm15IGNoZWNrLm15IiwiLm15LWZvcm0tbGlzdCI6InNvcnR1cGRhdGUubXkgY2hlY2subXkiLCIudWktc29ydGFibGUiOiJzb3J0Y2hhbmdlLm15IHNvcnR1cGRhdGUubXkgY2hlY2subXkiLCIudWktZHJhZ2dhYmxlIjoiZHJhZy5teSBkcmFnc3RvcC5teSBjaGVjay5teSIsImEsIC5wc2V1ZG9saW5rLCBpbnB1dFt0eXBlPWJ1dHRvbl0sIGJ1dHRvbiI6ImNsaWNrLm15IiwiaW1nLCA6cmFkaW8sIDpjaGVja2JveCI6ImNsaWNrLm15IGNoZWNrLm15IiwiZGl2LnNlbGVjdDItY29udGFpbmVyK2lucHV0LGRpdi5zZWxlY3QyLWNvbnRhaW5lcitzZWxlY3QsLnNlbGVjdDItaGlkZGVuLWFjY2Vzc2libGUiOiJjaGFuZ2UubXkgY2hlY2subXkgaW5wdXQubXkiLCIudWktYnV0dG9uc2V0LGlucHV0LCBzZWxlY3QsIHRleHRhcmVhIjoiYmx1ci5teSBjaGFuZ2UubXkgY2hlY2subXkiKygiTWljcm8iPT09bmF2aWdhdG9yLmFwcE5hbWUudG8oNSk/IiBrZXl1cC5teSI6IiBpbnB1dC5teSIpLCIiOiJjaGVjay5teSJ9LGNvbnRhaW5lcnM6eyIqW2RhdGEtcm9sZT0nZmllbGRjb250YWluJ10gKiI6eyJpbnB1dCx0ZXh0YXJlYSxzZWxlY3QsYnV0dG9uLDpyYWRpbyI6ZnVuY3Rpb24oeCl7cmV0dXJuIHgucGFyZW50cygnW2RhdGEtcm9sZT0iZmllbGRjb250YWluIl0nKS5lcSgwKX19LCJkaXYucmVkYWN0b3JfYm94IHRleHRhcmVhIjpmdW5jdGlvbih4KXtyZXR1cm4geC5wYXJlbnRzKCJkaXYucmVkYWN0b3JfYm94IikuZXEoMCkucGFyZW50KCl9LCIubXktdGFncywuaGFzRGF0ZXBpY2tlciwudWktd2lkZ2V0LGlucHV0LHRleHRhcmVhLHNlbGVjdCxidXR0b24iOnsiLm15LWNsZWRpdG9yIjpmdW5jdGlvbih4KXtyZXR1cm4geC5wYXJlbnRzKCJkaXYuY2xlZGl0b3JNYWluIikuZXEoMCkucGFyZW50KCl9LCIiOmZ1bmN0aW9uKGEpe3ZhciBiPWFbMF0ucGFyZW50Tm9kZSxjPWIubm9kZU5hbWU7cmV0dXJuL14oZGl2fHNwYW58YXxwfGZvcm18ZmllbGRzZXR8bGl8dWx8dGR8dGh8aFxkKSQvaS50ZXN0KGMpP3goYik6YS5wYXJlbnRzKCJkaXYsc3BhbixhLHAsZm9ybSxmaWVsZHNldCxsaSx1bCx0ZCx0aCxoMSxoMixoMyxoNCxoNSxoNiIpLmVxKDApfX0sIiI6ZnVuY3Rpb24oeCl7cmV0dXJuIHh9fSxvZmZvbjp7Ii5hY2VfZWRpdG9yIjpmdW5jdGlvbih4LGEpe2FjZS5lZGl0KGFbMF0pLnNldFJlYWRPbmx5KHgpfSwiLnVpLXNlbGVjdGFibGUiOmZ1bmN0aW9uKHgsYSl7angoYSwic2VsZWN0YWJsZSIseCl9LCIudWktc2xpZGVyIjpmdW5jdGlvbih4LGEpe2p4KGEsInNsaWRlciIseCl9LCIudWktZHJhZ2dhYmxlIjpmdW5jdGlvbih4LGEpe2p4KGEsImRyYWdnYWJsZSIseCl9LCIudWktYnV0dG9uc2V0IjpmdW5jdGlvbih4LGEpe2p4KGEsImJ1dHRvbnNldCIseCl9LCIuaGFzRGF0ZXBpY2tlciI6ZnVuY3Rpb24oeCxhKXtqeChhLCJkYXRlcGlja2VyIix4KX0sIi5teS1mb3JtIjpmdW5jdGlvbih4LGEpe2EubXkoImRpc2FibGVkIiwhIXgpfSwiZGl2LnNlbGVjdDItY29udGFpbmVyK2lucHV0LGRpdi5zZWxlY3QyLWNvbnRhaW5lcitzZWxlY3QiOmZ1bmN0aW9uKHgsYSl7angoYSwic2VsZWN0MiIseCl9LCIuc2VsZWN0Mi1oaWRkZW4tYWNjZXNzaWJsZSI6ZnVuY3Rpb24oeCxhKXthLnByb3AoImRpc2FibGVkIiwhIXgpfSwiLm15LWNsZWRpdG9yIjpmdW5jdGlvbih4LGEpe2EuY2xlZGl0b3IoKVswXS5kaXNhYmxlKCEheCl9LCIiOmZ1bmN0aW9uKHgsYSl7YS5hdHRyKCJkaXNhYmxlZCIsISF4KX19LGRlc3Ryb3k6eyIuaGFzRGF0ZXBpY2tlciI6ZnVuY3Rpb24oeCl7eC5kYXRlcGlja2VyKCJkZXN0cm95Iil9LCIudWktc2xpZGVyIjpmdW5jdGlvbih4KXt4LnNsaWRlcigiZGVzdHJveSIpfSwiLnVpLXNvcnRhYmxlIjp7Ii5teS1mb3JtLWxpc3QiOmZ1bmN0aW9uKGEpe2EuZmluZCgiPi5teS1mb3JtIikuZWFjaChmdW5jdGlvbigpe3godGhpcykubXkoInJlbW92ZSIpfSksYS5yZW1vdmVDbGFzcygibXktZm9ybS1saXN0IiksYS5zb3J0YWJsZSgiZGVzdHJveSIpfSwiIjpmdW5jdGlvbih4KXt4LnNvcnRhYmxlKCJkZXN0cm95Iil9fSwiLm15LWZvcm0tbGlzdCI6ZnVuY3Rpb24oYSl7YS5maW5kKCI+Lm15LWZvcm0iKS5lYWNoKGZ1bmN0aW9uKCl7eCh0aGlzKS5teSgicmVtb3ZlIil9KX0sIi51aS1kcmFnZ2FibGUiOmZ1bmN0aW9uKHgpe3guZHJhZ2dhYmxlKCJkZXN0cm95Iil9LCIubXktcmVkYWN0b3ItOCI6ZnVuY3Rpb24oeCl7eC5kZXN0cm95RWRpdG9yKCkseC5yZW1vdmVDbGFzcygibXktcmVkYWN0b3ItOCIpfSwiZGl2LnNlbGVjdDItY29udGFpbmVyK2lucHV0LGRpdi5zZWxlY3QyLWNvbnRhaW5lcitzZWxlY3QsLnNlbGVjdDItaGlkZGVuLWFjY2Vzc2libGUiOmZ1bmN0aW9uKHgpe3guc2VsZWN0MigiZGVzdHJveSIpfSwiLm15LWZvcm0iOmZ1bmN0aW9uKHgpe3gubXkoInJlbW92ZSIpfSx0ZXh0YXJlYTp7Ii5teS1jb2RlbWlycm9yIjpmdW5jdGlvbih4KXt4WzBdLm5leHRTaWJsaW5nLkNvZGVNaXJyb3IudG9UZXh0QXJlYSgpLHgucmVtb3ZlQ2xhc3MoIm15LWNvZGVtaXJyb3IiKX19fX07Sy5wYXJhbXM9e2NvbnRhaW5lcjpmdW5jdGlvbih4KXtyZXR1cm4geXgoeCxLLmNvbnRhaW5lcnMpKHgpfSxjaGFuZ2U6RSxyZWNhbGNEZXB0aDoyLGRlbGF5OjAsc3RyaWN0OiExLHJlc3R5bGU6LTEsbG9jYWxlOmQsbWVzc2FnZXM6T2JqZWN0Lm1hcChLLm1zZyxmdW5jdGlvbih4LGEpe3JldHVybiBhW2RdfHxhLmVufSksZXJyb3JUaXA6Ii5teS1lcnJvci10aXAiLGVycm9yQ3NzOiJteS1lcnJvciIsYW5pbWF0ZTowLGVmZmVjdDpmdW5jdGlvbih4LGEsYil7aWYoYSlyZXR1cm4geC5mYWRlSW4oYik7eC5mYWRlT3V0KGIpfSxyZW1lbWJlcjowLHNpbGVudDohMSxoaXN0b3J5Ont9LGhpc3RvcnlEZWxheToxMDAsbG9hZGVyOmZ1bmN0aW9uKHgsYSl7dmFyIGI9QygpLGM9SCh4KyIiKTtyZXR1cm4gYz9iLnJlc29sdmUoYyk6Yi5yZWplY3QobnVsbCksYi5wcm9taXNlKCl9LGFqYXhUaW1lb3V0OjFlNH0sRGF0ZS5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9JU09TdHJpbmcoKX0sUmVnRXhwLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oKXtyZXR1cm4ibmV3IFJlZ0V4cCgiK3RoaXMudG9TdHJpbmcoKSsiKSJ9O3ZhciBMPXtjb246UCxjbG9uZTpmdW5jdGlvbih4KXtyZXR1cm4geC5jbG9uZT94LmNsb25lKCk6eH0saW5kb206UixqcXVpeDpqeCxvdmVybGFwOiQscGF0Y2g6WixraWNrb2ZmOl8sc2RibUNvZGU6WSx0b2pzb246QXgsZnJvbWpzb246ZnVuY3Rpb24oeCl7dmFyIGE9SlNPTi5wYXJzZSh4KTtyZXR1cm4gQngoYSksYX0sdW5qc29uOmZ1bmN0aW9uKHgpe3JldHVybiBCeCh4KSx4fSxtYXNrOm54LHVubWFzazpveCxnZXRyZWY6VSxyZXBvOmZ1bmN0aW9uKCl7cmV0dXJuIHZ9LHJlc3R5bGVzOmZ1bmN0aW9uKCl7cmV0dXJuIHd9LGJsb2IyYmFzZTY0OmZ1bmN0aW9uKHgsYSxiKXt2YXIgYz1uZXcgRmlsZVJlYWRlcjtjLm9ubG9hZD1mdW5jdGlvbigpe2EoYj9jLnJlc3VsdDpjLnJlc3VsdC5zcGxpdCgiLCIpWzFdKX0sYy5yZWFkQXNEYXRhVVJMKHgpfSxiYXNlNjQyYmxvYjpmdW5jdGlvbih4LGEsYil7Zm9yKHZhciBjPWF0b2IoeCksZD1jLmxlbmd0aCxlPW5ldyBBcnJheUJ1ZmZlcihkKSxmPW5ldyBVaW50OEFycmF5KGUpLGc9MDtnPGQ7ZysrKWZbZ109Yy5jaGFyQ29kZUF0KGcpO3ZhciBoPW5ldyBCbG9iKFtmXSx7dHlwZTpifHwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIn0pO2lmKCF0KGEpKXJldHVybiBoO2EoaCl9LGJhc2U2NDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9bnVsbCxlPXAoYSk/YTp4Lm15LnRvanNvbihhKSxmPXAoYyk/ImRhdGE6IitjKyI7YmFzZTY0LCI6IiI7aWYoYil7dHJ5e2Q9ZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZSh3aW5kb3cuYXRvYihlKSkpfWNhdGNoKHgpe2Q9bnVsbH1pZihudWxsIT09ZCYmLyheIi4qIiQpfCheXFsuKlxdJCl8KF5cey4qXH0kKS8udGVzdChkKSl0cnl7ZD1MLmZyb21qc29uKGQpfWNhdGNoKHgpe2Q9bnVsbH1yZXR1cm4gZH1yZXR1cm4gZit3aW5kb3cuYnRvYSgoITA9PT1jPyLDr8K7wr8iOiIiKSt1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoZSkpKX0sY3NzMmpzb246ZnVuY3Rpb24oeCl7dmFyIGE9IiI7cmV0dXJuKHgrIiIpLnJlcGxhY2UoL1wvXCpbXHNcU10rXCpcLy9nbSwiIikucmVwbGFjZSgvQGNoYXJzZXRbXjtdKzsvZ2ltLCIiKS5yZXBsYWNlKC9bXG5cdFxzXSsvZywiICIpLnJlcGxhY2UoL1xzKkBtZWRpYVtee10qXHsvZyxmdW5jdGlvbih4KXtyZXR1cm4geC50bygtMSkudHJpbSgpKyLhtKUifSkucmVwbGFjZSgvXH0vZywifeG0pSIpLnJlcGxhY2UoL15cbisvZywiIikucmVwbGFjZSgvW1xuXHNdKyQvZywiIikuc3BsaXQoIuG0pSIpLmNvbXBhY3QoITApLnJlZHVjZShmdW5jdGlvbih4LGIpe3ZhciBjLGQsZSxmPWIudHJpbSgpO3JldHVybiJ9Ij09Zj9hPSIiOi9eW157XStce1teXH1dK1x9JC8udGVzdChmKT8oZD0iICIrKGM9Zi50bygtMSkuc3BsaXQoInsiKSlbMF0udHJpbSgpLCI7IiE9KGU9Y1sxXS50cmltKCkpLmxhc3QoKSYmKGUrPSI7IiksYT94W2FdW2RdPSh4W2FdW2RdfHwiIikrZTp4W2RdPSh4W2RdfHwiIikrZSk6L15AbWVkaWEvLnRlc3QoZikmJih4W2ZdPXt9LGE9ZikseH0se30pfSx0bXBsOmZ1bmN0aW9uKCl7fSxfczJjc3M6dngsX25vcm1VSTpxeH0sTT17Y29udGFpbmVyOmZ1bmN0aW9uKHgpe3JldHVybiB5eCh4LEsuY29udGFpbmVycykoeCl9LGRhdGE6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzO3JldHVybiBxKHgpJiYoYi5teSgpLmRhdGE9JChiLm15KCkuZGF0YSx4KSx0aGlzLm15KCJyZWRyYXciLGEpKSxiLm15KCkuZGF0YX0sZGlzYWJsZWQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcyxiPWEubXkoKTtpZihiKXJldHVybiB4PT1FP2IuZGlzYWJsZWQ6KHg/KEEoYi51aSkuZm9yRWFjaChmdW5jdGlvbih4KXt2YXIgYj14eChhLHgpLGM9Yi5teSgpO2MmJihjLnByZWRpc2FibGVkPWMuZGlzYWJsZWQpLGl4KCEwLGIsIjpkaXNhYmxlZCIpfSksYS5hZGRDbGFzcygibXktZGlzYWJsZWQiKSk6KEEoYi51aSkuZm9yRWFjaChmdW5jdGlvbih4KXt2YXIgYj14eChhLHgpLGM9Yi5teSgpO2MmJml4KGMucHJlZGlzYWJsZWQsYiwiOmRpc2FibGVkIil9KSxhLnJlbW92ZUNsYXNzKCJteS1kaXNhYmxlZCIpLGEubXkoInJlZHJhdyIpKSx2b2lkIDApfSxlcnJvcnM6ZnVuY3Rpb24oKXt2YXIgYT14KHRoaXMpLm15KCkuZXJyb3JzfHx7fSxiPXt9O3JldHVybiBBKGEpLmZvckVhY2goZnVuY3Rpb24oeCl7dmFyIGM9YVt4XTsodHlwZW9mIGM9PWomJiIiIT1jfHxxKGMpJiZPYmplY3Quc2l6ZShjKSkmJihiW3hdPWMpfSksYn0sZmluZDpmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YS5teSgpO3JldHVybiBiJiZiLnJvb3QmJihhPWIucm9vdCksYS5maW5kKHgpfSxoaXN0b3J5OmZ1bmN0aW9uKHgsYSl7cmV0dXJuIGx4KHgsdGhpcy5teSgpLnBhcmFtcyxhKX0saWQ6ZnVuY3Rpb24oeCxhKXtpZihwKHgpKXJldHVybiBIKHgsYSk7dmFyIGI9dGhpcy5teSgpO3JldHVybiBiJiZiLmlkP2IuaWQ6RX0saW5kZXg6ZnVuY3Rpb24oKXtyZXR1cm4oKHRoaXMubXkoKS5yb290JiYhdGhpcy5teSgpLmRkYXRhP3RoaXMubXkoKS5yb290OnRoaXMpLmRhdGEoImZvcm1saXN0Iil8fHt9KS5pbmRleH0saW5kb206ZnVuY3Rpb24oKXtyZXR1cm4gUih0aGlzKX0saW5pdDp1eCxpbnNlcnQ6ZnVuY3Rpb24oeCxhKXt2YXIgYixjLGQ9dGhpcy5oYXNDbGFzcygibXktZm9ybS1saXN0Iik/dGhpczp0aGlzLm15KCkucm9vdHx8dGhpcyxlPWQuaGFzQ2xhc3MoIm15LWZvcm0tbGlzdCIpP2Q6ZC5wYXJlbnQoIi5teS1mb3JtLWxpc3QiKSxmPShkLmRhdGEoImZvcm1saXN0Iil8fHt9KS5pbmRleCxnPWEsaD1lLmRhdGEoImZvcm1saXN0IikuZ2VuZXJhdG9yO2lmKG51bGw9PWYmJihmPTApLGI9bS50ZXN0KGguYmluZCk/VShlLm15KCkubWFuaWZlc3QsaC5iaW5kLnJlcGxhY2UobSwiIikpOlUoZS5teSgpLmRhdGEsaC5iaW5kKSwhcShnKSlpZihxKGgubWFuaWZlc3QpKWc9eihoLm1hbmlmZXN0LmRhdGEsITApfHx7fTtlbHNle2lmKGU9PT1kKXRocm93Ik5vIGRhdGEgdG8gaW5zZXJ0LCBjYW5ub3QgZ3Vlc3Mgd2hlbiBtYW5pZmVzdCBpcyBhIGZ1bmN0aW9uLiI7Zz16KGQubXkoKS5tYW5pZmVzdC5kYXRhLCEwKX1pZigiYmVmb3JlIj09PXgpYz1mO2Vsc2UgaWYoImFmdGVyIj09PXgpYz1mKzE7ZWxzZXtpZihpc05hTih4KSl0aHJvdyJJbnZhbGlkIHBvc2l0aW9uIGZvciBpbnNlcnRpb24iO2M9KDEqeCkuY2xhbXAoMCxiLmxlbmd0aCl9Yi5hZGQoZyxjKSxlLnRyaWdnZXIoInJlZHJhdyIpfSxtYW5pZmVzdDpmdW5jdGlvbih4KXtyZXR1cm4ianNvbiI9PXg/TC50b2pzb24odGhpcy5teSgpLm1hbmlmZXN0KTp0aGlzLm15KCkubWFuaWZlc3R9LHByb21pc2U6ZnVuY3Rpb24oeCl7cmV0dXJuIHQoeCkmJnRoaXMubXkoKS5wcm9taXNlLnRoZW4oeCksdGhpcy5teSgpLnByb21pc2V9LHJhZGlvOmZ1bmN0aW9uKHgsYSl7dGhpcy50cmlnZ2VyKCJyYWRpbyIscCh4KT97Y2hhbm5lbDp4LG1lc3NhZ2U6YX06eCl9LHJlZHJhdzpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXMsYz1iLm15KCksZD0yO3JldHVybiBjJiZxKGMudWkpJiYoZD1jLnBhcmFtcy5yZWNhbGNEZXB0aCxPYmplY3Qua2V5cyhjLnVpKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBjPXh4KGIsYSk7engoYyx4P0U6dm9pZCAwLGQpLHh8fChjLmhhc0NsYXNzKCJteS1mb3JtIikmJmMubXkoInJlZHJhdyIpLGMuaGFzQ2xhc3MoIm15LWZvcm0tbGlzdCIpP2MudHJpZ2dlcigicmVkcmF3Iik6Yy50cmlnZ2VyKCJjaGVjay5teSIpKX0pLCFhJiZ4JiZiLnRyaWdnZXIobCkpLGJ9LHJlbW92ZTpmdW5jdGlvbih4KXt2YXIgYSxiLGMsZCxlLGYsZyxoLGk9dGhpcztpZighdGhpcy5teSgpKXJldHVybiBFO2lmKHRoaXMubXkoKS5yb290JiYhdGhpcy5teSgpLmRkYXRhJiYoaT10aGlzLm15KCkucm9vdCksZT0oYz1pLm15KCkpLmRhdGEsZz1jLmNpZCxoPWMubWlkLGkudW5iaW5kKCIubXkiKSxxKGMpJiZjLm1hbmlmZXN0JiZ0KGMubWFuaWZlc3QuZGllKSl0cnl7Yy5tYW5pZmVzdC5kaWUuY2FsbChjLm1hbmlmZXN0LGksYy5tYW5pZmVzdCl9Y2F0Y2goeCl7fWlmKGE9Yy5zdHlsZSlpZigiMSI9PWEuZGF0YSgiY291bnQiKSl0cnl7YS5yZW1vdmUoKX1jYXRjaCh4KXt9ZWxzZSBhLmRhdGEoImNvdW50IixhLmRhdGEoImNvdW50IiktMSk7aWYoYj1jLmxvY2FsU3R5bGUpdHJ5e2RlbGV0ZSB3W2ddLGIucmVtb3ZlKCl9Y2F0Y2goeCl7fWlmKHdpbmRvdy5VUkwmJihkPWMubG9jRmlsZXMpJiZkLmxlbmd0aClmb3IodmFyIGo9MDtqPGQubGVuZ3RoO2orKyl0cnl7VVJMLnJldm9rZU9iamVjdFVSTChkW2pdKX1jYXRjaCh4KXt9aWYoKGY9KGN8fHt9KS51aSkmJkEoZikuZm9yRWFjaChmdW5jdGlvbih4KXt2YXIgYSxiLGMsZD14eChpLHgpO2lmKChiPWQuZGF0YSgibW9kYWwiKSkmJihiLmNhbmNlbCgpLGQucmVtb3ZlRGF0YSgibW9kYWwiKSksYj1kLmRhdGEoIm1vZGFscyIpKWZvcihjIGluIGIpYltjXSYmYltjXS5jYW5jZWwoKTtkLnVuYmluZCgiLm15Iik7dHJ5e2E9eXgoZCxLLmRlc3Ryb3kpLHQoYSkmJmEoZCl9Y2F0Y2goeCl7fWQucmVtb3ZlRGF0YSgiZm9ybWxpc3QiKS5yZW1vdmVEYXRhKCJteXZhbCIpLnJlbW92ZURhdGEoIm15Iil9KSx4JiZpLmhhc0NsYXNzKCJteS1mb3JtIikpaS5yZW1vdmUoKTtlbHNlIGlmKGkuZGF0YSgiZm9ybWxpc3QiKSYmaS5oYXNDbGFzcygibXktZm9ybSIpKXt2YXIgaz1pLnBhcmVudHMoIi5teS1mb3JtLWxpc3QiKS5lcSgwKTtpLnJlbW92ZSgpLGsudHJpZ2dlcigiY2hlY2siKX1lbHNlIGkucmVtb3ZlRGF0YSgiZm9ybWxpc3QiKS5yZW1vdmVEYXRhKCJteXZhbCIpLnJlbW92ZURhdGEoIm15IikucmVtb3ZlQ2xhc3MoIm15LWZvcm0iKTtyZXR1cm4gaS5yZW1vdmVDbGFzcygibXktZm9ybS0iK2crIiBteS1tYW5pZmVzdC0iK2gpLGV9LHJlc2V0OmZ1bmN0aW9uKCl7dHJ5e18odGhpcy5teSgpLmRhdGEsdGhpcy5teSgpLmluaXRpYWwpLHRoaXMubXkoInJlZHJhdyIpfWNhdGNoKHgpe3JldHVybiExfXJldHVybiEwfSxyZXN0eWxlOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZD1bXSxlPXRoaXMuaGFzQ2xhc3MoIm15LWZvcm0iKT90aGlzOnRoaXMucGFyZW50cygiLm15LWZvcm0iKS5lcSgwKTtpZihlLmxlbmd0aCYmZS5pcygiOnZpc2libGUiKSl7Zm9yKChjPShlLmRhdGEoIm15Iil8fHt9KS5jaWQpJiZkLnB1c2goYyksYXx8eHgoZSwiLm15LXJlc3R5bGUiLCEwKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGE9KHgodGhpcykuZGF0YSgibXkiKXx8e30pLmNpZDthJiZkLnB1c2goYSl9KSxiPTA7YjxkLmxlbmd0aDtiKyspaWYod1tkW2JdXSl0cnl7d1tkW2JdXSgpfWNhdGNoKHgpe31yZXR1cm4hIWQubGVuZ3RofXJldHVybiExfSx1aTpmdW5jdGlvbih4KXt2YXIgYSxiPXRoaXMsYz1iLm15KCksZD1bXTtpZighYylyZXR1cm4gRTtpZighcSh4KSlyZXR1cm4gYy51aTtmb3IoQSh4KS5mb3JFYWNoKGZ1bmN0aW9uKHgpe2QucHVzaCh4KX0pLGMudWk9cXgoJChjLnVpLHgpKSxhPTA7YTxkLmxlbmd0aDthKyspZngoeHgoYixkW2FdLCEwKSxiLGMudWlbZFthXV0sZFthXSk7cmV0dXJuIEEoeCkuZm9yRWFjaChmdW5jdGlvbih4KXt4eChiLHgpLnRyaWdnZXIoImNoZWNrIil9KSxjLnVpfSx1bmRvOmZ1bmN0aW9uKHgpe3ZhciBhLGI9dGhpcyxjPWIubXkoKSxkPWMucGFyYW1zLmhpc3RvcnksZT1BKGQpLnNvcnQoKSxmPTEqKHBhcnNlSW50KHgpfHwwKTtyZXR1cm4hZS5sZW5ndGh8fGY8MD9FOihjLnBhcmFtcy5lcnJvcnMmJmMucGFyYW1zLmVycm9ycy52YWx1ZXMoKS5jb21wYWN0KCEwKS5sZW5ndGg/T2JqZWN0LmVxdWFsKGMuZGF0YSxjLmxhc3RDb3JyZWN0KXx8KGYrPTEpOk9iamVjdC5lcXVhbChkW2UubGFzdCgpXSxjLmRhdGEpJiYoZis9MSksKGE9bHgoZixjLnBhcmFtcywhMCkpJiYoXyhiLm15KCkuZGF0YSxhKSxiLm15KCJyZWRyYXciKSksYi5teSgpLmRhdGEpfSx2YWw6ZnVuY3Rpb24oeCl7cmV0dXJuIGt4KHRoaXMseCl9LHZhbGlkOmZ1bmN0aW9uKCl7dmFyIGE9eCh0aGlzKS5teSgpLmVycm9ycyxiPTA7cmV0dXJuIEEoYSkuZm9yRWFjaChmdW5jdGlvbih4KXtifHwoYVt4XSYmcChhW3hdKXx8cShhW3hdKSYmQShhW3hdKS5sZW5ndGgpJiZiKyt9KSwhYn0sdmVyc2lvbjpmdW5jdGlvbigpe3JldHVybiBhfX0sTj1PYmplY3Qua2V5cyhNKTtyZXR1cm4geC5teXx8KHgubXk9e30pLEIoeC5teSx7Zjp4LmV4dGVuZCh7fSxMKSx0b2pzb246TC50b2pzb24sZnJvbWpzb246TC5mcm9tanNvbixyYWRpbzpmdW5jdGlvbihhLGIpe2d4KHgoZG9jdW1lbnQpLHAoYSk/e2NoYW5uZWw6YSxtZXNzYWdlOmJ9OmEpfSxydWxlczpLLGxvY2FsZTpmdW5jdGlvbih4KXtpZighcCh4KSlyZXR1cm4gZDtkPXgudG9Mb3dlckNhc2UoKSxLLnBhcmFtcy5sb2NhbGU9ZH0sYWpheDpmdW5jdGlvbih4KXtyZXR1cm4gdCh4KT9HPXg6Ry5hcHBseSh0aGlzLFMoYXJndW1lbnRzLDApKX0sY2FjaGU6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gdCh4KT9IPXg6SCh4LGEpfSxub3c6ZnVuY3Rpb24oeCl7aWYoIXQoeCkpcmV0dXJuIEkoKTtJPXh9LHJlcXVpcmU6ZnVuY3Rpb24oeCl7cmV0dXJuIHQoeCk/Sj14OkouYXBwbHkodGhpcyxTKGFyZ3VtZW50cywwKSl9LGNoYWluOmZ1bmN0aW9uKCl7dmFyIHg9MSxhPTFlMyxiPVtdLGM9ITEsZD1mdW5jdGlvbihjLGQsZil7Yi5wdXNoKFtjLGR8fHgsZnx8YV0pLGUoKX07cmV0dXJuIGQuZGVsYXk9ZnVuY3Rpb24oYSl7cmV0dXJuIGlzTmFOKGEpfHwoeD0oYS0wKS5jbGFtcCgwLDFlNikpLHh9LGQudGltZW91dD1mdW5jdGlvbih4KXtyZXR1cm4gaXNOYU4oeCl8fChhPSh4LTApLmNsYW1wKDEsMWU2KSksYX0sZC5zdGFydD1mdW5jdGlvbigpe2M9ITAsZSgpfSxkLnN0b3A9ZnVuY3Rpb24oKXtjPSExfSxkO2Z1bmN0aW9uIGUoKXtpZihiLmxlbmd0aCYmYyl7dmFyIHgsYT1iLnNoaWZ0KCksZD1mdW5jdGlvbigpe2UuZGVsYXkoYVsxXSl9Lm9uY2UoKTt0cnl7eD1hWzBdKCl9Y2F0Y2goeCl7ZCgpfXUoeCk/KHgudGhlbihkLGQpLGQuZGVsYXkoYVsxXSkpOmQoKX19fSgpLHZlcnNpb246ZnVuY3Rpb24oKXtyZXR1cm4gYX19KSx4Lm15LmluY2FjaGU9T2JqZWN0LmNyZWF0ZSh2KSx4Lm15LnZlcnNpb24udG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gYX0seC5mbi5teT1mdW5jdGlvbihhKXt2YXIgYjtpZih2b2lkIDA9PT1hKXJldHVybiB0aGlzLmRhdGEoIm15Iik7aWYocChhKSYmInsiPT1hLnN1YnN0cigwLDEpKXt0cnl7Yj1KU09OLnBhcnNlKGEpfWNhdGNoKHgpe31pZihiKXJldHVybiBNLmluaXQuYXBwbHkodGhpcyxbYl0uYWRkKFMoYXJndW1lbnRzLDEpKSl9cmV0dXJuIHAoYSkmJk1bYV0/TVthXS5hcHBseSh0aGlzLFMoYXJndW1lbnRzLDEpKTpwKGEpJiZIKGEsImV4aXN0Iik/TS5pbml0LmFwcGx5KHRoaXMsYXJndW1lbnRzKTp0eXBlb2YgYSE9PWcmJmE/KHguZXJyb3IoIk1ldGhvZCAiK2ErIiBkb2VzIG5vdCBleGlzdCBvbiBqUXVlcnkubXkiKSx2b2lkIDApOk0uaW5pdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LHgod2luZG93KS5vZmYoIi5teSIpLm9uKCJyYWRpby5teSIsZnVuY3Rpb24oYSxiKXthLnN0b3BQcm9wYWdhdGlvbigpLGd4KHgoZG9jdW1lbnQpLGIpfSkub24oInJlc2l6ZS5teSIsZnVuY3Rpb24oKXtBKHcpLmZvckVhY2goZnVuY3Rpb24oeCl7dHJ5e3dbeF0oKX1jYXRjaCh4KXt9fSl9LmRlYm91bmNlKDY3KSksdm9pZCAwO2Z1bmN0aW9uIE8oKXt3aW5kb3cuY29uc29sZSYmY29uc29sZS5lcnJvci5hcHBseShjb25zb2xlLGFyZ3VtZW50cyl9ZnVuY3Rpb24gUCgpe3dpbmRvdy5jb25zb2xlJiZjb25zb2xlLmxvZy5hcHBseShjb25zb2xlLGFyZ3VtZW50cyl9ZnVuY3Rpb24gUSh4LGEpe3JldHVybiJoYXNPd25Qcm9wZXJ0eSIhPWE/eC5oYXNPd25Qcm9wZXJ0eShhKTohISgiaGFzT3duUHJvcGVydHkiaW4geCl9ZnVuY3Rpb24gUihhKXtyZXR1cm4geC5jb250YWlucyhkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsYVswXSl9ZnVuY3Rpb24gUyh4LGEpe3JldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh4LGF8fDApfWZ1bmN0aW9uIFQoeCxhLGIpe3ZhciBjPTAsZD14Lmxlbmd0aCxlPSEwO2lmKHg9PT1hKXJldHVybiI9PT0iO2lmKCI9PT0iPT1iKXJldHVybiIiO2lmKGQhPWEubGVuZ3RoKXJldHVybiIiO2Zvcig7YzxkJiZlO2MrKyllPXhbY109PT1hW2NdO2lmKGUpcmV0dXJuIj09IjtpZigiPT0iPT1iKXJldHVybiIiO2ZvcihlPSEwO2M8ZCYmZTtjKyspZT1PYmplY3QuZXF1YWwoeFtjXSxhW2NdKTtyZXR1cm4gZT8iPSI6IiJ9ZnVuY3Rpb24gVSh4LGEpe3JldHVybihwKGEpP2Euc3BsaXQoIi4iKTpuKGEpP2E6WyIiXSkucmVkdWNlKGZ1bmN0aW9uKHgsYSl7aWYobnVsbCE9eCl7aWYoLz0vLnRlc3QoYSkpe3ZhciBiPWEuc3BsaXQoIj0iLDIpO3JldHVybiBxKHgpP09iamVjdC52YWx1ZXMoeCkuZmluZChmdW5jdGlvbih4KXtyZXR1cm4hKCFxKHgpJiYhbih4KSkmJnhbYlswXV09PWJbMV19KTpuKHgpP3guZmluZChmdW5jdGlvbih4KXtyZXR1cm4hKCFxKHgpJiYhbih4KSkmJnhbYlswXV09PWJbMV19KTp2b2lkIDB9aWYobnVsbCE9eFthXSlyZXR1cm4geFthXX19LHgpfWZ1bmN0aW9uIFYoeCl7dmFyIGE9eC5teSgpO3JldHVybiBhP2Eucm9vdD9hLnJvb3QubXkoKTphOm51bGx9ZnVuY3Rpb24gVyh4KXt2YXIgYT17fSxiPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9O3JldHVybiBwKHgpP3guc3BsaXQoL1ssXHNdKy8pLmNvbXBhY3QoITApLnVuaXF1ZSgpLm1hcChmdW5jdGlvbih4KXthW3hdPWJ9KTpuKHgpP3guY29tcGFjdCghMCkudW5pcXVlKCkubWFwKGZ1bmN0aW9uKHgpe2FbeF09Yn0pOnEoeCkmJkEoeCkuZm9yRWFjaChmdW5jdGlvbihiKXt0KHhbYl0pP2FbYl09eFtiXTphW2JdPWZ1bmN0aW9uKCl7cmV0dXJuIHhbYl19fSksYX1mdW5jdGlvbiBYKHgpe3ZhciBhLGI9eCxjPXt9O2lmKHAoYikmJihiPWIuc3BsaXQoL1ssXHNdKy8pKSxuKGIpKXtmb3IoYj1iLmNvbXBhY3QoITApLGE9MDthPGIubGVuZ3RoO2ErKyljW2JbYV1dPSEwO3JldHVybiBjfXJldHVybiBxKGIpP3g6bnVsbH1mdW5jdGlvbiBZKHgpe2Zvcih2YXIgYT1KU09OLnN0cmluZ2lmeSh4KSxiPTAsYz0wO2M8YS5sZW5ndGg7YysrKWI9YS5jaGFyQ29kZUF0KGMpKyhiPDw2KSsoYjw8MTYpLWI7cmV0dXJuKDFlMTErYikudG9TdHJpbmcoMzYpfWZ1bmN0aW9uIFooeCxhKXtyZXR1cm4gQShhKS5mb3JFYWNoKGZ1bmN0aW9uKGIpe3EoYVtiXSk/USh4LGIpP1ooeFtiXSxhW2JdKTp4W2JdPXooYVtiXSwhMCk6USh4LGIpfHwobihhW2JdKT94W2JdPWFbYl0uY2xvbmUoITApOnhbYl09YVtiXSl9KSx4fWZ1bmN0aW9uICQoeCxhKXtyZXR1cm4geD9hP3koeCxhLCExLGIpOng6e307ZnVuY3Rpb24gYih4LGEsYyl7cmV0dXJuIG51bGw9PWM/YTpxKGMpP3koYSxjLCExLGIpOmN9fWZ1bmN0aW9uIF8oeCxhKXtyZXR1cm4gQSh4KS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2RlbGV0ZSB4W2FdfSksIm9iamVjdCI9PXR5cGVvZiBhJiZ5KHgsYSwhMCkseH1mdW5jdGlvbiB4eChhLGIsYyl7cmV0dXJuL15bI1wuXVthLXowLTlfXC1dezEsMzF9JC9pLnRlc3QoYik/eChjP2FbMF0ucXVlcnlTZWxlY3RvckFsbChiKTphWzBdLnF1ZXJ5U2VsZWN0b3IoYikpOmN8fC86Ly50ZXN0KGIpfHwvXlthLXpdezEsMzF9W1xbXC5cI11bYS16XS9pLnRlc3QoYik/YS5maW5kKGIpOmEuZmluZChiKS5lcSgwKX1mdW5jdGlvbiBheCh4LGEpe3ZhciBiLGM7cmV0dXJuIHAoeCk/KGI9eCxjPVUocShhKT9hOnYsYiksImV4aXN0Ij09PWE/cShjKTpjP3ooYywhMCk6bnVsbCk6cSh4KT8oYz1jeCh4LGEpLHEoYyk/YzpudWxsKTp2b2lkIDA9PT14P3YuX3NyYzpudWxsPT09eD9PYmplY3QucmVqZWN0KHYsL15fLyk6bnVsbH1mdW5jdGlvbiBieCh4LGEpe3ZhciBiLGM7aWYocShhKSlyZXR1cm4gYTtpZihwKGEpKXtpZihudWxsPT0oYj1VKHgsYSkpJiYoYj16KHYuX3NyY1thXSwhMCkpLG51bGw9PWImJihiPVUodixhKSxxKGIpJiZxKGIuX3NlbGYpP2I9eihiLl9zZWxmLCEwKTpxKGIpJiYoYj16KGIsITApKSksbnVsbD09YiYmVSh4LCJwYXJhbXMuY2FjaGUiKSYmKGM9VSh4LCJwYXJhbXMuY2FjaGUiKSx0KGMpP2I9YyhhKTpxKGMpJiYoYj1IKGEsYykpLHEoYikmJihxKGIuX3NlbGYpJiYoYj16KGIuX3NlbGYsITApKSx5KGIse3BhcmFtczp7Y2FjaGU6Y319LCEwKSkpLG51bGwhPWImJnEoYikpcmV0dXJuKGM9Y3x8VSh4LCJwYXJhbXMuY2FjaGUiKSkmJnkoYix7cGFyYW1zOntjYWNoZTpjfX0sITApLGI7dGhyb3ciQ29tcG9uZW50ICIrYSsiIG5vdCBmb3VuZC4ifXJldHVybiB0KGEpP2EuYXBwbHkoeCxTKGFyZ3VtZW50cywyKSk6bnVsbH1mdW5jdGlvbiBjeChhLGIpe3ZhciBkLGUsZixnLGgsaT1ifHx2LGo9YTtpZighKHEoaSkmJnEoaikmJnEoai51aSkmJnAoai5pZCkpKXJldHVybiJDYW7igJl0IHNhdmUgbWFuaWZlc3QgaW50byBjYWNoZSwgaW52YWxpZCBhcmd1bWVudHMuIjtRKGksIl9zcmMiKXx8KGkuX3NyYz17fSksZj1qLmlkO3RyeXtqPXooYSwhMCl9Y2F0Y2goeCl7cmV0dXJuIkNhbuKAmXQgc2F2ZSBjaXJjdWxhci1yZWZlcmVuY2luZyBvYmplY3QgaW50byBjYWNoZS4ifXRyeXsoIWoucGFyYW1zfHxqLnBhcmFtcyYmIWoucGFyYW1zLnN0cmljdCkmJkJ4KGosITApfWNhdGNoKHgpe3JldHVybiJJbnZhbGlkIG1hbmlmZXN0LCBwYXJzZSBlcnJvci4ifWlmKGQ9ZHgoaikscChkKSlyZXR1cm4gTyhkKSxkO2lmKHkoaix7cGFyYW1zOntzdHJpY3Q6ITB9fSwhMCksaS5fc3JjW2ZdPWosZz1ueChpLGYpKXtpZihnLnBhcmFtcyYmZy5wYXJhbXMucHJvdGVjdClyZXR1cm4iQ2Fu4oCZdCBzYXZlIG1hbmlmZXN0IGludG8gY2FjaGUgb3ZlciBwcm90ZWN0ZWQgb25lLiI7Zy5fc2VsZiYmZGVsZXRlIGcuX3NlbGYseC5leHRlbmQoITAsaSxveCgiIixmKSl9cmV0dXJuIHguZXh0ZW5kKCEwLGksb3goaixmKSksKGU9T2JqZWN0LmtleXMoaS5fc3JjKS5maWx0ZXIoZnVuY3Rpb24oeCl7cmV0dXJuIHguc3RhcnRzV2l0aChmKyIuIil9KSkuc29ydCgpLGUuZm9yRWFjaChmdW5jdGlvbihhKXt2YXIgYjsoYj1ueChpLGEpKSYmKGIuX3NlbGYmJmRlbGV0ZSBiLl9zZWxmLHguZXh0ZW5kKCEwLGksb3goIiIsYSkpKSx4LmV4dGVuZCghMCxpLG94KGkuX3NyY1thXSxhKSl9KSxoPVUoaSxmKSxjP2guX3NlbGY9aS5fc3JjW2ZdOk9iamVjdC5kZWZpbmVQcm9wZXJ0eShoLCJfc2VsZiIse2dldDpmdW5jdGlvbigpe3JldHVybiBpLl9zcmNbZl19LHNldDpmdW5jdGlvbigpe3Rocm93IkNhbuKAmXQgY2hhbmdlIG1hbmlmZXN0IGNhY2hlIGVudHJ5IGRpcmVjdGx5LiJ9LGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSksaH1mdW5jdGlvbiBkeCh4KXt2YXIgYT1bXTtyZXR1cm4gcSh4LmZpbGVzKT8oQSh4LmZpbGVzKS5mb3JFYWNoKGZ1bmN0aW9uKGMpe3ZhciBkPXguZmlsZXNbY107aWYoIXEoZCkpcmV0dXJuIk5vbi1vYmplY3QgbWVtYmVyICIrYysiIGluIGZpbGVzIHNlY3Rpb24uIjtpZihwKGQuZGF0YSkmJiFkLnVybClpZihiKXRyeXtMLmJhc2U2NDJibG9iKGQuZGF0YSxmdW5jdGlvbih4KXtkLmJsb2I9eCxkLnVybD1iLmNyZWF0ZU9iamVjdFVSTChkLmJsb2IpfSxkLmNvbnRlbnRfdHlwZXx8ZC5taW1lKSxhLnB1c2goYyl9Y2F0Y2goeCl7cmV0dXJuIkludmFsaWQgYmFzZTY0IGRhdGEgaW4gZmlsZXMvIitjKyIuIn1lbHNlIGQudXJsPSJkYXRhOiIrKGQuY29udGVudF90eXBlfHxkLm1pbWUpKyI7YmFzZTY0LCIrZC5kYXRhLGEucHVzaChjKX0pLGEpOltdfWZ1bmN0aW9uIGV4KHgsYSxiLGMpe3ZhciBkLGU9W10sZj1iLmJpbmQsZz1EKGYpO3JldHVybiBnPT1rP2YuY2FsbChWKGMpLm1hbmlmZXN0LHgsYSxjKTpnPT09anx8Zz09PWk/ZyE9PWp8fC9cLi8udGVzdChmKT8oInRoaXMiPT0oZT1nPT09aj9mLnNwbGl0KCIuIik6ZilbMF0/KGQ9VihjKS5tYW5pZmVzdCxlLnNoaWZ0KCkpOmQ9eCxweChkLGEsZSwhMCkpOihhIT1FP3hbZl09YTp2b2lkIDA9PT14W2ZdJiYoeFtmXT1FKSx4W2ZdKTpFfWZ1bmN0aW9uIGZ4KGEsYixjLGQpe3ZhciBlLGYsZyxoLGk9Yi5teSgpLGo9KGl8fHt9KS5wYXJhbXMsaz1jLG89bnVsbCxzPTAsdj1pLm1hbmlmZXN0LHc9MHxhLmxlbmd0aDtyZXR1cm4gaT8oaD1jLmRlbGF5LHc/KGsuaW5pdCE9RSYmKGU9cngodixrLmluaXQsYSxpKSksdShlKT8ocys9MSxvPUMoKSxlLnRoZW4oeixmdW5jdGlvbih4LGEpe0EoIkluaXQgb2YgIitkKyIgZmFpbGVkOiAiK3gsYSl9KSk6eigpKTpQKCJOb3QgZm91bmQgIitkKyIgc2VsZWN0b3IuIixiKSxvKTooTygiRmFpbGVkIHRvIGZpbmQgJHJvb3QgYnVpbGRpbmcgIitkKyIgc2VsZWN0b3IuIiksbnVsbCk7ZnVuY3Rpb24geigpe3ZhciBiPW51bGwsYz1rLm1hbmlmZXN0O2lmKHQoYyl8fHEoYykmJnEoYy51aSk/Zz1jOnAoYykmJihnPWJ4KHYsYy5yZXBsYWNlKG0sIiIpKSksZyYmcChrLmJpbmQpKXt2YXIgZT1VKG0udGVzdChrLmJpbmQpP3Y6aS5kYXRhLGsuYmluZC5yZXBsYWNlKG0sIiIpKTtpZihudWxsPT09byYmKG89QygpKSxuKGUpfHxrLmxpc3Qpe2EuYWRkQ2xhc3MoIm15LWZvcm0tbGlzdCIpO3ZhciBmPSIiLGg9Ij4qIjtpZigvXjwuKz4kLy50ZXN0KGsubGlzdCk/Zj1rLmxpc3Q6aD1rLmxpc3R8fGgsIWYpe3ZhciBsPSI+KiI9PWg/eChhWzBdLmNoaWxkcmVuKTp4eChhLGgsITApO2Y9IjxkaXY+PC9kaXY+IixsLmxlbmd0aCYmKGY9eChmKS5hcHBlbmQobC5lcSgwKS5jbG9uZSghMCkpLmh0bWwoKSxsLmVxKDApLnJlbW92ZSgpKX1hLmRhdGEoImZvcm1saXN0Iil8fGEuZGF0YSgiZm9ybWxpc3QiLHt9KSxhLmRhdGEoImZvcm1saXN0IikuZ2VuZXJhdG9yPXttYW5pZmVzdDpnLGRlbGF5OihrLmRlbGF5fHxqLmRlbGF5fHwxMCkvMS4zLHRlbXBsYXRlOmYsc2VsZWN0b3I6aCxwYXJlbnQ6dixiaW5kOmsuYmluZCxtZXJnZTp0KGsubWVyZ2UpP2subWVyZ2UuYmluZCh2KTohIWsubWVyZ2UmJiQsaGFzaDp0KGsuaGFzaCk/ay5oYXNoLmJpbmQodik6cChrLmhhc2gpP0QuZmlsbCh2b2lkIDAsay5oYXNoKTpuKGsuaGFzaCk/Ri5maWxsKHZvaWQgMCxrLmhhc2guc2xpY2UoMCkpOm51bGwsaWQ6dChrLmlkKT9rLmlkLmJpbmQodik6cChrLmlkKT9ELmZpbGwodm9pZCAwLGsuaWQpOm4oay5pZCk/Ri5maWxsKHZvaWQgMCxrLmlkLnNsaWNlKDApKTpudWxsLGV4dDohKCFrLmlkJiYhay5oYXNoKSxzdGFtcDowfSxhLm9uKCJpbnNlcnQubXkiLGZ1bmN0aW9uKGEsYil7YS5zdG9wUHJvcGFnYXRpb24oKTt2YXIgYz17d2hhdDp2b2lkIDAsd2hlcmU6MH07bnVsbD09Yj9jLndoZXJlPTFlNjpxKGIpP3koYyxiKToocChiKXx8cihiKSkmJihjLndoZXJlPWIpLHgoYS50YXJnZXQpLm15KCJpbnNlcnQiLGMud2hlcmUsYy53aGF0KX0pLGEub24oInJlbW92ZS5teSIsZnVuY3Rpb24oYSl7YS5zdG9wUHJvcGFnYXRpb24oKSx4KGEudGFyZ2V0KS5teSgicmVtb3ZlIil9KX1lbHNlIHRyeXtiPXV4LmNhbGwoYSxieCh2LGcpLHEoZSk/ZTp2b2lkIDApfWNhdGNoKHgpe0EoIiQubXkgc3ViZm9ybSBpbml0IG9mICIrZCsiIGZhaWxlZDogIit4Lm1lc3NhZ2UseC5zdGFjayl9fXUoYik/Yi50aGVuKEcsZnVuY3Rpb24oeCxhKXtBKCJJbml0IG9mIHN1YmZvcm0gIitkKyIgZmFpbGVkIHdpdGggZXJyb3I6ICIreCxhKX0pOkcoKX1mdW5jdGlvbiBBKHgsYSl7Tyh4LGEpLG8mJm8ucmVqZWN0KHgsYSl9ZnVuY3Rpb24gRCh4LGEpe3ZhciBiPVUoeCxhKXx8IiI7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBiP2I6WShiKX1mdW5jdGlvbiBGKHgsYSl7cmV0dXJuIFkobngoeCxhKSl9ZnVuY3Rpb24gRygpe2EuZWFjaChmdW5jdGlvbigpe3ZhciBlLGcsbSxuPXgodGhpcyksbz1uWzBdLm5vZGVOYW1lLHA9ITE7aWYoIlRFWFRBUkVBIj09byYmKGc9KG09blswXS5uZXh0U2libGluZykmJm0uQ29kZU1pcnJvcj9tLkNvZGVNaXJyb3I6bnVsbCkmJm4uYWRkQ2xhc3MoIm15LWNvZGVtaXJyb3IiKSxlPWsuZXZlbnRzfHx5eChuLEsuZXZlbnRzKSxuLmhhc0NsYXNzKCJteS1mb3JtIik/QihuLmRhdGEoIm15Iikse2R1aTprLHJvb3Q6YixzZWxlY3RvcjpkLGRwYXJhbXM6aixkZXZlbnRzOmUsZGRhdGE6aS5kYXRhLGNvbnRhaW5lcjpqLmNvbnRhaW5lcihuKSxkZXJyb3JzOmkuZXJyb3JzLHNpbmdsZTohMH0pOihuLmRhdGEoIm15Iix7ZXZlbnRzOmUsc2VsZWN0b3I6ZCxpbml0aWFsOmYscHJldmlvdXM6Zixyb290OmIsY29udGFpbmVyOmouY29udGFpbmVyKG4pLGlkOmkuaWQsdWk6ayxkYXRhOmkuZGF0YSxwYXJhbXM6aixlcnJvcnM6aS5lcnJvcnMsc2luZ2xlOjE9PXd9KSxjLl91cGRhdGU9ay5kZWxheT96eC5kZWJvdW5jZShrLmRlbGF5KTpFLHA9ITApLHApaWYobi5jbGVkaXRvciYmbi5wYXJlbnQoKS5oYXNDbGFzcygiY2xlZGl0b3JNYWluIikpe3ZhciBxPW4uY2xlZGl0b3IoKVswXTtpZihxJiZxLiRmcmFtZSYmcS4kZnJhbWVbMF0pe24uYWRkQ2xhc3MoIm15LWNsZWRpdG9yIiksQihuLmRhdGEoIm15Iikse2NvbnRhaW5lcjpqLmNvbnRhaW5lcihuKX0pO3ZhciByLHM9ZnVuY3Rpb24oeCl7bi52YWwoeCkudHJpZ2dlcihsKX0sdD1OdW1iZXIucmFuZG9tKDFlNSwxZTYtMSk7eChxLiRmcmFtZVswXSkuYXR0cigiaWQiLCJjbGVkaXRDb29sIit0KSxyPWRvY3VtZW50LmZyYW1lcz9kb2N1bWVudC5mcmFtZXNbImNsZWRpdENvb2wiK3RdLmRvY3VtZW50OngoIiNjbGVkaXRDb29sIit0KVswXS5jb250ZW50V2luZG93LmRvY3VtZW50O3ZhciB1PXgocikuZmluZCgiYm9keSIpO3gocikub24oImtleXVwLm15IixmdW5jdGlvbigpe3MoeCh0aGlzKS5maW5kKCJib2R5IikuaHRtbCgpKX0pLG4ucGFyZW50KCkuZmluZCgiZGl2LmNsZWRpdG9yVG9vbGJhciIpLm9uKCJjbGljay5teSBtb3VzZXVwLm15IixmdW5jdGlvbigpe3ModS5odG1sKCkpfSkseCgiYm9keSIpLm9uKCJjbGljayIsImRpdi5jbGVkaXRvclBvcHVwIixmdW5jdGlvbigpe3ModS5odG1sKCkpfSl9fWVsc2UgaWYoIlRFWFRBUkVBIj09byYmbi5wYXJlbnQoKS5oYXNDbGFzcygicmVkYWN0b3JfYm94Iikpe3ZhciB2LHk9Im15LXJlZGFjdG9yLTkiO3RyeXt2PW4uZ2V0RWRpdG9yKCkseT0ibXktcmVkYWN0b3ItOCJ9Y2F0Y2goeCl7dj1uLnJlZGFjdG9yKCJnZXRFZGl0b3IiKX12JiYobi5hZGRDbGFzcyh5KSx2Lm9uKCJpbnB1dC5teSBrZXl1cC5teSBibHVyLm15IixmdW5jdGlvbih4KXt4LnRyaWdnZXIoInJlZGFjdG9yIil9LmZpbGwobikpKX1lbHNlIG4uaGFzQ2xhc3MoImFjZV9lZGl0b3IiKT9hY2UuZWRpdChhWzBdKS5vbihsLGZ1bmN0aW9uKHgpe3gudHJpZ2dlcigiYWNlIil9LmZpbGwobikpOmcmJmcub24obCxmdW5jdGlvbih4KXt4LnRyaWdnZXIoImNvZGVtaXJyb3IiKX0uZmlsbChuKSk7bi5teSgpLl9jaGFuZ2VkPWh4LmRlYm91bmNlKGgpLG4ubXkoKS5fcmVjYWxjPXN4LmRlYm91bmNlKGgpLG4ub24oZSxmdW5jdGlvbih4KXt4LnR5cGU9PWwmJnguc3RvcFByb3BhZ2F0aW9uKCkscCYmKGkubG9ja3RpbGw9SSgpK2MuZGVsYXkpLG4ubXkoKS5fY2hhbmdlZChuLGIsYyxqKX0pLC9jaGVjayhcLm15KT8vLnRlc3QoZSsiIil8fG4ub24oImNoZWNrLm15IixmdW5jdGlvbih4KXtyZXR1cm4gbi5teSgpLl9jaGFuZ2VkKG4sYixjLGosITApLCExfSkscHx8bi5vZmYoInJlZHJhdy5teSIpLG4ub24oInJlY2FsYy5teSwgcmVkcmF3Lm15IixmdW5jdGlvbih4KXt4LnN0b3BQcm9wYWdhdGlvbigpLG4ubXkoKS5fcmVjYWxjKG4sYixjLGopfSl9KSxvJiZvLnJlc29sdmUoKX19ZnVuY3Rpb24gZ3goYSxiKXtxKGIpJiZiLmNoYW5uZWwmJmIubWVzc2FnZSYmeHgoYSwiLm15LWxpc3Rlbi0iK1koYi5jaGFubmVsKSwhMCkuZWFjaChmdW5jdGlvbigpe3ZhciBhLGMsZD14KHRoaXMpLGU9ZC5kYXRhKCJteSIpO2lmKGUmJmUudWkubGlzdGVuJiZ0KGUudWkubGlzdGVuW2IuY2hhbm5lbF0pKXthPWUudWkubGlzdGVuW2IuY2hhbm5lbF07dHJ5e2M9YS5jYWxsKGUubWFuaWZlc3R8fGUucm9vdC5teSgpLm1hbmlmZXN0LGUuZGF0YSxiLm1lc3NhZ2UsZCl9Y2F0Y2goeCl7TygiTGlzdGVuZXIgZmFpbGVkIix4Lm1lc3NhZ2UseC5zdGFjayl9dm9pZCAwIT09YyYmKG51bGw9PT1jP2QudHJpZ2dlcigiY2hlY2siKTpjJiZkLnRyaWdnZXIoInJlY2FsYyIpKX19KX1mdW5jdGlvbiBoeCh4LGEsYixjLGQpe3ZhciBlLGY9eC5kYXRhKCJteSIpO2YmJihmLmRpc2FibGVkP2YuZGRhdGF8fHp4KHgsRSxiLnJlY2FsY0RlcHRofHxjLnJlY2FsY0RlcHRoKToobHgoZi5kZGF0YXx8Zi5kYXRhLGYuZHBhcmFtc3x8Zi5wYXJhbXMpLGR8fChlPWYuc2luZ2xlP3g6eHgoYSxmLnNlbGVjdG9yKSksengoeCxkP0U6a3goZSxFKSxiLnJlY2FsY0RlcHRofHxjLnJlY2FsY0RlcHRoKSxjLmNoYW5nZSYmYy5jaGFuZ2UuY2FsbCh4KSkpfWZ1bmN0aW9uIGl4KGEsYixjKXt2YXIgZD1jLmNvbXBhY3QoKSxlPWQucmVwbGFjZSgvOmRpc2FibGVkL2csIiIpLGY9ZSE9PWQsZz0ic2VsZjoiPT1lLnN1YnN0cigwLDUpO3JldHVybiBnJiYoZT1lLnJlcGxhY2UoL15zZWxmOi9nLCIiKSksYi5lYWNoKGZ1bmN0aW9uKCl7dmFyIGM9eCh0aGlzKSxkPWMubXkoKTsoIWcmJmQ/ZC5jb250YWluZXI6YykudG9nZ2xlQ2xhc3MoZSwhIWEpLGYmJnZvaWQgMCE9PWQmJiEhYSE9ISFkLmRpc2FibGVkJiYoYy5teSgpLmRpc2FibGVkPSEhYSxkLl9kaXNhYmxlfHwoYy5teSgpLl9kaXNhYmxlPXl4KGIsSy5vZmZvbikuZmlsbCh2b2lkIDAsYikpLGQuX2Rpc2FibGUoISFhKSl9KSxifWZ1bmN0aW9uIGp4KHgsYSxiKXtyZXR1cm4geFthXShiPyJkaXNhYmxlIjoiZW5hYmxlIil9ZnVuY3Rpb24ga3goeCxhKXt2YXIgYixjLGQ9eC5kYXRhKCJteXZhbCIpO3JldHVybiBkfHwoYz15eCh4LEsudmFscyksdChjKSYmKHZvaWQgMD09PShiPWMoeCxFKSk/eC5kYXRhKCJteXZhbCIsZnVuY3Rpb24oeCxhKXtyZXR1cm4gRSE9YSYmYyh4LGEpLHgudmFsKCl9LmZpbGwoeCx2b2lkIDApKTp4LmRhdGEoIm15dmFsIixjLmZpbGwoeCx2b2lkIDApKSksZD14LmRhdGEoIm15dmFsIikpLHQoZCk/KCgoYj1kKCkpIT09YSYmKDA9PWF8fDA9PWIpfHxiIT1hfHxxKGEpKSYmKGI9ZChhKSksYik6RX1mdW5jdGlvbiBseCh4LGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrLG0sbj1hO2lmKCFxKG4pfHxpc05hTihnPW4ucmVtZW1iZXIpfHwhcShkPW4uaGlzdG9yeSkpcmV0dXJuIEU7aWYocSh4KSYmZyl7aWYoaT16KHgsITApLGo9SSgpLChmPUEoZCkuc29ydCgpKS5sZW5ndGgmJihqLWYubGFzdCgpPG4uaGlzdG9yeURlbGF5fHxPYmplY3QuZXF1YWwoZFtmLmxhc3QoKV0saSkpKXJldHVybiBFO2lmKG4uaGlzdG9yeVtqXT1pLGYucHVzaChqKSxmLmxlbmd0aD49MipnKXtmb3IobT17fSxlPWc7ZTwyKmc7ZSsrKW1bZltlXV09ZFtmW2VdXTthLmhpc3Rvcnk9bX1yZXR1cm4gY3x8bi5mb3JtLnRyaWdnZXIobCksbi5oaXN0b3J5W2YubGFzdCgpXX1pZighaXNOYU4oeCl8fHg9PT1FKXtpZigoaD1wYXJzZUludCh4KXx8MCk8MClyZXR1cm4gRTtpZihoPj0oZj1BKGQpLnNvcnQoKSkubGVuZ3RoJiYoaD1mLmxlbmd0aC0xKSxrPXoobi5oaXN0b3J5W2ZbZi5sZW5ndGgtaC0xXV0sITApLGIpe2ZvcihtPXt9LGU9MDtlPGYubGVuZ3RoLWgtMTtlKyspbVtmW2VdXT1kW2ZbZV1dO2EuaGlzdG9yeT1tfXJldHVybiBjfHxuLmZvcm0udHJpZ2dlcihsKSxrfXJldHVybiBjfHxuLmZvcm0udHJpZ2dlcihsKSxFfWZ1bmN0aW9uIG14KHgsYSl7aWYoIXEoeCkpcmV0dXJuITE7dmFyIGI9eCxjPXAoYSk/YTpkLGU9Yi5sYW5nLGY9e307cmV0dXJuISghZXx8IXEoZS5lbikpJiYoZS5fTEFORz09Y3x8KGM9cShlW2NdKT9jOiJlbiIsZS5fTEFORz1jLE9iamVjdC5rZXlzKGVbY10pLmZvckVhY2goZy5maWxsKHZvaWQgMCx2b2lkIDAsYyxmKSksImVuIiE9YyYmT2JqZWN0LmtleXMoZS5lbikuZm9yRWFjaChnLmZpbGwodm9pZCAwLHZvaWQgMCwiZW4iLGYpKSwhMCkpO2Z1bmN0aW9uIGcoeCxhLGMsZCl7dmFyIGc7Zlt4XXx8eC5sZW5ndGg8MyYmeC50bygxKS50b0xvd2VyQ2FzZSgpPT14LnRvKDEpfHwodChlW2NdW3hdKT8oZz1lW2NdW3hdLmJpbmQoYiksZVt4XT1nLGVbeF0udG9TdHJpbmc9ZyxlW3hdLmFzc2lnbj1mdW5jdGlvbigpe2Zvcih2YXIgeD1bXSxhPTAsYj0iIjthPGFyZ3VtZW50cy5sZW5ndGg7YSsrKXgucHVzaChhcmd1bWVudHNbYV0pO3JldHVybiBiPWcuYXBwbHkobnVsbCx4KSxwKGIpP2IuYXNzaWduLmFwcGx5KGIseCk6Yn0pOmVbeF09ZVtjXVt4XSxmW3hdPSEwKX19ZnVuY3Rpb24gbngoeCxhKXtpZighcSh4KSlyZXR1cm4gbnVsbDt2YXIgYixjPWE7aWYocChjKSlyZXR1cm4gVSh4LGMpO2lmKG4oYykpe2I9W107Zm9yKHZhciBkPTA7ZDxjLmxlbmd0aDtkKyspYltkXT1wKGNbZF0pJiZVKHgsY1tkXSl8fG51bGw7cmV0dXJuIGJ9aWYocShjKSlyZXR1cm4gZSh4LGMpO2Z1bmN0aW9uIGUoeCxhKXtpZighcShhKSlyZXR1cm57fTt2YXIgYj17fTtyZXR1cm4gQShhKS5mb3JFYWNoKGZ1bmN0aW9uKGMpeyFxKGFbY10pJiZRKHgsYyk/YltjXT16KHhbY10sITApOlEoeCxjKSYmKHEoeFtjXSk/YltjXT1lKHhbY10sYVtjXSk6YltjXT16KHhbY10sITApKX0pLGJ9fWZ1bmN0aW9uIG94KHgsYSxiKXt2YXIgYyxkLGU7aWYobnVsbD09Yj8oYz17fSxkPXgsZT1hKTooYz14LGQ9YSxlPWIpLHEoZCkmJnEoZSkpcmV0dXJuIG54KGQsZSk7aWYocChlKSYmKGU9W2VdLGQ9W2RdKSwhbihlKXx8IW4oYykmJiFxKGMpKXJldHVybiBudWxsO2lmKHEoZCkmJihkPWUucmVkdWNlKGZ1bmN0aW9uKHgsYSl7cmV0dXJuIHgucHVzaChVKGQsYSkpLHh9LFtdKSksbihkKSYmbihlKSl7Zm9yKHZhciBmPTA7ZjxlLmxlbmd0aDtmKyspbnVsbCE9ZFtmXSYmcHgoYyxkW2ZdLGVbZl0pO3JldHVybiBjfXJldHVybiBudWxsfWZ1bmN0aW9uIHB4KHgsYSxiLGMpe3ZhciBkLGUsZixnLGg9MDtpZihwKGIpJiYhL1wuLy50ZXN0KGIpKW51bGwhPWEmJih4W2JdPWEpO2Vsc2UgZm9yKGQ9eCxnPShlPW4oYik/YjooYisiIikuc3BsaXQoIi4iKSkubGVuZ3RoLTE7aDw9ZztoKyspaWYoaD09PWcpe2lmKGMpcmV0dXJuIEUhPWE/ZFtlW2hdXT1hOnZvaWQgMD09PWRbZVtoXV0mJihkW2VbaF1dPUUpLGRbZVtoXV07ZFtlW2hdXT1hfWVsc2UgMD09PWg/KGQ9eFtlWzBdXSxmPXgpOihmPWZbZVtoLTFdXSxkPWRbZVtoXV0pLChudWxsPT1kfHwhcShkKSYmKG4oZCkmJiFpc05hTihlW2grMV0pJiYrZVtoXT4tMSkpJiYoZD1mW2VbaF1dPXt9KTtyZXR1cm4geH1mdW5jdGlvbiBxeCh4LGEsYil7dmFyIGM9cShhKT9hOm51bGwsZD1ifHwoYz9jLnBhcmFtczpudWxsKXx8e2RlbGF5OjB9LGU9e2NzczohMCxjaGVjazohMCxtYW5pZmVzdDohMCxsaXN0OiEwLGhhc2g6ITAsaWQ6ITB9LGY9L1xzP1ssO11ccz8vLGc9Lyxccyp8XHMrL2c7aWYoZC5ub3JtYWxpemVkKXJldHVybiB4O2Zvcih2YXIgaCxsLG89QSh4fHx7fSkscD1bXSxyPTA7cjxvLmxlbmd0aDtyKyspKGg9dHlwZW9mKEI9eFt6PW9bcl1dKSk9PWp8fGg9PWs/Qj14W3pdPXtiaW5kOkJ9OihCLnJlY2FsYyYmIW4oQi5yZWNhbGMpJiYodHlwZW9mIEIucmVjYWxjPT1qP0IucmVjYWxjPUIucmVjYWxjLnNwbGl0KGYpLmNvbXBhY3QoITApLnVuaXF1ZSgpOkIucmVjYWxjPVtdKSxudWxsPT1CLmJpbmQmJihCLmJpbmQ9ZnVuY3Rpb24oKXt9KSxCLmxpc3RlbiYmKGw9VyhCLmxpc3RlbiksQi5saXN0ZW49T2JqZWN0LnNpemUobCk/bDp2b2lkIDApLEIuZXZlbnRzJiYobihCLmV2ZW50cyk/Qi5ldmVudHM9Qi5ldmVudHMuam9pbigiICIpOkIuZXZlbnRzPShCLmV2ZW50cysiIikucmVwbGFjZShnLCIgIikpLFEoQiwid2F0Y2giKSYmcC5wdXNoKHopKSxCLmRlbGF5PWlzTmFOKCtCLmRlbGF5KT9kLmRlbGF5OitCLmRlbGF5O3ZhciBzO2ZvcihyPTA7cjxwLmxlbmd0aDtyKyspe0I9eFt6PXBbcl1dLHM9eFt6XS53YXRjaCwoaD1EKHMpKT09aj9zPXMuc3BsaXQoZikuY29tcGFjdCghMCkudW5pcXVlKCk6aCE9aSYmKHM9W10pO2Zvcih2YXIgdCx1LHYsdz17fSx5PTA7eTxzLmxlbmd0aDt5KyspIXdbdT1zW3ldXSYmKHQ9eFt1XSkmJih3W3VdPSEwLCh2PXQucmVjYWxjKT8tMT09di5pbmRleE9mKHopJiZ0LnJlY2FsYy5wdXNoKHopOnQucmVjYWxjPVt6XSl9aWYobnVsbCE9PWMpe3ZhciB6LEIsQztmb3Iocj0wO3I8by5sZW5ndGg7cisrKXtCPXhbb1tyXV07dmFyIEU9QShCKTtmb3IoeT0wO3k8RS5sZW5ndGg7eSsrKWVbej1FW3ldXSYmdHlwZW9mIEJbel09PWomJm51bGwhPShDPVUoYyxCW3pdLnJlcGxhY2UobSwiIikpKSYmdHlwZW9mIEMhPWomJihCW3pdPUMpfX1yZXR1cm4geH1mdW5jdGlvbiByeCh4LGEsYixjKXt2YXIgZDtpZihwKGEpKXtpZih2b2lkIDA9PT0oZD1VKHgsYSkpKXJldHVybiBiLmh0bWwoYS5hc3NpZ24oYy5kYXRhKSksbnVsbH1lbHNlIGQ9YTtpZih0KGQpKXJldHVybiBkLmFwcGx5KHgsUyhhcmd1bWVudHMsMikpO2lmKG4oZCkpdHJ5e2IuZm9ybWdlbihkKX1jYXRjaCh4KXt9cmV0dXJuIG51bGx9ZnVuY3Rpb24gc3goeCxhLGIsYyl7dmFyIGQ9eC5teSgpO2lmKGQmJiFkLmRpc2FibGVkKXt2YXIgZT14eChhLGQuc2VsZWN0b3IpO2UuaGFzQ2xhc3MoIm15LWZvcm0iKT9lLm15KCJyZWRyYXciKTp6eCh4LGUuaGFzQ2xhc3MoIm15LWZvcm0tbGlzdCIpP1UoZS5teSgpLmRhdGEsZS5kYXRhKCJmb3JtbGlzdCIpLmdlbmVyYXRvci5iaW5kKTpFLGIucmVjYWxjRGVwdGh8fGMucmVjYWxjRGVwdGgpfX1mdW5jdGlvbiB0eChhLGIpe3ZhciBjPUMoKSxkPVtdLGU9e30sZj1bXSxnPUIoITAse2FqYXhUaW1lb3V0OjFlNCxsb2FkZXI6Sy5wYXJhbXMubG9hZGVyfSxifHx7fSksaD17cmVmOm51bGwsYWpheDp7dHlwZToiR0VUIixhc3luYzohMCx0aW1lb3V0OmcuYWpheFRpbWVvdXR9fTtpZihxKGEpKWlmKG4oYS5yZXF1aXJlKSl7YS5yZXF1aXJlLGEucmVxdWlyZS5mb3JFYWNoKGZ1bmN0aW9uKHgpe2lmKHAoeCkpZVt4XT1yKHgpO2Vsc2UgaWYocSh4KSl7dmFyIGE9W107QSh4KS5mb3JFYWNoKGZ1bmN0aW9uKGIpe3ZhciBjPW51bGw7ITA9PT14W2JdP2VbYl09cihiKTpwKHhbYl0pfHxxKHhbYl0pP2M9aih4W2JdLGIpOm4oeFtiXSkmJihjPVtdLHhbYl0uZm9yRWFjaChmdW5jdGlvbih4KXtpZihwKHgpfHxxKHgpKXt2YXIgYT1qKHgsYik7YSYmYy5wdXNoKGEpfX0pLGMubGVuZ3RofHwoYz1udWxsKSksYyYmIShlW2JdPXIoYikpJiZhLmFkZChjKX0pLGEubGVuZ3RoJiZkLnB1c2goYSl9fSk7dmFyIGk9LTE7bCgpfWVsc2UgYy5yZXNvbHZlKGEpO2Vsc2UgYy5yZWplY3QoWyJJbnZhbGlkIG1hbmlmZXN0LiJdKTtyZXR1cm4gYy5wcm9taXNlKCk7ZnVuY3Rpb24gaihhLGIpe3ZhciBjO3JldHVybiBwKGEpPy9bXC9dLy50ZXN0KGEpPyhjPUIoITAse30saCx7cmVmOmIsYWpheDp7dXJsOmF9fSksbS50ZXN0KGIpJiYoYy5hamF4LmRhdGFUeXBlPSJqc29uIikpOmEubGVuZ3RoJiYoYz1CKCEwLHt9LGgse3JlZjpiLGFqYXg6YX0pKTpxKGEpJiYoKGM9QighMCx7fSxoLHtyZWY6YixhamF4OnguZXh0ZW5kKCEwLHt9LE9iamVjdC5zZWxlY3QoYSxbImFjY2VwdHMiLCJhc3luYyIsImNhY2hlIiwiZGF0YSIsImRhdGFUeXBlIiwiaGVhZGVycyIsInhockZpZWxkcyIsInBhc3N3b3JkIiwidGltZW91dCIsInR5cGUiLCJ1cmwiLCJ1c2VybmFtZSJdKSl9KSkuYWpheC51cmx8fChjPW51bGwpKSxjfWZ1bmN0aW9uIGsoKXtjLnJlamVjdChmKX1mdW5jdGlvbiBsKCl7dmFyIHg9ZFtpKz0xXTtpZih4KW8oeCkudGhlbihsKS5mYWlsKGspO2Vsc2V7dmFyIGI9cyhlKSxnPUEoT2JqZWN0LmZpbmRBbGwoYixmdW5jdGlvbih4LGEpe3JldHVybiFhfSkpO2cubGVuZ3RoJiZmLnB1c2goKDE9PWcubGVuZ3RoPyJLZXkgIitnWzBdKyIgaXMiOiJLZXlzICIrZy5qb2luKCIsICIpKyIgYXJlIikrIiBub3QgcHJlc2VudCBhZnRlciBhbGwuIiksZi5sZW5ndGg/aygpOmMucmVzb2x2ZShhKX19ZnVuY3Rpb24gbyh4KXt2YXIgYixjLGQ9ITEsZT1DKCksaD14Lmxlbmd0aDtmb3IoYz0wO2M8aDtjKyspYj14W2NdLChwKGIuYWpheCk/Zy5sb2FkZXI6RykoYi5hamF4KS50aGVuKGZ1bmN0aW9uKHgsYil7bS50ZXN0KGIucmVmKSYmKG51bGwhPXg/QighMCxhLG94KHgsYi5yZWYuZnJvbSg1KSkpOihkPSEwLGYucHVzaCgiSW52YWxpZCBkYXRhIGZvciDigJgiK2IucmVmKyLigJkgcmVzb3VyY2UuIikpKSxpKCl9LmZpbGwodm9pZCAwLGIpKS5mYWlsKGZ1bmN0aW9uKHgsYSl7Zi5wdXNoKCJGYWlsZWQgdG8gbG9hZCDigJgiK2EucmVmKyLigJkgcmVzb3VyY2UuIiksZD0hMCxpKCl9LmZpbGwodm9pZCAwLGIpKTtyZXR1cm4gZS5wcm9taXNlKCk7ZnVuY3Rpb24gaSgpe2gtPTEsZD9lLnJlamVjdCgpOmg8LjUmJmUucmVzb2x2ZSgpfX1mdW5jdGlvbiByKHgpe3ZhciBiPSExO3JldHVybiBtLnRlc3QoeCk/bnVsbCE9VShhLHguZnJvbSg1KSkmJihiPSEwKTpudWxsIT1VKHdpbmRvdyx4KSYmKGI9ITApLGJ9ZnVuY3Rpb24gcyh4KXtyZXR1cm4gQSh4KS5mb3JFYWNoKGZ1bmN0aW9uKGEpeyExPT09eFthXSYmKHhbYV09cihhKSl9KSx4fX1mdW5jdGlvbiB1eChhLGUsZil7dmFyIGcsaSxqLGssbCxtLG8scixzLHYseSx6LEQsRixHPXt9LEk9e30sTD1udWxsLE09W10sTj17fSxRPUMoKSxSPSExLFM9ZnVuY3Rpb24oKXt9LFQ9Im15LWZvcm0taW5pdCIsVj0ic3RkIiwkPSIiLF89e307aWYocChhKSl7aWYoIShnPUgoYSkpKXJldHVybiBRLnJlamVjdCgiTm8gbWFuaWZlc3Qgd2l0aCBpZCAiK2ErIiBmb3VuZCBpbiByZXBvLiIpLFEucHJvbWlzZSgpO3EoZikmJnEoZSk/KGc9QihnLGUpLGk9Zik6aT1lLFY9InJlcG8ifWVsc2UgZz1hLGk9ZTtpZighZylyZXR1cm4gdGhpcztzPXEoaSkmJiJyZXBvIiE9Vj9CKCEwLHt9LGcpOmc7dmFyIGF4PXRoaXMuZXEoMCksYng9YXgubXkoKTtyZXR1cm4gcShieCkmJmJ4LmlkJiZieC51aT8oUCgialF1ZXJ5Lm15IGlzIGFscmVhZHkgYm91bmQuIixheCksYXgubXkoInVpIixzLnVpKSxheC5teShoLHMuZGF0YSksUS5yZXNvbHZlKGF4Lm15KGgpKS5wcm9taXNlKCkpOigocj1zLnBhcmFtc3x8e30pLnN0cmljdHx8dChzLmluaXQpfHxCeChyPUIoITAse30scikpLHI9QighMCx7fSxLLnBhcmFtcyxyKSxRLmZhaWwoZnVuY3Rpb24oKXtheC5yZW1vdmVDbGFzcyh5KyIgIit2KX0pLEIoYXgsUS5wcm9taXNlKCkpLHEoaSk/KEk9WihpLHMuZGF0YXx8e30pLHMuZGF0YT1JKTpJPXMuZGF0YXx8e30sRy5kYXRhPUksYXguZGF0YSgibXkiLHtkYXRhOkkscGFyYW1zOnIscHJvbWlzZTpRLnByb21pc2UoKSxsb2NrdGlsbDowfSksYXguYWRkQ2xhc3MoVCkscy5pbmhlcml0JiZoeChzKSxuKHMucmVxdWlyZSk/SihzLHIpLnRoZW4oY3gpLmZhaWwoZnVuY3Rpb24oeCl7angoKSx5eCgiTGlua2VyIG9mIHRoZSDigJhyZXF1aXJl4oCZIHByb3BlcnR5IGZhaWxlZC4iLHgpfSk6Y3goKSxRLnRoZW4oaXgpLGF4KTtmdW5jdGlvbiBjeCgpe3ZhciB4PSEwO2p4KCksRy5maWxlcyYmKHg9bngoKSkseCYmKGx4KCkscHgoKSl9ZnVuY3Rpb24gaHgoeCl7dmFyIGE9WCh4LmluaGVyaXQpO2lmKCFPYmplY3Quc2l6ZShhKSlyZXR1cm4gbnVsbDt2YXIgYj1heC5wYXJlbnRzKCIubXktZm9ybSIpLmVxKDApO2lmKCFiLmxlbmd0aClyZXR1cm4gbnVsbDt2YXIgYz1iLmRhdGEoIm15Iik7aWYoIWN8fCFjLm1hbmlmZXN0KXJldHVybiBudWxsO3ZhciBkPWMubWFuaWZlc3QsZT1kLmV4cG9zZSxmPSFlO0EoYSkuZm9yRWFjaChmdW5jdGlvbihiKXtpZihmfHxlW2JdKXt2YXIgYz1VKGQsYik7bnVsbCE9YyYmKC9cLi8udGVzdChiKXx8cChhW2JdKT9CKCEwLHMsb3goYyxwKGFbYl0pP2FbYl06YikpOnhbYl09Yyl9fSl9ZnVuY3Rpb24gaXgoKXtBKE4pLmZvckVhY2goZnVuY3Rpb24oeCl7QShvW3hdLmxpc3RlbikuZm9yRWFjaChmdW5jdGlvbihhKXtOW3hdLmFkZENsYXNzKCJteS1saXN0ZW4tIitZKGEpKX0pfSksRy5yYWRpbyYmYXgub24oInJhZGlvLm15IixmdW5jdGlvbih4LGEpe3ZhciBiLGM7aWYocShhKSYmYS5jaGFubmVsJiZhLm1lc3NhZ2UmJnQoRy5yYWRpb1thLmNoYW5uZWxdKSl7Yj1HLnJhZGlvW2EuY2hhbm5lbF07dHJ5e2M9Yi5jYWxsKEcseCxhKX1jYXRjaCh4KXtPKCJSYWRpbyBoYW5kbGVyIGZvciBmb3JtICIrbCsiIGZhaWxlZCIseC5tZXNzYWdlLHguc3RhY2spfXZvaWQgMCE9PWMmJih4LnN0b3BQcm9wYWdhdGlvbigpLGMmJmd4KGF4LGEpKX19KX1mdW5jdGlvbiBqeCgpe3Iuc3RyaWN0fHx0KHMuaW5pdCl8fEJ4KHMsITApLEc9QighMCxHLE9iamVjdC5yZWplY3QocyxbImRhdGEiXSkpLG89cXgoQighMCx7fSxzLnVpfHx7fSksRyxyKSxHLnJhZGlvJiYoRy5yYWRpbz1XKEcucmFkaW8pKSxHLmV4cG9zZSYmKEcuZXhwb3NlPVgoRy5leHBvc2UpKSxrPU51bWJlci5yYW5kb20oMjY4NDM1NDU2LDQyOTQ5NjcyOTUpLnRvU3RyaW5nKDE2KSxqPXMuaWR8fCJteSIrayxsPVkoaiksRy5pZD1qLHIuZm9ybT1heCxzLnBhcmFtcyYmcy5wYXJhbXMuZGVwdGgmJihyLnJlY2FsY0RlcHRoPXMucGFyYW1zLmRlcHRoKSxPYmplY3Qua2V5cyhHKS5mb3JFYWNoKGZ1bmN0aW9uKHgpeyJmdW5jdGlvbiI9PXR5cGVvZiBHW3hdJiYoR1t4XT1HW3hdLmJpbmQoRykpfSksYz9HLm15PXd4KGF4KTpPYmplY3QuZGVmaW5lUHJvcGVydHkoRywibXkiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09TCYmKEw9d3goYXgpKSxMfSxlbnVtZXJhYmxlOiExfSkscy5lcnJvciYmKHAoRy5lcnJvcik/Uz1mdW5jdGlvbih4LGEpe3JldHVybiBHLmVycm9yLmFzc2lnbihCKHttZXNzYWdlOngrIiIsZXJyOmErIiJ9LEcpKX06dChzLmVycm9yKSYmKFM9ZnVuY3Rpb24oeCxhKXttPW51bGw7dHJ5e209cy5lcnJvci5jYWxsKEcseCxhKX1jYXRjaCh4KXttPXIubWVzc2FnZXMuaW5pdEZhaWxlZH1yZXR1cm4gbX0pKSxHLmxhbmcmJm14KEcsci5sb2NhbGV8fGQpLEIoYXguZGF0YSgibXkiKSx7aWQ6aixjaWQ6ayxtaWQ6bCxlcnJvcnM6e30sdWk6byxkaXNhYmxlZDohMSxtYW5pZmVzdDpHLGxvY0ZpbGVzOltdLG1vZGFsczp7fSxyYWRpbzp7fX0pLGF4LmFkZENsYXNzKCJteS1mb3JtIiksdj0ibXktbWFuaWZlc3QtIitsLHk9Im15LWZvcm0tIitrLGF4LmFkZENsYXNzKHkrIiAiK3YpfWZ1bmN0aW9uIGx4KGEpe2lmKEcuc3R5bGUmJighYXx8YXguaXMoIjp2aXNpYmxlIikpKXt2YXIgYj12eChheCxHKTtiJiZiWzBdLmxlbmd0aCYmIWEmJigoej14KCJzdHlsZSMiK3YpKS5sZW5ndGh8fCh6PXgoYyhiWzBdLHYpKS5hcHBlbmRUbyh4KCJib2R5IikpKSx6LmRhdGEoImNvdW50Iiwrei5kYXRhKCJjb3VudCIpKzEpLGF4LmRhdGEoIm15Iikuc3R5bGU9eiksYiYmYlsxXS5sZW5ndGgmJigoRD14KCJzdHlsZSMiK3kpKS5sZW5ndGg/YSYmKHgoYyhiWzFdLHkpKS5yZXBsYWNlQWxsKEQpLEQ9eCgic3R5bGUjIit5KSk6KEQ9eChjKGJbMV0seSkpLmFwcGVuZFRvKHgoImJvZHkiKSksci5yZXN0eWxlPi0xJiYhd1trXSYmKHdba109ZnVuY3Rpb24oKXtseCghMCl9LmRlYm91bmNlKHIucmVzdHlsZSkpLGF4LmRhdGEoIm15IikucmVzdHlsZT1seC5maWxsKCEwKS5kZWJvdW5jZSgwKSksYXguZGF0YSgibXkiKS5sb2NhbFN0eWxlPUQsYXx8YXguYWRkQ2xhc3MoIm15LXJlc3R5bGUiKSl9ZnVuY3Rpb24gYyh4LGEpe3ZhciBiPSJcbiIsYz0vQGtleWZyYW1lcy8sZD0hMSxlPWIreC5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuL15ccypALy50ZXN0KHgpfHwifSI9PXg/KGMudGVzdCh4KT9kPSEwOiJ9Ij09eCYmKGQ9ITEpLHgpOigoZD8iIjoiLiIrYSkreCkucmVwbGFjZSgvXHMrL2csIiAiKX0pLmpvaW4oYikrYjtyZXR1cm4nPHN0eWxlIGlkPSInK2ErJyIgZGF0YS1jb3VudD0iMCI+JytlKyI8L3N0eWxlPiJ9fWZ1bmN0aW9uIG54KCl7dmFyIHgsYSxjPSEwO2lmKGE9ZHgoRykscChhKSl5eCgiRXJyb3IgZGVjb2RpbmcgYmFzZTY0IHRvIGxvY2FsIEJsb2IvVVJMIixhKSxjPSExO2Vsc2V7aWYoYilmb3IoeD0wO3g8YS5sZW5ndGg7eCsrKU0ucHVzaChHLmZpbGVzW2FbeF1dLnVybCk7TS5sZW5ndGgmJihheC5kYXRhKCJteSIpLmxvY0ZpbGVzPU0pfXJldHVybiBjfWZ1bmN0aW9uIHB4KCl7aWYocy5pbml0IT1FKXskPWF4LmZpbmQoIj4qIikuY2xvbmUoKTt0cnl7Rj1yeChHLHMuaW5pdCxheCxzKX1jYXRjaCh4KXtyZXR1cm4geXgocCh4KT94OngubWVzc2FnZSx4LnN0YWNrKSxheH19aWYodShGKT9GLnRoZW4oZnVuY3Rpb24oKXtzeCgpfSxmdW5jdGlvbih4LGEpe3l4KHgsYSl9KTpzeCgpLCFSKXtpZighYXgubXkoKSlyZXR1cm4geXgoIkludGVybmFsIGVycm9yIGluaXRpYWxpemluZyBjb250cm9scy4iLCIiKSxheDtheC5kYXRhKCJteSIpLmluaXRpYWw9QighMCx7fSxJKSx4Lm1vYmlsZSYmeC5tb2JpbGUuY2hhbmdlUGFnZSh4Lm1vYmlsZS5hY3RpdmVQYWdlKX19ZnVuY3Rpb24gc3goKXt2YXIgeD17fSxhPU9iamVjdC5rZXlzKG8pLGI9YS5sZW5ndGg7ZnVuY3Rpb24gYyhhKXtSfHwoeFthXT1reCh4eChheCxhKSxFKSwoYi09MSk8MSYmdHgoeCkpfWI8MT91eCgpOihheC5hZGRDbGFzcyhUKSxhLmZvckVhY2goZnVuY3Rpb24oeCl7aWYoIVIpe3ZhciBhPXh4KGF4LHgpLGI9ZngoYSxheCxvW3hdLHgpO19beF09YSx1KGIpP2IudGhlbihjLmZpbGwoeCkpLmZhaWwoZnVuY3Rpb24oYSxiKXt5eCgiRXJyb3IgYnVpbGRpbmcgIit4KyIsICIrYSxiKX0pOlJ8fGMoeCl9fSkpfWZ1bmN0aW9uIHR4KHgpe0EobykuZm9yRWFjaChmdW5jdGlvbihhKXtpZighUil7dmFyIGIsYz1vW2FdLGQ9X1thXTtpZihkLmxlbmd0aCl7Yy5saXN0ZW4mJihOW2FdPWQuZXEoMCkpO3RyeXtudWxsPT09KGI9ZXgoSSxudWxsLGMsZCkpJiZudWxsIT14W2FdJiZleChJLHhbYV0sYyxkKX1jYXRjaCh4KXtPKCJUcmFuc2llbnQgZmFpbCBsaW5raW5nICIrYSsnIG9mIGZvcm0gJCgiLm15LWZvcm0tJytrKyciKScseC5tZXNzYWdlLHguc3RhY2spfXRyeXtudWxsIT1iJiZreChkLGIpLGQuZXEoMCkudHJpZ2dlcigiY2hlY2subXkiKX1jYXRjaCh4KXt5eCgiRXJyb3IgbGlua2luZyAiK2EseC5tZXNzYWdlKX19fX0pLFJ8fHV4KCl9ZnVuY3Rpb24gdXgoKXtheC5yZW1vdmVDbGFzcyhUKSxheC5vbigicmVjYWxjLm15LCByZWRyYXcubXkiLGZ1bmN0aW9uKHgpe3guc3RvcFByb3BhZ2F0aW9uKCksYXgubXkoInJlZHJhdyIpfSksJD1udWxsLFEucmVzb2x2ZShJKX1mdW5jdGlvbiB5eCh4LGEpe3ZhciBiO2lmKFI9ITAsTygiRm9ybSAiK2orIiBmYWlsZWQgdG8gaW5pdGlhbGl6ZS4iLHgsYSksT2JqZWN0LmtleXMoXykuZm9yRWFjaChmdW5jdGlvbih4KXtkZWxldGUgX1t4XX0pLGF4LnJlbW92ZUNsYXNzKFQpLGI9Uyh4LGEpLHAoYil8fHEoYikmJmIuanF1ZXJ5P2F4Lmh0bWwoYik6ITA9PT1iJiZheC5odG1sKCQpLHIuc2lsZW50KVEucmVzb2x2ZShJKTtlbHNle2lmKCFheC5teSgpLmRkYXRhKXtpZihheC5yZW1vdmVEYXRhKCJteSIpLGF4LnJlbW92ZUNsYXNzKCJteS1mb3JtIikseilpZigiMSI9PXouZGF0YSgiY291bnQiKSl0cnl7ei5yZW1vdmUoKX1jYXRjaCh4KXt9ZWxzZSB6LmRhdGEoImNvdW50Iix6LmRhdGEoImNvdW50IiktMSk7aWYoRCl0cnl7ZGVsZXRlIHdba10sRC5yZW1vdmUoKX1jYXRjaCh4KXt9fVEucmVqZWN0KCJGb3JtICIraisiIGZhaWxlZCB0byBpbml0aWFsaXplOiAiK3gsYSl9fX1mdW5jdGlvbiB2eCh4LGEpe3ZhciBiPVtdLGM9W10sZD1hO3JldHVybiBxKGQpJiZxKGQuc3R5bGUpPyhlKGEuc3R5bGUsIiIsYixjKSxbYixjXSk6IiI7ZnVuY3Rpb24gZShiLGMsZCxnKXt2YXIgaCxpLGosayxsPWIsbT0vQC8udGVzdChjKSxvPWMuc3BsaXQoIkAiKVswXSxyPXQobCk7aWYobSYmKHI/ZzpkKS5wdXNoKCJAIitjLnNwbGl0KCJAIilbMV0udHJpbSgpKyIgeyIpLHAobCkmJigvW1xyXG5dLy50ZXN0KGwpfHxsLnNwbGl0KCJ9IiwzKS5sZW5ndGg+Mj9sPUwuY3NzMmpzb24obCk6ZC5wdXNoKG8rKC9cey8udGVzdChsKT9sOiJ7IitsKyJ9IikpKSxuKGwpJiZsLmxlbmd0aClmb3IoaD0wO2g8bC5sZW5ndGg7aCsrKWUobFtoXSxvLGQsZyk7ZWxzZSBpZihxKGwpKWZvcihqPUEobCksaD0wO2g8ai5sZW5ndGg7aCsrKWZvcihrPWYobyxqW2hdKSxpPTA7aTxrLmxlbmd0aDtpKyspZShsW2pbaF1dLGtbaV0sZCxnKTtlbHNlIGlmKHQobCkpdHJ5e2UobC5jYWxsKGEseCxhKSxvLGcsZyl9Y2F0Y2goeCl7fW0mJihyP2c6ZCkucHVzaCgifSIpfWZ1bmN0aW9uIGYoeCxhKXt2YXIgYixjPSIiLGQ9YSsiIjtyZXR1cm4oIiAiPT09ZC50bygxKXx8L15bYS16XS9pLnRlc3QoZCkpJiYoYz0iICIpLChiPWQuc3BsaXQoL1xzKixcc3swLH0vKS5jb21wYWN0KCEwKSkubGVuZ3RofHxiLnB1c2goIiIpLGIubWFwKGZ1bmN0aW9uKGEpe3JldHVybiB4K2MrYX0pfX1mdW5jdGlvbiB3eChhKXtmdW5jdGlvbiBiKGIsYyxkKXt2YXIgZT1iP3AoYik/eHgoYSxiKTp4KGIpOmE7aWYoUihlKSlyZXR1cm4gZS50cmlnZ2VyKGMsZCl9dmFyIGM9e2FqYXg6ZnVuY3Rpb24oKXtyZXR1cm4gRy5hcHBseSh0aGlzLFMoYXJndW1lbnRzKSl9LGNhbmNlbDpiLmZpbGwodm9pZCAwLCJjYW5jZWwiKSxjaGVjazpiLmZpbGwodm9pZCAwLCJjaGVjayIpLGNvbW1pdDpiLmZpbGwodm9pZCAwLCJjb21taXQiKSxpbnNlcnQ6ZnVuY3Rpb24oeCxhLGMpe3ZhciBkPSJpbnNlcnQiLGU9ITA7aWYocShjKT9iKHgsZCx7d2hlcmU6YSx3aGF0OmN9KTpwKHgpP251bGw9PWEmJm51bGw9PWM/YihhLGQpOnEoYSk/Yih4LGQse3doZXJlOjFlNix3aGF0OmF9KTplPSExOnEoeCkmJih4LndoZXJlJiZ4LndoYXQ/YihudWxsLGQseCk6YihudWxsLGQse3doZXJlOjFlNix3aGF0Onh9KSksIWUpdGhyb3ciSW52YWxpZCBpbnNlcnQifSxtb2RhbDpmdW5jdGlvbih4LGIpe3ZhciBjLGQ7cmV0dXJuIHAoeCk/KGM9eHgoYSx4KSwoZD1iKS5yb290fHwoZC5yb290PWEpKTooYz1hLGQ9eCksYy5tb2RhbChkKX0sbm93OkkscGFyZW50OmZ1bmN0aW9uKHgpe3ZhciBiPWEucGFyZW50cygiLm15LWZvcm0iKTtyZXR1cm4gYi5sZW5ndGg/Yi5lcSgwKS5teSgibWFuaWZlc3QiKTpudWxsfSxyZWNhbGM6Yi5maWxsKHZvaWQgMCwicmVjYWxjIikscm9vdDpmdW5jdGlvbigpe3JldHVybiBhfSx0cmlnZ2VyOmIsdmFsOmZ1bmN0aW9uKHgpe3JldHVybiBNLnZhbC5hcHBseSh4eChhLHgpLFMoYXJndW1lbnRzLDEpKX19O3JldHVybiBOLmZvckVhY2goZnVuY3Rpb24oeCl7ImluaXQiPT14fHxjW3hdfHwoY1t4XT1NW3hdLmJpbmQoYSkpfSksY31mdW5jdGlvbiB5eCh4LGEpe3ZhciBiPUUsYz0wLGQ9IiI7cmV0dXJuIGUoeCxhLDEpLGI7ZnVuY3Rpb24gZSh4LGEsZil7QShhKS5mb3JFYWNoKGZ1bmN0aW9uKGcpe2lmKG51bGw9PWImJiIiIT1nJiZ4LmlzKGcpKXtkPWQrKGQ/IiAjIyMgIjoiIikrZzt2YXIgaD1hW2ddLGk9cShoKTtpZihmPmMmJm51bGwhPWgmJiFpKXJldHVybiBiPWgsYz1mLHZvaWQgMDtpJiZlKHgsaCxmKzEpfX0pLG51bGw9PWImJm51bGwhPWFbIiJdJiYhcShhWyIiXSkmJmY+YyYmKGI9YVsiIl0sYz1mKX19ZnVuY3Rpb24gengoeCxhLGIpe3ZhciBjLGQsZSxmLGcsaCxpLGosayxsPSExLG09ITEsbj14LG89bi5teSgpLHE9IiI7aWYobyl7aWYoaD1vLnNlbGVjdG9yLChpPW8ucm9vdCkuaGFzQ2xhc3MoIm15LWZvcm0taW5pdCIpKXJldHVybnt9O2lmKGo9eHgoaSxoKSwobD14Lmhhc0NsYXNzKCJteS1mb3JtIikpPyhjPXgsZD1vLmRkYXRhLGU9by5kdWksZj1vLmRwYXJhbXMpOihjPW8uY29udGFpbmVyLGQ9by5kYXRhLGU9by51aSxmPW8ucGFyYW1zKSxlLmJpbmQhPUUpe2lmKGc9RihhKT9hOmt4KGosZXgoZCxFLGUsaikpLEUhPWUuY2hlY2spe3E9IlVua25vd24gZXJyb3IiO3RyeXtxPUh4KGQsZyxlLGopfWNhdGNoKHgpe08oIkVycm9yICIreC5tZXNzYWdlKyIgaW4gLmNoZWNrIHZhbGlkYXRvciBmb3IgIitoLGkseC5zdGFjayl9fXZhciByPWYuZXJyb3JDc3MsdT0idWktc3RhdGUtZXJyb3IiO3RyeXtFIT1hJiYoZz1reChqLGV4KGQsYSxlLGopKSl9Y2F0Y2goeCl7cT1mLm1lc3NhZ2VzLmZvcm1FcnJvcnx8IkVycm9yIn1pZihFIT1lLmNoZWNrKWlmKG09eC5oYXNDbGFzcygibXktZm9ybS1saXN0IiksIiI9PXEmJihsfHxtfHxjLmhhc0NsYXNzKHIpKSlsP28uZGVycm9yc1toXT0iIjpvLmVycm9yc1toXT0iIixjLnJlbW92ZUNsYXNzKHIpLGMuYXR0cigidGl0bGUiKSYmYy5hdHRyKCJ0aXRsZSIsIiIpLGx8fG18fGYuZWZmZWN0KHh4KGMsZi5lcnJvclRpcCksITEsZi5hbmltYXRlLzIpLG4ucmVtb3ZlQ2xhc3ModSkseHgobiwiLnVpLXdpZGdldCIpLnJlbW92ZUNsYXNzKHUpO2Vsc2UgaWYocSl7aWYobClvLmRlcnJvcnNbaF09cTtlbHNlIGlmKG0pby5lcnJvcnNbaF09cTtlbHNle2MuYWRkQ2xhc3Mociksby5lcnJvcnNbaF09cTt2YXIgdj14eChjLGYuZXJyb3JUaXApO3YubGVuZ3RoP2YuZWZmZWN0KHYuYWRkQ2xhc3MocikuaHRtbChwKHEpP3E6IkVycm9yIiksITAsZi5hbmltYXRlKTpjLmF0dHIoInRpdGxlIiwocChxKT9xOiJFcnJvciIpLnN0cmlwVGFncygpKX1uLmhhc0NsYXNzKCJoYXNEYXRlcGlja2VyIikmJihuLmlzKCJpbnB1dCIpP24uYWRkQ2xhc3ModSk6eHgobiwiLnVpLXdpZGdldCIpLmFkZENsYXNzKHUpKSxuLmhhc0NsYXNzKCJ1aS1zbGlkZXIiKSYmbi5hZGRDbGFzcyh1KX19dmFyIHc9YT09RT9nOmE7ZS5jc3MmJkEoZS5jc3MpLmZvckVhY2goZnVuY3Rpb24oeCl7dmFyIGE9ZS5jc3NbeF07cyhhKT9peChhLnRlc3Qodyksaix4KTp0KGEpJiZpeChhLmNhbGwoaS5teSgpLm1hbmlmZXN0LGQsdyxqKSxqLHgpfSk7dmFyIHkseixDPWUucmVjYWxjLEQ9W10sRz17fTtpZihiJiZlLnJlY2FsYyYmaS5teSgpKXtmb3Ioaz1pLm15KCkudWkseT0wO3k8Qy5sZW5ndGg7eSsrKUNbeV0mJnAoQ1t5XSkmJih6PUNbeV0uY29tcGFjdCgpKSYma1t6XSYmKGtbel0ucmVjYWxjPy0xPT09RC5pbmRleE9mKHopJiZELnB1c2goeik6R1t6XT0hMCk7Zm9yKHk9MDt5PEQubGVuZ3RoO3krKylHPUIoITAsRyx6eCh4eChpLERbeV0pLEUsYi0xKSk7aWYoYSE9PUUpcmV0dXJuIEEoRykuZm9yRWFjaChmdW5jdGlvbih4KXshMD09PUdbeF0mJnghPWgmJihrW3hdLmRlbGF5JiYha1t4XS5yZWNhbGMmJmtbeF0uX3VwZGF0ZT9rW3hdLl91cGRhdGUoeHgoaSx4KSxFLGItMSk6engoeHgoaSx4KSxFLGItMSkpfSkse319cmV0dXJuIEd8fHt9fX1mdW5jdGlvbiBBeCh4LGEsYil7dmFyIGM9JCh7bWF4V2lkdGg6ODAsdGFiQ2hhcnM6IiIsa2V5R2FwOiIgIix2YWx1ZUdhcDoiICIsY2hhaW46ITAsdGlueU9iakxlbjoxMix0YWJTdWJzdDoiICAiLGFsbG93Rm5zOiEwLGFsbG93SlM6ITEsYWxpZ25KUzohMH0sIm8iPT1OKGEpP2E6e30pO2J4KGEpJiYoYy50YWJDaGFycz1hKSxjeChiKSYmYj4wJiYoYy5tYXhXaWR0aD1iKTt2YXIgZD1jeChjLm1heFdpZHRoKT9fKGMubWF4V2lkdGgsOCwxZTQpOjgwLGU9YngoYy5rZXlHYXApP2Mua2V5R2FwOiIgIixmPXh4KGUpLGc9YngoYy52YWx1ZUdhcCk/Yy52YWx1ZUdhcDoiICIsaD14eChnKSxpPWMudGFiU3Vic3Qsaj1ieChjLnRhYkNoYXJzKT9jLnRhYkNoYXJzOiIiLGs9L1x0Ly50ZXN0KGorZytlKSxsPWoubGVuZ3RoLG09eHgoaiksbj0hIWMuYWxsb3dGbnMsbz0oYy51bnRhYkZucywhIWMuYWxsb3dKUykscD0hIWMuYWxpZ25KUyxxPSIiLHI9W10scz0iIix0PXgsdT1OKHgpLHY9MCx3PTAseT1udWxsLHo9bnVsbCxBPW51bGwsQj0iIixDPTAsRD0wO2lmKCFTKHUpKXJldHVybiBudWxsPT11P3ZvaWQgMDpQKE8oeCxudWxsLCIgIikucmVwbGFjZSgvLFxuXHMqL2csIiwiKS5yZXBsYWNlKC9cbihccykqL2csIiIpKTtMKHUpO2Zvcih2YXIgRT1yLmxlbmd0aC0xO0U+MDtFLS0pcltyW0VdLnVwXS5jdHIrPTE7dmFyIEY7Zm9yKEU9MTtFPHIubGVuZ3RoLTE7RSsrKUc9cltFXSxGPXJbRSsxXSwoRy51cD09Ri51cCYmRi50fHwhRy50JiZGJiZGLnQmJkYudXA9PXJbRy51cF0udXApJiYoRy5sZW4rPTEraCxHLnZhbCs9IiwiK2cpLG51bGw9PT1HLmtleXx8UyhHLnQpfHwoRy5sZW4rPWYpLHc8Ry5sdmwmJih3PUcubHZsKSxvJiYiZiI9PUcudCYmKEcuYnI9ITAsRy52YWwuaW5kZXhPZigiXG4iKT4tMSYmRy5sdmw+MSYmcltHLnVwXS5jdHI+MSYmKEcubGVuKz1kKSk7Zm9yKEU9ci5sZW5ndGgtMTtFPjA7RS0tKXJbcltFXS51cF0ubGVuKz1yW0VdLmxlbjt2YXIgRyxILEksSj1BcnJheShyLmxlbmd0aCk7Zm9yKEU9MDtFPHIubGVuZ3RoO0UrKylpZihHPXJbRV0sST1FLEpbRV09RSxFJiZTKEcudCkmJkcubGVuPD1jLnRpbnlPYmpMZW4pe0cudD0iZSIsRy5jdHI9LTE7ZG97SD1yWysrRV0sRy52YWwrPShudWxsIT09SC5rZXk/SC5rZXkrIjoiK2U6IiIpK0gudmFsLHJbRV09bnVsbH13aGlsZShyW0UrMV0mJnJbRSsxXS51cD49SSl9cmV0dXJuKHI9ci5yZWR1Y2UoZnVuY3Rpb24oeCxhKXtyZXR1cm4gbnVsbCE9PWEmJngucHVzaChhKSx4fSxbXSkpLmZvckVhY2goZnVuY3Rpb24oeCxhKXtKW3guaV09YSxhJiYoeC51cD1KW3gudXBdLHguaT1hKX0pLHE9WihqLHcrMSksSygwKSxzO2Z1bmN0aW9uIEsoeCxhKXthPSEhYTt2YXIgYixnPXJbeF0saD14KzEsaT0iIjtpZihzKz0oYXx8IXg/IiI6UihnLmx2bCkpKyhudWxsIT09Zy5rZXk/Zy5rZXkrIjoiK2U6IiIpK2cudmFsLCFhJiZnLmx2bCYmZy5sZW48PWQtKGcubHZsLUQpKm0pZm9yKHZhciBqPTE7cltoXSYmcltoXS51cD49eDtoKyspUygoYj1yW2hdKS50KSYmKGorPTEpLHMrPShudWxsIT09Yi5rZXk/Yi5rZXkrIjoiK2U6IiIpK1QoYiwtaik7ZWxzZSBpZigibyI9PWcudClmb3IoO3JbaF0mJnJbaF0udXA9PXg7aCsrKWlmKGI9cltoXSxhJiYhYi50KWMuY2hhaW4/KHMrPXJbYi51cF0uY3RyPjF8fGgtYi51cD09Mj9SKGIubHZsKToiIixzKz1iLnZhbCxEJiYxPT1yW2IudXBdLmN0ciYmaC1iLnVwPjImJihELT0xKSk6cys9UihiLmx2bCkrYi52YWw7ZWxzZSBpZihTKGIudCkpaWYoYy5jaGFpbiYmMT09Zy5jdHImJmIubHZsPjEpe3ZhciBrPTE7Zm9yKGo9MDsxPT1yW2gta10uY3RyJiZrPD1EKzEmJiFyW2gta10uYnI7aysrKWorPW51bGw9PXJbaC1rXS5rZXk/MTpyW2gta10ua2V5Lmxlbmd0aCtmKzI7KGorPWIua2V5Lmxlbmd0aCtmKzIrKGIubHZsLWsrMSkqbSk8PWQtbD8oRCs9MSxoPUsoaCxhPSEwKSk6KEQmJihyW2gtMV0uYnI9ITApLGg9SyhoLGE9ITEpKX1lbHNlIGg9SyhoKTtlbHNlIHMrPVIoYi5sdmwpKyhudWxsIT09Yi5rZXk/Yi5rZXkrIjoiK2U6IiIpK1QoYik7ZWxzZSBpZigiYSI9PWcudClmb3IoO3JbaF0mJnJbaF0udXA9PXg7aCsrKShiPXJbaF0pLnQmJiFTKGIudCk/Yi5icj8ocys9aStSKGIubHZsKStUKGIpLGk9IiIpOmkubGVuZ3RoPyciPCc9PWIudmFsLnN1YnN0cigwLDIpfHx4eChpKStiLmxlbj5kKzE/KHMrPWksaT1SKGIubHZsKStiLnZhbCk6aSs9Yi52YWw6aT1SKGIubHZsKStiLnZhbDpiLnQ/KHMrPWksaT0iIixoPUsoaCkpOihzKz1pK1IoYi5sdmwpK2IudmFsLGk9IiIpO3JldHVybiBoLTF9ZnVuY3Rpb24gTCh4KXt1PXgsQz1udWxsPT1BPzE6QS5sZW5ndGgrNCtmLEI9Im8iPT14PyJ7IjoiWyI7TSgpO3k9ci5sZW5ndGgtMSx2Kz0xO2Zvcih2YXIgYT15LGI9ej11LGM9dCxkPSJvIj09eD9PYmplY3Qua2V5cyhjKTpjLGU9ZC5sZW5ndGgsZz0wO2c8ZTtnKyspQT0ibyI9PXg/ZFtnXTpudWxsLEI9Y1sibyI9PXg/QTpnXSxTKHU9TihCKSl8fCJhIiE9eCYmdm9pZCAwPT09Qj8iYSIhPXgmJnZvaWQgMD09PUJ8fCh0PUIsIm8iIT11JiYiYSIhPXV8fEwodSkpOigidSI9PXUmJihCPW51bGwpLEI9UChPKEIpKSwibyI9PXgmJnZvaWQgMCE9PUI/KEM9QS5sZW5ndGgrMysoQisiIikubGVuZ3RoLE0oKSk6ImEiPT14JiYodm9pZCAwPT09QiYmKEI9Im51bGwiKSxDPShCKyIiKS5sZW5ndGgsTSgpKSk7eT1hLHo9Yix1PSIiLHYtPTEsQT1udWxsLEM9MSxCPSJvIj09eD8ifSI6Il0iLE0oKSxudWxsIT1hJiYoeT1yW2FdLnVwLHo9clthXS51cHQpfWZ1bmN0aW9uIE0oKXt2YXIgeD1udWxsPT09QXx8byYmL15bYS160LAt0Y/OsS3PiSRfXVthLXrQsC3Rj86xLc+JJF8wLTldKiQvaS50ZXN0KEEpJiYhL14oYXN5bmN8YnJlYWt8Yyhhc2V8YXRjaHxsYXNzfG9uc3R8b250aW51ZSl8ZGUoYnVnZ2VyfGZhdWx0fGxldGUpfGRvfGUodmFsfGxzZXxudW18eHBvcnR8eHRlbmRzKXxJbmZpbml0eSkkLy50ZXN0KEEpJiYhL14oYXJndW1lbnRzfGYoYWxzZXxpbmFsbHl8b3J8dW5jdGlvbil8aShmfG1wbGVtZW50c3xtcG9ydHxuKHxzdGFuY2VvZnx0ZXJmYWNlKSl8bGV0fE5hTnxuZXd8bnVsbHx3aGlsZXx3aXRoKSQvLnRlc3QoQSkmJiEvXihwKGFja2FnZXxyaXZhdGV8cm90ZWN0ZWR8dWJsaWMpfHJldHVybnxzdGF0aWN8c3VwZXJ8c3dpdGNofHQoaGlzfGhyb3d8cnVlfHJ5fHlwZW9mKXx1bmRlZmluZWR8dmFyfHZvaWR8eWllbGQpJC8udGVzdChBKT9BOng9UChPKEEpKTtyZXR1cm4gci5wdXNoKHtpOnIubGVuZ3RoLGx2bDp2LHVwOnksdXB0OnosdDp1LGtleTp4LHZhbDpCLGxlbjpDLGN0cjotMSxicjohMX0pLHJbci5sZW5ndGgtMV19ZnVuY3Rpb24gTih4KXt2YXIgYT0odHlwZW9mIHgpWzBdO3JldHVybiBudWxsPT14PyJ1IjoicyI9PWF8fCJmIj09YT9hOiJuIj09YT9pc05hTih4KXx8IWlzRmluaXRlKHgpPyJ1IjphOmF4KHgpPyJhIjoiW29iamVjdCBPYmplY3RdIj09WSh4KSYmImhhc093blByb3BlcnR5ImluIHg/Im8iOiJlIn1mdW5jdGlvbiBPKHgsYSxiKXtyZXR1cm4gbyYmImYiPT1OKHgpP3A/VihRKHgpKTpRKHgpOm8mJmR4KHgpP3gudG9TdHJpbmcoKTpKU09OLnN0cmluZ2lmeSh4LGZ1bmN0aW9uKHgsYSl7cmV0dXJuImYiPT1OKGEpP3A/VihRKGEpKTpRKGEpOmF9LGIpfWZ1bmN0aW9uIFAoeCl7cmV0dXJuIG51bGw9PXg/eDp4LnJlcGxhY2UoLzxcL3NjcmkvZ2ksIjxcXHUwMDJmc2NyaSIpfWZ1bmN0aW9uIFEoeCl7dmFyIGE9eC50b1N0cmluZygpO2lmKG4mJi9eW1xyXG5cc1x0XSooYXN5bmNbXHJcblxzXHRdKyk/ZnVuY3Rpb24vLnRlc3QoYSkpcmV0dXJuIGE9VyhhKSxvP2E6UChhKX1mdW5jdGlvbiBSKHgpe3JldHVybiBsPyJcbiIrcS5zdWJzdHIoMCxfKHgtRCwwLDFlNCkqbCk6IiJ9ZnVuY3Rpb24gUyh4KXtyZXR1cm4gYngoeCk/Im8iPT14fHwiYSI9PXg6bnVsbCE9eCYmKCJvIj09eC50fHwiYSI9PXgudCl9ZnVuY3Rpb24gVCh4LGEpe3JldHVybiBwJiYiZiI9PXgudD9VKHgudmFsLHgubHZsKyhhfHwwKSk6eC52YWx9ZnVuY3Rpb24gVSh4LGEpe2lmKFgoeCkpcmV0dXJuIHg7dmFyIGI9bT9SKGEpOiJcbiI7cmV0dXJuIHgubWF0Y2goL14uKiQvZ20pLm1hcChmdW5jdGlvbih4LGEpe3JldHVybiBhP2IreDp4fSkuam9pbigiIil9ZnVuY3Rpb24gVih4KXtpZihYKHgpKXJldHVybiB4O3ZhciBhPXgubWF0Y2goL14uKiQvZ20pLGI9aS5sZW5ndGh8fDI7aWYoYS5sZW5ndGg8MilyZXR1cm4geDt2YXIgYz1hW2EubGVuZ3RoLTFdLnJlcGxhY2UoL1x0L2csaSkubWF0Y2goL15ccyovKVswXS5sZW5ndGg7cmV0dXJuIGM/YS5tYXAoZnVuY3Rpb24oeCl7dmFyIGE9MCxkPSExO3JldHVybiB4LnNwbGl0KCIiKS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIlx0IiE9eCYmIiAiIT14JiYoZD0hMCksZD94OihhKz0iXHQiPT14P2I6MSk8PWM/IiI6KGQ9ITAseCl9KS5qb2luKCIiKX0pLmpvaW4oIlxuIik6eH1mdW5jdGlvbiBXKHgpe3ZhciBhPS9cKShbXHNcblxyXHRdKz98XC97MSwxMH0uKj9cKlwvfFwvXC9bXlxuXHJdezAsMjAwfVtcblxyXSl7MCwyMH0/XHsvLGI9eC5zcGxpdChhLDEpWzBdLGM9ImFzeW5jIj09Yi5zdWJzdHIoMCw1KSxkPWIuc3Vic3RyKGM/MTQ6OCkucmVwbGFjZSgvW1xzXG5cclx0XSs/fFwvezEsMTB9Lio/XCpcL3xcL1wvW15cblxyXXswLDIwMH1bXG5ccl0vZywiIikrIikiLGU9InsiK3guc3Vic3RyKGIubGVuZ3RoKS5yZXBsYWNlKGEsIiIpLnJlcGxhY2UoL31bXn1dKyQvLCJ9Iik7cmV0dXJuKChjPyJhc3luYyAiOiIiKSsiZnVuY3Rpb24gIitkKS5yZXBsYWNlKC9mdW5jdGlvblxzYW5vbnltb3VzLywiZnVuY3Rpb24gIikrIiAiK2V9ZnVuY3Rpb24gWCh4KXtyZXR1cm4hYngoeCl8fHguaW5kZXhPZigiYCIpPi0xfWZ1bmN0aW9uIFkoeCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh4KX1mdW5jdGlvbiBaKHgsYSl7Zm9yKHZhciBiPSIiLGM9MDtjPGE7YysrKWIrPXg7cmV0dXJuIGJ9ZnVuY3Rpb24gJCh4LGEpe3JldHVybiBPYmplY3Qua2V5cyhhKS5mb3JFYWNoKGZ1bmN0aW9uKGIpe3hbYl09YVtiXX0pLHh9ZnVuY3Rpb24gXyh4LGEsYil7cmV0dXJuIE1hdGgubWluKE1hdGgubWF4KHgsYSksYil9ZnVuY3Rpb24geHgoeCl7cmV0dXJuIGs/eC5yZXBsYWNlKC9cdC9nLGkpLmxlbmd0aDp4Lmxlbmd0aH1mdW5jdGlvbiBheCh4KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh4KX1mdW5jdGlvbiBieCh4KXtyZXR1cm4icyI9PU4oeCl9ZnVuY3Rpb24gY3goeCl7cmV0dXJuIm4iPT1OKHgpfWZ1bmN0aW9uIGR4KHgpe3JldHVybiFheCh4KSYmIltvYmplY3QgUmVnRXhwXSI9PVkoeCl9fWZ1bmN0aW9uIEJ4KHgsYSl7dmFyIGI9IWE7QSh4KS5mb3JFYWNoKGZ1bmN0aW9uKGEpe0N4KGEseCxiKX0pfWZ1bmN0aW9uIEN4KHgsYSxiKXt2YXIgYyxkLGUsZixnPSIiO2lmKGJ8fCEvXihkYXRhfGZpbGVzfHJlcXVpcmUpJC8udGVzdCh4KSlpZihjPWFbeF0sZz1EKGMpLC9eKG9ifGFyKS8udGVzdChnKSlCeChjKTtlbHNle2lmKCJzdHJpbmciIT1nKXJldHVybjtpZigvXmZ1bmN0aW9uKFwofFtcc1xuXHRdKykvLnRlc3QoYykpe2lmKG51bGw9PShkPWMubWF0Y2goL15mdW5jdGlvbihbXHNcblx0XStbXHfQsC3Rj9CQLdCvzrEtz4nOkS3OqV8kXVtcd9CwLdGP0JAt0K/OsS3Pic6RLc6pXGRfJF0qKT9bXHNcblx0XSpcKChbXlwpXSopXClccypceyhbXHNcU10qKVx9W1xzXG5cclx0XSokLykpfHw0IT1kLmxlbmd0aClyZXR1cm47ImZ1bmN0aW9uIj09dHlwZW9mKGU9RHgoZj1kWzFdP2RbMV0ucmVwbGFjZSgvW1xzXG5cdF0vZywiIik6IiIsZFsyXSxkWzNdKSk/YVt4XT1lOk8oIkludmFsaWQgZnVuY3Rpb24gaW4gWEpTT04sIHNraXBwZWQiLGUubWVzc2FnZSxlLnN0YWNrLGMpfWVsc2UgaWYoL15hc3luY1xzZnVuY3Rpb24oXCh8W1xzXG5cdF0rKS8udGVzdChjKSl7aWYobnVsbD09KGQ9Yy5tYXRjaCgvXmFzeW5jXHNmdW5jdGlvbihbXHNcblx0XStbXHfQsC3Rj9CQLdCvzrEtz4nOkS3OqV8kXVtcd9CwLdGP0JAt0K/OsS3Pic6RLc6pXGRfJF0qKT9bXHNcblx0XSpcKChbXlwpXSopXClccypceyhbXHNcU10qKVx9W1xzXG5cclx0XSokLykpfHw0IT1kLmxlbmd0aClyZXR1cm47ImZ1bmN0aW9uIj09dHlwZW9mKGU9KGY9ZFsxXT9kWzFdLnJlcGxhY2UoL1tcc1xuXHRdL2csIiIpOiIiKS5sZW5ndGg/RngoZixkWzJdLGRbM10pOkV4KGRbMl0sZFszXSkpP2FbeF09ZTpPKCJJbnZhbGlkIGZ1bmN0aW9uIGluIFhKU09OLCBza2lwcGVkIixlLm1lc3NhZ2UsZS5zdGFjayxjKX1lbHNlIGlmKC9ebmV3XHNSZWdFeHBcKC8udGVzdChjKSYmIikiPT1jLnN1YnN0cigtMSkpe2lmKG51bGw9PShkPWMubWF0Y2goL15uZXdcc1JlZ0V4cFxzKlwoXC8oW1xzXFNdKylcLyhbYS16XSopXCkkLykpfHwzIT1kLmxlbmd0aClyZXR1cm47ImZ1bmN0aW9uIj09dHlwZW9mKGU9R3goZFsxXSxkWzJdKSkudGVzdD9hW3hdPWU6TygiSW52YWxpZCBSZWdFeHAgaW4gWEpTT04sIHNraXBwZWQiLGUubWVzc2FnZSxlLnN0YWNrLGMpfX19ZnVuY3Rpb24gRHgoeCxhLGIpe3ZhciBjO3RyeXtjPW5ldyBGdW5jdGlvbigiIiwicmV0dXJuIChmdW5jdGlvbiAiK3grIigiK2ErIil7IitiKyJ9KTsiKSgpfWNhdGNoKHgpe2M9e21lc3NhZ2U6eC5tZXNzYWdlLHN0YWNrOnguc3RhY2t9fXJldHVybiBjfWZ1bmN0aW9uIEV4KHgsYSl7dmFyIGI7dHJ5e2I9bmV3IEZ1bmN0aW9uKCIiLCJyZXR1cm4gKGFzeW5jIGZ1bmN0aW9uKCIreCsiKXsiK2ErIn0pOyIpKCl9Y2F0Y2goeCl7Yj17bWVzc2FnZTp4Lm1lc3NhZ2Usc3RhY2s6eC5zdGFja319cmV0dXJuIGJ9ZnVuY3Rpb24gRngoeCxhLGIpe3ZhciBjO3RyeXtjPW5ldyBGdW5jdGlvbigiIiwicmV0dXJuIChhc3luYyBmdW5jdGlvbiAiK3grIigiK2ErIil7IitiKyJ9KTsiKSgpfWNhdGNoKHgpe2M9e21lc3NhZ2U6eC5tZXNzYWdlLHN0YWNrOnguc3RhY2t9fXJldHVybiBjfWZ1bmN0aW9uIEd4KHgsYSl7dmFyIGI7dHJ5e2I9bmV3IFJlZ0V4cCh4LGEpfWNhdGNoKHgpe2I9e21lc3NhZ2U6eC5tZXNzYWdlLHN0YWNrOnguc3RhY2t9fXJldHVybiBifWZ1bmN0aW9uIEh4KGEsYixjLGQpe3ZhciBlLGYsZyxoPWMuY2hlY2ssaT0wO2lmKGghPUUpe3ZhciBqPVYoZCkucGFyYW1zLm1lc3NhZ2VzLGs9Yy5lcnJvcixsPWt8fGoucGF0dGVybk1pc21hdGNofHxqWyIiXXx8IkVycm9yIjtpZihkLmxlbmd0aCYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGRbMF0sInZhbGlkaXR5IikmJiFkWzBdLnZhbGlkaXR5LnZhbGlkKXt2YXIgbT1kWzBdLnZhbGlkYXRpb25NZXNzYWdlKyIiO3JldHVybiIiIT09bT9tLnN1YnN0cigwLDEpLnRvVXBwZXJDYXNlKCkrbS5zdWJzdHIoMSk6KGU9ZFswXS52YWxpZGl0eSxBKGUpLmZvckVhY2goZnVuY3Rpb24oeCl7IiI9PT1tJiYidmFsaWQiIT14JiZvKGVbeF0pJiZlW3hdJiZqW3hdJiYobT1qW3hdKX0pLG18fGspfXN3aXRjaChEKGgpLnN1YnN0cigwLDEpKXtjYXNlImYiOnJldHVybiBudWxsPT0oZz1oLmNhbGwoVihkKS5tYW5pZmVzdCxhLGIsZCkpPyIiOmc7Y2FzZSJyIjpyZXR1cm4gaC50ZXN0KGIrIiIpPyIiOmw7Y2FzZSJhIjpyZXR1cm4gaC5pbmRleE9mKGIpPi0xPyIiOmw7Y2FzZSJzIjpyZXR1cm4gYj09aD8iIjpsO2Nhc2UibyI6cmV0dXJuIGhbYl0/IiI6bDtjYXNlImIiOnJldHVybiBkLmhhc0NsYXNzKCJteS1mb3JtLWxpc3QiKT8oZj1kLmRhdGEoImxpc3RTcmMiKXx8ZC5kYXRhKCJteSIpLmxpc3RTcmN8fCI+KiIsZz17fSxpPTAsKCI+KiI9PWY/eChkWzBdLmNoaWxkcmVuKTp4eChkLGYsITApKS5lYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPXgodGhpcyk7Yi5oYXNDbGFzcygidWktc29ydGFibGUtcGxhY2Vob2xkZXIiKXx8KGIuZGF0YSgibXkiKSYmIWIubXkoInZhbGlkIikmJihnW2ldPWIubXkoImVycm9ycyIpKSxpKz0xKX0pLGcpOmQuaGFzQ2xhc3MoIm15LWZvcm0iKSYmaD9kLm15KCJ2YWxpZCIpPyIiOmQubXkoImVycm9ycyIpOiIifXJldHVybiBqLmZvcm1FcnJvcnx8IkVycm9yIn1yZXR1cm4iIn19KGpRdWVyeSksZnVuY3Rpb24oeCl7dmFyIGE9eC5leHRlbmQsYj0ic3RyaW5nIixjPSJmdW5jdGlvbiIsZD1PYmplY3QuaXNBcnJheSxlPShPYmplY3QuaXNCb29sZWFuLE9iamVjdC5pc1N0cmluZyksZj1PYmplY3QuaXNPYmplY3QsZz0oT2JqZWN0LmlzTnVtYmVyLE9iamVjdC5pc1JlZ0V4cCxPYmplY3QuaXNGdW5jdGlvbixPYmplY3Qua2V5cyksaD0nPGlucHV0IHR5cGU9IicsaT17dG1wbDp7bnVtOmgrJ251bWJlciIge2V4dH0vPicsaW5wOmgrJ3RleHQiIHtleHR9Lz4nLHNsaTpoKydyYW5nZSIge2V4dH0vPicsZGF0OmgrJ2RhdGUiIHtleHR9Lz4nLGJ0bjpoKydidXR0b24iIHtleHR9Lz4nLHB3ZDpoKydwYXNzd29yZCIge2V4dH0vPicsYnV0OiI8YnV0dG9uIHtleHR9Pnt0eHR9PC9idXR0b24+IixkaXY6IjxkaXYge2V4dH0+e3R4dH08L2Rpdj4iLHNwbjoiPHNwYW4ge2V4dH0+e3R4dH08L3NwYW4+IixzZWw6IjxzZWxlY3Qge2V4dH0+e3R4dH08L3NlbGVjdD4iLG11bDonPHNlbGVjdCB7ZXh0fSBtdWx0aXBsZT0ibXVsdGlwbGUiPnt0eHR9PC9zZWxlY3Q+Jyx0eHQ6Ijx0ZXh0YXJlYSB7ZXh0fT57dHh0fTwvdGV4dGFyZWE+IixlcnI6JyA8c3BhbiBjbGFzcz0ibXktZXJyb3ItdGlwIHtjbGFzc30iIHN0eWxlPSJ7c3R5bGV9Ij57dHh0fTwvc3Bhbj4nLG1zZzonPGRpdiBjbGFzcz0ibXktZXJyb3ItdGlwIHtjbGFzc30iIHN0eWxlPSJ7c3R5bGV9Ij57dHh0fTwvZGl2PicsdmFsOmZ1bmN0aW9uKHgpe2lmKCFkKHgudmFscykpcmV0dXJuIiI7dmFyIGI9YSh7c3R5bGU6IiIsY3NzOiIifSx4KTtyZXR1cm4gYi50eHQ9eC52YWxzLnJlZHVjZShmdW5jdGlvbih4LGEpe3JldHVybiB4KyI8c3BhbiBjbGFzcz1cIm15LXNob3J0Y3V0XCIgb25jbGljaz1cIiQodGhpcykucGFyZW50cygnLm15LXJvdycpLmZpbmQoJ2lucHV0LHRleHRhcmVhJykudmFsKCQodGhpcykudGV4dCgpKS50cmlnZ2VyKCdibHVyJylcIj4iK2ErIjwvc3Bhbj4gIn0sIiAiKSwnPHNwYW4gY2xhc3M9Im15LXNob3J0Y3V0cyB7Y3NzfSIgc3R5bGU9IntzdHlsZX0iPnt0eHR9PC9zcGFuPicuYXNzaWduKGIpfSwiIjoiPHtfdGFnfSB7ZXh0fT57dHh0fTwve190YWd9PiJ9LHR4dDp7c2VsOmZ1bmN0aW9uKHgpe2lmKCF4LnZhbHMpcmV0dXJuIiI7dmFyIGE9ayh4LnZhbHMpO3JldHVybiBnKGEpLnJlZHVjZShmdW5jdGlvbih4LGIpe3JldHVybiB4Kyc8b3B0aW9uIHZhbHVlPSInK2IrJyI+JythW2JdKyI8L29wdGlvbj4ifSwiIil9fSxwYXJhbXM6e3N0eWxlczp7bnVtOiJ3aWR0aDozMCU7IixkYXQ6IndpZHRoOjMwJTsiLGlucDoid2lkdGg6MTAwJSIscHdkOiJ3aWR0aDoxMDAlIix0eHQ6IndpZHRoOjEwMCU7bWF4LXdpZHRoOjEwMCU7bWluLWhlaWdodDoxcHg7d29yZC1icmVhazpicmVhay13b3JkOyIsZXJyOiJkaXNwbGF5Om5vbmUiLG1zZzoiZGlzcGxheTpub25lIn0sYWxpYXM6e251bWJlcjoibnVtIixkYXRlOiJkYXQiLHNsaWRlcjoic2xpIix0ZXh0YXJlYToidHh0IixpbnB1dDoiaW5wIixzcGFuOiJzcG4iLHNlbGVjdDoic2VsZWN0Iix2YWxzOiJ2YWwifSxyb3c6IiIscm93VGFnOiJkaXYiLHJvd0NzczoibXktcm93IixsYWJlbDoiIixsYWJlbFRhZzoic3BhbiIsbGFiZWxDc3M6Im15LWxhYmVsIn0sZGVmYXVsdHM6e2lkOiIiLGNsYXNzOiIiLHN0eWxlOiIiLHBsYWNlaG9sZGVyOiIiLHZhbHVlOiIiLHJvd3M6MX0sYXR0bmFtZXM6e2NzczoiY2xhc3MiLHBsYzoicGxhY2Vob2xkZXIiLHZhbDoidmFsdWUiLHR4dDoiIix2YWxzOiIiLHRpcDoidGl0bGUifX07ZnVuY3Rpb24gaih4LGgsail7aWYoZShoKSlyZXR1cm4geCtoO2lmKGYoaCkpcmV0dXJuIGEoITAsaixoKSx4O2lmKGQoaCkmJmgubGVuZ3RoPjEmJmUoaFsxXSkpe2Zvcih2YXIgayxsLG0sbixvLHAscSxyPWhbMF0scz0iIix0PTE7dDxoLmxlbmd0aDspe2lmKGUoaFt0XSkpaWYobT0obj1oW3RdLnJlcGxhY2UoL1xzL2csIiIpKS5zcGxpdCgvW1wuI10vaSksbD1qLmFsaWFzW21bMF1dfHxtWzBdLGs9bi5zdWJzdHIobVswXS5sZW5ndGgpLC9eW2EtejAtOV0rKCNbYS16MC05XC1fXSspPyhcLlthLXowLTlcLV9dKykqJC9pLnRlc3Qobikpe3A9aS50bXBsW2xdfHxpLnRtcGxbIiJdLG89e3N0eWxlOiIiLGNsYXNzOiIiLHR4dDoiIn0scT0iIjt2YXIgdT1mKGhbdCsxXSk7dSYmZyhoW3QrPTFdKS5mb3JFYWNoKGZ1bmN0aW9uKHgpeyIiIT1pLmF0dG5hbWVzW3hdJiYob1tpLmF0dG5hbWVzW3hdfHx4XT1oW3RdW3hdKX0pLG8uc3R5bGV8fG8uY2xhc3N8fCFqLnN0eWxlc1tsXXx8KG8uc3R5bGU9ai5zdHlsZXNbbF0pLG8uaWR8fCIjIiE9ay50bygxKXx8KG8uaWQ9ay5mcm9tKDEpLnNwbGl0KCIuIilbMF0pLCFvLmNsYXNzJiYvXC4vLnRlc3QoaykmJihvLmNsYXNzPSgiIyI9PWsudG8oMSk/ay5zdWJzdHIoby5pZC5sZW5ndGgrMSk6aykuc3BsaXQoIi4iKS5jb21wYWN0KCEwKS5qb2luKCIgIikpLGcobykuZm9yRWFjaChmdW5jdGlvbih4KXtxKz14Kyc9Iicrb1t4XSsnIiAnfSksdSYmZyhoW3RdKS5mb3JFYWNoKGZ1bmN0aW9uKHgpeyIiPT09aS5hdHRuYW1lc1t4XSYmKG9beF09aFt0XVt4XSl9KSxvLmV4dD1xLCFvLnR4dCYmaS50eHRbbF0mJihvLnR4dD1pLnR4dFtsXShvKSksby5fdGFnPWwscys9dHlwZW9mIHA9PWM/cChvKXx8IiI6dHlwZW9mIHA9PWI/cC5hc3NpZ24obyk6IiJ9ZWxzZSBzKz1oW3RdO3QrPTF9cmV0dXJuIHMmJihzPSI8IitqLnJvd1RhZysnIGNsYXNzPSInK2oucm93Q3NzKyciICcrKGoucm93PydzdHlsZT0id2lkdGg6JytqLnJvdysiOyAiOiIiKSsoai5sYWJlbCYmcj8icGFkZGluZy1sZWZ0OiIrai5sYWJlbCsiOyAiOiIiKSsnIj4nKyhyPyI8IitqLmxhYmVsVGFnKycgY2xhc3M9Iicrai5sYWJlbENzcysnIiAnKyhqLmxhYmVsPydzdHlsZT0iZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6JytqLmxhYmVsKyI7bWFyZ2luLWxlZnQ6LSIrai5sYWJlbCsnIiAnOiIiKSsiPiIrcisiPC8iK2oubGFiZWxUYWcrIj4iOiIiKStzKyI8LyIrai5yb3dUYWcrIj4iKSx4K3N9cmV0dXJuIHh9ZnVuY3Rpb24gayh4KXt2YXIgYT14O2lmKGUoYSkmJihhPWEuc3BsaXQoL1tccyxdLykuY29tcGFjdCghMCkpLGQoYSkpe2Zvcih2YXIgYj17fSxjPTA7YzxhLmxlbmd0aDtjKyspe3ZhciBoPWFbY107aWYoZihoKSl7dmFyIGk9ZyhoKTsxPT1pLmxlbmd0aD9iW2lbMF1dPWhbaVswXV0rIiI6YltoLmlkfHxoLmtleXx8aC5uYW1lfHwiIl09aC50ZXh0fHxoLnZhbHVlfHxoLnRpdGxlfHwiIn1lbHNlIGJbaF09aCsiIn1hPWJ9cmV0dXJuIGYoYSk/YTp7fX1mdW5jdGlvbiBsKGIsYyl7dmFyIGc9e30saD1lKGIpP2IubGluZXMoKS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIHgucmVwbGFjZSgvXltcdFxzXSovLCIiKX0pOmI7cmV0dXJuIGQoaCk/KGEoITAsZyxpLnBhcmFtcyxjfHx7fSksaC5sZW5ndGg/aC5yZWR1Y2Uoai5maWxsKHZvaWQgMCx2b2lkIDAsZyksIiIpOiIiKTpmKGgpPyh4LmV4dGVuZChpLGgpLHZvaWQgMCk6IiJ9dmFyIG09e2luaXQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4geCh0aGlzKS5odG1sKGwoYSxiKSl9fTt4Lm15fHwoeC5teT17fSkseC5teS5mb3JtZ2VuPWwseC5mbi5mb3JtZ2VuPWZ1bmN0aW9uKGEpe3JldHVybiBlKGEpJiZtW2FdP21bYV0uYXBwbHkodGhpcyxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSkpOiJvYmplY3QiIT10eXBlb2YgYSYmYT8oeC5lcnJvcigiTWV0aG9kICIrYSsiIGRvZXMgbm90IGV4aXN0IG9uIGpRdWVyeS5mb3JtZ2VuIiksdm9pZCAwKTptLmluaXQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oalF1ZXJ5KSxmdW5jdGlvbih4KXt2YXIgYSxiLGM9e30sZD0iYm9keSIsZT0hMSxmPXguZXh0ZW5kLGc9e30saD14Lm15LmYuaW5kb20saT0oT2JqZWN0LmlzQXJyYXksT2JqZWN0LmlzQm9vbGVhbiksaj1PYmplY3QuaXNTdHJpbmcsaz1PYmplY3QuaXNPYmplY3QsbD1PYmplY3QuaXNOdW1iZXIsbT0oT2JqZWN0LmlzUmVnRXhwLE9iamVjdC5pc0Z1bmN0aW9uKTtpZih4LmZuLm1vZGFsJiZtKHgoKS5lbXVsYXRlVHJhbnNpdGlvbkVuZCkmJihiPXguZm4ubW9kYWwpLHgoZG9jdW1lbnQpLm9mZigiLm1vZGFsIikseChkb2N1bWVudCkub24oImtleWRvd24ubW9kYWwiLGZ1bmN0aW9uKHgpe3ZhciBhLGIsYz14LmtleUNvZGU7aWYoITEhPT1lJiYoMTM9PT1jfHwyNz09PWMpKXtpZihhPShiPWUuZGF0YSgibW9kYWwiKSkuZm9ybSwyNz09YyYmKGIuZXNjfHxPYmplY3QuZXF1YWwoYS5kYXRhKCJteSIpLmluaXRpYWwsYS5teSgiZGF0YSIpKSkpcmV0dXJuIGUubW9kYWwoITApLCExO2lmKDEzPT1jJiZiLmVudGVyKXJldHVybiBmdW5jdGlvbih4KXt4Lm1vZGFsKCl9LmZpbGwoZSkuZGVsYXkoNTApLCExfX0pLG0oeC5teS5mLmdldHJlZih4LCJteS5tb2RhbC5wYXJlbnQiKSkpe3ZhciBuPXgubXkuZi5nZXRyZWYoeCwibXkubW9kYWwucGFyZW50IikoKS5hdHRyKCJpZCIpO24mJihkPSIjIituKX1mdW5jdGlvbiBvKGEsYixjLGQpe3ZhciBlLGcsaCxpLGwsbSxuO2lmKCJvYmplY3QiPT10eXBlb2YgYiYmYi5qcXVlcnkpYi5pcygiaW1nIikmJihtPWIsbD1iLmF0dHIoImFsdCIpfHxiLmF0dHIoInRpdGxlIil8fGIuZGF0YSgidGV4dCIpfHwiIixnPW1bMF0ubmF0dXJhbFdpZHRofHxtWzBdLndpZHRoLChlPW1bMF0ubmF0dXJhbEhlaWdodHx8bVswXS5oZWlnaHQpPDEmJihlPTEpLGc8MSYmKGc9MSksaT14KHdpbmRvdykud2lkdGgoKS05MCwoaD14KHdpbmRvdykuaGVpZ2h0KCktOTApPGUmJihnPWcqKGgvZSl8MCxlPWgpLGk8ZyYmKGU9ZSooaS8oZz1pKSl8MCksbj1nPDMwMD8zMDA6ZyxmKGEse3NvdXJjZToiaW1hZ2UiLG1hbmlmZXN0Ontpbml0OmZ1bmN0aW9uKHgpe3guaHRtbCh0aGlzLkhUTUwpLHgub24oImNsaWNrLm15IiwiaW1nOmVxKDApIixmdW5jdGlvbigpe3gudHJpZ2dlcigiY2FuY2VsIil9KX0sSFRNTDonPGltZyBzcmM9IiIgY2xhc3M9ImRiIiBzdHlsZT0ibWF4LXdpZHRoOicrZysicHg7bWF4LWhlaWdodDoiK2UrJ3B4Ij48aDQgY2xhc3M9Im10MTAiPjwvaDQ+Jyx1aTp7ImltZzplcSgwKSI6ImltZyIsaDQ6e2JpbmQ6InRleHQiLGNzczp7aGlkZTpmdW5jdGlvbih4LGEpe3JldHVybiFhfX19fX0sZGF0YTp7aW1nOm0uYXR0cigic3JjIiksdGV4dDpsfSxlc2M6ITAsc2NyZWVuOiEwLHdpZHRoOmR8fG4sZm9jdXM6ITEsZ2xvYmFsOiEwLHo6IjE5OTUifSxjKSk7ZWxzZSBpZihrKGIpJiZiLm1hbmlmZXN0KWYoYSxiLGMpO2Vsc2V7aWYoIWooYikpcmV0dXJuIG51bGw7ZihhLHtzb3VyY2U6Imh0bWwiLG1hbmlmZXN0Ontpbml0OmZ1bmN0aW9uKHgpe3guaHRtbCh0aGlzLkhUTUwpfSxIVE1MOmIsdWk6eyJkaXY6ZXEoMCkiOmZ1bmN0aW9uKCl7fX19LGRhdGE6e30sZXNjOiEwLGZvY3VzOiExLHdpZHRoOmR9LGMpfXJldHVybiBhfWMubW9kYWw9ZnVuY3Rpb24oYSxiLGMpe3ZhciBmLGc9e30saD14KGQpLGo9aC5maW5kKCI+Lm15LW1vZGFsLXByb3h5Iiksaz17Z2xvYmFsOiEwLHNjcmVlbjohMCxkb25lOm0oYik/Yjp2b2lkIDAsejoiMTk5NSJ9O3JldHVybiBpKGEpfHxudWxsPT1hP2oubW9kYWwoYSk6KGY9eC5EZWZlcnJlZCgpLG8oZyxhLGssYyk/ZT9mLnJlamVjdCgiTG9ja2VkIikucHJvbWlzZSgpOihqLmxlbmd0aHx8KGo9eCgnPGRpdiBjbGFzcz0ibXktbW9kYWwtcHJveHkiPjwvZGl2PicpLnByZXBlbmRUbyhoKSkuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDoiMCIsbGVmdDoiMCIsbWFyZ2luOiIwIixwYWRkaW5nOiIwIix3aWR0aDoiMXB4IixoZWlnaHQ6IjAifSksai5tb2RhbChnKSk6Zi5yZWplY3QoIkludmFsaWQgZGF0YSIpLnByb21pc2UoKSl9LGMubW9kYWwubG9hZGluZz1mdW5jdGlvbihhKXt4KGQpLmZpbmQoIj4ubXktbW9kYWwiKS50b2dnbGVDbGFzcygibXktbW9kYWwtbG9hZGluZyIsISFhKX0sYy5tb2RhbC5wYXJlbnQ9ZnVuY3Rpb24oYSl7aWYoIWF8fCF4KGEpLmxlbmd0aClyZXR1cm4geChkKTtkPWF9LGMubW9kYWwucGFyZW50QmFjaz1mdW5jdGlvbihiKXtpZighYnx8IXgoYikubGVuZ3RoKXJldHVybiB4KGF8fGQpO2E9Yn0sYy5tb2RhbC52aXNpYmxlPWZ1bmN0aW9uKCl7cmV0dXJuISFlfSx4Lm15fHwoeC5teT17fSkseC5teS5tb2RhbD1jLm1vZGFsLHguZm4ubW9kYWw9ZnVuY3Rpb24oYyxuLHApe2lmKGIpe2lmKHZvaWQgMD09PWMmJnZvaWQgMD09PW4mJnZvaWQgMD09PXApcmV0dXJuIGIuY2FsbCh0aGlzKTtpZihrKGMpJiYoYy5oYXNPd25Qcm9wZXJ0eSgiYmFja2Ryb3AiKXx8Yy5oYXNPd25Qcm9wZXJ0eSgia2V5Ym9yYWQiKXx8Yy5oYXNPd25Qcm9wZXJ0eSgic2hvdyIpKSlyZXR1cm4gYi5jYWxsKHRoaXMsYyxuKTtpZihqKGMpJiYvXih0b2dnbGV8c2hvd3xoaWRlfGhhbmRsZVVwZGF0ZSkkLy50ZXN0KGMpKXJldHVybiBiLmNhbGwodGhpcyxjLG4pfXZhciBxLHIscyx0LHUsdix3PXguRGVmZXJyZWQoKSx5PXt9LHo9dGhpcyxBPTAsQj1tKG4pP246ZnVuY3Rpb24oKXtyZXR1cm4hMX0sQz1rKGMpP2M6e30sRD16LmRhdGEoIm1vZGFsIik7aWYoZih6LHcucHJvbWlzZSgpKSxEKXtpZihudWxsPT1jfHxpKGMpKXJldHVybiBFKGMpLHo7aWYoQylyZXR1cm4gSSgiTG9ja2VkIiksen1yZXR1cm4gei5pcygiOnZpc2libGUiKT8oQz1vKHksYyx7fSkpP0MuZ2xvYmFsJiZlPyhJKCJMb2NrZWQiKSx6KTooKEQ9Zih7dHlwZToiRE9NIixzb3VyY2U6Im1hbmlmZXN0Iixmb3JtOm51bGwsbW9kYWw6bnVsbCxyb290Om51bGwsYmdyb290Om51bGwsY2FsbGVyOnosbWFuaWZlc3Q6e30sZGF0YTp7fSxnbG9iYWw6ITEsc2NyZWVuOiExLGRyYWc6ITEsZm9jdXM6ITAsY2xvc2U6ITAsc2lsZW50OiEwLGVzYzohMSxlbnRlcjohMSxib3VuZDohMSxoYXJkQ2xvc2U6ITAsbm9zZToiIix3aWR0aDpwfHwzMDAsaGVpZ2h0Om51bGwseDoiMCIseToiMCIsejoiMTkwMSIsYmFja2dyb3VuZDoid2hpdGUiLGNzczoiIixhbmltYXRlOjIwMH0sQyx7cHJvbWlzZTp3LnByb21pc2UoKSxjaWQ6TnVtYmVyLnJhbmRvbSgyNjg0MzU0NTYsNDI5NDk2NzI5NSkudG9TdHJpbmcoMTYpfSkpLmRvbmU9bShELmRvbmUpP0QuZG9uZTpCLGooRC5hbGlnbikmJkQuYWxpZ24mJihELng9KEQuYWxpZ24ubWF0Y2goLyhsZWZ0fHJpZ2h0KTpcLT9cZCsoXC5cZCspPyglfHB4KT8vZyl8fFsiMCJdKVswXSxELnk9KEQuYWxpZ24ubWF0Y2goLyh0b3B8Ym90dG9tKTpcLT9cZCsoXC5cZCspPyglfHB4KT8vZyl8fFsiMCJdKVswXSksRC53aWR0aD0xKih4Lm15LmYuZ2V0cmVmKGooRC5tYW5pZmVzdCk/eC5teS5jYWNoZShELm1hbmlmZXN0KTpELm1hbmlmZXN0LCJwYXJhbXMud2lkdGgiKXx8RC53aWR0aCksRC50eXBlPSJET00iLHouaGFzQ2xhc3MoIm15LWZvcm0iKT8oRC50eXBlPSJmb3JtIixELnJvb3Q9RC5yb290fHx6KTp6LmRhdGEoIm15Iik/KEQudHlwZT0iY29udHJvbCIsRC5yb290PUQucm9vdHx8ei5teSgpLnJvb3QpOihELnJvb3Q9RC5yb290fHx6LnBhcmVudHMoIi5teS1mb3JtIikuZXEoMCksRC5yb290Lmxlbmd0aHx8KEQucm9vdD14KGQpKSksRC5nbG9iYWw/KEQucm9vdD14KGQpLEQuYmdyb290PXgoYXx8ZCkpOkQuYmdyb290PUQuYmdyb290P3goRC5iZ3Jvb3QpOkQucm9vdCwocz1ELnJvb3QpLmRhdGEoIm1vZGFscyIpfHxzLmRhdGEoIm1vZGFscyIse30pLEYoKSxxPXgoJzxkaXYgY2xhc3M9Im15LW1vZGFsIG15LW1vZGFsLWluaXQgbXktbW9kYWwtJysoRC5nbG9iYWw/ImZ1bGxzY3JlZW4gIjoib3ZlcmxheSAiKStELmNzcysoRC5ub3NlPyIgbm9zZS0iK0Qubm9zZToiIikrJyI+PC9kaXY+JyksRC5yb290LmZpbmQoIj4ubXktbW9kYWwiKS5sZW5ndGg/cS5pbnNlcnRBZnRlcihELnJvb3QuZmluZCgiPi5teS1tb2RhbCIpLmxhc3QoKSk6cS5wcmVwZW5kVG8oRC5yb290KSxxLmFkZENsYXNzKCJteS1tb2RhbC0iK0QuY2lkKSxBPXEub3V0ZXJXaWR0aCgpLHEuaGlkZSgpLHEuaHRtbCgnPGRpdiBjbGFzcz0ibXktbW9kYWwtZm9ybSI+PC9kaXY+Jykscj1xLmZpbmQoIi5teS1tb2RhbC1mb3JtIiksRC5jbG9zZSYmeChqKEQuY2xvc2UpP0QuY2xvc2U6JzxkaXYgY2xhc3M9Im15LW1vZGFsLWNsb3NlIiB0aXRsZT0iQ2xvc2UiPsOXPC9kaXY+JykucHJlcGVuZFRvKHEpLm9uKCJjbGljay5teSIsZnVuY3Rpb24oKXtFKEQuaGFyZENsb3NlKX0pLmNzcyh7InotaW5kZXgiOigiKyI9PT0oRC56KyIiKS50bygxKT8iKyI6IiIpKygxKkQueisxKX0pLHQ9RC5iZ3Jvb3QuZmluZCgiPi5teS1tb2RhbC1zY3JlZW4iKSxELnNjcmVlbiYmKHQubGVuZ3RofHwodD14KCc8ZGl2IGNsYXNzPSJteS1tb2RhbC1zY3JlZW4iIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij48L2Rpdj4nKS5wcmVwZW5kVG8oRC5iZ3Jvb3QpKSxELmVzYyYmdC5vbigiY2xpY2subXkiK0QuY2lkLGZ1bmN0aW9uKCl7ei5tb2RhbCghMCl9KSx0LnRvZ2dsZUNsYXNzKCJteS1tb2RhbC1zY3JlZW4tZ2xvYmFsIiwhIUQuZ2xvYmFsKSksei5kYXRhKCJtb2RhbCIsRCksRC5zaWxlbnQmJnEub24oImNoYW5nZS5teSIsZnVuY3Rpb24oKXtyZXR1cm4hMX0pLHEuY3NzKHtkaXNwbGF5OiJibG9jayIsaGVpZ2h0OiJub25lIixvcGFjaXR5OiIwLjAwNSIsInotaW5kZXgiOkQueix3aWR0aDoiYXV0byJ9KSxELmdsb2JhbD9xLmNzcyh7cG9zaXRpb246ImZpeGVkIixsZWZ0OiI1MCUiLHRvcDpELnBvcy52eSsicHgiLGRpc3BsYXk6ImJsb2NrIixoZWlnaHQ6Im5vbmUiLG9wYWNpdHk6IjAuMDA1Iiwiei1pbmRleCI6RC56LHdpZHRoOiJhdXRvIiwibWFyZ2luLWxlZnQiOiItIisoKEQud2lkdGgrQSkvMikucm91bmQoMCkrInB4In0pOnEuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLGxlZnQ6RC5wb3MudngrInB4Iix0b3A6RC5wb3MudnkrInB4IixkaXNwbGF5OiJibG9jayIsaGVpZ2h0OiJub25lIixvcGFjaXR5OiIwLjAwNSIsInotaW5kZXgiOkQueix3aWR0aDoiYXV0byJ9KSxyLm15KEQubWFuaWZlc3QsRC5kYXRhKS50aGVuKGZ1bmN0aW9uKCl7dmFyIGEsYixjO2lmKGYoRCx7Zm9ybTpyLGJnOnQsY2FuY2VsOmZ1bmN0aW9uKCl7RSghMCl9LGNvbW1pdDpmdW5jdGlvbigpe0UoKX19KSxxLmRhdGEoIm1vZGFsIixEKSxELmhlaWdodD1xLm91dGVySGVpZ2h0KCksIm1hbmlmZXN0IiE9PUQuc291cmNlJiYoRC53aWR0aD1xLndpZHRoKCkpLEYoKSxxLmNzcyh7dG9wOkQucG9zLnZ5KyJweCJ9KSxHKCEwKSxxLnJlbW92ZUNsYXNzKCJteS1tb2RhbC1pbml0Iikscy5kYXRhKCJtb2RhbHMiKVtELmNpZF09RCxnW0QuY2lkXT13LHIub24oImNvbW1pdC5teSIsZnVuY3Rpb24oKXtyZXR1cm4gRC5jb21taXQuZGVsYXkoMzApLCExfSkub24oImNhbmNlbC5teSIsZnVuY3Rpb24oKXtyZXR1cm4gRC5jYW5jZWwuZGVsYXkoMzApLCExfSkscS5vbigibGF5b3V0Lm15IixmdW5jdGlvbigpe0coKX0uZGVib3VuY2UoMzApKSxELmdsb2JhbCYmKGU9eix4KGRvY3VtZW50LmJvZHkpLmNzcyh7b3ZlcmZsb3c6ImhpZGRlbiJ9KSksRC5nbG9iYWx8fCFELmVzYyYmIUQuZW50ZXJ8fHIub24oImtleWRvd24ubXkiLGZ1bmN0aW9uKGEpe3ZhciBiPWEua2V5Q29kZTtyZXR1cm4gMjc9PWImJkQuZXNjPyhELmNhbmNlbCgpLCExKToxMz09YiYmRC5lbnRlciYmIXgoYS50YXJnZXQpLmlzKCJ0ZXh0YXJlYSIpPyhELmNvbW1pdC5kZWxheSg1MCksITEpOnZvaWQgMH0pLCEwPT09RC5mb2N1cz8oYj0hMSxjPUQubWFuaWZlc3QudWksT2JqZWN0LmtleXMoY3x8e30pLmZvckVhY2goZnVuY3Rpb24oeCl7aWYoIWIpe3ZhciBhPXIuZmluZCh4KTthLmxlbmd0aCYmYS5pcygiaW5wdXQsIHRleHRhcmVhLCBidXR0b24iKSYmKGI9ITAsYS5mb2N1cygpKX19KSk6aihELmZvY3VzKSYmci5maW5kKEQuZm9jdXMpLmZvY3VzKCksKGE9ci5maW5kKCJpbWciKS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4iIiE9eCh0aGlzKS5hdHRyKCJzcmMiKX0pKS5sZW5ndGgpe3ZhciBkPWZ1bmN0aW9uKCl7Im1hbmlmZXN0IiE9PUQuc291cmNlJiZxLmNzcyh7d2lkdGg6ImF1dG8ifSksRygpfS5hZnRlcihhLmxlbmd0aCk7YS5lYWNoKGZ1bmN0aW9uKCl7eCh0aGlzKS5iaW5kKCJsb2FkIixkKX0pfUQuZHJhZyYmeC5mbi5kcmFnZ2FibGUmJihqKEQuZHJhZyk/cS5kcmFnZ2FibGUoe2hhbmRsZTpELmRyYWd9KTpxLmRyYWdnYWJsZSgpLEQubm9zZSYmcS5vbigiZHJhZ3N0YXJ0Lm15IixmdW5jdGlvbigpe3EucmVtb3ZlQ2xhc3MoIm5vc2UtIitELm5vc2UpfSkpLHEub24oIm1vdXNlZG93bi5teSIsZnVuY3Rpb24oYSl7dmFyIGI9W10sYz14KGEuY3VycmVudFRhcmdldCksZD1jLnBhcmVudCgpLGU9K2MuY3NzKCJ6LWluZGV4IiksZj1lO2QubGVuZ3RoJiYoZC5maW5kKCI+Lm15LW1vZGFsIikuZWFjaChmdW5jdGlvbihjLGQpe3ZhciBnPSt4KGQpLmNzcygiei1pbmRleCIpfHwwO2QhPWEuY3VycmVudFRhcmdldCYmZz49ZSYmYi5wdXNoKFtnLHgoZCldKSxnPmYmJihmPWcpfSksYi5mb3JFYWNoKGZ1bmN0aW9uKHgpe3hbMV0uY3NzKCJ6LWluZGV4Iix4WzBdLTErIiIpfSksYy5jc3MoInotaW5kZXgiLGYrIiIpKX0pLHcubm90aWZ5KCJSZWFkeSIpfSkuZmFpbChmdW5jdGlvbih4KXt0cnl7SCgpfWNhdGNoKHgpe316LmRhdGEoIm1vZGFsIixudWxsKSx3LnJlamVjdCh4KX0pLHopOihJKCJJbnZhbGlkIGRhdGEiKSx6KTooSSgiT2JqZWN0IG11c3QgYmUgdmlzaWJsZSIpLHopO2Z1bmN0aW9uIEUoeCl7aWYocj1ELmZvcm0sdD1ELmJnLHM9RC5yb290LEI9RC5kb25lLHU9ci5teSgiZGF0YSIpLHY9ITEseCl7dHJ5e0IuY2FsbChyLm15KCJtYW5pZmVzdCIpLG51bGwsbnVsbCl9Y2F0Y2goeCl7fXRyeXtoKHIpJiZIKCl9Y2F0Y2goeCl7fWlmKGgoeikmJnoucmVtb3ZlRGF0YSgibW9kYWwiKSxnW0QuY2lkXSl0cnl7Z1tELmNpZF0ucmVqZWN0KCJDYW5jZWxsZWQiKX1jYXRjaCh4KXt9ZGVsZXRlIGdbRC5jaWRdLEQ9bnVsbH1lbHNle3RyeXt2PUIuY2FsbChyLm15KCJtYW5pZmVzdCIpLHIubXkoInZhbGlkIik/bnVsbDpyLm15KCJlcnJvcnMiKSx1KX1jYXRjaCh4KXt9aWYoIXYpe3RyeXtoKHIpJiZIKCl9Y2F0Y2goeCl7fWgoeikmJnoucmVtb3ZlRGF0YSgibW9kYWwiKSxmdW5jdGlvbigpe2lmKGdbRC5jaWRdKXRyeXtnW0QuY2lkXS5yZXNvbHZlKHUpfWNhdGNoKHgpe31kZWxldGUgZ1tELmNpZF0sRD1udWxsfS5kZWxheSgwKX19fWZ1bmN0aW9uIEYoKXt2YXIgYSxiLGM9d2luZG93LGQ9ISFELmdsb2JhbCxlPXMub2Zmc2V0KCksZj16Lm9mZnNldCgpLGc9cy5zY3JvbGxUb3AoKTtELnBvcz17cHg6ZS5sZWZ0LHB5OmUudG9wLHB3OnMub3V0ZXJXaWR0aCgpLHBoOnMub3V0ZXJIZWlnaHQoKSxveDpmLmxlZnQsb3k6Zi50b3Asb3c6ei5vdXRlcldpZHRoKCksb2g6ei5vdXRlckhlaWdodCgpLHd3OmIsd2g6YX07dmFyIGg9MSooRC54Lm1hdGNoKC9cLT9cZCsoXC5cZCspPy8pfHxbMF0pWzBdLGk9MSooRC55Lm1hdGNoKC9cLT9cZCsoXC5cZCspPy8pfHxbMF0pWzBdLGo9RC54LmhhcygibGVmdCIpPy0xOkQueC5oYXMoInJpZ2h0Iik/MTowLGs9RC55LmhhcygidG9wIik/LTE6RC55LmhhcygiYm90dG9tIik/MTowLG09RC5wb3Mub3grRC5wb3Mub3cvMi1ELnBvcy5weCxuPUQucG9zLm95K0QucG9zLm9oLzItRC5wb3MucHk7aWYoZCYmKEQucG9zLndoPWE9Yy5pbm5lckhlaWdodHx8eChjKS5oZWlnaHQoKSxELnBvcy53dz1iPWMuaW5uZXJXaWR0aHx8eChjKS53aWR0aCgpLG09Yi8yLG49YS8yLjUpLGg9RC54LmhhcygiJSIpP0QucG9zLm93LzEwMCpoOmgsaT1ELnkuaGFzKCIlIik/RC5wb3Mub2gvMTAwKmk6aSxELnBvcy5waXg9bSxELnBvcy5waXk9bixtPW0raiooRC5wb3Mub3cvMikraCooaj4wPy0xOjEpLShELndpZHRoK0EpKihqKzEpLzIsZD8obj0oYS1ELmhlaWdodC0yMCkvMyk8MTAmJihuPTEwKTpuPW4rayooRC5wb3Mub2gvMikraSooaz4wPy0xOjEpLShELmhlaWdodHx8MCkqKGsrMSkvMixtPW0ucm91bmQoMSksbj0obitnKS5yb3VuZCgxKSxELnBvcy52eD1tLEQucG9zLnZ5PW4sITEhPT1ELmJvdW5kJiYhRC5nbG9iYWwpe3ZhciBvPShsKEQuYm91bmQpP0QuYm91bmQ6MCkuY2xhbXAoLTEwMCwxMDApO0QucG9zLnB3LTIqbzxELndpZHRoK0E/RC5wb3Mudng9LShELndpZHRoK0EtRC5wb3MucHcpLzI6RC5wb3MudngrRC53aWR0aCtBPkQucG9zLnB3LW8/RC5wb3Mudng9RC5wb3MucHctby1ELndpZHRoLUE6RC5wb3Mudng8byYmKEQucG9zLnZ4PW8pLEQucG9zLnBoLTIqbzxELmhlaWdodD8oRC5wb3Mudnk9byxELmhlaWdodD1ELnBvcy5waC0yKm8pOkQucG9zLnZ5K0QuaGVpZ2h0PkQucG9zLnBoLW8/RC5wb3Mudnk9RC5wb3MucGgtby1ELmhlaWdodDpELnBvcy52eTxvJiYoRC5wb3Mudnk9byl9fWZ1bmN0aW9uIEcoYSl7aWYoYXx8KEQuaGVpZ2h0PXEub3V0ZXJIZWlnaHQoKSwibWFuaWZlc3QiIT09RC5zb3VyY2UmJihELndpZHRoPXEud2lkdGgoKSksRigpKSxxLmNzcyh7d2lkdGg6RC53aWR0aCtBKyJweCIsZGlzcGxheToiYmxvY2sifSksRC5nbG9iYWwpcS5jc3Moe2xlZnQ6IjUwJSIsIm1hcmdpbi1sZWZ0IjoiLSIrKChELndpZHRoK0EpLzIpLnJvdW5kKDApKyJweCJ9KTtlbHNlIGlmKHEuY3NzKHtsZWZ0OkQucG9zLnZ4KyJweCJ9KSxELm5vc2Upe3goInN0eWxlI215LW1vZGFsLXN0eWxlLSIrRC5jaWQpLmxlbmd0aHx8cS5hcHBlbmQoJzxzdHlsZSBpZD0ibXktbW9kYWwtc3R5bGUtJytELmNpZCsnIj48L3N0eWxlPicpO3ZhciBiPSIiLGM9eCgic3R5bGUjbXktbW9kYWwtc3R5bGUtIitELmNpZCk7InRvcCI9PUQubm9zZXx8ImJvdHRvbSI9PUQubm9zZT8oYis9ImRpdi5teS1tb2RhbC0iK0QuY2lkKyIubm9zZS0iK0Qubm9zZSsiOmJlZm9yZSB7bGVmdDoiKyhELnBvcy5veC1ELnBvcy5weCtELnBvcy5vdy8yLUQucG9zLnZ4KSsicHghaW1wb3J0YW50O30iLGMudGV4dChiKSk6ImxlZnQiIT1ELm5vc2UmJiJyaWdodCIhPUQubm9zZXx8KGIrPSJkaXYubXktbW9kYWwtIitELmNpZCsiLm5vc2UtIitELm5vc2UrIjpiZWZvcmUge3RvcDoiKyhELnBvcy5veS1ELnBvcy5weStELnBvcy5vaC8yLUQucG9zLnZ5KSsicHghaW1wb3J0YW50O30iLGMudGV4dChiKSl9RC5zY3JlZW4/RC5nbG9iYWw/KHQuY3NzKHt0b3A6MCxsZWZ0OjAsd2lkdGg6IjEwMCUiLGhlaWdodDoiMTAwJSIsZGlzcGxheToiYmxvY2siLHBvc2l0aW9uOiJmaXhlZCIsInotaW5kZXgiOkQuei0xfSksaihELnNjcmVlbik/dC5jc3Moe2JhY2tncm91bmQ6RC5zY3JlZW4/RC5zY3JlZW46InJnYmEoMTgsNDEsNzIsMC44OCkifSk6dC5jc3Moe2JhY2tncm91bmQ6RC5zY3JlZW4/InJnYmEoMTgsNDEsNzIsMC44OCkiOiIifSkpOnQuY3NzKHt0b3A6MCxsZWZ0OjAscG9zaXRpb246ImFic29sdXRlIix3aWR0aDp0LnBhcmVudCgpLm91dGVyV2lkdGgoKSsicHgiLGhlaWdodDp0LnBhcmVudCgpLm91dGVySGVpZ2h0KCkrInB4IixkaXNwbGF5OiJibG9jayIsYmFja2dyb3VuZDpqKEQuc2NyZWVuKT9ELnNjcmVlbjoicmdiYSgyNTUsMjU1LDI1NSwwLjYpIiwiei1pbmRleCI6RC56LTF9KTp0Lmxlbmd0aCYmdC5oaWRlKCksRC5oZWlnaHQ+RC5wb3Mud2g/KHEuaGVpZ2h0KEQucG9zLndoLTMwKSxyLmNzcyh7Im92ZXJmbG93LXkiOiJzY3JvbGwifSkpOnIuY3NzKHsib3ZlcmZsb3cteSI6IiJ9KSxxLmFuaW1hdGUoe3RvcDpELnBvcy52eSsicHgiLG9wYWNpdHk6IjEifSxELmFuaW1hdGUpfWZ1bmN0aW9uIEgoKXt0cnl7ci5teSgicmVtb3ZlIil9Y2F0Y2goeCl7fXRyeXtzLmRhdGEoIm1vZGFscyIpW0QuY2lkXT1udWxsfWNhdGNoKHgpe31yLnBhcmVudCgpLm9mZigiLm15IikucmVtb3ZlKCksaCh0KSYmdC5vZmYoIi5teSIrRC5jaWQpLEQuc2NyZWVuJiZoKHQpJiZmdW5jdGlvbih4KXt4JiZlfHx0LmhpZGUoKSx4JiYhZSYmdC5jc3Moe2JhY2tncm91bmQ6InJnYmEoMTgsNDEsNzIsMC44OCkifSl9LmRlbGF5KDUwLEQuZ2xvYmFsKSxELmdsb2JhbCYmKGU9ITEseChkb2N1bWVudC5ib2R5KS5jc3Moe292ZXJmbG93OiIifSkpfWZ1bmN0aW9uIEkoeCl7dHJ5e0IobnVsbCxudWxsKX1jYXRjaCh4KXt9KGZ1bmN0aW9uKCl7dy5yZWplY3QoeCl9KS5kZWxheSgwKX19fShqUXVlcnkpOwoKLypqUXVlcnkgVGFncyAwLjUsIChjKSBlcm1vdXRoKi8KIWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYSxiKXt2YXIgYyxkPTAsZT1hLmRhdGEoInRhZ3MiKTtpZihlLmRhdGE9W10sYi5sZW5ndGgpe3ZhciBmPWIudW5pcXVlKCk7Zm9yKGUudHY9e30sYS5maW5kKCIudGFnLmFjdGl2ZSIpLnRyaWdnZXIoImNsaWNrIiksYz0wO2M8Zi5sZW5ndGg7YysrKWUudGlbZltjXV0mJihlLiR0W2ZbY11dLnRyaWdnZXIoImNsaWNrIiksZCs9MSl9ZHx8KG51bGwhPWUuZW1wdHk/YS5maW5kKCIudGFncy1lbXB0eSIpLnRyaWdnZXIoImNsaWNrIik6YS5maW5kKCIudGFnLmFjdGl2ZSIpLnRyaWdnZXIoImNsaWNrIikpfXZhciBjPShPYmplY3QuaXNBcnJheSxPYmplY3QuaXNCb29sZWFuLE9iamVjdC5pc1N0cmluZyksZD0oT2JqZWN0LmlzT2JqZWN0LE9iamVjdC5pc051bWJlciksZT0oT2JqZWN0LmlzUmVnRXhwLE9iamVjdC5pc0Z1bmN0aW9uLGEudHlwZSx7aW5pdDpmdW5jdGlvbihlKXt2YXIgZixnLGgsaSxqLGssbCxtLG4sbyxwLHE9YSh0aGlzKSxyPVtdLHM9W10sdD17fSx1PXt9LHY9e30sdz17ZGF0YTpbXSx0YWdzOltdLGRpc2FibGVkOiExLGV2ZW50OiJjaGFuZ2UiLHRhZ2NzczoidGFnIHBzZXVkb2xpbmsgIix0ZW1wbGF0ZTpmdW5jdGlvbihhKXtyZXR1cm4oJzxzcGFuIGNsYXNzPSInK3cudGFnY3NzKycge2Nzc30iIGRhdGEtdmFsdWU9Int2YWx1ZX0iPntuYW1lfTwvc3Bhbj4nKS5hc3NpZ24oYSl9LGVtcHR5Om51bGwsdGFnc2hpbToiICIsZ3JvdXBzaGltOiIgIixzaWxlbnQ6ITF9LHg9YS50eXBlKGUpLHk9bnVsbDtmb3IoIm9iamVjdCI9PXg/YS5leHRlbmQoITAsdyxlKToiYXJyYXkiPT14JiYody50YWdzPWUuc2xpY2UoMCkpLHEuZGF0YSgidGFncyIpJiYody5kYXRhPXEuZGF0YSgidGFncyIpLmRhdGEuc2xpY2UoMCkpLG51bGwhPXcuZW1wdHkmJihsPXcuZW1wdHkseD1hLnR5cGUobCkscD0iIiwvXm51fF5zdHIvLnRlc3QoeCk/KGs9IiIsaj1sKyIiKToib2JqZWN0Ij09eCYmKGMobC5uYW1lKSYmKGMobC52YWx1ZSl8fGQobC52YWx1ZSkpPyhqPWwubmFtZSsiIixrPWwudmFsdWUrIiIscD1sLmNzc3x8cCk6KGo9T2JqZWN0LmtleXMobClbMF0saz1sW2pdKyIiKSksYyhrKSYmKHk9ayx0W2tdPXtuYW1lOmosaTpudWxsLGo6bnVsbCx2YWx1ZTprKyIiLGNzczpwKyIgdGFncy1lbXB0eSJ9KSksZz13LnRhZ3Msaj0wO2o8Zy5sZW5ndGg7aisrKXtmb3IobD1nW2pdLGk9W10saD1bXSx4PWEudHlwZShsKSwvXm51bXxec3RyfF5vYi8udGVzdCh4KT9oPVtsXToiYXJyYXkiPT14JiYoaD1sLnNsaWNlKDApLnVuaXF1ZSgpKSxrPTA7azxoLmxlbmd0aDtrKyspaWYobT1oW2tdLG49YS50eXBlKG0pLC9ebnVtfF5zdHIvLnRlc3QobikpaS5wdXNoKHtuYW1lOm0rIiIsdmFsdWU6bSsiIixjc3M6IiJ9KTtlbHNlIGlmKCJvYmplY3QiPT1uKWlmKGMobS5uYW1lKSYmKGMobS52YWx1ZSl8fGQobS52YWx1ZSkpKWkucHVzaCh7bmFtZTptLm5hbWUrIiIsdmFsdWU6bS52YWx1ZSsiIixjc3M6YyhtLmNzcyk/bS5jc3M6IiJ9KTtlbHNlIGZvcihvIGluIG0paS5wdXNoKHtuYW1lOm8rIiIsdmFsdWU6bVtvXSsiIixjc3M6IiJ9KTtpLmxlbmd0aCYmcy5wdXNoKGkuc2xpY2UoMCkpfWZvcihqPTA7ajxzLmxlbmd0aDtqKyspe2ZvcihpPVtdLGs9MDtrPHNbal0ubGVuZ3RoO2srKylsPXNbal1ba10udmFsdWUsdFtsXXx8KHRbbF09ITAsaS5wdXNoKHNbal1ba10pKTtpLmxlbmd0aCYmci5wdXNoKGkuc2xpY2UoMCkpfWZvcihqPTA7ajxyLmxlbmd0aDtqKyspZm9yKGs9MDtrPHJbal0ubGVuZ3RoO2srKylsPXJbal1ba10udmFsdWUsdFtsXT17bmFtZTpyW2pdW2tdLm5hbWUsaTpqLGo6ayx2YWx1ZTpsLGNzczoocltqXVtrXS5jc3N8fCIiKSsiIHRhZ3Mtcm93IitqfTtmb3IoZj0iIixudWxsIT15JiYoZis9dy50ZW1wbGF0ZSh0W3ldKSt3Lmdyb3Vwc2hpbSksaj0wO2o8ci5sZW5ndGg7aisrKWZvcihqJiYoZis9dy5ncm91cHNoaW0pLGs9MDtrPHJbal0ubGVuZ3RoO2srKylrJiYoZis9dy50YWdzaGltKSxmKz13LnRlbXBsYXRlKHRbcltqXVtrXS52YWx1ZV0pO3JldHVybiBxLmh0bWwoZikscS5vZmYoIi50YWciKSxxLm9uKCJjbGljay50YWciLCIudGFnIixmdW5jdGlvbigpe3ZhciBiLGMsZD1hKHRoaXMpLGU9ZC5kYXRhKCJ2YWx1ZSIpO2lmKCF3LmRpc2FibGVkKXtpZihkLmlzKCIudGFncy1lbXB0eSIpKXEuZmluZCgiLnRhZyIpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKSx1PXt9LHkmJih1W3ldPSEwKSxkLmFkZENsYXNzKCJhY3RpdmUiKTtlbHNle2lmKGQuaXMoIi5hY3RpdmUiKSlkLnJlbW92ZUNsYXNzKCJhY3RpdmUiKSx1W2VdPSExO2Vsc2V7Zm9yKGI9dFtlXS5pLHEuZmluZCgiLnRhZy50YWdzLXJvdyIrYikucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpLGM9MDtjPHJbYl0ubGVuZ3RoO2MrKyl1W3JbYl1bY10udmFsdWVdPSExO2QuYWRkQ2xhc3MoImFjdGl2ZSIpLHVbZV09ITAseSYmKHVbeV09ITEpfU9iamVjdC52YWx1ZXModSkuY29tcGFjdCghMCkubGVuZ3RoP3EuZmluZCgiLnRhZ3MtZW1wdHkiKS5yZW1vdmVDbGFzcygiYWN0aXZlIik6KHU9e30seSYmKHVbeV09ITApLHEuZmluZCgiLnRhZ3MtZW1wdHkiKS5hZGRDbGFzcygiYWN0aXZlIikpfXcuZGF0YT1bXTtmb3IoYiBpbiB1KXVbYl0mJncuZGF0YS5wdXNoKGIpO3EuZGF0YSgidmFsdWUiLHcuZGF0YSksdy5zaWxlbnR8fHEudHJpZ2dlcigiY2hhbmdlIil9fSkscS5maW5kKCIudGFnIikuZWFjaChmdW5jdGlvbigpe3ZhciBiPWEodGhpcyksYz1iLmRhdGEoInZhbHVlIik7dltjXT1ifSksYS5leHRlbmQodyx7dGk6dCx0djp1LCR0OnZ9KSxxLmFkZENsYXNzKCJteS10YWdzIikuZGF0YSgidGFncyIsdyksdy5zaWxlbnQ9ITAsYihxLHcuZGF0YSksdy5zaWxlbnQ9ITEscX0sZGlzYWJsZTpmdW5jdGlvbihiKXt2b2lkIDAhPT1iJiYoYSh0aGlzKS5kYXRhKCJ0YWdzIikuZGlzYWJsZWQ9ISFiKX0sZGF0YTpmdW5jdGlvbihjKXt2YXIgZD1hKHRoaXMpLmRhdGEoInRhZ3MiKSxlPWM7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlJiYoZT1bY10pLGQmJmUmJiJhcnJheSI9PWEudHlwZShlKSYmIWQuZGlzYWJsZWQ/KGQuc2lsZW50PSEwLGIoYSh0aGlzKSxlKSxkLnNpbGVudD0hMSxhKHRoaXMpLmRhdGEoInRhZ3MiKS5kYXRhKTpkP2QuZGF0YTpbXX19KTthLmZuLnRhZ3M9ZnVuY3Rpb24oYil7cmV0dXJuIGVbYl0/ZVtiXS5hcHBseSh0aGlzLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSk6Im9iamVjdCIhPXR5cGVvZiBiJiZiPyhhLmVycm9yKCJNZXRob2QgIitiKyIgZG9lcyBub3QgZXhpc3QgaW4galF1ZXJ5LnRhZ3MiKSx2b2lkIDApOmUuaW5pdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fShqUXVlcnkpOwoKLypRLmpzLCAoYykgMjAwOS0yMDEyIEtyaXMgS293YWwqLwohZnVuY3Rpb24oYSl7InVzZSBzdHJpY3QiO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBib290c3RyYXApYm9vdHN0cmFwKCJwcm9taXNlIixhKTtlbHNlIGlmKCJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmIm9iamVjdCI9PXR5cGVvZiBtb2R1bGUpbW9kdWxlLmV4cG9ydHM9YSgpO2Vsc2UgaWYoImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZClkZWZpbmUoYSk7ZWxzZSBpZigidW5kZWZpbmVkIiE9dHlwZW9mIHNlcyl7aWYoIXNlcy5vaygpKXJldHVybjtzZXMubWFrZVE9YX1lbHNle2lmKCJ1bmRlZmluZWQiPT10eXBlb2Ygc2VsZil0aHJvdyBuZXcgRXJyb3IoIlRoaXMgZW52aXJvbm1lbnQgd2FzIG5vdCBhbnRpY2lhcHRlZCBieSBRLiBQbGVhc2UgZmlsZSBhIGJ1Zy4iKTtzZWxmLlE9YSgpfX0oZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYShhKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gVS5hcHBseShhLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIGIoYSl7cmV0dXJuIGE9PT1PYmplY3QoYSl9ZnVuY3Rpb24gYyhhKXtyZXR1cm4iW29iamVjdCBTdG9wSXRlcmF0aW9uXSI9PT1hYShhKXx8YSBpbnN0YW5jZW9mIFF9ZnVuY3Rpb24gZChhLGIpe2lmKE8mJmIuc3RhY2smJiJvYmplY3QiPT10eXBlb2YgYSYmbnVsbCE9PWEmJmEuc3RhY2smJmEuc3RhY2suaW5kZXhPZihiYSk9PT0tMSl7Zm9yKHZhciBjPVtdLGQ9YjtkO2Q9ZC5zb3VyY2UpZC5zdGFjayYmYy51bnNoaWZ0KGQuc3RhY2spO2MudW5zaGlmdChhLnN0YWNrKTt2YXIgZj1jLmpvaW4oIlxuIitiYSsiXG4iKTthLnN0YWNrPWUoZil9fWZ1bmN0aW9uIGUoYSl7Zm9yKHZhciBiPWEuc3BsaXQoIlxuIiksYz1bXSxkPTA7ZDxiLmxlbmd0aDsrK2Qpe3ZhciBlPWJbZF07aChlKXx8ZihlKXx8IWV8fGMucHVzaChlKX1yZXR1cm4gYy5qb2luKCJcbiIpfWZ1bmN0aW9uIGYoYSl7cmV0dXJuIGEuaW5kZXhPZigiKG1vZHVsZS5qczoiKSE9PS0xfHxhLmluZGV4T2YoIihub2RlLmpzOiIpIT09LTF9ZnVuY3Rpb24gZyhhKXt2YXIgYj0vYXQgLisgXCgoLispOihcZCspOig/OlxkKylcKSQvLmV4ZWMoYSk7aWYoYilyZXR1cm5bYlsxXSxOdW1iZXIoYlsyXSldO3ZhciBjPS9hdCAoW14gXSspOihcZCspOig/OlxkKykkLy5leGVjKGEpO2lmKGMpcmV0dXJuW2NbMV0sTnVtYmVyKGNbMl0pXTt2YXIgZD0vLipAKC4rKTooXGQrKSQvLmV4ZWMoYSk7cmV0dXJuIGQ/W2RbMV0sTnVtYmVyKGRbMl0pXTp2b2lkIDB9ZnVuY3Rpb24gaChhKXt2YXIgYj1nKGEpO2lmKCFiKXJldHVybiExO3ZhciBjPWJbMF0sZD1iWzFdO3JldHVybiBjPT09UCYmZD49UiYmZDw9ZmF9ZnVuY3Rpb24gaSgpe2lmKE8pdHJ5e3Rocm93IG5ldyBFcnJvcn1jYXRjaChkKXt2YXIgYT1kLnN0YWNrLnNwbGl0KCJcbiIpLGI9YVswXS5pbmRleE9mKCJAIik+MD9hWzFdOmFbMl0sYz1nKGIpO2lmKCFjKXJldHVybjtyZXR1cm4gUD1jWzBdLGNbMV19fWZ1bmN0aW9uIGooYSxiLGMpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgY29uc29sZSYmImZ1bmN0aW9uIj09dHlwZW9mIGNvbnNvbGUud2FybiYmY29uc29sZS53YXJuKGIrIiBpcyBkZXByZWNhdGVkLCB1c2UgIitjKyIgaW5zdGVhZC4iLG5ldyBFcnJvcigiIikuc3RhY2spLGEuYXBwbHkoYSxhcmd1bWVudHMpfX1mdW5jdGlvbiBrKGEpe3JldHVybiBhIGluc3RhbmNlb2Ygbz9hOnMoYSk/QihhKTpBKGEpfWZ1bmN0aW9uIGwoKXtmdW5jdGlvbiBhKGEpe2I9YSxmLnNvdXJjZT1hLFcoYyxmdW5jdGlvbihiLGMpe2submV4dFRpY2soZnVuY3Rpb24oKXthLnByb21pc2VEaXNwYXRjaC5hcHBseShhLGMpfSl9LHZvaWQgMCksYz12b2lkIDAsZD12b2lkIDB9dmFyIGIsYz1bXSxkPVtdLGU9WihsLnByb3RvdHlwZSksZj1aKG8ucHJvdG90eXBlKTtpZihmLnByb21pc2VEaXNwYXRjaD1mdW5jdGlvbihhLGUsZil7dmFyIGc9Vihhcmd1bWVudHMpO2M/KGMucHVzaChnKSwid2hlbiI9PT1lJiZmWzFdJiZkLnB1c2goZlsxXSkpOmsubmV4dFRpY2soZnVuY3Rpb24oKXtiLnByb21pc2VEaXNwYXRjaC5hcHBseShiLGcpfSl9LGYudmFsdWVPZj1mdW5jdGlvbigpe2lmKGMpcmV0dXJuIGY7dmFyIGE9cShiKTtyZXR1cm4gcihhKSYmKGI9YSksYX0sZi5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuIGI/Yi5pbnNwZWN0KCk6e3N0YXRlOiJwZW5kaW5nIn19LGsubG9uZ1N0YWNrU3VwcG9ydCYmTyl0cnl7dGhyb3cgbmV3IEVycm9yfWNhdGNoKGEpe2Yuc3RhY2s9YS5zdGFjay5zdWJzdHJpbmcoYS5zdGFjay5pbmRleE9mKCJcbiIpKzEpfXJldHVybiBlLnByb21pc2U9ZixlLnJlc29sdmU9ZnVuY3Rpb24oYyl7Ynx8YShrKGMpKX0sZS5mdWxmaWxsPWZ1bmN0aW9uKGMpe2J8fGEoQShjKSl9LGUucmVqZWN0PWZ1bmN0aW9uKGMpe2J8fGEoeihjKSl9LGUubm90aWZ5PWZ1bmN0aW9uKGEpe2J8fFcoZCxmdW5jdGlvbihiLGMpe2submV4dFRpY2soZnVuY3Rpb24oKXtjKGEpfSl9LHZvaWQgMCl9LGV9ZnVuY3Rpb24gbShhKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgYSl0aHJvdyBuZXcgVHlwZUVycm9yKCJyZXNvbHZlciBtdXN0IGJlIGEgZnVuY3Rpb24uIik7dmFyIGI9bCgpO3RyeXthKGIucmVzb2x2ZSxiLnJlamVjdCxiLm5vdGlmeSl9Y2F0Y2goYSl7Yi5yZWplY3QoYSl9cmV0dXJuIGIucHJvbWlzZX1mdW5jdGlvbiBuKGEpe3JldHVybiBtKGZ1bmN0aW9uKGIsYyl7Zm9yKHZhciBkPTAsZT1hLmxlbmd0aDtkPGU7ZCsrKWsoYVtkXSkudGhlbihiLGMpfSl9ZnVuY3Rpb24gbyhhLGIsYyl7dm9pZCAwPT09YiYmKGI9ZnVuY3Rpb24oYSl7cmV0dXJuIHoobmV3IEVycm9yKCJQcm9taXNlIGRvZXMgbm90IHN1cHBvcnQgb3BlcmF0aW9uOiAiK2EpKX0pLHZvaWQgMD09PWMmJihjPWZ1bmN0aW9uKCl7cmV0dXJue3N0YXRlOiJ1bmtub3duIn19KTt2YXIgZD1aKG8ucHJvdG90eXBlKTtpZihkLnByb21pc2VEaXNwYXRjaD1mdW5jdGlvbihjLGUsZil7dmFyIGc7dHJ5e2c9YVtlXT9hW2VdLmFwcGx5KGQsZik6Yi5jYWxsKGQsZSxmKX1jYXRjaChhKXtnPXooYSl9YyYmYyhnKX0sZC5pbnNwZWN0PWMsYyl7dmFyIGU9YygpOyJyZWplY3RlZCI9PT1lLnN0YXRlJiYoZC5leGNlcHRpb249ZS5yZWFzb24pLGQudmFsdWVPZj1mdW5jdGlvbigpe3ZhciBhPWMoKTtyZXR1cm4icGVuZGluZyI9PT1hLnN0YXRlfHwicmVqZWN0ZWQiPT09YS5zdGF0ZT9kOmEudmFsdWV9fXJldHVybiBkfWZ1bmN0aW9uIHAoYSxiLGMsZCl7cmV0dXJuIGsoYSkudGhlbihiLGMsZCl9ZnVuY3Rpb24gcShhKXtpZihyKGEpKXt2YXIgYj1hLmluc3BlY3QoKTtpZigiZnVsZmlsbGVkIj09PWIuc3RhdGUpcmV0dXJuIGIudmFsdWV9cmV0dXJuIGF9ZnVuY3Rpb24gcihhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIG99ZnVuY3Rpb24gcyhhKXtyZXR1cm4gYihhKSYmImZ1bmN0aW9uIj09dHlwZW9mIGEudGhlbn1mdW5jdGlvbiB0KGEpe3JldHVybiByKGEpJiYicGVuZGluZyI9PT1hLmluc3BlY3QoKS5zdGF0ZX1mdW5jdGlvbiB1KGEpe3JldHVybiFyKGEpfHwiZnVsZmlsbGVkIj09PWEuaW5zcGVjdCgpLnN0YXRlfWZ1bmN0aW9uIHYoYSl7cmV0dXJuIHIoYSkmJiJyZWplY3RlZCI9PT1hLmluc3BlY3QoKS5zdGF0ZX1mdW5jdGlvbiB3KCl7Y2EubGVuZ3RoPTAsZGEubGVuZ3RoPTAsZWF8fChlYT0hMCl9ZnVuY3Rpb24geChhLGIpe2VhJiYoZGEucHVzaChhKSxiJiYidW5kZWZpbmVkIiE9dHlwZW9mIGIuc3RhY2s/Y2EucHVzaChiLnN0YWNrKTpjYS5wdXNoKCIobm8gc3RhY2spICIrYikpfWZ1bmN0aW9uIHkoYSl7aWYoZWEpe3ZhciBiPVgoZGEsYSk7YiE9PS0xJiYoZGEuc3BsaWNlKGIsMSksY2Euc3BsaWNlKGIsMSkpfX1mdW5jdGlvbiB6KGEpe3ZhciBiPW8oe3doZW46ZnVuY3Rpb24oYil7cmV0dXJuIGImJnkodGhpcyksYj9iKGEpOnRoaXN9fSxmdW5jdGlvbigpe3JldHVybiB0aGlzfSxmdW5jdGlvbigpe3JldHVybntzdGF0ZToicmVqZWN0ZWQiLHJlYXNvbjphfX0pO3JldHVybiB4KGIsYSksYn1mdW5jdGlvbiBBKGEpe3JldHVybiBvKHt3aGVuOmZ1bmN0aW9uKCl7cmV0dXJuIGF9LGdldDpmdW5jdGlvbihiKXtyZXR1cm4gYVtiXX0sc2V0OmZ1bmN0aW9uKGIsYyl7YVtiXT1jfSxkZWxldGU6ZnVuY3Rpb24oYil7ZGVsZXRlIGFbYl19LHBvc3Q6ZnVuY3Rpb24oYixjKXtyZXR1cm4gbnVsbD09PWJ8fHZvaWQgMD09PWI/YS5hcHBseSh2b2lkIDAsYyk6YVtiXS5hcHBseShhLGMpfSxhcHBseTpmdW5jdGlvbihiLGMpe3JldHVybiBhLmFwcGx5KGIsYyl9LGtleXM6ZnVuY3Rpb24oKXtyZXR1cm4gXyhhKX19LHZvaWQgMCxmdW5jdGlvbigpe3JldHVybntzdGF0ZToiZnVsZmlsbGVkIix2YWx1ZTphfX0pfWZ1bmN0aW9uIEIoYSl7dmFyIGI9bCgpO3JldHVybiBrLm5leHRUaWNrKGZ1bmN0aW9uKCl7dHJ5e2EudGhlbihiLnJlc29sdmUsYi5yZWplY3QsYi5ub3RpZnkpfWNhdGNoKGEpe2IucmVqZWN0KGEpfX0pLGIucHJvbWlzZX1mdW5jdGlvbiBDKGEpe3JldHVybiBvKHtpc0RlZjpmdW5jdGlvbigpe319LGZ1bmN0aW9uKGIsYyl7cmV0dXJuIEkoYSxiLGMpfSxmdW5jdGlvbigpe3JldHVybiBrKGEpLmluc3BlY3QoKX0pfWZ1bmN0aW9uIEQoYSxiLGMpe3JldHVybiBrKGEpLnNwcmVhZChiLGMpfWZ1bmN0aW9uIEUoYSl7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYihhLGIpe3ZhciBnO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgU3RvcEl0ZXJhdGlvbil7dHJ5e2c9ZFthXShiKX1jYXRjaChhKXtyZXR1cm4geihhKX1yZXR1cm4gZy5kb25lP2soZy52YWx1ZSk6cChnLnZhbHVlLGUsZil9dHJ5e2c9ZFthXShiKX1jYXRjaChhKXtyZXR1cm4gYyhhKT9rKGEudmFsdWUpOnooYSl9cmV0dXJuIHAoZyxlLGYpfXZhciBkPWEuYXBwbHkodGhpcyxhcmd1bWVudHMpLGU9Yi5iaW5kKGIsIm5leHQiKSxmPWIuYmluZChiLCJ0aHJvdyIpO3JldHVybiBlKCl9fWZ1bmN0aW9uIEYoYSl7ay5kb25lKGsuYXN5bmMoYSkoKSl9ZnVuY3Rpb24gRyhhKXt0aHJvdyBuZXcgUShhKX1mdW5jdGlvbiBIKGEpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBEKFt0aGlzLEooYXJndW1lbnRzKV0sZnVuY3Rpb24oYixjKXtyZXR1cm4gYS5hcHBseShiLGMpfSl9fWZ1bmN0aW9uIEkoYSxiLGMpe3JldHVybiBrKGEpLmRpc3BhdGNoKGIsYyl9ZnVuY3Rpb24gSihhKXtyZXR1cm4gcChhLGZ1bmN0aW9uKGEpe3ZhciBiPTAsYz1sKCk7cmV0dXJuIFcoYSxmdW5jdGlvbihkLGUsZil7dmFyIGc7cihlKSYmImZ1bGZpbGxlZCI9PT0oZz1lLmluc3BlY3QoKSkuc3RhdGU/YVtmXT1nLnZhbHVlOigrK2IscChlLGZ1bmN0aW9uKGQpe2FbZl09ZCwwPT09LS1iJiZjLnJlc29sdmUoYSl9LGMucmVqZWN0LGZ1bmN0aW9uKGEpe2Mubm90aWZ5KHtpbmRleDpmLHZhbHVlOmF9KX0pKX0sdm9pZCAwKSwwPT09YiYmYy5yZXNvbHZlKGEpLGMucHJvbWlzZX0pfWZ1bmN0aW9uIEsoYSl7cmV0dXJuIHAoYSxmdW5jdGlvbihhKXtyZXR1cm4gYT1ZKGEsaykscChKKFkoYSxmdW5jdGlvbihhKXtyZXR1cm4gcChhLFMsUyl9KSksZnVuY3Rpb24oKXtyZXR1cm4gYX0pfSl9ZnVuY3Rpb24gTChhKXtyZXR1cm4gayhhKS5hbGxTZXR0bGVkKCl9ZnVuY3Rpb24gTShhLGIpe3JldHVybiBrKGEpLnRoZW4odm9pZCAwLHZvaWQgMCxiKX1mdW5jdGlvbiBOKGEsYil7cmV0dXJuIGsoYSkubm9kZWlmeShiKX12YXIgTz0hMTt0cnl7dGhyb3cgbmV3IEVycm9yfWNhdGNoKGEpe089ISFhLnN0YWNrfXZhciBQLFEsUj1pKCksUz1mdW5jdGlvbigpe30sVD1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoKXtmb3IoO2IubmV4dDspe2I9Yi5uZXh0O3ZhciBjPWIudGFzaztiLnRhc2s9dm9pZCAwO3ZhciBlPWIuZG9tYWluO2UmJihiLmRvbWFpbj12b2lkIDAsZS5lbnRlcigpKTt0cnl7YygpfWNhdGNoKGIpe2lmKGYpdGhyb3cgZSYmZS5leGl0KCksc2V0VGltZW91dChhLDApLGUmJmUuZW50ZXIoKSxiO3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0aHJvdyBifSwwKX1lJiZlLmV4aXQoKX1kPSExfXZhciBiPXt0YXNrOnZvaWQgMCxuZXh0Om51bGx9LGM9YixkPSExLGU9dm9pZCAwLGY9ITE7aWYoVD1mdW5jdGlvbihhKXtjPWMubmV4dD17dGFzazphLGRvbWFpbjpmJiZwcm9jZXNzLmRvbWFpbixuZXh0Om51bGx9LGR8fChkPSEwLGUoKSl9LCJ1bmRlZmluZWQiIT10eXBlb2YgcHJvY2VzcyYmcHJvY2Vzcy5uZXh0VGljaylmPSEwLGU9ZnVuY3Rpb24oKXtwcm9jZXNzLm5leHRUaWNrKGEpfTtlbHNlIGlmKCJmdW5jdGlvbiI9PXR5cGVvZiBzZXRJbW1lZGlhdGUpZT0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz9zZXRJbW1lZGlhdGUuYmluZCh3aW5kb3csYSk6ZnVuY3Rpb24oKXtzZXRJbW1lZGlhdGUoYSl9O2Vsc2UgaWYoInVuZGVmaW5lZCIhPXR5cGVvZiBNZXNzYWdlQ2hhbm5lbCl7dmFyIGc9bmV3IE1lc3NhZ2VDaGFubmVsO2cucG9ydDEub25tZXNzYWdlPWZ1bmN0aW9uKCl7ZT1oLGcucG9ydDEub25tZXNzYWdlPWEsYSgpfTt2YXIgaD1mdW5jdGlvbigpe2cucG9ydDIucG9zdE1lc3NhZ2UoMCl9O2U9ZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGEsMCksaCgpfX1lbHNlIGU9ZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGEsMCl9O3JldHVybiBUfSgpLFU9RnVuY3Rpb24uY2FsbCxWPWEoQXJyYXkucHJvdG90eXBlLnNsaWNlKSxXPWEoQXJyYXkucHJvdG90eXBlLnJlZHVjZXx8ZnVuY3Rpb24oYSxiKXt2YXIgYz0wLGQ9dGhpcy5sZW5ndGg7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpZm9yKDs7KXtpZihjIGluIHRoaXMpe2I9dGhpc1tjKytdO2JyZWFrfWlmKCsrYz49ZCl0aHJvdyBuZXcgVHlwZUVycm9yfWZvcig7YzxkO2MrKyljIGluIHRoaXMmJihiPWEoYix0aGlzW2NdLGMpKTtyZXR1cm4gYn0pLFg9YShBcnJheS5wcm90b3R5cGUuaW5kZXhPZnx8ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTA7Yjx0aGlzLmxlbmd0aDtiKyspaWYodGhpc1tiXT09PWEpcmV0dXJuIGI7cmV0dXJuLTF9KSxZPWEoQXJyYXkucHJvdG90eXBlLm1hcHx8ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLGQ9W107cmV0dXJuIFcoYyxmdW5jdGlvbihlLGYsZyl7ZC5wdXNoKGEuY2FsbChiLGYsZyxjKSl9LHZvaWQgMCksZH0pLFo9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYigpe31yZXR1cm4gYi5wcm90b3R5cGU9YSxuZXcgYn0sJD1hKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkpLF89T2JqZWN0LmtleXN8fGZ1bmN0aW9uKGEpe3ZhciBiPVtdO2Zvcih2YXIgYyBpbiBhKSQoYSxjKSYmYi5wdXNoKGMpO3JldHVybiBifSxhYT1hKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcpO1E9InVuZGVmaW5lZCIhPXR5cGVvZiBSZXR1cm5WYWx1ZT9SZXR1cm5WYWx1ZTpmdW5jdGlvbihhKXt0aGlzLnZhbHVlPWF9O3ZhciBiYT0iRnJvbSBwcmV2aW91cyBldmVudDoiO2sucmVzb2x2ZT1rLGsubmV4dFRpY2s9VCxrLmxvbmdTdGFja1N1cHBvcnQ9ITEsIm9iamVjdCI9PXR5cGVvZiBwcm9jZXNzJiZwcm9jZXNzJiZwcm9jZXNzLmVudiYmcHJvY2Vzcy5lbnYuUV9ERUJVRyYmKGsubG9uZ1N0YWNrU3VwcG9ydD0hMCksay5kZWZlcj1sLGwucHJvdG90eXBlLm1ha2VOb2RlUmVzb2x2ZXI9ZnVuY3Rpb24oKXt2YXIgYT10aGlzO3JldHVybiBmdW5jdGlvbihiLGMpe2I/YS5yZWplY3QoYik6YXJndW1lbnRzLmxlbmd0aD4yP2EucmVzb2x2ZShWKGFyZ3VtZW50cywxKSk6YS5yZXNvbHZlKGMpfX0say5Qcm9taXNlPW0say5wcm9taXNlPW0sbS5yYWNlPW4sbS5hbGw9SixtLnJlamVjdD16LG0ucmVzb2x2ZT1rLGsucGFzc0J5Q29weT1mdW5jdGlvbihhKXtyZXR1cm4gYX0sby5wcm90b3R5cGUucGFzc0J5Q29weT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxrLmpvaW49ZnVuY3Rpb24oYSxiKXtyZXR1cm4gayhhKS5qb2luKGIpfSxvLnByb3RvdHlwZS5qb2luPWZ1bmN0aW9uKGEpe3JldHVybiBrKFt0aGlzLGFdKS5zcHJlYWQoZnVuY3Rpb24oYSxiKXtpZihhPT09YilyZXR1cm4gYTt0aHJvdyBuZXcgRXJyb3IoIkNhbid0IGpvaW46IG5vdCB0aGUgc2FtZTogIithKyIgIitiKX0pfSxrLnJhY2U9bixvLnByb3RvdHlwZS5yYWNlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGhlbihrLnJhY2UpfSxrLm1ha2VQcm9taXNlPW8sby5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBQcm9taXNlXSJ9LG8ucHJvdG90eXBlLnRoZW49ZnVuY3Rpb24oYSxiLGMpe2Z1bmN0aW9uIGUoYil7dHJ5e3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBhP2EoYik6Yn1jYXRjaChhKXtyZXR1cm4geihhKX19ZnVuY3Rpb24gZihhKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgYil7ZChhLGgpO3RyeXtyZXR1cm4gYihhKX1jYXRjaChhKXtyZXR1cm4geihhKX19cmV0dXJuIHooYSl9ZnVuY3Rpb24gZyhhKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgYz9jKGEpOmF9dmFyIGg9dGhpcyxpPWwoKSxqPSExO3JldHVybiBrLm5leHRUaWNrKGZ1bmN0aW9uKCl7aC5wcm9taXNlRGlzcGF0Y2goZnVuY3Rpb24oYSl7anx8KGo9ITAsaS5yZXNvbHZlKGUoYSkpKX0sIndoZW4iLFtmdW5jdGlvbihhKXtqfHwoaj0hMCxpLnJlc29sdmUoZihhKSkpfV0pfSksaC5wcm9taXNlRGlzcGF0Y2godm9pZCAwLCJ3aGVuIixbdm9pZCAwLGZ1bmN0aW9uKGEpe3ZhciBiLGM9ITE7dHJ5e2I9ZyhhKX1jYXRjaChhKXtpZihjPSEwLCFrLm9uZXJyb3IpdGhyb3cgYTtrLm9uZXJyb3IoYSl9Y3x8aS5ub3RpZnkoYil9XSksaS5wcm9taXNlfSxrLnRhcD1mdW5jdGlvbihhLGIpe3JldHVybiBrKGEpLnRhcChiKX0sby5wcm90b3R5cGUudGFwPWZ1bmN0aW9uKGEpe3JldHVybiBhPWsoYSksdGhpcy50aGVuKGZ1bmN0aW9uKGIpe3JldHVybiBhLmZjYWxsKGIpLnRoZW5SZXNvbHZlKGIpfSl9LGsud2hlbj1wLG8ucHJvdG90eXBlLnRoZW5SZXNvbHZlPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gYX0pfSxrLnRoZW5SZXNvbHZlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGsoYSkudGhlblJlc29sdmUoYil9LG8ucHJvdG90eXBlLnRoZW5SZWplY3Q9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMudGhlbihmdW5jdGlvbigpe3Rocm93IGF9KX0say50aGVuUmVqZWN0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIGsoYSkudGhlblJlamVjdChiKX0say5uZWFyZXI9cSxrLmlzUHJvbWlzZT1yLGsuaXNQcm9taXNlQWxpa2U9cyxrLmlzUGVuZGluZz10LG8ucHJvdG90eXBlLmlzUGVuZGluZz1mdW5jdGlvbigpe3JldHVybiJwZW5kaW5nIj09PXRoaXMuaW5zcGVjdCgpLnN0YXRlfSxrLmlzRnVsZmlsbGVkPXUsby5wcm90b3R5cGUuaXNGdWxmaWxsZWQ9ZnVuY3Rpb24oKXtyZXR1cm4iZnVsZmlsbGVkIj09PXRoaXMuaW5zcGVjdCgpLnN0YXRlfSxrLmlzUmVqZWN0ZWQ9dixvLnByb3RvdHlwZS5pc1JlamVjdGVkPWZ1bmN0aW9uKCl7cmV0dXJuInJlamVjdGVkIj09PXRoaXMuaW5zcGVjdCgpLnN0YXRlfTt2YXIgY2E9W10sZGE9W10sZWE9ITA7ay5yZXNldFVuaGFuZGxlZFJlamVjdGlvbnM9dyxrLmdldFVuaGFuZGxlZFJlYXNvbnM9ZnVuY3Rpb24oKXtyZXR1cm4gY2Euc2xpY2UoKX0say5zdG9wVW5oYW5kbGVkUmVqZWN0aW9uVHJhY2tpbmc9ZnVuY3Rpb24oKXt3KCksZWE9ITF9LHcoKSxrLnJlamVjdD16LGsuZnVsZmlsbD1BLGsubWFzdGVyPUMsay5zcHJlYWQ9RCxvLnByb3RvdHlwZS5zcHJlYWQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5hbGwoKS50aGVuKGZ1bmN0aW9uKGIpe3JldHVybiBhLmFwcGx5KHZvaWQgMCxiKX0sYil9LGsuYXN5bmM9RSxrLnNwYXduPUYsay5yZXR1cm49RyxrLnByb21pc2VkPUgsay5kaXNwYXRjaD1JLG8ucHJvdG90eXBlLmRpc3BhdGNoPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcyxkPWwoKTtyZXR1cm4gay5uZXh0VGljayhmdW5jdGlvbigpe2MucHJvbWlzZURpc3BhdGNoKGQucmVzb2x2ZSxhLGIpfSksZC5wcm9taXNlfSxrLmdldD1mdW5jdGlvbihhLGIpe3JldHVybiBrKGEpLmRpc3BhdGNoKCJnZXQiLFtiXSl9LG8ucHJvdG90eXBlLmdldD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5kaXNwYXRjaCgiZ2V0IixbYV0pfSxrLnNldD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGsoYSkuZGlzcGF0Y2goInNldCIsW2IsY10pfSxvLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5kaXNwYXRjaCgic2V0IixbYSxiXSl9LGsuZGVsPWsuZGVsZXRlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGsoYSkuZGlzcGF0Y2goImRlbGV0ZSIsW2JdKX0sby5wcm90b3R5cGUuZGVsPW8ucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5kaXNwYXRjaCgiZGVsZXRlIixbYV0pfSxrLm1hcHBseT1rLnBvc3Q9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBrKGEpLmRpc3BhdGNoKCJwb3N0IixbYixjXSl9LG8ucHJvdG90eXBlLm1hcHBseT1vLnByb3RvdHlwZS5wb3N0PWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuZGlzcGF0Y2goInBvc3QiLFthLGJdKX0say5zZW5kPWsubWNhbGw9ay5pbnZva2U9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gayhhKS5kaXNwYXRjaCgicG9zdCIsW2IsVihhcmd1bWVudHMsMildKX0sby5wcm90b3R5cGUuc2VuZD1vLnByb3RvdHlwZS5tY2FsbD1vLnByb3RvdHlwZS5pbnZva2U9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZGlzcGF0Y2goInBvc3QiLFthLFYoYXJndW1lbnRzLDEpXSl9LGsuZmFwcGx5PWZ1bmN0aW9uKGEsYil7cmV0dXJuIGsoYSkuZGlzcGF0Y2goImFwcGx5Iixbdm9pZCAwLGJdKX0sby5wcm90b3R5cGUuZmFwcGx5PWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmRpc3BhdGNoKCJhcHBseSIsW3ZvaWQgMCxhXSl9LGsudHJ5PWsuZmNhbGw9ZnVuY3Rpb24oYSl7cmV0dXJuIGsoYSkuZGlzcGF0Y2goImFwcGx5Iixbdm9pZCAwLFYoYXJndW1lbnRzLDEpXSl9LG8ucHJvdG90eXBlLmZjYWxsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGlzcGF0Y2goImFwcGx5Iixbdm9pZCAwLFYoYXJndW1lbnRzKV0pfSxrLmZiaW5kPWZ1bmN0aW9uKGEpe3ZhciBiPWsoYSksYz1WKGFyZ3VtZW50cywxKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYi5kaXNwYXRjaCgiYXBwbHkiLFt0aGlzLGMuY29uY2F0KFYoYXJndW1lbnRzKSldKX19LG8ucHJvdG90eXBlLmZiaW5kPWZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiPVYoYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gYS5kaXNwYXRjaCgiYXBwbHkiLFt0aGlzLGIuY29uY2F0KFYoYXJndW1lbnRzKSldKX19LGsua2V5cz1mdW5jdGlvbihhKXtyZXR1cm4gayhhKS5kaXNwYXRjaCgia2V5cyIsW10pfSxvLnByb3RvdHlwZS5rZXlzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGlzcGF0Y2goImtleXMiLFtdKX0say5hbGw9SixvLnByb3RvdHlwZS5hbGw9ZnVuY3Rpb24oKXtyZXR1cm4gSih0aGlzKX0say5hbGxSZXNvbHZlZD1qKEssImFsbFJlc29sdmVkIiwiYWxsU2V0dGxlZCIpLG8ucHJvdG90eXBlLmFsbFJlc29sdmVkPWZ1bmN0aW9uKCl7cmV0dXJuIEsodGhpcyl9LGsuYWxsU2V0dGxlZD1MLG8ucHJvdG90eXBlLmFsbFNldHRsZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50aGVuKGZ1bmN0aW9uKGEpe3JldHVybiBKKFkoYSxmdW5jdGlvbihhKXtmdW5jdGlvbiBiKCl7cmV0dXJuIGEuaW5zcGVjdCgpfXJldHVybiBhPWsoYSksYS50aGVuKGIsYil9KSl9KX0say5mYWlsPWsuY2F0Y2g9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gayhhKS50aGVuKHZvaWQgMCxiKX0sby5wcm90b3R5cGUuZmFpbD1vLnByb3RvdHlwZS5jYXRjaD1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy50aGVuKHZvaWQgMCxhKX0say5wcm9ncmVzcz1NLG8ucHJvdG90eXBlLnByb2dyZXNzPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnRoZW4odm9pZCAwLHZvaWQgMCxhKX0say5maW49ay5maW5hbGx5PWZ1bmN0aW9uKGEsYil7cmV0dXJuIGsoYSkuZmluYWxseShiKX0sby5wcm90b3R5cGUuZmluPW8ucHJvdG90eXBlLmZpbmFsbHk9ZnVuY3Rpb24oYSl7cmV0dXJuIGE9ayhhKSx0aGlzLnRoZW4oZnVuY3Rpb24oYil7cmV0dXJuIGEuZmNhbGwoKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIGJ9KX0sZnVuY3Rpb24oYil7cmV0dXJuIGEuZmNhbGwoKS50aGVuKGZ1bmN0aW9uKCl7dGhyb3cgYn0pfSl9LGsuZG9uZT1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gayhhKS5kb25lKGIsYyxkKX0sby5wcm90b3R5cGUuZG9uZT1mdW5jdGlvbihhLGIsYyl7dmFyIGU9ZnVuY3Rpb24oYSl7ay5uZXh0VGljayhmdW5jdGlvbigpe2lmKGQoYSxmKSwhay5vbmVycm9yKXRocm93IGE7ay5vbmVycm9yKGEpfSl9LGY9YXx8Ynx8Yz90aGlzLnRoZW4oYSxiLGMpOnRoaXM7Im9iamVjdCI9PXR5cGVvZiBwcm9jZXNzJiZwcm9jZXNzJiZwcm9jZXNzLmRvbWFpbiYmKGU9cHJvY2Vzcy5kb21haW4uYmluZChlKSksZi50aGVuKHZvaWQgMCxlKX0say50aW1lb3V0PWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gayhhKS50aW1lb3V0KGIsYyl9LG8ucHJvdG90eXBlLnRpbWVvdXQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz1sKCksZD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YiYmInN0cmluZyIhPXR5cGVvZiBifHwoYj1uZXcgRXJyb3IoYnx8IlRpbWVkIG91dCBhZnRlciAiK2ErIiBtcyIpLGIuY29kZT0iRVRJTUVET1VUIiksYy5yZWplY3QoYil9LGEpO3JldHVybiB0aGlzLnRoZW4oZnVuY3Rpb24oYSl7Y2xlYXJUaW1lb3V0KGQpLGMucmVzb2x2ZShhKX0sZnVuY3Rpb24oYSl7Y2xlYXJUaW1lb3V0KGQpLGMucmVqZWN0KGEpfSxjLm5vdGlmeSksYy5wcm9taXNlfSxrLmRlbGF5PWZ1bmN0aW9uKGEsYil7cmV0dXJuIHZvaWQgMD09PWImJihiPWEsYT12b2lkIDApLGsoYSkuZGVsYXkoYil9LG8ucHJvdG90eXBlLmRlbGF5PWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnRoZW4oZnVuY3Rpb24oYil7dmFyIGM9bCgpO3JldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yy5yZXNvbHZlKGIpfSxhKSxjLnByb21pc2V9KX0say5uZmFwcGx5PWZ1bmN0aW9uKGEsYil7cmV0dXJuIGsoYSkubmZhcHBseShiKX0sby5wcm90b3R5cGUubmZhcHBseT1mdW5jdGlvbihhKXt2YXIgYj1sKCksYz1WKGEpO3JldHVybiBjLnB1c2goYi5tYWtlTm9kZVJlc29sdmVyKCkpLHRoaXMuZmFwcGx5KGMpLmZhaWwoYi5yZWplY3QpLGIucHJvbWlzZX0say5uZmNhbGw9ZnVuY3Rpb24oYSl7dmFyIGI9Vihhcmd1bWVudHMsMSk7cmV0dXJuIGsoYSkubmZhcHBseShiKX0sby5wcm90b3R5cGUubmZjYWxsPWZ1bmN0aW9uKCl7dmFyIGE9Vihhcmd1bWVudHMpLGI9bCgpO3JldHVybiBhLnB1c2goYi5tYWtlTm9kZVJlc29sdmVyKCkpLHRoaXMuZmFwcGx5KGEpLmZhaWwoYi5yZWplY3QpLGIucHJvbWlzZX0say5uZmJpbmQ9ay5kZW5vZGVpZnk9ZnVuY3Rpb24oYSl7dmFyIGI9Vihhcmd1bWVudHMsMSk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGM9Yi5jb25jYXQoVihhcmd1bWVudHMpKSxkPWwoKTtyZXR1cm4gYy5wdXNoKGQubWFrZU5vZGVSZXNvbHZlcigpKSxrKGEpLmZhcHBseShjKS5mYWlsKGQucmVqZWN0KSxkLnByb21pc2V9fSxvLnByb3RvdHlwZS5uZmJpbmQ9by5wcm90b3R5cGUuZGVub2RlaWZ5PWZ1bmN0aW9uKCl7dmFyIGE9Vihhcmd1bWVudHMpO3JldHVybiBhLnVuc2hpZnQodGhpcyksay5kZW5vZGVpZnkuYXBwbHkodm9pZCAwLGEpfSxrLm5iaW5kPWZ1bmN0aW9uKGEsYil7dmFyIGM9Vihhcmd1bWVudHMsMik7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZCgpe3JldHVybiBhLmFwcGx5KGIsYXJndW1lbnRzKX12YXIgZT1jLmNvbmNhdChWKGFyZ3VtZW50cykpLGY9bCgpO3JldHVybiBlLnB1c2goZi5tYWtlTm9kZVJlc29sdmVyKCkpLGsoZCkuZmFwcGx5KGUpLmZhaWwoZi5yZWplY3QpLGYucHJvbWlzZX19LG8ucHJvdG90eXBlLm5iaW5kPWZ1bmN0aW9uKCl7dmFyIGE9Vihhcmd1bWVudHMsMCk7cmV0dXJuIGEudW5zaGlmdCh0aGlzKSxrLm5iaW5kLmFwcGx5KHZvaWQgMCxhKX0say5ubWFwcGx5PWsubnBvc3Q9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBrKGEpLm5wb3N0KGIsYyl9LG8ucHJvdG90eXBlLm5tYXBwbHk9by5wcm90b3R5cGUubnBvc3Q9ZnVuY3Rpb24oYSxiKXt2YXIgYz1WKGJ8fFtdKSxkPWwoKTtyZXR1cm4gYy5wdXNoKGQubWFrZU5vZGVSZXNvbHZlcigpKSx0aGlzLmRpc3BhdGNoKCJwb3N0IixbYSxjXSkuZmFpbChkLnJlamVjdCksZC5wcm9taXNlfSxrLm5zZW5kPWsubm1jYWxsPWsubmludm9rZT1mdW5jdGlvbihhLGIpe3ZhciBjPVYoYXJndW1lbnRzLDIpLGQ9bCgpO3JldHVybiBjLnB1c2goZC5tYWtlTm9kZVJlc29sdmVyKCkpLGsoYSkuZGlzcGF0Y2goInBvc3QiLFtiLGNdKS5mYWlsKGQucmVqZWN0KSxkLnByb21pc2V9LG8ucHJvdG90eXBlLm5zZW5kPW8ucHJvdG90eXBlLm5tY2FsbD1vLnByb3RvdHlwZS5uaW52b2tlPWZ1bmN0aW9uKGEpe3ZhciBiPVYoYXJndW1lbnRzLDEpLGM9bCgpO3JldHVybiBiLnB1c2goYy5tYWtlTm9kZVJlc29sdmVyKCkpLHRoaXMuZGlzcGF0Y2goInBvc3QiLFthLGJdKS5mYWlsKGMucmVqZWN0KSxjLnByb21pc2V9LGsubm9kZWlmeT1OLG8ucHJvdG90eXBlLm5vZGVpZnk9ZnVuY3Rpb24oYSl7cmV0dXJuIGE/KHRoaXMudGhlbihmdW5jdGlvbihiKXtrLm5leHRUaWNrKGZ1bmN0aW9uKCl7YShudWxsLGIpfSl9LGZ1bmN0aW9uKGIpe2submV4dFRpY2soZnVuY3Rpb24oKXthKGIpfSl9KSx2b2lkIDApOnRoaXN9O3ZhciBmYT1pKCk7cmV0dXJuIGt9KTsKCi8qQ2xvdWRXYWxsIDEuMi4xIGxpYnJhcnkgZnVuY3Rpb25zLCB0cmltbWVkKi8KImN3ImluIHdpbmRvd3x8KHdpbmRvdy5jdz17fSksY3cubGlifHwod2luZG93LmN3LmxpYj17fSksZnVuY3Rpb24oeCl7dmFyIGEsYj0iY3cubGliIDEuMi4xIixjPXtub3RlczoiI2N3LW5vdGVzIixub3Rlc0RlbGF5OjNlMyxkZWZhdWx0SnBlZ1F1YWxpdHk6Ljk1LHNjcm9sbEFuaW1hdGU6MjAwfSxkPU9iamVjdC5pc0FycmF5LGU9KE9iamVjdC5pc0Jvb2xlYW4sT2JqZWN0LmlzU3RyaW5nKSxmPU9iamVjdC5pc09iamVjdCxnPU9iamVjdC5pc051bWJlcixoPShPYmplY3QuaXNSZWdFeHAsT2JqZWN0LmlzRnVuY3Rpb24pOyQuZXh0ZW5kKHgsYT17Y29uZmlnOmZ1bmN0aW9uKCl7cmV0dXJuIGN9LHZlcnNpb246ZnVuY3Rpb24oKXtyZXR1cm4gYn0sc2Nyb2xsOmZ1bmN0aW9uKHgpe3ZhciBhPSQoImh0bWwsIGJvZHkiKTtpZihudWxsPT14KXJldHVybiBhLnNjcm9sbFRvcCgpO2EuYW5pbWF0ZSh7c2Nyb2xsVG9wOnh9LGMuc2Nyb2xsQW5pbWF0ZSl9LG5vdGU6ZnVuY3Rpb24oeCxhLGIpe3ZhciBkPWF8fCIiO3JldHVybiAkKCc8ZGl2IGNsYXNzPSInK2QrJyIgc3R5bGU9ImRpc3BsYXk6bm9uZSI+Jyt4KyI8L2Rpdj4iKS5wcmVwZW5kVG8oJChjLm5vdGVzKSkuc2xpZGVEb3duKDEwMCkuZGVsYXkoYnx8Yy5ub3Rlc0RlbGF5KS5mYWRlT3V0KDcwMCxmdW5jdGlvbigpeyQodGhpcykucmVtb3ZlKCl9KSxkfSxnZXRyZWY6JC5teS5mLmdldHJlZixqc29uOiQubXkuZi50b2pzb24sdW5qc29uOiQubXkuZi51bmpzb24sc2RibTokLm15LmYuc2RibUNvZGUsanMydHh0OmZ1bmN0aW9uKHgsYSxiKXtyZXR1cm4gJC5teS5mLnRvanNvbih4LHt0YWJDaGFyczphLG1heFdpZHRoOmcoYik/Yjo4MCxhbGxvd0pTOiEwfSl9LG1hc2s6JC5teS5mLm1hc2ssdW5tYXNrOiQubXkuZi51bm1hc2ssYmFzZTY0OiQubXkuZi5iYXNlNjQsYTJvOmZ1bmN0aW9uKHgsYSl7dmFyIGIsYz17fTtpZighT2JqZWN0LmlzQXJyYXkoeCkpcmV0dXJuIGM7Zm9yKHZhciBkPTA7ZDx4Lmxlbmd0aDtkKyspYj14W2RdLChhfHxudWxsIT1iJiYhMSE9PWImJiIiIT09YikmJihjW2JdfHwoY1tiXT0wKSxjW2JdKz0xKTtyZXR1cm4gY30sZHJ5OmZ1bmN0aW9uKHgsYSl7dmFyIGIsYz17fTtmb3IoYiBpbiB4KSF4Lmhhc093blByb3BlcnR5KGIpfHwiXyI9PT1iLnN1YnN0cigwLDEpJiYoYXx8Il9pZCIhPT1iJiYiX3JldiIhPT1iKSYmIl9hdHRhY2htZW50cyIhPT1ifHwoY1tiXT14W2JdKTtyZXR1cm4gY30sZnVzZTpmdW5jdGlvbih4LGEpe2lmKDA9PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJue307aWYoMT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gYXJndW1lbnRzWzBdO2Zvcih2YXIgYj0xO2I8YXJndW1lbnRzLmxlbmd0aDtiKyspT2JqZWN0Lm1lcmdlKGFyZ3VtZW50c1swXSxhcmd1bWVudHNbYl0sITEsZnVuY3Rpb24oeCxhLGIpe3JldHVybiBudWxsPT1iP2E6ZChiKT9PYmplY3QuY2xvbmUoYiwhMCk6ZihiKT9PYmplY3QubWVyZ2UoYSxiLCExKTpifSk7cmV0dXJuIGFyZ3VtZW50c1swXX0sYmxvYjJiYXNlNjQ6JC5teS5mLmJsb2IyYmFzZTY0LGJhc2U2NDJibG9iOiQubXkuZi5iYXNlNjQyYmxvYixkYXRlOmZ1bmN0aW9uKHgsYSl7dmFyIGI9YXx8InNob3J0IixjPSIiLGQ9RGF0ZS5jcmVhdGUoeCwiZW4iKSxlPWZ1bmN0aW9uKHgpe3JldHVybiBkLmZvcm1hdCh4LCJlbiIpfSxmPXtzaG9ydDoie01vbn0iLGxvbmc6IntNb250aH0ifTtyZXR1cm4gZC5pc1ZhbGlkKCk/KCJ0aW55Ij09Yj9jPWQuaXNUaGlzWWVhcigpP2QuaXNUb2RheSgpPy8oWzAxXVswLTldfDJbMC0zXSk6WzAtNV1bMC05XS8udGVzdChTdHJpbmcoeCkpfHwibnVtYmVyIj09JC50eXBlKHgpP2UoIntIfTp7bW19Iik6IlRvZGF5IjpkLmlzWWVzdGVyZGF5KCk/IkRheSBhZ28iOmQuaXNUb21vcnJvdygpPyJUb21vcnJvdyI6ZSgie01vbn0ge2R9IiwiZW4iKTplKCJ7bW9ufSd7eXl9IikuY2FwaXRhbGl6ZSgpOigic2hvcnQiPT1ifHwibG9uZyI9PWI/KGM9ZC5pc1llc3RlcmRheSgpPyJEYXkgYWdvIjpkLmlzVG9kYXkoKT8iVG9kYXkiOmQuaXNUb21vcnJvdygpPyJUb21vcnJvdyI6ZShmW2JdKyIge2R9IiwiZW4iKSxjKz1kLmlzVGhpc1llYXIoKT8iIjplKCIgJ3t5eX0iKSk6Yz1lKCJ7TW9udGh9IHtkfSwge3l5eXl9IiksKC8oWzAxXVswLTldfDJbMC0zXSk6WzAtNV1bMC05XS8udGVzdChTdHJpbmcoeCkpfHwibnVtYmVyIj09JC50eXBlKHgpKSYmKGMrPWUoIiwge0h9OnttbX0iKSkpLGMpOiLigJQifSxjcmMyOmZ1bmN0aW9uKCl7dmFyIHg9T2JqZWN0LmtleXMsYT0kLnR5cGU7ZnVuY3Rpb24gYih4KXtmb3IodmFyIGE9MCxiPTA7Yjx4Lmxlbmd0aDtiKyspYT14LmNoYXJDb2RlQXQoYikrKGE8PDYpKyhhPDwxNiktYTtyZXR1cm4oMWUxMSthKS50b1N0cmluZygzNil9ZnVuY3Rpb24gYyhkKXt2YXIgZSxmLGcsaD1hKGQpO2lmKCJhcnJheSI9PWh8fCJvYmplY3QiPT1oKXtmb3IoZSBpbiBmPXgoZCksImFycmF5IiE9aCYmZi5zb3J0KCksZz0iIixmKWcrPSIvLy8iK2ZbZV0rIi8iK2MoZFtmW2VdXSkrIi8vLyI7cmV0dXJuIGIoIi8vLyIraCsiLyIrZyl9cmV0dXJuIGIoImZ1bmN0aW9uIj09aHx8InJlZ2V4cCI9PWg/SlNPTi5zdHJpbmdpZnkoZC50b1N0cmluZygpKTpKU09OLnN0cmluZ2lmeShkKSl9cmV0dXJuIGN9KCkscmFuZDpmdW5jdGlvbih4KXtmb3IodmFyIGI9MHwoK3h8fDgpLGM9YjwxPzE6Yj4yNTY/MjU2OmIsZD1jPj4zLGU9IiIsZj0wO2Y8ZDtmKyspZSs9YS5yYW5kNCgpO3JldHVybiBlLnN1YnN0cigwLGMpfSxyYW5kNDpmdW5jdGlvbigpe3JldHVybigiMDAwIitOdW1iZXIucmFuZG9tKDAsMTY3OTYxNSkudG9TdHJpbmcoMzYpKS5zdWJzdHIoLTQpfSxyYW5kODpmdW5jdGlvbigpe3JldHVybiBhLnJhbmQ0KCkrYS5yYW5kNCgpfX0pO3ZhciBpPXtnZXRQaXhlbHM6ZnVuY3Rpb24oeCl7dmFyIGE9aS5nZXRDYW52YXMoeC53aWR0aCx4LmhlaWdodCksYj1hLmdldENvbnRleHQoIjJkIik7cmV0dXJuIGIuZHJhd0ltYWdlKHgsMCwwLHgud2lkdGgseC5oZWlnaHQpLGIuZ2V0SW1hZ2VEYXRhKDAsMCxhLndpZHRoLGEuaGVpZ2h0KX0sZ2V0Q2FudmFzOmZ1bmN0aW9uKHgsYSl7dmFyIGI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7cmV0dXJuIGIud2lkdGg9eCxiLmhlaWdodD1hLGJ9LGZpbHRlckltYWdlOmZ1bmN0aW9uKHgsYSxiKXtmb3IodmFyIGM9W2kuZ2V0UGl4ZWxzKGEpXSxkPTI7ZDxhcmd1bWVudHMubGVuZ3RoO2QrKyljLnB1c2goYXJndW1lbnRzW2RdKTt2YXIgZT1pLmdldENhbnZhcyhhLndpZHRoLGEuaGVpZ2h0KTtyZXR1cm4gZS5nZXRDb250ZXh0KCIyZCIpLnB1dEltYWdlRGF0YSh4LmFwcGx5KG51bGwsYyksMCwwKSxlfSxncmF5c2NhbGU6ZnVuY3Rpb24oeCxhKXtmb3IodmFyIGI9eC5kYXRhLGM9MDtjPGIubGVuZ3RoO2MrPTQpe3ZhciBkPS4yMTI2KmJbY10rLjcxNTIqYltjKzFdKy4wNzIyKmJbYysyXTtiW2NdPWJbYysxXT1iW2MrMl09MHxkfXJldHVybiB4fX07aS50bXBDYW52YXM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiksaS50bXBDdHg9aS50bXBDYW52YXMuZ2V0Q29udGV4dCgiMmQiKSxpLmNyZWF0ZUltYWdlRGF0YT1mdW5jdGlvbih4LGEpe3JldHVybiB0aGlzLnRtcEN0eC5jcmVhdGVJbWFnZURhdGEoeCxhKX0saS5jb252b2x1dGU9ZnVuY3Rpb24oeCxhLGIpe2Zvcih2YXIgYz1NYXRoLnJvdW5kKE1hdGguc3FydChhLmxlbmd0aCkpLGQ9TWF0aC5mbG9vcihjLzIpLGU9eC5kYXRhLGY9eC53aWR0aCxnPXguaGVpZ2h0LGg9ZixqPWcsaz1pLmNyZWF0ZUltYWdlRGF0YShoLGopLGw9ay5kYXRhLG09Yj8xOjAsbj0wO248ajtuKyspZm9yKHZhciBvPTA7bzxoO28rKyl7Zm9yKHZhciBwPW4scT1vLHI9NCoobipoK28pLHM9MCx0PTAsdT0wLHY9MCx3PTA7dzxjO3crKylmb3IodmFyIHk9MDt5PGM7eSsrKXt2YXIgej1wK3ctZCxBPXEreS1kO2lmKHo+PTAmJno8ZyYmQT49MCYmQTxmKXt2YXIgQj00Kih6KmYrQSksQz1hW3cqYyt5XTtzKz1lW0JdKkMsdCs9ZVtCKzFdKkMsdSs9ZVtCKzJdKkMsdis9ZVtCKzNdKkN9fWxbcl09cyxsW3IrMV09dCxsW3IrMl09dSxsW3IrM109dittKigyNTUtdil9cmV0dXJuIGt9O2Zvcih2YXIgaj1bXSxrPTA7azwyNTY7aysrKWoucHVzaChrKTt4LmltYWdlPWZ1bmN0aW9uKHgsYSl7dmFyIGIsZCxmPXgsZz17Zm9ybWF0OiIiLGNhbnZhczpmdW5jdGlvbigpe3JldHVybiBkfSx3aWR0aDpmdW5jdGlvbigpe3JldHVybiBkLndpZHRofSxoZWlnaHQ6ZnVuY3Rpb24oKXtyZXR1cm4gZC5oZWlnaHR9LGN0eDpmdW5jdGlvbigpe3JldHVybiBkLmdldENvbnRleHQoIjJkIil9LGRhdGE6ZnVuY3Rpb24oKXtyZXR1cm4gZC5nZXRDb250ZXh0KCIyZCIpLmdldEltYWdlRGF0YSgwLDAsZC53aWR0aCxkLmhlaWdodCl9LGpwZWc6ZnVuY3Rpb24oeCxhKXt2YXIgYj1kLnRvRGF0YVVSTCgiaW1hZ2UvanBlZyIsKHBhcnNlRmxvYXQoeCl8fGMuZGVmYXVsdEpwZWdRdWFsaXR5KS5jbGFtcCguMSwuOTk5OSkpO3JldHVybiBhfHxnLmRlc3Ryb3koKSxifSxwbmc6ZnVuY3Rpb24oeCl7dmFyIGE9ZC50b0RhdGFVUkwoImltYWdlL3BuZyIpO3JldHVybiB4fHxnLmRlc3Ryb3koKSxhfSxkZXN0cm95OmZ1bmN0aW9uKCl7ZD1udWxsfSxyZXNhbXBsZTpmdW5jdGlvbih4LGEpe2lmKGlzTmFOKHgpKXRocm93IkludmFsaWQgd2lkdGggdG8gcmVzYW1wbGUgaW1hZ2UiO3ZhciBiLGMsZT1kLndpZHRoLGY9ZC5oZWlnaHQsaD1wYXJzZUludCh4fHwxKS5jbGFtcCgxLDUqZSksaj1wYXJzZUludChhfHxNYXRoLnJvdW5kKGgqZi9lKSkuY2xhbXAoMSw1KmYpO3JldHVybiBhJiYheCYmKGg9cGFyc2VJbnQoTWF0aC5yb3VuZChqKmUvZikpLmNsYW1wKDEsNSplKSksYz1pLmdldENhbnZhcygwfGgsMHxqKSxoPGUvMj8oKGI9aS5nZXRDYW52YXMoMipofDAsMipqfDApKS5nZXRDb250ZXh0KCIyZCIpLmRyYXdJbWFnZShkLDAsMCwwfGUsMHxmLDAsMCwyKmh8MCwyKmp8MCksYy5nZXRDb250ZXh0KCIyZCIpLmRyYXdJbWFnZShiLDAsMCwyKmh8MCwyKmp8MCwwLDAsMHxoLDB8aikpOmMuZ2V0Q29udGV4dCgiMmQiKS5kcmF3SW1hZ2UoZCwwLDAsMHxlLDB8ZiwwLDAsMHxoLDB8aiksZD1jLGd9LHNoYXJwZW46ZnVuY3Rpb24oeCl7dmFyIGE9KHBhcnNlRmxvYXQoeCl8fDEpLmNsYW1wKC4wMDEsMTAwKSxiPS0uMDMqYXx8LS4wMyxjPS0uMSphfHwtLjEsZT0xLTQqKGIrYyk7cmV0dXJuIGQ9aS5maWx0ZXJJbWFnZShpLmNvbnZvbHV0ZSxkLFtiLGMsYixjLGUsYyxiLGMsYl0pLGd9LGdyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gZD1pLmZpbHRlckltYWdlKGkuZ3JheXNjYWxlLGQpLGd9LGNvbnZvbHV0ZTpmdW5jdGlvbih4KXtyZXR1cm4gZD1pLmZpbHRlckltYWdlKGkuY29udm9sdXRlLGQseCksZ30sbWFwOmZ1bmN0aW9uKCl7Zm9yKHZhciB4LGE9W2ouc2xpY2UoMCldLGI9MCxjPTA7Yzxhcmd1bWVudHMubGVuZ3RoJiZjPDM7YysrKWlmKGgoYXJndW1lbnRzW2NdKSl7YVtiXT1bXSx4PWFyZ3VtZW50c1tjXTt0cnl7Zm9yKHZhciBlPTA7ZTwyNTY7ZSsrKWFbY11bZV09MHwoMjU1Kih4KGUvMjU1KXx8MCkpLmNsYW1wKDAsMjU1KTtiKz0xfWNhdGNoKHgpe2FbYl09ai5zbGljZSgwKX19MT09PWEubGVuZ3RoJiYoYVsyXT1hWzFdPWFbMF0pLDI9PT1hLmxlbmd0aCYmKGFbMl09YVsxXSk7dmFyIGY9ZC5nZXRDb250ZXh0KCIyZCIpLmdldEltYWdlRGF0YSgwLDAsZC53aWR0aCxkLmhlaWdodCksaT1mLmRhdGE7Zm9yKGM9MDtjPGkubGVuZ3RoO2MrPTQpaVtjXT1hWzBdW2lbY11dLGlbYysxXT1hWzFdW2lbYysxXV0saVtjKzJdPWFbMl1baVtjKzJdXTtyZXR1cm4gZC5nZXRDb250ZXh0KCIyZCIpLnB1dEltYWdlRGF0YShmLDAsMCksZ30sYnJpZ2h0bmVzczpmdW5jdGlvbih4KXsocGFyc2VGbG9hdCh4KXx8MSkuY2xhbXAoLjEsMTApO3ZhciBhPWZ1bmN0aW9uKGEpe3JldHVybiBNYXRoLnBvdyhhLDEveCl9O3JldHVybiBnLm1hcChhKSxnfSxjb250cmFzdDpmdW5jdGlvbih4KXsocGFyc2VGbG9hdCh4KXx8MSkuY2xhbXAoLjEsMTApO3ZhciBhPWZ1bmN0aW9uKGEpe3ZhciBiPU1hdGguYWJzKDIqKGEtLjUpKSxjPU1hdGgucG93KGIsMS94KS8yO3JldHVybiBhPj0uNT9jKy41OmEtYytiLzJ9O3JldHVybiBnLm1hcChhKSxnfX07aWYoZShmKT8vXmRhdGE6aW1hZ2VcLyhqcGV8cG5nKSQvLnRlc3QoZi5zdWJzdHIoMCwxNCkpJiYoKGI9bmV3IEltYWdlKS5zcmM9Zik6Im9iamVjdCI9PXR5cGVvZiBmJiYoZi5qcXVlcnkmJihmPWZbMF0pLCJub2RlTmFtZSJpbiBmJiYvXihJTUd8Q0FOVkFTKSQvLnRlc3QoZi5ub2RlTmFtZSkmJihiPWYpKSxiKXt2YXIgaz0oZD1pLmdldENhbnZhcyhiLndpZHRoLGIuaGVpZ2h0KSkuZ2V0Q29udGV4dCgiMmQiKTtlKGEpJiYoay5yZWN0KDAsMCxiLndpZHRoLGIuaGVpZ2h0KSxrLmZpbGxTdHlsZT1hLGsuZmlsbCgpKSxrLmRyYXdJbWFnZShiLDAsMCxiLndpZHRoLGIuaGVpZ2h0KX1yZXR1cm4gZD9nOm51bGx9fShjdy5saWIpOw==" }, "lib/plugins.js": { "content_type": "text/javascript", "data": "LyoKKiBQaG90b24gMS4yNCBwbHVnaW5zIHNldAoqIC0gJC51aSAxLjExLjQsIG9ubHkgU29ydGFibGUsIEF1dG9jb21wbGV0ZSBhbmQgVG9vbHRpcAoqIOKAlCAkLnVpIHRvdWNoIHB1bmNoIDAuMi4yCiog4oCTIHNlbGVjdDIgMy41LjQKKiDigJQgQ29kZU1pcnJvciA1LjkuMSArIGpzLCBlcmxhbmcsIGh0bWxtaXhlZCBhbmQgY3NzIGJ1bmRsZXMKKiDigJQgSkNyb3AgMC45Ciog4oCTIG5pY2VzY3JvbGwgMy42LjgKKiDigJMgalF1ZXJ5IGxpc3QgYnVpbGRlciAwLjUKKiDigJMgaG90a2V5cyAzLjcuMwoqLwoKLyohIGpRdWVyeSBVSSAtIHYxLjExLjQgLSAyMDE3LTA5LTA4CiogaHR0cDovL2pxdWVyeXVpLmNvbQoqIEluY2x1ZGVzOiBjb3JlLmpzLCB3aWRnZXQuanMsIG1vdXNlLmpzLCBwb3NpdGlvbi5qcywgZHJhZ2dhYmxlLmpzLCBzb3J0YWJsZS5qcywgYXV0b2NvbXBsZXRlLmpzLCBtZW51LmpzLCB0b29sdGlwLmpzCiogQ29weXJpZ2h0IGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnM7IExpY2Vuc2VkIE1JVCAqLwoKKGZ1bmN0aW9uKHQpeyJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsianF1ZXJ5Il0sdCk6dChqUXVlcnkpfSkoZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShlLHMpe3ZhciBuLG8sYSxyPWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iYXJlYSI9PT1yPyhuPWUucGFyZW50Tm9kZSxvPW4ubmFtZSxlLmhyZWYmJm8mJiJtYXAiPT09bi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPyhhPXQoImltZ1t1c2VtYXA9JyMiK28rIiddIilbMF0sISFhJiZpKGEpKTohMSk6KC9eKGlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b258b2JqZWN0KSQvLnRlc3Qocik/IWUuZGlzYWJsZWQ6ImEiPT09cj9lLmhyZWZ8fHM6cykmJmkoZSl9ZnVuY3Rpb24gaShlKXtyZXR1cm4gdC5leHByLmZpbHRlcnMudmlzaWJsZShlKSYmIXQoZSkucGFyZW50cygpLmFkZEJhY2soKS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4iaGlkZGVuIj09PXQuY3NzKHRoaXMsInZpc2liaWxpdHkiKX0pLmxlbmd0aH10LnVpPXQudWl8fHt9LHQuZXh0ZW5kKHQudWkse3ZlcnNpb246IjEuMTEuNCIsa2V5Q29kZTp7QkFDS1NQQUNFOjgsQ09NTUE6MTg4LERFTEVURTo0NixET1dOOjQwLEVORDozNSxFTlRFUjoxMyxFU0NBUEU6MjcsSE9NRTozNixMRUZUOjM3LFBBR0VfRE9XTjozNCxQQUdFX1VQOjMzLFBFUklPRDoxOTAsUklHSFQ6MzksU1BBQ0U6MzIsVEFCOjksVVA6Mzh9fSksdC5mbi5leHRlbmQoe3Njcm9sbFBhcmVudDpmdW5jdGlvbihlKXt2YXIgaT10aGlzLmNzcygicG9zaXRpb24iKSxzPSJhYnNvbHV0ZSI9PT1pLG49ZT8vKGF1dG98c2Nyb2xsfGhpZGRlbikvOi8oYXV0b3xzY3JvbGwpLyxvPXRoaXMucGFyZW50cygpLmZpbHRlcihmdW5jdGlvbigpe3ZhciBlPXQodGhpcyk7cmV0dXJuIHMmJiJzdGF0aWMiPT09ZS5jc3MoInBvc2l0aW9uIik/ITE6bi50ZXN0KGUuY3NzKCJvdmVyZmxvdyIpK2UuY3NzKCJvdmVyZmxvdy15IikrZS5jc3MoIm92ZXJmbG93LXgiKSl9KS5lcSgwKTtyZXR1cm4iZml4ZWQiIT09aSYmby5sZW5ndGg/bzp0KHRoaXNbMF0ub3duZXJEb2N1bWVudHx8ZG9jdW1lbnQpfSx1bmlxdWVJZDpmdW5jdGlvbigpe3ZhciB0PTA7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3RoaXMuaWR8fCh0aGlzLmlkPSJ1aS1pZC0iKyArK3QpfSl9fSgpLHJlbW92ZVVuaXF1ZUlkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpey9edWktaWQtXGQrJC8udGVzdCh0aGlzLmlkKSYmdCh0aGlzKS5yZW1vdmVBdHRyKCJpZCIpfSl9fSksdC5leHRlbmQodC5leHByWyI6Il0se2RhdGE6dC5leHByLmNyZWF0ZVBzZXVkbz90LmV4cHIuY3JlYXRlUHNldWRvKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihpKXtyZXR1cm4hIXQuZGF0YShpLGUpfX0pOmZ1bmN0aW9uKGUsaSxzKXtyZXR1cm4hIXQuZGF0YShlLHNbM10pfSxmb2N1c2FibGU6ZnVuY3Rpb24oaSl7cmV0dXJuIGUoaSwhaXNOYU4odC5hdHRyKGksInRhYmluZGV4IikpKX0sdGFiYmFibGU6ZnVuY3Rpb24oaSl7dmFyIHM9dC5hdHRyKGksInRhYmluZGV4Iiksbj1pc05hTihzKTtyZXR1cm4obnx8cz49MCkmJmUoaSwhbil9fSksdCgiPGE+Iikub3V0ZXJXaWR0aCgxKS5qcXVlcnl8fHQuZWFjaChbIldpZHRoIiwiSGVpZ2h0Il0sZnVuY3Rpb24oZSxpKXtmdW5jdGlvbiBzKGUsaSxzLG8pe3JldHVybiB0LmVhY2gobixmdW5jdGlvbigpe2ktPXBhcnNlRmxvYXQodC5jc3MoZSwicGFkZGluZyIrdGhpcykpfHwwLHMmJihpLT1wYXJzZUZsb2F0KHQuY3NzKGUsImJvcmRlciIrdGhpcysiV2lkdGgiKSl8fDApLG8mJihpLT1wYXJzZUZsb2F0KHQuY3NzKGUsIm1hcmdpbiIrdGhpcykpfHwwKX0pLGl9dmFyIG49IldpZHRoIj09PWk/WyJMZWZ0IiwiUmlnaHQiXTpbIlRvcCIsIkJvdHRvbSJdLG89aS50b0xvd2VyQ2FzZSgpLGE9e2lubmVyV2lkdGg6dC5mbi5pbm5lcldpZHRoLGlubmVySGVpZ2h0OnQuZm4uaW5uZXJIZWlnaHQsb3V0ZXJXaWR0aDp0LmZuLm91dGVyV2lkdGgsb3V0ZXJIZWlnaHQ6dC5mbi5vdXRlckhlaWdodH07dC5mblsiaW5uZXIiK2ldPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lP2FbImlubmVyIitpXS5jYWxsKHRoaXMpOnRoaXMuZWFjaChmdW5jdGlvbigpe3QodGhpcykuY3NzKG8scyh0aGlzLGUpKyJweCIpfSl9LHQuZm5bIm91dGVyIitpXT1mdW5jdGlvbihlLG4pe3JldHVybiJudW1iZXIiIT10eXBlb2YgZT9hWyJvdXRlciIraV0uY2FsbCh0aGlzLGUpOnRoaXMuZWFjaChmdW5jdGlvbigpe3QodGhpcykuY3NzKG8scyh0aGlzLGUsITAsbikrInB4Iil9KX19KSx0LmZuLmFkZEJhY2t8fCh0LmZuLmFkZEJhY2s9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYWRkKG51bGw9PXQ/dGhpcy5wcmV2T2JqZWN0OnRoaXMucHJldk9iamVjdC5maWx0ZXIodCkpfSksdCgiPGE+IikuZGF0YSgiYS1iIiwiYSIpLnJlbW92ZURhdGEoImEtYiIpLmRhdGEoImEtYiIpJiYodC5mbi5yZW1vdmVEYXRhPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbihpKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9lLmNhbGwodGhpcyx0LmNhbWVsQ2FzZShpKSk6ZS5jYWxsKHRoaXMpfX0odC5mbi5yZW1vdmVEYXRhKSksdC51aS5pZT0hIS9tc2llIFtcdy5dKy8uZXhlYyhuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkpLHQuZm4uZXh0ZW5kKHtmb2N1czpmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oaSxzKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGk/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9dGhpcztzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dChlKS5mb2N1cygpLHMmJnMuY2FsbChlKX0saSl9KTplLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KHQuZm4uZm9jdXMpLGRpc2FibGVTZWxlY3Rpb246ZnVuY3Rpb24oKXt2YXIgdD0ib25zZWxlY3RzdGFydCJpbiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKT8ic2VsZWN0c3RhcnQiOiJtb3VzZWRvd24iO3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLmJpbmQodCsiLnVpLWRpc2FibGVTZWxlY3Rpb24iLGZ1bmN0aW9uKHQpe3QucHJldmVudERlZmF1bHQoKX0pfX0oKSxlbmFibGVTZWxlY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51bmJpbmQoIi51aS1kaXNhYmxlU2VsZWN0aW9uIil9LHpJbmRleDpmdW5jdGlvbihlKXtpZih2b2lkIDAhPT1lKXJldHVybiB0aGlzLmNzcygiekluZGV4IixlKTtpZih0aGlzLmxlbmd0aClmb3IodmFyIGkscyxuPXQodGhpc1swXSk7bi5sZW5ndGgmJm5bMF0hPT1kb2N1bWVudDspe2lmKGk9bi5jc3MoInBvc2l0aW9uIiksKCJhYnNvbHV0ZSI9PT1pfHwicmVsYXRpdmUiPT09aXx8ImZpeGVkIj09PWkpJiYocz1wYXJzZUludChuLmNzcygiekluZGV4IiksMTApLCFpc05hTihzKSYmMCE9PXMpKXJldHVybiBzO249bi5wYXJlbnQoKX1yZXR1cm4gMH19KSx0LnVpLnBsdWdpbj17YWRkOmZ1bmN0aW9uKGUsaSxzKXt2YXIgbixvPXQudWlbZV0ucHJvdG90eXBlO2ZvcihuIGluIHMpby5wbHVnaW5zW25dPW8ucGx1Z2luc1tuXXx8W10sby5wbHVnaW5zW25dLnB1c2goW2ksc1tuXV0pfSxjYWxsOmZ1bmN0aW9uKHQsZSxpLHMpe3ZhciBuLG89dC5wbHVnaW5zW2VdO2lmKG8mJihzfHx0LmVsZW1lbnRbMF0ucGFyZW50Tm9kZSYmMTEhPT10LmVsZW1lbnRbMF0ucGFyZW50Tm9kZS5ub2RlVHlwZSkpZm9yKG49MDtvLmxlbmd0aD5uO24rKyl0Lm9wdGlvbnNbb1tuXVswXV0mJm9bbl1bMV0uYXBwbHkodC5lbGVtZW50LGkpfX07dmFyIHM9MCxuPUFycmF5LnByb3RvdHlwZS5zbGljZTt0LmNsZWFuRGF0YT1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oaSl7dmFyIHMsbixvO2ZvcihvPTA7bnVsbCE9KG49aVtvXSk7bysrKXRyeXtzPXQuX2RhdGEobiwiZXZlbnRzIikscyYmcy5yZW1vdmUmJnQobikudHJpZ2dlckhhbmRsZXIoInJlbW92ZSIpfWNhdGNoKGEpe31lKGkpfX0odC5jbGVhbkRhdGEpLHQud2lkZ2V0PWZ1bmN0aW9uKGUsaSxzKXt2YXIgbixvLGEscixsPXt9LGg9ZS5zcGxpdCgiLiIpWzBdO3JldHVybiBlPWUuc3BsaXQoIi4iKVsxXSxuPWgrIi0iK2Usc3x8KHM9aSxpPXQuV2lkZ2V0KSx0LmV4cHJbIjoiXVtuLnRvTG93ZXJDYXNlKCldPWZ1bmN0aW9uKGUpe3JldHVybiEhdC5kYXRhKGUsbil9LHRbaF09dFtoXXx8e30sbz10W2hdW2VdLGE9dFtoXVtlXT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9jcmVhdGVXaWRnZXQ/KGFyZ3VtZW50cy5sZW5ndGgmJnRoaXMuX2NyZWF0ZVdpZGdldCh0LGUpLHZvaWQgMCk6bmV3IGEodCxlKX0sdC5leHRlbmQoYSxvLHt2ZXJzaW9uOnMudmVyc2lvbixfcHJvdG86dC5leHRlbmQoe30scyksX2NoaWxkQ29uc3RydWN0b3JzOltdfSkscj1uZXcgaSxyLm9wdGlvbnM9dC53aWRnZXQuZXh0ZW5kKHt9LHIub3B0aW9ucyksdC5lYWNoKHMsZnVuY3Rpb24oZSxzKXtyZXR1cm4gdC5pc0Z1bmN0aW9uKHMpPyhsW2VdPWZ1bmN0aW9uKCl7dmFyIHQ9ZnVuY3Rpb24oKXtyZXR1cm4gaS5wcm90b3R5cGVbZV0uYXBwbHkodGhpcyxhcmd1bWVudHMpfSxuPWZ1bmN0aW9uKHQpe3JldHVybiBpLnByb3RvdHlwZVtlXS5hcHBseSh0aGlzLHQpfTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZSxpPXRoaXMuX3N1cGVyLG89dGhpcy5fc3VwZXJBcHBseTtyZXR1cm4gdGhpcy5fc3VwZXI9dCx0aGlzLl9zdXBlckFwcGx5PW4sZT1zLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLl9zdXBlcj1pLHRoaXMuX3N1cGVyQXBwbHk9byxlfX0oKSx2b2lkIDApOihsW2VdPXMsdm9pZCAwKX0pLGEucHJvdG90eXBlPXQud2lkZ2V0LmV4dGVuZChyLHt3aWRnZXRFdmVudFByZWZpeDpvP3Iud2lkZ2V0RXZlbnRQcmVmaXh8fGU6ZX0sbCx7Y29uc3RydWN0b3I6YSxuYW1lc3BhY2U6aCx3aWRnZXROYW1lOmUsd2lkZ2V0RnVsbE5hbWU6bn0pLG8/KHQuZWFjaChvLl9jaGlsZENvbnN0cnVjdG9ycyxmdW5jdGlvbihlLGkpe3ZhciBzPWkucHJvdG90eXBlO3Qud2lkZ2V0KHMubmFtZXNwYWNlKyIuIitzLndpZGdldE5hbWUsYSxpLl9wcm90byl9KSxkZWxldGUgby5fY2hpbGRDb25zdHJ1Y3RvcnMpOmkuX2NoaWxkQ29uc3RydWN0b3JzLnB1c2goYSksdC53aWRnZXQuYnJpZGdlKGUsYSksYX0sdC53aWRnZXQuZXh0ZW5kPWZ1bmN0aW9uKGUpe2Zvcih2YXIgaSxzLG89bi5jYWxsKGFyZ3VtZW50cywxKSxhPTAscj1vLmxlbmd0aDtyPmE7YSsrKWZvcihpIGluIG9bYV0pcz1vW2FdW2ldLG9bYV0uaGFzT3duUHJvcGVydHkoaSkmJnZvaWQgMCE9PXMmJihlW2ldPXQuaXNQbGFpbk9iamVjdChzKT90LmlzUGxhaW5PYmplY3QoZVtpXSk/dC53aWRnZXQuZXh0ZW5kKHt9LGVbaV0scyk6dC53aWRnZXQuZXh0ZW5kKHt9LHMpOnMpO3JldHVybiBlfSx0LndpZGdldC5icmlkZ2U9ZnVuY3Rpb24oZSxpKXt2YXIgcz1pLnByb3RvdHlwZS53aWRnZXRGdWxsTmFtZXx8ZTt0LmZuW2VdPWZ1bmN0aW9uKG8pe3ZhciBhPSJzdHJpbmciPT10eXBlb2YgbyxyPW4uY2FsbChhcmd1bWVudHMsMSksbD10aGlzO3JldHVybiBhP3RoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBpLG49dC5kYXRhKHRoaXMscyk7cmV0dXJuImluc3RhbmNlIj09PW8/KGw9biwhMSk6bj90LmlzRnVuY3Rpb24obltvXSkmJiJfIiE9PW8uY2hhckF0KDApPyhpPW5bb10uYXBwbHkobixyKSxpIT09biYmdm9pZCAwIT09aT8obD1pJiZpLmpxdWVyeT9sLnB1c2hTdGFjayhpLmdldCgpKTppLCExKTp2b2lkIDApOnQuZXJyb3IoIm5vIHN1Y2ggbWV0aG9kICciK28rIicgZm9yICIrZSsiIHdpZGdldCBpbnN0YW5jZSIpOnQuZXJyb3IoImNhbm5vdCBjYWxsIG1ldGhvZHMgb24gIitlKyIgcHJpb3IgdG8gaW5pdGlhbGl6YXRpb247ICIrImF0dGVtcHRlZCB0byBjYWxsIG1ldGhvZCAnIitvKyInIil9KTooci5sZW5ndGgmJihvPXQud2lkZ2V0LmV4dGVuZC5hcHBseShudWxsLFtvXS5jb25jYXQocikpKSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZT10LmRhdGEodGhpcyxzKTtlPyhlLm9wdGlvbihvfHx7fSksZS5faW5pdCYmZS5faW5pdCgpKTp0LmRhdGEodGhpcyxzLG5ldyBpKG8sdGhpcykpfSkpLGx9fSx0LldpZGdldD1mdW5jdGlvbigpe30sdC5XaWRnZXQuX2NoaWxkQ29uc3RydWN0b3JzPVtdLHQuV2lkZ2V0LnByb3RvdHlwZT17d2lkZ2V0TmFtZToid2lkZ2V0Iix3aWRnZXRFdmVudFByZWZpeDoiIixkZWZhdWx0RWxlbWVudDoiPGRpdj4iLG9wdGlvbnM6e2Rpc2FibGVkOiExLGNyZWF0ZTpudWxsfSxfY3JlYXRlV2lkZ2V0OmZ1bmN0aW9uKGUsaSl7aT10KGl8fHRoaXMuZGVmYXVsdEVsZW1lbnR8fHRoaXMpWzBdLHRoaXMuZWxlbWVudD10KGkpLHRoaXMudXVpZD1zKyssdGhpcy5ldmVudE5hbWVzcGFjZT0iLiIrdGhpcy53aWRnZXROYW1lK3RoaXMudXVpZCx0aGlzLmJpbmRpbmdzPXQoKSx0aGlzLmhvdmVyYWJsZT10KCksdGhpcy5mb2N1c2FibGU9dCgpLGkhPT10aGlzJiYodC5kYXRhKGksdGhpcy53aWRnZXRGdWxsTmFtZSx0aGlzKSx0aGlzLl9vbighMCx0aGlzLmVsZW1lbnQse3JlbW92ZTpmdW5jdGlvbih0KXt0LnRhcmdldD09PWkmJnRoaXMuZGVzdHJveSgpfX0pLHRoaXMuZG9jdW1lbnQ9dChpLnN0eWxlP2kub3duZXJEb2N1bWVudDppLmRvY3VtZW50fHxpKSx0aGlzLndpbmRvdz10KHRoaXMuZG9jdW1lbnRbMF0uZGVmYXVsdFZpZXd8fHRoaXMuZG9jdW1lbnRbMF0ucGFyZW50V2luZG93KSksdGhpcy5vcHRpb25zPXQud2lkZ2V0LmV4dGVuZCh7fSx0aGlzLm9wdGlvbnMsdGhpcy5fZ2V0Q3JlYXRlT3B0aW9ucygpLGUpLHRoaXMuX2NyZWF0ZSgpLHRoaXMuX3RyaWdnZXIoImNyZWF0ZSIsbnVsbCx0aGlzLl9nZXRDcmVhdGVFdmVudERhdGEoKSksdGhpcy5faW5pdCgpfSxfZ2V0Q3JlYXRlT3B0aW9uczp0Lm5vb3AsX2dldENyZWF0ZUV2ZW50RGF0YTp0Lm5vb3AsX2NyZWF0ZTp0Lm5vb3AsX2luaXQ6dC5ub29wLGRlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLl9kZXN0cm95KCksdGhpcy5lbGVtZW50LnVuYmluZCh0aGlzLmV2ZW50TmFtZXNwYWNlKS5yZW1vdmVEYXRhKHRoaXMud2lkZ2V0RnVsbE5hbWUpLnJlbW92ZURhdGEodC5jYW1lbENhc2UodGhpcy53aWRnZXRGdWxsTmFtZSkpLHRoaXMud2lkZ2V0KCkudW5iaW5kKHRoaXMuZXZlbnROYW1lc3BhY2UpLnJlbW92ZUF0dHIoImFyaWEtZGlzYWJsZWQiKS5yZW1vdmVDbGFzcyh0aGlzLndpZGdldEZ1bGxOYW1lKyItZGlzYWJsZWQgIisidWktc3RhdGUtZGlzYWJsZWQiKSx0aGlzLmJpbmRpbmdzLnVuYmluZCh0aGlzLmV2ZW50TmFtZXNwYWNlKSx0aGlzLmhvdmVyYWJsZS5yZW1vdmVDbGFzcygidWktc3RhdGUtaG92ZXIiKSx0aGlzLmZvY3VzYWJsZS5yZW1vdmVDbGFzcygidWktc3RhdGUtZm9jdXMiKX0sX2Rlc3Ryb3k6dC5ub29wLHdpZGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVsZW1lbnR9LG9wdGlvbjpmdW5jdGlvbihlLGkpe3ZhciBzLG4sbyxhPWU7aWYoMD09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHQud2lkZ2V0LmV4dGVuZCh7fSx0aGlzLm9wdGlvbnMpO2lmKCJzdHJpbmciPT10eXBlb2YgZSlpZihhPXt9LHM9ZS5zcGxpdCgiLiIpLGU9cy5zaGlmdCgpLHMubGVuZ3RoKXtmb3Iobj1hW2VdPXQud2lkZ2V0LmV4dGVuZCh7fSx0aGlzLm9wdGlvbnNbZV0pLG89MDtzLmxlbmd0aC0xPm87bysrKW5bc1tvXV09bltzW29dXXx8e30sbj1uW3Nbb11dO2lmKGU9cy5wb3AoKSwxPT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdm9pZCAwPT09bltlXT9udWxsOm5bZV07bltlXT1pfWVsc2V7aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHZvaWQgMD09PXRoaXMub3B0aW9uc1tlXT9udWxsOnRoaXMub3B0aW9uc1tlXTthW2VdPWl9cmV0dXJuIHRoaXMuX3NldE9wdGlvbnMoYSksdGhpc30sX3NldE9wdGlvbnM6ZnVuY3Rpb24odCl7dmFyIGU7Zm9yKGUgaW4gdCl0aGlzLl9zZXRPcHRpb24oZSx0W2VdKTtyZXR1cm4gdGhpc30sX3NldE9wdGlvbjpmdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLm9wdGlvbnNbdF09ZSwiZGlzYWJsZWQiPT09dCYmKHRoaXMud2lkZ2V0KCkudG9nZ2xlQ2xhc3ModGhpcy53aWRnZXRGdWxsTmFtZSsiLWRpc2FibGVkIiwhIWUpLGUmJih0aGlzLmhvdmVyYWJsZS5yZW1vdmVDbGFzcygidWktc3RhdGUtaG92ZXIiKSx0aGlzLmZvY3VzYWJsZS5yZW1vdmVDbGFzcygidWktc3RhdGUtZm9jdXMiKSkpLHRoaXN9LGVuYWJsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9zZXRPcHRpb25zKHtkaXNhYmxlZDohMX0pfSxkaXNhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NldE9wdGlvbnMoe2Rpc2FibGVkOiEwfSl9LF9vbjpmdW5jdGlvbihlLGkscyl7dmFyIG4sbz10aGlzOyJib29sZWFuIiE9dHlwZW9mIGUmJihzPWksaT1lLGU9ITEpLHM/KGk9bj10KGkpLHRoaXMuYmluZGluZ3M9dGhpcy5iaW5kaW5ncy5hZGQoaSkpOihzPWksaT10aGlzLmVsZW1lbnQsbj10aGlzLndpZGdldCgpKSx0LmVhY2gocyxmdW5jdGlvbihzLGEpe2Z1bmN0aW9uIHIoKXtyZXR1cm4gZXx8by5vcHRpb25zLmRpc2FibGVkIT09ITAmJiF0KHRoaXMpLmhhc0NsYXNzKCJ1aS1zdGF0ZS1kaXNhYmxlZCIpPygic3RyaW5nIj09dHlwZW9mIGE/b1thXTphKS5hcHBseShvLGFyZ3VtZW50cyk6dm9pZCAwfSJzdHJpbmciIT10eXBlb2YgYSYmKHIuZ3VpZD1hLmd1aWQ9YS5ndWlkfHxyLmd1aWR8fHQuZ3VpZCsrKTt2YXIgbD1zLm1hdGNoKC9eKFtcdzotXSopXHMqKC4qKSQvKSxoPWxbMV0rby5ldmVudE5hbWVzcGFjZSxjPWxbMl07Yz9uLmRlbGVnYXRlKGMsaCxyKTppLmJpbmQoaCxyKX0pfSxfb2ZmOmZ1bmN0aW9uKGUsaSl7aT0oaXx8IiIpLnNwbGl0KCIgIikuam9pbih0aGlzLmV2ZW50TmFtZXNwYWNlKyIgIikrdGhpcy5ldmVudE5hbWVzcGFjZSxlLnVuYmluZChpKS51bmRlbGVnYXRlKGkpLHRoaXMuYmluZGluZ3M9dCh0aGlzLmJpbmRpbmdzLm5vdChlKS5nZXQoKSksdGhpcy5mb2N1c2FibGU9dCh0aGlzLmZvY3VzYWJsZS5ub3QoZSkuZ2V0KCkpLHRoaXMuaG92ZXJhYmxlPXQodGhpcy5ob3ZlcmFibGUubm90KGUpLmdldCgpKX0sX2RlbGF5OmZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gaSgpe3JldHVybigic3RyaW5nIj09dHlwZW9mIHQ/c1t0XTp0KS5hcHBseShzLGFyZ3VtZW50cyl9dmFyIHM9dGhpcztyZXR1cm4gc2V0VGltZW91dChpLGV8fDApfSxfaG92ZXJhYmxlOmZ1bmN0aW9uKGUpe3RoaXMuaG92ZXJhYmxlPXRoaXMuaG92ZXJhYmxlLmFkZChlKSx0aGlzLl9vbihlLHttb3VzZWVudGVyOmZ1bmN0aW9uKGUpe3QoZS5jdXJyZW50VGFyZ2V0KS5hZGRDbGFzcygidWktc3RhdGUtaG92ZXIiKX0sbW91c2VsZWF2ZTpmdW5jdGlvbihlKXt0KGUuY3VycmVudFRhcmdldCkucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWhvdmVyIil9fSl9LF9mb2N1c2FibGU6ZnVuY3Rpb24oZSl7dGhpcy5mb2N1c2FibGU9dGhpcy5mb2N1c2FibGUuYWRkKGUpLHRoaXMuX29uKGUse2ZvY3VzaW46ZnVuY3Rpb24oZSl7dChlLmN1cnJlbnRUYXJnZXQpLmFkZENsYXNzKCJ1aS1zdGF0ZS1mb2N1cyIpfSxmb2N1c291dDpmdW5jdGlvbihlKXt0KGUuY3VycmVudFRhcmdldCkucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWZvY3VzIil9fSl9LF90cmlnZ2VyOmZ1bmN0aW9uKGUsaSxzKXt2YXIgbixvLGE9dGhpcy5vcHRpb25zW2VdO2lmKHM9c3x8e30saT10LkV2ZW50KGkpLGkudHlwZT0oZT09PXRoaXMud2lkZ2V0RXZlbnRQcmVmaXg/ZTp0aGlzLndpZGdldEV2ZW50UHJlZml4K2UpLnRvTG93ZXJDYXNlKCksaS50YXJnZXQ9dGhpcy5lbGVtZW50WzBdLG89aS5vcmlnaW5hbEV2ZW50KWZvcihuIGluIG8pbiBpbiBpfHwoaVtuXT1vW25dKTtyZXR1cm4gdGhpcy5lbGVtZW50LnRyaWdnZXIoaSxzKSwhKHQuaXNGdW5jdGlvbihhKSYmYS5hcHBseSh0aGlzLmVsZW1lbnRbMF0sW2ldLmNvbmNhdChzKSk9PT0hMXx8aS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSl9fSx0LmVhY2goe3Nob3c6ImZhZGVJbiIsaGlkZToiZmFkZU91dCJ9LGZ1bmN0aW9uKGUsaSl7dC5XaWRnZXQucHJvdG90eXBlWyJfIitlXT1mdW5jdGlvbihzLG4sbyl7InN0cmluZyI9PXR5cGVvZiBuJiYobj17ZWZmZWN0Om59KTt2YXIgYSxyPW4/bj09PSEwfHwibnVtYmVyIj09dHlwZW9mIG4/aTpuLmVmZmVjdHx8aTplO249bnx8e30sIm51bWJlciI9PXR5cGVvZiBuJiYobj17ZHVyYXRpb246bn0pLGE9IXQuaXNFbXB0eU9iamVjdChuKSxuLmNvbXBsZXRlPW8sbi5kZWxheSYmcy5kZWxheShuLmRlbGF5KSxhJiZ0LmVmZmVjdHMmJnQuZWZmZWN0cy5lZmZlY3Rbcl0/c1tlXShuKTpyIT09ZSYmc1tyXT9zW3JdKG4uZHVyYXRpb24sbi5lYXNpbmcsbyk6cy5xdWV1ZShmdW5jdGlvbihpKXt0KHRoaXMpW2VdKCksbyYmby5jYWxsKHNbMF0pLGkoKX0pfX0pLHQud2lkZ2V0O3ZhciBvPSExO3QoZG9jdW1lbnQpLm1vdXNldXAoZnVuY3Rpb24oKXtvPSExfSksdC53aWRnZXQoInVpLm1vdXNlIix7dmVyc2lvbjoiMS4xMS40IixvcHRpb25zOntjYW5jZWw6ImlucHV0LHRleHRhcmVhLGJ1dHRvbixzZWxlY3Qsb3B0aW9uIixkaXN0YW5jZToxLGRlbGF5OjB9LF9tb3VzZUluaXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMuZWxlbWVudC5iaW5kKCJtb3VzZWRvd24uIit0aGlzLndpZGdldE5hbWUsZnVuY3Rpb24odCl7cmV0dXJuIGUuX21vdXNlRG93bih0KX0pLmJpbmQoImNsaWNrLiIrdGhpcy53aWRnZXROYW1lLGZ1bmN0aW9uKGkpe3JldHVybiEwPT09dC5kYXRhKGkudGFyZ2V0LGUud2lkZ2V0TmFtZSsiLnByZXZlbnRDbGlja0V2ZW50Iik/KHQucmVtb3ZlRGF0YShpLnRhcmdldCxlLndpZGdldE5hbWUrIi5wcmV2ZW50Q2xpY2tFdmVudCIpLGkuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksITEpOnZvaWQgMH0pLHRoaXMuc3RhcnRlZD0hMX0sX21vdXNlRGVzdHJveTpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC51bmJpbmQoIi4iK3RoaXMud2lkZ2V0TmFtZSksdGhpcy5fbW91c2VNb3ZlRGVsZWdhdGUmJnRoaXMuZG9jdW1lbnQudW5iaW5kKCJtb3VzZW1vdmUuIit0aGlzLndpZGdldE5hbWUsdGhpcy5fbW91c2VNb3ZlRGVsZWdhdGUpLnVuYmluZCgibW91c2V1cC4iK3RoaXMud2lkZ2V0TmFtZSx0aGlzLl9tb3VzZVVwRGVsZWdhdGUpfSxfbW91c2VEb3duOmZ1bmN0aW9uKGUpe2lmKCFvKXt0aGlzLl9tb3VzZU1vdmVkPSExLHRoaXMuX21vdXNlU3RhcnRlZCYmdGhpcy5fbW91c2VVcChlKSx0aGlzLl9tb3VzZURvd25FdmVudD1lO3ZhciBpPXRoaXMscz0xPT09ZS53aGljaCxuPSJzdHJpbmciPT10eXBlb2YgdGhpcy5vcHRpb25zLmNhbmNlbCYmZS50YXJnZXQubm9kZU5hbWU/dChlLnRhcmdldCkuY2xvc2VzdCh0aGlzLm9wdGlvbnMuY2FuY2VsKS5sZW5ndGg6ITE7cmV0dXJuIHMmJiFuJiZ0aGlzLl9tb3VzZUNhcHR1cmUoZSk/KHRoaXMubW91c2VEZWxheU1ldD0hdGhpcy5vcHRpb25zLmRlbGF5LHRoaXMubW91c2VEZWxheU1ldHx8KHRoaXMuX21vdXNlRGVsYXlUaW1lcj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aS5tb3VzZURlbGF5TWV0PSEwfSx0aGlzLm9wdGlvbnMuZGVsYXkpKSx0aGlzLl9tb3VzZURpc3RhbmNlTWV0KGUpJiZ0aGlzLl9tb3VzZURlbGF5TWV0KGUpJiYodGhpcy5fbW91c2VTdGFydGVkPXRoaXMuX21vdXNlU3RhcnQoZSkhPT0hMSwhdGhpcy5fbW91c2VTdGFydGVkKT8oZS5wcmV2ZW50RGVmYXVsdCgpLCEwKTooITA9PT10LmRhdGEoZS50YXJnZXQsdGhpcy53aWRnZXROYW1lKyIucHJldmVudENsaWNrRXZlbnQiKSYmdC5yZW1vdmVEYXRhKGUudGFyZ2V0LHRoaXMud2lkZ2V0TmFtZSsiLnByZXZlbnRDbGlja0V2ZW50IiksdGhpcy5fbW91c2VNb3ZlRGVsZWdhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIGkuX21vdXNlTW92ZSh0KX0sdGhpcy5fbW91c2VVcERlbGVnYXRlPWZ1bmN0aW9uKHQpe3JldHVybiBpLl9tb3VzZVVwKHQpfSx0aGlzLmRvY3VtZW50LmJpbmQoIm1vdXNlbW92ZS4iK3RoaXMud2lkZ2V0TmFtZSx0aGlzLl9tb3VzZU1vdmVEZWxlZ2F0ZSkuYmluZCgibW91c2V1cC4iK3RoaXMud2lkZ2V0TmFtZSx0aGlzLl9tb3VzZVVwRGVsZWdhdGUpLGUucHJldmVudERlZmF1bHQoKSxvPSEwLCEwKSk6ITB9fSxfbW91c2VNb3ZlOmZ1bmN0aW9uKGUpe2lmKHRoaXMuX21vdXNlTW92ZWQpe2lmKHQudWkuaWUmJighZG9jdW1lbnQuZG9jdW1lbnRNb2RlfHw5PmRvY3VtZW50LmRvY3VtZW50TW9kZSkmJiFlLmJ1dHRvbilyZXR1cm4gdGhpcy5fbW91c2VVcChlKTtpZighZS53aGljaClyZXR1cm4gdGhpcy5fbW91c2VVcChlKX1yZXR1cm4oZS53aGljaHx8ZS5idXR0b24pJiYodGhpcy5fbW91c2VNb3ZlZD0hMCksdGhpcy5fbW91c2VTdGFydGVkPyh0aGlzLl9tb3VzZURyYWcoZSksZS5wcmV2ZW50RGVmYXVsdCgpKToodGhpcy5fbW91c2VEaXN0YW5jZU1ldChlKSYmdGhpcy5fbW91c2VEZWxheU1ldChlKSYmKHRoaXMuX21vdXNlU3RhcnRlZD10aGlzLl9tb3VzZVN0YXJ0KHRoaXMuX21vdXNlRG93bkV2ZW50LGUpIT09ITEsdGhpcy5fbW91c2VTdGFydGVkP3RoaXMuX21vdXNlRHJhZyhlKTp0aGlzLl9tb3VzZVVwKGUpKSwhdGhpcy5fbW91c2VTdGFydGVkKX0sX21vdXNlVXA6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZG9jdW1lbnQudW5iaW5kKCJtb3VzZW1vdmUuIit0aGlzLndpZGdldE5hbWUsdGhpcy5fbW91c2VNb3ZlRGVsZWdhdGUpLnVuYmluZCgibW91c2V1cC4iK3RoaXMud2lkZ2V0TmFtZSx0aGlzLl9tb3VzZVVwRGVsZWdhdGUpLHRoaXMuX21vdXNlU3RhcnRlZCYmKHRoaXMuX21vdXNlU3RhcnRlZD0hMSxlLnRhcmdldD09PXRoaXMuX21vdXNlRG93bkV2ZW50LnRhcmdldCYmdC5kYXRhKGUudGFyZ2V0LHRoaXMud2lkZ2V0TmFtZSsiLnByZXZlbnRDbGlja0V2ZW50IiwhMCksdGhpcy5fbW91c2VTdG9wKGUpKSxvPSExLCExfSxfbW91c2VEaXN0YW5jZU1ldDpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5tYXgoTWF0aC5hYnModGhpcy5fbW91c2VEb3duRXZlbnQucGFnZVgtdC5wYWdlWCksTWF0aC5hYnModGhpcy5fbW91c2VEb3duRXZlbnQucGFnZVktdC5wYWdlWSkpPj10aGlzLm9wdGlvbnMuZGlzdGFuY2V9LF9tb3VzZURlbGF5TWV0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubW91c2VEZWxheU1ldH0sX21vdXNlU3RhcnQ6ZnVuY3Rpb24oKXt9LF9tb3VzZURyYWc6ZnVuY3Rpb24oKXt9LF9tb3VzZVN0b3A6ZnVuY3Rpb24oKXt9LF9tb3VzZUNhcHR1cmU6ZnVuY3Rpb24oKXtyZXR1cm4hMH19KSxmdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxlLGkpe3JldHVybltwYXJzZUZsb2F0KHRbMF0pKihwLnRlc3QodFswXSk/ZS8xMDA6MSkscGFyc2VGbG9hdCh0WzFdKSoocC50ZXN0KHRbMV0pP2kvMTAwOjEpXX1mdW5jdGlvbiBpKGUsaSl7cmV0dXJuIHBhcnNlSW50KHQuY3NzKGUsaSksMTApfHwwfWZ1bmN0aW9uIHMoZSl7dmFyIGk9ZVswXTtyZXR1cm4gOT09PWkubm9kZVR5cGU/e3dpZHRoOmUud2lkdGgoKSxoZWlnaHQ6ZS5oZWlnaHQoKSxvZmZzZXQ6e3RvcDowLGxlZnQ6MH19OnQuaXNXaW5kb3coaSk/e3dpZHRoOmUud2lkdGgoKSxoZWlnaHQ6ZS5oZWlnaHQoKSxvZmZzZXQ6e3RvcDplLnNjcm9sbFRvcCgpLGxlZnQ6ZS5zY3JvbGxMZWZ0KCl9fTppLnByZXZlbnREZWZhdWx0P3t3aWR0aDowLGhlaWdodDowLG9mZnNldDp7dG9wOmkucGFnZVksbGVmdDppLnBhZ2VYfX06e3dpZHRoOmUub3V0ZXJXaWR0aCgpLGhlaWdodDplLm91dGVySGVpZ2h0KCksb2Zmc2V0OmUub2Zmc2V0KCl9fXQudWk9dC51aXx8e307dmFyIG4sbyxhPU1hdGgubWF4LHI9TWF0aC5hYnMsbD1NYXRoLnJvdW5kLGg9L2xlZnR8Y2VudGVyfHJpZ2h0LyxjPS90b3B8Y2VudGVyfGJvdHRvbS8sdT0vW1wrXC1dXGQrKFwuW1xkXSspPyU/LyxkPS9eXHcrLyxwPS8lJC8sZj10LmZuLnBvc2l0aW9uO3QucG9zaXRpb249e3Njcm9sbGJhcldpZHRoOmZ1bmN0aW9uKCl7aWYodm9pZCAwIT09bilyZXR1cm4gbjt2YXIgZSxpLHM9dCgiPGRpdiBzdHlsZT0nZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDo1MHB4O2hlaWdodDo1MHB4O292ZXJmbG93OmhpZGRlbjsnPjxkaXYgc3R5bGU9J2hlaWdodDoxMDBweDt3aWR0aDphdXRvOyc+PC9kaXY+PC9kaXY+Iiksbz1zLmNoaWxkcmVuKClbMF07cmV0dXJuIHQoImJvZHkiKS5hcHBlbmQocyksZT1vLm9mZnNldFdpZHRoLHMuY3NzKCJvdmVyZmxvdyIsInNjcm9sbCIpLGk9by5vZmZzZXRXaWR0aCxlPT09aSYmKGk9c1swXS5jbGllbnRXaWR0aCkscy5yZW1vdmUoKSxuPWUtaX0sZ2V0U2Nyb2xsSW5mbzpmdW5jdGlvbihlKXt2YXIgaT1lLmlzV2luZG93fHxlLmlzRG9jdW1lbnQ/IiI6ZS5lbGVtZW50LmNzcygib3ZlcmZsb3cteCIpLHM9ZS5pc1dpbmRvd3x8ZS5pc0RvY3VtZW50PyIiOmUuZWxlbWVudC5jc3MoIm92ZXJmbG93LXkiKSxuPSJzY3JvbGwiPT09aXx8ImF1dG8iPT09aSYmZS53aWR0aDxlLmVsZW1lbnRbMF0uc2Nyb2xsV2lkdGgsbz0ic2Nyb2xsIj09PXN8fCJhdXRvIj09PXMmJmUuaGVpZ2h0PGUuZWxlbWVudFswXS5zY3JvbGxIZWlnaHQ7cmV0dXJue3dpZHRoOm8/dC5wb3NpdGlvbi5zY3JvbGxiYXJXaWR0aCgpOjAsaGVpZ2h0Om4/dC5wb3NpdGlvbi5zY3JvbGxiYXJXaWR0aCgpOjB9fSxnZXRXaXRoaW5JbmZvOmZ1bmN0aW9uKGUpe3ZhciBpPXQoZXx8d2luZG93KSxzPXQuaXNXaW5kb3coaVswXSksbj0hIWlbMF0mJjk9PT1pWzBdLm5vZGVUeXBlO3JldHVybntlbGVtZW50OmksaXNXaW5kb3c6cyxpc0RvY3VtZW50Om4sb2Zmc2V0Omkub2Zmc2V0KCl8fHtsZWZ0OjAsdG9wOjB9LHNjcm9sbExlZnQ6aS5zY3JvbGxMZWZ0KCksc2Nyb2xsVG9wOmkuc2Nyb2xsVG9wKCksd2lkdGg6c3x8bj9pLndpZHRoKCk6aS5vdXRlcldpZHRoKCksaGVpZ2h0OnN8fG4/aS5oZWlnaHQoKTppLm91dGVySGVpZ2h0KCl9fX0sdC5mbi5wb3NpdGlvbj1mdW5jdGlvbihuKXtpZighbnx8IW4ub2YpcmV0dXJuIGYuYXBwbHkodGhpcyxhcmd1bWVudHMpO249dC5leHRlbmQoe30sbik7dmFyIHAsZyxtLF8sdixiLHk9dChuLm9mKSx3PXQucG9zaXRpb24uZ2V0V2l0aGluSW5mbyhuLndpdGhpbiksaz10LnBvc2l0aW9uLmdldFNjcm9sbEluZm8odykseD0obi5jb2xsaXNpb258fCJmbGlwIikuc3BsaXQoIiAiKSxDPXt9O3JldHVybiBiPXMoeSkseVswXS5wcmV2ZW50RGVmYXVsdCYmKG4uYXQ9ImxlZnQgdG9wIiksZz1iLndpZHRoLG09Yi5oZWlnaHQsXz1iLm9mZnNldCx2PXQuZXh0ZW5kKHt9LF8pLHQuZWFjaChbIm15IiwiYXQiXSxmdW5jdGlvbigpe3ZhciB0LGUsaT0oblt0aGlzXXx8IiIpLnNwbGl0KCIgIik7MT09PWkubGVuZ3RoJiYoaT1oLnRlc3QoaVswXSk/aS5jb25jYXQoWyJjZW50ZXIiXSk6Yy50ZXN0KGlbMF0pP1siY2VudGVyIl0uY29uY2F0KGkpOlsiY2VudGVyIiwiY2VudGVyIl0pLGlbMF09aC50ZXN0KGlbMF0pP2lbMF06ImNlbnRlciIsaVsxXT1jLnRlc3QoaVsxXSk/aVsxXToiY2VudGVyIix0PXUuZXhlYyhpWzBdKSxlPXUuZXhlYyhpWzFdKSxDW3RoaXNdPVt0P3RbMF06MCxlP2VbMF06MF0sblt0aGlzXT1bZC5leGVjKGlbMF0pWzBdLGQuZXhlYyhpWzFdKVswXV19KSwxPT09eC5sZW5ndGgmJih4WzFdPXhbMF0pLCJyaWdodCI9PT1uLmF0WzBdP3YubGVmdCs9ZzoiY2VudGVyIj09PW4uYXRbMF0mJih2LmxlZnQrPWcvMiksImJvdHRvbSI9PT1uLmF0WzFdP3YudG9wKz1tOiJjZW50ZXIiPT09bi5hdFsxXSYmKHYudG9wKz1tLzIpLHA9ZShDLmF0LGcsbSksdi5sZWZ0Kz1wWzBdLHYudG9wKz1wWzFdLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBzLGgsYz10KHRoaXMpLHU9Yy5vdXRlcldpZHRoKCksZD1jLm91dGVySGVpZ2h0KCksZj1pKHRoaXMsIm1hcmdpbkxlZnQiKSxiPWkodGhpcywibWFyZ2luVG9wIiksRD11K2YraSh0aGlzLCJtYXJnaW5SaWdodCIpK2sud2lkdGgsVD1kK2IraSh0aGlzLCJtYXJnaW5Cb3R0b20iKStrLmhlaWdodCxJPXQuZXh0ZW5kKHt9LHYpLE09ZShDLm15LGMub3V0ZXJXaWR0aCgpLGMub3V0ZXJIZWlnaHQoKSk7InJpZ2h0Ij09PW4ubXlbMF0/SS5sZWZ0LT11OiJjZW50ZXIiPT09bi5teVswXSYmKEkubGVmdC09dS8yKSwiYm90dG9tIj09PW4ubXlbMV0/SS50b3AtPWQ6ImNlbnRlciI9PT1uLm15WzFdJiYoSS50b3AtPWQvMiksSS5sZWZ0Kz1NWzBdLEkudG9wKz1NWzFdLG98fChJLmxlZnQ9bChJLmxlZnQpLEkudG9wPWwoSS50b3ApKSxzPXttYXJnaW5MZWZ0OmYsbWFyZ2luVG9wOmJ9LHQuZWFjaChbImxlZnQiLCJ0b3AiXSxmdW5jdGlvbihlLGkpe3QudWkucG9zaXRpb25beFtlXV0mJnQudWkucG9zaXRpb25beFtlXV1baV0oSSx7dGFyZ2V0V2lkdGg6Zyx0YXJnZXRIZWlnaHQ6bSxlbGVtV2lkdGg6dSxlbGVtSGVpZ2h0OmQsY29sbGlzaW9uUG9zaXRpb246cyxjb2xsaXNpb25XaWR0aDpELGNvbGxpc2lvbkhlaWdodDpULG9mZnNldDpbcFswXStNWzBdLHBbMV0rTVsxXV0sbXk6bi5teSxhdDpuLmF0LHdpdGhpbjp3LGVsZW06Y30pfSksbi51c2luZyYmKGg9ZnVuY3Rpb24odCl7dmFyIGU9Xy5sZWZ0LUkubGVmdCxpPWUrZy11LHM9Xy50b3AtSS50b3Asbz1zK20tZCxsPXt0YXJnZXQ6e2VsZW1lbnQ6eSxsZWZ0Ol8ubGVmdCx0b3A6Xy50b3Asd2lkdGg6ZyxoZWlnaHQ6bX0sZWxlbWVudDp7ZWxlbWVudDpjLGxlZnQ6SS5sZWZ0LHRvcDpJLnRvcCx3aWR0aDp1LGhlaWdodDpkfSxob3Jpem9udGFsOjA+aT8ibGVmdCI6ZT4wPyJyaWdodCI6ImNlbnRlciIsdmVydGljYWw6MD5vPyJ0b3AiOnM+MD8iYm90dG9tIjoibWlkZGxlIn07dT5nJiZnPnIoZStpKSYmKGwuaG9yaXpvbnRhbD0iY2VudGVyIiksZD5tJiZtPnIocytvKSYmKGwudmVydGljYWw9Im1pZGRsZSIpLGwuaW1wb3J0YW50PWEocihlKSxyKGkpKT5hKHIocykscihvKSk/Imhvcml6b250YWwiOiJ2ZXJ0aWNhbCIsbi51c2luZy5jYWxsKHRoaXMsdCxsKX0pLGMub2Zmc2V0KHQuZXh0ZW5kKEkse3VzaW5nOmh9KSl9KX0sdC51aS5wb3NpdGlvbj17Zml0OntsZWZ0OmZ1bmN0aW9uKHQsZSl7dmFyIGkscz1lLndpdGhpbixuPXMuaXNXaW5kb3c/cy5zY3JvbGxMZWZ0OnMub2Zmc2V0LmxlZnQsbz1zLndpZHRoLHI9dC5sZWZ0LWUuY29sbGlzaW9uUG9zaXRpb24ubWFyZ2luTGVmdCxsPW4tcixoPXIrZS5jb2xsaXNpb25XaWR0aC1vLW47ZS5jb2xsaXNpb25XaWR0aD5vP2w+MCYmMD49aD8oaT10LmxlZnQrbCtlLmNvbGxpc2lvbldpZHRoLW8tbix0LmxlZnQrPWwtaSk6dC5sZWZ0PWg+MCYmMD49bD9uOmw+aD9uK28tZS5jb2xsaXNpb25XaWR0aDpuOmw+MD90LmxlZnQrPWw6aD4wP3QubGVmdC09aDp0LmxlZnQ9YSh0LmxlZnQtcix0LmxlZnQpfSx0b3A6ZnVuY3Rpb24odCxlKXt2YXIgaSxzPWUud2l0aGluLG49cy5pc1dpbmRvdz9zLnNjcm9sbFRvcDpzLm9mZnNldC50b3Asbz1lLndpdGhpbi5oZWlnaHQscj10LnRvcC1lLmNvbGxpc2lvblBvc2l0aW9uLm1hcmdpblRvcCxsPW4tcixoPXIrZS5jb2xsaXNpb25IZWlnaHQtby1uO2UuY29sbGlzaW9uSGVpZ2h0Pm8/bD4wJiYwPj1oPyhpPXQudG9wK2wrZS5jb2xsaXNpb25IZWlnaHQtby1uLHQudG9wKz1sLWkpOnQudG9wPWg+MCYmMD49bD9uOmw+aD9uK28tZS5jb2xsaXNpb25IZWlnaHQ6bjpsPjA/dC50b3ArPWw6aD4wP3QudG9wLT1oOnQudG9wPWEodC50b3Atcix0LnRvcCl9fSxmbGlwOntsZWZ0OmZ1bmN0aW9uKHQsZSl7dmFyIGkscyxuPWUud2l0aGluLG89bi5vZmZzZXQubGVmdCtuLnNjcm9sbExlZnQsYT1uLndpZHRoLGw9bi5pc1dpbmRvdz9uLnNjcm9sbExlZnQ6bi5vZmZzZXQubGVmdCxoPXQubGVmdC1lLmNvbGxpc2lvblBvc2l0aW9uLm1hcmdpbkxlZnQsYz1oLWwsdT1oK2UuY29sbGlzaW9uV2lkdGgtYS1sLGQ9ImxlZnQiPT09ZS5teVswXT8tZS5lbGVtV2lkdGg6InJpZ2h0Ij09PWUubXlbMF0/ZS5lbGVtV2lkdGg6MCxwPSJsZWZ0Ij09PWUuYXRbMF0/ZS50YXJnZXRXaWR0aDoicmlnaHQiPT09ZS5hdFswXT8tZS50YXJnZXRXaWR0aDowLGY9LTIqZS5vZmZzZXRbMF07MD5jPyhpPXQubGVmdCtkK3ArZitlLmNvbGxpc2lvbldpZHRoLWEtbywoMD5pfHxyKGMpPmkpJiYodC5sZWZ0Kz1kK3ArZikpOnU+MCYmKHM9dC5sZWZ0LWUuY29sbGlzaW9uUG9zaXRpb24ubWFyZ2luTGVmdCtkK3ArZi1sLChzPjB8fHU+cihzKSkmJih0LmxlZnQrPWQrcCtmKSl9LHRvcDpmdW5jdGlvbih0LGUpe3ZhciBpLHMsbj1lLndpdGhpbixvPW4ub2Zmc2V0LnRvcCtuLnNjcm9sbFRvcCxhPW4uaGVpZ2h0LGw9bi5pc1dpbmRvdz9uLnNjcm9sbFRvcDpuLm9mZnNldC50b3AsaD10LnRvcC1lLmNvbGxpc2lvblBvc2l0aW9uLm1hcmdpblRvcCxjPWgtbCx1PWgrZS5jb2xsaXNpb25IZWlnaHQtYS1sLGQ9InRvcCI9PT1lLm15WzFdLHA9ZD8tZS5lbGVtSGVpZ2h0OiJib3R0b20iPT09ZS5teVsxXT9lLmVsZW1IZWlnaHQ6MCxmPSJ0b3AiPT09ZS5hdFsxXT9lLnRhcmdldEhlaWdodDoiYm90dG9tIj09PWUuYXRbMV0/LWUudGFyZ2V0SGVpZ2h0OjAsZz0tMiplLm9mZnNldFsxXTswPmM/KHM9dC50b3ArcCtmK2crZS5jb2xsaXNpb25IZWlnaHQtYS1vLCgwPnN8fHIoYyk+cykmJih0LnRvcCs9cCtmK2cpKTp1PjAmJihpPXQudG9wLWUuY29sbGlzaW9uUG9zaXRpb24ubWFyZ2luVG9wK3ArZitnLWwsKGk+MHx8dT5yKGkpKSYmKHQudG9wKz1wK2YrZykpfX0sZmxpcGZpdDp7bGVmdDpmdW5jdGlvbigpe3QudWkucG9zaXRpb24uZmxpcC5sZWZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0LnVpLnBvc2l0aW9uLmZpdC5sZWZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sdG9wOmZ1bmN0aW9uKCl7dC51aS5wb3NpdGlvbi5mbGlwLnRvcC5hcHBseSh0aGlzLGFyZ3VtZW50cyksdC51aS5wb3NpdGlvbi5maXQudG9wLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19fSxmdW5jdGlvbigpe3ZhciBlLGkscyxuLGEscj1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdLGw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7ZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KHI/ImRpdiI6ImJvZHkiKSxzPXt2aXNpYmlsaXR5OiJoaWRkZW4iLHdpZHRoOjAsaGVpZ2h0OjAsYm9yZGVyOjAsbWFyZ2luOjAsYmFja2dyb3VuZDoibm9uZSJ9LHImJnQuZXh0ZW5kKHMse3Bvc2l0aW9uOiJhYnNvbHV0ZSIsbGVmdDoiLTEwMDBweCIsdG9wOiItMTAwMHB4In0pO2ZvcihhIGluIHMpZS5zdHlsZVthXT1zW2FdO2UuYXBwZW5kQ2hpbGQobCksaT1yfHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsaS5pbnNlcnRCZWZvcmUoZSxpLmZpcnN0Q2hpbGQpLGwuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAxMC43NDMyMjIycHg7IixuPXQobCkub2Zmc2V0KCkubGVmdCxvPW4+MTAmJjExPm4sZS5pbm5lckhUTUw9IiIsaS5yZW1vdmVDaGlsZChlKX0oKX0oKSx0LnVpLnBvc2l0aW9uLHQud2lkZ2V0KCJ1aS5kcmFnZ2FibGUiLHQudWkubW91c2Use3ZlcnNpb246IjEuMTEuNCIsd2lkZ2V0RXZlbnRQcmVmaXg6ImRyYWciLG9wdGlvbnM6e2FkZENsYXNzZXM6ITAsYXBwZW5kVG86InBhcmVudCIsYXhpczohMSxjb25uZWN0VG9Tb3J0YWJsZTohMSxjb250YWlubWVudDohMSxjdXJzb3I6ImF1dG8iLGN1cnNvckF0OiExLGdyaWQ6ITEsaGFuZGxlOiExLGhlbHBlcjoib3JpZ2luYWwiLGlmcmFtZUZpeDohMSxvcGFjaXR5OiExLHJlZnJlc2hQb3NpdGlvbnM6ITEscmV2ZXJ0OiExLHJldmVydER1cmF0aW9uOjUwMCxzY29wZToiZGVmYXVsdCIsc2Nyb2xsOiEwLHNjcm9sbFNlbnNpdGl2aXR5OjIwLHNjcm9sbFNwZWVkOjIwLHNuYXA6ITEsc25hcE1vZGU6ImJvdGgiLHNuYXBUb2xlcmFuY2U6MjAsc3RhY2s6ITEsekluZGV4OiExLGRyYWc6bnVsbCxzdGFydDpudWxsLHN0b3A6bnVsbH0sX2NyZWF0ZTpmdW5jdGlvbigpeyJvcmlnaW5hbCI9PT10aGlzLm9wdGlvbnMuaGVscGVyJiZ0aGlzLl9zZXRQb3NpdGlvblJlbGF0aXZlKCksdGhpcy5vcHRpb25zLmFkZENsYXNzZXMmJnRoaXMuZWxlbWVudC5hZGRDbGFzcygidWktZHJhZ2dhYmxlIiksdGhpcy5vcHRpb25zLmRpc2FibGVkJiZ0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLWRyYWdnYWJsZS1kaXNhYmxlZCIpLHRoaXMuX3NldEhhbmRsZUNsYXNzTmFtZSgpLHRoaXMuX21vdXNlSW5pdCgpfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKHQsZSl7dGhpcy5fc3VwZXIodCxlKSwiaGFuZGxlIj09PXQmJih0aGlzLl9yZW1vdmVIYW5kbGVDbGFzc05hbWUoKSx0aGlzLl9zZXRIYW5kbGVDbGFzc05hbWUoKSl9LF9kZXN0cm95OmZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMuaGVscGVyfHx0aGlzLmVsZW1lbnQpLmlzKCIudWktZHJhZ2dhYmxlLWRyYWdnaW5nIik/KHRoaXMuZGVzdHJveU9uQ2xlYXI9ITAsdm9pZCAwKToodGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1kcmFnZ2FibGUgdWktZHJhZ2dhYmxlLWRyYWdnaW5nIHVpLWRyYWdnYWJsZS1kaXNhYmxlZCIpLHRoaXMuX3JlbW92ZUhhbmRsZUNsYXNzTmFtZSgpLHRoaXMuX21vdXNlRGVzdHJveSgpLHZvaWQgMCl9LF9tb3VzZUNhcHR1cmU6ZnVuY3Rpb24oZSl7dmFyIGk9dGhpcy5vcHRpb25zO3JldHVybiB0aGlzLl9ibHVyQWN0aXZlRWxlbWVudChlKSx0aGlzLmhlbHBlcnx8aS5kaXNhYmxlZHx8dChlLnRhcmdldCkuY2xvc2VzdCgiLnVpLXJlc2l6YWJsZS1oYW5kbGUiKS5sZW5ndGg+MD8hMToodGhpcy5oYW5kbGU9dGhpcy5fZ2V0SGFuZGxlKGUpLHRoaXMuaGFuZGxlPyh0aGlzLl9ibG9ja0ZyYW1lcyhpLmlmcmFtZUZpeD09PSEwPyJpZnJhbWUiOmkuaWZyYW1lRml4KSwhMCk6ITEpfSxfYmxvY2tGcmFtZXM6ZnVuY3Rpb24oZSl7dGhpcy5pZnJhbWVCbG9ja3M9dGhpcy5kb2N1bWVudC5maW5kKGUpLm1hcChmdW5jdGlvbigpe3ZhciBlPXQodGhpcyk7cmV0dXJuIHQoIjxkaXY+IikuY3NzKCJwb3NpdGlvbiIsImFic29sdXRlIikuYXBwZW5kVG8oZS5wYXJlbnQoKSkub3V0ZXJXaWR0aChlLm91dGVyV2lkdGgoKSkub3V0ZXJIZWlnaHQoZS5vdXRlckhlaWdodCgpKS5vZmZzZXQoZS5vZmZzZXQoKSlbMF19KX0sX3VuYmxvY2tGcmFtZXM6ZnVuY3Rpb24oKXt0aGlzLmlmcmFtZUJsb2NrcyYmKHRoaXMuaWZyYW1lQmxvY2tzLnJlbW92ZSgpLGRlbGV0ZSB0aGlzLmlmcmFtZUJsb2Nrcyl9LF9ibHVyQWN0aXZlRWxlbWVudDpmdW5jdGlvbihlKXt2YXIgaT10aGlzLmRvY3VtZW50WzBdO2lmKHRoaXMuaGFuZGxlRWxlbWVudC5pcyhlLnRhcmdldCkpdHJ5e2kuYWN0aXZlRWxlbWVudCYmImJvZHkiIT09aS5hY3RpdmVFbGVtZW50Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkmJnQoaS5hY3RpdmVFbGVtZW50KS5ibHVyKCl9Y2F0Y2gocyl7fX0sX21vdXNlU3RhcnQ6ZnVuY3Rpb24oZSl7dmFyIGk9dGhpcy5vcHRpb25zO3JldHVybiB0aGlzLmhlbHBlcj10aGlzLl9jcmVhdGVIZWxwZXIoZSksdGhpcy5oZWxwZXIuYWRkQ2xhc3MoInVpLWRyYWdnYWJsZS1kcmFnZ2luZyIpLHRoaXMuX2NhY2hlSGVscGVyUHJvcG9ydGlvbnMoKSx0LnVpLmRkbWFuYWdlciYmKHQudWkuZGRtYW5hZ2VyLmN1cnJlbnQ9dGhpcyksdGhpcy5fY2FjaGVNYXJnaW5zKCksdGhpcy5jc3NQb3NpdGlvbj10aGlzLmhlbHBlci5jc3MoInBvc2l0aW9uIiksdGhpcy5zY3JvbGxQYXJlbnQ9dGhpcy5oZWxwZXIuc2Nyb2xsUGFyZW50KCEwKSx0aGlzLm9mZnNldFBhcmVudD10aGlzLmhlbHBlci5vZmZzZXRQYXJlbnQoKSx0aGlzLmhhc0ZpeGVkQW5jZXN0b3I9dGhpcy5oZWxwZXIucGFyZW50cygpLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiJmaXhlZCI9PT10KHRoaXMpLmNzcygicG9zaXRpb24iKX0pLmxlbmd0aD4wLHRoaXMucG9zaXRpb25BYnM9dGhpcy5lbGVtZW50Lm9mZnNldCgpLHRoaXMuX3JlZnJlc2hPZmZzZXRzKGUpLHRoaXMub3JpZ2luYWxQb3NpdGlvbj10aGlzLnBvc2l0aW9uPXRoaXMuX2dlbmVyYXRlUG9zaXRpb24oZSwhMSksdGhpcy5vcmlnaW5hbFBhZ2VYPWUucGFnZVgsdGhpcy5vcmlnaW5hbFBhZ2VZPWUucGFnZVksaS5jdXJzb3JBdCYmdGhpcy5fYWRqdXN0T2Zmc2V0RnJvbUhlbHBlcihpLmN1cnNvckF0KSx0aGlzLl9zZXRDb250YWlubWVudCgpLHRoaXMuX3RyaWdnZXIoInN0YXJ0IixlKT09PSExPyh0aGlzLl9jbGVhcigpLCExKToodGhpcy5fY2FjaGVIZWxwZXJQcm9wb3J0aW9ucygpLHQudWkuZGRtYW5hZ2VyJiYhaS5kcm9wQmVoYXZpb3VyJiZ0LnVpLmRkbWFuYWdlci5wcmVwYXJlT2Zmc2V0cyh0aGlzLGUpLHRoaXMuX25vcm1hbGl6ZVJpZ2h0Qm90dG9tKCksdGhpcy5fbW91c2VEcmFnKGUsITApLHQudWkuZGRtYW5hZ2VyJiZ0LnVpLmRkbWFuYWdlci5kcmFnU3RhcnQodGhpcyxlKSwhMCl9LF9yZWZyZXNoT2Zmc2V0czpmdW5jdGlvbih0KXt0aGlzLm9mZnNldD17dG9wOnRoaXMucG9zaXRpb25BYnMudG9wLXRoaXMubWFyZ2lucy50b3AsbGVmdDp0aGlzLnBvc2l0aW9uQWJzLmxlZnQtdGhpcy5tYXJnaW5zLmxlZnQsc2Nyb2xsOiExLHBhcmVudDp0aGlzLl9nZXRQYXJlbnRPZmZzZXQoKSxyZWxhdGl2ZTp0aGlzLl9nZXRSZWxhdGl2ZU9mZnNldCgpfSx0aGlzLm9mZnNldC5jbGljaz17bGVmdDp0LnBhZ2VYLXRoaXMub2Zmc2V0LmxlZnQsdG9wOnQucGFnZVktdGhpcy5vZmZzZXQudG9wfX0sX21vdXNlRHJhZzpmdW5jdGlvbihlLGkpe2lmKHRoaXMuaGFzRml4ZWRBbmNlc3RvciYmKHRoaXMub2Zmc2V0LnBhcmVudD10aGlzLl9nZXRQYXJlbnRPZmZzZXQoKSksdGhpcy5wb3NpdGlvbj10aGlzLl9nZW5lcmF0ZVBvc2l0aW9uKGUsITApLHRoaXMucG9zaXRpb25BYnM9dGhpcy5fY29udmVydFBvc2l0aW9uVG8oImFic29sdXRlIiksIWkpe3ZhciBzPXRoaXMuX3VpSGFzaCgpO2lmKHRoaXMuX3RyaWdnZXIoImRyYWciLGUscyk9PT0hMSlyZXR1cm4gdGhpcy5fbW91c2VVcCh7fSksITE7dGhpcy5wb3NpdGlvbj1zLnBvc2l0aW9ufXJldHVybiB0aGlzLmhlbHBlclswXS5zdHlsZS5sZWZ0PXRoaXMucG9zaXRpb24ubGVmdCsicHgiLHRoaXMuaGVscGVyWzBdLnN0eWxlLnRvcD10aGlzLnBvc2l0aW9uLnRvcCsicHgiLHQudWkuZGRtYW5hZ2VyJiZ0LnVpLmRkbWFuYWdlci5kcmFnKHRoaXMsZSksITF9LF9tb3VzZVN0b3A6ZnVuY3Rpb24oZSl7dmFyIGk9dGhpcyxzPSExO3JldHVybiB0LnVpLmRkbWFuYWdlciYmIXRoaXMub3B0aW9ucy5kcm9wQmVoYXZpb3VyJiYocz10LnVpLmRkbWFuYWdlci5kcm9wKHRoaXMsZSkpLHRoaXMuZHJvcHBlZCYmKHM9dGhpcy5kcm9wcGVkLHRoaXMuZHJvcHBlZD0hMSksImludmFsaWQiPT09dGhpcy5vcHRpb25zLnJldmVydCYmIXN8fCJ2YWxpZCI9PT10aGlzLm9wdGlvbnMucmV2ZXJ0JiZzfHx0aGlzLm9wdGlvbnMucmV2ZXJ0PT09ITB8fHQuaXNGdW5jdGlvbih0aGlzLm9wdGlvbnMucmV2ZXJ0KSYmdGhpcy5vcHRpb25zLnJldmVydC5jYWxsKHRoaXMuZWxlbWVudCxzKT90KHRoaXMuaGVscGVyKS5hbmltYXRlKHRoaXMub3JpZ2luYWxQb3NpdGlvbixwYXJzZUludCh0aGlzLm9wdGlvbnMucmV2ZXJ0RHVyYXRpb24sMTApLGZ1bmN0aW9uKCl7aS5fdHJpZ2dlcigic3RvcCIsZSkhPT0hMSYmaS5fY2xlYXIoKX0pOnRoaXMuX3RyaWdnZXIoInN0b3AiLGUpIT09ITEmJnRoaXMuX2NsZWFyKCksITF9LF9tb3VzZVVwOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl91bmJsb2NrRnJhbWVzKCksdC51aS5kZG1hbmFnZXImJnQudWkuZGRtYW5hZ2VyLmRyYWdTdG9wKHRoaXMsZSksdGhpcy5oYW5kbGVFbGVtZW50LmlzKGUudGFyZ2V0KSYmdGhpcy5lbGVtZW50LmZvY3VzKCksdC51aS5tb3VzZS5wcm90b3R5cGUuX21vdXNlVXAuY2FsbCh0aGlzLGUpfSxjYW5jZWw6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5oZWxwZXIuaXMoIi51aS1kcmFnZ2FibGUtZHJhZ2dpbmciKT90aGlzLl9tb3VzZVVwKHt9KTp0aGlzLl9jbGVhcigpLHRoaXN9LF9nZXRIYW5kbGU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMub3B0aW9ucy5oYW5kbGU/ISF0KGUudGFyZ2V0KS5jbG9zZXN0KHRoaXMuZWxlbWVudC5maW5kKHRoaXMub3B0aW9ucy5oYW5kbGUpKS5sZW5ndGg6ITB9LF9zZXRIYW5kbGVDbGFzc05hbWU6ZnVuY3Rpb24oKXt0aGlzLmhhbmRsZUVsZW1lbnQ9dGhpcy5vcHRpb25zLmhhbmRsZT90aGlzLmVsZW1lbnQuZmluZCh0aGlzLm9wdGlvbnMuaGFuZGxlKTp0aGlzLmVsZW1lbnQsdGhpcy5oYW5kbGVFbGVtZW50LmFkZENsYXNzKCJ1aS1kcmFnZ2FibGUtaGFuZGxlIil9LF9yZW1vdmVIYW5kbGVDbGFzc05hbWU6ZnVuY3Rpb24oKXt0aGlzLmhhbmRsZUVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLWRyYWdnYWJsZS1oYW5kbGUiKX0sX2NyZWF0ZUhlbHBlcjpmdW5jdGlvbihlKXt2YXIgaT10aGlzLm9wdGlvbnMscz10LmlzRnVuY3Rpb24oaS5oZWxwZXIpLG49cz90KGkuaGVscGVyLmFwcGx5KHRoaXMuZWxlbWVudFswXSxbZV0pKToiY2xvbmUiPT09aS5oZWxwZXI/dGhpcy5lbGVtZW50LmNsb25lKCkucmVtb3ZlQXR0cigiaWQiKTp0aGlzLmVsZW1lbnQ7cmV0dXJuIG4ucGFyZW50cygiYm9keSIpLmxlbmd0aHx8bi5hcHBlbmRUbygicGFyZW50Ij09PWkuYXBwZW5kVG8/dGhpcy5lbGVtZW50WzBdLnBhcmVudE5vZGU6aS5hcHBlbmRUbykscyYmblswXT09PXRoaXMuZWxlbWVudFswXSYmdGhpcy5fc2V0UG9zaXRpb25SZWxhdGl2ZSgpLG5bMF09PT10aGlzLmVsZW1lbnRbMF18fC8oZml4ZWR8YWJzb2x1dGUpLy50ZXN0KG4uY3NzKCJwb3NpdGlvbiIpKXx8bi5jc3MoInBvc2l0aW9uIiwiYWJzb2x1dGUiKSxufSxfc2V0UG9zaXRpb25SZWxhdGl2ZTpmdW5jdGlvbigpey9eKD86cnxhfGYpLy50ZXN0KHRoaXMuZWxlbWVudC5jc3MoInBvc2l0aW9uIikpfHwodGhpcy5lbGVtZW50WzBdLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIpfSxfYWRqdXN0T2Zmc2V0RnJvbUhlbHBlcjpmdW5jdGlvbihlKXsic3RyaW5nIj09dHlwZW9mIGUmJihlPWUuc3BsaXQoIiAiKSksdC5pc0FycmF5KGUpJiYoZT17bGVmdDorZVswXSx0b3A6K2VbMV18fDB9KSwibGVmdCJpbiBlJiYodGhpcy5vZmZzZXQuY2xpY2subGVmdD1lLmxlZnQrdGhpcy5tYXJnaW5zLmxlZnQpLCJyaWdodCJpbiBlJiYodGhpcy5vZmZzZXQuY2xpY2subGVmdD10aGlzLmhlbHBlclByb3BvcnRpb25zLndpZHRoLWUucmlnaHQrdGhpcy5tYXJnaW5zLmxlZnQpLCJ0b3AiaW4gZSYmKHRoaXMub2Zmc2V0LmNsaWNrLnRvcD1lLnRvcCt0aGlzLm1hcmdpbnMudG9wKSwiYm90dG9tImluIGUmJih0aGlzLm9mZnNldC5jbGljay50b3A9dGhpcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQtZS5ib3R0b20rdGhpcy5tYXJnaW5zLnRvcCl9LF9pc1Jvb3ROb2RlOmZ1bmN0aW9uKHQpe3JldHVybi8oaHRtbHxib2R5KS9pLnRlc3QodC50YWdOYW1lKXx8dD09PXRoaXMuZG9jdW1lbnRbMF19LF9nZXRQYXJlbnRPZmZzZXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9mZnNldFBhcmVudC5vZmZzZXQoKSxpPXRoaXMuZG9jdW1lbnRbMF07cmV0dXJuImFic29sdXRlIj09PXRoaXMuY3NzUG9zaXRpb24mJnRoaXMuc2Nyb2xsUGFyZW50WzBdIT09aSYmdC5jb250YWlucyh0aGlzLnNjcm9sbFBhcmVudFswXSx0aGlzLm9mZnNldFBhcmVudFswXSkmJihlLmxlZnQrPXRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbExlZnQoKSxlLnRvcCs9dGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsVG9wKCkpLHRoaXMuX2lzUm9vdE5vZGUodGhpcy5vZmZzZXRQYXJlbnRbMF0pJiYoZT17dG9wOjAsbGVmdDowfSkse3RvcDplLnRvcCsocGFyc2VJbnQodGhpcy5vZmZzZXRQYXJlbnQuY3NzKCJib3JkZXJUb3BXaWR0aCIpLDEwKXx8MCksbGVmdDplLmxlZnQrKHBhcnNlSW50KHRoaXMub2Zmc2V0UGFyZW50LmNzcygiYm9yZGVyTGVmdFdpZHRoIiksMTApfHwwKX19LF9nZXRSZWxhdGl2ZU9mZnNldDpmdW5jdGlvbigpe2lmKCJyZWxhdGl2ZSIhPT10aGlzLmNzc1Bvc2l0aW9uKXJldHVybnt0b3A6MCxsZWZ0OjB9O3ZhciB0PXRoaXMuZWxlbWVudC5wb3NpdGlvbigpLGU9dGhpcy5faXNSb290Tm9kZSh0aGlzLnNjcm9sbFBhcmVudFswXSk7cmV0dXJue3RvcDp0LnRvcC0ocGFyc2VJbnQodGhpcy5oZWxwZXIuY3NzKCJ0b3AiKSwxMCl8fDApKyhlPzA6dGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsVG9wKCkpLGxlZnQ6dC5sZWZ0LShwYXJzZUludCh0aGlzLmhlbHBlci5jc3MoImxlZnQiKSwxMCl8fDApKyhlPzA6dGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsTGVmdCgpKX19LF9jYWNoZU1hcmdpbnM6ZnVuY3Rpb24oKXt0aGlzLm1hcmdpbnM9e2xlZnQ6cGFyc2VJbnQodGhpcy5lbGVtZW50LmNzcygibWFyZ2luTGVmdCIpLDEwKXx8MCx0b3A6cGFyc2VJbnQodGhpcy5lbGVtZW50LmNzcygibWFyZ2luVG9wIiksMTApfHwwLHJpZ2h0OnBhcnNlSW50KHRoaXMuZWxlbWVudC5jc3MoIm1hcmdpblJpZ2h0IiksMTApfHwwLGJvdHRvbTpwYXJzZUludCh0aGlzLmVsZW1lbnQuY3NzKCJtYXJnaW5Cb3R0b20iKSwxMCl8fDB9fSxfY2FjaGVIZWxwZXJQcm9wb3J0aW9uczpmdW5jdGlvbigpe3RoaXMuaGVscGVyUHJvcG9ydGlvbnM9e3dpZHRoOnRoaXMuaGVscGVyLm91dGVyV2lkdGgoKSxoZWlnaHQ6dGhpcy5oZWxwZXIub3V0ZXJIZWlnaHQoKX19LF9zZXRDb250YWlubWVudDpmdW5jdGlvbigpe3ZhciBlLGkscyxuPXRoaXMub3B0aW9ucyxvPXRoaXMuZG9jdW1lbnRbMF07cmV0dXJuIHRoaXMucmVsYXRpdmVDb250YWluZXI9bnVsbCxuLmNvbnRhaW5tZW50PyJ3aW5kb3ciPT09bi5jb250YWlubWVudD8odGhpcy5jb250YWlubWVudD1bdCh3aW5kb3cpLnNjcm9sbExlZnQoKS10aGlzLm9mZnNldC5yZWxhdGl2ZS5sZWZ0LXRoaXMub2Zmc2V0LnBhcmVudC5sZWZ0LHQod2luZG93KS5zY3JvbGxUb3AoKS10aGlzLm9mZnNldC5yZWxhdGl2ZS50b3AtdGhpcy5vZmZzZXQucGFyZW50LnRvcCx0KHdpbmRvdykuc2Nyb2xsTGVmdCgpK3Qod2luZG93KS53aWR0aCgpLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgtdGhpcy5tYXJnaW5zLmxlZnQsdCh3aW5kb3cpLnNjcm9sbFRvcCgpKyh0KHdpbmRvdykuaGVpZ2h0KCl8fG8uYm9keS5wYXJlbnROb2RlLnNjcm9sbEhlaWdodCktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQtdGhpcy5tYXJnaW5zLnRvcF0sdm9pZCAwKToiZG9jdW1lbnQiPT09bi5jb250YWlubWVudD8odGhpcy5jb250YWlubWVudD1bMCwwLHQobykud2lkdGgoKS10aGlzLmhlbHBlclByb3BvcnRpb25zLndpZHRoLXRoaXMubWFyZ2lucy5sZWZ0LCh0KG8pLmhlaWdodCgpfHxvLmJvZHkucGFyZW50Tm9kZS5zY3JvbGxIZWlnaHQpLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LXRoaXMubWFyZ2lucy50b3BdLHZvaWQgMCk6bi5jb250YWlubWVudC5jb25zdHJ1Y3Rvcj09PUFycmF5Pyh0aGlzLmNvbnRhaW5tZW50PW4uY29udGFpbm1lbnQsdm9pZCAwKTooInBhcmVudCI9PT1uLmNvbnRhaW5tZW50JiYobi5jb250YWlubWVudD10aGlzLmhlbHBlclswXS5wYXJlbnROb2RlKSxpPXQobi5jb250YWlubWVudCkscz1pWzBdLHMmJihlPS8oc2Nyb2xsfGF1dG8pLy50ZXN0KGkuY3NzKCJvdmVyZmxvdyIpKSx0aGlzLmNvbnRhaW5tZW50PVsocGFyc2VJbnQoaS5jc3MoImJvcmRlckxlZnRXaWR0aCIpLDEwKXx8MCkrKHBhcnNlSW50KGkuY3NzKCJwYWRkaW5nTGVmdCIpLDEwKXx8MCksKHBhcnNlSW50KGkuY3NzKCJib3JkZXJUb3BXaWR0aCIpLDEwKXx8MCkrKHBhcnNlSW50KGkuY3NzKCJwYWRkaW5nVG9wIiksMTApfHwwKSwoZT9NYXRoLm1heChzLnNjcm9sbFdpZHRoLHMub2Zmc2V0V2lkdGgpOnMub2Zmc2V0V2lkdGgpLShwYXJzZUludChpLmNzcygiYm9yZGVyUmlnaHRXaWR0aCIpLDEwKXx8MCktKHBhcnNlSW50KGkuY3NzKCJwYWRkaW5nUmlnaHQiKSwxMCl8fDApLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgtdGhpcy5tYXJnaW5zLmxlZnQtdGhpcy5tYXJnaW5zLnJpZ2h0LChlP01hdGgubWF4KHMuc2Nyb2xsSGVpZ2h0LHMub2Zmc2V0SGVpZ2h0KTpzLm9mZnNldEhlaWdodCktKHBhcnNlSW50KGkuY3NzKCJib3JkZXJCb3R0b21XaWR0aCIpLDEwKXx8MCktKHBhcnNlSW50KGkuY3NzKCJwYWRkaW5nQm90dG9tIiksMTApfHwwKS10aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC10aGlzLm1hcmdpbnMudG9wLXRoaXMubWFyZ2lucy5ib3R0b21dLHRoaXMucmVsYXRpdmVDb250YWluZXI9aSksdm9pZCAwKToodGhpcy5jb250YWlubWVudD1udWxsLHZvaWQgMCl9LF9jb252ZXJ0UG9zaXRpb25UbzpmdW5jdGlvbih0LGUpe2V8fChlPXRoaXMucG9zaXRpb24pO3ZhciBpPSJhYnNvbHV0ZSI9PT10PzE6LTEscz10aGlzLl9pc1Jvb3ROb2RlKHRoaXMuc2Nyb2xsUGFyZW50WzBdKTtyZXR1cm57dG9wOmUudG9wK3RoaXMub2Zmc2V0LnJlbGF0aXZlLnRvcCppK3RoaXMub2Zmc2V0LnBhcmVudC50b3AqaS0oImZpeGVkIj09PXRoaXMuY3NzUG9zaXRpb24/LXRoaXMub2Zmc2V0LnNjcm9sbC50b3A6cz8wOnRoaXMub2Zmc2V0LnNjcm9sbC50b3ApKmksbGVmdDplLmxlZnQrdGhpcy5vZmZzZXQucmVsYXRpdmUubGVmdCppK3RoaXMub2Zmc2V0LnBhcmVudC5sZWZ0KmktKCJmaXhlZCI9PT10aGlzLmNzc1Bvc2l0aW9uPy10aGlzLm9mZnNldC5zY3JvbGwubGVmdDpzPzA6dGhpcy5vZmZzZXQuc2Nyb2xsLmxlZnQpKml9fSxfZ2VuZXJhdGVQb3NpdGlvbjpmdW5jdGlvbih0LGUpe3ZhciBpLHMsbixvLGE9dGhpcy5vcHRpb25zLHI9dGhpcy5faXNSb290Tm9kZSh0aGlzLnNjcm9sbFBhcmVudFswXSksbD10LnBhZ2VYLGg9dC5wYWdlWTtyZXR1cm4gciYmdGhpcy5vZmZzZXQuc2Nyb2xsfHwodGhpcy5vZmZzZXQuc2Nyb2xsPXt0b3A6dGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsVG9wKCksbGVmdDp0aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxMZWZ0KCl9KSxlJiYodGhpcy5jb250YWlubWVudCYmKHRoaXMucmVsYXRpdmVDb250YWluZXI/KHM9dGhpcy5yZWxhdGl2ZUNvbnRhaW5lci5vZmZzZXQoKSxpPVt0aGlzLmNvbnRhaW5tZW50WzBdK3MubGVmdCx0aGlzLmNvbnRhaW5tZW50WzFdK3MudG9wLHRoaXMuY29udGFpbm1lbnRbMl0rcy5sZWZ0LHRoaXMuY29udGFpbm1lbnRbM10rcy50b3BdKTppPXRoaXMuY29udGFpbm1lbnQsdC5wYWdlWC10aGlzLm9mZnNldC5jbGljay5sZWZ0PGlbMF0mJihsPWlbMF0rdGhpcy5vZmZzZXQuY2xpY2subGVmdCksdC5wYWdlWS10aGlzLm9mZnNldC5jbGljay50b3A8aVsxXSYmKGg9aVsxXSt0aGlzLm9mZnNldC5jbGljay50b3ApLHQucGFnZVgtdGhpcy5vZmZzZXQuY2xpY2subGVmdD5pWzJdJiYobD1pWzJdK3RoaXMub2Zmc2V0LmNsaWNrLmxlZnQpLHQucGFnZVktdGhpcy5vZmZzZXQuY2xpY2sudG9wPmlbM10mJihoPWlbM10rdGhpcy5vZmZzZXQuY2xpY2sudG9wKSksYS5ncmlkJiYobj1hLmdyaWRbMV0/dGhpcy5vcmlnaW5hbFBhZ2VZK01hdGgucm91bmQoKGgtdGhpcy5vcmlnaW5hbFBhZ2VZKS9hLmdyaWRbMV0pKmEuZ3JpZFsxXTp0aGlzLm9yaWdpbmFsUGFnZVksaD1pP24tdGhpcy5vZmZzZXQuY2xpY2sudG9wPj1pWzFdfHxuLXRoaXMub2Zmc2V0LmNsaWNrLnRvcD5pWzNdP246bi10aGlzLm9mZnNldC5jbGljay50b3A+PWlbMV0/bi1hLmdyaWRbMV06bithLmdyaWRbMV06bixvPWEuZ3JpZFswXT90aGlzLm9yaWdpbmFsUGFnZVgrTWF0aC5yb3VuZCgobC10aGlzLm9yaWdpbmFsUGFnZVgpL2EuZ3JpZFswXSkqYS5ncmlkWzBdOnRoaXMub3JpZ2luYWxQYWdlWCxsPWk/by10aGlzLm9mZnNldC5jbGljay5sZWZ0Pj1pWzBdfHxvLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ+aVsyXT9vOm8tdGhpcy5vZmZzZXQuY2xpY2subGVmdD49aVswXT9vLWEuZ3JpZFswXTpvK2EuZ3JpZFswXTpvKSwieSI9PT1hLmF4aXMmJihsPXRoaXMub3JpZ2luYWxQYWdlWCksIngiPT09YS5heGlzJiYoaD10aGlzLm9yaWdpbmFsUGFnZVkpKSx7dG9wOmgtdGhpcy5vZmZzZXQuY2xpY2sudG9wLXRoaXMub2Zmc2V0LnJlbGF0aXZlLnRvcC10aGlzLm9mZnNldC5wYXJlbnQudG9wKygiZml4ZWQiPT09dGhpcy5jc3NQb3NpdGlvbj8tdGhpcy5vZmZzZXQuc2Nyb2xsLnRvcDpyPzA6dGhpcy5vZmZzZXQuc2Nyb2xsLnRvcCksbGVmdDpsLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQtdGhpcy5vZmZzZXQucmVsYXRpdmUubGVmdC10aGlzLm9mZnNldC5wYXJlbnQubGVmdCsoImZpeGVkIj09PXRoaXMuY3NzUG9zaXRpb24/LXRoaXMub2Zmc2V0LnNjcm9sbC5sZWZ0OnI/MDp0aGlzLm9mZnNldC5zY3JvbGwubGVmdCl9fSxfY2xlYXI6ZnVuY3Rpb24oKXt0aGlzLmhlbHBlci5yZW1vdmVDbGFzcygidWktZHJhZ2dhYmxlLWRyYWdnaW5nIiksdGhpcy5oZWxwZXJbMF09PT10aGlzLmVsZW1lbnRbMF18fHRoaXMuY2FuY2VsSGVscGVyUmVtb3ZhbHx8dGhpcy5oZWxwZXIucmVtb3ZlKCksdGhpcy5oZWxwZXI9bnVsbCx0aGlzLmNhbmNlbEhlbHBlclJlbW92YWw9ITEsdGhpcy5kZXN0cm95T25DbGVhciYmdGhpcy5kZXN0cm95KCl9LF9ub3JtYWxpemVSaWdodEJvdHRvbTpmdW5jdGlvbigpeyJ5IiE9PXRoaXMub3B0aW9ucy5heGlzJiYiYXV0byIhPT10aGlzLmhlbHBlci5jc3MoInJpZ2h0IikmJih0aGlzLmhlbHBlci53aWR0aCh0aGlzLmhlbHBlci53aWR0aCgpKSx0aGlzLmhlbHBlci5jc3MoInJpZ2h0IiwiYXV0byIpKSwieCIhPT10aGlzLm9wdGlvbnMuYXhpcyYmImF1dG8iIT09dGhpcy5oZWxwZXIuY3NzKCJib3R0b20iKSYmKHRoaXMuaGVscGVyLmhlaWdodCh0aGlzLmhlbHBlci5oZWlnaHQoKSksdGhpcy5oZWxwZXIuY3NzKCJib3R0b20iLCJhdXRvIikpfSxfdHJpZ2dlcjpmdW5jdGlvbihlLGkscyl7cmV0dXJuIHM9c3x8dGhpcy5fdWlIYXNoKCksdC51aS5wbHVnaW4uY2FsbCh0aGlzLGUsW2kscyx0aGlzXSwhMCksL14oZHJhZ3xzdGFydHxzdG9wKS8udGVzdChlKSYmKHRoaXMucG9zaXRpb25BYnM9dGhpcy5fY29udmVydFBvc2l0aW9uVG8oImFic29sdXRlIikscy5vZmZzZXQ9dGhpcy5wb3NpdGlvbkFicyksdC5XaWRnZXQucHJvdG90eXBlLl90cmlnZ2VyLmNhbGwodGhpcyxlLGkscyl9LHBsdWdpbnM6e30sX3VpSGFzaDpmdW5jdGlvbigpe3JldHVybntoZWxwZXI6dGhpcy5oZWxwZXIscG9zaXRpb246dGhpcy5wb3NpdGlvbixvcmlnaW5hbFBvc2l0aW9uOnRoaXMub3JpZ2luYWxQb3NpdGlvbixvZmZzZXQ6dGhpcy5wb3NpdGlvbkFic319fSksdC51aS5wbHVnaW4uYWRkKCJkcmFnZ2FibGUiLCJjb25uZWN0VG9Tb3J0YWJsZSIse3N0YXJ0OmZ1bmN0aW9uKGUsaSxzKXt2YXIgbj10LmV4dGVuZCh7fSxpLHtpdGVtOnMuZWxlbWVudH0pO3Muc29ydGFibGVzPVtdLHQocy5vcHRpb25zLmNvbm5lY3RUb1NvcnRhYmxlKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGk9dCh0aGlzKS5zb3J0YWJsZSgiaW5zdGFuY2UiKTtpJiYhaS5vcHRpb25zLmRpc2FibGVkJiYocy5zb3J0YWJsZXMucHVzaChpKSxpLnJlZnJlc2hQb3NpdGlvbnMoKSxpLl90cmlnZ2VyKCJhY3RpdmF0ZSIsZSxuKSl9KX0sc3RvcDpmdW5jdGlvbihlLGkscyl7dmFyIG49dC5leHRlbmQoe30saSx7aXRlbTpzLmVsZW1lbnR9KTtzLmNhbmNlbEhlbHBlclJlbW92YWw9ITEsdC5lYWNoKHMuc29ydGFibGVzLGZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0LmlzT3Zlcj8odC5pc092ZXI9MCxzLmNhbmNlbEhlbHBlclJlbW92YWw9ITAsdC5jYW5jZWxIZWxwZXJSZW1vdmFsPSExLHQuX3N0b3JlZENTUz17cG9zaXRpb246dC5wbGFjZWhvbGRlci5jc3MoInBvc2l0aW9uIiksdG9wOnQucGxhY2Vob2xkZXIuY3NzKCJ0b3AiKSxsZWZ0OnQucGxhY2Vob2xkZXIuY3NzKCJsZWZ0Iil9LHQuX21vdXNlU3RvcChlKSx0Lm9wdGlvbnMuaGVscGVyPXQub3B0aW9ucy5faGVscGVyKToodC5jYW5jZWxIZWxwZXJSZW1vdmFsPSEwLHQuX3RyaWdnZXIoImRlYWN0aXZhdGUiLGUsbikpfSl9LGRyYWc6ZnVuY3Rpb24oZSxpLHMpe3QuZWFjaChzLnNvcnRhYmxlcyxmdW5jdGlvbigpe3ZhciBuPSExLG89dGhpcztvLnBvc2l0aW9uQWJzPXMucG9zaXRpb25BYnMsby5oZWxwZXJQcm9wb3J0aW9ucz1zLmhlbHBlclByb3BvcnRpb25zLG8ub2Zmc2V0LmNsaWNrPXMub2Zmc2V0LmNsaWNrLG8uX2ludGVyc2VjdHNXaXRoKG8uY29udGFpbmVyQ2FjaGUpJiYobj0hMCx0LmVhY2gocy5zb3J0YWJsZXMsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wb3NpdGlvbkFicz1zLnBvc2l0aW9uQWJzLHRoaXMuaGVscGVyUHJvcG9ydGlvbnM9cy5oZWxwZXJQcm9wb3J0aW9ucyx0aGlzLm9mZnNldC5jbGljaz1zLm9mZnNldC5jbGljayx0aGlzIT09byYmdGhpcy5faW50ZXJzZWN0c1dpdGgodGhpcy5jb250YWluZXJDYWNoZSkmJnQuY29udGFpbnMoby5lbGVtZW50WzBdLHRoaXMuZWxlbWVudFswXSkmJihuPSExKSxuCn0pKSxuPyhvLmlzT3Zlcnx8KG8uaXNPdmVyPTEscy5fcGFyZW50PWkuaGVscGVyLnBhcmVudCgpLG8uY3VycmVudEl0ZW09aS5oZWxwZXIuYXBwZW5kVG8oby5lbGVtZW50KS5kYXRhKCJ1aS1zb3J0YWJsZS1pdGVtIiwhMCksby5vcHRpb25zLl9oZWxwZXI9by5vcHRpb25zLmhlbHBlcixvLm9wdGlvbnMuaGVscGVyPWZ1bmN0aW9uKCl7cmV0dXJuIGkuaGVscGVyWzBdfSxlLnRhcmdldD1vLmN1cnJlbnRJdGVtWzBdLG8uX21vdXNlQ2FwdHVyZShlLCEwKSxvLl9tb3VzZVN0YXJ0KGUsITAsITApLG8ub2Zmc2V0LmNsaWNrLnRvcD1zLm9mZnNldC5jbGljay50b3Asby5vZmZzZXQuY2xpY2subGVmdD1zLm9mZnNldC5jbGljay5sZWZ0LG8ub2Zmc2V0LnBhcmVudC5sZWZ0LT1zLm9mZnNldC5wYXJlbnQubGVmdC1vLm9mZnNldC5wYXJlbnQubGVmdCxvLm9mZnNldC5wYXJlbnQudG9wLT1zLm9mZnNldC5wYXJlbnQudG9wLW8ub2Zmc2V0LnBhcmVudC50b3Ascy5fdHJpZ2dlcigidG9Tb3J0YWJsZSIsZSkscy5kcm9wcGVkPW8uZWxlbWVudCx0LmVhY2gocy5zb3J0YWJsZXMsZnVuY3Rpb24oKXt0aGlzLnJlZnJlc2hQb3NpdGlvbnMoKX0pLHMuY3VycmVudEl0ZW09cy5lbGVtZW50LG8uZnJvbU91dHNpZGU9cyksby5jdXJyZW50SXRlbSYmKG8uX21vdXNlRHJhZyhlKSxpLnBvc2l0aW9uPW8ucG9zaXRpb24pKTpvLmlzT3ZlciYmKG8uaXNPdmVyPTAsby5jYW5jZWxIZWxwZXJSZW1vdmFsPSEwLG8ub3B0aW9ucy5fcmV2ZXJ0PW8ub3B0aW9ucy5yZXZlcnQsby5vcHRpb25zLnJldmVydD0hMSxvLl90cmlnZ2VyKCJvdXQiLGUsby5fdWlIYXNoKG8pKSxvLl9tb3VzZVN0b3AoZSwhMCksby5vcHRpb25zLnJldmVydD1vLm9wdGlvbnMuX3JldmVydCxvLm9wdGlvbnMuaGVscGVyPW8ub3B0aW9ucy5faGVscGVyLG8ucGxhY2Vob2xkZXImJm8ucGxhY2Vob2xkZXIucmVtb3ZlKCksaS5oZWxwZXIuYXBwZW5kVG8ocy5fcGFyZW50KSxzLl9yZWZyZXNoT2Zmc2V0cyhlKSxpLnBvc2l0aW9uPXMuX2dlbmVyYXRlUG9zaXRpb24oZSwhMCkscy5fdHJpZ2dlcigiZnJvbVNvcnRhYmxlIixlKSxzLmRyb3BwZWQ9ITEsdC5lYWNoKHMuc29ydGFibGVzLGZ1bmN0aW9uKCl7dGhpcy5yZWZyZXNoUG9zaXRpb25zKCl9KSl9KX19KSx0LnVpLnBsdWdpbi5hZGQoImRyYWdnYWJsZSIsImN1cnNvciIse3N0YXJ0OmZ1bmN0aW9uKGUsaSxzKXt2YXIgbj10KCJib2R5Iiksbz1zLm9wdGlvbnM7bi5jc3MoImN1cnNvciIpJiYoby5fY3Vyc29yPW4uY3NzKCJjdXJzb3IiKSksbi5jc3MoImN1cnNvciIsby5jdXJzb3IpfSxzdG9wOmZ1bmN0aW9uKGUsaSxzKXt2YXIgbj1zLm9wdGlvbnM7bi5fY3Vyc29yJiZ0KCJib2R5IikuY3NzKCJjdXJzb3IiLG4uX2N1cnNvcil9fSksdC51aS5wbHVnaW4uYWRkKCJkcmFnZ2FibGUiLCJvcGFjaXR5Iix7c3RhcnQ6ZnVuY3Rpb24oZSxpLHMpe3ZhciBuPXQoaS5oZWxwZXIpLG89cy5vcHRpb25zO24uY3NzKCJvcGFjaXR5IikmJihvLl9vcGFjaXR5PW4uY3NzKCJvcGFjaXR5IikpLG4uY3NzKCJvcGFjaXR5IixvLm9wYWNpdHkpfSxzdG9wOmZ1bmN0aW9uKGUsaSxzKXt2YXIgbj1zLm9wdGlvbnM7bi5fb3BhY2l0eSYmdChpLmhlbHBlcikuY3NzKCJvcGFjaXR5IixuLl9vcGFjaXR5KX19KSx0LnVpLnBsdWdpbi5hZGQoImRyYWdnYWJsZSIsInNjcm9sbCIse3N0YXJ0OmZ1bmN0aW9uKHQsZSxpKXtpLnNjcm9sbFBhcmVudE5vdEhpZGRlbnx8KGkuc2Nyb2xsUGFyZW50Tm90SGlkZGVuPWkuaGVscGVyLnNjcm9sbFBhcmVudCghMSkpLGkuc2Nyb2xsUGFyZW50Tm90SGlkZGVuWzBdIT09aS5kb2N1bWVudFswXSYmIkhUTUwiIT09aS5zY3JvbGxQYXJlbnROb3RIaWRkZW5bMF0udGFnTmFtZSYmKGkub3ZlcmZsb3dPZmZzZXQ9aS5zY3JvbGxQYXJlbnROb3RIaWRkZW4ub2Zmc2V0KCkpfSxkcmFnOmZ1bmN0aW9uKGUsaSxzKXt2YXIgbj1zLm9wdGlvbnMsbz0hMSxhPXMuc2Nyb2xsUGFyZW50Tm90SGlkZGVuWzBdLHI9cy5kb2N1bWVudFswXTthIT09ciYmIkhUTUwiIT09YS50YWdOYW1lPyhuLmF4aXMmJiJ4Ij09PW4uYXhpc3x8KHMub3ZlcmZsb3dPZmZzZXQudG9wK2Eub2Zmc2V0SGVpZ2h0LWUucGFnZVk8bi5zY3JvbGxTZW5zaXRpdml0eT9hLnNjcm9sbFRvcD1vPWEuc2Nyb2xsVG9wK24uc2Nyb2xsU3BlZWQ6ZS5wYWdlWS1zLm92ZXJmbG93T2Zmc2V0LnRvcDxuLnNjcm9sbFNlbnNpdGl2aXR5JiYoYS5zY3JvbGxUb3A9bz1hLnNjcm9sbFRvcC1uLnNjcm9sbFNwZWVkKSksbi5heGlzJiYieSI9PT1uLmF4aXN8fChzLm92ZXJmbG93T2Zmc2V0LmxlZnQrYS5vZmZzZXRXaWR0aC1lLnBhZ2VYPG4uc2Nyb2xsU2Vuc2l0aXZpdHk/YS5zY3JvbGxMZWZ0PW89YS5zY3JvbGxMZWZ0K24uc2Nyb2xsU3BlZWQ6ZS5wYWdlWC1zLm92ZXJmbG93T2Zmc2V0LmxlZnQ8bi5zY3JvbGxTZW5zaXRpdml0eSYmKGEuc2Nyb2xsTGVmdD1vPWEuc2Nyb2xsTGVmdC1uLnNjcm9sbFNwZWVkKSkpOihuLmF4aXMmJiJ4Ij09PW4uYXhpc3x8KGUucGFnZVktdChyKS5zY3JvbGxUb3AoKTxuLnNjcm9sbFNlbnNpdGl2aXR5P289dChyKS5zY3JvbGxUb3AodChyKS5zY3JvbGxUb3AoKS1uLnNjcm9sbFNwZWVkKTp0KHdpbmRvdykuaGVpZ2h0KCktKGUucGFnZVktdChyKS5zY3JvbGxUb3AoKSk8bi5zY3JvbGxTZW5zaXRpdml0eSYmKG89dChyKS5zY3JvbGxUb3AodChyKS5zY3JvbGxUb3AoKStuLnNjcm9sbFNwZWVkKSkpLG4uYXhpcyYmInkiPT09bi5heGlzfHwoZS5wYWdlWC10KHIpLnNjcm9sbExlZnQoKTxuLnNjcm9sbFNlbnNpdGl2aXR5P289dChyKS5zY3JvbGxMZWZ0KHQocikuc2Nyb2xsTGVmdCgpLW4uc2Nyb2xsU3BlZWQpOnQod2luZG93KS53aWR0aCgpLShlLnBhZ2VYLXQocikuc2Nyb2xsTGVmdCgpKTxuLnNjcm9sbFNlbnNpdGl2aXR5JiYobz10KHIpLnNjcm9sbExlZnQodChyKS5zY3JvbGxMZWZ0KCkrbi5zY3JvbGxTcGVlZCkpKSksbyE9PSExJiZ0LnVpLmRkbWFuYWdlciYmIW4uZHJvcEJlaGF2aW91ciYmdC51aS5kZG1hbmFnZXIucHJlcGFyZU9mZnNldHMocyxlKX19KSx0LnVpLnBsdWdpbi5hZGQoImRyYWdnYWJsZSIsInNuYXAiLHtzdGFydDpmdW5jdGlvbihlLGkscyl7dmFyIG49cy5vcHRpb25zO3Muc25hcEVsZW1lbnRzPVtdLHQobi5zbmFwLmNvbnN0cnVjdG9yIT09U3RyaW5nP24uc25hcC5pdGVtc3x8IjpkYXRhKHVpLWRyYWdnYWJsZSkiOm4uc25hcCkuZWFjaChmdW5jdGlvbigpe3ZhciBlPXQodGhpcyksaT1lLm9mZnNldCgpO3RoaXMhPT1zLmVsZW1lbnRbMF0mJnMuc25hcEVsZW1lbnRzLnB1c2goe2l0ZW06dGhpcyx3aWR0aDplLm91dGVyV2lkdGgoKSxoZWlnaHQ6ZS5vdXRlckhlaWdodCgpLHRvcDppLnRvcCxsZWZ0OmkubGVmdH0pfSl9LGRyYWc6ZnVuY3Rpb24oZSxpLHMpe3ZhciBuLG8sYSxyLGwsaCxjLHUsZCxwLGY9cy5vcHRpb25zLGc9Zi5zbmFwVG9sZXJhbmNlLG09aS5vZmZzZXQubGVmdCxfPW0rcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aCx2PWkub2Zmc2V0LnRvcCxiPXYrcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQ7Zm9yKGQ9cy5zbmFwRWxlbWVudHMubGVuZ3RoLTE7ZD49MDtkLS0pbD1zLnNuYXBFbGVtZW50c1tkXS5sZWZ0LXMubWFyZ2lucy5sZWZ0LGg9bCtzLnNuYXBFbGVtZW50c1tkXS53aWR0aCxjPXMuc25hcEVsZW1lbnRzW2RdLnRvcC1zLm1hcmdpbnMudG9wLHU9YytzLnNuYXBFbGVtZW50c1tkXS5oZWlnaHQsbC1nPl98fG0+aCtnfHxjLWc+Ynx8dj51K2d8fCF0LmNvbnRhaW5zKHMuc25hcEVsZW1lbnRzW2RdLml0ZW0ub3duZXJEb2N1bWVudCxzLnNuYXBFbGVtZW50c1tkXS5pdGVtKT8ocy5zbmFwRWxlbWVudHNbZF0uc25hcHBpbmcmJnMub3B0aW9ucy5zbmFwLnJlbGVhc2UmJnMub3B0aW9ucy5zbmFwLnJlbGVhc2UuY2FsbChzLmVsZW1lbnQsZSx0LmV4dGVuZChzLl91aUhhc2goKSx7c25hcEl0ZW06cy5zbmFwRWxlbWVudHNbZF0uaXRlbX0pKSxzLnNuYXBFbGVtZW50c1tkXS5zbmFwcGluZz0hMSk6KCJpbm5lciIhPT1mLnNuYXBNb2RlJiYobj1nPj1NYXRoLmFicyhjLWIpLG89Zz49TWF0aC5hYnModS12KSxhPWc+PU1hdGguYWJzKGwtXykscj1nPj1NYXRoLmFicyhoLW0pLG4mJihpLnBvc2l0aW9uLnRvcD1zLl9jb252ZXJ0UG9zaXRpb25UbygicmVsYXRpdmUiLHt0b3A6Yy1zLmhlbHBlclByb3BvcnRpb25zLmhlaWdodCxsZWZ0OjB9KS50b3ApLG8mJihpLnBvc2l0aW9uLnRvcD1zLl9jb252ZXJ0UG9zaXRpb25UbygicmVsYXRpdmUiLHt0b3A6dSxsZWZ0OjB9KS50b3ApLGEmJihpLnBvc2l0aW9uLmxlZnQ9cy5fY29udmVydFBvc2l0aW9uVG8oInJlbGF0aXZlIix7dG9wOjAsbGVmdDpsLXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGh9KS5sZWZ0KSxyJiYoaS5wb3NpdGlvbi5sZWZ0PXMuX2NvbnZlcnRQb3NpdGlvblRvKCJyZWxhdGl2ZSIse3RvcDowLGxlZnQ6aH0pLmxlZnQpKSxwPW58fG98fGF8fHIsIm91dGVyIiE9PWYuc25hcE1vZGUmJihuPWc+PU1hdGguYWJzKGMtdiksbz1nPj1NYXRoLmFicyh1LWIpLGE9Zz49TWF0aC5hYnMobC1tKSxyPWc+PU1hdGguYWJzKGgtXyksbiYmKGkucG9zaXRpb24udG9wPXMuX2NvbnZlcnRQb3NpdGlvblRvKCJyZWxhdGl2ZSIse3RvcDpjLGxlZnQ6MH0pLnRvcCksbyYmKGkucG9zaXRpb24udG9wPXMuX2NvbnZlcnRQb3NpdGlvblRvKCJyZWxhdGl2ZSIse3RvcDp1LXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LGxlZnQ6MH0pLnRvcCksYSYmKGkucG9zaXRpb24ubGVmdD1zLl9jb252ZXJ0UG9zaXRpb25UbygicmVsYXRpdmUiLHt0b3A6MCxsZWZ0Omx9KS5sZWZ0KSxyJiYoaS5wb3NpdGlvbi5sZWZ0PXMuX2NvbnZlcnRQb3NpdGlvblRvKCJyZWxhdGl2ZSIse3RvcDowLGxlZnQ6aC1zLmhlbHBlclByb3BvcnRpb25zLndpZHRofSkubGVmdCkpLCFzLnNuYXBFbGVtZW50c1tkXS5zbmFwcGluZyYmKG58fG98fGF8fHJ8fHApJiZzLm9wdGlvbnMuc25hcC5zbmFwJiZzLm9wdGlvbnMuc25hcC5zbmFwLmNhbGwocy5lbGVtZW50LGUsdC5leHRlbmQocy5fdWlIYXNoKCkse3NuYXBJdGVtOnMuc25hcEVsZW1lbnRzW2RdLml0ZW19KSkscy5zbmFwRWxlbWVudHNbZF0uc25hcHBpbmc9bnx8b3x8YXx8cnx8cCl9fSksdC51aS5wbHVnaW4uYWRkKCJkcmFnZ2FibGUiLCJzdGFjayIse3N0YXJ0OmZ1bmN0aW9uKGUsaSxzKXt2YXIgbixvPXMub3B0aW9ucyxhPXQubWFrZUFycmF5KHQoby5zdGFjaykpLnNvcnQoZnVuY3Rpb24oZSxpKXtyZXR1cm4ocGFyc2VJbnQodChlKS5jc3MoInpJbmRleCIpLDEwKXx8MCktKHBhcnNlSW50KHQoaSkuY3NzKCJ6SW5kZXgiKSwxMCl8fDApfSk7YS5sZW5ndGgmJihuPXBhcnNlSW50KHQoYVswXSkuY3NzKCJ6SW5kZXgiKSwxMCl8fDAsdChhKS5lYWNoKGZ1bmN0aW9uKGUpe3QodGhpcykuY3NzKCJ6SW5kZXgiLG4rZSl9KSx0aGlzLmNzcygiekluZGV4IixuK2EubGVuZ3RoKSl9fSksdC51aS5wbHVnaW4uYWRkKCJkcmFnZ2FibGUiLCJ6SW5kZXgiLHtzdGFydDpmdW5jdGlvbihlLGkscyl7dmFyIG49dChpLmhlbHBlciksbz1zLm9wdGlvbnM7bi5jc3MoInpJbmRleCIpJiYoby5fekluZGV4PW4uY3NzKCJ6SW5kZXgiKSksbi5jc3MoInpJbmRleCIsby56SW5kZXgpfSxzdG9wOmZ1bmN0aW9uKGUsaSxzKXt2YXIgbj1zLm9wdGlvbnM7bi5fekluZGV4JiZ0KGkuaGVscGVyKS5jc3MoInpJbmRleCIsbi5fekluZGV4KX19KSx0LnVpLmRyYWdnYWJsZSx0LndpZGdldCgidWkuc29ydGFibGUiLHQudWkubW91c2Use3ZlcnNpb246IjEuMTEuNCIsd2lkZ2V0RXZlbnRQcmVmaXg6InNvcnQiLHJlYWR5OiExLG9wdGlvbnM6e2FwcGVuZFRvOiJwYXJlbnQiLGF4aXM6ITEsY29ubmVjdFdpdGg6ITEsY29udGFpbm1lbnQ6ITEsY3Vyc29yOiJhdXRvIixjdXJzb3JBdDohMSxkcm9wT25FbXB0eTohMCxmb3JjZVBsYWNlaG9sZGVyU2l6ZTohMSxmb3JjZUhlbHBlclNpemU6ITEsZ3JpZDohMSxoYW5kbGU6ITEsaGVscGVyOiJvcmlnaW5hbCIsaXRlbXM6Ij4gKiIsb3BhY2l0eTohMSxwbGFjZWhvbGRlcjohMSxyZXZlcnQ6ITEsc2Nyb2xsOiEwLHNjcm9sbFNlbnNpdGl2aXR5OjIwLHNjcm9sbFNwZWVkOjIwLHNjb3BlOiJkZWZhdWx0Iix0b2xlcmFuY2U6ImludGVyc2VjdCIsekluZGV4OjFlMyxhY3RpdmF0ZTpudWxsLGJlZm9yZVN0b3A6bnVsbCxjaGFuZ2U6bnVsbCxkZWFjdGl2YXRlOm51bGwsb3V0Om51bGwsb3ZlcjpudWxsLHJlY2VpdmU6bnVsbCxyZW1vdmU6bnVsbCxzb3J0Om51bGwsc3RhcnQ6bnVsbCxzdG9wOm51bGwsdXBkYXRlOm51bGx9LF9pc092ZXJBeGlzOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdD49ZSYmZStpPnR9LF9pc0Zsb2F0aW5nOmZ1bmN0aW9uKHQpe3JldHVybi9sZWZ0fHJpZ2h0Ly50ZXN0KHQuY3NzKCJmbG9hdCIpKXx8L2lubGluZXx0YWJsZS1jZWxsLy50ZXN0KHQuY3NzKCJkaXNwbGF5IikpfSxfY3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5jb250YWluZXJDYWNoZT17fSx0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLXNvcnRhYmxlIiksdGhpcy5yZWZyZXNoKCksdGhpcy5vZmZzZXQ9dGhpcy5lbGVtZW50Lm9mZnNldCgpLHRoaXMuX21vdXNlSW5pdCgpLHRoaXMuX3NldEhhbmRsZUNsYXNzTmFtZSgpLHRoaXMucmVhZHk9ITB9LF9zZXRPcHRpb246ZnVuY3Rpb24odCxlKXt0aGlzLl9zdXBlcih0LGUpLCJoYW5kbGUiPT09dCYmdGhpcy5fc2V0SGFuZGxlQ2xhc3NOYW1lKCl9LF9zZXRIYW5kbGVDbGFzc05hbWU6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQuZmluZCgiLnVpLXNvcnRhYmxlLWhhbmRsZSIpLnJlbW92ZUNsYXNzKCJ1aS1zb3J0YWJsZS1oYW5kbGUiKSx0LmVhY2godGhpcy5pdGVtcyxmdW5jdGlvbigpeyh0aGlzLmluc3RhbmNlLm9wdGlvbnMuaGFuZGxlP3RoaXMuaXRlbS5maW5kKHRoaXMuaW5zdGFuY2Uub3B0aW9ucy5oYW5kbGUpOnRoaXMuaXRlbSkuYWRkQ2xhc3MoInVpLXNvcnRhYmxlLWhhbmRsZSIpfSl9LF9kZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1zb3J0YWJsZSB1aS1zb3J0YWJsZS1kaXNhYmxlZCIpLmZpbmQoIi51aS1zb3J0YWJsZS1oYW5kbGUiKS5yZW1vdmVDbGFzcygidWktc29ydGFibGUtaGFuZGxlIiksdGhpcy5fbW91c2VEZXN0cm95KCk7Zm9yKHZhciB0PXRoaXMuaXRlbXMubGVuZ3RoLTE7dD49MDt0LS0pdGhpcy5pdGVtc1t0XS5pdGVtLnJlbW92ZURhdGEodGhpcy53aWRnZXROYW1lKyItaXRlbSIpO3JldHVybiB0aGlzfSxfbW91c2VDYXB0dXJlOmZ1bmN0aW9uKGUsaSl7dmFyIHM9bnVsbCxuPSExLG89dGhpcztyZXR1cm4gdGhpcy5yZXZlcnRpbmc/ITE6dGhpcy5vcHRpb25zLmRpc2FibGVkfHwic3RhdGljIj09PXRoaXMub3B0aW9ucy50eXBlPyExOih0aGlzLl9yZWZyZXNoSXRlbXMoZSksdChlLnRhcmdldCkucGFyZW50cygpLmVhY2goZnVuY3Rpb24oKXtyZXR1cm4gdC5kYXRhKHRoaXMsby53aWRnZXROYW1lKyItaXRlbSIpPT09bz8ocz10KHRoaXMpLCExKTp2b2lkIDB9KSx0LmRhdGEoZS50YXJnZXQsby53aWRnZXROYW1lKyItaXRlbSIpPT09byYmKHM9dChlLnRhcmdldCkpLHM/IXRoaXMub3B0aW9ucy5oYW5kbGV8fGl8fCh0KHRoaXMub3B0aW9ucy5oYW5kbGUscykuZmluZCgiKiIpLmFkZEJhY2soKS5lYWNoKGZ1bmN0aW9uKCl7dGhpcz09PWUudGFyZ2V0JiYobj0hMCl9KSxuKT8odGhpcy5jdXJyZW50SXRlbT1zLHRoaXMuX3JlbW92ZUN1cnJlbnRzRnJvbUl0ZW1zKCksITApOiExOiExKX0sX21vdXNlU3RhcnQ6ZnVuY3Rpb24oZSxpLHMpe3ZhciBuLG8sYT10aGlzLm9wdGlvbnM7aWYodGhpcy5jdXJyZW50Q29udGFpbmVyPXRoaXMsdGhpcy5yZWZyZXNoUG9zaXRpb25zKCksdGhpcy5oZWxwZXI9dGhpcy5fY3JlYXRlSGVscGVyKGUpLHRoaXMuX2NhY2hlSGVscGVyUHJvcG9ydGlvbnMoKSx0aGlzLl9jYWNoZU1hcmdpbnMoKSx0aGlzLnNjcm9sbFBhcmVudD10aGlzLmhlbHBlci5zY3JvbGxQYXJlbnQoKSx0aGlzLm9mZnNldD10aGlzLmN1cnJlbnRJdGVtLm9mZnNldCgpLHRoaXMub2Zmc2V0PXt0b3A6dGhpcy5vZmZzZXQudG9wLXRoaXMubWFyZ2lucy50b3AsbGVmdDp0aGlzLm9mZnNldC5sZWZ0LXRoaXMubWFyZ2lucy5sZWZ0fSx0LmV4dGVuZCh0aGlzLm9mZnNldCx7Y2xpY2s6e2xlZnQ6ZS5wYWdlWC10aGlzLm9mZnNldC5sZWZ0LHRvcDplLnBhZ2VZLXRoaXMub2Zmc2V0LnRvcH0scGFyZW50OnRoaXMuX2dldFBhcmVudE9mZnNldCgpLHJlbGF0aXZlOnRoaXMuX2dldFJlbGF0aXZlT2Zmc2V0KCl9KSx0aGlzLmhlbHBlci5jc3MoInBvc2l0aW9uIiwiYWJzb2x1dGUiKSx0aGlzLmNzc1Bvc2l0aW9uPXRoaXMuaGVscGVyLmNzcygicG9zaXRpb24iKSx0aGlzLm9yaWdpbmFsUG9zaXRpb249dGhpcy5fZ2VuZXJhdGVQb3NpdGlvbihlKSx0aGlzLm9yaWdpbmFsUGFnZVg9ZS5wYWdlWCx0aGlzLm9yaWdpbmFsUGFnZVk9ZS5wYWdlWSxhLmN1cnNvckF0JiZ0aGlzLl9hZGp1c3RPZmZzZXRGcm9tSGVscGVyKGEuY3Vyc29yQXQpLHRoaXMuZG9tUG9zaXRpb249e3ByZXY6dGhpcy5jdXJyZW50SXRlbS5wcmV2KClbMF0scGFyZW50OnRoaXMuY3VycmVudEl0ZW0ucGFyZW50KClbMF19LHRoaXMuaGVscGVyWzBdIT09dGhpcy5jdXJyZW50SXRlbVswXSYmdGhpcy5jdXJyZW50SXRlbS5oaWRlKCksdGhpcy5fY3JlYXRlUGxhY2Vob2xkZXIoKSxhLmNvbnRhaW5tZW50JiZ0aGlzLl9zZXRDb250YWlubWVudCgpLGEuY3Vyc29yJiYiYXV0byIhPT1hLmN1cnNvciYmKG89dGhpcy5kb2N1bWVudC5maW5kKCJib2R5IiksdGhpcy5zdG9yZWRDdXJzb3I9by5jc3MoImN1cnNvciIpLG8uY3NzKCJjdXJzb3IiLGEuY3Vyc29yKSx0aGlzLnN0b3JlZFN0eWxlc2hlZXQ9dCgiPHN0eWxlPip7IGN1cnNvcjogIithLmN1cnNvcisiICFpbXBvcnRhbnQ7IH08L3N0eWxlPiIpLmFwcGVuZFRvKG8pKSxhLm9wYWNpdHkmJih0aGlzLmhlbHBlci5jc3MoIm9wYWNpdHkiKSYmKHRoaXMuX3N0b3JlZE9wYWNpdHk9dGhpcy5oZWxwZXIuY3NzKCJvcGFjaXR5IikpLHRoaXMuaGVscGVyLmNzcygib3BhY2l0eSIsYS5vcGFjaXR5KSksYS56SW5kZXgmJih0aGlzLmhlbHBlci5jc3MoInpJbmRleCIpJiYodGhpcy5fc3RvcmVkWkluZGV4PXRoaXMuaGVscGVyLmNzcygiekluZGV4IikpLHRoaXMuaGVscGVyLmNzcygiekluZGV4IixhLnpJbmRleCkpLHRoaXMuc2Nyb2xsUGFyZW50WzBdIT09dGhpcy5kb2N1bWVudFswXSYmIkhUTUwiIT09dGhpcy5zY3JvbGxQYXJlbnRbMF0udGFnTmFtZSYmKHRoaXMub3ZlcmZsb3dPZmZzZXQ9dGhpcy5zY3JvbGxQYXJlbnQub2Zmc2V0KCkpLHRoaXMuX3RyaWdnZXIoInN0YXJ0IixlLHRoaXMuX3VpSGFzaCgpKSx0aGlzLl9wcmVzZXJ2ZUhlbHBlclByb3BvcnRpb25zfHx0aGlzLl9jYWNoZUhlbHBlclByb3BvcnRpb25zKCksIXMpZm9yKG49dGhpcy5jb250YWluZXJzLmxlbmd0aC0xO24+PTA7bi0tKXRoaXMuY29udGFpbmVyc1tuXS5fdHJpZ2dlcigiYWN0aXZhdGUiLGUsdGhpcy5fdWlIYXNoKHRoaXMpKTtyZXR1cm4gdC51aS5kZG1hbmFnZXImJih0LnVpLmRkbWFuYWdlci5jdXJyZW50PXRoaXMpLHQudWkuZGRtYW5hZ2VyJiYhYS5kcm9wQmVoYXZpb3VyJiZ0LnVpLmRkbWFuYWdlci5wcmVwYXJlT2Zmc2V0cyh0aGlzLGUpLHRoaXMuZHJhZ2dpbmc9ITAsdGhpcy5oZWxwZXIuYWRkQ2xhc3MoInVpLXNvcnRhYmxlLWhlbHBlciIpLHRoaXMuX21vdXNlRHJhZyhlKSwhMH0sX21vdXNlRHJhZzpmdW5jdGlvbihlKXt2YXIgaSxzLG4sbyxhPXRoaXMub3B0aW9ucyxyPSExO2Zvcih0aGlzLnBvc2l0aW9uPXRoaXMuX2dlbmVyYXRlUG9zaXRpb24oZSksdGhpcy5wb3NpdGlvbkFicz10aGlzLl9jb252ZXJ0UG9zaXRpb25UbygiYWJzb2x1dGUiKSx0aGlzLmxhc3RQb3NpdGlvbkFic3x8KHRoaXMubGFzdFBvc2l0aW9uQWJzPXRoaXMucG9zaXRpb25BYnMpLHRoaXMub3B0aW9ucy5zY3JvbGwmJih0aGlzLnNjcm9sbFBhcmVudFswXSE9PXRoaXMuZG9jdW1lbnRbMF0mJiJIVE1MIiE9PXRoaXMuc2Nyb2xsUGFyZW50WzBdLnRhZ05hbWU/KHRoaXMub3ZlcmZsb3dPZmZzZXQudG9wK3RoaXMuc2Nyb2xsUGFyZW50WzBdLm9mZnNldEhlaWdodC1lLnBhZ2VZPGEuc2Nyb2xsU2Vuc2l0aXZpdHk/dGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsVG9wPXI9dGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsVG9wK2Euc2Nyb2xsU3BlZWQ6ZS5wYWdlWS10aGlzLm92ZXJmbG93T2Zmc2V0LnRvcDxhLnNjcm9sbFNlbnNpdGl2aXR5JiYodGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsVG9wPXI9dGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsVG9wLWEuc2Nyb2xsU3BlZWQpLHRoaXMub3ZlcmZsb3dPZmZzZXQubGVmdCt0aGlzLnNjcm9sbFBhcmVudFswXS5vZmZzZXRXaWR0aC1lLnBhZ2VYPGEuc2Nyb2xsU2Vuc2l0aXZpdHk/dGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsTGVmdD1yPXRoaXMuc2Nyb2xsUGFyZW50WzBdLnNjcm9sbExlZnQrYS5zY3JvbGxTcGVlZDplLnBhZ2VYLXRoaXMub3ZlcmZsb3dPZmZzZXQubGVmdDxhLnNjcm9sbFNlbnNpdGl2aXR5JiYodGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsTGVmdD1yPXRoaXMuc2Nyb2xsUGFyZW50WzBdLnNjcm9sbExlZnQtYS5zY3JvbGxTcGVlZCkpOihlLnBhZ2VZLXRoaXMuZG9jdW1lbnQuc2Nyb2xsVG9wKCk8YS5zY3JvbGxTZW5zaXRpdml0eT9yPXRoaXMuZG9jdW1lbnQuc2Nyb2xsVG9wKHRoaXMuZG9jdW1lbnQuc2Nyb2xsVG9wKCktYS5zY3JvbGxTcGVlZCk6dGhpcy53aW5kb3cuaGVpZ2h0KCktKGUucGFnZVktdGhpcy5kb2N1bWVudC5zY3JvbGxUb3AoKSk8YS5zY3JvbGxTZW5zaXRpdml0eSYmKHI9dGhpcy5kb2N1bWVudC5zY3JvbGxUb3AodGhpcy5kb2N1bWVudC5zY3JvbGxUb3AoKSthLnNjcm9sbFNwZWVkKSksZS5wYWdlWC10aGlzLmRvY3VtZW50LnNjcm9sbExlZnQoKTxhLnNjcm9sbFNlbnNpdGl2aXR5P3I9dGhpcy5kb2N1bWVudC5zY3JvbGxMZWZ0KHRoaXMuZG9jdW1lbnQuc2Nyb2xsTGVmdCgpLWEuc2Nyb2xsU3BlZWQpOnRoaXMud2luZG93LndpZHRoKCktKGUucGFnZVgtdGhpcy5kb2N1bWVudC5zY3JvbGxMZWZ0KCkpPGEuc2Nyb2xsU2Vuc2l0aXZpdHkmJihyPXRoaXMuZG9jdW1lbnQuc2Nyb2xsTGVmdCh0aGlzLmRvY3VtZW50LnNjcm9sbExlZnQoKSthLnNjcm9sbFNwZWVkKSkpLHIhPT0hMSYmdC51aS5kZG1hbmFnZXImJiFhLmRyb3BCZWhhdmlvdXImJnQudWkuZGRtYW5hZ2VyLnByZXBhcmVPZmZzZXRzKHRoaXMsZSkpLHRoaXMucG9zaXRpb25BYnM9dGhpcy5fY29udmVydFBvc2l0aW9uVG8oImFic29sdXRlIiksdGhpcy5vcHRpb25zLmF4aXMmJiJ5Ij09PXRoaXMub3B0aW9ucy5heGlzfHwodGhpcy5oZWxwZXJbMF0uc3R5bGUubGVmdD10aGlzLnBvc2l0aW9uLmxlZnQrInB4IiksdGhpcy5vcHRpb25zLmF4aXMmJiJ4Ij09PXRoaXMub3B0aW9ucy5heGlzfHwodGhpcy5oZWxwZXJbMF0uc3R5bGUudG9wPXRoaXMucG9zaXRpb24udG9wKyJweCIpLGk9dGhpcy5pdGVtcy5sZW5ndGgtMTtpPj0wO2ktLSlpZihzPXRoaXMuaXRlbXNbaV0sbj1zLml0ZW1bMF0sbz10aGlzLl9pbnRlcnNlY3RzV2l0aFBvaW50ZXIocyksbyYmcy5pbnN0YW5jZT09PXRoaXMuY3VycmVudENvbnRhaW5lciYmbiE9PXRoaXMuY3VycmVudEl0ZW1bMF0mJnRoaXMucGxhY2Vob2xkZXJbMT09PW8/Im5leHQiOiJwcmV2Il0oKVswXSE9PW4mJiF0LmNvbnRhaW5zKHRoaXMucGxhY2Vob2xkZXJbMF0sbikmJigic2VtaS1keW5hbWljIj09PXRoaXMub3B0aW9ucy50eXBlPyF0LmNvbnRhaW5zKHRoaXMuZWxlbWVudFswXSxuKTohMCkpe2lmKHRoaXMuZGlyZWN0aW9uPTE9PT1vPyJkb3duIjoidXAiLCJwb2ludGVyIiE9PXRoaXMub3B0aW9ucy50b2xlcmFuY2UmJiF0aGlzLl9pbnRlcnNlY3RzV2l0aFNpZGVzKHMpKWJyZWFrO3RoaXMuX3JlYXJyYW5nZShlLHMpLHRoaXMuX3RyaWdnZXIoImNoYW5nZSIsZSx0aGlzLl91aUhhc2goKSk7YnJlYWt9cmV0dXJuIHRoaXMuX2NvbnRhY3RDb250YWluZXJzKGUpLHQudWkuZGRtYW5hZ2VyJiZ0LnVpLmRkbWFuYWdlci5kcmFnKHRoaXMsZSksdGhpcy5fdHJpZ2dlcigic29ydCIsZSx0aGlzLl91aUhhc2goKSksdGhpcy5sYXN0UG9zaXRpb25BYnM9dGhpcy5wb3NpdGlvbkFicywhMX0sX21vdXNlU3RvcDpmdW5jdGlvbihlLGkpe2lmKGUpe2lmKHQudWkuZGRtYW5hZ2VyJiYhdGhpcy5vcHRpb25zLmRyb3BCZWhhdmlvdXImJnQudWkuZGRtYW5hZ2VyLmRyb3AodGhpcyxlKSx0aGlzLm9wdGlvbnMucmV2ZXJ0KXt2YXIgcz10aGlzLG49dGhpcy5wbGFjZWhvbGRlci5vZmZzZXQoKSxvPXRoaXMub3B0aW9ucy5heGlzLGE9e307byYmIngiIT09b3x8KGEubGVmdD1uLmxlZnQtdGhpcy5vZmZzZXQucGFyZW50LmxlZnQtdGhpcy5tYXJnaW5zLmxlZnQrKHRoaXMub2Zmc2V0UGFyZW50WzBdPT09dGhpcy5kb2N1bWVudFswXS5ib2R5PzA6dGhpcy5vZmZzZXRQYXJlbnRbMF0uc2Nyb2xsTGVmdCkpLG8mJiJ5IiE9PW98fChhLnRvcD1uLnRvcC10aGlzLm9mZnNldC5wYXJlbnQudG9wLXRoaXMubWFyZ2lucy50b3ArKHRoaXMub2Zmc2V0UGFyZW50WzBdPT09dGhpcy5kb2N1bWVudFswXS5ib2R5PzA6dGhpcy5vZmZzZXRQYXJlbnRbMF0uc2Nyb2xsVG9wKSksdGhpcy5yZXZlcnRpbmc9ITAsdCh0aGlzLmhlbHBlcikuYW5pbWF0ZShhLHBhcnNlSW50KHRoaXMub3B0aW9ucy5yZXZlcnQsMTApfHw1MDAsZnVuY3Rpb24oKXtzLl9jbGVhcihlKX0pfWVsc2UgdGhpcy5fY2xlYXIoZSxpKTtyZXR1cm4hMX19LGNhbmNlbDpmdW5jdGlvbigpe2lmKHRoaXMuZHJhZ2dpbmcpe3RoaXMuX21vdXNlVXAoe3RhcmdldDpudWxsfSksIm9yaWdpbmFsIj09PXRoaXMub3B0aW9ucy5oZWxwZXI/dGhpcy5jdXJyZW50SXRlbS5jc3ModGhpcy5fc3RvcmVkQ1NTKS5yZW1vdmVDbGFzcygidWktc29ydGFibGUtaGVscGVyIik6dGhpcy5jdXJyZW50SXRlbS5zaG93KCk7Zm9yKHZhciBlPXRoaXMuY29udGFpbmVycy5sZW5ndGgtMTtlPj0wO2UtLSl0aGlzLmNvbnRhaW5lcnNbZV0uX3RyaWdnZXIoImRlYWN0aXZhdGUiLG51bGwsdGhpcy5fdWlIYXNoKHRoaXMpKSx0aGlzLmNvbnRhaW5lcnNbZV0uY29udGFpbmVyQ2FjaGUub3ZlciYmKHRoaXMuY29udGFpbmVyc1tlXS5fdHJpZ2dlcigib3V0IixudWxsLHRoaXMuX3VpSGFzaCh0aGlzKSksdGhpcy5jb250YWluZXJzW2VdLmNvbnRhaW5lckNhY2hlLm92ZXI9MCl9cmV0dXJuIHRoaXMucGxhY2Vob2xkZXImJih0aGlzLnBsYWNlaG9sZGVyWzBdLnBhcmVudE5vZGUmJnRoaXMucGxhY2Vob2xkZXJbMF0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLnBsYWNlaG9sZGVyWzBdKSwib3JpZ2luYWwiIT09dGhpcy5vcHRpb25zLmhlbHBlciYmdGhpcy5oZWxwZXImJnRoaXMuaGVscGVyWzBdLnBhcmVudE5vZGUmJnRoaXMuaGVscGVyLnJlbW92ZSgpLHQuZXh0ZW5kKHRoaXMse2hlbHBlcjpudWxsLGRyYWdnaW5nOiExLHJldmVydGluZzohMSxfbm9GaW5hbFNvcnQ6bnVsbH0pLHRoaXMuZG9tUG9zaXRpb24ucHJldj90KHRoaXMuZG9tUG9zaXRpb24ucHJldikuYWZ0ZXIodGhpcy5jdXJyZW50SXRlbSk6dCh0aGlzLmRvbVBvc2l0aW9uLnBhcmVudCkucHJlcGVuZCh0aGlzLmN1cnJlbnRJdGVtKSksdGhpc30sc2VyaWFsaXplOmZ1bmN0aW9uKGUpe3ZhciBpPXRoaXMuX2dldEl0ZW1zQXNqUXVlcnkoZSYmZS5jb25uZWN0ZWQpLHM9W107cmV0dXJuIGU9ZXx8e30sdChpKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGk9KHQoZS5pdGVtfHx0aGlzKS5hdHRyKGUuYXR0cmlidXRlfHwiaWQiKXx8IiIpLm1hdGNoKGUuZXhwcmVzc2lvbnx8LyguKylbXC09X10oLispLyk7aSYmcy5wdXNoKChlLmtleXx8aVsxXSsiW10iKSsiPSIrKGUua2V5JiZlLmV4cHJlc3Npb24/aVsxXTppWzJdKSl9KSwhcy5sZW5ndGgmJmUua2V5JiZzLnB1c2goZS5rZXkrIj0iKSxzLmpvaW4oIiYiKX0sdG9BcnJheTpmdW5jdGlvbihlKXt2YXIgaT10aGlzLl9nZXRJdGVtc0FzalF1ZXJ5KGUmJmUuY29ubmVjdGVkKSxzPVtdO3JldHVybiBlPWV8fHt9LGkuZWFjaChmdW5jdGlvbigpe3MucHVzaCh0KGUuaXRlbXx8dGhpcykuYXR0cihlLmF0dHJpYnV0ZXx8ImlkIil8fCIiKX0pLHN9LF9pbnRlcnNlY3RzV2l0aDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLnBvc2l0aW9uQWJzLmxlZnQsaT1lK3RoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgscz10aGlzLnBvc2l0aW9uQWJzLnRvcCxuPXMrdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQsbz10LmxlZnQsYT1vK3Qud2lkdGgscj10LnRvcCxsPXIrdC5oZWlnaHQsaD10aGlzLm9mZnNldC5jbGljay50b3AsYz10aGlzLm9mZnNldC5jbGljay5sZWZ0LHU9IngiPT09dGhpcy5vcHRpb25zLmF4aXN8fHMraD5yJiZsPnMraCxkPSJ5Ij09PXRoaXMub3B0aW9ucy5heGlzfHxlK2M+byYmYT5lK2MscD11JiZkO3JldHVybiJwb2ludGVyIj09PXRoaXMub3B0aW9ucy50b2xlcmFuY2V8fHRoaXMub3B0aW9ucy5mb3JjZVBvaW50ZXJGb3JDb250YWluZXJzfHwicG9pbnRlciIhPT10aGlzLm9wdGlvbnMudG9sZXJhbmNlJiZ0aGlzLmhlbHBlclByb3BvcnRpb25zW3RoaXMuZmxvYXRpbmc/IndpZHRoIjoiaGVpZ2h0Il0+dFt0aGlzLmZsb2F0aW5nPyJ3aWR0aCI6ImhlaWdodCJdP3A6ZSt0aGlzLmhlbHBlclByb3BvcnRpb25zLndpZHRoLzI+byYmYT5pLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgvMiYmcyt0aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC8yPnImJmw+bi10aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC8yfSxfaW50ZXJzZWN0c1dpdGhQb2ludGVyOmZ1bmN0aW9uKHQpe3ZhciBlPSJ4Ij09PXRoaXMub3B0aW9ucy5heGlzfHx0aGlzLl9pc092ZXJBeGlzKHRoaXMucG9zaXRpb25BYnMudG9wK3RoaXMub2Zmc2V0LmNsaWNrLnRvcCx0LnRvcCx0LmhlaWdodCksaT0ieSI9PT10aGlzLm9wdGlvbnMuYXhpc3x8dGhpcy5faXNPdmVyQXhpcyh0aGlzLnBvc2l0aW9uQWJzLmxlZnQrdGhpcy5vZmZzZXQuY2xpY2subGVmdCx0LmxlZnQsdC53aWR0aCkscz1lJiZpLG49dGhpcy5fZ2V0RHJhZ1ZlcnRpY2FsRGlyZWN0aW9uKCksbz10aGlzLl9nZXREcmFnSG9yaXpvbnRhbERpcmVjdGlvbigpO3JldHVybiBzP3RoaXMuZmxvYXRpbmc/byYmInJpZ2h0Ij09PW98fCJkb3duIj09PW4/MjoxOm4mJigiZG93biI9PT1uPzI6MSk6ITF9LF9pbnRlcnNlY3RzV2l0aFNpZGVzOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX2lzT3ZlckF4aXModGhpcy5wb3NpdGlvbkFicy50b3ArdGhpcy5vZmZzZXQuY2xpY2sudG9wLHQudG9wK3QuaGVpZ2h0LzIsdC5oZWlnaHQpLGk9dGhpcy5faXNPdmVyQXhpcyh0aGlzLnBvc2l0aW9uQWJzLmxlZnQrdGhpcy5vZmZzZXQuY2xpY2subGVmdCx0LmxlZnQrdC53aWR0aC8yLHQud2lkdGgpLHM9dGhpcy5fZ2V0RHJhZ1ZlcnRpY2FsRGlyZWN0aW9uKCksbj10aGlzLl9nZXREcmFnSG9yaXpvbnRhbERpcmVjdGlvbigpO3JldHVybiB0aGlzLmZsb2F0aW5nJiZuPyJyaWdodCI9PT1uJiZpfHwibGVmdCI9PT1uJiYhaTpzJiYoImRvd24iPT09cyYmZXx8InVwIj09PXMmJiFlKX0sX2dldERyYWdWZXJ0aWNhbERpcmVjdGlvbjpmdW5jdGlvbigpe3ZhciB0PXRoaXMucG9zaXRpb25BYnMudG9wLXRoaXMubGFzdFBvc2l0aW9uQWJzLnRvcDtyZXR1cm4gMCE9PXQmJih0PjA/ImRvd24iOiJ1cCIpfSxfZ2V0RHJhZ0hvcml6b250YWxEaXJlY3Rpb246ZnVuY3Rpb24oKXt2YXIgdD10aGlzLnBvc2l0aW9uQWJzLmxlZnQtdGhpcy5sYXN0UG9zaXRpb25BYnMubGVmdDtyZXR1cm4gMCE9PXQmJih0PjA/InJpZ2h0IjoibGVmdCIpfSxyZWZyZXNoOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yZWZyZXNoSXRlbXModCksdGhpcy5fc2V0SGFuZGxlQ2xhc3NOYW1lKCksdGhpcy5yZWZyZXNoUG9zaXRpb25zKCksdGhpc30sX2Nvbm5lY3RXaXRoOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zO3JldHVybiB0LmNvbm5lY3RXaXRoLmNvbnN0cnVjdG9yPT09U3RyaW5nP1t0LmNvbm5lY3RXaXRoXTp0LmNvbm5lY3RXaXRofSxfZ2V0SXRlbXNBc2pRdWVyeTpmdW5jdGlvbihlKXtmdW5jdGlvbiBpKCl7ci5wdXNoKHRoaXMpfXZhciBzLG4sbyxhLHI9W10sbD1bXSxoPXRoaXMuX2Nvbm5lY3RXaXRoKCk7aWYoaCYmZSlmb3Iocz1oLmxlbmd0aC0xO3M+PTA7cy0tKWZvcihvPXQoaFtzXSx0aGlzLmRvY3VtZW50WzBdKSxuPW8ubGVuZ3RoLTE7bj49MDtuLS0pYT10LmRhdGEob1tuXSx0aGlzLndpZGdldEZ1bGxOYW1lKSxhJiZhIT09dGhpcyYmIWEub3B0aW9ucy5kaXNhYmxlZCYmbC5wdXNoKFt0LmlzRnVuY3Rpb24oYS5vcHRpb25zLml0ZW1zKT9hLm9wdGlvbnMuaXRlbXMuY2FsbChhLmVsZW1lbnQpOnQoYS5vcHRpb25zLml0ZW1zLGEuZWxlbWVudCkubm90KCIudWktc29ydGFibGUtaGVscGVyIikubm90KCIudWktc29ydGFibGUtcGxhY2Vob2xkZXIiKSxhXSk7Zm9yKGwucHVzaChbdC5pc0Z1bmN0aW9uKHRoaXMub3B0aW9ucy5pdGVtcyk/dGhpcy5vcHRpb25zLml0ZW1zLmNhbGwodGhpcy5lbGVtZW50LG51bGwse29wdGlvbnM6dGhpcy5vcHRpb25zLGl0ZW06dGhpcy5jdXJyZW50SXRlbX0pOnQodGhpcy5vcHRpb25zLml0ZW1zLHRoaXMuZWxlbWVudCkubm90KCIudWktc29ydGFibGUtaGVscGVyIikubm90KCIudWktc29ydGFibGUtcGxhY2Vob2xkZXIiKSx0aGlzXSkscz1sLmxlbmd0aC0xO3M+PTA7cy0tKWxbc11bMF0uZWFjaChpKTtyZXR1cm4gdChyKX0sX3JlbW92ZUN1cnJlbnRzRnJvbUl0ZW1zOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jdXJyZW50SXRlbS5maW5kKCI6ZGF0YSgiK3RoaXMud2lkZ2V0TmFtZSsiLWl0ZW0pIik7dGhpcy5pdGVtcz10LmdyZXAodGhpcy5pdGVtcyxmdW5jdGlvbih0KXtmb3IodmFyIGk9MDtlLmxlbmd0aD5pO2krKylpZihlW2ldPT09dC5pdGVtWzBdKXJldHVybiExO3JldHVybiEwfSl9LF9yZWZyZXNoSXRlbXM6ZnVuY3Rpb24oZSl7dGhpcy5pdGVtcz1bXSx0aGlzLmNvbnRhaW5lcnM9W3RoaXNdO3ZhciBpLHMsbixvLGEscixsLGgsYz10aGlzLml0ZW1zLHU9W1t0LmlzRnVuY3Rpb24odGhpcy5vcHRpb25zLml0ZW1zKT90aGlzLm9wdGlvbnMuaXRlbXMuY2FsbCh0aGlzLmVsZW1lbnRbMF0sZSx7aXRlbTp0aGlzLmN1cnJlbnRJdGVtfSk6dCh0aGlzLm9wdGlvbnMuaXRlbXMsdGhpcy5lbGVtZW50KSx0aGlzXV0sZD10aGlzLl9jb25uZWN0V2l0aCgpO2lmKGQmJnRoaXMucmVhZHkpZm9yKGk9ZC5sZW5ndGgtMTtpPj0wO2ktLSlmb3Iobj10KGRbaV0sdGhpcy5kb2N1bWVudFswXSkscz1uLmxlbmd0aC0xO3M+PTA7cy0tKW89dC5kYXRhKG5bc10sdGhpcy53aWRnZXRGdWxsTmFtZSksbyYmbyE9PXRoaXMmJiFvLm9wdGlvbnMuZGlzYWJsZWQmJih1LnB1c2goW3QuaXNGdW5jdGlvbihvLm9wdGlvbnMuaXRlbXMpP28ub3B0aW9ucy5pdGVtcy5jYWxsKG8uZWxlbWVudFswXSxlLHtpdGVtOnRoaXMuY3VycmVudEl0ZW19KTp0KG8ub3B0aW9ucy5pdGVtcyxvLmVsZW1lbnQpLG9dKSx0aGlzLmNvbnRhaW5lcnMucHVzaChvKSk7Zm9yKGk9dS5sZW5ndGgtMTtpPj0wO2ktLSlmb3IoYT11W2ldWzFdLHI9dVtpXVswXSxzPTAsaD1yLmxlbmd0aDtoPnM7cysrKWw9dChyW3NdKSxsLmRhdGEodGhpcy53aWRnZXROYW1lKyItaXRlbSIsYSksYy5wdXNoKHtpdGVtOmwsaW5zdGFuY2U6YSx3aWR0aDowLGhlaWdodDowLGxlZnQ6MCx0b3A6MH0pfSxyZWZyZXNoUG9zaXRpb25zOmZ1bmN0aW9uKGUpe3RoaXMuZmxvYXRpbmc9dGhpcy5pdGVtcy5sZW5ndGg/IngiPT09dGhpcy5vcHRpb25zLmF4aXN8fHRoaXMuX2lzRmxvYXRpbmcodGhpcy5pdGVtc1swXS5pdGVtKTohMSx0aGlzLm9mZnNldFBhcmVudCYmdGhpcy5oZWxwZXImJih0aGlzLm9mZnNldC5wYXJlbnQ9dGhpcy5fZ2V0UGFyZW50T2Zmc2V0KCkpO3ZhciBpLHMsbixvO2ZvcihpPXRoaXMuaXRlbXMubGVuZ3RoLTE7aT49MDtpLS0pcz10aGlzLml0ZW1zW2ldLHMuaW5zdGFuY2UhPT10aGlzLmN1cnJlbnRDb250YWluZXImJnRoaXMuY3VycmVudENvbnRhaW5lciYmcy5pdGVtWzBdIT09dGhpcy5jdXJyZW50SXRlbVswXXx8KG49dGhpcy5vcHRpb25zLnRvbGVyYW5jZUVsZW1lbnQ/dCh0aGlzLm9wdGlvbnMudG9sZXJhbmNlRWxlbWVudCxzLml0ZW0pOnMuaXRlbSxlfHwocy53aWR0aD1uLm91dGVyV2lkdGgoKSxzLmhlaWdodD1uLm91dGVySGVpZ2h0KCkpLG89bi5vZmZzZXQoKSxzLmxlZnQ9by5sZWZ0LHMudG9wPW8udG9wKTtpZih0aGlzLm9wdGlvbnMuY3VzdG9tJiZ0aGlzLm9wdGlvbnMuY3VzdG9tLnJlZnJlc2hDb250YWluZXJzKXRoaXMub3B0aW9ucy5jdXN0b20ucmVmcmVzaENvbnRhaW5lcnMuY2FsbCh0aGlzKTtlbHNlIGZvcihpPXRoaXMuY29udGFpbmVycy5sZW5ndGgtMTtpPj0wO2ktLSlvPXRoaXMuY29udGFpbmVyc1tpXS5lbGVtZW50Lm9mZnNldCgpLHRoaXMuY29udGFpbmVyc1tpXS5jb250YWluZXJDYWNoZS5sZWZ0PW8ubGVmdCx0aGlzLmNvbnRhaW5lcnNbaV0uY29udGFpbmVyQ2FjaGUudG9wPW8udG9wLHRoaXMuY29udGFpbmVyc1tpXS5jb250YWluZXJDYWNoZS53aWR0aD10aGlzLmNvbnRhaW5lcnNbaV0uZWxlbWVudC5vdXRlcldpZHRoKCksdGhpcy5jb250YWluZXJzW2ldLmNvbnRhaW5lckNhY2hlLmhlaWdodD10aGlzLmNvbnRhaW5lcnNbaV0uZWxlbWVudC5vdXRlckhlaWdodCgpO3JldHVybiB0aGlzfSxfY3JlYXRlUGxhY2Vob2xkZXI6ZnVuY3Rpb24oZSl7ZT1lfHx0aGlzO3ZhciBpLHM9ZS5vcHRpb25zO3MucGxhY2Vob2xkZXImJnMucGxhY2Vob2xkZXIuY29uc3RydWN0b3IhPT1TdHJpbmd8fChpPXMucGxhY2Vob2xkZXIscy5wbGFjZWhvbGRlcj17ZWxlbWVudDpmdW5jdGlvbigpe3ZhciBzPWUuY3VycmVudEl0ZW1bMF0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxuPXQoIjwiK3MrIj4iLGUuZG9jdW1lbnRbMF0pLmFkZENsYXNzKGl8fGUuY3VycmVudEl0ZW1bMF0uY2xhc3NOYW1lKyIgdWktc29ydGFibGUtcGxhY2Vob2xkZXIiKS5yZW1vdmVDbGFzcygidWktc29ydGFibGUtaGVscGVyIik7cmV0dXJuInRib2R5Ij09PXM/ZS5fY3JlYXRlVHJQbGFjZWhvbGRlcihlLmN1cnJlbnRJdGVtLmZpbmQoInRyIikuZXEoMCksdCgiPHRyPiIsZS5kb2N1bWVudFswXSkuYXBwZW5kVG8obikpOiJ0ciI9PT1zP2UuX2NyZWF0ZVRyUGxhY2Vob2xkZXIoZS5jdXJyZW50SXRlbSxuKToiaW1nIj09PXMmJm4uYXR0cigic3JjIixlLmN1cnJlbnRJdGVtLmF0dHIoInNyYyIpKSxpfHxuLmNzcygidmlzaWJpbGl0eSIsImhpZGRlbiIpLG59LHVwZGF0ZTpmdW5jdGlvbih0LG4peyghaXx8cy5mb3JjZVBsYWNlaG9sZGVyU2l6ZSkmJihuLmhlaWdodCgpfHxuLmhlaWdodChlLmN1cnJlbnRJdGVtLmlubmVySGVpZ2h0KCktcGFyc2VJbnQoZS5jdXJyZW50SXRlbS5jc3MoInBhZGRpbmdUb3AiKXx8MCwxMCktcGFyc2VJbnQoZS5jdXJyZW50SXRlbS5jc3MoInBhZGRpbmdCb3R0b20iKXx8MCwxMCkpLG4ud2lkdGgoKXx8bi53aWR0aChlLmN1cnJlbnRJdGVtLmlubmVyV2lkdGgoKS1wYXJzZUludChlLmN1cnJlbnRJdGVtLmNzcygicGFkZGluZ0xlZnQiKXx8MCwxMCktcGFyc2VJbnQoZS5jdXJyZW50SXRlbS5jc3MoInBhZGRpbmdSaWdodCIpfHwwLDEwKSkpfX0pLGUucGxhY2Vob2xkZXI9dChzLnBsYWNlaG9sZGVyLmVsZW1lbnQuY2FsbChlLmVsZW1lbnQsZS5jdXJyZW50SXRlbSkpLGUuY3VycmVudEl0ZW0uYWZ0ZXIoZS5wbGFjZWhvbGRlcikscy5wbGFjZWhvbGRlci51cGRhdGUoZSxlLnBsYWNlaG9sZGVyKX0sX2NyZWF0ZVRyUGxhY2Vob2xkZXI6ZnVuY3Rpb24oZSxpKXt2YXIgcz10aGlzO2UuY2hpbGRyZW4oKS5lYWNoKGZ1bmN0aW9uKCl7dCgiPHRkPiYjMTYwOzwvdGQ+IixzLmRvY3VtZW50WzBdKS5hdHRyKCJjb2xzcGFuIix0KHRoaXMpLmF0dHIoImNvbHNwYW4iKXx8MSkuYXBwZW5kVG8oaSl9KX0sX2NvbnRhY3RDb250YWluZXJzOmZ1bmN0aW9uKGUpe3ZhciBpLHMsbixvLGEscixsLGgsYyx1LGQ9bnVsbCxwPW51bGw7Zm9yKGk9dGhpcy5jb250YWluZXJzLmxlbmd0aC0xO2k+PTA7aS0tKWlmKCF0LmNvbnRhaW5zKHRoaXMuY3VycmVudEl0ZW1bMF0sdGhpcy5jb250YWluZXJzW2ldLmVsZW1lbnRbMF0pKWlmKHRoaXMuX2ludGVyc2VjdHNXaXRoKHRoaXMuY29udGFpbmVyc1tpXS5jb250YWluZXJDYWNoZSkpe2lmKGQmJnQuY29udGFpbnModGhpcy5jb250YWluZXJzW2ldLmVsZW1lbnRbMF0sZC5lbGVtZW50WzBdKSljb250aW51ZTtkPXRoaXMuY29udGFpbmVyc1tpXSxwPWl9ZWxzZSB0aGlzLmNvbnRhaW5lcnNbaV0uY29udGFpbmVyQ2FjaGUub3ZlciYmKHRoaXMuY29udGFpbmVyc1tpXS5fdHJpZ2dlcigib3V0IixlLHRoaXMuX3VpSGFzaCh0aGlzKSksdGhpcy5jb250YWluZXJzW2ldLmNvbnRhaW5lckNhY2hlLm92ZXI9MCk7aWYoZClpZigxPT09dGhpcy5jb250YWluZXJzLmxlbmd0aCl0aGlzLmNvbnRhaW5lcnNbcF0uY29udGFpbmVyQ2FjaGUub3Zlcnx8KHRoaXMuY29udGFpbmVyc1twXS5fdHJpZ2dlcigib3ZlciIsZSx0aGlzLl91aUhhc2godGhpcykpLHRoaXMuY29udGFpbmVyc1twXS5jb250YWluZXJDYWNoZS5vdmVyPTEpO2Vsc2V7Zm9yKG49MWU0LG89bnVsbCxjPWQuZmxvYXRpbmd8fHRoaXMuX2lzRmxvYXRpbmcodGhpcy5jdXJyZW50SXRlbSksYT1jPyJsZWZ0IjoidG9wIixyPWM/IndpZHRoIjoiaGVpZ2h0Iix1PWM/ImNsaWVudFgiOiJjbGllbnRZIixzPXRoaXMuaXRlbXMubGVuZ3RoLTE7cz49MDtzLS0pdC5jb250YWlucyh0aGlzLmNvbnRhaW5lcnNbcF0uZWxlbWVudFswXSx0aGlzLml0ZW1zW3NdLml0ZW1bMF0pJiZ0aGlzLml0ZW1zW3NdLml0ZW1bMF0hPT10aGlzLmN1cnJlbnRJdGVtWzBdJiYobD10aGlzLml0ZW1zW3NdLml0ZW0ub2Zmc2V0KClbYV0saD0hMSxlW3VdLWw+dGhpcy5pdGVtc1tzXVtyXS8yJiYoaD0hMCksbj5NYXRoLmFicyhlW3VdLWwpJiYobj1NYXRoLmFicyhlW3VdLWwpLG89dGhpcy5pdGVtc1tzXSx0aGlzLmRpcmVjdGlvbj1oPyJ1cCI6ImRvd24iKSk7aWYoIW8mJiF0aGlzLm9wdGlvbnMuZHJvcE9uRW1wdHkpcmV0dXJuO2lmKHRoaXMuY3VycmVudENvbnRhaW5lcj09PXRoaXMuY29udGFpbmVyc1twXSlyZXR1cm4gdGhpcy5jdXJyZW50Q29udGFpbmVyLmNvbnRhaW5lckNhY2hlLm92ZXJ8fCh0aGlzLmNvbnRhaW5lcnNbcF0uX3RyaWdnZXIoIm92ZXIiLGUsdGhpcy5fdWlIYXNoKCkpLHRoaXMuY3VycmVudENvbnRhaW5lci5jb250YWluZXJDYWNoZS5vdmVyPTEpLHZvaWQgMDtvP3RoaXMuX3JlYXJyYW5nZShlLG8sbnVsbCwhMCk6dGhpcy5fcmVhcnJhbmdlKGUsbnVsbCx0aGlzLmNvbnRhaW5lcnNbcF0uZWxlbWVudCwhMCksdGhpcy5fdHJpZ2dlcigiY2hhbmdlIixlLHRoaXMuX3VpSGFzaCgpKSx0aGlzLmNvbnRhaW5lcnNbcF0uX3RyaWdnZXIoImNoYW5nZSIsZSx0aGlzLl91aUhhc2godGhpcykpLHRoaXMuY3VycmVudENvbnRhaW5lcj10aGlzLmNvbnRhaW5lcnNbcF0sdGhpcy5vcHRpb25zLnBsYWNlaG9sZGVyLnVwZGF0ZSh0aGlzLmN1cnJlbnRDb250YWluZXIsdGhpcy5wbGFjZWhvbGRlciksdGhpcy5jb250YWluZXJzW3BdLl90cmlnZ2VyKCJvdmVyIixlLHRoaXMuX3VpSGFzaCh0aGlzKSksdGhpcy5jb250YWluZXJzW3BdLmNvbnRhaW5lckNhY2hlLm92ZXI9MX19LF9jcmVhdGVIZWxwZXI6ZnVuY3Rpb24oZSl7dmFyIGk9dGhpcy5vcHRpb25zLHM9dC5pc0Z1bmN0aW9uKGkuaGVscGVyKT90KGkuaGVscGVyLmFwcGx5KHRoaXMuZWxlbWVudFswXSxbZSx0aGlzLmN1cnJlbnRJdGVtXSkpOiJjbG9uZSI9PT1pLmhlbHBlcj90aGlzLmN1cnJlbnRJdGVtLmNsb25lKCk6dGhpcy5jdXJyZW50SXRlbTtyZXR1cm4gcy5wYXJlbnRzKCJib2R5IikubGVuZ3RofHx0KCJwYXJlbnQiIT09aS5hcHBlbmRUbz9pLmFwcGVuZFRvOnRoaXMuY3VycmVudEl0ZW1bMF0ucGFyZW50Tm9kZSlbMF0uYXBwZW5kQ2hpbGQoc1swXSksc1swXT09PXRoaXMuY3VycmVudEl0ZW1bMF0mJih0aGlzLl9zdG9yZWRDU1M9e3dpZHRoOnRoaXMuY3VycmVudEl0ZW1bMF0uc3R5bGUud2lkdGgsaGVpZ2h0OnRoaXMuY3VycmVudEl0ZW1bMF0uc3R5bGUuaGVpZ2h0LHBvc2l0aW9uOnRoaXMuY3VycmVudEl0ZW0uY3NzKCJwb3NpdGlvbiIpLHRvcDp0aGlzLmN1cnJlbnRJdGVtLmNzcygidG9wIiksbGVmdDp0aGlzLmN1cnJlbnRJdGVtLmNzcygibGVmdCIpfSksKCFzWzBdLnN0eWxlLndpZHRofHxpLmZvcmNlSGVscGVyU2l6ZSkmJnMud2lkdGgodGhpcy5jdXJyZW50SXRlbS53aWR0aCgpKSwoIXNbMF0uc3R5bGUuaGVpZ2h0fHxpLmZvcmNlSGVscGVyU2l6ZSkmJnMuaGVpZ2h0KHRoaXMuY3VycmVudEl0ZW0uaGVpZ2h0KCkpLHN9LF9hZGp1c3RPZmZzZXRGcm9tSGVscGVyOmZ1bmN0aW9uKGUpeyJzdHJpbmciPT10eXBlb2YgZSYmKGU9ZS5zcGxpdCgiICIpKSx0LmlzQXJyYXkoZSkmJihlPXtsZWZ0OitlWzBdLHRvcDorZVsxXXx8MH0pLCJsZWZ0ImluIGUmJih0aGlzLm9mZnNldC5jbGljay5sZWZ0PWUubGVmdCt0aGlzLm1hcmdpbnMubGVmdCksInJpZ2h0ImluIGUmJih0aGlzLm9mZnNldC5jbGljay5sZWZ0PXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgtZS5yaWdodCt0aGlzLm1hcmdpbnMubGVmdCksInRvcCJpbiBlJiYodGhpcy5vZmZzZXQuY2xpY2sudG9wPWUudG9wK3RoaXMubWFyZ2lucy50b3ApLCJib3R0b20iaW4gZSYmKHRoaXMub2Zmc2V0LmNsaWNrLnRvcD10aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC1lLmJvdHRvbSt0aGlzLm1hcmdpbnMudG9wKX0sX2dldFBhcmVudE9mZnNldDpmdW5jdGlvbigpe3RoaXMub2Zmc2V0UGFyZW50PXRoaXMuaGVscGVyLm9mZnNldFBhcmVudCgpO3ZhciBlPXRoaXMub2Zmc2V0UGFyZW50Lm9mZnNldCgpO3JldHVybiJhYnNvbHV0ZSI9PT10aGlzLmNzc1Bvc2l0aW9uJiZ0aGlzLnNjcm9sbFBhcmVudFswXSE9PXRoaXMuZG9jdW1lbnRbMF0mJnQuY29udGFpbnModGhpcy5zY3JvbGxQYXJlbnRbMF0sdGhpcy5vZmZzZXRQYXJlbnRbMF0pJiYoZS5sZWZ0Kz10aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxMZWZ0KCksZS50b3ArPXRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbFRvcCgpKSwodGhpcy5vZmZzZXRQYXJlbnRbMF09PT10aGlzLmRvY3VtZW50WzBdLmJvZHl8fHRoaXMub2Zmc2V0UGFyZW50WzBdLnRhZ05hbWUmJiJodG1sIj09PXRoaXMub2Zmc2V0UGFyZW50WzBdLnRhZ05hbWUudG9Mb3dlckNhc2UoKSYmdC51aS5pZSkmJihlPXt0b3A6MCxsZWZ0OjB9KSx7dG9wOmUudG9wKyhwYXJzZUludCh0aGlzLm9mZnNldFBhcmVudC5jc3MoImJvcmRlclRvcFdpZHRoIiksMTApfHwwKSxsZWZ0OmUubGVmdCsocGFyc2VJbnQodGhpcy5vZmZzZXRQYXJlbnQuY3NzKCJib3JkZXJMZWZ0V2lkdGgiKSwxMCl8fDApfX0sX2dldFJlbGF0aXZlT2Zmc2V0OmZ1bmN0aW9uKCl7aWYoInJlbGF0aXZlIj09PXRoaXMuY3NzUG9zaXRpb24pe3ZhciB0PXRoaXMuY3VycmVudEl0ZW0ucG9zaXRpb24oKTtyZXR1cm57dG9wOnQudG9wLShwYXJzZUludCh0aGlzLmhlbHBlci5jc3MoInRvcCIpLDEwKXx8MCkrdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsVG9wKCksbGVmdDp0LmxlZnQtKHBhcnNlSW50KHRoaXMuaGVscGVyLmNzcygibGVmdCIpLDEwKXx8MCkrdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsTGVmdCgpfX1yZXR1cm57dG9wOjAsbGVmdDowfX0sX2NhY2hlTWFyZ2luczpmdW5jdGlvbigpe3RoaXMubWFyZ2lucz17bGVmdDpwYXJzZUludCh0aGlzLmN1cnJlbnRJdGVtLmNzcygibWFyZ2luTGVmdCIpLDEwKXx8MCx0b3A6cGFyc2VJbnQodGhpcy5jdXJyZW50SXRlbS5jc3MoIm1hcmdpblRvcCIpLDEwKXx8MH19LF9jYWNoZUhlbHBlclByb3BvcnRpb25zOmZ1bmN0aW9uKCl7dGhpcy5oZWxwZXJQcm9wb3J0aW9ucz17d2lkdGg6dGhpcy5oZWxwZXIub3V0ZXJXaWR0aCgpLGhlaWdodDp0aGlzLmhlbHBlci5vdXRlckhlaWdodCgpfX0sX3NldENvbnRhaW5tZW50OmZ1bmN0aW9uKCl7dmFyIGUsaSxzLG49dGhpcy5vcHRpb25zOyJwYXJlbnQiPT09bi5jb250YWlubWVudCYmKG4uY29udGFpbm1lbnQ9dGhpcy5oZWxwZXJbMF0ucGFyZW50Tm9kZSksKCJkb2N1bWVudCI9PT1uLmNvbnRhaW5tZW50fHwid2luZG93Ij09PW4uY29udGFpbm1lbnQpJiYodGhpcy5jb250YWlubWVudD1bMC10aGlzLm9mZnNldC5yZWxhdGl2ZS5sZWZ0LXRoaXMub2Zmc2V0LnBhcmVudC5sZWZ0LDAtdGhpcy5vZmZzZXQucmVsYXRpdmUudG9wLXRoaXMub2Zmc2V0LnBhcmVudC50b3AsImRvY3VtZW50Ij09PW4uY29udGFpbm1lbnQ/dGhpcy5kb2N1bWVudC53aWR0aCgpOnRoaXMud2luZG93LndpZHRoKCktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aC10aGlzLm1hcmdpbnMubGVmdCwoImRvY3VtZW50Ij09PW4uY29udGFpbm1lbnQ/dGhpcy5kb2N1bWVudC53aWR0aCgpOnRoaXMud2luZG93LmhlaWdodCgpfHx0aGlzLmRvY3VtZW50WzBdLmJvZHkucGFyZW50Tm9kZS5zY3JvbGxIZWlnaHQpLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LXRoaXMubWFyZ2lucy50b3BdKSwvXihkb2N1bWVudHx3aW5kb3d8cGFyZW50KSQvLnRlc3Qobi5jb250YWlubWVudCl8fChlPXQobi5jb250YWlubWVudClbMF0saT10KG4uY29udGFpbm1lbnQpLm9mZnNldCgpLHM9ImhpZGRlbiIhPT10KGUpLmNzcygib3ZlcmZsb3ciKSx0aGlzLmNvbnRhaW5tZW50PVtpLmxlZnQrKHBhcnNlSW50KHQoZSkuY3NzKCJib3JkZXJMZWZ0V2lkdGgiKSwxMCl8fDApKyhwYXJzZUludCh0KGUpLmNzcygicGFkZGluZ0xlZnQiKSwxMCl8fDApLXRoaXMubWFyZ2lucy5sZWZ0LGkudG9wKyhwYXJzZUludCh0KGUpLmNzcygiYm9yZGVyVG9wV2lkdGgiKSwxMCl8fDApKyhwYXJzZUludCh0KGUpLmNzcygicGFkZGluZ1RvcCIpLDEwKXx8MCktdGhpcy5tYXJnaW5zLnRvcCxpLmxlZnQrKHM/TWF0aC5tYXgoZS5zY3JvbGxXaWR0aCxlLm9mZnNldFdpZHRoKTplLm9mZnNldFdpZHRoKS0ocGFyc2VJbnQodChlKS5jc3MoImJvcmRlckxlZnRXaWR0aCIpLDEwKXx8MCktKHBhcnNlSW50KHQoZSkuY3NzKCJwYWRkaW5nUmlnaHQiKSwxMCl8fDApLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgtdGhpcy5tYXJnaW5zLmxlZnQsaS50b3ArKHM/TWF0aC5tYXgoZS5zY3JvbGxIZWlnaHQsZS5vZmZzZXRIZWlnaHQpOmUub2Zmc2V0SGVpZ2h0KS0ocGFyc2VJbnQodChlKS5jc3MoImJvcmRlclRvcFdpZHRoIiksMTApfHwwKS0ocGFyc2VJbnQodChlKS5jc3MoInBhZGRpbmdCb3R0b20iKSwxMCl8fDApLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LXRoaXMubWFyZ2lucy50b3BdKX0sX2NvbnZlcnRQb3NpdGlvblRvOmZ1bmN0aW9uKGUsaSl7aXx8KGk9dGhpcy5wb3NpdGlvbik7dmFyIHM9ImFic29sdXRlIj09PWU/MTotMSxuPSJhYnNvbHV0ZSIhPT10aGlzLmNzc1Bvc2l0aW9ufHx0aGlzLnNjcm9sbFBhcmVudFswXSE9PXRoaXMuZG9jdW1lbnRbMF0mJnQuY29udGFpbnModGhpcy5zY3JvbGxQYXJlbnRbMF0sdGhpcy5vZmZzZXRQYXJlbnRbMF0pP3RoaXMuc2Nyb2xsUGFyZW50OnRoaXMub2Zmc2V0UGFyZW50LG89LyhodG1sfGJvZHkpL2kudGVzdChuWzBdLnRhZ05hbWUpO3JldHVybnt0b3A6aS50b3ArdGhpcy5vZmZzZXQucmVsYXRpdmUudG9wKnMrdGhpcy5vZmZzZXQucGFyZW50LnRvcCpzLSgiZml4ZWQiPT09dGhpcy5jc3NQb3NpdGlvbj8tdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsVG9wKCk6bz8wOm4uc2Nyb2xsVG9wKCkpKnMsbGVmdDppLmxlZnQrdGhpcy5vZmZzZXQucmVsYXRpdmUubGVmdCpzK3RoaXMub2Zmc2V0LnBhcmVudC5sZWZ0KnMtKCJmaXhlZCI9PT10aGlzLmNzc1Bvc2l0aW9uPy10aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxMZWZ0KCk6bz8wOm4uc2Nyb2xsTGVmdCgpKSpzfX0sX2dlbmVyYXRlUG9zaXRpb246ZnVuY3Rpb24oZSl7dmFyIGkscyxuPXRoaXMub3B0aW9ucyxvPWUucGFnZVgsYT1lLnBhZ2VZLHI9ImFic29sdXRlIiE9PXRoaXMuY3NzUG9zaXRpb258fHRoaXMuc2Nyb2xsUGFyZW50WzBdIT09dGhpcy5kb2N1bWVudFswXSYmdC5jb250YWlucyh0aGlzLnNjcm9sbFBhcmVudFswXSx0aGlzLm9mZnNldFBhcmVudFswXSk/dGhpcy5zY3JvbGxQYXJlbnQ6dGhpcy5vZmZzZXRQYXJlbnQsbD0vKGh0bWx8Ym9keSkvaS50ZXN0KHJbMF0udGFnTmFtZSk7cmV0dXJuInJlbGF0aXZlIiE9PXRoaXMuY3NzUG9zaXRpb258fHRoaXMuc2Nyb2xsUGFyZW50WzBdIT09dGhpcy5kb2N1bWVudFswXSYmdGhpcy5zY3JvbGxQYXJlbnRbMF0hPT10aGlzLm9mZnNldFBhcmVudFswXXx8KHRoaXMub2Zmc2V0LnJlbGF0aXZlPXRoaXMuX2dldFJlbGF0aXZlT2Zmc2V0KCkpLHRoaXMub3JpZ2luYWxQb3NpdGlvbiYmKHRoaXMuY29udGFpbm1lbnQmJihlLnBhZ2VYLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ8dGhpcy5jb250YWlubWVudFswXSYmKG89dGhpcy5jb250YWlubWVudFswXSt0aGlzLm9mZnNldC5jbGljay5sZWZ0KSxlLnBhZ2VZLXRoaXMub2Zmc2V0LmNsaWNrLnRvcDx0aGlzLmNvbnRhaW5tZW50WzFdJiYoYT10aGlzLmNvbnRhaW5tZW50WzFdK3RoaXMub2Zmc2V0LmNsaWNrLnRvcCksZS5wYWdlWC10aGlzLm9mZnNldC5jbGljay5sZWZ0PnRoaXMuY29udGFpbm1lbnRbMl0mJihvPXRoaXMuY29udGFpbm1lbnRbMl0rdGhpcy5vZmZzZXQuY2xpY2subGVmdCksZS5wYWdlWS10aGlzLm9mZnNldC5jbGljay50b3A+dGhpcy5jb250YWlubWVudFszXSYmKGE9dGhpcy5jb250YWlubWVudFszXSt0aGlzLm9mZnNldC5jbGljay50b3ApKSxuLmdyaWQmJihpPXRoaXMub3JpZ2luYWxQYWdlWStNYXRoLnJvdW5kKChhLXRoaXMub3JpZ2luYWxQYWdlWSkvbi5ncmlkWzFdKSpuLmdyaWRbMV0sYT10aGlzLmNvbnRhaW5tZW50P2ktdGhpcy5vZmZzZXQuY2xpY2sudG9wPj10aGlzLmNvbnRhaW5tZW50WzFdJiZpLXRoaXMub2Zmc2V0LmNsaWNrLnRvcDw9dGhpcy5jb250YWlubWVudFszXT9pOmktdGhpcy5vZmZzZXQuY2xpY2sudG9wPj10aGlzLmNvbnRhaW5tZW50WzFdP2ktbi5ncmlkWzFdOmkrbi5ncmlkWzFdOmkscz10aGlzLm9yaWdpbmFsUGFnZVgrTWF0aC5yb3VuZCgoby10aGlzLm9yaWdpbmFsUGFnZVgpL24uZ3JpZFswXSkqbi5ncmlkWzBdLG89dGhpcy5jb250YWlubWVudD9zLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ+PXRoaXMuY29udGFpbm1lbnRbMF0mJnMtdGhpcy5vZmZzZXQuY2xpY2subGVmdDw9dGhpcy5jb250YWlubWVudFsyXT9zOnMtdGhpcy5vZmZzZXQuY2xpY2subGVmdD49dGhpcy5jb250YWlubWVudFswXT9zLW4uZ3JpZFswXTpzK24uZ3JpZFswXTpzKSkse3RvcDphLXRoaXMub2Zmc2V0LmNsaWNrLnRvcC10aGlzLm9mZnNldC5yZWxhdGl2ZS50b3AtdGhpcy5vZmZzZXQucGFyZW50LnRvcCsoImZpeGVkIj09PXRoaXMuY3NzUG9zaXRpb24/LXRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbFRvcCgpOmw/MDpyLnNjcm9sbFRvcCgpKSxsZWZ0Om8tdGhpcy5vZmZzZXQuY2xpY2subGVmdC10aGlzLm9mZnNldC5yZWxhdGl2ZS5sZWZ0LXRoaXMub2Zmc2V0LnBhcmVudC5sZWZ0KygiZml4ZWQiPT09dGhpcy5jc3NQb3NpdGlvbj8tdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsTGVmdCgpOmw/MDpyLnNjcm9sbExlZnQoKSl9fSxfcmVhcnJhbmdlOmZ1bmN0aW9uKHQsZSxpLHMpe2k/aVswXS5hcHBlbmRDaGlsZCh0aGlzLnBsYWNlaG9sZGVyWzBdKTplLml0ZW1bMF0ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcy5wbGFjZWhvbGRlclswXSwiZG93biI9PT10aGlzLmRpcmVjdGlvbj9lLml0ZW1bMF06ZS5pdGVtWzBdLm5leHRTaWJsaW5nKSx0aGlzLmNvdW50ZXI9dGhpcy5jb3VudGVyPysrdGhpcy5jb3VudGVyOjE7dmFyIG49dGhpcy5jb3VudGVyO3RoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7bj09PXRoaXMuY291bnRlciYmdGhpcy5yZWZyZXNoUG9zaXRpb25zKCFzKX0pfSxfY2xlYXI6ZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBpKHQsZSxpKXtyZXR1cm4gZnVuY3Rpb24ocyl7aS5fdHJpZ2dlcih0LHMsZS5fdWlIYXNoKGUpKX19dGhpcy5yZXZlcnRpbmc9ITE7dmFyIHMsbj1bXTtpZighdGhpcy5fbm9GaW5hbFNvcnQmJnRoaXMuY3VycmVudEl0ZW0ucGFyZW50KCkubGVuZ3RoJiZ0aGlzLnBsYWNlaG9sZGVyLmJlZm9yZSh0aGlzLmN1cnJlbnRJdGVtKSx0aGlzLl9ub0ZpbmFsU29ydD1udWxsLHRoaXMuaGVscGVyWzBdPT09dGhpcy5jdXJyZW50SXRlbVswXSl7Zm9yKHMgaW4gdGhpcy5fc3RvcmVkQ1NTKSgiYXV0byI9PT10aGlzLl9zdG9yZWRDU1Nbc118fCJzdGF0aWMiPT09dGhpcy5fc3RvcmVkQ1NTW3NdKSYmKHRoaXMuX3N0b3JlZENTU1tzXT0iIik7dGhpcy5jdXJyZW50SXRlbS5jc3ModGhpcy5fc3RvcmVkQ1NTKS5yZW1vdmVDbGFzcygidWktc29ydGFibGUtaGVscGVyIil9ZWxzZSB0aGlzLmN1cnJlbnRJdGVtLnNob3coKTtmb3IodGhpcy5mcm9tT3V0c2lkZSYmIWUmJm4ucHVzaChmdW5jdGlvbih0KXt0aGlzLl90cmlnZ2VyKCJyZWNlaXZlIix0LHRoaXMuX3VpSGFzaCh0aGlzLmZyb21PdXRzaWRlKSl9KSwhdGhpcy5mcm9tT3V0c2lkZSYmdGhpcy5kb21Qb3NpdGlvbi5wcmV2PT09dGhpcy5jdXJyZW50SXRlbS5wcmV2KCkubm90KCIudWktc29ydGFibGUtaGVscGVyIilbMF0mJnRoaXMuZG9tUG9zaXRpb24ucGFyZW50PT09dGhpcy5jdXJyZW50SXRlbS5wYXJlbnQoKVswXXx8ZXx8bi5wdXNoKGZ1bmN0aW9uKHQpe3RoaXMuX3RyaWdnZXIoInVwZGF0ZSIsdCx0aGlzLl91aUhhc2goKSl9KSx0aGlzIT09dGhpcy5jdXJyZW50Q29udGFpbmVyJiYoZXx8KG4ucHVzaChmdW5jdGlvbih0KXt0aGlzLl90cmlnZ2VyKCJyZW1vdmUiLHQsdGhpcy5fdWlIYXNoKCkpfSksbi5wdXNoKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXt0Ll90cmlnZ2VyKCJyZWNlaXZlIixlLHRoaXMuX3VpSGFzaCh0aGlzKSl9fS5jYWxsKHRoaXMsdGhpcy5jdXJyZW50Q29udGFpbmVyKSksbi5wdXNoKGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXt0Ll90cmlnZ2VyKCJ1cGRhdGUiLGUsdGhpcy5fdWlIYXNoKHRoaXMpKX19LmNhbGwodGhpcyx0aGlzLmN1cnJlbnRDb250YWluZXIpKSkpLHM9dGhpcy5jb250YWluZXJzLmxlbmd0aC0xO3M+PTA7cy0tKWV8fG4ucHVzaChpKCJkZWFjdGl2YXRlIix0aGlzLHRoaXMuY29udGFpbmVyc1tzXSkpLHRoaXMuY29udGFpbmVyc1tzXS5jb250YWluZXJDYWNoZS5vdmVyJiYobi5wdXNoKGkoIm91dCIsdGhpcyx0aGlzLmNvbnRhaW5lcnNbc10pKSx0aGlzLmNvbnRhaW5lcnNbc10uY29udGFpbmVyQ2FjaGUub3Zlcj0wKTtpZih0aGlzLnN0b3JlZEN1cnNvciYmKHRoaXMuZG9jdW1lbnQuZmluZCgiYm9keSIpLmNzcygiY3Vyc29yIix0aGlzLnN0b3JlZEN1cnNvciksdGhpcy5zdG9yZWRTdHlsZXNoZWV0LnJlbW92ZSgpKSx0aGlzLl9zdG9yZWRPcGFjaXR5JiZ0aGlzLmhlbHBlci5jc3MoIm9wYWNpdHkiLHRoaXMuX3N0b3JlZE9wYWNpdHkpLHRoaXMuX3N0b3JlZFpJbmRleCYmdGhpcy5oZWxwZXIuY3NzKCJ6SW5kZXgiLCJhdXRvIj09PXRoaXMuX3N0b3JlZFpJbmRleD8iIjp0aGlzLl9zdG9yZWRaSW5kZXgpLHRoaXMuZHJhZ2dpbmc9ITEsZXx8dGhpcy5fdHJpZ2dlcigiYmVmb3JlU3RvcCIsdCx0aGlzLl91aUhhc2goKSksdGhpcy5wbGFjZWhvbGRlclswXS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMucGxhY2Vob2xkZXJbMF0pLHRoaXMuY2FuY2VsSGVscGVyUmVtb3ZhbHx8KHRoaXMuaGVscGVyWzBdIT09dGhpcy5jdXJyZW50SXRlbVswXSYmdGhpcy5oZWxwZXIucmVtb3ZlKCksdGhpcy5oZWxwZXI9bnVsbCksIWUpe2ZvcihzPTA7bi5sZW5ndGg+cztzKyspbltzXS5jYWxsKHRoaXMsdCk7dGhpcy5fdHJpZ2dlcigic3RvcCIsdCx0aGlzLl91aUhhc2goKSl9cmV0dXJuIHRoaXMuZnJvbU91dHNpZGU9ITEsIXRoaXMuY2FuY2VsSGVscGVyUmVtb3ZhbH0sX3RyaWdnZXI6ZnVuY3Rpb24oKXt0LldpZGdldC5wcm90b3R5cGUuX3RyaWdnZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpPT09ITEmJnRoaXMuY2FuY2VsKCl9LF91aUhhc2g6ZnVuY3Rpb24oZSl7dmFyIGk9ZXx8dGhpcztyZXR1cm57aGVscGVyOmkuaGVscGVyLHBsYWNlaG9sZGVyOmkucGxhY2Vob2xkZXJ8fHQoW10pLHBvc2l0aW9uOmkucG9zaXRpb24sb3JpZ2luYWxQb3NpdGlvbjppLm9yaWdpbmFsUG9zaXRpb24sb2Zmc2V0OmkucG9zaXRpb25BYnMsaXRlbTppLmN1cnJlbnRJdGVtLHNlbmRlcjplP2UuZWxlbWVudDpudWxsfX19KSx0LndpZGdldCgidWkubWVudSIse3ZlcnNpb246IjEuMTEuNCIsZGVmYXVsdEVsZW1lbnQ6Ijx1bD4iLGRlbGF5OjMwMCxvcHRpb25zOntpY29uczp7c3VibWVudToidWktaWNvbi1jYXJhdC0xLWUifSxpdGVtczoiPiAqIixtZW51czoidWwiLHBvc2l0aW9uOntteToibGVmdC0xIHRvcCIsYXQ6InJpZ2h0IHRvcCJ9LHJvbGU6Im1lbnUiLGJsdXI6bnVsbCxmb2N1czpudWxsLHNlbGVjdDpudWxsfSxfY3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5hY3RpdmVNZW51PXRoaXMuZWxlbWVudCx0aGlzLm1vdXNlSGFuZGxlZD0hMSx0aGlzLmVsZW1lbnQudW5pcXVlSWQoKS5hZGRDbGFzcygidWktbWVudSB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQiKS50b2dnbGVDbGFzcygidWktbWVudS1pY29ucyIsISF0aGlzLmVsZW1lbnQuZmluZCgiLnVpLWljb24iKS5sZW5ndGgpLmF0dHIoe3JvbGU6dGhpcy5vcHRpb25zLnJvbGUsdGFiSW5kZXg6MH0pLHRoaXMub3B0aW9ucy5kaXNhYmxlZCYmdGhpcy5lbGVtZW50LmFkZENsYXNzKCJ1aS1zdGF0ZS1kaXNhYmxlZCIpLmF0dHIoImFyaWEtZGlzYWJsZWQiLCJ0cnVlIiksdGhpcy5fb24oeyJtb3VzZWRvd24gLnVpLW1lbnUtaXRlbSI6ZnVuY3Rpb24odCl7dC5wcmV2ZW50RGVmYXVsdCgpfSwiY2xpY2sgLnVpLW1lbnUtaXRlbSI6ZnVuY3Rpb24oZSl7dmFyIGk9dChlLnRhcmdldCk7IXRoaXMubW91c2VIYW5kbGVkJiZpLm5vdCgiLnVpLXN0YXRlLWRpc2FibGVkIikubGVuZ3RoJiYodGhpcy5zZWxlY3QoZSksZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpfHwodGhpcy5tb3VzZUhhbmRsZWQ9ITApLGkuaGFzKCIudWktbWVudSIpLmxlbmd0aD90aGlzLmV4cGFuZChlKTohdGhpcy5lbGVtZW50LmlzKCI6Zm9jdXMiKSYmdCh0aGlzLmRvY3VtZW50WzBdLmFjdGl2ZUVsZW1lbnQpLmNsb3Nlc3QoIi51aS1tZW51IikubGVuZ3RoJiYodGhpcy5lbGVtZW50LnRyaWdnZXIoImZvY3VzIixbITBdKSx0aGlzLmFjdGl2ZSYmMT09PXRoaXMuYWN0aXZlLnBhcmVudHMoIi51aS1tZW51IikubGVuZ3RoJiZjbGVhclRpbWVvdXQodGhpcy50aW1lcikpKX0sIm1vdXNlZW50ZXIgLnVpLW1lbnUtaXRlbSI6ZnVuY3Rpb24oZSl7aWYoIXRoaXMucHJldmlvdXNGaWx0ZXIpe3ZhciBpPXQoZS5jdXJyZW50VGFyZ2V0KTtpLnNpYmxpbmdzKCIudWktc3RhdGUtYWN0aXZlIikucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpLHRoaXMuZm9jdXMoZSxpKX19LG1vdXNlbGVhdmU6ImNvbGxhcHNlQWxsIiwibW91c2VsZWF2ZSAudWktbWVudSI6ImNvbGxhcHNlQWxsIixmb2N1czpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuYWN0aXZlfHx0aGlzLmVsZW1lbnQuZmluZCh0aGlzLm9wdGlvbnMuaXRlbXMpLmVxKDApO2V8fHRoaXMuZm9jdXModCxpKX0sYmx1cjpmdW5jdGlvbihlKXt0aGlzLl9kZWxheShmdW5jdGlvbigpe3QuY29udGFpbnModGhpcy5lbGVtZW50WzBdLHRoaXMuZG9jdW1lbnRbMF0uYWN0aXZlRWxlbWVudCl8fHRoaXMuY29sbGFwc2VBbGwoZSl9KX0sa2V5ZG93bjoiX2tleWRvd24ifSksdGhpcy5yZWZyZXNoKCksdGhpcy5fb24odGhpcy5kb2N1bWVudCx7Y2xpY2s6ZnVuY3Rpb24odCl7dGhpcy5fY2xvc2VPbkRvY3VtZW50Q2xpY2sodCkmJnRoaXMuY29sbGFwc2VBbGwodCksdGhpcy5tb3VzZUhhbmRsZWQ9ITF9fSl9LF9kZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LnJlbW92ZUF0dHIoImFyaWEtYWN0aXZlZGVzY2VuZGFudCIpLmZpbmQoIi51aS1tZW51IikuYWRkQmFjaygpLnJlbW92ZUNsYXNzKCJ1aS1tZW51IHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1tZW51LWljb25zIHVpLWZyb250IikucmVtb3ZlQXR0cigicm9sZSIpLnJlbW92ZUF0dHIoInRhYkluZGV4IikucmVtb3ZlQXR0cigiYXJpYS1sYWJlbGxlZGJ5IikucmVtb3ZlQXR0cigiYXJpYS1leHBhbmRlZCIpLnJlbW92ZUF0dHIoImFyaWEtaGlkZGVuIikucmVtb3ZlQXR0cigiYXJpYS1kaXNhYmxlZCIpLnJlbW92ZVVuaXF1ZUlkKCkuc2hvdygpLHRoaXMuZWxlbWVudC5maW5kKCIudWktbWVudS1pdGVtIikucmVtb3ZlQ2xhc3MoInVpLW1lbnUtaXRlbSIpLnJlbW92ZUF0dHIoInJvbGUiKS5yZW1vdmVBdHRyKCJhcmlhLWRpc2FibGVkIikucmVtb3ZlVW5pcXVlSWQoKS5yZW1vdmVDbGFzcygidWktc3RhdGUtaG92ZXIiKS5yZW1vdmVBdHRyKCJ0YWJJbmRleCIpLnJlbW92ZUF0dHIoInJvbGUiKS5yZW1vdmVBdHRyKCJhcmlhLWhhc3BvcHVwIikuY2hpbGRyZW4oKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzKTsKZS5kYXRhKCJ1aS1tZW51LXN1Ym1lbnUtY2FyYXQiKSYmZS5yZW1vdmUoKX0pLHRoaXMuZWxlbWVudC5maW5kKCIudWktbWVudS1kaXZpZGVyIikucmVtb3ZlQ2xhc3MoInVpLW1lbnUtZGl2aWRlciB1aS13aWRnZXQtY29udGVudCIpfSxfa2V5ZG93bjpmdW5jdGlvbihlKXt2YXIgaSxzLG4sbyxhPSEwO3N3aXRjaChlLmtleUNvZGUpe2Nhc2UgdC51aS5rZXlDb2RlLlBBR0VfVVA6dGhpcy5wcmV2aW91c1BhZ2UoZSk7YnJlYWs7Y2FzZSB0LnVpLmtleUNvZGUuUEFHRV9ET1dOOnRoaXMubmV4dFBhZ2UoZSk7YnJlYWs7Y2FzZSB0LnVpLmtleUNvZGUuSE9NRTp0aGlzLl9tb3ZlKCJmaXJzdCIsImZpcnN0IixlKTticmVhaztjYXNlIHQudWkua2V5Q29kZS5FTkQ6dGhpcy5fbW92ZSgibGFzdCIsImxhc3QiLGUpO2JyZWFrO2Nhc2UgdC51aS5rZXlDb2RlLlVQOnRoaXMucHJldmlvdXMoZSk7YnJlYWs7Y2FzZSB0LnVpLmtleUNvZGUuRE9XTjp0aGlzLm5leHQoZSk7YnJlYWs7Y2FzZSB0LnVpLmtleUNvZGUuTEVGVDp0aGlzLmNvbGxhcHNlKGUpO2JyZWFrO2Nhc2UgdC51aS5rZXlDb2RlLlJJR0hUOnRoaXMuYWN0aXZlJiYhdGhpcy5hY3RpdmUuaXMoIi51aS1zdGF0ZS1kaXNhYmxlZCIpJiZ0aGlzLmV4cGFuZChlKTticmVhaztjYXNlIHQudWkua2V5Q29kZS5FTlRFUjpjYXNlIHQudWkua2V5Q29kZS5TUEFDRTp0aGlzLl9hY3RpdmF0ZShlKTticmVhaztjYXNlIHQudWkua2V5Q29kZS5FU0NBUEU6dGhpcy5jb2xsYXBzZShlKTticmVhaztkZWZhdWx0OmE9ITEscz10aGlzLnByZXZpb3VzRmlsdGVyfHwiIixuPVN0cmluZy5mcm9tQ2hhckNvZGUoZS5rZXlDb2RlKSxvPSExLGNsZWFyVGltZW91dCh0aGlzLmZpbHRlclRpbWVyKSxuPT09cz9vPSEwOm49cytuLGk9dGhpcy5fZmlsdGVyTWVudUl0ZW1zKG4pLGk9byYmLTEhPT1pLmluZGV4KHRoaXMuYWN0aXZlLm5leHQoKSk/dGhpcy5hY3RpdmUubmV4dEFsbCgiLnVpLW1lbnUtaXRlbSIpOmksaS5sZW5ndGh8fChuPVN0cmluZy5mcm9tQ2hhckNvZGUoZS5rZXlDb2RlKSxpPXRoaXMuX2ZpbHRlck1lbnVJdGVtcyhuKSksaS5sZW5ndGg/KHRoaXMuZm9jdXMoZSxpKSx0aGlzLnByZXZpb3VzRmlsdGVyPW4sdGhpcy5maWx0ZXJUaW1lcj10aGlzLl9kZWxheShmdW5jdGlvbigpe2RlbGV0ZSB0aGlzLnByZXZpb3VzRmlsdGVyfSwxZTMpKTpkZWxldGUgdGhpcy5wcmV2aW91c0ZpbHRlcn1hJiZlLnByZXZlbnREZWZhdWx0KCl9LF9hY3RpdmF0ZTpmdW5jdGlvbih0KXt0aGlzLmFjdGl2ZS5pcygiLnVpLXN0YXRlLWRpc2FibGVkIil8fCh0aGlzLmFjdGl2ZS5pcygiW2FyaWEtaGFzcG9wdXA9J3RydWUnXSIpP3RoaXMuZXhwYW5kKHQpOnRoaXMuc2VsZWN0KHQpKX0scmVmcmVzaDpmdW5jdGlvbigpe3ZhciBlLGkscz10aGlzLG49dGhpcy5vcHRpb25zLmljb25zLnN1Ym1lbnUsbz10aGlzLmVsZW1lbnQuZmluZCh0aGlzLm9wdGlvbnMubWVudXMpO3RoaXMuZWxlbWVudC50b2dnbGVDbGFzcygidWktbWVudS1pY29ucyIsISF0aGlzLmVsZW1lbnQuZmluZCgiLnVpLWljb24iKS5sZW5ndGgpLG8uZmlsdGVyKCI6bm90KC51aS1tZW51KSIpLmFkZENsYXNzKCJ1aS1tZW51IHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1mcm9udCIpLmhpZGUoKS5hdHRyKHtyb2xlOnRoaXMub3B0aW9ucy5yb2xlLCJhcmlhLWhpZGRlbiI6InRydWUiLCJhcmlhLWV4cGFuZGVkIjoiZmFsc2UifSkuZWFjaChmdW5jdGlvbigpe3ZhciBlPXQodGhpcyksaT1lLnBhcmVudCgpLHM9dCgiPHNwYW4+IikuYWRkQ2xhc3MoInVpLW1lbnUtaWNvbiB1aS1pY29uICIrbikuZGF0YSgidWktbWVudS1zdWJtZW51LWNhcmF0IiwhMCk7aS5hdHRyKCJhcmlhLWhhc3BvcHVwIiwidHJ1ZSIpLnByZXBlbmQocyksZS5hdHRyKCJhcmlhLWxhYmVsbGVkYnkiLGkuYXR0cigiaWQiKSl9KSxlPW8uYWRkKHRoaXMuZWxlbWVudCksaT1lLmZpbmQodGhpcy5vcHRpb25zLml0ZW1zKSxpLm5vdCgiLnVpLW1lbnUtaXRlbSIpLmVhY2goZnVuY3Rpb24oKXt2YXIgZT10KHRoaXMpO3MuX2lzRGl2aWRlcihlKSYmZS5hZGRDbGFzcygidWktd2lkZ2V0LWNvbnRlbnQgdWktbWVudS1kaXZpZGVyIil9KSxpLm5vdCgiLnVpLW1lbnUtaXRlbSwgLnVpLW1lbnUtZGl2aWRlciIpLmFkZENsYXNzKCJ1aS1tZW51LWl0ZW0iKS51bmlxdWVJZCgpLmF0dHIoe3RhYkluZGV4Oi0xLHJvbGU6dGhpcy5faXRlbVJvbGUoKX0pLGkuZmlsdGVyKCIudWktc3RhdGUtZGlzYWJsZWQiKS5hdHRyKCJhcmlhLWRpc2FibGVkIiwidHJ1ZSIpLHRoaXMuYWN0aXZlJiYhdC5jb250YWlucyh0aGlzLmVsZW1lbnRbMF0sdGhpcy5hY3RpdmVbMF0pJiZ0aGlzLmJsdXIoKX0sX2l0ZW1Sb2xlOmZ1bmN0aW9uKCl7cmV0dXJue21lbnU6Im1lbnVpdGVtIixsaXN0Ym94OiJvcHRpb24ifVt0aGlzLm9wdGlvbnMucm9sZV19LF9zZXRPcHRpb246ZnVuY3Rpb24odCxlKXsiaWNvbnMiPT09dCYmdGhpcy5lbGVtZW50LmZpbmQoIi51aS1tZW51LWljb24iKS5yZW1vdmVDbGFzcyh0aGlzLm9wdGlvbnMuaWNvbnMuc3VibWVudSkuYWRkQ2xhc3MoZS5zdWJtZW51KSwiZGlzYWJsZWQiPT09dCYmdGhpcy5lbGVtZW50LnRvZ2dsZUNsYXNzKCJ1aS1zdGF0ZS1kaXNhYmxlZCIsISFlKS5hdHRyKCJhcmlhLWRpc2FibGVkIixlKSx0aGlzLl9zdXBlcih0LGUpfSxmb2N1czpmdW5jdGlvbih0LGUpe3ZhciBpLHM7dGhpcy5ibHVyKHQsdCYmImZvY3VzIj09PXQudHlwZSksdGhpcy5fc2Nyb2xsSW50b1ZpZXcoZSksdGhpcy5hY3RpdmU9ZS5maXJzdCgpLHM9dGhpcy5hY3RpdmUuYWRkQ2xhc3MoInVpLXN0YXRlLWZvY3VzIikucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpLHRoaXMub3B0aW9ucy5yb2xlJiZ0aGlzLmVsZW1lbnQuYXR0cigiYXJpYS1hY3RpdmVkZXNjZW5kYW50IixzLmF0dHIoImlkIikpLHRoaXMuYWN0aXZlLnBhcmVudCgpLmNsb3Nlc3QoIi51aS1tZW51LWl0ZW0iKS5hZGRDbGFzcygidWktc3RhdGUtYWN0aXZlIiksdCYmImtleWRvd24iPT09dC50eXBlP3RoaXMuX2Nsb3NlKCk6dGhpcy50aW1lcj10aGlzLl9kZWxheShmdW5jdGlvbigpe3RoaXMuX2Nsb3NlKCl9LHRoaXMuZGVsYXkpLGk9ZS5jaGlsZHJlbigiLnVpLW1lbnUiKSxpLmxlbmd0aCYmdCYmL15tb3VzZS8udGVzdCh0LnR5cGUpJiZ0aGlzLl9zdGFydE9wZW5pbmcoaSksdGhpcy5hY3RpdmVNZW51PWUucGFyZW50KCksdGhpcy5fdHJpZ2dlcigiZm9jdXMiLHQse2l0ZW06ZX0pfSxfc2Nyb2xsSW50b1ZpZXc6ZnVuY3Rpb24oZSl7dmFyIGkscyxuLG8sYSxyO3RoaXMuX2hhc1Njcm9sbCgpJiYoaT1wYXJzZUZsb2F0KHQuY3NzKHRoaXMuYWN0aXZlTWVudVswXSwiYm9yZGVyVG9wV2lkdGgiKSl8fDAscz1wYXJzZUZsb2F0KHQuY3NzKHRoaXMuYWN0aXZlTWVudVswXSwicGFkZGluZ1RvcCIpKXx8MCxuPWUub2Zmc2V0KCkudG9wLXRoaXMuYWN0aXZlTWVudS5vZmZzZXQoKS50b3AtaS1zLG89dGhpcy5hY3RpdmVNZW51LnNjcm9sbFRvcCgpLGE9dGhpcy5hY3RpdmVNZW51LmhlaWdodCgpLHI9ZS5vdXRlckhlaWdodCgpLDA+bj90aGlzLmFjdGl2ZU1lbnUuc2Nyb2xsVG9wKG8rbik6bityPmEmJnRoaXMuYWN0aXZlTWVudS5zY3JvbGxUb3AobytuLWErcikpfSxibHVyOmZ1bmN0aW9uKHQsZSl7ZXx8Y2xlYXJUaW1lb3V0KHRoaXMudGltZXIpLHRoaXMuYWN0aXZlJiYodGhpcy5hY3RpdmUucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWZvY3VzIiksdGhpcy5hY3RpdmU9bnVsbCx0aGlzLl90cmlnZ2VyKCJibHVyIix0LHtpdGVtOnRoaXMuYWN0aXZlfSkpfSxfc3RhcnRPcGVuaW5nOmZ1bmN0aW9uKHQpe2NsZWFyVGltZW91dCh0aGlzLnRpbWVyKSwidHJ1ZSI9PT10LmF0dHIoImFyaWEtaGlkZGVuIikmJih0aGlzLnRpbWVyPXRoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7dGhpcy5fY2xvc2UoKSx0aGlzLl9vcGVuKHQpfSx0aGlzLmRlbGF5KSl9LF9vcGVuOmZ1bmN0aW9uKGUpe3ZhciBpPXQuZXh0ZW5kKHtvZjp0aGlzLmFjdGl2ZX0sdGhpcy5vcHRpb25zLnBvc2l0aW9uKTtjbGVhclRpbWVvdXQodGhpcy50aW1lciksdGhpcy5lbGVtZW50LmZpbmQoIi51aS1tZW51Iikubm90KGUucGFyZW50cygiLnVpLW1lbnUiKSkuaGlkZSgpLmF0dHIoImFyaWEtaGlkZGVuIiwidHJ1ZSIpLGUuc2hvdygpLnJlbW92ZUF0dHIoImFyaWEtaGlkZGVuIikuYXR0cigiYXJpYS1leHBhbmRlZCIsInRydWUiKS5wb3NpdGlvbihpKX0sY29sbGFwc2VBbGw6ZnVuY3Rpb24oZSxpKXtjbGVhclRpbWVvdXQodGhpcy50aW1lciksdGhpcy50aW1lcj10aGlzLl9kZWxheShmdW5jdGlvbigpe3ZhciBzPWk/dGhpcy5lbGVtZW50OnQoZSYmZS50YXJnZXQpLmNsb3Nlc3QodGhpcy5lbGVtZW50LmZpbmQoIi51aS1tZW51IikpO3MubGVuZ3RofHwocz10aGlzLmVsZW1lbnQpLHRoaXMuX2Nsb3NlKHMpLHRoaXMuYmx1cihlKSx0aGlzLmFjdGl2ZU1lbnU9c30sdGhpcy5kZWxheSl9LF9jbG9zZTpmdW5jdGlvbih0KXt0fHwodD10aGlzLmFjdGl2ZT90aGlzLmFjdGl2ZS5wYXJlbnQoKTp0aGlzLmVsZW1lbnQpLHQuZmluZCgiLnVpLW1lbnUiKS5oaWRlKCkuYXR0cigiYXJpYS1oaWRkZW4iLCJ0cnVlIikuYXR0cigiYXJpYS1leHBhbmRlZCIsImZhbHNlIikuZW5kKCkuZmluZCgiLnVpLXN0YXRlLWFjdGl2ZSIpLm5vdCgiLnVpLXN0YXRlLWZvY3VzIikucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpfSxfY2xvc2VPbkRvY3VtZW50Q2xpY2s6ZnVuY3Rpb24oZSl7cmV0dXJuIXQoZS50YXJnZXQpLmNsb3Nlc3QoIi51aS1tZW51IikubGVuZ3RofSxfaXNEaXZpZGVyOmZ1bmN0aW9uKHQpe3JldHVybiEvW15cLVx1MjAxNFx1MjAxM1xzXS8udGVzdCh0LnRleHQoKSl9LGNvbGxhcHNlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuYWN0aXZlJiZ0aGlzLmFjdGl2ZS5wYXJlbnQoKS5jbG9zZXN0KCIudWktbWVudS1pdGVtIix0aGlzLmVsZW1lbnQpO2UmJmUubGVuZ3RoJiYodGhpcy5fY2xvc2UoKSx0aGlzLmZvY3VzKHQsZSkpfSxleHBhbmQ6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5hY3RpdmUmJnRoaXMuYWN0aXZlLmNoaWxkcmVuKCIudWktbWVudSAiKS5maW5kKHRoaXMub3B0aW9ucy5pdGVtcykuZmlyc3QoKTtlJiZlLmxlbmd0aCYmKHRoaXMuX29wZW4oZS5wYXJlbnQoKSksdGhpcy5fZGVsYXkoZnVuY3Rpb24oKXt0aGlzLmZvY3VzKHQsZSl9KSl9LG5leHQ6ZnVuY3Rpb24odCl7dGhpcy5fbW92ZSgibmV4dCIsImZpcnN0Iix0KX0scHJldmlvdXM6ZnVuY3Rpb24odCl7dGhpcy5fbW92ZSgicHJldiIsImxhc3QiLHQpfSxpc0ZpcnN0SXRlbTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmFjdGl2ZSYmIXRoaXMuYWN0aXZlLnByZXZBbGwoIi51aS1tZW51LWl0ZW0iKS5sZW5ndGh9LGlzTGFzdEl0ZW06ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hY3RpdmUmJiF0aGlzLmFjdGl2ZS5uZXh0QWxsKCIudWktbWVudS1pdGVtIikubGVuZ3RofSxfbW92ZTpmdW5jdGlvbih0LGUsaSl7dmFyIHM7dGhpcy5hY3RpdmUmJihzPSJmaXJzdCI9PT10fHwibGFzdCI9PT10P3RoaXMuYWN0aXZlWyJmaXJzdCI9PT10PyJwcmV2QWxsIjoibmV4dEFsbCJdKCIudWktbWVudS1pdGVtIikuZXEoLTEpOnRoaXMuYWN0aXZlW3QrIkFsbCJdKCIudWktbWVudS1pdGVtIikuZXEoMCkpLHMmJnMubGVuZ3RoJiZ0aGlzLmFjdGl2ZXx8KHM9dGhpcy5hY3RpdmVNZW51LmZpbmQodGhpcy5vcHRpb25zLml0ZW1zKVtlXSgpKSx0aGlzLmZvY3VzKGkscyl9LG5leHRQYWdlOmZ1bmN0aW9uKGUpe3ZhciBpLHMsbjtyZXR1cm4gdGhpcy5hY3RpdmU/KHRoaXMuaXNMYXN0SXRlbSgpfHwodGhpcy5faGFzU2Nyb2xsKCk/KHM9dGhpcy5hY3RpdmUub2Zmc2V0KCkudG9wLG49dGhpcy5lbGVtZW50LmhlaWdodCgpLHRoaXMuYWN0aXZlLm5leHRBbGwoIi51aS1tZW51LWl0ZW0iKS5lYWNoKGZ1bmN0aW9uKCl7cmV0dXJuIGk9dCh0aGlzKSwwPmkub2Zmc2V0KCkudG9wLXMtbn0pLHRoaXMuZm9jdXMoZSxpKSk6dGhpcy5mb2N1cyhlLHRoaXMuYWN0aXZlTWVudS5maW5kKHRoaXMub3B0aW9ucy5pdGVtcylbdGhpcy5hY3RpdmU/Imxhc3QiOiJmaXJzdCJdKCkpKSx2b2lkIDApOih0aGlzLm5leHQoZSksdm9pZCAwKX0scHJldmlvdXNQYWdlOmZ1bmN0aW9uKGUpe3ZhciBpLHMsbjtyZXR1cm4gdGhpcy5hY3RpdmU/KHRoaXMuaXNGaXJzdEl0ZW0oKXx8KHRoaXMuX2hhc1Njcm9sbCgpPyhzPXRoaXMuYWN0aXZlLm9mZnNldCgpLnRvcCxuPXRoaXMuZWxlbWVudC5oZWlnaHQoKSx0aGlzLmFjdGl2ZS5wcmV2QWxsKCIudWktbWVudS1pdGVtIikuZWFjaChmdW5jdGlvbigpe3JldHVybiBpPXQodGhpcyksaS5vZmZzZXQoKS50b3AtcytuPjB9KSx0aGlzLmZvY3VzKGUsaSkpOnRoaXMuZm9jdXMoZSx0aGlzLmFjdGl2ZU1lbnUuZmluZCh0aGlzLm9wdGlvbnMuaXRlbXMpLmZpcnN0KCkpKSx2b2lkIDApOih0aGlzLm5leHQoZSksdm9pZCAwKX0sX2hhc1Njcm9sbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVsZW1lbnQub3V0ZXJIZWlnaHQoKTx0aGlzLmVsZW1lbnQucHJvcCgic2Nyb2xsSGVpZ2h0Iil9LHNlbGVjdDpmdW5jdGlvbihlKXt0aGlzLmFjdGl2ZT10aGlzLmFjdGl2ZXx8dChlLnRhcmdldCkuY2xvc2VzdCgiLnVpLW1lbnUtaXRlbSIpO3ZhciBpPXtpdGVtOnRoaXMuYWN0aXZlfTt0aGlzLmFjdGl2ZS5oYXMoIi51aS1tZW51IikubGVuZ3RofHx0aGlzLmNvbGxhcHNlQWxsKGUsITApLHRoaXMuX3RyaWdnZXIoInNlbGVjdCIsZSxpKX0sX2ZpbHRlck1lbnVJdGVtczpmdW5jdGlvbihlKXt2YXIgaT1lLnJlcGxhY2UoL1tcLVxbXF17fSgpKis/LixcXFxeJHwjXHNdL2csIlxcJCYiKSxzPVJlZ0V4cCgiXiIraSwiaSIpO3JldHVybiB0aGlzLmFjdGl2ZU1lbnUuZmluZCh0aGlzLm9wdGlvbnMuaXRlbXMpLmZpbHRlcigiLnVpLW1lbnUtaXRlbSIpLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiBzLnRlc3QodC50cmltKHQodGhpcykudGV4dCgpKSl9KX19KSx0LndpZGdldCgidWkuYXV0b2NvbXBsZXRlIix7dmVyc2lvbjoiMS4xMS40IixkZWZhdWx0RWxlbWVudDoiPGlucHV0PiIsb3B0aW9uczp7YXBwZW5kVG86bnVsbCxhdXRvRm9jdXM6ITEsZGVsYXk6MzAwLG1pbkxlbmd0aDoxLHBvc2l0aW9uOntteToibGVmdCB0b3AiLGF0OiJsZWZ0IGJvdHRvbSIsY29sbGlzaW9uOiJub25lIn0sc291cmNlOm51bGwsY2hhbmdlOm51bGwsY2xvc2U6bnVsbCxmb2N1czpudWxsLG9wZW46bnVsbCxyZXNwb25zZTpudWxsLHNlYXJjaDpudWxsLHNlbGVjdDpudWxsfSxyZXF1ZXN0SW5kZXg6MCxwZW5kaW5nOjAsX2NyZWF0ZTpmdW5jdGlvbigpe3ZhciBlLGkscyxuPXRoaXMuZWxlbWVudFswXS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLG89InRleHRhcmVhIj09PW4sYT0iaW5wdXQiPT09bjt0aGlzLmlzTXVsdGlMaW5lPW8/ITA6YT8hMTp0aGlzLmVsZW1lbnQucHJvcCgiaXNDb250ZW50RWRpdGFibGUiKSx0aGlzLnZhbHVlTWV0aG9kPXRoaXMuZWxlbWVudFtvfHxhPyJ2YWwiOiJ0ZXh0Il0sdGhpcy5pc05ld01lbnU9ITAsdGhpcy5lbGVtZW50LmFkZENsYXNzKCJ1aS1hdXRvY29tcGxldGUtaW5wdXQiKS5hdHRyKCJhdXRvY29tcGxldGUiLCJvZmYiKSx0aGlzLl9vbih0aGlzLmVsZW1lbnQse2tleWRvd246ZnVuY3Rpb24obil7aWYodGhpcy5lbGVtZW50LnByb3AoInJlYWRPbmx5IikpcmV0dXJuIGU9ITAscz0hMCxpPSEwLHZvaWQgMDtlPSExLHM9ITEsaT0hMTt2YXIgbz10LnVpLmtleUNvZGU7c3dpdGNoKG4ua2V5Q29kZSl7Y2FzZSBvLlBBR0VfVVA6ZT0hMCx0aGlzLl9tb3ZlKCJwcmV2aW91c1BhZ2UiLG4pO2JyZWFrO2Nhc2Ugby5QQUdFX0RPV046ZT0hMCx0aGlzLl9tb3ZlKCJuZXh0UGFnZSIsbik7YnJlYWs7Y2FzZSBvLlVQOmU9ITAsdGhpcy5fa2V5RXZlbnQoInByZXZpb3VzIixuKTticmVhaztjYXNlIG8uRE9XTjplPSEwLHRoaXMuX2tleUV2ZW50KCJuZXh0IixuKTticmVhaztjYXNlIG8uRU5URVI6dGhpcy5tZW51LmFjdGl2ZSYmKGU9ITAsbi5wcmV2ZW50RGVmYXVsdCgpLHRoaXMubWVudS5zZWxlY3QobikpO2JyZWFrO2Nhc2Ugby5UQUI6dGhpcy5tZW51LmFjdGl2ZSYmdGhpcy5tZW51LnNlbGVjdChuKTticmVhaztjYXNlIG8uRVNDQVBFOnRoaXMubWVudS5lbGVtZW50LmlzKCI6dmlzaWJsZSIpJiYodGhpcy5pc011bHRpTGluZXx8dGhpcy5fdmFsdWUodGhpcy50ZXJtKSx0aGlzLmNsb3NlKG4pLG4ucHJldmVudERlZmF1bHQoKSk7YnJlYWs7ZGVmYXVsdDppPSEwLHRoaXMuX3NlYXJjaFRpbWVvdXQobil9fSxrZXlwcmVzczpmdW5jdGlvbihzKXtpZihlKXJldHVybiBlPSExLCghdGhpcy5pc011bHRpTGluZXx8dGhpcy5tZW51LmVsZW1lbnQuaXMoIjp2aXNpYmxlIikpJiZzLnByZXZlbnREZWZhdWx0KCksdm9pZCAwO2lmKCFpKXt2YXIgbj10LnVpLmtleUNvZGU7c3dpdGNoKHMua2V5Q29kZSl7Y2FzZSBuLlBBR0VfVVA6dGhpcy5fbW92ZSgicHJldmlvdXNQYWdlIixzKTticmVhaztjYXNlIG4uUEFHRV9ET1dOOnRoaXMuX21vdmUoIm5leHRQYWdlIixzKTticmVhaztjYXNlIG4uVVA6dGhpcy5fa2V5RXZlbnQoInByZXZpb3VzIixzKTticmVhaztjYXNlIG4uRE9XTjp0aGlzLl9rZXlFdmVudCgibmV4dCIscyl9fX0saW5wdXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHM/KHM9ITEsdC5wcmV2ZW50RGVmYXVsdCgpLHZvaWQgMCk6KHRoaXMuX3NlYXJjaFRpbWVvdXQodCksdm9pZCAwKX0sZm9jdXM6ZnVuY3Rpb24oKXt0aGlzLnNlbGVjdGVkSXRlbT1udWxsLHRoaXMucHJldmlvdXM9dGhpcy5fdmFsdWUoKX0sYmx1cjpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5jYW5jZWxCbHVyPyhkZWxldGUgdGhpcy5jYW5jZWxCbHVyLHZvaWQgMCk6KGNsZWFyVGltZW91dCh0aGlzLnNlYXJjaGluZyksdGhpcy5jbG9zZSh0KSx0aGlzLl9jaGFuZ2UodCksdm9pZCAwKX19KSx0aGlzLl9pbml0U291cmNlKCksdGhpcy5tZW51PXQoIjx1bD4iKS5hZGRDbGFzcygidWktYXV0b2NvbXBsZXRlIHVpLWZyb250IikuYXBwZW5kVG8odGhpcy5fYXBwZW5kVG8oKSkubWVudSh7cm9sZTpudWxsfSkuaGlkZSgpLm1lbnUoImluc3RhbmNlIiksdGhpcy5fb24odGhpcy5tZW51LmVsZW1lbnQse21vdXNlZG93bjpmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCksdGhpcy5jYW5jZWxCbHVyPSEwLHRoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXMuY2FuY2VsQmx1cn0pO3ZhciBpPXRoaXMubWVudS5lbGVtZW50WzBdO3QoZS50YXJnZXQpLmNsb3Nlc3QoIi51aS1tZW51LWl0ZW0iKS5sZW5ndGh8fHRoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLmRvY3VtZW50Lm9uZSgibW91c2Vkb3duIixmdW5jdGlvbihzKXtzLnRhcmdldD09PWUuZWxlbWVudFswXXx8cy50YXJnZXQ9PT1pfHx0LmNvbnRhaW5zKGkscy50YXJnZXQpfHxlLmNsb3NlKCl9KX0pfSxtZW51Zm9jdXM6ZnVuY3Rpb24oZSxpKXt2YXIgcyxuO3JldHVybiB0aGlzLmlzTmV3TWVudSYmKHRoaXMuaXNOZXdNZW51PSExLGUub3JpZ2luYWxFdmVudCYmL15tb3VzZS8udGVzdChlLm9yaWdpbmFsRXZlbnQudHlwZSkpPyh0aGlzLm1lbnUuYmx1cigpLHRoaXMuZG9jdW1lbnQub25lKCJtb3VzZW1vdmUiLGZ1bmN0aW9uKCl7dChlLnRhcmdldCkudHJpZ2dlcihlLm9yaWdpbmFsRXZlbnQpfSksdm9pZCAwKToobj1pLml0ZW0uZGF0YSgidWktYXV0b2NvbXBsZXRlLWl0ZW0iKSwhMSE9PXRoaXMuX3RyaWdnZXIoImZvY3VzIixlLHtpdGVtOm59KSYmZS5vcmlnaW5hbEV2ZW50JiYvXmtleS8udGVzdChlLm9yaWdpbmFsRXZlbnQudHlwZSkmJnRoaXMuX3ZhbHVlKG4udmFsdWUpLHM9aS5pdGVtLmF0dHIoImFyaWEtbGFiZWwiKXx8bi52YWx1ZSxzJiZ0LnRyaW0ocykubGVuZ3RoJiYodGhpcy5saXZlUmVnaW9uLmNoaWxkcmVuKCkuaGlkZSgpLHQoIjxkaXY+IikudGV4dChzKS5hcHBlbmRUbyh0aGlzLmxpdmVSZWdpb24pKSx2b2lkIDApfSxtZW51c2VsZWN0OmZ1bmN0aW9uKHQsZSl7dmFyIGk9ZS5pdGVtLmRhdGEoInVpLWF1dG9jb21wbGV0ZS1pdGVtIikscz10aGlzLnByZXZpb3VzO3RoaXMuZWxlbWVudFswXSE9PXRoaXMuZG9jdW1lbnRbMF0uYWN0aXZlRWxlbWVudCYmKHRoaXMuZWxlbWVudC5mb2N1cygpLHRoaXMucHJldmlvdXM9cyx0aGlzLl9kZWxheShmdW5jdGlvbigpe3RoaXMucHJldmlvdXM9cyx0aGlzLnNlbGVjdGVkSXRlbT1pfSkpLCExIT09dGhpcy5fdHJpZ2dlcigic2VsZWN0Iix0LHtpdGVtOml9KSYmdGhpcy5fdmFsdWUoaS52YWx1ZSksdGhpcy50ZXJtPXRoaXMuX3ZhbHVlKCksdGhpcy5jbG9zZSh0KSx0aGlzLnNlbGVjdGVkSXRlbT1pfX0pLHRoaXMubGl2ZVJlZ2lvbj10KCI8c3Bhbj4iLHtyb2xlOiJzdGF0dXMiLCJhcmlhLWxpdmUiOiJhc3NlcnRpdmUiLCJhcmlhLXJlbGV2YW50IjoiYWRkaXRpb25zIn0pLmFkZENsYXNzKCJ1aS1oZWxwZXItaGlkZGVuLWFjY2Vzc2libGUiKS5hcHBlbmRUbyh0aGlzLmRvY3VtZW50WzBdLmJvZHkpLHRoaXMuX29uKHRoaXMud2luZG93LHtiZWZvcmV1bmxvYWQ6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQucmVtb3ZlQXR0cigiYXV0b2NvbXBsZXRlIil9fSl9LF9kZXN0cm95OmZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KHRoaXMuc2VhcmNoaW5nKSx0aGlzLmVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLWF1dG9jb21wbGV0ZS1pbnB1dCIpLnJlbW92ZUF0dHIoImF1dG9jb21wbGV0ZSIpLHRoaXMubWVudS5lbGVtZW50LnJlbW92ZSgpLHRoaXMubGl2ZVJlZ2lvbi5yZW1vdmUoKX0sX3NldE9wdGlvbjpmdW5jdGlvbih0LGUpe3RoaXMuX3N1cGVyKHQsZSksInNvdXJjZSI9PT10JiZ0aGlzLl9pbml0U291cmNlKCksImFwcGVuZFRvIj09PXQmJnRoaXMubWVudS5lbGVtZW50LmFwcGVuZFRvKHRoaXMuX2FwcGVuZFRvKCkpLCJkaXNhYmxlZCI9PT10JiZlJiZ0aGlzLnhociYmdGhpcy54aHIuYWJvcnQoKX0sX2FwcGVuZFRvOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zLmFwcGVuZFRvO3JldHVybiBlJiYoZT1lLmpxdWVyeXx8ZS5ub2RlVHlwZT90KGUpOnRoaXMuZG9jdW1lbnQuZmluZChlKS5lcSgwKSksZSYmZVswXXx8KGU9dGhpcy5lbGVtZW50LmNsb3Nlc3QoIi51aS1mcm9udCIpKSxlLmxlbmd0aHx8KGU9dGhpcy5kb2N1bWVudFswXS5ib2R5KSxlfSxfaW5pdFNvdXJjZTpmdW5jdGlvbigpe3ZhciBlLGkscz10aGlzO3QuaXNBcnJheSh0aGlzLm9wdGlvbnMuc291cmNlKT8oZT10aGlzLm9wdGlvbnMuc291cmNlLHRoaXMuc291cmNlPWZ1bmN0aW9uKGkscyl7cyh0LnVpLmF1dG9jb21wbGV0ZS5maWx0ZXIoZSxpLnRlcm0pKX0pOiJzdHJpbmciPT10eXBlb2YgdGhpcy5vcHRpb25zLnNvdXJjZT8oaT10aGlzLm9wdGlvbnMuc291cmNlLHRoaXMuc291cmNlPWZ1bmN0aW9uKGUsbil7cy54aHImJnMueGhyLmFib3J0KCkscy54aHI9dC5hamF4KHt1cmw6aSxkYXRhOmUsZGF0YVR5cGU6Impzb24iLHN1Y2Nlc3M6ZnVuY3Rpb24odCl7bih0KX0sZXJyb3I6ZnVuY3Rpb24oKXtuKFtdKX19KX0pOnRoaXMuc291cmNlPXRoaXMub3B0aW9ucy5zb3VyY2V9LF9zZWFyY2hUaW1lb3V0OmZ1bmN0aW9uKHQpe2NsZWFyVGltZW91dCh0aGlzLnNlYXJjaGluZyksdGhpcy5zZWFyY2hpbmc9dGhpcy5fZGVsYXkoZnVuY3Rpb24oKXt2YXIgZT10aGlzLnRlcm09PT10aGlzLl92YWx1ZSgpLGk9dGhpcy5tZW51LmVsZW1lbnQuaXMoIjp2aXNpYmxlIikscz10LmFsdEtleXx8dC5jdHJsS2V5fHx0Lm1ldGFLZXl8fHQuc2hpZnRLZXk7KCFlfHxlJiYhaSYmIXMpJiYodGhpcy5zZWxlY3RlZEl0ZW09bnVsbCx0aGlzLnNlYXJjaChudWxsLHQpKX0sdGhpcy5vcHRpb25zLmRlbGF5KX0sc2VhcmNoOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9bnVsbCE9dD90OnRoaXMuX3ZhbHVlKCksdGhpcy50ZXJtPXRoaXMuX3ZhbHVlKCksdC5sZW5ndGg8dGhpcy5vcHRpb25zLm1pbkxlbmd0aD90aGlzLmNsb3NlKGUpOnRoaXMuX3RyaWdnZXIoInNlYXJjaCIsZSkhPT0hMT90aGlzLl9zZWFyY2godCk6dm9pZCAwfSxfc2VhcmNoOmZ1bmN0aW9uKHQpe3RoaXMucGVuZGluZysrLHRoaXMuZWxlbWVudC5hZGRDbGFzcygidWktYXV0b2NvbXBsZXRlLWxvYWRpbmciKSx0aGlzLmNhbmNlbFNlYXJjaD0hMSx0aGlzLnNvdXJjZSh7dGVybTp0fSx0aGlzLl9yZXNwb25zZSgpKX0sX3Jlc3BvbnNlOmZ1bmN0aW9uKCl7dmFyIGU9Kyt0aGlzLnJlcXVlc3RJbmRleDtyZXR1cm4gdC5wcm94eShmdW5jdGlvbih0KXtlPT09dGhpcy5yZXF1ZXN0SW5kZXgmJnRoaXMuX19yZXNwb25zZSh0KSx0aGlzLnBlbmRpbmctLSx0aGlzLnBlbmRpbmd8fHRoaXMuZWxlbWVudC5yZW1vdmVDbGFzcygidWktYXV0b2NvbXBsZXRlLWxvYWRpbmciKX0sdGhpcyl9LF9fcmVzcG9uc2U6ZnVuY3Rpb24odCl7dCYmKHQ9dGhpcy5fbm9ybWFsaXplKHQpKSx0aGlzLl90cmlnZ2VyKCJyZXNwb25zZSIsbnVsbCx7Y29udGVudDp0fSksIXRoaXMub3B0aW9ucy5kaXNhYmxlZCYmdCYmdC5sZW5ndGgmJiF0aGlzLmNhbmNlbFNlYXJjaD8odGhpcy5fc3VnZ2VzdCh0KSx0aGlzLl90cmlnZ2VyKCJvcGVuIikpOnRoaXMuX2Nsb3NlKCl9LGNsb3NlOmZ1bmN0aW9uKHQpe3RoaXMuY2FuY2VsU2VhcmNoPSEwLHRoaXMuX2Nsb3NlKHQpfSxfY2xvc2U6ZnVuY3Rpb24odCl7dGhpcy5tZW51LmVsZW1lbnQuaXMoIjp2aXNpYmxlIikmJih0aGlzLm1lbnUuZWxlbWVudC5oaWRlKCksdGhpcy5tZW51LmJsdXIoKSx0aGlzLmlzTmV3TWVudT0hMCx0aGlzLl90cmlnZ2VyKCJjbG9zZSIsdCkpfSxfY2hhbmdlOmZ1bmN0aW9uKHQpe3RoaXMucHJldmlvdXMhPT10aGlzLl92YWx1ZSgpJiZ0aGlzLl90cmlnZ2VyKCJjaGFuZ2UiLHQse2l0ZW06dGhpcy5zZWxlY3RlZEl0ZW19KX0sX25vcm1hbGl6ZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5sZW5ndGgmJmVbMF0ubGFiZWwmJmVbMF0udmFsdWU/ZTp0Lm1hcChlLGZ1bmN0aW9uKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZT97bGFiZWw6ZSx2YWx1ZTplfTp0LmV4dGVuZCh7fSxlLHtsYWJlbDplLmxhYmVsfHxlLnZhbHVlLHZhbHVlOmUudmFsdWV8fGUubGFiZWx9KX0pfSxfc3VnZ2VzdDpmdW5jdGlvbihlKXt2YXIgaT10aGlzLm1lbnUuZWxlbWVudC5lbXB0eSgpO3RoaXMuX3JlbmRlck1lbnUoaSxlKSx0aGlzLmlzTmV3TWVudT0hMCx0aGlzLm1lbnUucmVmcmVzaCgpLGkuc2hvdygpLHRoaXMuX3Jlc2l6ZU1lbnUoKSxpLnBvc2l0aW9uKHQuZXh0ZW5kKHtvZjp0aGlzLmVsZW1lbnR9LHRoaXMub3B0aW9ucy5wb3NpdGlvbikpLHRoaXMub3B0aW9ucy5hdXRvRm9jdXMmJnRoaXMubWVudS5uZXh0KCl9LF9yZXNpemVNZW51OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5tZW51LmVsZW1lbnQ7dC5vdXRlcldpZHRoKE1hdGgubWF4KHQud2lkdGgoIiIpLm91dGVyV2lkdGgoKSsxLHRoaXMuZWxlbWVudC5vdXRlcldpZHRoKCkpKX0sX3JlbmRlck1lbnU6ZnVuY3Rpb24oZSxpKXt2YXIgcz10aGlzO3QuZWFjaChpLGZ1bmN0aW9uKHQsaSl7cy5fcmVuZGVySXRlbURhdGEoZSxpKX0pfSxfcmVuZGVySXRlbURhdGE6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fcmVuZGVySXRlbSh0LGUpLmRhdGEoInVpLWF1dG9jb21wbGV0ZS1pdGVtIixlKX0sX3JlbmRlckl0ZW06ZnVuY3Rpb24oZSxpKXtyZXR1cm4gdCgiPGxpPiIpLnRleHQoaS5sYWJlbCkuYXBwZW5kVG8oZSl9LF9tb3ZlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMubWVudS5lbGVtZW50LmlzKCI6dmlzaWJsZSIpP3RoaXMubWVudS5pc0ZpcnN0SXRlbSgpJiYvXnByZXZpb3VzLy50ZXN0KHQpfHx0aGlzLm1lbnUuaXNMYXN0SXRlbSgpJiYvXm5leHQvLnRlc3QodCk/KHRoaXMuaXNNdWx0aUxpbmV8fHRoaXMuX3ZhbHVlKHRoaXMudGVybSksdGhpcy5tZW51LmJsdXIoKSx2b2lkIDApOih0aGlzLm1lbnVbdF0oZSksdm9pZCAwKToodGhpcy5zZWFyY2gobnVsbCxlKSx2b2lkIDApfSx3aWRnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tZW51LmVsZW1lbnR9LF92YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlTWV0aG9kLmFwcGx5KHRoaXMuZWxlbWVudCxhcmd1bWVudHMpfSxfa2V5RXZlbnQ6ZnVuY3Rpb24odCxlKXsoIXRoaXMuaXNNdWx0aUxpbmV8fHRoaXMubWVudS5lbGVtZW50LmlzKCI6dmlzaWJsZSIpKSYmKHRoaXMuX21vdmUodCxlKSxlLnByZXZlbnREZWZhdWx0KCkpfX0pLHQuZXh0ZW5kKHQudWkuYXV0b2NvbXBsZXRlLHtlc2NhcGVSZWdleDpmdW5jdGlvbih0KXtyZXR1cm4gdC5yZXBsYWNlKC9bXC1cW1xde30oKSorPy4sXFxcXiR8I1xzXS9nLCJcXCQmIil9LGZpbHRlcjpmdW5jdGlvbihlLGkpe3ZhciBzPVJlZ0V4cCh0LnVpLmF1dG9jb21wbGV0ZS5lc2NhcGVSZWdleChpKSwiaSIpO3JldHVybiB0LmdyZXAoZSxmdW5jdGlvbih0KXtyZXR1cm4gcy50ZXN0KHQubGFiZWx8fHQudmFsdWV8fHQpfSl9fSksdC53aWRnZXQoInVpLmF1dG9jb21wbGV0ZSIsdC51aS5hdXRvY29tcGxldGUse29wdGlvbnM6e21lc3NhZ2VzOntub1Jlc3VsdHM6Ik5vIHNlYXJjaCByZXN1bHRzLiIscmVzdWx0czpmdW5jdGlvbih0KXtyZXR1cm4gdCsodD4xPyIgcmVzdWx0cyBhcmUiOiIgcmVzdWx0IGlzIikrIiBhdmFpbGFibGUsIHVzZSB1cCBhbmQgZG93biBhcnJvdyBrZXlzIHRvIG5hdmlnYXRlLiJ9fX0sX19yZXNwb25zZTpmdW5jdGlvbihlKXt2YXIgaTt0aGlzLl9zdXBlckFwcGx5KGFyZ3VtZW50cyksdGhpcy5vcHRpb25zLmRpc2FibGVkfHx0aGlzLmNhbmNlbFNlYXJjaHx8KGk9ZSYmZS5sZW5ndGg/dGhpcy5vcHRpb25zLm1lc3NhZ2VzLnJlc3VsdHMoZS5sZW5ndGgpOnRoaXMub3B0aW9ucy5tZXNzYWdlcy5ub1Jlc3VsdHMsdGhpcy5saXZlUmVnaW9uLmNoaWxkcmVuKCkuaGlkZSgpLHQoIjxkaXY+IikudGV4dChpKS5hcHBlbmRUbyh0aGlzLmxpdmVSZWdpb24pKX19KSx0LnVpLmF1dG9jb21wbGV0ZSx0LndpZGdldCgidWkudG9vbHRpcCIse3ZlcnNpb246IjEuMTEuNCIsb3B0aW9uczp7Y29udGVudDpmdW5jdGlvbigpe3ZhciBlPXQodGhpcykuYXR0cigidGl0bGUiKXx8IiI7cmV0dXJuIHQoIjxhPiIpLnRleHQoZSkuaHRtbCgpfSxoaWRlOiEwLGl0ZW1zOiJbdGl0bGVdOm5vdChbZGlzYWJsZWRdKSIscG9zaXRpb246e215OiJsZWZ0IHRvcCsxNSIsYXQ6ImxlZnQgYm90dG9tIixjb2xsaXNpb246ImZsaXBmaXQgZmxpcCJ9LHNob3c6ITAsdG9vbHRpcENsYXNzOm51bGwsdHJhY2s6ITEsY2xvc2U6bnVsbCxvcGVuOm51bGx9LF9hZGREZXNjcmliZWRCeTpmdW5jdGlvbihlLGkpe3ZhciBzPShlLmF0dHIoImFyaWEtZGVzY3JpYmVkYnkiKXx8IiIpLnNwbGl0KC9ccysvKTtzLnB1c2goaSksZS5kYXRhKCJ1aS10b29sdGlwLWlkIixpKS5hdHRyKCJhcmlhLWRlc2NyaWJlZGJ5Iix0LnRyaW0ocy5qb2luKCIgIikpKX0sX3JlbW92ZURlc2NyaWJlZEJ5OmZ1bmN0aW9uKGUpe3ZhciBpPWUuZGF0YSgidWktdG9vbHRpcC1pZCIpLHM9KGUuYXR0cigiYXJpYS1kZXNjcmliZWRieSIpfHwiIikuc3BsaXQoL1xzKy8pLG49dC5pbkFycmF5KGkscyk7LTEhPT1uJiZzLnNwbGljZShuLDEpLGUucmVtb3ZlRGF0YSgidWktdG9vbHRpcC1pZCIpLHM9dC50cmltKHMuam9pbigiICIpKSxzP2UuYXR0cigiYXJpYS1kZXNjcmliZWRieSIscyk6ZS5yZW1vdmVBdHRyKCJhcmlhLWRlc2NyaWJlZGJ5Iil9LF9jcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLl9vbih7bW91c2VvdmVyOiJvcGVuIixmb2N1c2luOiJvcGVuIn0pLHRoaXMudG9vbHRpcHM9e30sdGhpcy5wYXJlbnRzPXt9LHRoaXMub3B0aW9ucy5kaXNhYmxlZCYmdGhpcy5fZGlzYWJsZSgpLHRoaXMubGl2ZVJlZ2lvbj10KCI8ZGl2PiIpLmF0dHIoe3JvbGU6ImxvZyIsImFyaWEtbGl2ZSI6ImFzc2VydGl2ZSIsImFyaWEtcmVsZXZhbnQiOiJhZGRpdGlvbnMifSkuYWRkQ2xhc3MoInVpLWhlbHBlci1oaWRkZW4tYWNjZXNzaWJsZSIpLmFwcGVuZFRvKHRoaXMuZG9jdW1lbnRbMF0uYm9keSl9LF9zZXRPcHRpb246ZnVuY3Rpb24oZSxpKXt2YXIgcz10aGlzO3JldHVybiJkaXNhYmxlZCI9PT1lPyh0aGlzW2k/Il9kaXNhYmxlIjoiX2VuYWJsZSJdKCksdGhpcy5vcHRpb25zW2VdPWksdm9pZCAwKToodGhpcy5fc3VwZXIoZSxpKSwiY29udGVudCI9PT1lJiZ0LmVhY2godGhpcy50b29sdGlwcyxmdW5jdGlvbih0LGUpe3MuX3VwZGF0ZUNvbnRlbnQoZS5lbGVtZW50KX0pLHZvaWQgMCl9LF9kaXNhYmxlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0LmVhY2godGhpcy50b29sdGlwcyxmdW5jdGlvbihpLHMpe3ZhciBuPXQuRXZlbnQoImJsdXIiKTtuLnRhcmdldD1uLmN1cnJlbnRUYXJnZXQ9cy5lbGVtZW50WzBdLGUuY2xvc2UobiwhMCl9KSx0aGlzLmVsZW1lbnQuZmluZCh0aGlzLm9wdGlvbnMuaXRlbXMpLmFkZEJhY2soKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzKTtlLmlzKCJbdGl0bGVdIikmJmUuZGF0YSgidWktdG9vbHRpcC10aXRsZSIsZS5hdHRyKCJ0aXRsZSIpKS5yZW1vdmVBdHRyKCJ0aXRsZSIpfSl9LF9lbmFibGU6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQuZmluZCh0aGlzLm9wdGlvbnMuaXRlbXMpLmFkZEJhY2soKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzKTtlLmRhdGEoInVpLXRvb2x0aXAtdGl0bGUiKSYmZS5hdHRyKCJ0aXRsZSIsZS5kYXRhKCJ1aS10b29sdGlwLXRpdGxlIikpfSl9LG9wZW46ZnVuY3Rpb24oZSl7dmFyIGk9dGhpcyxzPXQoZT9lLnRhcmdldDp0aGlzLmVsZW1lbnQpLmNsb3Nlc3QodGhpcy5vcHRpb25zLml0ZW1zKTtzLmxlbmd0aCYmIXMuZGF0YSgidWktdG9vbHRpcC1pZCIpJiYocy5hdHRyKCJ0aXRsZSIpJiZzLmRhdGEoInVpLXRvb2x0aXAtdGl0bGUiLHMuYXR0cigidGl0bGUiKSkscy5kYXRhKCJ1aS10b29sdGlwLW9wZW4iLCEwKSxlJiYibW91c2VvdmVyIj09PWUudHlwZSYmcy5wYXJlbnRzKCkuZWFjaChmdW5jdGlvbigpe3ZhciBlLHM9dCh0aGlzKTtzLmRhdGEoInVpLXRvb2x0aXAtb3BlbiIpJiYoZT10LkV2ZW50KCJibHVyIiksZS50YXJnZXQ9ZS5jdXJyZW50VGFyZ2V0PXRoaXMsaS5jbG9zZShlLCEwKSkscy5hdHRyKCJ0aXRsZSIpJiYocy51bmlxdWVJZCgpLGkucGFyZW50c1t0aGlzLmlkXT17ZWxlbWVudDp0aGlzLHRpdGxlOnMuYXR0cigidGl0bGUiKX0scy5hdHRyKCJ0aXRsZSIsIiIpKX0pLHRoaXMuX3JlZ2lzdGVyQ2xvc2VIYW5kbGVycyhlLHMpLHRoaXMuX3VwZGF0ZUNvbnRlbnQocyxlKSl9LF91cGRhdGVDb250ZW50OmZ1bmN0aW9uKHQsZSl7dmFyIGkscz10aGlzLm9wdGlvbnMuY29udGVudCxuPXRoaXMsbz1lP2UudHlwZTpudWxsO3JldHVybiJzdHJpbmciPT10eXBlb2Ygcz90aGlzLl9vcGVuKGUsdCxzKTooaT1zLmNhbGwodFswXSxmdW5jdGlvbihpKXtuLl9kZWxheShmdW5jdGlvbigpe3QuZGF0YSgidWktdG9vbHRpcC1vcGVuIikmJihlJiYoZS50eXBlPW8pLHRoaXMuX29wZW4oZSx0LGkpKX0pfSksaSYmdGhpcy5fb3BlbihlLHQsaSksdm9pZCAwKX0sX29wZW46ZnVuY3Rpb24oZSxpLHMpe2Z1bmN0aW9uIG4odCl7aC5vZj10LGEuaXMoIjpoaWRkZW4iKXx8YS5wb3NpdGlvbihoKX12YXIgbyxhLHIsbCxoPXQuZXh0ZW5kKHt9LHRoaXMub3B0aW9ucy5wb3NpdGlvbik7aWYocyl7aWYobz10aGlzLl9maW5kKGkpKXJldHVybiBvLnRvb2x0aXAuZmluZCgiLnVpLXRvb2x0aXAtY29udGVudCIpLmh0bWwocyksdm9pZCAwO2kuaXMoIlt0aXRsZV0iKSYmKGUmJiJtb3VzZW92ZXIiPT09ZS50eXBlP2kuYXR0cigidGl0bGUiLCIiKTppLnJlbW92ZUF0dHIoInRpdGxlIikpLG89dGhpcy5fdG9vbHRpcChpKSxhPW8udG9vbHRpcCx0aGlzLl9hZGREZXNjcmliZWRCeShpLGEuYXR0cigiaWQiKSksYS5maW5kKCIudWktdG9vbHRpcC1jb250ZW50IikuaHRtbChzKSx0aGlzLmxpdmVSZWdpb24uY2hpbGRyZW4oKS5oaWRlKCkscy5jbG9uZT8obD1zLmNsb25lKCksbC5yZW1vdmVBdHRyKCJpZCIpLmZpbmQoIltpZF0iKS5yZW1vdmVBdHRyKCJpZCIpKTpsPXMsdCgiPGRpdj4iKS5odG1sKGwpLmFwcGVuZFRvKHRoaXMubGl2ZVJlZ2lvbiksdGhpcy5vcHRpb25zLnRyYWNrJiZlJiYvXm1vdXNlLy50ZXN0KGUudHlwZSk/KHRoaXMuX29uKHRoaXMuZG9jdW1lbnQse21vdXNlbW92ZTpufSksbihlKSk6YS5wb3NpdGlvbih0LmV4dGVuZCh7b2Y6aX0sdGhpcy5vcHRpb25zLnBvc2l0aW9uKSksYS5oaWRlKCksdGhpcy5fc2hvdyhhLHRoaXMub3B0aW9ucy5zaG93KSx0aGlzLm9wdGlvbnMuc2hvdyYmdGhpcy5vcHRpb25zLnNob3cuZGVsYXkmJihyPXRoaXMuZGVsYXllZFNob3c9c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXthLmlzKCI6dmlzaWJsZSIpJiYobihoLm9mKSxjbGVhckludGVydmFsKHIpKX0sdC5meC5pbnRlcnZhbCkpLHRoaXMuX3RyaWdnZXIoIm9wZW4iLGUse3Rvb2x0aXA6YX0pfX0sX3JlZ2lzdGVyQ2xvc2VIYW5kbGVyczpmdW5jdGlvbihlLGkpe3ZhciBzPXtrZXl1cDpmdW5jdGlvbihlKXtpZihlLmtleUNvZGU9PT10LnVpLmtleUNvZGUuRVNDQVBFKXt2YXIgcz10LkV2ZW50KGUpO3MuY3VycmVudFRhcmdldD1pWzBdLHRoaXMuY2xvc2UocywhMCl9fX07aVswXSE9PXRoaXMuZWxlbWVudFswXSYmKHMucmVtb3ZlPWZ1bmN0aW9uKCl7dGhpcy5fcmVtb3ZlVG9vbHRpcCh0aGlzLl9maW5kKGkpLnRvb2x0aXApfSksZSYmIm1vdXNlb3ZlciIhPT1lLnR5cGV8fChzLm1vdXNlbGVhdmU9ImNsb3NlIiksZSYmImZvY3VzaW4iIT09ZS50eXBlfHwocy5mb2N1c291dD0iY2xvc2UiKSx0aGlzLl9vbighMCxpLHMpfSxjbG9zZTpmdW5jdGlvbihlKXt2YXIgaSxzPXRoaXMsbj10KGU/ZS5jdXJyZW50VGFyZ2V0OnRoaXMuZWxlbWVudCksbz10aGlzLl9maW5kKG4pO3JldHVybiBvPyhpPW8udG9vbHRpcCxvLmNsb3Npbmd8fChjbGVhckludGVydmFsKHRoaXMuZGVsYXllZFNob3cpLG4uZGF0YSgidWktdG9vbHRpcC10aXRsZSIpJiYhbi5hdHRyKCJ0aXRsZSIpJiZuLmF0dHIoInRpdGxlIixuLmRhdGEoInVpLXRvb2x0aXAtdGl0bGUiKSksdGhpcy5fcmVtb3ZlRGVzY3JpYmVkQnkobiksby5oaWRpbmc9ITAsaS5zdG9wKCEwKSx0aGlzLl9oaWRlKGksdGhpcy5vcHRpb25zLmhpZGUsZnVuY3Rpb24oKXtzLl9yZW1vdmVUb29sdGlwKHQodGhpcykpfSksbi5yZW1vdmVEYXRhKCJ1aS10b29sdGlwLW9wZW4iKSx0aGlzLl9vZmYobiwibW91c2VsZWF2ZSBmb2N1c291dCBrZXl1cCIpLG5bMF0hPT10aGlzLmVsZW1lbnRbMF0mJnRoaXMuX29mZihuLCJyZW1vdmUiKSx0aGlzLl9vZmYodGhpcy5kb2N1bWVudCwibW91c2Vtb3ZlIiksZSYmIm1vdXNlbGVhdmUiPT09ZS50eXBlJiZ0LmVhY2godGhpcy5wYXJlbnRzLGZ1bmN0aW9uKGUsaSl7dChpLmVsZW1lbnQpLmF0dHIoInRpdGxlIixpLnRpdGxlKSxkZWxldGUgcy5wYXJlbnRzW2VdfSksby5jbG9zaW5nPSEwLHRoaXMuX3RyaWdnZXIoImNsb3NlIixlLHt0b29sdGlwOml9KSxvLmhpZGluZ3x8KG8uY2xvc2luZz0hMSkpLHZvaWQgMCk6KG4ucmVtb3ZlRGF0YSgidWktdG9vbHRpcC1vcGVuIiksdm9pZCAwKX0sX3Rvb2x0aXA6ZnVuY3Rpb24oZSl7dmFyIGk9dCgiPGRpdj4iKS5hdHRyKCJyb2xlIiwidG9vbHRpcCIpLmFkZENsYXNzKCJ1aS10b29sdGlwIHVpLXdpZGdldCB1aS1jb3JuZXItYWxsIHVpLXdpZGdldC1jb250ZW50ICIrKHRoaXMub3B0aW9ucy50b29sdGlwQ2xhc3N8fCIiKSkscz1pLnVuaXF1ZUlkKCkuYXR0cigiaWQiKTtyZXR1cm4gdCgiPGRpdj4iKS5hZGRDbGFzcygidWktdG9vbHRpcC1jb250ZW50IikuYXBwZW5kVG8oaSksaS5hcHBlbmRUbyh0aGlzLmRvY3VtZW50WzBdLmJvZHkpLHRoaXMudG9vbHRpcHNbc109e2VsZW1lbnQ6ZSx0b29sdGlwOml9fSxfZmluZDpmdW5jdGlvbih0KXt2YXIgZT10LmRhdGEoInVpLXRvb2x0aXAtaWQiKTtyZXR1cm4gZT90aGlzLnRvb2x0aXBzW2VdOm51bGx9LF9yZW1vdmVUb29sdGlwOmZ1bmN0aW9uKHQpe3QucmVtb3ZlKCksZGVsZXRlIHRoaXMudG9vbHRpcHNbdC5hdHRyKCJpZCIpXX0sX2Rlc3Ryb3k6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3QuZWFjaCh0aGlzLnRvb2x0aXBzLGZ1bmN0aW9uKGkscyl7dmFyIG49dC5FdmVudCgiYmx1ciIpLG89cy5lbGVtZW50O24udGFyZ2V0PW4uY3VycmVudFRhcmdldD1vWzBdLGUuY2xvc2UobiwhMCksdCgiIyIraSkucmVtb3ZlKCksby5kYXRhKCJ1aS10b29sdGlwLXRpdGxlIikmJihvLmF0dHIoInRpdGxlIil8fG8uYXR0cigidGl0bGUiLG8uZGF0YSgidWktdG9vbHRpcC10aXRsZSIpKSxvLnJlbW92ZURhdGEoInVpLXRvb2x0aXAtdGl0bGUiKSl9KSx0aGlzLmxpdmVSZWdpb24ucmVtb3ZlKCl9fSl9KTsJCQoKLyoKICogalF1ZXJ5IFVJIFRvdWNoIFB1bmNoIDAuMi4yCiAqCiAqIENvcHlyaWdodCAyMDExLCBEYXZlIEZ1cmZlcm8KICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIG9yIEdQTCBWZXJzaW9uIDIgbGljZW5zZXMuCiAqCiAqIERlcGVuZHM6CiAqICBqcXVlcnkudWkud2lkZ2V0LmpzCiAqICBqcXVlcnkudWkubW91c2UuanMKICovCjsoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gaShlLHQpe2lmKGUub3JpZ2luYWxFdmVudC50b3VjaGVzLmxlbmd0aD4xKXtyZXR1cm59ZS5wcmV2ZW50RGVmYXVsdCgpO3ZhciBuPWUub3JpZ2luYWxFdmVudC5jaGFuZ2VkVG91Y2hlc1swXSxyPWRvY3VtZW50LmNyZWF0ZUV2ZW50KCJNb3VzZUV2ZW50cyIpO3IuaW5pdE1vdXNlRXZlbnQodCx0cnVlLHRydWUsd2luZG93LDEsbi5zY3JlZW5YLG4uc2NyZWVuWSxuLmNsaWVudFgsbi5jbGllbnRZLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLDAsbnVsbCk7ZS50YXJnZXQuZGlzcGF0Y2hFdmVudChyKX1lLnN1cHBvcnQudG91Y2g9Im9udG91Y2hlbmQiaW4gZG9jdW1lbnQ7aWYoIWUuc3VwcG9ydC50b3VjaCl7cmV0dXJufXZhciB0PWUudWkubW91c2UucHJvdG90eXBlLG49dC5fbW91c2VJbml0LHI7dC5fdG91Y2hTdGFydD1mdW5jdGlvbihlKXt2YXIgdD10aGlzO2lmKHJ8fCF0Ll9tb3VzZUNhcHR1cmUoZS5vcmlnaW5hbEV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdKSl7cmV0dXJufXI9dHJ1ZTt0Ll90b3VjaE1vdmVkPWZhbHNlO2koZSwibW91c2VvdmVyIik7aShlLCJtb3VzZW1vdmUiKTtpKGUsIm1vdXNlZG93biIpfTt0Ll90b3VjaE1vdmU9ZnVuY3Rpb24oZSl7aWYoIXIpe3JldHVybn10aGlzLl90b3VjaE1vdmVkPXRydWU7aShlLCJtb3VzZW1vdmUiKX07dC5fdG91Y2hFbmQ9ZnVuY3Rpb24oZSl7aWYoIXIpe3JldHVybn1pKGUsIm1vdXNldXAiKTtpKGUsIm1vdXNlb3V0Iik7aWYoIXRoaXMuX3RvdWNoTW92ZWQpe2koZSwiY2xpY2siKX1yPWZhbHNlfTt0Ll9tb3VzZUluaXQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3QuZWxlbWVudC5iaW5kKCJ0b3VjaHN0YXJ0IixlLnByb3h5KHQsIl90b3VjaFN0YXJ0IikpLmJpbmQoInRvdWNobW92ZSIsZS5wcm94eSh0LCJfdG91Y2hNb3ZlIikpLmJpbmQoInRvdWNoZW5kIixlLnByb3h5KHQsIl90b3VjaEVuZCIpKTtuLmNhbGwodCl9fSkoalF1ZXJ5KTsKCgovKlNlbGVjdDIgMy41LjQgwqkgMjAxMiBJZ29yIFZheW5iZXJnKi8KIWZ1bmN0aW9uKHgpe3ZvaWQgMD09PXguZm4uZWFjaDImJnguZXh0ZW5kKHguZm4se2VhY2gyOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj14KFswXSksYz0tMSxkPXRoaXMubGVuZ3RoOysrYzxkJiYoYi5jb250ZXh0PWJbMF09dGhpc1tjXSkmJiExIT09YS5jYWxsKGJbMF0sYyxiKTspO3JldHVybiB0aGlzfX0pfShqUXVlcnkpLGZ1bmN0aW9uKHgsYSl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGIoYSl7dmFyIGI9eChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiIikpO2EuYmVmb3JlKGIpLGIuYmVmb3JlKGEpLGIucmVtb3ZlKCl9ZnVuY3Rpb24gYyh4KXtmdW5jdGlvbiBhKHgpe3JldHVybiBPW3hdfHx4fXJldHVybiB4LnJlcGxhY2UoL1teXHUwMDAwLVx1MDA3RV0vZyxhKX1mdW5jdGlvbiBkKHgsYSl7Zm9yKHZhciBiPTAsYz1hLmxlbmd0aDtjPmI7Yis9MSlpZihmKHgsYVtiXSkpcmV0dXJuIGI7cmV0dXJuLTF9ZnVuY3Rpb24gZSgpe3ZhciBhPXgoTik7YS5hcHBlbmRUbyhkb2N1bWVudC5ib2R5KTt2YXIgYj17d2lkdGg6YS53aWR0aCgpLWFbMF0uY2xpZW50V2lkdGgsaGVpZ2h0OmEuaGVpZ2h0KCktYVswXS5jbGllbnRIZWlnaHR9O3JldHVybiBhLnJlbW92ZSgpLGJ9ZnVuY3Rpb24gZih4LGIpe3JldHVybiB4PT09Ynx8eCE9PWEmJmIhPT1hJiYobnVsbCE9PXgmJm51bGwhPT1iJiYoeC5jb25zdHJ1Y3Rvcj09PVN0cmluZz94KyIiPT1iKyIiOmIuY29uc3RydWN0b3I9PT1TdHJpbmcmJmIrIiI9PXgrIiIpKX1mdW5jdGlvbiBnKHgsYSxiKXt2YXIgYyxkLGU7aWYobnVsbD09PXh8fHgubGVuZ3RoPDEpcmV0dXJuW107Zm9yKGQ9MCxlPShjPXguc3BsaXQoYSkpLmxlbmd0aDtlPmQ7ZCs9MSljW2RdPWIoY1tkXSk7cmV0dXJuIGN9ZnVuY3Rpb24gaCh4KXtyZXR1cm4geC5vdXRlcldpZHRoKCExKS14LndpZHRoKCl9ZnVuY3Rpb24gaShiKXt2YXIgYz0ia2V5dXAtY2hhbmdlLXZhbHVlIjtiLm9uKCJrZXlkb3duIixmdW5jdGlvbigpe3guZGF0YShiLGMpPT09YSYmeC5kYXRhKGIsYyxiLnZhbCgpKX0pLGIub24oImtleXVwIixmdW5jdGlvbigpe3ZhciBkPXguZGF0YShiLGMpO2QhPT1hJiZiLnZhbCgpIT09ZCYmKHgucmVtb3ZlRGF0YShiLGMpLGIudHJpZ2dlcigia2V5dXAtY2hhbmdlIikpfSl9ZnVuY3Rpb24gaihiKXtiLm9uKCJtb3VzZW1vdmUiLGZ1bmN0aW9uKGIpe3ZhciBjPUw7KGM9PT1hfHxjLnghPT1iLnBhZ2VYfHxjLnkhPT1iLnBhZ2VZKSYmeChiLnRhcmdldCkudHJpZ2dlcigibW91c2Vtb3ZlLWZpbHRlcmVkIixiKX0pfWZ1bmN0aW9uIGsoeCxiLGMpe3ZhciBkO3JldHVybiBjPWN8fGEsZnVuY3Rpb24oKXt2YXIgYT1hcmd1bWVudHM7d2luZG93LmNsZWFyVGltZW91dChkKSxkPXdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yi5hcHBseShjLGEpfSx4KX19ZnVuY3Rpb24gbCh4LGEpe3ZhciBiPWsoeCxmdW5jdGlvbih4KXthLnRyaWdnZXIoInNjcm9sbC1kZWJvdW5jZWQiLHgpfSk7YS5vbigic2Nyb2xsIixmdW5jdGlvbih4KXtkKHgudGFyZ2V0LGEuZ2V0KCkpPj0wJiZiKHgpfSl9ZnVuY3Rpb24gbSh4KXt4WzBdIT09ZG9jdW1lbnQuYWN0aXZlRWxlbWVudCYmd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgYSxiPXhbMF0sYz14LnZhbCgpLmxlbmd0aDt4LmZvY3VzKCksKGIub2Zmc2V0V2lkdGg+MHx8Yi5vZmZzZXRIZWlnaHQ+MCkmJmI9PT1kb2N1bWVudC5hY3RpdmVFbGVtZW50JiYoYi5zZXRTZWxlY3Rpb25SYW5nZT9iLnNldFNlbGVjdGlvblJhbmdlKGMsYyk6Yi5jcmVhdGVUZXh0UmFuZ2UmJigoYT1iLmNyZWF0ZVRleHRSYW5nZSgpKS5jb2xsYXBzZSghMSksYS5zZWxlY3QoKSkpfSwwKX1mdW5jdGlvbiBuKGEpe3ZhciBiPTAsYz0wO2lmKCJzZWxlY3Rpb25TdGFydCJpbihhPXgoYSlbMF0pKWI9YS5zZWxlY3Rpb25TdGFydCxjPWEuc2VsZWN0aW9uRW5kLWI7ZWxzZSBpZigic2VsZWN0aW9uImluIGRvY3VtZW50KXthLmZvY3VzKCk7dmFyIGQ9ZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCk7Yz1kb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKS50ZXh0Lmxlbmd0aCxkLm1vdmVTdGFydCgiY2hhcmFjdGVyIiwtYS52YWx1ZS5sZW5ndGgpLGI9ZC50ZXh0Lmxlbmd0aC1jfXJldHVybntvZmZzZXQ6YixsZW5ndGg6Y319ZnVuY3Rpb24gbyh4KXt4LnByZXZlbnREZWZhdWx0KCkseC5zdG9wUHJvcGFnYXRpb24oKX1mdW5jdGlvbiBwKHgpe3gucHJldmVudERlZmF1bHQoKSx4LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpfWZ1bmN0aW9uIHEoYSl7aWYoIUkpe3ZhciBiPWFbMF0uY3VycmVudFN0eWxlfHx3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShhWzBdLG51bGwpOyhJPXgoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLmNzcyh7cG9zaXRpb246ImFic29sdXRlIixsZWZ0OiItMTAwMDBweCIsdG9wOiItMTAwMDBweCIsZGlzcGxheToibm9uZSIsZm9udFNpemU6Yi5mb250U2l6ZSxmb250RmFtaWx5OmIuZm9udEZhbWlseSxmb250U3R5bGU6Yi5mb250U3R5bGUsZm9udFdlaWdodDpiLmZvbnRXZWlnaHQsbGV0dGVyU3BhY2luZzpiLmxldHRlclNwYWNpbmcsdGV4dFRyYW5zZm9ybTpiLnRleHRUcmFuc2Zvcm0sd2hpdGVTcGFjZToibm93cmFwIn0pKS5hdHRyKCJjbGFzcyIsInNlbGVjdDItc2l6ZXIiKSx4KGRvY3VtZW50LmJvZHkpLmFwcGVuZChJKX1yZXR1cm4gSS50ZXh0KGEudmFsKCkpLEkud2lkdGgoKX1mdW5jdGlvbiByKGEsYixjKXt2YXIgZCxlLGY9W107KGQ9eC50cmltKGEuYXR0cigiY2xhc3MiKSkpJiZ4KChkPSIiK2QpLnNwbGl0KC9ccysvKSkuZWFjaDIoZnVuY3Rpb24oKXswPT09dGhpcy5pbmRleE9mKCJzZWxlY3QyLSIpJiZmLnB1c2godGhpcyl9KSwoZD14LnRyaW0oYi5hdHRyKCJjbGFzcyIpKSkmJngoKGQ9IiIrZCkuc3BsaXQoL1xzKy8pKS5lYWNoMihmdW5jdGlvbigpezAhPT10aGlzLmluZGV4T2YoInNlbGVjdDItIikmJigoZT1jKHRoaXMpKSYmZi5wdXNoKGUpKX0pLGEuYXR0cigiY2xhc3MiLGYuam9pbigiICIpKX1mdW5jdGlvbiBzKHgsYSxiLGQpe3ZhciBlPWMoeC50b1VwcGVyQ2FzZSgpKS5pbmRleE9mKGMoYS50b1VwcGVyQ2FzZSgpKSksZj1hLmxlbmd0aDtyZXR1cm4gMD5lPyhiLnB1c2goZCh4KSksdm9pZCAwKTooYi5wdXNoKGQoeC5zdWJzdHJpbmcoMCxlKSkpLGIucHVzaCgiPHNwYW4gY2xhc3M9J3NlbGVjdDItbWF0Y2gnPiIpLGIucHVzaChkKHguc3Vic3RyaW5nKGUsZStmKSkpLGIucHVzaCgiPC9zcGFuPiIpLGIucHVzaChkKHguc3Vic3RyaW5nKGUrZix4Lmxlbmd0aCkpKSx2b2lkIDApfWZ1bmN0aW9uIHQoeCl7dmFyIGE9eyJcXCI6IiYjOTI7IiwiJiI6IiZhbXA7IiwiPCI6IiZsdDsiLCI+IjoiJmd0OyIsJyInOiImcXVvdDsiLCInIjoiJiMzOTsiLCIvIjoiJiM0NzsifTtyZXR1cm4gU3RyaW5nKHgpLnJlcGxhY2UoL1smPD4iJ1wvXFxdL2csZnVuY3Rpb24oeCl7cmV0dXJuIGFbeF19KX1mdW5jdGlvbiB1KGIpe3ZhciBjLGQ9bnVsbCxlPWIucXVpZXRNaWxsaXN8fDEwMCxmPWIudXJsLGc9dGhpcztyZXR1cm4gZnVuY3Rpb24oaCl7d2luZG93LmNsZWFyVGltZW91dChjKSxjPXdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIGM9Yi5kYXRhLGU9ZixpPWIudHJhbnNwb3J0fHx4LmZuLnNlbGVjdDIuYWpheERlZmF1bHRzLnRyYW5zcG9ydCxqPXt0eXBlOmIudHlwZXx8IkdFVCIsY2FjaGU6Yi5jYWNoZXx8ITEsanNvbnBDYWxsYmFjazpiLmpzb25wQ2FsbGJhY2t8fGEsZGF0YVR5cGU6Yi5kYXRhVHlwZXx8Impzb24ifSxrPXguZXh0ZW5kKHt9LHguZm4uc2VsZWN0Mi5hamF4RGVmYXVsdHMucGFyYW1zLGopO2M9Yz9jLmNhbGwoZyxoLnRlcm0saC5wYWdlLGguY29udGV4dCk6bnVsbCxlPSJmdW5jdGlvbiI9PXR5cGVvZiBlP2UuY2FsbChnLGgudGVybSxoLnBhZ2UsaC5jb250ZXh0KTplLGQmJiJmdW5jdGlvbiI9PXR5cGVvZiBkLmFib3J0JiZkLmFib3J0KCksYi5wYXJhbXMmJih4LmlzRnVuY3Rpb24oYi5wYXJhbXMpP3guZXh0ZW5kKGssYi5wYXJhbXMuY2FsbChnKSk6eC5leHRlbmQoayxiLnBhcmFtcykpLHguZXh0ZW5kKGsse3VybDplLGRhdGFUeXBlOmIuZGF0YVR5cGUsZGF0YTpjLHN1Y2Nlc3M6ZnVuY3Rpb24oeCl7dmFyIGE9Yi5yZXN1bHRzKHgsaC5wYWdlLGgpO2guY2FsbGJhY2soYSl9LGVycm9yOmZ1bmN0aW9uKHgsYSxiKXt2YXIgYz17aGFzRXJyb3I6ITAsanFYSFI6eCx0ZXh0U3RhdHVzOmEsZXJyb3JUaHJvd246Yn07aC5jYWxsYmFjayhjKX19KSxkPWkuY2FsbChnLGspfSxlKX19ZnVuY3Rpb24gdihhKXt2YXIgYixjLGQ9YSxlPWZ1bmN0aW9uKHgpe3JldHVybiIiK3gudGV4dH07eC5pc0FycmF5KGQpJiYoZD17cmVzdWx0czpjPWR9KSwhMT09PXguaXNGdW5jdGlvbihkKSYmKGM9ZCxkPWZ1bmN0aW9uKCl7cmV0dXJuIGN9KTt2YXIgZj1kKCk7cmV0dXJuIGYudGV4dCYmKGU9Zi50ZXh0LHguaXNGdW5jdGlvbihlKXx8KGI9Zi50ZXh0LGU9ZnVuY3Rpb24oeCl7cmV0dXJuIHhbYl19KSksZnVuY3Rpb24oYSl7dmFyIGIsYz1hLnRlcm0sZj17cmVzdWx0czpbXX07cmV0dXJuIiI9PT1jPyhhLmNhbGxiYWNrKGQoKSksdm9pZCAwKTooYj1mdW5jdGlvbihkLGYpe3ZhciBnLGg7aWYoKGQ9ZFswXSkuY2hpbGRyZW4pe2ZvcihoIGluIGc9e30sZClkLmhhc093blByb3BlcnR5KGgpJiYoZ1toXT1kW2hdKTtnLmNoaWxkcmVuPVtdLHgoZC5jaGlsZHJlbikuZWFjaDIoZnVuY3Rpb24oeCxhKXtiKGEsZy5jaGlsZHJlbil9KSwoZy5jaGlsZHJlbi5sZW5ndGh8fGEubWF0Y2hlcihjLGUoZyksZCkpJiZmLnB1c2goZyl9ZWxzZSBhLm1hdGNoZXIoYyxlKGQpLGQpJiZmLnB1c2goZCl9LHgoZCgpLnJlc3VsdHMpLmVhY2gyKGZ1bmN0aW9uKHgsYSl7YihhLGYucmVzdWx0cyl9KSxhLmNhbGxiYWNrKGYpLHZvaWQgMCl9fWZ1bmN0aW9uIHcoYil7dmFyIGM9eC5pc0Z1bmN0aW9uKGIpO3JldHVybiBmdW5jdGlvbihkKXt2YXIgZT1kLnRlcm0sZj17cmVzdWx0czpbXX0sZz1jP2IoZCk6Yjt4LmlzQXJyYXkoZykmJih4KGcpLmVhY2goZnVuY3Rpb24oKXt2YXIgeD10aGlzLnRleHQhPT1hLGI9eD90aGlzLnRleHQ6dGhpczsoIiI9PT1lfHxkLm1hdGNoZXIoZSxiKSkmJmYucmVzdWx0cy5wdXNoKHg/dGhpczp7aWQ6dGhpcyx0ZXh0OnRoaXN9KX0pLGQuY2FsbGJhY2soZikpfX1mdW5jdGlvbiB5KGEsYil7aWYoeC5pc0Z1bmN0aW9uKGEpKXJldHVybiEwO2lmKCFhKXJldHVybiExO2lmKCJzdHJpbmciPT10eXBlb2YgYSlyZXR1cm4hMDt0aHJvdyBuZXcgRXJyb3IoYisiIG11c3QgYmUgYSBzdHJpbmcsIGZ1bmN0aW9uLCBvciBmYWxzeSB2YWx1ZSIpfWZ1bmN0aW9uIHooYSxiKXtpZih4LmlzRnVuY3Rpb24oYSkpe3ZhciBjPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKTtyZXR1cm4gYS5hcHBseShiLGMpfXJldHVybiBhfWZ1bmN0aW9uIEEoYSl7dmFyIGI9MDtyZXR1cm4geC5lYWNoKGEsZnVuY3Rpb24oeCxhKXthLmNoaWxkcmVuP2IrPUEoYS5jaGlsZHJlbik6YisrfSksYn1mdW5jdGlvbiBCKHgsYixjLGQpe3ZhciBlLGcsaCxpLGosaz14LGw9ITE7aWYoIWQuY3JlYXRlU2VhcmNoQ2hvaWNlfHwhZC50b2tlblNlcGFyYXRvcnN8fGQudG9rZW5TZXBhcmF0b3JzLmxlbmd0aDwxKXJldHVybiBhO2Zvcig7Oyl7Zm9yKGc9LTEsaD0wLGk9ZC50b2tlblNlcGFyYXRvcnMubGVuZ3RoO2k+aCYmKGo9ZC50b2tlblNlcGFyYXRvcnNbaF0sISgoZz14LmluZGV4T2YoaikpPj0wKSk7aCsrKTtpZigwPmcpYnJlYWs7aWYoZT14LnN1YnN0cmluZygwLGcpLHg9eC5zdWJzdHJpbmcoZytqLmxlbmd0aCksZS5sZW5ndGg+MCYmKChlPWQuY3JlYXRlU2VhcmNoQ2hvaWNlLmNhbGwodGhpcyxlLGIpKSE9PWEmJm51bGwhPT1lJiZkLmlkKGUpIT09YSYmbnVsbCE9PWQuaWQoZSkpKXtmb3IobD0hMSxoPTAsaT1iLmxlbmd0aDtpPmg7aCsrKWlmKGYoZC5pZChlKSxkLmlkKGJbaF0pKSl7bD0hMDticmVha31sfHxjKGUpfX1yZXR1cm4gayE9PXg/eDp2b2lkIDB9ZnVuY3Rpb24gQygpe3ZhciBhPXRoaXM7eC5lYWNoKGFyZ3VtZW50cyxmdW5jdGlvbih4LGIpe2FbYl0ucmVtb3ZlKCksYVtiXT1udWxsfSl9ZnVuY3Rpb24gRChhLGIpe3ZhciBjPWZ1bmN0aW9uKCl7fTtyZXR1cm4gYy5wcm90b3R5cGU9bmV3IGEsYy5wcm90b3R5cGUuY29uc3RydWN0b3I9YyxjLnByb3RvdHlwZS5wYXJlbnQ9YS5wcm90b3R5cGUsYy5wcm90b3R5cGU9eC5leHRlbmQoYy5wcm90b3R5cGUsYiksY31pZih3aW5kb3cuU2VsZWN0Mj09PWEpe3ZhciBFLEYsRyxILEksSixLLEw9e3g6MCx5OjB9LE09e1RBQjo5LEVOVEVSOjEzLEVTQzoyNyxTUEFDRTozMixMRUZUOjM3LFVQOjM4LFJJR0hUOjM5LERPV046NDAsU0hJRlQ6MTYsQ1RSTDoxNyxBTFQ6MTgsUEFHRV9VUDozMyxQQUdFX0RPV046MzQsSE9NRTozNixFTkQ6MzUsQkFDS1NQQUNFOjgsREVMRVRFOjQ2LGlzQXJyb3c6ZnVuY3Rpb24oeCl7c3dpdGNoKHg9eC53aGljaD94LndoaWNoOngpe2Nhc2UgTS5MRUZUOmNhc2UgTS5SSUdIVDpjYXNlIE0uVVA6Y2FzZSBNLkRPV046cmV0dXJuITB9cmV0dXJuITF9LGlzQ29udHJvbDpmdW5jdGlvbih4KXtzd2l0Y2goeC53aGljaCl7Y2FzZSBNLlNISUZUOmNhc2UgTS5DVFJMOmNhc2UgTS5BTFQ6cmV0dXJuITB9cmV0dXJuISF4Lm1ldGFLZXl9LGlzRnVuY3Rpb25LZXk6ZnVuY3Rpb24oeCl7cmV0dXJuKHg9eC53aGljaD94LndoaWNoOngpPj0xMTImJjEyMz49eH19LE49IjxkaXYgY2xhc3M9J3NlbGVjdDItbWVhc3VyZS1zY3JvbGxiYXInPjwvZGl2PiIsTz17IuKStiI6IkEiLCLvvKEiOiJBIiwiw4AiOiJBIiwiw4EiOiJBIiwiw4IiOiJBIiwi4bqmIjoiQSIsIuG6pCI6IkEiLCLhuqoiOiJBIiwi4bqoIjoiQSIsIsODIjoiQSIsIsSAIjoiQSIsIsSCIjoiQSIsIuG6sCI6IkEiLCLhuq4iOiJBIiwi4bq0IjoiQSIsIuG6siI6IkEiLCLIpiI6IkEiLCLHoCI6IkEiLCLDhCI6IkEiLCLHniI6IkEiLCLhuqIiOiJBIiwiw4UiOiJBIiwix7oiOiJBIiwix40iOiJBIiwiyIAiOiJBIiwiyIIiOiJBIiwi4bqgIjoiQSIsIuG6rCI6IkEiLCLhurYiOiJBIiwi4biAIjoiQSIsIsSEIjoiQSIsIsi6IjoiQSIsIuKxryI6IkEiLCLqnLIiOiJBQSIsIsOGIjoiQUUiLCLHvCI6IkFFIiwix6IiOiJBRSIsIuqctCI6IkFPIiwi6py2IjoiQVUiLCLqnLgiOiJBViIsIuqcuiI6IkFWIiwi6py8IjoiQVkiLCLikrciOiJCIiwi77yiIjoiQiIsIuG4giI6IkIiLCLhuIQiOiJCIiwi4biGIjoiQiIsIsmDIjoiQiIsIsaCIjoiQiIsIsaBIjoiQiIsIuKSuCI6IkMiLCLvvKMiOiJDIiwixIYiOiJDIiwixIgiOiJDIiwixIoiOiJDIiwixIwiOiJDIiwiw4ciOiJDIiwi4biIIjoiQyIsIsaHIjoiQyIsIsi7IjoiQyIsIuqcviI6IkMiLCLikrkiOiJEIiwi77ykIjoiRCIsIuG4iiI6IkQiLCLEjiI6IkQiLCLhuIwiOiJEIiwi4biQIjoiRCIsIuG4kiI6IkQiLCLhuI4iOiJEIiwixJAiOiJEIiwixosiOiJEIiwixooiOiJEIiwixokiOiJEIiwi6p25IjoiRCIsIsexIjoiRFoiLCLHhCI6IkRaIiwix7IiOiJEeiIsIseFIjoiRHoiLCLikroiOiJFIiwi77ylIjoiRSIsIsOIIjoiRSIsIsOJIjoiRSIsIsOKIjoiRSIsIuG7gCI6IkUiLCLhur4iOiJFIiwi4buEIjoiRSIsIuG7giI6IkUiLCLhurwiOiJFIiwixJIiOiJFIiwi4biUIjoiRSIsIuG4liI6IkUiLCLElCI6IkUiLCLEliI6IkUiLCLDiyI6IkUiLCLhuroiOiJFIiwixJoiOiJFIiwiyIQiOiJFIiwiyIYiOiJFIiwi4bq4IjoiRSIsIuG7hiI6IkUiLCLIqCI6IkUiLCLhuJwiOiJFIiwixJgiOiJFIiwi4biYIjoiRSIsIuG4miI6IkUiLCLGkCI6IkUiLCLGjiI6IkUiLCLikrsiOiJGIiwi77ymIjoiRiIsIuG4niI6IkYiLCLGkSI6IkYiLCLqnbsiOiJGIiwi4pK8IjoiRyIsIu+8pyI6IkciLCLHtCI6IkciLCLEnCI6IkciLCLhuKAiOiJHIiwixJ4iOiJHIiwixKAiOiJHIiwix6YiOiJHIiwixKIiOiJHIiwix6QiOiJHIiwixpMiOiJHIiwi6p6gIjoiRyIsIuqdvSI6IkciLCLqnb4iOiJHIiwi4pK9IjoiSCIsIu+8qCI6IkgiLCLEpCI6IkgiLCLhuKIiOiJIIiwi4bimIjoiSCIsIsieIjoiSCIsIuG4pCI6IkgiLCLhuKgiOiJIIiwi4biqIjoiSCIsIsSmIjoiSCIsIuKxpyI6IkgiLCLisbUiOiJIIiwi6p6NIjoiSCIsIuKSviI6IkkiLCLvvKkiOiJJIiwiw4wiOiJJIiwiw40iOiJJIiwiw44iOiJJIiwixKgiOiJJIiwixKoiOiJJIiwixKwiOiJJIiwixLAiOiJJIiwiw48iOiJJIiwi4biuIjoiSSIsIuG7iCI6IkkiLCLHjyI6IkkiLCLIiCI6IkkiLCLIiiI6IkkiLCLhu4oiOiJJIiwixK4iOiJJIiwi4bisIjoiSSIsIsaXIjoiSSIsIuKSvyI6IkoiLCLvvKoiOiJKIiwixLQiOiJKIiwiyYgiOiJKIiwi4pOAIjoiSyIsIu+8qyI6IksiLCLhuLAiOiJLIiwix6giOiJLIiwi4biyIjoiSyIsIsS2IjoiSyIsIuG4tCI6IksiLCLGmCI6IksiLCLisakiOiJLIiwi6p2AIjoiSyIsIuqdgiI6IksiLCLqnYQiOiJLIiwi6p6iIjoiSyIsIuKTgSI6IkwiLCLvvKwiOiJMIiwixL8iOiJMIiwixLkiOiJMIiwixL0iOiJMIiwi4bi2IjoiTCIsIuG4uCI6IkwiLCLEuyI6IkwiLCLhuLwiOiJMIiwi4bi6IjoiTCIsIsWBIjoiTCIsIsi9IjoiTCIsIuKxoiI6IkwiLCLisaAiOiJMIiwi6p2IIjoiTCIsIuqdhiI6IkwiLCLqnoAiOiJMIiwix4ciOiJMSiIsIseIIjoiTGoiLCLik4IiOiJNIiwi77ytIjoiTSIsIuG4viI6Ik0iLCLhuYAiOiJNIiwi4bmCIjoiTSIsIuKxriI6Ik0iLCLGnCI6Ik0iLCLik4MiOiJOIiwi77yuIjoiTiIsIse4IjoiTiIsIsWDIjoiTiIsIsORIjoiTiIsIuG5hCI6Ik4iLCLFhyI6Ik4iLCLhuYYiOiJOIiwixYUiOiJOIiwi4bmKIjoiTiIsIuG5iCI6Ik4iLCLIoCI6Ik4iLCLGnSI6Ik4iLCLqnpAiOiJOIiwi6p6kIjoiTiIsIseKIjoiTkoiLCLHiyI6Ik5qIiwi4pOEIjoiTyIsIu+8ryI6Ik8iLCLDkiI6Ik8iLCLDkyI6Ik8iLCLDlCI6Ik8iLCLhu5IiOiJPIiwi4buQIjoiTyIsIuG7liI6Ik8iLCLhu5QiOiJPIiwiw5UiOiJPIiwi4bmMIjoiTyIsIsisIjoiTyIsIuG5jiI6Ik8iLCLFjCI6Ik8iLCLhuZAiOiJPIiwi4bmSIjoiTyIsIsWOIjoiTyIsIsiuIjoiTyIsIsiwIjoiTyIsIsOWIjoiTyIsIsiqIjoiTyIsIuG7jiI6Ik8iLCLFkCI6Ik8iLCLHkSI6Ik8iLCLIjCI6Ik8iLCLIjiI6Ik8iLCLGoCI6Ik8iLCLhu5wiOiJPIiwi4buaIjoiTyIsIuG7oCI6Ik8iLCLhu54iOiJPIiwi4buiIjoiTyIsIuG7jCI6Ik8iLCLhu5giOiJPIiwix6oiOiJPIiwix6wiOiJPIiwiw5giOiJPIiwix74iOiJPIiwixoYiOiJPIiwixp8iOiJPIiwi6p2KIjoiTyIsIuqdjCI6Ik8iLCLGoiI6Ik9JIiwi6p2OIjoiT08iLCLIoiI6Ik9VIiwi4pOFIjoiUCIsIu+8sCI6IlAiLCLhuZQiOiJQIiwi4bmWIjoiUCIsIsakIjoiUCIsIuKxoyI6IlAiLCLqnZAiOiJQIiwi6p2SIjoiUCIsIuqdlCI6IlAiLCLik4YiOiJRIiwi77yxIjoiUSIsIuqdliI6IlEiLCLqnZgiOiJRIiwiyYoiOiJRIiwi4pOHIjoiUiIsIu+8siI6IlIiLCLFlCI6IlIiLCLhuZgiOiJSIiwixZgiOiJSIiwiyJAiOiJSIiwiyJIiOiJSIiwi4bmaIjoiUiIsIuG5nCI6IlIiLCLFliI6IlIiLCLhuZ4iOiJSIiwiyYwiOiJSIiwi4rGkIjoiUiIsIuqdmiI6IlIiLCLqnqYiOiJSIiwi6p6CIjoiUiIsIuKTiCI6IlMiLCLvvLMiOiJTIiwi4bqeIjoiUyIsIsWaIjoiUyIsIuG5pCI6IlMiLCLFnCI6IlMiLCLhuaAiOiJTIiwixaAiOiJTIiwi4bmmIjoiUyIsIuG5oiI6IlMiLCLhuagiOiJTIiwiyJgiOiJTIiwixZ4iOiJTIiwi4rG+IjoiUyIsIuqeqCI6IlMiLCLqnoQiOiJTIiwi4pOJIjoiVCIsIu+8tCI6IlQiLCLhuaoiOiJUIiwixaQiOiJUIiwi4bmsIjoiVCIsIsiaIjoiVCIsIsWiIjoiVCIsIuG5sCI6IlQiLCLhua4iOiJUIiwixaYiOiJUIiwixqwiOiJUIiwixq4iOiJUIiwiyL4iOiJUIiwi6p6GIjoiVCIsIuqcqCI6IlRaIiwi4pOKIjoiVSIsIu+8tSI6IlUiLCLDmSI6IlUiLCLDmiI6IlUiLCLDmyI6IlUiLCLFqCI6IlUiLCLhubgiOiJVIiwixaoiOiJVIiwi4bm6IjoiVSIsIsWsIjoiVSIsIsOcIjoiVSIsIsebIjoiVSIsIseXIjoiVSIsIseVIjoiVSIsIseZIjoiVSIsIuG7piI6IlUiLCLFriI6IlUiLCLFsCI6IlUiLCLHkyI6IlUiLCLIlCI6IlUiLCLIliI6IlUiLCLGryI6IlUiLCLhu6oiOiJVIiwi4buoIjoiVSIsIuG7riI6IlUiLCLhu6wiOiJVIiwi4buwIjoiVSIsIuG7pCI6IlUiLCLhubIiOiJVIiwixbIiOiJVIiwi4bm2IjoiVSIsIuG5tCI6IlUiLCLJhCI6IlUiLCLik4siOiJWIiwi77y2IjoiViIsIuG5vCI6IlYiLCLhub4iOiJWIiwixrIiOiJWIiwi6p2eIjoiViIsIsmFIjoiViIsIuqdoCI6IlZZIiwi4pOMIjoiVyIsIu+8tyI6IlciLCLhuoAiOiJXIiwi4bqCIjoiVyIsIsW0IjoiVyIsIuG6hiI6IlciLCLhuoQiOiJXIiwi4bqIIjoiVyIsIuKxsiI6IlciLCLik40iOiJYIiwi77y4IjoiWCIsIuG6iiI6IlgiLCLhuowiOiJYIiwi4pOOIjoiWSIsIu+8uSI6IlkiLCLhu7IiOiJZIiwiw50iOiJZIiwixbYiOiJZIiwi4bu4IjoiWSIsIsiyIjoiWSIsIuG6jiI6IlkiLCLFuCI6IlkiLCLhu7YiOiJZIiwi4bu0IjoiWSIsIsazIjoiWSIsIsmOIjoiWSIsIuG7viI6IlkiLCLik48iOiJaIiwi77y6IjoiWiIsIsW5IjoiWiIsIuG6kCI6IloiLCLFuyI6IloiLCLFvSI6IloiLCLhupIiOiJaIiwi4bqUIjoiWiIsIsa1IjoiWiIsIsikIjoiWiIsIuKxvyI6IloiLCLisasiOiJaIiwi6p2iIjoiWiIsIuKTkCI6ImEiLCLvvYEiOiJhIiwi4bqaIjoiYSIsIsOgIjoiYSIsIsOhIjoiYSIsIsOiIjoiYSIsIuG6pyI6ImEiLCLhuqUiOiJhIiwi4bqrIjoiYSIsIuG6qSI6ImEiLCLDoyI6ImEiLCLEgSI6ImEiLCLEgyI6ImEiLCLhurEiOiJhIiwi4bqvIjoiYSIsIuG6tSI6ImEiLCLhurMiOiJhIiwiyKciOiJhIiwix6EiOiJhIiwiw6QiOiJhIiwix58iOiJhIiwi4bqjIjoiYSIsIsOlIjoiYSIsIse7IjoiYSIsIseOIjoiYSIsIsiBIjoiYSIsIsiDIjoiYSIsIuG6oSI6ImEiLCLhuq0iOiJhIiwi4bq3IjoiYSIsIuG4gSI6ImEiLCLEhSI6ImEiLCLisaUiOiJhIiwiyZAiOiJhIiwi6pyzIjoiYWEiLCLDpiI6ImFlIiwix70iOiJhZSIsIsejIjoiYWUiLCLqnLUiOiJhbyIsIuqctyI6ImF1Iiwi6py5IjoiYXYiLCLqnLsiOiJhdiIsIuqcvSI6ImF5Iiwi4pORIjoiYiIsIu+9giI6ImIiLCLhuIMiOiJiIiwi4biFIjoiYiIsIuG4hyI6ImIiLCLGgCI6ImIiLCLGgyI6ImIiLCLJkyI6ImIiLCLik5IiOiJjIiwi772DIjoiYyIsIsSHIjoiYyIsIsSJIjoiYyIsIsSLIjoiYyIsIsSNIjoiYyIsIsOnIjoiYyIsIuG4iSI6ImMiLCLGiCI6ImMiLCLIvCI6ImMiLCLqnL8iOiJjIiwi4oaEIjoiYyIsIuKTkyI6ImQiLCLvvYQiOiJkIiwi4biLIjoiZCIsIsSPIjoiZCIsIuG4jSI6ImQiLCLhuJEiOiJkIiwi4biTIjoiZCIsIuG4jyI6ImQiLCLEkSI6ImQiLCLGjCI6ImQiLCLJliI6ImQiLCLJlyI6ImQiLCLqnboiOiJkIiwix7MiOiJkeiIsIseGIjoiZHoiLCLik5QiOiJlIiwi772FIjoiZSIsIsOoIjoiZSIsIsOpIjoiZSIsIsOqIjoiZSIsIuG7gSI6ImUiLCLhur8iOiJlIiwi4buFIjoiZSIsIuG7gyI6ImUiLCLhur0iOiJlIiwixJMiOiJlIiwi4biVIjoiZSIsIuG4lyI6ImUiLCLElSI6ImUiLCLElyI6ImUiLCLDqyI6ImUiLCLhursiOiJlIiwixJsiOiJlIiwiyIUiOiJlIiwiyIciOiJlIiwi4bq5IjoiZSIsIuG7hyI6ImUiLCLIqSI6ImUiLCLhuJ0iOiJlIiwixJkiOiJlIiwi4biZIjoiZSIsIuG4myI6ImUiLCLJhyI6ImUiLCLJmyI6ImUiLCLHnSI6ImUiLCLik5UiOiJmIiwi772GIjoiZiIsIuG4nyI6ImYiLCLGkiI6ImYiLCLqnbwiOiJmIiwi4pOWIjoiZyIsIu+9hyI6ImciLCLHtSI6ImciLCLEnSI6ImciLCLhuKEiOiJnIiwixJ8iOiJnIiwixKEiOiJnIiwix6ciOiJnIiwixKMiOiJnIiwix6UiOiJnIiwiyaAiOiJnIiwi6p6hIjoiZyIsIuG1uSI6ImciLCLqnb8iOiJnIiwi4pOXIjoiaCIsIu+9iCI6ImgiLCLEpSI6ImgiLCLhuKMiOiJoIiwi4binIjoiaCIsIsifIjoiaCIsIuG4pSI6ImgiLCLhuKkiOiJoIiwi4birIjoiaCIsIuG6liI6ImgiLCLEpyI6ImgiLCLisagiOiJoIiwi4rG2IjoiaCIsIsmlIjoiaCIsIsaVIjoiaHYiLCLik5giOiJpIiwi772JIjoiaSIsIsOsIjoiaSIsIsOtIjoiaSIsIsOuIjoiaSIsIsSpIjoiaSIsIsSrIjoiaSIsIsStIjoiaSIsIsOvIjoiaSIsIuG4ryI6ImkiLCLhu4kiOiJpIiwix5AiOiJpIiwiyIkiOiJpIiwiyIsiOiJpIiwi4buLIjoiaSIsIsSvIjoiaSIsIuG4rSI6ImkiLCLJqCI6ImkiLCLEsSI6ImkiLCLik5kiOiJqIiwi772KIjoiaiIsIsS1IjoiaiIsIsewIjoiaiIsIsmJIjoiaiIsIuKTmiI6ImsiLCLvvYsiOiJrIiwi4bixIjoiayIsIsepIjoiayIsIuG4syI6ImsiLCLEtyI6ImsiLCLhuLUiOiJrIiwixpkiOiJrIiwi4rGqIjoiayIsIuqdgSI6ImsiLCLqnYMiOiJrIiwi6p2FIjoiayIsIuqeoyI6ImsiLCLik5siOiJsIiwi772MIjoibCIsIsWAIjoibCIsIsS6IjoibCIsIsS+IjoibCIsIuG4tyI6ImwiLCLhuLkiOiJsIiwixLwiOiJsIiwi4bi9IjoibCIsIuG4uyI6ImwiLCLFvyI6ImwiLCLFgiI6ImwiLCLGmiI6ImwiLCLJqyI6ImwiLCLisaEiOiJsIiwi6p2JIjoibCIsIuqegSI6ImwiLCLqnYciOiJsIiwix4kiOiJsaiIsIuKTnCI6Im0iLCLvvY0iOiJtIiwi4bi/IjoibSIsIuG5gSI6Im0iLCLhuYMiOiJtIiwiybEiOiJtIiwiya8iOiJtIiwi4pOdIjoibiIsIu+9jiI6Im4iLCLHuSI6Im4iLCLFhCI6Im4iLCLDsSI6Im4iLCLhuYUiOiJuIiwixYgiOiJuIiwi4bmHIjoibiIsIsWGIjoibiIsIuG5iyI6Im4iLCLhuYkiOiJuIiwixp4iOiJuIiwiybIiOiJuIiwixYkiOiJuIiwi6p6RIjoibiIsIuqepSI6Im4iLCLHjCI6Im5qIiwi4pOeIjoibyIsIu+9jyI6Im8iLCLDsiI6Im8iLCLDsyI6Im8iLCLDtCI6Im8iLCLhu5MiOiJvIiwi4buRIjoibyIsIuG7lyI6Im8iLCLhu5UiOiJvIiwiw7UiOiJvIiwi4bmNIjoibyIsIsitIjoibyIsIuG5jyI6Im8iLCLFjSI6Im8iLCLhuZEiOiJvIiwi4bmTIjoibyIsIsWPIjoibyIsIsivIjoibyIsIsixIjoibyIsIsO2IjoibyIsIsirIjoibyIsIuG7jyI6Im8iLCLFkSI6Im8iLCLHkiI6Im8iLCLIjSI6Im8iLCLIjyI6Im8iLCLGoSI6Im8iLCLhu50iOiJvIiwi4bubIjoibyIsIuG7oSI6Im8iLCLhu58iOiJvIiwi4bujIjoibyIsIuG7jSI6Im8iLCLhu5kiOiJvIiwix6siOiJvIiwix60iOiJvIiwiw7giOiJvIiwix78iOiJvIiwiyZQiOiJvIiwi6p2LIjoibyIsIuqdjSI6Im8iLCLJtSI6Im8iLCLGoyI6Im9pIiwiyKMiOiJvdSIsIuqdjyI6Im9vIiwi4pOfIjoicCIsIu+9kCI6InAiLCLhuZUiOiJwIiwi4bmXIjoicCIsIsalIjoicCIsIuG1vSI6InAiLCLqnZEiOiJwIiwi6p2TIjoicCIsIuqdlSI6InAiLCLik6AiOiJxIiwi772RIjoicSIsIsmLIjoicSIsIuqdlyI6InEiLCLqnZkiOiJxIiwi4pOhIjoiciIsIu+9kiI6InIiLCLFlSI6InIiLCLhuZkiOiJyIiwixZkiOiJyIiwiyJEiOiJyIiwiyJMiOiJyIiwi4bmbIjoiciIsIuG5nSI6InIiLCLFlyI6InIiLCLhuZ8iOiJyIiwiyY0iOiJyIiwiyb0iOiJyIiwi6p2bIjoiciIsIuqepyI6InIiLCLqnoMiOiJyIiwi4pOiIjoicyIsIu+9kyI6InMiLCLDnyI6InMiLCLFmyI6InMiLCLhuaUiOiJzIiwixZ0iOiJzIiwi4bmhIjoicyIsIsWhIjoicyIsIuG5pyI6InMiLCLhuaMiOiJzIiwi4bmpIjoicyIsIsiZIjoicyIsIsWfIjoicyIsIsi/IjoicyIsIuqeqSI6InMiLCLqnoUiOiJzIiwi4bqbIjoicyIsIuKToyI6InQiLCLvvZQiOiJ0Iiwi4bmrIjoidCIsIuG6lyI6InQiLCLFpSI6InQiLCLhua0iOiJ0IiwiyJsiOiJ0IiwixaMiOiJ0Iiwi4bmxIjoidCIsIuG5ryI6InQiLCLFpyI6InQiLCLGrSI6InQiLCLKiCI6InQiLCLisaYiOiJ0Iiwi6p6HIjoidCIsIuqcqSI6InR6Iiwi4pOkIjoidSIsIu+9lSI6InUiLCLDuSI6InUiLCLDuiI6InUiLCLDuyI6InUiLCLFqSI6InUiLCLhubkiOiJ1IiwixasiOiJ1Iiwi4bm7IjoidSIsIsWtIjoidSIsIsO8IjoidSIsIsecIjoidSIsIseYIjoidSIsIseWIjoidSIsIseaIjoidSIsIuG7pyI6InUiLCLFryI6InUiLCLFsSI6InUiLCLHlCI6InUiLCLIlSI6InUiLCLIlyI6InUiLCLGsCI6InUiLCLhu6siOiJ1Iiwi4bupIjoidSIsIuG7ryI6InUiLCLhu60iOiJ1Iiwi4buxIjoidSIsIuG7pSI6InUiLCLhubMiOiJ1IiwixbMiOiJ1Iiwi4bm3IjoidSIsIuG5tSI6InUiLCLKiSI6InUiLCLik6UiOiJ2Iiwi772WIjoidiIsIuG5vSI6InYiLCLhub8iOiJ2IiwiyosiOiJ2Iiwi6p2fIjoidiIsIsqMIjoidiIsIuqdoSI6InZ5Iiwi4pOmIjoidyIsIu+9lyI6InciLCLhuoEiOiJ3Iiwi4bqDIjoidyIsIsW1IjoidyIsIuG6hyI6InciLCLhuoUiOiJ3Iiwi4bqYIjoidyIsIuG6iSI6InciLCLisbMiOiJ3Iiwi4pOnIjoieCIsIu+9mCI6IngiLCLhuosiOiJ4Iiwi4bqNIjoieCIsIuKTqCI6InkiLCLvvZkiOiJ5Iiwi4buzIjoieSIsIsO9IjoieSIsIsW3IjoieSIsIuG7uSI6InkiLCLIsyI6InkiLCLhuo8iOiJ5Iiwiw78iOiJ5Iiwi4bu3IjoieSIsIuG6mSI6InkiLCLhu7UiOiJ5IiwixrQiOiJ5IiwiyY8iOiJ5Iiwi4bu/IjoieSIsIuKTqSI6InoiLCLvvZoiOiJ6IiwixboiOiJ6Iiwi4bqRIjoieiIsIsW8IjoieiIsIsW+IjoieiIsIuG6kyI6InoiLCLhupUiOiJ6IiwixrYiOiJ6IiwiyKUiOiJ6IiwiyYAiOiJ6Iiwi4rGsIjoieiIsIuqdoyI6InoiLCLOhiI6Is6RIiwizogiOiLOlSIsIs6JIjoizpciLCLOiiI6Is6ZIiwizqoiOiLOmSIsIs6MIjoizp8iLCLOjiI6Is6lIiwizqsiOiLOpSIsIs6PIjoizqkiLCLOrCI6Is6xIiwizq0iOiLOtSIsIs6uIjoizrciLCLOryI6Is65Iiwiz4oiOiLOuSIsIs6QIjoizrkiLCLPjCI6Is6/Iiwiz40iOiLPhSIsIs+LIjoiz4UiLCLOsCI6Is+FIiwiz4kiOiLPiSIsIs+CIjoiz4MifTtKPXgoZG9jdW1lbnQpLEg9ZnVuY3Rpb24oKXt2YXIgeD0xO3JldHVybiBmdW5jdGlvbigpe3JldHVybiB4Kyt9fSgpLEY9RChFPUQoT2JqZWN0LHtiaW5kOmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXM7cmV0dXJuIGZ1bmN0aW9uKCl7eC5hcHBseShhLGFyZ3VtZW50cyl9fSxpbml0OmZ1bmN0aW9uKGIpe3ZhciBjLGQsZj0iLnNlbGVjdDItcmVzdWx0cyI7dGhpcy5vcHRzPWI9dGhpcy5wcmVwYXJlT3B0cyhiKSx0aGlzLmlkPWIuaWQsYi5lbGVtZW50LmRhdGEoInNlbGVjdDIiKSE9PWEmJm51bGwhPT1iLmVsZW1lbnQuZGF0YSgic2VsZWN0MiIpJiZiLmVsZW1lbnQuZGF0YSgic2VsZWN0MiIpLmRlc3Ryb3koKSx0aGlzLmNvbnRhaW5lcj10aGlzLmNyZWF0ZUNvbnRhaW5lcigpLHRoaXMubGl2ZVJlZ2lvbj14KCIuc2VsZWN0Mi1oaWRkZW4tYWNjZXNzaWJsZSIpLDA9PXRoaXMubGl2ZVJlZ2lvbi5sZW5ndGgmJih0aGlzLmxpdmVSZWdpb249eCgiPHNwYW4+Iix7cm9sZToic3RhdHVzIiwiYXJpYS1saXZlIjoicG9saXRlIn0pLmFkZENsYXNzKCJzZWxlY3QyLWhpZGRlbi1hY2Nlc3NpYmxlIikuYXBwZW5kVG8oZG9jdW1lbnQuYm9keSkpLHRoaXMuY29udGFpbmVySWQ9InMyaWRfIisoYi5lbGVtZW50LmF0dHIoImlkIil8fCJhdXRvZ2VuIitIKCkpLHRoaXMuY29udGFpbmVyRXZlbnROYW1lPXRoaXMuY29udGFpbmVySWQucmVwbGFjZSgvKFsuXSkvZywiXyIpLnJlcGxhY2UoLyhbOyYsXC1cLlwrXCpcfic6IlwhXF4jJCVAXFtcXVwoXCk9Plx8XSkvZywiXFwkMSIpLHRoaXMuY29udGFpbmVyLmF0dHIoImlkIix0aGlzLmNvbnRhaW5lcklkKSx0aGlzLmNvbnRhaW5lci5hdHRyKCJ0aXRsZSIsYi5lbGVtZW50LmF0dHIoInRpdGxlIikpLHRoaXMuYm9keT14KGRvY3VtZW50LmJvZHkpLHIodGhpcy5jb250YWluZXIsdGhpcy5vcHRzLmVsZW1lbnQsdGhpcy5vcHRzLmFkYXB0Q29udGFpbmVyQ3NzQ2xhc3MpLHRoaXMuY29udGFpbmVyLmF0dHIoInN0eWxlIixiLmVsZW1lbnQuYXR0cigic3R5bGUiKSksdGhpcy5jb250YWluZXIuY3NzKHooYi5jb250YWluZXJDc3MsdGhpcy5vcHRzLmVsZW1lbnQpKSx0aGlzLmNvbnRhaW5lci5hZGRDbGFzcyh6KGIuY29udGFpbmVyQ3NzQ2xhc3MsdGhpcy5vcHRzLmVsZW1lbnQpKSx0aGlzLmVsZW1lbnRUYWJJbmRleD10aGlzLm9wdHMuZWxlbWVudC5hdHRyKCJ0YWJpbmRleCIpLHRoaXMub3B0cy5lbGVtZW50LmRhdGEoInNlbGVjdDIiLHRoaXMpLmF0dHIoInRhYmluZGV4IiwiLTEiKS5iZWZvcmUodGhpcy5jb250YWluZXIpLm9uKCJjbGljay5zZWxlY3QyIixvKSx0aGlzLmNvbnRhaW5lci5kYXRhKCJzZWxlY3QyIix0aGlzKSx0aGlzLmRyb3Bkb3duPXRoaXMuY29udGFpbmVyLmZpbmQoIi5zZWxlY3QyLWRyb3AiKSxyKHRoaXMuZHJvcGRvd24sdGhpcy5vcHRzLmVsZW1lbnQsdGhpcy5vcHRzLmFkYXB0RHJvcGRvd25Dc3NDbGFzcyksdGhpcy5kcm9wZG93bi5hZGRDbGFzcyh6KGIuZHJvcGRvd25Dc3NDbGFzcyx0aGlzLm9wdHMuZWxlbWVudCkpLHRoaXMuZHJvcGRvd24uZGF0YSgic2VsZWN0MiIsdGhpcyksdGhpcy5kcm9wZG93bi5vbigiY2xpY2siLG8pLHRoaXMucmVzdWx0cz1jPXRoaXMuY29udGFpbmVyLmZpbmQoZiksdGhpcy5zZWFyY2g9ZD10aGlzLmNvbnRhaW5lci5maW5kKCJpbnB1dC5zZWxlY3QyLWlucHV0IiksdGhpcy5xdWVyeUNvdW50PTAsdGhpcy5yZXN1bHRzUGFnZT0wLHRoaXMuY29udGV4dD1udWxsLHRoaXMuaW5pdENvbnRhaW5lcigpLHRoaXMuY29udGFpbmVyLm9uKCJjbGljayIsbyksaih0aGlzLnJlc3VsdHMpLHRoaXMuZHJvcGRvd24ub24oIm1vdXNlbW92ZS1maWx0ZXJlZCIsZix0aGlzLmJpbmQodGhpcy5oaWdobGlnaHRVbmRlckV2ZW50KSksdGhpcy5kcm9wZG93bi5vbigidG91Y2hzdGFydCB0b3VjaG1vdmUgdG91Y2hlbmQiLGYsdGhpcy5iaW5kKGZ1bmN0aW9uKHgpe3RoaXMuX3RvdWNoRXZlbnQ9ITAsdGhpcy5oaWdobGlnaHRVbmRlckV2ZW50KHgpfSkpLHRoaXMuZHJvcGRvd24ub24oInRvdWNobW92ZSIsZix0aGlzLmJpbmQodGhpcy50b3VjaE1vdmVkKSksdGhpcy5kcm9wZG93bi5vbigidG91Y2hzdGFydCB0b3VjaGVuZCIsZix0aGlzLmJpbmQodGhpcy5jbGVhclRvdWNoTW92ZWQpKSx0aGlzLmRyb3Bkb3duLm9uKCJjbGljayIsdGhpcy5iaW5kKGZ1bmN0aW9uKCl7dGhpcy5fdG91Y2hFdmVudCYmKHRoaXMuX3RvdWNoRXZlbnQ9ITEsdGhpcy5zZWxlY3RIaWdobGlnaHRlZCgpKX0pKSxsKDgwLHRoaXMucmVzdWx0cyksdGhpcy5kcm9wZG93bi5vbigic2Nyb2xsLWRlYm91bmNlZCIsZix0aGlzLmJpbmQodGhpcy5sb2FkTW9yZUlmTmVlZGVkKSkseCh0aGlzLmNvbnRhaW5lcikub24oImNoYW5nZSIsIi5zZWxlY3QyLWlucHV0IixmdW5jdGlvbih4KXt4LnN0b3BQcm9wYWdhdGlvbigpfSkseCh0aGlzLmRyb3Bkb3duKS5vbigiY2hhbmdlIiwiLnNlbGVjdDItaW5wdXQiLGZ1bmN0aW9uKHgpe3guc3RvcFByb3BhZ2F0aW9uKCl9KSx4LmZuLm1vdXNld2hlZWwmJmMubW91c2V3aGVlbChmdW5jdGlvbih4LGEsYixkKXt2YXIgZT1jLnNjcm9sbFRvcCgpO2Q+MCYmMD49ZS1kPyhjLnNjcm9sbFRvcCgwKSxvKHgpKTowPmQmJmMuZ2V0KDApLnNjcm9sbEhlaWdodC1jLnNjcm9sbFRvcCgpK2Q8PWMuaGVpZ2h0KCkmJihjLnNjcm9sbFRvcChjLmdldCgwKS5zY3JvbGxIZWlnaHQtYy5oZWlnaHQoKSksbyh4KSl9KSxpKGQpLGQub24oImtleXVwLWNoYW5nZSBpbnB1dCBwYXN0ZSIsdGhpcy5iaW5kKHRoaXMudXBkYXRlUmVzdWx0cykpLGQub24oImZvY3VzIixmdW5jdGlvbigpe2QuYWRkQ2xhc3MoInNlbGVjdDItZm9jdXNlZCIpfSksZC5vbigiYmx1ciIsZnVuY3Rpb24oKXtkLnJlbW92ZUNsYXNzKCJzZWxlY3QyLWZvY3VzZWQiKX0pLHRoaXMuZHJvcGRvd24ub24oIm1vdXNldXAiLGYsdGhpcy5iaW5kKGZ1bmN0aW9uKGEpe3goYS50YXJnZXQpLmNsb3Nlc3QoIi5zZWxlY3QyLXJlc3VsdC1zZWxlY3RhYmxlIikubGVuZ3RoPjAmJih0aGlzLmhpZ2hsaWdodFVuZGVyRXZlbnQoYSksdGhpcy5zZWxlY3RIaWdobGlnaHRlZChhKSl9KSksdGhpcy5kcm9wZG93bi5vbigiY2xpY2sgbW91c2V1cCBtb3VzZWRvd24gdG91Y2hzdGFydCB0b3VjaGVuZCBmb2N1c2luIixmdW5jdGlvbih4KXt4LnN0b3BQcm9wYWdhdGlvbigpfSksdGhpcy5sYXN0U2VhcmNoVGVybT1hLHguaXNGdW5jdGlvbih0aGlzLm9wdHMuaW5pdFNlbGVjdGlvbikmJih0aGlzLmluaXRTZWxlY3Rpb24oKSx0aGlzLm1vbml0b3JTb3VyY2UoKSksbnVsbCE9PWIubWF4aW11bUlucHV0TGVuZ3RoJiZ0aGlzLnNlYXJjaC5hdHRyKCJtYXhsZW5ndGgiLGIubWF4aW11bUlucHV0TGVuZ3RoKTt2YXIgZz1iLmVsZW1lbnQucHJvcCgiZGlzYWJsZWQiKTtnPT09YSYmKGc9ITEpLHRoaXMuZW5hYmxlKCFnKTt2YXIgaD1iLmVsZW1lbnQucHJvcCgicmVhZG9ubHkiKTtoPT09YSYmKGg9ITEpLHRoaXMucmVhZG9ubHkoaCksSz1LfHxlKCksdGhpcy5hdXRvZm9jdXM9Yi5lbGVtZW50LnByb3AoImF1dG9mb2N1cyIpLGIuZWxlbWVudC5wcm9wKCJhdXRvZm9jdXMiLCExKSx0aGlzLmF1dG9mb2N1cyYmdGhpcy5mb2N1cygpLHRoaXMuc2VhcmNoLmF0dHIoInBsYWNlaG9sZGVyIixiLnNlYXJjaElucHV0UGxhY2Vob2xkZXIpfSxkZXN0cm95OmZ1bmN0aW9uKCl7dmFyIHg9dGhpcy5vcHRzLmVsZW1lbnQsYj14LmRhdGEoInNlbGVjdDIiKSxjPXRoaXM7dGhpcy5jbG9zZSgpLHgubGVuZ3RoJiZ4WzBdLmRldGFjaEV2ZW50JiZjLl9zeW5jJiZ4LmVhY2goZnVuY3Rpb24oKXtjLl9zeW5jJiZ0aGlzLmRldGFjaEV2ZW50KCJvbnByb3BlcnR5Y2hhbmdlIixjLl9zeW5jKX0pLHRoaXMucHJvcGVydHlPYnNlcnZlciYmKHRoaXMucHJvcGVydHlPYnNlcnZlci5kaXNjb25uZWN0KCksdGhpcy5wcm9wZXJ0eU9ic2VydmVyPW51bGwpLHRoaXMuX3N5bmM9bnVsbCxiIT09YSYmKGIuY29udGFpbmVyLnJlbW92ZSgpLGIubGl2ZVJlZ2lvbi5yZW1vdmUoKSxiLmRyb3Bkb3duLnJlbW92ZSgpLHgucmVtb3ZlRGF0YSgic2VsZWN0MiIpLm9mZigiLnNlbGVjdDIiKSx4LmlzKCJpbnB1dFt0eXBlPSdoaWRkZW4nXSIpP3guY3NzKCJkaXNwbGF5IiwiIik6KHguc2hvdygpLnByb3AoImF1dG9mb2N1cyIsdGhpcy5hdXRvZm9jdXN8fCExKSx0aGlzLmVsZW1lbnRUYWJJbmRleD94LmF0dHIoe3RhYmluZGV4OnRoaXMuZWxlbWVudFRhYkluZGV4fSk6eC5yZW1vdmVBdHRyKCJ0YWJpbmRleCIpLHguc2hvdygpKSksQy5jYWxsKHRoaXMsImNvbnRhaW5lciIsImxpdmVSZWdpb24iLCJkcm9wZG93biIsInJlc3VsdHMiLCJzZWFyY2giKX0sb3B0aW9uVG9EYXRhOmZ1bmN0aW9uKHgpe3JldHVybiB4LmlzKCJvcHRpb24iKT97aWQ6eC5wcm9wKCJ2YWx1ZSIpLHRleHQ6eC50ZXh0KCksZWxlbWVudDp4LmdldCgpLGNzczp4LmF0dHIoImNsYXNzIiksZGlzYWJsZWQ6eC5wcm9wKCJkaXNhYmxlZCIpLGxvY2tlZDpmKHguYXR0cigibG9ja2VkIiksImxvY2tlZCIpfHxmKHguZGF0YSgibG9ja2VkIiksITApfTp4LmlzKCJvcHRncm91cCIpP3t0ZXh0OnguYXR0cigibGFiZWwiKSxjaGlsZHJlbjpbXSxlbGVtZW50OnguZ2V0KCksY3NzOnguYXR0cigiY2xhc3MiKX06dm9pZCAwfSxwcmVwYXJlT3B0czpmdW5jdGlvbihiKXt2YXIgYyxkLGUsaCxpPXRoaXM7aWYoInNlbGVjdCI9PT0oYz1iLmVsZW1lbnQpLmdldCgwKS50YWdOYW1lLnRvTG93ZXJDYXNlKCkmJih0aGlzLnNlbGVjdD1kPWIuZWxlbWVudCksZCYmeC5lYWNoKFsiaWQiLCJtdWx0aXBsZSIsImFqYXgiLCJxdWVyeSIsImNyZWF0ZVNlYXJjaENob2ljZSIsImluaXRTZWxlY3Rpb24iLCJkYXRhIiwidGFncyJdLGZ1bmN0aW9uKCl7aWYodGhpcyBpbiBiKXRocm93IG5ldyBFcnJvcigiT3B0aW9uICciK3RoaXMrIicgaXMgbm90IGFsbG93ZWQgZm9yIFNlbGVjdDIgd2hlbiBhdHRhY2hlZCB0byBhIDxzZWxlY3Q+IGVsZW1lbnQuIil9KSxiLmRlYnVnPWIuZGVidWd8fHguZm4uc2VsZWN0Mi5kZWZhdWx0cy5kZWJ1ZyxiLmRlYnVnJiZjb25zb2xlJiZjb25zb2xlLndhcm4mJihudWxsIT1iLmlkJiZjb25zb2xlLndhcm4oIlNlbGVjdDI6IFRoZSBgaWRgIG9wdGlvbiBoYXMgYmVlbiByZW1vdmVkIGluIFNlbGVjdDIgNC4wLjAsIGNvbnNpZGVyIHJlbmFtaW5nIHlvdXIgYGlkYCBwcm9wZXJ0eSBvciBtYXBwaW5nIHRoZSBwcm9wZXJ0eSBiZWZvcmUgeW91ciBkYXRhIG1ha2VzIGl0IHRvIFNlbGVjdDIuIFlvdSBjYW4gcmVhZCBtb3JlIGF0IGh0dHBzOi8vc2VsZWN0Mi5naXRodWIuaW8vYW5ub3VuY2VtZW50cy00LjAuaHRtbCNjaGFuZ2VkLWlkIiksbnVsbCE9Yi50ZXh0JiZjb25zb2xlLndhcm4oIlNlbGVjdDI6IFRoZSBgdGV4dGAgb3B0aW9uIGhhcyBiZWVuIHJlbW92ZWQgaW4gU2VsZWN0MiA0LjAuMCwgY29uc2lkZXIgcmVuYW1pbmcgeW91ciBgdGV4dGAgcHJvcGVydHkgb3IgbWFwcGluZyB0aGUgcHJvcGVydHkgYmVmb3JlIHlvdXIgZGF0YSBtYWtlcyBpdCB0byBTZWxlY3QyLiBZb3UgY2FuIHJlYWQgbW9yZSBhdCBodHRwczovL3NlbGVjdDIuZ2l0aHViLmlvL2Fubm91bmNlbWVudHMtNC4wLmh0bWwjY2hhbmdlZC1pZCIpLG51bGwhPWIuc29ydFJlc3VsdHMmJmNvbnNvbGUud2FybigiU2VsZWN0MjogdGhlIGBzb3J0UmVzdWx0c2Agb3B0aW9uIGhhcyBiZWVuIHJlbmFtZWQgdG8gYHNvcnRlcmAgaW4gU2VsZWN0MiA0LjAuMC4gIiksbnVsbCE9Yi5zZWxlY3RPbkJsdXImJmNvbnNvbGUud2FybigiU2VsZWN0MjogVGhlIGBzZWxlY3RPbkJsdXJgIG9wdGlvbiBoYXMgYmVlbiByZW5hbWVkIHRvIGBzZWxlY3RPbkNsb3NlYCBpbiBTZWxlY3QyIDQuMC4wLiIpLG51bGwhPWIuYWpheCYmbnVsbCE9Yi5hamF4LnJlc3VsdHMmJmNvbnNvbGUud2FybigiU2VsZWN0MjogVGhlIGBhamF4LnJlc3VsdHNgIG9wdGlvbiBoYXMgYmVlbiByZW5hbWVkIHRvIGBhamF4LnByb2Nlc3NSZXN1bHRzYCBpbiBTZWxlY3QyIDQuMC4wLiIpLG51bGwhPWIuZm9ybWF0Tm9SZXN1bHRzJiZjb25zb2xlLndhcm4oIlNlbGVjdDI6IFRoZSBgZm9ybWF0Tm9SZXN1bHRzYCBvcHRpb24gaGFzIGJlZW4gcmVuYW1lZCB0byBgbGFuZ3VhZ2Uubm9SZXN1bHRzYCBpbiBTZWxlY3QyIDQuMC4wLiIpLG51bGwhPWIuZm9ybWF0U2VhcmNoaW5nJiZjb25zb2xlLndhcm4oIlNlbGVjdDI6IFRoZSBgZm9ybWF0U2VhcmNoaW5nYCBvcHRpb24gaGFzIGJlZW4gcmVuYW1lZCB0byBgbGFuZ3VhZ2Uuc2VhcmNoaW5nYCBpbiBTZWxlY3QyIDQuMC4wLiIpLG51bGwhPWIuZm9ybWF0SW5wdXRUb29TaG9ydCYmY29uc29sZS53YXJuKCJTZWxlY3QyOiBUaGUgYGZvcm1hdElucHV0VG9vU2hvcnRgIG9wdGlvbiBoYXMgYmVlbiByZW5hbWVkIHRvIGBsYW5ndWFnZS5pbnB1dFRvb1Nob3J0YCBpbiBTZWxlY3QyIDQuMC4wLiIpLG51bGwhPWIuZm9ybWF0SW5wdXRUb29Mb25nJiZjb25zb2xlLndhcm4oIlNlbGVjdDI6IFRoZSBgZm9ybWF0SW5wdXRUb29Mb25nYCBvcHRpb24gaGFzIGJlZW4gcmVuYW1lZCB0byBgbGFuZ3VhZ2UuaW5wdXRUb29Mb25nYCBpbiBTZWxlY3QyIDQuMC4wLiIpLG51bGwhPWIuZm9ybWF0TG9hZGluZyYmY29uc29sZS53YXJuKCJTZWxlY3QyOiBUaGUgYGZvcm1hdExvYWRpbmdgIG9wdGlvbiBoYXMgYmVlbiByZW5hbWVkIHRvIGBsYW5ndWFnZS5sb2FkaW5nTW9yZWAgaW4gU2VsZWN0MiA0LjAuMC4iKSxudWxsIT1iLmZvcm1hdFNlbGVjdGlvblRvb0JpZyYmY29uc29sZS53YXJuKCJTZWxlY3QyOiBUaGUgYGZvcm1hdFNlbGVjdGlvblRvb0JpZ2Agb3B0aW9uIGhhcyBiZWVuIHJlbmFtZWQgdG8gYGxhbmd1YWdlLm1heGltdW1TZWxlY3RlZGAgaW4gU2VsZWN0MiA0LjAuMC4iKSxiLmVsZW1lbnQuZGF0YSgic2VsZWN0MlRhZ3MiKSYmY29uc29sZS53YXJuKCJTZWxlY3QyOiBUaGUgYGRhdGEtc2VsZWN0Mi10YWdzYCBhdHRyaWJ1dGUgaGFzIGJlZW4gcmVuYW1lZCB0byBgZGF0YS10YWdzYCBpbiBTZWxlY3QyIDQuMC4wLiIpKSxudWxsIT1iLmVsZW1lbnQuZGF0YSgidGFncyIpKXt2YXIgaj1iLmVsZW1lbnQuZGF0YSgidGFncyIpO3guaXNBcnJheShqKXx8KGo9W10pLGIuZWxlbWVudC5kYXRhKCJzZWxlY3QyVGFncyIsail9aWYobnVsbCE9Yi5zb3J0ZXImJihiLnNvcnRSZXN1bHRzPWIuc29ydGVyKSxudWxsIT1iLnNlbGVjdE9uQ2xvc2UmJihiLnNlbGVjdE9uQmx1cj1iLnNlbGVjdE9uQ2xvc2UpLG51bGwhPWIuYWpheCYmeC5pc0Z1bmN0aW9uKGIuYWpheC5wcm9jZXNzUmVzdWx0cykmJihiLmFqYXgucmVzdWx0cz1iLmFqYXgucHJvY2Vzc1Jlc3VsdHMpLG51bGwhPWIubGFuZ3VhZ2Upe3ZhciBrPWIubGFuZ3VhZ2U7eC5pc0Z1bmN0aW9uKGsubm9NYXRjaGVzKSYmKGIuZm9ybWF0Tm9NYXRjaGVzPWsubm9NYXRjaGVzKSx4LmlzRnVuY3Rpb24oay5zZWFyY2hpbmcpJiYoYi5mb3JtYXRTZWFyY2hpbmc9ay5zZWFyY2hpbmcpLHguaXNGdW5jdGlvbihrLmlucHV0VG9vU2hvcnQpJiYoYi5mb3JtYXRJbnB1dFRvb1Nob3J0PWsuaW5wdXRUb29TaG9ydCkseC5pc0Z1bmN0aW9uKGsuaW5wdXRUb29Mb25nKSYmKGIuZm9ybWF0SW5wdXRUb29Mb25nPWsuaW5wdXRUb29Mb25nKSx4LmlzRnVuY3Rpb24oay5sb2FkaW5nTW9yZSkmJihiLmZvcm1hdExvYWRpbmc9ay5sb2FkaW5nTW9yZSkseC5pc0Z1bmN0aW9uKGsubWF4aW11bVNlbGVjdGVkKSYmKGIuZm9ybWF0U2VsZWN0aW9uVG9vQmlnPWsubWF4aW11bVNlbGVjdGVkKX1pZigiZnVuY3Rpb24iIT10eXBlb2YoYj14LmV4dGVuZCh7fSx7cG9wdWxhdGVSZXN1bHRzOmZ1bmN0aW9uKGMsZCxlKXt2YXIgZixnPXRoaXMub3B0cy5pZCxoPXRoaXMubGl2ZVJlZ2lvbjsoZj1mdW5jdGlvbihjLGQsail7dmFyIGssbCxtLG4sbyxwLHEscixzLHQsdT1bXTtmb3Ioaz0wLGw9KGM9Yi5zb3J0UmVzdWx0cyhjLGQsZSkpLmxlbmd0aDtsPms7ays9MSluPSEobz0hMD09PShtPWNba10pLmRpc2FibGVkKSYmZyhtKSE9PWEscD1tLmNoaWxkcmVuJiZtLmNoaWxkcmVuLmxlbmd0aD4wLChxPXgoIjxsaT48L2xpPiIpKS5hZGRDbGFzcygic2VsZWN0Mi1yZXN1bHRzLWRlcHQtIitqKSxxLmFkZENsYXNzKCJzZWxlY3QyLXJlc3VsdCIpLHEuYWRkQ2xhc3Mobj8ic2VsZWN0Mi1yZXN1bHQtc2VsZWN0YWJsZSI6InNlbGVjdDItcmVzdWx0LXVuc2VsZWN0YWJsZSIpLG8mJnEuYWRkQ2xhc3MoInNlbGVjdDItZGlzYWJsZWQiKSxwJiZxLmFkZENsYXNzKCJzZWxlY3QyLXJlc3VsdC13aXRoLWNoaWxkcmVuIikscS5hZGRDbGFzcyhpLm9wdHMuZm9ybWF0UmVzdWx0Q3NzQ2xhc3MobSkpLHEuYXR0cigicm9sZSIsInByZXNlbnRhdGlvbiIpLChyPXgoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpKS5hZGRDbGFzcygic2VsZWN0Mi1yZXN1bHQtbGFiZWwiKSxyLmF0dHIoImlkIiwic2VsZWN0Mi1yZXN1bHQtbGFiZWwtIitIKCkpLHIuYXR0cigicm9sZSIsIm9wdGlvbiIpLCh0PWIuZm9ybWF0UmVzdWx0KG0scixlLGkub3B0cy5lc2NhcGVNYXJrdXApKSE9PWEmJihyLmh0bWwodCkscS5hcHBlbmQocikpLHAmJigocz14KCI8dWw+PC91bD4iKSkuYWRkQ2xhc3MoInNlbGVjdDItcmVzdWx0LXN1YiIpLGYobS5jaGlsZHJlbixzLGorMSkscS5hcHBlbmQocykpLHEuZGF0YSgic2VsZWN0Mi1kYXRhIixtKSx1LnB1c2gocVswXSk7ZC5hcHBlbmQodSksaC50ZXh0KGIuZm9ybWF0TWF0Y2hlcyhjLmxlbmd0aCkpfSkoZCxjLDApfX0seC5mbi5zZWxlY3QyLmRlZmF1bHRzLGIpKS5pZCYmKGU9Yi5pZCxiLmlkPWZ1bmN0aW9uKHgpe3JldHVybiB4W2VdfSkseC5pc0FycmF5KGIuZWxlbWVudC5kYXRhKCJzZWxlY3QyVGFncyIpKSl7aWYoInRhZ3MiaW4gYil0aHJvdyJ0YWdzIHNwZWNpZmllZCBhcyBib3RoIGFuIGF0dHJpYnV0ZSAnZGF0YS1zZWxlY3QyLXRhZ3MnIGFuZCBpbiBvcHRpb25zIG9mIFNlbGVjdDIgIitiLmVsZW1lbnQuYXR0cigiaWQiKTtiLnRhZ3M9Yi5lbGVtZW50LmRhdGEoInNlbGVjdDJUYWdzIil9aWYoZD8oYi5xdWVyeT10aGlzLmJpbmQoZnVuY3Rpb24oeCl7dmFyIGIsZCxlLGY9e3Jlc3VsdHM6W10sbW9yZTohMX0sZz14LnRlcm07ZT1mdW5jdGlvbihhLGIpe3ZhciBjO2EuaXMoIm9wdGlvbiIpP3gubWF0Y2hlcihnLGEudGV4dCgpLGEpJiZiLnB1c2goaS5vcHRpb25Ub0RhdGEoYSkpOmEuaXMoIm9wdGdyb3VwIikmJihjPWkub3B0aW9uVG9EYXRhKGEpLGEuY2hpbGRyZW4oKS5lYWNoMihmdW5jdGlvbih4LGEpe2UoYSxjLmNoaWxkcmVuKX0pLGMuY2hpbGRyZW4ubGVuZ3RoPjAmJmIucHVzaChjKSl9LGI9Yy5jaGlsZHJlbigpLHRoaXMuZ2V0UGxhY2Vob2xkZXIoKSE9PWEmJmIubGVuZ3RoPjAmJigoZD10aGlzLmdldFBsYWNlaG9sZGVyT3B0aW9uKCkpJiYoYj1iLm5vdChkKSkpLGIuZWFjaDIoZnVuY3Rpb24oeCxhKXtlKGEsZi5yZXN1bHRzKX0pLHguY2FsbGJhY2soZil9KSxiLmlkPWZ1bmN0aW9uKHgpe3JldHVybiB4LmlkfSk6InF1ZXJ5ImluIGJ8fCgiYWpheCJpbiBiPygoaD1iLmVsZW1lbnQuZGF0YSgiYWpheC11cmwiKSkmJmgubGVuZ3RoPjAmJihiLmFqYXgudXJsPWgpLGIucXVlcnk9dS5jYWxsKGIuZWxlbWVudCxiLmFqYXgpKToiZGF0YSJpbiBiP2IucXVlcnk9dihiLmRhdGEpOiJ0YWdzImluIGImJihiLnF1ZXJ5PXcoYi50YWdzKSxiLmNyZWF0ZVNlYXJjaENob2ljZT09PWEmJihiLmNyZWF0ZVNlYXJjaENob2ljZT1mdW5jdGlvbihhKXtyZXR1cm57aWQ6eC50cmltKGEpLHRleHQ6eC50cmltKGEpfX0pLGIuaW5pdFNlbGVjdGlvbj09PWEmJihiLmluaXRTZWxlY3Rpb249ZnVuY3Rpb24oYSxjKXt2YXIgZD1bXTt4KGcoYS52YWwoKSxiLnNlcGFyYXRvcixiLnRyYW5zZm9ybVZhbCkpLmVhY2goZnVuY3Rpb24oKXt2YXIgYT17aWQ6dGhpcyx0ZXh0OnRoaXN9LGM9Yi50YWdzO3guaXNGdW5jdGlvbihjKSYmKGM9YygpKSx4KGMpLmVhY2goZnVuY3Rpb24oKXtyZXR1cm4gZih0aGlzLmlkLGEuaWQpPyhhPXRoaXMsITEpOnZvaWQgMH0pLGQucHVzaChhKX0pLGMoZCl9KSkpLCJmdW5jdGlvbiIhPXR5cGVvZiBiLnF1ZXJ5KXRocm93InF1ZXJ5IGZ1bmN0aW9uIG5vdCBkZWZpbmVkIGZvciBTZWxlY3QyICIrYi5lbGVtZW50LmF0dHIoImlkIik7aWYoInRvcCI9PT1iLmNyZWF0ZVNlYXJjaENob2ljZVBvc2l0aW9uKWIuY3JlYXRlU2VhcmNoQ2hvaWNlUG9zaXRpb249ZnVuY3Rpb24oeCxhKXt4LnVuc2hpZnQoYSl9O2Vsc2UgaWYoImJvdHRvbSI9PT1iLmNyZWF0ZVNlYXJjaENob2ljZVBvc2l0aW9uKWIuY3JlYXRlU2VhcmNoQ2hvaWNlUG9zaXRpb249ZnVuY3Rpb24oeCxhKXt4LnB1c2goYSl9O2Vsc2UgaWYoImZ1bmN0aW9uIiE9dHlwZW9mIGIuY3JlYXRlU2VhcmNoQ2hvaWNlUG9zaXRpb24pdGhyb3ciaW52YWxpZCBjcmVhdGVTZWFyY2hDaG9pY2VQb3NpdGlvbiBvcHRpb24gbXVzdCBiZSAndG9wJywgJ2JvdHRvbScgb3IgYSBjdXN0b20gZnVuY3Rpb24iO3JldHVybiBifSxtb25pdG9yU291cmNlOmZ1bmN0aW9uKCl7dmFyIGIsYz10aGlzLm9wdHMuZWxlbWVudCxkPXRoaXM7Yy5vbigiY2hhbmdlLnNlbGVjdDIiLHRoaXMuYmluZChmdW5jdGlvbigpeyEwIT09dGhpcy5vcHRzLmVsZW1lbnQuZGF0YSgic2VsZWN0Mi1jaGFuZ2UtdHJpZ2dlcmVkIikmJnRoaXMuaW5pdFNlbGVjdGlvbigpfSkpLHRoaXMuX3N5bmM9dGhpcy5iaW5kKGZ1bmN0aW9uKCl7dmFyIHg9Yy5wcm9wKCJkaXNhYmxlZCIpO3g9PT1hJiYoeD0hMSksdGhpcy5lbmFibGUoIXgpO3ZhciBiPWMucHJvcCgicmVhZG9ubHkiKTtiPT09YSYmKGI9ITEpLHRoaXMucmVhZG9ubHkoYiksdGhpcy5jb250YWluZXImJihyKHRoaXMuY29udGFpbmVyLHRoaXMub3B0cy5lbGVtZW50LHRoaXMub3B0cy5hZGFwdENvbnRhaW5lckNzc0NsYXNzKSx0aGlzLmNvbnRhaW5lci5hZGRDbGFzcyh6KHRoaXMub3B0cy5jb250YWluZXJDc3NDbGFzcyx0aGlzLm9wdHMuZWxlbWVudCkpKSx0aGlzLmRyb3Bkb3duJiYocih0aGlzLmRyb3Bkb3duLHRoaXMub3B0cy5lbGVtZW50LHRoaXMub3B0cy5hZGFwdERyb3Bkb3duQ3NzQ2xhc3MpLHRoaXMuZHJvcGRvd24uYWRkQ2xhc3Moeih0aGlzLm9wdHMuZHJvcGRvd25Dc3NDbGFzcyx0aGlzLm9wdHMuZWxlbWVudCkpKX0pLGMubGVuZ3RoJiZjWzBdLmF0dGFjaEV2ZW50JiZjLmVhY2goZnVuY3Rpb24oKXt0aGlzLmF0dGFjaEV2ZW50KCJvbnByb3BlcnR5Y2hhbmdlIixkLl9zeW5jKX0pLChiPXdpbmRvdy5NdXRhdGlvbk9ic2VydmVyfHx3aW5kb3cuV2ViS2l0TXV0YXRpb25PYnNlcnZlcnx8d2luZG93Lk1vek11dGF0aW9uT2JzZXJ2ZXIpIT09YSYmKHRoaXMucHJvcGVydHlPYnNlcnZlciYmKGRlbGV0ZSB0aGlzLnByb3BlcnR5T2JzZXJ2ZXIsdGhpcy5wcm9wZXJ0eU9ic2VydmVyPW51bGwpLHRoaXMucHJvcGVydHlPYnNlcnZlcj1uZXcgYihmdW5jdGlvbihhKXt4LmVhY2goYSxkLl9zeW5jKX0pLHRoaXMucHJvcGVydHlPYnNlcnZlci5vYnNlcnZlKGMuZ2V0KDApLHthdHRyaWJ1dGVzOiEwLHN1YnRyZWU6ITF9KSl9LHRyaWdnZXJTZWxlY3Q6ZnVuY3Rpb24oYSl7dmFyIGI9eC5FdmVudCgic2VsZWN0Mi1zZWxlY3RpbmciLHt2YWw6dGhpcy5pZChhKSxvYmplY3Q6YSxjaG9pY2U6YX0pO3JldHVybiB0aGlzLm9wdHMuZWxlbWVudC50cmlnZ2VyKGIpLCFiLmlzRGVmYXVsdFByZXZlbnRlZCgpfSx0cmlnZ2VyQ2hhbmdlOmZ1bmN0aW9uKGEpe2E9YXx8e30sYT14LmV4dGVuZCh7fSxhLHt0eXBlOiJjaGFuZ2UiLHZhbDp0aGlzLnZhbCgpfSksdGhpcy5vcHRzLmVsZW1lbnQuZGF0YSgic2VsZWN0Mi1jaGFuZ2UtdHJpZ2dlcmVkIiwhMCksdGhpcy5vcHRzLmVsZW1lbnQudHJpZ2dlcihhKSx0aGlzLm9wdHMuZWxlbWVudC5kYXRhKCJzZWxlY3QyLWNoYW5nZS10cmlnZ2VyZWQiLCExKSx0aGlzLm9wdHMuZWxlbWVudC5jbGljaygpLHRoaXMub3B0cy5ibHVyT25DaGFuZ2UmJnRoaXMub3B0cy5lbGVtZW50LmJsdXIoKX0saXNJbnRlcmZhY2VFbmFibGVkOmZ1bmN0aW9uKCl7cmV0dXJuITA9PT10aGlzLmVuYWJsZWRJbnRlcmZhY2V9LGVuYWJsZUludGVyZmFjZTpmdW5jdGlvbigpe3ZhciB4PXRoaXMuX2VuYWJsZWQmJiF0aGlzLl9yZWFkb25seSxhPSF4O3JldHVybiB4IT09dGhpcy5lbmFibGVkSW50ZXJmYWNlJiYodGhpcy5jb250YWluZXIudG9nZ2xlQ2xhc3MoInNlbGVjdDItY29udGFpbmVyLWRpc2FibGVkIixhKSx0aGlzLmNsb3NlKCksdGhpcy5lbmFibGVkSW50ZXJmYWNlPXgsITApfSxlbmFibGU6ZnVuY3Rpb24oeCl7eD09PWEmJih4PSEwKSx0aGlzLl9lbmFibGVkIT09eCYmKHRoaXMuX2VuYWJsZWQ9eCx0aGlzLm9wdHMuZWxlbWVudC5wcm9wKCJkaXNhYmxlZCIsIXgpLHRoaXMuZW5hYmxlSW50ZXJmYWNlKCkpfSxkaXNhYmxlOmZ1bmN0aW9uKCl7dGhpcy5lbmFibGUoITEpfSxyZWFkb25seTpmdW5jdGlvbih4KXt4PT09YSYmKHg9ITEpLHRoaXMuX3JlYWRvbmx5IT09eCYmKHRoaXMuX3JlYWRvbmx5PXgsdGhpcy5vcHRzLmVsZW1lbnQucHJvcCgicmVhZG9ubHkiLHgpLHRoaXMuZW5hYmxlSW50ZXJmYWNlKCkpfSxvcGVuZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuY29udGFpbmVyJiZ0aGlzLmNvbnRhaW5lci5oYXNDbGFzcygic2VsZWN0Mi1kcm9wZG93bi1vcGVuIil9LHBvc2l0aW9uRHJvcGRvd246ZnVuY3Rpb24oKXt2YXIgYSxiLGMsZCxlLGY9dGhpcy5kcm9wZG93bixnPXRoaXMuY29udGFpbmVyLGg9Zy5vZmZzZXQoKSxpPWcub3V0ZXJIZWlnaHQoITEpLGo9Zy5vdXRlcldpZHRoKCExKSxrPWYub3V0ZXJIZWlnaHQoITEpLGw9eCh3aW5kb3cpLG09bC53aWR0aCgpLG49bC5oZWlnaHQoKSxvPWwuc2Nyb2xsTGVmdCgpK20scD1sLnNjcm9sbFRvcCgpK24scT1oLnRvcCtpLHI9aC5sZWZ0LHM9cD49cStrLHQ9aC50b3Ataz49bC5zY3JvbGxUb3AoKSx1PWYub3V0ZXJXaWR0aCghMSksdj1mdW5jdGlvbigpe3JldHVybiBvPj1yK3V9LHc9ZnVuY3Rpb24oKXtyZXR1cm4gaC5sZWZ0K28rZy5vdXRlcldpZHRoKCExKT51fTtmLmhhc0NsYXNzKCJzZWxlY3QyLWRyb3AtYWJvdmUiKT8oYj0hMCwhdCYmcyYmKGM9ITAsYj0hMSkpOihiPSExLCFzJiZ0JiYoYz0hMCxiPSEwKSksYyYmKGYuaGlkZSgpLGg9dGhpcy5jb250YWluZXIub2Zmc2V0KCksaT10aGlzLmNvbnRhaW5lci5vdXRlckhlaWdodCghMSksaj10aGlzLmNvbnRhaW5lci5vdXRlcldpZHRoKCExKSxrPWYub3V0ZXJIZWlnaHQoITEpLG89bC5zY3JvbGxMZWZ0KCkrbSxwPWwuc2Nyb2xsVG9wKCkrbixxPWgudG9wK2kscj1oLmxlZnQsdT1mLm91dGVyV2lkdGgoITEpLGYuc2hvdygpLHRoaXMuZm9jdXNTZWFyY2goKSksdGhpcy5vcHRzLmRyb3Bkb3duQXV0b1dpZHRoPyhlPXgoIi5zZWxlY3QyLXJlc3VsdHMiLGYpWzBdLGYuYWRkQ2xhc3MoInNlbGVjdDItZHJvcC1hdXRvLXdpZHRoIiksZi5jc3MoIndpZHRoIiwiIiksKHU9Zi5vdXRlcldpZHRoKCExKSsoZS5zY3JvbGxIZWlnaHQ9PT1lLmNsaWVudEhlaWdodD8wOksud2lkdGgpKT5qP2o9dTp1PWosaz1mLm91dGVySGVpZ2h0KCExKSk6dGhpcy5jb250YWluZXIucmVtb3ZlQ2xhc3MoInNlbGVjdDItZHJvcC1hdXRvLXdpZHRoIiksInN0YXRpYyIhPT10aGlzLmJvZHkuY3NzKCJwb3NpdGlvbiIpJiYocS09KGE9dGhpcy5ib2R5Lm9mZnNldCgpKS50b3Asci09YS5sZWZ0KSwhdigpJiZ3KCkmJihyPWgubGVmdCt0aGlzLmNvbnRhaW5lci5vdXRlcldpZHRoKCExKS11KSxkPXtsZWZ0OnIsd2lkdGg6an0sYj8odGhpcy5jb250YWluZXIuYWRkQ2xhc3MoInNlbGVjdDItZHJvcC1hYm92ZSIpLGYuYWRkQ2xhc3MoInNlbGVjdDItZHJvcC1hYm92ZSIpLGs9Zi5vdXRlckhlaWdodCghMSksZC50b3A9aC50b3AtayxkLmJvdHRvbT0iYXV0byIpOihkLnRvcD1xLGQuYm90dG9tPSJhdXRvIix0aGlzLmNvbnRhaW5lci5yZW1vdmVDbGFzcygic2VsZWN0Mi1kcm9wLWFib3ZlIiksZi5yZW1vdmVDbGFzcygic2VsZWN0Mi1kcm9wLWFib3ZlIikpLGQ9eC5leHRlbmQoZCx6KHRoaXMub3B0cy5kcm9wZG93bkNzcyx0aGlzLm9wdHMuZWxlbWVudCkpLGYuY3NzKGQpfSxzaG91bGRPcGVuOmZ1bmN0aW9uKCl7dmFyIGE7cmV0dXJuIXRoaXMub3BlbmVkKCkmJighMSE9PXRoaXMuX2VuYWJsZWQmJiEwIT09dGhpcy5fcmVhZG9ubHkmJihhPXguRXZlbnQoInNlbGVjdDItb3BlbmluZyIpLHRoaXMub3B0cy5lbGVtZW50LnRyaWdnZXIoYSksIWEuaXNEZWZhdWx0UHJldmVudGVkKCkpKX0sY2xlYXJEcm9wZG93bkFsaWdubWVudFByZWZlcmVuY2U6ZnVuY3Rpb24oKXt0aGlzLmNvbnRhaW5lci5yZW1vdmVDbGFzcygic2VsZWN0Mi1kcm9wLWFib3ZlIiksdGhpcy5kcm9wZG93bi5yZW1vdmVDbGFzcygic2VsZWN0Mi1kcm9wLWFib3ZlIil9LG9wZW46ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuc2hvdWxkT3BlbigpJiYodGhpcy5vcGVuaW5nKCksSi5vbigibW91c2Vtb3ZlLnNlbGVjdDJFdmVudCIsZnVuY3Rpb24oeCl7TC54PXgucGFnZVgsTC55PXgucGFnZVl9KSwhMCl9LG9wZW5pbmc6ZnVuY3Rpb24oKXt2YXIgYSxjPXRoaXMuY29udGFpbmVyRXZlbnROYW1lLGQ9InNjcm9sbC4iK2MsZT0icmVzaXplLiIrYyxmPSJvcmllbnRhdGlvbmNoYW5nZS4iK2M7dGhpcy5jb250YWluZXIuYWRkQ2xhc3MoInNlbGVjdDItZHJvcGRvd24tb3BlbiIpLmFkZENsYXNzKCJzZWxlY3QyLWNvbnRhaW5lci1hY3RpdmUiKSx0aGlzLmNsZWFyRHJvcGRvd25BbGlnbm1lbnRQcmVmZXJlbmNlKCksdGhpcy5kcm9wZG93blswXSE9PXRoaXMuYm9keS5jaGlsZHJlbigpLmxhc3QoKVswXSYmdGhpcy5kcm9wZG93bi5kZXRhY2goKS5hcHBlbmRUbyh0aGlzLmJvZHkpLDA9PT0oYT14KCIjc2VsZWN0Mi1kcm9wLW1hc2siKSkubGVuZ3RoJiYoKGE9eChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSkpLmF0dHIoImlkIiwic2VsZWN0Mi1kcm9wLW1hc2siKS5hdHRyKCJjbGFzcyIsInNlbGVjdDItZHJvcC1tYXNrIiksYS5oaWRlKCksYS5hcHBlbmRUbyh0aGlzLmJvZHkpLGEub24oIm1vdXNlZG93biB0b3VjaHN0YXJ0IGNsaWNrIixmdW5jdGlvbihjKXtiKGEpO3ZhciBkLGU9eCgiI3NlbGVjdDItZHJvcCIpO2UubGVuZ3RoPjAmJigoZD1lLmRhdGEoInNlbGVjdDIiKSkub3B0cy5zZWxlY3RPbkJsdXImJmQuc2VsZWN0SGlnaGxpZ2h0ZWQoe25vRm9jdXM6ITB9KSxkLmNsb3NlKCksYy5wcmV2ZW50RGVmYXVsdCgpLGMuc3RvcFByb3BhZ2F0aW9uKCkpfSkpLHRoaXMuZHJvcGRvd24ucHJldigpWzBdIT09YVswXSYmdGhpcy5kcm9wZG93bi5iZWZvcmUoYSkseCgiI3NlbGVjdDItZHJvcCIpLnJlbW92ZUF0dHIoImlkIiksdGhpcy5kcm9wZG93bi5hdHRyKCJpZCIsInNlbGVjdDItZHJvcCIpLGEuc2hvdygpLHRoaXMucG9zaXRpb25Ecm9wZG93bigpLHRoaXMuZHJvcGRvd24uc2hvdygpLHRoaXMucG9zaXRpb25Ecm9wZG93bigpLHRoaXMuZHJvcGRvd24uYWRkQ2xhc3MoInNlbGVjdDItZHJvcC1hY3RpdmUiKTt2YXIgZz10aGlzO3RoaXMuY29udGFpbmVyLnBhcmVudHMoKS5hZGQod2luZG93KS5lYWNoKGZ1bmN0aW9uKCl7eCh0aGlzKS5vbihlKyIgIitkKyIgIitmLGZ1bmN0aW9uKCl7Zy5vcGVuZWQoKSYmZy5wb3NpdGlvbkRyb3Bkb3duKCl9KX0pfSxjbG9zZTpmdW5jdGlvbigpe2lmKHRoaXMub3BlbmVkKCkpe3ZhciBhPXRoaXMuY29udGFpbmVyRXZlbnROYW1lLGI9InNjcm9sbC4iK2EsYz0icmVzaXplLiIrYSxkPSJvcmllbnRhdGlvbmNoYW5nZS4iK2E7dGhpcy5jb250YWluZXIucGFyZW50cygpLmFkZCh3aW5kb3cpLmVhY2goZnVuY3Rpb24oKXt4KHRoaXMpLm9mZihiKS5vZmYoYykub2ZmKGQpfSksdGhpcy5jbGVhckRyb3Bkb3duQWxpZ25tZW50UHJlZmVyZW5jZSgpLHgoIiNzZWxlY3QyLWRyb3AtbWFzayIpLmhpZGUoKSx0aGlzLmRyb3Bkb3duLnJlbW92ZUF0dHIoImlkIiksdGhpcy5kcm9wZG93bi5oaWRlKCksdGhpcy5jb250YWluZXIucmVtb3ZlQ2xhc3MoInNlbGVjdDItZHJvcGRvd24tb3BlbiIpLnJlbW92ZUNsYXNzKCJzZWxlY3QyLWNvbnRhaW5lci1hY3RpdmUiKSx0aGlzLnJlc3VsdHMuZW1wdHkoKSxKLm9mZigibW91c2Vtb3ZlLnNlbGVjdDJFdmVudCIpLHRoaXMuY2xlYXJTZWFyY2goKSx0aGlzLnNlYXJjaC5yZW1vdmVDbGFzcygic2VsZWN0Mi1hY3RpdmUiKSx0aGlzLnNlYXJjaC5yZW1vdmVBdHRyKCJhcmlhLWFjdGl2ZWRlc2NlbmRhbnQiKSx0aGlzLm9wdHMuZWxlbWVudC50cmlnZ2VyKHguRXZlbnQoInNlbGVjdDItY2xvc2UiKSl9fSxleHRlcm5hbFNlYXJjaDpmdW5jdGlvbih4KXt0aGlzLm9wZW4oKSx0aGlzLnNlYXJjaC52YWwoeCksdGhpcy51cGRhdGVSZXN1bHRzKCExKX0sY2xlYXJTZWFyY2g6ZnVuY3Rpb24oKXt9LHByZWZpbGxOZXh0U2VhcmNoVGVybTpmdW5jdGlvbigpe2lmKCIiIT09dGhpcy5zZWFyY2gudmFsKCkpcmV0dXJuITE7dmFyIHg9dGhpcy5vcHRzLm5leHRTZWFyY2hUZXJtKHRoaXMuZGF0YSgpLHRoaXMubGFzdFNlYXJjaFRlcm0pO3JldHVybiB4IT09YSYmKHRoaXMuc2VhcmNoLnZhbCh4KSx0aGlzLnNlYXJjaC5zZWxlY3QoKSwhMCl9LGdldE1heGltdW1TZWxlY3Rpb25TaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHoodGhpcy5vcHRzLm1heGltdW1TZWxlY3Rpb25TaXplLHRoaXMub3B0cy5lbGVtZW50KX0sZW5zdXJlSGlnaGxpZ2h0VmlzaWJsZTpmdW5jdGlvbigpe3ZhciBhLGIsYyxkLGUsZixnLGgsaT10aGlzLnJlc3VsdHM7aWYoISgwPihiPXRoaXMuaGlnaGxpZ2h0KCkpKSl7aWYoMD09YilyZXR1cm4gaS5zY3JvbGxUb3AoMCksdm9pZCAwO2E9dGhpcy5maW5kSGlnaGxpZ2h0YWJsZUNob2ljZXMoKS5maW5kKCIuc2VsZWN0Mi1yZXN1bHQtbGFiZWwiKSxkPShoPSgoYz14KGFbYl0pKS5vZmZzZXQoKXx8e30pLnRvcHx8MCkrYy5vdXRlckhlaWdodCghMCksYj09PWEubGVuZ3RoLTEmJigoZz1pLmZpbmQoImxpLnNlbGVjdDItbW9yZS1yZXN1bHRzIikpLmxlbmd0aD4wJiYoZD1nLm9mZnNldCgpLnRvcCtnLm91dGVySGVpZ2h0KCEwKSkpLGQ+KGU9aS5vZmZzZXQoKS50b3AraS5vdXRlckhlaWdodCghMSkpJiZpLnNjcm9sbFRvcChpLnNjcm9sbFRvcCgpKyhkLWUpKSwwPihmPWgtaS5vZmZzZXQoKS50b3ApJiYibm9uZSIhPWMuY3NzKCJkaXNwbGF5IikmJmkuc2Nyb2xsVG9wKGkuc2Nyb2xsVG9wKCkrZil9fSxmaW5kSGlnaGxpZ2h0YWJsZUNob2ljZXM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZXN1bHRzLmZpbmQoIi5zZWxlY3QyLXJlc3VsdC1zZWxlY3RhYmxlOm5vdCguc2VsZWN0Mi1kaXNhYmxlZCk6bm90KC5zZWxlY3QyLXNlbGVjdGVkKSIpfSxtb3ZlSGlnaGxpZ2h0OmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj10aGlzLmZpbmRIaWdobGlnaHRhYmxlQ2hvaWNlcygpLGM9dGhpcy5oaWdobGlnaHQoKTtjPi0xJiZjPGIubGVuZ3RoOyl7dmFyIGQ9eChiW2MrPWFdKTtpZihkLmhhc0NsYXNzKCJzZWxlY3QyLXJlc3VsdC1zZWxlY3RhYmxlIikmJiFkLmhhc0NsYXNzKCJzZWxlY3QyLWRpc2FibGVkIikmJiFkLmhhc0NsYXNzKCJzZWxlY3QyLXNlbGVjdGVkIikpe3RoaXMuaGlnaGxpZ2h0KGMpO2JyZWFrfX19LGhpZ2hsaWdodDpmdW5jdGlvbihhKXt2YXIgYixjLGU9dGhpcy5maW5kSGlnaGxpZ2h0YWJsZUNob2ljZXMoKTtyZXR1cm4gMD09PWFyZ3VtZW50cy5sZW5ndGg/ZChlLmZpbHRlcigiLnNlbGVjdDItaGlnaGxpZ2h0ZWQiKVswXSxlLmdldCgpKTooYT49ZS5sZW5ndGgmJihhPWUubGVuZ3RoLTEpLDA+YSYmKGE9MCksdGhpcy5yZW1vdmVIaWdobGlnaHQoKSwoYj14KGVbYV0pKS5hZGRDbGFzcygic2VsZWN0Mi1oaWdobGlnaHRlZCIpLHRoaXMuc2VhcmNoLmF0dHIoImFyaWEtYWN0aXZlZGVzY2VuZGFudCIsYi5maW5kKCIuc2VsZWN0Mi1yZXN1bHQtbGFiZWwiKS5hdHRyKCJpZCIpKSx0aGlzLmVuc3VyZUhpZ2hsaWdodFZpc2libGUoKSx0aGlzLmxpdmVSZWdpb24udGV4dChiLnRleHQoKSksKGM9Yi5kYXRhKCJzZWxlY3QyLWRhdGEiKSkmJnRoaXMub3B0cy5lbGVtZW50LnRyaWdnZXIoe3R5cGU6InNlbGVjdDItaGlnaGxpZ2h0Iix2YWw6dGhpcy5pZChjKSxjaG9pY2U6Y30pLHZvaWQgMCl9LHJlbW92ZUhpZ2hsaWdodDpmdW5jdGlvbigpe3RoaXMucmVzdWx0cy5maW5kKCIuc2VsZWN0Mi1oaWdobGlnaHRlZCIpLnJlbW92ZUNsYXNzKCJzZWxlY3QyLWhpZ2hsaWdodGVkIil9LHRvdWNoTW92ZWQ6ZnVuY3Rpb24oKXt0aGlzLl90b3VjaE1vdmVkPSEwfSxjbGVhclRvdWNoTW92ZWQ6ZnVuY3Rpb24oKXt0aGlzLl90b3VjaE1vdmVkPSExfSxjb3VudFNlbGVjdGFibGVSZXN1bHRzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmluZEhpZ2hsaWdodGFibGVDaG9pY2VzKCkubGVuZ3RofSxoaWdobGlnaHRVbmRlckV2ZW50OmZ1bmN0aW9uKGEpe3ZhciBiPXgoYS50YXJnZXQpLmNsb3Nlc3QoIi5zZWxlY3QyLXJlc3VsdC1zZWxlY3RhYmxlIik7aWYoYi5sZW5ndGg+MCYmIWIuaXMoIi5zZWxlY3QyLWhpZ2hsaWdodGVkIikpe3ZhciBjPXRoaXMuZmluZEhpZ2hsaWdodGFibGVDaG9pY2VzKCk7dGhpcy5oaWdobGlnaHQoYy5pbmRleChiKSl9ZWxzZSAwPT1iLmxlbmd0aCYmdGhpcy5yZW1vdmVIaWdobGlnaHQoKX0sbG9hZE1vcmVJZk5lZWRlZDpmdW5jdGlvbigpe3ZhciB4PXRoaXMucmVzdWx0cyxhPXguZmluZCgibGkuc2VsZWN0Mi1tb3JlLXJlc3VsdHMiKSxiPXRoaXMucmVzdWx0c1BhZ2UrMSxjPXRoaXMsZD10aGlzLnNlYXJjaC52YWwoKSxlPXRoaXMuY29udGV4dDswIT09YS5sZW5ndGgmJihhLm9mZnNldCgpLnRvcC14Lm9mZnNldCgpLnRvcC14LmhlaWdodCgpPD10aGlzLm9wdHMubG9hZE1vcmVQYWRkaW5nJiYoYS5hZGRDbGFzcygic2VsZWN0Mi1hY3RpdmUiKSx0aGlzLm9wdHMucXVlcnkoe2VsZW1lbnQ6dGhpcy5vcHRzLmVsZW1lbnQsdGVybTpkLHBhZ2U6Yixjb250ZXh0OmUsbWF0Y2hlcjp0aGlzLm9wdHMubWF0Y2hlcixjYWxsYmFjazp0aGlzLmJpbmQoZnVuY3Rpb24oZil7Yy5vcGVuZWQoKSYmKGMub3B0cy5wb3B1bGF0ZVJlc3VsdHMuY2FsbCh0aGlzLHgsZi5yZXN1bHRzLHt0ZXJtOmQscGFnZTpiLGNvbnRleHQ6ZX0pLGMucG9zdHByb2Nlc3NSZXN1bHRzKGYsITEsITEpLCEwPT09Zi5tb3JlPyhhLmRldGFjaCgpLmFwcGVuZFRvKHgpLmh0bWwoYy5vcHRzLmVzY2FwZU1hcmt1cCh6KGMub3B0cy5mb3JtYXRMb2FkTW9yZSxjLm9wdHMuZWxlbWVudCxiKzEpKSksd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtjLmxvYWRNb3JlSWZOZWVkZWQoKX0sMTApKTphLnJlbW92ZSgpLGMucG9zaXRpb25Ecm9wZG93bigpLGMucmVzdWx0c1BhZ2U9YixjLmNvbnRleHQ9Zi5jb250ZXh0LHRoaXMub3B0cy5lbGVtZW50LnRyaWdnZXIoe3R5cGU6InNlbGVjdDItbG9hZGVkIixpdGVtczpmfSkpfSl9KSkpfSx0b2tlbml6ZTpmdW5jdGlvbigpe30sdXBkYXRlUmVzdWx0czpmdW5jdGlvbihiKXtmdW5jdGlvbiBjKCl7aS5yZW1vdmVDbGFzcygic2VsZWN0Mi1hY3RpdmUiKSxsLnBvc2l0aW9uRHJvcGRvd24oKSxsLmxpdmVSZWdpb24udGV4dChqLmZpbmQoIi5zZWxlY3QyLW5vLXJlc3VsdHMsLnNlbGVjdDItc2VsZWN0aW9uLWxpbWl0LC5zZWxlY3QyLXNlYXJjaGluZyIpLmxlbmd0aD9qLnRleHQoKTpsLm9wdHMuZm9ybWF0TWF0Y2hlcyhqLmZpbmQoJy5zZWxlY3QyLXJlc3VsdC1zZWxlY3RhYmxlOm5vdCgiLnNlbGVjdDItc2VsZWN0ZWQiKScpLmxlbmd0aCkpfWZ1bmN0aW9uIGQoeCl7ai5odG1sKHgpLGMoKX12YXIgZSxnLGgsaT10aGlzLnNlYXJjaCxqPXRoaXMucmVzdWx0cyxrPXRoaXMub3B0cyxsPXRoaXMsbT1pLnZhbCgpLG49eC5kYXRhKHRoaXMuY29udGFpbmVyLCJzZWxlY3QyLWxhc3QtdGVybSIpO2lmKCghMD09PWJ8fCFufHwhZihtLG4pKSYmKHguZGF0YSh0aGlzLmNvbnRhaW5lciwic2VsZWN0Mi1sYXN0LXRlcm0iLG0pLCEwPT09Ynx8ITEhPT10aGlzLnNob3dTZWFyY2hJbnB1dCYmdGhpcy5vcGVuZWQoKSkpe2g9Kyt0aGlzLnF1ZXJ5Q291bnQ7dmFyIG89dGhpcy5nZXRNYXhpbXVtU2VsZWN0aW9uU2l6ZSgpO2lmKG8+PTEmJihlPXRoaXMuZGF0YSgpLHguaXNBcnJheShlKSYmZS5sZW5ndGg+PW8mJnkoay5mb3JtYXRTZWxlY3Rpb25Ub29CaWcsImZvcm1hdFNlbGVjdGlvblRvb0JpZyIpKSlyZXR1cm4gZCgiPGxpIGNsYXNzPSdzZWxlY3QyLXNlbGVjdGlvbi1saW1pdCc+Iit6KGsuZm9ybWF0U2VsZWN0aW9uVG9vQmlnLGsuZWxlbWVudCxvKSsiPC9saT4iKSx2b2lkIDA7aWYoaS52YWwoKS5sZW5ndGg8ay5taW5pbXVtSW5wdXRMZW5ndGgpcmV0dXJuIGQoeShrLmZvcm1hdElucHV0VG9vU2hvcnQsImZvcm1hdElucHV0VG9vU2hvcnQiKT8iPGxpIGNsYXNzPSdzZWxlY3QyLW5vLXJlc3VsdHMnPiIreihrLmZvcm1hdElucHV0VG9vU2hvcnQsay5lbGVtZW50LGkudmFsKCksay5taW5pbXVtSW5wdXRMZW5ndGgpKyI8L2xpPiI6IiIpLGImJnRoaXMuc2hvd1NlYXJjaCYmdGhpcy5zaG93U2VhcmNoKCEwKSx2b2lkIDA7aWYoay5tYXhpbXVtSW5wdXRMZW5ndGgmJmkudmFsKCkubGVuZ3RoPmsubWF4aW11bUlucHV0TGVuZ3RoKXJldHVybiBkKHkoay5mb3JtYXRJbnB1dFRvb0xvbmcsImZvcm1hdElucHV0VG9vTG9uZyIpPyI8bGkgY2xhc3M9J3NlbGVjdDItbm8tcmVzdWx0cyc+Iit6KGsuZm9ybWF0SW5wdXRUb29Mb25nLGsuZWxlbWVudCxpLnZhbCgpLGsubWF4aW11bUlucHV0TGVuZ3RoKSsiPC9saT4iOiIiKSx2b2lkIDA7ay5mb3JtYXRTZWFyY2hpbmcmJjA9PT10aGlzLmZpbmRIaWdobGlnaHRhYmxlQ2hvaWNlcygpLmxlbmd0aCYmZCgiPGxpIGNsYXNzPSdzZWxlY3QyLXNlYXJjaGluZyc+Iit6KGsuZm9ybWF0U2VhcmNoaW5nLGsuZWxlbWVudCkrIjwvbGk+IiksaS5hZGRDbGFzcygic2VsZWN0Mi1hY3RpdmUiKSx0aGlzLnJlbW92ZUhpZ2hsaWdodCgpLChnPXRoaXMudG9rZW5pemUoKSkhPWEmJm51bGwhPWcmJmkudmFsKGcpLHRoaXMucmVzdWx0c1BhZ2U9MSxrLnF1ZXJ5KHtlbGVtZW50OmsuZWxlbWVudCx0ZXJtOmkudmFsKCkscGFnZTp0aGlzLnJlc3VsdHNQYWdlLGNvbnRleHQ6bnVsbCxtYXRjaGVyOmsubWF0Y2hlcixjYWxsYmFjazp0aGlzLmJpbmQoZnVuY3Rpb24oZSl7dmFyIGc7aWYoaD09dGhpcy5xdWVyeUNvdW50KXtpZighdGhpcy5vcGVuZWQoKSlyZXR1cm4gdGhpcy5zZWFyY2gucmVtb3ZlQ2xhc3MoInNlbGVjdDItYWN0aXZlIiksdm9pZCAwO2lmKGUuaGFzRXJyb3IhPT1hJiZ5KGsuZm9ybWF0QWpheEVycm9yLCJmb3JtYXRBamF4RXJyb3IiKSlyZXR1cm4gZCgiPGxpIGNsYXNzPSdzZWxlY3QyLWFqYXgtZXJyb3InPiIreihrLmZvcm1hdEFqYXhFcnJvcixrLmVsZW1lbnQsZS5qcVhIUixlLnRleHRTdGF0dXMsZS5lcnJvclRocm93bikrIjwvbGk+Iiksdm9pZCAwO2lmKHRoaXMuY29udGV4dD1lLmNvbnRleHQ9PT1hP251bGw6ZS5jb250ZXh0LHRoaXMub3B0cy5jcmVhdGVTZWFyY2hDaG9pY2UmJiIiIT09aS52YWwoKSYmKChnPXRoaXMub3B0cy5jcmVhdGVTZWFyY2hDaG9pY2UuY2FsbChsLGkudmFsKCksZS5yZXN1bHRzKSkhPT1hJiZudWxsIT09ZyYmbC5pZChnKSE9PWEmJm51bGwhPT1sLmlkKGcpJiYwPT09eChlLnJlc3VsdHMpLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiBmKGwuaWQodGhpcyksbC5pZChnKSl9KS5sZW5ndGgmJnRoaXMub3B0cy5jcmVhdGVTZWFyY2hDaG9pY2VQb3NpdGlvbihlLnJlc3VsdHMsZykpLDA9PT1lLnJlc3VsdHMubGVuZ3RoJiZ5KGsuZm9ybWF0Tm9NYXRjaGVzLCJmb3JtYXROb01hdGNoZXMiKSlyZXR1cm4gZCgiPGxpIGNsYXNzPSdzZWxlY3QyLW5vLXJlc3VsdHMnPiIreihrLmZvcm1hdE5vTWF0Y2hlcyxrLmVsZW1lbnQsaS52YWwoKSkrIjwvbGk+IiksdGhpcy5zaG93U2VhcmNoJiZ0aGlzLnNob3dTZWFyY2goaS52YWwoKSksdm9pZCAwO2ouZW1wdHkoKSxsLm9wdHMucG9wdWxhdGVSZXN1bHRzLmNhbGwodGhpcyxqLGUucmVzdWx0cyx7dGVybTppLnZhbCgpLHBhZ2U6dGhpcy5yZXN1bHRzUGFnZSxjb250ZXh0Om51bGx9KSwhMD09PWUubW9yZSYmeShrLmZvcm1hdExvYWRNb3JlLCJmb3JtYXRMb2FkTW9yZSIpJiYoai5hcHBlbmQoIjxsaSBjbGFzcz0nc2VsZWN0Mi1tb3JlLXJlc3VsdHMnPiIray5lc2NhcGVNYXJrdXAoeihrLmZvcm1hdExvYWRNb3JlLGsuZWxlbWVudCx0aGlzLnJlc3VsdHNQYWdlKSkrIjwvbGk+Iiksd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXtsLmxvYWRNb3JlSWZOZWVkZWQoKX0sMTApKSx0aGlzLnBvc3Rwcm9jZXNzUmVzdWx0cyhlLGIpLGMoKSx0aGlzLm9wdHMuZWxlbWVudC50cmlnZ2VyKHt0eXBlOiJzZWxlY3QyLWxvYWRlZCIsaXRlbXM6ZX0pfX0pfSl9fSxjYW5jZWw6ZnVuY3Rpb24oKXt0aGlzLmNsb3NlKCl9LGJsdXI6ZnVuY3Rpb24oKXt0aGlzLm9wdHMuc2VsZWN0T25CbHVyJiZ0aGlzLnNlbGVjdEhpZ2hsaWdodGVkKHtub0ZvY3VzOiEwfSksdGhpcy5jbG9zZSgpLHRoaXMuY29udGFpbmVyLnJlbW92ZUNsYXNzKCJzZWxlY3QyLWNvbnRhaW5lci1hY3RpdmUiKSx0aGlzLnNlYXJjaFswXT09PWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQmJnRoaXMuc2VhcmNoLmJsdXIoKSx0aGlzLmNsZWFyU2VhcmNoKCksdGhpcy5zZWxlY3Rpb24uZmluZCgiLnNlbGVjdDItc2VhcmNoLWNob2ljZS1mb2N1cyIpLnJlbW92ZUNsYXNzKCJzZWxlY3QyLXNlYXJjaC1jaG9pY2UtZm9jdXMiKX0sZm9jdXNTZWFyY2g6ZnVuY3Rpb24oKXttKHRoaXMuc2VhcmNoKX0sc2VsZWN0SGlnaGxpZ2h0ZWQ6ZnVuY3Rpb24oeCl7aWYodGhpcy5fdG91Y2hNb3ZlZClyZXR1cm4gdGhpcy5jbGVhclRvdWNoTW92ZWQoKSx2b2lkIDA7dmFyIGE9dGhpcy5oaWdobGlnaHQoKSxiPXRoaXMucmVzdWx0cy5maW5kKCIuc2VsZWN0Mi1oaWdobGlnaHRlZCIpLmNsb3Nlc3QoIi5zZWxlY3QyLXJlc3VsdCIpLmRhdGEoInNlbGVjdDItZGF0YSIpO2I/KHRoaXMuaGlnaGxpZ2h0KGEpLHRoaXMub25TZWxlY3QoYix4KSk6eCYmeC5ub0ZvY3VzJiZ0aGlzLmNsb3NlKCl9LGdldFBsYWNlaG9sZGVyOmZ1bmN0aW9uKCl7dmFyIHg7cmV0dXJuIHRoaXMub3B0cy5lbGVtZW50LmF0dHIoInBsYWNlaG9sZGVyIil8fHRoaXMub3B0cy5lbGVtZW50LmF0dHIoImRhdGEtcGxhY2Vob2xkZXIiKXx8dGhpcy5vcHRzLmVsZW1lbnQuZGF0YSgicGxhY2Vob2xkZXIiKXx8dGhpcy5vcHRzLnBsYWNlaG9sZGVyfHwoKHg9dGhpcy5nZXRQbGFjZWhvbGRlck9wdGlvbigpKSE9PWE/eC50ZXh0KCk6YSl9LGdldFBsYWNlaG9sZGVyT3B0aW9uOmZ1bmN0aW9uKCl7aWYodGhpcy5zZWxlY3Qpe3ZhciBiPXRoaXMuc2VsZWN0LmNoaWxkcmVuKCJvcHRpb24iKS5maXJzdCgpO2lmKHRoaXMub3B0cy5wbGFjZWhvbGRlck9wdGlvbiE9PWEpcmV0dXJuImZpcnN0Ij09PXRoaXMub3B0cy5wbGFjZWhvbGRlck9wdGlvbiYmYnx8ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMub3B0cy5wbGFjZWhvbGRlck9wdGlvbiYmdGhpcy5vcHRzLnBsYWNlaG9sZGVyT3B0aW9uKHRoaXMuc2VsZWN0KTtpZigiIj09PXgudHJpbShiLnRleHQoKSkmJiIiPT09Yi52YWwoKSlyZXR1cm4gYn19LGluaXRDb250YWluZXJXaWR0aDpmdW5jdGlvbigpe2Z1bmN0aW9uIGEoKXt2YXIgYSxiLGMsZCxlO2lmKCJvZmYiPT09dGhpcy5vcHRzLndpZHRoKXJldHVybiBudWxsO2lmKCJlbGVtZW50Ij09PXRoaXMub3B0cy53aWR0aClyZXR1cm4gMD09PXRoaXMub3B0cy5lbGVtZW50Lm91dGVyV2lkdGgoITEpPyJhdXRvIjp0aGlzLm9wdHMuZWxlbWVudC5vdXRlcldpZHRoKCExKSsicHgiO2lmKCJjb3B5Ij09PXRoaXMub3B0cy53aWR0aHx8InJlc29sdmUiPT09dGhpcy5vcHRzLndpZHRoKXtpZigic3RyaW5nIj09dHlwZW9mKGE9dGhpcy5vcHRzLmVsZW1lbnQuYXR0cigic3R5bGUiKSkpZm9yKGQ9MCxlPShiPWEuc3BsaXQoIjsiKSkubGVuZ3RoO2U+ZDtkKz0xKWlmKG51bGwhPT0oYz1iW2RdLnJlcGxhY2UoL1xzL2csIiIpLm1hdGNoKC9ed2lkdGg6KChbLStdPyhbMC05XSpcLik/WzAtOV0rKShweHxlbXxleHwlfGlufGNtfG1tfHB0fHBjKSkvaSkpJiZjLmxlbmd0aD49MSlyZXR1cm4gY1sxXTtyZXR1cm4icmVzb2x2ZSI9PT10aGlzLm9wdHMud2lkdGg/KGE9dGhpcy5vcHRzLmVsZW1lbnQuY3NzKCJ3aWR0aCIpKS5pbmRleE9mKCIlIik+MD9hOjA9PT10aGlzLm9wdHMuZWxlbWVudC5vdXRlcldpZHRoKCExKT8iYXV0byI6dGhpcy5vcHRzLmVsZW1lbnQub3V0ZXJXaWR0aCghMSkrInB4IjpudWxsfXJldHVybiB4LmlzRnVuY3Rpb24odGhpcy5vcHRzLndpZHRoKT90aGlzLm9wdHMud2lkdGgoKTp0aGlzLm9wdHMud2lkdGh9dmFyIGI9YS5jYWxsKHRoaXMpO251bGwhPT1iJiZ0aGlzLmNvbnRhaW5lci5jc3MoIndpZHRoIixiKX19KSx7Y3JlYXRlQ29udGFpbmVyOmZ1bmN0aW9uKCl7cmV0dXJuIHgoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpLmF0dHIoe2NsYXNzOiJzZWxlY3QyLWNvbnRhaW5lciJ9KS5odG1sKFsiPGEgaHJlZj0namF2YXNjcmlwdDp2b2lkKDApJyBjbGFzcz0nc2VsZWN0Mi1jaG9pY2UnIHRhYmluZGV4PSctMSc+IiwiICAgPHNwYW4gY2xhc3M9J3NlbGVjdDItY2hvc2VuJz4mIzE2MDs8L3NwYW4+PGFiYnIgY2xhc3M9J3NlbGVjdDItc2VhcmNoLWNob2ljZS1jbG9zZSc+PC9hYmJyPiIsIiAgIDxzcGFuIGNsYXNzPSdzZWxlY3QyLWFycm93JyByb2xlPSdwcmVzZW50YXRpb24nPjxiIHJvbGU9J3ByZXNlbnRhdGlvbic+PC9iPjwvc3Bhbj4iLCI8L2E+IiwiPGxhYmVsIGZvcj0nJyBjbGFzcz0nc2VsZWN0Mi1vZmZzY3JlZW4nPjwvbGFiZWw+IiwiPGlucHV0IGNsYXNzPSdzZWxlY3QyLWZvY3Vzc2VyIHNlbGVjdDItb2Zmc2NyZWVuJyB0eXBlPSd0ZXh0JyBhcmlhLWhhc3BvcHVwPSd0cnVlJyByb2xlPSdidXR0b24nIC8+IiwiPGRpdiBjbGFzcz0nc2VsZWN0Mi1kcm9wIHNlbGVjdDItZGlzcGxheS1ub25lJz4iLCIgICA8ZGl2IGNsYXNzPSdzZWxlY3QyLXNlYXJjaCc+IiwiICAgICAgIDxsYWJlbCBmb3I9JycgY2xhc3M9J3NlbGVjdDItb2Zmc2NyZWVuJz48L2xhYmVsPiIsIiAgICAgICA8aW5wdXQgdHlwZT0ndGV4dCcgYXV0b2NvbXBsZXRlPSdvZmYnIGF1dG9jb3JyZWN0PSdvZmYnIGF1dG9jYXBpdGFsaXplPSdvZmYnIHNwZWxsY2hlY2s9J2ZhbHNlJyBjbGFzcz0nc2VsZWN0Mi1pbnB1dCcgcm9sZT0nY29tYm9ib3gnIGFyaWEtZXhwYW5kZWQ9J3RydWUnIiwiICAgICAgIGFyaWEtYXV0b2NvbXBsZXRlPSdsaXN0JyAvPiIsIiAgIDwvZGl2PiIsIiAgIDx1bCBjbGFzcz0nc2VsZWN0Mi1yZXN1bHRzJyByb2xlPSdsaXN0Ym94Jz4iLCIgICA8L3VsPiIsIjwvZGl2PiJdLmpvaW4oIiIpKX0sZW5hYmxlSW50ZXJmYWNlOmZ1bmN0aW9uKCl7dGhpcy5wYXJlbnQuZW5hYmxlSW50ZXJmYWNlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSYmdGhpcy5mb2N1c3Nlci5wcm9wKCJkaXNhYmxlZCIsIXRoaXMuaXNJbnRlcmZhY2VFbmFibGVkKCkpfSxvcGVuaW5nOmZ1bmN0aW9uKCl7dmFyIGEsYixjO3RoaXMub3B0cy5taW5pbXVtUmVzdWx0c0ZvclNlYXJjaD49MCYmdGhpcy5zaG93U2VhcmNoKCEwKSx0aGlzLnBhcmVudC5vcGVuaW5nLmFwcGx5KHRoaXMsYXJndW1lbnRzKSwhMSE9PXRoaXMuc2hvd1NlYXJjaElucHV0JiZ0aGlzLnNlYXJjaC52YWwodGhpcy5mb2N1c3Nlci52YWwoKSksdGhpcy5vcHRzLnNob3VsZEZvY3VzSW5wdXQodGhpcykmJih0aGlzLnNlYXJjaC5mb2N1cygpLChhPXRoaXMuc2VhcmNoLmdldCgwKSkuY3JlYXRlVGV4dFJhbmdlPygoYj1hLmNyZWF0ZVRleHRSYW5nZSgpKS5jb2xsYXBzZSghMSksYi5zZWxlY3QoKSk6YS5zZXRTZWxlY3Rpb25SYW5nZSYmKGM9dGhpcy5zZWFyY2gudmFsKCkubGVuZ3RoLGEuc2V0U2VsZWN0aW9uUmFuZ2UoYyxjKSkpLHRoaXMucHJlZmlsbE5leHRTZWFyY2hUZXJtKCksdGhpcy5mb2N1c3Nlci5wcm9wKCJkaXNhYmxlZCIsITApLnZhbCgiIiksdGhpcy51cGRhdGVSZXN1bHRzKCEwKSx0aGlzLm9wdHMuZWxlbWVudC50cmlnZ2VyKHguRXZlbnQoInNlbGVjdDItb3BlbiIpKX0sY2xvc2U6ZnVuY3Rpb24oKXt0aGlzLm9wZW5lZCgpJiYodGhpcy5wYXJlbnQuY2xvc2UuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMuZm9jdXNzZXIucHJvcCgiZGlzYWJsZWQiLCExKSx0aGlzLm9wdHMuc2hvdWxkRm9jdXNJbnB1dCh0aGlzKSYmdGhpcy5mb2N1c3Nlci5mb2N1cygpKX0sZm9jdXM6ZnVuY3Rpb24oKXt0aGlzLm9wZW5lZCgpP3RoaXMuY2xvc2UoKToodGhpcy5mb2N1c3Nlci5wcm9wKCJkaXNhYmxlZCIsITEpLHRoaXMub3B0cy5zaG91bGRGb2N1c0lucHV0KHRoaXMpJiZ0aGlzLmZvY3Vzc2VyLmZvY3VzKCkpfSxpc0ZvY3VzZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250YWluZXIuaGFzQ2xhc3MoInNlbGVjdDItY29udGFpbmVyLWFjdGl2ZSIpfSxjYW5jZWw6ZnVuY3Rpb24oKXt0aGlzLnBhcmVudC5jYW5jZWwuYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMuZm9jdXNzZXIucHJvcCgiZGlzYWJsZWQiLCExKSx0aGlzLm9wdHMuc2hvdWxkRm9jdXNJbnB1dCh0aGlzKSYmdGhpcy5mb2N1c3Nlci5mb2N1cygpfSxkZXN0cm95OmZ1bmN0aW9uKCl7eCgibGFiZWxbZm9yPSciK3RoaXMuZm9jdXNzZXIuYXR0cigiaWQiKSsiJ10iKS5hdHRyKCJmb3IiLHRoaXMub3B0cy5lbGVtZW50LmF0dHIoImlkIikpLHRoaXMucGFyZW50LmRlc3Ryb3kuYXBwbHkodGhpcyxhcmd1bWVudHMpLEMuY2FsbCh0aGlzLCJzZWxlY3Rpb24iLCJmb2N1c3NlciIpfSxpbml0Q29udGFpbmVyOmZ1bmN0aW9uKCl7dmFyIGEsYyxkPXRoaXMuY29udGFpbmVyLGU9dGhpcy5kcm9wZG93bixmPUgoKTt0aGlzLnNob3dTZWFyY2goISh0aGlzLm9wdHMubWluaW11bVJlc3VsdHNGb3JTZWFyY2g8MCkpLHRoaXMuc2VsZWN0aW9uPWE9ZC5maW5kKCIuc2VsZWN0Mi1jaG9pY2UiKSx0aGlzLmZvY3Vzc2VyPWQuZmluZCgiLnNlbGVjdDItZm9jdXNzZXIiKSxhLmZpbmQoIi5zZWxlY3QyLWNob3NlbiIpLmF0dHIoImlkIiwic2VsZWN0Mi1jaG9zZW4tIitmKSx0aGlzLmZvY3Vzc2VyLmF0dHIoImFyaWEtbGFiZWxsZWRieSIsInNlbGVjdDItY2hvc2VuLSIrZiksdGhpcy5yZXN1bHRzLmF0dHIoImlkIiwic2VsZWN0Mi1yZXN1bHRzLSIrZiksdGhpcy5zZWFyY2guYXR0cigiYXJpYS1vd25zIiwic2VsZWN0Mi1yZXN1bHRzLSIrZiksdGhpcy5mb2N1c3Nlci5hdHRyKCJpZCIsInMyaWRfYXV0b2dlbiIrZiksYz14KCJsYWJlbFtmb3I9JyIrdGhpcy5vcHRzLmVsZW1lbnQuYXR0cigiaWQiKSsiJ10iKSx0aGlzLm9wdHMuZWxlbWVudC5vbigiZm9jdXMuc2VsZWN0MiIsdGhpcy5iaW5kKGZ1bmN0aW9uKCl7dGhpcy5mb2N1cygpfSkpLHRoaXMuZm9jdXNzZXIucHJldigpLnRleHQoYy50ZXh0KCkpLmF0dHIoImZvciIsdGhpcy5mb2N1c3Nlci5hdHRyKCJpZCIpKTt2YXIgZz10aGlzLm9wdHMuZWxlbWVudC5hdHRyKCJ0aXRsZSIpO3RoaXMub3B0cy5lbGVtZW50LmF0dHIoInRpdGxlIixnfHxjLnRleHQoKSksdGhpcy5mb2N1c3Nlci5hdHRyKCJ0YWJpbmRleCIsdGhpcy5lbGVtZW50VGFiSW5kZXgpLHRoaXMuc2VhcmNoLmF0dHIoImlkIix0aGlzLmZvY3Vzc2VyLmF0dHIoImlkIikrIl9zZWFyY2giKSx0aGlzLnNlYXJjaC5wcmV2KCkudGV4dCh4KCJsYWJlbFtmb3I9JyIrdGhpcy5mb2N1c3Nlci5hdHRyKCJpZCIpKyInXSIpLnRleHQoKSkuYXR0cigiZm9yIix0aGlzLnNlYXJjaC5hdHRyKCJpZCIpKSx0aGlzLnNlYXJjaC5vbigia2V5ZG93biIsdGhpcy5iaW5kKGZ1bmN0aW9uKHgpe2lmKHRoaXMuaXNJbnRlcmZhY2VFbmFibGVkKCkmJjIyOSE9eC5rZXlDb2RlKXtpZih4LndoaWNoPT09TS5QQUdFX1VQfHx4LndoaWNoPT09TS5QQUdFX0RPV04pcmV0dXJuIG8oeCksdm9pZCAwO3N3aXRjaCh4LndoaWNoKXtjYXNlIE0uVVA6Y2FzZSBNLkRPV046cmV0dXJuIHRoaXMubW92ZUhpZ2hsaWdodCh4LndoaWNoPT09TS5VUD8tMToxKSxvKHgpLHZvaWQgMDtjYXNlIE0uRU5URVI6cmV0dXJuIHRoaXMuc2VsZWN0SGlnaGxpZ2h0ZWQoKSxvKHgpLHZvaWQgMDtjYXNlIE0uVEFCOnJldHVybiB0aGlzLnNlbGVjdEhpZ2hsaWdodGVkKHtub0ZvY3VzOiEwfSksdm9pZCAwO2Nhc2UgTS5FU0M6cmV0dXJuIHRoaXMuY2FuY2VsKHgpLG8oeCksdm9pZCAwfX19KSksdGhpcy5zZWFyY2gub24oImJsdXIiLHRoaXMuYmluZChmdW5jdGlvbigpe2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQ9PT10aGlzLmJvZHkuZ2V0KDApJiZ3aW5kb3cuc2V0VGltZW91dCh0aGlzLmJpbmQoZnVuY3Rpb24oKXt0aGlzLm9wZW5lZCgpJiZ0aGlzLnJlc3VsdHMmJnRoaXMucmVzdWx0cy5sZW5ndGg+MSYmdGhpcy5zZWFyY2guZm9jdXMoKX0pLDApfSkpLHRoaXMuZm9jdXNzZXIub24oImtleWRvd24iLHRoaXMuYmluZChmdW5jdGlvbih4KXtpZih0aGlzLmlzSW50ZXJmYWNlRW5hYmxlZCgpJiZ4LndoaWNoIT09TS5UQUImJiFNLmlzQ29udHJvbCh4KSYmIU0uaXNGdW5jdGlvbktleSh4KSYmeC53aGljaCE9PU0uRVNDKXtpZighMT09PXRoaXMub3B0cy5vcGVuT25FbnRlciYmeC53aGljaD09PU0uRU5URVIpcmV0dXJuIG8oeCksdm9pZCAwO2lmKHgud2hpY2g9PU0uRE9XTnx8eC53aGljaD09TS5VUHx8eC53aGljaD09TS5FTlRFUiYmdGhpcy5vcHRzLm9wZW5PbkVudGVyKXtpZih4LmFsdEtleXx8eC5jdHJsS2V5fHx4LnNoaWZ0S2V5fHx4Lm1ldGFLZXkpcmV0dXJuO3JldHVybiB0aGlzLm9wZW4oKSxvKHgpLHZvaWQgMH1yZXR1cm4geC53aGljaD09TS5ERUxFVEV8fHgud2hpY2g9PU0uQkFDS1NQQUNFPyh0aGlzLm9wdHMuYWxsb3dDbGVhciYmdGhpcy5jbGVhcigpLG8oeCksdm9pZCAwKTp2b2lkIDB9fSkpLGkodGhpcy5mb2N1c3NlciksdGhpcy5mb2N1c3Nlci5vbigia2V5dXAtY2hhbmdlIGlucHV0Iix0aGlzLmJpbmQoZnVuY3Rpb24oeCl7aWYodGhpcy5vcHRzLm1pbmltdW1SZXN1bHRzRm9yU2VhcmNoPj0wKXtpZih4LnN0b3BQcm9wYWdhdGlvbigpLHRoaXMub3BlbmVkKCkpcmV0dXJuO3RoaXMub3BlbigpfX0pKSxhLm9uKCJtb3VzZWRvd24gdG91Y2hzdGFydCIsImFiYnIiLHRoaXMuYmluZChmdW5jdGlvbih4KXt0aGlzLmlzSW50ZXJmYWNlRW5hYmxlZCgpJiYodGhpcy5jbGVhcigpLHAoeCksdGhpcy5jbG9zZSgpLHRoaXMuc2VsZWN0aW9uJiZ0aGlzLnNlbGVjdGlvbi5mb2N1cygpKX0pKSxhLm9uKCJtb3VzZWRvd24gdG91Y2hzdGFydCIsdGhpcy5iaW5kKGZ1bmN0aW9uKGMpe2IoYSksdGhpcy5jb250YWluZXIuaGFzQ2xhc3MoInNlbGVjdDItY29udGFpbmVyLWFjdGl2ZSIpfHx0aGlzLm9wdHMuZWxlbWVudC50cmlnZ2VyKHguRXZlbnQoInNlbGVjdDItZm9jdXMiKSksdGhpcy5vcGVuZWQoKT90aGlzLmNsb3NlKCk6dGhpcy5pc0ludGVyZmFjZUVuYWJsZWQoKSYmdGhpcy5vcGVuKCksbyhjKX0pKSxlLm9uKCJtb3VzZWRvd24gdG91Y2hzdGFydCIsdGhpcy5iaW5kKGZ1bmN0aW9uKCl7dGhpcy5vcHRzLnNob3VsZEZvY3VzSW5wdXQodGhpcykmJnRoaXMuc2VhcmNoLmZvY3VzKCl9KSksYS5vbigiZm9jdXMiLHRoaXMuYmluZChmdW5jdGlvbih4KXtvKHgpfSkpLHRoaXMuZm9jdXNzZXIub24oImZvY3VzIix0aGlzLmJpbmQoZnVuY3Rpb24oKXt0aGlzLmNvbnRhaW5lci5oYXNDbGFzcygic2VsZWN0Mi1jb250YWluZXItYWN0aXZlIil8fHRoaXMub3B0cy5lbGVtZW50LnRyaWdnZXIoeC5FdmVudCgic2VsZWN0Mi1mb2N1cyIpKSx0aGlzLmNvbnRhaW5lci5hZGRDbGFzcygic2VsZWN0Mi1jb250YWluZXItYWN0aXZlIil9KSkub24oImJsdXIiLHRoaXMuYmluZChmdW5jdGlvbigpe3RoaXMub3BlbmVkKCl8fCh0aGlzLmNvbnRhaW5lci5yZW1vdmVDbGFzcygic2VsZWN0Mi1jb250YWluZXItYWN0aXZlIiksdGhpcy5vcHRzLmVsZW1lbnQudHJpZ2dlcih4LkV2ZW50KCJzZWxlY3QyLWJsdXIiKSkpfSkpLHRoaXMuc2VhcmNoLm9uKCJmb2N1cyIsdGhpcy5iaW5kKGZ1bmN0aW9uKCl7dGhpcy5jb250YWluZXIuaGFzQ2xhc3MoInNlbGVjdDItY29udGFpbmVyLWFjdGl2ZSIpfHx0aGlzLm9wdHMuZWxlbWVudC50cmlnZ2VyKHguRXZlbnQoInNlbGVjdDItZm9jdXMiKSksdGhpcy5jb250YWluZXIuYWRkQ2xhc3MoInNlbGVjdDItY29udGFpbmVyLWFjdGl2ZSIpfSkpLHRoaXMuaW5pdENvbnRhaW5lcldpZHRoKCksdGhpcy5vcHRzLmVsZW1lbnQuaGlkZSgpLHRoaXMuc2V0UGxhY2Vob2xkZXIoKX0sY2xlYXI6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5zZWxlY3Rpb24uZGF0YSgic2VsZWN0Mi1kYXRhIik7aWYoYil7dmFyIGM9eC5FdmVudCgic2VsZWN0Mi1jbGVhcmluZyIpO2lmKHRoaXMub3B0cy5lbGVtZW50LnRyaWdnZXIoYyksYy5pc0RlZmF1bHRQcmV2ZW50ZWQoKSlyZXR1cm47dmFyIGQ9dGhpcy5nZXRQbGFjZWhvbGRlck9wdGlvbigpO3RoaXMub3B0cy5lbGVtZW50LnZhbChkP2QudmFsKCk6IiIpLHRoaXMuc2VsZWN0aW9uLmZpbmQoIi5zZWxlY3QyLWNob3NlbiIpLmVtcHR5KCksdGhpcy5zZWxlY3Rpb24ucmVtb3ZlRGF0YSgic2VsZWN0Mi1kYXRhIiksdGhpcy5zZXRQbGFjZWhvbGRlcigpLCExIT09YSYmKHRoaXMub3B0cy5lbGVtZW50LnRyaWdnZXIoe3R5cGU6InNlbGVjdDItcmVtb3ZlZCIsdmFsOnRoaXMuaWQoYiksY2hvaWNlOmJ9KSx0aGlzLnRyaWdnZXJDaGFuZ2Uoe3JlbW92ZWQ6Yn0pKX19LGluaXRTZWxlY3Rpb246ZnVuY3Rpb24oKXtpZih0aGlzLmlzUGxhY2Vob2xkZXJPcHRpb25TZWxlY3RlZCgpKXRoaXMudXBkYXRlU2VsZWN0aW9uKG51bGwpLHRoaXMuY2xvc2UoKSx0aGlzLnNldFBsYWNlaG9sZGVyKCk7ZWxzZXt2YXIgeD10aGlzO3RoaXMub3B0cy5pbml0U2VsZWN0aW9uLmNhbGwobnVsbCx0aGlzLm9wdHMuZWxlbWVudCxmdW5jdGlvbihiKXtiIT09YSYmbnVsbCE9PWImJih4LnVwZGF0ZVNlbGVjdGlvbihiKSx4LmNsb3NlKCkseC5zZXRQbGFjZWhvbGRlcigpLHgubGFzdFNlYXJjaFRlcm09eC5zZWFyY2gudmFsKCkpfSl9fSxpc1BsYWNlaG9sZGVyT3B0aW9uU2VsZWN0ZWQ6ZnVuY3Rpb24oKXt2YXIgeDtyZXR1cm4gdGhpcy5nZXRQbGFjZWhvbGRlcigpIT09YSYmKCh4PXRoaXMuZ2V0UGxhY2Vob2xkZXJPcHRpb24oKSkhPT1hJiZ4LnByb3AoInNlbGVjdGVkIil8fCIiPT09dGhpcy5vcHRzLmVsZW1lbnQudmFsKCl8fHRoaXMub3B0cy5lbGVtZW50LnZhbCgpPT09YXx8bnVsbD09PXRoaXMub3B0cy5lbGVtZW50LnZhbCgpKX0scHJlcGFyZU9wdHM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnBhcmVudC5wcmVwYXJlT3B0cy5hcHBseSh0aGlzLGFyZ3VtZW50cyksYj10aGlzO3JldHVybiJzZWxlY3QiPT09YS5lbGVtZW50LmdldCgwKS50YWdOYW1lLnRvTG93ZXJDYXNlKCk/YS5pbml0U2VsZWN0aW9uPWZ1bmN0aW9uKHgsYSl7dmFyIGM9eC5maW5kKCJvcHRpb24iKS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZWxlY3RlZCYmIXRoaXMuZGlzYWJsZWR9KTthKGIub3B0aW9uVG9EYXRhKGMpKX06ImRhdGEiaW4gYSYmKGEuaW5pdFNlbGVjdGlvbj1hLmluaXRTZWxlY3Rpb258fGZ1bmN0aW9uKGIsYyl7dmFyIGQ9Yi52YWwoKSxlPW51bGw7YS5xdWVyeSh7bWF0Y2hlcjpmdW5jdGlvbih4LGIsYyl7dmFyIGc9ZihkLGEuaWQoYykpO3JldHVybiBnJiYoZT1jKSxnfSxjYWxsYmFjazp4LmlzRnVuY3Rpb24oYyk/ZnVuY3Rpb24oKXtjKGUpfTp4Lm5vb3B9KX0pLGF9LGdldFBsYWNlaG9sZGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2VsZWN0JiZ0aGlzLmdldFBsYWNlaG9sZGVyT3B0aW9uKCk9PT1hP2E6dGhpcy5wYXJlbnQuZ2V0UGxhY2Vob2xkZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxzZXRQbGFjZWhvbGRlcjpmdW5jdGlvbigpe3ZhciB4PXRoaXMuZ2V0UGxhY2Vob2xkZXIoKTtpZih0aGlzLmlzUGxhY2Vob2xkZXJPcHRpb25TZWxlY3RlZCgpJiZ4IT09YSl7aWYodGhpcy5zZWxlY3QmJnRoaXMuZ2V0UGxhY2Vob2xkZXJPcHRpb24oKT09PWEpcmV0dXJuO3RoaXMuc2VsZWN0aW9uLmZpbmQoIi5zZWxlY3QyLWNob3NlbiIpLmh0bWwodGhpcy5vcHRzLmVzY2FwZU1hcmt1cCh4KSksdGhpcy5zZWxlY3Rpb24uYWRkQ2xhc3MoInNlbGVjdDItZGVmYXVsdCIpLHRoaXMuY29udGFpbmVyLnJlbW92ZUNsYXNzKCJzZWxlY3QyLWFsbG93Y2xlYXIiKX19LHBvc3Rwcm9jZXNzUmVzdWx0czpmdW5jdGlvbih4LGEsYil7dmFyIGM9MCxkPXRoaXM7aWYodGhpcy5maW5kSGlnaGxpZ2h0YWJsZUNob2ljZXMoKS5lYWNoMihmdW5jdGlvbih4LGEpe3JldHVybiBmKGQuaWQoYS5kYXRhKCJzZWxlY3QyLWRhdGEiKSksZC5vcHRzLmVsZW1lbnQudmFsKCkpPyhjPXgsITEpOnZvaWQgMH0pLCExIT09YiYmdGhpcy5oaWdobGlnaHQoITA9PT1hJiZjPj0wP2M6MCksITA9PT1hKXt2YXIgZT10aGlzLm9wdHMubWluaW11bVJlc3VsdHNGb3JTZWFyY2g7ZT49MCYmdGhpcy5zaG93U2VhcmNoKEEoeC5yZXN1bHRzKT49ZSl9fSxzaG93U2VhcmNoOmZ1bmN0aW9uKGEpe3RoaXMuc2hvd1NlYXJjaElucHV0IT09YSYmKHRoaXMuc2hvd1NlYXJjaElucHV0PWEsdGhpcy5kcm9wZG93bi5maW5kKCIuc2VsZWN0Mi1zZWFyY2giKS50b2dnbGVDbGFzcygic2VsZWN0Mi1zZWFyY2gtaGlkZGVuIiwhYSksdGhpcy5kcm9wZG93bi5maW5kKCIuc2VsZWN0Mi1zZWFyY2giKS50b2dnbGVDbGFzcygic2VsZWN0Mi1vZmZzY3JlZW4iLCFhKSx4KHRoaXMuZHJvcGRvd24sdGhpcy5jb250YWluZXIpLnRvZ2dsZUNsYXNzKCJzZWxlY3QyLXdpdGgtc2VhcmNoYm94IixhKSl9LG9uU2VsZWN0OmZ1bmN0aW9uKHgsYSl7aWYodGhpcy50cmlnZ2VyU2VsZWN0KHgpKXt2YXIgYj10aGlzLm9wdHMuZWxlbWVudC52YWwoKSxjPXRoaXMuZGF0YSgpO3RoaXMub3B0cy5lbGVtZW50LnZhbCh0aGlzLmlkKHgpKSx0aGlzLnVwZGF0ZVNlbGVjdGlvbih4KSx0aGlzLm9wdHMuZWxlbWVudC50cmlnZ2VyKHt0eXBlOiJzZWxlY3QyLXNlbGVjdGVkIix2YWw6dGhpcy5pZCh4KSxjaG9pY2U6eH0pLHRoaXMubGFzdFNlYXJjaFRlcm09dGhpcy5zZWFyY2gudmFsKCksdGhpcy5jbG9zZSgpLGEmJmEubm9Gb2N1c3x8IXRoaXMub3B0cy5zaG91bGRGb2N1c0lucHV0KHRoaXMpfHx0aGlzLmZvY3Vzc2VyLmZvY3VzKCksZihiLHRoaXMuaWQoeCkpfHx0aGlzLnRyaWdnZXJDaGFuZ2Uoe2FkZGVkOngscmVtb3ZlZDpjfSl9fSx1cGRhdGVTZWxlY3Rpb246ZnVuY3Rpb24oeCl7dmFyIGIsYyxkPXRoaXMuc2VsZWN0aW9uLmZpbmQoIi5zZWxlY3QyLWNob3NlbiIpO3RoaXMuc2VsZWN0aW9uLmRhdGEoInNlbGVjdDItZGF0YSIseCksZC5lbXB0eSgpLG51bGwhPT14JiYoYj10aGlzLm9wdHMuZm9ybWF0U2VsZWN0aW9uKHgsZCx0aGlzLm9wdHMuZXNjYXBlTWFya3VwKSksYiE9PWEmJmQuYXBwZW5kKGIpLChjPXRoaXMub3B0cy5mb3JtYXRTZWxlY3Rpb25Dc3NDbGFzcyh4LGQpKSE9PWEmJmQuYWRkQ2xhc3MoYyksdGhpcy5zZWxlY3Rpb24ucmVtb3ZlQ2xhc3MoInNlbGVjdDItZGVmYXVsdCIpLHRoaXMub3B0cy5hbGxvd0NsZWFyJiZ0aGlzLmdldFBsYWNlaG9sZGVyKCkhPT1hJiZ0aGlzLmNvbnRhaW5lci5hZGRDbGFzcygic2VsZWN0Mi1hbGxvd2NsZWFyIil9LHZhbDpmdW5jdGlvbigpe3ZhciB4LGI9ITEsYz1udWxsLGQ9dGhpcyxlPXRoaXMuZGF0YSgpO2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiB0aGlzLm9wdHMuZWxlbWVudC52YWwoKTtpZih4PWFyZ3VtZW50c1swXSxhcmd1bWVudHMubGVuZ3RoPjEmJihiPWFyZ3VtZW50c1sxXSx0aGlzLm9wdHMuZGVidWcmJmNvbnNvbGUmJmNvbnNvbGUud2FybiYmY29uc29sZS53YXJuKCdTZWxlY3QyOiBUaGUgc2Vjb25kIG9wdGlvbiB0byBgc2VsZWN0MigidmFsIilgIGlzIG5vdCBzdXBwb3J0ZWQgaW4gU2VsZWN0MiA0LjAuMC4gVGhlIGBjaGFuZ2VgIGV2ZW50IHdpbGwgYWx3YXlzIGJlIHRyaWdnZXJlZCBpbiA0LjAuMC4nKSksdGhpcy5zZWxlY3QpdGhpcy5vcHRzLmRlYnVnJiZjb25zb2xlJiZjb25zb2xlLndhcm4mJmNvbnNvbGUud2FybignU2VsZWN0MjogU2V0dGluZyB0aGUgdmFsdWUgb24gYSA8c2VsZWN0PiB1c2luZyBgc2VsZWN0MigidmFsIilgIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQgaW4gNC4wLjAuIFlvdSBjYW4gdXNlIHRoZSBgLnZhbChuZXdWYWx1ZSkudHJpZ2dlcigiY2hhbmdlIilgIG1ldGhvZCBwcm92aWRlZCBieSBqUXVlcnkgaW5zdGVhZC4nKSx0aGlzLnNlbGVjdC52YWwoeCkuZmluZCgib3B0aW9uIikuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2VsZWN0ZWR9KS5lYWNoMihmdW5jdGlvbih4LGEpe3JldHVybiBjPWQub3B0aW9uVG9EYXRhKGEpLCExfSksdGhpcy51cGRhdGVTZWxlY3Rpb24oYyksdGhpcy5zZXRQbGFjZWhvbGRlcigpLGImJnRoaXMudHJpZ2dlckNoYW5nZSh7YWRkZWQ6YyxyZW1vdmVkOmV9KTtlbHNle2lmKCF4JiYwIT09eClyZXR1cm4gdGhpcy5jbGVhcihiKSx2b2lkIDA7aWYodGhpcy5vcHRzLmluaXRTZWxlY3Rpb249PT1hKXRocm93IG5ldyBFcnJvcigiY2Fubm90IGNhbGwgdmFsKCkgaWYgaW5pdFNlbGVjdGlvbigpIGlzIG5vdCBkZWZpbmVkIik7dGhpcy5vcHRzLmVsZW1lbnQudmFsKHgpLHRoaXMub3B0cy5pbml0U2VsZWN0aW9uKHRoaXMub3B0cy5lbGVtZW50LGZ1bmN0aW9uKHgpe2Qub3B0cy5lbGVtZW50LnZhbCh4P2QuaWQoeCk6IiIpLGQudXBkYXRlU2VsZWN0aW9uKHgpLGQuc2V0UGxhY2Vob2xkZXIoKSxiJiZkLnRyaWdnZXJDaGFuZ2Uoe2FkZGVkOngscmVtb3ZlZDplfSl9KX19LGNsZWFyU2VhcmNoOmZ1bmN0aW9uKCl7dGhpcy5zZWFyY2gudmFsKCIiKSx0aGlzLmZvY3Vzc2VyLnZhbCgiIil9LGRhdGE6ZnVuY3Rpb24oeCl7dmFyIGIsYz0hMTtyZXR1cm4gMD09PWFyZ3VtZW50cy5sZW5ndGg/KChiPXRoaXMuc2VsZWN0aW9uLmRhdGEoInNlbGVjdDItZGF0YSIpKT09YSYmKGI9bnVsbCksYik6KHRoaXMub3B0cy5kZWJ1ZyYmY29uc29sZSYmY29uc29sZS53YXJuJiZjb25zb2xlLndhcm4oJ1NlbGVjdDI6IFRoZSBgc2VsZWN0MigiZGF0YSIpYCBtZXRob2QgY2FuIG5vIGxvbmdlciBzZXQgc2VsZWN0ZWQgdmFsdWVzIGluIDQuMC4wLCBjb25zaWRlciB1c2luZyB0aGUgYC52YWwoKWAgbWV0aG9kIGluc3RlYWQuJyksYXJndW1lbnRzLmxlbmd0aD4xJiYoYz1hcmd1bWVudHNbMV0pLHg/KGI9dGhpcy5kYXRhKCksdGhpcy5vcHRzLmVsZW1lbnQudmFsKHg/dGhpcy5pZCh4KToiIiksdGhpcy51cGRhdGVTZWxlY3Rpb24oeCksYyYmdGhpcy50cmlnZ2VyQ2hhbmdlKHthZGRlZDp4LHJlbW92ZWQ6Yn0pKTp0aGlzLmNsZWFyKGMpLHZvaWQgMCl9fSksRz1EKEUse2NyZWF0ZUNvbnRhaW5lcjpmdW5jdGlvbigpe3JldHVybiB4KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKS5hdHRyKHtjbGFzczoic2VsZWN0Mi1jb250YWluZXIgc2VsZWN0Mi1jb250YWluZXItbXVsdGkifSkuaHRtbChbIjx1bCBjbGFzcz0nc2VsZWN0Mi1jaG9pY2VzJz4iLCIgIDxsaSBjbGFzcz0nc2VsZWN0Mi1zZWFyY2gtZmllbGQnPiIsIiAgICA8bGFiZWwgZm9yPScnIGNsYXNzPSdzZWxlY3QyLW9mZnNjcmVlbic+PC9sYWJlbD4iLCIgICAgPGlucHV0IHR5cGU9J3RleHQnIGF1dG9jb21wbGV0ZT0nb2ZmJyBhdXRvY29ycmVjdD0nb2ZmJyBhdXRvY2FwaXRhbGl6ZT0nb2ZmJyBzcGVsbGNoZWNrPSdmYWxzZScgY2xhc3M9J3NlbGVjdDItaW5wdXQnPiIsIiAgPC9saT4iLCI8L3VsPiIsIjxkaXYgY2xhc3M9J3NlbGVjdDItZHJvcCBzZWxlY3QyLWRyb3AtbXVsdGkgc2VsZWN0Mi1kaXNwbGF5LW5vbmUnPiIsIiAgIDx1bCBjbGFzcz0nc2VsZWN0Mi1yZXN1bHRzJz4iLCIgICA8L3VsPiIsIjwvZGl2PiJdLmpvaW4oIiIpKX0scHJlcGFyZU9wdHM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnBhcmVudC5wcmVwYXJlT3B0cy5hcHBseSh0aGlzLGFyZ3VtZW50cyksYj10aGlzO3JldHVybiJzZWxlY3QiPT09YS5lbGVtZW50LmdldCgwKS50YWdOYW1lLnRvTG93ZXJDYXNlKCk/YS5pbml0U2VsZWN0aW9uPWZ1bmN0aW9uKHgsYSl7dmFyIGM9W107eC5maW5kKCJvcHRpb24iKS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZWxlY3RlZCYmIXRoaXMuZGlzYWJsZWR9KS5lYWNoMihmdW5jdGlvbih4LGEpe2MucHVzaChiLm9wdGlvblRvRGF0YShhKSl9KSxhKGMpfToiZGF0YSJpbiBhJiYoYS5pbml0U2VsZWN0aW9uPWEuaW5pdFNlbGVjdGlvbnx8ZnVuY3Rpb24oYixjKXt2YXIgZD1nKGIudmFsKCksYS5zZXBhcmF0b3IsYS50cmFuc2Zvcm1WYWwpLGU9W107YS5xdWVyeSh7bWF0Y2hlcjpmdW5jdGlvbihiLGMsZyl7dmFyIGg9eC5ncmVwKGQsZnVuY3Rpb24oeCl7cmV0dXJuIGYoeCxhLmlkKGcpKX0pLmxlbmd0aDtyZXR1cm4gaCYmZS5wdXNoKGcpLGh9LGNhbGxiYWNrOnguaXNGdW5jdGlvbihjKT9mdW5jdGlvbigpe2Zvcih2YXIgeD1bXSxiPTA7YjxkLmxlbmd0aDtiKyspZm9yKHZhciBnPWRbYl0saD0wO2g8ZS5sZW5ndGg7aCsrKXt2YXIgaT1lW2hdO2lmKGYoZyxhLmlkKGkpKSl7eC5wdXNoKGkpLGUuc3BsaWNlKGgsMSk7YnJlYWt9fWMoeCl9Ongubm9vcH0pfSksYX0sc2VsZWN0Q2hvaWNlOmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMuY29udGFpbmVyLmZpbmQoIi5zZWxlY3QyLXNlYXJjaC1jaG9pY2UtZm9jdXMiKTthLmxlbmd0aCYmeCYmeFswXT09YVswXXx8KGEubGVuZ3RoJiZ0aGlzLm9wdHMuZWxlbWVudC50cmlnZ2VyKCJjaG9pY2UtZGVzZWxlY3RlZCIsYSksYS5yZW1vdmVDbGFzcygic2VsZWN0Mi1zZWFyY2gtY2hvaWNlLWZvY3VzIikseCYmeC5sZW5ndGgmJih0aGlzLmNsb3NlKCkseC5hZGRDbGFzcygic2VsZWN0Mi1zZWFyY2gtY2hvaWNlLWZvY3VzIiksdGhpcy5vcHRzLmVsZW1lbnQudHJpZ2dlcigiY2hvaWNlLXNlbGVjdGVkIix4KSkpfSxkZXN0cm95OmZ1bmN0aW9uKCl7eCgibGFiZWxbZm9yPSciK3RoaXMuc2VhcmNoLmF0dHIoImlkIikrIiddIikuYXR0cigiZm9yIix0aGlzLm9wdHMuZWxlbWVudC5hdHRyKCJpZCIpKSx0aGlzLnBhcmVudC5kZXN0cm95LmFwcGx5KHRoaXMsYXJndW1lbnRzKSxDLmNhbGwodGhpcywic2VhcmNoQ29udGFpbmVyIiwic2VsZWN0aW9uIil9LGluaXRDb250YWluZXI6ZnVuY3Rpb24oKXt2YXIgYSxiPSIuc2VsZWN0Mi1jaG9pY2VzIjt0aGlzLnNlYXJjaENvbnRhaW5lcj10aGlzLmNvbnRhaW5lci5maW5kKCIuc2VsZWN0Mi1zZWFyY2gtZmllbGQiKSx0aGlzLnNlbGVjdGlvbj1hPXRoaXMuY29udGFpbmVyLmZpbmQoYik7dmFyIGM9dGhpczt0aGlzLnNlbGVjdGlvbi5vbigiY2xpY2siLCIuc2VsZWN0Mi1jb250YWluZXI6bm90KC5zZWxlY3QyLWNvbnRhaW5lci1kaXNhYmxlZCkgLnNlbGVjdDItc2VhcmNoLWNob2ljZTpub3QoLnNlbGVjdDItbG9ja2VkKSIsZnVuY3Rpb24oKXtjLnNlYXJjaFswXS5mb2N1cygpLGMuc2VsZWN0Q2hvaWNlKHgodGhpcykpfSksdGhpcy5zZWFyY2guYXR0cigiaWQiLCJzMmlkX2F1dG9nZW4iK0goKSksdGhpcy5zZWFyY2gucHJldigpLnRleHQoeCgibGFiZWxbZm9yPSciK3RoaXMub3B0cy5lbGVtZW50LmF0dHIoImlkIikrIiddIikudGV4dCgpKS5hdHRyKCJmb3IiLHRoaXMuc2VhcmNoLmF0dHIoImlkIikpLHRoaXMub3B0cy5lbGVtZW50Lm9uKCJmb2N1cy5zZWxlY3QyIix0aGlzLmJpbmQoZnVuY3Rpb24oKXt0aGlzLmZvY3VzKCl9KSksdGhpcy5zZWFyY2gub24oImlucHV0IHBhc3RlIix0aGlzLmJpbmQoZnVuY3Rpb24oKXt0aGlzLnNlYXJjaC5hdHRyKCJwbGFjZWhvbGRlciIpJiYwPT10aGlzLnNlYXJjaC52YWwoKS5sZW5ndGh8fHRoaXMuaXNJbnRlcmZhY2VFbmFibGVkKCkmJih0aGlzLm9wZW5lZCgpfHx0aGlzLm9wZW4oKSl9KSksdGhpcy5zZWFyY2guYXR0cigidGFiaW5kZXgiLHRoaXMuZWxlbWVudFRhYkluZGV4KSx0aGlzLmtleWRvd25zPTAsdGhpcy5zZWFyY2gub24oImtleWRvd24iLHRoaXMuYmluZChmdW5jdGlvbih4KXtpZih0aGlzLmlzSW50ZXJmYWNlRW5hYmxlZCgpKXsrK3RoaXMua2V5ZG93bnM7dmFyIGI9YS5maW5kKCIuc2VsZWN0Mi1zZWFyY2gtY2hvaWNlLWZvY3VzIiksYz1iLnByZXYoIi5zZWxlY3QyLXNlYXJjaC1jaG9pY2U6bm90KC5zZWxlY3QyLWxvY2tlZCkiKSxkPWIubmV4dCgiLnNlbGVjdDItc2VhcmNoLWNob2ljZTpub3QoLnNlbGVjdDItbG9ja2VkKSIpLGU9bih0aGlzLnNlYXJjaCk7aWYoYi5sZW5ndGgmJih4LndoaWNoPT1NLkxFRlR8fHgud2hpY2g9PU0uUklHSFR8fHgud2hpY2g9PU0uQkFDS1NQQUNFfHx4LndoaWNoPT1NLkRFTEVURXx8eC53aGljaD09TS5FTlRFUikpe3ZhciBmPWI7cmV0dXJuIHgud2hpY2g9PU0uTEVGVCYmYy5sZW5ndGg/Zj1jOngud2hpY2g9PU0uUklHSFQ/Zj1kLmxlbmd0aD9kOm51bGw6eC53aGljaD09PU0uQkFDS1NQQUNFP3RoaXMudW5zZWxlY3QoYi5maXJzdCgpKSYmKHRoaXMuc2VhcmNoLndpZHRoKDEwKSxmPWMubGVuZ3RoP2M6ZCk6eC53aGljaD09TS5ERUxFVEU/dGhpcy51bnNlbGVjdChiLmZpcnN0KCkpJiYodGhpcy5zZWFyY2gud2lkdGgoMTApLGY9ZC5sZW5ndGg/ZDpudWxsKTp4LndoaWNoPT1NLkVOVEVSJiYoZj1udWxsKSx0aGlzLnNlbGVjdENob2ljZShmKSxvKHgpLGYmJmYubGVuZ3RofHx0aGlzLm9wZW4oKSx2b2lkIDB9aWYoKHgud2hpY2g9PT1NLkJBQ0tTUEFDRSYmMT09dGhpcy5rZXlkb3duc3x8eC53aGljaD09TS5MRUZUKSYmMD09ZS5vZmZzZXQmJiFlLmxlbmd0aClyZXR1cm4gdGhpcy5zZWxlY3RDaG9pY2UoYS5maW5kKCIuc2VsZWN0Mi1zZWFyY2gtY2hvaWNlOm5vdCguc2VsZWN0Mi1sb2NrZWQpIikubGFzdCgpKSxvKHgpLHZvaWQgMDtpZih0aGlzLnNlbGVjdENob2ljZShudWxsKSx0aGlzLm9wZW5lZCgpKXN3aXRjaCh4LndoaWNoKXtjYXNlIE0uVVA6Y2FzZSBNLkRPV046cmV0dXJuIHRoaXMubW92ZUhpZ2hsaWdodCh4LndoaWNoPT09TS5VUD8tMToxKSxvKHgpLHZvaWQgMDtjYXNlIE0uRU5URVI6cmV0dXJuIHRoaXMuc2VsZWN0SGlnaGxpZ2h0ZWQoKSxvKHgpLHZvaWQgMDtjYXNlIE0uVEFCOnJldHVybiB0aGlzLnNlbGVjdEhpZ2hsaWdodGVkKHtub0ZvY3VzOiEwfSksdGhpcy5jbG9zZSgpLHZvaWQgMDtjYXNlIE0uRVNDOnJldHVybiB0aGlzLmNhbmNlbCh4KSxvKHgpLHZvaWQgMH1pZih4LndoaWNoIT09TS5UQUImJiFNLmlzQ29udHJvbCh4KSYmIU0uaXNGdW5jdGlvbktleSh4KSYmeC53aGljaCE9PU0uQkFDS1NQQUNFJiZ4LndoaWNoIT09TS5FU0Mpe2lmKHgud2hpY2g9PT1NLkVOVEVSKXtpZighMT09PXRoaXMub3B0cy5vcGVuT25FbnRlcilyZXR1cm47aWYoeC5hbHRLZXl8fHguY3RybEtleXx8eC5zaGlmdEtleXx8eC5tZXRhS2V5KXJldHVybn10aGlzLm9wZW4oKSwoeC53aGljaD09PU0uUEFHRV9VUHx8eC53aGljaD09PU0uUEFHRV9ET1dOKSYmbyh4KSx4LndoaWNoPT09TS5FTlRFUiYmbyh4KX19fSkpLHRoaXMuc2VhcmNoLm9uKCJrZXl1cCIsdGhpcy5iaW5kKGZ1bmN0aW9uKCl7dGhpcy5rZXlkb3ducz0wLHRoaXMucmVzaXplU2VhcmNoKCl9KSksdGhpcy5zZWFyY2gub24oImJsdXIiLHRoaXMuYmluZChmdW5jdGlvbihhKXt0aGlzLmNvbnRhaW5lci5yZW1vdmVDbGFzcygic2VsZWN0Mi1jb250YWluZXItYWN0aXZlIiksdGhpcy5zZWFyY2gucmVtb3ZlQ2xhc3MoInNlbGVjdDItZm9jdXNlZCIpLHRoaXMuc2VsZWN0Q2hvaWNlKG51bGwpLHRoaXMub3BlbmVkKCl8fHRoaXMuY2xlYXJTZWFyY2goKSxhLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLHRoaXMub3B0cy5lbGVtZW50LnRyaWdnZXIoeC5FdmVudCgic2VsZWN0Mi1ibHVyIikpfSkpLHRoaXMuY29udGFpbmVyLm9uKCJjbGljayIsYix0aGlzLmJpbmQoZnVuY3Rpb24oYSl7dGhpcy5pc0ludGVyZmFjZUVuYWJsZWQoKSYmKHgoYS50YXJnZXQpLmNsb3Nlc3QoIi5zZWxlY3QyLXNlYXJjaC1jaG9pY2UiKS5sZW5ndGg+MHx8KHRoaXMuc2VsZWN0Q2hvaWNlKG51bGwpLHRoaXMuY2xlYXJQbGFjZWhvbGRlcigpLHRoaXMuY29udGFpbmVyLmhhc0NsYXNzKCJzZWxlY3QyLWNvbnRhaW5lci1hY3RpdmUiKXx8dGhpcy5vcHRzLmVsZW1lbnQudHJpZ2dlcih4LkV2ZW50KCJzZWxlY3QyLWZvY3VzIikpLHRoaXMub3BlbigpLHRoaXMuZm9jdXNTZWFyY2goKSxhLnByZXZlbnREZWZhdWx0KCkpKX0pKSx0aGlzLmNvbnRhaW5lci5vbigiZm9jdXMiLGIsdGhpcy5iaW5kKGZ1bmN0aW9uKCl7dGhpcy5pc0ludGVyZmFjZUVuYWJsZWQoKSYmKHRoaXMuY29udGFpbmVyLmhhc0NsYXNzKCJzZWxlY3QyLWNvbnRhaW5lci1hY3RpdmUiKXx8dGhpcy5vcHRzLmVsZW1lbnQudHJpZ2dlcih4LkV2ZW50KCJzZWxlY3QyLWZvY3VzIikpLHRoaXMuY29udGFpbmVyLmFkZENsYXNzKCJzZWxlY3QyLWNvbnRhaW5lci1hY3RpdmUiKSx0aGlzLmRyb3Bkb3duLmFkZENsYXNzKCJzZWxlY3QyLWRyb3AtYWN0aXZlIiksdGhpcy5jbGVhclBsYWNlaG9sZGVyKCkpfSkpLHRoaXMuaW5pdENvbnRhaW5lcldpZHRoKCksdGhpcy5vcHRzLmVsZW1lbnQuaGlkZSgpLHRoaXMuY2xlYXJTZWFyY2goKX0sZW5hYmxlSW50ZXJmYWNlOmZ1bmN0aW9uKCl7dGhpcy5wYXJlbnQuZW5hYmxlSW50ZXJmYWNlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSYmdGhpcy5zZWFyY2gucHJvcCgiZGlzYWJsZWQiLCF0aGlzLmlzSW50ZXJmYWNlRW5hYmxlZCgpKX0saW5pdFNlbGVjdGlvbjpmdW5jdGlvbigpe2lmKCIiPT09dGhpcy5vcHRzLmVsZW1lbnQudmFsKCkmJiIiPT09dGhpcy5vcHRzLmVsZW1lbnQudGV4dCgpJiYodGhpcy51cGRhdGVTZWxlY3Rpb24oW10pLHRoaXMuY2xvc2UoKSx0aGlzLmNsZWFyU2VhcmNoKCkpLHRoaXMuc2VsZWN0fHwiIiE9PXRoaXMub3B0cy5lbGVtZW50LnZhbCgpKXt2YXIgeD10aGlzO3RoaXMub3B0cy5pbml0U2VsZWN0aW9uLmNhbGwobnVsbCx0aGlzLm9wdHMuZWxlbWVudCxmdW5jdGlvbihiKXtiIT09YSYmbnVsbCE9PWImJih4LnVwZGF0ZVNlbGVjdGlvbihiKSx4LmNsb3NlKCkseC5jbGVhclNlYXJjaCgpKX0pfX0sY2xlYXJTZWFyY2g6ZnVuY3Rpb24oKXt2YXIgeD10aGlzLmdldFBsYWNlaG9sZGVyKCksYj10aGlzLmdldE1heFNlYXJjaFdpZHRoKCk7eCE9PWEmJjA9PT10aGlzLmdldFZhbCgpLmxlbmd0aCYmITE9PT10aGlzLnNlYXJjaC5oYXNDbGFzcygic2VsZWN0Mi1mb2N1c2VkIik/KHRoaXMuc2VhcmNoLnZhbCh4KS5hZGRDbGFzcygic2VsZWN0Mi1kZWZhdWx0IiksdGhpcy5zZWFyY2gud2lkdGgoYj4wP2I6dGhpcy5jb250YWluZXIuY3NzKCJ3aWR0aCIpKSk6dGhpcy5zZWFyY2gudmFsKCIiKS53aWR0aCgxMCl9LGNsZWFyUGxhY2Vob2xkZXI6ZnVuY3Rpb24oKXt0aGlzLnNlYXJjaC5oYXNDbGFzcygic2VsZWN0Mi1kZWZhdWx0IikmJnRoaXMuc2VhcmNoLnZhbCgiIikucmVtb3ZlQ2xhc3MoInNlbGVjdDItZGVmYXVsdCIpfSxvcGVuaW5nOmZ1bmN0aW9uKCl7dGhpcy5jbGVhclBsYWNlaG9sZGVyKCksdGhpcy5yZXNpemVTZWFyY2goKSx0aGlzLnBhcmVudC5vcGVuaW5nLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLmZvY3VzU2VhcmNoKCksdGhpcy5wcmVmaWxsTmV4dFNlYXJjaFRlcm0oKSx0aGlzLnVwZGF0ZVJlc3VsdHMoITApLHRoaXMub3B0cy5zaG91bGRGb2N1c0lucHV0KHRoaXMpJiZ0aGlzLnNlYXJjaC5mb2N1cygpLHRoaXMub3B0cy5lbGVtZW50LnRyaWdnZXIoeC5FdmVudCgic2VsZWN0Mi1vcGVuIikpfSxjbG9zZTpmdW5jdGlvbigpe3RoaXMub3BlbmVkKCkmJnRoaXMucGFyZW50LmNsb3NlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZm9jdXM6ZnVuY3Rpb24oKXt0aGlzLmNsb3NlKCksdGhpcy5zZWFyY2guZm9jdXMoKX0saXNGb2N1c2VkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2VhcmNoLmhhc0NsYXNzKCJzZWxlY3QyLWZvY3VzZWQiKX0sdXBkYXRlU2VsZWN0aW9uOmZ1bmN0aW9uKGEpe3ZhciBiPXt9LGM9W10sZD10aGlzO3goYSkuZWFjaChmdW5jdGlvbigpe2QuaWQodGhpcylpbiBifHwoYltkLmlkKHRoaXMpXT0wLGMucHVzaCh0aGlzKSl9KSx0aGlzLnNlbGVjdGlvbi5maW5kKCIuc2VsZWN0Mi1zZWFyY2gtY2hvaWNlIikucmVtb3ZlKCksdGhpcy5hZGRTZWxlY3RlZENob2ljZShjKSxkLnBvc3Rwcm9jZXNzUmVzdWx0cygpfSx0b2tlbml6ZTpmdW5jdGlvbigpe3ZhciB4PXRoaXMuc2VhcmNoLnZhbCgpO251bGwhPSh4PXRoaXMub3B0cy50b2tlbml6ZXIuY2FsbCh0aGlzLHgsdGhpcy5kYXRhKCksdGhpcy5iaW5kKHRoaXMub25TZWxlY3QpLHRoaXMub3B0cykpJiZ4IT1hJiYodGhpcy5zZWFyY2gudmFsKHgpLHgubGVuZ3RoPjAmJnRoaXMub3BlbigpKX0sb25TZWxlY3Q6ZnVuY3Rpb24oeCxhKXt0aGlzLnRyaWdnZXJTZWxlY3QoeCkmJiIiIT09eC50ZXh0JiYodGhpcy5hZGRTZWxlY3RlZENob2ljZSh4KSx0aGlzLm9wdHMuZWxlbWVudC50cmlnZ2VyKHt0eXBlOiJzZWxlY3RlZCIsdmFsOnRoaXMuaWQoeCksY2hvaWNlOnh9KSx0aGlzLmxhc3RTZWFyY2hUZXJtPXRoaXMuc2VhcmNoLnZhbCgpLHRoaXMuY2xlYXJTZWFyY2goKSx0aGlzLnVwZGF0ZVJlc3VsdHMoKSwodGhpcy5zZWxlY3R8fCF0aGlzLm9wdHMuY2xvc2VPblNlbGVjdCkmJnRoaXMucG9zdHByb2Nlc3NSZXN1bHRzKHgsITEsITA9PT10aGlzLm9wdHMuY2xvc2VPblNlbGVjdCksdGhpcy5vcHRzLmNsb3NlT25TZWxlY3Q/KHRoaXMuY2xvc2UoKSx0aGlzLnNlYXJjaC53aWR0aCgxMCkpOnRoaXMuY291bnRTZWxlY3RhYmxlUmVzdWx0cygpPjA/KHRoaXMuc2VhcmNoLndpZHRoKDEwKSx0aGlzLnJlc2l6ZVNlYXJjaCgpLHRoaXMuZ2V0TWF4aW11bVNlbGVjdGlvblNpemUoKT4wJiZ0aGlzLnZhbCgpLmxlbmd0aD49dGhpcy5nZXRNYXhpbXVtU2VsZWN0aW9uU2l6ZSgpP3RoaXMudXBkYXRlUmVzdWx0cyghMCk6dGhpcy5wcmVmaWxsTmV4dFNlYXJjaFRlcm0oKSYmdGhpcy51cGRhdGVSZXN1bHRzKCksdGhpcy5wb3NpdGlvbkRyb3Bkb3duKCkpOih0aGlzLmNsb3NlKCksdGhpcy5zZWFyY2gud2lkdGgoMTApKSx0aGlzLnRyaWdnZXJDaGFuZ2Uoe2FkZGVkOnh9KSxhJiZhLm5vRm9jdXN8fHRoaXMuZm9jdXNTZWFyY2goKSl9LGNhbmNlbDpmdW5jdGlvbigpe3RoaXMuY2xvc2UoKSx0aGlzLmZvY3VzU2VhcmNoKCl9LGFkZFNlbGVjdGVkQ2hvaWNlOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuZ2V0VmFsKCksYz10aGlzO3goYSkuZWFjaChmdW5jdGlvbigpe2IucHVzaChjLmNyZWF0ZUNob2ljZSh0aGlzKSl9KSx0aGlzLnNldFZhbChiKX0sY3JlYXRlQ2hvaWNlOmZ1bmN0aW9uKGIpe3ZhciBjLGQsZT0hYi5sb2NrZWQsZj14KCI8bGkgY2xhc3M9J3NlbGVjdDItc2VhcmNoLWNob2ljZSc+ICAgIDxkaXY+PC9kaXY+ICAgIDxhIGhyZWY9JyMnIGNsYXNzPSdzZWxlY3QyLXNlYXJjaC1jaG9pY2UtY2xvc2UnIHRhYmluZGV4PSctMSc+PC9hPjwvbGk+IiksZz14KCI8bGkgY2xhc3M9J3NlbGVjdDItc2VhcmNoLWNob2ljZSBzZWxlY3QyLWxvY2tlZCc+PGRpdj48L2Rpdj48L2xpPiIpLGg9ZT9mOmcsaT10aGlzLmlkKGIpO3JldHVybihjPXRoaXMub3B0cy5mb3JtYXRTZWxlY3Rpb24oYixoLmZpbmQoImRpdiIpLHRoaXMub3B0cy5lc2NhcGVNYXJrdXApKSE9YSYmaC5maW5kKCJkaXYiKS5yZXBsYWNlV2l0aCh4KCI8ZGl2PjwvZGl2PiIpLmh0bWwoYykpLChkPXRoaXMub3B0cy5mb3JtYXRTZWxlY3Rpb25Dc3NDbGFzcyhiLGguZmluZCgiZGl2IikpKSE9YSYmaC5hZGRDbGFzcyhkKSxlJiZoLmZpbmQoIi5zZWxlY3QyLXNlYXJjaC1jaG9pY2UtY2xvc2UiKS5vbigibW91c2Vkb3duIixvKS5vbigiY2xpY2sgZGJsY2xpY2siLHRoaXMuYmluZChmdW5jdGlvbihhKXt0aGlzLmlzSW50ZXJmYWNlRW5hYmxlZCgpJiYodGhpcy51bnNlbGVjdCh4KGEudGFyZ2V0KSksdGhpcy5zZWxlY3Rpb24uZmluZCgiLnNlbGVjdDItc2VhcmNoLWNob2ljZS1mb2N1cyIpLnJlbW92ZUNsYXNzKCJzZWxlY3QyLXNlYXJjaC1jaG9pY2UtZm9jdXMiKSxvKGEpLHRoaXMuY2xvc2UoKSx0aGlzLmZvY3VzU2VhcmNoKCkpfSkpLm9uKCJmb2N1cyIsdGhpcy5iaW5kKGZ1bmN0aW9uKCl7dGhpcy5pc0ludGVyZmFjZUVuYWJsZWQoKSYmKHRoaXMuY29udGFpbmVyLmFkZENsYXNzKCJzZWxlY3QyLWNvbnRhaW5lci1hY3RpdmUiKSx0aGlzLmRyb3Bkb3duLmFkZENsYXNzKCJzZWxlY3QyLWRyb3AtYWN0aXZlIikpfSkpLGguZGF0YSgic2VsZWN0Mi1kYXRhIixiKSxoLmluc2VydEJlZm9yZSh0aGlzLnNlYXJjaENvbnRhaW5lciksaX0sdW5zZWxlY3Q6ZnVuY3Rpb24oYSl7dmFyIGIsYyxlPXRoaXMuZ2V0VmFsKCk7aWYoMD09PShhPWEuY2xvc2VzdCgiLnNlbGVjdDItc2VhcmNoLWNob2ljZSIpKS5sZW5ndGgpdGhyb3ciSW52YWxpZCBhcmd1bWVudDogIithKyIuIE11c3QgYmUgLnNlbGVjdDItc2VhcmNoLWNob2ljZSI7aWYoYj1hLmRhdGEoInNlbGVjdDItZGF0YSIpKXt2YXIgZj14LkV2ZW50KCJzZWxlY3QyLXJlbW92aW5nIik7aWYoZi52YWw9dGhpcy5pZChiKSxmLmNob2ljZT1iLHRoaXMub3B0cy5lbGVtZW50LnRyaWdnZXIoZiksZi5pc0RlZmF1bHRQcmV2ZW50ZWQoKSlyZXR1cm4hMTtmb3IoOyhjPWQodGhpcy5pZChiKSxlKSk+PTA7KWUuc3BsaWNlKGMsMSksdGhpcy5zZXRWYWwoZSksdGhpcy5zZWxlY3QmJnRoaXMucG9zdHByb2Nlc3NSZXN1bHRzKCk7cmV0dXJuIGEucmVtb3ZlKCksdGhpcy5vcHRzLmVsZW1lbnQudHJpZ2dlcih7dHlwZToic2VsZWN0Mi1yZW1vdmVkIix2YWw6dGhpcy5pZChiKSxjaG9pY2U6Yn0pLHRoaXMudHJpZ2dlckNoYW5nZSh7cmVtb3ZlZDpifSksITB9fSxwb3N0cHJvY2Vzc1Jlc3VsdHM6ZnVuY3Rpb24oeCxhLGIpe3ZhciBjPXRoaXMuZ2V0VmFsKCksZT10aGlzLnJlc3VsdHMuZmluZCgiLnNlbGVjdDItcmVzdWx0IiksZj10aGlzLnJlc3VsdHMuZmluZCgiLnNlbGVjdDItcmVzdWx0LXdpdGgtY2hpbGRyZW4iKSxnPXRoaXM7ZS5lYWNoMihmdW5jdGlvbih4LGEpe2QoZy5pZChhLmRhdGEoInNlbGVjdDItZGF0YSIpKSxjKT49MCYmKGEuYWRkQ2xhc3MoInNlbGVjdDItc2VsZWN0ZWQiKSxhLmZpbmQoIi5zZWxlY3QyLXJlc3VsdC1zZWxlY3RhYmxlIikuYWRkQ2xhc3MoInNlbGVjdDItc2VsZWN0ZWQiKSl9KSxmLmVhY2gyKGZ1bmN0aW9uKHgsYSl7YS5pcygiLnNlbGVjdDItcmVzdWx0LXNlbGVjdGFibGUiKXx8MCE9PWEuZmluZCgiLnNlbGVjdDItcmVzdWx0LXNlbGVjdGFibGU6bm90KC5zZWxlY3QyLXNlbGVjdGVkKSIpLmxlbmd0aHx8YS5hZGRDbGFzcygic2VsZWN0Mi1zZWxlY3RlZCIpfSksLTE9PXRoaXMuaGlnaGxpZ2h0KCkmJiExIT09YiYmITA9PT10aGlzLm9wdHMuY2xvc2VPblNlbGVjdCYmZy5oaWdobGlnaHQoMCksIXRoaXMub3B0cy5jcmVhdGVTZWFyY2hDaG9pY2UmJiFlLmZpbHRlcigiLnNlbGVjdDItcmVzdWx0Om5vdCguc2VsZWN0Mi1zZWxlY3RlZCkiKS5sZW5ndGg+MCYmKCF4fHx4JiYheC5tb3JlJiYwPT09dGhpcy5yZXN1bHRzLmZpbmQoIi5zZWxlY3QyLW5vLXJlc3VsdHMiKS5sZW5ndGgpJiZ5KGcub3B0cy5mb3JtYXROb01hdGNoZXMsImZvcm1hdE5vTWF0Y2hlcyIpJiZ0aGlzLnJlc3VsdHMuYXBwZW5kKCI8bGkgY2xhc3M9J3NlbGVjdDItbm8tcmVzdWx0cyc+Iit6KGcub3B0cy5mb3JtYXROb01hdGNoZXMsZy5vcHRzLmVsZW1lbnQsZy5zZWFyY2gudmFsKCkpKyI8L2xpPiIpfSxnZXRNYXhTZWFyY2hXaWR0aDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNlbGVjdGlvbi53aWR0aCgpLWgodGhpcy5zZWFyY2gpfSxyZXNpemVTZWFyY2g6ZnVuY3Rpb24oKXt2YXIgeCxhLGIsYyxkPWgodGhpcy5zZWFyY2gpO3g9cSh0aGlzLnNlYXJjaCkrMTAsYT10aGlzLnNlYXJjaC5vZmZzZXQoKS5sZWZ0LHg+KGM9KGI9dGhpcy5zZWxlY3Rpb24ud2lkdGgoKSktKGEtdGhpcy5zZWxlY3Rpb24ub2Zmc2V0KCkubGVmdCktZCkmJihjPWItZCksNDA+YyYmKGM9Yi1kKSwwPj1jJiYoYz14KSx0aGlzLnNlYXJjaC53aWR0aChNYXRoLmZsb29yKGMpKX0sZ2V0VmFsOmZ1bmN0aW9uKCl7dmFyIHg7cmV0dXJuIHRoaXMuc2VsZWN0P251bGw9PT0oeD10aGlzLnNlbGVjdC52YWwoKSk/W106eDpnKHg9dGhpcy5vcHRzLmVsZW1lbnQudmFsKCksdGhpcy5vcHRzLnNlcGFyYXRvcix0aGlzLm9wdHMudHJhbnNmb3JtVmFsKX0sc2V0VmFsOmZ1bmN0aW9uKGEpe2lmKHRoaXMuc2VsZWN0KXRoaXMuc2VsZWN0LnZhbChhKTtlbHNle3ZhciBiPVtdLGM9e307eChhKS5lYWNoKGZ1bmN0aW9uKCl7dGhpcyBpbiBjfHwoYi5wdXNoKHRoaXMpLGNbdGhpc109MCl9KSx0aGlzLm9wdHMuZWxlbWVudC52YWwoMD09PWIubGVuZ3RoPyIiOmIuam9pbih0aGlzLm9wdHMuc2VwYXJhdG9yKSl9fSxidWlsZENoYW5nZURldGFpbHM6ZnVuY3Rpb24oeCxhKXthPWEuc2xpY2UoMCkseD14LnNsaWNlKDApO2Zvcih2YXIgYj0wO2I8YS5sZW5ndGg7YisrKWZvcih2YXIgYz0wO2M8eC5sZW5ndGg7YysrKWlmKGYodGhpcy5vcHRzLmlkKGFbYl0pLHRoaXMub3B0cy5pZCh4W2NdKSkpe2Euc3BsaWNlKGIsMSksYi0tLHguc3BsaWNlKGMsMSk7YnJlYWt9cmV0dXJue2FkZGVkOmEscmVtb3ZlZDp4fX0sdmFsOmZ1bmN0aW9uKGIsYyl7dmFyIGQsZT10aGlzO2lmKDA9PT1hcmd1bWVudHMubGVuZ3RoKXJldHVybiB0aGlzLmdldFZhbCgpO2lmKChkPXRoaXMuZGF0YSgpKS5sZW5ndGh8fChkPVtdKSwhYiYmMCE9PWIpcmV0dXJuIHRoaXMub3B0cy5lbGVtZW50LnZhbCgiIiksdGhpcy51cGRhdGVTZWxlY3Rpb24oW10pLHRoaXMuY2xlYXJTZWFyY2goKSxjJiZ0aGlzLnRyaWdnZXJDaGFuZ2Uoe2FkZGVkOnRoaXMuZGF0YSgpLHJlbW92ZWQ6ZH0pLHZvaWQgMDtpZih0aGlzLnNldFZhbChiKSx0aGlzLnNlbGVjdCl0aGlzLm9wdHMuaW5pdFNlbGVjdGlvbih0aGlzLnNlbGVjdCx0aGlzLmJpbmQodGhpcy51cGRhdGVTZWxlY3Rpb24pKSxjJiZ0aGlzLnRyaWdnZXJDaGFuZ2UodGhpcy5idWlsZENoYW5nZURldGFpbHMoZCx0aGlzLmRhdGEoKSkpO2Vsc2V7aWYodGhpcy5vcHRzLmluaXRTZWxlY3Rpb249PT1hKXRocm93IG5ldyBFcnJvcigidmFsKCkgY2Fubm90IGJlIGNhbGxlZCBpZiBpbml0U2VsZWN0aW9uKCkgaXMgbm90IGRlZmluZWQiKTt0aGlzLm9wdHMuaW5pdFNlbGVjdGlvbih0aGlzLm9wdHMuZWxlbWVudCxmdW5jdGlvbihhKXt2YXIgYj14Lm1hcChhLGUuaWQpO2Uuc2V0VmFsKGIpLGUudXBkYXRlU2VsZWN0aW9uKGEpLGUuY2xlYXJTZWFyY2goKSxjJiZlLnRyaWdnZXJDaGFuZ2UoZS5idWlsZENoYW5nZURldGFpbHMoZCxlLmRhdGEoKSkpfSl9dGhpcy5jbGVhclNlYXJjaCgpfSxvblNvcnRTdGFydDpmdW5jdGlvbigpe2lmKHRoaXMuc2VsZWN0KXRocm93IG5ldyBFcnJvcigiU29ydGluZyBvZiBlbGVtZW50cyBpcyBub3Qgc3VwcG9ydGVkIHdoZW4gYXR0YWNoZWQgdG8gPHNlbGVjdD4uIEF0dGFjaCB0byA8aW5wdXQgdHlwZT0naGlkZGVuJy8+IGluc3RlYWQuIik7dGhpcy5zZWFyY2gud2lkdGgoMCksdGhpcy5zZWFyY2hDb250YWluZXIuaGlkZSgpfSxvblNvcnRFbmQ6ZnVuY3Rpb24oKXt2YXIgYT1bXSxiPXRoaXM7dGhpcy5zZWFyY2hDb250YWluZXIuc2hvdygpLHRoaXMuc2VhcmNoQ29udGFpbmVyLmFwcGVuZFRvKHRoaXMuc2VhcmNoQ29udGFpbmVyLnBhcmVudCgpKSx0aGlzLnJlc2l6ZVNlYXJjaCgpLHRoaXMuc2VsZWN0aW9uLmZpbmQoIi5zZWxlY3QyLXNlYXJjaC1jaG9pY2UiKS5lYWNoKGZ1bmN0aW9uKCl7YS5wdXNoKGIub3B0cy5pZCh4KHRoaXMpLmRhdGEoInNlbGVjdDItZGF0YSIpKSl9KSx0aGlzLnNldFZhbChhKSx0aGlzLnRyaWdnZXJDaGFuZ2UoKX0sZGF0YTpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZT10aGlzO3JldHVybiAwPT09YXJndW1lbnRzLmxlbmd0aD90aGlzLnNlbGVjdGlvbi5jaGlsZHJlbigiLnNlbGVjdDItc2VhcmNoLWNob2ljZSIpLm1hcChmdW5jdGlvbigpe3JldHVybiB4KHRoaXMpLmRhdGEoInNlbGVjdDItZGF0YSIpfSkuZ2V0KCk6KGQ9dGhpcy5kYXRhKCksYXx8KGE9W10pLGM9eC5tYXAoYSxmdW5jdGlvbih4KXtyZXR1cm4gZS5vcHRzLmlkKHgpfSksdGhpcy5zZXRWYWwoYyksdGhpcy51cGRhdGVTZWxlY3Rpb24oYSksdGhpcy5jbGVhclNlYXJjaCgpLGImJnRoaXMudHJpZ2dlckNoYW5nZSh0aGlzLmJ1aWxkQ2hhbmdlRGV0YWlscyhkLHRoaXMuZGF0YSgpKSksdm9pZCAwKX19KSx4LmZuLnNlbGVjdDI9ZnVuY3Rpb24oKXt2YXIgYixjLGUsZixnLGg9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApLGk9WyJ2YWwiLCJkZXN0cm95Iiwib3BlbmVkIiwib3BlbiIsImNsb3NlIiwiZm9jdXMiLCJpc0ZvY3VzZWQiLCJjb250YWluZXIiLCJkcm9wZG93biIsIm9uU29ydFN0YXJ0Iiwib25Tb3J0RW5kIiwiZW5hYmxlIiwiZGlzYWJsZSIsInJlYWRvbmx5IiwicG9zaXRpb25Ecm9wZG93biIsImRhdGEiLCJzZWFyY2giXSxqPVsib3BlbmVkIiwiaXNGb2N1c2VkIiwiY29udGFpbmVyIiwiZHJvcGRvd24iXSxrPVsidmFsIiwiZGF0YSJdLGw9e3NlYXJjaDoiZXh0ZXJuYWxTZWFyY2gifTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7aWYoMD09PWgubGVuZ3RofHwib2JqZWN0Ij09dHlwZW9mIGhbMF0pKGI9MD09PWgubGVuZ3RoP3t9OnguZXh0ZW5kKHt9LGhbMF0pKS5lbGVtZW50PXgodGhpcyksInNlbGVjdCI9PT1iLmVsZW1lbnQuZ2V0KDApLnRhZ05hbWUudG9Mb3dlckNhc2UoKT9nPWIuZWxlbWVudC5wcm9wKCJtdWx0aXBsZSIpOihnPWIubXVsdGlwbGV8fCExLCJ0YWdzImluIGImJihiLm11bHRpcGxlPWc9ITApKSwoYz1nP25ldyB3aW5kb3cuU2VsZWN0Mi5jbGFzcy5tdWx0aTpuZXcgd2luZG93LlNlbGVjdDIuY2xhc3Muc2luZ2xlKS5pbml0KGIpO2Vsc2V7aWYoInN0cmluZyIhPXR5cGVvZiBoWzBdKXRocm93IkludmFsaWQgYXJndW1lbnRzIHRvIHNlbGVjdDIgcGx1Z2luOiAiK2g7aWYoZChoWzBdLGkpPDApdGhyb3ciVW5rbm93biBtZXRob2Q6ICIraFswXTtpZihmPWEsKGM9eCh0aGlzKS5kYXRhKCJzZWxlY3QyIikpPT09YSlyZXR1cm47aWYoImNvbnRhaW5lciI9PT0oZT1oWzBdKT9mPWMuY29udGFpbmVyOiJkcm9wZG93biI9PT1lP2Y9Yy5kcm9wZG93bjoobFtlXSYmKGU9bFtlXSksZj1jW2VdLmFwcGx5KGMsaC5zbGljZSgxKSkpLGQoaFswXSxqKT49MHx8ZChoWzBdLGspPj0wJiYxPT1oLmxlbmd0aClyZXR1cm4hMX19KSxmPT09YT90aGlzOmZ9LHguZm4uc2VsZWN0Mi5kZWZhdWx0cz17ZGVidWc6ITEsd2lkdGg6ImNvcHkiLGxvYWRNb3JlUGFkZGluZzowLGNsb3NlT25TZWxlY3Q6ITAsb3Blbk9uRW50ZXI6ITAsY29udGFpbmVyQ3NzOnt9LGRyb3Bkb3duQ3NzOnt9LGNvbnRhaW5lckNzc0NsYXNzOiIiLGRyb3Bkb3duQ3NzQ2xhc3M6IiIsZm9ybWF0UmVzdWx0OmZ1bmN0aW9uKHgsYSxiLGMpe3ZhciBkPVtdO3JldHVybiBzKHRoaXMudGV4dCh4KSxiLnRlcm0sZCxjKSxkLmpvaW4oIiIpfSx0cmFuc2Zvcm1WYWw6ZnVuY3Rpb24oYSl7cmV0dXJuIHgudHJpbShhKX0sZm9ybWF0U2VsZWN0aW9uOmZ1bmN0aW9uKHgsYixjKXtyZXR1cm4geD9jKHRoaXMudGV4dCh4KSk6YX0sc29ydFJlc3VsdHM6ZnVuY3Rpb24oeCl7cmV0dXJuIHh9LGZvcm1hdFJlc3VsdENzc0NsYXNzOmZ1bmN0aW9uKHgpe3JldHVybiB4LmNzc30sZm9ybWF0U2VsZWN0aW9uQ3NzQ2xhc3M6ZnVuY3Rpb24oKXtyZXR1cm4gYX0sbWluaW11bVJlc3VsdHNGb3JTZWFyY2g6MCxtaW5pbXVtSW5wdXRMZW5ndGg6MCxtYXhpbXVtSW5wdXRMZW5ndGg6bnVsbCxtYXhpbXVtU2VsZWN0aW9uU2l6ZTowLGlkOmZ1bmN0aW9uKHgpe3JldHVybiB4PT1hP251bGw6eC5pZH0sdGV4dDpmdW5jdGlvbihhKXtyZXR1cm4gYSYmdGhpcy5kYXRhJiZ0aGlzLmRhdGEudGV4dD94LmlzRnVuY3Rpb24odGhpcy5kYXRhLnRleHQpP3RoaXMuZGF0YS50ZXh0KGEpOmFbdGhpcy5kYXRhLnRleHRdOmEudGV4dH0sbWF0Y2hlcjpmdW5jdGlvbih4LGEpe3JldHVybiBjKCIiK2EpLnRvVXBwZXJDYXNlKCkuaW5kZXhPZihjKCIiK3gpLnRvVXBwZXJDYXNlKCkpPj0wfSxzZXBhcmF0b3I6IiwiLHRva2VuU2VwYXJhdG9yczpbXSx0b2tlbml6ZXI6Qixlc2NhcGVNYXJrdXA6dCxibHVyT25DaGFuZ2U6ITEsc2VsZWN0T25CbHVyOiExLGFkYXB0Q29udGFpbmVyQ3NzQ2xhc3M6ZnVuY3Rpb24oeCl7cmV0dXJuIHh9LGFkYXB0RHJvcGRvd25Dc3NDbGFzczpmdW5jdGlvbigpe3JldHVybiBudWxsfSxuZXh0U2VhcmNoVGVybTpmdW5jdGlvbigpe3JldHVybiBhfSxzZWFyY2hJbnB1dFBsYWNlaG9sZGVyOiIiLGNyZWF0ZVNlYXJjaENob2ljZVBvc2l0aW9uOiJ0b3AiLHNob3VsZEZvY3VzSW5wdXQ6ZnVuY3Rpb24oeCl7cmV0dXJuISgoIm9udG91Y2hzdGFydCJpbiB3aW5kb3d8fG5hdmlnYXRvci5tc01heFRvdWNoUG9pbnRzPjApJiZ4Lm9wdHMubWluaW11bVJlc3VsdHNGb3JTZWFyY2g8MCl9fSx4LmZuLnNlbGVjdDIubG9jYWxlcz1bXSx4LmZuLnNlbGVjdDIubG9jYWxlcy5lbj17Zm9ybWF0TWF0Y2hlczpmdW5jdGlvbih4KXtyZXR1cm4gMT09PXg/Ik9uZSByZXN1bHQgaXMgYXZhaWxhYmxlLCBwcmVzcyBlbnRlciB0byBzZWxlY3QgaXQuIjp4KyIgcmVzdWx0cyBhcmUgYXZhaWxhYmxlLCB1c2UgdXAgYW5kIGRvd24gYXJyb3cga2V5cyB0byBuYXZpZ2F0ZS4ifSxmb3JtYXROb01hdGNoZXM6ZnVuY3Rpb24oKXtyZXR1cm4iTm8gbWF0Y2hlcyBmb3VuZCJ9LGZvcm1hdEFqYXhFcnJvcjpmdW5jdGlvbigpe3JldHVybiJMb2FkaW5nIGZhaWxlZCJ9LGZvcm1hdElucHV0VG9vU2hvcnQ6ZnVuY3Rpb24oeCxhKXt2YXIgYj1hLXgubGVuZ3RoO3JldHVybiJQbGVhc2UgZW50ZXIgIitiKyIgb3IgbW9yZSBjaGFyYWN0ZXIiKygxPT1iPyIiOiJzIil9LGZvcm1hdElucHV0VG9vTG9uZzpmdW5jdGlvbih4LGEpe3ZhciBiPXgubGVuZ3RoLWE7cmV0dXJuIlBsZWFzZSBkZWxldGUgIitiKyIgY2hhcmFjdGVyIisoMT09Yj8iIjoicyIpfSxmb3JtYXRTZWxlY3Rpb25Ub29CaWc6ZnVuY3Rpb24oeCl7cmV0dXJuIllvdSBjYW4gb25seSBzZWxlY3QgIit4KyIgaXRlbSIrKDE9PXg/IiI6InMiKX0sZm9ybWF0TG9hZE1vcmU6ZnVuY3Rpb24oKXtyZXR1cm4iTG9hZGluZyBtb3JlIHJlc3VsdHPigKYifSxmb3JtYXRTZWFyY2hpbmc6ZnVuY3Rpb24oKXtyZXR1cm4iU2VhcmNoaW5n4oCmIn19LHguZXh0ZW5kKHguZm4uc2VsZWN0Mi5kZWZhdWx0cyx4LmZuLnNlbGVjdDIubG9jYWxlcy5lbikseC5mbi5zZWxlY3QyLmFqYXhEZWZhdWx0cz17dHJhbnNwb3J0OnguYWpheCxwYXJhbXM6e3R5cGU6IkdFVCIsY2FjaGU6ITEsZGF0YVR5cGU6Impzb24ifX0sd2luZG93LlNlbGVjdDI9e3F1ZXJ5OnthamF4OnUsbG9jYWw6dix0YWdzOnd9LHV0aWw6e2RlYm91bmNlOmssbWFya01hdGNoOnMsZXNjYXBlTWFya3VwOnQsc3RyaXBEaWFjcml0aWNzOmN9LGNsYXNzOnthYnN0cmFjdDpFLHNpbmdsZTpGLG11bHRpOkd9fX19KGpRdWVyeSk7CgovKkNvZGVNaXJyb3IgNS45LjEqLwohZnVuY3Rpb24oeCl7aWYoIm9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZSltb2R1bGUuZXhwb3J0cz14KCk7ZWxzZXtpZigiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kKXJldHVybiBkZWZpbmUoW10seCk7dGhpcy5Db2RlTWlycm9yPXgoKX19KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHgoYixjKXtpZighKHRoaXMgaW5zdGFuY2VvZiB4KSlyZXR1cm4gbmV3IHgoYixjKTt0aGlzLm9wdGlvbnM9Yz1jP0tkKGMpOnt9LEtkKFplLGMsITEpLG0oYyk7dmFyIGQ9Yy52YWx1ZTsic3RyaW5nIj09dHlwZW9mIGQmJihkPW5ldyB2ZihkLGMubW9kZSxudWxsLGMubGluZVNlcGFyYXRvcikpLHRoaXMuZG9jPWQ7dmFyIGU9bmV3IHguaW5wdXRTdHlsZXNbYy5pbnB1dFN0eWxlXSh0aGlzKSxmPXRoaXMuZGlzcGxheT1uZXcgYShiLGQsZSk7Zi53cmFwcGVyLkNvZGVNaXJyb3I9dGhpcyxpKHRoaXMpLGcodGhpcyksYy5saW5lV3JhcHBpbmcmJih0aGlzLmRpc3BsYXkud3JhcHBlci5jbGFzc05hbWUrPSIgQ29kZU1pcnJvci13cmFwIiksYy5hdXRvZm9jdXMmJiFCZSYmZi5pbnB1dC5mb2N1cygpLHEodGhpcyksdGhpcy5zdGF0ZT17a2V5TWFwczpbXSxvdmVybGF5czpbXSxtb2RlR2VuOjAsb3ZlcndyaXRlOiExLGRlbGF5aW5nQmx1ckV2ZW50OiExLGZvY3VzZWQ6ITEsc3VwcHJlc3NFZGl0czohMSxwYXN0ZUluY29taW5nOiExLGN1dEluY29taW5nOiExLHNlbGVjdGluZ1RleHQ6ITEsZHJhZ2dpbmdUZXh0OiExLGhpZ2hsaWdodDpuZXcgRGQsa2V5U2VxOm51bGwsc3BlY2lhbENoYXJzOm51bGx9O3ZhciBoPXRoaXM7Zm9yKHZhciBqIGluIHFlJiYxMT5yZSYmc2V0VGltZW91dChmdW5jdGlvbigpe2guZGlzcGxheS5pbnB1dC5yZXNldCghMCl9LDIwKSxRYSh0aGlzKSxXZCgpLHRhKHRoaXMpLHRoaXMuY3VyT3AuZm9yY2VVcGRhdGU9ITAsWGModGhpcyxkKSxjLmF1dG9mb2N1cyYmIUJlfHxoLmhhc0ZvY3VzKCk/c2V0VGltZW91dChMZChwYix0aGlzKSwyMCk6cWIodGhpcyksJGUpJGUuaGFzT3duUHJvcGVydHkoaikmJiRlW2pdKHRoaXMsY1tqXSxfZSk7dih0aGlzKSxjLmZpbmlzaEluaXQmJmMuZmluaXNoSW5pdCh0aGlzKTtmb3IodmFyIGs9MDtrPGNmLmxlbmd0aDsrK2spY2Zba10odGhpcyk7dmEodGhpcyksc2UmJmMubGluZVdyYXBwaW5nJiYib3B0aW1pemVsZWdpYmlsaXR5Ij09Z2V0Q29tcHV0ZWRTdHlsZShmLmxpbmVEaXYpLnRleHRSZW5kZXJpbmcmJihmLmxpbmVEaXYuc3R5bGUudGV4dFJlbmRlcmluZz0iYXV0byIpfWZ1bmN0aW9uIGEoeCxhLGIpe3ZhciBjPXRoaXM7dGhpcy5pbnB1dD1iLGMuc2Nyb2xsYmFyRmlsbGVyPVBkKCJkaXYiLG51bGwsIkNvZGVNaXJyb3Itc2Nyb2xsYmFyLWZpbGxlciIpLGMuc2Nyb2xsYmFyRmlsbGVyLnNldEF0dHJpYnV0ZSgiY20tbm90LWNvbnRlbnQiLCJ0cnVlIiksYy5ndXR0ZXJGaWxsZXI9UGQoImRpdiIsbnVsbCwiQ29kZU1pcnJvci1ndXR0ZXItZmlsbGVyIiksYy5ndXR0ZXJGaWxsZXIuc2V0QXR0cmlidXRlKCJjbS1ub3QtY29udGVudCIsInRydWUiKSxjLmxpbmVEaXY9UGQoImRpdiIsbnVsbCwiQ29kZU1pcnJvci1jb2RlIiksYy5zZWxlY3Rpb25EaXY9UGQoImRpdiIsbnVsbCxudWxsLCJwb3NpdGlvbjogcmVsYXRpdmU7IHotaW5kZXg6IDEiKSxjLmN1cnNvckRpdj1QZCgiZGl2IixudWxsLCJDb2RlTWlycm9yLWN1cnNvcnMiKSxjLm1lYXN1cmU9UGQoImRpdiIsbnVsbCwiQ29kZU1pcnJvci1tZWFzdXJlIiksYy5saW5lTWVhc3VyZT1QZCgiZGl2IixudWxsLCJDb2RlTWlycm9yLW1lYXN1cmUiKSxjLmxpbmVTcGFjZT1QZCgiZGl2IixbYy5tZWFzdXJlLGMubGluZU1lYXN1cmUsYy5zZWxlY3Rpb25EaXYsYy5jdXJzb3JEaXYsYy5saW5lRGl2XSxudWxsLCJwb3NpdGlvbjogcmVsYXRpdmU7IG91dGxpbmU6IG5vbmUiKSxjLm1vdmVyPVBkKCJkaXYiLFtQZCgiZGl2IixbYy5saW5lU3BhY2VdLCJDb2RlTWlycm9yLWxpbmVzIildLG51bGwsInBvc2l0aW9uOiByZWxhdGl2ZSIpLGMuc2l6ZXI9UGQoImRpdiIsW2MubW92ZXJdLCJDb2RlTWlycm9yLXNpemVyIiksYy5zaXplcldpZHRoPW51bGwsYy5oZWlnaHRGb3JjZXI9UGQoImRpdiIsbnVsbCxudWxsLCJwb3NpdGlvbjogYWJzb2x1dGU7IGhlaWdodDogIitIZisicHg7IHdpZHRoOiAxcHg7IiksYy5ndXR0ZXJzPVBkKCJkaXYiLG51bGwsIkNvZGVNaXJyb3ItZ3V0dGVycyIpLGMubGluZUd1dHRlcj1udWxsLGMuc2Nyb2xsZXI9UGQoImRpdiIsW2Muc2l6ZXIsYy5oZWlnaHRGb3JjZXIsYy5ndXR0ZXJzXSwiQ29kZU1pcnJvci1zY3JvbGwiKSxjLnNjcm9sbGVyLnNldEF0dHJpYnV0ZSgidGFiSW5kZXgiLCItMSIpLGMud3JhcHBlcj1QZCgiZGl2IixbYy5zY3JvbGxiYXJGaWxsZXIsYy5ndXR0ZXJGaWxsZXIsYy5zY3JvbGxlcl0sIkNvZGVNaXJyb3IiKSxxZSYmOD5yZSYmKGMuZ3V0dGVycy5zdHlsZS56SW5kZXg9LTEsYy5zY3JvbGxlci5zdHlsZS5wYWRkaW5nUmlnaHQ9MCksc2V8fG5lJiZCZXx8KGMuc2Nyb2xsZXIuZHJhZ2dhYmxlPSEwKSx4JiYoeC5hcHBlbmRDaGlsZD94LmFwcGVuZENoaWxkKGMud3JhcHBlcik6eChjLndyYXBwZXIpKSxjLnZpZXdGcm9tPWMudmlld1RvPWEuZmlyc3QsYy5yZXBvcnRlZFZpZXdGcm9tPWMucmVwb3J0ZWRWaWV3VG89YS5maXJzdCxjLnZpZXc9W10sYy5yZW5kZXJlZFZpZXc9bnVsbCxjLmV4dGVybmFsTWVhc3VyZWQ9bnVsbCxjLnZpZXdPZmZzZXQ9MCxjLmxhc3RXcmFwSGVpZ2h0PWMubGFzdFdyYXBXaWR0aD0wLGMudXBkYXRlTGluZU51bWJlcnM9bnVsbCxjLm5hdGl2ZUJhcldpZHRoPWMuYmFySGVpZ2h0PWMuYmFyV2lkdGg9MCxjLnNjcm9sbGJhcnNDbGlwcGVkPSExLGMubGluZU51bVdpZHRoPWMubGluZU51bUlubmVyV2lkdGg9Yy5saW5lTnVtQ2hhcnM9bnVsbCxjLmFsaWduV2lkZ2V0cz0hMSxjLmNhY2hlZENoYXJXaWR0aD1jLmNhY2hlZFRleHRIZWlnaHQ9Yy5jYWNoZWRQYWRkaW5nSD1udWxsLGMubWF4TGluZT1udWxsLGMubWF4TGluZUxlbmd0aD0wLGMubWF4TGluZUNoYW5nZWQ9ITEsYy53aGVlbERYPWMud2hlZWxEWT1jLndoZWVsU3RhcnRYPWMud2hlZWxTdGFydFk9bnVsbCxjLnNoaWZ0PSExLGMuc2VsRm9yQ29udGV4dE1lbnU9bnVsbCxjLmFjdGl2ZVRvdWNoPW51bGwsYi5pbml0KGMpfWZ1bmN0aW9uIGIoYSl7YS5kb2MubW9kZT14LmdldE1vZGUoYS5vcHRpb25zLGEuZG9jLm1vZGVPcHRpb24pLGMoYSl9ZnVuY3Rpb24gYyh4KXt4LmRvYy5pdGVyKGZ1bmN0aW9uKHgpe3guc3RhdGVBZnRlciYmKHguc3RhdGVBZnRlcj1udWxsKSx4LnN0eWxlcyYmKHguc3R5bGVzPW51bGwpfSkseC5kb2MuZnJvbnRpZXI9eC5kb2MuZmlyc3QsTngoeCwxMDApLHguc3RhdGUubW9kZUdlbisrLHguY3VyT3AmJkphKHgpfWZ1bmN0aW9uIGQoeCl7eC5vcHRpb25zLmxpbmVXcmFwcGluZz8oWWYoeC5kaXNwbGF5LndyYXBwZXIsIkNvZGVNaXJyb3Itd3JhcCIpLHguZGlzcGxheS5zaXplci5zdHlsZS5taW5XaWR0aD0iIix4LmRpc3BsYXkuc2l6ZXJXaWR0aD1udWxsKTooWGYoeC5kaXNwbGF5LndyYXBwZXIsIkNvZGVNaXJyb3Itd3JhcCIpLGwoeCkpLGYoeCksSmEoeCksZ2EoeCksc2V0VGltZW91dChmdW5jdGlvbigpe3IoeCl9LDEwMCl9ZnVuY3Rpb24gZSh4KXt2YXIgYT1yYSh4LmRpc3BsYXkpLGI9eC5vcHRpb25zLmxpbmVXcmFwcGluZyxjPWImJk1hdGgubWF4KDUseC5kaXNwbGF5LnNjcm9sbGVyLmNsaWVudFdpZHRoL3NhKHguZGlzcGxheSktMyk7cmV0dXJuIGZ1bmN0aW9uKGQpe2lmKHVjKHguZG9jLGQpKXJldHVybiAwO3ZhciBlPTA7aWYoZC53aWRnZXRzKWZvcih2YXIgZj0wO2Y8ZC53aWRnZXRzLmxlbmd0aDtmKyspZC53aWRnZXRzW2ZdLmhlaWdodCYmKGUrPWQud2lkZ2V0c1tmXS5oZWlnaHQpO3JldHVybiBiP2UrKE1hdGguY2VpbChkLnRleHQubGVuZ3RoL2MpfHwxKSphOmUrYX19ZnVuY3Rpb24gZih4KXt2YXIgYT14LmRvYyxiPWUoeCk7YS5pdGVyKGZ1bmN0aW9uKHgpe3ZhciBhPWIoeCk7YSE9eC5oZWlnaHQmJl9jKHgsYSl9KX1mdW5jdGlvbiBnKHgpe3guZGlzcGxheS53cmFwcGVyLmNsYXNzTmFtZT14LmRpc3BsYXkud3JhcHBlci5jbGFzc05hbWUucmVwbGFjZSgvXHMqY20tcy1cUysvZywiIikreC5vcHRpb25zLnRoZW1lLnJlcGxhY2UoLyhefFxzKVxzKi9nLCIgY20tcy0iKSxnYSh4KX1mdW5jdGlvbiBoKHgpe2koeCksSmEoeCksc2V0VGltZW91dChmdW5jdGlvbigpe3UoeCl9LDIwKX1mdW5jdGlvbiBpKHgpe3ZhciBhPXguZGlzcGxheS5ndXR0ZXJzLGI9eC5vcHRpb25zLmd1dHRlcnM7UWQoYSk7Zm9yKHZhciBjPTA7YzxiLmxlbmd0aDsrK2Mpe3ZhciBkPWJbY10sZT1hLmFwcGVuZENoaWxkKFBkKCJkaXYiLG51bGwsIkNvZGVNaXJyb3ItZ3V0dGVyICIrZCkpOyJDb2RlTWlycm9yLWxpbmVudW1iZXJzIj09ZCYmKHguZGlzcGxheS5saW5lR3V0dGVyPWUsZS5zdHlsZS53aWR0aD0oeC5kaXNwbGF5LmxpbmVOdW1XaWR0aHx8MSkrInB4Iil9YS5zdHlsZS5kaXNwbGF5PWM/IiI6Im5vbmUiLGooeCl9ZnVuY3Rpb24gaih4KXt2YXIgYT14LmRpc3BsYXkuZ3V0dGVycy5vZmZzZXRXaWR0aDt4LmRpc3BsYXkuc2l6ZXIuc3R5bGUubWFyZ2luTGVmdD1hKyJweCJ9ZnVuY3Rpb24gayh4KXtpZigwPT14LmhlaWdodClyZXR1cm4gMDtmb3IodmFyIGEsYj14LnRleHQubGVuZ3RoLGM9eDthPW5jKGMpOyl7Yz0oZD1hLmZpbmQoMCwhMCkpLmZyb20ubGluZSxiKz1kLmZyb20uY2gtZC50by5jaH1mb3IoYz14O2E9b2MoYyk7KXt2YXIgZD1hLmZpbmQoMCwhMCk7Yi09Yy50ZXh0Lmxlbmd0aC1kLmZyb20uY2gsYis9KGM9ZC50by5saW5lKS50ZXh0Lmxlbmd0aC1kLnRvLmNofXJldHVybiBifWZ1bmN0aW9uIGwoeCl7dmFyIGE9eC5kaXNwbGF5LGI9eC5kb2M7YS5tYXhMaW5lPVljKGIsYi5maXJzdCksYS5tYXhMaW5lTGVuZ3RoPWsoYS5tYXhMaW5lKSxhLm1heExpbmVDaGFuZ2VkPSEwLGIuaXRlcihmdW5jdGlvbih4KXt2YXIgYj1rKHgpO2I+YS5tYXhMaW5lTGVuZ3RoJiYoYS5tYXhMaW5lTGVuZ3RoPWIsYS5tYXhMaW5lPXgpfSl9ZnVuY3Rpb24gbSh4KXt2YXIgYT1HZCh4Lmd1dHRlcnMsIkNvZGVNaXJyb3ItbGluZW51bWJlcnMiKTstMT09YSYmeC5saW5lTnVtYmVycz94Lmd1dHRlcnM9eC5ndXR0ZXJzLmNvbmNhdChbIkNvZGVNaXJyb3ItbGluZW51bWJlcnMiXSk6YT4tMSYmIXgubGluZU51bWJlcnMmJih4Lmd1dHRlcnM9eC5ndXR0ZXJzLnNsaWNlKDApLHguZ3V0dGVycy5zcGxpY2UoYSwxKSl9ZnVuY3Rpb24gbih4KXt2YXIgYT14LmRpc3BsYXksYj1hLmd1dHRlcnMub2Zmc2V0V2lkdGgsYz1NYXRoLnJvdW5kKHguZG9jLmhlaWdodCtTeCh4LmRpc3BsYXkpKTtyZXR1cm57Y2xpZW50SGVpZ2h0OmEuc2Nyb2xsZXIuY2xpZW50SGVpZ2h0LHZpZXdIZWlnaHQ6YS53cmFwcGVyLmNsaWVudEhlaWdodCxzY3JvbGxXaWR0aDphLnNjcm9sbGVyLnNjcm9sbFdpZHRoLGNsaWVudFdpZHRoOmEuc2Nyb2xsZXIuY2xpZW50V2lkdGgsdmlld1dpZHRoOmEud3JhcHBlci5jbGllbnRXaWR0aCxiYXJMZWZ0Ongub3B0aW9ucy5maXhlZEd1dHRlcj9iOjAsZG9jSGVpZ2h0OmMsc2Nyb2xsSGVpZ2h0OmMrVXgoeCkrYS5iYXJIZWlnaHQsbmF0aXZlQmFyV2lkdGg6YS5uYXRpdmVCYXJXaWR0aCxndXR0ZXJXaWR0aDpifX1mdW5jdGlvbiBvKHgsYSxiKXt0aGlzLmNtPWI7dmFyIGM9dGhpcy52ZXJ0PVBkKCJkaXYiLFtQZCgiZGl2IixudWxsLG51bGwsIm1pbi13aWR0aDogMXB4IildLCJDb2RlTWlycm9yLXZzY3JvbGxiYXIiKSxkPXRoaXMuaG9yaXo9UGQoImRpdiIsW1BkKCJkaXYiLG51bGwsbnVsbCwiaGVpZ2h0OiAxMDAlOyBtaW4taGVpZ2h0OiAxcHgiKV0sIkNvZGVNaXJyb3ItaHNjcm9sbGJhciIpO3goYykseChkKSxDZihjLCJzY3JvbGwiLGZ1bmN0aW9uKCl7Yy5jbGllbnRIZWlnaHQmJmEoYy5zY3JvbGxUb3AsInZlcnRpY2FsIil9KSxDZihkLCJzY3JvbGwiLGZ1bmN0aW9uKCl7ZC5jbGllbnRXaWR0aCYmYShkLnNjcm9sbExlZnQsImhvcml6b250YWwiKX0pLHRoaXMuY2hlY2tlZFplcm9XaWR0aD0hMSxxZSYmOD5yZSYmKHRoaXMuaG9yaXouc3R5bGUubWluSGVpZ2h0PXRoaXMudmVydC5zdHlsZS5taW5XaWR0aD0iMThweCIpfWZ1bmN0aW9uIHAoKXt9ZnVuY3Rpb24gcShhKXthLmRpc3BsYXkuc2Nyb2xsYmFycyYmKGEuZGlzcGxheS5zY3JvbGxiYXJzLmNsZWFyKCksYS5kaXNwbGF5LnNjcm9sbGJhcnMuYWRkQ2xhc3MmJlhmKGEuZGlzcGxheS53cmFwcGVyLGEuZGlzcGxheS5zY3JvbGxiYXJzLmFkZENsYXNzKSksYS5kaXNwbGF5LnNjcm9sbGJhcnM9bmV3IHguc2Nyb2xsYmFyTW9kZWxbYS5vcHRpb25zLnNjcm9sbGJhclN0eWxlXShmdW5jdGlvbih4KXthLmRpc3BsYXkud3JhcHBlci5pbnNlcnRCZWZvcmUoeCxhLmRpc3BsYXkuc2Nyb2xsYmFyRmlsbGVyKSxDZih4LCJtb3VzZWRvd24iLGZ1bmN0aW9uKCl7YS5zdGF0ZS5mb2N1c2VkJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YS5kaXNwbGF5LmlucHV0LmZvY3VzKCl9LDApfSkseC5zZXRBdHRyaWJ1dGUoImNtLW5vdC1jb250ZW50IiwidHJ1ZSIpfSxmdW5jdGlvbih4LGIpeyJob3Jpem9udGFsIj09Yj9kYihhLHgpOmNiKGEseCl9LGEpLGEuZGlzcGxheS5zY3JvbGxiYXJzLmFkZENsYXNzJiZZZihhLmRpc3BsYXkud3JhcHBlcixhLmRpc3BsYXkuc2Nyb2xsYmFycy5hZGRDbGFzcyl9ZnVuY3Rpb24gcih4LGEpe2F8fChhPW4oeCkpO3ZhciBiPXguZGlzcGxheS5iYXJXaWR0aCxjPXguZGlzcGxheS5iYXJIZWlnaHQ7cyh4LGEpO2Zvcih2YXIgZD0wOzQ+ZCYmYiE9eC5kaXNwbGF5LmJhcldpZHRofHxjIT14LmRpc3BsYXkuYmFySGVpZ2h0O2QrKyliIT14LmRpc3BsYXkuYmFyV2lkdGgmJngub3B0aW9ucy5saW5lV3JhcHBpbmcmJkYoeCkscyh4LG4oeCkpLGI9eC5kaXNwbGF5LmJhcldpZHRoLGM9eC5kaXNwbGF5LmJhckhlaWdodH1mdW5jdGlvbiBzKHgsYSl7dmFyIGI9eC5kaXNwbGF5LGM9Yi5zY3JvbGxiYXJzLnVwZGF0ZShhKTtiLnNpemVyLnN0eWxlLnBhZGRpbmdSaWdodD0oYi5iYXJXaWR0aD1jLnJpZ2h0KSsicHgiLGIuc2l6ZXIuc3R5bGUucGFkZGluZ0JvdHRvbT0oYi5iYXJIZWlnaHQ9Yy5ib3R0b20pKyJweCIsYy5yaWdodCYmYy5ib3R0b20/KGIuc2Nyb2xsYmFyRmlsbGVyLnN0eWxlLmRpc3BsYXk9ImJsb2NrIixiLnNjcm9sbGJhckZpbGxlci5zdHlsZS5oZWlnaHQ9Yy5ib3R0b20rInB4IixiLnNjcm9sbGJhckZpbGxlci5zdHlsZS53aWR0aD1jLnJpZ2h0KyJweCIpOmIuc2Nyb2xsYmFyRmlsbGVyLnN0eWxlLmRpc3BsYXk9IiIsYy5ib3R0b20mJngub3B0aW9ucy5jb3Zlckd1dHRlck5leHRUb1Njcm9sbGJhciYmeC5vcHRpb25zLmZpeGVkR3V0dGVyPyhiLmd1dHRlckZpbGxlci5zdHlsZS5kaXNwbGF5PSJibG9jayIsYi5ndXR0ZXJGaWxsZXIuc3R5bGUuaGVpZ2h0PWMuYm90dG9tKyJweCIsYi5ndXR0ZXJGaWxsZXIuc3R5bGUud2lkdGg9YS5ndXR0ZXJXaWR0aCsicHgiKTpiLmd1dHRlckZpbGxlci5zdHlsZS5kaXNwbGF5PSIifWZ1bmN0aW9uIHQoeCxhLGIpe3ZhciBjPWImJm51bGwhPWIudG9wP01hdGgubWF4KDAsYi50b3ApOnguc2Nyb2xsZXIuc2Nyb2xsVG9wO2M9TWF0aC5mbG9vcihjLVJ4KHgpKTt2YXIgZD1iJiZudWxsIT1iLmJvdHRvbT9iLmJvdHRvbTpjK3gud3JhcHBlci5jbGllbnRIZWlnaHQsZT1hZChhLGMpLGY9YWQoYSxkKTtpZihiJiZiLmVuc3VyZSl7dmFyIGc9Yi5lbnN1cmUuZnJvbS5saW5lLGg9Yi5lbnN1cmUudG8ubGluZTtlPmc/KGU9ZyxmPWFkKGEsYmQoWWMoYSxnKSkreC53cmFwcGVyLmNsaWVudEhlaWdodCkpOk1hdGgubWluKGgsYS5sYXN0TGluZSgpKT49ZiYmKGU9YWQoYSxiZChZYyhhLGgpKS14LndyYXBwZXIuY2xpZW50SGVpZ2h0KSxmPWgpfXJldHVybntmcm9tOmUsdG86TWF0aC5tYXgoZixlKzEpfX1mdW5jdGlvbiB1KHgpe3ZhciBhPXguZGlzcGxheSxiPWEudmlldztpZihhLmFsaWduV2lkZ2V0c3x8YS5ndXR0ZXJzLmZpcnN0Q2hpbGQmJngub3B0aW9ucy5maXhlZEd1dHRlcil7Zm9yKHZhciBjPXkoYSktYS5zY3JvbGxlci5zY3JvbGxMZWZ0K3guZG9jLnNjcm9sbExlZnQsZD1hLmd1dHRlcnMub2Zmc2V0V2lkdGgsZT1jKyJweCIsZj0wO2Y8Yi5sZW5ndGg7ZisrKWlmKCFiW2ZdLmhpZGRlbil7eC5vcHRpb25zLmZpeGVkR3V0dGVyJiZiW2ZdLmd1dHRlciYmKGJbZl0uZ3V0dGVyLnN0eWxlLmxlZnQ9ZSk7dmFyIGc9YltmXS5hbGlnbmFibGU7aWYoZylmb3IodmFyIGg9MDtoPGcubGVuZ3RoO2grKylnW2hdLnN0eWxlLmxlZnQ9ZX14Lm9wdGlvbnMuZml4ZWRHdXR0ZXImJihhLmd1dHRlcnMuc3R5bGUubGVmdD1jK2QrInB4Iil9fWZ1bmN0aW9uIHYoeCl7aWYoIXgub3B0aW9ucy5saW5lTnVtYmVycylyZXR1cm4hMTt2YXIgYT14LmRvYyxiPXcoeC5vcHRpb25zLGEuZmlyc3QrYS5zaXplLTEpLGM9eC5kaXNwbGF5O2lmKGIubGVuZ3RoIT1jLmxpbmVOdW1DaGFycyl7dmFyIGQ9Yy5tZWFzdXJlLmFwcGVuZENoaWxkKFBkKCJkaXYiLFtQZCgiZGl2IixiKV0sIkNvZGVNaXJyb3ItbGluZW51bWJlciBDb2RlTWlycm9yLWd1dHRlci1lbHQiKSksZT1kLmZpcnN0Q2hpbGQub2Zmc2V0V2lkdGgsZj1kLm9mZnNldFdpZHRoLWU7cmV0dXJuIGMubGluZUd1dHRlci5zdHlsZS53aWR0aD0iIixjLmxpbmVOdW1Jbm5lcldpZHRoPU1hdGgubWF4KGUsYy5saW5lR3V0dGVyLm9mZnNldFdpZHRoLWYpKzEsYy5saW5lTnVtV2lkdGg9Yy5saW5lTnVtSW5uZXJXaWR0aCtmLGMubGluZU51bUNoYXJzPWMubGluZU51bUlubmVyV2lkdGg/Yi5sZW5ndGg6LTEsYy5saW5lR3V0dGVyLnN0eWxlLndpZHRoPWMubGluZU51bVdpZHRoKyJweCIsaih4KSwhMH1yZXR1cm4hMX1mdW5jdGlvbiB3KHgsYSl7cmV0dXJuIFN0cmluZyh4LmxpbmVOdW1iZXJGb3JtYXR0ZXIoYSt4LmZpcnN0TGluZU51bWJlcikpfWZ1bmN0aW9uIHkoeCl7cmV0dXJuIHguc2Nyb2xsZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdC14LnNpemVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnR9ZnVuY3Rpb24geih4LGEsYil7dmFyIGM9eC5kaXNwbGF5O3RoaXMudmlld3BvcnQ9YSx0aGlzLnZpc2libGU9dChjLHguZG9jLGEpLHRoaXMuZWRpdG9ySXNIaWRkZW49IWMud3JhcHBlci5vZmZzZXRXaWR0aCx0aGlzLndyYXBwZXJIZWlnaHQ9Yy53cmFwcGVyLmNsaWVudEhlaWdodCx0aGlzLndyYXBwZXJXaWR0aD1jLndyYXBwZXIuY2xpZW50V2lkdGgsdGhpcy5vbGREaXNwbGF5V2lkdGg9VngoeCksdGhpcy5mb3JjZT1iLHRoaXMuZGltcz1IKHgpLHRoaXMuZXZlbnRzPVtdfWZ1bmN0aW9uIEEoeCl7dmFyIGE9eC5kaXNwbGF5OyFhLnNjcm9sbGJhcnNDbGlwcGVkJiZhLnNjcm9sbGVyLm9mZnNldFdpZHRoJiYoYS5uYXRpdmVCYXJXaWR0aD1hLnNjcm9sbGVyLm9mZnNldFdpZHRoLWEuc2Nyb2xsZXIuY2xpZW50V2lkdGgsYS5oZWlnaHRGb3JjZXIuc3R5bGUuaGVpZ2h0PVV4KHgpKyJweCIsYS5zaXplci5zdHlsZS5tYXJnaW5Cb3R0b209LWEubmF0aXZlQmFyV2lkdGgrInB4IixhLnNpemVyLnN0eWxlLmJvcmRlclJpZ2h0V2lkdGg9VXgoeCkrInB4IixhLnNjcm9sbGJhcnNDbGlwcGVkPSEwKX1mdW5jdGlvbiBCKHgsYSl7dmFyIGI9eC5kaXNwbGF5LGM9eC5kb2M7aWYoYS5lZGl0b3JJc0hpZGRlbilyZXR1cm4gTGEoeCksITE7aWYoIWEuZm9yY2UmJmEudmlzaWJsZS5mcm9tPj1iLnZpZXdGcm9tJiZhLnZpc2libGUudG88PWIudmlld1RvJiYobnVsbD09Yi51cGRhdGVMaW5lTnVtYmVyc3x8Yi51cGRhdGVMaW5lTnVtYmVycz49Yi52aWV3VG8pJiZiLnJlbmRlcmVkVmlldz09Yi52aWV3JiYwPT1QYSh4KSlyZXR1cm4hMTt2KHgpJiYoTGEoeCksYS5kaW1zPUgoeCkpO3ZhciBkPWMuZmlyc3QrYy5zaXplLGU9TWF0aC5tYXgoYS52aXNpYmxlLmZyb20teC5vcHRpb25zLnZpZXdwb3J0TWFyZ2luLGMuZmlyc3QpLGY9TWF0aC5taW4oZCxhLnZpc2libGUudG8reC5vcHRpb25zLnZpZXdwb3J0TWFyZ2luKTtiLnZpZXdGcm9tPGUmJmUtYi52aWV3RnJvbTwyMCYmKGU9TWF0aC5tYXgoYy5maXJzdCxiLnZpZXdGcm9tKSksYi52aWV3VG8+ZiYmYi52aWV3VG8tZjwyMCYmKGY9TWF0aC5taW4oZCxiLnZpZXdUbykpLEllJiYoZT1zYyh4LmRvYyxlKSxmPXRjKHguZG9jLGYpKTt2YXIgZz1lIT1iLnZpZXdGcm9tfHxmIT1iLnZpZXdUb3x8Yi5sYXN0V3JhcEhlaWdodCE9YS53cmFwcGVySGVpZ2h0fHxiLmxhc3RXcmFwV2lkdGghPWEud3JhcHBlcldpZHRoO09hKHgsZSxmKSxiLnZpZXdPZmZzZXQ9YmQoWWMoeC5kb2MsYi52aWV3RnJvbSkpLHguZGlzcGxheS5tb3Zlci5zdHlsZS50b3A9Yi52aWV3T2Zmc2V0KyJweCI7dmFyIGg9UGEoeCk7aWYoIWcmJjA9PWgmJiFhLmZvcmNlJiZiLnJlbmRlcmVkVmlldz09Yi52aWV3JiYobnVsbD09Yi51cGRhdGVMaW5lTnVtYmVyc3x8Yi51cGRhdGVMaW5lTnVtYmVycz49Yi52aWV3VG8pKXJldHVybiExO3ZhciBpPVNkKCk7cmV0dXJuIGg+NCYmKGIubGluZURpdi5zdHlsZS5kaXNwbGF5PSJub25lIiksSSh4LGIudXBkYXRlTGluZU51bWJlcnMsYS5kaW1zKSxoPjQmJihiLmxpbmVEaXYuc3R5bGUuZGlzcGxheT0iIiksYi5yZW5kZXJlZFZpZXc9Yi52aWV3LGkmJlNkKCkhPWkmJmkub2Zmc2V0SGVpZ2h0JiZpLmZvY3VzKCksUWQoYi5jdXJzb3JEaXYpLFFkKGIuc2VsZWN0aW9uRGl2KSxiLmd1dHRlcnMuc3R5bGUuaGVpZ2h0PWIuc2l6ZXIuc3R5bGUubWluSGVpZ2h0PTAsZyYmKGIubGFzdFdyYXBIZWlnaHQ9YS53cmFwcGVySGVpZ2h0LGIubGFzdFdyYXBXaWR0aD1hLndyYXBwZXJXaWR0aCxOeCh4LDQwMCkpLGIudXBkYXRlTGluZU51bWJlcnM9bnVsbCwhMH1mdW5jdGlvbiBDKHgsYSl7Zm9yKHZhciBiPWEudmlld3BvcnQsYz0hMDsoYyYmeC5vcHRpb25zLmxpbmVXcmFwcGluZyYmYS5vbGREaXNwbGF5V2lkdGghPVZ4KHgpfHwoYiYmbnVsbCE9Yi50b3AmJihiPXt0b3A6TWF0aC5taW4oeC5kb2MuaGVpZ2h0K1N4KHguZGlzcGxheSktV3goeCksYi50b3ApfSksYS52aXNpYmxlPXQoeC5kaXNwbGF5LHguZG9jLGIpLCEoYS52aXNpYmxlLmZyb20+PXguZGlzcGxheS52aWV3RnJvbSYmYS52aXNpYmxlLnRvPD14LmRpc3BsYXkudmlld1RvKSkpJiZCKHgsYSk7Yz0hMSl7Rih4KTt2YXIgZD1uKHgpO0l4KHgpLEUoeCxkKSxyKHgsZCl9YS5zaWduYWwoeCwidXBkYXRlIix4KSwoeC5kaXNwbGF5LnZpZXdGcm9tIT14LmRpc3BsYXkucmVwb3J0ZWRWaWV3RnJvbXx8eC5kaXNwbGF5LnZpZXdUbyE9eC5kaXNwbGF5LnJlcG9ydGVkVmlld1RvKSYmKGEuc2lnbmFsKHgsInZpZXdwb3J0Q2hhbmdlIix4LHguZGlzcGxheS52aWV3RnJvbSx4LmRpc3BsYXkudmlld1RvKSx4LmRpc3BsYXkucmVwb3J0ZWRWaWV3RnJvbT14LmRpc3BsYXkudmlld0Zyb20seC5kaXNwbGF5LnJlcG9ydGVkVmlld1RvPXguZGlzcGxheS52aWV3VG8pfWZ1bmN0aW9uIEQoeCxhKXt2YXIgYj1uZXcgeih4LGEpO2lmKEIoeCxiKSl7Rih4KSxDKHgsYik7dmFyIGM9bih4KTtJeCh4KSxFKHgsYykscih4LGMpLGIuZmluaXNoKCl9fWZ1bmN0aW9uIEUoeCxhKXt4LmRpc3BsYXkuc2l6ZXIuc3R5bGUubWluSGVpZ2h0PWEuZG9jSGVpZ2h0KyJweCI7dmFyIGI9YS5kb2NIZWlnaHQreC5kaXNwbGF5LmJhckhlaWdodDt4LmRpc3BsYXkuaGVpZ2h0Rm9yY2VyLnN0eWxlLnRvcD1iKyJweCIseC5kaXNwbGF5Lmd1dHRlcnMuc3R5bGUuaGVpZ2h0PU1hdGgubWF4KGIrVXgoeCksYS5jbGllbnRIZWlnaHQpKyJweCJ9ZnVuY3Rpb24gRih4KXtmb3IodmFyIGE9eC5kaXNwbGF5LGI9YS5saW5lRGl2Lm9mZnNldFRvcCxjPTA7YzxhLnZpZXcubGVuZ3RoO2MrKyl7dmFyIGQsZT1hLnZpZXdbY107aWYoIWUuaGlkZGVuKXtpZihxZSYmOD5yZSl7dmFyIGY9ZS5ub2RlLm9mZnNldFRvcCtlLm5vZGUub2Zmc2V0SGVpZ2h0O2Q9Zi1iLGI9Zn1lbHNle3ZhciBnPWUubm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtkPWcuYm90dG9tLWcudG9wfXZhciBoPWUubGluZS5oZWlnaHQtZDtpZigyPmQmJihkPXJhKGEpKSwoaD4uMDAxfHwtLjAwMT5oKSYmKF9jKGUubGluZSxkKSxHKGUubGluZSksZS5yZXN0KSlmb3IodmFyIGk9MDtpPGUucmVzdC5sZW5ndGg7aSsrKUcoZS5yZXN0W2ldKX19fWZ1bmN0aW9uIEcoeCl7aWYoeC53aWRnZXRzKWZvcih2YXIgYT0wO2E8eC53aWRnZXRzLmxlbmd0aDsrK2EpeC53aWRnZXRzW2FdLmhlaWdodD14LndpZGdldHNbYV0ubm9kZS5wYXJlbnROb2RlLm9mZnNldEhlaWdodH1mdW5jdGlvbiBIKHgpe2Zvcih2YXIgYT14LmRpc3BsYXksYj17fSxjPXt9LGQ9YS5ndXR0ZXJzLmNsaWVudExlZnQsZT1hLmd1dHRlcnMuZmlyc3RDaGlsZCxmPTA7ZTtlPWUubmV4dFNpYmxpbmcsKytmKWJbeC5vcHRpb25zLmd1dHRlcnNbZl1dPWUub2Zmc2V0TGVmdCtlLmNsaWVudExlZnQrZCxjW3gub3B0aW9ucy5ndXR0ZXJzW2ZdXT1lLmNsaWVudFdpZHRoO3JldHVybntmaXhlZFBvczp5KGEpLGd1dHRlclRvdGFsV2lkdGg6YS5ndXR0ZXJzLm9mZnNldFdpZHRoLGd1dHRlckxlZnQ6YixndXR0ZXJXaWR0aDpjLHdyYXBwZXJXaWR0aDphLndyYXBwZXIuY2xpZW50V2lkdGh9fWZ1bmN0aW9uIEkoeCxhLGIpe2Z1bmN0aW9uIGMoYSl7dmFyIGI9YS5uZXh0U2libGluZztyZXR1cm4gc2UmJkNlJiZ4LmRpc3BsYXkuY3VycmVudFdoZWVsVGFyZ2V0PT1hP2Euc3R5bGUuZGlzcGxheT0ibm9uZSI6YS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGEpLGJ9Zm9yKHZhciBkPXguZGlzcGxheSxlPXgub3B0aW9ucy5saW5lTnVtYmVycyxmPWQubGluZURpdixnPWYuZmlyc3RDaGlsZCxoPWQudmlldyxpPWQudmlld0Zyb20saj0wO2o8aC5sZW5ndGg7aisrKXt2YXIgaz1oW2pdO2lmKGsuaGlkZGVuKTtlbHNlIGlmKGsubm9kZSYmay5ub2RlLnBhcmVudE5vZGU9PWYpe2Zvcig7ZyE9ay5ub2RlOylnPWMoZyk7dmFyIGw9ZSYmbnVsbCE9YSYmaT49YSYmay5saW5lTnVtYmVyO2suY2hhbmdlcyYmKEdkKGsuY2hhbmdlcywiZ3V0dGVyIik+LTEmJihsPSExKSxKKHgsayxpLGIpKSxsJiYoUWQoay5saW5lTnVtYmVyKSxrLmxpbmVOdW1iZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodyh4Lm9wdGlvbnMsaSkpKSksZz1rLm5vZGUubmV4dFNpYmxpbmd9ZWxzZXt2YXIgbT1SKHgsayxpLGIpO2YuaW5zZXJ0QmVmb3JlKG0sZyl9aSs9ay5zaXplfWZvcig7ZzspZz1jKGcpfWZ1bmN0aW9uIEooeCxhLGIsYyl7Zm9yKHZhciBkPTA7ZDxhLmNoYW5nZXMubGVuZ3RoO2QrKyl7dmFyIGU9YS5jaGFuZ2VzW2RdOyJ0ZXh0Ij09ZT9OKHgsYSk6Imd1dHRlciI9PWU/UCh4LGEsYixjKToiY2xhc3MiPT1lP08oYSk6IndpZGdldCI9PWUmJlEoeCxhLGMpfWEuY2hhbmdlcz1udWxsfWZ1bmN0aW9uIEsoeCl7cmV0dXJuIHgubm9kZT09eC50ZXh0JiYoeC5ub2RlPVBkKCJkaXYiLG51bGwsbnVsbCwicG9zaXRpb246IHJlbGF0aXZlIikseC50ZXh0LnBhcmVudE5vZGUmJngudGV4dC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZCh4Lm5vZGUseC50ZXh0KSx4Lm5vZGUuYXBwZW5kQ2hpbGQoeC50ZXh0KSxxZSYmOD5yZSYmKHgubm9kZS5zdHlsZS56SW5kZXg9MikpLHgubm9kZX1mdW5jdGlvbiBMKHgpe3ZhciBhPXguYmdDbGFzcz94LmJnQ2xhc3MrIiAiKyh4LmxpbmUuYmdDbGFzc3x8IiIpOngubGluZS5iZ0NsYXNzO2lmKGEmJihhKz0iIENvZGVNaXJyb3ItbGluZWJhY2tncm91bmQiKSx4LmJhY2tncm91bmQpYT94LmJhY2tncm91bmQuY2xhc3NOYW1lPWE6KHguYmFja2dyb3VuZC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHguYmFja2dyb3VuZCkseC5iYWNrZ3JvdW5kPW51bGwpO2Vsc2UgaWYoYSl7dmFyIGI9Syh4KTt4LmJhY2tncm91bmQ9Yi5pbnNlcnRCZWZvcmUoUGQoImRpdiIsbnVsbCxhKSxiLmZpcnN0Q2hpbGQpfX1mdW5jdGlvbiBNKHgsYSl7dmFyIGI9eC5kaXNwbGF5LmV4dGVybmFsTWVhc3VyZWQ7cmV0dXJuIGImJmIubGluZT09YS5saW5lPyh4LmRpc3BsYXkuZXh0ZXJuYWxNZWFzdXJlZD1udWxsLGEubWVhc3VyZT1iLm1lYXN1cmUsYi5idWlsdCk6TGMoeCxhKX1mdW5jdGlvbiBOKHgsYSl7dmFyIGI9YS50ZXh0LmNsYXNzTmFtZSxjPU0oeCxhKTthLnRleHQ9PWEubm9kZSYmKGEubm9kZT1jLnByZSksYS50ZXh0LnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGMucHJlLGEudGV4dCksYS50ZXh0PWMucHJlLGMuYmdDbGFzcyE9YS5iZ0NsYXNzfHxjLnRleHRDbGFzcyE9YS50ZXh0Q2xhc3M/KGEuYmdDbGFzcz1jLmJnQ2xhc3MsYS50ZXh0Q2xhc3M9Yy50ZXh0Q2xhc3MsTyhhKSk6YiYmKGEudGV4dC5jbGFzc05hbWU9Yil9ZnVuY3Rpb24gTyh4KXtMKHgpLHgubGluZS53cmFwQ2xhc3M/Syh4KS5jbGFzc05hbWU9eC5saW5lLndyYXBDbGFzczp4Lm5vZGUhPXgudGV4dCYmKHgubm9kZS5jbGFzc05hbWU9IiIpO3ZhciBhPXgudGV4dENsYXNzP3gudGV4dENsYXNzKyIgIisoeC5saW5lLnRleHRDbGFzc3x8IiIpOngubGluZS50ZXh0Q2xhc3M7eC50ZXh0LmNsYXNzTmFtZT1hfHwiIn1mdW5jdGlvbiBQKHgsYSxiLGMpe2lmKGEuZ3V0dGVyJiYoYS5ub2RlLnJlbW92ZUNoaWxkKGEuZ3V0dGVyKSxhLmd1dHRlcj1udWxsKSxhLmd1dHRlckJhY2tncm91bmQmJihhLm5vZGUucmVtb3ZlQ2hpbGQoYS5ndXR0ZXJCYWNrZ3JvdW5kKSxhLmd1dHRlckJhY2tncm91bmQ9bnVsbCksYS5saW5lLmd1dHRlckNsYXNzKXt2YXIgZD1LKGEpO2EuZ3V0dGVyQmFja2dyb3VuZD1QZCgiZGl2IixudWxsLCJDb2RlTWlycm9yLWd1dHRlci1iYWNrZ3JvdW5kICIrYS5saW5lLmd1dHRlckNsYXNzLCJsZWZ0OiAiKyh4Lm9wdGlvbnMuZml4ZWRHdXR0ZXI/Yy5maXhlZFBvczotYy5ndXR0ZXJUb3RhbFdpZHRoKSsicHg7IHdpZHRoOiAiK2MuZ3V0dGVyVG90YWxXaWR0aCsicHgiKSxkLmluc2VydEJlZm9yZShhLmd1dHRlckJhY2tncm91bmQsYS50ZXh0KX12YXIgZT1hLmxpbmUuZ3V0dGVyTWFya2VycztpZih4Lm9wdGlvbnMubGluZU51bWJlcnN8fGUpe2Q9SyhhKTt2YXIgZj1hLmd1dHRlcj1QZCgiZGl2IixudWxsLCJDb2RlTWlycm9yLWd1dHRlci13cmFwcGVyIiwibGVmdDogIisoeC5vcHRpb25zLmZpeGVkR3V0dGVyP2MuZml4ZWRQb3M6LWMuZ3V0dGVyVG90YWxXaWR0aCkrInB4Iik7aWYoeC5kaXNwbGF5LmlucHV0LnNldFVuZWRpdGFibGUoZiksZC5pbnNlcnRCZWZvcmUoZixhLnRleHQpLGEubGluZS5ndXR0ZXJDbGFzcyYmKGYuY2xhc3NOYW1lKz0iICIrYS5saW5lLmd1dHRlckNsYXNzKSwheC5vcHRpb25zLmxpbmVOdW1iZXJzfHxlJiZlWyJDb2RlTWlycm9yLWxpbmVudW1iZXJzIl18fChhLmxpbmVOdW1iZXI9Zi5hcHBlbmRDaGlsZChQZCgiZGl2Iix3KHgub3B0aW9ucyxiKSwiQ29kZU1pcnJvci1saW5lbnVtYmVyIENvZGVNaXJyb3ItZ3V0dGVyLWVsdCIsImxlZnQ6ICIrYy5ndXR0ZXJMZWZ0WyJDb2RlTWlycm9yLWxpbmVudW1iZXJzIl0rInB4OyB3aWR0aDogIit4LmRpc3BsYXkubGluZU51bUlubmVyV2lkdGgrInB4IikpKSxlKWZvcih2YXIgZz0wO2c8eC5vcHRpb25zLmd1dHRlcnMubGVuZ3RoOysrZyl7dmFyIGg9eC5vcHRpb25zLmd1dHRlcnNbZ10saT1lLmhhc093blByb3BlcnR5KGgpJiZlW2hdO2kmJmYuYXBwZW5kQ2hpbGQoUGQoImRpdiIsW2ldLCJDb2RlTWlycm9yLWd1dHRlci1lbHQiLCJsZWZ0OiAiK2MuZ3V0dGVyTGVmdFtoXSsicHg7IHdpZHRoOiAiK2MuZ3V0dGVyV2lkdGhbaF0rInB4IikpfX19ZnVuY3Rpb24gUSh4LGEsYil7YS5hbGlnbmFibGUmJihhLmFsaWduYWJsZT1udWxsKTtmb3IodmFyIGM9YS5ub2RlLmZpcnN0Q2hpbGQ7YztjPWQpe3ZhciBkPWMubmV4dFNpYmxpbmc7IkNvZGVNaXJyb3ItbGluZXdpZGdldCI9PWMuY2xhc3NOYW1lJiZhLm5vZGUucmVtb3ZlQ2hpbGQoYyl9Uyh4LGEsYil9ZnVuY3Rpb24gUih4LGEsYixjKXt2YXIgZD1NKHgsYSk7cmV0dXJuIGEudGV4dD1hLm5vZGU9ZC5wcmUsZC5iZ0NsYXNzJiYoYS5iZ0NsYXNzPWQuYmdDbGFzcyksZC50ZXh0Q2xhc3MmJihhLnRleHRDbGFzcz1kLnRleHRDbGFzcyksTyhhKSxQKHgsYSxiLGMpLFMoeCxhLGMpLGEubm9kZX1mdW5jdGlvbiBTKHgsYSxiKXtpZihUKHgsYS5saW5lLGEsYiwhMCksYS5yZXN0KWZvcih2YXIgYz0wO2M8YS5yZXN0Lmxlbmd0aDtjKyspVCh4LGEucmVzdFtjXSxhLGIsITEpfWZ1bmN0aW9uIFQoeCxhLGIsYyxkKXtpZihhLndpZGdldHMpZm9yKHZhciBlPUsoYiksZj0wLGc9YS53aWRnZXRzO2Y8Zy5sZW5ndGg7KytmKXt2YXIgaD1nW2ZdLGk9UGQoImRpdiIsW2gubm9kZV0sIkNvZGVNaXJyb3ItbGluZXdpZGdldCIpO2guaGFuZGxlTW91c2VFdmVudHN8fGkuc2V0QXR0cmlidXRlKCJjbS1pZ25vcmUtZXZlbnRzIiwidHJ1ZSIpLFUoaCxpLGIsYykseC5kaXNwbGF5LmlucHV0LnNldFVuZWRpdGFibGUoaSksZCYmaC5hYm92ZT9lLmluc2VydEJlZm9yZShpLGIuZ3V0dGVyfHxiLnRleHQpOmUuYXBwZW5kQ2hpbGQoaSksd2QoaCwicmVkcmF3Iil9fWZ1bmN0aW9uIFUoeCxhLGIsYyl7aWYoeC5ub0hTY3JvbGwpeyhiLmFsaWduYWJsZXx8KGIuYWxpZ25hYmxlPVtdKSkucHVzaChhKTt2YXIgZD1jLndyYXBwZXJXaWR0aDthLnN0eWxlLmxlZnQ9Yy5maXhlZFBvcysicHgiLHguY292ZXJHdXR0ZXJ8fChkLT1jLmd1dHRlclRvdGFsV2lkdGgsYS5zdHlsZS5wYWRkaW5nTGVmdD1jLmd1dHRlclRvdGFsV2lkdGgrInB4IiksYS5zdHlsZS53aWR0aD1kKyJweCJ9eC5jb3Zlckd1dHRlciYmKGEuc3R5bGUuekluZGV4PTUsYS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiLHgubm9IU2Nyb2xsfHwoYS5zdHlsZS5tYXJnaW5MZWZ0PS1jLmd1dHRlclRvdGFsV2lkdGgrInB4IikpfWZ1bmN0aW9uIFYoeCl7cmV0dXJuIEplKHgubGluZSx4LmNoKX1mdW5jdGlvbiBXKHgsYSl7cmV0dXJuIEtlKHgsYSk8MD9hOnh9ZnVuY3Rpb24gWCh4LGEpe3JldHVybiBLZSh4LGEpPDA/eDphfWZ1bmN0aW9uIFkoeCl7eC5zdGF0ZS5mb2N1c2VkfHwoeC5kaXNwbGF5LmlucHV0LmZvY3VzKCkscGIoeCkpfWZ1bmN0aW9uIFooeCxhLGIsYyxkKXt2YXIgZT14LmRvYzt4LmRpc3BsYXkuc2hpZnQ9ITEsY3x8KGM9ZS5zZWwpO3ZhciBmPXguc3RhdGUucGFzdGVJbmNvbWluZ3x8InBhc3RlIj09ZCxnPWUuc3BsaXRMaW5lcyhhKSxoPW51bGw7aWYoZiYmYy5yYW5nZXMubGVuZ3RoPjEpaWYoTGUmJkxlLmpvaW4oIlxuIik9PWEpe2lmKGMucmFuZ2VzLmxlbmd0aCVMZS5sZW5ndGg9PTApe2g9W107Zm9yKHZhciBpPTA7aTxMZS5sZW5ndGg7aSsrKWgucHVzaChlLnNwbGl0TGluZXMoTGVbaV0pKX19ZWxzZSBnLmxlbmd0aD09Yy5yYW5nZXMubGVuZ3RoJiYoaD1IZChnLGZ1bmN0aW9uKHgpe3JldHVyblt4XX0pKTtmb3IoaT1jLnJhbmdlcy5sZW5ndGgtMTtpPj0wO2ktLSl7dmFyIGo9Yy5yYW5nZXNbaV0saz1qLmZyb20oKSxsPWoudG8oKTtqLmVtcHR5KCkmJihiJiZiPjA/az1KZShrLmxpbmUsay5jaC1iKTp4LnN0YXRlLm92ZXJ3cml0ZSYmIWYmJihsPUplKGwubGluZSxNYXRoLm1pbihZYyhlLGwubGluZSkudGV4dC5sZW5ndGgsbC5jaCtGZChnKS5sZW5ndGgpKSkpO3ZhciBtPXguY3VyT3AudXBkYXRlSW5wdXQsbj17ZnJvbTprLHRvOmwsdGV4dDpoP2hbaSVoLmxlbmd0aF06ZyxvcmlnaW46ZHx8KGY/InBhc3RlIjp4LnN0YXRlLmN1dEluY29taW5nPyJjdXQiOiIraW5wdXQiKX07emIoeC5kb2Msbiksd2QoeCwiaW5wdXRSZWFkIix4LG4pfWEmJiFmJiZfKHgsYSksTGIoeCkseC5jdXJPcC51cGRhdGVJbnB1dD1tLHguY3VyT3AudHlwaW5nPSEwLHguc3RhdGUucGFzdGVJbmNvbWluZz14LnN0YXRlLmN1dEluY29taW5nPSExfWZ1bmN0aW9uICQoeCxhKXt2YXIgYj14LmNsaXBib2FyZERhdGEmJnguY2xpcGJvYXJkRGF0YS5nZXREYXRhKCJ0ZXh0L3BsYWluIik7cmV0dXJuIGI/KHgucHJldmVudERlZmF1bHQoKSxhLmlzUmVhZE9ubHkoKXx8YS5vcHRpb25zLmRpc2FibGVJbnB1dHx8RGEoYSxmdW5jdGlvbigpe1ooYSxiLDAsbnVsbCwicGFzdGUiKX0pLCEwKTp2b2lkIDB9ZnVuY3Rpb24gXyh4LGEpe2lmKHgub3B0aW9ucy5lbGVjdHJpY0NoYXJzJiZ4Lm9wdGlvbnMuc21hcnRJbmRlbnQpZm9yKHZhciBiPXguZG9jLnNlbCxjPWIucmFuZ2VzLmxlbmd0aC0xO2M+PTA7Yy0tKXt2YXIgZD1iLnJhbmdlc1tjXTtpZighKGQuaGVhZC5jaD4xMDB8fGMmJmIucmFuZ2VzW2MtMV0uaGVhZC5saW5lPT1kLmhlYWQubGluZSkpe3ZhciBlPXguZ2V0TW9kZUF0KGQuaGVhZCksZj0hMTtpZihlLmVsZWN0cmljQ2hhcnMpe2Zvcih2YXIgZz0wO2c8ZS5lbGVjdHJpY0NoYXJzLmxlbmd0aDtnKyspaWYoYS5pbmRleE9mKGUuZWxlY3RyaWNDaGFycy5jaGFyQXQoZykpPi0xKXtmPU5iKHgsZC5oZWFkLmxpbmUsInNtYXJ0Iik7YnJlYWt9fWVsc2UgZS5lbGVjdHJpY0lucHV0JiZlLmVsZWN0cmljSW5wdXQudGVzdChZYyh4LmRvYyxkLmhlYWQubGluZSkudGV4dC5zbGljZSgwLGQuaGVhZC5jaCkpJiYoZj1OYih4LGQuaGVhZC5saW5lLCJzbWFydCIpKTtmJiZ3ZCh4LCJlbGVjdHJpY0lucHV0Iix4LGQuaGVhZC5saW5lKX19fWZ1bmN0aW9uIHh4KHgpe2Zvcih2YXIgYT1bXSxiPVtdLGM9MDtjPHguZG9jLnNlbC5yYW5nZXMubGVuZ3RoO2MrKyl7dmFyIGQ9eC5kb2Muc2VsLnJhbmdlc1tjXS5oZWFkLmxpbmUsZT17YW5jaG9yOkplKGQsMCksaGVhZDpKZShkKzEsMCl9O2IucHVzaChlKSxhLnB1c2goeC5nZXRSYW5nZShlLmFuY2hvcixlLmhlYWQpKX1yZXR1cm57dGV4dDphLHJhbmdlczpifX1mdW5jdGlvbiBheCh4KXt4LnNldEF0dHJpYnV0ZSgiYXV0b2NvcnJlY3QiLCJvZmYiKSx4LnNldEF0dHJpYnV0ZSgiYXV0b2NhcGl0YWxpemUiLCJvZmYiKSx4LnNldEF0dHJpYnV0ZSgic3BlbGxjaGVjayIsImZhbHNlIil9ZnVuY3Rpb24gYngoeCl7dGhpcy5jbT14LHRoaXMucHJldklucHV0PSIiLHRoaXMucG9sbGluZ0Zhc3Q9ITEsdGhpcy5wb2xsaW5nPW5ldyBEZCx0aGlzLmluYWNjdXJhdGVTZWxlY3Rpb249ITEsdGhpcy5oYXNTZWxlY3Rpb249ITEsdGhpcy5jb21wb3Npbmc9bnVsbH1mdW5jdGlvbiBjeCgpe3ZhciB4PVBkKCJ0ZXh0YXJlYSIsbnVsbCxudWxsLCJwb3NpdGlvbjogYWJzb2x1dGU7IHBhZGRpbmc6IDA7IHdpZHRoOiAxcHg7IGhlaWdodDogMWVtOyBvdXRsaW5lOiBub25lIiksYT1QZCgiZGl2IixbeF0sbnVsbCwib3ZlcmZsb3c6IGhpZGRlbjsgcG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogM3B4OyBoZWlnaHQ6IDBweDsiKTtyZXR1cm4gc2U/eC5zdHlsZS53aWR0aD0iMTAwMHB4Ijp4LnNldEF0dHJpYnV0ZSgid3JhcCIsIm9mZiIpLEFlJiYoeC5zdHlsZS5ib3JkZXI9IjFweCBzb2xpZCBibGFjayIpLGF4KHgpLGF9ZnVuY3Rpb24gZHgoeCl7dGhpcy5jbT14LHRoaXMubGFzdEFuY2hvck5vZGU9dGhpcy5sYXN0QW5jaG9yT2Zmc2V0PXRoaXMubGFzdEZvY3VzTm9kZT10aGlzLmxhc3RGb2N1c09mZnNldD1udWxsLHRoaXMucG9sbGluZz1uZXcgRGQsdGhpcy5ncmFjZVBlcmlvZD0hMX1mdW5jdGlvbiBleCh4LGEpe3ZhciBiPV94KHgsYS5saW5lKTtpZighYnx8Yi5oaWRkZW4pcmV0dXJuIG51bGw7dmFyIGM9WWMoeC5kb2MsYS5saW5lKSxkPVl4KGIsYyxhLmxpbmUpLGU9Y2QoYyksZj0ibGVmdCI7ZSYmKGY9aGUoZSxhLmNoKSUyPyJyaWdodCI6ImxlZnQiKTt2YXIgZz1iYShkLm1hcCxhLmNoLGYpO3JldHVybiBnLm9mZnNldD0icmlnaHQiPT1nLmNvbGxhcHNlP2cuZW5kOmcuc3RhcnQsZ31mdW5jdGlvbiBmeCh4LGEpe3JldHVybiBhJiYoeC5iYWQ9ITApLHh9ZnVuY3Rpb24gZ3goeCxhLGIpe3ZhciBjO2lmKGE9PXguZGlzcGxheS5saW5lRGl2KXtpZighKGM9eC5kaXNwbGF5LmxpbmVEaXYuY2hpbGROb2Rlc1tiXSkpcmV0dXJuIGZ4KHguY2xpcFBvcyhKZSh4LmRpc3BsYXkudmlld1RvLTEpKSwhMCk7YT1udWxsLGI9MH1lbHNlIGZvcihjPWE7O2M9Yy5wYXJlbnROb2RlKXtpZighY3x8Yz09eC5kaXNwbGF5LmxpbmVEaXYpcmV0dXJuIG51bGw7aWYoYy5wYXJlbnROb2RlJiZjLnBhcmVudE5vZGU9PXguZGlzcGxheS5saW5lRGl2KWJyZWFrfWZvcih2YXIgZD0wO2Q8eC5kaXNwbGF5LnZpZXcubGVuZ3RoO2QrKyl7dmFyIGU9eC5kaXNwbGF5LnZpZXdbZF07aWYoZS5ub2RlPT1jKXJldHVybiBoeChlLGEsYil9fWZ1bmN0aW9uIGh4KHgsYSxiKXtmdW5jdGlvbiBjKGEsYixjKXtmb3IodmFyIGQ9LTE7ZDwoaj9qLmxlbmd0aDowKTtkKyspZm9yKHZhciBlPTA+ZD9pLm1hcDpqW2RdLGY9MDtmPGUubGVuZ3RoO2YrPTMpe3ZhciBnPWVbZisyXTtpZihnPT1hfHxnPT1iKXt2YXIgaD14ZCgwPmQ/eC5saW5lOngucmVzdFtkXSksaz1lW2ZdK2M7cmV0dXJuKDA+Y3x8ZyE9YSkmJihrPWVbZisoYz8xOjApXSksSmUoaCxrKX19fXZhciBkPXgudGV4dC5maXJzdENoaWxkLGU9ITE7aWYoIWF8fCFVZihkLGEpKXJldHVybiBmeChKZSh4ZCh4LmxpbmUpLDApLCEwKTtpZihhPT1kJiYoZT0hMCxhPWQuY2hpbGROb2Rlc1tiXSxiPTAsIWEpKXt2YXIgZj14LnJlc3Q/RmQoeC5yZXN0KTp4LmxpbmU7cmV0dXJuIGZ4KEplKHhkKGYpLGYudGV4dC5sZW5ndGgpLGUpfXZhciBnPTM9PWEubm9kZVR5cGU/YTpudWxsLGg9YTtmb3IoZ3x8MSE9YS5jaGlsZE5vZGVzLmxlbmd0aHx8MyE9YS5maXJzdENoaWxkLm5vZGVUeXBlfHwoZz1hLmZpcnN0Q2hpbGQsYiYmKGI9Zy5ub2RlVmFsdWUubGVuZ3RoKSk7aC5wYXJlbnROb2RlIT1kOyloPWgucGFyZW50Tm9kZTt2YXIgaT14Lm1lYXN1cmUsaj1pLm1hcHMsaz1jKGcsaCxiKTtpZihrKXJldHVybiBmeChrLGUpO2Zvcih2YXIgbD1oLm5leHRTaWJsaW5nLG09Zz9nLm5vZGVWYWx1ZS5sZW5ndGgtYjowO2w7bD1sLm5leHRTaWJsaW5nKXtpZihrPWMobCxsLmZpcnN0Q2hpbGQsMCkpcmV0dXJuIGZ4KEplKGsubGluZSxrLmNoLW0pLGUpO20rPWwudGV4dENvbnRlbnQubGVuZ3RofXZhciBuPWgucHJldmlvdXNTaWJsaW5nO2ZvcihtPWI7bjtuPW4ucHJldmlvdXNTaWJsaW5nKXtpZihrPWMobixuLmZpcnN0Q2hpbGQsLTEpKXJldHVybiBmeChKZShrLmxpbmUsay5jaCttKSxlKTttKz1sLnRleHRDb250ZW50Lmxlbmd0aH19ZnVuY3Rpb24gaXgoeCxhLGIsYyxkKXtmdW5jdGlvbiBlKHgpe3JldHVybiBmdW5jdGlvbihhKXtyZXR1cm4gYS5pZD09eH19ZnVuY3Rpb24gZihhKXtpZigxPT1hLm5vZGVUeXBlKXt2YXIgYj1hLmdldEF0dHJpYnV0ZSgiY20tdGV4dCIpO2lmKG51bGwhPWIpcmV0dXJuIiI9PWImJihiPWEudGV4dENvbnRlbnQucmVwbGFjZSgvXHUyMDBiL2csIiIpKSx2b2lkKGcrPWIpO3ZhciBqLGs9YS5nZXRBdHRyaWJ1dGUoImNtLW1hcmtlciIpO2lmKGspe3ZhciBsPXguZmluZE1hcmtzKEplKGMsMCksSmUoZCsxLDApLGUoK2spKTtyZXR1cm4gdm9pZChsLmxlbmd0aCYmKGo9bFswXS5maW5kKCkpJiYoZys9WmMoeC5kb2Msai5mcm9tLGoudG8pLmpvaW4oaSkpKX1pZigiZmFsc2UiPT1hLmdldEF0dHJpYnV0ZSgiY29udGVudGVkaXRhYmxlIikpcmV0dXJuO2Zvcih2YXIgbT0wO208YS5jaGlsZE5vZGVzLmxlbmd0aDttKyspZihhLmNoaWxkTm9kZXNbbV0pOy9eKHByZXxkaXZ8cCkkL2kudGVzdChhLm5vZGVOYW1lKSYmKGg9ITApfWVsc2UgaWYoMz09YS5ub2RlVHlwZSl7dmFyIG49YS5ub2RlVmFsdWU7aWYoIW4pcmV0dXJuO2gmJihnKz1pLGg9ITEpLGcrPW59fWZvcih2YXIgZz0iIixoPSExLGk9eC5kb2MubGluZVNlcGFyYXRvcigpO2YoYSksYSE9YjspYT1hLm5leHRTaWJsaW5nO3JldHVybiBnfWZ1bmN0aW9uIGp4KHgsYSl7dGhpcy5yYW5nZXM9eCx0aGlzLnByaW1JbmRleD1hfWZ1bmN0aW9uIGt4KHgsYSl7dGhpcy5hbmNob3I9eCx0aGlzLmhlYWQ9YX1mdW5jdGlvbiBseCh4LGEpe3ZhciBiPXhbYV07eC5zb3J0KGZ1bmN0aW9uKHgsYSl7cmV0dXJuIEtlKHguZnJvbSgpLGEuZnJvbSgpKX0pLGE9R2QoeCxiKTtmb3IodmFyIGM9MTtjPHgubGVuZ3RoO2MrKyl7dmFyIGQ9eFtjXSxlPXhbYy0xXTtpZihLZShlLnRvKCksZC5mcm9tKCkpPj0wKXt2YXIgZj1YKGUuZnJvbSgpLGQuZnJvbSgpKSxnPVcoZS50bygpLGQudG8oKSksaD1lLmVtcHR5KCk/ZC5mcm9tKCk9PWQuaGVhZDplLmZyb20oKT09ZS5oZWFkO2E+PWMmJi0tYSx4LnNwbGljZSgtLWMsMixuZXcga3goaD9nOmYsaD9mOmcpKX19cmV0dXJuIG5ldyBqeCh4LGEpfWZ1bmN0aW9uIG14KHgsYSl7cmV0dXJuIG5ldyBqeChbbmV3IGt4KHgsYXx8eCldLDApfWZ1bmN0aW9uIG54KHgsYSl7cmV0dXJuIE1hdGgubWF4KHguZmlyc3QsTWF0aC5taW4oYSx4LmZpcnN0K3guc2l6ZS0xKSl9ZnVuY3Rpb24gb3goeCxhKXtpZihhLmxpbmU8eC5maXJzdClyZXR1cm4gSmUoeC5maXJzdCwwKTt2YXIgYj14LmZpcnN0K3guc2l6ZS0xO3JldHVybiBhLmxpbmU+Yj9KZShiLFljKHgsYikudGV4dC5sZW5ndGgpOnB4KGEsWWMoeCxhLmxpbmUpLnRleHQubGVuZ3RoKX1mdW5jdGlvbiBweCh4LGEpe3ZhciBiPXguY2g7cmV0dXJuIG51bGw9PWJ8fGI+YT9KZSh4LmxpbmUsYSk6MD5iP0plKHgubGluZSwwKTp4fWZ1bmN0aW9uIHF4KHgsYSl7cmV0dXJuIGE+PXguZmlyc3QmJmE8eC5maXJzdCt4LnNpemV9ZnVuY3Rpb24gcngoeCxhKXtmb3IodmFyIGI9W10sYz0wO2M8YS5sZW5ndGg7YysrKWJbY109b3goeCxhW2NdKTtyZXR1cm4gYn1mdW5jdGlvbiBzeCh4LGEsYixjKXtpZih4LmNtJiZ4LmNtLmRpc3BsYXkuc2hpZnR8fHguZXh0ZW5kKXt2YXIgZD1hLmFuY2hvcjtpZihjKXt2YXIgZT1LZShiLGQpPDA7ZSE9S2UoYyxkKTwwPyhkPWIsYj1jKTplIT1LZShiLGMpPDAmJihiPWMpfXJldHVybiBuZXcga3goZCxiKX1yZXR1cm4gbmV3IGt4KGN8fGIsYil9ZnVuY3Rpb24gdHgoeCxhLGIsYyl7QXgoeCxuZXcgangoW3N4KHgseC5zZWwucHJpbWFyeSgpLGEsYildLDApLGMpfWZ1bmN0aW9uIHV4KHgsYSxiKXtmb3IodmFyIGM9W10sZD0wO2Q8eC5zZWwucmFuZ2VzLmxlbmd0aDtkKyspY1tkXT1zeCh4LHguc2VsLnJhbmdlc1tkXSxhW2RdLG51bGwpO0F4KHgsbHgoYyx4LnNlbC5wcmltSW5kZXgpLGIpfWZ1bmN0aW9uIHZ4KHgsYSxiLGMpe3ZhciBkPXguc2VsLnJhbmdlcy5zbGljZSgwKTtkW2FdPWIsQXgoeCxseChkLHguc2VsLnByaW1JbmRleCksYyl9ZnVuY3Rpb24gd3goeCxhLGIsYyl7QXgoeCxteChhLGIpLGMpfWZ1bmN0aW9uIHl4KHgsYSl7dmFyIGI9e3JhbmdlczphLnJhbmdlcyx1cGRhdGU6ZnVuY3Rpb24oYSl7dGhpcy5yYW5nZXM9W107Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDtiKyspdGhpcy5yYW5nZXNbYl09bmV3IGt4KG94KHgsYVtiXS5hbmNob3IpLG94KHgsYVtiXS5oZWFkKSl9fTtyZXR1cm4gRmYoeCwiYmVmb3JlU2VsZWN0aW9uQ2hhbmdlIix4LGIpLHguY20mJkZmKHguY20sImJlZm9yZVNlbGVjdGlvbkNoYW5nZSIseC5jbSxiKSxiLnJhbmdlcyE9YS5yYW5nZXM/bHgoYi5yYW5nZXMsYi5yYW5nZXMubGVuZ3RoLTEpOmF9ZnVuY3Rpb24gengoeCxhLGIpe3ZhciBjPXguaGlzdG9yeS5kb25lLGQ9RmQoYyk7ZCYmZC5yYW5nZXM/KGNbYy5sZW5ndGgtMV09YSxCeCh4LGEsYikpOkF4KHgsYSxiKX1mdW5jdGlvbiBBeCh4LGEsYil7QngoeCxhLGIpLGpkKHgseC5zZWwseC5jbT94LmNtLmN1ck9wLmlkOk5hTixiKX1mdW5jdGlvbiBCeCh4LGEsYil7KEJkKHgsImJlZm9yZVNlbGVjdGlvbkNoYW5nZSIpfHx4LmNtJiZCZCh4LmNtLCJiZWZvcmVTZWxlY3Rpb25DaGFuZ2UiKSkmJihhPXl4KHgsYSkpLEN4KHgsRXgoeCxhLGImJmIuYmlhc3x8KEtlKGEucHJpbWFyeSgpLmhlYWQseC5zZWwucHJpbWFyeSgpLmhlYWQpPDA/LTE6MSksITApKSxiJiYhMT09PWIuc2Nyb2xsfHwheC5jbXx8TGIoeC5jbSl9ZnVuY3Rpb24gQ3goeCxhKXthLmVxdWFscyh4LnNlbCl8fCh4LnNlbD1hLHguY20mJih4LmNtLmN1ck9wLnVwZGF0ZUlucHV0PXguY20uY3VyT3Auc2VsZWN0aW9uQ2hhbmdlZD0hMCxBZCh4LmNtKSksd2QoeCwiY3Vyc29yQWN0aXZpdHkiLHgpKX1mdW5jdGlvbiBEeCh4KXtDeCh4LEV4KHgseC5zZWwsbnVsbCwhMSksSmYpfWZ1bmN0aW9uIEV4KHgsYSxiLGMpe2Zvcih2YXIgZCxlPTA7ZTxhLnJhbmdlcy5sZW5ndGg7ZSsrKXt2YXIgZj1hLnJhbmdlc1tlXSxnPWEucmFuZ2VzLmxlbmd0aD09eC5zZWwucmFuZ2VzLmxlbmd0aCYmeC5zZWwucmFuZ2VzW2VdLGg9R3goeCxmLmFuY2hvcixnJiZnLmFuY2hvcixiLGMpLGk9R3goeCxmLmhlYWQsZyYmZy5oZWFkLGIsYyk7KGR8fGghPWYuYW5jaG9yfHxpIT1mLmhlYWQpJiYoZHx8KGQ9YS5yYW5nZXMuc2xpY2UoMCxlKSksZFtlXT1uZXcga3goaCxpKSl9cmV0dXJuIGQ/bHgoZCxhLnByaW1JbmRleCk6YX1mdW5jdGlvbiBGeCh4LGEsYixjLGQpe3ZhciBlPVljKHgsYS5saW5lKTtpZihlLm1hcmtlZFNwYW5zKWZvcih2YXIgZj0wO2Y8ZS5tYXJrZWRTcGFucy5sZW5ndGg7KytmKXt2YXIgZz1lLm1hcmtlZFNwYW5zW2ZdLGg9Zy5tYXJrZXI7aWYoKG51bGw9PWcuZnJvbXx8KGguaW5jbHVzaXZlTGVmdD9nLmZyb208PWEuY2g6Zy5mcm9tPGEuY2gpKSYmKG51bGw9PWcudG98fChoLmluY2x1c2l2ZVJpZ2h0P2cudG8+PWEuY2g6Zy50bz5hLmNoKSkpe2lmKGQmJihGZihoLCJiZWZvcmVDdXJzb3JFbnRlciIpLGguZXhwbGljaXRseUNsZWFyZWQpKXtpZihlLm1hcmtlZFNwYW5zKXstLWY7Y29udGludWV9YnJlYWt9aWYoIWguYXRvbWljKWNvbnRpbnVlO2lmKGIpe3ZhciBpLGo9aC5maW5kKDA+Yz8xOi0xKTtpZigoMD5jP2guaW5jbHVzaXZlUmlnaHQ6aC5pbmNsdXNpdmVMZWZ0KSYmKGo9SHgoeCxqLC1jLGUpKSxqJiZqLmxpbmU9PWEubGluZSYmKGk9S2UoaixiKSkmJigwPmM/MD5pOmk+MCkpcmV0dXJuIEZ4KHgsaixhLGMsZCl9dmFyIGs9aC5maW5kKDA+Yz8tMToxKTtyZXR1cm4oMD5jP2guaW5jbHVzaXZlTGVmdDpoLmluY2x1c2l2ZVJpZ2h0KSYmKGs9SHgoeCxrLGMsZSkpLGs/RngoeCxrLGEsYyxkKTpudWxsfX1yZXR1cm4gYX1mdW5jdGlvbiBHeCh4LGEsYixjLGQpe3ZhciBlPWN8fDEsZj1GeCh4LGEsYixlLGQpfHwhZCYmRngoeCxhLGIsZSwhMCl8fEZ4KHgsYSxiLC1lLGQpfHwhZCYmRngoeCxhLGIsLWUsITApO3JldHVybiBmfHwoeC5jYW50RWRpdD0hMCxKZSh4LmZpcnN0LDApKX1mdW5jdGlvbiBIeCh4LGEsYixjKXtyZXR1cm4gMD5iJiYwPT1hLmNoP2EubGluZT54LmZpcnN0P294KHgsSmUoYS5saW5lLTEpKTpudWxsOmI+MCYmYS5jaD09KGN8fFljKHgsYS5saW5lKSkudGV4dC5sZW5ndGg/YS5saW5lPHguZmlyc3QreC5zaXplLTE/SmUoYS5saW5lKzEsMCk6bnVsbDpuZXcgSmUoYS5saW5lLGEuY2grYil9ZnVuY3Rpb24gSXgoeCl7eC5kaXNwbGF5LmlucHV0LnNob3dTZWxlY3Rpb24oeC5kaXNwbGF5LmlucHV0LnByZXBhcmVTZWxlY3Rpb24oKSl9ZnVuY3Rpb24gSngoeCxhKXtmb3IodmFyIGI9eC5kb2MsYz17fSxkPWMuY3Vyc29ycz1kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksZT1jLnNlbGVjdGlvbj1kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksZj0wO2Y8Yi5zZWwucmFuZ2VzLmxlbmd0aDtmKyspaWYoITEhPT1hfHxmIT1iLnNlbC5wcmltSW5kZXgpe3ZhciBnPWIuc2VsLnJhbmdlc1tmXSxoPWcuZW1wdHkoKTsoaHx8eC5vcHRpb25zLnNob3dDdXJzb3JXaGVuU2VsZWN0aW5nKSYmS3goeCxnLmhlYWQsZCksaHx8THgoeCxnLGUpfXJldHVybiBjfWZ1bmN0aW9uIEt4KHgsYSxiKXt2YXIgYz1tYSh4LGEsImRpdiIsbnVsbCxudWxsLCF4Lm9wdGlvbnMuc2luZ2xlQ3Vyc29ySGVpZ2h0UGVyTGluZSksZD1iLmFwcGVuZENoaWxkKFBkKCJkaXYiLCLCoCIsIkNvZGVNaXJyb3ItY3Vyc29yIikpO2lmKGQuc3R5bGUubGVmdD1jLmxlZnQrInB4IixkLnN0eWxlLnRvcD1jLnRvcCsicHgiLGQuc3R5bGUuaGVpZ2h0PU1hdGgubWF4KDAsYy5ib3R0b20tYy50b3ApKngub3B0aW9ucy5jdXJzb3JIZWlnaHQrInB4IixjLm90aGVyKXt2YXIgZT1iLmFwcGVuZENoaWxkKFBkKCJkaXYiLCLCoCIsIkNvZGVNaXJyb3ItY3Vyc29yIENvZGVNaXJyb3Itc2Vjb25kYXJ5Y3Vyc29yIikpO2Uuc3R5bGUuZGlzcGxheT0iIixlLnN0eWxlLmxlZnQ9Yy5vdGhlci5sZWZ0KyJweCIsZS5zdHlsZS50b3A9Yy5vdGhlci50b3ArInB4IixlLnN0eWxlLmhlaWdodD0uODUqKGMub3RoZXIuYm90dG9tLWMub3RoZXIudG9wKSsicHgifX1mdW5jdGlvbiBMeCh4LGEsYil7ZnVuY3Rpb24gYyh4LGEsYixjKXswPmEmJihhPTApLGE9TWF0aC5yb3VuZChhKSxjPU1hdGgucm91bmQoYyksZy5hcHBlbmRDaGlsZChQZCgiZGl2IixudWxsLCJDb2RlTWlycm9yLXNlbGVjdGVkIiwicG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAiK3grInB4OyB0b3A6ICIrYSsicHg7IHdpZHRoOiAiKyhudWxsPT1iP2oteDpiKSsicHg7IGhlaWdodDogIisoYy1hKSsicHgiKSl9ZnVuY3Rpb24gZChhLGIsZCl7ZnVuY3Rpb24gZShiLGMpe3JldHVybiBsYSh4LEplKGEsYiksImRpdiIsayxjKX12YXIgZyxoLGs9WWMoZixhKSxsPWsudGV4dC5sZW5ndGg7cmV0dXJuIF9kKGNkKGspLGJ8fDAsbnVsbD09ZD9sOmQsZnVuY3Rpb24oeCxhLGYpe3ZhciBrLG0sbixvPWUoeCwibGVmdCIpO2lmKHg9PWEpaz1vLG09bj1vLmxlZnQ7ZWxzZXtpZihrPWUoYS0xLCJyaWdodCIpLCJydGwiPT1mKXt2YXIgcD1vO289ayxrPXB9bT1vLmxlZnQsbj1rLnJpZ2h0fW51bGw9PWImJjA9PXgmJihtPWkpLGsudG9wLW8udG9wPjMmJihjKG0sby50b3AsbnVsbCxvLmJvdHRvbSksbT1pLG8uYm90dG9tPGsudG9wJiZjKG0sby5ib3R0b20sbnVsbCxrLnRvcCkpLG51bGw9PWQmJmE9PWwmJihuPWopLCghZ3x8by50b3A8Zy50b3B8fG8udG9wPT1nLnRvcCYmby5sZWZ0PGcubGVmdCkmJihnPW8pLCghaHx8ay5ib3R0b20+aC5ib3R0b218fGsuYm90dG9tPT1oLmJvdHRvbSYmay5yaWdodD5oLnJpZ2h0KSYmKGg9ayksaSsxPm0mJihtPWkpLGMobSxrLnRvcCxuLW0say5ib3R0b20pfSkse3N0YXJ0OmcsZW5kOmh9fXZhciBlPXguZGlzcGxheSxmPXguZG9jLGc9ZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLGg9VHgoeC5kaXNwbGF5KSxpPWgubGVmdCxqPU1hdGgubWF4KGUuc2l6ZXJXaWR0aCxWeCh4KS1lLnNpemVyLm9mZnNldExlZnQpLWgucmlnaHQsaz1hLmZyb20oKSxsPWEudG8oKTtpZihrLmxpbmU9PWwubGluZSlkKGsubGluZSxrLmNoLGwuY2gpO2Vsc2V7dmFyIG09WWMoZixrLmxpbmUpLG49WWMoZixsLmxpbmUpLG89cWMobSk9PXFjKG4pLHA9ZChrLmxpbmUsay5jaCxvP20udGV4dC5sZW5ndGgrMTpudWxsKS5lbmQscT1kKGwubGluZSxvPzA6bnVsbCxsLmNoKS5zdGFydDtvJiYocC50b3A8cS50b3AtMj8oYyhwLnJpZ2h0LHAudG9wLG51bGwscC5ib3R0b20pLGMoaSxxLnRvcCxxLmxlZnQscS5ib3R0b20pKTpjKHAucmlnaHQscC50b3AscS5sZWZ0LXAucmlnaHQscC5ib3R0b20pKSxwLmJvdHRvbTxxLnRvcCYmYyhpLHAuYm90dG9tLG51bGwscS50b3ApfWIuYXBwZW5kQ2hpbGQoZyl9ZnVuY3Rpb24gTXgoeCl7aWYoeC5zdGF0ZS5mb2N1c2VkKXt2YXIgYT14LmRpc3BsYXk7Y2xlYXJJbnRlcnZhbChhLmJsaW5rZXIpO3ZhciBiPSEwO2EuY3Vyc29yRGl2LnN0eWxlLnZpc2liaWxpdHk9IiIseC5vcHRpb25zLmN1cnNvckJsaW5rUmF0ZT4wP2EuYmxpbmtlcj1zZXRJbnRlcnZhbChmdW5jdGlvbigpe2EuY3Vyc29yRGl2LnN0eWxlLnZpc2liaWxpdHk9KGI9IWIpPyIiOiJoaWRkZW4ifSx4Lm9wdGlvbnMuY3Vyc29yQmxpbmtSYXRlKTp4Lm9wdGlvbnMuY3Vyc29yQmxpbmtSYXRlPDAmJihhLmN1cnNvckRpdi5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iKX19ZnVuY3Rpb24gTngoeCxhKXt4LmRvYy5tb2RlLnN0YXJ0U3RhdGUmJnguZG9jLmZyb250aWVyPHguZGlzcGxheS52aWV3VG8mJnguc3RhdGUuaGlnaGxpZ2h0LnNldChhLExkKE94LHgpKX1mdW5jdGlvbiBPeCh4KXt2YXIgYT14LmRvYztpZihhLmZyb250aWVyPGEuZmlyc3QmJihhLmZyb250aWVyPWEuZmlyc3QpLCEoYS5mcm9udGllcj49eC5kaXNwbGF5LnZpZXdUbykpe3ZhciBiPStuZXcgRGF0ZSt4Lm9wdGlvbnMud29ya1RpbWUsYz1lZihhLm1vZGUsUXgoeCxhLmZyb250aWVyKSksZD1bXTthLml0ZXIoYS5mcm9udGllcixNYXRoLm1pbihhLmZpcnN0K2Euc2l6ZSx4LmRpc3BsYXkudmlld1RvKzUwMCksZnVuY3Rpb24oZSl7aWYoYS5mcm9udGllcj49eC5kaXNwbGF5LnZpZXdGcm9tKXt2YXIgZj1lLnN0eWxlcyxnPWUudGV4dC5sZW5ndGg+eC5vcHRpb25zLm1heEhpZ2hsaWdodExlbmd0aCxoPUhjKHgsZSxnP2VmKGEubW9kZSxjKTpjLCEwKTtlLnN0eWxlcz1oLnN0eWxlczt2YXIgaT1lLnN0eWxlQ2xhc3NlcyxqPWguY2xhc3NlcztqP2Uuc3R5bGVDbGFzc2VzPWo6aSYmKGUuc3R5bGVDbGFzc2VzPW51bGwpO2Zvcih2YXIgaz0hZnx8Zi5sZW5ndGghPWUuc3R5bGVzLmxlbmd0aHx8aSE9aiYmKCFpfHwhanx8aS5iZ0NsYXNzIT1qLmJnQ2xhc3N8fGkudGV4dENsYXNzIT1qLnRleHRDbGFzcyksbD0wOyFrJiZsPGYubGVuZ3RoOysrbClrPWZbbF0hPWUuc3R5bGVzW2xdO2smJmQucHVzaChhLmZyb250aWVyKSxlLnN0YXRlQWZ0ZXI9Zz9jOmVmKGEubW9kZSxjKX1lbHNlIGUudGV4dC5sZW5ndGg8PXgub3B0aW9ucy5tYXhIaWdobGlnaHRMZW5ndGgmJkpjKHgsZS50ZXh0LGMpLGUuc3RhdGVBZnRlcj1hLmZyb250aWVyJTU9PTA/ZWYoYS5tb2RlLGMpOm51bGw7cmV0dXJuKythLmZyb250aWVyLCtuZXcgRGF0ZT5iPyhOeCh4LHgub3B0aW9ucy53b3JrRGVsYXkpLCEwKTp2b2lkIDB9KSxkLmxlbmd0aCYmRGEoeCxmdW5jdGlvbigpe2Zvcih2YXIgYT0wO2E8ZC5sZW5ndGg7YSsrKUthKHgsZFthXSwidGV4dCIpfSl9fWZ1bmN0aW9uIFB4KHgsYSxiKXtmb3IodmFyIGMsZCxlPXguZG9jLGY9Yj8tMTphLSh4LmRvYy5tb2RlLmlubmVyTW9kZT8xZTM6MTAwKSxnPWE7Zz5mOy0tZyl7aWYoZzw9ZS5maXJzdClyZXR1cm4gZS5maXJzdDt2YXIgaD1ZYyhlLGctMSk7aWYoaC5zdGF0ZUFmdGVyJiYoIWJ8fGc8PWUuZnJvbnRpZXIpKXJldHVybiBnO3ZhciBpPU1mKGgudGV4dCxudWxsLHgub3B0aW9ucy50YWJTaXplKTsobnVsbD09ZHx8Yz5pKSYmKGQ9Zy0xLGM9aSl9cmV0dXJuIGR9ZnVuY3Rpb24gUXgoeCxhLGIpe3ZhciBjPXguZG9jLGQ9eC5kaXNwbGF5O2lmKCFjLm1vZGUuc3RhcnRTdGF0ZSlyZXR1cm4hMDt2YXIgZT1QeCh4LGEsYiksZj1lPmMuZmlyc3QmJlljKGMsZS0xKS5zdGF0ZUFmdGVyO3JldHVybiBmPWY/ZWYoYy5tb2RlLGYpOmZmKGMubW9kZSksYy5pdGVyKGUsYSxmdW5jdGlvbihiKXtKYyh4LGIudGV4dCxmKTt2YXIgZz1lPT1hLTF8fGUlNT09MHx8ZT49ZC52aWV3RnJvbSYmZTxkLnZpZXdUbztiLnN0YXRlQWZ0ZXI9Zz9lZihjLm1vZGUsZik6bnVsbCwrK2V9KSxiJiYoYy5mcm9udGllcj1lKSxmfWZ1bmN0aW9uIFJ4KHgpe3JldHVybiB4LmxpbmVTcGFjZS5vZmZzZXRUb3B9ZnVuY3Rpb24gU3goeCl7cmV0dXJuIHgubW92ZXIub2Zmc2V0SGVpZ2h0LXgubGluZVNwYWNlLm9mZnNldEhlaWdodH1mdW5jdGlvbiBUeCh4KXtpZih4LmNhY2hlZFBhZGRpbmdIKXJldHVybiB4LmNhY2hlZFBhZGRpbmdIO3ZhciBhPVJkKHgubWVhc3VyZSxQZCgicHJlIiwieCIpKSxiPXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlP3dpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGEpOmEuY3VycmVudFN0eWxlLGM9e2xlZnQ6cGFyc2VJbnQoYi5wYWRkaW5nTGVmdCkscmlnaHQ6cGFyc2VJbnQoYi5wYWRkaW5nUmlnaHQpfTtyZXR1cm4gaXNOYU4oYy5sZWZ0KXx8aXNOYU4oYy5yaWdodCl8fCh4LmNhY2hlZFBhZGRpbmdIPWMpLGN9ZnVuY3Rpb24gVXgoeCl7cmV0dXJuIEhmLXguZGlzcGxheS5uYXRpdmVCYXJXaWR0aH1mdW5jdGlvbiBWeCh4KXtyZXR1cm4geC5kaXNwbGF5LnNjcm9sbGVyLmNsaWVudFdpZHRoLVV4KHgpLXguZGlzcGxheS5iYXJXaWR0aH1mdW5jdGlvbiBXeCh4KXtyZXR1cm4geC5kaXNwbGF5LnNjcm9sbGVyLmNsaWVudEhlaWdodC1VeCh4KS14LmRpc3BsYXkuYmFySGVpZ2h0fWZ1bmN0aW9uIFh4KHgsYSxiKXt2YXIgYz14Lm9wdGlvbnMubGluZVdyYXBwaW5nLGQ9YyYmVngoeCk7aWYoIWEubWVhc3VyZS5oZWlnaHRzfHxjJiZhLm1lYXN1cmUud2lkdGghPWQpe3ZhciBlPWEubWVhc3VyZS5oZWlnaHRzPVtdO2lmKGMpe2EubWVhc3VyZS53aWR0aD1kO2Zvcih2YXIgZj1hLnRleHQuZmlyc3RDaGlsZC5nZXRDbGllbnRSZWN0cygpLGc9MDtnPGYubGVuZ3RoLTE7ZysrKXt2YXIgaD1mW2ddLGk9ZltnKzFdO01hdGguYWJzKGguYm90dG9tLWkuYm90dG9tKT4yJiZlLnB1c2goKGguYm90dG9tK2kudG9wKS8yLWIudG9wKX19ZS5wdXNoKGIuYm90dG9tLWIudG9wKX19ZnVuY3Rpb24gWXgoeCxhLGIpe2lmKHgubGluZT09YSlyZXR1cm57bWFwOngubWVhc3VyZS5tYXAsY2FjaGU6eC5tZWFzdXJlLmNhY2hlfTtmb3IodmFyIGM9MDtjPHgucmVzdC5sZW5ndGg7YysrKWlmKHgucmVzdFtjXT09YSlyZXR1cm57bWFwOngubWVhc3VyZS5tYXBzW2NdLGNhY2hlOngubWVhc3VyZS5jYWNoZXNbY119O2ZvcihjPTA7Yzx4LnJlc3QubGVuZ3RoO2MrKylpZih4ZCh4LnJlc3RbY10pPmIpcmV0dXJue21hcDp4Lm1lYXN1cmUubWFwc1tjXSxjYWNoZTp4Lm1lYXN1cmUuY2FjaGVzW2NdLGJlZm9yZTohMH19ZnVuY3Rpb24gWngoeCxhKXt2YXIgYj14ZChhPXFjKGEpKSxjPXguZGlzcGxheS5leHRlcm5hbE1lYXN1cmVkPW5ldyBIYSh4LmRvYyxhLGIpO2MubGluZU49Yjt2YXIgZD1jLmJ1aWx0PUxjKHgsYyk7cmV0dXJuIGMudGV4dD1kLnByZSxSZCh4LmRpc3BsYXkubGluZU1lYXN1cmUsZC5wcmUpLGN9ZnVuY3Rpb24gJHgoeCxhLGIsYyl7cmV0dXJuIGFhKHgseGEoeCxhKSxiLGMpfWZ1bmN0aW9uIF94KHgsYSl7aWYoYT49eC5kaXNwbGF5LnZpZXdGcm9tJiZhPHguZGlzcGxheS52aWV3VG8pcmV0dXJuIHguZGlzcGxheS52aWV3W01hKHgsYSldO3ZhciBiPXguZGlzcGxheS5leHRlcm5hbE1lYXN1cmVkO3JldHVybiBiJiZhPj1iLmxpbmVOJiZhPGIubGluZU4rYi5zaXplP2I6dm9pZCAwfWZ1bmN0aW9uIHhhKHgsYSl7dmFyIGI9eGQoYSksYz1feCh4LGIpO2MmJiFjLnRleHQ/Yz1udWxsOmMmJmMuY2hhbmdlcyYmKEooeCxjLGIsSCh4KSkseC5jdXJPcC5mb3JjZVVwZGF0ZT0hMCksY3x8KGM9WngoeCxhKSk7dmFyIGQ9WXgoYyxhLGIpO3JldHVybntsaW5lOmEsdmlldzpjLHJlY3Q6bnVsbCxtYXA6ZC5tYXAsY2FjaGU6ZC5jYWNoZSxiZWZvcmU6ZC5iZWZvcmUsaGFzSGVpZ2h0czohMX19ZnVuY3Rpb24gYWEoeCxhLGIsYyxkKXthLmJlZm9yZSYmKGI9LTEpO3ZhciBlLGY9YisoY3x8IiIpO3JldHVybiBhLmNhY2hlLmhhc093blByb3BlcnR5KGYpP2U9YS5jYWNoZVtmXTooYS5yZWN0fHwoYS5yZWN0PWEudmlldy50ZXh0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKSxhLmhhc0hlaWdodHN8fChYeCh4LGEudmlldyxhLnJlY3QpLGEuaGFzSGVpZ2h0cz0hMCksKGU9Y2EoeCxhLGIsYykpLmJvZ3VzfHwoYS5jYWNoZVtmXT1lKSkse2xlZnQ6ZS5sZWZ0LHJpZ2h0OmUucmlnaHQsdG9wOmQ/ZS5ydG9wOmUudG9wLGJvdHRvbTpkP2UucmJvdHRvbTplLmJvdHRvbX19ZnVuY3Rpb24gYmEoeCxhLGIpe2Zvcih2YXIgYyxkLGUsZixnPTA7Zzx4Lmxlbmd0aDtnKz0zKXt2YXIgaD14W2ddLGk9eFtnKzFdO2lmKGg+YT8oZD0wLGU9MSxmPSJsZWZ0Iik6aT5hP2U9KGQ9YS1oKSsxOihnPT14Lmxlbmd0aC0zfHxhPT1pJiZ4W2crM10+YSkmJihkPShlPWktaCktMSxhPj1pJiYoZj0icmlnaHQiKSksbnVsbCE9ZCl7aWYoYz14W2crMl0saD09aSYmYj09KGMuaW5zZXJ0TGVmdD8ibGVmdCI6InJpZ2h0IikmJihmPWIpLCJsZWZ0Ij09YiYmMD09ZClmb3IoO2cmJnhbZy0yXT09eFtnLTNdJiZ4W2ctMV0uaW5zZXJ0TGVmdDspYz14WzIrKGctPTMpXSxmPSJsZWZ0IjtpZigicmlnaHQiPT1iJiZkPT1pLWgpZm9yKDtnPHgubGVuZ3RoLTMmJnhbZyszXT09eFtnKzRdJiYheFtnKzVdLmluc2VydExlZnQ7KWM9eFsoZys9MykrMl0sZj0icmlnaHQiO2JyZWFrfX1yZXR1cm57bm9kZTpjLHN0YXJ0OmQsZW5kOmUsY29sbGFwc2U6Zixjb3ZlclN0YXJ0OmgsY292ZXJFbmQ6aX19ZnVuY3Rpb24gY2EoeCxhLGIsYyl7dmFyIGQsZT1iYShhLm1hcCxiLGMpLGY9ZS5ub2RlLGc9ZS5zdGFydCxoPWUuZW5kLGk9ZS5jb2xsYXBzZTtpZigzPT1mLm5vZGVUeXBlKXtmb3IodmFyIGo9MDs0Pmo7aisrKXtmb3IoO2cmJk9kKGEubGluZS50ZXh0LmNoYXJBdChlLmNvdmVyU3RhcnQrZykpOyktLWc7Zm9yKDtlLmNvdmVyU3RhcnQraDxlLmNvdmVyRW5kJiZPZChhLmxpbmUudGV4dC5jaGFyQXQoZS5jb3ZlclN0YXJ0K2gpKTspKytoO2lmKHFlJiY5PnJlJiYwPT1nJiZoPT1lLmNvdmVyRW5kLWUuY292ZXJTdGFydClkPWYucGFyZW50Tm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtlbHNlIGlmKHFlJiZ4Lm9wdGlvbnMubGluZVdyYXBwaW5nKXtkPShrPVFmKGYsZyxoKS5nZXRDbGllbnRSZWN0cygpKS5sZW5ndGg/a1sicmlnaHQiPT1jP2subGVuZ3RoLTE6MF06UGV9ZWxzZSBkPVFmKGYsZyxoKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKXx8UGU7aWYoZC5sZWZ0fHxkLnJpZ2h0fHwwPT1nKWJyZWFrO2g9ZyxnLT0xLGk9InJpZ2h0In1xZSYmMTE+cmUmJihkPWRhKHguZGlzcGxheS5tZWFzdXJlLGQpKX1lbHNle3ZhciBrO2c+MCYmKGk9Yz0icmlnaHQiKSxkPXgub3B0aW9ucy5saW5lV3JhcHBpbmcmJihrPWYuZ2V0Q2xpZW50UmVjdHMoKSkubGVuZ3RoPjE/a1sicmlnaHQiPT1jP2subGVuZ3RoLTE6MF06Zi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX1pZihxZSYmOT5yZSYmIWcmJighZHx8IWQubGVmdCYmIWQucmlnaHQpKXt2YXIgbD1mLnBhcmVudE5vZGUuZ2V0Q2xpZW50UmVjdHMoKVswXTtkPWw/e2xlZnQ6bC5sZWZ0LHJpZ2h0OmwubGVmdCtzYSh4LmRpc3BsYXkpLHRvcDpsLnRvcCxib3R0b206bC5ib3R0b219OlBlfXZhciBtPWQudG9wLWEucmVjdC50b3Asbj1kLmJvdHRvbS1hLnJlY3QudG9wLG89KG0rbikvMixwPWEudmlldy5tZWFzdXJlLmhlaWdodHM7Zm9yKGo9MDtqPHAubGVuZ3RoLTEmJiEobzxwW2pdKTtqKyspO3ZhciBxPWo/cFtqLTFdOjAscj1wW2pdLHM9e2xlZnQ6KCJyaWdodCI9PWk/ZC5yaWdodDpkLmxlZnQpLWEucmVjdC5sZWZ0LHJpZ2h0OigibGVmdCI9PWk/ZC5sZWZ0OmQucmlnaHQpLWEucmVjdC5sZWZ0LHRvcDpxLGJvdHRvbTpyfTtyZXR1cm4gZC5sZWZ0fHxkLnJpZ2h0fHwocy5ib2d1cz0hMCkseC5vcHRpb25zLnNpbmdsZUN1cnNvckhlaWdodFBlckxpbmV8fChzLnJ0b3A9bSxzLnJib3R0b209biksc31mdW5jdGlvbiBkYSh4LGEpe2lmKCF3aW5kb3cuc2NyZWVufHxudWxsPT1zY3JlZW4ubG9naWNhbFhEUEl8fHNjcmVlbi5sb2dpY2FsWERQST09c2NyZWVuLmRldmljZVhEUEl8fCEkZCh4KSlyZXR1cm4gYTt2YXIgYj1zY3JlZW4ubG9naWNhbFhEUEkvc2NyZWVuLmRldmljZVhEUEksYz1zY3JlZW4ubG9naWNhbFlEUEkvc2NyZWVuLmRldmljZVlEUEk7cmV0dXJue2xlZnQ6YS5sZWZ0KmIscmlnaHQ6YS5yaWdodCpiLHRvcDphLnRvcCpjLGJvdHRvbTphLmJvdHRvbSpjfX1mdW5jdGlvbiBlYSh4KXtpZih4Lm1lYXN1cmUmJih4Lm1lYXN1cmUuY2FjaGU9e30seC5tZWFzdXJlLmhlaWdodHM9bnVsbCx4LnJlc3QpKWZvcih2YXIgYT0wO2E8eC5yZXN0Lmxlbmd0aDthKyspeC5tZWFzdXJlLmNhY2hlc1thXT17fX1mdW5jdGlvbiBmYSh4KXt4LmRpc3BsYXkuZXh0ZXJuYWxNZWFzdXJlPW51bGwsUWQoeC5kaXNwbGF5LmxpbmVNZWFzdXJlKTtmb3IodmFyIGE9MDthPHguZGlzcGxheS52aWV3Lmxlbmd0aDthKyspZWEoeC5kaXNwbGF5LnZpZXdbYV0pfWZ1bmN0aW9uIGdhKHgpe2ZhKHgpLHguZGlzcGxheS5jYWNoZWRDaGFyV2lkdGg9eC5kaXNwbGF5LmNhY2hlZFRleHRIZWlnaHQ9eC5kaXNwbGF5LmNhY2hlZFBhZGRpbmdIPW51bGwseC5vcHRpb25zLmxpbmVXcmFwcGluZ3x8KHguZGlzcGxheS5tYXhMaW5lQ2hhbmdlZD0hMCkseC5kaXNwbGF5LmxpbmVOdW1DaGFycz1udWxsfWZ1bmN0aW9uIGhhKCl7cmV0dXJuIHdpbmRvdy5wYWdlWE9mZnNldHx8KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudHx8ZG9jdW1lbnQuYm9keSkuc2Nyb2xsTGVmdH1mdW5jdGlvbiBpYSgpe3JldHVybiB3aW5kb3cucGFnZVlPZmZzZXR8fChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnR8fGRvY3VtZW50LmJvZHkpLnNjcm9sbFRvcH1mdW5jdGlvbiBqYSh4LGEsYixjKXtpZihhLndpZGdldHMpZm9yKHZhciBkPTA7ZDxhLndpZGdldHMubGVuZ3RoOysrZClpZihhLndpZGdldHNbZF0uYWJvdmUpe3ZhciBlPXljKGEud2lkZ2V0c1tkXSk7Yi50b3ArPWUsYi5ib3R0b20rPWV9aWYoImxpbmUiPT1jKXJldHVybiBiO2N8fChjPSJsb2NhbCIpO3ZhciBmPWJkKGEpO2lmKCJsb2NhbCI9PWM/Zis9UngoeC5kaXNwbGF5KTpmLT14LmRpc3BsYXkudmlld09mZnNldCwicGFnZSI9PWN8fCJ3aW5kb3ciPT1jKXt2YXIgZz14LmRpc3BsYXkubGluZVNwYWNlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2YrPWcudG9wKygid2luZG93Ij09Yz8wOmlhKCkpO3ZhciBoPWcubGVmdCsoIndpbmRvdyI9PWM/MDpoYSgpKTtiLmxlZnQrPWgsYi5yaWdodCs9aH1yZXR1cm4gYi50b3ArPWYsYi5ib3R0b20rPWYsYn1mdW5jdGlvbiBrYSh4LGEsYil7aWYoImRpdiI9PWIpcmV0dXJuIGE7dmFyIGM9YS5sZWZ0LGQ9YS50b3A7aWYoInBhZ2UiPT1iKWMtPWhhKCksZC09aWEoKTtlbHNlIGlmKCJsb2NhbCI9PWJ8fCFiKXt2YXIgZT14LmRpc3BsYXkuc2l6ZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Yys9ZS5sZWZ0LGQrPWUudG9wfXZhciBmPXguZGlzcGxheS5saW5lU3BhY2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJue2xlZnQ6Yy1mLmxlZnQsdG9wOmQtZi50b3B9fWZ1bmN0aW9uIGxhKHgsYSxiLGMsZCl7cmV0dXJuIGN8fChjPVljKHguZG9jLGEubGluZSkpLGphKHgsYywkeCh4LGMsYS5jaCxkKSxiKX1mdW5jdGlvbiBtYSh4LGEsYixjLGQsZSl7ZnVuY3Rpb24gZihhLGYpe3ZhciBnPWFhKHgsZCxhLGY/InJpZ2h0IjoibGVmdCIsZSk7cmV0dXJuIGY/Zy5sZWZ0PWcucmlnaHQ6Zy5yaWdodD1nLmxlZnQsamEoeCxjLGcsYil9ZnVuY3Rpb24gZyh4LGEpe3ZhciBiPWhbYV0sYz1iLmxldmVsJTI7cmV0dXJuIHg9PXhlKGIpJiZhJiZiLmxldmVsPGhbYS0xXS5sZXZlbD8oeD1hZShiPWhbLS1hXSktKGIubGV2ZWwlMj8wOjEpLGM9ITApOng9PWFlKGIpJiZhPGgubGVuZ3RoLTEmJmIubGV2ZWw8aFthKzFdLmxldmVsJiYoeD14ZShiPWhbKythXSktYi5sZXZlbCUyLGM9ITEpLGMmJng9PWIudG8mJng+Yi5mcm9tP2YoeC0xKTpmKHgsYyl9Yz1jfHxZYyh4LmRvYyxhLmxpbmUpLGR8fChkPXhhKHgsYykpO3ZhciBoPWNkKGMpLGk9YS5jaDtpZighaClyZXR1cm4gZihpKTt2YXIgaj1nKGksaGUoaCxpKSk7cmV0dXJuIG51bGwhPWRnJiYoai5vdGhlcj1nKGksZGcpKSxqfWZ1bmN0aW9uIG5hKHgsYSl7dmFyIGI9MDthPW94KHguZG9jLGEpO3gub3B0aW9ucy5saW5lV3JhcHBpbmd8fChiPXNhKHguZGlzcGxheSkqYS5jaCk7dmFyIGM9WWMoeC5kb2MsYS5saW5lKSxkPWJkKGMpK1J4KHguZGlzcGxheSk7cmV0dXJue2xlZnQ6YixyaWdodDpiLHRvcDpkLGJvdHRvbTpkK2MuaGVpZ2h0fX1mdW5jdGlvbiBvYSh4LGEsYixjKXt2YXIgZD1KZSh4LGEpO3JldHVybiBkLnhSZWw9YyxiJiYoZC5vdXRzaWRlPSEwKSxkfWZ1bmN0aW9uIHBhKHgsYSxiKXt2YXIgYz14LmRvYztpZigwPihiKz14LmRpc3BsYXkudmlld09mZnNldCkpcmV0dXJuIG9hKGMuZmlyc3QsMCwhMCwtMSk7dmFyIGQ9YWQoYyxiKSxlPWMuZmlyc3QrYy5zaXplLTE7aWYoZD5lKXJldHVybiBvYShjLmZpcnN0K2Muc2l6ZS0xLFljKGMsZSkudGV4dC5sZW5ndGgsITAsMSk7MD5hJiYoYT0wKTtmb3IodmFyIGY9WWMoYyxkKTs7KXt2YXIgZz1xYSh4LGYsZCxhLGIpLGg9b2MoZiksaT1oJiZoLmZpbmQoMCwhMCk7aWYoIWh8fCEoZy5jaD5pLmZyb20uY2h8fGcuY2g9PWkuZnJvbS5jaCYmZy54UmVsPjApKXJldHVybiBnO2Q9eGQoZj1pLnRvLmxpbmUpfX1mdW5jdGlvbiBxYSh4LGEsYixjLGQpe2Z1bmN0aW9uIGUoYyl7dmFyIGQ9bWEoeCxKZShiLGMpLCJsaW5lIixhLGkpO3JldHVybiBnPSEwLGY+ZC5ib3R0b20/ZC5sZWZ0LWg6ZjxkLnRvcD9kLmxlZnQraDooZz0hMSxkLmxlZnQpfXZhciBmPWQtYmQoYSksZz0hMSxoPTIqeC5kaXNwbGF5LndyYXBwZXIuY2xpZW50V2lkdGgsaT14YSh4LGEpLGo9Y2QoYSksaz1hLnRleHQubGVuZ3RoLGw9YmUoYSksbT1jZShhKSxuPWUobCksbz1nLHA9ZShtKSxxPWc7aWYoYz5wKXJldHVybiBvYShiLG0scSwxKTtmb3IoOzspe2lmKGo/bT09bHx8bT09amUoYSxsLDEpOjE+PW0tbCl7Zm9yKHZhciByPW4+Y3x8cC1jPj1jLW4/bDptLHM9Yy0ocj09bD9uOnApO09kKGEudGV4dC5jaGFyQXQocikpOykrK3I7cmV0dXJuIG9hKGIscixyPT1sP286cSwtMT5zPy0xOnM+MT8xOjApfXZhciB0PU1hdGguY2VpbChrLzIpLHU9bCt0O2lmKGope3U9bDtmb3IodmFyIHY9MDt0PnY7Kyt2KXU9amUoYSx1LDEpfXZhciB3PWUodSk7dz5jPyhtPXUscD13LChxPWcpJiYocCs9MWUzKSxrPXQpOihsPXUsbj13LG89ZyxrLT10KX19ZnVuY3Rpb24gcmEoeCl7aWYobnVsbCE9eC5jYWNoZWRUZXh0SGVpZ2h0KXJldHVybiB4LmNhY2hlZFRleHRIZWlnaHQ7aWYobnVsbD09TWUpe01lPVBkKCJwcmUiKTtmb3IodmFyIGE9MDs0OT5hOysrYSlNZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgieCIpKSxNZS5hcHBlbmRDaGlsZChQZCgiYnIiKSk7TWUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIngiKSl9UmQoeC5tZWFzdXJlLE1lKTt2YXIgYj1NZS5vZmZzZXRIZWlnaHQvNTA7cmV0dXJuIGI+MyYmKHguY2FjaGVkVGV4dEhlaWdodD1iKSxRZCh4Lm1lYXN1cmUpLGJ8fDF9ZnVuY3Rpb24gc2EoeCl7aWYobnVsbCE9eC5jYWNoZWRDaGFyV2lkdGgpcmV0dXJuIHguY2FjaGVkQ2hhcldpZHRoO3ZhciBhPVBkKCJzcGFuIiwieHh4eHh4eHh4eCIpLGI9UGQoInByZSIsW2FdKTtSZCh4Lm1lYXN1cmUsYik7dmFyIGM9YS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxkPShjLnJpZ2h0LWMubGVmdCkvMTA7cmV0dXJuIGQ+MiYmKHguY2FjaGVkQ2hhcldpZHRoPWQpLGR8fDEwfWZ1bmN0aW9uIHRhKHgpe3guY3VyT3A9e2NtOngsdmlld0NoYW5nZWQ6ITEsc3RhcnRIZWlnaHQ6eC5kb2MuaGVpZ2h0LGZvcmNlVXBkYXRlOiExLHVwZGF0ZUlucHV0Om51bGwsdHlwaW5nOiExLGNoYW5nZU9ianM6bnVsbCxjdXJzb3JBY3Rpdml0eUhhbmRsZXJzOm51bGwsY3Vyc29yQWN0aXZpdHlDYWxsZWQ6MCxzZWxlY3Rpb25DaGFuZ2VkOiExLHVwZGF0ZU1heExpbmU6ITEsc2Nyb2xsTGVmdDpudWxsLHNjcm9sbFRvcDpudWxsLHNjcm9sbFRvUG9zOm51bGwsZm9jdXM6ITEsaWQ6KytSZX0sUWU/UWUub3BzLnB1c2goeC5jdXJPcCk6eC5jdXJPcC5vd25zR3JvdXA9UWU9e29wczpbeC5jdXJPcF0sZGVsYXllZENhbGxiYWNrczpbXX19ZnVuY3Rpb24gdWEoeCl7dmFyIGE9eC5kZWxheWVkQ2FsbGJhY2tzLGI9MDtkb3tmb3IoO2I8YS5sZW5ndGg7YisrKWFbYl0uY2FsbChudWxsKTtmb3IodmFyIGM9MDtjPHgub3BzLmxlbmd0aDtjKyspe3ZhciBkPXgub3BzW2NdO2lmKGQuY3Vyc29yQWN0aXZpdHlIYW5kbGVycylmb3IoO2QuY3Vyc29yQWN0aXZpdHlDYWxsZWQ8ZC5jdXJzb3JBY3Rpdml0eUhhbmRsZXJzLmxlbmd0aDspZC5jdXJzb3JBY3Rpdml0eUhhbmRsZXJzW2QuY3Vyc29yQWN0aXZpdHlDYWxsZWQrK10uY2FsbChudWxsLGQuY20pfX13aGlsZShiPGEubGVuZ3RoKX1mdW5jdGlvbiB2YSh4KXt2YXIgYT14LmN1ck9wLm93bnNHcm91cDtpZihhKXRyeXt1YShhKX1maW5hbGx5e1FlPW51bGw7Zm9yKHZhciBiPTA7YjxhLm9wcy5sZW5ndGg7YisrKWEub3BzW2JdLmNtLmN1ck9wPW51bGw7d2EoYSl9fWZ1bmN0aW9uIHdhKHgpe2Zvcih2YXIgYT14Lm9wcyxiPTA7YjxhLmxlbmd0aDtiKyspeWEoYVtiXSk7Zm9yKGI9MDtiPGEubGVuZ3RoO2IrKyl6YShhW2JdKTtmb3IoYj0wO2I8YS5sZW5ndGg7YisrKUFhKGFbYl0pO2ZvcihiPTA7YjxhLmxlbmd0aDtiKyspQmEoYVtiXSk7Zm9yKGI9MDtiPGEubGVuZ3RoO2IrKylDYShhW2JdKX1mdW5jdGlvbiB5YSh4KXt2YXIgYT14LmNtLGI9YS5kaXNwbGF5O0EoYSkseC51cGRhdGVNYXhMaW5lJiZsKGEpLHgubXVzdFVwZGF0ZT14LnZpZXdDaGFuZ2VkfHx4LmZvcmNlVXBkYXRlfHxudWxsIT14LnNjcm9sbFRvcHx8eC5zY3JvbGxUb1BvcyYmKHguc2Nyb2xsVG9Qb3MuZnJvbS5saW5lPGIudmlld0Zyb218fHguc2Nyb2xsVG9Qb3MudG8ubGluZT49Yi52aWV3VG8pfHxiLm1heExpbmVDaGFuZ2VkJiZhLm9wdGlvbnMubGluZVdyYXBwaW5nLHgudXBkYXRlPXgubXVzdFVwZGF0ZSYmbmV3IHooYSx4Lm11c3RVcGRhdGUmJnt0b3A6eC5zY3JvbGxUb3AsZW5zdXJlOnguc2Nyb2xsVG9Qb3N9LHguZm9yY2VVcGRhdGUpfWZ1bmN0aW9uIHphKHgpe3gudXBkYXRlZERpc3BsYXk9eC5tdXN0VXBkYXRlJiZCKHguY20seC51cGRhdGUpfWZ1bmN0aW9uIEFhKHgpe3ZhciBhPXguY20sYj1hLmRpc3BsYXk7eC51cGRhdGVkRGlzcGxheSYmRihhKSx4LmJhck1lYXN1cmU9bihhKSxiLm1heExpbmVDaGFuZ2VkJiYhYS5vcHRpb25zLmxpbmVXcmFwcGluZyYmKHguYWRqdXN0V2lkdGhUbz0keChhLGIubWF4TGluZSxiLm1heExpbmUudGV4dC5sZW5ndGgpLmxlZnQrMyxhLmRpc3BsYXkuc2l6ZXJXaWR0aD14LmFkanVzdFdpZHRoVG8seC5iYXJNZWFzdXJlLnNjcm9sbFdpZHRoPU1hdGgubWF4KGIuc2Nyb2xsZXIuY2xpZW50V2lkdGgsYi5zaXplci5vZmZzZXRMZWZ0K3guYWRqdXN0V2lkdGhUbytVeChhKSthLmRpc3BsYXkuYmFyV2lkdGgpLHgubWF4U2Nyb2xsTGVmdD1NYXRoLm1heCgwLGIuc2l6ZXIub2Zmc2V0TGVmdCt4LmFkanVzdFdpZHRoVG8tVngoYSkpKSwoeC51cGRhdGVkRGlzcGxheXx8eC5zZWxlY3Rpb25DaGFuZ2VkKSYmKHgucHJlcGFyZWRTZWxlY3Rpb249Yi5pbnB1dC5wcmVwYXJlU2VsZWN0aW9uKCkpfWZ1bmN0aW9uIEJhKHgpe3ZhciBhPXguY207bnVsbCE9eC5hZGp1c3RXaWR0aFRvJiYoYS5kaXNwbGF5LnNpemVyLnN0eWxlLm1pbldpZHRoPXguYWRqdXN0V2lkdGhUbysicHgiLHgubWF4U2Nyb2xsTGVmdDxhLmRvYy5zY3JvbGxMZWZ0JiZkYihhLE1hdGgubWluKGEuZGlzcGxheS5zY3JvbGxlci5zY3JvbGxMZWZ0LHgubWF4U2Nyb2xsTGVmdCksITApLGEuZGlzcGxheS5tYXhMaW5lQ2hhbmdlZD0hMSkseC5wcmVwYXJlZFNlbGVjdGlvbiYmYS5kaXNwbGF5LmlucHV0LnNob3dTZWxlY3Rpb24oeC5wcmVwYXJlZFNlbGVjdGlvbikseC51cGRhdGVkRGlzcGxheSYmRShhLHguYmFyTWVhc3VyZSksKHgudXBkYXRlZERpc3BsYXl8fHguc3RhcnRIZWlnaHQhPWEuZG9jLmhlaWdodCkmJnIoYSx4LmJhck1lYXN1cmUpLHguc2VsZWN0aW9uQ2hhbmdlZCYmTXgoYSksYS5zdGF0ZS5mb2N1c2VkJiZ4LnVwZGF0ZUlucHV0JiZhLmRpc3BsYXkuaW5wdXQucmVzZXQoeC50eXBpbmcpLCF4LmZvY3VzfHx4LmZvY3VzIT1TZCgpfHxkb2N1bWVudC5oYXNGb2N1cyYmIWRvY3VtZW50Lmhhc0ZvY3VzKCl8fFkoeC5jbSl9ZnVuY3Rpb24gQ2EoeCl7dmFyIGE9eC5jbSxiPWEuZGlzcGxheSxjPWEuZG9jO2lmKHgudXBkYXRlZERpc3BsYXkmJkMoYSx4LnVwZGF0ZSksbnVsbD09Yi53aGVlbFN0YXJ0WHx8bnVsbD09eC5zY3JvbGxUb3AmJm51bGw9PXguc2Nyb2xsTGVmdCYmIXguc2Nyb2xsVG9Qb3N8fChiLndoZWVsU3RhcnRYPWIud2hlZWxTdGFydFk9bnVsbCksbnVsbD09eC5zY3JvbGxUb3B8fGIuc2Nyb2xsZXIuc2Nyb2xsVG9wPT14LnNjcm9sbFRvcCYmIXguZm9yY2VTY3JvbGx8fChjLnNjcm9sbFRvcD1NYXRoLm1heCgwLE1hdGgubWluKGIuc2Nyb2xsZXIuc2Nyb2xsSGVpZ2h0LWIuc2Nyb2xsZXIuY2xpZW50SGVpZ2h0LHguc2Nyb2xsVG9wKSksYi5zY3JvbGxiYXJzLnNldFNjcm9sbFRvcChjLnNjcm9sbFRvcCksYi5zY3JvbGxlci5zY3JvbGxUb3A9Yy5zY3JvbGxUb3ApLG51bGw9PXguc2Nyb2xsTGVmdHx8Yi5zY3JvbGxlci5zY3JvbGxMZWZ0PT14LnNjcm9sbExlZnQmJiF4LmZvcmNlU2Nyb2xsfHwoYy5zY3JvbGxMZWZ0PU1hdGgubWF4KDAsTWF0aC5taW4oYi5zY3JvbGxlci5zY3JvbGxXaWR0aC1WeChhKSx4LnNjcm9sbExlZnQpKSxiLnNjcm9sbGJhcnMuc2V0U2Nyb2xsTGVmdChjLnNjcm9sbExlZnQpLGIuc2Nyb2xsZXIuc2Nyb2xsTGVmdD1jLnNjcm9sbExlZnQsdShhKSkseC5zY3JvbGxUb1Bvcyl7dmFyIGQ9SGIoYSxveChjLHguc2Nyb2xsVG9Qb3MuZnJvbSksb3goYyx4LnNjcm9sbFRvUG9zLnRvKSx4LnNjcm9sbFRvUG9zLm1hcmdpbik7eC5zY3JvbGxUb1Bvcy5pc0N1cnNvciYmYS5zdGF0ZS5mb2N1c2VkJiZHYihhLGQpfXZhciBlPXgubWF5YmVIaWRkZW5NYXJrZXJzLGY9eC5tYXliZVVuaGlkZGVuTWFya2VycztpZihlKWZvcih2YXIgZz0wO2c8ZS5sZW5ndGg7KytnKWVbZ10ubGluZXMubGVuZ3RofHxGZihlW2ddLCJoaWRlIik7aWYoZilmb3IoZz0wO2c8Zi5sZW5ndGg7KytnKWZbZ10ubGluZXMubGVuZ3RoJiZGZihmW2ddLCJ1bmhpZGUiKTtiLndyYXBwZXIub2Zmc2V0SGVpZ2h0JiYoYy5zY3JvbGxUb3A9YS5kaXNwbGF5LnNjcm9sbGVyLnNjcm9sbFRvcCkseC5jaGFuZ2VPYmpzJiZGZihhLCJjaGFuZ2VzIixhLHguY2hhbmdlT2JqcykseC51cGRhdGUmJngudXBkYXRlLmZpbmlzaCgpfWZ1bmN0aW9uIERhKHgsYSl7aWYoeC5jdXJPcClyZXR1cm4gYSgpO3RhKHgpO3RyeXtyZXR1cm4gYSgpfWZpbmFsbHl7dmEoeCl9fWZ1bmN0aW9uIEVhKHgsYSl7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoeC5jdXJPcClyZXR1cm4gYS5hcHBseSh4LGFyZ3VtZW50cyk7dGEoeCk7dHJ5e3JldHVybiBhLmFwcGx5KHgsYXJndW1lbnRzKX1maW5hbGx5e3ZhKHgpfX19ZnVuY3Rpb24gRmEoeCl7cmV0dXJuIGZ1bmN0aW9uKCl7aWYodGhpcy5jdXJPcClyZXR1cm4geC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGEodGhpcyk7dHJ5e3JldHVybiB4LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1maW5hbGx5e3ZhKHRoaXMpfX19ZnVuY3Rpb24gR2EoeCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5jbTtpZighYXx8YS5jdXJPcClyZXR1cm4geC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGEoYSk7dHJ5e3JldHVybiB4LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1maW5hbGx5e3ZhKGEpfX19ZnVuY3Rpb24gSGEoeCxhLGIpe3RoaXMubGluZT1hLHRoaXMucmVzdD1yYyhhKSx0aGlzLnNpemU9dGhpcy5yZXN0P3hkKEZkKHRoaXMucmVzdCkpLWIrMToxLHRoaXMubm9kZT10aGlzLnRleHQ9bnVsbCx0aGlzLmhpZGRlbj11Yyh4LGEpfWZ1bmN0aW9uIElhKHgsYSxiKXtmb3IodmFyIGMsZD1bXSxlPWE7Yj5lO2U9Yyl7dmFyIGY9bmV3IEhhKHguZG9jLFljKHguZG9jLGUpLGUpO2M9ZStmLnNpemUsZC5wdXNoKGYpfXJldHVybiBkfWZ1bmN0aW9uIEphKHgsYSxiLGMpe251bGw9PWEmJihhPXguZG9jLmZpcnN0KSxudWxsPT1iJiYoYj14LmRvYy5maXJzdCt4LmRvYy5zaXplKSxjfHwoYz0wKTt2YXIgZD14LmRpc3BsYXk7aWYoYyYmYjxkLnZpZXdUbyYmKG51bGw9PWQudXBkYXRlTGluZU51bWJlcnN8fGQudXBkYXRlTGluZU51bWJlcnM+YSkmJihkLnVwZGF0ZUxpbmVOdW1iZXJzPWEpLHguY3VyT3Audmlld0NoYW5nZWQ9ITAsYT49ZC52aWV3VG8pSWUmJnNjKHguZG9jLGEpPGQudmlld1RvJiZMYSh4KTtlbHNlIGlmKGI8PWQudmlld0Zyb20pSWUmJnRjKHguZG9jLGIrYyk+ZC52aWV3RnJvbT9MYSh4KTooZC52aWV3RnJvbSs9YyxkLnZpZXdUbys9Yyk7ZWxzZSBpZihhPD1kLnZpZXdGcm9tJiZiPj1kLnZpZXdUbylMYSh4KTtlbHNlIGlmKGE8PWQudmlld0Zyb20peyhlPU5hKHgsYixiK2MsMSkpPyhkLnZpZXc9ZC52aWV3LnNsaWNlKGUuaW5kZXgpLGQudmlld0Zyb209ZS5saW5lTixkLnZpZXdUbys9Yyk6TGEoeCl9ZWxzZSBpZihiPj1kLnZpZXdUbyl7dmFyIGU7KGU9TmEoeCxhLGEsLTEpKT8oZC52aWV3PWQudmlldy5zbGljZSgwLGUuaW5kZXgpLGQudmlld1RvPWUubGluZU4pOkxhKHgpfWVsc2V7dmFyIGY9TmEoeCxhLGEsLTEpLGc9TmEoeCxiLGIrYywxKTtmJiZnPyhkLnZpZXc9ZC52aWV3LnNsaWNlKDAsZi5pbmRleCkuY29uY2F0KElhKHgsZi5saW5lTixnLmxpbmVOKSkuY29uY2F0KGQudmlldy5zbGljZShnLmluZGV4KSksZC52aWV3VG8rPWMpOkxhKHgpfXZhciBoPWQuZXh0ZXJuYWxNZWFzdXJlZDtoJiYoYjxoLmxpbmVOP2gubGluZU4rPWM6YTxoLmxpbmVOK2guc2l6ZSYmKGQuZXh0ZXJuYWxNZWFzdXJlZD1udWxsKSl9ZnVuY3Rpb24gS2EoeCxhLGIpe3guY3VyT3Audmlld0NoYW5nZWQ9ITA7dmFyIGM9eC5kaXNwbGF5LGQ9eC5kaXNwbGF5LmV4dGVybmFsTWVhc3VyZWQ7aWYoZCYmYT49ZC5saW5lTiYmYTxkLmxpbmVOK2Quc2l6ZSYmKGMuZXh0ZXJuYWxNZWFzdXJlZD1udWxsKSwhKGE8Yy52aWV3RnJvbXx8YT49Yy52aWV3VG8pKXt2YXIgZT1jLnZpZXdbTWEoeCxhKV07aWYobnVsbCE9ZS5ub2RlKXt2YXIgZj1lLmNoYW5nZXN8fChlLmNoYW5nZXM9W10pOy0xPT1HZChmLGIpJiZmLnB1c2goYil9fX1mdW5jdGlvbiBMYSh4KXt4LmRpc3BsYXkudmlld0Zyb209eC5kaXNwbGF5LnZpZXdUbz14LmRvYy5maXJzdCx4LmRpc3BsYXkudmlldz1bXSx4LmRpc3BsYXkudmlld09mZnNldD0wfWZ1bmN0aW9uIE1hKHgsYSl7aWYoYT49eC5kaXNwbGF5LnZpZXdUbylyZXR1cm4gbnVsbDtpZigwPihhLT14LmRpc3BsYXkudmlld0Zyb20pKXJldHVybiBudWxsO2Zvcih2YXIgYj14LmRpc3BsYXkudmlldyxjPTA7YzxiLmxlbmd0aDtjKyspaWYoMD4oYS09YltjXS5zaXplKSlyZXR1cm4gY31mdW5jdGlvbiBOYSh4LGEsYixjKXt2YXIgZCxlPU1hKHgsYSksZj14LmRpc3BsYXkudmlldztpZighSWV8fGI9PXguZG9jLmZpcnN0K3guZG9jLnNpemUpcmV0dXJue2luZGV4OmUsbGluZU46Yn07Zm9yKHZhciBnPTAsaD14LmRpc3BsYXkudmlld0Zyb207ZT5nO2crKyloKz1mW2ddLnNpemU7aWYoaCE9YSl7aWYoYz4wKXtpZihlPT1mLmxlbmd0aC0xKXJldHVybiBudWxsO2Q9aCtmW2VdLnNpemUtYSxlKyt9ZWxzZSBkPWgtYTthKz1kLGIrPWR9Zm9yKDtzYyh4LmRvYyxiKSE9Yjspe2lmKGU9PSgwPmM/MDpmLmxlbmd0aC0xKSlyZXR1cm4gbnVsbDtiKz1jKmZbZS0oMD5jPzE6MCldLnNpemUsZSs9Y31yZXR1cm57aW5kZXg6ZSxsaW5lTjpifX1mdW5jdGlvbiBPYSh4LGEsYil7dmFyIGM9eC5kaXNwbGF5OzA9PWMudmlldy5sZW5ndGh8fGE+PWMudmlld1RvfHxiPD1jLnZpZXdGcm9tPyhjLnZpZXc9SWEoeCxhLGIpLGMudmlld0Zyb209YSk6KGMudmlld0Zyb20+YT9jLnZpZXc9SWEoeCxhLGMudmlld0Zyb20pLmNvbmNhdChjLnZpZXcpOmMudmlld0Zyb208YSYmKGMudmlldz1jLnZpZXcuc2xpY2UoTWEoeCxhKSkpLGMudmlld0Zyb209YSxjLnZpZXdUbzxiP2Mudmlldz1jLnZpZXcuY29uY2F0KElhKHgsYy52aWV3VG8sYikpOmMudmlld1RvPmImJihjLnZpZXc9Yy52aWV3LnNsaWNlKDAsTWEoeCxiKSkpKSxjLnZpZXdUbz1ifWZ1bmN0aW9uIFBhKHgpe2Zvcih2YXIgYT14LmRpc3BsYXkudmlldyxiPTAsYz0wO2M8YS5sZW5ndGg7YysrKXt2YXIgZD1hW2NdO2QuaGlkZGVufHxkLm5vZGUmJiFkLmNoYW5nZXN8fCsrYn1yZXR1cm4gYn1mdW5jdGlvbiBRYSh4KXtmdW5jdGlvbiBhKCl7ZC5hY3RpdmVUb3VjaCYmKGU9c2V0VGltZW91dChmdW5jdGlvbigpe2QuYWN0aXZlVG91Y2g9bnVsbH0sMWUzKSwoZj1kLmFjdGl2ZVRvdWNoKS5lbmQ9K25ldyBEYXRlKX1mdW5jdGlvbiBiKHgpe2lmKDEhPXgudG91Y2hlcy5sZW5ndGgpcmV0dXJuITE7dmFyIGE9eC50b3VjaGVzWzBdO3JldHVybiBhLnJhZGl1c1g8PTEmJmEucmFkaXVzWTw9MX1mdW5jdGlvbiBjKHgsYSl7aWYobnVsbD09YS5sZWZ0KXJldHVybiEwO3ZhciBiPWEubGVmdC14LmxlZnQsYz1hLnRvcC14LnRvcDtyZXR1cm4gYipiK2MqYz40MDB9dmFyIGQ9eC5kaXNwbGF5O0NmKGQuc2Nyb2xsZXIsIm1vdXNlZG93biIsRWEoeCxWYSkpLENmKGQuc2Nyb2xsZXIsImRibGNsaWNrIixxZSYmMTE+cmU/RWEoeCxmdW5jdGlvbihhKXtpZighemQoeCxhKSl7dmFyIGI9VWEoeCxhKTtpZihiJiYhJGEoeCxhKSYmIVRhKHguZGlzcGxheSxhKSl7emYoYSk7dmFyIGM9eC5maW5kV29yZEF0KGIpO3R4KHguZG9jLGMuYW5jaG9yLGMuaGVhZCl9fX0pOmZ1bmN0aW9uKGEpe3pkKHgsYSl8fHpmKGEpfSksR2V8fENmKGQuc2Nyb2xsZXIsImNvbnRleHRtZW51IixmdW5jdGlvbihhKXtyYih4LGEpfSk7dmFyIGUsZj17ZW5kOjB9O0NmKGQuc2Nyb2xsZXIsInRvdWNoc3RhcnQiLGZ1bmN0aW9uKHgpe2lmKCFiKHgpKXtjbGVhclRpbWVvdXQoZSk7dmFyIGE9K25ldyBEYXRlO2QuYWN0aXZlVG91Y2g9e3N0YXJ0OmEsbW92ZWQ6ITEscHJldjphLWYuZW5kPD0zMDA/ZjpudWxsfSwxPT14LnRvdWNoZXMubGVuZ3RoJiYoZC5hY3RpdmVUb3VjaC5sZWZ0PXgudG91Y2hlc1swXS5wYWdlWCxkLmFjdGl2ZVRvdWNoLnRvcD14LnRvdWNoZXNbMF0ucGFnZVkpfX0pLENmKGQuc2Nyb2xsZXIsInRvdWNobW92ZSIsZnVuY3Rpb24oKXtkLmFjdGl2ZVRvdWNoJiYoZC5hY3RpdmVUb3VjaC5tb3ZlZD0hMCl9KSxDZihkLnNjcm9sbGVyLCJ0b3VjaGVuZCIsZnVuY3Rpb24oYil7dmFyIGU9ZC5hY3RpdmVUb3VjaDtpZihlJiYhVGEoZCxiKSYmbnVsbCE9ZS5sZWZ0JiYhZS5tb3ZlZCYmbmV3IERhdGUtZS5zdGFydDwzMDApe3ZhciBmLGc9eC5jb29yZHNDaGFyKGQuYWN0aXZlVG91Y2gsInBhZ2UiKTtmPSFlLnByZXZ8fGMoZSxlLnByZXYpP25ldyBreChnLGcpOiFlLnByZXYucHJldnx8YyhlLGUucHJldi5wcmV2KT94LmZpbmRXb3JkQXQoZyk6bmV3IGt4KEplKGcubGluZSwwKSxveCh4LmRvYyxKZShnLmxpbmUrMSwwKSkpLHguc2V0U2VsZWN0aW9uKGYuYW5jaG9yLGYuaGVhZCkseC5mb2N1cygpLHpmKGIpfWEoKX0pLENmKGQuc2Nyb2xsZXIsInRvdWNoY2FuY2VsIixhKSxDZihkLnNjcm9sbGVyLCJzY3JvbGwiLGZ1bmN0aW9uKCl7ZC5zY3JvbGxlci5jbGllbnRIZWlnaHQmJihjYih4LGQuc2Nyb2xsZXIuc2Nyb2xsVG9wKSxkYih4LGQuc2Nyb2xsZXIuc2Nyb2xsTGVmdCwhMCksRmYoeCwic2Nyb2xsIix4KSl9KSxDZihkLnNjcm9sbGVyLCJtb3VzZXdoZWVsIixmdW5jdGlvbihhKXtlYih4LGEpfSksQ2YoZC5zY3JvbGxlciwiRE9NTW91c2VTY3JvbGwiLGZ1bmN0aW9uKGEpe2ViKHgsYSl9KSxDZihkLndyYXBwZXIsInNjcm9sbCIsZnVuY3Rpb24oKXtkLndyYXBwZXIuc2Nyb2xsVG9wPWQud3JhcHBlci5zY3JvbGxMZWZ0PTB9KSxkLmRyYWdGdW5jdGlvbnM9e2VudGVyOmZ1bmN0aW9uKGEpe3pkKHgsYSl8fEJmKGEpfSxvdmVyOmZ1bmN0aW9uKGEpe3pkKHgsYSl8fChhYih4LGEpLEJmKGEpKX0sc3RhcnQ6ZnVuY3Rpb24oYSl7eGIoeCxhKX0sZHJvcDpFYSh4LF9hKSxsZWF2ZTpmdW5jdGlvbigpe2JiKHgpfX07dmFyIGc9ZC5pbnB1dC5nZXRGaWVsZCgpO0NmKGcsImtleXVwIixmdW5jdGlvbihhKXttYi5jYWxsKHgsYSl9KSxDZihnLCJrZXlkb3duIixFYSh4LGtiKSksQ2YoZywia2V5cHJlc3MiLEVhKHgsbmIpKSxDZihnLCJmb2N1cyIsTGQocGIseCkpLENmKGcsImJsdXIiLExkKHFiLHgpKX1mdW5jdGlvbiBSYShhLGIsYyl7aWYoIWIhPSEoYyYmYyE9eC5Jbml0KSl7dmFyIGQ9YS5kaXNwbGF5LmRyYWdGdW5jdGlvbnMsZT1iP0NmOkVmO2UoYS5kaXNwbGF5LnNjcm9sbGVyLCJkcmFnc3RhcnQiLGQuc3RhcnQpLGUoYS5kaXNwbGF5LnNjcm9sbGVyLCJkcmFnZW50ZXIiLGQuZW50ZXIpLGUoYS5kaXNwbGF5LnNjcm9sbGVyLCJkcmFnb3ZlciIsZC5vdmVyKSxlKGEuZGlzcGxheS5zY3JvbGxlciwiZHJhZ2xlYXZlIixkLmxlYXZlKSxlKGEuZGlzcGxheS5zY3JvbGxlciwiZHJvcCIsZC5kcm9wKX19ZnVuY3Rpb24gU2EoeCl7dmFyIGE9eC5kaXNwbGF5OyhhLmxhc3RXcmFwSGVpZ2h0IT1hLndyYXBwZXIuY2xpZW50SGVpZ2h0fHxhLmxhc3RXcmFwV2lkdGghPWEud3JhcHBlci5jbGllbnRXaWR0aCkmJihhLmNhY2hlZENoYXJXaWR0aD1hLmNhY2hlZFRleHRIZWlnaHQ9YS5jYWNoZWRQYWRkaW5nSD1udWxsLGEuc2Nyb2xsYmFyc0NsaXBwZWQ9ITEseC5zZXRTaXplKCkpfWZ1bmN0aW9uIFRhKHgsYSl7Zm9yKHZhciBiPXRkKGEpO2IhPXgud3JhcHBlcjtiPWIucGFyZW50Tm9kZSlpZighYnx8MT09Yi5ub2RlVHlwZSYmInRydWUiPT1iLmdldEF0dHJpYnV0ZSgiY20taWdub3JlLWV2ZW50cyIpfHxiLnBhcmVudE5vZGU9PXguc2l6ZXImJmIhPXgubW92ZXIpcmV0dXJuITB9ZnVuY3Rpb24gVWEoeCxhLGIsYyl7dmFyIGQ9eC5kaXNwbGF5O2lmKCFiJiYidHJ1ZSI9PXRkKGEpLmdldEF0dHJpYnV0ZSgiY20tbm90LWNvbnRlbnQiKSlyZXR1cm4gbnVsbDt2YXIgZSxmLGc9ZC5saW5lU3BhY2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7dHJ5e2U9YS5jbGllbnRYLWcubGVmdCxmPWEuY2xpZW50WS1nLnRvcH1jYXRjaChhKXtyZXR1cm4gbnVsbH12YXIgaCxpPXBhKHgsZSxmKTtpZihjJiYxPT1pLnhSZWwmJihoPVljKHguZG9jLGkubGluZSkudGV4dCkubGVuZ3RoPT1pLmNoKXt2YXIgaj1NZihoLGgubGVuZ3RoLHgub3B0aW9ucy50YWJTaXplKS1oLmxlbmd0aDtpPUplKGkubGluZSxNYXRoLm1heCgwLE1hdGgucm91bmQoKGUtVHgoeC5kaXNwbGF5KS5sZWZ0KS9zYSh4LmRpc3BsYXkpKS1qKSl9cmV0dXJuIGl9ZnVuY3Rpb24gVmEoeCl7dmFyIGE9dGhpcyxiPWEuZGlzcGxheTtpZighKGIuYWN0aXZlVG91Y2gmJmIuaW5wdXQuc3VwcG9ydHNUb3VjaCgpfHx6ZChhLHgpKSl7aWYoYi5zaGlmdD14LnNoaWZ0S2V5LFRhKGIseCkpcmV0dXJuIHZvaWQoc2V8fChiLnNjcm9sbGVyLmRyYWdnYWJsZT0hMSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yi5zY3JvbGxlci5kcmFnZ2FibGU9ITB9LDEwMCkpKTtpZighJGEoYSx4KSl7dmFyIGM9VWEoYSx4KTtzd2l0Y2god2luZG93LmZvY3VzKCksdWQoeCkpe2Nhc2UgMTphLnN0YXRlLnNlbGVjdGluZ1RleHQ/YS5zdGF0ZS5zZWxlY3RpbmdUZXh0KHgpOmM/V2EoYSx4LGMpOnRkKHgpPT1iLnNjcm9sbGVyJiZ6Zih4KTticmVhaztjYXNlIDI6c2UmJihhLnN0YXRlLmxhc3RNaWRkbGVEb3duPStuZXcgRGF0ZSksYyYmdHgoYS5kb2MsYyksc2V0VGltZW91dChmdW5jdGlvbigpe2IuaW5wdXQuZm9jdXMoKX0sMjApLHpmKHgpO2JyZWFrO2Nhc2UgMzpHZT9yYihhLHgpOm9iKGEpfX19fWZ1bmN0aW9uIFdhKHgsYSxiKXtxZT9zZXRUaW1lb3V0KExkKFkseCksMCk6eC5jdXJPcC5mb2N1cz1TZCgpO3ZhciBjLGQ9K25ldyBEYXRlO09lJiZPZS50aW1lPmQtNDAwJiYwPT1LZShPZS5wb3MsYik/Yz0idHJpcGxlIjpOZSYmTmUudGltZT5kLTQwMCYmMD09S2UoTmUucG9zLGIpPyhjPSJkb3VibGUiLE9lPXt0aW1lOmQscG9zOmJ9KTooYz0ic2luZ2xlIixOZT17dGltZTpkLHBvczpifSk7dmFyIGUsZj14LmRvYy5zZWwsZz1DZT9hLm1ldGFLZXk6YS5jdHJsS2V5O3gub3B0aW9ucy5kcmFnRHJvcCYmJGYmJiF4LmlzUmVhZE9ubHkoKSYmInNpbmdsZSI9PWMmJihlPWYuY29udGFpbnMoYikpPi0xJiYoS2UoKGU9Zi5yYW5nZXNbZV0pLmZyb20oKSxiKTwwfHxiLnhSZWw+MCkmJihLZShlLnRvKCksYik+MHx8Yi54UmVsPDApP1hhKHgsYSxiLGcpOllhKHgsYSxiLGMsZyl9ZnVuY3Rpb24gWGEoeCxhLGIsYyl7dmFyIGQ9eC5kaXNwbGF5LGU9K25ldyBEYXRlLGY9RWEoeCxmdW5jdGlvbihnKXtzZSYmKGQuc2Nyb2xsZXIuZHJhZ2dhYmxlPSExKSx4LnN0YXRlLmRyYWdnaW5nVGV4dD0hMSxFZihkb2N1bWVudCwibW91c2V1cCIsZiksRWYoZC5zY3JvbGxlciwiZHJvcCIsZiksTWF0aC5hYnMoYS5jbGllbnRYLWcuY2xpZW50WCkrTWF0aC5hYnMoYS5jbGllbnRZLWcuY2xpZW50WSk8MTAmJih6ZihnKSwhYyYmK25ldyBEYXRlLTIwMDxlJiZ0eCh4LmRvYyxiKSxzZXx8cWUmJjk9PXJlP3NldFRpbWVvdXQoZnVuY3Rpb24oKXtkb2N1bWVudC5ib2R5LmZvY3VzKCksZC5pbnB1dC5mb2N1cygpfSwyMCk6ZC5pbnB1dC5mb2N1cygpKX0pO3NlJiYoZC5zY3JvbGxlci5kcmFnZ2FibGU9ITApLHguc3RhdGUuZHJhZ2dpbmdUZXh0PWYsZC5zY3JvbGxlci5kcmFnRHJvcCYmZC5zY3JvbGxlci5kcmFnRHJvcCgpLENmKGRvY3VtZW50LCJtb3VzZXVwIixmKSxDZihkLnNjcm9sbGVyLCJkcm9wIixmKX1mdW5jdGlvbiBZYSh4LGEsYixjLGQpe2Z1bmN0aW9uIGUoYSl7aWYoMCE9S2UocCxhKSlpZihwPWEsInJlY3QiPT1jKXtmb3IodmFyIGQ9W10sZT14Lm9wdGlvbnMudGFiU2l6ZSxmPU1mKFljKGksYi5saW5lKS50ZXh0LGIuY2gsZSksZz1NZihZYyhpLGEubGluZSkudGV4dCxhLmNoLGUpLGg9TWF0aC5taW4oZixnKSxtPU1hdGgubWF4KGYsZyksbj1NYXRoLm1pbihiLmxpbmUsYS5saW5lKSxvPU1hdGgubWluKHgubGFzdExpbmUoKSxNYXRoLm1heChiLmxpbmUsYS5saW5lKSk7bz49bjtuKyspe3ZhciBxPVljKGksbikudGV4dCxyPU5mKHEsaCxlKTtoPT1tP2QucHVzaChuZXcga3goSmUobixyKSxKZShuLHIpKSk6cS5sZW5ndGg+ciYmZC5wdXNoKG5ldyBreChKZShuLHIpLEplKG4sTmYocSxtLGUpKSkpfWQubGVuZ3RofHxkLnB1c2gobmV3IGt4KGIsYikpLEF4KGksbHgobC5yYW5nZXMuc2xpY2UoMCxrKS5jb25jYXQoZCksaykse29yaWdpbjoiKm1vdXNlIixzY3JvbGw6ITF9KSx4LnNjcm9sbEludG9WaWV3KGEpfWVsc2V7dmFyIHM9aix0PXMuYW5jaG9yLHU9YTtpZigic2luZ2xlIiE9Yyl7aWYoImRvdWJsZSI9PWMpdmFyIHY9eC5maW5kV29yZEF0KGEpO2Vsc2Ugdj1uZXcga3goSmUoYS5saW5lLDApLG94KGksSmUoYS5saW5lKzEsMCkpKTtLZSh2LmFuY2hvcix0KT4wPyh1PXYuaGVhZCx0PVgocy5mcm9tKCksdi5hbmNob3IpKToodT12LmFuY2hvcix0PVcocy50bygpLHYuaGVhZCkpfShkPWwucmFuZ2VzLnNsaWNlKDApKVtrXT1uZXcga3gob3goaSx0KSx1KSxBeChpLGx4KGQsayksS2YpfX1mdW5jdGlvbiBmKGEpe3ZhciBiPSsrcixkPVVhKHgsYSwhMCwicmVjdCI9PWMpO2lmKGQpaWYoMCE9S2UoZCxwKSl7eC5jdXJPcC5mb2N1cz1TZCgpLGUoZCk7dmFyIGc9dChoLGkpOyhkLmxpbmU+PWcudG98fGQubGluZTxnLmZyb20pJiZzZXRUaW1lb3V0KEVhKHgsZnVuY3Rpb24oKXtyPT1iJiZmKGEpfSksMTUwKX1lbHNle3ZhciBqPWEuY2xpZW50WTxxLnRvcD8tMjA6YS5jbGllbnRZPnEuYm90dG9tPzIwOjA7aiYmc2V0VGltZW91dChFYSh4LGZ1bmN0aW9uKCl7cj09YiYmKGguc2Nyb2xsZXIuc2Nyb2xsVG9wKz1qLGYoYSkpfSksNTApfX1mdW5jdGlvbiBnKGEpe3guc3RhdGUuc2VsZWN0aW5nVGV4dD0hMSxyPTEvMCx6ZihhKSxoLmlucHV0LmZvY3VzKCksRWYoZG9jdW1lbnQsIm1vdXNlbW92ZSIscyksRWYoZG9jdW1lbnQsIm1vdXNldXAiLHUpLGkuaGlzdG9yeS5sYXN0U2VsT3JpZ2luPW51bGx9dmFyIGg9eC5kaXNwbGF5LGk9eC5kb2M7emYoYSk7dmFyIGosayxsPWkuc2VsLG09bC5yYW5nZXM7aWYoZCYmIWEuc2hpZnRLZXk/KGs9aS5zZWwuY29udGFpbnMoYiksaj1rPi0xP21ba106bmV3IGt4KGIsYikpOihqPWkuc2VsLnByaW1hcnkoKSxrPWkuc2VsLnByaW1JbmRleCksYS5hbHRLZXkpYz0icmVjdCIsZHx8KGo9bmV3IGt4KGIsYikpLGI9VWEoeCxhLCEwLCEwKSxrPS0xO2Vsc2UgaWYoImRvdWJsZSI9PWMpe3ZhciBuPXguZmluZFdvcmRBdChiKTtqPXguZGlzcGxheS5zaGlmdHx8aS5leHRlbmQ/c3goaSxqLG4uYW5jaG9yLG4uaGVhZCk6bn1lbHNlIGlmKCJ0cmlwbGUiPT1jKXt2YXIgbz1uZXcga3goSmUoYi5saW5lLDApLG94KGksSmUoYi5saW5lKzEsMCkpKTtqPXguZGlzcGxheS5zaGlmdHx8aS5leHRlbmQ/c3goaSxqLG8uYW5jaG9yLG8uaGVhZCk6b31lbHNlIGo9c3goaSxqLGIpO2Q/LTE9PWs/KGs9bS5sZW5ndGgsQXgoaSxseChtLmNvbmNhdChbal0pLGspLHtzY3JvbGw6ITEsb3JpZ2luOiIqbW91c2UifSkpOm0ubGVuZ3RoPjEmJm1ba10uZW1wdHkoKSYmInNpbmdsZSI9PWMmJiFhLnNoaWZ0S2V5PyhBeChpLGx4KG0uc2xpY2UoMCxrKS5jb25jYXQobS5zbGljZShrKzEpKSwwKSx7c2Nyb2xsOiExLG9yaWdpbjoiKm1vdXNlIn0pLGw9aS5zZWwpOnZ4KGksayxqLEtmKTooaz0wLEF4KGksbmV3IGp4KFtqXSwwKSxLZiksbD1pLnNlbCk7dmFyIHA9YixxPWgud3JhcHBlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxyPTAscz1FYSh4LGZ1bmN0aW9uKHgpe3VkKHgpP2YoeCk6Zyh4KX0pLHU9RWEoeCxnKTt4LnN0YXRlLnNlbGVjdGluZ1RleHQ9dSxDZihkb2N1bWVudCwibW91c2Vtb3ZlIixzKSxDZihkb2N1bWVudCwibW91c2V1cCIsdSl9ZnVuY3Rpb24gWmEoeCxhLGIsYyl7dHJ5e3ZhciBkPWEuY2xpZW50WCxlPWEuY2xpZW50WX1jYXRjaChhKXtyZXR1cm4hMX1pZihkPj1NYXRoLmZsb29yKHguZGlzcGxheS5ndXR0ZXJzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnJpZ2h0KSlyZXR1cm4hMTtjJiZ6ZihhKTt2YXIgZj14LmRpc3BsYXksZz1mLmxpbmVEaXYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7aWYoZT5nLmJvdHRvbXx8IUJkKHgsYikpcmV0dXJuIHNkKGEpO2UtPWcudG9wLWYudmlld09mZnNldDtmb3IodmFyIGg9MDtoPHgub3B0aW9ucy5ndXR0ZXJzLmxlbmd0aDsrK2gpe3ZhciBpPWYuZ3V0dGVycy5jaGlsZE5vZGVzW2hdO2lmKGkmJmkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkucmlnaHQ+PWQpe3ZhciBqPWFkKHguZG9jLGUpLGs9eC5vcHRpb25zLmd1dHRlcnNbaF07cmV0dXJuIEZmKHgsYix4LGosayxhKSxzZChhKX19fWZ1bmN0aW9uICRhKHgsYSl7cmV0dXJuIFphKHgsYSwiZ3V0dGVyQ2xpY2siLCEwKX1mdW5jdGlvbiBfYSh4KXt2YXIgYT10aGlzO2lmKGJiKGEpLCF6ZChhLHgpJiYhVGEoYS5kaXNwbGF5LHgpKXt6Zih4KSxxZSYmKFNlPStuZXcgRGF0ZSk7dmFyIGI9VWEoYSx4LCEwKSxjPXguZGF0YVRyYW5zZmVyLmZpbGVzO2lmKGImJiFhLmlzUmVhZE9ubHkoKSlpZihjJiZjLmxlbmd0aCYmd2luZG93LkZpbGVSZWFkZXImJndpbmRvdy5GaWxlKWZvcih2YXIgZD1jLmxlbmd0aCxlPUFycmF5KGQpLGY9MCxnPWZ1bmN0aW9uKHgsYyl7aWYoIWEub3B0aW9ucy5hbGxvd0Ryb3BGaWxlVHlwZXN8fC0xIT1HZChhLm9wdGlvbnMuYWxsb3dEcm9wRmlsZVR5cGVzLHgudHlwZSkpe3ZhciBnPW5ldyBGaWxlUmVhZGVyO2cub25sb2FkPUVhKGEsZnVuY3Rpb24oKXt2YXIgeD1nLnJlc3VsdDtpZigvW1x4MDAtXHgwOFx4MGUtXHgxZl17Mn0vLnRlc3QoeCkmJih4PSIiKSxlW2NdPXgsKytmPT1kKXt2YXIgaD17ZnJvbTpiPW94KGEuZG9jLGIpLHRvOmIsdGV4dDphLmRvYy5zcGxpdExpbmVzKGUuam9pbihhLmRvYy5saW5lU2VwYXJhdG9yKCkpKSxvcmlnaW46InBhc3RlIn07emIoYS5kb2MsaCksengoYS5kb2MsbXgoYixZZShoKSkpfX0pLGcucmVhZEFzVGV4dCh4KX19LGg9MDtkPmg7KytoKWcoY1toXSxoKTtlbHNle2lmKGEuc3RhdGUuZHJhZ2dpbmdUZXh0JiZhLmRvYy5zZWwuY29udGFpbnMoYik+LTEpcmV0dXJuIGEuc3RhdGUuZHJhZ2dpbmdUZXh0KHgpLHZvaWQgc2V0VGltZW91dChmdW5jdGlvbigpe2EuZGlzcGxheS5pbnB1dC5mb2N1cygpfSwyMCk7dHJ5e2lmKGU9eC5kYXRhVHJhbnNmZXIuZ2V0RGF0YSgiVGV4dCIpKXtpZihhLnN0YXRlLmRyYWdnaW5nVGV4dCYmIShDZT94LmFsdEtleTp4LmN0cmxLZXkpKXZhciBpPWEubGlzdFNlbGVjdGlvbnMoKTtpZihCeChhLmRvYyxteChiLGIpKSxpKWZvcihoPTA7aDxpLmxlbmd0aDsrK2gpRmIoYS5kb2MsIiIsaVtoXS5hbmNob3IsaVtoXS5oZWFkLCJkcmFnIik7YS5yZXBsYWNlU2VsZWN0aW9uKGUsImFyb3VuZCIsInBhc3RlIiksYS5kaXNwbGF5LmlucHV0LmZvY3VzKCl9fWNhdGNoKHgpe319fX1mdW5jdGlvbiB4Yih4LGEpe2lmKHFlJiYoIXguc3RhdGUuZHJhZ2dpbmdUZXh0fHwrbmV3IERhdGUtU2U8MTAwKSlCZihhKTtlbHNlIGlmKCF6ZCh4LGEpJiYhVGEoeC5kaXNwbGF5LGEpJiYoYS5kYXRhVHJhbnNmZXIuc2V0RGF0YSgiVGV4dCIseC5nZXRTZWxlY3Rpb24oKSksYS5kYXRhVHJhbnNmZXIuc2V0RHJhZ0ltYWdlJiYhd2UpKXt2YXIgYj1QZCgiaW1nIixudWxsLG51bGwsInBvc2l0aW9uOiBmaXhlZDsgbGVmdDogMDsgdG9wOiAwOyIpO2Iuc3JjPSJkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhBUUFCQUFBQUFDSDVCQUVLQUFFQUxBQUFBQUFCQUFFQUFBSUNUQUVBT3c9PSIsdmUmJihiLndpZHRoPWIuaGVpZ2h0PTEseC5kaXNwbGF5LndyYXBwZXIuYXBwZW5kQ2hpbGQoYiksYi5fdG9wPWIub2Zmc2V0VG9wKSxhLmRhdGFUcmFuc2Zlci5zZXREcmFnSW1hZ2UoYiwwLDApLHZlJiZiLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYil9fWZ1bmN0aW9uIGFiKHgsYSl7dmFyIGI9VWEoeCxhKTtpZihiKXt2YXIgYz1kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7S3goeCxiLGMpLHguZGlzcGxheS5kcmFnQ3Vyc29yfHwoeC5kaXNwbGF5LmRyYWdDdXJzb3I9UGQoImRpdiIsbnVsbCwiQ29kZU1pcnJvci1jdXJzb3JzIENvZGVNaXJyb3ItZHJhZ2N1cnNvcnMiKSx4LmRpc3BsYXkubGluZVNwYWNlLmluc2VydEJlZm9yZSh4LmRpc3BsYXkuZHJhZ0N1cnNvcix4LmRpc3BsYXkuY3Vyc29yRGl2KSksUmQoeC5kaXNwbGF5LmRyYWdDdXJzb3IsYyl9fWZ1bmN0aW9uIGJiKHgpe3guZGlzcGxheS5kcmFnQ3Vyc29yJiYoeC5kaXNwbGF5LmxpbmVTcGFjZS5yZW1vdmVDaGlsZCh4LmRpc3BsYXkuZHJhZ0N1cnNvcikseC5kaXNwbGF5LmRyYWdDdXJzb3I9bnVsbCl9ZnVuY3Rpb24gY2IoeCxhKXtNYXRoLmFicyh4LmRvYy5zY3JvbGxUb3AtYSk8Mnx8KHguZG9jLnNjcm9sbFRvcD1hLG5lfHxEKHgse3RvcDphfSkseC5kaXNwbGF5LnNjcm9sbGVyLnNjcm9sbFRvcCE9YSYmKHguZGlzcGxheS5zY3JvbGxlci5zY3JvbGxUb3A9YSkseC5kaXNwbGF5LnNjcm9sbGJhcnMuc2V0U2Nyb2xsVG9wKGEpLG5lJiZEKHgpLE54KHgsMTAwKSl9ZnVuY3Rpb24gZGIoeCxhLGIpeyhiP2E9PXguZG9jLnNjcm9sbExlZnQ6TWF0aC5hYnMoeC5kb2Muc2Nyb2xsTGVmdC1hKTwyKXx8KGE9TWF0aC5taW4oYSx4LmRpc3BsYXkuc2Nyb2xsZXIuc2Nyb2xsV2lkdGgteC5kaXNwbGF5LnNjcm9sbGVyLmNsaWVudFdpZHRoKSx4LmRvYy5zY3JvbGxMZWZ0PWEsdSh4KSx4LmRpc3BsYXkuc2Nyb2xsZXIuc2Nyb2xsTGVmdCE9YSYmKHguZGlzcGxheS5zY3JvbGxlci5zY3JvbGxMZWZ0PWEpLHguZGlzcGxheS5zY3JvbGxiYXJzLnNldFNjcm9sbExlZnQoYSkpfWZ1bmN0aW9uIGViKHgsYSl7dmFyIGI9VmUoYSksYz1iLngsZD1iLnksZT14LmRpc3BsYXksZj1lLnNjcm9sbGVyLGc9Zi5zY3JvbGxXaWR0aD5mLmNsaWVudFdpZHRoLGg9Zi5zY3JvbGxIZWlnaHQ+Zi5jbGllbnRIZWlnaHQ7aWYoYyYmZ3x8ZCYmaCl7aWYoZCYmQ2UmJnNlKXg6Zm9yKHZhciBpPWEudGFyZ2V0LGo9ZS52aWV3O2khPWY7aT1pLnBhcmVudE5vZGUpZm9yKHZhciBrPTA7azxqLmxlbmd0aDtrKyspaWYoaltrXS5ub2RlPT1pKXt4LmRpc3BsYXkuY3VycmVudFdoZWVsVGFyZ2V0PWk7YnJlYWsgeH1pZihjJiYhbmUmJiF2ZSYmbnVsbCE9VWUpcmV0dXJuIGQmJmgmJmNiKHgsTWF0aC5tYXgoMCxNYXRoLm1pbihmLnNjcm9sbFRvcCtkKlVlLGYuc2Nyb2xsSGVpZ2h0LWYuY2xpZW50SGVpZ2h0KSkpLGRiKHgsTWF0aC5tYXgoMCxNYXRoLm1pbihmLnNjcm9sbExlZnQrYypVZSxmLnNjcm9sbFdpZHRoLWYuY2xpZW50V2lkdGgpKSksKCFkfHxkJiZoKSYmemYoYSksdm9pZChlLndoZWVsU3RhcnRYPW51bGwpO2lmKGQmJm51bGwhPVVlKXt2YXIgbD1kKlVlLG09eC5kb2Muc2Nyb2xsVG9wLG49bStlLndyYXBwZXIuY2xpZW50SGVpZ2h0OzA+bD9tPU1hdGgubWF4KDAsbStsLTUwKTpuPU1hdGgubWluKHguZG9jLmhlaWdodCxuK2wrNTApLEQoeCx7dG9wOm0sYm90dG9tOm59KX0yMD5UZSYmKG51bGw9PWUud2hlZWxTdGFydFg/KGUud2hlZWxTdGFydFg9Zi5zY3JvbGxMZWZ0LGUud2hlZWxTdGFydFk9Zi5zY3JvbGxUb3AsZS53aGVlbERYPWMsZS53aGVlbERZPWQsc2V0VGltZW91dChmdW5jdGlvbigpe2lmKG51bGwhPWUud2hlZWxTdGFydFgpe3ZhciB4PWYuc2Nyb2xsTGVmdC1lLndoZWVsU3RhcnRYLGE9Zi5zY3JvbGxUb3AtZS53aGVlbFN0YXJ0WSxiPWEmJmUud2hlZWxEWSYmYS9lLndoZWVsRFl8fHgmJmUud2hlZWxEWCYmeC9lLndoZWVsRFg7ZS53aGVlbFN0YXJ0WD1lLndoZWVsU3RhcnRZPW51bGwsYiYmKFVlPShVZSpUZStiKS8oVGUrMSksKytUZSl9fSwyMDApKTooZS53aGVlbERYKz1jLGUud2hlZWxEWSs9ZCkpfX1mdW5jdGlvbiBmYih4LGEsYil7aWYoInN0cmluZyI9PXR5cGVvZiBhJiYhKGE9Z2ZbYV0pKXJldHVybiExO3guZGlzcGxheS5pbnB1dC5lbnN1cmVQb2xsZWQoKTt2YXIgYz14LmRpc3BsYXkuc2hpZnQsZD0hMTt0cnl7eC5pc1JlYWRPbmx5KCkmJih4LnN0YXRlLnN1cHByZXNzRWRpdHM9ITApLGImJih4LmRpc3BsYXkuc2hpZnQ9ITEpLGQ9YSh4KSE9SWZ9ZmluYWxseXt4LmRpc3BsYXkuc2hpZnQ9Yyx4LnN0YXRlLnN1cHByZXNzRWRpdHM9ITF9cmV0dXJuIGR9ZnVuY3Rpb24gZ2IoeCxhLGIpe2Zvcih2YXIgYz0wO2M8eC5zdGF0ZS5rZXlNYXBzLmxlbmd0aDtjKyspe3ZhciBkPWpmKGEseC5zdGF0ZS5rZXlNYXBzW2NdLGIseCk7aWYoZClyZXR1cm4gZH1yZXR1cm4geC5vcHRpb25zLmV4dHJhS2V5cyYmamYoYSx4Lm9wdGlvbnMuZXh0cmFLZXlzLGIseCl8fGpmKGEseC5vcHRpb25zLmtleU1hcCxiLHgpfWZ1bmN0aW9uIGhiKHgsYSxiLGMpe3ZhciBkPXguc3RhdGUua2V5U2VxO2lmKGQpe2lmKGtmKGEpKXJldHVybiJoYW5kbGVkIjtXZS5zZXQoNTAsZnVuY3Rpb24oKXt4LnN0YXRlLmtleVNlcT09ZCYmKHguc3RhdGUua2V5U2VxPW51bGwseC5kaXNwbGF5LmlucHV0LnJlc2V0KCkpfSksYT1kKyIgIithfXZhciBlPWdiKHgsYSxjKTtyZXR1cm4ibXVsdGkiPT1lJiYoeC5zdGF0ZS5rZXlTZXE9YSksImhhbmRsZWQiPT1lJiZ3ZCh4LCJrZXlIYW5kbGVkIix4LGEsYiksKCJoYW5kbGVkIj09ZXx8Im11bHRpIj09ZSkmJih6ZihiKSxNeCh4KSksZCYmIWUmJi9cJyQvLnRlc3QoYSk/KHpmKGIpLCEwKTohIWV9ZnVuY3Rpb24gaWIoeCxhKXt2YXIgYj1sZihhLCEwKTtyZXR1cm4hIWImJihhLnNoaWZ0S2V5JiYheC5zdGF0ZS5rZXlTZXE/aGIoeCwiU2hpZnQtIitiLGEsZnVuY3Rpb24oYSl7cmV0dXJuIGZiKHgsYSwhMCl9KXx8aGIoeCxiLGEsZnVuY3Rpb24oYSl7cmV0dXJuKCJzdHJpbmciPT10eXBlb2YgYT8vXmdvW0EtWl0vLnRlc3QoYSk6YS5tb3Rpb24pP2ZiKHgsYSk6dm9pZCAwfSk6aGIoeCxiLGEsZnVuY3Rpb24oYSl7cmV0dXJuIGZiKHgsYSl9KSl9ZnVuY3Rpb24gamIoeCxhLGIpe3JldHVybiBoYih4LCInIitiKyInIixhLGZ1bmN0aW9uKGEpe3JldHVybiBmYih4LGEsITApfSl9ZnVuY3Rpb24ga2IoeCl7dmFyIGE9dGhpcztpZihhLmN1ck9wLmZvY3VzPVNkKCksIXpkKGEseCkpe3FlJiYxMT5yZSYmMjc9PXgua2V5Q29kZSYmKHgucmV0dXJuVmFsdWU9ITEpO3ZhciBiPXgua2V5Q29kZTthLmRpc3BsYXkuc2hpZnQ9MTY9PWJ8fHguc2hpZnRLZXk7dmFyIGM9aWIoYSx4KTt2ZSYmKFhlPWM/YjpudWxsLCFjJiY4OD09YiYmIWFnJiYoQ2U/eC5tZXRhS2V5OnguY3RybEtleSkmJmEucmVwbGFjZVNlbGVjdGlvbigiIixudWxsLCJjdXQiKSksMTghPWJ8fC9cYkNvZGVNaXJyb3ItY3Jvc3NoYWlyXGIvLnRlc3QoYS5kaXNwbGF5LmxpbmVEaXYuY2xhc3NOYW1lKXx8bGIoYSl9fWZ1bmN0aW9uIGxiKHgpe2Z1bmN0aW9uIGEoeCl7MTghPXgua2V5Q29kZSYmeC5hbHRLZXl8fChYZihiLCJDb2RlTWlycm9yLWNyb3NzaGFpciIpLEVmKGRvY3VtZW50LCJrZXl1cCIsYSksRWYoZG9jdW1lbnQsIm1vdXNlb3ZlciIsYSkpfXZhciBiPXguZGlzcGxheS5saW5lRGl2O1lmKGIsIkNvZGVNaXJyb3ItY3Jvc3NoYWlyIiksQ2YoZG9jdW1lbnQsImtleXVwIixhKSxDZihkb2N1bWVudCwibW91c2VvdmVyIixhKX1mdW5jdGlvbiBtYih4KXsxNj09eC5rZXlDb2RlJiYodGhpcy5kb2Muc2VsLnNoaWZ0PSExKSx6ZCh0aGlzLHgpfWZ1bmN0aW9uIG5iKHgpe3ZhciBhPXRoaXM7aWYoIShUYShhLmRpc3BsYXkseCl8fHpkKGEseCl8fHguY3RybEtleSYmIXguYWx0S2V5fHxDZSYmeC5tZXRhS2V5KSl7dmFyIGI9eC5rZXlDb2RlLGM9eC5jaGFyQ29kZTtpZih2ZSYmYj09WGUpcmV0dXJuIFhlPW51bGwsdm9pZCB6Zih4KTtpZighdmV8fHgud2hpY2gmJiEoeC53aGljaDwxMCl8fCFpYihhLHgpKWpiKGEseCxTdHJpbmcuZnJvbUNoYXJDb2RlKG51bGw9PWM/YjpjKSl8fGEuZGlzcGxheS5pbnB1dC5vbktleVByZXNzKHgpfX1mdW5jdGlvbiBvYih4KXt4LnN0YXRlLmRlbGF5aW5nQmx1ckV2ZW50PSEwLHNldFRpbWVvdXQoZnVuY3Rpb24oKXt4LnN0YXRlLmRlbGF5aW5nQmx1ckV2ZW50JiYoeC5zdGF0ZS5kZWxheWluZ0JsdXJFdmVudD0hMSxxYih4KSl9LDEwMCl9ZnVuY3Rpb24gcGIoeCl7eC5zdGF0ZS5kZWxheWluZ0JsdXJFdmVudCYmKHguc3RhdGUuZGVsYXlpbmdCbHVyRXZlbnQ9ITEpLCJub2N1cnNvciIhPXgub3B0aW9ucy5yZWFkT25seSYmKHguc3RhdGUuZm9jdXNlZHx8KEZmKHgsImZvY3VzIix4KSx4LnN0YXRlLmZvY3VzZWQ9ITAsWWYoeC5kaXNwbGF5LndyYXBwZXIsIkNvZGVNaXJyb3ItZm9jdXNlZCIpLHguY3VyT3B8fHguZGlzcGxheS5zZWxGb3JDb250ZXh0TWVudT09eC5kb2Muc2VsfHwoeC5kaXNwbGF5LmlucHV0LnJlc2V0KCksc2UmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXt4LmRpc3BsYXkuaW5wdXQucmVzZXQoITApfSwyMCkpLHguZGlzcGxheS5pbnB1dC5yZWNlaXZlZEZvY3VzKCkpLE14KHgpKX1mdW5jdGlvbiBxYih4KXt4LnN0YXRlLmRlbGF5aW5nQmx1ckV2ZW50fHwoeC5zdGF0ZS5mb2N1c2VkJiYoRmYoeCwiYmx1ciIseCkseC5zdGF0ZS5mb2N1c2VkPSExLFhmKHguZGlzcGxheS53cmFwcGVyLCJDb2RlTWlycm9yLWZvY3VzZWQiKSksY2xlYXJJbnRlcnZhbCh4LmRpc3BsYXkuYmxpbmtlciksc2V0VGltZW91dChmdW5jdGlvbigpe3guc3RhdGUuZm9jdXNlZHx8KHguZGlzcGxheS5zaGlmdD0hMSl9LDE1MCkpfWZ1bmN0aW9uIHJiKHgsYSl7VGEoeC5kaXNwbGF5LGEpfHxzYih4LGEpfHx6ZCh4LGEsImNvbnRleHRtZW51Iil8fHguZGlzcGxheS5pbnB1dC5vbkNvbnRleHRNZW51KGEpfWZ1bmN0aW9uIHNiKHgsYSl7cmV0dXJuISFCZCh4LCJndXR0ZXJDb250ZXh0TWVudSIpJiZaYSh4LGEsImd1dHRlckNvbnRleHRNZW51IiwhMSl9ZnVuY3Rpb24gdGIoeCxhKXtpZihLZSh4LGEuZnJvbSk8MClyZXR1cm4geDtpZihLZSh4LGEudG8pPD0wKXJldHVybiBZZShhKTt2YXIgYj14LmxpbmUrYS50ZXh0Lmxlbmd0aC0oYS50by5saW5lLWEuZnJvbS5saW5lKS0xLGM9eC5jaDtyZXR1cm4geC5saW5lPT1hLnRvLmxpbmUmJihjKz1ZZShhKS5jaC1hLnRvLmNoKSxKZShiLGMpfWZ1bmN0aW9uIHViKHgsYSl7Zm9yKHZhciBiPVtdLGM9MDtjPHguc2VsLnJhbmdlcy5sZW5ndGg7YysrKXt2YXIgZD14LnNlbC5yYW5nZXNbY107Yi5wdXNoKG5ldyBreCh0YihkLmFuY2hvcixhKSx0YihkLmhlYWQsYSkpKX1yZXR1cm4gbHgoYix4LnNlbC5wcmltSW5kZXgpfWZ1bmN0aW9uIHZiKHgsYSxiKXtyZXR1cm4geC5saW5lPT1hLmxpbmU/SmUoYi5saW5lLHguY2gtYS5jaCtiLmNoKTpKZShiLmxpbmUrKHgubGluZS1hLmxpbmUpLHguY2gpfWZ1bmN0aW9uIHdiKHgsYSxiKXtmb3IodmFyIGM9W10sZD1KZSh4LmZpcnN0LDApLGU9ZCxmPTA7ZjxhLmxlbmd0aDtmKyspe3ZhciBnPWFbZl0saD12YihnLmZyb20sZCxlKSxpPXZiKFllKGcpLGQsZSk7aWYoZD1nLnRvLGU9aSwiYXJvdW5kIj09Yil7dmFyIGo9eC5zZWwucmFuZ2VzW2ZdLGs9S2Uoai5oZWFkLGouYW5jaG9yKTwwO2NbZl09bmV3IGt4KGs/aTpoLGs/aDppKX1lbHNlIGNbZl09bmV3IGt4KGgsaCl9cmV0dXJuIG5ldyBqeChjLHguc2VsLnByaW1JbmRleCl9ZnVuY3Rpb24geWIoeCxhLGIpe3ZhciBjPXtjYW5jZWxlZDohMSxmcm9tOmEuZnJvbSx0bzphLnRvLHRleHQ6YS50ZXh0LG9yaWdpbjphLm9yaWdpbixjYW5jZWw6ZnVuY3Rpb24oKXt0aGlzLmNhbmNlbGVkPSEwfX07cmV0dXJuIGImJihjLnVwZGF0ZT1mdW5jdGlvbihhLGIsYyxkKXthJiYodGhpcy5mcm9tPW94KHgsYSkpLGImJih0aGlzLnRvPW94KHgsYikpLGMmJih0aGlzLnRleHQ9Yyksdm9pZCAwIT09ZCYmKHRoaXMub3JpZ2luPWQpfSksRmYoeCwiYmVmb3JlQ2hhbmdlIix4LGMpLHguY20mJkZmKHguY20sImJlZm9yZUNoYW5nZSIseC5jbSxjKSxjLmNhbmNlbGVkP251bGw6e2Zyb206Yy5mcm9tLHRvOmMudG8sdGV4dDpjLnRleHQsb3JpZ2luOmMub3JpZ2lufX1mdW5jdGlvbiB6Yih4LGEsYil7aWYoeC5jbSl7aWYoIXguY20uY3VyT3ApcmV0dXJuIEVhKHguY20semIpKHgsYSxiKTtpZih4LmNtLnN0YXRlLnN1cHByZXNzRWRpdHMpcmV0dXJufWlmKCEoQmQoeCwiYmVmb3JlQ2hhbmdlIil8fHguY20mJkJkKHguY20sImJlZm9yZUNoYW5nZSIpKXx8KGE9eWIoeCxhLCEwKSkpe3ZhciBjPUhlJiYhYiYmZ2MoeCxhLmZyb20sYS50byk7aWYoYylmb3IodmFyIGQ9Yy5sZW5ndGgtMTtkPj0wOy0tZClBYih4LHtmcm9tOmNbZF0uZnJvbSx0bzpjW2RdLnRvLHRleHQ6ZD9bIiJdOmEudGV4dH0pO2Vsc2UgQWIoeCxhKX19ZnVuY3Rpb24gQWIoeCxhKXtpZigxIT1hLnRleHQubGVuZ3RofHwiIiE9YS50ZXh0WzBdfHwwIT1LZShhLmZyb20sYS50bykpe3ZhciBiPXViKHgsYSk7aGQoeCxhLGIseC5jbT94LmNtLmN1ck9wLmlkOk5hTiksRGIoeCxhLGIsZGMoeCxhKSk7dmFyIGM9W107V2MoeCxmdW5jdGlvbih4LGIpe2J8fC0xIT1HZChjLHguaGlzdG9yeSl8fChyZCh4Lmhpc3RvcnksYSksYy5wdXNoKHguaGlzdG9yeSkpLERiKHgsYSxudWxsLGRjKHgsYSkpfSl9fWZ1bmN0aW9uIEJiKHgsYSxiKXtpZigheC5jbXx8IXguY20uc3RhdGUuc3VwcHJlc3NFZGl0cyl7Zm9yKHZhciBjLGQ9eC5oaXN0b3J5LGU9eC5zZWwsZj0idW5kbyI9PWE/ZC5kb25lOmQudW5kb25lLGc9InVuZG8iPT1hP2QudW5kb25lOmQuZG9uZSxoPTA7aDxmLmxlbmd0aCYmKGM9ZltoXSxiPyFjLnJhbmdlc3x8Yy5lcXVhbHMoeC5zZWwpOmMucmFuZ2VzKTtoKyspO2lmKGghPWYubGVuZ3RoKXtmb3IoZC5sYXN0T3JpZ2luPWQubGFzdFNlbE9yaWdpbj1udWxsOyhjPWYucG9wKCkpLnJhbmdlczspe2lmKGtkKGMsZyksYiYmIWMuZXF1YWxzKHguc2VsKSlyZXR1cm4gdm9pZCBBeCh4LGMse2NsZWFyUmVkbzohMX0pO2U9Y312YXIgaT1bXTtrZChlLGcpLGcucHVzaCh7Y2hhbmdlczppLGdlbmVyYXRpb246ZC5nZW5lcmF0aW9ufSksZC5nZW5lcmF0aW9uPWMuZ2VuZXJhdGlvbnx8KytkLm1heEdlbmVyYXRpb247dmFyIGo9QmQoeCwiYmVmb3JlQ2hhbmdlIil8fHguY20mJkJkKHguY20sImJlZm9yZUNoYW5nZSIpO2ZvcihoPWMuY2hhbmdlcy5sZW5ndGgtMTtoPj0wOy0taCl7dmFyIGs9Yy5jaGFuZ2VzW2hdO2lmKGsub3JpZ2luPWEsaiYmIXliKHgsaywhMSkpcmV0dXJuIHZvaWQoZi5sZW5ndGg9MCk7aS5wdXNoKGVkKHgsaykpO3ZhciBsPWg/dWIoeCxrKTpGZChmKTtEYih4LGssbCxmYyh4LGspKSwhaCYmeC5jbSYmeC5jbS5zY3JvbGxJbnRvVmlldyh7ZnJvbTprLmZyb20sdG86WWUoayl9KTt2YXIgbT1bXTtXYyh4LGZ1bmN0aW9uKHgsYSl7YXx8LTEhPUdkKG0seC5oaXN0b3J5KXx8KHJkKHguaGlzdG9yeSxrKSxtLnB1c2goeC5oaXN0b3J5KSksRGIoeCxrLG51bGwsZmMoeCxrKSl9KX19fX1mdW5jdGlvbiBDYih4LGEpe2lmKDAhPWEmJih4LmZpcnN0Kz1hLHguc2VsPW5ldyBqeChIZCh4LnNlbC5yYW5nZXMsZnVuY3Rpb24oeCl7cmV0dXJuIG5ldyBreChKZSh4LmFuY2hvci5saW5lK2EseC5hbmNob3IuY2gpLEplKHguaGVhZC5saW5lK2EseC5oZWFkLmNoKSl9KSx4LnNlbC5wcmltSW5kZXgpLHguY20pKXtKYSh4LmNtLHguZmlyc3QseC5maXJzdC1hLGEpO2Zvcih2YXIgYj14LmNtLmRpc3BsYXksYz1iLnZpZXdGcm9tO2M8Yi52aWV3VG87YysrKUthKHguY20sYywiZ3V0dGVyIil9fWZ1bmN0aW9uIERiKHgsYSxiLGMpe2lmKHguY20mJiF4LmNtLmN1ck9wKXJldHVybiBFYSh4LmNtLERiKSh4LGEsYixjKTtpZihhLnRvLmxpbmU8eC5maXJzdClDYih4LGEudGV4dC5sZW5ndGgtMS0oYS50by5saW5lLWEuZnJvbS5saW5lKSk7ZWxzZSBpZighKGEuZnJvbS5saW5lPngubGFzdExpbmUoKSkpe2lmKGEuZnJvbS5saW5lPHguZmlyc3Qpe3ZhciBkPWEudGV4dC5sZW5ndGgtMS0oeC5maXJzdC1hLmZyb20ubGluZSk7Q2IoeCxkKSxhPXtmcm9tOkplKHguZmlyc3QsMCksdG86SmUoYS50by5saW5lK2QsYS50by5jaCksdGV4dDpbRmQoYS50ZXh0KV0sb3JpZ2luOmEub3JpZ2lufX12YXIgZT14Lmxhc3RMaW5lKCk7YS50by5saW5lPmUmJihhPXtmcm9tOmEuZnJvbSx0bzpKZShlLFljKHgsZSkudGV4dC5sZW5ndGgpLHRleHQ6W2EudGV4dFswXV0sb3JpZ2luOmEub3JpZ2lufSksYS5yZW1vdmVkPVpjKHgsYS5mcm9tLGEudG8pLGJ8fChiPXViKHgsYSkpLHguY20/RWIoeC5jbSxhLGMpOlRjKHgsYSxjKSxCeCh4LGIsSmYpfX1mdW5jdGlvbiBFYih4LGEsYil7dmFyIGM9eC5kb2MsZD14LmRpc3BsYXksZj1hLmZyb20sZz1hLnRvLGg9ITEsaT1mLmxpbmU7eC5vcHRpb25zLmxpbmVXcmFwcGluZ3x8KGk9eGQocWMoWWMoYyxmLmxpbmUpKSksYy5pdGVyKGksZy5saW5lKzEsZnVuY3Rpb24oeCl7cmV0dXJuIHg9PWQubWF4TGluZT8oaD0hMCwhMCk6dm9pZCAwfSkpLGMuc2VsLmNvbnRhaW5zKGEuZnJvbSxhLnRvKT4tMSYmQWQoeCksVGMoYyxhLGIsZSh4KSkseC5vcHRpb25zLmxpbmVXcmFwcGluZ3x8KGMuaXRlcihpLGYubGluZSthLnRleHQubGVuZ3RoLGZ1bmN0aW9uKHgpe3ZhciBhPWsoeCk7YT5kLm1heExpbmVMZW5ndGgmJihkLm1heExpbmU9eCxkLm1heExpbmVMZW5ndGg9YSxkLm1heExpbmVDaGFuZ2VkPSEwLGg9ITEpfSksaCYmKHguY3VyT3AudXBkYXRlTWF4TGluZT0hMCkpLGMuZnJvbnRpZXI9TWF0aC5taW4oYy5mcm9udGllcixmLmxpbmUpLE54KHgsNDAwKTt2YXIgaj1hLnRleHQubGVuZ3RoLShnLmxpbmUtZi5saW5lKS0xO2EuZnVsbD9KYSh4KTpmLmxpbmUhPWcubGluZXx8MSE9YS50ZXh0Lmxlbmd0aHx8U2MoeC5kb2MsYSk/SmEoeCxmLmxpbmUsZy5saW5lKzEsaik6S2EoeCxmLmxpbmUsInRleHQiKTt2YXIgbD1CZCh4LCJjaGFuZ2VzIiksbT1CZCh4LCJjaGFuZ2UiKTtpZihtfHxsKXt2YXIgbj17ZnJvbTpmLHRvOmcsdGV4dDphLnRleHQscmVtb3ZlZDphLnJlbW92ZWQsb3JpZ2luOmEub3JpZ2lufTttJiZ3ZCh4LCJjaGFuZ2UiLHgsbiksbCYmKHguY3VyT3AuY2hhbmdlT2Jqc3x8KHguY3VyT3AuY2hhbmdlT2Jqcz1bXSkpLnB1c2gobil9eC5kaXNwbGF5LnNlbEZvckNvbnRleHRNZW51PW51bGx9ZnVuY3Rpb24gRmIoeCxhLGIsYyxkKXtpZihjfHwoYz1iKSxLZShjLGIpPDApe3ZhciBlPWM7Yz1iLGI9ZX0ic3RyaW5nIj09dHlwZW9mIGEmJihhPXguc3BsaXRMaW5lcyhhKSksemIoeCx7ZnJvbTpiLHRvOmMsdGV4dDphLG9yaWdpbjpkfSl9ZnVuY3Rpb24gR2IoeCxhKXtpZighemQoeCwic2Nyb2xsQ3Vyc29ySW50b1ZpZXciKSl7dmFyIGI9eC5kaXNwbGF5LGM9Yi5zaXplci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxkPW51bGw7aWYoYS50b3ArYy50b3A8MD9kPSEwOmEuYm90dG9tK2MudG9wPih3aW5kb3cuaW5uZXJIZWlnaHR8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpJiYoZD0hMSksbnVsbCE9ZCYmIXplKXt2YXIgZT1QZCgiZGl2Iiwi4oCLIixudWxsLCJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogIisoYS50b3AtYi52aWV3T2Zmc2V0LVJ4KHguZGlzcGxheSkpKyJweDsgaGVpZ2h0OiAiKyhhLmJvdHRvbS1hLnRvcCtVeCh4KStiLmJhckhlaWdodCkrInB4OyBsZWZ0OiAiK2EubGVmdCsicHg7IHdpZHRoOiAycHg7Iik7eC5kaXNwbGF5LmxpbmVTcGFjZS5hcHBlbmRDaGlsZChlKSxlLnNjcm9sbEludG9WaWV3KGQpLHguZGlzcGxheS5saW5lU3BhY2UucmVtb3ZlQ2hpbGQoZSl9fX1mdW5jdGlvbiBIYih4LGEsYixjKXtudWxsPT1jJiYoYz0wKTtmb3IodmFyIGQ9MDs1PmQ7ZCsrKXt2YXIgZT0hMSxmPW1hKHgsYSksZz1iJiZiIT1hP21hKHgsYik6ZixoPUpiKHgsTWF0aC5taW4oZi5sZWZ0LGcubGVmdCksTWF0aC5taW4oZi50b3AsZy50b3ApLWMsTWF0aC5tYXgoZi5sZWZ0LGcubGVmdCksTWF0aC5tYXgoZi5ib3R0b20sZy5ib3R0b20pK2MpLGk9eC5kb2Muc2Nyb2xsVG9wLGo9eC5kb2Muc2Nyb2xsTGVmdDtpZihudWxsIT1oLnNjcm9sbFRvcCYmKGNiKHgsaC5zY3JvbGxUb3ApLE1hdGguYWJzKHguZG9jLnNjcm9sbFRvcC1pKT4xJiYoZT0hMCkpLG51bGwhPWguc2Nyb2xsTGVmdCYmKGRiKHgsaC5zY3JvbGxMZWZ0KSxNYXRoLmFicyh4LmRvYy5zY3JvbGxMZWZ0LWopPjEmJihlPSEwKSksIWUpYnJlYWt9cmV0dXJuIGZ9ZnVuY3Rpb24gSWIoeCxhLGIsYyxkKXt2YXIgZT1KYih4LGEsYixjLGQpO251bGwhPWUuc2Nyb2xsVG9wJiZjYih4LGUuc2Nyb2xsVG9wKSxudWxsIT1lLnNjcm9sbExlZnQmJmRiKHgsZS5zY3JvbGxMZWZ0KX1mdW5jdGlvbiBKYih4LGEsYixjLGQpe3ZhciBlPXguZGlzcGxheSxmPXJhKHguZGlzcGxheSk7MD5iJiYoYj0wKTt2YXIgZz14LmN1ck9wJiZudWxsIT14LmN1ck9wLnNjcm9sbFRvcD94LmN1ck9wLnNjcm9sbFRvcDplLnNjcm9sbGVyLnNjcm9sbFRvcCxoPVd4KHgpLGk9e307ZC1iPmgmJihkPWIraCk7dmFyIGo9eC5kb2MuaGVpZ2h0K1N4KGUpLGs9Zj5iLGw9ZD5qLWY7aWYoZz5iKWkuc2Nyb2xsVG9wPWs/MDpiO2Vsc2UgaWYoZD5nK2gpe3ZhciBtPU1hdGgubWluKGIsKGw/ajpkKS1oKTttIT1nJiYoaS5zY3JvbGxUb3A9bSl9dmFyIG49eC5jdXJPcCYmbnVsbCE9eC5jdXJPcC5zY3JvbGxMZWZ0P3guY3VyT3Auc2Nyb2xsTGVmdDplLnNjcm9sbGVyLnNjcm9sbExlZnQsbz1WeCh4KS0oeC5vcHRpb25zLmZpeGVkR3V0dGVyP2UuZ3V0dGVycy5vZmZzZXRXaWR0aDowKSxwPWMtYT5vO3JldHVybiBwJiYoYz1hK28pLDEwPmE/aS5zY3JvbGxMZWZ0PTA6bj5hP2kuc2Nyb2xsTGVmdD1NYXRoLm1heCgwLGEtKHA/MDoxMCkpOmM+bytuLTMmJihpLnNjcm9sbExlZnQ9YysocD8wOjEwKS1vKSxpfWZ1bmN0aW9uIEtiKHgsYSxiKXsobnVsbCE9YXx8bnVsbCE9YikmJk1iKHgpLG51bGwhPWEmJih4LmN1ck9wLnNjcm9sbExlZnQ9KG51bGw9PXguY3VyT3Auc2Nyb2xsTGVmdD94LmRvYy5zY3JvbGxMZWZ0OnguY3VyT3Auc2Nyb2xsTGVmdCkrYSksbnVsbCE9YiYmKHguY3VyT3Auc2Nyb2xsVG9wPShudWxsPT14LmN1ck9wLnNjcm9sbFRvcD94LmRvYy5zY3JvbGxUb3A6eC5jdXJPcC5zY3JvbGxUb3ApK2IpfWZ1bmN0aW9uIExiKHgpe01iKHgpO3ZhciBhPXguZ2V0Q3Vyc29yKCksYj1hLGM9YTt4Lm9wdGlvbnMubGluZVdyYXBwaW5nfHwoYj1hLmNoP0plKGEubGluZSxhLmNoLTEpOmEsYz1KZShhLmxpbmUsYS5jaCsxKSkseC5jdXJPcC5zY3JvbGxUb1Bvcz17ZnJvbTpiLHRvOmMsbWFyZ2luOngub3B0aW9ucy5jdXJzb3JTY3JvbGxNYXJnaW4saXNDdXJzb3I6ITB9fWZ1bmN0aW9uIE1iKHgpe3ZhciBhPXguY3VyT3Auc2Nyb2xsVG9Qb3M7aWYoYSl7eC5jdXJPcC5zY3JvbGxUb1Bvcz1udWxsO3ZhciBiPW5hKHgsYS5mcm9tKSxjPW5hKHgsYS50byksZD1KYih4LE1hdGgubWluKGIubGVmdCxjLmxlZnQpLE1hdGgubWluKGIudG9wLGMudG9wKS1hLm1hcmdpbixNYXRoLm1heChiLnJpZ2h0LGMucmlnaHQpLE1hdGgubWF4KGIuYm90dG9tLGMuYm90dG9tKSthLm1hcmdpbik7eC5zY3JvbGxUbyhkLnNjcm9sbExlZnQsZC5zY3JvbGxUb3ApfX1mdW5jdGlvbiBOYih4LGEsYixjKXt2YXIgZCxlPXguZG9jO251bGw9PWImJihiPSJhZGQiKSwic21hcnQiPT1iJiYoZS5tb2RlLmluZGVudD9kPVF4KHgsYSk6Yj0icHJldiIpO3ZhciBmPXgub3B0aW9ucy50YWJTaXplLGc9WWMoZSxhKSxoPU1mKGcudGV4dCxudWxsLGYpO2cuc3RhdGVBZnRlciYmKGcuc3RhdGVBZnRlcj1udWxsKTt2YXIgaSxqPWcudGV4dC5tYXRjaCgvXlxzKi8pWzBdO2lmKGN8fC9cUy8udGVzdChnLnRleHQpKXtpZigic21hcnQiPT1iJiYoKGk9ZS5tb2RlLmluZGVudChkLGcudGV4dC5zbGljZShqLmxlbmd0aCksZy50ZXh0KSk9PUlmfHxpPjE1MCkpe2lmKCFjKXJldHVybjtiPSJwcmV2In19ZWxzZSBpPTAsYj0ibm90IjsicHJldiI9PWI/aT1hPmUuZmlyc3Q/TWYoWWMoZSxhLTEpLnRleHQsbnVsbCxmKTowOiJhZGQiPT1iP2k9aCt4Lm9wdGlvbnMuaW5kZW50VW5pdDoic3VidHJhY3QiPT1iP2k9aC14Lm9wdGlvbnMuaW5kZW50VW5pdDoibnVtYmVyIj09dHlwZW9mIGImJihpPWgrYiksaT1NYXRoLm1heCgwLGkpO3ZhciBrPSIiLGw9MDtpZih4Lm9wdGlvbnMuaW5kZW50V2l0aFRhYnMpZm9yKHZhciBtPU1hdGguZmxvb3IoaS9mKTttOy0tbSlsKz1mLGsrPSJcdCI7aWYoaT5sJiYoays9RWQoaS1sKSksayE9ailyZXR1cm4gRmIoZSxrLEplKGEsMCksSmUoYSxqLmxlbmd0aCksIitpbnB1dCIpLGcuc3RhdGVBZnRlcj1udWxsLCEwO2ZvcihtPTA7bTxlLnNlbC5yYW5nZXMubGVuZ3RoO20rKyl7dmFyIG49ZS5zZWwucmFuZ2VzW21dO2lmKG4uaGVhZC5saW5lPT1hJiZuLmhlYWQuY2g8ai5sZW5ndGgpe3Z4KGUsbSxuZXcga3gobD1KZShhLGoubGVuZ3RoKSxsKSk7YnJlYWt9fX1mdW5jdGlvbiBPYih4LGEsYixjKXt2YXIgZD1hLGU9YTtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGE/ZT1ZYyh4LG54KHgsYSkpOmQ9eGQoYSksbnVsbD09ZD9udWxsOihjKGUsZCkmJnguY20mJkthKHguY20sZCxiKSxlKX1mdW5jdGlvbiBQYih4LGEpe2Zvcih2YXIgYj14LmRvYy5zZWwucmFuZ2VzLGM9W10sZD0wO2Q8Yi5sZW5ndGg7ZCsrKXtmb3IodmFyIGU9YShiW2RdKTtjLmxlbmd0aCYmS2UoZS5mcm9tLEZkKGMpLnRvKTw9MDspe3ZhciBmPWMucG9wKCk7aWYoS2UoZi5mcm9tLGUuZnJvbSk8MCl7ZS5mcm9tPWYuZnJvbTticmVha319Yy5wdXNoKGUpfURhKHgsZnVuY3Rpb24oKXtmb3IodmFyIGE9Yy5sZW5ndGgtMTthPj0wO2EtLSlGYih4LmRvYywiIixjW2FdLmZyb20sY1thXS50bywiK2RlbGV0ZSIpO0xiKHgpfSl9ZnVuY3Rpb24gUWIoeCxhLGIsYyxkKXtmdW5jdGlvbiBlKCl7dmFyIGE9ZytiO3JldHVybiBhPHguZmlyc3R8fGE+PXguZmlyc3QreC5zaXplP2s9ITE6KGc9YSxqPVljKHgsYSkpfWZ1bmN0aW9uIGYoeCl7dmFyIGE9KGQ/amU6a2UpKGosaCxiLCEwKTtpZihudWxsPT1hKXtpZih4fHwhZSgpKXJldHVybiBrPSExO2g9ZD8oMD5iP2NlOmJlKShqKTowPmI/ai50ZXh0Lmxlbmd0aDowfWVsc2UgaD1hO3JldHVybiEwfXZhciBnPWEubGluZSxoPWEuY2gsaT1iLGo9WWMoeCxnKSxrPSEwO2lmKCJjaGFyIj09YylmKCk7ZWxzZSBpZigiY29sdW1uIj09YylmKCEwKTtlbHNlIGlmKCJ3b3JkIj09Y3x8Imdyb3VwIj09Yylmb3IodmFyIGw9bnVsbCxtPSJncm91cCI9PWMsbj14LmNtJiZ4LmNtLmdldEhlbHBlcihhLCJ3b3JkQ2hhcnMiKSxvPSEwOyEoMD5iKXx8Zighbyk7bz0hMSl7dmFyIHA9ai50ZXh0LmNoYXJBdChoKXx8IlxuIixxPU1kKHAsbik/InciOm0mJiJcbiI9PXA/Im4iOiFtfHwvXHMvLnRlc3QocCk/bnVsbDoicCI7aWYoIW18fG98fHF8fChxPSJzIiksbCYmbCE9cSl7MD5iJiYoYj0xLGYoKSk7YnJlYWt9aWYocSYmKGw9cSksYj4wJiYhZighbykpYnJlYWt9dmFyIHI9R3goeCxKZShnLGgpLGEsaSwhMCk7cmV0dXJuIGt8fChyLmhpdFNpZGU9ITApLHJ9ZnVuY3Rpb24gUmIoeCxhLGIsYyl7dmFyIGQsZT14LmRvYyxmPWEubGVmdDtpZigicGFnZSI9PWMpe3ZhciBnPU1hdGgubWluKHguZGlzcGxheS53cmFwcGVyLmNsaWVudEhlaWdodCx3aW5kb3cuaW5uZXJIZWlnaHR8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpO2Q9YS50b3ArYiooZy0oMD5iPzEuNTouNSkqcmEoeC5kaXNwbGF5KSl9ZWxzZSJsaW5lIj09YyYmKGQ9Yj4wP2EuYm90dG9tKzM6YS50b3AtMyk7Zm9yKDs7KXt2YXIgaD1wYSh4LGYsZCk7aWYoIWgub3V0c2lkZSlicmVhaztpZigwPmI/MD49ZDpkPj1lLmhlaWdodCl7aC5oaXRTaWRlPSEwO2JyZWFrfWQrPTUqYn1yZXR1cm4gaH1mdW5jdGlvbiBTYihhLGIsYyxkKXt4LmRlZmF1bHRzW2FdPWIsYyYmKCRlW2FdPWQ/ZnVuY3Rpb24oeCxhLGIpe2IhPV9lJiZjKHgsYSxiKX06Yyl9ZnVuY3Rpb24gVGIoeCl7Zm9yKHZhciBhLGIsYyxkLGU9eC5zcGxpdCgvLSg/ISQpLyksZj0oeD1lW2UubGVuZ3RoLTFdLDApO2Y8ZS5sZW5ndGgtMTtmKyspe3ZhciBnPWVbZl07aWYoL14oY21kfG1ldGF8bSkkL2kudGVzdChnKSlkPSEwO2Vsc2UgaWYoL15hKGx0KT8kL2kudGVzdChnKSlhPSEwO2Vsc2UgaWYoL14oY3xjdHJsfGNvbnRyb2wpJC9pLnRlc3QoZykpYj0hMDtlbHNle2lmKCEvXnMoaGlmdCkkL2kudGVzdChnKSl0aHJvdyBuZXcgRXJyb3IoIlVucmVjb2duaXplZCBtb2RpZmllciBuYW1lOiAiK2cpO2M9ITB9fXJldHVybiBhJiYoeD0iQWx0LSIreCksYiYmKHg9IkN0cmwtIit4KSxkJiYoeD0iQ21kLSIreCksYyYmKHg9IlNoaWZ0LSIreCkseH1mdW5jdGlvbiBVYih4KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHg/aGZbeF06eH1mdW5jdGlvbiBWYih4LGEsYixjLGQpe2lmKGMmJmMuc2hhcmVkKXJldHVybiBXYih4LGEsYixjLGQpO2lmKHguY20mJiF4LmNtLmN1ck9wKXJldHVybiBFYSh4LmNtLFZiKSh4LGEsYixjLGQpO3ZhciBlPW5ldyBvZih4LGQpLGY9S2UoYSxiKTtpZihjJiZLZChjLGUsITEpLGY+MHx8MD09ZiYmITEhPT1lLmNsZWFyV2hlbkVtcHR5KXJldHVybiBlO2lmKGUucmVwbGFjZWRXaXRoJiYoZS5jb2xsYXBzZWQ9ITAsZS53aWRnZXROb2RlPVBkKCJzcGFuIixbZS5yZXBsYWNlZFdpdGhdLCJDb2RlTWlycm9yLXdpZGdldCIpLGMuaGFuZGxlTW91c2VFdmVudHN8fGUud2lkZ2V0Tm9kZS5zZXRBdHRyaWJ1dGUoImNtLWlnbm9yZS1ldmVudHMiLCJ0cnVlIiksYy5pbnNlcnRMZWZ0JiYoZS53aWRnZXROb2RlLmluc2VydExlZnQ9ITApKSxlLmNvbGxhcHNlZCl7aWYocGMoeCxhLmxpbmUsYSxiLGUpfHxhLmxpbmUhPWIubGluZSYmcGMoeCxiLmxpbmUsYSxiLGUpKXRocm93IG5ldyBFcnJvcigiSW5zZXJ0aW5nIGNvbGxhcHNlZCBtYXJrZXIgcGFydGlhbGx5IG92ZXJsYXBwaW5nIGFuIGV4aXN0aW5nIG9uZSIpO0llPSEwfWUuYWRkVG9IaXN0b3J5JiZoZCh4LHtmcm9tOmEsdG86YixvcmlnaW46Im1hcmtUZXh0In0seC5zZWwsTmFOKTt2YXIgZyxoPWEubGluZSxpPXguY207aWYoeC5pdGVyKGgsYi5saW5lKzEsZnVuY3Rpb24oeCl7aSYmZS5jb2xsYXBzZWQmJiFpLm9wdGlvbnMubGluZVdyYXBwaW5nJiZxYyh4KT09aS5kaXNwbGF5Lm1heExpbmUmJihnPSEwKSxlLmNvbGxhcHNlZCYmaCE9YS5saW5lJiZfYyh4LDApLGFjKHgsbmV3ICRiKGUsaD09YS5saW5lP2EuY2g6bnVsbCxoPT1iLmxpbmU/Yi5jaDpudWxsKSksKytofSksZS5jb2xsYXBzZWQmJnguaXRlcihhLmxpbmUsYi5saW5lKzEsZnVuY3Rpb24oYSl7dWMoeCxhKSYmX2MoYSwwKX0pLGUuY2xlYXJPbkVudGVyJiZDZihlLCJiZWZvcmVDdXJzb3JFbnRlciIsZnVuY3Rpb24oKXtlLmNsZWFyKCl9KSxlLnJlYWRPbmx5JiYoSGU9ITAsKHguaGlzdG9yeS5kb25lLmxlbmd0aHx8eC5oaXN0b3J5LnVuZG9uZS5sZW5ndGgpJiZ4LmNsZWFySGlzdG9yeSgpKSxlLmNvbGxhcHNlZCYmKGUuaWQ9KytuZixlLmF0b21pYz0hMCksaSl7aWYoZyYmKGkuY3VyT3AudXBkYXRlTWF4TGluZT0hMCksZS5jb2xsYXBzZWQpSmEoaSxhLmxpbmUsYi5saW5lKzEpO2Vsc2UgaWYoZS5jbGFzc05hbWV8fGUudGl0bGV8fGUuc3RhcnRTdHlsZXx8ZS5lbmRTdHlsZXx8ZS5jc3MpZm9yKHZhciBqPWEubGluZTtqPD1iLmxpbmU7aisrKUthKGksaiwidGV4dCIpO2UuYXRvbWljJiZEeChpLmRvYyksd2QoaSwibWFya2VyQWRkZWQiLGksZSl9cmV0dXJuIGV9ZnVuY3Rpb24gV2IoeCxhLGIsYyxkKXsoYz1LZChjKSkuc2hhcmVkPSExO3ZhciBlPVtWYih4LGEsYixjLGQpXSxmPWVbMF0sZz1jLndpZGdldE5vZGU7cmV0dXJuIFdjKHgsZnVuY3Rpb24oeCl7ZyYmKGMud2lkZ2V0Tm9kZT1nLmNsb25lTm9kZSghMCkpLGUucHVzaChWYih4LG94KHgsYSksb3goeCxiKSxjLGQpKTtmb3IodmFyIGg9MDtoPHgubGlua2VkLmxlbmd0aDsrK2gpaWYoeC5saW5rZWRbaF0uaXNQYXJlbnQpcmV0dXJuO2Y9RmQoZSl9KSxuZXcgcGYoZSxmKX1mdW5jdGlvbiBYYih4KXtyZXR1cm4geC5maW5kTWFya3MoSmUoeC5maXJzdCwwKSx4LmNsaXBQb3MoSmUoeC5sYXN0TGluZSgpKSksZnVuY3Rpb24oeCl7cmV0dXJuIHgucGFyZW50fSl9ZnVuY3Rpb24gWWIoeCxhKXtmb3IodmFyIGI9MDtiPGEubGVuZ3RoO2IrKyl7dmFyIGM9YVtiXSxkPWMuZmluZCgpLGU9eC5jbGlwUG9zKGQuZnJvbSksZj14LmNsaXBQb3MoZC50byk7aWYoS2UoZSxmKSl7dmFyIGc9VmIoeCxlLGYsYy5wcmltYXJ5LGMucHJpbWFyeS50eXBlKTtjLm1hcmtlcnMucHVzaChnKSxnLnBhcmVudD1jfX19ZnVuY3Rpb24gWmIoeCl7Zm9yKHZhciBhPTA7YTx4Lmxlbmd0aDthKyspe3ZhciBiPXhbYV0sYz1bYi5wcmltYXJ5LmRvY107V2MoYi5wcmltYXJ5LmRvYyxmdW5jdGlvbih4KXtjLnB1c2goeCl9KTtmb3IodmFyIGQ9MDtkPGIubWFya2Vycy5sZW5ndGg7ZCsrKXt2YXIgZT1iLm1hcmtlcnNbZF07LTE9PUdkKGMsZS5kb2MpJiYoZS5wYXJlbnQ9bnVsbCxiLm1hcmtlcnMuc3BsaWNlKGQtLSwxKSl9fX1mdW5jdGlvbiAkYih4LGEsYil7dGhpcy5tYXJrZXI9eCx0aGlzLmZyb209YSx0aGlzLnRvPWJ9ZnVuY3Rpb24gX2IoeCxhKXtpZih4KWZvcih2YXIgYj0wO2I8eC5sZW5ndGg7KytiKXt2YXIgYz14W2JdO2lmKGMubWFya2VyPT1hKXJldHVybiBjfX1mdW5jdGlvbiB4Yyh4LGEpe2Zvcih2YXIgYixjPTA7Yzx4Lmxlbmd0aDsrK2MpeFtjXSE9YSYmKGJ8fChiPVtdKSkucHVzaCh4W2NdKTtyZXR1cm4gYn1mdW5jdGlvbiBhYyh4LGEpe3gubWFya2VkU3BhbnM9eC5tYXJrZWRTcGFucz94Lm1hcmtlZFNwYW5zLmNvbmNhdChbYV0pOlthXSxhLm1hcmtlci5hdHRhY2hMaW5lKHgpfWZ1bmN0aW9uIGJjKHgsYSxiKXtpZih4KWZvcih2YXIgYyxkPTA7ZDx4Lmxlbmd0aDsrK2Qpe3ZhciBlPXhbZF0sZj1lLm1hcmtlcjtpZihudWxsPT1lLmZyb218fChmLmluY2x1c2l2ZUxlZnQ/ZS5mcm9tPD1hOmUuZnJvbTxhKXx8ZS5mcm9tPT1hJiYiYm9va21hcmsiPT1mLnR5cGUmJighYnx8IWUubWFya2VyLmluc2VydExlZnQpKXt2YXIgZz1udWxsPT1lLnRvfHwoZi5pbmNsdXNpdmVSaWdodD9lLnRvPj1hOmUudG8+YSk7KGN8fChjPVtdKSkucHVzaChuZXcgJGIoZixlLmZyb20sZz9udWxsOmUudG8pKX19cmV0dXJuIGN9ZnVuY3Rpb24gY2MoeCxhLGIpe2lmKHgpZm9yKHZhciBjLGQ9MDtkPHgubGVuZ3RoOysrZCl7dmFyIGU9eFtkXSxmPWUubWFya2VyO2lmKG51bGw9PWUudG98fChmLmluY2x1c2l2ZVJpZ2h0P2UudG8+PWE6ZS50bz5hKXx8ZS5mcm9tPT1hJiYiYm9va21hcmsiPT1mLnR5cGUmJighYnx8ZS5tYXJrZXIuaW5zZXJ0TGVmdCkpe3ZhciBnPW51bGw9PWUuZnJvbXx8KGYuaW5jbHVzaXZlTGVmdD9lLmZyb208PWE6ZS5mcm9tPGEpOyhjfHwoYz1bXSkpLnB1c2gobmV3ICRiKGYsZz9udWxsOmUuZnJvbS1hLG51bGw9PWUudG8/bnVsbDplLnRvLWEpKX19cmV0dXJuIGN9ZnVuY3Rpb24gZGMoeCxhKXtpZihhLmZ1bGwpcmV0dXJuIG51bGw7dmFyIGI9cXgoeCxhLmZyb20ubGluZSkmJlljKHgsYS5mcm9tLmxpbmUpLm1hcmtlZFNwYW5zLGM9cXgoeCxhLnRvLmxpbmUpJiZZYyh4LGEudG8ubGluZSkubWFya2VkU3BhbnM7aWYoIWImJiFjKXJldHVybiBudWxsO3ZhciBkPWEuZnJvbS5jaCxlPWEudG8uY2gsZj0wPT1LZShhLmZyb20sYS50byksZz1iYyhiLGQsZiksaD1jYyhjLGUsZiksaT0xPT1hLnRleHQubGVuZ3RoLGo9RmQoYS50ZXh0KS5sZW5ndGgrKGk/ZDowKTtpZihnKWZvcih2YXIgaz0wO2s8Zy5sZW5ndGg7KytrKXtpZihudWxsPT0obD1nW2tdKS50bykobT1fYihoLGwubWFya2VyKSk/aSYmKGwudG89bnVsbD09bS50bz9udWxsOm0udG8raik6bC50bz1kfWlmKGgpZm9yKGs9MDtrPGgubGVuZ3RoOysrayl7dmFyIGwsbTtpZihudWxsIT0obD1oW2tdKS50byYmKGwudG8rPWopLG51bGw9PWwuZnJvbSkobT1fYihnLGwubWFya2VyKSl8fChsLmZyb209aixpJiYoZ3x8KGc9W10pKS5wdXNoKGwpKTtlbHNlIGwuZnJvbSs9aixpJiYoZ3x8KGc9W10pKS5wdXNoKGwpfWcmJihnPWVjKGcpKSxoJiZoIT1nJiYoaD1lYyhoKSk7dmFyIG49W2ddO2lmKCFpKXt2YXIgbyxwPWEudGV4dC5sZW5ndGgtMjtpZihwPjAmJmcpZm9yKGs9MDtrPGcubGVuZ3RoOysrayludWxsPT1nW2tdLnRvJiYob3x8KG89W10pKS5wdXNoKG5ldyAkYihnW2tdLm1hcmtlcixudWxsLG51bGwpKTtmb3Ioaz0wO3A+azsrK2spbi5wdXNoKG8pO24ucHVzaChoKX1yZXR1cm4gbn1mdW5jdGlvbiBlYyh4KXtmb3IodmFyIGE9MDthPHgubGVuZ3RoOysrYSl7dmFyIGI9eFthXTtudWxsIT1iLmZyb20mJmIuZnJvbT09Yi50byYmITEhPT1iLm1hcmtlci5jbGVhcldoZW5FbXB0eSYmeC5zcGxpY2UoYS0tLDEpfXJldHVybiB4Lmxlbmd0aD94Om51bGx9ZnVuY3Rpb24gZmMoeCxhKXt2YXIgYj1uZCh4LGEpLGM9ZGMoeCxhKTtpZighYilyZXR1cm4gYztpZighYylyZXR1cm4gYjtmb3IodmFyIGQ9MDtkPGIubGVuZ3RoOysrZCl7dmFyIGU9YltkXSxmPWNbZF07aWYoZSYmZil4OmZvcih2YXIgZz0wO2c8Zi5sZW5ndGg7KytnKXtmb3IodmFyIGg9ZltnXSxpPTA7aTxlLmxlbmd0aDsrK2kpaWYoZVtpXS5tYXJrZXI9PWgubWFya2VyKWNvbnRpbnVlIHg7ZS5wdXNoKGgpfWVsc2UgZiYmKGJbZF09Zil9cmV0dXJuIGJ9ZnVuY3Rpb24gZ2MoeCxhLGIpe3ZhciBjPW51bGw7aWYoeC5pdGVyKGEubGluZSxiLmxpbmUrMSxmdW5jdGlvbih4KXtpZih4Lm1hcmtlZFNwYW5zKWZvcih2YXIgYT0wO2E8eC5tYXJrZWRTcGFucy5sZW5ndGg7KythKXt2YXIgYj14Lm1hcmtlZFNwYW5zW2FdLm1hcmtlcjshYi5yZWFkT25seXx8YyYmLTEhPUdkKGMsYil8fChjfHwoYz1bXSkpLnB1c2goYil9fSksIWMpcmV0dXJuIG51bGw7Zm9yKHZhciBkPVt7ZnJvbTphLHRvOmJ9XSxlPTA7ZTxjLmxlbmd0aDsrK2UpZm9yKHZhciBmPWNbZV0sZz1mLmZpbmQoMCksaD0wO2g8ZC5sZW5ndGg7KytoKXt2YXIgaT1kW2hdO2lmKCEoS2UoaS50byxnLmZyb20pPDB8fEtlKGkuZnJvbSxnLnRvKT4wKSl7dmFyIGo9W2gsMV0saz1LZShpLmZyb20sZy5mcm9tKSxsPUtlKGkudG8sZy50byk7KDA+a3x8IWYuaW5jbHVzaXZlTGVmdCYmIWspJiZqLnB1c2goe2Zyb206aS5mcm9tLHRvOmcuZnJvbX0pLChsPjB8fCFmLmluY2x1c2l2ZVJpZ2h0JiYhbCkmJmoucHVzaCh7ZnJvbTpnLnRvLHRvOmkudG99KSxkLnNwbGljZS5hcHBseShkLGopLGgrPWoubGVuZ3RoLTF9fXJldHVybiBkfWZ1bmN0aW9uIGhjKHgpe3ZhciBhPXgubWFya2VkU3BhbnM7aWYoYSl7Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDsrK2IpYVtiXS5tYXJrZXIuZGV0YWNoTGluZSh4KTt4Lm1hcmtlZFNwYW5zPW51bGx9fWZ1bmN0aW9uIGljKHgsYSl7aWYoYSl7Zm9yKHZhciBiPTA7YjxhLmxlbmd0aDsrK2IpYVtiXS5tYXJrZXIuYXR0YWNoTGluZSh4KTt4Lm1hcmtlZFNwYW5zPWF9fWZ1bmN0aW9uIGpjKHgpe3JldHVybiB4LmluY2x1c2l2ZUxlZnQ/LTE6MH1mdW5jdGlvbiBrYyh4KXtyZXR1cm4geC5pbmNsdXNpdmVSaWdodD8xOjB9ZnVuY3Rpb24gbGMoeCxhKXt2YXIgYj14LmxpbmVzLmxlbmd0aC1hLmxpbmVzLmxlbmd0aDtpZigwIT1iKXJldHVybiBiO3ZhciBjPXguZmluZCgpLGQ9YS5maW5kKCksZT1LZShjLmZyb20sZC5mcm9tKXx8amMoeCktamMoYSk7aWYoZSlyZXR1cm4tZTt2YXIgZj1LZShjLnRvLGQudG8pfHxrYyh4KS1rYyhhKTtyZXR1cm4gZnx8YS5pZC14LmlkfWZ1bmN0aW9uIG1jKHgsYSl7dmFyIGIsYz1JZSYmeC5tYXJrZWRTcGFucztpZihjKWZvcih2YXIgZCxlPTA7ZTxjLmxlbmd0aDsrK2UpKGQ9Y1tlXSkubWFya2VyLmNvbGxhcHNlZCYmbnVsbD09KGE/ZC5mcm9tOmQudG8pJiYoIWJ8fGxjKGIsZC5tYXJrZXIpPDApJiYoYj1kLm1hcmtlcik7cmV0dXJuIGJ9ZnVuY3Rpb24gbmMoeCl7cmV0dXJuIG1jKHgsITApfWZ1bmN0aW9uIG9jKHgpe3JldHVybiBtYyh4LCExKX1mdW5jdGlvbiBwYyh4LGEsYixjLGQpe3ZhciBlPVljKHgsYSksZj1JZSYmZS5tYXJrZWRTcGFucztpZihmKWZvcih2YXIgZz0wO2c8Zi5sZW5ndGg7KytnKXt2YXIgaD1mW2ddO2lmKGgubWFya2VyLmNvbGxhcHNlZCl7dmFyIGk9aC5tYXJrZXIuZmluZCgwKSxqPUtlKGkuZnJvbSxiKXx8amMoaC5tYXJrZXIpLWpjKGQpLGs9S2UoaS50byxjKXx8a2MoaC5tYXJrZXIpLWtjKGQpO2lmKCEoaj49MCYmMD49a3x8MD49aiYmaz49MCkmJigwPj1qJiYoS2UoaS50byxiKT4wfHxoLm1hcmtlci5pbmNsdXNpdmVSaWdodCYmZC5pbmNsdXNpdmVMZWZ0KXx8aj49MCYmKEtlKGkuZnJvbSxjKTwwfHxoLm1hcmtlci5pbmNsdXNpdmVMZWZ0JiZkLmluY2x1c2l2ZVJpZ2h0KSkpcmV0dXJuITB9fX1mdW5jdGlvbiBxYyh4KXtmb3IodmFyIGE7YT1uYyh4KTspeD1hLmZpbmQoLTEsITApLmxpbmU7cmV0dXJuIHh9ZnVuY3Rpb24gcmMoeCl7Zm9yKHZhciBhLGI7YT1vYyh4KTspeD1hLmZpbmQoMSwhMCkubGluZSwoYnx8KGI9W10pKS5wdXNoKHgpO3JldHVybiBifWZ1bmN0aW9uIHNjKHgsYSl7dmFyIGI9WWMoeCxhKSxjPXFjKGIpO3JldHVybiBiPT1jP2E6eGQoYyl9ZnVuY3Rpb24gdGMoeCxhKXtpZihhPngubGFzdExpbmUoKSlyZXR1cm4gYTt2YXIgYixjPVljKHgsYSk7aWYoIXVjKHgsYykpcmV0dXJuIGE7Zm9yKDtiPW9jKGMpOyljPWIuZmluZCgxLCEwKS5saW5lO3JldHVybiB4ZChjKSsxfWZ1bmN0aW9uIHVjKHgsYSl7dmFyIGI9SWUmJmEubWFya2VkU3BhbnM7aWYoYilmb3IodmFyIGMsZD0wO2Q8Yi5sZW5ndGg7KytkKWlmKChjPWJbZF0pLm1hcmtlci5jb2xsYXBzZWQpe2lmKG51bGw9PWMuZnJvbSlyZXR1cm4hMDtpZighYy5tYXJrZXIud2lkZ2V0Tm9kZSYmMD09Yy5mcm9tJiZjLm1hcmtlci5pbmNsdXNpdmVMZWZ0JiZ2Yyh4LGEsYykpcmV0dXJuITB9fWZ1bmN0aW9uIHZjKHgsYSxiKXtpZihudWxsPT1iLnRvKXt2YXIgYz1iLm1hcmtlci5maW5kKDEsITApO3JldHVybiB2Yyh4LGMubGluZSxfYihjLmxpbmUubWFya2VkU3BhbnMsYi5tYXJrZXIpKX1pZihiLm1hcmtlci5pbmNsdXNpdmVSaWdodCYmYi50bz09YS50ZXh0Lmxlbmd0aClyZXR1cm4hMDtmb3IodmFyIGQsZT0wO2U8YS5tYXJrZWRTcGFucy5sZW5ndGg7KytlKWlmKChkPWEubWFya2VkU3BhbnNbZV0pLm1hcmtlci5jb2xsYXBzZWQmJiFkLm1hcmtlci53aWRnZXROb2RlJiZkLmZyb209PWIudG8mJihudWxsPT1kLnRvfHxkLnRvIT1iLmZyb20pJiYoZC5tYXJrZXIuaW5jbHVzaXZlTGVmdHx8Yi5tYXJrZXIuaW5jbHVzaXZlUmlnaHQpJiZ2Yyh4LGEsZCkpcmV0dXJuITB9ZnVuY3Rpb24gd2MoeCxhLGIpe2JkKGEpPCh4LmN1ck9wJiZ4LmN1ck9wLnNjcm9sbFRvcHx8eC5kb2Muc2Nyb2xsVG9wKSYmS2IoeCxudWxsLGIpfWZ1bmN0aW9uIHljKHgpe2lmKG51bGwhPXguaGVpZ2h0KXJldHVybiB4LmhlaWdodDt2YXIgYT14LmRvYy5jbTtpZighYSlyZXR1cm4gMDtpZighVWYoZG9jdW1lbnQuYm9keSx4Lm5vZGUpKXt2YXIgYj0icG9zaXRpb246IHJlbGF0aXZlOyI7eC5jb3Zlckd1dHRlciYmKGIrPSJtYXJnaW4tbGVmdDogLSIrYS5kaXNwbGF5Lmd1dHRlcnMub2Zmc2V0V2lkdGgrInB4OyIpLHgubm9IU2Nyb2xsJiYoYis9IndpZHRoOiAiK2EuZGlzcGxheS53cmFwcGVyLmNsaWVudFdpZHRoKyJweDsiKSxSZChhLmRpc3BsYXkubWVhc3VyZSxQZCgiZGl2IixbeC5ub2RlXSxudWxsLGIpKX1yZXR1cm4geC5oZWlnaHQ9eC5ub2RlLnBhcmVudE5vZGUub2Zmc2V0SGVpZ2h0fWZ1bmN0aW9uIHpjKHgsYSxiLGMpe3ZhciBkPW5ldyBxZih4LGIsYyksZT14LmNtO3JldHVybiBlJiZkLm5vSFNjcm9sbCYmKGUuZGlzcGxheS5hbGlnbldpZGdldHM9ITApLE9iKHgsYSwid2lkZ2V0IixmdW5jdGlvbihhKXt2YXIgYj1hLndpZGdldHN8fChhLndpZGdldHM9W10pO2lmKG51bGw9PWQuaW5zZXJ0QXQ/Yi5wdXNoKGQpOmIuc3BsaWNlKE1hdGgubWluKGIubGVuZ3RoLTEsTWF0aC5tYXgoMCxkLmluc2VydEF0KSksMCxkKSxkLmxpbmU9YSxlJiYhdWMoeCxhKSl7dmFyIGM9YmQoYSk8eC5zY3JvbGxUb3A7X2MoYSxhLmhlaWdodCt5YyhkKSksYyYmS2IoZSxudWxsLGQuaGVpZ2h0KSxlLmN1ck9wLmZvcmNlVXBkYXRlPSEwfXJldHVybiEwfSksZH1mdW5jdGlvbiBBYyh4LGEsYixjKXt4LnRleHQ9YSx4LnN0YXRlQWZ0ZXImJih4LnN0YXRlQWZ0ZXI9bnVsbCkseC5zdHlsZXMmJih4LnN0eWxlcz1udWxsKSxudWxsIT14Lm9yZGVyJiYoeC5vcmRlcj1udWxsKSxoYyh4KSxpYyh4LGIpO3ZhciBkPWM/Yyh4KToxO2QhPXguaGVpZ2h0JiZfYyh4LGQpfWZ1bmN0aW9uIEJjKHgpe3gucGFyZW50PW51bGwsaGMoeCl9ZnVuY3Rpb24gQ2MoeCxhKXtpZih4KWZvcig7Oyl7dmFyIGI9eC5tYXRjaCgvKD86XnxccyspbGluZS0oYmFja2dyb3VuZC0pPyhcUyspLyk7aWYoIWIpYnJlYWs7eD14LnNsaWNlKDAsYi5pbmRleCkreC5zbGljZShiLmluZGV4K2JbMF0ubGVuZ3RoKTt2YXIgYz1iWzFdPyJiZ0NsYXNzIjoidGV4dENsYXNzIjtudWxsPT1hW2NdP2FbY109YlsyXTpuZXcgUmVnRXhwKCIoPzpefHMpIitiWzJdKyIoPzokfHMpIikudGVzdChhW2NdKXx8KGFbY10rPSIgIitiWzJdKX1yZXR1cm4geH1mdW5jdGlvbiBEYyhhLGIpe2lmKGEuYmxhbmtMaW5lKXJldHVybiBhLmJsYW5rTGluZShiKTtpZihhLmlubmVyTW9kZSl7dmFyIGM9eC5pbm5lck1vZGUoYSxiKTtyZXR1cm4gYy5tb2RlLmJsYW5rTGluZT9jLm1vZGUuYmxhbmtMaW5lKGMuc3RhdGUpOnZvaWQgMH19ZnVuY3Rpb24gRWMoYSxiLGMsZCl7Zm9yKHZhciBlPTA7MTA+ZTtlKyspe2QmJihkWzBdPXguaW5uZXJNb2RlKGEsYykubW9kZSk7dmFyIGY9YS50b2tlbihiLGMpO2lmKGIucG9zPmIuc3RhcnQpcmV0dXJuIGZ9dGhyb3cgbmV3IEVycm9yKCJNb2RlICIrYS5uYW1lKyIgZmFpbGVkIHRvIGFkdmFuY2Ugc3RyZWFtLiIpfWZ1bmN0aW9uIEZjKHgsYSxiLGMpe2Z1bmN0aW9uIGQoeCl7cmV0dXJue3N0YXJ0Omsuc3RhcnQsZW5kOmsucG9zLHN0cmluZzprLmN1cnJlbnQoKSx0eXBlOmV8fG51bGwsc3RhdGU6eD9lZihmLm1vZGUsaik6an19dmFyIGUsZj14LmRvYyxnPWYubW9kZTthPW94KGYsYSk7dmFyIGgsaT1ZYyhmLGEubGluZSksaj1ReCh4LGEubGluZSxiKSxrPW5ldyBtZihpLnRleHQseC5vcHRpb25zLnRhYlNpemUpO2ZvcihjJiYoaD1bXSk7KGN8fGsucG9zPGEuY2gpJiYhay5lb2woKTspay5zdGFydD1rLnBvcyxlPUVjKGcsayxqKSxjJiZoLnB1c2goZCghMCkpO3JldHVybiBjP2g6ZCgpfWZ1bmN0aW9uIEdjKHgsYSxiLGMsZCxlLGYpe3ZhciBnPWIuZmxhdHRlblNwYW5zO251bGw9PWcmJihnPXgub3B0aW9ucy5mbGF0dGVuU3BhbnMpO3ZhciBoLGk9MCxqPW51bGwsaz1uZXcgbWYoYSx4Lm9wdGlvbnMudGFiU2l6ZSksbD14Lm9wdGlvbnMuYWRkTW9kZUNsYXNzJiZbbnVsbF07Zm9yKCIiPT1hJiZDYyhEYyhiLGMpLGUpOyFrLmVvbCgpOyl7aWYoay5wb3M+eC5vcHRpb25zLm1heEhpZ2hsaWdodExlbmd0aD8oZz0hMSxmJiZKYyh4LGEsYyxrLnBvcyksay5wb3M9YS5sZW5ndGgsaD1udWxsKTpoPUNjKEVjKGIsayxjLGwpLGUpLGwpe3ZhciBtPWxbMF0ubmFtZTttJiYoaD0ibS0iKyhoP20rIiAiK2g6bSkpfWlmKCFnfHxqIT1oKXtmb3IoO2k8ay5zdGFydDspZChpPU1hdGgubWluKGsuc3RhcnQsaSs1ZTQpLGopO2o9aH1rLnN0YXJ0PWsucG9zfWZvcig7aTxrLnBvczspe3ZhciBuPU1hdGgubWluKGsucG9zLGkrNWU0KTtkKG4saiksaT1ufX1mdW5jdGlvbiBIYyh4LGEsYixjKXt2YXIgZD1beC5zdGF0ZS5tb2RlR2VuXSxlPXt9O0djKHgsYS50ZXh0LHguZG9jLm1vZGUsYixmdW5jdGlvbih4LGEpe2QucHVzaCh4LGEpfSxlLGMpO2Zvcih2YXIgZj0wO2Y8eC5zdGF0ZS5vdmVybGF5cy5sZW5ndGg7KytmKXt2YXIgZz14LnN0YXRlLm92ZXJsYXlzW2ZdLGg9MSxpPTA7R2MoeCxhLnRleHQsZy5tb2RlLCEwLGZ1bmN0aW9uKHgsYSl7Zm9yKHZhciBiPWg7eD5pOyl7dmFyIGM9ZFtoXTtjPngmJmQuc3BsaWNlKGgsMSx4LGRbaCsxXSxjKSxoKz0yLGk9TWF0aC5taW4oeCxjKX1pZihhKWlmKGcub3BhcXVlKWQuc3BsaWNlKGIsaC1iLHgsImNtLW92ZXJsYXkgIithKSxoPWIrMjtlbHNlIGZvcig7aD5iO2IrPTIpe3ZhciBlPWRbYisxXTtkW2IrMV09KGU/ZSsiICI6IiIpKyJjbS1vdmVybGF5ICIrYX19LGUpfXJldHVybntzdHlsZXM6ZCxjbGFzc2VzOmUuYmdDbGFzc3x8ZS50ZXh0Q2xhc3M/ZTpudWxsfX1mdW5jdGlvbiBJYyh4LGEsYil7aWYoIWEuc3R5bGVzfHxhLnN0eWxlc1swXSE9eC5zdGF0ZS5tb2RlR2VuKXt2YXIgYz1ReCh4LHhkKGEpKSxkPUhjKHgsYSxhLnRleHQubGVuZ3RoPngub3B0aW9ucy5tYXhIaWdobGlnaHRMZW5ndGg/ZWYoeC5kb2MubW9kZSxjKTpjKTthLnN0YXRlQWZ0ZXI9YyxhLnN0eWxlcz1kLnN0eWxlcyxkLmNsYXNzZXM/YS5zdHlsZUNsYXNzZXM9ZC5jbGFzc2VzOmEuc3R5bGVDbGFzc2VzJiYoYS5zdHlsZUNsYXNzZXM9bnVsbCksYj09PXguZG9jLmZyb250aWVyJiZ4LmRvYy5mcm9udGllcisrfXJldHVybiBhLnN0eWxlc31mdW5jdGlvbiBKYyh4LGEsYixjKXt2YXIgZD14LmRvYy5tb2RlLGU9bmV3IG1mKGEseC5vcHRpb25zLnRhYlNpemUpO2ZvcihlLnN0YXJ0PWUucG9zPWN8fDAsIiI9PWEmJkRjKGQsYik7IWUuZW9sKCk7KUVjKGQsZSxiKSxlLnN0YXJ0PWUucG9zfWZ1bmN0aW9uIEtjKHgsYSl7aWYoIXh8fC9eXHMqJC8udGVzdCh4KSlyZXR1cm4gbnVsbDt2YXIgYj1hLmFkZE1vZGVDbGFzcz90ZjpzZjtyZXR1cm4gYlt4XXx8KGJbeF09eC5yZXBsYWNlKC9cUysvZywiY20tJCYiKSl9ZnVuY3Rpb24gTGMoeCxhKXt2YXIgYj1QZCgic3BhbiIsbnVsbCxudWxsLHNlPyJwYWRkaW5nLXJpZ2h0OiAuMXB4IjpudWxsKSxjPXtwcmU6UGQoInByZSIsW2JdLCJDb2RlTWlycm9yLWxpbmUiKSxjb250ZW50OmIsY29sOjAscG9zOjAsY206eCxzcGxpdFNwYWNlczoocWV8fHNlKSYmeC5nZXRPcHRpb24oImxpbmVXcmFwcGluZyIpfTthLm1lYXN1cmU9e307Zm9yKHZhciBkPTA7ZDw9KGEucmVzdD9hLnJlc3QubGVuZ3RoOjApO2QrKyl7dmFyIGUsZj1kP2EucmVzdFtkLTFdOmEubGluZTtjLnBvcz0wLGMuYWRkVG9rZW49TmMsWmQoeC5kaXNwbGF5Lm1lYXN1cmUpJiYoZT1jZChmKSkmJihjLmFkZFRva2VuPVBjKGMuYWRkVG9rZW4sZSkpLGMubWFwPVtdLFJjKGYsYyxJYyh4LGYsYSE9eC5kaXNwbGF5LmV4dGVybmFsTWVhc3VyZWQmJnhkKGYpKSksZi5zdHlsZUNsYXNzZXMmJihmLnN0eWxlQ2xhc3Nlcy5iZ0NsYXNzJiYoYy5iZ0NsYXNzPVVkKGYuc3R5bGVDbGFzc2VzLmJnQ2xhc3MsYy5iZ0NsYXNzfHwiIikpLGYuc3R5bGVDbGFzc2VzLnRleHRDbGFzcyYmKGMudGV4dENsYXNzPVVkKGYuc3R5bGVDbGFzc2VzLnRleHRDbGFzcyxjLnRleHRDbGFzc3x8IiIpKSksMD09Yy5tYXAubGVuZ3RoJiZjLm1hcC5wdXNoKDAsMCxjLmNvbnRlbnQuYXBwZW5kQ2hpbGQoWWQoeC5kaXNwbGF5Lm1lYXN1cmUpKSksMD09ZD8oYS5tZWFzdXJlLm1hcD1jLm1hcCxhLm1lYXN1cmUuY2FjaGU9e30pOigoYS5tZWFzdXJlLm1hcHN8fChhLm1lYXN1cmUubWFwcz1bXSkpLnB1c2goYy5tYXApLChhLm1lYXN1cmUuY2FjaGVzfHwoYS5tZWFzdXJlLmNhY2hlcz1bXSkpLnB1c2goe30pKX1yZXR1cm4gc2UmJi9cYmNtLXRhYlxiLy50ZXN0KGMuY29udGVudC5sYXN0Q2hpbGQuY2xhc3NOYW1lKSYmKGMuY29udGVudC5jbGFzc05hbWU9ImNtLXRhYi13cmFwLWhhY2siKSxGZih4LCJyZW5kZXJMaW5lIix4LGEubGluZSxjLnByZSksYy5wcmUuY2xhc3NOYW1lJiYoYy50ZXh0Q2xhc3M9VWQoYy5wcmUuY2xhc3NOYW1lLGMudGV4dENsYXNzfHwiIikpLGN9ZnVuY3Rpb24gTWMoeCl7dmFyIGE9UGQoInNwYW4iLCLigKIiLCJjbS1pbnZhbGlkY2hhciIpO3JldHVybiBhLnRpdGxlPSJcXHUiK3guY2hhckNvZGVBdCgwKS50b1N0cmluZygxNiksYS5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLGEudGl0bGUpLGF9ZnVuY3Rpb24gTmMoeCxhLGIsYyxkLGUsZil7aWYoYSl7dmFyIGc9eC5zcGxpdFNwYWNlcz9hLnJlcGxhY2UoLyB7Myx9L2csT2MpOmEsaD14LmNtLnN0YXRlLnNwZWNpYWxDaGFycyxpPSExO2lmKGgudGVzdChhKSlmb3IodmFyIGo9ZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLGs9MDs7KXtoLmxhc3RJbmRleD1rO3ZhciBsPWguZXhlYyhhKSxtPWw/bC5pbmRleC1rOmEubGVuZ3RoLWs7aWYobSl7dmFyIG49ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZy5zbGljZShrLGsrbSkpO3FlJiY5PnJlP2ouYXBwZW5kQ2hpbGQoUGQoInNwYW4iLFtuXSkpOmouYXBwZW5kQ2hpbGQobikseC5tYXAucHVzaCh4LnBvcyx4LnBvcyttLG4pLHguY29sKz1tLHgucG9zKz1tfWlmKCFsKWJyZWFrO2lmKGsrPW0rMSwiXHQiPT1sWzBdKXt2YXIgbz14LmNtLm9wdGlvbnMudGFiU2l6ZSxwPW8teC5jb2wlbzsobj1qLmFwcGVuZENoaWxkKFBkKCJzcGFuIixFZChwKSwiY20tdGFiIikpKS5zZXRBdHRyaWJ1dGUoInJvbGUiLCJwcmVzZW50YXRpb24iKSxuLnNldEF0dHJpYnV0ZSgiY20tdGV4dCIsIlx0IikseC5jb2wrPXB9ZWxzZSBpZigiXHIiPT1sWzBdfHwiXG4iPT1sWzBdKXsobj1qLmFwcGVuZENoaWxkKFBkKCJzcGFuIiwiXHIiPT1sWzBdPyLikI0iOiLikKQiLCJjbS1pbnZhbGlkY2hhciIpKSkuc2V0QXR0cmlidXRlKCJjbS10ZXh0IixsWzBdKSx4LmNvbCs9MX1lbHNleyhuPXguY20ub3B0aW9ucy5zcGVjaWFsQ2hhclBsYWNlaG9sZGVyKGxbMF0pKS5zZXRBdHRyaWJ1dGUoImNtLXRleHQiLGxbMF0pLHFlJiY5PnJlP2ouYXBwZW5kQ2hpbGQoUGQoInNwYW4iLFtuXSkpOmouYXBwZW5kQ2hpbGQobikseC5jb2wrPTF9eC5tYXAucHVzaCh4LnBvcyx4LnBvcysxLG4pLHgucG9zKyt9ZWxzZXt4LmNvbCs9YS5sZW5ndGg7aj1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShnKTt4Lm1hcC5wdXNoKHgucG9zLHgucG9zK2EubGVuZ3RoLGopLHFlJiY5PnJlJiYoaT0hMCkseC5wb3MrPWEubGVuZ3RofWlmKGJ8fGN8fGR8fGl8fGYpe3ZhciBxPWJ8fCIiO2MmJihxKz1jKSxkJiYocSs9ZCk7dmFyIHI9UGQoInNwYW4iLFtqXSxxLGYpO3JldHVybiBlJiYoci50aXRsZT1lKSx4LmNvbnRlbnQuYXBwZW5kQ2hpbGQocil9eC5jb250ZW50LmFwcGVuZENoaWxkKGopfX1mdW5jdGlvbiBPYyh4KXtmb3IodmFyIGE9IiAiLGI9MDtiPHgubGVuZ3RoLTI7KytiKWErPWIlMj8iICI6IsKgIjtyZXR1cm4gYSsiICJ9ZnVuY3Rpb24gUGMoeCxhKXtyZXR1cm4gZnVuY3Rpb24oYixjLGQsZSxmLGcsaCl7ZD1kP2QrIiBjbS1mb3JjZS1ib3JkZXIiOiJjbS1mb3JjZS1ib3JkZXIiO2Zvcih2YXIgaT1iLnBvcyxqPWkrYy5sZW5ndGg7Oyl7Zm9yKHZhciBrPTA7azxhLmxlbmd0aDtrKyspe3ZhciBsPWFba107aWYobC50bz5pJiZsLmZyb208PWkpYnJlYWt9aWYobC50bz49ailyZXR1cm4geChiLGMsZCxlLGYsZyxoKTt4KGIsYy5zbGljZSgwLGwudG8taSksZCxlLG51bGwsZyxoKSxlPW51bGwsYz1jLnNsaWNlKGwudG8taSksaT1sLnRvfX19ZnVuY3Rpb24gUWMoeCxhLGIsYyl7dmFyIGQ9IWMmJmIud2lkZ2V0Tm9kZTtkJiZ4Lm1hcC5wdXNoKHgucG9zLHgucG9zK2EsZCksIWMmJnguY20uZGlzcGxheS5pbnB1dC5uZWVkc0NvbnRlbnRBdHRyaWJ1dGUmJihkfHwoZD14LmNvbnRlbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpKSksZC5zZXRBdHRyaWJ1dGUoImNtLW1hcmtlciIsYi5pZCkpLGQmJih4LmNtLmRpc3BsYXkuaW5wdXQuc2V0VW5lZGl0YWJsZShkKSx4LmNvbnRlbnQuYXBwZW5kQ2hpbGQoZCkpLHgucG9zKz1hfWZ1bmN0aW9uIFJjKHgsYSxiKXt2YXIgYz14Lm1hcmtlZFNwYW5zLGQ9eC50ZXh0LGU9MDtpZihjKWZvcih2YXIgZixnLGgsaSxqLGssbCxtPWQubGVuZ3RoLG49MCxvPTEscD0iIixxPTA7Oyl7aWYocT09bil7aD1pPWo9az1nPSIiLGw9bnVsbCxxPTEvMDtmb3IodmFyIHI9W10scz0wO3M8Yy5sZW5ndGg7KytzKXt2YXIgdD1jW3NdLHU9dC5tYXJrZXI7ImJvb2ttYXJrIj09dS50eXBlJiZ0LmZyb209PW4mJnUud2lkZ2V0Tm9kZT9yLnB1c2godSk6dC5mcm9tPD1uJiYobnVsbD09dC50b3x8dC50bz5ufHx1LmNvbGxhcHNlZCYmdC50bz09biYmdC5mcm9tPT1uKT8obnVsbCE9dC50byYmdC50byE9biYmcT50LnRvJiYocT10LnRvLGk9IiIpLHUuY2xhc3NOYW1lJiYoaCs9IiAiK3UuY2xhc3NOYW1lKSx1LmNzcyYmKGc9KGc/ZysiOyI6IiIpK3UuY3NzKSx1LnN0YXJ0U3R5bGUmJnQuZnJvbT09biYmKGorPSIgIit1LnN0YXJ0U3R5bGUpLHUuZW5kU3R5bGUmJnQudG89PXEmJihpKz0iICIrdS5lbmRTdHlsZSksdS50aXRsZSYmIWsmJihrPXUudGl0bGUpLHUuY29sbGFwc2VkJiYoIWx8fGxjKGwubWFya2VyLHUpPDApJiYobD10KSk6dC5mcm9tPm4mJnE+dC5mcm9tJiYocT10LmZyb20pfWlmKGwmJihsLmZyb218fDApPT1uKXtpZihRYyhhLChudWxsPT1sLnRvP20rMTpsLnRvKS1uLGwubWFya2VyLG51bGw9PWwuZnJvbSksbnVsbD09bC50bylyZXR1cm47bC50bz09biYmKGw9ITEpfWlmKCFsJiZyLmxlbmd0aClmb3Iocz0wO3M8ci5sZW5ndGg7KytzKVFjKGEsMCxyW3NdKX1pZihuPj1tKWJyZWFrO2Zvcih2YXIgdj1NYXRoLm1pbihtLHEpOzspe2lmKHApe3ZhciB3PW4rcC5sZW5ndGg7aWYoIWwpe3ZhciB5PXc+dj9wLnNsaWNlKDAsdi1uKTpwO2EuYWRkVG9rZW4oYSx5LGY/ZitoOmgsaixuK3kubGVuZ3RoPT1xP2k6IiIsayxnKX1pZih3Pj12KXtwPXAuc2xpY2Uodi1uKSxuPXY7YnJlYWt9bj13LGo9IiJ9cD1kLnNsaWNlKGUsZT1iW28rK10pLGY9S2MoYltvKytdLGEuY20ub3B0aW9ucyl9fWVsc2UgZm9yKG89MTtvPGIubGVuZ3RoO28rPTIpYS5hZGRUb2tlbihhLGQuc2xpY2UoZSxlPWJbb10pLEtjKGJbbysxXSxhLmNtLm9wdGlvbnMpKX1mdW5jdGlvbiBTYyh4LGEpe3JldHVybiAwPT1hLmZyb20uY2gmJjA9PWEudG8uY2gmJiIiPT1GZChhLnRleHQpJiYoIXguY218fHguY20ub3B0aW9ucy53aG9sZUxpbmVVcGRhdGVCZWZvcmUpfWZ1bmN0aW9uIFRjKHgsYSxiLGMpe2Z1bmN0aW9uIGQoeCl7cmV0dXJuIGI/Ylt4XTpudWxsfWZ1bmN0aW9uIGUoeCxiLGQpe0FjKHgsYixkLGMpLHdkKHgsImNoYW5nZSIseCxhKX1mdW5jdGlvbiBmKHgsYSl7Zm9yKHZhciBiPXgsZT1bXTthPmI7KytiKWUucHVzaChuZXcgcmYoaVtiXSxkKGIpLGMpKTtyZXR1cm4gZX12YXIgZz1hLmZyb20saD1hLnRvLGk9YS50ZXh0LGo9WWMoeCxnLmxpbmUpLGs9WWMoeCxoLmxpbmUpLGw9RmQoaSksbT1kKGkubGVuZ3RoLTEpLG49aC5saW5lLWcubGluZTtpZihhLmZ1bGwpeC5pbnNlcnQoMCxmKDAsaS5sZW5ndGgpKSx4LnJlbW92ZShpLmxlbmd0aCx4LnNpemUtaS5sZW5ndGgpO2Vsc2UgaWYoU2MoeCxhKSl7dmFyIG89ZigwLGkubGVuZ3RoLTEpO2UoayxrLnRleHQsbSksbiYmeC5yZW1vdmUoZy5saW5lLG4pLG8ubGVuZ3RoJiZ4Lmluc2VydChnLmxpbmUsbyl9ZWxzZSBpZihqPT1rKWlmKDE9PWkubGVuZ3RoKWUoaixqLnRleHQuc2xpY2UoMCxnLmNoKStsK2oudGV4dC5zbGljZShoLmNoKSxtKTtlbHNleyhvPWYoMSxpLmxlbmd0aC0xKSkucHVzaChuZXcgcmYobCtqLnRleHQuc2xpY2UoaC5jaCksbSxjKSksZShqLGoudGV4dC5zbGljZSgwLGcuY2gpK2lbMF0sZCgwKSkseC5pbnNlcnQoZy5saW5lKzEsbyl9ZWxzZSBpZigxPT1pLmxlbmd0aCllKGosai50ZXh0LnNsaWNlKDAsZy5jaCkraVswXStrLnRleHQuc2xpY2UoaC5jaCksZCgwKSkseC5yZW1vdmUoZy5saW5lKzEsbik7ZWxzZXtlKGosai50ZXh0LnNsaWNlKDAsZy5jaCkraVswXSxkKDApKSxlKGssbCtrLnRleHQuc2xpY2UoaC5jaCksbSk7bz1mKDEsaS5sZW5ndGgtMSk7bj4xJiZ4LnJlbW92ZShnLmxpbmUrMSxuLTEpLHguaW5zZXJ0KGcubGluZSsxLG8pfXdkKHgsImNoYW5nZSIseCxhKX1mdW5jdGlvbiBVYyh4KXt0aGlzLmxpbmVzPXgsdGhpcy5wYXJlbnQ9bnVsbDtmb3IodmFyIGE9MCxiPTA7YTx4Lmxlbmd0aDsrK2EpeFthXS5wYXJlbnQ9dGhpcyxiKz14W2FdLmhlaWdodDt0aGlzLmhlaWdodD1ifWZ1bmN0aW9uIFZjKHgpe3RoaXMuY2hpbGRyZW49eDtmb3IodmFyIGE9MCxiPTAsYz0wO2M8eC5sZW5ndGg7KytjKXt2YXIgZD14W2NdO2ErPWQuY2h1bmtTaXplKCksYis9ZC5oZWlnaHQsZC5wYXJlbnQ9dGhpc310aGlzLnNpemU9YSx0aGlzLmhlaWdodD1iLHRoaXMucGFyZW50PW51bGx9ZnVuY3Rpb24gV2MoeCxhLGIpe2Z1bmN0aW9uIGMoeCxkLGUpe2lmKHgubGlua2VkKWZvcih2YXIgZj0wO2Y8eC5saW5rZWQubGVuZ3RoOysrZil7dmFyIGc9eC5saW5rZWRbZl07aWYoZy5kb2MhPWQpe3ZhciBoPWUmJmcuc2hhcmVkSGlzdDsoIWJ8fGgpJiYoYShnLmRvYyxoKSxjKGcuZG9jLHgsaCkpfX19Yyh4LG51bGwsITApfWZ1bmN0aW9uIFhjKHgsYSl7aWYoYS5jbSl0aHJvdyBuZXcgRXJyb3IoIlRoaXMgZG9jdW1lbnQgaXMgYWxyZWFkeSBpbiB1c2UuIik7eC5kb2M9YSxhLmNtPXgsZih4KSxiKHgpLHgub3B0aW9ucy5saW5lV3JhcHBpbmd8fGwoeCkseC5vcHRpb25zLm1vZGU9YS5tb2RlT3B0aW9uLEphKHgpfWZ1bmN0aW9uIFljKHgsYSl7aWYoMD4oYS09eC5maXJzdCl8fGE+PXguc2l6ZSl0aHJvdyBuZXcgRXJyb3IoIlRoZXJlIGlzIG5vIGxpbmUgIisoYSt4LmZpcnN0KSsiIGluIHRoZSBkb2N1bWVudC4iKTtmb3IodmFyIGI9eDshYi5saW5lczspZm9yKHZhciBjPTA7OysrYyl7dmFyIGQ9Yi5jaGlsZHJlbltjXSxlPWQuY2h1bmtTaXplKCk7aWYoZT5hKXtiPWQ7YnJlYWt9YS09ZX1yZXR1cm4gYi5saW5lc1thXX1mdW5jdGlvbiBaYyh4LGEsYil7dmFyIGM9W10sZD1hLmxpbmU7cmV0dXJuIHguaXRlcihhLmxpbmUsYi5saW5lKzEsZnVuY3Rpb24oeCl7dmFyIGU9eC50ZXh0O2Q9PWIubGluZSYmKGU9ZS5zbGljZSgwLGIuY2gpKSxkPT1hLmxpbmUmJihlPWUuc2xpY2UoYS5jaCkpLGMucHVzaChlKSwrK2R9KSxjfWZ1bmN0aW9uICRjKHgsYSxiKXt2YXIgYz1bXTtyZXR1cm4geC5pdGVyKGEsYixmdW5jdGlvbih4KXtjLnB1c2goeC50ZXh0KX0pLGN9ZnVuY3Rpb24gX2MoeCxhKXt2YXIgYj1hLXguaGVpZ2h0O2lmKGIpZm9yKHZhciBjPXg7YztjPWMucGFyZW50KWMuaGVpZ2h0Kz1ifWZ1bmN0aW9uIHhkKHgpe2lmKG51bGw9PXgucGFyZW50KXJldHVybiBudWxsO2Zvcih2YXIgYT14LnBhcmVudCxiPUdkKGEubGluZXMseCksYz1hLnBhcmVudDtjO2E9YyxjPWMucGFyZW50KWZvcih2YXIgZD0wO2MuY2hpbGRyZW5bZF0hPWE7KytkKWIrPWMuY2hpbGRyZW5bZF0uY2h1bmtTaXplKCk7cmV0dXJuIGIrYS5maXJzdH1mdW5jdGlvbiBhZCh4LGEpe3ZhciBiPXguZmlyc3Q7eDpkb3tmb3IodmFyIGM9MDtjPHguY2hpbGRyZW4ubGVuZ3RoOysrYyl7dmFyIGQ9eC5jaGlsZHJlbltjXSxlPWQuaGVpZ2h0O2lmKGU+YSl7eD1kO2NvbnRpbnVlIHh9YS09ZSxiKz1kLmNodW5rU2l6ZSgpfXJldHVybiBifXdoaWxlKCF4LmxpbmVzKTtmb3IoYz0wO2M8eC5saW5lcy5sZW5ndGg7KytjKXt2YXIgZj14LmxpbmVzW2NdLmhlaWdodDtpZihmPmEpYnJlYWs7YS09Zn1yZXR1cm4gYitjfWZ1bmN0aW9uIGJkKHgpe2Zvcih2YXIgYT0wLGI9KHg9cWMoeCkpLnBhcmVudCxjPTA7YzxiLmxpbmVzLmxlbmd0aDsrK2Mpe3ZhciBkPWIubGluZXNbY107aWYoZD09eClicmVhazthKz1kLmhlaWdodH1mb3IodmFyIGU9Yi5wYXJlbnQ7ZTtlPShiPWUpLnBhcmVudClmb3IoYz0wO2M8ZS5jaGlsZHJlbi5sZW5ndGg7KytjKXt2YXIgZj1lLmNoaWxkcmVuW2NdO2lmKGY9PWIpYnJlYWs7YSs9Zi5oZWlnaHR9cmV0dXJuIGF9ZnVuY3Rpb24gY2QoeCl7dmFyIGE9eC5vcmRlcjtyZXR1cm4gbnVsbD09YSYmKGE9eC5vcmRlcj1lZyh4LnRleHQpKSxhfWZ1bmN0aW9uIGRkKHgpe3RoaXMuZG9uZT1bXSx0aGlzLnVuZG9uZT1bXSx0aGlzLnVuZG9EZXB0aD0xLzAsdGhpcy5sYXN0TW9kVGltZT10aGlzLmxhc3RTZWxUaW1lPTAsdGhpcy5sYXN0T3A9dGhpcy5sYXN0U2VsT3A9bnVsbCx0aGlzLmxhc3RPcmlnaW49dGhpcy5sYXN0U2VsT3JpZ2luPW51bGwsdGhpcy5nZW5lcmF0aW9uPXRoaXMubWF4R2VuZXJhdGlvbj14fHwxfWZ1bmN0aW9uIGVkKHgsYSl7dmFyIGI9e2Zyb206VihhLmZyb20pLHRvOlllKGEpLHRleHQ6WmMoeCxhLmZyb20sYS50byl9O3JldHVybiBsZCh4LGIsYS5mcm9tLmxpbmUsYS50by5saW5lKzEpLFdjKHgsZnVuY3Rpb24oeCl7bGQoeCxiLGEuZnJvbS5saW5lLGEudG8ubGluZSsxKX0sITApLGJ9ZnVuY3Rpb24gZmQoeCl7Zm9yKDt4Lmxlbmd0aDspe2lmKCFGZCh4KS5yYW5nZXMpYnJlYWs7eC5wb3AoKX19ZnVuY3Rpb24gZ2QoeCxhKXtyZXR1cm4gYT8oZmQoeC5kb25lKSxGZCh4LmRvbmUpKTp4LmRvbmUubGVuZ3RoJiYhRmQoeC5kb25lKS5yYW5nZXM/RmQoeC5kb25lKTp4LmRvbmUubGVuZ3RoPjEmJiF4LmRvbmVbeC5kb25lLmxlbmd0aC0yXS5yYW5nZXM/KHguZG9uZS5wb3AoKSxGZCh4LmRvbmUpKTp2b2lkIDB9ZnVuY3Rpb24gaGQoeCxhLGIsYyl7dmFyIGQ9eC5oaXN0b3J5O2QudW5kb25lLmxlbmd0aD0wO3ZhciBlLGY9K25ldyBEYXRlO2lmKChkLmxhc3RPcD09Y3x8ZC5sYXN0T3JpZ2luPT1hLm9yaWdpbiYmYS5vcmlnaW4mJigiKyI9PWEub3JpZ2luLmNoYXJBdCgwKSYmeC5jbSYmZC5sYXN0TW9kVGltZT5mLXguY20ub3B0aW9ucy5oaXN0b3J5RXZlbnREZWxheXx8IioiPT1hLm9yaWdpbi5jaGFyQXQoMCkpKSYmKGU9Z2QoZCxkLmxhc3RPcD09YykpKXt2YXIgZz1GZChlLmNoYW5nZXMpOzA9PUtlKGEuZnJvbSxhLnRvKSYmMD09S2UoYS5mcm9tLGcudG8pP2cudG89WWUoYSk6ZS5jaGFuZ2VzLnB1c2goZWQoeCxhKSl9ZWxzZXt2YXIgaD1GZChkLmRvbmUpO2ZvcihoJiZoLnJhbmdlc3x8a2QoeC5zZWwsZC5kb25lKSxlPXtjaGFuZ2VzOltlZCh4LGEpXSxnZW5lcmF0aW9uOmQuZ2VuZXJhdGlvbn0sZC5kb25lLnB1c2goZSk7ZC5kb25lLmxlbmd0aD5kLnVuZG9EZXB0aDspZC5kb25lLnNoaWZ0KCksZC5kb25lWzBdLnJhbmdlc3x8ZC5kb25lLnNoaWZ0KCl9ZC5kb25lLnB1c2goYiksZC5nZW5lcmF0aW9uPSsrZC5tYXhHZW5lcmF0aW9uLGQubGFzdE1vZFRpbWU9ZC5sYXN0U2VsVGltZT1mLGQubGFzdE9wPWQubGFzdFNlbE9wPWMsZC5sYXN0T3JpZ2luPWQubGFzdFNlbE9yaWdpbj1hLm9yaWdpbixnfHxGZih4LCJoaXN0b3J5QWRkZWQiKX1mdW5jdGlvbiBpZCh4LGEsYixjKXt2YXIgZD1hLmNoYXJBdCgwKTtyZXR1cm4iKiI9PWR8fCIrIj09ZCYmYi5yYW5nZXMubGVuZ3RoPT1jLnJhbmdlcy5sZW5ndGgmJmIuc29tZXRoaW5nU2VsZWN0ZWQoKT09Yy5zb21ldGhpbmdTZWxlY3RlZCgpJiZuZXcgRGF0ZS14Lmhpc3RvcnkubGFzdFNlbFRpbWU8PSh4LmNtP3guY20ub3B0aW9ucy5oaXN0b3J5RXZlbnREZWxheTo1MDApfWZ1bmN0aW9uIGpkKHgsYSxiLGMpe3ZhciBkPXguaGlzdG9yeSxlPWMmJmMub3JpZ2luO2I9PWQubGFzdFNlbE9wfHxlJiZkLmxhc3RTZWxPcmlnaW49PWUmJihkLmxhc3RNb2RUaW1lPT1kLmxhc3RTZWxUaW1lJiZkLmxhc3RPcmlnaW49PWV8fGlkKHgsZSxGZChkLmRvbmUpLGEpKT9kLmRvbmVbZC5kb25lLmxlbmd0aC0xXT1hOmtkKGEsZC5kb25lKSxkLmxhc3RTZWxUaW1lPStuZXcgRGF0ZSxkLmxhc3RTZWxPcmlnaW49ZSxkLmxhc3RTZWxPcD1iLGMmJiExIT09Yy5jbGVhclJlZG8mJmZkKGQudW5kb25lKX1mdW5jdGlvbiBrZCh4LGEpe3ZhciBiPUZkKGEpO2ImJmIucmFuZ2VzJiZiLmVxdWFscyh4KXx8YS5wdXNoKHgpfWZ1bmN0aW9uIGxkKHgsYSxiLGMpe3ZhciBkPWFbInNwYW5zXyIreC5pZF0sZT0wO3guaXRlcihNYXRoLm1heCh4LmZpcnN0LGIpLE1hdGgubWluKHguZmlyc3QreC5zaXplLGMpLGZ1bmN0aW9uKGIpe2IubWFya2VkU3BhbnMmJigoZHx8KGQ9YVsic3BhbnNfIit4LmlkXT17fSkpW2VdPWIubWFya2VkU3BhbnMpLCsrZX0pfWZ1bmN0aW9uIG1kKHgpe2lmKCF4KXJldHVybiBudWxsO2Zvcih2YXIgYSxiPTA7Yjx4Lmxlbmd0aDsrK2IpeFtiXS5tYXJrZXIuZXhwbGljaXRseUNsZWFyZWQ/YXx8KGE9eC5zbGljZSgwLGIpKTphJiZhLnB1c2goeFtiXSk7cmV0dXJuIGE/YS5sZW5ndGg/YTpudWxsOnh9ZnVuY3Rpb24gbmQoeCxhKXt2YXIgYj1hWyJzcGFuc18iK3guaWRdO2lmKCFiKXJldHVybiBudWxsO2Zvcih2YXIgYz0wLGQ9W107YzxhLnRleHQubGVuZ3RoOysrYylkLnB1c2gobWQoYltjXSkpO3JldHVybiBkfWZ1bmN0aW9uIG9kKHgsYSxiKXtmb3IodmFyIGM9MCxkPVtdO2M8eC5sZW5ndGg7KytjKXt2YXIgZT14W2NdO2lmKGUucmFuZ2VzKWQucHVzaChiP2p4LnByb3RvdHlwZS5kZWVwQ29weS5jYWxsKGUpOmUpO2Vsc2V7dmFyIGY9ZS5jaGFuZ2VzLGc9W107ZC5wdXNoKHtjaGFuZ2VzOmd9KTtmb3IodmFyIGg9MDtoPGYubGVuZ3RoOysraCl7dmFyIGksaj1mW2hdO2lmKGcucHVzaCh7ZnJvbTpqLmZyb20sdG86ai50byx0ZXh0OmoudGV4dH0pLGEpZm9yKHZhciBrIGluIGopKGk9ay5tYXRjaCgvXnNwYW5zXyhcZCspJC8pKSYmR2QoYSxOdW1iZXIoaVsxXSkpPi0xJiYoRmQoZylba109altrXSxkZWxldGUgaltrXSl9fX1yZXR1cm4gZH1mdW5jdGlvbiBwZCh4LGEsYixjKXtiPHgubGluZT94LmxpbmUrPWM6YTx4LmxpbmUmJih4LmxpbmU9YSx4LmNoPTApfWZ1bmN0aW9uIHFkKHgsYSxiLGMpe2Zvcih2YXIgZD0wO2Q8eC5sZW5ndGg7KytkKXt2YXIgZT14W2RdLGY9ITA7aWYoZS5yYW5nZXMpe2UuY29waWVkfHwoKGU9eFtkXT1lLmRlZXBDb3B5KCkpLmNvcGllZD0hMCk7Zm9yKHZhciBnPTA7ZzxlLnJhbmdlcy5sZW5ndGg7ZysrKXBkKGUucmFuZ2VzW2ddLmFuY2hvcixhLGIsYykscGQoZS5yYW5nZXNbZ10uaGVhZCxhLGIsYyl9ZWxzZXtmb3IoZz0wO2c8ZS5jaGFuZ2VzLmxlbmd0aDsrK2cpe3ZhciBoPWUuY2hhbmdlc1tnXTtpZihiPGguZnJvbS5saW5lKWguZnJvbT1KZShoLmZyb20ubGluZStjLGguZnJvbS5jaCksaC50bz1KZShoLnRvLmxpbmUrYyxoLnRvLmNoKTtlbHNlIGlmKGE8PWgudG8ubGluZSl7Zj0hMTticmVha319Znx8KHguc3BsaWNlKDAsZCsxKSxkPTApfX19ZnVuY3Rpb24gcmQoeCxhKXt2YXIgYj1hLmZyb20ubGluZSxjPWEudG8ubGluZSxkPWEudGV4dC5sZW5ndGgtKGMtYiktMTtxZCh4LmRvbmUsYixjLGQpLHFkKHgudW5kb25lLGIsYyxkKX1mdW5jdGlvbiBzZCh4KXtyZXR1cm4gbnVsbCE9eC5kZWZhdWx0UHJldmVudGVkP3guZGVmYXVsdFByZXZlbnRlZDowPT14LnJldHVyblZhbHVlfWZ1bmN0aW9uIHRkKHgpe3JldHVybiB4LnRhcmdldHx8eC5zcmNFbGVtZW50fWZ1bmN0aW9uIHVkKHgpe3ZhciBhPXgud2hpY2g7cmV0dXJuIG51bGw9PWEmJigxJnguYnV0dG9uP2E9MToyJnguYnV0dG9uP2E9Mzo0JnguYnV0dG9uJiYoYT0yKSksQ2UmJnguY3RybEtleSYmMT09YSYmKGE9MyksYX1mdW5jdGlvbiB2ZCh4LGEsYil7dmFyIGM9eC5faGFuZGxlcnMmJnguX2hhbmRsZXJzW2FdO3JldHVybiBiP2MmJmMubGVuZ3RoPjA/Yy5zbGljZSgpOkRmOmN8fERmfWZ1bmN0aW9uIHdkKHgsYSl7ZnVuY3Rpb24gYih4KXtyZXR1cm4gZnVuY3Rpb24oKXt4LmFwcGx5KG51bGwsZSl9fXZhciBjPXZkKHgsYSwhMSk7aWYoYy5sZW5ndGgpe3ZhciBkLGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpO1FlP2Q9UWUuZGVsYXllZENhbGxiYWNrczpHZj9kPUdmOihkPUdmPVtdLHNldFRpbWVvdXQoeWQsMCkpO2Zvcih2YXIgZj0wO2Y8Yy5sZW5ndGg7KytmKWQucHVzaChiKGNbZl0pKX19ZnVuY3Rpb24geWQoKXt2YXIgeD1HZjtHZj1udWxsO2Zvcih2YXIgYT0wO2E8eC5sZW5ndGg7KythKXhbYV0oKX1mdW5jdGlvbiB6ZCh4LGEsYil7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBhJiYoYT17dHlwZTphLHByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dGhpcy5kZWZhdWx0UHJldmVudGVkPSEwfX0pLEZmKHgsYnx8YS50eXBlLHgsYSksc2QoYSl8fGEuY29kZW1pcnJvcklnbm9yZX1mdW5jdGlvbiBBZCh4KXt2YXIgYT14Ll9oYW5kbGVycyYmeC5faGFuZGxlcnMuY3Vyc29yQWN0aXZpdHk7aWYoYSlmb3IodmFyIGI9eC5jdXJPcC5jdXJzb3JBY3Rpdml0eUhhbmRsZXJzfHwoeC5jdXJPcC5jdXJzb3JBY3Rpdml0eUhhbmRsZXJzPVtdKSxjPTA7YzxhLmxlbmd0aDsrK2MpLTE9PUdkKGIsYVtjXSkmJmIucHVzaChhW2NdKX1mdW5jdGlvbiBCZCh4LGEpe3JldHVybiB2ZCh4LGEpLmxlbmd0aD4wfWZ1bmN0aW9uIENkKHgpe3gucHJvdG90eXBlLm9uPWZ1bmN0aW9uKHgsYSl7Q2YodGhpcyx4LGEpfSx4LnByb3RvdHlwZS5vZmY9ZnVuY3Rpb24oeCxhKXtFZih0aGlzLHgsYSl9fWZ1bmN0aW9uIERkKCl7dGhpcy5pZD1udWxsfWZ1bmN0aW9uIEVkKHgpe2Zvcig7T2YubGVuZ3RoPD14OylPZi5wdXNoKEZkKE9mKSsiICIpO3JldHVybiBPZlt4XX1mdW5jdGlvbiBGZCh4KXtyZXR1cm4geFt4Lmxlbmd0aC0xXX1mdW5jdGlvbiBHZCh4LGEpe2Zvcih2YXIgYj0wO2I8eC5sZW5ndGg7KytiKWlmKHhbYl09PWEpcmV0dXJuIGI7cmV0dXJuLTF9ZnVuY3Rpb24gSGQoeCxhKXtmb3IodmFyIGI9W10sYz0wO2M8eC5sZW5ndGg7YysrKWJbY109YSh4W2NdLGMpO3JldHVybiBifWZ1bmN0aW9uIElkKCl7fWZ1bmN0aW9uIEpkKHgsYSl7dmFyIGI7cmV0dXJuIE9iamVjdC5jcmVhdGU/Yj1PYmplY3QuY3JlYXRlKHgpOihJZC5wcm90b3R5cGU9eCxiPW5ldyBJZCksYSYmS2QoYSxiKSxifWZ1bmN0aW9uIEtkKHgsYSxiKXtmb3IodmFyIGMgaW4gYXx8KGE9e30pLHgpIXguaGFzT3duUHJvcGVydHkoYyl8fCExPT09YiYmYS5oYXNPd25Qcm9wZXJ0eShjKXx8KGFbY109eFtjXSk7cmV0dXJuIGF9ZnVuY3Rpb24gTGQoeCl7dmFyIGE9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiB4LmFwcGx5KG51bGwsYSl9fWZ1bmN0aW9uIE1kKHgsYSl7cmV0dXJuIGE/ISEoYS5zb3VyY2UuaW5kZXhPZigiXFx3Iik+LTEmJlNmKHgpKXx8YS50ZXN0KHgpOlNmKHgpfWZ1bmN0aW9uIE5kKHgpe2Zvcih2YXIgYSBpbiB4KWlmKHguaGFzT3duUHJvcGVydHkoYSkmJnhbYV0pcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gT2QoeCl7cmV0dXJuIHguY2hhckNvZGVBdCgwKT49NzY4JiZUZi50ZXN0KHgpfWZ1bmN0aW9uIFBkKHgsYSxiLGMpe3ZhciBkPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoeCk7aWYoYiYmKGQuY2xhc3NOYW1lPWIpLGMmJihkLnN0eWxlLmNzc1RleHQ9YyksInN0cmluZyI9PXR5cGVvZiBhKWQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYSkpO2Vsc2UgaWYoYSlmb3IodmFyIGU9MDtlPGEubGVuZ3RoOysrZSlkLmFwcGVuZENoaWxkKGFbZV0pO3JldHVybiBkfWZ1bmN0aW9uIFFkKHgpe2Zvcih2YXIgYT14LmNoaWxkTm9kZXMubGVuZ3RoO2E+MDstLWEpeC5yZW1vdmVDaGlsZCh4LmZpcnN0Q2hpbGQpO3JldHVybiB4fWZ1bmN0aW9uIFJkKHgsYSl7cmV0dXJuIFFkKHgpLmFwcGVuZENoaWxkKGEpfWZ1bmN0aW9uIFNkKCl7Zm9yKHZhciB4PWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7eCYmeC5yb290JiZ4LnJvb3QuYWN0aXZlRWxlbWVudDspeD14LnJvb3QuYWN0aXZlRWxlbWVudDtyZXR1cm4geH1mdW5jdGlvbiBUZCh4KXtyZXR1cm4gbmV3IFJlZ0V4cCgiKF58XFxzKSIreCsiKD86JHxcXHMpXFxzKiIpfWZ1bmN0aW9uIFVkKHgsYSl7Zm9yKHZhciBiPXguc3BsaXQoIiAiKSxjPTA7YzxiLmxlbmd0aDtjKyspYltjXSYmIVRkKGJbY10pLnRlc3QoYSkmJihhKz0iICIrYltjXSk7cmV0dXJuIGF9ZnVuY3Rpb24gVmQoeCl7aWYoZG9jdW1lbnQuYm9keS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKWZvcih2YXIgYT1kb2N1bWVudC5ib2R5LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIkNvZGVNaXJyb3IiKSxiPTA7YjxhLmxlbmd0aDtiKyspe3ZhciBjPWFbYl0uQ29kZU1pcnJvcjtjJiZ4KGMpfX1mdW5jdGlvbiBXZCgpe1pmfHwoWGQoKSxaZj0hMCl9ZnVuY3Rpb24gWGQoKXt2YXIgeDtDZih3aW5kb3csInJlc2l6ZSIsZnVuY3Rpb24oKXtudWxsPT14JiYoeD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7eD1udWxsLFZkKFNhKX0sMTAwKSl9KSxDZih3aW5kb3csImJsdXIiLGZ1bmN0aW9uKCl7VmQocWIpfSl9ZnVuY3Rpb24gWWQoeCl7aWYobnVsbD09VmYpe3ZhciBhPVBkKCJzcGFuIiwi4oCLIik7UmQoeCxQZCgic3BhbiIsW2EsZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIngiKV0pKSwwIT14LmZpcnN0Q2hpbGQub2Zmc2V0SGVpZ2h0JiYoVmY9YS5vZmZzZXRXaWR0aDw9MSYmYS5vZmZzZXRIZWlnaHQ+MiYmIShxZSYmOD5yZSkpfXZhciBiPVZmP1BkKCJzcGFuIiwi4oCLIik6UGQoInNwYW4iLCLCoCIsbnVsbCwiZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogMXB4OyBtYXJnaW4tcmlnaHQ6IC0xcHgiKTtyZXR1cm4gYi5zZXRBdHRyaWJ1dGUoImNtLXRleHQiLCIiKSxifWZ1bmN0aW9uIFpkKHgpe2lmKG51bGwhPVdmKXJldHVybiBXZjt2YXIgYT1SZCh4LGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJB2K5BIikpLGI9UWYoYSwwLDEpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2lmKCFifHxiLmxlZnQ9PWIucmlnaHQpcmV0dXJuITE7dmFyIGM9UWYoYSwxLDIpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybiBXZj1jLnJpZ2h0LWIucmlnaHQ8M31mdW5jdGlvbiAkZCh4KXtpZihudWxsIT1iZylyZXR1cm4gYmc7dmFyIGE9UmQoeCxQZCgic3BhbiIsIngiKSksYj1hLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGM9UWYoYSwwLDEpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybiBiZz1NYXRoLmFicyhiLmxlZnQtYy5sZWZ0KT4xfWZ1bmN0aW9uIF9kKHgsYSxiLGMpe2lmKCF4KXJldHVybiBjKGEsYiwibHRyIik7Zm9yKHZhciBkPSExLGU9MDtlPHgubGVuZ3RoOysrZSl7dmFyIGY9eFtlXTsoZi5mcm9tPGImJmYudG8+YXx8YT09YiYmZi50bz09YSkmJihjKE1hdGgubWF4KGYuZnJvbSxhKSxNYXRoLm1pbihmLnRvLGIpLDE9PWYubGV2ZWw/InJ0bCI6Imx0ciIpLGQ9ITApfWR8fGMoYSxiLCJsdHIiKX1mdW5jdGlvbiB4ZSh4KXtyZXR1cm4geC5sZXZlbCUyP3gudG86eC5mcm9tfWZ1bmN0aW9uIGFlKHgpe3JldHVybiB4LmxldmVsJTI/eC5mcm9tOngudG99ZnVuY3Rpb24gYmUoeCl7dmFyIGE9Y2QoeCk7cmV0dXJuIGE/eGUoYVswXSk6MH1mdW5jdGlvbiBjZSh4KXt2YXIgYT1jZCh4KTtyZXR1cm4gYT9hZShGZChhKSk6eC50ZXh0Lmxlbmd0aH1mdW5jdGlvbiBkZSh4LGEpe3ZhciBiPVljKHguZG9jLGEpLGM9cWMoYik7YyE9YiYmKGE9eGQoYykpO3ZhciBkPWNkKGMpLGU9ZD9kWzBdLmxldmVsJTI/Y2UoYyk6YmUoYyk6MDtyZXR1cm4gSmUoYSxlKX1mdW5jdGlvbiBlZSh4LGEpe2Zvcih2YXIgYixjPVljKHguZG9jLGEpO2I9b2MoYyk7KWM9Yi5maW5kKDEsITApLmxpbmUsYT1udWxsO3ZhciBkPWNkKGMpLGU9ZD9kWzBdLmxldmVsJTI/YmUoYyk6Y2UoYyk6Yy50ZXh0Lmxlbmd0aDtyZXR1cm4gSmUobnVsbD09YT94ZChjKTphLGUpfWZ1bmN0aW9uIGZlKHgsYSl7dmFyIGI9ZGUoeCxhLmxpbmUpLGM9WWMoeC5kb2MsYi5saW5lKSxkPWNkKGMpO2lmKCFkfHwwPT1kWzBdLmxldmVsKXt2YXIgZT1NYXRoLm1heCgwLGMudGV4dC5zZWFyY2goL1xTLykpLGY9YS5saW5lPT1iLmxpbmUmJmEuY2g8PWUmJmEuY2g7cmV0dXJuIEplKGIubGluZSxmPzA6ZSl9cmV0dXJuIGJ9ZnVuY3Rpb24gZ2UoeCxhLGIpe3ZhciBjPXhbMF0ubGV2ZWw7cmV0dXJuIGE9PWN8fGIhPWMmJmI+YX1mdW5jdGlvbiBoZSh4LGEpe2RnPW51bGw7Zm9yKHZhciBiLGM9MDtjPHgubGVuZ3RoOysrYyl7dmFyIGQ9eFtjXTtpZihkLmZyb208YSYmZC50bz5hKXJldHVybiBjO2lmKGQuZnJvbT09YXx8ZC50bz09YSl7aWYobnVsbCE9YilyZXR1cm4gZ2UoeCxkLmxldmVsLHhbYl0ubGV2ZWwpPyhkLmZyb20hPWQudG8mJihkZz1iKSxjKTooZC5mcm9tIT1kLnRvJiYoZGc9YyksYik7Yj1jfX1yZXR1cm4gYn1mdW5jdGlvbiBpZSh4LGEsYixjKXtpZighYylyZXR1cm4gYStiO2Rve2ErPWJ9d2hpbGUoYT4wJiZPZCh4LnRleHQuY2hhckF0KGEpKSk7cmV0dXJuIGF9ZnVuY3Rpb24gamUoeCxhLGIsYyl7dmFyIGQ9Y2QoeCk7aWYoIWQpcmV0dXJuIGtlKHgsYSxiLGMpO2Zvcih2YXIgZT1oZShkLGEpLGY9ZFtlXSxnPWllKHgsYSxmLmxldmVsJTI/LWI6YixjKTs7KXtpZihnPmYuZnJvbSYmZzxmLnRvKXJldHVybiBnO2lmKGc9PWYuZnJvbXx8Zz09Zi50bylyZXR1cm4gaGUoZCxnKT09ZT9nOmI+MD09KGY9ZFtlKz1iXSkubGV2ZWwlMj9mLnRvOmYuZnJvbTtpZighKGY9ZFtlKz1iXSkpcmV0dXJuIG51bGw7Zz1iPjA9PWYubGV2ZWwlMj9pZSh4LGYudG8sLTEsYyk6aWUoeCxmLmZyb20sMSxjKX19ZnVuY3Rpb24ga2UoeCxhLGIsYyl7dmFyIGQ9YStiO2lmKGMpZm9yKDtkPjAmJk9kKHgudGV4dC5jaGFyQXQoZCkpOylkKz1iO3JldHVybiAwPmR8fGQ+eC50ZXh0Lmxlbmd0aD9udWxsOmR9dmFyIGxlPW5hdmlnYXRvci51c2VyQWdlbnQsbWU9bmF2aWdhdG9yLnBsYXRmb3JtLG5lPS9nZWNrb1wvXGQvaS50ZXN0KGxlKSxvZT0vTVNJRSBcZC8udGVzdChsZSkscGU9L1RyaWRlbnRcLyg/Ols3LTldfFxkezIsfSlcLi4qcnY6KFxkKykvLmV4ZWMobGUpLHFlPW9lfHxwZSxyZT1xZSYmKG9lP2RvY3VtZW50LmRvY3VtZW50TW9kZXx8NjpwZVsxXSksc2U9L1dlYktpdFwvLy50ZXN0KGxlKSx0ZT1zZSYmL1F0XC9cZCtcLlxkKy8udGVzdChsZSksdWU9L0Nocm9tZVwvLy50ZXN0KGxlKSx2ZT0vT3BlcmFcLy8udGVzdChsZSksd2U9L0FwcGxlIENvbXB1dGVyLy50ZXN0KG5hdmlnYXRvci52ZW5kb3IpLHllPS9NYWMgT1MgWCAxXGRcRChbOC05XXxcZFxkKVxELy50ZXN0KGxlKSx6ZT0vUGhhbnRvbUpTLy50ZXN0KGxlKSxBZT0vQXBwbGVXZWJLaXQvLnRlc3QobGUpJiYvTW9iaWxlXC9cdysvLnRlc3QobGUpLEJlPUFlfHwvQW5kcm9pZHx3ZWJPU3xCbGFja0JlcnJ5fE9wZXJhIE1pbml8T3BlcmEgTW9iaXxJRU1vYmlsZS9pLnRlc3QobGUpLENlPUFlfHwvTWFjLy50ZXN0KG1lKSxEZT0vd2luL2kudGVzdChtZSksRWU9dmUmJmxlLm1hdGNoKC9WZXJzaW9uXC8oXGQqXC5cZCopLyk7RWUmJihFZT1OdW1iZXIoRWVbMV0pKSxFZSYmRWU+PTE1JiYodmU9ITEsc2U9ITApO3ZhciBGZT1DZSYmKHRlfHx2ZSYmKG51bGw9PUVlfHwxMi4xMT5FZSkpLEdlPW5lfHxxZSYmcmU+PTksSGU9ITEsSWU9ITE7by5wcm90b3R5cGU9S2Qoe3VwZGF0ZTpmdW5jdGlvbih4KXt2YXIgYT14LnNjcm9sbFdpZHRoPnguY2xpZW50V2lkdGgrMSxiPXguc2Nyb2xsSGVpZ2h0PnguY2xpZW50SGVpZ2h0KzEsYz14Lm5hdGl2ZUJhcldpZHRoO2lmKGIpe3RoaXMudmVydC5zdHlsZS5kaXNwbGF5PSJibG9jayIsdGhpcy52ZXJ0LnN0eWxlLmJvdHRvbT1hP2MrInB4IjoiMCI7dmFyIGQ9eC52aWV3SGVpZ2h0LShhP2M6MCk7dGhpcy52ZXJ0LmZpcnN0Q2hpbGQuc3R5bGUuaGVpZ2h0PU1hdGgubWF4KDAseC5zY3JvbGxIZWlnaHQteC5jbGllbnRIZWlnaHQrZCkrInB4In1lbHNlIHRoaXMudmVydC5zdHlsZS5kaXNwbGF5PSIiLHRoaXMudmVydC5maXJzdENoaWxkLnN0eWxlLmhlaWdodD0iMCI7aWYoYSl7dGhpcy5ob3Jpei5zdHlsZS5kaXNwbGF5PSJibG9jayIsdGhpcy5ob3Jpei5zdHlsZS5yaWdodD1iP2MrInB4IjoiMCIsdGhpcy5ob3Jpei5zdHlsZS5sZWZ0PXguYmFyTGVmdCsicHgiO3ZhciBlPXgudmlld1dpZHRoLXguYmFyTGVmdC0oYj9jOjApO3RoaXMuaG9yaXouZmlyc3RDaGlsZC5zdHlsZS53aWR0aD14LnNjcm9sbFdpZHRoLXguY2xpZW50V2lkdGgrZSsicHgifWVsc2UgdGhpcy5ob3Jpei5zdHlsZS5kaXNwbGF5PSIiLHRoaXMuaG9yaXouZmlyc3RDaGlsZC5zdHlsZS53aWR0aD0iMCI7cmV0dXJuIXRoaXMuY2hlY2tlZFplcm9XaWR0aCYmeC5jbGllbnRIZWlnaHQ+MCYmKDA9PWMmJnRoaXMuemVyb1dpZHRoSGFjaygpLHRoaXMuY2hlY2tlZFplcm9XaWR0aD0hMCkse3JpZ2h0OmI/YzowLGJvdHRvbTphP2M6MH19LHNldFNjcm9sbExlZnQ6ZnVuY3Rpb24oeCl7dGhpcy5ob3Jpei5zY3JvbGxMZWZ0IT14JiYodGhpcy5ob3Jpei5zY3JvbGxMZWZ0PXgpLHRoaXMuZGlzYWJsZUhvcml6JiZ0aGlzLmVuYWJsZVplcm9XaWR0aEJhcih0aGlzLmhvcml6LHRoaXMuZGlzYWJsZUhvcml6KX0sc2V0U2Nyb2xsVG9wOmZ1bmN0aW9uKHgpe3RoaXMudmVydC5zY3JvbGxUb3AhPXgmJih0aGlzLnZlcnQuc2Nyb2xsVG9wPXgpLHRoaXMuZGlzYWJsZVZlcnQmJnRoaXMuZW5hYmxlWmVyb1dpZHRoQmFyKHRoaXMudmVydCx0aGlzLmRpc2FibGVWZXJ0KX0semVyb1dpZHRoSGFjazpmdW5jdGlvbigpe3ZhciB4PUNlJiYheWU/IjEycHgiOiIxOHB4Ijt0aGlzLmhvcml6LnN0eWxlLmhlaWdodD10aGlzLnZlcnQuc3R5bGUud2lkdGg9eCx0aGlzLmhvcml6LnN0eWxlLnBvaW50ZXJFdmVudHM9dGhpcy52ZXJ0LnN0eWxlLnBvaW50ZXJFdmVudHM9Im5vbmUiLHRoaXMuZGlzYWJsZUhvcml6PW5ldyBEZCx0aGlzLmRpc2FibGVWZXJ0PW5ldyBEZH0sZW5hYmxlWmVyb1dpZHRoQmFyOmZ1bmN0aW9uKHgsYSl7ZnVuY3Rpb24gYigpe3ZhciBjPXguZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7ZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChjLmxlZnQrMSxjLmJvdHRvbS0xKSE9eD94LnN0eWxlLnBvaW50ZXJFdmVudHM9Im5vbmUiOmEuc2V0KDFlMyxiKX14LnN0eWxlLnBvaW50ZXJFdmVudHM9ImF1dG8iLGEuc2V0KDFlMyxiKX0sY2xlYXI6ZnVuY3Rpb24oKXt2YXIgeD10aGlzLmhvcml6LnBhcmVudE5vZGU7eC5yZW1vdmVDaGlsZCh0aGlzLmhvcml6KSx4LnJlbW92ZUNoaWxkKHRoaXMudmVydCl9fSxvLnByb3RvdHlwZSkscC5wcm90b3R5cGU9S2Qoe3VwZGF0ZTpmdW5jdGlvbigpe3JldHVybntib3R0b206MCxyaWdodDowfX0sc2V0U2Nyb2xsTGVmdDpmdW5jdGlvbigpe30sc2V0U2Nyb2xsVG9wOmZ1bmN0aW9uKCl7fSxjbGVhcjpmdW5jdGlvbigpe319LHAucHJvdG90eXBlKSx4LnNjcm9sbGJhck1vZGVsPXtuYXRpdmU6byxudWxsOnB9LHoucHJvdG90eXBlLnNpZ25hbD1mdW5jdGlvbih4LGEpe0JkKHgsYSkmJnRoaXMuZXZlbnRzLnB1c2goYXJndW1lbnRzKX0sei5wcm90b3R5cGUuZmluaXNoPWZ1bmN0aW9uKCl7Zm9yKHZhciB4PTA7eDx0aGlzLmV2ZW50cy5sZW5ndGg7eCsrKUZmLmFwcGx5KG51bGwsdGhpcy5ldmVudHNbeF0pfTt2YXIgSmU9eC5Qb3M9ZnVuY3Rpb24oeCxhKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIEplPyh0aGlzLmxpbmU9eCx2b2lkKHRoaXMuY2g9YSkpOm5ldyBKZSh4LGEpfSxLZT14LmNtcFBvcz1mdW5jdGlvbih4LGEpe3JldHVybiB4LmxpbmUtYS5saW5lfHx4LmNoLWEuY2h9LExlPW51bGw7YngucHJvdG90eXBlPUtkKHtpbml0OmZ1bmN0aW9uKHgpe2Z1bmN0aW9uIGEoeCl7aWYoYy5zb21ldGhpbmdTZWxlY3RlZCgpKUxlPWMuZ2V0U2VsZWN0aW9ucygpLGIuaW5hY2N1cmF0ZVNlbGVjdGlvbiYmKGIucHJldklucHV0PSIiLGIuaW5hY2N1cmF0ZVNlbGVjdGlvbj0hMSxlLnZhbHVlPUxlLmpvaW4oIlxuIiksUGYoZSkpO2Vsc2V7aWYoIWMub3B0aW9ucy5saW5lV2lzZUNvcHlDdXQpcmV0dXJuO3ZhciBhPXh4KGMpO0xlPWEudGV4dCwiY3V0Ij09eC50eXBlP2Muc2V0U2VsZWN0aW9ucyhhLnJhbmdlcyxudWxsLEpmKTooYi5wcmV2SW5wdXQ9IiIsZS52YWx1ZT1hLnRleHQuam9pbigiXG4iKSxQZihlKSl9ImN1dCI9PXgudHlwZSYmKGMuc3RhdGUuY3V0SW5jb21pbmc9ITApfXZhciBiPXRoaXMsYz10aGlzLmNtLGQ9dGhpcy53cmFwcGVyPWN4KCksZT10aGlzLnRleHRhcmVhPWQuZmlyc3RDaGlsZDt4LndyYXBwZXIuaW5zZXJ0QmVmb3JlKGQseC53cmFwcGVyLmZpcnN0Q2hpbGQpLEFlJiYoZS5zdHlsZS53aWR0aD0iMHB4IiksQ2YoZSwiaW5wdXQiLGZ1bmN0aW9uKCl7cWUmJnJlPj05JiZiLmhhc1NlbGVjdGlvbiYmKGIuaGFzU2VsZWN0aW9uPW51bGwpLGIucG9sbCgpfSksQ2YoZSwicGFzdGUiLGZ1bmN0aW9uKHgpe3JldHVybiEhJCh4LGMpfHwoYy5zdGF0ZS5wYXN0ZUluY29taW5nPSEwLHZvaWQgYi5mYXN0UG9sbCgpKX0pLENmKGUsImN1dCIsYSksQ2YoZSwiY29weSIsYSksQ2YoeC5zY3JvbGxlciwicGFzdGUiLGZ1bmN0aW9uKGEpe1RhKHgsYSl8fChjLnN0YXRlLnBhc3RlSW5jb21pbmc9ITAsYi5mb2N1cygpKX0pLENmKHgubGluZVNwYWNlLCJzZWxlY3RzdGFydCIsZnVuY3Rpb24oYSl7VGEoeCxhKXx8emYoYSl9KSxDZihlLCJjb21wb3NpdGlvbnN0YXJ0IixmdW5jdGlvbigpe3ZhciB4PWMuZ2V0Q3Vyc29yKCJmcm9tIik7Yi5jb21wb3NpbmcmJmIuY29tcG9zaW5nLnJhbmdlLmNsZWFyKCksYi5jb21wb3Npbmc9e3N0YXJ0OngscmFuZ2U6Yy5tYXJrVGV4dCh4LGMuZ2V0Q3Vyc29yKCJ0byIpLHtjbGFzc05hbWU6IkNvZGVNaXJyb3ItY29tcG9zaW5nIn0pfX0pLENmKGUsImNvbXBvc2l0aW9uZW5kIixmdW5jdGlvbigpe2IuY29tcG9zaW5nJiYoYi5wb2xsKCksYi5jb21wb3NpbmcucmFuZ2UuY2xlYXIoKSxiLmNvbXBvc2luZz1udWxsKX0pfSxwcmVwYXJlU2VsZWN0aW9uOmZ1bmN0aW9uKCl7dmFyIHg9dGhpcy5jbSxhPXguZGlzcGxheSxiPXguZG9jLGM9SngoeCk7aWYoeC5vcHRpb25zLm1vdmVJbnB1dFdpdGhDdXJzb3Ipe3ZhciBkPW1hKHgsYi5zZWwucHJpbWFyeSgpLmhlYWQsImRpdiIpLGU9YS53cmFwcGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGY9YS5saW5lRGl2LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2MudGVUb3A9TWF0aC5tYXgoMCxNYXRoLm1pbihhLndyYXBwZXIuY2xpZW50SGVpZ2h0LTEwLGQudG9wK2YudG9wLWUudG9wKSksYy50ZUxlZnQ9TWF0aC5tYXgoMCxNYXRoLm1pbihhLndyYXBwZXIuY2xpZW50V2lkdGgtMTAsZC5sZWZ0K2YubGVmdC1lLmxlZnQpKX1yZXR1cm4gY30sc2hvd1NlbGVjdGlvbjpmdW5jdGlvbih4KXt2YXIgYT10aGlzLmNtLmRpc3BsYXk7UmQoYS5jdXJzb3JEaXYseC5jdXJzb3JzKSxSZChhLnNlbGVjdGlvbkRpdix4LnNlbGVjdGlvbiksbnVsbCE9eC50ZVRvcCYmKHRoaXMud3JhcHBlci5zdHlsZS50b3A9eC50ZVRvcCsicHgiLHRoaXMud3JhcHBlci5zdHlsZS5sZWZ0PXgudGVMZWZ0KyJweCIpfSxyZXNldDpmdW5jdGlvbih4KXtpZighdGhpcy5jb250ZXh0TWVudVBlbmRpbmcpe3ZhciBhLGIsYz10aGlzLmNtLGQ9Yy5kb2M7aWYoYy5zb21ldGhpbmdTZWxlY3RlZCgpKXt0aGlzLnByZXZJbnB1dD0iIjt2YXIgZT1kLnNlbC5wcmltYXJ5KCksZj0oYT1hZyYmKGUudG8oKS5saW5lLWUuZnJvbSgpLmxpbmU+MTAwfHwoYj1jLmdldFNlbGVjdGlvbigpKS5sZW5ndGg+MWUzKSk/Ii0iOmJ8fGMuZ2V0U2VsZWN0aW9uKCk7dGhpcy50ZXh0YXJlYS52YWx1ZT1mLGMuc3RhdGUuZm9jdXNlZCYmUGYodGhpcy50ZXh0YXJlYSkscWUmJnJlPj05JiYodGhpcy5oYXNTZWxlY3Rpb249Zil9ZWxzZSB4fHwodGhpcy5wcmV2SW5wdXQ9dGhpcy50ZXh0YXJlYS52YWx1ZT0iIixxZSYmcmU+PTkmJih0aGlzLmhhc1NlbGVjdGlvbj1udWxsKSk7dGhpcy5pbmFjY3VyYXRlU2VsZWN0aW9uPWF9fSxnZXRGaWVsZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnRleHRhcmVhfSxzdXBwb3J0c1RvdWNoOmZ1bmN0aW9uKCl7cmV0dXJuITF9LGZvY3VzOmZ1bmN0aW9uKCl7aWYoIm5vY3Vyc29yIiE9dGhpcy5jbS5vcHRpb25zLnJlYWRPbmx5JiYoIUJlfHxTZCgpIT10aGlzLnRleHRhcmVhKSl0cnl7dGhpcy50ZXh0YXJlYS5mb2N1cygpfWNhdGNoKHgpe319LGJsdXI6ZnVuY3Rpb24oKXt0aGlzLnRleHRhcmVhLmJsdXIoKX0scmVzZXRQb3NpdGlvbjpmdW5jdGlvbigpe3RoaXMud3JhcHBlci5zdHlsZS50b3A9dGhpcy53cmFwcGVyLnN0eWxlLmxlZnQ9MH0scmVjZWl2ZWRGb2N1czpmdW5jdGlvbigpe3RoaXMuc2xvd1BvbGwoKX0sc2xvd1BvbGw6ZnVuY3Rpb24oKXt2YXIgeD10aGlzO3gucG9sbGluZ0Zhc3R8fHgucG9sbGluZy5zZXQodGhpcy5jbS5vcHRpb25zLnBvbGxJbnRlcnZhbCxmdW5jdGlvbigpe3gucG9sbCgpLHguY20uc3RhdGUuZm9jdXNlZCYmeC5zbG93UG9sbCgpfSl9LGZhc3RQb2xsOmZ1bmN0aW9uKCl7ZnVuY3Rpb24geCgpe2IucG9sbCgpfHxhPyhiLnBvbGxpbmdGYXN0PSExLGIuc2xvd1BvbGwoKSk6KGE9ITAsYi5wb2xsaW5nLnNldCg2MCx4KSl9dmFyIGE9ITEsYj10aGlzO2IucG9sbGluZ0Zhc3Q9ITAsYi5wb2xsaW5nLnNldCgyMCx4KX0scG9sbDpmdW5jdGlvbigpe3ZhciB4PXRoaXMuY20sYT10aGlzLnRleHRhcmVhLGI9dGhpcy5wcmV2SW5wdXQ7aWYodGhpcy5jb250ZXh0TWVudVBlbmRpbmd8fCF4LnN0YXRlLmZvY3VzZWR8fHhnKGEpJiYhYiYmIXRoaXMuY29tcG9zaW5nfHx4LmlzUmVhZE9ubHkoKXx8eC5vcHRpb25zLmRpc2FibGVJbnB1dHx8eC5zdGF0ZS5rZXlTZXEpcmV0dXJuITE7dmFyIGM9YS52YWx1ZTtpZihjPT1iJiYheC5zb21ldGhpbmdTZWxlY3RlZCgpKXJldHVybiExO2lmKHFlJiZyZT49OSYmdGhpcy5oYXNTZWxlY3Rpb249PT1jfHxDZSYmL1tcdWY3MDAtXHVmN2ZmXS8udGVzdChjKSlyZXR1cm4geC5kaXNwbGF5LmlucHV0LnJlc2V0KCksITE7aWYoeC5kb2Muc2VsPT14LmRpc3BsYXkuc2VsRm9yQ29udGV4dE1lbnUpe3ZhciBkPWMuY2hhckNvZGVBdCgwKTtpZig4MjAzIT1kfHxifHwoYj0i4oCLIiksODY2Nj09ZClyZXR1cm4gdGhpcy5yZXNldCgpLHRoaXMuY20uZXhlY0NvbW1hbmQoInVuZG8iKX1mb3IodmFyIGU9MCxmPU1hdGgubWluKGIubGVuZ3RoLGMubGVuZ3RoKTtmPmUmJmIuY2hhckNvZGVBdChlKT09Yy5jaGFyQ29kZUF0KGUpOykrK2U7dmFyIGc9dGhpcztyZXR1cm4gRGEoeCxmdW5jdGlvbigpe1ooeCxjLnNsaWNlKGUpLGIubGVuZ3RoLWUsbnVsbCxnLmNvbXBvc2luZz8iKmNvbXBvc2UiOm51bGwpLGMubGVuZ3RoPjFlM3x8Yy5pbmRleE9mKCJcbiIpPi0xP2EudmFsdWU9Zy5wcmV2SW5wdXQ9IiI6Zy5wcmV2SW5wdXQ9YyxnLmNvbXBvc2luZyYmKGcuY29tcG9zaW5nLnJhbmdlLmNsZWFyKCksZy5jb21wb3NpbmcucmFuZ2U9eC5tYXJrVGV4dChnLmNvbXBvc2luZy5zdGFydCx4LmdldEN1cnNvcigidG8iKSx7Y2xhc3NOYW1lOiJDb2RlTWlycm9yLWNvbXBvc2luZyJ9KSl9KSwhMH0sZW5zdXJlUG9sbGVkOmZ1bmN0aW9uKCl7dGhpcy5wb2xsaW5nRmFzdCYmdGhpcy5wb2xsKCkmJih0aGlzLnBvbGxpbmdGYXN0PSExKX0sb25LZXlQcmVzczpmdW5jdGlvbigpe3FlJiZyZT49OSYmKHRoaXMuaGFzU2VsZWN0aW9uPW51bGwpLHRoaXMuZmFzdFBvbGwoKX0sb25Db250ZXh0TWVudTpmdW5jdGlvbih4KXtmdW5jdGlvbiBhKCl7aWYobnVsbCE9Zi5zZWxlY3Rpb25TdGFydCl7dmFyIHg9ZC5zb21ldGhpbmdTZWxlY3RlZCgpLGE9IuKAiyIrKHg/Zi52YWx1ZToiIik7Zi52YWx1ZT0i4oeaIixmLnZhbHVlPWEsYy5wcmV2SW5wdXQ9eD8iIjoi4oCLIixmLnNlbGVjdGlvblN0YXJ0PTEsZi5zZWxlY3Rpb25FbmQ9YS5sZW5ndGgsZS5zZWxGb3JDb250ZXh0TWVudT1kLmRvYy5zZWx9fWZ1bmN0aW9uIGIoKXtpZihjLmNvbnRleHRNZW51UGVuZGluZz0hMSxjLndyYXBwZXIuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIixmLnN0eWxlLmNzc1RleHQ9aSxxZSYmOT5yZSYmZS5zY3JvbGxiYXJzLnNldFNjcm9sbFRvcChlLnNjcm9sbGVyLnNjcm9sbFRvcD1oKSxudWxsIT1mLnNlbGVjdGlvblN0YXJ0KXsoIXFlfHxxZSYmOT5yZSkmJmEoKTt2YXIgeD0wLGI9ZnVuY3Rpb24oKXtlLnNlbEZvckNvbnRleHRNZW51PT1kLmRvYy5zZWwmJjA9PWYuc2VsZWN0aW9uU3RhcnQmJmYuc2VsZWN0aW9uRW5kPjAmJiLigIsiPT1jLnByZXZJbnB1dD9FYShkLGdmLnNlbGVjdEFsbCkoZCk6eCsrPDEwP2UuZGV0ZWN0aW5nU2VsZWN0QWxsPXNldFRpbWVvdXQoYiw1MDApOmUuaW5wdXQucmVzZXQoKX07ZS5kZXRlY3RpbmdTZWxlY3RBbGw9c2V0VGltZW91dChiLDIwMCl9fXZhciBjPXRoaXMsZD1jLmNtLGU9ZC5kaXNwbGF5LGY9Yy50ZXh0YXJlYSxnPVVhKGQseCksaD1lLnNjcm9sbGVyLnNjcm9sbFRvcDtpZihnJiYhdmUpe2Qub3B0aW9ucy5yZXNldFNlbGVjdGlvbk9uQ29udGV4dE1lbnUmJi0xPT1kLmRvYy5zZWwuY29udGFpbnMoZykmJkVhKGQsQXgpKGQuZG9jLG14KGcpLEpmKTt2YXIgaT1mLnN0eWxlLmNzc1RleHQ7aWYoYy53cmFwcGVyLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsZi5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjogZml4ZWQ7IHdpZHRoOiAzMHB4OyBoZWlnaHQ6IDMwcHg7IHRvcDogIisoeC5jbGllbnRZLTUpKyJweDsgbGVmdDogIisoeC5jbGllbnRYLTUpKyJweDsgei1pbmRleDogMTAwMDsgYmFja2dyb3VuZDogIisocWU/InJnYmEoMjU1LCAyNTUsIDI1NSwgLjA1KSI6InRyYW5zcGFyZW50IikrIjsgb3V0bGluZTogbm9uZTsgYm9yZGVyLXdpZHRoOiAwOyBvdXRsaW5lOiBub25lOyBvdmVyZmxvdzogaGlkZGVuOyBvcGFjaXR5OiAuMDU7IGZpbHRlcjogYWxwaGEob3BhY2l0eT01KTsiLHNlKXZhciBqPXdpbmRvdy5zY3JvbGxZO2lmKGUuaW5wdXQuZm9jdXMoKSxzZSYmd2luZG93LnNjcm9sbFRvKG51bGwsaiksZS5pbnB1dC5yZXNldCgpLGQuc29tZXRoaW5nU2VsZWN0ZWQoKXx8KGYudmFsdWU9Yy5wcmV2SW5wdXQ9IiAiKSxjLmNvbnRleHRNZW51UGVuZGluZz0hMCxlLnNlbEZvckNvbnRleHRNZW51PWQuZG9jLnNlbCxjbGVhclRpbWVvdXQoZS5kZXRlY3RpbmdTZWxlY3RBbGwpLHFlJiZyZT49OSYmYSgpLEdlKXtCZih4KTt2YXIgaz1mdW5jdGlvbigpe0VmKHdpbmRvdywibW91c2V1cCIsayksc2V0VGltZW91dChiLDIwKX07Q2Yod2luZG93LCJtb3VzZXVwIixrKX1lbHNlIHNldFRpbWVvdXQoYiw1MCl9fSxyZWFkT25seUNoYW5nZWQ6ZnVuY3Rpb24oeCl7eHx8dGhpcy5yZXNldCgpfSxzZXRVbmVkaXRhYmxlOklkLG5lZWRzQ29udGVudEF0dHJpYnV0ZTohMX0sYngucHJvdG90eXBlKSxkeC5wcm90b3R5cGU9S2Qoe2luaXQ6ZnVuY3Rpb24oeCl7ZnVuY3Rpb24gYSh4KXtpZihjLnNvbWV0aGluZ1NlbGVjdGVkKCkpTGU9Yy5nZXRTZWxlY3Rpb25zKCksImN1dCI9PXgudHlwZSYmYy5yZXBsYWNlU2VsZWN0aW9uKCIiLG51bGwsImN1dCIpO2Vsc2V7aWYoIWMub3B0aW9ucy5saW5lV2lzZUNvcHlDdXQpcmV0dXJuO3ZhciBhPXh4KGMpO0xlPWEudGV4dCwiY3V0Ij09eC50eXBlJiZjLm9wZXJhdGlvbihmdW5jdGlvbigpe2Muc2V0U2VsZWN0aW9ucyhhLnJhbmdlcywwLEpmKSxjLnJlcGxhY2VTZWxlY3Rpb24oIiIsbnVsbCwiY3V0Iil9KX1pZih4LmNsaXBib2FyZERhdGEmJiFBZSl4LnByZXZlbnREZWZhdWx0KCkseC5jbGlwYm9hcmREYXRhLmNsZWFyRGF0YSgpLHguY2xpcGJvYXJkRGF0YS5zZXREYXRhKCJ0ZXh0L3BsYWluIixMZS5qb2luKCJcbiIpKTtlbHNle3ZhciBiPWN4KCksZD1iLmZpcnN0Q2hpbGQ7Yy5kaXNwbGF5LmxpbmVTcGFjZS5pbnNlcnRCZWZvcmUoYixjLmRpc3BsYXkubGluZVNwYWNlLmZpcnN0Q2hpbGQpLGQudmFsdWU9TGUuam9pbigiXG4iKTt2YXIgZT1kb2N1bWVudC5hY3RpdmVFbGVtZW50O1BmKGQpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtjLmRpc3BsYXkubGluZVNwYWNlLnJlbW92ZUNoaWxkKGIpLGUuZm9jdXMoKX0sNTApfX12YXIgYj10aGlzLGM9Yi5jbSxkPWIuZGl2PXgubGluZURpdjtheChkKSxDZihkLCJwYXN0ZSIsZnVuY3Rpb24oeCl7JCh4LGMpfSksQ2YoZCwiY29tcG9zaXRpb25zdGFydCIsZnVuY3Rpb24oeCl7dmFyIGE9eC5kYXRhO2lmKGIuY29tcG9zaW5nPXtzZWw6Yy5kb2Muc2VsLGRhdGE6YSxzdGFydERhdGE6YX0sYSl7dmFyIGQ9Yy5kb2Muc2VsLnByaW1hcnkoKSxlPWMuZ2V0TGluZShkLmhlYWQubGluZSkuaW5kZXhPZihhLE1hdGgubWF4KDAsZC5oZWFkLmNoLWEubGVuZ3RoKSk7ZT4tMSYmZTw9ZC5oZWFkLmNoJiYoYi5jb21wb3Npbmcuc2VsPW14KEplKGQuaGVhZC5saW5lLGUpLEplKGQuaGVhZC5saW5lLGUrYS5sZW5ndGgpKSl9fSksQ2YoZCwiY29tcG9zaXRpb251cGRhdGUiLGZ1bmN0aW9uKHgpe2IuY29tcG9zaW5nLmRhdGE9eC5kYXRhfSksQ2YoZCwiY29tcG9zaXRpb25lbmQiLGZ1bmN0aW9uKHgpe3ZhciBhPWIuY29tcG9zaW5nO2EmJih4LmRhdGE9PWEuc3RhcnREYXRhfHwvXHUyMDBiLy50ZXN0KHguZGF0YSl8fChhLmRhdGE9eC5kYXRhKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YS5oYW5kbGVkfHxiLmFwcGx5Q29tcG9zaXRpb24oYSksYi5jb21wb3Npbmc9PWEmJihiLmNvbXBvc2luZz1udWxsKX0sNTApKX0pLENmKGQsInRvdWNoc3RhcnQiLGZ1bmN0aW9uKCl7Yi5mb3JjZUNvbXBvc2l0aW9uRW5kKCl9KSxDZihkLCJpbnB1dCIsZnVuY3Rpb24oKXtiLmNvbXBvc2luZ3x8KGMuaXNSZWFkT25seSgpfHwhYi5wb2xsQ29udGVudCgpKSYmRGEoYi5jbSxmdW5jdGlvbigpe0phKGMpfSl9KSxDZihkLCJjb3B5IixhKSxDZihkLCJjdXQiLGEpfSxwcmVwYXJlU2VsZWN0aW9uOmZ1bmN0aW9uKCl7dmFyIHg9SngodGhpcy5jbSwhMSk7cmV0dXJuIHguZm9jdXM9dGhpcy5jbS5zdGF0ZS5mb2N1c2VkLHh9LHNob3dTZWxlY3Rpb246ZnVuY3Rpb24oeCl7eCYmdGhpcy5jbS5kaXNwbGF5LnZpZXcubGVuZ3RoJiYoeC5mb2N1cyYmdGhpcy5zaG93UHJpbWFyeVNlbGVjdGlvbigpLHRoaXMuc2hvd011bHRpcGxlU2VsZWN0aW9ucyh4KSl9LHNob3dQcmltYXJ5U2VsZWN0aW9uOmZ1bmN0aW9uKCl7dmFyIHg9d2luZG93LmdldFNlbGVjdGlvbigpLGE9dGhpcy5jbS5kb2Muc2VsLnByaW1hcnkoKSxiPWd4KHRoaXMuY20seC5hbmNob3JOb2RlLHguYW5jaG9yT2Zmc2V0KSxjPWd4KHRoaXMuY20seC5mb2N1c05vZGUseC5mb2N1c09mZnNldCk7aWYoIWJ8fGIuYmFkfHwhY3x8Yy5iYWR8fDAhPUtlKFgoYixjKSxhLmZyb20oKSl8fDAhPUtlKFcoYixjKSxhLnRvKCkpKXt2YXIgZD1leCh0aGlzLmNtLGEuZnJvbSgpKSxlPWV4KHRoaXMuY20sYS50bygpKTtpZihkfHxlKXt2YXIgZj10aGlzLmNtLmRpc3BsYXkudmlldyxnPXgucmFuZ2VDb3VudCYmeC5nZXRSYW5nZUF0KDApO2lmKGQpe2lmKCFlKXt2YXIgaD1mW2YubGVuZ3RoLTFdLm1lYXN1cmUsaT1oLm1hcHM/aC5tYXBzW2gubWFwcy5sZW5ndGgtMV06aC5tYXA7ZT17bm9kZTppW2kubGVuZ3RoLTFdLG9mZnNldDppW2kubGVuZ3RoLTJdLWlbaS5sZW5ndGgtM119fX1lbHNlIGQ9e25vZGU6ZlswXS5tZWFzdXJlLm1hcFsyXSxvZmZzZXQ6MH07dHJ5e3ZhciBqPVFmKGQubm9kZSxkLm9mZnNldCxlLm9mZnNldCxlLm5vZGUpfWNhdGNoKHgpe31qJiYoIW5lJiZ0aGlzLmNtLnN0YXRlLmZvY3VzZWQ/KHguY29sbGFwc2UoZC5ub2RlLGQub2Zmc2V0KSxqLmNvbGxhcHNlZHx8eC5hZGRSYW5nZShqKSk6KHgucmVtb3ZlQWxsUmFuZ2VzKCkseC5hZGRSYW5nZShqKSksZyYmbnVsbD09eC5hbmNob3JOb2RlP3guYWRkUmFuZ2UoZyk6bmUmJnRoaXMuc3RhcnRHcmFjZVBlcmlvZCgpKSx0aGlzLnJlbWVtYmVyU2VsZWN0aW9uKCl9fX0sc3RhcnRHcmFjZVBlcmlvZDpmdW5jdGlvbigpe3ZhciB4PXRoaXM7Y2xlYXJUaW1lb3V0KHRoaXMuZ3JhY2VQZXJpb2QpLHRoaXMuZ3JhY2VQZXJpb2Q9c2V0VGltZW91dChmdW5jdGlvbigpe3guZ3JhY2VQZXJpb2Q9ITEseC5zZWxlY3Rpb25DaGFuZ2VkKCkmJnguY20ub3BlcmF0aW9uKGZ1bmN0aW9uKCl7eC5jbS5jdXJPcC5zZWxlY3Rpb25DaGFuZ2VkPSEwfSl9LDIwKX0sc2hvd011bHRpcGxlU2VsZWN0aW9uczpmdW5jdGlvbih4KXtSZCh0aGlzLmNtLmRpc3BsYXkuY3Vyc29yRGl2LHguY3Vyc29ycyksUmQodGhpcy5jbS5kaXNwbGF5LnNlbGVjdGlvbkRpdix4LnNlbGVjdGlvbil9LHJlbWVtYmVyU2VsZWN0aW9uOmZ1bmN0aW9uKCl7dmFyIHg9d2luZG93LmdldFNlbGVjdGlvbigpO3RoaXMubGFzdEFuY2hvck5vZGU9eC5hbmNob3JOb2RlLHRoaXMubGFzdEFuY2hvck9mZnNldD14LmFuY2hvck9mZnNldCx0aGlzLmxhc3RGb2N1c05vZGU9eC5mb2N1c05vZGUsdGhpcy5sYXN0Rm9jdXNPZmZzZXQ9eC5mb2N1c09mZnNldH0sc2VsZWN0aW9uSW5FZGl0b3I6ZnVuY3Rpb24oKXt2YXIgeD13aW5kb3cuZ2V0U2VsZWN0aW9uKCk7aWYoIXgucmFuZ2VDb3VudClyZXR1cm4hMTt2YXIgYT14LmdldFJhbmdlQXQoMCkuY29tbW9uQW5jZXN0b3JDb250YWluZXI7cmV0dXJuIFVmKHRoaXMuZGl2LGEpfSxmb2N1czpmdW5jdGlvbigpeyJub2N1cnNvciIhPXRoaXMuY20ub3B0aW9ucy5yZWFkT25seSYmdGhpcy5kaXYuZm9jdXMoKX0sYmx1cjpmdW5jdGlvbigpe3RoaXMuZGl2LmJsdXIoKX0sZ2V0RmllbGQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kaXZ9LHN1cHBvcnRzVG91Y2g6ZnVuY3Rpb24oKXtyZXR1cm4hMH0scmVjZWl2ZWRGb2N1czpmdW5jdGlvbigpe2Z1bmN0aW9uIHgoKXthLmNtLnN0YXRlLmZvY3VzZWQmJihhLnBvbGxTZWxlY3Rpb24oKSxhLnBvbGxpbmcuc2V0KGEuY20ub3B0aW9ucy5wb2xsSW50ZXJ2YWwseCkpfXZhciBhPXRoaXM7dGhpcy5zZWxlY3Rpb25JbkVkaXRvcigpP3RoaXMucG9sbFNlbGVjdGlvbigpOkRhKHRoaXMuY20sZnVuY3Rpb24oKXthLmNtLmN1ck9wLnNlbGVjdGlvbkNoYW5nZWQ9ITB9KSx0aGlzLnBvbGxpbmcuc2V0KHRoaXMuY20ub3B0aW9ucy5wb2xsSW50ZXJ2YWwseCl9LHNlbGVjdGlvbkNoYW5nZWQ6ZnVuY3Rpb24oKXt2YXIgeD13aW5kb3cuZ2V0U2VsZWN0aW9uKCk7cmV0dXJuIHguYW5jaG9yTm9kZSE9dGhpcy5sYXN0QW5jaG9yTm9kZXx8eC5hbmNob3JPZmZzZXQhPXRoaXMubGFzdEFuY2hvck9mZnNldHx8eC5mb2N1c05vZGUhPXRoaXMubGFzdEZvY3VzTm9kZXx8eC5mb2N1c09mZnNldCE9dGhpcy5sYXN0Rm9jdXNPZmZzZXR9LHBvbGxTZWxlY3Rpb246ZnVuY3Rpb24oKXtpZighdGhpcy5jb21wb3NpbmcmJiF0aGlzLmdyYWNlUGVyaW9kJiZ0aGlzLnNlbGVjdGlvbkNoYW5nZWQoKSl7dmFyIHg9d2luZG93LmdldFNlbGVjdGlvbigpLGE9dGhpcy5jbTt0aGlzLnJlbWVtYmVyU2VsZWN0aW9uKCk7dmFyIGI9Z3goYSx4LmFuY2hvck5vZGUseC5hbmNob3JPZmZzZXQpLGM9Z3goYSx4LmZvY3VzTm9kZSx4LmZvY3VzT2Zmc2V0KTtiJiZjJiZEYShhLGZ1bmN0aW9uKCl7QXgoYS5kb2MsbXgoYixjKSxKZiksKGIuYmFkfHxjLmJhZCkmJihhLmN1ck9wLnNlbGVjdGlvbkNoYW5nZWQ9ITApfSl9fSxwb2xsQ29udGVudDpmdW5jdGlvbigpe3ZhciB4LGE9dGhpcy5jbSxiPWEuZGlzcGxheSxjPWEuZG9jLnNlbC5wcmltYXJ5KCksZD1jLmZyb20oKSxlPWMudG8oKTtpZihkLmxpbmU8Yi52aWV3RnJvbXx8ZS5saW5lPmIudmlld1RvLTEpcmV0dXJuITE7aWYoZC5saW5lPT1iLnZpZXdGcm9tfHwwPT0oeD1NYShhLGQubGluZSkpKXZhciBmPXhkKGIudmlld1swXS5saW5lKSxnPWIudmlld1swXS5ub2RlO2Vsc2UgZj14ZChiLnZpZXdbeF0ubGluZSksZz1iLnZpZXdbeC0xXS5ub2RlLm5leHRTaWJsaW5nO3ZhciBoPU1hKGEsZS5saW5lKTtpZihoPT1iLnZpZXcubGVuZ3RoLTEpdmFyIGk9Yi52aWV3VG8tMSxqPWIubGluZURpdi5sYXN0Q2hpbGQ7ZWxzZSBpPXhkKGIudmlld1toKzFdLmxpbmUpLTEsaj1iLnZpZXdbaCsxXS5ub2RlLnByZXZpb3VzU2libGluZztmb3IodmFyIGs9YS5kb2Muc3BsaXRMaW5lcyhpeChhLGcsaixmLGkpKSxsPVpjKGEuZG9jLEplKGYsMCksSmUoaSxZYyhhLmRvYyxpKS50ZXh0Lmxlbmd0aCkpO2subGVuZ3RoPjEmJmwubGVuZ3RoPjE7KWlmKEZkKGspPT1GZChsKSlrLnBvcCgpLGwucG9wKCksaS0tO2Vsc2V7aWYoa1swXSE9bFswXSlicmVhaztrLnNoaWZ0KCksbC5zaGlmdCgpLGYrK31mb3IodmFyIG09MCxuPTAsbz1rWzBdLHA9bFswXSxxPU1hdGgubWluKG8ubGVuZ3RoLHAubGVuZ3RoKTtxPm0mJm8uY2hhckNvZGVBdChtKT09cC5jaGFyQ29kZUF0KG0pOykrK207Zm9yKHZhciByPUZkKGspLHM9RmQobCksdD1NYXRoLm1pbihyLmxlbmd0aC0oMT09ay5sZW5ndGg/bTowKSxzLmxlbmd0aC0oMT09bC5sZW5ndGg/bTowKSk7dD5uJiZyLmNoYXJDb2RlQXQoci5sZW5ndGgtbi0xKT09cy5jaGFyQ29kZUF0KHMubGVuZ3RoLW4tMSk7KSsrbjtrW2subGVuZ3RoLTFdPXIuc2xpY2UoMCxyLmxlbmd0aC1uKSxrWzBdPWtbMF0uc2xpY2UobSk7dmFyIHU9SmUoZixtKSx2PUplKGksbC5sZW5ndGg/RmQobCkubGVuZ3RoLW46MCk7cmV0dXJuIGsubGVuZ3RoPjF8fGtbMF18fEtlKHUsdik/KEZiKGEuZG9jLGssdSx2LCIraW5wdXQiKSwhMCk6dm9pZCAwfSxlbnN1cmVQb2xsZWQ6ZnVuY3Rpb24oKXt0aGlzLmZvcmNlQ29tcG9zaXRpb25FbmQoKX0scmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLmZvcmNlQ29tcG9zaXRpb25FbmQoKX0sZm9yY2VDb21wb3NpdGlvbkVuZDpmdW5jdGlvbigpe3RoaXMuY29tcG9zaW5nJiYhdGhpcy5jb21wb3NpbmcuaGFuZGxlZCYmKHRoaXMuYXBwbHlDb21wb3NpdGlvbih0aGlzLmNvbXBvc2luZyksdGhpcy5jb21wb3NpbmcuaGFuZGxlZD0hMCx0aGlzLmRpdi5ibHVyKCksdGhpcy5kaXYuZm9jdXMoKSl9LGFwcGx5Q29tcG9zaXRpb246ZnVuY3Rpb24oeCl7dGhpcy5jbS5pc1JlYWRPbmx5KCk/RWEodGhpcy5jbSxKYSkodGhpcy5jbSk6eC5kYXRhJiZ4LmRhdGEhPXguc3RhcnREYXRhJiZFYSh0aGlzLmNtLFopKHRoaXMuY20seC5kYXRhLDAseC5zZWwpfSxzZXRVbmVkaXRhYmxlOmZ1bmN0aW9uKHgpe3guY29udGVudEVkaXRhYmxlPSJmYWxzZSJ9LG9uS2V5UHJlc3M6ZnVuY3Rpb24oeCl7eC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuY20uaXNSZWFkT25seSgpfHxFYSh0aGlzLmNtLFopKHRoaXMuY20sU3RyaW5nLmZyb21DaGFyQ29kZShudWxsPT14LmNoYXJDb2RlP3gua2V5Q29kZTp4LmNoYXJDb2RlKSwwKX0scmVhZE9ubHlDaGFuZ2VkOmZ1bmN0aW9uKHgpe3RoaXMuZGl2LmNvbnRlbnRFZGl0YWJsZT1TdHJpbmcoIm5vY3Vyc29yIiE9eCl9LG9uQ29udGV4dE1lbnU6SWQscmVzZXRQb3NpdGlvbjpJZCxuZWVkc0NvbnRlbnRBdHRyaWJ1dGU6ITB9LGR4LnByb3RvdHlwZSkseC5pbnB1dFN0eWxlcz17dGV4dGFyZWE6YngsY29udGVudGVkaXRhYmxlOmR4fSxqeC5wcm90b3R5cGU9e3ByaW1hcnk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yYW5nZXNbdGhpcy5wcmltSW5kZXhdfSxlcXVhbHM6ZnVuY3Rpb24oeCl7aWYoeD09dGhpcylyZXR1cm4hMDtpZih4LnByaW1JbmRleCE9dGhpcy5wcmltSW5kZXh8fHgucmFuZ2VzLmxlbmd0aCE9dGhpcy5yYW5nZXMubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgYT0wO2E8dGhpcy5yYW5nZXMubGVuZ3RoO2ErKyl7dmFyIGI9dGhpcy5yYW5nZXNbYV0sYz14LnJhbmdlc1thXTtpZigwIT1LZShiLmFuY2hvcixjLmFuY2hvcil8fDAhPUtlKGIuaGVhZCxjLmhlYWQpKXJldHVybiExfXJldHVybiEwfSxkZWVwQ29weTpmdW5jdGlvbigpe2Zvcih2YXIgeD1bXSxhPTA7YTx0aGlzLnJhbmdlcy5sZW5ndGg7YSsrKXhbYV09bmV3IGt4KFYodGhpcy5yYW5nZXNbYV0uYW5jaG9yKSxWKHRoaXMucmFuZ2VzW2FdLmhlYWQpKTtyZXR1cm4gbmV3IGp4KHgsdGhpcy5wcmltSW5kZXgpfSxzb21ldGhpbmdTZWxlY3RlZDpmdW5jdGlvbigpe2Zvcih2YXIgeD0wO3g8dGhpcy5yYW5nZXMubGVuZ3RoO3grKylpZighdGhpcy5yYW5nZXNbeF0uZW1wdHkoKSlyZXR1cm4hMDtyZXR1cm4hMX0sY29udGFpbnM6ZnVuY3Rpb24oeCxhKXthfHwoYT14KTtmb3IodmFyIGI9MDtiPHRoaXMucmFuZ2VzLmxlbmd0aDtiKyspe3ZhciBjPXRoaXMucmFuZ2VzW2JdO2lmKEtlKGEsYy5mcm9tKCkpPj0wJiZLZSh4LGMudG8oKSk8PTApcmV0dXJuIGJ9cmV0dXJuLTF9fSxreC5wcm90b3R5cGU9e2Zyb206ZnVuY3Rpb24oKXtyZXR1cm4gWCh0aGlzLmFuY2hvcix0aGlzLmhlYWQpfSx0bzpmdW5jdGlvbigpe3JldHVybiBXKHRoaXMuYW5jaG9yLHRoaXMuaGVhZCl9LGVtcHR5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaGVhZC5saW5lPT10aGlzLmFuY2hvci5saW5lJiZ0aGlzLmhlYWQuY2g9PXRoaXMuYW5jaG9yLmNofX07dmFyIE1lLE5lLE9lLFBlPXtsZWZ0OjAscmlnaHQ6MCx0b3A6MCxib3R0b206MH0sUWU9bnVsbCxSZT0wLFNlPTAsVGU9MCxVZT1udWxsO3FlP1VlPS0uNTM6bmU/VWU9MTU6dWU/VWU9LS43OndlJiYoVWU9LTEvMyk7dmFyIFZlPWZ1bmN0aW9uKHgpe3ZhciBhPXgud2hlZWxEZWx0YVgsYj14LndoZWVsRGVsdGFZO3JldHVybiBudWxsPT1hJiZ4LmRldGFpbCYmeC5heGlzPT14LkhPUklaT05UQUxfQVhJUyYmKGE9eC5kZXRhaWwpLG51bGw9PWImJnguZGV0YWlsJiZ4LmF4aXM9PXguVkVSVElDQUxfQVhJUz9iPXguZGV0YWlsOm51bGw9PWImJihiPXgud2hlZWxEZWx0YSkse3g6YSx5OmJ9fTt4LndoZWVsRXZlbnRQaXhlbHM9ZnVuY3Rpb24oeCl7dmFyIGE9VmUoeCk7cmV0dXJuIGEueCo9VWUsYS55Kj1VZSxhfTt2YXIgV2U9bmV3IERkLFhlPW51bGwsWWU9eC5jaGFuZ2VFbmQ9ZnVuY3Rpb24oeCl7cmV0dXJuIHgudGV4dD9KZSh4LmZyb20ubGluZSt4LnRleHQubGVuZ3RoLTEsRmQoeC50ZXh0KS5sZW5ndGgrKDE9PXgudGV4dC5sZW5ndGg/eC5mcm9tLmNoOjApKTp4LnRvfTt4LnByb3RvdHlwZT17Y29uc3RydWN0b3I6eCxmb2N1czpmdW5jdGlvbigpe3dpbmRvdy5mb2N1cygpLHRoaXMuZGlzcGxheS5pbnB1dC5mb2N1cygpfSxzZXRPcHRpb246ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzLm9wdGlvbnMsYz1iW3hdOyhiW3hdIT1hfHwibW9kZSI9PXgpJiYoYlt4XT1hLCRlLmhhc093blByb3BlcnR5KHgpJiZFYSh0aGlzLCRlW3hdKSh0aGlzLGEsYykpfSxnZXRPcHRpb246ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMub3B0aW9uc1t4XX0sZ2V0RG9jOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9jfSxhZGRLZXlNYXA6ZnVuY3Rpb24oeCxhKXt0aGlzLnN0YXRlLmtleU1hcHNbYT8icHVzaCI6InVuc2hpZnQiXShVYih4KSl9LHJlbW92ZUtleU1hcDpmdW5jdGlvbih4KXtmb3IodmFyIGE9dGhpcy5zdGF0ZS5rZXlNYXBzLGI9MDtiPGEubGVuZ3RoOysrYilpZihhW2JdPT14fHxhW2JdLm5hbWU9PXgpcmV0dXJuIGEuc3BsaWNlKGIsMSksITB9LGFkZE92ZXJsYXk6RmEoZnVuY3Rpb24oYSxiKXt2YXIgYz1hLnRva2VuP2E6eC5nZXRNb2RlKHRoaXMub3B0aW9ucyxhKTtpZihjLnN0YXJ0U3RhdGUpdGhyb3cgbmV3IEVycm9yKCJPdmVybGF5cyBtYXkgbm90IGJlIHN0YXRlZnVsLiIpO3RoaXMuc3RhdGUub3ZlcmxheXMucHVzaCh7bW9kZTpjLG1vZGVTcGVjOmEsb3BhcXVlOmImJmIub3BhcXVlfSksdGhpcy5zdGF0ZS5tb2RlR2VuKyssSmEodGhpcyl9KSxyZW1vdmVPdmVybGF5OkZhKGZ1bmN0aW9uKHgpe2Zvcih2YXIgYT10aGlzLnN0YXRlLm92ZXJsYXlzLGI9MDtiPGEubGVuZ3RoOysrYil7dmFyIGM9YVtiXS5tb2RlU3BlYztpZihjPT14fHwic3RyaW5nIj09dHlwZW9mIHgmJmMubmFtZT09eClyZXR1cm4gYS5zcGxpY2UoYiwxKSx0aGlzLnN0YXRlLm1vZGVHZW4rKyx2b2lkIEphKHRoaXMpfX0pLGluZGVudExpbmU6RmEoZnVuY3Rpb24oeCxhLGIpeyJzdHJpbmciIT10eXBlb2YgYSYmIm51bWJlciIhPXR5cGVvZiBhJiYoYT1udWxsPT1hP3RoaXMub3B0aW9ucy5zbWFydEluZGVudD8ic21hcnQiOiJwcmV2IjphPyJhZGQiOiJzdWJ0cmFjdCIpLHF4KHRoaXMuZG9jLHgpJiZOYih0aGlzLHgsYSxiKX0pLGluZGVudFNlbGVjdGlvbjpGYShmdW5jdGlvbih4KXtmb3IodmFyIGE9dGhpcy5kb2Muc2VsLnJhbmdlcyxiPS0xLGM9MDtjPGEubGVuZ3RoO2MrKyl7dmFyIGQ9YVtjXTtpZihkLmVtcHR5KCkpZC5oZWFkLmxpbmU+YiYmKE5iKHRoaXMsZC5oZWFkLmxpbmUseCwhMCksYj1kLmhlYWQubGluZSxjPT10aGlzLmRvYy5zZWwucHJpbUluZGV4JiZMYih0aGlzKSk7ZWxzZXt2YXIgZT1kLmZyb20oKSxmPWQudG8oKSxnPU1hdGgubWF4KGIsZS5saW5lKTtiPU1hdGgubWluKHRoaXMubGFzdExpbmUoKSxmLmxpbmUtKGYuY2g/MDoxKSkrMTtmb3IodmFyIGg9ZztiPmg7KytoKU5iKHRoaXMsaCx4KTt2YXIgaT10aGlzLmRvYy5zZWwucmFuZ2VzOzA9PWUuY2gmJmEubGVuZ3RoPT1pLmxlbmd0aCYmaVtjXS5mcm9tKCkuY2g+MCYmdngodGhpcy5kb2MsYyxuZXcga3goZSxpW2NdLnRvKCkpLEpmKX19fSksZ2V0VG9rZW5BdDpmdW5jdGlvbih4LGEpe3JldHVybiBGYyh0aGlzLHgsYSl9LGdldExpbmVUb2tlbnM6ZnVuY3Rpb24oeCxhKXtyZXR1cm4gRmModGhpcyxKZSh4KSxhLCEwKX0sZ2V0VG9rZW5UeXBlQXQ6ZnVuY3Rpb24oeCl7eD1veCh0aGlzLmRvYyx4KTt2YXIgYSxiPUljKHRoaXMsWWModGhpcy5kb2MseC5saW5lKSksYz0wLGQ9KGIubGVuZ3RoLTEpLzIsZT14LmNoO2lmKDA9PWUpYT1iWzJdO2Vsc2UgZm9yKDs7KXt2YXIgZj1jK2Q+PjE7aWYoKGY/YlsyKmYtMV06MCk+PWUpZD1mO2Vsc2V7aWYoIShiWzIqZisxXTxlKSl7YT1iWzIqZisyXTticmVha31jPWYrMX19dmFyIGc9YT9hLmluZGV4T2YoImNtLW92ZXJsYXkgIik6LTE7cmV0dXJuIDA+Zz9hOjA9PWc/bnVsbDphLnNsaWNlKDAsZy0xKX0sZ2V0TW9kZUF0OmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuZG9jLm1vZGU7cmV0dXJuIGIuaW5uZXJNb2RlP3guaW5uZXJNb2RlKGIsdGhpcy5nZXRUb2tlbkF0KGEpLnN0YXRlKS5tb2RlOmJ9LGdldEhlbHBlcjpmdW5jdGlvbih4LGEpe3JldHVybiB0aGlzLmdldEhlbHBlcnMoeCxhKVswXX0sZ2V0SGVscGVyczpmdW5jdGlvbih4LGEpe3ZhciBiPVtdO2lmKCFkZi5oYXNPd25Qcm9wZXJ0eShhKSlyZXR1cm4gYjt2YXIgYz1kZlthXSxkPXRoaXMuZ2V0TW9kZUF0KHgpO2lmKCJzdHJpbmciPT10eXBlb2YgZFthXSljW2RbYV1dJiZiLnB1c2goY1tkW2FdXSk7ZWxzZSBpZihkW2FdKWZvcih2YXIgZT0wO2U8ZFthXS5sZW5ndGg7ZSsrKXt2YXIgZj1jW2RbYV1bZV1dO2YmJmIucHVzaChmKX1lbHNlIGQuaGVscGVyVHlwZSYmY1tkLmhlbHBlclR5cGVdP2IucHVzaChjW2QuaGVscGVyVHlwZV0pOmNbZC5uYW1lXSYmYi5wdXNoKGNbZC5uYW1lXSk7Zm9yKGU9MDtlPGMuX2dsb2JhbC5sZW5ndGg7ZSsrKXt2YXIgZz1jLl9nbG9iYWxbZV07Zy5wcmVkKGQsdGhpcykmJi0xPT1HZChiLGcudmFsKSYmYi5wdXNoKGcudmFsKX1yZXR1cm4gYn0sZ2V0U3RhdGVBZnRlcjpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXMuZG9jO3JldHVybiBReCh0aGlzLCh4PW54KGIsbnVsbD09eD9iLmZpcnN0K2Iuc2l6ZS0xOngpKSsxLGEpfSxjdXJzb3JDb29yZHM6ZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzLmRvYy5zZWwucHJpbWFyeSgpO3JldHVybiBtYSh0aGlzLG51bGw9PXg/Yi5oZWFkOiJvYmplY3QiPT10eXBlb2YgeD9veCh0aGlzLmRvYyx4KTp4P2IuZnJvbSgpOmIudG8oKSxhfHwicGFnZSIpfSxjaGFyQ29vcmRzOmZ1bmN0aW9uKHgsYSl7cmV0dXJuIGxhKHRoaXMsb3godGhpcy5kb2MseCksYXx8InBhZ2UiKX0sY29vcmRzQ2hhcjpmdW5jdGlvbih4LGEpe3JldHVybiBwYSh0aGlzLCh4PWthKHRoaXMseCxhfHwicGFnZSIpKS5sZWZ0LHgudG9wKX0sbGluZUF0SGVpZ2h0OmZ1bmN0aW9uKHgsYSl7cmV0dXJuIHg9a2EodGhpcyx7dG9wOngsbGVmdDowfSxhfHwicGFnZSIpLnRvcCxhZCh0aGlzLmRvYyx4K3RoaXMuZGlzcGxheS52aWV3T2Zmc2V0KX0saGVpZ2h0QXRMaW5lOmZ1bmN0aW9uKHgsYSl7dmFyIGIsYz0hMTtpZigibnVtYmVyIj09dHlwZW9mIHgpe3ZhciBkPXRoaXMuZG9jLmZpcnN0K3RoaXMuZG9jLnNpemUtMTt4PHRoaXMuZG9jLmZpcnN0P3g9dGhpcy5kb2MuZmlyc3Q6eD5kJiYoeD1kLGM9ITApLGI9WWModGhpcy5kb2MseCl9ZWxzZSBiPXg7cmV0dXJuIGphKHRoaXMsYix7dG9wOjAsbGVmdDowfSxhfHwicGFnZSIpLnRvcCsoYz90aGlzLmRvYy5oZWlnaHQtYmQoYik6MCl9LGRlZmF1bHRUZXh0SGVpZ2h0OmZ1bmN0aW9uKCl7cmV0dXJuIHJhKHRoaXMuZGlzcGxheSl9LGRlZmF1bHRDaGFyV2lkdGg6ZnVuY3Rpb24oKXtyZXR1cm4gc2EodGhpcy5kaXNwbGF5KX0sc2V0R3V0dGVyTWFya2VyOkZhKGZ1bmN0aW9uKHgsYSxiKXtyZXR1cm4gT2IodGhpcy5kb2MseCwiZ3V0dGVyIixmdW5jdGlvbih4KXt2YXIgYz14Lmd1dHRlck1hcmtlcnN8fCh4Lmd1dHRlck1hcmtlcnM9e30pO3JldHVybiBjW2FdPWIsIWImJk5kKGMpJiYoeC5ndXR0ZXJNYXJrZXJzPW51bGwpLCEwfSl9KSxjbGVhckd1dHRlcjpGYShmdW5jdGlvbih4KXt2YXIgYT10aGlzLGI9YS5kb2MsYz1iLmZpcnN0O2IuaXRlcihmdW5jdGlvbihiKXtiLmd1dHRlck1hcmtlcnMmJmIuZ3V0dGVyTWFya2Vyc1t4XSYmKGIuZ3V0dGVyTWFya2Vyc1t4XT1udWxsLEthKGEsYywiZ3V0dGVyIiksTmQoYi5ndXR0ZXJNYXJrZXJzKSYmKGIuZ3V0dGVyTWFya2Vycz1udWxsKSksKytjfSl9KSxsaW5lSW5mbzpmdW5jdGlvbih4KXtpZigibnVtYmVyIj09dHlwZW9mIHgpe2lmKCFxeCh0aGlzLmRvYyx4KSlyZXR1cm4gbnVsbDt2YXIgYT14O2lmKCEoeD1ZYyh0aGlzLmRvYyx4KSkpcmV0dXJuIG51bGx9ZWxzZXtpZihudWxsPT0oYT14ZCh4KSkpcmV0dXJuIG51bGx9cmV0dXJue2xpbmU6YSxoYW5kbGU6eCx0ZXh0OngudGV4dCxndXR0ZXJNYXJrZXJzOnguZ3V0dGVyTWFya2Vycyx0ZXh0Q2xhc3M6eC50ZXh0Q2xhc3MsYmdDbGFzczp4LmJnQ2xhc3Msd3JhcENsYXNzOngud3JhcENsYXNzLHdpZGdldHM6eC53aWRnZXRzfX0sZ2V0Vmlld3BvcnQ6ZnVuY3Rpb24oKXtyZXR1cm57ZnJvbTp0aGlzLmRpc3BsYXkudmlld0Zyb20sdG86dGhpcy5kaXNwbGF5LnZpZXdUb319LGFkZFdpZGdldDpmdW5jdGlvbih4LGEsYixjLGQpe3ZhciBlPXRoaXMuZGlzcGxheSxmPSh4PW1hKHRoaXMsb3godGhpcy5kb2MseCkpKS5ib3R0b20sZz14LmxlZnQ7aWYoYS5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLGEuc2V0QXR0cmlidXRlKCJjbS1pZ25vcmUtZXZlbnRzIiwidHJ1ZSIpLHRoaXMuZGlzcGxheS5pbnB1dC5zZXRVbmVkaXRhYmxlKGEpLGUuc2l6ZXIuYXBwZW5kQ2hpbGQoYSksIm92ZXIiPT1jKWY9eC50b3A7ZWxzZSBpZigiYWJvdmUiPT1jfHwibmVhciI9PWMpe3ZhciBoPU1hdGgubWF4KGUud3JhcHBlci5jbGllbnRIZWlnaHQsdGhpcy5kb2MuaGVpZ2h0KSxpPU1hdGgubWF4KGUuc2l6ZXIuY2xpZW50V2lkdGgsZS5saW5lU3BhY2UuY2xpZW50V2lkdGgpOygiYWJvdmUiPT1jfHx4LmJvdHRvbSthLm9mZnNldEhlaWdodD5oKSYmeC50b3A+YS5vZmZzZXRIZWlnaHQ/Zj14LnRvcC1hLm9mZnNldEhlaWdodDp4LmJvdHRvbSthLm9mZnNldEhlaWdodDw9aCYmKGY9eC5ib3R0b20pLGcrYS5vZmZzZXRXaWR0aD5pJiYoZz1pLWEub2Zmc2V0V2lkdGgpfWEuc3R5bGUudG9wPWYrInB4IixhLnN0eWxlLmxlZnQ9YS5zdHlsZS5yaWdodD0iIiwicmlnaHQiPT1kPyhnPWUuc2l6ZXIuY2xpZW50V2lkdGgtYS5vZmZzZXRXaWR0aCxhLnN0eWxlLnJpZ2h0PSIwcHgiKTooImxlZnQiPT1kP2c9MDoibWlkZGxlIj09ZCYmKGc9KGUuc2l6ZXIuY2xpZW50V2lkdGgtYS5vZmZzZXRXaWR0aCkvMiksYS5zdHlsZS5sZWZ0PWcrInB4IiksYiYmSWIodGhpcyxnLGYsZythLm9mZnNldFdpZHRoLGYrYS5vZmZzZXRIZWlnaHQpfSx0cmlnZ2VyT25LZXlEb3duOkZhKGtiKSx0cmlnZ2VyT25LZXlQcmVzczpGYShuYiksdHJpZ2dlck9uS2V5VXA6bWIsZXhlY0NvbW1hbmQ6ZnVuY3Rpb24oeCl7cmV0dXJuIGdmLmhhc093blByb3BlcnR5KHgpP2dmW3hdLmNhbGwobnVsbCx0aGlzKTp2b2lkIDB9LHRyaWdnZXJFbGVjdHJpYzpGYShmdW5jdGlvbih4KXtfKHRoaXMseCl9KSxmaW5kUG9zSDpmdW5jdGlvbih4LGEsYixjKXt2YXIgZD0xOzA+YSYmKGQ9LTEsYT0tYSk7Zm9yKHZhciBlPTAsZj1veCh0aGlzLmRvYyx4KTthPmUmJiEoZj1RYih0aGlzLmRvYyxmLGQsYixjKSkuaGl0U2lkZTsrK2UpO3JldHVybiBmfSxtb3ZlSDpGYShmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXM7Yi5leHRlbmRTZWxlY3Rpb25zQnkoZnVuY3Rpb24oYyl7cmV0dXJuIGIuZGlzcGxheS5zaGlmdHx8Yi5kb2MuZXh0ZW5kfHxjLmVtcHR5KCk/UWIoYi5kb2MsYy5oZWFkLHgsYSxiLm9wdGlvbnMucnRsTW92ZVZpc3VhbGx5KTowPng/Yy5mcm9tKCk6Yy50bygpfSxMZil9KSxkZWxldGVIOkZhKGZ1bmN0aW9uKHgsYSl7dmFyIGI9dGhpcy5kb2Muc2VsLGM9dGhpcy5kb2M7Yi5zb21ldGhpbmdTZWxlY3RlZCgpP2MucmVwbGFjZVNlbGVjdGlvbigiIixudWxsLCIrZGVsZXRlIik6UGIodGhpcyxmdW5jdGlvbihiKXt2YXIgZD1RYihjLGIuaGVhZCx4LGEsITEpO3JldHVybiAwPng/e2Zyb206ZCx0bzpiLmhlYWR9Ontmcm9tOmIuaGVhZCx0bzpkfX0pfSksZmluZFBvc1Y6ZnVuY3Rpb24oeCxhLGIsYyl7dmFyIGQ9MSxlPWM7MD5hJiYoZD0tMSxhPS1hKTtmb3IodmFyIGY9MCxnPW94KHRoaXMuZG9jLHgpO2E+ZjsrK2Ype3ZhciBoPW1hKHRoaXMsZywiZGl2Iik7aWYobnVsbD09ZT9lPWgubGVmdDpoLmxlZnQ9ZSwoZz1SYih0aGlzLGgsZCxiKSkuaGl0U2lkZSlicmVha31yZXR1cm4gZ30sbW92ZVY6RmEoZnVuY3Rpb24oeCxhKXt2YXIgYj10aGlzLGM9dGhpcy5kb2MsZD1bXSxlPSFiLmRpc3BsYXkuc2hpZnQmJiFjLmV4dGVuZCYmYy5zZWwuc29tZXRoaW5nU2VsZWN0ZWQoKTtpZihjLmV4dGVuZFNlbGVjdGlvbnNCeShmdW5jdGlvbihmKXtpZihlKXJldHVybiAwPng/Zi5mcm9tKCk6Zi50bygpO3ZhciBnPW1hKGIsZi5oZWFkLCJkaXYiKTtudWxsIT1mLmdvYWxDb2x1bW4mJihnLmxlZnQ9Zi5nb2FsQ29sdW1uKSxkLnB1c2goZy5sZWZ0KTt2YXIgaD1SYihiLGcseCxhKTtyZXR1cm4icGFnZSI9PWEmJmY9PWMuc2VsLnByaW1hcnkoKSYmS2IoYixudWxsLGxhKGIsaCwiZGl2IikudG9wLWcudG9wKSxofSxMZiksZC5sZW5ndGgpZm9yKHZhciBmPTA7ZjxjLnNlbC5yYW5nZXMubGVuZ3RoO2YrKyljLnNlbC5yYW5nZXNbZl0uZ29hbENvbHVtbj1kW2ZdfSksZmluZFdvcmRBdDpmdW5jdGlvbih4KXt2YXIgYT1ZYyh0aGlzLmRvYyx4LmxpbmUpLnRleHQsYj14LmNoLGM9eC5jaDtpZihhKXt2YXIgZD10aGlzLmdldEhlbHBlcih4LCJ3b3JkQ2hhcnMiKTsoeC54UmVsPDB8fGM9PWEubGVuZ3RoKSYmYj8tLWI6KytjO2Zvcih2YXIgZT1hLmNoYXJBdChiKSxmPU1kKGUsZCk/ZnVuY3Rpb24oeCl7cmV0dXJuIE1kKHgsZCl9Oi9ccy8udGVzdChlKT9mdW5jdGlvbih4KXtyZXR1cm4vXHMvLnRlc3QoeCl9OmZ1bmN0aW9uKHgpe3JldHVybiEvXHMvLnRlc3QoeCkmJiFNZCh4KX07Yj4wJiZmKGEuY2hhckF0KGItMSkpOyktLWI7Zm9yKDtjPGEubGVuZ3RoJiZmKGEuY2hhckF0KGMpKTspKytjfXJldHVybiBuZXcga3goSmUoeC5saW5lLGIpLEplKHgubGluZSxjKSl9LHRvZ2dsZU92ZXJ3cml0ZTpmdW5jdGlvbih4KXsobnVsbD09eHx8eCE9dGhpcy5zdGF0ZS5vdmVyd3JpdGUpJiYoKHRoaXMuc3RhdGUub3ZlcndyaXRlPSF0aGlzLnN0YXRlLm92ZXJ3cml0ZSk/WWYodGhpcy5kaXNwbGF5LmN1cnNvckRpdiwiQ29kZU1pcnJvci1vdmVyd3JpdGUiKTpYZih0aGlzLmRpc3BsYXkuY3Vyc29yRGl2LCJDb2RlTWlycm9yLW92ZXJ3cml0ZSIpLEZmKHRoaXMsIm92ZXJ3cml0ZVRvZ2dsZSIsdGhpcyx0aGlzLnN0YXRlLm92ZXJ3cml0ZSkpfSxoYXNGb2N1czpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRpc3BsYXkuaW5wdXQuZ2V0RmllbGQoKT09U2QoKX0saXNSZWFkT25seTpmdW5jdGlvbigpe3JldHVybiEoIXRoaXMub3B0aW9ucy5yZWFkT25seSYmIXRoaXMuZG9jLmNhbnRFZGl0KX0sc2Nyb2xsVG86RmEoZnVuY3Rpb24oeCxhKXsobnVsbCE9eHx8bnVsbCE9YSkmJk1iKHRoaXMpLG51bGwhPXgmJih0aGlzLmN1ck9wLnNjcm9sbExlZnQ9eCksbnVsbCE9YSYmKHRoaXMuY3VyT3Auc2Nyb2xsVG9wPWEpfSksZ2V0U2Nyb2xsSW5mbzpmdW5jdGlvbigpe3ZhciB4PXRoaXMuZGlzcGxheS5zY3JvbGxlcjtyZXR1cm57bGVmdDp4LnNjcm9sbExlZnQsdG9wOnguc2Nyb2xsVG9wLGhlaWdodDp4LnNjcm9sbEhlaWdodC1VeCh0aGlzKS10aGlzLmRpc3BsYXkuYmFySGVpZ2h0LHdpZHRoOnguc2Nyb2xsV2lkdGgtVXgodGhpcyktdGhpcy5kaXNwbGF5LmJhcldpZHRoLGNsaWVudEhlaWdodDpXeCh0aGlzKSxjbGllbnRXaWR0aDpWeCh0aGlzKX19LHNjcm9sbEludG9WaWV3OkZhKGZ1bmN0aW9uKHgsYSl7aWYobnVsbD09eD8oeD17ZnJvbTp0aGlzLmRvYy5zZWwucHJpbWFyeSgpLmhlYWQsdG86bnVsbH0sbnVsbD09YSYmKGE9dGhpcy5vcHRpb25zLmN1cnNvclNjcm9sbE1hcmdpbikpOiJudW1iZXIiPT10eXBlb2YgeD94PXtmcm9tOkplKHgsMCksdG86bnVsbH06bnVsbD09eC5mcm9tJiYoeD17ZnJvbTp4LHRvOm51bGx9KSx4LnRvfHwoeC50bz14LmZyb20pLHgubWFyZ2luPWF8fDAsbnVsbCE9eC5mcm9tLmxpbmUpTWIodGhpcyksdGhpcy5jdXJPcC5zY3JvbGxUb1Bvcz14O2Vsc2V7dmFyIGI9SmIodGhpcyxNYXRoLm1pbih4LmZyb20ubGVmdCx4LnRvLmxlZnQpLE1hdGgubWluKHguZnJvbS50b3AseC50by50b3ApLXgubWFyZ2luLE1hdGgubWF4KHguZnJvbS5yaWdodCx4LnRvLnJpZ2h0KSxNYXRoLm1heCh4LmZyb20uYm90dG9tLHgudG8uYm90dG9tKSt4Lm1hcmdpbik7dGhpcy5zY3JvbGxUbyhiLnNjcm9sbExlZnQsYi5zY3JvbGxUb3ApfX0pLHNldFNpemU6RmEoZnVuY3Rpb24oeCxhKXtmdW5jdGlvbiBiKHgpe3JldHVybiJudW1iZXIiPT10eXBlb2YgeHx8L15cZCskLy50ZXN0KFN0cmluZyh4KSk/eCsicHgiOnh9dmFyIGM9dGhpcztudWxsIT14JiYoYy5kaXNwbGF5LndyYXBwZXIuc3R5bGUud2lkdGg9Yih4KSksbnVsbCE9YSYmKGMuZGlzcGxheS53cmFwcGVyLnN0eWxlLmhlaWdodD1iKGEpKSxjLm9wdGlvbnMubGluZVdyYXBwaW5nJiZmYSh0aGlzKTt2YXIgZD1jLmRpc3BsYXkudmlld0Zyb207Yy5kb2MuaXRlcihkLGMuZGlzcGxheS52aWV3VG8sZnVuY3Rpb24oeCl7aWYoeC53aWRnZXRzKWZvcih2YXIgYT0wO2E8eC53aWRnZXRzLmxlbmd0aDthKyspaWYoeC53aWRnZXRzW2FdLm5vSFNjcm9sbCl7S2EoYyxkLCJ3aWRnZXQiKTticmVha30rK2R9KSxjLmN1ck9wLmZvcmNlVXBkYXRlPSEwLEZmKGMsInJlZnJlc2giLHRoaXMpfSksb3BlcmF0aW9uOmZ1bmN0aW9uKHgpe3JldHVybiBEYSh0aGlzLHgpfSxyZWZyZXNoOkZhKGZ1bmN0aW9uKCl7dmFyIHg9dGhpcy5kaXNwbGF5LmNhY2hlZFRleHRIZWlnaHQ7SmEodGhpcyksdGhpcy5jdXJPcC5mb3JjZVVwZGF0ZT0hMCxnYSh0aGlzKSx0aGlzLnNjcm9sbFRvKHRoaXMuZG9jLnNjcm9sbExlZnQsdGhpcy5kb2Muc2Nyb2xsVG9wKSxqKHRoaXMpLChudWxsPT14fHxNYXRoLmFicyh4LXJhKHRoaXMuZGlzcGxheSkpPi41KSYmZih0aGlzKSxGZih0aGlzLCJyZWZyZXNoIix0aGlzKX0pLHN3YXBEb2M6RmEoZnVuY3Rpb24oeCl7dmFyIGE9dGhpcy5kb2M7cmV0dXJuIGEuY209bnVsbCxYYyh0aGlzLHgpLGdhKHRoaXMpLHRoaXMuZGlzcGxheS5pbnB1dC5yZXNldCgpLHRoaXMuc2Nyb2xsVG8oeC5zY3JvbGxMZWZ0LHguc2Nyb2xsVG9wKSx0aGlzLmN1ck9wLmZvcmNlU2Nyb2xsPSEwLHdkKHRoaXMsInN3YXBEb2MiLHRoaXMsYSksYX0pLGdldElucHV0RmllbGQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kaXNwbGF5LmlucHV0LmdldEZpZWxkKCl9LGdldFdyYXBwZXJFbGVtZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGlzcGxheS53cmFwcGVyfSxnZXRTY3JvbGxlckVsZW1lbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kaXNwbGF5LnNjcm9sbGVyfSxnZXRHdXR0ZXJFbGVtZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGlzcGxheS5ndXR0ZXJzfX0sQ2QoeCk7dmFyIFplPXguZGVmYXVsdHM9e30sJGU9eC5vcHRpb25IYW5kbGVycz17fSxfZT14LkluaXQ9e3RvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIkNvZGVNaXJyb3IuSW5pdCJ9fTtTYigidmFsdWUiLCIiLGZ1bmN0aW9uKHgsYSl7eC5zZXRWYWx1ZShhKX0sITApLFNiKCJtb2RlIixudWxsLGZ1bmN0aW9uKHgsYSl7eC5kb2MubW9kZU9wdGlvbj1hLGIoeCl9LCEwKSxTYigiaW5kZW50VW5pdCIsMixiLCEwKSxTYigiaW5kZW50V2l0aFRhYnMiLCExKSxTYigic21hcnRJbmRlbnQiLCEwKSxTYigidGFiU2l6ZSIsNCxmdW5jdGlvbih4KXtjKHgpLGdhKHgpLEphKHgpfSwhMCksU2IoImxpbmVTZXBhcmF0b3IiLG51bGwsZnVuY3Rpb24oeCxhKXtpZih4LmRvYy5saW5lU2VwPWEsYSl7dmFyIGI9W10sYz14LmRvYy5maXJzdDt4LmRvYy5pdGVyKGZ1bmN0aW9uKHgpe2Zvcih2YXIgZD0wOzspe3ZhciBlPXgudGV4dC5pbmRleE9mKGEsZCk7aWYoLTE9PWUpYnJlYWs7ZD1lK2EubGVuZ3RoLGIucHVzaChKZShjLGUpKX1jKyt9KTtmb3IodmFyIGQ9Yi5sZW5ndGgtMTtkPj0wO2QtLSlGYih4LmRvYyxhLGJbZF0sSmUoYltkXS5saW5lLGJbZF0uY2grYS5sZW5ndGgpKX19KSxTYigic3BlY2lhbENoYXJzIiwvW1x0XHUwMDAwLVx1MDAxOVx1MDBhZFx1MjAwYi1cdTIwMGZcdTIwMjhcdTIwMjlcdWZlZmZdL2csZnVuY3Rpb24oYSxiLGMpe2Euc3RhdGUuc3BlY2lhbENoYXJzPW5ldyBSZWdFeHAoYi5zb3VyY2UrKGIudGVzdCgiXHQiKT8iIjoifFx0IiksImciKSxjIT14LkluaXQmJmEucmVmcmVzaCgpfSksU2IoInNwZWNpYWxDaGFyUGxhY2Vob2xkZXIiLE1jLGZ1bmN0aW9uKHgpe3gucmVmcmVzaCgpfSwhMCksU2IoImVsZWN0cmljQ2hhcnMiLCEwKSxTYigiaW5wdXRTdHlsZSIsQmU/ImNvbnRlbnRlZGl0YWJsZSI6InRleHRhcmVhIixmdW5jdGlvbigpe3Rocm93IG5ldyBFcnJvcigiaW5wdXRTdHlsZSBjYW4gbm90ICh5ZXQpIGJlIGNoYW5nZWQgaW4gYSBydW5uaW5nIGVkaXRvciIpfSwhMCksU2IoInJ0bE1vdmVWaXN1YWxseSIsIURlKSxTYigid2hvbGVMaW5lVXBkYXRlQmVmb3JlIiwhMCksU2IoInRoZW1lIiwiZGVmYXVsdCIsZnVuY3Rpb24oeCl7Zyh4KSxoKHgpfSwhMCksU2IoImtleU1hcCIsImRlZmF1bHQiLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD1VYihiKSxlPWMhPXguSW5pdCYmVWIoYyk7ZSYmZS5kZXRhY2gmJmUuZGV0YWNoKGEsZCksZC5hdHRhY2gmJmQuYXR0YWNoKGEsZXx8bnVsbCl9KSxTYigiZXh0cmFLZXlzIixudWxsKSxTYigibGluZVdyYXBwaW5nIiwhMSxkLCEwKSxTYigiZ3V0dGVycyIsW10sZnVuY3Rpb24oeCl7bSh4Lm9wdGlvbnMpLGgoeCl9LCEwKSxTYigiZml4ZWRHdXR0ZXIiLCEwLGZ1bmN0aW9uKHgsYSl7eC5kaXNwbGF5Lmd1dHRlcnMuc3R5bGUubGVmdD1hP3koeC5kaXNwbGF5KSsicHgiOiIwIix4LnJlZnJlc2goKX0sITApLFNiKCJjb3Zlckd1dHRlck5leHRUb1Njcm9sbGJhciIsITEsZnVuY3Rpb24oeCl7cih4KX0sITApLFNiKCJzY3JvbGxiYXJTdHlsZSIsIm5hdGl2ZSIsZnVuY3Rpb24oeCl7cSh4KSxyKHgpLHguZGlzcGxheS5zY3JvbGxiYXJzLnNldFNjcm9sbFRvcCh4LmRvYy5zY3JvbGxUb3ApLHguZGlzcGxheS5zY3JvbGxiYXJzLnNldFNjcm9sbExlZnQoeC5kb2Muc2Nyb2xsTGVmdCl9LCEwKSxTYigibGluZU51bWJlcnMiLCExLGZ1bmN0aW9uKHgpe20oeC5vcHRpb25zKSxoKHgpfSwhMCksU2IoImZpcnN0TGluZU51bWJlciIsMSxoLCEwKSxTYigibGluZU51bWJlckZvcm1hdHRlciIsZnVuY3Rpb24oeCl7cmV0dXJuIHh9LGgsITApLFNiKCJzaG93Q3Vyc29yV2hlblNlbGVjdGluZyIsITEsSXgsITApLFNiKCJyZXNldFNlbGVjdGlvbk9uQ29udGV4dE1lbnUiLCEwKSxTYigibGluZVdpc2VDb3B5Q3V0IiwhMCksU2IoInJlYWRPbmx5IiwhMSxmdW5jdGlvbih4LGEpeyJub2N1cnNvciI9PWE/KHFiKHgpLHguZGlzcGxheS5pbnB1dC5ibHVyKCkseC5kaXNwbGF5LmRpc2FibGVkPSEwKTp4LmRpc3BsYXkuZGlzYWJsZWQ9ITEseC5kaXNwbGF5LmlucHV0LnJlYWRPbmx5Q2hhbmdlZChhKX0pLFNiKCJkaXNhYmxlSW5wdXQiLCExLGZ1bmN0aW9uKHgsYSl7YXx8eC5kaXNwbGF5LmlucHV0LnJlc2V0KCl9LCEwKSxTYigiZHJhZ0Ryb3AiLCEwLFJhKSxTYigiYWxsb3dEcm9wRmlsZVR5cGVzIixudWxsKSxTYigiY3Vyc29yQmxpbmtSYXRlIiw1MzApLFNiKCJjdXJzb3JTY3JvbGxNYXJnaW4iLDApLFNiKCJjdXJzb3JIZWlnaHQiLDEsSXgsITApLFNiKCJzaW5nbGVDdXJzb3JIZWlnaHRQZXJMaW5lIiwhMCxJeCwhMCksU2IoIndvcmtUaW1lIiwxMDApLFNiKCJ3b3JrRGVsYXkiLDEwMCksU2IoImZsYXR0ZW5TcGFucyIsITAsYywhMCksU2IoImFkZE1vZGVDbGFzcyIsITEsYywhMCksU2IoInBvbGxJbnRlcnZhbCIsMTAwKSxTYigidW5kb0RlcHRoIiwyMDAsZnVuY3Rpb24oeCxhKXt4LmRvYy5oaXN0b3J5LnVuZG9EZXB0aD1hfSksU2IoImhpc3RvcnlFdmVudERlbGF5IiwxMjUwKSxTYigidmlld3BvcnRNYXJnaW4iLDEwLGZ1bmN0aW9uKHgpe3gucmVmcmVzaCgpfSwhMCksU2IoIm1heEhpZ2hsaWdodExlbmd0aCIsMWU0LGMsITApLFNiKCJtb3ZlSW5wdXRXaXRoQ3Vyc29yIiwhMCxmdW5jdGlvbih4LGEpe2F8fHguZGlzcGxheS5pbnB1dC5yZXNldFBvc2l0aW9uKCl9KSxTYigidGFiaW5kZXgiLG51bGwsZnVuY3Rpb24oeCxhKXt4LmRpc3BsYXkuaW5wdXQuZ2V0RmllbGQoKS50YWJJbmRleD1hfHwiIn0pLFNiKCJhdXRvZm9jdXMiLG51bGwpO3ZhciB4Zj14Lm1vZGVzPXt9LGFmPXgubWltZU1vZGVzPXt9O3guZGVmaW5lTW9kZT1mdW5jdGlvbihhLGIpe3guZGVmYXVsdHMubW9kZXx8Im51bGwiPT1hfHwoeC5kZWZhdWx0cy5tb2RlPWEpLGFyZ3VtZW50cy5sZW5ndGg+MiYmKGIuZGVwZW5kZW5jaWVzPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKSkseGZbYV09Yn0seC5kZWZpbmVNSU1FPWZ1bmN0aW9uKHgsYSl7YWZbeF09YX0seC5yZXNvbHZlTW9kZT1mdW5jdGlvbihhKXtpZigic3RyaW5nIj09dHlwZW9mIGEmJmFmLmhhc093blByb3BlcnR5KGEpKWE9YWZbYV07ZWxzZSBpZihhJiYic3RyaW5nIj09dHlwZW9mIGEubmFtZSYmYWYuaGFzT3duUHJvcGVydHkoYS5uYW1lKSl7dmFyIGI9YWZbYS5uYW1lXTsic3RyaW5nIj09dHlwZW9mIGImJihiPXtuYW1lOmJ9KSwoYT1KZChiLGEpKS5uYW1lPWIubmFtZX1lbHNlIGlmKCJzdHJpbmciPT10eXBlb2YgYSYmL15bXHdcLV0rXC9bXHdcLV0rXCt4bWwkLy50ZXN0KGEpKXJldHVybiB4LnJlc29sdmVNb2RlKCJhcHBsaWNhdGlvbi94bWwiKTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGE/e25hbWU6YX06YXx8e25hbWU6Im51bGwifX0seC5nZXRNb2RlPWZ1bmN0aW9uKGEsYil7Yj14LnJlc29sdmVNb2RlKGIpO3ZhciBjPXhmW2IubmFtZV07aWYoIWMpcmV0dXJuIHguZ2V0TW9kZShhLCJ0ZXh0L3BsYWluIik7dmFyIGQ9YyhhLGIpO2lmKGJmLmhhc093blByb3BlcnR5KGIubmFtZSkpe3ZhciBlPWJmW2IubmFtZV07Zm9yKHZhciBmIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShmKSYmKGQuaGFzT3duUHJvcGVydHkoZikmJihkWyJfIitmXT1kW2ZdKSxkW2ZdPWVbZl0pfWlmKGQubmFtZT1iLm5hbWUsYi5oZWxwZXJUeXBlJiYoZC5oZWxwZXJUeXBlPWIuaGVscGVyVHlwZSksYi5tb2RlUHJvcHMpZm9yKHZhciBmIGluIGIubW9kZVByb3BzKWRbZl09Yi5tb2RlUHJvcHNbZl07cmV0dXJuIGR9LHguZGVmaW5lTW9kZSgibnVsbCIsZnVuY3Rpb24oKXtyZXR1cm57dG9rZW46ZnVuY3Rpb24oeCl7eC5za2lwVG9FbmQoKX19fSkseC5kZWZpbmVNSU1FKCJ0ZXh0L3BsYWluIiwibnVsbCIpO3ZhciBiZj14Lm1vZGVFeHRlbnNpb25zPXt9O3guZXh0ZW5kTW9kZT1mdW5jdGlvbih4LGEpe0tkKGEsYmYuaGFzT3duUHJvcGVydHkoeCk/YmZbeF06YmZbeF09e30pfSx4LmRlZmluZUV4dGVuc2lvbj1mdW5jdGlvbihhLGIpe3gucHJvdG90eXBlW2FdPWJ9LHguZGVmaW5lRG9jRXh0ZW5zaW9uPWZ1bmN0aW9uKHgsYSl7dmYucHJvdG90eXBlW3hdPWF9LHguZGVmaW5lT3B0aW9uPVNiO3ZhciBjZj1bXTt4LmRlZmluZUluaXRIb29rPWZ1bmN0aW9uKHgpe2NmLnB1c2goeCl9O3ZhciBkZj14LmhlbHBlcnM9e307eC5yZWdpc3RlckhlbHBlcj1mdW5jdGlvbihhLGIsYyl7ZGYuaGFzT3duUHJvcGVydHkoYSl8fChkZlthXT14W2FdPXtfZ2xvYmFsOltdfSksZGZbYV1bYl09Y30seC5yZWdpc3Rlckdsb2JhbEhlbHBlcj1mdW5jdGlvbihhLGIsYyxkKXt4LnJlZ2lzdGVySGVscGVyKGEsYixkKSxkZlthXS5fZ2xvYmFsLnB1c2goe3ByZWQ6Yyx2YWw6ZH0pfTt2YXIgZWY9eC5jb3B5U3RhdGU9ZnVuY3Rpb24oeCxhKXtpZighMD09PWEpcmV0dXJuIGE7aWYoeC5jb3B5U3RhdGUpcmV0dXJuIHguY29weVN0YXRlKGEpO3ZhciBiPXt9O2Zvcih2YXIgYyBpbiBhKXt2YXIgZD1hW2NdO2QgaW5zdGFuY2VvZiBBcnJheSYmKGQ9ZC5jb25jYXQoW10pKSxiW2NdPWR9cmV0dXJuIGJ9LGZmPXguc3RhcnRTdGF0ZT1mdW5jdGlvbih4LGEsYil7cmV0dXJuIXguc3RhcnRTdGF0ZXx8eC5zdGFydFN0YXRlKGEsYil9O3guaW5uZXJNb2RlPWZ1bmN0aW9uKHgsYSl7Zm9yKDt4LmlubmVyTW9kZTspe3ZhciBiPXguaW5uZXJNb2RlKGEpO2lmKCFifHxiLm1vZGU9PXgpYnJlYWs7YT1iLnN0YXRlLHg9Yi5tb2RlfXJldHVybiBifHx7bW9kZTp4LHN0YXRlOmF9fTt2YXIgZ2Y9eC5jb21tYW5kcz17c2VsZWN0QWxsOmZ1bmN0aW9uKHgpe3guc2V0U2VsZWN0aW9uKEplKHguZmlyc3RMaW5lKCksMCksSmUoeC5sYXN0TGluZSgpKSxKZil9LHNpbmdsZVNlbGVjdGlvbjpmdW5jdGlvbih4KXt4LnNldFNlbGVjdGlvbih4LmdldEN1cnNvcigiYW5jaG9yIikseC5nZXRDdXJzb3IoImhlYWQiKSxKZil9LGtpbGxMaW5lOmZ1bmN0aW9uKHgpe1BiKHgsZnVuY3Rpb24oYSl7aWYoYS5lbXB0eSgpKXt2YXIgYj1ZYyh4LmRvYyxhLmhlYWQubGluZSkudGV4dC5sZW5ndGg7cmV0dXJuIGEuaGVhZC5jaD09YiYmYS5oZWFkLmxpbmU8eC5sYXN0TGluZSgpP3tmcm9tOmEuaGVhZCx0bzpKZShhLmhlYWQubGluZSsxLDApfTp7ZnJvbTphLmhlYWQsdG86SmUoYS5oZWFkLmxpbmUsYil9fXJldHVybntmcm9tOmEuZnJvbSgpLHRvOmEudG8oKX19KX0sZGVsZXRlTGluZTpmdW5jdGlvbih4KXtQYih4LGZ1bmN0aW9uKGEpe3JldHVybntmcm9tOkplKGEuZnJvbSgpLmxpbmUsMCksdG86b3goeC5kb2MsSmUoYS50bygpLmxpbmUrMSwwKSl9fSl9LGRlbExpbmVMZWZ0OmZ1bmN0aW9uKHgpe1BiKHgsZnVuY3Rpb24oeCl7cmV0dXJue2Zyb206SmUoeC5mcm9tKCkubGluZSwwKSx0bzp4LmZyb20oKX19KX0sZGVsV3JhcHBlZExpbmVMZWZ0OmZ1bmN0aW9uKHgpe1BiKHgsZnVuY3Rpb24oYSl7dmFyIGI9eC5jaGFyQ29vcmRzKGEuaGVhZCwiZGl2IikudG9wKzU7cmV0dXJue2Zyb206eC5jb29yZHNDaGFyKHtsZWZ0OjAsdG9wOmJ9LCJkaXYiKSx0bzphLmZyb20oKX19KX0sZGVsV3JhcHBlZExpbmVSaWdodDpmdW5jdGlvbih4KXtQYih4LGZ1bmN0aW9uKGEpe3ZhciBiPXguY2hhckNvb3JkcyhhLmhlYWQsImRpdiIpLnRvcCs1LGM9eC5jb29yZHNDaGFyKHtsZWZ0OnguZGlzcGxheS5saW5lRGl2Lm9mZnNldFdpZHRoKzEwMCx0b3A6Yn0sImRpdiIpO3JldHVybntmcm9tOmEuZnJvbSgpLHRvOmN9fSl9LHVuZG86ZnVuY3Rpb24oeCl7eC51bmRvKCl9LHJlZG86ZnVuY3Rpb24oeCl7eC5yZWRvKCl9LHVuZG9TZWxlY3Rpb246ZnVuY3Rpb24oeCl7eC51bmRvU2VsZWN0aW9uKCl9LHJlZG9TZWxlY3Rpb246ZnVuY3Rpb24oeCl7eC5yZWRvU2VsZWN0aW9uKCl9LGdvRG9jU3RhcnQ6ZnVuY3Rpb24oeCl7eC5leHRlbmRTZWxlY3Rpb24oSmUoeC5maXJzdExpbmUoKSwwKSl9LGdvRG9jRW5kOmZ1bmN0aW9uKHgpe3guZXh0ZW5kU2VsZWN0aW9uKEplKHgubGFzdExpbmUoKSkpfSxnb0xpbmVTdGFydDpmdW5jdGlvbih4KXt4LmV4dGVuZFNlbGVjdGlvbnNCeShmdW5jdGlvbihhKXtyZXR1cm4gZGUoeCxhLmhlYWQubGluZSl9LHtvcmlnaW46Iittb3ZlIixiaWFzOjF9KX0sZ29MaW5lU3RhcnRTbWFydDpmdW5jdGlvbih4KXt4LmV4dGVuZFNlbGVjdGlvbnNCeShmdW5jdGlvbihhKXtyZXR1cm4gZmUoeCxhLmhlYWQpfSx7b3JpZ2luOiIrbW92ZSIsYmlhczoxfSl9LGdvTGluZUVuZDpmdW5jdGlvbih4KXt4LmV4dGVuZFNlbGVjdGlvbnNCeShmdW5jdGlvbihhKXtyZXR1cm4gZWUoeCxhLmhlYWQubGluZSl9LHtvcmlnaW46Iittb3ZlIixiaWFzOi0xfSl9LGdvTGluZVJpZ2h0OmZ1bmN0aW9uKHgpe3guZXh0ZW5kU2VsZWN0aW9uc0J5KGZ1bmN0aW9uKGEpe3ZhciBiPXguY2hhckNvb3JkcyhhLmhlYWQsImRpdiIpLnRvcCs1O3JldHVybiB4LmNvb3Jkc0NoYXIoe2xlZnQ6eC5kaXNwbGF5LmxpbmVEaXYub2Zmc2V0V2lkdGgrMTAwLHRvcDpifSwiZGl2Iil9LExmKX0sZ29MaW5lTGVmdDpmdW5jdGlvbih4KXt4LmV4dGVuZFNlbGVjdGlvbnNCeShmdW5jdGlvbihhKXt2YXIgYj14LmNoYXJDb29yZHMoYS5oZWFkLCJkaXYiKS50b3ArNTtyZXR1cm4geC5jb29yZHNDaGFyKHtsZWZ0OjAsdG9wOmJ9LCJkaXYiKX0sTGYpfSxnb0xpbmVMZWZ0U21hcnQ6ZnVuY3Rpb24oeCl7eC5leHRlbmRTZWxlY3Rpb25zQnkoZnVuY3Rpb24oYSl7dmFyIGI9eC5jaGFyQ29vcmRzKGEuaGVhZCwiZGl2IikudG9wKzUsYz14LmNvb3Jkc0NoYXIoe2xlZnQ6MCx0b3A6Yn0sImRpdiIpO3JldHVybiBjLmNoPHguZ2V0TGluZShjLmxpbmUpLnNlYXJjaCgvXFMvKT9mZSh4LGEuaGVhZCk6Y30sTGYpfSxnb0xpbmVVcDpmdW5jdGlvbih4KXt4Lm1vdmVWKC0xLCJsaW5lIil9LGdvTGluZURvd246ZnVuY3Rpb24oeCl7eC5tb3ZlVigxLCJsaW5lIil9LGdvUGFnZVVwOmZ1bmN0aW9uKHgpe3gubW92ZVYoLTEsInBhZ2UiKX0sZ29QYWdlRG93bjpmdW5jdGlvbih4KXt4Lm1vdmVWKDEsInBhZ2UiKX0sZ29DaGFyTGVmdDpmdW5jdGlvbih4KXt4Lm1vdmVIKC0xLCJjaGFyIil9LGdvQ2hhclJpZ2h0OmZ1bmN0aW9uKHgpe3gubW92ZUgoMSwiY2hhciIpfSxnb0NvbHVtbkxlZnQ6ZnVuY3Rpb24oeCl7eC5tb3ZlSCgtMSwiY29sdW1uIil9LGdvQ29sdW1uUmlnaHQ6ZnVuY3Rpb24oeCl7eC5tb3ZlSCgxLCJjb2x1bW4iKX0sZ29Xb3JkTGVmdDpmdW5jdGlvbih4KXt4Lm1vdmVIKC0xLCJ3b3JkIil9LGdvR3JvdXBSaWdodDpmdW5jdGlvbih4KXt4Lm1vdmVIKDEsImdyb3VwIil9LGdvR3JvdXBMZWZ0OmZ1bmN0aW9uKHgpe3gubW92ZUgoLTEsImdyb3VwIil9LGdvV29yZFJpZ2h0OmZ1bmN0aW9uKHgpe3gubW92ZUgoMSwid29yZCIpfSxkZWxDaGFyQmVmb3JlOmZ1bmN0aW9uKHgpe3guZGVsZXRlSCgtMSwiY2hhciIpfSxkZWxDaGFyQWZ0ZXI6ZnVuY3Rpb24oeCl7eC5kZWxldGVIKDEsImNoYXIiKX0sZGVsV29yZEJlZm9yZTpmdW5jdGlvbih4KXt4LmRlbGV0ZUgoLTEsIndvcmQiKX0sZGVsV29yZEFmdGVyOmZ1bmN0aW9uKHgpe3guZGVsZXRlSCgxLCJ3b3JkIil9LGRlbEdyb3VwQmVmb3JlOmZ1bmN0aW9uKHgpe3guZGVsZXRlSCgtMSwiZ3JvdXAiKX0sZGVsR3JvdXBBZnRlcjpmdW5jdGlvbih4KXt4LmRlbGV0ZUgoMSwiZ3JvdXAiKX0saW5kZW50QXV0bzpmdW5jdGlvbih4KXt4LmluZGVudFNlbGVjdGlvbigic21hcnQiKX0saW5kZW50TW9yZTpmdW5jdGlvbih4KXt4LmluZGVudFNlbGVjdGlvbigiYWRkIil9LGluZGVudExlc3M6ZnVuY3Rpb24oeCl7eC5pbmRlbnRTZWxlY3Rpb24oInN1YnRyYWN0Iil9LGluc2VydFRhYjpmdW5jdGlvbih4KXt4LnJlcGxhY2VTZWxlY3Rpb24oIlx0Iil9LGluc2VydFNvZnRUYWI6ZnVuY3Rpb24oeCl7Zm9yKHZhciBhPVtdLGI9eC5saXN0U2VsZWN0aW9ucygpLGM9eC5vcHRpb25zLnRhYlNpemUsZD0wO2Q8Yi5sZW5ndGg7ZCsrKXt2YXIgZT1iW2RdLmZyb20oKSxmPU1mKHguZ2V0TGluZShlLmxpbmUpLGUuY2gsYyk7YS5wdXNoKG5ldyBBcnJheShjLWYlYysxKS5qb2luKCIgIikpfXgucmVwbGFjZVNlbGVjdGlvbnMoYSl9LGRlZmF1bHRUYWI6ZnVuY3Rpb24oeCl7eC5zb21ldGhpbmdTZWxlY3RlZCgpP3guaW5kZW50U2VsZWN0aW9uKCJhZGQiKTp4LmV4ZWNDb21tYW5kKCJpbnNlcnRUYWIiKX0sdHJhbnNwb3NlQ2hhcnM6ZnVuY3Rpb24oeCl7RGEoeCxmdW5jdGlvbigpe2Zvcih2YXIgYT14Lmxpc3RTZWxlY3Rpb25zKCksYj1bXSxjPTA7YzxhLmxlbmd0aDtjKyspe3ZhciBkPWFbY10uaGVhZCxlPVljKHguZG9jLGQubGluZSkudGV4dDtpZihlKWlmKGQuY2g9PWUubGVuZ3RoJiYoZD1uZXcgSmUoZC5saW5lLGQuY2gtMSkpLGQuY2g+MClkPW5ldyBKZShkLmxpbmUsZC5jaCsxKSx4LnJlcGxhY2VSYW5nZShlLmNoYXJBdChkLmNoLTEpK2UuY2hhckF0KGQuY2gtMiksSmUoZC5saW5lLGQuY2gtMiksZCwiK3RyYW5zcG9zZSIpO2Vsc2UgaWYoZC5saW5lPnguZG9jLmZpcnN0KXt2YXIgZj1ZYyh4LmRvYyxkLmxpbmUtMSkudGV4dDtmJiZ4LnJlcGxhY2VSYW5nZShlLmNoYXJBdCgwKSt4LmRvYy5saW5lU2VwYXJhdG9yKCkrZi5jaGFyQXQoZi5sZW5ndGgtMSksSmUoZC5saW5lLTEsZi5sZW5ndGgtMSksSmUoZC5saW5lLDEpLCIrdHJhbnNwb3NlIil9Yi5wdXNoKG5ldyBreChkLGQpKX14LnNldFNlbGVjdGlvbnMoYil9KX0sbmV3bGluZUFuZEluZGVudDpmdW5jdGlvbih4KXtEYSh4LGZ1bmN0aW9uKCl7Zm9yKHZhciBhPXgubGlzdFNlbGVjdGlvbnMoKS5sZW5ndGgsYj0wO2E+YjtiKyspe3ZhciBjPXgubGlzdFNlbGVjdGlvbnMoKVtiXTt4LnJlcGxhY2VSYW5nZSh4LmRvYy5saW5lU2VwYXJhdG9yKCksYy5hbmNob3IsYy5oZWFkLCIraW5wdXQiKSx4LmluZGVudExpbmUoYy5mcm9tKCkubGluZSsxLG51bGwsITApfUxiKHgpfSl9LHRvZ2dsZU92ZXJ3cml0ZTpmdW5jdGlvbih4KXt4LnRvZ2dsZU92ZXJ3cml0ZSgpfX0saGY9eC5rZXlNYXA9e307aGYuYmFzaWM9e0xlZnQ6ImdvQ2hhckxlZnQiLFJpZ2h0OiJnb0NoYXJSaWdodCIsVXA6ImdvTGluZVVwIixEb3duOiJnb0xpbmVEb3duIixFbmQ6ImdvTGluZUVuZCIsSG9tZToiZ29MaW5lU3RhcnRTbWFydCIsUGFnZVVwOiJnb1BhZ2VVcCIsUGFnZURvd246ImdvUGFnZURvd24iLERlbGV0ZToiZGVsQ2hhckFmdGVyIixCYWNrc3BhY2U6ImRlbENoYXJCZWZvcmUiLCJTaGlmdC1CYWNrc3BhY2UiOiJkZWxDaGFyQmVmb3JlIixUYWI6ImRlZmF1bHRUYWIiLCJTaGlmdC1UYWIiOiJpbmRlbnRBdXRvIixFbnRlcjoibmV3bGluZUFuZEluZGVudCIsSW5zZXJ0OiJ0b2dnbGVPdmVyd3JpdGUiLEVzYzoic2luZ2xlU2VsZWN0aW9uIn0saGYucGNEZWZhdWx0PXsiQ3RybC1BIjoic2VsZWN0QWxsIiwiQ3RybC1EIjoiZGVsZXRlTGluZSIsIkN0cmwtWiI6InVuZG8iLCJTaGlmdC1DdHJsLVoiOiJyZWRvIiwiQ3RybC1ZIjoicmVkbyIsIkN0cmwtSG9tZSI6ImdvRG9jU3RhcnQiLCJDdHJsLUVuZCI6ImdvRG9jRW5kIiwiQ3RybC1VcCI6ImdvTGluZVVwIiwiQ3RybC1Eb3duIjoiZ29MaW5lRG93biIsIkN0cmwtTGVmdCI6ImdvR3JvdXBMZWZ0IiwiQ3RybC1SaWdodCI6ImdvR3JvdXBSaWdodCIsIkFsdC1MZWZ0IjoiZ29MaW5lU3RhcnQiLCJBbHQtUmlnaHQiOiJnb0xpbmVFbmQiLCJDdHJsLUJhY2tzcGFjZSI6ImRlbEdyb3VwQmVmb3JlIiwiQ3RybC1EZWxldGUiOiJkZWxHcm91cEFmdGVyIiwiQ3RybC1TIjoic2F2ZSIsIkN0cmwtRiI6ImZpbmQiLCJDdHJsLUciOiJmaW5kTmV4dCIsIlNoaWZ0LUN0cmwtRyI6ImZpbmRQcmV2IiwiU2hpZnQtQ3RybC1GIjoicmVwbGFjZSIsIlNoaWZ0LUN0cmwtUiI6InJlcGxhY2VBbGwiLCJDdHJsLVsiOiJpbmRlbnRMZXNzIiwiQ3RybC1dIjoiaW5kZW50TW9yZSIsIkN0cmwtVSI6InVuZG9TZWxlY3Rpb24iLCJTaGlmdC1DdHJsLVUiOiJyZWRvU2VsZWN0aW9uIiwiQWx0LVUiOiJyZWRvU2VsZWN0aW9uIixmYWxsdGhyb3VnaDoiYmFzaWMifSxoZi5lbWFjc3k9eyJDdHJsLUYiOiJnb0NoYXJSaWdodCIsIkN0cmwtQiI6ImdvQ2hhckxlZnQiLCJDdHJsLVAiOiJnb0xpbmVVcCIsIkN0cmwtTiI6ImdvTGluZURvd24iLCJBbHQtRiI6ImdvV29yZFJpZ2h0IiwiQWx0LUIiOiJnb1dvcmRMZWZ0IiwiQ3RybC1BIjoiZ29MaW5lU3RhcnQiLCJDdHJsLUUiOiJnb0xpbmVFbmQiLCJDdHJsLVYiOiJnb1BhZ2VEb3duIiwiU2hpZnQtQ3RybC1WIjoiZ29QYWdlVXAiLCJDdHJsLUQiOiJkZWxDaGFyQWZ0ZXIiLCJDdHJsLUgiOiJkZWxDaGFyQmVmb3JlIiwiQWx0LUQiOiJkZWxXb3JkQWZ0ZXIiLCJBbHQtQmFja3NwYWNlIjoiZGVsV29yZEJlZm9yZSIsIkN0cmwtSyI6ImtpbGxMaW5lIiwiQ3RybC1UIjoidHJhbnNwb3NlQ2hhcnMifSxoZi5tYWNEZWZhdWx0PXsiQ21kLUEiOiJzZWxlY3RBbGwiLCJDbWQtRCI6ImRlbGV0ZUxpbmUiLCJDbWQtWiI6InVuZG8iLCJTaGlmdC1DbWQtWiI6InJlZG8iLCJDbWQtWSI6InJlZG8iLCJDbWQtSG9tZSI6ImdvRG9jU3RhcnQiLCJDbWQtVXAiOiJnb0RvY1N0YXJ0IiwiQ21kLUVuZCI6ImdvRG9jRW5kIiwiQ21kLURvd24iOiJnb0RvY0VuZCIsIkFsdC1MZWZ0IjoiZ29Hcm91cExlZnQiLCJBbHQtUmlnaHQiOiJnb0dyb3VwUmlnaHQiLCJDbWQtTGVmdCI6ImdvTGluZUxlZnQiLCJDbWQtUmlnaHQiOiJnb0xpbmVSaWdodCIsIkFsdC1CYWNrc3BhY2UiOiJkZWxHcm91cEJlZm9yZSIsIkN0cmwtQWx0LUJhY2tzcGFjZSI6ImRlbEdyb3VwQWZ0ZXIiLCJBbHQtRGVsZXRlIjoiZGVsR3JvdXBBZnRlciIsIkNtZC1TIjoic2F2ZSIsIkNtZC1GIjoiZmluZCIsIkNtZC1HIjoiZmluZE5leHQiLCJTaGlmdC1DbWQtRyI6ImZpbmRQcmV2IiwiQ21kLUFsdC1GIjoicmVwbGFjZSIsIlNoaWZ0LUNtZC1BbHQtRiI6InJlcGxhY2VBbGwiLCJDbWQtWyI6ImluZGVudExlc3MiLCJDbWQtXSI6ImluZGVudE1vcmUiLCJDbWQtQmFja3NwYWNlIjoiZGVsV3JhcHBlZExpbmVMZWZ0IiwiQ21kLURlbGV0ZSI6ImRlbFdyYXBwZWRMaW5lUmlnaHQiLCJDbWQtVSI6InVuZG9TZWxlY3Rpb24iLCJTaGlmdC1DbWQtVSI6InJlZG9TZWxlY3Rpb24iLCJDdHJsLVVwIjoiZ29Eb2NTdGFydCIsIkN0cmwtRG93biI6ImdvRG9jRW5kIixmYWxsdGhyb3VnaDpbImJhc2ljIiwiZW1hY3N5Il19LGhmLmRlZmF1bHQ9Q2U/aGYubWFjRGVmYXVsdDpoZi5wY0RlZmF1bHQseC5ub3JtYWxpemVLZXlNYXA9ZnVuY3Rpb24oeCl7dmFyIGE9e307Zm9yKHZhciBiIGluIHgpaWYoeC5oYXNPd25Qcm9wZXJ0eShiKSl7dmFyIGM9eFtiXTtpZigvXihuYW1lfGZhbGx0aHJvdWdofChkZXxhdCl0YWNoKSQvLnRlc3QoYikpY29udGludWU7aWYoIi4uLiI9PWMpe2RlbGV0ZSB4W2JdO2NvbnRpbnVlfWZvcih2YXIgZD1IZChiLnNwbGl0KCIgIiksVGIpLGU9MDtlPGQubGVuZ3RoO2UrKyl7dmFyIGYsZztlPT1kLmxlbmd0aC0xPyhnPWQuam9pbigiICIpLGY9Yyk6KGc9ZC5zbGljZSgwLGUrMSkuam9pbigiICIpLGY9Ii4uLiIpO3ZhciBoPWFbZ107aWYoaCl7aWYoaCE9Zil0aHJvdyBuZXcgRXJyb3IoIkluY29uc2lzdGVudCBiaW5kaW5ncyBmb3IgIitnKX1lbHNlIGFbZ109Zn1kZWxldGUgeFtiXX1mb3IodmFyIGkgaW4gYSl4W2ldPWFbaV07cmV0dXJuIHh9O3ZhciBqZj14Lmxvb2t1cEtleT1mdW5jdGlvbih4LGEsYixjKXt2YXIgZD0oYT1VYihhKSkuY2FsbD9hLmNhbGwoeCxjKTphW3hdO2lmKCExPT09ZClyZXR1cm4ibm90aGluZyI7aWYoIi4uLiI9PT1kKXJldHVybiJtdWx0aSI7aWYobnVsbCE9ZCYmYihkKSlyZXR1cm4iaGFuZGxlZCI7aWYoYS5mYWxsdGhyb3VnaCl7aWYoIltvYmplY3QgQXJyYXldIiE9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGEuZmFsbHRocm91Z2gpKXJldHVybiBqZih4LGEuZmFsbHRocm91Z2gsYixjKTtmb3IodmFyIGU9MDtlPGEuZmFsbHRocm91Z2gubGVuZ3RoO2UrKyl7dmFyIGY9amYoeCxhLmZhbGx0aHJvdWdoW2VdLGIsYyk7aWYoZilyZXR1cm4gZn19fSxrZj14LmlzTW9kaWZpZXJLZXk9ZnVuY3Rpb24oeCl7dmFyIGE9InN0cmluZyI9PXR5cGVvZiB4P3g6Y2dbeC5rZXlDb2RlXTtyZXR1cm4iQ3RybCI9PWF8fCJBbHQiPT1hfHwiU2hpZnQiPT1hfHwiTW9kIj09YX0sbGY9eC5rZXlOYW1lPWZ1bmN0aW9uKHgsYSl7aWYodmUmJjM0PT14LmtleUNvZGUmJnguY2hhcilyZXR1cm4hMTt2YXIgYj1jZ1t4LmtleUNvZGVdLGM9YjtyZXR1cm4gbnVsbCE9YyYmIXguYWx0R3JhcGhLZXkmJih4LmFsdEtleSYmIkFsdCIhPWImJihjPSJBbHQtIitjKSwoRmU/eC5tZXRhS2V5OnguY3RybEtleSkmJiJDdHJsIiE9YiYmKGM9IkN0cmwtIitjKSwoRmU/eC5jdHJsS2V5OngubWV0YUtleSkmJiJDbWQiIT1iJiYoYz0iQ21kLSIrYyksIWEmJnguc2hpZnRLZXkmJiJTaGlmdCIhPWImJihjPSJTaGlmdC0iK2MpLGMpfTt4LmZyb21UZXh0QXJlYT1mdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoKXthLnZhbHVlPWguZ2V0VmFsdWUoKX1pZigoYj1iP0tkKGIpOnt9KS52YWx1ZT1hLnZhbHVlLCFiLnRhYmluZGV4JiZhLnRhYkluZGV4JiYoYi50YWJpbmRleD1hLnRhYkluZGV4KSwhYi5wbGFjZWhvbGRlciYmYS5wbGFjZWhvbGRlciYmKGIucGxhY2Vob2xkZXI9YS5wbGFjZWhvbGRlciksbnVsbD09Yi5hdXRvZm9jdXMpe3ZhciBkPVNkKCk7Yi5hdXRvZm9jdXM9ZD09YXx8bnVsbCE9YS5nZXRBdHRyaWJ1dGUoImF1dG9mb2N1cyIpJiZkPT1kb2N1bWVudC5ib2R5fWlmKGEuZm9ybSYmKENmKGEuZm9ybSwic3VibWl0IixjKSwhYi5sZWF2ZVN1Ym1pdE1ldGhvZEFsb25lKSl7dmFyIGU9YS5mb3JtLGY9ZS5zdWJtaXQ7dHJ5e3ZhciBnPWUuc3VibWl0PWZ1bmN0aW9uKCl7YygpLGUuc3VibWl0PWYsZS5zdWJtaXQoKSxlLnN1Ym1pdD1nfX1jYXRjaCh4KXt9fWIuZmluaXNoSW5pdD1mdW5jdGlvbih4KXt4LnNhdmU9Yyx4LmdldFRleHRBcmVhPWZ1bmN0aW9uKCl7cmV0dXJuIGF9LHgudG9UZXh0QXJlYT1mdW5jdGlvbigpe3gudG9UZXh0QXJlYT1pc05hTixjKCksYS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHguZ2V0V3JhcHBlckVsZW1lbnQoKSksYS5zdHlsZS5kaXNwbGF5PSIiLGEuZm9ybSYmKEVmKGEuZm9ybSwic3VibWl0IixjKSwiZnVuY3Rpb24iPT10eXBlb2YgYS5mb3JtLnN1Ym1pdCYmKGEuZm9ybS5zdWJtaXQ9ZikpfX0sYS5zdHlsZS5kaXNwbGF5PSJub25lIjt2YXIgaD14KGZ1bmN0aW9uKHgpe2EucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoeCxhLm5leHRTaWJsaW5nKX0sYik7cmV0dXJuIGh9O3ZhciBtZj14LlN0cmluZ1N0cmVhbT1mdW5jdGlvbih4LGEpe3RoaXMucG9zPXRoaXMuc3RhcnQ9MCx0aGlzLnN0cmluZz14LHRoaXMudGFiU2l6ZT1hfHw4LHRoaXMubGFzdENvbHVtblBvcz10aGlzLmxhc3RDb2x1bW5WYWx1ZT0wLHRoaXMubGluZVN0YXJ0PTB9O21mLnByb3RvdHlwZT17ZW9sOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucG9zPj10aGlzLnN0cmluZy5sZW5ndGh9LHNvbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBvcz09dGhpcy5saW5lU3RhcnR9LHBlZWs6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdHJpbmcuY2hhckF0KHRoaXMucG9zKXx8dm9pZCAwfSxuZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucG9zPHRoaXMuc3RyaW5nLmxlbmd0aD90aGlzLnN0cmluZy5jaGFyQXQodGhpcy5wb3MrKyk6dm9pZCAwfSxlYXQ6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcy5zdHJpbmcuY2hhckF0KHRoaXMucG9zKTtpZigic3RyaW5nIj09dHlwZW9mIHgpdmFyIGI9YT09eDtlbHNlIGI9YSYmKHgudGVzdD94LnRlc3QoYSk6eChhKSk7cmV0dXJuIGI/KCsrdGhpcy5wb3MsYSk6dm9pZCAwfSxlYXRXaGlsZTpmdW5jdGlvbih4KXtmb3IodmFyIGE9dGhpcy5wb3M7dGhpcy5lYXQoeCk7KTtyZXR1cm4gdGhpcy5wb3M+YX0sZWF0U3BhY2U6ZnVuY3Rpb24oKXtmb3IodmFyIHg9dGhpcy5wb3M7L1tcc1x1MDBhMF0vLnRlc3QodGhpcy5zdHJpbmcuY2hhckF0KHRoaXMucG9zKSk7KSsrdGhpcy5wb3M7cmV0dXJuIHRoaXMucG9zPnh9LHNraXBUb0VuZDpmdW5jdGlvbigpe3RoaXMucG9zPXRoaXMuc3RyaW5nLmxlbmd0aH0sc2tpcFRvOmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMuc3RyaW5nLmluZGV4T2YoeCx0aGlzLnBvcyk7cmV0dXJuIGE+LTE/KHRoaXMucG9zPWEsITApOnZvaWQgMH0sYmFja1VwOmZ1bmN0aW9uKHgpe3RoaXMucG9zLT14fSxjb2x1bW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sYXN0Q29sdW1uUG9zPHRoaXMuc3RhcnQmJih0aGlzLmxhc3RDb2x1bW5WYWx1ZT1NZih0aGlzLnN0cmluZyx0aGlzLnN0YXJ0LHRoaXMudGFiU2l6ZSx0aGlzLmxhc3RDb2x1bW5Qb3MsdGhpcy5sYXN0Q29sdW1uVmFsdWUpLHRoaXMubGFzdENvbHVtblBvcz10aGlzLnN0YXJ0KSx0aGlzLmxhc3RDb2x1bW5WYWx1ZS0odGhpcy5saW5lU3RhcnQ/TWYodGhpcy5zdHJpbmcsdGhpcy5saW5lU3RhcnQsdGhpcy50YWJTaXplKTowKX0saW5kZW50YXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gTWYodGhpcy5zdHJpbmcsbnVsbCx0aGlzLnRhYlNpemUpLSh0aGlzLmxpbmVTdGFydD9NZih0aGlzLnN0cmluZyx0aGlzLmxpbmVTdGFydCx0aGlzLnRhYlNpemUpOjApfSxtYXRjaDpmdW5jdGlvbih4LGEsYil7aWYoInN0cmluZyIhPXR5cGVvZiB4KXt2YXIgYz10aGlzLnN0cmluZy5zbGljZSh0aGlzLnBvcykubWF0Y2goeCk7cmV0dXJuIGMmJmMuaW5kZXg+MD9udWxsOihjJiYhMSE9PWEmJih0aGlzLnBvcys9Y1swXS5sZW5ndGgpLGMpfXZhciBkPWZ1bmN0aW9uKHgpe3JldHVybiBiP3gudG9Mb3dlckNhc2UoKTp4fTtyZXR1cm4gZCh0aGlzLnN0cmluZy5zdWJzdHIodGhpcy5wb3MseC5sZW5ndGgpKT09ZCh4KT8oITEhPT1hJiYodGhpcy5wb3MrPXgubGVuZ3RoKSwhMCk6dm9pZCAwfSxjdXJyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RyaW5nLnNsaWNlKHRoaXMuc3RhcnQsdGhpcy5wb3MpfSxoaWRlRmlyc3RDaGFyczpmdW5jdGlvbih4LGEpe3RoaXMubGluZVN0YXJ0Kz14O3RyeXtyZXR1cm4gYSgpfWZpbmFsbHl7dGhpcy5saW5lU3RhcnQtPXh9fX07dmFyIG5mPTAsb2Y9eC5UZXh0TWFya2VyPWZ1bmN0aW9uKHgsYSl7dGhpcy5saW5lcz1bXSx0aGlzLnR5cGU9YSx0aGlzLmRvYz14LHRoaXMuaWQ9KytuZn07Q2Qob2YpLG9mLnByb3RvdHlwZS5jbGVhcj1mdW5jdGlvbigpe2lmKCF0aGlzLmV4cGxpY2l0bHlDbGVhcmVkKXt2YXIgeD10aGlzLmRvYy5jbSxhPXgmJiF4LmN1ck9wO2lmKGEmJnRhKHgpLEJkKHRoaXMsImNsZWFyIikpe3ZhciBiPXRoaXMuZmluZCgpO2ImJndkKHRoaXMsImNsZWFyIixiLmZyb20sYi50byl9Zm9yKHZhciBjPW51bGwsZD1udWxsLGU9MDtlPHRoaXMubGluZXMubGVuZ3RoOysrZSl7dmFyIGY9dGhpcy5saW5lc1tlXSxnPV9iKGYubWFya2VkU3BhbnMsdGhpcyk7eCYmIXRoaXMuY29sbGFwc2VkP0thKHgseGQoZiksInRleHQiKTp4JiYobnVsbCE9Zy50byYmKGQ9eGQoZikpLG51bGwhPWcuZnJvbSYmKGM9eGQoZikpKSxmLm1hcmtlZFNwYW5zPXhjKGYubWFya2VkU3BhbnMsZyksbnVsbD09Zy5mcm9tJiZ0aGlzLmNvbGxhcHNlZCYmIXVjKHRoaXMuZG9jLGYpJiZ4JiZfYyhmLHJhKHguZGlzcGxheSkpfWlmKHgmJnRoaXMuY29sbGFwc2VkJiYheC5vcHRpb25zLmxpbmVXcmFwcGluZylmb3IoZT0wO2U8dGhpcy5saW5lcy5sZW5ndGg7KytlKXt2YXIgaD1xYyh0aGlzLmxpbmVzW2VdKSxpPWsoaCk7aT54LmRpc3BsYXkubWF4TGluZUxlbmd0aCYmKHguZGlzcGxheS5tYXhMaW5lPWgseC5kaXNwbGF5Lm1heExpbmVMZW5ndGg9aSx4LmRpc3BsYXkubWF4TGluZUNoYW5nZWQ9ITApfW51bGwhPWMmJngmJnRoaXMuY29sbGFwc2VkJiZKYSh4LGMsZCsxKSx0aGlzLmxpbmVzLmxlbmd0aD0wLHRoaXMuZXhwbGljaXRseUNsZWFyZWQ9ITAsdGhpcy5hdG9taWMmJnRoaXMuZG9jLmNhbnRFZGl0JiYodGhpcy5kb2MuY2FudEVkaXQ9ITEseCYmRHgoeC5kb2MpKSx4JiZ3ZCh4LCJtYXJrZXJDbGVhcmVkIix4LHRoaXMpLGEmJnZhKHgpLHRoaXMucGFyZW50JiZ0aGlzLnBhcmVudC5jbGVhcigpfX0sb2YucHJvdG90eXBlLmZpbmQ9ZnVuY3Rpb24oeCxhKXtudWxsPT14JiYiYm9va21hcmsiPT10aGlzLnR5cGUmJih4PTEpO2Zvcih2YXIgYixjLGQ9MDtkPHRoaXMubGluZXMubGVuZ3RoOysrZCl7dmFyIGU9dGhpcy5saW5lc1tkXSxmPV9iKGUubWFya2VkU3BhbnMsdGhpcyk7aWYobnVsbCE9Zi5mcm9tJiYoYj1KZShhP2U6eGQoZSksZi5mcm9tKSwtMT09eCkpcmV0dXJuIGI7aWYobnVsbCE9Zi50byYmKGM9SmUoYT9lOnhkKGUpLGYudG8pLDE9PXgpKXJldHVybiBjfXJldHVybiBiJiZ7ZnJvbTpiLHRvOmN9fSxvZi5wcm90b3R5cGUuY2hhbmdlZD1mdW5jdGlvbigpe3ZhciB4PXRoaXMuZmluZCgtMSwhMCksYT10aGlzLGI9dGhpcy5kb2MuY207eCYmYiYmRGEoYixmdW5jdGlvbigpe3ZhciBjPXgubGluZSxkPXhkKHgubGluZSksZT1feChiLGQpO2lmKGUmJihlYShlKSxiLmN1ck9wLnNlbGVjdGlvbkNoYW5nZWQ9Yi5jdXJPcC5mb3JjZVVwZGF0ZT0hMCksYi5jdXJPcC51cGRhdGVNYXhMaW5lPSEwLCF1YyhhLmRvYyxjKSYmbnVsbCE9YS5oZWlnaHQpe3ZhciBmPWEuaGVpZ2h0O2EuaGVpZ2h0PW51bGw7dmFyIGc9eWMoYSktZjtnJiZfYyhjLGMuaGVpZ2h0K2cpfX0pfSxvZi5wcm90b3R5cGUuYXR0YWNoTGluZT1mdW5jdGlvbih4KXtpZighdGhpcy5saW5lcy5sZW5ndGgmJnRoaXMuZG9jLmNtKXt2YXIgYT10aGlzLmRvYy5jbS5jdXJPcDthLm1heWJlSGlkZGVuTWFya2VycyYmLTEhPUdkKGEubWF5YmVIaWRkZW5NYXJrZXJzLHRoaXMpfHwoYS5tYXliZVVuaGlkZGVuTWFya2Vyc3x8KGEubWF5YmVVbmhpZGRlbk1hcmtlcnM9W10pKS5wdXNoKHRoaXMpfXRoaXMubGluZXMucHVzaCh4KX0sb2YucHJvdG90eXBlLmRldGFjaExpbmU9ZnVuY3Rpb24oeCl7aWYodGhpcy5saW5lcy5zcGxpY2UoR2QodGhpcy5saW5lcyx4KSwxKSwhdGhpcy5saW5lcy5sZW5ndGgmJnRoaXMuZG9jLmNtKXt2YXIgYT10aGlzLmRvYy5jbS5jdXJPcDsoYS5tYXliZUhpZGRlbk1hcmtlcnN8fChhLm1heWJlSGlkZGVuTWFya2Vycz1bXSkpLnB1c2godGhpcyl9fTtuZj0wO3ZhciBwZj14LlNoYXJlZFRleHRNYXJrZXI9ZnVuY3Rpb24oeCxhKXt0aGlzLm1hcmtlcnM9eCx0aGlzLnByaW1hcnk9YTtmb3IodmFyIGI9MDtiPHgubGVuZ3RoOysrYil4W2JdLnBhcmVudD10aGlzfTtDZChwZikscGYucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7aWYoIXRoaXMuZXhwbGljaXRseUNsZWFyZWQpe3RoaXMuZXhwbGljaXRseUNsZWFyZWQ9ITA7Zm9yKHZhciB4PTA7eDx0aGlzLm1hcmtlcnMubGVuZ3RoOysreCl0aGlzLm1hcmtlcnNbeF0uY2xlYXIoKTt3ZCh0aGlzLCJjbGVhciIpfX0scGYucHJvdG90eXBlLmZpbmQ9ZnVuY3Rpb24oeCxhKXtyZXR1cm4gdGhpcy5wcmltYXJ5LmZpbmQoeCxhKX07dmFyIHFmPXguTGluZVdpZGdldD1mdW5jdGlvbih4LGEsYil7aWYoYilmb3IodmFyIGMgaW4gYiliLmhhc093blByb3BlcnR5KGMpJiYodGhpc1tjXT1iW2NdKTt0aGlzLmRvYz14LHRoaXMubm9kZT1hfTtDZChxZikscWYucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKCl7dmFyIHg9dGhpcy5kb2MuY20sYT10aGlzLmxpbmUud2lkZ2V0cyxiPXRoaXMubGluZSxjPXhkKGIpO2lmKG51bGwhPWMmJmEpe2Zvcih2YXIgZD0wO2Q8YS5sZW5ndGg7KytkKWFbZF09PXRoaXMmJmEuc3BsaWNlKGQtLSwxKTthLmxlbmd0aHx8KGIud2lkZ2V0cz1udWxsKTt2YXIgZT15Yyh0aGlzKTtfYyhiLE1hdGgubWF4KDAsYi5oZWlnaHQtZSkpLHgmJkRhKHgsZnVuY3Rpb24oKXt3Yyh4LGIsLWUpLEthKHgsYywid2lkZ2V0Iil9KX19LHFmLnByb3RvdHlwZS5jaGFuZ2VkPWZ1bmN0aW9uKCl7dmFyIHg9dGhpcy5oZWlnaHQsYT10aGlzLmRvYy5jbSxiPXRoaXMubGluZTt0aGlzLmhlaWdodD1udWxsO3ZhciBjPXljKHRoaXMpLXg7YyYmKF9jKGIsYi5oZWlnaHQrYyksYSYmRGEoYSxmdW5jdGlvbigpe2EuY3VyT3AuZm9yY2VVcGRhdGU9ITAsd2MoYSxiLGMpfSkpfTt2YXIgcmY9eC5MaW5lPWZ1bmN0aW9uKHgsYSxiKXt0aGlzLnRleHQ9eCxpYyh0aGlzLGEpLHRoaXMuaGVpZ2h0PWI/Yih0aGlzKToxfTtDZChyZikscmYucHJvdG90eXBlLmxpbmVObz1mdW5jdGlvbigpe3JldHVybiB4ZCh0aGlzKX07dmFyIHNmPXt9LHRmPXt9O1VjLnByb3RvdHlwZT17Y2h1bmtTaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGluZXMubGVuZ3RofSxyZW1vdmVJbm5lcjpmdW5jdGlvbih4LGEpe2Zvcih2YXIgYj14LGM9eCthO2M+YjsrK2Ipe3ZhciBkPXRoaXMubGluZXNbYl07dGhpcy5oZWlnaHQtPWQuaGVpZ2h0LEJjKGQpLHdkKGQsImRlbGV0ZSIpfXRoaXMubGluZXMuc3BsaWNlKHgsYSl9LGNvbGxhcHNlOmZ1bmN0aW9uKHgpe3gucHVzaC5hcHBseSh4LHRoaXMubGluZXMpfSxpbnNlcnRJbm5lcjpmdW5jdGlvbih4LGEsYil7dGhpcy5oZWlnaHQrPWIsdGhpcy5saW5lcz10aGlzLmxpbmVzLnNsaWNlKDAseCkuY29uY2F0KGEpLmNvbmNhdCh0aGlzLmxpbmVzLnNsaWNlKHgpKTtmb3IodmFyIGM9MDtjPGEubGVuZ3RoOysrYylhW2NdLnBhcmVudD10aGlzfSxpdGVyTjpmdW5jdGlvbih4LGEsYil7Zm9yKHZhciBjPXgrYTtjPng7Kyt4KWlmKGIodGhpcy5saW5lc1t4XSkpcmV0dXJuITB9fSxWYy5wcm90b3R5cGU9e2NodW5rU2l6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNpemV9LHJlbW92ZUlubmVyOmZ1bmN0aW9uKHgsYSl7dGhpcy5zaXplLT1hO2Zvcih2YXIgYj0wO2I8dGhpcy5jaGlsZHJlbi5sZW5ndGg7KytiKXt2YXIgYz10aGlzLmNoaWxkcmVuW2JdLGQ9Yy5jaHVua1NpemUoKTtpZihkPngpe3ZhciBlPU1hdGgubWluKGEsZC14KSxmPWMuaGVpZ2h0O2lmKGMucmVtb3ZlSW5uZXIoeCxlKSx0aGlzLmhlaWdodC09Zi1jLmhlaWdodCxkPT1lJiYodGhpcy5jaGlsZHJlbi5zcGxpY2UoYi0tLDEpLGMucGFyZW50PW51bGwpLDA9PShhLT1lKSlicmVhazt4PTB9ZWxzZSB4LT1kfWlmKHRoaXMuc2l6ZS1hPDI1JiYodGhpcy5jaGlsZHJlbi5sZW5ndGg+MXx8ISh0aGlzLmNoaWxkcmVuWzBdaW5zdGFuY2VvZiBVYykpKXt2YXIgZz1bXTt0aGlzLmNvbGxhcHNlKGcpLHRoaXMuY2hpbGRyZW49W25ldyBVYyhnKV0sdGhpcy5jaGlsZHJlblswXS5wYXJlbnQ9dGhpc319LGNvbGxhcHNlOmZ1bmN0aW9uKHgpe2Zvcih2YXIgYT0wO2E8dGhpcy5jaGlsZHJlbi5sZW5ndGg7KythKXRoaXMuY2hpbGRyZW5bYV0uY29sbGFwc2UoeCl9LGluc2VydElubmVyOmZ1bmN0aW9uKHgsYSxiKXt0aGlzLnNpemUrPWEubGVuZ3RoLHRoaXMuaGVpZ2h0Kz1iO2Zvcih2YXIgYz0wO2M8dGhpcy5jaGlsZHJlbi5sZW5ndGg7KytjKXt2YXIgZD10aGlzLmNoaWxkcmVuW2NdLGU9ZC5jaHVua1NpemUoKTtpZihlPj14KXtpZihkLmluc2VydElubmVyKHgsYSxiKSxkLmxpbmVzJiZkLmxpbmVzLmxlbmd0aD41MCl7Zm9yKDtkLmxpbmVzLmxlbmd0aD41MDspe3ZhciBmPW5ldyBVYyhkLmxpbmVzLnNwbGljZShkLmxpbmVzLmxlbmd0aC0yNSwyNSkpO2QuaGVpZ2h0LT1mLmhlaWdodCx0aGlzLmNoaWxkcmVuLnNwbGljZShjKzEsMCxmKSxmLnBhcmVudD10aGlzfXRoaXMubWF5YmVTcGlsbCgpfWJyZWFrfXgtPWV9fSxtYXliZVNwaWxsOmZ1bmN0aW9uKCl7aWYoISh0aGlzLmNoaWxkcmVuLmxlbmd0aDw9MTApKXt2YXIgeD10aGlzO2Rve3ZhciBhPW5ldyBWYyh4LmNoaWxkcmVuLnNwbGljZSh4LmNoaWxkcmVuLmxlbmd0aC01LDUpKTtpZih4LnBhcmVudCl7eC5zaXplLT1hLnNpemUseC5oZWlnaHQtPWEuaGVpZ2h0O3ZhciBiPUdkKHgucGFyZW50LmNoaWxkcmVuLHgpO3gucGFyZW50LmNoaWxkcmVuLnNwbGljZShiKzEsMCxhKX1lbHNle3ZhciBjPW5ldyBWYyh4LmNoaWxkcmVuKTtjLnBhcmVudD14LHguY2hpbGRyZW49W2MsYV0seD1jfWEucGFyZW50PXgucGFyZW50fXdoaWxlKHguY2hpbGRyZW4ubGVuZ3RoPjEwKTt4LnBhcmVudC5tYXliZVNwaWxsKCl9fSxpdGVyTjpmdW5jdGlvbih4LGEsYil7Zm9yKHZhciBjPTA7Yzx0aGlzLmNoaWxkcmVuLmxlbmd0aDsrK2Mpe3ZhciBkPXRoaXMuY2hpbGRyZW5bY10sZT1kLmNodW5rU2l6ZSgpO2lmKGU+eCl7dmFyIGY9TWF0aC5taW4oYSxlLXgpO2lmKGQuaXRlck4oeCxmLGIpKXJldHVybiEwO2lmKDA9PShhLT1mKSlicmVhazt4PTB9ZWxzZSB4LT1lfX19O3ZhciB1Zj0wLHZmPXguRG9jPWZ1bmN0aW9uKHgsYSxiLGMpe2lmKCEodGhpcyBpbnN0YW5jZW9mIHZmKSlyZXR1cm4gbmV3IHZmKHgsYSxiLGMpO251bGw9PWImJihiPTApLFZjLmNhbGwodGhpcyxbbmV3IFVjKFtuZXcgcmYoIiIsbnVsbCldKV0pLHRoaXMuZmlyc3Q9Yix0aGlzLnNjcm9sbFRvcD10aGlzLnNjcm9sbExlZnQ9MCx0aGlzLmNhbnRFZGl0PSExLHRoaXMuY2xlYW5HZW5lcmF0aW9uPTEsdGhpcy5mcm9udGllcj1iO3ZhciBkPUplKGIsMCk7dGhpcy5zZWw9bXgoZCksdGhpcy5oaXN0b3J5PW5ldyBkZChudWxsKSx0aGlzLmlkPSsrdWYsdGhpcy5tb2RlT3B0aW9uPWEsdGhpcy5saW5lU2VwPWMsdGhpcy5leHRlbmQ9ITEsInN0cmluZyI9PXR5cGVvZiB4JiYoeD10aGlzLnNwbGl0TGluZXMoeCkpLFRjKHRoaXMse2Zyb206ZCx0bzpkLHRleHQ6eH0pLEF4KHRoaXMsbXgoZCksSmYpfTt2Zi5wcm90b3R5cGU9SmQoVmMucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp2ZixpdGVyOmZ1bmN0aW9uKHgsYSxiKXtiP3RoaXMuaXRlck4oeC10aGlzLmZpcnN0LGEteCxiKTp0aGlzLml0ZXJOKHRoaXMuZmlyc3QsdGhpcy5maXJzdCt0aGlzLnNpemUseCl9LGluc2VydDpmdW5jdGlvbih4LGEpe2Zvcih2YXIgYj0wLGM9MDtjPGEubGVuZ3RoOysrYyliKz1hW2NdLmhlaWdodDt0aGlzLmluc2VydElubmVyKHgtdGhpcy5maXJzdCxhLGIpfSxyZW1vdmU6ZnVuY3Rpb24oeCxhKXt0aGlzLnJlbW92ZUlubmVyKHgtdGhpcy5maXJzdCxhKX0sZ2V0VmFsdWU6ZnVuY3Rpb24oeCl7dmFyIGE9JGModGhpcyx0aGlzLmZpcnN0LHRoaXMuZmlyc3QrdGhpcy5zaXplKTtyZXR1cm4hMT09PXg/YTphLmpvaW4oeHx8dGhpcy5saW5lU2VwYXJhdG9yKCkpfSxzZXRWYWx1ZTpHYShmdW5jdGlvbih4KXt2YXIgYT1KZSh0aGlzLmZpcnN0LDApLGI9dGhpcy5maXJzdCt0aGlzLnNpemUtMTt6Yih0aGlzLHtmcm9tOmEsdG86SmUoYixZYyh0aGlzLGIpLnRleHQubGVuZ3RoKSx0ZXh0OnRoaXMuc3BsaXRMaW5lcyh4KSxvcmlnaW46InNldFZhbHVlIixmdWxsOiEwfSwhMCksQXgodGhpcyxteChhKSl9KSxyZXBsYWNlUmFuZ2U6ZnVuY3Rpb24oeCxhLGIsYyl7RmIodGhpcyx4LGE9b3godGhpcyxhKSxiPWI/b3godGhpcyxiKTphLGMpfSxnZXRSYW5nZTpmdW5jdGlvbih4LGEsYil7dmFyIGM9WmModGhpcyxveCh0aGlzLHgpLG94KHRoaXMsYSkpO3JldHVybiExPT09Yj9jOmMuam9pbihifHx0aGlzLmxpbmVTZXBhcmF0b3IoKSl9LGdldExpbmU6ZnVuY3Rpb24oeCl7dmFyIGE9dGhpcy5nZXRMaW5lSGFuZGxlKHgpO3JldHVybiBhJiZhLnRleHR9LGdldExpbmVIYW5kbGU6ZnVuY3Rpb24oeCl7cmV0dXJuIHF4KHRoaXMseCk/WWModGhpcyx4KTp2b2lkIDB9LGdldExpbmVOdW1iZXI6ZnVuY3Rpb24oeCl7cmV0dXJuIHhkKHgpfSxnZXRMaW5lSGFuZGxlVmlzdWFsU3RhcnQ6ZnVuY3Rpb24oeCl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiB4JiYoeD1ZYyh0aGlzLHgpKSxxYyh4KX0sbGluZUNvdW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2l6ZX0sZmlyc3RMaW5lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlyc3R9LGxhc3RMaW5lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlyc3QrdGhpcy5zaXplLTF9LGNsaXBQb3M6ZnVuY3Rpb24oeCl7cmV0dXJuIG94KHRoaXMseCl9LGdldEN1cnNvcjpmdW5jdGlvbih4KXt2YXIgYT10aGlzLnNlbC5wcmltYXJ5KCk7cmV0dXJuIG51bGw9PXh8fCJoZWFkIj09eD9hLmhlYWQ6ImFuY2hvciI9PXg/YS5hbmNob3I6ImVuZCI9PXh8fCJ0byI9PXh8fCExPT09eD9hLnRvKCk6YS5mcm9tKCl9LGxpc3RTZWxlY3Rpb25zOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2VsLnJhbmdlc30sc29tZXRoaW5nU2VsZWN0ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZWwuc29tZXRoaW5nU2VsZWN0ZWQoKX0sc2V0Q3Vyc29yOkdhKGZ1bmN0aW9uKHgsYSxiKXt3eCh0aGlzLG94KHRoaXMsIm51bWJlciI9PXR5cGVvZiB4P0plKHgsYXx8MCk6eCksbnVsbCxiKX0pLHNldFNlbGVjdGlvbjpHYShmdW5jdGlvbih4LGEsYil7d3godGhpcyxveCh0aGlzLHgpLG94KHRoaXMsYXx8eCksYil9KSxleHRlbmRTZWxlY3Rpb246R2EoZnVuY3Rpb24oeCxhLGIpe3R4KHRoaXMsb3godGhpcyx4KSxhJiZveCh0aGlzLGEpLGIpfSksZXh0ZW5kU2VsZWN0aW9uczpHYShmdW5jdGlvbih4LGEpe3V4KHRoaXMscngodGhpcyx4LGEpKX0pLGV4dGVuZFNlbGVjdGlvbnNCeTpHYShmdW5jdGlvbih4LGEpe3V4KHRoaXMsSGQodGhpcy5zZWwucmFuZ2VzLHgpLGEpfSksc2V0U2VsZWN0aW9uczpHYShmdW5jdGlvbih4LGEsYil7aWYoeC5sZW5ndGgpe2Zvcih2YXIgYz0wLGQ9W107Yzx4Lmxlbmd0aDtjKyspZFtjXT1uZXcga3gob3godGhpcyx4W2NdLmFuY2hvciksb3godGhpcyx4W2NdLmhlYWQpKTtudWxsPT1hJiYoYT1NYXRoLm1pbih4Lmxlbmd0aC0xLHRoaXMuc2VsLnByaW1JbmRleCkpLEF4KHRoaXMsbHgoZCxhKSxiKX19KSxhZGRTZWxlY3Rpb246R2EoZnVuY3Rpb24oeCxhLGIpe3ZhciBjPXRoaXMuc2VsLnJhbmdlcy5zbGljZSgwKTtjLnB1c2gobmV3IGt4KG94KHRoaXMseCksb3godGhpcyxhfHx4KSkpLEF4KHRoaXMsbHgoYyxjLmxlbmd0aC0xKSxiKX0pLGdldFNlbGVjdGlvbjpmdW5jdGlvbih4KXtmb3IodmFyIGEsYj10aGlzLnNlbC5yYW5nZXMsYz0wO2M8Yi5sZW5ndGg7YysrKXt2YXIgZD1aYyh0aGlzLGJbY10uZnJvbSgpLGJbY10udG8oKSk7YT1hP2EuY29uY2F0KGQpOmR9cmV0dXJuITE9PT14P2E6YS5qb2luKHh8fHRoaXMubGluZVNlcGFyYXRvcigpKX0sZ2V0U2VsZWN0aW9uczpmdW5jdGlvbih4KXtmb3IodmFyIGE9W10sYj10aGlzLnNlbC5yYW5nZXMsYz0wO2M8Yi5sZW5ndGg7YysrKXt2YXIgZD1aYyh0aGlzLGJbY10uZnJvbSgpLGJbY10udG8oKSk7ITEhPT14JiYoZD1kLmpvaW4oeHx8dGhpcy5saW5lU2VwYXJhdG9yKCkpKSxhW2NdPWR9cmV0dXJuIGF9LHJlcGxhY2VTZWxlY3Rpb246ZnVuY3Rpb24oeCxhLGIpe2Zvcih2YXIgYz1bXSxkPTA7ZDx0aGlzLnNlbC5yYW5nZXMubGVuZ3RoO2QrKyljW2RdPXg7dGhpcy5yZXBsYWNlU2VsZWN0aW9ucyhjLGEsYnx8IitpbnB1dCIpfSxyZXBsYWNlU2VsZWN0aW9uczpHYShmdW5jdGlvbih4LGEsYil7Zm9yKHZhciBjPVtdLGQ9dGhpcy5zZWwsZT0wO2U8ZC5yYW5nZXMubGVuZ3RoO2UrKyl7dmFyIGY9ZC5yYW5nZXNbZV07Y1tlXT17ZnJvbTpmLmZyb20oKSx0bzpmLnRvKCksdGV4dDp0aGlzLnNwbGl0TGluZXMoeFtlXSksb3JpZ2luOmJ9fXZhciBnPWEmJiJlbmQiIT1hJiZ3Yih0aGlzLGMsYSk7Zm9yKGU9Yy5sZW5ndGgtMTtlPj0wO2UtLSl6Yih0aGlzLGNbZV0pO2c/engodGhpcyxnKTp0aGlzLmNtJiZMYih0aGlzLmNtKX0pLHVuZG86R2EoZnVuY3Rpb24oKXtCYih0aGlzLCJ1bmRvIil9KSxyZWRvOkdhKGZ1bmN0aW9uKCl7QmIodGhpcywicmVkbyIpfSksdW5kb1NlbGVjdGlvbjpHYShmdW5jdGlvbigpe0JiKHRoaXMsInVuZG8iLCEwKX0pLHJlZG9TZWxlY3Rpb246R2EoZnVuY3Rpb24oKXtCYih0aGlzLCJyZWRvIiwhMCl9KSxzZXRFeHRlbmRpbmc6ZnVuY3Rpb24oeCl7dGhpcy5leHRlbmQ9eH0sZ2V0RXh0ZW5kaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXh0ZW5kfSxoaXN0b3J5U2l6ZTpmdW5jdGlvbigpe2Zvcih2YXIgeD10aGlzLmhpc3RvcnksYT0wLGI9MCxjPTA7Yzx4LmRvbmUubGVuZ3RoO2MrKyl4LmRvbmVbY10ucmFuZ2VzfHwrK2E7Zm9yKGM9MDtjPHgudW5kb25lLmxlbmd0aDtjKyspeC51bmRvbmVbY10ucmFuZ2VzfHwrK2I7cmV0dXJue3VuZG86YSxyZWRvOmJ9fSxjbGVhckhpc3Rvcnk6ZnVuY3Rpb24oKXt0aGlzLmhpc3Rvcnk9bmV3IGRkKHRoaXMuaGlzdG9yeS5tYXhHZW5lcmF0aW9uKX0sbWFya0NsZWFuOmZ1bmN0aW9uKCl7dGhpcy5jbGVhbkdlbmVyYXRpb249dGhpcy5jaGFuZ2VHZW5lcmF0aW9uKCEwKX0sY2hhbmdlR2VuZXJhdGlvbjpmdW5jdGlvbih4KXtyZXR1cm4geCYmKHRoaXMuaGlzdG9yeS5sYXN0T3A9dGhpcy5oaXN0b3J5Lmxhc3RTZWxPcD10aGlzLmhpc3RvcnkubGFzdE9yaWdpbj1udWxsKSx0aGlzLmhpc3RvcnkuZ2VuZXJhdGlvbn0saXNDbGVhbjpmdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5oaXN0b3J5LmdlbmVyYXRpb249PSh4fHx0aGlzLmNsZWFuR2VuZXJhdGlvbil9LGdldEhpc3Rvcnk6ZnVuY3Rpb24oKXtyZXR1cm57ZG9uZTpvZCh0aGlzLmhpc3RvcnkuZG9uZSksdW5kb25lOm9kKHRoaXMuaGlzdG9yeS51bmRvbmUpfX0sc2V0SGlzdG9yeTpmdW5jdGlvbih4KXt2YXIgYT10aGlzLmhpc3Rvcnk9bmV3IGRkKHRoaXMuaGlzdG9yeS5tYXhHZW5lcmF0aW9uKTthLmRvbmU9b2QoeC5kb25lLnNsaWNlKDApLG51bGwsITApLGEudW5kb25lPW9kKHgudW5kb25lLnNsaWNlKDApLG51bGwsITApfSxhZGRMaW5lQ2xhc3M6R2EoZnVuY3Rpb24oeCxhLGIpe3JldHVybiBPYih0aGlzLHgsImd1dHRlciI9PWE/Imd1dHRlciI6ImNsYXNzIixmdW5jdGlvbih4KXt2YXIgYz0idGV4dCI9PWE/InRleHRDbGFzcyI6ImJhY2tncm91bmQiPT1hPyJiZ0NsYXNzIjoiZ3V0dGVyIj09YT8iZ3V0dGVyQ2xhc3MiOiJ3cmFwQ2xhc3MiO2lmKHhbY10pe2lmKFRkKGIpLnRlc3QoeFtjXSkpcmV0dXJuITE7eFtjXSs9IiAiK2J9ZWxzZSB4W2NdPWI7cmV0dXJuITB9KX0pLHJlbW92ZUxpbmVDbGFzczpHYShmdW5jdGlvbih4LGEsYil7cmV0dXJuIE9iKHRoaXMseCwiZ3V0dGVyIj09YT8iZ3V0dGVyIjoiY2xhc3MiLGZ1bmN0aW9uKHgpe3ZhciBjPSJ0ZXh0Ij09YT8idGV4dENsYXNzIjoiYmFja2dyb3VuZCI9PWE/ImJnQ2xhc3MiOiJndXR0ZXIiPT1hPyJndXR0ZXJDbGFzcyI6IndyYXBDbGFzcyIsZD14W2NdO2lmKCFkKXJldHVybiExO2lmKG51bGw9PWIpeFtjXT1udWxsO2Vsc2V7dmFyIGU9ZC5tYXRjaChUZChiKSk7aWYoIWUpcmV0dXJuITE7dmFyIGY9ZS5pbmRleCtlWzBdLmxlbmd0aDt4W2NdPWQuc2xpY2UoMCxlLmluZGV4KSsoZS5pbmRleCYmZiE9ZC5sZW5ndGg/IiAiOiIiKStkLnNsaWNlKGYpfHxudWxsfXJldHVybiEwfSl9KSxhZGRMaW5lV2lkZ2V0OkdhKGZ1bmN0aW9uKHgsYSxiKXtyZXR1cm4gemModGhpcyx4LGEsYil9KSxyZW1vdmVMaW5lV2lkZ2V0OmZ1bmN0aW9uKHgpe3guY2xlYXIoKX0sbWFya1RleHQ6ZnVuY3Rpb24oeCxhLGIpe3JldHVybiBWYih0aGlzLG94KHRoaXMseCksb3godGhpcyxhKSxiLGImJmIudHlwZXx8InJhbmdlIil9LHNldEJvb2ttYXJrOmZ1bmN0aW9uKHgsYSl7dmFyIGI9e3JlcGxhY2VkV2l0aDphJiYobnVsbD09YS5ub2RlVHlwZT9hLndpZGdldDphKSxpbnNlcnRMZWZ0OmEmJmEuaW5zZXJ0TGVmdCxjbGVhcldoZW5FbXB0eTohMSxzaGFyZWQ6YSYmYS5zaGFyZWQsaGFuZGxlTW91c2VFdmVudHM6YSYmYS5oYW5kbGVNb3VzZUV2ZW50c307cmV0dXJuIFZiKHRoaXMseD1veCh0aGlzLHgpLHgsYiwiYm9va21hcmsiKX0sZmluZE1hcmtzQXQ6ZnVuY3Rpb24oeCl7dmFyIGE9W10sYj1ZYyh0aGlzLCh4PW94KHRoaXMseCkpLmxpbmUpLm1hcmtlZFNwYW5zO2lmKGIpZm9yKHZhciBjPTA7YzxiLmxlbmd0aDsrK2Mpe3ZhciBkPWJbY107KG51bGw9PWQuZnJvbXx8ZC5mcm9tPD14LmNoKSYmKG51bGw9PWQudG98fGQudG8+PXguY2gpJiZhLnB1c2goZC5tYXJrZXIucGFyZW50fHxkLm1hcmtlcil9cmV0dXJuIGF9LGZpbmRNYXJrczpmdW5jdGlvbih4LGEsYil7eD1veCh0aGlzLHgpLGE9b3godGhpcyxhKTt2YXIgYz1bXSxkPXgubGluZTtyZXR1cm4gdGhpcy5pdGVyKHgubGluZSxhLmxpbmUrMSxmdW5jdGlvbihlKXt2YXIgZj1lLm1hcmtlZFNwYW5zO2lmKGYpZm9yKHZhciBnPTA7ZzxmLmxlbmd0aDtnKyspe3ZhciBoPWZbZ107ZD09eC5saW5lJiZ4LmNoPmgudG98fG51bGw9PWguZnJvbSYmZCE9eC5saW5lfHxkPT1hLmxpbmUmJmguZnJvbT5hLmNofHxiJiYhYihoLm1hcmtlcil8fGMucHVzaChoLm1hcmtlci5wYXJlbnR8fGgubWFya2VyKX0rK2R9KSxjfSxnZXRBbGxNYXJrczpmdW5jdGlvbigpe3ZhciB4PVtdO3JldHVybiB0aGlzLml0ZXIoZnVuY3Rpb24oYSl7dmFyIGI9YS5tYXJrZWRTcGFucztpZihiKWZvcih2YXIgYz0wO2M8Yi5sZW5ndGg7KytjKW51bGwhPWJbY10uZnJvbSYmeC5wdXNoKGJbY10ubWFya2VyKX0pLHh9LHBvc0Zyb21JbmRleDpmdW5jdGlvbih4KXt2YXIgYSxiPXRoaXMuZmlyc3Q7cmV0dXJuIHRoaXMuaXRlcihmdW5jdGlvbihjKXt2YXIgZD1jLnRleHQubGVuZ3RoKzE7cmV0dXJuIGQ+eD8oYT14LCEwKTooeC09ZCx2b2lkKytiKX0pLG94KHRoaXMsSmUoYixhKSl9LGluZGV4RnJvbVBvczpmdW5jdGlvbih4KXt2YXIgYT0oeD1veCh0aGlzLHgpKS5jaDtyZXR1cm4geC5saW5lPHRoaXMuZmlyc3R8fHguY2g8MD8wOih0aGlzLml0ZXIodGhpcy5maXJzdCx4LmxpbmUsZnVuY3Rpb24oeCl7YSs9eC50ZXh0Lmxlbmd0aCsxfSksYSl9LGNvcHk6ZnVuY3Rpb24oeCl7dmFyIGE9bmV3IHZmKCRjKHRoaXMsdGhpcy5maXJzdCx0aGlzLmZpcnN0K3RoaXMuc2l6ZSksdGhpcy5tb2RlT3B0aW9uLHRoaXMuZmlyc3QsdGhpcy5saW5lU2VwKTtyZXR1cm4gYS5zY3JvbGxUb3A9dGhpcy5zY3JvbGxUb3AsYS5zY3JvbGxMZWZ0PXRoaXMuc2Nyb2xsTGVmdCxhLnNlbD10aGlzLnNlbCxhLmV4dGVuZD0hMSx4JiYoYS5oaXN0b3J5LnVuZG9EZXB0aD10aGlzLmhpc3RvcnkudW5kb0RlcHRoLGEuc2V0SGlzdG9yeSh0aGlzLmdldEhpc3RvcnkoKSkpLGF9LGxpbmtlZERvYzpmdW5jdGlvbih4KXt4fHwoeD17fSk7dmFyIGE9dGhpcy5maXJzdCxiPXRoaXMuZmlyc3QrdGhpcy5zaXplO251bGwhPXguZnJvbSYmeC5mcm9tPmEmJihhPXguZnJvbSksbnVsbCE9eC50byYmeC50bzxiJiYoYj14LnRvKTt2YXIgYz1uZXcgdmYoJGModGhpcyxhLGIpLHgubW9kZXx8dGhpcy5tb2RlT3B0aW9uLGEsdGhpcy5saW5lU2VwKTtyZXR1cm4geC5zaGFyZWRIaXN0JiYoYy5oaXN0b3J5PXRoaXMuaGlzdG9yeSksKHRoaXMubGlua2VkfHwodGhpcy5saW5rZWQ9W10pKS5wdXNoKHtkb2M6YyxzaGFyZWRIaXN0Onguc2hhcmVkSGlzdH0pLGMubGlua2VkPVt7ZG9jOnRoaXMsaXNQYXJlbnQ6ITAsc2hhcmVkSGlzdDp4LnNoYXJlZEhpc3R9XSxZYihjLFhiKHRoaXMpKSxjfSx1bmxpbmtEb2M6ZnVuY3Rpb24oYSl7aWYoYSBpbnN0YW5jZW9mIHgmJihhPWEuZG9jKSx0aGlzLmxpbmtlZClmb3IodmFyIGI9MDtiPHRoaXMubGlua2VkLmxlbmd0aDsrK2Ipe2lmKHRoaXMubGlua2VkW2JdLmRvYz09YSl7dGhpcy5saW5rZWQuc3BsaWNlKGIsMSksYS51bmxpbmtEb2ModGhpcyksWmIoWGIodGhpcykpO2JyZWFrfX1pZihhLmhpc3Rvcnk9PXRoaXMuaGlzdG9yeSl7dmFyIGM9W2EuaWRdO1djKGEsZnVuY3Rpb24oeCl7Yy5wdXNoKHguaWQpfSwhMCksYS5oaXN0b3J5PW5ldyBkZChudWxsKSxhLmhpc3RvcnkuZG9uZT1vZCh0aGlzLmhpc3RvcnkuZG9uZSxjKSxhLmhpc3RvcnkudW5kb25lPW9kKHRoaXMuaGlzdG9yeS51bmRvbmUsYyl9fSxpdGVyTGlua2VkRG9jczpmdW5jdGlvbih4KXtXYyh0aGlzLHgpfSxnZXRNb2RlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubW9kZX0sZ2V0RWRpdG9yOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY219LHNwbGl0TGluZXM6ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMubGluZVNlcD94LnNwbGl0KHRoaXMubGluZVNlcCk6X2YoeCl9LGxpbmVTZXBhcmF0b3I6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5saW5lU2VwfHwiXG4ifX0pLHZmLnByb3RvdHlwZS5lYWNoTGluZT12Zi5wcm90b3R5cGUuaXRlcjt2YXIgd2Y9Iml0ZXIgaW5zZXJ0IHJlbW92ZSBjb3B5IGdldEVkaXRvciBjb25zdHJ1Y3RvciIuc3BsaXQoIiAiKTtmb3IodmFyIHlmIGluIHZmLnByb3RvdHlwZSl2Zi5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkoeWYpJiZHZCh3Zix5Zik8MCYmKHgucHJvdG90eXBlW3lmXT1mdW5jdGlvbih4KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4geC5hcHBseSh0aGlzLmRvYyxhcmd1bWVudHMpfX0odmYucHJvdG90eXBlW3lmXSkpO0NkKHZmKTt2YXIgemY9eC5lX3ByZXZlbnREZWZhdWx0PWZ1bmN0aW9uKHgpe3gucHJldmVudERlZmF1bHQ/eC5wcmV2ZW50RGVmYXVsdCgpOngucmV0dXJuVmFsdWU9ITF9LEFmPXguZV9zdG9wUHJvcGFnYXRpb249ZnVuY3Rpb24oeCl7eC5zdG9wUHJvcGFnYXRpb24/eC5zdG9wUHJvcGFnYXRpb24oKTp4LmNhbmNlbEJ1YmJsZT0hMH0sQmY9eC5lX3N0b3A9ZnVuY3Rpb24oeCl7emYoeCksQWYoeCl9LENmPXgub249ZnVuY3Rpb24oeCxhLGIpe2lmKHguYWRkRXZlbnRMaXN0ZW5lcil4LmFkZEV2ZW50TGlzdGVuZXIoYSxiLCExKTtlbHNlIGlmKHguYXR0YWNoRXZlbnQpeC5hdHRhY2hFdmVudCgib24iK2EsYik7ZWxzZXt2YXIgYz14Ll9oYW5kbGVyc3x8KHguX2hhbmRsZXJzPXt9KTsoY1thXXx8KGNbYV09W10pKS5wdXNoKGIpfX0sRGY9W10sRWY9eC5vZmY9ZnVuY3Rpb24oeCxhLGIpe2lmKHgucmVtb3ZlRXZlbnRMaXN0ZW5lcil4LnJlbW92ZUV2ZW50TGlzdGVuZXIoYSxiLCExKTtlbHNlIGlmKHguZGV0YWNoRXZlbnQpeC5kZXRhY2hFdmVudCgib24iK2EsYik7ZWxzZSBmb3IodmFyIGM9dmQoeCxhLCExKSxkPTA7ZDxjLmxlbmd0aDsrK2QpaWYoY1tkXT09Yil7Yy5zcGxpY2UoZCwxKTticmVha319LEZmPXguc2lnbmFsPWZ1bmN0aW9uKHgsYSl7dmFyIGI9dmQoeCxhLCEwKTtpZihiLmxlbmd0aClmb3IodmFyIGM9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpLGQ9MDtkPGIubGVuZ3RoOysrZCliW2RdLmFwcGx5KG51bGwsYyl9LEdmPW51bGwsSGY9MzAsSWY9eC5QYXNzPXt0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiJDb2RlTWlycm9yLlBhc3MifX0sSmY9e3Njcm9sbDohMX0sS2Y9e29yaWdpbjoiKm1vdXNlIn0sTGY9e29yaWdpbjoiK21vdmUifTtEZC5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKHgsYSl7Y2xlYXJUaW1lb3V0KHRoaXMuaWQpLHRoaXMuaWQ9c2V0VGltZW91dChhLHgpfTt2YXIgTWY9eC5jb3VudENvbHVtbj1mdW5jdGlvbih4LGEsYixjLGQpe251bGw9PWEmJigtMT09KGE9eC5zZWFyY2goL1teXHNcdTAwYTBdLykpJiYoYT14Lmxlbmd0aCkpO2Zvcih2YXIgZT1jfHwwLGY9ZHx8MDs7KXt2YXIgZz14LmluZGV4T2YoIlx0IixlKTtpZigwPmd8fGc+PWEpcmV0dXJuIGYrKGEtZSk7Zis9Zy1lLGYrPWItZiViLGU9ZysxfX0sTmY9eC5maW5kQ29sdW1uPWZ1bmN0aW9uKHgsYSxiKXtmb3IodmFyIGM9MCxkPTA7Oyl7dmFyIGU9eC5pbmRleE9mKCJcdCIsYyk7LTE9PWUmJihlPXgubGVuZ3RoKTt2YXIgZj1lLWM7aWYoZT09eC5sZW5ndGh8fGQrZj49YSlyZXR1cm4gYytNYXRoLm1pbihmLGEtZCk7aWYoZCs9ZS1jLGM9ZSsxLChkKz1iLWQlYik+PWEpcmV0dXJuIGN9fSxPZj1bIiJdLFBmPWZ1bmN0aW9uKHgpe3guc2VsZWN0KCl9O0FlP1BmPWZ1bmN0aW9uKHgpe3guc2VsZWN0aW9uU3RhcnQ9MCx4LnNlbGVjdGlvbkVuZD14LnZhbHVlLmxlbmd0aH06cWUmJihQZj1mdW5jdGlvbih4KXt0cnl7eC5zZWxlY3QoKX1jYXRjaCh4KXt9fSk7dmFyIFFmLFJmPS9bXHUwMGRmXHUwNTg3XHUwNTkwLVx1MDVmNFx1MDYwMC1cdTA2ZmZcdTMwNDAtXHUzMDlmXHUzMGEwLVx1MzBmZlx1MzQwMC1cdTRkYjVcdTRlMDAtXHU5ZmNjXHVhYzAwLVx1ZDdhZl0vLFNmPXguaXNXb3JkQ2hhcj1mdW5jdGlvbih4KXtyZXR1cm4vXHcvLnRlc3QoeCl8fHg+IsKAIiYmKHgudG9VcHBlckNhc2UoKSE9eC50b0xvd2VyQ2FzZSgpfHxSZi50ZXN0KHgpKX0sVGY9L1tcdTAzMDAtXHUwMzZmXHUwNDgzLVx1MDQ4OVx1MDU5MS1cdTA1YmRcdTA1YmZcdTA1YzFcdTA1YzJcdTA1YzRcdTA1YzVcdTA1YzdcdTA2MTAtXHUwNjFhXHUwNjRiLVx1MDY1ZVx1MDY3MFx1MDZkNi1cdTA2ZGNcdTA2ZGUtXHUwNmU0XHUwNmU3XHUwNmU4XHUwNmVhLVx1MDZlZFx1MDcxMVx1MDczMC1cdTA3NGFcdTA3YTYtXHUwN2IwXHUwN2ViLVx1MDdmM1x1MDgxNi1cdTA4MTlcdTA4MWItXHUwODIzXHUwODI1LVx1MDgyN1x1MDgyOS1cdTA4MmRcdTA5MDAtXHUwOTAyXHUwOTNjXHUwOTQxLVx1MDk0OFx1MDk0ZFx1MDk1MS1cdTA5NTVcdTA5NjJcdTA5NjNcdTA5ODFcdTA5YmNcdTA5YmVcdTA5YzEtXHUwOWM0XHUwOWNkXHUwOWQ3XHUwOWUyXHUwOWUzXHUwYTAxXHUwYTAyXHUwYTNjXHUwYTQxXHUwYTQyXHUwYTQ3XHUwYTQ4XHUwYTRiLVx1MGE0ZFx1MGE1MVx1MGE3MFx1MGE3MVx1MGE3NVx1MGE4MVx1MGE4Mlx1MGFiY1x1MGFjMS1cdTBhYzVcdTBhYzdcdTBhYzhcdTBhY2RcdTBhZTJcdTBhZTNcdTBiMDFcdTBiM2NcdTBiM2VcdTBiM2ZcdTBiNDEtXHUwYjQ0XHUwYjRkXHUwYjU2XHUwYjU3XHUwYjYyXHUwYjYzXHUwYjgyXHUwYmJlXHUwYmMwXHUwYmNkXHUwYmQ3XHUwYzNlLVx1MGM0MFx1MGM0Ni1cdTBjNDhcdTBjNGEtXHUwYzRkXHUwYzU1XHUwYzU2XHUwYzYyXHUwYzYzXHUwY2JjXHUwY2JmXHUwY2MyXHUwY2M2XHUwY2NjXHUwY2NkXHUwY2Q1XHUwY2Q2XHUwY2UyXHUwY2UzXHUwZDNlXHUwZDQxLVx1MGQ0NFx1MGQ0ZFx1MGQ1N1x1MGQ2Mlx1MGQ2M1x1MGRjYVx1MGRjZlx1MGRkMi1cdTBkZDRcdTBkZDZcdTBkZGZcdTBlMzFcdTBlMzQtXHUwZTNhXHUwZTQ3LVx1MGU0ZVx1MGViMVx1MGViNC1cdTBlYjlcdTBlYmJcdTBlYmNcdTBlYzgtXHUwZWNkXHUwZjE4XHUwZjE5XHUwZjM1XHUwZjM3XHUwZjM5XHUwZjcxLVx1MGY3ZVx1MGY4MC1cdTBmODRcdTBmODZcdTBmODdcdTBmOTAtXHUwZjk3XHUwZjk5LVx1MGZiY1x1MGZjNlx1MTAyZC1cdTEwMzBcdTEwMzItXHUxMDM3XHUxMDM5XHUxMDNhXHUxMDNkXHUxMDNlXHUxMDU4XHUxMDU5XHUxMDVlLVx1MTA2MFx1MTA3MS1cdTEwNzRcdTEwODJcdTEwODVcdTEwODZcdTEwOGRcdTEwOWRcdTEzNWZcdTE3MTItXHUxNzE0XHUxNzMyLVx1MTczNFx1MTc1Mlx1MTc1M1x1MTc3Mlx1MTc3M1x1MTdiNy1cdTE3YmRcdTE3YzZcdTE3YzktXHUxN2QzXHUxN2RkXHUxODBiLVx1MTgwZFx1MThhOVx1MTkyMC1cdTE5MjJcdTE5MjdcdTE5MjhcdTE5MzJcdTE5MzktXHUxOTNiXHUxYTE3XHUxYTE4XHUxYTU2XHUxYTU4LVx1MWE1ZVx1MWE2MFx1MWE2Mlx1MWE2NS1cdTFhNmNcdTFhNzMtXHUxYTdjXHUxYTdmXHUxYjAwLVx1MWIwM1x1MWIzNFx1MWIzNi1cdTFiM2FcdTFiM2NcdTFiNDJcdTFiNmItXHUxYjczXHUxYjgwXHUxYjgxXHUxYmEyLVx1MWJhNVx1MWJhOFx1MWJhOVx1MWMyYy1cdTFjMzNcdTFjMzZcdTFjMzdcdTFjZDAtXHUxY2QyXHUxY2Q0LVx1MWNlMFx1MWNlMi1cdTFjZThcdTFjZWRcdTFkYzAtXHUxZGU2XHUxZGZkLVx1MWRmZlx1MjAwY1x1MjAwZFx1MjBkMC1cdTIwZjBcdTJjZWYtXHUyY2YxXHUyZGUwLVx1MmRmZlx1MzAyYS1cdTMwMmZcdTMwOTlcdTMwOWFcdWE2NmYtXHVhNjcyXHVhNjdjXHVhNjdkXHVhNmYwXHVhNmYxXHVhODAyXHVhODA2XHVhODBiXHVhODI1XHVhODI2XHVhOGM0XHVhOGUwLVx1YThmMVx1YTkyNi1cdWE5MmRcdWE5NDctXHVhOTUxXHVhOTgwLVx1YTk4Mlx1YTliM1x1YTliNi1cdWE5YjlcdWE5YmNcdWFhMjktXHVhYTJlXHVhYTMxXHVhYTMyXHVhYTM1XHVhYTM2XHVhYTQzXHVhYTRjXHVhYWIwXHVhYWIyLVx1YWFiNFx1YWFiN1x1YWFiOFx1YWFiZVx1YWFiZlx1YWFjMVx1YWJlNVx1YWJlOFx1YWJlZFx1ZGMwMC1cdWRmZmZcdWZiMWVcdWZlMDAtXHVmZTBmXHVmZTIwLVx1ZmUyNlx1ZmY5ZVx1ZmY5Zl0vO1FmPWRvY3VtZW50LmNyZWF0ZVJhbmdlP2Z1bmN0aW9uKHgsYSxiLGMpe3ZhciBkPWRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7cmV0dXJuIGQuc2V0RW5kKGN8fHgsYiksZC5zZXRTdGFydCh4LGEpLGR9OmZ1bmN0aW9uKHgsYSxiKXt2YXIgYz1kb2N1bWVudC5ib2R5LmNyZWF0ZVRleHRSYW5nZSgpO3RyeXtjLm1vdmVUb0VsZW1lbnRUZXh0KHgucGFyZW50Tm9kZSl9Y2F0Y2goeCl7cmV0dXJuIGN9cmV0dXJuIGMuY29sbGFwc2UoITApLGMubW92ZUVuZCgiY2hhcmFjdGVyIixiKSxjLm1vdmVTdGFydCgiY2hhcmFjdGVyIixhKSxjfTt2YXIgVWY9eC5jb250YWlucz1mdW5jdGlvbih4LGEpe2lmKDM9PWEubm9kZVR5cGUmJihhPWEucGFyZW50Tm9kZSkseC5jb250YWlucylyZXR1cm4geC5jb250YWlucyhhKTtkb3tpZigxMT09YS5ub2RlVHlwZSYmKGE9YS5ob3N0KSxhPT14KXJldHVybiEwfXdoaWxlKGE9YS5wYXJlbnROb2RlKX07cWUmJjExPnJlJiYoU2Q9ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnR9Y2F0Y2goeCl7cmV0dXJuIGRvY3VtZW50LmJvZHl9fSk7dmFyIFZmLFdmLFhmPXgucm1DbGFzcz1mdW5jdGlvbih4LGEpe3ZhciBiPXguY2xhc3NOYW1lLGM9VGQoYSkuZXhlYyhiKTtpZihjKXt2YXIgZD1iLnNsaWNlKGMuaW5kZXgrY1swXS5sZW5ndGgpO3guY2xhc3NOYW1lPWIuc2xpY2UoMCxjLmluZGV4KSsoZD9jWzFdK2Q6IiIpfX0sWWY9eC5hZGRDbGFzcz1mdW5jdGlvbih4LGEpe3ZhciBiPXguY2xhc3NOYW1lO1RkKGEpLnRlc3QoYil8fCh4LmNsYXNzTmFtZSs9KGI/IiAiOiIiKSthKX0sWmY9ITEsJGY9ZnVuY3Rpb24oKXtpZihxZSYmOT5yZSlyZXR1cm4hMTt2YXIgeD1QZCgiZGl2Iik7cmV0dXJuImRyYWdnYWJsZSJpbiB4fHwiZHJhZ0Ryb3AiaW4geH0oKSxfZj14LnNwbGl0TGluZXM9MyE9IlxuXG5iIi5zcGxpdCgvXG4vKS5sZW5ndGg/ZnVuY3Rpb24oeCl7Zm9yKHZhciBhPTAsYj1bXSxjPXgubGVuZ3RoO2M+PWE7KXt2YXIgZD14LmluZGV4T2YoIlxuIixhKTstMT09ZCYmKGQ9eC5sZW5ndGgpO3ZhciBlPXguc2xpY2UoYSwiXHIiPT14LmNoYXJBdChkLTEpP2QtMTpkKSxmPWUuaW5kZXhPZigiXHIiKTstMSE9Zj8oYi5wdXNoKGUuc2xpY2UoMCxmKSksYSs9ZisxKTooYi5wdXNoKGUpLGE9ZCsxKX1yZXR1cm4gYn06ZnVuY3Rpb24oeCl7cmV0dXJuIHguc3BsaXQoL1xyXG4/fFxuLyl9LHhnPXdpbmRvdy5nZXRTZWxlY3Rpb24/ZnVuY3Rpb24oeCl7dHJ5e3JldHVybiB4LnNlbGVjdGlvblN0YXJ0IT14LnNlbGVjdGlvbkVuZH1jYXRjaCh4KXtyZXR1cm4hMX19OmZ1bmN0aW9uKHgpe3RyeXt2YXIgYT14Lm93bmVyRG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCl9Y2F0Y2goeCl7fXJldHVybiEoIWF8fGEucGFyZW50RWxlbWVudCgpIT14KSYmMCE9YS5jb21wYXJlRW5kUG9pbnRzKCJTdGFydFRvRW5kIixhKX0sYWc9ZnVuY3Rpb24oKXt2YXIgeD1QZCgiZGl2Iik7cmV0dXJuIm9uY29weSJpbiB4fHwoeC5zZXRBdHRyaWJ1dGUoIm9uY29weSIsInJldHVybjsiKSwiZnVuY3Rpb24iPT10eXBlb2YgeC5vbmNvcHkpfSgpLGJnPW51bGwsY2c9eC5rZXlOYW1lcz17MzoiRW50ZXIiLDg6IkJhY2tzcGFjZSIsOToiVGFiIiwxMzoiRW50ZXIiLDE2OiJTaGlmdCIsMTc6IkN0cmwiLDE4OiJBbHQiLDE5OiJQYXVzZSIsMjA6IkNhcHNMb2NrIiwyNzoiRXNjIiwzMjoiU3BhY2UiLDMzOiJQYWdlVXAiLDM0OiJQYWdlRG93biIsMzU6IkVuZCIsMzY6IkhvbWUiLDM3OiJMZWZ0IiwzODoiVXAiLDM5OiJSaWdodCIsNDA6IkRvd24iLDQ0OiJQcmludFNjcm4iLDQ1OiJJbnNlcnQiLDQ2OiJEZWxldGUiLDU5OiI7Iiw2MToiPSIsOTE6Ik1vZCIsOTI6Ik1vZCIsOTM6Ik1vZCIsMTA2OiIqIiwxMDc6Ij0iLDEwOToiLSIsMTEwOiIuIiwxMTE6Ii8iLDEyNzoiRGVsZXRlIiwxNzM6Ii0iLDE4NjoiOyIsMTg3OiI9IiwxODg6IiwiLDE4OToiLSIsMTkwOiIuIiwxOTE6Ii8iLDE5MjoiYCIsMjE5OiJbIiwyMjA6IlxcIiwyMjE6Il0iLDIyMjoiJyIsNjMyMzI6IlVwIiw2MzIzMzoiRG93biIsNjMyMzQ6IkxlZnQiLDYzMjM1OiJSaWdodCIsNjMyNzI6IkRlbGV0ZSIsNjMyNzM6IkhvbWUiLDYzMjc1OiJFbmQiLDYzMjc2OiJQYWdlVXAiLDYzMjc3OiJQYWdlRG93biIsNjMzMDI6Ikluc2VydCJ9OyFmdW5jdGlvbigpe2Zvcih2YXIgeD0wOzEwPng7eCsrKWNnW3grNDhdPWNnW3grOTZdPVN0cmluZyh4KTtmb3IoeD02NTs5MD49eDt4KyspY2dbeF09U3RyaW5nLmZyb21DaGFyQ29kZSh4KTtmb3IoeD0xOzEyPj14O3grKyljZ1t4KzExMV09Y2dbeCs2MzIzNV09IkYiK3h9KCk7dmFyIGRnLGVnPWZ1bmN0aW9uKCl7ZnVuY3Rpb24geCh4KXtyZXR1cm4gMjQ3Pj14P2IuY2hhckF0KHgpOng+PTE0MjQmJjE1MjQ+PXg/IlIiOng+PTE1MzYmJjE3NzM+PXg/Yy5jaGFyQXQoeC0xNTM2KTp4Pj0xNzc0JiYyMjIwPj14PyJyIjp4Pj04MTkyJiY4MjAzPj14PyJ3Ijo4MjA0PT14PyJiIjoiTCJ9ZnVuY3Rpb24gYSh4LGEsYil7dGhpcy5sZXZlbD14LHRoaXMuZnJvbT1hLHRoaXMudG89Yn12YXIgYj0iYmJiYmJiYmJidHN0d3NiYmJiYmJiYmJiYmJiYnNzc3R3Tk4lJSVOTk5OTk4sTixOMTExMTExMTExMU5OTk5OTk5MTExMTExMTExMTExMTExMTExMTExMTExMTE5OTk5OTkxMTExMTExMTExMTExMTExMTExMTExMTExMTk5OTmJiYmJiYnNiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYixOJSUlJU5OTk5MTk5OTk4lJTExTkxOTk4xTE5OTk5OTExMTExMTExMTExMTExMTExMTExMTExOTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTE4iLGM9InJycnJycnJycnJycixyTk5tbW1tbW1ycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycm1tbW1tbW1tbW1tbW1tcnJycnJycm5ubm5ubm5ubm4lbm5ycnJtcnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJtbW1tbW1tbW1tbW1tbW1tbW1tTm1tbW0iLGQ9L1tcdTA1OTAtXHUwNWY0XHUwNjAwLVx1MDZmZlx1MDcwMC1cdTA4YWNdLyxlPS9bc3R3Tl0vLGY9L1tMUnJdLyxnPS9bTGIxbl0vLGg9L1sxbl0vLGk9IkwiO3JldHVybiBmdW5jdGlvbihiKXtpZighZC50ZXN0KGIpKXJldHVybiExO2Zvcih2YXIgYz1iLmxlbmd0aCxqPVtdLGs9MDtjPms7KytrKWoucHVzaChxPXgoYi5jaGFyQ29kZUF0KGspKSk7az0wO2Zvcih2YXIgbD1pO2M+azsrK2speyJtIj09KHE9altrXSk/altrXT1sOmw9cX1rPTA7Zm9yKHZhciBtPWk7Yz5rOysrayl7IjEiPT0ocT1qW2tdKSYmInIiPT1tP2pba109Im4iOmYudGVzdChxKSYmKG09cSwiciI9PXEmJihqW2tdPSJSIikpfWZvcihrPTEsbD1qWzBdO2MtMT5rOysrayl7IisiPT0ocT1qW2tdKSYmIjEiPT1sJiYiMSI9PWpbaysxXT9qW2tdPSIxIjoiLCIhPXF8fGwhPWpbaysxXXx8IjEiIT1sJiYibiIhPWx8fChqW2tdPWwpLGw9cX1mb3Ioaz0wO2M+azsrK2spe2lmKCIsIj09KHE9altrXSkpaltrXT0iTiI7ZWxzZSBpZigiJSI9PXEpe2Zvcih2YXIgbj1rKzE7Yz5uJiYiJSI9PWpbbl07KytuKTtmb3IodmFyIG89ayYmIiEiPT1qW2stMV18fGM+biYmIjEiPT1qW25dPyIxIjoiTiIscD1rO24+cDsrK3ApaltwXT1vO2s9bi0xfX1mb3Ioaz0wLG09aTtjPms7KytrKXt2YXIgcT1qW2tdOyJMIj09bSYmIjEiPT1xP2pba109IkwiOmYudGVzdChxKSYmKG09cSl9Zm9yKGs9MDtjPms7KytrKWlmKGUudGVzdChqW2tdKSl7Zm9yKG49aysxO2M+biYmZS50ZXN0KGpbbl0pOysrbik7dmFyIHI9IkwiPT0oaz9qW2stMV06aSkscz0iTCI9PShjPm4/altuXTppKTtmb3Iobz1yfHxzPyJMIjoiUiIscD1rO24+cDsrK3ApaltwXT1vO2s9bi0xfXZhciB0LHU9W107Zm9yKGs9MDtjPms7KWlmKGcudGVzdChqW2tdKSl7dmFyIHY9aztmb3IoKytrO2M+ayYmZy50ZXN0KGpba10pOysrayk7dS5wdXNoKG5ldyBhKDAsdixrKSl9ZWxzZXt2YXIgdz1rLHk9dS5sZW5ndGg7Zm9yKCsraztjPmsmJiJMIiE9altrXTsrK2spO2ZvcihwPXc7az5wOylpZihoLnRlc3QoaltwXSkpe3A+dyYmdS5zcGxpY2UoeSwwLG5ldyBhKDEsdyxwKSk7dmFyIHo9cDtmb3IoKytwO2s+cCYmaC50ZXN0KGpbcF0pOysrcCk7dS5zcGxpY2UoeSwwLG5ldyBhKDIseixwKSksdz1wfWVsc2UrK3A7az53JiZ1LnNwbGljZSh5LDAsbmV3IGEoMSx3LGspKX1yZXR1cm4gMT09dVswXS5sZXZlbCYmKHQ9Yi5tYXRjaCgvXlxzKy8pKSYmKHVbMF0uZnJvbT10WzBdLmxlbmd0aCx1LnVuc2hpZnQobmV3IGEoMCwwLHRbMF0ubGVuZ3RoKSkpLDE9PUZkKHUpLmxldmVsJiYodD1iLm1hdGNoKC9ccyskLykpJiYoRmQodSkudG8tPXRbMF0ubGVuZ3RoLHUucHVzaChuZXcgYSgwLGMtdFswXS5sZW5ndGgsYykpKSwyPT11WzBdLmxldmVsJiZ1LnVuc2hpZnQobmV3IGEoMSx1WzBdLnRvLHVbMF0udG8pKSx1WzBdLmxldmVsIT1GZCh1KS5sZXZlbCYmdS5wdXNoKG5ldyBhKHVbMF0ubGV2ZWwsYyxjKSksdX19KCk7cmV0dXJuIHgudmVyc2lvbj0iNS45LjEiLHh9KSxmdW5jdGlvbih4KXsib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlP3gocmVxdWlyZSgiLi4vLi4vbGliL2NvZGVtaXJyb3IiKSk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyIuLi8uLi9saWIvY29kZW1pcnJvciJdLHgpOngoQ29kZU1pcnJvcil9KGZ1bmN0aW9uKHgpeyJ1c2Ugc3RyaWN0Ijt4LmRlZmluZU1vZGUoImphdmFzY3JpcHQiLGZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gYyh4KXtmb3IodmFyIGEsYj0hMSxjPSExO251bGwhPShhPXgubmV4dCgpKTspe2lmKCFiKXtpZigiLyI9PWEmJiFjKXJldHVybjsiWyI9PWE/Yz0hMDpjJiYiXSI9PWEmJihjPSExKX1iPSFiJiYiXFwiPT1hfX1mdW5jdGlvbiBkKHgsYSxiKXtyZXR1cm4gSHg9eCxJeD1iLGF9ZnVuY3Rpb24gZSh4LGEpe3ZhciBiPXgubmV4dCgpO2lmKCciJz09Ynx8IiciPT1iKXJldHVybiBhLnRva2VuaXplPWYoYiksYS50b2tlbml6ZSh4LGEpO2lmKCIuIj09YiYmeC5tYXRjaCgvXlxkKyg/OltlRV1bK1wtXT9cZCspPy8pKXJldHVybiBkKCJudW1iZXIiLCJudW1iZXIiKTtpZigiLiI9PWImJngubWF0Y2goIi4uIikpcmV0dXJuIGQoInNwcmVhZCIsIm1ldGEiKTtpZigvW1xbXF17fVwoXCksO1w6XC5dLy50ZXN0KGIpKXJldHVybiBkKGIpO2lmKCI9Ij09YiYmeC5lYXQoIj4iKSlyZXR1cm4gZCgiPT4iLCJvcGVyYXRvciIpO2lmKCIwIj09YiYmeC5lYXQoL3gvaSkpcmV0dXJuIHguZWF0V2hpbGUoL1tcZGEtZl0vaSksZCgibnVtYmVyIiwibnVtYmVyIik7aWYoIjAiPT1iJiZ4LmVhdCgvby9pKSlyZXR1cm4geC5lYXRXaGlsZSgvWzAtN10vaSksZCgibnVtYmVyIiwibnVtYmVyIik7aWYoIjAiPT1iJiZ4LmVhdCgvYi9pKSlyZXR1cm4geC5lYXRXaGlsZSgvWzAxXS9pKSxkKCJudW1iZXIiLCJudW1iZXIiKTtpZigvXGQvLnRlc3QoYikpcmV0dXJuIHgubWF0Y2goL15cZCooPzpcLlxkKik/KD86W2VFXVsrXC1dP1xkKyk/LyksZCgibnVtYmVyIiwibnVtYmVyIik7aWYoIi8iPT1iKXJldHVybiB4LmVhdCgiKiIpPyhhLnRva2VuaXplPWcsZyh4LGEpKTp4LmVhdCgiLyIpPyh4LnNraXBUb0VuZCgpLGQoImNvbW1lbnQiLCJjb21tZW50IikpOkd4KHgsYSwxKT8oYyh4KSx4Lm1hdGNoKC9eXGIoKFtnaW15dV0pKD8hW2dpbXl1XSpcMikpK1xiLyksZCgicmVnZXhwIiwic3RyaW5nLTIiKSk6KHguZWF0KCI9IiksZCgib3BlcmF0b3IiLCJvcGVyYXRvciIseC5jdXJyZW50KCkpKTtpZigiYCI9PWIpcmV0dXJuIGEudG9rZW5pemU9aCxoKHgsYSk7aWYoIiMiPT1iKXJldHVybiB4LnNraXBUb0VuZCgpLGQoImVycm9yIiwiZXJyb3IiKTtpZihReC50ZXN0KGIpKXJldHVybiI+Ij09YiYmYS5sZXhpY2FsJiYiPiI9PWEubGV4aWNhbC50eXBlfHwoeC5lYXQoIj0iKT8iISIhPWImJiI9IiE9Ynx8eC5lYXQoIj0iKTovWzw+KitcLV0vLnRlc3QoYikmJih4LmVhdChiKSwiPiI9PWImJnguZWF0KGIpKSksZCgib3BlcmF0b3IiLCJvcGVyYXRvciIseC5jdXJyZW50KCkpO2lmKE94LnRlc3QoYikpe3guZWF0V2hpbGUoT3gpO3ZhciBlPXguY3VycmVudCgpO2lmKCIuIiE9YS5sYXN0VHlwZSl7aWYoUHgucHJvcGVydHlJc0VudW1lcmFibGUoZSkpe3ZhciBpPVB4W2VdO3JldHVybiBkKGkudHlwZSxpLnN0eWxlLGUpfWlmKCJhc3luYyI9PWUmJngubWF0Y2goL14oXHN8XC9cKi4qP1wqXC8pKltcW1woXHddLywhMSkpcmV0dXJuIGQoImFzeW5jIiwia2V5d29yZCIsZSl9cmV0dXJuIGQoInZhcmlhYmxlIiwidmFyaWFibGUiLGUpfX1mdW5jdGlvbiBmKHgpe3JldHVybiBmdW5jdGlvbihhLGIpe3ZhciBjLGY9ITE7aWYoTHgmJiJAIj09YS5wZWVrKCkmJmEubWF0Y2goUngpKXJldHVybiBiLnRva2VuaXplPWUsZCgianNvbmxkLWtleXdvcmQiLCJtZXRhIik7Zm9yKDtudWxsIT0oYz1hLm5leHQoKSkmJihjIT14fHxmKTspZj0hZiYmIlxcIj09YztyZXR1cm4gZnx8KGIudG9rZW5pemU9ZSksZCgic3RyaW5nIiwic3RyaW5nIil9fWZ1bmN0aW9uIGcoeCxhKXtmb3IodmFyIGIsYz0hMTtiPXgubmV4dCgpOyl7aWYoIi8iPT1iJiZjKXthLnRva2VuaXplPWU7YnJlYWt9Yz0iKiI9PWJ9cmV0dXJuIGQoImNvbW1lbnQiLCJjb21tZW50Iil9ZnVuY3Rpb24gaCh4LGEpe2Zvcih2YXIgYixjPSExO251bGwhPShiPXgubmV4dCgpKTspe2lmKCFjJiYoImAiPT1ifHwiJCI9PWImJnguZWF0KCJ7IikpKXthLnRva2VuaXplPWU7YnJlYWt9Yz0hYyYmIlxcIj09Yn1yZXR1cm4gZCgicXVhc2kiLCJzdHJpbmctMiIseC5jdXJyZW50KCkpfWZ1bmN0aW9uIGkoeCxhKXthLmZhdEFycm93QXQmJihhLmZhdEFycm93QXQ9bnVsbCk7dmFyIGI9eC5zdHJpbmcuaW5kZXhPZigiPT4iLHguc3RhcnQpO2lmKCEoYjwwKSl7aWYoTngpe3ZhciBjPS86XHMqKD86XHcrKD86PFtePl0qPnxcW1xdKT98XHtbXn1dKlx9KVxzKiQvLmV4ZWMoeC5zdHJpbmcuc2xpY2UoeC5zdGFydCxiKSk7YyYmKGI9Yy5pbmRleCl9Zm9yKHZhciBkPTAsZT0hMSxmPWItMTtmPj0wOy0tZil7dmFyIGc9eC5zdHJpbmcuY2hhckF0KGYpLGg9U3guaW5kZXhPZihnKTtpZihoPj0wJiZoPDMpe2lmKCFkKXsrK2Y7YnJlYWt9aWYoMD09LS1kKXsiKCI9PWcmJihlPSEwKTticmVha319ZWxzZSBpZihoPj0zJiZoPDYpKytkO2Vsc2UgaWYoT3gudGVzdChnKSllPSEwO2Vsc2V7aWYoL1siJ1wvXS8udGVzdChnKSlyZXR1cm47aWYoZSYmIWQpeysrZjticmVha319fWUmJiFkJiYoYS5mYXRBcnJvd0F0PWYpfX1mdW5jdGlvbiBqKHgsYSxiLGMsZCxlKXt0aGlzLmluZGVudGVkPXgsdGhpcy5jb2x1bW49YSx0aGlzLnR5cGU9Yix0aGlzLnByZXY9ZCx0aGlzLmluZm89ZSxudWxsIT1jJiYodGhpcy5hbGlnbj1jKX1mdW5jdGlvbiBrKHgsYSl7Zm9yKHZhciBiPXgubG9jYWxWYXJzO2I7Yj1iLm5leHQpaWYoYi5uYW1lPT1hKXJldHVybiEwO2Zvcih2YXIgYz14LmNvbnRleHQ7YztjPWMucHJldilmb3IoYj1jLnZhcnM7YjtiPWIubmV4dClpZihiLm5hbWU9PWEpcmV0dXJuITB9ZnVuY3Rpb24gbCh4LGEsYixjLGQpe3ZhciBlPXguY2M7Zm9yKFV4LnN0YXRlPXgsVXguc3RyZWFtPWQsVXgubWFya2VkPW51bGwsVXguY2M9ZSxVeC5zdHlsZT1hLHgubGV4aWNhbC5oYXNPd25Qcm9wZXJ0eSgiYWxpZ24iKXx8KHgubGV4aWNhbC5hbGlnbj0hMCk7Oyl7aWYoKGUubGVuZ3RoP2UucG9wKCk6TXg/eTp2KShiLGMpKXtmb3IoO2UubGVuZ3RoJiZlW2UubGVuZ3RoLTFdLmxleDspZS5wb3AoKSgpO3JldHVybiBVeC5tYXJrZWQ/VXgubWFya2VkOiJ2YXJpYWJsZSI9PWImJmsoeCxjKT8idmFyaWFibGUtMiI6YX19fWZ1bmN0aW9uIG0oKXtmb3IodmFyIHg9YXJndW1lbnRzLmxlbmd0aC0xO3g+PTA7eC0tKVV4LmNjLnB1c2goYXJndW1lbnRzW3hdKX1mdW5jdGlvbiBuKCl7cmV0dXJuIG0uYXBwbHkobnVsbCxhcmd1bWVudHMpLCEwfWZ1bmN0aW9uIG8oeCl7ZnVuY3Rpb24gYShhKXtmb3IodmFyIGI9YTtiO2I9Yi5uZXh0KWlmKGIubmFtZT09eClyZXR1cm4hMDtyZXR1cm4hMX12YXIgYz1VeC5zdGF0ZTtpZihVeC5tYXJrZWQ9ImRlZiIsYy5jb250ZXh0KXtpZihhKGMubG9jYWxWYXJzKSlyZXR1cm47Yy5sb2NhbFZhcnM9e25hbWU6eCxuZXh0OmMubG9jYWxWYXJzfX1lbHNle2lmKGEoYy5nbG9iYWxWYXJzKSlyZXR1cm47Yi5nbG9iYWxWYXJzJiYoYy5nbG9iYWxWYXJzPXtuYW1lOngsbmV4dDpjLmdsb2JhbFZhcnN9KX19ZnVuY3Rpb24gcCh4KXtyZXR1cm4icHVibGljIj09eHx8InByaXZhdGUiPT14fHwicHJvdGVjdGVkIj09eHx8ImFic3RyYWN0Ij09eHx8InJlYWRvbmx5Ij09eH1mdW5jdGlvbiBxKCl7VXguc3RhdGUuY29udGV4dD17cHJldjpVeC5zdGF0ZS5jb250ZXh0LHZhcnM6VXguc3RhdGUubG9jYWxWYXJzfSxVeC5zdGF0ZS5sb2NhbFZhcnM9Vnh9ZnVuY3Rpb24gcigpe1V4LnN0YXRlLmxvY2FsVmFycz1VeC5zdGF0ZS5jb250ZXh0LnZhcnMsVXguc3RhdGUuY29udGV4dD1VeC5zdGF0ZS5jb250ZXh0LnByZXZ9ZnVuY3Rpb24gcyh4LGEpe3ZhciBiPWZ1bmN0aW9uKCl7dmFyIGI9VXguc3RhdGUsYz1iLmluZGVudGVkO2lmKCJzdGF0Ij09Yi5sZXhpY2FsLnR5cGUpYz1iLmxleGljYWwuaW5kZW50ZWQ7ZWxzZSBmb3IodmFyIGQ9Yi5sZXhpY2FsO2QmJiIpIj09ZC50eXBlJiZkLmFsaWduO2Q9ZC5wcmV2KWM9ZC5pbmRlbnRlZDtiLmxleGljYWw9bmV3IGooYyxVeC5zdHJlYW0uY29sdW1uKCkseCxudWxsLGIubGV4aWNhbCxhKX07cmV0dXJuIGIubGV4PSEwLGJ9ZnVuY3Rpb24gdCgpe3ZhciB4PVV4LnN0YXRlO3gubGV4aWNhbC5wcmV2JiYoIikiPT14LmxleGljYWwudHlwZSYmKHguaW5kZW50ZWQ9eC5sZXhpY2FsLmluZGVudGVkKSx4LmxleGljYWw9eC5sZXhpY2FsLnByZXYpfWZ1bmN0aW9uIHUoeCl7ZnVuY3Rpb24gYShiKXtyZXR1cm4gYj09eD9uKCk6IjsiPT14P20oKTpuKGEpfXJldHVybiBhfWZ1bmN0aW9uIHYoeCxhKXtyZXR1cm4idmFyIj09eD9uKHMoInZhcmRlZiIsYS5sZW5ndGgpLGN4LHUoIjsiKSx0KToia2V5d29yZCBhIj09eD9uKHMoImZvcm0iKSxBLHYsdCk6ImtleXdvcmQgYiI9PXg/bihzKCJmb3JtIiksdix0KToia2V5d29yZCBkIj09eD9VeC5zdHJlYW0ubWF0Y2goL15ccyokLywhMSk/bigpOm4ocygic3RhdCIpLEMsdSgiOyIpLHQpOiJkZWJ1Z2dlciI9PXg/bih1KCI7IikpOiJ7Ij09eD9uKHMoIn0iKSxULHQpOiI7Ij09eD9uKCk6ImlmIj09eD8oImVsc2UiPT1VeC5zdGF0ZS5sZXhpY2FsLmluZm8mJlV4LnN0YXRlLmNjW1V4LnN0YXRlLmNjLmxlbmd0aC0xXT09dCYmVXguc3RhdGUuY2MucG9wKCkoKSxuKHMoImZvcm0iKSxBLHYsdCxoeCkpOiJmdW5jdGlvbiI9PXg/bihueCk6ImZvciI9PXg/bihzKCJmb3JtIiksaXgsdix0KToiY2xhc3MiPT14fHxOeCYmImludGVyZmFjZSI9PWE/KFV4Lm1hcmtlZD0ia2V5d29yZCIsbihzKCJmb3JtIikscXgsdCkpOiJ2YXJpYWJsZSI9PXg/TngmJiJkZWNsYXJlIj09YT8oVXgubWFya2VkPSJrZXl3b3JkIixuKHYpKTpOeCYmKCJtb2R1bGUiPT1hfHwiZW51bSI9PWF8fCJ0eXBlIj09YSkmJlV4LnN0cmVhbS5tYXRjaCgvXlxzKlx3LywhMSk/KFV4Lm1hcmtlZD0ia2V5d29yZCIsImVudW0iPT1hP24oRHgpOiJ0eXBlIj09YT9uKFgsdSgib3BlcmF0b3IiKSxYLHUoIjsiKSk6bihzKCJmb3JtIiksZHgsdSgieyIpLHMoIn0iKSxULHQsdCkpOk54JiYibmFtZXNwYWNlIj09YT8oVXgubWFya2VkPSJrZXl3b3JkIixuKHMoImZvcm0iKSx5LFQsdCkpOk54JiYiYWJzdHJhY3QiPT1hPyhVeC5tYXJrZWQ9ImtleXdvcmQiLG4odikpOm4ocygic3RhdCIpLE0pOiJzd2l0Y2giPT14P24ocygiZm9ybSIpLEEsdSgieyIpLHMoIn0iLCJzd2l0Y2giKSxULHQsdCk6ImNhc2UiPT14P24oeSx1KCI6IikpOiJkZWZhdWx0Ij09eD9uKHUoIjoiKSk6ImNhdGNoIj09eD9uKHMoImZvcm0iKSxxLHcsdix0LHIpOiJleHBvcnQiPT14P24ocygic3RhdCIpLHV4LHQpOiJpbXBvcnQiPT14P24ocygic3RhdCIpLHd4LHQpOiJhc3luYyI9PXg/bih2KToiQCI9PWE/bih5LHYpOm0ocygic3RhdCIpLHksdSgiOyIpLHQpfWZ1bmN0aW9uIHcoeCl7aWYoIigiPT14KXJldHVybiBuKG94LHUoIikiKSl9ZnVuY3Rpb24geSh4LGEpe3JldHVybiBCKHgsYSwhMSl9ZnVuY3Rpb24geih4LGEpe3JldHVybiBCKHgsYSwhMCl9ZnVuY3Rpb24gQSh4KXtyZXR1cm4iKCIhPXg/bSgpOm4ocygiKSIpLHksdSgiKSIpLHQpfWZ1bmN0aW9uIEIoeCxhLGIpe2lmKFV4LnN0YXRlLmZhdEFycm93QXQ9PVV4LnN0cmVhbS5zdGFydCl7dmFyIGM9Yj9JOkg7aWYoIigiPT14KXJldHVybiBuKHEscygiKSIpLFIob3gsIikiKSx0LHUoIj0+IiksYyxyKTtpZigidmFyaWFibGUiPT14KXJldHVybiBtKHEsZHgsdSgiPT4iKSxjLHIpfXZhciBkPWI/RTpEO3JldHVybiBUeC5oYXNPd25Qcm9wZXJ0eSh4KT9uKGQpOiJmdW5jdGlvbiI9PXg/bihueCxkKToiY2xhc3MiPT14fHxOeCYmImludGVyZmFjZSI9PWE/KFV4Lm1hcmtlZD0ia2V5d29yZCIsbihzKCJmb3JtIikscHgsdCkpOiJrZXl3b3JkIGMiPT14fHwiYXN5bmMiPT14P24oYj96OnkpOiIoIj09eD9uKHMoIikiKSxDLHUoIikiKSx0LGQpOiJvcGVyYXRvciI9PXh8fCJzcHJlYWQiPT14P24oYj96OnkpOiJbIj09eD9uKHMoIl0iKSxDeCx0LGQpOiJ7Ij09eD9TKE8sIn0iLG51bGwsZCk6InF1YXNpIj09eD9tKEYsZCk6Im5ldyI9PXg/bihKKGIpKToiaW1wb3J0Ij09eD9uKHkpOm4oKX1mdW5jdGlvbiBDKHgpe3JldHVybiB4Lm1hdGNoKC9bO1x9XClcXSxdLyk/bSgpOm0oeSl9ZnVuY3Rpb24gRCh4LGEpe3JldHVybiIsIj09eD9uKHkpOkUoeCxhLCExKX1mdW5jdGlvbiBFKHgsYSxiKXt2YXIgYz0wPT1iP0Q6RSxkPTA9PWI/eTp6O3JldHVybiI9PiI9PXg/bihxLGI/STpILHIpOiJvcGVyYXRvciI9PXg/L1wrXCt8LS0vLnRlc3QoYSl8fE54JiYiISI9PWE/bihjKTpOeCYmIjwiPT1hJiZVeC5zdHJlYW0ubWF0Y2goL14oW14+XXw8Lio/PikqPlxzKlwoLywhMSk/bihzKCI+IiksUihYLCI+IiksdCxjKToiPyI9PWE/bih5LHUoIjoiKSxkKTpuKGQpOiJxdWFzaSI9PXg/bShGLGMpOiI7IiE9eD8iKCI9PXg/Uyh6LCIpIiwiY2FsbCIsYyk6Ii4iPT14P24oTixjKToiWyI9PXg/bihzKCJdIiksQyx1KCJdIiksdCxjKTpOeCYmImFzIj09YT8oVXgubWFya2VkPSJrZXl3b3JkIixuKFgsYykpOiJyZWdleHAiPT14PyhVeC5zdGF0ZS5sYXN0VHlwZT1VeC5tYXJrZWQ9Im9wZXJhdG9yIixVeC5zdHJlYW0uYmFja1VwKFV4LnN0cmVhbS5wb3MtVXguc3RyZWFtLnN0YXJ0LTEpLG4oZCkpOnZvaWQgMDp2b2lkIDB9ZnVuY3Rpb24gRih4LGEpe3JldHVybiJxdWFzaSIhPXg/bSgpOiIkeyIhPWEuc2xpY2UoYS5sZW5ndGgtMik/bihGKTpuKHksRyl9ZnVuY3Rpb24gRyh4KXtpZigifSI9PXgpcmV0dXJuIFV4Lm1hcmtlZD0ic3RyaW5nLTIiLFV4LnN0YXRlLnRva2VuaXplPWgsbihGKX1mdW5jdGlvbiBIKHgpe3JldHVybiBpKFV4LnN0cmVhbSxVeC5zdGF0ZSksbSgieyI9PXg/djp5KX1mdW5jdGlvbiBJKHgpe3JldHVybiBpKFV4LnN0cmVhbSxVeC5zdGF0ZSksbSgieyI9PXg/djp6KX1mdW5jdGlvbiBKKHgpe3JldHVybiBmdW5jdGlvbihhKXtyZXR1cm4iLiI9PWE/bih4P0w6Syk6InZhcmlhYmxlIj09YSYmTng/bih4eCx4P0U6RCk6bSh4P3o6eSl9fWZ1bmN0aW9uIEsoeCxhKXtpZigidGFyZ2V0Ij09YSlyZXR1cm4gVXgubWFya2VkPSJrZXl3b3JkIixuKEQpfWZ1bmN0aW9uIEwoeCxhKXtpZigidGFyZ2V0Ij09YSlyZXR1cm4gVXgubWFya2VkPSJrZXl3b3JkIixuKEUpfWZ1bmN0aW9uIE0oeCl7cmV0dXJuIjoiPT14P24odCx2KTptKEQsdSgiOyIpLHQpfWZ1bmN0aW9uIE4oeCl7aWYoInZhcmlhYmxlIj09eClyZXR1cm4gVXgubWFya2VkPSJwcm9wZXJ0eSIsbigpfWZ1bmN0aW9uIE8oeCxhKXtyZXR1cm4iYXN5bmMiPT14PyhVeC5tYXJrZWQ9InByb3BlcnR5IixuKE8pKToidmFyaWFibGUiPT14fHwia2V5d29yZCI9PVV4LnN0eWxlPyhVeC5tYXJrZWQ9InByb3BlcnR5IiwiZ2V0Ij09YXx8InNldCI9PWE/bihQKTooTngmJlV4LnN0YXRlLmZhdEFycm93QXQ9PVV4LnN0cmVhbS5zdGFydCYmKGI9VXguc3RyZWFtLm1hdGNoKC9eXHMqOlxzKi8sITEpKSYmKFV4LnN0YXRlLmZhdEFycm93QXQ9VXguc3RyZWFtLnBvcytiWzBdLmxlbmd0aCksbihRKSkpOiJudW1iZXIiPT14fHwic3RyaW5nIj09eD8oVXgubWFya2VkPUx4PyJwcm9wZXJ0eSI6VXguc3R5bGUrIiBwcm9wZXJ0eSIsbihRKSk6Impzb25sZC1rZXl3b3JkIj09eD9uKFEpOk54JiZwKGEpPyhVeC5tYXJrZWQ9ImtleXdvcmQiLG4oTykpOiJbIj09eD9uKHksVSx1KCJdIiksUSk6InNwcmVhZCI9PXg/bih6LFEpOiIqIj09YT8oVXgubWFya2VkPSJrZXl3b3JkIixuKE8pKToiOiI9PXg/bShRKTp2b2lkIDA7dmFyIGJ9ZnVuY3Rpb24gUCh4KXtyZXR1cm4idmFyaWFibGUiIT14P20oUSk6KFV4Lm1hcmtlZD0icHJvcGVydHkiLG4obngpKX1mdW5jdGlvbiBRKHgpe3JldHVybiI6Ij09eD9uKHopOiIoIj09eD9tKG54KTp2b2lkIDB9ZnVuY3Rpb24gUih4LGEsYil7ZnVuY3Rpb24gYyhkLGUpe2lmKGI/Yi5pbmRleE9mKGQpPi0xOiIsIj09ZCl7dmFyIGY9VXguc3RhdGUubGV4aWNhbDtyZXR1cm4iY2FsbCI9PWYuaW5mbyYmKGYucG9zPShmLnBvc3x8MCkrMSksbihmdW5jdGlvbihiLGMpe3JldHVybiBiPT1hfHxjPT1hP20oKTptKHgpfSxjKX1yZXR1cm4gZD09YXx8ZT09YT9uKCk6bih1KGEpKX1yZXR1cm4gZnVuY3Rpb24oYixkKXtyZXR1cm4gYj09YXx8ZD09YT9uKCk6bSh4LGMpfX1mdW5jdGlvbiBTKHgsYSxiKXtmb3IodmFyIGM9MztjPGFyZ3VtZW50cy5sZW5ndGg7YysrKVV4LmNjLnB1c2goYXJndW1lbnRzW2NdKTtyZXR1cm4gbihzKGEsYiksUih4LGEpLHQpfWZ1bmN0aW9uIFQoeCl7cmV0dXJuIn0iPT14P24oKTptKHYsVCl9ZnVuY3Rpb24gVSh4LGEpe2lmKE54KXtpZigiOiI9PXgpcmV0dXJuIG4oWCk7aWYoIj8iPT1hKXJldHVybiBuKFUpfX1mdW5jdGlvbiBWKHgpe2lmKE54JiYiOiI9PXgpcmV0dXJuIFV4LnN0cmVhbS5tYXRjaCgvXlxzKlx3K1xzK2lzXGIvLCExKT9uKHksVyxYKTpuKFgpfWZ1bmN0aW9uIFcoeCxhKXtpZigiaXMiPT1hKXJldHVybiBVeC5tYXJrZWQ9ImtleXdvcmQiLG4oKX1mdW5jdGlvbiBYKHgsYSl7cmV0dXJuImtleW9mIj09YXx8InR5cGVvZiI9PWE/KFV4Lm1hcmtlZD0ia2V5d29yZCIsbigia2V5b2YiPT1hP1g6eikpOiJ2YXJpYWJsZSI9PXh8fCJ2b2lkIj09YT8oVXgubWFya2VkPSJ0eXBlIixuKF8pKToic3RyaW5nIj09eHx8Im51bWJlciI9PXh8fCJhdG9tIj09eD9uKF8pOiJbIj09eD9uKHMoIl0iKSxSKFgsIl0iLCIsIiksdCxfKToieyI9PXg/bihzKCJ9IiksUihaLCJ9IiwiLDsiKSx0LF8pOiIoIj09eD9uKFIoJCwiKSIpLFkpOiI8Ij09eD9uKFIoWCwiPiIpLFgpOnZvaWQgMH1mdW5jdGlvbiBZKHgpe2lmKCI9PiI9PXgpcmV0dXJuIG4oWCl9ZnVuY3Rpb24gWih4LGEpe3JldHVybiJ2YXJpYWJsZSI9PXh8fCJrZXl3b3JkIj09VXguc3R5bGU/KFV4Lm1hcmtlZD0icHJvcGVydHkiLG4oWikpOiI/Ij09YT9uKFopOiI6Ij09eD9uKFgpOiJbIj09eD9uKHksVSx1KCJdIiksWik6dm9pZCAwfWZ1bmN0aW9uICQoeCxhKXtyZXR1cm4idmFyaWFibGUiPT14JiZVeC5zdHJlYW0ubWF0Y2goL15ccypbPzpdLywhMSl8fCI/Ij09YT9uKCQpOiI6Ij09eD9uKFgpOm0oWCl9ZnVuY3Rpb24gXyh4LGEpe3JldHVybiI8Ij09YT9uKHMoIj4iKSxSKFgsIj4iKSx0LF8pOiJ8Ij09YXx8Ii4iPT14fHwiJiI9PWE/bihYKToiWyI9PXg/bih1KCJdIiksXyk6ImV4dGVuZHMiPT1hfHwiaW1wbGVtZW50cyI9PWE/KFV4Lm1hcmtlZD0ia2V5d29yZCIsbihYKSk6dm9pZCAwfWZ1bmN0aW9uIHh4KHgsYSl7aWYoIjwiPT1hKXJldHVybiBuKHMoIj4iKSxSKFgsIj4iKSx0LF8pfWZ1bmN0aW9uIGF4KCl7cmV0dXJuIG0oWCxieCl9ZnVuY3Rpb24gYngoeCxhKXtpZigiPSI9PWEpcmV0dXJuIG4oWCl9ZnVuY3Rpb24gY3goeCxhKXtyZXR1cm4iZW51bSI9PWE/KFV4Lm1hcmtlZD0ia2V5d29yZCIsbihEeCkpOm0oZHgsVSxmeCxneCl9ZnVuY3Rpb24gZHgoeCxhKXtyZXR1cm4gTngmJnAoYSk/KFV4Lm1hcmtlZD0ia2V5d29yZCIsbihkeCkpOiJ2YXJpYWJsZSI9PXg/KG8oYSksbigpKToic3ByZWFkIj09eD9uKGR4KToiWyI9PXg/UyhkeCwiXSIpOiJ7Ij09eD9TKGV4LCJ9Iik6dm9pZCAwfWZ1bmN0aW9uIGV4KHgsYSl7cmV0dXJuInZhcmlhYmxlIiE9eHx8VXguc3RyZWFtLm1hdGNoKC9eXHMqOi8sITEpPygidmFyaWFibGUiPT14JiYoVXgubWFya2VkPSJwcm9wZXJ0eSIpLCJzcHJlYWQiPT14P24oZHgpOiJ9Ij09eD9tKCk6bih1KCI6IiksZHgsZngpKToobyhhKSxuKGZ4KSl9ZnVuY3Rpb24gZngoeCxhKXtpZigiPSI9PWEpcmV0dXJuIG4oeil9ZnVuY3Rpb24gZ3goeCl7aWYoIiwiPT14KXJldHVybiBuKGN4KX1mdW5jdGlvbiBoeCh4LGEpe2lmKCJrZXl3b3JkIGIiPT14JiYiZWxzZSI9PWEpcmV0dXJuIG4ocygiZm9ybSIsImVsc2UiKSx2LHQpfWZ1bmN0aW9uIGl4KHgsYSl7cmV0dXJuImF3YWl0Ij09YT9uKGl4KToiKCI9PXg/bihzKCIpIiksangsdSgiKSIpLHQpOnZvaWQgMH1mdW5jdGlvbiBqeCh4KXtyZXR1cm4idmFyIj09eD9uKGN4LHUoIjsiKSxseCk6IjsiPT14P24obHgpOiJ2YXJpYWJsZSI9PXg/bihreCk6bSh5LHUoIjsiKSxseCl9ZnVuY3Rpb24ga3goeCxhKXtyZXR1cm4iaW4iPT1hfHwib2YiPT1hPyhVeC5tYXJrZWQ9ImtleXdvcmQiLG4oeSkpOm4oRCxseCl9ZnVuY3Rpb24gbHgoeCxhKXtyZXR1cm4iOyI9PXg/bihteCk6ImluIj09YXx8Im9mIj09YT8oVXgubWFya2VkPSJrZXl3b3JkIixuKHkpKTptKHksdSgiOyIpLG14KX1mdW5jdGlvbiBteCh4KXsiKSIhPXgmJm4oeSl9ZnVuY3Rpb24gbngoeCxhKXtyZXR1cm4iKiI9PWE/KFV4Lm1hcmtlZD0ia2V5d29yZCIsbihueCkpOiJ2YXJpYWJsZSI9PXg/KG8oYSksbihueCkpOiIoIj09eD9uKHEscygiKSIpLFIob3gsIikiKSx0LFYsdixyKTpOeCYmIjwiPT1hP24ocygiPiIpLFIoYXgsIj4iKSx0LG54KTp2b2lkIDB9ZnVuY3Rpb24gb3goeCxhKXtyZXR1cm4iQCI9PWEmJm4oeSxveCksInNwcmVhZCI9PXg/bihveCk6TngmJnAoYSk/KFV4Lm1hcmtlZD0ia2V5d29yZCIsbihveCkpOm0oZHgsVSxmeCl9ZnVuY3Rpb24gcHgoeCxhKXtyZXR1cm4idmFyaWFibGUiPT14P3F4KHgsYSk6cngoeCxhKX1mdW5jdGlvbiBxeCh4LGEpe2lmKCJ2YXJpYWJsZSI9PXgpcmV0dXJuIG8oYSksbihyeCl9ZnVuY3Rpb24gcngoeCxhKXtyZXR1cm4iPCI9PWE/bihzKCI+IiksUihheCwiPiIpLHQscngpOiJleHRlbmRzIj09YXx8ImltcGxlbWVudHMiPT1hfHxOeCYmIiwiPT14PygiaW1wbGVtZW50cyI9PWEmJihVeC5tYXJrZWQ9ImtleXdvcmQiKSxuKE54P1g6eSxyeCkpOiJ7Ij09eD9uKHMoIn0iKSxzeCx0KTp2b2lkIDB9ZnVuY3Rpb24gc3goeCxhKXtyZXR1cm4iYXN5bmMiPT14fHwidmFyaWFibGUiPT14JiYoInN0YXRpYyI9PWF8fCJnZXQiPT1hfHwic2V0Ij09YXx8TngmJnAoYSkpJiZVeC5zdHJlYW0ubWF0Y2goL15ccytbXHckXHhhMS1cdWZmZmZdLywhMSk/KFV4Lm1hcmtlZD0ia2V5d29yZCIsbihzeCkpOiJ2YXJpYWJsZSI9PXh8fCJrZXl3b3JkIj09VXguc3R5bGU/KFV4Lm1hcmtlZD0icHJvcGVydHkiLG4oTng/dHg6bngsc3gpKToiWyI9PXg/bih5LFUsdSgiXSIpLE54P3R4Om54LHN4KToiKiI9PWE/KFV4Lm1hcmtlZD0ia2V5d29yZCIsbihzeCkpOiI7Ij09eD9uKHN4KToifSI9PXg/bigpOiJAIj09YT9uKHksc3gpOnZvaWQgMH1mdW5jdGlvbiB0eCh4LGEpe3JldHVybiI/Ij09YT9uKHR4KToiOiI9PXg/bihYLGZ4KToiPSI9PWE/bih6KTptKG54KX1mdW5jdGlvbiB1eCh4LGEpe3JldHVybiIqIj09YT8oVXgubWFya2VkPSJrZXl3b3JkIixuKEJ4LHUoIjsiKSkpOiJkZWZhdWx0Ij09YT8oVXgubWFya2VkPSJrZXl3b3JkIixuKHksdSgiOyIpKSk6InsiPT14P24oUih2eCwifSIpLEJ4LHUoIjsiKSk6bSh2KX1mdW5jdGlvbiB2eCh4LGEpe3JldHVybiJhcyI9PWE/KFV4Lm1hcmtlZD0ia2V5d29yZCIsbih1KCJ2YXJpYWJsZSIpKSk6InZhcmlhYmxlIj09eD9tKHosdngpOnZvaWQgMH1mdW5jdGlvbiB3eCh4KXtyZXR1cm4ic3RyaW5nIj09eD9uKCk6IigiPT14P20oeSk6bSh5eCx6eCxCeCl9ZnVuY3Rpb24geXgoeCxhKXtyZXR1cm4ieyI9PXg/Uyh5eCwifSIpOigidmFyaWFibGUiPT14JiZvKGEpLCIqIj09YSYmKFV4Lm1hcmtlZD0ia2V5d29yZCIpLG4oQXgpKX1mdW5jdGlvbiB6eCh4KXtpZigiLCI9PXgpcmV0dXJuIG4oeXgsengpfWZ1bmN0aW9uIEF4KHgsYSl7aWYoImFzIj09YSlyZXR1cm4gVXgubWFya2VkPSJrZXl3b3JkIixuKHl4KX1mdW5jdGlvbiBCeCh4LGEpe2lmKCJmcm9tIj09YSlyZXR1cm4gVXgubWFya2VkPSJrZXl3b3JkIixuKHkpfWZ1bmN0aW9uIEN4KHgpe3JldHVybiJdIj09eD9uKCk6bShSKHosIl0iKSl9ZnVuY3Rpb24gRHgoKXtyZXR1cm4gbShzKCJmb3JtIiksZHgsdSgieyIpLHMoIn0iKSxSKEV4LCJ9IiksdCx0KX1mdW5jdGlvbiBFeCgpe3JldHVybiBtKGR4LGZ4KX1mdW5jdGlvbiBGeCh4LGEpe3JldHVybiJvcGVyYXRvciI9PXgubGFzdFR5cGV8fCIsIj09eC5sYXN0VHlwZXx8UXgudGVzdChhLmNoYXJBdCgwKSl8fC9bLC5dLy50ZXN0KGEuY2hhckF0KDApKX1mdW5jdGlvbiBHeCh4LGEsYil7cmV0dXJuIGEudG9rZW5pemU9PWUmJi9eKD86b3BlcmF0b3J8c29mfGtleXdvcmQgW2JjZF18Y2FzZXxuZXd8ZXhwb3J0fGRlZmF1bHR8c3ByZWFkfFtcW3t9XCgsOzpdfD0+KSQvLnRlc3QoYS5sYXN0VHlwZSl8fCJxdWFzaSI9PWEubGFzdFR5cGUmJi9ce1xzKiQvLnRlc3QoeC5zdHJpbmcuc2xpY2UoMCx4LnBvcy0oYnx8MCkpKX12YXIgSHgsSXgsSng9YS5pbmRlbnRVbml0LEt4PWIuc3RhdGVtZW50SW5kZW50LEx4PWIuanNvbmxkLE14PWIuanNvbnx8THgsTng9Yi50eXBlc2NyaXB0LE94PWIud29yZENoYXJhY3RlcnN8fC9bXHckXHhhMS1cdWZmZmZdLyxQeD1mdW5jdGlvbigpe2Z1bmN0aW9uIHgoeCl7cmV0dXJue3R5cGU6eCxzdHlsZToia2V5d29yZCJ9fXZhciBhPXgoImtleXdvcmQgYSIpLGI9eCgia2V5d29yZCBiIiksYz14KCJrZXl3b3JkIGMiKSxkPXgoImtleXdvcmQgZCIpLGU9eCgib3BlcmF0b3IiKSxmPXt0eXBlOiJhdG9tIixzdHlsZToiYXRvbSJ9O3JldHVybntpZjp4KCJpZiIpLHdoaWxlOmEsd2l0aDphLGVsc2U6YixkbzpiLHRyeTpiLGZpbmFsbHk6YixyZXR1cm46ZCxicmVhazpkLGNvbnRpbnVlOmQsbmV3OngoIm5ldyIpLGRlbGV0ZTpjLHZvaWQ6Yyx0aHJvdzpjLGRlYnVnZ2VyOngoImRlYnVnZ2VyIiksdmFyOngoInZhciIpLGNvbnN0OngoInZhciIpLGxldDp4KCJ2YXIiKSxmdW5jdGlvbjp4KCJmdW5jdGlvbiIpLGNhdGNoOngoImNhdGNoIiksZm9yOngoImZvciIpLHN3aXRjaDp4KCJzd2l0Y2giKSxjYXNlOngoImNhc2UiKSxkZWZhdWx0OngoImRlZmF1bHQiKSxpbjplLHR5cGVvZjplLGluc3RhbmNlb2Y6ZSx0cnVlOmYsZmFsc2U6ZixudWxsOmYsdW5kZWZpbmVkOmYsTmFOOmYsSW5maW5pdHk6Zix0aGlzOngoInRoaXMiKSxjbGFzczp4KCJjbGFzcyIpLHN1cGVyOngoImF0b20iKSx5aWVsZDpjLGV4cG9ydDp4KCJleHBvcnQiKSxpbXBvcnQ6eCgiaW1wb3J0IiksZXh0ZW5kczpjLGF3YWl0OmN9fSgpLFF4PS9bK1wtKiYlPTw+IT98fl5AXS8sUng9L15AKGNvbnRleHR8aWR8dmFsdWV8bGFuZ3VhZ2V8dHlwZXxjb250YWluZXJ8bGlzdHxzZXR8cmV2ZXJzZXxpbmRleHxiYXNlfHZvY2FifGdyYXBoKSIvLFN4PSIoW3t9XSkiLFR4PXthdG9tOiEwLG51bWJlcjohMCx2YXJpYWJsZTohMCxzdHJpbmc6ITAscmVnZXhwOiEwLHRoaXM6ITAsImpzb25sZC1rZXl3b3JkIjohMH0sVXg9e3N0YXRlOm51bGwsY29sdW1uOm51bGwsbWFya2VkOm51bGwsY2M6bnVsbH0sVng9e25hbWU6InRoaXMiLG5leHQ6e25hbWU6ImFyZ3VtZW50cyJ9fTtyZXR1cm4gdC5sZXg9ITAse3N0YXJ0U3RhdGU6ZnVuY3Rpb24oeCl7dmFyIGE9e3Rva2VuaXplOmUsbGFzdFR5cGU6InNvZiIsY2M6W10sbGV4aWNhbDpuZXcgaigoeHx8MCktSngsMCwiYmxvY2siLCExKSxsb2NhbFZhcnM6Yi5sb2NhbFZhcnMsY29udGV4dDpiLmxvY2FsVmFycyYme3ZhcnM6Yi5sb2NhbFZhcnN9LGluZGVudGVkOnh8fDB9O3JldHVybiBiLmdsb2JhbFZhcnMmJiJvYmplY3QiPT10eXBlb2YgYi5nbG9iYWxWYXJzJiYoYS5nbG9iYWxWYXJzPWIuZ2xvYmFsVmFycyksYX0sdG9rZW46ZnVuY3Rpb24oeCxhKXtpZih4LnNvbCgpJiYoYS5sZXhpY2FsLmhhc093blByb3BlcnR5KCJhbGlnbiIpfHwoYS5sZXhpY2FsLmFsaWduPSExKSxhLmluZGVudGVkPXguaW5kZW50YXRpb24oKSxpKHgsYSkpLGEudG9rZW5pemUhPWcmJnguZWF0U3BhY2UoKSlyZXR1cm4gbnVsbDt2YXIgYj1hLnRva2VuaXplKHgsYSk7cmV0dXJuImNvbW1lbnQiPT1IeD9iOihhLmxhc3RUeXBlPSJvcGVyYXRvciIhPUh4fHwiKysiIT1JeCYmIi0tIiE9SXg/SHg6ImluY2RlYyIsbChhLGIsSHgsSXgseCkpfSxpbmRlbnQ6ZnVuY3Rpb24oYSxjKXtpZihhLnRva2VuaXplPT1nKXJldHVybiB4LlBhc3M7aWYoYS50b2tlbml6ZSE9ZSlyZXR1cm4gMDt2YXIgZCxmPWMmJmMuY2hhckF0KDApLGg9YS5sZXhpY2FsO2lmKCEvXlxzKmVsc2VcYi8udGVzdChjKSlmb3IodmFyIGk9YS5jYy5sZW5ndGgtMTtpPj0wOy0taSl7dmFyIGo9YS5jY1tpXTtpZihqPT10KWg9aC5wcmV2O2Vsc2UgaWYoaiE9aHgpYnJlYWt9Zm9yKDsoInN0YXQiPT1oLnR5cGV8fCJmb3JtIj09aC50eXBlKSYmKCJ9Ij09Znx8KGQ9YS5jY1thLmNjLmxlbmd0aC0xXSkmJihkPT1EfHxkPT1FKSYmIS9eWyxcLj0rXC0qOj9bXChdLy50ZXN0KGMpKTspaD1oLnByZXY7S3gmJiIpIj09aC50eXBlJiYic3RhdCI9PWgucHJldi50eXBlJiYoaD1oLnByZXYpO3ZhciBrPWgudHlwZSxsPWY9PWs7cmV0dXJuInZhcmRlZiI9PWs/aC5pbmRlbnRlZCsoIm9wZXJhdG9yIj09YS5sYXN0VHlwZXx8IiwiPT1hLmxhc3RUeXBlP2guaW5mbysxOjApOiJmb3JtIj09ayYmInsiPT1mP2guaW5kZW50ZWQ6ImZvcm0iPT1rP2guaW5kZW50ZWQrSng6InN0YXQiPT1rP2guaW5kZW50ZWQrKEZ4KGEsYyk/S3h8fEp4OjApOiJzd2l0Y2giIT1oLmluZm98fGx8fDA9PWIuZG91YmxlSW5kZW50U3dpdGNoP2guYWxpZ24/aC5jb2x1bW4rKGw/MDoxKTpoLmluZGVudGVkKyhsPzA6SngpOmguaW5kZW50ZWQrKC9eKD86Y2FzZXxkZWZhdWx0KVxiLy50ZXN0KGMpP0p4OjIqSngpfSxlbGVjdHJpY0lucHV0Oi9eXHMqKD86Y2FzZSAuKj86fGRlZmF1bHQ6fFx7fFx9KSQvLGJsb2NrQ29tbWVudFN0YXJ0Ok14P251bGw6Ii8qIixibG9ja0NvbW1lbnRFbmQ6TXg/bnVsbDoiKi8iLGJsb2NrQ29tbWVudENvbnRpbnVlOk14P251bGw6IiAqICIsbGluZUNvbW1lbnQ6TXg/bnVsbDoiLy8iLGZvbGQ6ImJyYWNlIixjbG9zZUJyYWNrZXRzOiIoKVtde30nJ1wiXCJgYCIsaGVscGVyVHlwZTpNeD8ianNvbiI6ImphdmFzY3JpcHQiLGpzb25sZE1vZGU6THgsanNvbk1vZGU6TXgsZXhwcmVzc2lvbkFsbG93ZWQ6R3gsc2tpcEV4cHJlc3Npb246ZnVuY3Rpb24oeCl7dmFyIGE9eC5jY1t4LmNjLmxlbmd0aC0xXTthIT15JiZhIT16fHx4LmNjLnBvcCgpfX19KSx4LnJlZ2lzdGVySGVscGVyKCJ3b3JkQ2hhcnMiLCJqYXZhc2NyaXB0IiwvW1x3JF0vKSx4LmRlZmluZU1JTUUoInRleHQvamF2YXNjcmlwdCIsImphdmFzY3JpcHQiKSx4LmRlZmluZU1JTUUoInRleHQvZWNtYXNjcmlwdCIsImphdmFzY3JpcHQiKSx4LmRlZmluZU1JTUUoImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiLCJqYXZhc2NyaXB0IikseC5kZWZpbmVNSU1FKCJhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQiLCJqYXZhc2NyaXB0IikseC5kZWZpbmVNSU1FKCJhcHBsaWNhdGlvbi9lY21hc2NyaXB0IiwiamF2YXNjcmlwdCIpLHguZGVmaW5lTUlNRSgiYXBwbGljYXRpb24vanNvbiIse25hbWU6ImphdmFzY3JpcHQiLGpzb246ITB9KSx4LmRlZmluZU1JTUUoImFwcGxpY2F0aW9uL3gtanNvbiIse25hbWU6ImphdmFzY3JpcHQiLGpzb246ITB9KSx4LmRlZmluZU1JTUUoImFwcGxpY2F0aW9uL2xkK2pzb24iLHtuYW1lOiJqYXZhc2NyaXB0Iixqc29ubGQ6ITB9KSx4LmRlZmluZU1JTUUoInRleHQvdHlwZXNjcmlwdCIse25hbWU6ImphdmFzY3JpcHQiLHR5cGVzY3JpcHQ6ITB9KSx4LmRlZmluZU1JTUUoImFwcGxpY2F0aW9uL3R5cGVzY3JpcHQiLHtuYW1lOiJqYXZhc2NyaXB0Iix0eXBlc2NyaXB0OiEwfSl9KSxmdW5jdGlvbih4KXsib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMmJiJvYmplY3QiPT10eXBlb2YgbW9kdWxlP3gocmVxdWlyZSgiLi4vLi4vbGliL2NvZGVtaXJyb3IiKSk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyIuLi8uLi9saWIvY29kZW1pcnJvciJdLHgpOngoQ29kZU1pcnJvcil9KGZ1bmN0aW9uKHgpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBhKHgpe2Zvcih2YXIgYT17fSxiPTA7Yjx4Lmxlbmd0aDsrK2IpYVt4W2JdXT0hMDtyZXR1cm4gYX1mdW5jdGlvbiBiKHgsYSl7Zm9yKHZhciBiLGM9ITE7bnVsbCE9KGI9eC5uZXh0KCkpOyl7aWYoYyYmIi8iPT1iKXthLnRva2VuaXplPW51bGw7YnJlYWt9Yz0iKiI9PWJ9cmV0dXJuWyJjb21tZW50IiwiY29tbWVudCJdfWZ1bmN0aW9uIGMoeCxhKXtyZXR1cm4geC5za2lwVG8oIi0tXHgzZSIpPyh4Lm1hdGNoKCItLVx4M2UiKSxhLnRva2VuaXplPW51bGwpOnguc2tpcFRvRW5kKCksWyJjb21tZW50IiwiY29tbWVudCJdfXguZGVmaW5lTW9kZSgiY3NzIixmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoeCxhKXtyZXR1cm4gbT1hLHh9ZnVuY3Rpb24gZCh4LGEpe3ZhciBiPXgubmV4dCgpO2lmKHBbYl0pe3ZhciBkPXBbYl0oeCxhKTtpZighMSE9PWQpcmV0dXJuIGR9cmV0dXJuIkAiPT1iPyh4LmVhdFdoaWxlKC9bXHdcXFwtXS8pLGMoImRlZiIseC5jdXJyZW50KCkpKToiPSI9PWJ8fCgifiI9PWJ8fCJ8Ij09YikmJnguZWF0KCI9Iik/YyhudWxsLCJjb21wYXJlIik6JyInPT1ifHwiJyI9PWI/KGEudG9rZW5pemU9ZShiKSxhLnRva2VuaXplKHgsYSkpOiIjIj09Yj8oeC5lYXRXaGlsZSgvW1x3XFxcLV0vKSxjKCJhdG9tIiwiaGFzaCIpKToiISI9PWI/KHgubWF0Y2goL15ccypcdyovKSxjKCJrZXl3b3JkIiwiaW1wb3J0YW50IikpOi9cZC8udGVzdChiKXx8Ii4iPT1iJiZ4LmVhdCgvXGQvKT8oeC5lYXRXaGlsZSgvW1x3LiVdLyksYygibnVtYmVyIiwidW5pdCIpKToiLSIhPT1iPy9bLCs+KlwvXS8udGVzdChiKT9jKG51bGwsInNlbGVjdC1vcCIpOiIuIj09YiYmeC5tYXRjaCgvXi0/W19hLXpdW19hLXowLTktXSovaSk/YygicXVhbGlmaWVyIiwicXVhbGlmaWVyIik6L1s6O3t9XFtcXVwoXCldLy50ZXN0KGIpP2MobnVsbCxiKToidSI9PWImJngubWF0Y2goInJsKCIpPyh4LmJhY2tVcCgxKSxhLnRva2VuaXplPWYsYygicHJvcGVydHkiLCJ3b3JkIikpOi9bXHdcXFwtXS8udGVzdChiKT8oeC5lYXRXaGlsZSgvW1x3XFxcLV0vKSxjKCJwcm9wZXJ0eSIsIndvcmQiKSk6YyhudWxsLG51bGwpOi9bXGQuXS8udGVzdCh4LnBlZWsoKSk/KHguZWF0V2hpbGUoL1tcdy4lXS8pLGMoIm51bWJlciIsInVuaXQiKSk6eC5tYXRjaCgvXlx3Ky0vKT9jKCJtZXRhIiwibWV0YSIpOnZvaWQgMH1mdW5jdGlvbiBlKHgpe3JldHVybiBmdW5jdGlvbihhLGIpe2Zvcih2YXIgZCxlPSExO251bGwhPShkPWEubmV4dCgpKTspe2lmKGQ9PXgmJiFlKXsiKSI9PXgmJmEuYmFja1VwKDEpO2JyZWFrfWU9IWUmJiJcXCI9PWR9cmV0dXJuKGQ9PXh8fCFlJiYiKSIhPXgpJiYoYi50b2tlbml6ZT1udWxsKSxjKCJzdHJpbmciLCJzdHJpbmciKX19ZnVuY3Rpb24gZih4LGEpe3JldHVybiB4Lm5leHQoKSx4Lm1hdGNoKC9ccypbXCJcJyldLywhMSk/YS50b2tlbml6ZT1udWxsOmEudG9rZW5pemU9ZSgiKSIpLGMobnVsbCwiKCIpfWZ1bmN0aW9uIGcoeCxhLGIpe3RoaXMudHlwZT14LHRoaXMuaW5kZW50PWEsdGhpcy5wcmV2PWJ9ZnVuY3Rpb24gaCh4LGEsYil7cmV0dXJuIHguY29udGV4dD1uZXcgZyhiLGEuaW5kZW50YXRpb24oKStvLHguY29udGV4dCksYn1mdW5jdGlvbiBpKHgpe3JldHVybiB4LmNvbnRleHQ9eC5jb250ZXh0LnByZXYseC5jb250ZXh0LnR5cGV9ZnVuY3Rpb24gaih4LGEsYil7cmV0dXJuIHpbYi5jb250ZXh0LnR5cGVdKHgsYSxiKX1mdW5jdGlvbiBrKHgsYSxiLGMpe2Zvcih2YXIgZD1jfHwxO2Q+MDtkLS0pYi5jb250ZXh0PWIuY29udGV4dC5wcmV2O3JldHVybiBqKHgsYSxiKX1mdW5jdGlvbiBsKHgpe3ZhciBhPXguY3VycmVudCgpLnRvTG93ZXJDYXNlKCk7bj12Lmhhc093blByb3BlcnR5KGEpPyJhdG9tIjp1Lmhhc093blByb3BlcnR5KGEpPyJrZXl3b3JkIjoidmFyaWFibGUifWIucHJvcGVydHlLZXl3b3Jkc3x8KGI9eC5yZXNvbHZlTW9kZSgidGV4dC9jc3MiKSk7dmFyIG0sbixvPWEuaW5kZW50VW5pdCxwPWIudG9rZW5Ib29rcyxxPWIubWVkaWFUeXBlc3x8e30scj1iLm1lZGlhRmVhdHVyZXN8fHt9LHM9Yi5wcm9wZXJ0eUtleXdvcmRzfHx7fSx0PWIubm9uU3RhbmRhcmRQcm9wZXJ0eUtleXdvcmRzfHx7fSx1PWIuY29sb3JLZXl3b3Jkc3x8e30sdj1iLnZhbHVlS2V5d29yZHN8fHt9LHc9Yi5mb250UHJvcGVydGllc3x8e30seT1iLmFsbG93TmVzdGVkLHo9e3RvcDpmdW5jdGlvbih4LGEsYil7aWYoInsiPT14KXJldHVybiBoKGIsYSwiYmxvY2siKTtpZigifSI9PXgmJmIuY29udGV4dC5wcmV2KXJldHVybiBpKGIpO2lmKCJAbWVkaWEiPT14KXJldHVybiBoKGIsYSwibWVkaWEiKTtpZigiQGZvbnQtZmFjZSI9PXgpcmV0dXJuImZvbnRfZmFjZV9iZWZvcmUiO2lmKC9eQCgtKG1venxtc3xvfHdlYmtpdCktKT9rZXlmcmFtZXMkLy50ZXN0KHgpKXJldHVybiJrZXlmcmFtZXMiO2lmKHgmJiJAIj09eC5jaGFyQXQoMCkpcmV0dXJuIGgoYixhLCJhdCIpO2lmKCJoYXNoIj09eCluPSJidWlsdGluIjtlbHNlIGlmKCJ3b3JkIj09eCluPSJ0YWciO2Vsc2V7aWYoInZhcmlhYmxlLWRlZmluaXRpb24iPT14KXJldHVybiJtYXliZXByb3AiO2lmKCJpbnRlcnBvbGF0aW9uIj09eClyZXR1cm4gaChiLGEsImludGVycG9sYXRpb24iKTtpZigiOiI9PXgpcmV0dXJuInBzZXVkbyI7aWYoeSYmIigiPT14KXJldHVybiBoKGIsYSwicGFyZW5zIil9cmV0dXJuIGIuY29udGV4dC50eXBlfSxibG9jazpmdW5jdGlvbih4LGEsYil7aWYoIndvcmQiPT14KXt2YXIgYz1hLmN1cnJlbnQoKS50b0xvd2VyQ2FzZSgpO3JldHVybiBzLmhhc093blByb3BlcnR5KGMpPyhuPSJwcm9wZXJ0eSIsIm1heWJlcHJvcCIpOnQuaGFzT3duUHJvcGVydHkoYyk/KG49InN0cmluZy0yIiwibWF5YmVwcm9wIik6eT8obj1hLm1hdGNoKC9eXHMqOi8sITEpPyJwcm9wZXJ0eSI6InRhZyIsImJsb2NrIik6KG4rPSIgZXJyb3IiLCJtYXliZXByb3AiKX1yZXR1cm4ibWV0YSI9PXg/ImJsb2NrIjp5fHwiaGFzaCIhPXgmJiJxdWFsaWZpZXIiIT14P3oudG9wKHgsYSxiKToobj0iZXJyb3IiLCJibG9jayIpfSxtYXliZXByb3A6ZnVuY3Rpb24oeCxhLGIpe3JldHVybiI6Ij09eD9oKGIsYSwicHJvcCIpOmooeCxhLGIpfSxwcm9wOmZ1bmN0aW9uKHgsYSxiKXtpZigiOyI9PXgpcmV0dXJuIGkoYik7aWYoInsiPT14JiZ5KXJldHVybiBoKGIsYSwicHJvcEJsb2NrIik7aWYoIn0iPT14fHwieyI9PXgpcmV0dXJuIGsoeCxhLGIpO2lmKCIoIj09eClyZXR1cm4gaChiLGEsInBhcmVucyIpO2lmKCJoYXNoIiE9eHx8L14jKFswLTlhLWZBLWZdezN9fFswLTlhLWZBLWZdezZ9KSQvLnRlc3QoYS5jdXJyZW50KCkpKXtpZigid29yZCI9PXgpbChhKTtlbHNlIGlmKCJpbnRlcnBvbGF0aW9uIj09eClyZXR1cm4gaChiLGEsImludGVycG9sYXRpb24iKX1lbHNlIG4rPSIgZXJyb3IiO3JldHVybiJwcm9wIn0scHJvcEJsb2NrOmZ1bmN0aW9uKHgsYSxiKXtyZXR1cm4ifSI9PXg/aShiKToid29yZCI9PXg/KG49InByb3BlcnR5IiwibWF5YmVwcm9wIik6Yi5jb250ZXh0LnR5cGV9LHBhcmVuczpmdW5jdGlvbih4LGEsYil7cmV0dXJuInsiPT14fHwifSI9PXg/ayh4LGEsYik6IikiPT14P2koYik6IigiPT14P2goYixhLCJwYXJlbnMiKTooIndvcmQiPT14JiZsKGEpLCJwYXJlbnMiKX0scHNldWRvOmZ1bmN0aW9uKHgsYSxiKXtyZXR1cm4id29yZCI9PXg/KG49InZhcmlhYmxlLTMiLGIuY29udGV4dC50eXBlKTpqKHgsYSxiKX0sbWVkaWE6ZnVuY3Rpb24oeCxhLGIpe2lmKCIoIj09eClyZXR1cm4gaChiLGEsIm1lZGlhX3BhcmVucyIpO2lmKCJ9Ij09eClyZXR1cm4gayh4LGEsYik7aWYoInsiPT14KXJldHVybiBpKGIpJiZoKGIsYSx5PyJibG9jayI6InRvcCIpO2lmKCJ3b3JkIj09eCl7dmFyIGM9YS5jdXJyZW50KCkudG9Mb3dlckNhc2UoKTtuPSJvbmx5Ij09Y3x8Im5vdCI9PWN8fCJhbmQiPT1jPyJrZXl3b3JkIjpxLmhhc093blByb3BlcnR5KGMpPyJhdHRyaWJ1dGUiOnIuaGFzT3duUHJvcGVydHkoYyk/InByb3BlcnR5IjoiZXJyb3IifXJldHVybiBiLmNvbnRleHQudHlwZX0sbWVkaWFfcGFyZW5zOmZ1bmN0aW9uKHgsYSxiKXtyZXR1cm4iKSI9PXg/aShiKToieyI9PXh8fCJ9Ij09eD9rKHgsYSxiLDIpOnoubWVkaWEoeCxhLGIpfSxmb250X2ZhY2VfYmVmb3JlOmZ1bmN0aW9uKHgsYSxiKXtyZXR1cm4ieyI9PXg/aChiLGEsImZvbnRfZmFjZSIpOmooeCxhLGIpfSxmb250X2ZhY2U6ZnVuY3Rpb24oeCxhLGIpe3JldHVybiJ9Ij09eD9pKGIpOiJ3b3JkIj09eD8obj13Lmhhc093blByb3BlcnR5KGEuY3VycmVudCgpLnRvTG93ZXJDYXNlKCkpPyJwcm9wZXJ0eSI6ImVycm9yIiwibWF5YmVwcm9wIik6ImZvbnRfZmFjZSJ9LGtleWZyYW1lczpmdW5jdGlvbih4LGEsYil7cmV0dXJuIndvcmQiPT14PyhuPSJ2YXJpYWJsZSIsImtleWZyYW1lcyIpOiJ7Ij09eD9oKGIsYSwidG9wIik6aih4LGEsYil9LGF0OmZ1bmN0aW9uKHgsYSxiKXtyZXR1cm4iOyI9PXg/aShiKToieyI9PXh8fCJ9Ij09eD9rKHgsYSxiKTooIndvcmQiPT14P249InRhZyI6Imhhc2giPT14JiYobj0iYnVpbHRpbiIpLCJhdCIpfSxpbnRlcnBvbGF0aW9uOmZ1bmN0aW9uKHgsYSxiKXtyZXR1cm4ifSI9PXg/aShiKToieyI9PXh8fCI7Ij09eD9rKHgsYSxiKTooInZhcmlhYmxlIiE9eCYmKG49ImVycm9yIiksImludGVycG9sYXRpb24iKX19O3JldHVybntzdGFydFN0YXRlOmZ1bmN0aW9uKHgpe3JldHVybnt0b2tlbml6ZTpudWxsLHN0YXRlOiJ0b3AiLGNvbnRleHQ6bmV3IGcoInRvcCIseHx8MCxudWxsKX19LHRva2VuOmZ1bmN0aW9uKHgsYSl7aWYoIWEudG9rZW5pemUmJnguZWF0U3BhY2UoKSlyZXR1cm4gbnVsbDt2YXIgYj0oYS50b2tlbml6ZXx8ZCkoeCxhKTtyZXR1cm4gYiYmIm9iamVjdCI9PXR5cGVvZiBiJiYobT1iWzFdLGI9YlswXSksbj1iLGEuc3RhdGU9elthLnN0YXRlXShtLHgsYSksbn0saW5kZW50OmZ1bmN0aW9uKHgsYSl7dmFyIGI9eC5jb250ZXh0LGM9YSYmYS5jaGFyQXQoMCksZD1iLmluZGVudDtyZXR1cm4icHJvcCIhPWIudHlwZXx8In0iIT1jJiYiKSIhPWN8fChiPWIucHJldiksIWIucHJldnx8KCJ9IiE9Y3x8ImJsb2NrIiE9Yi50eXBlJiYidG9wIiE9Yi50eXBlJiYiaW50ZXJwb2xhdGlvbiIhPWIudHlwZSYmImZvbnRfZmFjZSIhPWIudHlwZSkmJigiKSIhPWN8fCJwYXJlbnMiIT1iLnR5cGUmJiJtZWRpYV9wYXJlbnMiIT1iLnR5cGUpJiYoInsiIT1jfHwiYXQiIT1iLnR5cGUmJiJtZWRpYSIhPWIudHlwZSl8fChkPWIuaW5kZW50LW8sYj1iLnByZXYpLGR9LGVsZWN0cmljQ2hhcnM6In0iLGJsb2NrQ29tbWVudFN0YXJ0OiIvKiIsYmxvY2tDb21tZW50RW5kOiIqLyIsZm9sZDoiYnJhY2UifX0pO3ZhciBkPVsiYWxsIiwiYXVyYWwiLCJicmFpbGxlIiwiaGFuZGhlbGQiLCJwcmludCIsInByb2plY3Rpb24iLCJzY3JlZW4iLCJ0dHkiLCJ0diIsImVtYm9zc2VkIl0sZT1hKGQpLGY9WyJ3aWR0aCIsIm1pbi13aWR0aCIsIm1heC13aWR0aCIsImhlaWdodCIsIm1pbi1oZWlnaHQiLCJtYXgtaGVpZ2h0IiwiZGV2aWNlLXdpZHRoIiwibWluLWRldmljZS13aWR0aCIsIm1heC1kZXZpY2Utd2lkdGgiLCJkZXZpY2UtaGVpZ2h0IiwibWluLWRldmljZS1oZWlnaHQiLCJtYXgtZGV2aWNlLWhlaWdodCIsImFzcGVjdC1yYXRpbyIsIm1pbi1hc3BlY3QtcmF0aW8iLCJtYXgtYXNwZWN0LXJhdGlvIiwiZGV2aWNlLWFzcGVjdC1yYXRpbyIsIm1pbi1kZXZpY2UtYXNwZWN0LXJhdGlvIiwibWF4LWRldmljZS1hc3BlY3QtcmF0aW8iLCJjb2xvciIsIm1pbi1jb2xvciIsIm1heC1jb2xvciIsImNvbG9yLWluZGV4IiwibWluLWNvbG9yLWluZGV4IiwibWF4LWNvbG9yLWluZGV4IiwibW9ub2Nocm9tZSIsIm1pbi1tb25vY2hyb21lIiwibWF4LW1vbm9jaHJvbWUiLCJyZXNvbHV0aW9uIiwibWluLXJlc29sdXRpb24iLCJtYXgtcmVzb2x1dGlvbiIsInNjYW4iLCJncmlkIl0sZz1hKGYpLGg9WyJhbGlnbi1jb250ZW50IiwiYWxpZ24taXRlbXMiLCJhbGlnbi1zZWxmIiwiYWxpZ25tZW50LWFkanVzdCIsImFsaWdubWVudC1iYXNlbGluZSIsImFuY2hvci1wb2ludCIsImFuaW1hdGlvbiIsImFuaW1hdGlvbi1kZWxheSIsImFuaW1hdGlvbi1kaXJlY3Rpb24iLCJhbmltYXRpb24tZHVyYXRpb24iLCJhbmltYXRpb24tZmlsbC1tb2RlIiwiYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCIsImFuaW1hdGlvbi1uYW1lIiwiYW5pbWF0aW9uLXBsYXktc3RhdGUiLCJhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uIiwiYXBwZWFyYW5jZSIsImF6aW11dGgiLCJiYWNrZmFjZS12aXNpYmlsaXR5IiwiYmFja2dyb3VuZCIsImJhY2tncm91bmQtYXR0YWNobWVudCIsImJhY2tncm91bmQtY2xpcCIsImJhY2tncm91bmQtY29sb3IiLCJiYWNrZ3JvdW5kLWltYWdlIiwiYmFja2dyb3VuZC1vcmlnaW4iLCJiYWNrZ3JvdW5kLXBvc2l0aW9uIiwiYmFja2dyb3VuZC1yZXBlYXQiLCJiYWNrZ3JvdW5kLXNpemUiLCJiYXNlbGluZS1zaGlmdCIsImJpbmRpbmciLCJibGVlZCIsImJvb2ttYXJrLWxhYmVsIiwiYm9va21hcmstbGV2ZWwiLCJib29rbWFyay1zdGF0ZSIsImJvb2ttYXJrLXRhcmdldCIsImJvcmRlciIsImJvcmRlci1ib3R0b20iLCJib3JkZXItYm90dG9tLWNvbG9yIiwiYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1cyIsImJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzIiwiYm9yZGVyLWJvdHRvbS1zdHlsZSIsImJvcmRlci1ib3R0b20td2lkdGgiLCJib3JkZXItY29sbGFwc2UiLCJib3JkZXItY29sb3IiLCJib3JkZXItaW1hZ2UiLCJib3JkZXItaW1hZ2Utb3V0c2V0IiwiYm9yZGVyLWltYWdlLXJlcGVhdCIsImJvcmRlci1pbWFnZS1zbGljZSIsImJvcmRlci1pbWFnZS1zb3VyY2UiLCJib3JkZXItaW1hZ2Utd2lkdGgiLCJib3JkZXItbGVmdCIsImJvcmRlci1sZWZ0LWNvbG9yIiwiYm9yZGVyLWxlZnQtc3R5bGUiLCJib3JkZXItbGVmdC13aWR0aCIsImJvcmRlci1yYWRpdXMiLCJib3JkZXItcmlnaHQiLCJib3JkZXItcmlnaHQtY29sb3IiLCJib3JkZXItcmlnaHQtc3R5bGUiLCJib3JkZXItcmlnaHQtd2lkdGgiLCJib3JkZXItc3BhY2luZyIsImJvcmRlci1zdHlsZSIsImJvcmRlci10b3AiLCJib3JkZXItdG9wLWNvbG9yIiwiYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cyIsImJvcmRlci10b3AtcmlnaHQtcmFkaXVzIiwiYm9yZGVyLXRvcC1zdHlsZSIsImJvcmRlci10b3Atd2lkdGgiLCJib3JkZXItd2lkdGgiLCJib3R0b20iLCJib3gtZGVjb3JhdGlvbi1icmVhayIsImJveC1zaGFkb3ciLCJib3gtc2l6aW5nIiwiYnJlYWstYWZ0ZXIiLCJicmVhay1iZWZvcmUiLCJicmVhay1pbnNpZGUiLCJjYXB0aW9uLXNpZGUiLCJjbGVhciIsImNsaXAiLCJjb2xvciIsImNvbG9yLXByb2ZpbGUiLCJjb2x1bW4tY291bnQiLCJjb2x1bW4tZmlsbCIsImNvbHVtbi1nYXAiLCJjb2x1bW4tcnVsZSIsImNvbHVtbi1ydWxlLWNvbG9yIiwiY29sdW1uLXJ1bGUtc3R5bGUiLCJjb2x1bW4tcnVsZS13aWR0aCIsImNvbHVtbi1zcGFuIiwiY29sdW1uLXdpZHRoIiwiY29sdW1ucyIsImNvbnRlbnQiLCJjb3VudGVyLWluY3JlbWVudCIsImNvdW50ZXItcmVzZXQiLCJjcm9wIiwiY3VlIiwiY3VlLWFmdGVyIiwiY3VlLWJlZm9yZSIsImN1cnNvciIsImRpcmVjdGlvbiIsImRpc3BsYXkiLCJkb21pbmFudC1iYXNlbGluZSIsImRyb3AtaW5pdGlhbC1hZnRlci1hZGp1c3QiLCJkcm9wLWluaXRpYWwtYWZ0ZXItYWxpZ24iLCJkcm9wLWluaXRpYWwtYmVmb3JlLWFkanVzdCIsImRyb3AtaW5pdGlhbC1iZWZvcmUtYWxpZ24iLCJkcm9wLWluaXRpYWwtc2l6ZSIsImRyb3AtaW5pdGlhbC12YWx1ZSIsImVsZXZhdGlvbiIsImVtcHR5LWNlbGxzIiwiZml0IiwiZml0LXBvc2l0aW9uIiwiZmxleCIsImZsZXgtYmFzaXMiLCJmbGV4LWRpcmVjdGlvbiIsImZsZXgtZmxvdyIsImZsZXgtZ3JvdyIsImZsZXgtc2hyaW5rIiwiZmxleC13cmFwIiwiZmxvYXQiLCJmbG9hdC1vZmZzZXQiLCJmbG93LWZyb20iLCJmbG93LWludG8iLCJmb250IiwiZm9udC1mZWF0dXJlLXNldHRpbmdzIiwiZm9udC1mYW1pbHkiLCJmb250LWtlcm5pbmciLCJmb250LWxhbmd1YWdlLW92ZXJyaWRlIiwiZm9udC1zaXplIiwiZm9udC1zaXplLWFkanVzdCIsImZvbnQtc3RyZXRjaCIsImZvbnQtc3R5bGUiLCJmb250LXN5bnRoZXNpcyIsImZvbnQtdmFyaWFudCIsImZvbnQtdmFyaWFudC1hbHRlcm5hdGVzIiwiZm9udC12YXJpYW50LWNhcHMiLCJmb250LXZhcmlhbnQtZWFzdC1hc2lhbiIsImZvbnQtdmFyaWFudC1saWdhdHVyZXMiLCJmb250LXZhcmlhbnQtbnVtZXJpYyIsImZvbnQtdmFyaWFudC1wb3NpdGlvbiIsImZvbnQtd2VpZ2h0IiwiZ3JpZCIsImdyaWQtYXJlYSIsImdyaWQtYXV0by1jb2x1bW5zIiwiZ3JpZC1hdXRvLWZsb3ciLCJncmlkLWF1dG8tcG9zaXRpb24iLCJncmlkLWF1dG8tcm93cyIsImdyaWQtY29sdW1uIiwiZ3JpZC1jb2x1bW4tZW5kIiwiZ3JpZC1jb2x1bW4tc3RhcnQiLCJncmlkLXJvdyIsImdyaWQtcm93LWVuZCIsImdyaWQtcm93LXN0YXJ0IiwiZ3JpZC10ZW1wbGF0ZSIsImdyaWQtdGVtcGxhdGUtYXJlYXMiLCJncmlkLXRlbXBsYXRlLWNvbHVtbnMiLCJncmlkLXRlbXBsYXRlLXJvd3MiLCJoYW5naW5nLXB1bmN0dWF0aW9uIiwiaGVpZ2h0IiwiaHlwaGVucyIsImljb24iLCJpbWFnZS1vcmllbnRhdGlvbiIsImltYWdlLXJlbmRlcmluZyIsImltYWdlLXJlc29sdXRpb24iLCJpbmxpbmUtYm94LWFsaWduIiwianVzdGlmeS1jb250ZW50IiwibGVmdCIsImxldHRlci1zcGFjaW5nIiwibGluZS1icmVhayIsImxpbmUtaGVpZ2h0IiwibGluZS1zdGFja2luZyIsImxpbmUtc3RhY2tpbmctcnVieSIsImxpbmUtc3RhY2tpbmctc2hpZnQiLCJsaW5lLXN0YWNraW5nLXN0cmF0ZWd5IiwibGlzdC1zdHlsZSIsImxpc3Qtc3R5bGUtaW1hZ2UiLCJsaXN0LXN0eWxlLXBvc2l0aW9uIiwibGlzdC1zdHlsZS10eXBlIiwibWFyZ2luIiwibWFyZ2luLWJvdHRvbSIsIm1hcmdpbi1sZWZ0IiwibWFyZ2luLXJpZ2h0IiwibWFyZ2luLXRvcCIsIm1hcmtlci1vZmZzZXQiLCJtYXJrcyIsIm1hcnF1ZWUtZGlyZWN0aW9uIiwibWFycXVlZS1sb29wIiwibWFycXVlZS1wbGF5LWNvdW50IiwibWFycXVlZS1zcGVlZCIsIm1hcnF1ZWUtc3R5bGUiLCJtYXgtaGVpZ2h0IiwibWF4LXdpZHRoIiwibWluLWhlaWdodCIsIm1pbi13aWR0aCIsIm1vdmUtdG8iLCJuYXYtZG93biIsIm5hdi1pbmRleCIsIm5hdi1sZWZ0IiwibmF2LXJpZ2h0IiwibmF2LXVwIiwib2JqZWN0LWZpdCIsIm9iamVjdC1wb3NpdGlvbiIsIm9wYWNpdHkiLCJvcmRlciIsIm9ycGhhbnMiLCJvdXRsaW5lIiwib3V0bGluZS1jb2xvciIsIm91dGxpbmUtb2Zmc2V0Iiwib3V0bGluZS1zdHlsZSIsIm91dGxpbmUtd2lkdGgiLCJvdmVyZmxvdyIsIm92ZXJmbG93LXN0eWxlIiwib3ZlcmZsb3ctd3JhcCIsIm92ZXJmbG93LXgiLCJvdmVyZmxvdy15IiwicGFkZGluZyIsInBhZGRpbmctYm90dG9tIiwicGFkZGluZy1sZWZ0IiwicGFkZGluZy1yaWdodCIsInBhZGRpbmctdG9wIiwicGFnZSIsInBhZ2UtYnJlYWstYWZ0ZXIiLCJwYWdlLWJyZWFrLWJlZm9yZSIsInBhZ2UtYnJlYWstaW5zaWRlIiwicGFnZS1wb2xpY3kiLCJwYXVzZSIsInBhdXNlLWFmdGVyIiwicGF1c2UtYmVmb3JlIiwicGVyc3BlY3RpdmUiLCJwZXJzcGVjdGl2ZS1vcmlnaW4iLCJwaXRjaCIsInBpdGNoLXJhbmdlIiwicGxheS1kdXJpbmciLCJwb3NpdGlvbiIsInByZXNlbnRhdGlvbi1sZXZlbCIsInB1bmN0dWF0aW9uLXRyaW0iLCJxdW90ZXMiLCJyZWdpb24tYnJlYWstYWZ0ZXIiLCJyZWdpb24tYnJlYWstYmVmb3JlIiwicmVnaW9uLWJyZWFrLWluc2lkZSIsInJlZ2lvbi1mcmFnbWVudCIsInJlbmRlcmluZy1pbnRlbnQiLCJyZXNpemUiLCJyZXN0IiwicmVzdC1hZnRlciIsInJlc3QtYmVmb3JlIiwicmljaG5lc3MiLCJyaWdodCIsInJvdGF0aW9uIiwicm90YXRpb24tcG9pbnQiLCJydWJ5LWFsaWduIiwicnVieS1vdmVyaGFuZyIsInJ1YnktcG9zaXRpb24iLCJydWJ5LXNwYW4iLCJzaGFwZS1pbWFnZS10aHJlc2hvbGQiLCJzaGFwZS1pbnNpZGUiLCJzaGFwZS1tYXJnaW4iLCJzaGFwZS1vdXRzaWRlIiwic2l6ZSIsInNwZWFrIiwic3BlYWstYXMiLCJzcGVhay1oZWFkZXIiLCJzcGVhay1udW1lcmFsIiwic3BlYWstcHVuY3R1YXRpb24iLCJzcGVlY2gtcmF0ZSIsInN0cmVzcyIsInN0cmluZy1zZXQiLCJ0YWItc2l6ZSIsInRhYmxlLWxheW91dCIsInRhcmdldCIsInRhcmdldC1uYW1lIiwidGFyZ2V0LW5ldyIsInRhcmdldC1wb3NpdGlvbiIsInRleHQtYWxpZ24iLCJ0ZXh0LWFsaWduLWxhc3QiLCJ0ZXh0LWRlY29yYXRpb24iLCJ0ZXh0LWRlY29yYXRpb24tY29sb3IiLCJ0ZXh0LWRlY29yYXRpb24tbGluZSIsInRleHQtZGVjb3JhdGlvbi1za2lwIiwidGV4dC1kZWNvcmF0aW9uLXN0eWxlIiwidGV4dC1lbXBoYXNpcyIsInRleHQtZW1waGFzaXMtY29sb3IiLCJ0ZXh0LWVtcGhhc2lzLXBvc2l0aW9uIiwidGV4dC1lbXBoYXNpcy1zdHlsZSIsInRleHQtaGVpZ2h0IiwidGV4dC1pbmRlbnQiLCJ0ZXh0LWp1c3RpZnkiLCJ0ZXh0LW91dGxpbmUiLCJ0ZXh0LW92ZXJmbG93IiwidGV4dC1zaGFkb3ciLCJ0ZXh0LXNpemUtYWRqdXN0IiwidGV4dC1zcGFjZS1jb2xsYXBzZSIsInRleHQtdHJhbnNmb3JtIiwidGV4dC11bmRlcmxpbmUtcG9zaXRpb24iLCJ0ZXh0LXdyYXAiLCJ0b3AiLCJ0cmFuc2Zvcm0iLCJ0cmFuc2Zvcm0tb3JpZ2luIiwidHJhbnNmb3JtLXN0eWxlIiwidHJhbnNpdGlvbiIsInRyYW5zaXRpb24tZGVsYXkiLCJ0cmFuc2l0aW9uLWR1cmF0aW9uIiwidHJhbnNpdGlvbi1wcm9wZXJ0eSIsInRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uIiwidW5pY29kZS1iaWRpIiwidmVydGljYWwtYWxpZ24iLCJ2aXNpYmlsaXR5Iiwidm9pY2UtYmFsYW5jZSIsInZvaWNlLWR1cmF0aW9uIiwidm9pY2UtZmFtaWx5Iiwidm9pY2UtcGl0Y2giLCJ2b2ljZS1yYW5nZSIsInZvaWNlLXJhdGUiLCJ2b2ljZS1zdHJlc3MiLCJ2b2ljZS12b2x1bWUiLCJ2b2x1bWUiLCJ3aGl0ZS1zcGFjZSIsIndpZG93cyIsIndpZHRoIiwid29yZC1icmVhayIsIndvcmQtc3BhY2luZyIsIndvcmQtd3JhcCIsInotaW5kZXgiLCJjbGlwLXBhdGgiLCJjbGlwLXJ1bGUiLCJtYXNrIiwiZW5hYmxlLWJhY2tncm91bmQiLCJmaWx0ZXIiLCJmbG9vZC1jb2xvciIsImZsb29kLW9wYWNpdHkiLCJsaWdodGluZy1jb2xvciIsInN0b3AtY29sb3IiLCJzdG9wLW9wYWNpdHkiLCJwb2ludGVyLWV2ZW50cyIsImNvbG9yLWludGVycG9sYXRpb24iLCJjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnMiLCJjb2xvci1yZW5kZXJpbmciLCJmaWxsIiwiZmlsbC1vcGFjaXR5IiwiZmlsbC1ydWxlIiwiaW1hZ2UtcmVuZGVyaW5nIiwibWFya2VyIiwibWFya2VyLWVuZCIsIm1hcmtlci1taWQiLCJtYXJrZXItc3RhcnQiLCJzaGFwZS1yZW5kZXJpbmciLCJzdHJva2UiLCJzdHJva2UtZGFzaGFycmF5Iiwic3Ryb2tlLWRhc2hvZmZzZXQiLCJzdHJva2UtbGluZWNhcCIsInN0cm9rZS1saW5lam9pbiIsInN0cm9rZS1taXRlcmxpbWl0Iiwic3Ryb2tlLW9wYWNpdHkiLCJzdHJva2Utd2lkdGgiLCJ0ZXh0LXJlbmRlcmluZyIsImJhc2VsaW5lLXNoaWZ0IiwiZG9taW5hbnQtYmFzZWxpbmUiLCJnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIiwiZ2x5cGgtb3JpZW50YXRpb24tdmVydGljYWwiLCJ0ZXh0LWFuY2hvciIsIndyaXRpbmctbW9kZSJdLGk9YShoKSxqPWEoaj1bInNjcm9sbGJhci1hcnJvdy1jb2xvciIsInNjcm9sbGJhci1iYXNlLWNvbG9yIiwic2Nyb2xsYmFyLWRhcmstc2hhZG93LWNvbG9yIiwic2Nyb2xsYmFyLWZhY2UtY29sb3IiLCJzY3JvbGxiYXItaGlnaGxpZ2h0LWNvbG9yIiwic2Nyb2xsYmFyLXNoYWRvdy1jb2xvciIsInNjcm9sbGJhci0zZC1saWdodC1jb2xvciIsInNjcm9sbGJhci10cmFjay1jb2xvciIsInNoYXBlLWluc2lkZSIsInNlYXJjaGZpZWxkLWNhbmNlbC1idXR0b24iLCJzZWFyY2hmaWVsZC1kZWNvcmF0aW9uIiwic2VhcmNoZmllbGQtcmVzdWx0cy1idXR0b24iLCJzZWFyY2hmaWVsZC1yZXN1bHRzLWRlY29yYXRpb24iLCJ6b29tIl0pLGs9WyJhbGljZWJsdWUiLCJhbnRpcXVld2hpdGUiLCJhcXVhIiwiYXF1YW1hcmluZSIsImF6dXJlIiwiYmVpZ2UiLCJiaXNxdWUiLCJibGFjayIsImJsYW5jaGVkYWxtb25kIiwiYmx1ZSIsImJsdWV2aW9sZXQiLCJicm93biIsImJ1cmx5d29vZCIsImNhZGV0Ymx1ZSIsImNoYXJ0cmV1c2UiLCJjaG9jb2xhdGUiLCJjb3JhbCIsImNvcm5mbG93ZXJibHVlIiwiY29ybnNpbGsiLCJjcmltc29uIiwiY3lhbiIsImRhcmtibHVlIiwiZGFya2N5YW4iLCJkYXJrZ29sZGVucm9kIiwiZGFya2dyYXkiLCJkYXJrZ3JlZW4iLCJkYXJra2hha2kiLCJkYXJrbWFnZW50YSIsImRhcmtvbGl2ZWdyZWVuIiwiZGFya29yYW5nZSIsImRhcmtvcmNoaWQiLCJkYXJrcmVkIiwiZGFya3NhbG1vbiIsImRhcmtzZWFncmVlbiIsImRhcmtzbGF0ZWJsdWUiLCJkYXJrc2xhdGVncmF5IiwiZGFya3R1cnF1b2lzZSIsImRhcmt2aW9sZXQiLCJkZWVwcGluayIsImRlZXBza3libHVlIiwiZGltZ3JheSIsImRvZGdlcmJsdWUiLCJmaXJlYnJpY2siLCJmbG9yYWx3aGl0ZSIsImZvcmVzdGdyZWVuIiwiZnVjaHNpYSIsImdhaW5zYm9ybyIsImdob3N0d2hpdGUiLCJnb2xkIiwiZ29sZGVucm9kIiwiZ3JheSIsImdyZXkiLCJncmVlbiIsImdyZWVueWVsbG93IiwiaG9uZXlkZXciLCJob3RwaW5rIiwiaW5kaWFucmVkIiwiaW5kaWdvIiwiaXZvcnkiLCJraGFraSIsImxhdmVuZGVyIiwibGF2ZW5kZXJibHVzaCIsImxhd25ncmVlbiIsImxlbW9uY2hpZmZvbiIsImxpZ2h0Ymx1ZSIsImxpZ2h0Y29yYWwiLCJsaWdodGN5YW4iLCJsaWdodGdvbGRlbnJvZHllbGxvdyIsImxpZ2h0Z3JheSIsImxpZ2h0Z3JlZW4iLCJsaWdodHBpbmsiLCJsaWdodHNhbG1vbiIsImxpZ2h0c2VhZ3JlZW4iLCJsaWdodHNreWJsdWUiLCJsaWdodHNsYXRlZ3JheSIsImxpZ2h0c3RlZWxibHVlIiwibGlnaHR5ZWxsb3ciLCJsaW1lIiwibGltZWdyZWVuIiwibGluZW4iLCJtYWdlbnRhIiwibWFyb29uIiwibWVkaXVtYXF1YW1hcmluZSIsIm1lZGl1bWJsdWUiLCJtZWRpdW1vcmNoaWQiLCJtZWRpdW1wdXJwbGUiLCJtZWRpdW1zZWFncmVlbiIsIm1lZGl1bXNsYXRlYmx1ZSIsIm1lZGl1bXNwcmluZ2dyZWVuIiwibWVkaXVtdHVycXVvaXNlIiwibWVkaXVtdmlvbGV0cmVkIiwibWlkbmlnaHRibHVlIiwibWludGNyZWFtIiwibWlzdHlyb3NlIiwibW9jY2FzaW4iLCJuYXZham93aGl0ZSIsIm5hdnkiLCJvbGRsYWNlIiwib2xpdmUiLCJvbGl2ZWRyYWIiLCJvcmFuZ2UiLCJvcmFuZ2VyZWQiLCJvcmNoaWQiLCJwYWxlZ29sZGVucm9kIiwicGFsZWdyZWVuIiwicGFsZXR1cnF1b2lzZSIsInBhbGV2aW9sZXRyZWQiLCJwYXBheWF3aGlwIiwicGVhY2hwdWZmIiwicGVydSIsInBpbmsiLCJwbHVtIiwicG93ZGVyYmx1ZSIsInB1cnBsZSIsInJlZCIsInJvc3licm93biIsInJveWFsYmx1ZSIsInNhZGRsZWJyb3duIiwic2FsbW9uIiwic2FuZHlicm93biIsInNlYWdyZWVuIiwic2Vhc2hlbGwiLCJzaWVubmEiLCJzaWx2ZXIiLCJza3libHVlIiwic2xhdGVibHVlIiwic2xhdGVncmF5Iiwic25vdyIsInNwcmluZ2dyZWVuIiwic3RlZWxibHVlIiwidGFuIiwidGVhbCIsInRoaXN0bGUiLCJ0b21hdG8iLCJ0dXJxdW9pc2UiLCJ2aW9sZXQiLCJ3aGVhdCIsIndoaXRlIiwid2hpdGVzbW9rZSIsInllbGxvdyIsInllbGxvd2dyZWVuIl0sbD1hKGspLG09WyJhYm92ZSIsImFic29sdXRlIiwiYWN0aXZlYm9yZGVyIiwiYWN0aXZlY2FwdGlvbiIsImFmYXIiLCJhZnRlci13aGl0ZS1zcGFjZSIsImFoZWFkIiwiYWxpYXMiLCJhbGwiLCJhbGwtc2Nyb2xsIiwiYWx0ZXJuYXRlIiwiYWx3YXlzIiwiYW1oYXJpYyIsImFtaGFyaWMtYWJlZ2VkZSIsImFudGlhbGlhc2VkIiwiYXBwd29ya3NwYWNlIiwiYXJhYmljLWluZGljIiwiYXJtZW5pYW4iLCJhc3Rlcmlza3MiLCJhdXRvIiwiYXZvaWQiLCJhdm9pZC1jb2x1bW4iLCJhdm9pZC1wYWdlIiwiYXZvaWQtcmVnaW9uIiwiYmFja2dyb3VuZCIsImJhY2t3YXJkcyIsImJhc2VsaW5lIiwiYmVsb3ciLCJiaWRpLW92ZXJyaWRlIiwiYmluYXJ5IiwiYmVuZ2FsaSIsImJsaW5rIiwiYmxvY2siLCJibG9jay1heGlzIiwiYm9sZCIsImJvbGRlciIsImJvcmRlciIsImJvcmRlci1ib3giLCJib3RoIiwiYm90dG9tIiwiYnJlYWsiLCJicmVhay1hbGwiLCJicmVhay13b3JkIiwiYnV0dG9uIiwiYnV0dG9uLWJldmVsIiwiYnV0dG9uZmFjZSIsImJ1dHRvbmhpZ2hsaWdodCIsImJ1dHRvbnNoYWRvdyIsImJ1dHRvbnRleHQiLCJjYW1ib2RpYW4iLCJjYXBpdGFsaXplIiwiY2Fwcy1sb2NrLWluZGljYXRvciIsImNhcHRpb24iLCJjYXB0aW9udGV4dCIsImNhcmV0IiwiY2VsbCIsImNlbnRlciIsImNoZWNrYm94IiwiY2lyY2xlIiwiY2prLWVhcnRobHktYnJhbmNoIiwiY2prLWhlYXZlbmx5LXN0ZW0iLCJjamstaWRlb2dyYXBoaWMiLCJjbGVhciIsImNsaXAiLCJjbG9zZS1xdW90ZSIsImNvbC1yZXNpemUiLCJjb2xsYXBzZSIsImNvbHVtbiIsImNvbXBhY3QiLCJjb25kZW5zZWQiLCJjb250YWluIiwiY29udGVudCIsImNvbnRlbnQtYm94IiwiY29udGV4dC1tZW51IiwiY29udGludW91cyIsImNvcHkiLCJjb3ZlciIsImNyb3AiLCJjcm9zcyIsImNyb3NzaGFpciIsImN1cnJlbnRjb2xvciIsImN1cnNpdmUiLCJkYXNoZWQiLCJkZWNpbWFsIiwiZGVjaW1hbC1sZWFkaW5nLXplcm8iLCJkZWZhdWx0IiwiZGVmYXVsdC1idXR0b24iLCJkZXN0aW5hdGlvbi1hdG9wIiwiZGVzdGluYXRpb24taW4iLCJkZXN0aW5hdGlvbi1vdXQiLCJkZXN0aW5hdGlvbi1vdmVyIiwiZGV2YW5hZ2FyaSIsImRpc2MiLCJkaXNjYXJkIiwiZG9jdW1lbnQiLCJkb3QtZGFzaCIsImRvdC1kb3QtZGFzaCIsImRvdHRlZCIsImRvdWJsZSIsImRvd24iLCJlLXJlc2l6ZSIsImVhc2UiLCJlYXNlLWluIiwiZWFzZS1pbi1vdXQiLCJlYXNlLW91dCIsImVsZW1lbnQiLCJlbGxpcHNlIiwiZWxsaXBzaXMiLCJlbWJlZCIsImVuZCIsImV0aGlvcGljIiwiZXRoaW9waWMtYWJlZ2VkZSIsImV0aGlvcGljLWFiZWdlZGUtYW0tZXQiLCJldGhpb3BpYy1hYmVnZWRlLWdleiIsImV0aGlvcGljLWFiZWdlZGUtdGktZXIiLCJldGhpb3BpYy1hYmVnZWRlLXRpLWV0IiwiZXRoaW9waWMtaGFsZWhhbWUtYWEtZXIiLCJldGhpb3BpYy1oYWxlaGFtZS1hYS1ldCIsImV0aGlvcGljLWhhbGVoYW1lLWFtLWV0IiwiZXRoaW9waWMtaGFsZWhhbWUtZ2V6IiwiZXRoaW9waWMtaGFsZWhhbWUtb20tZXQiLCJldGhpb3BpYy1oYWxlaGFtZS1zaWQtZXQiLCJldGhpb3BpYy1oYWxlaGFtZS1zby1ldCIsImV0aGlvcGljLWhhbGVoYW1lLXRpLWVyIiwiZXRoaW9waWMtaGFsZWhhbWUtdGktZXQiLCJldGhpb3BpYy1oYWxlaGFtZS10aWciLCJldy1yZXNpemUiLCJleHBhbmRlZCIsImV4dHJhLWNvbmRlbnNlZCIsImV4dHJhLWV4cGFuZGVkIiwiZmFudGFzeSIsImZhc3QiLCJmaWxsIiwiZml4ZWQiLCJmbGF0IiwiZm9vdG5vdGVzIiwiZm9yd2FyZHMiLCJmcm9tIiwiZ2VvbWV0cmljUHJlY2lzaW9uIiwiZ2VvcmdpYW4iLCJncmF5dGV4dCIsImdyb292ZSIsImd1amFyYXRpIiwiZ3VybXVraGkiLCJoYW5kIiwiaGFuZ3VsIiwiaGFuZ3VsLWNvbnNvbmFudCIsImhlYnJldyIsImhlbHAiLCJoaWRkZW4iLCJoaWRlIiwiaGlnaGVyIiwiaGlnaGxpZ2h0IiwiaGlnaGxpZ2h0dGV4dCIsImhpcmFnYW5hIiwiaGlyYWdhbmEtaXJvaGEiLCJob3Jpem9udGFsIiwiaHNsIiwiaHNsYSIsImljb24iLCJpZ25vcmUiLCJpbmFjdGl2ZWJvcmRlciIsImluYWN0aXZlY2FwdGlvbiIsImluYWN0aXZlY2FwdGlvbnRleHQiLCJpbmZpbml0ZSIsImluZm9iYWNrZ3JvdW5kIiwiaW5mb3RleHQiLCJpbmhlcml0IiwiaW5pdGlhbCIsImlubGluZSIsImlubGluZS1heGlzIiwiaW5saW5lLWJsb2NrIiwiaW5saW5lLXRhYmxlIiwiaW5zZXQiLCJpbnNpZGUiLCJpbnRyaW5zaWMiLCJpbnZlcnQiLCJpdGFsaWMiLCJqdXN0aWZ5Iiwia2FubmFkYSIsImthdGFrYW5hIiwia2F0YWthbmEtaXJvaGEiLCJrZWVwLWFsbCIsImtobWVyIiwibGFuZHNjYXBlIiwibGFvIiwibGFyZ2UiLCJsYXJnZXIiLCJsZWZ0IiwibGV2ZWwiLCJsaWdodGVyIiwibGluZS10aHJvdWdoIiwibGluZWFyIiwibGluZXMiLCJsaXN0LWl0ZW0iLCJsaXN0Ym94IiwibGlzdGl0ZW0iLCJsb2NhbCIsImxvZ2ljYWwiLCJsb3VkIiwibG93ZXIiLCJsb3dlci1hbHBoYSIsImxvd2VyLWFybWVuaWFuIiwibG93ZXItZ3JlZWsiLCJsb3dlci1oZXhhZGVjaW1hbCIsImxvd2VyLWxhdGluIiwibG93ZXItbm9yd2VnaWFuIiwibG93ZXItcm9tYW4iLCJsb3dlcmNhc2UiLCJsdHIiLCJtYWxheWFsYW0iLCJtYXRjaCIsIm1lZGlhLWNvbnRyb2xzLWJhY2tncm91bmQiLCJtZWRpYS1jdXJyZW50LXRpbWUtZGlzcGxheSIsIm1lZGlhLWZ1bGxzY3JlZW4tYnV0dG9uIiwibWVkaWEtbXV0ZS1idXR0b24iLCJtZWRpYS1wbGF5LWJ1dHRvbiIsIm1lZGlhLXJldHVybi10by1yZWFsdGltZS1idXR0b24iLCJtZWRpYS1yZXdpbmQtYnV0dG9uIiwibWVkaWEtc2Vlay1iYWNrLWJ1dHRvbiIsIm1lZGlhLXNlZWstZm9yd2FyZC1idXR0b24iLCJtZWRpYS1zbGlkZXIiLCJtZWRpYS1zbGlkZXJ0aHVtYiIsIm1lZGlhLXRpbWUtcmVtYWluaW5nLWRpc3BsYXkiLCJtZWRpYS12b2x1bWUtc2xpZGVyIiwibWVkaWEtdm9sdW1lLXNsaWRlci1jb250YWluZXIiLCJtZWRpYS12b2x1bWUtc2xpZGVydGh1bWIiLCJtZWRpdW0iLCJtZW51IiwibWVudWxpc3QiLCJtZW51bGlzdC1idXR0b24iLCJtZW51bGlzdC10ZXh0IiwibWVudWxpc3QtdGV4dGZpZWxkIiwibWVudXRleHQiLCJtZXNzYWdlLWJveCIsIm1pZGRsZSIsIm1pbi1pbnRyaW5zaWMiLCJtaXgiLCJtb25nb2xpYW4iLCJtb25vc3BhY2UiLCJtb3ZlIiwibXVsdGlwbGUiLCJteWFubWFyIiwibi1yZXNpemUiLCJuYXJyb3dlciIsIm5lLXJlc2l6ZSIsIm5lc3ctcmVzaXplIiwibm8tY2xvc2UtcXVvdGUiLCJuby1kcm9wIiwibm8tb3Blbi1xdW90ZSIsIm5vLXJlcGVhdCIsIm5vbmUiLCJub3JtYWwiLCJub3QtYWxsb3dlZCIsIm5vd3JhcCIsIm5zLXJlc2l6ZSIsIm53LXJlc2l6ZSIsIm53c2UtcmVzaXplIiwib2JsaXF1ZSIsIm9jdGFsIiwib3Blbi1xdW90ZSIsIm9wdGltaXplTGVnaWJpbGl0eSIsIm9wdGltaXplU3BlZWQiLCJvcml5YSIsIm9yb21vIiwib3V0c2V0Iiwib3V0c2lkZSIsIm91dHNpZGUtc2hhcGUiLCJvdmVybGF5Iiwib3ZlcmxpbmUiLCJwYWRkaW5nIiwicGFkZGluZy1ib3giLCJwYWludGVkIiwicGFnZSIsInBhdXNlZCIsInBlcnNpYW4iLCJwbHVzLWRhcmtlciIsInBsdXMtbGlnaHRlciIsInBvaW50ZXIiLCJwb2x5Z29uIiwicG9ydHJhaXQiLCJwcmUiLCJwcmUtbGluZSIsInByZS13cmFwIiwicHJlc2VydmUtM2QiLCJwcm9ncmVzcyIsInB1c2gtYnV0dG9uIiwicmFkaW8iLCJyZWFkLW9ubHkiLCJyZWFkLXdyaXRlIiwicmVhZC13cml0ZS1wbGFpbnRleHQtb25seSIsInJlY3RhbmdsZSIsInJlZ2lvbiIsInJlbGF0aXZlIiwicmVwZWF0IiwicmVwZWF0LXgiLCJyZXBlYXQteSIsInJlc2V0IiwicmV2ZXJzZSIsInJnYiIsInJnYmEiLCJyaWRnZSIsInJpZ2h0Iiwicm91bmQiLCJyb3ctcmVzaXplIiwicnRsIiwicnVuLWluIiwicnVubmluZyIsInMtcmVzaXplIiwic2Fucy1zZXJpZiIsInNjcm9sbCIsInNjcm9sbGJhciIsInNlLXJlc2l6ZSIsInNlYXJjaGZpZWxkIiwic2VhcmNoZmllbGQtY2FuY2VsLWJ1dHRvbiIsInNlYXJjaGZpZWxkLWRlY29yYXRpb24iLCJzZWFyY2hmaWVsZC1yZXN1bHRzLWJ1dHRvbiIsInNlYXJjaGZpZWxkLXJlc3VsdHMtZGVjb3JhdGlvbiIsInNlbWktY29uZGVuc2VkIiwic2VtaS1leHBhbmRlZCIsInNlcGFyYXRlIiwic2VyaWYiLCJzaG93Iiwic2lkYW1hIiwic2luZ2xlIiwic2tpcC13aGl0ZS1zcGFjZSIsInNsaWRlIiwic2xpZGVyLWhvcml6b250YWwiLCJzbGlkZXItdmVydGljYWwiLCJzbGlkZXJ0aHVtYi1ob3Jpem9udGFsIiwic2xpZGVydGh1bWItdmVydGljYWwiLCJzbG93Iiwic21hbGwiLCJzbWFsbC1jYXBzIiwic21hbGwtY2FwdGlvbiIsInNtYWxsZXIiLCJzb2xpZCIsInNvbWFsaSIsInNvdXJjZS1hdG9wIiwic291cmNlLWluIiwic291cmNlLW91dCIsInNvdXJjZS1vdmVyIiwic3BhY2UiLCJzcXVhcmUiLCJzcXVhcmUtYnV0dG9uIiwic3RhcnQiLCJzdGF0aWMiLCJzdGF0dXMtYmFyIiwic3RyZXRjaCIsInN0cm9rZSIsInN1YiIsInN1YnBpeGVsLWFudGlhbGlhc2VkIiwic3VwZXIiLCJzdy1yZXNpemUiLCJ0YWJsZSIsInRhYmxlLWNhcHRpb24iLCJ0YWJsZS1jZWxsIiwidGFibGUtY29sdW1uIiwidGFibGUtY29sdW1uLWdyb3VwIiwidGFibGUtZm9vdGVyLWdyb3VwIiwidGFibGUtaGVhZGVyLWdyb3VwIiwidGFibGUtcm93IiwidGFibGUtcm93LWdyb3VwIiwidGVsdWd1IiwidGV4dCIsInRleHQtYm90dG9tIiwidGV4dC10b3AiLCJ0ZXh0YXJlYSIsInRleHRmaWVsZCIsInRoYWkiLCJ0aGljayIsInRoaW4iLCJ0aHJlZWRkYXJrc2hhZG93IiwidGhyZWVkZmFjZSIsInRocmVlZGhpZ2hsaWdodCIsInRocmVlZGxpZ2h0c2hhZG93IiwidGhyZWVkc2hhZG93IiwidGliZXRhbiIsInRpZ3JlIiwidGlncmlueWEtZXIiLCJ0aWdyaW55YS1lci1hYmVnZWRlIiwidGlncmlueWEtZXQiLCJ0aWdyaW55YS1ldC1hYmVnZWRlIiwidG8iLCJ0b3AiLCJ0cmFuc3BhcmVudCIsInVsdHJhLWNvbmRlbnNlZCIsInVsdHJhLWV4cGFuZGVkIiwidW5kZXJsaW5lIiwidXAiLCJ1cHBlci1hbHBoYSIsInVwcGVyLWFybWVuaWFuIiwidXBwZXItZ3JlZWsiLCJ1cHBlci1oZXhhZGVjaW1hbCIsInVwcGVyLWxhdGluIiwidXBwZXItbm9yd2VnaWFuIiwidXBwZXItcm9tYW4iLCJ1cHBlcmNhc2UiLCJ1cmR1IiwidXJsIiwidmVydGljYWwiLCJ2ZXJ0aWNhbC10ZXh0IiwidmlzaWJsZSIsInZpc2libGVGaWxsIiwidmlzaWJsZVBhaW50ZWQiLCJ2aXNpYmxlU3Ryb2tlIiwidmlzdWFsIiwidy1yZXNpemUiLCJ3YWl0Iiwid2F2ZSIsIndpZGVyIiwid2luZG93Iiwid2luZG93ZnJhbWUiLCJ3aW5kb3d0ZXh0IiwieC1sYXJnZSIsIngtc21hbGwiLCJ4b3IiLCJ4eC1sYXJnZSIsInh4LXNtYWxsIl0sbj1hKG0pLG89YShbImZvbnQtZmFtaWx5Iiwic3JjIiwidW5pY29kZS1yYW5nZSIsImZvbnQtdmFyaWFudCIsImZvbnQtZmVhdHVyZS1zZXR0aW5ncyIsImZvbnQtc3RyZXRjaCIsImZvbnQtd2VpZ2h0IiwiZm9udC1zdHlsZSJdKSxwPWQuY29uY2F0KGYpLmNvbmNhdChoKS5jb25jYXQoaikuY29uY2F0KGspLmNvbmNhdChtKTt4LnJlZ2lzdGVySGVscGVyKCJoaW50V29yZHMiLCJjc3MiLHApLHguZGVmaW5lTUlNRSgidGV4dC9jc3MiLHttZWRpYVR5cGVzOmUsbWVkaWFGZWF0dXJlczpnLHByb3BlcnR5S2V5d29yZHM6aSxub25TdGFuZGFyZFByb3BlcnR5S2V5d29yZHM6aixjb2xvcktleXdvcmRzOmwsdmFsdWVLZXl3b3JkczpuLGZvbnRQcm9wZXJ0aWVzOm8sdG9rZW5Ib29rczp7IjwiOmZ1bmN0aW9uKHgsYSl7cmV0dXJuISF4Lm1hdGNoKCIhLS0iKSYmKGEudG9rZW5pemU9YyxjKHgsYSkpfSwiLyI6ZnVuY3Rpb24oeCxhKXtyZXR1cm4hIXguZWF0KCIqIikmJihhLnRva2VuaXplPWIsYih4LGEpKX19LG5hbWU6ImNzcyJ9KSx4LmRlZmluZU1JTUUoInRleHQveC1zY3NzIix7bWVkaWFUeXBlczplLG1lZGlhRmVhdHVyZXM6Zyxwcm9wZXJ0eUtleXdvcmRzOmksbm9uU3RhbmRhcmRQcm9wZXJ0eUtleXdvcmRzOmosY29sb3JLZXl3b3JkczpsLHZhbHVlS2V5d29yZHM6bixmb250UHJvcGVydGllczpvLGFsbG93TmVzdGVkOiEwLHRva2VuSG9va3M6eyIvIjpmdW5jdGlvbih4LGEpe3JldHVybiB4LmVhdCgiLyIpPyh4LnNraXBUb0VuZCgpLFsiY29tbWVudCIsImNvbW1lbnQiXSk6eC5lYXQoIioiKT8oYS50b2tlbml6ZT1iLGIoeCxhKSk6WyJvcGVyYXRvciIsIm9wZXJhdG9yIl19LCI6IjpmdW5jdGlvbih4KXtyZXR1cm4hIXgubWF0Y2goL1xzKnsvKSYmW251bGwsInsiXX0sJDpmdW5jdGlvbih4KXtyZXR1cm4geC5tYXRjaCgvXltcdy1dKy8pLHgubWF0Y2goL15ccyo6LywhMSk/WyJ2YXJpYWJsZS0yIiwidmFyaWFibGUtZGVmaW5pdGlvbiJdOlsidmFyaWFibGUtMiIsInZhcmlhYmxlIl19LCIjIjpmdW5jdGlvbih4KXtyZXR1cm4hIXguZWF0KCJ7IikmJltudWxsLCJpbnRlcnBvbGF0aW9uIl19fSxuYW1lOiJjc3MiLGhlbHBlclR5cGU6InNjc3MifSkseC5kZWZpbmVNSU1FKCJ0ZXh0L3gtbGVzcyIse21lZGlhVHlwZXM6ZSxtZWRpYUZlYXR1cmVzOmcscHJvcGVydHlLZXl3b3JkczppLG5vblN0YW5kYXJkUHJvcGVydHlLZXl3b3JkczpqLGNvbG9yS2V5d29yZHM6bCx2YWx1ZUtleXdvcmRzOm4sZm9udFByb3BlcnRpZXM6byxhbGxvd05lc3RlZDohMCx0b2tlbkhvb2tzOnsiLyI6ZnVuY3Rpb24oeCxhKXtyZXR1cm4geC5lYXQoIi8iKT8oeC5za2lwVG9FbmQoKSxbImNvbW1lbnQiLCJjb21tZW50Il0pOnguZWF0KCIqIik/KGEudG9rZW5pemU9YixiKHgsYSkpOlsib3BlcmF0b3IiLCJvcGVyYXRvciJdfSwiQCI6ZnVuY3Rpb24oeCl7cmV0dXJuIXgubWF0Y2goL14oY2hhcnNldHxkb2N1bWVudHxmb250LWZhY2V8aW1wb3J0fCgtKG1venxtc3xvfHdlYmtpdCktKT9rZXlmcmFtZXN8bWVkaWF8bmFtZXNwYWNlfHBhZ2V8c3VwcG9ydHMpXGIvLCExKSYmKHguZWF0V2hpbGUoL1tcd1xcXC1dLykseC5tYXRjaCgvXlxzKjovLCExKT9bInZhcmlhYmxlLTIiLCJ2YXJpYWJsZS1kZWZpbml0aW9uIl06WyJ2YXJpYWJsZS0yIiwidmFyaWFibGUiXSl9LCImIjpmdW5jdGlvbigpe3JldHVyblsiYXRvbSIsImF0b20iXX19LG5hbWU6ImNzcyIsaGVscGVyVHlwZToibGVzcyJ9KX0pLGZ1bmN0aW9uKHgpeyJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmIm9iamVjdCI9PXR5cGVvZiBtb2R1bGU/eChyZXF1aXJlKCIuLi8uLi9saWIvY29kZW1pcnJvciIpKToiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbIi4uLy4uL2xpYi9jb2RlbWlycm9yIl0seCk6eChDb2RlTWlycm9yKX0oZnVuY3Rpb24oeCl7InVzZSBzdHJpY3QiO3guZGVmaW5lTW9kZSgieG1sIixmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGMoeCxhKXtmdW5jdGlvbiBiKGIpe3JldHVybiBhLnRva2VuaXplPWIsYih4LGEpfXZhciBjPXgubmV4dCgpO3JldHVybiI8Ij09Yz94LmVhdCgiISIpP3guZWF0KCJbIik/eC5tYXRjaCgiQ0RBVEFbIik/YihmKCJhdG9tIiwiXV0+IikpOm51bGw6eC5tYXRjaCgiLS0iKT9iKGYoImNvbW1lbnQiLCItLVx4M2UiKSk6eC5tYXRjaCgiRE9DVFlQRSIsITAsITApPyh4LmVhdFdoaWxlKC9bXHdcLl9cLV0vKSxiKGcoMSkpKTpudWxsOnguZWF0KCI/Iik/KHguZWF0V2hpbGUoL1tcd1wuX1wtXS8pLGEudG9rZW5pemU9ZigibWV0YSIsIj8+IiksIm1ldGEiKToodz14LmVhdCgiLyIpPyJjbG9zZVRhZyI6Im9wZW5UYWciLGEudG9rZW5pemU9ZCwidGFnIGJyYWNrZXQiKToiJiI9PWM/KHguZWF0KCIjIik/eC5lYXQoIngiKT94LmVhdFdoaWxlKC9bYS1mQS1GXGRdLykmJnguZWF0KCI7Iik6eC5lYXRXaGlsZSgvW1xkXS8pJiZ4LmVhdCgiOyIpOnguZWF0V2hpbGUoL1tcd1wuXC06XS8pJiZ4LmVhdCgiOyIpKT8iYXRvbSI6ImVycm9yIjooeC5lYXRXaGlsZSgvW14mPF0vKSxudWxsKX1mdW5jdGlvbiBkKHgsYSl7dmFyIGI9eC5uZXh0KCk7aWYoIj4iPT1ifHwiLyI9PWImJnguZWF0KCI+IikpcmV0dXJuIGEudG9rZW5pemU9Yyx3PSI+Ij09Yj8iZW5kVGFnIjoic2VsZmNsb3NlVGFnIiwidGFnIGJyYWNrZXQiO2lmKCI9Ij09YilyZXR1cm4gdz0iZXF1YWxzIixudWxsO2lmKCI8Ij09Yil7YS50b2tlbml6ZT1jLGEuc3RhdGU9ayxhLnRhZ05hbWU9YS50YWdTdGFydD1udWxsO3ZhciBkPWEudG9rZW5pemUoeCxhKTtyZXR1cm4gZD9kKyIgdGFnIGVycm9yIjoidGFnIGVycm9yIn1yZXR1cm4vW1wnXCJdLy50ZXN0KGIpPyhhLnRva2VuaXplPWUoYiksYS5zdHJpbmdTdGFydENvbD14LmNvbHVtbigpLGEudG9rZW5pemUoeCxhKSk6KHgubWF0Y2goL15bXlxzXHUwMGEwPTw+XCJcJ10qW15cc1x1MDBhMD08PlwiXCdcL10vKSwid29yZCIpfWZ1bmN0aW9uIGUoeCl7dmFyIGE9ZnVuY3Rpb24oYSxiKXtmb3IoOyFhLmVvbCgpOylpZihhLm5leHQoKT09eCl7Yi50b2tlbml6ZT1kO2JyZWFrfXJldHVybiJzdHJpbmcifTtyZXR1cm4gYS5pc0luQXR0cmlidXRlPSEwLGF9ZnVuY3Rpb24gZih4LGEpe3JldHVybiBmdW5jdGlvbihiLGQpe2Zvcig7IWIuZW9sKCk7KXtpZihiLm1hdGNoKGEpKXtkLnRva2VuaXplPWM7YnJlYWt9Yi5uZXh0KCl9cmV0dXJuIHh9fWZ1bmN0aW9uIGcoeCl7cmV0dXJuIGZ1bmN0aW9uKGEsYil7Zm9yKHZhciBkO251bGwhPShkPWEubmV4dCgpKTspe2lmKCI8Ij09ZClyZXR1cm4gYi50b2tlbml6ZT1nKHgrMSksYi50b2tlbml6ZShhLGIpO2lmKCI+Ij09ZCl7aWYoMT09eCl7Yi50b2tlbml6ZT1jO2JyZWFrfXJldHVybiBiLnRva2VuaXplPWcoeC0xKSxiLnRva2VuaXplKGEsYil9fXJldHVybiJtZXRhIn19ZnVuY3Rpb24gaCh4LGEsYil7dGhpcy5wcmV2PXguY29udGV4dCx0aGlzLnRhZ05hbWU9YSx0aGlzLmluZGVudD14LmluZGVudGVkLHRoaXMuc3RhcnRPZkxpbmU9Yiwoei5kb05vdEluZGVudC5oYXNPd25Qcm9wZXJ0eShhKXx8eC5jb250ZXh0JiZ4LmNvbnRleHQubm9JbmRlbnQpJiYodGhpcy5ub0luZGVudD0hMCl9ZnVuY3Rpb24gaSh4KXt4LmNvbnRleHQmJih4LmNvbnRleHQ9eC5jb250ZXh0LnByZXYpfWZ1bmN0aW9uIGooeCxhKXtmb3IodmFyIGI7Oyl7aWYoIXguY29udGV4dClyZXR1cm47aWYoYj14LmNvbnRleHQudGFnTmFtZSwhei5jb250ZXh0R3JhYmJlcnMuaGFzT3duUHJvcGVydHkoYil8fCF6LmNvbnRleHRHcmFiYmVyc1tiXS5oYXNPd25Qcm9wZXJ0eShhKSlyZXR1cm47aSh4KX19ZnVuY3Rpb24gayh4LGEsYil7cmV0dXJuIm9wZW5UYWciPT14PyhiLnRhZ1N0YXJ0PWEuY29sdW1uKCksbCk6ImNsb3NlVGFnIj09eD9tOmt9ZnVuY3Rpb24gbCh4LGEsYil7cmV0dXJuIndvcmQiPT14PyhiLnRhZ05hbWU9YS5jdXJyZW50KCkseT0idGFnIixwKTooeT0iZXJyb3IiLGwpfWZ1bmN0aW9uIG0oeCxhLGIpe2lmKCJ3b3JkIj09eCl7dmFyIGM9YS5jdXJyZW50KCk7cmV0dXJuIGIuY29udGV4dCYmYi5jb250ZXh0LnRhZ05hbWUhPWMmJnouaW1wbGljaXRseUNsb3NlZC5oYXNPd25Qcm9wZXJ0eShiLmNvbnRleHQudGFnTmFtZSkmJmkoYiksYi5jb250ZXh0JiZiLmNvbnRleHQudGFnTmFtZT09Yz8oeT0idGFnIixuKTooeT0idGFnIGVycm9yIixvKX1yZXR1cm4geT0iZXJyb3IiLG99ZnVuY3Rpb24gbih4LGEsYil7cmV0dXJuImVuZFRhZyIhPXg/KHk9ImVycm9yIixuKTooaShiKSxrKX1mdW5jdGlvbiBvKHgsYSxiKXtyZXR1cm4geT0iZXJyb3IiLG4oeCxhLGIpfWZ1bmN0aW9uIHAoeCxhLGIpe2lmKCJ3b3JkIj09eClyZXR1cm4geT0iYXR0cmlidXRlIixxO2lmKCJlbmRUYWciPT14fHwic2VsZmNsb3NlVGFnIj09eCl7dmFyIGM9Yi50YWdOYW1lLGQ9Yi50YWdTdGFydDtyZXR1cm4gYi50YWdOYW1lPWIudGFnU3RhcnQ9bnVsbCwic2VsZmNsb3NlVGFnIj09eHx8ei5hdXRvU2VsZkNsb3NlcnMuaGFzT3duUHJvcGVydHkoYyk/aihiLGMpOihqKGIsYyksYi5jb250ZXh0PW5ldyBoKGIsYyxkPT1iLmluZGVudGVkKSksa31yZXR1cm4geT0iZXJyb3IiLHB9ZnVuY3Rpb24gcSh4LGEsYil7cmV0dXJuImVxdWFscyI9PXg/cjooei5hbGxvd01pc3Npbmd8fCh5PSJlcnJvciIpLHAoeCxhLGIpKX1mdW5jdGlvbiByKHgsYSxiKXtyZXR1cm4ic3RyaW5nIj09eD9zOiJ3b3JkIj09eCYmei5hbGxvd1VucXVvdGVkPyh5PSJzdHJpbmciLHApOih5PSJlcnJvciIscCh4LGEsYikpfWZ1bmN0aW9uIHMoeCxhLGIpe3JldHVybiJzdHJpbmciPT14P3M6cCh4LGEsYil9dmFyIHQ9YS5pbmRlbnRVbml0LHU9Yi5tdWx0aWxpbmVUYWdJbmRlbnRGYWN0b3J8fDEsdj1iLm11bHRpbGluZVRhZ0luZGVudFBhc3RUYWc7bnVsbD09diYmKHY9ITApO3ZhciB3LHksej1iLmh0bWxNb2RlP3thdXRvU2VsZkNsb3NlcnM6e2FyZWE6ITAsYmFzZTohMCxicjohMCxjb2w6ITAsY29tbWFuZDohMCxlbWJlZDohMCxmcmFtZTohMCxocjohMCxpbWc6ITAsaW5wdXQ6ITAsa2V5Z2VuOiEwLGxpbms6ITAsbWV0YTohMCxwYXJhbTohMCxzb3VyY2U6ITAsdHJhY2s6ITAsd2JyOiEwfSxpbXBsaWNpdGx5Q2xvc2VkOntkZDohMCxsaTohMCxvcHRncm91cDohMCxvcHRpb246ITAscDohMCxycDohMCxydDohMCx0Ym9keTohMCx0ZDohMCx0Zm9vdDohMCx0aDohMCx0cjohMH0sY29udGV4dEdyYWJiZXJzOntkZDp7ZGQ6ITAsZHQ6ITB9LGR0OntkZDohMCxkdDohMH0sbGk6e2xpOiEwfSxvcHRpb246e29wdGlvbjohMCxvcHRncm91cDohMH0sb3B0Z3JvdXA6e29wdGdyb3VwOiEwfSxwOnthZGRyZXNzOiEwLGFydGljbGU6ITAsYXNpZGU6ITAsYmxvY2txdW90ZTohMCxkaXI6ITAsZGl2OiEwLGRsOiEwLGZpZWxkc2V0OiEwLGZvb3RlcjohMCxmb3JtOiEwLGgxOiEwLGgyOiEwLGgzOiEwLGg0OiEwLGg1OiEwLGg2OiEwLGhlYWRlcjohMCxoZ3JvdXA6ITAsaHI6ITAsbWVudTohMCxuYXY6ITAsb2w6ITAscDohMCxwcmU6ITAsc2VjdGlvbjohMCx0YWJsZTohMCx1bDohMH0scnA6e3JwOiEwLHJ0OiEwfSxydDp7cnA6ITAscnQ6ITB9LHRib2R5Ont0Ym9keTohMCx0Zm9vdDohMH0sdGQ6e3RkOiEwLHRoOiEwfSx0Zm9vdDp7dGJvZHk6ITB9LHRoOnt0ZDohMCx0aDohMH0sdGhlYWQ6e3Rib2R5OiEwLHRmb290OiEwfSx0cjp7dHI6ITB9fSxkb05vdEluZGVudDp7cHJlOiEwfSxhbGxvd1VucXVvdGVkOiEwLGFsbG93TWlzc2luZzohMCxjYXNlRm9sZDohMH06e2F1dG9TZWxmQ2xvc2Vyczp7fSxpbXBsaWNpdGx5Q2xvc2VkOnt9LGNvbnRleHRHcmFiYmVyczp7fSxkb05vdEluZGVudDp7fSxhbGxvd1VucXVvdGVkOiExLGFsbG93TWlzc2luZzohMSxjYXNlRm9sZDohMX0sQT1iLmFsaWduQ0RBVEE7cmV0dXJue3N0YXJ0U3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm57dG9rZW5pemU6YyxzdGF0ZTprLGluZGVudGVkOjAsdGFnTmFtZTpudWxsLHRhZ1N0YXJ0Om51bGwsY29udGV4dDpudWxsfX0sdG9rZW46ZnVuY3Rpb24oeCxhKXtpZighYS50YWdOYW1lJiZ4LnNvbCgpJiYoYS5pbmRlbnRlZD14LmluZGVudGF0aW9uKCkpLHguZWF0U3BhY2UoKSlyZXR1cm4gbnVsbDt3PW51bGw7dmFyIGI9YS50b2tlbml6ZSh4LGEpO3JldHVybihifHx3KSYmImNvbW1lbnQiIT1iJiYoeT1udWxsLGEuc3RhdGU9YS5zdGF0ZSh3fHxiLHgsYSkseSYmKGI9ImVycm9yIj09eT9iKyIgZXJyb3IiOnkpKSxifSxpbmRlbnQ6ZnVuY3Rpb24oYSxiLGUpe3ZhciBmPWEuY29udGV4dDtpZihhLnRva2VuaXplLmlzSW5BdHRyaWJ1dGUpcmV0dXJuIGEudGFnU3RhcnQ9PWEuaW5kZW50ZWQ/YS5zdHJpbmdTdGFydENvbCsxOmEuaW5kZW50ZWQrdDtpZihmJiZmLm5vSW5kZW50KXJldHVybiB4LlBhc3M7aWYoYS50b2tlbml6ZSE9ZCYmYS50b2tlbml6ZSE9YylyZXR1cm4gZT9lLm1hdGNoKC9eKFxzKikvKVswXS5sZW5ndGg6MDtpZihhLnRhZ05hbWUpcmV0dXJuIHY/YS50YWdTdGFydCthLnRhZ05hbWUubGVuZ3RoKzI6YS50YWdTdGFydCt0KnU7aWYoQSYmLzwhXFtDREFUQVxbLy50ZXN0KGIpKXJldHVybiAwO3ZhciBnPWImJi9ePChcLyk/KFtcd186XC4tXSopLy5leGVjKGIpO2lmKGcmJmdbMV0pZm9yKDtmOyl7aWYoZi50YWdOYW1lPT1nWzJdKXtmPWYucHJldjticmVha31pZighei5pbXBsaWNpdGx5Q2xvc2VkLmhhc093blByb3BlcnR5KGYudGFnTmFtZSkpYnJlYWs7Zj1mLnByZXZ9ZWxzZSBpZihnKWZvcig7Zjspe3ZhciBoPXouY29udGV4dEdyYWJiZXJzW2YudGFnTmFtZV07aWYoIWh8fCFoLmhhc093blByb3BlcnR5KGdbMl0pKWJyZWFrO2Y9Zi5wcmV2fWZvcig7ZiYmIWYuc3RhcnRPZkxpbmU7KWY9Zi5wcmV2O3JldHVybiBmP2YuaW5kZW50K3Q6MH0sZWxlY3RyaWNJbnB1dDovPFwvW1xzXHc6XSs+JC8sYmxvY2tDb21tZW50U3RhcnQ6Ilx4M2MhLS0iLGJsb2NrQ29tbWVudEVuZDoiLS1ceDNlIixjb25maWd1cmF0aW9uOmIuaHRtbE1vZGU/Imh0bWwiOiJ4bWwiLGhlbHBlclR5cGU6Yi5odG1sTW9kZT8iaHRtbCI6InhtbCJ9fSkseC5kZWZpbmVNSU1FKCJ0ZXh0L3htbCIsInhtbCIpLHguZGVmaW5lTUlNRSgiYXBwbGljYXRpb24veG1sIiwieG1sIikseC5taW1lTW9kZXMuaGFzT3duUHJvcGVydHkoInRleHQvaHRtbCIpfHx4LmRlZmluZU1JTUUoInRleHQvaHRtbCIse25hbWU6InhtbCIsaHRtbE1vZGU6ITB9KX0pLGZ1bmN0aW9uKHgpeyJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmIm9iamVjdCI9PXR5cGVvZiBtb2R1bGU/eChyZXF1aXJlKCIuLi8uLi9saWIvY29kZW1pcnJvciIpLHJlcXVpcmUoIi4uL3htbC94bWwiKSxyZXF1aXJlKCIuLi9qYXZhc2NyaXB0L2phdmFzY3JpcHQiKSxyZXF1aXJlKCIuLi9jc3MvY3NzIikpOiJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsiLi4vLi4vbGliL2NvZGVtaXJyb3IiLCIuLi94bWwveG1sIiwiLi4vamF2YXNjcmlwdC9qYXZhc2NyaXB0IiwiLi4vY3NzL2NzcyJdLHgpOngoQ29kZU1pcnJvcil9KGZ1bmN0aW9uKHgpeyJ1c2Ugc3RyaWN0Ijt4LmRlZmluZU1vZGUoImh0bWxtaXhlZCIsZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKHgsYSl7dmFyIGI9YS5odG1sU3RhdGUudGFnTmFtZSxjPWcudG9rZW4oeCxhLmh0bWxTdGF0ZSk7aWYoInNjcmlwdCI9PWImJi9cYnRhZ1xiLy50ZXN0KGMpJiYiPiI9PXguY3VycmVudCgpKXt2YXIgZD14LnN0cmluZy5zbGljZShNYXRoLm1heCgwLHgucG9zLTEwMCkseC5wb3MpLm1hdGNoKC9cYnR5cGVccyo9XHMqKCJbXiJdKyJ8J1teJ10rJ3xcUyspW148XSokL2kpOyhkPWQ/ZFsxXToiIikmJi9bXCJcJ10vLnRlc3QoZC5jaGFyQXQoMCkpJiYoZD1kLnNsaWNlKDEsZC5sZW5ndGgtMSkpO2Zvcih2YXIgaj0wO2o8aS5sZW5ndGg7KytqKXt2YXIgaz1pW2pdO2lmKCJzdHJpbmciPT10eXBlb2Ygay5tYXRjaGVzP2Q9PWsubWF0Y2hlczprLm1hdGNoZXMudGVzdChkKSl7ay5tb2RlJiYoYS50b2tlbj1lLGEubG9jYWxNb2RlPWsubW9kZSxhLmxvY2FsU3RhdGU9ay5tb2RlLnN0YXJ0U3RhdGUmJmsubW9kZS5zdGFydFN0YXRlKGcuaW5kZW50KGEuaHRtbFN0YXRlLCIiKSkpO2JyZWFrfX19ZWxzZSJzdHlsZSI9PWImJi9cYnRhZ1xiLy50ZXN0KGMpJiYiPiI9PXguY3VycmVudCgpJiYoYS50b2tlbj1mLGEubG9jYWxNb2RlPWgsYS5sb2NhbFN0YXRlPWguc3RhcnRTdGF0ZShnLmluZGVudChhLmh0bWxTdGF0ZSwiIikpKTtyZXR1cm4gY31mdW5jdGlvbiBkKHgsYSxiKXt2YXIgYz14LmN1cnJlbnQoKSxkPWMuc2VhcmNoKGEpO3JldHVybiBkPi0xP3guYmFja1VwKGMubGVuZ3RoLWQpOmMubWF0Y2goLzxcLz8kLykmJih4LmJhY2tVcChjLmxlbmd0aCkseC5tYXRjaChhLCExKXx8eC5tYXRjaChjKSksYn1mdW5jdGlvbiBlKHgsYSl7cmV0dXJuIHgubWF0Y2goL148XC9ccypzY3JpcHRccyo+L2ksITEpPyhhLnRva2VuPWMsYS5sb2NhbFN0YXRlPWEubG9jYWxNb2RlPW51bGwsYyh4LGEpKTpkKHgsLzxcL1xzKnNjcmlwdFxzKj4vLGEubG9jYWxNb2RlLnRva2VuKHgsYS5sb2NhbFN0YXRlKSl9ZnVuY3Rpb24gZih4LGEpe3JldHVybiB4Lm1hdGNoKC9ePFwvXHMqc3R5bGVccyo+L2ksITEpPyhhLnRva2VuPWMsYS5sb2NhbFN0YXRlPWEubG9jYWxNb2RlPW51bGwsYyh4LGEpKTpkKHgsLzxcL1xzKnN0eWxlXHMqPi8saC50b2tlbih4LGEubG9jYWxTdGF0ZSkpfXZhciBnPXguZ2V0TW9kZShhLHtuYW1lOiJ4bWwiLGh0bWxNb2RlOiEwLG11bHRpbGluZVRhZ0luZGVudEZhY3RvcjpiLm11bHRpbGluZVRhZ0luZGVudEZhY3RvcixtdWx0aWxpbmVUYWdJbmRlbnRQYXN0VGFnOmIubXVsdGlsaW5lVGFnSW5kZW50UGFzdFRhZ30pLGg9eC5nZXRNb2RlKGEsImNzcyIpLGk9W10saj1iJiZiLnNjcmlwdFR5cGVzO2lmKGkucHVzaCh7bWF0Y2hlczovXig/OnRleHR8YXBwbGljYXRpb24pXC8oPzp4LSk/KD86amF2YXxlY21hKXNjcmlwdCR8XiQvaSxtb2RlOnguZ2V0TW9kZShhLCJqYXZhc2NyaXB0Iil9KSxqKWZvcih2YXIgaz0wO2s8ai5sZW5ndGg7KytrKXt2YXIgbD1qW2tdO2kucHVzaCh7bWF0Y2hlczpsLm1hdGNoZXMsbW9kZTpsLm1vZGUmJnguZ2V0TW9kZShhLGwubW9kZSl9KX1yZXR1cm4gaS5wdXNoKHttYXRjaGVzOi8uLyxtb2RlOnguZ2V0TW9kZShhLCJ0ZXh0L3BsYWluIil9KSx7c3RhcnRTdGF0ZTpmdW5jdGlvbigpe3JldHVybnt0b2tlbjpjLGxvY2FsTW9kZTpudWxsLGxvY2FsU3RhdGU6bnVsbCxodG1sU3RhdGU6Zy5zdGFydFN0YXRlKCl9fSxjb3B5U3RhdGU6ZnVuY3Rpb24oYSl7aWYoYS5sb2NhbFN0YXRlKXZhciBiPXguY29weVN0YXRlKGEubG9jYWxNb2RlLGEubG9jYWxTdGF0ZSk7cmV0dXJue3Rva2VuOmEudG9rZW4sbG9jYWxNb2RlOmEubG9jYWxNb2RlLGxvY2FsU3RhdGU6YixodG1sU3RhdGU6eC5jb3B5U3RhdGUoZyxhLmh0bWxTdGF0ZSl9fSx0b2tlbjpmdW5jdGlvbih4LGEpe3JldHVybiBhLnRva2VuKHgsYSl9LGluZGVudDpmdW5jdGlvbihhLGIpe3JldHVybiFhLmxvY2FsTW9kZXx8L15ccyo8XC8vLnRlc3QoYik/Zy5pbmRlbnQoYS5odG1sU3RhdGUsYik6YS5sb2NhbE1vZGUuaW5kZW50P2EubG9jYWxNb2RlLmluZGVudChhLmxvY2FsU3RhdGUsYik6eC5QYXNzfSxpbm5lck1vZGU6ZnVuY3Rpb24oeCl7cmV0dXJue3N0YXRlOngubG9jYWxTdGF0ZXx8eC5odG1sU3RhdGUsbW9kZTp4LmxvY2FsTW9kZXx8Z319fX0sInhtbCIsImphdmFzY3JpcHQiLCJjc3MiKSx4LmRlZmluZU1JTUUoInRleHQvaHRtbCIsImh0bWxtaXhlZCIpfSksZnVuY3Rpb24oeCl7dmFyIGE9d2luZG93LkNvZGVNaXJyb3I7YS5kZWZpbmVNSU1FKCJ0ZXh0L3gtZXJsYW5nIiwiZXJsYW5nIiksYS5kZWZpbmVNb2RlKCJlcmxhbmciLGZ1bmN0aW9uKHgpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBiKHgsYSl7aWYoYS5pbl9zdHJpbmcpcmV0dXJuIGEuaW5fc3RyaW5nPSFlKHgpLGooYSx4LCJzdHJpbmciKTtpZihhLmluX2F0b20pcmV0dXJuIGEuaW5fYXRvbT0hZih4KSxqKGEseCwiYXRvbSIpO2lmKHguZWF0U3BhY2UoKSlyZXR1cm4gaihhLHgsIndoaXRlc3BhY2UiKTtpZighbihhKSYmeC5tYXRjaCgvLVxzKlthLXrDny3DtsO4LcO/XVtcd8OYLcOew4Atw5bDny3DtsO4LcO/XSovKSlyZXR1cm4gaSh4LmN1cnJlbnQoKSxBKT9qKGEseCwidHlwZSIpOmooYSx4LCJhdHRyaWJ1dGUiKTt2YXIgYj14Lm5leHQoKTtpZigiJSI9PWIpcmV0dXJuIHguc2tpcFRvRW5kKCksaihhLHgsImNvbW1lbnQiKTtpZigiOiI9PWIpcmV0dXJuIGooYSx4LCJjb2xvbiIpO2lmKCI/Ij09YilyZXR1cm4geC5lYXRTcGFjZSgpLHguZWF0V2hpbGUoTiksaihhLHgsIm1hY3JvIik7aWYoIiMiPT1iKXJldHVybiB4LmVhdFNwYWNlKCkseC5lYXRXaGlsZShOKSxqKGEseCwicmVjb3JkIik7aWYoIiQiPT1iKXJldHVybiJcXCIhPXgubmV4dCgpfHx4Lm1hdGNoKE8pP2ooYSx4LCJudW1iZXIiKTpqKGEseCwiZXJyb3IiKTtpZigiLiI9PWIpcmV0dXJuIGooYSx4LCJkb3QiKTtpZigiJyI9PWIpe2lmKCEoYS5pbl9hdG9tPSFmKHgpKSl7aWYoeC5tYXRjaCgvXHMqXC9ccypbMC05XS8sITEpKXJldHVybiB4Lm1hdGNoKC9ccypcL1xzKlswLTldLywhMCksaihhLHgsImZ1biIpO2lmKHgubWF0Y2goL1xzKlwoLywhMSl8fHgubWF0Y2goL1xzKjovLCExKSlyZXR1cm4gaihhLHgsImZ1bmN0aW9uIil9cmV0dXJuIGooYSx4LCJhdG9tIil9aWYoJyInPT1iKXJldHVybiBhLmluX3N0cmluZz0hZSh4KSxqKGEseCwic3RyaW5nIik7aWYoL1tBLVpfw5gtw57DgC3Dll0vLnRlc3QoYikpcmV0dXJuIHguZWF0V2hpbGUoTiksaihhLHgsInZhcmlhYmxlIik7aWYoL1thLXpfw58tw7bDuC3Dv10vLnRlc3QoYikpe2lmKHguZWF0V2hpbGUoTikseC5tYXRjaCgvXHMqXC9ccypbMC05XS8sITEpKXJldHVybiB4Lm1hdGNoKC9ccypcL1xzKlswLTldLywhMCksaihhLHgsImZ1biIpO3ZhciBnPXguY3VycmVudCgpO3JldHVybiBpKGcsQik/aihhLHgsImtleXdvcmQiKTppKGcsRSk/aihhLHgsIm9wZXJhdG9yIik6eC5tYXRjaCgvXHMqXCgvLCExKT8haShnLE0pfHwiOiI9PW4oYSkudG9rZW4mJiJlcmxhbmciIT1uKGEsMikudG9rZW4/aShnLEwpP2ooYSx4LCJndWFyZCIpOmooYSx4LCJmdW5jdGlvbiIpOmooYSx4LCJidWlsdGluIik6IjoiPT1oKHgpP2ooYSx4LCJlcmxhbmciPT1nPyJidWlsdGluIjoiZnVuY3Rpb24iKTppKGcsWyJ0cnVlIiwiZmFsc2UiXSk/aihhLHgsImJvb2xlYW4iKTpqKGEseCwiYXRvbSIpfXZhciBrPS9bMC05XS8sbD0vWzAtOWEtekEtWl0vO3JldHVybiBrLnRlc3QoYik/KHguZWF0V2hpbGUoaykseC5lYXQoIiMiKT94LmVhdFdoaWxlKGwpfHx4LmJhY2tVcCgxKTp4LmVhdCgiLiIpJiYoeC5lYXRXaGlsZShrKT94LmVhdCgvW2VFXS8pJiYoeC5lYXQoL1stK10vKT94LmVhdFdoaWxlKGspfHx4LmJhY2tVcCgyKTp4LmVhdFdoaWxlKGspfHx4LmJhY2tVcCgxKSk6eC5iYWNrVXAoMSkpLGooYSx4LCJudW1iZXIiKSk6Yyh4LEgsSSk/aihhLHgsIm9wZW5fcGFyZW4iKTpjKHgsSixLKT9qKGEseCwiY2xvc2VfcGFyZW4iKTpkKHgsQyxEKT9qKGEseCwic2VwYXJhdG9yIik6ZCh4LEYsRyk/aihhLHgsIm9wZXJhdG9yIik6aihhLHgsbnVsbCl9ZnVuY3Rpb24gYyh4LGEsYil7aWYoMT09eC5jdXJyZW50KCkubGVuZ3RoJiZhLnRlc3QoeC5jdXJyZW50KCkpKXtmb3IoeC5iYWNrVXAoMSk7YS50ZXN0KHgucGVlaygpKTspaWYoeC5uZXh0KCksaSh4LmN1cnJlbnQoKSxiKSlyZXR1cm4hMDt4LmJhY2tVcCh4LmN1cnJlbnQoKS5sZW5ndGgtMSl9cmV0dXJuITF9ZnVuY3Rpb24gZCh4LGEsYil7aWYoMT09eC5jdXJyZW50KCkubGVuZ3RoJiZhLnRlc3QoeC5jdXJyZW50KCkpKXtmb3IoO2EudGVzdCh4LnBlZWsoKSk7KXgubmV4dCgpO2Zvcig7MDx4LmN1cnJlbnQoKS5sZW5ndGg7KXtpZihpKHguY3VycmVudCgpLGIpKXJldHVybiEwO3guYmFja1VwKDEpfXgubmV4dCgpfXJldHVybiExfWZ1bmN0aW9uIGUoeCl7cmV0dXJuIGcoeCwnIicsIlxcIil9ZnVuY3Rpb24gZih4KXtyZXR1cm4gZyh4LCInIiwiXFwiKX1mdW5jdGlvbiBnKHgsYSxiKXtmb3IoOyF4LmVvbCgpOyl7dmFyIGM9eC5uZXh0KCk7aWYoYz09YSlyZXR1cm4hMDtjPT1iJiZ4Lm5leHQoKX1yZXR1cm4hMX1mdW5jdGlvbiBoKHgpe3ZhciBhPXgubWF0Y2goLyhbXG5cc10rfCVbXlxuXSpcbikqKC4pLywhMSk7cmV0dXJuIGE/YS5wb3AoKToiIn1mdW5jdGlvbiBpKHgsYSl7cmV0dXJuLTE8YS5pbmRleE9mKHgpfWZ1bmN0aW9uIGooeCxhLGIpe3N3aXRjaChvKHgsbChiLGEpKSxiKXtjYXNlImF0b20iOnJldHVybiJhdG9tIjtjYXNlImF0dHJpYnV0ZSI6cmV0dXJuImF0dHJpYnV0ZSI7Y2FzZSJib29sZWFuIjpyZXR1cm4iYXRvbSI7Y2FzZSJidWlsdGluIjpyZXR1cm4iYnVpbHRpbiI7Y2FzZSJjbG9zZV9wYXJlbiI6Y2FzZSJjb2xvbiI6cmV0dXJuIG51bGw7Y2FzZSJjb21tZW50IjpyZXR1cm4iY29tbWVudCI7Y2FzZSJkb3QiOnJldHVybiBudWxsO2Nhc2UiZXJyb3IiOnJldHVybiJlcnJvciI7Y2FzZSJmdW4iOnJldHVybiJtZXRhIjtjYXNlImZ1bmN0aW9uIjpyZXR1cm4idGFnIjtjYXNlImd1YXJkIjpyZXR1cm4icHJvcGVydHkiO2Nhc2Uia2V5d29yZCI6cmV0dXJuImtleXdvcmQiO2Nhc2UibWFjcm8iOnJldHVybiJ2YXJpYWJsZS0yIjtjYXNlIm51bWJlciI6cmV0dXJuIm51bWJlciI7Y2FzZSJvcGVuX3BhcmVuIjpyZXR1cm4gbnVsbDtjYXNlIm9wZXJhdG9yIjpyZXR1cm4ib3BlcmF0b3IiO2Nhc2UicmVjb3JkIjpyZXR1cm4iYnJhY2tldCI7Y2FzZSJzZXBhcmF0b3IiOnJldHVybiBudWxsO2Nhc2Uic3RyaW5nIjpyZXR1cm4ic3RyaW5nIjtjYXNlInR5cGUiOnJldHVybiJkZWYiO2Nhc2UidmFyaWFibGUiOnJldHVybiJ2YXJpYWJsZSI7ZGVmYXVsdDpyZXR1cm4gbnVsbH19ZnVuY3Rpb24gayh4LGEsYixjKXtyZXR1cm57dG9rZW46eCxjb2x1bW46YSxpbmRlbnQ6Yix0eXBlOmN9fWZ1bmN0aW9uIGwoeCxhKXtyZXR1cm4gayhhLmN1cnJlbnQoKSxhLmNvbHVtbigpLGEuaW5kZW50YXRpb24oKSx4KX1mdW5jdGlvbiBtKHgpe3JldHVybiBrKHgsMCwwLHgpfWZ1bmN0aW9uIG4oeCxhKXt2YXIgYj14LnRva2VuU3RhY2subGVuZ3RoLGM9YXx8MTtyZXR1cm4hKGI8YykmJngudG9rZW5TdGFja1tiLWNdfWZ1bmN0aW9uIG8oeCxhKXsiY29tbWVudCIhPWEudHlwZSYmIndoaXRlc3BhY2UiIT1hLnR5cGUmJih4LnRva2VuU3RhY2s9cCh4LnRva2VuU3RhY2ssYSkseC50b2tlblN0YWNrPXEoeC50b2tlblN0YWNrKSl9ZnVuY3Rpb24gcCh4LGEpe3ZhciBiPXgubGVuZ3RoLTE7cmV0dXJuIDA8YiYmInJlY29yZCI9PT14W2JdLnR5cGUmJiJkb3QiPT09YS50eXBlP3gucG9wKCk6MDxiJiYiZ3JvdXAiPT09eFtiXS50eXBlPyh4LnBvcCgpLHgucHVzaChhKSk6eC5wdXNoKGEpLHh9ZnVuY3Rpb24gcSh4KXt2YXIgYT14Lmxlbmd0aC0xO2lmKCJkb3QiPT09eFthXS50eXBlKXJldHVybltdO2lmKCJmdW4iPT09eFthXS50eXBlJiYiZnVuIj09PXhbYS0xXS50b2tlbilyZXR1cm4geC5zbGljZSgwLGEtMSk7c3dpdGNoKHhbeC5sZW5ndGgtMV0udG9rZW4pe2Nhc2UifSI6cmV0dXJuIHIoeCx7ZzpbInsiXX0pO2Nhc2UiXSI6cmV0dXJuIHIoeCx7aTpbIlsiXX0pO2Nhc2UiKSI6cmV0dXJuIHIoeCx7aTpbIigiXX0pO2Nhc2UiPj4iOnJldHVybiByKHgse2k6WyI8PCJdfSk7Y2FzZSJlbmQiOnJldHVybiByKHgse2k6WyJiZWdpbiIsImNhc2UiLCJmdW4iLCJpZiIsInJlY2VpdmUiLCJ0cnkiXX0pO2Nhc2UiLCI6cmV0dXJuIHIoeCx7ZTpbImJlZ2luIiwidHJ5Iiwid2hlbiIsIi0+IiwiLCIsIigiLCJbIiwieyIsIjw8Il19KTtjYXNlIi0+IjpyZXR1cm4gcih4LHtyOlsid2hlbiJdLG06WyJ0cnkiLCJpZiIsImNhc2UiLCJyZWNlaXZlIl19KTtjYXNlIjsiOnJldHVybiByKHgse0U6WyJjYXNlIiwiZnVuIiwiaWYiLCJyZWNlaXZlIiwidHJ5Iiwid2hlbiJdfSk7Y2FzZSJjYXRjaCI6cmV0dXJuIHIoeCx7ZTpbInRyeSJdfSk7Y2FzZSJvZiI6cmV0dXJuIHIoeCx7ZTpbImNhc2UiXX0pO2Nhc2UiYWZ0ZXIiOnJldHVybiByKHgse2U6WyJyZWNlaXZlIiwidHJ5Il19KTtkZWZhdWx0OnJldHVybiB4fX1mdW5jdGlvbiByKHgsYSl7Zm9yKHZhciBiIGluIGEpZm9yKHZhciBjPXgubGVuZ3RoLTEsZD1hW2JdLGU9Yy0xOy0xPGU7ZS0tKWlmKGkoeFtlXS50b2tlbixkKSl7dmFyIGY9eC5zbGljZSgwLGUpO3N3aXRjaChiKXtjYXNlIm0iOnJldHVybiBmLmNvbmNhdCh4W2VdKS5jb25jYXQoeFtjXSk7Y2FzZSJyIjpyZXR1cm4gZi5jb25jYXQoeFtjXSk7Y2FzZSJpIjpyZXR1cm4gZjtjYXNlImciOnJldHVybiBmLmNvbmNhdChtKCJncm91cCIpKTtjYXNlIkUiOmNhc2UiZSI6cmV0dXJuIGYuY29uY2F0KHhbZV0pfX1yZXR1cm4iRSI9PWI/W106eH1mdW5jdGlvbiBzKGIsYyl7dmFyIGQsZT14LmluZGVudFVuaXQsZj10KGMpLGc9bihiLDEpLGg9bihiLDIpO3JldHVybiBiLmluX3N0cmluZ3x8Yi5pbl9hdG9tP2EuUGFzczpoPyJ3aGVuIj09Zy50b2tlbj9nLmNvbHVtbitlOiJ3aGVuIj09PWYmJiJmdW5jdGlvbiI9PT1oLnR5cGU/aC5pbmRlbnQrZToiKCI9PT1mJiYiZnVuIj09PWcudG9rZW4/Zy5jb2x1bW4rMzoiY2F0Y2giPT09ZiYmKGQ9dyhiLFsidHJ5Il0pKT9kLmNvbHVtbjppKGYsWyJlbmQiLCJhZnRlciIsIm9mIl0pPyhkPXcoYixbImJlZ2luIiwiY2FzZSIsImZ1biIsImlmIiwicmVjZWl2ZSIsInRyeSJdKSk/ZC5jb2x1bW46YS5QYXNzOmkoZixLKT8oZD13KGIsSSkpP2QuY29sdW1uOmEuUGFzczppKGcudG9rZW4sWyIsIiwifCIsInx8Il0pfHxpKGYsWyIsIiwifCIsInx8Il0pPyhkPXUoYikpP2QuY29sdW1uK2QudG9rZW4ubGVuZ3RoOmU6Ii0+Ij09Zy50b2tlbj9pKGgudG9rZW4sWyJyZWNlaXZlIiwiY2FzZSIsImlmIiwidHJ5Il0pP2guY29sdW1uK2UrZTpoLmNvbHVtbitlOmkoZy50b2tlbixJKT9nLmNvbHVtbitnLnRva2VuLmxlbmd0aDp6KGQ9dihiKSk/ZC5jb2x1bW4rZTowOjB9ZnVuY3Rpb24gdCh4KXt2YXIgYT14Lm1hdGNoKC8sfFthLXpdK3xcfXxcXXxcKXw+PnxcfCt8XCgvKTtyZXR1cm4geihhKSYmMD09PWEuaW5kZXg/YVswXToiIn1mdW5jdGlvbiB1KHgpe3ZhciBhPXgudG9rZW5TdGFjay5zbGljZSgwLC0xKSxiPXkoYSwidHlwZSIsWyJvcGVuX3BhcmVuIl0pO3JldHVybiEheihhW2JdKSYmYVtiXX1mdW5jdGlvbiB2KHgpe3ZhciBhPXgudG9rZW5TdGFjayxiPXkoYSwidHlwZSIsWyJvcGVuX3BhcmVuIiwic2VwYXJhdG9yIiwia2V5d29yZCJdKSxjPXkoYSwidHlwZSIsWyJvcGVyYXRvciJdKTtyZXR1cm4geihiKSYmeihjKSYmYjxjP2FbYisxXTohIXooYikmJmFbYl19ZnVuY3Rpb24gdyh4LGEpe3ZhciBiPXgudG9rZW5TdGFjayxjPXkoYiwidG9rZW4iLGEpO3JldHVybiEheihiW2NdKSYmYltjXX1mdW5jdGlvbiB5KHgsYSxiKXtmb3IodmFyIGM9eC5sZW5ndGgtMTstMTxjO2MtLSlpZihpKHhbY11bYV0sYikpcmV0dXJuIGM7cmV0dXJuITF9ZnVuY3Rpb24geih4KXtyZXR1cm4hMSE9PXgmJm51bGwhPXh9dmFyIEE9WyItdHlwZSIsIi1zcGVjIiwiLWV4cG9ydF90eXBlIiwiLW9wYXF1ZSJdLEI9WyJhZnRlciIsImJlZ2luIiwiY2F0Y2giLCJjYXNlIiwiY29uZCIsImVuZCIsImZ1biIsImlmIiwibGV0Iiwib2YiLCJxdWVyeSIsInJlY2VpdmUiLCJ0cnkiLCJ3aGVuIl0sQz0vW1wtPiw7XS8sRD1bIi0+IiwiOyIsIiwiXSxFPVsiYW5kIiwiYW5kYWxzbyIsImJhbmQiLCJibm90IiwiYm9yIiwiYnNsIiwiYnNyIiwiYnhvciIsImRpdiIsIm5vdCIsIm9yIiwib3JlbHNlIiwicmVtIiwieG9yIl0sRj0vW1wrXC1cKlwvPD49XHw6IV0vLEc9WyI9IiwiKyIsIi0iLCIqIiwiLyIsIj4iLCI+PSIsIjwiLCI9PCIsIj06PSIsIj09IiwiPS89IiwiLz0iLCJ8fCIsIjwtIiwiISJdLEg9L1s8XChcW1x7XS8sST1bIjw8IiwiKCIsIlsiLCJ7Il0sSj0vWz5cKVxdXH1dLyxLPVsifSIsIl0iLCIpIiwiPj4iXSxMPVsiaXNfYXRvbSIsImlzX2JpbmFyeSIsImlzX2JpdHN0cmluZyIsImlzX2Jvb2xlYW4iLCJpc19mbG9hdCIsImlzX2Z1bmN0aW9uIiwiaXNfaW50ZWdlciIsImlzX2xpc3QiLCJpc19udW1iZXIiLCJpc19waWQiLCJpc19wb3J0IiwiaXNfcmVjb3JkIiwiaXNfcmVmZXJlbmNlIiwiaXNfdHVwbGUiLCJhdG9tIiwiYmluYXJ5IiwiYml0c3RyaW5nIiwiYm9vbGVhbiIsImZ1bmN0aW9uIiwiaW50ZWdlciIsImxpc3QiLCJudW1iZXIiLCJwaWQiLCJwb3J0IiwicmVjb3JkIiwicmVmZXJlbmNlIiwidHVwbGUiXSxNPVsiYWJzIiwiYWRsZXIzMiIsImFkbGVyMzJfY29tYmluZSIsImFsaXZlIiwiYXBwbHkiLCJhdG9tX3RvX2JpbmFyeSIsImF0b21fdG9fbGlzdCIsImJpbmFyeV90b19hdG9tIiwiYmluYXJ5X3RvX2V4aXN0aW5nX2F0b20iLCJiaW5hcnlfdG9fbGlzdCIsImJpbmFyeV90b190ZXJtIiwiYml0X3NpemUiLCJiaXRzdHJpbmdfdG9fbGlzdCIsImJ5dGVfc2l6ZSIsImNoZWNrX3Byb2Nlc3NfY29kZSIsImNvbnRhY3RfYmluYXJ5IiwiY3JjMzIiLCJjcmMzMl9jb21iaW5lIiwiZGF0ZSIsImRlY29kZV9wYWNrZXQiLCJkZWxldGVfbW9kdWxlIiwiZGlzY29ubmVjdF9ub2RlIiwiZWxlbWVudCIsImVyYXNlIiwiZXhpdCIsImZsb2F0IiwiZmxvYXRfdG9fbGlzdCIsImdhcmJhZ2VfY29sbGVjdCIsImdldCIsImdldF9rZXlzIiwiZ3JvdXBfbGVhZGVyIiwiaGFsdCIsImhkIiwiaW50ZWdlcl90b19saXN0IiwiaW50ZXJuYWxfYmlmIiwiaW9saXN0X3NpemUiLCJpb2xpc3RfdG9fYmluYXJ5IiwiaXNfYWxpdmUiLCJpc19hdG9tIiwiaXNfYmluYXJ5IiwiaXNfYml0c3RyaW5nIiwiaXNfYm9vbGVhbiIsImlzX2Zsb2F0IiwiaXNfZnVuY3Rpb24iLCJpc19pbnRlZ2VyIiwiaXNfbGlzdCIsImlzX251bWJlciIsImlzX3BpZCIsImlzX3BvcnQiLCJpc19wcm9jZXNzX2FsaXZlIiwiaXNfcmVjb3JkIiwiaXNfcmVmZXJlbmNlIiwiaXNfdHVwbGUiLCJsZW5ndGgiLCJsaW5rIiwibGlzdF90b19hdG9tIiwibGlzdF90b19iaW5hcnkiLCJsaXN0X3RvX2JpdHN0cmluZyIsImxpc3RfdG9fZXhpc3RpbmdfYXRvbSIsImxpc3RfdG9fZmxvYXQiLCJsaXN0X3RvX2ludGVnZXIiLCJsaXN0X3RvX3BpZCIsImxpc3RfdG9fdHVwbGUiLCJsb2FkX21vZHVsZSIsIm1ha2VfcmVmIiwibW9kdWxlX2xvYWRlZCIsIm1vbml0b3Jfbm9kZSIsIm5vZGUiLCJub2RlX2xpbmsiLCJub2RlX3VubGluayIsIm5vZGVzIiwibm90YWxpdmUiLCJub3ciLCJvcGVuX3BvcnQiLCJwaWRfdG9fbGlzdCIsInBvcnRfY2xvc2UiLCJwb3J0X2NvbW1hbmQiLCJwb3J0X2Nvbm5lY3QiLCJwb3J0X2NvbnRyb2wiLCJwcmVfbG9hZGVkIiwicHJvY2Vzc19mbGFnIiwicHJvY2Vzc19pbmZvIiwicHJvY2Vzc2VzIiwicHVyZ2VfbW9kdWxlIiwicHV0IiwicmVnaXN0ZXIiLCJyZWdpc3RlcmVkIiwicm91bmQiLCJzZWxmIiwic2V0ZWxlbWVudCIsInNpemUiLCJzcGF3biIsInNwYXduX2xpbmsiLCJzcGF3bl9tb25pdG9yIiwic3Bhd25fb3B0Iiwic3BsaXRfYmluYXJ5Iiwic3RhdGlzdGljcyIsInRlcm1fdG9fYmluYXJ5IiwidGltZSIsInRocm93IiwidGwiLCJ0cnVuYyIsInR1cGxlX3NpemUiLCJ0dXBsZV90b19saXN0IiwidW5saW5rIiwidW5yZWdpc3RlciIsIndoZXJlaXMiXSxOPS9bXHdAw5gtw57DgC3DlsOfLcO2w7gtw79dLyxPPS9bMC03XXsxLDN9fFtiZGVmbnJzdHZcXCInXXxcXlthLXpBLVpdfHhbMC05YS16QS1aXXsyfXx4e1swLTlhLXpBLVpdK30vO3JldHVybntzdGFydFN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJue3Rva2VuU3RhY2s6W10saW5fc3RyaW5nOiExLGluX2F0b206ITF9fSx0b2tlbjpmdW5jdGlvbih4LGEpe3JldHVybiBiKHgsYSl9LGluZGVudDpmdW5jdGlvbih4LGEpe3JldHVybiBzKHgsYSl9LGxpbmVDb21tZW50OiIlIn19KX0oKTsKCi8qQ29kZU1pcnJvciBvdmVybGF5czogZW1vamktdGFnZ2VyKi8KIWZ1bmN0aW9uKCl7dmFyIHg9Il4oXFxwe1JJfVxccHtSSX18XFxwe0Vtb2ppfShcXHB7RU1vZH0rfFxcdXtGRTBGfVxcdXsyMEUzfT98W1xcdXtFMDAyMH0tXFx1e0UwMDdFfV0rXFx1e0UwMDdGfSk/KFxcdXsyMDBEfVxccHtFbW9qaX0oXFxwe0VNb2R9K3xcXHV7RkUwRn1cXHV7MjBFM30/fFtcXHV7RTAwMjB9LVxcdXtFMDA3RX1dK1xcdXtFMDA3Rn0pPykrfFxccHtFUHJlc30oXFxwe0VNb2R9K3xcXHV7RkUwRn1cXHV7MjBFM30/fFtcXHV7RTAwMjB9LVxcdXtFMDA3RX1dK1xcdXtFMDA3Rn0pP3xcXHB7RW1vaml9KFxccHtFTW9kfSt8XFx1e0ZFMEZ9XFx1ezIwRTN9P3xbXFx1e0UwMDIwfS1cXHV7RTAwN0V9XStcXHV7RTAwN0Z9KSkiLGE9InUiO3RyeXtuZXcgUmVnRXhwKCJeXFxwe0Vtb2ppfSIsInUiKX1jYXRjaChiKXt4PSJeXFx1ZmZmZiIsYT0iIn1yZXR1cm4gQ29kZU1pcnJvci5vdmVybGF5TW9kZXx8YyhDb2RlTWlycm9yKSxiKCksdm9pZCAwO2Z1bmN0aW9uIGIoKXt2YXIgYj1uZXcgUmVnRXhwKHgsYSk7ZnVuY3Rpb24gYyh4LGEpe2lmKHgubWF0Y2goYikpcmV0dXJuIHguZWF0KGIpLCJlbW9qaSI7Zm9yKDtudWxsIT14Lm5leHQoKSYmIXgubWF0Y2goYiwhMSk7KTtyZXR1cm4gbnVsbH1PYmplY3Qua2V5cyhDb2RlTWlycm9yLm1vZGVzKS5mb3JFYWNoKGZ1bmN0aW9uKHgpe0NvZGVNaXJyb3IuZGVmaW5lTW9kZSgiamkiK3gsZnVuY3Rpb24oYSxiKXtyZXR1cm4gQ29kZU1pcnJvci5vdmVybGF5TW9kZShDb2RlTWlycm9yLmdldE1vZGUoYSx4KSx7dG9rZW46Y30pfSl9KX1mdW5jdGlvbiBjKHgpeyJ1c2Ugc3RyaWN0Ijt4Lm92ZXJsYXlNb2RlPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm57c3RhcnRTdGF0ZTpmdW5jdGlvbigpe3JldHVybntiYXNlOnguc3RhcnRTdGF0ZShhKSxvdmVybGF5Onguc3RhcnRTdGF0ZShiKSxiYXNlUG9zOjAsYmFzZUN1cjpudWxsLG92ZXJsYXlQb3M6MCxvdmVybGF5Q3VyOm51bGwsc3RyZWFtU2VlbjpudWxsfX0sY29weVN0YXRlOmZ1bmN0aW9uKGMpe3JldHVybntiYXNlOnguY29weVN0YXRlKGEsYy5iYXNlKSxvdmVybGF5OnguY29weVN0YXRlKGIsYy5vdmVybGF5KSxiYXNlUG9zOmMuYmFzZVBvcyxiYXNlQ3VyOm51bGwsb3ZlcmxheVBvczpjLm92ZXJsYXlQb3Msb3ZlcmxheUN1cjpudWxsfX0sdG9rZW46ZnVuY3Rpb24oeCxkKXtyZXR1cm4oeCE9ZC5zdHJlYW1TZWVufHxNYXRoLm1pbihkLmJhc2VQb3MsZC5vdmVybGF5UG9zKTx4LnN0YXJ0KSYmKGQuc3RyZWFtU2Vlbj14LGQuYmFzZVBvcz1kLm92ZXJsYXlQb3M9eC5zdGFydCkseC5zdGFydD09ZC5iYXNlUG9zJiYoZC5iYXNlQ3VyPWEudG9rZW4oeCxkLmJhc2UpLGQuYmFzZVBvcz14LnBvcykseC5zdGFydD09ZC5vdmVybGF5UG9zJiYoeC5wb3M9eC5zdGFydCxkLm92ZXJsYXlDdXI9Yi50b2tlbih4LGQub3ZlcmxheSksZC5vdmVybGF5UG9zPXgucG9zKSx4LnBvcz1NYXRoLm1pbihkLmJhc2VQb3MsZC5vdmVybGF5UG9zKSxudWxsPT1kLm92ZXJsYXlDdXI/ZC5iYXNlQ3VyOm51bGwhPWQuYmFzZUN1ciYmZC5vdmVybGF5LmNvbWJpbmVUb2tlbnN8fGMmJm51bGw9PWQub3ZlcmxheS5jb21iaW5lVG9rZW5zP2QuYmFzZUN1cisiICIrZC5vdmVybGF5Q3VyOmQub3ZlcmxheUN1cn0saW5kZW50OmEuaW5kZW50JiZmdW5jdGlvbih4LGIpe3JldHVybiBhLmluZGVudCh4LmJhc2UsYil9LGVsZWN0cmljQ2hhcnM6YS5lbGVjdHJpY0NoYXJzLGlubmVyTW9kZTpmdW5jdGlvbih4KXtyZXR1cm57c3RhdGU6eC5iYXNlLG1vZGU6YX19LGJsYW5rTGluZTpmdW5jdGlvbih4KXthLmJsYW5rTGluZSYmYS5ibGFua0xpbmUoeC5iYXNlKSxiLmJsYW5rTGluZSYmYi5ibGFua0xpbmUoeC5vdmVybGF5KX19fX19KCk7CQoKLyoqCiAqIGpxdWVyeS5KY3JvcC5taW4uanMgdjAuOS4xMiAoYnVpbGQ6MjAxMzAyMDIpCiAqIGpRdWVyeSBJbWFnZSBDcm9wcGluZyBQbHVnaW4gLSByZWxlYXNlZCB1bmRlciBNSVQgTGljZW5zZQogKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMyBUYXBtb2RvIEludGVyYWN0aXZlIExMQwogKiBodHRwczovL2dpdGh1Yi5jb20vdGFwbW9kby9KY3JvcAogKi8KKGZ1bmN0aW9uKGEpe2EuSmNyb3A9ZnVuY3Rpb24oYixjKXtmdW5jdGlvbiBpKGEpe3JldHVybiBNYXRoLnJvdW5kKGEpKyJweCJ9ZnVuY3Rpb24gaihhKXtyZXR1cm4gZC5iYXNlQ2xhc3MrIi0iK2F9ZnVuY3Rpb24gaygpe3JldHVybiBhLmZ4LnN0ZXAuaGFzT3duUHJvcGVydHkoImJhY2tncm91bmRDb2xvciIpfWZ1bmN0aW9uIGwoYil7dmFyIGM9YShiKS5vZmZzZXQoKTtyZXR1cm5bYy5sZWZ0LGMudG9wXX1mdW5jdGlvbiBtKGEpe3JldHVyblthLnBhZ2VYLWVbMF0sYS5wYWdlWS1lWzFdXX1mdW5jdGlvbiBuKGIpe3R5cGVvZiBiIT0ib2JqZWN0IiYmKGI9e30pLGQ9YS5leHRlbmQoZCxiKSxhLmVhY2goWyJvbkNoYW5nZSIsIm9uU2VsZWN0Iiwib25SZWxlYXNlIiwib25EYmxDbGljayJdLGZ1bmN0aW9uKGEsYil7dHlwZW9mIGRbYl0hPSJmdW5jdGlvbiImJihkW2JdPWZ1bmN0aW9uKCl7fSl9KX1mdW5jdGlvbiBvKGEsYixjKXtlPWwoRCksYmMuc2V0Q3Vyc29yKGE9PT0ibW92ZSI/YTphKyItcmVzaXplIik7aWYoYT09PSJtb3ZlIilyZXR1cm4gYmMuYWN0aXZhdGVIYW5kbGVycyhxKGIpLHYsYyk7dmFyIGQ9Xy5nZXRGaXhlZCgpLGY9cihhKSxnPV8uZ2V0Q29ybmVyKHIoZikpO18uc2V0UHJlc3NlZChfLmdldENvcm5lcihmKSksXy5zZXRDdXJyZW50KGcpLGJjLmFjdGl2YXRlSGFuZGxlcnMocChhLGQpLHYsYyl9ZnVuY3Rpb24gcChhLGIpe3JldHVybiBmdW5jdGlvbihjKXtpZighZC5hc3BlY3RSYXRpbylzd2l0Y2goYSl7Y2FzZSJlIjpjWzFdPWIueTI7YnJlYWs7Y2FzZSJ3IjpjWzFdPWIueTI7YnJlYWs7Y2FzZSJuIjpjWzBdPWIueDI7YnJlYWs7Y2FzZSJzIjpjWzBdPWIueDJ9ZWxzZSBzd2l0Y2goYSl7Y2FzZSJlIjpjWzFdPWIueSsxO2JyZWFrO2Nhc2UidyI6Y1sxXT1iLnkrMTticmVhaztjYXNlIm4iOmNbMF09Yi54KzE7YnJlYWs7Y2FzZSJzIjpjWzBdPWIueCsxfV8uc2V0Q3VycmVudChjKSxiYi51cGRhdGUoKX19ZnVuY3Rpb24gcShhKXt2YXIgYj1hO3JldHVybiBiZC53YXRjaEtleXMKKCksZnVuY3Rpb24oYSl7Xy5tb3ZlT2Zmc2V0KFthWzBdLWJbMF0sYVsxXS1iWzFdXSksYj1hLGJiLnVwZGF0ZSgpfX1mdW5jdGlvbiByKGEpe3N3aXRjaChhKXtjYXNlIm4iOnJldHVybiJzdyI7Y2FzZSJzIjpyZXR1cm4ibnciO2Nhc2UiZSI6cmV0dXJuIm53IjtjYXNlInciOnJldHVybiJuZSI7Y2FzZSJuZSI6cmV0dXJuInN3IjtjYXNlIm53IjpyZXR1cm4ic2UiO2Nhc2Uic2UiOnJldHVybiJudyI7Y2FzZSJzdyI6cmV0dXJuIm5lIn19ZnVuY3Rpb24gcyhhKXtyZXR1cm4gZnVuY3Rpb24oYil7cmV0dXJuIGQuZGlzYWJsZWQ/ITE6YT09PSJtb3ZlIiYmIWQuYWxsb3dNb3ZlPyExOihlPWwoRCksVz0hMCxvKGEsbShiKSksYi5zdG9wUHJvcGFnYXRpb24oKSxiLnByZXZlbnREZWZhdWx0KCksITEpfX1mdW5jdGlvbiB0KGEsYixjKXt2YXIgZD1hLndpZHRoKCksZT1hLmhlaWdodCgpO2Q+YiYmYj4wJiYoZD1iLGU9Yi9hLndpZHRoKCkqYS5oZWlnaHQoKSksZT5jJiZjPjAmJihlPWMsZD1jL2EuaGVpZ2h0KCkqYS53aWR0aCgpKSxUPWEud2lkdGgoKS9kLFU9YS5oZWlnaHQoKS9lLGEud2lkdGgoZCkuaGVpZ2h0KGUpfWZ1bmN0aW9uIHUoYSl7cmV0dXJue3g6YS54KlQseTphLnkqVSx4MjphLngyKlQseTI6YS55MipVLHc6YS53KlQsaDphLmgqVX19ZnVuY3Rpb24gdihhKXt2YXIgYj1fLmdldEZpeGVkKCk7Yi53PmQubWluU2VsZWN0WzBdJiZiLmg+ZC5taW5TZWxlY3RbMV0/KGJiLmVuYWJsZUhhbmRsZXMoKSxiYi5kb25lKCkpOmJiLnJlbGVhc2UoKSxiYy5zZXRDdXJzb3IoZC5hbGxvd1NlbGVjdD8iY3Jvc3NoYWlyIjoiZGVmYXVsdCIpfWZ1bmN0aW9uIHcoYSl7aWYoZC5kaXNhYmxlZClyZXR1cm4hMTtpZighZC5hbGxvd1NlbGVjdClyZXR1cm4hMTtXPSEwLGU9bChEKSxiYi5kaXNhYmxlSGFuZGxlcygpLGJjLnNldEN1cnNvcigiY3Jvc3NoYWlyIik7dmFyIGI9bShhKTtyZXR1cm4gXy5zZXRQcmVzc2VkKGIpLGJiLnVwZGF0ZSgpLGJjLmFjdGl2YXRlSGFuZGxlcnMoeCx2LGEudHlwZS5zdWJzdHJpbmcKKDAsNSk9PT0idG91Y2giKSxiZC53YXRjaEtleXMoKSxhLnN0b3BQcm9wYWdhdGlvbigpLGEucHJldmVudERlZmF1bHQoKSwhMX1mdW5jdGlvbiB4KGEpe18uc2V0Q3VycmVudChhKSxiYi51cGRhdGUoKX1mdW5jdGlvbiB5KCl7dmFyIGI9YSgiPGRpdj48L2Rpdj4iKS5hZGRDbGFzcyhqKCJ0cmFja2VyIikpO3JldHVybiBnJiZiLmNzcyh7b3BhY2l0eTowLGJhY2tncm91bmRDb2xvcjoid2hpdGUifSksYn1mdW5jdGlvbiBiZShhKXtHLnJlbW92ZUNsYXNzKCkuYWRkQ2xhc3MoaigiaG9sZGVyIikpLmFkZENsYXNzKGEpfWZ1bmN0aW9uIGJmKGEsYil7ZnVuY3Rpb24gdCgpe3dpbmRvdy5zZXRUaW1lb3V0KHUsbCl9dmFyIGM9YVswXS9ULGU9YVsxXS9VLGY9YVsyXS9ULGc9YVszXS9VO2lmKFgpcmV0dXJuO3ZhciBoPV8uZmxpcENvb3JkcyhjLGUsZixnKSxpPV8uZ2V0Rml4ZWQoKSxqPVtpLngsaS55LGkueDIsaS55Ml0saz1qLGw9ZC5hbmltYXRpb25EZWxheSxtPWhbMF0talswXSxuPWhbMV0talsxXSxvPWhbMl0talsyXSxwPWhbM10talszXSxxPTAscj1kLnN3aW5nU3BlZWQ7Yz1rWzBdLGU9a1sxXSxmPWtbMl0sZz1rWzNdLGJiLmFuaW1Nb2RlKCEwKTt2YXIgcyx1PWZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKCl7cSs9KDEwMC1xKS9yLGtbMF09TWF0aC5yb3VuZChjK3EvMTAwKm0pLGtbMV09TWF0aC5yb3VuZChlK3EvMTAwKm4pLGtbMl09TWF0aC5yb3VuZChmK3EvMTAwKm8pLGtbM109TWF0aC5yb3VuZChnK3EvMTAwKnApLHE+PTk5LjgmJihxPTEwMCkscTwxMDA/KGJoKGspLHQoKSk6KGJiLmRvbmUoKSxiYi5hbmltTW9kZSghMSksdHlwZW9mIGI9PSJmdW5jdGlvbiImJmIuY2FsbChicykpfX0oKTt0KCl9ZnVuY3Rpb24gYmcoYSl7YmgoW2FbMF0vVCxhWzFdL1UsYVsyXS9ULGFbM10vVV0pLGQub25TZWxlY3QuY2FsbChicyx1KF8uZ2V0Rml4ZWQoKSkpLGJiLmVuYWJsZUhhbmRsZXMoKX1mdW5jdGlvbiBiaChhKXtfLnNldFByZXNzZWQoW2FbMF0sYVsxXV0pLF8uc2V0Q3VycmVudChbYVsyXSwKYVszXV0pLGJiLnVwZGF0ZSgpfWZ1bmN0aW9uIGJpKCl7cmV0dXJuIHUoXy5nZXRGaXhlZCgpKX1mdW5jdGlvbiBiaigpe3JldHVybiBfLmdldEZpeGVkKCl9ZnVuY3Rpb24gYmsoYSl7bihhKSxicigpfWZ1bmN0aW9uIGJsKCl7ZC5kaXNhYmxlZD0hMCxiYi5kaXNhYmxlSGFuZGxlcygpLGJiLnNldEN1cnNvcigiZGVmYXVsdCIpLGJjLnNldEN1cnNvcigiZGVmYXVsdCIpfWZ1bmN0aW9uIGJtKCl7ZC5kaXNhYmxlZD0hMSxicigpfWZ1bmN0aW9uIGJuKCl7YmIuZG9uZSgpLGJjLmFjdGl2YXRlSGFuZGxlcnMobnVsbCxudWxsKX1mdW5jdGlvbiBibygpe0cucmVtb3ZlKCksQS5zaG93KCksQS5jc3MoInZpc2liaWxpdHkiLCJ2aXNpYmxlIiksYShiKS5yZW1vdmVEYXRhKCJKY3JvcCIpfWZ1bmN0aW9uIGJwKGEsYil7YmIucmVsZWFzZSgpLGJsKCk7dmFyIGM9bmV3IEltYWdlO2Mub25sb2FkPWZ1bmN0aW9uKCl7dmFyIGU9Yy53aWR0aCxmPWMuaGVpZ2h0LGc9ZC5ib3hXaWR0aCxoPWQuYm94SGVpZ2h0O0Qud2lkdGgoZSkuaGVpZ2h0KGYpLEQuYXR0cigic3JjIixhKSxILmF0dHIoInNyYyIsYSksdChELGcsaCksRT1ELndpZHRoKCksRj1ELmhlaWdodCgpLEgud2lkdGgoRSkuaGVpZ2h0KEYpLE0ud2lkdGgoRStMKjIpLmhlaWdodChGK0wqMiksRy53aWR0aChFKS5oZWlnaHQoRiksYmEucmVzaXplKEUsRiksYm0oKSx0eXBlb2YgYj09ImZ1bmN0aW9uIiYmYi5jYWxsKGJzKX0sYy5zcmM9YX1mdW5jdGlvbiBicShhLGIsYyl7dmFyIGU9Ynx8ZC5iZ0NvbG9yO2QuYmdGYWRlJiZrKCkmJmQuZmFkZVRpbWUmJiFjP2EuYW5pbWF0ZSh7YmFja2dyb3VuZENvbG9yOmV9LHtxdWV1ZTohMSxkdXJhdGlvbjpkLmZhZGVUaW1lfSk6YS5jc3MoImJhY2tncm91bmRDb2xvciIsZSl9ZnVuY3Rpb24gYnIoYSl7ZC5hbGxvd1Jlc2l6ZT9hP2JiLmVuYWJsZU9ubHkoKTpiYi5lbmFibGVIYW5kbGVzKCk6YmIuZGlzYWJsZUhhbmRsZXMoKSxiYy5zZXRDdXJzb3IoZC5hbGxvd1NlbGVjdD8iY3Jvc3NoYWlyIjoiZGVmYXVsdCIpLGJiCi5zZXRDdXJzb3IoZC5hbGxvd01vdmU/Im1vdmUiOiJkZWZhdWx0IiksZC5oYXNPd25Qcm9wZXJ0eSgidHJ1ZVNpemUiKSYmKFQ9ZC50cnVlU2l6ZVswXS9FLFU9ZC50cnVlU2l6ZVsxXS9GKSxkLmhhc093blByb3BlcnR5KCJzZXRTZWxlY3QiKSYmKGJnKGQuc2V0U2VsZWN0KSxiYi5kb25lKCksZGVsZXRlIGQuc2V0U2VsZWN0KSxiYS5yZWZyZXNoKCksZC5iZ0NvbG9yIT1OJiYoYnEoZC5zaGFkZT9iYS5nZXRTaGFkZXMoKTpHLGQuc2hhZGU/ZC5zaGFkZUNvbG9yfHxkLmJnQ29sb3I6ZC5iZ0NvbG9yKSxOPWQuYmdDb2xvciksTyE9ZC5iZ09wYWNpdHkmJihPPWQuYmdPcGFjaXR5LGQuc2hhZGU/YmEucmVmcmVzaCgpOmJiLnNldEJnT3BhY2l0eShPKSksUD1kLm1heFNpemVbMF18fDAsUT1kLm1heFNpemVbMV18fDAsUj1kLm1pblNpemVbMF18fDAsUz1kLm1pblNpemVbMV18fDAsZC5oYXNPd25Qcm9wZXJ0eSgib3V0ZXJJbWFnZSIpJiYoRC5hdHRyKCJzcmMiLGQub3V0ZXJJbWFnZSksZGVsZXRlIGQub3V0ZXJJbWFnZSksYmIucmVmcmVzaCgpfXZhciBkPWEuZXh0ZW5kKHt9LGEuSmNyb3AuZGVmYXVsdHMpLGUsZj1uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCksZz0vbXNpZS8udGVzdChmKSxoPS9tc2llIFsxLTZdXC4vLnRlc3QoZik7dHlwZW9mIGIhPSJvYmplY3QiJiYoYj1hKGIpWzBdKSx0eXBlb2YgYyE9Im9iamVjdCImJihjPXt9KSxuKGMpO3ZhciB6PXtib3JkZXI6Im5vbmUiLHZpc2liaWxpdHk6InZpc2libGUiLG1hcmdpbjowLHBhZGRpbmc6MCxwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDowLGxlZnQ6MH0sQT1hKGIpLEI9ITA7aWYoYi50YWdOYW1lPT0iSU1HIil7aWYoQVswXS53aWR0aCE9MCYmQVswXS5oZWlnaHQhPTApQS53aWR0aChBWzBdLndpZHRoKSxBLmhlaWdodChBWzBdLmhlaWdodCk7ZWxzZXt2YXIgQz1uZXcgSW1hZ2U7Qy5zcmM9QVswXS5zcmMsQS53aWR0aChDLndpZHRoKSxBLmhlaWdodChDLmhlaWdodCl9dmFyIEQ9QS5jbG9uZSgpLnJlbW92ZUF0dHIoImlkIikuCmNzcyh6KS5zaG93KCk7RC53aWR0aChBLndpZHRoKCkpLEQuaGVpZ2h0KEEuaGVpZ2h0KCkpLEEuYWZ0ZXIoRCkuaGlkZSgpfWVsc2UgRD1BLmNzcyh6KS5zaG93KCksQj0hMSxkLnNoYWRlPT09bnVsbCYmKGQuc2hhZGU9ITApO3QoRCxkLmJveFdpZHRoLGQuYm94SGVpZ2h0KTt2YXIgRT1ELndpZHRoKCksRj1ELmhlaWdodCgpLEc9YSgiPGRpdiAvPiIpLndpZHRoKEUpLmhlaWdodChGKS5hZGRDbGFzcyhqKCJob2xkZXIiKSkuY3NzKHtwb3NpdGlvbjoicmVsYXRpdmUiLGJhY2tncm91bmRDb2xvcjpkLmJnQ29sb3J9KS5pbnNlcnRBZnRlcihBKS5hcHBlbmQoRCk7ZC5hZGRDbGFzcyYmRy5hZGRDbGFzcyhkLmFkZENsYXNzKTt2YXIgSD1hKCI8ZGl2IC8+IiksST1hKCI8ZGl2IC8+Iikud2lkdGgoIjEwMCUiKS5oZWlnaHQoIjEwMCUiKS5jc3Moe3pJbmRleDozMTAscG9zaXRpb246ImFic29sdXRlIixvdmVyZmxvdzoiaGlkZGVuIn0pLEo9YSgiPGRpdiAvPiIpLndpZHRoKCIxMDAlIikuaGVpZ2h0KCIxMDAlIikuY3NzKCJ6SW5kZXgiLDMyMCksSz1hKCI8ZGl2IC8+IikuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLHpJbmRleDo2MDB9KS5kYmxjbGljayhmdW5jdGlvbigpe3ZhciBhPV8uZ2V0Rml4ZWQoKTtkLm9uRGJsQ2xpY2suY2FsbChicyxhKX0pLmluc2VydEJlZm9yZShEKS5hcHBlbmQoSSxKKTtCJiYoSD1hKCI8aW1nIC8+IikuYXR0cigic3JjIixELmF0dHIoInNyYyIpKS5jc3Moeikud2lkdGgoRSkuaGVpZ2h0KEYpLEkuYXBwZW5kKEgpKSxoJiZLLmNzcyh7b3ZlcmZsb3dZOiJoaWRkZW4ifSk7dmFyIEw9ZC5ib3VuZGFyeSxNPXkoKS53aWR0aChFK0wqMikuaGVpZ2h0KEYrTCoyKS5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOmkoLUwpLGxlZnQ6aSgtTCksekluZGV4OjI5MH0pLm1vdXNlZG93bih3KSxOPWQuYmdDb2xvcixPPWQuYmdPcGFjaXR5LFAsUSxSLFMsVCxVLFY9ITAsVyxYLFk7ZT1sKEQpO3ZhciBaPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYSgpe3ZhciBhPXt9LGI9WyJ0b3VjaHN0YXJ0IgosInRvdWNobW92ZSIsInRvdWNoZW5kIl0sYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxkO3RyeXtmb3IoZD0wO2Q8Yi5sZW5ndGg7ZCsrKXt2YXIgZT1iW2RdO2U9Im9uIitlO3ZhciBmPWUgaW4gYztmfHwoYy5zZXRBdHRyaWJ1dGUoZSwicmV0dXJuOyIpLGY9dHlwZW9mIGNbZV09PSJmdW5jdGlvbiIpLGFbYltkXV09Zn1yZXR1cm4gYS50b3VjaHN0YXJ0JiZhLnRvdWNoZW5kJiZhLnRvdWNobW92ZX1jYXRjaChnKXtyZXR1cm4hMX19ZnVuY3Rpb24gYigpe3JldHVybiBkLnRvdWNoU3VwcG9ydD09PSEwfHxkLnRvdWNoU3VwcG9ydD09PSExP2QudG91Y2hTdXBwb3J0OmEoKX1yZXR1cm57Y3JlYXRlRHJhZ2dlcjpmdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oYil7cmV0dXJuIGQuZGlzYWJsZWQ/ITE6YT09PSJtb3ZlIiYmIWQuYWxsb3dNb3ZlPyExOihlPWwoRCksVz0hMCxvKGEsbShaLmNmaWx0ZXIoYikpLCEwKSxiLnN0b3BQcm9wYWdhdGlvbigpLGIucHJldmVudERlZmF1bHQoKSwhMSl9fSxuZXdTZWxlY3Rpb246ZnVuY3Rpb24oYSl7cmV0dXJuIHcoWi5jZmlsdGVyKGEpKX0sY2ZpbHRlcjpmdW5jdGlvbihhKXtyZXR1cm4gYS5wYWdlWD1hLm9yaWdpbmFsRXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0ucGFnZVgsYS5wYWdlWT1hLm9yaWdpbmFsRXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0ucGFnZVksYX0saXNTdXBwb3J0ZWQ6YSxzdXBwb3J0OmIoKX19KCksXz1mdW5jdGlvbigpe2Z1bmN0aW9uIGgoZCl7ZD1uKGQpLGM9YT1kWzBdLGU9Yj1kWzFdfWZ1bmN0aW9uIGkoYSl7YT1uKGEpLGY9YVswXS1jLGc9YVsxXS1lLGM9YVswXSxlPWFbMV19ZnVuY3Rpb24gaigpe3JldHVybltmLGddfWZ1bmN0aW9uIGsoZCl7dmFyIGY9ZFswXSxnPWRbMV07MD5hK2YmJihmLT1mK2EpLDA+YitnJiYoZy09ZytiKSxGPGUrZyYmKGcrPUYtKGUrZykpLEU8YytmJiYoZis9RS0oYytmKSksYSs9ZixjKz1mLGIrPWcsZSs9Z31mdW5jdGlvbiBsKGEpe3ZhciBiPW0oKTtzd2l0Y2goYSl7Y2FzZSJuZSI6cmV0dXJuWwpiLngyLGIueV07Y2FzZSJudyI6cmV0dXJuW2IueCxiLnldO2Nhc2Uic2UiOnJldHVybltiLngyLGIueTJdO2Nhc2Uic3ciOnJldHVybltiLngsYi55Ml19fWZ1bmN0aW9uIG0oKXtpZighZC5hc3BlY3RSYXRpbylyZXR1cm4gcCgpO3ZhciBmPWQuYXNwZWN0UmF0aW8sZz1kLm1pblNpemVbMF0vVCxoPWQubWF4U2l6ZVswXS9ULGk9ZC5tYXhTaXplWzFdL1Usaj1jLWEsaz1lLWIsbD1NYXRoLmFicyhqKSxtPU1hdGguYWJzKGspLG49bC9tLHIscyx0LHU7cmV0dXJuIGg9PT0wJiYoaD1FKjEwKSxpPT09MCYmKGk9RioxMCksbjxmPyhzPWUsdD1tKmYscj1qPDA/YS10OnQrYSxyPDA/KHI9MCx1PU1hdGguYWJzKChyLWEpL2YpLHM9azwwP2ItdTp1K2IpOnI+RSYmKHI9RSx1PU1hdGguYWJzKChyLWEpL2YpLHM9azwwP2ItdTp1K2IpKToocj1jLHU9bC9mLHM9azwwP2ItdTpiK3UsczwwPyhzPTAsdD1NYXRoLmFicygocy1iKSpmKSxyPWo8MD9hLXQ6dCthKTpzPkYmJihzPUYsdD1NYXRoLmFicyhzLWIpKmYscj1qPDA/YS10OnQrYSkpLHI+YT8oci1hPGc/cj1hK2c6ci1hPmgmJihyPWEraCkscz5iP3M9Yisoci1hKS9mOnM9Yi0oci1hKS9mKTpyPGEmJihhLXI8Zz9yPWEtZzphLXI+aCYmKHI9YS1oKSxzPmI/cz1iKyhhLXIpL2Y6cz1iLShhLXIpL2YpLHI8MD8oYS09cixyPTApOnI+RSYmKGEtPXItRSxyPUUpLHM8MD8oYi09cyxzPTApOnM+RiYmKGItPXMtRixzPUYpLHEobyhhLGIscixzKSl9ZnVuY3Rpb24gbihhKXtyZXR1cm4gYVswXTwwJiYoYVswXT0wKSxhWzFdPDAmJihhWzFdPTApLGFbMF0+RSYmKGFbMF09RSksYVsxXT5GJiYoYVsxXT1GKSxbTWF0aC5yb3VuZChhWzBdKSxNYXRoLnJvdW5kKGFbMV0pXX1mdW5jdGlvbiBvKGEsYixjLGQpe3ZhciBlPWEsZj1jLGc9YixoPWQ7cmV0dXJuIGM8YSYmKGU9YyxmPWEpLGQ8YiYmKGc9ZCxoPWIpLFtlLGcsZixoXX1mdW5jdGlvbiBwKCl7dmFyIGQ9Yy1hLGY9ZS1iLGc7cmV0dXJuIFAmJk1hdGguYWJzKGQpPlAmJihjPWQ+MD9hK1A6YS1QKSxRJiZNYXRoLmFicwooZik+USYmKGU9Zj4wP2IrUTpiLVEpLFMvVSYmTWF0aC5hYnMoZik8Uy9VJiYoZT1mPjA/YitTL1U6Yi1TL1UpLFIvVCYmTWF0aC5hYnMoZCk8Ui9UJiYoYz1kPjA/YStSL1Q6YS1SL1QpLGE8MCYmKGMtPWEsYS09YSksYjwwJiYoZS09YixiLT1iKSxjPDAmJihhLT1jLGMtPWMpLGU8MCYmKGItPWUsZS09ZSksYz5FJiYoZz1jLUUsYS09ZyxjLT1nKSxlPkYmJihnPWUtRixiLT1nLGUtPWcpLGE+RSYmKGc9YS1GLGUtPWcsYi09ZyksYj5GJiYoZz1iLUYsZS09ZyxiLT1nKSxxKG8oYSxiLGMsZSkpfWZ1bmN0aW9uIHEoYSl7cmV0dXJue3g6YVswXSx5OmFbMV0seDI6YVsyXSx5MjphWzNdLHc6YVsyXS1hWzBdLGg6YVszXS1hWzFdfX12YXIgYT0wLGI9MCxjPTAsZT0wLGYsZztyZXR1cm57ZmxpcENvb3JkczpvLHNldFByZXNzZWQ6aCxzZXRDdXJyZW50OmksZ2V0T2Zmc2V0OmosbW92ZU9mZnNldDprLGdldENvcm5lcjpsLGdldEZpeGVkOm19fSgpLGJhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZihhLGIpe2UubGVmdC5jc3Moe2hlaWdodDppKGIpfSksZS5yaWdodC5jc3Moe2hlaWdodDppKGIpfSl9ZnVuY3Rpb24gZygpe3JldHVybiBoKF8uZ2V0Rml4ZWQoKSl9ZnVuY3Rpb24gaChhKXtlLnRvcC5jc3Moe2xlZnQ6aShhLngpLHdpZHRoOmkoYS53KSxoZWlnaHQ6aShhLnkpfSksZS5ib3R0b20uY3NzKHt0b3A6aShhLnkyKSxsZWZ0OmkoYS54KSx3aWR0aDppKGEudyksaGVpZ2h0OmkoRi1hLnkyKX0pLGUucmlnaHQuY3NzKHtsZWZ0OmkoYS54Miksd2lkdGg6aShFLWEueDIpfSksZS5sZWZ0LmNzcyh7d2lkdGg6aShhLngpfSl9ZnVuY3Rpb24gaigpe3JldHVybiBhKCI8ZGl2IC8+IikuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLGJhY2tncm91bmRDb2xvcjpkLnNoYWRlQ29sb3J8fGQuYmdDb2xvcn0pLmFwcGVuZFRvKGMpfWZ1bmN0aW9uIGsoKXtifHwoYj0hMCxjLmluc2VydEJlZm9yZShEKSxnKCksYmIuc2V0QmdPcGFjaXR5KDEsMCwxKSxILmhpZGUoKSxsKGQuc2hhZGVDb2xvcnx8ZC5iZ0NvbG9yLDEpLGJiLgppc0F3YWtlKCk/bihkLmJnT3BhY2l0eSwxKTpuKDEsMSkpfWZ1bmN0aW9uIGwoYSxiKXticShwKCksYSxiKX1mdW5jdGlvbiBtKCl7YiYmKGMucmVtb3ZlKCksSC5zaG93KCksYj0hMSxiYi5pc0F3YWtlKCk/YmIuc2V0QmdPcGFjaXR5KGQuYmdPcGFjaXR5LDEsMSk6KGJiLnNldEJnT3BhY2l0eSgxLDEsMSksYmIuZGlzYWJsZUhhbmRsZXMoKSksYnEoRywwLDEpKX1mdW5jdGlvbiBuKGEsZSl7YiYmKGQuYmdGYWRlJiYhZT9jLmFuaW1hdGUoe29wYWNpdHk6MS1hfSx7cXVldWU6ITEsZHVyYXRpb246ZC5mYWRlVGltZX0pOmMuY3NzKHtvcGFjaXR5OjEtYX0pKX1mdW5jdGlvbiBvKCl7ZC5zaGFkZT9rKCk6bSgpLGJiLmlzQXdha2UoKSYmbihkLmJnT3BhY2l0eSl9ZnVuY3Rpb24gcCgpe3JldHVybiBjLmNoaWxkcmVuKCl9dmFyIGI9ITEsYz1hKCI8ZGl2IC8+IikuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLHpJbmRleDoyNDAsb3BhY2l0eTowfSksZT17dG9wOmooKSxsZWZ0OmooKS5oZWlnaHQoRikscmlnaHQ6aigpLmhlaWdodChGKSxib3R0b206aigpfTtyZXR1cm57dXBkYXRlOmcsdXBkYXRlUmF3OmgsZ2V0U2hhZGVzOnAsc2V0QmdDb2xvcjpsLGVuYWJsZTprLGRpc2FibGU6bSxyZXNpemU6ZixyZWZyZXNoOm8sb3BhY2l0eTpufX0oKSxiYj1mdW5jdGlvbigpe2Z1bmN0aW9uIGsoYil7dmFyIGM9YSgiPGRpdiAvPiIpLmNzcyh7cG9zaXRpb246ImFic29sdXRlIixvcGFjaXR5OmQuYm9yZGVyT3BhY2l0eX0pLmFkZENsYXNzKGooYikpO3JldHVybiBJLmFwcGVuZChjKSxjfWZ1bmN0aW9uIGwoYixjKXt2YXIgZD1hKCI8ZGl2IC8+IikubW91c2Vkb3duKHMoYikpLmNzcyh7Y3Vyc29yOmIrIi1yZXNpemUiLHBvc2l0aW9uOiJhYnNvbHV0ZSIsekluZGV4OmN9KS5hZGRDbGFzcygib3JkLSIrYik7cmV0dXJuIFouc3VwcG9ydCYmZC5iaW5kKCJ0b3VjaHN0YXJ0Lmpjcm9wIixaLmNyZWF0ZURyYWdnZXIoYikpLEouYXBwZW5kKGQpLGR9ZnVuY3Rpb24gbShhKXt2YXIgYj1kLmhhbmRsZVNpemUsZT1sKGEsYysrCikuY3NzKHtvcGFjaXR5OmQuaGFuZGxlT3BhY2l0eX0pLmFkZENsYXNzKGooImhhbmRsZSIpKTtyZXR1cm4gYiYmZS53aWR0aChiKS5oZWlnaHQoYiksZX1mdW5jdGlvbiBuKGEpe3JldHVybiBsKGEsYysrKS5hZGRDbGFzcygiamNyb3AtZHJhZ2JhciIpfWZ1bmN0aW9uIG8oYSl7dmFyIGI7Zm9yKGI9MDtiPGEubGVuZ3RoO2IrKylnW2FbYl1dPW4oYVtiXSl9ZnVuY3Rpb24gcChhKXt2YXIgYixjO2ZvcihjPTA7YzxhLmxlbmd0aDtjKyspe3N3aXRjaChhW2NdKXtjYXNlIm4iOmI9ImhsaW5lIjticmVhaztjYXNlInMiOmI9ImhsaW5lIGJvdHRvbSI7YnJlYWs7Y2FzZSJlIjpiPSJ2bGluZSByaWdodCI7YnJlYWs7Y2FzZSJ3IjpiPSJ2bGluZSJ9ZVthW2NdXT1rKGIpfX1mdW5jdGlvbiBxKGEpe3ZhciBiO2ZvcihiPTA7YjxhLmxlbmd0aDtiKyspZlthW2JdXT1tKGFbYl0pfWZ1bmN0aW9uIHIoYSxiKXtkLnNoYWRlfHxILmNzcyh7dG9wOmkoLWIpLGxlZnQ6aSgtYSl9KSxLLmNzcyh7dG9wOmkoYiksbGVmdDppKGEpfSl9ZnVuY3Rpb24gdChhLGIpe0sud2lkdGgoTWF0aC5yb3VuZChhKSkuaGVpZ2h0KE1hdGgucm91bmQoYikpfWZ1bmN0aW9uIHYoKXt2YXIgYT1fLmdldEZpeGVkKCk7Xy5zZXRQcmVzc2VkKFthLngsYS55XSksXy5zZXRDdXJyZW50KFthLngyLGEueTJdKSx3KCl9ZnVuY3Rpb24gdyhhKXtpZihiKXJldHVybiB4KGEpfWZ1bmN0aW9uIHgoYSl7dmFyIGM9Xy5nZXRGaXhlZCgpO3QoYy53LGMuaCkscihjLngsYy55KSxkLnNoYWRlJiZiYS51cGRhdGVSYXcoYyksYnx8QSgpLGE/ZC5vblNlbGVjdC5jYWxsKGJzLHUoYykpOmQub25DaGFuZ2UuY2FsbChicyx1KGMpKX1mdW5jdGlvbiB6KGEsYyxlKXtpZighYiYmIWMpcmV0dXJuO2QuYmdGYWRlJiYhZT9ELmFuaW1hdGUoe29wYWNpdHk6YX0se3F1ZXVlOiExLGR1cmF0aW9uOmQuZmFkZVRpbWV9KTpELmNzcygib3BhY2l0eSIsYSl9ZnVuY3Rpb24gQSgpe0suc2hvdygpLGQuc2hhZGU/YmEub3BhY2l0eShPKTp6KE8sITApLGI9ITB9ZnVuY3Rpb24gQgooKXtGKCksSy5oaWRlKCksZC5zaGFkZT9iYS5vcGFjaXR5KDEpOnooMSksYj0hMSxkLm9uUmVsZWFzZS5jYWxsKGJzKX1mdW5jdGlvbiBDKCl7aCYmSi5zaG93KCl9ZnVuY3Rpb24gRSgpe2g9ITA7aWYoZC5hbGxvd1Jlc2l6ZSlyZXR1cm4gSi5zaG93KCksITB9ZnVuY3Rpb24gRigpe2g9ITEsSi5oaWRlKCl9ZnVuY3Rpb24gRyhhKXthPyhYPSEwLEYoKSk6KFg9ITEsRSgpKX1mdW5jdGlvbiBMKCl7RyghMSksdigpfXZhciBiLGM9MzcwLGU9e30sZj17fSxnPXt9LGg9ITE7ZC5kcmFnRWRnZXMmJmEuaXNBcnJheShkLmNyZWF0ZURyYWdiYXJzKSYmbyhkLmNyZWF0ZURyYWdiYXJzKSxhLmlzQXJyYXkoZC5jcmVhdGVIYW5kbGVzKSYmcShkLmNyZWF0ZUhhbmRsZXMpLGQuZHJhd0JvcmRlcnMmJmEuaXNBcnJheShkLmNyZWF0ZUJvcmRlcnMpJiZwKGQuY3JlYXRlQm9yZGVycyksYShkb2N1bWVudCkuYmluZCgidG91Y2hzdGFydC5qY3JvcC1pb3MiLGZ1bmN0aW9uKGIpe2EoYi5jdXJyZW50VGFyZ2V0KS5oYXNDbGFzcygiamNyb3AtdHJhY2tlciIpJiZiLnN0b3BQcm9wYWdhdGlvbigpfSk7dmFyIE09eSgpLm1vdXNlZG93bihzKCJtb3ZlIikpLmNzcyh7Y3Vyc29yOiJtb3ZlIixwb3NpdGlvbjoiYWJzb2x1dGUiLHpJbmRleDozNjB9KTtyZXR1cm4gWi5zdXBwb3J0JiZNLmJpbmQoInRvdWNoc3RhcnQuamNyb3AiLFouY3JlYXRlRHJhZ2dlcigibW92ZSIpKSxJLmFwcGVuZChNKSxGKCkse3VwZGF0ZVZpc2libGU6dyx1cGRhdGU6eCxyZWxlYXNlOkIscmVmcmVzaDp2LGlzQXdha2U6ZnVuY3Rpb24oKXtyZXR1cm4gYn0sc2V0Q3Vyc29yOmZ1bmN0aW9uKGEpe00uY3NzKCJjdXJzb3IiLGEpfSxlbmFibGVIYW5kbGVzOkUsZW5hYmxlT25seTpmdW5jdGlvbigpe2g9ITB9LHNob3dIYW5kbGVzOkMsZGlzYWJsZUhhbmRsZXM6RixhbmltTW9kZTpHLHNldEJnT3BhY2l0eTp6LGRvbmU6TH19KCksYmM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBmKGIpe00uY3NzKHt6SW5kZXg6NDUwfSksYj9hKGRvY3VtZW50KS5iaW5kKCJ0b3VjaG1vdmUuamNyb3AiCixrKS5iaW5kKCJ0b3VjaGVuZC5qY3JvcCIsbCk6ZSYmYShkb2N1bWVudCkuYmluZCgibW91c2Vtb3ZlLmpjcm9wIixoKS5iaW5kKCJtb3VzZXVwLmpjcm9wIixpKX1mdW5jdGlvbiBnKCl7TS5jc3Moe3pJbmRleDoyOTB9KSxhKGRvY3VtZW50KS51bmJpbmQoIi5qY3JvcCIpfWZ1bmN0aW9uIGgoYSl7cmV0dXJuIGIobShhKSksITF9ZnVuY3Rpb24gaShhKXtyZXR1cm4gYS5wcmV2ZW50RGVmYXVsdCgpLGEuc3RvcFByb3BhZ2F0aW9uKCksVyYmKFc9ITEsYyhtKGEpKSxiYi5pc0F3YWtlKCkmJmQub25TZWxlY3QuY2FsbChicyx1KF8uZ2V0Rml4ZWQoKSkpLGcoKSxiPWZ1bmN0aW9uKCl7fSxjPWZ1bmN0aW9uKCl7fSksITF9ZnVuY3Rpb24gaihhLGQsZSl7cmV0dXJuIFc9ITAsYj1hLGM9ZCxmKGUpLCExfWZ1bmN0aW9uIGsoYSl7cmV0dXJuIGIobShaLmNmaWx0ZXIoYSkpKSwhMX1mdW5jdGlvbiBsKGEpe3JldHVybiBpKFouY2ZpbHRlcihhKSl9ZnVuY3Rpb24gbihhKXtNLmNzcygiY3Vyc29yIixhKX12YXIgYj1mdW5jdGlvbigpe30sYz1mdW5jdGlvbigpe30sZT1kLnRyYWNrRG9jdW1lbnQ7cmV0dXJuIGV8fE0ubW91c2Vtb3ZlKGgpLm1vdXNldXAoaSkubW91c2VvdXQoaSksRC5iZWZvcmUoTSkse2FjdGl2YXRlSGFuZGxlcnM6aixzZXRDdXJzb3I6bn19KCksYmQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7ZC5rZXlTdXBwb3J0JiYoYi5zaG93KCksYi5mb2N1cygpKX1mdW5jdGlvbiBmKGEpe2IuaGlkZSgpfWZ1bmN0aW9uIGcoYSxiLGMpe2QuYWxsb3dNb3ZlJiYoXy5tb3ZlT2Zmc2V0KFtiLGNdKSxiYi51cGRhdGVWaXNpYmxlKCEwKSksYS5wcmV2ZW50RGVmYXVsdCgpLGEuc3RvcFByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gaShhKXtpZihhLmN0cmxLZXl8fGEubWV0YUtleSlyZXR1cm4hMDtZPWEuc2hpZnRLZXk/ITA6ITE7dmFyIGI9WT8xMDoxO3N3aXRjaChhLmtleUNvZGUpe2Nhc2UgMzc6ZyhhLC1iLDApO2JyZWFrO2Nhc2UgMzk6ZyhhLGIsMCk7YnJlYWs7Y2FzZSAzODpnKGEsMCwtYik7YnJlYWs7CmNhc2UgNDA6ZyhhLDAsYik7YnJlYWs7Y2FzZSAyNzpkLmFsbG93U2VsZWN0JiZiYi5yZWxlYXNlKCk7YnJlYWs7Y2FzZSA5OnJldHVybiEwfXJldHVybiExfXZhciBiPWEoJzxpbnB1dCB0eXBlPSJyYWRpbyIgLz4nKS5jc3Moe3Bvc2l0aW9uOiJmaXhlZCIsbGVmdDoiLTEyMHB4Iix3aWR0aDoiMTJweCJ9KS5hZGRDbGFzcygiamNyb3Ata2V5bWdyIiksYz1hKCI8ZGl2IC8+IikuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLG92ZXJmbG93OiJoaWRkZW4ifSkuYXBwZW5kKGIpO3JldHVybiBkLmtleVN1cHBvcnQmJihiLmtleWRvd24oaSkuYmx1cihmKSxofHwhZC5maXhlZFN1cHBvcnQ/KGIuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLGxlZnQ6Ii0yMHB4In0pLGMuYXBwZW5kKGIpLmluc2VydEJlZm9yZShEKSk6Yi5pbnNlcnRCZWZvcmUoRCkpLHt3YXRjaEtleXM6ZX19KCk7Wi5zdXBwb3J0JiZNLmJpbmQoInRvdWNoc3RhcnQuamNyb3AiLFoubmV3U2VsZWN0aW9uKSxKLmhpZGUoKSxicighMCk7dmFyIGJzPXtzZXRJbWFnZTpicCxhbmltYXRlVG86YmYsc2V0U2VsZWN0OmJnLHNldE9wdGlvbnM6YmssdGVsbFNlbGVjdDpiaSx0ZWxsU2NhbGVkOmJqLHNldENsYXNzOmJlLGRpc2FibGU6YmwsZW5hYmxlOmJtLGNhbmNlbDpibixyZWxlYXNlOmJiLnJlbGVhc2UsZGVzdHJveTpibyxmb2N1czpiZC53YXRjaEtleXMsZ2V0Qm91bmRzOmZ1bmN0aW9uKCl7cmV0dXJuW0UqVCxGKlVdfSxnZXRXaWRnZXRTaXplOmZ1bmN0aW9uKCl7cmV0dXJuW0UsRl19LGdldFNjYWxlRmFjdG9yOmZ1bmN0aW9uKCl7cmV0dXJuW1QsVV19LGdldE9wdGlvbnM6ZnVuY3Rpb24oKXtyZXR1cm4gZH0sdWk6e2hvbGRlcjpHLHNlbGVjdGlvbjpLfX07cmV0dXJuIGcmJkcuYmluZCgic2VsZWN0c3RhcnQiLGZ1bmN0aW9uKCl7cmV0dXJuITF9KSxBLmRhdGEoIkpjcm9wIixicyksYnN9LGEuZm4uSmNyb3A9ZnVuY3Rpb24oYixjKXt2YXIgZDtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7aWYoYSh0aGlzKS5kYXRhKCJKY3JvcCIpKXtpZigKYj09PSJhcGkiKXJldHVybiBhKHRoaXMpLmRhdGEoIkpjcm9wIik7YSh0aGlzKS5kYXRhKCJKY3JvcCIpLnNldE9wdGlvbnMoYil9ZWxzZSB0aGlzLnRhZ05hbWU9PSJJTUciP2EuSmNyb3AuTG9hZGVyKHRoaXMsZnVuY3Rpb24oKXthKHRoaXMpLmNzcyh7ZGlzcGxheToiYmxvY2siLHZpc2liaWxpdHk6ImhpZGRlbiJ9KSxkPWEuSmNyb3AodGhpcyxiKSxhLmlzRnVuY3Rpb24oYykmJmMuY2FsbChkKX0pOihhKHRoaXMpLmNzcyh7ZGlzcGxheToiYmxvY2siLHZpc2liaWxpdHk6ImhpZGRlbiJ9KSxkPWEuSmNyb3AodGhpcyxiKSxhLmlzRnVuY3Rpb24oYykmJmMuY2FsbChkKSl9KSx0aGlzfSxhLkpjcm9wLkxvYWRlcj1mdW5jdGlvbihiLGMsZCl7ZnVuY3Rpb24gZygpe2YuY29tcGxldGU/KGUudW5iaW5kKCIuamNsb2FkZXIiKSxhLmlzRnVuY3Rpb24oYykmJmMuY2FsbChmKSk6d2luZG93LnNldFRpbWVvdXQoZyw1MCl9dmFyIGU9YShiKSxmPWVbMF07ZS5iaW5kKCJsb2FkLmpjbG9hZGVyIixnKS5iaW5kKCJlcnJvci5qY2xvYWRlciIsZnVuY3Rpb24oYil7ZS51bmJpbmQoIi5qY2xvYWRlciIpLGEuaXNGdW5jdGlvbihkKSYmZC5jYWxsKGYpfSksZi5jb21wbGV0ZSYmYS5pc0Z1bmN0aW9uKGMpJiYoZS51bmJpbmQoIi5qY2xvYWRlciIpLGMuY2FsbChmKSl9LGEuSmNyb3AuZGVmYXVsdHM9e2FsbG93U2VsZWN0OiEwLGFsbG93TW92ZTohMCxhbGxvd1Jlc2l6ZTohMCx0cmFja0RvY3VtZW50OiEwLGJhc2VDbGFzczoiamNyb3AiLGFkZENsYXNzOm51bGwsYmdDb2xvcjoiYmxhY2siLGJnT3BhY2l0eTouNixiZ0ZhZGU6ITEsYm9yZGVyT3BhY2l0eTouNCxoYW5kbGVPcGFjaXR5Oi41LGhhbmRsZVNpemU6bnVsbCxhc3BlY3RSYXRpbzowLGtleVN1cHBvcnQ6ITAsY3JlYXRlSGFuZGxlczpbIm4iLCJzIiwiZSIsInciLCJudyIsIm5lIiwic2UiLCJzdyJdLGNyZWF0ZURyYWdiYXJzOlsibiIsInMiLCJlIiwidyJdLGNyZWF0ZUJvcmRlcnM6WyJuIiwicyIsImUiLCJ3Il0sZHJhd0JvcmRlcnM6ITAsZHJhZ0VkZ2VzCjohMCxmaXhlZFN1cHBvcnQ6ITAsdG91Y2hTdXBwb3J0Om51bGwsc2hhZGU6bnVsbCxib3hXaWR0aDowLGJveEhlaWdodDowLGJvdW5kYXJ5OjIsZmFkZVRpbWU6NDAwLGFuaW1hdGlvbkRlbGF5OjIwLHN3aW5nU3BlZWQ6MyxtaW5TZWxlY3Q6WzAsMF0sbWF4U2l6ZTpbMCwwXSxtaW5TaXplOlswLDBdLG9uQ2hhbmdlOmZ1bmN0aW9uKCl7fSxvblNlbGVjdDpmdW5jdGlvbigpe30sb25EYmxDbGljazpmdW5jdGlvbigpe30sb25SZWxlYXNlOmZ1bmN0aW9uKCl7fX19KShqUXVlcnkpOwkKCi8qanF1ZXJ5Lm5pY2VzY3JvbGwgMy42LjggSW51WWFrc2EqLwohZnVuY3Rpb24oeCl7ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyJqcXVlcnkiXSx4KToib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9eChyZXF1aXJlKCJqcXVlcnkiKSk6eChqUXVlcnkpfShmdW5jdGlvbih4KXt2YXIgYT0hMSxiPSExLGM9MCxkPTJlMyxlPTAsZj1bIndlYmtpdCIsIm1zIiwibW96IiwibyJdLGc9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZXx8ITEsaD13aW5kb3cuY2FuY2VsQW5pbWF0aW9uRnJhbWV8fCExO2lmKCFnKWZvcih2YXIgaSBpbiBmKXt2YXIgaj1mW2ldO2lmKGc9d2luZG93W2orIlJlcXVlc3RBbmltYXRpb25GcmFtZSJdKXtoPXdpbmRvd1tqKyJDYW5jZWxBbmltYXRpb25GcmFtZSJdfHx3aW5kb3dbaisiQ2FuY2VsUmVxdWVzdEFuaW1hdGlvbkZyYW1lIl07YnJlYWt9fXZhciBrPXdpbmRvdy5NdXRhdGlvbk9ic2VydmVyfHx3aW5kb3cuV2ViS2l0TXV0YXRpb25PYnNlcnZlcnx8ITEsbD17emluZGV4OiJhdXRvIixjdXJzb3JvcGFjaXR5bWluOjAsY3Vyc29yb3BhY2l0eW1heDoxLGN1cnNvcmNvbG9yOiIjNDI0MjQyIixjdXJzb3J3aWR0aDoiNXB4IixjdXJzb3Jib3JkZXI6IjFweCBzb2xpZCAjZmZmIixjdXJzb3Jib3JkZXJyYWRpdXM6IjVweCIsc2Nyb2xsc3BlZWQ6NjAsbW91c2VzY3JvbGxzdGVwOjcwLHRvdWNoYmVoYXZpb3I6ITEsaHdhY2NlbGVyYXRpb246ITAsdXNldHJhbnNpdGlvbjohMCxib3h6b29tOiExLGRibGNsaWNrem9vbTohMCxnZXN0dXJlem9vbTohMCxncmFiY3Vyc29yZW5hYmxlZDohMCxhdXRvaGlkZW1vZGU6ITAsYmFja2dyb3VuZDoiIixpZnJhbWVhdXRvcmVzaXplOiEwLGN1cnNvcm1pbmhlaWdodDozMixwcmVzZXJ2ZW5hdGl2ZXNjcm9sbGluZzohMCxyYWlsb2Zmc2V0OiExLHJhaWxob2Zmc2V0OiExLGJvdW5jZXNjcm9sbDohMCxzcGFjZWJhcmVuYWJsZWQ6ITAscmFpbHBhZGRpbmc6e3RvcDowLHJpZ2h0OjAsbGVmdDowLGJvdHRvbTowfSxkaXNhYmxlb3V0bGluZTohMCxob3JpenJhaWxlbmFibGVkOiEwLHJhaWxhbGlnbjoicmlnaHQiLHJhaWx2YWxpZ246ImJvdHRvbSIsZW5hYmxldHJhbnNsYXRlM2Q6ITAsZW5hYmxlbW91c2V3aGVlbDohMCxlbmFibGVrZXlib2FyZDohMCxzbW9vdGhzY3JvbGw6ITAsc2Vuc2l0aXZlcmFpbDohMCxlbmFibGVtb3VzZWxvY2thcGk6ITAsY3Vyc29yZml4ZWRoZWlnaHQ6ITEsZGlyZWN0aW9ubG9ja2RlYWR6b25lOjYsaGlkZWN1cnNvcmRlbGF5OjQwMCxuYXRpdmVwYXJlbnRzY3JvbGxpbmc6ITAsZW5hYmxlc2Nyb2xsb25zZWxlY3Rpb246ITAsb3ZlcmZsb3d4OiEwLG92ZXJmbG93eTohMCxjdXJzb3JkcmFnc3BlZWQ6LjMscnRsbW9kZToiYXV0byIsY3Vyc29yZHJhZ29udG91Y2g6ITEsb25lYXhpc21vdXNlbW9kZToiYXV0byIsc2NyaXB0cGF0aDpmdW5jdGlvbigpe3ZhciB4O3JldHVybiAwPCh4PSh4PWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKSkubGVuZ3RoP3hbeC5sZW5ndGgtMV0uc3JjLnNwbGl0KCI/IilbMF06IiIpLnNwbGl0KCIvIikubGVuZ3RoP3guc3BsaXQoIi8iKS5zbGljZSgwLC0xKS5qb2luKCIvIikrIi8iOiIifSgpLHByZXZlbnRtdWx0aXRvdWNoc2Nyb2xsaW5nOiEwLGRpc2FibGVtdXRhdGlvbm9ic2VydmVyOiExfSxtPSExLG49ZnVuY3Rpb24oKXtpZihtKXJldHVybiBtO3ZhciB4PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIkRJViIpLGE9eC5zdHlsZSxiPW5hdmlnYXRvci51c2VyQWdlbnQsYz1uYXZpZ2F0b3IucGxhdGZvcm0sZD17aGFzcG9pbnRlcmxvY2s6InBvaW50ZXJMb2NrRWxlbWVudCJpbiBkb2N1bWVudHx8IndlYmtpdFBvaW50ZXJMb2NrRWxlbWVudCJpbiBkb2N1bWVudHx8Im1velBvaW50ZXJMb2NrRWxlbWVudCJpbiBkb2N1bWVudH07ZC5pc29wZXJhPSJvcGVyYSJpbiB3aW5kb3csZC5pc29wZXJhMTI9ZC5pc29wZXJhJiYiZ2V0VXNlck1lZGlhImluIG5hdmlnYXRvcixkLmlzb3BlcmFtaW5pPSJbb2JqZWN0IE9wZXJhTWluaV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHdpbmRvdy5vcGVyYW1pbmkpLGQuaXNpZT0iYWxsImluIGRvY3VtZW50JiYiYXR0YWNoRXZlbnQiaW4geCYmIWQuaXNvcGVyYSxkLmlzaWVvbGQ9ZC5pc2llJiYhKCJtc0ludGVycG9sYXRpb25Nb2RlImluIGEpLGQuaXNpZTc9ZC5pc2llJiYhZC5pc2llb2xkJiYoISgiZG9jdW1lbnRNb2RlImluIGRvY3VtZW50KXx8Nz09ZG9jdW1lbnQuZG9jdW1lbnRNb2RlKSxkLmlzaWU4PWQuaXNpZSYmImRvY3VtZW50TW9kZSJpbiBkb2N1bWVudCYmOD09ZG9jdW1lbnQuZG9jdW1lbnRNb2RlLGQuaXNpZTk9ZC5pc2llJiYicGVyZm9ybWFuY2UiaW4gd2luZG93JiY5PT1kb2N1bWVudC5kb2N1bWVudE1vZGUsZC5pc2llMTA9ZC5pc2llJiYicGVyZm9ybWFuY2UiaW4gd2luZG93JiYxMD09ZG9jdW1lbnQuZG9jdW1lbnRNb2RlLGQuaXNpZTExPSJtc1JlcXVlc3RGdWxsc2NyZWVuImluIHgmJjExPD1kb2N1bWVudC5kb2N1bWVudE1vZGUsZC5pc2llZWRnZTEyPW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL0VkZ2VcLzEyXC4vKSxkLmlzaWVlZGdlPSJtc092ZXJmbG93U3R5bGUiaW4geCxkLmlzbW9kZXJuaWU9ZC5pc2llMTF8fGQuaXNpZWVkZ2UsZC5pc2llOW1vYmlsZT0vaWVtb2JpbGUuOS9pLnRlc3QoYiksZC5pc2llOW1vYmlsZSYmKGQuaXNpZTk9ITEpLGQuaXNpZTdtb2JpbGU9IWQuaXNpZTltb2JpbGUmJmQuaXNpZTcmJi9pZW1vYmlsZS9pLnRlc3QoYiksZC5pc21vemlsbGE9Ik1vekFwcGVhcmFuY2UiaW4gYSxkLmlzd2Via2l0PSJXZWJraXRBcHBlYXJhbmNlImluIGEsZC5pc2Nocm9tZT0iY2hyb21lImluIHdpbmRvdyxkLmlzY2hyb21lMzg9ZC5pc2Nocm9tZSYmInRvdWNoQWN0aW9uImluIGEsZC5pc2Nocm9tZTIyPSFkLmlzY2hyb21lMzgmJmQuaXNjaHJvbWUmJmQuaGFzcG9pbnRlcmxvY2ssZC5pc2Nocm9tZTI2PSFkLmlzY2hyb21lMzgmJmQuaXNjaHJvbWUmJiJ0cmFuc2l0aW9uImluIGEsZC5jYW50b3VjaD0ib250b3VjaHN0YXJ0ImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudHx8Im9udG91Y2hzdGFydCJpbiB3aW5kb3csZC5oYXN3M2N0b3VjaD0hIXdpbmRvdy5Qb2ludGVyRXZlbnQmJigwPG5hdmlnYXRvci5NYXhUb3VjaFBvaW50c3x8MDxuYXZpZ2F0b3IubXNNYXhUb3VjaFBvaW50cyksZC5oYXNtc3RvdWNoPSFkLmhhc3czY3RvdWNoJiYod2luZG93Lk1TUG9pbnRlckV2ZW50fHwhMSksZC5pc21hYz0vXm1hYyQvaS50ZXN0KGMpLGQuaXNpb3M9ZC5jYW50b3VjaCYmL2lwaG9uZXxpcGFkfGlwb2QvaS50ZXN0KGMpLGQuaXNpb3M0PWQuaXNpb3MmJiEoInNlYWwiaW4gT2JqZWN0KSxkLmlzaW9zNz1kLmlzaW9zJiYid2Via2l0SGlkZGVuImluIGRvY3VtZW50LGQuaXNpb3M4PWQuaXNpb3MmJiJoaWRkZW4iaW4gZG9jdW1lbnQsZC5pc2FuZHJvaWQ9L2FuZHJvaWQvaS50ZXN0KGIpLGQuaGFzZXZlbnRsaXN0ZW5lcj0iYWRkRXZlbnRMaXN0ZW5lciJpbiB4LGQudHJzdHlsZT0hMSxkLmhhc3RyYW5zZm9ybT0hMSxkLmhhc3RyYW5zbGF0ZTNkPSExLGQudHJhbnNpdGlvbnN0eWxlPSExLGQuaGFzdHJhbnNpdGlvbj0hMSxkLnRyYW5zaXRpb25lbmQ9ITEsYz1bInRyYW5zZm9ybSIsIm1zVHJhbnNmb3JtIiwid2Via2l0VHJhbnNmb3JtIiwiTW96VHJhbnNmb3JtIiwiT1RyYW5zZm9ybSJdO2ZvcihiPTA7YjxjLmxlbmd0aDtiKyspaWYodm9pZCAwIT09YVtjW2JdXSl7ZC50cnN0eWxlPWNbYl07YnJlYWt9ZC5oYXN0cmFuc2Zvcm09ISFkLnRyc3R5bGUsZC5oYXN0cmFuc2Zvcm0mJihhW2QudHJzdHlsZV09InRyYW5zbGF0ZTNkKDFweCwycHgsM3B4KSIsZC5oYXN0cmFuc2xhdGUzZD0vdHJhbnNsYXRlM2QvLnRlc3QoYVtkLnRyc3R5bGVdKSksZC50cmFuc2l0aW9uc3R5bGU9ITEsZC5wcmVmaXhzdHlsZT0iIixkLnRyYW5zaXRpb25lbmQ9ITE7Yz0idHJhbnNpdGlvbiB3ZWJraXRUcmFuc2l0aW9uIG1zVHJhbnNpdGlvbiBNb3pUcmFuc2l0aW9uIE9UcmFuc2l0aW9uIE9UcmFuc2l0aW9uIEtodG1sVHJhbnNpdGlvbiIuc3BsaXQoIiAiKTt2YXIgZT0iIC13ZWJraXQtIC1tcy0gLW1vei0gLW8tIC1vIC1raHRtbC0iLnNwbGl0KCIgIiksZj0idHJhbnNpdGlvbmVuZCB3ZWJraXRUcmFuc2l0aW9uRW5kIG1zVHJhbnNpdGlvbkVuZCB0cmFuc2l0aW9uZW5kIG90cmFuc2l0aW9uZW5kIG9UcmFuc2l0aW9uRW5kIEtodG1sVHJhbnNpdGlvbkVuZCIuc3BsaXQoIiAiKTtmb3IoYj0wO2I8Yy5sZW5ndGg7YisrKWlmKGNbYl1pbiBhKXtkLnRyYW5zaXRpb25zdHlsZT1jW2JdLGQucHJlZml4c3R5bGU9ZVtiXSxkLnRyYW5zaXRpb25lbmQ9ZltiXTticmVha31kLmlzY2hyb21lMjYmJihkLnByZWZpeHN0eWxlPWVbMV0pLGQuaGFzdHJhbnNpdGlvbj1kLnRyYW5zaXRpb25zdHlsZTt4Ontmb3IoYj1bImdyYWIiLCItd2Via2l0LWdyYWIiLCItbW96LWdyYWIiXSwoZC5pc2Nocm9tZSYmIWQuaXNjaHJvbWUzOHx8ZC5pc2llKSYmKGI9W10pLGM9MDtjPGIubGVuZ3RoO2MrKylpZihlPWJbY10sYS5jdXJzb3I9ZSxhLmN1cnNvcj09ZSl7YT1lO2JyZWFrIHh9YT0idXJsKC8vcGF0cmljaWFwb3J0Zm9saW8uZ29vZ2xlY29kZS5jb20vZmlsZXMvb3BlbmhhbmQuY3VyKSxuLXJlc2l6ZSJ9cmV0dXJuIGQuY3Vyc29yZ3JhYnZhbHVlPWEsZC5oYXNtb3VzZWNhcHR1cmU9InNldENhcHR1cmUiaW4geCxkLmhhc011dGF0aW9uT2JzZXJ2ZXI9ITEhPT1rLG09ZH0sbz1mdW5jdGlvbihmLGkpe2Z1bmN0aW9uIGooKXt2YXIgeD1zLmRvYy5jc3Modi50cnN0eWxlKTtyZXR1cm4hKCF4fHwibWF0cml4IiE9eC5zdWJzdHIoMCw2KSkmJngucmVwbGFjZSgvXi4qXCgoLiopXCkkL2csIiQxIikucmVwbGFjZSgvcHgvZywiIikuc3BsaXQoLywgKy8pfWZ1bmN0aW9uIG0oKXt2YXIgeD1zLndpbjtpZigiekluZGV4ImluIHgpcmV0dXJuIHguekluZGV4KCk7Zm9yKDswPHgubGVuZ3RoJiY5IT14WzBdLm5vZGVUeXBlOyl7dmFyIGE9eC5jc3MoInpJbmRleCIpO2lmKCFpc05hTihhKSYmMCE9YSlyZXR1cm4gcGFyc2VJbnQoYSk7eD14LnBhcmVudCgpfXJldHVybiExfWZ1bmN0aW9uIG8oeCxhLGIpe3JldHVybiBhPXguY3NzKGEpLHg9cGFyc2VGbG9hdChhKSxpc05hTih4KT8oYj0zPT0oeD1BW2FdfHwwKT9iP3Mud2luLm91dGVySGVpZ2h0KCktcy53aW4uaW5uZXJIZWlnaHQoKTpzLndpbi5vdXRlcldpZHRoKCktcy53aW4uaW5uZXJXaWR0aCgpOjEscy5pc2llOCYmeCYmKHgrPTEpLGI/eDowKTp4fWZ1bmN0aW9uIHEoeCxhLGIsYyl7cy5fYmluZCh4LGEsZnVuY3Rpb24oYyl7dmFyIGQ9e29yaWdpbmFsOmM9Y3x8d2luZG93LmV2ZW50LHRhcmdldDpjLnRhcmdldHx8Yy5zcmNFbGVtZW50LHR5cGU6IndoZWVsIixkZWx0YU1vZGU6Ik1vek1vdXNlUGl4ZWxTY3JvbGwiPT1jLnR5cGU/MDoxLGRlbHRhWDowLGRlbHRhWjowLHByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7cmV0dXJuIGMucHJldmVudERlZmF1bHQ/Yy5wcmV2ZW50RGVmYXVsdCgpOmMucmV0dXJuVmFsdWU9ITEsITF9LHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjpmdW5jdGlvbigpe2Muc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uP2Muc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk6Yy5jYW5jZWxCdWJibGU9ITB9fTtyZXR1cm4ibW91c2V3aGVlbCI9PWE/KGMud2hlZWxEZWx0YVgmJihkLmRlbHRhWD0tLjAyNSpjLndoZWVsRGVsdGFYKSxjLndoZWVsRGVsdGFZJiYoZC5kZWx0YVk9LS4wMjUqYy53aGVlbERlbHRhWSksZC5kZWx0YVl8fGQuZGVsdGFYfHwoZC5kZWx0YVk9LS4wMjUqYy53aGVlbERlbHRhKSk6ZC5kZWx0YVk9Yy5kZXRhaWwsYi5jYWxsKHgsZCl9LGMpfWZ1bmN0aW9uIHIoeCxhLGIpe3ZhciBjLGQ7aWYoMD09eC5kZWx0YU1vZGU/KGM9LU1hdGguZmxvb3Iocy5vcHQubW91c2VzY3JvbGxzdGVwLzU0KnguZGVsdGFYKSxkPS1NYXRoLmZsb29yKHMub3B0Lm1vdXNlc2Nyb2xsc3RlcC81NCp4LmRlbHRhWSkpOjE9PXguZGVsdGFNb2RlJiYoYz0tTWF0aC5mbG9vcih4LmRlbHRhWCpzLm9wdC5tb3VzZXNjcm9sbHN0ZXApLGQ9LU1hdGguZmxvb3IoeC5kZWx0YVkqcy5vcHQubW91c2VzY3JvbGxzdGVwKSksYSYmcy5vcHQub25lYXhpc21vdXNlbW9kZSYmMD09YyYmZCYmKGM9ZCxkPTAsYiYmKDA+Yz9zLmdldFNjcm9sbExlZnQoKT49cy5wYWdlLm1heHc6MD49cy5nZXRTY3JvbGxMZWZ0KCkpJiYoZD1jLGM9MCkpLHMuaXNydGxtb2RlJiYoYz0tYyksYyYmKHMuc2Nyb2xsbW9tJiZzLnNjcm9sbG1vbS5zdG9wKCkscy5sYXN0ZGVsdGF4Kz1jLHMuZGVib3VuY2VkKCJtb3VzZXdoZWVseCIsZnVuY3Rpb24oKXt2YXIgeD1zLmxhc3RkZWx0YXg7cy5sYXN0ZGVsdGF4PTAscy5yYWlsLmRyYWd8fHMuZG9TY3JvbGxMZWZ0QnkoeCl9LDE1KSksZCl7aWYocy5vcHQubmF0aXZlcGFyZW50c2Nyb2xsaW5nJiZiJiYhcy5pc3BhZ2UmJiFzLnpvb21hY3RpdmUpaWYoMD5kKXtpZihzLmdldFNjcm9sbFRvcCgpPj1zLnBhZ2UubWF4aClyZXR1cm4hMH1lbHNlIGlmKDA+PXMuZ2V0U2Nyb2xsVG9wKCkpcmV0dXJuITA7cy5zY3JvbGxtb20mJnMuc2Nyb2xsbW9tLnN0b3AoKSxzLmxhc3RkZWx0YXkrPWQscy5zeW5jaGVkKCJtb3VzZXdoZWVseSIsZnVuY3Rpb24oKXt2YXIgeD1zLmxhc3RkZWx0YXk7cy5sYXN0ZGVsdGF5PTAscy5yYWlsLmRyYWd8fHMuZG9TY3JvbGxCeSh4KX0sMTUpfXJldHVybiB4LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLHgucHJldmVudERlZmF1bHQoKX12YXIgcz10aGlzO2lmKHRoaXMudmVyc2lvbj0iMy42LjgiLHRoaXMubmFtZT0ibmljZXNjcm9sbCIsdGhpcy5tZT1pLHRoaXMub3B0PXtkb2M6eCgiYm9keSIpLHdpbjohMX0seC5leHRlbmQodGhpcy5vcHQsbCksdGhpcy5vcHQuc25hcGJhY2tzcGVlZD04MCxmKWZvcih2YXIgdCBpbiBzLm9wdCl2b2lkIDAhPT1mW3RdJiYocy5vcHRbdF09Zlt0XSk7aWYocy5vcHQuZGlzYWJsZW11dGF0aW9ub2JzZXJ2ZXImJihrPSExKSx0aGlzLmlkZG9jPSh0aGlzLmRvYz1zLm9wdC5kb2MpJiZ0aGlzLmRvY1swXSYmdGhpcy5kb2NbMF0uaWR8fCIiLHRoaXMuaXNwYWdlPS9eQk9EWXxIVE1MLy50ZXN0KHMub3B0Lndpbj9zLm9wdC53aW5bMF0ubm9kZU5hbWU6dGhpcy5kb2NbMF0ubm9kZU5hbWUpLHRoaXMuaGFzd3JhcHBlcj0hMSE9PXMub3B0Lndpbix0aGlzLndpbj1zLm9wdC53aW58fCh0aGlzLmlzcGFnZT94KHdpbmRvdyk6dGhpcy5kb2MpLHRoaXMuZG9jc2Nyb2xsPXRoaXMuaXNwYWdlJiYhdGhpcy5oYXN3cmFwcGVyP3god2luZG93KTp0aGlzLndpbix0aGlzLmJvZHk9eCgiYm9keSIpLHRoaXMuaWZyYW1lPXRoaXMuaXNmaXhlZD10aGlzLnZpZXdwb3J0PSExLHRoaXMuaXNpZnJhbWU9IklGUkFNRSI9PXRoaXMuZG9jWzBdLm5vZGVOYW1lJiYiSUZSQU1FIj09dGhpcy53aW5bMF0ubm9kZU5hbWUsdGhpcy5pc3RleHRhcmVhPSJURVhUQVJFQSI9PXRoaXMud2luWzBdLm5vZGVOYW1lLHRoaXMuZm9yY2VzY3JlZW49ITEsdGhpcy5jYW5zaG93b25tb3VzZWV2ZW50PSJzY3JvbGwiIT1zLm9wdC5hdXRvaGlkZW1vZGUsdGhpcy5wYWdlPXRoaXMudmlldz10aGlzLm9uem9vbW91dD10aGlzLm9uem9vbWluPXRoaXMub25zY3JvbGxjYW5jZWw9dGhpcy5vbnNjcm9sbGVuZD10aGlzLm9uc2Nyb2xsc3RhcnQ9dGhpcy5vbmNsaWNrPXRoaXMub25nZXN0dXJlem9vbT10aGlzLm9ua2V5cHJlc3M9dGhpcy5vbm1vdXNld2hlZWw9dGhpcy5vbm1vdXNlbW92ZT10aGlzLm9ubW91c2V1cD10aGlzLm9ubW91c2Vkb3duPSExLHRoaXMuc2Nyb2xsPXt4OjAseTowfSx0aGlzLnNjcm9sbHJhdGlvPXt4OjAseTowfSx0aGlzLmN1cnNvcmhlaWdodD0yMCx0aGlzLnNjcm9sbHZhbHVlbWF4PTAsImF1dG8iPT10aGlzLm9wdC5ydGxtb2RlKXt2YXIgdT0odD10aGlzLndpblswXT09d2luZG93P3RoaXMuYm9keTp0aGlzLndpbikuY3NzKCJ3cml0aW5nLW1vZGUiKXx8dC5jc3MoIi13ZWJraXQtd3JpdGluZy1tb2RlIil8fHQuY3NzKCItbXMtd3JpdGluZy1tb2RlIil8fHQuY3NzKCItbW96LXdyaXRpbmctbW9kZSIpOyJob3Jpem9udGFsLXRiIj09dXx8ImxyLXRiIj09dXx8IiI9PXU/KHRoaXMuaXNydGxtb2RlPSJydGwiPT10LmNzcygiZGlyZWN0aW9uIiksdGhpcy5pc3ZlcnRpY2FsPSExKToodGhpcy5pc3J0bG1vZGU9InZlcnRpY2FsLXJsIj09dXx8InRiIj09dXx8InRiLXJsIj09dXx8InJsLXRiIj09dSx0aGlzLmlzdmVydGljYWw9InZlcnRpY2FsLXJsIj09dXx8InRiIj09dXx8InRiLXJsIj09dSl9ZWxzZSB0aGlzLmlzcnRsbW9kZT0hMD09PXRoaXMub3B0LnJ0bG1vZGUsdGhpcy5pc3ZlcnRpY2FsPSExO3RoaXMub2JzZXJ2ZXJib2R5PXRoaXMub2JzZXJ2ZXJyZW1vdmVyPXRoaXMub2JzZXJ2ZXI9dGhpcy5zY3JvbGxtb209dGhpcy5zY3JvbGxydW5uaW5nPSExO2Rve3RoaXMuaWQ9ImFzY3JhaWwiK2QrK313aGlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0aGlzLmlkKSk7dGhpcy5oYXNtb3VzZWZvY3VzPXRoaXMuaGFzZm9jdXM9dGhpcy56b29tYWN0aXZlPXRoaXMuem9vbT10aGlzLnNlbGVjdGlvbmRyYWc9dGhpcy5jdXJzb3JmcmVlemVkPXRoaXMuY3Vyc29yPXRoaXMucmFpbD0hMSx0aGlzLnZpc2liaWxpdHk9ITAsdGhpcy5oaWRkZW49dGhpcy5sb2NrZWQ9dGhpcy5yYWlsc2xvY2tlZD0hMSx0aGlzLmN1cnNvcmFjdGl2ZT0hMCx0aGlzLndoZWVscHJldmVudGVkPSExLHRoaXMub3ZlcmZsb3d4PXMub3B0Lm92ZXJmbG93eCx0aGlzLm92ZXJmbG93eT1zLm9wdC5vdmVyZmxvd3ksdGhpcy5uYXRpdmVzY3JvbGxpbmdhcmVhPSExLHRoaXMuY2hlY2thcmVhPTAsdGhpcy5ldmVudHM9W10sdGhpcy5zYXZlZD17fSx0aGlzLmRlbGF5bGlzdD17fSx0aGlzLnN5bmNsaXN0PXt9LHRoaXMubGFzdGRlbHRheT10aGlzLmxhc3RkZWx0YXg9MCx0aGlzLmRldGVjdGVkPW4oKTt2YXIgdj14LmV4dGVuZCh7fSx0aGlzLmRldGVjdGVkKTt0aGlzLmlzaHdzY3JvbGw9KHRoaXMuY2FuaHdzY3JvbGw9di5oYXN0cmFuc2Zvcm0mJnMub3B0Lmh3YWNjZWxlcmF0aW9uKSYmcy5oYXN3cmFwcGVyLHRoaXMuaGFzcmV2ZXJzZWhyPSEhdGhpcy5pc3J0bG1vZGUmJih0aGlzLmlzdmVydGljYWw/ISh2Lmlzd2Via2l0fHx2LmlzaWV8fHYuaXNpZTExKTohKHYuaXN3ZWJraXR8fHYuaXNpZSYmIXYuaXNpZTEwJiYhdi5pc2llMTEpKSx0aGlzLmlzdG91Y2hjYXBhYmxlPSExLCh2LmNhbnRvdWNofHwhdi5oYXN3M2N0b3VjaCYmIXYuaGFzbXN0b3VjaCkmJighdi5jYW50b3VjaHx8di5pc2lvc3x8di5pc2FuZHJvaWR8fCF2Lmlzd2Via2l0JiYhdi5pc21vemlsbGEpfHwodGhpcy5pc3RvdWNoY2FwYWJsZT0hMCkscy5vcHQuZW5hYmxlbW91c2Vsb2NrYXBpfHwodi5oYXNtb3VzZWNhcHR1cmU9ITEsdi5oYXNwb2ludGVybG9jaz0hMSksdGhpcy5kZWJvdW5jZWQ9ZnVuY3Rpb24oeCxhLGIpe3MmJihzLmRlbGF5bGlzdFt4XXx8KGEuY2FsbChzKSxzLmRlbGF5bGlzdFt4XT17aDpnKGZ1bmN0aW9uKCl7cy5kZWxheWxpc3RbeF0uZm4uY2FsbChzKSxzLmRlbGF5bGlzdFt4XT0hMX0sYil9KSxzLmRlbGF5bGlzdFt4XS5mbj1hKX07dmFyIHc9ITE7dGhpcy5zeW5jaGVkPWZ1bmN0aW9uKHgsYSl7cmV0dXJuIHMuc3luY2xpc3RbeF09YSx3fHwoZyhmdW5jdGlvbigpe2lmKHMpZm9yKHZhciB4IGluIHc9ITEscy5zeW5jbGlzdCl7dmFyIGE9cy5zeW5jbGlzdFt4XTthJiZhLmNhbGwocykscy5zeW5jbGlzdFt4XT0hMX19KSx3PSEwKSx4fSx0aGlzLnVuc3luY2hlZD1mdW5jdGlvbih4KXtzLnN5bmNsaXN0W3hdJiYocy5zeW5jbGlzdFt4XT0hMSl9LHRoaXMuY3NzPWZ1bmN0aW9uKHgsYSl7Zm9yKHZhciBiIGluIGEpcy5zYXZlZC5jc3MucHVzaChbeCxiLHguY3NzKGIpXSkseC5jc3MoYixhW2JdKX0sdGhpcy5zY3JvbGxUb3A9ZnVuY3Rpb24oeCl7cmV0dXJuIHZvaWQgMD09PXg/cy5nZXRTY3JvbGxUb3AoKTpzLnNldFNjcm9sbFRvcCh4KX0sdGhpcy5zY3JvbGxMZWZ0PWZ1bmN0aW9uKHgpe3JldHVybiB2b2lkIDA9PT14P3MuZ2V0U2Nyb2xsTGVmdCgpOnMuc2V0U2Nyb2xsTGVmdCh4KX07dmFyIHk9ZnVuY3Rpb24oeCxhLGIsYyxkLGUsZil7dGhpcy5zdD14LHRoaXMuZWQ9YSx0aGlzLnNwZD1iLHRoaXMucDE9Y3x8MCx0aGlzLnAyPWR8fDEsdGhpcy5wMz1lfHwwLHRoaXMucDQ9Znx8MSx0aGlzLnRzPShuZXcgRGF0ZSkuZ2V0VGltZSgpLHRoaXMuZGY9dGhpcy5lZC10aGlzLnN0fTtpZih5LnByb3RvdHlwZT17QjI6ZnVuY3Rpb24oeCl7cmV0dXJuIDMqeCp4KigxLXgpfSxCMzpmdW5jdGlvbih4KXtyZXR1cm4gMyp4KigxLXgpKigxLXgpfSxCNDpmdW5jdGlvbih4KXtyZXR1cm4oMS14KSooMS14KSooMS14KX0sZ2V0Tm93OmZ1bmN0aW9uKCl7dmFyIHg9MS0oKG5ldyBEYXRlKS5nZXRUaW1lKCktdGhpcy50cykvdGhpcy5zcGQsYT10aGlzLkIyKHgpK3RoaXMuQjMoeCkrdGhpcy5CNCh4KTtyZXR1cm4gMD54P3RoaXMuZWQ6dGhpcy5zdCtNYXRoLnJvdW5kKHRoaXMuZGYqYSl9LHVwZGF0ZTpmdW5jdGlvbih4LGEpe3JldHVybiB0aGlzLnN0PXRoaXMuZ2V0Tm93KCksdGhpcy5lZD14LHRoaXMuc3BkPWEsdGhpcy50cz0obmV3IERhdGUpLmdldFRpbWUoKSx0aGlzLmRmPXRoaXMuZWQtdGhpcy5zdCx0aGlzfX0sdGhpcy5pc2h3c2Nyb2xsKXt0aGlzLmRvYy50cmFuc2xhdGU9e3g6MCx5OjAsdHg6IjBweCIsdHk6IjBweCJ9LHYuaGFzdHJhbnNsYXRlM2QmJnYuaXNpb3MmJnRoaXMuZG9jLmNzcygiLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5IiwiaGlkZGVuIiksdGhpcy5nZXRTY3JvbGxUb3A9ZnVuY3Rpb24oeCl7aWYoIXgpe2lmKHg9aigpKXJldHVybiAxNj09eC5sZW5ndGg/LXhbMTNdOi14WzVdO2lmKHMudGltZXJzY3JvbGwmJnMudGltZXJzY3JvbGwuYnopcmV0dXJuIHMudGltZXJzY3JvbGwuYnouZ2V0Tm93KCl9cmV0dXJuIHMuZG9jLnRyYW5zbGF0ZS55fSx0aGlzLmdldFNjcm9sbExlZnQ9ZnVuY3Rpb24oeCl7aWYoIXgpe2lmKHg9aigpKXJldHVybiAxNj09eC5sZW5ndGg/LXhbMTJdOi14WzRdO2lmKHMudGltZXJzY3JvbGwmJnMudGltZXJzY3JvbGwuYmgpcmV0dXJuIHMudGltZXJzY3JvbGwuYmguZ2V0Tm93KCl9cmV0dXJuIHMuZG9jLnRyYW5zbGF0ZS54fSx0aGlzLm5vdGlmeVNjcm9sbEV2ZW50PWZ1bmN0aW9uKHgpe3ZhciBhPWRvY3VtZW50LmNyZWF0ZUV2ZW50KCJVSUV2ZW50cyIpO2EuaW5pdFVJRXZlbnQoInNjcm9sbCIsITEsITAsd2luZG93LDEpLGEubmljZWV2ZW50PSEwLHguZGlzcGF0Y2hFdmVudChhKX07dmFyIHo9dGhpcy5pc3J0bG1vZGU/MTotMTt2Lmhhc3RyYW5zbGF0ZTNkJiZzLm9wdC5lbmFibGV0cmFuc2xhdGUzZD8odGhpcy5zZXRTY3JvbGxUb3A9ZnVuY3Rpb24oeCxhKXtzLmRvYy50cmFuc2xhdGUueT14LHMuZG9jLnRyYW5zbGF0ZS50eT0tMSp4KyJweCIscy5kb2MuY3NzKHYudHJzdHlsZSwidHJhbnNsYXRlM2QoIitzLmRvYy50cmFuc2xhdGUudHgrIiwiK3MuZG9jLnRyYW5zbGF0ZS50eSsiLDBweCkiKSxhfHxzLm5vdGlmeVNjcm9sbEV2ZW50KHMud2luWzBdKX0sdGhpcy5zZXRTY3JvbGxMZWZ0PWZ1bmN0aW9uKHgsYSl7cy5kb2MudHJhbnNsYXRlLng9eCxzLmRvYy50cmFuc2xhdGUudHg9eCp6KyJweCIscy5kb2MuY3NzKHYudHJzdHlsZSwidHJhbnNsYXRlM2QoIitzLmRvYy50cmFuc2xhdGUudHgrIiwiK3MuZG9jLnRyYW5zbGF0ZS50eSsiLDBweCkiKSxhfHxzLm5vdGlmeVNjcm9sbEV2ZW50KHMud2luWzBdKX0pOih0aGlzLnNldFNjcm9sbFRvcD1mdW5jdGlvbih4LGEpe3MuZG9jLnRyYW5zbGF0ZS55PXgscy5kb2MudHJhbnNsYXRlLnR5PS0xKngrInB4IixzLmRvYy5jc3Modi50cnN0eWxlLCJ0cmFuc2xhdGUoIitzLmRvYy50cmFuc2xhdGUudHgrIiwiK3MuZG9jLnRyYW5zbGF0ZS50eSsiKSIpLGF8fHMubm90aWZ5U2Nyb2xsRXZlbnQocy53aW5bMF0pfSx0aGlzLnNldFNjcm9sbExlZnQ9ZnVuY3Rpb24oeCxhKXtzLmRvYy50cmFuc2xhdGUueD14LHMuZG9jLnRyYW5zbGF0ZS50eD14KnorInB4IixzLmRvYy5jc3Modi50cnN0eWxlLCJ0cmFuc2xhdGUoIitzLmRvYy50cmFuc2xhdGUudHgrIiwiK3MuZG9jLnRyYW5zbGF0ZS50eSsiKSIpLGF8fHMubm90aWZ5U2Nyb2xsRXZlbnQocy53aW5bMF0pfSl9ZWxzZSB0aGlzLmdldFNjcm9sbFRvcD1mdW5jdGlvbigpe3JldHVybiBzLmRvY3Njcm9sbC5zY3JvbGxUb3AoKX0sdGhpcy5zZXRTY3JvbGxUb3A9ZnVuY3Rpb24oeCl7cmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtzJiZzLmRvY3Njcm9sbC5zY3JvbGxUb3AoeCl9LDEpfSx0aGlzLmdldFNjcm9sbExlZnQ9ZnVuY3Rpb24oKXtyZXR1cm4gcy5oYXNyZXZlcnNlaHI/cy5kZXRlY3RlZC5pc21vemlsbGE/cy5wYWdlLm1heHctTWF0aC5hYnMocy5kb2NzY3JvbGwuc2Nyb2xsTGVmdCgpKTpzLnBhZ2UubWF4dy1zLmRvY3Njcm9sbC5zY3JvbGxMZWZ0KCk6cy5kb2NzY3JvbGwuc2Nyb2xsTGVmdCgpfSx0aGlzLnNldFNjcm9sbExlZnQ9ZnVuY3Rpb24oeCl7cmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtpZihzKXJldHVybiBzLmhhc3JldmVyc2VociYmKHg9cy5kZXRlY3RlZC5pc21vemlsbGE/LShzLnBhZ2UubWF4dy14KTpzLnBhZ2UubWF4dy14KSxzLmRvY3Njcm9sbC5zY3JvbGxMZWZ0KHgpfSwxKX07dGhpcy5nZXRUYXJnZXQ9ZnVuY3Rpb24oeCl7cmV0dXJuISF4JiYoeC50YXJnZXQ/eC50YXJnZXQ6ISF4LnNyY0VsZW1lbnQmJnguc3JjRWxlbWVudCl9LHRoaXMuaGFzUGFyZW50PWZ1bmN0aW9uKHgsYSl7aWYoIXgpcmV0dXJuITE7Zm9yKHZhciBiPXgudGFyZ2V0fHx4LnNyY0VsZW1lbnR8fHh8fCExO2ImJmIuaWQhPWE7KWI9Yi5wYXJlbnROb2RlfHwhMTtyZXR1cm4hMSE9PWJ9O3ZhciBBPXt0aGluOjEsbWVkaXVtOjMsdGhpY2s6NX07dGhpcy5nZXREb2N1bWVudFNjcm9sbE9mZnNldD1mdW5jdGlvbigpe3JldHVybnt0b3A6d2luZG93LnBhZ2VZT2Zmc2V0fHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wLGxlZnQ6d2luZG93LnBhZ2VYT2Zmc2V0fHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdH19LHRoaXMuZ2V0T2Zmc2V0PWZ1bmN0aW9uKCl7aWYocy5pc2ZpeGVkKXt2YXIgeD1zLndpbi5vZmZzZXQoKSxhPXMuZ2V0RG9jdW1lbnRTY3JvbGxPZmZzZXQoKTtyZXR1cm4geC50b3AtPWEudG9wLHgubGVmdC09YS5sZWZ0LHh9cmV0dXJuIHg9cy53aW4ub2Zmc2V0KCkscy52aWV3cG9ydD8oYT1zLnZpZXdwb3J0Lm9mZnNldCgpLHt0b3A6eC50b3AtYS50b3AsbGVmdDp4LmxlZnQtYS5sZWZ0fSk6eH0sdGhpcy51cGRhdGVTY3JvbGxCYXI9ZnVuY3Rpb24oeCl7dmFyIGEsYixjO2lmKHMuaXNod3Njcm9sbClzLnJhaWwuY3NzKHtoZWlnaHQ6cy53aW4uaW5uZXJIZWlnaHQoKS0ocy5vcHQucmFpbHBhZGRpbmcudG9wK3Mub3B0LnJhaWxwYWRkaW5nLmJvdHRvbSl9KSxzLnJhaWxoJiZzLnJhaWxoLmNzcyh7d2lkdGg6cy53aW4uaW5uZXJXaWR0aCgpLShzLm9wdC5yYWlscGFkZGluZy5sZWZ0K3Mub3B0LnJhaWxwYWRkaW5nLnJpZ2h0KX0pO2Vsc2V7dmFyIGQ9cy5nZXRPZmZzZXQoKTthPWQudG9wLGI9ZC5sZWZ0LShzLm9wdC5yYWlscGFkZGluZy5sZWZ0K3Mub3B0LnJhaWxwYWRkaW5nLnJpZ2h0KSxhKz1vKHMud2luLCJib3JkZXItdG9wLXdpZHRoIiwhMCksYis9cy5yYWlsLmFsaWduP3Mud2luLm91dGVyV2lkdGgoKS1vKHMud2luLCJib3JkZXItcmlnaHQtd2lkdGgiKS1zLnJhaWwud2lkdGg6byhzLndpbiwiYm9yZGVyLWxlZnQtd2lkdGgiKSwoYz1zLm9wdC5yYWlsb2Zmc2V0KSYmKGMudG9wJiYoYSs9Yy50b3ApLGMubGVmdCYmKGIrPWMubGVmdCkpLHMucmFpbHNsb2NrZWR8fHMucmFpbC5jc3Moe3RvcDphLGxlZnQ6YixoZWlnaHQ6KHg/eC5oOnMud2luLmlubmVySGVpZ2h0KCkpLShzLm9wdC5yYWlscGFkZGluZy50b3Arcy5vcHQucmFpbHBhZGRpbmcuYm90dG9tKX0pLHMuem9vbSYmcy56b29tLmNzcyh7dG9wOmErMSxsZWZ0OjE9PXMucmFpbC5hbGlnbj9iLTIwOmIrcy5yYWlsLndpZHRoKzR9KSxzLnJhaWxoJiYhcy5yYWlsc2xvY2tlZCYmKGE9ZC50b3AsYj1kLmxlZnQsKGM9cy5vcHQucmFpbGhvZmZzZXQpJiYoYy50b3AmJihhKz1jLnRvcCksYy5sZWZ0JiYoYis9Yy5sZWZ0KSkseD1zLnJhaWxoLmFsaWduP2ErbyhzLndpbiwiYm9yZGVyLXRvcC13aWR0aCIsITApK3Mud2luLmlubmVySGVpZ2h0KCktcy5yYWlsaC5oZWlnaHQ6YStvKHMud2luLCJib3JkZXItdG9wLXdpZHRoIiwhMCksYis9byhzLndpbiwiYm9yZGVyLWxlZnQtd2lkdGgiKSxzLnJhaWxoLmNzcyh7dG9wOngtKHMub3B0LnJhaWxwYWRkaW5nLnRvcCtzLm9wdC5yYWlscGFkZGluZy5ib3R0b20pLGxlZnQ6Yix3aWR0aDpzLnJhaWxoLndpZHRofSkpfX0sdGhpcy5kb1JhaWxDbGljaz1mdW5jdGlvbih4LGEsYil7dmFyIGM7cy5yYWlsc2xvY2tlZHx8KHMuY2FuY2VsRXZlbnQoeCksYT8oYT1iP3MuZG9TY3JvbGxMZWZ0OnMuZG9TY3JvbGxUb3ApKGM9Yj8oeC5wYWdlWC1zLnJhaWxoLm9mZnNldCgpLmxlZnQtcy5jdXJzb3J3aWR0aC8yKSpzLnNjcm9sbHJhdGlvLng6KHgucGFnZVktcy5yYWlsLm9mZnNldCgpLnRvcC1zLmN1cnNvcmhlaWdodC8yKSpzLnNjcm9sbHJhdGlvLnkpOihhPWI/cy5kb1Njcm9sbExlZnRCeTpzLmRvU2Nyb2xsQnksYz1iP3Muc2Nyb2xsLng6cy5zY3JvbGwueSx4PWI/eC5wYWdlWC1zLnJhaWxoLm9mZnNldCgpLmxlZnQ6eC5wYWdlWS1zLnJhaWwub2Zmc2V0KCkudG9wLGI9Yj9zLnZpZXcudzpzLnZpZXcuaCxhKGM+PXg/YjotYikpKX0scy5oYXNhbmltYXRpb25mcmFtZT1nLHMuaGFzY2FuY2VsYW5pbWF0aW9uZnJhbWU9aCxzLmhhc2FuaW1hdGlvbmZyYW1lP3MuaGFzY2FuY2VsYW5pbWF0aW9uZnJhbWV8fChoPWZ1bmN0aW9uKCl7cy5jYW5jZWxBbmltYXRpb25GcmFtZT0hMH0pOihnPWZ1bmN0aW9uKHgpe3JldHVybiBzZXRUaW1lb3V0KHgsMTUtTWF0aC5mbG9vcigrbmV3IERhdGUvMWUzKSUxNil9LGg9Y2xlYXJUaW1lb3V0KSx0aGlzLmluaXQ9ZnVuY3Rpb24oKXtpZihzLnNhdmVkLmNzcz1bXSx2LmlzaWU3bW9iaWxlfHx2Lmlzb3BlcmFtaW5pKXJldHVybiEwO3YuaGFzbXN0b3VjaCYmcy5jc3Mocy5pc3BhZ2U/eCgiaHRtbCIpOnMud2luLHtfdG91Y2hhY3Rpb246Im5vbmUifSk7dmFyIGQ9di5pc21vZGVybmllfHx2LmlzaWUxMD97Ii1tcy1vdmVyZmxvdy1zdHlsZSI6Im5vbmUifTp7Im92ZXJmbG93LXkiOiJoaWRkZW4ifTtpZihzLnppbmRleD0iYXV0byIscy56aW5kZXg9cy5pc3BhZ2V8fCJhdXRvIiE9cy5vcHQuemluZGV4P3Mub3B0LnppbmRleDptKCl8fCJhdXRvIiwhcy5pc3BhZ2UmJiJhdXRvIiE9cy56aW5kZXgmJnMuemluZGV4PmUmJihlPXMuemluZGV4KSxzLmlzaWUmJjA9PXMuemluZGV4JiYiYXV0byI9PXMub3B0LnppbmRleCYmKHMuemluZGV4PSJhdXRvIiksIXMuaXNwYWdlfHwhdi5jYW50b3VjaCYmIXYuaXNpZW9sZCYmIXYuaXNpZTltb2JpbGUpe3ZhciBmPXMuZG9jc2Nyb2xsO3MuaXNwYWdlJiYoZj1zLmhhc3dyYXBwZXI/cy53aW46cy5kb2MpLHYuaXNpZTltb2JpbGV8fHMuY3NzKGYsZCkscy5pc3BhZ2UmJnYuaXNpZTcmJigiQk9EWSI9PXMuZG9jWzBdLm5vZGVOYW1lP3MuY3NzKHgoImh0bWwiKSx7Im92ZXJmbG93LXkiOiJoaWRkZW4ifSk6IkhUTUwiPT1zLmRvY1swXS5ub2RlTmFtZSYmcy5jc3MoeCgiYm9keSIpLGQpKSwhdi5pc2lvc3x8cy5pc3BhZ2V8fHMuaGFzd3JhcHBlcnx8cy5jc3MoeCgiYm9keSIpLHsiLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmciOiJ0b3VjaCJ9KTt2YXIgZz14KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTtnLmNzcyh7cG9zaXRpb246InJlbGF0aXZlIix0b3A6MCxmbG9hdDoicmlnaHQiLHdpZHRoOnMub3B0LmN1cnNvcndpZHRoLGhlaWdodDowLCJiYWNrZ3JvdW5kLWNvbG9yIjpzLm9wdC5jdXJzb3Jjb2xvcixib3JkZXI6cy5vcHQuY3Vyc29yYm9yZGVyLCJiYWNrZ3JvdW5kLWNsaXAiOiJwYWRkaW5nLWJveCIsIi13ZWJraXQtYm9yZGVyLXJhZGl1cyI6cy5vcHQuY3Vyc29yYm9yZGVycmFkaXVzLCItbW96LWJvcmRlci1yYWRpdXMiOnMub3B0LmN1cnNvcmJvcmRlcnJhZGl1cywiYm9yZGVyLXJhZGl1cyI6cy5vcHQuY3Vyc29yYm9yZGVycmFkaXVzfSksZy5oYm9yZGVyPXBhcnNlRmxvYXQoZy5vdXRlckhlaWdodCgpLWcuaW5uZXJIZWlnaHQoKSksZy5hZGRDbGFzcygibmljZXNjcm9sbC1jdXJzb3JzIikscy5jdXJzb3I9ZywodD14KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKSkuYXR0cigiaWQiLHMuaWQpLHQuYWRkQ2xhc3MoIm5pY2VzY3JvbGwtcmFpbHMgbmljZXNjcm9sbC1yYWlscy12ciIpO3ZhciBoLGksaixsLG49WyJsZWZ0IiwicmlnaHQiLCJ0b3AiLCJib3R0b20iXTtmb3IoaiBpbiBuKWk9bltqXSwoaD1zLm9wdC5yYWlscGFkZGluZ1tpXSk/dC5jc3MoInBhZGRpbmctIitpLGgrInB4Iik6cy5vcHQucmFpbHBhZGRpbmdbaV09MDtpZih0LmFwcGVuZChnKSx0LndpZHRoPU1hdGgubWF4KHBhcnNlRmxvYXQocy5vcHQuY3Vyc29yd2lkdGgpLGcub3V0ZXJXaWR0aCgpKSx0LmNzcyh7d2lkdGg6dC53aWR0aCsicHgiLHpJbmRleDpzLnppbmRleCxiYWNrZ3JvdW5kOnMub3B0LmJhY2tncm91bmQsY3Vyc29yOiJkZWZhdWx0In0pLHQudmlzaWJpbGl0eT0hMCx0LnNjcm9sbGFibGU9ITAsdC5hbGlnbj0ibGVmdCI9PXMub3B0LnJhaWxhbGlnbj8wOjEscy5yYWlsPXQsZz1zLnJhaWwuZHJhZz0hMSwhcy5vcHQuYm94em9vbXx8cy5pc3BhZ2V8fHYuaXNpZW9sZHx8KGc9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iikscy5iaW5kKGcsImNsaWNrIixzLmRvWm9vbSkscy5iaW5kKGcsIm1vdXNlZW50ZXIiLGZ1bmN0aW9uKCl7cy56b29tLmNzcygib3BhY2l0eSIscy5vcHQuY3Vyc29yb3BhY2l0eW1heCl9KSxzLmJpbmQoZywibW91c2VsZWF2ZSIsZnVuY3Rpb24oKXtzLnpvb20uY3NzKCJvcGFjaXR5IixzLm9wdC5jdXJzb3JvcGFjaXR5bWluKX0pLHMuem9vbT14KGcpLHMuem9vbS5jc3Moe2N1cnNvcjoicG9pbnRlciIsekluZGV4OnMuemluZGV4LGJhY2tncm91bmRJbWFnZToidXJsKCIrcy5vcHQuc2NyaXB0cGF0aCsiem9vbWljby5wbmcpIixoZWlnaHQ6MTgsd2lkdGg6MTgsYmFja2dyb3VuZFBvc2l0aW9uOiIwcHggMHB4In0pLHMub3B0LmRibGNsaWNrem9vbSYmcy5iaW5kKHMud2luLCJkYmxjbGljayIscy5kb1pvb20pLHYuY2FudG91Y2gmJnMub3B0Lmdlc3R1cmV6b29tJiYocy5vbmdlc3R1cmV6b29tPWZ1bmN0aW9uKHgpe3JldHVybiAxLjU8eC5zY2FsZSYmcy5kb1pvb21Jbih4KSwuOD54LnNjYWxlJiZzLmRvWm9vbU91dCh4KSxzLmNhbmNlbEV2ZW50KHgpfSxzLmJpbmQocy53aW4sImdlc3R1cmVlbmQiLHMub25nZXN0dXJlem9vbSkpKSxzLnJhaWxoPSExLHMub3B0Lmhvcml6cmFpbGVuYWJsZWQmJihzLmNzcyhmLHtvdmVyZmxvd1g6ImhpZGRlbiJ9KSwoZz14KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKSkuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLHRvcDowLGhlaWdodDpzLm9wdC5jdXJzb3J3aWR0aCx3aWR0aDowLGJhY2tncm91bmRDb2xvcjpzLm9wdC5jdXJzb3Jjb2xvcixib3JkZXI6cy5vcHQuY3Vyc29yYm9yZGVyLGJhY2tncm91bmRDbGlwOiJwYWRkaW5nLWJveCIsIi13ZWJraXQtYm9yZGVyLXJhZGl1cyI6cy5vcHQuY3Vyc29yYm9yZGVycmFkaXVzLCItbW96LWJvcmRlci1yYWRpdXMiOnMub3B0LmN1cnNvcmJvcmRlcnJhZGl1cywiYm9yZGVyLXJhZGl1cyI6cy5vcHQuY3Vyc29yYm9yZGVycmFkaXVzfSksdi5pc2llb2xkJiZnLmNzcygib3ZlcmZsb3ciLCJoaWRkZW4iKSxnLndib3JkZXI9cGFyc2VGbG9hdChnLm91dGVyV2lkdGgoKS1nLmlubmVyV2lkdGgoKSksZy5hZGRDbGFzcygibmljZXNjcm9sbC1jdXJzb3JzIikscy5jdXJzb3JoPWcsKGw9eChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSkpLmF0dHIoImlkIixzLmlkKyItaHIiKSxsLmFkZENsYXNzKCJuaWNlc2Nyb2xsLXJhaWxzIG5pY2VzY3JvbGwtcmFpbHMtaHIiKSxsLmhlaWdodD1NYXRoLm1heChwYXJzZUZsb2F0KHMub3B0LmN1cnNvcndpZHRoKSxnLm91dGVySGVpZ2h0KCkpLGwuY3NzKHtoZWlnaHQ6bC5oZWlnaHQrInB4Iix6SW5kZXg6cy56aW5kZXgsYmFja2dyb3VuZDpzLm9wdC5iYWNrZ3JvdW5kfSksbC5hcHBlbmQoZyksbC52aXNpYmlsaXR5PSEwLGwuc2Nyb2xsYWJsZT0hMCxsLmFsaWduPSJ0b3AiPT1zLm9wdC5yYWlsdmFsaWduPzA6MSxzLnJhaWxoPWwscy5yYWlsaC5kcmFnPSExKSxzLmlzcGFnZT8odC5jc3Moe3Bvc2l0aW9uOiJmaXhlZCIsdG9wOjAsaGVpZ2h0OiIxMDAlIn0pLHQuYWxpZ24/dC5jc3Moe3JpZ2h0OjB9KTp0LmNzcyh7bGVmdDowfSkscy5ib2R5LmFwcGVuZCh0KSxzLnJhaWxoJiYobC5jc3Moe3Bvc2l0aW9uOiJmaXhlZCIsbGVmdDowLHdpZHRoOiIxMDAlIn0pLGwuYWxpZ24/bC5jc3Moe2JvdHRvbTowfSk6bC5jc3Moe3RvcDowfSkscy5ib2R5LmFwcGVuZChsKSkpOihzLmlzaHdzY3JvbGw/KCJzdGF0aWMiPT1zLndpbi5jc3MoInBvc2l0aW9uIikmJnMuY3NzKHMud2luLHtwb3NpdGlvbjoicmVsYXRpdmUifSksZj0iSFRNTCI9PXMud2luWzBdLm5vZGVOYW1lP3MuYm9keTpzLndpbix4KGYpLnNjcm9sbFRvcCgwKS5zY3JvbGxMZWZ0KDApLHMuem9vbSYmKHMuem9vbS5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOjEscmlnaHQ6MCwibWFyZ2luLXJpZ2h0Ijp0LndpZHRoKzR9KSxmLmFwcGVuZChzLnpvb20pKSx0LmNzcyh7cG9zaXRpb246ImFic29sdXRlIix0b3A6MH0pLHQuYWxpZ24/dC5jc3Moe3JpZ2h0OjB9KTp0LmNzcyh7bGVmdDowfSksZi5hcHBlbmQodCksbCYmKGwuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLGxlZnQ6MCxib3R0b206MH0pLGwuYWxpZ24/bC5jc3Moe2JvdHRvbTowfSk6bC5jc3Moe3RvcDowfSksZi5hcHBlbmQobCkpKToocy5pc2ZpeGVkPSJmaXhlZCI9PXMud2luLmNzcygicG9zaXRpb24iKSxmPXMuaXNmaXhlZD8iZml4ZWQiOiJhYnNvbHV0ZSIscy5pc2ZpeGVkfHwocy52aWV3cG9ydD1zLmdldFZpZXdwb3J0KHMud2luWzBdKSkscy52aWV3cG9ydCYmKHMuYm9keT1zLnZpZXdwb3J0LDA9PS9maXhlZHxhYnNvbHV0ZS8udGVzdChzLnZpZXdwb3J0LmNzcygicG9zaXRpb24iKSkmJnMuY3NzKHMudmlld3BvcnQse3Bvc2l0aW9uOiJyZWxhdGl2ZSJ9KSksdC5jc3Moe3Bvc2l0aW9uOmZ9KSxzLnpvb20mJnMuem9vbS5jc3Moe3Bvc2l0aW9uOmZ9KSxzLnVwZGF0ZVNjcm9sbEJhcigpLHMuYm9keS5hcHBlbmQodCkscy56b29tJiZzLmJvZHkuYXBwZW5kKHMuem9vbSkscy5yYWlsaCYmKGwuY3NzKHtwb3NpdGlvbjpmfSkscy5ib2R5LmFwcGVuZChsKSkpLHYuaXNpb3MmJnMuY3NzKHMud2luLHsiLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yIjoicmdiYSgwLDAsMCwwKSIsIi13ZWJraXQtdG91Y2gtY2FsbG91dCI6Im5vbmUifSksdi5pc2llJiZzLm9wdC5kaXNhYmxlb3V0bGluZSYmcy53aW4uYXR0cigiaGlkZUZvY3VzIiwidHJ1ZSIpLHYuaXN3ZWJraXQmJnMub3B0LmRpc2FibGVvdXRsaW5lJiZzLndpbi5jc3MoIm91dGxpbmUiLCJub25lIikpLCExPT09cy5vcHQuYXV0b2hpZGVtb2RlPyhzLmF1dG9oaWRlZG9tPSExLHMucmFpbC5jc3Moe29wYWNpdHk6cy5vcHQuY3Vyc29yb3BhY2l0eW1heH0pLHMucmFpbGgmJnMucmFpbGguY3NzKHtvcGFjaXR5OnMub3B0LmN1cnNvcm9wYWNpdHltYXh9KSk6ITA9PT1zLm9wdC5hdXRvaGlkZW1vZGV8fCJsZWF2ZSI9PT1zLm9wdC5hdXRvaGlkZW1vZGU/KHMuYXV0b2hpZGVkb209eCgpLmFkZChzLnJhaWwpLHYuaXNpZTgmJihzLmF1dG9oaWRlZG9tPXMuYXV0b2hpZGVkb20uYWRkKHMuY3Vyc29yKSkscy5yYWlsaCYmKHMuYXV0b2hpZGVkb209cy5hdXRvaGlkZWRvbS5hZGQocy5yYWlsaCkpLHMucmFpbGgmJnYuaXNpZTgmJihzLmF1dG9oaWRlZG9tPXMuYXV0b2hpZGVkb20uYWRkKHMuY3Vyc29yaCkpKToic2Nyb2xsIj09cy5vcHQuYXV0b2hpZGVtb2RlPyhzLmF1dG9oaWRlZG9tPXgoKS5hZGQocy5yYWlsKSxzLnJhaWxoJiYocy5hdXRvaGlkZWRvbT1zLmF1dG9oaWRlZG9tLmFkZChzLnJhaWxoKSkpOiJjdXJzb3IiPT1zLm9wdC5hdXRvaGlkZW1vZGU/KHMuYXV0b2hpZGVkb209eCgpLmFkZChzLmN1cnNvcikscy5yYWlsaCYmKHMuYXV0b2hpZGVkb209cy5hdXRvaGlkZWRvbS5hZGQocy5jdXJzb3JoKSkpOiJoaWRkZW4iPT1zLm9wdC5hdXRvaGlkZW1vZGUmJihzLmF1dG9oaWRlZG9tPSExLHMuaGlkZSgpLHMucmFpbHNsb2NrZWQ9ITEpLHYuaXNpZTltb2JpbGUpcy5zY3JvbGxtb209bmV3IHAocykscy5vbm1hbmdvdG91Y2g9ZnVuY3Rpb24oKXt2YXIgeD1zLmdldFNjcm9sbFRvcCgpLGE9cy5nZXRTY3JvbGxMZWZ0KCk7aWYoeD09cy5zY3JvbGxtb20ubGFzdHNjcm9sbHkmJmE9PXMuc2Nyb2xsbW9tLmxhc3RzY3JvbGx4KXJldHVybiEwO3ZhciBiPXgtcy5tYW5nb3RvdWNoLnN5LGM9YS1zLm1hbmdvdG91Y2guc3g7aWYoMCE9TWF0aC5yb3VuZChNYXRoLnNxcnQoTWF0aC5wb3coYywyKStNYXRoLnBvdyhiLDIpKSkpe3ZhciBkPTA+Yj8tMToxLGU9MD5jPy0xOjEsZj0rbmV3IERhdGU7cy5tYW5nb3RvdWNoLmxhenkmJmNsZWFyVGltZW91dChzLm1hbmdvdG91Y2gubGF6eSksODA8Zi1zLm1hbmdvdG91Y2gudG18fHMubWFuZ290b3VjaC5kcnkhPWR8fHMubWFuZ290b3VjaC5kcnghPWU/KHMuc2Nyb2xsbW9tLnN0b3AoKSxzLnNjcm9sbG1vbS5yZXNldChhLHgpLHMubWFuZ290b3VjaC5zeT14LHMubWFuZ290b3VjaC5seT14LHMubWFuZ290b3VjaC5zeD1hLHMubWFuZ290b3VjaC5seD1hLHMubWFuZ290b3VjaC5kcnk9ZCxzLm1hbmdvdG91Y2guZHJ4PWUscy5tYW5nb3RvdWNoLnRtPWYpOihzLnNjcm9sbG1vbS5zdG9wKCkscy5zY3JvbGxtb20udXBkYXRlKHMubWFuZ290b3VjaC5zeC1jLHMubWFuZ290b3VjaC5zeS1iKSxzLm1hbmdvdG91Y2gudG09ZixiPU1hdGgubWF4KE1hdGguYWJzKHMubWFuZ290b3VjaC5seS14KSxNYXRoLmFicyhzLm1hbmdvdG91Y2gubHgtYSkpLHMubWFuZ290b3VjaC5seT14LHMubWFuZ290b3VjaC5seD1hLDI8YiYmKHMubWFuZ290b3VjaC5sYXp5PXNldFRpbWVvdXQoZnVuY3Rpb24oKXtzLm1hbmdvdG91Y2gubGF6eT0hMSxzLm1hbmdvdG91Y2guZHJ5PTAscy5tYW5nb3RvdWNoLmRyeD0wLHMubWFuZ290b3VjaC50bT0wLHMuc2Nyb2xsbW9tLmRvTW9tZW50dW0oMzApfSwxMDApKSl9fSx0PXMuZ2V0U2Nyb2xsVG9wKCksbD1zLmdldFNjcm9sbExlZnQoKSxzLm1hbmdvdG91Y2g9e3N5OnQsbHk6dCxkcnk6MCxzeDpsLGx4OmwsZHJ4OjAsbGF6eTohMSx0bTowfSxzLmJpbmQocy5kb2NzY3JvbGwsInNjcm9sbCIscy5vbm1hbmdvdG91Y2gpO2Vsc2V7aWYodi5jYW50b3VjaHx8cy5pc3RvdWNoY2FwYWJsZXx8cy5vcHQudG91Y2hiZWhhdmlvcnx8di5oYXNtc3RvdWNoKXtzLnNjcm9sbG1vbT1uZXcgcChzKSxzLm9udG91Y2hzdGFydD1mdW5jdGlvbihhKXtpZihhLnBvaW50ZXJUeXBlJiYyIT1hLnBvaW50ZXJUeXBlJiYidG91Y2giIT1hLnBvaW50ZXJUeXBlKXJldHVybiExO2lmKHMuaGFzbW92aW5nPSExLCFzLnJhaWxzbG9ja2VkKXt2YXIgYjtpZih2Lmhhc21zdG91Y2gpZm9yKGI9ISFhLnRhcmdldCYmYS50YXJnZXQ7Yjspe2lmKDA8KGM9eChiKS5nZXROaWNlU2Nyb2xsKCkpLmxlbmd0aCYmY1swXS5tZT09cy5tZSlicmVhaztpZigwPGMubGVuZ3RoKXJldHVybiExO2lmKCJESVYiPT1iLm5vZGVOYW1lJiZiLmlkPT1zLmlkKWJyZWFrO2I9ISFiLnBhcmVudE5vZGUmJmIucGFyZW50Tm9kZX1pZihzLmNhbmNlbFNjcm9sbCgpLChiPXMuZ2V0VGFyZ2V0KGEpKSYmL0lOUFVUL2kudGVzdChiLm5vZGVOYW1lKSYmL3JhbmdlL2kudGVzdChiLnR5cGUpKXJldHVybiBzLnN0b3BQcm9wYWdhdGlvbihhKTtpZighKCJjbGllbnRYImluIGEpJiYiY2hhbmdlZFRvdWNoZXMiaW4gYSYmKGEuY2xpZW50WD1hLmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFgsYS5jbGllbnRZPWEuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WSkscy5mb3JjZXNjcmVlbiYmKGM9YSwoYT17b3JpZ2luYWw6YS5vcmlnaW5hbD9hLm9yaWdpbmFsOmF9KS5jbGllbnRYPWMuc2NyZWVuWCxhLmNsaWVudFk9Yy5zY3JlZW5ZKSxzLnJhaWwuZHJhZz17eDphLmNsaWVudFgseTphLmNsaWVudFksc3g6cy5zY3JvbGwueCxzeTpzLnNjcm9sbC55LHN0OnMuZ2V0U2Nyb2xsVG9wKCksc2w6cy5nZXRTY3JvbGxMZWZ0KCkscHQ6MixkbDohMX0scy5pc3BhZ2V8fCFzLm9wdC5kaXJlY3Rpb25sb2NrZGVhZHpvbmUpcy5yYWlsLmRyYWcuZGw9ImYiO2Vsc2V7dmFyIGM9eCh3aW5kb3cpLndpZHRoKCksZD14KHdpbmRvdykuaGVpZ2h0KCk7ZD1NYXRoLm1heCgwLE1hdGgubWF4KGRvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0LGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQpLWQpLGM9TWF0aC5tYXgoMCxNYXRoLm1heChkb2N1bWVudC5ib2R5LnNjcm9sbFdpZHRoLGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxXaWR0aCktYyk7cy5yYWlsLmRyYWcuY2s9IXMucmFpbC5zY3JvbGxhYmxlJiZzLnJhaWxoLnNjcm9sbGFibGU/MDxkJiYidiI6ISghcy5yYWlsLnNjcm9sbGFibGV8fHMucmFpbGguc2Nyb2xsYWJsZSkmJigwPGMmJiJoIikscy5yYWlsLmRyYWcuY2t8fChzLnJhaWwuZHJhZy5kbD0iZiIpfWlmKHMub3B0LnRvdWNoYmVoYXZpb3ImJnMuaXNpZnJhbWUmJnYuaXNpZSYmKGM9cy53aW4ucG9zaXRpb24oKSxzLnJhaWwuZHJhZy54Kz1jLmxlZnQscy5yYWlsLmRyYWcueSs9Yy50b3ApLHMuaGFzbW92aW5nPSExLHMubGFzdG1vdXNldXA9ITEscy5zY3JvbGxtb20ucmVzZXQoYS5jbGllbnRYLGEuY2xpZW50WSksIXYuY2FudG91Y2gmJiF0aGlzLmlzdG91Y2hjYXBhYmxlJiYhYS5wb2ludGVyVHlwZSl7aWYoIWJ8fCEvSU5QVVR8U0VMRUNUfFRFWFRBUkVBL2kudGVzdChiLm5vZGVOYW1lKSlyZXR1cm4hcy5pc3BhZ2UmJnYuaGFzbW91c2VjYXB0dXJlJiZiLnNldENhcHR1cmUoKSxzLm9wdC50b3VjaGJlaGF2aW9yPyhiLm9uY2xpY2smJiFiLl9vbmNsaWNrJiYoYi5fb25jbGljaz1iLm9uY2xpY2ssYi5vbmNsaWNrPWZ1bmN0aW9uKHgpe2lmKHMuaGFzbW92aW5nKXJldHVybiExO2IuX29uY2xpY2suY2FsbCh0aGlzLHgpfSkscy5jYW5jZWxFdmVudChhKSk6cy5zdG9wUHJvcGFnYXRpb24oYSk7L1NVQk1JVHxDQU5DRUx8QlVUVE9OL2kudGVzdCh4KGIpLmF0dHIoInR5cGUiKSkmJihwYz17dGc6YixjbGljazohMX0scy5wcmV2ZW50Y2xpY2s9cGMpfX19LHMub250b3VjaGVuZD1mdW5jdGlvbih4KXtpZighcy5yYWlsLmRyYWcpcmV0dXJuITA7aWYoMj09cy5yYWlsLmRyYWcucHQpe2lmKHgucG9pbnRlclR5cGUmJjIhPXgucG9pbnRlclR5cGUmJiJ0b3VjaCIhPXgucG9pbnRlclR5cGUpcmV0dXJuITE7aWYocy5zY3JvbGxtb20uZG9Nb21lbnR1bSgpLHMucmFpbC5kcmFnPSExLHMuaGFzbW92aW5nJiYocy5sYXN0bW91c2V1cD0hMCxzLmhpZGVDdXJzb3IoKSx2Lmhhc21vdXNlY2FwdHVyZSYmZG9jdW1lbnQucmVsZWFzZUNhcHR1cmUoKSwhdi5jYW50b3VjaCkpcmV0dXJuIHMuY2FuY2VsRXZlbnQoeCl9ZWxzZSBpZigxPT1zLnJhaWwuZHJhZy5wdClyZXR1cm4gcy5vbm1vdXNldXAoeCl9O3ZhciBvPXMub3B0LnRvdWNoYmVoYXZpb3ImJnMuaXNpZnJhbWUmJiF2Lmhhc21vdXNlY2FwdHVyZTtzLm9udG91Y2htb3ZlPWZ1bmN0aW9uKGEsYil7aWYoIXMucmFpbC5kcmFnfHxhLnRhcmdldFRvdWNoZXMmJnMub3B0LnByZXZlbnRtdWx0aXRvdWNoc2Nyb2xsaW5nJiYxPGEudGFyZ2V0VG91Y2hlcy5sZW5ndGh8fGEucG9pbnRlclR5cGUmJjIhPWEucG9pbnRlclR5cGUmJiJ0b3VjaCIhPWEucG9pbnRlclR5cGUpcmV0dXJuITE7aWYoMj09cy5yYWlsLmRyYWcucHQpe2lmKHYuY2FudG91Y2gmJnYuaXNpb3MmJnZvaWQgMD09PWEub3JpZ2luYWwpcmV0dXJuITA7aWYocy5oYXNtb3Zpbmc9ITAscy5wcmV2ZW50Y2xpY2smJiFzLnByZXZlbnRjbGljay5jbGljayYmKHMucHJldmVudGNsaWNrLmNsaWNrPXMucHJldmVudGNsaWNrLnRnLm9uY2xpY2t8fCExLHMucHJldmVudGNsaWNrLnRnLm9uY2xpY2s9cy5vbnByZXZlbnRjbGljayksImNoYW5nZWRUb3VjaGVzImluKGE9eC5leHRlbmQoe29yaWdpbmFsOmF9LGEpKSYmKGEuY2xpZW50WD1hLmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFgsYS5jbGllbnRZPWEuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WSkscy5mb3JjZXNjcmVlbil7dmFyIGM9YTsoYT17b3JpZ2luYWw6YS5vcmlnaW5hbD9hLm9yaWdpbmFsOmF9KS5jbGllbnRYPWMuc2NyZWVuWCxhLmNsaWVudFk9Yy5zY3JlZW5ZfXZhciBkO2M9ZD0wO28mJiFiJiYoYz0tKGQ9cy53aW4ucG9zaXRpb24oKSkubGVmdCxkPS1kLnRvcCk7dmFyIGU9YS5jbGllbnRZK2Q7ZD1lLXMucmFpbC5kcmFnLnk7dmFyIGYsZz1hLmNsaWVudFgrYyxoPWctcy5yYWlsLmRyYWcueCxpPXMucmFpbC5kcmFnLnN0LWQ7aWYocy5pc2h3c2Nyb2xsJiZzLm9wdC5ib3VuY2VzY3JvbGw/MD5pP2k9TWF0aC5yb3VuZChpLzIpOmk+cy5wYWdlLm1heGgmJihpPXMucGFnZS5tYXhoK01hdGgucm91bmQoKGktcy5wYWdlLm1heGgpLzIpKTooMD5pJiYoZT1pPTApLGk+cy5wYWdlLm1heGgmJihpPXMucGFnZS5tYXhoLGU9MCkpLHMucmFpbGgmJnMucmFpbGguc2Nyb2xsYWJsZSYmKGY9cy5pc3J0bG1vZGU/aC1zLnJhaWwuZHJhZy5zbDpzLnJhaWwuZHJhZy5zbC1oLHMuaXNod3Njcm9sbCYmcy5vcHQuYm91bmNlc2Nyb2xsPzA+Zj9mPU1hdGgucm91bmQoZi8yKTpmPnMucGFnZS5tYXh3JiYoZj1zLnBhZ2UubWF4dytNYXRoLnJvdW5kKChmLXMucGFnZS5tYXh3KS8yKSk6KDA+ZiYmKGc9Zj0wKSxmPnMucGFnZS5tYXh3JiYoZj1zLnBhZ2UubWF4dyxnPTApKSksYz0hMSxzLnJhaWwuZHJhZy5kbCljPSEwLCJ2Ij09cy5yYWlsLmRyYWcuZGw/Zj1zLnJhaWwuZHJhZy5zbDoiaCI9PXMucmFpbC5kcmFnLmRsJiYoaT1zLnJhaWwuZHJhZy5zdCk7ZWxzZXtkPU1hdGguYWJzKGQpO2g9TWF0aC5hYnMoaCk7dmFyIGo9cy5vcHQuZGlyZWN0aW9ubG9ja2RlYWR6b25lO2lmKCJ2Ij09cy5yYWlsLmRyYWcuY2spe2lmKGQ+aiYmaDw9LjMqZClyZXR1cm4gcy5yYWlsLmRyYWc9ITEsITA7aD5qJiYocy5yYWlsLmRyYWcuZGw9ImYiLHgoImJvZHkiKS5zY3JvbGxUb3AoeCgiYm9keSIpLnNjcm9sbFRvcCgpKSl9ZWxzZSBpZigiaCI9PXMucmFpbC5kcmFnLmNrKXtpZihoPmomJmQ8PS4zKmgpcmV0dXJuIHMucmFpbC5kcmFnPSExLCEwO2Q+aiYmKHMucmFpbC5kcmFnLmRsPSJmIix4KCJib2R5Iikuc2Nyb2xsTGVmdCh4KCJib2R5Iikuc2Nyb2xsTGVmdCgpKSl9fWlmKHMuc3luY2hlZCgidG91Y2htb3ZlIixmdW5jdGlvbigpe3MucmFpbC5kcmFnJiYyPT1zLnJhaWwuZHJhZy5wdCYmKHMucHJlcGFyZVRyYW5zaXRpb24mJnMucHJlcGFyZVRyYW5zaXRpb24oMCkscy5yYWlsLnNjcm9sbGFibGUmJnMuc2V0U2Nyb2xsVG9wKGkpLHMuc2Nyb2xsbW9tLnVwZGF0ZShnLGUpLHMucmFpbGgmJnMucmFpbGguc2Nyb2xsYWJsZT8ocy5zZXRTY3JvbGxMZWZ0KGYpLHMuc2hvd0N1cnNvcihpLGYpKTpzLnNob3dDdXJzb3IoaSksdi5pc2llMTAmJmRvY3VtZW50LnNlbGVjdGlvbi5jbGVhcigpKX0pLHYuaXNjaHJvbWUmJnMuaXN0b3VjaGNhcGFibGUmJihjPSExKSxjKXJldHVybiBzLmNhbmNlbEV2ZW50KGEpfWVsc2UgaWYoMT09cy5yYWlsLmRyYWcucHQpcmV0dXJuIHMub25tb3VzZW1vdmUoYSl9fWlmKHMub25tb3VzZWRvd249ZnVuY3Rpb24oeCxhKXtpZighcy5yYWlsLmRyYWd8fDE9PXMucmFpbC5kcmFnLnB0KXtpZihzLnJhaWxzbG9ja2VkKXJldHVybiBzLmNhbmNlbEV2ZW50KHgpO3MuY2FuY2VsU2Nyb2xsKCkscy5yYWlsLmRyYWc9e3g6eC5jbGllbnRYLHk6eC5jbGllbnRZLHN4OnMuc2Nyb2xsLngsc3k6cy5zY3JvbGwueSxwdDoxLGhyOiEhYX07dmFyIGI9cy5nZXRUYXJnZXQoeCk7cmV0dXJuIXMuaXNwYWdlJiZ2Lmhhc21vdXNlY2FwdHVyZSYmYi5zZXRDYXB0dXJlKCkscy5pc2lmcmFtZSYmIXYuaGFzbW91c2VjYXB0dXJlJiYocy5zYXZlZC5jc3Nwb2ludGVyZXZlbnRzPXMuZG9jLmNzcygicG9pbnRlci1ldmVudHMiKSxzLmNzcyhzLmRvYyx7InBvaW50ZXItZXZlbnRzIjoibm9uZSJ9KSkscy5oYXNtb3Zpbmc9ITEscy5jYW5jZWxFdmVudCh4KX19LHMub25tb3VzZXVwPWZ1bmN0aW9uKHgpe2lmKHMucmFpbC5kcmFnKXJldHVybiAxIT1zLnJhaWwuZHJhZy5wdHx8KHYuaGFzbW91c2VjYXB0dXJlJiZkb2N1bWVudC5yZWxlYXNlQ2FwdHVyZSgpLHMuaXNpZnJhbWUmJiF2Lmhhc21vdXNlY2FwdHVyZSYmcy5kb2MuY3NzKCJwb2ludGVyLWV2ZW50cyIscy5zYXZlZC5jc3Nwb2ludGVyZXZlbnRzKSxzLnJhaWwuZHJhZz0hMSxzLmhhc21vdmluZyYmcy50cmlnZ2VyU2Nyb2xsRW5kKCkscy5jYW5jZWxFdmVudCh4KSl9LHMub25tb3VzZW1vdmU9ZnVuY3Rpb24oeCl7aWYocy5yYWlsLmRyYWcpe2lmKDE9PXMucmFpbC5kcmFnLnB0KXtpZih2LmlzY2hyb21lJiYwPT14LndoaWNoKXJldHVybiBzLm9ubW91c2V1cCh4KTtpZihzLmN1cnNvcmZyZWV6ZWQ9ITAscy5oYXNtb3Zpbmc9ITAscy5yYWlsLmRyYWcuaHIpe3Muc2Nyb2xsLng9cy5yYWlsLmRyYWcuc3grKHguY2xpZW50WC1zLnJhaWwuZHJhZy54KSwwPnMuc2Nyb2xsLngmJihzLnNjcm9sbC54PTApO3ZhciBhPXMuc2Nyb2xsdmFsdWVtYXh3O3Muc2Nyb2xsLng+YSYmKHMuc2Nyb2xsLng9YSl9ZWxzZSBzLnNjcm9sbC55PXMucmFpbC5kcmFnLnN5Kyh4LmNsaWVudFktcy5yYWlsLmRyYWcueSksMD5zLnNjcm9sbC55JiYocy5zY3JvbGwueT0wKSxhPXMuc2Nyb2xsdmFsdWVtYXgscy5zY3JvbGwueT5hJiYocy5zY3JvbGwueT1hKTtyZXR1cm4gcy5zeW5jaGVkKCJtb3VzZW1vdmUiLGZ1bmN0aW9uKCl7cy5yYWlsLmRyYWcmJjE9PXMucmFpbC5kcmFnLnB0JiYocy5zaG93Q3Vyc29yKCkscy5yYWlsLmRyYWcuaHI/cy5oYXNyZXZlcnNlaHI/cy5kb1Njcm9sbExlZnQocy5zY3JvbGx2YWx1ZW1heHctTWF0aC5yb3VuZChzLnNjcm9sbC54KnMuc2Nyb2xscmF0aW8ueCkscy5vcHQuY3Vyc29yZHJhZ3NwZWVkKTpzLmRvU2Nyb2xsTGVmdChNYXRoLnJvdW5kKHMuc2Nyb2xsLngqcy5zY3JvbGxyYXRpby54KSxzLm9wdC5jdXJzb3JkcmFnc3BlZWQpOnMuZG9TY3JvbGxUb3AoTWF0aC5yb3VuZChzLnNjcm9sbC55KnMuc2Nyb2xscmF0aW8ueSkscy5vcHQuY3Vyc29yZHJhZ3NwZWVkKSl9KSxzLmNhbmNlbEV2ZW50KHgpfX1lbHNlIHMuY2hlY2thcmVhPTB9LHYuY2FudG91Y2h8fHMub3B0LnRvdWNoYmVoYXZpb3Ipcy5vbnByZXZlbnRjbGljaz1mdW5jdGlvbih4KXtpZihzLnByZXZlbnRjbGljaylyZXR1cm4gcy5wcmV2ZW50Y2xpY2sudGcub25jbGljaz1zLnByZXZlbnRjbGljay5jbGljayxzLnByZXZlbnRjbGljaz0hMSxzLmNhbmNlbEV2ZW50KHgpfSxzLmJpbmQocy53aW4sIm1vdXNlZG93biIscy5vbnRvdWNoc3RhcnQpLHMub25jbGljaz0hdi5pc2lvcyYmZnVuY3Rpb24oeCl7cmV0dXJuIXMubGFzdG1vdXNldXB8fChzLmxhc3Rtb3VzZXVwPSExLHMuY2FuY2VsRXZlbnQoeCkpfSxzLm9wdC5ncmFiY3Vyc29yZW5hYmxlZCYmdi5jdXJzb3JncmFidmFsdWUmJihzLmNzcyhzLmlzcGFnZT9zLmRvYzpzLndpbix7Y3Vyc29yOnYuY3Vyc29yZ3JhYnZhbHVlfSkscy5jc3Mocy5yYWlsLHtjdXJzb3I6di5jdXJzb3JncmFidmFsdWV9KSk7ZWxzZXt2YXIgcT1mdW5jdGlvbih4KXtpZihzLnNlbGVjdGlvbmRyYWcpe2lmKHgpe3ZhciBhPXMud2luLm91dGVySGVpZ2h0KCk7MDwoeD14LnBhZ2VZLXMuc2VsZWN0aW9uZHJhZy50b3ApJiZ4PGEmJih4PTApLHg+PWEmJih4LT1hKSxzLnNlbGVjdGlvbmRyYWcuZGY9eH0wIT1zLnNlbGVjdGlvbmRyYWcuZGYmJihzLmRvU2Nyb2xsQnkoMiotTWF0aC5mbG9vcihzLnNlbGVjdGlvbmRyYWcuZGYvNikpLHMuZGVib3VuY2VkKCJkb3NlbGVjdGlvbnNjcm9sbCIsZnVuY3Rpb24oKXtxKCl9LDUwKSl9fTtzLmhhc1RleHRTZWxlY3RlZD0iZ2V0U2VsZWN0aW9uImluIGRvY3VtZW50P2Z1bmN0aW9uKCl7cmV0dXJuIDA8ZG9jdW1lbnQuZ2V0U2VsZWN0aW9uKCkucmFuZ2VDb3VudH06InNlbGVjdGlvbiJpbiBkb2N1bWVudD9mdW5jdGlvbigpe3JldHVybiJOb25lIiE9ZG9jdW1lbnQuc2VsZWN0aW9uLnR5cGV9OmZ1bmN0aW9uKCl7cmV0dXJuITF9LHMub25zZWxlY3Rpb25zdGFydD1mdW5jdGlvbih4KXtzLmlzcGFnZXx8KHMuc2VsZWN0aW9uZHJhZz1zLndpbi5vZmZzZXQoKSl9LHMub25zZWxlY3Rpb25lbmQ9ZnVuY3Rpb24oeCl7cy5zZWxlY3Rpb25kcmFnPSExfSxzLm9uc2VsZWN0aW9uZHJhZz1mdW5jdGlvbih4KXtzLnNlbGVjdGlvbmRyYWcmJnMuaGFzVGV4dFNlbGVjdGVkKCkmJnMuZGVib3VuY2VkKCJzZWxlY3Rpb25zY3JvbGwiLGZ1bmN0aW9uKCl7cSh4KX0sMjUwKX19di5oYXN3M2N0b3VjaD8ocy5jc3Mocy5yYWlsLHsidG91Y2gtYWN0aW9uIjoibm9uZSJ9KSxzLmNzcyhzLmN1cnNvcix7InRvdWNoLWFjdGlvbiI6Im5vbmUifSkscy5iaW5kKHMud2luLCJwb2ludGVyZG93biIscy5vbnRvdWNoc3RhcnQpLHMuYmluZChkb2N1bWVudCwicG9pbnRlcnVwIixzLm9udG91Y2hlbmQpLHMuYmluZChkb2N1bWVudCwicG9pbnRlcm1vdmUiLHMub250b3VjaG1vdmUpKTp2Lmhhc21zdG91Y2g/KHMuY3NzKHMucmFpbCx7Ii1tcy10b3VjaC1hY3Rpb24iOiJub25lIn0pLHMuY3NzKHMuY3Vyc29yLHsiLW1zLXRvdWNoLWFjdGlvbiI6Im5vbmUifSkscy5iaW5kKHMud2luLCJNU1BvaW50ZXJEb3duIixzLm9udG91Y2hzdGFydCkscy5iaW5kKGRvY3VtZW50LCJNU1BvaW50ZXJVcCIscy5vbnRvdWNoZW5kKSxzLmJpbmQoZG9jdW1lbnQsIk1TUG9pbnRlck1vdmUiLHMub250b3VjaG1vdmUpLHMuYmluZChzLmN1cnNvciwiTVNHZXN0dXJlSG9sZCIsZnVuY3Rpb24oeCl7eC5wcmV2ZW50RGVmYXVsdCgpfSkscy5iaW5kKHMuY3Vyc29yLCJjb250ZXh0bWVudSIsZnVuY3Rpb24oeCl7eC5wcmV2ZW50RGVmYXVsdCgpfSkpOnRoaXMuaXN0b3VjaGNhcGFibGUmJihzLmJpbmQocy53aW4sInRvdWNoc3RhcnQiLHMub250b3VjaHN0YXJ0KSxzLmJpbmQoZG9jdW1lbnQsInRvdWNoZW5kIixzLm9udG91Y2hlbmQpLHMuYmluZChkb2N1bWVudCwidG91Y2hjYW5jZWwiLHMub250b3VjaGVuZCkscy5iaW5kKGRvY3VtZW50LCJ0b3VjaG1vdmUiLHMub250b3VjaG1vdmUpKSwocy5vcHQuY3Vyc29yZHJhZ29udG91Y2h8fCF2LmNhbnRvdWNoJiYhcy5vcHQudG91Y2hiZWhhdmlvcikmJihzLnJhaWwuY3NzKHtjdXJzb3I6ImRlZmF1bHQifSkscy5yYWlsaCYmcy5yYWlsaC5jc3Moe2N1cnNvcjoiZGVmYXVsdCJ9KSxzLmpxYmluZChzLnJhaWwsIm1vdXNlZW50ZXIiLGZ1bmN0aW9uKCl7aWYoIXMuaXNwYWdlJiYhcy53aW4uaXMoIjp2aXNpYmxlIikpcmV0dXJuITE7cy5jYW5zaG93b25tb3VzZWV2ZW50JiZzLnNob3dDdXJzb3IoKSxzLnJhaWwuYWN0aXZlPSEwfSkscy5qcWJpbmQocy5yYWlsLCJtb3VzZWxlYXZlIixmdW5jdGlvbigpe3MucmFpbC5hY3RpdmU9ITEscy5yYWlsLmRyYWd8fHMuaGlkZUN1cnNvcigpfSkscy5vcHQuc2Vuc2l0aXZlcmFpbCYmKHMuYmluZChzLnJhaWwsImNsaWNrIixmdW5jdGlvbih4KXtzLmRvUmFpbENsaWNrKHgsITEsITEpfSkscy5iaW5kKHMucmFpbCwiZGJsY2xpY2siLGZ1bmN0aW9uKHgpe3MuZG9SYWlsQ2xpY2soeCwhMCwhMSl9KSxzLmJpbmQocy5jdXJzb3IsImNsaWNrIixmdW5jdGlvbih4KXtzLmNhbmNlbEV2ZW50KHgpfSkscy5iaW5kKHMuY3Vyc29yLCJkYmxjbGljayIsZnVuY3Rpb24oeCl7cy5jYW5jZWxFdmVudCh4KX0pKSxzLnJhaWxoJiYocy5qcWJpbmQocy5yYWlsaCwibW91c2VlbnRlciIsZnVuY3Rpb24oKXtpZighcy5pc3BhZ2UmJiFzLndpbi5pcygiOnZpc2libGUiKSlyZXR1cm4hMTtzLmNhbnNob3dvbm1vdXNlZXZlbnQmJnMuc2hvd0N1cnNvcigpLHMucmFpbC5hY3RpdmU9ITB9KSxzLmpxYmluZChzLnJhaWxoLCJtb3VzZWxlYXZlIixmdW5jdGlvbigpe3MucmFpbC5hY3RpdmU9ITEscy5yYWlsLmRyYWd8fHMuaGlkZUN1cnNvcigpfSkscy5vcHQuc2Vuc2l0aXZlcmFpbCYmKHMuYmluZChzLnJhaWxoLCJjbGljayIsZnVuY3Rpb24oeCl7cy5kb1JhaWxDbGljayh4LCExLCEwKX0pLHMuYmluZChzLnJhaWxoLCJkYmxjbGljayIsZnVuY3Rpb24oeCl7cy5kb1JhaWxDbGljayh4LCEwLCEwKX0pLHMuYmluZChzLmN1cnNvcmgsImNsaWNrIixmdW5jdGlvbih4KXtzLmNhbmNlbEV2ZW50KHgpfSkscy5iaW5kKHMuY3Vyc29yaCwiZGJsY2xpY2siLGZ1bmN0aW9uKHgpe3MuY2FuY2VsRXZlbnQoeCl9KSkpKSx2LmNhbnRvdWNofHxzLm9wdC50b3VjaGJlaGF2aW9yPyhzLmJpbmQodi5oYXNtb3VzZWNhcHR1cmU/cy53aW46ZG9jdW1lbnQsIm1vdXNldXAiLHMub250b3VjaGVuZCkscy5iaW5kKGRvY3VtZW50LCJtb3VzZW1vdmUiLHMub250b3VjaG1vdmUpLHMub25jbGljayYmcy5iaW5kKGRvY3VtZW50LCJjbGljayIscy5vbmNsaWNrKSxzLm9wdC5jdXJzb3JkcmFnb250b3VjaD8ocy5iaW5kKHMuY3Vyc29yLCJtb3VzZWRvd24iLHMub25tb3VzZWRvd24pLHMuYmluZChzLmN1cnNvciwibW91c2V1cCIscy5vbm1vdXNldXApLHMuY3Vyc29yaCYmcy5iaW5kKHMuY3Vyc29yaCwibW91c2Vkb3duIixmdW5jdGlvbih4KXtzLm9ubW91c2Vkb3duKHgsITApfSkscy5jdXJzb3JoJiZzLmJpbmQocy5jdXJzb3JoLCJtb3VzZXVwIixzLm9ubW91c2V1cCkpOihzLmJpbmQocy5yYWlsLCJtb3VzZWRvd24iLGZ1bmN0aW9uKHgpe3gucHJldmVudERlZmF1bHQoKX0pLHMucmFpbGgmJnMuYmluZChzLnJhaWxoLCJtb3VzZWRvd24iLGZ1bmN0aW9uKHgpe3gucHJldmVudERlZmF1bHQoKX0pKSk6KHMuYmluZCh2Lmhhc21vdXNlY2FwdHVyZT9zLndpbjpkb2N1bWVudCwibW91c2V1cCIscy5vbm1vdXNldXApLHMuYmluZChkb2N1bWVudCwibW91c2Vtb3ZlIixzLm9ubW91c2Vtb3ZlKSxzLm9uY2xpY2smJnMuYmluZChkb2N1bWVudCwiY2xpY2siLHMub25jbGljaykscy5iaW5kKHMuY3Vyc29yLCJtb3VzZWRvd24iLHMub25tb3VzZWRvd24pLHMuYmluZChzLmN1cnNvciwibW91c2V1cCIscy5vbm1vdXNldXApLHMucmFpbGgmJihzLmJpbmQocy5jdXJzb3JoLCJtb3VzZWRvd24iLGZ1bmN0aW9uKHgpe3Mub25tb3VzZWRvd24oeCwhMCl9KSxzLmJpbmQocy5jdXJzb3JoLCJtb3VzZXVwIixzLm9ubW91c2V1cCkpLCFzLmlzcGFnZSYmcy5vcHQuZW5hYmxlc2Nyb2xsb25zZWxlY3Rpb24mJihzLmJpbmQocy53aW5bMF0sIm1vdXNlZG93biIscy5vbnNlbGVjdGlvbnN0YXJ0KSxzLmJpbmQoZG9jdW1lbnQsIm1vdXNldXAiLHMub25zZWxlY3Rpb25lbmQpLHMuYmluZChzLmN1cnNvciwibW91c2V1cCIscy5vbnNlbGVjdGlvbmVuZCkscy5jdXJzb3JoJiZzLmJpbmQocy5jdXJzb3JoLCJtb3VzZXVwIixzLm9uc2VsZWN0aW9uZW5kKSxzLmJpbmQoZG9jdW1lbnQsIm1vdXNlbW92ZSIscy5vbnNlbGVjdGlvbmRyYWcpKSxzLnpvb20mJihzLmpxYmluZChzLnpvb20sIm1vdXNlZW50ZXIiLGZ1bmN0aW9uKCl7cy5jYW5zaG93b25tb3VzZWV2ZW50JiZzLnNob3dDdXJzb3IoKSxzLnJhaWwuYWN0aXZlPSEwfSkscy5qcWJpbmQocy56b29tLCJtb3VzZWxlYXZlIixmdW5jdGlvbigpe3MucmFpbC5hY3RpdmU9ITEscy5yYWlsLmRyYWd8fHMuaGlkZUN1cnNvcigpfSkpKSxzLm9wdC5lbmFibGVtb3VzZXdoZWVsJiYocy5pc2lmcmFtZXx8cy5tb3VzZXdoZWVsKHYuaXNpZSYmcy5pc3BhZ2U/ZG9jdW1lbnQ6cy53aW4scy5vbm1vdXNld2hlZWwpLHMubW91c2V3aGVlbChzLnJhaWwscy5vbm1vdXNld2hlZWwpLHMucmFpbGgmJnMubW91c2V3aGVlbChzLnJhaWxoLHMub25tb3VzZXdoZWVsaHIpKSxzLmlzcGFnZXx8di5jYW50b3VjaHx8L0hUTUx8XkJPRFkvLnRlc3Qocy53aW5bMF0ubm9kZU5hbWUpfHwocy53aW4uYXR0cigidGFiaW5kZXgiKXx8cy53aW4uYXR0cih7dGFiaW5kZXg6YysrfSkscy5qcWJpbmQocy53aW4sImZvY3VzIixmdW5jdGlvbih4KXthPXMuZ2V0VGFyZ2V0KHgpLmlkfHwhMCxzLmhhc2ZvY3VzPSEwLHMuY2Fuc2hvd29ubW91c2VldmVudCYmcy5ub3RpY2VDdXJzb3IoKX0pLHMuanFiaW5kKHMud2luLCJibHVyIixmdW5jdGlvbih4KXthPSExLHMuaGFzZm9jdXM9ITF9KSxzLmpxYmluZChzLndpbiwibW91c2VlbnRlciIsZnVuY3Rpb24oeCl7Yj1zLmdldFRhcmdldCh4KS5pZHx8ITAscy5oYXNtb3VzZWZvY3VzPSEwLHMuY2Fuc2hvd29ubW91c2VldmVudCYmcy5ub3RpY2VDdXJzb3IoKX0pLHMuanFiaW5kKHMud2luLCJtb3VzZWxlYXZlIixmdW5jdGlvbigpe2I9ITEscy5oYXNtb3VzZWZvY3VzPSExLHMucmFpbC5kcmFnfHxzLmhpZGVDdXJzb3IoKX0pKX1pZihzLm9ua2V5cHJlc3M9ZnVuY3Rpb24oYyl7aWYocy5yYWlsc2xvY2tlZCYmMD09cy5wYWdlLm1heGgpcmV0dXJuITA7Yz1jfHx3aW5kb3cuZTt2YXIgZD1zLmdldFRhcmdldChjKTtpZihkJiYvSU5QVVR8VEVYVEFSRUF8U0VMRUNUfE9QVElPTi8udGVzdChkLm5vZGVOYW1lKSYmKCFkLmdldEF0dHJpYnV0ZSgidHlwZSIpJiYhZC50eXBlfHwhL3N1Ym1pdHxidXR0b258Y2FuY2VsL2kudHApfHx4KGQpLmF0dHIoImNvbnRlbnRlZGl0YWJsZSIpKXJldHVybiEwO2lmKHMuaGFzZm9jdXN8fHMuaGFzbW91c2Vmb2N1cyYmIWF8fHMuaXNwYWdlJiYhYSYmIWIpe2lmKGQ9Yy5rZXlDb2RlLHMucmFpbHNsb2NrZWQmJjI3IT1kKXJldHVybiBzLmNhbmNlbEV2ZW50KGMpO3ZhciBlPWMuY3RybEtleXx8ITEsZj1jLnNoaWZ0S2V5fHwhMSxnPSExO3N3aXRjaChkKXtjYXNlIDM4OmNhc2UgNjMyMzM6cy5kb1Njcm9sbEJ5KDcyKSxnPSEwO2JyZWFrO2Nhc2UgNDA6Y2FzZSA2MzIzNTpzLmRvU2Nyb2xsQnkoLTcyKSxnPSEwO2JyZWFrO2Nhc2UgMzc6Y2FzZSA2MzIzMjpzLnJhaWxoJiYoZT9zLmRvU2Nyb2xsTGVmdCgwKTpzLmRvU2Nyb2xsTGVmdEJ5KDcyKSxnPSEwKTticmVhaztjYXNlIDM5OmNhc2UgNjMyMzQ6cy5yYWlsaCYmKGU/cy5kb1Njcm9sbExlZnQocy5wYWdlLm1heHcpOnMuZG9TY3JvbGxMZWZ0QnkoLTcyKSxnPSEwKTticmVhaztjYXNlIDMzOmNhc2UgNjMyNzY6cy5kb1Njcm9sbEJ5KHMudmlldy5oKSxnPSEwO2JyZWFrO2Nhc2UgMzQ6Y2FzZSA2MzI3NzpzLmRvU2Nyb2xsQnkoLXMudmlldy5oKSxnPSEwO2JyZWFrO2Nhc2UgMzY6Y2FzZSA2MzI3MzpzLnJhaWxoJiZlP3MuZG9TY3JvbGxQb3MoMCwwKTpzLmRvU2Nyb2xsVG8oMCksZz0hMDticmVhaztjYXNlIDM1OmNhc2UgNjMyNzU6cy5yYWlsaCYmZT9zLmRvU2Nyb2xsUG9zKHMucGFnZS5tYXh3LHMucGFnZS5tYXhoKTpzLmRvU2Nyb2xsVG8ocy5wYWdlLm1heGgpLGc9ITA7YnJlYWs7Y2FzZSAzMjpzLm9wdC5zcGFjZWJhcmVuYWJsZWQmJihmP3MuZG9TY3JvbGxCeShzLnZpZXcuaCk6cy5kb1Njcm9sbEJ5KC1zLnZpZXcuaCksZz0hMCk7YnJlYWs7Y2FzZSAyNzpzLnpvb21hY3RpdmUmJihzLmRvWm9vbSgpLGc9ITApfWlmKGcpcmV0dXJuIHMuY2FuY2VsRXZlbnQoYyl9fSxzLm9wdC5lbmFibGVrZXlib2FyZCYmcy5iaW5kKGRvY3VtZW50LHYuaXNvcGVyYSYmIXYuaXNvcGVyYTEyPyJrZXlwcmVzcyI6ImtleWRvd24iLHMub25rZXlwcmVzcykscy5iaW5kKGRvY3VtZW50LCJrZXlkb3duIixmdW5jdGlvbih4KXt4LmN0cmxLZXkmJihzLndoZWVscHJldmVudGVkPSEwKX0pLHMuYmluZChkb2N1bWVudCwia2V5dXAiLGZ1bmN0aW9uKHgpe3guY3RybEtleXx8KHMud2hlZWxwcmV2ZW50ZWQ9ITEpfSkscy5iaW5kKHdpbmRvdywiYmx1ciIsZnVuY3Rpb24oeCl7cy53aGVlbHByZXZlbnRlZD0hMX0pLHMuYmluZCh3aW5kb3csInJlc2l6ZSIscy5sYXp5UmVzaXplKSxzLmJpbmQod2luZG93LCJvcmllbnRhdGlvbmNoYW5nZSIscy5sYXp5UmVzaXplKSxzLmJpbmQod2luZG93LCJsb2FkIixzLmxhenlSZXNpemUpLHYuaXNjaHJvbWUmJiFzLmlzcGFnZSYmIXMuaGFzd3JhcHBlcil7dmFyIHI9cy53aW4uYXR0cigic3R5bGUiKSx0PXBhcnNlRmxvYXQocy53aW4uY3NzKCJ3aWR0aCIpKSsxO3Mud2luLmNzcygid2lkdGgiLHQpLHMuc3luY2hlZCgiY2hyb21lZml4IixmdW5jdGlvbigpe3Mud2luLmF0dHIoInN0eWxlIixyKX0pfXMub25BdHRyaWJ1dGVDaGFuZ2U9ZnVuY3Rpb24oeCl7cy5sYXp5UmVzaXplKHMuaXNpZW9sZD8yNTA6MzApfSxzLmlzaWUxMXx8ITE9PT1rfHwocy5vYnNlcnZlcmJvZHk9bmV3IGsoZnVuY3Rpb24oYSl7aWYoYS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2lmKCJhdHRyaWJ1dGVzIj09YS50eXBlKXJldHVybiB4KCJib2R5IikuaGFzQ2xhc3MoIm1vZGFsLW9wZW4iKSYmeCgiYm9keSIpLmhhc0NsYXNzKCJtb2RhbC1kaWFsb2ciKSYmIXguY29udGFpbnMoeCgiLm1vZGFsLWRpYWxvZyIpWzBdLHMuZG9jWzBdKT9zLmhpZGUoKTpzLnNob3coKX0pLGRvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0IT1zLnBhZ2UubWF4aClyZXR1cm4gcy5sYXp5UmVzaXplKDMwKX0pLHMub2JzZXJ2ZXJib2R5Lm9ic2VydmUoZG9jdW1lbnQuYm9keSx7Y2hpbGRMaXN0OiEwLHN1YnRyZWU6ITAsY2hhcmFjdGVyRGF0YTohMSxhdHRyaWJ1dGVzOiEwLGF0dHJpYnV0ZUZpbHRlcjpbImNsYXNzIl19KSkscy5pc3BhZ2V8fHMuaGFzd3JhcHBlcnx8KCExIT09az8ocy5vYnNlcnZlcj1uZXcgayhmdW5jdGlvbih4KXt4LmZvckVhY2gocy5vbkF0dHJpYnV0ZUNoYW5nZSl9KSxzLm9ic2VydmVyLm9ic2VydmUocy53aW5bMF0se2NoaWxkTGlzdDohMCxjaGFyYWN0ZXJEYXRhOiExLGF0dHJpYnV0ZXM6ITAsc3VidHJlZTohMX0pLHMub2JzZXJ2ZXJyZW1vdmVyPW5ldyBrKGZ1bmN0aW9uKHgpe3guZm9yRWFjaChmdW5jdGlvbih4KXtpZigwPHgucmVtb3ZlZE5vZGVzLmxlbmd0aClmb3IodmFyIGEgaW4geC5yZW1vdmVkTm9kZXMpaWYocyYmeC5yZW1vdmVkTm9kZXNbYV09PXMud2luWzBdKXJldHVybiBzLnJlbW92ZSgpfSl9KSxzLm9ic2VydmVycmVtb3Zlci5vYnNlcnZlKHMud2luWzBdLnBhcmVudE5vZGUse2NoaWxkTGlzdDohMCxjaGFyYWN0ZXJEYXRhOiExLGF0dHJpYnV0ZXM6ITEsc3VidHJlZTohMX0pKToocy5iaW5kKHMud2luLHYuaXNpZSYmIXYuaXNpZTk/InByb3BlcnR5Y2hhbmdlIjoiRE9NQXR0ck1vZGlmaWVkIixzLm9uQXR0cmlidXRlQ2hhbmdlKSx2LmlzaWU5JiZzLndpblswXS5hdHRhY2hFdmVudCgib25wcm9wZXJ0eWNoYW5nZSIscy5vbkF0dHJpYnV0ZUNoYW5nZSkscy5iaW5kKHMud2luLCJET01Ob2RlUmVtb3ZlZCIsZnVuY3Rpb24oeCl7eC50YXJnZXQ9PXMud2luWzBdJiZzLnJlbW92ZSgpfSkpKSwhcy5pc3BhZ2UmJnMub3B0LmJveHpvb20mJnMuYmluZCh3aW5kb3csInJlc2l6ZSIscy5yZXNpemVab29tKSxzLmlzdGV4dGFyZWEmJihzLmJpbmQocy53aW4sImtleWRvd24iLHMubGF6eVJlc2l6ZSkscy5iaW5kKHMud2luLCJtb3VzZXVwIixzLmxhenlSZXNpemUpKSxzLmxhenlSZXNpemUoMzApfWlmKCJJRlJBTUUiPT10aGlzLmRvY1swXS5ub2RlTmFtZSl7dmFyIHU9ZnVuY3Rpb24oKXt2YXIgYTtzLmlmcmFtZXhkPSExO3RyeXthPSJjb250ZW50RG9jdW1lbnQiaW4gdGhpcz90aGlzLmNvbnRlbnREb2N1bWVudDp0aGlzLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnR9Y2F0Y2goeCl7cy5pZnJhbWV4ZD0hMCxhPSExfWlmKHMuaWZyYW1leGQpcmV0dXJuImNvbnNvbGUiaW4gd2luZG93JiZjb25zb2xlLmxvZygiTmljZVNjcm9sbCBlcnJvcjogcG9saWN5IHJlc3RyaWNlZCBpZnJhbWUiKSwhMDtpZihzLmZvcmNlc2NyZWVuPSEwLHMuaXNpZnJhbWUmJihzLmlmcmFtZT17ZG9jOngoYSksaHRtbDpzLmRvYy5jb250ZW50cygpLmZpbmQoImh0bWwiKVswXSxib2R5OnMuZG9jLmNvbnRlbnRzKCkuZmluZCgiYm9keSIpWzBdfSxzLmdldENvbnRlbnRTaXplPWZ1bmN0aW9uKCl7cmV0dXJue3c6TWF0aC5tYXgocy5pZnJhbWUuaHRtbC5zY3JvbGxXaWR0aCxzLmlmcmFtZS5ib2R5LnNjcm9sbFdpZHRoKSxoOk1hdGgubWF4KHMuaWZyYW1lLmh0bWwuc2Nyb2xsSGVpZ2h0LHMuaWZyYW1lLmJvZHkuc2Nyb2xsSGVpZ2h0KX19LHMuZG9jc2Nyb2xsPXgocy5pZnJhbWUuYm9keSkpLCF2LmlzaW9zJiZzLm9wdC5pZnJhbWVhdXRvcmVzaXplJiYhcy5pc2lmcmFtZSl7cy53aW4uc2Nyb2xsVG9wKDApLHMuZG9jLmhlaWdodCgiIik7dmFyIGI9TWF0aC5tYXgoYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaHRtbCIpWzBdLnNjcm9sbEhlaWdodCxhLmJvZHkuc2Nyb2xsSGVpZ2h0KTtzLmRvYy5oZWlnaHQoYil9cy5sYXp5UmVzaXplKDMwKSx2LmlzaWU3JiZzLmNzcyh4KHMuaWZyYW1lLmh0bWwpLGQpLHMuY3NzKHgocy5pZnJhbWUuYm9keSksZCksdi5pc2lvcyYmcy5oYXN3cmFwcGVyJiZzLmNzcyh4KGEuYm9keSkseyItd2Via2l0LXRyYW5zZm9ybSI6InRyYW5zbGF0ZTNkKDAsMCwwKSJ9KSwiY29udGVudFdpbmRvdyJpbiB0aGlzP3MuYmluZCh0aGlzLmNvbnRlbnRXaW5kb3csInNjcm9sbCIscy5vbnNjcm9sbCk6cy5iaW5kKGEsInNjcm9sbCIscy5vbnNjcm9sbCkscy5vcHQuZW5hYmxlbW91c2V3aGVlbCYmcy5tb3VzZXdoZWVsKGEscy5vbm1vdXNld2hlZWwpLHMub3B0LmVuYWJsZWtleWJvYXJkJiZzLmJpbmQoYSx2Lmlzb3BlcmE/ImtleXByZXNzIjoia2V5ZG93biIscy5vbmtleXByZXNzKSwodi5jYW50b3VjaHx8cy5vcHQudG91Y2hiZWhhdmlvcikmJihzLmJpbmQoYSwibW91c2Vkb3duIixzLm9udG91Y2hzdGFydCkscy5iaW5kKGEsIm1vdXNlbW92ZSIsZnVuY3Rpb24oeCl7cmV0dXJuIHMub250b3VjaG1vdmUoeCwhMCl9KSxzLm9wdC5ncmFiY3Vyc29yZW5hYmxlZCYmdi5jdXJzb3JncmFidmFsdWUmJnMuY3NzKHgoYS5ib2R5KSx7Y3Vyc29yOnYuY3Vyc29yZ3JhYnZhbHVlfSkpLHMuYmluZChhLCJtb3VzZXVwIixzLm9udG91Y2hlbmQpLHMuem9vbSYmKHMub3B0LmRibGNsaWNrem9vbSYmcy5iaW5kKGEsImRibGNsaWNrIixzLmRvWm9vbSkscy5vbmdlc3R1cmV6b29tJiZzLmJpbmQoYSwiZ2VzdHVyZWVuZCIscy5vbmdlc3R1cmV6b29tKSl9O3RoaXMuZG9jWzBdLnJlYWR5U3RhdGUmJiJjb21wbGV0ZSI9PXRoaXMuZG9jWzBdLnJlYWR5U3RhdGUmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXt1LmNhbGwocy5kb2NbMF0sITEpfSw1MDApLHMuYmluZCh0aGlzLmRvYywibG9hZCIsdSl9fSx0aGlzLnNob3dDdXJzb3I9ZnVuY3Rpb24oeCxhKXtpZihzLmN1cnNvcnRpbWVvdXQmJihjbGVhclRpbWVvdXQocy5jdXJzb3J0aW1lb3V0KSxzLmN1cnNvcnRpbWVvdXQ9MCkscy5yYWlsKXtpZihzLmF1dG9oaWRlZG9tJiYocy5hdXRvaGlkZWRvbS5zdG9wKCkuY3NzKHtvcGFjaXR5OnMub3B0LmN1cnNvcm9wYWNpdHltYXh9KSxzLmN1cnNvcmFjdGl2ZT0hMCkscy5yYWlsLmRyYWcmJjE9PXMucmFpbC5kcmFnLnB0fHwodm9pZCAwIT09eCYmITEhPT14JiYocy5zY3JvbGwueT1NYXRoLnJvdW5kKDEqeC9zLnNjcm9sbHJhdGlvLnkpKSx2b2lkIDAhPT1hJiYocy5zY3JvbGwueD1NYXRoLnJvdW5kKDEqYS9zLnNjcm9sbHJhdGlvLngpKSkscy5jdXJzb3IuY3NzKHtoZWlnaHQ6cy5jdXJzb3JoZWlnaHQsdG9wOnMuc2Nyb2xsLnl9KSxzLmN1cnNvcmgpe3ZhciBiPXMuaGFzcmV2ZXJzZWhyP3Muc2Nyb2xsdmFsdWVtYXh3LXMuc2Nyb2xsLng6cy5zY3JvbGwueDshcy5yYWlsLmFsaWduJiZzLnJhaWwudmlzaWJpbGl0eT9zLmN1cnNvcmguY3NzKHt3aWR0aDpzLmN1cnNvcndpZHRoLGxlZnQ6YitzLnJhaWwud2lkdGh9KTpzLmN1cnNvcmguY3NzKHt3aWR0aDpzLmN1cnNvcndpZHRoLGxlZnQ6Yn0pLHMuY3Vyc29yYWN0aXZlPSEwfXMuem9vbSYmcy56b29tLnN0b3AoKS5jc3Moe29wYWNpdHk6cy5vcHQuY3Vyc29yb3BhY2l0eW1heH0pfX0sdGhpcy5oaWRlQ3Vyc29yPWZ1bmN0aW9uKHgpe3MuY3Vyc29ydGltZW91dHx8IXMucmFpbHx8IXMuYXV0b2hpZGVkb218fHMuaGFzbW91c2Vmb2N1cyYmImxlYXZlIj09cy5vcHQuYXV0b2hpZGVtb2RlfHwocy5jdXJzb3J0aW1lb3V0PXNldFRpbWVvdXQoZnVuY3Rpb24oKXtzLnJhaWwuYWN0aXZlJiZzLnNob3dvbm1vdXNlZXZlbnR8fChzLmF1dG9oaWRlZG9tLnN0b3AoKS5hbmltYXRlKHtvcGFjaXR5OnMub3B0LmN1cnNvcm9wYWNpdHltaW59KSxzLnpvb20mJnMuem9vbS5zdG9wKCkuYW5pbWF0ZSh7b3BhY2l0eTpzLm9wdC5jdXJzb3JvcGFjaXR5bWlufSkscy5jdXJzb3JhY3RpdmU9ITEpLHMuY3Vyc29ydGltZW91dD0wfSx4fHxzLm9wdC5oaWRlY3Vyc29yZGVsYXkpKX0sdGhpcy5ub3RpY2VDdXJzb3I9ZnVuY3Rpb24oeCxhLGIpe3Muc2hvd0N1cnNvcihhLGIpLHMucmFpbC5hY3RpdmV8fHMuaGlkZUN1cnNvcih4KX0sdGhpcy5nZXRDb250ZW50U2l6ZT1zLmlzcGFnZT9mdW5jdGlvbigpe3JldHVybnt3Ok1hdGgubWF4KGRvY3VtZW50LmJvZHkuc2Nyb2xsV2lkdGgsZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFdpZHRoKSxoOk1hdGgubWF4KGRvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0LGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQpfX06cy5oYXN3cmFwcGVyP2Z1bmN0aW9uKCl7cmV0dXJue3c6cy5kb2Mub3V0ZXJXaWR0aCgpK3BhcnNlSW50KHMud2luLmNzcygicGFkZGluZ0xlZnQiKSkrcGFyc2VJbnQocy53aW4uY3NzKCJwYWRkaW5nUmlnaHQiKSksaDpzLmRvYy5vdXRlckhlaWdodCgpK3BhcnNlSW50KHMud2luLmNzcygicGFkZGluZ1RvcCIpKStwYXJzZUludChzLndpbi5jc3MoInBhZGRpbmdCb3R0b20iKSl9fTpmdW5jdGlvbigpe3JldHVybnt3OnMuZG9jc2Nyb2xsWzBdLnNjcm9sbFdpZHRoLGg6cy5kb2NzY3JvbGxbMF0uc2Nyb2xsSGVpZ2h0fX0sdGhpcy5vblJlc2l6ZT1mdW5jdGlvbih4LGEpe2lmKCFzfHwhcy53aW4pcmV0dXJuITE7aWYoIXMuaGFzd3JhcHBlciYmIXMuaXNwYWdlKXtpZigibm9uZSI9PXMud2luLmNzcygiZGlzcGxheSIpKXJldHVybiBzLnZpc2liaWxpdHkmJnMuaGlkZVJhaWwoKS5oaWRlUmFpbEhyKCksITE7cy5oaWRkZW58fHMudmlzaWJpbGl0eXx8cy5zaG93UmFpbCgpLnNob3dSYWlsSHIoKX12YXIgYj1zLnBhZ2UubWF4aCxjPXMucGFnZS5tYXh3LGQ9cy52aWV3LmgsZT1zLnZpZXcudztpZihzLnZpZXc9e3c6cy5pc3BhZ2U/cy53aW4ud2lkdGgoKTpwYXJzZUludChzLndpblswXS5jbGllbnRXaWR0aCksaDpzLmlzcGFnZT9zLndpbi5oZWlnaHQoKTpwYXJzZUludChzLndpblswXS5jbGllbnRIZWlnaHQpfSxzLnBhZ2U9YXx8cy5nZXRDb250ZW50U2l6ZSgpLHMucGFnZS5tYXhoPU1hdGgubWF4KDAscy5wYWdlLmgtcy52aWV3LmgpLHMucGFnZS5tYXh3PU1hdGgubWF4KDAscy5wYWdlLnctcy52aWV3LncpLHMucGFnZS5tYXhoPT1iJiZzLnBhZ2UubWF4dz09YyYmcy52aWV3Lnc9PWUmJnMudmlldy5oPT1kKXtpZihzLmlzcGFnZSlyZXR1cm4gcztpZihiPXMud2luLm9mZnNldCgpLHMubGFzdHBvc2l0aW9uJiYoKGM9cy5sYXN0cG9zaXRpb24pLnRvcD09Yi50b3AmJmMubGVmdD09Yi5sZWZ0KSlyZXR1cm4gcztzLmxhc3Rwb3NpdGlvbj1ifXJldHVybiAwPT1zLnBhZ2UubWF4aD8ocy5oaWRlUmFpbCgpLHMuc2Nyb2xsdmFsdWVtYXg9MCxzLnNjcm9sbC55PTAscy5zY3JvbGxyYXRpby55PTAscy5jdXJzb3JoZWlnaHQ9MCxzLnNldFNjcm9sbFRvcCgwKSxzLnJhaWwmJihzLnJhaWwuc2Nyb2xsYWJsZT0hMSkpOihzLnBhZ2UubWF4aC09cy5vcHQucmFpbHBhZGRpbmcudG9wK3Mub3B0LnJhaWxwYWRkaW5nLmJvdHRvbSxzLnJhaWwuc2Nyb2xsYWJsZT0hMCksMD09cy5wYWdlLm1heHc/KHMuaGlkZVJhaWxIcigpLHMuc2Nyb2xsdmFsdWVtYXh3PTAscy5zY3JvbGwueD0wLHMuc2Nyb2xscmF0aW8ueD0wLHMuY3Vyc29yd2lkdGg9MCxzLnNldFNjcm9sbExlZnQoMCkscy5yYWlsaCYmKHMucmFpbGguc2Nyb2xsYWJsZT0hMSkpOihzLnBhZ2UubWF4dy09cy5vcHQucmFpbHBhZGRpbmcubGVmdCtzLm9wdC5yYWlscGFkZGluZy5yaWdodCxzLnJhaWxoJiYocy5yYWlsaC5zY3JvbGxhYmxlPXMub3B0Lmhvcml6cmFpbGVuYWJsZWQpKSxzLnJhaWxzbG9ja2VkPXMubG9ja2VkfHwwPT1zLnBhZ2UubWF4aCYmMD09cy5wYWdlLm1heHcscy5yYWlsc2xvY2tlZD8ocy5pc3BhZ2V8fHMudXBkYXRlU2Nyb2xsQmFyKHMudmlldyksITEpOihzLmhpZGRlbnx8cy52aXNpYmlsaXR5PyFzLnJhaWxofHxzLmhpZGRlbnx8cy5yYWlsaC52aXNpYmlsaXR5fHxzLnNob3dSYWlsSHIoKTpzLnNob3dSYWlsKCkuc2hvd1JhaWxIcigpLHMuaXN0ZXh0YXJlYSYmcy53aW4uY3NzKCJyZXNpemUiKSYmIm5vbmUiIT1zLndpbi5jc3MoInJlc2l6ZSIpJiYocy52aWV3LmgtPTIwKSxzLmN1cnNvcmhlaWdodD1NYXRoLm1pbihzLnZpZXcuaCxNYXRoLnJvdW5kKHMudmlldy5oL3MucGFnZS5oKnMudmlldy5oKSkscy5jdXJzb3JoZWlnaHQ9cy5vcHQuY3Vyc29yZml4ZWRoZWlnaHQ/cy5vcHQuY3Vyc29yZml4ZWRoZWlnaHQ6TWF0aC5tYXgocy5vcHQuY3Vyc29ybWluaGVpZ2h0LHMuY3Vyc29yaGVpZ2h0KSxzLmN1cnNvcndpZHRoPU1hdGgubWluKHMudmlldy53LE1hdGgucm91bmQocy52aWV3Lncvcy5wYWdlLncqcy52aWV3LncpKSxzLmN1cnNvcndpZHRoPXMub3B0LmN1cnNvcmZpeGVkaGVpZ2h0P3Mub3B0LmN1cnNvcmZpeGVkaGVpZ2h0Ok1hdGgubWF4KHMub3B0LmN1cnNvcm1pbmhlaWdodCxzLmN1cnNvcndpZHRoKSxzLnNjcm9sbHZhbHVlbWF4PXMudmlldy5oLXMuY3Vyc29yaGVpZ2h0LXMuY3Vyc29yLmhib3JkZXItKHMub3B0LnJhaWxwYWRkaW5nLnRvcCtzLm9wdC5yYWlscGFkZGluZy5ib3R0b20pLHMucmFpbGgmJihzLnJhaWxoLndpZHRoPTA8cy5wYWdlLm1heGg/cy52aWV3Lnctcy5yYWlsLndpZHRoOnMudmlldy53LHMuc2Nyb2xsdmFsdWVtYXh3PXMucmFpbGgud2lkdGgtcy5jdXJzb3J3aWR0aC1zLmN1cnNvcmgud2JvcmRlci0ocy5vcHQucmFpbHBhZGRpbmcubGVmdCtzLm9wdC5yYWlscGFkZGluZy5yaWdodCkpLHMuaXNwYWdlfHxzLnVwZGF0ZVNjcm9sbEJhcihzLnZpZXcpLHMuc2Nyb2xscmF0aW89e3g6cy5wYWdlLm1heHcvcy5zY3JvbGx2YWx1ZW1heHcseTpzLnBhZ2UubWF4aC9zLnNjcm9sbHZhbHVlbWF4fSxzLmdldFNjcm9sbFRvcCgpPnMucGFnZS5tYXhoP3MuZG9TY3JvbGxUb3Aocy5wYWdlLm1heGgpOihzLnNjcm9sbC55PU1hdGgucm91bmQocy5nZXRTY3JvbGxUb3AoKSooMS9zLnNjcm9sbHJhdGlvLnkpKSxzLnNjcm9sbC54PU1hdGgucm91bmQocy5nZXRTY3JvbGxMZWZ0KCkqKDEvcy5zY3JvbGxyYXRpby54KSkscy5jdXJzb3JhY3RpdmUmJnMubm90aWNlQ3Vyc29yKCkpLHMuc2Nyb2xsLnkmJjA9PXMuZ2V0U2Nyb2xsVG9wKCkmJnMuZG9TY3JvbGxUbyhNYXRoLmZsb29yKHMuc2Nyb2xsLnkqcy5zY3JvbGxyYXRpby55KSkscyl9LHRoaXMucmVzaXplPXMub25SZXNpemUsdGhpcy5obGF6eXJlc2l6ZT0wLHRoaXMubGF6eVJlc2l6ZT1mdW5jdGlvbih4KXtyZXR1cm4gcy5oYXN3cmFwcGVyfHxzLmhpZGUoKSxzLmhsYXp5cmVzaXplJiZjbGVhclRpbWVvdXQocy5obGF6eXJlc2l6ZSkscy5obGF6eXJlc2l6ZT1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cyYmcy5zaG93KCkucmVzaXplKCl9LDI0MCksc30sdGhpcy5qcWJpbmQ9ZnVuY3Rpb24oYSxiLGMpe3MuZXZlbnRzLnB1c2goe2U6YSxuOmIsZjpjLHE6ITB9KSx4KGEpLmJpbmQoYixjKX0sdGhpcy5tb3VzZXdoZWVsPWZ1bmN0aW9uKHgsYSxiKXtpZih4PSJqcXVlcnkiaW4geD94WzBdOngsIm9ud2hlZWwiaW4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iikpcy5fYmluZCh4LCJ3aGVlbCIsYSxifHwhMSk7ZWxzZXt2YXIgYz12b2lkIDAhPT1kb2N1bWVudC5vbm1vdXNld2hlZWw/Im1vdXNld2hlZWwiOiJET01Nb3VzZVNjcm9sbCI7cSh4LGMsYSxifHwhMSksIkRPTU1vdXNlU2Nyb2xsIj09YyYmcSh4LCJNb3pNb3VzZVBpeGVsU2Nyb2xsIixhLGJ8fCExKX19LHYuaGFzZXZlbnRsaXN0ZW5lcj8odGhpcy5iaW5kPWZ1bmN0aW9uKHgsYSxiLGMpe3MuX2JpbmQoImpxdWVyeSJpbiB4P3hbMF06eCxhLGIsY3x8ITEpfSx0aGlzLl9iaW5kPWZ1bmN0aW9uKHgsYSxiLGMpe3MuZXZlbnRzLnB1c2goe2U6eCxuOmEsZjpiLGI6YyxxOiExfSkseC5hZGRFdmVudExpc3RlbmVyKGEsYixjfHwhMSl9LHRoaXMuY2FuY2VsRXZlbnQ9ZnVuY3Rpb24oeCl7cmV0dXJuISF4JiYoKHg9eC5vcmlnaW5hbD94Lm9yaWdpbmFsOngpLmNhbmNlbGFibGUmJngucHJldmVudERlZmF1bHQoKSx4LnN0b3BQcm9wYWdhdGlvbigpLHgucHJldmVudE1hbmlwdWxhdGlvbiYmeC5wcmV2ZW50TWFuaXB1bGF0aW9uKCksITEpfSx0aGlzLnN0b3BQcm9wYWdhdGlvbj1mdW5jdGlvbih4KXtyZXR1cm4hIXgmJigoeD14Lm9yaWdpbmFsP3gub3JpZ2luYWw6eCkuc3RvcFByb3BhZ2F0aW9uKCksITEpfSx0aGlzLl91bmJpbmQ9ZnVuY3Rpb24oeCxhLGIsYyl7eC5yZW1vdmVFdmVudExpc3RlbmVyKGEsYixjKX0pOih0aGlzLmJpbmQ9ZnVuY3Rpb24oeCxhLGIsYyl7dmFyIGQ9ImpxdWVyeSJpbiB4P3hbMF06eDtzLl9iaW5kKGQsYSxmdW5jdGlvbih4KXtyZXR1cm4oeD14fHx3aW5kb3cuZXZlbnR8fCExKSYmeC5zcmNFbGVtZW50JiYoeC50YXJnZXQ9eC5zcmNFbGVtZW50KSwicGFnZVkiaW4geHx8KHgucGFnZVg9eC5jbGllbnRYK2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0LHgucGFnZVk9eC5jbGllbnRZK2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3ApLCExIT09Yi5jYWxsKGQseCkmJiExIT09Y3x8cy5jYW5jZWxFdmVudCh4KX0pfSx0aGlzLl9iaW5kPWZ1bmN0aW9uKHgsYSxiLGMpe3MuZXZlbnRzLnB1c2goe2U6eCxuOmEsZjpiLGI6YyxxOiExfSkseC5hdHRhY2hFdmVudD94LmF0dGFjaEV2ZW50KCJvbiIrYSxiKTp4WyJvbiIrYV09Yn0sdGhpcy5jYW5jZWxFdmVudD1mdW5jdGlvbih4KXtyZXR1cm4hISh4PXdpbmRvdy5ldmVudHx8ITEpJiYoeC5jYW5jZWxCdWJibGU9ITAseC5jYW5jZWw9ITAseC5yZXR1cm5WYWx1ZT0hMSl9LHRoaXMuc3RvcFByb3BhZ2F0aW9uPWZ1bmN0aW9uKHgpe3JldHVybiEhKHg9d2luZG93LmV2ZW50fHwhMSkmJih4LmNhbmNlbEJ1YmJsZT0hMCwhMSl9LHRoaXMuX3VuYmluZD1mdW5jdGlvbih4LGEsYixjKXt4LmRldGFjaEV2ZW50P3guZGV0YWNoRXZlbnQoIm9uIithLGIpOnhbIm9uIithXT0hMX0pLHRoaXMudW5iaW5kQWxsPWZ1bmN0aW9uKCl7Zm9yKHZhciB4PTA7eDxzLmV2ZW50cy5sZW5ndGg7eCsrKXt2YXIgYT1zLmV2ZW50c1t4XTthLnE/YS5lLnVuYmluZChhLm4sYS5mKTpzLl91bmJpbmQoYS5lLGEubixhLmYsYS5iKX19LHRoaXMuc2hvd1JhaWw9ZnVuY3Rpb24oKXtyZXR1cm4gMD09cy5wYWdlLm1heGh8fCFzLmlzcGFnZSYmIm5vbmUiPT1zLndpbi5jc3MoImRpc3BsYXkiKXx8KHMudmlzaWJpbGl0eT0hMCxzLnJhaWwudmlzaWJpbGl0eT0hMCxzLnJhaWwuY3NzKCJkaXNwbGF5IiwiYmxvY2siKSksc30sdGhpcy5zaG93UmFpbEhyPWZ1bmN0aW9uKCl7cmV0dXJuIHMucmFpbGg/KDA9PXMucGFnZS5tYXh3fHwhcy5pc3BhZ2UmJiJub25lIj09cy53aW4uY3NzKCJkaXNwbGF5Iil8fChzLnJhaWxoLnZpc2liaWxpdHk9ITAscy5yYWlsaC5jc3MoImRpc3BsYXkiLCJibG9jayIpKSxzKTpzfSx0aGlzLmhpZGVSYWlsPWZ1bmN0aW9uKCl7cmV0dXJuIHMudmlzaWJpbGl0eT0hMSxzLnJhaWwudmlzaWJpbGl0eT0hMSxzLnJhaWwuY3NzKCJkaXNwbGF5Iiwibm9uZSIpLHN9LHRoaXMuaGlkZVJhaWxIcj1mdW5jdGlvbigpe3JldHVybiBzLnJhaWxoPyhzLnJhaWxoLnZpc2liaWxpdHk9ITEscy5yYWlsaC5jc3MoImRpc3BsYXkiLCJub25lIikscyk6c30sdGhpcy5zaG93PWZ1bmN0aW9uKCl7cmV0dXJuIHMuaGlkZGVuPSExLHMucmFpbHNsb2NrZWQ9ITEscy5zaG93UmFpbCgpLnNob3dSYWlsSHIoKX0sdGhpcy5oaWRlPWZ1bmN0aW9uKCl7cmV0dXJuIHMuaGlkZGVuPSEwLHMucmFpbHNsb2NrZWQ9ITAscy5oaWRlUmFpbCgpLmhpZGVSYWlsSHIoKX0sdGhpcy50b2dnbGU9ZnVuY3Rpb24oKXtyZXR1cm4gcy5oaWRkZW4/cy5zaG93KCk6cy5oaWRlKCl9LHRoaXMucmVtb3ZlPWZ1bmN0aW9uKCl7Zm9yKHZhciBhIGluIHMuc3RvcCgpLHMuY3Vyc29ydGltZW91dCYmY2xlYXJUaW1lb3V0KHMuY3Vyc29ydGltZW91dCkscy5kZWxheWxpc3Qpcy5kZWxheWxpc3RbYV0mJmgocy5kZWxheWxpc3RbYV0uaCk7Zm9yKHMuZG9ab29tT3V0KCkscy51bmJpbmRBbGwoKSx2LmlzaWU5JiZzLndpblswXS5kZXRhY2hFdmVudCgib25wcm9wZXJ0eWNoYW5nZSIscy5vbkF0dHJpYnV0ZUNoYW5nZSksITEhPT1zLm9ic2VydmVyJiZzLm9ic2VydmVyLmRpc2Nvbm5lY3QoKSwhMSE9PXMub2JzZXJ2ZXJyZW1vdmVyJiZzLm9ic2VydmVycmVtb3Zlci5kaXNjb25uZWN0KCksITEhPT1zLm9ic2VydmVyYm9keSYmcy5vYnNlcnZlcmJvZHkuZGlzY29ubmVjdCgpLHMuZXZlbnRzPW51bGwscy5jdXJzb3ImJnMuY3Vyc29yLnJlbW92ZSgpLHMuY3Vyc29yaCYmcy5jdXJzb3JoLnJlbW92ZSgpLHMucmFpbCYmcy5yYWlsLnJlbW92ZSgpLHMucmFpbGgmJnMucmFpbGgucmVtb3ZlKCkscy56b29tJiZzLnpvb20ucmVtb3ZlKCksYT0wO2E8cy5zYXZlZC5jc3MubGVuZ3RoO2ErKyl7dmFyIGI9cy5zYXZlZC5jc3NbYV07YlswXS5jc3MoYlsxXSx2b2lkIDA9PT1iWzJdPyIiOmJbMl0pfXMuc2F2ZWQ9ITEscy5tZS5kYXRhKCJfX25pY2VzY3JvbGwiLCIiKTt2YXIgYz14Lm5pY2VzY3JvbGw7Zm9yKHZhciBkIGluIGMuZWFjaChmdW5jdGlvbih4KXtpZih0aGlzJiZ0aGlzLmlkPT09cy5pZCl7ZGVsZXRlIGNbeF07Zm9yKHZhciBhPSsreDthPGMubGVuZ3RoO2ErKyx4KyspY1t4XT1jW2FdO2MubGVuZ3RoLS0sYy5sZW5ndGgmJmRlbGV0ZSBjW2MubGVuZ3RoXX19KSxzKXNbZF09bnVsbCxkZWxldGUgc1tkXTtzPW51bGx9LHRoaXMuc2Nyb2xsc3RhcnQ9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMub25zY3JvbGxzdGFydD14LHN9LHRoaXMuc2Nyb2xsZW5kPWZ1bmN0aW9uKHgpe3JldHVybiB0aGlzLm9uc2Nyb2xsZW5kPXgsc30sdGhpcy5zY3JvbGxjYW5jZWw9ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMub25zY3JvbGxjYW5jZWw9eCxzfSx0aGlzLnpvb21pbj1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5vbnpvb21pbj14LHN9LHRoaXMuem9vbW91dD1mdW5jdGlvbih4KXtyZXR1cm4gdGhpcy5vbnpvb21vdXQ9eCxzfSx0aGlzLmlzU2Nyb2xsYWJsZT1mdW5jdGlvbihhKXtpZigiT1BUSU9OIj09KGE9YS50YXJnZXQ/YS50YXJnZXQ6YSkubm9kZU5hbWUpcmV0dXJuITA7Zm9yKDthJiYxPT1hLm5vZGVUeXBlJiYhL15CT0RZfEhUTUwvLnRlc3QoYS5ub2RlTmFtZSk7KXt2YXIgYj0oYj14KGEpKS5jc3MoIm92ZXJmbG93WSIpfHxiLmNzcygib3ZlcmZsb3dYIil8fGIuY3NzKCJvdmVyZmxvdyIpfHwiIjtpZigvc2Nyb2xsfGF1dG8vLnRlc3QoYikpcmV0dXJuIGEuY2xpZW50SGVpZ2h0IT1hLnNjcm9sbEhlaWdodDthPSEhYS5wYXJlbnROb2RlJiZhLnBhcmVudE5vZGV9cmV0dXJuITF9LHRoaXMuZ2V0Vmlld3BvcnQ9ZnVuY3Rpb24oYSl7Zm9yKGE9ISghYXx8IWEucGFyZW50Tm9kZSkmJmEucGFyZW50Tm9kZTthJiYxPT1hLm5vZGVUeXBlJiYhL15CT0RZfEhUTUwvLnRlc3QoYS5ub2RlTmFtZSk7KXt2YXIgYj14KGEpO2lmKC9maXhlZHxhYnNvbHV0ZS8udGVzdChiLmNzcygicG9zaXRpb24iKSkpcmV0dXJuIGI7dmFyIGM9Yi5jc3MoIm92ZXJmbG93WSIpfHxiLmNzcygib3ZlcmZsb3dYIil8fGIuY3NzKCJvdmVyZmxvdyIpfHwiIjtpZigvc2Nyb2xsfGF1dG8vLnRlc3QoYykmJmEuY2xpZW50SGVpZ2h0IT1hLnNjcm9sbEhlaWdodHx8MDxiLmdldE5pY2VTY3JvbGwoKS5sZW5ndGgpcmV0dXJuIGI7YT0hIWEucGFyZW50Tm9kZSYmYS5wYXJlbnROb2RlfXJldHVybiExfSx0aGlzLnRyaWdnZXJTY3JvbGxFbmQ9ZnVuY3Rpb24oKXtpZihzLm9uc2Nyb2xsZW5kKXt2YXIgeD1zLmdldFNjcm9sbExlZnQoKSxhPXMuZ2V0U2Nyb2xsVG9wKCk7cy5vbnNjcm9sbGVuZC5jYWxsKHMse3R5cGU6InNjcm9sbGVuZCIsY3VycmVudDp7eDp4LHk6YX0sZW5kOnt4OngseTphfX0pfX0sdGhpcy5vbm1vdXNld2hlZWw9ZnVuY3Rpb24oeCl7aWYoIXMud2hlZWxwcmV2ZW50ZWQpe2lmKHMucmFpbHNsb2NrZWQpcmV0dXJuIHMuZGVib3VuY2VkKCJjaGVja3VubG9jayIscy5yZXNpemUsMjUwKSwhMDtpZihzLnJhaWwuZHJhZylyZXR1cm4gcy5jYW5jZWxFdmVudCh4KTtpZigiYXV0byI9PXMub3B0Lm9uZWF4aXNtb3VzZW1vZGUmJjAhPXguZGVsdGFYJiYocy5vcHQub25lYXhpc21vdXNlbW9kZT0hMSkscy5vcHQub25lYXhpc21vdXNlbW9kZSYmMD09eC5kZWx0YVgmJiFzLnJhaWwuc2Nyb2xsYWJsZSlyZXR1cm4hcy5yYWlsaHx8IXMucmFpbGguc2Nyb2xsYWJsZXx8cy5vbm1vdXNld2hlZWxocih4KTt2YXIgYT0rbmV3IERhdGUsYj0hMTtyZXR1cm4gcy5vcHQucHJlc2VydmVuYXRpdmVzY3JvbGxpbmcmJnMuY2hlY2thcmVhKzYwMDxhJiYocy5uYXRpdmVzY3JvbGxpbmdhcmVhPXMuaXNTY3JvbGxhYmxlKHgpLGI9ITApLHMuY2hlY2thcmVhPWEscy5uYXRpdmVzY3JvbGxpbmdhcmVhPyEwOigoeD1yKHgsITEsYikpJiYocy5jaGVja2FyZWE9MCkseCl9fSx0aGlzLm9ubW91c2V3aGVlbGhyPWZ1bmN0aW9uKHgpe2lmKCFzLndoZWVscHJldmVudGVkKXtpZihzLnJhaWxzbG9ja2VkfHwhcy5yYWlsaC5zY3JvbGxhYmxlKXJldHVybiEwO2lmKHMucmFpbC5kcmFnKXJldHVybiBzLmNhbmNlbEV2ZW50KHgpO3ZhciBhPStuZXcgRGF0ZSxiPSExO3JldHVybiBzLm9wdC5wcmVzZXJ2ZW5hdGl2ZXNjcm9sbGluZyYmcy5jaGVja2FyZWErNjAwPGEmJihzLm5hdGl2ZXNjcm9sbGluZ2FyZWE9cy5pc1Njcm9sbGFibGUoeCksYj0hMCkscy5jaGVja2FyZWE9YSwhIXMubmF0aXZlc2Nyb2xsaW5nYXJlYXx8KHMucmFpbHNsb2NrZWQ/cy5jYW5jZWxFdmVudCh4KTpyKHgsITAsYikpfX0sdGhpcy5zdG9wPWZ1bmN0aW9uKCl7cmV0dXJuIHMuY2FuY2VsU2Nyb2xsKCkscy5zY3JvbGxtb24mJnMuc2Nyb2xsbW9uLnN0b3AoKSxzLmN1cnNvcmZyZWV6ZWQ9ITEscy5zY3JvbGwueT1NYXRoLnJvdW5kKHMuZ2V0U2Nyb2xsVG9wKCkqKDEvcy5zY3JvbGxyYXRpby55KSkscy5ub3RpY2VDdXJzb3IoKSxzfSx0aGlzLmdldFRyYW5zaXRpb25TcGVlZD1mdW5jdGlvbih4KXtyZXR1cm4gMjA8KHg9TWF0aC5taW4oTWF0aC5yb3VuZCgxMCpzLm9wdC5zY3JvbGxzcGVlZCksTWF0aC5yb3VuZCh4LzIwKnMub3B0LnNjcm9sbHNwZWVkKSkpP3g6MH0scy5vcHQuc21vb3Roc2Nyb2xsP3MuaXNod3Njcm9sbCYmdi5oYXN0cmFuc2l0aW9uJiZzLm9wdC51c2V0cmFuc2l0aW9uJiZzLm9wdC5zbW9vdGhzY3JvbGw/KHRoaXMucHJlcGFyZVRyYW5zaXRpb249ZnVuY3Rpb24oeCxhKXt2YXIgYj1hPzIwPHg/eDowOnMuZ2V0VHJhbnNpdGlvblNwZWVkKHgpLGM9Yj92LnByZWZpeHN0eWxlKyJ0cmFuc2Zvcm0gIitiKyJtcyBlYXNlLW91dCI6IiI7cmV0dXJuIHMubGFzdHRyYW5zaXRpb25zdHlsZSYmcy5sYXN0dHJhbnNpdGlvbnN0eWxlPT1jfHwocy5sYXN0dHJhbnNpdGlvbnN0eWxlPWMscy5kb2MuY3NzKHYudHJhbnNpdGlvbnN0eWxlLGMpKSxifSx0aGlzLmRvU2Nyb2xsTGVmdD1mdW5jdGlvbih4LGEpe3ZhciBiPXMuc2Nyb2xscnVubmluZz9zLm5ld3Njcm9sbHk6cy5nZXRTY3JvbGxUb3AoKTtzLmRvU2Nyb2xsUG9zKHgsYixhKX0sdGhpcy5kb1Njcm9sbFRvcD1mdW5jdGlvbih4LGEpe3ZhciBiPXMuc2Nyb2xscnVubmluZz9zLm5ld3Njcm9sbHg6cy5nZXRTY3JvbGxMZWZ0KCk7cy5kb1Njcm9sbFBvcyhiLHgsYSl9LHRoaXMuZG9TY3JvbGxQb3M9ZnVuY3Rpb24oeCxhLGIpe3ZhciBjPXMuZ2V0U2Nyb2xsVG9wKCksZD1zLmdldFNjcm9sbExlZnQoKTtyZXR1cm4oMD4ocy5uZXdzY3JvbGx5LWMpKihhLWMpfHwwPihzLm5ld3Njcm9sbHgtZCkqKHgtZCkpJiZzLmNhbmNlbFNjcm9sbCgpLDA9PXMub3B0LmJvdW5jZXNjcm9sbCYmKDA+YT9hPTA6YT5zLnBhZ2UubWF4aCYmKGE9cy5wYWdlLm1heGgpLDA+eD94PTA6eD5zLnBhZ2UubWF4dyYmKHg9cy5wYWdlLm1heHcpKSwoIXMuc2Nyb2xscnVubmluZ3x8eCE9cy5uZXdzY3JvbGx4fHxhIT1zLm5ld3Njcm9sbHkpJiYocy5uZXdzY3JvbGx5PWEscy5uZXdzY3JvbGx4PXgscy5uZXdzY3JvbGxzcGVlZD1ifHwhMSwhcy50aW1lciYmKHMudGltZXI9c2V0VGltZW91dChmdW5jdGlvbigpe3ZhciBiPXMuZ2V0U2Nyb2xsVG9wKCksYz1zLmdldFNjcm9sbExlZnQoKSxkPU1hdGgucm91bmQoTWF0aC5zcXJ0KE1hdGgucG93KHgtYywyKStNYXRoLnBvdyhhLWIsMikpKTtkPXMubmV3c2Nyb2xsc3BlZWQmJjE8cy5uZXdzY3JvbGxzcGVlZD9zLm5ld3Njcm9sbHNwZWVkOnMuZ2V0VHJhbnNpdGlvblNwZWVkKGQpO3MubmV3c2Nyb2xsc3BlZWQmJjE+PXMubmV3c2Nyb2xsc3BlZWQmJihkKj1zLm5ld3Njcm9sbHNwZWVkKSxzLnByZXBhcmVUcmFuc2l0aW9uKGQsITApLHMudGltZXJzY3JvbGwmJnMudGltZXJzY3JvbGwudG0mJmNsZWFySW50ZXJ2YWwocy50aW1lcnNjcm9sbC50bSksMDxkJiYoIXMuc2Nyb2xscnVubmluZyYmcy5vbnNjcm9sbHN0YXJ0JiZzLm9uc2Nyb2xsc3RhcnQuY2FsbChzLHt0eXBlOiJzY3JvbGxzdGFydCIsY3VycmVudDp7eDpjLHk6Yn0scmVxdWVzdDp7eDp4LHk6YX0sZW5kOnt4OnMubmV3c2Nyb2xseCx5OnMubmV3c2Nyb2xseX0sc3BlZWQ6ZH0pLHYudHJhbnNpdGlvbmVuZD9zLnNjcm9sbGVuZHRyYXBwZWR8fChzLnNjcm9sbGVuZHRyYXBwZWQ9ITAscy5iaW5kKHMuZG9jLHYudHJhbnNpdGlvbmVuZCxzLm9uU2Nyb2xsVHJhbnNpdGlvbkVuZCwhMSkpOihzLnNjcm9sbGVuZHRyYXBwZWQmJmNsZWFyVGltZW91dChzLnNjcm9sbGVuZHRyYXBwZWQpLHMuc2Nyb2xsZW5kdHJhcHBlZD1zZXRUaW1lb3V0KHMub25TY3JvbGxUcmFuc2l0aW9uRW5kLGQpKSxzLnRpbWVyc2Nyb2xsPXtiejpuZXcgeShiLHMubmV3c2Nyb2xseSxkLDAsMCwuNTgsMSksYmg6bmV3IHkoYyxzLm5ld3Njcm9sbHgsZCwwLDAsLjU4LDEpfSxzLmN1cnNvcmZyZWV6ZWR8fChzLnRpbWVyc2Nyb2xsLnRtPXNldEludGVydmFsKGZ1bmN0aW9uKCl7cy5zaG93Q3Vyc29yKHMuZ2V0U2Nyb2xsVG9wKCkscy5nZXRTY3JvbGxMZWZ0KCkpfSw2MCkpKSxzLnN5bmNoZWQoImRvU2Nyb2xsLXNldCIsZnVuY3Rpb24oKXtzLnRpbWVyPTAscy5zY3JvbGxlbmR0cmFwcGVkJiYocy5zY3JvbGxydW5uaW5nPSEwKSxzLnNldFNjcm9sbFRvcChzLm5ld3Njcm9sbHkpLHMuc2V0U2Nyb2xsTGVmdChzLm5ld3Njcm9sbHgpLHMuc2Nyb2xsZW5kdHJhcHBlZHx8cy5vblNjcm9sbFRyYW5zaXRpb25FbmQoKX0pfSw1MCksdm9pZCAwKSl9LHRoaXMuY2FuY2VsU2Nyb2xsPWZ1bmN0aW9uKCl7aWYoIXMuc2Nyb2xsZW5kdHJhcHBlZClyZXR1cm4hMDt2YXIgeD1zLmdldFNjcm9sbFRvcCgpLGE9cy5nZXRTY3JvbGxMZWZ0KCk7cmV0dXJuIHMuc2Nyb2xscnVubmluZz0hMSx2LnRyYW5zaXRpb25lbmR8fGNsZWFyVGltZW91dCh2LnRyYW5zaXRpb25lbmQpLHMuc2Nyb2xsZW5kdHJhcHBlZD0hMSxzLl91bmJpbmQocy5kb2NbMF0sdi50cmFuc2l0aW9uZW5kLHMub25TY3JvbGxUcmFuc2l0aW9uRW5kKSxzLnByZXBhcmVUcmFuc2l0aW9uKDApLHMuc2V0U2Nyb2xsVG9wKHgpLHMucmFpbGgmJnMuc2V0U2Nyb2xsTGVmdChhKSxzLnRpbWVyc2Nyb2xsJiZzLnRpbWVyc2Nyb2xsLnRtJiZjbGVhckludGVydmFsKHMudGltZXJzY3JvbGwudG0pLHMudGltZXJzY3JvbGw9ITEscy5jdXJzb3JmcmVlemVkPSExLHMuc2hvd0N1cnNvcih4LGEpLHN9LHRoaXMub25TY3JvbGxUcmFuc2l0aW9uRW5kPWZ1bmN0aW9uKCl7cy5zY3JvbGxlbmR0cmFwcGVkJiZzLl91bmJpbmQocy5kb2NbMF0sdi50cmFuc2l0aW9uZW5kLHMub25TY3JvbGxUcmFuc2l0aW9uRW5kKSxzLnNjcm9sbGVuZHRyYXBwZWQ9ITEscy5wcmVwYXJlVHJhbnNpdGlvbigwKSxzLnRpbWVyc2Nyb2xsJiZzLnRpbWVyc2Nyb2xsLnRtJiZjbGVhckludGVydmFsKHMudGltZXJzY3JvbGwudG0pLHMudGltZXJzY3JvbGw9ITE7dmFyIHg9cy5nZXRTY3JvbGxUb3AoKSxhPXMuZ2V0U2Nyb2xsTGVmdCgpO2lmKHMuc2V0U2Nyb2xsVG9wKHgpLHMucmFpbGgmJnMuc2V0U2Nyb2xsTGVmdChhKSxzLm5vdGljZUN1cnNvcighMSx4LGEpLHMuY3Vyc29yZnJlZXplZD0hMSwwPng/eD0wOng+cy5wYWdlLm1heGgmJih4PXMucGFnZS5tYXhoKSwwPmE/YT0wOmE+cy5wYWdlLm1heHcmJihhPXMucGFnZS5tYXh3KSx4IT1zLm5ld3Njcm9sbHl8fGEhPXMubmV3c2Nyb2xseClyZXR1cm4gcy5kb1Njcm9sbFBvcyhhLHgscy5vcHQuc25hcGJhY2tzcGVlZCk7cy5vbnNjcm9sbGVuZCYmcy5zY3JvbGxydW5uaW5nJiZzLnRyaWdnZXJTY3JvbGxFbmQoKSxzLnNjcm9sbHJ1bm5pbmc9ITF9KToodGhpcy5kb1Njcm9sbExlZnQ9ZnVuY3Rpb24oeCxhKXt2YXIgYj1zLnNjcm9sbHJ1bm5pbmc/cy5uZXdzY3JvbGx5OnMuZ2V0U2Nyb2xsVG9wKCk7cy5kb1Njcm9sbFBvcyh4LGIsYSl9LHRoaXMuZG9TY3JvbGxUb3A9ZnVuY3Rpb24oeCxhKXt2YXIgYj1zLnNjcm9sbHJ1bm5pbmc/cy5uZXdzY3JvbGx4OnMuZ2V0U2Nyb2xsTGVmdCgpO3MuZG9TY3JvbGxQb3MoYix4LGEpfSx0aGlzLmRvU2Nyb2xsUG9zPWZ1bmN0aW9uKHgsYSxiKXtmdW5jdGlvbiBjKCl7aWYocy5jYW5jZWxBbmltYXRpb25GcmFtZSlyZXR1cm4hMDtpZihzLnNjcm9sbHJ1bm5pbmc9ITAsaz0xLWspcmV0dXJuIHMudGltZXI9ZyhjKXx8MTt2YXIgeCxhLGI9MCxkPWE9cy5nZXRTY3JvbGxUb3AoKTtzLmRzdC5heT8oKDA+KHg9KGQ9cy5ienNjcm9sbD9zLmRzdC5weStzLmJ6c2Nyb2xsLmdldE5vdygpKnMuZHN0LmF5OnMubmV3c2Nyb2xseSktYSkmJmQ8cy5uZXdzY3JvbGx5fHwwPHgmJmQ+cy5uZXdzY3JvbGx5KSYmKGQ9cy5uZXdzY3JvbGx5KSxzLnNldFNjcm9sbFRvcChkKSxkPT1zLm5ld3Njcm9sbHkmJihiPTEpKTpiPTEsYT14PXMuZ2V0U2Nyb2xsTGVmdCgpLHMuZHN0LmF4PygoMD4oeD0oYT1zLmJ6c2Nyb2xsP3MuZHN0LnB4K3MuYnpzY3JvbGwuZ2V0Tm93KCkqcy5kc3QuYXg6cy5uZXdzY3JvbGx4KS14KSYmYTxzLm5ld3Njcm9sbHh8fDA8eCYmYT5zLm5ld3Njcm9sbHgpJiYoYT1zLm5ld3Njcm9sbHgpLHMuc2V0U2Nyb2xsTGVmdChhKSxhPT1zLm5ld3Njcm9sbHgmJihiKz0xKSk6Yis9MSwyPT1iPyhzLnRpbWVyPTAscy5jdXJzb3JmcmVlemVkPSExLHMuYnpzY3JvbGw9ITEscy5zY3JvbGxydW5uaW5nPSExLDA+ZD9kPTA6ZD5zLnBhZ2UubWF4aCYmKGQ9TWF0aC5tYXgoMCxzLnBhZ2UubWF4aCkpLDA+YT9hPTA6YT5zLnBhZ2UubWF4dyYmKGE9cy5wYWdlLm1heHcpLGEhPXMubmV3c2Nyb2xseHx8ZCE9cy5uZXdzY3JvbGx5P3MuZG9TY3JvbGxQb3MoYSxkKTpzLm9uc2Nyb2xsZW5kJiZzLnRyaWdnZXJTY3JvbGxFbmQoKSk6cy50aW1lcj1nKGMpfHwxfWlmKGE9dm9pZCAwPT09YXx8ITE9PT1hP3MuZ2V0U2Nyb2xsVG9wKCEwKTphLHMudGltZXImJnMubmV3c2Nyb2xseT09YSYmcy5uZXdzY3JvbGx4PT14KXJldHVybiEwO3MudGltZXImJmgocy50aW1lcikscy50aW1lcj0wO3ZhciBkPXMuZ2V0U2Nyb2xsVG9wKCksZT1zLmdldFNjcm9sbExlZnQoKTsoMD4ocy5uZXdzY3JvbGx5LWQpKihhLWQpfHwwPihzLm5ld3Njcm9sbHgtZSkqKHgtZSkpJiZzLmNhbmNlbFNjcm9sbCgpLHMubmV3c2Nyb2xseT1hLHMubmV3c2Nyb2xseD14LHMuYm91bmNlc2Nyb2xsJiZzLnJhaWwudmlzaWJpbGl0eXx8KDA+cy5uZXdzY3JvbGx5P3MubmV3c2Nyb2xseT0wOnMubmV3c2Nyb2xseT5zLnBhZ2UubWF4aCYmKHMubmV3c2Nyb2xseT1zLnBhZ2UubWF4aCkpLHMuYm91bmNlc2Nyb2xsJiZzLnJhaWxoLnZpc2liaWxpdHl8fCgwPnMubmV3c2Nyb2xseD9zLm5ld3Njcm9sbHg9MDpzLm5ld3Njcm9sbHg+cy5wYWdlLm1heHcmJihzLm5ld3Njcm9sbHg9cy5wYWdlLm1heHcpKSxzLmRzdD17fSxzLmRzdC54PXgtZSxzLmRzdC55PWEtZCxzLmRzdC5weD1lLHMuZHN0LnB5PWQ7dmFyIGY9TWF0aC5yb3VuZChNYXRoLnNxcnQoTWF0aC5wb3cocy5kc3QueCwyKStNYXRoLnBvdyhzLmRzdC55LDIpKSk7cy5kc3QuYXg9cy5kc3QueC9mLHMuZHN0LmF5PXMuZHN0LnkvZjt2YXIgaT0wLGo9ZjtpZigwPT1zLmRzdC54PyhpPWQsaj1hLHMuZHN0LmF5PTEscy5kc3QucHk9MCk6MD09cy5kc3QueSYmKGk9ZSxqPXgscy5kc3QuYXg9MSxzLmRzdC5weD0wKSxmPXMuZ2V0VHJhbnNpdGlvblNwZWVkKGYpLGImJjE+PWImJihmKj1iKSxzLmJ6c2Nyb2xsPTA8ZiYmKHMuYnpzY3JvbGw/cy5ienNjcm9sbC51cGRhdGUoaixmKTpuZXcgeShpLGosZiwwLDEsMCwxKSksIXMudGltZXIpeyhkPT1zLnBhZ2UubWF4aCYmYT49cy5wYWdlLm1heGh8fGU9PXMucGFnZS5tYXh3JiZ4Pj1zLnBhZ2UubWF4dykmJnMuY2hlY2tDb250ZW50U2l6ZSgpO3ZhciBrPTE7cy5jYW5jZWxBbmltYXRpb25GcmFtZT0hMSxzLnRpbWVyPTEscy5vbnNjcm9sbHN0YXJ0JiYhcy5zY3JvbGxydW5uaW5nJiZzLm9uc2Nyb2xsc3RhcnQuY2FsbChzLHt0eXBlOiJzY3JvbGxzdGFydCIsY3VycmVudDp7eDplLHk6ZH0scmVxdWVzdDp7eDp4LHk6YX0sZW5kOnt4OnMubmV3c2Nyb2xseCx5OnMubmV3c2Nyb2xseX0sc3BlZWQ6Zn0pLGMoKSwoZD09cy5wYWdlLm1heGgmJmE+PWR8fGU9PXMucGFnZS5tYXh3JiZ4Pj1lKSYmcy5jaGVja0NvbnRlbnRTaXplKCkscy5ub3RpY2VDdXJzb3IoKX19LHRoaXMuY2FuY2VsU2Nyb2xsPWZ1bmN0aW9uKCl7cmV0dXJuIHMudGltZXImJmgocy50aW1lcikscy50aW1lcj0wLHMuYnpzY3JvbGw9ITEscy5zY3JvbGxydW5uaW5nPSExLHN9KToodGhpcy5kb1Njcm9sbExlZnQ9ZnVuY3Rpb24oeCxhKXt2YXIgYj1zLmdldFNjcm9sbFRvcCgpO3MuZG9TY3JvbGxQb3MoeCxiLGEpfSx0aGlzLmRvU2Nyb2xsVG9wPWZ1bmN0aW9uKHgsYSl7dmFyIGI9cy5nZXRTY3JvbGxMZWZ0KCk7cy5kb1Njcm9sbFBvcyhiLHgsYSl9LHRoaXMuZG9TY3JvbGxQb3M9ZnVuY3Rpb24oeCxhLGIpe3ZhciBjPXg+cy5wYWdlLm1heHc/cy5wYWdlLm1heHc6eDswPmMmJihjPTApO3ZhciBkPWE+cy5wYWdlLm1heGg/cy5wYWdlLm1heGg6YTswPmQmJihkPTApLHMuc3luY2hlZCgic2Nyb2xsIixmdW5jdGlvbigpe3Muc2V0U2Nyb2xsVG9wKGQpLHMuc2V0U2Nyb2xsTGVmdChjKX0pfSx0aGlzLmNhbmNlbFNjcm9sbD1mdW5jdGlvbigpe30pLHRoaXMuZG9TY3JvbGxCeT1mdW5jdGlvbih4LGEpe3ZhciBiPTA7Yj1hP01hdGguZmxvb3IoKHMuc2Nyb2xsLnkteCkqcy5zY3JvbGxyYXRpby55KToocy50aW1lcj9zLm5ld3Njcm9sbHk6cy5nZXRTY3JvbGxUb3AoITApKS14O2lmKHMuYm91bmNlc2Nyb2xsKXt2YXIgYz1NYXRoLnJvdW5kKHMudmlldy5oLzIpO2I8LWM/Yj0tYzpiPnMucGFnZS5tYXhoK2MmJihiPXMucGFnZS5tYXhoK2MpfXJldHVybiBzLmN1cnNvcmZyZWV6ZWQ9ITEsYz1zLmdldFNjcm9sbFRvcCghMCksMD5iJiYwPj1jP3Mubm90aWNlQ3Vyc29yKCk6Yj5zLnBhZ2UubWF4aCYmYz49cy5wYWdlLm1heGg/KHMuY2hlY2tDb250ZW50U2l6ZSgpLHMubm90aWNlQ3Vyc29yKCkpOihzLmRvU2Nyb2xsVG9wKGIpLHZvaWQgMCl9LHRoaXMuZG9TY3JvbGxMZWZ0Qnk9ZnVuY3Rpb24oeCxhKXt2YXIgYj0wO2I9YT9NYXRoLmZsb29yKChzLnNjcm9sbC54LXgpKnMuc2Nyb2xscmF0aW8ueCk6KHMudGltZXI/cy5uZXdzY3JvbGx4OnMuZ2V0U2Nyb2xsTGVmdCghMCkpLXg7aWYocy5ib3VuY2VzY3JvbGwpe3ZhciBjPU1hdGgucm91bmQocy52aWV3LncvMik7YjwtYz9iPS1jOmI+cy5wYWdlLm1heHcrYyYmKGI9cy5wYWdlLm1heHcrYyl9aWYocy5jdXJzb3JmcmVlemVkPSExLGM9cy5nZXRTY3JvbGxMZWZ0KCEwKSwwPmImJjA+PWN8fGI+cy5wYWdlLm1heHcmJmM+PXMucGFnZS5tYXh3KXJldHVybiBzLm5vdGljZUN1cnNvcigpO3MuZG9TY3JvbGxMZWZ0KGIpfSx0aGlzLmRvU2Nyb2xsVG89ZnVuY3Rpb24oeCxhKXtzLmN1cnNvcmZyZWV6ZWQ9ITEscy5kb1Njcm9sbFRvcCh4KX0sdGhpcy5jaGVja0NvbnRlbnRTaXplPWZ1bmN0aW9uKCl7dmFyIHg9cy5nZXRDb250ZW50U2l6ZSgpO3guaD09cy5wYWdlLmgmJngudz09cy5wYWdlLnd8fHMucmVzaXplKCExLHgpfSxzLm9uc2Nyb2xsPWZ1bmN0aW9uKHgpe3MucmFpbC5kcmFnfHxzLmN1cnNvcmZyZWV6ZWR8fHMuc3luY2hlZCgic2Nyb2xsIixmdW5jdGlvbigpe3Muc2Nyb2xsLnk9TWF0aC5yb3VuZChzLmdldFNjcm9sbFRvcCgpKigxL3Muc2Nyb2xscmF0aW8ueSkpLHMucmFpbGgmJihzLnNjcm9sbC54PU1hdGgucm91bmQocy5nZXRTY3JvbGxMZWZ0KCkqKDEvcy5zY3JvbGxyYXRpby54KSkpLHMubm90aWNlQ3Vyc29yKCl9KX0scy5iaW5kKHMuZG9jc2Nyb2xsLCJzY3JvbGwiLHMub25zY3JvbGwpLHRoaXMuZG9ab29tSW49ZnVuY3Rpb24oYSl7aWYoIXMuem9vbWFjdGl2ZSl7cy56b29tYWN0aXZlPSEwLHMuem9vbXJlc3RvcmU9e3N0eWxlOnt9fTt2YXIgYixjPSJwb3NpdGlvbiB0b3AgbGVmdCB6SW5kZXggYmFja2dyb3VuZENvbG9yIG1hcmdpblRvcCBtYXJnaW5Cb3R0b20gbWFyZ2luTGVmdCBtYXJnaW5SaWdodCIuc3BsaXQoIiAiKSxkPXMud2luWzBdLnN0eWxlO2ZvcihiIGluIGMpe3ZhciBmPWNbYl07cy56b29tcmVzdG9yZS5zdHlsZVtmXT12b2lkIDAhPT1kW2ZdP2RbZl06IiJ9cmV0dXJuIHMuem9vbXJlc3RvcmUuc3R5bGUud2lkdGg9cy53aW4uY3NzKCJ3aWR0aCIpLHMuem9vbXJlc3RvcmUuc3R5bGUuaGVpZ2h0PXMud2luLmNzcygiaGVpZ2h0Iikscy56b29tcmVzdG9yZS5wYWRkaW5nPXt3OnMud2luLm91dGVyV2lkdGgoKS1zLndpbi53aWR0aCgpLGg6cy53aW4ub3V0ZXJIZWlnaHQoKS1zLndpbi5oZWlnaHQoKX0sdi5pc2lvczQmJihzLnpvb21yZXN0b3JlLnNjcm9sbFRvcD14KHdpbmRvdykuc2Nyb2xsVG9wKCkseCh3aW5kb3cpLnNjcm9sbFRvcCgwKSkscy53aW4uY3NzKHtwb3NpdGlvbjp2LmlzaW9zND8iYWJzb2x1dGUiOiJmaXhlZCIsdG9wOjAsbGVmdDowLHpJbmRleDplKzEwMCxtYXJnaW46MH0pLCgiIj09KGM9cy53aW4uY3NzKCJiYWNrZ3JvdW5kQ29sb3IiKSl8fC90cmFuc3BhcmVudHxyZ2JhXCgwLCAwLCAwLCAwXCl8cmdiYVwoMCwwLDAsMFwpLy50ZXN0KGMpKSYmcy53aW4uY3NzKCJiYWNrZ3JvdW5kQ29sb3IiLCIjZmZmIikscy5yYWlsLmNzcyh7ekluZGV4OmUrMTAxfSkscy56b29tLmNzcyh7ekluZGV4OmUrMTAyfSkscy56b29tLmNzcygiYmFja2dyb3VuZFBvc2l0aW9uIiwiMHB4IC0xOHB4Iikscy5yZXNpemVab29tKCkscy5vbnpvb21pbiYmcy5vbnpvb21pbi5jYWxsKHMpLHMuY2FuY2VsRXZlbnQoYSl9fSx0aGlzLmRvWm9vbU91dD1mdW5jdGlvbihhKXtpZihzLnpvb21hY3RpdmUpcmV0dXJuIHMuem9vbWFjdGl2ZT0hMSxzLndpbi5jc3MoIm1hcmdpbiIsIiIpLHMud2luLmNzcyhzLnpvb21yZXN0b3JlLnN0eWxlKSx2LmlzaW9zNCYmeCh3aW5kb3cpLnNjcm9sbFRvcChzLnpvb21yZXN0b3JlLnNjcm9sbFRvcCkscy5yYWlsLmNzcyh7InotaW5kZXgiOnMuemluZGV4fSkscy56b29tLmNzcyh7InotaW5kZXgiOnMuemluZGV4fSkscy56b29tcmVzdG9yZT0hMSxzLnpvb20uY3NzKCJiYWNrZ3JvdW5kUG9zaXRpb24iLCIwcHggMHB4Iikscy5vblJlc2l6ZSgpLHMub256b29tb3V0JiZzLm9uem9vbW91dC5jYWxsKHMpLHMuY2FuY2VsRXZlbnQoYSl9LHRoaXMuZG9ab29tPWZ1bmN0aW9uKHgpe3JldHVybiBzLnpvb21hY3RpdmU/cy5kb1pvb21PdXQoeCk6cy5kb1pvb21Jbih4KX0sdGhpcy5yZXNpemVab29tPWZ1bmN0aW9uKCl7aWYocy56b29tYWN0aXZlKXt2YXIgYT1zLmdldFNjcm9sbFRvcCgpO3Mud2luLmNzcyh7d2lkdGg6eCh3aW5kb3cpLndpZHRoKCktcy56b29tcmVzdG9yZS5wYWRkaW5nLncrInB4IixoZWlnaHQ6eCh3aW5kb3cpLmhlaWdodCgpLXMuem9vbXJlc3RvcmUucGFkZGluZy5oKyJweCJ9KSxzLm9uUmVzaXplKCkscy5zZXRTY3JvbGxUb3AoTWF0aC5taW4ocy5wYWdlLm1heGgsYSkpfX0sdGhpcy5pbml0KCkseC5uaWNlc2Nyb2xsLnB1c2godGhpcyl9LHA9ZnVuY3Rpb24oeCl7dmFyIGE9dGhpczt0aGlzLm5jPXgsdGhpcy5zdGVwdGltZT10aGlzLmxhc3R0aW1lPXRoaXMuc3BlZWR5PXRoaXMuc3BlZWR4PXRoaXMubGFzdHk9dGhpcy5sYXN0eD0wLHRoaXMuc25hcHk9dGhpcy5zbmFweD0hMSx0aGlzLmRlbXVseT10aGlzLmRlbXVseD0wLHRoaXMubGFzdHNjcm9sbHk9dGhpcy5sYXN0c2Nyb2xseD0tMSx0aGlzLnRpbWVyPXRoaXMuY2hreT10aGlzLmNoa3g9MCx0aGlzLnRpbWU9ZnVuY3Rpb24oKXtyZXR1cm4rbmV3IERhdGV9LHRoaXMucmVzZXQ9ZnVuY3Rpb24oeCxiKXthLnN0b3AoKTt2YXIgYz1hLnRpbWUoKTthLnN0ZXB0aW1lPTAsYS5sYXN0dGltZT1jLGEuc3BlZWR4PTAsYS5zcGVlZHk9MCxhLmxhc3R4PXgsYS5sYXN0eT1iLGEubGFzdHNjcm9sbHg9LTEsYS5sYXN0c2Nyb2xseT0tMX0sdGhpcy51cGRhdGU9ZnVuY3Rpb24oeCxiKXt2YXIgYz1hLnRpbWUoKTthLnN0ZXB0aW1lPWMtYS5sYXN0dGltZSxhLmxhc3R0aW1lPWM7Yz1iLWEubGFzdHk7dmFyIGQ9eC1hLmxhc3R4LGU9KGU9YS5uYy5nZXRTY3JvbGxUb3AoKSkrYyxmPShmPWEubmMuZ2V0U2Nyb2xsTGVmdCgpKStkO2Euc25hcHg9MD5mfHxmPmEubmMucGFnZS5tYXh3LGEuc25hcHk9MD5lfHxlPmEubmMucGFnZS5tYXhoLGEuc3BlZWR4PWQsYS5zcGVlZHk9YyxhLmxhc3R4PXgsYS5sYXN0eT1ifSx0aGlzLnN0b3A9ZnVuY3Rpb24oKXthLm5jLnVuc3luY2hlZCgiZG9tb21lbnR1bTJkIiksYS50aW1lciYmY2xlYXJUaW1lb3V0KGEudGltZXIpLGEudGltZXI9MCxhLmxhc3RzY3JvbGx4PS0xLGEubGFzdHNjcm9sbHk9LTF9LHRoaXMuZG9TbmFweT1mdW5jdGlvbih4LGIpe3ZhciBjPSExOzA+Yj8oYj0wLGM9ITApOmI+YS5uYy5wYWdlLm1heGgmJihiPWEubmMucGFnZS5tYXhoLGM9ITApLDA+eD8oeD0wLGM9ITApOng+YS5uYy5wYWdlLm1heHcmJih4PWEubmMucGFnZS5tYXh3LGM9ITApLGM/YS5uYy5kb1Njcm9sbFBvcyh4LGIsYS5uYy5vcHQuc25hcGJhY2tzcGVlZCk6YS5uYy50cmlnZ2VyU2Nyb2xsRW5kKCl9LHRoaXMuZG9Nb21lbnR1bT1mdW5jdGlvbih4KXt2YXIgYj1hLnRpbWUoKSxjPXg/Yit4OmEubGFzdHRpbWU7eD1hLm5jLmdldFNjcm9sbExlZnQoKTt2YXIgZD1hLm5jLmdldFNjcm9sbFRvcCgpLGU9YS5uYy5wYWdlLm1heGgsZj1hLm5jLnBhZ2UubWF4dztpZihhLnNwZWVkeD0wPGY/TWF0aC5taW4oNjAsYS5zcGVlZHgpOjAsYS5zcGVlZHk9MDxlP01hdGgubWluKDYwLGEuc3BlZWR5KTowLGM9YyYmNjA+PWItYywoMD5kfHxkPmV8fDA+eHx8eD5mKSYmKGM9ITEpLHg9ISghYS5zcGVlZHh8fCFjKSYmYS5zcGVlZHgsYS5zcGVlZHkmJmMmJmEuc3BlZWR5fHx4KXt2YXIgZz1NYXRoLm1heCgxNixhLnN0ZXB0aW1lKTs1MDxnJiYoeD1nLzUwLGEuc3BlZWR4Kj14LGEuc3BlZWR5Kj14LGc9NTApLGEuZGVtdWx4eT0wLGEubGFzdHNjcm9sbHg9YS5uYy5nZXRTY3JvbGxMZWZ0KCksYS5jaGt4PWEubGFzdHNjcm9sbHgsYS5sYXN0c2Nyb2xseT1hLm5jLmdldFNjcm9sbFRvcCgpLGEuY2hreT1hLmxhc3RzY3JvbGx5O3ZhciBoPWEubGFzdHNjcm9sbHgsaT1hLmxhc3RzY3JvbGx5LGo9ZnVuY3Rpb24oKXt2YXIgeD02MDA8YS50aW1lKCktYj8uMDQ6LjAyO2Euc3BlZWR4JiYoaD1NYXRoLmZsb29yKGEubGFzdHNjcm9sbHgtYS5zcGVlZHgqKDEtYS5kZW11bHh5KSksYS5sYXN0c2Nyb2xseD1oLDA+aHx8aD5mKSYmKHg9LjEpLGEuc3BlZWR5JiYoaT1NYXRoLmZsb29yKGEubGFzdHNjcm9sbHktYS5zcGVlZHkqKDEtYS5kZW11bHh5KSksYS5sYXN0c2Nyb2xseT1pLDA+aXx8aT5lKSYmKHg9LjEpLGEuZGVtdWx4eT1NYXRoLm1pbigxLGEuZGVtdWx4eSt4KSxhLm5jLnN5bmNoZWQoImRvbW9tZW50dW0yZCIsZnVuY3Rpb24oKXthLnNwZWVkeCYmKGEubmMuZ2V0U2Nyb2xsTGVmdCgpLGEuY2hreD1oLGEubmMuc2V0U2Nyb2xsTGVmdChoKSksYS5zcGVlZHkmJihhLm5jLmdldFNjcm9sbFRvcCgpLGEuY2hreT1pLGEubmMuc2V0U2Nyb2xsVG9wKGkpKSxhLnRpbWVyfHwoYS5uYy5oaWRlQ3Vyc29yKCksYS5kb1NuYXB5KGgsaSkpfSksMT5hLmRlbXVseHk/YS50aW1lcj1zZXRUaW1lb3V0KGosZyk6KGEuc3RvcCgpLGEubmMuaGlkZUN1cnNvcigpLGEuZG9TbmFweShoLGkpKX07aigpfWVsc2UgYS5kb1NuYXB5KGEubmMuZ2V0U2Nyb2xsTGVmdCgpLGEubmMuZ2V0U2Nyb2xsVG9wKCkpfX0scT14LmZuLnNjcm9sbFRvcDt4LmNzc0hvb2tzLnBhZ2VZT2Zmc2V0PXtnZXQ6ZnVuY3Rpb24oYSxiLGMpe3JldHVybihiPXguZGF0YShhLCJfX25pY2VzY3JvbGwiKXx8ITEpJiZiLmlzaHdzY3JvbGw/Yi5nZXRTY3JvbGxUb3AoKTpxLmNhbGwoYSl9LHNldDpmdW5jdGlvbihhLGIpe3ZhciBjPXguZGF0YShhLCJfX25pY2VzY3JvbGwiKXx8ITE7cmV0dXJuIGMmJmMuaXNod3Njcm9sbD9jLnNldFNjcm9sbFRvcChwYXJzZUludChiKSk6cS5jYWxsKGEsYiksdGhpc319LHguZm4uc2Nyb2xsVG9wPWZ1bmN0aW9uKGEpe2lmKHZvaWQgMD09PWEpe3ZhciBiPXRoaXNbMF0mJnguZGF0YSh0aGlzWzBdLCJfX25pY2VzY3JvbGwiKXx8ITE7cmV0dXJuIGImJmIuaXNod3Njcm9sbD9iLmdldFNjcm9sbFRvcCgpOnEuY2FsbCh0aGlzKX1yZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9eC5kYXRhKHRoaXMsIl9fbmljZXNjcm9sbCIpfHwhMTtiJiZiLmlzaHdzY3JvbGw/Yi5zZXRTY3JvbGxUb3AocGFyc2VJbnQoYSkpOnEuY2FsbCh4KHRoaXMpLGEpfSl9O3ZhciByPXguZm4uc2Nyb2xsTGVmdDt4LmNzc0hvb2tzLnBhZ2VYT2Zmc2V0PXtnZXQ6ZnVuY3Rpb24oYSxiLGMpe3JldHVybihiPXguZGF0YShhLCJfX25pY2VzY3JvbGwiKXx8ITEpJiZiLmlzaHdzY3JvbGw/Yi5nZXRTY3JvbGxMZWZ0KCk6ci5jYWxsKGEpfSxzZXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz14LmRhdGEoYSwiX19uaWNlc2Nyb2xsIil8fCExO3JldHVybiBjJiZjLmlzaHdzY3JvbGw/Yy5zZXRTY3JvbGxMZWZ0KHBhcnNlSW50KGIpKTpyLmNhbGwoYSxiKSx0aGlzfX0seC5mbi5zY3JvbGxMZWZ0PWZ1bmN0aW9uKGEpe2lmKHZvaWQgMD09PWEpe3ZhciBiPXRoaXNbMF0mJnguZGF0YSh0aGlzWzBdLCJfX25pY2VzY3JvbGwiKXx8ITE7cmV0dXJuIGImJmIuaXNod3Njcm9sbD9iLmdldFNjcm9sbExlZnQoKTpyLmNhbGwodGhpcyl9cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPXguZGF0YSh0aGlzLCJfX25pY2VzY3JvbGwiKXx8ITE7YiYmYi5pc2h3c2Nyb2xsP2Iuc2V0U2Nyb2xsTGVmdChwYXJzZUludChhKSk6ci5jYWxsKHgodGhpcyksYSl9KX07dmFyIHM9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcztpZih0aGlzLmxlbmd0aD0wLHRoaXMubmFtZT0ibmljZXNjcm9sbGFycmF5Iix0aGlzLmVhY2g9ZnVuY3Rpb24oYSl7cmV0dXJuIHguZWFjaChiLGEpLGJ9LHRoaXMucHVzaD1mdW5jdGlvbih4KXtiW2IubGVuZ3RoXT14LGIubGVuZ3RoKyt9LHRoaXMuZXE9ZnVuY3Rpb24oeCl7cmV0dXJuIGJbeF19LGEpZm9yKHZhciBjPTA7YzxhLmxlbmd0aDtjKyspe3ZhciBkPXguZGF0YShhW2NdLCJfX25pY2VzY3JvbGwiKXx8ITE7ZCYmKHRoaXNbdGhpcy5sZW5ndGhdPWQsdGhpcy5sZW5ndGgrKyl9cmV0dXJuIHRoaXN9OyFmdW5jdGlvbih4LGEsYil7Zm9yKHZhciBjPTA7YzxhLmxlbmd0aDtjKyspYih4LGFbY10pfShzLnByb3RvdHlwZSwic2hvdyBoaWRlIHRvZ2dsZSBvblJlc2l6ZSByZXNpemUgcmVtb3ZlIHN0b3AgZG9TY3JvbGxQb3MiLnNwbGl0KCIgIiksZnVuY3Rpb24oeCxhKXt4W2FdPWZ1bmN0aW9uKCl7dmFyIHg9YXJndW1lbnRzO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt0aGlzW2FdLmFwcGx5KHRoaXMseCl9KX19KSx4LmZuLmdldE5pY2VTY3JvbGw9ZnVuY3Rpb24oYSl7cmV0dXJuIHZvaWQgMD09PWE/bmV3IHModGhpcyk6dGhpc1thXSYmeC5kYXRhKHRoaXNbYV0sIl9fbmljZXNjcm9sbCIpfHwhMX0seC5leHByWyI6Il0ubmljZXNjcm9sbD1mdW5jdGlvbihhKXtyZXR1cm4gdm9pZCAwIT09eC5kYXRhKGEsIl9fbmljZXNjcm9sbCIpfSx4LmZuLm5pY2VTY3JvbGw9ZnVuY3Rpb24oYSxiKXt2b2lkIDAhPT1ifHwib2JqZWN0IiE9dHlwZW9mIGF8fCJqcXVlcnkiaW4gYXx8KGI9YSxhPSExKSxiPXguZXh0ZW5kKHt9LGIpO3ZhciBjPW5ldyBzO3ZvaWQgMD09PWImJihiPXt9KSxhJiYoYi5kb2M9eChhKSxiLndpbj14KHRoaXMpKTt2YXIgZD0hKCJkb2MiaW4gYik7cmV0dXJuIGR8fCJ3aW4iaW4gYnx8KGIud2luPXgodGhpcykpLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBhPXgodGhpcykuZGF0YSgiX19uaWNlc2Nyb2xsIil8fCExO2F8fChiLmRvYz1kP3godGhpcyk6Yi5kb2MsYT1uZXcgbyhiLHgodGhpcykpLHgodGhpcykuZGF0YSgiX19uaWNlc2Nyb2xsIixhKSksYy5wdXNoKGEpfSksMT09Yy5sZW5ndGg/Y1swXTpjfSx3aW5kb3cuTmljZVNjcm9sbD17Z2V0alF1ZXJ5OmZ1bmN0aW9uKCl7cmV0dXJuIHh9fSx4Lm5pY2VzY3JvbGx8fCh4Lm5pY2VzY3JvbGw9bmV3IHMseC5uaWNlc2Nyb2xsLm9wdGlvbnM9bCl9KTsJCgovKmpRdWVyeSBsaXN0IDAuOCwgKGMpIGVybW91dGgqLwohZnVuY3Rpb24oeCl7dmFyIGE9T2JqZWN0LGI9YS5pc1N0cmluZyxjPWEuaXNBcnJheSxkPWEuaXNPYmplY3QsZT1hLmlzRnVuY3Rpb24sZj0oYS5pc051bWJlcix4LmV4dGVuZCksZz0oeC50eXBlLHtodG1sOmZ1bmN0aW9uKGEsYyxnKXt2YXIgaD0iIixpPStnfHwwO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBhPyhoPWEoYyxnKSxiKGgpJiYoaD14KGgpKSk6YihhKT9oPXgoYS5hc3NpZ24oZih7X2k6aSxfaTE6aSsxfSxjKSkpOmQoYSkmJmEuanF1ZXJ5JiYoaD1lKHgudG1wbCkmJiJ0ZXh0L3gtanF1ZXJ5LXRtcGwiPT1hLmF0dHIoInR5cGUiKT9hLnRtcGwoYyx7X2k6aSxfaTE6aSsxfSk6eCgoYS5odG1sKCkrIiIpLmFzc2lnbih4LmV4dGVuZCh7X2k6aSxfaTE6aSsxfSxjKSkpKSxofSxzZGJtQ29kZTpmdW5jdGlvbih4KXtmb3IodmFyIGE9SlNPTi5zdHJpbmdpZnkoeCksYj0wLGM9MDtjPGEubGVuZ3RoO2MrKyliPWEuY2hhckNvZGVBdChjKSsoYjw8NikrKGI8PDE2KS1iO3JldHVybigxZTExK2IpLnRvU3RyaW5nKDM2KX0sY2FjaGU6ZnVuY3Rpb24oeCxhLGIpe2Zvcih2YXIgYz1bXSxkPWIuc29ydEJ5P3guc29ydEJ5KGIuc29ydEJ5KTp4LGU9MDtlPGQubGVuZ3RoO2UrKylnLmNhY2hlUm93KGUsZFtlXSxjLGEsYik7cmV0dXJuIGN9LGNhY2hlUm93OmZ1bmN0aW9uKHgsYSxiLGMsZCl7dmFyIGU9ZC5pZChhKSxmPWQuaGFzaChhKSxoPWQudGVtcGxhdGU7Yy5oYXNoW2VdJiZjLmhhc2hbZV09PWZ8fChjLiRvW2VdPWMuJG9bZV0/Zy5odG1sKGgsYSx4KS5yZXBsYWNlQWxsKGMuJG9bZV0pOmcuaHRtbChoLGEseCksYy5oYXNoW2VdPWYpLGJbeF09ZX0sZXZlbnQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz14KHRoaXMpO2IuY2FsbCh0aGlzLGEsYyxjLmRhdGEoInZhbHVlIil8fGMudGV4dCgpKX0scmVuZGVyOmZ1bmN0aW9uKHgsYSxiLGMpe3ZhciBkLGUsZj1hLnBhcmFtcyxoPWIsaT0iZnVuY3Rpb24iPT10eXBlb2YgYz9jOmZ1bmN0aW9uKCl7fTtpZighZi5kZWxheXx8IWYuY2h1bmt8fGYuY2h1bms+PWgubGVuZ3RoKXtmb3IodmFyIGo9MDtqPGgubGVuZ3RoO2orKylvKGopO2koeCl9ZWxzZXt2YXIgaz1mLmRlbGF5LGw9Zi5jaHVuayxtPWcuc2RibUNvZGUoRGF0ZS5ub3coKSk7Zi5wb3NpdGlvbj0wLGEuY3ljbGU9bSxuKCl9cmV0dXJuIHg7ZnVuY3Rpb24gbigpe2lmKGEuY3ljbGU9PW0pe2Zvcih2YXIgYj1mLnBvc2l0aW9uLGM9ITEsZD1iO2Q8YitsO2QrKyl2b2lkIDAhPT1oW2RdP28oZCk6Yz0hMDtmLnBvc2l0aW9uPWIrbCxjP2koeCk6bi5kZWxheShrKX19ZnVuY3Rpb24gbyhiKXtlPWEuY2FjaGUuJG9baFtiXV0sZD1iP2QubGFzdCgpLm5leHQoKS5pcyhlKT9lOmUuaW5zZXJ0QWZ0ZXIoZC5sYXN0KCkpOnguY2hpbGRyZW4oKS5maXJzdCgpLmlzKGUpP2U6ZS5wcmVwZW5kVG8oeCl9fX0pLGg9e2luaXQ6ZnVuY3Rpb24oYSl7aWYoIWQoYSl8fCFhLnRlbXBsYXRlfHwhYyhhLmRhdGEpKXJldHVybiB0aGlzO3ZhciBiPXRoaXMuZXEoMCksZj14LmV4dGVuZCghMCx7ZGVsYXk6MCxjaHVuazowLHBvc2l0aW9uOjAsaWQ6ZnVuY3Rpb24oeCl7cmV0dXJuIGcuc2RibUNvZGUoeCl9LGhhc2g6ZnVuY3Rpb24oeCl7cmV0dXJuIGcuc2RibUNvZGUoeCl9LHNvcnRCeTpudWxsfSxhKSxoPXskbzp7fSxoYXNoOnt9fSxpPWYuc29ydEJ5P2YuZGF0YS5zb3J0QnkoZi5zb3J0QnkpOmYuZGF0YSxqPXtsaXN0OmcuY2FjaGUoaSxoLGYpLGNhY2hlOmgsZGF0YTppLHBhcmFtczpmLGN5Y2xlOiIiLGxvY2s6ITF9O2lmKGIuYWRkQ2xhc3MoIm15LWxpc3QiKS5kYXRhKCJsaXN0IixqKS5saXN0KCJyZWRyYXciKSxmLmV2ZW50cylmb3IodmFyIGsgaW4gZi5ldmVudHMpe3ZhciBsPWYuZXZlbnRzW2tdO2lmKGQobCkpZm9yKHZhciBtIGluIGwpZShsW21dKSYmYi5vbihtKyIubGlzdCIsayxnLmV2ZW50LmZpbGwodm9pZCAwLGxbbV0pKTtlbHNlIGUobCkmJmIub24oImNsaWNrLmxpc3QiLGssZy5ldmVudC5maWxsKHZvaWQgMCxsKSl9cmV0dXJuIGJ9LHJvdzpmdW5jdGlvbih4LGEpe3ZhciBiPXRoaXMuZGF0YSgibGlzdCIpLGM9Yi5wYXJhbXMuaWQoeCksZD1iLmxpc3QsZT0rYXx8ZC5pbmRleE9mKGMpO3JldHVybi0xPT1lP251bGw6KGU9ZS5jbGFtcCgwLGIubGlzdC5sZW5ndGgpLGcuY2FjaGVSb3coZSxiLmRhdGFbZV0sZCxiLmNhY2hlLGIucGFyYW1zKSxiLmNhY2hlLiRvW2NdKX0sZGF0YTpmdW5jdGlvbih4LGEpe3ZhciBiLGQsZSxmLGgsaT10aGlzLGo9aS5kYXRhKCJsaXN0Iik7aWYoIWopcmV0dXJuIG51bGw7aWYoai5sb2NrfHwhYyh4KSlyZXR1cm4gai5kYXRhO2lmKCF4Lmxlbmd0aClyZXR1cm4gaS5odG1sKCIiKSxqLmxpc3Q9W10sai5kYXRhPVtdO2lmKGY9ai5saXN0LnNsaWNlKDApLGI9Zy5jYWNoZSh4LGouY2FjaGUsai5wYXJhbXMpLGg9Zi5sZW5ndGg9PWIubGVuZ3RoKWZvcihkPTA7ZDxmLmxlbmd0aCYmaDtkKyspaD1mW2RdPT1iW2RdO2lmKCFoKXtmb3IoZT1mLnN1YnRyYWN0KGIuaW50ZXJzZWN0KGYpKSxqLmN5Y2xlPSIiLGQ9MDtkPGUubGVuZ3RoO2QrKylqLmNhY2hlLiRvW2VbZF1dLmRldGFjaCgpO2cucmVuZGVyKGksaixiLGEpfXJldHVybiBqLmxpc3Q9YixqLmRhdGE9eH0scmVkcmF3OmZ1bmN0aW9uKCl7dmFyIHg9dGhpcyxhPXguZGF0YSgibGlzdCIpLGI9YS5jYWNoZS4kbztpZihhJiZhLmxpc3Qpe3guaHRtbCgiIik7Zm9yKHZhciBjPTAsZD1hLmxpc3Q7YzxkLmxlbmd0aDtjKyspYltkW2NdXS5hcHBlbmRUbyh4KX19LHJlbW92ZTpmdW5jdGlvbigpe3ZhciB4PXRoaXMsYT14LmRhdGEoImxpc3QiKTtpZighYSlyZXR1cm4gbnVsbDt4LnJlbW92ZUNsYXNzKCJteS1saXN0Iikub2ZmKCIubGlzdCIpLGRlbGV0ZSBhLmNhY2hlLGE9bnVsbH19O3gubXl8fCh4Lm15PXt9KSx4Lm15Lmxpc3Q9e2Y6Z30seC5mbi5saXN0PWZ1bmN0aW9uKGEpe3JldHVybiBoW2FdP2hbYV0uYXBwbHkodGhpcyxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSkpOiJvYmplY3QiIT10eXBlb2YgYSYmYT8oeC5lcnJvcigiTWV0aG9kICIrYSsiIGRvZXMgbm90IGV4aXN0IG9uIGpRdWVyeS5saXN0Iiksdm9pZCAwKTpoLmluaXQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oalF1ZXJ5KTsKCmlmICghKCJjdyIgaW4gd2luZG93KSkgd2luZG93LmN3PXt9Owp3aW5kb3cuY3cubG9nID0gZnVuY3Rpb24oKXt9OwoKLypob3RrZXlzLWpzIHYzLjcuMyAoYykga2Vubnkgd29uZywgd293b2hvb0BxcS5jb20qLwohZnVuY3Rpb24oeCxhKXsib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMmJiJ1bmRlZmluZWQiIT10eXBlb2YgbW9kdWxlP21vZHVsZS5leHBvcnRzPWEoKToiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShhKTooeD14fHxzZWxmKS5ob3RrZXlzPWEoKX0odGhpcyxmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB4KGEpe3JldHVybih4PSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKHgpe3JldHVybiB0eXBlb2YgeH06ZnVuY3Rpb24oeCl7cmV0dXJuIHgmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJnguY29uc3RydWN0b3I9PT1TeW1ib2wmJnghPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiB4fSkoYSl9dmFyIGE9InVuZGVmaW5lZCIhPXR5cGVvZiBuYXZpZ2F0b3ImJm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJmaXJlZm94Iik+MDtmdW5jdGlvbiBiKHgsYSxiKXt4LmFkZEV2ZW50TGlzdGVuZXI/eC5hZGRFdmVudExpc3RlbmVyKGEsYiwhMSk6eC5hdHRhY2hFdmVudCYmeC5hdHRhY2hFdmVudCgib24iLmNvbmNhdChhKSxmdW5jdGlvbigpe2Iod2luZG93LmV2ZW50KX0pfWZ1bmN0aW9uIGMoeCxhKXtmb3IodmFyIGI9YS5zbGljZSgwLGEubGVuZ3RoLTEpLGM9MDtjPGIubGVuZ3RoO2MrKyliW2NdPXhbYltjXS50b0xvd2VyQ2FzZSgpXTtyZXR1cm4gYn1mdW5jdGlvbiBkKHgpeyJzdHJpbmciIT10eXBlb2YgeCYmKHg9IiIpO2Zvcih2YXIgYT0oeD14LnJlcGxhY2UoL1xzL2csIiIpKS5zcGxpdCgiLCIpLGI9YS5sYXN0SW5kZXhPZigiIik7Yj49MDspYVtiLTFdKz0iLCIsYS5zcGxpY2UoYiwxKSxiPWEubGFzdEluZGV4T2YoIiIpO3JldHVybiBhfWZ1bmN0aW9uIGUoeCxhKXtmb3IodmFyIGI9eC5sZW5ndGg+PWEubGVuZ3RoP3g6YSxjPXgubGVuZ3RoPj1hLmxlbmd0aD9hOngsZD0hMCxlPTA7ZTxiLmxlbmd0aDtlKyspLTE9PT1jLmluZGV4T2YoYltlXSkmJihkPSExKTtyZXR1cm4gZH1mb3IodmFyIGY9e2JhY2tzcGFjZTo4LHRhYjo5LGNsZWFyOjEyLGVudGVyOjEzLHJldHVybjoxMyxlc2M6MjcsZXNjYXBlOjI3LHNwYWNlOjMyLGxlZnQ6MzcsdXA6MzgscmlnaHQ6MzksZG93bjo0MCxkZWw6NDYsZGVsZXRlOjQ2LGluczo0NSxpbnNlcnQ6NDUsaG9tZTozNixlbmQ6MzUscGFnZXVwOjMzLHBhZ2Vkb3duOjM0LGNhcHNsb2NrOjIwLCLih6oiOjIwLCIsIjoxODgsIi4iOjE5MCwiLyI6MTkxLCJgIjoxOTIsIi0iOmE/MTczOjE4OSwiPSI6YT82MToxODcsIjsiOmE/NTk6MTg2LCInIjoyMjIsIlsiOjIxOSwiXSI6MjIxLCJcXCI6MjIwfSxnPXsi4oenIjoxNixzaGlmdDoxNiwi4oylIjoxOCxhbHQ6MTgsb3B0aW9uOjE4LCLijIMiOjE3LGN0cmw6MTcsY29udHJvbDoxNywi4oyYIjo5MSxjbWQ6OTEsY29tbWFuZDo5MX0saD17MTY6InNoaWZ0S2V5IiwxODoiYWx0S2V5IiwxNzoiY3RybEtleSIsOTE6Im1ldGFLZXkiLHNoaWZ0S2V5OjE2LGN0cmxLZXk6MTcsYWx0S2V5OjE4LG1ldGFLZXk6OTF9LGk9ezE2OiExLDE4OiExLDE3OiExLDkxOiExfSxqPXt9LGs9MTtrPDIwO2srKylmWyJmIi5jb25jYXQoayldPTExMStrO3ZhciBsPVtdLG09ImFsbCIsbj1bXSxvPWZ1bmN0aW9uKHgpe3JldHVybiBmW3gudG9Mb3dlckNhc2UoKV18fGdbeC50b0xvd2VyQ2FzZSgpXXx8eC50b1VwcGVyQ2FzZSgpLmNoYXJDb2RlQXQoMCl9O2Z1bmN0aW9uIHAoeCl7bT14fHwiYWxsIn1mdW5jdGlvbiBxKCl7cmV0dXJuIG18fCJhbGwifWZ1bmN0aW9uIHIoKXtyZXR1cm4gbC5zbGljZSgwKX1mdW5jdGlvbiBzKHgpe3ZhciBhPXgudGFyZ2V0fHx4LnNyY0VsZW1lbnQsYj1hLnRhZ05hbWUsYz0hMDtyZXR1cm4hYS5pc0NvbnRlbnRFZGl0YWJsZSYmKCJJTlBVVCIhPT1iJiYiVEVYVEFSRUEiIT09Ynx8YS5yZWFkT25seSl8fChjPSExKSxjfWZ1bmN0aW9uIHQoeCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB4JiYoeD1vKHgpKSwtMSE9PWwuaW5kZXhPZih4KX1mdW5jdGlvbiB1KHgsYSl7dmFyIGIsYztmb3IodmFyIGQgaW4geHx8KHg9cSgpKSxqKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChqLGQpKWZvcihiPWpbZF0sYz0wO2M8Yi5sZW5ndGg7KWJbY10uc2NvcGU9PT14P2Iuc3BsaWNlKGMsMSk6YysrO3EoKT09PXgmJnAoYXx8ImFsbCIpfWZ1bmN0aW9uIHYoeCl7dmFyIGE9eC5rZXlDb2RlfHx4LndoaWNofHx4LmNoYXJDb2RlLGI9bC5pbmRleE9mKGEpO2lmKGI+PTAmJmwuc3BsaWNlKGIsMSkseC5rZXkmJiJtZXRhIj09PXgua2V5LnRvTG93ZXJDYXNlKCkmJmwuc3BsaWNlKDAsbC5sZW5ndGgpLDkzIT09YSYmMjI0IT09YXx8KGE9OTEpLGEgaW4gaSlmb3IodmFyIGMgaW4gaVthXT0hMSxnKWdbY109PT1hJiYoQ1tjXT0hMSl9ZnVuY3Rpb24gdyhhKXtpZihhKXtpZihBcnJheS5pc0FycmF5KGEpKWEuZm9yRWFjaChmdW5jdGlvbih4KXt4LmtleSYmeSh4KX0pO2Vsc2UgaWYoIm9iamVjdCI9PT14KGEpKWEua2V5JiZ5KGEpO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBhKXtmb3IodmFyIGI9YXJndW1lbnRzLmxlbmd0aCxjPW5ldyBBcnJheShiPjE/Yi0xOjApLGQ9MTtkPGI7ZCsrKWNbZC0xXT1hcmd1bWVudHNbZF07dmFyIGU9Y1swXSxmPWNbMV07ImZ1bmN0aW9uIj09dHlwZW9mIGUmJihmPWUsZT0iIikseSh7a2V5OmEsc2NvcGU6ZSxtZXRob2Q6ZixzcGxpdEtleToiKyJ9KX19ZWxzZSBPYmplY3Qua2V5cyhqKS5mb3JFYWNoKGZ1bmN0aW9uKHgpe3JldHVybiBkZWxldGUgalt4XX0pfXZhciB5PWZ1bmN0aW9uKHgpe3ZhciBhPXgua2V5LGI9eC5zY29wZSxmPXgubWV0aG9kLGg9eC5zcGxpdEtleSxpPXZvaWQgMD09PWg/IisiOmg7ZChhKS5mb3JFYWNoKGZ1bmN0aW9uKHgpe3ZhciBhPXguc3BsaXQoaSksZD1hLmxlbmd0aCxoPWFbZC0xXSxrPSIqIj09PWg/IioiOm8oaCk7aWYoaltrXSl7Ynx8KGI9cSgpKTt2YXIgbD1kPjE/YyhnLGEpOltdO2pba109altrXS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuKCFmfHx4Lm1ldGhvZD09PWYpJiZ4LnNjb3BlPT09YiYmZSh4Lm1vZHMsbCk/e306eH0pfX0pfTtmdW5jdGlvbiB6KHgsYSxiKXt2YXIgYztpZihhLnNjb3BlPT09Ynx8ImFsbCI9PT1hLnNjb3BlKXtmb3IodmFyIGQgaW4gYz1hLm1vZHMubGVuZ3RoPjAsaSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaSxkKSYmKCFpW2RdJiZhLm1vZHMuaW5kZXhPZigrZCk+LTF8fGlbZF0mJi0xPT09YS5tb2RzLmluZGV4T2YoK2QpKSYmKGM9ITEpOygwIT09YS5tb2RzLmxlbmd0aHx8aVsxNl18fGlbMThdfHxpWzE3XXx8aVs5MV0pJiYhYyYmIioiIT09YS5zaG9ydGN1dHx8ITE9PT1hLm1ldGhvZCh4LGEpJiYoeC5wcmV2ZW50RGVmYXVsdD94LnByZXZlbnREZWZhdWx0KCk6eC5yZXR1cm5WYWx1ZT0hMSx4LnN0b3BQcm9wYWdhdGlvbiYmeC5zdG9wUHJvcGFnYXRpb24oKSx4LmNhbmNlbEJ1YmJsZSYmKHguY2FuY2VsQnViYmxlPSEwKSl9fWZ1bmN0aW9uIEEoeCl7dmFyIGE9alsiKiJdLGI9eC5rZXlDb2RlfHx4LndoaWNofHx4LmNoYXJDb2RlO2lmKEMuZmlsdGVyLmNhbGwodGhpcyx4KSl7aWYoOTMhPT1iJiYyMjQhPT1ifHwoYj05MSksLTE9PT1sLmluZGV4T2YoYikmJjIyOSE9PWImJmwucHVzaChiKSxbImN0cmxLZXkiLCJhbHRLZXkiLCJzaGlmdEtleSIsIm1ldGFLZXkiXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPWhbYV07eFthXSYmLTE9PT1sLmluZGV4T2YoYik/bC5wdXNoKGIpOiF4W2FdJiZsLmluZGV4T2YoYik+LTEmJmwuc3BsaWNlKGwuaW5kZXhPZihiKSwxKX0pLGIgaW4gaSl7Zm9yKHZhciBjIGluIGlbYl09ITAsZylnW2NdPT09YiYmKENbY109ITApO2lmKCFhKXJldHVybn1mb3IodmFyIGQgaW4gaSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaSxkKSYmKGlbZF09eFtoW2RdXSk7dmFyIGU9cSgpO2lmKGEpZm9yKHZhciBmPTA7ZjxhLmxlbmd0aDtmKyspYVtmXS5zY29wZT09PWUmJigia2V5ZG93biI9PT14LnR5cGUmJmFbZl0ua2V5ZG93bnx8ImtleXVwIj09PXgudHlwZSYmYVtmXS5rZXl1cCkmJnooeCxhW2ZdLGUpO2lmKGIgaW4gailmb3IodmFyIGs9MDtrPGpbYl0ubGVuZ3RoO2srKylpZigoImtleWRvd24iPT09eC50eXBlJiZqW2JdW2tdLmtleWRvd258fCJrZXl1cCI9PT14LnR5cGUmJmpbYl1ba10ua2V5dXApJiZqW2JdW2tdLmtleSl7Zm9yKHZhciBtPWpbYl1ba10sbj1tLnNwbGl0S2V5LHA9bS5rZXkuc3BsaXQobikscj1bXSxzPTA7czxwLmxlbmd0aDtzKyspci5wdXNoKG8ocFtzXSkpO3Iuc29ydCgpLmpvaW4oIiIpPT09bC5zb3J0KCkuam9pbigiIikmJnooeCxtLGUpfX19ZnVuY3Rpb24gQih4KXtyZXR1cm4gbi5pbmRleE9mKHgpPi0xfWZ1bmN0aW9uIEMoeCxhLGUpe2w9W107dmFyIGY9ZCh4KSxoPVtdLGk9ImFsbCIsaz1kb2N1bWVudCxtPTAscD0hMSxxPSEwLHI9IisiO2Zvcih2b2lkIDA9PT1lJiYiZnVuY3Rpb24iPT10eXBlb2YgYSYmKGU9YSksIltvYmplY3QgT2JqZWN0XSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYSkmJihhLnNjb3BlJiYoaT1hLnNjb3BlKSxhLmVsZW1lbnQmJihrPWEuZWxlbWVudCksYS5rZXl1cCYmKHA9YS5rZXl1cCksdm9pZCAwIT09YS5rZXlkb3duJiYocT1hLmtleWRvd24pLCJzdHJpbmciPT10eXBlb2YgYS5zcGxpdEtleSYmKHI9YS5zcGxpdEtleSkpLCJzdHJpbmciPT10eXBlb2YgYSYmKGk9YSk7bTxmLmxlbmd0aDttKyspaD1bXSwoeD1mW21dLnNwbGl0KHIpKS5sZW5ndGg+MSYmKGg9YyhnLHgpKSwoeD0iKiI9PT0oeD14W3gubGVuZ3RoLTFdKT8iKiI6byh4KSlpbiBqfHwoalt4XT1bXSksalt4XS5wdXNoKHtrZXl1cDpwLGtleWRvd246cSxzY29wZTppLG1vZHM6aCxzaG9ydGN1dDpmW21dLG1ldGhvZDplLGtleTpmW21dLHNwbGl0S2V5OnJ9KTt2b2lkIDAhPT1rJiYhQihrKSYmd2luZG93JiYobi5wdXNoKGspLGIoaywia2V5ZG93biIsZnVuY3Rpb24oeCl7QSh4KX0pLGIod2luZG93LCJmb2N1cyIsZnVuY3Rpb24oKXtsPVtdfSksYihrLCJrZXl1cCIsZnVuY3Rpb24oeCl7QSh4KSx2KHgpfSkpfXZhciBEPXtzZXRTY29wZTpwLGdldFNjb3BlOnEsZGVsZXRlU2NvcGU6dSxnZXRQcmVzc2VkS2V5Q29kZXM6cixpc1ByZXNzZWQ6dCxmaWx0ZXI6cyx1bmJpbmQ6d307Zm9yKHZhciBFIGluIEQpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKEQsRSkmJihDW0VdPURbRV0pO2lmKCJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93KXt2YXIgRj13aW5kb3cuaG90a2V5cztDLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oeCl7cmV0dXJuIHgmJndpbmRvdy5ob3RrZXlzPT09QyYmKHdpbmRvdy5ob3RrZXlzPUYpLEN9LHdpbmRvdy5ob3RrZXlzPUN9cmV0dXJuIEN9KTs=" }, "lib/sql2photon.js": { "content_type": "text/javascript", "data": "LyogCiogUGhvdG9uIDEuMjQgU1FMIHF1ZXJ5IG1vZGUgcmVsYXRlZCBsaWJzCiogIOKAlCBzcWx0b21hbmdvLCAoYykgR2x5bm4gQmlyZAoqICDigJQgQ29kZU1pcnJvciBTUUwgc3ludGF4LCAoYykgTWFyaWpuIEhhdmVyYmVrZQoqLwoKLypzcWx0b21hbmdvLCAoYykgZ2x5bm5iaXJkIC8gK3JsaWtlLGJldHdlZW4gbW9kIGVybW91dGgqLwohZnVuY3Rpb24oeCl7aWYoIm9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZSltb2R1bGUuZXhwb3J0cz14KCk7ZWxzZSBpZigiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kKWRlZmluZShbXSx4KTtlbHNleygidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnRoaXMpLnNxbDJtYW5nbz14KCl9fShmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiB4KGEsYixjKXtmdW5jdGlvbiBkKGYsZyl7aWYoIWJbZl0pe2lmKCFhW2ZdKXt2YXIgaD0iZnVuY3Rpb24iPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZTtpZighZyYmaClyZXR1cm4gaChmLCEwKTtpZihlKXJldHVybiBlKGYsITApO3ZhciBpPW5ldyBFcnJvcigiQ2Fubm90IGZpbmQgbW9kdWxlICciK2YrIiciKTt0aHJvdyBpLmNvZGU9Ik1PRFVMRV9OT1RfRk9VTkQiLGl9dmFyIGo9YltmXT17ZXhwb3J0czp7fX07YVtmXVswXS5jYWxsKGouZXhwb3J0cyxmdW5jdGlvbih4KXt2YXIgYj1hW2ZdWzFdW3hdO3JldHVybiBkKGJ8fHgpfSxqLGouZXhwb3J0cyx4LGEsYixjKX1yZXR1cm4gYltmXS5leHBvcnRzfWZvcih2YXIgZT0iZnVuY3Rpb24iPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZSxmPTA7ZjxjLmxlbmd0aDtmKyspZChjW2ZdKTtyZXR1cm4gZH0oezE6W2Z1bmN0aW9uKHgsYSxiKXtjb25zdCBjPXgoIi4vc3FscGFyc2VyL2luZGV4LmpzIiksZD1mdW5jdGlvbih4KXtjb25zdCBhPXgudG9TdHJpbmcoKS5yZXBsYWNlKC9eW2AnXS8sIiIpLnJlcGxhY2UoL1tgJ10kLywiIik7aWYoYS5tYXRjaCgvYC8pKXRocm93IG5ldyBFcnJvcihhKyIgbm90IHN1cHBvcnRlZCIpO3JldHVybiBhfSxlPWZ1bmN0aW9uKHgpe2NvbnN0IGE9ZCh4KSxiPWEudG9VcHBlckNhc2UoKTtyZXR1cm4geC5xdW90ZVR5cGUmJlsiJyIsJyInXS5pbmNsdWRlcyh4LnF1b3RlVHlwZSk/YTphLm1hdGNoKC9eLT9bMC05Ll0rJC8pP2EubWF0Y2goL1wuLyk/cGFyc2VGbG9hdChhKTpwYXJzZUludChhKToiVFJVRSI9PT1ifHwiRkFMU0UiIT09YiYmYX0sZj1mdW5jdGlvbih4LGEpe2xldCBiPW51bGw7c3dpdGNoKGEub3BlcmF0aW9uLnRvVXBwZXJDYXNlKCkpe2Nhc2UiPSI6eFtkKGEubGVmdCldPXskZXE6ZShhLnJpZ2h0KX07YnJlYWs7Y2FzZSIhPSI6eFtkKGEubGVmdCldPXskbmU6ZShhLnJpZ2h0KX07YnJlYWs7Y2FzZSI8Ijp4W2QoYS5sZWZ0KV09eyRsdDplKGEucmlnaHQpfTticmVhaztjYXNlIjw9Ijp4W2QoYS5sZWZ0KV09eyRsdGU6ZShhLnJpZ2h0KX07YnJlYWs7Y2FzZSI+Ijp4W2QoYS5sZWZ0KV09eyRndDplKGEucmlnaHQpfTticmVhaztjYXNlIj49Ijp4W2QoYS5sZWZ0KV09eyRndGU6ZShhLnJpZ2h0KX07YnJlYWs7Y2FzZSJSTElLRSI6Y2FzZSJSRUdFWFAiOnhbZChhLmxlZnQpXT17JHJlZ2V4OiIoKlVURjgpIitlKGEucmlnaHQpfTticmVhaztjYXNlIkxJS0UiOnhbZChhLmxlZnQpXT17JHJlZ2V4OiIoKlVURjgpXiIrKGUoYS5yaWdodCkrIiIpLnJlcGxhY2UoL18vZywiLiIpLnJlcGxhY2UoLyUrL2csIi4qIikrIiQifTticmVhaztjYXNlIklMSUtFIjp4W2QoYS5sZWZ0KV09eyRyZWdleDoiKCpVVEY4KSg/aSleIisoZShhLnJpZ2h0KSsiIikucmVwbGFjZSgvXy9nLCIuIikucmVwbGFjZSgvJSsvZywiLioiKSsiJCJ9O2JyZWFrO2Nhc2UiSU4iOnhbZChhLmxlZnQpXT17JGluOmEucmlnaHQudmFsdWUubWFwKGZ1bmN0aW9uKHgpe3JldHVybiB4LnZhbHVlfSl9O2JyZWFrO2Nhc2UiTk9UIElOIjp4W2QoYS5sZWZ0KV09eyRuaW46YS5yaWdodC52YWx1ZS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIHgudmFsdWV9KX07YnJlYWs7Y2FzZSJCRVRXRUVOIjp4W2QoYS5sZWZ0KV09eyRndGU6YS5yaWdodC52YWx1ZVswXS52YWx1ZSwkbHRlOmEucmlnaHQudmFsdWVbMV0udmFsdWV9O2JyZWFrO2Nhc2UiTk9UIEJFVFdFRU4iOmI9ZChhLmxlZnQpLHguJG9yPVt7fSx7fV0seC4kb3JbMF1bYl09eyRsdDphLnJpZ2h0LnZhbHVlWzBdLnZhbHVlfSx4LiRvclsxXVtiXT17JGd0OmEucmlnaHQudmFsdWVbMV0udmFsdWV9O2JyZWFrO2Nhc2UiQU5EIjp4W2I9IiRhbmQiXT1bXSx4W2JdLnB1c2goZih7fSxhLmxlZnQpKSx4W2JdLnB1c2goZih7fSxhLnJpZ2h0KSk7YnJlYWs7Y2FzZSJPUiI6eFtiPSIkb3IiXT1bXSx4W2JdLnB1c2goZih7fSxhLmxlZnQpKSx4W2JdLnB1c2goZih7fSxhLnJpZ2h0KSk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRXJyb3IoInVuc3VwcG9ydGVkIFNRTCBvcGVyYXRpb24gIithLm9wZXJhdGlvbil9cmV0dXJuIHh9LGc9ZnVuY3Rpb24oeCl7aWYoInN0cmluZyIhPXR5cGVvZiB4KXRocm93IG5ldyBFcnJvcigicXVlcnkgbXVzdCBiZSBhIHN0cmluZyIpO2NvbnN0IGE9e30sYj1jLnBhcnNlKHgpO2lmKGEudGFibGU9Yi5zb3VyY2UubmFtZS52YWx1ZSxiLmRpc3RpbmN0KXRocm93IG5ldyBFcnJvcigiRElTVElOQ1Qgbm90IHN1cHBvcnRlZCIpO2lmKGIuam9pbnMubGVuZ3RoPjApdGhyb3cgbmV3IEVycm9yKCJqb2lucyBub3Qgc3VwcG9ydGVkIik7aWYoYi51bmlvbnMubGVuZ3RoPjApdGhyb3cgbmV3IEVycm9yKCJ1bmlvbnMgbm90IHN1cHBvcnRlZCIpO2lmKGIuZ3JvdXApdGhyb3cgbmV3IEVycm9yKCJHUk9VUCBub3Qgc3VwcG9ydGVkIik7aWYoYi5maWVsZHMmJiIqIiE9PWIuZmllbGRzLnRvU3RyaW5nKCkpe2EuZmllbGRzPVtdO2Zvcihjb25zdCB4IGluIGIuZmllbGRzKXtjb25zdCBjPWIuZmllbGRzW3hdO2lmKG51bGwhPT1jLm5hbWUpdGhyb3cgbmV3IEVycm9yKCJhbGlhcyAiK2MudG9TdHJpbmcoKSsiIG5vdCBzdXBwb3J0ZWQiKTtpZighYy5maWVsZC52YWx1ZSl0aHJvdyBuZXcgRXJyb3IoYy50b1N0cmluZygpKyIgbm90IHN1cHBvcnRlZCIpO2EuZmllbGRzLnB1c2goZChjLmZpZWxkKSl9fWlmKGIud2hlcmUmJihhLnNlbGVjdG9yPWYoe30sYi53aGVyZS5jb25kaXRpb25zKSksYi5vcmRlciYmYi5vcmRlci5vcmRlcmluZ3Mpe2Euc29ydD1bXTtsZXQgeD1udWxsO2Zvcihjb25zdCBjIGluIGIub3JkZXIub3JkZXJpbmdzKXtjb25zdCBkPWIub3JkZXIub3JkZXJpbmdzW2NdLGU9e307aWYoZVtkLnZhbHVlLnZhbHVlXT0iREVTQyI9PT1kLmRpcmVjdGlvbi50b1VwcGVyQ2FzZSgpPyJkZXNjIjoiYXNjIixudWxsIT14JiZlW2QudmFsdWUudmFsdWVdIT09eCl0aHJvdyBuZXcgRXJyb3IoIk9SREVSIEJZIG11c3QgYmUgZWl0aGVyIGFsbCBBU0Mgb3IgYWxsIERFU0MsIG5vdCBtaXhlZCIpO3g9ZVtkLnZhbHVlLnZhbHVlXSxhLnNvcnQucHVzaChlKX19cmV0dXJuIGIubGltaXQmJihhLmxpbWl0PWIubGltaXQudmFsdWUudmFsdWUsYi5saW1pdC5vZmZzZXQmJihhLnNraXA9Yi5saW1pdC5vZmZzZXQudmFsdWUpKSxhfTthLmV4cG9ydHM9e3BhcnNlOmd9fSx7Ii4vc3FscGFyc2VyL2luZGV4LmpzIjoyfV0sMjpbZnVuY3Rpb24oeCxhLGIpe3NxbD14KCIuL2xpYi9zcWxfcGFyc2VyIik7Zm9yKGNvbnN0IHggaW4gc3FsKWJbeF09c3FsW3hdfSx7Ii4vbGliL3NxbF9wYXJzZXIiOjd9XSwzOltmdW5jdGlvbih4LGEsYil7KGZ1bmN0aW9uKGMpeyhmdW5jdGlvbigpe3ZhciBkPWZ1bmN0aW9uKCl7dmFyIHg9ZnVuY3Rpb24oeCxhLGIsYyl7Zm9yKGI9Ynx8e30sYz14Lmxlbmd0aDtjLS07Ylt4W2NdXT1hKTtyZXR1cm4gYn0sYT1bMSw4XSxiPVs1LDI2XSxjPVsxLDE0XSxkPVsxLDEzXSxlPVs1LDI2LDMxLDQyXSxmPVsxLDE3XSxnPVs1LDI2LDMxLDQyLDQ1LDYyXSxoPVsxLDI3XSxpPVsxLDI5XSxqPVsxLDM5XSxrPVsxLDQzXSxsPVsxLDQ0XSxtPVsxLDQwXSxuPVsxLDQxXSxvPVsxLDM4XSxwPVsxLDQyXSxxPVsxLDI1XSxyPVs1LDI2LDMxXSxzPVs1LDI2LDMxLDQyLDQ1XSx0PVsxLDU2XSx1PVsxOCw0M10sdj1bMSw1OV0sdz1bMSw2MF0seT1bMSw2MV0sej1bMSw2Ml0sQT1bMSw2M10sQj1bNSwxOCwyMywyNiwzMSwzNCwzNywzOCw0MSw0Miw0Myw0NSw2Miw2NCw2NSw2Niw2Nyw2OCw3MF0sQz1bNSwxOCwyMywyNiwzMSwzNCwzNywzOCw0MSw0Miw0Myw0NCw0NSw1MSw2Miw2NCw2NSw2Niw2Nyw2OCw3MCw3MV0sRD1bMSw2OV0sRT1bMiw4M10sRj1bMSw4M10sRz1bMSw4NF0sSD1bMSwxMDJdLEk9WzUsMjYsMzEsNDIsNDMsNDRdLEo9WzEsMTEwXSxLPVs1LDI2LDMxLDQyLDQzLDQ1LDY0XSxMPVs1LDI2LDMxLDQxLDQyLDQ1LDYyXSxNPVsxLDExM10sTj1bMSwxMTRdLE89WzEsMTE1XSxQPVs1LDI2LDMxLDM0LDM1LDM3LDM4LDQxLDQyLDQ1LDYyXSxRPVs1LDE4LDIzLDI2LDMxLDM0LDM3LDM4LDQxLDQyLDQzLDQ1LDYyLDY0LDcwXSxSPVs1LDI2LDMxLDM0LDM3LDM4LDQxLDQyLDQ1LDYyXSxTPVs1LDI2LDMxLDQyLDU2LDU4XSxUPXt0cmFjZTpmdW5jdGlvbigpe30seXk6e30sc3ltYm9sc186e2Vycm9yOjIsUm9vdDozLFF1ZXJ5OjQsRU9GOjUsU2VsZWN0UXVlcnk6NixVbmlvbnM6NyxTZWxlY3RXaXRoTGltaXRRdWVyeTo4LEJhc2ljU2VsZWN0UXVlcnk6OSxTZWxlY3Q6MTAsT3JkZXJDbGF1c2U6MTEsR3JvdXBDbGF1c2U6MTIsTGltaXRDbGF1c2U6MTMsU2VsZWN0Q2xhdXNlOjE0LFdoZXJlQ2xhdXNlOjE1LFNFTEVDVDoxNixGaWVsZHM6MTcsRlJPTToxOCxUYWJsZToxOSxESVNUSU5DVDoyMCxKb2luczoyMSxMaXRlcmFsOjIyLEFTOjIzLExFRlRfUEFSRU46MjQsTGlzdDoyNSxSSUdIVF9QQVJFTjoyNixXSU5ET1c6MjcsV0lORE9XX0ZVTkNUSU9OOjI4LE51bWJlcjoyOSxVbmlvbjozMCxVTklPTjozMSxBTEw6MzIsSm9pbjozMyxKT0lOOjM0LE9OOjM1LEV4cHJlc3Npb246MzYsTEVGVDozNyxSSUdIVDozOCxJTk5FUjozOSxPVVRFUjo0MCxXSEVSRTo0MSxMSU1JVDo0MixTRVBBUkFUT1I6NDMsT0ZGU0VUOjQ0LE9SREVSOjQ1LEJZOjQ2LE9yZGVyQXJnczo0NyxPZmZzZXRDbGF1c2U6NDgsT3JkZXJBcmc6NDksVmFsdWU6NTAsRElSRUNUSU9OOjUxLE9mZnNldFJvd3M6NTIsRmV0Y2hDbGF1c2U6NTMsUk9XOjU0LFJPV1M6NTUsRkVUQ0g6NTYsRklSU1Q6NTcsT05MWTo1OCxORVhUOjU5LEdyb3VwQmFzaWNDbGF1c2U6NjAsSGF2aW5nQ2xhdXNlOjYxLEdST1VQOjYyLEFyZ3VtZW50TGlzdDo2MyxIQVZJTkc6NjQsTUFUSDo2NSxNQVRIX01VTFRJOjY2LE9QRVJBVE9SOjY3LEJFVFdFRU46NjgsQmV0d2VlbkV4cHJlc3Npb246NjksQ09ORElUSU9OQUw6NzAsU1VCX1NFTEVDVF9PUDo3MSxTdWJTZWxlY3RFeHByZXNzaW9uOjcyLFNVQl9TRUxFQ1RfVU5BUllfT1A6NzMsU3RyaW5nOjc0LEZ1bmN0aW9uOjc1LFVzZXJGdW5jdGlvbjo3NixCb29sZWFuOjc3LFBhcmFtZXRlcjo3OCxOVU1CRVI6NzksQk9PTEVBTjo4MCxQQVJBTUVURVI6ODEsU1RSSU5HOjgyLERCTFNUUklORzo4MyxMSVRFUkFMOjg0LERPVDo4NSxGVU5DVElPTjo4NixBZ2dyZWdhdGVBcmd1bWVudExpc3Q6ODcsRmllbGQ6ODgsU1RBUjo4OSwkYWNjZXB0OjAsJGVuZDoxfSx0ZXJtaW5hbHNfOnsyOiJlcnJvciIsNToiRU9GIiwxNjoiU0VMRUNUIiwxODoiRlJPTSIsMjA6IkRJU1RJTkNUIiwyMzoiQVMiLDI0OiJMRUZUX1BBUkVOIiwyNjoiUklHSFRfUEFSRU4iLDI3OiJXSU5ET1ciLDI4OiJXSU5ET1dfRlVOQ1RJT04iLDMxOiJVTklPTiIsMzI6IkFMTCIsMzQ6IkpPSU4iLDM1OiJPTiIsMzc6IkxFRlQiLDM4OiJSSUdIVCIsMzk6IklOTkVSIiw0MDoiT1VURVIiLDQxOiJXSEVSRSIsNDI6IkxJTUlUIiw0MzoiU0VQQVJBVE9SIiw0NDoiT0ZGU0VUIiw0NToiT1JERVIiLDQ2OiJCWSIsNTE6IkRJUkVDVElPTiIsNTQ6IlJPVyIsNTU6IlJPV1MiLDU2OiJGRVRDSCIsNTc6IkZJUlNUIiw1ODoiT05MWSIsNTk6Ik5FWFQiLDYyOiJHUk9VUCIsNjQ6IkhBVklORyIsNjU6Ik1BVEgiLDY2OiJNQVRIX01VTFRJIiw2NzoiT1BFUkFUT1IiLDY4OiJCRVRXRUVOIiw3MDoiQ09ORElUSU9OQUwiLDcxOiJTVUJfU0VMRUNUX09QIiw3MzoiU1VCX1NFTEVDVF9VTkFSWV9PUCIsNzk6Ik5VTUJFUiIsODA6IkJPT0xFQU4iLDgxOiJQQVJBTUVURVIiLDgyOiJTVFJJTkciLDgzOiJEQkxTVFJJTkciLDg0OiJMSVRFUkFMIiw4NToiRE9UIiw4NjoiRlVOQ1RJT04iLDg5OiJTVEFSIn0scHJvZHVjdGlvbnNfOlswLFszLDJdLFs0LDFdLFs0LDJdLFs2LDFdLFs2LDFdLFs5LDFdLFs5LDJdLFs5LDJdLFs5LDNdLFs4LDJdLFsxMCwxXSxbMTAsMl0sWzE0LDRdLFsxNCw1XSxbMTQsNV0sWzE0LDZdLFsxOSwxXSxbMTksMl0sWzE5LDNdLFsxOSwzXSxbMTksM10sWzE5LDRdLFsxOSw2XSxbNywxXSxbNywyXSxbMzAsMl0sWzMwLDNdLFsyMSwxXSxbMjEsMl0sWzMzLDRdLFszMyw1XSxbMzMsNV0sWzMzLDZdLFszMyw2XSxbMzMsNl0sWzMzLDZdLFsxNSwyXSxbMTMsMl0sWzEzLDRdLFsxMyw0XSxbMTEsM10sWzExLDRdLFs0NywxXSxbNDcsM10sWzQ5LDFdLFs0OSwyXSxbNDgsMl0sWzQ4LDNdLFs1MiwyXSxbNTIsMl0sWzUzLDRdLFs1Myw0XSxbMTIsMV0sWzEyLDJdLFs2MCwzXSxbNjEsMl0sWzM2LDNdLFszNiwzXSxbMzYsM10sWzM2LDNdLFszNiwzXSxbMzYsM10sWzM2LDVdLFszNiwzXSxbMzYsMl0sWzM2LDFdLFszNiwxXSxbNjksM10sWzcyLDNdLFs1MCwxXSxbNTAsMV0sWzUwLDFdLFs1MCwxXSxbNTAsMV0sWzUwLDFdLFs1MCwxXSxbMjUsMV0sWzI5LDFdLFs3NywxXSxbNzgsMV0sWzc0LDFdLFs3NCwxXSxbMjIsMV0sWzIyLDNdLFs3NSw0XSxbNzYsM10sWzc2LDRdLFs4NywxXSxbODcsMl0sWzYzLDFdLFs2MywzXSxbMTcsMV0sWzE3LDNdLFs4OCwxXSxbODgsMV0sWzg4LDNdXSxwZXJmb3JtQWN0aW9uOmZ1bmN0aW9uKHgsYSxiLGMsZCxlLGYpe3ZhciBnPWUubGVuZ3RoLTE7c3dpdGNoKGQpe2Nhc2UgMTpyZXR1cm4gdGhpcy4kPWVbZy0xXTtjYXNlIDI6Y2FzZSA0OmNhc2UgNTpjYXNlIDY6Y2FzZSAxMTpjYXNlIDUzOmNhc2UgNjY6Y2FzZSA2NzpjYXNlIDcwOmNhc2UgNzE6Y2FzZSA3MjpjYXNlIDczOmNhc2UgNzQ6Y2FzZSA3NTpjYXNlIDc2OnRoaXMuJD1lW2ddO2JyZWFrO2Nhc2UgMzp0aGlzLiQ9KGVbZy0xXS51bmlvbnM9ZVtnXSxlW2ctMV0pO2JyZWFrO2Nhc2UgNzp0aGlzLiQ9KGVbZy0xXS5vcmRlcj1lW2ddLGVbZy0xXSk7YnJlYWs7Y2FzZSA4OnRoaXMuJD0oZVtnLTFdLmdyb3VwPWVbZ10sZVtnLTFdKTticmVhaztjYXNlIDk6dGhpcy4kPShlW2ctMl0uZ3JvdXA9ZVtnLTFdLGVbZy0yXS5vcmRlcj1lW2ddLGVbZy0yXSk7YnJlYWs7Y2FzZSAxMDp0aGlzLiQ9KGVbZy0xXS5saW1pdD1lW2ddLGVbZy0xXSk7YnJlYWs7Y2FzZSAxMjp0aGlzLiQ9KGVbZy0xXS53aGVyZT1lW2ddLGVbZy0xXSk7YnJlYWs7Y2FzZSAxMzp0aGlzLiQ9bmV3IGMuU2VsZWN0KGVbZy0yXSxlW2ddLCExKTticmVhaztjYXNlIDE0OnRoaXMuJD1uZXcgYy5TZWxlY3QoZVtnLTJdLGVbZ10sITApO2JyZWFrO2Nhc2UgMTU6dGhpcy4kPW5ldyBjLlNlbGVjdChlW2ctM10sZVtnLTFdLCExLGVbZ10pO2JyZWFrO2Nhc2UgMTY6dGhpcy4kPW5ldyBjLlNlbGVjdChlW2ctM10sZVtnLTFdLCEwLGVbZ10pO2JyZWFrO2Nhc2UgMTc6dGhpcy4kPW5ldyBjLlRhYmxlKGVbZ10pO2JyZWFrO2Nhc2UgMTg6dGhpcy4kPW5ldyBjLlRhYmxlKGVbZy0xXSxlW2ddKTticmVhaztjYXNlIDE5OnRoaXMuJD1uZXcgYy5UYWJsZShlW2ctMl0sZVtnXSk7YnJlYWs7Y2FzZSAyMDpjYXNlIDQ5OmNhc2UgNTA6Y2FzZSA1MTpjYXNlIDUyOmNhc2UgNTc6dGhpcy4kPWVbZy0xXTticmVhaztjYXNlIDIxOmNhc2UgNjk6dGhpcy4kPW5ldyBjLlN1YlNlbGVjdChlW2ctMV0pO2JyZWFrO2Nhc2UgMjI6dGhpcy4kPW5ldyBjLlN1YlNlbGVjdChlW2ctMl0sZVtnXSk7YnJlYWs7Y2FzZSAyMzp0aGlzLiQ9bmV3IGMuVGFibGUoZVtnLTVdLG51bGwsZVtnLTRdLGVbZy0zXSxlW2ctMV0pO2JyZWFrO2Nhc2UgMjQ6Y2FzZSAyODpjYXNlIDQzOmNhc2UgOTA6Y2FzZSA5Mjp0aGlzLiQ9W2VbZ11dO2JyZWFrO2Nhc2UgMjU6dGhpcy4kPWVbZy0xXS5jb25jYXQoZVskMDFdKTticmVhaztjYXNlIDI2OnRoaXMuJD1uZXcgYy5VbmlvbihlW2ddKTticmVhaztjYXNlIDI3OnRoaXMuJD1uZXcgYy5VbmlvbihlW2ddLCEwKTticmVhaztjYXNlIDI5OnRoaXMuJD1lW2ctMV0uY29uY2F0KGVbZ10pO2JyZWFrO2Nhc2UgMzA6dGhpcy4kPW5ldyBjLkpvaW4oZVtnLTJdLGVbZ10pO2JyZWFrO2Nhc2UgMzE6dGhpcy4kPW5ldyBjLkpvaW4oZVtnLTJdLGVbZ10sIkxFRlQiKTticmVhaztjYXNlIDMyOnRoaXMuJD1uZXcgYy5Kb2luKGVbZy0yXSxlW2ddLCJSSUdIVCIpO2JyZWFrO2Nhc2UgMzM6dGhpcy4kPW5ldyBjLkpvaW4oZVtnLTJdLGVbZ10sIkxFRlQiLCJJTk5FUiIpO2JyZWFrO2Nhc2UgMzQ6dGhpcy4kPW5ldyBjLkpvaW4oZVtnLTJdLGVbZ10sIlJJR0hUIiwiSU5ORVIiKTticmVhaztjYXNlIDM1OnRoaXMuJD1uZXcgYy5Kb2luKGVbZy0yXSxlW2ddLCJMRUZUIiwiT1VURVIiKTticmVhaztjYXNlIDM2OnRoaXMuJD1uZXcgYy5Kb2luKGVbZy0yXSxlW2ddLCJSSUdIVCIsIk9VVEVSIik7YnJlYWs7Y2FzZSAzNzp0aGlzLiQ9bmV3IGMuV2hlcmUoZVtnXSk7YnJlYWs7Y2FzZSAzODp0aGlzLiQ9bmV3IGMuTGltaXQoZVtnXSk7YnJlYWs7Y2FzZSAzOTp0aGlzLiQ9bmV3IGMuTGltaXQoZVtnXSxlW2ctMl0pO2JyZWFrO2Nhc2UgNDA6dGhpcy4kPW5ldyBjLkxpbWl0KGVbZy0yXSxlW2ddKTticmVhaztjYXNlIDQxOnRoaXMuJD1uZXcgYy5PcmRlcihlW2ddKTticmVhaztjYXNlIDQyOnRoaXMuJD1uZXcgYy5PcmRlcihlW2ctMV0sZVtnXSk7YnJlYWs7Y2FzZSA0NDpjYXNlIDkxOmNhc2UgOTM6dGhpcy4kPWVbZy0yXS5jb25jYXQoZVtnXSk7YnJlYWs7Y2FzZSA0NTp0aGlzLiQ9bmV3IGMuT3JkZXJBcmd1bWVudChlW2ddLCJBU0MiKTticmVhaztjYXNlIDQ2OnRoaXMuJD1uZXcgYy5PcmRlckFyZ3VtZW50KGVbZy0xXSxlW2ddKTticmVhaztjYXNlIDQ3OnRoaXMuJD1uZXcgYy5PZmZzZXQoZVtnXSk7YnJlYWs7Y2FzZSA0ODp0aGlzLiQ9bmV3IGMuT2Zmc2V0KGVbZy0xXSxlW2ddKTticmVhaztjYXNlIDU0OnRoaXMuJD0oZVtnLTFdLmhhdmluZz1lW2ddLGVbZy0xXSk7YnJlYWs7Y2FzZSA1NTp0aGlzLiQ9bmV3IGMuR3JvdXAoZVtnXSk7YnJlYWs7Y2FzZSA1Njp0aGlzLiQ9bmV3IGMuSGF2aW5nKGVbZ10pO2JyZWFrO2Nhc2UgNTg6Y2FzZSA1OTpjYXNlIDYwOmNhc2UgNjE6Y2FzZSA2MjpjYXNlIDY0OnRoaXMuJD1uZXcgYy5PcChlW2ctMV0sZVtnLTJdLGVbZ10pO2JyZWFrO2Nhc2UgNjM6dGhpcy4kPW5ldyBjLk9wKGVbZy0zXSxlW2ctNF0sZVtnLTFdKTticmVhaztjYXNlIDY1OnRoaXMuJD1uZXcgYy5VbmFyeU9wKGVbZy0xXSxlW2ddKTticmVhaztjYXNlIDY4OnRoaXMuJD1uZXcgYy5CZXR3ZWVuT3AoW2VbZy0yXSxlW2ddXSk7YnJlYWs7Y2FzZSA3Nzp0aGlzLiQ9bmV3IGMuTGlzdFZhbHVlKGVbZ10pO2JyZWFrO2Nhc2UgNzg6dGhpcy4kPW5ldyBjLk51bWJlclZhbHVlKGVbZ10pO2JyZWFrO2Nhc2UgNzk6dGhpcy4kPW5ldyBjLkJvb2xlYW5WYWx1ZShlW2ddKTticmVhaztjYXNlIDgwOnRoaXMuJD1uZXcgYy5QYXJhbWV0ZXJWYWx1ZShlW2ddKTticmVhaztjYXNlIDgxOnRoaXMuJD1uZXcgYy5TdHJpbmdWYWx1ZShlW2ddLCInIik7YnJlYWs7Y2FzZSA4Mjp0aGlzLiQ9bmV3IGMuU3RyaW5nVmFsdWUoZVtnXSwnIicpO2JyZWFrO2Nhc2UgODM6dGhpcy4kPW5ldyBjLkxpdGVyYWxWYWx1ZShlW2ddKTticmVhaztjYXNlIDg0OnRoaXMuJD1uZXcgYy5MaXRlcmFsVmFsdWUoZVtnLTJdLGVbZ10pO2JyZWFrO2Nhc2UgODU6dGhpcy4kPW5ldyBjLkZ1bmN0aW9uVmFsdWUoZVtnLTNdLGVbZy0xXSk7YnJlYWs7Y2FzZSA4Njp0aGlzLiQ9bmV3IGMuRnVuY3Rpb25WYWx1ZShlW2ctMl0sbnVsbCwhMCk7YnJlYWs7Y2FzZSA4Nzp0aGlzLiQ9bmV3IGMuRnVuY3Rpb25WYWx1ZShlW2ctM10sZVtnLTFdLCEwKTticmVhaztjYXNlIDg4OnRoaXMuJD1uZXcgYy5Bcmd1bWVudExpc3RWYWx1ZShlW2ddKTticmVhaztjYXNlIDg5OnRoaXMuJD1uZXcgYy5Bcmd1bWVudExpc3RWYWx1ZShlW2ddLCEwKTticmVhaztjYXNlIDk0OnRoaXMuJD1uZXcgYy5TdGFyO2JyZWFrO2Nhc2UgOTU6dGhpcy4kPW5ldyBjLkZpZWxkKGVbZ10pO2JyZWFrO2Nhc2UgOTY6dGhpcy4kPW5ldyBjLkZpZWxkKGVbZy0yXSxlW2ddKX19LHRhYmxlOlt7MzoxLDQ6Miw2OjMsODo0LDk6NSwxMDo2LDE0OjcsMTY6YX0sezE6WzNdfSx7NTpbMSw5XX0seChiLFsyLDJdLHs3OjEwLDEzOjExLDMwOjEyLDMxOmMsNDI6ZH0pLHgoZSxbMiw0XSkseChlLFsyLDVdKSx4KGUsWzIsNl0sezExOjE1LDEyOjE2LDYwOjE4LDQ1OmYsNjI6WzEsMTldfSkseChnLFsyLDExXSx7MTU6MjAsNDE6WzEsMjFdfSksezE3OjIyLDIwOlsxLDIzXSwyMjozMSwyNDpoLDI5OjMyLDM2OjI2LDUwOjI4LDcyOjMwLDczOmksNzQ6MzMsNzU6MzQsNzY6MzUsNzc6MzYsNzg6MzcsNzk6aiw4MDprLDgxOmwsODI6bSw4MzpuLDg0Om8sODY6cCw4ODoyNCw4OTpxfSx7MTpbMiwxXX0seChiLFsyLDNdLHszMDo0NSwzMTpjfSkseChlLFsyLDEwXSkseChyLFsyLDI0XSksezI5OjQ2LDc5Omp9LHs2OjQ3LDg6NCw5OjUsMTA6NiwxNDo3LDE2OmEsMzI6WzEsNDhdfSx4KGUsWzIsN10pLHgoZSxbMiw4XSx7MTE6NDksNDU6Zn0pLHs0NjpbMSw1MF19LHgocyxbMiw1M10sezYxOjUxLDY0OlsxLDUyXX0pLHs0NjpbMSw1M119LHgoZyxbMiwxMl0pLHsyMjozMSwyNDpoLDI5OjMyLDM2OjU0LDUwOjI4LDcyOjMwLDczOmksNzQ6MzMsNzU6MzQsNzY6MzUsNzc6MzYsNzg6MzcsNzk6aiw4MDprLDgxOmwsODI6bSw4MzpuLDg0Om8sODY6cH0sezE4OlsxLDU1XSw0Mzp0fSx7MTc6NTcsMjI6MzEsMjQ6aCwyOTozMiwzNjoyNiw1MDoyOCw3MjozMCw3MzppLDc0OjMzLDc1OjM0LDc2OjM1LDc3OjM2LDc4OjM3LDc5OmosODA6ayw4MTpsLDgyOm0sODM6biw4NDpvLDg2OnAsODg6MjQsODk6cX0seCh1LFsyLDkyXSkseCh1LFsyLDk0XSkseCh1LFsyLDk1XSx7MjM6WzEsNThdLDY1OnYsNjY6dyw2Nzp5LDY4OnosNzA6QX0pLHs0OjY1LDY6Myw4OjQsOTo1LDEwOjYsMTQ6NywxNjphLDIyOjMxLDI0OmgsMjk6MzIsMzY6NjQsNTA6MjgsNzI6MzAsNzM6aSw3NDozMyw3NTozNCw3NjozNSw3NzozNiw3ODozNyw3OTpqLDgwOmssODE6bCw4MjptLDgzOm4sODQ6byw4NjpwfSx4KEIsWzIsNjddLHs3MTpbMSw2Nl19KSx7MjQ6WzEsNjhdLDcyOjY3fSx4KEIsWzIsNjZdKSx4KEMsWzIsNzBdLHs4NTpEfSkseChDLFsyLDcxXSkseChDLFsyLDcyXSkseChDLFsyLDczXSkseChDLFsyLDc0XSkseChDLFsyLDc1XSkseChDLFsyLDc2XSkseChbNSwxOCwyMywyNiwzMSwzNCwzNywzOCw0MSw0Miw0Myw0NCw0NSw1MSw2Miw2NCw2NSw2Niw2Nyw2OCw3MCw3MSw4NV0sRSx7MjQ6WzEsNzBdfSkseChbNSwxOCwyMywyNiwzMSwzNCwzNywzOCw0MSw0Miw0Myw0NCw0NSw1MSw1NCw1NSw2Miw2NCw2NSw2Niw2Nyw2OCw3MCw3MV0sWzIsNzhdKSx4KEMsWzIsODFdKSx4KEMsWzIsODJdKSx7MjQ6WzEsNzFdfSx4KEMsWzIsNzldKSx4KEMsWzIsODBdKSx4KHIsWzIsMjVdKSx4KGUsWzIsMzhdLHs0MzpbMSw3Ml0sNDQ6WzEsNzNdfSkseChyLFsyLDI2XSx7MTM6MTEsNDI6ZH0pLHs2Ojc0LDg6NCw5OjUsMTA6NiwxNDo3LDE2OmF9LHgoZSxbMiw5XSksezIyOjMxLDI5OjMyLDQ3Ojc1LDQ5Ojc2LDUwOjc3LDc0OjMzLDc1OjM0LDc2OjM1LDc3OjM2LDc4OjM3LDc5OmosODA6ayw4MTpsLDgyOm0sODM6biw4NDpvLDg2OnB9LHgocyxbMiw1NF0pLHsyMjozMSwyNDpoLDI5OjMyLDM2Ojc4LDUwOjI4LDcyOjMwLDczOmksNzQ6MzMsNzU6MzQsNzY6MzUsNzc6MzYsNzg6MzcsNzk6aiw4MDprLDgxOmwsODI6bSw4MzpuLDg0Om8sODY6cH0sezIyOjMxLDI0OmgsMjk6MzIsMzY6ODAsNTA6MjgsNjM6NzksNzI6MzAsNzM6aSw3NDozMyw3NTozNCw3NjozNSw3NzozNiw3ODozNyw3OTpqLDgwOmssODE6bCw4MjptLDgzOm4sODQ6byw4NjpwfSx4KGcsWzIsMzddLHs2NTp2LDY2OncsNjc6eSw2ODp6LDcwOkF9KSx7MTk6ODEsMjI6ODIsMjQ6Riw4NDpHfSx7MjI6MzEsMjQ6aCwyOTozMiwzNjoyNiw1MDoyOCw3MjozMCw3MzppLDc0OjMzLDc1OjM0LDc2OjM1LDc3OjM2LDc4OjM3LDc5OmosODA6ayw4MTpsLDgyOm0sODM6biw4NDpvLDg2OnAsODg6ODUsODk6cX0sezE4OlsxLDg2XSw0Mzp0fSx7MjI6ODcsODQ6R30sezIyOjMxLDI0OmgsMjk6MzIsMzY6ODgsNTA6MjgsNzI6MzAsNzM6aSw3NDozMyw3NTozNCw3NjozNSw3NzozNiw3ODozNyw3OTpqLDgwOmssODE6bCw4MjptLDgzOm4sODQ6byw4NjpwfSx7MjI6MzEsMjQ6aCwyOTozMiwzNjo4OSw1MDoyOCw3MjozMCw3MzppLDc0OjMzLDc1OjM0LDc2OjM1LDc3OjM2LDc4OjM3LDc5OmosODA6ayw4MTpsLDgyOm0sODM6biw4NDpvLDg2OnB9LHsyMjozMSwyNDpoLDI5OjMyLDM2OjkwLDUwOjI4LDcyOjMwLDczOmksNzQ6MzMsNzU6MzQsNzY6MzUsNzc6MzYsNzg6MzcsNzk6aiw4MDprLDgxOmwsODI6bSw4MzpuLDg0Om8sODY6cH0sezIyOjMxLDI0OmgsMjk6MzIsMzY6OTIsNTA6MjgsNjk6OTEsNzI6MzAsNzM6aSw3NDozMyw3NTozNCw3NjozNSw3NzozNiw3ODozNyw3OTpqLDgwOmssODE6bCw4MjptLDgzOm4sODQ6byw4NjpwfSx7MjI6MzEsMjQ6aCwyOTozMiwzNjo5Myw1MDoyOCw3MjozMCw3MzppLDc0OjMzLDc1OjM0LDc2OjM1LDc3OjM2LDc4OjM3LDc5OmosODA6ayw4MTpsLDgyOm0sODM6biw4NDpvLDg2OnB9LHsyNjpbMSw5NF0sNjU6diw2Njp3LDY3OnksNjg6eiw3MDpBfSx7MjY6WzEsOTVdfSx7MjQ6WzEsOTZdLDcyOjk3fSx4KEIsWzIsNjVdKSx7NDo2NSw2OjMsODo0LDk6NSwxMDo2LDE0OjcsMTY6YX0sezg0OlsxLDk4XX0sezIwOkgsMjI6MzEsMjQ6aCwyNjpbMSw5OV0sMjk6MzIsMzY6ODAsNTA6MjgsNjM6MTAxLDcyOjMwLDczOmksNzQ6MzMsNzU6MzQsNzY6MzUsNzc6MzYsNzg6MzcsNzk6aiw4MDprLDgxOmwsODI6bSw4MzpuLDg0Om8sODY6cCw4NzoxMDB9LHsyMDpILDIyOjMxLDI0OmgsMjk6MzIsMzY6ODAsNTA6MjgsNjM6MTAxLDcyOjMwLDczOmksNzQ6MzMsNzU6MzQsNzY6MzUsNzc6MzYsNzg6MzcsNzk6aiw4MDprLDgxOmwsODI6bSw4MzpuLDg0Om8sODY6cCw4NzoxMDN9LHsyOToxMDQsNzk6an0sezI5OjEwNSw3OTpqfSx4KHIsWzIsMjddLHsxMzoxMSw0MjpkfSkseChlLFsyLDQxXSx7NDg6MTA2LDQzOlsxLDEwN10sNDQ6WzEsMTA4XX0pLHgoSSxbMiw0M10pLHgoSSxbMiw0NV0sezUxOlsxLDEwOV19KSx4KHMsWzIsNTZdLHs2NTp2LDY2OncsNjc6eSw2ODp6LDcwOkF9KSx4KFs1LDI2LDMxLDQyLDQ1LDY0XSxbMiw1NV0sezQzOkp9KSx4KEssWzIsOTBdLHs2NTp2LDY2OncsNjc6eSw2ODp6LDcwOkF9KSx4KEwsWzIsMTNdLHsyMToxMTEsMzM6MTEyLDM0Ok0sMzc6TiwzODpPfSkseChQLFsyLDE3XSx7MjI6MTE2LDIzOlsxLDExN10sMjc6WzEsMTE4XSw4NDpHLDg1OkR9KSx7NDoxMjAsNjozLDg6NCw5OjUsMTA6NiwxNDo3LDE2OmEsMjI6MzEsMjQ6aCwyNToxMTksMjk6MzIsMzY6ODAsNTA6MjgsNjM6MTIxLDcyOjMwLDczOmksNzQ6MzMsNzU6MzQsNzY6MzUsNzc6MzYsNzg6MzcsNzk6aiw4MDprLDgxOmwsODI6bSw4MzpuLDg0Om8sODY6cH0seChbNSwxOCwyMywyNiwyNywzMSwzNCwzNSwzNywzOCw0MSw0Miw0Myw0NSw2Miw4NCw4NV0sRSkseCh1LFsyLDkzXSksezE5OjEyMiwyMjo4MiwyNDpGLDg0Okd9LHgodSxbMiw5Nl0sezg1OkR9KSx4KFs1LDE4LDIzLDI2LDMxLDM0LDM3LDM4LDQxLDQyLDQzLDQ1LDYyLDY0LDY1LDY3LDcwXSxbMiw1OF0sezY2OncsNjg6en0pLHgoWzUsMTgsMjMsMjYsMzEsMzQsMzcsMzgsNDEsNDIsNDMsNDUsNjIsNjQsNjUsNjYsNjcsNzBdLFsyLDU5XSx7Njg6en0pLHgoWzUsMTgsMjMsMjYsMzEsMzQsMzcsMzgsNDEsNDIsNDMsNDUsNjIsNjQsNjcsNzBdLFsyLDYwXSx7NjU6diw2Njp3LDY4Onp9KSx4KEIsWzIsNjFdKSx7NjU6diw2Njp3LDY3OnksNjg6eiw3MDpbMSwxMjNdfSx4KFEsWzIsNjJdLHs2NTp2LDY2OncsNjc6eSw2ODp6fSkseChCLFsyLDU3XSkseChCLFsyLDY5XSksezQ6NjUsNjozLDg6NCw5OjUsMTA6NiwxNDo3LDE2OmEsMjI6MzEsMjQ6aCwyNToxMjQsMjk6MzIsMzY6ODAsNTA6MjgsNjM6MTIxLDcyOjMwLDczOmksNzQ6MzMsNzU6MzQsNzY6MzUsNzc6MzYsNzg6MzcsNzk6aiw4MDprLDgxOmwsODI6bSw4MzpuLDg0Om8sODY6cH0seChCLFsyLDY0XSkseChbNSwxOCwyMywyNiwyNywzMSwzNCwzNSwzNywzOCw0MSw0Miw0Myw0NCw0NSw1MSw2Miw2NCw2NSw2Niw2Nyw2OCw3MCw3MSw4NCw4NV0sWzIsODRdKSx4KEMsWzIsODZdKSx7MjY6WzEsMTI1XX0sezI2OlsyLDg4XSw0MzpKfSx7MjI6MzEsMjQ6aCwyOTozMiwzNjo4MCw1MDoyOCw2MzoxMjYsNzI6MzAsNzM6aSw3NDozMyw3NTozNCw3NjozNSw3NzozNiw3ODozNyw3OTpqLDgwOmssODE6bCw4MjptLDgzOm4sODQ6byw4NjpwfSx7MjY6WzEsMTI3XX0seChlLFsyLDM5XSkseChlLFsyLDQwXSkseChlLFsyLDQyXSksezIyOjMxLDI5OjMyLDQ5OjEyOCw1MDo3Nyw3NDozMyw3NTozNCw3NjozNSw3NzozNiw3ODozNyw3OTpqLDgwOmssODE6bCw4MjptLDgzOm4sODQ6byw4NjpwfSx7Mjk6MTMwLDUyOjEyOSw3OTpqfSx4KEksWzIsNDZdKSx7MjI6MzEsMjk6MzIsNTA6MTMxLDc0OjMzLDc1OjM0LDc2OjM1LDc3OjM2LDc4OjM3LDc5OmosODA6ayw4MTpsLDgyOm0sODM6biw4NDpvLDg2OnB9LHgoTCxbMiwxNV0sezMzOjEzMiwzNDpNLDM3Ok4sMzg6T30pLHgoUixbMiwyOF0pLHsxOToxMzMsMjI6ODIsMjQ6Riw4NDpHfSx7MzQ6WzEsMTM0XSwzOTpbMSwxMzVdLDQwOlsxLDEzNl19LHszNDpbMSwxMzddLDM5OlsxLDEzOF0sNDA6WzEsMTM5XX0seChQLFsyLDE4XSx7ODU6RH0pLHsyMjoxNDAsODQ6R30sezI4OlsxLDE0MV19LHsyNjpbMSwxNDJdfSx7MjY6WzEsMTQzXX0sezI2OlsyLDc3XSw0MzpKfSx4KEwsWzIsMTRdLHszMzoxMTIsMjE6MTQ0LDM0Ok0sMzc6TiwzODpPfSksezIyOjMxLDI0OmgsMjk6MzIsMzY6MTQ1LDUwOjI4LDcyOjMwLDczOmksNzQ6MzMsNzU6MzQsNzY6MzUsNzc6MzYsNzg6MzcsNzk6aiw4MDprLDgxOmwsODI6bSw4MzpuLDg0Om8sODY6cH0sezI2OlsxLDE0Nl19LHgoQyxbMiw4N10pLHsyNjpbMiw4OV0sNDM6Sn0seChDLFsyLDg1XSkseChJLFsyLDQ0XSkseChlLFsyLDQ3XSx7NTM6MTQ3LDU2OlsxLDE0OF19KSx7NTQ6WzEsMTQ5XSw1NTpbMSwxNTBdfSx4KEssWzIsOTFdKSx4KFIsWzIsMjldKSx7MzU6WzEsMTUxXX0sezE5OjE1MiwyMjo4MiwyNDpGLDg0Okd9LHszNDpbMSwxNTNdfSx7MzQ6WzEsMTU0XX0sezE5OjE1NSwyMjo4MiwyNDpGLDg0Okd9LHszNDpbMSwxNTZdfSx7MzQ6WzEsMTU3XX0seChQLFsyLDE5XSx7ODU6RH0pLHsyNDpbMSwxNThdfSx4KFAsWzIsMjBdKSx4KFAsWzIsMjFdLHsyMjoxNTksODQ6R30pLHgoTCxbMiwxNl0sezMzOjEzMiwzNDpNLDM3Ok4sMzg6T30pLHgoUSxbMiw2OF0sezY1OnYsNjY6dyw2Nzp5LDY4Onp9KSx4KEIsWzIsNjNdKSx4KGUsWzIsNDhdKSx7NTc6WzEsMTYwXSw1OTpbMSwxNjFdfSx4KFMsWzIsNDldKSx4KFMsWzIsNTBdKSx7MjI6MzEsMjQ6aCwyOTozMiwzNjoxNjIsNTA6MjgsNzI6MzAsNzM6aSw3NDozMyw3NTozNCw3NjozNSw3NzozNiw3ODozNyw3OTpqLDgwOmssODE6bCw4MjptLDgzOm4sODQ6byw4NjpwfSx7MzU6WzEsMTYzXX0sezE5OjE2NCwyMjo4MiwyNDpGLDg0Okd9LHsxOToxNjUsMjI6ODIsMjQ6Riw4NDpHfSx7MzU6WzEsMTY2XX0sezE5OjE2NywyMjo4MiwyNDpGLDg0Okd9LHsxOToxNjgsMjI6ODIsMjQ6Riw4NDpHfSx7Mjk6MTY5LDc5Omp9LHgoUCxbMiwyMl0sezg1OkR9KSx7Mjk6MTMwLDUyOjE3MCw3OTpqfSx7Mjk6MTMwLDUyOjE3MSw3OTpqfSx4KFIsWzIsMzBdLHs2NTp2LDY2OncsNjc6eSw2ODp6LDcwOkF9KSx7MjI6MzEsMjQ6aCwyOTozMiwzNjoxNzIsNTA6MjgsNzI6MzAsNzM6aSw3NDozMyw3NTozNCw3NjozNSw3NzozNiw3ODozNyw3OTpqLDgwOmssODE6bCw4MjptLDgzOm4sODQ6byw4NjpwfSx7MzU6WzEsMTczXX0sezM1OlsxLDE3NF19LHsyMjozMSwyNDpoLDI5OjMyLDM2OjE3NSw1MDoyOCw3MjozMCw3MzppLDc0OjMzLDc1OjM0LDc2OjM1LDc3OjM2LDc4OjM3LDc5OmosODA6ayw4MTpsLDgyOm0sODM6biw4NDpvLDg2OnB9LHszNTpbMSwxNzZdfSx7MzU6WzEsMTc3XX0sezI2OlsxLDE3OF19LHs1ODpbMSwxNzldfSx7NTg6WzEsMTgwXX0seChSLFsyLDMxXSx7NjU6diw2Njp3LDY3OnksNjg6eiw3MDpBfSksezIyOjMxLDI0OmgsMjk6MzIsMzY6MTgxLDUwOjI4LDcyOjMwLDczOmksNzQ6MzMsNzU6MzQsNzY6MzUsNzc6MzYsNzg6MzcsNzk6aiw4MDprLDgxOmwsODI6bSw4MzpuLDg0Om8sODY6cH0sezIyOjMxLDI0OmgsMjk6MzIsMzY6MTgyLDUwOjI4LDcyOjMwLDczOmksNzQ6MzMsNzU6MzQsNzY6MzUsNzc6MzYsNzg6MzcsNzk6aiw4MDprLDgxOmwsODI6bSw4MzpuLDg0Om8sODY6cH0seChSLFsyLDMyXSx7NjU6diw2Njp3LDY3OnksNjg6eiw3MDpBfSksezIyOjMxLDI0OmgsMjk6MzIsMzY6MTgzLDUwOjI4LDcyOjMwLDczOmksNzQ6MzMsNzU6MzQsNzY6MzUsNzc6MzYsNzg6MzcsNzk6aiw4MDprLDgxOmwsODI6bSw4MzpuLDg0Om8sODY6cH0sezIyOjMxLDI0OmgsMjk6MzIsMzY6MTg0LDUwOjI4LDcyOjMwLDczOmksNzQ6MzMsNzU6MzQsNzY6MzUsNzc6MzYsNzg6MzcsNzk6aiw4MDprLDgxOmwsODI6bSw4MzpuLDg0Om8sODY6cH0seChQLFsyLDIzXSkseChlLFsyLDUxXSkseChlLFsyLDUyXSkseChSLFsyLDMzXSx7NjU6diw2Njp3LDY3OnksNjg6eiw3MDpBfSkseChSLFsyLDM1XSx7NjU6diw2Njp3LDY3OnksNjg6eiw3MDpBfSkseChSLFsyLDM0XSx7NjU6diw2Njp3LDY3OnksNjg6eiw3MDpBfSkseChSLFsyLDM2XSx7NjU6diw2Njp3LDY3OnksNjg6eiw3MDpBfSldLGRlZmF1bHRBY3Rpb25zOns5OlsyLDFdfSxwYXJzZUVycm9yOmZ1bmN0aW9uKHgsYSl7aWYoIWEucmVjb3ZlcmFibGUpdGhyb3cgbmV3IEVycm9yKHgpO3RoaXMudHJhY2UoeCl9LHBhcnNlOmZ1bmN0aW9uKHgpe3ZhciBhPXRoaXMsYj1bMF0sYz1bbnVsbF0sZD1bXSxlPXRoaXMudGFibGUsZj0iIixnPTAsaD0wLGk9MCxqPTIsaz0xLGw9ZC5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSxtPU9iamVjdC5jcmVhdGUodGhpcy5sZXhlciksbj17eXk6e319O2Zvcih2YXIgbyBpbiB0aGlzLnl5KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLnl5LG8pJiYobi55eVtvXT10aGlzLnl5W29dKTttLnNldElucHV0KHgsbi55eSksbi55eS5sZXhlcj1tLG4ueXkucGFyc2VyPXRoaXMsdm9pZCAwPT09bS55eWxsb2MmJihtLnl5bGxvYz17fSk7dmFyIHA9bS55eWxsb2M7ZC5wdXNoKHApO3ZhciBxPW0ub3B0aW9ucyYmbS5vcHRpb25zLnJhbmdlcztmdW5jdGlvbiByKCl7dmFyIHg7cmV0dXJuIm51bWJlciIhPXR5cGVvZih4PW0ubGV4KCl8fGspJiYoeD1hLnN5bWJvbHNfW3hdfHx4KSx4fSJmdW5jdGlvbiI9PXR5cGVvZiBuLnl5LnBhcnNlRXJyb3I/dGhpcy5wYXJzZUVycm9yPW4ueXkucGFyc2VFcnJvcjp0aGlzLnBhcnNlRXJyb3I9T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLnBhcnNlRXJyb3I7Zm9yKHZhciBzLHQsdSx2LHcseSx6LEEsQixDPXt9Ozspe2lmKHU9YltiLmxlbmd0aC0xXSx0aGlzLmRlZmF1bHRBY3Rpb25zW3VdP3Y9dGhpcy5kZWZhdWx0QWN0aW9uc1t1XToobnVsbD09cyYmKHM9cigpKSx2PWVbdV0mJmVbdV1bc10pLHZvaWQgMD09PXZ8fCF2Lmxlbmd0aHx8IXZbMF0pe3ZhciBEPSIiO2Zvcih5IGluIEI9W10sZVt1XSl0aGlzLnRlcm1pbmFsc19beV0mJnk+aiYmQi5wdXNoKCInIit0aGlzLnRlcm1pbmFsc19beV0rIiciKTtEPW0uc2hvd1Bvc2l0aW9uPyJQYXJzZSBlcnJvciBvbiBsaW5lICIrKGcrMSkrIjpcbiIrbS5zaG93UG9zaXRpb24oKSsiXG5FeHBlY3RpbmcgIitCLmpvaW4oIiwgIikrIiwgZ290ICciKyh0aGlzLnRlcm1pbmFsc19bc118fHMpKyInIjoiUGFyc2UgZXJyb3Igb24gbGluZSAiKyhnKzEpKyI6IFVuZXhwZWN0ZWQgIisocz09az8iZW5kIG9mIGlucHV0IjoiJyIrKHRoaXMudGVybWluYWxzX1tzXXx8cykrIiciKSx0aGlzLnBhcnNlRXJyb3IoRCx7dGV4dDptLm1hdGNoLHRva2VuOnRoaXMudGVybWluYWxzX1tzXXx8cyxsaW5lOm0ueXlsaW5lbm8sbG9jOnAsZXhwZWN0ZWQ6Qn0pfWlmKHZbMF1pbnN0YW5jZW9mIEFycmF5JiZ2Lmxlbmd0aD4xKXRocm93IG5ldyBFcnJvcigiUGFyc2UgRXJyb3I6IG11bHRpcGxlIGFjdGlvbnMgcG9zc2libGUgYXQgc3RhdGU6ICIrdSsiLCB0b2tlbjogIitzKTtzd2l0Y2godlswXSl7Y2FzZSAxOmIucHVzaChzKSxjLnB1c2gobS55eXRleHQpLGQucHVzaChtLnl5bGxvYyksYi5wdXNoKHZbMV0pLHM9bnVsbCx0PyhzPXQsdD1udWxsKTooaD1tLnl5bGVuZyxmPW0ueXl0ZXh0LGc9bS55eWxpbmVubyxwPW0ueXlsbG9jLGk+MCYmaS0tKTticmVhaztjYXNlIDI6aWYoej10aGlzLnByb2R1Y3Rpb25zX1t2WzFdXVsxXSxDLiQ9Y1tjLmxlbmd0aC16XSxDLl8kPXtmaXJzdF9saW5lOmRbZC5sZW5ndGgtKHp8fDEpXS5maXJzdF9saW5lLGxhc3RfbGluZTpkW2QubGVuZ3RoLTFdLmxhc3RfbGluZSxmaXJzdF9jb2x1bW46ZFtkLmxlbmd0aC0oenx8MSldLmZpcnN0X2NvbHVtbixsYXN0X2NvbHVtbjpkW2QubGVuZ3RoLTFdLmxhc3RfY29sdW1ufSxxJiYoQy5fJC5yYW5nZT1bZFtkLmxlbmd0aC0oenx8MSldLnJhbmdlWzBdLGRbZC5sZW5ndGgtMV0ucmFuZ2VbMV1dKSx2b2lkIDAhPT0odz10aGlzLnBlcmZvcm1BY3Rpb24uYXBwbHkoQyxbZixoLGcsbi55eSx2WzFdLGMsZF0uY29uY2F0KGwpKSkpcmV0dXJuIHc7eiYmKGI9Yi5zbGljZSgwLC0xKnoqMiksYz1jLnNsaWNlKDAsLTEqeiksZD1kLnNsaWNlKDAsLTEqeikpLGIucHVzaCh0aGlzLnByb2R1Y3Rpb25zX1t2WzFdXVswXSksYy5wdXNoKEMuJCksZC5wdXNoKEMuXyQpLEE9ZVtiW2IubGVuZ3RoLTJdXVtiW2IubGVuZ3RoLTFdXSxiLnB1c2goQSk7YnJlYWs7Y2FzZSAzOnJldHVybiEwfX1yZXR1cm4hMH19O2Z1bmN0aW9uIFUoKXt0aGlzLnl5PXt9fXJldHVybiBVLnByb3RvdHlwZT1ULFQuUGFyc2VyPVUsbmV3IFV9KCk7dm9pZCAwIT09eCYmdm9pZCAwIT09YiYmKGIucGFyc2VyPWQsYi5QYXJzZXI9ZC5QYXJzZXIsYi5wYXJzZT1mdW5jdGlvbigpe3JldHVybiBkLnBhcnNlLmFwcGx5KGQsYXJndW1lbnRzKX0sYi5tYWluPWZ1bmN0aW9uKHgpe3JldHVybiB4WzFdfHwoY29uc29sZS5sb2coIlVzYWdlOiAiK3hbMF0rIiBGSUxFIiksYy5leGl0KDEpKSxiLnBhcnNlci5wYXJzZShzb3VyY2UpfSx2b2lkIDAhPT1hJiZ4Lm1haW49PT1hJiZiLm1haW4oYy5hcmd2LnNsaWNlKDEpKSl9KS5jYWxsKHRoaXMpfSkuY2FsbCh0aGlzLHgoIl9wcm9jZXNzIikpfSx7X3Byb2Nlc3M6OH1dLDQ6W2Z1bmN0aW9uKHgsYSxiKXsoZnVuY3Rpb24oKXtsZXQgeDt4PWZ1bmN0aW9uKCl7bGV0IHgsYSxiLGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxO2Z1bmN0aW9uIHIoeCxhKXtsZXQgYixjO2ZvcihudWxsPT1hJiYoYT17fSksdGhpcy5zcWw9eCx0aGlzLnByZXNlcnZlV2hpdGVzcGFjZT1hLnByZXNlcnZlV2hpdGVzcGFjZXx8ITEsdGhpcy50b2tlbnM9W10sdGhpcy5jdXJyZW50TGluZT0xLGM9MDt0aGlzLmNodW5rPXguc2xpY2UoYyk7KXtpZigoYj10aGlzLmtleXdvcmRUb2tlbigpfHx0aGlzLnN0YXJUb2tlbigpfHx0aGlzLmJvb2xlYW5Ub2tlbigpfHx0aGlzLmZ1bmN0aW9uVG9rZW4oKXx8dGhpcy53aW5kb3dFeHRlbnNpb24oKXx8dGhpcy5zb3J0T3JkZXJUb2tlbigpfHx0aGlzLnNlcGVyYXRvclRva2VuKCl8fHRoaXMub3BlcmF0b3JUb2tlbigpfHx0aGlzLm1hdGhUb2tlbigpfHx0aGlzLmRvdFRva2VuKCl8fHRoaXMuY29uZGl0aW9uYWxUb2tlbigpfHx0aGlzLmJldHdlZW5Ub2tlbigpfHx0aGlzLnN1YlNlbGVjdE9wVG9rZW4oKXx8dGhpcy5zdWJTZWxlY3RVbmFyeU9wVG9rZW4oKXx8dGhpcy5udW1iZXJUb2tlbigpfHx0aGlzLnN0cmluZ1Rva2VuKCl8fHRoaXMucGFyYW1ldGVyVG9rZW4oKXx8dGhpcy5wYXJlbnNUb2tlbigpfHx0aGlzLndoaXRlc3BhY2VUb2tlbigpfHx0aGlzLmxpdGVyYWxUb2tlbigpKTwxKXRocm93IG5ldyBFcnJvcigiTk9USElORyBDT05TVU1FRDogU3RvcHBlZCBhdCAtICciK3RoaXMuY2h1bmsuc2xpY2UoMCwzMCkrIiciKTtjKz1ifXRoaXMudG9rZW4oIkVPRiIsIiIpLHRoaXMucG9zdFByb2Nlc3MoKX1yZXR1cm4gci5wcm90b3R5cGUucG9zdFByb2Nlc3M9ZnVuY3Rpb24oKXtsZXQgeCxhLGIsYyxkLGUsZjtmb3IoZj1bXSx4PWM9MCxkPShlPXRoaXMudG9rZW5zKS5sZW5ndGg7YzxkO3g9KytjKSJTVEFSIj09PShiPWVbeF0pWzBdJiYiU0VQQVJBVE9SIiE9PShhPXRoaXMudG9rZW5zW3grMV0pWzBdJiYiRlJPTSIhPT1hWzBdP2YucHVzaChiWzBdPSJNQVRIX01VTFRJIik6Zi5wdXNoKHZvaWQgMCk7cmV0dXJuIGZ9LHIucHJvdG90eXBlLnRva2VuPWZ1bmN0aW9uKHgsYSl7cmV0dXJuIHRoaXMudG9rZW5zLnB1c2goW3gsYSx0aGlzLmN1cnJlbnRMaW5lXSl9LHIucHJvdG90eXBlLnRva2VuaXplRnJvbVJlZ2V4PWZ1bmN0aW9uKHgsYSxiLGMsZCl7bGV0IGUsZjtyZXR1cm4gbnVsbD09YiYmKGI9MCksbnVsbD09YyYmKGM9YiksbnVsbD09ZCYmKGQ9ITApLChlPWEuZXhlYyh0aGlzLmNodW5rKSk/KGY9ZVtiXSxkJiZ0aGlzLnRva2VuKHgsZiksZVtjXS5sZW5ndGgpOjB9LHIucHJvdG90eXBlLnRva2VuaXplRnJvbVdvcmQ9ZnVuY3Rpb24oeCxhKXtsZXQgYixjO3JldHVybiBudWxsPT1hJiYoYT14KSxhPXRoaXMucmVnZXhFc2NhcGUoYSksKGI9KGM9L15cdyskLy50ZXN0KGEpP25ldyBSZWdFeHAoIl4oIithKyIpXFxiIiwiaWciKTpuZXcgUmVnRXhwKCJeKCIrYSsiKSIsImlnIikpLmV4ZWModGhpcy5jaHVuaykpPyh0aGlzLnRva2VuKHgsYlsxXSksYlsxXS5sZW5ndGgpOjB9LHIucHJvdG90eXBlLnRva2VuaXplRnJvbUxpc3Q9ZnVuY3Rpb24oeCxhKXtsZXQgYixjLGQsZTtmb3IoYz0wLGQ9MCxlPWEubGVuZ3RoO2Q8ZSYmKGI9YVtkXSwhKChjPXRoaXMudG9rZW5pemVGcm9tV29yZCh4LGIpKT4wKSk7ZCsrKTtyZXR1cm4gY30sci5wcm90b3R5cGUua2V5d29yZFRva2VuPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9rZW5pemVGcm9tV29yZCgiU0VMRUNUIil8fHRoaXMudG9rZW5pemVGcm9tV29yZCgiRElTVElOQ1QiKXx8dGhpcy50b2tlbml6ZUZyb21Xb3JkKCJGUk9NIil8fHRoaXMudG9rZW5pemVGcm9tV29yZCgiV0hFUkUiKXx8dGhpcy50b2tlbml6ZUZyb21Xb3JkKCJHUk9VUCIpfHx0aGlzLnRva2VuaXplRnJvbVdvcmQoIk9SREVSIil8fHRoaXMudG9rZW5pemVGcm9tV29yZCgiQlkiKXx8dGhpcy50b2tlbml6ZUZyb21Xb3JkKCJIQVZJTkciKXx8dGhpcy50b2tlbml6ZUZyb21Xb3JkKCJMSU1JVCIpfHx0aGlzLnRva2VuaXplRnJvbVdvcmQoIkpPSU4iKXx8dGhpcy50b2tlbml6ZUZyb21Xb3JkKCJMRUZUIil8fHRoaXMudG9rZW5pemVGcm9tV29yZCgiUklHSFQiKXx8dGhpcy50b2tlbml6ZUZyb21Xb3JkKCJJTk5FUiIpfHx0aGlzLnRva2VuaXplRnJvbVdvcmQoIk9VVEVSIil8fHRoaXMudG9rZW5pemVGcm9tV29yZCgiT04iKXx8dGhpcy50b2tlbml6ZUZyb21Xb3JkKCJBUyIpfHx0aGlzLnRva2VuaXplRnJvbVdvcmQoIlVOSU9OIil8fHRoaXMudG9rZW5pemVGcm9tV29yZCgiQUxMIil8fHRoaXMudG9rZW5pemVGcm9tV29yZCgiTElNSVQiKXx8dGhpcy50b2tlbml6ZUZyb21Xb3JkKCJPRkZTRVQiKXx8dGhpcy50b2tlbml6ZUZyb21Xb3JkKCJGRVRDSCIpfHx0aGlzLnRva2VuaXplRnJvbVdvcmQoIlJPVyIpfHx0aGlzLnRva2VuaXplRnJvbVdvcmQoIlJPV1MiKXx8dGhpcy50b2tlbml6ZUZyb21Xb3JkKCJPTkxZIil8fHRoaXMudG9rZW5pemVGcm9tV29yZCgiTkVYVCIpfHx0aGlzLnRva2VuaXplRnJvbVdvcmQoIkZJUlNUIil9LHIucHJvdG90eXBlLmRvdFRva2VuPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9rZW5pemVGcm9tV29yZCgiRE9UIiwiLiIpfSxyLnByb3RvdHlwZS5vcGVyYXRvclRva2VuPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9rZW5pemVGcm9tTGlzdCgiT1BFUkFUT1IiLGspfSxyLnByb3RvdHlwZS5tYXRoVG9rZW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b2tlbml6ZUZyb21MaXN0KCJNQVRIIixjKXx8dGhpcy50b2tlbml6ZUZyb21MaXN0KCJNQVRIX01VTFRJIixkKX0sci5wcm90b3R5cGUuY29uZGl0aW9uYWxUb2tlbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRva2VuaXplRnJvbUxpc3QoIkNPTkRJVElPTkFMIixpKX0sci5wcm90b3R5cGUuYmV0d2VlblRva2VuPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9rZW5pemVGcm9tTGlzdCgiQkVUV0VFTiIsaCl9LHIucHJvdG90eXBlLnN1YlNlbGVjdE9wVG9rZW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b2tlbml6ZUZyb21MaXN0KCJTVUJfU0VMRUNUX09QIixvKX0sci5wcm90b3R5cGUuc3ViU2VsZWN0VW5hcnlPcFRva2VuPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9rZW5pemVGcm9tTGlzdCgiU1VCX1NFTEVDVF9VTkFSWV9PUCIscCl9LHIucHJvdG90eXBlLmZ1bmN0aW9uVG9rZW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b2tlbml6ZUZyb21MaXN0KCJGVU5DVElPTiIsail9LHIucHJvdG90eXBlLnNvcnRPcmRlclRva2VuPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9rZW5pemVGcm9tTGlzdCgiRElSRUNUSU9OIixsKX0sci5wcm90b3R5cGUuYm9vbGVhblRva2VuPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9rZW5pemVGcm9tTGlzdCgiQk9PTEVBTiIseCl9LHIucHJvdG90eXBlLnN0YXJUb2tlbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRva2VuaXplRnJvbVJlZ2V4KCJTVEFSIixtKX0sci5wcm90b3R5cGUuc2VwZXJhdG9yVG9rZW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b2tlbml6ZUZyb21SZWdleCgiU0VQQVJBVE9SIixnKX0sci5wcm90b3R5cGUubGl0ZXJhbFRva2VuPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudG9rZW5pemVGcm9tUmVnZXgoIkxJVEVSQUwiLGIsMSwwKX0sci5wcm90b3R5cGUubnVtYmVyVG9rZW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b2tlbml6ZUZyb21SZWdleCgiTlVNQkVSIixlKX0sci5wcm90b3R5cGUucGFyYW1ldGVyVG9rZW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b2tlbml6ZUZyb21SZWdleCgiUEFSQU1FVEVSIixmKX0sci5wcm90b3R5cGUuc3RyaW5nVG9rZW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50b2tlbml6ZUZyb21SZWdleCgiU1RSSU5HIixuLDEsMCl8fHRoaXMudG9rZW5pemVGcm9tUmVnZXgoIkRCTFNUUklORyIsYSwxLDApfSxyLnByb3RvdHlwZS5wYXJlbnNUb2tlbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRva2VuaXplRnJvbVJlZ2V4KCJMRUZUX1BBUkVOIiwvXlwoLyl8fHRoaXMudG9rZW5pemVGcm9tUmVnZXgoIlJJR0hUX1BBUkVOIiwvXlwpLyl9LHIucHJvdG90eXBlLndpbmRvd0V4dGVuc2lvbj1mdW5jdGlvbigpe2xldCB4O3JldHVybih4PS9eXC4od2luKToobGVuZ3RofHRpbWUpL2kuZXhlYyh0aGlzLmNodW5rKSk/KHRoaXMudG9rZW4oIldJTkRPVyIseFsxXSksdGhpcy50b2tlbigiV0lORE9XX0ZVTkNUSU9OIix4WzJdKSx4WzBdLmxlbmd0aCk6MH0sci5wcm90b3R5cGUud2hpdGVzcGFjZVRva2VuPWZ1bmN0aW9uKCl7bGV0IHgsYSxiO3JldHVybih4PXEuZXhlYyh0aGlzLmNodW5rKSk/KGE9KGI9eFswXSkucmVwbGFjZSgvW15cbl0vLCIiKS5sZW5ndGgsdGhpcy5jdXJyZW50TGluZSs9YSx0aGlzLnByZXNlcnZlV2hpdGVzcGFjZSYmdGhpcy50b2tlbihuYW1lLGIpLGIubGVuZ3RoKTowfSxyLnByb3RvdHlwZS5yZWdleEVzY2FwZT1mdW5jdGlvbih4KXtyZXR1cm4geC5yZXBsYWNlKC9bLVtcXXt9KCkqKz8uLFxcXiR8I1xzXS9nLCJcXCQmIil9LGo9WyJBVkciLCJDT1VOVCIsIk1JTiIsIk1BWCIsIlNVTSJdLGw9WyJBU0MiLCJERVNDIl0saz1bIj0iLCIhPSIsIj49IiwiPiIsIjw9IiwiPD4iLCI8IiwiTElLRSIsIklMSUtFIiwiUkxJS0UiLCJSRUdFWFAiLCJJUyBOT1QiLCJJUyJdLG89WyJJTiIsIk5PVCBJTiIsIkFOWSIsIkFMTCIsIlNPTUUiXSxwPVsiRVhJU1RTIl0saT1bIkFORCIsIk9SIl0saD1bIkJFVFdFRU4iLCJOT1QgQkVUV0VFTiJdLHg9WyJUUlVFIiwiRkFMU0UiLCJOVUxMIl0sYz1bIisiLCItIl0sZD1bIi8iLCIqIl0sbT0vXlwqLyxnPS9eLC8scT0vXlsgXG5ccl0rLyxiPS9eYD8oW2Etel9dW2EtejAtOV9dezAsfSlgPy9pLGY9L15cJFswLTldKy8sZT0vXlwtP1swLTldKyhcLlswLTldKyk/LyxuPS9eJyhbXlxcJ10qKD86XFwuW15cXCddKikqKScvLGE9L14iKFteXFwiXSooPzpcXC5bXlxcIl0qKSopIi8scn0oKSxiLnRva2VuaXplPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyB4KGEsYikudG9rZW5zfX0pLmNhbGwodGhpcyl9LHt9XSw1OltmdW5jdGlvbih4LGEsYil7KGZ1bmN0aW9uKCl7bGV0IHgsYSxjLGQsZSxmLGcsaCxpLGosayxsLG0sbixvLHAscSxyLHMsdCx1LHYsdyx5O3k9ZnVuY3Rpb24oeCl7bGV0IGE7cmV0dXJuIGZ1bmN0aW9uKCl7bGV0IGIsYyxkLGU7Zm9yKGU9W10sYj0wLGM9KGQ9eC5zcGxpdCgiXG4iKSkubGVuZ3RoO2I8YztiKyspYT1kW2JdLGUucHVzaCgiICAiK2EpO3JldHVybiBlfSgpLmpvaW4oIlxuIil9LGIuU2VsZWN0PXA9ZnVuY3Rpb24oKXtmdW5jdGlvbiB4KHgsYSxiLGMsZCl7dGhpcy5maWVsZHM9eCx0aGlzLnNvdXJjZT1hLHRoaXMuZGlzdGluY3Q9bnVsbCE9YiYmYix0aGlzLmpvaW5zPW51bGwhPWM/YzpbXSx0aGlzLnVuaW9ucz1udWxsIT1kP2Q6W10sdGhpcy5vcmRlcj1udWxsLHRoaXMuZ3JvdXA9bnVsbCx0aGlzLndoZXJlPW51bGwsdGhpcy5saW1pdD1udWxsfXJldHVybiB4LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe2xldCB4LGEsYixjLGQsZSxmLGcsaDtmb3IoKGE9WyJTRUxFQ1QgIit0aGlzLmZpZWxkcy5qb2luKCIsICIpXSkucHVzaCh5KCJGUk9NICIrdGhpcy5zb3VyY2UpKSxjPTAsZT0oZz10aGlzLmpvaW5zKS5sZW5ndGg7YzxlO2MrKyl4PWdbY10sYS5wdXNoKHkoeC50b1N0cmluZygpKSk7Zm9yKHRoaXMud2hlcmUmJmEucHVzaCh5KHRoaXMud2hlcmUudG9TdHJpbmcoKSkpLHRoaXMuZ3JvdXAmJmEucHVzaCh5KHRoaXMuZ3JvdXAudG9TdHJpbmcoKSkpLHRoaXMub3JkZXImJmEucHVzaCh5KHRoaXMub3JkZXIudG9TdHJpbmcoKSkpLHRoaXMubGltaXQmJmEucHVzaCh5KHRoaXMubGltaXQudG9TdHJpbmcoKSkpLGQ9MCxmPShoPXRoaXMudW5pb25zKS5sZW5ndGg7ZDxmO2QrKyliPWhbZF0sYS5wdXNoKGIudG9TdHJpbmcoKSk7cmV0dXJuIGEuam9pbigiXG4iKX0seH0oKSxiLlN1YlNlbGVjdD1zPWZ1bmN0aW9uKCl7ZnVuY3Rpb24geCh4LGEpe3RoaXMuc2VsZWN0PXgsdGhpcy5uYW1lPW51bGwhPWE/YTpudWxsfXJldHVybiB4LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe2xldCB4O3JldHVybih4PVtdKS5wdXNoKCIoIikseC5wdXNoKHkodGhpcy5zZWxlY3QudG9TdHJpbmcoKSkpLHgucHVzaCh0aGlzLm5hbWU/IikgIit0aGlzLm5hbWUudG9TdHJpbmcoKToiKSIpLHguam9pbigiXG4iKX0seH0oKSxiLkpvaW49Zz1mdW5jdGlvbigpe2Z1bmN0aW9uIHgoeCxhLGIsYyl7dGhpcy5yaWdodD14LHRoaXMuY29uZGl0aW9ucz1udWxsIT1hP2E6bnVsbCx0aGlzLnNpZGU9bnVsbCE9Yj9iOm51bGwsdGhpcy5tb2RlPW51bGwhPWM/YzpudWxsfXJldHVybiB4LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe2xldCB4O3JldHVybiB4PSIiLG51bGwhPXRoaXMuc2lkZSYmKHgrPXRoaXMuc2lkZSsiICIpLG51bGwhPXRoaXMubW9kZSYmKHgrPXRoaXMubW9kZSsiICIpLHgrIkpPSU4gIit0aGlzLnJpZ2h0KyJcbiIreSgiT04gIit0aGlzLmNvbmRpdGlvbnMpfSx4fSgpLGIuVW5pb249dj1mdW5jdGlvbigpe2Z1bmN0aW9uIHgoeCxhKXt0aGlzLnF1ZXJ5PXgsdGhpcy5hbGw9bnVsbCE9YSYmYX1yZXR1cm4geC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtsZXQgeDtyZXR1cm4iVU5JT04iKyh4PXRoaXMuYWxsPyIgQUxMIjoiIikrIlxuIit0aGlzLnF1ZXJ5LnRvU3RyaW5nKCl9LHh9KCksYi5MaXRlcmFsVmFsdWU9aj1mdW5jdGlvbigpe2Z1bmN0aW9uIHgoeCxhKXt0aGlzLnZhbHVlPXgsdGhpcy52YWx1ZTI9bnVsbCE9YT9hOm51bGwsdGhpcy52YWx1ZTI/KHRoaXMubmVzdGVkPSEwLHRoaXMudmFsdWVzPXRoaXMudmFsdWUudmFsdWVzLHRoaXMudmFsdWVzLnB1c2goYSkpOih0aGlzLm5lc3RlZD0hMSx0aGlzLnZhbHVlcz1bdGhpcy52YWx1ZV0pfXJldHVybiB4LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJgIit0aGlzLnZhbHVlcy5qb2luKCIuIikrImAifSx4fSgpLGIuU3RyaW5nVmFsdWU9cj1mdW5jdGlvbigpe2Z1bmN0aW9uIHgoeCxhKXt0aGlzLnZhbHVlPXgsdGhpcy5xdW90ZVR5cGU9bnVsbCE9YT9hOiInJyJ9cmV0dXJuIHgucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIiIrdGhpcy5xdW90ZVR5cGUrdGhpcy52YWx1ZSt0aGlzLnF1b3RlVHlwZX0seH0oKSxiLk51bWJlclZhbHVlPWo9ZnVuY3Rpb24oKXtmdW5jdGlvbiB4KHgpe3RoaXMudmFsdWU9TnVtYmVyKHgpfXJldHVybiB4LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlLnRvU3RyaW5nKCl9LHh9KCksYi5MaXN0VmFsdWU9aT1mdW5jdGlvbigpe2Z1bmN0aW9uIHgoeCl7dGhpcy52YWx1ZT14fXJldHVybiB4LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiIoIit0aGlzLnZhbHVlLmpvaW4oIiwgIikrIikifSx4fSgpLGIuUGFyYW1ldGVyVmFsdWU9bz1mdW5jdGlvbigpe2Z1bmN0aW9uIHgoeCl7dGhpcy52YWx1ZT14LHRoaXMuaW5kZXg9cGFyc2VJbnQoeC5zdWJzdHIoMSksMTApLTF9cmV0dXJuIHgucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIiIrdGhpcy52YWx1ZX0seH0oKSxiLkFyZ3VtZW50TGlzdFZhbHVlPXg9ZnVuY3Rpb24oKXtmdW5jdGlvbiB4KHgsYSl7dGhpcy52YWx1ZT14LHRoaXMuZGlzdGluY3Q9bnVsbCE9YSYmYX1yZXR1cm4geC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kaXN0aW5jdD8iRElTVElOQ1QgIit0aGlzLnZhbHVlLmpvaW4oIiwgIik6IiIrdGhpcy52YWx1ZS5qb2luKCIsICIpfSx4fSgpLGIuQm9vbGVhblZhbHVlPWo9ZnVuY3Rpb24oKXtmdW5jdGlvbiB4KHgpe3RoaXMudmFsdWU9ZnVuY3Rpb24oKXtzd2l0Y2goeC50b0xvd2VyQ2FzZSgpKXtjYXNlInRydWUiOnJldHVybiEwO2Nhc2UiZmFsc2UiOnJldHVybiExO2RlZmF1bHQ6cmV0dXJuIG51bGx9fSgpfXJldHVybiB4LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBudWxsIT10aGlzLnZhbHVlP3RoaXMudmFsdWUudG9TdHJpbmcoKS50b1VwcGVyQ2FzZSgpOiJOVUxMIn0seH0oKSxiLkZ1bmN0aW9uVmFsdWU9ZD1mdW5jdGlvbigpe2Z1bmN0aW9uIHgoeCxhLGIpe3RoaXMubmFtZT14LHRoaXMuYXJndW1lbnRzPW51bGwhPWE/YTpudWxsLHRoaXMudWRmPW51bGwhPWImJmJ9cmV0dXJuIHgucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXJndW1lbnRzP3RoaXMubmFtZS50b1VwcGVyQ2FzZSgpKyIoIit0aGlzLmFyZ3VtZW50cy50b1N0cmluZygpKyIpIjp0aGlzLm5hbWUudG9VcHBlckNhc2UoKSsiKCkifSx4fSgpLGIuT3JkZXI9bT1mdW5jdGlvbigpe2Z1bmN0aW9uIHgoeCxhKXt0aGlzLm9yZGVyaW5ncz14LHRoaXMub2Zmc2V0PWF9cmV0dXJuIHgucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIk9SREVSIEJZICIrdGhpcy5vcmRlcmluZ3Muam9pbigiLCAiKSsodGhpcy5vZmZzZXQ/IlxuIit0aGlzLm9mZnNldC50b1N0cmluZygpOiIiKX0seH0oKSxiLk9yZGVyQXJndW1lbnQ9bj1mdW5jdGlvbigpe2Z1bmN0aW9uIHgoeCxhKXt0aGlzLnZhbHVlPXgsdGhpcy5kaXJlY3Rpb249bnVsbCE9YT9hOiJBU0MifXJldHVybiB4LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlKyIgIit0aGlzLmRpcmVjdGlvbn0seH0oKSxiLk9mZnNldD1rPWZ1bmN0aW9uKCl7ZnVuY3Rpb24geCh4LGEpe3RoaXMucm93X2NvdW50PXgsdGhpcy5saW1pdD1hfXJldHVybiB4LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJPRkZTRVQgIit0aGlzLnJvd19jb3VudCsiIFJPV1MiKyh0aGlzLmxpbWl0PyJcbkZFVENIIE5FWFQgIit0aGlzLmxpbWl0KyIgUk9XUyBPTkxZIjoiIil9LHh9KCksYi5MaW1pdD1oPWZ1bmN0aW9uKCl7ZnVuY3Rpb24geCh4LGEpe3RoaXMudmFsdWU9eCx0aGlzLm9mZnNldD1hfXJldHVybiB4LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJMSU1JVCAiK3RoaXMudmFsdWUrKHRoaXMub2Zmc2V0PyJcbk9GRlNFVCAiK3RoaXMub2Zmc2V0OiIiKX0seH0oKSxiLlRhYmxlPXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB4KHgsYSxiLGMsZCl7dGhpcy5uYW1lPXgsdGhpcy5hbGlhcz1udWxsIT1hP2E6bnVsbCx0aGlzLndpbj1udWxsIT1iP2I6bnVsbCx0aGlzLndpbkZuPW51bGwhPWM/YzpudWxsLHRoaXMud2luQXJnPW51bGwhPWQ/ZDpudWxsfXJldHVybiB4LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLndpbj90aGlzLm5hbWUrIi4iK3RoaXMud2luKyI6Iit0aGlzLndpbkZuKyIoIit0aGlzLndpbkFyZysiKSI6dGhpcy5hbGlhcz90aGlzLm5hbWUrIiBBUyAiK3RoaXMuYWxpYXM6dGhpcy5uYW1lLnRvU3RyaW5nKCl9LHh9KCksYi5Hcm91cD1lPWZ1bmN0aW9uKCl7ZnVuY3Rpb24geCh4KXt0aGlzLmZpZWxkcz14LHRoaXMuaGF2aW5nPW51bGx9cmV0dXJuIHgucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7bGV0IHg7cmV0dXJuIHg9WyJHUk9VUCBCWSAiK3RoaXMuZmllbGRzLmpvaW4oIiwgIildLHRoaXMuaGF2aW5nJiZ4LnB1c2godGhpcy5oYXZpbmcudG9TdHJpbmcoKSkseC5qb2luKCJcbiIpfSx4fSgpLGIuV2hlcmU9dz1mdW5jdGlvbigpe2Z1bmN0aW9uIHgoeCl7dGhpcy5jb25kaXRpb25zPXh9cmV0dXJuIHgucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIldIRVJFICIrdGhpcy5jb25kaXRpb25zfSx4fSgpLGIuSGF2aW5nPWY9ZnVuY3Rpb24oKXtmdW5jdGlvbiB4KHgpe3RoaXMuY29uZGl0aW9ucz14fXJldHVybiB4LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiJIQVZJTkcgIit0aGlzLmNvbmRpdGlvbnN9LHh9KCksYi5PcD1sPWZ1bmN0aW9uKCl7ZnVuY3Rpb24geCh4LGEsYil7dGhpcy5vcGVyYXRpb249eCx0aGlzLmxlZnQ9YSx0aGlzLnJpZ2h0PWJ9cmV0dXJuIHgucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIigiK3RoaXMubGVmdCsiICIrdGhpcy5vcGVyYXRpb24udG9VcHBlckNhc2UoKSsiICIrdGhpcy5yaWdodCsiKSJ9LHh9KCksYi5VbmFyeU9wPXU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB4KHgsYSl7dGhpcy5vcGVyYXRvcj14LHRoaXMub3BlcmFuZD1hfXJldHVybiB4LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiIoIit0aGlzLm9wZXJhdG9yLnRvVXBwZXJDYXNlKCkrIiAiK3RoaXMub3BlcmFuZCsiKSJ9LHh9KCksYi5CZXR3ZWVuT3A9YT1mdW5jdGlvbigpe2Z1bmN0aW9uIHgoeCl7dGhpcy52YWx1ZT14fXJldHVybiB4LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiIiK3RoaXMudmFsdWUuam9pbigiIEFORCAiKX0seH0oKSxiLkZpZWxkPWM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB4KHgsYSl7dGhpcy5maWVsZD14LHRoaXMubmFtZT1udWxsIT1hP2E6bnVsbH1yZXR1cm4geC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uYW1lP3RoaXMuZmllbGQrIiBBUyAiK3RoaXMubmFtZTp0aGlzLmZpZWxkLnRvU3RyaW5nKCl9LHh9KCksYi5TdGFyPXE9ZnVuY3Rpb24oKXtmdW5jdGlvbiB4KCl7bnVsbH1yZXR1cm4geC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4iKiJ9LHgucHJvdG90eXBlLnN0YXI9ITAseH0oKX0pLmNhbGwodGhpcyl9LHt9XSw2OltmdW5jdGlvbih4LGEsYil7KGZ1bmN0aW9uKCl7bGV0IGE7YT1mdW5jdGlvbigpe2xldCBhO3JldHVybihhPXgoIi4vY29tcGlsZWRfcGFyc2VyIikucGFyc2VyKS5sZXhlcj17bGV4OmZ1bmN0aW9uKCl7bGV0IHgsYTtyZXR1cm4geD0oYT10aGlzLnRva2Vuc1t0aGlzLnBvcysrXXx8WyIiXSlbMF0sdGhpcy55eXRleHQ9YVsxXSx0aGlzLnl5bGluZW5vPWFbMl0seH0sc2V0SW5wdXQ6ZnVuY3Rpb24oeCl7cmV0dXJuIHRoaXMudG9rZW5zPXgsdGhpcy5wb3M9MH0sdXBjb21pbmdJbnB1dDpmdW5jdGlvbigpe3JldHVybiIifX0sYS55eT14KCIuL25vZGVzIiksYX0sYi5wYXJzZXI9YSgpLGIucGFyc2U9ZnVuY3Rpb24oeCl7cmV0dXJuIGEoKS5wYXJzZSh4KX19KS5jYWxsKHRoaXMpfSx7Ii4vY29tcGlsZWRfcGFyc2VyIjozLCIuL25vZGVzIjo1fV0sNzpbZnVuY3Rpb24oeCxhLGIpeyhmdW5jdGlvbigpe2IubGV4ZXI9eCgiLi9sZXhlciIpLGIucGFyc2VyPXgoIi4vcGFyc2VyIiksYi5ub2Rlcz14KCIuL25vZGVzIiksYi5wYXJzZT1mdW5jdGlvbih4KXtyZXR1cm4gYi5wYXJzZXIucGFyc2UoYi5sZXhlci50b2tlbml6ZSh4KSl9fSkuY2FsbCh0aGlzKX0seyIuL2xleGVyIjo0LCIuL25vZGVzIjo1LCIuL3BhcnNlciI6Nn1dLDg6W2Z1bmN0aW9uKHgsYSxiKXt2YXIgYyxkLGU9YS5leHBvcnRzPXt9O2Z1bmN0aW9uIGYoKXt0aHJvdyBuZXcgRXJyb3IoInNldFRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQiKX1mdW5jdGlvbiBnKCl7dGhyb3cgbmV3IEVycm9yKCJjbGVhclRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQiKX1mdW5jdGlvbiBoKHgpe2lmKGM9PT1zZXRUaW1lb3V0KXJldHVybiBzZXRUaW1lb3V0KHgsMCk7aWYoKGM9PT1mfHwhYykmJnNldFRpbWVvdXQpcmV0dXJuIGM9c2V0VGltZW91dCxzZXRUaW1lb3V0KHgsMCk7dHJ5e3JldHVybiBjKHgsMCl9Y2F0Y2goYSl7dHJ5e3JldHVybiBjLmNhbGwobnVsbCx4LDApfWNhdGNoKGEpe3JldHVybiBjLmNhbGwodGhpcyx4LDApfX19ZnVuY3Rpb24gaSh4KXtpZihkPT09Y2xlYXJUaW1lb3V0KXJldHVybiBjbGVhclRpbWVvdXQoeCk7aWYoKGQ9PT1nfHwhZCkmJmNsZWFyVGltZW91dClyZXR1cm4gZD1jbGVhclRpbWVvdXQsY2xlYXJUaW1lb3V0KHgpO3RyeXtyZXR1cm4gZCh4KX1jYXRjaChhKXt0cnl7cmV0dXJuIGQuY2FsbChudWxsLHgpfWNhdGNoKGEpe3JldHVybiBkLmNhbGwodGhpcyx4KX19fSFmdW5jdGlvbigpe3RyeXtjPSJmdW5jdGlvbiI9PXR5cGVvZiBzZXRUaW1lb3V0P3NldFRpbWVvdXQ6Zn1jYXRjaCh4KXtjPWZ9dHJ5e2Q9ImZ1bmN0aW9uIj09dHlwZW9mIGNsZWFyVGltZW91dD9jbGVhclRpbWVvdXQ6Z31jYXRjaCh4KXtkPWd9fSgpO3ZhciBqLGs9W10sbD0hMSxtPS0xO2Z1bmN0aW9uIG4oKXtsJiZqJiYobD0hMSxqLmxlbmd0aD9rPWouY29uY2F0KGspOm09LTEsay5sZW5ndGgmJm8oKSl9ZnVuY3Rpb24gbygpe2lmKCFsKXt2YXIgeD1oKG4pO2w9ITA7Zm9yKHZhciBhPWsubGVuZ3RoO2E7KXtmb3Ioaj1rLGs9W107KyttPGE7KWomJmpbbV0ucnVuKCk7bT0tMSxhPWsubGVuZ3RofWo9bnVsbCxsPSExLGkoeCl9fWZ1bmN0aW9uIHAoeCxhKXt0aGlzLmZ1bj14LHRoaXMuYXJyYXk9YX1mdW5jdGlvbiBxKCl7fWUubmV4dFRpY2s9ZnVuY3Rpb24oeCl7dmFyIGE9bmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMSk7aWYoYXJndW1lbnRzLmxlbmd0aD4xKWZvcih2YXIgYj0xO2I8YXJndW1lbnRzLmxlbmd0aDtiKyspYVtiLTFdPWFyZ3VtZW50c1tiXTtrLnB1c2gobmV3IHAoeCxhKSksMSE9PWsubGVuZ3RofHxsfHxoKG8pfSxwLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24oKXt0aGlzLmZ1bi5hcHBseShudWxsLHRoaXMuYXJyYXkpfSxlLnRpdGxlPSJicm93c2VyIixlLmJyb3dzZXI9ITAsZS5lbnY9e30sZS5hcmd2PVtdLGUudmVyc2lvbj0iIixlLnZlcnNpb25zPXt9LGUub249cSxlLmFkZExpc3RlbmVyPXEsZS5vbmNlPXEsZS5vZmY9cSxlLnJlbW92ZUxpc3RlbmVyPXEsZS5yZW1vdmVBbGxMaXN0ZW5lcnM9cSxlLmVtaXQ9cSxlLnByZXBlbmRMaXN0ZW5lcj1xLGUucHJlcGVuZE9uY2VMaXN0ZW5lcj1xLGUubGlzdGVuZXJzPWZ1bmN0aW9uKHgpe3JldHVybltdfSxlLmJpbmRpbmc9ZnVuY3Rpb24oeCl7dGhyb3cgbmV3IEVycm9yKCJwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZCIpfSxlLmN3ZD1mdW5jdGlvbigpe3JldHVybiIvIn0sZS5jaGRpcj1mdW5jdGlvbih4KXt0aHJvdyBuZXcgRXJyb3IoInByb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCIpfSxlLnVtYXNrPWZ1bmN0aW9uKCl7cmV0dXJuIDB9fSx7fV19LHt9LFsxXSkoMSl9KTsJCQoKLypDb2RlTWlycm9yIFNRTCBzeW50YXggKyBSTElLRSwgKGMpIE1hcmlqbiBIYXZlcmJla2UqLwohZnVuY3Rpb24oeCl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZT94KHJlcXVpcmUoIi4uLy4uL2xpYi9jb2RlbWlycm9yIikpOiJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFsiLi4vLi4vbGliL2NvZGVtaXJyb3IiXSx4KTp4KENvZGVNaXJyb3IpfShmdW5jdGlvbih4KXsidXNlIHN0cmljdCI7eC5kZWZpbmVNb2RlKCJzcWwiLGZ1bmN0aW9uKGQsZSl7dmFyIGY9ZS5jbGllbnR8fHt9LGc9ZS5hdG9tc3x8e2ZhbHNlOiEwLHRydWU6ITAsbnVsbDohMH0saD1lLmJ1aWx0aW58fGIoYyksaT1lLmtleXdvcmRzfHxiKGEpLGo9ZS5vcGVyYXRvckNoYXJzfHwvXlsqK1wtJTw+IT0mfH5eXC9dLyxrPWUuc3VwcG9ydHx8e30sbD1lLmhvb2tzfHx7fSxtPWUuZGF0ZVNRTHx8e2RhdGU6ITAsdGltZTohMCx0aW1lc3RhbXA6ITB9LG49ITEhPT1lLmJhY2tzbGFzaFN0cmluZ0VzY2FwZXMsbz1lLmJyYWNrZXRzfHwvXltce31cKFwpXFtcXV0vLHA9ZS5wdW5jdHVhdGlvbnx8L15bOy4sOl0vO2Z1bmN0aW9uIHEoeCxhKXt2YXIgYj14Lm5leHQoKTtpZihsW2JdKXt2YXIgYz1sW2JdKHgsYSk7aWYoITEhPT1jKXJldHVybiBjfWlmKGsuaGV4TnVtYmVyJiYoIjAiPT1iJiZ4Lm1hdGNoKC9eW3hYXVswLTlhLWZBLUZdKy8pfHwoIngiPT1ifHwiWCI9PWIpJiZ4Lm1hdGNoKC9eJ1swLTlhLWZBLUZdKicvKSkpcmV0dXJuIm51bWJlciI7aWYoay5iaW5hcnlOdW1iZXImJigoImIiPT1ifHwiQiI9PWIpJiZ4Lm1hdGNoKC9eJ1swMV0qJy8pfHwiMCI9PWImJngubWF0Y2goL15iWzAxXSsvKSkpcmV0dXJuIm51bWJlciI7aWYoYi5jaGFyQ29kZUF0KDApPjQ3JiZiLmNoYXJDb2RlQXQoMCk8NTgpcmV0dXJuIHgubWF0Y2goL15bMC05XSooXC5bMC05XSspPyhbZUVdWy0rXT9bMC05XSspPy8pLGsuZGVjaW1hbGxlc3NGbG9hdCYmeC5tYXRjaCgvXlwuKD8hXC4pLyksIm51bWJlciI7aWYoIj8iPT1iJiYoeC5lYXRTcGFjZSgpfHx4LmVvbCgpfHx4LmVhdCgiOyIpKSlyZXR1cm4idmFyaWFibGUtMyI7aWYoIiciPT1ifHwnIic9PWImJmsuZG91YmxlUXVvdGUpcmV0dXJuIGEudG9rZW5pemU9cihiKSxhLnRva2VuaXplKHgsYSk7aWYoKGsubkNoYXJDYXN0JiYoIm4iPT1ifHwiTiI9PWIpfHxrLmNoYXJzZXRDYXN0JiYiXyI9PWImJngubWF0Y2goL1thLXpdW2EtejAtOV0qL2kpKSYmKCInIj09eC5wZWVrKCl8fCciJz09eC5wZWVrKCkpKXJldHVybiJrZXl3b3JkIjtpZihrLmVzY2FwZUNvbnN0YW50JiYoImUiPT1ifHwiRSI9PWIpJiYoIiciPT14LnBlZWsoKXx8JyInPT14LnBlZWsoKSYmay5kb3VibGVRdW90ZSkpcmV0dXJuIGEudG9rZW5pemU9ZnVuY3Rpb24oeCxhKXtyZXR1cm4oYS50b2tlbml6ZT1yKHgubmV4dCgpLCEwKSkoeCxhKX0sImtleXdvcmQiO2lmKGsuY29tbWVudFNsYXNoU2xhc2gmJiIvIj09YiYmeC5lYXQoIi8iKSlyZXR1cm4geC5za2lwVG9FbmQoKSwiY29tbWVudCI7aWYoay5jb21tZW50SGFzaCYmIiMiPT1ifHwiLSI9PWImJnguZWF0KCItIikmJighay5jb21tZW50U3BhY2VSZXF1aXJlZHx8eC5lYXQoIiAiKSkpcmV0dXJuIHguc2tpcFRvRW5kKCksImNvbW1lbnQiO2lmKCIvIj09YiYmeC5lYXQoIioiKSlyZXR1cm4gYS50b2tlbml6ZT1zKDEpLGEudG9rZW5pemUoeCxhKTtpZigiLiIhPWIpe2lmKGoudGVzdChiKSlyZXR1cm4geC5lYXRXaGlsZShqKSwib3BlcmF0b3IiO2lmKG8udGVzdChiKSlyZXR1cm4iYnJhY2tldCI7aWYocC50ZXN0KGIpKXJldHVybiB4LmVhdFdoaWxlKHApLCJwdW5jdHVhdGlvbiI7aWYoInsiPT1iJiYoeC5tYXRjaCgvXiggKSooZHxEfHR8VHx0c3xUUykoICkqJ1teJ10qJyggKSp9Lyl8fHgubWF0Y2goL14oICkqKGR8RHx0fFR8dHN8VFMpKCApKiJbXiJdKiIoICkqfS8pKSlyZXR1cm4ibnVtYmVyIjt4LmVhdFdoaWxlKC9eW19cd1xkXS8pO3ZhciBkPXguY3VycmVudCgpLnRvTG93ZXJDYXNlKCk7cmV0dXJuIG0uaGFzT3duUHJvcGVydHkoZCkmJih4Lm1hdGNoKC9eKCApKydbXiddKicvKXx8eC5tYXRjaCgvXiggKSsiW14iXSoiLykpPyJudW1iZXIiOmcuaGFzT3duUHJvcGVydHkoZCk/ImF0b20iOmguaGFzT3duUHJvcGVydHkoZCk/InR5cGUiOmkuaGFzT3duUHJvcGVydHkoZCk/ImtleXdvcmQiOmYuaGFzT3duUHJvcGVydHkoZCk/ImJ1aWx0aW4iOm51bGx9cmV0dXJuIGsuemVyb2xlc3NGbG9hdCYmeC5tYXRjaCgvXig/OlxkKyg/OmVbKy1dP1xkKyk/KS9pKT8ibnVtYmVyIjp4Lm1hdGNoKC9eXC4rLyk/bnVsbDp4Lm1hdGNoKC9eW1x3XGRfJCNdKy8pPyJ2YXJpYWJsZS0yIjp2b2lkIDB9ZnVuY3Rpb24gcih4LGEpe3JldHVybiBmdW5jdGlvbihiLGMpe2Zvcih2YXIgZCxlPSExO251bGwhPShkPWIubmV4dCgpKTspe2lmKGQ9PXgmJiFlKXtjLnRva2VuaXplPXE7YnJlYWt9ZT0obnx8YSkmJiFlJiYiXFwiPT1kfXJldHVybiJzdHJpbmcifX1mdW5jdGlvbiBzKHgpe3JldHVybiBmdW5jdGlvbihhLGIpe3ZhciBjPWEubWF0Y2goL14uKj8oXC9cKnxcKlwvKS8pO3JldHVybiBjPyIvKiI9PWNbMV0/Yi50b2tlbml6ZT1zKHgrMSk6Yi50b2tlbml6ZT14PjE/cyh4LTEpOnE6YS5za2lwVG9FbmQoKSwiY29tbWVudCJ9fWZ1bmN0aW9uIHQoeCxhLGIpe2EuY29udGV4dD17cHJldjphLmNvbnRleHQsaW5kZW50OnguaW5kZW50YXRpb24oKSxjb2w6eC5jb2x1bW4oKSx0eXBlOmJ9fWZ1bmN0aW9uIHUoeCl7eC5pbmRlbnQ9eC5jb250ZXh0LmluZGVudCx4LmNvbnRleHQ9eC5jb250ZXh0LnByZXZ9cmV0dXJue3N0YXJ0U3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm57dG9rZW5pemU6cSxjb250ZXh0Om51bGx9fSx0b2tlbjpmdW5jdGlvbih4LGEpe2lmKHguc29sKCkmJmEuY29udGV4dCYmbnVsbD09YS5jb250ZXh0LmFsaWduJiYoYS5jb250ZXh0LmFsaWduPSExKSxhLnRva2VuaXplPT1xJiZ4LmVhdFNwYWNlKCkpcmV0dXJuIG51bGw7dmFyIGI9YS50b2tlbml6ZSh4LGEpO2lmKCJjb21tZW50Ij09YilyZXR1cm4gYjthLmNvbnRleHQmJm51bGw9PWEuY29udGV4dC5hbGlnbiYmKGEuY29udGV4dC5hbGlnbj0hMCk7dmFyIGM9eC5jdXJyZW50KCk7cmV0dXJuIigiPT1jP3QoeCxhLCIpIik6IlsiPT1jP3QoeCxhLCJdIik6YS5jb250ZXh0JiZhLmNvbnRleHQudHlwZT09YyYmdShhKSxifSxpbmRlbnQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmNvbnRleHQ7aWYoIWMpcmV0dXJuIHguUGFzczt2YXIgZT1iLmNoYXJBdCgwKT09Yy50eXBlO3JldHVybiBjLmFsaWduP2MuY29sKyhlPzA6MSk6Yy5pbmRlbnQrKGU/MDpkLmluZGVudFVuaXQpfSxibG9ja0NvbW1lbnRTdGFydDoiLyoiLGJsb2NrQ29tbWVudEVuZDoiKi8iLGxpbmVDb21tZW50OmsuY29tbWVudFNsYXNoU2xhc2g/Ii8vIjprLmNvbW1lbnRIYXNoPyIjIjoiLS0iLGNsb3NlQnJhY2tldHM6IigpW117fScnXCJcImBgIixjb25maWc6ZX19KTt2YXIgYT0iYWx0ZXIgYW5kIGFzIGFzYyBiZXR3ZWVuIGJ5IGNvdW50IGNyZWF0ZSBkZWxldGUgZGVzYyBkaXN0aW5jdCBkcm9wIGZyb20gZ3JvdXAgaGF2aW5nIGluIGluc2VydCBpbnRvIGlzIGpvaW4gcmVnZXhwIHJsaWtlIGlsaWtlIGxpa2Ugbm90IG9uIG9yIG9yZGVyIHNlbGVjdCBzZXQgdGFibGUgdW5pb24gdXBkYXRlIHZhbHVlcyB3aGVyZSBsaW1pdCAiO2Z1bmN0aW9uIGIoeCl7Zm9yKHZhciBhPXt9LGI9eC5zcGxpdCgiICIpLGM9MDtjPGIubGVuZ3RoOysrYylhW2JbY11dPSEwO3JldHVybiBhfXZhciBjPSJib29sIGJvb2xlYW4gYml0IGJsb2IgZW51bSBsb25nIGxvbmdibG9iIGxvbmd0ZXh0IG1lZGl1bSBtZWRpdW1ibG9iIG1lZGl1bWludCBtZWRpdW10ZXh0IHRpbWUgdGltZXN0YW1wIHRpbnlibG9iIHRpbnlpbnQgdGlueXRleHQgdGV4dCBiaWdpbnQgaW50IGludDEgaW50MiBpbnQzIGludDQgaW50OCBpbnRlZ2VyIGZsb2F0IGZsb2F0NCBmbG9hdDggZG91YmxlIGNoYXIgdmFyYmluYXJ5IHZhcmNoYXIgdmFyY2hhcmFjdGVyIHByZWNpc2lvbiByZWFsIGRhdGUgZGF0ZXRpbWUgeWVhciB1bnNpZ25lZCBzaWduZWQgZGVjaW1hbCBudW1lcmljIjt4LmRlZmluZU1JTUUoInRleHQveC1zcWwiLHtuYW1lOiJzcWwiLGtleXdvcmRzOmIoYSsiYmVnaW4iKSxidWlsdGluOmIoYyksYXRvbXM6YigiZmFsc2UgdHJ1ZSBudWxsIHVua25vd24iKSxkYXRlU1FMOmIoImRhdGUgdGltZSB0aW1lc3RhbXAiKSxzdXBwb3J0OmIoImRvdWJsZVF1b3RlIGJpbmFyeU51bWJlciBoZXhOdW1iZXIiKX0pfSk7CQkK" }, "lib/streamsaver-ping.html": { "content_type": "text/html", "data": "PCEtLQoJU3RyZWFtU2F2ZXIgc2VydmljZSB3b3JrZXIgYm9vdHN0cmFwIHNjcmlwdC4KCVVzZWQgZm9yIHN0cmVhbSBkb3dubG9hZCBvZiBEQiBiYWNrdXBzLgoJUGFydCBvZiBTdHJlYW1TYXZlci5qcywgKGMpIEppbW15IFfDpHJ0aW5nCi0tPgo8c2NyaXB0PgpsZXQga2VlcEFsaXZlPSgpPT57a2VlcEFsaXZlPSgoKT0+e30pO3ZhciB4PWxvY2F0aW9uLmhyZWYuc3Vic3RyKDAsbG9jYXRpb24uaHJlZi5sYXN0SW5kZXhPZigiLyIpKSsiL3BpbmciLGE9c2V0SW50ZXJ2YWwoKCk9Pntzdz9zdy5wb3N0TWVzc2FnZSgicGluZyIpOmZldGNoKHgpLnRoZW4oeD0+eC50ZXh0KCF4Lm9rJiZjbGVhckludGVydmFsKGEpKSl9LDFlNCl9LG1lc3NhZ2VzPVtdO3dpbmRvdy5vbm1lc3NhZ2U9KHg9Pm1lc3NhZ2VzLnB1c2goeCkpO2xldCBzdz1udWxsLHNjb3BlPSIiO2Z1bmN0aW9uIHJlZ2lzdGVyV29ya2VyKCl7cmV0dXJuIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmdldFJlZ2lzdHJhdGlvbigiLi4vIikudGhlbih4PT54fHxuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rlcigic3RyZWFtc2F2ZXItc3cuanMiLHtzY29wZToiLi8ifSkpLnRoZW4oeD0+e2NvbnN0IGE9eC5pbnN0YWxsaW5nfHx4LndhaXRpbmc7cmV0dXJuIHNjb3BlPXguc2NvcGUsKHN3PXguYWN0aXZlKXx8bmV3IFByb21pc2UoYj0+e2EuYWRkRXZlbnRMaXN0ZW5lcigic3RhdGVjaGFuZ2UiLGZuPSgoKT0+eyJhY3RpdmF0ZWQiPT09YS5zdGF0ZSYmKGEucmVtb3ZlRXZlbnRMaXN0ZW5lcigic3RhdGVjaGFuZ2UiLGZuKSxzdz14LmFjdGl2ZSxiKCkpfSkpfSl9KX1mdW5jdGlvbiBvbk1lc3NhZ2UoeCl7bGV0e2RhdGE6YSxwb3J0czpiLG9yaWdpbjpjfT14O2lmKCFifHwhYi5sZW5ndGgpdGhyb3cgbmV3IFR5cGVFcnJvcigiW1N0cmVhbVNhdmVyXSBZb3UgZGlkbid0IHNlbmQgYSBtZXNzYWdlQ2hhbm5lbCIpO2lmKCJvYmplY3QiIT10eXBlb2YgYSl0aHJvdyBuZXcgVHlwZUVycm9yKCJbU3RyZWFtU2F2ZXJdIFlvdSBkaWRuJ3Qgc2VuZCBhIG9iamVjdCIpO2Eub3JpZ2luPWMsYS5yZWZlcnJlcj1hLnJlZmVycmVyfHxkb2N1bWVudC5yZWZlcnJlcnx8YyxhLnN0cmVhbVNhdmVyVmVyc2lvbj1uZXcgVVJMU2VhcmNoUGFyYW1zKGxvY2F0aW9uLnNlYXJjaCkuZ2V0KCJ2ZXJzaW9uIiksIjEuMi4wIj09PWEuc3RyZWFtU2F2ZXJWZXJzaW9uJiZjb25zb2xlLndhcm4oIltTdHJlYW1TYXZlcl0gcGxlYXNlIHVwZGF0ZSBzdHJlYW1zYXZlciIpLGEuaGVhZGVycz9uZXcgSGVhZGVycyhhLmhlYWRlcnMpOmNvbnNvbGUud2FybigiW1N0cmVhbVNhdmVyXSBwYXNzIGRhdGEuaGVhZGVycyB0aGF0IHlvdSB3b3VsZCBsaWtlIHRvIHBhc3MgYWxvbmcgdG8gdGhlIHNlcnZpY2Ugd29ya2VyXG5pdCBzaG91bGQgYmUgYSAyRCBhcnJheSBvciBhIGtleS92YWwgb2JqZWN0IHRoYXQgZmV0Y2gncyBIZWFkZXJzIGFwaSBhY2NlcHRzIiksInN0cmluZyI9PXR5cGVvZiBhLmZpbGVuYW1lJiYoY29uc29sZS53YXJuKCJbU3RyZWFtU2F2ZXJdIFlvdSBzaG91bGRuJ3Qgc2VuZCBkYXRhLmZpbGVuYW1lIGFueW1vcmUuIEl0IHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgQ29udGVudC1EaXNwb3NpdGlvbiBoZWFkZXIgb3B0aW9uIiksYS5maWxlbmFtZT1hLmZpbGVuYW1lLnJlcGxhY2UoL1wvL2csIjoiKSksYS5zaXplJiZjb25zb2xlLndhcm4oIltTdHJlYW1TYXZlcl0gWW91IHNob3VsZG4ndCBzZW5kIGRhdGEuc2l6ZSBhbnltb3JlLiBJdCBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIGNvbnRlbnQtbGVuZ3RoIGhlYWRlciBvcHRpb24iKSxhLnJlYWRhYmxlU3RyZWFtJiZjb25zb2xlLndhcm4oIltTdHJlYW1TYXZlcl0gWW91IHNob3VsZCBzZW5kIHRoZSByZWFkYWJsZVN0cmVhbSBpbiB0aGUgbWVzc2FnZUNoYW5uZWwsIG5vdCB0aHJvdWdodCBtaXRtIiksYS5wYXRobmFtZXx8KGNvbnNvbGUud2FybigiW1N0cmVhbVNhdmVyXSBQbGVhc2Ugc2VuZCBkYXRhLnBhdGhuYW1lIChlZzogL3BpY3R1cmVzL3N1bW1lci5qcGcpIiksYS5wYXRobmFtZT1NYXRoLnJhbmRvbSgpLnRvU3RyaW5nKCkuc2xpY2UoLTYpKyIvIithLmZpbGVuYW1lKSxhLnBhdGhuYW1lPWEucGF0aG5hbWUucmVwbGFjZSgvXlwvKy9nLCIiKTtsZXQgZD1jLnJlcGxhY2UoLyheXHcrOnxeKVwvXC8vLCIiKTtpZihhLnVybD1uZXcgVVJMKHNjb3BlK2QrIi8iK2EucGF0aG5hbWUpLnRvU3RyaW5nKCksIWEudXJsLnN0YXJ0c1dpdGgoc2NvcGUrZCsiLyIpKXRocm93IG5ldyBUeXBlRXJyb3IoIltTdHJlYW1TYXZlcl0gYmFkIGRhdGEucGF0aG5hbWUiKTtjb25zdCBlPWEucmVhZGFibGVTdHJlYW0/W2JbMF0sYS5yZWFkYWJsZVN0cmVhbV06W2JbMF1dO3JldHVybiBhLnJlYWRhYmxlU3RyZWFtfHxhLnRyYW5zZmVycmluZ1JlYWRhYmxlfHxrZWVwQWxpdmUoKSxzdy5wb3N0TWVzc2FnZShhLGUpfXdpbmRvdy5vcGVuZXImJndpbmRvdy5vcGVuZXIucG9zdE1lc3NhZ2UoIlN0cmVhbVNhdmVyOjpsb2FkZWRQb3B1cCIsIioiKSxuYXZpZ2F0b3Iuc2VydmljZVdvcmtlcj9yZWdpc3RlcldvcmtlcigpLnRoZW4oKCk9Pnt3aW5kb3cub25tZXNzYWdlPW9uTWVzc2FnZSxtZXNzYWdlcy5mb3JFYWNoKHdpbmRvdy5vbm1lc3NhZ2UpfSk6a2VlcEFsaXZlKCk7ICAKPC9zY3JpcHQ+" }, "lib/streamsaver-sw.js": { "content_type": "text/javascript", "data": "LypTdHJlYW1TYXZlci5qcyBTZXJ2aWNlV29ya2VyLCAoYykgSmltbXkgV8OkcnRpbmcqLwpzZWxmLmFkZEV2ZW50TGlzdGVuZXIoImluc3RhbGwiLCgpPT57c2VsZi5za2lwV2FpdGluZygpfSksc2VsZi5hZGRFdmVudExpc3RlbmVyKCJhY3RpdmF0ZSIseD0+e3gud2FpdFVudGlsKHNlbGYuY2xpZW50cy5jbGFpbSgpKX0pO2NvbnN0IG1hcD1uZXcgTWFwO2Z1bmN0aW9uIGNyZWF0ZVN0cmVhbSh4KXtyZXR1cm4gbmV3IFJlYWRhYmxlU3RyZWFtKHtzdGFydChhKXt4Lm9ubWVzc2FnZT0oKHtkYXRhOnh9KT0+ImVuZCI9PT14P2EuY2xvc2UoKToiYWJvcnQiPT09eD8oYS5lcnJvcigiQWJvcnRlZCB0aGUgZG93bmxvYWQiKSx2b2lkIDApOihhLmVucXVldWUoeCksdm9pZCAwKSl9LGNhbmNlbCgpe3gucG9zdE1lc3NhZ2UoInVzZXIgYWJvcnRlZCIpLGNvbnNvbGUubG9nKCJ1c2VyIGFib3J0ZWQiKX19KX1zZWxmLm9ubWVzc2FnZT0oeD0+e2lmKCJwaW5nIj09PXguZGF0YSlyZXR1cm47Y29uc3QgYT14LmRhdGEsYj1hLnVybHx8c2VsZi5yZWdpc3RyYXRpb24uc2NvcGUrTWF0aC5yYW5kb20oKSsiLyIrKCJzdHJpbmciPT10eXBlb2YgYT9hOmEuZmlsZW5hbWUpLGM9eC5wb3J0c1swXSxkPW5ldyBBcnJheSgzKTtkWzFdPWEsZFsyXT1jLHguZGF0YS5yZWFkYWJsZVN0cmVhbT9kWzBdPXguZGF0YS5yZWFkYWJsZVN0cmVhbTp4LmRhdGEudHJhbnNmZXJyaW5nUmVhZGFibGU/Yy5vbm1lc3NhZ2U9KHg9PntjLm9ubWVzc2FnZT1udWxsLGRbMF09eC5kYXRhLnJlYWRhYmxlU3RyZWFtfSk6ZFswXT1jcmVhdGVTdHJlYW0oYyksbWFwLnNldChiLGQpLGMucG9zdE1lc3NhZ2Uoe2Rvd25sb2FkOmJ9KX0pLHNlbGYub25mZXRjaD0oeD0+e2NvbnN0IGE9eC5yZXF1ZXN0LnVybDtpZihhLmVuZHNXaXRoKCIvcGluZyIpKXJldHVybiB4LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZSgicG9uZyIpKTtjb25zdCBiPW1hcC5nZXQoYSk7aWYoIWIpcmV0dXJuIG51bGw7Y29uc3RbYyxkLGVdPWI7bWFwLmRlbGV0ZShhKTtjb25zdCBmPW5ldyBIZWFkZXJzKHsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtOyBjaGFyc2V0PXV0Zi04IiwiQ29udGVudC1TZWN1cml0eS1Qb2xpY3kiOiJkZWZhdWx0LXNyYyAnbm9uZSciLCJYLUNvbnRlbnQtU2VjdXJpdHktUG9saWN5IjoiZGVmYXVsdC1zcmMgJ25vbmUnIiwiWC1XZWJLaXQtQ1NQIjoiZGVmYXVsdC1zcmMgJ25vbmUnIiwiWC1YU1MtUHJvdGVjdGlvbiI6IjE7IG1vZGU9YmxvY2sifSk7bGV0IGc9bmV3IEhlYWRlcnMoZC5oZWFkZXJzfHx7fSk7Zy5oYXMoIkNvbnRlbnQtTGVuZ3RoIikmJmYuc2V0KCJDb250ZW50LUxlbmd0aCIsZy5nZXQoIkNvbnRlbnQtTGVuZ3RoIikpLGcuaGFzKCJDb250ZW50LURpc3Bvc2l0aW9uIikmJmYuc2V0KCJDb250ZW50LURpc3Bvc2l0aW9uIixnLmdldCgiQ29udGVudC1EaXNwb3NpdGlvbiIpKSxkLnNpemUmJihjb25zb2xlLndhcm4oIkRlcHJlY2F0ZWQiKSxmLnNldCgiQ29udGVudC1MZW5ndGgiLGQuc2l6ZSkpO2xldCBoPSJzdHJpbmciPT10eXBlb2YgZD9kOmQuZmlsZW5hbWU7aCYmKGNvbnNvbGUud2FybigiRGVwcmljYXRlZCIpLGg9ZW5jb2RlVVJJQ29tcG9uZW50KGgpLnJlcGxhY2UoL1snKCldL2csZXNjYXBlKS5yZXBsYWNlKC9cKi9nLCIlMkEiKSxmLnNldCgiQ29udGVudC1EaXNwb3NpdGlvbiIsImF0dGFjaG1lbnQ7IGZpbGVuYW1lKj1VVEYtOCcnIitoKSkseC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2UoYyx7aGVhZGVyczpmfSkpLGUucG9zdE1lc3NhZ2Uoe2RlYnVnOiJEb3dubG9hZCBzdGFydGVkIn0pfSk7" }, "lib/streamsaver.js": { "content_type": "text/javascript", "data": "LypTdHJlYW1TYXZlci5qcywgKGMpIEppbW15IFdhcnRpbmcqLwp3aW5kb3cuc3RyZWFtU2F2ZXI9ZnVuY3Rpb24oKXtsZXQgeD1udWxsLGE9ITE7Y29uc3QgYj14PT57dHJ5e3goKX1jYXRjaCh4KXt9fSxjPXdpbmRvdy5XZWJTdHJlYW1zUG9seWZpbGx8fHt9LGQ9d2luZG93LmlzU2VjdXJlQ29udGV4dDtsZXQgZT0vY29uc3RydWN0b3IvaS50ZXN0KHdpbmRvdy5IVE1MRWxlbWVudCl8fCEhd2luZG93LnNhZmFyaXx8ISF3aW5kb3cuV2ViS2l0UG9pbnQ7Y29uc3QgZj1kfHwiTW96QXBwZWFyYW5jZSJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGU/ImlmcmFtZSI6Im5hdmlnYXRlIixnPXtjcmVhdGVXcml0ZVN0cmVhbTprLFdyaXRhYmxlU3RyZWFtOndpbmRvdy5Xcml0YWJsZVN0cmVhbXx8Yy5Xcml0YWJsZVN0cmVhbSxzdXBwb3J0ZWQ6ITAsdmVyc2lvbjp7ZnVsbDoiMi4wLjAiLG1ham9yOjIsbWlub3I6MCxkb3Q6MH0sbWl0bToibGliL3N0cmVhbXNhdmVyLXBpbmcuaHRtbCJ9O2Z1bmN0aW9uIGgoeCl7aWYoIXgpdGhyb3cgbmV3IEVycm9yKCJtZWgiKTtjb25zdCBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpO3JldHVybiBhLmhpZGRlbj0hMCxhLnNyYz14LGEubG9hZGVkPSExLGEubmFtZT0iaWZyYW1lIixhLmlzSWZyYW1lPSEwLGEucG9zdE1lc3NhZ2U9KCguLi54KT0+YS5jb250ZW50V2luZG93LnBvc3RNZXNzYWdlKC4uLngpKSxhLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCgpPT57YS5sb2FkZWQ9ITB9LHtvbmNlOiEwfSksZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKSxhfWZ1bmN0aW9uIGkoeCl7Y29uc3QgYT0id2lkdGg9MjAwLGhlaWdodD0xMDAiLGI9ZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLGM9e2ZyYW1lOndpbmRvdy5vcGVuKHgsInBvcHVwIixhKSxsb2FkZWQ6ITEsaXNJZnJhbWU6ITEsaXNQb3B1cDohMCxyZW1vdmUoKXtjLmZyYW1lLmNsb3NlKCl9LGFkZEV2ZW50TGlzdGVuZXIoLi4ueCl7Yi5hZGRFdmVudExpc3RlbmVyKC4uLngpfSxkaXNwYXRjaEV2ZW50KC4uLngpe2IuZGlzcGF0Y2hFdmVudCguLi54KX0scmVtb3ZlRXZlbnRMaXN0ZW5lciguLi54KXtiLnJlbW92ZUV2ZW50TGlzdGVuZXIoLi4ueCl9LHBvc3RNZXNzYWdlKC4uLngpe2MuZnJhbWUucG9zdE1lc3NhZ2UoLi4ueCl9fSxkPXg9Pnt4LnNvdXJjZT09PWMuZnJhbWUmJihjLmxvYWRlZD0hMCx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZCksYy5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgibG9hZCIpKSl9O3JldHVybiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsZCksY310cnl7bmV3IFJlc3BvbnNlKG5ldyBSZWFkYWJsZVN0cmVhbSksInNlcnZpY2VXb3JrZXIiaW4gbmF2aWdhdG9yfHwoZT0hMCl9Y2F0Y2goeCl7ZT0hMH1mdW5jdGlvbiBqKCl7eHx8KHg9ZD9oKGcubWl0bSk6aShnLm1pdG0pKX1mdW5jdGlvbiBrKGIsYyxkKXtsZXQgaT17c2l6ZTpudWxsLHBhdGhuYW1lOm51bGwsc2lnbmFsOmZ1bmN0aW9uKCl7fSx3cml0YWJsZVN0cmF0ZWd5OnZvaWQgMCxyZWFkYWJsZVN0cmF0ZWd5OnZvaWQgMH0saz0wLGw9bnVsbCxtPW51bGwsbj1udWxsO2lmKE51bWJlci5pc0Zpbml0ZShjKT8oW2QsY109W2MsZF0sY29uc29sZS53YXJuKCJbU3RyZWFtU2F2ZXJdIERlcHJpY2F0ZWQgcGFzcyBhbiBvYmplY3QgYXMgMm5kIGFyZ3VtZW50IHdoZW4gY3JlYXRpbmcgYSB3cml0ZSBzdHJlYW0iKSxpLnNpemU9ZCxpLndyaXRhYmxlU3RyYXRlZ3k9Yyk6YyYmYy5oaWdoV2F0ZXJNYXJrPyhjb25zb2xlLndhcm4oIltTdHJlYW1TYXZlcl0gRGVwcmljYXRlZCBwYXNzIGFuIG9iamVjdCBhcyAybmQgYXJndW1lbnQgd2hlbiBjcmVhdGluZyBhIHdyaXRlIHN0cmVhbSIpLGkuc2l6ZT1kLGkud3JpdGFibGVTdHJhdGVneT1jKTppPU9iamVjdC5tZXJnZShpLGN8fHt9LCEwKSwhZSl7aigpLG09bmV3IE1lc3NhZ2VDaGFubmVsLGI9ZW5jb2RlVVJJQ29tcG9uZW50KGIucmVwbGFjZSgvXC8vZywiOiIpKS5yZXBsYWNlKC9bJygpXS9nLGVzY2FwZSkucmVwbGFjZSgvXCovZywiJTJBIik7Y29uc3QgYz17dHJhbnNmZXJyaW5nUmVhZGFibGU6YSxwYXRobmFtZTppLnBhdGhuYW1lfHxNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKCkuc2xpY2UoLTYpKyIvIitiLGhlYWRlcnM6eyJDb250ZW50LVR5cGUiOiJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07IGNoYXJzZXQ9dXRmLTgiLCJDb250ZW50LURpc3Bvc2l0aW9uIjoiYXR0YWNobWVudDsgZmlsZW5hbWUqPVVURi04JyciK2J9fTtpLnNpemUmJihjLmhlYWRlcnNbIkNvbnRlbnQtTGVuZ3RoIl09aS5zaXplKTtjb25zdCBkPVtjLCIqIixbbS5wb3J0Ml1dO2lmKGEpe2NvbnN0IHg9ImlmcmFtZSI9PT1mP3ZvaWQgMDp7dHJhbnNmb3JtKHgsYSl7ays9eC5sZW5ndGgsYS5lbnF1ZXVlKHgpLGwmJihsb2NhdGlvbi5ocmVmPWwsbD1udWxsKX0sZmx1c2goKXtsJiYobG9jYXRpb24uaHJlZj1sKX19LGE9KG49bmV3IGcuVHJhbnNmb3JtU3RyZWFtKHgsaS53cml0YWJsZVN0cmF0ZWd5LGkucmVhZGFibGVTdHJhdGVneSkpLnJlYWRhYmxlO20ucG9ydDEucG9zdE1lc3NhZ2Uoe3JlYWRhYmxlU3RyZWFtOmF9LFthXSl9bS5wb3J0MS5vbm1lc3NhZ2U9KGE9PnthLmRhdGEuZG93bmxvYWQ/Im5hdmlnYXRlIj09PWY/KHgucmVtb3ZlKCkseD1udWxsLGs/bG9jYXRpb24uaHJlZj1hLmRhdGEuZG93bmxvYWQ6bD1hLmRhdGEuZG93bmxvYWQpOih4LmlzUG9wdXAmJih4LnJlbW92ZSgpLCJpZnJhbWUiPT09ZiYmaChnLm1pdG0pKSxoKGEuZGF0YS5kb3dubG9hZCkpOiJ1c2VyIGFib3J0ZWQiPT1hLmRhdGEmJmkuc2lnbmFsKCJ1c2VyIGFib3J0ZWQiKX0pLHgubG9hZGVkP3gucG9zdE1lc3NhZ2UoLi4uZCk6eC5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwoKT0+e3gucG9zdE1lc3NhZ2UoLi4uZCl9LHtvbmNlOiEwfSl9bGV0IG89W107cmV0dXJuIWUmJm4mJm4ud3JpdGFibGV8fG5ldyBnLldyaXRhYmxlU3RyZWFtKHt3cml0ZSh4KXtpZihlKXJldHVybiBvLnB1c2goeCksdm9pZCAwO20ucG9ydDEucG9zdE1lc3NhZ2UoeCksays9eC5sZW5ndGgsbCYmKGxvY2F0aW9uLmhyZWY9bCxsPW51bGwpfSxjbG9zZSgpe2lmKGUpe2NvbnN0IHg9bmV3IEJsb2Iobyx7dHlwZToiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtOyBjaGFyc2V0PXV0Zi04In0pLGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpO2EuaHJlZj1VUkwuY3JlYXRlT2JqZWN0VVJMKHgpLGEuZG93bmxvYWQ9YixhLmNsaWNrKCl9ZWxzZSBtLnBvcnQxLnBvc3RNZXNzYWdlKCJlbmQiKX0sYWJvcnQoKXtvPVtdLG0ucG9ydDEucG9zdE1lc3NhZ2UoImFib3J0IiksbS5wb3J0MS5vbm1lc3NhZ2U9bnVsbCxtLnBvcnQxLmNsb3NlKCksbS5wb3J0Mi5jbG9zZSgpLG09bnVsbH19LGkud3JpdGFibGVTdHJhdGVneSl9cmV0dXJuIGIoKCk9Pntjb25zdHtyZWFkYWJsZTp4fT1uZXcgVHJhbnNmb3JtU3RyZWFtLGI9bmV3IE1lc3NhZ2VDaGFubmVsO2IucG9ydDEucG9zdE1lc3NhZ2UoeCxbeF0pLGIucG9ydDEuY2xvc2UoKSxiLnBvcnQyLmNsb3NlKCksYT0hMCxPYmplY3QuZGVmaW5lUHJvcGVydHkoZywiVHJhbnNmb3JtU3RyZWFtIix7Y29uZmlndXJhYmxlOiExLHdyaXRhYmxlOiExLHZhbHVlOlRyYW5zZm9ybVN0cmVhbX0pfSksZ30oKTs=" }, "lib/webstreams.js": { "content_type": "text/javascript", "data": "LyoqCiAqIE1pbmlmaWVkIGJ5IGpzRGVsaXZyIHVzaW5nIFRlcnNlciB2My4xNC4xLgogKiBPcmlnaW5hbCBmaWxlOiAvbnBtL3dlYi1zdHJlYW1zLXBvbHlmaWxsQDIuMC4yL2Rpc3QvcG9ueWZpbGwuanMKICogCiAqLwohZnVuY3Rpb24oZSxyKXsib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHMmJiJ1bmRlZmluZWQiIT10eXBlb2YgbW9kdWxlP3IoZXhwb3J0cyk6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyJleHBvcnRzIl0scik6cigoZT1lfHxzZWxmKS5XZWJTdHJlYW1zUG9seWZpbGw9e30pfSh0aGlzLGZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0Ijt2YXIgcj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9TeW1ib2w6ZnVuY3Rpb24oZSl7cmV0dXJuIlN5bWJvbCgiK2UrIikifTt2YXIgdD1OdW1iZXIuaXNOYU58fGZ1bmN0aW9uKGUpe3JldHVybiBlIT1lfTtmdW5jdGlvbiBvKGUpe3JldHVybiJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlfWZ1bmN0aW9uIG4oZSl7cmV0dXJuIGUuc2xpY2UoKX1mdW5jdGlvbiBpKGUpe3JldHVybiExIT09ZnVuY3Rpb24oZSl7aWYoIm51bWJlciIhPXR5cGVvZiBlKXJldHVybiExO2lmKHQoZSkpcmV0dXJuITE7aWYoZTwwKXJldHVybiExO3JldHVybiEwfShlKSYmZSE9PTEvMH1mdW5jdGlvbiBhKGUscix0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJBcmd1bWVudCBpcyBub3QgYSBmdW5jdGlvbiIpO3JldHVybiBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkuY2FsbChlLHIsdCl9ZnVuY3Rpb24gcyhlLHIsdCxvKXt2YXIgbj1lW3JdO2lmKHZvaWQgMCE9PW4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuKXRocm93IG5ldyBUeXBlRXJyb3IobisiIGlzIG5vdCBhIG1ldGhvZCIpO3N3aXRjaCh0KXtjYXNlIDA6cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGwobixlLG8pfTtjYXNlIDE6cmV0dXJuIGZ1bmN0aW9uKHIpe3ZhciB0PVtyXS5jb25jYXQobyk7cmV0dXJuIGwobixlLHQpfX19cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpfX1mdW5jdGlvbiB1KGUscix0KXt2YXIgbz1lW3JdO2lmKHZvaWQgMCE9PW8pcmV0dXJuIGEobyxlLHQpfWZ1bmN0aW9uIGwoZSxyLHQpe3RyeXtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGEoZSxyLHQpKX1jYXRjaChlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9fWZ1bmN0aW9uIGMoZSl7cmV0dXJuIGV9ZnVuY3Rpb24gZihlKXtpZihlPU51bWJlcihlKSx0KGUpfHxlPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoImhpZ2hXYXRlck1hcmsgcHJvcGVydHkgb2YgYSBxdWV1aW5nIHN0cmF0ZWd5IG11c3QgYmUgbm9uLW5lZ2F0aXZlIGFuZCBub24tTmFOIik7cmV0dXJuIGV9ZnVuY3Rpb24gZChlKXtpZih2b2lkIDA9PT1lKXJldHVybiBmdW5jdGlvbigpe3JldHVybiAxfTtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJzaXplIHByb3BlcnR5IG9mIGEgcXVldWluZyBzdHJhdGVneSBtdXN0IGJlIGEgZnVuY3Rpb24iKTtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIGUocil9fWZ1bmN0aW9uIF8oZSxyLHQpe2Zvcih2YXIgbz0hMSxuPWZ1bmN0aW9uKGUpeyExPT09byYmKG89ITAsdChlKSl9LGk9MCxhPTAscz1lLmxlbmd0aCx1PW5ldyBBcnJheShzKSxsPWZ1bmN0aW9uKGUpe3ZhciB0PWk7IWZ1bmN0aW9uKGUscix0KXtQcm9taXNlLnByb3RvdHlwZS50aGVuLmNhbGwoZSxyLHQpfShlLGZ1bmN0aW9uKGUpe3VbdF09ZSwrK2E9PT1zJiZyKHUpfSxuKSwrK2l9LGM9MCxmPWU7YzxmLmxlbmd0aDtjKyspe2woZltjXSl9fXZhciBoPWZ1bmN0aW9uKCl7fSxiPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3RoaXMuX2N1cnNvcj0wLHRoaXMuX3NpemU9MCx0aGlzLl9mcm9udD17X2VsZW1lbnRzOltdLF9uZXh0OnZvaWQgMH0sdGhpcy5fYmFjaz10aGlzLl9mcm9udCx0aGlzLl9jdXJzb3I9MCx0aGlzLl9zaXplPTB9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwibGVuZ3RoIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NpemV9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUucHVzaD1mdW5jdGlvbihlKXt2YXIgcj10aGlzLl9iYWNrLHQ9cjsxNjM4Mz09PXIuX2VsZW1lbnRzLmxlbmd0aCYmKHQ9e19lbGVtZW50czpbXSxfbmV4dDp2b2lkIDB9KSxyLl9lbGVtZW50cy5wdXNoKGUpLHQhPT1yJiYodGhpcy5fYmFjaz10LHIuX25leHQ9dCksKyt0aGlzLl9zaXplfSxlLnByb3RvdHlwZS5zaGlmdD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2Zyb250LHI9ZSx0PXRoaXMuX2N1cnNvcixvPXQrMSxuPWUuX2VsZW1lbnRzLGk9blt0XTtyZXR1cm4gMTYzODQ9PT1vJiYocj1lLl9uZXh0LG89MCksLS10aGlzLl9zaXplLHRoaXMuX2N1cnNvcj1vLGUhPT1yJiYodGhpcy5fZnJvbnQ9ciksblt0XT12b2lkIDAsaX0sZS5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbihlKXtmb3IodmFyIHI9dGhpcy5fY3Vyc29yLHQ9dGhpcy5fZnJvbnQsbz10Ll9lbGVtZW50czshKHI9PT1vLmxlbmd0aCYmdm9pZCAwPT09dC5fbmV4dHx8cj09PW8ubGVuZ3RoJiYocj0wLDA9PT0obz0odD10Ll9uZXh0KS5fZWxlbWVudHMpLmxlbmd0aCkpOyllKG9bcl0pLCsrcn0sZS5wcm90b3R5cGUucGVlaz1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2Zyb250LHI9dGhpcy5fY3Vyc29yO3JldHVybiBlLl9lbGVtZW50c1tyXX0sZX0oKTtmdW5jdGlvbiBwKGUpe3ZhciByPWUuX3F1ZXVlLnNoaWZ0KCk7cmV0dXJuIGUuX3F1ZXVlVG90YWxTaXplLT1yLnNpemUsZS5fcXVldWVUb3RhbFNpemU8MCYmKGUuX3F1ZXVlVG90YWxTaXplPTApLHIudmFsdWV9ZnVuY3Rpb24gbShlLHIsdCl7aWYoIWkodD1OdW1iZXIodCkpKXRocm93IG5ldyBSYW5nZUVycm9yKCJTaXplIG11c3QgYmUgYSBmaW5pdGUsIG5vbi1OYU4sIG5vbi1uZWdhdGl2ZSBudW1iZXIuIik7ZS5fcXVldWUucHVzaCh7dmFsdWU6cixzaXplOnR9KSxlLl9xdWV1ZVRvdGFsU2l6ZSs9dH1mdW5jdGlvbiB5KGUpe2UuX3F1ZXVlPW5ldyBiLGUuX3F1ZXVlVG90YWxTaXplPTB9dmFyIHY9cigiW1tBYm9ydFN0ZXBzXV0iKSx3PXIoIltbRXJyb3JTdGVwc11dIiksZz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSxyKXt2b2lkIDA9PT1lJiYoZT17fSksdm9pZCAwPT09ciYmKHI9e30pLFIodGhpcyk7dmFyIHQ9ci5zaXplLG89ci5oaWdoV2F0ZXJNYXJrO2lmKHZvaWQgMCE9PWUudHlwZSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCB0eXBlIGlzIHNwZWNpZmllZCIpO3ZhciBuPWQodCk7dm9pZCAwPT09byYmKG89MSksZnVuY3Rpb24oZSxyLHQsbyl7dmFyIG49T2JqZWN0LmNyZWF0ZSh4LnByb3RvdHlwZSk7dmFyIGk9cyhyLCJ3cml0ZSIsMSxbbl0pLGE9cyhyLCJjbG9zZSIsMCxbXSksbD1zKHIsImFib3J0IiwxLFtdKTtEKGUsbixmdW5jdGlvbigpe3JldHVybiB1KHIsInN0YXJ0Iixbbl0pfSxpLGEsbCx0LG8pfSh0aGlzLGUsbz1mKG8pLG4pfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImxvY2tlZCIse2dldDpmdW5jdGlvbigpe2lmKCExPT09UCh0aGlzKSl0aHJvdyBHKCJsb2NrZWQiKTtyZXR1cm4gVCh0aGlzKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5hYm9ydD1mdW5jdGlvbihlKXtyZXR1cm4hMT09PVAodGhpcyk/UHJvbWlzZS5yZWplY3QoRygiYWJvcnQiKSk6ITA9PT1UKHRoaXMpP1Byb21pc2UucmVqZWN0KG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBhYm9ydCBhIHN0cmVhbSB0aGF0IGFscmVhZHkgaGFzIGEgd3JpdGVyIikpOnEodGhpcyxlKX0sZS5wcm90b3R5cGUuZ2V0V3JpdGVyPWZ1bmN0aW9uKCl7aWYoITE9PT1QKHRoaXMpKXRocm93IEcoImdldFdyaXRlciIpO3JldHVybiBTKHRoaXMpfSxlfSgpO2Z1bmN0aW9uIFMoZSl7cmV0dXJuIG5ldyBrKGUpfWZ1bmN0aW9uIFIoZSl7ZS5fc3RhdGU9IndyaXRhYmxlIixlLl9zdG9yZWRFcnJvcj12b2lkIDAsZS5fd3JpdGVyPXZvaWQgMCxlLl93cml0YWJsZVN0cmVhbUNvbnRyb2xsZXI9dm9pZCAwLGUuX3dyaXRlUmVxdWVzdHM9bmV3IGIsZS5faW5GbGlnaHRXcml0ZVJlcXVlc3Q9dm9pZCAwLGUuX2Nsb3NlUmVxdWVzdD12b2lkIDAsZS5faW5GbGlnaHRDbG9zZVJlcXVlc3Q9dm9pZCAwLGUuX3BlbmRpbmdBYm9ydFJlcXVlc3Q9dm9pZCAwLGUuX2JhY2twcmVzc3VyZT0hMX1mdW5jdGlvbiBQKGUpe3JldHVybiEhbyhlKSYmISFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSwiX3dyaXRhYmxlU3RyZWFtQ29udHJvbGxlciIpfWZ1bmN0aW9uIFQoZSl7cmV0dXJuIHZvaWQgMCE9PWUuX3dyaXRlcn1mdW5jdGlvbiBxKGUscil7dmFyIHQ9ZS5fc3RhdGU7aWYoImNsb3NlZCI9PT10fHwiZXJyb3JlZCI9PT10KXJldHVybiBQcm9taXNlLnJlc29sdmUodm9pZCAwKTtpZih2b2lkIDAhPT1lLl9wZW5kaW5nQWJvcnRSZXF1ZXN0KXJldHVybiBlLl9wZW5kaW5nQWJvcnRSZXF1ZXN0Ll9wcm9taXNlO3ZhciBvPSExOyJlcnJvcmluZyI9PT10JiYobz0hMCxyPXZvaWQgMCk7dmFyIG49bmV3IFByb21pc2UoZnVuY3Rpb24odCxuKXtlLl9wZW5kaW5nQWJvcnRSZXF1ZXN0PXtfcHJvbWlzZTp2b2lkIDAsX3Jlc29sdmU6dCxfcmVqZWN0Om4sX3JlYXNvbjpyLF93YXNBbHJlYWR5RXJyb3Jpbmc6b319KTtyZXR1cm4gZS5fcGVuZGluZ0Fib3J0UmVxdWVzdC5fcHJvbWlzZT1uLCExPT09byYmRShlLHIpLG59ZnVuY3Rpb24gaihlLHIpeyJ3cml0YWJsZSIhPT1lLl9zdGF0ZT9DKGUpOkUoZSxyKX1mdW5jdGlvbiBFKGUscil7dmFyIHQ9ZS5fd3JpdGFibGVTdHJlYW1Db250cm9sbGVyO2UuX3N0YXRlPSJlcnJvcmluZyIsZS5fc3RvcmVkRXJyb3I9cjt2YXIgbz1lLl93cml0ZXI7dm9pZCAwIT09byYmRihvLHIpLCExPT09ZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZS5faW5GbGlnaHRXcml0ZVJlcXVlc3QmJnZvaWQgMD09PWUuX2luRmxpZ2h0Q2xvc2VSZXF1ZXN0KXJldHVybiExO3JldHVybiEwfShlKSYmITA9PT10Ll9zdGFydGVkJiZDKGUpfWZ1bmN0aW9uIEMoZSl7ZS5fc3RhdGU9ImVycm9yZWQiLGUuX3dyaXRhYmxlU3RyZWFtQ29udHJvbGxlclt3XSgpO3ZhciByPWUuX3N0b3JlZEVycm9yO2lmKGUuX3dyaXRlUmVxdWVzdHMuZm9yRWFjaChmdW5jdGlvbihlKXtlLl9yZWplY3Qocil9KSxlLl93cml0ZVJlcXVlc3RzPW5ldyBiLHZvaWQgMCE9PWUuX3BlbmRpbmdBYm9ydFJlcXVlc3Qpe3ZhciB0PWUuX3BlbmRpbmdBYm9ydFJlcXVlc3Q7aWYoZS5fcGVuZGluZ0Fib3J0UmVxdWVzdD12b2lkIDAsITA9PT10Ll93YXNBbHJlYWR5RXJyb3JpbmcpcmV0dXJuIHQuX3JlamVjdChyKSx2b2lkIE8oZSk7ZS5fd3JpdGFibGVTdHJlYW1Db250cm9sbGVyW3ZdKHQuX3JlYXNvbikudGhlbihmdW5jdGlvbigpe3QuX3Jlc29sdmUoKSxPKGUpfSxmdW5jdGlvbihyKXt0Ll9yZWplY3QociksTyhlKX0pfWVsc2UgTyhlKX1mdW5jdGlvbiBBKGUpe3JldHVybiB2b2lkIDAhPT1lLl9jbG9zZVJlcXVlc3R8fHZvaWQgMCE9PWUuX2luRmxpZ2h0Q2xvc2VSZXF1ZXN0fWZ1bmN0aW9uIE8oZSl7dm9pZCAwIT09ZS5fY2xvc2VSZXF1ZXN0JiYoZS5fY2xvc2VSZXF1ZXN0Ll9yZWplY3QoZS5fc3RvcmVkRXJyb3IpLGUuX2Nsb3NlUmVxdWVzdD12b2lkIDApO3ZhciByPWUuX3dyaXRlcjt2b2lkIDAhPT1yJiYkKHIsZS5fc3RvcmVkRXJyb3IpfWZ1bmN0aW9uIFcoZSxyKXt2YXIgdD1lLl93cml0ZXI7dm9pZCAwIT09dCYmciE9PWUuX2JhY2twcmVzc3VyZSYmKCEwPT09cj9mdW5jdGlvbihlKXtyZShlKX0odCk6aWUodCkpLGUuX2JhY2twcmVzc3VyZT1yfXZhciBrPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlKXtpZighMT09PVAoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiV3JpdGFibGVTdHJlYW1EZWZhdWx0V3JpdGVyIGNhbiBvbmx5IGJlIGNvbnN0cnVjdGVkIHdpdGggYSBXcml0YWJsZVN0cmVhbSBpbnN0YW5jZSIpO2lmKCEwPT09VChlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGlzIHN0cmVhbSBoYXMgYWxyZWFkeSBiZWVuIGxvY2tlZCBmb3IgZXhjbHVzaXZlIHdyaXRpbmcgYnkgYW5vdGhlciB3cml0ZXIiKTt0aGlzLl9vd25lcldyaXRhYmxlU3RyZWFtPWUsZS5fd3JpdGVyPXRoaXM7dmFyIHIsdD1lLl9zdGF0ZTtpZigid3JpdGFibGUiPT09dCkhMT09PUEoZSkmJiEwPT09ZS5fYmFja3ByZXNzdXJlP3JlKHRoaXMpOm9lKHRoaXMpLFgodGhpcyk7ZWxzZSBpZigiZXJyb3JpbmciPT09dCl0ZSh0aGlzLGUuX3N0b3JlZEVycm9yKSxYKHRoaXMpO2Vsc2UgaWYoImNsb3NlZCI9PT10KW9lKHRoaXMpLFgocj10aGlzKSxlZShyKTtlbHNle3ZhciBvPWUuX3N0b3JlZEVycm9yO3RlKHRoaXMsbyksWih0aGlzLG8pfX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJjbG9zZWQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hMT09PXoodGhpcyk/UHJvbWlzZS5yZWplY3QoSigiY2xvc2VkIikpOnRoaXMuX2Nsb3NlZFByb21pc2V9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJkZXNpcmVkU2l6ZSIse2dldDpmdW5jdGlvbigpe2lmKCExPT09eih0aGlzKSl0aHJvdyBKKCJkZXNpcmVkU2l6ZSIpO2lmKHZvaWQgMD09PXRoaXMuX293bmVyV3JpdGFibGVTdHJlYW0pdGhyb3cgSygiZGVzaXJlZFNpemUiKTtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHI9ZS5fb3duZXJXcml0YWJsZVN0cmVhbSx0PXIuX3N0YXRlO2lmKCJlcnJvcmVkIj09PXR8fCJlcnJvcmluZyI9PT10KXJldHVybiBudWxsO2lmKCJjbG9zZWQiPT09dClyZXR1cm4gMDtyZXR1cm4gWShyLl93cml0YWJsZVN0cmVhbUNvbnRyb2xsZXIpfSh0aGlzKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsInJlYWR5Iix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuITE9PT16KHRoaXMpP1Byb21pc2UucmVqZWN0KEooInJlYWR5IikpOnRoaXMuX3JlYWR5UHJvbWlzZX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5hYm9ydD1mdW5jdGlvbihlKXtyZXR1cm4hMT09PXoodGhpcyk/UHJvbWlzZS5yZWplY3QoSigiYWJvcnQiKSk6dm9pZCAwPT09dGhpcy5fb3duZXJXcml0YWJsZVN0cmVhbT9Qcm9taXNlLnJlamVjdChLKCJhYm9ydCIpKTpmdW5jdGlvbihlLHIpe3JldHVybiBxKGUuX293bmVyV3JpdGFibGVTdHJlYW0scil9KHRoaXMsZSl9LGUucHJvdG90eXBlLmNsb3NlPWZ1bmN0aW9uKCl7aWYoITE9PT16KHRoaXMpKXJldHVybiBQcm9taXNlLnJlamVjdChKKCJjbG9zZSIpKTt2YXIgZT10aGlzLl9vd25lcldyaXRhYmxlU3RyZWFtO3JldHVybiB2b2lkIDA9PT1lP1Byb21pc2UucmVqZWN0KEsoImNsb3NlIikpOiEwPT09QShlKT9Qcm9taXNlLnJlamVjdChuZXcgVHlwZUVycm9yKCJjYW5ub3QgY2xvc2UgYW4gYWxyZWFkeS1jbG9zaW5nIHN0cmVhbSIpKTpCKHRoaXMpfSxlLnByb3RvdHlwZS5yZWxlYXNlTG9jaz1mdW5jdGlvbigpe2lmKCExPT09eih0aGlzKSl0aHJvdyBKKCJyZWxlYXNlTG9jayIpO3ZvaWQgMCE9PXRoaXMuX293bmVyV3JpdGFibGVTdHJlYW0mJkwodGhpcyl9LGUucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKGUpe3JldHVybiExPT09eih0aGlzKT9Qcm9taXNlLnJlamVjdChKKCJ3cml0ZSIpKTp2b2lkIDA9PT10aGlzLl9vd25lcldyaXRhYmxlU3RyZWFtP1Byb21pc2UucmVqZWN0KEsoIndyaXRlIHRvIikpOk0odGhpcyxlKX0sZX0oKTtmdW5jdGlvbiB6KGUpe3JldHVybiEhbyhlKSYmISFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSwiX293bmVyV3JpdGFibGVTdHJlYW0iKX1mdW5jdGlvbiBCKGUpe3ZhciByPWUuX293bmVyV3JpdGFibGVTdHJlYW0sdD1yLl9zdGF0ZTtpZigiY2xvc2VkIj09PXR8fCJlcnJvcmVkIj09PXQpcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBUeXBlRXJyb3IoIlRoZSBzdHJlYW0gKGluICIrdCsiIHN0YXRlKSBpcyBub3QgaW4gdGhlIHdyaXRhYmxlIHN0YXRlIGFuZCBjYW5ub3QgYmUgY2xvc2VkIikpO3ZhciBvLG49bmV3IFByb21pc2UoZnVuY3Rpb24oZSx0KXt2YXIgbz17X3Jlc29sdmU6ZSxfcmVqZWN0OnR9O3IuX2Nsb3NlUmVxdWVzdD1vfSk7cmV0dXJuITA9PT1yLl9iYWNrcHJlc3N1cmUmJiJ3cml0YWJsZSI9PT10JiZpZShlKSxtKG89ci5fd3JpdGFibGVTdHJlYW1Db250cm9sbGVyLCJjbG9zZSIsMCksSChvKSxufWZ1bmN0aW9uIEkoZSxyKXsicGVuZGluZyI9PT1lLl9jbG9zZWRQcm9taXNlU3RhdGU/JChlLHIpOmZ1bmN0aW9uKGUscil7WihlLHIpfShlLHIpfWZ1bmN0aW9uIEYoZSxyKXsicGVuZGluZyI9PT1lLl9yZWFkeVByb21pc2VTdGF0ZT9uZShlLHIpOmZ1bmN0aW9uKGUscil7dGUoZSxyKX0oZSxyKX1mdW5jdGlvbiBMKGUpe3ZhciByPWUuX293bmVyV3JpdGFibGVTdHJlYW0sdD1uZXcgVHlwZUVycm9yKCJXcml0ZXIgd2FzIHJlbGVhc2VkIGFuZCBjYW4gbm8gbG9uZ2VyIGJlIHVzZWQgdG8gbW9uaXRvciB0aGUgc3RyZWFtJ3MgY2xvc2VkbmVzcyIpO0YoZSx0KSxJKGUsdCksci5fd3JpdGVyPXZvaWQgMCxlLl9vd25lcldyaXRhYmxlU3RyZWFtPXZvaWQgMH1mdW5jdGlvbiBNKGUscil7dmFyIHQ9ZS5fb3duZXJXcml0YWJsZVN0cmVhbSxvPXQuX3dyaXRhYmxlU3RyZWFtQ29udHJvbGxlcixuPWZ1bmN0aW9uKGUscil7dHJ5e3JldHVybiBlLl9zdHJhdGVneVNpemVBbGdvcml0aG0ocil9Y2F0Y2gocil7cmV0dXJuIFUoZSxyKSwxfX0obyxyKTtpZih0IT09ZS5fb3duZXJXcml0YWJsZVN0cmVhbSlyZXR1cm4gUHJvbWlzZS5yZWplY3QoSygid3JpdGUgdG8iKSk7dmFyIGk9dC5fc3RhdGU7aWYoImVycm9yZWQiPT09aSlyZXR1cm4gUHJvbWlzZS5yZWplY3QodC5fc3RvcmVkRXJyb3IpO2lmKCEwPT09QSh0KXx8ImNsb3NlZCI9PT1pKXJldHVybiBQcm9taXNlLnJlamVjdChuZXcgVHlwZUVycm9yKCJUaGUgc3RyZWFtIGlzIGNsb3Npbmcgb3IgY2xvc2VkIGFuZCBjYW5ub3QgYmUgd3JpdHRlbiB0byIpKTtpZigiZXJyb3JpbmciPT09aSlyZXR1cm4gUHJvbWlzZS5yZWplY3QodC5fc3RvcmVkRXJyb3IpO3ZhciBhPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyLHQpe3ZhciBvPXtfcmVzb2x2ZTpyLF9yZWplY3Q6dH07ZS5fd3JpdGVSZXF1ZXN0cy5wdXNoKG8pfSl9KHQpO3JldHVybiBmdW5jdGlvbihlLHIsdCl7dmFyIG89e2NodW5rOnJ9O3RyeXttKGUsbyx0KX1jYXRjaChyKXtyZXR1cm4gdm9pZCBVKGUscil9dmFyIG49ZS5fY29udHJvbGxlZFdyaXRhYmxlU3RyZWFtO2lmKCExPT09QShuKSYmIndyaXRhYmxlIj09PW4uX3N0YXRlKXt2YXIgaT1WKGUpO1cobixpKX1IKGUpfShvLHIsbiksYX12YXIgeD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJXcml0YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyIGNhbm5vdCBiZSBjb25zdHJ1Y3RlZCBleHBsaWNpdGx5Iil9cmV0dXJuIGUucHJvdG90eXBlLmVycm9yPWZ1bmN0aW9uKGUpe2lmKCExPT09ZnVuY3Rpb24oZSl7aWYoIW8oZSkpcmV0dXJuITE7aWYoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLCJfY29udHJvbGxlZFdyaXRhYmxlU3RyZWFtIikpcmV0dXJuITE7cmV0dXJuITB9KHRoaXMpKXRocm93IG5ldyBUeXBlRXJyb3IoIldyaXRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIucHJvdG90eXBlLmVycm9yIGNhbiBvbmx5IGJlIHVzZWQgb24gYSBXcml0YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyIik7IndyaXRhYmxlIj09PXRoaXMuX2NvbnRyb2xsZWRXcml0YWJsZVN0cmVhbS5fc3RhdGUmJlEodGhpcyxlKX0sZS5wcm90b3R5cGVbdl09ZnVuY3Rpb24oZSl7dmFyIHI9dGhpcy5fYWJvcnRBbGdvcml0aG0oZSk7cmV0dXJuIE4odGhpcykscn0sZS5wcm90b3R5cGVbd109ZnVuY3Rpb24oKXt5KHRoaXMpfSxlfSgpO2Z1bmN0aW9uIEQoZSxyLHQsbyxuLGksYSxzKXtyLl9jb250cm9sbGVkV3JpdGFibGVTdHJlYW09ZSxlLl93cml0YWJsZVN0cmVhbUNvbnRyb2xsZXI9cixyLl9xdWV1ZT12b2lkIDAsci5fcXVldWVUb3RhbFNpemU9dm9pZCAwLHkociksci5fc3RhcnRlZD0hMSxyLl9zdHJhdGVneVNpemVBbGdvcml0aG09cyxyLl9zdHJhdGVneUhXTT1hLHIuX3dyaXRlQWxnb3JpdGhtPW8sci5fY2xvc2VBbGdvcml0aG09bixyLl9hYm9ydEFsZ29yaXRobT1pO3ZhciB1PVYocik7VyhlLHUpO3ZhciBsPXQoKTtQcm9taXNlLnJlc29sdmUobCkudGhlbihmdW5jdGlvbigpe3IuX3N0YXJ0ZWQ9ITAsSChyKX0sZnVuY3Rpb24odCl7ci5fc3RhcnRlZD0hMCxqKGUsdCl9KS5jYXRjaChoKX1mdW5jdGlvbiBOKGUpe2UuX3dyaXRlQWxnb3JpdGhtPXZvaWQgMCxlLl9jbG9zZUFsZ29yaXRobT12b2lkIDAsZS5fYWJvcnRBbGdvcml0aG09dm9pZCAwLGUuX3N0cmF0ZWd5U2l6ZUFsZ29yaXRobT12b2lkIDB9ZnVuY3Rpb24gWShlKXtyZXR1cm4gZS5fc3RyYXRlZ3lIV00tZS5fcXVldWVUb3RhbFNpemV9ZnVuY3Rpb24gSChlKXt2YXIgcj1lLl9jb250cm9sbGVkV3JpdGFibGVTdHJlYW07aWYoITEhPT1lLl9zdGFydGVkJiZ2b2lkIDA9PT1yLl9pbkZsaWdodFdyaXRlUmVxdWVzdClpZigiZXJyb3JpbmciIT09ci5fc3RhdGUpe2lmKDAhPT1lLl9xdWV1ZS5sZW5ndGgpe3ZhciB0PWUuX3F1ZXVlLnBlZWsoKS52YWx1ZTsiY2xvc2UiPT09dD9mdW5jdGlvbihlKXt2YXIgcj1lLl9jb250cm9sbGVkV3JpdGFibGVTdHJlYW07KGZ1bmN0aW9uKGUpe2UuX2luRmxpZ2h0Q2xvc2VSZXF1ZXN0PWUuX2Nsb3NlUmVxdWVzdCxlLl9jbG9zZVJlcXVlc3Q9dm9pZCAwfSkocikscChlKTt2YXIgdD1lLl9jbG9zZUFsZ29yaXRobSgpO04oZSksdC50aGVuKGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKGUpe2UuX2luRmxpZ2h0Q2xvc2VSZXF1ZXN0Ll9yZXNvbHZlKHZvaWQgMCksZS5faW5GbGlnaHRDbG9zZVJlcXVlc3Q9dm9pZCAwLCJlcnJvcmluZyI9PT1lLl9zdGF0ZSYmKGUuX3N0b3JlZEVycm9yPXZvaWQgMCx2b2lkIDAhPT1lLl9wZW5kaW5nQWJvcnRSZXF1ZXN0JiYoZS5fcGVuZGluZ0Fib3J0UmVxdWVzdC5fcmVzb2x2ZSgpLGUuX3BlbmRpbmdBYm9ydFJlcXVlc3Q9dm9pZCAwKSksZS5fc3RhdGU9ImNsb3NlZCI7dmFyIHI9ZS5fd3JpdGVyO3ZvaWQgMCE9PXImJmVlKHIpfShyKX0sZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKGUscil7ZS5faW5GbGlnaHRDbG9zZVJlcXVlc3QuX3JlamVjdChyKSxlLl9pbkZsaWdodENsb3NlUmVxdWVzdD12b2lkIDAsdm9pZCAwIT09ZS5fcGVuZGluZ0Fib3J0UmVxdWVzdCYmKGUuX3BlbmRpbmdBYm9ydFJlcXVlc3QuX3JlamVjdChyKSxlLl9wZW5kaW5nQWJvcnRSZXF1ZXN0PXZvaWQgMCksaihlLHIpfShyLGUpfSkuY2F0Y2goaCl9KGUpOmZ1bmN0aW9uKGUscil7dmFyIHQ9ZS5fY29udHJvbGxlZFdyaXRhYmxlU3RyZWFtOyhmdW5jdGlvbihlKXtlLl9pbkZsaWdodFdyaXRlUmVxdWVzdD1lLl93cml0ZVJlcXVlc3RzLnNoaWZ0KCl9KSh0KSxlLl93cml0ZUFsZ29yaXRobShyKS50aGVuKGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKGUpe2UuX2luRmxpZ2h0V3JpdGVSZXF1ZXN0Ll9yZXNvbHZlKHZvaWQgMCksZS5faW5GbGlnaHRXcml0ZVJlcXVlc3Q9dm9pZCAwfSh0KTt2YXIgcj10Ll9zdGF0ZTtpZihwKGUpLCExPT09QSh0KSYmIndyaXRhYmxlIj09PXIpe3ZhciBvPVYoZSk7Vyh0LG8pfUgoZSl9LGZ1bmN0aW9uKHIpeyJ3cml0YWJsZSI9PT10Ll9zdGF0ZSYmTihlKSxmdW5jdGlvbihlLHIpe2UuX2luRmxpZ2h0V3JpdGVSZXF1ZXN0Ll9yZWplY3QociksZS5faW5GbGlnaHRXcml0ZVJlcXVlc3Q9dm9pZCAwLGooZSxyKX0odCxyKX0pLmNhdGNoKGgpfShlLHQuY2h1bmspfX1lbHNlIEMocil9ZnVuY3Rpb24gVShlLHIpeyJ3cml0YWJsZSI9PT1lLl9jb250cm9sbGVkV3JpdGFibGVTdHJlYW0uX3N0YXRlJiZRKGUscil9ZnVuY3Rpb24gVihlKXtyZXR1cm4gWShlKTw9MH1mdW5jdGlvbiBRKGUscil7dmFyIHQ9ZS5fY29udHJvbGxlZFdyaXRhYmxlU3RyZWFtO04oZSksRSh0LHIpfWZ1bmN0aW9uIEcoZSl7cmV0dXJuIG5ldyBUeXBlRXJyb3IoIldyaXRhYmxlU3RyZWFtLnByb3RvdHlwZS4iK2UrIiBjYW4gb25seSBiZSB1c2VkIG9uIGEgV3JpdGFibGVTdHJlYW0iKX1mdW5jdGlvbiBKKGUpe3JldHVybiBuZXcgVHlwZUVycm9yKCJXcml0YWJsZVN0cmVhbURlZmF1bHRXcml0ZXIucHJvdG90eXBlLiIrZSsiIGNhbiBvbmx5IGJlIHVzZWQgb24gYSBXcml0YWJsZVN0cmVhbURlZmF1bHRXcml0ZXIiKX1mdW5jdGlvbiBLKGUpe3JldHVybiBuZXcgVHlwZUVycm9yKCJDYW5ub3QgIitlKyIgYSBzdHJlYW0gdXNpbmcgYSByZWxlYXNlZCB3cml0ZXIiKX1mdW5jdGlvbiBYKGUpe2UuX2Nsb3NlZFByb21pc2U9bmV3IFByb21pc2UoZnVuY3Rpb24ocix0KXtlLl9jbG9zZWRQcm9taXNlX3Jlc29sdmU9cixlLl9jbG9zZWRQcm9taXNlX3JlamVjdD10LGUuX2Nsb3NlZFByb21pc2VTdGF0ZT0icGVuZGluZyJ9KX1mdW5jdGlvbiBaKGUscil7WChlKSwkKGUscil9ZnVuY3Rpb24gJChlLHIpe2UuX2Nsb3NlZFByb21pc2UuY2F0Y2goZnVuY3Rpb24oKXt9KSxlLl9jbG9zZWRQcm9taXNlX3JlamVjdChyKSxlLl9jbG9zZWRQcm9taXNlX3Jlc29sdmU9dm9pZCAwLGUuX2Nsb3NlZFByb21pc2VfcmVqZWN0PXZvaWQgMCxlLl9jbG9zZWRQcm9taXNlU3RhdGU9InJlamVjdGVkIn1mdW5jdGlvbiBlZShlKXtlLl9jbG9zZWRQcm9taXNlX3Jlc29sdmUodm9pZCAwKSxlLl9jbG9zZWRQcm9taXNlX3Jlc29sdmU9dm9pZCAwLGUuX2Nsb3NlZFByb21pc2VfcmVqZWN0PXZvaWQgMCxlLl9jbG9zZWRQcm9taXNlU3RhdGU9InJlc29sdmVkIn1mdW5jdGlvbiByZShlKXtlLl9yZWFkeVByb21pc2U9bmV3IFByb21pc2UoZnVuY3Rpb24ocix0KXtlLl9yZWFkeVByb21pc2VfcmVzb2x2ZT1yLGUuX3JlYWR5UHJvbWlzZV9yZWplY3Q9dH0pLGUuX3JlYWR5UHJvbWlzZVN0YXRlPSJwZW5kaW5nIn1mdW5jdGlvbiB0ZShlLHIpe3JlKGUpLG5lKGUscil9ZnVuY3Rpb24gb2UoZSl7cmUoZSksaWUoZSl9ZnVuY3Rpb24gbmUoZSxyKXtlLl9yZWFkeVByb21pc2UuY2F0Y2goZnVuY3Rpb24oKXt9KSxlLl9yZWFkeVByb21pc2VfcmVqZWN0KHIpLGUuX3JlYWR5UHJvbWlzZV9yZXNvbHZlPXZvaWQgMCxlLl9yZWFkeVByb21pc2VfcmVqZWN0PXZvaWQgMCxlLl9yZWFkeVByb21pc2VTdGF0ZT0icmVqZWN0ZWQifWZ1bmN0aW9uIGllKGUpe2UuX3JlYWR5UHJvbWlzZV9yZXNvbHZlKHZvaWQgMCksZS5fcmVhZHlQcm9taXNlX3Jlc29sdmU9dm9pZCAwLGUuX3JlYWR5UHJvbWlzZV9yZWplY3Q9dm9pZCAwLGUuX3JlYWR5UHJvbWlzZVN0YXRlPSJmdWxmaWxsZWQifXZhciBhZSxzZSx1ZT1OdW1iZXIuaXNJbnRlZ2VyfHxmdW5jdGlvbihlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIGUmJmlzRmluaXRlKGUpJiZNYXRoLmZsb29yKGUpPT09ZX07InN5bWJvbCI9PXR5cGVvZiByLmFzeW5jSXRlcmF0b3ImJigoYWU9e30pW3IuYXN5bmNJdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sc2U9YWUsT2JqZWN0LmRlZmluZVByb3BlcnR5KHNlLHIuYXN5bmNJdGVyYXRvcix7ZW51bWVyYWJsZTohMX0pKTt2YXIgbGU9cigiW1tDYW5jZWxTdGVwc11dIiksY2U9cigiW1tQdWxsU3RlcHNdXSIpLGZlPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHIpe3ZvaWQgMD09PWUmJihlPXt9KSx2b2lkIDA9PT1yJiYocj17fSksYmUodGhpcyk7dmFyIHQ9ci5zaXplLG89ci5oaWdoV2F0ZXJNYXJrLG49ZS50eXBlO2lmKCJieXRlcyI9PT1TdHJpbmcobikpe2lmKHZvaWQgMCE9PXQpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlRoZSBzdHJhdGVneSBmb3IgYSBieXRlIHN0cmVhbSBjYW5ub3QgaGF2ZSBhIHNpemUgZnVuY3Rpb24iKTt2b2lkIDA9PT1vJiYobz0wKSxmdW5jdGlvbihlLHIsdCl7dmFyIG89T2JqZWN0LmNyZWF0ZShYZS5wcm90b3R5cGUpO3ZhciBuPXMociwicHVsbCIsMCxbb10pLGk9cyhyLCJjYW5jZWwiLDEsW10pLGE9ci5hdXRvQWxsb2NhdGVDaHVua1NpemU7aWYodm9pZCAwIT09YSYmKGE9TnVtYmVyKGEpLCExPT09dWUoYSl8fGE8PTApKXRocm93IG5ldyBSYW5nZUVycm9yKCJhdXRvQWxsb2NhdGVDaHVua1NpemUgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIiKTshZnVuY3Rpb24oZSxyLHQsbyxuLGksYSl7ci5fY29udHJvbGxlZFJlYWRhYmxlQnl0ZVN0cmVhbT1lLHIuX3B1bGxBZ2Fpbj0hMSxyLl9wdWxsaW5nPSExLHIuX2J5b2JSZXF1ZXN0PXZvaWQgMCxyLl9xdWV1ZT1yLl9xdWV1ZVRvdGFsU2l6ZT12b2lkIDAseShyKSxyLl9jbG9zZVJlcXVlc3RlZD0hMSxyLl9zdGFydGVkPSExLHIuX3N0cmF0ZWd5SFdNPWYoaSksci5fcHVsbEFsZ29yaXRobT1vLHIuX2NhbmNlbEFsZ29yaXRobT1uLHIuX2F1dG9BbGxvY2F0ZUNodW5rU2l6ZT1hLHIuX3BlbmRpbmdQdWxsSW50b3M9bmV3IGIsZS5fcmVhZGFibGVTdHJlYW1Db250cm9sbGVyPXI7dmFyIHM9dCgpO1Byb21pc2UucmVzb2x2ZShzKS50aGVuKGZ1bmN0aW9uKCl7ci5fc3RhcnRlZD0hMCxlcihyKX0sZnVuY3Rpb24oZSl7ZHIocixlKX0pLmNhdGNoKGgpfShlLG8sZnVuY3Rpb24oKXtyZXR1cm4gdShyLCJzdGFydCIsW29dKX0sbixpLHQsYSl9KHRoaXMsZSxvPWYobykpfWVsc2V7aWYodm9pZCAwIT09bil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW52YWxpZCB0eXBlIGlzIHNwZWNpZmllZCIpO3ZhciBpPWQodCk7dm9pZCAwPT09byYmKG89MSksZnVuY3Rpb24oZSxyLHQsbyl7dmFyIG49T2JqZWN0LmNyZWF0ZShNZS5wcm90b3R5cGUpO3ZhciBpPXMociwicHVsbCIsMCxbbl0pLGE9cyhyLCJjYW5jZWwiLDEsW10pO0plKGUsbixmdW5jdGlvbigpe3JldHVybiB1KHIsInN0YXJ0Iixbbl0pfSxpLGEsdCxvKX0odGhpcyxlLG89ZihvKSxpKX19cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwibG9ja2VkIix7Z2V0OmZ1bmN0aW9uKCl7aWYoITE9PT1wZSh0aGlzKSl0aHJvdyBicigibG9ja2VkIik7cmV0dXJuIG1lKHRoaXMpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmNhbmNlbD1mdW5jdGlvbihlKXtyZXR1cm4hMT09PXBlKHRoaXMpP1Byb21pc2UucmVqZWN0KGJyKCJjYW5jZWwiKSk6ITA9PT1tZSh0aGlzKT9Qcm9taXNlLnJlamVjdChuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FuY2VsIGEgc3RyZWFtIHRoYXQgYWxyZWFkeSBoYXMgYSByZWFkZXIiKSk6U2UodGhpcyxlKX0sZS5wcm90b3R5cGUuZ2V0UmVhZGVyPWZ1bmN0aW9uKGUpe3ZhciByPSh2b2lkIDA9PT1lP3t9OmUpLm1vZGU7aWYoITE9PT1wZSh0aGlzKSl0aHJvdyBicigiZ2V0UmVhZGVyIik7aWYodm9pZCAwPT09cilyZXR1cm4gX2UodGhpcywhMCk7aWYoImJ5b2IiPT09KHI9U3RyaW5nKHIpKSlyZXR1cm4gZnVuY3Rpb24oZSxyKXt2b2lkIDA9PT1yJiYocj0hMSk7dmFyIHQ9bmV3IFdlKGUpO3JldHVybiB0Ll9mb3JBdXRob3JDb2RlPXIsdH0odGhpcywhMCk7dGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgbW9kZSBpcyBzcGVjaWZpZWQiKX0sZS5wcm90b3R5cGUucGlwZVRocm91Z2g9ZnVuY3Rpb24oZSxyKXt2YXIgdD1lLndyaXRhYmxlLG89ZS5yZWFkYWJsZSxuPXZvaWQgMD09PXI/e306cixpPW4ucHJldmVudENsb3NlLGE9bi5wcmV2ZW50QWJvcnQscz1uLnByZXZlbnRDYW5jZWwsdT1uLnNpZ25hbDtpZighMT09PXBlKHRoaXMpKXRocm93IGJyKCJwaXBlVGhyb3VnaCIpO2lmKCExPT09UCh0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJ3cml0YWJsZSBhcmd1bWVudCB0byBwaXBlVGhyb3VnaCBtdXN0IGJlIGEgV3JpdGFibGVTdHJlYW0iKTtpZighMT09PXBlKG8pKXRocm93IG5ldyBUeXBlRXJyb3IoInJlYWRhYmxlIGFyZ3VtZW50IHRvIHBpcGVUaHJvdWdoIG11c3QgYmUgYSBSZWFkYWJsZVN0cmVhbSIpO2lmKGk9Qm9vbGVhbihpKSxhPUJvb2xlYW4oYSkscz1Cb29sZWFuKHMpLHZvaWQgMCE9PXUmJiFocih1KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2gncyBzaWduYWwgb3B0aW9uIG11c3QgYmUgYW4gQWJvcnRTaWduYWwiKTtpZighMD09PW1lKHRoaXMpKXRocm93IG5ldyBUeXBlRXJyb3IoIlJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS5waXBlVGhyb3VnaCBjYW5ub3QgYmUgdXNlZCBvbiBhIGxvY2tlZCBSZWFkYWJsZVN0cmVhbSIpO2lmKCEwPT09VCh0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRocm91Z2ggY2Fubm90IGJlIHVzZWQgb24gYSBsb2NrZWQgV3JpdGFibGVTdHJlYW0iKTtyZXR1cm4gdmUodGhpcyx0LGksYSxzLHUpLmNhdGNoKGZ1bmN0aW9uKCl7fSksb30sZS5wcm90b3R5cGUucGlwZVRvPWZ1bmN0aW9uKGUscil7dmFyIHQ9dm9pZCAwPT09cj97fTpyLG89dC5wcmV2ZW50Q2xvc2Usbj10LnByZXZlbnRBYm9ydCxpPXQucHJldmVudENhbmNlbCxhPXQuc2lnbmFsO3JldHVybiExPT09cGUodGhpcyk/UHJvbWlzZS5yZWplY3QoYnIoInBpcGVUbyIpKTohMT09PVAoZSk/UHJvbWlzZS5yZWplY3QobmV3IFR5cGVFcnJvcigiUmVhZGFibGVTdHJlYW0ucHJvdG90eXBlLnBpcGVUbydzIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBXcml0YWJsZVN0cmVhbSIpKToobz1Cb29sZWFuKG8pLG49Qm9vbGVhbihuKSxpPUJvb2xlYW4oaSksdm9pZCAwPT09YXx8aHIoYSk/ITA9PT1tZSh0aGlzKT9Qcm9taXNlLnJlamVjdChuZXcgVHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRvIGNhbm5vdCBiZSB1c2VkIG9uIGEgbG9ja2VkIFJlYWRhYmxlU3RyZWFtIikpOiEwPT09VChlKT9Qcm9taXNlLnJlamVjdChuZXcgVHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRvIGNhbm5vdCBiZSB1c2VkIG9uIGEgbG9ja2VkIFdyaXRhYmxlU3RyZWFtIikpOnZlKHRoaXMsZSxvLG4saSxhKTpQcm9taXNlLnJlamVjdChuZXcgVHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbS5wcm90b3R5cGUucGlwZVRvJ3Mgc2lnbmFsIG9wdGlvbiBtdXN0IGJlIGFuIEFib3J0U2lnbmFsIikpKX0sZS5wcm90b3R5cGUudGVlPWZ1bmN0aW9uKCl7aWYoITE9PT1wZSh0aGlzKSl0aHJvdyBicigidGVlIik7dmFyIGU9ZnVuY3Rpb24oZSxyKXt2YXIgdCxvLGksYSxzLHU9X2UoZSksbD0hMSxjPSExLGY9ITEsZD1uZXcgUHJvbWlzZShmdW5jdGlvbihlKXtzPWV9KTtmdW5jdGlvbiBfKCl7cmV0dXJuIExlKHUpLnRoZW4oZnVuY3Rpb24oZSl7aWYoITAhPT1sKXt2YXIgcj1lLmRvbmU7aWYoITA9PT1yKXJldHVybiExPT09YyYmSGUoaS5fcmVhZGFibGVTdHJlYW1Db250cm9sbGVyKSwhMT09PWYmJkhlKGEuX3JlYWRhYmxlU3RyZWFtQ29udHJvbGxlciksdm9pZChsPSEwKTt2YXIgdD1lLnZhbHVlLG89dCxuPXQ7ITE9PT1jJiZVZShpLl9yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIsbyksITE9PT1mJiZVZShhLl9yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIsbil9fSl9ZnVuY3Rpb24gaCgpe31yZXR1cm4gaT1oZShoLF8sZnVuY3Rpb24ocil7aWYoYz0hMCx0PXIsITA9PT1mKXt2YXIgaT1uKFt0LG9dKSxhPVNlKGUsaSk7cyhhKX1yZXR1cm4gZH0pLGE9aGUoaCxfLGZ1bmN0aW9uKHIpe2lmKGY9ITAsbz1yLCEwPT09Yyl7dmFyIGk9bihbdCxvXSksYT1TZShlLGkpO3MoYSl9cmV0dXJuIGR9KSx1Ll9jbG9zZWRQcm9taXNlLmNhdGNoKGZ1bmN0aW9uKGUpe1ZlKGkuX3JlYWRhYmxlU3RyZWFtQ29udHJvbGxlcixlKSxWZShhLl9yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIsZSl9KSxbaSxhXX0odGhpcyk7cmV0dXJuIG4oZSl9LGUucHJvdG90eXBlLmdldEl0ZXJhdG9yPWZ1bmN0aW9uKGUpe3ZhciByPSh2b2lkIDA9PT1lP3t9OmUpLnByZXZlbnRDYW5jZWw7aWYoITE9PT1wZSh0aGlzKSl0aHJvdyBicigiZ2V0SXRlcmF0b3IiKTt2YXIgdD1fZSh0aGlzKSxvPU9iamVjdC5jcmVhdGUoZGUpO3JldHVybiBvLl9hc3luY0l0ZXJhdG9yUmVhZGVyPXQsby5fcHJldmVudENhbmNlbD1Cb29sZWFuKHIpLG99LGV9KCksZGU9e25leHQ6ZnVuY3Rpb24oKXtpZighMT09PXllKHRoaXMpKXJldHVybiBQcm9taXNlLnJlamVjdChwcigibmV4dCIpKTt2YXIgZT10aGlzLl9hc3luY0l0ZXJhdG9yUmVhZGVyO3JldHVybiB2b2lkIDA9PT1lLl9vd25lclJlYWRhYmxlU3RyZWFtP1Byb21pc2UucmVqZWN0KG1yKCJpdGVyYXRlIikpOkxlKGUpLnRoZW4oZnVuY3Rpb24ocil7dmFyIHQ9ci5kb25lO3JldHVybiB0JiZGZShlKSxQZShyLnZhbHVlLHQsITApfSl9LHJldHVybjpmdW5jdGlvbihlKXtpZighMT09PXllKHRoaXMpKXJldHVybiBQcm9taXNlLnJlamVjdChwcigibmV4dCIpKTt2YXIgcj10aGlzLl9hc3luY0l0ZXJhdG9yUmVhZGVyO2lmKHZvaWQgMD09PXIuX293bmVyUmVhZGFibGVTdHJlYW0pcmV0dXJuIFByb21pc2UucmVqZWN0KG1yKCJmaW5pc2ggaXRlcmF0aW5nIikpO2lmKHIuX3JlYWRSZXF1ZXN0cy5sZW5ndGg+MClyZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IFR5cGVFcnJvcigiVHJpZWQgdG8gcmVsZWFzZSBhIHJlYWRlciBsb2NrIHdoZW4gdGhhdCByZWFkZXIgaGFzIHBlbmRpbmcgcmVhZCgpIGNhbGxzIHVuLXNldHRsZWQiKSk7aWYoITE9PT10aGlzLl9wcmV2ZW50Q2FuY2VsKXt2YXIgdD1JZShyLGUpO3JldHVybiBGZShyKSx0LnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gUGUoZSwhMCwhMCl9KX1yZXR1cm4gRmUociksUHJvbWlzZS5yZXNvbHZlKFBlKGUsITAsITApKX19O2Z1bmN0aW9uIF9lKGUscil7dm9pZCAwPT09ciYmKHI9ITEpO3ZhciB0PW5ldyBPZShlKTtyZXR1cm4gdC5fZm9yQXV0aG9yQ29kZT1yLHR9ZnVuY3Rpb24gaGUoZSxyLHQsbyxuKXt2b2lkIDA9PT1vJiYobz0xKSx2b2lkIDA9PT1uJiYobj1mdW5jdGlvbigpe3JldHVybiAxfSk7dmFyIGk9T2JqZWN0LmNyZWF0ZShmZS5wcm90b3R5cGUpO3JldHVybiBiZShpKSxKZShpLE9iamVjdC5jcmVhdGUoTWUucHJvdG90eXBlKSxlLHIsdCxvLG4pLGl9ZnVuY3Rpb24gYmUoZSl7ZS5fc3RhdGU9InJlYWRhYmxlIixlLl9yZWFkZXI9dm9pZCAwLGUuX3N0b3JlZEVycm9yPXZvaWQgMCxlLl9kaXN0dXJiZWQ9ITF9ZnVuY3Rpb24gcGUoZSl7cmV0dXJuISFvKGUpJiYhIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLCJfcmVhZGFibGVTdHJlYW1Db250cm9sbGVyIil9ZnVuY3Rpb24gbWUoZSl7cmV0dXJuIHZvaWQgMCE9PWUuX3JlYWRlcn1mdW5jdGlvbiB5ZShlKXtyZXR1cm4hIW8oZSkmJiEhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsIl9hc3luY0l0ZXJhdG9yUmVhZGVyIil9ZnVuY3Rpb24gdmUoZSxyLHQsbyxuLGkpe3ZhciBhPV9lKGUpLHM9UyhyKSx1PSExLGw9UHJvbWlzZS5yZXNvbHZlKCk7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGMsZil7dmFyIGQsYixwLG07aWYodm9pZCAwIT09aSl7aWYoZD1mdW5jdGlvbigpe3ZhciB0PW5ldyBET01FeGNlcHRpb24oIkFib3J0ZWQiLCJBYm9ydEVycm9yIiksaT1bXTshMT09PW8mJmkucHVzaChmdW5jdGlvbigpe3JldHVybiJ3cml0YWJsZSI9PT1yLl9zdGF0ZT9xKHIsdCk6UHJvbWlzZS5yZXNvbHZlKCl9KSwhMT09PW4mJmkucHVzaChmdW5jdGlvbigpe3JldHVybiJyZWFkYWJsZSI9PT1lLl9zdGF0ZT9TZShlLHQpOlByb21pc2UucmVzb2x2ZSgpfSksZyhmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihlLHIsdCl7dmFyIG8sbjt2b2lkIDA9PT10JiYodD12b2lkIDApO3ZhciBpPW5ldyBQcm9taXNlKGZ1bmN0aW9uKGUscil7bz1lLG49cn0pO3JldHVybiB2b2lkIDA9PT10JiYodD1mdW5jdGlvbihlKXt0aHJvdyBlfSksXyhlLGZ1bmN0aW9uKGUpe3RyeXt2YXIgdD1yKGUpO28odCl9Y2F0Y2goZSl7bihlKX19LGZ1bmN0aW9uKGUpe3RyeXt2YXIgcj10KGUpO28ocil9Y2F0Y2goZSl7bihlKX19KSxpfShpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZSgpfSksZnVuY3Rpb24oZSl7cmV0dXJuIGV9KX0sITAsdCl9LCEwPT09aS5hYm9ydGVkKXJldHVybiB2b2lkIGQoKTtpLmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IixkKX1pZih3KGUsYS5fY2xvc2VkUHJvbWlzZSxmdW5jdGlvbihlKXshMT09PW8/ZyhmdW5jdGlvbigpe3JldHVybiBxKHIsZSl9LCEwLGUpOlMoITAsZSl9KSx3KHIscy5fY2xvc2VkUHJvbWlzZSxmdW5jdGlvbihyKXshMT09PW4/ZyhmdW5jdGlvbigpe3JldHVybiBTZShlLHIpfSwhMCxyKTpTKCEwLHIpfSksYj1lLHA9YS5fY2xvc2VkUHJvbWlzZSxtPWZ1bmN0aW9uKCl7ITE9PT10P2coZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24oZSl7dmFyIHI9ZS5fb3duZXJXcml0YWJsZVN0cmVhbSx0PXIuX3N0YXRlO3JldHVybiEwPT09QShyKXx8ImNsb3NlZCI9PT10P1Byb21pc2UucmVzb2x2ZSgpOiJlcnJvcmVkIj09PXQ/UHJvbWlzZS5yZWplY3Qoci5fc3RvcmVkRXJyb3IpOkIoZSl9KHMpfSk6UygpfSwiY2xvc2VkIj09PWIuX3N0YXRlP20oKTpwLnRoZW4obSkuY2F0Y2goaCksITA9PT1BKHIpfHwiY2xvc2VkIj09PXIuX3N0YXRlKXt2YXIgeT1uZXcgVHlwZUVycm9yKCJ0aGUgZGVzdGluYXRpb24gd3JpdGFibGUgc3RyZWFtIGNsb3NlZCBiZWZvcmUgYWxsIGRhdGEgY291bGQgYmUgcGlwZWQgdG8gaXQiKTshMT09PW4/ZyhmdW5jdGlvbigpe3JldHVybiBTZShlLHkpfSwhMCx5KTpTKCEwLHkpfWZ1bmN0aW9uIHYoKXt2YXIgZT1sO3JldHVybiBsLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gZSE9PWw/digpOnZvaWQgMH0pfWZ1bmN0aW9uIHcoZSxyLHQpeyJlcnJvcmVkIj09PWUuX3N0YXRlP3QoZS5fc3RvcmVkRXJyb3IpOnIuY2F0Y2godCkuY2F0Y2goaCl9ZnVuY3Rpb24gZyhlLHQsbyl7ZnVuY3Rpb24gbigpe2UoKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIFIodCxvKX0sZnVuY3Rpb24oZSl7cmV0dXJuIFIoITAsZSl9KS5jYXRjaChoKX0hMCE9PXUmJih1PSEwLCJ3cml0YWJsZSI9PT1yLl9zdGF0ZSYmITE9PT1BKHIpP3YoKS50aGVuKG4pOm4oKSl9ZnVuY3Rpb24gUyhlLHQpeyEwIT09dSYmKHU9ITAsIndyaXRhYmxlIj09PXIuX3N0YXRlJiYhMT09PUEocik/digpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gUihlLHQpfSkuY2F0Y2goaCk6UihlLHQpKX1mdW5jdGlvbiBSKGUscil7TChzKSxGZShhKSx2b2lkIDAhPT1pJiZpLnJlbW92ZUV2ZW50TGlzdGVuZXIoImFib3J0IixkKSxlP2Yocik6Yyh2b2lkIDApfW5ldyBQcm9taXNlKGZ1bmN0aW9uKGUscil7IWZ1bmN0aW9uIHQobyl7bz9lKCk6KCEwPT09dT9Qcm9taXNlLnJlc29sdmUoITApOnMuX3JlYWR5UHJvbWlzZS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIExlKGEpLnRoZW4oZnVuY3Rpb24oZSl7dmFyIHI9ZS52YWx1ZSx0PWUuZG9uZTtyZXR1cm4hMD09PXR8fChsPU0ocyxyKS5jYXRjaChmdW5jdGlvbigpe30pLCExKX0pfSkpLnRoZW4odCxyKX0oITEpfSkuY2F0Y2goaCl9KX1mdW5jdGlvbiB3ZShlKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocix0KXt2YXIgbz17X3Jlc29sdmU6cixfcmVqZWN0OnR9O2UuX3JlYWRlci5fcmVhZEludG9SZXF1ZXN0cy5wdXNoKG8pfSl9ZnVuY3Rpb24gZ2UoZSl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHIsdCl7dmFyIG89e19yZXNvbHZlOnIsX3JlamVjdDp0fTtlLl9yZWFkZXIuX3JlYWRSZXF1ZXN0cy5wdXNoKG8pfSl9ZnVuY3Rpb24gU2UoZSxyKXtyZXR1cm4gZS5fZGlzdHVyYmVkPSEwLCJjbG9zZWQiPT09ZS5fc3RhdGU/UHJvbWlzZS5yZXNvbHZlKHZvaWQgMCk6ImVycm9yZWQiPT09ZS5fc3RhdGU/UHJvbWlzZS5yZWplY3QoZS5fc3RvcmVkRXJyb3IpOihSZShlKSxlLl9yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJbbGVdKHIpLnRoZW4oZnVuY3Rpb24oKXt9KSl9ZnVuY3Rpb24gUmUoZSl7ZS5fc3RhdGU9ImNsb3NlZCI7dmFyIHI9ZS5fcmVhZGVyO3ZvaWQgMCE9PXImJih6ZShyKSYmKHIuX3JlYWRSZXF1ZXN0cy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UuX3Jlc29sdmUoUGUodm9pZCAwLCEwLHIuX2ZvckF1dGhvckNvZGUpKX0pLHIuX3JlYWRSZXF1ZXN0cz1uZXcgYiksU3IocikpfWZ1bmN0aW9uIFBlKGUscix0KXt2YXIgbz1udWxsOyEwPT09dCYmKG89T2JqZWN0LnByb3RvdHlwZSk7dmFyIG49T2JqZWN0LmNyZWF0ZShvKTtyZXR1cm4gbi52YWx1ZT1lLG4uZG9uZT1yLG59ZnVuY3Rpb24gVGUoZSxyKXtlLl9zdGF0ZT0iZXJyb3JlZCIsZS5fc3RvcmVkRXJyb3I9cjt2YXIgdD1lLl9yZWFkZXI7dm9pZCAwIT09dCYmKHplKHQpPyh0Ll9yZWFkUmVxdWVzdHMuZm9yRWFjaChmdW5jdGlvbihlKXtlLl9yZWplY3Qocil9KSx0Ll9yZWFkUmVxdWVzdHM9bmV3IGIpOih0Ll9yZWFkSW50b1JlcXVlc3RzLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5fcmVqZWN0KHIpfSksdC5fcmVhZEludG9SZXF1ZXN0cz1uZXcgYiksZ3IodCxyKSl9ZnVuY3Rpb24gcWUoZSxyLHQpe3ZhciBvPWUuX3JlYWRlcjtvLl9yZWFkUmVxdWVzdHMuc2hpZnQoKS5fcmVzb2x2ZShQZShyLHQsby5fZm9yQXV0aG9yQ29kZSkpfWZ1bmN0aW9uIGplKGUpe3JldHVybiBlLl9yZWFkZXIuX3JlYWRJbnRvUmVxdWVzdHMubGVuZ3RofWZ1bmN0aW9uIEVlKGUpe3JldHVybiBlLl9yZWFkZXIuX3JlYWRSZXF1ZXN0cy5sZW5ndGh9ZnVuY3Rpb24gQ2UoZSl7dmFyIHI9ZS5fcmVhZGVyO3JldHVybiB2b2lkIDAhPT1yJiYhIWtlKHIpfWZ1bmN0aW9uIEFlKGUpe3ZhciByPWUuX3JlYWRlcjtyZXR1cm4gdm9pZCAwIT09ciYmISF6ZShyKX12b2lkIDAhPT1zZSYmT2JqZWN0LnNldFByb3RvdHlwZU9mKGRlLHNlKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZGUsIm5leHQiLHtlbnVtZXJhYmxlOiExfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGRlLCJyZXR1cm4iLHtlbnVtZXJhYmxlOiExfSksInN5bWJvbCI9PXR5cGVvZiByLmFzeW5jSXRlcmF0b3ImJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShmZS5wcm90b3R5cGUsci5hc3luY0l0ZXJhdG9yLHt2YWx1ZTpmZS5wcm90b3R5cGUuZ2V0SXRlcmF0b3IsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9KTt2YXIgT2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe2lmKCExPT09cGUoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIGNhbiBvbmx5IGJlIGNvbnN0cnVjdGVkIHdpdGggYSBSZWFkYWJsZVN0cmVhbSBpbnN0YW5jZSIpO2lmKCEwPT09bWUoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiVGhpcyBzdHJlYW0gaGFzIGFscmVhZHkgYmVlbiBsb2NrZWQgZm9yIGV4Y2x1c2l2ZSByZWFkaW5nIGJ5IGFub3RoZXIgcmVhZGVyIik7QmUodGhpcyxlKSx0aGlzLl9yZWFkUmVxdWVzdHM9bmV3IGJ9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiY2xvc2VkIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHplKHRoaXMpP3RoaXMuX2Nsb3NlZFByb21pc2U6UHJvbWlzZS5yZWplY3QoeXIoImNsb3NlZCIpKX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5jYW5jZWw9ZnVuY3Rpb24oZSl7cmV0dXJuIHplKHRoaXMpP3ZvaWQgMD09PXRoaXMuX293bmVyUmVhZGFibGVTdHJlYW0/UHJvbWlzZS5yZWplY3QobXIoImNhbmNlbCIpKTpJZSh0aGlzLGUpOlByb21pc2UucmVqZWN0KHlyKCJjYW5jZWwiKSl9LGUucHJvdG90eXBlLnJlYWQ9ZnVuY3Rpb24oKXtyZXR1cm4gemUodGhpcyk/dm9pZCAwPT09dGhpcy5fb3duZXJSZWFkYWJsZVN0cmVhbT9Qcm9taXNlLnJlamVjdChtcigicmVhZCBmcm9tIikpOkxlKHRoaXMpOlByb21pc2UucmVqZWN0KHlyKCJyZWFkIikpfSxlLnByb3RvdHlwZS5yZWxlYXNlTG9jaz1mdW5jdGlvbigpe2lmKCF6ZSh0aGlzKSl0aHJvdyB5cigicmVsZWFzZUxvY2siKTtpZih2b2lkIDAhPT10aGlzLl9vd25lclJlYWRhYmxlU3RyZWFtKXtpZih0aGlzLl9yZWFkUmVxdWVzdHMubGVuZ3RoPjApdGhyb3cgbmV3IFR5cGVFcnJvcigiVHJpZWQgdG8gcmVsZWFzZSBhIHJlYWRlciBsb2NrIHdoZW4gdGhhdCByZWFkZXIgaGFzIHBlbmRpbmcgcmVhZCgpIGNhbGxzIHVuLXNldHRsZWQiKTtGZSh0aGlzKX19LGV9KCksV2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe2lmKCFwZShlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIgY2FuIG9ubHkgYmUgY29uc3RydWN0ZWQgd2l0aCBhIFJlYWRhYmxlU3RyZWFtIGluc3RhbmNlIGdpdmVuIGEgYnl0ZSBzb3VyY2UiKTtpZighMT09PVplKGUuX3JlYWRhYmxlU3RyZWFtQ29udHJvbGxlcikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNvbnN0cnVjdCBhIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciBmb3IgYSBzdHJlYW0gbm90IGNvbnN0cnVjdGVkIHdpdGggYSBieXRlIHNvdXJjZSIpO2lmKG1lKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIlRoaXMgc3RyZWFtIGhhcyBhbHJlYWR5IGJlZW4gbG9ja2VkIGZvciBleGNsdXNpdmUgcmVhZGluZyBieSBhbm90aGVyIHJlYWRlciIpO0JlKHRoaXMsZSksdGhpcy5fcmVhZEludG9SZXF1ZXN0cz1uZXcgYn1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJjbG9zZWQiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4ga2UodGhpcyk/dGhpcy5fY2xvc2VkUHJvbWlzZTpQcm9taXNlLnJlamVjdChScigiY2xvc2VkIikpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmNhbmNlbD1mdW5jdGlvbihlKXtyZXR1cm4ga2UodGhpcyk/dm9pZCAwPT09dGhpcy5fb3duZXJSZWFkYWJsZVN0cmVhbT9Qcm9taXNlLnJlamVjdChtcigiY2FuY2VsIikpOkllKHRoaXMsZSk6UHJvbWlzZS5yZWplY3QoUnIoImNhbmNlbCIpKX0sZS5wcm90b3R5cGUucmVhZD1mdW5jdGlvbihlKXtyZXR1cm4ga2UodGhpcyk/dm9pZCAwPT09dGhpcy5fb3duZXJSZWFkYWJsZVN0cmVhbT9Qcm9taXNlLnJlamVjdChtcigicmVhZCBmcm9tIikpOkFycmF5QnVmZmVyLmlzVmlldyhlKT8oZS5idWZmZXIsMD09PWUuYnl0ZUxlbmd0aD9Qcm9taXNlLnJlamVjdChuZXcgVHlwZUVycm9yKCJ2aWV3IG11c3QgaGF2ZSBub24temVybyBieXRlTGVuZ3RoIikpOmZ1bmN0aW9uKGUscil7dmFyIHQ9ZS5fb3duZXJSZWFkYWJsZVN0cmVhbTtpZih0Ll9kaXN0dXJiZWQ9ITAsImVycm9yZWQiPT09dC5fc3RhdGUpcmV0dXJuIFByb21pc2UucmVqZWN0KHQuX3N0b3JlZEVycm9yKTtyZXR1cm4gZnVuY3Rpb24oZSxyKXt2YXIgdD1lLl9jb250cm9sbGVkUmVhZGFibGVCeXRlU3RyZWFtLG89MTtyLmNvbnN0cnVjdG9yIT09RGF0YVZpZXcmJihvPXIuY29uc3RydWN0b3IuQllURVNfUEVSX0VMRU1FTlQpO3ZhciBuPXIuY29uc3RydWN0b3IsaT17YnVmZmVyOmMoci5idWZmZXIpLGJ5dGVPZmZzZXQ6ci5ieXRlT2Zmc2V0LGJ5dGVMZW5ndGg6ci5ieXRlTGVuZ3RoLGJ5dGVzRmlsbGVkOjAsZWxlbWVudFNpemU6byxjdG9yOm4scmVhZGVyVHlwZToiYnlvYiJ9O2lmKGUuX3BlbmRpbmdQdWxsSW50b3MubGVuZ3RoPjApcmV0dXJuIGUuX3BlbmRpbmdQdWxsSW50b3MucHVzaChpKSx3ZSh0KTtpZigiY2xvc2VkIj09PXQuX3N0YXRlKXt2YXIgYT1uZXcgbihpLmJ1ZmZlcixpLmJ5dGVPZmZzZXQsMCk7cmV0dXJuIFByb21pc2UucmVzb2x2ZShQZShhLCEwLHQuX3JlYWRlci5fZm9yQXV0aG9yQ29kZSkpfWlmKGUuX3F1ZXVlVG90YWxTaXplPjApe2lmKCEwPT09bnIoZSxpKSl7dmFyIHM9dHIoaSk7cmV0dXJuIGFyKGUpLFByb21pc2UucmVzb2x2ZShQZShzLCExLHQuX3JlYWRlci5fZm9yQXV0aG9yQ29kZSkpfWlmKCEwPT09ZS5fY2xvc2VSZXF1ZXN0ZWQpe3ZhciB1PW5ldyBUeXBlRXJyb3IoIkluc3VmZmljaWVudCBieXRlcyB0byBmaWxsIGVsZW1lbnRzIGluIHRoZSBnaXZlbiBidWZmZXIiKTtyZXR1cm4gZHIoZSx1KSxQcm9taXNlLnJlamVjdCh1KX19ZS5fcGVuZGluZ1B1bGxJbnRvcy5wdXNoKGkpO3ZhciBsPXdlKHQpO3JldHVybiBlcihlKSxsfSh0Ll9yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIscil9KHRoaXMsZSkpOlByb21pc2UucmVqZWN0KG5ldyBUeXBlRXJyb3IoInZpZXcgbXVzdCBiZSBhbiBhcnJheSBidWZmZXIgdmlldyIpKTpQcm9taXNlLnJlamVjdChScigicmVhZCIpKX0sZS5wcm90b3R5cGUucmVsZWFzZUxvY2s9ZnVuY3Rpb24oKXtpZigha2UodGhpcykpdGhyb3cgUnIoInJlbGVhc2VMb2NrIik7aWYodm9pZCAwIT09dGhpcy5fb3duZXJSZWFkYWJsZVN0cmVhbSl7aWYodGhpcy5fcmVhZEludG9SZXF1ZXN0cy5sZW5ndGg+MCl0aHJvdyBuZXcgVHlwZUVycm9yKCJUcmllZCB0byByZWxlYXNlIGEgcmVhZGVyIGxvY2sgd2hlbiB0aGF0IHJlYWRlciBoYXMgcGVuZGluZyByZWFkKCkgY2FsbHMgdW4tc2V0dGxlZCIpO0ZlKHRoaXMpfX0sZX0oKTtmdW5jdGlvbiBrZShlKXtyZXR1cm4hIW8oZSkmJiEhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsIl9yZWFkSW50b1JlcXVlc3RzIil9ZnVuY3Rpb24gemUoZSl7cmV0dXJuISFvKGUpJiYhIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLCJfcmVhZFJlcXVlc3RzIil9ZnVuY3Rpb24gQmUoZSxyKXtlLl9mb3JBdXRob3JDb2RlPSEwLGUuX293bmVyUmVhZGFibGVTdHJlYW09cixyLl9yZWFkZXI9ZSwicmVhZGFibGUiPT09ci5fc3RhdGU/dnIoZSk6ImNsb3NlZCI9PT1yLl9zdGF0ZT9mdW5jdGlvbihlKXt2cihlKSxTcihlKX0oZSk6d3IoZSxyLl9zdG9yZWRFcnJvcil9ZnVuY3Rpb24gSWUoZSxyKXtyZXR1cm4gU2UoZS5fb3duZXJSZWFkYWJsZVN0cmVhbSxyKX1mdW5jdGlvbiBGZShlKXsicmVhZGFibGUiPT09ZS5fb3duZXJSZWFkYWJsZVN0cmVhbS5fc3RhdGU/Z3IoZSxuZXcgVHlwZUVycm9yKCJSZWFkZXIgd2FzIHJlbGVhc2VkIGFuZCBjYW4gbm8gbG9uZ2VyIGJlIHVzZWQgdG8gbW9uaXRvciB0aGUgc3RyZWFtJ3MgY2xvc2VkbmVzcyIpKTpmdW5jdGlvbihlLHIpe3dyKGUscil9KGUsbmV3IFR5cGVFcnJvcigiUmVhZGVyIHdhcyByZWxlYXNlZCBhbmQgY2FuIG5vIGxvbmdlciBiZSB1c2VkIHRvIG1vbml0b3IgdGhlIHN0cmVhbSdzIGNsb3NlZG5lc3MiKSksZS5fb3duZXJSZWFkYWJsZVN0cmVhbS5fcmVhZGVyPXZvaWQgMCxlLl9vd25lclJlYWRhYmxlU3RyZWFtPXZvaWQgMH1mdW5jdGlvbiBMZShlKXt2YXIgcj1lLl9vd25lclJlYWRhYmxlU3RyZWFtO3JldHVybiByLl9kaXN0dXJiZWQ9ITAsImNsb3NlZCI9PT1yLl9zdGF0ZT9Qcm9taXNlLnJlc29sdmUoUGUodm9pZCAwLCEwLGUuX2ZvckF1dGhvckNvZGUpKToiZXJyb3JlZCI9PT1yLl9zdGF0ZT9Qcm9taXNlLnJlamVjdChyLl9zdG9yZWRFcnJvcik6ci5fcmVhZGFibGVTdHJlYW1Db250cm9sbGVyW2NlXSgpfXZhciBNZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt0aHJvdyBuZXcgVHlwZUVycm9yfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImRlc2lyZWRTaXplIix7Z2V0OmZ1bmN0aW9uKCl7aWYoITE9PT14ZSh0aGlzKSl0aHJvdyBQcigiZGVzaXJlZFNpemUiKTtyZXR1cm4gUWUodGhpcyl9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuY2xvc2U9ZnVuY3Rpb24oKXtpZighMT09PXhlKHRoaXMpKXRocm93IFByKCJjbG9zZSIpO2lmKCExPT09R2UodGhpcykpdGhyb3cgbmV3IFR5cGVFcnJvcigiVGhlIHN0cmVhbSBpcyBub3QgaW4gYSBzdGF0ZSB0aGF0IHBlcm1pdHMgY2xvc2UiKTtIZSh0aGlzKX0sZS5wcm90b3R5cGUuZW5xdWV1ZT1mdW5jdGlvbihlKXtpZighMT09PXhlKHRoaXMpKXRocm93IFByKCJlbnF1ZXVlIik7aWYoITE9PT1HZSh0aGlzKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGUgc3RyZWFtIGlzIG5vdCBpbiBhIHN0YXRlIHRoYXQgcGVybWl0cyBlbnF1ZXVlIik7cmV0dXJuIFVlKHRoaXMsZSl9LGUucHJvdG90eXBlLmVycm9yPWZ1bmN0aW9uKGUpe2lmKCExPT09eGUodGhpcykpdGhyb3cgUHIoImVycm9yIik7VmUodGhpcyxlKX0sZS5wcm90b3R5cGVbbGVdPWZ1bmN0aW9uKGUpe3kodGhpcyk7dmFyIHI9dGhpcy5fY2FuY2VsQWxnb3JpdGhtKGUpO3JldHVybiBZZSh0aGlzKSxyfSxlLnByb3RvdHlwZVtjZV09ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9jb250cm9sbGVkUmVhZGFibGVTdHJlYW07aWYodGhpcy5fcXVldWUubGVuZ3RoPjApe3ZhciByPXAodGhpcyk7cmV0dXJuITA9PT10aGlzLl9jbG9zZVJlcXVlc3RlZCYmMD09PXRoaXMuX3F1ZXVlLmxlbmd0aD8oWWUodGhpcyksUmUoZSkpOkRlKHRoaXMpLFByb21pc2UucmVzb2x2ZShQZShyLCExLGUuX3JlYWRlci5fZm9yQXV0aG9yQ29kZSkpfXZhciB0PWdlKGUpO3JldHVybiBEZSh0aGlzKSx0fSxlfSgpO2Z1bmN0aW9uIHhlKGUpe3JldHVybiEhbyhlKSYmISFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSwiX2NvbnRyb2xsZWRSZWFkYWJsZVN0cmVhbSIpfWZ1bmN0aW9uIERlKGUpeyExIT09TmUoZSkmJighMCE9PWUuX3B1bGxpbmc/KGUuX3B1bGxpbmc9ITAsZS5fcHVsbEFsZ29yaXRobSgpLnRoZW4oZnVuY3Rpb24oKXtlLl9wdWxsaW5nPSExLCEwPT09ZS5fcHVsbEFnYWluJiYoZS5fcHVsbEFnYWluPSExLERlKGUpKX0sZnVuY3Rpb24ocil7VmUoZSxyKX0pLmNhdGNoKGgpKTplLl9wdWxsQWdhaW49ITApfWZ1bmN0aW9uIE5lKGUpe3ZhciByPWUuX2NvbnRyb2xsZWRSZWFkYWJsZVN0cmVhbTtyZXR1cm4hMSE9PUdlKGUpJiYoITEhPT1lLl9zdGFydGVkJiYoITA9PT1tZShyKSYmRWUocik+MHx8UWUoZSk+MCkpfWZ1bmN0aW9uIFllKGUpe2UuX3B1bGxBbGdvcml0aG09dm9pZCAwLGUuX2NhbmNlbEFsZ29yaXRobT12b2lkIDAsZS5fc3RyYXRlZ3lTaXplQWxnb3JpdGhtPXZvaWQgMH1mdW5jdGlvbiBIZShlKXt2YXIgcj1lLl9jb250cm9sbGVkUmVhZGFibGVTdHJlYW07ZS5fY2xvc2VSZXF1ZXN0ZWQ9ITAsMD09PWUuX3F1ZXVlLmxlbmd0aCYmKFllKGUpLFJlKHIpKX1mdW5jdGlvbiBVZShlLHIpe3ZhciB0PWUuX2NvbnRyb2xsZWRSZWFkYWJsZVN0cmVhbTtpZighMD09PW1lKHQpJiZFZSh0KT4wKXFlKHQsciwhMSk7ZWxzZXt2YXIgbz12b2lkIDA7dHJ5e289ZS5fc3RyYXRlZ3lTaXplQWxnb3JpdGhtKHIpfWNhdGNoKHIpe3Rocm93IFZlKGUscikscn10cnl7bShlLHIsbyl9Y2F0Y2gocil7dGhyb3cgVmUoZSxyKSxyfX1EZShlKX1mdW5jdGlvbiBWZShlLHIpe3ZhciB0PWUuX2NvbnRyb2xsZWRSZWFkYWJsZVN0cmVhbTsicmVhZGFibGUiPT09dC5fc3RhdGUmJih5KGUpLFllKGUpLFRlKHQscikpfWZ1bmN0aW9uIFFlKGUpe3ZhciByPWUuX2NvbnRyb2xsZWRSZWFkYWJsZVN0cmVhbS5fc3RhdGU7cmV0dXJuImVycm9yZWQiPT09cj9udWxsOiJjbG9zZWQiPT09cj8wOmUuX3N0cmF0ZWd5SFdNLWUuX3F1ZXVlVG90YWxTaXplfWZ1bmN0aW9uIEdlKGUpe3ZhciByPWUuX2NvbnRyb2xsZWRSZWFkYWJsZVN0cmVhbS5fc3RhdGU7cmV0dXJuITE9PT1lLl9jbG9zZVJlcXVlc3RlZCYmInJlYWRhYmxlIj09PXJ9ZnVuY3Rpb24gSmUoZSxyLHQsbyxuLGksYSl7ci5fY29udHJvbGxlZFJlYWRhYmxlU3RyZWFtPWUsci5fcXVldWU9dm9pZCAwLHIuX3F1ZXVlVG90YWxTaXplPXZvaWQgMCx5KHIpLHIuX3N0YXJ0ZWQ9ITEsci5fY2xvc2VSZXF1ZXN0ZWQ9ITEsci5fcHVsbEFnYWluPSExLHIuX3B1bGxpbmc9ITEsci5fc3RyYXRlZ3lTaXplQWxnb3JpdGhtPWEsci5fc3RyYXRlZ3lIV009aSxyLl9wdWxsQWxnb3JpdGhtPW8sci5fY2FuY2VsQWxnb3JpdGhtPW4sZS5fcmVhZGFibGVTdHJlYW1Db250cm9sbGVyPXI7dmFyIHM9dCgpO1Byb21pc2UucmVzb2x2ZShzKS50aGVuKGZ1bmN0aW9uKCl7ci5fc3RhcnRlZD0hMCxEZShyKX0sZnVuY3Rpb24oZSl7VmUocixlKX0pLmNhdGNoKGgpfXZhciBLZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0IGNhbm5vdCBiZSB1c2VkIGRpcmVjdGx5Iil9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwidmlldyIse2dldDpmdW5jdGlvbigpe2lmKCExPT09JGUodGhpcykpdGhyb3cgVHIoInZpZXciKTtyZXR1cm4gdGhpcy5fdmlld30sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlLnByb3RvdHlwZS5yZXNwb25kPWZ1bmN0aW9uKGUpe2lmKCExPT09JGUodGhpcykpdGhyb3cgVHIoInJlc3BvbmQiKTtpZih2b2lkIDA9PT10aGlzLl9hc3NvY2lhdGVkUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlcil0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGlzIEJZT0IgcmVxdWVzdCBoYXMgYmVlbiBpbnZhbGlkYXRlZCIpO3RoaXMuX3ZpZXcuYnVmZmVyLGZ1bmN0aW9uKGUscil7aWYoITE9PT1pKHI9TnVtYmVyKHIpKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiYnl0ZXNXcml0dGVuIG11c3QgYmUgYSBmaW5pdGUiKTtscihlLHIpfSh0aGlzLl9hc3NvY2lhdGVkUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlcixlKX0sZS5wcm90b3R5cGUucmVzcG9uZFdpdGhOZXdWaWV3PWZ1bmN0aW9uKGUpe2lmKCExPT09JGUodGhpcykpdGhyb3cgVHIoInJlc3BvbmQiKTtpZih2b2lkIDA9PT10aGlzLl9hc3NvY2lhdGVkUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlcil0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGlzIEJZT0IgcmVxdWVzdCBoYXMgYmVlbiBpbnZhbGlkYXRlZCIpO2lmKCFBcnJheUJ1ZmZlci5pc1ZpZXcoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiWW91IGNhbiBvbmx5IHJlc3BvbmQgd2l0aCBhcnJheSBidWZmZXIgdmlld3MiKTtlLmJ1ZmZlcixmdW5jdGlvbihlLHIpe3ZhciB0PWUuX3BlbmRpbmdQdWxsSW50b3MucGVlaygpO2lmKHQuYnl0ZU9mZnNldCt0LmJ5dGVzRmlsbGVkIT09ci5ieXRlT2Zmc2V0KXRocm93IG5ldyBSYW5nZUVycm9yKCJUaGUgcmVnaW9uIHNwZWNpZmllZCBieSB2aWV3IGRvZXMgbm90IG1hdGNoIGJ5b2JSZXF1ZXN0Iik7aWYodC5ieXRlTGVuZ3RoIT09ci5ieXRlTGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJUaGUgYnVmZmVyIG9mIHZpZXcgaGFzIGRpZmZlcmVudCBjYXBhY2l0eSB0aGFuIGJ5b2JSZXF1ZXN0Iik7dC5idWZmZXI9ci5idWZmZXIsbHIoZSxyLmJ5dGVMZW5ndGgpfSh0aGlzLl9hc3NvY2lhdGVkUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlcixlKX0sZX0oKSxYZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyIGNvbnN0cnVjdG9yIGNhbm5vdCBiZSB1c2VkIGRpcmVjdGx5Iil9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwiYnlvYlJlcXVlc3QiLHtnZXQ6ZnVuY3Rpb24oKXtpZighMT09PVplKHRoaXMpKXRocm93IHFyKCJieW9iUmVxdWVzdCIpO2lmKHZvaWQgMD09PXRoaXMuX2J5b2JSZXF1ZXN0JiZ0aGlzLl9wZW5kaW5nUHVsbEludG9zLmxlbmd0aD4wKXt2YXIgZT10aGlzLl9wZW5kaW5nUHVsbEludG9zLnBlZWsoKSxyPW5ldyBVaW50OEFycmF5KGUuYnVmZmVyLGUuYnl0ZU9mZnNldCtlLmJ5dGVzRmlsbGVkLGUuYnl0ZUxlbmd0aC1lLmJ5dGVzRmlsbGVkKSx0PU9iamVjdC5jcmVhdGUoS2UucHJvdG90eXBlKTshZnVuY3Rpb24oZSxyLHQpe2UuX2Fzc29jaWF0ZWRSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyPXIsZS5fdmlldz10fSh0LHRoaXMsciksdGhpcy5fYnlvYlJlcXVlc3Q9dH1yZXR1cm4gdGhpcy5fYnlvYlJlcXVlc3R9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJkZXNpcmVkU2l6ZSIse2dldDpmdW5jdGlvbigpe2lmKCExPT09WmUodGhpcykpdGhyb3cgcXIoImRlc2lyZWRTaXplIik7cmV0dXJuIF9yKHRoaXMpfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLGUucHJvdG90eXBlLmNsb3NlPWZ1bmN0aW9uKCl7aWYoITE9PT1aZSh0aGlzKSl0aHJvdyBxcigiY2xvc2UiKTtpZighMD09PXRoaXMuX2Nsb3NlUmVxdWVzdGVkKXRocm93IG5ldyBUeXBlRXJyb3IoIlRoZSBzdHJlYW0gaGFzIGFscmVhZHkgYmVlbiBjbG9zZWQ7IGRvIG5vdCBjbG9zZSBpdCBhZ2FpbiEiKTt2YXIgZT10aGlzLl9jb250cm9sbGVkUmVhZGFibGVCeXRlU3RyZWFtLl9zdGF0ZTtpZigicmVhZGFibGUiIT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGUgc3RyZWFtIChpbiAiK2UrIiBzdGF0ZSkgaXMgbm90IGluIHRoZSByZWFkYWJsZSBzdGF0ZSBhbmQgY2Fubm90IGJlIGNsb3NlZCIpOyFmdW5jdGlvbihlKXt2YXIgcj1lLl9jb250cm9sbGVkUmVhZGFibGVCeXRlU3RyZWFtO2lmKGUuX3F1ZXVlVG90YWxTaXplPjApcmV0dXJuIHZvaWQoZS5fY2xvc2VSZXF1ZXN0ZWQ9ITApO2lmKGUuX3BlbmRpbmdQdWxsSW50b3MubGVuZ3RoPjApe3ZhciB0PWUuX3BlbmRpbmdQdWxsSW50b3MucGVlaygpO2lmKHQuYnl0ZXNGaWxsZWQ+MCl7dmFyIG89bmV3IFR5cGVFcnJvcigiSW5zdWZmaWNpZW50IGJ5dGVzIHRvIGZpbGwgZWxlbWVudHMgaW4gdGhlIGdpdmVuIGJ1ZmZlciIpO3Rocm93IGRyKGUsbyksb319ZnIoZSksUmUocil9KHRoaXMpfSxlLnByb3RvdHlwZS5lbnF1ZXVlPWZ1bmN0aW9uKGUpe2lmKCExPT09WmUodGhpcykpdGhyb3cgcXIoImVucXVldWUiKTtpZighMD09PXRoaXMuX2Nsb3NlUmVxdWVzdGVkKXRocm93IG5ldyBUeXBlRXJyb3IoInN0cmVhbSBpcyBjbG9zZWQgb3IgZHJhaW5pbmciKTt2YXIgcj10aGlzLl9jb250cm9sbGVkUmVhZGFibGVCeXRlU3RyZWFtLl9zdGF0ZTtpZigicmVhZGFibGUiIT09cil0aHJvdyBuZXcgVHlwZUVycm9yKCJUaGUgc3RyZWFtIChpbiAiK3IrIiBzdGF0ZSkgaXMgbm90IGluIHRoZSByZWFkYWJsZSBzdGF0ZSBhbmQgY2Fubm90IGJlIGVucXVldWVkIHRvIik7aWYoIUFycmF5QnVmZmVyLmlzVmlldyhlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJZb3UgY2FuIG9ubHkgZW5xdWV1ZSBhcnJheSBidWZmZXIgdmlld3Mgd2hlbiB1c2luZyBhIFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIiKTtlLmJ1ZmZlcixmdW5jdGlvbihlLHIpe3ZhciB0PWUuX2NvbnRyb2xsZWRSZWFkYWJsZUJ5dGVTdHJlYW0sbz1yLmJ1ZmZlcixuPXIuYnl0ZU9mZnNldCxpPXIuYnl0ZUxlbmd0aCxhPWMobyk7aWYoITA9PT1BZSh0KSlpZigwPT09RWUodCkpb3IoZSxhLG4saSk7ZWxzZXt2YXIgcz1uZXcgVWludDhBcnJheShhLG4saSk7cWUodCxzLCExKX1lbHNlITA9PT1DZSh0KT8ob3IoZSxhLG4saSksdXIoZSkpOm9yKGUsYSxuLGkpO2VyKGUpfSh0aGlzLGUpfSxlLnByb3RvdHlwZS5lcnJvcj1mdW5jdGlvbihlKXtpZighMT09PVplKHRoaXMpKXRocm93IHFyKCJlcnJvciIpO2RyKHRoaXMsZSl9LGUucHJvdG90eXBlW2xlXT1mdW5jdGlvbihlKXt0aGlzLl9wZW5kaW5nUHVsbEludG9zLmxlbmd0aD4wJiYodGhpcy5fcGVuZGluZ1B1bGxJbnRvcy5wZWVrKCkuYnl0ZXNGaWxsZWQ9MCk7eSh0aGlzKTt2YXIgcj10aGlzLl9jYW5jZWxBbGdvcml0aG0oZSk7cmV0dXJuIGZyKHRoaXMpLHJ9LGUucHJvdG90eXBlW2NlXT1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2NvbnRyb2xsZWRSZWFkYWJsZUJ5dGVTdHJlYW07aWYodGhpcy5fcXVldWVUb3RhbFNpemU+MCl7dmFyIHI9dGhpcy5fcXVldWUuc2hpZnQoKTt0aGlzLl9xdWV1ZVRvdGFsU2l6ZS09ci5ieXRlTGVuZ3RoLGFyKHRoaXMpO3ZhciB0PXZvaWQgMDt0cnl7dD1uZXcgVWludDhBcnJheShyLmJ1ZmZlcixyLmJ5dGVPZmZzZXQsci5ieXRlTGVuZ3RoKX1jYXRjaChlKXtyZXR1cm4gUHJvbWlzZS5yZWplY3QoZSl9cmV0dXJuIFByb21pc2UucmVzb2x2ZShQZSh0LCExLGUuX3JlYWRlci5fZm9yQXV0aG9yQ29kZSkpfXZhciBvPXRoaXMuX2F1dG9BbGxvY2F0ZUNodW5rU2l6ZTtpZih2b2lkIDAhPT1vKXt2YXIgbj12b2lkIDA7dHJ5e249bmV3IEFycmF5QnVmZmVyKG8pfWNhdGNoKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX12YXIgaT17YnVmZmVyOm4sYnl0ZU9mZnNldDowLGJ5dGVMZW5ndGg6byxieXRlc0ZpbGxlZDowLGVsZW1lbnRTaXplOjEsY3RvcjpVaW50OEFycmF5LHJlYWRlclR5cGU6ImRlZmF1bHQifTt0aGlzLl9wZW5kaW5nUHVsbEludG9zLnB1c2goaSl9dmFyIGE9Z2UoZSk7cmV0dXJuIGVyKHRoaXMpLGF9LGV9KCk7ZnVuY3Rpb24gWmUoZSl7cmV0dXJuISFvKGUpJiYhIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLCJfY29udHJvbGxlZFJlYWRhYmxlQnl0ZVN0cmVhbSIpfWZ1bmN0aW9uICRlKGUpe3JldHVybiEhbyhlKSYmISFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSwiX2Fzc29jaWF0ZWRSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyIil9ZnVuY3Rpb24gZXIoZSl7ITEhPT1mdW5jdGlvbihlKXt2YXIgcj1lLl9jb250cm9sbGVkUmVhZGFibGVCeXRlU3RyZWFtO2lmKCJyZWFkYWJsZSIhPT1yLl9zdGF0ZSlyZXR1cm4hMTtpZighMD09PWUuX2Nsb3NlUmVxdWVzdGVkKXJldHVybiExO2lmKCExPT09ZS5fc3RhcnRlZClyZXR1cm4hMTtpZighMD09PUFlKHIpJiZFZShyKT4wKXJldHVybiEwO2lmKCEwPT09Q2UocikmJmplKHIpPjApcmV0dXJuITA7aWYoX3IoZSk+MClyZXR1cm4hMDtyZXR1cm4hMX0oZSkmJighMCE9PWUuX3B1bGxpbmc/KGUuX3B1bGxpbmc9ITAsZS5fcHVsbEFsZ29yaXRobSgpLnRoZW4oZnVuY3Rpb24oKXtlLl9wdWxsaW5nPSExLCEwPT09ZS5fcHVsbEFnYWluJiYoZS5fcHVsbEFnYWluPSExLGVyKGUpKX0sZnVuY3Rpb24ocil7ZHIoZSxyKX0pLmNhdGNoKGgpKTplLl9wdWxsQWdhaW49ITApfWZ1bmN0aW9uIHJyKGUscil7dmFyIHQ9ITE7ImNsb3NlZCI9PT1lLl9zdGF0ZSYmKHQ9ITApO3ZhciBvPXRyKHIpOyJkZWZhdWx0Ij09PXIucmVhZGVyVHlwZT9xZShlLG8sdCk6ZnVuY3Rpb24oZSxyLHQpe3ZhciBvPWUuX3JlYWRlcjtvLl9yZWFkSW50b1JlcXVlc3RzLnNoaWZ0KCkuX3Jlc29sdmUoUGUocix0LG8uX2ZvckF1dGhvckNvZGUpKX0oZSxvLHQpfWZ1bmN0aW9uIHRyKGUpe3ZhciByPWUuYnl0ZXNGaWxsZWQsdD1lLmVsZW1lbnRTaXplO3JldHVybiBuZXcgZS5jdG9yKGUuYnVmZmVyLGUuYnl0ZU9mZnNldCxyL3QpfWZ1bmN0aW9uIG9yKGUscix0LG8pe2UuX3F1ZXVlLnB1c2goe2J1ZmZlcjpyLGJ5dGVPZmZzZXQ6dCxieXRlTGVuZ3RoOm99KSxlLl9xdWV1ZVRvdGFsU2l6ZSs9b31mdW5jdGlvbiBucihlLHIpe3ZhciB0PXIuZWxlbWVudFNpemUsbz1yLmJ5dGVzRmlsbGVkLXIuYnl0ZXNGaWxsZWQldCxuPU1hdGgubWluKGUuX3F1ZXVlVG90YWxTaXplLHIuYnl0ZUxlbmd0aC1yLmJ5dGVzRmlsbGVkKSxpPXIuYnl0ZXNGaWxsZWQrbixhPWktaSV0LHM9bix1PSExO2E+byYmKHM9YS1yLmJ5dGVzRmlsbGVkLHU9ITApO2Zvcih2YXIgbCxjLGYsZCxfLGg9ZS5fcXVldWU7cz4wOyl7dmFyIGI9aC5wZWVrKCkscD1NYXRoLm1pbihzLGIuYnl0ZUxlbmd0aCksbT1yLmJ5dGVPZmZzZXQrci5ieXRlc0ZpbGxlZDtsPXIuYnVmZmVyLGM9bSxmPWIuYnVmZmVyLGQ9Yi5ieXRlT2Zmc2V0LF89cCxuZXcgVWludDhBcnJheShsKS5zZXQobmV3IFVpbnQ4QXJyYXkoZixkLF8pLGMpLGIuYnl0ZUxlbmd0aD09PXA/aC5zaGlmdCgpOihiLmJ5dGVPZmZzZXQrPXAsYi5ieXRlTGVuZ3RoLT1wKSxlLl9xdWV1ZVRvdGFsU2l6ZS09cCxpcihlLHAscikscy09cH1yZXR1cm4gdX1mdW5jdGlvbiBpcihlLHIsdCl7c3IoZSksdC5ieXRlc0ZpbGxlZCs9cn1mdW5jdGlvbiBhcihlKXswPT09ZS5fcXVldWVUb3RhbFNpemUmJiEwPT09ZS5fY2xvc2VSZXF1ZXN0ZWQ/KGZyKGUpLFJlKGUuX2NvbnRyb2xsZWRSZWFkYWJsZUJ5dGVTdHJlYW0pKTplcihlKX1mdW5jdGlvbiBzcihlKXt2b2lkIDAhPT1lLl9ieW9iUmVxdWVzdCYmKGUuX2J5b2JSZXF1ZXN0Ll9hc3NvY2lhdGVkUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlcj12b2lkIDAsZS5fYnlvYlJlcXVlc3QuX3ZpZXc9dm9pZCAwLGUuX2J5b2JSZXF1ZXN0PXZvaWQgMCl9ZnVuY3Rpb24gdXIoZSl7Zm9yKDtlLl9wZW5kaW5nUHVsbEludG9zLmxlbmd0aD4wOyl7aWYoMD09PWUuX3F1ZXVlVG90YWxTaXplKXJldHVybjt2YXIgcj1lLl9wZW5kaW5nUHVsbEludG9zLnBlZWsoKTshMD09PW5yKGUscikmJihjcihlKSxycihlLl9jb250cm9sbGVkUmVhZGFibGVCeXRlU3RyZWFtLHIpKX19ZnVuY3Rpb24gbHIoZSxyKXt2YXIgdD1lLl9wZW5kaW5nUHVsbEludG9zLnBlZWsoKTtpZigiY2xvc2VkIj09PWUuX2NvbnRyb2xsZWRSZWFkYWJsZUJ5dGVTdHJlYW0uX3N0YXRlKXtpZigwIT09cil0aHJvdyBuZXcgVHlwZUVycm9yKCJieXRlc1dyaXR0ZW4gbXVzdCBiZSAwIHdoZW4gY2FsbGluZyByZXNwb25kKCkgb24gYSBjbG9zZWQgc3RyZWFtIik7IWZ1bmN0aW9uKGUscil7ci5idWZmZXI9YyhyLmJ1ZmZlcik7dmFyIHQ9ZS5fY29udHJvbGxlZFJlYWRhYmxlQnl0ZVN0cmVhbTtpZighMD09PUNlKHQpKWZvcig7amUodCk+MDspcnIodCxjcihlKSl9KGUsdCl9ZWxzZSFmdW5jdGlvbihlLHIsdCl7aWYodC5ieXRlc0ZpbGxlZCtyPnQuYnl0ZUxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiYnl0ZXNXcml0dGVuIG91dCBvZiByYW5nZSIpO2lmKGlyKGUscix0KSwhKHQuYnl0ZXNGaWxsZWQ8dC5lbGVtZW50U2l6ZSkpe2NyKGUpO3ZhciBvPXQuYnl0ZXNGaWxsZWQldC5lbGVtZW50U2l6ZTtpZihvPjApe3ZhciBuPXQuYnl0ZU9mZnNldCt0LmJ5dGVzRmlsbGVkLGk9dC5idWZmZXIuc2xpY2Uobi1vLG4pO29yKGUsaSwwLGkuYnl0ZUxlbmd0aCl9dC5idWZmZXI9Yyh0LmJ1ZmZlciksdC5ieXRlc0ZpbGxlZC09byxycihlLl9jb250cm9sbGVkUmVhZGFibGVCeXRlU3RyZWFtLHQpLHVyKGUpfX0oZSxyLHQpO2VyKGUpfWZ1bmN0aW9uIGNyKGUpe3ZhciByPWUuX3BlbmRpbmdQdWxsSW50b3Muc2hpZnQoKTtyZXR1cm4gc3IoZSkscn1mdW5jdGlvbiBmcihlKXtlLl9wdWxsQWxnb3JpdGhtPXZvaWQgMCxlLl9jYW5jZWxBbGdvcml0aG09dm9pZCAwfWZ1bmN0aW9uIGRyKGUscil7dmFyIHQ9ZS5fY29udHJvbGxlZFJlYWRhYmxlQnl0ZVN0cmVhbTsicmVhZGFibGUiPT09dC5fc3RhdGUmJighZnVuY3Rpb24oZSl7c3IoZSksZS5fcGVuZGluZ1B1bGxJbnRvcz1uZXcgYn0oZSkseShlKSxmcihlKSxUZSh0LHIpKX1mdW5jdGlvbiBfcihlKXt2YXIgcj1lLl9jb250cm9sbGVkUmVhZGFibGVCeXRlU3RyZWFtLl9zdGF0ZTtyZXR1cm4iZXJyb3JlZCI9PT1yP251bGw6ImNsb3NlZCI9PT1yPzA6ZS5fc3RyYXRlZ3lIV00tZS5fcXVldWVUb3RhbFNpemV9ZnVuY3Rpb24gaHIoZSl7aWYoIm9iamVjdCIhPXR5cGVvZiBlfHxudWxsPT09ZSlyZXR1cm4hMTt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEFib3J0U2lnbmFsLnByb3RvdHlwZSwiYWJvcnRlZCIpLmdldDt0cnl7cmV0dXJuIHIuY2FsbChlKSwhMH1jYXRjaChlKXtyZXR1cm4hMX19ZnVuY3Rpb24gYnIoZSl7cmV0dXJuIG5ldyBUeXBlRXJyb3IoIlJlYWRhYmxlU3RyZWFtLnByb3RvdHlwZS4iK2UrIiBjYW4gb25seSBiZSB1c2VkIG9uIGEgUmVhZGFibGVTdHJlYW0iKX1mdW5jdGlvbiBwcihlKXtyZXR1cm4gbmV3IFR5cGVFcnJvcigiUmVhZGFibGVTdHJlYW1Bc3luY0l0ZXJhdG9yLiIrZSsiIGNhbiBvbmx5IGJlIHVzZWQgb24gYSBSZWFkYWJsZVN0ZWFtQXN5bmNJdGVyYXRvciIpfWZ1bmN0aW9uIG1yKGUpe3JldHVybiBuZXcgVHlwZUVycm9yKCJDYW5ub3QgIitlKyIgYSBzdHJlYW0gdXNpbmcgYSByZWxlYXNlZCByZWFkZXIiKX1mdW5jdGlvbiB5cihlKXtyZXR1cm4gbmV3IFR5cGVFcnJvcigiUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyLnByb3RvdHlwZS4iK2UrIiBjYW4gb25seSBiZSB1c2VkIG9uIGEgUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIil9ZnVuY3Rpb24gdnIoZSl7ZS5fY2xvc2VkUHJvbWlzZT1uZXcgUHJvbWlzZShmdW5jdGlvbihyLHQpe2UuX2Nsb3NlZFByb21pc2VfcmVzb2x2ZT1yLGUuX2Nsb3NlZFByb21pc2VfcmVqZWN0PXR9KX1mdW5jdGlvbiB3cihlLHIpe3ZyKGUpLGdyKGUscil9ZnVuY3Rpb24gZ3IoZSxyKXtlLl9jbG9zZWRQcm9taXNlLmNhdGNoKGZ1bmN0aW9uKCl7fSksZS5fY2xvc2VkUHJvbWlzZV9yZWplY3QociksZS5fY2xvc2VkUHJvbWlzZV9yZXNvbHZlPXZvaWQgMCxlLl9jbG9zZWRQcm9taXNlX3JlamVjdD12b2lkIDB9ZnVuY3Rpb24gU3IoZSl7ZS5fY2xvc2VkUHJvbWlzZV9yZXNvbHZlKHZvaWQgMCksZS5fY2xvc2VkUHJvbWlzZV9yZXNvbHZlPXZvaWQgMCxlLl9jbG9zZWRQcm9taXNlX3JlamVjdD12b2lkIDB9ZnVuY3Rpb24gUnIoZSl7cmV0dXJuIG5ldyBUeXBlRXJyb3IoIlJlYWRhYmxlU3RyZWFtQllPQlJlYWRlci5wcm90b3R5cGUuIitlKyIgY2FuIG9ubHkgYmUgdXNlZCBvbiBhIFJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciIpfWZ1bmN0aW9uIFByKGUpe3JldHVybiBuZXcgVHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLnByb3RvdHlwZS4iK2UrIiBjYW4gb25seSBiZSB1c2VkIG9uIGEgUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlciIpfWZ1bmN0aW9uIFRyKGUpe3JldHVybiBuZXcgVHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbUJZT0JSZXF1ZXN0LnByb3RvdHlwZS4iK2UrIiBjYW4gb25seSBiZSB1c2VkIG9uIGEgUmVhZGFibGVTdHJlYW1CWU9CUmVxdWVzdCIpfWZ1bmN0aW9uIHFyKGUpe3JldHVybiBuZXcgVHlwZUVycm9yKCJSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZS4iK2UrIiBjYW4gb25seSBiZSB1c2VkIG9uIGEgUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlciIpfXZhciBqcj1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dmFyIHI9ZS5oaWdoV2F0ZXJNYXJrO3RoaXMuaGlnaFdhdGVyTWFyaz1yfXJldHVybiBlLnByb3RvdHlwZS5zaXplPWZ1bmN0aW9uKGUpe3JldHVybiBlLmJ5dGVMZW5ndGh9LGV9KCksRXI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUpe3ZhciByPWUuaGlnaFdhdGVyTWFyazt0aGlzLmhpZ2hXYXRlck1hcms9cn1yZXR1cm4gZS5wcm90b3R5cGUuc2l6ZT1mdW5jdGlvbigpe3JldHVybiAxfSxlfSgpLENyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHIsdCl7dm9pZCAwPT09ZSYmKGU9e30pLHZvaWQgMD09PXImJihyPXt9KSx2b2lkIDA9PT10JiYodD17fSk7dmFyIG89ci5zaXplLG49ci5oaWdoV2F0ZXJNYXJrLGk9dC5zaXplLGE9dC5oaWdoV2F0ZXJNYXJrO2lmKHZvaWQgMCE9PWUud3JpdGFibGVUeXBlKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIHdyaXRhYmxlIHR5cGUgc3BlY2lmaWVkIik7dmFyIGM9ZChvKTtpZih2b2lkIDA9PT1uJiYobj0xKSxuPWYobiksdm9pZCAwIT09ZS5yZWFkYWJsZVR5cGUpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkludmFsaWQgcmVhZGFibGUgdHlwZSBzcGVjaWZpZWQiKTt2YXIgXyxoPWQoaSk7dm9pZCAwPT09YSYmKGE9MCksYT1mKGEpLGZ1bmN0aW9uKGUscix0LG8sbixpKXtmdW5jdGlvbiBhKCl7cmV0dXJuIHJ9ZS5fd3JpdGFibGU9ZnVuY3Rpb24oZSxyLHQsbyxuLGkpe3ZvaWQgMD09PW4mJihuPTEpLHZvaWQgMD09PWkmJihpPWZ1bmN0aW9uKCl7cmV0dXJuIDF9KTt2YXIgYT1PYmplY3QuY3JlYXRlKGcucHJvdG90eXBlKTtyZXR1cm4gUihhKSxEKGEsT2JqZWN0LmNyZWF0ZSh4LnByb3RvdHlwZSksZSxyLHQsbyxuLGkpLGF9KGEsZnVuY3Rpb24ocil7cmV0dXJuIGZ1bmN0aW9uKGUscil7dmFyIHQ9ZS5fdHJhbnNmb3JtU3RyZWFtQ29udHJvbGxlcjtpZighMD09PWUuX2JhY2twcmVzc3VyZSl7dmFyIG89ZS5fYmFja3ByZXNzdXJlQ2hhbmdlUHJvbWlzZTtyZXR1cm4gby50aGVuKGZ1bmN0aW9uKCl7dmFyIG89ZS5fd3JpdGFibGUsbj1vLl9zdGF0ZTtpZigiZXJyb3JpbmciPT09bil0aHJvdyBvLl9zdG9yZWRFcnJvcjtyZXR1cm4gTHIodCxyKX0pfXJldHVybiBMcih0LHIpfShlLHIpfSxmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgcj1lLl9yZWFkYWJsZSx0PWUuX3RyYW5zZm9ybVN0cmVhbUNvbnRyb2xsZXIsbz10Ll9mbHVzaEFsZ29yaXRobSgpO3JldHVybiBJcih0KSxvLnRoZW4oZnVuY3Rpb24oKXtpZigiZXJyb3JlZCI9PT1yLl9zdGF0ZSl0aHJvdyByLl9zdG9yZWRFcnJvcjt2YXIgZT1yLl9yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI7ITA9PT1HZShlKSYmSGUoZSl9KS5jYXRjaChmdW5jdGlvbih0KXt0aHJvdyBPcihlLHQpLHIuX3N0b3JlZEVycm9yfSl9KGUpfSxmdW5jdGlvbihyKXtyZXR1cm4gZnVuY3Rpb24oZSxyKXtyZXR1cm4gT3IoZSxyKSxQcm9taXNlLnJlc29sdmUoKX0oZSxyKX0sdCxvKSxlLl9yZWFkYWJsZT1oZShhLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBrcihlLCExKSxlLl9iYWNrcHJlc3N1cmVDaGFuZ2VQcm9taXNlfShlKX0sZnVuY3Rpb24ocil7cmV0dXJuIFdyKGUsciksUHJvbWlzZS5yZXNvbHZlKCl9LG4saSksZS5fYmFja3ByZXNzdXJlPXZvaWQgMCxlLl9iYWNrcHJlc3N1cmVDaGFuZ2VQcm9taXNlPXZvaWQgMCxlLl9iYWNrcHJlc3N1cmVDaGFuZ2VQcm9taXNlX3Jlc29sdmU9dm9pZCAwLGtyKGUsITApLGUuX3RyYW5zZm9ybVN0cmVhbUNvbnRyb2xsZXI9dm9pZCAwfSh0aGlzLG5ldyBQcm9taXNlKGZ1bmN0aW9uKGUpe189ZX0pLG4sYyxhLGgpLGZ1bmN0aW9uKGUscil7dmFyIHQ9T2JqZWN0LmNyZWF0ZSh6ci5wcm90b3R5cGUpLG89ZnVuY3Rpb24oZSl7dHJ5e3JldHVybiBGcih0LGUpLFByb21pc2UucmVzb2x2ZSgpfWNhdGNoKGUpe3JldHVybiBQcm9taXNlLnJlamVjdChlKX19LG49ci50cmFuc2Zvcm07aWYodm9pZCAwIT09bil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IFR5cGVFcnJvcigidHJhbnNmb3JtIGlzIG5vdCBhIG1ldGhvZCIpO289ZnVuY3Rpb24oZSl7cmV0dXJuIGwobixyLFtlLHRdKX19dmFyIGk9cyhyLCJmbHVzaCIsMCxbdF0pOyFmdW5jdGlvbihlLHIsdCxvKXtyLl9jb250cm9sbGVkVHJhbnNmb3JtU3RyZWFtPWUsZS5fdHJhbnNmb3JtU3RyZWFtQ29udHJvbGxlcj1yLHIuX3RyYW5zZm9ybUFsZ29yaXRobT10LHIuX2ZsdXNoQWxnb3JpdGhtPW99KGUsdCxvLGkpfSh0aGlzLGUpO3ZhciBiPXUoZSwic3RhcnQiLFt0aGlzLl90cmFuc2Zvcm1TdHJlYW1Db250cm9sbGVyXSk7XyhiKX1yZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUucHJvdG90eXBlLCJyZWFkYWJsZSIse2dldDpmdW5jdGlvbigpe2lmKCExPT09QXIodGhpcykpdGhyb3cgeHIoInJlYWRhYmxlIik7cmV0dXJuIHRoaXMuX3JlYWRhYmxlfSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwid3JpdGFibGUiLHtnZXQ6ZnVuY3Rpb24oKXtpZighMT09PUFyKHRoaXMpKXRocm93IHhyKCJ3cml0YWJsZSIpO3JldHVybiB0aGlzLl93cml0YWJsZX0sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlfSgpO2Z1bmN0aW9uIEFyKGUpe3JldHVybiEhbyhlKSYmISFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSwiX3RyYW5zZm9ybVN0cmVhbUNvbnRyb2xsZXIiKX1mdW5jdGlvbiBPcihlLHIpe1ZlKGUuX3JlYWRhYmxlLl9yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIsciksV3IoZSxyKX1mdW5jdGlvbiBXcihlLHIpe0lyKGUuX3RyYW5zZm9ybVN0cmVhbUNvbnRyb2xsZXIpLFUoZS5fd3JpdGFibGUuX3dyaXRhYmxlU3RyZWFtQ29udHJvbGxlcixyKSwhMD09PWUuX2JhY2twcmVzc3VyZSYma3IoZSwhMSl9ZnVuY3Rpb24ga3IoZSxyKXt2b2lkIDAhPT1lLl9iYWNrcHJlc3N1cmVDaGFuZ2VQcm9taXNlJiZlLl9iYWNrcHJlc3N1cmVDaGFuZ2VQcm9taXNlX3Jlc29sdmUoKSxlLl9iYWNrcHJlc3N1cmVDaGFuZ2VQcm9taXNlPW5ldyBQcm9taXNlKGZ1bmN0aW9uKHIpe2UuX2JhY2twcmVzc3VyZUNoYW5nZVByb21pc2VfcmVzb2x2ZT1yfSksZS5fYmFja3ByZXNzdXJlPXJ9dmFyIHpyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3Rocm93IG5ldyBUeXBlRXJyb3IoIlRyYW5zZm9ybVN0cmVhbURlZmF1bHRDb250cm9sbGVyIGluc3RhbmNlcyBjYW5ub3QgYmUgY3JlYXRlZCBkaXJlY3RseSIpfXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsImRlc2lyZWRTaXplIix7Z2V0OmZ1bmN0aW9uKCl7aWYoITE9PT1Ccih0aGlzKSl0aHJvdyBNcigiZGVzaXJlZFNpemUiKTtyZXR1cm4gUWUodGhpcy5fY29udHJvbGxlZFRyYW5zZm9ybVN0cmVhbS5fcmVhZGFibGUuX3JlYWRhYmxlU3RyZWFtQ29udHJvbGxlcil9LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSksZS5wcm90b3R5cGUuZW5xdWV1ZT1mdW5jdGlvbihlKXtpZighMT09PUJyKHRoaXMpKXRocm93IE1yKCJlbnF1ZXVlIik7RnIodGhpcyxlKX0sZS5wcm90b3R5cGUuZXJyb3I9ZnVuY3Rpb24oZSl7aWYoITE9PT1Ccih0aGlzKSl0aHJvdyBNcigiZXJyb3IiKTt2YXIgcjtyPWUsT3IodGhpcy5fY29udHJvbGxlZFRyYW5zZm9ybVN0cmVhbSxyKX0sZS5wcm90b3R5cGUudGVybWluYXRlPWZ1bmN0aW9uKCl7aWYoITE9PT1Ccih0aGlzKSl0aHJvdyBNcigidGVybWluYXRlIik7IWZ1bmN0aW9uKGUpe3ZhciByPWUuX2NvbnRyb2xsZWRUcmFuc2Zvcm1TdHJlYW0sdD1yLl9yZWFkYWJsZS5fcmVhZGFibGVTdHJlYW1Db250cm9sbGVyOyEwPT09R2UodCkmJkhlKHQpO3ZhciBvPW5ldyBUeXBlRXJyb3IoIlRyYW5zZm9ybVN0cmVhbSB0ZXJtaW5hdGVkIik7V3IocixvKX0odGhpcyl9LGV9KCk7ZnVuY3Rpb24gQnIoZSl7cmV0dXJuISFvKGUpJiYhIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLCJfY29udHJvbGxlZFRyYW5zZm9ybVN0cmVhbSIpfWZ1bmN0aW9uIElyKGUpe2UuX3RyYW5zZm9ybUFsZ29yaXRobT12b2lkIDAsZS5fZmx1c2hBbGdvcml0aG09dm9pZCAwfWZ1bmN0aW9uIEZyKGUscil7dmFyIHQ9ZS5fY29udHJvbGxlZFRyYW5zZm9ybVN0cmVhbSxvPXQuX3JlYWRhYmxlLl9yZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI7aWYoITE9PT1HZShvKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJSZWFkYWJsZSBzaWRlIGlzIG5vdCBpbiBhIHN0YXRlIHRoYXQgcGVybWl0cyBlbnF1ZXVlIik7dHJ5e1VlKG8scil9Y2F0Y2goZSl7dGhyb3cgV3IodCxlKSx0Ll9yZWFkYWJsZS5fc3RvcmVkRXJyb3J9KGZ1bmN0aW9uKGUpe3JldHVybiEwIT09TmUoZSl9KShvKSE9PXQuX2JhY2twcmVzc3VyZSYma3IodCwhMCl9ZnVuY3Rpb24gTHIoZSxyKXtyZXR1cm4gZS5fdHJhbnNmb3JtQWxnb3JpdGhtKHIpLmNhdGNoKGZ1bmN0aW9uKHIpe3Rocm93IE9yKGUuX2NvbnRyb2xsZWRUcmFuc2Zvcm1TdHJlYW0scikscn0pfWZ1bmN0aW9uIE1yKGUpe3JldHVybiBuZXcgVHlwZUVycm9yKCJUcmFuc2Zvcm1TdHJlYW1EZWZhdWx0Q29udHJvbGxlci5wcm90b3R5cGUuIitlKyIgY2FuIG9ubHkgYmUgdXNlZCBvbiBhIFRyYW5zZm9ybVN0cmVhbURlZmF1bHRDb250cm9sbGVyIil9ZnVuY3Rpb24geHIoZSl7cmV0dXJuIG5ldyBUeXBlRXJyb3IoIlRyYW5zZm9ybVN0cmVhbS5wcm90b3R5cGUuIitlKyIgY2FuIG9ubHkgYmUgdXNlZCBvbiBhIFRyYW5zZm9ybVN0cmVhbSIpfWUuUmVhZGFibGVTdHJlYW09ZmUsZS5Xcml0YWJsZVN0cmVhbT1nLGUuQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneT1qcixlLkNvdW50UXVldWluZ1N0cmF0ZWd5PUVyLGUuVHJhbnNmb3JtU3RyZWFtPUNyLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KX0pOwoKaWYgKCEoJ1JlYWRhYmxlU3RyZWFtJyBpbiB3aW5kb3cpKSB3aW5kb3cuUmVhZGFibGVTdHJlYW0gPSBXZWJTdHJlYW1zUG9seWZpbGwuUmVhZGFibGVTdHJlYW07CmlmICghKCdXcml0YWJsZVN0cmVhbScgaW4gd2luZG93KSkgd2luZG93LldyaXRhYmxlU3RyZWFtID0gV2ViU3RyZWFtc1BvbHlmaWxsLldyaXRhYmxlU3RyZWFtOw==" }, "i/loader-bar2.gif": { "content_type": "image/gif", "data": "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" }, "i/apple-icon.png": { "content_type": "image/png", "data": "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" }, "css/foundation-icons.ttf": { "content_type": "application/octet-stream", "data": "AAEAAAAPAIAAAwBwRkZUTWi4HfYAAAD8AAAAHE9TLzJBOV7yAAABGAAAAGBjbWFwAA/1xQAAAXgAAAFCY3Z0IAAyADIAANRcAAAAFGZwZ22KCng5AADUcAAACZFnYXNwAAAAEAAA1FQAAAAIZ2x5ZvRq9EYAAAK8AAC8fmhlYWT9mbujAAC/PAAAADZoaGVhA/EC3QAAv3QAAAAkaG10eJ/0ADcAAL+YAAAEdmxvY2FRKCM8AADEEAAAAj5tYXhwAZ0KpwAAxlAAAAAgbmFtZUlnWKYAAMZwAAACqXBvc3RnrLJ7AADJHAAACzZwcmVw3OSS0gAA3gQAAACLAAAAAQAAAADMPaLPAAAAAM49PZMAAAAAzj09kwAEAXgB9AAFAAABTAFmAAAARwFMAWYAAAD1ABkAhAAAAgAGAwAAAAAAAAAAAAAQAAAAAAAAAAAAAABQZkVkAMDxAPIaAcD/wAAuAcAAQAAAAAEAAAAAAAAAAAAAACAAAQAAAAMAAAADAAAAHAABAAAAAAA8AAMAAQAAABwABAAgAAAABAAEAAEAAPIa//8AAPEA//8PAwABAAAAAAAAAQYAAAEAAAAAAAAAAQIAAAACAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACABEAAACZAVUAAwAHAAAzETMRJzMRIxGId2ZmAVX+qxEBMwACAAAAFgFUAWoAKwBBAAABIxUzMh0BFCsBFTMyHQEUKwEVMzIdARQrARUUIyEiNRE0MyEyHQEzMh0BFAc1NC8BNjU0JiIGFRQXBwYdARQ7ATIBShgYCgoYGAoKGBgKChgQ/u4QEAESEBgKagY3FRgiGBY4BQmOCgEfHgoeCh0LHgodCx4KCRAQATQQEAkKHgqlLAYEGg0dFBwcFBwOGgMHLAsAAAMAAAAGAakBegAUABwALgAAJRYVFAYjISImNDcTMzYzMhcTFDIVJjI2NCYiBhQ3OQE0KwEiHQIxFDsBMTI1MQGnAgsI/nwICgS/AQYKDATBAdwWDw8WEDULIAoLHwsfBAMHCwoQBAFLCwn+sgEBBxAWDw8W2QoKAZALCwAEAAAADgFjAXIACwAXACMAMQAAATIdARQjISI9ATQzBRQrASI9ATQ7ATIVFzIdARQjISI9ATQzJRUUIzEjIj0BNDsBMTIBURIS/sAREQEnEukSEukSCBER/uMSEgEDEccREccRAXIREBEREBGHEREQERG7ERARERARVRARERARAAQAAAAPAWMBcQAMABkAJgAzAAABMh0BFAYjISI9ATQzBTIdARQGIyEiPQE0MwUyFh0BFCMhIj0BNDMFMhYdARQjISI9ATQzAVESCwf+wBERAUASCwf+wBERAUAHCxL+wBERAUAHCxL+wBERAXEREAgKEhARZREQBwsSEBFlCwcQEREQEmUKCBARERASAAAAAAQAAAAOAWMBcgALABgAJAAyAAABMh0BFCMhIj0BNDMVIj0BNDsBMhYdARQjFzIdARQjISI9ATQzNSI9ATQ7ATEyHQEUIzEBURIS/sARERER6gcLEjMSEv7jEREREccSEgFyERARERARmBEQEgsHEBGaERARERARNBEQEREQEQAABAAAAA4BYwFyAAsAFwAkADIAAAEyHQEUIyEiPQE0MwUyHQEUKwEiPQE0MxcyHQEUIyEiPQE0MyE3FRQjMSMiPQE0OwExMgFREhL+wBERAUASEukSEukSEv7jEREBHRISxxERxxIBchEQEREQEWYREBEREBHMERARERARVRARERARAAAAAgAA//sBiQGFAEIATAAAJRYVFCsBDgEiJicjIjU0PwE2Mh8BFhUUKwEWFzUjIj0BNDsBNSY1NDYyFhUUBxUzMh0BFCsBFTY3IyI1ND8BNjMyFyYyNjQmIyIGFRQBiAEIFRlZalkZFggCLwIKAjACCQwgLy4ICC4iIzIiIi8ICC8vIAwIAi4CBgUCoBoUFA0OFGgBAwgsNTUsCAMCUgUEVAICCCMJlggjCBsRJRkiIhklERsIIwiWCSMIAwJSBQRsFBwTFA0OAAACAAD//QGEAYMAHwArAAAlFhUUBiMiJyMGIyImNTQ3NSY1NDYzMhczNjMy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MEQHdW5pRjEwRQd1bmlGMTBGB3VuaUYxMTAHdW5pRjExMQd1bmlGMTEyB3VuaUYxMTMHdW5pRjExNAd1bmlGMTE1B3VuaUYxMTYHdW5pRjExNwd1bmlGMTE4B3VuaUYxMTkHdW5pRjExQQd1bmlGMTFCB3VuaUYxMUMHdW5pRjExRAd1bmlGMTFFB3VuaUYxMUYHdW5pRjEyMAd1bmlGMTIxB3VuaUYxMjIHdW5pRjEyMwd1bmlGMTI0B3VuaUYxMjUHdW5pRjEyNgd1bmlGMTI3B3VuaUYxMjgHdW5pRjEyOQd1bmlGMTJBB3VuaUYxMkIHdW5pRjEyQwd1bmlGMTJEB3VuaUYxMkUHdW5pRjEyRgd1bmlGMTMwB3VuaUYxMzEHdW5pRjEzMgd1bmlGMTMzB3VuaUYxMzQHdW5pRjEzNQd1bmlGMTM2B3VuaUYxMzcHdW5pRjEzOAd1bmlGMTM5B3VuaUYxM0EHdW5pRjEzQgd1bmlGMTNDB3VuaUYxM0QHdW5pRjEzRQd1bmlGMTNGB3VuaUYxNDAHdW5pRjE0MQd1bmlGMTQyB3VuaUYxNDMHdW5pRjE0NAd1bmlGMTQ1B3VuaUYxNDYHdW5pRjE0Nwd1bmlGMTQ4B3VuaUYxNDkHdW5pRjE0QQd1bmlGMTRCB3VuaUYxNEMHdW5pRjE0RAd1bmlGMTRFB3VuaUYxNEYHdW5pRjE1MAd1bmlGMTUxB3VuaUYxNTIHdW5pRjE1Mwd1bmlGMTU0B3VuaUYxNTUHdW5pRjE1Ngd1bmlGMTU3B3VuaUYxNTgHdW5pRjE1OQd1bmlGMTVBB3VuaUYxNUIHdW5pRjE1Qwd1bmlGMTVEB3VuaUYxNUUHdW5pRjE1Rgd1bmlGMTYwB3VuaUYxNjEHdW5pRjE2Mgd1bmlGMTYzB3VuaUYxNjQHdW5pRjE2NQd1bmlGMTY2B3VuaUYxNjcHdW5pRjE2OAd1bmlGMTY5B3VuaUYxNkEHdW5pRjE2Qgd1bmlGMTZDB3VuaUYxNkQHdW5pRjE2RQd1bmlGMTZGB3VuaUYxNzAHdW5pRjE3MQd1bmlGMTcyB3VuaUYxNzMHdW5pRjE3NAd1bmlGMTc1B3VuaUYxNzYHdW5pRjE3Nwd1bmlGMTc4B3VuaUYxNzkHdW5pRjE3QQd1bmlGMTdCB3VuaUYxN0MHdW5pRjE3RAd1bmlGMTdFB3VuaUYxN0YHdW5pRjE4MAd1bmlGMTgxB3VuaUYxODIHdW5pRjE4Mwd1bmlGMTg0B3VuaUYxODUHdW5pRjE4Ngd1bmlGMTg3B3VuaUYxODgHdW5pRjE4OQd1bmlGMThBB3VuaUYxOEIHdW5pRjE4Qwd1bmlGMThEB3VuaUYxOEUHdW5pRjE4Rgd1bmlGMTkwB3VuaUYxOTEHdW5pRjE5Mgd1bmlGMTkzB3VuaUYxOTQHdW5pRjE5NQd1bmlGMTk2B3VuaUYxOTcHdW5pRjE5OAd1bmlGMTk5B3VuaUYxOUEHdW5pRjE5Qgd1bmlGMTlDB3VuaUYxOUQHdW5pRjE5RQd1bmlGMTlGB3VuaUYxQTAHdW5pRjFBMQd1bmlGMUEyB3VuaUYxQTMHdW5pRjFBNAd1bmlGMUE1B3VuaUYxQTYHdW5pRjFBNwd1bmlGMUE4B3VuaUYxQTkHdW5pRjFBQQd1bmlGMUFCB3VuaUYxQUMHdW5pRjFBRAd1bmlGMUFFB3VuaUYxQUYHdW5pRjFCMAd1bmlGMUIxB3VuaUYxQjIHdW5pRjFCMwd1bmlGMUI0B3VuaUYxQjUHdW5pRjFCNgd1bmlGMUI3B3VuaUYxQjgHdW5pRjFCOQd1bmlGMUJBB3VuaUYxQkIHdW5pRjFCQwd1bmlGMUJEB3VuaUYxQkUHdW5pRjFCRgd1bmlGMUMwB3VuaUYxQzEHdW5pRjFDMgd1bmlGMUMzB3VuaUYxQzQHdW5pRjFDNQd1bmlGMUM2B3VuaUYxQzcHdW5pRjFDOAd1bmlGMUM5B3VuaUYxQ0EHdW5pRjFDQgd1bmlGMUNDB3VuaUYxQ0QHdW5pRjFDRQd1bmlGMUNGB3VuaUYxRDAHdW5pRjFEMQd1bmlGMUQyB3VuaUYxRDMHdW5pRjFENAd1bmlGMUQ1B3VuaUYxRDYHdW5pRjFENwd1bmlGMUQ4B3VuaUYxRDkHdW5pRjFEQQd1bmlGMURCB3VuaUYxREMHdW5pRjFERAd1bmlGMURFB3VuaUYxREYHdW5pRjFFMAd1bmlGMUUxB3VuaUYxRTIHdW5pRjFFMwd1bmlGMUU0B3VuaUYxRTUHdW5pRjFFNgd1bmlGMUU3B3VuaUYxRTgHdW5pRjFFOQd1bmlGMUVBB3VuaUYxRUIHdW5pRjFFQwd1bmlGMUVEB3VuaUYx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" }, "css/foundation-icons.woff": { "content_type": "application/font-woff", "data": "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" }, "css/cousine-regular.ttf": { "content_type": "application/octet-stream", "data": "AAEAAAASAQAABAAgRkZUTXvdAYQAAAEsAAAAHEdERUYAJwUEAAABSAAAAB5HUE9TDj8I4gAAAWgAAAU0R1NVQsxL0CUAAAacAAAAVE9TLzIAX7daAAAG8AAAAGBjbWFw9pTv5AAAB1AAAAQWY3Z0IGwXbZsAAAtoAAACsmZwZ21+YbYRAAAOHAAAB7RnYXNwABYAIwAAFdAAAAAQZ2x5ZgpAbGQAABXgAAH9cGhlYWQJNzoEAAITUAAAADZoaGVhCMIDgwACE4gAAAAkaG10eI6ECOAAAhOsAAAT6mxvY2GXtxfCAAInmAAACf5tYXhwCTQBsgACMZgAAAAgbmFtZcx46yQAAjG4AAAHQHBvc3QcdB2LAAI4+AAAKtJwcmVwyPOMjwACY8wAAAV6AAAAAQAAAADV7UW4AAAAAMhDeqcAAAAA3axBJAABAAAADAAAABYAAAACAAEAAQT9AAEABAAAAAIAAAAAAAEAAAAKAB4AOAABaGVicgAIAAQAAAAA//8AAQAAAAFtYXJrAAgAAAAHAAAAAQACAAMABAAFAAYABwAQAB4ALAA6AEgAXgB+AAgAAQAEAHgAlACwAMwACAABAAQA2gD2ARIBLgAIAAEABAE8AVgBdAGQAAgAAQAEAZ4BugHWAfIACAABAAgCAAIcAj4CYAKCAqQCxgLoAAgAAQANAu4DCgMmA0IDXgN6A5YDsgPOA+oEBgQiBD4ACAABAAIEOgRcAAMAAQAUAAEAEAABABgAAAABAAAAAQAAAAEAAAADAAIAFAAYAAEAEAAAAAAAAQAAAAEAAAABAAAAAwABABQAAQAQAAEAGAAAAAEAAAABAAAAAQAAAAMAAgAUABgAAQAQAAAAAAABAAAAAQAAAAEAAAADAAEAFAABABAAAQAYAAAAAQAAAAEAAAABAAAAAwABABQAAQAQAAEAGAAAAAEAAAABAAAAAQAAAAMAAQAUAAEAEAABABgAAAABAAAAAQAAAAEAAAADAAEAFAABABAAAQAYAAAAAQAAAAEAAAABAAAAAwACABQAGAABABAAAAAAAAEAAAABAAAAAQAAAAMAAQAUAAEAEAABABgAAAABAAAAAQAAAAEAAAADAAIAFAAYAAEAEAAAAAAAAQAAAAEAAAABAAAAAwABABQAAQAQAAEAGAAAAAEAAAABAAAAAQAAAAMAAgAUABgAAQAQAAAAAAABAAAAAQAAAAEAAAADAAIAFAAYAAEAEAAAAAAAAQAAAAEAAAABAAAAAwACABQAGAABABAAAAAAAAEAAAABAAAAAQAAAAMAAgAUABgAAQAQAAAAAAABAAAAAQAAAAEAAAADAAIAFAAYAAEAEAAAAAAAAQAAAAEAAAABAAAAAwADABYAGgAeAAEAEgAAAAAAAQAAAAEAAAABAAAAAQAAAAMAAwAWABoAHgABABIAAAAAAAEAAAABAAAAAQAAAAEAAAADAAMAFgAaAB4AAQASAAAAAAABAAAAAQAAAAEAAAABAAAAAwADABYAGgAeAAEAEgAAAAAAAQAAAAEAAAABAAAAAQAAAAMAAwAWABoAHgABABIAAAAAAAEAAAABAAAAAQAAAAEAAAADAAMAFgAaAB4AAQASAAAAAAABAAAAAQAAAAEAAAABAAAAAwACABQAGAABABAAAAAAAAEAAAABAAAAAQAAAAMAAgAUABgAAQAQAAAAAAABAAAAAQAAAAEAAAADAAIAFAAYAAEAEAAAAAAAAQAAAAEAAAABAAAAAwACABQAGAABABAAAAAAAAEAAAABAAAAAQAAAAMAAgAUABgAAQAQAAAAAAABAAAAAQAAAAEAAAADAAIAFAAYAAEAEAAAAAAAAQAAAAEAAAABAAAAAwACABQAGAABABAAAAAAAAEAAAABAAAAAQAAAAMAAgAUABgAAQAQAAAAAAABAAAAAQAAAAEAAAADAAIAFAAYAAEAEAAAAAAAAQAAAAEAAAABAAAAAwACABQAGAABABAAAAAAAAEAAAABAAAAAQAAAAMAAgAUABgAAQAQAAAAAAABAAAAAQAAAAEAAAADAAIAFAAYAAEAEAAAAAAAAQAAAAEAAAABAAAAAwACABQAGAABABAAAAAAAAEAAAABAAAAAQAAAAMAAgAUABgAAQAQAAAAAAABAAAAAQAAAAEAAAADAAIAGgAeAAIAEgAWAAAAAAABAAAAAQAAAAEAAAABAAAAAwACABoAHgACABIAFgAAAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAKAB4ALAABaGVicgAIAAQAAAAA//8AAQAAAAFjY21wAAgAAAABAAAAAQAEAAYAAQABAAgAAwAAAAIAEAAUAAEAGAAAAAEAAAABAAAAAQAAAAMEzAGQAAUABAWaBTMAAAEdBZoFMwAA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NQArNTUAAAD//wBC/lcEiQW0EiYAXAAAEQYAdGsAABNACwEVESYBaxUYChElASs1ACs1AAACALn+VwRCBcwACwAgAD5AHx0GGhobABIbEiEiHAAaGxYUFAlQWRQWDA8PA1BZDxAAPysRADMYPysRADMYPz8REgE5OREzETMRMzMxMAE0JiMiBhUUFjMyNgE+ATMyEhEQISInIxYVESMRMxEUBwOIeoOXhoaVhXr96DKbfcbC/nj2VQUEtbQEAiLiwdve1cbKAk1pX/7v/uP9yrgInv5ZB3X+WUFcAP//AEL+VwSJBXsSJgBcAAARBgBpBQAAF0ANAgEVESYCAQUZFwoRJQErNTUAKzU1AP//AAAAAATMBl4SJgAkAAARBwH4AAIBCwATQAsCDgUmAgAPDgQHJQErNQArNQAAAP//AID/7ASIBVMSJgBEAAARBgH42wAAFbQCMBEmArj/9LQxMBofJQErNQArNQAAAP//AAAAAATMBqkSJgAkAAARBwH5AAAA9QATQAsCDgUmAgARGQQHJQErNQArNQAAAP//AID/7ASIBbQSJgBEAAARBgH57QAAE0ALAjARJgIHMzsaHyUBKzUAKzUA//8AAP5gBN8FRRImACQAABEHAfwByAALAAu2AhIWFgAAJQErNQAAAP//AID+VQSIBE4SJgBEAAARBwH8AXEAAAAOuQAC/8K0OTkCAiUBKzX//wBx/+wEdgaoEiYAJgAAEQcAdACEAPQAE0ALARcFJgF2FxoMByUBKzUAKzUAAAD//wCC/+wEOAW0EiYARgAAEQYAdGYAABNACwEbESYBbxseABQlASs1ACs1AP//AHH/7AR2BqkSJgAmAAARBwH2ABQA9QATQAsBGAUmAQYdFwwHJQErNQArNQAAAP//AIL/7AQ4BbQSJgBGAAARBgH2AAAAE0ALARwRJgEJIRsAFCUBKzUAKzUA//8Acf/sBHYGZhImACYAABEHAfoAHgCaABNACwEXBSYBERcZDAclASs1ACs1AAAA//8Agv/sBDgFzBImAEYAABEGAfoUAAATQAsBGxEmAR4bHQAUJQErNQArNQD//wBx/+wEdgapEiYAJgAAEQcB9wARAPUAE0ALARcFJgEDGR8MByUBKzUAKzUAAAD//wCC/+wEOAW0EiYARgAAEQYB9/wAABNACwEbESYBBR0jABQlASs1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XXErERIAORgvMysRADMYPzMREgE5ETMSOREzETMRMzMxMBMzFSEVIRUUBzM2MyAZASMRNCYjIgYVESMRIzUzubUBK/7VCQNp6gFetWlzfJ+0hIQFzJ2DhDuKzf6D/U0CmYiEtZv9qwSsgwAA//8AygAABAEGnhImACwAABEHAf0AAQD1ABNACwEMBSYBARYjAAElASs1ACs1AAAA//8AjwAABGUFqRImAPEAABEGAf0AAAAVtAEKESYBuP/stBQhAwElASs1ACs1AAAA//8AygAABAEGXhImACwAABEHAfgAAgELABNACwEMBSYBAQ0MAAElASs1ACs1AAAA//8AjwAABGUFUxImAPEAABEGAfgIAAAVtAEKESYBuP/ztAsKAwElASs1ACs1AAAA//8AygAABAEGqBImACwAABEHAfkAAAD0ABNACwEMBSYBAA8XAAElASs1ACs1AAAA//8AjwAABGUFtBImAPEAABEGAfkUAAATQAsBChEmAQANFQMBJQErNQArNQD//wDK/lUEAQVFEiYALAAAEQYB/A0AAA63AQEPEQwAASUBKzUANQAA//8Aj/5VBGUFzBImAEwAABEGAfw4AAAOtwICJhMOAwElASs1ADUAAP//AMoAAAQBBmYSJgAsAAARBwH6AAAAmgATQAsBDAUmAQEMDgABJQErNQArNQAAAAABAI8AAARlBDoACQAsQBYBAAAEBQULCggHUFkIDwAEAwRQWQMVAD8rEQAzGD8rERIBOREzMxEzMTAlIRUhNSERITUhAukBfPwqAab+wQHzjo6OAx6OAAAAAgBi/+wEhQVFAAMAFQA7QB4CAxMSBwwMEgMDFhcTEw8PBF9ZDxMKCV9ZAAoDAxIAPz8zKwAYPysRADMYLxESARc5ETMRMxEzMTATMxEjJTI2NREhNSERFAYjIiYnNx4BYr+/Ap5oX/7xAc3KvKi5JboUZwVF+ruHj4oDCZz8X9PlrcUfgXUAAAQA2P5XBCUFzAADAAcAFgAaAEhAKAQHBwICAxcaGhYKEAoDAxscDRNQWQ0bGAUXMARgBAKABAEEAxUIAA8APzI/L11xMy8zPysREgEXOREzMxEzETMRMxEzMTATMxEjAzUzFQUzERQGIyImJzUWMzI2NQM1MxXts7QUyAHRtODPT6QtlnuAihTIBDr7xgUMwMDS+6q70hoRjCKE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//8As/6/BEIFzBImAEUAABEHBNUC8gAAAA65AAL/4bQjJQoAJQErNf//AKL+vASABUUSJgAlAAARBwIIAoAAAAAOuQAD/++0ISIFACUBKzX//wCz/rwEQgXMEiYARQAAEQcCCAI3AAAADrkAAv+8tCQlCgAlASs1//8Acf5EBHYGmxImACYAABAnBPcBywAAEQcAeAFiAAAAHEASARcFJgIbIR0MByUBdhcaDAclASs1KzUAKzUAAP//AIL+RAQ4BbQSJgBGAAAQJwB0AKEAABEHAHgBUQAAABxAEgEbESYCISUhABQlAW8bHgAUJQErNSs1ACs1AAD//wCiAAAEZQZmEiYAJwAAEQcB+v/YAJoAFbQCFQUmArj/vLQTFQUAJQErNQArNQD//wCK/+YEGQXMEiYARwAAEQYB+rwAAAeyAiQAAD81AP//AKL+vwRlBUUSJgAnAAARBwTVAukAAAAOuQAC/8+0ExUFACUBKzX//wCK/r8EGQXMEiYARwAAEQcE1QLuAAAAC7YCBSQmBhIlASs1AAAA//8Aov68BGUFRRImACcAABEHAggCWAAAAA65AAL/1LQUFQUAJQErNf//AIr+vAQZBcwSJgBHAAARBwIIAlQAAAALtgICJSYGEiUBKzUAAAD//wCi/jkEZQVFEiYAJwAAEQcCBAJWAAAADrkAAv/QtBYbBQAlASs1//8Aiv45BBkFzBImAEcAABEHAgQCWAAAAAu2AgQnLAYSJQErNQAAAP//AKL+VwRlBUUSJgAnAAARBwIFAmAAAAAOuQAC/9i0GRMFACUBKzX//wCK/lcEGQXMEiYARwAAEQcCBQJcAAAAC7YCBSokBhIlASs1AAAA//8AogAABGIHKxImACgAABEHBN8CegAAABm2AgETBSYCAbj/+bQUFQELJQErNTUAKzU1AP//AIX/7ARGBscSJgBIAAAQJwBD/8MBExEGAfgCAAAXQA0DAiIRJgMCASIhDRMlASs1NQArNTUA//8AogAABGIHKxImACgAABEHBOAChAAAABdADQIBFQUmAgECFRQBCyUBKzU1ACs1NQAAAP//AIX/7ARGBscSJgBIAAAQJwB0AD0BExEGAfgCAAAXQA0DAiIRJgMCASIhDRMlASs1NQArNTUA//8Aov5XBGIFRRImACgAABEHAgUClgAAAAu2AQ8TDQELJQEr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BM0AjwTNAI8EzQCPBM0AfQTNALMEzQCCBM0AggTNAIIEzQCCBM0AggTNAHQEzQBuBM0AuQTNALkEzQC5BM0AuQTNAEIEzQC5BM0AQgTNAAAEzQCABM0AAATNAIAEzQAABM0AgATNAHEEzQCCBM0AcQTNAIIEzQBxBM0AggTNAHEEzQCCBM0AogTNAB8EzQAbBM0AigTNAKIEzQCFBM0AogTNAIUEzQCiBM0AhQTNAKIEzQCFBM0AogTNAIUEzQBxBM0AjwTNAHEEzQCPBM0AcQTNAI8EzQBxBM0AjwTNAKIEzQC5BM0AAgTNADUEzQDKBM0AjwTNAMoEzQCPBM0AygTNAI8EzQDKBM0AjwTNAMoEzQCPBM0AYgTNANgEzQCwBM0AdQTNAKIEzQDsBM0A7ATNAO0EzQCGBM0A7QTNAIYEzQDtBM0AVQTNAO0EzQCGBM0ANgTNAIYEzQCiBM0AswTNAKIEzQCzBM0AogTNALMEzQAFBM0AswTNALMEzQBmBM0AggTNAGYEzQCCBM0AZgTNAIIEzQAUBM0AHATNAKIEzQDyBM0AogTNAMsEzQCiBM0A8gTNAE8EzQCnBM0ATwTNAKcEzQBPBM0ApwTNAE8EzQCnBM0ATATNAL4EzQBMBM0AZQTNAEwEzQDIBM0AjgTNALkEzQCOBM0AuQTNAI4EzQC5BM0AjgTNALkEzQCOBM0AuQTNAI4EzQC5BM0AAATNABUEzQAkBM0AQgTNACQEzQBJBM0AkwTNAEkEzQCTBM0ASQTNAJMEzQGQBM0AOgTN/90EzQCiBM0AswTNAAQEzQA5BM0AVwTNAGYEzQCCBM0AGwTN/90EzQA5BM0AigTNAIIEzQBrBM0AZwTNAF0Ezf/gBM0A6gTNAHEEzQAFBM0AaQTNAIYEzQDKBM0AogTNAOwEzQCGBM0AcgTNAFUEzf/LBM0AswTNAGYEzQBmBM0AggTNADIEzQAmBM3/3QTNALkEzQCiBM0AZATNAKkEzQBsBM0A3wTNAL4EzQAUBM0AvgTNAEwEzQCOBM0AtATNADoEzQCOBM0AAATNAEwEzQBJBM0AkwTNABcEzQBGBM0AgATNAJcEzQB7BM0AeATNAKAEzQCBBM0AuQTNAgwEzQFyBM0AggTNAgMEzQBZBM0AWQTNADIEzQBZBM0AWQTNAAAEzQBZBM0AWQTNAFMEzQAA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BM0AogTNAL8EzQBfBM0AmgTNAIEEzQBmBM0AhgTNAAAEzQCABM0AAATNAIAEzQABBM0AFATNAKIEzQCFBM0AaATNAIUEzQAABM0AAQTNAEMEzQCKBM0ATQTNAHoEzQCiBM0AuQTNAKIEzQC5BM0AZgTNAIIEzQBmBM0AggTNAGYEzQCCBM0AVwTNAHwEzQAUBM0AQgTNABQEzQBCBM0AFATNAEIEzQBfBM0AmgTNAOAEzQEJBM0AaQTNAGoEzQA3BM0AewTNACQEzQB9BM0AJATNAH0EzQAABM0AgATNAKIEzQCzBM0AogTNALMEzQCiBM0AswTNAHEEzQCCBM0AogTNAIoEzQCiBM0AigTNAKIEzQCKBM0AogTNAIoEzQCiBM0AigTNAKIEzQCFBM0AogTNAIUEzQCiBM0AhQTNAKIEzQCFBM0AogTNAIUEzQDCBM0AigTNAHEEzQCPBM0AogTNALkEzQCiBM0AuQTNAKIEzQC5BM0AiQTNAJUEzQCiBM0AuQTNAMoEzQCPBM0AygTNAI8EzQCiBM0A7ATNAKIEzQDsBM0AogTNAOwEzQDtBM0AhgTNAO0EzQCGBM0A7QTNAIYEzQDtBM0AhgTNAIEEzQBjBM0AgQTNAGMEzQCBBM0AYwTNAKIEzQDGBM0AogTNAMYEzQCiBM0AxgTNAKIEzQDGBM0AZgTNAIIEzQBmBM0AggTNAGYEzQCCBM0AZgTNAIIEzQCiBM0AswTNAKIEzQCzBM0AogTNAPIEzQCiBM0A8gTNAKIEzQDyBM0AogTNAHQEzQBPBM0ApwTNAE8EzQCnBM0ATwTNAKcEzQBPBM0ApwTNAE8EzQCnBM0ATATNAL4EzQBMBM0AvgTNAEwEzQC+BM0ATATNAL4EzQCOBM0AuQTNAI4EzQC5BM0AjgTNALkEzQCOBM0AuQTNAI4EzQC5BM0ACgTNAEUEzQAKBM0ARQTNAAAEzQAVBM0AAATNABUEzQAABM0AFQTNAAAEzQAVBM0AAATNABUEzQAkBM0AXgTNACQEzQBeBM0AJATNAEIEzQBJBM0AkwTNAEkEzQCTBM0ASQTNAJMEzQC5BM0AvgTNABUEzQBCBM0AgATNAZAEzQCWBM0AAATNAIAEzQAABM0AgATNAAAEzQCABM0AAATNAEAEzQAABM0AgATNAAAEzQCABM0AAATNAIAEzQAA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ZEJkXGSkZPhlWGWsZdJl9mYcZjZmZmaOZuJnFGdWZ4hnumfqaBRoNGhoaIposmjcaRRpKmlMaWpphmmQaZhp/mpiaoRqwGrYavhrSGtoa4BrzmxEbF5sZmxubIxs0mzabOJs6m1KbVJtWm2MbZRtnG3ibepuDm4WblxuZG5sbtZu3m8ob4Rvnm+4b85v5G/6cBBwKnCWcPxxQHGacgRyYHKgcvRzLnM2c4Zz0HQEdHh0gHTMdRh1dHW+df52PHaYdvR3PHekd7532HfueAR4GniUeRB5VnlieXx5hHnsemx6tnr+e0J7qnvifBx8hnyyfR59cn3Wfj5+iH7UfyB/moAGgGiA0oE6gZCB5oIygnCC0oM6g0KDSoNSg56D7IP0g/yEBIRAhIaE6ITwhQqFJIU8hVaFtoXOhkaGToZWhnCGeIbYhy6HeIeQh6iHwIf0h/yISIhQiFiIpoiuiSqJponkifyKSoqKipKKmoqiisaKzorWit6LKosyizqLbIuii9SMEoxYjKKM4I1ejb6OFI4cjoSO4o8Cj1CPWI/OkECQeJCOkNaREpFekZKRmpHAkciR0JH2kf6SXpJmkpqS0JMCkz6ThpPSlBKUhJTmlTSVTJVklcqV4pZWll6WZpZ+loaW5pc+l5SXqpfCl9iYCph+mNCZIplymeKaUJqcmuabSpusnBCccJzmnVqeFJ7GnxifZJ/QoDigdqC2oNCg6qFgodSiUKLMo4CkHqQypEqkkqTapS6lYqWUpbal2KYQps6npqgQqHaoyKkYqXSp8KoWqjyqdKqsqwirZKvwrHSs+K1+rdauMq6Qru6vSK+ir/KwQrCIsMyxBrFGsaayBLKEswCzarPmtBq0TrRWtI600LUYtWa1srXwtjC2cra2twK3UreIt5C3/LhmuNy5ULlYuXC5iLnqulC6nLrsuzq7irvMvBK8VryavPq9UL1YvW69hr2gvbq9wr3KveK9+L4Sviq+RL5cvna+jr7mvu6/Br8sv0a/Xr94v5C/6sBAwFrAcsCMwKTAvMDswQbBHsE4wVLBbMGEwbLB4MH6whLCasLAwxjDcsPExBrELsRExFzEaMR8xJDEpMS4xNjE+MUQxSDFNMVIxVzFcMWExZjFrMXAxdrF9sYQxizGQMZUxmjGfMaYxrLGyscixzrHiseix+zIAMgUyC7IgMiMyJjIrMjAyNTI6MkEyS7JRsmYyazJwMnUyejJ/MoQyibKcMqEypjKrMrAytjK8MsIyx7LMstGy17Last+y4rLnsuqy77LysvkzBzMOMxkzH7MuszUzRDNKM0+zVbNbM2EzZrNrs3CzdjOCs4ezjLOSs5gznTOiM6izrzO1s7wzwbPGs8yz0rPXs9yz4bPms+uz8LP1s/s0ADQFNAo0DzQVtCQ0KzQ6tEC0RjRLNFA0VjRcNGI0Z7RuNHQ0ejR/tIS0ibSPtJU0m7ShtKe0rTSzNLi0vbTCtMe0zLTRtNm037TltOu0+rUTNRg1HTUjNSk1L7U2NTy1QzVJtVA1VrVdNWQ1bTVztXo1gLWHNY21lDWataE1qDWvNbQ1uTW/NcU1yzXQtdc13bXkNeq18TX3tf42BLYMNhM2GTYfNiQ2KTYuNjM2OTY/NkW2TDZStlk2X7ZmNmy2czZ6NoE2hzaMtpK2mLaetqS2qrawtrW2ura/tsS2yrbQtta22rbgtuS26rbvNvU2+Tb+NwE3BzcNNxI3FTcbNyE3JzcstzI3QrdOt1o3XDdiN2g3bjd5t4G3ibeRt5m3pjeyN783wrfPt+U37bf5N/+4BrgPOBq4JrhSOFi4YjhmOHI4fjiOOJC4l7ioOLe4xDjLONO43zjruQW5KzlHuVo5fjmaOb657LoUujw6VDpYunk6jLqiutW68zsYOzS7VTuCu567tzvUu+U77rv/PAc8ErwvPD08Xjx4vIk8mbyqvK48xLzXPOA867z0PPy9DD0hPUG9Uz1YPWM9cD1+PY69nL2nPbs9xL3Pvdq95T34Pg2+Gb4nPjQ+RL5VPmm+gL6QPp++sz7Jvti+5777vxI/IT8wP0O/Wb9hv2m/dD9+v4g/lr+jP64AAAAAQAABP4AWgAIAFQABQACABAALwBcAAADuQDSAAMAAQAAABQA9gADAAEECQAAAGoAAAADAAEECQABAA4AagADAAEECQACAA4AeAADAAEECQADACQAhgADAAEECQAEAB4AqgADAAEECQAFABgAyAADAAEECQAGAA4A4AADAAEECQAHAKAA7gADAAEECQAIACgBjgADAAEECQAJABwBtgADAAEECQAKAsYB0gADAAEECQALADgEmAADAAEECQAMAFwE0AADAAEECQANAFwFLAADAAEECQAOAFQFiAADAAEECQDIABYF3AADAAEECQDJADAF8gADAAEECQDKAAgGIgADAAEECQDLAAYGKgADAAEECdkDABoGMABEAGkAZwBpAHQAaQB6AGUAZAAgAGQAYQB0AGEAIABjAG8AcAB5AHIAaQBnAGgAdAAgACgAYwApACAAMgAwADEAMAAgAEcAbwBvAGcAbABlACAAQwBvAHIAcABvAHIAYQB0AGkAbwBuAC4AQwBvAHUAcwBpAG4AZQBSAGUAZwB1AGwAYQByAEEAcwBjAGUAbgBkAGUAcgAgAC0AIABDAG8AdQBzAGkAbgBlAEMAbwB1AHMAaQBuAGUAIABSAGUAZwB1AGwAYQByAFYAZQByAHMAaQBvAG4AIAAxAC4AMgAwAEMAbwB1AHMAaQBuAGUAQwBvAHUAcwBpAG4AZQAgAGkAcwAgAGEAIAB0AHIAYQBkAGUAbQBhAHIAawAgAG8AZgAgAEcAbwBvAGcAbABlACAAYQBuAGQAIABtAGEAeQAgAGIAZQAgAHIAZQBnAGkAcwB0AGUAcgBlAGQAIABpAG4AIABjAGUAcgB0AGEAaQBuACAAagB1AHIAaQBzAGQAaQBjAHQAaQBvAG4AcwAuAEEAcwBjAGUAbgBkAGUAcgAgAEMAbwByAHAAbwByAGEAdABpAG8AbgBTAHQAZQB2AGUAIABNAGEAdAB0AGUAcwBvAG4AQwBvAHUAcwBpAG4AZQAgAHcAYQBzACAAZABlAHMAaQBnAG4AZQBkACAAYgB5ACAAUwB0AGUAdgBlACAATQBhAHQAdABlAHMAbwBuACAAYQBzACAAYQBuACAAaQBuAG4AbwB2AGEAdABpAHYAZQAsACAAcgBlAGYAcgBlAHMAaABpAG4AZwAgAHMAYQBuAHMAIABzAGUAcgBpAGYAIABkAGUAcwBpAGcAbgAgAHQAaABhAHQAIABpAHMAIABtAGUAdAByAGkAYwBhAGwAbAB5ACAAYwBvAG0AcABhAHQAaQBiAGwAZQAgAHcAaQB0AGgAIABDAG8AdQByAGkAZQByACAATgBlAHchIgAuACAAQwBvAHUAcwBpAG4AZQAgAG8AZgBmAGUAcgBzACAAaQBtAHAAcgBvAHYAZQBkACAAbwBuAC0AcwBjAHIAZQBlAG4AIAByAGUAYQBkAGEAYgBpAGwAaQB0AHkAIABjAGgAYQByAGEAYwB0AGUAcgBpAHMAdABpAGMAcwAgAGEAbgBkACAAdABoAGUAIABwAGEAbgAtAEUAdQByAG8AcABlAGEAbgAgAFcARwBMACAAYwBoAGEAcgBhAGMAdABlAHIAIABzAGUAdAAgAGEAbgBkACAAcwBvAGwAdgBlAHMAIAB0AGgAZQAgAG4AZQBlAGQAcwAgAG8AZgAgAGQAZQB2AGUAbABvAHAAZQByAHMAIABsAG8AbwBrAGkAbgBnACAAZgBvAHIAIAB3AGkAZAB0AGgALQBjAG8AbQBwAGEAdABpAGIAbABlACAAZgBvAG4AdABzACAAdABvACAAYQBkAGQAcgBlAHMAcwAgAGQAbwBjAHUAbQBlAG4AdAAgAHAAbwByAHQAYQBiAGkAbABpAHQAeQAgAGEAYwByAG8AcwBzACAAcABsAGEAdABmAG8AcgBtAHMALgBoAHQAdABwADoALwAvAHcAdwB3AC4AYQBzAGMAZQBuAGQAZQByAGMAbwByAHAALgBjAG8AbQAvAGgAdAB0AHAAOgAvAC8AdwB3AHcALgBhAHMAYwBlAG4AZABlAHIAYwBvAHIAcAAuAGMAbwBtAC8AdAB5AHAAZQBkAGUAcwBpAGcAbgBlAHIAcwAuAGgAdABtAGwATABpAGMAZQBuAHMAZQBkACAAdQBuAGQAZQByACAAdABoAGUAIABBAHAAYQBjAGgAZQAgAEwAaQBjAGUAbgBzAGUALAAgAFYAZQByAHMAaQBvAG4AIAAyAC4AMABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBwAGEAYwBoAGUALgBvAHIAZwAvAGwAaQBjAGUAbgBzAGUAcwAvAEwASQBDAEUATgBTAEUALQAyAC4AMABXAGUAYgBmAG8AbgB0ACAAMQAuADAAUwBhAHQAIABOAG8AdgAgACAANgAgADEANAA6ADIANgA6ADQANgAgADIAMAAyADEAawBlAGUAcABsAGUAbwBGAG8AbgB0ACAAUwBxAHUAaQByAHIAZQBsAAIAAAAAAAD9JwBUAAAAAAAAAAAAAAAAAAAAAAAAAAAE/gAAAQIBAwADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEAowCEAIUAvQCWAOgAhgCOAIsAnQCpAKQAigDaAIMAkwEEAQUAjQCXAIgAwwDeAQYAngCqAPUA9AD2AKIArQDJAMcArgBiAGMAkABkAMsAZQDIAMoAzwDMAM0AzgDpAGYA0wDQANEArwBnAPAAkQDWANQA1QBoAOsA7QCJAGoAaQBrAG0AbABuAKAAbwBxAHAAcgBzAHUAdAB2AHcA6gB4AHoAeQB7AH0AfAC4AKEAfwB+AIAAgQDsAO4AugEHAQgBCQEKAQsBDAD9AP4BDQEOAQ8BEAD/AQABEQESARMBAQEUARUBFgEXARgBGQEaARsBHAEdAR4BHwD4APkBIAEhASIBIwEkASUBJgEnASgBKQEqASsBLAEtAS4BLwD6ANcBMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4A4gDjAT8BQAFBAUIBQwFEAUUBRgFHAUgBSQFKAUsBTAFNALAAsQFOAU8BUAFRAVIBUwFUAVUBVgFXAPsA/ADkAOUBWAFZAVoBWwFcAV0BXgFfAWABYQFiAWMBZAFlAWYBZwFoAWkBagFrAWwBbQC7AW4BbwFwAXEA5gDnAXIBcwF0AXUBdgF3AXgBeQF6AXsBfAF9AX4BfwGAAYEBggGDAYQApgGFAYYBhwGIAYkBigGLAYwBjQGOAY8BkAGRAZIBkwGUAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbABsQGyAbMBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAdQB1QHWAdcB2AHZAdoB2wHcAd0B3gHfAeAB4QHiAeMB5AHlAeYB5wHoAekB6gHrAewB7QHuAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6AfsB/AH9Af4B/wIAAgECAgIDAgQCBQIGAgcCCAIJAgoCCwIMAg0CDgIPAhACEQISAhMCFAIVAhYCFwIYAhkCGgIbAhwCHQIeAh8CIAIhAiICIwIkAiUCJgInANgA4QIoANsA3ADdAOAA2QDfAikCKgIrAiwCLQIuAi8CMAIxAjICMwI0AjUCNgI3AjgCOQI6AjsCPAI9Aj4CPwJAAkECQgJDAkQCRQJGAkcCSAJJAkoCSwJMAk0CTgJPAlACUQJSAlMCVAJVAlYCVwJYAlkCWgJbAlwCXQJeAl8CYAJhAmICYwJkAmUCZgJnAmgCaQJqAmsCbAJtAm4CbwJwAnEAmwJyAnMCdAJ1AnYCdwJ4AnkCegJ7AnwCfQJ+An8CgAKBAoICgwKEAoUChgKHAogCiQKKAosCjAKNAo4CjwKQApECkgKTApQClQKWApcCmAKZApoCmwKcAp0CngKfAqACoQKiAqMCpAKlAqYCpwKoAqkCqgKrAqwCrQKuAq8CsAKxArICswK0ArUCtgK3ArgCuQK6ArsCvAK9Ar4CvwLAAsECwgLDAsQCxQLGAscCyALJAsoCywLMAs0CzgLPAtAC0QLSAtMC1ALVAtYC1wLYAtkC2gLbAtwC3QLeAt8C4ALhAuIC4wLkAuUC5gLnAugC6QLqAusC7ALtAu4C7wLwAvEC8gLzAvQC9QL2AvcC+AL5AvoC+wL8Av0C/gL/AwADAQMCAwMDBAMFAwYDBwMIAwkDCgMLAwwDDQMOAw8DEAMRAxIDEwMUAxUDFgMXAxgDGQMaAxsDHAMdAx4DHwMgAyEDIgMjAyQDJQMmAycDKAMpAyoDKwMsAy0DLgMvAzADMQMyAzMDNAM1AzYDNwM4AzkDOgM7AzwDPQM+Az8DQANBA0IDQwNEA0UDRgNHA0gDSQNKA0sDTANNA04DTwNQA1EDUgNTA1QDVQNWA1cDWANZA1oDWwNcA10DXgNfA2ADYQNiA2MDZANlA2YDZwNoA2kDagNrA2wDbQNuA28DcANxA3IDcwN0A3UDdgN3A3gDeQN6A3sDfAN9A34DfwOAA4EDggODA4QDhQOGA4cDiAOJA4oDiwOMA40DjgOPA5ADkQOSA5MDlAOVA5YDlwOYA5kDmgObA5wDnQOeA58DoAOhA6IDowOkA6UDpgOnA6gDqQOqA6sDrAOtA64DrwOwA7EDsgOzA7QDtQO2A7cDuAO5A7oDuwO8A70DvgO/A8ADwQPCA8MDxAPFA8YDxwPIA8kDygPLA8wDzQPOA88D0APRA9ID0wPUA9UD1gPXA9gD2QPaA9sD3APdA94D3wPgA+ED4gPjA+QD5QPmA+cD6APpA+oD6wPsA+0D7gPvA/AD8QPyA/MD9AP1A/YD9wP4A/kD+gP7A/wD/QP+A/8EAAQBBAIEAwQEBAUEBgQHBAgECQQKBAsEDAQNBA4EDwQQBBEEEgQTBBQEFQQWBBcEGAQZBBoEGwQcBB0EHgQfBCAEIQQiBCMEJAQlBCYEJwQoBCkEKgQrBCwELQQuBC8EMAQxBDIEMwQ0BDUENgQ3BDgEOQQ6BDsEPAQ9BD4EPwRABEEEQgRDBEQERQRGBEcESARJBEoESwRMBE0ETgRPBFAEUQRSBFMEVARVBFYEVwRYBFkEWgRbBFwEXQReBF8EYARhBGIEYwRkBGUEZgRnBGgEaQRqBGsEbARtBG4EbwRwBHEEcgRzBHQEdQR2BHcEeAR5BHoEewR8BH0EfgR/BIAEgQSCBIMEhASFBIYEhwSIBIkEigSLBIwEjQSOBI8EkASRBJIEkwSUBJUElgSXBJgEmQSaBJsEnASdBJ4EnwSgBKEEogSjBKQEpQSmBKcEqASpALIAswSqBKsAtgC3AMQErAC0ALUAxQStAIIAwgCHAKsErgSvBLAEsQSyAMYEswS0BLUAvgC/BLYEtwC8BLgEuQS6BLsEvAS9BL4EvwTABMEA9wTCBMMExATFBMYExwTIBMkEygTLBMwEzQTOBM8E0ATRBNIE0wCMAJgAqACaAJkE1AClAJIAnACnAI8AlACVALkE1QTWBNcE2ATZBNoE2wTcBN0E3gTfBOAE4QTiBOME5ATlBOYE5wToBOkE6gTrBOwE7QTuBO8E8ATxBPIE8wT0BPUE9gT3BPgE+QT6BPsE/AT9BP4E/wUABQEFAgUDBQQFBQUGBQcFCAZnbHlwaDEHdW5pMDAwRAd1bmkwMEIyB3VuaTAwQjMHdW5pMDBCOQdBbWFjcm9uB2FtYWNyb24GQWJyZXZlBmFicmV2ZQdBb2dvbmVrB2FvZ29uZWsLQ2NpcmN1bWZsZXgLY2NpcmN1bWZsZXgKQ2RvdGFjY2VudApjZG90YWNjZW50BkRjYXJvbgZkY2Fyb24GRGNyb2F0B0VtYWNyb24HZW1hY3JvbgZFYnJldmUGZWJyZXZlCkVkb3RhY2NlbnQKZWRvdGFjY2VudAdFb2dvbmVrB2VvZ29uZWsGRWNhcm9uBmVjYXJvbgtHY2lyY3VtZmxleAtnY2lyY3VtZmxleApHZG90YWNjZW50Cmdkb3RhY2NlbnQHdW5pMDEyMgd1bmkwMTIzC0hjaXJjdW1mbGV4C2hjaXJjdW1mbGV4BEhiYXIEaGJhcgZJdGlsZGUGaXRpbGRlB0ltYWNyb24HaW1hY3JvbgZJYnJldmUGaWJyZXZlB0lvZ29uZWsHaW9nb25lawJJSgJpagtKY2lyY3VtZmxleAtqY2lyY3VtZmxleAd1bmkwMTM2B3VuaTAxMzcMa2dyZWVubGFuZGljBkxhY3V0ZQZsYWN1dGUHdW5pMDEzQgd1bmkwMTNDBkxjYXJvbgZsY2Fyb24ETGRvdARsZG90Bk5hY3V0ZQZuYWN1dGUHdW5pMDE0NQd1bmkwMTQ2Bk5jYXJvbgZuY2Fyb24LbmFwb3N0cm9waGUDRW5nA2VuZwdPbWFjcm9uB29tYWNyb24GT2JyZXZlBm9icmV2ZQ1PaHVuZ2FydW1sYXV0DW9odW5nYXJ1bWxhdXQGUmFjdXRlBnJhY3V0ZQd1bmkwMTU2B3VuaTAxNTcGUmNhcm9uBnJjYXJvbgZTYWN1dGUGc2FjdXRlC1NjaXJjdW1mbGV4C3NjaXJjdW1mbGV4B3VuaTAxNjIHdW5pMDE2MwZUY2Fyb24GdGNhcm9uBFRiYXIEdGJhcgZVdGlsZGUGdXRpbGRlB1VtYWNyb24HdW1hY3JvbgZVYnJldmUGdWJyZXZlBVVyaW5nBXVyaW5nDVVodW5nYXJ1bWxhdXQNdWh1bmdhcnVtbGF1dAdVb2dvbmVrB3VvZ29uZWsLV2NpcmN1bWZsZXgLd2NpcmN1bWZsZXgLWWNpcmN1bWZsZXgLeWNpcmN1bWZsZXgGWmFjdXRlBnphY3V0ZQpaZG90YWNjZW50Cnpkb3RhY2NlbnQFbG9uZ3MHdW5pMDE4MAd1bmkwMTgxB3VuaTAxODIHdW5pMDE4Mwd1bmkwMTg0B3VuaTAxODUHdW5pMDE4Ngd1bmkwMTg3B3VuaTAxODgHdW5pMDE4OQd1bmkwMThBB3VuaTAxOEIHdW5pMDE4Qwd1bmkwMThEB3VuaTAxOEUHdW5pMDE4Rgd1bmkwMTkwB3VuaTAxOTEHdW5pMDE5Mwd1bmkwMTk0B3VuaTAxOTUHdW5pMDE5Ngd1bmkwMTk3B3VuaTAxOTgHdW5pMDE5OQd1bmkwMTlBB3VuaTAxOUIHdW5pMDE5Qwd1bmkwMTlEB3VuaTAxOUUHdW5pMDE5RgVPaG9ybgVvaG9ybgd1bmkwMUEyB3VuaTAxQTMHdW5pMDFBNAd1bmkwMUE1B3VuaTAxQTYHdW5pMDFBNwd1bmkwMUE4B3VuaTAxQTkHdW5pMDFBQQd1bmkwMUFCB3VuaTAxQUMHdW5pMDFBRAd1bmkwMUFFBVVob3JuBXVob3JuB3VuaTAxQjEHdW5pMDFCMgd1bmkwMUIzB3VuaTAxQjQHdW5pMDFCNQd1bmkwMUI2B3VuaTAxQjcHdW5pMDFCOAd1bmkwMUI5B3VuaTAxQkEHdW5pMDFCQgd1bmkwMUJDB3VuaTAxQkQHdW5pMDFCRQd1bmkwMUJGB3VuaTAxQzAHdW5pMDFDMQd1bmkwMUMyB3VuaTAxQzMHdW5pMDFDNAd1bmkwMUM1B3VuaTAxQzYHdW5pMDFDNwd1bmkwMUM4B3VuaTAxQzkHdW5pMDFDQQd1bmkwMUNCB3VuaTAxQ0MHdW5pMDFDRAd1bmkwMUNFB3VuaTAxQ0YHdW5pMDFEMAd1bmkwMUQxB3VuaTAxRDIHdW5pMDFEMwd1bmkwMUQ0B3VuaTAxRDUHdW5pMDFENgd1bmkwMUQ3B3VuaTAxRDgHdW5pMDFEOQd1bmkwMURBB3VuaTAxREIHdW5pMDFEQwd1bmkwMUREB3VuaTAxREUHdW5pMDFERgd1bmkwMUUwB3VuaTAxRTEHdW5pMDFFMgd1bmkwMUUzB3VuaTAxRTQHdW5pMDFFNQZHY2Fyb24GZ2Nhcm9uB3VuaTAxRTgHdW5pMDFFOQd1bmkwMUVBB3VuaTAxRUIHdW5pMDFFQwd1bmkwMUVEB3VuaTAxRUUHdW5pMDFFRgd1bmkwMUYwB3VuaTAxRjEHdW5pMDFGMgd1bmkwMUYzB3VuaTAxRjQHdW5pMDFGNQd1bmkwMUY2B3VuaTAxRjcHdW5pMDFGOAd1bmkwMUY5CkFyaW5nYWN1dGUKYXJpbmdhY3V0ZQdBRWFjdXRlB2FlYWN1dGULT3NsYXNoYWN1dGULb3NsYXNoYWN1dGUHdW5pMDIwMAd1bmkwMjAxB3VuaTAyMDIHdW5pMDIwMwd1bmkwMjA0B3VuaTAyMDUHdW5pMDIwNgd1bmkwMjA3B3VuaTAyMDgHdW5pMDIwOQd1bmkwMjBBB3VuaTAyMEIHdW5pMDIwQwd1bmkwMjBEB3VuaTAyMEUHdW5pMDIwRgd1bmkwMjEwB3VuaTAyMTEHdW5pMDIxMgd1bmkwMjEzB3VuaTAyMTQHdW5pMDIxNQd1bmkwMjE2B3VuaTAyMTcHdW5pMDIxOAd1bmkwMjE5B3VuaTAyMUEHdW5pMDIxQgd1bmkwMjFDB3VuaTAyMUQHdW5pMDIxRQd1bmkwMjFGB3VuaTAyMjAHdW5pMDIyMQd1bmkwMjIyB3VuaTAyMjMHdW5pMDIyNAd1bmkwMjI1B3VuaTAyMjYHdW5pMDIyNwd1bmkwMjI4B3VuaTAyMjkHdW5pMDIyQQd1bmkwMjJCB3VuaTAyMkMHdW5pMDIyRAd1bmkwMjJFB3VuaTAyMkYHdW5pMDIzMAd1bmkwMjU0B3VuaTAyNTkHdW5pMDI3OAd1bmkwMjkyB3VuaTAyQkUHdW5pMDJDOQ1ob29rYWJvdmVjb21iB3VuaTAzMEYHdW5pMDMxMQd1bmkwMzI0B3VuaTAzMjUHdW5pMDMyNgd1bmkwMzJEB3VuaTAzMkUHdW5pMDMzMAd1bmkwMzMxB3VuaTAzNDUHdW5pMDM3NAd1bmkwMzc1B3VuaTAzN0EHdW5pMDM3Qgd1bmkwMzdDB3VuaTAzN0QFdG9ub3MNZGllcmVzaXN0b25vcwpBbHBoYXRvbm9zDEVwc2lsb250b25vcwhFdGF0b25vcwlJb3RhdG9ub3MMT21pY3JvbnRvbm9zDFVwc2lsb250b25vcwpPbWVnYXRvbm9zEWlvdGFkaWVyZXNpc3Rvbm9zBUFscGhhBEJldGEFR2FtbWEHdW5pMDM5NAdFcHNpbG9uBFpldGEDRXRhBVRoZXRhBElvdGEFS2FwcGEGTGFtYmRhAk11Ak51AlhpB09taWNyb24CUGkDUmhvBVNpZ21hA1RhdQdVcHNpbG9uA1BoaQNDaGkDUHNpB3VuaTAzQTkMSW90YWRpZXJlc2lzD1Vwc2lsb25kaWVyZXNpcwphbHBoYXRvbm9zDGVwc2lsb250b25vcwhldGF0b25vcwlpb3RhdG9ub3MUdXBzaWxvbmRpZXJlc2lzdG9ub3MFYWxwaGEEYmV0YQVnYW1tYQVkZWx0YQdlcHNpbG9uBHpldGEDZXRhBXRoZXRhBGlvdGEFa2FwcGEGbGFtYmRhB3VuaTAzQkMCbnUCeGkHb21pY3JvbgNyaG8Gc2lnbWExBXNpZ21hA3RhdQd1cHNpbG9uA3BoaQNjaGkDcHNpBW9tZWdhDGlvdGFkaWVyZXNpcw91cHNpbG9uZGllcmVzaXMMb21pY3JvbnRvbm9zDHVwc2lsb250b25vcwpvbWVnYXRvbm9zB3VuaTAzRDAGdGhldGExCFVwc2lsb24xB3VuaTAzRDMHdW5pMDNENARwaGkxBm9tZWdhMQd1bmkwM0Q3B3VuaTAzRDgHdW5pMDNEOQd1bmkwM0RBB3VuaTAzREIHdW5pMDNEQwd1bmkwM0REB3VuaTAzREUHdW5pMDNERgd1bmkwM0UwB3VuaTAzRTEHdW5pMDNFMgd1bmkwM0UzB3VuaTAzRTQHdW5pMDNFNQd1bmkwM0U2B3VuaTAzRTcHdW5pMDNFOAd1bmkwM0U5B3VuaTAzRUEHdW5pMDNFQgd1bmkwM0VDB3VuaTAzRUQHdW5pMDNFRQd1bmkwM0VGB3VuaTAzRjAHdW5pMDNGMQd1bmkwM0YyB3VuaTAzRjMHdW5pMDNGNAd1bmkwM0Y1B3VuaTAzRjYHdW5pMDNGNwd1bmkwM0Y4B3VuaTAzRjkHdW5pMDNGQQd1bmkwM0ZCB3VuaTAzRkMHdW5pMDNGRAd1bmkwM0ZFB3VuaTAzRkYHdW5pMDQwMAd1bmkwNDAxB3VuaTA0MDIHdW5pMDQwMwd1bmkwNDA0B3VuaTA0MDUHdW5pMDQwNgd1bmkwNDA3B3VuaTA0MDgHdW5pMDQwOQd1bmkwNDBBB3VuaTA0MEIHdW5pMDQwQwd1bmkwNDBEB3VuaTA0MEUHdW5pMDQwRgd1bmkwNDEwB3VuaTA0MTEHdW5pMDQxMgd1bmkwNDEzB3VuaTA0MTQHdW5pMDQxNQd1bmkwNDE2B3VuaTA0MTcHdW5pMDQxOAd1bmkwNDE5B3VuaTA0MUEHdW5pMDQxQgd1bmkwNDFDB3VuaTA0MUQHdW5pMDQxRQd1bmkwNDFGB3VuaTA0MjAHdW5pMDQyMQd1bmkwNDIyB3VuaTA0MjMHdW5pMDQyNAd1bmkwNDI1B3VuaTA0MjYHdW5pMDQyNwd1bmkwNDI4B3VuaTA0MjkHdW5pMDQyQQd1bmkwNDJCB3VuaTA0MkMHdW5pMDQyRAd1bmkwNDJFB3VuaTA0MkYHdW5pMDQzMAd1bmkwNDMxB3VuaTA0MzIHdW5pMDQzMwd1bmkwNDM0B3VuaTA0MzUHdW5pMDQzNgd1bmkwNDM3B3VuaTA0MzgHdW5pMDQzOQd1bmkwNDNBB3VuaTA0M0IHdW5pMDQzQwd1bmkwNDNEB3VuaTA0M0UHdW5pMDQzRgd1bmkwNDQwB3VuaTA0NDEHdW5pMDQ0Mgd1bmkwNDQzB3VuaTA0NDQHdW5pMDQ0NQd1bmkwNDQ2B3VuaTA0NDcHdW5pMDQ0OAd1bmkwNDQ5B3VuaTA0NEEHdW5pMDQ0Qgd1bmkwNDRDB3VuaTA0NEQHdW5pMDQ0RQd1bmkwNDRGB3VuaTA0NTAHdW5pMDQ1MQd1bmkwNDUyB3VuaTA0NTMHdW5pMDQ1NAd1bmkwNDU1B3VuaTA0NTYHdW5pMDQ1Nwd1bmkwNDU4B3VuaTA0NTkHdW5pMDQ1QQd1bmkwNDVCB3VuaTA0NUMHdW5pMDQ1RAd1bmkwNDVFB3VuaTA0NUYHdW5pMDQ2MAd1bmkwNDYxB3VuaTA0NjIHdW5pMDQ2Mwd1bmkwNDY0B3VuaTA0NjUHdW5pMDQ2Ngd1bmkwNDY3B3VuaTA0NjgHdW5pMDQ2OQd1bmkwNDZBB3VuaTA0NkIHdW5pMDQ2Qwd1bmkwNDZEB3VuaTA0NkUHdW5pMDQ2Rgd1bmkwNDcwB3VuaTA0NzEHdW5pMDQ3Mgd1bmkwNDczB3VuaTA0NzQHdW5pMDQ3NQd1bmkwNDc2B3VuaTA0NzcHdW5pMDQ3OAd1bmkwNDc5B3VuaTA0N0EHdW5pMDQ3Qgd1bmkwNDdDB3VuaTA0N0QHdW5pMDQ3RQd1bmkwNDdGB3VuaTA0ODAHdW5pMDQ4MQd1bmkwNDgyB3VuaTA0ODMHdW5pMDQ4NAd1bmkwNDg1B3VuaTA0ODYHdW5pMDQ4Nwd1bmkwNDg4B3VuaTA0ODkHdW5pMDQ4QQd1bmkwNDhCB3VuaTA0OEMHdW5pMDQ4RAd1bmkwNDhFB3VuaTA0OEYHdW5pMDQ5MAd1bmkwNDkxB3VuaTA0OTIHdW5pMDQ5Mwd1bmkwNDk0B3VuaTA0OTUHdW5pMDQ5Ngd1bmkwNDk3B3VuaTA0OTgHdW5pMDQ5OQd1bmkwNDlBB3VuaTA0OUIHdW5pMDQ5Qwd1bmkwNDlEB3VuaTA0OUUHdW5pMDQ5Rgd1bmkwNEEwB3VuaTA0QTEHdW5pMDRBMgd1bmkwNEEzB3VuaTA0QTQHdW5pMDRBNQd1bmkwNEE2B3VuaTA0QTcHdW5pMDRBOAd1bmkwNEE5B3VuaTA0QUEHdW5pMDRBQgd1bmkwNEFDB3VuaTA0QUQHdW5pMDRBRQd1bmkwNEFGB3VuaTA0QjAHdW5pMDRCMQd1bmkwNEIyB3VuaTA0QjMHdW5pMDRCNAd1bmkwNEI1B3VuaTA0QjYHdW5pMDRCNwd1bmkwNEI4B3VuaTA0QjkHdW5pMDRCQQd1bmkwNEJCB3VuaTA0QkMHdW5pMDRCRAd1bmkwNEJFB3VuaTA0QkYHdW5pMDRDMAd1bmkwNEMxB3VuaTA0QzIHdW5pMDRDMwd1bmkwNEM0B3VuaTA0QzUHdW5pMDRDNgd1bmkwNEM3B3VuaTA0QzgHdW5pMDRDOQd1bmkwNENBB3VuaTA0Q0IHdW5pMDRDQwd1bmkwNENEB3VuaTA0Q0UHdW5pMDRDRgd1bmkwNEQwB3VuaTA0RDEHdW5pMDREMgd1bmkwNEQzB3VuaTA0RDQHdW5pMDRENQd1bmkwNEQ2B3VuaTA0RDcHdW5pMDREQQd1bmkwNERCB3VuaTA0REMHdW5pMDRERAd1bmkwNERFB3VuaTA0REYHdW5pMDRFMAd1bmkwNEUxB3VuaTA0RTIHdW5pMDRFMwd1bmkwNEU0B3VuaTA0RTUHdW5pMDRFNgd1bmkwNEU3B3VuaTA0RTgHdW5pMDRFOQd1bmkwNEVBB3VuaTA0RUIHdW5pMDRFQwd1bmkwNEVEB3VuaTA0RUUHdW5pMDRFRgd1bmkwNEYwB3VuaTA0RjEHdW5pMDRGMgd1bmkwNEYzB3VuaTA0RjQHdW5pMDRGNQd1bmkwNEY2B3VuaTA0RjcHdW5pMDRGOAd1bmkwNEY5B3VuaTA0RkEHdW5pMDRGQgd1bmkwNEZDB3VuaTA0RkQHdW5pMDRGRQd1bmkwNEZGB3VuaTFFMDAHdW5pMUUwMQd1bmkxRTAyB3VuaTFFMDMHdW5pMUUwNAd1bmkxRTA1B3VuaTFFMDYHdW5pMUUwNwd1bmkxRTA4B3VuaTFFMDkHdW5pMUUwQQd1bmkxRTBCB3VuaTFFMEMHdW5pMUUwRAd1bmkxRTBFB3VuaTFFMEYHdW5pMUUxMAd1bmkxRTExB3VuaTFFMTIHdW5pMUUxMwd1bmkxRTE0B3VuaTFFMTUHdW5pMUUxNgd1bmkxRTE3B3VuaTFFMTgHdW5pMUUxOQd1bmkxRTFBB3VuaTFFMUIHdW5pMUUxQwd1bmkxRTFEB3VuaTFFMUUHdW5pMUUxRgd1bmkxRTIwB3VuaTFFMjEHdW5pMUUyMgd1bmkxRTIzB3VuaTFFMjQHdW5pMUUyNQd1bmkxRTI2B3VuaTFFMjcHdW5pMUUyOAd1bmkxRTI5B3VuaTFFMkEHdW5pMUUyQgd1bmkxRTJDB3VuaTFFMkQHdW5pMUUyRQd1bmkxRTJGB3VuaTFFMzAHdW5pMUUzMQd1bmkxRTMyB3VuaTFFMzMHdW5pMUUzNAd1bmkxRTM1B3VuaTFFMzYHdW5pMUUzNwd1bmkxRTM4B3VuaTFFMzkHdW5pMUUzQQd1bmkxRTNCB3VuaTFFM0MHdW5pMUUzRAd1bmkxRTNFB3VuaTFFM0YHdW5pMUU0MAd1bmkxRTQxB3VuaTFFNDIHdW5pMUU0Mwd1bmkxRTQ0B3VuaTFFNDUHdW5pMUU0Ngd1bmkxRTQ3B3VuaTFFNDgHdW5pMUU0OQd1bmkxRTRBB3VuaTFFNEIHdW5pMUU0Qwd1bmkxRTREB3VuaTFFNEUHdW5pMUU0Rgd1bmkxRTUwB3VuaTFFNTEHdW5pMUU1Mgd1bmkxRTUzB3VuaTFFNTQHdW5pMUU1NQd1bmkxRTU2B3VuaTFFNTcHdW5pMUU1OAd1bmkxRTU5B3VuaTFFNUEHdW5pMUU1Qgd1bmkxRTVDB3VuaTFFNUQHdW5pMUU1RQd1bmkxRTVGB3VuaTFFNjAHdW5pMUU2MQd1bmkxRTYyB3VuaTFFNjMHdW5pMUU2NAd1bmkxRTY1B3VuaTFFNjYHdW5pMUU2Nwd1bmkxRTY4B3VuaTFFNjkHdW5pMUU2QQd1bmkxRTZCB3VuaTFFNkMHdW5pMUU2RAd1bmkxRTZFB3VuaTFFNkYHdW5pMUU3MAd1bmkxRTcxB3VuaTFFNzIHdW5pMUU3Mwd1bmkxRTc0B3VuaTFFNzUHdW5pMUU3Ngd1bmkxRTc3B3VuaTFFNzgHdW5pMUU3OQd1bmkxRTdBB3VuaTFFN0IHdW5pMUU3Qwd1bmkxRTdEB3VuaTFFN0UHdW5pMUU3RgZXZ3JhdmUGd2dyYXZlBldhY3V0ZQZ3YWN1dGUJV2RpZXJlc2lzCXdkaWVyZXNpcwd1bmkxRTg2B3VuaTFFODcHdW5pMUU4OAd1bmkxRTg5B3VuaTFFOEEHdW5pMUU4Qgd1bmkxRThDB3VuaTFFOEQHdW5pMUU4RQd1bmkxRThGB3VuaTFFOTAHdW5pMUU5MQd1bmkxRTkyB3VuaTFFOTMHdW5pMUU5NAd1bmkxRTk1B3VuaTFFOTYHdW5pMUU5Nwd1bmkxRTk4B3VuaTFFOTkHdW5pMUU5QQd1bmkxRTlCB3VuaTFFOUUHdW5pMUVBMAd1bmkxRUExB3VuaTFFQTIHdW5pMUVBMwd1bmkxRUE0B3VuaTFFQTUHdW5pMUVBNgd1bmkxRUE3B3VuaTFFQTgHdW5pMUVBOQd1bmkxRUFBB3VuaTFFQUIHdW5pMUVBQwd1bmkxRUFEB3VuaTFFQUUHdW5pMUVBRgd1bmkxRUIwB3VuaTFFQjEHdW5pMUVCMgd1bmkxRUIzB3VuaTFFQjQHdW5pMUVCNQd1bmkxRUI2B3VuaTFFQjcHdW5pMUVCOAd1bmkxRUI5B3VuaTFFQkEHdW5pMUVCQgd1bmkxRUJDB3VuaTFFQkQHdW5pMUVCRQd1bmkxRUJGB3VuaTFFQzAHdW5pMUVDMQd1bmkxRUMyB3VuaTFFQzMHdW5pMUVDNAd1bmkxRUM1B3VuaTFFQzYHdW5pMUVDNwd1bmkxRUM4B3VuaTFFQzkHdW5pMUVDQQd1bmkxRUNCB3VuaTFFQ0MHdW5pMUVDRAd1bmkxRUNFB3VuaTFFQ0YHdW5pMUVEMAd1bmkxRUQxB3VuaTFFRDIHdW5pMUVEMwd1bmkxRUQ0B3VuaTFFRDUHdW5pMUVENgd1bmkxRUQ3B3VuaTFFRDgHdW5pMUVEOQd1bmkxRURBB3VuaTFFREIHdW5pMUVEQwd1bmkxRUREB3VuaTFFREUHdW5pMUVERgd1bmkxRUUwB3VuaTFFRTEHdW5pMUVFMgd1bmkxRUUzB3VuaTFFRTQHdW5pMUVFNQd1bmkxRUU2B3VuaTFFRTcHdW5pMUVFOAd1bmkxRUU5B3VuaTFFRUEHdW5pMUVFQgd1bmkxRUVDB3VuaTFFRUQHdW5pMUVFRQd1bmkxRUVGB3VuaTFFRjAHdW5pMUVGMQZZZ3JhdmUGeWdyYXZlB3VuaTFFRjQHdW5pMUVGNQd1bmkxRUY2B3VuaTFFRjcHdW5pMUVGOAd1bmkxRUY5B3VuaTIwMEMHdW5pMjAwRAd1bmkyMDBFB3VuaTIwMEYKZmlndXJlZGFzaAd1bmkyMDE1DXVuZGVyc2NvcmVkYmwNcXVvdGVyZXZlcnNlZAd1bmkyMDFGB3VuaTIwMkEHdW5pMjAyQgd1bmkyMDJDB3VuaTIwMkQHdW5pMjAyRQZtaW51dGUGc2Vjb25kB3VuaTIwMzQJZXhjbGFtZGJsB3VuaTIwM0UHdW5pMjA1RQd1bmkyMDZBB3VuaTIwNkIHdW5pMjA2Qwd1bmkyMDZEB3VuaTIwNkUHdW5pMjA2Rgd1bmkyMEEwDWNvbG9ubW9uZXRhcnkHdW5pMjBBMgRsaXJhB3VuaTIwQTUHdW5pMjBBNgZwZXNldGEHdW5pMjBBOAd1bmkyMEE5B3VuaTIwQUEEZG9uZwRFdXJvB3VuaTIwQUQHdW5pMjBBRQd1bmkyMEFGB3VuaTIwQjAHdW5pMjBCMQd1bmkyMEIyB3VuaTIwQjMHdW5pMjBCNAd1bmkyMEI1B3VuaTIyMTkHdW5pMjVGQwd1bmlGQjAxB3VuaUZCMDIJZ2x5cGgxMjI5CWdseXBoMTIzMAlnbHlwaDEyMzEJZ2x5cGgxMjMyCWdseXBoMTIzMwlnbHlwaDEyMzQJZ2x5cGgxMjM1CWdseXBoMTIzNglnbHlwaDEyMzcJZ2x5cGgxMjM4CWdseXBoMTIzOQlnbHlwaDEyNDAJZ2x5cGgxMjQxCWdseXBoMTI0MglnbHlwaDEyNDMJZ2x5cGgxMjQ0CWdseXBoMTI0NQlnbHlwaDEyNDYJZ2x5cGgxMjQ3CWdseXBoMTI0OAlnbHlwaDEyNDkJZ2x5cGgxMjUwCWdseXBoMTI1MQlnbHlwaDEyNTIJZ2x5cGgxMjUzCWdseXBoMTI1NAlnbHlwaDEyNTUJZ2x5cGgxMjU2CWdseXBoMTI1NwlnbHlwaDEyNTgJZ2x5cGgxMjU5CWdseXBoMTI2MAlnbHlwaDEyNjEJZ2x5cGgxMjYyCWdseXBoMTI2MwlnbHlwaDEyNjQJZ2x5cGgxMjY1CWdseXBoMTI2NglnbHlwaDEyNjcJZ2x5cGgxMjY4CWdseXBoMTI2OQlnbHlwaDEyNzAJZ2x5cGgxMjcxCWdseXBoMTI3MglnbHlwaDEyNzMJZ2x5cGgxMjc0CWdseXBoMTI3NQlnbHlwaDEyNzYJZ2x5cGgxMjc3AABBJgFTAAEBTQBVAVIAAQFNAFUBVgFUABQAHwFVAVQAHwAfAU8AMwFOAFUBTAAzAU0AVQE9AD0BPABVATwAAQE6AFUBOwA9AToAVQE1ATSygB8AQS4BNAAQATQAAgE0AAIBLgBVATMASAEyAFUAgAEyAAEBMgACAS4AVQExAD0BMABVAA8BMAABATAAAgEuAFUBLwA9AS4AVQAgAS4AYAEuAAIAAAEuACABLgACAAkBLrIBAFW4AS2yPQBVuAEsswD/H3BBEQFEAAEBRAABAT4AVQFDAD0BQgBVAUIAAQE+AFUBPwA9AT5AZ1UA/QH1UCgf8kYoH/FGKh/wRjUfj+6f7q/uA2/vj+8Cv+8BoO8BH+9f72/vAwDsQOwCCutG/x/n5CYf5uQ9H+XkHh8P5AEd4+JGHw/iAUDiRhYf4eBGH7/gz+Df4ANA4DM2RuBGGB+8ARQAPgESAFUBE0AMPQNV3z3dVd493FUAQRIBFgABARYAAQEVAFUArwEVAAEAIAEVAFABFQACAA8BFQABARFAUwP/H90B3FUg3FDcgNyw3AQP3AHQFTMfX8Nvw3/DA7/CAcFQJh9wvgEgvjC+wL4DcL6AvgIPvB+8Ai+8P7xvvK+837wFua0mHyC4MLhQuHC4gLgFuP/AQBy4EylGELcBILdQt4C3sLcEgLWwtQIPsz+z77MDuAENQCuqSB+AsJCwArCwwLDQsAMvrz+vAqCtsK0CwK3QrQIvrD+sAp+rAcCq0KoCQQ0BDwAyAQ4AVQAAAQ4AEAEOACABDgADAA8BEEAVAVCcYJxwnAOZliYfmEYmHzCXQJcCuP/As5YWHEa4/8BACZYOEUahlDwfoEEJAUUAPAAfAUcBRQA8AB8BRgFFQChkH5Ub/x8PlK+Uv5QDQJQdMUZAlBYbRkCUDA9GD5Mvkz+Tf5PvkwUPugEMAG8BDEAgApKNJh+RU/8f35ABMJABH5AvkAJvkH+QAgCPEI8gjwO4/8BAII8YHEYgjjCOAk+NX41vjQMwjAEPjB+ML4wDQIwQE0YQvwELACABCwAwAQsAA//AAQuyFyBGuf/AAQtAUBAURouCJh+JSjwfiIc9H4eEPB+GSv8fn4UBEIQghDCEAzCDAX+CAUCCCQxGc1AmH29GNR9uRjUfGgEYVRkzGFUHMwNVBgP/H2BQJh9fUCYfuf/gAQeyHyZGuf/gAQdAHxMcRl5aSB9cRjEfW1pIH1pGMR8TMhJVBQEDVQQyA1W4AQi1GzwfDwMBuQEZARiyNR9AuAEYshcoRrgBCkAlUCYfUlAbH+9R/1ECQFE1OEZAUSUoRs9QAd9MAUxGHR9LRkgfULgBG0BiAUpGJh9JRjUfSEY1H0dGNR+vRgHfRu9GAoBGARcBFVUWMhVVEQEPVRAyD1UCAQBVAQD/HxwbZB8fDz8PXw9/DwQPDy8PTw9vD48P3w//Dwc/D38P7w8DbwABTwABoBYBBQG4AZCxVFMrK0u4B/9SS7AJUFuwAYiwJVOwAYiwQFFasAaIsABVWltYsQEBjlmFjY0AQh1LsDJTWLBgHVlLsGRTWLBAHVlLsIBTWLAQHbEWAEJZc3RzdHUrKysrKysrAXN0dSsrKytzACsrdHQrK3MrKysrcysrKysBKysrACsrKysrKysrKwErKwArAStzdHRzKysrKysrK3MAK3N0dHQrdXN0dHQrK3NzKysrcysrKysrASsrcysrAHN0cysBc3N0AHN0dHN0K3MBcwBzdCtzK3N0AXN0dQArcwF0ACtzcysrc3NzK3MrKysrASsrdCsrXnMrAF5zKysrAStecwBzc3N0cwErKysAK3MrKysrcysrK15zdCsrcysrcysrcysrKysrKysrKysYAAA=" } } }