riftdrive 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -37016,7 +37016,7 @@ function loadConfig(env = process.env) {
37016
37016
  }
37017
37017
 
37018
37018
  // server/src/bundled.ts
37019
- var APP_VERSION = "0.1.0";
37019
+ var APP_VERSION = "0.2.0";
37020
37020
  var WEB_ASSETS = {
37021
37021
  "/assets/dm-sans-latin-400-normal-BwCSEQnW.woff": { type: "font/woff", base64: "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" },
37022
37022
  "/assets/dm-sans-latin-400-normal-CW0RaeGs.woff2": { type: "font/woff2", base64: "d09GMgABAAAAADd4ABAAAAAAgiAAADcVAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGoFeG88wHIxKBmA/U1RBVF4AhQQRCAqBgSzmQQuEHgABNgIkA4g4BCAFhSwHiTgMBxt/cSVjW0Yz6A4cKkpvNYgi2DhCwJh3sxEWbBxAP9Cr7P+/JTcGDOhBs3pYmSxSVQ27UIXYlJgDp7CLi4zxVHNVqXNzaOgdea46iUqi8qIyst57NgxffybwauB42fyjCjcbjegmD1+ZWXsyYpPVwLDJsDr4IzTUF6VOo1fH2HSrZJbfl7RozFZZ30PXHyh5BrjDihjj5ATxOfVn98lKItdqPwHAFYCPRGQNkZv9z2xjaQJKCyJiQ0VBtEPQTmlqTBdjaIIFIaeQUjXWq12N7b6nSUxppntPr3TT77rXe9qP/MP/yd7/o4HvnJ1NSjHAKtFCTVJLLv9PDX479y0hEkjESig0mNGAdrvB1qzm7szf4flt9hbJKkAbpD75qf5RfJD6oICC4iZGb6drXcaVc1F54a5y64t0V5sXUf/nVJc985gpc/L21qZWJpdSpHSBuyC4wRlF+P6pnN4dIBnx8Tk8LFc9dwCAAML7z5nOSKvAjBU3iPzBq59EBiqzdZWLECKyl/h0aU99paLdftRMRJbIFcB/AioIDJ4D4ZudcOtX5ZWpZTqDuf1bvJ+34EdEvfjGUy62DnIuUxC6wTQWa5r7WAAyXC4N6Oq4hzO0OpByXBC4J3COfMujeDLWLsk3JN9RxvpYVdYG6WXKfJIoyJSFn8lHihOliSoXD/8t+2b3QpZfIguybCGxrrd6NrytMwRZpzfKx5CKPOTgszCo7BlCUhvUHpzTwL/u+9TnsvtmVc04qSclCCHk9v1Z/5Op9n2BZLvghamcyjIRQoilS0lH1qZjmbOsRp7gzXe5L/UkYxpjTFMIIYwQ3vi9Y7j2kSkVcsTW+mkSEEpAC3gRCSHEBiF22AnCwJhaFqaCgENUly7qynl4XCCax4jlceRcIZfny+dq5VzHwE1svMpaXquO1/PxFn4e0M7DwnyL7bJ/F/Hu1hx63wLoMof+8VH/uSl+x93TQxAwauBzyYF/giGgkaISsurq1lUgYt+dQgEQAQPoOgUQEOg+u7UFwIsmBSD60bJ5gIsgZ3A5oJQpZSERo1Pt0wCRfxGSL2NAZoi1ZXY64FX7bxiCXP7Twm6BZzQG3xyNII5c5CV4V6eOJ9oCXFUkKNmnov+1UWn9otM6SY6+dL+dem2xjgWxYhiXmKdDk05Sr1VVM4FTqkojDeUIE80huzagqqQXBF9VmKJc6ThIQAD+/gbg/9r3fclqn4w7dna9heAUeYXIYMzX4zw+fg4ECncBhYWIMO8WIp8cth9ZGsrtKKdIRsymectxV6CsAYAp0pYfwwnjPFgcaolJ8K0cmRbGRFaIbnw5AH6rmIEZcBlQikj8YQdil511RWoPswNlsMLsMGHcSZjoyhIxLWd89LXHMpmN2jwE/8LEAKOySBbFhCyaJTEly2AaWvj41ZVV09oqLlLMzGx8bUG2ntXjRjA38wz1hgNdXTnpJoPC6bHGZ3PWQjvLXMAs5CqDvP9i0SCXBBiw/i8VT2I9C8rn103BveYZwQGQFFs5rWHoIkmxu2GfCrDkPo/DXciijoC33ntPEHpwp67G7wyABmDlTbWHrgstNhyu8t/uyLqptUq/yvwWyqlpFAUQrKTnGt0aBIRz1wH4xYGKybW+ENmX9Co7KGX0OhZnI/2GYoYB5XMBKGjAN1tODh3PWwzTL0XQbXGKVmx/UsSeFiChfFBUZXKFeFq7VgR4+tI0XIx5LBpx+PLO/fwXL7XpSDwpCW1PSZC8pI6VvCt+OT5VrV9xK6e8WUhMnt7eX7F69fBYg+WKXtCfQW3UXEiY5OHyBV7xkkhSdrb98wPWqw+XJsBaN9XdRVH6CSbhd3sjKjjI1FnJ6xREQ54VgqqVemxZ7BjPAsBlBN1l3+eI1nZ5vaJql9V4/b4S5AkZr7pctelvf72wbYBf1jA42+pVvBjWfwXn35N4MEWDSEBfBBJPNIYYyaKkSiWhlC+WmkEqE5sCVaoVqmVXbAOPUl5NTFr42QQEVAkLq7bFdit06LDagAFrDBu21n4HrTNjht0ZZ9U577x6F83a6G3vcHrfArdrrmmAyAGRSFRUPDQ0EB0DiokJYuGCeHhQ/AGHxrsJkofmqeRQadJNxcZRSg5lcAZVc7ZMuXB5PFr+akxqGjRa5TAV1pxKxwZRxSNVc6oVPEYNEjAodfWNCA4eCC8fRDMc0cIJfozAg1FOj1Eoy9+Gbrs41w4Uo2J8xnc5zsIFzqGQXIELoBAYE1F47PsYLscicgikKo+Eo6KkFwGBZC6TGfMqSsSiBooIEAFziyIWybBbjjOXb82jaJUhlCPcUtTXi2AgwxojBZynmlPUcgk7slAxCkUFHOUbDjVqggI7DJ+xURBukYNCSEzMxMgVFZV6Z0i3GLPFmK0di8dc2JAMFncIeaNggLNf7gU+KuwLSwktgr2CcoGaf9dES1OW/+P1SYW8y7xZXj2Po2bc/7gHo56MqrjHWJSnURJ5M/KuiDSFRDoiw5E45z/OLxXokD8czneIFfxe+x7nLc4Ax8XJYb/AXsEuYN3cflwmibGeaRfbve2qweVBXf/Pfkef32f3ac1/zb/NO01zU9dUxlrGJmvs6ljt6PAIv9bWSgrpjVfvVXWVqGJbb/mzXI3me9CZUlE+N2Uf8kSuylxhEvFffBufQMT2B9aYXPlMYrGdmSCMVBUuE8z4aCp6Yia52dZtfLna1bQ2CCgUsl2VPdZ8Ddyrs/7W9jDf2KPc0ePc2dPNXQ00nruJd8bfZIdq7UhHC3Wis23mku068+7mmq8D945HB+3Kurrajbr7sI/qD3EYmPOO673mAMMw84Q5rkJ0aE73uSiwGCIoDI5AQSa1faofO5xXl99TkFH3oVHZQtlqWy2EpToDhcERKMipqimvJb+oF2jmH7qSfZNcUG88UvS6GOBJkCiJTLJUcop/VvXkteUX1Is0FqEqbIuttl1fl2u9mvqhMWBCxRTPjHNnKBeVzB5aFEkG+wcxKAyOQEHuUzOoWvJil58qWInpWdMwZQu01bb9DjcCVXtb60L0Txv6NA2QBjUMR4zJRE5yTHmb5mnUXUTM4sP4aN0W2dwX13TZ0z303iScyWG7hKHMral1qi/ZJ71Z7QbMsw9yNCKVccsvA/vTEGO6poaRDWZBHAqDI1CQU2qrVKX8ou7QGMhBwnB0Mfo1GMKTIFESmWSp5BRFx6FnYGRiZmFl4+Dk4ubh5dP8wFwwDoHC4AgUZKG3ioEnQaIkMslSySmKNlWoSLESpcqU09EzMDIxs7CycXBycfPw8mk+7IcClD2YLjvcQ+pD9RPm+kPzQDx6HgZ4EiRKIpMslZyiKjQzgyxky5E7zTsov0ZNk+si7cllB1sX0f1ja4+8erOPp7/81hhiwogpt5sIdNFNk5OY8gfmoacw8CRIlEQmWSo5xTnVC5U8bNVPnZReDIxMzCysbBycXNw8vHyan72Hr4fQ9GN9mH413ZHaWE65b3/EgeLgdLpUJ8pwcv+U72ZoTuNMXjRplriWGV3RqNE/gqHCpMbCxhEpCjd4K3wCwukyWiJpolMcxBSSiIU04hCfCaVEl0QmWYpU8khDOsW/KampcOWRyIdWfJRGRdtWqEixEqXKlBcdl56BkYmZhZVtWqWhxrEN6m0Mhzi5uHnCC5/maOGVftIeaK9kj3Td0x6+Plz/bsBbg1ZzJW+NK5pwadJr+204UBycTrvnhGknD88ZMc/xdmrvWF5luVZGJdgkBCgMjkBBHqb2ibhOO1VoihQrUapMedGJ6BkYmZhZWNk4OLm4eXj5NP+Wn6/LgG4Nuf23PtKIS+OmTOoxbcQc2zxKYnChFk3RQXoGRiZmFlY2Dk4ubh5ePs1rSNMhn+vBDEzzypkpwomSnSzZoiMCMA0iKAyOQEH+M7VB4kRBNGDS4BjDcWXjvppUMG3KYbtOACdVzgX6nvkZwGuouvKKnk/MapDdRKmSUXfW51F5yVGIHmKAJ0GiJDLJUskpumruBw8V5Lep/6JhP0AKIcKRW9i2Ytv+lD2LymiLDvawdoi6aPSifwNoNBzh+CguF3o00OIBrz0Y6O0u6PFuedgfIAI7gDgUBkegIJ9NjVDlq3txfqagbX/ZQemUvZuOdKQMnB7mhK2TnGwQg10ggsLgCBTkOWp+FXUAkCMifE8H1Bn9uTZRAcd4nZpZlzPQ3FgbbBbiUBgcgYIs9JoYeLV/RUJEoiSRSc6UoVRCDsWah9uXUpsrRJFiJUqVKS86Jj0DIxMzCyvb4cpQVcpqNG0w9TYWB5OTi5uHl6834jA1bY6pjjCdfexVdM1bt0lsuGj9vosxs+5T9cR93JrGWftxB9zB6TTLCYaT5Szi/O5iErNua+w1z/XuNa9qupaN6+HG+JGqGHAaiENhcAQK8hw1l9eb+cMH3eJ0FUvj0a0lLDrtzLDvJgiTco5QoEleYzE/SsE8iENhcAQKMqlxqtSmIg6UlFpXUG/x8xth3aymwsthJsmRmBE74+UiZbY2sNKpvIaqmKxqFYt7bEJtvlPdeA0AAACAD4P4VR8sP9rRVsPhoYr+9Fy/gBgV6HUwHE+CRElkkqWSU5xTbQMZm9Q9GkJX6BkYmZjDAitbFWs4Ipzi4ubh5dNcQqE2n9uj4/63SoStA7OKp1yn3PisQhxKqhhAQQGdOj010NpgzwEAY0wZqgZUV+8NS9xVNM6MuVjnddvoy2hfUeiKFCtRqkx50YnpGRiZmFlY2Tg4ubh5ePk0NxyFvtpoGdc0N8potxRKkWIlSpUpp6NnYGRiZmFl21XGVVVfa4aLmycbtHkjfGie+jUFQnWe64LobnSub5xrDjEvgehMYrAcAjoZPQyMTMwsrGwcnFzcPLx8mqud5RYlW7Gt9ao7DXShy1s0sxH61h1d+arVRK6li9AgSR4/4CQUe6Ej2CuHcCDWETH/W1DotiFWAD7m/+AcOsDqgDUAawLWAqwNWAewLmA9wI6AnQA7A3YB7ArYHbAHYG9AwWchHRMiUwBqXVyhUFOBdtqoMCqKiqMSqBQqg8qhK/pmVcAZrX4JYydN9uVzqgghJypbBoGlucUM2zXWtWUzTkA/mZHcpNOU/I46yimRaLOIYGWLZR5ow1UEWtKf54lGUlBXty8gviwlWbVDT7IxIq5fXASZMoM2DBGlZpQwvSuapnmWnPPVfMurCq5r1KDnYjieBImSyCRLJaco2rFCRYqVKFWmvOgIegZGJmYWVrasCnQTZ7jg5uHl0zz1U4Iim9ynTfu3hUhhAzi3B30ppDkvUlRPe9QHQIttJK6Pje9AIiX13Q1sIQqjNgcHgH9k2NdGfdDWwEfKcVjp4RGXTbGbGWVO80q43rj61PULDCoYsjZqvMfyt0e8dtCcSfOMgud0iDH+MxASX9RgSiNHaP1Hm7n2qOqUNL41xqXa+cacfWyj5dljcY0bZn+dCuvZm+ZvHmY+24Dp4vuD2jvjqj+QA0YgUBgcgdJIz+oXAmj0mTLAMlytYcwBm4EAhcERKMhXUntE/LsCfy+bmS6PtCOFihQrUapMedHx6RkYmZhZWNmySpUjwgkXNw8vX2sewVjVMn4pM0AzaNFwOS757Xc/tHPNY0gCSwRf4uizAUPIKuvZQeiart3iAbb16nFr9VfjDZgNWprcRpKtmSXQR/J7at7nFOc9efocgIYVCinMQGFwBAry56L2mrjlq9+7DX+zqoAVb/1CWrzxcTfcpl0BgDNPUBV0XeEqDboLVJP37FVHCREZGQx0Lx6eXu9pEaQhf/UlSJlMJpPJZLJt1ctC+HDkOPX3KJXVOegIscdCWzLnJbpfbLPrA5otu440XmNS4JJGckdY5nS1teq6+KN6xw+MScrO0LpIGpIgigCNIdw7N2DhBppFEkf7A76GjnDAb3GJBpoLs/DRPtaTPeKjMHirT54qBK2VFOrCgMeNsTx1l538IRD4cLduAt4fL7/uMxBsBWv+99SrAdVfTT4nMH8F3X5Qsbmiop/h1jZQAIh6iBFDGY1RKSm3PCHpb/Am5K+t+qBaqKaqZ6pVVU7FLXfLr+VoeYDoQ4W/sWVHiHo0iHSEV0QKcggwmebQyKTetBYOQfUMTOz+JyrD1bE36i/7+MnmbiGH0p+aJOO9OB6PRGPoIzEQiy4Y0KFRDS25L5BaFvph04Kzud+hnbxhO5NKAd88oGF6/npfoZPAX6FKdTLhR0woOCl/np+wL5dvvPbbJPqDH1BtuqemhQV8HY410d7y97S+Xsty+uXUpBP9oTyE4BoX8IfIbXAt9m8ZQWzl6Sn+Igpj+ccF/Y2HtXzeAfxOCLF8Nv21Cqhlif5ZBeSydGt+rqY8/asKFsoRfIiXazVvIPNEk4ngE3ZC1nTHy1sBgio1GZVO+e8MhHkKalIXRATCE7OOTk9ekOXP3mEvCMzlooZvn8CEgDp0AQ925DQSEwvxUvVdS1Ib6060I4o0CFlGESFhz1KAnO0P9E6ZpKZuCpIcWhEoqAhxBxxeyY6VMZ3RVQs2cW0IK6MC8RDAhIMdX1K/u/5BRhtMJlLoCg6ts2F9efqurIPltPEYHMizcx1gne3Lj+1lleHzzZ4IzAFY21+RNd6qDGAWc+bJ0MXhy0D5LfJmBOASgPgrzwFmJARBJBQwKRQwL+SAA9u3QxI44ltjCFLBvQ51+qEIQoaPgEIgMQ2AABQQEoO4EMhHAQEQk4oAkEBhhIFjeeA329KkMCJMGdR2O2ApZiwUK/O1/Cg/KbBUZXTGSaUiqUQaL5VJNdIK6ck4YdzjcQ/HT4nnLS1hQEpFY9j0MqWGA7ScPIlUKBXfavXH63zABgB04QCGqzxU/2X8+9//f/3//Ue9AB/9/miBH4T+xZLPJz4Mfh7+7AW+BgKWBGzqE38DxMU+PxRxejzg/2avMuKil71v0bxZhxw24apB+w2YNGSfj3zgQ2PmQDR0TCxcPHwCYjEkpOIkSKOglEElU558BdSWO2bKcZ+ZjkKrgo6BSaUq1VZYp5bdBvUcGjVr4RcQFBK22RbbHfG2oz7xglHvuuQ9l73jtQiv2+WsT70Rw1s+9oxnI33uVS/F9LTdznnSE54yjoDAkHAUVAxR2DgiRRNaRiRCvGSJkqSSuS5FrizZcmika1WiUJEyxUqV07Mxs7Baa6VVVjPayMPJxcvthgbtNrlPm62abCPnc9oZJ5wy4yQIdowHiBYgpwViKWCidwCmfAWgvALksQAS0m3ASWXgpAVZruxcgnAt1/1zCsGGohQGSfcI9qgqU3E3YTBELwKvqFe7CEgqQFoEnbQWk6JIcJ2G7gQEpAUTbIViENhUGz3RJfQnhdb7XNQNiCtKSDPHOjD6umRwgRDeS/lEtwSYLmBEAqbwCiMxNsalUiV0OrZ3M2hJ2GVQFINgM9gSGiJhM6ks6rEeJkbNJvkkO4JGi2flRZA8thRDlMDygoyJKd1aMQGWFZgMJsUvnyqYZFPY5Q6XzYocVQFPwOILGFwme12gSLPoMBJlq4TB4D5GEaXTPZNzg3GUFJ3sSGyzA5eblUWSj0h05bcsi5VO1L3Cj+MUCdgSaSPoVJLJZuA4UnaWZCqWjRJb8jRMcNKSpVDEZhFBCjEtbNpGnFwYl7YlbINBrThOrDw+xuubkbHspl7XRceZmMvFGfQWbqJ6rNPaXa36XcCwd3uwsXgNgN6jP+i10Ny8aN8TF6dRi8elGBwSwW7MGR62ZmmbmyNPnSZcOUTJMmckM409TSeHyfhF25EJPF9n0HET9Httir+l0VI9ZCK0NXhg5o936FhElq9FvXPYaooCd+Tt2N274sjqMGQi4mNPhmqF9TNgla5HO2M0HK4zRBGzmtYODUK8pnSFmom2GumyD+hj/gAtUXIIw5nL0cEXgWcJJwPVSZYNbtIwDcZHAr4kb3pcmVQdFGa6lWuzIWthAI0nhadvyq1z+FzTgVNL16eHQC+1zC7Ri3QLoQvklHabLUpsuwnLEu5rvBt9zvOeM+ytXbHlsfHgzcYqZ26MbY3SlVqMr0fQhbwL0oIr4MApU/gNoiM6SL+G/aHdfKqKVU+uBJpz01ljKsJ+9OQLTugVe0UOadY6lA/CoKrejLP1sJw/lN27lXIBch4mSt78tRNQkMPWBR/q0XfI/pJ7L3FxfTANp5NRPZNtrjB4tzcOxuTo1fC4cQHXeLKezsMUEGrWPBrdH+UQ7CJ7l2UncKuYgcIIkj5Fcxr3ycLNLy/m8hbjhP4OHep5a/n25KilGPrrsWvPVre0PJJa34sdo4mZTzIU3FoxUKeFF8KQt4N+KMQ2W3vC+xikrCeGQvbsCFSoZrGnt17S5z8EP5a4nubYyEyEohWcrIVS9HzzvelU0G3SFbCm0KK67PmQ5jgtNdTFm34ldepfZNHmT9QsHZb497kEwvmmWKb3HMnObKHdhH32VF2TV66mP2qu8DBSTsidbf5+9HTX/oER/Kdeir+d9AIGSnnO9XLt+UglR+kG5NLsZ14Dg0VB8aE7Mk57rtigKGveqSXBlGBnHJB6tZs3T/ZT+qKb4UsJWTMw0Gx7zgyyFEgPoBy2uS/PhLKVvRQhoY/XiiVqFrJKn5CGhj15xlwxQNIWC5+G6fx6wbXIJuv1VJpm3JPvr6W5e78Vl++gv4SnnvE27vhBFhIyOxyYXUqUl5YAXWWUY8sBT2DGbcRCtMzLZV2K9xWe6QoR8k5mWPHVz6qeVXNek4sRzLHFQJB0bQyaechXVz1hEhkXIuIMnSZHEui62sNrvlejKBTg79f4VKmqWblf09zyb+1cd62BYpK7Jt8DOu2ggwD/uBJSn5XtDqPXOW9sl5VaBvWZJxgovFvqRwe4Op8bfi0SDCaM0qh8TESYACUvAqeL+tHfZdVQkI2CYznvM0gYZcNAMaIMPSmJ/m1qUrPQHsfEe9FwJflXpKWlmxNWVUBkwOc+hH09iwSTk5Ol1lfHOXUJSWeTSbc1pnXxnpHpWw0MTJN+RC5qOixfTtD3szhfUrBeGi1WaLVSKhZ6upDLlHR93hXJ4gqj8NZ4+Tl/kqDP2LCIkd2WRhV9OxnqIRy1HSRhE6yFHcgNXMuuBQzwkWywcX8O3igvIIsO+0D28DMowEMV3FXwzK0dHIQ8KR1rlyQda/E5KxYO13pj9Xuz4Wp2tjdKdmagTkxm50wCLLuUqaGE/ljANvdcSmFgpJ/TlK9RdqfrN8PPooKo7yWKbXZByqSGy7YYCDUABtqPnFnmMfM6SYbZloxh0UQk5H0QqpMy/XTGTg8hkN0jh8rPSv3j4OGjyji291KaOWNYb016C4c/Htv5kQcyvfVw3hXN3k99dxAFprEXqBdn4pI2bRy7fBb19aw80zZ1Jk9cbB7XXE7YadTHnchpNuGIBunjP6MYGOXWOWXUPBP/2t/umvW8PLiccX/ug0Nfs/n9QCtt8/HbfX7Z24J54aXS7GO3CrOyLZXIhjVVmYjqiXxb1zDOq1iivRnIuSDV9CScsFV8ZCCL7EqbKw3v37EYeZYJax9j0NZxcX8EquoVCYhFjC6Sy87cydhsxbJ4Ahn27EmsUVUvpVmJWKIXS7VUrqw75Tm5HYmyt1TRlGYpfi+rVq2puZnM9iD2R6YNz7QK610uiyWnRf5Ld0HhW+RClsNSZqBNIxnSjd0ebbMlwTLIpXZotVPq7UJuU4SB4mi6d5dkVpwUas2sSHGZIaVoTVBrKry9LqEw60cH2qoaRgyxu7pyIO+tXqYwglHQhhvdFy6dKvqNp3AYA/w656MHmhGWASy0k/cki1rZ5DizLVtBTlrvyEUwOv5jqW0wmt2ZgfRRmJ+xuWJcN3Sz5p3hYCC3PU0fZwUXuk3QXOv9bvVMLC4bfTtrkTMxCpGMedZok7afWK9M2PEVKU4sS1qp5XH6R6Vl8e+xYlsuVSQWa8TDQgPbSyLAIoZqkexyxevvGSIxxOmEnuVSm6CflVa9F816ibC7bwaBZC12kQzylyoXI367hK6hGeFnvchi7Blb8X0hNmtUmyTpLQLgGKJXCJQr5yXLNahlfng6RrX6minx/Zb8IUqj9EfsBjmoJSgzaSQvuXPXkpxMEhoJU8vt+t08UvLjxKe4qA7kg5eDLli4GAo35nsK2oOBgNzKZY2rvRzIhZxnFhcfO1H61JJv0b8liozY2TbeRv5KG+/+eHfDPGeDA0PwjgCI2EOad0BLePCVvisX2//EwJDv7pxaOfzfgtr/HdiHH0P2o4n7R6xYuhI23v3H65gyNThjjpraMPrnjocbJ0/yT5utj6VnbDi1+tDaLSsWLQyuWXtg5d5Va5bONZJL1/4Jn3H2F2/r4Tfe2Hr4Fy/7ya/v9srtji5LbBEb31y1sOB5CwtvrtooEpv+r+Smf30XNt6t/Xy/2LR3n/CWJt+O3ZGF84l5tV2oflGsXL+4C6udBygm3wO+PJPDopYr54jKX9y4+69K3aevj+NE7DcRLnKCLl7m4URoX1Nj+EBfsq5zV9v0WdV3s0zE34E7u+NxZ08LRre1Lx/V9jpa1Okf2QH6PZayPDD2CndlqvdMRIgtbYmPdxgM8twJjTbuiorqihTQRFI0jBuWqq0tWcMpcjQMmzHqYO1AjT88uZCbT47b4MxvX/j9i10+T5SAwRfc958DJeYtc7UA5j6EgGW82X0Jbn9Tow/qS87Obk2G09hE2NZELePrwF09iYTFOjAfq6m3ZhzEN/TH6/tH1vo4d/GYhfqKKnh5KAivqEgvNDDBVcjTD2wnyF9kuOwvUrd97rsBayrPwDAdOHYj2BaMoeZg9IHOwYHlyr1Ig0mXtFt1FfVmbktRdjNHMU6EIrnNZ2rzQw+F6w1l64aT9cbIQw+/tyVCUU4PRUS2AEfqq9bq/dLMCYcsewz5NJw1wUmbRVdp/wRH1hUXbLOkdlt6MmuCXr/TRdOR1UDO87ebnTVouVyM0zKTBi0QC+XCZ0r5p8K5/ghmNUQzWhzLwOaYtTz/nRfVweNDSoSvNTEzbxSVapWsXWcoz5rB9123id+IS11Az6PnWonOyie5flwZDUgNRr9UEcX7uScric4HrCB/ZH/ywwz4LBMf2Q8+eKY/0VsGpspSh+PguXjihf6qwyiYQoHsraq3EukTM8CBGam3Kt+uTJ8UgP0C8MfYz86l+xcInlyQ+vTcWKBAK7TlzJNopTbDgB94zhAkJSG9gawqQVdqbrTKtYRmSSzqoCslerJCp0q4LOzwcvDUve2BaaRoQ4dfOGwJfLkvJ3f1CPATzxWCZJ4hKaFnjfaZtEyFGS37hyMh0SFxzYK/00obPRsxNbjGzhi/LEfpJyUSC2b4N3zY7ksobFi9axB+lM2XkApUKWOgid2aQ725OasHJ/+gHYaHWacEK7oJ/DwFzrfyABH23eIUnXEzyjTjjk6fz9HVjIVpmNVAnM0KRVkNrGM18qjVJudYDZDxqDbE3VkadD/QhlKJroqJ/thuv96oYCBF1K0R0M8cLSrpXdwSm8jOS4EEHtOM27t8PntnC8a4KuANCu6Wb2QY3MwhckR0o42czSqPztTBHXxedDx2Lo50sn5k7hyUVscKfnp2VuT7K05uc7AObp7RaubwJZ0kTWoCKk3MYddwpUptK6gjdkd/w1aqmvy1taDGCoQ8qglxdgaCjgdaENpbi5gaPGNnjN+JsENxzu9R0BKF15LnUkZoOWTE1Z9HrtipchnIkNp/vpnfSivF4yX43rNUEQUYn+N1QitlnCn65MCDxB/84iQ2XaF4J7dA5KKHHQiM10k/nFmVpgU18eePOAWvTMWHh8UBpULtq4b9K93lGlVQp1MHyrRutzuqgITGlWlcuOkdk3H/nHnMRtPvq6/zyRtuQN7iVGBDQm+yRdWqNKOMiHxun1OBy6V+Kw9U/sHdlGcEQCCYIOAX3N1JgByWAqIPaKnkPzHNeQfdMRJzW8mEeqDknQCLvp/6/mfZv4bwJob33eJuAXL3CfrDh1Fgc1Cpld7762O7EjqDLaZWpxhVpMTnZC3Sd0V+6zhOHWOVvCqrL4aWgd3lBqs9qtakCPc+oawTQmQSn3U8kPHIVo+7MxDydLZ5SLrFEwPBINLZWlakFAykiro9So6GlJAXQmQcZVTfBpBd/D1w7PezPKoWUhBICIiSKh0FF5aigTTNlPKqLE9hWdvL9+vtBFOHGM/rpdbKVX5SLLNQhm8vGiVJhROrs99702uwYdyBQvHBFX9rHopH/W4ZXqREgO6DN30jQ+C/HCJH5W0iLhyk883kdVbAGzTH+BcR8T0dJyMQvy/gjq5l3/1A3ZkwId5m3N55cfk5wRkFPtP2N6CEfW/+x/9WkefE3yx4GsCAV6AtLyza8hLfox0OUN4KFXKTNxxj/m5IEb1ZM73wZkfniJ/ZN0UKBRoWm0M1/tFMhGjQakYUTjtN1PJD+ZBJoyaiEnBhTLQxNSoSQa/rtaVyybVl/hzMrC54eceO53PVhMHFkEHi/wjFpU/PNrFkSqFlVCVP7z7yxNSJslFP03yX16pR0iEpGKdCcoWoVVBOlY+dzyx4iHpIoAlqTTS4y7PFVOo0rebELMI6IEwm8VkmcH/4sDIQiBvAO0//Xv7sYdB3OHZ8gsCBh3/n2o5OXHQ0veTID+0vRx/6PdbVP3l5P5h2/O/jf1f0XQdrryfEJzJx/w2w+gZY9MGCqfkvPZM80ANO9JQhb4ASYkbTFLKDmNmUTwLXOT/lL70YvJM6WiweL/Gp/+COvH9ueBl/kkBQwBd8w3zLdCS0rAoKG01Q0KvU6DHo+5G4I+UYiYMFTD6t2PWFzImisAZFHU4UA18ljUGVMmQyq0JBpdEUVKpCZpM6FFKRhcov5NAXqsIC1auQ/NU8EONVrEgQ+5uaiP0rEhUVyxRZVsI4KnFjTyLhQysxhyOFGRD85ymFg+dSXfmOh93WK8BjJ8097TVtlkadePdqrebdAlQWAhWWTI3e406rTUkSllVjFeFojE1FSZDIw5q07uohdHRUCUpIYRgRF0jhb0rzNAbKQPjdFvV1l53A8KjMXJbWInhSow5oS3a756/2qMRe2GqoytrAmt4aJHIv82Gdt663/KOx3QDM4dF1eke8K/xYlMB0pEoSgPVSPwFprAHYFLIu7mBgydsbwiVmQ0RkR4rKDPqicicelwCC58tanKm8Ltdc9+l5mSia0pmjXOlWn8NuiHi0K4bVDhmew55AIWzPmj2zcLulsRELMGpaJiNVGhlBS9RqRg6RShVEMlKwbtKcHvpt9/hFIIOHN+rcCYeimHl5wRxHBDYYIxmYIDOwIWKAHZE5614uYhQOV6JJhzEBH+3AOYKiOAJ3+Gk/52YQg522e9y03W6gEaDkoZU6UyxSupV12Iwht27Z0FnDRpYfHi0thO11g6LWNb1s1uJK5Xa55rjOzMsEgqKRUqghokStpmVyQq3RDREtAfze/ujWfpBKF6CTobhcWQXi09rW5CvVwvx/Z+bctWMqxO2SNN0skI/7NGi/ZAJ7E07chGEl/NcmFygFuU35arkqn80V5OXnjSbcinHb5CbGqiyUvjP01bpiGWUBz6bRk7oDn3vvqU1q9EhX404AUsMFgM8HAsEPfP4PAF1g/bAs9iGIvzzmF/spnnCVD/hOzsf3ZT4GcRM15md7+rMa5hgPJrDv1WE7CiHf2NMKLWT/H4L+l8mCDnO8BkaQWbAl6fa6ks1yemh1yfUueloNw7Z7NJ6BtHJHTPG9XJpoiWfO2yKnhlSJb/AnHT6JX3DnCcA3f6JA8L/gHnb0zaLW34qFv7VKhaEKi9cPFrK8voUx5TrHWvvYxbHxffiEvkWxP9c6v7SOXRS9lIDzDz8XeOi5jncjeFv93IvsTrbjW+9uL4hOTbyQjHgbaErNh0eAYRg1jmL03RU6AsMD4OaWSHKT6Vx9vUKTm8Ox0VcTD+uOVlbay08+3D8a7NhSEDHq6uhYJrHZ8Uub2AQ8W/GIlxUePi4R5N0+gh+5lS+QHj0s9EUY3ERL5ZfV+Qe3ywx638mhJ/U+o3T7wQL1ZbmUBk1by0IKHjkuNRp8O4fufCsaZMcfycfHzYRHGJ/w8FGpQHVrK771tlIgOX5YyEa8wNz7/AVilnkWCX7tvUAeV0JcAMPmWT5NJT6VzmzzJTT+KXjircR9h+X+X3F7AfN9cLFfe1T+W3T4hf6Cq6vq9HZ0pOZ0ZkTqgRVdZER6DArJ5oCNXaUbV4aAxyW8q8ExV58f+y5u6wI6ybirEd5VsJjHLjPX1JiXsayLEK0eq79Dpu/0wv2iQnfjnOoGvu764jv64vNRtKP9pTOwESx+pfbp2xN8+MbG2zr+qbq7GBx8uX5PuLyvroG8uHT1Bba5ZT8X3zrLltNsLPMb9A4DU188flMj7WEjyYC5uMZVGlOZnJQn5ZixlIIL6meJi8YXMROj8jizaA2WSvYizZ32nckKuns1WqngJnnefb568nSgIFSqIEGmZ8ik57dNpyQmIwLsi5YPSFm1SkEGpVZzUKagJkRUm6Rqj6TIOe3AsVM8qsFgSyM6GRfyHPjrcgXORwNmuQQhxGp7Qvclo8DXDcaVgX2G0BkLvsABcmrWjw3VGeCk1aZL1BmDPxR574bvguLP0RrYVDbqIVCsh7YbaWN0UuDbsIlzsf7nP8yzGh8qBV0AgPPgr9+5ljfKGPtYeALfDc6QT37axz+dDf7x3eczi5JLYj/n1obAQ8OyOxKxPdk6D9kRz2a3x8v21GUtbHuidoE9Y7JlGcZEfKzs3tbSKYz/Q0Ktkv4mYa0Wie9XqQZVf+2fQrQGmWh6TdC7qTLNoDWBdGptACddybrWBsFdnT2h1yVtdl0iYbDb4gbERfTriusnp50ZPZpJ22ESknq1sJRRDIZpyIG1CL42vn4nLcwUFmSEWm6BcjyvbZvBvCBnlfFXY1yBKW5DVdG2SQ9MCla5RraP0LaOGm2qv+SsXQaxZ0tK9tohmf2sk3/gXniYL3i4nnY58NYYOMOQZX7OHxk8NQMwuyW0JWi+1OQf3N9ZiTpP74eUpSaTqrQU0sFuqhpV/zb8Tn42HF75PVcaKAsEXjPNvPysVPbs5Zn8y3tl0r2XUy+FgtlQ6EVIHgxnwb1YgGgReO8L/9Cb8aP7rPvMNtdZ1/Stj+f8QbDOvB4tVQjzNkzGIZcxmda5qQozXCH1y0kfKrrmg0WTPd2FxbCQizaT3xvtrXZgO+a855yw7S3H1ZB9x1OOXOwe8vp/pi6yF8dcpl6jgHUYtYECD9ZPXrmqu6d4F1+T99ae7mK9XmD5j3qEeunQzcpMfvHBOGCupTfTm26+rQhc0C/3fxvc5+dBP9/3PHSQ++Iz+eVzJvZ84JmyqJqtnrKB+oACDb/nXWzgZuSO8HlaXUtE+S/Guel5w52etKsbfHx30yBmuw3Et7/60r83xp5cBfrfAeKDa5zA7/G7FahcErAO4X64Wxq+K2G0FramfwCP9/ZzhM3iqSgZxOoNkDcWUalJmdxr0MvZ9l54+J0bhaLFnfyZqzaKhBs76xAnQgs0CEwlZPHplnTOnNm7afAqII00Z1X778ZoiRAJY2IRqKW7du86zI74j8LuBZAqgImmEtm4MpuIFU8CtZnt2/eyo/7D2cO7dwFplhOLsDBSIow2Z1VgfMar9WOVJ2vEfkDc32CcEE3FANPBSjzKYHzpNP6p3Vh6iDaQWDpl5jGdZymAfvh85me/2fZ5zQ+qWSCzKrl6JxnFF9J8mRq6aMHApQuwjIGjssrnL2c/mOfefvLxSwiIB56L/U8kP6l356WLuksXBroXj8ZGdy+6ubgXy2sy33bu29/0P3HRA+IBcmlh+HxKzJJeDhyHrnb6+6kDAbh3uxf904LCwKULutPtilflJ2bQrjPSZNufe0zavVenKdJTxfVyeKZmuTnTC+/v7mhP/Caj45jESkCmdfq16dOua+vAtOkfbgC53n0NwLYxTauAq8Krc3gUeKMbkML192QpyNA1wU3cQyOg0ap4W6t9W6F8ufxJ6OUn+SA3bwJ/ZkFe7iRw3ZprHpw+abYErhaKcyW/T59cK4aDehB2J91gmLFCNIo/Y6QInmchg4/wigq/yYrAMNGo4Tzq6uAAyBJncIMkNv4V8uAv6jt/lUzQifvs+6xPrJ9QMvYOqPtjULf+50rCmfmlbQjepWnX9lLpIzEDsOK7aIvyLhiQPuuJAXdFTEpia789ZHYQMBLAJ7TE9EpCmL9/97xTu+STWHx9bGUW6Yj3YtZuibFOBR4CEsKL9++eMXvJiQqerg40dVR8l+Deb7hkR4ln/KVQpB0XDHuXJcwFp9QSwu37dy+Q2iWnYyv/YiYSgfcSwoX7d89r9hKY+ljgAaade9MoEm/pTvzHQ7X/4cTbxntqdw5XqEvi/+/je2Ob2mYnFRN7TjHR4TRT/qM1m2o3eyzBrS+P+ufHBP8uH/uvB0CLfdwbHACwPrXv9Gc7QmEXFQcbURxsUnHoTtACe1IJsoNKkD2qBO1nAdBgb/Fh++0tIE8TrJLbWyUi/jQwvFF5RnmWPWcRtmRlz7Bn8bkWUu3wx79rfaZ9tVzx2OfqpM+SOdpdJthPOKCdfgCIKySby6JIGHwGyM9AtE2kBs6v/dcyOfIfFLDCn9//WMCjlX6pjaVu9/uL9vwrHRMAYMEFMn1/Hl3GmNKj9NZrsSmvr2SnetzNoXyDBYj/TIPSq7ScdgwN8GG0Q2OI2mWqP9MmcGn7PM+xXO7ZZuH+vRtFI6W3Xgu4XYVhLRopvZkW8rlALoCRTb+v83Mop+sM4YhClo7IfNxNelYInDFXGikPZa6nARzwDtGuZfxdTtcpwC83UwS4eftMoAdizVyAk/GrwZfGAWlt0rigKZkhhaqbGlNOZ4ZoO+8mTgAyNAGIH3KBuO9Vc4gDYubwEt07UpC2oxeKOjWHulmBQM3X1OwCgZpDzXMxIJ8C0Lt9EVCmJVx+7zQ4zLLb4yRS/6KNqZUxLF4LC/EdqTnvAjmLa/scBFRRn/n+gTfTLO3vJFq+Avjol7QN7/rfhamlcPhfFVdeB9QQAAFMPstWWy/IbfuD1t/H0eYcLHuOJFPPY9nZM967VDAPN/9VZC4WZYkKzH/XZDLvRxBa9KKVqSHxO/GMamFR9phEj9Fj8xNUaCPFQ32qza4iwyoErOaNVyyTZI+qYIsN4p83RM9OJuTCjMkuSCob6nniJtZGP61M2k5bbk1BSKvwpiRbMb7fFfm/TIrg0dsiCoqDcX91oa/IxU2bQM2rnh1HrOier5DZtloKU88VGYokGYZZ/NT7V9qeZKhf/AoVUiOLcHdurt9xl443pLckLrvRbPcz2f3HJ3MHqCogXYmSVcneRklzKV1I/vii51DC+GLvEGcWV16oqFI8CulQd5Q/EO9/PPOTTmRrowFYJbcEPE/uJMxbEf/KsuW13VaBhjEkWAr7mjXStqjoJFLWT4zTLIZxg9nTVMhT3YWpiMvab1U8Jw3L6bXOwWLbYw4gOdzlhualx7PiUpw2uwQy+07aXdwVzi+s+4x8Fkkzl+gRXdFNOQcT3VrJBqScmkUWyVO6Cl0JSrD1lKsVWx/xZJTOppaVhZtHknSi+SC6fxcgm5H+REo966UsLOUwpE2T5izJ/E6eRVqL1dK+9nlCLEzoGkAHRyyC7XesWB+7Xdi+BgQQrdUIJhiIsMzbWtO/n6gaA9zZmtgE8StpQkTEwk2oArebMDJXm3AaLzQR4m29UYQ8ZWeLUULypjEMEntQWlLTpEh8c+q1QvvET4MG2FhQK6cAkxAnvyZumXJsErJWgyY+jUKqTmQCMlyp9uZt13CZhvx2Ghmb386tDZkpGipz3lk/paA2Phmq6FlVsFlZ02unzvMVajQs/TA/J+aaDtsWfrKDAqRyKKmo5FjOxyskKMivnZ2KkppSNpUNZTPSaEvjrZAGS7kGVduBGixvKTirpI5bLhhd27SBK0plUSF1pVYNtKHsMrM6OzKoWQN3dEuFAxuhyVT9FMyeT9OjG+aq6OZRXpBQTJ+8Bl5wkgU3g2cxXXFipxrli9ZdK0sHX7oWMKs3Q7zO5SC3aY9JIuOR7AcpGrzhLW9LJZcm3Tve9Z73r0wTzoeK5b2yLLjE54rHpx+PzfaLHLlTiN/Zq65pdJ2axnJaPylUoYnMZuG1Gv7B9TRY/JHRprHouI9pgu5aN4RstiVMmC184nE+QhS3qrFtEv1Xa7sRuxyx0q9WWW2N+621zm4dOu2xXi27Oj87Y4NZrxg0JGoSdGoK8T/30cRRYjTGool+jItBtM752z/+DVZMCE5EQmOS4OJgiSGxH2ZMvFFz+jARIhVjO+qYMnQM9RyKlJj3quNOOOmUSVMuuAhHi8mCLwFVv14PesBDumz0vW7nUWIKPZ5JKMJvfjdDKk6sJzmN+1CEIJJIrjz5ChQqUkxIpISYhJSMHERBSUVNQwumo2dgZGJmYWVj5+Dk6hFYG72rjimsgteIq61hcwNm9QRD1CalP+j2r6qxUMKBJlWW3jzc7wmGyGCgQekJBFvJ0JbgHmm/uA+ERf2NfhBBFfnTXiRgnwKkAFhAsx0qVC2VrEh2X5bKbNBHICqkvIbzmwrbPC7/3+i/rb1dVTBFwK/ug9ga/tdpQc2OLNjYkJCOs+0Ub0t407w302oeq0MNbXWYZYz83X9atMEq+9GwwSR/qWDqpCm8yRNgQMf2uLbhYNrEDgIlzJKZ0FVgoVjTnQagmNLda4fpEABwVjPZcrZ5zL+cXNvw/w8XqU53OCQ0s62jV4BQQ01+T7LB0KEzj2tJ/hPFmYhZ6hDa0qFVq9Elt2RiCEb0E/CAJWD4DD1W9QEAAA==" },
@@ -37034,8 +37034,8 @@ var WEB_ASSETS = {
37034
37034
  "/assets/dm-sans-latin-ext-600-normal-DRtaDpgU.woff": { type: "font/woff", base64: "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" },
37035
37035
  "/assets/dm-sans-latin-ext-700-normal-BLI3TTWz.woff": { type: "font/woff", base64: "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" },
37036
37036
  "/assets/dm-sans-latin-ext-700-normal-CJIcxD6K.woff2": { type: "font/woff2", base64: "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" },
37037
- "/assets/index-B9hHfzLO.js": { type: "text/javascript; charset=utf-8", base64: "dmFyIFRmPXI9Pnt0aHJvdyBUeXBlRXJyb3Iocil9O3ZhciBVYT0ocixzLGwpPT5zLmhhcyhyKXx8VGYoIkNhbm5vdCAiK2wpO3ZhciB5PShyLHMsbCk9PihVYShyLHMsInJlYWQgZnJvbSBwcml2YXRlIGZpZWxkIiksbD9sLmNhbGwocik6cy5nZXQocikpLFo9KHIscyxsKT0+cy5oYXMocik/VGYoIkNhbm5vdCBhZGQgdGhlIHNhbWUgcHJpdmF0ZSBtZW1iZXIgbW9yZSB0aGFuIG9uY2UiKTpzIGluc3RhbmNlb2YgV2Vha1NldD9zLmFkZChyKTpzLnNldChyLGwpLHE9KHIscyxsLHUpPT4oVWEocixzLCJ3cml0ZSB0byBwcml2YXRlIGZpZWxkIiksdT91LmNhbGwocixsKTpzLnNldChyLGwpLGwpLGxlPShyLHMsbCk9PihVYShyLHMsImFjY2VzcyBwcml2YXRlIG1ldGhvZCIpLGwpO3ZhciBSbD0ocixzLGwsdSk9Pih7c2V0IF8oYyl7cShyLHMsYyxsKX0sZ2V0IF8oKXtyZXR1cm4geShyLHMsdSl9fSk7KGZ1bmN0aW9uKCl7Y29uc3Qgcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIikucmVsTGlzdDtpZihzJiZzLnN1cHBvcnRzJiZzLnN1cHBvcnRzKCJtb2R1bGVwcmVsb2FkIikpcmV0dXJuO2Zvcihjb25zdCBjIG9mIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2xpbmtbcmVsPSJtb2R1bGVwcmVsb2FkIl0nKSl1KGMpO25ldyBNdXRhdGlvbk9ic2VydmVyKGM9Pntmb3IoY29uc3QgaCBvZiBjKWlmKGgudHlwZT09PSJjaGlsZExpc3QiKWZvcihjb25zdCBwIG9mIGguYWRkZWROb2RlcylwLnRhZ05hbWU9PT0iTElOSyImJnAucmVsPT09Im1vZHVsZXByZWxvYWQiJiZ1KHApfSkub2JzZXJ2ZShkb2N1bWVudCx7Y2hpbGRMaXN0OiEwLHN1YnRyZWU6ITB9KTtmdW5jdGlvbiBsKGMpe2NvbnN0IGg9e307cmV0dXJuIGMuaW50ZWdyaXR5JiYoaC5pbnRlZ3JpdHk9Yy5pbnRlZ3JpdHkpLGMucmVmZXJyZXJQb2xpY3kmJihoLnJlZmVycmVyUG9saWN5PWMucmVmZXJyZXJQb2xpY3kpLGMuY3Jvc3NPcmlnaW49PT0idXNlLWNyZWRlbnRpYWxzIj9oLmNyZWRlbnRpYWxzPSJpbmNsdWRlIjpjLmNyb3NzT3JpZ2luPT09ImFub255bW91cyI/aC5jcmVkZW50aWFscz0ib21pdCI6aC5jcmVkZW50aWFscz0ic2FtZS1vcmlnaW4iLGh9ZnVuY3Rpb24gdShjKXtpZihjLmVwKXJldHVybjtjLmVwPSEwO2NvbnN0IGg9bChjKTtmZXRjaChjLmhyZWYsaCl9fSkoKTtmdW5jdGlvbiB3aChyKXtyZXR1cm4gciYmci5fX2VzTW9kdWxlJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwociwiZGVmYXVsdCIpP3IuZGVmYXVsdDpyfXZhciBCYT17ZXhwb3J0czp7fX0sWGk9e30sSGE9e2V4cG9ydHM6e319LGRlPXt9Oy8qKgogKiBAbGljZW5zZSBSZWFjdAogKiByZWFjdC5wcm9kdWN0aW9uLm1pbi5qcwogKgogKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4KICoKICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlCiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4KICovdmFyIExmO2Z1bmN0aW9uIGFnKCl7aWYoTGYpcmV0dXJuIGRlO0xmPTE7dmFyIHI9U3ltYm9sLmZvcigicmVhY3QuZWxlbWVudCIpLHM9U3ltYm9sLmZvcigicmVhY3QucG9ydGFsIiksbD1TeW1ib2wuZm9yKCJyZWFjdC5mcmFnbWVudCIpLHU9U3ltYm9sLmZvcigicmVhY3Quc3RyaWN0X21vZGUiKSxjPVN5bWJvbC5mb3IoInJlYWN0LnByb2ZpbGVyIiksaD1TeW1ib2wuZm9yKCJyZWFjdC5wcm92aWRlciIpLHA9U3ltYm9sLmZvcigicmVhY3QuY29udGV4dCIpLG09U3ltYm9sLmZvcigicmVhY3QuZm9yd2FyZF9yZWYiKSx2PVN5bWJvbC5mb3IoInJlYWN0LnN1c3BlbnNlIiksUz1TeW1ib2wuZm9yKCJyZWFjdC5tZW1vIiksQz1TeW1ib2wuZm9yKCJyZWFjdC5sYXp5IikseD1TeW1ib2wuaXRlcmF0b3I7ZnVuY3Rpb24gXyhOKXtyZXR1cm4gTj09PW51bGx8fHR5cGVvZiBOIT0ib2JqZWN0Ij9udWxsOihOPXgmJk5beF18fE5bIkBAaXRlcmF0b3IiXSx0eXBlb2YgTj09ImZ1bmN0aW9uIj9OOm51bGwpfXZhciBJPXtpc01vdW50ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hMX0sZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKCl7fSxlbnF1ZXVlUmVwbGFjZVN0YXRlOmZ1bmN0aW9uKCl7fSxlbnF1ZXVlU2V0U3RhdGU6ZnVuY3Rpb24oKXt9fSxPPU9iamVjdC5hc3NpZ24sRj17fTtmdW5jdGlvbiBMKE4sTSxjZSl7dGhpcy5wcm9wcz1OLHRoaXMuY29udGV4dD1NLHRoaXMucmVmcz1GLHRoaXMudXBkYXRlcj1jZXx8SX1MLnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50PXt9LEwucHJvdG90eXBlLnNldFN0YXRlPWZ1bmN0aW9uKE4sTSl7aWYodHlwZW9mIE4hPSJvYmplY3QiJiZ0eXBlb2YgTiE9ImZ1bmN0aW9uIiYmTiE9bnVsbCl0aHJvdyBFcnJvcigic2V0U3RhdGUoLi4uKTogdGFrZXMgYW4gb2JqZWN0IG9mIHN0YXRlIHZhcmlhYmxlcyB0byB1cGRhdGUgb3IgYSBmdW5jdGlvbiB3aGljaCByZXR1cm5zIGFuIG9iamVjdCBvZiBzdGF0ZSB2YXJpYWJsZXMuIik7dGhpcy51cGRhdGVyLmVucXVldWVTZXRTdGF0ZSh0aGlzLE4sTSwic2V0U3RhdGUiKX0sTC5wcm90b3R5cGUuZm9yY2VVcGRhdGU9ZnVuY3Rpb24oTil7dGhpcy51cGRhdGVyLmVucXVldWVGb3JjZVVwZGF0ZSh0aGlzLE4sImZvcmNlVXBkYXRlIil9O2Z1bmN0aW9uICQoKXt9JC5wcm90b3R5cGU9TC5wcm90b3R5cGU7ZnVuY3Rpb24gUShOLE0sY2Upe3RoaXMucHJvcHM9Tix0aGlzLmNvbnRleHQ9TSx0aGlzLnJlZnM9Rix0aGlzLnVwZGF0ZXI9Y2V8fEl9dmFyIEg9US5wcm90b3R5cGU9bmV3ICQ7SC5jb25zdHJ1Y3Rvcj1RLE8oSCxMLnByb3RvdHlwZSksSC5pc1B1cmVSZWFjdENvbXBvbmVudD0hMDt2YXIgSz1BcnJheS5pc0FycmF5LEI9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxzZT17Y3VycmVudDpudWxsfSxpZT17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9O2Z1bmN0aW9uIGhlKE4sTSxjZSl7dmFyIGZlLHZlPXt9LHllPW51bGwsRWU9bnVsbDtpZihNIT1udWxsKWZvcihmZSBpbiBNLnJlZiE9PXZvaWQgMCYmKEVlPU0ucmVmKSxNLmtleSE9PXZvaWQgMCYmKHllPSIiK00ua2V5KSxNKUIuY2FsbChNLGZlKSYmIWllLmhhc093blByb3BlcnR5KGZlKSYmKHZlW2ZlXT1NW2ZlXSk7dmFyIGtlPWFyZ3VtZW50cy5sZW5ndGgtMjtpZihrZT09PTEpdmUuY2hpbGRyZW49Y2U7ZWxzZSBpZigxPGtlKXtmb3IodmFyIF9lPUFycmF5KGtlKSx5dD0wO3l0PGtlO3l0KyspX2VbeXRdPWFyZ3VtZW50c1t5dCsyXTt2ZS5jaGlsZHJlbj1fZX1pZihOJiZOLmRlZmF1bHRQcm9wcylmb3IoZmUgaW4ga2U9Ti5kZWZhdWx0UHJvcHMsa2UpdmVbZmVdPT09dm9pZCAwJiYodmVbZmVdPWtlW2ZlXSk7cmV0dXJueyQkdHlwZW9mOnIsdHlwZTpOLGtleTp5ZSxyZWY6RWUscHJvcHM6dmUsX293bmVyOnNlLmN1cnJlbnR9fWZ1bmN0aW9uIHVlKE4sTSl7cmV0dXJueyQkdHlwZW9mOnIsdHlwZTpOLnR5cGUsa2V5Ok0scmVmOk4ucmVmLHByb3BzOk4ucHJvcHMsX293bmVyOk4uX293bmVyfX1mdW5jdGlvbiBnZShOKXtyZXR1cm4gdHlwZW9mIE49PSJvYmplY3QiJiZOIT09bnVsbCYmTi4kJHR5cGVvZj09PXJ9ZnVuY3Rpb24gaXQoTil7dmFyIE09eyI9IjoiPTAiLCI6IjoiPTIifTtyZXR1cm4iJCIrTi5yZXBsYWNlKC9bPTpdL2csZnVuY3Rpb24oY2Upe3JldHVybiBNW2NlXX0pfXZhciBzdD0vXC8rL2c7ZnVuY3Rpb24gSGUoTixNKXtyZXR1cm4gdHlwZW9mIE49PSJvYmplY3QiJiZOIT09bnVsbCYmTi5rZXkhPW51bGw/aXQoIiIrTi5rZXkpOk0udG9TdHJpbmcoMzYpfWZ1bmN0aW9uIG9lKE4sTSxjZSxmZSx2ZSl7dmFyIHllPXR5cGVvZiBOOyh5ZT09PSJ1bmRlZmluZWQifHx5ZT09PSJib29sZWFuIikmJihOPW51bGwpO3ZhciBFZT0hMTtpZihOPT09bnVsbClFZT0hMDtlbHNlIHN3aXRjaCh5ZSl7Y2FzZSJzdHJpbmciOmNhc2UibnVtYmVyIjpFZT0hMDticmVhaztjYXNlIm9iamVjdCI6c3dpdGNoKE4uJCR0eXBlb2Ype2Nhc2UgcjpjYXNlIHM6RWU9ITB9fWlmKEVlKXJldHVybiBFZT1OLHZlPXZlKEVlKSxOPWZlPT09IiI/Ii4iK0hlKEVlLDApOmZlLEsodmUpPyhjZT0iIixOIT1udWxsJiYoY2U9Ti5yZXBsYWNlKHN0LCIkJi8iKSsiLyIpLG9lKHZlLE0sY2UsIiIsZnVuY3Rpb24oeXQpe3JldHVybiB5dH0pKTp2ZSE9bnVsbCYmKGdlKHZlKSYmKHZlPXVlKHZlLGNlKyghdmUua2V5fHxFZSYmRWUua2V5PT09dmUua2V5PyIiOigiIit2ZS5rZXkpLnJlcGxhY2Uoc3QsIiQmLyIpKyIvIikrTikpLE0ucHVzaCh2ZSkpLDE7aWYoRWU9MCxmZT1mZT09PSIiPyIuIjpmZSsiOiIsSyhOKSlmb3IodmFyIGtlPTA7a2U8Ti5sZW5ndGg7a2UrKyl7eWU9TltrZV07dmFyIF9lPWZlK0hlKHllLGtlKTtFZSs9b2UoeWUsTSxjZSxfZSx2ZSl9ZWxzZSBpZihfZT1fKE4pLHR5cGVvZiBfZT09ImZ1bmN0aW9uIilmb3IoTj1fZS5jYWxsKE4pLGtlPTA7ISh5ZT1OLm5leHQoKSkuZG9uZTspeWU9eWUudmFsdWUsX2U9ZmUrSGUoeWUsa2UrKyksRWUrPW9lKHllLE0sY2UsX2UsdmUpO2Vsc2UgaWYoeWU9PT0ib2JqZWN0Iil0aHJvdyBNPVN0cmluZyhOKSxFcnJvcigiT2JqZWN0cyBhcmUgbm90IHZhbGlkIGFzIGEgUmVhY3QgY2hpbGQgKGZvdW5kOiAiKyhNPT09IltvYmplY3QgT2JqZWN0XSI/Im9iamVjdCB3aXRoIGtleXMgeyIrT2JqZWN0LmtleXMoTikuam9pbigiLCAiKSsifSI6TSkrIikuIElmIHlvdSBtZWFudCB0byByZW5kZXIgYSBjb2xsZWN0aW9uIG9mIGNoaWxkcmVuLCB1c2UgYW4gYXJyYXkgaW5zdGVhZC4iKTtyZXR1cm4gRWV9ZnVuY3Rpb24gYWUoTixNLGNlKXtpZihOPT1udWxsKXJldHVybiBOO3ZhciBmZT1bXSx2ZT0wO3JldHVybiBvZShOLGZlLCIiLCIiLGZ1bmN0aW9uKHllKXtyZXR1cm4gTS5jYWxsKGNlLHllLHZlKyspfSksZmV9ZnVuY3Rpb24gQWUoTil7aWYoTi5fc3RhdHVzPT09LTEpe3ZhciBNPU4uX3Jlc3VsdDtNPU0oKSxNLnRoZW4oZnVuY3Rpb24oY2UpeyhOLl9zdGF0dXM9PT0wfHxOLl9zdGF0dXM9PT0tMSkmJihOLl9zdGF0dXM9MSxOLl9yZXN1bHQ9Y2UpfSxmdW5jdGlvbihjZSl7KE4uX3N0YXR1cz09PTB8fE4uX3N0YXR1cz09PS0xKSYmKE4uX3N0YXR1cz0yLE4uX3Jlc3VsdD1jZSl9KSxOLl9zdGF0dXM9PT0tMSYmKE4uX3N0YXR1cz0wLE4uX3Jlc3VsdD1NKX1pZihOLl9zdGF0dXM9PT0xKXJldHVybiBOLl9yZXN1bHQuZGVmYXVsdDt0aHJvdyBOLl9yZXN1bHR9dmFyIE1lPXtjdXJyZW50Om51bGx9LGI9e3RyYW5zaXRpb246bnVsbH0sbmU9e1JlYWN0Q3VycmVudERpc3BhdGNoZXI6TWUsUmVhY3RDdXJyZW50QmF0Y2hDb25maWc6YixSZWFjdEN1cnJlbnRPd25lcjpzZX07ZnVuY3Rpb24gRygpe3Rocm93IEVycm9yKCJhY3QoLi4uKSBpcyBub3Qgc3VwcG9ydGVkIGluIHByb2R1Y3Rpb24gYnVpbGRzIG9mIFJlYWN0LiIpfXJldHVybiBkZS5DaGlsZHJlbj17bWFwOmFlLGZvckVhY2g6ZnVuY3Rpb24oTixNLGNlKXthZShOLGZ1bmN0aW9uKCl7TS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGNlKX0sY291bnQ6ZnVuY3Rpb24oTil7dmFyIE09MDtyZXR1cm4gYWUoTixmdW5jdGlvbigpe00rK30pLE19LHRvQXJyYXk6ZnVuY3Rpb24oTil7cmV0dXJuIGFlKE4sZnVuY3Rpb24oTSl7cmV0dXJuIE19KXx8W119LG9ubHk6ZnVuY3Rpb24oTil7aWYoIWdlKE4pKXRocm93IEVycm9yKCJSZWFjdC5DaGlsZHJlbi5vbmx5IGV4cGVjdGVkIHRvIHJlY2VpdmUgYSBzaW5nbGUgUmVhY3QgZWxlbWVudCBjaGlsZC4iKTtyZXR1cm4gTn19LGRlLkNvbXBvbmVudD1MLGRlLkZyYWdtZW50PWwsZGUuUHJvZmlsZXI9YyxkZS5QdXJlQ29tcG9uZW50PVEsZGUuU3RyaWN0TW9kZT11LGRlLlN1c3BlbnNlPXYsZGUuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ9bmUsZGUuYWN0PUcsZGUuY2xvbmVFbGVtZW50PWZ1bmN0aW9uKE4sTSxjZSl7aWYoTj09bnVsbCl0aHJvdyBFcnJvcigiUmVhY3QuY2xvbmVFbGVtZW50KC4uLik6IFRoZSBhcmd1bWVudCBtdXN0IGJlIGEgUmVhY3QgZWxlbWVudCwgYnV0IHlvdSBwYXNzZWQgIitOKyIuIik7dmFyIGZlPU8oe30sTi5wcm9wcyksdmU9Ti5rZXkseWU9Ti5yZWYsRWU9Ti5fb3duZXI7aWYoTSE9bnVsbCl7aWYoTS5yZWYhPT12b2lkIDAmJih5ZT1NLnJlZixFZT1zZS5jdXJyZW50KSxNLmtleSE9PXZvaWQgMCYmKHZlPSIiK00ua2V5KSxOLnR5cGUmJk4udHlwZS5kZWZhdWx0UHJvcHMpdmFyIGtlPU4udHlwZS5kZWZhdWx0UHJvcHM7Zm9yKF9lIGluIE0pQi5jYWxsKE0sX2UpJiYhaWUuaGFzT3duUHJvcGVydHkoX2UpJiYoZmVbX2VdPU1bX2VdPT09dm9pZCAwJiZrZSE9PXZvaWQgMD9rZVtfZV06TVtfZV0pfXZhciBfZT1hcmd1bWVudHMubGVuZ3RoLTI7aWYoX2U9PT0xKWZlLmNoaWxkcmVuPWNlO2Vsc2UgaWYoMTxfZSl7a2U9QXJyYXkoX2UpO2Zvcih2YXIgeXQ9MDt5dDxfZTt5dCsrKWtlW3l0XT1hcmd1bWVudHNbeXQrMl07ZmUuY2hpbGRyZW49a2V9cmV0dXJueyQkdHlwZW9mOnIsdHlwZTpOLnR5cGUsa2V5OnZlLHJlZjp5ZSxwcm9wczpmZSxfb3duZXI6RWV9fSxkZS5jcmVhdGVDb250ZXh0PWZ1bmN0aW9uKE4pe3JldHVybiBOPXskJHR5cGVvZjpwLF9jdXJyZW50VmFsdWU6TixfY3VycmVudFZhbHVlMjpOLF90aHJlYWRDb3VudDowLFByb3ZpZGVyOm51bGwsQ29uc3VtZXI6bnVsbCxfZGVmYXVsdFZhbHVlOm51bGwsX2dsb2JhbE5hbWU6bnVsbH0sTi5Qcm92aWRlcj17JCR0eXBlb2Y6aCxfY29udGV4dDpOfSxOLkNvbnN1bWVyPU59LGRlLmNyZWF0ZUVsZW1lbnQ9aGUsZGUuY3JlYXRlRmFjdG9yeT1mdW5jdGlvbihOKXt2YXIgTT1oZS5iaW5kKG51bGwsTik7cmV0dXJuIE0udHlwZT1OLE19LGRlLmNyZWF0ZVJlZj1mdW5jdGlvbigpe3JldHVybntjdXJyZW50Om51bGx9fSxkZS5mb3J3YXJkUmVmPWZ1bmN0aW9uKE4pe3JldHVybnskJHR5cGVvZjptLHJlbmRlcjpOfX0sZGUuaXNWYWxpZEVsZW1lbnQ9Z2UsZGUubGF6eT1mdW5jdGlvbihOKXtyZXR1cm57JCR0eXBlb2Y6QyxfcGF5bG9hZDp7X3N0YXR1czotMSxfcmVzdWx0Ok59LF9pbml0OkFlfX0sZGUubWVtbz1mdW5jdGlvbihOLE0pe3JldHVybnskJHR5cGVvZjpTLHR5cGU6Tixjb21wYXJlOk09PT12b2lkIDA/bnVsbDpNfX0sZGUuc3RhcnRUcmFuc2l0aW9uPWZ1bmN0aW9uKE4pe3ZhciBNPWIudHJhbnNpdGlvbjtiLnRyYW5zaXRpb249e307dHJ5e04oKX1maW5hbGx5e2IudHJhbnNpdGlvbj1NfX0sZGUudW5zdGFibGVfYWN0PUcsZGUudXNlQ2FsbGJhY2s9ZnVuY3Rpb24oTixNKXtyZXR1cm4gTWUuY3VycmVudC51c2VDYWxsYmFjayhOLE0pfSxkZS51c2VDb250ZXh0PWZ1bmN0aW9uKE4pe3JldHVybiBNZS5jdXJyZW50LnVzZUNvbnRleHQoTil9LGRlLnVzZURlYnVnVmFsdWU9ZnVuY3Rpb24oKXt9LGRlLnVzZURlZmVycmVkVmFsdWU9ZnVuY3Rpb24oTil7cmV0dXJuIE1lLmN1cnJlbnQudXNlRGVmZXJyZWRWYWx1ZShOKX0sZGUudXNlRWZmZWN0PWZ1bmN0aW9uKE4sTSl7cmV0dXJuIE1lLmN1cnJlbnQudXNlRWZmZWN0KE4sTSl9LGRlLnVzZUlkPWZ1bmN0aW9uKCl7cmV0dXJuIE1lLmN1cnJlbnQudXNlSWQoKX0sZGUudXNlSW1wZXJhdGl2ZUhhbmRsZT1mdW5jdGlvbihOLE0sY2Upe3JldHVybiBNZS5jdXJyZW50LnVzZUltcGVyYXRpdmVIYW5kbGUoTixNLGNlKX0sZGUudXNlSW5zZXJ0aW9uRWZmZWN0PWZ1bmN0aW9uKE4sTSl7cmV0dXJuIE1lLmN1cnJlbnQudXNlSW5zZXJ0aW9uRWZmZWN0KE4sTSl9LGRlLnVzZUxheW91dEVmZmVjdD1mdW5jdGlvbihOLE0pe3JldHVybiBNZS5jdXJyZW50LnVzZUxheW91dEVmZmVjdChOLE0pfSxkZS51c2VNZW1vPWZ1bmN0aW9uKE4sTSl7cmV0dXJuIE1lLmN1cnJlbnQudXNlTWVtbyhOLE0pfSxkZS51c2VSZWR1Y2VyPWZ1bmN0aW9uKE4sTSxjZSl7cmV0dXJuIE1lLmN1cnJlbnQudXNlUmVkdWNlcihOLE0sY2UpfSxkZS51c2VSZWY9ZnVuY3Rpb24oTil7cmV0dXJuIE1lLmN1cnJlbnQudXNlUmVmKE4pfSxkZS51c2VTdGF0ZT1mdW5jdGlvbihOKXtyZXR1cm4gTWUuY3VycmVudC51c2VTdGF0ZShOKX0sZGUudXNlU3luY0V4dGVybmFsU3RvcmU9ZnVuY3Rpb24oTixNLGNlKXtyZXR1cm4gTWUuY3VycmVudC51c2VTeW5jRXh0ZXJuYWxTdG9yZShOLE0sY2UpfSxkZS51c2VUcmFuc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIE1lLmN1cnJlbnQudXNlVHJhbnNpdGlvbigpfSxkZS52ZXJzaW9uPSIxOC4zLjEiLGRlfXZhciBGZjtmdW5jdGlvbiB5dSgpe3JldHVybiBGZnx8KEZmPTEsSGEuZXhwb3J0cz1hZygpKSxIYS5leHBvcnRzfS8qKgogKiBAbGljZW5zZSBSZWFjdAogKiByZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcwogKgogKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4KICoKICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlCiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4KICovdmFyIE9mO2Z1bmN0aW9uIHVnKCl7aWYoT2YpcmV0dXJuIFhpO09mPTE7dmFyIHI9eXUoKSxzPVN5bWJvbC5mb3IoInJlYWN0LmVsZW1lbnQiKSxsPVN5bWJvbC5mb3IoInJlYWN0LmZyYWdtZW50IiksdT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LGM9ci5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRC5SZWFjdEN1cnJlbnRPd25lcixoPXtrZXk6ITAscmVmOiEwLF9fc2VsZjohMCxfX3NvdXJjZTohMH07ZnVuY3Rpb24gcChtLHYsUyl7dmFyIEMseD17fSxfPW51bGwsST1udWxsO1MhPT12b2lkIDAmJihfPSIiK1MpLHYua2V5IT09dm9pZCAwJiYoXz0iIit2LmtleSksdi5yZWYhPT12b2lkIDAmJihJPXYucmVmKTtmb3IoQyBpbiB2KXUuY2FsbCh2LEMpJiYhaC5oYXNPd25Qcm9wZXJ0eShDKSYmKHhbQ109dltDXSk7aWYobSYmbS5kZWZhdWx0UHJvcHMpZm9yKEMgaW4gdj1tLmRlZmF1bHRQcm9wcyx2KXhbQ109PT12b2lkIDAmJih4W0NdPXZbQ10pO3JldHVybnskJHR5cGVvZjpzLHR5cGU6bSxrZXk6XyxyZWY6SSxwcm9wczp4LF9vd25lcjpjLmN1cnJlbnR9fXJldHVybiBYaS5GcmFnbWVudD1sLFhpLmpzeD1wLFhpLmpzeHM9cCxYaX12YXIgRGY7ZnVuY3Rpb24gY2coKXtyZXR1cm4gRGZ8fChEZj0xLEJhLmV4cG9ydHM9dWcoKSksQmEuZXhwb3J0c312YXIgZD1jZygpLEU9eXUoKTtjb25zdCBkZz13aChFKTt2YXIgUGw9e30sUWE9e2V4cG9ydHM6e319LGd0PXt9LHFhPXtleHBvcnRzOnt9fSxiYT17fTsvKioKICogQGxpY2Vuc2UgUmVhY3QKICogc2NoZWR1bGVyLnByb2R1Y3Rpb24ubWluLmpzCiAqCiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLgogKgogKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGUKICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLgogKi92YXIgSWY7ZnVuY3Rpb24gZmcoKXtyZXR1cm4gSWZ8fChJZj0xLChmdW5jdGlvbihyKXtmdW5jdGlvbiBzKGIsbmUpe3ZhciBHPWIubGVuZ3RoO2IucHVzaChuZSk7ZTpmb3IoOzA8Rzspe3ZhciBOPUctMT4+PjEsTT1iW05dO2lmKDA8YyhNLG5lKSliW05dPW5lLGJbR109TSxHPU47ZWxzZSBicmVhayBlfX1mdW5jdGlvbiBsKGIpe3JldHVybiBiLmxlbmd0aD09PTA/bnVsbDpiWzBdfWZ1bmN0aW9uIHUoYil7aWYoYi5sZW5ndGg9PT0wKXJldHVybiBudWxsO3ZhciBuZT1iWzBdLEc9Yi5wb3AoKTtpZihHIT09bmUpe2JbMF09RztlOmZvcih2YXIgTj0wLE09Yi5sZW5ndGgsY2U9TT4+PjE7TjxjZTspe3ZhciBmZT0yKihOKzEpLTEsdmU9YltmZV0seWU9ZmUrMSxFZT1iW3llXTtpZigwPmModmUsRykpeWU8TSYmMD5jKEVlLHZlKT8oYltOXT1FZSxiW3llXT1HLE49eWUpOihiW05dPXZlLGJbZmVdPUcsTj1mZSk7ZWxzZSBpZih5ZTxNJiYwPmMoRWUsRykpYltOXT1FZSxiW3llXT1HLE49eWU7ZWxzZSBicmVhayBlfX1yZXR1cm4gbmV9ZnVuY3Rpb24gYyhiLG5lKXt2YXIgRz1iLnNvcnRJbmRleC1uZS5zb3J0SW5kZXg7cmV0dXJuIEchPT0wP0c6Yi5pZC1uZS5pZH1pZih0eXBlb2YgcGVyZm9ybWFuY2U9PSJvYmplY3QiJiZ0eXBlb2YgcGVyZm9ybWFuY2Uubm93PT0iZnVuY3Rpb24iKXt2YXIgaD1wZXJmb3JtYW5jZTtyLnVuc3RhYmxlX25vdz1mdW5jdGlvbigpe3JldHVybiBoLm5vdygpfX1lbHNle3ZhciBwPURhdGUsbT1wLm5vdygpO3IudW5zdGFibGVfbm93PWZ1bmN0aW9uKCl7cmV0dXJuIHAubm93KCktbX19dmFyIHY9W10sUz1bXSxDPTEseD1udWxsLF89MyxJPSExLE89ITEsRj0hMSxMPXR5cGVvZiBzZXRUaW1lb3V0PT0iZnVuY3Rpb24iP3NldFRpbWVvdXQ6bnVsbCwkPXR5cGVvZiBjbGVhclRpbWVvdXQ9PSJmdW5jdGlvbiI/Y2xlYXJUaW1lb3V0Om51bGwsUT10eXBlb2Ygc2V0SW1tZWRpYXRlPCJ1Ij9zZXRJbW1lZGlhdGU6bnVsbDt0eXBlb2YgbmF2aWdhdG9yPCJ1IiYmbmF2aWdhdG9yLnNjaGVkdWxpbmchPT12b2lkIDAmJm5hdmlnYXRvci5zY2hlZHVsaW5nLmlzSW5wdXRQZW5kaW5nIT09dm9pZCAwJiZuYXZpZ2F0b3Iuc2NoZWR1bGluZy5pc0lucHV0UGVuZGluZy5iaW5kKG5hdmlnYXRvci5zY2hlZHVsaW5nKTtmdW5jdGlvbiBIKGIpe2Zvcih2YXIgbmU9bChTKTtuZSE9PW51bGw7KXtpZihuZS5jYWxsYmFjaz09PW51bGwpdShTKTtlbHNlIGlmKG5lLnN0YXJ0VGltZTw9Yil1KFMpLG5lLnNvcnRJbmRleD1uZS5leHBpcmF0aW9uVGltZSxzKHYsbmUpO2Vsc2UgYnJlYWs7bmU9bChTKX19ZnVuY3Rpb24gSyhiKXtpZihGPSExLEgoYiksIU8paWYobCh2KSE9PW51bGwpTz0hMCxBZShCKTtlbHNle3ZhciBuZT1sKFMpO25lIT09bnVsbCYmTWUoSyxuZS5zdGFydFRpbWUtYil9fWZ1bmN0aW9uIEIoYixuZSl7Tz0hMSxGJiYoRj0hMSwkKGhlKSxoZT0tMSksST0hMDt2YXIgRz1fO3RyeXtmb3IoSChuZSkseD1sKHYpO3ghPT1udWxsJiYoISh4LmV4cGlyYXRpb25UaW1lPm5lKXx8YiYmIWl0KCkpOyl7dmFyIE49eC5jYWxsYmFjaztpZih0eXBlb2YgTj09ImZ1bmN0aW9uIil7eC5jYWxsYmFjaz1udWxsLF89eC5wcmlvcml0eUxldmVsO3ZhciBNPU4oeC5leHBpcmF0aW9uVGltZTw9bmUpO25lPXIudW5zdGFibGVfbm93KCksdHlwZW9mIE09PSJmdW5jdGlvbiI/eC5jYWxsYmFjaz1NOng9PT1sKHYpJiZ1KHYpLEgobmUpfWVsc2UgdSh2KTt4PWwodil9aWYoeCE9PW51bGwpdmFyIGNlPSEwO2Vsc2V7dmFyIGZlPWwoUyk7ZmUhPT1udWxsJiZNZShLLGZlLnN0YXJ0VGltZS1uZSksY2U9ITF9cmV0dXJuIGNlfWZpbmFsbHl7eD1udWxsLF89RyxJPSExfX12YXIgc2U9ITEsaWU9bnVsbCxoZT0tMSx1ZT01LGdlPS0xO2Z1bmN0aW9uIGl0KCl7cmV0dXJuIShyLnVuc3RhYmxlX25vdygpLWdlPHVlKX1mdW5jdGlvbiBzdCgpe2lmKGllIT09bnVsbCl7dmFyIGI9ci51bnN0YWJsZV9ub3coKTtnZT1iO3ZhciBuZT0hMDt0cnl7bmU9aWUoITAsYil9ZmluYWxseXtuZT9IZSgpOihzZT0hMSxpZT1udWxsKX19ZWxzZSBzZT0hMX12YXIgSGU7aWYodHlwZW9mIFE9PSJmdW5jdGlvbiIpSGU9ZnVuY3Rpb24oKXtRKHN0KX07ZWxzZSBpZih0eXBlb2YgTWVzc2FnZUNoYW5uZWw8InUiKXt2YXIgb2U9bmV3IE1lc3NhZ2VDaGFubmVsLGFlPW9lLnBvcnQyO29lLnBvcnQxLm9ubWVzc2FnZT1zdCxIZT1mdW5jdGlvbigpe2FlLnBvc3RNZXNzYWdlKG51bGwpfX1lbHNlIEhlPWZ1bmN0aW9uKCl7TChzdCwwKX07ZnVuY3Rpb24gQWUoYil7aWU9YixzZXx8KHNlPSEwLEhlKCkpfWZ1bmN0aW9uIE1lKGIsbmUpe2hlPUwoZnVuY3Rpb24oKXtiKHIudW5zdGFibGVfbm93KCkpfSxuZSl9ci51bnN0YWJsZV9JZGxlUHJpb3JpdHk9NSxyLnVuc3RhYmxlX0ltbWVkaWF0ZVByaW9yaXR5PTEsci51bnN0YWJsZV9Mb3dQcmlvcml0eT00LHIudW5zdGFibGVfTm9ybWFsUHJpb3JpdHk9MyxyLnVuc3RhYmxlX1Byb2ZpbGluZz1udWxsLHIudW5zdGFibGVfVXNlckJsb2NraW5nUHJpb3JpdHk9MixyLnVuc3RhYmxlX2NhbmNlbENhbGxiYWNrPWZ1bmN0aW9uKGIpe2IuY2FsbGJhY2s9bnVsbH0sci51bnN0YWJsZV9jb250aW51ZUV4ZWN1dGlvbj1mdW5jdGlvbigpe098fEl8fChPPSEwLEFlKEIpKX0sci51bnN0YWJsZV9mb3JjZUZyYW1lUmF0ZT1mdW5jdGlvbihiKXswPmJ8fDEyNTxiP2NvbnNvbGUuZXJyb3IoImZvcmNlRnJhbWVSYXRlIHRha2VzIGEgcG9zaXRpdmUgaW50IGJldHdlZW4gMCBhbmQgMTI1LCBmb3JjaW5nIGZyYW1lIHJhdGVzIGhpZ2hlciB0aGFuIDEyNSBmcHMgaXMgbm90IHN1cHBvcnRlZCIpOnVlPTA8Yj9NYXRoLmZsb29yKDFlMy9iKTo1fSxyLnVuc3RhYmxlX2dldEN1cnJlbnRQcmlvcml0eUxldmVsPWZ1bmN0aW9uKCl7cmV0dXJuIF99LHIudW5zdGFibGVfZ2V0Rmlyc3RDYWxsYmFja05vZGU9ZnVuY3Rpb24oKXtyZXR1cm4gbCh2KX0sci51bnN0YWJsZV9uZXh0PWZ1bmN0aW9uKGIpe3N3aXRjaChfKXtjYXNlIDE6Y2FzZSAyOmNhc2UgMzp2YXIgbmU9MzticmVhaztkZWZhdWx0Om5lPV99dmFyIEc9XztfPW5lO3RyeXtyZXR1cm4gYigpfWZpbmFsbHl7Xz1HfX0sci51bnN0YWJsZV9wYXVzZUV4ZWN1dGlvbj1mdW5jdGlvbigpe30sci51bnN0YWJsZV9yZXF1ZXN0UGFpbnQ9ZnVuY3Rpb24oKXt9LHIudW5zdGFibGVfcnVuV2l0aFByaW9yaXR5PWZ1bmN0aW9uKGIsbmUpe3N3aXRjaChiKXtjYXNlIDE6Y2FzZSAyOmNhc2UgMzpjYXNlIDQ6Y2FzZSA1OmJyZWFrO2RlZmF1bHQ6Yj0zfXZhciBHPV87Xz1iO3RyeXtyZXR1cm4gbmUoKX1maW5hbGx5e189R319LHIudW5zdGFibGVfc2NoZWR1bGVDYWxsYmFjaz1mdW5jdGlvbihiLG5lLEcpe3ZhciBOPXIudW5zdGFibGVfbm93KCk7c3dpdGNoKHR5cGVvZiBHPT0ib2JqZWN0IiYmRyE9PW51bGw/KEc9Ry5kZWxheSxHPXR5cGVvZiBHPT0ibnVtYmVyIiYmMDxHP04rRzpOKTpHPU4sYil7Y2FzZSAxOnZhciBNPS0xO2JyZWFrO2Nhc2UgMjpNPTI1MDticmVhaztjYXNlIDU6TT0xMDczNzQxODIzO2JyZWFrO2Nhc2UgNDpNPTFlNDticmVhaztkZWZhdWx0Ok09NWUzfXJldHVybiBNPUcrTSxiPXtpZDpDKyssY2FsbGJhY2s6bmUscHJpb3JpdHlMZXZlbDpiLHN0YXJ0VGltZTpHLGV4cGlyYXRpb25UaW1lOk0sc29ydEluZGV4Oi0xfSxHPk4/KGIuc29ydEluZGV4PUcscyhTLGIpLGwodik9PT1udWxsJiZiPT09bChTKSYmKEY/KCQoaGUpLGhlPS0xKTpGPSEwLE1lKEssRy1OKSkpOihiLnNvcnRJbmRleD1NLHModixiKSxPfHxJfHwoTz0hMCxBZShCKSkpLGJ9LHIudW5zdGFibGVfc2hvdWxkWWllbGQ9aXQsci51bnN0YWJsZV93cmFwQ2FsbGJhY2s9ZnVuY3Rpb24oYil7dmFyIG5lPV87cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIEc9XztfPW5lO3RyeXtyZXR1cm4gYi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZmluYWxseXtfPUd9fX19KShiYSkpLGJhfXZhciBNZjtmdW5jdGlvbiBoZygpe3JldHVybiBNZnx8KE1mPTEscWEuZXhwb3J0cz1mZygpKSxxYS5leHBvcnRzfS8qKgogKiBAbGljZW5zZSBSZWFjdAogKiByZWFjdC1kb20ucHJvZHVjdGlvbi5taW4uanMKICoKICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuCiAqCiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZQogKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuCiAqL3ZhciB6ZjtmdW5jdGlvbiBwZygpe2lmKHpmKXJldHVybiBndDt6Zj0xO3ZhciByPXl1KCkscz1oZygpO2Z1bmN0aW9uIGwoZSl7Zm9yKHZhciB0PSJodHRwczovL3JlYWN0anMub3JnL2RvY3MvZXJyb3ItZGVjb2Rlci5odG1sP2ludmFyaWFudD0iK2Usbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspdCs9IiZhcmdzW109IitlbmNvZGVVUklDb21wb25lbnQoYXJndW1lbnRzW25dKTtyZXR1cm4iTWluaWZpZWQgUmVhY3QgZXJyb3IgIyIrZSsiOyB2aXNpdCAiK3QrIiBmb3IgdGhlIGZ1bGwgbWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIGZ1bGwgZXJyb3JzIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuIn12YXIgdT1uZXcgU2V0LGM9e307ZnVuY3Rpb24gaChlLHQpe3AoZSx0KSxwKGUrIkNhcHR1cmUiLHQpfWZ1bmN0aW9uIHAoZSx0KXtmb3IoY1tlXT10LGU9MDtlPHQubGVuZ3RoO2UrKyl1LmFkZCh0W2VdKX12YXIgbT0hKHR5cGVvZiB3aW5kb3c+InUifHx0eXBlb2Ygd2luZG93LmRvY3VtZW50PiJ1Inx8dHlwZW9mIHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50PiJ1Iiksdj1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LFM9L15bOkEtWl9hLXpcdTAwQzAtXHUwMEQ2XHUwMEQ4LVx1MDBGNlx1MDBGOC1cdTAyRkZcdTAzNzAtXHUwMzdEXHUwMzdGLVx1MUZGRlx1MjAwQy1cdTIwMERcdTIwNzAtXHUyMThGXHUyQzAwLVx1MkZFRlx1MzAwMS1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZGRF1bOkEtWl9hLXpcdTAwQzAtXHUwMEQ2XHUwMEQ4LVx1MDBGNlx1MDBGOC1cdTAyRkZcdTAzNzAtXHUwMzdEXHUwMzdGLVx1MUZGRlx1MjAwQy1cdTIwMERcdTIwNzAtXHUyMThGXHUyQzAwLVx1MkZFRlx1MzAwMS1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZGRFwtLjAtOVx1MDBCN1x1MDMwMC1cdTAzNkZcdTIwM0YtXHUyMDQwXSokLyxDPXt9LHg9e307ZnVuY3Rpb24gXyhlKXtyZXR1cm4gdi5jYWxsKHgsZSk/ITA6di5jYWxsKEMsZSk/ITE6Uy50ZXN0KGUpP3hbZV09ITA6KENbZV09ITAsITEpfWZ1bmN0aW9uIEkoZSx0LG4saSl7aWYobiE9PW51bGwmJm4udHlwZT09PTApcmV0dXJuITE7c3dpdGNoKHR5cGVvZiB0KXtjYXNlImZ1bmN0aW9uIjpjYXNlInN5bWJvbCI6cmV0dXJuITA7Y2FzZSJib29sZWFuIjpyZXR1cm4gaT8hMTpuIT09bnVsbD8hbi5hY2NlcHRzQm9vbGVhbnM6KGU9ZS50b0xvd2VyQ2FzZSgpLnNsaWNlKDAsNSksZSE9PSJkYXRhLSImJmUhPT0iYXJpYS0iKTtkZWZhdWx0OnJldHVybiExfX1mdW5jdGlvbiBPKGUsdCxuLGkpe2lmKHQ9PT1udWxsfHx0eXBlb2YgdD4idSJ8fEkoZSx0LG4saSkpcmV0dXJuITA7aWYoaSlyZXR1cm4hMTtpZihuIT09bnVsbClzd2l0Y2gobi50eXBlKXtjYXNlIDM6cmV0dXJuIXQ7Y2FzZSA0OnJldHVybiB0PT09ITE7Y2FzZSA1OnJldHVybiBpc05hTih0KTtjYXNlIDY6cmV0dXJuIGlzTmFOKHQpfHwxPnR9cmV0dXJuITF9ZnVuY3Rpb24gRihlLHQsbixpLG8sYSxmKXt0aGlzLmFjY2VwdHNCb29sZWFucz10PT09Mnx8dD09PTN8fHQ9PT00LHRoaXMuYXR0cmlidXRlTmFtZT1pLHRoaXMuYXR0cmlidXRlTmFtZXNwYWNlPW8sdGhpcy5tdXN0VXNlUHJvcGVydHk9bix0aGlzLnByb3BlcnR5TmFtZT1lLHRoaXMudHlwZT10LHRoaXMuc2FuaXRpemVVUkw9YSx0aGlzLnJlbW92ZUVtcHR5U3RyaW5nPWZ9dmFyIEw9e307ImNoaWxkcmVuIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIGRlZmF1bHRWYWx1ZSBkZWZhdWx0Q2hlY2tlZCBpbm5lckhUTUwgc3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nIHN1cHByZXNzSHlkcmF0aW9uV2FybmluZyBzdHlsZSIuc3BsaXQoIiAiKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe0xbZV09bmV3IEYoZSwwLCExLGUsbnVsbCwhMSwhMSl9KSxbWyJhY2NlcHRDaGFyc2V0IiwiYWNjZXB0LWNoYXJzZXQiXSxbImNsYXNzTmFtZSIsImNsYXNzIl0sWyJodG1sRm9yIiwiZm9yIl0sWyJodHRwRXF1aXYiLCJodHRwLWVxdWl2Il1dLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9ZVswXTtMW3RdPW5ldyBGKHQsMSwhMSxlWzFdLG51bGwsITEsITEpfSksWyJjb250ZW50RWRpdGFibGUiLCJkcmFnZ2FibGUiLCJzcGVsbENoZWNrIiwidmFsdWUiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe0xbZV09bmV3IEYoZSwyLCExLGUudG9Mb3dlckNhc2UoKSxudWxsLCExLCExKX0pLFsiYXV0b1JldmVyc2UiLCJleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkIiwiZm9jdXNhYmxlIiwicHJlc2VydmVBbHBoYSJdLmZvckVhY2goZnVuY3Rpb24oZSl7TFtlXT1uZXcgRihlLDIsITEsZSxudWxsLCExLCExKX0pLCJhbGxvd0Z1bGxTY3JlZW4gYXN5bmMgYXV0b0ZvY3VzIGF1dG9QbGF5IGNvbnRyb2xzIGRlZmF1bHQgZGVmZXIgZGlzYWJsZWQgZGlzYWJsZVBpY3R1cmVJblBpY3R1cmUgZGlzYWJsZVJlbW90ZVBsYXliYWNrIGZvcm1Ob1ZhbGlkYXRlIGhpZGRlbiBsb29wIG5vTW9kdWxlIG5vVmFsaWRhdGUgb3BlbiBwbGF5c0lubGluZSByZWFkT25seSByZXF1aXJlZCByZXZlcnNlZCBzY29wZWQgc2VhbWxlc3MgaXRlbVNjb3BlIi5zcGxpdCgiICIpLmZvckVhY2goZnVuY3Rpb24oZSl7TFtlXT1uZXcgRihlLDMsITEsZS50b0xvd2VyQ2FzZSgpLG51bGwsITEsITEpfSksWyJjaGVja2VkIiwibXVsdGlwbGUiLCJtdXRlZCIsInNlbGVjdGVkIl0uZm9yRWFjaChmdW5jdGlvbihlKXtMW2VdPW5ldyBGKGUsMywhMCxlLG51bGwsITEsITEpfSksWyJjYXB0dXJlIiwiZG93bmxvYWQiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe0xbZV09bmV3IEYoZSw0LCExLGUsbnVsbCwhMSwhMSl9KSxbImNvbHMiLCJyb3dzIiwic2l6ZSIsInNwYW4iXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe0xbZV09bmV3IEYoZSw2LCExLGUsbnVsbCwhMSwhMSl9KSxbInJvd1NwYW4iLCJzdGFydCJdLmZvckVhY2goZnVuY3Rpb24oZSl7TFtlXT1uZXcgRihlLDUsITEsZS50b0xvd2VyQ2FzZSgpLG51bGwsITEsITEpfSk7dmFyICQ9L1tcLTpdKFthLXpdKS9nO2Z1bmN0aW9uIFEoZSl7cmV0dXJuIGVbMV0udG9VcHBlckNhc2UoKX0iYWNjZW50LWhlaWdodCBhbGlnbm1lbnQtYmFzZWxpbmUgYXJhYmljLWZvcm0gYmFzZWxpbmUtc2hpZnQgY2FwLWhlaWdodCBjbGlwLXBhdGggY2xpcC1ydWxlIGNvbG9yLWludGVycG9sYXRpb24gY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzIGNvbG9yLXByb2ZpbGUgY29sb3ItcmVuZGVyaW5nIGRvbWluYW50LWJhc2VsaW5lIGVuYWJsZS1iYWNrZ3JvdW5kIGZpbGwtb3BhY2l0eSBmaWxsLXJ1bGUgZmxvb2QtY29sb3IgZmxvb2Qtb3BhY2l0eSBmb250LWZhbWlseSBmb250LXNpemUgZm9udC1zaXplLWFkanVzdCBmb250LXN0cmV0Y2ggZm9udC1zdHlsZSBmb250LXZhcmlhbnQgZm9udC13ZWlnaHQgZ2x5cGgtbmFtZSBnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIGdseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsIGhvcml6LWFkdi14IGhvcml6LW9yaWdpbi14IGltYWdlLXJlbmRlcmluZyBsZXR0ZXItc3BhY2luZyBsaWdodGluZy1jb2xvciBtYXJrZXItZW5kIG1hcmtlci1taWQgbWFya2VyLXN0YXJ0IG92ZXJsaW5lLXBvc2l0aW9uIG92ZXJsaW5lLXRoaWNrbmVzcyBwYWludC1vcmRlciBwYW5vc2UtMSBwb2ludGVyLWV2ZW50cyByZW5kZXJpbmctaW50ZW50IHNoYXBlLXJlbmRlcmluZyBzdG9wLWNvbG9yIHN0b3Atb3BhY2l0eSBzdHJpa2V0aHJvdWdoLXBvc2l0aW9uIHN0cmlrZXRocm91Z2gtdGhpY2tuZXNzIHN0cm9rZS1kYXNoYXJyYXkgc3Ryb2tlLWRhc2hvZmZzZXQgc3Ryb2tlLWxpbmVjYXAgc3Ryb2tlLWxpbmVqb2luIHN0cm9rZS1taXRlcmxpbWl0IHN0cm9rZS1vcGFjaXR5IHN0cm9rZS13aWR0aCB0ZXh0LWFuY2hvciB0ZXh0LWRlY29yYXRpb24gdGV4dC1yZW5kZXJpbmcgdW5kZXJsaW5lLXBvc2l0aW9uIHVuZGVybGluZS10aGlja25lc3MgdW5pY29kZS1iaWRpIHVuaWNvZGUtcmFuZ2UgdW5pdHMtcGVyLWVtIHYtYWxwaGFiZXRpYyB2LWhhbmdpbmcgdi1pZGVvZ3JhcGhpYyB2LW1hdGhlbWF0aWNhbCB2ZWN0b3ItZWZmZWN0IHZlcnQtYWR2LXkgdmVydC1vcmlnaW4teCB2ZXJ0LW9yaWdpbi15IHdvcmQtc3BhY2luZyB3cml0aW5nLW1vZGUgeG1sbnM6eGxpbmsgeC1oZWlnaHQiLnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1lLnJlcGxhY2UoJCxRKTtMW3RdPW5ldyBGKHQsMSwhMSxlLG51bGwsITEsITEpfSksInhsaW5rOmFjdHVhdGUgeGxpbms6YXJjcm9sZSB4bGluazpyb2xlIHhsaW5rOnNob3cgeGxpbms6dGl0bGUgeGxpbms6dHlwZSIuc3BsaXQoIiAiKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PWUucmVwbGFjZSgkLFEpO0xbdF09bmV3IEYodCwxLCExLGUsImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLCExLCExKX0pLFsieG1sOmJhc2UiLCJ4bWw6bGFuZyIsInhtbDpzcGFjZSJdLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXBsYWNlKCQsUSk7TFt0XT1uZXcgRih0LDEsITEsZSwiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIiwhMSwhMSl9KSxbInRhYkluZGV4IiwiY3Jvc3NPcmlnaW4iXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe0xbZV09bmV3IEYoZSwxLCExLGUudG9Mb3dlckNhc2UoKSxudWxsLCExLCExKX0pLEwueGxpbmtIcmVmPW5ldyBGKCJ4bGlua0hyZWYiLDEsITEsInhsaW5rOmhyZWYiLCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiwhMCwhMSksWyJzcmMiLCJocmVmIiwiYWN0aW9uIiwiZm9ybUFjdGlvbiJdLmZvckVhY2goZnVuY3Rpb24oZSl7TFtlXT1uZXcgRihlLDEsITEsZS50b0xvd2VyQ2FzZSgpLG51bGwsITAsITApfSk7ZnVuY3Rpb24gSChlLHQsbixpKXt2YXIgbz1MLmhhc093blByb3BlcnR5KHQpP0xbdF06bnVsbDsobyE9PW51bGw/by50eXBlIT09MDppfHwhKDI8dC5sZW5ndGgpfHx0WzBdIT09Im8iJiZ0WzBdIT09Ik8ifHx0WzFdIT09Im4iJiZ0WzFdIT09Ik4iKSYmKE8odCxuLG8saSkmJihuPW51bGwpLGl8fG89PT1udWxsP18odCkmJihuPT09bnVsbD9lLnJlbW92ZUF0dHJpYnV0ZSh0KTplLnNldEF0dHJpYnV0ZSh0LCIiK24pKTpvLm11c3RVc2VQcm9wZXJ0eT9lW28ucHJvcGVydHlOYW1lXT1uPT09bnVsbD9vLnR5cGU9PT0zPyExOiIiOm46KHQ9by5hdHRyaWJ1dGVOYW1lLGk9by5hdHRyaWJ1dGVOYW1lc3BhY2Usbj09PW51bGw/ZS5yZW1vdmVBdHRyaWJ1dGUodCk6KG89by50eXBlLG49bz09PTN8fG89PT00JiZuPT09ITA/IiI6IiIrbixpP2Uuc2V0QXR0cmlidXRlTlMoaSx0LG4pOmUuc2V0QXR0cmlidXRlKHQsbikpKSl9dmFyIEs9ci5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCxCPVN5bWJvbC5mb3IoInJlYWN0LmVsZW1lbnQiKSxzZT1TeW1ib2wuZm9yKCJyZWFjdC5wb3J0YWwiKSxpZT1TeW1ib2wuZm9yKCJyZWFjdC5mcmFnbWVudCIpLGhlPVN5bWJvbC5mb3IoInJlYWN0LnN0cmljdF9tb2RlIiksdWU9U3ltYm9sLmZvcigicmVhY3QucHJvZmlsZXIiKSxnZT1TeW1ib2wuZm9yKCJyZWFjdC5wcm92aWRlciIpLGl0PVN5bWJvbC5mb3IoInJlYWN0LmNvbnRleHQiKSxzdD1TeW1ib2wuZm9yKCJyZWFjdC5mb3J3YXJkX3JlZiIpLEhlPVN5bWJvbC5mb3IoInJlYWN0LnN1c3BlbnNlIiksb2U9U3ltYm9sLmZvcigicmVhY3Quc3VzcGVuc2VfbGlzdCIpLGFlPVN5bWJvbC5mb3IoInJlYWN0Lm1lbW8iKSxBZT1TeW1ib2wuZm9yKCJyZWFjdC5sYXp5IiksTWU9U3ltYm9sLmZvcigicmVhY3Qub2Zmc2NyZWVuIiksYj1TeW1ib2wuaXRlcmF0b3I7ZnVuY3Rpb24gbmUoZSl7cmV0dXJuIGU9PT1udWxsfHx0eXBlb2YgZSE9Im9iamVjdCI/bnVsbDooZT1iJiZlW2JdfHxlWyJAQGl0ZXJhdG9yIl0sdHlwZW9mIGU9PSJmdW5jdGlvbiI/ZTpudWxsKX12YXIgRz1PYmplY3QuYXNzaWduLE47ZnVuY3Rpb24gTShlKXtpZihOPT09dm9pZCAwKXRyeXt0aHJvdyBFcnJvcigpfWNhdGNoKG4pe3ZhciB0PW4uc3RhY2sudHJpbSgpLm1hdGNoKC9cbiggKihhdCApPykvKTtOPXQmJnRbMV18fCIifXJldHVybmAKYCtOK2V9dmFyIGNlPSExO2Z1bmN0aW9uIGZlKGUsdCl7aWYoIWV8fGNlKXJldHVybiIiO2NlPSEwO3ZhciBuPUVycm9yLnByZXBhcmVTdGFja1RyYWNlO0Vycm9yLnByZXBhcmVTdGFja1RyYWNlPXZvaWQgMDt0cnl7aWYodClpZih0PWZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoKX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJwcm9wcyIse3NldDpmdW5jdGlvbigpe3Rocm93IEVycm9yKCl9fSksdHlwZW9mIFJlZmxlY3Q9PSJvYmplY3QiJiZSZWZsZWN0LmNvbnN0cnVjdCl7dHJ5e1JlZmxlY3QuY29uc3RydWN0KHQsW10pfWNhdGNoKFQpe3ZhciBpPVR9UmVmbGVjdC5jb25zdHJ1Y3QoZSxbXSx0KX1lbHNle3RyeXt0LmNhbGwoKX1jYXRjaChUKXtpPVR9ZS5jYWxsKHQucHJvdG90eXBlKX1lbHNle3RyeXt0aHJvdyBFcnJvcigpfWNhdGNoKFQpe2k9VH1lKCl9fWNhdGNoKFQpe2lmKFQmJmkmJnR5cGVvZiBULnN0YWNrPT0ic3RyaW5nIil7Zm9yKHZhciBvPVQuc3RhY2suc3BsaXQoYApgKSxhPWkuc3RhY2suc3BsaXQoYApgKSxmPW8ubGVuZ3RoLTEsZz1hLmxlbmd0aC0xOzE8PWYmJjA8PWcmJm9bZl0hPT1hW2ddOylnLS07Zm9yKDsxPD1mJiYwPD1nO2YtLSxnLS0paWYob1tmXSE9PWFbZ10pe2lmKGYhPT0xfHxnIT09MSlkbyBpZihmLS0sZy0tLDA+Z3x8b1tmXSE9PWFbZ10pe3ZhciB3PWAKYCtvW2ZdLnJlcGxhY2UoIiBhdCBuZXcgIiwiIGF0ICIpO3JldHVybiBlLmRpc3BsYXlOYW1lJiZ3LmluY2x1ZGVzKCI8YW5vbnltb3VzPiIpJiYodz13LnJlcGxhY2UoIjxhbm9ueW1vdXM+IixlLmRpc3BsYXlOYW1lKSksd313aGlsZSgxPD1mJiYwPD1nKTticmVha319fWZpbmFsbHl7Y2U9ITEsRXJyb3IucHJlcGFyZVN0YWNrVHJhY2U9bn1yZXR1cm4oZT1lP2UuZGlzcGxheU5hbWV8fGUubmFtZToiIik/TShlKToiIn1mdW5jdGlvbiB2ZShlKXtzd2l0Y2goZS50YWcpe2Nhc2UgNTpyZXR1cm4gTShlLnR5cGUpO2Nhc2UgMTY6cmV0dXJuIE0oIkxhenkiKTtjYXNlIDEzOnJldHVybiBNKCJTdXNwZW5zZSIpO2Nhc2UgMTk6cmV0dXJuIE0oIlN1c3BlbnNlTGlzdCIpO2Nhc2UgMDpjYXNlIDI6Y2FzZSAxNTpyZXR1cm4gZT1mZShlLnR5cGUsITEpLGU7Y2FzZSAxMTpyZXR1cm4gZT1mZShlLnR5cGUucmVuZGVyLCExKSxlO2Nhc2UgMTpyZXR1cm4gZT1mZShlLnR5cGUsITApLGU7ZGVmYXVsdDpyZXR1cm4iIn19ZnVuY3Rpb24geWUoZSl7aWYoZT09bnVsbClyZXR1cm4gbnVsbDtpZih0eXBlb2YgZT09ImZ1bmN0aW9uIilyZXR1cm4gZS5kaXNwbGF5TmFtZXx8ZS5uYW1lfHxudWxsO2lmKHR5cGVvZiBlPT0ic3RyaW5nIilyZXR1cm4gZTtzd2l0Y2goZSl7Y2FzZSBpZTpyZXR1cm4iRnJhZ21lbnQiO2Nhc2Ugc2U6cmV0dXJuIlBvcnRhbCI7Y2FzZSB1ZTpyZXR1cm4iUHJvZmlsZXIiO2Nhc2UgaGU6cmV0dXJuIlN0cmljdE1vZGUiO2Nhc2UgSGU6cmV0dXJuIlN1c3BlbnNlIjtjYXNlIG9lOnJldHVybiJTdXNwZW5zZUxpc3QifWlmKHR5cGVvZiBlPT0ib2JqZWN0Iilzd2l0Y2goZS4kJHR5cGVvZil7Y2FzZSBpdDpyZXR1cm4oZS5kaXNwbGF5TmFtZXx8IkNvbnRleHQiKSsiLkNvbnN1bWVyIjtjYXNlIGdlOnJldHVybihlLl9jb250ZXh0LmRpc3BsYXlOYW1lfHwiQ29udGV4dCIpKyIuUHJvdmlkZXIiO2Nhc2Ugc3Q6dmFyIHQ9ZS5yZW5kZXI7cmV0dXJuIGU9ZS5kaXNwbGF5TmFtZSxlfHwoZT10LmRpc3BsYXlOYW1lfHx0Lm5hbWV8fCIiLGU9ZSE9PSIiPyJGb3J3YXJkUmVmKCIrZSsiKSI6IkZvcndhcmRSZWYiKSxlO2Nhc2UgYWU6cmV0dXJuIHQ9ZS5kaXNwbGF5TmFtZXx8bnVsbCx0IT09bnVsbD90OnllKGUudHlwZSl8fCJNZW1vIjtjYXNlIEFlOnQ9ZS5fcGF5bG9hZCxlPWUuX2luaXQ7dHJ5e3JldHVybiB5ZShlKHQpKX1jYXRjaHt9fXJldHVybiBudWxsfWZ1bmN0aW9uIEVlKGUpe3ZhciB0PWUudHlwZTtzd2l0Y2goZS50YWcpe2Nhc2UgMjQ6cmV0dXJuIkNhY2hlIjtjYXNlIDk6cmV0dXJuKHQuZGlzcGxheU5hbWV8fCJDb250ZXh0IikrIi5Db25zdW1lciI7Y2FzZSAxMDpyZXR1cm4odC5fY29udGV4dC5kaXNwbGF5TmFtZXx8IkNvbnRleHQiKSsiLlByb3ZpZGVyIjtjYXNlIDE4OnJldHVybiJEZWh5ZHJhdGVkRnJhZ21lbnQiO2Nhc2UgMTE6cmV0dXJuIGU9dC5yZW5kZXIsZT1lLmRpc3BsYXlOYW1lfHxlLm5hbWV8fCIiLHQuZGlzcGxheU5hbWV8fChlIT09IiI/IkZvcndhcmRSZWYoIitlKyIpIjoiRm9yd2FyZFJlZiIpO2Nhc2UgNzpyZXR1cm4iRnJhZ21lbnQiO2Nhc2UgNTpyZXR1cm4gdDtjYXNlIDQ6cmV0dXJuIlBvcnRhbCI7Y2FzZSAzOnJldHVybiJSb290IjtjYXNlIDY6cmV0dXJuIlRleHQiO2Nhc2UgMTY6cmV0dXJuIHllKHQpO2Nhc2UgODpyZXR1cm4gdD09PWhlPyJTdHJpY3RNb2RlIjoiTW9kZSI7Y2FzZSAyMjpyZXR1cm4iT2Zmc2NyZWVuIjtjYXNlIDEyOnJldHVybiJQcm9maWxlciI7Y2FzZSAyMTpyZXR1cm4iU2NvcGUiO2Nhc2UgMTM6cmV0dXJuIlN1c3BlbnNlIjtjYXNlIDE5OnJldHVybiJTdXNwZW5zZUxpc3QiO2Nhc2UgMjU6cmV0dXJuIlRyYWNpbmdNYXJrZXIiO2Nhc2UgMTpjYXNlIDA6Y2FzZSAxNzpjYXNlIDI6Y2FzZSAxNDpjYXNlIDE1OmlmKHR5cGVvZiB0PT0iZnVuY3Rpb24iKXJldHVybiB0LmRpc3BsYXlOYW1lfHx0Lm5hbWV8fG51bGw7aWYodHlwZW9mIHQ9PSJzdHJpbmciKXJldHVybiB0fXJldHVybiBudWxsfWZ1bmN0aW9uIGtlKGUpe3N3aXRjaCh0eXBlb2YgZSl7Y2FzZSJib29sZWFuIjpjYXNlIm51bWJlciI6Y2FzZSJzdHJpbmciOmNhc2UidW5kZWZpbmVkIjpyZXR1cm4gZTtjYXNlIm9iamVjdCI6cmV0dXJuIGU7ZGVmYXVsdDpyZXR1cm4iIn19ZnVuY3Rpb24gX2UoZSl7dmFyIHQ9ZS50eXBlO3JldHVybihlPWUubm9kZU5hbWUpJiZlLnRvTG93ZXJDYXNlKCk9PT0iaW5wdXQiJiYodD09PSJjaGVja2JveCJ8fHQ9PT0icmFkaW8iKX1mdW5jdGlvbiB5dChlKXt2YXIgdD1fZShlKT8iY2hlY2tlZCI6InZhbHVlIixuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsdCksaT0iIitlW3RdO2lmKCFlLmhhc093blByb3BlcnR5KHQpJiZ0eXBlb2YgbjwidSImJnR5cGVvZiBuLmdldD09ImZ1bmN0aW9uIiYmdHlwZW9mIG4uc2V0PT0iZnVuY3Rpb24iKXt2YXIgbz1uLmdldCxhPW4uc2V0O3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uY2FsbCh0aGlzKX0sc2V0OmZ1bmN0aW9uKGYpe2k9IiIrZixhLmNhbGwodGhpcyxmKX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtlbnVtZXJhYmxlOm4uZW51bWVyYWJsZX0pLHtnZXRWYWx1ZTpmdW5jdGlvbigpe3JldHVybiBpfSxzZXRWYWx1ZTpmdW5jdGlvbihmKXtpPSIiK2Z9LHN0b3BUcmFja2luZzpmdW5jdGlvbigpe2UuX3ZhbHVlVHJhY2tlcj1udWxsLGRlbGV0ZSBlW3RdfX19fWZ1bmN0aW9uIHZzKGUpe2UuX3ZhbHVlVHJhY2tlcnx8KGUuX3ZhbHVlVHJhY2tlcj15dChlKSl9ZnVuY3Rpb24gSXUoZSl7aWYoIWUpcmV0dXJuITE7dmFyIHQ9ZS5fdmFsdWVUcmFja2VyO2lmKCF0KXJldHVybiEwO3ZhciBuPXQuZ2V0VmFsdWUoKSxpPSIiO3JldHVybiBlJiYoaT1fZShlKT9lLmNoZWNrZWQ/InRydWUiOiJmYWxzZSI6ZS52YWx1ZSksZT1pLGUhPT1uPyh0LnNldFZhbHVlKGUpLCEwKTohMX1mdW5jdGlvbiB5cyhlKXtpZihlPWV8fCh0eXBlb2YgZG9jdW1lbnQ8InUiP2RvY3VtZW50OnZvaWQgMCksdHlwZW9mIGU+InUiKXJldHVybiBudWxsO3RyeXtyZXR1cm4gZS5hY3RpdmVFbGVtZW50fHxlLmJvZHl9Y2F0Y2h7cmV0dXJuIGUuYm9keX19ZnVuY3Rpb24gV2woZSx0KXt2YXIgbj10LmNoZWNrZWQ7cmV0dXJuIEcoe30sdCx7ZGVmYXVsdENoZWNrZWQ6dm9pZCAwLGRlZmF1bHRWYWx1ZTp2b2lkIDAsdmFsdWU6dm9pZCAwLGNoZWNrZWQ6bj8/ZS5fd3JhcHBlclN0YXRlLmluaXRpYWxDaGVja2VkfSl9ZnVuY3Rpb24gTXUoZSx0KXt2YXIgbj10LmRlZmF1bHRWYWx1ZT09bnVsbD8iIjp0LmRlZmF1bHRWYWx1ZSxpPXQuY2hlY2tlZCE9bnVsbD90LmNoZWNrZWQ6dC5kZWZhdWx0Q2hlY2tlZDtuPWtlKHQudmFsdWUhPW51bGw/dC52YWx1ZTpuKSxlLl93cmFwcGVyU3RhdGU9e2luaXRpYWxDaGVja2VkOmksaW5pdGlhbFZhbHVlOm4sY29udHJvbGxlZDp0LnR5cGU9PT0iY2hlY2tib3gifHx0LnR5cGU9PT0icmFkaW8iP3QuY2hlY2tlZCE9bnVsbDp0LnZhbHVlIT1udWxsfX1mdW5jdGlvbiB6dShlLHQpe3Q9dC5jaGVja2VkLHQhPW51bGwmJkgoZSwiY2hlY2tlZCIsdCwhMSl9ZnVuY3Rpb24gVmwoZSx0KXt6dShlLHQpO3ZhciBuPWtlKHQudmFsdWUpLGk9dC50eXBlO2lmKG4hPW51bGwpaT09PSJudW1iZXIiPyhuPT09MCYmZS52YWx1ZT09PSIifHxlLnZhbHVlIT1uKSYmKGUudmFsdWU9IiIrbik6ZS52YWx1ZSE9PSIiK24mJihlLnZhbHVlPSIiK24pO2Vsc2UgaWYoaT09PSJzdWJtaXQifHxpPT09InJlc2V0Iil7ZS5yZW1vdmVBdHRyaWJ1dGUoInZhbHVlIik7cmV0dXJufXQuaGFzT3duUHJvcGVydHkoInZhbHVlIik/S2woZSx0LnR5cGUsbik6dC5oYXNPd25Qcm9wZXJ0eSgiZGVmYXVsdFZhbHVlIikmJktsKGUsdC50eXBlLGtlKHQuZGVmYXVsdFZhbHVlKSksdC5jaGVja2VkPT1udWxsJiZ0LmRlZmF1bHRDaGVja2VkIT1udWxsJiYoZS5kZWZhdWx0Q2hlY2tlZD0hIXQuZGVmYXVsdENoZWNrZWQpfWZ1bmN0aW9uIEF1KGUsdCxuKXtpZih0Lmhhc093blByb3BlcnR5KCJ2YWx1ZSIpfHx0Lmhhc093blByb3BlcnR5KCJkZWZhdWx0VmFsdWUiKSl7dmFyIGk9dC50eXBlO2lmKCEoaSE9PSJzdWJtaXQiJiZpIT09InJlc2V0Inx8dC52YWx1ZSE9PXZvaWQgMCYmdC52YWx1ZSE9PW51bGwpKXJldHVybjt0PSIiK2UuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWUsbnx8dD09PWUudmFsdWV8fChlLnZhbHVlPXQpLGUuZGVmYXVsdFZhbHVlPXR9bj1lLm5hbWUsbiE9PSIiJiYoZS5uYW1lPSIiKSxlLmRlZmF1bHRDaGVja2VkPSEhZS5fd3JhcHBlclN0YXRlLmluaXRpYWxDaGVja2VkLG4hPT0iIiYmKGUubmFtZT1uKX1mdW5jdGlvbiBLbChlLHQsbil7KHQhPT0ibnVtYmVyInx8eXMoZS5vd25lckRvY3VtZW50KSE9PWUpJiYobj09bnVsbD9lLmRlZmF1bHRWYWx1ZT0iIitlLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlOmUuZGVmYXVsdFZhbHVlIT09IiIrbiYmKGUuZGVmYXVsdFZhbHVlPSIiK24pKX12YXIgaGk9QXJyYXkuaXNBcnJheTtmdW5jdGlvbiBrcihlLHQsbixpKXtpZihlPWUub3B0aW9ucyx0KXt0PXt9O2Zvcih2YXIgbz0wO288bi5sZW5ndGg7bysrKXRbIiQiK25bb11dPSEwO2ZvcihuPTA7bjxlLmxlbmd0aDtuKyspbz10Lmhhc093blByb3BlcnR5KCIkIitlW25dLnZhbHVlKSxlW25dLnNlbGVjdGVkIT09byYmKGVbbl0uc2VsZWN0ZWQ9byksbyYmaSYmKGVbbl0uZGVmYXVsdFNlbGVjdGVkPSEwKX1lbHNle2ZvcihuPSIiK2tlKG4pLHQ9bnVsbCxvPTA7bzxlLmxlbmd0aDtvKyspe2lmKGVbb10udmFsdWU9PT1uKXtlW29dLnNlbGVjdGVkPSEwLGkmJihlW29dLmRlZmF1bHRTZWxlY3RlZD0hMCk7cmV0dXJufXQhPT1udWxsfHxlW29dLmRpc2FibGVkfHwodD1lW29dKX10IT09bnVsbCYmKHQuc2VsZWN0ZWQ9ITApfX1mdW5jdGlvbiBHbChlLHQpe2lmKHQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwhPW51bGwpdGhyb3cgRXJyb3IobCg5MSkpO3JldHVybiBHKHt9LHQse3ZhbHVlOnZvaWQgMCxkZWZhdWx0VmFsdWU6dm9pZCAwLGNoaWxkcmVuOiIiK2UuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWV9KX1mdW5jdGlvbiAkdShlLHQpe3ZhciBuPXQudmFsdWU7aWYobj09bnVsbCl7aWYobj10LmNoaWxkcmVuLHQ9dC5kZWZhdWx0VmFsdWUsbiE9bnVsbCl7aWYodCE9bnVsbCl0aHJvdyBFcnJvcihsKDkyKSk7aWYoaGkobikpe2lmKDE8bi5sZW5ndGgpdGhyb3cgRXJyb3IobCg5MykpO249blswXX10PW59dD09bnVsbCYmKHQ9IiIpLG49dH1lLl93cmFwcGVyU3RhdGU9e2luaXRpYWxWYWx1ZTprZShuKX19ZnVuY3Rpb24gVXUoZSx0KXt2YXIgbj1rZSh0LnZhbHVlKSxpPWtlKHQuZGVmYXVsdFZhbHVlKTtuIT1udWxsJiYobj0iIituLG4hPT1lLnZhbHVlJiYoZS52YWx1ZT1uKSx0LmRlZmF1bHRWYWx1ZT09bnVsbCYmZS5kZWZhdWx0VmFsdWUhPT1uJiYoZS5kZWZhdWx0VmFsdWU9bikpLGkhPW51bGwmJihlLmRlZmF1bHRWYWx1ZT0iIitpKX1mdW5jdGlvbiBCdShlKXt2YXIgdD1lLnRleHRDb250ZW50O3Q9PT1lLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlJiZ0IT09IiImJnQhPT1udWxsJiYoZS52YWx1ZT10KX1mdW5jdGlvbiBIdShlKXtzd2l0Y2goZSl7Y2FzZSJzdmciOnJldHVybiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI7Y2FzZSJtYXRoIjpyZXR1cm4iaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCI7ZGVmYXVsdDpyZXR1cm4iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCJ9fWZ1bmN0aW9uIEpsKGUsdCl7cmV0dXJuIGU9PW51bGx8fGU9PT0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI/SHUodCk6ZT09PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyImJnQ9PT0iZm9yZWlnbk9iamVjdCI/Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiOmV9dmFyIHhzLFF1PShmdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIE1TQXBwPCJ1IiYmTVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24/ZnVuY3Rpb24odCxuLGksbyl7TVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24oZnVuY3Rpb24oKXtyZXR1cm4gZSh0LG4saSxvKX0pfTplfSkoZnVuY3Rpb24oZSx0KXtpZihlLm5hbWVzcGFjZVVSSSE9PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJ8fCJpbm5lckhUTUwiaW4gZSllLmlubmVySFRNTD10O2Vsc2V7Zm9yKHhzPXhzfHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSx4cy5pbm5lckhUTUw9Ijxzdmc+Iit0LnZhbHVlT2YoKS50b1N0cmluZygpKyI8L3N2Zz4iLHQ9eHMuZmlyc3RDaGlsZDtlLmZpcnN0Q2hpbGQ7KWUucmVtb3ZlQ2hpbGQoZS5maXJzdENoaWxkKTtmb3IoO3QuZmlyc3RDaGlsZDspZS5hcHBlbmRDaGlsZCh0LmZpcnN0Q2hpbGQpfX0pO2Z1bmN0aW9uIHBpKGUsdCl7aWYodCl7dmFyIG49ZS5maXJzdENoaWxkO2lmKG4mJm49PT1lLmxhc3RDaGlsZCYmbi5ub2RlVHlwZT09PTMpe24ubm9kZVZhbHVlPXQ7cmV0dXJufX1lLnRleHRDb250ZW50PXR9dmFyIG1pPXthbmltYXRpb25JdGVyYXRpb25Db3VudDohMCxhc3BlY3RSYXRpbzohMCxib3JkZXJJbWFnZU91dHNldDohMCxib3JkZXJJbWFnZVNsaWNlOiEwLGJvcmRlckltYWdlV2lkdGg6ITAsYm94RmxleDohMCxib3hGbGV4R3JvdXA6ITAsYm94T3JkaW5hbEdyb3VwOiEwLGNvbHVtbkNvdW50OiEwLGNvbHVtbnM6ITAsZmxleDohMCxmbGV4R3JvdzohMCxmbGV4UG9zaXRpdmU6ITAsZmxleFNocmluazohMCxmbGV4TmVnYXRpdmU6ITAsZmxleE9yZGVyOiEwLGdyaWRBcmVhOiEwLGdyaWRSb3c6ITAsZ3JpZFJvd0VuZDohMCxncmlkUm93U3BhbjohMCxncmlkUm93U3RhcnQ6ITAsZ3JpZENvbHVtbjohMCxncmlkQ29sdW1uRW5kOiEwLGdyaWRDb2x1bW5TcGFuOiEwLGdyaWRDb2x1bW5TdGFydDohMCxmb250V2VpZ2h0OiEwLGxpbmVDbGFtcDohMCxsaW5lSGVpZ2h0OiEwLG9wYWNpdHk6ITAsb3JkZXI6ITAsb3JwaGFuczohMCx0YWJTaXplOiEwLHdpZG93czohMCx6SW5kZXg6ITAsem9vbTohMCxmaWxsT3BhY2l0eTohMCxmbG9vZE9wYWNpdHk6ITAsc3RvcE9wYWNpdHk6ITAsc3Ryb2tlRGFzaGFycmF5OiEwLHN0cm9rZURhc2hvZmZzZXQ6ITAsc3Ryb2tlTWl0ZXJsaW1pdDohMCxzdHJva2VPcGFjaXR5OiEwLHN0cm9rZVdpZHRoOiEwfSxmcD1bIldlYmtpdCIsIm1zIiwiTW96IiwiTyJdO09iamVjdC5rZXlzKG1pKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2ZwLmZvckVhY2goZnVuY3Rpb24odCl7dD10K2UuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrZS5zdWJzdHJpbmcoMSksbWlbdF09bWlbZV19KX0pO2Z1bmN0aW9uIHF1KGUsdCxuKXtyZXR1cm4gdD09bnVsbHx8dHlwZW9mIHQ9PSJib29sZWFuInx8dD09PSIiPyIiOm58fHR5cGVvZiB0IT0ibnVtYmVyInx8dD09PTB8fG1pLmhhc093blByb3BlcnR5KGUpJiZtaVtlXT8oIiIrdCkudHJpbSgpOnQrInB4In1mdW5jdGlvbiBidShlLHQpe2U9ZS5zdHlsZTtmb3IodmFyIG4gaW4gdClpZih0Lmhhc093blByb3BlcnR5KG4pKXt2YXIgaT1uLmluZGV4T2YoIi0tIik9PT0wLG89cXUobix0W25dLGkpO249PT0iZmxvYXQiJiYobj0iY3NzRmxvYXQiKSxpP2Uuc2V0UHJvcGVydHkobixvKTplW25dPW99fXZhciBocD1HKHttZW51aXRlbTohMH0se2FyZWE6ITAsYmFzZTohMCxicjohMCxjb2w6ITAsZW1iZWQ6ITAsaHI6ITAsaW1nOiEwLGlucHV0OiEwLGtleWdlbjohMCxsaW5rOiEwLG1ldGE6ITAscGFyYW06ITAsc291cmNlOiEwLHRyYWNrOiEwLHdicjohMH0pO2Z1bmN0aW9uIFlsKGUsdCl7aWYodCl7aWYoaHBbZV0mJih0LmNoaWxkcmVuIT1udWxsfHx0LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIT1udWxsKSl0aHJvdyBFcnJvcihsKDEzNyxlKSk7aWYodC5kYW5nZXJvdXNseVNldElubmVySFRNTCE9bnVsbCl7aWYodC5jaGlsZHJlbiE9bnVsbCl0aHJvdyBFcnJvcihsKDYwKSk7aWYodHlwZW9mIHQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwhPSJvYmplY3QifHwhKCJfX2h0bWwiaW4gdC5kYW5nZXJvdXNseVNldElubmVySFRNTCkpdGhyb3cgRXJyb3IobCg2MSkpfWlmKHQuc3R5bGUhPW51bGwmJnR5cGVvZiB0LnN0eWxlIT0ib2JqZWN0Iil0aHJvdyBFcnJvcihsKDYyKSl9fWZ1bmN0aW9uIFhsKGUsdCl7aWYoZS5pbmRleE9mKCItIik9PT0tMSlyZXR1cm4gdHlwZW9mIHQuaXM9PSJzdHJpbmciO3N3aXRjaChlKXtjYXNlImFubm90YXRpb24teG1sIjpjYXNlImNvbG9yLXByb2ZpbGUiOmNhc2UiZm9udC1mYWNlIjpjYXNlImZvbnQtZmFjZS1zcmMiOmNhc2UiZm9udC1mYWNlLXVyaSI6Y2FzZSJmb250LWZhY2UtZm9ybWF0IjpjYXNlImZvbnQtZmFjZS1uYW1lIjpjYXNlIm1pc3NpbmctZ2x5cGgiOnJldHVybiExO2RlZmF1bHQ6cmV0dXJuITB9fXZhciBabD1udWxsO2Z1bmN0aW9uIGVvKGUpe3JldHVybiBlPWUudGFyZ2V0fHxlLnNyY0VsZW1lbnR8fHdpbmRvdyxlLmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50JiYoZT1lLmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50KSxlLm5vZGVUeXBlPT09Mz9lLnBhcmVudE5vZGU6ZX12YXIgdG89bnVsbCxDcj1udWxsLEVyPW51bGw7ZnVuY3Rpb24gV3UoZSl7aWYoZT16aShlKSl7aWYodHlwZW9mIHRvIT0iZnVuY3Rpb24iKXRocm93IEVycm9yKGwoMjgwKSk7dmFyIHQ9ZS5zdGF0ZU5vZGU7dCYmKHQ9SHModCksdG8oZS5zdGF0ZU5vZGUsZS50eXBlLHQpKX19ZnVuY3Rpb24gVnUoZSl7Q3I/RXI/RXIucHVzaChlKTpFcj1bZV06Q3I9ZX1mdW5jdGlvbiBLdSgpe2lmKENyKXt2YXIgZT1Dcix0PUVyO2lmKEVyPUNyPW51bGwsV3UoZSksdClmb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKVd1KHRbZV0pfX1mdW5jdGlvbiBHdShlLHQpe3JldHVybiBlKHQpfWZ1bmN0aW9uIEp1KCl7fXZhciBubz0hMTtmdW5jdGlvbiBZdShlLHQsbil7aWYobm8pcmV0dXJuIGUodCxuKTtubz0hMDt0cnl7cmV0dXJuIEd1KGUsdCxuKX1maW5hbGx5e25vPSExLChDciE9PW51bGx8fEVyIT09bnVsbCkmJihKdSgpLEt1KCkpfX1mdW5jdGlvbiBnaShlLHQpe3ZhciBuPWUuc3RhdGVOb2RlO2lmKG49PT1udWxsKXJldHVybiBudWxsO3ZhciBpPUhzKG4pO2lmKGk9PT1udWxsKXJldHVybiBudWxsO249aVt0XTtlOnN3aXRjaCh0KXtjYXNlIm9uQ2xpY2siOmNhc2Uib25DbGlja0NhcHR1cmUiOmNhc2Uib25Eb3VibGVDbGljayI6Y2FzZSJvbkRvdWJsZUNsaWNrQ2FwdHVyZSI6Y2FzZSJvbk1vdXNlRG93biI6Y2FzZSJvbk1vdXNlRG93bkNhcHR1cmUiOmNhc2Uib25Nb3VzZU1vdmUiOmNhc2Uib25Nb3VzZU1vdmVDYXB0dXJlIjpjYXNlIm9uTW91c2VVcCI6Y2FzZSJvbk1vdXNlVXBDYXB0dXJlIjpjYXNlIm9uTW91c2VFbnRlciI6KGk9IWkuZGlzYWJsZWQpfHwoZT1lLnR5cGUsaT0hKGU9PT0iYnV0dG9uInx8ZT09PSJpbnB1dCJ8fGU9PT0ic2VsZWN0Inx8ZT09PSJ0ZXh0YXJlYSIpKSxlPSFpO2JyZWFrIGU7ZGVmYXVsdDplPSExfWlmKGUpcmV0dXJuIG51bGw7aWYobiYmdHlwZW9mIG4hPSJmdW5jdGlvbiIpdGhyb3cgRXJyb3IobCgyMzEsdCx0eXBlb2YgbikpO3JldHVybiBufXZhciBybz0hMTtpZihtKXRyeXt2YXIgdmk9e307T2JqZWN0LmRlZmluZVByb3BlcnR5KHZpLCJwYXNzaXZlIix7Z2V0OmZ1bmN0aW9uKCl7cm89ITB9fSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInRlc3QiLHZpLHZpKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigidGVzdCIsdmksdmkpfWNhdGNoe3JvPSExfWZ1bmN0aW9uIHBwKGUsdCxuLGksbyxhLGYsZyx3KXt2YXIgVD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMyk7dHJ5e3QuYXBwbHkobixUKX1jYXRjaCh6KXt0aGlzLm9uRXJyb3Ioeil9fXZhciB5aT0hMSx3cz1udWxsLFNzPSExLGlvPW51bGwsbXA9e29uRXJyb3I6ZnVuY3Rpb24oZSl7eWk9ITAsd3M9ZX19O2Z1bmN0aW9uIGdwKGUsdCxuLGksbyxhLGYsZyx3KXt5aT0hMSx3cz1udWxsLHBwLmFwcGx5KG1wLGFyZ3VtZW50cyl9ZnVuY3Rpb24gdnAoZSx0LG4saSxvLGEsZixnLHcpe2lmKGdwLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx5aSl7aWYoeWkpe3ZhciBUPXdzO3lpPSExLHdzPW51bGx9ZWxzZSB0aHJvdyBFcnJvcihsKDE5OCkpO1NzfHwoU3M9ITAsaW89VCl9fWZ1bmN0aW9uIEduKGUpe3ZhciB0PWUsbj1lO2lmKGUuYWx0ZXJuYXRlKWZvcig7dC5yZXR1cm47KXQ9dC5yZXR1cm47ZWxzZXtlPXQ7ZG8gdD1lLCh0LmZsYWdzJjQwOTgpIT09MCYmKG49dC5yZXR1cm4pLGU9dC5yZXR1cm47d2hpbGUoZSl9cmV0dXJuIHQudGFnPT09Mz9uOm51bGx9ZnVuY3Rpb24gWHUoZSl7aWYoZS50YWc9PT0xMyl7dmFyIHQ9ZS5tZW1vaXplZFN0YXRlO2lmKHQ9PT1udWxsJiYoZT1lLmFsdGVybmF0ZSxlIT09bnVsbCYmKHQ9ZS5tZW1vaXplZFN0YXRlKSksdCE9PW51bGwpcmV0dXJuIHQuZGVoeWRyYXRlZH1yZXR1cm4gbnVsbH1mdW5jdGlvbiBadShlKXtpZihHbihlKSE9PWUpdGhyb3cgRXJyb3IobCgxODgpKX1mdW5jdGlvbiB5cChlKXt2YXIgdD1lLmFsdGVybmF0ZTtpZighdCl7aWYodD1HbihlKSx0PT09bnVsbCl0aHJvdyBFcnJvcihsKDE4OCkpO3JldHVybiB0IT09ZT9udWxsOmV9Zm9yKHZhciBuPWUsaT10Ozspe3ZhciBvPW4ucmV0dXJuO2lmKG89PT1udWxsKWJyZWFrO3ZhciBhPW8uYWx0ZXJuYXRlO2lmKGE9PT1udWxsKXtpZihpPW8ucmV0dXJuLGkhPT1udWxsKXtuPWk7Y29udGludWV9YnJlYWt9aWYoby5jaGlsZD09PWEuY2hpbGQpe2ZvcihhPW8uY2hpbGQ7YTspe2lmKGE9PT1uKXJldHVybiBadShvKSxlO2lmKGE9PT1pKXJldHVybiBadShvKSx0O2E9YS5zaWJsaW5nfXRocm93IEVycm9yKGwoMTg4KSl9aWYobi5yZXR1cm4hPT1pLnJldHVybiluPW8saT1hO2Vsc2V7Zm9yKHZhciBmPSExLGc9by5jaGlsZDtnOyl7aWYoZz09PW4pe2Y9ITAsbj1vLGk9YTticmVha31pZihnPT09aSl7Zj0hMCxpPW8sbj1hO2JyZWFrfWc9Zy5zaWJsaW5nfWlmKCFmKXtmb3IoZz1hLmNoaWxkO2c7KXtpZihnPT09bil7Zj0hMCxuPWEsaT1vO2JyZWFrfWlmKGc9PT1pKXtmPSEwLGk9YSxuPW87YnJlYWt9Zz1nLnNpYmxpbmd9aWYoIWYpdGhyb3cgRXJyb3IobCgxODkpKX19aWYobi5hbHRlcm5hdGUhPT1pKXRocm93IEVycm9yKGwoMTkwKSl9aWYobi50YWchPT0zKXRocm93IEVycm9yKGwoMTg4KSk7cmV0dXJuIG4uc3RhdGVOb2RlLmN1cnJlbnQ9PT1uP2U6dH1mdW5jdGlvbiBlYyhlKXtyZXR1cm4gZT15cChlKSxlIT09bnVsbD90YyhlKTpudWxsfWZ1bmN0aW9uIHRjKGUpe2lmKGUudGFnPT09NXx8ZS50YWc9PT02KXJldHVybiBlO2ZvcihlPWUuY2hpbGQ7ZSE9PW51bGw7KXt2YXIgdD10YyhlKTtpZih0IT09bnVsbClyZXR1cm4gdDtlPWUuc2libGluZ31yZXR1cm4gbnVsbH12YXIgbmM9cy51bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrLHJjPXMudW5zdGFibGVfY2FuY2VsQ2FsbGJhY2sseHA9cy51bnN0YWJsZV9zaG91bGRZaWVsZCx3cD1zLnVuc3RhYmxlX3JlcXVlc3RQYWludCwkZT1zLnVuc3RhYmxlX25vdyxTcD1zLnVuc3RhYmxlX2dldEN1cnJlbnRQcmlvcml0eUxldmVsLHNvPXMudW5zdGFibGVfSW1tZWRpYXRlUHJpb3JpdHksaWM9cy51bnN0YWJsZV9Vc2VyQmxvY2tpbmdQcmlvcml0eSxrcz1zLnVuc3RhYmxlX05vcm1hbFByaW9yaXR5LGtwPXMudW5zdGFibGVfTG93UHJpb3JpdHksc2M9cy51bnN0YWJsZV9JZGxlUHJpb3JpdHksQ3M9bnVsbCxLdD1udWxsO2Z1bmN0aW9uIENwKGUpe2lmKEt0JiZ0eXBlb2YgS3Qub25Db21taXRGaWJlclJvb3Q9PSJmdW5jdGlvbiIpdHJ5e0t0Lm9uQ29tbWl0RmliZXJSb290KENzLGUsdm9pZCAwLChlLmN1cnJlbnQuZmxhZ3MmMTI4KT09PTEyOCl9Y2F0Y2h7fX12YXIgSXQ9TWF0aC5jbHozMj9NYXRoLmNsejMyOk5wLEVwPU1hdGgubG9nLGpwPU1hdGguTE4yO2Z1bmN0aW9uIE5wKGUpe3JldHVybiBlPj4+PTAsZT09PTA/MzI6MzEtKEVwKGUpL2pwfDApfDB9dmFyIEVzPTY0LGpzPTQxOTQzMDQ7ZnVuY3Rpb24geGkoZSl7c3dpdGNoKGUmLWUpe2Nhc2UgMTpyZXR1cm4gMTtjYXNlIDI6cmV0dXJuIDI7Y2FzZSA0OnJldHVybiA0O2Nhc2UgODpyZXR1cm4gODtjYXNlIDE2OnJldHVybiAxNjtjYXNlIDMyOnJldHVybiAzMjtjYXNlIDY0OmNhc2UgMTI4OmNhc2UgMjU2OmNhc2UgNTEyOmNhc2UgMTAyNDpjYXNlIDIwNDg6Y2FzZSA0MDk2OmNhc2UgODE5MjpjYXNlIDE2Mzg0OmNhc2UgMzI3Njg6Y2FzZSA2NTUzNjpjYXNlIDEzMTA3MjpjYXNlIDI2MjE0NDpjYXNlIDUyNDI4ODpjYXNlIDEwNDg1NzY6Y2FzZSAyMDk3MTUyOnJldHVybiBlJjQxOTQyNDA7Y2FzZSA0MTk0MzA0OmNhc2UgODM4ODYwODpjYXNlIDE2Nzc3MjE2OmNhc2UgMzM1NTQ0MzI6Y2FzZSA2NzEwODg2NDpyZXR1cm4gZSYxMzAwMjM0MjQ7Y2FzZSAxMzQyMTc3Mjg6cmV0dXJuIDEzNDIxNzcyODtjYXNlIDI2ODQzNTQ1NjpyZXR1cm4gMjY4NDM1NDU2O2Nhc2UgNTM2ODcwOTEyOnJldHVybiA1MzY4NzA5MTI7Y2FzZSAxMDczNzQxODI0OnJldHVybiAxMDczNzQxODI0O2RlZmF1bHQ6cmV0dXJuIGV9fWZ1bmN0aW9uIE5zKGUsdCl7dmFyIG49ZS5wZW5kaW5nTGFuZXM7aWYobj09PTApcmV0dXJuIDA7dmFyIGk9MCxvPWUuc3VzcGVuZGVkTGFuZXMsYT1lLnBpbmdlZExhbmVzLGY9biYyNjg0MzU0NTU7aWYoZiE9PTApe3ZhciBnPWYmfm87ZyE9PTA/aT14aShnKTooYSY9ZixhIT09MCYmKGk9eGkoYSkpKX1lbHNlIGY9biZ+byxmIT09MD9pPXhpKGYpOmEhPT0wJiYoaT14aShhKSk7aWYoaT09PTApcmV0dXJuIDA7aWYodCE9PTAmJnQhPT1pJiYodCZvKT09PTAmJihvPWkmLWksYT10Ji10LG8+PWF8fG89PT0xNiYmKGEmNDE5NDI0MCkhPT0wKSlyZXR1cm4gdDtpZigoaSY0KSE9PTAmJihpfD1uJjE2KSx0PWUuZW50YW5nbGVkTGFuZXMsdCE9PTApZm9yKGU9ZS5lbnRhbmdsZW1lbnRzLHQmPWk7MDx0OyluPTMxLUl0KHQpLG89MTw8bixpfD1lW25dLHQmPX5vO3JldHVybiBpfWZ1bmN0aW9uIFJwKGUsdCl7c3dpdGNoKGUpe2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OnJldHVybiB0KzI1MDtjYXNlIDg6Y2FzZSAxNjpjYXNlIDMyOmNhc2UgNjQ6Y2FzZSAxMjg6Y2FzZSAyNTY6Y2FzZSA1MTI6Y2FzZSAxMDI0OmNhc2UgMjA0ODpjYXNlIDQwOTY6Y2FzZSA4MTkyOmNhc2UgMTYzODQ6Y2FzZSAzMjc2ODpjYXNlIDY1NTM2OmNhc2UgMTMxMDcyOmNhc2UgMjYyMTQ0OmNhc2UgNTI0Mjg4OmNhc2UgMTA0ODU3NjpjYXNlIDIwOTcxNTI6cmV0dXJuIHQrNWUzO2Nhc2UgNDE5NDMwNDpjYXNlIDgzODg2MDg6Y2FzZSAxNjc3NzIxNjpjYXNlIDMzNTU0NDMyOmNhc2UgNjcxMDg4NjQ6cmV0dXJuLTE7Y2FzZSAxMzQyMTc3Mjg6Y2FzZSAyNjg0MzU0NTY6Y2FzZSA1MzY4NzA5MTI6Y2FzZSAxMDczNzQxODI0OnJldHVybi0xO2RlZmF1bHQ6cmV0dXJuLTF9fWZ1bmN0aW9uIFBwKGUsdCl7Zm9yKHZhciBuPWUuc3VzcGVuZGVkTGFuZXMsaT1lLnBpbmdlZExhbmVzLG89ZS5leHBpcmF0aW9uVGltZXMsYT1lLnBlbmRpbmdMYW5lczswPGE7KXt2YXIgZj0zMS1JdChhKSxnPTE8PGYsdz1vW2ZdO3c9PT0tMT8oKGcmbik9PT0wfHwoZyZpKSE9PTApJiYob1tmXT1ScChnLHQpKTp3PD10JiYoZS5leHBpcmVkTGFuZXN8PWcpLGEmPX5nfX1mdW5jdGlvbiBsbyhlKXtyZXR1cm4gZT1lLnBlbmRpbmdMYW5lcyYtMTA3Mzc0MTgyNSxlIT09MD9lOmUmMTA3Mzc0MTgyND8xMDczNzQxODI0OjB9ZnVuY3Rpb24gbGMoKXt2YXIgZT1FcztyZXR1cm4gRXM8PD0xLChFcyY0MTk0MjQwKT09PTAmJihFcz02NCksZX1mdW5jdGlvbiBvbyhlKXtmb3IodmFyIHQ9W10sbj0wOzMxPm47bisrKXQucHVzaChlKTtyZXR1cm4gdH1mdW5jdGlvbiB3aShlLHQsbil7ZS5wZW5kaW5nTGFuZXN8PXQsdCE9PTUzNjg3MDkxMiYmKGUuc3VzcGVuZGVkTGFuZXM9MCxlLnBpbmdlZExhbmVzPTApLGU9ZS5ldmVudFRpbWVzLHQ9MzEtSXQodCksZVt0XT1ufWZ1bmN0aW9uIF9wKGUsdCl7dmFyIG49ZS5wZW5kaW5nTGFuZXMmfnQ7ZS5wZW5kaW5nTGFuZXM9dCxlLnN1c3BlbmRlZExhbmVzPTAsZS5waW5nZWRMYW5lcz0wLGUuZXhwaXJlZExhbmVzJj10LGUubXV0YWJsZVJlYWRMYW5lcyY9dCxlLmVudGFuZ2xlZExhbmVzJj10LHQ9ZS5lbnRhbmdsZW1lbnRzO3ZhciBpPWUuZXZlbnRUaW1lcztmb3IoZT1lLmV4cGlyYXRpb25UaW1lczswPG47KXt2YXIgbz0zMS1JdChuKSxhPTE8PG87dFtvXT0wLGlbb109LTEsZVtvXT0tMSxuJj1+YX19ZnVuY3Rpb24gYW8oZSx0KXt2YXIgbj1lLmVudGFuZ2xlZExhbmVzfD10O2ZvcihlPWUuZW50YW5nbGVtZW50cztuOyl7dmFyIGk9MzEtSXQobiksbz0xPDxpO28mdHxlW2ldJnQmJihlW2ldfD10KSxuJj1+b319dmFyIENlPTA7ZnVuY3Rpb24gb2MoZSl7cmV0dXJuIGUmPS1lLDE8ZT80PGU/KGUmMjY4NDM1NDU1KSE9PTA/MTY6NTM2ODcwOTEyOjQ6MX12YXIgYWMsdW8sdWMsY2MsZGMsY289ITEsUnM9W10sd249bnVsbCxTbj1udWxsLGtuPW51bGwsU2k9bmV3IE1hcCxraT1uZXcgTWFwLENuPVtdLFRwPSJtb3VzZWRvd24gbW91c2V1cCB0b3VjaGNhbmNlbCB0b3VjaGVuZCB0b3VjaHN0YXJ0IGF1eGNsaWNrIGRibGNsaWNrIHBvaW50ZXJjYW5jZWwgcG9pbnRlcmRvd24gcG9pbnRlcnVwIGRyYWdlbmQgZHJhZ3N0YXJ0IGRyb3AgY29tcG9zaXRpb25lbmQgY29tcG9zaXRpb25zdGFydCBrZXlkb3duIGtleXByZXNzIGtleXVwIGlucHV0IHRleHRJbnB1dCBjb3B5IGN1dCBwYXN0ZSBjbGljayBjaGFuZ2UgY29udGV4dG1lbnUgcmVzZXQgc3VibWl0Ii5zcGxpdCgiICIpO2Z1bmN0aW9uIGZjKGUsdCl7c3dpdGNoKGUpe2Nhc2UiZm9jdXNpbiI6Y2FzZSJmb2N1c291dCI6d249bnVsbDticmVhaztjYXNlImRyYWdlbnRlciI6Y2FzZSJkcmFnbGVhdmUiOlNuPW51bGw7YnJlYWs7Y2FzZSJtb3VzZW92ZXIiOmNhc2UibW91c2VvdXQiOmtuPW51bGw7YnJlYWs7Y2FzZSJwb2ludGVyb3ZlciI6Y2FzZSJwb2ludGVyb3V0IjpTaS5kZWxldGUodC5wb2ludGVySWQpO2JyZWFrO2Nhc2UiZ290cG9pbnRlcmNhcHR1cmUiOmNhc2UibG9zdHBvaW50ZXJjYXB0dXJlIjpraS5kZWxldGUodC5wb2ludGVySWQpfX1mdW5jdGlvbiBDaShlLHQsbixpLG8sYSl7cmV0dXJuIGU9PT1udWxsfHxlLm5hdGl2ZUV2ZW50IT09YT8oZT17YmxvY2tlZE9uOnQsZG9tRXZlbnROYW1lOm4sZXZlbnRTeXN0ZW1GbGFnczppLG5hdGl2ZUV2ZW50OmEsdGFyZ2V0Q29udGFpbmVyczpbb119LHQhPT1udWxsJiYodD16aSh0KSx0IT09bnVsbCYmdW8odCkpLGUpOihlLmV2ZW50U3lzdGVtRmxhZ3N8PWksdD1lLnRhcmdldENvbnRhaW5lcnMsbyE9PW51bGwmJnQuaW5kZXhPZihvKT09PS0xJiZ0LnB1c2gobyksZSl9ZnVuY3Rpb24gTHAoZSx0LG4saSxvKXtzd2l0Y2godCl7Y2FzZSJmb2N1c2luIjpyZXR1cm4gd249Q2kod24sZSx0LG4saSxvKSwhMDtjYXNlImRyYWdlbnRlciI6cmV0dXJuIFNuPUNpKFNuLGUsdCxuLGksbyksITA7Y2FzZSJtb3VzZW92ZXIiOnJldHVybiBrbj1DaShrbixlLHQsbixpLG8pLCEwO2Nhc2UicG9pbnRlcm92ZXIiOnZhciBhPW8ucG9pbnRlcklkO3JldHVybiBTaS5zZXQoYSxDaShTaS5nZXQoYSl8fG51bGwsZSx0LG4saSxvKSksITA7Y2FzZSJnb3Rwb2ludGVyY2FwdHVyZSI6cmV0dXJuIGE9by5wb2ludGVySWQsa2kuc2V0KGEsQ2koa2kuZ2V0KGEpfHxudWxsLGUsdCxuLGksbykpLCEwfXJldHVybiExfWZ1bmN0aW9uIGhjKGUpe3ZhciB0PUpuKGUudGFyZ2V0KTtpZih0IT09bnVsbCl7dmFyIG49R24odCk7aWYobiE9PW51bGwpe2lmKHQ9bi50YWcsdD09PTEzKXtpZih0PVh1KG4pLHQhPT1udWxsKXtlLmJsb2NrZWRPbj10LGRjKGUucHJpb3JpdHksZnVuY3Rpb24oKXt1YyhuKX0pO3JldHVybn19ZWxzZSBpZih0PT09MyYmbi5zdGF0ZU5vZGUuY3VycmVudC5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCl7ZS5ibG9ja2VkT249bi50YWc9PT0zP24uc3RhdGVOb2RlLmNvbnRhaW5lckluZm86bnVsbDtyZXR1cm59fX1lLmJsb2NrZWRPbj1udWxsfWZ1bmN0aW9uIFBzKGUpe2lmKGUuYmxvY2tlZE9uIT09bnVsbClyZXR1cm4hMTtmb3IodmFyIHQ9ZS50YXJnZXRDb250YWluZXJzOzA8dC5sZW5ndGg7KXt2YXIgbj1obyhlLmRvbUV2ZW50TmFtZSxlLmV2ZW50U3lzdGVtRmxhZ3MsdFswXSxlLm5hdGl2ZUV2ZW50KTtpZihuPT09bnVsbCl7bj1lLm5hdGl2ZUV2ZW50O3ZhciBpPW5ldyBuLmNvbnN0cnVjdG9yKG4udHlwZSxuKTtabD1pLG4udGFyZ2V0LmRpc3BhdGNoRXZlbnQoaSksWmw9bnVsbH1lbHNlIHJldHVybiB0PXppKG4pLHQhPT1udWxsJiZ1byh0KSxlLmJsb2NrZWRPbj1uLCExO3Quc2hpZnQoKX1yZXR1cm4hMH1mdW5jdGlvbiBwYyhlLHQsbil7UHMoZSkmJm4uZGVsZXRlKHQpfWZ1bmN0aW9uIEZwKCl7Y289ITEsd24hPT1udWxsJiZQcyh3bikmJih3bj1udWxsKSxTbiE9PW51bGwmJlBzKFNuKSYmKFNuPW51bGwpLGtuIT09bnVsbCYmUHMoa24pJiYoa249bnVsbCksU2kuZm9yRWFjaChwYyksa2kuZm9yRWFjaChwYyl9ZnVuY3Rpb24gRWkoZSx0KXtlLmJsb2NrZWRPbj09PXQmJihlLmJsb2NrZWRPbj1udWxsLGNvfHwoY289ITAscy51bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrKHMudW5zdGFibGVfTm9ybWFsUHJpb3JpdHksRnApKSl9ZnVuY3Rpb24gamkoZSl7ZnVuY3Rpb24gdChvKXtyZXR1cm4gRWkobyxlKX1pZigwPFJzLmxlbmd0aCl7RWkoUnNbMF0sZSk7Zm9yKHZhciBuPTE7bjxScy5sZW5ndGg7bisrKXt2YXIgaT1Sc1tuXTtpLmJsb2NrZWRPbj09PWUmJihpLmJsb2NrZWRPbj1udWxsKX19Zm9yKHduIT09bnVsbCYmRWkod24sZSksU24hPT1udWxsJiZFaShTbixlKSxrbiE9PW51bGwmJkVpKGtuLGUpLFNpLmZvckVhY2godCksa2kuZm9yRWFjaCh0KSxuPTA7bjxDbi5sZW5ndGg7bisrKWk9Q25bbl0saS5ibG9ja2VkT249PT1lJiYoaS5ibG9ja2VkT249bnVsbCk7Zm9yKDswPENuLmxlbmd0aCYmKG49Q25bMF0sbi5ibG9ja2VkT249PT1udWxsKTspaGMobiksbi5ibG9ja2VkT249PT1udWxsJiZDbi5zaGlmdCgpfXZhciBqcj1LLlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnLF9zPSEwO2Z1bmN0aW9uIE9wKGUsdCxuLGkpe3ZhciBvPUNlLGE9anIudHJhbnNpdGlvbjtqci50cmFuc2l0aW9uPW51bGw7dHJ5e0NlPTEsZm8oZSx0LG4saSl9ZmluYWxseXtDZT1vLGpyLnRyYW5zaXRpb249YX19ZnVuY3Rpb24gRHAoZSx0LG4saSl7dmFyIG89Q2UsYT1qci50cmFuc2l0aW9uO2pyLnRyYW5zaXRpb249bnVsbDt0cnl7Q2U9NCxmbyhlLHQsbixpKX1maW5hbGx5e0NlPW8sanIudHJhbnNpdGlvbj1hfX1mdW5jdGlvbiBmbyhlLHQsbixpKXtpZihfcyl7dmFyIG89aG8oZSx0LG4saSk7aWYobz09PW51bGwpVG8oZSx0LGksVHMsbiksZmMoZSxpKTtlbHNlIGlmKExwKG8sZSx0LG4saSkpaS5zdG9wUHJvcGFnYXRpb24oKTtlbHNlIGlmKGZjKGUsaSksdCY0JiYtMTxUcC5pbmRleE9mKGUpKXtmb3IoO28hPT1udWxsOyl7dmFyIGE9emkobyk7aWYoYSE9PW51bGwmJmFjKGEpLGE9aG8oZSx0LG4saSksYT09PW51bGwmJlRvKGUsdCxpLFRzLG4pLGE9PT1vKWJyZWFrO289YX1vIT09bnVsbCYmaS5zdG9wUHJvcGFnYXRpb24oKX1lbHNlIFRvKGUsdCxpLG51bGwsbil9fXZhciBUcz1udWxsO2Z1bmN0aW9uIGhvKGUsdCxuLGkpe2lmKFRzPW51bGwsZT1lbyhpKSxlPUpuKGUpLGUhPT1udWxsKWlmKHQ9R24oZSksdD09PW51bGwpZT1udWxsO2Vsc2UgaWYobj10LnRhZyxuPT09MTMpe2lmKGU9WHUodCksZSE9PW51bGwpcmV0dXJuIGU7ZT1udWxsfWVsc2UgaWYobj09PTMpe2lmKHQuc3RhdGVOb2RlLmN1cnJlbnQubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQpcmV0dXJuIHQudGFnPT09Mz90LnN0YXRlTm9kZS5jb250YWluZXJJbmZvOm51bGw7ZT1udWxsfWVsc2UgdCE9PWUmJihlPW51bGwpO3JldHVybiBUcz1lLG51bGx9ZnVuY3Rpb24gbWMoZSl7c3dpdGNoKGUpe2Nhc2UiY2FuY2VsIjpjYXNlImNsaWNrIjpjYXNlImNsb3NlIjpjYXNlImNvbnRleHRtZW51IjpjYXNlImNvcHkiOmNhc2UiY3V0IjpjYXNlImF1eGNsaWNrIjpjYXNlImRibGNsaWNrIjpjYXNlImRyYWdlbmQiOmNhc2UiZHJhZ3N0YXJ0IjpjYXNlImRyb3AiOmNhc2UiZm9jdXNpbiI6Y2FzZSJmb2N1c291dCI6Y2FzZSJpbnB1dCI6Y2FzZSJpbnZhbGlkIjpjYXNlImtleWRvd24iOmNhc2Uia2V5cHJlc3MiOmNhc2Uia2V5dXAiOmNhc2UibW91c2Vkb3duIjpjYXNlIm1vdXNldXAiOmNhc2UicGFzdGUiOmNhc2UicGF1c2UiOmNhc2UicGxheSI6Y2FzZSJwb2ludGVyY2FuY2VsIjpjYXNlInBvaW50ZXJkb3duIjpjYXNlInBvaW50ZXJ1cCI6Y2FzZSJyYXRlY2hhbmdlIjpjYXNlInJlc2V0IjpjYXNlInJlc2l6ZSI6Y2FzZSJzZWVrZWQiOmNhc2Uic3VibWl0IjpjYXNlInRvdWNoY2FuY2VsIjpjYXNlInRvdWNoZW5kIjpjYXNlInRvdWNoc3RhcnQiOmNhc2Uidm9sdW1lY2hhbmdlIjpjYXNlImNoYW5nZSI6Y2FzZSJzZWxlY3Rpb25jaGFuZ2UiOmNhc2UidGV4dElucHV0IjpjYXNlImNvbXBvc2l0aW9uc3RhcnQiOmNhc2UiY29tcG9zaXRpb25lbmQiOmNhc2UiY29tcG9zaXRpb251cGRhdGUiOmNhc2UiYmVmb3JlYmx1ciI6Y2FzZSJhZnRlcmJsdXIiOmNhc2UiYmVmb3JlaW5wdXQiOmNhc2UiYmx1ciI6Y2FzZSJmdWxsc2NyZWVuY2hhbmdlIjpjYXNlImZvY3VzIjpjYXNlImhhc2hjaGFuZ2UiOmNhc2UicG9wc3RhdGUiOmNhc2Uic2VsZWN0IjpjYXNlInNlbGVjdHN0YXJ0IjpyZXR1cm4gMTtjYXNlImRyYWciOmNhc2UiZHJhZ2VudGVyIjpjYXNlImRyYWdleGl0IjpjYXNlImRyYWdsZWF2ZSI6Y2FzZSJkcmFnb3ZlciI6Y2FzZSJtb3VzZW1vdmUiOmNhc2UibW91c2VvdXQiOmNhc2UibW91c2VvdmVyIjpjYXNlInBvaW50ZXJtb3ZlIjpjYXNlInBvaW50ZXJvdXQiOmNhc2UicG9pbnRlcm92ZXIiOmNhc2Uic2Nyb2xsIjpjYXNlInRvZ2dsZSI6Y2FzZSJ0b3VjaG1vdmUiOmNhc2Uid2hlZWwiOmNhc2UibW91c2VlbnRlciI6Y2FzZSJtb3VzZWxlYXZlIjpjYXNlInBvaW50ZXJlbnRlciI6Y2FzZSJwb2ludGVybGVhdmUiOnJldHVybiA0O2Nhc2UibWVzc2FnZSI6c3dpdGNoKFNwKCkpe2Nhc2Ugc286cmV0dXJuIDE7Y2FzZSBpYzpyZXR1cm4gNDtjYXNlIGtzOmNhc2Uga3A6cmV0dXJuIDE2O2Nhc2Ugc2M6cmV0dXJuIDUzNjg3MDkxMjtkZWZhdWx0OnJldHVybiAxNn1kZWZhdWx0OnJldHVybiAxNn19dmFyIEVuPW51bGwscG89bnVsbCxMcz1udWxsO2Z1bmN0aW9uIGdjKCl7aWYoTHMpcmV0dXJuIExzO3ZhciBlLHQ9cG8sbj10Lmxlbmd0aCxpLG89InZhbHVlImluIEVuP0VuLnZhbHVlOkVuLnRleHRDb250ZW50LGE9by5sZW5ndGg7Zm9yKGU9MDtlPG4mJnRbZV09PT1vW2VdO2UrKyk7dmFyIGY9bi1lO2ZvcihpPTE7aTw9ZiYmdFtuLWldPT09b1thLWldO2krKyk7cmV0dXJuIExzPW8uc2xpY2UoZSwxPGk/MS1pOnZvaWQgMCl9ZnVuY3Rpb24gRnMoZSl7dmFyIHQ9ZS5rZXlDb2RlO3JldHVybiJjaGFyQ29kZSJpbiBlPyhlPWUuY2hhckNvZGUsZT09PTAmJnQ9PT0xMyYmKGU9MTMpKTplPXQsZT09PTEwJiYoZT0xMyksMzI8PWV8fGU9PT0xMz9lOjB9ZnVuY3Rpb24gT3MoKXtyZXR1cm4hMH1mdW5jdGlvbiB2Yygpe3JldHVybiExfWZ1bmN0aW9uIHh0KGUpe2Z1bmN0aW9uIHQobixpLG8sYSxmKXt0aGlzLl9yZWFjdE5hbWU9bix0aGlzLl90YXJnZXRJbnN0PW8sdGhpcy50eXBlPWksdGhpcy5uYXRpdmVFdmVudD1hLHRoaXMudGFyZ2V0PWYsdGhpcy5jdXJyZW50VGFyZ2V0PW51bGw7Zm9yKHZhciBnIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShnKSYmKG49ZVtnXSx0aGlzW2ddPW4/bihhKTphW2ddKTtyZXR1cm4gdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9KGEuZGVmYXVsdFByZXZlbnRlZCE9bnVsbD9hLmRlZmF1bHRQcmV2ZW50ZWQ6YS5yZXR1cm5WYWx1ZT09PSExKT9Pczp2Yyx0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPXZjLHRoaXN9cmV0dXJuIEcodC5wcm90b3R5cGUse3ByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dGhpcy5kZWZhdWx0UHJldmVudGVkPSEwO3ZhciBuPXRoaXMubmF0aXZlRXZlbnQ7biYmKG4ucHJldmVudERlZmF1bHQ/bi5wcmV2ZW50RGVmYXVsdCgpOnR5cGVvZiBuLnJldHVyblZhbHVlIT0idW5rbm93biImJihuLnJldHVyblZhbHVlPSExKSx0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1Pcyl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBuPXRoaXMubmF0aXZlRXZlbnQ7biYmKG4uc3RvcFByb3BhZ2F0aW9uP24uc3RvcFByb3BhZ2F0aW9uKCk6dHlwZW9mIG4uY2FuY2VsQnViYmxlIT0idW5rbm93biImJihuLmNhbmNlbEJ1YmJsZT0hMCksdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1Pcyl9LHBlcnNpc3Q6ZnVuY3Rpb24oKXt9LGlzUGVyc2lzdGVudDpPc30pLHR9dmFyIE5yPXtldmVudFBoYXNlOjAsYnViYmxlczowLGNhbmNlbGFibGU6MCx0aW1lU3RhbXA6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudGltZVN0YW1wfHxEYXRlLm5vdygpfSxkZWZhdWx0UHJldmVudGVkOjAsaXNUcnVzdGVkOjB9LG1vPXh0KE5yKSxOaT1HKHt9LE5yLHt2aWV3OjAsZGV0YWlsOjB9KSxJcD14dChOaSksZ28sdm8sUmksRHM9Ryh7fSxOaSx7c2NyZWVuWDowLHNjcmVlblk6MCxjbGllbnRYOjAsY2xpZW50WTowLHBhZ2VYOjAscGFnZVk6MCxjdHJsS2V5OjAsc2hpZnRLZXk6MCxhbHRLZXk6MCxtZXRhS2V5OjAsZ2V0TW9kaWZpZXJTdGF0ZTp4byxidXR0b246MCxidXR0b25zOjAscmVsYXRlZFRhcmdldDpmdW5jdGlvbihlKXtyZXR1cm4gZS5yZWxhdGVkVGFyZ2V0PT09dm9pZCAwP2UuZnJvbUVsZW1lbnQ9PT1lLnNyY0VsZW1lbnQ/ZS50b0VsZW1lbnQ6ZS5mcm9tRWxlbWVudDplLnJlbGF0ZWRUYXJnZXR9LG1vdmVtZW50WDpmdW5jdGlvbihlKXtyZXR1cm4ibW92ZW1lbnRYImluIGU/ZS5tb3ZlbWVudFg6KGUhPT1SaSYmKFJpJiZlLnR5cGU9PT0ibW91c2Vtb3ZlIj8oZ289ZS5zY3JlZW5YLVJpLnNjcmVlblgsdm89ZS5zY3JlZW5ZLVJpLnNjcmVlblkpOnZvPWdvPTAsUmk9ZSksZ28pfSxtb3ZlbWVudFk6ZnVuY3Rpb24oZSl7cmV0dXJuIm1vdmVtZW50WSJpbiBlP2UubW92ZW1lbnRZOnZvfX0pLHljPXh0KERzKSxNcD1HKHt9LERzLHtkYXRhVHJhbnNmZXI6MH0pLHpwPXh0KE1wKSxBcD1HKHt9LE5pLHtyZWxhdGVkVGFyZ2V0OjB9KSx5bz14dChBcCksJHA9Ryh7fSxOcix7YW5pbWF0aW9uTmFtZTowLGVsYXBzZWRUaW1lOjAscHNldWRvRWxlbWVudDowfSksVXA9eHQoJHApLEJwPUcoe30sTnIse2NsaXBib2FyZERhdGE6ZnVuY3Rpb24oZSl7cmV0dXJuImNsaXBib2FyZERhdGEiaW4gZT9lLmNsaXBib2FyZERhdGE6d2luZG93LmNsaXBib2FyZERhdGF9fSksSHA9eHQoQnApLFFwPUcoe30sTnIse2RhdGE6MH0pLHhjPXh0KFFwKSxxcD17RXNjOiJFc2NhcGUiLFNwYWNlYmFyOiIgIixMZWZ0OiJBcnJvd0xlZnQiLFVwOiJBcnJvd1VwIixSaWdodDoiQXJyb3dSaWdodCIsRG93bjoiQXJyb3dEb3duIixEZWw6IkRlbGV0ZSIsV2luOiJPUyIsTWVudToiQ29udGV4dE1lbnUiLEFwcHM6IkNvbnRleHRNZW51IixTY3JvbGw6IlNjcm9sbExvY2siLE1velByaW50YWJsZUtleToiVW5pZGVudGlmaWVkIn0sYnA9ezg6IkJhY2tzcGFjZSIsOToiVGFiIiwxMjoiQ2xlYXIiLDEzOiJFbnRlciIsMTY6IlNoaWZ0IiwxNzoiQ29udHJvbCIsMTg6IkFsdCIsMTk6IlBhdXNlIiwyMDoiQ2Fwc0xvY2siLDI3OiJFc2NhcGUiLDMyOiIgIiwzMzoiUGFnZVVwIiwzNDoiUGFnZURvd24iLDM1OiJFbmQiLDM2OiJIb21lIiwzNzoiQXJyb3dMZWZ0IiwzODoiQXJyb3dVcCIsMzk6IkFycm93UmlnaHQiLDQwOiJBcnJvd0Rvd24iLDQ1OiJJbnNlcnQiLDQ2OiJEZWxldGUiLDExMjoiRjEiLDExMzoiRjIiLDExNDoiRjMiLDExNToiRjQiLDExNjoiRjUiLDExNzoiRjYiLDExODoiRjciLDExOToiRjgiLDEyMDoiRjkiLDEyMToiRjEwIiwxMjI6IkYxMSIsMTIzOiJGMTIiLDE0NDoiTnVtTG9jayIsMTQ1OiJTY3JvbGxMb2NrIiwyMjQ6Ik1ldGEifSxXcD17QWx0OiJhbHRLZXkiLENvbnRyb2w6ImN0cmxLZXkiLE1ldGE6Im1ldGFLZXkiLFNoaWZ0OiJzaGlmdEtleSJ9O2Z1bmN0aW9uIFZwKGUpe3ZhciB0PXRoaXMubmF0aXZlRXZlbnQ7cmV0dXJuIHQuZ2V0TW9kaWZpZXJTdGF0ZT90LmdldE1vZGlmaWVyU3RhdGUoZSk6KGU9V3BbZV0pPyEhdFtlXTohMX1mdW5jdGlvbiB4bygpe3JldHVybiBWcH12YXIgS3A9Ryh7fSxOaSx7a2V5OmZ1bmN0aW9uKGUpe2lmKGUua2V5KXt2YXIgdD1xcFtlLmtleV18fGUua2V5O2lmKHQhPT0iVW5pZGVudGlmaWVkIilyZXR1cm4gdH1yZXR1cm4gZS50eXBlPT09ImtleXByZXNzIj8oZT1GcyhlKSxlPT09MTM/IkVudGVyIjpTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKTplLnR5cGU9PT0ia2V5ZG93biJ8fGUudHlwZT09PSJrZXl1cCI/YnBbZS5rZXlDb2RlXXx8IlVuaWRlbnRpZmllZCI6IiJ9LGNvZGU6MCxsb2NhdGlvbjowLGN0cmxLZXk6MCxzaGlmdEtleTowLGFsdEtleTowLG1ldGFLZXk6MCxyZXBlYXQ6MCxsb2NhbGU6MCxnZXRNb2RpZmllclN0YXRlOnhvLGNoYXJDb2RlOmZ1bmN0aW9uKGUpe3JldHVybiBlLnR5cGU9PT0ia2V5cHJlc3MiP0ZzKGUpOjB9LGtleUNvZGU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudHlwZT09PSJrZXlkb3duInx8ZS50eXBlPT09ImtleXVwIj9lLmtleUNvZGU6MH0sd2hpY2g6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudHlwZT09PSJrZXlwcmVzcyI/RnMoZSk6ZS50eXBlPT09ImtleWRvd24ifHxlLnR5cGU9PT0ia2V5dXAiP2Uua2V5Q29kZTowfX0pLEdwPXh0KEtwKSxKcD1HKHt9LERzLHtwb2ludGVySWQ6MCx3aWR0aDowLGhlaWdodDowLHByZXNzdXJlOjAsdGFuZ2VudGlhbFByZXNzdXJlOjAsdGlsdFg6MCx0aWx0WTowLHR3aXN0OjAscG9pbnRlclR5cGU6MCxpc1ByaW1hcnk6MH0pLHdjPXh0KEpwKSxZcD1HKHt9LE5pLHt0b3VjaGVzOjAsdGFyZ2V0VG91Y2hlczowLGNoYW5nZWRUb3VjaGVzOjAsYWx0S2V5OjAsbWV0YUtleTowLGN0cmxLZXk6MCxzaGlmdEtleTowLGdldE1vZGlmaWVyU3RhdGU6eG99KSxYcD14dChZcCksWnA9Ryh7fSxOcix7cHJvcGVydHlOYW1lOjAsZWxhcHNlZFRpbWU6MCxwc2V1ZG9FbGVtZW50OjB9KSxlbT14dChacCksdG09Ryh7fSxEcyx7ZGVsdGFYOmZ1bmN0aW9uKGUpe3JldHVybiJkZWx0YVgiaW4gZT9lLmRlbHRhWDoid2hlZWxEZWx0YVgiaW4gZT8tZS53aGVlbERlbHRhWDowfSxkZWx0YVk6ZnVuY3Rpb24oZSl7cmV0dXJuImRlbHRhWSJpbiBlP2UuZGVsdGFZOiJ3aGVlbERlbHRhWSJpbiBlPy1lLndoZWVsRGVsdGFZOiJ3aGVlbERlbHRhImluIGU/LWUud2hlZWxEZWx0YTowfSxkZWx0YVo6MCxkZWx0YU1vZGU6MH0pLG5tPXh0KHRtKSxybT1bOSwxMywyNywzMl0sd289bSYmIkNvbXBvc2l0aW9uRXZlbnQiaW4gd2luZG93LFBpPW51bGw7bSYmImRvY3VtZW50TW9kZSJpbiBkb2N1bWVudCYmKFBpPWRvY3VtZW50LmRvY3VtZW50TW9kZSk7dmFyIGltPW0mJiJUZXh0RXZlbnQiaW4gd2luZG93JiYhUGksU2M9bSYmKCF3b3x8UGkmJjg8UGkmJjExPj1QaSksa2M9IiAiLENjPSExO2Z1bmN0aW9uIEVjKGUsdCl7c3dpdGNoKGUpe2Nhc2Uia2V5dXAiOnJldHVybiBybS5pbmRleE9mKHQua2V5Q29kZSkhPT0tMTtjYXNlImtleWRvd24iOnJldHVybiB0LmtleUNvZGUhPT0yMjk7Y2FzZSJrZXlwcmVzcyI6Y2FzZSJtb3VzZWRvd24iOmNhc2UiZm9jdXNvdXQiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIGpjKGUpe3JldHVybiBlPWUuZGV0YWlsLHR5cGVvZiBlPT0ib2JqZWN0IiYmImRhdGEiaW4gZT9lLmRhdGE6bnVsbH12YXIgUnI9ITE7ZnVuY3Rpb24gc20oZSx0KXtzd2l0Y2goZSl7Y2FzZSJjb21wb3NpdGlvbmVuZCI6cmV0dXJuIGpjKHQpO2Nhc2Uia2V5cHJlc3MiOnJldHVybiB0LndoaWNoIT09MzI/bnVsbDooQ2M9ITAsa2MpO2Nhc2UidGV4dElucHV0IjpyZXR1cm4gZT10LmRhdGEsZT09PWtjJiZDYz9udWxsOmU7ZGVmYXVsdDpyZXR1cm4gbnVsbH19ZnVuY3Rpb24gbG0oZSx0KXtpZihScilyZXR1cm4gZT09PSJjb21wb3NpdGlvbmVuZCJ8fCF3byYmRWMoZSx0KT8oZT1nYygpLExzPXBvPUVuPW51bGwsUnI9ITEsZSk6bnVsbDtzd2l0Y2goZSl7Y2FzZSJwYXN0ZSI6cmV0dXJuIG51bGw7Y2FzZSJrZXlwcmVzcyI6aWYoISh0LmN0cmxLZXl8fHQuYWx0S2V5fHx0Lm1ldGFLZXkpfHx0LmN0cmxLZXkmJnQuYWx0S2V5KXtpZih0LmNoYXImJjE8dC5jaGFyLmxlbmd0aClyZXR1cm4gdC5jaGFyO2lmKHQud2hpY2gpcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUodC53aGljaCl9cmV0dXJuIG51bGw7Y2FzZSJjb21wb3NpdGlvbmVuZCI6cmV0dXJuIFNjJiZ0LmxvY2FsZSE9PSJrbyI/bnVsbDp0LmRhdGE7ZGVmYXVsdDpyZXR1cm4gbnVsbH19dmFyIG9tPXtjb2xvcjohMCxkYXRlOiEwLGRhdGV0aW1lOiEwLCJkYXRldGltZS1sb2NhbCI6ITAsZW1haWw6ITAsbW9udGg6ITAsbnVtYmVyOiEwLHBhc3N3b3JkOiEwLHJhbmdlOiEwLHNlYXJjaDohMCx0ZWw6ITAsdGV4dDohMCx0aW1lOiEwLHVybDohMCx3ZWVrOiEwfTtmdW5jdGlvbiBOYyhlKXt2YXIgdD1lJiZlLm5vZGVOYW1lJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuIHQ9PT0iaW5wdXQiPyEhb21bZS50eXBlXTp0PT09InRleHRhcmVhIn1mdW5jdGlvbiBSYyhlLHQsbixpKXtWdShpKSx0PSRzKHQsIm9uQ2hhbmdlIiksMDx0Lmxlbmd0aCYmKG49bmV3IG1vKCJvbkNoYW5nZSIsImNoYW5nZSIsbnVsbCxuLGkpLGUucHVzaCh7ZXZlbnQ6bixsaXN0ZW5lcnM6dH0pKX12YXIgX2k9bnVsbCxUaT1udWxsO2Z1bmN0aW9uIGFtKGUpe2JjKGUsMCl9ZnVuY3Rpb24gSXMoZSl7dmFyIHQ9RnIoZSk7aWYoSXUodCkpcmV0dXJuIGV9ZnVuY3Rpb24gdW0oZSx0KXtpZihlPT09ImNoYW5nZSIpcmV0dXJuIHR9dmFyIFBjPSExO2lmKG0pe3ZhciBTbztpZihtKXt2YXIga289Im9uaW5wdXQiaW4gZG9jdW1lbnQ7aWYoIWtvKXt2YXIgX2M9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7X2Muc2V0QXR0cmlidXRlKCJvbmlucHV0IiwicmV0dXJuOyIpLGtvPXR5cGVvZiBfYy5vbmlucHV0PT0iZnVuY3Rpb24ifVNvPWtvfWVsc2UgU289ITE7UGM9U28mJighZG9jdW1lbnQuZG9jdW1lbnRNb2RlfHw5PGRvY3VtZW50LmRvY3VtZW50TW9kZSl9ZnVuY3Rpb24gVGMoKXtfaSYmKF9pLmRldGFjaEV2ZW50KCJvbnByb3BlcnR5Y2hhbmdlIixMYyksVGk9X2k9bnVsbCl9ZnVuY3Rpb24gTGMoZSl7aWYoZS5wcm9wZXJ0eU5hbWU9PT0idmFsdWUiJiZJcyhUaSkpe3ZhciB0PVtdO1JjKHQsVGksZSxlbyhlKSksWXUoYW0sdCl9fWZ1bmN0aW9uIGNtKGUsdCxuKXtlPT09ImZvY3VzaW4iPyhUYygpLF9pPXQsVGk9bixfaS5hdHRhY2hFdmVudCgib25wcm9wZXJ0eWNoYW5nZSIsTGMpKTplPT09ImZvY3Vzb3V0IiYmVGMoKX1mdW5jdGlvbiBkbShlKXtpZihlPT09InNlbGVjdGlvbmNoYW5nZSJ8fGU9PT0ia2V5dXAifHxlPT09ImtleWRvd24iKXJldHVybiBJcyhUaSl9ZnVuY3Rpb24gZm0oZSx0KXtpZihlPT09ImNsaWNrIilyZXR1cm4gSXModCl9ZnVuY3Rpb24gaG0oZSx0KXtpZihlPT09ImlucHV0Inx8ZT09PSJjaGFuZ2UiKXJldHVybiBJcyh0KX1mdW5jdGlvbiBwbShlLHQpe3JldHVybiBlPT09dCYmKGUhPT0wfHwxL2U9PT0xL3QpfHxlIT09ZSYmdCE9PXR9dmFyIE10PXR5cGVvZiBPYmplY3QuaXM9PSJmdW5jdGlvbiI/T2JqZWN0LmlzOnBtO2Z1bmN0aW9uIExpKGUsdCl7aWYoTXQoZSx0KSlyZXR1cm4hMDtpZih0eXBlb2YgZSE9Im9iamVjdCJ8fGU9PT1udWxsfHx0eXBlb2YgdCE9Im9iamVjdCJ8fHQ9PT1udWxsKXJldHVybiExO3ZhciBuPU9iamVjdC5rZXlzKGUpLGk9T2JqZWN0LmtleXModCk7aWYobi5sZW5ndGghPT1pLmxlbmd0aClyZXR1cm4hMTtmb3IoaT0wO2k8bi5sZW5ndGg7aSsrKXt2YXIgbz1uW2ldO2lmKCF2LmNhbGwodCxvKXx8IU10KGVbb10sdFtvXSkpcmV0dXJuITF9cmV0dXJuITB9ZnVuY3Rpb24gRmMoZSl7Zm9yKDtlJiZlLmZpcnN0Q2hpbGQ7KWU9ZS5maXJzdENoaWxkO3JldHVybiBlfWZ1bmN0aW9uIE9jKGUsdCl7dmFyIG49RmMoZSk7ZT0wO2Zvcih2YXIgaTtuOyl7aWYobi5ub2RlVHlwZT09PTMpe2lmKGk9ZStuLnRleHRDb250ZW50Lmxlbmd0aCxlPD10JiZpPj10KXJldHVybntub2RlOm4sb2Zmc2V0OnQtZX07ZT1pfWU6e2Zvcig7bjspe2lmKG4ubmV4dFNpYmxpbmcpe249bi5uZXh0U2libGluZzticmVhayBlfW49bi5wYXJlbnROb2RlfW49dm9pZCAwfW49RmMobil9fWZ1bmN0aW9uIERjKGUsdCl7cmV0dXJuIGUmJnQ/ZT09PXQ/ITA6ZSYmZS5ub2RlVHlwZT09PTM/ITE6dCYmdC5ub2RlVHlwZT09PTM/RGMoZSx0LnBhcmVudE5vZGUpOiJjb250YWlucyJpbiBlP2UuY29udGFpbnModCk6ZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbj8hIShlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHQpJjE2KTohMTohMX1mdW5jdGlvbiBJYygpe2Zvcih2YXIgZT13aW5kb3csdD15cygpO3QgaW5zdGFuY2VvZiBlLkhUTUxJRnJhbWVFbGVtZW50Oyl7dHJ5e3ZhciBuPXR5cGVvZiB0LmNvbnRlbnRXaW5kb3cubG9jYXRpb24uaHJlZj09InN0cmluZyJ9Y2F0Y2h7bj0hMX1pZihuKWU9dC5jb250ZW50V2luZG93O2Vsc2UgYnJlYWs7dD15cyhlLmRvY3VtZW50KX1yZXR1cm4gdH1mdW5jdGlvbiBDbyhlKXt2YXIgdD1lJiZlLm5vZGVOYW1lJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuIHQmJih0PT09ImlucHV0IiYmKGUudHlwZT09PSJ0ZXh0Inx8ZS50eXBlPT09InNlYXJjaCJ8fGUudHlwZT09PSJ0ZWwifHxlLnR5cGU9PT0idXJsInx8ZS50eXBlPT09InBhc3N3b3JkIil8fHQ9PT0idGV4dGFyZWEifHxlLmNvbnRlbnRFZGl0YWJsZT09PSJ0cnVlIil9ZnVuY3Rpb24gbW0oZSl7dmFyIHQ9SWMoKSxuPWUuZm9jdXNlZEVsZW0saT1lLnNlbGVjdGlvblJhbmdlO2lmKHQhPT1uJiZuJiZuLm93bmVyRG9jdW1lbnQmJkRjKG4ub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsbikpe2lmKGkhPT1udWxsJiZDbyhuKSl7aWYodD1pLnN0YXJ0LGU9aS5lbmQsZT09PXZvaWQgMCYmKGU9dCksInNlbGVjdGlvblN0YXJ0ImluIG4pbi5zZWxlY3Rpb25TdGFydD10LG4uc2VsZWN0aW9uRW5kPU1hdGgubWluKGUsbi52YWx1ZS5sZW5ndGgpO2Vsc2UgaWYoZT0odD1uLm93bmVyRG9jdW1lbnR8fGRvY3VtZW50KSYmdC5kZWZhdWx0Vmlld3x8d2luZG93LGUuZ2V0U2VsZWN0aW9uKXtlPWUuZ2V0U2VsZWN0aW9uKCk7dmFyIG89bi50ZXh0Q29udGVudC5sZW5ndGgsYT1NYXRoLm1pbihpLnN0YXJ0LG8pO2k9aS5lbmQ9PT12b2lkIDA/YTpNYXRoLm1pbihpLmVuZCxvKSwhZS5leHRlbmQmJmE+aSYmKG89aSxpPWEsYT1vKSxvPU9jKG4sYSk7dmFyIGY9T2MobixpKTtvJiZmJiYoZS5yYW5nZUNvdW50IT09MXx8ZS5hbmNob3JOb2RlIT09by5ub2RlfHxlLmFuY2hvck9mZnNldCE9PW8ub2Zmc2V0fHxlLmZvY3VzTm9kZSE9PWYubm9kZXx8ZS5mb2N1c09mZnNldCE9PWYub2Zmc2V0KSYmKHQ9dC5jcmVhdGVSYW5nZSgpLHQuc2V0U3RhcnQoby5ub2RlLG8ub2Zmc2V0KSxlLnJlbW92ZUFsbFJhbmdlcygpLGE+aT8oZS5hZGRSYW5nZSh0KSxlLmV4dGVuZChmLm5vZGUsZi5vZmZzZXQpKToodC5zZXRFbmQoZi5ub2RlLGYub2Zmc2V0KSxlLmFkZFJhbmdlKHQpKSl9fWZvcih0PVtdLGU9bjtlPWUucGFyZW50Tm9kZTspZS5ub2RlVHlwZT09PTEmJnQucHVzaCh7ZWxlbWVudDplLGxlZnQ6ZS5zY3JvbGxMZWZ0LHRvcDplLnNjcm9sbFRvcH0pO2Zvcih0eXBlb2Ygbi5mb2N1cz09ImZ1bmN0aW9uIiYmbi5mb2N1cygpLG49MDtuPHQubGVuZ3RoO24rKyllPXRbbl0sZS5lbGVtZW50LnNjcm9sbExlZnQ9ZS5sZWZ0LGUuZWxlbWVudC5zY3JvbGxUb3A9ZS50b3B9fXZhciBnbT1tJiYiZG9jdW1lbnRNb2RlImluIGRvY3VtZW50JiYxMT49ZG9jdW1lbnQuZG9jdW1lbnRNb2RlLFByPW51bGwsRW89bnVsbCxGaT1udWxsLGpvPSExO2Z1bmN0aW9uIE1jKGUsdCxuKXt2YXIgaT1uLndpbmRvdz09PW4/bi5kb2N1bWVudDpuLm5vZGVUeXBlPT09OT9uOm4ub3duZXJEb2N1bWVudDtqb3x8UHI9PW51bGx8fFByIT09eXMoaSl8fChpPVByLCJzZWxlY3Rpb25TdGFydCJpbiBpJiZDbyhpKT9pPXtzdGFydDppLnNlbGVjdGlvblN0YXJ0LGVuZDppLnNlbGVjdGlvbkVuZH06KGk9KGkub3duZXJEb2N1bWVudCYmaS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHx3aW5kb3cpLmdldFNlbGVjdGlvbigpLGk9e2FuY2hvck5vZGU6aS5hbmNob3JOb2RlLGFuY2hvck9mZnNldDppLmFuY2hvck9mZnNldCxmb2N1c05vZGU6aS5mb2N1c05vZGUsZm9jdXNPZmZzZXQ6aS5mb2N1c09mZnNldH0pLEZpJiZMaShGaSxpKXx8KEZpPWksaT0kcyhFbywib25TZWxlY3QiKSwwPGkubGVuZ3RoJiYodD1uZXcgbW8oIm9uU2VsZWN0Iiwic2VsZWN0IixudWxsLHQsbiksZS5wdXNoKHtldmVudDp0LGxpc3RlbmVyczppfSksdC50YXJnZXQ9UHIpKSl9ZnVuY3Rpb24gTXMoZSx0KXt2YXIgbj17fTtyZXR1cm4gbltlLnRvTG93ZXJDYXNlKCldPXQudG9Mb3dlckNhc2UoKSxuWyJXZWJraXQiK2VdPSJ3ZWJraXQiK3QsblsiTW96IitlXT0ibW96Iit0LG59dmFyIF9yPXthbmltYXRpb25lbmQ6TXMoIkFuaW1hdGlvbiIsIkFuaW1hdGlvbkVuZCIpLGFuaW1hdGlvbml0ZXJhdGlvbjpNcygiQW5pbWF0aW9uIiwiQW5pbWF0aW9uSXRlcmF0aW9uIiksYW5pbWF0aW9uc3RhcnQ6TXMoIkFuaW1hdGlvbiIsIkFuaW1hdGlvblN0YXJ0IiksdHJhbnNpdGlvbmVuZDpNcygiVHJhbnNpdGlvbiIsIlRyYW5zaXRpb25FbmQiKX0sTm89e30semM9e307bSYmKHpjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLnN0eWxlLCJBbmltYXRpb25FdmVudCJpbiB3aW5kb3d8fChkZWxldGUgX3IuYW5pbWF0aW9uZW5kLmFuaW1hdGlvbixkZWxldGUgX3IuYW5pbWF0aW9uaXRlcmF0aW9uLmFuaW1hdGlvbixkZWxldGUgX3IuYW5pbWF0aW9uc3RhcnQuYW5pbWF0aW9uKSwiVHJhbnNpdGlvbkV2ZW50ImluIHdpbmRvd3x8ZGVsZXRlIF9yLnRyYW5zaXRpb25lbmQudHJhbnNpdGlvbik7ZnVuY3Rpb24genMoZSl7aWYoTm9bZV0pcmV0dXJuIE5vW2VdO2lmKCFfcltlXSlyZXR1cm4gZTt2YXIgdD1fcltlXSxuO2ZvcihuIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShuKSYmbiBpbiB6YylyZXR1cm4gTm9bZV09dFtuXTtyZXR1cm4gZX12YXIgQWM9enMoImFuaW1hdGlvbmVuZCIpLCRjPXpzKCJhbmltYXRpb25pdGVyYXRpb24iKSxVYz16cygiYW5pbWF0aW9uc3RhcnQiKSxCYz16cygidHJhbnNpdGlvbmVuZCIpLEhjPW5ldyBNYXAsUWM9ImFib3J0IGF1eENsaWNrIGNhbmNlbCBjYW5QbGF5IGNhblBsYXlUaHJvdWdoIGNsaWNrIGNsb3NlIGNvbnRleHRNZW51IGNvcHkgY3V0IGRyYWcgZHJhZ0VuZCBkcmFnRW50ZXIgZHJhZ0V4aXQgZHJhZ0xlYXZlIGRyYWdPdmVyIGRyYWdTdGFydCBkcm9wIGR1cmF0aW9uQ2hhbmdlIGVtcHRpZWQgZW5jcnlwdGVkIGVuZGVkIGVycm9yIGdvdFBvaW50ZXJDYXB0dXJlIGlucHV0IGludmFsaWQga2V5RG93biBrZXlQcmVzcyBrZXlVcCBsb2FkIGxvYWRlZERhdGEgbG9hZGVkTWV0YWRhdGEgbG9hZFN0YXJ0IGxvc3RQb2ludGVyQ2FwdHVyZSBtb3VzZURvd24gbW91c2VNb3ZlIG1vdXNlT3V0IG1vdXNlT3ZlciBtb3VzZVVwIHBhc3RlIHBhdXNlIHBsYXkgcGxheWluZyBwb2ludGVyQ2FuY2VsIHBvaW50ZXJEb3duIHBvaW50ZXJNb3ZlIHBvaW50ZXJPdXQgcG9pbnRlck92ZXIgcG9pbnRlclVwIHByb2dyZXNzIHJhdGVDaGFuZ2UgcmVzZXQgcmVzaXplIHNlZWtlZCBzZWVraW5nIHN0YWxsZWQgc3VibWl0IHN1c3BlbmQgdGltZVVwZGF0ZSB0b3VjaENhbmNlbCB0b3VjaEVuZCB0b3VjaFN0YXJ0IHZvbHVtZUNoYW5nZSBzY3JvbGwgdG9nZ2xlIHRvdWNoTW92ZSB3YWl0aW5nIHdoZWVsIi5zcGxpdCgiICIpO2Z1bmN0aW9uIGpuKGUsdCl7SGMuc2V0KGUsdCksaCh0LFtlXSl9Zm9yKHZhciBSbz0wO1JvPFFjLmxlbmd0aDtSbysrKXt2YXIgUG89UWNbUm9dLHZtPVBvLnRvTG93ZXJDYXNlKCkseW09UG9bMF0udG9VcHBlckNhc2UoKStQby5zbGljZSgxKTtqbih2bSwib24iK3ltKX1qbihBYywib25BbmltYXRpb25FbmQiKSxqbigkYywib25BbmltYXRpb25JdGVyYXRpb24iKSxqbihVYywib25BbmltYXRpb25TdGFydCIpLGpuKCJkYmxjbGljayIsIm9uRG91YmxlQ2xpY2siKSxqbigiZm9jdXNpbiIsIm9uRm9jdXMiKSxqbigiZm9jdXNvdXQiLCJvbkJsdXIiKSxqbihCYywib25UcmFuc2l0aW9uRW5kIikscCgib25Nb3VzZUVudGVyIixbIm1vdXNlb3V0IiwibW91c2VvdmVyIl0pLHAoIm9uTW91c2VMZWF2ZSIsWyJtb3VzZW91dCIsIm1vdXNlb3ZlciJdKSxwKCJvblBvaW50ZXJFbnRlciIsWyJwb2ludGVyb3V0IiwicG9pbnRlcm92ZXIiXSkscCgib25Qb2ludGVyTGVhdmUiLFsicG9pbnRlcm91dCIsInBvaW50ZXJvdmVyIl0pLGgoIm9uQ2hhbmdlIiwiY2hhbmdlIGNsaWNrIGZvY3VzaW4gZm9jdXNvdXQgaW5wdXQga2V5ZG93biBrZXl1cCBzZWxlY3Rpb25jaGFuZ2UiLnNwbGl0KCIgIikpLGgoIm9uU2VsZWN0IiwiZm9jdXNvdXQgY29udGV4dG1lbnUgZHJhZ2VuZCBmb2N1c2luIGtleWRvd24ga2V5dXAgbW91c2Vkb3duIG1vdXNldXAgc2VsZWN0aW9uY2hhbmdlIi5zcGxpdCgiICIpKSxoKCJvbkJlZm9yZUlucHV0IixbImNvbXBvc2l0aW9uZW5kIiwia2V5cHJlc3MiLCJ0ZXh0SW5wdXQiLCJwYXN0ZSJdKSxoKCJvbkNvbXBvc2l0aW9uRW5kIiwiY29tcG9zaXRpb25lbmQgZm9jdXNvdXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBtb3VzZWRvd24iLnNwbGl0KCIgIikpLGgoIm9uQ29tcG9zaXRpb25TdGFydCIsImNvbXBvc2l0aW9uc3RhcnQgZm9jdXNvdXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBtb3VzZWRvd24iLnNwbGl0KCIgIikpLGgoIm9uQ29tcG9zaXRpb25VcGRhdGUiLCJjb21wb3NpdGlvbnVwZGF0ZSBmb2N1c291dCBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93biIuc3BsaXQoIiAiKSk7dmFyIE9pPSJhYm9ydCBjYW5wbGF5IGNhbnBsYXl0aHJvdWdoIGR1cmF0aW9uY2hhbmdlIGVtcHRpZWQgZW5jcnlwdGVkIGVuZGVkIGVycm9yIGxvYWRlZGRhdGEgbG9hZGVkbWV0YWRhdGEgbG9hZHN0YXJ0IHBhdXNlIHBsYXkgcGxheWluZyBwcm9ncmVzcyByYXRlY2hhbmdlIHJlc2l6ZSBzZWVrZWQgc2Vla2luZyBzdGFsbGVkIHN1c3BlbmQgdGltZXVwZGF0ZSB2b2x1bWVjaGFuZ2Ugd2FpdGluZyIuc3BsaXQoIiAiKSx4bT1uZXcgU2V0KCJjYW5jZWwgY2xvc2UgaW52YWxpZCBsb2FkIHNjcm9sbCB0b2dnbGUiLnNwbGl0KCIgIikuY29uY2F0KE9pKSk7ZnVuY3Rpb24gcWMoZSx0LG4pe3ZhciBpPWUudHlwZXx8InVua25vd24tZXZlbnQiO2UuY3VycmVudFRhcmdldD1uLHZwKGksdCx2b2lkIDAsZSksZS5jdXJyZW50VGFyZ2V0PW51bGx9ZnVuY3Rpb24gYmMoZSx0KXt0PSh0JjQpIT09MDtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIGk9ZVtuXSxvPWkuZXZlbnQ7aT1pLmxpc3RlbmVycztlOnt2YXIgYT12b2lkIDA7aWYodClmb3IodmFyIGY9aS5sZW5ndGgtMTswPD1mO2YtLSl7dmFyIGc9aVtmXSx3PWcuaW5zdGFuY2UsVD1nLmN1cnJlbnRUYXJnZXQ7aWYoZz1nLmxpc3RlbmVyLHchPT1hJiZvLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpYnJlYWsgZTtxYyhvLGcsVCksYT13fWVsc2UgZm9yKGY9MDtmPGkubGVuZ3RoO2YrKyl7aWYoZz1pW2ZdLHc9Zy5pbnN0YW5jZSxUPWcuY3VycmVudFRhcmdldCxnPWcubGlzdGVuZXIsdyE9PWEmJm8uaXNQcm9wYWdhdGlvblN0b3BwZWQoKSlicmVhayBlO3FjKG8sZyxUKSxhPXd9fX1pZihTcyl0aHJvdyBlPWlvLFNzPSExLGlvPW51bGwsZX1mdW5jdGlvbiBSZShlLHQpe3ZhciBuPXRbTW9dO249PT12b2lkIDAmJihuPXRbTW9dPW5ldyBTZXQpO3ZhciBpPWUrIl9fYnViYmxlIjtuLmhhcyhpKXx8KFdjKHQsZSwyLCExKSxuLmFkZChpKSl9ZnVuY3Rpb24gX28oZSx0LG4pe3ZhciBpPTA7dCYmKGl8PTQpLFdjKG4sZSxpLHQpfXZhciBBcz0iX3JlYWN0TGlzdGVuaW5nIitNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKTtmdW5jdGlvbiBEaShlKXtpZighZVtBc10pe2VbQXNdPSEwLHUuZm9yRWFjaChmdW5jdGlvbihuKXtuIT09InNlbGVjdGlvbmNoYW5nZSImJih4bS5oYXMobil8fF9vKG4sITEsZSksX28obiwhMCxlKSl9KTt2YXIgdD1lLm5vZGVUeXBlPT09OT9lOmUub3duZXJEb2N1bWVudDt0PT09bnVsbHx8dFtBc118fCh0W0FzXT0hMCxfbygic2VsZWN0aW9uY2hhbmdlIiwhMSx0KSl9fWZ1bmN0aW9uIFdjKGUsdCxuLGkpe3N3aXRjaChtYyh0KSl7Y2FzZSAxOnZhciBvPU9wO2JyZWFrO2Nhc2UgNDpvPURwO2JyZWFrO2RlZmF1bHQ6bz1mb31uPW8uYmluZChudWxsLHQsbixlKSxvPXZvaWQgMCwhcm98fHQhPT0idG91Y2hzdGFydCImJnQhPT0idG91Y2htb3ZlIiYmdCE9PSJ3aGVlbCJ8fChvPSEwKSxpP28hPT12b2lkIDA/ZS5hZGRFdmVudExpc3RlbmVyKHQsbix7Y2FwdHVyZTohMCxwYXNzaXZlOm99KTplLmFkZEV2ZW50TGlzdGVuZXIodCxuLCEwKTpvIT09dm9pZCAwP2UuYWRkRXZlbnRMaXN0ZW5lcih0LG4se3Bhc3NpdmU6b30pOmUuYWRkRXZlbnRMaXN0ZW5lcih0LG4sITEpfWZ1bmN0aW9uIFRvKGUsdCxuLGksbyl7dmFyIGE9aTtpZigodCYxKT09PTAmJih0JjIpPT09MCYmaSE9PW51bGwpZTpmb3IoOzspe2lmKGk9PT1udWxsKXJldHVybjt2YXIgZj1pLnRhZztpZihmPT09M3x8Zj09PTQpe3ZhciBnPWkuc3RhdGVOb2RlLmNvbnRhaW5lckluZm87aWYoZz09PW98fGcubm9kZVR5cGU9PT04JiZnLnBhcmVudE5vZGU9PT1vKWJyZWFrO2lmKGY9PT00KWZvcihmPWkucmV0dXJuO2YhPT1udWxsOyl7dmFyIHc9Zi50YWc7aWYoKHc9PT0zfHx3PT09NCkmJih3PWYuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8sdz09PW98fHcubm9kZVR5cGU9PT04JiZ3LnBhcmVudE5vZGU9PT1vKSlyZXR1cm47Zj1mLnJldHVybn1mb3IoO2chPT1udWxsOyl7aWYoZj1KbihnKSxmPT09bnVsbClyZXR1cm47aWYodz1mLnRhZyx3PT09NXx8dz09PTYpe2k9YT1mO2NvbnRpbnVlIGV9Zz1nLnBhcmVudE5vZGV9fWk9aS5yZXR1cm59WXUoZnVuY3Rpb24oKXt2YXIgVD1hLHo9ZW8obiksQT1bXTtlOnt2YXIgRD1IYy5nZXQoZSk7aWYoRCE9PXZvaWQgMCl7dmFyIFc9bW8sSj1lO3N3aXRjaChlKXtjYXNlImtleXByZXNzIjppZihGcyhuKT09PTApYnJlYWsgZTtjYXNlImtleWRvd24iOmNhc2Uia2V5dXAiOlc9R3A7YnJlYWs7Y2FzZSJmb2N1c2luIjpKPSJmb2N1cyIsVz15bzticmVhaztjYXNlImZvY3Vzb3V0IjpKPSJibHVyIixXPXlvO2JyZWFrO2Nhc2UiYmVmb3JlYmx1ciI6Y2FzZSJhZnRlcmJsdXIiOlc9eW87YnJlYWs7Y2FzZSJjbGljayI6aWYobi5idXR0b249PT0yKWJyZWFrIGU7Y2FzZSJhdXhjbGljayI6Y2FzZSJkYmxjbGljayI6Y2FzZSJtb3VzZWRvd24iOmNhc2UibW91c2Vtb3ZlIjpjYXNlIm1vdXNldXAiOmNhc2UibW91c2VvdXQiOmNhc2UibW91c2VvdmVyIjpjYXNlImNvbnRleHRtZW51IjpXPXljO2JyZWFrO2Nhc2UiZHJhZyI6Y2FzZSJkcmFnZW5kIjpjYXNlImRyYWdlbnRlciI6Y2FzZSJkcmFnZXhpdCI6Y2FzZSJkcmFnbGVhdmUiOmNhc2UiZHJhZ292ZXIiOmNhc2UiZHJhZ3N0YXJ0IjpjYXNlImRyb3AiOlc9enA7YnJlYWs7Y2FzZSJ0b3VjaGNhbmNlbCI6Y2FzZSJ0b3VjaGVuZCI6Y2FzZSJ0b3VjaG1vdmUiOmNhc2UidG91Y2hzdGFydCI6Vz1YcDticmVhaztjYXNlIEFjOmNhc2UgJGM6Y2FzZSBVYzpXPVVwO2JyZWFrO2Nhc2UgQmM6Vz1lbTticmVhaztjYXNlInNjcm9sbCI6Vz1JcDticmVhaztjYXNlIndoZWVsIjpXPW5tO2JyZWFrO2Nhc2UiY29weSI6Y2FzZSJjdXQiOmNhc2UicGFzdGUiOlc9SHA7YnJlYWs7Y2FzZSJnb3Rwb2ludGVyY2FwdHVyZSI6Y2FzZSJsb3N0cG9pbnRlcmNhcHR1cmUiOmNhc2UicG9pbnRlcmNhbmNlbCI6Y2FzZSJwb2ludGVyZG93biI6Y2FzZSJwb2ludGVybW92ZSI6Y2FzZSJwb2ludGVyb3V0IjpjYXNlInBvaW50ZXJvdmVyIjpjYXNlInBvaW50ZXJ1cCI6Vz13Y312YXIgWT0odCY0KSE9PTAsVWU9IVkmJmU9PT0ic2Nyb2xsIixSPVk/RCE9PW51bGw/RCsiQ2FwdHVyZSI6bnVsbDpEO1k9W107Zm9yKHZhciBrPVQsUDtrIT09bnVsbDspe1A9azt2YXIgVT1QLnN0YXRlTm9kZTtpZihQLnRhZz09PTUmJlUhPT1udWxsJiYoUD1VLFIhPT1udWxsJiYoVT1naShrLFIpLFUhPW51bGwmJlkucHVzaChJaShrLFUsUCkpKSksVWUpYnJlYWs7az1rLnJldHVybn0wPFkubGVuZ3RoJiYoRD1uZXcgVyhELEosbnVsbCxuLHopLEEucHVzaCh7ZXZlbnQ6RCxsaXN0ZW5lcnM6WX0pKX19aWYoKHQmNyk9PT0wKXtlOntpZihEPWU9PT0ibW91c2VvdmVyInx8ZT09PSJwb2ludGVyb3ZlciIsVz1lPT09Im1vdXNlb3V0Inx8ZT09PSJwb2ludGVyb3V0IixEJiZuIT09WmwmJihKPW4ucmVsYXRlZFRhcmdldHx8bi5mcm9tRWxlbWVudCkmJihKbihKKXx8Sltzbl0pKWJyZWFrIGU7aWYoKFd8fEQpJiYoRD16LndpbmRvdz09PXo/ejooRD16Lm93bmVyRG9jdW1lbnQpP0QuZGVmYXVsdFZpZXd8fEQucGFyZW50V2luZG93OndpbmRvdyxXPyhKPW4ucmVsYXRlZFRhcmdldHx8bi50b0VsZW1lbnQsVz1ULEo9Sj9KbihKKTpudWxsLEohPT1udWxsJiYoVWU9R24oSiksSiE9PVVlfHxKLnRhZyE9PTUmJkoudGFnIT09NikmJihKPW51bGwpKTooVz1udWxsLEo9VCksVyE9PUopKXtpZihZPXljLFU9Im9uTW91c2VMZWF2ZSIsUj0ib25Nb3VzZUVudGVyIixrPSJtb3VzZSIsKGU9PT0icG9pbnRlcm91dCJ8fGU9PT0icG9pbnRlcm92ZXIiKSYmKFk9d2MsVT0ib25Qb2ludGVyTGVhdmUiLFI9Im9uUG9pbnRlckVudGVyIixrPSJwb2ludGVyIiksVWU9Vz09bnVsbD9EOkZyKFcpLFA9Sj09bnVsbD9EOkZyKEopLEQ9bmV3IFkoVSxrKyJsZWF2ZSIsVyxuLHopLEQudGFyZ2V0PVVlLEQucmVsYXRlZFRhcmdldD1QLFU9bnVsbCxKbih6KT09PVQmJihZPW5ldyBZKFIsaysiZW50ZXIiLEosbix6KSxZLnRhcmdldD1QLFkucmVsYXRlZFRhcmdldD1VZSxVPVkpLFVlPVUsVyYmSil0Ontmb3IoWT1XLFI9SixrPTAsUD1ZO1A7UD1UcihQKSlrKys7Zm9yKFA9MCxVPVI7VTtVPVRyKFUpKVArKztmb3IoOzA8ay1QOylZPVRyKFkpLGstLTtmb3IoOzA8UC1rOylSPVRyKFIpLFAtLTtmb3IoO2stLTspe2lmKFk9PT1SfHxSIT09bnVsbCYmWT09PVIuYWx0ZXJuYXRlKWJyZWFrIHQ7WT1UcihZKSxSPVRyKFIpfVk9bnVsbH1lbHNlIFk9bnVsbDtXIT09bnVsbCYmVmMoQSxELFcsWSwhMSksSiE9PW51bGwmJlVlIT09bnVsbCYmVmMoQSxVZSxKLFksITApfX1lOntpZihEPVQ/RnIoVCk6d2luZG93LFc9RC5ub2RlTmFtZSYmRC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLFc9PT0ic2VsZWN0Inx8Vz09PSJpbnB1dCImJkQudHlwZT09PSJmaWxlIil2YXIgWD11bTtlbHNlIGlmKE5jKEQpKWlmKFBjKVg9aG07ZWxzZXtYPWRtO3ZhciBlZT1jbX1lbHNlKFc9RC5ub2RlTmFtZSkmJlcudG9Mb3dlckNhc2UoKT09PSJpbnB1dCImJihELnR5cGU9PT0iY2hlY2tib3gifHxELnR5cGU9PT0icmFkaW8iKSYmKFg9Zm0pO2lmKFgmJihYPVgoZSxUKSkpe1JjKEEsWCxuLHopO2JyZWFrIGV9ZWUmJmVlKGUsRCxUKSxlPT09ImZvY3Vzb3V0IiYmKGVlPUQuX3dyYXBwZXJTdGF0ZSkmJmVlLmNvbnRyb2xsZWQmJkQudHlwZT09PSJudW1iZXIiJiZLbChELCJudW1iZXIiLEQudmFsdWUpfXN3aXRjaChlZT1UP0ZyKFQpOndpbmRvdyxlKXtjYXNlImZvY3VzaW4iOihOYyhlZSl8fGVlLmNvbnRlbnRFZGl0YWJsZT09PSJ0cnVlIikmJihQcj1lZSxFbz1ULEZpPW51bGwpO2JyZWFrO2Nhc2UiZm9jdXNvdXQiOkZpPUVvPVByPW51bGw7YnJlYWs7Y2FzZSJtb3VzZWRvd24iOmpvPSEwO2JyZWFrO2Nhc2UiY29udGV4dG1lbnUiOmNhc2UibW91c2V1cCI6Y2FzZSJkcmFnZW5kIjpqbz0hMSxNYyhBLG4seik7YnJlYWs7Y2FzZSJzZWxlY3Rpb25jaGFuZ2UiOmlmKGdtKWJyZWFrO2Nhc2Uia2V5ZG93biI6Y2FzZSJrZXl1cCI6TWMoQSxuLHopfXZhciB0ZTtpZih3byllOntzd2l0Y2goZSl7Y2FzZSJjb21wb3NpdGlvbnN0YXJ0Ijp2YXIgcmU9Im9uQ29tcG9zaXRpb25TdGFydCI7YnJlYWsgZTtjYXNlImNvbXBvc2l0aW9uZW5kIjpyZT0ib25Db21wb3NpdGlvbkVuZCI7YnJlYWsgZTtjYXNlImNvbXBvc2l0aW9udXBkYXRlIjpyZT0ib25Db21wb3NpdGlvblVwZGF0ZSI7YnJlYWsgZX1yZT12b2lkIDB9ZWxzZSBScj9FYyhlLG4pJiYocmU9Im9uQ29tcG9zaXRpb25FbmQiKTplPT09ImtleWRvd24iJiZuLmtleUNvZGU9PT0yMjkmJihyZT0ib25Db21wb3NpdGlvblN0YXJ0Iik7cmUmJihTYyYmbi5sb2NhbGUhPT0ia28iJiYoUnJ8fHJlIT09Im9uQ29tcG9zaXRpb25TdGFydCI/cmU9PT0ib25Db21wb3NpdGlvbkVuZCImJlJyJiYodGU9Z2MoKSk6KEVuPXoscG89InZhbHVlImluIEVuP0VuLnZhbHVlOkVuLnRleHRDb250ZW50LFJyPSEwKSksZWU9JHMoVCxyZSksMDxlZS5sZW5ndGgmJihyZT1uZXcgeGMocmUsZSxudWxsLG4seiksQS5wdXNoKHtldmVudDpyZSxsaXN0ZW5lcnM6ZWV9KSx0ZT9yZS5kYXRhPXRlOih0ZT1qYyhuKSx0ZSE9PW51bGwmJihyZS5kYXRhPXRlKSkpKSwodGU9aW0/c20oZSxuKTpsbShlLG4pKSYmKFQ9JHMoVCwib25CZWZvcmVJbnB1dCIpLDA8VC5sZW5ndGgmJih6PW5ldyB4Yygib25CZWZvcmVJbnB1dCIsImJlZm9yZWlucHV0IixudWxsLG4seiksQS5wdXNoKHtldmVudDp6LGxpc3RlbmVyczpUfSksei5kYXRhPXRlKSl9YmMoQSx0KX0pfWZ1bmN0aW9uIElpKGUsdCxuKXtyZXR1cm57aW5zdGFuY2U6ZSxsaXN0ZW5lcjp0LGN1cnJlbnRUYXJnZXQ6bn19ZnVuY3Rpb24gJHMoZSx0KXtmb3IodmFyIG49dCsiQ2FwdHVyZSIsaT1bXTtlIT09bnVsbDspe3ZhciBvPWUsYT1vLnN0YXRlTm9kZTtvLnRhZz09PTUmJmEhPT1udWxsJiYobz1hLGE9Z2koZSxuKSxhIT1udWxsJiZpLnVuc2hpZnQoSWkoZSxhLG8pKSxhPWdpKGUsdCksYSE9bnVsbCYmaS5wdXNoKElpKGUsYSxvKSkpLGU9ZS5yZXR1cm59cmV0dXJuIGl9ZnVuY3Rpb24gVHIoZSl7aWYoZT09PW51bGwpcmV0dXJuIG51bGw7ZG8gZT1lLnJldHVybjt3aGlsZShlJiZlLnRhZyE9PTUpO3JldHVybiBlfHxudWxsfWZ1bmN0aW9uIFZjKGUsdCxuLGksbyl7Zm9yKHZhciBhPXQuX3JlYWN0TmFtZSxmPVtdO24hPT1udWxsJiZuIT09aTspe3ZhciBnPW4sdz1nLmFsdGVybmF0ZSxUPWcuc3RhdGVOb2RlO2lmKHchPT1udWxsJiZ3PT09aSlicmVhaztnLnRhZz09PTUmJlQhPT1udWxsJiYoZz1ULG8/KHc9Z2kobixhKSx3IT1udWxsJiZmLnVuc2hpZnQoSWkobix3LGcpKSk6b3x8KHc9Z2kobixhKSx3IT1udWxsJiZmLnB1c2goSWkobix3LGcpKSkpLG49bi5yZXR1cm59Zi5sZW5ndGghPT0wJiZlLnB1c2goe2V2ZW50OnQsbGlzdGVuZXJzOmZ9KX12YXIgd209L1xyXG4/L2csU209L1x1MDAwMHxcdUZGRkQvZztmdW5jdGlvbiBLYyhlKXtyZXR1cm4odHlwZW9mIGU9PSJzdHJpbmciP2U6IiIrZSkucmVwbGFjZSh3bSxgCmApLnJlcGxhY2UoU20sIiIpfWZ1bmN0aW9uIFVzKGUsdCxuKXtpZih0PUtjKHQpLEtjKGUpIT09dCYmbil0aHJvdyBFcnJvcihsKDQyNSkpfWZ1bmN0aW9uIEJzKCl7fXZhciBMbz1udWxsLEZvPW51bGw7ZnVuY3Rpb24gT28oZSx0KXtyZXR1cm4gZT09PSJ0ZXh0YXJlYSJ8fGU9PT0ibm9zY3JpcHQifHx0eXBlb2YgdC5jaGlsZHJlbj09InN0cmluZyJ8fHR5cGVvZiB0LmNoaWxkcmVuPT0ibnVtYmVyInx8dHlwZW9mIHQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9PSJvYmplY3QiJiZ0LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIT09bnVsbCYmdC5kYW5nZXJvdXNseVNldElubmVySFRNTC5fX2h0bWwhPW51bGx9dmFyIERvPXR5cGVvZiBzZXRUaW1lb3V0PT0iZnVuY3Rpb24iP3NldFRpbWVvdXQ6dm9pZCAwLGttPXR5cGVvZiBjbGVhclRpbWVvdXQ9PSJmdW5jdGlvbiI/Y2xlYXJUaW1lb3V0OnZvaWQgMCxHYz10eXBlb2YgUHJvbWlzZT09ImZ1bmN0aW9uIj9Qcm9taXNlOnZvaWQgMCxDbT10eXBlb2YgcXVldWVNaWNyb3Rhc2s9PSJmdW5jdGlvbiI/cXVldWVNaWNyb3Rhc2s6dHlwZW9mIEdjPCJ1Ij9mdW5jdGlvbihlKXtyZXR1cm4gR2MucmVzb2x2ZShudWxsKS50aGVuKGUpLmNhdGNoKEVtKX06RG87ZnVuY3Rpb24gRW0oZSl7c2V0VGltZW91dChmdW5jdGlvbigpe3Rocm93IGV9KX1mdW5jdGlvbiBJbyhlLHQpe3ZhciBuPXQsaT0wO2Rve3ZhciBvPW4ubmV4dFNpYmxpbmc7aWYoZS5yZW1vdmVDaGlsZChuKSxvJiZvLm5vZGVUeXBlPT09OClpZihuPW8uZGF0YSxuPT09Ii8kIil7aWYoaT09PTApe2UucmVtb3ZlQ2hpbGQobyksamkodCk7cmV0dXJufWktLX1lbHNlIG4hPT0iJCImJm4hPT0iJD8iJiZuIT09IiQhInx8aSsrO249b313aGlsZShuKTtqaSh0KX1mdW5jdGlvbiBObihlKXtmb3IoO2UhPW51bGw7ZT1lLm5leHRTaWJsaW5nKXt2YXIgdD1lLm5vZGVUeXBlO2lmKHQ9PT0xfHx0PT09MylicmVhaztpZih0PT09OCl7aWYodD1lLmRhdGEsdD09PSIkInx8dD09PSIkISJ8fHQ9PT0iJD8iKWJyZWFrO2lmKHQ9PT0iLyQiKXJldHVybiBudWxsfX1yZXR1cm4gZX1mdW5jdGlvbiBKYyhlKXtlPWUucHJldmlvdXNTaWJsaW5nO2Zvcih2YXIgdD0wO2U7KXtpZihlLm5vZGVUeXBlPT09OCl7dmFyIG49ZS5kYXRhO2lmKG49PT0iJCJ8fG49PT0iJCEifHxuPT09IiQ/Iil7aWYodD09PTApcmV0dXJuIGU7dC0tfWVsc2Ugbj09PSIvJCImJnQrK31lPWUucHJldmlvdXNTaWJsaW5nfXJldHVybiBudWxsfXZhciBMcj1NYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKSxHdD0iX19yZWFjdEZpYmVyJCIrTHIsTWk9Il9fcmVhY3RQcm9wcyQiK0xyLHNuPSJfX3JlYWN0Q29udGFpbmVyJCIrTHIsTW89Il9fcmVhY3RFdmVudHMkIitMcixqbT0iX19yZWFjdExpc3RlbmVycyQiK0xyLE5tPSJfX3JlYWN0SGFuZGxlcyQiK0xyO2Z1bmN0aW9uIEpuKGUpe3ZhciB0PWVbR3RdO2lmKHQpcmV0dXJuIHQ7Zm9yKHZhciBuPWUucGFyZW50Tm9kZTtuOyl7aWYodD1uW3NuXXx8bltHdF0pe2lmKG49dC5hbHRlcm5hdGUsdC5jaGlsZCE9PW51bGx8fG4hPT1udWxsJiZuLmNoaWxkIT09bnVsbClmb3IoZT1KYyhlKTtlIT09bnVsbDspe2lmKG49ZVtHdF0pcmV0dXJuIG47ZT1KYyhlKX1yZXR1cm4gdH1lPW4sbj1lLnBhcmVudE5vZGV9cmV0dXJuIG51bGx9ZnVuY3Rpb24gemkoZSl7cmV0dXJuIGU9ZVtHdF18fGVbc25dLCFlfHxlLnRhZyE9PTUmJmUudGFnIT09NiYmZS50YWchPT0xMyYmZS50YWchPT0zP251bGw6ZX1mdW5jdGlvbiBGcihlKXtpZihlLnRhZz09PTV8fGUudGFnPT09NilyZXR1cm4gZS5zdGF0ZU5vZGU7dGhyb3cgRXJyb3IobCgzMykpfWZ1bmN0aW9uIEhzKGUpe3JldHVybiBlW01pXXx8bnVsbH12YXIgem89W10sT3I9LTE7ZnVuY3Rpb24gUm4oZSl7cmV0dXJue2N1cnJlbnQ6ZX19ZnVuY3Rpb24gUGUoZSl7MD5Pcnx8KGUuY3VycmVudD16b1tPcl0sem9bT3JdPW51bGwsT3ItLSl9ZnVuY3Rpb24gamUoZSx0KXtPcisrLHpvW09yXT1lLmN1cnJlbnQsZS5jdXJyZW50PXR9dmFyIFBuPXt9LFhlPVJuKFBuKSxkdD1SbighMSksWW49UG47ZnVuY3Rpb24gRHIoZSx0KXt2YXIgbj1lLnR5cGUuY29udGV4dFR5cGVzO2lmKCFuKXJldHVybiBQbjt2YXIgaT1lLnN0YXRlTm9kZTtpZihpJiZpLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkVW5tYXNrZWRDaGlsZENvbnRleHQ9PT10KXJldHVybiBpLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWFza2VkQ2hpbGRDb250ZXh0O3ZhciBvPXt9LGE7Zm9yKGEgaW4gbilvW2FdPXRbYV07cmV0dXJuIGkmJihlPWUuc3RhdGVOb2RlLGUuX19yZWFjdEludGVybmFsTWVtb2l6ZWRVbm1hc2tlZENoaWxkQ29udGV4dD10LGUuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNYXNrZWRDaGlsZENvbnRleHQ9byksb31mdW5jdGlvbiBmdChlKXtyZXR1cm4gZT1lLmNoaWxkQ29udGV4dFR5cGVzLGUhPW51bGx9ZnVuY3Rpb24gUXMoKXtQZShkdCksUGUoWGUpfWZ1bmN0aW9uIFljKGUsdCxuKXtpZihYZS5jdXJyZW50IT09UG4pdGhyb3cgRXJyb3IobCgxNjgpKTtqZShYZSx0KSxqZShkdCxuKX1mdW5jdGlvbiBYYyhlLHQsbil7dmFyIGk9ZS5zdGF0ZU5vZGU7aWYodD10LmNoaWxkQ29udGV4dFR5cGVzLHR5cGVvZiBpLmdldENoaWxkQ29udGV4dCE9ImZ1bmN0aW9uIilyZXR1cm4gbjtpPWkuZ2V0Q2hpbGRDb250ZXh0KCk7Zm9yKHZhciBvIGluIGkpaWYoIShvIGluIHQpKXRocm93IEVycm9yKGwoMTA4LEVlKGUpfHwiVW5rbm93biIsbykpO3JldHVybiBHKHt9LG4saSl9ZnVuY3Rpb24gcXMoZSl7cmV0dXJuIGU9KGU9ZS5zdGF0ZU5vZGUpJiZlLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWVyZ2VkQ2hpbGRDb250ZXh0fHxQbixZbj1YZS5jdXJyZW50LGplKFhlLGUpLGplKGR0LGR0LmN1cnJlbnQpLCEwfWZ1bmN0aW9uIFpjKGUsdCxuKXt2YXIgaT1lLnN0YXRlTm9kZTtpZighaSl0aHJvdyBFcnJvcihsKDE2OSkpO24/KGU9WGMoZSx0LFluKSxpLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWVyZ2VkQ2hpbGRDb250ZXh0PWUsUGUoZHQpLFBlKFhlKSxqZShYZSxlKSk6UGUoZHQpLGplKGR0LG4pfXZhciBsbj1udWxsLGJzPSExLEFvPSExO2Z1bmN0aW9uIGVkKGUpe2xuPT09bnVsbD9sbj1bZV06bG4ucHVzaChlKX1mdW5jdGlvbiBSbShlKXticz0hMCxlZChlKX1mdW5jdGlvbiBfbigpe2lmKCFBbyYmbG4hPT1udWxsKXtBbz0hMDt2YXIgZT0wLHQ9Q2U7dHJ5e3ZhciBuPWxuO2ZvcihDZT0xO2U8bi5sZW5ndGg7ZSsrKXt2YXIgaT1uW2VdO2RvIGk9aSghMCk7d2hpbGUoaSE9PW51bGwpfWxuPW51bGwsYnM9ITF9Y2F0Y2gobyl7dGhyb3cgbG4hPT1udWxsJiYobG49bG4uc2xpY2UoZSsxKSksbmMoc28sX24pLG99ZmluYWxseXtDZT10LEFvPSExfX1yZXR1cm4gbnVsbH12YXIgSXI9W10sTXI9MCxXcz1udWxsLFZzPTAsanQ9W10sTnQ9MCxYbj1udWxsLG9uPTEsYW49IiI7ZnVuY3Rpb24gWm4oZSx0KXtJcltNcisrXT1WcyxJcltNcisrXT1XcyxXcz1lLFZzPXR9ZnVuY3Rpb24gdGQoZSx0LG4pe2p0W050KytdPW9uLGp0W050KytdPWFuLGp0W050KytdPVhuLFhuPWU7dmFyIGk9b247ZT1hbjt2YXIgbz0zMi1JdChpKS0xO2kmPX4oMTw8byksbis9MTt2YXIgYT0zMi1JdCh0KStvO2lmKDMwPGEpe3ZhciBmPW8tbyU1O2E9KGkmKDE8PGYpLTEpLnRvU3RyaW5nKDMyKSxpPj49ZixvLT1mLG9uPTE8PDMyLUl0KHQpK298bjw8b3xpLGFuPWErZX1lbHNlIG9uPTE8PGF8bjw8b3xpLGFuPWV9ZnVuY3Rpb24gJG8oZSl7ZS5yZXR1cm4hPT1udWxsJiYoWm4oZSwxKSx0ZChlLDEsMCkpfWZ1bmN0aW9uIFVvKGUpe2Zvcig7ZT09PVdzOylXcz1JclstLU1yXSxJcltNcl09bnVsbCxWcz1JclstLU1yXSxJcltNcl09bnVsbDtmb3IoO2U9PT1YbjspWG49anRbLS1OdF0sanRbTnRdPW51bGwsYW49anRbLS1OdF0sanRbTnRdPW51bGwsb249anRbLS1OdF0sanRbTnRdPW51bGx9dmFyIHd0PW51bGwsU3Q9bnVsbCxUZT0hMSx6dD1udWxsO2Z1bmN0aW9uIG5kKGUsdCl7dmFyIG49VHQoNSxudWxsLG51bGwsMCk7bi5lbGVtZW50VHlwZT0iREVMRVRFRCIsbi5zdGF0ZU5vZGU9dCxuLnJldHVybj1lLHQ9ZS5kZWxldGlvbnMsdD09PW51bGw/KGUuZGVsZXRpb25zPVtuXSxlLmZsYWdzfD0xNik6dC5wdXNoKG4pfWZ1bmN0aW9uIHJkKGUsdCl7c3dpdGNoKGUudGFnKXtjYXNlIDU6dmFyIG49ZS50eXBlO3JldHVybiB0PXQubm9kZVR5cGUhPT0xfHxuLnRvTG93ZXJDYXNlKCkhPT10Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk/bnVsbDp0LHQhPT1udWxsPyhlLnN0YXRlTm9kZT10LHd0PWUsU3Q9Tm4odC5maXJzdENoaWxkKSwhMCk6ITE7Y2FzZSA2OnJldHVybiB0PWUucGVuZGluZ1Byb3BzPT09IiJ8fHQubm9kZVR5cGUhPT0zP251bGw6dCx0IT09bnVsbD8oZS5zdGF0ZU5vZGU9dCx3dD1lLFN0PW51bGwsITApOiExO2Nhc2UgMTM6cmV0dXJuIHQ9dC5ub2RlVHlwZSE9PTg/bnVsbDp0LHQhPT1udWxsPyhuPVhuIT09bnVsbD97aWQ6b24sb3ZlcmZsb3c6YW59Om51bGwsZS5tZW1vaXplZFN0YXRlPXtkZWh5ZHJhdGVkOnQsdHJlZUNvbnRleHQ6bixyZXRyeUxhbmU6MTA3Mzc0MTgyNH0sbj1UdCgxOCxudWxsLG51bGwsMCksbi5zdGF0ZU5vZGU9dCxuLnJldHVybj1lLGUuY2hpbGQ9bix3dD1lLFN0PW51bGwsITApOiExO2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIEJvKGUpe3JldHVybihlLm1vZGUmMSkhPT0wJiYoZS5mbGFncyYxMjgpPT09MH1mdW5jdGlvbiBIbyhlKXtpZihUZSl7dmFyIHQ9U3Q7aWYodCl7dmFyIG49dDtpZighcmQoZSx0KSl7aWYoQm8oZSkpdGhyb3cgRXJyb3IobCg0MTgpKTt0PU5uKG4ubmV4dFNpYmxpbmcpO3ZhciBpPXd0O3QmJnJkKGUsdCk/bmQoaSxuKTooZS5mbGFncz1lLmZsYWdzJi00MDk3fDIsVGU9ITEsd3Q9ZSl9fWVsc2V7aWYoQm8oZSkpdGhyb3cgRXJyb3IobCg0MTgpKTtlLmZsYWdzPWUuZmxhZ3MmLTQwOTd8MixUZT0hMSx3dD1lfX19ZnVuY3Rpb24gaWQoZSl7Zm9yKGU9ZS5yZXR1cm47ZSE9PW51bGwmJmUudGFnIT09NSYmZS50YWchPT0zJiZlLnRhZyE9PTEzOyllPWUucmV0dXJuO3d0PWV9ZnVuY3Rpb24gS3MoZSl7aWYoZSE9PXd0KXJldHVybiExO2lmKCFUZSlyZXR1cm4gaWQoZSksVGU9ITAsITE7dmFyIHQ7aWYoKHQ9ZS50YWchPT0zKSYmISh0PWUudGFnIT09NSkmJih0PWUudHlwZSx0PXQhPT0iaGVhZCImJnQhPT0iYm9keSImJiFPbyhlLnR5cGUsZS5tZW1vaXplZFByb3BzKSksdCYmKHQ9U3QpKXtpZihCbyhlKSl0aHJvdyBzZCgpLEVycm9yKGwoNDE4KSk7Zm9yKDt0OyluZChlLHQpLHQ9Tm4odC5uZXh0U2libGluZyl9aWYoaWQoZSksZS50YWc9PT0xMyl7aWYoZT1lLm1lbW9pemVkU3RhdGUsZT1lIT09bnVsbD9lLmRlaHlkcmF0ZWQ6bnVsbCwhZSl0aHJvdyBFcnJvcihsKDMxNykpO2U6e2ZvcihlPWUubmV4dFNpYmxpbmcsdD0wO2U7KXtpZihlLm5vZGVUeXBlPT09OCl7dmFyIG49ZS5kYXRhO2lmKG49PT0iLyQiKXtpZih0PT09MCl7U3Q9Tm4oZS5uZXh0U2libGluZyk7YnJlYWsgZX10LS19ZWxzZSBuIT09IiQiJiZuIT09IiQhIiYmbiE9PSIkPyJ8fHQrK31lPWUubmV4dFNpYmxpbmd9U3Q9bnVsbH19ZWxzZSBTdD13dD9ObihlLnN0YXRlTm9kZS5uZXh0U2libGluZyk6bnVsbDtyZXR1cm4hMH1mdW5jdGlvbiBzZCgpe2Zvcih2YXIgZT1TdDtlOyllPU5uKGUubmV4dFNpYmxpbmcpfWZ1bmN0aW9uIHpyKCl7U3Q9d3Q9bnVsbCxUZT0hMX1mdW5jdGlvbiBRbyhlKXt6dD09PW51bGw/enQ9W2VdOnp0LnB1c2goZSl9dmFyIFBtPUsuUmVhY3RDdXJyZW50QmF0Y2hDb25maWc7ZnVuY3Rpb24gQWkoZSx0LG4pe2lmKGU9bi5yZWYsZSE9PW51bGwmJnR5cGVvZiBlIT0iZnVuY3Rpb24iJiZ0eXBlb2YgZSE9Im9iamVjdCIpe2lmKG4uX293bmVyKXtpZihuPW4uX293bmVyLG4pe2lmKG4udGFnIT09MSl0aHJvdyBFcnJvcihsKDMwOSkpO3ZhciBpPW4uc3RhdGVOb2RlfWlmKCFpKXRocm93IEVycm9yKGwoMTQ3LGUpKTt2YXIgbz1pLGE9IiIrZTtyZXR1cm4gdCE9PW51bGwmJnQucmVmIT09bnVsbCYmdHlwZW9mIHQucmVmPT0iZnVuY3Rpb24iJiZ0LnJlZi5fc3RyaW5nUmVmPT09YT90LnJlZjoodD1mdW5jdGlvbihmKXt2YXIgZz1vLnJlZnM7Zj09PW51bGw/ZGVsZXRlIGdbYV06Z1thXT1mfSx0Ll9zdHJpbmdSZWY9YSx0KX1pZih0eXBlb2YgZSE9InN0cmluZyIpdGhyb3cgRXJyb3IobCgyODQpKTtpZighbi5fb3duZXIpdGhyb3cgRXJyb3IobCgyOTAsZSkpfXJldHVybiBlfWZ1bmN0aW9uIEdzKGUsdCl7dGhyb3cgZT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCksRXJyb3IobCgzMSxlPT09IltvYmplY3QgT2JqZWN0XSI/Im9iamVjdCB3aXRoIGtleXMgeyIrT2JqZWN0LmtleXModCkuam9pbigiLCAiKSsifSI6ZSkpfWZ1bmN0aW9uIGxkKGUpe3ZhciB0PWUuX2luaXQ7cmV0dXJuIHQoZS5fcGF5bG9hZCl9ZnVuY3Rpb24gb2QoZSl7ZnVuY3Rpb24gdChSLGspe2lmKGUpe3ZhciBQPVIuZGVsZXRpb25zO1A9PT1udWxsPyhSLmRlbGV0aW9ucz1ba10sUi5mbGFnc3w9MTYpOlAucHVzaChrKX19ZnVuY3Rpb24gbihSLGspe2lmKCFlKXJldHVybiBudWxsO2Zvcig7ayE9PW51bGw7KXQoUixrKSxrPWsuc2libGluZztyZXR1cm4gbnVsbH1mdW5jdGlvbiBpKFIsayl7Zm9yKFI9bmV3IE1hcDtrIT09bnVsbDspay5rZXkhPT1udWxsP1Iuc2V0KGsua2V5LGspOlIuc2V0KGsuaW5kZXgsayksaz1rLnNpYmxpbmc7cmV0dXJuIFJ9ZnVuY3Rpb24gbyhSLGspe3JldHVybiBSPXpuKFIsayksUi5pbmRleD0wLFIuc2libGluZz1udWxsLFJ9ZnVuY3Rpb24gYShSLGssUCl7cmV0dXJuIFIuaW5kZXg9UCxlPyhQPVIuYWx0ZXJuYXRlLFAhPT1udWxsPyhQPVAuaW5kZXgsUDxrPyhSLmZsYWdzfD0yLGspOlApOihSLmZsYWdzfD0yLGspKTooUi5mbGFnc3w9MTA0ODU3NixrKX1mdW5jdGlvbiBmKFIpe3JldHVybiBlJiZSLmFsdGVybmF0ZT09PW51bGwmJihSLmZsYWdzfD0yKSxSfWZ1bmN0aW9uIGcoUixrLFAsVSl7cmV0dXJuIGs9PT1udWxsfHxrLnRhZyE9PTY/KGs9RGEoUCxSLm1vZGUsVSksay5yZXR1cm49UixrKTooaz1vKGssUCksay5yZXR1cm49UixrKX1mdW5jdGlvbiB3KFIsayxQLFUpe3ZhciBYPVAudHlwZTtyZXR1cm4gWD09PWllP3ooUixrLFAucHJvcHMuY2hpbGRyZW4sVSxQLmtleSk6ayE9PW51bGwmJihrLmVsZW1lbnRUeXBlPT09WHx8dHlwZW9mIFg9PSJvYmplY3QiJiZYIT09bnVsbCYmWC4kJHR5cGVvZj09PUFlJiZsZChYKT09PWsudHlwZSk/KFU9byhrLFAucHJvcHMpLFUucmVmPUFpKFIsayxQKSxVLnJldHVybj1SLFUpOihVPXhsKFAudHlwZSxQLmtleSxQLnByb3BzLG51bGwsUi5tb2RlLFUpLFUucmVmPUFpKFIsayxQKSxVLnJldHVybj1SLFUpfWZ1bmN0aW9uIFQoUixrLFAsVSl7cmV0dXJuIGs9PT1udWxsfHxrLnRhZyE9PTR8fGsuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8hPT1QLmNvbnRhaW5lckluZm98fGsuc3RhdGVOb2RlLmltcGxlbWVudGF0aW9uIT09UC5pbXBsZW1lbnRhdGlvbj8oaz1JYShQLFIubW9kZSxVKSxrLnJldHVybj1SLGspOihrPW8oayxQLmNoaWxkcmVufHxbXSksay5yZXR1cm49UixrKX1mdW5jdGlvbiB6KFIsayxQLFUsWCl7cmV0dXJuIGs9PT1udWxsfHxrLnRhZyE9PTc/KGs9b3IoUCxSLm1vZGUsVSxYKSxrLnJldHVybj1SLGspOihrPW8oayxQKSxrLnJldHVybj1SLGspfWZ1bmN0aW9uIEEoUixrLFApe2lmKHR5cGVvZiBrPT0ic3RyaW5nIiYmayE9PSIifHx0eXBlb2Ygaz09Im51bWJlciIpcmV0dXJuIGs9RGEoIiIrayxSLm1vZGUsUCksay5yZXR1cm49UixrO2lmKHR5cGVvZiBrPT0ib2JqZWN0IiYmayE9PW51bGwpe3N3aXRjaChrLiQkdHlwZW9mKXtjYXNlIEI6cmV0dXJuIFA9eGwoay50eXBlLGsua2V5LGsucHJvcHMsbnVsbCxSLm1vZGUsUCksUC5yZWY9QWkoUixudWxsLGspLFAucmV0dXJuPVIsUDtjYXNlIHNlOnJldHVybiBrPUlhKGssUi5tb2RlLFApLGsucmV0dXJuPVIsaztjYXNlIEFlOnZhciBVPWsuX2luaXQ7cmV0dXJuIEEoUixVKGsuX3BheWxvYWQpLFApfWlmKGhpKGspfHxuZShrKSlyZXR1cm4gaz1vcihrLFIubW9kZSxQLG51bGwpLGsucmV0dXJuPVIsaztHcyhSLGspfXJldHVybiBudWxsfWZ1bmN0aW9uIEQoUixrLFAsVSl7dmFyIFg9ayE9PW51bGw/ay5rZXk6bnVsbDtpZih0eXBlb2YgUD09InN0cmluZyImJlAhPT0iInx8dHlwZW9mIFA9PSJudW1iZXIiKXJldHVybiBYIT09bnVsbD9udWxsOmcoUixrLCIiK1AsVSk7aWYodHlwZW9mIFA9PSJvYmplY3QiJiZQIT09bnVsbCl7c3dpdGNoKFAuJCR0eXBlb2Ype2Nhc2UgQjpyZXR1cm4gUC5rZXk9PT1YP3coUixrLFAsVSk6bnVsbDtjYXNlIHNlOnJldHVybiBQLmtleT09PVg/VChSLGssUCxVKTpudWxsO2Nhc2UgQWU6cmV0dXJuIFg9UC5faW5pdCxEKFIsayxYKFAuX3BheWxvYWQpLFUpfWlmKGhpKFApfHxuZShQKSlyZXR1cm4gWCE9PW51bGw/bnVsbDp6KFIsayxQLFUsbnVsbCk7R3MoUixQKX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBXKFIsayxQLFUsWCl7aWYodHlwZW9mIFU9PSJzdHJpbmciJiZVIT09IiJ8fHR5cGVvZiBVPT0ibnVtYmVyIilyZXR1cm4gUj1SLmdldChQKXx8bnVsbCxnKGssUiwiIitVLFgpO2lmKHR5cGVvZiBVPT0ib2JqZWN0IiYmVSE9PW51bGwpe3N3aXRjaChVLiQkdHlwZW9mKXtjYXNlIEI6cmV0dXJuIFI9Ui5nZXQoVS5rZXk9PT1udWxsP1A6VS5rZXkpfHxudWxsLHcoayxSLFUsWCk7Y2FzZSBzZTpyZXR1cm4gUj1SLmdldChVLmtleT09PW51bGw/UDpVLmtleSl8fG51bGwsVChrLFIsVSxYKTtjYXNlIEFlOnZhciBlZT1VLl9pbml0O3JldHVybiBXKFIsayxQLGVlKFUuX3BheWxvYWQpLFgpfWlmKGhpKFUpfHxuZShVKSlyZXR1cm4gUj1SLmdldChQKXx8bnVsbCx6KGssUixVLFgsbnVsbCk7R3MoayxVKX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBKKFIsayxQLFUpe2Zvcih2YXIgWD1udWxsLGVlPW51bGwsdGU9ayxyZT1rPTAsR2U9bnVsbDt0ZSE9PW51bGwmJnJlPFAubGVuZ3RoO3JlKyspe3RlLmluZGV4PnJlPyhHZT10ZSx0ZT1udWxsKTpHZT10ZS5zaWJsaW5nO3ZhciB4ZT1EKFIsdGUsUFtyZV0sVSk7aWYoeGU9PT1udWxsKXt0ZT09PW51bGwmJih0ZT1HZSk7YnJlYWt9ZSYmdGUmJnhlLmFsdGVybmF0ZT09PW51bGwmJnQoUix0ZSksaz1hKHhlLGsscmUpLGVlPT09bnVsbD9YPXhlOmVlLnNpYmxpbmc9eGUsZWU9eGUsdGU9R2V9aWYocmU9PT1QLmxlbmd0aClyZXR1cm4gbihSLHRlKSxUZSYmWm4oUixyZSksWDtpZih0ZT09PW51bGwpe2Zvcig7cmU8UC5sZW5ndGg7cmUrKyl0ZT1BKFIsUFtyZV0sVSksdGUhPT1udWxsJiYoaz1hKHRlLGsscmUpLGVlPT09bnVsbD9YPXRlOmVlLnNpYmxpbmc9dGUsZWU9dGUpO3JldHVybiBUZSYmWm4oUixyZSksWH1mb3IodGU9aShSLHRlKTtyZTxQLmxlbmd0aDtyZSsrKUdlPVcodGUsUixyZSxQW3JlXSxVKSxHZSE9PW51bGwmJihlJiZHZS5hbHRlcm5hdGUhPT1udWxsJiZ0ZS5kZWxldGUoR2Uua2V5PT09bnVsbD9yZTpHZS5rZXkpLGs9YShHZSxrLHJlKSxlZT09PW51bGw/WD1HZTplZS5zaWJsaW5nPUdlLGVlPUdlKTtyZXR1cm4gZSYmdGUuZm9yRWFjaChmdW5jdGlvbihBbil7cmV0dXJuIHQoUixBbil9KSxUZSYmWm4oUixyZSksWH1mdW5jdGlvbiBZKFIsayxQLFUpe3ZhciBYPW5lKFApO2lmKHR5cGVvZiBYIT0iZnVuY3Rpb24iKXRocm93IEVycm9yKGwoMTUwKSk7aWYoUD1YLmNhbGwoUCksUD09bnVsbCl0aHJvdyBFcnJvcihsKDE1MSkpO2Zvcih2YXIgZWU9WD1udWxsLHRlPWsscmU9az0wLEdlPW51bGwseGU9UC5uZXh0KCk7dGUhPT1udWxsJiYheGUuZG9uZTtyZSsrLHhlPVAubmV4dCgpKXt0ZS5pbmRleD5yZT8oR2U9dGUsdGU9bnVsbCk6R2U9dGUuc2libGluZzt2YXIgQW49RChSLHRlLHhlLnZhbHVlLFUpO2lmKEFuPT09bnVsbCl7dGU9PT1udWxsJiYodGU9R2UpO2JyZWFrfWUmJnRlJiZBbi5hbHRlcm5hdGU9PT1udWxsJiZ0KFIsdGUpLGs9YShBbixrLHJlKSxlZT09PW51bGw/WD1BbjplZS5zaWJsaW5nPUFuLGVlPUFuLHRlPUdlfWlmKHhlLmRvbmUpcmV0dXJuIG4oUix0ZSksVGUmJlpuKFIscmUpLFg7aWYodGU9PT1udWxsKXtmb3IoOyF4ZS5kb25lO3JlKysseGU9UC5uZXh0KCkpeGU9QShSLHhlLnZhbHVlLFUpLHhlIT09bnVsbCYmKGs9YSh4ZSxrLHJlKSxlZT09PW51bGw/WD14ZTplZS5zaWJsaW5nPXhlLGVlPXhlKTtyZXR1cm4gVGUmJlpuKFIscmUpLFh9Zm9yKHRlPWkoUix0ZSk7IXhlLmRvbmU7cmUrKyx4ZT1QLm5leHQoKSl4ZT1XKHRlLFIscmUseGUudmFsdWUsVSkseGUhPT1udWxsJiYoZSYmeGUuYWx0ZXJuYXRlIT09bnVsbCYmdGUuZGVsZXRlKHhlLmtleT09PW51bGw/cmU6eGUua2V5KSxrPWEoeGUsayxyZSksZWU9PT1udWxsP1g9eGU6ZWUuc2libGluZz14ZSxlZT14ZSk7cmV0dXJuIGUmJnRlLmZvckVhY2goZnVuY3Rpb24ob2cpe3JldHVybiB0KFIsb2cpfSksVGUmJlpuKFIscmUpLFh9ZnVuY3Rpb24gVWUoUixrLFAsVSl7aWYodHlwZW9mIFA9PSJvYmplY3QiJiZQIT09bnVsbCYmUC50eXBlPT09aWUmJlAua2V5PT09bnVsbCYmKFA9UC5wcm9wcy5jaGlsZHJlbiksdHlwZW9mIFA9PSJvYmplY3QiJiZQIT09bnVsbCl7c3dpdGNoKFAuJCR0eXBlb2Ype2Nhc2UgQjplOntmb3IodmFyIFg9UC5rZXksZWU9aztlZSE9PW51bGw7KXtpZihlZS5rZXk9PT1YKXtpZihYPVAudHlwZSxYPT09aWUpe2lmKGVlLnRhZz09PTcpe24oUixlZS5zaWJsaW5nKSxrPW8oZWUsUC5wcm9wcy5jaGlsZHJlbiksay5yZXR1cm49UixSPWs7YnJlYWsgZX19ZWxzZSBpZihlZS5lbGVtZW50VHlwZT09PVh8fHR5cGVvZiBYPT0ib2JqZWN0IiYmWCE9PW51bGwmJlguJCR0eXBlb2Y9PT1BZSYmbGQoWCk9PT1lZS50eXBlKXtuKFIsZWUuc2libGluZyksaz1vKGVlLFAucHJvcHMpLGsucmVmPUFpKFIsZWUsUCksay5yZXR1cm49UixSPWs7YnJlYWsgZX1uKFIsZWUpO2JyZWFrfWVsc2UgdChSLGVlKTtlZT1lZS5zaWJsaW5nfVAudHlwZT09PWllPyhrPW9yKFAucHJvcHMuY2hpbGRyZW4sUi5tb2RlLFUsUC5rZXkpLGsucmV0dXJuPVIsUj1rKTooVT14bChQLnR5cGUsUC5rZXksUC5wcm9wcyxudWxsLFIubW9kZSxVKSxVLnJlZj1BaShSLGssUCksVS5yZXR1cm49UixSPVUpfXJldHVybiBmKFIpO2Nhc2Ugc2U6ZTp7Zm9yKGVlPVAua2V5O2shPT1udWxsOyl7aWYoay5rZXk9PT1lZSlpZihrLnRhZz09PTQmJmsuc3RhdGVOb2RlLmNvbnRhaW5lckluZm89PT1QLmNvbnRhaW5lckluZm8mJmsuc3RhdGVOb2RlLmltcGxlbWVudGF0aW9uPT09UC5pbXBsZW1lbnRhdGlvbil7bihSLGsuc2libGluZyksaz1vKGssUC5jaGlsZHJlbnx8W10pLGsucmV0dXJuPVIsUj1rO2JyZWFrIGV9ZWxzZXtuKFIsayk7YnJlYWt9ZWxzZSB0KFIsayk7az1rLnNpYmxpbmd9az1JYShQLFIubW9kZSxVKSxrLnJldHVybj1SLFI9a31yZXR1cm4gZihSKTtjYXNlIEFlOnJldHVybiBlZT1QLl9pbml0LFVlKFIsayxlZShQLl9wYXlsb2FkKSxVKX1pZihoaShQKSlyZXR1cm4gSihSLGssUCxVKTtpZihuZShQKSlyZXR1cm4gWShSLGssUCxVKTtHcyhSLFApfXJldHVybiB0eXBlb2YgUD09InN0cmluZyImJlAhPT0iInx8dHlwZW9mIFA9PSJudW1iZXIiPyhQPSIiK1AsayE9PW51bGwmJmsudGFnPT09Nj8obihSLGsuc2libGluZyksaz1vKGssUCksay5yZXR1cm49UixSPWspOihuKFIsayksaz1EYShQLFIubW9kZSxVKSxrLnJldHVybj1SLFI9ayksZihSKSk6bihSLGspfXJldHVybiBVZX12YXIgQXI9b2QoITApLGFkPW9kKCExKSxKcz1SbihudWxsKSxZcz1udWxsLCRyPW51bGwscW89bnVsbDtmdW5jdGlvbiBibygpe3FvPSRyPVlzPW51bGx9ZnVuY3Rpb24gV28oZSl7dmFyIHQ9SnMuY3VycmVudDtQZShKcyksZS5fY3VycmVudFZhbHVlPXR9ZnVuY3Rpb24gVm8oZSx0LG4pe2Zvcig7ZSE9PW51bGw7KXt2YXIgaT1lLmFsdGVybmF0ZTtpZigoZS5jaGlsZExhbmVzJnQpIT09dD8oZS5jaGlsZExhbmVzfD10LGkhPT1udWxsJiYoaS5jaGlsZExhbmVzfD10KSk6aSE9PW51bGwmJihpLmNoaWxkTGFuZXMmdCkhPT10JiYoaS5jaGlsZExhbmVzfD10KSxlPT09bilicmVhaztlPWUucmV0dXJufX1mdW5jdGlvbiBVcihlLHQpe1lzPWUscW89JHI9bnVsbCxlPWUuZGVwZW5kZW5jaWVzLGUhPT1udWxsJiZlLmZpcnN0Q29udGV4dCE9PW51bGwmJigoZS5sYW5lcyZ0KSE9PTAmJihodD0hMCksZS5maXJzdENvbnRleHQ9bnVsbCl9ZnVuY3Rpb24gUnQoZSl7dmFyIHQ9ZS5fY3VycmVudFZhbHVlO2lmKHFvIT09ZSlpZihlPXtjb250ZXh0OmUsbWVtb2l6ZWRWYWx1ZTp0LG5leHQ6bnVsbH0sJHI9PT1udWxsKXtpZihZcz09PW51bGwpdGhyb3cgRXJyb3IobCgzMDgpKTskcj1lLFlzLmRlcGVuZGVuY2llcz17bGFuZXM6MCxmaXJzdENvbnRleHQ6ZX19ZWxzZSAkcj0kci5uZXh0PWU7cmV0dXJuIHR9dmFyIGVyPW51bGw7ZnVuY3Rpb24gS28oZSl7ZXI9PT1udWxsP2VyPVtlXTplci5wdXNoKGUpfWZ1bmN0aW9uIHVkKGUsdCxuLGkpe3ZhciBvPXQuaW50ZXJsZWF2ZWQ7cmV0dXJuIG89PT1udWxsPyhuLm5leHQ9bixLbyh0KSk6KG4ubmV4dD1vLm5leHQsby5uZXh0PW4pLHQuaW50ZXJsZWF2ZWQ9bix1bihlLGkpfWZ1bmN0aW9uIHVuKGUsdCl7ZS5sYW5lc3w9dDt2YXIgbj1lLmFsdGVybmF0ZTtmb3IobiE9PW51bGwmJihuLmxhbmVzfD10KSxuPWUsZT1lLnJldHVybjtlIT09bnVsbDspZS5jaGlsZExhbmVzfD10LG49ZS5hbHRlcm5hdGUsbiE9PW51bGwmJihuLmNoaWxkTGFuZXN8PXQpLG49ZSxlPWUucmV0dXJuO3JldHVybiBuLnRhZz09PTM/bi5zdGF0ZU5vZGU6bnVsbH12YXIgVG49ITE7ZnVuY3Rpb24gR28oZSl7ZS51cGRhdGVRdWV1ZT17YmFzZVN0YXRlOmUubWVtb2l6ZWRTdGF0ZSxmaXJzdEJhc2VVcGRhdGU6bnVsbCxsYXN0QmFzZVVwZGF0ZTpudWxsLHNoYXJlZDp7cGVuZGluZzpudWxsLGludGVybGVhdmVkOm51bGwsbGFuZXM6MH0sZWZmZWN0czpudWxsfX1mdW5jdGlvbiBjZChlLHQpe2U9ZS51cGRhdGVRdWV1ZSx0LnVwZGF0ZVF1ZXVlPT09ZSYmKHQudXBkYXRlUXVldWU9e2Jhc2VTdGF0ZTplLmJhc2VTdGF0ZSxmaXJzdEJhc2VVcGRhdGU6ZS5maXJzdEJhc2VVcGRhdGUsbGFzdEJhc2VVcGRhdGU6ZS5sYXN0QmFzZVVwZGF0ZSxzaGFyZWQ6ZS5zaGFyZWQsZWZmZWN0czplLmVmZmVjdHN9KX1mdW5jdGlvbiBjbihlLHQpe3JldHVybntldmVudFRpbWU6ZSxsYW5lOnQsdGFnOjAscGF5bG9hZDpudWxsLGNhbGxiYWNrOm51bGwsbmV4dDpudWxsfX1mdW5jdGlvbiBMbihlLHQsbil7dmFyIGk9ZS51cGRhdGVRdWV1ZTtpZihpPT09bnVsbClyZXR1cm4gbnVsbDtpZihpPWkuc2hhcmVkLChtZSYyKSE9PTApe3ZhciBvPWkucGVuZGluZztyZXR1cm4gbz09PW51bGw/dC5uZXh0PXQ6KHQubmV4dD1vLm5leHQsby5uZXh0PXQpLGkucGVuZGluZz10LHVuKGUsbil9cmV0dXJuIG89aS5pbnRlcmxlYXZlZCxvPT09bnVsbD8odC5uZXh0PXQsS28oaSkpOih0Lm5leHQ9by5uZXh0LG8ubmV4dD10KSxpLmludGVybGVhdmVkPXQsdW4oZSxuKX1mdW5jdGlvbiBYcyhlLHQsbil7aWYodD10LnVwZGF0ZVF1ZXVlLHQhPT1udWxsJiYodD10LnNoYXJlZCwobiY0MTk0MjQwKSE9PTApKXt2YXIgaT10LmxhbmVzO2kmPWUucGVuZGluZ0xhbmVzLG58PWksdC5sYW5lcz1uLGFvKGUsbil9fWZ1bmN0aW9uIGRkKGUsdCl7dmFyIG49ZS51cGRhdGVRdWV1ZSxpPWUuYWx0ZXJuYXRlO2lmKGkhPT1udWxsJiYoaT1pLnVwZGF0ZVF1ZXVlLG49PT1pKSl7dmFyIG89bnVsbCxhPW51bGw7aWYobj1uLmZpcnN0QmFzZVVwZGF0ZSxuIT09bnVsbCl7ZG97dmFyIGY9e2V2ZW50VGltZTpuLmV2ZW50VGltZSxsYW5lOm4ubGFuZSx0YWc6bi50YWcscGF5bG9hZDpuLnBheWxvYWQsY2FsbGJhY2s6bi5jYWxsYmFjayxuZXh0Om51bGx9O2E9PT1udWxsP289YT1mOmE9YS5uZXh0PWYsbj1uLm5leHR9d2hpbGUobiE9PW51bGwpO2E9PT1udWxsP289YT10OmE9YS5uZXh0PXR9ZWxzZSBvPWE9dDtuPXtiYXNlU3RhdGU6aS5iYXNlU3RhdGUsZmlyc3RCYXNlVXBkYXRlOm8sbGFzdEJhc2VVcGRhdGU6YSxzaGFyZWQ6aS5zaGFyZWQsZWZmZWN0czppLmVmZmVjdHN9LGUudXBkYXRlUXVldWU9bjtyZXR1cm59ZT1uLmxhc3RCYXNlVXBkYXRlLGU9PT1udWxsP24uZmlyc3RCYXNlVXBkYXRlPXQ6ZS5uZXh0PXQsbi5sYXN0QmFzZVVwZGF0ZT10fWZ1bmN0aW9uIFpzKGUsdCxuLGkpe3ZhciBvPWUudXBkYXRlUXVldWU7VG49ITE7dmFyIGE9by5maXJzdEJhc2VVcGRhdGUsZj1vLmxhc3RCYXNlVXBkYXRlLGc9by5zaGFyZWQucGVuZGluZztpZihnIT09bnVsbCl7by5zaGFyZWQucGVuZGluZz1udWxsO3ZhciB3PWcsVD13Lm5leHQ7dy5uZXh0PW51bGwsZj09PW51bGw/YT1UOmYubmV4dD1ULGY9dzt2YXIgej1lLmFsdGVybmF0ZTt6IT09bnVsbCYmKHo9ei51cGRhdGVRdWV1ZSxnPXoubGFzdEJhc2VVcGRhdGUsZyE9PWYmJihnPT09bnVsbD96LmZpcnN0QmFzZVVwZGF0ZT1UOmcubmV4dD1ULHoubGFzdEJhc2VVcGRhdGU9dykpfWlmKGEhPT1udWxsKXt2YXIgQT1vLmJhc2VTdGF0ZTtmPTAsej1UPXc9bnVsbCxnPWE7ZG97dmFyIEQ9Zy5sYW5lLFc9Zy5ldmVudFRpbWU7aWYoKGkmRCk9PT1EKXt6IT09bnVsbCYmKHo9ei5uZXh0PXtldmVudFRpbWU6VyxsYW5lOjAsdGFnOmcudGFnLHBheWxvYWQ6Zy5wYXlsb2FkLGNhbGxiYWNrOmcuY2FsbGJhY2ssbmV4dDpudWxsfSk7ZTp7dmFyIEo9ZSxZPWc7c3dpdGNoKEQ9dCxXPW4sWS50YWcpe2Nhc2UgMTppZihKPVkucGF5bG9hZCx0eXBlb2YgSj09ImZ1bmN0aW9uIil7QT1KLmNhbGwoVyxBLEQpO2JyZWFrIGV9QT1KO2JyZWFrIGU7Y2FzZSAzOkouZmxhZ3M9Si5mbGFncyYtNjU1Mzd8MTI4O2Nhc2UgMDppZihKPVkucGF5bG9hZCxEPXR5cGVvZiBKPT0iZnVuY3Rpb24iP0ouY2FsbChXLEEsRCk6SixEPT1udWxsKWJyZWFrIGU7QT1HKHt9LEEsRCk7YnJlYWsgZTtjYXNlIDI6VG49ITB9fWcuY2FsbGJhY2shPT1udWxsJiZnLmxhbmUhPT0wJiYoZS5mbGFnc3w9NjQsRD1vLmVmZmVjdHMsRD09PW51bGw/by5lZmZlY3RzPVtnXTpELnB1c2goZykpfWVsc2UgVz17ZXZlbnRUaW1lOlcsbGFuZTpELHRhZzpnLnRhZyxwYXlsb2FkOmcucGF5bG9hZCxjYWxsYmFjazpnLmNhbGxiYWNrLG5leHQ6bnVsbH0sej09PW51bGw/KFQ9ej1XLHc9QSk6ej16Lm5leHQ9VyxmfD1EO2lmKGc9Zy5uZXh0LGc9PT1udWxsKXtpZihnPW8uc2hhcmVkLnBlbmRpbmcsZz09PW51bGwpYnJlYWs7RD1nLGc9RC5uZXh0LEQubmV4dD1udWxsLG8ubGFzdEJhc2VVcGRhdGU9RCxvLnNoYXJlZC5wZW5kaW5nPW51bGx9fXdoaWxlKCEwKTtpZih6PT09bnVsbCYmKHc9QSksby5iYXNlU3RhdGU9dyxvLmZpcnN0QmFzZVVwZGF0ZT1ULG8ubGFzdEJhc2VVcGRhdGU9eix0PW8uc2hhcmVkLmludGVybGVhdmVkLHQhPT1udWxsKXtvPXQ7ZG8gZnw9by5sYW5lLG89by5uZXh0O3doaWxlKG8hPT10KX1lbHNlIGE9PT1udWxsJiYoby5zaGFyZWQubGFuZXM9MCk7cnJ8PWYsZS5sYW5lcz1mLGUubWVtb2l6ZWRTdGF0ZT1BfX1mdW5jdGlvbiBmZChlLHQsbil7aWYoZT10LmVmZmVjdHMsdC5lZmZlY3RzPW51bGwsZSE9PW51bGwpZm9yKHQ9MDt0PGUubGVuZ3RoO3QrKyl7dmFyIGk9ZVt0XSxvPWkuY2FsbGJhY2s7aWYobyE9PW51bGwpe2lmKGkuY2FsbGJhY2s9bnVsbCxpPW4sdHlwZW9mIG8hPSJmdW5jdGlvbiIpdGhyb3cgRXJyb3IobCgxOTEsbykpO28uY2FsbChpKX19fXZhciAkaT17fSxKdD1SbigkaSksVWk9Um4oJGkpLEJpPVJuKCRpKTtmdW5jdGlvbiB0cihlKXtpZihlPT09JGkpdGhyb3cgRXJyb3IobCgxNzQpKTtyZXR1cm4gZX1mdW5jdGlvbiBKbyhlLHQpe3N3aXRjaChqZShCaSx0KSxqZShVaSxlKSxqZShKdCwkaSksZT10Lm5vZGVUeXBlLGUpe2Nhc2UgOTpjYXNlIDExOnQ9KHQ9dC5kb2N1bWVudEVsZW1lbnQpP3QubmFtZXNwYWNlVVJJOkpsKG51bGwsIiIpO2JyZWFrO2RlZmF1bHQ6ZT1lPT09OD90LnBhcmVudE5vZGU6dCx0PWUubmFtZXNwYWNlVVJJfHxudWxsLGU9ZS50YWdOYW1lLHQ9SmwodCxlKX1QZShKdCksamUoSnQsdCl9ZnVuY3Rpb24gQnIoKXtQZShKdCksUGUoVWkpLFBlKEJpKX1mdW5jdGlvbiBoZChlKXt0cihCaS5jdXJyZW50KTt2YXIgdD10cihKdC5jdXJyZW50KSxuPUpsKHQsZS50eXBlKTt0IT09biYmKGplKFVpLGUpLGplKEp0LG4pKX1mdW5jdGlvbiBZbyhlKXtVaS5jdXJyZW50PT09ZSYmKFBlKEp0KSxQZShVaSkpfXZhciBPZT1SbigwKTtmdW5jdGlvbiBlbChlKXtmb3IodmFyIHQ9ZTt0IT09bnVsbDspe2lmKHQudGFnPT09MTMpe3ZhciBuPXQubWVtb2l6ZWRTdGF0ZTtpZihuIT09bnVsbCYmKG49bi5kZWh5ZHJhdGVkLG49PT1udWxsfHxuLmRhdGE9PT0iJD8ifHxuLmRhdGE9PT0iJCEiKSlyZXR1cm4gdH1lbHNlIGlmKHQudGFnPT09MTkmJnQubWVtb2l6ZWRQcm9wcy5yZXZlYWxPcmRlciE9PXZvaWQgMCl7aWYoKHQuZmxhZ3MmMTI4KSE9PTApcmV0dXJuIHR9ZWxzZSBpZih0LmNoaWxkIT09bnVsbCl7dC5jaGlsZC5yZXR1cm49dCx0PXQuY2hpbGQ7Y29udGludWV9aWYodD09PWUpYnJlYWs7Zm9yKDt0LnNpYmxpbmc9PT1udWxsOyl7aWYodC5yZXR1cm49PT1udWxsfHx0LnJldHVybj09PWUpcmV0dXJuIG51bGw7dD10LnJldHVybn10LnNpYmxpbmcucmV0dXJuPXQucmV0dXJuLHQ9dC5zaWJsaW5nfXJldHVybiBudWxsfXZhciBYbz1bXTtmdW5jdGlvbiBabygpe2Zvcih2YXIgZT0wO2U8WG8ubGVuZ3RoO2UrKylYb1tlXS5fd29ya0luUHJvZ3Jlc3NWZXJzaW9uUHJpbWFyeT1udWxsO1hvLmxlbmd0aD0wfXZhciB0bD1LLlJlYWN0Q3VycmVudERpc3BhdGNoZXIsZWE9Sy5SZWFjdEN1cnJlbnRCYXRjaENvbmZpZyxucj0wLERlPW51bGwsUWU9bnVsbCxWZT1udWxsLG5sPSExLEhpPSExLFFpPTAsX209MDtmdW5jdGlvbiBaZSgpe3Rocm93IEVycm9yKGwoMzIxKSl9ZnVuY3Rpb24gdGEoZSx0KXtpZih0PT09bnVsbClyZXR1cm4hMTtmb3IodmFyIG49MDtuPHQubGVuZ3RoJiZuPGUubGVuZ3RoO24rKylpZighTXQoZVtuXSx0W25dKSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBuYShlLHQsbixpLG8sYSl7aWYobnI9YSxEZT10LHQubWVtb2l6ZWRTdGF0ZT1udWxsLHQudXBkYXRlUXVldWU9bnVsbCx0LmxhbmVzPTAsdGwuY3VycmVudD1lPT09bnVsbHx8ZS5tZW1vaXplZFN0YXRlPT09bnVsbD9PbTpEbSxlPW4oaSxvKSxIaSl7YT0wO2Rve2lmKEhpPSExLFFpPTAsMjU8PWEpdGhyb3cgRXJyb3IobCgzMDEpKTthKz0xLFZlPVFlPW51bGwsdC51cGRhdGVRdWV1ZT1udWxsLHRsLmN1cnJlbnQ9SW0sZT1uKGksbyl9d2hpbGUoSGkpfWlmKHRsLmN1cnJlbnQ9c2wsdD1RZSE9PW51bGwmJlFlLm5leHQhPT1udWxsLG5yPTAsVmU9UWU9RGU9bnVsbCxubD0hMSx0KXRocm93IEVycm9yKGwoMzAwKSk7cmV0dXJuIGV9ZnVuY3Rpb24gcmEoKXt2YXIgZT1RaSE9PTA7cmV0dXJuIFFpPTAsZX1mdW5jdGlvbiBZdCgpe3ZhciBlPXttZW1vaXplZFN0YXRlOm51bGwsYmFzZVN0YXRlOm51bGwsYmFzZVF1ZXVlOm51bGwscXVldWU6bnVsbCxuZXh0Om51bGx9O3JldHVybiBWZT09PW51bGw/RGUubWVtb2l6ZWRTdGF0ZT1WZT1lOlZlPVZlLm5leHQ9ZSxWZX1mdW5jdGlvbiBQdCgpe2lmKFFlPT09bnVsbCl7dmFyIGU9RGUuYWx0ZXJuYXRlO2U9ZSE9PW51bGw/ZS5tZW1vaXplZFN0YXRlOm51bGx9ZWxzZSBlPVFlLm5leHQ7dmFyIHQ9VmU9PT1udWxsP0RlLm1lbW9pemVkU3RhdGU6VmUubmV4dDtpZih0IT09bnVsbClWZT10LFFlPWU7ZWxzZXtpZihlPT09bnVsbCl0aHJvdyBFcnJvcihsKDMxMCkpO1FlPWUsZT17bWVtb2l6ZWRTdGF0ZTpRZS5tZW1vaXplZFN0YXRlLGJhc2VTdGF0ZTpRZS5iYXNlU3RhdGUsYmFzZVF1ZXVlOlFlLmJhc2VRdWV1ZSxxdWV1ZTpRZS5xdWV1ZSxuZXh0Om51bGx9LFZlPT09bnVsbD9EZS5tZW1vaXplZFN0YXRlPVZlPWU6VmU9VmUubmV4dD1lfXJldHVybiBWZX1mdW5jdGlvbiBxaShlLHQpe3JldHVybiB0eXBlb2YgdD09ImZ1bmN0aW9uIj90KGUpOnR9ZnVuY3Rpb24gaWEoZSl7dmFyIHQ9UHQoKSxuPXQucXVldWU7aWYobj09PW51bGwpdGhyb3cgRXJyb3IobCgzMTEpKTtuLmxhc3RSZW5kZXJlZFJlZHVjZXI9ZTt2YXIgaT1RZSxvPWkuYmFzZVF1ZXVlLGE9bi5wZW5kaW5nO2lmKGEhPT1udWxsKXtpZihvIT09bnVsbCl7dmFyIGY9by5uZXh0O28ubmV4dD1hLm5leHQsYS5uZXh0PWZ9aS5iYXNlUXVldWU9bz1hLG4ucGVuZGluZz1udWxsfWlmKG8hPT1udWxsKXthPW8ubmV4dCxpPWkuYmFzZVN0YXRlO3ZhciBnPWY9bnVsbCx3PW51bGwsVD1hO2Rve3ZhciB6PVQubGFuZTtpZigobnImeik9PT16KXchPT1udWxsJiYodz13Lm5leHQ9e2xhbmU6MCxhY3Rpb246VC5hY3Rpb24saGFzRWFnZXJTdGF0ZTpULmhhc0VhZ2VyU3RhdGUsZWFnZXJTdGF0ZTpULmVhZ2VyU3RhdGUsbmV4dDpudWxsfSksaT1ULmhhc0VhZ2VyU3RhdGU/VC5lYWdlclN0YXRlOmUoaSxULmFjdGlvbik7ZWxzZXt2YXIgQT17bGFuZTp6LGFjdGlvbjpULmFjdGlvbixoYXNFYWdlclN0YXRlOlQuaGFzRWFnZXJTdGF0ZSxlYWdlclN0YXRlOlQuZWFnZXJTdGF0ZSxuZXh0Om51bGx9O3c9PT1udWxsPyhnPXc9QSxmPWkpOnc9dy5uZXh0PUEsRGUubGFuZXN8PXoscnJ8PXp9VD1ULm5leHR9d2hpbGUoVCE9PW51bGwmJlQhPT1hKTt3PT09bnVsbD9mPWk6dy5uZXh0PWcsTXQoaSx0Lm1lbW9pemVkU3RhdGUpfHwoaHQ9ITApLHQubWVtb2l6ZWRTdGF0ZT1pLHQuYmFzZVN0YXRlPWYsdC5iYXNlUXVldWU9dyxuLmxhc3RSZW5kZXJlZFN0YXRlPWl9aWYoZT1uLmludGVybGVhdmVkLGUhPT1udWxsKXtvPWU7ZG8gYT1vLmxhbmUsRGUubGFuZXN8PWEscnJ8PWEsbz1vLm5leHQ7d2hpbGUobyE9PWUpfWVsc2Ugbz09PW51bGwmJihuLmxhbmVzPTApO3JldHVyblt0Lm1lbW9pemVkU3RhdGUsbi5kaXNwYXRjaF19ZnVuY3Rpb24gc2EoZSl7dmFyIHQ9UHQoKSxuPXQucXVldWU7aWYobj09PW51bGwpdGhyb3cgRXJyb3IobCgzMTEpKTtuLmxhc3RSZW5kZXJlZFJlZHVjZXI9ZTt2YXIgaT1uLmRpc3BhdGNoLG89bi5wZW5kaW5nLGE9dC5tZW1vaXplZFN0YXRlO2lmKG8hPT1udWxsKXtuLnBlbmRpbmc9bnVsbDt2YXIgZj1vPW8ubmV4dDtkbyBhPWUoYSxmLmFjdGlvbiksZj1mLm5leHQ7d2hpbGUoZiE9PW8pO010KGEsdC5tZW1vaXplZFN0YXRlKXx8KGh0PSEwKSx0Lm1lbW9pemVkU3RhdGU9YSx0LmJhc2VRdWV1ZT09PW51bGwmJih0LmJhc2VTdGF0ZT1hKSxuLmxhc3RSZW5kZXJlZFN0YXRlPWF9cmV0dXJuW2EsaV19ZnVuY3Rpb24gcGQoKXt9ZnVuY3Rpb24gbWQoZSx0KXt2YXIgbj1EZSxpPVB0KCksbz10KCksYT0hTXQoaS5tZW1vaXplZFN0YXRlLG8pO2lmKGEmJihpLm1lbW9pemVkU3RhdGU9byxodD0hMCksaT1pLnF1ZXVlLGxhKHlkLmJpbmQobnVsbCxuLGksZSksW2VdKSxpLmdldFNuYXBzaG90IT09dHx8YXx8VmUhPT1udWxsJiZWZS5tZW1vaXplZFN0YXRlLnRhZyYxKXtpZihuLmZsYWdzfD0yMDQ4LGJpKDksdmQuYmluZChudWxsLG4saSxvLHQpLHZvaWQgMCxudWxsKSxLZT09PW51bGwpdGhyb3cgRXJyb3IobCgzNDkpKTsobnImMzApIT09MHx8Z2Qobix0LG8pfXJldHVybiBvfWZ1bmN0aW9uIGdkKGUsdCxuKXtlLmZsYWdzfD0xNjM4NCxlPXtnZXRTbmFwc2hvdDp0LHZhbHVlOm59LHQ9RGUudXBkYXRlUXVldWUsdD09PW51bGw/KHQ9e2xhc3RFZmZlY3Q6bnVsbCxzdG9yZXM6bnVsbH0sRGUudXBkYXRlUXVldWU9dCx0LnN0b3Jlcz1bZV0pOihuPXQuc3RvcmVzLG49PT1udWxsP3Quc3RvcmVzPVtlXTpuLnB1c2goZSkpfWZ1bmN0aW9uIHZkKGUsdCxuLGkpe3QudmFsdWU9bix0LmdldFNuYXBzaG90PWkseGQodCkmJndkKGUpfWZ1bmN0aW9uIHlkKGUsdCxuKXtyZXR1cm4gbihmdW5jdGlvbigpe3hkKHQpJiZ3ZChlKX0pfWZ1bmN0aW9uIHhkKGUpe3ZhciB0PWUuZ2V0U25hcHNob3Q7ZT1lLnZhbHVlO3RyeXt2YXIgbj10KCk7cmV0dXJuIU10KGUsbil9Y2F0Y2h7cmV0dXJuITB9fWZ1bmN0aW9uIHdkKGUpe3ZhciB0PXVuKGUsMSk7dCE9PW51bGwmJkJ0KHQsZSwxLC0xKX1mdW5jdGlvbiBTZChlKXt2YXIgdD1ZdCgpO3JldHVybiB0eXBlb2YgZT09ImZ1bmN0aW9uIiYmKGU9ZSgpKSx0Lm1lbW9pemVkU3RhdGU9dC5iYXNlU3RhdGU9ZSxlPXtwZW5kaW5nOm51bGwsaW50ZXJsZWF2ZWQ6bnVsbCxsYW5lczowLGRpc3BhdGNoOm51bGwsbGFzdFJlbmRlcmVkUmVkdWNlcjpxaSxsYXN0UmVuZGVyZWRTdGF0ZTplfSx0LnF1ZXVlPWUsZT1lLmRpc3BhdGNoPUZtLmJpbmQobnVsbCxEZSxlKSxbdC5tZW1vaXplZFN0YXRlLGVdfWZ1bmN0aW9uIGJpKGUsdCxuLGkpe3JldHVybiBlPXt0YWc6ZSxjcmVhdGU6dCxkZXN0cm95Om4sZGVwczppLG5leHQ6bnVsbH0sdD1EZS51cGRhdGVRdWV1ZSx0PT09bnVsbD8odD17bGFzdEVmZmVjdDpudWxsLHN0b3JlczpudWxsfSxEZS51cGRhdGVRdWV1ZT10LHQubGFzdEVmZmVjdD1lLm5leHQ9ZSk6KG49dC5sYXN0RWZmZWN0LG49PT1udWxsP3QubGFzdEVmZmVjdD1lLm5leHQ9ZTooaT1uLm5leHQsbi5uZXh0PWUsZS5uZXh0PWksdC5sYXN0RWZmZWN0PWUpKSxlfWZ1bmN0aW9uIGtkKCl7cmV0dXJuIFB0KCkubWVtb2l6ZWRTdGF0ZX1mdW5jdGlvbiBybChlLHQsbixpKXt2YXIgbz1ZdCgpO0RlLmZsYWdzfD1lLG8ubWVtb2l6ZWRTdGF0ZT1iaSgxfHQsbix2b2lkIDAsaT09PXZvaWQgMD9udWxsOmkpfWZ1bmN0aW9uIGlsKGUsdCxuLGkpe3ZhciBvPVB0KCk7aT1pPT09dm9pZCAwP251bGw6aTt2YXIgYT12b2lkIDA7aWYoUWUhPT1udWxsKXt2YXIgZj1RZS5tZW1vaXplZFN0YXRlO2lmKGE9Zi5kZXN0cm95LGkhPT1udWxsJiZ0YShpLGYuZGVwcykpe28ubWVtb2l6ZWRTdGF0ZT1iaSh0LG4sYSxpKTtyZXR1cm59fURlLmZsYWdzfD1lLG8ubWVtb2l6ZWRTdGF0ZT1iaSgxfHQsbixhLGkpfWZ1bmN0aW9uIENkKGUsdCl7cmV0dXJuIHJsKDgzOTA2NTYsOCxlLHQpfWZ1bmN0aW9uIGxhKGUsdCl7cmV0dXJuIGlsKDIwNDgsOCxlLHQpfWZ1bmN0aW9uIEVkKGUsdCl7cmV0dXJuIGlsKDQsMixlLHQpfWZ1bmN0aW9uIGpkKGUsdCl7cmV0dXJuIGlsKDQsNCxlLHQpfWZ1bmN0aW9uIE5kKGUsdCl7aWYodHlwZW9mIHQ9PSJmdW5jdGlvbiIpcmV0dXJuIGU9ZSgpLHQoZSksZnVuY3Rpb24oKXt0KG51bGwpfTtpZih0IT1udWxsKXJldHVybiBlPWUoKSx0LmN1cnJlbnQ9ZSxmdW5jdGlvbigpe3QuY3VycmVudD1udWxsfX1mdW5jdGlvbiBSZChlLHQsbil7cmV0dXJuIG49biE9bnVsbD9uLmNvbmNhdChbZV0pOm51bGwsaWwoNCw0LE5kLmJpbmQobnVsbCx0LGUpLG4pfWZ1bmN0aW9uIG9hKCl7fWZ1bmN0aW9uIFBkKGUsdCl7dmFyIG49UHQoKTt0PXQ9PT12b2lkIDA/bnVsbDp0O3ZhciBpPW4ubWVtb2l6ZWRTdGF0ZTtyZXR1cm4gaSE9PW51bGwmJnQhPT1udWxsJiZ0YSh0LGlbMV0pP2lbMF06KG4ubWVtb2l6ZWRTdGF0ZT1bZSx0XSxlKX1mdW5jdGlvbiBfZChlLHQpe3ZhciBuPVB0KCk7dD10PT09dm9pZCAwP251bGw6dDt2YXIgaT1uLm1lbW9pemVkU3RhdGU7cmV0dXJuIGkhPT1udWxsJiZ0IT09bnVsbCYmdGEodCxpWzFdKT9pWzBdOihlPWUoKSxuLm1lbW9pemVkU3RhdGU9W2UsdF0sZSl9ZnVuY3Rpb24gVGQoZSx0LG4pe3JldHVybihuciYyMSk9PT0wPyhlLmJhc2VTdGF0ZSYmKGUuYmFzZVN0YXRlPSExLGh0PSEwKSxlLm1lbW9pemVkU3RhdGU9bik6KE10KG4sdCl8fChuPWxjKCksRGUubGFuZXN8PW4scnJ8PW4sZS5iYXNlU3RhdGU9ITApLHQpfWZ1bmN0aW9uIFRtKGUsdCl7dmFyIG49Q2U7Q2U9biE9PTAmJjQ+bj9uOjQsZSghMCk7dmFyIGk9ZWEudHJhbnNpdGlvbjtlYS50cmFuc2l0aW9uPXt9O3RyeXtlKCExKSx0KCl9ZmluYWxseXtDZT1uLGVhLnRyYW5zaXRpb249aX19ZnVuY3Rpb24gTGQoKXtyZXR1cm4gUHQoKS5tZW1vaXplZFN0YXRlfWZ1bmN0aW9uIExtKGUsdCxuKXt2YXIgaT1JbihlKTtpZihuPXtsYW5lOmksYWN0aW9uOm4saGFzRWFnZXJTdGF0ZTohMSxlYWdlclN0YXRlOm51bGwsbmV4dDpudWxsfSxGZChlKSlPZCh0LG4pO2Vsc2UgaWYobj11ZChlLHQsbixpKSxuIT09bnVsbCl7dmFyIG89b3QoKTtCdChuLGUsaSxvKSxEZChuLHQsaSl9fWZ1bmN0aW9uIEZtKGUsdCxuKXt2YXIgaT1JbihlKSxvPXtsYW5lOmksYWN0aW9uOm4saGFzRWFnZXJTdGF0ZTohMSxlYWdlclN0YXRlOm51bGwsbmV4dDpudWxsfTtpZihGZChlKSlPZCh0LG8pO2Vsc2V7dmFyIGE9ZS5hbHRlcm5hdGU7aWYoZS5sYW5lcz09PTAmJihhPT09bnVsbHx8YS5sYW5lcz09PTApJiYoYT10Lmxhc3RSZW5kZXJlZFJlZHVjZXIsYSE9PW51bGwpKXRyeXt2YXIgZj10Lmxhc3RSZW5kZXJlZFN0YXRlLGc9YShmLG4pO2lmKG8uaGFzRWFnZXJTdGF0ZT0hMCxvLmVhZ2VyU3RhdGU9ZyxNdChnLGYpKXt2YXIgdz10LmludGVybGVhdmVkO3c9PT1udWxsPyhvLm5leHQ9byxLbyh0KSk6KG8ubmV4dD13Lm5leHQsdy5uZXh0PW8pLHQuaW50ZXJsZWF2ZWQ9bztyZXR1cm59fWNhdGNoe31maW5hbGx5e31uPXVkKGUsdCxvLGkpLG4hPT1udWxsJiYobz1vdCgpLEJ0KG4sZSxpLG8pLERkKG4sdCxpKSl9fWZ1bmN0aW9uIEZkKGUpe3ZhciB0PWUuYWx0ZXJuYXRlO3JldHVybiBlPT09RGV8fHQhPT1udWxsJiZ0PT09RGV9ZnVuY3Rpb24gT2QoZSx0KXtIaT1ubD0hMDt2YXIgbj1lLnBlbmRpbmc7bj09PW51bGw/dC5uZXh0PXQ6KHQubmV4dD1uLm5leHQsbi5uZXh0PXQpLGUucGVuZGluZz10fWZ1bmN0aW9uIERkKGUsdCxuKXtpZigobiY0MTk0MjQwKSE9PTApe3ZhciBpPXQubGFuZXM7aSY9ZS5wZW5kaW5nTGFuZXMsbnw9aSx0LmxhbmVzPW4sYW8oZSxuKX19dmFyIHNsPXtyZWFkQ29udGV4dDpSdCx1c2VDYWxsYmFjazpaZSx1c2VDb250ZXh0OlplLHVzZUVmZmVjdDpaZSx1c2VJbXBlcmF0aXZlSGFuZGxlOlplLHVzZUluc2VydGlvbkVmZmVjdDpaZSx1c2VMYXlvdXRFZmZlY3Q6WmUsdXNlTWVtbzpaZSx1c2VSZWR1Y2VyOlplLHVzZVJlZjpaZSx1c2VTdGF0ZTpaZSx1c2VEZWJ1Z1ZhbHVlOlplLHVzZURlZmVycmVkVmFsdWU6WmUsdXNlVHJhbnNpdGlvbjpaZSx1c2VNdXRhYmxlU291cmNlOlplLHVzZVN5bmNFeHRlcm5hbFN0b3JlOlplLHVzZUlkOlplLHVuc3RhYmxlX2lzTmV3UmVjb25jaWxlcjohMX0sT209e3JlYWRDb250ZXh0OlJ0LHVzZUNhbGxiYWNrOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIFl0KCkubWVtb2l6ZWRTdGF0ZT1bZSx0PT09dm9pZCAwP251bGw6dF0sZX0sdXNlQ29udGV4dDpSdCx1c2VFZmZlY3Q6Q2QsdXNlSW1wZXJhdGl2ZUhhbmRsZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIG49biE9bnVsbD9uLmNvbmNhdChbZV0pOm51bGwscmwoNDE5NDMwOCw0LE5kLmJpbmQobnVsbCx0LGUpLG4pfSx1c2VMYXlvdXRFZmZlY3Q6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcmwoNDE5NDMwOCw0LGUsdCl9LHVzZUluc2VydGlvbkVmZmVjdDpmdW5jdGlvbihlLHQpe3JldHVybiBybCg0LDIsZSx0KX0sdXNlTWVtbzpmdW5jdGlvbihlLHQpe3ZhciBuPVl0KCk7cmV0dXJuIHQ9dD09PXZvaWQgMD9udWxsOnQsZT1lKCksbi5tZW1vaXplZFN0YXRlPVtlLHRdLGV9LHVzZVJlZHVjZXI6ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPVl0KCk7cmV0dXJuIHQ9biE9PXZvaWQgMD9uKHQpOnQsaS5tZW1vaXplZFN0YXRlPWkuYmFzZVN0YXRlPXQsZT17cGVuZGluZzpudWxsLGludGVybGVhdmVkOm51bGwsbGFuZXM6MCxkaXNwYXRjaDpudWxsLGxhc3RSZW5kZXJlZFJlZHVjZXI6ZSxsYXN0UmVuZGVyZWRTdGF0ZTp0fSxpLnF1ZXVlPWUsZT1lLmRpc3BhdGNoPUxtLmJpbmQobnVsbCxEZSxlKSxbaS5tZW1vaXplZFN0YXRlLGVdfSx1c2VSZWY6ZnVuY3Rpb24oZSl7dmFyIHQ9WXQoKTtyZXR1cm4gZT17Y3VycmVudDplfSx0Lm1lbW9pemVkU3RhdGU9ZX0sdXNlU3RhdGU6U2QsdXNlRGVidWdWYWx1ZTpvYSx1c2VEZWZlcnJlZFZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBZdCgpLm1lbW9pemVkU3RhdGU9ZX0sdXNlVHJhbnNpdGlvbjpmdW5jdGlvbigpe3ZhciBlPVNkKCExKSx0PWVbMF07cmV0dXJuIGU9VG0uYmluZChudWxsLGVbMV0pLFl0KCkubWVtb2l6ZWRTdGF0ZT1lLFt0LGVdfSx1c2VNdXRhYmxlU291cmNlOmZ1bmN0aW9uKCl7fSx1c2VTeW5jRXh0ZXJuYWxTdG9yZTpmdW5jdGlvbihlLHQsbil7dmFyIGk9RGUsbz1ZdCgpO2lmKFRlKXtpZihuPT09dm9pZCAwKXRocm93IEVycm9yKGwoNDA3KSk7bj1uKCl9ZWxzZXtpZihuPXQoKSxLZT09PW51bGwpdGhyb3cgRXJyb3IobCgzNDkpKTsobnImMzApIT09MHx8Z2QoaSx0LG4pfW8ubWVtb2l6ZWRTdGF0ZT1uO3ZhciBhPXt2YWx1ZTpuLGdldFNuYXBzaG90OnR9O3JldHVybiBvLnF1ZXVlPWEsQ2QoeWQuYmluZChudWxsLGksYSxlKSxbZV0pLGkuZmxhZ3N8PTIwNDgsYmkoOSx2ZC5iaW5kKG51bGwsaSxhLG4sdCksdm9pZCAwLG51bGwpLG59LHVzZUlkOmZ1bmN0aW9uKCl7dmFyIGU9WXQoKSx0PUtlLmlkZW50aWZpZXJQcmVmaXg7aWYoVGUpe3ZhciBuPWFuLGk9b247bj0oaSZ+KDE8PDMyLUl0KGkpLTEpKS50b1N0cmluZygzMikrbix0PSI6Iit0KyJSIituLG49UWkrKywwPG4mJih0Kz0iSCIrbi50b1N0cmluZygzMikpLHQrPSI6In1lbHNlIG49X20rKyx0PSI6Iit0KyJyIituLnRvU3RyaW5nKDMyKSsiOiI7cmV0dXJuIGUubWVtb2l6ZWRTdGF0ZT10fSx1bnN0YWJsZV9pc05ld1JlY29uY2lsZXI6ITF9LERtPXtyZWFkQ29udGV4dDpSdCx1c2VDYWxsYmFjazpQZCx1c2VDb250ZXh0OlJ0LHVzZUVmZmVjdDpsYSx1c2VJbXBlcmF0aXZlSGFuZGxlOlJkLHVzZUluc2VydGlvbkVmZmVjdDpFZCx1c2VMYXlvdXRFZmZlY3Q6amQsdXNlTWVtbzpfZCx1c2VSZWR1Y2VyOmlhLHVzZVJlZjprZCx1c2VTdGF0ZTpmdW5jdGlvbigpe3JldHVybiBpYShxaSl9LHVzZURlYnVnVmFsdWU6b2EsdXNlRGVmZXJyZWRWYWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1QdCgpO3JldHVybiBUZCh0LFFlLm1lbW9pemVkU3RhdGUsZSl9LHVzZVRyYW5zaXRpb246ZnVuY3Rpb24oKXt2YXIgZT1pYShxaSlbMF0sdD1QdCgpLm1lbW9pemVkU3RhdGU7cmV0dXJuW2UsdF19LHVzZU11dGFibGVTb3VyY2U6cGQsdXNlU3luY0V4dGVybmFsU3RvcmU6bWQsdXNlSWQ6TGQsdW5zdGFibGVfaXNOZXdSZWNvbmNpbGVyOiExfSxJbT17cmVhZENvbnRleHQ6UnQsdXNlQ2FsbGJhY2s6UGQsdXNlQ29udGV4dDpSdCx1c2VFZmZlY3Q6bGEsdXNlSW1wZXJhdGl2ZUhhbmRsZTpSZCx1c2VJbnNlcnRpb25FZmZlY3Q6RWQsdXNlTGF5b3V0RWZmZWN0OmpkLHVzZU1lbW86X2QsdXNlUmVkdWNlcjpzYSx1c2VSZWY6a2QsdXNlU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gc2EocWkpfSx1c2VEZWJ1Z1ZhbHVlOm9hLHVzZURlZmVycmVkVmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9UHQoKTtyZXR1cm4gUWU9PT1udWxsP3QubWVtb2l6ZWRTdGF0ZT1lOlRkKHQsUWUubWVtb2l6ZWRTdGF0ZSxlKX0sdXNlVHJhbnNpdGlvbjpmdW5jdGlvbigpe3ZhciBlPXNhKHFpKVswXSx0PVB0KCkubWVtb2l6ZWRTdGF0ZTtyZXR1cm5bZSx0XX0sdXNlTXV0YWJsZVNvdXJjZTpwZCx1c2VTeW5jRXh0ZXJuYWxTdG9yZTptZCx1c2VJZDpMZCx1bnN0YWJsZV9pc05ld1JlY29uY2lsZXI6ITF9O2Z1bmN0aW9uIEF0KGUsdCl7aWYoZSYmZS5kZWZhdWx0UHJvcHMpe3Q9Ryh7fSx0KSxlPWUuZGVmYXVsdFByb3BzO2Zvcih2YXIgbiBpbiBlKXRbbl09PT12b2lkIDAmJih0W25dPWVbbl0pO3JldHVybiB0fXJldHVybiB0fWZ1bmN0aW9uIGFhKGUsdCxuLGkpe3Q9ZS5tZW1vaXplZFN0YXRlLG49bihpLHQpLG49bj09bnVsbD90Okcoe30sdCxuKSxlLm1lbW9pemVkU3RhdGU9bixlLmxhbmVzPT09MCYmKGUudXBkYXRlUXVldWUuYmFzZVN0YXRlPW4pfXZhciBsbD17aXNNb3VudGVkOmZ1bmN0aW9uKGUpe3JldHVybihlPWUuX3JlYWN0SW50ZXJuYWxzKT9HbihlKT09PWU6ITF9LGVucXVldWVTZXRTdGF0ZTpmdW5jdGlvbihlLHQsbil7ZT1lLl9yZWFjdEludGVybmFsczt2YXIgaT1vdCgpLG89SW4oZSksYT1jbihpLG8pO2EucGF5bG9hZD10LG4hPW51bGwmJihhLmNhbGxiYWNrPW4pLHQ9TG4oZSxhLG8pLHQhPT1udWxsJiYoQnQodCxlLG8saSksWHModCxlLG8pKX0sZW5xdWV1ZVJlcGxhY2VTdGF0ZTpmdW5jdGlvbihlLHQsbil7ZT1lLl9yZWFjdEludGVybmFsczt2YXIgaT1vdCgpLG89SW4oZSksYT1jbihpLG8pO2EudGFnPTEsYS5wYXlsb2FkPXQsbiE9bnVsbCYmKGEuY2FsbGJhY2s9biksdD1MbihlLGEsbyksdCE9PW51bGwmJihCdCh0LGUsbyxpKSxYcyh0LGUsbykpfSxlbnF1ZXVlRm9yY2VVcGRhdGU6ZnVuY3Rpb24oZSx0KXtlPWUuX3JlYWN0SW50ZXJuYWxzO3ZhciBuPW90KCksaT1JbihlKSxvPWNuKG4saSk7by50YWc9Mix0IT1udWxsJiYoby5jYWxsYmFjaz10KSx0PUxuKGUsbyxpKSx0IT09bnVsbCYmKEJ0KHQsZSxpLG4pLFhzKHQsZSxpKSl9fTtmdW5jdGlvbiBJZChlLHQsbixpLG8sYSxmKXtyZXR1cm4gZT1lLnN0YXRlTm9kZSx0eXBlb2YgZS5zaG91bGRDb21wb25lbnRVcGRhdGU9PSJmdW5jdGlvbiI/ZS5zaG91bGRDb21wb25lbnRVcGRhdGUoaSxhLGYpOnQucHJvdG90eXBlJiZ0LnByb3RvdHlwZS5pc1B1cmVSZWFjdENvbXBvbmVudD8hTGkobixpKXx8IUxpKG8sYSk6ITB9ZnVuY3Rpb24gTWQoZSx0LG4pe3ZhciBpPSExLG89UG4sYT10LmNvbnRleHRUeXBlO3JldHVybiB0eXBlb2YgYT09Im9iamVjdCImJmEhPT1udWxsP2E9UnQoYSk6KG89ZnQodCk/WW46WGUuY3VycmVudCxpPXQuY29udGV4dFR5cGVzLGE9KGk9aSE9bnVsbCk/RHIoZSxvKTpQbiksdD1uZXcgdChuLGEpLGUubWVtb2l6ZWRTdGF0ZT10LnN0YXRlIT09bnVsbCYmdC5zdGF0ZSE9PXZvaWQgMD90LnN0YXRlOm51bGwsdC51cGRhdGVyPWxsLGUuc3RhdGVOb2RlPXQsdC5fcmVhY3RJbnRlcm5hbHM9ZSxpJiYoZT1lLnN0YXRlTm9kZSxlLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkVW5tYXNrZWRDaGlsZENvbnRleHQ9byxlLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWFza2VkQ2hpbGRDb250ZXh0PWEpLHR9ZnVuY3Rpb24gemQoZSx0LG4saSl7ZT10LnN0YXRlLHR5cGVvZiB0LmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHM9PSJmdW5jdGlvbiImJnQuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuLGkpLHR5cGVvZiB0LlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzPT0iZnVuY3Rpb24iJiZ0LlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG4saSksdC5zdGF0ZSE9PWUmJmxsLmVucXVldWVSZXBsYWNlU3RhdGUodCx0LnN0YXRlLG51bGwpfWZ1bmN0aW9uIHVhKGUsdCxuLGkpe3ZhciBvPWUuc3RhdGVOb2RlO28ucHJvcHM9bixvLnN0YXRlPWUubWVtb2l6ZWRTdGF0ZSxvLnJlZnM9e30sR28oZSk7dmFyIGE9dC5jb250ZXh0VHlwZTt0eXBlb2YgYT09Im9iamVjdCImJmEhPT1udWxsP28uY29udGV4dD1SdChhKTooYT1mdCh0KT9ZbjpYZS5jdXJyZW50LG8uY29udGV4dD1EcihlLGEpKSxvLnN0YXRlPWUubWVtb2l6ZWRTdGF0ZSxhPXQuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzLHR5cGVvZiBhPT0iZnVuY3Rpb24iJiYoYWEoZSx0LGEsbiksby5zdGF0ZT1lLm1lbW9pemVkU3RhdGUpLHR5cGVvZiB0LmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcz09ImZ1bmN0aW9uInx8dHlwZW9mIG8uZ2V0U25hcHNob3RCZWZvcmVVcGRhdGU9PSJmdW5jdGlvbiJ8fHR5cGVvZiBvLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQhPSJmdW5jdGlvbiImJnR5cGVvZiBvLmNvbXBvbmVudFdpbGxNb3VudCE9ImZ1bmN0aW9uInx8KHQ9by5zdGF0ZSx0eXBlb2Ygby5jb21wb25lbnRXaWxsTW91bnQ9PSJmdW5jdGlvbiImJm8uY29tcG9uZW50V2lsbE1vdW50KCksdHlwZW9mIG8uVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudD09ImZ1bmN0aW9uIiYmby5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50KCksdCE9PW8uc3RhdGUmJmxsLmVucXVldWVSZXBsYWNlU3RhdGUobyxvLnN0YXRlLG51bGwpLFpzKGUsbixvLGkpLG8uc3RhdGU9ZS5tZW1vaXplZFN0YXRlKSx0eXBlb2Ygby5jb21wb25lbnREaWRNb3VudD09ImZ1bmN0aW9uIiYmKGUuZmxhZ3N8PTQxOTQzMDgpfWZ1bmN0aW9uIEhyKGUsdCl7dHJ5e3ZhciBuPSIiLGk9dDtkbyBuKz12ZShpKSxpPWkucmV0dXJuO3doaWxlKGkpO3ZhciBvPW59Y2F0Y2goYSl7bz1gCkVycm9yIGdlbmVyYXRpbmcgc3RhY2s6IGArYS5tZXNzYWdlK2AKYCthLnN0YWNrfXJldHVybnt2YWx1ZTplLHNvdXJjZTp0LHN0YWNrOm8sZGlnZXN0Om51bGx9fWZ1bmN0aW9uIGNhKGUsdCxuKXtyZXR1cm57dmFsdWU6ZSxzb3VyY2U6bnVsbCxzdGFjazpuPz9udWxsLGRpZ2VzdDp0Pz9udWxsfX1mdW5jdGlvbiBkYShlLHQpe3RyeXtjb25zb2xlLmVycm9yKHQudmFsdWUpfWNhdGNoKG4pe3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0aHJvdyBufSl9fXZhciBNbT10eXBlb2YgV2Vha01hcD09ImZ1bmN0aW9uIj9XZWFrTWFwOk1hcDtmdW5jdGlvbiBBZChlLHQsbil7bj1jbigtMSxuKSxuLnRhZz0zLG4ucGF5bG9hZD17ZWxlbWVudDpudWxsfTt2YXIgaT10LnZhbHVlO3JldHVybiBuLmNhbGxiYWNrPWZ1bmN0aW9uKCl7aGx8fChobD0hMCxOYT1pKSxkYShlLHQpfSxufWZ1bmN0aW9uICRkKGUsdCxuKXtuPWNuKC0xLG4pLG4udGFnPTM7dmFyIGk9ZS50eXBlLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcjtpZih0eXBlb2YgaT09ImZ1bmN0aW9uIil7dmFyIG89dC52YWx1ZTtuLnBheWxvYWQ9ZnVuY3Rpb24oKXtyZXR1cm4gaShvKX0sbi5jYWxsYmFjaz1mdW5jdGlvbigpe2RhKGUsdCl9fXZhciBhPWUuc3RhdGVOb2RlO3JldHVybiBhIT09bnVsbCYmdHlwZW9mIGEuY29tcG9uZW50RGlkQ2F0Y2g9PSJmdW5jdGlvbiImJihuLmNhbGxiYWNrPWZ1bmN0aW9uKCl7ZGEoZSx0KSx0eXBlb2YgaSE9ImZ1bmN0aW9uIiYmKE9uPT09bnVsbD9Pbj1uZXcgU2V0KFt0aGlzXSk6T24uYWRkKHRoaXMpKTt2YXIgZj10LnN0YWNrO3RoaXMuY29tcG9uZW50RGlkQ2F0Y2godC52YWx1ZSx7Y29tcG9uZW50U3RhY2s6ZiE9PW51bGw/ZjoiIn0pfSksbn1mdW5jdGlvbiBVZChlLHQsbil7dmFyIGk9ZS5waW5nQ2FjaGU7aWYoaT09PW51bGwpe2k9ZS5waW5nQ2FjaGU9bmV3IE1tO3ZhciBvPW5ldyBTZXQ7aS5zZXQodCxvKX1lbHNlIG89aS5nZXQodCksbz09PXZvaWQgMCYmKG89bmV3IFNldCxpLnNldCh0LG8pKTtvLmhhcyhuKXx8KG8uYWRkKG4pLGU9Sm0uYmluZChudWxsLGUsdCxuKSx0LnRoZW4oZSxlKSl9ZnVuY3Rpb24gQmQoZSl7ZG97dmFyIHQ7aWYoKHQ9ZS50YWc9PT0xMykmJih0PWUubWVtb2l6ZWRTdGF0ZSx0PXQhPT1udWxsP3QuZGVoeWRyYXRlZCE9PW51bGw6ITApLHQpcmV0dXJuIGU7ZT1lLnJldHVybn13aGlsZShlIT09bnVsbCk7cmV0dXJuIG51bGx9ZnVuY3Rpb24gSGQoZSx0LG4saSxvKXtyZXR1cm4oZS5tb2RlJjEpPT09MD8oZT09PXQ/ZS5mbGFnc3w9NjU1MzY6KGUuZmxhZ3N8PTEyOCxuLmZsYWdzfD0xMzEwNzIsbi5mbGFncyY9LTUyODA1LG4udGFnPT09MSYmKG4uYWx0ZXJuYXRlPT09bnVsbD9uLnRhZz0xNzoodD1jbigtMSwxKSx0LnRhZz0yLExuKG4sdCwxKSkpLG4ubGFuZXN8PTEpLGUpOihlLmZsYWdzfD02NTUzNixlLmxhbmVzPW8sZSl9dmFyIHptPUsuUmVhY3RDdXJyZW50T3duZXIsaHQ9ITE7ZnVuY3Rpb24gbHQoZSx0LG4saSl7dC5jaGlsZD1lPT09bnVsbD9hZCh0LG51bGwsbixpKTpBcih0LGUuY2hpbGQsbixpKX1mdW5jdGlvbiBRZChlLHQsbixpLG8pe249bi5yZW5kZXI7dmFyIGE9dC5yZWY7cmV0dXJuIFVyKHQsbyksaT1uYShlLHQsbixpLGEsbyksbj1yYSgpLGUhPT1udWxsJiYhaHQ/KHQudXBkYXRlUXVldWU9ZS51cGRhdGVRdWV1ZSx0LmZsYWdzJj0tMjA1MyxlLmxhbmVzJj1+byxkbihlLHQsbykpOihUZSYmbiYmJG8odCksdC5mbGFnc3w9MSxsdChlLHQsaSxvKSx0LmNoaWxkKX1mdW5jdGlvbiBxZChlLHQsbixpLG8pe2lmKGU9PT1udWxsKXt2YXIgYT1uLnR5cGU7cmV0dXJuIHR5cGVvZiBhPT0iZnVuY3Rpb24iJiYhT2EoYSkmJmEuZGVmYXVsdFByb3BzPT09dm9pZCAwJiZuLmNvbXBhcmU9PT1udWxsJiZuLmRlZmF1bHRQcm9wcz09PXZvaWQgMD8odC50YWc9MTUsdC50eXBlPWEsYmQoZSx0LGEsaSxvKSk6KGU9eGwobi50eXBlLG51bGwsaSx0LHQubW9kZSxvKSxlLnJlZj10LnJlZixlLnJldHVybj10LHQuY2hpbGQ9ZSl9aWYoYT1lLmNoaWxkLChlLmxhbmVzJm8pPT09MCl7dmFyIGY9YS5tZW1vaXplZFByb3BzO2lmKG49bi5jb21wYXJlLG49biE9PW51bGw/bjpMaSxuKGYsaSkmJmUucmVmPT09dC5yZWYpcmV0dXJuIGRuKGUsdCxvKX1yZXR1cm4gdC5mbGFnc3w9MSxlPXpuKGEsaSksZS5yZWY9dC5yZWYsZS5yZXR1cm49dCx0LmNoaWxkPWV9ZnVuY3Rpb24gYmQoZSx0LG4saSxvKXtpZihlIT09bnVsbCl7dmFyIGE9ZS5tZW1vaXplZFByb3BzO2lmKExpKGEsaSkmJmUucmVmPT09dC5yZWYpaWYoaHQ9ITEsdC5wZW5kaW5nUHJvcHM9aT1hLChlLmxhbmVzJm8pIT09MCkoZS5mbGFncyYxMzEwNzIpIT09MCYmKGh0PSEwKTtlbHNlIHJldHVybiB0LmxhbmVzPWUubGFuZXMsZG4oZSx0LG8pfXJldHVybiBmYShlLHQsbixpLG8pfWZ1bmN0aW9uIFdkKGUsdCxuKXt2YXIgaT10LnBlbmRpbmdQcm9wcyxvPWkuY2hpbGRyZW4sYT1lIT09bnVsbD9lLm1lbW9pemVkU3RhdGU6bnVsbDtpZihpLm1vZGU9PT0iaGlkZGVuIilpZigodC5tb2RlJjEpPT09MCl0Lm1lbW9pemVkU3RhdGU9e2Jhc2VMYW5lczowLGNhY2hlUG9vbDpudWxsLHRyYW5zaXRpb25zOm51bGx9LGplKHFyLGt0KSxrdHw9bjtlbHNle2lmKChuJjEwNzM3NDE4MjQpPT09MClyZXR1cm4gZT1hIT09bnVsbD9hLmJhc2VMYW5lc3xuOm4sdC5sYW5lcz10LmNoaWxkTGFuZXM9MTA3Mzc0MTgyNCx0Lm1lbW9pemVkU3RhdGU9e2Jhc2VMYW5lczplLGNhY2hlUG9vbDpudWxsLHRyYW5zaXRpb25zOm51bGx9LHQudXBkYXRlUXVldWU9bnVsbCxqZShxcixrdCksa3R8PWUsbnVsbDt0Lm1lbW9pemVkU3RhdGU9e2Jhc2VMYW5lczowLGNhY2hlUG9vbDpudWxsLHRyYW5zaXRpb25zOm51bGx9LGk9YSE9PW51bGw/YS5iYXNlTGFuZXM6bixqZShxcixrdCksa3R8PWl9ZWxzZSBhIT09bnVsbD8oaT1hLmJhc2VMYW5lc3xuLHQubWVtb2l6ZWRTdGF0ZT1udWxsKTppPW4samUocXIsa3QpLGt0fD1pO3JldHVybiBsdChlLHQsbyxuKSx0LmNoaWxkfWZ1bmN0aW9uIFZkKGUsdCl7dmFyIG49dC5yZWY7KGU9PT1udWxsJiZuIT09bnVsbHx8ZSE9PW51bGwmJmUucmVmIT09bikmJih0LmZsYWdzfD01MTIsdC5mbGFnc3w9MjA5NzE1Mil9ZnVuY3Rpb24gZmEoZSx0LG4saSxvKXt2YXIgYT1mdChuKT9ZbjpYZS5jdXJyZW50O3JldHVybiBhPURyKHQsYSksVXIodCxvKSxuPW5hKGUsdCxuLGksYSxvKSxpPXJhKCksZSE9PW51bGwmJiFodD8odC51cGRhdGVRdWV1ZT1lLnVwZGF0ZVF1ZXVlLHQuZmxhZ3MmPS0yMDUzLGUubGFuZXMmPX5vLGRuKGUsdCxvKSk6KFRlJiZpJiYkbyh0KSx0LmZsYWdzfD0xLGx0KGUsdCxuLG8pLHQuY2hpbGQpfWZ1bmN0aW9uIEtkKGUsdCxuLGksbyl7aWYoZnQobikpe3ZhciBhPSEwO3FzKHQpfWVsc2UgYT0hMTtpZihVcih0LG8pLHQuc3RhdGVOb2RlPT09bnVsbClhbChlLHQpLE1kKHQsbixpKSx1YSh0LG4saSxvKSxpPSEwO2Vsc2UgaWYoZT09PW51bGwpe3ZhciBmPXQuc3RhdGVOb2RlLGc9dC5tZW1vaXplZFByb3BzO2YucHJvcHM9Zzt2YXIgdz1mLmNvbnRleHQsVD1uLmNvbnRleHRUeXBlO3R5cGVvZiBUPT0ib2JqZWN0IiYmVCE9PW51bGw/VD1SdChUKTooVD1mdChuKT9ZbjpYZS5jdXJyZW50LFQ9RHIodCxUKSk7dmFyIHo9bi5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMsQT10eXBlb2Ygej09ImZ1bmN0aW9uInx8dHlwZW9mIGYuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGU9PSJmdW5jdGlvbiI7QXx8dHlwZW9mIGYuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMhPSJmdW5jdGlvbiImJnR5cGVvZiBmLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMhPSJmdW5jdGlvbiJ8fChnIT09aXx8dyE9PVQpJiZ6ZCh0LGYsaSxUKSxUbj0hMTt2YXIgRD10Lm1lbW9pemVkU3RhdGU7Zi5zdGF0ZT1ELFpzKHQsaSxmLG8pLHc9dC5tZW1vaXplZFN0YXRlLGchPT1pfHxEIT09d3x8ZHQuY3VycmVudHx8VG4/KHR5cGVvZiB6PT0iZnVuY3Rpb24iJiYoYWEodCxuLHosaSksdz10Lm1lbW9pemVkU3RhdGUpLChnPVRufHxJZCh0LG4sZyxpLEQsdyxUKSk/KEF8fHR5cGVvZiBmLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQhPSJmdW5jdGlvbiImJnR5cGVvZiBmLmNvbXBvbmVudFdpbGxNb3VudCE9ImZ1bmN0aW9uInx8KHR5cGVvZiBmLmNvbXBvbmVudFdpbGxNb3VudD09ImZ1bmN0aW9uIiYmZi5jb21wb25lbnRXaWxsTW91bnQoKSx0eXBlb2YgZi5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50PT0iZnVuY3Rpb24iJiZmLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQoKSksdHlwZW9mIGYuY29tcG9uZW50RGlkTW91bnQ9PSJmdW5jdGlvbiImJih0LmZsYWdzfD00MTk0MzA4KSk6KHR5cGVvZiBmLmNvbXBvbmVudERpZE1vdW50PT0iZnVuY3Rpb24iJiYodC5mbGFnc3w9NDE5NDMwOCksdC5tZW1vaXplZFByb3BzPWksdC5tZW1vaXplZFN0YXRlPXcpLGYucHJvcHM9aSxmLnN0YXRlPXcsZi5jb250ZXh0PVQsaT1nKToodHlwZW9mIGYuY29tcG9uZW50RGlkTW91bnQ9PSJmdW5jdGlvbiImJih0LmZsYWdzfD00MTk0MzA4KSxpPSExKX1lbHNle2Y9dC5zdGF0ZU5vZGUsY2QoZSx0KSxnPXQubWVtb2l6ZWRQcm9wcyxUPXQudHlwZT09PXQuZWxlbWVudFR5cGU/ZzpBdCh0LnR5cGUsZyksZi5wcm9wcz1ULEE9dC5wZW5kaW5nUHJvcHMsRD1mLmNvbnRleHQsdz1uLmNvbnRleHRUeXBlLHR5cGVvZiB3PT0ib2JqZWN0IiYmdyE9PW51bGw/dz1SdCh3KToodz1mdChuKT9ZbjpYZS5jdXJyZW50LHc9RHIodCx3KSk7dmFyIFc9bi5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHM7KHo9dHlwZW9mIFc9PSJmdW5jdGlvbiJ8fHR5cGVvZiBmLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlPT0iZnVuY3Rpb24iKXx8dHlwZW9mIGYuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMhPSJmdW5jdGlvbiImJnR5cGVvZiBmLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMhPSJmdW5jdGlvbiJ8fChnIT09QXx8RCE9PXcpJiZ6ZCh0LGYsaSx3KSxUbj0hMSxEPXQubWVtb2l6ZWRTdGF0ZSxmLnN0YXRlPUQsWnModCxpLGYsbyk7dmFyIEo9dC5tZW1vaXplZFN0YXRlO2chPT1BfHxEIT09Snx8ZHQuY3VycmVudHx8VG4/KHR5cGVvZiBXPT0iZnVuY3Rpb24iJiYoYWEodCxuLFcsaSksSj10Lm1lbW9pemVkU3RhdGUpLChUPVRufHxJZCh0LG4sVCxpLEQsSix3KXx8ITEpPyh6fHx0eXBlb2YgZi5VTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZSE9ImZ1bmN0aW9uIiYmdHlwZW9mIGYuY29tcG9uZW50V2lsbFVwZGF0ZSE9ImZ1bmN0aW9uInx8KHR5cGVvZiBmLmNvbXBvbmVudFdpbGxVcGRhdGU9PSJmdW5jdGlvbiImJmYuY29tcG9uZW50V2lsbFVwZGF0ZShpLEosdyksdHlwZW9mIGYuVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGU9PSJmdW5jdGlvbiImJmYuVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGUoaSxKLHcpKSx0eXBlb2YgZi5jb21wb25lbnREaWRVcGRhdGU9PSJmdW5jdGlvbiImJih0LmZsYWdzfD00KSx0eXBlb2YgZi5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZT09ImZ1bmN0aW9uIiYmKHQuZmxhZ3N8PTEwMjQpKToodHlwZW9mIGYuY29tcG9uZW50RGlkVXBkYXRlIT0iZnVuY3Rpb24ifHxnPT09ZS5tZW1vaXplZFByb3BzJiZEPT09ZS5tZW1vaXplZFN0YXRlfHwodC5mbGFnc3w9NCksdHlwZW9mIGYuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUhPSJmdW5jdGlvbiJ8fGc9PT1lLm1lbW9pemVkUHJvcHMmJkQ9PT1lLm1lbW9pemVkU3RhdGV8fCh0LmZsYWdzfD0xMDI0KSx0Lm1lbW9pemVkUHJvcHM9aSx0Lm1lbW9pemVkU3RhdGU9SiksZi5wcm9wcz1pLGYuc3RhdGU9SixmLmNvbnRleHQ9dyxpPVQpOih0eXBlb2YgZi5jb21wb25lbnREaWRVcGRhdGUhPSJmdW5jdGlvbiJ8fGc9PT1lLm1lbW9pemVkUHJvcHMmJkQ9PT1lLm1lbW9pemVkU3RhdGV8fCh0LmZsYWdzfD00KSx0eXBlb2YgZi5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSE9ImZ1bmN0aW9uInx8Zz09PWUubWVtb2l6ZWRQcm9wcyYmRD09PWUubWVtb2l6ZWRTdGF0ZXx8KHQuZmxhZ3N8PTEwMjQpLGk9ITEpfXJldHVybiBoYShlLHQsbixpLGEsbyl9ZnVuY3Rpb24gaGEoZSx0LG4saSxvLGEpe1ZkKGUsdCk7dmFyIGY9KHQuZmxhZ3MmMTI4KSE9PTA7aWYoIWkmJiFmKXJldHVybiBvJiZaYyh0LG4sITEpLGRuKGUsdCxhKTtpPXQuc3RhdGVOb2RlLHptLmN1cnJlbnQ9dDt2YXIgZz1mJiZ0eXBlb2Ygbi5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3IhPSJmdW5jdGlvbiI/bnVsbDppLnJlbmRlcigpO3JldHVybiB0LmZsYWdzfD0xLGUhPT1udWxsJiZmPyh0LmNoaWxkPUFyKHQsZS5jaGlsZCxudWxsLGEpLHQuY2hpbGQ9QXIodCxudWxsLGcsYSkpOmx0KGUsdCxnLGEpLHQubWVtb2l6ZWRTdGF0ZT1pLnN0YXRlLG8mJlpjKHQsbiwhMCksdC5jaGlsZH1mdW5jdGlvbiBHZChlKXt2YXIgdD1lLnN0YXRlTm9kZTt0LnBlbmRpbmdDb250ZXh0P1ljKGUsdC5wZW5kaW5nQ29udGV4dCx0LnBlbmRpbmdDb250ZXh0IT09dC5jb250ZXh0KTp0LmNvbnRleHQmJlljKGUsdC5jb250ZXh0LCExKSxKbyhlLHQuY29udGFpbmVySW5mbyl9ZnVuY3Rpb24gSmQoZSx0LG4saSxvKXtyZXR1cm4genIoKSxRbyhvKSx0LmZsYWdzfD0yNTYsbHQoZSx0LG4saSksdC5jaGlsZH12YXIgcGE9e2RlaHlkcmF0ZWQ6bnVsbCx0cmVlQ29udGV4dDpudWxsLHJldHJ5TGFuZTowfTtmdW5jdGlvbiBtYShlKXtyZXR1cm57YmFzZUxhbmVzOmUsY2FjaGVQb29sOm51bGwsdHJhbnNpdGlvbnM6bnVsbH19ZnVuY3Rpb24gWWQoZSx0LG4pe3ZhciBpPXQucGVuZGluZ1Byb3BzLG89T2UuY3VycmVudCxhPSExLGY9KHQuZmxhZ3MmMTI4KSE9PTAsZztpZigoZz1mKXx8KGc9ZSE9PW51bGwmJmUubWVtb2l6ZWRTdGF0ZT09PW51bGw/ITE6KG8mMikhPT0wKSxnPyhhPSEwLHQuZmxhZ3MmPS0xMjkpOihlPT09bnVsbHx8ZS5tZW1vaXplZFN0YXRlIT09bnVsbCkmJihvfD0xKSxqZShPZSxvJjEpLGU9PT1udWxsKXJldHVybiBIbyh0KSxlPXQubWVtb2l6ZWRTdGF0ZSxlIT09bnVsbCYmKGU9ZS5kZWh5ZHJhdGVkLGUhPT1udWxsKT8oKHQubW9kZSYxKT09PTA/dC5sYW5lcz0xOmUuZGF0YT09PSIkISI/dC5sYW5lcz04OnQubGFuZXM9MTA3Mzc0MTgyNCxudWxsKTooZj1pLmNoaWxkcmVuLGU9aS5mYWxsYmFjayxhPyhpPXQubW9kZSxhPXQuY2hpbGQsZj17bW9kZToiaGlkZGVuIixjaGlsZHJlbjpmfSwoaSYxKT09PTAmJmEhPT1udWxsPyhhLmNoaWxkTGFuZXM9MCxhLnBlbmRpbmdQcm9wcz1mKTphPXdsKGYsaSwwLG51bGwpLGU9b3IoZSxpLG4sbnVsbCksYS5yZXR1cm49dCxlLnJldHVybj10LGEuc2libGluZz1lLHQuY2hpbGQ9YSx0LmNoaWxkLm1lbW9pemVkU3RhdGU9bWEobiksdC5tZW1vaXplZFN0YXRlPXBhLGUpOmdhKHQsZikpO2lmKG89ZS5tZW1vaXplZFN0YXRlLG8hPT1udWxsJiYoZz1vLmRlaHlkcmF0ZWQsZyE9PW51bGwpKXJldHVybiBBbShlLHQsZixpLGcsbyxuKTtpZihhKXthPWkuZmFsbGJhY2ssZj10Lm1vZGUsbz1lLmNoaWxkLGc9by5zaWJsaW5nO3ZhciB3PXttb2RlOiJoaWRkZW4iLGNoaWxkcmVuOmkuY2hpbGRyZW59O3JldHVybihmJjEpPT09MCYmdC5jaGlsZCE9PW8/KGk9dC5jaGlsZCxpLmNoaWxkTGFuZXM9MCxpLnBlbmRpbmdQcm9wcz13LHQuZGVsZXRpb25zPW51bGwpOihpPXpuKG8sdyksaS5zdWJ0cmVlRmxhZ3M9by5zdWJ0cmVlRmxhZ3MmMTQ2ODAwNjQpLGchPT1udWxsP2E9em4oZyxhKTooYT1vcihhLGYsbixudWxsKSxhLmZsYWdzfD0yKSxhLnJldHVybj10LGkucmV0dXJuPXQsaS5zaWJsaW5nPWEsdC5jaGlsZD1pLGk9YSxhPXQuY2hpbGQsZj1lLmNoaWxkLm1lbW9pemVkU3RhdGUsZj1mPT09bnVsbD9tYShuKTp7YmFzZUxhbmVzOmYuYmFzZUxhbmVzfG4sY2FjaGVQb29sOm51bGwsdHJhbnNpdGlvbnM6Zi50cmFuc2l0aW9uc30sYS5tZW1vaXplZFN0YXRlPWYsYS5jaGlsZExhbmVzPWUuY2hpbGRMYW5lcyZ+bix0Lm1lbW9pemVkU3RhdGU9cGEsaX1yZXR1cm4gYT1lLmNoaWxkLGU9YS5zaWJsaW5nLGk9em4oYSx7bW9kZToidmlzaWJsZSIsY2hpbGRyZW46aS5jaGlsZHJlbn0pLCh0Lm1vZGUmMSk9PT0wJiYoaS5sYW5lcz1uKSxpLnJldHVybj10LGkuc2libGluZz1udWxsLGUhPT1udWxsJiYobj10LmRlbGV0aW9ucyxuPT09bnVsbD8odC5kZWxldGlvbnM9W2VdLHQuZmxhZ3N8PTE2KTpuLnB1c2goZSkpLHQuY2hpbGQ9aSx0Lm1lbW9pemVkU3RhdGU9bnVsbCxpfWZ1bmN0aW9uIGdhKGUsdCl7cmV0dXJuIHQ9d2woe21vZGU6InZpc2libGUiLGNoaWxkcmVuOnR9LGUubW9kZSwwLG51bGwpLHQucmV0dXJuPWUsZS5jaGlsZD10fWZ1bmN0aW9uIG9sKGUsdCxuLGkpe3JldHVybiBpIT09bnVsbCYmUW8oaSksQXIodCxlLmNoaWxkLG51bGwsbiksZT1nYSh0LHQucGVuZGluZ1Byb3BzLmNoaWxkcmVuKSxlLmZsYWdzfD0yLHQubWVtb2l6ZWRTdGF0ZT1udWxsLGV9ZnVuY3Rpb24gQW0oZSx0LG4saSxvLGEsZil7aWYobilyZXR1cm4gdC5mbGFncyYyNTY/KHQuZmxhZ3MmPS0yNTcsaT1jYShFcnJvcihsKDQyMikpKSxvbChlLHQsZixpKSk6dC5tZW1vaXplZFN0YXRlIT09bnVsbD8odC5jaGlsZD1lLmNoaWxkLHQuZmxhZ3N8PTEyOCxudWxsKTooYT1pLmZhbGxiYWNrLG89dC5tb2RlLGk9d2woe21vZGU6InZpc2libGUiLGNoaWxkcmVuOmkuY2hpbGRyZW59LG8sMCxudWxsKSxhPW9yKGEsbyxmLG51bGwpLGEuZmxhZ3N8PTIsaS5yZXR1cm49dCxhLnJldHVybj10LGkuc2libGluZz1hLHQuY2hpbGQ9aSwodC5tb2RlJjEpIT09MCYmQXIodCxlLmNoaWxkLG51bGwsZiksdC5jaGlsZC5tZW1vaXplZFN0YXRlPW1hKGYpLHQubWVtb2l6ZWRTdGF0ZT1wYSxhKTtpZigodC5tb2RlJjEpPT09MClyZXR1cm4gb2woZSx0LGYsbnVsbCk7aWYoby5kYXRhPT09IiQhIil7aWYoaT1vLm5leHRTaWJsaW5nJiZvLm5leHRTaWJsaW5nLmRhdGFzZXQsaSl2YXIgZz1pLmRnc3Q7cmV0dXJuIGk9ZyxhPUVycm9yKGwoNDE5KSksaT1jYShhLGksdm9pZCAwKSxvbChlLHQsZixpKX1pZihnPShmJmUuY2hpbGRMYW5lcykhPT0wLGh0fHxnKXtpZihpPUtlLGkhPT1udWxsKXtzd2l0Y2goZiYtZil7Y2FzZSA0Om89MjticmVhaztjYXNlIDE2Om89ODticmVhaztjYXNlIDY0OmNhc2UgMTI4OmNhc2UgMjU2OmNhc2UgNTEyOmNhc2UgMTAyNDpjYXNlIDIwNDg6Y2FzZSA0MDk2OmNhc2UgODE5MjpjYXNlIDE2Mzg0OmNhc2UgMzI3Njg6Y2FzZSA2NTUzNjpjYXNlIDEzMTA3MjpjYXNlIDI2MjE0NDpjYXNlIDUyNDI4ODpjYXNlIDEwNDg1NzY6Y2FzZSAyMDk3MTUyOmNhc2UgNDE5NDMwNDpjYXNlIDgzODg2MDg6Y2FzZSAxNjc3NzIxNjpjYXNlIDMzNTU0NDMyOmNhc2UgNjcxMDg4NjQ6bz0zMjticmVhaztjYXNlIDUzNjg3MDkxMjpvPTI2ODQzNTQ1NjticmVhaztkZWZhdWx0Om89MH1vPShvJihpLnN1c3BlbmRlZExhbmVzfGYpKSE9PTA/MDpvLG8hPT0wJiZvIT09YS5yZXRyeUxhbmUmJihhLnJldHJ5TGFuZT1vLHVuKGUsbyksQnQoaSxlLG8sLTEpKX1yZXR1cm4gRmEoKSxpPWNhKEVycm9yKGwoNDIxKSkpLG9sKGUsdCxmLGkpfXJldHVybiBvLmRhdGE9PT0iJD8iPyh0LmZsYWdzfD0xMjgsdC5jaGlsZD1lLmNoaWxkLHQ9WW0uYmluZChudWxsLGUpLG8uX3JlYWN0UmV0cnk9dCxudWxsKTooZT1hLnRyZWVDb250ZXh0LFN0PU5uKG8ubmV4dFNpYmxpbmcpLHd0PXQsVGU9ITAsenQ9bnVsbCxlIT09bnVsbCYmKGp0W050KytdPW9uLGp0W050KytdPWFuLGp0W050KytdPVhuLG9uPWUuaWQsYW49ZS5vdmVyZmxvdyxYbj10KSx0PWdhKHQsaS5jaGlsZHJlbiksdC5mbGFnc3w9NDA5Nix0KX1mdW5jdGlvbiBYZChlLHQsbil7ZS5sYW5lc3w9dDt2YXIgaT1lLmFsdGVybmF0ZTtpIT09bnVsbCYmKGkubGFuZXN8PXQpLFZvKGUucmV0dXJuLHQsbil9ZnVuY3Rpb24gdmEoZSx0LG4saSxvKXt2YXIgYT1lLm1lbW9pemVkU3RhdGU7YT09PW51bGw/ZS5tZW1vaXplZFN0YXRlPXtpc0JhY2t3YXJkczp0LHJlbmRlcmluZzpudWxsLHJlbmRlcmluZ1N0YXJ0VGltZTowLGxhc3Q6aSx0YWlsOm4sdGFpbE1vZGU6b306KGEuaXNCYWNrd2FyZHM9dCxhLnJlbmRlcmluZz1udWxsLGEucmVuZGVyaW5nU3RhcnRUaW1lPTAsYS5sYXN0PWksYS50YWlsPW4sYS50YWlsTW9kZT1vKX1mdW5jdGlvbiBaZChlLHQsbil7dmFyIGk9dC5wZW5kaW5nUHJvcHMsbz1pLnJldmVhbE9yZGVyLGE9aS50YWlsO2lmKGx0KGUsdCxpLmNoaWxkcmVuLG4pLGk9T2UuY3VycmVudCwoaSYyKSE9PTApaT1pJjF8Mix0LmZsYWdzfD0xMjg7ZWxzZXtpZihlIT09bnVsbCYmKGUuZmxhZ3MmMTI4KSE9PTApZTpmb3IoZT10LmNoaWxkO2UhPT1udWxsOyl7aWYoZS50YWc9PT0xMyllLm1lbW9pemVkU3RhdGUhPT1udWxsJiZYZChlLG4sdCk7ZWxzZSBpZihlLnRhZz09PTE5KVhkKGUsbix0KTtlbHNlIGlmKGUuY2hpbGQhPT1udWxsKXtlLmNoaWxkLnJldHVybj1lLGU9ZS5jaGlsZDtjb250aW51ZX1pZihlPT09dClicmVhayBlO2Zvcig7ZS5zaWJsaW5nPT09bnVsbDspe2lmKGUucmV0dXJuPT09bnVsbHx8ZS5yZXR1cm49PT10KWJyZWFrIGU7ZT1lLnJldHVybn1lLnNpYmxpbmcucmV0dXJuPWUucmV0dXJuLGU9ZS5zaWJsaW5nfWkmPTF9aWYoamUoT2UsaSksKHQubW9kZSYxKT09PTApdC5tZW1vaXplZFN0YXRlPW51bGw7ZWxzZSBzd2l0Y2gobyl7Y2FzZSJmb3J3YXJkcyI6Zm9yKG49dC5jaGlsZCxvPW51bGw7biE9PW51bGw7KWU9bi5hbHRlcm5hdGUsZSE9PW51bGwmJmVsKGUpPT09bnVsbCYmKG89biksbj1uLnNpYmxpbmc7bj1vLG49PT1udWxsPyhvPXQuY2hpbGQsdC5jaGlsZD1udWxsKToobz1uLnNpYmxpbmcsbi5zaWJsaW5nPW51bGwpLHZhKHQsITEsbyxuLGEpO2JyZWFrO2Nhc2UiYmFja3dhcmRzIjpmb3Iobj1udWxsLG89dC5jaGlsZCx0LmNoaWxkPW51bGw7byE9PW51bGw7KXtpZihlPW8uYWx0ZXJuYXRlLGUhPT1udWxsJiZlbChlKT09PW51bGwpe3QuY2hpbGQ9bzticmVha31lPW8uc2libGluZyxvLnNpYmxpbmc9bixuPW8sbz1lfXZhKHQsITAsbixudWxsLGEpO2JyZWFrO2Nhc2UidG9nZXRoZXIiOnZhKHQsITEsbnVsbCxudWxsLHZvaWQgMCk7YnJlYWs7ZGVmYXVsdDp0Lm1lbW9pemVkU3RhdGU9bnVsbH1yZXR1cm4gdC5jaGlsZH1mdW5jdGlvbiBhbChlLHQpeyh0Lm1vZGUmMSk9PT0wJiZlIT09bnVsbCYmKGUuYWx0ZXJuYXRlPW51bGwsdC5hbHRlcm5hdGU9bnVsbCx0LmZsYWdzfD0yKX1mdW5jdGlvbiBkbihlLHQsbil7aWYoZSE9PW51bGwmJih0LmRlcGVuZGVuY2llcz1lLmRlcGVuZGVuY2llcykscnJ8PXQubGFuZXMsKG4mdC5jaGlsZExhbmVzKT09PTApcmV0dXJuIG51bGw7aWYoZSE9PW51bGwmJnQuY2hpbGQhPT1lLmNoaWxkKXRocm93IEVycm9yKGwoMTUzKSk7aWYodC5jaGlsZCE9PW51bGwpe2ZvcihlPXQuY2hpbGQsbj16bihlLGUucGVuZGluZ1Byb3BzKSx0LmNoaWxkPW4sbi5yZXR1cm49dDtlLnNpYmxpbmchPT1udWxsOyllPWUuc2libGluZyxuPW4uc2libGluZz16bihlLGUucGVuZGluZ1Byb3BzKSxuLnJldHVybj10O24uc2libGluZz1udWxsfXJldHVybiB0LmNoaWxkfWZ1bmN0aW9uICRtKGUsdCxuKXtzd2l0Y2godC50YWcpe2Nhc2UgMzpHZCh0KSx6cigpO2JyZWFrO2Nhc2UgNTpoZCh0KTticmVhaztjYXNlIDE6ZnQodC50eXBlKSYmcXModCk7YnJlYWs7Y2FzZSA0OkpvKHQsdC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyk7YnJlYWs7Y2FzZSAxMDp2YXIgaT10LnR5cGUuX2NvbnRleHQsbz10Lm1lbW9pemVkUHJvcHMudmFsdWU7amUoSnMsaS5fY3VycmVudFZhbHVlKSxpLl9jdXJyZW50VmFsdWU9bzticmVhaztjYXNlIDEzOmlmKGk9dC5tZW1vaXplZFN0YXRlLGkhPT1udWxsKXJldHVybiBpLmRlaHlkcmF0ZWQhPT1udWxsPyhqZShPZSxPZS5jdXJyZW50JjEpLHQuZmxhZ3N8PTEyOCxudWxsKToobiZ0LmNoaWxkLmNoaWxkTGFuZXMpIT09MD9ZZChlLHQsbik6KGplKE9lLE9lLmN1cnJlbnQmMSksZT1kbihlLHQsbiksZSE9PW51bGw/ZS5zaWJsaW5nOm51bGwpO2plKE9lLE9lLmN1cnJlbnQmMSk7YnJlYWs7Y2FzZSAxOTppZihpPShuJnQuY2hpbGRMYW5lcykhPT0wLChlLmZsYWdzJjEyOCkhPT0wKXtpZihpKXJldHVybiBaZChlLHQsbik7dC5mbGFnc3w9MTI4fWlmKG89dC5tZW1vaXplZFN0YXRlLG8hPT1udWxsJiYoby5yZW5kZXJpbmc9bnVsbCxvLnRhaWw9bnVsbCxvLmxhc3RFZmZlY3Q9bnVsbCksamUoT2UsT2UuY3VycmVudCksaSlicmVhaztyZXR1cm4gbnVsbDtjYXNlIDIyOmNhc2UgMjM6cmV0dXJuIHQubGFuZXM9MCxXZChlLHQsbil9cmV0dXJuIGRuKGUsdCxuKX12YXIgZWYseWEsdGYsbmY7ZWY9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49dC5jaGlsZDtuIT09bnVsbDspe2lmKG4udGFnPT09NXx8bi50YWc9PT02KWUuYXBwZW5kQ2hpbGQobi5zdGF0ZU5vZGUpO2Vsc2UgaWYobi50YWchPT00JiZuLmNoaWxkIT09bnVsbCl7bi5jaGlsZC5yZXR1cm49bixuPW4uY2hpbGQ7Y29udGludWV9aWYobj09PXQpYnJlYWs7Zm9yKDtuLnNpYmxpbmc9PT1udWxsOyl7aWYobi5yZXR1cm49PT1udWxsfHxuLnJldHVybj09PXQpcmV0dXJuO249bi5yZXR1cm59bi5zaWJsaW5nLnJldHVybj1uLnJldHVybixuPW4uc2libGluZ319LHlhPWZ1bmN0aW9uKCl7fSx0Zj1mdW5jdGlvbihlLHQsbixpKXt2YXIgbz1lLm1lbW9pemVkUHJvcHM7aWYobyE9PWkpe2U9dC5zdGF0ZU5vZGUsdHIoSnQuY3VycmVudCk7dmFyIGE9bnVsbDtzd2l0Y2gobil7Y2FzZSJpbnB1dCI6bz1XbChlLG8pLGk9V2woZSxpKSxhPVtdO2JyZWFrO2Nhc2Uic2VsZWN0IjpvPUcoe30sbyx7dmFsdWU6dm9pZCAwfSksaT1HKHt9LGkse3ZhbHVlOnZvaWQgMH0pLGE9W107YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6bz1HbChlLG8pLGk9R2woZSxpKSxhPVtdO2JyZWFrO2RlZmF1bHQ6dHlwZW9mIG8ub25DbGljayE9ImZ1bmN0aW9uIiYmdHlwZW9mIGkub25DbGljaz09ImZ1bmN0aW9uIiYmKGUub25jbGljaz1Ccyl9WWwobixpKTt2YXIgZjtuPW51bGw7Zm9yKFQgaW4gbylpZighaS5oYXNPd25Qcm9wZXJ0eShUKSYmby5oYXNPd25Qcm9wZXJ0eShUKSYmb1tUXSE9bnVsbClpZihUPT09InN0eWxlIil7dmFyIGc9b1tUXTtmb3IoZiBpbiBnKWcuaGFzT3duUHJvcGVydHkoZikmJihufHwobj17fSksbltmXT0iIil9ZWxzZSBUIT09ImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiYmVCE9PSJjaGlsZHJlbiImJlQhPT0ic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nIiYmVCE9PSJzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmciJiZUIT09ImF1dG9Gb2N1cyImJihjLmhhc093blByb3BlcnR5KFQpP2F8fChhPVtdKTooYT1hfHxbXSkucHVzaChULG51bGwpKTtmb3IoVCBpbiBpKXt2YXIgdz1pW1RdO2lmKGc9byE9bnVsbD9vW1RdOnZvaWQgMCxpLmhhc093blByb3BlcnR5KFQpJiZ3IT09ZyYmKHchPW51bGx8fGchPW51bGwpKWlmKFQ9PT0ic3R5bGUiKWlmKGcpe2ZvcihmIGluIGcpIWcuaGFzT3duUHJvcGVydHkoZil8fHcmJncuaGFzT3duUHJvcGVydHkoZil8fChufHwobj17fSksbltmXT0iIik7Zm9yKGYgaW4gdyl3Lmhhc093blByb3BlcnR5KGYpJiZnW2ZdIT09d1tmXSYmKG58fChuPXt9KSxuW2ZdPXdbZl0pfWVsc2Ugbnx8KGF8fChhPVtdKSxhLnB1c2goVCxuKSksbj13O2Vsc2UgVD09PSJkYW5nZXJvdXNseVNldElubmVySFRNTCI/KHc9dz93Ll9faHRtbDp2b2lkIDAsZz1nP2cuX19odG1sOnZvaWQgMCx3IT1udWxsJiZnIT09dyYmKGE9YXx8W10pLnB1c2goVCx3KSk6VD09PSJjaGlsZHJlbiI/dHlwZW9mIHchPSJzdHJpbmciJiZ0eXBlb2YgdyE9Im51bWJlciJ8fChhPWF8fFtdKS5wdXNoKFQsIiIrdyk6VCE9PSJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmciJiZUIT09InN1cHByZXNzSHlkcmF0aW9uV2FybmluZyImJihjLmhhc093blByb3BlcnR5KFQpPyh3IT1udWxsJiZUPT09Im9uU2Nyb2xsIiYmUmUoInNjcm9sbCIsZSksYXx8Zz09PXd8fChhPVtdKSk6KGE9YXx8W10pLnB1c2goVCx3KSl9biYmKGE9YXx8W10pLnB1c2goInN0eWxlIixuKTt2YXIgVD1hOyh0LnVwZGF0ZVF1ZXVlPVQpJiYodC5mbGFnc3w9NCl9fSxuZj1mdW5jdGlvbihlLHQsbixpKXtuIT09aSYmKHQuZmxhZ3N8PTQpfTtmdW5jdGlvbiBXaShlLHQpe2lmKCFUZSlzd2l0Y2goZS50YWlsTW9kZSl7Y2FzZSJoaWRkZW4iOnQ9ZS50YWlsO2Zvcih2YXIgbj1udWxsO3QhPT1udWxsOyl0LmFsdGVybmF0ZSE9PW51bGwmJihuPXQpLHQ9dC5zaWJsaW5nO249PT1udWxsP2UudGFpbD1udWxsOm4uc2libGluZz1udWxsO2JyZWFrO2Nhc2UiY29sbGFwc2VkIjpuPWUudGFpbDtmb3IodmFyIGk9bnVsbDtuIT09bnVsbDspbi5hbHRlcm5hdGUhPT1udWxsJiYoaT1uKSxuPW4uc2libGluZztpPT09bnVsbD90fHxlLnRhaWw9PT1udWxsP2UudGFpbD1udWxsOmUudGFpbC5zaWJsaW5nPW51bGw6aS5zaWJsaW5nPW51bGx9fWZ1bmN0aW9uIGV0KGUpe3ZhciB0PWUuYWx0ZXJuYXRlIT09bnVsbCYmZS5hbHRlcm5hdGUuY2hpbGQ9PT1lLmNoaWxkLG49MCxpPTA7aWYodClmb3IodmFyIG89ZS5jaGlsZDtvIT09bnVsbDspbnw9by5sYW5lc3xvLmNoaWxkTGFuZXMsaXw9by5zdWJ0cmVlRmxhZ3MmMTQ2ODAwNjQsaXw9by5mbGFncyYxNDY4MDA2NCxvLnJldHVybj1lLG89by5zaWJsaW5nO2Vsc2UgZm9yKG89ZS5jaGlsZDtvIT09bnVsbDspbnw9by5sYW5lc3xvLmNoaWxkTGFuZXMsaXw9by5zdWJ0cmVlRmxhZ3MsaXw9by5mbGFncyxvLnJldHVybj1lLG89by5zaWJsaW5nO3JldHVybiBlLnN1YnRyZWVGbGFnc3w9aSxlLmNoaWxkTGFuZXM9bix0fWZ1bmN0aW9uIFVtKGUsdCxuKXt2YXIgaT10LnBlbmRpbmdQcm9wcztzd2l0Y2goVW8odCksdC50YWcpe2Nhc2UgMjpjYXNlIDE2OmNhc2UgMTU6Y2FzZSAwOmNhc2UgMTE6Y2FzZSA3OmNhc2UgODpjYXNlIDEyOmNhc2UgOTpjYXNlIDE0OnJldHVybiBldCh0KSxudWxsO2Nhc2UgMTpyZXR1cm4gZnQodC50eXBlKSYmUXMoKSxldCh0KSxudWxsO2Nhc2UgMzpyZXR1cm4gaT10LnN0YXRlTm9kZSxCcigpLFBlKGR0KSxQZShYZSksWm8oKSxpLnBlbmRpbmdDb250ZXh0JiYoaS5jb250ZXh0PWkucGVuZGluZ0NvbnRleHQsaS5wZW5kaW5nQ29udGV4dD1udWxsKSwoZT09PW51bGx8fGUuY2hpbGQ9PT1udWxsKSYmKEtzKHQpP3QuZmxhZ3N8PTQ6ZT09PW51bGx8fGUubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQmJih0LmZsYWdzJjI1Nik9PT0wfHwodC5mbGFnc3w9MTAyNCx6dCE9PW51bGwmJihfYSh6dCksenQ9bnVsbCkpKSx5YShlLHQpLGV0KHQpLG51bGw7Y2FzZSA1OllvKHQpO3ZhciBvPXRyKEJpLmN1cnJlbnQpO2lmKG49dC50eXBlLGUhPT1udWxsJiZ0LnN0YXRlTm9kZSE9bnVsbCl0ZihlLHQsbixpLG8pLGUucmVmIT09dC5yZWYmJih0LmZsYWdzfD01MTIsdC5mbGFnc3w9MjA5NzE1Mik7ZWxzZXtpZighaSl7aWYodC5zdGF0ZU5vZGU9PT1udWxsKXRocm93IEVycm9yKGwoMTY2KSk7cmV0dXJuIGV0KHQpLG51bGx9aWYoZT10cihKdC5jdXJyZW50KSxLcyh0KSl7aT10LnN0YXRlTm9kZSxuPXQudHlwZTt2YXIgYT10Lm1lbW9pemVkUHJvcHM7c3dpdGNoKGlbR3RdPXQsaVtNaV09YSxlPSh0Lm1vZGUmMSkhPT0wLG4pe2Nhc2UiZGlhbG9nIjpSZSgiY2FuY2VsIixpKSxSZSgiY2xvc2UiLGkpO2JyZWFrO2Nhc2UiaWZyYW1lIjpjYXNlIm9iamVjdCI6Y2FzZSJlbWJlZCI6UmUoImxvYWQiLGkpO2JyZWFrO2Nhc2UidmlkZW8iOmNhc2UiYXVkaW8iOmZvcihvPTA7bzxPaS5sZW5ndGg7bysrKVJlKE9pW29dLGkpO2JyZWFrO2Nhc2Uic291cmNlIjpSZSgiZXJyb3IiLGkpO2JyZWFrO2Nhc2UiaW1nIjpjYXNlImltYWdlIjpjYXNlImxpbmsiOlJlKCJlcnJvciIsaSksUmUoImxvYWQiLGkpO2JyZWFrO2Nhc2UiZGV0YWlscyI6UmUoInRvZ2dsZSIsaSk7YnJlYWs7Y2FzZSJpbnB1dCI6TXUoaSxhKSxSZSgiaW52YWxpZCIsaSk7YnJlYWs7Y2FzZSJzZWxlY3QiOmkuX3dyYXBwZXJTdGF0ZT17d2FzTXVsdGlwbGU6ISFhLm11bHRpcGxlfSxSZSgiaW52YWxpZCIsaSk7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6JHUoaSxhKSxSZSgiaW52YWxpZCIsaSl9WWwobixhKSxvPW51bGw7Zm9yKHZhciBmIGluIGEpaWYoYS5oYXNPd25Qcm9wZXJ0eShmKSl7dmFyIGc9YVtmXTtmPT09ImNoaWxkcmVuIj90eXBlb2YgZz09InN0cmluZyI/aS50ZXh0Q29udGVudCE9PWcmJihhLnN1cHByZXNzSHlkcmF0aW9uV2FybmluZyE9PSEwJiZVcyhpLnRleHRDb250ZW50LGcsZSksbz1bImNoaWxkcmVuIixnXSk6dHlwZW9mIGc9PSJudW1iZXIiJiZpLnRleHRDb250ZW50IT09IiIrZyYmKGEuc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nIT09ITAmJlVzKGkudGV4dENvbnRlbnQsZyxlKSxvPVsiY2hpbGRyZW4iLCIiK2ddKTpjLmhhc093blByb3BlcnR5KGYpJiZnIT1udWxsJiZmPT09Im9uU2Nyb2xsIiYmUmUoInNjcm9sbCIsaSl9c3dpdGNoKG4pe2Nhc2UiaW5wdXQiOnZzKGkpLEF1KGksYSwhMCk7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6dnMoaSksQnUoaSk7YnJlYWs7Y2FzZSJzZWxlY3QiOmNhc2Uib3B0aW9uIjpicmVhaztkZWZhdWx0OnR5cGVvZiBhLm9uQ2xpY2s9PSJmdW5jdGlvbiImJihpLm9uY2xpY2s9QnMpfWk9byx0LnVwZGF0ZVF1ZXVlPWksaSE9PW51bGwmJih0LmZsYWdzfD00KX1lbHNle2Y9by5ub2RlVHlwZT09PTk/bzpvLm93bmVyRG9jdW1lbnQsZT09PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiYmKGU9SHUobikpLGU9PT0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI/bj09PSJzY3JpcHQiPyhlPWYuY3JlYXRlRWxlbWVudCgiZGl2IiksZS5pbm5lckhUTUw9IjxzY3JpcHQ+PFwvc2NyaXB0PiIsZT1lLnJlbW92ZUNoaWxkKGUuZmlyc3RDaGlsZCkpOnR5cGVvZiBpLmlzPT0ic3RyaW5nIj9lPWYuY3JlYXRlRWxlbWVudChuLHtpczppLmlzfSk6KGU9Zi5jcmVhdGVFbGVtZW50KG4pLG49PT0ic2VsZWN0IiYmKGY9ZSxpLm11bHRpcGxlP2YubXVsdGlwbGU9ITA6aS5zaXplJiYoZi5zaXplPWkuc2l6ZSkpKTplPWYuY3JlYXRlRWxlbWVudE5TKGUsbiksZVtHdF09dCxlW01pXT1pLGVmKGUsdCwhMSwhMSksdC5zdGF0ZU5vZGU9ZTtlOntzd2l0Y2goZj1YbChuLGkpLG4pe2Nhc2UiZGlhbG9nIjpSZSgiY2FuY2VsIixlKSxSZSgiY2xvc2UiLGUpLG89aTticmVhaztjYXNlImlmcmFtZSI6Y2FzZSJvYmplY3QiOmNhc2UiZW1iZWQiOlJlKCJsb2FkIixlKSxvPWk7YnJlYWs7Y2FzZSJ2aWRlbyI6Y2FzZSJhdWRpbyI6Zm9yKG89MDtvPE9pLmxlbmd0aDtvKyspUmUoT2lbb10sZSk7bz1pO2JyZWFrO2Nhc2Uic291cmNlIjpSZSgiZXJyb3IiLGUpLG89aTticmVhaztjYXNlImltZyI6Y2FzZSJpbWFnZSI6Y2FzZSJsaW5rIjpSZSgiZXJyb3IiLGUpLFJlKCJsb2FkIixlKSxvPWk7YnJlYWs7Y2FzZSJkZXRhaWxzIjpSZSgidG9nZ2xlIixlKSxvPWk7YnJlYWs7Y2FzZSJpbnB1dCI6TXUoZSxpKSxvPVdsKGUsaSksUmUoImludmFsaWQiLGUpO2JyZWFrO2Nhc2Uib3B0aW9uIjpvPWk7YnJlYWs7Y2FzZSJzZWxlY3QiOmUuX3dyYXBwZXJTdGF0ZT17d2FzTXVsdGlwbGU6ISFpLm11bHRpcGxlfSxvPUcoe30saSx7dmFsdWU6dm9pZCAwfSksUmUoImludmFsaWQiLGUpO2JyZWFrO2Nhc2UidGV4dGFyZWEiOiR1KGUsaSksbz1HbChlLGkpLFJlKCJpbnZhbGlkIixlKTticmVhaztkZWZhdWx0Om89aX1ZbChuLG8pLGc9bztmb3IoYSBpbiBnKWlmKGcuaGFzT3duUHJvcGVydHkoYSkpe3ZhciB3PWdbYV07YT09PSJzdHlsZSI/YnUoZSx3KTphPT09ImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIj8odz13P3cuX19odG1sOnZvaWQgMCx3IT1udWxsJiZRdShlLHcpKTphPT09ImNoaWxkcmVuIj90eXBlb2Ygdz09InN0cmluZyI/KG4hPT0idGV4dGFyZWEifHx3IT09IiIpJiZwaShlLHcpOnR5cGVvZiB3PT0ibnVtYmVyIiYmcGkoZSwiIit3KTphIT09InN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZyImJmEhPT0ic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nIiYmYSE9PSJhdXRvRm9jdXMiJiYoYy5oYXNPd25Qcm9wZXJ0eShhKT93IT1udWxsJiZhPT09Im9uU2Nyb2xsIiYmUmUoInNjcm9sbCIsZSk6dyE9bnVsbCYmSChlLGEsdyxmKSl9c3dpdGNoKG4pe2Nhc2UiaW5wdXQiOnZzKGUpLEF1KGUsaSwhMSk7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6dnMoZSksQnUoZSk7YnJlYWs7Y2FzZSJvcHRpb24iOmkudmFsdWUhPW51bGwmJmUuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsIiIra2UoaS52YWx1ZSkpO2JyZWFrO2Nhc2Uic2VsZWN0IjplLm11bHRpcGxlPSEhaS5tdWx0aXBsZSxhPWkudmFsdWUsYSE9bnVsbD9rcihlLCEhaS5tdWx0aXBsZSxhLCExKTppLmRlZmF1bHRWYWx1ZSE9bnVsbCYma3IoZSwhIWkubXVsdGlwbGUsaS5kZWZhdWx0VmFsdWUsITApO2JyZWFrO2RlZmF1bHQ6dHlwZW9mIG8ub25DbGljaz09ImZ1bmN0aW9uIiYmKGUub25jbGljaz1Ccyl9c3dpdGNoKG4pe2Nhc2UiYnV0dG9uIjpjYXNlImlucHV0IjpjYXNlInNlbGVjdCI6Y2FzZSJ0ZXh0YXJlYSI6aT0hIWkuYXV0b0ZvY3VzO2JyZWFrIGU7Y2FzZSJpbWciOmk9ITA7YnJlYWsgZTtkZWZhdWx0Omk9ITF9fWkmJih0LmZsYWdzfD00KX10LnJlZiE9PW51bGwmJih0LmZsYWdzfD01MTIsdC5mbGFnc3w9MjA5NzE1Mil9cmV0dXJuIGV0KHQpLG51bGw7Y2FzZSA2OmlmKGUmJnQuc3RhdGVOb2RlIT1udWxsKW5mKGUsdCxlLm1lbW9pemVkUHJvcHMsaSk7ZWxzZXtpZih0eXBlb2YgaSE9InN0cmluZyImJnQuc3RhdGVOb2RlPT09bnVsbCl0aHJvdyBFcnJvcihsKDE2NikpO2lmKG49dHIoQmkuY3VycmVudCksdHIoSnQuY3VycmVudCksS3ModCkpe2lmKGk9dC5zdGF0ZU5vZGUsbj10Lm1lbW9pemVkUHJvcHMsaVtHdF09dCwoYT1pLm5vZGVWYWx1ZSE9PW4pJiYoZT13dCxlIT09bnVsbCkpc3dpdGNoKGUudGFnKXtjYXNlIDM6VXMoaS5ub2RlVmFsdWUsbiwoZS5tb2RlJjEpIT09MCk7YnJlYWs7Y2FzZSA1OmUubWVtb2l6ZWRQcm9wcy5zdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmchPT0hMCYmVXMoaS5ub2RlVmFsdWUsbiwoZS5tb2RlJjEpIT09MCl9YSYmKHQuZmxhZ3N8PTQpfWVsc2UgaT0obi5ub2RlVHlwZT09PTk/bjpuLm93bmVyRG9jdW1lbnQpLmNyZWF0ZVRleHROb2RlKGkpLGlbR3RdPXQsdC5zdGF0ZU5vZGU9aX1yZXR1cm4gZXQodCksbnVsbDtjYXNlIDEzOmlmKFBlKE9lKSxpPXQubWVtb2l6ZWRTdGF0ZSxlPT09bnVsbHx8ZS5tZW1vaXplZFN0YXRlIT09bnVsbCYmZS5tZW1vaXplZFN0YXRlLmRlaHlkcmF0ZWQhPT1udWxsKXtpZihUZSYmU3QhPT1udWxsJiYodC5tb2RlJjEpIT09MCYmKHQuZmxhZ3MmMTI4KT09PTApc2QoKSx6cigpLHQuZmxhZ3N8PTk4NTYwLGE9ITE7ZWxzZSBpZihhPUtzKHQpLGkhPT1udWxsJiZpLmRlaHlkcmF0ZWQhPT1udWxsKXtpZihlPT09bnVsbCl7aWYoIWEpdGhyb3cgRXJyb3IobCgzMTgpKTtpZihhPXQubWVtb2l6ZWRTdGF0ZSxhPWEhPT1udWxsP2EuZGVoeWRyYXRlZDpudWxsLCFhKXRocm93IEVycm9yKGwoMzE3KSk7YVtHdF09dH1lbHNlIHpyKCksKHQuZmxhZ3MmMTI4KT09PTAmJih0Lm1lbW9pemVkU3RhdGU9bnVsbCksdC5mbGFnc3w9NDtldCh0KSxhPSExfWVsc2UgenQhPT1udWxsJiYoX2EoenQpLHp0PW51bGwpLGE9ITA7aWYoIWEpcmV0dXJuIHQuZmxhZ3MmNjU1MzY/dDpudWxsfXJldHVybih0LmZsYWdzJjEyOCkhPT0wPyh0LmxhbmVzPW4sdCk6KGk9aSE9PW51bGwsaSE9PShlIT09bnVsbCYmZS5tZW1vaXplZFN0YXRlIT09bnVsbCkmJmkmJih0LmNoaWxkLmZsYWdzfD04MTkyLCh0Lm1vZGUmMSkhPT0wJiYoZT09PW51bGx8fChPZS5jdXJyZW50JjEpIT09MD9xZT09PTAmJihxZT0zKTpGYSgpKSksdC51cGRhdGVRdWV1ZSE9PW51bGwmJih0LmZsYWdzfD00KSxldCh0KSxudWxsKTtjYXNlIDQ6cmV0dXJuIEJyKCkseWEoZSx0KSxlPT09bnVsbCYmRGkodC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyksZXQodCksbnVsbDtjYXNlIDEwOnJldHVybiBXbyh0LnR5cGUuX2NvbnRleHQpLGV0KHQpLG51bGw7Y2FzZSAxNzpyZXR1cm4gZnQodC50eXBlKSYmUXMoKSxldCh0KSxudWxsO2Nhc2UgMTk6aWYoUGUoT2UpLGE9dC5tZW1vaXplZFN0YXRlLGE9PT1udWxsKXJldHVybiBldCh0KSxudWxsO2lmKGk9KHQuZmxhZ3MmMTI4KSE9PTAsZj1hLnJlbmRlcmluZyxmPT09bnVsbClpZihpKVdpKGEsITEpO2Vsc2V7aWYocWUhPT0wfHxlIT09bnVsbCYmKGUuZmxhZ3MmMTI4KSE9PTApZm9yKGU9dC5jaGlsZDtlIT09bnVsbDspe2lmKGY9ZWwoZSksZiE9PW51bGwpe2Zvcih0LmZsYWdzfD0xMjgsV2koYSwhMSksaT1mLnVwZGF0ZVF1ZXVlLGkhPT1udWxsJiYodC51cGRhdGVRdWV1ZT1pLHQuZmxhZ3N8PTQpLHQuc3VidHJlZUZsYWdzPTAsaT1uLG49dC5jaGlsZDtuIT09bnVsbDspYT1uLGU9aSxhLmZsYWdzJj0xNDY4MDA2NixmPWEuYWx0ZXJuYXRlLGY9PT1udWxsPyhhLmNoaWxkTGFuZXM9MCxhLmxhbmVzPWUsYS5jaGlsZD1udWxsLGEuc3VidHJlZUZsYWdzPTAsYS5tZW1vaXplZFByb3BzPW51bGwsYS5tZW1vaXplZFN0YXRlPW51bGwsYS51cGRhdGVRdWV1ZT1udWxsLGEuZGVwZW5kZW5jaWVzPW51bGwsYS5zdGF0ZU5vZGU9bnVsbCk6KGEuY2hpbGRMYW5lcz1mLmNoaWxkTGFuZXMsYS5sYW5lcz1mLmxhbmVzLGEuY2hpbGQ9Zi5jaGlsZCxhLnN1YnRyZWVGbGFncz0wLGEuZGVsZXRpb25zPW51bGwsYS5tZW1vaXplZFByb3BzPWYubWVtb2l6ZWRQcm9wcyxhLm1lbW9pemVkU3RhdGU9Zi5tZW1vaXplZFN0YXRlLGEudXBkYXRlUXVldWU9Zi51cGRhdGVRdWV1ZSxhLnR5cGU9Zi50eXBlLGU9Zi5kZXBlbmRlbmNpZXMsYS5kZXBlbmRlbmNpZXM9ZT09PW51bGw/bnVsbDp7bGFuZXM6ZS5sYW5lcyxmaXJzdENvbnRleHQ6ZS5maXJzdENvbnRleHR9KSxuPW4uc2libGluZztyZXR1cm4gamUoT2UsT2UuY3VycmVudCYxfDIpLHQuY2hpbGR9ZT1lLnNpYmxpbmd9YS50YWlsIT09bnVsbCYmJGUoKT5iciYmKHQuZmxhZ3N8PTEyOCxpPSEwLFdpKGEsITEpLHQubGFuZXM9NDE5NDMwNCl9ZWxzZXtpZighaSlpZihlPWVsKGYpLGUhPT1udWxsKXtpZih0LmZsYWdzfD0xMjgsaT0hMCxuPWUudXBkYXRlUXVldWUsbiE9PW51bGwmJih0LnVwZGF0ZVF1ZXVlPW4sdC5mbGFnc3w9NCksV2koYSwhMCksYS50YWlsPT09bnVsbCYmYS50YWlsTW9kZT09PSJoaWRkZW4iJiYhZi5hbHRlcm5hdGUmJiFUZSlyZXR1cm4gZXQodCksbnVsbH1lbHNlIDIqJGUoKS1hLnJlbmRlcmluZ1N0YXJ0VGltZT5iciYmbiE9PTEwNzM3NDE4MjQmJih0LmZsYWdzfD0xMjgsaT0hMCxXaShhLCExKSx0LmxhbmVzPTQxOTQzMDQpO2EuaXNCYWNrd2FyZHM/KGYuc2libGluZz10LmNoaWxkLHQuY2hpbGQ9Zik6KG49YS5sYXN0LG4hPT1udWxsP24uc2libGluZz1mOnQuY2hpbGQ9ZixhLmxhc3Q9Zil9cmV0dXJuIGEudGFpbCE9PW51bGw/KHQ9YS50YWlsLGEucmVuZGVyaW5nPXQsYS50YWlsPXQuc2libGluZyxhLnJlbmRlcmluZ1N0YXJ0VGltZT0kZSgpLHQuc2libGluZz1udWxsLG49T2UuY3VycmVudCxqZShPZSxpP24mMXwyOm4mMSksdCk6KGV0KHQpLG51bGwpO2Nhc2UgMjI6Y2FzZSAyMzpyZXR1cm4gTGEoKSxpPXQubWVtb2l6ZWRTdGF0ZSE9PW51bGwsZSE9PW51bGwmJmUubWVtb2l6ZWRTdGF0ZSE9PW51bGwhPT1pJiYodC5mbGFnc3w9ODE5MiksaSYmKHQubW9kZSYxKSE9PTA/KGt0JjEwNzM3NDE4MjQpIT09MCYmKGV0KHQpLHQuc3VidHJlZUZsYWdzJjYmJih0LmZsYWdzfD04MTkyKSk6ZXQodCksbnVsbDtjYXNlIDI0OnJldHVybiBudWxsO2Nhc2UgMjU6cmV0dXJuIG51bGx9dGhyb3cgRXJyb3IobCgxNTYsdC50YWcpKX1mdW5jdGlvbiBCbShlLHQpe3N3aXRjaChVbyh0KSx0LnRhZyl7Y2FzZSAxOnJldHVybiBmdCh0LnR5cGUpJiZRcygpLGU9dC5mbGFncyxlJjY1NTM2Pyh0LmZsYWdzPWUmLTY1NTM3fDEyOCx0KTpudWxsO2Nhc2UgMzpyZXR1cm4gQnIoKSxQZShkdCksUGUoWGUpLFpvKCksZT10LmZsYWdzLChlJjY1NTM2KSE9PTAmJihlJjEyOCk9PT0wPyh0LmZsYWdzPWUmLTY1NTM3fDEyOCx0KTpudWxsO2Nhc2UgNTpyZXR1cm4gWW8odCksbnVsbDtjYXNlIDEzOmlmKFBlKE9lKSxlPXQubWVtb2l6ZWRTdGF0ZSxlIT09bnVsbCYmZS5kZWh5ZHJhdGVkIT09bnVsbCl7aWYodC5hbHRlcm5hdGU9PT1udWxsKXRocm93IEVycm9yKGwoMzQwKSk7enIoKX1yZXR1cm4gZT10LmZsYWdzLGUmNjU1MzY/KHQuZmxhZ3M9ZSYtNjU1Mzd8MTI4LHQpOm51bGw7Y2FzZSAxOTpyZXR1cm4gUGUoT2UpLG51bGw7Y2FzZSA0OnJldHVybiBCcigpLG51bGw7Y2FzZSAxMDpyZXR1cm4gV28odC50eXBlLl9jb250ZXh0KSxudWxsO2Nhc2UgMjI6Y2FzZSAyMzpyZXR1cm4gTGEoKSxudWxsO2Nhc2UgMjQ6cmV0dXJuIG51bGw7ZGVmYXVsdDpyZXR1cm4gbnVsbH19dmFyIHVsPSExLHR0PSExLEhtPXR5cGVvZiBXZWFrU2V0PT0iZnVuY3Rpb24iP1dlYWtTZXQ6U2V0LFY9bnVsbDtmdW5jdGlvbiBRcihlLHQpe3ZhciBuPWUucmVmO2lmKG4hPT1udWxsKWlmKHR5cGVvZiBuPT0iZnVuY3Rpb24iKXRyeXtuKG51bGwpfWNhdGNoKGkpe3plKGUsdCxpKX1lbHNlIG4uY3VycmVudD1udWxsfWZ1bmN0aW9uIHhhKGUsdCxuKXt0cnl7bigpfWNhdGNoKGkpe3plKGUsdCxpKX19dmFyIHJmPSExO2Z1bmN0aW9uIFFtKGUsdCl7aWYoTG89X3MsZT1JYygpLENvKGUpKXtpZigic2VsZWN0aW9uU3RhcnQiaW4gZSl2YXIgbj17c3RhcnQ6ZS5zZWxlY3Rpb25TdGFydCxlbmQ6ZS5zZWxlY3Rpb25FbmR9O2Vsc2UgZTp7bj0obj1lLm93bmVyRG9jdW1lbnQpJiZuLmRlZmF1bHRWaWV3fHx3aW5kb3c7dmFyIGk9bi5nZXRTZWxlY3Rpb24mJm4uZ2V0U2VsZWN0aW9uKCk7aWYoaSYmaS5yYW5nZUNvdW50IT09MCl7bj1pLmFuY2hvck5vZGU7dmFyIG89aS5hbmNob3JPZmZzZXQsYT1pLmZvY3VzTm9kZTtpPWkuZm9jdXNPZmZzZXQ7dHJ5e24ubm9kZVR5cGUsYS5ub2RlVHlwZX1jYXRjaHtuPW51bGw7YnJlYWsgZX12YXIgZj0wLGc9LTEsdz0tMSxUPTAsej0wLEE9ZSxEPW51bGw7dDpmb3IoOzspe2Zvcih2YXIgVztBIT09bnx8byE9PTAmJkEubm9kZVR5cGUhPT0zfHwoZz1mK28pLEEhPT1hfHxpIT09MCYmQS5ub2RlVHlwZSE9PTN8fCh3PWYraSksQS5ub2RlVHlwZT09PTMmJihmKz1BLm5vZGVWYWx1ZS5sZW5ndGgpLChXPUEuZmlyc3RDaGlsZCkhPT1udWxsOylEPUEsQT1XO2Zvcig7Oyl7aWYoQT09PWUpYnJlYWsgdDtpZihEPT09biYmKytUPT09byYmKGc9ZiksRD09PWEmJisrej09PWkmJih3PWYpLChXPUEubmV4dFNpYmxpbmcpIT09bnVsbClicmVhaztBPUQsRD1BLnBhcmVudE5vZGV9QT1XfW49Zz09PS0xfHx3PT09LTE/bnVsbDp7c3RhcnQ6ZyxlbmQ6d319ZWxzZSBuPW51bGx9bj1ufHx7c3RhcnQ6MCxlbmQ6MH19ZWxzZSBuPW51bGw7Zm9yKEZvPXtmb2N1c2VkRWxlbTplLHNlbGVjdGlvblJhbmdlOm59LF9zPSExLFY9dDtWIT09bnVsbDspaWYodD1WLGU9dC5jaGlsZCwodC5zdWJ0cmVlRmxhZ3MmMTAyOCkhPT0wJiZlIT09bnVsbCllLnJldHVybj10LFY9ZTtlbHNlIGZvcig7ViE9PW51bGw7KXt0PVY7dHJ5e3ZhciBKPXQuYWx0ZXJuYXRlO2lmKCh0LmZsYWdzJjEwMjQpIT09MClzd2l0Y2godC50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6YnJlYWs7Y2FzZSAxOmlmKEohPT1udWxsKXt2YXIgWT1KLm1lbW9pemVkUHJvcHMsVWU9Si5tZW1vaXplZFN0YXRlLFI9dC5zdGF0ZU5vZGUsaz1SLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKHQuZWxlbWVudFR5cGU9PT10LnR5cGU/WTpBdCh0LnR5cGUsWSksVWUpO1IuX19yZWFjdEludGVybmFsU25hcHNob3RCZWZvcmVVcGRhdGU9a31icmVhaztjYXNlIDM6dmFyIFA9dC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbztQLm5vZGVUeXBlPT09MT9QLnRleHRDb250ZW50PSIiOlAubm9kZVR5cGU9PT05JiZQLmRvY3VtZW50RWxlbWVudCYmUC5yZW1vdmVDaGlsZChQLmRvY3VtZW50RWxlbWVudCk7YnJlYWs7Y2FzZSA1OmNhc2UgNjpjYXNlIDQ6Y2FzZSAxNzpicmVhaztkZWZhdWx0OnRocm93IEVycm9yKGwoMTYzKSl9fWNhdGNoKFUpe3plKHQsdC5yZXR1cm4sVSl9aWYoZT10LnNpYmxpbmcsZSE9PW51bGwpe2UucmV0dXJuPXQucmV0dXJuLFY9ZTticmVha31WPXQucmV0dXJufXJldHVybiBKPXJmLHJmPSExLEp9ZnVuY3Rpb24gVmkoZSx0LG4pe3ZhciBpPXQudXBkYXRlUXVldWU7aWYoaT1pIT09bnVsbD9pLmxhc3RFZmZlY3Q6bnVsbCxpIT09bnVsbCl7dmFyIG89aT1pLm5leHQ7ZG97aWYoKG8udGFnJmUpPT09ZSl7dmFyIGE9by5kZXN0cm95O28uZGVzdHJveT12b2lkIDAsYSE9PXZvaWQgMCYmeGEodCxuLGEpfW89by5uZXh0fXdoaWxlKG8hPT1pKX19ZnVuY3Rpb24gY2woZSx0KXtpZih0PXQudXBkYXRlUXVldWUsdD10IT09bnVsbD90Lmxhc3RFZmZlY3Q6bnVsbCx0IT09bnVsbCl7dmFyIG49dD10Lm5leHQ7ZG97aWYoKG4udGFnJmUpPT09ZSl7dmFyIGk9bi5jcmVhdGU7bi5kZXN0cm95PWkoKX1uPW4ubmV4dH13aGlsZShuIT09dCl9fWZ1bmN0aW9uIHdhKGUpe3ZhciB0PWUucmVmO2lmKHQhPT1udWxsKXt2YXIgbj1lLnN0YXRlTm9kZTtzd2l0Y2goZS50YWcpe2Nhc2UgNTplPW47YnJlYWs7ZGVmYXVsdDplPW59dHlwZW9mIHQ9PSJmdW5jdGlvbiI/dChlKTp0LmN1cnJlbnQ9ZX19ZnVuY3Rpb24gc2YoZSl7dmFyIHQ9ZS5hbHRlcm5hdGU7dCE9PW51bGwmJihlLmFsdGVybmF0ZT1udWxsLHNmKHQpKSxlLmNoaWxkPW51bGwsZS5kZWxldGlvbnM9bnVsbCxlLnNpYmxpbmc9bnVsbCxlLnRhZz09PTUmJih0PWUuc3RhdGVOb2RlLHQhPT1udWxsJiYoZGVsZXRlIHRbR3RdLGRlbGV0ZSB0W01pXSxkZWxldGUgdFtNb10sZGVsZXRlIHRbam1dLGRlbGV0ZSB0W05tXSkpLGUuc3RhdGVOb2RlPW51bGwsZS5yZXR1cm49bnVsbCxlLmRlcGVuZGVuY2llcz1udWxsLGUubWVtb2l6ZWRQcm9wcz1udWxsLGUubWVtb2l6ZWRTdGF0ZT1udWxsLGUucGVuZGluZ1Byb3BzPW51bGwsZS5zdGF0ZU5vZGU9bnVsbCxlLnVwZGF0ZVF1ZXVlPW51bGx9ZnVuY3Rpb24gbGYoZSl7cmV0dXJuIGUudGFnPT09NXx8ZS50YWc9PT0zfHxlLnRhZz09PTR9ZnVuY3Rpb24gb2YoZSl7ZTpmb3IoOzspe2Zvcig7ZS5zaWJsaW5nPT09bnVsbDspe2lmKGUucmV0dXJuPT09bnVsbHx8bGYoZS5yZXR1cm4pKXJldHVybiBudWxsO2U9ZS5yZXR1cm59Zm9yKGUuc2libGluZy5yZXR1cm49ZS5yZXR1cm4sZT1lLnNpYmxpbmc7ZS50YWchPT01JiZlLnRhZyE9PTYmJmUudGFnIT09MTg7KXtpZihlLmZsYWdzJjJ8fGUuY2hpbGQ9PT1udWxsfHxlLnRhZz09PTQpY29udGludWUgZTtlLmNoaWxkLnJldHVybj1lLGU9ZS5jaGlsZH1pZighKGUuZmxhZ3MmMikpcmV0dXJuIGUuc3RhdGVOb2RlfX1mdW5jdGlvbiBTYShlLHQsbil7dmFyIGk9ZS50YWc7aWYoaT09PTV8fGk9PT02KWU9ZS5zdGF0ZU5vZGUsdD9uLm5vZGVUeXBlPT09OD9uLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGUsdCk6bi5pbnNlcnRCZWZvcmUoZSx0KToobi5ub2RlVHlwZT09PTg/KHQ9bi5wYXJlbnROb2RlLHQuaW5zZXJ0QmVmb3JlKGUsbikpOih0PW4sdC5hcHBlbmRDaGlsZChlKSksbj1uLl9yZWFjdFJvb3RDb250YWluZXIsbiE9bnVsbHx8dC5vbmNsaWNrIT09bnVsbHx8KHQub25jbGljaz1CcykpO2Vsc2UgaWYoaSE9PTQmJihlPWUuY2hpbGQsZSE9PW51bGwpKWZvcihTYShlLHQsbiksZT1lLnNpYmxpbmc7ZSE9PW51bGw7KVNhKGUsdCxuKSxlPWUuc2libGluZ31mdW5jdGlvbiBrYShlLHQsbil7dmFyIGk9ZS50YWc7aWYoaT09PTV8fGk9PT02KWU9ZS5zdGF0ZU5vZGUsdD9uLmluc2VydEJlZm9yZShlLHQpOm4uYXBwZW5kQ2hpbGQoZSk7ZWxzZSBpZihpIT09NCYmKGU9ZS5jaGlsZCxlIT09bnVsbCkpZm9yKGthKGUsdCxuKSxlPWUuc2libGluZztlIT09bnVsbDspa2EoZSx0LG4pLGU9ZS5zaWJsaW5nfXZhciBKZT1udWxsLCR0PSExO2Z1bmN0aW9uIEZuKGUsdCxuKXtmb3Iobj1uLmNoaWxkO24hPT1udWxsOylhZihlLHQsbiksbj1uLnNpYmxpbmd9ZnVuY3Rpb24gYWYoZSx0LG4pe2lmKEt0JiZ0eXBlb2YgS3Qub25Db21taXRGaWJlclVubW91bnQ9PSJmdW5jdGlvbiIpdHJ5e0t0Lm9uQ29tbWl0RmliZXJVbm1vdW50KENzLG4pfWNhdGNoe31zd2l0Y2gobi50YWcpe2Nhc2UgNTp0dHx8UXIobix0KTtjYXNlIDY6dmFyIGk9SmUsbz0kdDtKZT1udWxsLEZuKGUsdCxuKSxKZT1pLCR0PW8sSmUhPT1udWxsJiYoJHQ/KGU9SmUsbj1uLnN0YXRlTm9kZSxlLm5vZGVUeXBlPT09OD9lLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobik6ZS5yZW1vdmVDaGlsZChuKSk6SmUucmVtb3ZlQ2hpbGQobi5zdGF0ZU5vZGUpKTticmVhaztjYXNlIDE4OkplIT09bnVsbCYmKCR0PyhlPUplLG49bi5zdGF0ZU5vZGUsZS5ub2RlVHlwZT09PTg/SW8oZS5wYXJlbnROb2RlLG4pOmUubm9kZVR5cGU9PT0xJiZJbyhlLG4pLGppKGUpKTpJbyhKZSxuLnN0YXRlTm9kZSkpO2JyZWFrO2Nhc2UgNDppPUplLG89JHQsSmU9bi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbywkdD0hMCxGbihlLHQsbiksSmU9aSwkdD1vO2JyZWFrO2Nhc2UgMDpjYXNlIDExOmNhc2UgMTQ6Y2FzZSAxNTppZighdHQmJihpPW4udXBkYXRlUXVldWUsaSE9PW51bGwmJihpPWkubGFzdEVmZmVjdCxpIT09bnVsbCkpKXtvPWk9aS5uZXh0O2Rve3ZhciBhPW8sZj1hLmRlc3Ryb3k7YT1hLnRhZyxmIT09dm9pZCAwJiYoKGEmMikhPT0wfHwoYSY0KSE9PTApJiZ4YShuLHQsZiksbz1vLm5leHR9d2hpbGUobyE9PWkpfUZuKGUsdCxuKTticmVhaztjYXNlIDE6aWYoIXR0JiYoUXIobix0KSxpPW4uc3RhdGVOb2RlLHR5cGVvZiBpLmNvbXBvbmVudFdpbGxVbm1vdW50PT0iZnVuY3Rpb24iKSl0cnl7aS5wcm9wcz1uLm1lbW9pemVkUHJvcHMsaS5zdGF0ZT1uLm1lbW9pemVkU3RhdGUsaS5jb21wb25lbnRXaWxsVW5tb3VudCgpfWNhdGNoKGcpe3plKG4sdCxnKX1GbihlLHQsbik7YnJlYWs7Y2FzZSAyMTpGbihlLHQsbik7YnJlYWs7Y2FzZSAyMjpuLm1vZGUmMT8odHQ9KGk9dHQpfHxuLm1lbW9pemVkU3RhdGUhPT1udWxsLEZuKGUsdCxuKSx0dD1pKTpGbihlLHQsbik7YnJlYWs7ZGVmYXVsdDpGbihlLHQsbil9fWZ1bmN0aW9uIHVmKGUpe3ZhciB0PWUudXBkYXRlUXVldWU7aWYodCE9PW51bGwpe2UudXBkYXRlUXVldWU9bnVsbDt2YXIgbj1lLnN0YXRlTm9kZTtuPT09bnVsbCYmKG49ZS5zdGF0ZU5vZGU9bmV3IEhtKSx0LmZvckVhY2goZnVuY3Rpb24oaSl7dmFyIG89WG0uYmluZChudWxsLGUsaSk7bi5oYXMoaSl8fChuLmFkZChpKSxpLnRoZW4obyxvKSl9KX19ZnVuY3Rpb24gVXQoZSx0KXt2YXIgbj10LmRlbGV0aW9ucztpZihuIT09bnVsbClmb3IodmFyIGk9MDtpPG4ubGVuZ3RoO2krKyl7dmFyIG89bltpXTt0cnl7dmFyIGE9ZSxmPXQsZz1mO2U6Zm9yKDtnIT09bnVsbDspe3N3aXRjaChnLnRhZyl7Y2FzZSA1OkplPWcuc3RhdGVOb2RlLCR0PSExO2JyZWFrIGU7Y2FzZSAzOkplPWcuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8sJHQ9ITA7YnJlYWsgZTtjYXNlIDQ6SmU9Zy5zdGF0ZU5vZGUuY29udGFpbmVySW5mbywkdD0hMDticmVhayBlfWc9Zy5yZXR1cm59aWYoSmU9PT1udWxsKXRocm93IEVycm9yKGwoMTYwKSk7YWYoYSxmLG8pLEplPW51bGwsJHQ9ITE7dmFyIHc9by5hbHRlcm5hdGU7dyE9PW51bGwmJih3LnJldHVybj1udWxsKSxvLnJldHVybj1udWxsfWNhdGNoKFQpe3plKG8sdCxUKX19aWYodC5zdWJ0cmVlRmxhZ3MmMTI4NTQpZm9yKHQ9dC5jaGlsZDt0IT09bnVsbDspY2YodCxlKSx0PXQuc2libGluZ31mdW5jdGlvbiBjZihlLHQpe3ZhciBuPWUuYWx0ZXJuYXRlLGk9ZS5mbGFncztzd2l0Y2goZS50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTQ6Y2FzZSAxNTppZihVdCh0LGUpLFh0KGUpLGkmNCl7dHJ5e1ZpKDMsZSxlLnJldHVybiksY2woMyxlKX1jYXRjaChZKXt6ZShlLGUucmV0dXJuLFkpfXRyeXtWaSg1LGUsZS5yZXR1cm4pfWNhdGNoKFkpe3plKGUsZS5yZXR1cm4sWSl9fWJyZWFrO2Nhc2UgMTpVdCh0LGUpLFh0KGUpLGkmNTEyJiZuIT09bnVsbCYmUXIobixuLnJldHVybik7YnJlYWs7Y2FzZSA1OmlmKFV0KHQsZSksWHQoZSksaSY1MTImJm4hPT1udWxsJiZRcihuLG4ucmV0dXJuKSxlLmZsYWdzJjMyKXt2YXIgbz1lLnN0YXRlTm9kZTt0cnl7cGkobywiIil9Y2F0Y2goWSl7emUoZSxlLnJldHVybixZKX19aWYoaSY0JiYobz1lLnN0YXRlTm9kZSxvIT1udWxsKSl7dmFyIGE9ZS5tZW1vaXplZFByb3BzLGY9biE9PW51bGw/bi5tZW1vaXplZFByb3BzOmEsZz1lLnR5cGUsdz1lLnVwZGF0ZVF1ZXVlO2lmKGUudXBkYXRlUXVldWU9bnVsbCx3IT09bnVsbCl0cnl7Zz09PSJpbnB1dCImJmEudHlwZT09PSJyYWRpbyImJmEubmFtZSE9bnVsbCYmenUobyxhKSxYbChnLGYpO3ZhciBUPVhsKGcsYSk7Zm9yKGY9MDtmPHcubGVuZ3RoO2YrPTIpe3ZhciB6PXdbZl0sQT13W2YrMV07ej09PSJzdHlsZSI/YnUobyxBKTp6PT09ImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIj9RdShvLEEpOno9PT0iY2hpbGRyZW4iP3BpKG8sQSk6SChvLHosQSxUKX1zd2l0Y2goZyl7Y2FzZSJpbnB1dCI6VmwobyxhKTticmVhaztjYXNlInRleHRhcmVhIjpVdShvLGEpO2JyZWFrO2Nhc2Uic2VsZWN0Ijp2YXIgRD1vLl93cmFwcGVyU3RhdGUud2FzTXVsdGlwbGU7by5fd3JhcHBlclN0YXRlLndhc011bHRpcGxlPSEhYS5tdWx0aXBsZTt2YXIgVz1hLnZhbHVlO1chPW51bGw/a3IobywhIWEubXVsdGlwbGUsVywhMSk6RCE9PSEhYS5tdWx0aXBsZSYmKGEuZGVmYXVsdFZhbHVlIT1udWxsP2tyKG8sISFhLm11bHRpcGxlLGEuZGVmYXVsdFZhbHVlLCEwKTprcihvLCEhYS5tdWx0aXBsZSxhLm11bHRpcGxlP1tdOiIiLCExKSl9b1tNaV09YX1jYXRjaChZKXt6ZShlLGUucmV0dXJuLFkpfX1icmVhaztjYXNlIDY6aWYoVXQodCxlKSxYdChlKSxpJjQpe2lmKGUuc3RhdGVOb2RlPT09bnVsbCl0aHJvdyBFcnJvcihsKDE2MikpO289ZS5zdGF0ZU5vZGUsYT1lLm1lbW9pemVkUHJvcHM7dHJ5e28ubm9kZVZhbHVlPWF9Y2F0Y2goWSl7emUoZSxlLnJldHVybixZKX19YnJlYWs7Y2FzZSAzOmlmKFV0KHQsZSksWHQoZSksaSY0JiZuIT09bnVsbCYmbi5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCl0cnl7amkodC5jb250YWluZXJJbmZvKX1jYXRjaChZKXt6ZShlLGUucmV0dXJuLFkpfWJyZWFrO2Nhc2UgNDpVdCh0LGUpLFh0KGUpO2JyZWFrO2Nhc2UgMTM6VXQodCxlKSxYdChlKSxvPWUuY2hpbGQsby5mbGFncyY4MTkyJiYoYT1vLm1lbW9pemVkU3RhdGUhPT1udWxsLG8uc3RhdGVOb2RlLmlzSGlkZGVuPWEsIWF8fG8uYWx0ZXJuYXRlIT09bnVsbCYmby5hbHRlcm5hdGUubWVtb2l6ZWRTdGF0ZSE9PW51bGx8fChqYT0kZSgpKSksaSY0JiZ1ZihlKTticmVhaztjYXNlIDIyOmlmKHo9biE9PW51bGwmJm4ubWVtb2l6ZWRTdGF0ZSE9PW51bGwsZS5tb2RlJjE/KHR0PShUPXR0KXx8eixVdCh0LGUpLHR0PVQpOlV0KHQsZSksWHQoZSksaSY4MTkyKXtpZihUPWUubWVtb2l6ZWRTdGF0ZSE9PW51bGwsKGUuc3RhdGVOb2RlLmlzSGlkZGVuPVQpJiYheiYmKGUubW9kZSYxKSE9PTApZm9yKFY9ZSx6PWUuY2hpbGQ7eiE9PW51bGw7KXtmb3IoQT1WPXo7ViE9PW51bGw7KXtzd2l0Y2goRD1WLFc9RC5jaGlsZCxELnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNDpjYXNlIDE1OlZpKDQsRCxELnJldHVybik7YnJlYWs7Y2FzZSAxOlFyKEQsRC5yZXR1cm4pO3ZhciBKPUQuc3RhdGVOb2RlO2lmKHR5cGVvZiBKLmNvbXBvbmVudFdpbGxVbm1vdW50PT0iZnVuY3Rpb24iKXtpPUQsbj1ELnJldHVybjt0cnl7dD1pLEoucHJvcHM9dC5tZW1vaXplZFByb3BzLEouc3RhdGU9dC5tZW1vaXplZFN0YXRlLEouY29tcG9uZW50V2lsbFVubW91bnQoKX1jYXRjaChZKXt6ZShpLG4sWSl9fWJyZWFrO2Nhc2UgNTpRcihELEQucmV0dXJuKTticmVhaztjYXNlIDIyOmlmKEQubWVtb2l6ZWRTdGF0ZSE9PW51bGwpe2hmKEEpO2NvbnRpbnVlfX1XIT09bnVsbD8oVy5yZXR1cm49RCxWPVcpOmhmKEEpfXo9ei5zaWJsaW5nfWU6Zm9yKHo9bnVsbCxBPWU7Oyl7aWYoQS50YWc9PT01KXtpZih6PT09bnVsbCl7ej1BO3RyeXtvPUEuc3RhdGVOb2RlLFQ/KGE9by5zdHlsZSx0eXBlb2YgYS5zZXRQcm9wZXJ0eT09ImZ1bmN0aW9uIj9hLnNldFByb3BlcnR5KCJkaXNwbGF5Iiwibm9uZSIsImltcG9ydGFudCIpOmEuZGlzcGxheT0ibm9uZSIpOihnPUEuc3RhdGVOb2RlLHc9QS5tZW1vaXplZFByb3BzLnN0eWxlLGY9dyE9bnVsbCYmdy5oYXNPd25Qcm9wZXJ0eSgiZGlzcGxheSIpP3cuZGlzcGxheTpudWxsLGcuc3R5bGUuZGlzcGxheT1xdSgiZGlzcGxheSIsZikpfWNhdGNoKFkpe3plKGUsZS5yZXR1cm4sWSl9fX1lbHNlIGlmKEEudGFnPT09Nil7aWYoej09PW51bGwpdHJ5e0Euc3RhdGVOb2RlLm5vZGVWYWx1ZT1UPyIiOkEubWVtb2l6ZWRQcm9wc31jYXRjaChZKXt6ZShlLGUucmV0dXJuLFkpfX1lbHNlIGlmKChBLnRhZyE9PTIyJiZBLnRhZyE9PTIzfHxBLm1lbW9pemVkU3RhdGU9PT1udWxsfHxBPT09ZSkmJkEuY2hpbGQhPT1udWxsKXtBLmNoaWxkLnJldHVybj1BLEE9QS5jaGlsZDtjb250aW51ZX1pZihBPT09ZSlicmVhayBlO2Zvcig7QS5zaWJsaW5nPT09bnVsbDspe2lmKEEucmV0dXJuPT09bnVsbHx8QS5yZXR1cm49PT1lKWJyZWFrIGU7ej09PUEmJih6PW51bGwpLEE9QS5yZXR1cm59ej09PUEmJih6PW51bGwpLEEuc2libGluZy5yZXR1cm49QS5yZXR1cm4sQT1BLnNpYmxpbmd9fWJyZWFrO2Nhc2UgMTk6VXQodCxlKSxYdChlKSxpJjQmJnVmKGUpO2JyZWFrO2Nhc2UgMjE6YnJlYWs7ZGVmYXVsdDpVdCh0LGUpLFh0KGUpfX1mdW5jdGlvbiBYdChlKXt2YXIgdD1lLmZsYWdzO2lmKHQmMil7dHJ5e2U6e2Zvcih2YXIgbj1lLnJldHVybjtuIT09bnVsbDspe2lmKGxmKG4pKXt2YXIgaT1uO2JyZWFrIGV9bj1uLnJldHVybn10aHJvdyBFcnJvcihsKDE2MCkpfXN3aXRjaChpLnRhZyl7Y2FzZSA1OnZhciBvPWkuc3RhdGVOb2RlO2kuZmxhZ3MmMzImJihwaShvLCIiKSxpLmZsYWdzJj0tMzMpO3ZhciBhPW9mKGUpO2thKGUsYSxvKTticmVhaztjYXNlIDM6Y2FzZSA0OnZhciBmPWkuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8sZz1vZihlKTtTYShlLGcsZik7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihsKDE2MSkpfX1jYXRjaCh3KXt6ZShlLGUucmV0dXJuLHcpfWUuZmxhZ3MmPS0zfXQmNDA5NiYmKGUuZmxhZ3MmPS00MDk3KX1mdW5jdGlvbiBxbShlLHQsbil7Vj1lLGRmKGUpfWZ1bmN0aW9uIGRmKGUsdCxuKXtmb3IodmFyIGk9KGUubW9kZSYxKSE9PTA7ViE9PW51bGw7KXt2YXIgbz1WLGE9by5jaGlsZDtpZihvLnRhZz09PTIyJiZpKXt2YXIgZj1vLm1lbW9pemVkU3RhdGUhPT1udWxsfHx1bDtpZighZil7dmFyIGc9by5hbHRlcm5hdGUsdz1nIT09bnVsbCYmZy5tZW1vaXplZFN0YXRlIT09bnVsbHx8dHQ7Zz11bDt2YXIgVD10dDtpZih1bD1mLCh0dD13KSYmIVQpZm9yKFY9bztWIT09bnVsbDspZj1WLHc9Zi5jaGlsZCxmLnRhZz09PTIyJiZmLm1lbW9pemVkU3RhdGUhPT1udWxsP3BmKG8pOnchPT1udWxsPyh3LnJldHVybj1mLFY9dyk6cGYobyk7Zm9yKDthIT09bnVsbDspVj1hLGRmKGEpLGE9YS5zaWJsaW5nO1Y9byx1bD1nLHR0PVR9ZmYoZSl9ZWxzZShvLnN1YnRyZWVGbGFncyY4NzcyKSE9PTAmJmEhPT1udWxsPyhhLnJldHVybj1vLFY9YSk6ZmYoZSl9fWZ1bmN0aW9uIGZmKGUpe2Zvcig7ViE9PW51bGw7KXt2YXIgdD1WO2lmKCh0LmZsYWdzJjg3NzIpIT09MCl7dmFyIG49dC5hbHRlcm5hdGU7dHJ5e2lmKCh0LmZsYWdzJjg3NzIpIT09MClzd2l0Y2godC50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6dHR8fGNsKDUsdCk7YnJlYWs7Y2FzZSAxOnZhciBpPXQuc3RhdGVOb2RlO2lmKHQuZmxhZ3MmNCYmIXR0KWlmKG49PT1udWxsKWkuY29tcG9uZW50RGlkTW91bnQoKTtlbHNle3ZhciBvPXQuZWxlbWVudFR5cGU9PT10LnR5cGU/bi5tZW1vaXplZFByb3BzOkF0KHQudHlwZSxuLm1lbW9pemVkUHJvcHMpO2kuY29tcG9uZW50RGlkVXBkYXRlKG8sbi5tZW1vaXplZFN0YXRlLGkuX19yZWFjdEludGVybmFsU25hcHNob3RCZWZvcmVVcGRhdGUpfXZhciBhPXQudXBkYXRlUXVldWU7YSE9PW51bGwmJmZkKHQsYSxpKTticmVhaztjYXNlIDM6dmFyIGY9dC51cGRhdGVRdWV1ZTtpZihmIT09bnVsbCl7aWYobj1udWxsLHQuY2hpbGQhPT1udWxsKXN3aXRjaCh0LmNoaWxkLnRhZyl7Y2FzZSA1Om49dC5jaGlsZC5zdGF0ZU5vZGU7YnJlYWs7Y2FzZSAxOm49dC5jaGlsZC5zdGF0ZU5vZGV9ZmQodCxmLG4pfWJyZWFrO2Nhc2UgNTp2YXIgZz10LnN0YXRlTm9kZTtpZihuPT09bnVsbCYmdC5mbGFncyY0KXtuPWc7dmFyIHc9dC5tZW1vaXplZFByb3BzO3N3aXRjaCh0LnR5cGUpe2Nhc2UiYnV0dG9uIjpjYXNlImlucHV0IjpjYXNlInNlbGVjdCI6Y2FzZSJ0ZXh0YXJlYSI6dy5hdXRvRm9jdXMmJm4uZm9jdXMoKTticmVhaztjYXNlImltZyI6dy5zcmMmJihuLnNyYz13LnNyYyl9fWJyZWFrO2Nhc2UgNjpicmVhaztjYXNlIDQ6YnJlYWs7Y2FzZSAxMjpicmVhaztjYXNlIDEzOmlmKHQubWVtb2l6ZWRTdGF0ZT09PW51bGwpe3ZhciBUPXQuYWx0ZXJuYXRlO2lmKFQhPT1udWxsKXt2YXIgej1ULm1lbW9pemVkU3RhdGU7aWYoeiE9PW51bGwpe3ZhciBBPXouZGVoeWRyYXRlZDtBIT09bnVsbCYmamkoQSl9fX1icmVhaztjYXNlIDE5OmNhc2UgMTc6Y2FzZSAyMTpjYXNlIDIyOmNhc2UgMjM6Y2FzZSAyNTpicmVhaztkZWZhdWx0OnRocm93IEVycm9yKGwoMTYzKSl9dHR8fHQuZmxhZ3MmNTEyJiZ3YSh0KX1jYXRjaChEKXt6ZSh0LHQucmV0dXJuLEQpfX1pZih0PT09ZSl7Vj1udWxsO2JyZWFrfWlmKG49dC5zaWJsaW5nLG4hPT1udWxsKXtuLnJldHVybj10LnJldHVybixWPW47YnJlYWt9Vj10LnJldHVybn19ZnVuY3Rpb24gaGYoZSl7Zm9yKDtWIT09bnVsbDspe3ZhciB0PVY7aWYodD09PWUpe1Y9bnVsbDticmVha312YXIgbj10LnNpYmxpbmc7aWYobiE9PW51bGwpe24ucmV0dXJuPXQucmV0dXJuLFY9bjticmVha31WPXQucmV0dXJufX1mdW5jdGlvbiBwZihlKXtmb3IoO1YhPT1udWxsOyl7dmFyIHQ9Vjt0cnl7c3dpdGNoKHQudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OnZhciBuPXQucmV0dXJuO3RyeXtjbCg0LHQpfWNhdGNoKHcpe3plKHQsbix3KX1icmVhaztjYXNlIDE6dmFyIGk9dC5zdGF0ZU5vZGU7aWYodHlwZW9mIGkuY29tcG9uZW50RGlkTW91bnQ9PSJmdW5jdGlvbiIpe3ZhciBvPXQucmV0dXJuO3RyeXtpLmNvbXBvbmVudERpZE1vdW50KCl9Y2F0Y2godyl7emUodCxvLHcpfX12YXIgYT10LnJldHVybjt0cnl7d2EodCl9Y2F0Y2godyl7emUodCxhLHcpfWJyZWFrO2Nhc2UgNTp2YXIgZj10LnJldHVybjt0cnl7d2EodCl9Y2F0Y2godyl7emUodCxmLHcpfX19Y2F0Y2godyl7emUodCx0LnJldHVybix3KX1pZih0PT09ZSl7Vj1udWxsO2JyZWFrfXZhciBnPXQuc2libGluZztpZihnIT09bnVsbCl7Zy5yZXR1cm49dC5yZXR1cm4sVj1nO2JyZWFrfVY9dC5yZXR1cm59fXZhciBibT1NYXRoLmNlaWwsZGw9Sy5SZWFjdEN1cnJlbnREaXNwYXRjaGVyLENhPUsuUmVhY3RDdXJyZW50T3duZXIsX3Q9Sy5SZWFjdEN1cnJlbnRCYXRjaENvbmZpZyxtZT0wLEtlPW51bGwsQmU9bnVsbCxZZT0wLGt0PTAscXI9Um4oMCkscWU9MCxLaT1udWxsLHJyPTAsZmw9MCxFYT0wLEdpPW51bGwscHQ9bnVsbCxqYT0wLGJyPTEvMCxmbj1udWxsLGhsPSExLE5hPW51bGwsT249bnVsbCxwbD0hMSxEbj1udWxsLG1sPTAsSmk9MCxSYT1udWxsLGdsPS0xLHZsPTA7ZnVuY3Rpb24gb3QoKXtyZXR1cm4obWUmNikhPT0wPyRlKCk6Z2whPT0tMT9nbDpnbD0kZSgpfWZ1bmN0aW9uIEluKGUpe3JldHVybihlLm1vZGUmMSk9PT0wPzE6KG1lJjIpIT09MCYmWWUhPT0wP1llJi1ZZTpQbS50cmFuc2l0aW9uIT09bnVsbD8odmw9PT0wJiYodmw9bGMoKSksdmwpOihlPUNlLGUhPT0wfHwoZT13aW5kb3cuZXZlbnQsZT1lPT09dm9pZCAwPzE2Om1jKGUudHlwZSkpLGUpfWZ1bmN0aW9uIEJ0KGUsdCxuLGkpe2lmKDUwPEppKXRocm93IEppPTAsUmE9bnVsbCxFcnJvcihsKDE4NSkpO3dpKGUsbixpKSwoKG1lJjIpPT09MHx8ZSE9PUtlKSYmKGU9PT1LZSYmKChtZSYyKT09PTAmJihmbHw9bikscWU9PT00JiZNbihlLFllKSksbXQoZSxpKSxuPT09MSYmbWU9PT0wJiYodC5tb2RlJjEpPT09MCYmKGJyPSRlKCkrNTAwLGJzJiZfbigpKSl9ZnVuY3Rpb24gbXQoZSx0KXt2YXIgbj1lLmNhbGxiYWNrTm9kZTtQcChlLHQpO3ZhciBpPU5zKGUsZT09PUtlP1llOjApO2lmKGk9PT0wKW4hPT1udWxsJiZyYyhuKSxlLmNhbGxiYWNrTm9kZT1udWxsLGUuY2FsbGJhY2tQcmlvcml0eT0wO2Vsc2UgaWYodD1pJi1pLGUuY2FsbGJhY2tQcmlvcml0eSE9PXQpe2lmKG4hPW51bGwmJnJjKG4pLHQ9PT0xKWUudGFnPT09MD9SbShnZi5iaW5kKG51bGwsZSkpOmVkKGdmLmJpbmQobnVsbCxlKSksQ20oZnVuY3Rpb24oKXsobWUmNik9PT0wJiZfbigpfSksbj1udWxsO2Vsc2V7c3dpdGNoKG9jKGkpKXtjYXNlIDE6bj1zbzticmVhaztjYXNlIDQ6bj1pYzticmVhaztjYXNlIDE2Om49a3M7YnJlYWs7Y2FzZSA1MzY4NzA5MTI6bj1zYzticmVhaztkZWZhdWx0Om49a3N9bj1FZihuLG1mLmJpbmQobnVsbCxlKSl9ZS5jYWxsYmFja1ByaW9yaXR5PXQsZS5jYWxsYmFja05vZGU9bn19ZnVuY3Rpb24gbWYoZSx0KXtpZihnbD0tMSx2bD0wLChtZSY2KSE9PTApdGhyb3cgRXJyb3IobCgzMjcpKTt2YXIgbj1lLmNhbGxiYWNrTm9kZTtpZihXcigpJiZlLmNhbGxiYWNrTm9kZSE9PW4pcmV0dXJuIG51bGw7dmFyIGk9TnMoZSxlPT09S2U/WWU6MCk7aWYoaT09PTApcmV0dXJuIG51bGw7aWYoKGkmMzApIT09MHx8KGkmZS5leHBpcmVkTGFuZXMpIT09MHx8dCl0PXlsKGUsaSk7ZWxzZXt0PWk7dmFyIG89bWU7bWV8PTI7dmFyIGE9eWYoKTsoS2UhPT1lfHxZZSE9PXQpJiYoZm49bnVsbCxicj0kZSgpKzUwMCxzcihlLHQpKTtkbyB0cnl7S20oKTticmVha31jYXRjaChnKXt2ZihlLGcpfXdoaWxlKCEwKTtibygpLGRsLmN1cnJlbnQ9YSxtZT1vLEJlIT09bnVsbD90PTA6KEtlPW51bGwsWWU9MCx0PXFlKX1pZih0IT09MCl7aWYodD09PTImJihvPWxvKGUpLG8hPT0wJiYoaT1vLHQ9UGEoZSxvKSkpLHQ9PT0xKXRocm93IG49S2ksc3IoZSwwKSxNbihlLGkpLG10KGUsJGUoKSksbjtpZih0PT09NilNbihlLGkpO2Vsc2V7aWYobz1lLmN1cnJlbnQuYWx0ZXJuYXRlLChpJjMwKT09PTAmJiFXbShvKSYmKHQ9eWwoZSxpKSx0PT09MiYmKGE9bG8oZSksYSE9PTAmJihpPWEsdD1QYShlLGEpKSksdD09PTEpKXRocm93IG49S2ksc3IoZSwwKSxNbihlLGkpLG10KGUsJGUoKSksbjtzd2l0Y2goZS5maW5pc2hlZFdvcms9byxlLmZpbmlzaGVkTGFuZXM9aSx0KXtjYXNlIDA6Y2FzZSAxOnRocm93IEVycm9yKGwoMzQ1KSk7Y2FzZSAyOmxyKGUscHQsZm4pO2JyZWFrO2Nhc2UgMzppZihNbihlLGkpLChpJjEzMDAyMzQyNCk9PT1pJiYodD1qYSs1MDAtJGUoKSwxMDx0KSl7aWYoTnMoZSwwKSE9PTApYnJlYWs7aWYobz1lLnN1c3BlbmRlZExhbmVzLChvJmkpIT09aSl7b3QoKSxlLnBpbmdlZExhbmVzfD1lLnN1c3BlbmRlZExhbmVzJm87YnJlYWt9ZS50aW1lb3V0SGFuZGxlPURvKGxyLmJpbmQobnVsbCxlLHB0LGZuKSx0KTticmVha31scihlLHB0LGZuKTticmVhaztjYXNlIDQ6aWYoTW4oZSxpKSwoaSY0MTk0MjQwKT09PWkpYnJlYWs7Zm9yKHQ9ZS5ldmVudFRpbWVzLG89LTE7MDxpOyl7dmFyIGY9MzEtSXQoaSk7YT0xPDxmLGY9dFtmXSxmPm8mJihvPWYpLGkmPX5hfWlmKGk9byxpPSRlKCktaSxpPSgxMjA+aT8xMjA6NDgwPmk/NDgwOjEwODA+aT8xMDgwOjE5MjA+aT8xOTIwOjNlMz5pPzNlMzo0MzIwPmk/NDMyMDoxOTYwKmJtKGkvMTk2MCkpLWksMTA8aSl7ZS50aW1lb3V0SGFuZGxlPURvKGxyLmJpbmQobnVsbCxlLHB0LGZuKSxpKTticmVha31scihlLHB0LGZuKTticmVhaztjYXNlIDU6bHIoZSxwdCxmbik7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihsKDMyOSkpfX19cmV0dXJuIG10KGUsJGUoKSksZS5jYWxsYmFja05vZGU9PT1uP21mLmJpbmQobnVsbCxlKTpudWxsfWZ1bmN0aW9uIFBhKGUsdCl7dmFyIG49R2k7cmV0dXJuIGUuY3VycmVudC5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCYmKHNyKGUsdCkuZmxhZ3N8PTI1NiksZT15bChlLHQpLGUhPT0yJiYodD1wdCxwdD1uLHQhPT1udWxsJiZfYSh0KSksZX1mdW5jdGlvbiBfYShlKXtwdD09PW51bGw/cHQ9ZTpwdC5wdXNoLmFwcGx5KHB0LGUpfWZ1bmN0aW9uIFdtKGUpe2Zvcih2YXIgdD1lOzspe2lmKHQuZmxhZ3MmMTYzODQpe3ZhciBuPXQudXBkYXRlUXVldWU7aWYobiE9PW51bGwmJihuPW4uc3RvcmVzLG4hPT1udWxsKSlmb3IodmFyIGk9MDtpPG4ubGVuZ3RoO2krKyl7dmFyIG89bltpXSxhPW8uZ2V0U25hcHNob3Q7bz1vLnZhbHVlO3RyeXtpZighTXQoYSgpLG8pKXJldHVybiExfWNhdGNoe3JldHVybiExfX19aWYobj10LmNoaWxkLHQuc3VidHJlZUZsYWdzJjE2Mzg0JiZuIT09bnVsbCluLnJldHVybj10LHQ9bjtlbHNle2lmKHQ9PT1lKWJyZWFrO2Zvcig7dC5zaWJsaW5nPT09bnVsbDspe2lmKHQucmV0dXJuPT09bnVsbHx8dC5yZXR1cm49PT1lKXJldHVybiEwO3Q9dC5yZXR1cm59dC5zaWJsaW5nLnJldHVybj10LnJldHVybix0PXQuc2libGluZ319cmV0dXJuITB9ZnVuY3Rpb24gTW4oZSx0KXtmb3IodCY9fkVhLHQmPX5mbCxlLnN1c3BlbmRlZExhbmVzfD10LGUucGluZ2VkTGFuZXMmPX50LGU9ZS5leHBpcmF0aW9uVGltZXM7MDx0Oyl7dmFyIG49MzEtSXQodCksaT0xPDxuO2Vbbl09LTEsdCY9fml9fWZ1bmN0aW9uIGdmKGUpe2lmKChtZSY2KSE9PTApdGhyb3cgRXJyb3IobCgzMjcpKTtXcigpO3ZhciB0PU5zKGUsMCk7aWYoKHQmMSk9PT0wKXJldHVybiBtdChlLCRlKCkpLG51bGw7dmFyIG49eWwoZSx0KTtpZihlLnRhZyE9PTAmJm49PT0yKXt2YXIgaT1sbyhlKTtpIT09MCYmKHQ9aSxuPVBhKGUsaSkpfWlmKG49PT0xKXRocm93IG49S2ksc3IoZSwwKSxNbihlLHQpLG10KGUsJGUoKSksbjtpZihuPT09Nil0aHJvdyBFcnJvcihsKDM0NSkpO3JldHVybiBlLmZpbmlzaGVkV29yaz1lLmN1cnJlbnQuYWx0ZXJuYXRlLGUuZmluaXNoZWRMYW5lcz10LGxyKGUscHQsZm4pLG10KGUsJGUoKSksbnVsbH1mdW5jdGlvbiBUYShlLHQpe3ZhciBuPW1lO21lfD0xO3RyeXtyZXR1cm4gZSh0KX1maW5hbGx5e21lPW4sbWU9PT0wJiYoYnI9JGUoKSs1MDAsYnMmJl9uKCkpfX1mdW5jdGlvbiBpcihlKXtEbiE9PW51bGwmJkRuLnRhZz09PTAmJihtZSY2KT09PTAmJldyKCk7dmFyIHQ9bWU7bWV8PTE7dmFyIG49X3QudHJhbnNpdGlvbixpPUNlO3RyeXtpZihfdC50cmFuc2l0aW9uPW51bGwsQ2U9MSxlKXJldHVybiBlKCl9ZmluYWxseXtDZT1pLF90LnRyYW5zaXRpb249bixtZT10LChtZSY2KT09PTAmJl9uKCl9fWZ1bmN0aW9uIExhKCl7a3Q9cXIuY3VycmVudCxQZShxcil9ZnVuY3Rpb24gc3IoZSx0KXtlLmZpbmlzaGVkV29yaz1udWxsLGUuZmluaXNoZWRMYW5lcz0wO3ZhciBuPWUudGltZW91dEhhbmRsZTtpZihuIT09LTEmJihlLnRpbWVvdXRIYW5kbGU9LTEsa20obikpLEJlIT09bnVsbClmb3Iobj1CZS5yZXR1cm47biE9PW51bGw7KXt2YXIgaT1uO3N3aXRjaChVbyhpKSxpLnRhZyl7Y2FzZSAxOmk9aS50eXBlLmNoaWxkQ29udGV4dFR5cGVzLGkhPW51bGwmJlFzKCk7YnJlYWs7Y2FzZSAzOkJyKCksUGUoZHQpLFBlKFhlKSxabygpO2JyZWFrO2Nhc2UgNTpZbyhpKTticmVhaztjYXNlIDQ6QnIoKTticmVhaztjYXNlIDEzOlBlKE9lKTticmVhaztjYXNlIDE5OlBlKE9lKTticmVhaztjYXNlIDEwOldvKGkudHlwZS5fY29udGV4dCk7YnJlYWs7Y2FzZSAyMjpjYXNlIDIzOkxhKCl9bj1uLnJldHVybn1pZihLZT1lLEJlPWU9em4oZS5jdXJyZW50LG51bGwpLFllPWt0PXQscWU9MCxLaT1udWxsLEVhPWZsPXJyPTAscHQ9R2k9bnVsbCxlciE9PW51bGwpe2Zvcih0PTA7dDxlci5sZW5ndGg7dCsrKWlmKG49ZXJbdF0saT1uLmludGVybGVhdmVkLGkhPT1udWxsKXtuLmludGVybGVhdmVkPW51bGw7dmFyIG89aS5uZXh0LGE9bi5wZW5kaW5nO2lmKGEhPT1udWxsKXt2YXIgZj1hLm5leHQ7YS5uZXh0PW8saS5uZXh0PWZ9bi5wZW5kaW5nPWl9ZXI9bnVsbH1yZXR1cm4gZX1mdW5jdGlvbiB2ZihlLHQpe2Rve3ZhciBuPUJlO3RyeXtpZihibygpLHRsLmN1cnJlbnQ9c2wsbmwpe2Zvcih2YXIgaT1EZS5tZW1vaXplZFN0YXRlO2khPT1udWxsOyl7dmFyIG89aS5xdWV1ZTtvIT09bnVsbCYmKG8ucGVuZGluZz1udWxsKSxpPWkubmV4dH1ubD0hMX1pZihucj0wLFZlPVFlPURlPW51bGwsSGk9ITEsUWk9MCxDYS5jdXJyZW50PW51bGwsbj09PW51bGx8fG4ucmV0dXJuPT09bnVsbCl7cWU9MSxLaT10LEJlPW51bGw7YnJlYWt9ZTp7dmFyIGE9ZSxmPW4ucmV0dXJuLGc9bix3PXQ7aWYodD1ZZSxnLmZsYWdzfD0zMjc2OCx3IT09bnVsbCYmdHlwZW9mIHc9PSJvYmplY3QiJiZ0eXBlb2Ygdy50aGVuPT0iZnVuY3Rpb24iKXt2YXIgVD13LHo9ZyxBPXoudGFnO2lmKCh6Lm1vZGUmMSk9PT0wJiYoQT09PTB8fEE9PT0xMXx8QT09PTE1KSl7dmFyIEQ9ei5hbHRlcm5hdGU7RD8oei51cGRhdGVRdWV1ZT1ELnVwZGF0ZVF1ZXVlLHoubWVtb2l6ZWRTdGF0ZT1ELm1lbW9pemVkU3RhdGUsei5sYW5lcz1ELmxhbmVzKTooei51cGRhdGVRdWV1ZT1udWxsLHoubWVtb2l6ZWRTdGF0ZT1udWxsKX12YXIgVz1CZChmKTtpZihXIT09bnVsbCl7Vy5mbGFncyY9LTI1NyxIZChXLGYsZyxhLHQpLFcubW9kZSYxJiZVZChhLFQsdCksdD1XLHc9VDt2YXIgSj10LnVwZGF0ZVF1ZXVlO2lmKEo9PT1udWxsKXt2YXIgWT1uZXcgU2V0O1kuYWRkKHcpLHQudXBkYXRlUXVldWU9WX1lbHNlIEouYWRkKHcpO2JyZWFrIGV9ZWxzZXtpZigodCYxKT09PTApe1VkKGEsVCx0KSxGYSgpO2JyZWFrIGV9dz1FcnJvcihsKDQyNikpfX1lbHNlIGlmKFRlJiZnLm1vZGUmMSl7dmFyIFVlPUJkKGYpO2lmKFVlIT09bnVsbCl7KFVlLmZsYWdzJjY1NTM2KT09PTAmJihVZS5mbGFnc3w9MjU2KSxIZChVZSxmLGcsYSx0KSxRbyhIcih3LGcpKTticmVhayBlfX1hPXc9SHIodyxnKSxxZSE9PTQmJihxZT0yKSxHaT09PW51bGw/R2k9W2FdOkdpLnB1c2goYSksYT1mO2Rve3N3aXRjaChhLnRhZyl7Y2FzZSAzOmEuZmxhZ3N8PTY1NTM2LHQmPS10LGEubGFuZXN8PXQ7dmFyIFI9QWQoYSx3LHQpO2RkKGEsUik7YnJlYWsgZTtjYXNlIDE6Zz13O3ZhciBrPWEudHlwZSxQPWEuc3RhdGVOb2RlO2lmKChhLmZsYWdzJjEyOCk9PT0wJiYodHlwZW9mIGsuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yPT0iZnVuY3Rpb24ifHxQIT09bnVsbCYmdHlwZW9mIFAuY29tcG9uZW50RGlkQ2F0Y2g9PSJmdW5jdGlvbiImJihPbj09PW51bGx8fCFPbi5oYXMoUCkpKSl7YS5mbGFnc3w9NjU1MzYsdCY9LXQsYS5sYW5lc3w9dDt2YXIgVT0kZChhLGcsdCk7ZGQoYSxVKTticmVhayBlfX1hPWEucmV0dXJufXdoaWxlKGEhPT1udWxsKX13ZihuKX1jYXRjaChYKXt0PVgsQmU9PT1uJiZuIT09bnVsbCYmKEJlPW49bi5yZXR1cm4pO2NvbnRpbnVlfWJyZWFrfXdoaWxlKCEwKX1mdW5jdGlvbiB5Zigpe3ZhciBlPWRsLmN1cnJlbnQ7cmV0dXJuIGRsLmN1cnJlbnQ9c2wsZT09PW51bGw/c2w6ZX1mdW5jdGlvbiBGYSgpeyhxZT09PTB8fHFlPT09M3x8cWU9PT0yKSYmKHFlPTQpLEtlPT09bnVsbHx8KHJyJjI2ODQzNTQ1NSk9PT0wJiYoZmwmMjY4NDM1NDU1KT09PTB8fE1uKEtlLFllKX1mdW5jdGlvbiB5bChlLHQpe3ZhciBuPW1lO21lfD0yO3ZhciBpPXlmKCk7KEtlIT09ZXx8WWUhPT10KSYmKGZuPW51bGwsc3IoZSx0KSk7ZG8gdHJ5e1ZtKCk7YnJlYWt9Y2F0Y2gobyl7dmYoZSxvKX13aGlsZSghMCk7aWYoYm8oKSxtZT1uLGRsLmN1cnJlbnQ9aSxCZSE9PW51bGwpdGhyb3cgRXJyb3IobCgyNjEpKTtyZXR1cm4gS2U9bnVsbCxZZT0wLHFlfWZ1bmN0aW9uIFZtKCl7Zm9yKDtCZSE9PW51bGw7KXhmKEJlKX1mdW5jdGlvbiBLbSgpe2Zvcig7QmUhPT1udWxsJiYheHAoKTspeGYoQmUpfWZ1bmN0aW9uIHhmKGUpe3ZhciB0PUNmKGUuYWx0ZXJuYXRlLGUsa3QpO2UubWVtb2l6ZWRQcm9wcz1lLnBlbmRpbmdQcm9wcyx0PT09bnVsbD93ZihlKTpCZT10LENhLmN1cnJlbnQ9bnVsbH1mdW5jdGlvbiB3ZihlKXt2YXIgdD1lO2Rve3ZhciBuPXQuYWx0ZXJuYXRlO2lmKGU9dC5yZXR1cm4sKHQuZmxhZ3MmMzI3NjgpPT09MCl7aWYobj1VbShuLHQsa3QpLG4hPT1udWxsKXtCZT1uO3JldHVybn19ZWxzZXtpZihuPUJtKG4sdCksbiE9PW51bGwpe24uZmxhZ3MmPTMyNzY3LEJlPW47cmV0dXJufWlmKGUhPT1udWxsKWUuZmxhZ3N8PTMyNzY4LGUuc3VidHJlZUZsYWdzPTAsZS5kZWxldGlvbnM9bnVsbDtlbHNle3FlPTYsQmU9bnVsbDtyZXR1cm59fWlmKHQ9dC5zaWJsaW5nLHQhPT1udWxsKXtCZT10O3JldHVybn1CZT10PWV9d2hpbGUodCE9PW51bGwpO3FlPT09MCYmKHFlPTUpfWZ1bmN0aW9uIGxyKGUsdCxuKXt2YXIgaT1DZSxvPV90LnRyYW5zaXRpb247dHJ5e190LnRyYW5zaXRpb249bnVsbCxDZT0xLEdtKGUsdCxuLGkpfWZpbmFsbHl7X3QudHJhbnNpdGlvbj1vLENlPWl9cmV0dXJuIG51bGx9ZnVuY3Rpb24gR20oZSx0LG4saSl7ZG8gV3IoKTt3aGlsZShEbiE9PW51bGwpO2lmKChtZSY2KSE9PTApdGhyb3cgRXJyb3IobCgzMjcpKTtuPWUuZmluaXNoZWRXb3JrO3ZhciBvPWUuZmluaXNoZWRMYW5lcztpZihuPT09bnVsbClyZXR1cm4gbnVsbDtpZihlLmZpbmlzaGVkV29yaz1udWxsLGUuZmluaXNoZWRMYW5lcz0wLG49PT1lLmN1cnJlbnQpdGhyb3cgRXJyb3IobCgxNzcpKTtlLmNhbGxiYWNrTm9kZT1udWxsLGUuY2FsbGJhY2tQcmlvcml0eT0wO3ZhciBhPW4ubGFuZXN8bi5jaGlsZExhbmVzO2lmKF9wKGUsYSksZT09PUtlJiYoQmU9S2U9bnVsbCxZZT0wKSwobi5zdWJ0cmVlRmxhZ3MmMjA2NCk9PT0wJiYobi5mbGFncyYyMDY0KT09PTB8fHBsfHwocGw9ITAsRWYoa3MsZnVuY3Rpb24oKXtyZXR1cm4gV3IoKSxudWxsfSkpLGE9KG4uZmxhZ3MmMTU5OTApIT09MCwobi5zdWJ0cmVlRmxhZ3MmMTU5OTApIT09MHx8YSl7YT1fdC50cmFuc2l0aW9uLF90LnRyYW5zaXRpb249bnVsbDt2YXIgZj1DZTtDZT0xO3ZhciBnPW1lO21lfD00LENhLmN1cnJlbnQ9bnVsbCxRbShlLG4pLGNmKG4sZSksbW0oRm8pLF9zPSEhTG8sRm89TG89bnVsbCxlLmN1cnJlbnQ9bixxbShuKSx3cCgpLG1lPWcsQ2U9ZixfdC50cmFuc2l0aW9uPWF9ZWxzZSBlLmN1cnJlbnQ9bjtpZihwbCYmKHBsPSExLERuPWUsbWw9byksYT1lLnBlbmRpbmdMYW5lcyxhPT09MCYmKE9uPW51bGwpLENwKG4uc3RhdGVOb2RlKSxtdChlLCRlKCkpLHQhPT1udWxsKWZvcihpPWUub25SZWNvdmVyYWJsZUVycm9yLG49MDtuPHQubGVuZ3RoO24rKylvPXRbbl0saShvLnZhbHVlLHtjb21wb25lbnRTdGFjazpvLnN0YWNrLGRpZ2VzdDpvLmRpZ2VzdH0pO2lmKGhsKXRocm93IGhsPSExLGU9TmEsTmE9bnVsbCxlO3JldHVybihtbCYxKSE9PTAmJmUudGFnIT09MCYmV3IoKSxhPWUucGVuZGluZ0xhbmVzLChhJjEpIT09MD9lPT09UmE/SmkrKzooSmk9MCxSYT1lKTpKaT0wLF9uKCksbnVsbH1mdW5jdGlvbiBXcigpe2lmKERuIT09bnVsbCl7dmFyIGU9b2MobWwpLHQ9X3QudHJhbnNpdGlvbixuPUNlO3RyeXtpZihfdC50cmFuc2l0aW9uPW51bGwsQ2U9MTY+ZT8xNjplLERuPT09bnVsbCl2YXIgaT0hMTtlbHNle2lmKGU9RG4sRG49bnVsbCxtbD0wLChtZSY2KSE9PTApdGhyb3cgRXJyb3IobCgzMzEpKTt2YXIgbz1tZTtmb3IobWV8PTQsVj1lLmN1cnJlbnQ7ViE9PW51bGw7KXt2YXIgYT1WLGY9YS5jaGlsZDtpZigoVi5mbGFncyYxNikhPT0wKXt2YXIgZz1hLmRlbGV0aW9ucztpZihnIT09bnVsbCl7Zm9yKHZhciB3PTA7dzxnLmxlbmd0aDt3Kyspe3ZhciBUPWdbd107Zm9yKFY9VDtWIT09bnVsbDspe3ZhciB6PVY7c3dpdGNoKHoudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OlZpKDgseixhKX12YXIgQT16LmNoaWxkO2lmKEEhPT1udWxsKUEucmV0dXJuPXosVj1BO2Vsc2UgZm9yKDtWIT09bnVsbDspe3o9Vjt2YXIgRD16LnNpYmxpbmcsVz16LnJldHVybjtpZihzZih6KSx6PT09VCl7Vj1udWxsO2JyZWFrfWlmKEQhPT1udWxsKXtELnJldHVybj1XLFY9RDticmVha31WPVd9fX12YXIgSj1hLmFsdGVybmF0ZTtpZihKIT09bnVsbCl7dmFyIFk9Si5jaGlsZDtpZihZIT09bnVsbCl7Si5jaGlsZD1udWxsO2Rve3ZhciBVZT1ZLnNpYmxpbmc7WS5zaWJsaW5nPW51bGwsWT1VZX13aGlsZShZIT09bnVsbCl9fVY9YX19aWYoKGEuc3VidHJlZUZsYWdzJjIwNjQpIT09MCYmZiE9PW51bGwpZi5yZXR1cm49YSxWPWY7ZWxzZSBlOmZvcig7ViE9PW51bGw7KXtpZihhPVYsKGEuZmxhZ3MmMjA0OCkhPT0wKXN3aXRjaChhLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpWaSg5LGEsYS5yZXR1cm4pfXZhciBSPWEuc2libGluZztpZihSIT09bnVsbCl7Ui5yZXR1cm49YS5yZXR1cm4sVj1SO2JyZWFrIGV9Vj1hLnJldHVybn19dmFyIGs9ZS5jdXJyZW50O2ZvcihWPWs7ViE9PW51bGw7KXtmPVY7dmFyIFA9Zi5jaGlsZDtpZigoZi5zdWJ0cmVlRmxhZ3MmMjA2NCkhPT0wJiZQIT09bnVsbClQLnJldHVybj1mLFY9UDtlbHNlIGU6Zm9yKGY9aztWIT09bnVsbDspe2lmKGc9ViwoZy5mbGFncyYyMDQ4KSE9PTApdHJ5e3N3aXRjaChnLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTpjbCg5LGcpfX1jYXRjaChYKXt6ZShnLGcucmV0dXJuLFgpfWlmKGc9PT1mKXtWPW51bGw7YnJlYWsgZX12YXIgVT1nLnNpYmxpbmc7aWYoVSE9PW51bGwpe1UucmV0dXJuPWcucmV0dXJuLFY9VTticmVhayBlfVY9Zy5yZXR1cm59fWlmKG1lPW8sX24oKSxLdCYmdHlwZW9mIEt0Lm9uUG9zdENvbW1pdEZpYmVyUm9vdD09ImZ1bmN0aW9uIil0cnl7S3Qub25Qb3N0Q29tbWl0RmliZXJSb290KENzLGUpfWNhdGNoe31pPSEwfXJldHVybiBpfWZpbmFsbHl7Q2U9bixfdC50cmFuc2l0aW9uPXR9fXJldHVybiExfWZ1bmN0aW9uIFNmKGUsdCxuKXt0PUhyKG4sdCksdD1BZChlLHQsMSksZT1MbihlLHQsMSksdD1vdCgpLGUhPT1udWxsJiYod2koZSwxLHQpLG10KGUsdCkpfWZ1bmN0aW9uIHplKGUsdCxuKXtpZihlLnRhZz09PTMpU2YoZSxlLG4pO2Vsc2UgZm9yKDt0IT09bnVsbDspe2lmKHQudGFnPT09Myl7U2YodCxlLG4pO2JyZWFrfWVsc2UgaWYodC50YWc9PT0xKXt2YXIgaT10LnN0YXRlTm9kZTtpZih0eXBlb2YgdC50eXBlLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcj09ImZ1bmN0aW9uInx8dHlwZW9mIGkuY29tcG9uZW50RGlkQ2F0Y2g9PSJmdW5jdGlvbiImJihPbj09PW51bGx8fCFPbi5oYXMoaSkpKXtlPUhyKG4sZSksZT0kZCh0LGUsMSksdD1Mbih0LGUsMSksZT1vdCgpLHQhPT1udWxsJiYod2kodCwxLGUpLG10KHQsZSkpO2JyZWFrfX10PXQucmV0dXJufX1mdW5jdGlvbiBKbShlLHQsbil7dmFyIGk9ZS5waW5nQ2FjaGU7aSE9PW51bGwmJmkuZGVsZXRlKHQpLHQ9b3QoKSxlLnBpbmdlZExhbmVzfD1lLnN1c3BlbmRlZExhbmVzJm4sS2U9PT1lJiYoWWUmbik9PT1uJiYocWU9PT00fHxxZT09PTMmJihZZSYxMzAwMjM0MjQpPT09WWUmJjUwMD4kZSgpLWphP3NyKGUsMCk6RWF8PW4pLG10KGUsdCl9ZnVuY3Rpb24ga2YoZSx0KXt0PT09MCYmKChlLm1vZGUmMSk9PT0wP3Q9MToodD1qcyxqczw8PTEsKGpzJjEzMDAyMzQyNCk9PT0wJiYoanM9NDE5NDMwNCkpKTt2YXIgbj1vdCgpO2U9dW4oZSx0KSxlIT09bnVsbCYmKHdpKGUsdCxuKSxtdChlLG4pKX1mdW5jdGlvbiBZbShlKXt2YXIgdD1lLm1lbW9pemVkU3RhdGUsbj0wO3QhPT1udWxsJiYobj10LnJldHJ5TGFuZSksa2YoZSxuKX1mdW5jdGlvbiBYbShlLHQpe3ZhciBuPTA7c3dpdGNoKGUudGFnKXtjYXNlIDEzOnZhciBpPWUuc3RhdGVOb2RlLG89ZS5tZW1vaXplZFN0YXRlO28hPT1udWxsJiYobj1vLnJldHJ5TGFuZSk7YnJlYWs7Y2FzZSAxOTppPWUuc3RhdGVOb2RlO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IobCgzMTQpKX1pIT09bnVsbCYmaS5kZWxldGUodCksa2YoZSxuKX12YXIgQ2Y7Q2Y9ZnVuY3Rpb24oZSx0LG4pe2lmKGUhPT1udWxsKWlmKGUubWVtb2l6ZWRQcm9wcyE9PXQucGVuZGluZ1Byb3BzfHxkdC5jdXJyZW50KWh0PSEwO2Vsc2V7aWYoKGUubGFuZXMmbik9PT0wJiYodC5mbGFncyYxMjgpPT09MClyZXR1cm4gaHQ9ITEsJG0oZSx0LG4pO2h0PShlLmZsYWdzJjEzMTA3MikhPT0wfWVsc2UgaHQ9ITEsVGUmJih0LmZsYWdzJjEwNDg1NzYpIT09MCYmdGQodCxWcyx0LmluZGV4KTtzd2l0Y2godC5sYW5lcz0wLHQudGFnKXtjYXNlIDI6dmFyIGk9dC50eXBlO2FsKGUsdCksZT10LnBlbmRpbmdQcm9wczt2YXIgbz1Ecih0LFhlLmN1cnJlbnQpO1VyKHQsbiksbz1uYShudWxsLHQsaSxlLG8sbik7dmFyIGE9cmEoKTtyZXR1cm4gdC5mbGFnc3w9MSx0eXBlb2Ygbz09Im9iamVjdCImJm8hPT1udWxsJiZ0eXBlb2Ygby5yZW5kZXI9PSJmdW5jdGlvbiImJm8uJCR0eXBlb2Y9PT12b2lkIDA/KHQudGFnPTEsdC5tZW1vaXplZFN0YXRlPW51bGwsdC51cGRhdGVRdWV1ZT1udWxsLGZ0KGkpPyhhPSEwLHFzKHQpKTphPSExLHQubWVtb2l6ZWRTdGF0ZT1vLnN0YXRlIT09bnVsbCYmby5zdGF0ZSE9PXZvaWQgMD9vLnN0YXRlOm51bGwsR28odCksby51cGRhdGVyPWxsLHQuc3RhdGVOb2RlPW8sby5fcmVhY3RJbnRlcm5hbHM9dCx1YSh0LGksZSxuKSx0PWhhKG51bGwsdCxpLCEwLGEsbikpOih0LnRhZz0wLFRlJiZhJiYkbyh0KSxsdChudWxsLHQsbyxuKSx0PXQuY2hpbGQpLHQ7Y2FzZSAxNjppPXQuZWxlbWVudFR5cGU7ZTp7c3dpdGNoKGFsKGUsdCksZT10LnBlbmRpbmdQcm9wcyxvPWkuX2luaXQsaT1vKGkuX3BheWxvYWQpLHQudHlwZT1pLG89dC50YWc9ZWcoaSksZT1BdChpLGUpLG8pe2Nhc2UgMDp0PWZhKG51bGwsdCxpLGUsbik7YnJlYWsgZTtjYXNlIDE6dD1LZChudWxsLHQsaSxlLG4pO2JyZWFrIGU7Y2FzZSAxMTp0PVFkKG51bGwsdCxpLGUsbik7YnJlYWsgZTtjYXNlIDE0OnQ9cWQobnVsbCx0LGksQXQoaS50eXBlLGUpLG4pO2JyZWFrIGV9dGhyb3cgRXJyb3IobCgzMDYsaSwiIikpfXJldHVybiB0O2Nhc2UgMDpyZXR1cm4gaT10LnR5cGUsbz10LnBlbmRpbmdQcm9wcyxvPXQuZWxlbWVudFR5cGU9PT1pP286QXQoaSxvKSxmYShlLHQsaSxvLG4pO2Nhc2UgMTpyZXR1cm4gaT10LnR5cGUsbz10LnBlbmRpbmdQcm9wcyxvPXQuZWxlbWVudFR5cGU9PT1pP286QXQoaSxvKSxLZChlLHQsaSxvLG4pO2Nhc2UgMzplOntpZihHZCh0KSxlPT09bnVsbCl0aHJvdyBFcnJvcihsKDM4NykpO2k9dC5wZW5kaW5nUHJvcHMsYT10Lm1lbW9pemVkU3RhdGUsbz1hLmVsZW1lbnQsY2QoZSx0KSxacyh0LGksbnVsbCxuKTt2YXIgZj10Lm1lbW9pemVkU3RhdGU7aWYoaT1mLmVsZW1lbnQsYS5pc0RlaHlkcmF0ZWQpaWYoYT17ZWxlbWVudDppLGlzRGVoeWRyYXRlZDohMSxjYWNoZTpmLmNhY2hlLHBlbmRpbmdTdXNwZW5zZUJvdW5kYXJpZXM6Zi5wZW5kaW5nU3VzcGVuc2VCb3VuZGFyaWVzLHRyYW5zaXRpb25zOmYudHJhbnNpdGlvbnN9LHQudXBkYXRlUXVldWUuYmFzZVN0YXRlPWEsdC5tZW1vaXplZFN0YXRlPWEsdC5mbGFncyYyNTYpe289SHIoRXJyb3IobCg0MjMpKSx0KSx0PUpkKGUsdCxpLG4sbyk7YnJlYWsgZX1lbHNlIGlmKGkhPT1vKXtvPUhyKEVycm9yKGwoNDI0KSksdCksdD1KZChlLHQsaSxuLG8pO2JyZWFrIGV9ZWxzZSBmb3IoU3Q9Tm4odC5zdGF0ZU5vZGUuY29udGFpbmVySW5mby5maXJzdENoaWxkKSx3dD10LFRlPSEwLHp0PW51bGwsbj1hZCh0LG51bGwsaSxuKSx0LmNoaWxkPW47bjspbi5mbGFncz1uLmZsYWdzJi0zfDQwOTYsbj1uLnNpYmxpbmc7ZWxzZXtpZih6cigpLGk9PT1vKXt0PWRuKGUsdCxuKTticmVhayBlfWx0KGUsdCxpLG4pfXQ9dC5jaGlsZH1yZXR1cm4gdDtjYXNlIDU6cmV0dXJuIGhkKHQpLGU9PT1udWxsJiZIbyh0KSxpPXQudHlwZSxvPXQucGVuZGluZ1Byb3BzLGE9ZSE9PW51bGw/ZS5tZW1vaXplZFByb3BzOm51bGwsZj1vLmNoaWxkcmVuLE9vKGksbyk/Zj1udWxsOmEhPT1udWxsJiZPbyhpLGEpJiYodC5mbGFnc3w9MzIpLFZkKGUsdCksbHQoZSx0LGYsbiksdC5jaGlsZDtjYXNlIDY6cmV0dXJuIGU9PT1udWxsJiZIbyh0KSxudWxsO2Nhc2UgMTM6cmV0dXJuIFlkKGUsdCxuKTtjYXNlIDQ6cmV0dXJuIEpvKHQsdC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyksaT10LnBlbmRpbmdQcm9wcyxlPT09bnVsbD90LmNoaWxkPUFyKHQsbnVsbCxpLG4pOmx0KGUsdCxpLG4pLHQuY2hpbGQ7Y2FzZSAxMTpyZXR1cm4gaT10LnR5cGUsbz10LnBlbmRpbmdQcm9wcyxvPXQuZWxlbWVudFR5cGU9PT1pP286QXQoaSxvKSxRZChlLHQsaSxvLG4pO2Nhc2UgNzpyZXR1cm4gbHQoZSx0LHQucGVuZGluZ1Byb3BzLG4pLHQuY2hpbGQ7Y2FzZSA4OnJldHVybiBsdChlLHQsdC5wZW5kaW5nUHJvcHMuY2hpbGRyZW4sbiksdC5jaGlsZDtjYXNlIDEyOnJldHVybiBsdChlLHQsdC5wZW5kaW5nUHJvcHMuY2hpbGRyZW4sbiksdC5jaGlsZDtjYXNlIDEwOmU6e2lmKGk9dC50eXBlLl9jb250ZXh0LG89dC5wZW5kaW5nUHJvcHMsYT10Lm1lbW9pemVkUHJvcHMsZj1vLnZhbHVlLGplKEpzLGkuX2N1cnJlbnRWYWx1ZSksaS5fY3VycmVudFZhbHVlPWYsYSE9PW51bGwpaWYoTXQoYS52YWx1ZSxmKSl7aWYoYS5jaGlsZHJlbj09PW8uY2hpbGRyZW4mJiFkdC5jdXJyZW50KXt0PWRuKGUsdCxuKTticmVhayBlfX1lbHNlIGZvcihhPXQuY2hpbGQsYSE9PW51bGwmJihhLnJldHVybj10KTthIT09bnVsbDspe3ZhciBnPWEuZGVwZW5kZW5jaWVzO2lmKGchPT1udWxsKXtmPWEuY2hpbGQ7Zm9yKHZhciB3PWcuZmlyc3RDb250ZXh0O3chPT1udWxsOyl7aWYody5jb250ZXh0PT09aSl7aWYoYS50YWc9PT0xKXt3PWNuKC0xLG4mLW4pLHcudGFnPTI7dmFyIFQ9YS51cGRhdGVRdWV1ZTtpZihUIT09bnVsbCl7VD1ULnNoYXJlZDt2YXIgej1ULnBlbmRpbmc7ej09PW51bGw/dy5uZXh0PXc6KHcubmV4dD16Lm5leHQsei5uZXh0PXcpLFQucGVuZGluZz13fX1hLmxhbmVzfD1uLHc9YS5hbHRlcm5hdGUsdyE9PW51bGwmJih3LmxhbmVzfD1uKSxWbyhhLnJldHVybixuLHQpLGcubGFuZXN8PW47YnJlYWt9dz13Lm5leHR9fWVsc2UgaWYoYS50YWc9PT0xMClmPWEudHlwZT09PXQudHlwZT9udWxsOmEuY2hpbGQ7ZWxzZSBpZihhLnRhZz09PTE4KXtpZihmPWEucmV0dXJuLGY9PT1udWxsKXRocm93IEVycm9yKGwoMzQxKSk7Zi5sYW5lc3w9bixnPWYuYWx0ZXJuYXRlLGchPT1udWxsJiYoZy5sYW5lc3w9biksVm8oZixuLHQpLGY9YS5zaWJsaW5nfWVsc2UgZj1hLmNoaWxkO2lmKGYhPT1udWxsKWYucmV0dXJuPWE7ZWxzZSBmb3IoZj1hO2YhPT1udWxsOyl7aWYoZj09PXQpe2Y9bnVsbDticmVha31pZihhPWYuc2libGluZyxhIT09bnVsbCl7YS5yZXR1cm49Zi5yZXR1cm4sZj1hO2JyZWFrfWY9Zi5yZXR1cm59YT1mfWx0KGUsdCxvLmNoaWxkcmVuLG4pLHQ9dC5jaGlsZH1yZXR1cm4gdDtjYXNlIDk6cmV0dXJuIG89dC50eXBlLGk9dC5wZW5kaW5nUHJvcHMuY2hpbGRyZW4sVXIodCxuKSxvPVJ0KG8pLGk9aShvKSx0LmZsYWdzfD0xLGx0KGUsdCxpLG4pLHQuY2hpbGQ7Y2FzZSAxNDpyZXR1cm4gaT10LnR5cGUsbz1BdChpLHQucGVuZGluZ1Byb3BzKSxvPUF0KGkudHlwZSxvKSxxZChlLHQsaSxvLG4pO2Nhc2UgMTU6cmV0dXJuIGJkKGUsdCx0LnR5cGUsdC5wZW5kaW5nUHJvcHMsbik7Y2FzZSAxNzpyZXR1cm4gaT10LnR5cGUsbz10LnBlbmRpbmdQcm9wcyxvPXQuZWxlbWVudFR5cGU9PT1pP286QXQoaSxvKSxhbChlLHQpLHQudGFnPTEsZnQoaSk/KGU9ITAscXModCkpOmU9ITEsVXIodCxuKSxNZCh0LGksbyksdWEodCxpLG8sbiksaGEobnVsbCx0LGksITAsZSxuKTtjYXNlIDE5OnJldHVybiBaZChlLHQsbik7Y2FzZSAyMjpyZXR1cm4gV2QoZSx0LG4pfXRocm93IEVycm9yKGwoMTU2LHQudGFnKSl9O2Z1bmN0aW9uIEVmKGUsdCl7cmV0dXJuIG5jKGUsdCl9ZnVuY3Rpb24gWm0oZSx0LG4saSl7dGhpcy50YWc9ZSx0aGlzLmtleT1uLHRoaXMuc2libGluZz10aGlzLmNoaWxkPXRoaXMucmV0dXJuPXRoaXMuc3RhdGVOb2RlPXRoaXMudHlwZT10aGlzLmVsZW1lbnRUeXBlPW51bGwsdGhpcy5pbmRleD0wLHRoaXMucmVmPW51bGwsdGhpcy5wZW5kaW5nUHJvcHM9dCx0aGlzLmRlcGVuZGVuY2llcz10aGlzLm1lbW9pemVkU3RhdGU9dGhpcy51cGRhdGVRdWV1ZT10aGlzLm1lbW9pemVkUHJvcHM9bnVsbCx0aGlzLm1vZGU9aSx0aGlzLnN1YnRyZWVGbGFncz10aGlzLmZsYWdzPTAsdGhpcy5kZWxldGlvbnM9bnVsbCx0aGlzLmNoaWxkTGFuZXM9dGhpcy5sYW5lcz0wLHRoaXMuYWx0ZXJuYXRlPW51bGx9ZnVuY3Rpb24gVHQoZSx0LG4saSl7cmV0dXJuIG5ldyBabShlLHQsbixpKX1mdW5jdGlvbiBPYShlKXtyZXR1cm4gZT1lLnByb3RvdHlwZSwhKCFlfHwhZS5pc1JlYWN0Q29tcG9uZW50KX1mdW5jdGlvbiBlZyhlKXtpZih0eXBlb2YgZT09ImZ1bmN0aW9uIilyZXR1cm4gT2EoZSk/MTowO2lmKGUhPW51bGwpe2lmKGU9ZS4kJHR5cGVvZixlPT09c3QpcmV0dXJuIDExO2lmKGU9PT1hZSlyZXR1cm4gMTR9cmV0dXJuIDJ9ZnVuY3Rpb24gem4oZSx0KXt2YXIgbj1lLmFsdGVybmF0ZTtyZXR1cm4gbj09PW51bGw/KG49VHQoZS50YWcsdCxlLmtleSxlLm1vZGUpLG4uZWxlbWVudFR5cGU9ZS5lbGVtZW50VHlwZSxuLnR5cGU9ZS50eXBlLG4uc3RhdGVOb2RlPWUuc3RhdGVOb2RlLG4uYWx0ZXJuYXRlPWUsZS5hbHRlcm5hdGU9bik6KG4ucGVuZGluZ1Byb3BzPXQsbi50eXBlPWUudHlwZSxuLmZsYWdzPTAsbi5zdWJ0cmVlRmxhZ3M9MCxuLmRlbGV0aW9ucz1udWxsKSxuLmZsYWdzPWUuZmxhZ3MmMTQ2ODAwNjQsbi5jaGlsZExhbmVzPWUuY2hpbGRMYW5lcyxuLmxhbmVzPWUubGFuZXMsbi5jaGlsZD1lLmNoaWxkLG4ubWVtb2l6ZWRQcm9wcz1lLm1lbW9pemVkUHJvcHMsbi5tZW1vaXplZFN0YXRlPWUubWVtb2l6ZWRTdGF0ZSxuLnVwZGF0ZVF1ZXVlPWUudXBkYXRlUXVldWUsdD1lLmRlcGVuZGVuY2llcyxuLmRlcGVuZGVuY2llcz10PT09bnVsbD9udWxsOntsYW5lczp0LmxhbmVzLGZpcnN0Q29udGV4dDp0LmZpcnN0Q29udGV4dH0sbi5zaWJsaW5nPWUuc2libGluZyxuLmluZGV4PWUuaW5kZXgsbi5yZWY9ZS5yZWYsbn1mdW5jdGlvbiB4bChlLHQsbixpLG8sYSl7dmFyIGY9MjtpZihpPWUsdHlwZW9mIGU9PSJmdW5jdGlvbiIpT2EoZSkmJihmPTEpO2Vsc2UgaWYodHlwZW9mIGU9PSJzdHJpbmciKWY9NTtlbHNlIGU6c3dpdGNoKGUpe2Nhc2UgaWU6cmV0dXJuIG9yKG4uY2hpbGRyZW4sbyxhLHQpO2Nhc2UgaGU6Zj04LG98PTg7YnJlYWs7Y2FzZSB1ZTpyZXR1cm4gZT1UdCgxMixuLHQsb3wyKSxlLmVsZW1lbnRUeXBlPXVlLGUubGFuZXM9YSxlO2Nhc2UgSGU6cmV0dXJuIGU9VHQoMTMsbix0LG8pLGUuZWxlbWVudFR5cGU9SGUsZS5sYW5lcz1hLGU7Y2FzZSBvZTpyZXR1cm4gZT1UdCgxOSxuLHQsbyksZS5lbGVtZW50VHlwZT1vZSxlLmxhbmVzPWEsZTtjYXNlIE1lOnJldHVybiB3bChuLG8sYSx0KTtkZWZhdWx0OmlmKHR5cGVvZiBlPT0ib2JqZWN0IiYmZSE9PW51bGwpc3dpdGNoKGUuJCR0eXBlb2Ype2Nhc2UgZ2U6Zj0xMDticmVhayBlO2Nhc2UgaXQ6Zj05O2JyZWFrIGU7Y2FzZSBzdDpmPTExO2JyZWFrIGU7Y2FzZSBhZTpmPTE0O2JyZWFrIGU7Y2FzZSBBZTpmPTE2LGk9bnVsbDticmVhayBlfXRocm93IEVycm9yKGwoMTMwLGU9PW51bGw/ZTp0eXBlb2YgZSwiIikpfXJldHVybiB0PVR0KGYsbix0LG8pLHQuZWxlbWVudFR5cGU9ZSx0LnR5cGU9aSx0LmxhbmVzPWEsdH1mdW5jdGlvbiBvcihlLHQsbixpKXtyZXR1cm4gZT1UdCg3LGUsaSx0KSxlLmxhbmVzPW4sZX1mdW5jdGlvbiB3bChlLHQsbixpKXtyZXR1cm4gZT1UdCgyMixlLGksdCksZS5lbGVtZW50VHlwZT1NZSxlLmxhbmVzPW4sZS5zdGF0ZU5vZGU9e2lzSGlkZGVuOiExfSxlfWZ1bmN0aW9uIERhKGUsdCxuKXtyZXR1cm4gZT1UdCg2LGUsbnVsbCx0KSxlLmxhbmVzPW4sZX1mdW5jdGlvbiBJYShlLHQsbil7cmV0dXJuIHQ9VHQoNCxlLmNoaWxkcmVuIT09bnVsbD9lLmNoaWxkcmVuOltdLGUua2V5LHQpLHQubGFuZXM9bix0LnN0YXRlTm9kZT17Y29udGFpbmVySW5mbzplLmNvbnRhaW5lckluZm8scGVuZGluZ0NoaWxkcmVuOm51bGwsaW1wbGVtZW50YXRpb246ZS5pbXBsZW1lbnRhdGlvbn0sdH1mdW5jdGlvbiB0ZyhlLHQsbixpLG8pe3RoaXMudGFnPXQsdGhpcy5jb250YWluZXJJbmZvPWUsdGhpcy5maW5pc2hlZFdvcms9dGhpcy5waW5nQ2FjaGU9dGhpcy5jdXJyZW50PXRoaXMucGVuZGluZ0NoaWxkcmVuPW51bGwsdGhpcy50aW1lb3V0SGFuZGxlPS0xLHRoaXMuY2FsbGJhY2tOb2RlPXRoaXMucGVuZGluZ0NvbnRleHQ9dGhpcy5jb250ZXh0PW51bGwsdGhpcy5jYWxsYmFja1ByaW9yaXR5PTAsdGhpcy5ldmVudFRpbWVzPW9vKDApLHRoaXMuZXhwaXJhdGlvblRpbWVzPW9vKC0xKSx0aGlzLmVudGFuZ2xlZExhbmVzPXRoaXMuZmluaXNoZWRMYW5lcz10aGlzLm11dGFibGVSZWFkTGFuZXM9dGhpcy5leHBpcmVkTGFuZXM9dGhpcy5waW5nZWRMYW5lcz10aGlzLnN1c3BlbmRlZExhbmVzPXRoaXMucGVuZGluZ0xhbmVzPTAsdGhpcy5lbnRhbmdsZW1lbnRzPW9vKDApLHRoaXMuaWRlbnRpZmllclByZWZpeD1pLHRoaXMub25SZWNvdmVyYWJsZUVycm9yPW8sdGhpcy5tdXRhYmxlU291cmNlRWFnZXJIeWRyYXRpb25EYXRhPW51bGx9ZnVuY3Rpb24gTWEoZSx0LG4saSxvLGEsZixnLHcpe3JldHVybiBlPW5ldyB0ZyhlLHQsbixnLHcpLHQ9PT0xPyh0PTEsYT09PSEwJiYodHw9OCkpOnQ9MCxhPVR0KDMsbnVsbCxudWxsLHQpLGUuY3VycmVudD1hLGEuc3RhdGVOb2RlPWUsYS5tZW1vaXplZFN0YXRlPXtlbGVtZW50OmksaXNEZWh5ZHJhdGVkOm4sY2FjaGU6bnVsbCx0cmFuc2l0aW9uczpudWxsLHBlbmRpbmdTdXNwZW5zZUJvdW5kYXJpZXM6bnVsbH0sR28oYSksZX1mdW5jdGlvbiBuZyhlLHQsbil7dmFyIGk9Mzxhcmd1bWVudHMubGVuZ3RoJiZhcmd1bWVudHNbM10hPT12b2lkIDA/YXJndW1lbnRzWzNdOm51bGw7cmV0dXJueyQkdHlwZW9mOnNlLGtleTppPT1udWxsP251bGw6IiIraSxjaGlsZHJlbjplLGNvbnRhaW5lckluZm86dCxpbXBsZW1lbnRhdGlvbjpufX1mdW5jdGlvbiBqZihlKXtpZighZSlyZXR1cm4gUG47ZT1lLl9yZWFjdEludGVybmFscztlOntpZihHbihlKSE9PWV8fGUudGFnIT09MSl0aHJvdyBFcnJvcihsKDE3MCkpO3ZhciB0PWU7ZG97c3dpdGNoKHQudGFnKXtjYXNlIDM6dD10LnN0YXRlTm9kZS5jb250ZXh0O2JyZWFrIGU7Y2FzZSAxOmlmKGZ0KHQudHlwZSkpe3Q9dC5zdGF0ZU5vZGUuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNZXJnZWRDaGlsZENvbnRleHQ7YnJlYWsgZX19dD10LnJldHVybn13aGlsZSh0IT09bnVsbCk7dGhyb3cgRXJyb3IobCgxNzEpKX1pZihlLnRhZz09PTEpe3ZhciBuPWUudHlwZTtpZihmdChuKSlyZXR1cm4gWGMoZSxuLHQpfXJldHVybiB0fWZ1bmN0aW9uIE5mKGUsdCxuLGksbyxhLGYsZyx3KXtyZXR1cm4gZT1NYShuLGksITAsZSxvLGEsZixnLHcpLGUuY29udGV4dD1qZihudWxsKSxuPWUuY3VycmVudCxpPW90KCksbz1JbihuKSxhPWNuKGksbyksYS5jYWxsYmFjaz10Pz9udWxsLExuKG4sYSxvKSxlLmN1cnJlbnQubGFuZXM9byx3aShlLG8saSksbXQoZSxpKSxlfWZ1bmN0aW9uIFNsKGUsdCxuLGkpe3ZhciBvPXQuY3VycmVudCxhPW90KCksZj1JbihvKTtyZXR1cm4gbj1qZihuKSx0LmNvbnRleHQ9PT1udWxsP3QuY29udGV4dD1uOnQucGVuZGluZ0NvbnRleHQ9bix0PWNuKGEsZiksdC5wYXlsb2FkPXtlbGVtZW50OmV9LGk9aT09PXZvaWQgMD9udWxsOmksaSE9PW51bGwmJih0LmNhbGxiYWNrPWkpLGU9TG4obyx0LGYpLGUhPT1udWxsJiYoQnQoZSxvLGYsYSksWHMoZSxvLGYpKSxmfWZ1bmN0aW9uIGtsKGUpe2lmKGU9ZS5jdXJyZW50LCFlLmNoaWxkKXJldHVybiBudWxsO3N3aXRjaChlLmNoaWxkLnRhZyl7Y2FzZSA1OnJldHVybiBlLmNoaWxkLnN0YXRlTm9kZTtkZWZhdWx0OnJldHVybiBlLmNoaWxkLnN0YXRlTm9kZX19ZnVuY3Rpb24gUmYoZSx0KXtpZihlPWUubWVtb2l6ZWRTdGF0ZSxlIT09bnVsbCYmZS5kZWh5ZHJhdGVkIT09bnVsbCl7dmFyIG49ZS5yZXRyeUxhbmU7ZS5yZXRyeUxhbmU9biE9PTAmJm48dD9uOnR9fWZ1bmN0aW9uIHphKGUsdCl7UmYoZSx0KSwoZT1lLmFsdGVybmF0ZSkmJlJmKGUsdCl9ZnVuY3Rpb24gcmcoKXtyZXR1cm4gbnVsbH12YXIgUGY9dHlwZW9mIHJlcG9ydEVycm9yPT0iZnVuY3Rpb24iP3JlcG9ydEVycm9yOmZ1bmN0aW9uKGUpe2NvbnNvbGUuZXJyb3IoZSl9O2Z1bmN0aW9uIEFhKGUpe3RoaXMuX2ludGVybmFsUm9vdD1lfUNsLnByb3RvdHlwZS5yZW5kZXI9QWEucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9pbnRlcm5hbFJvb3Q7aWYodD09PW51bGwpdGhyb3cgRXJyb3IobCg0MDkpKTtTbChlLHQsbnVsbCxudWxsKX0sQ2wucHJvdG90eXBlLnVubW91bnQ9QWEucHJvdG90eXBlLnVubW91bnQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9pbnRlcm5hbFJvb3Q7aWYoZSE9PW51bGwpe3RoaXMuX2ludGVybmFsUm9vdD1udWxsO3ZhciB0PWUuY29udGFpbmVySW5mbztpcihmdW5jdGlvbigpe1NsKG51bGwsZSxudWxsLG51bGwpfSksdFtzbl09bnVsbH19O2Z1bmN0aW9uIENsKGUpe3RoaXMuX2ludGVybmFsUm9vdD1lfUNsLnByb3RvdHlwZS51bnN0YWJsZV9zY2hlZHVsZUh5ZHJhdGlvbj1mdW5jdGlvbihlKXtpZihlKXt2YXIgdD1jYygpO2U9e2Jsb2NrZWRPbjpudWxsLHRhcmdldDplLHByaW9yaXR5OnR9O2Zvcih2YXIgbj0wO248Q24ubGVuZ3RoJiZ0IT09MCYmdDxDbltuXS5wcmlvcml0eTtuKyspO0NuLnNwbGljZShuLDAsZSksbj09PTAmJmhjKGUpfX07ZnVuY3Rpb24gJGEoZSl7cmV0dXJuISghZXx8ZS5ub2RlVHlwZSE9PTEmJmUubm9kZVR5cGUhPT05JiZlLm5vZGVUeXBlIT09MTEpfWZ1bmN0aW9uIEVsKGUpe3JldHVybiEoIWV8fGUubm9kZVR5cGUhPT0xJiZlLm5vZGVUeXBlIT09OSYmZS5ub2RlVHlwZSE9PTExJiYoZS5ub2RlVHlwZSE9PTh8fGUubm9kZVZhbHVlIT09IiByZWFjdC1tb3VudC1wb2ludC11bnN0YWJsZSAiKSl9ZnVuY3Rpb24gX2YoKXt9ZnVuY3Rpb24gaWcoZSx0LG4saSxvKXtpZihvKXtpZih0eXBlb2YgaT09ImZ1bmN0aW9uIil7dmFyIGE9aTtpPWZ1bmN0aW9uKCl7dmFyIFQ9a2woZik7YS5jYWxsKFQpfX12YXIgZj1OZih0LGksZSwwLG51bGwsITEsITEsIiIsX2YpO3JldHVybiBlLl9yZWFjdFJvb3RDb250YWluZXI9ZixlW3NuXT1mLmN1cnJlbnQsRGkoZS5ub2RlVHlwZT09PTg/ZS5wYXJlbnROb2RlOmUpLGlyKCksZn1mb3IoO289ZS5sYXN0Q2hpbGQ7KWUucmVtb3ZlQ2hpbGQobyk7aWYodHlwZW9mIGk9PSJmdW5jdGlvbiIpe3ZhciBnPWk7aT1mdW5jdGlvbigpe3ZhciBUPWtsKHcpO2cuY2FsbChUKX19dmFyIHc9TWEoZSwwLCExLG51bGwsbnVsbCwhMSwhMSwiIixfZik7cmV0dXJuIGUuX3JlYWN0Um9vdENvbnRhaW5lcj13LGVbc25dPXcuY3VycmVudCxEaShlLm5vZGVUeXBlPT09OD9lLnBhcmVudE5vZGU6ZSksaXIoZnVuY3Rpb24oKXtTbCh0LHcsbixpKX0pLHd9ZnVuY3Rpb24gamwoZSx0LG4saSxvKXt2YXIgYT1uLl9yZWFjdFJvb3RDb250YWluZXI7aWYoYSl7dmFyIGY9YTtpZih0eXBlb2Ygbz09ImZ1bmN0aW9uIil7dmFyIGc9bztvPWZ1bmN0aW9uKCl7dmFyIHc9a2woZik7Zy5jYWxsKHcpfX1TbCh0LGYsZSxvKX1lbHNlIGY9aWcobix0LGUsbyxpKTtyZXR1cm4ga2woZil9YWM9ZnVuY3Rpb24oZSl7c3dpdGNoKGUudGFnKXtjYXNlIDM6dmFyIHQ9ZS5zdGF0ZU5vZGU7aWYodC5jdXJyZW50Lm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkKXt2YXIgbj14aSh0LnBlbmRpbmdMYW5lcyk7biE9PTAmJihhbyh0LG58MSksbXQodCwkZSgpKSwobWUmNik9PT0wJiYoYnI9JGUoKSs1MDAsX24oKSkpfWJyZWFrO2Nhc2UgMTM6aXIoZnVuY3Rpb24oKXt2YXIgaT11bihlLDEpO2lmKGkhPT1udWxsKXt2YXIgbz1vdCgpO0J0KGksZSwxLG8pfX0pLHphKGUsMSl9fSx1bz1mdW5jdGlvbihlKXtpZihlLnRhZz09PTEzKXt2YXIgdD11bihlLDEzNDIxNzcyOCk7aWYodCE9PW51bGwpe3ZhciBuPW90KCk7QnQodCxlLDEzNDIxNzcyOCxuKX16YShlLDEzNDIxNzcyOCl9fSx1Yz1mdW5jdGlvbihlKXtpZihlLnRhZz09PTEzKXt2YXIgdD1JbihlKSxuPXVuKGUsdCk7aWYobiE9PW51bGwpe3ZhciBpPW90KCk7QnQobixlLHQsaSl9emEoZSx0KX19LGNjPWZ1bmN0aW9uKCl7cmV0dXJuIENlfSxkYz1mdW5jdGlvbihlLHQpe3ZhciBuPUNlO3RyeXtyZXR1cm4gQ2U9ZSx0KCl9ZmluYWxseXtDZT1ufX0sdG89ZnVuY3Rpb24oZSx0LG4pe3N3aXRjaCh0KXtjYXNlImlucHV0IjppZihWbChlLG4pLHQ9bi5uYW1lLG4udHlwZT09PSJyYWRpbyImJnQhPW51bGwpe2ZvcihuPWU7bi5wYXJlbnROb2RlOyluPW4ucGFyZW50Tm9kZTtmb3Iobj1uLnF1ZXJ5U2VsZWN0b3JBbGwoImlucHV0W25hbWU9IitKU09OLnN0cmluZ2lmeSgiIit0KSsnXVt0eXBlPSJyYWRpbyJdJyksdD0wO3Q8bi5sZW5ndGg7dCsrKXt2YXIgaT1uW3RdO2lmKGkhPT1lJiZpLmZvcm09PT1lLmZvcm0pe3ZhciBvPUhzKGkpO2lmKCFvKXRocm93IEVycm9yKGwoOTApKTtJdShpKSxWbChpLG8pfX19YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6VXUoZSxuKTticmVhaztjYXNlInNlbGVjdCI6dD1uLnZhbHVlLHQhPW51bGwmJmtyKGUsISFuLm11bHRpcGxlLHQsITEpfX0sR3U9VGEsSnU9aXI7dmFyIHNnPXt1c2luZ0NsaWVudEVudHJ5UG9pbnQ6ITEsRXZlbnRzOlt6aSxGcixIcyxWdSxLdSxUYV19LFlpPXtmaW5kRmliZXJCeUhvc3RJbnN0YW5jZTpKbixidW5kbGVUeXBlOjAsdmVyc2lvbjoiMTguMy4xIixyZW5kZXJlclBhY2thZ2VOYW1lOiJyZWFjdC1kb20ifSxsZz17YnVuZGxlVHlwZTpZaS5idW5kbGVUeXBlLHZlcnNpb246WWkudmVyc2lvbixyZW5kZXJlclBhY2thZ2VOYW1lOllpLnJlbmRlcmVyUGFja2FnZU5hbWUscmVuZGVyZXJDb25maWc6WWkucmVuZGVyZXJDb25maWcsb3ZlcnJpZGVIb29rU3RhdGU6bnVsbCxvdmVycmlkZUhvb2tTdGF0ZURlbGV0ZVBhdGg6bnVsbCxvdmVycmlkZUhvb2tTdGF0ZVJlbmFtZVBhdGg6bnVsbCxvdmVycmlkZVByb3BzOm51bGwsb3ZlcnJpZGVQcm9wc0RlbGV0ZVBhdGg6bnVsbCxvdmVycmlkZVByb3BzUmVuYW1lUGF0aDpudWxsLHNldEVycm9ySGFuZGxlcjpudWxsLHNldFN1c3BlbnNlSGFuZGxlcjpudWxsLHNjaGVkdWxlVXBkYXRlOm51bGwsY3VycmVudERpc3BhdGNoZXJSZWY6Sy5SZWFjdEN1cnJlbnREaXNwYXRjaGVyLGZpbmRIb3N0SW5zdGFuY2VCeUZpYmVyOmZ1bmN0aW9uKGUpe3JldHVybiBlPWVjKGUpLGU9PT1udWxsP251bGw6ZS5zdGF0ZU5vZGV9LGZpbmRGaWJlckJ5SG9zdEluc3RhbmNlOllpLmZpbmRGaWJlckJ5SG9zdEluc3RhbmNlfHxyZyxmaW5kSG9zdEluc3RhbmNlc0ZvclJlZnJlc2g6bnVsbCxzY2hlZHVsZVJlZnJlc2g6bnVsbCxzY2hlZHVsZVJvb3Q6bnVsbCxzZXRSZWZyZXNoSGFuZGxlcjpudWxsLGdldEN1cnJlbnRGaWJlcjpudWxsLHJlY29uY2lsZXJWZXJzaW9uOiIxOC4zLjEtbmV4dC1mMTMzOGY4MDgwLTIwMjQwNDI2In07aWYodHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXzwidSIpe3ZhciBObD1fX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX187aWYoIU5sLmlzRGlzYWJsZWQmJk5sLnN1cHBvcnRzRmliZXIpdHJ5e0NzPU5sLmluamVjdChsZyksS3Q9Tmx9Y2F0Y2h7fX1yZXR1cm4gZ3QuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ9c2csZ3QuY3JlYXRlUG9ydGFsPWZ1bmN0aW9uKGUsdCl7dmFyIG49Mjxhcmd1bWVudHMubGVuZ3RoJiZhcmd1bWVudHNbMl0hPT12b2lkIDA/YXJndW1lbnRzWzJdOm51bGw7aWYoISRhKHQpKXRocm93IEVycm9yKGwoMjAwKSk7cmV0dXJuIG5nKGUsdCxudWxsLG4pfSxndC5jcmVhdGVSb290PWZ1bmN0aW9uKGUsdCl7aWYoISRhKGUpKXRocm93IEVycm9yKGwoMjk5KSk7dmFyIG49ITEsaT0iIixvPVBmO3JldHVybiB0IT1udWxsJiYodC51bnN0YWJsZV9zdHJpY3RNb2RlPT09ITAmJihuPSEwKSx0LmlkZW50aWZpZXJQcmVmaXghPT12b2lkIDAmJihpPXQuaWRlbnRpZmllclByZWZpeCksdC5vblJlY292ZXJhYmxlRXJyb3IhPT12b2lkIDAmJihvPXQub25SZWNvdmVyYWJsZUVycm9yKSksdD1NYShlLDEsITEsbnVsbCxudWxsLG4sITEsaSxvKSxlW3NuXT10LmN1cnJlbnQsRGkoZS5ub2RlVHlwZT09PTg/ZS5wYXJlbnROb2RlOmUpLG5ldyBBYSh0KX0sZ3QuZmluZERPTU5vZGU9ZnVuY3Rpb24oZSl7aWYoZT09bnVsbClyZXR1cm4gbnVsbDtpZihlLm5vZGVUeXBlPT09MSlyZXR1cm4gZTt2YXIgdD1lLl9yZWFjdEludGVybmFscztpZih0PT09dm9pZCAwKXRocm93IHR5cGVvZiBlLnJlbmRlcj09ImZ1bmN0aW9uIj9FcnJvcihsKDE4OCkpOihlPU9iamVjdC5rZXlzKGUpLmpvaW4oIiwiKSxFcnJvcihsKDI2OCxlKSkpO3JldHVybiBlPWVjKHQpLGU9ZT09PW51bGw/bnVsbDplLnN0YXRlTm9kZSxlfSxndC5mbHVzaFN5bmM9ZnVuY3Rpb24oZSl7cmV0dXJuIGlyKGUpfSxndC5oeWRyYXRlPWZ1bmN0aW9uKGUsdCxuKXtpZighRWwodCkpdGhyb3cgRXJyb3IobCgyMDApKTtyZXR1cm4gamwobnVsbCxlLHQsITAsbil9LGd0Lmh5ZHJhdGVSb290PWZ1bmN0aW9uKGUsdCxuKXtpZighJGEoZSkpdGhyb3cgRXJyb3IobCg0MDUpKTt2YXIgaT1uIT1udWxsJiZuLmh5ZHJhdGVkU291cmNlc3x8bnVsbCxvPSExLGE9IiIsZj1QZjtpZihuIT1udWxsJiYobi51bnN0YWJsZV9zdHJpY3RNb2RlPT09ITAmJihvPSEwKSxuLmlkZW50aWZpZXJQcmVmaXghPT12b2lkIDAmJihhPW4uaWRlbnRpZmllclByZWZpeCksbi5vblJlY292ZXJhYmxlRXJyb3IhPT12b2lkIDAmJihmPW4ub25SZWNvdmVyYWJsZUVycm9yKSksdD1OZih0LG51bGwsZSwxLG4/P251bGwsbywhMSxhLGYpLGVbc25dPXQuY3VycmVudCxEaShlKSxpKWZvcihlPTA7ZTxpLmxlbmd0aDtlKyspbj1pW2VdLG89bi5fZ2V0VmVyc2lvbixvPW8obi5fc291cmNlKSx0Lm11dGFibGVTb3VyY2VFYWdlckh5ZHJhdGlvbkRhdGE9PW51bGw/dC5tdXRhYmxlU291cmNlRWFnZXJIeWRyYXRpb25EYXRhPVtuLG9dOnQubXV0YWJsZVNvdXJjZUVhZ2VySHlkcmF0aW9uRGF0YS5wdXNoKG4sbyk7cmV0dXJuIG5ldyBDbCh0KX0sZ3QucmVuZGVyPWZ1bmN0aW9uKGUsdCxuKXtpZighRWwodCkpdGhyb3cgRXJyb3IobCgyMDApKTtyZXR1cm4gamwobnVsbCxlLHQsITEsbil9LGd0LnVubW91bnRDb21wb25lbnRBdE5vZGU9ZnVuY3Rpb24oZSl7aWYoIUVsKGUpKXRocm93IEVycm9yKGwoNDApKTtyZXR1cm4gZS5fcmVhY3RSb290Q29udGFpbmVyPyhpcihmdW5jdGlvbigpe2psKG51bGwsbnVsbCxlLCExLGZ1bmN0aW9uKCl7ZS5fcmVhY3RSb290Q29udGFpbmVyPW51bGwsZVtzbl09bnVsbH0pfSksITApOiExfSxndC51bnN0YWJsZV9iYXRjaGVkVXBkYXRlcz1UYSxndC51bnN0YWJsZV9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcj1mdW5jdGlvbihlLHQsbixpKXtpZighRWwobikpdGhyb3cgRXJyb3IobCgyMDApKTtpZihlPT1udWxsfHxlLl9yZWFjdEludGVybmFscz09PXZvaWQgMCl0aHJvdyBFcnJvcihsKDM4KSk7cmV0dXJuIGpsKGUsdCxuLCExLGkpfSxndC52ZXJzaW9uPSIxOC4zLjEtbmV4dC1mMTMzOGY4MDgwLTIwMjQwNDI2IixndH12YXIgQWY7ZnVuY3Rpb24gbWcoKXtpZihBZilyZXR1cm4gUWEuZXhwb3J0cztBZj0xO2Z1bmN0aW9uIHIoKXtpZighKHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18+InUifHx0eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmNoZWNrRENFIT0iZnVuY3Rpb24iKSl0cnl7X19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmNoZWNrRENFKHIpfWNhdGNoKHMpe2NvbnNvbGUuZXJyb3Iocyl9fXJldHVybiByKCksUWEuZXhwb3J0cz1wZygpLFFhLmV4cG9ydHN9dmFyICRmO2Z1bmN0aW9uIGdnKCl7aWYoJGYpcmV0dXJuIFBsOyRmPTE7dmFyIHI9bWcoKTtyZXR1cm4gUGwuY3JlYXRlUm9vdD1yLmNyZWF0ZVJvb3QsUGwuaHlkcmF0ZVJvb3Q9ci5oeWRyYXRlUm9vdCxQbH12YXIgdmc9Z2coKTtjb25zdCB5Zz13aCh2Zyk7LyoqCiAqIHJlYWN0LXJvdXRlciB2Ny4xOC40CiAqCiAqIENvcHlyaWdodCAoYykgUmVtaXggU29mdHdhcmUgSW5jLgogKgogKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGUKICogTElDRU5TRS5tZCBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLgogKgogKiBAbGljZW5zZSBNSVQKICovdmFyIHh1PS9eKD86W2Etel1bYS16MC05Ky4tXSo6fFtcXC9dezJ9KS9pLFNoPS9eW1xcL117Mn0vO2Z1bmN0aW9uIHhnKHIscyl7cmV0dXJuIHMrci5yZXBsYWNlKC9cXC9nLCIvIil9dmFyIFVmPSJwb3BzdGF0ZSI7ZnVuY3Rpb24gQmYocil7cmV0dXJuIHR5cGVvZiByPT0ib2JqZWN0IiYmciE9bnVsbCYmInBhdGhuYW1lImluIHImJiJzZWFyY2giaW4gciYmImhhc2giaW4gciYmInN0YXRlImluIHImJiJrZXkiaW4gcn1mdW5jdGlvbiB3ZyhyPXt9KXtmdW5jdGlvbiBzKHUsYyl7dmFyIFM7bGV0IGg9KFM9Yy5zdGF0ZSk9PW51bGw/dm9pZCAwOlMubWFza2VkLHtwYXRobmFtZTpwLHNlYXJjaDptLGhhc2g6dn09aHx8dS5sb2NhdGlvbjtyZXR1cm4gZXUoIiIse3BhdGhuYW1lOnAsc2VhcmNoOm0saGFzaDp2fSxjLnN0YXRlJiZjLnN0YXRlLnVzcnx8bnVsbCxjLnN0YXRlJiZjLnN0YXRlLmtleXx8ImRlZmF1bHQiLGg/e3BhdGhuYW1lOnUubG9jYXRpb24ucGF0aG5hbWUsc2VhcmNoOnUubG9jYXRpb24uc2VhcmNoLGhhc2g6dS5sb2NhdGlvbi5oYXNofTp2b2lkIDApfWZ1bmN0aW9uIGwodSxjKXtyZXR1cm4gdHlwZW9mIGM9PSJzdHJpbmciP2M6eXIoYyl9cmV0dXJuIGtnKHMsbCxudWxsLHIpfWZ1bmN0aW9uIEZlKHIscyl7aWYocj09PSExfHxyPT09bnVsbHx8dHlwZW9mIHI+InUiKXRocm93IG5ldyBFcnJvcihzKX1mdW5jdGlvbiBEdChyLHMpe2lmKCFyKXt0eXBlb2YgY29uc29sZTwidSImJmNvbnNvbGUud2FybihzKTt0cnl7dGhyb3cgbmV3IEVycm9yKHMpfWNhdGNoe319fWZ1bmN0aW9uIFNnKCl7cmV0dXJuIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyLDEwKX1mdW5jdGlvbiBIZihyLHMpe3JldHVybnt1c3I6ci5zdGF0ZSxrZXk6ci5rZXksaWR4OnMsbWFza2VkOnIubWFzaz97cGF0aG5hbWU6ci5wYXRobmFtZSxzZWFyY2g6ci5zZWFyY2gsaGFzaDpyLmhhc2h9OnZvaWQgMH19ZnVuY3Rpb24gZXUocixzLGw9bnVsbCx1LGMpe3JldHVybntwYXRobmFtZTp0eXBlb2Ygcj09InN0cmluZyI/cjpyLnBhdGhuYW1lLHNlYXJjaDoiIixoYXNoOiIiLC4uLnR5cGVvZiBzPT0ic3RyaW5nIj91aShzKTpzLHN0YXRlOmwsa2V5OnMmJnMua2V5fHx1fHxTZygpLG1hc2s6Y319ZnVuY3Rpb24geXIoe3BhdGhuYW1lOnI9Ii8iLHNlYXJjaDpzPSIiLGhhc2g6bD0iIn0pe3JldHVybiBzJiZzIT09Ij8iJiYocis9cy5jaGFyQXQoMCk9PT0iPyI/czoiPyIrcyksbCYmbCE9PSIjIiYmKHIrPWwuY2hhckF0KDApPT09IiMiP2w6IiMiK2wpLHJ9ZnVuY3Rpb24gdWkocil7bGV0IHM9e307aWYocil7bGV0IGw9ci5pbmRleE9mKCIjIik7bD49MCYmKHMuaGFzaD1yLnN1YnN0cmluZyhsKSxyPXIuc3Vic3RyaW5nKDAsbCkpO2xldCB1PXIuaW5kZXhPZigiPyIpO3U+PTAmJihzLnNlYXJjaD1yLnN1YnN0cmluZyh1KSxyPXIuc3Vic3RyaW5nKDAsdSkpLHImJihzLnBhdGhuYW1lPXIpfXJldHVybiBzfWZ1bmN0aW9uIGtnKHIscyxsLHU9e30pe2xldHt3aW5kb3c6Yz1kb2N1bWVudC5kZWZhdWx0Vmlldyx2NUNvbXBhdDpoPSExfT11LHA9Yy5oaXN0b3J5LG09IlBPUCIsdj1udWxsLFM9QygpO1M9PW51bGwmJihTPTAscC5yZXBsYWNlU3RhdGUoey4uLnAuc3RhdGUsaWR4OlN9LCIiKSk7ZnVuY3Rpb24gQygpe3JldHVybihwLnN0YXRlfHx7aWR4Om51bGx9KS5pZHh9ZnVuY3Rpb24geCgpe209IlBPUCI7bGV0IEw9QygpLCQ9TD09bnVsbD9udWxsOkwtUztTPUwsdiYmdih7YWN0aW9uOm0sbG9jYXRpb246Ri5sb2NhdGlvbixkZWx0YTokfSl9ZnVuY3Rpb24gXyhMLCQpe209IlBVU0giO2xldCBRPUJmKEwpP0w6ZXUoRi5sb2NhdGlvbixMLCQpO1M9QygpKzE7bGV0IEg9SGYoUSxTKSxLPUYuY3JlYXRlSHJlZihRLm1hc2t8fFEpO3RyeXtwLnB1c2hTdGF0ZShILCIiLEspfWNhdGNoKEIpe2lmKEIgaW5zdGFuY2VvZiBET01FeGNlcHRpb24mJkIubmFtZT09PSJEYXRhQ2xvbmVFcnJvciIpdGhyb3cgQjtjLmxvY2F0aW9uLmFzc2lnbihLKX1oJiZ2JiZ2KHthY3Rpb246bSxsb2NhdGlvbjpGLmxvY2F0aW9uLGRlbHRhOjF9KX1mdW5jdGlvbiBJKEwsJCl7bT0iUkVQTEFDRSI7bGV0IFE9QmYoTCk/TDpldShGLmxvY2F0aW9uLEwsJCk7Uz1DKCk7bGV0IEg9SGYoUSxTKSxLPUYuY3JlYXRlSHJlZihRLm1hc2t8fFEpO3AucmVwbGFjZVN0YXRlKEgsIiIsSyksaCYmdiYmdih7YWN0aW9uOm0sbG9jYXRpb246Ri5sb2NhdGlvbixkZWx0YTowfSl9ZnVuY3Rpb24gTyhMKXtyZXR1cm4gQ2coYyxMKX1sZXQgRj17Z2V0IGFjdGlvbigpe3JldHVybiBtfSxnZXQgbG9jYXRpb24oKXtyZXR1cm4gcihjLHApfSxsaXN0ZW4oTCl7aWYodil0aHJvdyBuZXcgRXJyb3IoIkEgaGlzdG9yeSBvbmx5IGFjY2VwdHMgb25lIGFjdGl2ZSBsaXN0ZW5lciIpO3JldHVybiBjLmFkZEV2ZW50TGlzdGVuZXIoVWYseCksdj1MLCgpPT57Yy5yZW1vdmVFdmVudExpc3RlbmVyKFVmLHgpLHY9bnVsbH19LGNyZWF0ZUhyZWYoTCl7cmV0dXJuIHMoYyxMKX0sY3JlYXRlVVJMOk8sZW5jb2RlTG9jYXRpb24oTCl7bGV0ICQ9TyhMKTtyZXR1cm57cGF0aG5hbWU6JC5wYXRobmFtZSxzZWFyY2g6JC5zZWFyY2gsaGFzaDokLmhhc2h9fSxwdXNoOl8scmVwbGFjZTpJLGdvKEwpe3JldHVybiBwLmdvKEwpfX07cmV0dXJuIEZ9ZnVuY3Rpb24gQ2cocixzLGw9ITEpe2xldCB1PSJodHRwOi8vbG9jYWxob3N0IjtyJiYodT1yLmxvY2F0aW9uLm9yaWdpbiE9PSJudWxsIj9yLmxvY2F0aW9uLm9yaWdpbjpyLmxvY2F0aW9uLmhyZWYpLEZlKHUsIk5vIHdpbmRvdy5sb2NhdGlvbi4ob3JpZ2lufGhyZWYpIGF2YWlsYWJsZSB0byBjcmVhdGUgVVJMIik7bGV0IGM9dHlwZW9mIHM9PSJzdHJpbmciP3M6eXIocyk7cmV0dXJuIGM9Yy5yZXBsYWNlKC8gJC8sIiUyMCIpLCFsJiZTaC50ZXN0KGMpJiYoYz11K2MpLG5ldyBVUkwoYyx1KX1mdW5jdGlvbiBraChyLHMsbD0iLyIpe3JldHVybiBFZyhyLHMsbCwhMSl9ZnVuY3Rpb24gRWcocixzLGwsdSxjKXtsZXQgaD10eXBlb2Ygcz09InN0cmluZyI/dWkocyk6cyxwPXluKGgucGF0aG5hbWV8fCIvIixsKTtpZihwPT1udWxsKXJldHVybiBudWxsO2xldCBtPWpnKHIpLHY9bnVsbCxTPU1nKHApO2ZvcihsZXQgQz0wO3Y9PW51bGwmJkM8bS5sZW5ndGg7KytDKXY9SWcobVtDXSxTLHUpO3JldHVybiB2fWZ1bmN0aW9uIGpnKHIpe2xldCBzPUNoKHIpO3JldHVybiBOZyhzKSxzfWZ1bmN0aW9uIENoKHIscz1bXSxsPVtdLHU9IiIsYz0hMSl7bGV0IGg9KHAsbSx2PWMsUyk9PntsZXQgQz17cmVsYXRpdmVQYXRoOlM9PT12b2lkIDA/cC5wYXRofHwiIjpTLGNhc2VTZW5zaXRpdmU6cC5jYXNlU2Vuc2l0aXZlPT09ITAsY2hpbGRyZW5JbmRleDptLHJvdXRlOnB9O2lmKEMucmVsYXRpdmVQYXRoLnN0YXJ0c1dpdGgoIi8iKSl7aWYoIUMucmVsYXRpdmVQYXRoLnN0YXJ0c1dpdGgodSkmJnYpcmV0dXJuO0ZlKEMucmVsYXRpdmVQYXRoLnN0YXJ0c1dpdGgodSksYEFic29sdXRlIHJvdXRlIHBhdGggIiR7Qy5yZWxhdGl2ZVBhdGh9IiBuZXN0ZWQgdW5kZXIgcGF0aCAiJHt1fSIgaXMgbm90IHZhbGlkLiBBbiBhYnNvbHV0ZSBjaGlsZCByb3V0ZSBwYXRoIG11c3Qgc3RhcnQgd2l0aCB0aGUgY29tYmluZWQgcGF0aCBvZiBhbGwgaXRzIHBhcmVudCByb3V0ZXMuYCksQy5yZWxhdGl2ZVBhdGg9Qy5yZWxhdGl2ZVBhdGguc2xpY2UodS5sZW5ndGgpfWxldCB4PWJ0KFt1LEMucmVsYXRpdmVQYXRoXSksXz1sLmNvbmNhdChDKTtwLmNoaWxkcmVuJiZwLmNoaWxkcmVuLmxlbmd0aD4wJiYoRmUocC5pbmRleCE9PSEwLGBJbmRleCByb3V0ZXMgbXVzdCBub3QgaGF2ZSBjaGlsZCByb3V0ZXMuIFBsZWFzZSByZW1vdmUgYWxsIGNoaWxkIHJvdXRlcyBmcm9tIHJvdXRlIHBhdGggIiR7eH0iLmApLENoKHAuY2hpbGRyZW4scyxfLHgsdikpLCEocC5wYXRoPT1udWxsJiYhcC5pbmRleCkmJnMucHVzaCh7cGF0aDp4LHNjb3JlOk9nKHgscC5pbmRleCkscm91dGVzTWV0YTpfLm1hcCgoSSxPKT0+e2xldFtGLExdPU5oKEkucmVsYXRpdmVQYXRoLEkuY2FzZVNlbnNpdGl2ZSxPPT09Xy5sZW5ndGgtMSk7cmV0dXJuey4uLkksbWF0Y2hlcjpGLGNvbXBpbGVkUGFyYW1zOkx9fSl9KX07cmV0dXJuIHIuZm9yRWFjaCgocCxtKT0+e3ZhciB2O2lmKHAucGF0aD09PSIifHwhKCh2PXAucGF0aCkhPW51bGwmJnYuaW5jbHVkZXMoIj8iKSkpaChwLG0pO2Vsc2UgZm9yKGxldCBTIG9mIEVoKHAucGF0aCkpaChwLG0sITAsUyl9KSxzfWZ1bmN0aW9uIEVoKHIpe2xldCBzPXIuc3BsaXQoIi8iKTtpZihzLmxlbmd0aD09PTApcmV0dXJuW107bGV0W2wsLi4udV09cyxjPWwuZW5kc1dpdGgoIj8iKSxoPWwucmVwbGFjZSgvXD8kLywiIik7aWYodS5sZW5ndGg9PT0wKXJldHVybiBjP1toLCIiXTpbaF07bGV0IHA9RWgodS5qb2luKCIvIikpLG09W107cmV0dXJuIG0ucHVzaCguLi5wLm1hcCh2PT52PT09IiI/aDpbaCx2XS5qb2luKCIvIikpKSxjJiZtLnB1c2goLi4ucCksbS5tYXAodj0+ci5zdGFydHNXaXRoKCIvIikmJnY9PT0iIj8iLyI6dil9ZnVuY3Rpb24gTmcocil7ci5zb3J0KChzLGwpPT5zLnNjb3JlIT09bC5zY29yZT9sLnNjb3JlLXMuc2NvcmU6RGcocy5yb3V0ZXNNZXRhLm1hcCh1PT51LmNoaWxkcmVuSW5kZXgpLGwucm91dGVzTWV0YS5tYXAodT0+dS5jaGlsZHJlbkluZGV4KSkpfXZhciBSZz0vXjpbXHctXSskLyxQZz0zLF9nPTIsVGc9MSxMZz0xMCxGZz0tMixRZj1yPT5yPT09IioiO2Z1bmN0aW9uIE9nKHIscyl7bGV0IGw9ci5zcGxpdCgiLyIpLHU9bC5sZW5ndGg7cmV0dXJuIGwuc29tZShRZikmJih1Kz1GZykscyYmKHUrPV9nKSxsLmZpbHRlcihjPT4hUWYoYykpLnJlZHVjZSgoYyxoKT0+YysoUmcudGVzdChoKT9QZzpoPT09IiI/VGc6TGcpLHUpfWZ1bmN0aW9uIERnKHIscyl7cmV0dXJuIHIubGVuZ3RoPT09cy5sZW5ndGgmJnIuc2xpY2UoMCwtMSkuZXZlcnkoKHUsYyk9PnU9PT1zW2NdKT9yW3IubGVuZ3RoLTFdLXNbcy5sZW5ndGgtMV06MH1mdW5jdGlvbiBJZyhyLHMsbD0hMSl7bGV0e3JvdXRlc01ldGE6dX09cixjPXt9LGg9Ii8iLHA9W107Zm9yKGxldCBtPTA7bTx1Lmxlbmd0aDsrK20pe2xldCB2PXVbbV0sUz1tPT09dS5sZW5ndGgtMSxDPWg9PT0iLyI/czpzLnNsaWNlKGgubGVuZ3RoKXx8Ii8iLHg9e3BhdGg6di5yZWxhdGl2ZVBhdGgsY2FzZVNlbnNpdGl2ZTp2LmNhc2VTZW5zaXRpdmUsZW5kOlN9LF89di5tYXRjaGVyJiZ2LmNvbXBpbGVkUGFyYW1zP2poKHgsQyx2Lm1hdGNoZXIsdi5jb21waWxlZFBhcmFtcyk6RGwoeCxDKSxJPXYucm91dGU7aWYoIV8mJlMmJmwmJiF1W3UubGVuZ3RoLTFdLnJvdXRlLmluZGV4JiYoXz1EbCh7cGF0aDp2LnJlbGF0aXZlUGF0aCxjYXNlU2Vuc2l0aXZlOnYuY2FzZVNlbnNpdGl2ZSxlbmQ6ITF9LEMpKSwhXylyZXR1cm4gbnVsbDtPYmplY3QuYXNzaWduKGMsXy5wYXJhbXMpLHAucHVzaCh7cGFyYW1zOmMscGF0aG5hbWU6YnQoW2gsXy5wYXRobmFtZV0pLHBhdGhuYW1lQmFzZTokZyhidChbaCxfLnBhdGhuYW1lQmFzZV0pKSxyb3V0ZTpJfSksXy5wYXRobmFtZUJhc2UhPT0iLyImJihoPWJ0KFtoLF8ucGF0aG5hbWVCYXNlXSkpfXJldHVybiBwfWZ1bmN0aW9uIERsKHIscyl7dHlwZW9mIHI9PSJzdHJpbmciJiYocj17cGF0aDpyLGNhc2VTZW5zaXRpdmU6ITEsZW5kOiEwfSk7bGV0W2wsdV09Tmgoci5wYXRoLHIuY2FzZVNlbnNpdGl2ZSxyLmVuZCk7cmV0dXJuIGpoKHIscyxsLHUpfWZ1bmN0aW9uIGpoKHIscyxsLHUpe2xldCBjPXMubWF0Y2gobCk7aWYoIWMpcmV0dXJuIG51bGw7bGV0IGg9Y1swXSxwPW9pKGgsMSksbT1jLnNsaWNlKDEpO3JldHVybntwYXJhbXM6dS5yZWR1Y2UoKFMse3BhcmFtTmFtZTpDLGlzT3B0aW9uYWw6eH0sXyk9PntpZihDPT09IioiKXtsZXQgTz1tW19dfHwiIjtwPW9pKGguc2xpY2UoMCxoLmxlbmd0aC1PLmxlbmd0aCksMSl9Y29uc3QgST1tW19dO3JldHVybiB4JiYhST9TW0NdPXZvaWQgMDpTW0NdPShJfHwiIikucmVwbGFjZSgvJTJGL2csIi8iKSxTfSx7fSkscGF0aG5hbWU6aCxwYXRobmFtZUJhc2U6cCxwYXR0ZXJuOnJ9fWZ1bmN0aW9uIE5oKHIscz0hMSxsPSEwKXtEdChyPT09IioifHwhci5lbmRzV2l0aCgiKiIpfHxyLmVuZHNXaXRoKCIvKiIpLGBSb3V0ZSBwYXRoICIke3J9IiB3aWxsIGJlIHRyZWF0ZWQgYXMgaWYgaXQgd2VyZSAiJHtyLnJlcGxhY2UoL1wqJC8sIi8qIil9IiBiZWNhdXNlIHRoZSBcYCpcYCBjaGFyYWN0ZXIgbXVzdCBhbHdheXMgZm9sbG93IGEgXGAvXGAgaW4gdGhlIHBhdHRlcm4uIFRvIGdldCByaWQgb2YgdGhpcyB3YXJuaW5nLCBwbGVhc2UgY2hhbmdlIHRoZSByb3V0ZSBwYXRoIHRvICIke3IucmVwbGFjZSgvXCokLywiLyoiKX0iLmApO2xldCB1PVtdLGM9Il4iK3IucmVwbGFjZSgvXC8qXCo/JC8sIiIpLnJlcGxhY2UoL15cLyovLCIvIikucmVwbGFjZSgvW1xcLiorXiR7fXwoKVtcXV0vZywiXFwkJiIpLnJlcGxhY2UoL1wvOihbXHctXSspKFw/KT8vZywocCxtLHYsUyxDKT0+e2lmKHUucHVzaCh7cGFyYW1OYW1lOm0saXNPcHRpb25hbDp2IT1udWxsfSksdil7bGV0IHg9Qy5jaGFyQXQoUytwLmxlbmd0aCk7cmV0dXJuIHgmJnghPT0iLyI/Ii8oW15cXC9dKikiOiIoPzovKFteXFwvXSopKT8ifXJldHVybiIvKFteXFwvXSspIn0pLnJlcGxhY2UoL1wvKFtcdy1dKylcPyhcL3wkKS9nLCIoLyQxKT8kMiIpO3JldHVybiByLmVuZHNXaXRoKCIqIik/KHUucHVzaCh7cGFyYW1OYW1lOiIqIn0pLGMrPXI9PT0iKiJ8fHI9PT0iLyoiPyIoLiopJCI6Iig/OlxcLyguKyl8XFwvKikkIik6bD9jKz0iXFwvKiQiOnIhPT0iIiYmciE9PSIvIiYmKGMrPSIoPzooPz1cXC98JCkpIiksW25ldyBSZWdFeHAoYyxzP3ZvaWQgMDoiaSIpLHVdfWZ1bmN0aW9uIE1nKHIpe3RyeXtyZXR1cm4gci5zcGxpdCgiLyIpLm1hcChzPT5kZWNvZGVVUklDb21wb25lbnQocykucmVwbGFjZSgvXC8vZywiJTJGIikpLmpvaW4oIi8iKX1jYXRjaChzKXtyZXR1cm4gRHQoITEsYFRoZSBVUkwgcGF0aCAiJHtyfSIgY291bGQgbm90IGJlIGRlY29kZWQgYmVjYXVzZSBpdCBpcyBhIG1hbGZvcm1lZCBVUkwgc2VnbWVudC4gVGhpcyBpcyBwcm9iYWJseSBkdWUgdG8gYSBiYWQgcGVyY2VudCBlbmNvZGluZyAoJHtzfSkuYCkscn19ZnVuY3Rpb24geW4ocixzKXtpZihzPT09Ii8iKXJldHVybiByO2lmKCFyLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChzLnRvTG93ZXJDYXNlKCkpKXJldHVybiBudWxsO2xldCBsPXMuZW5kc1dpdGgoIi8iKT9zLmxlbmd0aC0xOnMubGVuZ3RoLHU9ci5jaGFyQXQobCk7cmV0dXJuIHUmJnUhPT0iLyI/bnVsbDpyLnNsaWNlKGwpfHwiLyJ9ZnVuY3Rpb24gemcocixzPSIvIil7bGV0e3BhdGhuYW1lOmwsc2VhcmNoOnU9IiIsaGFzaDpjPSIifT10eXBlb2Ygcj09InN0cmluZyI/dWkocik6cixoO3JldHVybiBsPyhsPVJoKGwpLGwuc3RhcnRzV2l0aCgiLyIpfHxsLnN0YXJ0c1dpdGgoIlxcIik/aD1xZihsLnN1YnN0cmluZygxKSwiLyIpOmg9cWYobCxzKSk6aD1zLHtwYXRobmFtZTpoLHNlYXJjaDpVZyh1KSxoYXNoOkJnKGMpfX1mdW5jdGlvbiBxZihyLHMpe2xldCBsPW9pKHMpLnNwbGl0KCIvIik7cmV0dXJuIHIuc3BsaXQoIi8iKS5mb3JFYWNoKGM9PntjPT09Ii4uIj9sLmxlbmd0aD4xJiZsLnBvcCgpOmMhPT0iLiImJmwucHVzaChjKX0pLGwubGVuZ3RoPjE/bC5qb2luKCIvIik6Ii8ifWZ1bmN0aW9uIFdhKHIscyxsLHUpe3JldHVybmBDYW5ub3QgaW5jbHVkZSBhICcke3J9JyBjaGFyYWN0ZXIgaW4gYSBtYW51YWxseSBzcGVjaWZpZWQgXGB0by4ke3N9XGAgZmllbGQgWyR7SlNPTi5zdHJpbmdpZnkodSl9XS4gIFBsZWFzZSBzZXBhcmF0ZSBpdCBvdXQgdG8gdGhlIFxgdG8uJHtsfVxgIGZpZWxkLiBBbHRlcm5hdGl2ZWx5IHlvdSBtYXkgcHJvdmlkZSB0aGUgZnVsbCBwYXRoIGFzIGEgc3RyaW5nIGluIDxMaW5rIHRvPSIuLi4iPiBhbmQgdGhlIHJvdXRlciB3aWxsIHBhcnNlIGl0IGZvciB5b3UuYH1mdW5jdGlvbiBBZyhyKXtyZXR1cm4gci5maWx0ZXIoKHMsbCk9Pmw9PT0wfHxzLnJvdXRlLnBhdGgmJnMucm91dGUucGF0aC5sZW5ndGg+MCl9ZnVuY3Rpb24gd3Uocil7bGV0IHM9QWcocik7cmV0dXJuIHMubWFwKChsLHUpPT51PT09cy5sZW5ndGgtMT9sLnBhdGhuYW1lOmwucGF0aG5hbWVCYXNlKX1mdW5jdGlvbiAkbChyLHMsbCx1PSExKXtsZXQgYzt0eXBlb2Ygcj09InN0cmluZyI/Yz11aShyKTooYz17Li4ucn0sRmUoIWMucGF0aG5hbWV8fCFjLnBhdGhuYW1lLmluY2x1ZGVzKCI/IiksV2EoIj8iLCJwYXRobmFtZSIsInNlYXJjaCIsYykpLEZlKCFjLnBhdGhuYW1lfHwhYy5wYXRobmFtZS5pbmNsdWRlcygiIyIpLFdhKCIjIiwicGF0aG5hbWUiLCJoYXNoIixjKSksRmUoIWMuc2VhcmNofHwhYy5zZWFyY2guaW5jbHVkZXMoIiMiKSxXYSgiIyIsInNlYXJjaCIsImhhc2giLGMpKSk7bGV0IGg9cj09PSIifHxjLnBhdGhuYW1lPT09IiIscD1oPyIvIjpjLnBhdGhuYW1lLG07aWYocD09bnVsbCltPWw7ZWxzZXtsZXQgeD1zLmxlbmd0aC0xO2lmKCF1JiZwLnN0YXJ0c1dpdGgoIi4uIikpe2xldCBfPXAuc3BsaXQoIi8iKTtmb3IoO19bMF09PT0iLi4iOylfLnNoaWZ0KCkseC09MTtjLnBhdGhuYW1lPV8uam9pbigiLyIpfW09eD49MD9zW3hdOiIvIn1sZXQgdj16ZyhjLG0pLFM9cCYmcCE9PSIvIiYmcC5lbmRzV2l0aCgiLyIpLEM9KGh8fHA9PT0iLiIpJiZsLmVuZHNXaXRoKCIvIik7cmV0dXJuIXYucGF0aG5hbWUuZW5kc1dpdGgoIi8iKSYmKFN8fEMpJiYodi5wYXRobmFtZSs9Ii8iKSx2fXZhciBSaD1yPT5yLnJlcGxhY2UoL1tcXC9dezIsfS9nLCIvIiksYnQ9cj0+Umgoci5qb2luKCIvIikpO2Z1bmN0aW9uIG9pKHIscz0wKXtsZXQgbD1yLmxlbmd0aDtmb3IoO2w+cyYmci5jaGFyQ29kZUF0KGwtMSk9PT00NzspbC0tO3JldHVybiBsPT09ci5sZW5ndGg/cjpyLnNsaWNlKDAsbCl9dmFyICRnPXI9Pm9pKHIpLnJlcGxhY2UoL15cLyovLCIvIiksVWc9cj0+IXJ8fHI9PT0iPyI/IiI6ci5zdGFydHNXaXRoKCI/Iik/cjoiPyIrcixCZz1yPT4hcnx8cj09PSIjIj8iIjpyLnN0YXJ0c1dpdGgoIiMiKT9yOiIjIityLEhnPWNsYXNze2NvbnN0cnVjdG9yKHIscyxsLHU9ITEpe3RoaXMuc3RhdHVzPXIsdGhpcy5zdGF0dXNUZXh0PXN8fCIiLHRoaXMuaW50ZXJuYWw9dSxsIGluc3RhbmNlb2YgRXJyb3I/KHRoaXMuZGF0YT1sLnRvU3RyaW5nKCksdGhpcy5lcnJvcj1sKTp0aGlzLmRhdGE9bH19O2Z1bmN0aW9uIFFnKHIpe3JldHVybiByIT1udWxsJiZ0eXBlb2Ygci5zdGF0dXM9PSJudW1iZXIiJiZ0eXBlb2Ygci5zdGF0dXNUZXh0PT0ic3RyaW5nIiYmdHlwZW9mIHIuaW50ZXJuYWw9PSJib29sZWFuIiYmImRhdGEiaW4gcn1mdW5jdGlvbiBxZyhyKXtsZXQgcz1yLm1hcChsPT5sLnJvdXRlLnBhdGgpLmZpbHRlcihCb29sZWFuKTtyZXR1cm4gYnQocyl8fCIvIn12YXIgUGg9dHlwZW9mIHdpbmRvdzwidSImJnR5cGVvZiB3aW5kb3cuZG9jdW1lbnQ8InUiJiZ0eXBlb2Ygd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQ8InUiO2Z1bmN0aW9uIF9oKHIscyl7bGV0IGw9cjtpZih0eXBlb2YgbCE9InN0cmluZyJ8fCF4dS50ZXN0KGwpKXJldHVybnthYnNvbHV0ZVVSTDp2b2lkIDAsaXNFeHRlcm5hbDohMSx0bzpsfTtsZXQgdT1sLGM9ITE7aWYoUGgpdHJ5e2xldCBoPW5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpLHA9U2gudGVzdChsKT9uZXcgVVJMKHhnKGwsaC5wcm90b2NvbCkpOm5ldyBVUkwobCksbT15bihwLnBhdGhuYW1lLHMpO3Aub3JpZ2luPT09aC5vcmlnaW4mJm0hPW51bGw/bD1tK3Auc2VhcmNoK3AuaGFzaDpjPSEwfWNhdGNoe0R0KCExLGA8TGluayB0bz0iJHtsfSI+IGNvbnRhaW5zIGFuIGludmFsaWQgVVJMIHdoaWNoIHdpbGwgcHJvYmFibHkgYnJlYWsgd2hlbiBjbGlja2VkIC0gcGxlYXNlIHVwZGF0ZSB0byBhIHZhbGlkIFVSTCBwYXRoLmApfXJldHVybnthYnNvbHV0ZVVSTDp1LGlzRXh0ZXJuYWw6Yyx0bzpsfX1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPYmplY3QucHJvdG90eXBlKS5zb3J0KCkuam9pbigiXDAiKTt2YXIgYmY9bmV3IFVSTCgiaHR0cDovL2xvY2FsaG9zdCIpO2Z1bmN0aW9uIFN1KHIpe2lmKHIuY3JlYXRlVVJMKXJldHVybiByLmNyZWF0ZVVSTCgiLyIpO3RyeXtyZXR1cm4gbmV3IFVSTChyLmNyZWF0ZUhyZWYoIi8iKSxiZil9Y2F0Y2h7cmV0dXJuIGJmfX1mdW5jdGlvbiBWYShyLHMpe3JldHVybiByLm9yaWdpbj09PXMub3JpZ2luJiYoci5vcmlnaW4hPT0ibnVsbCJ8fHIucHJvdG9jb2w9PT1zLnByb3RvY29sJiZyLmhvc3Q9PT1zLmhvc3QpfWZ1bmN0aW9uIGJnKHIscyl7aWYoci5zdGFydHNXaXRoKCIvLyIpKXJldHVybiEwO2xldCBsPXMucHJvdG9jb2wudG9Mb3dlckNhc2UoKTtyZXR1cm4gci50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgobCk/cy5ob3N0PT09IiJ8fHIuc2xpY2UobC5sZW5ndGgpLnN0YXJ0c1dpdGgoIi8vIik6ITF9ZnVuY3Rpb24ga3UocixzLGwsdSl7bGV0IGM9bnVsbDt0cnl7Yz1yPT1udWxsP251bGw6bmV3IFVSTChyLGwpfWNhdGNoe31sZXQgaD1uZXcgVVJMKHMsbCkscD1jIT1udWxsJiYhVmEoYyxsKSxtPSFWYShoLGwpO2lmKHU9PT0icmVqZWN0Iil7aWYocHx8bSl0aHJvdyBuZXcgRXJyb3IoIkV4dGVybmFsIG5hdmlnYXRpb24gaXMgbm90IGFsbG93ZWQiKX1lbHNlIGlmKG0mJihjPT1udWxsfHwhYmcocixjKXx8IVZhKGMsaCkpKXRocm93IG5ldyBFcnJvcigiRXh0ZXJuYWwgbmF2aWdhdGlvbiBpcyBub3QgYWxsb3dlZCIpfXZhciBUaD1bIlBPU1QiLCJQVVQiLCJQQVRDSCIsIkRFTEVURSJdO25ldyBTZXQoVGgpO3ZhciBXZz1bIkdFVCIsLi4uVGhdO25ldyBTZXQoV2cpO3ZhciBWZz1bImFib3V0OiIsImJsb2I6IiwiY2hyb21lOiIsImNocm9tZS11bnRydXN0ZWQ6IiwiY29udGVudDoiLCJkYXRhOiIsImRldnRvb2xzOiIsImZpbGU6IiwiZmlsZXN5c3RlbToiLCJqYXZhc2NyaXB0OiJdO2Z1bmN0aW9uIEtnKHIpe3RyeXtyZXR1cm4gVmcuaW5jbHVkZXMobmV3IFVSTChyKS5wcm90b2NvbCl9Y2F0Y2h7cmV0dXJuITF9fXZhciBjaT1FLmNyZWF0ZUNvbnRleHQobnVsbCk7Y2kuZGlzcGxheU5hbWU9IkRhdGFSb3V0ZXIiO3ZhciBVbD1FLmNyZWF0ZUNvbnRleHQobnVsbCk7VWwuZGlzcGxheU5hbWU9IkRhdGFSb3V0ZXJTdGF0ZSI7dmFyIExoPUUuY3JlYXRlQ29udGV4dCghMSk7ZnVuY3Rpb24gR2coKXtyZXR1cm4gRS51c2VDb250ZXh0KExoKX12YXIgRmg9RS5jcmVhdGVDb250ZXh0KHtpc1RyYW5zaXRpb25pbmc6ITF9KTtGaC5kaXNwbGF5TmFtZT0iVmlld1RyYW5zaXRpb24iO3ZhciBKZz1FLmNyZWF0ZUNvbnRleHQobmV3IE1hcCk7SmcuZGlzcGxheU5hbWU9IkZldGNoZXJzIjt2YXIgWWc9RS5jcmVhdGVDb250ZXh0KG51bGwpO1lnLmRpc3BsYXlOYW1lPSJBd2FpdCI7dmFyIEV0PUUuY3JlYXRlQ29udGV4dChudWxsKTtFdC5kaXNwbGF5TmFtZT0iTmF2aWdhdGlvbiI7dmFyIGRzPUUuY3JlYXRlQ29udGV4dChudWxsKTtkcy5kaXNwbGF5TmFtZT0iTG9jYXRpb24iO3ZhciBXdD1FLmNyZWF0ZUNvbnRleHQoe291dGxldDpudWxsLG1hdGNoZXM6W10saXNEYXRhUm91dGU6ITF9KTtXdC5kaXNwbGF5TmFtZT0iUm91dGUiO3ZhciBDdT1FLmNyZWF0ZUNvbnRleHQobnVsbCk7Q3UuZGlzcGxheU5hbWU9IlJvdXRlRXJyb3IiO3ZhciBPaD0iUkVBQ1RfUk9VVEVSX0VSUk9SIixYZz0iUkVESVJFQ1QiLFpnPSJST1VURV9FUlJPUl9SRVNQT05TRSI7ZnVuY3Rpb24gZXYocil7aWYoci5zdGFydHNXaXRoKGAke09ofToke1hnfTp7YCkpdHJ5e2xldCBzPUpTT04ucGFyc2Uoci5zbGljZSgyOCkpO2lmKHR5cGVvZiBzPT0ib2JqZWN0IiYmcyYmdHlwZW9mIHMuc3RhdHVzPT0ibnVtYmVyIiYmdHlwZW9mIHMuc3RhdHVzVGV4dD09InN0cmluZyImJnR5cGVvZiBzLmxvY2F0aW9uPT0ic3RyaW5nIiYmdHlwZW9mIHMucmVsb2FkRG9jdW1lbnQ9PSJib29sZWFuIiYmdHlwZW9mIHMucmVwbGFjZT09ImJvb2xlYW4iKXJldHVybiBzfWNhdGNoe319ZnVuY3Rpb24gdHYocil7aWYoci5zdGFydHNXaXRoKGAke09ofToke1pnfTp7YCkpdHJ5e2xldCBzPUpTT04ucGFyc2Uoci5zbGljZSg0MCkpO2lmKHR5cGVvZiBzPT0ib2JqZWN0IiYmcyYmdHlwZW9mIHMuc3RhdHVzPT0ibnVtYmVyIiYmdHlwZW9mIHMuc3RhdHVzVGV4dD09InN0cmluZyIpcmV0dXJuIG5ldyBIZyhzLnN0YXR1cyxzLnN0YXR1c1RleHQscy5kYXRhKX1jYXRjaHt9fWZ1bmN0aW9uIG52KHIse3JlbGF0aXZlOnN9PXt9KXtGZShkaSgpLCJ1c2VIcmVmKCkgbWF5IGJlIHVzZWQgb25seSBpbiB0aGUgY29udGV4dCBvZiBhIDxSb3V0ZXI+IGNvbXBvbmVudC4iKTtsZXR7YmFzZW5hbWU6bCxuYXZpZ2F0b3I6dX09RS51c2VDb250ZXh0KEV0KSx7aGFzaDpjLHBhdGhuYW1lOmgsc2VhcmNoOnB9PWZzKHIse3JlbGF0aXZlOnN9KSxtPWg7cmV0dXJuIGwhPT0iLyImJihtPWg9PT0iLyI/bDpidChbbCxoXSkpLHUuY3JlYXRlSHJlZih7cGF0aG5hbWU6bSxzZWFyY2g6cCxoYXNoOmN9KX1mdW5jdGlvbiBkaSgpe3JldHVybiBFLnVzZUNvbnRleHQoZHMpIT1udWxsfWZ1bmN0aW9uIFZ0KCl7cmV0dXJuIEZlKGRpKCksInVzZUxvY2F0aW9uKCkgbWF5IGJlIHVzZWQgb25seSBpbiB0aGUgY29udGV4dCBvZiBhIDxSb3V0ZXI+IGNvbXBvbmVudC4iKSxFLnVzZUNvbnRleHQoZHMpLmxvY2F0aW9ufXZhciBEaD0iWW91IHNob3VsZCBjYWxsIG5hdmlnYXRlKCkgaW4gYSBSZWFjdC51c2VFZmZlY3QoKSwgbm90IHdoZW4geW91ciBjb21wb25lbnQgaXMgZmlyc3QgcmVuZGVyZWQuIjtmdW5jdGlvbiBJaChyKXtFLnVzZUNvbnRleHQoRXQpLnN0YXRpY3x8RS51c2VMYXlvdXRFZmZlY3Qocil9ZnVuY3Rpb24gS24oKXtsZXR7aXNEYXRhUm91dGU6cn09RS51c2VDb250ZXh0KFd0KTtyZXR1cm4gcj9ndigpOnJ2KCl9ZnVuY3Rpb24gcnYoKXtGZShkaSgpLCJ1c2VOYXZpZ2F0ZSgpIG1heSBiZSB1c2VkIG9ubHkgaW4gdGhlIGNvbnRleHQgb2YgYSA8Um91dGVyPiBjb21wb25lbnQuIik7bGV0IHI9RS51c2VDb250ZXh0KGNpKSx7YmFzZW5hbWU6cyxuYXZpZ2F0b3I6bH09RS51c2VDb250ZXh0KEV0KSx7bWF0Y2hlczp1fT1FLnVzZUNvbnRleHQoV3QpLHtwYXRobmFtZTpjfT1WdCgpLGg9SlNPTi5zdHJpbmdpZnkod3UodSkpLHA9RS51c2VSZWYoITEpO3JldHVybiBJaCgoKT0+e3AuY3VycmVudD0hMH0pLEUudXNlQ2FsbGJhY2soKHYsUz17fSk9PntpZihEdChwLmN1cnJlbnQsRGgpLCFwLmN1cnJlbnQpcmV0dXJuO2lmKHR5cGVvZiB2PT0ibnVtYmVyIil7bC5nbyh2KTtyZXR1cm59bGV0IEM9JGwodixKU09OLnBhcnNlKGgpLGMsUy5yZWxhdGl2ZT09PSJwYXRoIik7cj09bnVsbCYmcyE9PSIvIiYmKEMucGF0aG5hbWU9Qy5wYXRobmFtZT09PSIvIj9zOmJ0KFtzLEMucGF0aG5hbWVdKSksa3UodHlwZW9mIHY9PSJzdHJpbmciP3Y6eXIodiksbC5jcmVhdGVIcmVmKEMpLFN1KGwpLCJyZWplY3QiKSwoUy5yZXBsYWNlP2wucmVwbGFjZTpsLnB1c2gpKEMsUy5zdGF0ZSxTKX0sW3MsbCxoLGMscl0pfUUuY3JlYXRlQ29udGV4dChudWxsKTtmdW5jdGlvbiBpdigpe2xldHttYXRjaGVzOnJ9PUUudXNlQ29udGV4dChXdCkscz1yW3IubGVuZ3RoLTFdO3JldHVybihzPT1udWxsP3ZvaWQgMDpzLnBhcmFtcyk/P3t9fWZ1bmN0aW9uIGZzKHIse3JlbGF0aXZlOnN9PXt9KXtsZXR7bWF0Y2hlczpsfT1FLnVzZUNvbnRleHQoV3QpLHtwYXRobmFtZTp1fT1WdCgpLGM9SlNPTi5zdHJpbmdpZnkod3UobCkpO3JldHVybiBFLnVzZU1lbW8oKCk9PiRsKHIsSlNPTi5wYXJzZShjKSx1LHM9PT0icGF0aCIpLFtyLGMsdSxzXSl9ZnVuY3Rpb24gc3YocixzKXtyZXR1cm4gTWgocixzKX1mdW5jdGlvbiBNaChyLHMsbCl7dmFyIEw7RmUoZGkoKSwidXNlUm91dGVzKCkgbWF5IGJlIHVzZWQgb25seSBpbiB0aGUgY29udGV4dCBvZiBhIDxSb3V0ZXI+IGNvbXBvbmVudC4iKTtsZXR7bmF2aWdhdG9yOnV9PUUudXNlQ29udGV4dChFdCkse21hdGNoZXM6Y309RS51c2VDb250ZXh0KFd0KSxoPWNbYy5sZW5ndGgtMV0scD1oP2gucGFyYW1zOnt9LG09aD9oLnBhdGhuYW1lOiIvIix2PWg/aC5wYXRobmFtZUJhc2U6Ii8iLFM9aCYmaC5yb3V0ZTt7bGV0ICQ9UyYmUy5wYXRofHwiIjtBaChtLCFTfHwkLmVuZHNXaXRoKCIqIil8fCQuZW5kc1dpdGgoIio/IiksYFlvdSByZW5kZXJlZCBkZXNjZW5kYW50IDxSb3V0ZXM+IChvciBjYWxsZWQgXGB1c2VSb3V0ZXMoKVxgKSBhdCAiJHttfSIgKHVuZGVyIDxSb3V0ZSBwYXRoPSIkeyR9Ij4pIGJ1dCB0aGUgcGFyZW50IHJvdXRlIHBhdGggaGFzIG5vIHRyYWlsaW5nICIqIi4gVGhpcyBtZWFucyBpZiB5b3UgbmF2aWdhdGUgZGVlcGVyLCB0aGUgcGFyZW50IHdvbid0IG1hdGNoIGFueW1vcmUgYW5kIHRoZXJlZm9yZSB0aGUgY2hpbGQgcm91dGVzIHdpbGwgbmV2ZXIgcmVuZGVyLgoKUGxlYXNlIGNoYW5nZSB0aGUgcGFyZW50IDxSb3V0ZSBwYXRoPSIkeyR9Ij4gdG8gPFJvdXRlIHBhdGg9IiR7JD09PSIvIj8iKiI6YCR7JH0vKmB9Ij4uYCl9bGV0IEM9VnQoKSx4O2lmKHMpe2xldCAkPXR5cGVvZiBzPT0ic3RyaW5nIj91aShzKTpzO0ZlKHY9PT0iLyJ8fCgoTD0kLnBhdGhuYW1lKT09bnVsbD92b2lkIDA6TC5zdGFydHNXaXRoKHYpKSxgV2hlbiBvdmVycmlkaW5nIHRoZSBsb2NhdGlvbiB1c2luZyBcYDxSb3V0ZXMgbG9jYXRpb24+XGAgb3IgXGB1c2VSb3V0ZXMocm91dGVzLCBsb2NhdGlvbilcYCwgdGhlIGxvY2F0aW9uIHBhdGhuYW1lIG11c3QgYmVnaW4gd2l0aCB0aGUgcG9ydGlvbiBvZiB0aGUgVVJMIHBhdGhuYW1lIHRoYXQgd2FzIG1hdGNoZWQgYnkgYWxsIHBhcmVudCByb3V0ZXMuIFRoZSBjdXJyZW50IHBhdGhuYW1lIGJhc2UgaXMgIiR7dn0iIGJ1dCBwYXRobmFtZSAiJHskLnBhdGhuYW1lfSIgd2FzIGdpdmVuIGluIHRoZSBcYGxvY2F0aW9uXGAgcHJvcC5gKSx4PSR9ZWxzZSB4PUM7bGV0IF89eC5wYXRobmFtZXx8Ii8iLEk9XztpZih2IT09Ii8iKXtsZXQgJD12LnJlcGxhY2UoL15cLy8sIiIpLnNwbGl0KCIvIik7ST0iLyIrXy5yZXBsYWNlKC9eXC8vLCIiKS5zcGxpdCgiLyIpLnNsaWNlKCQubGVuZ3RoKS5qb2luKCIvIil9bGV0IE89bCYmbC5zdGF0ZS5tYXRjaGVzLmxlbmd0aD9sLnN0YXRlLm1hdGNoZXMubWFwKCQ9Pk9iamVjdC5hc3NpZ24oJCx7cm91dGU6bC5tYW5pZmVzdFskLnJvdXRlLmlkXXx8JC5yb3V0ZX0pKTpraChyLHtwYXRobmFtZTpJfSk7RHQoU3x8TyE9bnVsbCxgTm8gcm91dGVzIG1hdGNoZWQgbG9jYXRpb24gIiR7eC5wYXRobmFtZX0ke3guc2VhcmNofSR7eC5oYXNofSIgYCksRHQoTz09bnVsbHx8T1tPLmxlbmd0aC0xXS5yb3V0ZS5lbGVtZW50IT09dm9pZCAwfHxPW08ubGVuZ3RoLTFdLnJvdXRlLkNvbXBvbmVudCE9PXZvaWQgMHx8T1tPLmxlbmd0aC0xXS5yb3V0ZS5sYXp5IT09dm9pZCAwLGBNYXRjaGVkIGxlYWYgcm91dGUgYXQgbG9jYXRpb24gIiR7eC5wYXRobmFtZX0ke3guc2VhcmNofSR7eC5oYXNofSIgZG9lcyBub3QgaGF2ZSBhbiBlbGVtZW50IG9yIENvbXBvbmVudC4gVGhpcyBtZWFucyBpdCB3aWxsIHJlbmRlciBhbiA8T3V0bGV0IC8+IHdpdGggYSBudWxsIHZhbHVlIGJ5IGRlZmF1bHQgcmVzdWx0aW5nIGluIGFuICJlbXB0eSIgcGFnZS5gKTtsZXQgRj1jdihPJiZPLm1hcCgkPT5PYmplY3QuYXNzaWduKHt9LCQse3BhcmFtczpPYmplY3QuYXNzaWduKHt9LHAsJC5wYXJhbXMpLHBhdGhuYW1lOmJ0KFt2LHUuZW5jb2RlTG9jYXRpb24/dS5lbmNvZGVMb2NhdGlvbigkLnBhdGhuYW1lLnJlcGxhY2UoLyUvZywiJTI1IikucmVwbGFjZSgvXD8vZywiJTNGIikucmVwbGFjZSgvIy9nLCIlMjMiKSkucGF0aG5hbWU6JC5wYXRobmFtZV0pLHBhdGhuYW1lQmFzZTokLnBhdGhuYW1lQmFzZT09PSIvIj92OmJ0KFt2LHUuZW5jb2RlTG9jYXRpb24/dS5lbmNvZGVMb2NhdGlvbigkLnBhdGhuYW1lQmFzZS5yZXBsYWNlKC8lL2csIiUyNSIpLnJlcGxhY2UoL1w/L2csIiUzRiIpLnJlcGxhY2UoLyMvZywiJTIzIikpLnBhdGhuYW1lOiQucGF0aG5hbWVCYXNlXSl9KSksYyxsKTtyZXR1cm4gcyYmRj9FLmNyZWF0ZUVsZW1lbnQoZHMuUHJvdmlkZXIse3ZhbHVlOntsb2NhdGlvbjp7cGF0aG5hbWU6Ii8iLHNlYXJjaDoiIixoYXNoOiIiLHN0YXRlOm51bGwsa2V5OiJkZWZhdWx0IixtYXNrOnZvaWQgMCwuLi54fSxuYXZpZ2F0aW9uVHlwZToiUE9QIn19LEYpOkZ9ZnVuY3Rpb24gbHYoKXtsZXQgcj1tdigpLHM9UWcocik/YCR7ci5zdGF0dXN9ICR7ci5zdGF0dXNUZXh0fWA6ciBpbnN0YW5jZW9mIEVycm9yP3IubWVzc2FnZTpKU09OLnN0cmluZ2lmeShyKSxsPXIgaW5zdGFuY2VvZiBFcnJvcj9yLnN0YWNrOm51bGwsdT0icmdiYSgyMDAsMjAwLDIwMCwgMC41KSIsYz17cGFkZGluZzoiMC41cmVtIixiYWNrZ3JvdW5kQ29sb3I6dX0saD17cGFkZGluZzoiMnB4IDRweCIsYmFja2dyb3VuZENvbG9yOnV9LHA9bnVsbDtyZXR1cm4gY29uc29sZS5lcnJvcigiRXJyb3IgaGFuZGxlZCBieSBSZWFjdCBSb3V0ZXIgZGVmYXVsdCBFcnJvckJvdW5kYXJ5OiIscikscD1FLmNyZWF0ZUVsZW1lbnQoRS5GcmFnbWVudCxudWxsLEUuY3JlYXRlRWxlbWVudCgicCIsbnVsbCwi8J+SvyBIZXkgZGV2ZWxvcGVyIPCfkYsiKSxFLmNyZWF0ZUVsZW1lbnQoInAiLG51bGwsIllvdSBjYW4gcHJvdmlkZSBhIHdheSBiZXR0ZXIgVVggdGhhbiB0aGlzIHdoZW4geW91ciBhcHAgdGhyb3dzIGVycm9ycyBieSBwcm92aWRpbmcgeW91ciBvd24gIixFLmNyZWF0ZUVsZW1lbnQoImNvZGUiLHtzdHlsZTpofSwiRXJyb3JCb3VuZGFyeSIpLCIgb3IiLCIgIixFLmNyZWF0ZUVsZW1lbnQoImNvZGUiLHtzdHlsZTpofSwiZXJyb3JFbGVtZW50IiksIiBwcm9wIG9uIHlvdXIgcm91dGUuIikpLEUuY3JlYXRlRWxlbWVudChFLkZyYWdtZW50LG51bGwsRS5jcmVhdGVFbGVtZW50KCJoMiIsbnVsbCwiVW5leHBlY3RlZCBBcHBsaWNhdGlvbiBFcnJvciEiKSxFLmNyZWF0ZUVsZW1lbnQoImgzIix7c3R5bGU6e2ZvbnRTdHlsZToiaXRhbGljIn19LHMpLGw/RS5jcmVhdGVFbGVtZW50KCJwcmUiLHtzdHlsZTpjfSxsKTpudWxsLHApfXZhciBvdj1FLmNyZWF0ZUVsZW1lbnQobHYsbnVsbCksemg9Y2xhc3MgZXh0ZW5kcyBFLkNvbXBvbmVudHtjb25zdHJ1Y3RvcihyKXtzdXBlcihyKSx0aGlzLnN0YXRlPXtsb2NhdGlvbjpyLmxvY2F0aW9uLHJldmFsaWRhdGlvbjpyLnJldmFsaWRhdGlvbixlcnJvcjpyLmVycm9yfX1zdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yKHIpe3JldHVybntlcnJvcjpyfX1zdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKHIscyl7cmV0dXJuIHMubG9jYXRpb24hPT1yLmxvY2F0aW9ufHxzLnJldmFsaWRhdGlvbiE9PSJpZGxlIiYmci5yZXZhbGlkYXRpb249PT0iaWRsZSI/e2Vycm9yOnIuZXJyb3IsbG9jYXRpb246ci5sb2NhdGlvbixyZXZhbGlkYXRpb246ci5yZXZhbGlkYXRpb259OntlcnJvcjpyLmVycm9yIT09dm9pZCAwP3IuZXJyb3I6cy5lcnJvcixsb2NhdGlvbjpzLmxvY2F0aW9uLHJldmFsaWRhdGlvbjpyLnJldmFsaWRhdGlvbnx8cy5yZXZhbGlkYXRpb259fWNvbXBvbmVudERpZENhdGNoKHIscyl7dGhpcy5wcm9wcy5vbkVycm9yP3RoaXMucHJvcHMub25FcnJvcihyLHMpOmNvbnNvbGUuZXJyb3IoIlJlYWN0IFJvdXRlciBjYXVnaHQgdGhlIGZvbGxvd2luZyBlcnJvciBkdXJpbmcgcmVuZGVyIixyKX1yZW5kZXIoKXtsZXQgcj10aGlzLnN0YXRlLmVycm9yO2lmKHRoaXMuY29udGV4dCYmdHlwZW9mIHI9PSJvYmplY3QiJiZyJiYiZGlnZXN0ImluIHImJnR5cGVvZiByLmRpZ2VzdD09InN0cmluZyIpe2NvbnN0IGw9dHYoci5kaWdlc3QpO2wmJihyPWwpfWxldCBzPXIhPT12b2lkIDA/RS5jcmVhdGVFbGVtZW50KFd0LlByb3ZpZGVyLHt2YWx1ZTp0aGlzLnByb3BzLnJvdXRlQ29udGV4dH0sRS5jcmVhdGVFbGVtZW50KEN1LlByb3ZpZGVyLHt2YWx1ZTpyLGNoaWxkcmVuOnRoaXMucHJvcHMuY29tcG9uZW50fSkpOnRoaXMucHJvcHMuY2hpbGRyZW47cmV0dXJuIHRoaXMuY29udGV4dD9FLmNyZWF0ZUVsZW1lbnQoYXYse2Vycm9yOnJ9LHMpOnN9fTt6aC5jb250ZXh0VHlwZT1MaDt2YXIgS2E9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gYXYoe2NoaWxkcmVuOnIsZXJyb3I6c30pe2xldHtiYXNlbmFtZTpsLG5hdmlnYXRvcjp1fT1FLnVzZUNvbnRleHQoRXQpO2lmKHR5cGVvZiBzPT0ib2JqZWN0IiYmcyYmImRpZ2VzdCJpbiBzJiZ0eXBlb2Ygcy5kaWdlc3Q9PSJzdHJpbmciKXtsZXQgYz1ldihzLmRpZ2VzdCk7aWYoYyl7bGV0IGg9S2EuZ2V0KHMpO2lmKGgpdGhyb3cgaDtsZXQgcD1faChjLmxvY2F0aW9uLGwpLG09cC5hYnNvbHV0ZVVSTHx8cC50bztpZihrdShjLmxvY2F0aW9uLG0sU3UodSksImFsbG93LWV4cGxpY2l0IiksS2cobSkpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHJlZGlyZWN0IGxvY2F0aW9uIik7aWYoUGgmJiFLYS5nZXQocykpaWYocC5pc0V4dGVybmFsfHxjLnJlbG9hZERvY3VtZW50KXdpbmRvdy5sb2NhdGlvbi5ocmVmPW07ZWxzZXtjb25zdCB2PVByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PndpbmRvdy5fX3JlYWN0Um91dGVyRGF0YVJvdXRlci5uYXZpZ2F0ZShwLnRvLHtyZXBsYWNlOmMucmVwbGFjZX0pKTt0aHJvdyBLYS5zZXQocyx2KSx2fXJldHVybiBFLmNyZWF0ZUVsZW1lbnQoIm1ldGEiLHtodHRwRXF1aXY6InJlZnJlc2giLGNvbnRlbnQ6YDA7dXJsPSR7bX1gfSl9fXJldHVybiByfWZ1bmN0aW9uIHV2KHtyb3V0ZUNvbnRleHQ6cixtYXRjaDpzLGNoaWxkcmVuOmx9KXtsZXQgdT1FLnVzZUNvbnRleHQoY2kpO3JldHVybiB1JiZ1LnN0YXRpYyYmdS5zdGF0aWNDb250ZXh0JiYocy5yb3V0ZS5lcnJvckVsZW1lbnR8fHMucm91dGUuRXJyb3JCb3VuZGFyeSkmJih1LnN0YXRpY0NvbnRleHQuX2RlZXBlc3RSZW5kZXJlZEJvdW5kYXJ5SWQ9cy5yb3V0ZS5pZCksRS5jcmVhdGVFbGVtZW50KFd0LlByb3ZpZGVyLHt2YWx1ZTpyfSxsKX1mdW5jdGlvbiBjdihyLHM9W10sbCl7bGV0IHU9bD09bnVsbD92b2lkIDA6bC5zdGF0ZTtpZihyPT1udWxsKXtpZighdSlyZXR1cm4gbnVsbDtpZih1LmVycm9ycylyPXUubWF0Y2hlcztlbHNlIGlmKHMubGVuZ3RoPT09MCYmIXUuaW5pdGlhbGl6ZWQmJnUubWF0Y2hlcy5sZW5ndGg+MClyPXUubWF0Y2hlcztlbHNlIHJldHVybiBudWxsfWxldCBjPXIsaD11PT1udWxsP3ZvaWQgMDp1LmVycm9ycztpZihoIT1udWxsKXtsZXQgQz1jLmZpbmRJbmRleCh4PT54LnJvdXRlLmlkJiYoaD09bnVsbD92b2lkIDA6aFt4LnJvdXRlLmlkXSkhPT12b2lkIDApO0ZlKEM+PTAsYENvdWxkIG5vdCBmaW5kIGEgbWF0Y2hpbmcgcm91dGUgZm9yIGVycm9ycyBvbiByb3V0ZSBJRHM6ICR7T2JqZWN0LmtleXMoaCkuam9pbigiLCIpfWApLGM9Yy5zbGljZSgwLE1hdGgubWluKGMubGVuZ3RoLEMrMSkpfWxldCBwPSExLG09LTE7aWYobCYmdSl7cD11LnJlbmRlckZhbGxiYWNrO2ZvcihsZXQgQz0wO0M8Yy5sZW5ndGg7QysrKXtsZXQgeD1jW0NdO2lmKCh4LnJvdXRlLkh5ZHJhdGVGYWxsYmFja3x8eC5yb3V0ZS5oeWRyYXRlRmFsbGJhY2tFbGVtZW50KSYmKG09QykseC5yb3V0ZS5pZCl7bGV0e2xvYWRlckRhdGE6XyxlcnJvcnM6SX09dSxPPXgucm91dGUubG9hZGVyJiYhXy5oYXNPd25Qcm9wZXJ0eSh4LnJvdXRlLmlkKSYmKCFJfHxJW3gucm91dGUuaWRdPT09dm9pZCAwKTtpZih4LnJvdXRlLmxhenl8fE8pe2wuaXNTdGF0aWMmJihwPSEwKSxtPj0wP2M9Yy5zbGljZSgwLG0rMSk6Yz1bY1swXV07YnJlYWt9fX19bGV0IHY9bD09bnVsbD92b2lkIDA6bC5vbkVycm9yLFM9dSYmdj8oQyx4KT0+e3ZhciBfLEk7dihDLHtsb2NhdGlvbjp1LmxvY2F0aW9uLHBhcmFtczooKEk9KF89dS5tYXRjaGVzKT09bnVsbD92b2lkIDA6X1swXSk9PW51bGw/dm9pZCAwOkkucGFyYW1zKT8/e30scGF0dGVybjpxZyh1Lm1hdGNoZXMpLGVycm9ySW5mbzp4fSl9OnZvaWQgMDtyZXR1cm4gYy5yZWR1Y2VSaWdodCgoQyx4LF8pPT57bGV0IEksTz0hMSxGPW51bGwsTD1udWxsO3UmJihJPWgmJngucm91dGUuaWQ/aFt4LnJvdXRlLmlkXTp2b2lkIDAsRj14LnJvdXRlLmVycm9yRWxlbWVudHx8b3YscCYmKG08MCYmXz09PTA/KEFoKCJyb3V0ZS1mYWxsYmFjayIsITEsIk5vIGBIeWRyYXRlRmFsbGJhY2tgIGVsZW1lbnQgcHJvdmlkZWQgdG8gcmVuZGVyIGR1cmluZyBpbml0aWFsIGh5ZHJhdGlvbiIpLE89ITAsTD1udWxsKTptPT09XyYmKE89ITAsTD14LnJvdXRlLmh5ZHJhdGVGYWxsYmFja0VsZW1lbnR8fG51bGwpKSk7bGV0ICQ9cy5jb25jYXQoYy5zbGljZSgwLF8rMSkpLFE9KCk9PntsZXQgSDtyZXR1cm4gST9IPUY6Tz9IPUw6eC5yb3V0ZS5Db21wb25lbnQ/SD1FLmNyZWF0ZUVsZW1lbnQoeC5yb3V0ZS5Db21wb25lbnQsbnVsbCk6eC5yb3V0ZS5lbGVtZW50P0g9eC5yb3V0ZS5lbGVtZW50Okg9QyxFLmNyZWF0ZUVsZW1lbnQodXYse21hdGNoOngscm91dGVDb250ZXh0OntvdXRsZXQ6QyxtYXRjaGVzOiQsaXNEYXRhUm91dGU6dSE9bnVsbH0sY2hpbGRyZW46SH0pfTtyZXR1cm4gdSYmKHgucm91dGUuRXJyb3JCb3VuZGFyeXx8eC5yb3V0ZS5lcnJvckVsZW1lbnR8fF89PT0wKT9FLmNyZWF0ZUVsZW1lbnQoemgse2xvY2F0aW9uOnUubG9jYXRpb24scmV2YWxpZGF0aW9uOnUucmV2YWxpZGF0aW9uLGNvbXBvbmVudDpGLGVycm9yOkksY2hpbGRyZW46USgpLHJvdXRlQ29udGV4dDp7b3V0bGV0Om51bGwsbWF0Y2hlczokLGlzRGF0YVJvdXRlOiEwfSxvbkVycm9yOlN9KTpRKCl9LG51bGwpfWZ1bmN0aW9uIEV1KHIpe3JldHVybmAke3J9IG11c3QgYmUgdXNlZCB3aXRoaW4gYSBkYXRhIHJvdXRlci4gIFNlZSBodHRwczovL3JlYWN0cm91dGVyLmNvbS9lbi9tYWluL3JvdXRlcnMvcGlja2luZy1hLXJvdXRlci5gfWZ1bmN0aW9uIGR2KHIpe2xldCBzPUUudXNlQ29udGV4dChjaSk7cmV0dXJuIEZlKHMsRXUocikpLHN9ZnVuY3Rpb24gZnYocil7bGV0IHM9RS51c2VDb250ZXh0KFVsKTtyZXR1cm4gRmUocyxFdShyKSksc31mdW5jdGlvbiBodihyKXtsZXQgcz1FLnVzZUNvbnRleHQoV3QpO3JldHVybiBGZShzLEV1KHIpKSxzfWZ1bmN0aW9uIGp1KHIpe2xldCBzPWh2KHIpLGw9cy5tYXRjaGVzW3MubWF0Y2hlcy5sZW5ndGgtMV07cmV0dXJuIEZlKGwucm91dGUuaWQsYCR7cn0gY2FuIG9ubHkgYmUgdXNlZCBvbiByb3V0ZXMgdGhhdCBjb250YWluIGEgdW5pcXVlICJpZCJgKSxsLnJvdXRlLmlkfWZ1bmN0aW9uIHB2KCl7cmV0dXJuIGp1KCJ1c2VSb3V0ZUlkIil9ZnVuY3Rpb24gbXYoKXt2YXIgdTtsZXQgcj1FLnVzZUNvbnRleHQoQ3UpLHM9ZnYoInVzZVJvdXRlRXJyb3IiKSxsPWp1KCJ1c2VSb3V0ZUVycm9yIik7cmV0dXJuIHIhPT12b2lkIDA/cjoodT1zLmVycm9ycyk9PW51bGw/dm9pZCAwOnVbbF19ZnVuY3Rpb24gZ3YoKXtsZXR7cm91dGVyOnJ9PWR2KCJ1c2VOYXZpZ2F0ZSIpLHM9anUoInVzZU5hdmlnYXRlIiksbD1FLnVzZVJlZighMSk7cmV0dXJuIEloKCgpPT57bC5jdXJyZW50PSEwfSksRS51c2VDYWxsYmFjayhhc3luYyhjLGg9e30pPT57RHQobC5jdXJyZW50LERoKSxsLmN1cnJlbnQmJih0eXBlb2YgYz09Im51bWJlciI/YXdhaXQgci5uYXZpZ2F0ZShjKTphd2FpdCByLm5hdmlnYXRlKGMse2Zyb21Sb3V0ZUlkOnMsLi4uaH0pKX0sW3Isc10pfXZhciBXZj17fTtmdW5jdGlvbiBBaChyLHMsbCl7IXMmJiFXZltyXSYmKFdmW3JdPSEwLER0KCExLGwpKX1FLm1lbW8odnYpO2Z1bmN0aW9uIHZ2KHtyb3V0ZXM6cixtYW5pZmVzdDpzLGZ1dHVyZTpsLHN0YXRlOnUsaXNTdGF0aWM6YyxvbkVycm9yOmh9KXtyZXR1cm4gTWgocix2b2lkIDAse21hbmlmZXN0OnMsc3RhdGU6dSxpc1N0YXRpYzpjLG9uRXJyb3I6aH0pfWZ1bmN0aW9uICRoKHt0bzpyLHJlcGxhY2U6cyxzdGF0ZTpsLHJlbGF0aXZlOnV9KXtGZShkaSgpLCI8TmF2aWdhdGU+IG1heSBiZSB1c2VkIG9ubHkgaW4gdGhlIGNvbnRleHQgb2YgYSA8Um91dGVyPiBjb21wb25lbnQuIik7bGV0e3N0YXRpYzpjLG5hdmlnYXRvcjpofT1FLnVzZUNvbnRleHQoRXQpO0R0KCFjLCI8TmF2aWdhdGU+IG11c3Qgbm90IGJlIHVzZWQgb24gdGhlIGluaXRpYWwgcmVuZGVyIGluIGEgPFN0YXRpY1JvdXRlcj4uIFRoaXMgaXMgYSBuby1vcCwgYnV0IHlvdSBzaG91bGQgbW9kaWZ5IHlvdXIgY29kZSBzbyB0aGUgPE5hdmlnYXRlPiBpcyBvbmx5IGV2ZXIgcmVuZGVyZWQgaW4gcmVzcG9uc2UgdG8gc29tZSB1c2VyIGludGVyYWN0aW9uIG9yIHN0YXRlIGNoYW5nZS4iKTtsZXR7bWF0Y2hlczpwfT1FLnVzZUNvbnRleHQoV3QpLHtwYXRobmFtZTptfT1WdCgpLHY9S24oKSxTPSRsKHIsd3UocCksbSx1PT09InBhdGgiKTtrdSh0eXBlb2Ygcj09InN0cmluZyI/cjp5cihyKSxoLmNyZWF0ZUhyZWYoUyksU3UoaCksInJlamVjdCIpO2xldCBDPUpTT04uc3RyaW5naWZ5KFMpO3JldHVybiBFLnVzZUVmZmVjdCgoKT0+e3YoSlNPTi5wYXJzZShDKSx7cmVwbGFjZTpzLHN0YXRlOmwscmVsYXRpdmU6dX0pfSxbdixDLHUscyxsXSksbnVsbH1mdW5jdGlvbiBWcihyKXtGZSghMSwiQSA8Um91dGU+IGlzIG9ubHkgZXZlciB0byBiZSB1c2VkIGFzIHRoZSBjaGlsZCBvZiA8Um91dGVzPiBlbGVtZW50LCBuZXZlciByZW5kZXJlZCBkaXJlY3RseS4gUGxlYXNlIHdyYXAgeW91ciA8Um91dGU+IGluIGEgPFJvdXRlcz4uIil9ZnVuY3Rpb24geXYoe2Jhc2VuYW1lOnI9Ii8iLGNoaWxkcmVuOnM9bnVsbCxsb2NhdGlvbjpsLG5hdmlnYXRpb25UeXBlOnU9IlBPUCIsbmF2aWdhdG9yOmMsc3RhdGljOmg9ITEsdXNlVHJhbnNpdGlvbnM6cH0pe0ZlKCFkaSgpLCJZb3UgY2Fubm90IHJlbmRlciBhIDxSb3V0ZXI+IGluc2lkZSBhbm90aGVyIDxSb3V0ZXI+LiBZb3Ugc2hvdWxkIG5ldmVyIGhhdmUgbW9yZSB0aGFuIG9uZSBpbiB5b3VyIGFwcC4iKTtsZXQgbT1yLnJlcGxhY2UoL15cLyovLCIvIiksdj1FLnVzZU1lbW8oKCk9Pih7YmFzZW5hbWU6bSxuYXZpZ2F0b3I6YyxzdGF0aWM6aCx1c2VUcmFuc2l0aW9uczpwLGZ1dHVyZTp7fX0pLFttLGMsaCxwXSk7dHlwZW9mIGw9PSJzdHJpbmciJiYobD11aShsKSk7bGV0e3BhdGhuYW1lOlM9Ii8iLHNlYXJjaDpDPSIiLGhhc2g6eD0iIixzdGF0ZTpfPW51bGwsa2V5Okk9ImRlZmF1bHQiLG1hc2s6T309bCxGPUUudXNlTWVtbygoKT0+e2xldCBMPXluKFMsbSk7cmV0dXJuIEw9PW51bGw/bnVsbDp7bG9jYXRpb246e3BhdGhuYW1lOkwsc2VhcmNoOkMsaGFzaDp4LHN0YXRlOl8sa2V5OkksbWFzazpPfSxuYXZpZ2F0aW9uVHlwZTp1fX0sW20sUyxDLHgsXyxJLHUsT10pO3JldHVybiBEdChGIT1udWxsLGA8Um91dGVyIGJhc2VuYW1lPSIke219Ij4gaXMgbm90IGFibGUgdG8gbWF0Y2ggdGhlIFVSTCAiJHtTfSR7Q30ke3h9IiBiZWNhdXNlIGl0IGRvZXMgbm90IHN0YXJ0IHdpdGggdGhlIGJhc2VuYW1lLCBzbyB0aGUgPFJvdXRlcj4gd29uJ3QgcmVuZGVyIGFueXRoaW5nLmApLEY9PW51bGw/bnVsbDpFLmNyZWF0ZUVsZW1lbnQoRXQuUHJvdmlkZXIse3ZhbHVlOnZ9LEUuY3JlYXRlRWxlbWVudChkcy5Qcm92aWRlcix7Y2hpbGRyZW46cyx2YWx1ZTpGfSkpfWZ1bmN0aW9uIHh2KHtjaGlsZHJlbjpyLGxvY2F0aW9uOnN9KXtyZXR1cm4gc3YodHUocikscyl9ZnVuY3Rpb24gdHUocixzPVtdKXtsZXQgbD1bXTtyZXR1cm4gRS5DaGlsZHJlbi5mb3JFYWNoKHIsKHUsYyk9PntpZighRS5pc1ZhbGlkRWxlbWVudCh1KSlyZXR1cm47bGV0IGg9Wy4uLnMsY107aWYodS50eXBlPT09RS5GcmFnbWVudCl7bC5wdXNoLmFwcGx5KGwsdHUodS5wcm9wcy5jaGlsZHJlbixoKSk7cmV0dXJufUZlKHUudHlwZT09PVZyLGBbJHt0eXBlb2YgdS50eXBlPT0ic3RyaW5nIj91LnR5cGU6dS50eXBlLm5hbWV9XSBpcyBub3QgYSA8Um91dGU+IGNvbXBvbmVudC4gQWxsIGNvbXBvbmVudCBjaGlsZHJlbiBvZiA8Um91dGVzPiBtdXN0IGJlIGEgPFJvdXRlPiBvciA8UmVhY3QuRnJhZ21lbnQ+YCksRmUoIXUucHJvcHMuaW5kZXh8fCF1LnByb3BzLmNoaWxkcmVuLCJBbiBpbmRleCByb3V0ZSBjYW5ub3QgaGF2ZSBjaGlsZCByb3V0ZXMuIik7bGV0IHA9e2lkOnUucHJvcHMuaWR8fGguam9pbigiLSIpLGNhc2VTZW5zaXRpdmU6dS5wcm9wcy5jYXNlU2Vuc2l0aXZlLGVsZW1lbnQ6dS5wcm9wcy5lbGVtZW50LENvbXBvbmVudDp1LnByb3BzLkNvbXBvbmVudCxpbmRleDp1LnByb3BzLmluZGV4LHBhdGg6dS5wcm9wcy5wYXRoLG1pZGRsZXdhcmU6dS5wcm9wcy5taWRkbGV3YXJlLGxvYWRlcjp1LnByb3BzLmxvYWRlcixhY3Rpb246dS5wcm9wcy5hY3Rpb24saHlkcmF0ZUZhbGxiYWNrRWxlbWVudDp1LnByb3BzLmh5ZHJhdGVGYWxsYmFja0VsZW1lbnQsSHlkcmF0ZUZhbGxiYWNrOnUucHJvcHMuSHlkcmF0ZUZhbGxiYWNrLGVycm9yRWxlbWVudDp1LnByb3BzLmVycm9yRWxlbWVudCxFcnJvckJvdW5kYXJ5OnUucHJvcHMuRXJyb3JCb3VuZGFyeSxoYXNFcnJvckJvdW5kYXJ5OnUucHJvcHMuaGFzRXJyb3JCb3VuZGFyeT09PSEwfHx1LnByb3BzLkVycm9yQm91bmRhcnkhPW51bGx8fHUucHJvcHMuZXJyb3JFbGVtZW50IT1udWxsLHNob3VsZFJldmFsaWRhdGU6dS5wcm9wcy5zaG91bGRSZXZhbGlkYXRlLGhhbmRsZTp1LnByb3BzLmhhbmRsZSxsYXp5OnUucHJvcHMubGF6eX07dS5wcm9wcy5jaGlsZHJlbiYmKHAuY2hpbGRyZW49dHUodS5wcm9wcy5jaGlsZHJlbixoKSksbC5wdXNoKHApfSksbH12YXIgTGw9ImdldCIsRmw9ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCI7ZnVuY3Rpb24gQmwocil7cmV0dXJuIHR5cGVvZiBIVE1MRWxlbWVudDwidSImJnIgaW5zdGFuY2VvZiBIVE1MRWxlbWVudH1mdW5jdGlvbiB3dihyKXtyZXR1cm4gQmwocikmJnIudGFnTmFtZS50b0xvd2VyQ2FzZSgpPT09ImJ1dHRvbiJ9ZnVuY3Rpb24gU3Yocil7cmV0dXJuIEJsKHIpJiZyLnRhZ05hbWUudG9Mb3dlckNhc2UoKT09PSJmb3JtIn1mdW5jdGlvbiBrdihyKXtyZXR1cm4gQmwocikmJnIudGFnTmFtZS50b0xvd2VyQ2FzZSgpPT09ImlucHV0In1mdW5jdGlvbiBDdihyKXtyZXR1cm4hIShyLm1ldGFLZXl8fHIuYWx0S2V5fHxyLmN0cmxLZXl8fHIuc2hpZnRLZXkpfWZ1bmN0aW9uIEV2KHIscyl7cmV0dXJuIHIuYnV0dG9uPT09MCYmKCFzfHxzPT09Il9zZWxmIikmJiFDdihyKX1mdW5jdGlvbiBudShyPSIiKXtyZXR1cm4gbmV3IFVSTFNlYXJjaFBhcmFtcyh0eXBlb2Ygcj09InN0cmluZyJ8fEFycmF5LmlzQXJyYXkocil8fHIgaW5zdGFuY2VvZiBVUkxTZWFyY2hQYXJhbXM/cjpPYmplY3Qua2V5cyhyKS5yZWR1Y2UoKHMsbCk9PntsZXQgdT1yW2xdO3JldHVybiBzLmNvbmNhdChBcnJheS5pc0FycmF5KHUpP3UubWFwKGM9PltsLGNdKTpbW2wsdV1dKX0sW10pKX1mdW5jdGlvbiBqdihyLHMpe2xldCBsPW51KHIpO3JldHVybiBzJiZzLmZvckVhY2goKHUsYyk9PntsLmhhcyhjKXx8cy5nZXRBbGwoYykuZm9yRWFjaChoPT57bC5hcHBlbmQoYyxoKX0pfSksbH12YXIgX2w9bnVsbDtmdW5jdGlvbiBOdigpe2lmKF9sPT09bnVsbCl0cnl7bmV3IEZvcm1EYXRhKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImZvcm0iKSwwKSxfbD0hMX1jYXRjaHtfbD0hMH1yZXR1cm4gX2x9dmFyIFJ2PW5ldyBTZXQoWyJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiLCJtdWx0aXBhcnQvZm9ybS1kYXRhIiwidGV4dC9wbGFpbiJdKTtmdW5jdGlvbiBHYShyKXtyZXR1cm4gciE9bnVsbCYmIVJ2LmhhcyhyKT8oRHQoITEsYCIke3J9IiBpcyBub3QgYSB2YWxpZCBcYGVuY1R5cGVcYCBmb3IgXGA8Rm9ybT5cYC9cYDxmZXRjaGVyLkZvcm0+XGAgYW5kIHdpbGwgZGVmYXVsdCB0byAiJHtGbH0iYCksbnVsbCk6cn1mdW5jdGlvbiBQdihyLHMpe2xldCBsLHUsYyxoLHA7aWYoU3Yocikpe2xldCBtPXIuZ2V0QXR0cmlidXRlKCJhY3Rpb24iKTt1PW0/eW4obSxzKTpudWxsLGw9ci5nZXRBdHRyaWJ1dGUoIm1ldGhvZCIpfHxMbCxjPUdhKHIuZ2V0QXR0cmlidXRlKCJlbmN0eXBlIikpfHxGbCxoPW5ldyBGb3JtRGF0YShyKX1lbHNlIGlmKHd2KHIpfHxrdihyKSYmKHIudHlwZT09PSJzdWJtaXQifHxyLnR5cGU9PT0iaW1hZ2UiKSl7bGV0IG09ci5mb3JtO2lmKG09PW51bGwpdGhyb3cgbmV3IEVycm9yKCdDYW5ub3Qgc3VibWl0IGEgPGJ1dHRvbj4gb3IgPGlucHV0IHR5cGU9InN1Ym1pdCI+IHdpdGhvdXQgYSA8Zm9ybT4nKTtsZXQgdj1yLmdldEF0dHJpYnV0ZSgiZm9ybWFjdGlvbiIpfHxtLmdldEF0dHJpYnV0ZSgiYWN0aW9uIik7aWYodT12P3luKHYscyk6bnVsbCxsPXIuZ2V0QXR0cmlidXRlKCJmb3JtbWV0aG9kIil8fG0uZ2V0QXR0cmlidXRlKCJtZXRob2QiKXx8TGwsYz1HYShyLmdldEF0dHJpYnV0ZSgiZm9ybWVuY3R5cGUiKSl8fEdhKG0uZ2V0QXR0cmlidXRlKCJlbmN0eXBlIikpfHxGbCxoPW5ldyBGb3JtRGF0YShtLHIpLCFOdigpKXtsZXR7bmFtZTpTLHR5cGU6Qyx2YWx1ZTp4fT1yO2lmKEM9PT0iaW1hZ2UiKXtsZXQgXz1TP2Ake1N9LmA6IiI7aC5hcHBlbmQoYCR7X314YCwiMCIpLGguYXBwZW5kKGAke199eWAsIjAiKX1lbHNlIFMmJmguYXBwZW5kKFMseCl9fWVsc2V7aWYoQmwocikpdGhyb3cgbmV3IEVycm9yKCdDYW5ub3Qgc3VibWl0IGVsZW1lbnQgdGhhdCBpcyBub3QgPGZvcm0+LCA8YnV0dG9uPiwgb3IgPGlucHV0IHR5cGU9InN1Ym1pdHxpbWFnZSI+Jyk7bD1MbCx1PW51bGwsYz1GbCxwPXJ9cmV0dXJuIGgmJmM9PT0idGV4dC9wbGFpbiImJihwPWgsaD12b2lkIDApLHthY3Rpb246dSxtZXRob2Q6bC50b0xvd2VyQ2FzZSgpLGVuY1R5cGU6Yyxmb3JtRGF0YTpoLGJvZHk6cH19T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoT2JqZWN0LnByb3RvdHlwZSkuc29ydCgpLmpvaW4oIlwwIik7ZnVuY3Rpb24gTnUocixzKXtpZihyPT09ITF8fHI9PT1udWxsfHx0eXBlb2Ygcj4idSIpdGhyb3cgbmV3IEVycm9yKHMpfWZ1bmN0aW9uIFVoKHIscyxsLHUpe2xldCBjPXR5cGVvZiByPT0ic3RyaW5nIj9uZXcgVVJMKHIsdHlwZW9mIHdpbmRvdz4idSI/InNlcnZlcjovL3NpbmdsZWZldGNoLyI6d2luZG93LmxvY2F0aW9uLm9yaWdpbik6cjtyZXR1cm4gbD9jLnBhdGhuYW1lLmVuZHNXaXRoKCIvIik/Yy5wYXRobmFtZT1gJHtjLnBhdGhuYW1lfV8uJHt1fWA6Yy5wYXRobmFtZT1gJHtjLnBhdGhuYW1lfS4ke3V9YDpjLnBhdGhuYW1lPT09Ii8iP2MucGF0aG5hbWU9YF9yb290LiR7dX1gOnMmJnluKGMucGF0aG5hbWUscyk9PT0iLyI/Yy5wYXRobmFtZT1gJHtvaShzKX0vX3Jvb3QuJHt1fWA6Yy5wYXRobmFtZT1gJHtvaShjLnBhdGhuYW1lKX0uJHt1fWAsY31hc3luYyBmdW5jdGlvbiBfdihyLHMpe2lmKHIuaWQgaW4gcylyZXR1cm4gc1tyLmlkXTt0cnl7bGV0IGw9YXdhaXQgaW1wb3J0KHIubW9kdWxlKTtyZXR1cm4gc1tyLmlkXT1sLGx9Y2F0Y2gobCl7cmV0dXJuIGNvbnNvbGUuZXJyb3IoYEVycm9yIGxvYWRpbmcgcm91dGUgbW9kdWxlIFxgJHtyLm1vZHVsZX1cYCwgcmVsb2FkaW5nIHBhZ2UuLi5gKSxjb25zb2xlLmVycm9yKGwpLHdpbmRvdy5fX3JlYWN0Um91dGVyQ29udGV4dCYmd2luZG93Ll9fcmVhY3RSb3V0ZXJDb250ZXh0LmlzU3BhTW9kZSx3aW5kb3cubG9jYXRpb24ucmVsb2FkKCksbmV3IFByb21pc2UoKCk9Pnt9KX19ZnVuY3Rpb24gVHYocil7cmV0dXJuIHI9PW51bGw/ITE6ci5ocmVmPT1udWxsP3IucmVsPT09InByZWxvYWQiJiZ0eXBlb2Ygci5pbWFnZVNyY1NldD09InN0cmluZyImJnR5cGVvZiByLmltYWdlU2l6ZXM9PSJzdHJpbmciOnR5cGVvZiByLnJlbD09InN0cmluZyImJnR5cGVvZiByLmhyZWY9PSJzdHJpbmcifWFzeW5jIGZ1bmN0aW9uIEx2KHIscyxsKXtsZXQgdT1hd2FpdCBQcm9taXNlLmFsbChyLm1hcChhc3luYyBjPT57bGV0IGg9cy5yb3V0ZXNbYy5yb3V0ZS5pZF07aWYoaCl7bGV0IHA9YXdhaXQgX3YoaCxsKTtyZXR1cm4gcC5saW5rcz9wLmxpbmtzKCk6W119cmV0dXJuW119KSk7cmV0dXJuIEl2KHUuZmxhdCgxKS5maWx0ZXIoVHYpLmZpbHRlcihjPT5jLnJlbD09PSJzdHlsZXNoZWV0Inx8Yy5yZWw9PT0icHJlbG9hZCIpLm1hcChjPT5jLnJlbD09PSJzdHlsZXNoZWV0Ij97Li4uYyxyZWw6InByZWZldGNoIixhczoic3R5bGUifTp7Li4uYyxyZWw6InByZWZldGNoIn0pKX1mdW5jdGlvbiBWZihyLHMsbCx1LGMsaCl7bGV0IHA9KHYsUyk9PmxbU10/di5yb3V0ZS5pZCE9PWxbU10ucm91dGUuaWQ6ITAsbT0odixTKT0+e3ZhciBDO3JldHVybiBsW1NdLnBhdGhuYW1lIT09di5wYXRobmFtZXx8KChDPWxbU10ucm91dGUucGF0aCk9PW51bGw/dm9pZCAwOkMuZW5kc1dpdGgoIioiKSkmJmxbU10ucGFyYW1zWyIqIl0hPT12LnBhcmFtc1siKiJdfTtyZXR1cm4gaD09PSJhc3NldHMiP3MuZmlsdGVyKCh2LFMpPT5wKHYsUyl8fG0odixTKSk6aD09PSJkYXRhIj9zLmZpbHRlcigodixTKT0+e3ZhciB4O2xldCBDPXUucm91dGVzW3Yucm91dGUuaWRdO2lmKCFDfHwhQy5oYXNMb2FkZXIpcmV0dXJuITE7aWYocCh2LFMpfHxtKHYsUykpcmV0dXJuITA7aWYodi5yb3V0ZS5zaG91bGRSZXZhbGlkYXRlKXtsZXQgXz12LnJvdXRlLnNob3VsZFJldmFsaWRhdGUoe2N1cnJlbnRVcmw6bmV3IFVSTChjLnBhdGhuYW1lK2Muc2VhcmNoK2MuaGFzaCx3aW5kb3cub3JpZ2luKSxjdXJyZW50UGFyYW1zOigoeD1sWzBdKT09bnVsbD92b2lkIDA6eC5wYXJhbXMpfHx7fSxuZXh0VXJsOm5ldyBVUkwocix3aW5kb3cub3JpZ2luKSxuZXh0UGFyYW1zOnYucGFyYW1zLGRlZmF1bHRTaG91bGRSZXZhbGlkYXRlOiEwfSk7aWYodHlwZW9mIF89PSJib29sZWFuIilyZXR1cm4gX31yZXR1cm4hMH0pOltdfWZ1bmN0aW9uIEZ2KHIscyx7aW5jbHVkZUh5ZHJhdGVGYWxsYmFjazpsfT17fSl7cmV0dXJuIE92KHIubWFwKHU9PntsZXQgYz1zLnJvdXRlc1t1LnJvdXRlLmlkXTtpZighYylyZXR1cm5bXTtsZXQgaD1bYy5tb2R1bGVdO3JldHVybiBjLmNsaWVudEFjdGlvbk1vZHVsZSYmKGg9aC5jb25jYXQoYy5jbGllbnRBY3Rpb25Nb2R1bGUpKSxjLmNsaWVudExvYWRlck1vZHVsZSYmKGg9aC5jb25jYXQoYy5jbGllbnRMb2FkZXJNb2R1bGUpKSxsJiZjLmh5ZHJhdGVGYWxsYmFja01vZHVsZSYmKGg9aC5jb25jYXQoYy5oeWRyYXRlRmFsbGJhY2tNb2R1bGUpKSxjLmltcG9ydHMmJihoPWguY29uY2F0KGMuaW1wb3J0cykpLGh9KS5mbGF0KDEpKX1mdW5jdGlvbiBPdihyKXtyZXR1cm5bLi4ubmV3IFNldChyKV19ZnVuY3Rpb24gRHYocil7bGV0IHM9e30sbD1PYmplY3Qua2V5cyhyKS5zb3J0KCk7Zm9yKGxldCB1IG9mIGwpc1t1XT1yW3VdO3JldHVybiBzfWZ1bmN0aW9uIEl2KHIscyl7bGV0IGw9bmV3IFNldDtyZXR1cm4gbmV3IFNldChzKSxyLnJlZHVjZSgodSxjKT0+e2xldCBoPUpTT04uc3RyaW5naWZ5KER2KGMpKTtyZXR1cm4gbC5oYXMoaCl8fChsLmFkZChoKSx1LnB1c2goe2tleTpoLGxpbms6Y30pKSx1fSxbXSl9ZnVuY3Rpb24gUnUoKXtsZXQgcj1FLnVzZUNvbnRleHQoY2kpO3JldHVybiBOdShyLCJZb3UgbXVzdCByZW5kZXIgdGhpcyBlbGVtZW50IGluc2lkZSBhIDxEYXRhUm91dGVyQ29udGV4dC5Qcm92aWRlcj4gZWxlbWVudCIpLHJ9ZnVuY3Rpb24gTXYoKXtsZXQgcj1FLnVzZUNvbnRleHQoVWwpO3JldHVybiBOdShyLCJZb3UgbXVzdCByZW5kZXIgdGhpcyBlbGVtZW50IGluc2lkZSBhIDxEYXRhUm91dGVyU3RhdGVDb250ZXh0LlByb3ZpZGVyPiBlbGVtZW50Iikscn12YXIgUHU9RS5jcmVhdGVDb250ZXh0KHZvaWQgMCk7UHUuZGlzcGxheU5hbWU9IkZyYW1ld29ya0NvbnRleHQiO2Z1bmN0aW9uIEhsKCl7bGV0IHI9RS51c2VDb250ZXh0KFB1KTtyZXR1cm4gTnUociwiWW91IG11c3QgcmVuZGVyIHRoaXMgZWxlbWVudCBpbnNpZGUgYSA8SHlkcmF0ZWRSb3V0ZXI+IGVsZW1lbnQiKSxyfWZ1bmN0aW9uIHp2KHIscyl7bGV0IGw9RS51c2VDb250ZXh0KFB1KSxbdSxjXT1FLnVzZVN0YXRlKCExKSxbaCxwXT1FLnVzZVN0YXRlKCExKSx7b25Gb2N1czptLG9uQmx1cjp2LG9uTW91c2VFbnRlcjpTLG9uTW91c2VMZWF2ZTpDLG9uVG91Y2hTdGFydDp4fT1zLF89RS51c2VSZWYobnVsbCk7RS51c2VFZmZlY3QoKCk9PntpZihyPT09InJlbmRlciImJnAoITApLHI9PT0idmlld3BvcnQiKXtsZXQgRj0kPT57JC5mb3JFYWNoKFE9PntwKFEuaXNJbnRlcnNlY3RpbmcpfSl9LEw9bmV3IEludGVyc2VjdGlvbk9ic2VydmVyKEYse3RocmVzaG9sZDouNX0pO3JldHVybiBfLmN1cnJlbnQmJkwub2JzZXJ2ZShfLmN1cnJlbnQpLCgpPT57TC5kaXNjb25uZWN0KCl9fX0sW3JdKSxFLnVzZUVmZmVjdCgoKT0+e2lmKHUpe2xldCBGPXNldFRpbWVvdXQoKCk9PntwKCEwKX0sMTAwKTtyZXR1cm4oKT0+e2NsZWFyVGltZW91dChGKX19fSxbdV0pO2xldCBJPSgpPT57YyghMCl9LE89KCk9PntjKCExKSxwKCExKX07cmV0dXJuIGw/ciE9PSJpbnRlbnQiP1toLF8se31dOltoLF8se29uRm9jdXM6WmkobSxJKSxvbkJsdXI6WmkodixPKSxvbk1vdXNlRW50ZXI6WmkoUyxJKSxvbk1vdXNlTGVhdmU6WmkoQyxPKSxvblRvdWNoU3RhcnQ6WmkoeCxJKX1dOlshMSxfLHt9XX1mdW5jdGlvbiBaaShyLHMpe3JldHVybiBsPT57ciYmcihsKSxsLmRlZmF1bHRQcmV2ZW50ZWR8fHMobCl9fWZ1bmN0aW9uIEF2KHtwYWdlOnIsLi4uc30pe2xldCBsPUdnKCkse25vbmNlOnV9PUhsKCkse3JvdXRlcjpjfT1SdSgpLGg9RS51c2VNZW1vKCgpPT5raChjLnJvdXRlcyxyLGMuYmFzZW5hbWUpLFtjLnJvdXRlcyxyLGMuYmFzZW5hbWVdKTtyZXR1cm4gaD8ocy5ub25jZT09bnVsbCYmdSYmKHM9ey4uLnMsbm9uY2U6dX0pLGw/RS5jcmVhdGVFbGVtZW50KFV2LHtwYWdlOnIsbWF0Y2hlczpoLC4uLnN9KTpFLmNyZWF0ZUVsZW1lbnQoQnYse3BhZ2U6cixtYXRjaGVzOmgsLi4uc30pKTpudWxsfWZ1bmN0aW9uICR2KHIpe2xldHttYW5pZmVzdDpzLHJvdXRlTW9kdWxlczpsfT1IbCgpLFt1LGNdPUUudXNlU3RhdGUoW10pO3JldHVybiBFLnVzZUVmZmVjdCgoKT0+e2xldCBoPSExO3JldHVybiBMdihyLHMsbCkudGhlbihwPT57aHx8YyhwKX0pLCgpPT57aD0hMH19LFtyLHMsbF0pLHV9ZnVuY3Rpb24gVXYoe3BhZ2U6cixtYXRjaGVzOnMsLi4ubH0pe2xldCB1PVZ0KCkse2Z1dHVyZTpjfT1IbCgpLHtiYXNlbmFtZTpofT1SdSgpLHA9RS51c2VNZW1vKCgpPT57aWYocj09PXUucGF0aG5hbWUrdS5zZWFyY2grdS5oYXNoKXJldHVybltdO2xldCBtPVVoKHIsaCxjLnY4X3RyYWlsaW5nU2xhc2hBd2FyZURhdGFSZXF1ZXN0cywicnNjIiksdj0hMSxTPVtdO2ZvcihsZXQgQyBvZiBzKXR5cGVvZiBDLnJvdXRlLnNob3VsZFJldmFsaWRhdGU9PSJmdW5jdGlvbiI/dj0hMDpTLnB1c2goQy5yb3V0ZS5pZCk7cmV0dXJuIHYmJlMubGVuZ3RoPjAmJm0uc2VhcmNoUGFyYW1zLnNldCgiX3JvdXRlcyIsUy5qb2luKCIsIikpLFttLnBhdGhuYW1lK20uc2VhcmNoXX0sW2gsYy52OF90cmFpbGluZ1NsYXNoQXdhcmVEYXRhUmVxdWVzdHMscix1LHNdKTtyZXR1cm4gRS5jcmVhdGVFbGVtZW50KEUuRnJhZ21lbnQsbnVsbCxwLm1hcChtPT5FLmNyZWF0ZUVsZW1lbnQoImxpbmsiLHtrZXk6bSxyZWw6InByZWZldGNoIixhczoiZmV0Y2giLGhyZWY6bSwuLi5sfSkpKX1mdW5jdGlvbiBCdih7cGFnZTpyLG1hdGNoZXM6cywuLi5sfSl7bGV0IHU9VnQoKSx7ZnV0dXJlOmMsbWFuaWZlc3Q6aCxyb3V0ZU1vZHVsZXM6cH09SGwoKSx7YmFzZW5hbWU6bX09UnUoKSx7bG9hZGVyRGF0YTp2LG1hdGNoZXM6U309TXYoKSxDPUUudXNlTWVtbygoKT0+VmYocixzLFMsaCx1LCJkYXRhIiksW3IscyxTLGgsdV0pLHg9RS51c2VNZW1vKCgpPT5WZihyLHMsUyxoLHUsImFzc2V0cyIpLFtyLHMsUyxoLHVdKSxfPUUudXNlTWVtbygoKT0+e2lmKHI9PT11LnBhdGhuYW1lK3Uuc2VhcmNoK3UuaGFzaClyZXR1cm5bXTtsZXQgRj1uZXcgU2V0LEw9ITE7aWYocy5mb3JFYWNoKFE9Pnt2YXIgSztsZXQgSD1oLnJvdXRlc1tRLnJvdXRlLmlkXTshSHx8IUguaGFzTG9hZGVyfHwoIUMuc29tZShCPT5CLnJvdXRlLmlkPT09US5yb3V0ZS5pZCkmJlEucm91dGUuaWQgaW4gdiYmKChLPXBbUS5yb3V0ZS5pZF0pIT1udWxsJiZLLnNob3VsZFJldmFsaWRhdGUpfHxILmhhc0NsaWVudExvYWRlcj9MPSEwOkYuYWRkKFEucm91dGUuaWQpKX0pLEYuc2l6ZT09PTApcmV0dXJuW107bGV0ICQ9VWgocixtLGMudjhfdHJhaWxpbmdTbGFzaEF3YXJlRGF0YVJlcXVlc3RzLCJkYXRhIik7cmV0dXJuIEwmJkYuc2l6ZT4wJiYkLnNlYXJjaFBhcmFtcy5zZXQoIl9yb3V0ZXMiLHMuZmlsdGVyKFE9PkYuaGFzKFEucm91dGUuaWQpKS5tYXAoUT0+US5yb3V0ZS5pZCkuam9pbigiLCIpKSxbJC5wYXRobmFtZSskLnNlYXJjaF19LFttLGMudjhfdHJhaWxpbmdTbGFzaEF3YXJlRGF0YVJlcXVlc3RzLHYsdSxoLEMscyxyLHBdKSxJPUUudXNlTWVtbygoKT0+RnYoeCxoKSxbeCxoXSksTz0kdih4KTtyZXR1cm4gRS5jcmVhdGVFbGVtZW50KEUuRnJhZ21lbnQsbnVsbCxfLm1hcChGPT5FLmNyZWF0ZUVsZW1lbnQoImxpbmsiLHtrZXk6RixyZWw6InByZWZldGNoIixhczoiZmV0Y2giLGhyZWY6RiwuLi5sfSkpLEkubWFwKEY9PkUuY3JlYXRlRWxlbWVudCgibGluayIse2tleTpGLHJlbDoibW9kdWxlcHJlbG9hZCIsaHJlZjpGLC4uLmx9KSksTy5tYXAoKHtrZXk6RixsaW5rOkx9KT0+RS5jcmVhdGVFbGVtZW50KCJsaW5rIix7a2V5OkYsbm9uY2U6bC5ub25jZSwuLi5MLGNyb3NzT3JpZ2luOkwuY3Jvc3NPcmlnaW4/P2wuY3Jvc3NPcmlnaW59KSkpfWZ1bmN0aW9uIEh2KC4uLnIpe3JldHVybiBzPT57ci5mb3JFYWNoKGw9Pnt0eXBlb2YgbD09ImZ1bmN0aW9uIj9sKHMpOmwhPW51bGwmJihsLmN1cnJlbnQ9cyl9KX19dmFyIFF2PXR5cGVvZiB3aW5kb3c8InUiJiZ0eXBlb2Ygd2luZG93LmRvY3VtZW50PCJ1IiYmdHlwZW9mIHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50PCJ1Ijt0cnl7UXYmJih3aW5kb3cuX19yZWFjdFJvdXRlclZlcnNpb249IjcuMTguNCIpfWNhdGNoe31mdW5jdGlvbiBxdih7YmFzZW5hbWU6cixjaGlsZHJlbjpzLHVzZVRyYW5zaXRpb25zOmwsd2luZG93OnV9KXtsZXQgYz1FLnVzZVJlZigpO2MuY3VycmVudD09bnVsbCYmKGMuY3VycmVudD13Zyh7d2luZG93OnUsdjVDb21wYXQ6ITB9KSk7bGV0IGg9Yy5jdXJyZW50LFtwLG1dPUUudXNlU3RhdGUoe2FjdGlvbjpoLmFjdGlvbixsb2NhdGlvbjpoLmxvY2F0aW9ufSksdj1FLnVzZUNhbGxiYWNrKFM9PntsPT09ITE/bShTKTpFLnN0YXJ0VHJhbnNpdGlvbigoKT0+bShTKSl9LFtsXSk7cmV0dXJuIEUudXNlTGF5b3V0RWZmZWN0KCgpPT5oLmxpc3Rlbih2KSxbaCx2XSksRS5jcmVhdGVFbGVtZW50KHl2LHtiYXNlbmFtZTpyLGNoaWxkcmVuOnMsbG9jYXRpb246cC5sb2NhdGlvbixuYXZpZ2F0aW9uVHlwZTpwLmFjdGlvbixuYXZpZ2F0b3I6aCx1c2VUcmFuc2l0aW9uczpsfSl9dmFyIHhyPUUuZm9yd2FyZFJlZihmdW5jdGlvbih7b25DbGljazpzLGRpc2NvdmVyOmw9InJlbmRlciIscHJlZmV0Y2g6dT0ibm9uZSIscmVsYXRpdmU6YyxyZWxvYWREb2N1bWVudDpoLHJlcGxhY2U6cCxtYXNrOm0sc3RhdGU6dix0YXJnZXQ6Uyx0bzpDLHByZXZlbnRTY3JvbGxSZXNldDp4LHZpZXdUcmFuc2l0aW9uOl8sZGVmYXVsdFNob3VsZFJldmFsaWRhdGU6SSwuLi5PfSxGKXtsZXR7YmFzZW5hbWU6TCxuYXZpZ2F0b3I6JCx1c2VUcmFuc2l0aW9uczpRfT1FLnVzZUNvbnRleHQoRXQpLEg9dHlwZW9mIEM9PSJzdHJpbmciJiZ4dS50ZXN0KEMpLEs9X2goQyxMKTtDPUsudG87bGV0IEI9bnYoQyx7cmVsYXRpdmU6Y30pLHNlPVZ0KCksaWU9bnVsbDtpZihtKXtsZXQgYWU9JGwobSxbXSxzZS5tYXNrP3NlLm1hc2sucGF0aG5hbWU6Ii8iLCEwKTtMIT09Ii8iJiYoYWUucGF0aG5hbWU9YWUucGF0aG5hbWU9PT0iLyI/TDpidChbTCxhZS5wYXRobmFtZV0pKSxpZT0kLmNyZWF0ZUhyZWYoYWUpfWxldFtoZSx1ZSxnZV09enYodSxPKSxpdD1LdihDLHtyZXBsYWNlOnAsbWFzazptLHN0YXRlOnYsdGFyZ2V0OlMscHJldmVudFNjcm9sbFJlc2V0OngscmVsYXRpdmU6Yyx2aWV3VHJhbnNpdGlvbjpfLGRlZmF1bHRTaG91bGRSZXZhbGlkYXRlOkksdXNlVHJhbnNpdGlvbnM6UX0pO2Z1bmN0aW9uIHN0KGFlKXtzJiZzKGFlKSxhZS5kZWZhdWx0UHJldmVudGVkfHxpdChhZSl9bGV0IEhlPSEoSy5pc0V4dGVybmFsfHxoKSxvZT1FLmNyZWF0ZUVsZW1lbnQoImEiLHsuLi5PLC4uLmdlLGhyZWY6KEhlP2llOnZvaWQgMCl8fEsuYWJzb2x1dGVVUkx8fEIsb25DbGljazpIZT9zdDpzLHJlZjpIdihGLHVlKSx0YXJnZXQ6UywiZGF0YS1kaXNjb3ZlciI6IUgmJmw9PT0icmVuZGVyIj8idHJ1ZSI6dm9pZCAwfSk7cmV0dXJuIGhlJiYhSD9FLmNyZWF0ZUVsZW1lbnQoRS5GcmFnbWVudCxudWxsLG9lLEUuY3JlYXRlRWxlbWVudChBdix7cGFnZTpCfSkpOm9lfSk7eHIuZGlzcGxheU5hbWU9IkxpbmsiO3ZhciBidj1FLmZvcndhcmRSZWYoZnVuY3Rpb24oeyJhcmlhLWN1cnJlbnQiOnM9InBhZ2UiLGNhc2VTZW5zaXRpdmU6bD0hMSxjbGFzc05hbWU6dT0iIixlbmQ6Yz0hMSxzdHlsZTpoLHRvOnAsdmlld1RyYW5zaXRpb246bSxjaGlsZHJlbjp2LC4uLlN9LEMpe2xldCB4PWZzKHAse3JlbGF0aXZlOlMucmVsYXRpdmV9KSxfPVZ0KCksST1FLnVzZUNvbnRleHQoVWwpLHtuYXZpZ2F0b3I6TyxiYXNlbmFtZTpGfT1FLnVzZUNvbnRleHQoRXQpLEw9SSE9bnVsbCYmZXkoeCkmJm09PT0hMCwkPU8uZW5jb2RlTG9jYXRpb24/Ty5lbmNvZGVMb2NhdGlvbih4KS5wYXRobmFtZTp4LnBhdGhuYW1lLFE9Xy5wYXRobmFtZSxIPUkmJkkubmF2aWdhdGlvbiYmSS5uYXZpZ2F0aW9uLmxvY2F0aW9uP0kubmF2aWdhdGlvbi5sb2NhdGlvbi5wYXRobmFtZTpudWxsO2x8fChRPVEudG9Mb3dlckNhc2UoKSxIPUg/SC50b0xvd2VyQ2FzZSgpOm51bGwsJD0kLnRvTG93ZXJDYXNlKCkpLEgmJkYmJihIPXluKEgsRil8fEgpO2NvbnN0IEs9JCE9PSIvIiYmJC5lbmRzV2l0aCgiLyIpPyQubGVuZ3RoLTE6JC5sZW5ndGg7bGV0IEI9UT09PSR8fCFjJiZRLnN0YXJ0c1dpdGgoJCkmJlEuY2hhckF0KEspPT09Ii8iLHNlPUghPW51bGwmJihIPT09JHx8IWMmJkguc3RhcnRzV2l0aCgkKSYmSC5jaGFyQXQoJC5sZW5ndGgpPT09Ii8iKSxpZT17aXNBY3RpdmU6Qixpc1BlbmRpbmc6c2UsaXNUcmFuc2l0aW9uaW5nOkx9LGhlPUI/czp2b2lkIDAsdWU7dHlwZW9mIHU9PSJmdW5jdGlvbiI/dWU9dShpZSk6dWU9W3UsQj8iYWN0aXZlIjpudWxsLHNlPyJwZW5kaW5nIjpudWxsLEw/InRyYW5zaXRpb25pbmciOm51bGxdLmZpbHRlcihCb29sZWFuKS5qb2luKCIgIik7bGV0IGdlPXR5cGVvZiBoPT0iZnVuY3Rpb24iP2goaWUpOmg7cmV0dXJuIEUuY3JlYXRlRWxlbWVudCh4cix7Li4uUywiYXJpYS1jdXJyZW50IjpoZSxjbGFzc05hbWU6dWUscmVmOkMsc3R5bGU6Z2UsdG86cCx2aWV3VHJhbnNpdGlvbjptfSx0eXBlb2Ygdj09ImZ1bmN0aW9uIj92KGllKTp2KX0pO2J2LmRpc3BsYXlOYW1lPSJOYXZMaW5rIjt2YXIgV3Y9RS5mb3J3YXJkUmVmKCh7ZGlzY292ZXI6cj0icmVuZGVyIixmZXRjaGVyS2V5OnMsbmF2aWdhdGU6bCxyZWxvYWREb2N1bWVudDp1LHJlcGxhY2U6YyxzdGF0ZTpoLG1ldGhvZDpwPUxsLGFjdGlvbjptLG9uU3VibWl0OnYscmVsYXRpdmU6UyxwcmV2ZW50U2Nyb2xsUmVzZXQ6Qyx2aWV3VHJhbnNpdGlvbjp4LGRlZmF1bHRTaG91bGRSZXZhbGlkYXRlOl8sLi4uSX0sTyk9PntsZXR7dXNlVHJhbnNpdGlvbnM6Rn09RS51c2VDb250ZXh0KEV0KSxMPVh2KCksJD1adihtLHtyZWxhdGl2ZTpTfSksUT1wLnRvTG93ZXJDYXNlKCk9PT0iZ2V0Ij8iZ2V0IjoicG9zdCIsSD10eXBlb2YgbT09InN0cmluZyImJnh1LnRlc3QobSksSz1CPT57aWYodiYmdihCKSxCLmRlZmF1bHRQcmV2ZW50ZWQpcmV0dXJuO0IucHJldmVudERlZmF1bHQoKTtsZXQgc2U9Qi5uYXRpdmVFdmVudC5zdWJtaXR0ZXIsaWU9KHNlPT1udWxsP3ZvaWQgMDpzZS5nZXRBdHRyaWJ1dGUoImZvcm1tZXRob2QiKSl8fHAsaGU9KCk9Pkwoc2V8fEIuY3VycmVudFRhcmdldCx7ZmV0Y2hlcktleTpzLG1ldGhvZDppZSxuYXZpZ2F0ZTpsLHJlcGxhY2U6YyxzdGF0ZTpoLHJlbGF0aXZlOlMscHJldmVudFNjcm9sbFJlc2V0OkMsdmlld1RyYW5zaXRpb246eCxkZWZhdWx0U2hvdWxkUmV2YWxpZGF0ZTpffSk7RiYmbCE9PSExP0Uuc3RhcnRUcmFuc2l0aW9uKCgpPT5oZSgpKTpoZSgpfTtyZXR1cm4gRS5jcmVhdGVFbGVtZW50KCJmb3JtIix7cmVmOk8sbWV0aG9kOlEsYWN0aW9uOiQsb25TdWJtaXQ6dT92OkssLi4uSSwiZGF0YS1kaXNjb3ZlciI6IUgmJnI9PT0icmVuZGVyIj8idHJ1ZSI6dm9pZCAwfSl9KTtXdi5kaXNwbGF5TmFtZT0iRm9ybSI7ZnVuY3Rpb24gVnYocil7cmV0dXJuYCR7cn0gbXVzdCBiZSB1c2VkIHdpdGhpbiBhIGRhdGEgcm91dGVyLiAgU2VlIGh0dHBzOi8vcmVhY3Ryb3V0ZXIuY29tL2VuL21haW4vcm91dGVycy9waWNraW5nLWEtcm91dGVyLmB9ZnVuY3Rpb24gQmgocil7bGV0IHM9RS51c2VDb250ZXh0KGNpKTtyZXR1cm4gRmUocyxWdihyKSksc31mdW5jdGlvbiBLdihyLHt0YXJnZXQ6cyxyZXBsYWNlOmwsbWFzazp1LHN0YXRlOmMscHJldmVudFNjcm9sbFJlc2V0OmgscmVsYXRpdmU6cCx2aWV3VHJhbnNpdGlvbjptLGRlZmF1bHRTaG91bGRSZXZhbGlkYXRlOnYsdXNlVHJhbnNpdGlvbnM6U309e30pe2xldCBDPUtuKCkseD1WdCgpLF89ZnMocix7cmVsYXRpdmU6cH0pO3JldHVybiBFLnVzZUNhbGxiYWNrKEk9PntpZihFdihJLHMpKXtJLnByZXZlbnREZWZhdWx0KCk7bGV0IE89bCE9PXZvaWQgMD9sOnlyKHgpPT09eXIoXyksRj0oKT0+QyhyLHtyZXBsYWNlOk8sbWFzazp1LHN0YXRlOmMscHJldmVudFNjcm9sbFJlc2V0OmgscmVsYXRpdmU6cCx2aWV3VHJhbnNpdGlvbjptLGRlZmF1bHRTaG91bGRSZXZhbGlkYXRlOnZ9KTtTP0Uuc3RhcnRUcmFuc2l0aW9uKCgpPT5GKCkpOkYoKX19LFt4LEMsXyxsLHUsYyxzLHIsaCxwLG0sdixTXSl9ZnVuY3Rpb24gR3Yocil7RHQodHlwZW9mIFVSTFNlYXJjaFBhcmFtczwidSIsIllvdSBjYW5ub3QgdXNlIHRoZSBgdXNlU2VhcmNoUGFyYW1zYCBob29rIGluIGEgYnJvd3NlciB0aGF0IGRvZXMgbm90IHN1cHBvcnQgdGhlIFVSTFNlYXJjaFBhcmFtcyBBUEkuIElmIHlvdSBuZWVkIHRvIHN1cHBvcnQgSW50ZXJuZXQgRXhwbG9yZXIgMTEsIHdlIHJlY29tbWVuZCB5b3UgbG9hZCBhIHBvbHlmaWxsIHN1Y2ggYXMgaHR0cHM6Ly9naXRodWIuY29tL3VuZ2FwL3VybC1zZWFyY2gtcGFyYW1zLiIpO2xldCBzPUUudXNlUmVmKG51KHIpKSxsPUUudXNlUmVmKCExKSx1PVZ0KCksYz1FLnVzZU1lbW8oKCk9Pmp2KHUuc2VhcmNoLGwuY3VycmVudD9udWxsOnMuY3VycmVudCksW3Uuc2VhcmNoXSksaD1LbigpLHA9RS51c2VDYWxsYmFjaygobSx2KT0+e2NvbnN0IFM9bnUodHlwZW9mIG09PSJmdW5jdGlvbiI/bShuZXcgVVJMU2VhcmNoUGFyYW1zKGMpKTptKTtsLmN1cnJlbnQ9ITAsaCgiPyIrUyx2KX0sW2gsY10pO3JldHVybltjLHBdfXZhciBKdj0wLFl2PSgpPT5gX18ke1N0cmluZygrK0p2KX1fX2A7ZnVuY3Rpb24gWHYoKXtsZXR7cm91dGVyOnJ9PUJoKCJ1c2VTdWJtaXQiKSx7YmFzZW5hbWU6c309RS51c2VDb250ZXh0KEV0KSxsPXB2KCksdT1yLmZldGNoLGM9ci5uYXZpZ2F0ZTtyZXR1cm4gRS51c2VDYWxsYmFjayhhc3luYyhoLHA9e30pPT57bGV0e2FjdGlvbjptLG1ldGhvZDp2LGVuY1R5cGU6Uyxmb3JtRGF0YTpDLGJvZHk6eH09UHYoaCxzKTtpZihwLm5hdmlnYXRlPT09ITEpe2xldCBfPXAuZmV0Y2hlcktleXx8WXYoKTthd2FpdCB1KF8sbCxwLmFjdGlvbnx8bSx7ZGVmYXVsdFNob3VsZFJldmFsaWRhdGU6cC5kZWZhdWx0U2hvdWxkUmV2YWxpZGF0ZSxwcmV2ZW50U2Nyb2xsUmVzZXQ6cC5wcmV2ZW50U2Nyb2xsUmVzZXQsZm9ybURhdGE6Qyxib2R5OngsZm9ybU1ldGhvZDpwLm1ldGhvZHx8dixmb3JtRW5jVHlwZTpwLmVuY1R5cGV8fFMsZmx1c2hTeW5jOnAuZmx1c2hTeW5jfSl9ZWxzZSBhd2FpdCBjKHAuYWN0aW9ufHxtLHtkZWZhdWx0U2hvdWxkUmV2YWxpZGF0ZTpwLmRlZmF1bHRTaG91bGRSZXZhbGlkYXRlLHByZXZlbnRTY3JvbGxSZXNldDpwLnByZXZlbnRTY3JvbGxSZXNldCxmb3JtRGF0YTpDLGJvZHk6eCxmb3JtTWV0aG9kOnAubWV0aG9kfHx2LGZvcm1FbmNUeXBlOnAuZW5jVHlwZXx8UyxyZXBsYWNlOnAucmVwbGFjZSxzdGF0ZTpwLnN0YXRlLGZyb21Sb3V0ZUlkOmwsZmx1c2hTeW5jOnAuZmx1c2hTeW5jLHZpZXdUcmFuc2l0aW9uOnAudmlld1RyYW5zaXRpb259KX0sW3UsYyxzLGxdKX1mdW5jdGlvbiBadihyLHtyZWxhdGl2ZTpzfT17fSl7bGV0e2Jhc2VuYW1lOmx9PUUudXNlQ29udGV4dChFdCksdT1FLnVzZUNvbnRleHQoV3QpO0ZlKHUsInVzZUZvcm1BY3Rpb24gbXVzdCBiZSB1c2VkIGluc2lkZSBhIFJvdXRlQ29udGV4dCIpO2xldFtjXT11Lm1hdGNoZXMuc2xpY2UoLTEpLGg9ey4uLmZzKHJ8fCIuIix7cmVsYXRpdmU6c30pfSxwPVZ0KCk7aWYocj09bnVsbCl7aC5zZWFyY2g9cC5zZWFyY2g7bGV0IG09bmV3IFVSTFNlYXJjaFBhcmFtcyhoLnNlYXJjaCksdj1tLmdldEFsbCgiaW5kZXgiKTtpZih2LnNvbWUoQz0+Qz09PSIiKSl7bS5kZWxldGUoImluZGV4Iiksdi5maWx0ZXIoeD0+eCkuZm9yRWFjaCh4PT5tLmFwcGVuZCgiaW5kZXgiLHgpKTtsZXQgQz1tLnRvU3RyaW5nKCk7aC5zZWFyY2g9Qz9gPyR7Q31gOiIifX1yZXR1cm4oIXJ8fHI9PT0iLiIpJiZjLnJvdXRlLmluZGV4JiYoaC5zZWFyY2g9aC5zZWFyY2g/aC5zZWFyY2gucmVwbGFjZSgvXlw/LywiP2luZGV4JiIpOiI/aW5kZXgiKSxsIT09Ii8iJiYoaC5wYXRobmFtZT1oLnBhdGhuYW1lPT09Ii8iP2w6YnQoW2wsaC5wYXRobmFtZV0pKSx5cihoKX1mdW5jdGlvbiBleShyLHtyZWxhdGl2ZTpzfT17fSl7bGV0IGw9RS51c2VDb250ZXh0KEZoKTtGZShsIT1udWxsLCJgdXNlVmlld1RyYW5zaXRpb25TdGF0ZWAgbXVzdCBiZSB1c2VkIHdpdGhpbiBgcmVhY3Qtcm91dGVyLWRvbWAncyBgUm91dGVyUHJvdmlkZXJgLiAgRGlkIHlvdSBhY2NpZGVudGFsbHkgaW1wb3J0IGBSb3V0ZXJQcm92aWRlcmAgZnJvbSBgcmVhY3Qtcm91dGVyYD8iKTtsZXR7YmFzZW5hbWU6dX09QmgoInVzZVZpZXdUcmFuc2l0aW9uU3RhdGUiKSxjPWZzKHIse3JlbGF0aXZlOnN9KTtpZighbC5pc1RyYW5zaXRpb25pbmcpcmV0dXJuITE7bGV0IGg9eW4obC5jdXJyZW50TG9jYXRpb24ucGF0aG5hbWUsdSl8fGwuY3VycmVudExvY2F0aW9uLnBhdGhuYW1lLHA9eW4obC5uZXh0TG9jYXRpb24ucGF0aG5hbWUsdSl8fGwubmV4dExvY2F0aW9uLnBhdGhuYW1lO3JldHVybiBEbChjLnBhdGhuYW1lLHApIT1udWxsfHxEbChjLnBhdGhuYW1lLGgpIT1udWxsfWNvbnN0IEhoPUUuY3JlYXRlQ29udGV4dCh2b2lkIDApLFFsPXI9Pntjb25zdCBzPUUudXNlQ29udGV4dChIaCk7aWYoIXMpdGhyb3cgbmV3IEVycm9yKCJObyBRdWVyeUNsaWVudCBzZXQsIHVzZSBRdWVyeUNsaWVudFByb3ZpZGVyIHRvIHNldCBvbmUiKTtyZXR1cm4gc30sdHk9KHtjbGllbnQ6cixjaGlsZHJlbjpzfSk9PihFLnVzZUVmZmVjdCgoKT0+KHIubW91bnQoKSwoKT0+e3IudW5tb3VudCgpfSksW3JdKSxkLmpzeChIaC5Qcm92aWRlcix7dmFsdWU6cixjaGlsZHJlbjpzfSkpLG55PXtzZXRUaW1lb3V0OihyLHMpPT5zZXRUaW1lb3V0KHIscyksY2xlYXJUaW1lb3V0OnI9PmNsZWFyVGltZW91dChyKSxzZXRJbnRlcnZhbDoocixzKT0+c2V0SW50ZXJ2YWwocixzKSxjbGVhckludGVydmFsOnI9PmNsZWFySW50ZXJ2YWwocil9O3ZhciBVbix2dSx1aCxyeT0odWg9Y2xhc3N7Y29uc3RydWN0b3IoKXtaKHRoaXMsVW4sbnkpO1oodGhpcyx2dSwhMSl9c2V0VGltZW91dFByb3ZpZGVyKHIpe3EodGhpcyxVbixyKX1zZXRUaW1lb3V0KHIscyl7cmV0dXJuIHkodGhpcyxVbikuc2V0VGltZW91dChyLHMpfWNsZWFyVGltZW91dChyKXt5KHRoaXMsVW4pLmNsZWFyVGltZW91dChyKX1zZXRJbnRlcnZhbChyLHMpe3JldHVybiB5KHRoaXMsVW4pLnNldEludGVydmFsKHIscyl9Y2xlYXJJbnRlcnZhbChyKXt5KHRoaXMsVW4pLmNsZWFySW50ZXJ2YWwocil9fSxVbj1uZXcgV2Vha01hcCx2dT1uZXcgV2Vha01hcCx1aCk7Y29uc3QgYXI9bmV3IHJ5O2Z1bmN0aW9uIGl5KHIpe3NldFRpbWVvdXQociwwKX1jb25zdCBzeT10eXBlb2Ygd2luZG93PiJ1Inx8IkRlbm8iaW4gZ2xvYmFsVGhpcztmdW5jdGlvbiBjdCgpe31mdW5jdGlvbiBseShyLHMpe3JldHVybiB0eXBlb2Ygcj09ImZ1bmN0aW9uIj9yKHMpOnJ9ZnVuY3Rpb24gUWgocil7cmV0dXJuIHR5cGVvZiByPT0ibnVtYmVyIiYmcj49MCYmciE9PTEvMH1mdW5jdGlvbiBxaChyLHMpe3JldHVybiBNYXRoLm1heChyKyhzfHwwKS1EYXRlLm5vdygpLDApfWZ1bmN0aW9uIExlKHIscyl7cmV0dXJuIHR5cGVvZiByPT0iZnVuY3Rpb24iP3Iocyk6cn1mdW5jdGlvbiBLZihyLHMpe2NvbnN0e3R5cGU6bD0iYWxsIixleGFjdDp1LGZldGNoU3RhdHVzOmMscHJlZGljYXRlOmgscXVlcnlLZXk6cCxzdGFsZTptfT1yO2lmKHApe2lmKHUpe2lmKHMucXVlcnlIYXNoIT09X3UocCxzLm9wdGlvbnMpKXJldHVybiExfWVsc2UgaWYoIWFpKHMucXVlcnlLZXkscCkpcmV0dXJuITF9aWYobCE9PSJhbGwiKXtjb25zdCB2PXMuaXNBY3RpdmUoKTtpZihsPT09ImFjdGl2ZSImJiF2fHxsPT09ImluYWN0aXZlIiYmdilyZXR1cm4hMX1yZXR1cm4hKHR5cGVvZiBtPT0iYm9vbGVhbiImJnMuaXNTdGFsZSgpIT09bXx8YyYmYyE9PXMuc3RhdGUuZmV0Y2hTdGF0dXN8fGgmJiFoKHMpKX1mdW5jdGlvbiBHZihyLHMpe2NvbnN0e2V4YWN0Omwsc3RhdHVzOnUscHJlZGljYXRlOmMsbXV0YXRpb25LZXk6aH09cjtpZihoKXtpZighcy5vcHRpb25zLm11dGF0aW9uS2V5KXJldHVybiExO2lmKGwpe2lmKHdyKHMub3B0aW9ucy5tdXRhdGlvbktleSkhPT13cihoKSlyZXR1cm4hMX1lbHNlIGlmKCFhaShzLm9wdGlvbnMubXV0YXRpb25LZXksaCkpcmV0dXJuITF9cmV0dXJuISh1JiZzLnN0YXRlLnN0YXR1cyE9PXV8fGMmJiFjKHMpKX1mdW5jdGlvbiBfdShyLHMpe3JldHVybigocz09bnVsbD92b2lkIDA6cy5xdWVyeUtleUhhc2hGbil8fHdyKShyKX1mdW5jdGlvbiB3cihyKXtyZXR1cm4gSlNPTi5zdHJpbmdpZnkociwocyxsKT0+cnUobCk/T2JqZWN0LmtleXMobCkuc29ydCgpLnJlZHVjZSgodSxjKT0+KHVbY109bFtjXSx1KSx7fSk6bCl9ZnVuY3Rpb24gYWkocixzKXtpZihyPT09cylyZXR1cm4hMDtpZih0eXBlb2YgciE9dHlwZW9mIHMpcmV0dXJuITE7aWYociYmcyYmdHlwZW9mIHI9PSJvYmplY3QiJiZ0eXBlb2Ygcz09Im9iamVjdCIpe2lmKEFycmF5LmlzQXJyYXkocikmJkFycmF5LmlzQXJyYXkocykpe2lmKHMubGVuZ3RoPnIubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgdT0wO3U8cy5sZW5ndGg7dSsrKWlmKCFhaShyW3VdLHNbdV0pKXJldHVybiExO3JldHVybiEwfWNvbnN0IGw9T2JqZWN0LmtleXMocyk7Zm9yKGNvbnN0IHUgb2YgbClpZighYWkoclt1XSxzW3VdKSlyZXR1cm4hMTtyZXR1cm4hMH1yZXR1cm4hMX1jb25zdCBveT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIGJoKHIscyxsPTApe2lmKHI9PT1zKXJldHVybiByO2lmKGw+NTAwKXJldHVybiBzO2NvbnN0IHU9SmYocikmJkpmKHMpO2lmKCF1JiYhKHJ1KHIpJiZydShzKSkpcmV0dXJuIHM7Y29uc3QgYz0odT9yOk9iamVjdC5rZXlzKHIpKS5sZW5ndGgsaD11P3M6T2JqZWN0LmtleXMocykscD1oLmxlbmd0aCxtPXU/bmV3IEFycmF5KHApOnt9O2xldCB2PTA7Zm9yKGxldCBTPTA7UzxwO1MrKyl7Y29uc3QgQz11P1M6aFtTXSx4PXJbQ10sXz1zW0NdO2lmKHg9PT1fKXttW0NdPXgsKHU/UzxjOm95LmNhbGwocixDKSkmJnYrKztjb250aW51ZX1pZih4PT09bnVsbHx8Xz09PW51bGx8fHR5cGVvZiB4IT0ib2JqZWN0Inx8dHlwZW9mIF8hPSJvYmplY3QiKXttW0NdPV87Y29udGludWV9Y29uc3QgST1iaCh4LF8sbCsxKTttW0NdPUksST09PXgmJnYrK31yZXR1cm4gYz09PXAmJnY9PT1jP3I6bX1mdW5jdGlvbiBPbChyLHMpe2lmKCFzfHxPYmplY3Qua2V5cyhyKS5sZW5ndGghPT1PYmplY3Qua2V5cyhzKS5sZW5ndGgpcmV0dXJuITE7Zm9yKGNvbnN0IGwgaW4gcilpZihyW2xdIT09c1tsXSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBKZihyKXtyZXR1cm4gQXJyYXkuaXNBcnJheShyKSYmci5sZW5ndGg9PT1PYmplY3Qua2V5cyhyKS5sZW5ndGh9ZnVuY3Rpb24gcnUocil7aWYoIVlmKHIpKXJldHVybiExO2NvbnN0IHM9T2JqZWN0LmdldFByb3RvdHlwZU9mKHIpLGw9cz09bnVsbD92b2lkIDA6cy5jb25zdHJ1Y3RvcjtpZihsPT09dm9pZCAwKXJldHVybiEwO2lmKHR5cGVvZiBsIT0iZnVuY3Rpb24iKXJldHVybiExO2NvbnN0IHU9bC5wcm90b3R5cGU7cmV0dXJuISghWWYodSl8fCF1Lmhhc093blByb3BlcnR5KCJpc1Byb3RvdHlwZU9mIil8fHMhPT1PYmplY3QucHJvdG90eXBlKX1mdW5jdGlvbiBZZihyKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHIpPT09IltvYmplY3QgT2JqZWN0XSJ9ZnVuY3Rpb24gYXkocil7cmV0dXJuIG5ldyBQcm9taXNlKHM9Pnthci5zZXRUaW1lb3V0KHMscil9KX1mdW5jdGlvbiBpdShyLHMsbCl7cmV0dXJuIHR5cGVvZiBsLnN0cnVjdHVyYWxTaGFyaW5nPT0iZnVuY3Rpb24iP2wuc3RydWN0dXJhbFNoYXJpbmcocixzKTpsLnN0cnVjdHVyYWxTaGFyaW5nIT09ITE/YmgocixzKTpzfWZ1bmN0aW9uIHV5KHIscyxsPTApe2NvbnN0IHU9Wy4uLnIsc107cmV0dXJuIGwmJnUubGVuZ3RoPmw/dS5zbGljZSgxKTp1fWZ1bmN0aW9uIGN5KHIscyxsPTApe2NvbnN0IHU9W3MsLi4ucl07cmV0dXJuIGwmJnUubGVuZ3RoPmw/dS5zbGljZSgwLC0xKTp1fWNvbnN0IFR1PVN5bWJvbCgpO2Z1bmN0aW9uIFdoKHIscyl7cmV0dXJuIXIucXVlcnlGbiYmKHMhPW51bGwmJnMuaW5pdGlhbFByb21pc2UpPygpPT5zLmluaXRpYWxQcm9taXNlOiFyLnF1ZXJ5Rm58fHIucXVlcnlGbj09PVR1PygpPT5Qcm9taXNlLnJlamVjdChuZXcgRXJyb3IoYE1pc3NpbmcgcXVlcnlGbjogJyR7ci5xdWVyeUhhc2h9J2ApKTpyLnF1ZXJ5Rm59ZnVuY3Rpb24gTHUocixzKXtyZXR1cm4gdHlwZW9mIHI9PSJmdW5jdGlvbiI/ciguLi5zKTohIXJ9ZnVuY3Rpb24gZHkocixzLGwpe2xldCB1PSExLGM7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyLCJzaWduYWwiLHtlbnVtZXJhYmxlOiEwLGdldDooKT0+KGM/PyhjPXMoKSksdXx8KHU9ITAsYy5hYm9ydGVkP2woKTpjLmFkZEV2ZW50TGlzdGVuZXIoImFib3J0IixsLHtvbmNlOiEwfSkpLGMpfSkscn1sZXQgZnk9KCk9PnN5O2NvbnN0IEZ1PSgpPT5meSgpO3ZhciBmaT1jbGFzc3tjb25zdHJ1Y3Rvcigpe3RoaXMubGlzdGVuZXJzPW5ldyBTZXQsdGhpcy5zdWJzY3JpYmU9dGhpcy5zdWJzY3JpYmUuYmluZCh0aGlzKX1zdWJzY3JpYmUocil7cmV0dXJuIHRoaXMubGlzdGVuZXJzLmFkZChyKSx0aGlzLm9uU3Vic2NyaWJlKCksKCk9Pnt0aGlzLmxpc3RlbmVycy5kZWxldGUociksdGhpcy5vblVuc3Vic2NyaWJlKCl9fWhhc0xpc3RlbmVycygpe3JldHVybiB0aGlzLmxpc3RlbmVycy5zaXplPjB9b25TdWJzY3JpYmUoKXt9b25VbnN1YnNjcmliZSgpe319LHVyLEJuLEtyLGNoLGh5PShjaD1jbGFzcyBleHRlbmRzIGZpe2NvbnN0cnVjdG9yKCl7c3VwZXIoKTtaKHRoaXMsdXIpO1oodGhpcyxCbik7Wih0aGlzLEtyKTtxKHRoaXMsS3Iscz0+e2lmKHR5cGVvZiB3aW5kb3c8InUiJiZ3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcil7Y29uc3QgbD0oKT0+cygpO3JldHVybiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigidmlzaWJpbGl0eWNoYW5nZSIsbCwhMSksKCk9Pnt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigidmlzaWJpbGl0eWNoYW5nZSIsbCl9fX0pfW9uU3Vic2NyaWJlKCl7eSh0aGlzLEJuKXx8dGhpcy5zZXRFdmVudExpc3RlbmVyKHkodGhpcyxLcikpfW9uVW5zdWJzY3JpYmUoKXt2YXIgczt0aGlzLmhhc0xpc3RlbmVycygpfHwoKHM9eSh0aGlzLEJuKSk9PW51bGx8fHMuY2FsbCh0aGlzKSxxKHRoaXMsQm4sdm9pZCAwKSl9c2V0RXZlbnRMaXN0ZW5lcihzKXt2YXIgbDtxKHRoaXMsS3IscyksKGw9eSh0aGlzLEJuKSk9PW51bGx8fGwuY2FsbCh0aGlzKSxxKHRoaXMsQm4scyh1PT57dHlwZW9mIHU9PSJib29sZWFuIj90aGlzLnNldEZvY3VzZWQodSk6dGhpcy5vbkZvY3VzKCl9KSl9c2V0Rm9jdXNlZChzKXt5KHRoaXMsdXIpIT09cyYmKHEodGhpcyx1cixzKSx0aGlzLm9uRm9jdXMoKSl9b25Gb2N1cygpe2NvbnN0IHM9dGhpcy5pc0ZvY3VzZWQoKTt0aGlzLmxpc3RlbmVycy5mb3JFYWNoKGw9PntsKHMpfSl9aXNGb2N1c2VkKCl7dmFyIHM7cmV0dXJuIHR5cGVvZiB5KHRoaXMsdXIpPT0iYm9vbGVhbiI/eSh0aGlzLHVyKTooKHM9Z2xvYmFsVGhpcy5kb2N1bWVudCk9PW51bGw/dm9pZCAwOnMudmlzaWJpbGl0eVN0YXRlKSE9PSJoaWRkZW4ifX0sdXI9bmV3IFdlYWtNYXAsQm49bmV3IFdlYWtNYXAsS3I9bmV3IFdlYWtNYXAsY2gpO2NvbnN0IE91PW5ldyBoeSxweT1peTtmdW5jdGlvbiBteSgpe2xldCByPVtdLHM9MCxsPW09PnttKCl9LHU9bT0+e20oKX0sYz1weTtjb25zdCBoPW09PntzP3IucHVzaChtKTpjKCgpPT57bChtKX0pfSxwPSgpPT57Y29uc3QgbT1yO3I9W10sbS5sZW5ndGgmJmMoKCk9Pnt1KCgpPT57bS5mb3JFYWNoKHY9PntsKHYpfSl9KX0pfTtyZXR1cm57YmF0Y2g6bT0+e2xldCB2O3MrKzt0cnl7dj1tKCl9ZmluYWxseXtzLS0sc3x8cCgpfXJldHVybiB2fSxiYXRjaENhbGxzOm09PiguLi52KT0+e2goKCk9PnttKC4uLnYpfSl9LHNjaGVkdWxlOmgsc2V0Tm90aWZ5RnVuY3Rpb246bT0+e2w9bX0sc2V0QmF0Y2hOb3RpZnlGdW5jdGlvbjptPT57dT1tfSxzZXRTY2hlZHVsZXI6bT0+e2M9bX19fWNvbnN0IFdlPW15KCk7dmFyIEdyLEhuLEpyLGRoLGd5PShkaD1jbGFzcyBleHRlbmRzIGZpe2NvbnN0cnVjdG9yKCl7c3VwZXIoKTtaKHRoaXMsR3IsITApO1oodGhpcyxIbik7Wih0aGlzLEpyKTtxKHRoaXMsSnIscz0+e2lmKHR5cGVvZiB3aW5kb3c8InUiJiZ3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcil7Y29uc3QgbD0oKT0+cyghMCksdT0oKT0+cyghMSk7cmV0dXJuIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJvbmxpbmUiLGwsITEpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJvZmZsaW5lIix1LCExKSwoKT0+e3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJvbmxpbmUiLGwpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJvZmZsaW5lIix1KX19fSl9b25TdWJzY3JpYmUoKXt5KHRoaXMsSG4pfHx0aGlzLnNldEV2ZW50TGlzdGVuZXIoeSh0aGlzLEpyKSl9b25VbnN1YnNjcmliZSgpe3ZhciBzO3RoaXMuaGFzTGlzdGVuZXJzKCl8fCgocz15KHRoaXMsSG4pKT09bnVsbHx8cy5jYWxsKHRoaXMpLHEodGhpcyxIbix2b2lkIDApKX1zZXRFdmVudExpc3RlbmVyKHMpe3ZhciBsO3EodGhpcyxKcixzKSwobD15KHRoaXMsSG4pKT09bnVsbHx8bC5jYWxsKHRoaXMpLHEodGhpcyxIbixzKHRoaXMuc2V0T25saW5lLmJpbmQodGhpcykpKX1zZXRPbmxpbmUocyl7eSh0aGlzLEdyKSE9PXMmJihxKHRoaXMsR3IscyksdGhpcy5saXN0ZW5lcnMuZm9yRWFjaChsPT57bChzKX0pKX1pc09ubGluZSgpe3JldHVybiB5KHRoaXMsR3IpfX0sR3I9bmV3IFdlYWtNYXAsSG49bmV3IFdlYWtNYXAsSnI9bmV3IFdlYWtNYXAsZGgpO2NvbnN0IElsPW5ldyBneTtmdW5jdGlvbiB2eShyKXtyZXR1cm4gTWF0aC5taW4oMWUzKjIqKnIsM2U0KX1mdW5jdGlvbiBWaChyKXtyZXR1cm4ocj8/Im9ubGluZSIpPT09Im9ubGluZSI/SWwuaXNPbmxpbmUoKTohMH12YXIgc3U9Y2xhc3MgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihyKXtzdXBlcigiQ2FuY2VsbGVkRXJyb3IiKSx0aGlzLnJldmVydD1yPT1udWxsP3ZvaWQgMDpyLnJldmVydCx0aGlzLnNpbGVudD1yPT1udWxsP3ZvaWQgMDpyLnNpbGVudH19O2Z1bmN0aW9uIEtoKHIpe2xldCBzPSExLGw9MCx1LGM9InBlbmRpbmciLGgscDtjb25zdCBtPW5ldyBQcm9taXNlKChRLEgpPT57aD1RLHA9SH0pO20uY2F0Y2goY3QpO2NvbnN0IHY9KCk9PmMhPT0icGVuZGluZyIsUz1RPT57dmFyIEg7aWYoIXYoKSl7Y29uc3QgSz1uZXcgc3UoUSk7RihLKSwoSD1yLm9uQ2FuY2VsKT09bnVsbHx8SC5jYWxsKHIsSyl9fSxDPSgpPT57cz0hMH0seD0oKT0+e3M9ITF9LF89KCk9Pk91LmlzRm9jdXNlZCgpJiYoci5uZXR3b3JrTW9kZT09PSJhbHdheXMifHxJbC5pc09ubGluZSgpKSYmci5jYW5SdW4oKSxJPSgpPT5WaChyLm5ldHdvcmtNb2RlKSYmci5jYW5SdW4oKSxPPVE9Pnt2KCl8fCh1PT1udWxsfHx1KCksYz0icmVzb2x2ZWQiLGgoUSkpfSxGPVE9Pnt2KCl8fCh1PT1udWxsfHx1KCksYz0icmVqZWN0ZWQiLHAoUSkpfSxMPSgpPT5uZXcgUHJvbWlzZShRPT57dmFyIEg7dT1LPT57KHYoKXx8XygpKSYmUShLKX0sKEg9ci5vblBhdXNlKT09bnVsbHx8SC5jYWxsKHIpfSkudGhlbigoKT0+e3ZhciBRO3U9dm9pZCAwLHYoKXx8KFE9ci5vbkNvbnRpbnVlKT09bnVsbHx8US5jYWxsKHIpfSksJD0oKT0+e2lmKHYoKSlyZXR1cm47bGV0IFE7Y29uc3QgSD1sPT09MD9yLmluaXRpYWxQcm9taXNlOnZvaWQgMDt0cnl7UT1IPz9yLmZuKCl9Y2F0Y2goSyl7UT1Qcm9taXNlLnJlamVjdChLKX1Qcm9taXNlLnJlc29sdmUoUSkudGhlbihPKS5jYXRjaChLPT57dmFyIHVlO2lmKHYoKSlyZXR1cm47Y29uc3QgQj1yLnJldHJ5Pz8oRnUoKT8wOjMpLHNlPXIucmV0cnlEZWxheT8/dnksaWU9dHlwZW9mIHNlPT0iZnVuY3Rpb24iP3NlKGwsSyk6c2UsaGU9Qj09PSEwfHx0eXBlb2YgQj09Im51bWJlciImJmw8Qnx8dHlwZW9mIEI9PSJmdW5jdGlvbiImJkIobCxLKTtpZihzfHwhaGUpe0YoSyk7cmV0dXJufWwrKywodWU9ci5vbkZhaWwpPT1udWxsfHx1ZS5jYWxsKHIsbCxLKSxheShpZSkudGhlbigoKT0+XygpP3ZvaWQgMDpMKCkpLnRoZW4oKCk9PntzP0YoSyk6JCgpfSl9KX07cmV0dXJue3Byb21pc2U6bSxzdGF0dXM6KCk9PmMsY2FuY2VsOlMsY29udGludWU6KCk9Pih1PT1udWxsfHx1KCksbSksY2FuY2VsUmV0cnk6Qyxjb250aW51ZVJldHJ5OngsY2FuU3RhcnQ6SSxzdGFydDooKT0+KEkoKT8kKCk6TCgpLnRoZW4oJCksbSl9fXZhciBjcixmaCxHaD0oZmg9Y2xhc3N7Y29uc3RydWN0b3IoKXtaKHRoaXMsY3IpfWRlc3Ryb3koKXt0aGlzLmNsZWFyR2NUaW1lb3V0KCl9c2NoZWR1bGVHYygpe3RoaXMuY2xlYXJHY1RpbWVvdXQoKSxRaCh0aGlzLmdjVGltZSkmJnEodGhpcyxjcixhci5zZXRUaW1lb3V0KCgpPT57dGhpcy5vcHRpb25hbFJlbW92ZSgpfSx0aGlzLmdjVGltZSkpfXVwZGF0ZUdjVGltZShyKXt0aGlzLmdjVGltZT1NYXRoLm1heCh0aGlzLmdjVGltZXx8MCxyPz8oRnUoKT8xLzA6M2U1KSl9Y2xlYXJHY1RpbWVvdXQoKXt5KHRoaXMsY3IpIT09dm9pZCAwJiYoYXIuY2xlYXJUaW1lb3V0KHkodGhpcyxjcikpLHEodGhpcyxjcix2b2lkIDApKX19LGNyPW5ldyBXZWFrTWFwLGZoKTtmdW5jdGlvbiB5eShyKXtyZXR1cm57b25GZXRjaDoocyxsKT0+e3ZhciBDLHgsXyxJLE87Y29uc3QgdT1zLm9wdGlvbnMsYz0oXz0oeD0oQz1zLmZldGNoT3B0aW9ucyk9PW51bGw/dm9pZCAwOkMubWV0YSk9PW51bGw/dm9pZCAwOnguZmV0Y2hNb3JlKT09bnVsbD92b2lkIDA6Xy5kaXJlY3Rpb24saD0oKEk9cy5zdGF0ZS5kYXRhKT09bnVsbD92b2lkIDA6SS5wYWdlcyl8fFtdLHA9KChPPXMuc3RhdGUuZGF0YSk9PW51bGw/dm9pZCAwOk8ucGFnZVBhcmFtcyl8fFtdO2xldCBtPXtwYWdlczpbXSxwYWdlUGFyYW1zOltdfSx2PTA7Y29uc3QgUz1hc3luYygpPT57bGV0IEY9ITE7Y29uc3QgTD1IPT57ZHkoSCwoKT0+cy5zaWduYWwsKCk9PkY9ITApfSwkPVdoKHMub3B0aW9ucyxzLmZldGNoT3B0aW9ucyksUT1hc3luYyhILEssQik9PntpZihGKXJldHVybiBQcm9taXNlLnJlamVjdChzLnNpZ25hbC5yZWFzb24pO2lmKEs9PW51bGwmJkgucGFnZXMubGVuZ3RoKXJldHVybiBQcm9taXNlLnJlc29sdmUoSCk7Y29uc3QgaWU9KCgpPT57Y29uc3QgaXQ9e2NsaWVudDpzLmNsaWVudCxxdWVyeUtleTpzLnF1ZXJ5S2V5LHBhZ2VQYXJhbTpLLGRpcmVjdGlvbjpCPyJiYWNrd2FyZCI6ImZvcndhcmQiLG1ldGE6cy5vcHRpb25zLm1ldGF9O3JldHVybiBMKGl0KSxpdH0pKCksaGU9YXdhaXQgJChpZSkse21heFBhZ2VzOnVlfT1zLm9wdGlvbnMsZ2U9Qj9jeTp1eTtyZXR1cm57cGFnZXM6Z2UoSC5wYWdlcyxoZSx1ZSkscGFnZVBhcmFtczpnZShILnBhZ2VQYXJhbXMsSyx1ZSl9fTtpZihjJiZoLmxlbmd0aCl7Y29uc3QgSD1jPT09ImJhY2t3YXJkIixLPUg/eHk6WGYsQj17cGFnZXM6aCxwYWdlUGFyYW1zOnB9O209YXdhaXQgUShCLEsodSxCKSxIKX1lbHNle2NvbnN0IEg9cj8/aC5sZW5ndGg7ZG97Y29uc3QgSz12PT09MD9wWzBdPz91LmluaXRpYWxQYWdlUGFyYW06WGYodSxtKTtpZih2PjAmJks9PW51bGwpYnJlYWs7bT1hd2FpdCBRKG0sSyksdisrfXdoaWxlKHY8SCl9cmV0dXJuIG19O3Mub3B0aW9ucy5wZXJzaXN0ZXI/cy5mZXRjaEZuPSgpPT57dmFyIEYsTDtyZXR1cm4oTD0oRj1zLm9wdGlvbnMpLnBlcnNpc3Rlcik9PW51bGw/dm9pZCAwOkwuY2FsbChGLFMse2NsaWVudDpzLmNsaWVudCxxdWVyeUtleTpzLnF1ZXJ5S2V5LG1ldGE6cy5vcHRpb25zLm1ldGEsc2lnbmFsOnMuc2lnbmFsfSxsKX06cy5mZXRjaEZuPVN9fX1mdW5jdGlvbiBYZihyLHtwYWdlczpzLHBhZ2VQYXJhbXM6bH0pe2NvbnN0IHU9cy5sZW5ndGgtMTtyZXR1cm4gcy5sZW5ndGg+MD9yLmdldE5leHRQYWdlUGFyYW0oc1t1XSxzLGxbdV0sbCk6dm9pZCAwfWZ1bmN0aW9uIHh5KHIse3BhZ2VzOnMscGFnZVBhcmFtczpsfSl7dmFyIHU7cmV0dXJuIHMubGVuZ3RoPjA/KHU9ci5nZXRQcmV2aW91c1BhZ2VQYXJhbSk9PW51bGw/dm9pZCAwOnUuY2FsbChyLHNbMF0scyxsWzBdLGwpOnZvaWQgMH12YXIgWXIsZHIsWHIsTHQsZnIsYmUsbHMsaHIsUXQsaG4saGgsd3k9KGhoPWNsYXNzIGV4dGVuZHMgR2h7Y29uc3RydWN0b3Iocyl7c3VwZXIoKTtaKHRoaXMsUXQpO1oodGhpcyxZcik7Wih0aGlzLGRyKTtaKHRoaXMsWHIpO1oodGhpcyxMdCk7Wih0aGlzLGZyKTtaKHRoaXMsYmUpO1oodGhpcyxscyk7Wih0aGlzLGhyKTtxKHRoaXMsaHIsITEpLHEodGhpcyxscyxzLmRlZmF1bHRPcHRpb25zKSx0aGlzLnNldE9wdGlvbnMocy5vcHRpb25zKSx0aGlzLm9ic2VydmVycz1bXSxxKHRoaXMsZnIscy5jbGllbnQpLHEodGhpcyxMdCx5KHRoaXMsZnIpLmdldFF1ZXJ5Q2FjaGUoKSksdGhpcy5xdWVyeUtleT1zLnF1ZXJ5S2V5LHRoaXMucXVlcnlIYXNoPXMucXVlcnlIYXNoLHEodGhpcyxkcixlaCh0aGlzLm9wdGlvbnMpKSx0aGlzLnN0YXRlPXMuc3RhdGU/P3kodGhpcyxkciksdGhpcy5zY2hlZHVsZUdjKCl9Z2V0IG1ldGEoKXtyZXR1cm4gdGhpcy5vcHRpb25zLm1ldGF9Z2V0IHF1ZXJ5VHlwZSgpe3JldHVybiB5KHRoaXMsWXIpfWdldCBwcm9taXNlKCl7dmFyIHM7cmV0dXJuKHM9eSh0aGlzLGJlKSk9PW51bGw/dm9pZCAwOnMucHJvbWlzZX1zZXRPcHRpb25zKHMpe2lmKHRoaXMub3B0aW9ucz17Li4ueSh0aGlzLGxzKSwuLi5zfSxzIT1udWxsJiZzLl90eXBlJiZxKHRoaXMsWXIscy5fdHlwZSksdGhpcy51cGRhdGVHY1RpbWUodGhpcy5vcHRpb25zLmdjVGltZSksdGhpcy5zdGF0ZSYmdGhpcy5zdGF0ZS5kYXRhPT09dm9pZCAwKXtjb25zdCBsPWVoKHRoaXMub3B0aW9ucyk7bC5kYXRhIT09dm9pZCAwJiYodGhpcy5zZXRTdGF0ZShaZihsLmRhdGEsbC5kYXRhVXBkYXRlZEF0KSkscSh0aGlzLGRyLGwpKX19b3B0aW9uYWxSZW1vdmUoKXshdGhpcy5vYnNlcnZlcnMubGVuZ3RoJiZ0aGlzLnN0YXRlLmZldGNoU3RhdHVzPT09ImlkbGUiJiZ5KHRoaXMsTHQpLnJlbW92ZSh0aGlzKX1zZXREYXRhKHMsbCl7Y29uc3QgdT1pdSh0aGlzLnN0YXRlLmRhdGEscyx0aGlzLm9wdGlvbnMpO3JldHVybiBsZSh0aGlzLFF0LGhuKS5jYWxsKHRoaXMse2RhdGE6dSx0eXBlOiJzdWNjZXNzIixkYXRhVXBkYXRlZEF0Omw9PW51bGw/dm9pZCAwOmwudXBkYXRlZEF0LG1hbnVhbDpsPT1udWxsP3ZvaWQgMDpsLm1hbnVhbH0pLHV9c2V0U3RhdGUocyl7bGUodGhpcyxRdCxobikuY2FsbCh0aGlzLHt0eXBlOiJzZXRTdGF0ZSIsc3RhdGU6c30pfWNhbmNlbChzKXt2YXIgdSxjO2NvbnN0IGw9KHU9eSh0aGlzLGJlKSk9PW51bGw/dm9pZCAwOnUucHJvbWlzZTtyZXR1cm4oYz15KHRoaXMsYmUpKT09bnVsbHx8Yy5jYW5jZWwocyksbD9sLnRoZW4oY3QpLmNhdGNoKGN0KTpQcm9taXNlLnJlc29sdmUoKX1kZXN0cm95KCl7c3VwZXIuZGVzdHJveSgpLHRoaXMuY2FuY2VsKHtzaWxlbnQ6ITB9KX1nZXQgcmVzZXRTdGF0ZSgpe3JldHVybiB5KHRoaXMsZHIpfXJlc2V0KCl7dGhpcy5kZXN0cm95KCksdGhpcy5zZXRTdGF0ZSh0aGlzLnJlc2V0U3RhdGUpfWlzQWN0aXZlKCl7cmV0dXJuIHRoaXMub2JzZXJ2ZXJzLnNvbWUocz0+TGUocy5vcHRpb25zLmVuYWJsZWQsdGhpcykhPT0hMSl9aXNEaXNhYmxlZCgpe3JldHVybiB0aGlzLmdldE9ic2VydmVyc0NvdW50KCk+MD8hdGhpcy5pc0FjdGl2ZSgpOnRoaXMub3B0aW9ucy5xdWVyeUZuPT09VHV8fCF0aGlzLmlzRmV0Y2hlZCgpfWlzRmV0Y2hlZCgpe3JldHVybiB0aGlzLnN0YXRlLmRhdGFVcGRhdGVDb3VudCt0aGlzLnN0YXRlLmVycm9yVXBkYXRlQ291bnQ+MH1pc1N0YXRpYygpe3JldHVybiB0aGlzLmdldE9ic2VydmVyc0NvdW50KCk+MD90aGlzLm9ic2VydmVycy5zb21lKHM9PkxlKHMub3B0aW9ucy5zdGFsZVRpbWUsdGhpcyk9PT0ic3RhdGljIik6ITF9aXNTdGFsZSgpe3JldHVybiB0aGlzLmdldE9ic2VydmVyc0NvdW50KCk+MD90aGlzLm9ic2VydmVycy5zb21lKHM9PnMuZ2V0Q3VycmVudFJlc3VsdCgpLmlzU3RhbGUpOnRoaXMuc3RhdGUuZGF0YT09PXZvaWQgMHx8dGhpcy5zdGF0ZS5pc0ludmFsaWRhdGVkfWlzU3RhbGVCeVRpbWUocz0wKXtyZXR1cm4gdGhpcy5zdGF0ZS5kYXRhPT09dm9pZCAwPyEwOnM9PT0ic3RhdGljIj8hMTp0aGlzLnN0YXRlLmlzSW52YWxpZGF0ZWQ/ITA6IXFoKHRoaXMuc3RhdGUuZGF0YVVwZGF0ZWRBdCxzKX1vbkZvY3VzKCl7dmFyIHMsbDsocz10aGlzLm9ic2VydmVycy5maW5kKHU9PnUuc2hvdWxkRmV0Y2hPbldpbmRvd0ZvY3VzKCkpKT09bnVsbHx8cy5yZWZldGNoKHtjYW5jZWxSZWZldGNoOiExfSksKGw9eSh0aGlzLGJlKSk9PW51bGx8fGwuY29udGludWUoKX1vbk9ubGluZSgpe3ZhciBzLGw7KHM9dGhpcy5vYnNlcnZlcnMuZmluZCh1PT51LnNob3VsZEZldGNoT25SZWNvbm5lY3QoKSkpPT1udWxsfHxzLnJlZmV0Y2goe2NhbmNlbFJlZmV0Y2g6ITF9KSwobD15KHRoaXMsYmUpKT09bnVsbHx8bC5jb250aW51ZSgpfWFkZE9ic2VydmVyKHMpe3RoaXMub2JzZXJ2ZXJzLmluY2x1ZGVzKHMpfHwodGhpcy5vYnNlcnZlcnMucHVzaChzKSx0aGlzLmNsZWFyR2NUaW1lb3V0KCkseSh0aGlzLEx0KS5ub3RpZnkoe3R5cGU6Im9ic2VydmVyQWRkZWQiLHF1ZXJ5OnRoaXMsb2JzZXJ2ZXI6c30pKX1yZW1vdmVPYnNlcnZlcihzKXtjb25zdCBsPXRoaXMub2JzZXJ2ZXJzLmluZGV4T2Yocyk7bCE9PS0xJiYodGhpcy5vYnNlcnZlcnMuc3BsaWNlKGwsMSksdGhpcy5vYnNlcnZlcnMubGVuZ3RofHwoeSh0aGlzLGJlKSYmKHkodGhpcyxocil8fHRoaXMuc3RhdGUuZmV0Y2hTdGF0dXM9PT0icGF1c2VkIiYmdGhpcy5zdGF0ZS5zdGF0dXM9PT0icGVuZGluZyI/eSh0aGlzLGJlKS5jYW5jZWwoe3JldmVydDohMH0pOnkodGhpcyxiZSkuY2FuY2VsUmV0cnkoKSksdGhpcy5zY2hlZHVsZUdjKCkpLHkodGhpcyxMdCkubm90aWZ5KHt0eXBlOiJvYnNlcnZlclJlbW92ZWQiLHF1ZXJ5OnRoaXMsb2JzZXJ2ZXI6c30pKX1nZXRPYnNlcnZlcnNDb3VudCgpe3JldHVybiB0aGlzLm9ic2VydmVycy5sZW5ndGh9aW52YWxpZGF0ZSgpe3RoaXMuc3RhdGUuaXNJbnZhbGlkYXRlZHx8bGUodGhpcyxRdCxobikuY2FsbCh0aGlzLHt0eXBlOiJpbnZhbGlkYXRlIn0pfWFzeW5jIGZldGNoKHMsbCl7dmFyIFMsQyx4LF8sSSxPLEYsTCwkLFEsSCxLO2lmKHRoaXMuc3RhdGUuZmV0Y2hTdGF0dXMhPT0iaWRsZSImJigoUz15KHRoaXMsYmUpKT09bnVsbD92b2lkIDA6Uy5zdGF0dXMoKSkhPT0icmVqZWN0ZWQiKXtpZih0aGlzLnN0YXRlLmRhdGEhPT12b2lkIDAmJihsIT1udWxsJiZsLmNhbmNlbFJlZmV0Y2gpKXRoaXMuY2FuY2VsKHtzaWxlbnQ6ITB9KTtlbHNlIGlmKHkodGhpcyxiZSkpcmV0dXJuIHkodGhpcyxiZSkuY29udGludWVSZXRyeSgpLHkodGhpcyxiZSkucHJvbWlzZX1pZihzJiZ0aGlzLnNldE9wdGlvbnMocyksIXRoaXMub3B0aW9ucy5xdWVyeUZuKXtjb25zdCBCPXRoaXMub2JzZXJ2ZXJzLmZpbmQoc2U9PnNlLm9wdGlvbnMucXVlcnlGbik7QiYmdGhpcy5zZXRPcHRpb25zKEIub3B0aW9ucyl9Y29uc3QgdT1uZXcgQWJvcnRDb250cm9sbGVyLGM9Qj0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eShCLCJzaWduYWwiLHtlbnVtZXJhYmxlOiEwLGdldDooKT0+KHEodGhpcyxociwhMCksdS5zaWduYWwpfSl9LGg9KCk9Pntjb25zdCBCPVdoKHRoaXMub3B0aW9ucyxsKSxpZT0oKCk9Pntjb25zdCBoZT17Y2xpZW50OnkodGhpcyxmcikscXVlcnlLZXk6dGhpcy5xdWVyeUtleSxtZXRhOnRoaXMubWV0YX07cmV0dXJuIGMoaGUpLGhlfSkoKTtyZXR1cm4gcSh0aGlzLGhyLCExKSx0aGlzLm9wdGlvbnMucGVyc2lzdGVyP3RoaXMub3B0aW9ucy5wZXJzaXN0ZXIoQixpZSx0aGlzKTpCKGllKX0sbT0oKCk9Pntjb25zdCBCPXtmZXRjaE9wdGlvbnM6bCxvcHRpb25zOnRoaXMub3B0aW9ucyxxdWVyeUtleTp0aGlzLnF1ZXJ5S2V5LGNsaWVudDp5KHRoaXMsZnIpLHN0YXRlOnRoaXMuc3RhdGUsZmV0Y2hGbjpofTtyZXR1cm4gYyhCKSxCfSkoKTsoQz15KHRoaXMsWXIpPT09ImluZmluaXRlIj95eSh0aGlzLm9wdGlvbnMucGFnZXMpOnRoaXMub3B0aW9ucy5iZWhhdmlvcik9PW51bGx8fEMub25GZXRjaChtLHRoaXMpLHEodGhpcyxYcix0aGlzLnN0YXRlKSwodGhpcy5zdGF0ZS5mZXRjaFN0YXR1cz09PSJpZGxlInx8dGhpcy5zdGF0ZS5mZXRjaE1ldGEhPT0oKHg9bS5mZXRjaE9wdGlvbnMpPT1udWxsP3ZvaWQgMDp4Lm1ldGEpKSYmbGUodGhpcyxRdCxobikuY2FsbCh0aGlzLHt0eXBlOiJmZXRjaCIsbWV0YTooXz1tLmZldGNoT3B0aW9ucyk9PW51bGw/dm9pZCAwOl8ubWV0YX0pO2NvbnN0IHY9cSh0aGlzLGJlLEtoKHtpbml0aWFsUHJvbWlzZTpsPT1udWxsP3ZvaWQgMDpsLmluaXRpYWxQcm9taXNlLGZuOm0uZmV0Y2hGbixvbkNhbmNlbDpCPT57QiBpbnN0YW5jZW9mIHN1JiZCLnJldmVydCYmdGhpcy5zZXRTdGF0ZSh7Li4ueSh0aGlzLFhyKSxmZXRjaFN0YXR1czoiaWRsZSJ9KSx1LmFib3J0KCl9LG9uRmFpbDooQixzZSk9PntsZSh0aGlzLFF0LGhuKS5jYWxsKHRoaXMse3R5cGU6ImZhaWxlZCIsZmFpbHVyZUNvdW50OkIsZXJyb3I6c2V9KX0sb25QYXVzZTooKT0+e2xlKHRoaXMsUXQsaG4pLmNhbGwodGhpcyx7dHlwZToicGF1c2UifSl9LG9uQ29udGludWU6KCk9PntsZSh0aGlzLFF0LGhuKS5jYWxsKHRoaXMse3R5cGU6ImNvbnRpbnVlIn0pfSxyZXRyeTptLm9wdGlvbnMucmV0cnkscmV0cnlEZWxheTptLm9wdGlvbnMucmV0cnlEZWxheSxuZXR3b3JrTW9kZTptLm9wdGlvbnMubmV0d29ya01vZGUsY2FuUnVuOigpPT4hMH0pKTt0cnl7Y29uc3QgQj1hd2FpdCB2LnN0YXJ0KCk7aWYoQj09PXZvaWQgMCl0aHJvdyBuZXcgRXJyb3IoYCR7dGhpcy5xdWVyeUhhc2h9IGRhdGEgaXMgdW5kZWZpbmVkYCk7cmV0dXJuIHRoaXMuc2V0RGF0YShCKSwoTz0oST15KHRoaXMsTHQpLmNvbmZpZykub25TdWNjZXNzKT09bnVsbHx8Ty5jYWxsKEksQix0aGlzKSwoTD0oRj15KHRoaXMsTHQpLmNvbmZpZykub25TZXR0bGVkKT09bnVsbHx8TC5jYWxsKEYsQix0aGlzLnN0YXRlLmVycm9yLHRoaXMpLEJ9Y2F0Y2goQil7aWYoQiBpbnN0YW5jZW9mIHN1KXtpZihCLnNpbGVudClyZXR1cm4geSh0aGlzLGJlKS5wcm9taXNlO2lmKEIucmV2ZXJ0KXtpZih0aGlzLnN0YXRlLmRhdGE9PT12b2lkIDApdGhyb3cgQjtyZXR1cm4gdGhpcy5zdGF0ZS5kYXRhfX10aHJvdyBsZSh0aGlzLFF0LGhuKS5jYWxsKHRoaXMse3R5cGU6ImVycm9yIixlcnJvcjpCfSksKFE9KCQ9eSh0aGlzLEx0KS5jb25maWcpLm9uRXJyb3IpPT1udWxsfHxRLmNhbGwoJCxCLHRoaXMpLChLPShIPXkodGhpcyxMdCkuY29uZmlnKS5vblNldHRsZWQpPT1udWxsfHxLLmNhbGwoSCx0aGlzLnN0YXRlLmRhdGEsQix0aGlzKSxCfWZpbmFsbHl7eSh0aGlzLGJlKT09PXYmJnEodGhpcyxiZSx2b2lkIDApLHRoaXMuc2NoZWR1bGVHYygpfX19LFlyPW5ldyBXZWFrTWFwLGRyPW5ldyBXZWFrTWFwLFhyPW5ldyBXZWFrTWFwLEx0PW5ldyBXZWFrTWFwLGZyPW5ldyBXZWFrTWFwLGJlPW5ldyBXZWFrTWFwLGxzPW5ldyBXZWFrTWFwLGhyPW5ldyBXZWFrTWFwLFF0PW5ldyBXZWFrU2V0LGhuPWZ1bmN0aW9uKHMpe2NvbnN0IGw9dT0+e3N3aXRjaChzLnR5cGUpe2Nhc2UiZmFpbGVkIjpyZXR1cm57Li4udSxmZXRjaEZhaWx1cmVDb3VudDpzLmZhaWx1cmVDb3VudCxmZXRjaEZhaWx1cmVSZWFzb246cy5lcnJvcn07Y2FzZSJwYXVzZSI6cmV0dXJuey4uLnUsZmV0Y2hTdGF0dXM6InBhdXNlZCJ9O2Nhc2UiY29udGludWUiOnJldHVybnsuLi51LGZldGNoU3RhdHVzOiJmZXRjaGluZyJ9O2Nhc2UiZmV0Y2giOnJldHVybnsuLi51LC4uLkpoKHUuZGF0YSx0aGlzLm9wdGlvbnMpLGZldGNoTWV0YTpzLm1ldGE/P251bGx9O2Nhc2Uic3VjY2VzcyI6Y29uc3QgYz17Li4udSwuLi5aZihzLmRhdGEscy5kYXRhVXBkYXRlZEF0KSxkYXRhVXBkYXRlQ291bnQ6dS5kYXRhVXBkYXRlQ291bnQrMSwuLi4hcy5tYW51YWwmJntmZXRjaFN0YXR1czoiaWRsZSIsZmV0Y2hGYWlsdXJlQ291bnQ6MCxmZXRjaEZhaWx1cmVSZWFzb246bnVsbH19O3JldHVybiBxKHRoaXMsWHIscy5tYW51YWw/Yzp2b2lkIDApLGM7Y2FzZSJlcnJvciI6Y29uc3QgaD1zLmVycm9yO3JldHVybnsuLi51LGVycm9yOmgsZXJyb3JVcGRhdGVDb3VudDp1LmVycm9yVXBkYXRlQ291bnQrMSxlcnJvclVwZGF0ZWRBdDpEYXRlLm5vdygpLGZldGNoRmFpbHVyZUNvdW50OnUuZmV0Y2hGYWlsdXJlQ291bnQrMSxmZXRjaEZhaWx1cmVSZWFzb246aCxmZXRjaFN0YXR1czoiaWRsZSIsc3RhdHVzOiJlcnJvciIsaXNJbnZhbGlkYXRlZDohMH07Y2FzZSJpbnZhbGlkYXRlIjpyZXR1cm57Li4udSxpc0ludmFsaWRhdGVkOiEwfTtjYXNlInNldFN0YXRlIjpyZXR1cm57Li4udSwuLi5zLnN0YXRlfX19O3RoaXMuc3RhdGU9bCh0aGlzLnN0YXRlKSxXZS5iYXRjaCgoKT0+e3RoaXMub2JzZXJ2ZXJzLnNsaWNlKCkuZm9yRWFjaCh1PT57dS5vblF1ZXJ5VXBkYXRlKCl9KSx5KHRoaXMsTHQpLm5vdGlmeSh7cXVlcnk6dGhpcyx0eXBlOiJ1cGRhdGVkIixhY3Rpb246c30pfSl9LGhoKTtmdW5jdGlvbiBKaChyLHMpe3JldHVybntmZXRjaEZhaWx1cmVDb3VudDowLGZldGNoRmFpbHVyZVJlYXNvbjpudWxsLGZldGNoU3RhdHVzOlZoKHMubmV0d29ya01vZGUpPyJmZXRjaGluZyI6InBhdXNlZCIsLi4ucj09PXZvaWQgMCYme2Vycm9yOm51bGwsc3RhdHVzOiJwZW5kaW5nIn19fWZ1bmN0aW9uIFpmKHIscyl7cmV0dXJue2RhdGE6cixkYXRhVXBkYXRlZEF0OnM/P0RhdGUubm93KCksZXJyb3I6bnVsbCxpc0ludmFsaWRhdGVkOiExLHN0YXR1czoic3VjY2VzcyJ9fWZ1bmN0aW9uIGVoKHIpe2NvbnN0IHM9dHlwZW9mIHIuaW5pdGlhbERhdGE9PSJmdW5jdGlvbiI/ci5pbml0aWFsRGF0YSgpOnIuaW5pdGlhbERhdGEsbD1zIT09dm9pZCAwLHU9bD90eXBlb2Ygci5pbml0aWFsRGF0YVVwZGF0ZWRBdD09ImZ1bmN0aW9uIj9yLmluaXRpYWxEYXRhVXBkYXRlZEF0KCk6ci5pbml0aWFsRGF0YVVwZGF0ZWRBdDowO3JldHVybntkYXRhOnMsZGF0YVVwZGF0ZUNvdW50OjAsZGF0YVVwZGF0ZWRBdDpsP3U/P0RhdGUubm93KCk6MCxlcnJvcjpudWxsLGVycm9yVXBkYXRlQ291bnQ6MCxlcnJvclVwZGF0ZWRBdDowLGZldGNoRmFpbHVyZUNvdW50OjAsZmV0Y2hGYWlsdXJlUmVhc29uOm51bGwsZmV0Y2hNZXRhOm51bGwsaXNJbnZhbGlkYXRlZDohMSxzdGF0dXM6bD8ic3VjY2VzcyI6InBlbmRpbmciLGZldGNoU3RhdHVzOiJpZGxlIn19dmFyIGF0LHBlLG9zLHV0LHByLFpyLHBuLGFzLGVpLHRpLG1yLGdyLFFuLG5pLFNlLHRzLGx1LG91LGF1LHV1LGN1LGR1LGZ1LGh1LHBoLFN5PShwaD1jbGFzcyBleHRlbmRzIGZpe2NvbnN0cnVjdG9yKHMsbCl7c3VwZXIoKTtaKHRoaXMsU2UpO1oodGhpcyxhdCk7Wih0aGlzLHBlKTtaKHRoaXMsb3MpO1oodGhpcyx1dCk7Wih0aGlzLHByKTtaKHRoaXMsWnIpO1oodGhpcyxwbik7Wih0aGlzLGFzKTtaKHRoaXMsZWkpO1oodGhpcyx0aSk7Wih0aGlzLG1yKTtaKHRoaXMsZ3IpO1oodGhpcyxRbik7Wih0aGlzLG5pLG5ldyBTZXQpO3RoaXMub3B0aW9ucz1sLHEodGhpcyxhdCxzKSxxKHRoaXMscG4sbnVsbCksdGhpcy5iaW5kTWV0aG9kcygpLHRoaXMuc2V0T3B0aW9ucyhsKX1iaW5kTWV0aG9kcygpe3RoaXMucmVmZXRjaD10aGlzLnJlZmV0Y2guYmluZCh0aGlzKX1vblN1YnNjcmliZSgpe3RoaXMubGlzdGVuZXJzLnNpemU9PT0xJiYoeSh0aGlzLHBlKS5hZGRPYnNlcnZlcih0aGlzKSx0aCh5KHRoaXMscGUpLHRoaXMub3B0aW9ucyk/bGUodGhpcyxTZSx0cykuY2FsbCh0aGlzKTp0aGlzLnVwZGF0ZVJlc3VsdCgpLGxlKHRoaXMsU2UsY3UpLmNhbGwodGhpcykpfW9uVW5zdWJzY3JpYmUoKXt0aGlzLmhhc0xpc3RlbmVycygpfHx0aGlzLmRlc3Ryb3koKX1zaG91bGRGZXRjaE9uUmVjb25uZWN0KCl7cmV0dXJuIHB1KHkodGhpcyxwZSksdGhpcy5vcHRpb25zLHRoaXMub3B0aW9ucy5yZWZldGNoT25SZWNvbm5lY3QpfXNob3VsZEZldGNoT25XaW5kb3dGb2N1cygpe3JldHVybiBwdSh5KHRoaXMscGUpLHRoaXMub3B0aW9ucyx0aGlzLm9wdGlvbnMucmVmZXRjaE9uV2luZG93Rm9jdXMpfWRlc3Ryb3koKXt0aGlzLmxpc3RlbmVycz1uZXcgU2V0LGxlKHRoaXMsU2UsZHUpLmNhbGwodGhpcyksbGUodGhpcyxTZSxmdSkuY2FsbCh0aGlzKSx5KHRoaXMscGUpLnJlbW92ZU9ic2VydmVyKHRoaXMpfXNldE9wdGlvbnMocyl7Y29uc3QgbD10aGlzLm9wdGlvbnMsdT15KHRoaXMscGUpO2lmKHRoaXMub3B0aW9ucz15KHRoaXMsYXQpLmRlZmF1bHRRdWVyeU9wdGlvbnMocyksdGhpcy5vcHRpb25zLmVuYWJsZWQhPT12b2lkIDAmJnR5cGVvZiB0aGlzLm9wdGlvbnMuZW5hYmxlZCE9ImJvb2xlYW4iJiZ0eXBlb2YgdGhpcy5vcHRpb25zLmVuYWJsZWQhPSJmdW5jdGlvbiImJnR5cGVvZiBMZSh0aGlzLm9wdGlvbnMuZW5hYmxlZCx5KHRoaXMscGUpKSE9ImJvb2xlYW4iKXRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgZW5hYmxlZCB0byBiZSBhIGJvb2xlYW4gb3IgYSBjYWxsYmFjayB0aGF0IHJldHVybnMgYSBib29sZWFuIik7bGUodGhpcyxTZSxodSkuY2FsbCh0aGlzKSx5KHRoaXMscGUpLnNldE9wdGlvbnModGhpcy5vcHRpb25zKSxsLl9kZWZhdWx0ZWQmJiFPbCh0aGlzLm9wdGlvbnMsbCkmJnkodGhpcyxhdCkuZ2V0UXVlcnlDYWNoZSgpLm5vdGlmeSh7dHlwZToib2JzZXJ2ZXJPcHRpb25zVXBkYXRlZCIscXVlcnk6eSh0aGlzLHBlKSxvYnNlcnZlcjp0aGlzfSk7Y29uc3QgYz10aGlzLmhhc0xpc3RlbmVycygpO2MmJm5oKHkodGhpcyxwZSksdSx0aGlzLm9wdGlvbnMsbCkmJmxlKHRoaXMsU2UsdHMpLmNhbGwodGhpcyksdGhpcy51cGRhdGVSZXN1bHQoKSxjJiYoeSh0aGlzLHBlKSE9PXV8fExlKHRoaXMub3B0aW9ucy5lbmFibGVkLHkodGhpcyxwZSkpIT09TGUobC5lbmFibGVkLHkodGhpcyxwZSkpfHxMZSh0aGlzLm9wdGlvbnMuc3RhbGVUaW1lLHkodGhpcyxwZSkpIT09TGUobC5zdGFsZVRpbWUseSh0aGlzLHBlKSkpJiZsZSh0aGlzLFNlLG91KS5jYWxsKHRoaXMpO2NvbnN0IGg9bGUodGhpcyxTZSxhdSkuY2FsbCh0aGlzKTtjJiYoeSh0aGlzLHBlKSE9PXV8fExlKHRoaXMub3B0aW9ucy5lbmFibGVkLHkodGhpcyxwZSkpIT09TGUobC5lbmFibGVkLHkodGhpcyxwZSkpfHxoIT09eSh0aGlzLFFuKSkmJmxlKHRoaXMsU2UsdXUpLmNhbGwodGhpcyxoKX1nZXRPcHRpbWlzdGljUmVzdWx0KHMpe2NvbnN0IGw9eSh0aGlzLGF0KS5nZXRRdWVyeUNhY2hlKCkuYnVpbGQoeSh0aGlzLGF0KSxzKSx1PXRoaXMuY3JlYXRlUmVzdWx0KGwscyk7cmV0dXJuIE9sKHRoaXMuZ2V0Q3VycmVudFJlc3VsdCgpLHUpfHwocSh0aGlzLHV0LHUpLHEodGhpcyxacix0aGlzLm9wdGlvbnMpLHEodGhpcyxwcix5KHRoaXMscGUpLnN0YXRlKSksdX1nZXRDdXJyZW50UmVzdWx0KCl7cmV0dXJuIHkodGhpcyx1dCl9dHJhY2tSZXN1bHQocyxsKXtyZXR1cm4gbmV3IFByb3h5KHMse2dldDoodSxjKT0+KHRoaXMudHJhY2tQcm9wKGMpLGw9PW51bGx8fGwoYyksUmVmbGVjdC5nZXQodSxjKSl9KX10cmFja1Byb3Aocyl7eSh0aGlzLG5pKS5hZGQocyl9Z2V0Q3VycmVudFF1ZXJ5KCl7cmV0dXJuIHkodGhpcyxwZSl9cmVmZXRjaCh7Li4uc309e30pe3JldHVybiB0aGlzLmZldGNoKHsuLi5zfSl9ZmV0Y2hPcHRpbWlzdGljKHMpe2NvbnN0IGw9eSh0aGlzLGF0KS5kZWZhdWx0UXVlcnlPcHRpb25zKHMpLHU9eSh0aGlzLGF0KS5nZXRRdWVyeUNhY2hlKCkuYnVpbGQoeSh0aGlzLGF0KSxsKTtsZXQgYz0oKT0+e30saDtjb25zdCBwPW5ldyBQcm9taXNlKG09PntoPW0sYz15KHRoaXMsYXQpLmdldFF1ZXJ5Q2FjaGUoKS5zdWJzY3JpYmUodj0+e3YudHlwZT09PSJ1cGRhdGVkIiYmdi5xdWVyeS5xdWVyeUhhc2g9PT11LnF1ZXJ5SGFzaCYmdS5zdGF0ZS5kYXRhIT09dm9pZCAwJiYoYygpLG0odGhpcy5jcmVhdGVSZXN1bHQodSxsKSkpfSl9KTtyZXR1cm4gUHJvbWlzZS5yYWNlKFt1LmZldGNoKCkudGhlbigoKT0+e2NvbnN0IG09dGhpcy5jcmVhdGVSZXN1bHQodSxsKTtyZXR1cm4gaD09bnVsbHx8aChtKSxtfSkuZmluYWxseSgoKT0+e2MoKX0pLHBdKX1mZXRjaChzKXtyZXR1cm4gbGUodGhpcyxTZSx0cykuY2FsbCh0aGlzLHsuLi5zLGNhbmNlbFJlZmV0Y2g6cy5jYW5jZWxSZWZldGNoPz8hMH0pLnRoZW4oKCk9Pih0aGlzLnVwZGF0ZVJlc3VsdCgpLHkodGhpcyx1dCkpKX1jcmVhdGVSZXN1bHQocyxsKXt2YXIgc2U7Y29uc3QgdT15KHRoaXMscGUpLGM9dGhpcy5vcHRpb25zLGg9eSh0aGlzLHV0KSxwPXkodGhpcyxwciksbT15KHRoaXMsWnIpLHY9cyE9PXU/cy5zdGF0ZTp5KHRoaXMsb3MpLHtzdGF0ZTpTfT1zO2xldCBDPXsuLi5TfSx4PSExLF87aWYobC5fb3B0aW1pc3RpY1Jlc3VsdHMpe2NvbnN0IGllPXRoaXMuaGFzTGlzdGVuZXJzKCksaGU9IWllJiZ0aChzLGwpLHVlPWllJiZuaChzLHUsbCxjKTsoaGV8fHVlKSYmKEM9ey4uLkMsLi4uSmgoUy5kYXRhLHMub3B0aW9ucyl9KSxsLl9vcHRpbWlzdGljUmVzdWx0cz09PSJpc1Jlc3RvcmluZyImJihDLmZldGNoU3RhdHVzPSJpZGxlIil9bGV0e2Vycm9yOkksZXJyb3JVcGRhdGVkQXQ6TyxzdGF0dXM6Rn09QztfPUMuZGF0YTtsZXQgTD0hMTtpZihsLnBsYWNlaG9sZGVyRGF0YSE9PXZvaWQgMCYmXz09PXZvaWQgMCYmRj09PSJwZW5kaW5nIil7bGV0IGllO2ghPW51bGwmJmguaXNQbGFjZWhvbGRlckRhdGEmJmwucGxhY2Vob2xkZXJEYXRhPT09KG09PW51bGw/dm9pZCAwOm0ucGxhY2Vob2xkZXJEYXRhKT8oaWU9aC5kYXRhLEw9ITApOmllPXR5cGVvZiBsLnBsYWNlaG9sZGVyRGF0YT09ImZ1bmN0aW9uIj9sLnBsYWNlaG9sZGVyRGF0YSgoc2U9eSh0aGlzLHRpKSk9PW51bGw/dm9pZCAwOnNlLnN0YXRlLmRhdGEseSh0aGlzLHRpKSk6bC5wbGFjZWhvbGRlckRhdGEsaWUhPT12b2lkIDAmJihGPSJzdWNjZXNzIixfPWl1KGg9PW51bGw/dm9pZCAwOmguZGF0YSxpZSxsKSx4PSEwKX1pZihsLnNlbGVjdCYmXyE9PXZvaWQgMCYmIUwpaWYoaCYmXz09PShwPT1udWxsP3ZvaWQgMDpwLmRhdGEpJiZsLnNlbGVjdD09PXkodGhpcyxhcykpXz15KHRoaXMsZWkpO2Vsc2UgdHJ5e3EodGhpcyxhcyxsLnNlbGVjdCksXz1sLnNlbGVjdChfKSxfPWl1KGg9PW51bGw/dm9pZCAwOmguZGF0YSxfLGwpLHEodGhpcyxlaSxfKSxxKHRoaXMscG4sbnVsbCl9Y2F0Y2goaWUpe3EodGhpcyxwbixpZSl9ZWxzZSBfPT09dm9pZCAwJiZxKHRoaXMscG4sbnVsbCk7eSh0aGlzLHBuKSYmKEk9eSh0aGlzLHBuKSxfPXkodGhpcyxlaSksTz1EYXRlLm5vdygpLEY9ImVycm9yIix4PSExKTtjb25zdCAkPUMuZmV0Y2hTdGF0dXM9PT0iZmV0Y2hpbmciLFE9Rj09PSJwZW5kaW5nIixIPUY9PT0iZXJyb3IiLEs9USYmJCxCPV8hPT12b2lkIDA7cmV0dXJue3N0YXR1czpGLGZldGNoU3RhdHVzOkMuZmV0Y2hTdGF0dXMsaXNQZW5kaW5nOlEsaXNTdWNjZXNzOkY9PT0ic3VjY2VzcyIsaXNFcnJvcjpILGlzSW5pdGlhbExvYWRpbmc6Syxpc0xvYWRpbmc6SyxkYXRhOl8sZGF0YVVwZGF0ZWRBdDpDLmRhdGFVcGRhdGVkQXQsZXJyb3I6SSxlcnJvclVwZGF0ZWRBdDpPLGZhaWx1cmVDb3VudDpDLmZldGNoRmFpbHVyZUNvdW50LGZhaWx1cmVSZWFzb246Qy5mZXRjaEZhaWx1cmVSZWFzb24sZXJyb3JVcGRhdGVDb3VudDpDLmVycm9yVXBkYXRlQ291bnQsaXNGZXRjaGVkOnMuaXNGZXRjaGVkKCksaXNGZXRjaGVkQWZ0ZXJNb3VudDpDLmRhdGFVcGRhdGVDb3VudD52LmRhdGFVcGRhdGVDb3VudHx8Qy5lcnJvclVwZGF0ZUNvdW50PnYuZXJyb3JVcGRhdGVDb3VudCxpc0ZldGNoaW5nOiQsaXNSZWZldGNoaW5nOiQmJiFRLGlzTG9hZGluZ0Vycm9yOkgmJiFCLGlzUGF1c2VkOkMuZmV0Y2hTdGF0dXM9PT0icGF1c2VkIixpc1BsYWNlaG9sZGVyRGF0YTp4LGlzUmVmZXRjaEVycm9yOkgmJkIsaXNTdGFsZTpEdShzLGwpLHJlZmV0Y2g6dGhpcy5yZWZldGNoLGlzRW5hYmxlZDpMZShsLmVuYWJsZWQscykhPT0hMX19dXBkYXRlUmVzdWx0KCl7Y29uc3Qgcz15KHRoaXMsdXQpLGw9dGhpcy5jcmVhdGVSZXN1bHQoeSh0aGlzLHBlKSx0aGlzLm9wdGlvbnMpO2lmKHEodGhpcyxwcix5KHRoaXMscGUpLnN0YXRlKSxxKHRoaXMsWnIsdGhpcy5vcHRpb25zKSx5KHRoaXMscHIpLmRhdGEhPT12b2lkIDAmJnEodGhpcyx0aSx5KHRoaXMscGUpKSxPbChsLHMpKXJldHVybjtxKHRoaXMsdXQsbCk7Y29uc3QgYz0oKCk9PntpZighcylyZXR1cm4hMDtjb25zdHtub3RpZnlPbkNoYW5nZVByb3BzOmh9PXRoaXMub3B0aW9ucyxwPXR5cGVvZiBoPT0iZnVuY3Rpb24iP2goKTpoO2lmKHA9PT0iYWxsInx8IXAmJiF5KHRoaXMsbmkpLnNpemUpcmV0dXJuITA7Y29uc3QgbT1uZXcgU2V0KHA/P3kodGhpcyxuaSkpO3JldHVybiB0aGlzLm9wdGlvbnMudGhyb3dPbkVycm9yJiZtLmFkZCgiZXJyb3IiKSxPYmplY3Qua2V5cyh5KHRoaXMsdXQpKS5zb21lKHY9Pntjb25zdCBTPXY7cmV0dXJuIHkodGhpcyx1dClbU10hPT1zW1NdJiZtLmhhcyhTKX0pfSkoKTtXZS5iYXRjaCgoKT0+e2MmJnRoaXMubGlzdGVuZXJzLmZvckVhY2goaD0+e2goeSh0aGlzLHV0KSl9KSx5KHRoaXMsYXQpLmdldFF1ZXJ5Q2FjaGUoKS5ub3RpZnkoe3F1ZXJ5OnkodGhpcyxwZSksdHlwZToib2JzZXJ2ZXJSZXN1bHRzVXBkYXRlZCJ9KX0pfW9uUXVlcnlVcGRhdGUoKXt0aGlzLnVwZGF0ZVJlc3VsdCgpLHRoaXMuaGFzTGlzdGVuZXJzKCkmJmxlKHRoaXMsU2UsY3UpLmNhbGwodGhpcyl9fSxhdD1uZXcgV2Vha01hcCxwZT1uZXcgV2Vha01hcCxvcz1uZXcgV2Vha01hcCx1dD1uZXcgV2Vha01hcCxwcj1uZXcgV2Vha01hcCxacj1uZXcgV2Vha01hcCxwbj1uZXcgV2Vha01hcCxhcz1uZXcgV2Vha01hcCxlaT1uZXcgV2Vha01hcCx0aT1uZXcgV2Vha01hcCxtcj1uZXcgV2Vha01hcCxncj1uZXcgV2Vha01hcCxRbj1uZXcgV2Vha01hcCxuaT1uZXcgV2Vha01hcCxTZT1uZXcgV2Vha1NldCx0cz1mdW5jdGlvbihzKXtsZSh0aGlzLFNlLGh1KS5jYWxsKHRoaXMpO2xldCBsPXkodGhpcyxwZSkuZmV0Y2godGhpcy5vcHRpb25zLHMpO3JldHVybiBzIT1udWxsJiZzLnRocm93T25FcnJvcnx8KGw9bC5jYXRjaChjdCkpLGx9LGx1PWZ1bmN0aW9uKHMpe3JldHVybiFGdSgpJiZMZSh0aGlzLm9wdGlvbnMuZW5hYmxlZCx5KHRoaXMscGUpKSE9PSExJiZRaChzKX0sb3U9ZnVuY3Rpb24oKXtsZSh0aGlzLFNlLGR1KS5jYWxsKHRoaXMpO2NvbnN0IHM9TGUodGhpcy5vcHRpb25zLnN0YWxlVGltZSx5KHRoaXMscGUpKTtpZih5KHRoaXMsdXQpLmlzU3RhbGV8fCFsZSh0aGlzLFNlLGx1KS5jYWxsKHRoaXMscykpcmV0dXJuO2NvbnN0IGw9cWgoeSh0aGlzLHV0KS5kYXRhVXBkYXRlZEF0LHMpKzE7cSh0aGlzLG1yLGFyLnNldFRpbWVvdXQoKCk9Pnt5KHRoaXMsdXQpLmlzU3RhbGV8fHRoaXMudXBkYXRlUmVzdWx0KCl9LGwpKX0sYXU9ZnVuY3Rpb24oKXtyZXR1cm4gTGUodGhpcy5vcHRpb25zLnJlZmV0Y2hJbnRlcnZhbCx5KHRoaXMscGUpKT8/ITF9LHV1PWZ1bmN0aW9uKHMpe2xlKHRoaXMsU2UsZnUpLmNhbGwodGhpcykscSh0aGlzLFFuLHMpLCEoeSh0aGlzLFFuKT09PTB8fCFsZSh0aGlzLFNlLGx1KS5jYWxsKHRoaXMseSh0aGlzLFFuKSkpJiZxKHRoaXMsZ3IsYXIuc2V0SW50ZXJ2YWwoKCk9PnsodGhpcy5vcHRpb25zLnJlZmV0Y2hJbnRlcnZhbEluQmFja2dyb3VuZHx8T3UuaXNGb2N1c2VkKCkpJiZsZSh0aGlzLFNlLHRzKS5jYWxsKHRoaXMpfSx5KHRoaXMsUW4pKSl9LGN1PWZ1bmN0aW9uKCl7bGUodGhpcyxTZSxvdSkuY2FsbCh0aGlzKSxsZSh0aGlzLFNlLHV1KS5jYWxsKHRoaXMsbGUodGhpcyxTZSxhdSkuY2FsbCh0aGlzKSl9LGR1PWZ1bmN0aW9uKCl7eSh0aGlzLG1yKSE9PXZvaWQgMCYmKGFyLmNsZWFyVGltZW91dCh5KHRoaXMsbXIpKSxxKHRoaXMsbXIsdm9pZCAwKSl9LGZ1PWZ1bmN0aW9uKCl7eSh0aGlzLGdyKSE9PXZvaWQgMCYmKGFyLmNsZWFySW50ZXJ2YWwoeSh0aGlzLGdyKSkscSh0aGlzLGdyLHZvaWQgMCkpfSxodT1mdW5jdGlvbigpe2NvbnN0IHM9eSh0aGlzLGF0KS5nZXRRdWVyeUNhY2hlKCkuYnVpbGQoeSh0aGlzLGF0KSx0aGlzLm9wdGlvbnMpO2lmKHM9PT15KHRoaXMscGUpKXJldHVybjtjb25zdCBsPXkodGhpcyxwZSk7cSh0aGlzLHBlLHMpLHEodGhpcyxvcyxzLnN0YXRlKSx0aGlzLmhhc0xpc3RlbmVycygpJiYobD09bnVsbHx8bC5yZW1vdmVPYnNlcnZlcih0aGlzKSxzLmFkZE9ic2VydmVyKHRoaXMpKX0scGgpO2Z1bmN0aW9uIGt5KHIscyl7cmV0dXJuIExlKHMuZW5hYmxlZCxyKSE9PSExJiZyLnN0YXRlLmRhdGE9PT12b2lkIDAmJiEoci5zdGF0ZS5zdGF0dXM9PT0iZXJyb3IiJiZMZShzLnJldHJ5T25Nb3VudCxyKT09PSExKX1mdW5jdGlvbiB0aChyLHMpe3JldHVybiBreShyLHMpfHxyLnN0YXRlLmRhdGEhPT12b2lkIDAmJnB1KHIscyxzLnJlZmV0Y2hPbk1vdW50KX1mdW5jdGlvbiBwdShyLHMsbCl7aWYoTGUocy5lbmFibGVkLHIpIT09ITEmJkxlKHMuc3RhbGVUaW1lLHIpIT09InN0YXRpYyIpe2NvbnN0IHU9TGUobCxyKTtyZXR1cm4gdT09PSJhbHdheXMifHx1IT09ITEmJkR1KHIscyl9cmV0dXJuITF9ZnVuY3Rpb24gbmgocixzLGwsdSl7cmV0dXJuKHIhPT1zfHxMZSh1LmVuYWJsZWQscik9PT0hMSkmJighbC5zdXNwZW5zZXx8ci5zdGF0ZS5zdGF0dXMhPT0iZXJyb3IiKSYmRHUocixsKX1mdW5jdGlvbiBEdShyLHMpe3JldHVybiBMZShzLmVuYWJsZWQscikhPT0hMSYmci5pc1N0YWxlQnlUaW1lKExlKHMuc3RhbGVUaW1lLHIpKX12YXIgdXMsWnQsbnQsdnIsZW4sJG4sbWgsQ3k9KG1oPWNsYXNzIGV4dGVuZHMgR2h7Y29uc3RydWN0b3Iocyl7c3VwZXIoKTtaKHRoaXMsZW4pO1oodGhpcyx1cyk7Wih0aGlzLFp0KTtaKHRoaXMsbnQpO1oodGhpcyx2cik7cSh0aGlzLHVzLHMuY2xpZW50KSx0aGlzLm11dGF0aW9uSWQ9cy5tdXRhdGlvbklkLHEodGhpcyxudCxzLm11dGF0aW9uQ2FjaGUpLHEodGhpcyxadCxbXSksdGhpcy5zdGF0ZT1zLnN0YXRlfHxZaCgpLHRoaXMuc2V0T3B0aW9ucyhzLm9wdGlvbnMpLHRoaXMuc2NoZWR1bGVHYygpfXNldE9wdGlvbnMocyl7dGhpcy5vcHRpb25zPXMsdGhpcy51cGRhdGVHY1RpbWUodGhpcy5vcHRpb25zLmdjVGltZSl9Z2V0IG1ldGEoKXtyZXR1cm4gdGhpcy5vcHRpb25zLm1ldGF9YWRkT2JzZXJ2ZXIocyl7eSh0aGlzLFp0KS5pbmNsdWRlcyhzKXx8KHkodGhpcyxadCkucHVzaChzKSx0aGlzLmNsZWFyR2NUaW1lb3V0KCkseSh0aGlzLG50KS5ub3RpZnkoe3R5cGU6Im9ic2VydmVyQWRkZWQiLG11dGF0aW9uOnRoaXMsb2JzZXJ2ZXI6c30pKX1yZW1vdmVPYnNlcnZlcihzKXtxKHRoaXMsWnQseSh0aGlzLFp0KS5maWx0ZXIobD0+bCE9PXMpKSx0aGlzLnNjaGVkdWxlR2MoKSx5KHRoaXMsbnQpLm5vdGlmeSh7dHlwZToib2JzZXJ2ZXJSZW1vdmVkIixtdXRhdGlvbjp0aGlzLG9ic2VydmVyOnN9KX1vcHRpb25hbFJlbW92ZSgpe3kodGhpcyxadCkubGVuZ3RofHwodGhpcy5zdGF0ZS5zdGF0dXM9PT0icGVuZGluZyI/dGhpcy5zY2hlZHVsZUdjKCk6eSh0aGlzLG50KS5yZW1vdmUodGhpcykpfWNvbnRpbnVlKCl7dmFyIHM7cmV0dXJuKChzPXkodGhpcyx2cikpPT1udWxsP3ZvaWQgMDpzLmNvbnRpbnVlKCkpPz8odGhpcy5zdGF0ZS5zdGF0dXM9PT0icGVuZGluZyI/dGhpcy5leGVjdXRlKHRoaXMuc3RhdGUudmFyaWFibGVzKTpQcm9taXNlLnJlc29sdmUoKSl9YXN5bmMgZXhlY3V0ZShzKXt2YXIgbSx2LFMsQyx4LF8sSSxPLEYsTCwkLFEsSCxLLEIsc2UsaWUsaGU7Y29uc3QgbD0oKT0+e2xlKHRoaXMsZW4sJG4pLmNhbGwodGhpcyx7dHlwZToiY29udGludWUifSl9LHU9e2NsaWVudDp5KHRoaXMsdXMpLG1ldGE6dGhpcy5vcHRpb25zLm1ldGEsbXV0YXRpb25LZXk6dGhpcy5vcHRpb25zLm11dGF0aW9uS2V5fSxjPXEodGhpcyx2cixLaCh7Zm46KCk9PnRoaXMub3B0aW9ucy5tdXRhdGlvbkZuP3RoaXMub3B0aW9ucy5tdXRhdGlvbkZuKHMsdSk6UHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCJObyBtdXRhdGlvbkZuIGZvdW5kIikpLG9uRmFpbDoodWUsZ2UpPT57bGUodGhpcyxlbiwkbikuY2FsbCh0aGlzLHt0eXBlOiJmYWlsZWQiLGZhaWx1cmVDb3VudDp1ZSxlcnJvcjpnZX0pfSxvblBhdXNlOigpPT57bGUodGhpcyxlbiwkbikuY2FsbCh0aGlzLHt0eXBlOiJwYXVzZSJ9KX0sb25Db250aW51ZTpsLHJldHJ5OnRoaXMub3B0aW9ucy5yZXRyeT8/MCxyZXRyeURlbGF5OnRoaXMub3B0aW9ucy5yZXRyeURlbGF5LG5ldHdvcmtNb2RlOnRoaXMub3B0aW9ucy5uZXR3b3JrTW9kZSxjYW5SdW46KCk9PnkodGhpcyxudCkuY2FuUnVuKHRoaXMpfSkpLGg9dGhpcy5zdGF0ZS5zdGF0dXM9PT0icGVuZGluZyIscD0hYy5jYW5TdGFydCgpO3RyeXtpZihoKWwoKTtlbHNle2xlKHRoaXMsZW4sJG4pLmNhbGwodGhpcyx7dHlwZToicGVuZGluZyIsdmFyaWFibGVzOnMsaXNQYXVzZWQ6cH0pLHkodGhpcyxudCkuY29uZmlnLm9uTXV0YXRlJiZhd2FpdCB5KHRoaXMsbnQpLmNvbmZpZy5vbk11dGF0ZShzLHRoaXMsdSk7Y29uc3QgZ2U9YXdhaXQoKHY9KG09dGhpcy5vcHRpb25zKS5vbk11dGF0ZSk9PW51bGw/dm9pZCAwOnYuY2FsbChtLHMsdSkpO2dlIT09dGhpcy5zdGF0ZS5jb250ZXh0JiZsZSh0aGlzLGVuLCRuKS5jYWxsKHRoaXMse3R5cGU6InBlbmRpbmciLGNvbnRleHQ6Z2UsdmFyaWFibGVzOnMsaXNQYXVzZWQ6cH0pfWNvbnN0IHVlPWF3YWl0IGMuc3RhcnQoKTtyZXR1cm4gYXdhaXQoKEM9KFM9eSh0aGlzLG50KS5jb25maWcpLm9uU3VjY2Vzcyk9PW51bGw/dm9pZCAwOkMuY2FsbChTLHVlLHMsdGhpcy5zdGF0ZS5jb250ZXh0LHRoaXMsdSkpLGF3YWl0KChfPSh4PXRoaXMub3B0aW9ucykub25TdWNjZXNzKT09bnVsbD92b2lkIDA6Xy5jYWxsKHgsdWUscyx0aGlzLnN0YXRlLmNvbnRleHQsdSkpLGF3YWl0KChPPShJPXkodGhpcyxudCkuY29uZmlnKS5vblNldHRsZWQpPT1udWxsP3ZvaWQgMDpPLmNhbGwoSSx1ZSxudWxsLHRoaXMuc3RhdGUudmFyaWFibGVzLHRoaXMuc3RhdGUuY29udGV4dCx0aGlzLHUpKSxhd2FpdCgoTD0oRj10aGlzLm9wdGlvbnMpLm9uU2V0dGxlZCk9PW51bGw/dm9pZCAwOkwuY2FsbChGLHVlLG51bGwscyx0aGlzLnN0YXRlLmNvbnRleHQsdSkpLGxlKHRoaXMsZW4sJG4pLmNhbGwodGhpcyx7dHlwZToic3VjY2VzcyIsZGF0YTp1ZX0pLHVlfWNhdGNoKHVlKXt0cnl7YXdhaXQoKFE9KCQ9eSh0aGlzLG50KS5jb25maWcpLm9uRXJyb3IpPT1udWxsP3ZvaWQgMDpRLmNhbGwoJCx1ZSxzLHRoaXMuc3RhdGUuY29udGV4dCx0aGlzLHUpKX1jYXRjaChnZSl7UHJvbWlzZS5yZWplY3QoZ2UpfXRyeXthd2FpdCgoSz0oSD10aGlzLm9wdGlvbnMpLm9uRXJyb3IpPT1udWxsP3ZvaWQgMDpLLmNhbGwoSCx1ZSxzLHRoaXMuc3RhdGUuY29udGV4dCx1KSl9Y2F0Y2goZ2Upe1Byb21pc2UucmVqZWN0KGdlKX10cnl7YXdhaXQoKHNlPShCPXkodGhpcyxudCkuY29uZmlnKS5vblNldHRsZWQpPT1udWxsP3ZvaWQgMDpzZS5jYWxsKEIsdm9pZCAwLHVlLHRoaXMuc3RhdGUudmFyaWFibGVzLHRoaXMuc3RhdGUuY29udGV4dCx0aGlzLHUpKX1jYXRjaChnZSl7UHJvbWlzZS5yZWplY3QoZ2UpfXRyeXthd2FpdCgoaGU9KGllPXRoaXMub3B0aW9ucykub25TZXR0bGVkKT09bnVsbD92b2lkIDA6aGUuY2FsbChpZSx2b2lkIDAsdWUscyx0aGlzLnN0YXRlLmNvbnRleHQsdSkpfWNhdGNoKGdlKXtQcm9taXNlLnJlamVjdChnZSl9dGhyb3cgbGUodGhpcyxlbiwkbikuY2FsbCh0aGlzLHt0eXBlOiJlcnJvciIsZXJyb3I6dWV9KSx1ZX1maW5hbGx5e3kodGhpcyx2cik9PT1jJiZxKHRoaXMsdnIsdm9pZCAwKSx5KHRoaXMsbnQpLnJ1bk5leHQodGhpcyl9fX0sdXM9bmV3IFdlYWtNYXAsWnQ9bmV3IFdlYWtNYXAsbnQ9bmV3IFdlYWtNYXAsdnI9bmV3IFdlYWtNYXAsZW49bmV3IFdlYWtTZXQsJG49ZnVuY3Rpb24ocyl7Y29uc3QgbD11PT57c3dpdGNoKHMudHlwZSl7Y2FzZSJmYWlsZWQiOnJldHVybnsuLi51LGZhaWx1cmVDb3VudDpzLmZhaWx1cmVDb3VudCxmYWlsdXJlUmVhc29uOnMuZXJyb3J9O2Nhc2UicGF1c2UiOnJldHVybnsuLi51LGlzUGF1c2VkOiEwfTtjYXNlImNvbnRpbnVlIjpyZXR1cm57Li4udSxpc1BhdXNlZDohMX07Y2FzZSJwZW5kaW5nIjpyZXR1cm57Li4udSxjb250ZXh0OnMuY29udGV4dCxkYXRhOnZvaWQgMCxmYWlsdXJlQ291bnQ6MCxmYWlsdXJlUmVhc29uOm51bGwsZXJyb3I6bnVsbCxpc1BhdXNlZDpzLmlzUGF1c2VkLHN0YXR1czoicGVuZGluZyIsdmFyaWFibGVzOnMudmFyaWFibGVzLHN1Ym1pdHRlZEF0OkRhdGUubm93KCl9O2Nhc2Uic3VjY2VzcyI6cmV0dXJuey4uLnUsZGF0YTpzLmRhdGEsZmFpbHVyZUNvdW50OjAsZmFpbHVyZVJlYXNvbjpudWxsLGVycm9yOm51bGwsc3RhdHVzOiJzdWNjZXNzIixpc1BhdXNlZDohMX07Y2FzZSJlcnJvciI6cmV0dXJuey4uLnUsZGF0YTp2b2lkIDAsZXJyb3I6cy5lcnJvcixmYWlsdXJlQ291bnQ6dS5mYWlsdXJlQ291bnQrMSxmYWlsdXJlUmVhc29uOnMuZXJyb3IsaXNQYXVzZWQ6ITEsc3RhdHVzOiJlcnJvciJ9fX07dGhpcy5zdGF0ZT1sKHRoaXMuc3RhdGUpLFdlLmJhdGNoKCgpPT57eSh0aGlzLFp0KS5mb3JFYWNoKHU9Pnt1Lm9uTXV0YXRpb25VcGRhdGUocyl9KSx5KHRoaXMsbnQpLm5vdGlmeSh7bXV0YXRpb246dGhpcyx0eXBlOiJ1cGRhdGVkIixhY3Rpb246c30pfSl9LG1oKTtmdW5jdGlvbiBZaCgpe3JldHVybntjb250ZXh0OnZvaWQgMCxkYXRhOnZvaWQgMCxlcnJvcjpudWxsLGZhaWx1cmVDb3VudDowLGZhaWx1cmVSZWFzb246bnVsbCxpc1BhdXNlZDohMSxzdGF0dXM6ImlkbGUiLHZhcmlhYmxlczp2b2lkIDAsc3VibWl0dGVkQXQ6MH19dmFyIG1uLHF0LGNzLGdoLEV5PShnaD1jbGFzcyBleHRlbmRzIGZpe2NvbnN0cnVjdG9yKHM9e30pe3N1cGVyKCk7Wih0aGlzLG1uKTtaKHRoaXMscXQpO1oodGhpcyxjcyk7dGhpcy5jb25maWc9cyxxKHRoaXMsbW4sbmV3IFNldCkscSh0aGlzLHF0LG5ldyBNYXApLHEodGhpcyxjcywwKX1idWlsZChzLGwsdSl7Y29uc3QgYz1uZXcgQ3koe2NsaWVudDpzLG11dGF0aW9uQ2FjaGU6dGhpcyxtdXRhdGlvbklkOisrUmwodGhpcyxjcykuXyxvcHRpb25zOnMuZGVmYXVsdE11dGF0aW9uT3B0aW9ucyhsKSxzdGF0ZTp1fSk7cmV0dXJuIHRoaXMuYWRkKGMpLGN9YWRkKHMpe3kodGhpcyxtbikuYWRkKHMpO2NvbnN0IGw9VGwocyk7aWYodHlwZW9mIGw9PSJzdHJpbmciKXtjb25zdCB1PXkodGhpcyxxdCkuZ2V0KGwpO3U/dS5wdXNoKHMpOnkodGhpcyxxdCkuc2V0KGwsW3NdKX10aGlzLm5vdGlmeSh7dHlwZToiYWRkZWQiLG11dGF0aW9uOnN9KX1yZW1vdmUocyl7aWYoeSh0aGlzLG1uKS5kZWxldGUocykpe2NvbnN0IGw9VGwocyk7aWYodHlwZW9mIGw9PSJzdHJpbmciKXtjb25zdCB1PXkodGhpcyxxdCkuZ2V0KGwpO2lmKHUpaWYodS5sZW5ndGg+MSl7Y29uc3QgYz11LmluZGV4T2Yocyk7YyE9PS0xJiZ1LnNwbGljZShjLDEpfWVsc2UgdVswXT09PXMmJnkodGhpcyxxdCkuZGVsZXRlKGwpfX10aGlzLm5vdGlmeSh7dHlwZToicmVtb3ZlZCIsbXV0YXRpb246c30pfWNhblJ1bihzKXt2YXIgdTtjb25zdCBsPVRsKHMpO2lmKHR5cGVvZiBsPT0ic3RyaW5nIil7Y29uc3QgYz0odT15KHRoaXMscXQpLmdldChsKSk9PW51bGw/dm9pZCAwOnUuZmluZChoPT5oLnN0YXRlLnN0YXR1cz09PSJwZW5kaW5nIik7cmV0dXJuIWN8fGM9PT1zfWVsc2UgcmV0dXJuITB9cnVuTmV4dChzKXt2YXIgdSxjO2NvbnN0IGw9VGwocyk7cmV0dXJuIHR5cGVvZiBsPT0ic3RyaW5nIj8oKGM9KHU9eSh0aGlzLHF0KS5nZXQobCkpPT1udWxsP3ZvaWQgMDp1LmZpbmQoaD0+aCE9PXMmJmguc3RhdGUuaXNQYXVzZWQpKT09bnVsbD92b2lkIDA6Yy5jb250aW51ZSgpKT8/UHJvbWlzZS5yZXNvbHZlKCk6UHJvbWlzZS5yZXNvbHZlKCl9Y2xlYXIoKXtXZS5iYXRjaCgoKT0+e3kodGhpcyxtbikuZm9yRWFjaChzPT57dGhpcy5ub3RpZnkoe3R5cGU6InJlbW92ZWQiLG11dGF0aW9uOnN9KX0pLHkodGhpcyxtbikuY2xlYXIoKSx5KHRoaXMscXQpLmNsZWFyKCl9KX1nZXRBbGwoKXtyZXR1cm4gQXJyYXkuZnJvbSh5KHRoaXMsbW4pKX1maW5kKHMpe2NvbnN0IGw9e2V4YWN0OiEwLC4uLnN9O3JldHVybiB0aGlzLmdldEFsbCgpLmZpbmQodT0+R2YobCx1KSl9ZmluZEFsbChzPXt9KXtyZXR1cm4gdGhpcy5nZXRBbGwoKS5maWx0ZXIobD0+R2YocyxsKSl9bm90aWZ5KHMpe1dlLmJhdGNoKCgpPT57dGhpcy5saXN0ZW5lcnMuZm9yRWFjaChsPT57bChzKX0pfSl9cmVzdW1lUGF1c2VkTXV0YXRpb25zKCl7Y29uc3Qgcz10aGlzLmdldEFsbCgpLmZpbHRlcihsPT5sLnN0YXRlLmlzUGF1c2VkKTtyZXR1cm4gV2UuYmF0Y2goKCk9PlByb21pc2UuYWxsKHMubWFwKGw9PmwuY29udGludWUoKS5jYXRjaChjdCkpKSl9fSxtbj1uZXcgV2Vha01hcCxxdD1uZXcgV2Vha01hcCxjcz1uZXcgV2Vha01hcCxnaCk7ZnVuY3Rpb24gVGwocil7dmFyIHM7cmV0dXJuKHM9ci5vcHRpb25zLnNjb3BlKT09bnVsbD92b2lkIDA6cy5pZH12YXIgZ24scW4scnQsdm4sbm4sbnMsbXUsdmgsank9KHZoPWNsYXNzIGV4dGVuZHMgZml7Y29uc3RydWN0b3IobCx1KXtzdXBlcigpO1oodGhpcyxubik7Wih0aGlzLGduKTtaKHRoaXMscW4pO1oodGhpcyxydCk7Wih0aGlzLHZuKTtxKHRoaXMsZ24sbCksdGhpcy5zZXRPcHRpb25zKHUpLHRoaXMuYmluZE1ldGhvZHMoKSxsZSh0aGlzLG5uLG5zKS5jYWxsKHRoaXMpfWJpbmRNZXRob2RzKCl7dGhpcy5tdXRhdGU9dGhpcy5tdXRhdGUuYmluZCh0aGlzKSx0aGlzLnJlc2V0PXRoaXMucmVzZXQuYmluZCh0aGlzKX1zZXRPcHRpb25zKGwpe3ZhciBjO2NvbnN0IHU9dGhpcy5vcHRpb25zO3RoaXMub3B0aW9ucz15KHRoaXMsZ24pLmRlZmF1bHRNdXRhdGlvbk9wdGlvbnMobCksT2wodGhpcy5vcHRpb25zLHUpfHx5KHRoaXMsZ24pLmdldE11dGF0aW9uQ2FjaGUoKS5ub3RpZnkoe3R5cGU6Im9ic2VydmVyT3B0aW9uc1VwZGF0ZWQiLG11dGF0aW9uOnkodGhpcyxydCksb2JzZXJ2ZXI6dGhpc30pLHUhPW51bGwmJnUubXV0YXRpb25LZXkmJnRoaXMub3B0aW9ucy5tdXRhdGlvbktleSYmd3IodS5tdXRhdGlvbktleSkhPT13cih0aGlzLm9wdGlvbnMubXV0YXRpb25LZXkpP3RoaXMucmVzZXQoKTooKGM9eSh0aGlzLHJ0KSk9PW51bGw/dm9pZCAwOmMuc3RhdGUuc3RhdHVzKT09PSJwZW5kaW5nIiYmeSh0aGlzLHJ0KS5zZXRPcHRpb25zKHRoaXMub3B0aW9ucyl9b25TdWJzY3JpYmUoKXt0aGlzLmxpc3RlbmVycy5zaXplPT09MSYmeSh0aGlzLHJ0KSYmKHkodGhpcyxydCkuYWRkT2JzZXJ2ZXIodGhpcyksbGUodGhpcyxubixucykuY2FsbCh0aGlzKSl9b25VbnN1YnNjcmliZSgpe3ZhciBsO3RoaXMuaGFzTGlzdGVuZXJzKCl8fChsPXkodGhpcyxydCkpPT1udWxsfHxsLnJlbW92ZU9ic2VydmVyKHRoaXMpfW9uTXV0YXRpb25VcGRhdGUobCl7bGUodGhpcyxubixucykuY2FsbCh0aGlzKSxsZSh0aGlzLG5uLG11KS5jYWxsKHRoaXMsbCl9Z2V0Q3VycmVudFJlc3VsdCgpe3JldHVybiB5KHRoaXMscW4pfXJlc2V0KCl7dmFyIGw7KGw9eSh0aGlzLHJ0KSk9PW51bGx8fGwucmVtb3ZlT2JzZXJ2ZXIodGhpcykscSh0aGlzLHJ0LHZvaWQgMCksbGUodGhpcyxubixucykuY2FsbCh0aGlzKSxsZSh0aGlzLG5uLG11KS5jYWxsKHRoaXMpfW11dGF0ZShsLHUpe3ZhciBjO3JldHVybiBxKHRoaXMsdm4sdSksKGM9eSh0aGlzLHJ0KSk9PW51bGx8fGMucmVtb3ZlT2JzZXJ2ZXIodGhpcykscSh0aGlzLHJ0LHkodGhpcyxnbikuZ2V0TXV0YXRpb25DYWNoZSgpLmJ1aWxkKHkodGhpcyxnbiksdGhpcy5vcHRpb25zKSkseSh0aGlzLHJ0KS5hZGRPYnNlcnZlcih0aGlzKSx5KHRoaXMscnQpLmV4ZWN1dGUobCl9fSxnbj1uZXcgV2Vha01hcCxxbj1uZXcgV2Vha01hcCxydD1uZXcgV2Vha01hcCx2bj1uZXcgV2Vha01hcCxubj1uZXcgV2Vha1NldCxucz1mdW5jdGlvbigpe3ZhciB1O2NvbnN0IGw9KCh1PXkodGhpcyxydCkpPT1udWxsP3ZvaWQgMDp1LnN0YXRlKT8/WWgoKTtxKHRoaXMscW4sey4uLmwsaXNQZW5kaW5nOmwuc3RhdHVzPT09InBlbmRpbmciLGlzU3VjY2VzczpsLnN0YXR1cz09PSJzdWNjZXNzIixpc0Vycm9yOmwuc3RhdHVzPT09ImVycm9yIixpc0lkbGU6bC5zdGF0dXM9PT0iaWRsZSIsbXV0YXRlOnRoaXMubXV0YXRlLHJlc2V0OnRoaXMucmVzZXR9KX0sbXU9ZnVuY3Rpb24obCl7V2UuYmF0Y2goKCk9Pnt2YXIgdSxjLGgscCxtLHYsUyxDO2lmKHkodGhpcyx2bikmJnRoaXMuaGFzTGlzdGVuZXJzKCkpe2NvbnN0IHg9eSh0aGlzLHFuKS52YXJpYWJsZXMsXz15KHRoaXMscW4pLmNvbnRleHQsST17Y2xpZW50OnkodGhpcyxnbiksbWV0YTp0aGlzLm9wdGlvbnMubWV0YSxtdXRhdGlvbktleTp0aGlzLm9wdGlvbnMubXV0YXRpb25LZXl9O2lmKChsPT1udWxsP3ZvaWQgMDpsLnR5cGUpPT09InN1Y2Nlc3MiKXt0cnl7KGM9KHU9eSh0aGlzLHZuKSkub25TdWNjZXNzKT09bnVsbHx8Yy5jYWxsKHUsbC5kYXRhLHgsXyxJKX1jYXRjaChPKXtQcm9taXNlLnJlamVjdChPKX10cnl7KHA9KGg9eSh0aGlzLHZuKSkub25TZXR0bGVkKT09bnVsbHx8cC5jYWxsKGgsbC5kYXRhLG51bGwseCxfLEkpfWNhdGNoKE8pe1Byb21pc2UucmVqZWN0KE8pfX1lbHNlIGlmKChsPT1udWxsP3ZvaWQgMDpsLnR5cGUpPT09ImVycm9yIil7dHJ5eyh2PShtPXkodGhpcyx2bikpLm9uRXJyb3IpPT1udWxsfHx2LmNhbGwobSxsLmVycm9yLHgsXyxJKX1jYXRjaChPKXtQcm9taXNlLnJlamVjdChPKX10cnl7KEM9KFM9eSh0aGlzLHZuKSkub25TZXR0bGVkKT09bnVsbHx8Qy5jYWxsKFMsdm9pZCAwLGwuZXJyb3IseCxfLEkpfWNhdGNoKE8pe1Byb21pc2UucmVqZWN0KE8pfX19dGhpcy5saXN0ZW5lcnMuZm9yRWFjaCh4PT57eCh5KHRoaXMscW4pKX0pfSl9LHZoKSx0bix5aCxOeT0oeWg9Y2xhc3MgZXh0ZW5kcyBmaXtjb25zdHJ1Y3RvcihzPXt9KXtzdXBlcigpO1oodGhpcyx0bik7dGhpcy5jb25maWc9cyxxKHRoaXMsdG4sbmV3IE1hcCl9YnVpbGQocyxsLHUpe2NvbnN0IGM9bC5xdWVyeUtleSxoPWwucXVlcnlIYXNoPz9fdShjLGwpO2xldCBwPXRoaXMuZ2V0KGgpO3JldHVybiBwfHwocD1uZXcgd3koe2NsaWVudDpzLHF1ZXJ5S2V5OmMscXVlcnlIYXNoOmgsb3B0aW9uczpzLmRlZmF1bHRRdWVyeU9wdGlvbnMobCksc3RhdGU6dSxkZWZhdWx0T3B0aW9uczpzLmdldFF1ZXJ5RGVmYXVsdHMoYyl9KSx0aGlzLmFkZChwKSkscH1hZGQocyl7eSh0aGlzLHRuKS5oYXMocy5xdWVyeUhhc2gpfHwoeSh0aGlzLHRuKS5zZXQocy5xdWVyeUhhc2gscyksdGhpcy5ub3RpZnkoe3R5cGU6ImFkZGVkIixxdWVyeTpzfSkpfXJlbW92ZShzKXt5KHRoaXMsdG4pLmdldChzLnF1ZXJ5SGFzaCk9PT1zJiYocy5kZXN0cm95KCkseSh0aGlzLHRuKS5kZWxldGUocy5xdWVyeUhhc2gpLHRoaXMubm90aWZ5KHt0eXBlOiJyZW1vdmVkIixxdWVyeTpzfSkpfWNsZWFyKCl7V2UuYmF0Y2goKCk9Pnt0aGlzLmdldEFsbCgpLmZvckVhY2gocz0+e3RoaXMucmVtb3ZlKHMpfSl9KX1nZXQocyl7cmV0dXJuIHkodGhpcyx0bikuZ2V0KHMpfWdldEFsbCgpe3JldHVyblsuLi55KHRoaXMsdG4pLnZhbHVlcygpXX1maW5kKHMpe2NvbnN0IGw9e2V4YWN0OiEwLC4uLnN9O3JldHVybiB0aGlzLmdldEFsbCgpLmZpbmQodT0+S2YobCx1KSl9ZmluZEFsbChzPXt9KXtjb25zdCBsPXRoaXMuZ2V0QWxsKCk7cmV0dXJuIE9iamVjdC5rZXlzKHMpLmxlbmd0aD4wP2wuZmlsdGVyKHU9PktmKHMsdSkpOmx9bm90aWZ5KHMpe1dlLmJhdGNoKCgpPT57dGhpcy5saXN0ZW5lcnMuZm9yRWFjaChsPT57bChzKX0pfSl9b25Gb2N1cygpe1dlLmJhdGNoKCgpPT57dGhpcy5nZXRBbGwoKS5mb3JFYWNoKHM9PntzLm9uRm9jdXMoKX0pfSl9b25PbmxpbmUoKXtXZS5iYXRjaCgoKT0+e3RoaXMuZ2V0QWxsKCkuZm9yRWFjaChzPT57cy5vbk9ubGluZSgpfSl9KX19LHRuPW5ldyBXZWFrTWFwLHloKSxJZSxibixXbixyaSxpaSxWbixzaSxsaSx4aCxSeT0oeGg9Y2xhc3N7Y29uc3RydWN0b3Iocj17fSl7Wih0aGlzLEllKTtaKHRoaXMsYm4pO1oodGhpcyxXbik7Wih0aGlzLHJpKTtaKHRoaXMsaWkpO1oodGhpcyxWbik7Wih0aGlzLHNpKTtaKHRoaXMsbGkpO3EodGhpcyxJZSxyLnF1ZXJ5Q2FjaGV8fG5ldyBOeSkscSh0aGlzLGJuLHIubXV0YXRpb25DYWNoZXx8bmV3IEV5KSxxKHRoaXMsV24sci5kZWZhdWx0T3B0aW9uc3x8e30pLHEodGhpcyxyaSxuZXcgTWFwKSxxKHRoaXMsaWksbmV3IE1hcCkscSh0aGlzLFZuLDApfW1vdW50KCl7UmwodGhpcyxWbikuXysrLHkodGhpcyxWbik9PT0xJiYocSh0aGlzLHNpLE91LnN1YnNjcmliZShhc3luYyByPT57ciYmKGF3YWl0IHRoaXMucmVzdW1lUGF1c2VkTXV0YXRpb25zKCkseSh0aGlzLEllKS5vbkZvY3VzKCkpfSkpLHEodGhpcyxsaSxJbC5zdWJzY3JpYmUoYXN5bmMgcj0+e3ImJihhd2FpdCB0aGlzLnJlc3VtZVBhdXNlZE11dGF0aW9ucygpLHkodGhpcyxJZSkub25PbmxpbmUoKSl9KSkpfXVubW91bnQoKXt2YXIgcixzO1JsKHRoaXMsVm4pLl8tLSx5KHRoaXMsVm4pPT09MCYmKChyPXkodGhpcyxzaSkpPT1udWxsfHxyLmNhbGwodGhpcykscSh0aGlzLHNpLHZvaWQgMCksKHM9eSh0aGlzLGxpKSk9PW51bGx8fHMuY2FsbCh0aGlzKSxxKHRoaXMsbGksdm9pZCAwKSl9aXNGZXRjaGluZyhyKXtyZXR1cm4geSh0aGlzLEllKS5maW5kQWxsKHsuLi5yLGZldGNoU3RhdHVzOiJmZXRjaGluZyJ9KS5sZW5ndGh9aXNNdXRhdGluZyhyKXtyZXR1cm4geSh0aGlzLGJuKS5maW5kQWxsKHsuLi5yLHN0YXR1czoicGVuZGluZyJ9KS5sZW5ndGh9Z2V0UXVlcnlEYXRhKHIpe3ZhciBsO2NvbnN0IHM9dGhpcy5kZWZhdWx0UXVlcnlPcHRpb25zKHtxdWVyeUtleTpyfSk7cmV0dXJuKGw9eSh0aGlzLEllKS5nZXQocy5xdWVyeUhhc2gpKT09bnVsbD92b2lkIDA6bC5zdGF0ZS5kYXRhfWVuc3VyZVF1ZXJ5RGF0YShyKXtjb25zdCBzPXRoaXMuZGVmYXVsdFF1ZXJ5T3B0aW9ucyhyKSxsPXkodGhpcyxJZSkuYnVpbGQodGhpcyxzKSx1PWwuc3RhdGUuZGF0YTtyZXR1cm4gdT09PXZvaWQgMD90aGlzLmZldGNoUXVlcnkocik6KHIucmV2YWxpZGF0ZUlmU3RhbGUmJmwuaXNTdGFsZUJ5VGltZShMZShzLnN0YWxlVGltZSxsKSkmJnRoaXMucHJlZmV0Y2hRdWVyeShzKSxQcm9taXNlLnJlc29sdmUodSkpfWdldFF1ZXJpZXNEYXRhKHIpe3JldHVybiB5KHRoaXMsSWUpLmZpbmRBbGwocikubWFwKCh7cXVlcnlLZXk6cyxzdGF0ZTpsfSk9PltzLGwuZGF0YV0pfXNldFF1ZXJ5RGF0YShyLHMsbCl7dmFyIHA7Y29uc3QgdT10aGlzLmRlZmF1bHRRdWVyeU9wdGlvbnMoe3F1ZXJ5S2V5OnJ9KSxjPShwPXkodGhpcyxJZSkuZ2V0KHUucXVlcnlIYXNoKSk9PW51bGw/dm9pZCAwOnAuc3RhdGUuZGF0YSxoPWx5KHMsYyk7aWYoaCE9PXZvaWQgMClyZXR1cm4geSh0aGlzLEllKS5idWlsZCh0aGlzLHUpLnNldERhdGEoaCx7Li4ubCxtYW51YWw6ITB9KX1zZXRRdWVyaWVzRGF0YShyLHMsbCl7cmV0dXJuIFdlLmJhdGNoKCgpPT55KHRoaXMsSWUpLmZpbmRBbGwocikubWFwKCh7cXVlcnlLZXk6dX0pPT5bdSx0aGlzLnNldFF1ZXJ5RGF0YSh1LHMsbCldKSl9Z2V0UXVlcnlTdGF0ZShyKXt2YXIgbDtjb25zdCBzPXRoaXMuZGVmYXVsdFF1ZXJ5T3B0aW9ucyh7cXVlcnlLZXk6cn0pO3JldHVybihsPXkodGhpcyxJZSkuZ2V0KHMucXVlcnlIYXNoKSk9PW51bGw/dm9pZCAwOmwuc3RhdGV9cmVtb3ZlUXVlcmllcyhyKXtjb25zdCBzPXkodGhpcyxJZSk7V2UuYmF0Y2goKCk9PntzLmZpbmRBbGwocikuZm9yRWFjaChsPT57cy5yZW1vdmUobCl9KX0pfXJlc2V0UXVlcmllcyhyLHMpe2NvbnN0IGw9eSh0aGlzLEllKTtyZXR1cm4gV2UuYmF0Y2goKCk9Pntjb25zdCB1PWwuZmluZEFsbChyKSxjPW5ldyBTZXQodSk7cmV0dXJuIHUuZm9yRWFjaChoPT57aC5yZXNldCgpfSksdGhpcy5yZWZldGNoUXVlcmllcyh7dHlwZToiYWN0aXZlIixwcmVkaWNhdGU6aD0+Yy5oYXMoaCl9LHMpfSl9Y2FuY2VsUXVlcmllcyhyLHM9e30pe2NvbnN0IGw9e3JldmVydDohMCwuLi5zfSx1PVdlLmJhdGNoKCgpPT55KHRoaXMsSWUpLmZpbmRBbGwocikubWFwKGM9PmMuY2FuY2VsKGwpKSk7cmV0dXJuIFByb21pc2UuYWxsKHUpLnRoZW4oY3QpLmNhdGNoKGN0KX1pbnZhbGlkYXRlUXVlcmllcyhyLHM9e30pe3JldHVybiBXZS5iYXRjaCgoKT0+KHkodGhpcyxJZSkuZmluZEFsbChyKS5mb3JFYWNoKGw9PntsLmludmFsaWRhdGUoKX0pLChyPT1udWxsP3ZvaWQgMDpyLnJlZmV0Y2hUeXBlKT09PSJub25lIj9Qcm9taXNlLnJlc29sdmUoKTp0aGlzLnJlZmV0Y2hRdWVyaWVzKHsuLi5yLHR5cGU6KHI9PW51bGw/dm9pZCAwOnIucmVmZXRjaFR5cGUpPz8ocj09bnVsbD92b2lkIDA6ci50eXBlKT8/ImFjdGl2ZSJ9LHMpKSl9cmVmZXRjaFF1ZXJpZXMocixzPXt9KXtjb25zdCBsPXsuLi5zLGNhbmNlbFJlZmV0Y2g6cy5jYW5jZWxSZWZldGNoPz8hMH0sdT1XZS5iYXRjaCgoKT0+eSh0aGlzLEllKS5maW5kQWxsKHIpLmZpbHRlcihjPT4hYy5pc0Rpc2FibGVkKCkmJiFjLmlzU3RhdGljKCkpLm1hcChjPT57bGV0IGg9Yy5mZXRjaCh2b2lkIDAsbCk7cmV0dXJuIGwudGhyb3dPbkVycm9yfHwoaD1oLmNhdGNoKGN0KSksYy5zdGF0ZS5mZXRjaFN0YXR1cz09PSJwYXVzZWQiP1Byb21pc2UucmVzb2x2ZSgpOmh9KSk7cmV0dXJuIFByb21pc2UuYWxsKHUpLnRoZW4oY3QpfWFzeW5jIHF1ZXJ5KHIpe2NvbnN0IHM9dGhpcy5kZWZhdWx0UXVlcnlPcHRpb25zKHIpO3MucmV0cnk9PT12b2lkIDAmJihzLnJldHJ5PSExKTtjb25zdCBsPXkodGhpcyxJZSkuYnVpbGQodGhpcyxzKSx1PWwuaXNTdGFsZUJ5VGltZShMZShzLnN0YWxlVGltZSxsKSk/YXdhaXQgbC5mZXRjaChzKTpsLnN0YXRlLmRhdGEsYz1zLnNlbGVjdDtyZXR1cm4gYz9jKHUpOnV9ZmV0Y2hRdWVyeShyKXtjb25zdCBzPXRoaXMuZGVmYXVsdFF1ZXJ5T3B0aW9ucyhyKTtzLnJldHJ5PT09dm9pZCAwJiYocy5yZXRyeT0hMSk7Y29uc3QgbD15KHRoaXMsSWUpLmJ1aWxkKHRoaXMscyk7cmV0dXJuIGwuaXNTdGFsZUJ5VGltZShMZShzLnN0YWxlVGltZSxsKSk/bC5mZXRjaChzKTpQcm9taXNlLnJlc29sdmUobC5zdGF0ZS5kYXRhKX1wcmVmZXRjaFF1ZXJ5KHIpe3JldHVybiB0aGlzLmZldGNoUXVlcnkocikudGhlbihjdCkuY2F0Y2goY3QpfWluZmluaXRlUXVlcnkocil7cmV0dXJuIHIuX3R5cGU9ImluZmluaXRlIix0aGlzLnF1ZXJ5KHIpfWZldGNoSW5maW5pdGVRdWVyeShyKXtyZXR1cm4gci5fdHlwZT0iaW5maW5pdGUiLHRoaXMuZmV0Y2hRdWVyeShyKX1wcmVmZXRjaEluZmluaXRlUXVlcnkocil7cmV0dXJuIHRoaXMuZmV0Y2hJbmZpbml0ZVF1ZXJ5KHIpLnRoZW4oY3QpLmNhdGNoKGN0KX1lbnN1cmVJbmZpbml0ZVF1ZXJ5RGF0YShyKXtyZXR1cm4gci5fdHlwZT0iaW5maW5pdGUiLHRoaXMuZW5zdXJlUXVlcnlEYXRhKHIpfXJlc3VtZVBhdXNlZE11dGF0aW9ucygpe3JldHVybiBJbC5pc09ubGluZSgpP3kodGhpcyxibikucmVzdW1lUGF1c2VkTXV0YXRpb25zKCk6UHJvbWlzZS5yZXNvbHZlKCl9Z2V0UXVlcnlDYWNoZSgpe3JldHVybiB5KHRoaXMsSWUpfWdldE11dGF0aW9uQ2FjaGUoKXtyZXR1cm4geSh0aGlzLGJuKX1nZXREZWZhdWx0T3B0aW9ucygpe3JldHVybiB5KHRoaXMsV24pfXNldERlZmF1bHRPcHRpb25zKHIpe3EodGhpcyxXbixyKX1zZXRRdWVyeURlZmF1bHRzKHIscyl7eSh0aGlzLHJpKS5zZXQod3Iocikse3F1ZXJ5S2V5OnIsZGVmYXVsdE9wdGlvbnM6c30pfWdldFF1ZXJ5RGVmYXVsdHMocil7Y29uc3Qgcz1bLi4ueSh0aGlzLHJpKS52YWx1ZXMoKV0sbD17fTtyZXR1cm4gcy5mb3JFYWNoKHU9PnthaShyLHUucXVlcnlLZXkpJiZPYmplY3QuYXNzaWduKGwsdS5kZWZhdWx0T3B0aW9ucyl9KSxsfXNldE11dGF0aW9uRGVmYXVsdHMocixzKXt5KHRoaXMsaWkpLnNldCh3cihyKSx7bXV0YXRpb25LZXk6cixkZWZhdWx0T3B0aW9uczpzfSl9Z2V0TXV0YXRpb25EZWZhdWx0cyhyKXtjb25zdCBzPVsuLi55KHRoaXMsaWkpLnZhbHVlcygpXSxsPXt9O3JldHVybiBzLmZvckVhY2godT0+e2FpKHIsdS5tdXRhdGlvbktleSkmJk9iamVjdC5hc3NpZ24obCx1LmRlZmF1bHRPcHRpb25zKX0pLGx9ZGVmYXVsdFF1ZXJ5T3B0aW9ucyhyKXtpZihyLl9kZWZhdWx0ZWQpcmV0dXJuIHI7Y29uc3Qgcz17Li4ueSh0aGlzLFduKS5xdWVyaWVzLC4uLnRoaXMuZ2V0UXVlcnlEZWZhdWx0cyhyLnF1ZXJ5S2V5KSwuLi5yLF9kZWZhdWx0ZWQ6ITB9O3JldHVybiBzLnF1ZXJ5SGFzaHx8KHMucXVlcnlIYXNoPV91KHMucXVlcnlLZXkscykpLHMucmVmZXRjaE9uUmVjb25uZWN0PT09dm9pZCAwJiYocy5yZWZldGNoT25SZWNvbm5lY3Q9cy5uZXR3b3JrTW9kZSE9PSJhbHdheXMiKSxzLnRocm93T25FcnJvcj09PXZvaWQgMCYmKHMudGhyb3dPbkVycm9yPSEhcy5zdXNwZW5zZSksIXMubmV0d29ya01vZGUmJnMucGVyc2lzdGVyJiYocy5uZXR3b3JrTW9kZT0ib2ZmbGluZUZpcnN0Iikscy5xdWVyeUZuPT09VHUmJihzLmVuYWJsZWQ9ITEpLHN9ZGVmYXVsdE11dGF0aW9uT3B0aW9ucyhyKXtyZXR1cm4gciE9bnVsbCYmci5fZGVmYXVsdGVkP3I6ey4uLnkodGhpcyxXbikubXV0YXRpb25zLC4uLihyPT1udWxsP3ZvaWQgMDpyLm11dGF0aW9uS2V5KSYmdGhpcy5nZXRNdXRhdGlvbkRlZmF1bHRzKHIubXV0YXRpb25LZXkpLC4uLnIsX2RlZmF1bHRlZDohMH19Y2xlYXIoKXt5KHRoaXMsSWUpLmNsZWFyKCkseSh0aGlzLGJuKS5jbGVhcigpfX0sSWU9bmV3IFdlYWtNYXAsYm49bmV3IFdlYWtNYXAsV249bmV3IFdlYWtNYXAscmk9bmV3IFdlYWtNYXAsaWk9bmV3IFdlYWtNYXAsVm49bmV3IFdlYWtNYXAsc2k9bmV3IFdlYWtNYXAsbGk9bmV3IFdlYWtNYXAseGgpO2NvbnN0IFhoPUUuY3JlYXRlQ29udGV4dCghMSksUHk9KCk9PkUudXNlQ29udGV4dChYaCk7WGguUHJvdmlkZXI7ZnVuY3Rpb24gX3koKXtsZXQgcj0hMTtyZXR1cm57Y2xlYXJSZXNldDooKT0+e3I9ITF9LHJlc2V0OigpPT57cj0hMH0saXNSZXNldDooKT0+cn19Y29uc3QgVHk9RS5jcmVhdGVDb250ZXh0KF95KCkpLEx5PSgpPT5FLnVzZUNvbnRleHQoVHkpLEZ5PShyLHMsbCk9Pntjb25zdCB1PWwhPW51bGwmJmwuc3RhdGUuZXJyb3ImJnR5cGVvZiByLnRocm93T25FcnJvcj09ImZ1bmN0aW9uIj9MdShyLnRocm93T25FcnJvcixbbC5zdGF0ZS5lcnJvcixsXSk6ci50aHJvd09uRXJyb3I7KHIuc3VzcGVuc2V8fHUpJiYocy5pc1Jlc2V0KCl8fChyLnJldHJ5T25Nb3VudD0hMSkpfSxPeT1yPT57RS51c2VFZmZlY3QoKCk9PntyLmNsZWFyUmVzZXQoKX0sW3JdKX0sRHk9KHtyZXN1bHQ6cixlcnJvclJlc2V0Qm91bmRhcnk6cyx0aHJvd09uRXJyb3I6bCxxdWVyeTp1LHN1c3BlbnNlOmN9KT0+ci5pc0Vycm9yJiYhcy5pc1Jlc2V0KCkmJiFyLmlzRmV0Y2hpbmcmJnUmJihjJiZyLmRhdGE9PT12b2lkIDB8fEx1KGwsW3IuZXJyb3IsdV0pKSxJeT1yPT57aWYoci5zdXNwZW5zZSl7Y29uc3QgbD1jPT5jPT09InN0YXRpYyI/YzpNYXRoLm1heChjPz8xZTMsMWUzKSx1PXIuc3RhbGVUaW1lO3Iuc3RhbGVUaW1lPXR5cGVvZiB1PT0iZnVuY3Rpb24iPyguLi5jKT0+bCh1KC4uLmMpKTpsKHUpLHR5cGVvZiByLmdjVGltZT09Im51bWJlciImJihyLmdjVGltZT1NYXRoLm1heChyLmdjVGltZSwxZTMpKX19LE15PShyLHMpPT4ocj09bnVsbD92b2lkIDA6ci5zdXNwZW5zZSkmJnMuaXNQZW5kaW5nLHp5PShyLHMsbCk9PnMuZmV0Y2hPcHRpbWlzdGljKHIpLmNhdGNoKCgpPT57bC5jbGVhclJlc2V0KCl9KTtmdW5jdGlvbiBBeShyLHMsbCl7Y29uc3QgdT1QeSgpLGM9THkoKSxoPVFsKCkscD1oLmRlZmF1bHRRdWVyeU9wdGlvbnMociksbT1oLmdldFF1ZXJ5Q2FjaGUoKS5nZXQocC5xdWVyeUhhc2gpLHY9ci5zdWJzY3JpYmVkIT09ITE7cC5fb3B0aW1pc3RpY1Jlc3VsdHM9dT8iaXNSZXN0b3JpbmciOnY/Im9wdGltaXN0aWMiOnZvaWQgMCxJeShwKSxGeShwLGMsbSksT3koYyk7Y29uc3RbU109RS51c2VTdGF0ZSgoKT0+bmV3IHMoaCxwKSksQz1TLmdldE9wdGltaXN0aWNSZXN1bHQocCkseD0hdSYmdjtpZihFLnVzZVN5bmNFeHRlcm5hbFN0b3JlKEUudXNlQ2FsbGJhY2soXz0+e2NvbnN0IEk9eD9TLnN1YnNjcmliZShXZS5iYXRjaENhbGxzKF8pKTpjdDtyZXR1cm4gUy51cGRhdGVSZXN1bHQoKSxJfSxbUyx4XSksKCk9PlMuZ2V0Q3VycmVudFJlc3VsdCgpLCgpPT5TLmdldEN1cnJlbnRSZXN1bHQoKSksRS51c2VFZmZlY3QoKCk9PntTLnNldE9wdGlvbnMocCl9LFtwLFNdKSxNeShwLEMpKXRocm93IHp5KHAsUyxjKTtpZihEeSh7cmVzdWx0OkMsZXJyb3JSZXNldEJvdW5kYXJ5OmMsdGhyb3dPbkVycm9yOnAudGhyb3dPbkVycm9yLHF1ZXJ5Om0sc3VzcGVuc2U6cC5zdXNwZW5zZX0pKXRocm93IEMuZXJyb3I7cmV0dXJuIHAubm90aWZ5T25DaGFuZ2VQcm9wcz9DOlMudHJhY2tSZXN1bHQoQyl9ZnVuY3Rpb24gcm4ocixzKXtyZXR1cm4gQXkocixTeSl9ZnVuY3Rpb24gRnQocixzKXtjb25zdCBsPVFsKCksW3VdPUUudXNlU3RhdGUoKCk9Pm5ldyBqeShsLHIpKTtFLnVzZUVmZmVjdCgoKT0+e3Uuc2V0T3B0aW9ucyhyKX0sW3Uscl0pO2NvbnN0IGM9RS51c2VTeW5jRXh0ZXJuYWxTdG9yZShFLnVzZUNhbGxiYWNrKHA9PnUuc3Vic2NyaWJlKFdlLmJhdGNoQ2FsbHMocCkpLFt1XSksKCk9PnUuZ2V0Q3VycmVudFJlc3VsdCgpLCgpPT51LmdldEN1cnJlbnRSZXN1bHQoKSksaD1FLnVzZUNhbGxiYWNrKCguLi5wKT0+e3UubXV0YXRlKHBbMF0scFsxXSkuY2F0Y2goY3QpfSxbdV0pO2lmKGMuZXJyb3ImJkx1KHUub3B0aW9ucy50aHJvd09uRXJyb3IsW2MuZXJyb3JdKSl0aHJvdyBjLmVycm9yO3JldHVybnsuLi5jLG11dGF0ZTpoLG11dGF0ZUFzeW5jOmMubXV0YXRlfX1jbGFzcyBNbCBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKHMsbCx1KXtzdXBlcihsKSx0aGlzLnN0YXR1cz1zLHRoaXMuY29kZT11fX1hc3luYyBmdW5jdGlvbiB2dChyLHMpe2NvbnN0IGw9YXdhaXQgZmV0Y2gocix7Li4ucyxoZWFkZXJzOnsiY29udGVudC10eXBlIjoiYXBwbGljYXRpb24vanNvbiIsLi4uKHM9PW51bGw/dm9pZCAwOnMuaGVhZGVycyk/P3t9fX0pLHU9YXdhaXQgbC50ZXh0KCksYz11P0pTT04ucGFyc2UodSk6e307aWYoIWwub2spdGhyb3cgbmV3IE1sKGwuc3RhdHVzLFN0cmluZyhjLmVycm9yPz9gSFRUUCAke2wuc3RhdHVzfWApLHR5cGVvZiBjLmNvZGU9PSJzdHJpbmciP2MuY29kZTp2b2lkIDApO3JldHVybiBjfWNvbnN0IEh0PShyLHMpPT52dChyLHttZXRob2Q6IlBPU1QiLGJvZHk6cz09PXZvaWQgMD92b2lkIDA6SlNPTi5zdHJpbmdpZnkocyl9KSwkeT0ocixzKT0+dnQocix7bWV0aG9kOiJQQVRDSCIsYm9keTpKU09OLnN0cmluZ2lmeShzKX0pLEphPXI9PnZ0KHIse21ldGhvZDoiREVMRVRFIn0pLE5lPXtpbmZvOigpPT52dCgiL2FwaS9pbmZvIiksYXV0aENsaWVudDooKT0+dnQoIi9hcGkvYXV0aC9jbGllbnQiKSxzZXRBdXRoQ2xpZW50OihyLHMpPT5IdCgiL2FwaS9hdXRoL2NsaWVudCIse2NsaWVudElkOnIsY2xpZW50U2VjcmV0OnN9KSxsb2dpblN0YXJ0OnI9Pkh0KCIvYXBpL2F1dGgvbG9naW4vc3RhcnQiLHtsb2dpbkhpbnQ6cn0pLGxvZ2luU3RhdHVzOigpPT52dCgiL2FwaS9hdXRoL2xvZ2luL3N0YXR1cyIpLGFjY291bnRzOigpPT52dCgiL2FwaS9hY2NvdW50cyIpLHJlbW92ZUFjY291bnQ6cj0+SmEoYC9hcGkvYWNjb3VudHMvJHtyfWApLHRlc3RBY2NvdW50OnI9Pkh0KGAvYXBpL2FjY291bnRzLyR7cn0vdGVzdGApLHNldERlZmF1bHRBY2NvdW50OnI9Pkh0KGAvYXBpL2FjY291bnRzLyR7cn0vZGVmYXVsdGApLGluc3BlY3Q6cj0+SHQoIi9hcGkvaW5zcGVjdCIsciksZm9sZGVyczoocixzKT0+dnQoYC9hcGkvZHJpdmUvZm9sZGVycz9hY2NvdW50SWQ9JHtlbmNvZGVVUklDb21wb25lbnQocil9JnBhcmVudElkPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHMpfWApLGpvYnM6KCk9PnZ0KCIvYXBpL2pvYnMiKSxqb2I6cj0+dnQoYC9hcGkvam9icy8ke3J9YCksam9iRmlsZXM6KHIscyxsPTIwMCx1PTApPT52dChgL2FwaS9qb2JzLyR7cn0vZmlsZXM/JHtzP2BzdGF0dXM9JHtzfSZgOiIifWxpbWl0PSR7bH0mb2Zmc2V0PSR7dX1gKSxjcmVhdGVKb2I6cj0+SHQoIi9hcGkvam9icyIscikscGF1c2VKb2I6cj0+SHQoYC9hcGkvam9icy8ke3J9L3BhdXNlYCkscmVzdW1lSm9iOnI9Pkh0KGAvYXBpL2pvYnMvJHtyfS9yZXN1bWVgKSxjYW5jZWxKb2I6cj0+SHQoYC9hcGkvam9icy8ke3J9L2NhbmNlbGApLGRlbGV0ZUpvYjpyPT5KYShgL2FwaS9qb2JzLyR7cn1gKSxjb3BpZXM6KCk9PnZ0KCIvYXBpL2NvcGllcyIpLGNoZWNrQ29weTpyPT5IdChgL2FwaS9jb3BpZXMvJHtyfS9jaGVja2ApLHN5bmNDb3B5OihyLHMpPT5IdChgL2FwaS9jb3BpZXMvJHtyfS9zeW5jYCx7Zm9sZGVyczpzfSksZGVsZXRlQ29weTpyPT5KYShgL2FwaS9jb3BpZXMvJHtyfWApLHNldHRpbmdzOigpPT52dCgiL2FwaS9zZXR0aW5ncyIpLHBhdGNoU2V0dGluZ3M6cj0+JHkoIi9hcGkvc2V0dGluZ3MiLHIpLHF1b3RhOnI9PnZ0KGAvYXBpL3F1b3RhJHtyP2A/YWNjb3VudElkPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHIpfWA6IiJ9YCl9LFV5PVsicnVubmluZyIsInF1ZXVlZCJdLGhzPXI9PlV5LmluY2x1ZGVzKHIuc3RhdHVzKSxwcz1yPT5yLnN0YXR1cy5zdGFydHNXaXRoKCJwYXVzZWQiKSx6bD1yPT5yLnN0YXR1cz09PSJkb25lInx8ci5zdGF0dXM9PT0iY2FuY2VsZWQifHxyLnN0YXR1cz09PSJmYWlsZWQiLFpoPSgpPT5ybih7cXVlcnlLZXk6WyJpbmZvIl0scXVlcnlGbjpOZS5pbmZvfSksZXA9KCk9PnJuKHtxdWVyeUtleTpbImF1dGhDbGllbnQiXSxxdWVyeUZuOk5lLmF1dGhDbGllbnR9KSxxbD0oKT0+cm4oe3F1ZXJ5S2V5OlsiYWNjb3VudHMiXSxxdWVyeUZuOk5lLmFjY291bnRzLHNlbGVjdDpyPT5yLmFjY291bnRzfSksdHA9KCk9PnJuKHtxdWVyeUtleTpbInNldHRpbmdzIl0scXVlcnlGbjpOZS5zZXR0aW5nc30pLEJ5PXI9PnJuKHtxdWVyeUtleTpbInF1b3RhIixyPz8iZGVmYXVsdCJdLHF1ZXJ5Rm46KCk9Pk5lLnF1b3RhKHIpLHJldHJ5OiExfSksSHk9KCk9PnJuKHtxdWVyeUtleTpbImNvcGllcyJdLHF1ZXJ5Rm46TmUuY29waWVzLHNlbGVjdDpyPT5yLmNvcGllc30pLFF5PSgpPT5ybih7cXVlcnlLZXk6WyJqb2JzIl0scXVlcnlGbjpOZS5qb2JzLHNlbGVjdDpyPT5yLmpvYnMscmVmZXRjaEludGVydmFsOnI9Pnt2YXIgcztyZXR1cm4ocz1yLnN0YXRlLmRhdGEpIT1udWxsJiZzLmpvYnMuc29tZShocyk/MmUzOjFlNH19KSxxeT1yPT5ybih7cXVlcnlLZXk6WyJqb2IiLHJdLHF1ZXJ5Rm46KCk9Pk5lLmpvYihyKSxyZWZldGNoSW50ZXJ2YWw6cz0+cy5zdGF0ZS5kYXRhJiZocyhzLnN0YXRlLmRhdGEuam9iKT8yZTM6ITF9KSxieT0ocixzLGw9MjAwLHU9MCk9PnJuKHtxdWVyeUtleTpbImpvYkZpbGVzIixyLHM/PyJhbGwiLGwsdV0scXVlcnlGbjooKT0+TmUuam9iRmlsZXMocixzLGwsdSksc2VsZWN0OmM9PmMuZmlsZXN9KSxyaD0ocixzKT0+cm4oe3F1ZXJ5S2V5OlsiZm9sZGVycyIscixzXSxxdWVyeUZuOigpPT5OZS5mb2xkZXJzKHIscyksZW5hYmxlZDohIXIsc2VsZWN0Omw9PmwuZm9sZGVyc30pO2Z1bmN0aW9uIG1zKCl7Y29uc3Qgcj1RbCgpO3JldHVybiguLi5zKT0+UHJvbWlzZS5hbGwocy5tYXAobD0+ci5pbnZhbGlkYXRlUXVlcmllcyh7cXVlcnlLZXk6W2xdfSkpKX1mdW5jdGlvbiBucCgpe2NvbnN0IHI9bXMoKSxzPSgpPT5yKCJqb2JzIiwiam9iIiwicXVvdGEiLCJjb3BpZXMiKTtyZXR1cm57cGF1c2U6RnQoe211dGF0aW9uRm46TmUucGF1c2VKb2Isb25TZXR0bGVkOnN9KSxyZXN1bWU6RnQoe211dGF0aW9uRm46TmUucmVzdW1lSm9iLG9uU2V0dGxlZDpzfSksY2FuY2VsOkZ0KHttdXRhdGlvbkZuOk5lLmNhbmNlbEpvYixvblNldHRsZWQ6c30pLHJlbW92ZTpGdCh7bXV0YXRpb25GbjpOZS5kZWxldGVKb2Isb25TZXR0bGVkOnN9KX19ZnVuY3Rpb24gV3koKXtjb25zdCByPW1zKCk7cmV0dXJuIEZ0KHttdXRhdGlvbkZuOk5lLmNyZWF0ZUpvYixvblN1Y2Nlc3M6KCk9PnIoImpvYnMiLCJxdW90YSIpfSl9ZnVuY3Rpb24gcnAoKXtjb25zdCByPW1zKCkscz0oKT0+cigiYWNjb3VudHMiLCJpbmZvIiwicXVvdGEiKTtyZXR1cm57cmVtb3ZlOkZ0KHttdXRhdGlvbkZuOk5lLnJlbW92ZUFjY291bnQsb25TZXR0bGVkOnN9KSxzZXREZWZhdWx0OkZ0KHttdXRhdGlvbkZuOk5lLnNldERlZmF1bHRBY2NvdW50LG9uU2V0dGxlZDpzfSksdGVzdDpGdCh7bXV0YXRpb25GbjpOZS50ZXN0QWNjb3VudCxvblNldHRsZWQ6c30pfX1mdW5jdGlvbiBpcCgpe2NvbnN0IHI9bXMoKTtyZXR1cm4gRnQoe211dGF0aW9uRm46cz0+TmUucGF0Y2hTZXR0aW5ncyhzKSxvblNldHRsZWQ6KCk9PnIoInNldHRpbmdzIiwicXVvdGEiKX0pfWZ1bmN0aW9uIFZ5KCl7Y29uc3Qgcj1tcygpO3JldHVybntjaGVjazpGdCh7bXV0YXRpb25GbjpOZS5jaGVja0NvcHksb25TZXR0bGVkOigpPT5yKCJjb3BpZXMiKX0pLHN5bmM6RnQoe211dGF0aW9uRm46KHtpZDpzLGZvbGRlcnM6bH0pPT5OZS5zeW5jQ29weShzLGwpLG9uU2V0dGxlZDooKT0+cigiY29waWVzIiwiam9icyIpfSkscmVtb3ZlOkZ0KHttdXRhdGlvbkZuOk5lLmRlbGV0ZUNvcHksb25TZXR0bGVkOigpPT5yKCJjb3BpZXMiKX0pfX1mdW5jdGlvbiBBbCh7c2l6ZTpyPTI0LGFuaW1hdGVkOnM9ITEsY2xhc3NOYW1lOmw9IiJ9KXtjb25zdCB1PSJyaWZ0LWdyYWQiO3JldHVybiBkLmpzeHMoInN2ZyIse3dpZHRoOnIsaGVpZ2h0OnIsdmlld0JveDoiMCAwIDQ4IDQ4IixmaWxsOiJub25lIiwiYXJpYS1oaWRkZW4iOiJ0cnVlIixjbGFzc05hbWU6YCR7cz8icmlmdC1hbmltYXRlZCI6IiJ9ICR7bH1gLGNoaWxkcmVuOltkLmpzeCgiZGVmcyIse2NoaWxkcmVuOmQuanN4cygibGluZWFyR3JhZGllbnQiLHtpZDp1LHgxOiIwIix5MToiMCIseDI6IjAiLHkyOiIxIixjaGlsZHJlbjpbZC5qc3goInN0b3AiLHtvZmZzZXQ6IjAiLHN0b3BDb2xvcjoiIzY3RThGOSJ9KSxkLmpzeCgic3RvcCIse29mZnNldDoiLjUiLHN0b3BDb2xvcjoiI0E3OEJGQSJ9KSxkLmpzeCgic3RvcCIse29mZnNldDoiMSIsc3RvcENvbG9yOiIjQzA4NEZDIn0pXX0pfSksZC5qc3goInJlY3QiLHt4OiIxOCIseToiMTAiLHdpZHRoOiIxMiIsaGVpZ2h0OiIyOCIscng6IjYiLGZpbGw6YHVybCgjJHt1fSlgLG9wYWNpdHk6Ii40NSJ9KSxkLmpzeCgicmVjdCIse3g6IjE0Iix5OiI2Iix3aWR0aDoiMjAiLGhlaWdodDoiMzYiLHJ4OiIxMCIsc3Ryb2tlOmB1cmwoIyR7dX0pYCxzdHJva2VXaWR0aDoiMi40In0pLGQuanN4cygiZyIse2NsYXNzTmFtZToicmlmdC1hcnJvdyIsY2hpbGRyZW46W2QuanN4KCJwYXRoIix7ZDoiTTQgMjRoMTQiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMi42IixzdHJva2VMaW5lY2FwOiJyb3VuZCIsb3BhY2l0eToiLjQifSksZC5qc3goInBhdGgiLHtkOiJNMzAgMjRoMTJNMzcuNSAxOS41IDQyIDI0bC00LjUgNC41IixzdHJva2U6ImN1cnJlbnRDb2xvciIsc3Ryb2tlV2lkdGg6IjIuNiIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZUxpbmVqb2luOiJyb3VuZCJ9KV19KV19KX1mdW5jdGlvbiBzcCh7c2l6ZTpyPSJtZCIsdG86cz0iLyJ9KXtjb25zdCBsPWQuanN4cygic3BhbiIse2NsYXNzTmFtZTpgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdhcC0yLjUgZm9udC1ib2xkIHRyYWNraW5nLVstMC4wMmVtXSAke3I9PT0ibGciPyJ0ZXh0LTN4bCI6InRleHQtWzE1cHhdIn1gLGNoaWxkcmVuOltkLmpzeChBbCx7c2l6ZTpyPT09ImxnIj80MDoyNCxjbGFzc05hbWU6InRleHQtZmcifSksZC5qc3hzKCJzcGFuIix7Y2hpbGRyZW46WyJSaWZ0IixkLmpzeCgic3BhbiIse2NsYXNzTmFtZToiZm9udC1ub3JtYWwgdGV4dC1tdXRlZCIsY2hpbGRyZW46IkRyaXZlIn0pXX0pXX0pO3JldHVybiBzP2QuanN4KHhyLHt0bzpzLGNsYXNzTmFtZToicm91bmRlZC1tZCBob3ZlcjpvcGFjaXR5LTkwIiwiYXJpYS1sYWJlbCI6IlJpZnREcml2ZSDigJQgaW7DrWNpbyIsY2hpbGRyZW46bH0pOmx9Y29uc3QgeG49cj0+KHt3aWR0aDoxNixoZWlnaHQ6MTYsdmlld0JveDoiMCAwIDI0IDI0IixmaWxsOiJub25lIixzdHJva2U6ImN1cnJlbnRDb2xvciIsc3Ryb2tlV2lkdGg6MixzdHJva2VMaW5lY2FwOiJyb3VuZCIsc3Ryb2tlTGluZWpvaW46InJvdW5kIiwiYXJpYS1oaWRkZW4iOiEwLC4uLnJ9KSxLeT1yPT5kLmpzeHMoInN2ZyIsey4uLnhuKHIpLGNoaWxkcmVuOltkLmpzeCgiY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjMifSksZC5qc3goInBhdGgiLHtkOiJNMTkuNCAxNWExLjcgMS43IDAgMCAwIC4zIDEuOGwuMS4xYTIgMiAwIDEgMS0yLjggMi44bC0uMS0uMWExLjcgMS43IDAgMCAwLTEuOC0uMyAxLjcgMS43IDAgMCAwLTEgMS41VjIxYTIgMiAwIDEgMS00IDB2LS4xYTEuNyAxLjcgMCAwIDAtMS4xLTEuNSAxLjcgMS43IDAgMCAwLTEuOC4zbC0uMS4xYTIgMiAwIDEgMS0yLjgtMi44bC4xLS4xYTEuNyAxLjcgMCAwIDAgLjMtMS44IDEuNyAxLjcgMCAwIDAtMS41LTFIM2EyIDIgMCAxIDEgMC00aC4xYTEuNyAxLjcgMCAwIDAgMS41LTEuMSAxLjcgMS43IDAgMCAwLS4zLTEuOGwtLjEtLjFhMiAyIDAgMSAxIDIuOC0yLjhsLjEuMWExLjcgMS43IDAgMCAwIDEuOC4zSDlhMS43IDEuNyAwIDAgMCAxLTEuNVYzYTIgMiAwIDEgMSA0IDB2LjFhMS43IDEuNyAwIDAgMCAxIDEuNSAxLjcgMS43IDAgMCAwIDEuOC0uM2wuMS0uMWEyIDIgMCAxIDEgMi44IDIuOGwtLjEuMWExLjcgMS43IDAgMCAwLS4zIDEuOFY5YTEuNyAxLjcgMCAwIDAgMS41IDFIMjFhMiAyIDAgMSAxIDAgNGgtLjFhMS43IDEuNyAwIDAgMC0xLjUgMXoifSldfSksbHA9cj0+ZC5qc3goInN2ZyIsey4uLnhuKHIpLGNoaWxkcmVuOmQuanN4KCJwYXRoIix7ZDoibTE1IDE4LTYtNiA2LTYifSl9KSxpaD1yPT5kLmpzeCgic3ZnIix7Li4ueG4ociksY2hpbGRyZW46ZC5qc3goInBhdGgiLHtkOiJtOSAxOCA2LTYtNi02In0pfSksaXM9cj0+ZC5qc3goInN2ZyIsey4uLnhuKHIpLGNoaWxkcmVuOmQuanN4KCJwYXRoIix7ZDoiTTE0IDNoN3Y3TTIxIDNsLTkgOU0xOSAxM3Y2YTIgMiAwIDAgMS0yIDJINWEyIDIgMCAwIDEtMi0yVjdhMiAyIDAgMCAxIDItMmg2In0pfSksR3k9cj0+ZC5qc3hzKCJzdmciLHsuLi54bihyKSxmaWxsOiJjdXJyZW50Q29sb3IiLHN0cm9rZToibm9uZSIsY2hpbGRyZW46W2QuanN4KCJjaXJjbGUiLHtjeDoiNSIsY3k6IjEyIixyOiIyIn0pLGQuanN4KCJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMiJ9KSxkLmpzeCgiY2lyY2xlIix7Y3g6IjE5IixjeToiMTIiLHI6IjIifSldfSksSnk9cj0+ZC5qc3goInN2ZyIsey4uLnhuKHIpLGNoaWxkcmVuOmQuanN4KCJwYXRoIix7ZDoibTUgMTIgNSA1TDIwIDcifSl9KSxzaD1yPT5kLmpzeCgic3ZnIix7Li4ueG4ociksY2hpbGRyZW46ZC5qc3goInBhdGgiLHtkOiJNMyA3YTIgMiAwIDAgMSAyLTJoNGwyIDJoOGEyIDIgMCAwIDEgMiAydjlhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJ6In0pfSksWWE9cj0+ZC5qc3goInN2ZyIsey4uLnhuKHIpLGZpbGw6ImN1cnJlbnRDb2xvciIsc3Ryb2tlOiJub25lIixjaGlsZHJlbjpkLmpzeCgicGF0aCIse2Q6Ik0xMiAyLjVsMi45IDYuMSA2LjYuOC00LjkgNC42IDEuMyA2LjVMMTIgMTcuMyA2LjEgMjAuNWwxLjMtNi41TDIuNSA5LjRsNi42LS44eiJ9KX0pLFl5PXI9PmQuanN4cygic3ZnIix7Li4ueG4ociksY2hpbGRyZW46W2QuanN4KCJyZWN0Iix7eDoiOSIseToiOSIsd2lkdGg6IjEyIixoZWlnaHQ6IjEyIixyeDoiMiJ9KSxkLmpzeCgicGF0aCIse2Q6Ik01IDE1SDRhMiAyIDAgMCAxLTItMlY0YTIgMiAwIDAgMSAyLTJoOWEyIDIgMCAwIDEgMiAydjEifSldfSksaj17bmF2OntzZXR0aW5nczoiQ29uZmlndXJhw6fDtWVzIixiYWNrOiJWb2x0YXIifSxwYXRoOntyaWZ0OiJwZWxvIHJpZnQiLG1hY2hpbmU6InBlbGEgc3VhIG3DoXF1aW5hIixyaWZ0VGl0bGU6IkEgY8OzcGlhIGFjb250ZWNlIGRlbnRybyBkbyBHb29nbGUsIHNlcnZpZG9yIGEgc2Vydmlkb3IuIE5hZGEgcGFzc2EgcGVsYSBzdWEgbcOhcXVpbmEuIixtYWNoaW5lVGl0bGU6Ik9zIGFycXVpdm9zIGRlc2NlbSBkZSB1bWEgY29udGEgZSBzb2JlbSBuYSBvdXRyYSBwZWxhIHN1YSBtw6FxdWluYS4gUHJlY2lzYSBkZWl4YXIgbyBhcHAgYWJlcnRvLiJ9LGhvbWU6e3RpdGxlOiJPIHF1ZSB2YW1vcyBjb3BpYXIgaG9qZT8iLHBsYWNlaG9sZGVyOiJDb2xlIHVtIGxpbmsgZG8gR29vZ2xlIERyaXZl4oCmIixhbmFseXplOiJBbmFsaXNhciIsY2xlYXI6IkxpbXBhciIsYW5hbHl6aW5nOiJMZW5kbyBhIHBhc3Rh4oCmIixpblByb2dyZXNzOiJFbSBhbmRhbWVudG8iLHBhdXNlZDoiUGF1c2FkYXMiLGZpbmlzaGVkOiJDb25jbHXDrWRhcyIsc2VlQWxsOnI9PmB2ZXIgdG9kYXMgKCR7cn0pYCxzZWVMZXNzOiJ2ZXIgbWVub3MiLGVtcHR5OiJOZW5odW1hIGPDs3BpYSBhaW5kYS4gQ29sZSB1bSBsaW5rIGFjaW1hIHBhcmEgY29tZcOnYXIuIixjaGVja05ld3M6IlZlcmlmaWNhciBub3ZpZGFkZXMifSxxdW90YTp7bGluZToocixzKT0+YENvdGEgZGUgaG9qZTogJHtyfSByZXN0YW50ZXMgwrcgcmVub3ZhIMOgcyAke3N9YCx1bmxpbWl0ZWQ6IlNlbSBsaW1pdGUgZGUgY290YSDigJQgY29waWEgYXTDqSBvIEdvb2dsZSBjb3J0YXIiLGZpdHM6IkNhYmUgbmEgY290YSBkZSBob2plIixkb2VzTm90Rml0OnI9PmBWYWkgdXNhciBhIGNvdGEgZGUgaG9qZSBlIGNvbnRpbnVhciBhbWFuaMOjIMOgcyAke3J9YCx1bmxpbWl0ZWRTaG9ydDoiU2VtIGxpbWl0ZSJ9LGFuYWx5c2lzOntmaWxlczpyPT5gJHtyLnRvTG9jYWxlU3RyaW5nKCJwdC1CUiIpfSAke3I9PT0xPyJhcnF1aXZvIjoiYXJxdWl2b3MifWAsZnJvbTpyPT5gZGUgJHtyfWAscGF0aExhYmVsOiJDYW1pbmhvIixyaWZ0VGV4dDpyPT5gRXNzYSBwYXN0YSBlc3TDoSBjb21wYXJ0aWxoYWRhIGNvbSAke3J9OiBhIGPDs3BpYSBhY29udGVjZSBkZW50cm8gZG8gR29vZ2xlLCBzZW0gcGFzc2FyIHBlbGEgc3VhIG3DoXF1aW5hLiBQb2RlIGZlY2hhciBvIGFwcCBubyBtZWlvIOKAlCBlbGEgY29udGludWEuYCxtYWNoaW5lVGV4dDpyPT5gRXNzYSBwYXN0YSBuw6NvIGVzdMOhIGNvbXBhcnRpbGhhZGEgY29tICR7cn0sIGVudMOjbyBvcyBhcnF1aXZvcyB2w6NvIGJhaXhhciBlIHN1YmlyIHBlbGEgc3VhIG3DoXF1aW5hLmAsbWFjaGluZUhpbnQ6IlNlIG8gZG9ubyBjb21wYXJ0aWxoYXIgYSBwYXN0YSBjb20gdm9jw6osIGEgY8OzcGlhIGFjb250ZWNlIGRlbnRybyBkbyBHb29nbGUg4oCUIGluc3RhbnTDom5lYSBlIHNlbSB1c2FyIHN1YSBpbnRlcm5ldC4iLGNvcHlSZXF1ZXN0OiJDb3BpYXIgcGVkaWRvIHBhcmEgZW52aWFyIGFvIGRvbm8iLGNvcGllZDoiQ29waWFkbyEiLGtlZXBPcGVuOiJwcmVjaXNhIGRlaXhhciBvIGFwcCBhYmVydG8iLGJsb2NrZWRMYWJlbDoiQmxvcXVlYWRvcyIsYmxvY2tlZDpyPT5gJHtyfSAke3I9PT0xPyJhcnF1aXZvIjoiYXJxdWl2b3MifWAsYmxvY2tlZFRleHQ6Im8gZG9ubyBkZXNhdGl2b3UgY8OzcGlhL2Rvd25sb2FkIMK3IGZpY2Fyw6NvIGRlIGZvcmEiLGNvcHlhYmxlOnI9PmBjb3Bpw6F2ZWw6ICR7cn1gLHNlZVdoaWNoOiJ2ZXIgcXVhaXMiLGhpZGU6Im9jdWx0YXIiLG5hdGl2ZUxhYmVsOiJGb3JhIixuYXRpdmU6cj0+YCR7cn0gJHtyPT09MT8iZG9jdW1lbnRvIjoiZG9jdW1lbnRvcyJ9IGRvIEdvb2dsZSAke3I9PT0xPyJmaWNhIjoiZmljYW0ifSBkZSBmb3JhIChlbnRyZSBjb250YXMsIHByZWNpc2FtIGRlIGNvbnZlcnPDo28pYCxkZXN0TGFiZWw6IkRlc3Rpbm8iLG5hbWVMYWJlbDoiTm9tZSIscXVvdGFMYWJlbDoiQ290YSIsY29uZmxpY3RMYWJlbDoiSsOhIGV4aXN0ZSIsY29uZmxpY3RUZXh0OnI9PmBKw6EgZXhpc3RlIHVtYSBwYXN0YSAiJHtyfSIgbmVzc2UgZGVzdGluby5gLGNvbmZsaWN0UmVuYW1lOnI9PmBDcmlhciBvdXRyYTogIiR7cn0gKDIpImAsY29uZmxpY3RNZXJnZTonTWVzY2xhciBkZW50cm8gZGEgcGFzdGEgZXhpc3RlbnRlIChvIHF1ZSBmb3IgaWd1YWwgw6kgcHVsYWRvOyBvIHF1ZSBtdWRvdSBnYW5oYSBhIHZlcnPDo28gbm92YSBlIGEgYW50aWdhIGZpY2EgY29tbyAiKHZlcnPDo28gYW50ZXJpb3IpIiknLHN0YXJ0OiJJbmljaWFyIGPDs3BpYSDihpIiLGNhbmNlbDoiQ2FuY2VsYXIiLHN0YXJ0aW5nOiJJbmljaWFuZG/igKYifSxqb2I6e3N0YXR1czp7cXVldWVkOiJuYSBmaWxhIixydW5uaW5nOiJjb3BpYW5kbyIscGF1c2VkOiJwYXVzYWRhIixwYXVzZWRfcXVvdGE6ImFndWFyZGEgY290YSIscGF1c2VkX2F1dGg6ImNvbnRhIGRlc2NvbmVjdGFkYSIscGF1c2VkX3N0b3JhZ2U6ImRlc3Rpbm8gc2VtIGVzcGHDp28iLHBhdXNlZF9vZmZsaW5lOiJzZW0gY29uZXjDo28iLGRvbmU6ImNvbmNsdcOtZGEiLGNhbmNlbGVkOiJjYW5jZWxhZGEiLGZhaWxlZDoiZmFsaG91In0sZmlsZXM6KHIscyk9PmAke3IudG9Mb2NhbGVTdHJpbmcoInB0LUJSIil9IC8gJHtzLnRvTG9jYWxlU3RyaW5nKCJwdC1CUiIpfSBhcnF1aXZvc2AsYnl0ZXM6KHIscyk9PmAke3J9IGRlICR7c31gLGJsb2NrZWRTaG9ydDpyPT5gJHtyfSAke3I9PT0xPyJibG9xdWVhZG8iOiJibG9xdWVhZG9zIn0gcGVsbyBkb25vYCxyZXN1bWVzQXQ6cj0+YFJldG9tYSBzb3ppbmhhIMOgcyAke3J9YCxwYXVzZToiUGF1c2FyIixyZXN1bWU6IlJldG9tYXIiLGNhbmNlbDoiQ2FuY2VsYXIiLHJlbW92ZToiUmVtb3ZlciIsb3BlbkluRHJpdmU6IkFicmlyIG5vIERyaXZlIixyZWNvbm5lY3Q6IlJlY29uZWN0YXIiLGNvbmZpcm1DYW5jZWw6IkNhbmNlbGFyIGVzdGEgY8OzcGlhPyBPIHF1ZSBqw6EgZm9pIGNvcGlhZG8gZmljYSBubyBEcml2ZS4iLGNvbmZpcm1SZW1vdmU6IlJlbW92ZXIgZXN0YSBjw7NwaWEgZGEgbGlzdGE/IE5hZGEgw6kgYXBhZ2FkbyBubyBEcml2ZS4iLHN0YXJ0ZWQ6ImluaWNpYWRhIixmaW5pc2hlZDoiY29uY2x1w61kYSIsc3BlZWQ6cj0+cixldGE6cj0+YGZhbHRhbSAke3J9YCxmaWxlc1RpdGxlOiJBcnF1aXZvcyIsZmlsZVN0YXR1czp7cGVuZGluZzoiUGVuZGVudGVzIixkb25lOiJDb25jbHXDrWRvcyIsc2tpcHBlZF9ibG9ja2VkOiJCbG9xdWVhZG9zIixza2lwcGVkX25hdGl2ZToiRm9yYSIsZGVmZXJyZWQ6IkFndWFyZGFuZG8iLG1pc3Npbmc6IlN1bWlyYW0iLGZhaWxlZDoiRmFsaGFzIn0sbG9hZE1vcmU6ImNhcnJlZ2FyIG1haXMiLG5vRmlsZXM6Ik5lbmh1bSBhcnF1aXZvIG5lc3RlIGVzdGFkby4iLG9wZW5Tb3VyY2U6ImFicmlyIG9yaWdpbmFsIixvcGVuRGVzdDoiYWJyaXIgY8OzcGlhIixkZWZlcnJlZEhpbnQ6IkF0aW5naXJhbSBhIGNvdGEgZGUgZG93bmxvYWQgZG8gR29vZ2xlOyB2b2x0YW0gc296aW5ob3MgZW0gYXTDqSAyNCBoLiIsbm90Rm91bmQ6IkPDs3BpYSBuw6NvIGVuY29udHJhZGEuIn0sc2V0dXA6e3N0ZXA6KHIscyk9PmBDb25maWd1cmHDp8OjbyBpbmljaWFsIMK3ICR7cn0gZGUgJHtzfWAsdGl0bGU6IkFudGVzIGRlIHR1ZG86IHNldSBhY2Vzc28gYW8gR29vZ2xlIixpbnRybzE6Ik8gUmlmdERyaXZlIG7Do28gdGVtIHNlcnZpZG9yIG5lbSBjb250YSBwcsOzcHJpYSDigJQgZWxlIGZhbGEgY29tIG8gR29vZ2xlICIsaW50cm9TdHJvbmc6ImVtIHNldSBub21lIixpbnRybzI6IiwgY29tIHVtYSBjcmVkZW5jaWFsIHF1ZSBzw7Mgdm9jw6ogdGVtLiBQb3IgaXNzbyBvIEdvb2dsZSBwZWRlIHF1ZSBjYWRhIHBlc3NvYSBjcmllIGEgc3VhLiBMZXZhIHVucyA4IG1pbnV0b3MsIHVtYSDDum5pY2EgdmV6LiBOZW5odW0gZGFkbyBzZXUgcGFzc2EgcG9yIHRlcmNlaXJvcy4iLHN0ZXBzOntwcm9qZWN0OiJDcmlhciB1bSBwcm9qZXRvIG5vIEdvb2dsZSBDbG91ZCIscHJvamVjdEhpbnQ6J1BvZGUgY2hhbWFyIGRlICJSaWZ0RHJpdmUiLicsYXBpOiJBdGl2YXIgYSBHb29nbGUgRHJpdmUgQVBJIixhcGlIaW50OidBYnJhIG8gbGluayBlIGNsaXF1ZSBlbSAiQXRpdmFyIi4nLGNvbnNlbnQ6J1RlbGEgZGUgY29uc2VudGltZW50bzogdGlwbyAiRXh0ZXJubyIgZSAnLGNvbnNlbnRTdHJvbmc6InB1YmxpY2FyIGVtIHByb2R1w6fDo28iLGNvbnNlbnRXYXJuMTonRXNzZSDDqSBvIHBhc3NvIHF1ZSB0b2RvIG11bmRvIHB1bGEuIFNlIG8gYXBwIGZpY2FyIGVtICJUZXN0ZSIsIG8gR29vZ2xlICcsY29uc2VudFdhcm5TdHJvbmc6ImRlc2NvbmVjdGEgc3VhIGNvbnRhIGEgY2FkYSA3IGRpYXMiLGNvbnNlbnRXYXJuMjonLiBFbSAiUHJvZHXDp8OjbyIgYSBjb25leMOjbyBkdXJhIOKAlCBvIEdvb2dsZSBzw7MgbW9zdHJhIHVtIGF2aXNvIGRlICJhcHAgbsOjbyB2ZXJpZmljYWRvIiBuYSBwcmltZWlyYSB2ZXosIHF1ZSDDqSBlc3BlcmFkby4nLGNyZWRlbnRpYWw6J0NyaWFyIGNyZWRlbmNpYWw6IElEIGRvIGNsaWVudGUgT0F1dGgsIHRpcG8gIkFwcCBwYXJhIGNvbXB1dGFkb3IiJyxjcmVkZW50aWFsSGludDoiRW0gQ3JlZGVuY2lhaXMg4oaSIENyaWFyIGNyZWRlbmNpYWlzIOKGkiBJRCBkbyBjbGllbnRlIE9BdXRoLiIscGFzdGU6IkNvbGFyIGFxdWkgbyBJRCBlIG8gc2VncmVkbyBkbyBjbGllbnRlIn0sb3BlbjoiQWJyaXIiLGRvbmU6IkZlaXRvIixtYXJrRG9uZToiRmVpdG8sIHB1YmxpcXVlaSIsY2xpZW50SWQ6IklEIGRvIGNsaWVudGUiLGNsaWVudElkUGxhY2Vob2xkZXI6InRlcm1pbmEgZW0gLmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIixjbGllbnRTZWNyZXQ6IlNlZ3JlZG8gZG8gY2xpZW50ZSIsY2xpZW50U2VjcmV0UGxhY2Vob2xkZXI6ImNvbWXDp2EgY29tIEdPQ1NQWC0iLHN1Ym1pdDoiVmFsaWRhciBlIGVudHJhciBjb20gR29vZ2xlIOKGkiIsc3VibWl0dGluZzoiQWJyaW5kbyBvIEdvb2dsZeKApiIsd2FpdGluZzoiQWd1YXJkYW5kbyBhIGF1dG9yaXphw6fDo28gbm8gbmF2ZWdhZG9y4oCmIix3YWl0aW5nSGludDonVW1hIGFiYSBkbyBHb29nbGUgYWJyaXUuIEF1dG9yaXplIG8gYWNlc3NvOyBvIGF2aXNvIGRlICJhcHAgbsOjbyB2ZXJpZmljYWRvIiDDqSBlc3BlcmFkbyDigJQgY2xpcXVlIGVtIEF2YW7Dp2FkbyDihpIgQWNlc3Nhci4nLHNraXA6IkrDoSB0ZW0gdW0gY2xpZW50PyBQdWxhciBwYXJhIGNvbGFyIixjb25uZWN0ZWRUaXRsZTpyPT5gJHtyfSBjb25lY3RhZG9gLGNvbm5lY3RlZFRleHQ6IkVzdGEgY29udGEgc2Vyw6EgbyBkZXN0aW5vIHBhZHLDo28gZGFzIGPDs3BpYXMuIixhbm90aGVyOiJDb25lY3RhciBvdXRyYSBjb250YSIsYW5vdGhlckhpbnQ6IlBhcmEgY29waWFyIGVudHJlIGNvbnRhcyBkaWZlcmVudGVzIChleC46IGNvbnRhIGFudGlnYSDihpIgY29udGEgbm92YSkuIixmaW5pc2g6IkNvbWXDp2FyIGEgdXNhciDihpIiLHJldHJ5OiJUZW50YXIgZGUgbm92byJ9LHNldHRpbmdzOnt0aXRsZToiQ29uZmlndXJhw6fDtWVzIixxdW90YVRpdGxlOiJDb3RhIGRpw6FyaWEiLHF1b3RhSW50cm86Ik8gR29vZ2xlIGxpbWl0YSBxdWFudG8gY2FkYSBjb250YSBwb2RlIHJlY2ViZXIgcG9yIGRpYSAobmEgcHLDoXRpY2EsIH43NTAgR0IpLiBPIFJpZnREcml2ZSBwb2RlIHBhcmFyIGFudGVzIGRpc3NvLCBwb3Igc2VndXJhbsOnYSwgb3UgaXIgYXTDqSBvIEdvb2dsZSBjb3J0YXIuIixsaW1pdFRvOiJMaW1pdGFyIGEiLGdiUGVyRGF5OiJHQiBwb3IgZGlhIMK3IHJlbm92YSDDoHMiLGxpbWl0VGV4dDoiUXVhbmRvIGEgY290YSBkbyBkaWEgYWNhYmEsIGFzIGPDs3BpYXMgcGF1c2FtIGUgcmV0b21hbSBzb3ppbmhhcyBuYSByZW5vdmHDp8Ojby4gTnVuY2EgYmF0ZSBubyB0ZXRvIGRvIEdvb2dsZS4iLHVubGltaXRlZDoiU2VtIGxpbWl0ZSIsdW5saW1pdGVkVGV4dDoiQ29waWEgYXTDqSBvIEdvb2dsZSBjb3J0YXIuIFF1YW5kbyBjb3J0YXIsIG8gUmlmdERyaXZlIHBhdXNhIGEgY8OzcGlhLCBtb3N0cmEgbyBhdmlzbyBlIHRlbnRhIGRlIG5vdm8gYSBjYWRhIGhvcmEgYXTDqSBsaWJlcmFyLiIsc2F2ZWQ6IlNhbHZvIixhY2NvdW50c1RpdGxlOiJDb250YXMgZG8gR29vZ2xlIixjb25uZWN0ZWQ6ImNvbmVjdGFkYSIsZGlzY29ubmVjdGVkOnI9PnI/YGRlc2NvbmVjdGFkYSBkZXNkZSAke3J9YDoiZGVzY29uZWN0YWRhIixkZWZhdWx0RGVzdDoiZGVzdGlubyBwYWRyw6NvIixtYWtlRGVmYXVsdDoiVG9ybmFyIHBhZHLDo28iLHRlc3Q6IlRlc3RhciIsdGVzdGluZzoiVGVzdGFuZG/igKYiLHRlc3RPazpyPT5gT0sg4oCUICR7cn1gLHJlY29ubmVjdDoiUmVjb25lY3RhciIscmVtb3ZlOiJSZW1vdmVyIixjb25maXJtUmVtb3ZlOnI9PmBSZW1vdmVyICR7cn0/IEFzIGPDs3BpYXMgcXVlIGRlcGVuZGVtIGRlbGEgcGFyYW0uYCxjb25uZWN0QW5vdGhlcjoiKyBDb25lY3RhciBvdXRyYSBjb250YSIsY29weVRpdGxlOiJDw7NwaWEiLGRlZmF1bHRGb2xkZXI6IkRlc3Rpbm8gcGFkcsOjbyIsYmxvY2tlZFBvbGljeToiQXJxdWl2b3MgYmxvcXVlYWRvcyBwZWxvIGRvbm8gZmljYW0gZGUgZm9yYSBlIGFwYXJlY2VtIG5hIGxpc3RhIGRvIGpvYi4iLGNvcGllc1RpdGxlOiJDw7NwaWFzIHJlZ2lzdHJhZGFzIixjb3BpZXNJbnRybzonUGFzdGFzIGrDoSBjb3BpYWRhcy4gIlZlcmlmaWNhciBub3ZpZGFkZXMiIGNvbXBhcmEgYSBvcmlnZW0gY29tIG8gZGVzdGlubyBlIGRlaXhhIGJhaXhhciBzw7MgbyBxdWUgbXVkb3Ug4oCUIHNlbSBhcGFnYXIgbmFkYS4nLG5vQ29waWVzOiJOZW5odW1hIGPDs3BpYSBjb25jbHXDrWRhIGFpbmRhLiIsY2hlY2s6IlZlcmlmaWNhciBub3ZpZGFkZXMiLGNoZWNraW5nOiJWZXJpZmljYW5kb+KApiIsZm9yZ2V0OiJFc3F1ZWNlciIsbm9OZXdzOiJOYWRhIGRlIG5vdm8gbmEgb3JpZ2VtLiIsbmV3czoocixzKT0+YCR7cn0gJHtyPT09MT8ibm92byI6Im5vdm9zIn0gwrcgJHtzfSAke3M9PT0xPyJhdHVhbGl6YWRvIjoiYXR1YWxpemFkb3MifWAsZG93bmxvYWQ6IkJhaXhhciBzZWxlY2lvbmFkb3MiLGxhc3RDaGVja2VkOnI9PmB2ZXJpZmljYWRvICR7cn1gLG9hdXRoVGl0bGU6IkFjZXNzbyBhbyBHb29nbGUgKE9BdXRoIGNsaWVudCkiLG9hdXRoVGV4dDpyPT5gQ2xpZW50IGNvbmZpZ3VyYWRvOiAke3J9YCxvYXV0aENoYW5nZToiVHJvY2FyIn0sY29tbW9uOntsb2FkaW5nOiJDYXJyZWdhbmRv4oCmIixlcnJvcjoiQWxnbyBkZXUgZXJyYWRvLiIsY2xvc2U6IkZlY2hhciIsbXlEcml2ZToiTWV1IERyaXZlIixzdGFycmVkOiJDb20gZXN0cmVsYSIsY2hvb3NlOiJFc2NvbGhlciIsY2hhbmdlOiJ0cm9jYXIifX07ZnVuY3Rpb24gcnMoe2NoaWxkcmVuOnIsbWF4V2lkdGg6cz0ibWF4LXctMnhsIixyaWdodDpsfSl7cmV0dXJuIGQuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJtaW4taC1zY3JlZW4gZmxleCBmbGV4LWNvbCIsY2hpbGRyZW46W2QuanN4cygiaGVhZGVyIix7Y2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcHgtNCBzbTpweC02IHB5LTMgYm9yZGVyLWIgYm9yZGVyLWxpbmUiLGNoaWxkcmVuOltkLmpzeChzcCx7fSksZC5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIixjaGlsZHJlbjpbbD8/ZC5qc3goWHkse30pLGQuanN4KHhyLHt0bzoiL2NvbmZpZ3VyYWNvZXMiLCJhcmlhLWxhYmVsIjpqLm5hdi5zZXR0aW5ncyx0aXRsZTpqLm5hdi5zZXR0aW5ncyxjbGFzc05hbWU6InAtMiByb3VuZGVkLW1kIHRleHQtbXV0ZWQgaG92ZXI6dGV4dC1mZyBob3ZlcjpiZy13aGl0ZS9bMC4wNl0iLGNoaWxkcmVuOmQuanN4KEt5LHt9KX0pXX0pXX0pLGQuanN4KCJtYWluIix7Y2xhc3NOYW1lOmBteC1hdXRvIHctZnVsbCAke3N9IHB4LTQgc206cHgtNiBweS03IGZsZXgtMWAsY2hpbGRyZW46cn0pXX0pfWZ1bmN0aW9uIFh5KCl7Y29uc3R7ZGF0YTpyfT1xbCgpLHtzZXREZWZhdWx0OnN9PXJwKCk7aWYoIShyIT1udWxsJiZyLmxlbmd0aCkpcmV0dXJuIG51bGw7Y29uc3QgbD1yLmZpbmQodT0+dS5pc0RlZmF1bHREZXN0KT8/clswXTtyZXR1cm4gci5sZW5ndGg9PT0xP2QuanN4KCJzcGFuIix7Y2xhc3NOYW1lOmB0ZXh0LVsxMnB4XSBweC0yLjUgcHktMSByb3VuZGVkLW1kIGJnLXdoaXRlL1swLjA3XSAke2wuc3RhdHVzPT09ImRpc2Nvbm5lY3RlZCI/InRleHQtYW1iZXIiOiJ0ZXh0LW11dGVkIn1gLHRpdGxlOmwuZW1haWwsY2hpbGRyZW46bC5lbWFpbH0pOmQuanN4KCJzZWxlY3QiLHsiYXJpYS1sYWJlbCI6IkNvbnRhIGRlIGRlc3Rpbm8gcGFkcsOjbyIsdmFsdWU6bC5pZCxvbkNoYW5nZTp1PT5zLm11dGF0ZSh1LnRhcmdldC52YWx1ZSksY2xhc3NOYW1lOiJ0ZXh0LVsxMnB4XSBweC0yLjUgcHktMSByb3VuZGVkLW1kIGJnLXdoaXRlL1swLjA3XSB0ZXh0LW11dGVkIGJvcmRlci0wIG1heC13LVsyMjBweF0iLGNoaWxkcmVuOnIubWFwKHU9PmQuanN4cygib3B0aW9uIix7dmFsdWU6dS5pZCxjaGlsZHJlbjpbdS5lbWFpbCx1LnN0YXR1cz09PSJkaXNjb25uZWN0ZWQiPyIgKGRlc2NvbmVjdGFkYSkiOiIiXX0sdS5pZCkpfSl9Y29uc3QgWnk9e3ByaW1hcnk6ImJnLXZpb2xldCB0ZXh0LWluayBob3ZlcjpiZy12aW9sZXQtc3Ryb25nIGZvbnQtc2VtaWJvbGQgZGlzYWJsZWQ6b3BhY2l0eS01MCIsZ2hvc3Q6ImJnLXdoaXRlL1swLjA3XSB0ZXh0LWZnIGhvdmVyOmJnLXdoaXRlL1swLjExXSBmb250LW1lZGl1bSBkaXNhYmxlZDpvcGFjaXR5LTUwIixkYW5nZXI6ImJnLXJlZC8xNSB0ZXh0LXJlZCBob3ZlcjpiZy1yZWQvMjUgZm9udC1tZWRpdW0gZGlzYWJsZWQ6b3BhY2l0eS01MCIsbGluazoiYmctdHJhbnNwYXJlbnQgdGV4dC12aW9sZXQtc3Ryb25nIGhvdmVyOnVuZGVybGluZSBmb250LW1lZGl1bSBweC0wIHB5LTAgZGlzYWJsZWQ6b3BhY2l0eS01MCJ9LGV4PXtzbToidGV4dC1bMTJweF0gcHgtMi41IHB5LTEuNSByb3VuZGVkLW1kIixtZDoidGV4dC1bMTNweF0gcHgtMy41IHB5LTIgcm91bmRlZC1sZyJ9O2Z1bmN0aW9uIHdlKHt2YXJpYW50OnI9Imdob3N0IixzaXplOnM9Im1kIixjaGlsZHJlbjpsLGNsYXNzTmFtZTp1PSIiLC4uLmN9KXtjb25zdCBoPXI9PT0ibGluayI/IiI6ZXhbc107cmV0dXJuIGQuanN4KCJidXR0b24iLHt0eXBlOiJidXR0b24iLGNsYXNzTmFtZTpgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC0xLjUgdHJhbnNpdGlvbi1jb2xvcnMgJHtaeVtyXX0gJHtofSAke3V9YCwuLi5jLGNoaWxkcmVuOmx9KX1jb25zdCB0eD17aW5mbzoiYmctdmlvbGV0LzEwIHRleHQtZmciLHdhcm46ImJnLWFtYmVyLzEwIHRleHQtZmciLGVycm9yOiJiZy1yZWQvMTAgdGV4dC1mZyIsc3VjY2VzczoiYmctZ3JlZW4vMTAgdGV4dC1mZyJ9O2Z1bmN0aW9uIE90KHt0b25lOnI9ImluZm8iLGNoaWxkcmVuOnMsY2xhc3NOYW1lOmw9IiIscm9sZTp1fSl7cmV0dXJuIGQuanN4KCJkaXYiLHtyb2xlOnU/PyhyPT09ImVycm9yIj8iYWxlcnQiOnZvaWQgMCksY2xhc3NOYW1lOmByb3VuZGVkLWxnIHB4LTMuNSBweS0zIHRleHQtWzEzcHhdIGxlYWRpbmctcmVsYXhlZCAke3R4W3JdfSAke2x9YCxjaGlsZHJlbjpzfSl9Y29uc3QgbGg9WyJCIiwiS0IiLCJNQiIsIkdCIiwiVEIiXTtmdW5jdGlvbiBDdChyLHM9MSl7aWYocj09bnVsbHx8IU51bWJlci5pc0Zpbml0ZShyKSlyZXR1cm4i4oCUIjtpZihyPDEwMjQpcmV0dXJuYCR7TWF0aC5yb3VuZChyKX0gQmA7bGV0IGw9cix1PTA7Zm9yKDtsPj0xMDI0JiZ1PGxoLmxlbmd0aC0xOylsLz0xMDI0LHUrKztyZXR1cm5gJHtsLnRvTG9jYWxlU3RyaW5nKCJwdC1CUiIse21pbmltdW1GcmFjdGlvbkRpZ2l0czpsPj0xMDA/MDpzLG1heGltdW1GcmFjdGlvbkRpZ2l0czpsPj0xMDA/MDpzfSl9ICR7bGhbdV19YH1mdW5jdGlvbiBvcChyKXtyZXR1cm5gJHtDdChyKX0vc2B9ZnVuY3Rpb24gYXAocil7aWYocj09bnVsbHx8IU51bWJlci5pc0Zpbml0ZShyKSlyZXR1cm4iIjtpZihyPDYwKXJldHVybiI8IDEgbWluIjtjb25zdCBzPU1hdGguZmxvb3Ioci8zNjAwKSxsPU1hdGgucm91bmQociUzNjAwLzYwKTtyZXR1cm4gcz09PTA/YH4ke2x9IG1pbmA6YH4ke3N9aCR7U3RyaW5nKGwpLnBhZFN0YXJ0KDIsIjAiKX1gfWZ1bmN0aW9uIFNyKHIpe2lmKCFyKXJldHVybiIiO2NvbnN0IHM9bmV3IERhdGUocik7cmV0dXJuYCR7U3RyaW5nKHMuZ2V0SG91cnMoKSkucGFkU3RhcnQoMiwiMCIpfToke1N0cmluZyhzLmdldE1pbnV0ZXMoKSkucGFkU3RhcnQoMiwiMCIpfWB9ZnVuY3Rpb24gc3MocixzPW5ldyBEYXRlKXtpZighcilyZXR1cm4iIjtjb25zdCBsPW5ldyBEYXRlKHIpLHU9KGgscCk9PmguZ2V0RnVsbFllYXIoKT09PXAuZ2V0RnVsbFllYXIoKSYmaC5nZXRNb250aCgpPT09cC5nZXRNb250aCgpJiZoLmdldERhdGUoKT09PXAuZ2V0RGF0ZSgpO2lmKHUobCxzKSlyZXR1cm5gaG9qZSDDoHMgJHtTcihyKX1gO2NvbnN0IGM9bmV3IERhdGUocyk7cmV0dXJuIGMuc2V0RGF0ZShzLmdldERhdGUoKS0xKSx1KGwsYyk/YG9udGVtIMOgcyAke1NyKHIpfWA6bC50b0xvY2FsZURhdGVTdHJpbmcoInB0LUJSIix7ZGF5OiIyLWRpZ2l0Iixtb250aDoiMi1kaWdpdCJ9KX1mdW5jdGlvbiBueChyLHMpe3JldHVybiBzP01hdGgubWluKDEwMCxNYXRoLnJvdW5kKHIvcyoxMDApKTowfWZ1bmN0aW9uIHJ4KHthY2NvdW50SWQ6cixjbGFzc05hbWU6cz0iIn0pe2NvbnN0e2RhdGE6bH09Qnkocik7cmV0dXJuIGw/ZC5qc3goInNwYW4iLHtjbGFzc05hbWU6YHRleHQtWzEzcHhdIHRleHQtbXV0ZWQgJHtzfWAsY2hpbGRyZW46bC5tb2RlPT09InVubGltaXRlZCI/ai5xdW90YS51bmxpbWl0ZWQ6ZC5qc3hzKGQuRnJhZ21lbnQse2NoaWxkcmVuOltqLnF1b3RhLmxpbmUoIiIsIiIpLnNwbGl0KCIgICIpWzBdLGQuanN4KCJzcGFuIix7Y2xhc3NOYW1lOiJ0ZXh0LWZnIGZvbnQtbWVkaXVtIixjaGlsZHJlbjpDdChsLnJlbWFpbmluZ0J5dGVzKX0pLGAgcmVzdGFudGVzIMK3IHJlbm92YSDDoHMgJHtTcihsLnJlc2V0QXQpfWBdfSl9KTpudWxsfWZ1bmN0aW9uIGd1KHtsYWJlbDpyLGhpbnQ6cyxjbGFzc05hbWU6bD0iIiwuLi51fSl7cmV0dXJuIGQuanN4cygibGFiZWwiLHtjbGFzc05hbWU6YGJsb2NrICR7bH1gLGNoaWxkcmVuOltyJiZkLmpzeCgic3BhbiIse2NsYXNzTmFtZToibGFiZWwgYmxvY2sgbWItMS41IixjaGlsZHJlbjpyfSksZC5qc3goImlucHV0Iix7Y2xhc3NOYW1lOiJ3LWZ1bGwgYmctc3VyZmFjZSBib3JkZXIgYm9yZGVyLWxpbmUgcm91bmRlZC1sZyBweC0zIHB5LTIuNSB0ZXh0LVsxM3B4XSB0ZXh0LWZnIHBsYWNlaG9sZGVyOnRleHQtZmFpbnQgZm9jdXMtdmlzaWJsZTpib3JkZXItdmlvbGV0LzYwIGRpc2FibGVkOm9wYWNpdHktNTAiLC4uLnV9KSxzJiZkLmpzeCgic3BhbiIse2NsYXNzTmFtZToiYmxvY2sgbXQtMS41IHRleHQtWzEycHhdIHRleHQtbXV0ZWQiLGNoaWxkcmVuOnN9KV19KX1mdW5jdGlvbiBpeCh7bGFiZWw6cixjbGFzc05hbWU6cz0iIixjaGlsZHJlbjpsLC4uLnV9KXtyZXR1cm4gZC5qc3hzKCJsYWJlbCIse2NsYXNzTmFtZTpgYmxvY2sgJHtzfWAsY2hpbGRyZW46W3ImJmQuanN4KCJzcGFuIix7Y2xhc3NOYW1lOiJsYWJlbCBibG9jayBtYi0xLjUiLGNoaWxkcmVuOnJ9KSxkLmpzeCgic2VsZWN0Iix7Y2xhc3NOYW1lOiJ3LWZ1bGwgYmctc3VyZmFjZSBib3JkZXIgYm9yZGVyLWxpbmUgcm91bmRlZC1sZyBweC0zIHB5LTIgdGV4dC1bMTNweF0gdGV4dC1mZyBmb2N1cy12aXNpYmxlOmJvcmRlci12aW9sZXQvNjAiLC4uLnUsY2hpbGRyZW46bH0pXX0pfWNvbnN0IHN4PXtpZDoicm9vdCIsbmFtZTpqLmNvbW1vbi5teURyaXZlfTtmdW5jdGlvbiB1cCh7YWNjb3VudElkOnIsdmFsdWU6cyxvbkNoYW5nZTpsfSl7Y29uc3RbdSxjXT1FLnVzZVN0YXRlKCExKSxbaCxwXT1FLnVzZVN0YXRlKFtzeF0pLG09aFtoLmxlbmd0aC0xXSx2PW0uaWQ9PT0icm9vdCIse2RhdGE6Uyxpc0xvYWRpbmc6QyxlcnJvcjp4fT1yaCh1P3I6dm9pZCAwLG0uaWQpLHtkYXRhOl99PXJoKHUmJnY/cjp2b2lkIDAsInN0YXJyZWQiKTtpZighdSlyZXR1cm4gZC5qc3hzKCJzcGFuIix7Y2xhc3NOYW1lOiJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgdGV4dC1bMTNweF0iLGNoaWxkcmVuOltkLmpzeHMoInNwYW4iLHtjbGFzc05hbWU6ImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41IHB4LTIuNSBweS0xLjUgcm91bmRlZC1sZyBiZy1zdXJmYWNlIGJvcmRlciBib3JkZXItbGluZSIsY2hpbGRyZW46W3Muc3RhcnJlZD9kLmpzeChZYSx7Y2xhc3NOYW1lOiJ0ZXh0LWFtYmVyIix3aWR0aDoxNCxoZWlnaHQ6MTR9KTpkLmpzeChzaCx7Y2xhc3NOYW1lOiJ0ZXh0LW11dGVkIn0pLHMubmFtZV19KSxkLmpzeCh3ZSx7dmFyaWFudDoibGluayIsc2l6ZToic20iLG9uQ2xpY2s6KCk9PmMoITApLGNoaWxkcmVuOmouY29tbW9uLmNoYW5nZX0pXX0pO2NvbnN0IEk9KE8sRik9PmQuanN4cygiYnV0dG9uIix7dHlwZToiYnV0dG9uIixjbGFzc05hbWU6InctZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ2FwLTIgcHgtMiBweS0xLjUgcm91bmRlZC1tZCBob3ZlcjpiZy13aGl0ZS9bMC4wNl0gdGV4dC1sZWZ0IixvbkNsaWNrOigpPT5wKFsuLi5oLE9dKSxjaGlsZHJlbjpbZC5qc3hzKCJzcGFuIix7Y2xhc3NOYW1lOiJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgdHJ1bmNhdGUiLGNoaWxkcmVuOltGLGQuanN4KCJzcGFuIix7Y2xhc3NOYW1lOiJ0cnVuY2F0ZSIsY2hpbGRyZW46Ty5uYW1lfSldfSksZC5qc3goaWgse2NsYXNzTmFtZToidGV4dC1mYWludCBzaHJpbmstMCIsd2lkdGg6MTIsaGVpZ2h0OjEyfSldfSxPLmlkKTtyZXR1cm4gZC5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImNhcmQgcC0zIHRleHQtWzEzcHhdIHctZnVsbCIsY2hpbGRyZW46W2QuanN4KCJuYXYiLHsiYXJpYS1sYWJlbCI6IlBhc3RhIGF0dWFsIixjbGFzc05hbWU6ImZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAtMSB0ZXh0LW11dGVkIG1iLTIiLGNoaWxkcmVuOmgubWFwKChPLEYpPT5kLmpzeHMoInNwYW4iLHtjbGFzc05hbWU6ImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBnYXAtMSIsY2hpbGRyZW46W0Y+MCYmZC5qc3goaWgse2NsYXNzTmFtZToidGV4dC1mYWludCIsd2lkdGg6MTIsaGVpZ2h0OjEyfSksZC5qc3hzKCJidXR0b24iLHt0eXBlOiJidXR0b24iLGNsYXNzTmFtZTpgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdhcC0xIHJvdW5kZWQgcHgtMSAke0Y9PT1oLmxlbmd0aC0xPyJ0ZXh0LWZnIGZvbnQtbWVkaXVtIjoiaG92ZXI6dGV4dC1mZyJ9YCxvbkNsaWNrOigpPT5wKGguc2xpY2UoMCxGKzEpKSxjaGlsZHJlbjpbTy5zdGFycmVkJiZkLmpzeChZYSx7Y2xhc3NOYW1lOiJ0ZXh0LWFtYmVyIix3aWR0aDoxMixoZWlnaHQ6MTJ9KSxPLm5hbWVdfSldfSxPLmlkKSl9KSxkLmpzeHMoImRpdiIse2NsYXNzTmFtZToibWF4LWgtNjQgb3ZlcmZsb3ctYXV0byAtbXgtMSIsY2hpbGRyZW46W3YmJl8mJl8ubGVuZ3RoPjAmJmQuanN4cyhkLkZyYWdtZW50LHtjaGlsZHJlbjpbZC5qc3goImRpdiIse2NsYXNzTmFtZToibGFiZWwgcHgtMiBwdC0xIHBiLTEiLGNoaWxkcmVuOmouY29tbW9uLnN0YXJyZWR9KSxfLm1hcChPPT5JKHsuLi5PLHN0YXJyZWQ6ITB9LGQuanN4KFlhLHtjbGFzc05hbWU6InRleHQtYW1iZXIgc2hyaW5rLTAiLHdpZHRoOjE0LGhlaWdodDoxNH0pKSksZC5qc3goImRpdiIse2NsYXNzTmFtZToibGFiZWwgcHgtMiBwdC0zIHBiLTEiLGNoaWxkcmVuOmouY29tbW9uLm15RHJpdmV9KV19KSxDJiZkLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOiJweC0yIHB5LTEuNSB0ZXh0LW11dGVkIixjaGlsZHJlbjpqLmNvbW1vbi5sb2FkaW5nfSkseCYmZC5qc3goImRpdiIse2NsYXNzTmFtZToicHgtMiBweS0xLjUgdGV4dC1yZWQiLGNoaWxkcmVuOngubWVzc2FnZX0pLChTPT1udWxsP3ZvaWQgMDpTLmxlbmd0aCk9PT0wJiZkLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOiJweC0yIHB5LTEuNSB0ZXh0LW11dGVkIixjaGlsZHJlbjoi4oCUIn0pLFM9PW51bGw/dm9pZCAwOlMubWFwKE89PkkoTyxkLmpzeChzaCx7Y2xhc3NOYW1lOiJ0ZXh0LW11dGVkIHNocmluay0wIn0pKSldfSksZC5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImZsZXgganVzdGlmeS1lbmQgZ2FwLTIgbXQtMiBwdC0yIGJvcmRlci10IGJvcmRlci1saW5lIixjaGlsZHJlbjpbZC5qc3god2Use3NpemU6InNtIixvbkNsaWNrOigpPT5jKCExKSxjaGlsZHJlbjpqLmNvbW1vbi5jbG9zZX0pLGQuanN4cyh3ZSx7c2l6ZToic20iLHZhcmlhbnQ6InByaW1hcnkiLG9uQ2xpY2s6KCk9PntsKG0pLGMoITEpfSxjaGlsZHJlbjpbai5jb21tb24uY2hvb3NlLCIg4oCcIixtLm5hbWUsIuKAnSJdfSldfSldfSl9ZnVuY3Rpb24gYmwoe3BhdGg6cixzaXplOnM9InNtIn0pe2NvbnN0IGw9cj09PSJyaWZ0IjtyZXR1cm4gZC5qc3goInNwYW4iLHt0aXRsZTpsP2oucGF0aC5yaWZ0VGl0bGU6ai5wYXRoLm1hY2hpbmVUaXRsZSxjbGFzc05hbWU6YGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciByb3VuZGVkIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctWzAuMDJlbV0gd2hpdGVzcGFjZS1ub3dyYXAgJHtzPT09Im1kIj8idGV4dC1bMTJweF0gcHgtMi41IHB5LTEiOiJ0ZXh0LVsxMC41cHhdIHB4LTIgcHktMC41In0gJHtsPyJiZy12aW9sZXQvWzAuMThdIHRleHQtdmlvbGV0LXN0cm9uZyI6ImJnLWFtYmVyL1swLjE2XSB0ZXh0LWFtYmVyIn1gLGNoaWxkcmVuOmw/ai5wYXRoLnJpZnQ6ai5wYXRoLm1hY2hpbmV9KX1mdW5jdGlvbiBseCh7dGV4dDpyfSl7Y29uc3RbcyxsXT1FLnVzZVN0YXRlKCExKSx1PWFzeW5jKCk9Pnt0cnl7YXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQociksbCghMCksc2V0VGltZW91dCgoKT0+bCghMSksMmUzKX1jYXRjaHt3aW5kb3cucHJvbXB0KCJDb3BpZSBvIHRleHRvIGFiYWl4bzoiLHIpfX07cmV0dXJuIGQuanN4cyh3ZSx7c2l6ZToic20iLG9uQ2xpY2s6dSwiYXJpYS1saXZlIjoicG9saXRlIixjaGlsZHJlbjpbZC5qc3goWXkse3dpZHRoOjE0LGhlaWdodDoxNH0pLHM/ai5hbmFseXNpcy5jb3BpZWQ6ai5hbmFseXNpcy5jb3B5UmVxdWVzdF19KX1mdW5jdGlvbiBveCh7aW5zcGVjdGlvbjpyLGFjY291bnRzOnMsb25SZWluc3BlY3Q6bCxvbkNhbmNlbDp1LG9uU3RhcnRlZDpjfSl7Y29uc3RbaCxwXT1FLnVzZVN0YXRlKHIubmFtZSksW20sdl09RS51c2VTdGF0ZSgicmVuYW1lIiksW1MsQ109RS51c2VTdGF0ZSghMSkseD1XeSgpLF89e2lkOnIuZGVzdFBhcmVudElkLG5hbWU6ci5kZXN0UGFyZW50TmFtZX0sST1yLnBhdGg9PT0icmlmdCIsTz0oKT0+eC5tdXRhdGUoe2luc3BlY3Rpb25JZDpyLmluc3BlY3Rpb25JZCxuYW1lOmgudHJpbSgpfHxyLm5hbWUsZGVzdEFjY291bnRJZDpyLmRlc3RBY2NvdW50SWQsZGVzdFBhcmVudElkOnIuZGVzdFBhcmVudElkLGRlc3RQYXJlbnROYW1lOnIuZGVzdFBhcmVudE5hbWUsY29uZmxpY3Q6ci5kZXN0Q29uZmxpY3Q/bTp2b2lkIDB9LHtvblN1Y2Nlc3M6Y30pO3JldHVybiBkLmpzeHMoInNlY3Rpb24iLHtjbGFzc05hbWU6ImNhcmQgcC00IHNtOnAtNSBncmlkIGdhcC00IiwiYXJpYS1sYWJlbCI6IkFuw6FsaXNlIGRhIHBhc3RhIixjaGlsZHJlbjpbZC5qc3hzKCJoZWFkZXIiLHtjbGFzc05hbWU6ImZsZXggZmxleC13cmFwIGl0ZW1zLWJhc2VsaW5lIGp1c3RpZnktYmV0d2VlbiBnYXAteC00IGdhcC15LTEiLGNoaWxkcmVuOltkLmpzeCgiaDIiLHtjbGFzc05hbWU6InRleHQtWzE1cHhdIGZvbnQtc2VtaWJvbGQiLGNoaWxkcmVuOnIubmFtZX0pLGQuanN4cygic3BhbiIse2NsYXNzTmFtZToibnVtIHRleHQtbXV0ZWQiLGNoaWxkcmVuOltqLmFuYWx5c2lzLmZpbGVzKHIudG90YWxzLmZpbGVzKSwiIMK3ICIsQ3Qoci50b3RhbHMuYnl0ZXMpLHIub3duZXImJmQuanN4cyhkLkZyYWdtZW50LHtjaGlsZHJlbjpbIiDCtyAiLGouYW5hbHlzaXMuZnJvbShyLm93bmVyKV19KV19KV19KSxkLmpzeHMoImRsIix7Y2xhc3NOYW1lOiJncmlkIGdyaWQtY29scy1bODhweF8xZnJdIGdhcC14LTQgZ2FwLXktMyB0ZXh0LVsxM3B4XSBpdGVtcy1iYXNlbGluZSIsY2hpbGRyZW46W2QuanN4KCJkdCIse2NsYXNzTmFtZToibGFiZWwgcHQtMC41IixjaGlsZHJlbjpqLmFuYWx5c2lzLnBhdGhMYWJlbH0pLGQuanN4cygiZGQiLHtjbGFzc05hbWU6ImdyaWQgZ2FwLTIiLGNoaWxkcmVuOltkLmpzeHMoImRpdiIse2NsYXNzTmFtZToiZmxleCBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIGdhcC0yIixjaGlsZHJlbjpbZC5qc3goYmwse3BhdGg6ci5wYXRoLHNpemU6Im1kIn0pLCFJJiZkLmpzeHMoInNwYW4iLHtjbGFzc05hbWU6InRleHQtbXV0ZWQiLGNoaWxkcmVuOlsiwrcgIixqLmFuYWx5c2lzLmtlZXBPcGVuXX0pXX0pLEk/ZC5qc3goInAiLHtjbGFzc05hbWU6InRleHQtbXV0ZWQgbGVhZGluZy1yZWxheGVkIixjaGlsZHJlbjpqLmFuYWx5c2lzLnJpZnRUZXh0KHIuZGVzdEVtYWlsKX0pOmQuanN4cyhPdCx7dG9uZToid2FybiIsY2hpbGRyZW46W2QuanN4cygicCIse2NoaWxkcmVuOltqLmFuYWx5c2lzLm1hY2hpbmVUZXh0KHIuZGVzdEVtYWlsKSwiICIsZC5qc3goInNwYW4iLHtjbGFzc05hbWU6InRleHQtbXV0ZWQiLGNoaWxkcmVuOmouYW5hbHlzaXMubWFjaGluZUhpbnR9KV19KSxyLnNoYXJlUmVxdWVzdFRleHQmJmQuanN4KCJkaXYiLHtjbGFzc05hbWU6Im10LTIiLGNoaWxkcmVuOmQuanN4KGx4LHt0ZXh0OnIuc2hhcmVSZXF1ZXN0VGV4dH0pfSldfSldfSksKHIuYmxvY2tlZC5jb3VudD4wfHxyLm5hdGl2ZS5jb3VudD4wKSYmZC5qc3hzKGQuRnJhZ21lbnQse2NoaWxkcmVuOltkLmpzeCgiZHQiLHtjbGFzc05hbWU6ImxhYmVsIHB0LTAuNSIsY2hpbGRyZW46ai5hbmFseXNpcy5ibG9ja2VkTGFiZWx9KSxkLmpzeHMoImRkIix7Y2xhc3NOYW1lOiJncmlkIGdhcC0xLjUiLGNoaWxkcmVuOltyLmJsb2NrZWQuY291bnQ+MCYmZC5qc3hzKCJkaXYiLHtjaGlsZHJlbjpbZC5qc3goInNwYW4iLHtjbGFzc05hbWU6InRleHQtYW1iZXIiLGNoaWxkcmVuOmouYW5hbHlzaXMuYmxvY2tlZChyLmJsb2NrZWQuY291bnQpfSksIiAiLGQuanN4cygic3BhbiIse2NsYXNzTmFtZToidGV4dC1tdXRlZCIsY2hpbGRyZW46WyLigJQgIixqLmFuYWx5c2lzLmJsb2NrZWRUZXh0LCIgwrcgIixqLmFuYWx5c2lzLmNvcHlhYmxlKEN0KHIuY29weWFibGVCeXRlcykpXX0pLCIgIixkLmpzeCh3ZSx7dmFyaWFudDoibGluayIsc2l6ZToic20iLG9uQ2xpY2s6KCk9PkMoRj0+IUYpLGNoaWxkcmVuOlM/ai5hbmFseXNpcy5oaWRlOmouYW5hbHlzaXMuc2VlV2hpY2h9KSxTJiZkLmpzeHMoInVsIix7Y2xhc3NOYW1lOiJtdC0xLjUgZ3JpZCBnYXAtMC41IG51bSB0ZXh0LW11dGVkIG1heC1oLTQwIG92ZXJmbG93LWF1dG8iLGNoaWxkcmVuOltyLmJsb2NrZWQuc2FtcGxlLm1hcChGPT5kLmpzeCgibGkiLHtjbGFzc05hbWU6InRydW5jYXRlIixjaGlsZHJlbjpGLnJlbFBhdGh9LEYucmVsUGF0aCkpLHIuYmxvY2tlZC5jb3VudD5yLmJsb2NrZWQuc2FtcGxlLmxlbmd0aCYmZC5qc3hzKCJsaSIse2NoaWxkcmVuOlsi4oCmIGUgbWFpcyAiLHIuYmxvY2tlZC5jb3VudC1yLmJsb2NrZWQuc2FtcGxlLmxlbmd0aF19KV19KV19KSxyLm5hdGl2ZS5jb3VudD4wJiZkLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOiJ0ZXh0LW11dGVkIixjaGlsZHJlbjpqLmFuYWx5c2lzLm5hdGl2ZShyLm5hdGl2ZS5jb3VudCl9KV19KV19KSxkLmpzeCgiZHQiLHtjbGFzc05hbWU6ImxhYmVsIHB0LTAuNSIsY2hpbGRyZW46ai5hbmFseXNpcy5kZXN0TGFiZWx9KSxkLmpzeHMoImRkIix7Y2xhc3NOYW1lOiJncmlkIGdhcC0yIixjaGlsZHJlbjpbZC5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAtMiIsY2hpbGRyZW46W3MubGVuZ3RoPjE/ZC5qc3goaXgseyJhcmlhLWxhYmVsIjoiQ29udGEgZGUgZGVzdGlubyIsdmFsdWU6ci5kZXN0QWNjb3VudElkLG9uQ2hhbmdlOkY9Pmwoe2Rlc3RBY2NvdW50SWQ6Ri50YXJnZXQudmFsdWUsZGVzdFBhcmVudElkOiJyb290IixkZXN0UGFyZW50TmFtZTpqLmNvbW1vbi5teURyaXZlfSksY2xhc3NOYW1lOiJ3LWF1dG8iLGNoaWxkcmVuOnMubWFwKEY9PmQuanN4KCJvcHRpb24iLHt2YWx1ZTpGLmlkLGNoaWxkcmVuOkYuZW1haWx9LEYuaWQpKX0pOmQuanN4KCJzcGFuIix7Y2xhc3NOYW1lOiJweC0yLjUgcHktMS41IHJvdW5kZWQtbGcgYmctc3VyZmFjZSBib3JkZXIgYm9yZGVyLWxpbmUiLGNoaWxkcmVuOnIuZGVzdEVtYWlsfSksZC5qc3godXAse2FjY291bnRJZDpyLmRlc3RBY2NvdW50SWQsdmFsdWU6XyxvbkNoYW5nZTpGPT5sKHtkZXN0QWNjb3VudElkOnIuZGVzdEFjY291bnRJZCxkZXN0UGFyZW50SWQ6Ri5pZCxkZXN0UGFyZW50TmFtZTpGLm5hbWV9KX0pXX0pLGQuanN4KGd1LHtsYWJlbDpqLmFuYWx5c2lzLm5hbWVMYWJlbCx2YWx1ZTpoLG9uQ2hhbmdlOkY9PnAoRi50YXJnZXQudmFsdWUpLGNsYXNzTmFtZToibWF4LXctbWQifSksci5kZXN0Q29uZmxpY3QmJmQuanN4cyhPdCx7dG9uZToid2FybiIsY2hpbGRyZW46W2QuanN4KCJwIix7Y2xhc3NOYW1lOiJtYi0yIixjaGlsZHJlbjpqLmFuYWx5c2lzLmNvbmZsaWN0VGV4dChyLm5hbWUpfSksZC5qc3hzKCJsYWJlbCIse2NsYXNzTmFtZToiZmxleCBpdGVtcy1zdGFydCBnYXAtMiBjdXJzb3ItcG9pbnRlciIsY2hpbGRyZW46W2QuanN4KCJpbnB1dCIse3R5cGU6InJhZGlvIixuYW1lOiJjb25mbGljdCIsY2hlY2tlZDptPT09InJlbmFtZSIsb25DaGFuZ2U6KCk9PnYoInJlbmFtZSIpLGNsYXNzTmFtZToibXQtMSBhY2NlbnQtdmlvbGV0In0pLGQuanN4KCJzcGFuIix7Y2hpbGRyZW46ai5hbmFseXNpcy5jb25mbGljdFJlbmFtZShoLnRyaW0oKXx8ci5uYW1lKX0pXX0pLGQuanN4cygibGFiZWwiLHtjbGFzc05hbWU6ImZsZXggaXRlbXMtc3RhcnQgZ2FwLTIgY3Vyc29yLXBvaW50ZXIgbXQtMS41IixjaGlsZHJlbjpbZC5qc3goImlucHV0Iix7dHlwZToicmFkaW8iLG5hbWU6ImNvbmZsaWN0IixjaGVja2VkOm09PT0ibWVyZ2UiLG9uQ2hhbmdlOigpPT52KCJtZXJnZSIpLGNsYXNzTmFtZToibXQtMSBhY2NlbnQtdmlvbGV0In0pLGQuanN4KCJzcGFuIix7Y2hpbGRyZW46ai5hbmFseXNpcy5jb25mbGljdE1lcmdlfSldfSldfSldfSksZC5qc3goImR0Iix7Y2xhc3NOYW1lOiJsYWJlbCBwdC0wLjUiLGNoaWxkcmVuOmouYW5hbHlzaXMucXVvdGFMYWJlbH0pLGQuanN4KCJkZCIse2NsYXNzTmFtZToidGV4dC1tdXRlZCIsY2hpbGRyZW46ci5xdW90YS5tb2RlPT09InVubGltaXRlZCI/ai5xdW90YS51bmxpbWl0ZWRTaG9ydDpyLnF1b3RhLmZpdHM/ZC5qc3hzKGQuRnJhZ21lbnQse2NoaWxkcmVuOltqLnF1b3RhLmZpdHMsIiDCtyAiLGQuanN4KCJzcGFuIix7Y2xhc3NOYW1lOiJ0ZXh0LWZnIGZvbnQtbWVkaXVtIixjaGlsZHJlbjpDdChyLnF1b3RhLnJlbWFpbmluZ0J5dGVzKX0pLCIgcmVzdGFudGVzLCByZW5vdmEgw6BzICIsU3Ioci5xdW90YS5yZXNldEF0KV19KTpkLmpzeCgic3BhbiIse2NsYXNzTmFtZToidGV4dC1hbWJlciIsY2hpbGRyZW46ai5xdW90YS5kb2VzTm90Rml0KFNyKHIucXVvdGEucmVzZXRBdCkpfSl9KV19KSx4LmVycm9yJiZkLmpzeChPdCx7dG9uZToiZXJyb3IiLGNoaWxkcmVuOnguZXJyb3IubWVzc2FnZX0pLGQuanN4cygiZm9vdGVyIix7Y2xhc3NOYW1lOiJmbGV4IGp1c3RpZnktZW5kIGdhcC0yIHB0LTEiLGNoaWxkcmVuOltkLmpzeCh3ZSx7b25DbGljazp1LGNoaWxkcmVuOmouYW5hbHlzaXMuY2FuY2VsfSksZC5qc3god2Use3ZhcmlhbnQ6InByaW1hcnkiLG9uQ2xpY2s6TyxkaXNhYmxlZDp4LmlzUGVuZGluZyxjaGlsZHJlbjp4LmlzUGVuZGluZz9qLmFuYWx5c2lzLnN0YXJ0aW5nOmouYW5hbHlzaXMuc3RhcnR9KV19KV19KX1mdW5jdGlvbiBjcCh7am9iOnIsY2xhc3NOYW1lOnM9IiJ9KXtjb25zdCBsPXIuc3RhdHVzPT09ImRvbmUiPzEwMDpueChyLmRvbmUuYnl0ZXMsci50b3RhbHMuYnl0ZXMpLHU9ci5zdGF0dXM9PT0iZG9uZSI/ImJnLWdyZWVuIjpwcyhyKT8iYmctYW1iZXIiOnIuc3RhdHVzPT09ImZhaWxlZCJ8fHIuc3RhdHVzPT09ImNhbmNlbGVkIj8iYmctd2hpdGUvMjAiOiJiZy1ncmFkaWVudC10by1yIGZyb20tY3lhbiB0by12aW9sZXQiO3JldHVybiBkLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOmBoLTEuNSByb3VuZGVkLWZ1bGwgYmctd2hpdGUvWzAuMDhdIG92ZXJmbG93LWhpZGRlbiAke3N9YCxyb2xlOiJwcm9ncmVzc2JhciIsImFyaWEtdmFsdWVub3ciOmwsImFyaWEtdmFsdWVtaW4iOjAsImFyaWEtdmFsdWVtYXgiOjEwMCxjaGlsZHJlbjpkLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOmBoLWZ1bGwgcm91bmRlZC1mdWxsIHRyYW5zaXRpb24tW3dpZHRoXSBkdXJhdGlvbi01MDAgJHt1fWAsc3R5bGU6e3dpZHRoOmAke2x9JWB9fSl9KX1mdW5jdGlvbiBheCh7am9iOnJ9KXtjb25zdCBzPW5wKCksbD11PT5jPT57Yy5zdG9wUHJvcGFnYXRpb24oKSx1KCl9O3JldHVybiBkLmpzeHMoImRldGFpbHMiLHtjbGFzc05hbWU6InJlbGF0aXZlIixvbkNsaWNrOnU9PnUuc3RvcFByb3BhZ2F0aW9uKCksY2hpbGRyZW46W2QuanN4KCJzdW1tYXJ5Iix7Y2xhc3NOYW1lOiJsaXN0LW5vbmUgY3Vyc29yLXBvaW50ZXIgcC0xLjUgcm91bmRlZC1tZCB0ZXh0LW11dGVkIGhvdmVyOnRleHQtZmcgaG92ZXI6Ymctd2hpdGUvWzAuMDhdIiwiYXJpYS1sYWJlbCI6IkHDp8O1ZXMiLGNoaWxkcmVuOmQuanN4KEd5LHt9KX0pLGQuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJhYnNvbHV0ZSByaWdodC0wIG10LTEgei0xMCBjYXJkIHAtMSBtaW4tdy1bMTgwcHhdIHRleHQtWzEzcHhdIixjaGlsZHJlbjpbci5zdGF0dXM9PT0icnVubmluZyJ8fHIuc3RhdHVzPT09InF1ZXVlZCI/ZC5qc3goZXMse29uQ2xpY2s6bCgoKT0+cy5wYXVzZS5tdXRhdGUoci5pZCkpLGNoaWxkcmVuOmouam9iLnBhdXNlfSk6cHMocik/ZC5qc3goZXMse29uQ2xpY2s6bCgoKT0+cy5yZXN1bWUubXV0YXRlKHIuaWQpKSxjaGlsZHJlbjpqLmpvYi5yZXN1bWV9KTpudWxsLCF6bChyKSYmZC5qc3goZXMse29uQ2xpY2s6bCgoKT0+d2luZG93LmNvbmZpcm0oai5qb2IuY29uZmlybUNhbmNlbCkmJnMuY2FuY2VsLm11dGF0ZShyLmlkKSksY2hpbGRyZW46ai5qb2IuY2FuY2VsfSksci5kZXN0LmZvbGRlcklkJiZkLmpzeChlcyx7b25DbGljazpsKCgpPT53aW5kb3cub3BlbihgaHR0cHM6Ly9kcml2ZS5nb29nbGUuY29tL2RyaXZlL2ZvbGRlcnMvJHtyLmRlc3QuZm9sZGVySWR9YCwiX2JsYW5rIiwibm9vcGVuZXIiKSksY2hpbGRyZW46ai5qb2Iub3BlbkluRHJpdmV9KSwhaHMocikmJmQuanN4KGVzLHt0b25lOiJkYW5nZXIiLG9uQ2xpY2s6bCgoKT0+d2luZG93LmNvbmZpcm0oai5qb2IuY29uZmlybVJlbW92ZSkmJnMucmVtb3ZlLm11dGF0ZShyLmlkKSksY2hpbGRyZW46ai5qb2IucmVtb3ZlfSldfSldfSl9ZnVuY3Rpb24gZXMoe2NoaWxkcmVuOnIsb25DbGljazpzLHRvbmU6bH0pe3JldHVybiBkLmpzeCgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixvbkNsaWNrOnMsY2xhc3NOYW1lOmB3LWZ1bGwgdGV4dC1sZWZ0IHB4LTMgcHktMS41IHJvdW5kZWQtbWQgaG92ZXI6Ymctd2hpdGUvWzAuMDhdICR7bD09PSJkYW5nZXIiPyJ0ZXh0LXJlZCI6IiJ9YCxjaGlsZHJlbjpyfSl9ZnVuY3Rpb24gdXgoe2pvYjpyLGNvbXBhY3Q6cz0hMX0pe3ZhciBoO2NvbnN0IGw9S24oKSx1PSgpPT5sKGAvY29waWEvJHtyLmlkfWApLGM9cHMocik7cmV0dXJuIGQuanN4cygiYXJ0aWNsZSIse2NsYXNzTmFtZTpgY2FyZCBjdXJzb3ItcG9pbnRlciBob3Zlcjpib3JkZXItd2hpdGUvWzAuMTRdIHRyYW5zaXRpb24tY29sb3JzICR7cz8icHgtNCBweS0zIjoicC00In1gLG9uQ2xpY2s6dSxvbktleURvd246cD0+cC5rZXk9PT0iRW50ZXIiJiZ1KCksdGFiSW5kZXg6MCxyb2xlOiJsaW5rIiwiYXJpYS1sYWJlbCI6ci5uYW1lLGNoaWxkcmVuOltkLmpzeHMoImRpdiIse2NsYXNzTmFtZToiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC0zIixjaGlsZHJlbjpbZC5qc3hzKCJkaXYiLHtjbGFzc05hbWU6Im1pbi13LTAgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIuNSIsY2hpbGRyZW46W3MmJmQuanN4KCJzcGFuIix7Y2xhc3NOYW1lOmB0ZXh0LVsxMXB4XSBweC0xLjUgcHktMC41IHJvdW5kZWQgJHtyLnN0YXR1cz09PSJkb25lIj8iYmctZ3JlZW4vWzAuMTZdIHRleHQtZ3JlZW4iOiJiZy13aGl0ZS9bMC4wOF0gdGV4dC1tdXRlZCJ9YCxjaGlsZHJlbjpqLmpvYi5zdGF0dXNbci5zdGF0dXNdfSksZC5qc3goImgzIix7Y2xhc3NOYW1lOiJmb250LXNlbWlib2xkIHRydW5jYXRlIixjaGlsZHJlbjpyLm5hbWV9KV19KSxkLmpzeHMoImRpdiIse2NsYXNzTmFtZToiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgc2hyaW5rLTAiLGNoaWxkcmVuOltkLmpzeChibCx7cGF0aDpyLnBhdGh9KSxkLmpzeChheCx7am9iOnJ9KV19KV19KSwhcyYmZC5qc3hzKGQuRnJhZ21lbnQse2NoaWxkcmVuOltkLmpzeChjcCx7am9iOnIsY2xhc3NOYW1lOiJtdC0zIn0pLGQuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJtdC0yIGZsZXggZmxleC13cmFwIGp1c3RpZnktYmV0d2VlbiBnYXAteC00IGdhcC15LTEgbnVtIHRleHQtbXV0ZWQiLGNoaWxkcmVuOltkLmpzeHMoInNwYW4iLHtjaGlsZHJlbjpbai5qb2IuZmlsZXMoci5kb25lLmZpbGVzLHIudG90YWxzLmZpbGVzKSxyLnNraXBwZWRGaWxlcz4wJiZkLmpzeHMoZC5GcmFnbWVudCx7Y2hpbGRyZW46WyIgwrcgIixqLmpvYi5ibG9ja2VkU2hvcnQoci5za2lwcGVkRmlsZXMpXX0pXX0pLGQuanN4cygic3BhbiIse2NoaWxkcmVuOltqLmpvYi5ieXRlcyhDdChyLmRvbmUuYnl0ZXMpLEN0KHIudG90YWxzLmJ5dGVzKSksci5zdGF0cyYmci5zdGF0cy5ieXRlc1BlclNlYz4wJiZkLmpzeHMoZC5GcmFnbWVudCx7Y2hpbGRyZW46WyIgwrcgIixvcChyLnN0YXRzLmJ5dGVzUGVyU2VjKV19KSwoKGg9ci5zdGF0cyk9PW51bGw/dm9pZCAwOmguZXRhU2VjKSE9bnVsbCYmci5zdGF0cy5ldGFTZWM+MCYmZC5qc3hzKGQuRnJhZ21lbnQse2NoaWxkcmVuOlsiIMK3ICIsYXAoci5zdGF0cy5ldGFTZWMpXX0pXX0pXX0pLGMmJmQuanN4cygicCIse2NsYXNzTmFtZToibXQtMiB0ZXh0LVsxMi41cHhdIHRleHQtYW1iZXIiLGNoaWxkcmVuOltyLnJlc3VtZVJlYXNvbixyLnBhdXNlZFVudGlsJiZyLnN0YXR1cyE9PSJwYXVzZWQiJiZkLmpzeHMoZC5GcmFnbWVudCx7Y2hpbGRyZW46WyIgwrcgIixqLmpvYi5yZXN1bWVzQXQoU3Ioci5wYXVzZWRVbnRpbCkpXX0pXX0pXX0pLHMmJmQuanN4cygicCIse2NsYXNzTmFtZToibXQtMSB0ZXh0LVsxMnB4XSB0ZXh0LW11dGVkIHRydW5jYXRlIixjaGlsZHJlbjpbc3Moci5maW5pc2hlZEF0Pz9yLmNyZWF0ZWRBdCksIiDCtyAiLGouam9iLmZpbGVzKHIuZG9uZS5maWxlcyxyLnRvdGFscy5maWxlcyksIiDCtyAiLEN0KHIuZG9uZS5ieXRlcyksci5tZXNzYWdlJiZkLmpzeHMoZC5GcmFnbWVudCx7Y2hpbGRyZW46WyIgwrcgIixyLm1lc3NhZ2VdfSldfSldfSl9Y29uc3Qgb2g9NTtmdW5jdGlvbiBYYSh7dGl0bGU6cixqb2JzOnMsY29tcGFjdDpsPSExfSl7Y29uc3RbdSxjXT1FLnVzZVN0YXRlKCExKTtpZighcy5sZW5ndGgpcmV0dXJuIG51bGw7Y29uc3QgaD1sJiYhdT9zLnNsaWNlKDAsb2gpOnM7cmV0dXJuIGQuanN4cygic2VjdGlvbiIse2NsYXNzTmFtZToiZ3JpZCBnYXAtMiIsY2hpbGRyZW46W2QuanN4cygiaDIiLHtjbGFzc05hbWU6ImxhYmVsIixjaGlsZHJlbjpbciwiIMK3ICIscy5sZW5ndGhdfSksaC5tYXAocD0+ZC5qc3godXgse2pvYjpwLGNvbXBhY3Q6bH0scC5pZCkpLGwmJnMubGVuZ3RoPm9oJiZkLmpzeCh3ZSx7dmFyaWFudDoibGluayIsc2l6ZToic20iLGNsYXNzTmFtZToianVzdGlmeS1zZWxmLXN0YXJ0IixvbkNsaWNrOigpPT5jKHA9PiFwKSxjaGlsZHJlbjp1P2ouaG9tZS5zZWVMZXNzOmouaG9tZS5zZWVBbGwocy5sZW5ndGgpfSldfSl9ZnVuY3Rpb24gY3goe2pvYnM6cn0pe3JldHVybiByLmxlbmd0aD9kLmpzeHMoImRpdiIse2NsYXNzTmFtZToiZ3JpZCBnYXAtNiIsY2hpbGRyZW46W2QuanN4KFhhLHt0aXRsZTpqLmhvbWUuaW5Qcm9ncmVzcyxqb2JzOnIuZmlsdGVyKGhzKX0pLGQuanN4KFhhLHt0aXRsZTpqLmhvbWUucGF1c2VkLGpvYnM6ci5maWx0ZXIocHMpfSksZC5qc3goWGEse3RpdGxlOmouaG9tZS5maW5pc2hlZCxqb2JzOnIuZmlsdGVyKHpsKSxjb21wYWN0OiEwfSldfSk6ZC5qc3goInAiLHtjbGFzc05hbWU6InRleHQtY2VudGVyIHRleHQtbXV0ZWQgdGV4dC1bMTNweF0gcHktMTAiLGNoaWxkcmVuOmouaG9tZS5lbXB0eX0pfWZ1bmN0aW9uIGR4KCl7Y29uc3Qgcj1aaCgpLHtkYXRhOnM9W119PXFsKCkse2RhdGE6bD1bXX09UXkoKSxbdSxjXT1FLnVzZVN0YXRlKCIiKSxbaCxwXT1FLnVzZVN0YXRlKG51bGwpLFttLHZdPUUudXNlU3RhdGUoITEpLFtTLENdPUUudXNlU3RhdGUobnVsbCk7aWYoci5kYXRhJiYoIXIuZGF0YS5jb25maWd1cmVkLmNsaWVudHx8ci5kYXRhLmNvbmZpZ3VyZWQuYWNjb3VudHM9PT0wKSlyZXR1cm4gZC5qc3goJGgse3RvOiIvY29uZmlndXJhciIscmVwbGFjZTohMH0pO2NvbnN0IHg9YXN5bmMgTz0+e2lmKHUudHJpbSgpKXt2KCEwKSxDKG51bGwpO3RyeXtwKGF3YWl0IE5lLmluc3BlY3Qoe2xpbms6dS50cmltKCksLi4uT30pKX1jYXRjaChGKXtwKG51bGwpLEMoRiBpbnN0YW5jZW9mIE1sP0YubWVzc2FnZTpqLmNvbW1vbi5lcnJvcil9ZmluYWxseXt2KCExKX19fSxfPU89PntPLnByZXZlbnREZWZhdWx0KCkseCgpfSxJPSgpPT57YygiIikscChudWxsKSxDKG51bGwpfTtyZXR1cm4gZC5qc3hzKHJzLHtjaGlsZHJlbjpbZC5qc3hzKCJzZWN0aW9uIix7Y2xhc3NOYW1lOiJncmlkIGdhcC0zIG1iLTgiLGNoaWxkcmVuOltkLmpzeCgiaDEiLHtjbGFzc05hbWU6InRleHQteGwgZm9udC1zZW1pYm9sZCB0cmFja2luZy1bLTAuMDJlbV0iLGNoaWxkcmVuOmouaG9tZS50aXRsZX0pLGQuanN4cygiZm9ybSIse29uU3VibWl0Ol8sY2xhc3NOYW1lOiJmbGV4IGdhcC0yIixjaGlsZHJlbjpbZC5qc3goImlucHV0Iix7dHlwZToidXJsIixpbnB1dE1vZGU6InVybCIsYXV0b0NvbXBsZXRlOiJvZmYiLHNwZWxsQ2hlY2s6ITEscGxhY2Vob2xkZXI6ai5ob21lLnBsYWNlaG9sZGVyLHZhbHVlOnUsb25DaGFuZ2U6Tz0+YyhPLnRhcmdldC52YWx1ZSksImFyaWEtbGFiZWwiOmouaG9tZS5wbGFjZWhvbGRlcixjbGFzc05hbWU6ImZsZXgtMSBtaW4tdy0wIGJnLXN1cmZhY2UgYm9yZGVyIGJvcmRlci1saW5lIHJvdW5kZWQtbGcgcHgtMy41IHB5LTIuNSB0ZXh0LVsxNHB4XSBmb250LW1vbm8gdGV4dC1mZyBwbGFjZWhvbGRlcjpmb250LXNhbnMgcGxhY2Vob2xkZXI6dGV4dC1mYWludCBmb2N1cy12aXNpYmxlOmJvcmRlci12aW9sZXQvNjAifSksaHx8dT9kLmpzeCh3ZSx7b25DbGljazpJLGNoaWxkcmVuOmouaG9tZS5jbGVhcn0pOm51bGwsZC5qc3god2Use3ZhcmlhbnQ6InByaW1hcnkiLHR5cGU6InN1Ym1pdCIsZGlzYWJsZWQ6bXx8IXUudHJpbSgpLGNoaWxkcmVuOmouaG9tZS5hbmFseXplfSldfSkscy5sZW5ndGg+MCYmZC5qc3gocngse30pLG0mJmQuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMyB0ZXh0LW11dGVkIHRleHQtWzEzcHhdIGNhcmQgcHgtNCBweS0zIiwiYXJpYS1saXZlIjoicG9saXRlIixjaGlsZHJlbjpbZC5qc3goQWwse3NpemU6MjIsYW5pbWF0ZWQ6ITAsY2xhc3NOYW1lOiJ0ZXh0LWZnIn0pLGouaG9tZS5hbmFseXppbmddfSksUyYmIW0mJmQuanN4KE90LHt0b25lOiJlcnJvciIsY2hpbGRyZW46U30pLGgmJiFtJiZkLmpzeChveCx7aW5zcGVjdGlvbjpoLGFjY291bnRzOnMsb25SZWluc3BlY3Q6Tz0+dm9pZCB4KE8pLG9uQ2FuY2VsOkksb25TdGFydGVkOkl9LGguaW5zcGVjdGlvbklkKV19KSxkLmpzeChjeCx7am9iczpsfSldfSl9Y29uc3QgZng9W3trZXk6InByb2plY3QiLHVybDoiaHR0cHM6Ly9jb25zb2xlLmNsb3VkLmdvb2dsZS5jb20vcHJvamVjdGNyZWF0ZSJ9LHtrZXk6ImFwaSIsdXJsOiJodHRwczovL2NvbnNvbGUuY2xvdWQuZ29vZ2xlLmNvbS9hcGlzL2xpYnJhcnkvZHJpdmUuZ29vZ2xlYXBpcy5jb20ifSx7a2V5OiJjb25zZW50Iix1cmw6Imh0dHBzOi8vY29uc29sZS5jbG91ZC5nb29nbGUuY29tL2F1dGgvYXVkaWVuY2UifSx7a2V5OiJjcmVkZW50aWFsIix1cmw6Imh0dHBzOi8vY29uc29sZS5jbG91ZC5nb29nbGUuY29tL2FwaXMvY3JlZGVudGlhbHMvb2F1dGhjbGllbnQifV0sZHA9InJpZnRkcml2ZS5zZXR1cC5zdGVwcyI7ZnVuY3Rpb24gaHgoKXt0cnl7Y29uc3Qgcj1sb2NhbFN0b3JhZ2UuZ2V0SXRlbShkcCk7cmV0dXJuIG5ldyBTZXQocj9KU09OLnBhcnNlKHIpOltdKX1jYXRjaHtyZXR1cm4gbmV3IFNldH19ZnVuY3Rpb24gcHgocil7dHJ5e2xvY2FsU3RvcmFnZS5zZXRJdGVtKGRwLEpTT04uc3RyaW5naWZ5KFsuLi5yXSkpfWNhdGNoe319ZnVuY3Rpb24gbXgoKXt2YXIgaXQsc3QsSGU7Y29uc3Qgcj1LbigpLHM9UWwoKSxbbF09R3YoKSx1PVpoKCksYz1lcCgpLFtoLHBdPUUudXNlU3RhdGUoKCk9Pmh4KCkpLFttLHZdPUUudXNlU3RhdGUoIiIpLFtTLENdPUUudXNlU3RhdGUoIiIpLFt4LF9dPUUudXNlU3RhdGUoe2tpbmQ6InN0ZXBzIn0pLFtJLE9dPUUudXNlU3RhdGUoITEpLFtGLExdPUUudXNlU3RhdGUobnVsbCksJD1FLnVzZVJlZihudWxsKSxRPUUudXNlUmVmKCExKSxIPSgoaXQ9Yy5kYXRhKT09bnVsbD92b2lkIDA6aXQuY29uZmlndXJlZCk/PyExLEs9KChzdD11LmRhdGEpPT1udWxsP3ZvaWQgMDpzdC5jb25maWd1cmVkLmFjY291bnRzKT8/MCxCPWwuZ2V0KCJyZWNvbmVjdGFyIik/P3ZvaWQgMCxzZT1sLmdldCgib3V0cmEiKT09PSIxIixpZT1vZT0+e2NvbnN0IGFlPW5ldyBTZXQoaCk7YWUuaGFzKG9lKT9hZS5kZWxldGUob2UpOmFlLmFkZChvZSkscChhZSkscHgoYWUpfSxoZT1hc3luYyBvZT0+e08oITApLEwobnVsbCk7dHJ5e2NvbnN0e2F1dGhVcmw6YWV9PWF3YWl0IE5lLmxvZ2luU3RhcnQob2UpO18oe2tpbmQ6IndhaXRpbmciLGF1dGhVcmw6YWV9KX1jYXRjaChhZSl7TChhZSBpbnN0YW5jZW9mIE1sP2FlLm1lc3NhZ2U6ai5jb21tb24uZXJyb3IpfWZpbmFsbHl7TyghMSl9fTtFLnVzZUVmZmVjdCgoKT0+e1EuY3VycmVudHx8IUh8fChCfHxzZSkmJihRLmN1cnJlbnQ9ITAsaGUoQikpfSxbSCxCLHNlXSksRS51c2VFZmZlY3QoKCk9PntpZih4LmtpbmQhPT0id2FpdGluZyIpcmV0dXJuO2NvbnN0IG9lPXNldEludGVydmFsKGFzeW5jKCk9Pnt0cnl7Y29uc3QgYWU9YXdhaXQgTmUubG9naW5TdGF0dXMoKTthZS5zdGF0ZT09PSJkb25lIj8oY2xlYXJJbnRlcnZhbChvZSksXyh7a2luZDoiY29ubmVjdGVkIixlbWFpbDphZS5lbWFpbH0pLHMuaW52YWxpZGF0ZVF1ZXJpZXMoKSk6YWUuc3RhdGU9PT0iZXJyb3IiJiYoY2xlYXJJbnRlcnZhbChvZSksXyh7a2luZDoic3RlcHMifSksTChhZS5tZXNzYWdlKSl9Y2F0Y2h7fX0sMWUzKTtyZXR1cm4oKT0+Y2xlYXJJbnRlcnZhbChvZSl9LFt4LmtpbmQsc10pO2NvbnN0IHVlPWFzeW5jIG9lPT57aWYob2UucHJldmVudERlZmF1bHQoKSxMKG51bGwpLG0udHJpbSgpfHxTLnRyaW0oKXx8IUgpe2lmKCEvXC5hcHBzXC5nb29nbGV1c2VyY29udGVudFwuY29tJC8udGVzdChtLnRyaW0oKSkpe0woIk8gSUQgZG8gY2xpZW50ZSBwcmVjaXNhIHRlcm1pbmFyIGVtIC5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbS4iKTtyZXR1cm59TyghMCk7dHJ5e2F3YWl0IE5lLnNldEF1dGhDbGllbnQobS50cmltKCksUy50cmltKCkpLGF3YWl0IHMuaW52YWxpZGF0ZVF1ZXJpZXMoe3F1ZXJ5S2V5OlsiYXV0aENsaWVudCJdfSl9Y2F0Y2goYWUpe0woYWUgaW5zdGFuY2VvZiBNbD9hZS5tZXNzYWdlOmouY29tbW9uLmVycm9yKSxPKCExKTtyZXR1cm59fWF3YWl0IGhlKCl9LGdlPXtwcm9qZWN0Ont0aXRsZTpqLnNldHVwLnN0ZXBzLnByb2plY3QsaGludDpqLnNldHVwLnN0ZXBzLnByb2plY3RIaW50fSxhcGk6e3RpdGxlOmouc2V0dXAuc3RlcHMuYXBpLGhpbnQ6ai5zZXR1cC5zdGVwcy5hcGlIaW50fSxjb25zZW50Ont0aXRsZTpkLmpzeHMoZC5GcmFnbWVudCx7Y2hpbGRyZW46W2ouc2V0dXAuc3RlcHMuY29uc2VudCxkLmpzeCgic3BhbiIse2NsYXNzTmFtZToidGV4dC1hbWJlciIsY2hpbGRyZW46ai5zZXR1cC5zdGVwcy5jb25zZW50U3Ryb25nfSldfSksaGludDpkLmpzeHMoT3Qse3RvbmU6Indhcm4iLGNsYXNzTmFtZToibXQtMSIsY2hpbGRyZW46W2ouc2V0dXAuc3RlcHMuY29uc2VudFdhcm4xLGQuanN4KCJzdHJvbmciLHtjbGFzc05hbWU6InRleHQtZmciLGNoaWxkcmVuOmouc2V0dXAuc3RlcHMuY29uc2VudFdhcm5TdHJvbmd9KSxqLnNldHVwLnN0ZXBzLmNvbnNlbnRXYXJuMl19KX0sY3JlZGVudGlhbDp7dGl0bGU6ai5zZXR1cC5zdGVwcy5jcmVkZW50aWFsLGhpbnQ6ai5zZXR1cC5zdGVwcy5jcmVkZW50aWFsSGludH19O3JldHVybiBkLmpzeHMoImRpdiIse2NsYXNzTmFtZToibWluLWgtc2NyZWVuIGZsZXggZmxleC1jb2wiLGNoaWxkcmVuOltkLmpzeHMoImhlYWRlciIse2NsYXNzTmFtZToiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHB4LTQgc206cHgtNiBweS0zIGJvcmRlci1iIGJvcmRlci1saW5lIixjaGlsZHJlbjpbZC5qc3goc3Ase3RvOks+MD8iLyI6bnVsbH0pLGQuanN4KCJzcGFuIix7Y2xhc3NOYW1lOiJ0ZXh0LVsxMnB4XSB0ZXh0LW11dGVkIixjaGlsZHJlbjpqLnNldHVwLnN0ZXAoeC5raW5kPT09ImNvbm5lY3RlZCI/MjoxLDIpfSldfSksZC5qc3goIm1haW4iLHtjbGFzc05hbWU6Im14LWF1dG8gdy1mdWxsIG1heC13LXhsIHB4LTQgc206cHgtNiBweS04IGdyaWQgZ2FwLTYgZmxleC0xIixjaGlsZHJlbjp4LmtpbmQ9PT0iY29ubmVjdGVkIj9kLmpzeHMoInNlY3Rpb24iLHtjbGFzc05hbWU6ImdyaWQgZ2FwLTUgdGV4dC1jZW50ZXIgcHktNiIsImFyaWEtbGl2ZSI6InBvbGl0ZSIsY2hpbGRyZW46W2QuanN4KEFsLHtzaXplOjU2LGNsYXNzTmFtZToidGV4dC1mZyBqdXN0aWZ5LXNlbGYtY2VudGVyIn0pLGQuanN4cygiZGl2Iix7Y2hpbGRyZW46W2QuanN4KCJoMSIse2NsYXNzTmFtZToidGV4dC14bCBmb250LXNlbWlib2xkIHRyYWNraW5nLVstMC4wMmVtXSIsY2hpbGRyZW46ai5zZXR1cC5jb25uZWN0ZWRUaXRsZSh4LmVtYWlsKX0pLGQuanN4KCJwIix7Y2xhc3NOYW1lOiJ0ZXh0LW11dGVkIG10LTEgdGV4dC1bMTRweF0iLGNoaWxkcmVuOmouc2V0dXAuY29ubmVjdGVkVGV4dH0pXX0pLGQuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGZsZXgtd3JhcCBqdXN0aWZ5LWNlbnRlciBnYXAtMiIsY2hpbGRyZW46W2QuanN4KHdlLHtvbkNsaWNrOigpPT52b2lkIGhlKCksZGlzYWJsZWQ6SSxjaGlsZHJlbjpqLnNldHVwLmFub3RoZXJ9KSxkLmpzeCh3ZSx7dmFyaWFudDoicHJpbWFyeSIsb25DbGljazooKT0+cigiLyIpLGNoaWxkcmVuOmouc2V0dXAuZmluaXNofSldfSksZC5qc3goInAiLHtjbGFzc05hbWU6InRleHQtWzEycHhdIHRleHQtbXV0ZWQiLGNoaWxkcmVuOmouc2V0dXAuYW5vdGhlckhpbnR9KV19KTp4LmtpbmQ9PT0id2FpdGluZyI/ZC5qc3hzKCJzZWN0aW9uIix7Y2xhc3NOYW1lOiJncmlkIGdhcC00IHRleHQtY2VudGVyIHB5LTYiLCJhcmlhLWxpdmUiOiJwb2xpdGUiLGNoaWxkcmVuOltkLmpzeChBbCx7c2l6ZTo1NixhbmltYXRlZDohMCxjbGFzc05hbWU6InRleHQtZmcganVzdGlmeS1zZWxmLWNlbnRlciJ9KSxkLmpzeCgiaDEiLHtjbGFzc05hbWU6InRleHQtbGcgZm9udC1zZW1pYm9sZCIsY2hpbGRyZW46ai5zZXR1cC53YWl0aW5nfSksZC5qc3goInAiLHtjbGFzc05hbWU6InRleHQtbXV0ZWQgdGV4dC1bMTNweF0gbGVhZGluZy1yZWxheGVkIG1heC13LW1kIG14LWF1dG8iLGNoaWxkcmVuOmouc2V0dXAud2FpdGluZ0hpbnR9KSxkLmpzeHMoImRpdiIse2NsYXNzTmFtZToiZmxleCBqdXN0aWZ5LWNlbnRlciBnYXAtMiIsY2hpbGRyZW46W2QuanN4cyh3ZSx7b25DbGljazooKT0+d2luZG93Lm9wZW4oeC5hdXRoVXJsLCJfYmxhbmsiLCJub29wZW5lciIpLGNoaWxkcmVuOltkLmpzeChpcyx7d2lkdGg6MTQsaGVpZ2h0OjE0fSksIiBBYnJpciBvIEdvb2dsZSBkZSBub3ZvIl19KSxkLmpzeCh3ZSx7b25DbGljazooKT0+Xyh7a2luZDoic3RlcHMifSksY2hpbGRyZW46ai5hbmFseXNpcy5jYW5jZWx9KV19KV19KTpkLmpzeHMoZC5GcmFnbWVudCx7Y2hpbGRyZW46W2QuanN4cygic2VjdGlvbiIse2NsYXNzTmFtZToiZ3JpZCBnYXAtMiIsY2hpbGRyZW46W2QuanN4KCJoMSIse2NsYXNzTmFtZToidGV4dC14bCBmb250LXNlbWlib2xkIHRyYWNraW5nLVstMC4wMmVtXSIsY2hpbGRyZW46ai5zZXR1cC50aXRsZX0pLGQuanN4cygicCIse2NsYXNzTmFtZToidGV4dC1tdXRlZCB0ZXh0LVsxNHB4XSBsZWFkaW5nLXJlbGF4ZWQiLGNoaWxkcmVuOltqLnNldHVwLmludHJvMSxkLmpzeCgic3Ryb25nIix7Y2xhc3NOYW1lOiJ0ZXh0LWZnIGZvbnQtbWVkaXVtIixjaGlsZHJlbjpqLnNldHVwLmludHJvU3Ryb25nfSksai5zZXR1cC5pbnRybzJdfSldfSksSCYmZC5qc3hzKE90LHt0b25lOiJzdWNjZXNzIixjaGlsZHJlbjpbai5zZXR0aW5ncy5vYXV0aFRleHQoKChIZT1jLmRhdGEpPT1udWxsP3ZvaWQgMDpIZS5jbGllbnRJZE1hc2tlZCk/PyIiKSwiICIsZC5qc3god2Use3ZhcmlhbnQ6ImxpbmsiLHNpemU6InNtIixvbkNsaWNrOigpPT52b2lkIGhlKCksZGlzYWJsZWQ6SSxjaGlsZHJlbjoiRW50cmFyIGNvbSBHb29nbGUg4oaSIn0pXX0pLGQuanN4cygib2wiLHtjbGFzc05hbWU6ImdyaWQgZ2FwLTEiLGNoaWxkcmVuOltmeC5tYXAoKG9lLGFlKT0+e2NvbnN0IEFlPWguaGFzKG9lLmtleSk7cmV0dXJuIGQuanN4cygibGkiLHtjbGFzc05hbWU6ImdyaWQgZ3JpZC1jb2xzLVsyNHB4XzFmcl0gZ2FwLTMgcHktMi41IixjaGlsZHJlbjpbZC5qc3goImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsb25DbGljazooKT0+aWUob2Uua2V5KSwiYXJpYS1wcmVzc2VkIjpBZSwiYXJpYS1sYWJlbCI6YCR7QWU/IkRlc21hcmNhciI6Ik1hcmNhciJ9IHBhc3NvICR7YWUrMX1gLGNsYXNzTmFtZTpgdy02IGgtNiByb3VuZGVkLWZ1bGwgZ3JpZCBwbGFjZS1pdGVtcy1jZW50ZXIgdGV4dC1bMTFweF0gZm9udC1zZW1pYm9sZCAke0FlPyJiZy1ncmVlbi9bMC4xOF0gdGV4dC1ncmVlbiI6ImJnLXdoaXRlL1swLjA4XSB0ZXh0LW11dGVkIn1gLGNoaWxkcmVuOkFlP2QuanN4KEp5LHt3aWR0aDoxMixoZWlnaHQ6MTJ9KTphZSsxfSksZC5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImdyaWQgZ2FwLTEgdGV4dC1bMTMuNXB4XSIsY2hpbGRyZW46W2QuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLXgtMyBnYXAteS0xIixjaGlsZHJlbjpbZC5qc3goInNwYW4iLHtjbGFzc05hbWU6YGZvbnQtc2VtaWJvbGQgJHtBZT8idGV4dC1tdXRlZCBsaW5lLXRocm91Z2ggZGVjb3JhdGlvbi13aGl0ZS8zMCI6IiJ9YCxjaGlsZHJlbjpnZVtvZS5rZXldLnRpdGxlfSksZC5qc3hzKCJhIix7aHJlZjpvZS51cmwsdGFyZ2V0OiJfYmxhbmsiLHJlbDoibm9vcGVuZXIgbm9yZWZlcnJlciIsY2xhc3NOYW1lOiJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEgdGV4dC12aW9sZXQtc3Ryb25nIGhvdmVyOnVuZGVybGluZSB0ZXh0LVsxMi41cHhdIixjaGlsZHJlbjpbai5zZXR1cC5vcGVuLCIgIixkLmpzeChpcyx7d2lkdGg6MTIsaGVpZ2h0OjEyfSldfSldfSksZC5qc3goImRpdiIse2NsYXNzTmFtZToidGV4dC1tdXRlZCB0ZXh0LVsxMi41cHhdIixjaGlsZHJlbjpnZVtvZS5rZXldLmhpbnR9KSxvZS5rZXk9PT0iY29uc2VudCImJiFBZSYmZC5qc3god2Use3NpemU6InNtIixjbGFzc05hbWU6Imp1c3RpZnktc2VsZi1zdGFydCBtdC0xIixvbkNsaWNrOigpPT5pZSgiY29uc2VudCIpLGNoaWxkcmVuOmouc2V0dXAubWFya0RvbmV9KV19KV19LG9lLmtleSl9KSxkLmpzeHMoImxpIix7Y2xhc3NOYW1lOiJncmlkIGdyaWQtY29scy1bMjRweF8xZnJdIGdhcC0zIHB5LTIuNSIscmVmOiQsY2hpbGRyZW46W2QuanN4KCJzcGFuIix7Y2xhc3NOYW1lOiJ3LTYgaC02IHJvdW5kZWQtZnVsbCBncmlkIHBsYWNlLWl0ZW1zLWNlbnRlciB0ZXh0LVsxMXB4XSBmb250LXNlbWlib2xkIGJnLXZpb2xldCB0ZXh0LWluayIsY2hpbGRyZW46IjUifSksZC5qc3hzKCJmb3JtIix7b25TdWJtaXQ6dWUsY2xhc3NOYW1lOiJncmlkIGdhcC0zIixjaGlsZHJlbjpbZC5qc3goInNwYW4iLHtjbGFzc05hbWU6ImZvbnQtc2VtaWJvbGQgdGV4dC1bMTMuNXB4XSIsY2hpbGRyZW46ai5zZXR1cC5zdGVwcy5wYXN0ZX0pLGQuanN4KGd1LHtsYWJlbDpqLnNldHVwLmNsaWVudElkLHBsYWNlaG9sZGVyOmouc2V0dXAuY2xpZW50SWRQbGFjZWhvbGRlcix2YWx1ZTptLG9uQ2hhbmdlOm9lPT52KG9lLnRhcmdldC52YWx1ZSksYXV0b0NvbXBsZXRlOiJvZmYiLHNwZWxsQ2hlY2s6ITEsY2xhc3NOYW1lOiJmb250LW1vbm8ifSksZC5qc3goZ3Use2xhYmVsOmouc2V0dXAuY2xpZW50U2VjcmV0LHBsYWNlaG9sZGVyOmouc2V0dXAuY2xpZW50U2VjcmV0UGxhY2Vob2xkZXIsdmFsdWU6UyxvbkNoYW5nZTpvZT0+QyhvZS50YXJnZXQudmFsdWUpLHR5cGU6InBhc3N3b3JkIixhdXRvQ29tcGxldGU6Im9mZiJ9KSxGJiZkLmpzeChPdCx7dG9uZToiZXJyb3IiLGNoaWxkcmVuOkZ9KSxkLmpzeHMoImRpdiIse2NsYXNzTmFtZToiZmxleCBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtMyBwdC0xIixjaGlsZHJlbjpbZC5qc3goImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsY2xhc3NOYW1lOiJ0ZXh0LVsxMnB4XSB0ZXh0LW11dGVkIGhvdmVyOnRleHQtZmciLG9uQ2xpY2s6KCk9Pnt2YXIgb2U7cmV0dXJuKG9lPSQuY3VycmVudCk9PW51bGw/dm9pZCAwOm9lLnNjcm9sbEludG9WaWV3KHtiZWhhdmlvcjoic21vb3RoIixibG9jazoiY2VudGVyIn0pfSxjaGlsZHJlbjpqLnNldHVwLnNraXB9KSxkLmpzeCh3ZSx7dmFyaWFudDoicHJpbWFyeSIsdHlwZToic3VibWl0IixkaXNhYmxlZDpJfHwhSCYmKCFtLnRyaW0oKXx8IVMudHJpbSgpKSxjaGlsZHJlbjpJP2ouc2V0dXAuc3VibWl0dGluZzpqLnNldHVwLnN1Ym1pdH0pXX0pXX0pXX0pXX0pXX0pfSldfSl9Y29uc3QgZ3g9WyJwZW5kaW5nIiwiZG9uZSIsInNraXBwZWRfYmxvY2tlZCIsInNraXBwZWRfbmF0aXZlIiwiZGVmZXJyZWQiLCJtaXNzaW5nIiwiZmFpbGVkIl0sWmE9MjAwO2Z1bmN0aW9uIHZ4KCl7dmFyIEY7Y29uc3R7aWQ6cj0iIn09aXYoKSxzPUtuKCkse2RhdGE6bCxlcnJvcjp1fT1xeShyKSxjPW5wKCksW2gscF09RS51c2VTdGF0ZSgicGVuZGluZyIpLFttLHZdPUUudXNlU3RhdGUoWmEpLHtkYXRhOlM9W10saXNMb2FkaW5nOkN9PWJ5KHIsaCxtKTtpZih1KXJldHVybiBkLmpzeChycyx7Y2hpbGRyZW46ZC5qc3goT3Qse3RvbmU6ImVycm9yIixjaGlsZHJlbjpqLmpvYi5ub3RGb3VuZH0pfSk7aWYoIWwpcmV0dXJuIGQuanN4KHJzLHtjaGlsZHJlbjpudWxsfSk7Y29uc3R7am9iOngsY291bnRzOl99PWwsST1wcyh4KSxPPU9iamVjdC52YWx1ZXMoXykucmVkdWNlKChMLCQpPT5MKyQsMCk7cmV0dXJuIGQuanN4cyhycyx7bWF4V2lkdGg6Im1heC13LTN4bCIsY2hpbGRyZW46W2QuanN4cyh4cix7dG86Ii8iLGNsYXNzTmFtZToiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdhcC0xIHRleHQtWzEzcHhdIHRleHQtbXV0ZWQgaG92ZXI6dGV4dC1mZyBtYi00IixjaGlsZHJlbjpbZC5qc3gobHAse3dpZHRoOjE0LGhlaWdodDoxNH0pLCIgIixqLm5hdi5iYWNrXX0pLGQuanN4cygiaGVhZGVyIix7Y2xhc3NOYW1lOiJmbGV4IGZsZXgtd3JhcCBpdGVtcy1zdGFydCBqdXN0aWZ5LWJldHdlZW4gZ2FwLTMiLGNoaWxkcmVuOltkLmpzeHMoImRpdiIse2NsYXNzTmFtZToibWluLXctMCIsY2hpbGRyZW46W2QuanN4KCJoMSIse2NsYXNzTmFtZToidGV4dC14bCBmb250LXNlbWlib2xkIHRyYWNraW5nLVstMC4wMmVtXSB0cnVuY2F0ZSIsY2hpbGRyZW46eC5uYW1lfSksZC5qc3hzKCJwIix7Y2xhc3NOYW1lOiJ0ZXh0LVsxM3B4XSB0ZXh0LW11dGVkIG10LTEgZmxleCBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIGdhcC14LTIgZ2FwLXktMSIsY2hpbGRyZW46W2QuanN4KGJsLHtwYXRoOngucGF0aH0pLGQuanN4KCJzcGFuIix7Y2hpbGRyZW46ai5qb2Iuc3RhdHVzW3guc3RhdHVzXX0pLHgubW9kZT09PSJtZXJnZSImJmQuanN4KCJzcGFuIix7Y2hpbGRyZW46IsK3IG1lc2NsYWdlbSJ9KSxkLmpzeHMoInNwYW4iLHtjaGlsZHJlbjpbIsK3ICIseC5zb3VyY2UucmVhZGVyRW1haWwsIiDihpIgIix4LmRlc3QuYWNjb3VudEVtYWlsXX0pXX0pXX0pLGQuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGZsZXgtd3JhcCBnYXAtMiIsY2hpbGRyZW46Wyh4LnN0YXR1cz09PSJydW5uaW5nInx8eC5zdGF0dXM9PT0icXVldWVkIikmJmQuanN4KHdlLHtvbkNsaWNrOigpPT5jLnBhdXNlLm11dGF0ZSh4LmlkKSxjaGlsZHJlbjpqLmpvYi5wYXVzZX0pLEkmJmQuanN4KHdlLHt2YXJpYW50OiJwcmltYXJ5IixvbkNsaWNrOigpPT5jLnJlc3VtZS5tdXRhdGUoeC5pZCksY2hpbGRyZW46ai5qb2IucmVzdW1lfSksIXpsKHgpJiZkLmpzeCh3ZSx7b25DbGljazooKT0+d2luZG93LmNvbmZpcm0oai5qb2IuY29uZmlybUNhbmNlbCkmJmMuY2FuY2VsLm11dGF0ZSh4LmlkKSxjaGlsZHJlbjpqLmpvYi5jYW5jZWx9KSx4LmRlc3QuZm9sZGVySWQmJmQuanN4cygiYSIse2hyZWY6YGh0dHBzOi8vZHJpdmUuZ29vZ2xlLmNvbS9kcml2ZS9mb2xkZXJzLyR7eC5kZXN0LmZvbGRlcklkfWAsdGFyZ2V0OiJfYmxhbmsiLHJlbDoibm9vcGVuZXIgbm9yZWZlcnJlciIsY2xhc3NOYW1lOiJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNSB0ZXh0LVsxM3B4XSBweC0zLjUgcHktMiByb3VuZGVkLWxnIGJnLXdoaXRlL1swLjA3XSBob3ZlcjpiZy13aGl0ZS9bMC4xMV0gZm9udC1tZWRpdW0iLGNoaWxkcmVuOltqLmpvYi5vcGVuSW5Ecml2ZSwiICIsZC5qc3goaXMse3dpZHRoOjEzLGhlaWdodDoxM30pXX0pLCFocyh4KSYmZC5qc3god2Use3ZhcmlhbnQ6ImRhbmdlciIsb25DbGljazooKT0+e3dpbmRvdy5jb25maXJtKGouam9iLmNvbmZpcm1SZW1vdmUpJiZjLnJlbW92ZS5tdXRhdGUoeC5pZCx7b25TdWNjZXNzOigpPT5zKCIvIil9KX0sY2hpbGRyZW46ai5qb2IucmVtb3ZlfSldfSldfSksZC5qc3hzKCJzZWN0aW9uIix7Y2xhc3NOYW1lOiJjYXJkIHAtNCBzbTpwLTUgbXQtNSBncmlkIGdhcC0zIixjaGlsZHJlbjpbZC5qc3goY3Ase2pvYjp4fSksZC5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggZmxleC13cmFwIGp1c3RpZnktYmV0d2VlbiBnYXAteC02IGdhcC15LTEgbnVtIHRleHQtbXV0ZWQiLGNoaWxkcmVuOltkLmpzeCgic3BhbiIse2NoaWxkcmVuOmouam9iLmZpbGVzKHguZG9uZS5maWxlcyx4LnRvdGFscy5maWxlcyl9KSxkLmpzeHMoInNwYW4iLHtjaGlsZHJlbjpbai5qb2IuYnl0ZXMoQ3QoeC5kb25lLmJ5dGVzKSxDdCh4LnRvdGFscy5ieXRlcykpLHguc3RhdHMmJnguc3RhdHMuYnl0ZXNQZXJTZWM+MCYmZC5qc3hzKGQuRnJhZ21lbnQse2NoaWxkcmVuOlsiIMK3ICIsb3AoeC5zdGF0cy5ieXRlc1BlclNlYyldfSksKChGPXguc3RhdHMpPT1udWxsP3ZvaWQgMDpGLmV0YVNlYykhPW51bGwmJnguc3RhdHMuZXRhU2VjPjAmJmQuanN4cyhkLkZyYWdtZW50LHtjaGlsZHJlbjpbIiDCtyAiLGouam9iLmV0YShhcCh4LnN0YXRzLmV0YVNlYykpXX0pXX0pXX0pLGQuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGZsZXgtd3JhcCBnYXAteC02IGdhcC15LTEgdGV4dC1bMTIuNXB4XSB0ZXh0LW11dGVkIixjaGlsZHJlbjpbeC5zdGFydGVkQXQmJmQuanN4cygic3BhbiIse2NoaWxkcmVuOltqLmpvYi5zdGFydGVkLCIgIixzcyh4LnN0YXJ0ZWRBdCldfSkseC5maW5pc2hlZEF0JiZkLmpzeHMoInNwYW4iLHtjaGlsZHJlbjpbai5qb2IuZmluaXNoZWQsIiAiLHNzKHguZmluaXNoZWRBdCldfSksZC5qc3hzKCJzcGFuIix7Y2hpbGRyZW46W3guZGVzdC5wYXJlbnROYW1lLCIgLyAiLHguZGVzdC5maW5hbE5hbWVdfSldfSksSSYmZC5qc3hzKE90LHt0b25lOnguc3RhdHVzPT09InBhdXNlZCI/ImluZm8iOiJ3YXJuIixjaGlsZHJlbjpbeC5yZXN1bWVSZWFzb24/P2ouam9iLnN0YXR1c1t4LnN0YXR1c10seC5wYXVzZWRVbnRpbCYmeC5zdGF0dXMhPT0icGF1c2VkIiYmZC5qc3hzKGQuRnJhZ21lbnQse2NoaWxkcmVuOlsiIMK3ICIsai5qb2IucmVzdW1lc0F0KFNyKHgucGF1c2VkVW50aWwpKV19KSx4LnN0YXR1cz09PSJwYXVzZWRfYXV0aCImJmQuanN4cyhkLkZyYWdtZW50LHtjaGlsZHJlbjpbIiAiLGQuanN4cyh4cix7dG86Ii9jb25maWd1cmFjb2VzIixjbGFzc05hbWU6InRleHQtdmlvbGV0LXN0cm9uZyBob3Zlcjp1bmRlcmxpbmUgZm9udC1tZWRpdW0iLGNoaWxkcmVuOltqLmpvYi5yZWNvbm5lY3QsIiDihpIiXX0pXX0pXX0pLHgubWVzc2FnZSYmemwoeCkmJmQuanN4KCJwIix7Y2xhc3NOYW1lOiJ0ZXh0LVsxM3B4XSB0ZXh0LW11dGVkIixjaGlsZHJlbjp4Lm1lc3NhZ2V9KV19KSxkLmpzeHMoInNlY3Rpb24iLHtjbGFzc05hbWU6Im10LTciLGNoaWxkcmVuOltkLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWJhc2VsaW5lIGp1c3RpZnktYmV0d2VlbiBtYi0zIixjaGlsZHJlbjpkLmpzeHMoImgyIix7Y2xhc3NOYW1lOiJsYWJlbCIsY2hpbGRyZW46W2ouam9iLmZpbGVzVGl0bGUsIiDCtyAiLE8udG9Mb2NhbGVTdHJpbmcoInB0LUJSIildfSl9KSxkLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGZsZXgtd3JhcCBnYXAtMS41IG1iLTMiLHJvbGU6InRhYmxpc3QiLGNoaWxkcmVuOmd4LmZpbHRlcihMPT5fW0xdPjB8fEw9PT1oKS5tYXAoTD0+ZC5qc3hzKCJidXR0b24iLHtyb2xlOiJ0YWIiLCJhcmlhLXNlbGVjdGVkIjpoPT09TCxvbkNsaWNrOigpPT57cChMKSx2KFphKX0sY2xhc3NOYW1lOmB0ZXh0LVsxMnB4XSBweC0yLjUgcHktMSByb3VuZGVkLW1kICR7aD09PUw/ImJnLXZpb2xldC9bMC4xOF0gdGV4dC12aW9sZXQtc3Ryb25nIGZvbnQtc2VtaWJvbGQiOiJiZy13aGl0ZS9bMC4wNl0gdGV4dC1tdXRlZCBob3Zlcjp0ZXh0LWZnIn1gLGNoaWxkcmVuOltqLmpvYi5maWxlU3RhdHVzW0xdLCIgIixkLmpzeCgic3BhbiIse2NsYXNzTmFtZToibnVtIixjaGlsZHJlbjpfW0xdfSldfSxMKSl9KSxoPT09ImRlZmVycmVkIiYmXy5kZWZlcnJlZD4wJiZkLmpzeCgicCIse2NsYXNzTmFtZToidGV4dC1bMTIuNXB4XSB0ZXh0LW11dGVkIG1iLTIiLGNoaWxkcmVuOmouam9iLmRlZmVycmVkSGludH0pLGQuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJjYXJkIGRpdmlkZS15IGRpdmlkZS1saW5lIixjaGlsZHJlbjpbQyYmZC5qc3goImRpdiIse2NsYXNzTmFtZToicHgtNCBweS0zIHRleHQtbXV0ZWQgdGV4dC1bMTNweF0iLGNoaWxkcmVuOmouY29tbW9uLmxvYWRpbmd9KSwhQyYmUy5sZW5ndGg9PT0wJiZkLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOiJweC00IHB5LTMgdGV4dC1tdXRlZCB0ZXh0LVsxM3B4XSIsY2hpbGRyZW46ai5qb2Iubm9GaWxlc30pLFMubWFwKEw9PmQuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJweC00IHB5LTIuNSBncmlkIGdhcC0wLjUgdGV4dC1bMTNweF0iLGNoaWxkcmVuOltkLmpzeHMoImRpdiIse2NsYXNzTmFtZToiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC0zIixjaGlsZHJlbjpbZC5qc3goInNwYW4iLHtjbGFzc05hbWU6Im51bSB0cnVuY2F0ZSIsdGl0bGU6TC5yZWxQYXRoLGNoaWxkcmVuOkwucmVsUGF0aH0pLGQuanN4cygic3BhbiIse2NsYXNzTmFtZToiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTMgc2hyaW5rLTAgdGV4dC1tdXRlZCBudW0iLGNoaWxkcmVuOltMLnN0YXR1cz09PSJwZW5kaW5nIiYmeC5wYXRoPT09Im1hY2hpbmUiJiZMLmJ5dGVzVXBsb2FkZWQ+MCYmZC5qc3hzKCJzcGFuIix7Y2hpbGRyZW46W0N0KEwuYnl0ZXNVcGxvYWRlZCksIiAvICJdfSksZC5qc3goInNwYW4iLHtjaGlsZHJlbjpDdChMLnNpemUpfSksZC5qc3goImEiLHtocmVmOkwuc3JjVXJsLHRhcmdldDoiX2JsYW5rIixyZWw6Im5vb3BlbmVyIG5vcmVmZXJyZXIiLGNsYXNzTmFtZToidGV4dC12aW9sZXQtc3Ryb25nIGhvdmVyOnVuZGVybGluZSIsdGl0bGU6ai5qb2Iub3BlblNvdXJjZSxjaGlsZHJlbjpkLmpzeChpcyx7d2lkdGg6MTMsaGVpZ2h0OjEzfSl9KV19KV19KSxMLmVycm9yJiYoTC5zdGF0dXM9PT0iZmFpbGVkInx8TC5zdGF0dXM9PT0ic2tpcHBlZF9ibG9ja2VkInx8TC5zdGF0dXM9PT0ibWlzc2luZyJ8fEwuc3RhdHVzPT09InNraXBwZWRfbmF0aXZlIikmJmQuanN4KCJwIix7Y2xhc3NOYW1lOiJ0ZXh0LVsxMnB4XSB0ZXh0LW11dGVkIHRydW5jYXRlIix0aXRsZTpMLmVycm9yLGNoaWxkcmVuOkwuZXJyb3J9KV19LEwucmVsUGF0aCkpXX0pLFMubGVuZ3RoPj1tJiZkLmpzeCh3ZSx7dmFyaWFudDoibGluayIsc2l6ZToic20iLGNsYXNzTmFtZToibXQtMiIsb25DbGljazooKT0+dihMPT5MK1phKSxjaGlsZHJlbjpqLmpvYi5sb2FkTW9yZX0pXX0pXX0pfWZ1bmN0aW9uIHl4KCl7cmV0dXJuIGQuanN4cyhycyx7bWF4V2lkdGg6Im1heC13LTJ4bCIsY2hpbGRyZW46W2QuanN4cyh4cix7dG86Ii8iLGNsYXNzTmFtZToiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdhcC0xIHRleHQtWzEzcHhdIHRleHQtbXV0ZWQgaG92ZXI6dGV4dC1mZyBtYi00IixjaGlsZHJlbjpbZC5qc3gobHAse3dpZHRoOjE0LGhlaWdodDoxNH0pLCIgIixqLm5hdi5iYWNrXX0pLGQuanN4KCJoMSIse2NsYXNzTmFtZToidGV4dC14bCBmb250LXNlbWlib2xkIHRyYWNraW5nLVstMC4wMmVtXSBtYi02IixjaGlsZHJlbjpqLnNldHRpbmdzLnRpdGxlfSksZC5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImdyaWQgZ2FwLTkiLGNoaWxkcmVuOltkLmpzeCh4eCx7fSksZC5qc3god3gse30pLGQuanN4KFN4LHt9KSxkLmpzeChreCx7fSksZC5qc3goRXgse30pXX0pXX0pfWZ1bmN0aW9uIGdzKHtjaGlsZHJlbjpyLGludHJvOnN9KXtyZXR1cm4gZC5qc3hzKCJoZWFkZXIiLHtjbGFzc05hbWU6ImdyaWQgZ2FwLTEgbWItMyIsY2hpbGRyZW46W2QuanN4KCJoMiIse2NsYXNzTmFtZToidGV4dC1bMTVweF0gZm9udC1zZW1pYm9sZCIsY2hpbGRyZW46cn0pLHMmJmQuanN4KCJwIix7Y2xhc3NOYW1lOiJ0ZXh0LVsxM3B4XSB0ZXh0LW11dGVkIGxlYWRpbmctcmVsYXhlZCIsY2hpbGRyZW46c30pXX0pfWZ1bmN0aW9uIGFoKHtjaGVja2VkOnIsb25DaGFuZ2U6cyx0aXRsZTpsLGNoaWxkcmVuOnV9KXtyZXR1cm4gZC5qc3hzKCJsYWJlbCIse2NsYXNzTmFtZTpgZ3JpZCBncmlkLWNvbHMtWzE2cHhfMWZyXSBnYXAtMyBwLTMgcm91bmRlZC1sZyBib3JkZXIgY3Vyc29yLXBvaW50ZXIgJHtyPyJib3JkZXItdmlvbGV0LzYwIGJnLXZpb2xldC9bMC4wN10iOiJib3JkZXItbGluZSJ9YCxjaGlsZHJlbjpbZC5qc3goImlucHV0Iix7dHlwZToicmFkaW8iLGNoZWNrZWQ6cixvbkNoYW5nZTpzLGNsYXNzTmFtZToibXQtMSBhY2NlbnQtdmlvbGV0In0pLGQuanN4cygic3BhbiIse2NsYXNzTmFtZToiZ3JpZCBnYXAtMSB0ZXh0LVsxM3B4XSIsY2hpbGRyZW46W2QuanN4KCJzcGFuIix7Y2xhc3NOYW1lOiJmb250LXNlbWlib2xkIixjaGlsZHJlbjpsfSksZC5qc3goInNwYW4iLHtjbGFzc05hbWU6InRleHQtbXV0ZWQgbGVhZGluZy1yZWxheGVkIixjaGlsZHJlbjp1fSldfSldfSl9ZnVuY3Rpb24geHgoKXtjb25zdHtkYXRhOnJ9PXRwKCkscz1pcCgpLFtsLHVdPUUudXNlU3RhdGUoIiIpLFtjLGhdPUUudXNlU3RhdGUoIiIpO2lmKEUudXNlRWZmZWN0KCgpPT57ciYmKHUoU3RyaW5nKHIucXVvdGFHYikpLGgoU3RyaW5nKHIucXVvdGFSZXNldEhvdXIpKSl9LFtyXSksIXIpcmV0dXJuIG51bGw7Y29uc3QgcD0oKT0+e2NvbnN0IHY9TnVtYmVyKGwucmVwbGFjZSgiLCIsIi4iKSksUz1OdW1iZXIoYyksQz17fTtOdW1iZXIuaXNGaW5pdGUodikmJnY+MCYmdiE9PXIucXVvdGFHYiYmKEMucXVvdGFHYj12KSxOdW1iZXIuaXNJbnRlZ2VyKFMpJiZTPj0wJiZTPD0yMyYmUyE9PXIucXVvdGFSZXNldEhvdXImJihDLnF1b3RhUmVzZXRIb3VyPVMpLE9iamVjdC5rZXlzKEMpLmxlbmd0aCYmcy5tdXRhdGUoQyl9LG09InctMTYgYmctc3VyZmFjZSBib3JkZXIgYm9yZGVyLWxpbmUgcm91bmRlZC1tZCBweC0yIHB5LTAuNSB0ZXh0LWNlbnRlciBudW0gdGV4dC1mZyI7cmV0dXJuIGQuanN4cygic2VjdGlvbiIse2NoaWxkcmVuOltkLmpzeChncyx7aW50cm86ai5zZXR0aW5ncy5xdW90YUludHJvLGNoaWxkcmVuOmouc2V0dGluZ3MucXVvdGFUaXRsZX0pLGQuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJncmlkIGdhcC0yIixjaGlsZHJlbjpbZC5qc3goYWgse2NoZWNrZWQ6ci5xdW90YU1vZGU9PT0ibGltaXQiLG9uQ2hhbmdlOigpPT5zLm11dGF0ZSh7cXVvdGFNb2RlOiJsaW1pdCJ9KSx0aXRsZTpkLmpzeHMoInNwYW4iLHtjbGFzc05hbWU6ImlubGluZS1mbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLTEuNSIsY2hpbGRyZW46W2ouc2V0dGluZ3MubGltaXRUbyxkLmpzeCgiaW5wdXQiLHsiYXJpYS1sYWJlbCI6IkdCIHBvciBkaWEiLHZhbHVlOmwsb25DaGFuZ2U6dj0+dSh2LnRhcmdldC52YWx1ZSksb25CbHVyOnAsb25LZXlEb3duOnY9PnYua2V5PT09IkVudGVyIiYmcCgpLGlucHV0TW9kZToiZGVjaW1hbCIsY2xhc3NOYW1lOm19KSxqLnNldHRpbmdzLmdiUGVyRGF5LGQuanN4KCJpbnB1dCIseyJhcmlhLWxhYmVsIjoiSG9yYSBkYSByZW5vdmHDp8OjbyIsdmFsdWU6YyxvbkNoYW5nZTp2PT5oKHYudGFyZ2V0LnZhbHVlKSxvbkJsdXI6cCxvbktleURvd246dj0+di5rZXk9PT0iRW50ZXIiJiZwKCksaW5wdXRNb2RlOiJudW1lcmljIixjbGFzc05hbWU6bX0pLCI6MDAiXX0pLGNoaWxkcmVuOmouc2V0dGluZ3MubGltaXRUZXh0fSksZC5qc3goYWgse2NoZWNrZWQ6ci5xdW90YU1vZGU9PT0idW5saW1pdGVkIixvbkNoYW5nZTooKT0+cy5tdXRhdGUoe3F1b3RhTW9kZToidW5saW1pdGVkIn0pLHRpdGxlOmouc2V0dGluZ3MudW5saW1pdGVkLGNoaWxkcmVuOmouc2V0dGluZ3MudW5saW1pdGVkVGV4dH0pLHMuZXJyb3ImJmQuanN4KE90LHt0b25lOiJlcnJvciIsY2hpbGRyZW46cy5lcnJvci5tZXNzYWdlfSldfSldfSl9ZnVuY3Rpb24gd3goKXtjb25zdCByPUtuKCkse2RhdGE6cz1bXX09cWwoKSx7cmVtb3ZlOmwsc2V0RGVmYXVsdDp1LHRlc3Q6Y309cnAoKSxbaCxwXT1FLnVzZVN0YXRlKHt9KTtyZXR1cm4gZC5qc3hzKCJzZWN0aW9uIix7Y2hpbGRyZW46W2QuanN4KGdzLHtjaGlsZHJlbjpqLnNldHRpbmdzLmFjY291bnRzVGl0bGV9KSxkLmpzeHMoImRpdiIse2NsYXNzTmFtZToiZ3JpZCBnYXAtMiIsY2hpbGRyZW46W3MubWFwKG09PmQuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJjYXJkIHB4LTQgcHktMyBmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC14LTQgZ2FwLXktMiB0ZXh0LVsxM3B4XSIsY2hpbGRyZW46W2QuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLTIgbWluLXctMCIsY2hpbGRyZW46W2QuanN4KCJzcGFuIix7Y2xhc3NOYW1lOiJmb250LW1lZGl1bSB0cnVuY2F0ZSIsY2hpbGRyZW46bS5lbWFpbH0pLGQuanN4KCJzcGFuIix7Y2xhc3NOYW1lOmB0ZXh0LVsxMXB4XSBweC0xLjUgcHktMC41IHJvdW5kZWQgJHttLnN0YXR1cz09PSJvayI/ImJnLWdyZWVuL1swLjE2XSB0ZXh0LWdyZWVuIjoiYmctYW1iZXIvWzAuMTZdIHRleHQtYW1iZXIifWAsY2hpbGRyZW46bS5zdGF0dXM9PT0ib2siP2ouc2V0dGluZ3MuY29ubmVjdGVkOmouc2V0dGluZ3MuZGlzY29ubmVjdGVkKG0uZmFpbGVkU2luY2U/c3MobS5mYWlsZWRTaW5jZSk6IiIpfSksbS5pc0RlZmF1bHREZXN0JiZkLmpzeCgic3BhbiIse2NsYXNzTmFtZToidGV4dC1tdXRlZCIsY2hpbGRyZW46ai5zZXR0aW5ncy5kZWZhdWx0RGVzdH0pLGhbbS5pZF0mJmQuanN4KCJzcGFuIix7Y2xhc3NOYW1lOiJ0ZXh0LW11dGVkIixjaGlsZHJlbjpoW20uaWRdfSldfSksZC5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggZmxleC13cmFwIGdhcC0xLjUiLGNoaWxkcmVuOlshbS5pc0RlZmF1bHREZXN0JiZkLmpzeCh3ZSx7c2l6ZToic20iLG9uQ2xpY2s6KCk9PnUubXV0YXRlKG0uaWQpLGNoaWxkcmVuOmouc2V0dGluZ3MubWFrZURlZmF1bHR9KSxkLmpzeCh3ZSx7c2l6ZToic20iLGRpc2FibGVkOmMuaXNQZW5kaW5nLG9uQ2xpY2s6KCk9PmMubXV0YXRlKG0uaWQse29uU3VjY2Vzczp2PT5wKFM9Pih7Li4uUyxbbS5pZF06di5vaz9qLnNldHRpbmdzLnRlc3RPayh2LmVtYWlsPz8iIik6di5lcnJvcj8/ai5jb21tb24uZXJyb3J9KSl9KSxjaGlsZHJlbjpjLmlzUGVuZGluZz9qLnNldHRpbmdzLnRlc3Rpbmc6ai5zZXR0aW5ncy50ZXN0fSksZC5qc3god2Use3NpemU6InNtIixvbkNsaWNrOigpPT5yKGAvY29uZmlndXJhcj9yZWNvbmVjdGFyPSR7ZW5jb2RlVVJJQ29tcG9uZW50KG0uZW1haWwpfWApLGNoaWxkcmVuOmouc2V0dGluZ3MucmVjb25uZWN0fSksZC5qc3god2Use3NpemU6InNtIix2YXJpYW50OiJkYW5nZXIiLG9uQ2xpY2s6KCk9PndpbmRvdy5jb25maXJtKGouc2V0dGluZ3MuY29uZmlybVJlbW92ZShtLmVtYWlsKSkmJmwubXV0YXRlKG0uaWQpLGNoaWxkcmVuOmouc2V0dGluZ3MucmVtb3ZlfSldfSldfSxtLmlkKSksZC5qc3god2Use3NpemU6InNtIixjbGFzc05hbWU6Imp1c3RpZnktc2VsZi1zdGFydCIsb25DbGljazooKT0+cigiL2NvbmZpZ3VyYXI/b3V0cmE9MSIpLGNoaWxkcmVuOmouc2V0dGluZ3MuY29ubmVjdEFub3RoZXJ9KV19KV19KX1mdW5jdGlvbiBTeCgpe2NvbnN0e2RhdGE6cn09dHAoKSx7ZGF0YTpzPVtdfT1xbCgpLGw9aXAoKTtpZighcilyZXR1cm4gbnVsbDtjb25zdCB1PXMuZmluZChoPT57dmFyIHA7cmV0dXJuIGguaWQ9PT0oKHA9ci5kZWZhdWx0RGVzdCk9PW51bGw/dm9pZCAwOnAuYWNjb3VudElkKX0pPz9zLmZpbmQoaD0+aC5pc0RlZmF1bHREZXN0KT8/c1swXSxjPXIuZGVmYXVsdERlc3Q/e2lkOnIuZGVmYXVsdERlc3QuZm9sZGVySWQsbmFtZTpyLmRlZmF1bHREZXN0LmZvbGRlck5hbWV9OntpZDoicm9vdCIsbmFtZTpqLmNvbW1vbi5teURyaXZlfTtyZXR1cm4gZC5qc3hzKCJzZWN0aW9uIix7Y2hpbGRyZW46W2QuanN4KGdzLHtjaGlsZHJlbjpqLnNldHRpbmdzLmNvcHlUaXRsZX0pLGQuanN4cygiZGwiLHtjbGFzc05hbWU6ImdyaWQgZ3JpZC1jb2xzLVsxMjBweF8xZnJdIGdhcC14LTQgZ2FwLXktMyB0ZXh0LVsxM3B4XSBpdGVtcy1zdGFydCIsY2hpbGRyZW46W2QuanN4KCJkdCIse2NsYXNzTmFtZToibGFiZWwgcHQtMS41IixjaGlsZHJlbjpqLnNldHRpbmdzLmRlZmF1bHRGb2xkZXJ9KSxkLmpzeCgiZGQiLHtjaGlsZHJlbjp1P2QuanN4KHVwLHthY2NvdW50SWQ6dS5pZCx2YWx1ZTpjLG9uQ2hhbmdlOmg9PmwubXV0YXRlKHtkZWZhdWx0RGVzdDp7YWNjb3VudElkOnUuaWQsZm9sZGVySWQ6aC5pZCxmb2xkZXJOYW1lOmgubmFtZX19KX0pOmQuanN4KCJzcGFuIix7Y2xhc3NOYW1lOiJ0ZXh0LW11dGVkIixjaGlsZHJlbjoi4oCUIn0pfSksZC5qc3goImR0Iix7Y2xhc3NOYW1lOiJsYWJlbCBwdC0wLjUiLGNoaWxkcmVuOiJCbG9xdWVhZG9zIn0pLGQuanN4KCJkZCIse2NsYXNzTmFtZToidGV4dC1tdXRlZCIsY2hpbGRyZW46ai5zZXR0aW5ncy5ibG9ja2VkUG9saWN5fSldfSldfSl9ZnVuY3Rpb24ga3goKXtjb25zdHtkYXRhOnI9W119PUh5KCk7cmV0dXJuIGQuanN4cygic2VjdGlvbiIse2NoaWxkcmVuOltkLmpzeChncyx7aW50cm86ai5zZXR0aW5ncy5jb3BpZXNJbnRybyxjaGlsZHJlbjpqLnNldHRpbmdzLmNvcGllc1RpdGxlfSksci5sZW5ndGg9PT0wP2QuanN4KCJwIix7Y2xhc3NOYW1lOiJ0ZXh0LVsxM3B4XSB0ZXh0LW11dGVkIixjaGlsZHJlbjpqLnNldHRpbmdzLm5vQ29waWVzfSk6ZC5qc3goImRpdiIse2NsYXNzTmFtZToiZ3JpZCBnYXAtMiIsY2hpbGRyZW46ci5tYXAocz0+ZC5qc3goQ3gse2NvcHk6c30scy5pZCkpfSldfSl9ZnVuY3Rpb24gQ3goe2NvcHk6cn0pe2NvbnN0e2NoZWNrOnMsc3luYzpsLHJlbW92ZTp1fT1WeSgpLFtjLGhdPUUudXNlU3RhdGUobnVsbCksW3AsbV09RS51c2VTdGF0ZShuZXcgU2V0KSx2PVM9Pntjb25zdCBDPW5ldyBTZXQocCk7Qy5oYXMoUyk/Qy5kZWxldGUoUyk6Qy5hZGQoUyksbShDKX07cmV0dXJuIGQuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJjYXJkIHB4LTQgcHktMyBncmlkIGdhcC0yIHRleHQtWzEzcHhdIixjaGlsZHJlbjpbZC5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ2FwLXgtNCBnYXAteS0yIixjaGlsZHJlbjpbZC5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAtMiBtaW4tdy0wIixjaGlsZHJlbjpbZC5qc3goInNwYW4iLHtjbGFzc05hbWU6ImZvbnQtbWVkaXVtIHRydW5jYXRlIixjaGlsZHJlbjpyLm5hbWV9KSxkLmpzeChibCx7cGF0aDpyLnBhdGh9KSxkLmpzeCgic3BhbiIse2NsYXNzTmFtZToidGV4dC1tdXRlZCIsY2hpbGRyZW46ci5kZXN0QWNjb3VudEVtYWlsfSksci5sYXN0Q2hlY2tlZEF0JiZkLmpzeHMoInNwYW4iLHtjbGFzc05hbWU6InRleHQtbXV0ZWQiLGNoaWxkcmVuOlsiwrcgIixqLnNldHRpbmdzLmxhc3RDaGVja2VkKHNzKHIubGFzdENoZWNrZWRBdCkpXX0pLGQuanN4KCJhIix7aHJlZjpyLmRlc3RVcmwsdGFyZ2V0OiJfYmxhbmsiLHJlbDoibm9vcGVuZXIgbm9yZWZlcnJlciIsY2xhc3NOYW1lOiJ0ZXh0LXZpb2xldC1zdHJvbmcgaG92ZXI6dW5kZXJsaW5lIGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBnYXAtMSIsY2hpbGRyZW46ZC5qc3goaXMse3dpZHRoOjEyLGhlaWdodDoxMn0pfSldfSksZC5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggZ2FwLTEuNSIsY2hpbGRyZW46W2QuanN4KHdlLHtzaXplOiJzbSIsZGlzYWJsZWQ6cy5pc1BlbmRpbmcsb25DbGljazooKT0+cy5tdXRhdGUoci5pZCx7b25TdWNjZXNzOlM9PntoKFMuZ3JvdXBzKSxtKG5ldyBTZXQoUy5ncm91cHMubWFwKEM9PkMuZm9sZGVyKSkpfX0pLGNoaWxkcmVuOnMuaXNQZW5kaW5nP2ouc2V0dGluZ3MuY2hlY2tpbmc6ai5zZXR0aW5ncy5jaGVja30pLGQuanN4KHdlLHtzaXplOiJzbSIsdmFyaWFudDoiZGFuZ2VyIixvbkNsaWNrOigpPT51Lm11dGF0ZShyLmlkKSxjaGlsZHJlbjpqLnNldHRpbmdzLmZvcmdldH0pXX0pXX0pLHMuZXJyb3ImJmQuanN4KE90LHt0b25lOiJlcnJvciIsY2hpbGRyZW46cy5lcnJvci5tZXNzYWdlfSksYyYmYy5sZW5ndGg9PT0wJiZkLmpzeCgicCIse2NsYXNzTmFtZToidGV4dC1tdXRlZCIsY2hpbGRyZW46ai5zZXR0aW5ncy5ub05ld3N9KSxjJiZjLmxlbmd0aD4wJiZkLmpzeHMoImRpdiIse2NsYXNzTmFtZToiZ3JpZCBnYXAtMS41IHB0LTEiLGNoaWxkcmVuOltjLm1hcChTPT5kLmpzeHMoImxhYmVsIix7Y2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiBjdXJzb3ItcG9pbnRlciIsY2hpbGRyZW46W2QuanN4KCJpbnB1dCIse3R5cGU6ImNoZWNrYm94IixjaGVja2VkOnAuaGFzKFMuZm9sZGVyKSxvbkNoYW5nZTooKT0+dihTLmZvbGRlciksY2xhc3NOYW1lOiJhY2NlbnQtdmlvbGV0In0pLGQuanN4KCJzcGFuIix7Y2xhc3NOYW1lOiJmb250LW1lZGl1bSIsY2hpbGRyZW46Uy5mb2xkZXJ9KSxkLmpzeHMoInNwYW4iLHtjbGFzc05hbWU6InRleHQtbXV0ZWQiLGNoaWxkcmVuOlsiwrcgIixqLnNldHRpbmdzLm5ld3MoUy5uZXdGaWxlcyxTLnVwZGF0ZWRGaWxlcyksIiDCtyAiLEN0KFMuYnl0ZXMpXX0pXX0sUy5mb2xkZXIpKSxkLmpzeCh3ZSx7c2l6ZToic20iLHZhcmlhbnQ6InByaW1hcnkiLGNsYXNzTmFtZToianVzdGlmeS1zZWxmLXN0YXJ0IG10LTEiLGRpc2FibGVkOiFwLnNpemV8fGwuaXNQZW5kaW5nLG9uQ2xpY2s6KCk9PmwubXV0YXRlKHtpZDpyLmlkLGZvbGRlcnM6Wy4uLnBdfSx7b25TdWNjZXNzOigpPT5oKG51bGwpfSksY2hpbGRyZW46ai5zZXR0aW5ncy5kb3dubG9hZH0pLGwuZXJyb3ImJmQuanN4KE90LHt0b25lOiJlcnJvciIsY2hpbGRyZW46bC5lcnJvci5tZXNzYWdlfSldfSldfSl9ZnVuY3Rpb24gRXgoKXtjb25zdHtkYXRhOnJ9PWVwKCkscz1LbigpO3JldHVybiByP2QuanN4cygic2VjdGlvbiIse2NoaWxkcmVuOltkLmpzeChncyx7Y2hpbGRyZW46ai5zZXR0aW5ncy5vYXV0aFRpdGxlfSksZC5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAtMyB0ZXh0LVsxM3B4XSIsY2hpbGRyZW46W2QuanN4KCJzcGFuIix7Y2xhc3NOYW1lOiJ0ZXh0LW11dGVkIG51bSIsY2hpbGRyZW46ci5jb25maWd1cmVkP2ouc2V0dGluZ3Mub2F1dGhUZXh0KHIuY2xpZW50SWRNYXNrZWQ/PyIiKToi4oCUIn0pLGQuanN4KHdlLHtzaXplOiJzbSIsb25DbGljazooKT0+cygiL2NvbmZpZ3VyYXIiKSxjaGlsZHJlbjpqLnNldHRpbmdzLm9hdXRoQ2hhbmdlfSldfSldfSk6bnVsbH1mdW5jdGlvbiBqeCgpe3JldHVybiBkLmpzeHMoeHYse2NoaWxkcmVuOltkLmpzeChWcix7cGF0aDoiLyIsZWxlbWVudDpkLmpzeChkeCx7fSl9KSxkLmpzeChWcix7cGF0aDoiL2NvbmZpZ3VyYXIiLGVsZW1lbnQ6ZC5qc3gobXgse30pfSksZC5qc3goVnIse3BhdGg6Ii9jb3BpYS86aWQiLGVsZW1lbnQ6ZC5qc3godngse30pfSksZC5qc3goVnIse3BhdGg6Ii9jb25maWd1cmFjb2VzIixlbGVtZW50OmQuanN4KHl4LHt9KX0pLGQuanN4KFZyLHtwYXRoOiIqIixlbGVtZW50OmQuanN4KCRoLHt0bzoiLyIscmVwbGFjZTohMH0pfSldfSl9Y29uc3QgTng9bmV3IFJ5KHtkZWZhdWx0T3B0aW9uczp7cXVlcmllczp7c3RhbGVUaW1lOjJlMyxyZXRyeToxLHJlZmV0Y2hPbldpbmRvd0ZvY3VzOiEwfX19KTt5Zy5jcmVhdGVSb290KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyb290IikpLnJlbmRlcihkLmpzeChkZy5TdHJpY3RNb2RlLHtjaGlsZHJlbjpkLmpzeCh0eSx7Y2xpZW50Ok54LGNoaWxkcmVuOmQuanN4KHF2LHtjaGlsZHJlbjpkLmpzeChqeCx7fSl9KX0pfSkpOwo=" },
37038
- "/assets/index-CSPNNHcJ.css": { type: "text/css; charset=utf-8", base64: "QGZvbnQtZmFjZXtmb250LWZhbWlseTpETSBTYW5zO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtZGlzcGxheTpzd2FwO2ZvbnQtd2VpZ2h0OjQwMDtzcmM6dXJsKC9hc3NldHMvZG0tc2Fucy1sYXRpbi1leHQtNDAwLW5vcm1hbC1CdGl3eXhNay53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLHVybCgvYXNzZXRzL2RtLXNhbnMtbGF0aW4tZXh0LTQwMC1ub3JtYWwtQmpXSjU5UHEud29mZikgZm9ybWF0KCJ3b2ZmIik7dW5pY29kZS1yYW5nZTpVKzAxMDAtMDJCQSxVKzAyQkQtMDJDNSxVKzAyQzctMDJDQyxVKzAyQ0UtMDJENyxVKzAyREQtMDJGRixVKzAzMDQsVSswMzA4LFUrMDMyOSxVKzFEMDAtMURCRixVKzFFMDAtMUU5RixVKzFFRjItMUVGRixVKzIwMjAsVSsyMEEwLTIwQUIsVSsyMEFELTIwQzAsVSsyMTEzLFUrMkM2MC0yQzdGLFUrQTcyMC1BN0ZGfUBmb250LWZhY2V7Zm9udC1mYW1pbHk6RE0gU2Fucztmb250LXN0eWxlOm5vcm1hbDtmb250LWRpc3BsYXk6c3dhcDtmb250LXdlaWdodDo0MDA7c3JjOnVybCgvYXNzZXRzL2RtLXNhbnMtbGF0aW4tNDAwLW5vcm1hbC1DVzBSYWVHcy53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLHVybCgvYXNzZXRzL2RtLXNhbnMtbGF0aW4tNDAwLW5vcm1hbC1Cd0NTRVFuVy53b2ZmKSBmb3JtYXQoIndvZmYiKTt1bmljb2RlLXJhbmdlOlUrMDAwMC0wMEZGLFUrMDEzMSxVKzAxNTItMDE1MyxVKzAyQkItMDJCQyxVKzAyQzYsVSswMkRBLFUrMDJEQyxVKzAzMDQsVSswMzA4LFUrMDMyOSxVKzIwMDAtMjA2RixVKzIwQUMsVSsyMTIyLFUrMjE5MSxVKzIxOTMsVSsyMjEyLFUrMjIxNSxVK0ZFRkYsVStGRkZEfUBmb250LWZhY2V7Zm9udC1mYW1pbHk6RE0gU2Fucztmb250LXN0eWxlOm5vcm1hbDtmb250LWRpc3BsYXk6c3dhcDtmb250LXdlaWdodDo1MDA7c3JjOnVybCgvYXNzZXRzL2RtLXNhbnMtbGF0aW4tZXh0LTUwMC1ub3JtYWwtQkpmVUNRc0Eud29mZjIpIGZvcm1hdCgid29mZjIiKSx1cmwoL2Fzc2V0cy9kbS1zYW5zLWxhdGluLWV4dC01MDAtbm9ybWFsLURSODRMNUYtLndvZmYpIGZvcm1hdCgid29mZiIpO3VuaWNvZGUtcmFuZ2U6VSswMTAwLTAyQkEsVSswMkJELTAyQzUsVSswMkM3LTAyQ0MsVSswMkNFLTAyRDcsVSswMkRELTAyRkYsVSswMzA0LFUrMDMwOCxVKzAzMjksVSsxRDAwLTFEQkYsVSsxRTAwLTFFOUYsVSsxRUYyLTFFRkYsVSsyMDIwLFUrMjBBMC0yMEFCLFUrMjBBRC0yMEMwLFUrMjExMyxVKzJDNjAtMkM3RixVK0E3MjAtQTdGRn1AZm9udC1mYWNle2ZvbnQtZmFtaWx5OkRNIFNhbnM7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC1kaXNwbGF5OnN3YXA7Zm9udC13ZWlnaHQ6NTAwO3NyYzp1cmwoL2Fzc2V0cy9kbS1zYW5zLWxhdGluLTUwMC1ub3JtYWwtQjlISEpqcVYud29mZjIpIGZvcm1hdCgid29mZjIiKSx1cmwoL2Fzc2V0cy9kbS1zYW5zLWxhdGluLTUwMC1ub3JtYWwtRHIzVWxTY2Yud29mZikgZm9ybWF0KCJ3b2ZmIik7dW5pY29kZS1yYW5nZTpVKzAwMDAtMDBGRixVKzAxMzEsVSswMTUyLTAxNTMsVSswMkJCLTAyQkMsVSswMkM2LFUrMDJEQSxVKzAyREMsVSswMzA0LFUrMDMwOCxVKzAzMjksVSsyMDAwLTIwNkYsVSsyMEFDLFUrMjEyMixVKzIxOTEsVSsyMTkzLFUrMjIxMixVKzIyMTUsVStGRUZGLFUrRkZGRH1AZm9udC1mYWNle2ZvbnQtZmFtaWx5OkRNIFNhbnM7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC1kaXNwbGF5OnN3YXA7Zm9udC13ZWlnaHQ6NjAwO3NyYzp1cmwoL2Fzc2V0cy9kbS1zYW5zLWxhdGluLWV4dC02MDAtbm9ybWFsLTR2b29YQnBHLndvZmYyKSBmb3JtYXQoIndvZmYyIiksdXJsKC9hc3NldHMvZG0tc2Fucy1sYXRpbi1leHQtNjAwLW5vcm1hbC1EUnRhRHBnVS53b2ZmKSBmb3JtYXQoIndvZmYiKTt1bmljb2RlLXJhbmdlOlUrMDEwMC0wMkJBLFUrMDJCRC0wMkM1LFUrMDJDNy0wMkNDLFUrMDJDRS0wMkQ3LFUrMDJERC0wMkZGLFUrMDMwNCxVKzAzMDgsVSswMzI5LFUrMUQwMC0xREJGLFUrMUUwMC0xRTlGLFUrMUVGMi0xRUZGLFUrMjAyMCxVKzIwQTAtMjBBQixVKzIwQUQtMjBDMCxVKzIxMTMsVSsyQzYwLTJDN0YsVStBNzIwLUE3RkZ9QGZvbnQtZmFjZXtmb250LWZhbWlseTpETSBTYW5zO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtZGlzcGxheTpzd2FwO2ZvbnQtd2VpZ2h0OjYwMDtzcmM6dXJsKC9hc3NldHMvZG0tc2Fucy1sYXRpbi02MDAtbm9ybWFsLUFxbzY3cnpiLndvZmYyKSBmb3JtYXQoIndvZmYyIiksdXJsKC9hc3NldHMvZG0tc2Fucy1sYXRpbi02MDAtbm9ybWFsLUJtZG1JSVEyLndvZmYpIGZvcm1hdCgid29mZiIpO3VuaWNvZGUtcmFuZ2U6VSswMDAwLTAwRkYsVSswMTMxLFUrMDE1Mi0wMTUzLFUrMDJCQi0wMkJDLFUrMDJDNixVKzAyREEsVSswMkRDLFUrMDMwNCxVKzAzMDgsVSswMzI5LFUrMjAwMC0yMDZGLFUrMjBBQyxVKzIxMjIsVSsyMTkxLFUrMjE5MyxVKzIyMTIsVSsyMjE1LFUrRkVGRixVK0ZGRkR9QGZvbnQtZmFjZXtmb250LWZhbWlseTpETSBTYW5zO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtZGlzcGxheTpzd2FwO2ZvbnQtd2VpZ2h0OjcwMDtzcmM6dXJsKC9hc3NldHMvZG0tc2Fucy1sYXRpbi1leHQtNzAwLW5vcm1hbC1DSkljeEQ2Sy53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLHVybCgvYXNzZXRzL2RtLXNhbnMtbGF0aW4tZXh0LTcwMC1ub3JtYWwtQkxJM1RUV3oud29mZikgZm9ybWF0KCJ3b2ZmIik7dW5pY29kZS1yYW5nZTpVKzAxMDAtMDJCQSxVKzAyQkQtMDJDNSxVKzAyQzctMDJDQyxVKzAyQ0UtMDJENyxVKzAyREQtMDJGRixVKzAzMDQsVSswMzA4LFUrMDMyOSxVKzFEMDAtMURCRixVKzFFMDAtMUU5RixVKzFFRjItMUVGRixVKzIwMjAsVSsyMEEwLTIwQUIsVSsyMEFELTIwQzAsVSsyMTEzLFUrMkM2MC0yQzdGLFUrQTcyMC1BN0ZGfUBmb250LWZhY2V7Zm9udC1mYW1pbHk6RE0gU2Fucztmb250LXN0eWxlOm5vcm1hbDtmb250LWRpc3BsYXk6c3dhcDtmb250LXdlaWdodDo3MDA7c3JjOnVybCgvYXNzZXRzL2RtLXNhbnMtbGF0aW4tNzAwLW5vcm1hbC1EdlVmVnBVRy53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLHVybCgvYXNzZXRzL2RtLXNhbnMtbGF0aW4tNzAwLW5vcm1hbC1DVVNTQ3BRWC53b2ZmKSBmb3JtYXQoIndvZmYiKTt1bmljb2RlLXJhbmdlOlUrMDAwMC0wMEZGLFUrMDEzMSxVKzAxNTItMDE1MyxVKzAyQkItMDJCQyxVKzAyQzYsVSswMkRBLFUrMDJEQyxVKzAzMDQsVSswMzA4LFUrMDMyOSxVKzIwMDAtMjA2RixVKzIwQUMsVSsyMTIyLFUrMjE5MSxVKzIxOTMsVSsyMjEyLFUrMjIxNSxVK0ZFRkYsVStGRkZEfUBmb250LWZhY2V7Zm9udC1mYW1pbHk6SmV0QnJhaW5zIE1vbm87Zm9udC1zdHlsZTpub3JtYWw7Zm9udC1kaXNwbGF5OnN3YXA7Zm9udC13ZWlnaHQ6NTAwO3NyYzp1cmwoZGF0YTpmb250L3dvZmYyO2Jhc2U2NCxkMDlHTWdBQkFBQUFBQVNVQUJBQUFBQUFDUkFBQUFRM0FBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBR2h3Ykhod29CbUEvVTFSQlZFd0FkQkVJQ29Sa2czb0xJQUFCTmdJa0F6b0VJQVdGSGdlQkZBd0hHM0FIS0I0SHp1a3JSanlGNUdiNGtRL0I4NzNkMTdtdjhUV2tvcVVVR2FIb2RKQ3RvcW50dzdtOHRpUFd5R2tmV0RVL0lNcHpWazR6QXM5Q3p2M2M3T3M1TnZLRkcxSHQ5dkJWWHlTUlpwSmM0dFRyYk0zc1RSRmNMYTN6VmJvS1dSSW9Ba3NLU0tncVVRV0V3bFNvcWpwNDRWNUo5L2tqZDArRmk1eGFGandKQXJnQkFJSmdJQWdDQ0FJNENkTk1xR3VZWFlVS2RBRExBa0FBSndsNmlYMCtiWnFFbTFBSDBIdTlydnJKSHd4UUcxUS9nRll3V1liZ1RSV2d3RUVTVnpibXRqUUF0M0RYTzdUdS8rOVEvS05LV2hUQ2daOGZRU1dvTDBDVVVnVEJqZ0w4aUVBY2NlN1lIQmVBOFp2b2dpZUNueEkwQkNWZUFDQ0FBaEJEL29EY0FkVVBBQlNnQVg0a0JQQlR3akNBandZU0NuZWlxRjY1TFVvL3FYZFlGclJ3VHVqdE1yS20wN3BsVGJTcUxRRkFpSEJON0U0REc1d2tpR1hoQ1lCTkVUaDNLL0FjaUhONjlpRmZRakZPcjlFWFFRQUFRWFJOc3pzOFBSME9INGZEVi9kd0dlNzZDSGRqMU1RYTExRFhZR2NmWjYrQjFYME9md2pZK2k3S3BRMXc5ZCsxejMvSHlkQ0IxZjNVOEEwZlJGdiswYlh4UFdyWnUzZDlObjRVY2JMcy9RQ1hMSC9qM1BDS2JsS09pWnhMT1I3OFc5YnJQbzdlR1RMei9GMjdaUG1lUFFkQ0IxWVA0bkpVOTFvNGdVOWN5NjRMM2MzU1B1OEdmRG42WlhEMmNHbWxsVnFTeHRENXZDWEhtNXhhZUhsbnBmZng3RGNQdlhvZzVObmpBLy9jUHoyYnRzejN5ZiswTUk4cmkzM3R1djd1cE5iWW1XNVNUYm9zVzhiWUl0Vi9TUHp4dlhDMEtucFduRmRDOTFvb2ppdDVMeW82V2NKUTFZendCWWJpNTJvaEpWcGN4ZmNIQnFzdjBuRno4VTc0cnpTNk03cjBSVmxYWjNqSkM0RzkyTy8vN0xtNzhWT3RuVXgrYVF4QXpzcVBuclJyMXQ5ekRyZXpLZVB2WjAyN3grZkd0ZTRzNE5YdTcvakVwM0c5Y00xYklDWWdBQ2J1RVRVVUQ1d21lbkdYQS9JQnBBS1ZybDBBRUo1Y3FyNlE4OXRHcStTcHFrRGZYMkR0RytwWjl0ZXVhZTBBWDk4YzMwMUNYMTc5SW55RXJuU0c4V0NpQUJCNEhGYlZydy9scFRkQklPazgyblhicEhLb1FHeUJwVW92QUFENFhRQThaVFVDZUJKSElwSTB2MEZScmdjbmNrVjNBTmNrcndZSktYRWloUWZkU0tQRVI2WGVFeG1FZUVNbVNlNlFCd1dta1pkbVNPU3RoaGliZ0lrQmxVWXJlQktkLzBOZVZBRTlXQXlFYVFwSDZLaWtEV2xVVmc0M0p5MkZPbWFZbHNaaERFR1pYTzNtV0V5V0hJNnp1YUprTWxjU1E5azRGK0tpZElpRnlaSXRHRGM3cjFwVWo2d1A2enJXQjAvZmJlZUZlSGw0WU92RVRNTmlNOE55KzdPTzZRaDJ3dXIyMFlWeEZ0czVkbE9SZGw1S3dkNXV0UjdTUmN4cVg4UkE1RWhhY2hhNzZoZzdjNnl6Tm0vWGY2dk9MTnJ2NTQ0bElFa1dnN3hXby9JdEJBZUlKRW10MFhnQndnTThnVGlmb2lpTEpyb1lZb29OVGV6aUVLZTR6T29SL3d2SUtwODloU3IrNmpGQXF3L0xhb25qbVpIU3NjTU5nNGlQbFdwRnJPMVJOM3prTVUrL3hVUCtKUTk5VGJ2VGwxVmcwZ3RpclQ2bGJ3WUFBQUE9KSBmb3JtYXQoIndvZmYyIiksdXJsKGRhdGE6Zm9udC93b2ZmO2Jhc2U2NCxkMDlHUmdBQkFBQUFBQWJRQUE4QUFBQUFDTUFBQVFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkhSRVZHQUFBQldBQUFBQmdBQUFBY0FCUUFCRWRRVDFNQUFBRndBQUFBSGdBQUFCNUVkRXgxUjFOVlFnQUFBWkFBQUFBbkFBQUFLTGo4dU9wUFV5OHlBQUFCdUFBQUFGRUFBQUJnRjJoY2ExTlVRVlFBQUFJTUFBQUFQUUFBQUV6cE04d29ZMjFoY0FBQUFrd0FBQUJSQUFBQWRBeUhDb2RuWVhOd0FBQUNvQUFBQUFnQUFBQUlBQUFBRUdkc2VXWUFBQUtvQUFBQjhBQUFBbDYwNGNKRmFHVmhaQUFBQkpnQUFBQTJBQUFBTmhTUzhVTm9hR1ZoQUFBRTBBQUFBQjhBQUFBa0Fjd0JFR2h0ZEhnQUFBVHdBQUFBSHdBQUFEb2UvUUxtYkc5allRQUFCUkFBQUFBZ0FBQUFJQVRjQlo5dFlYaHdBQUFGTUFBQUFCd0FBQUFnQUljQ2IyNWhiV1VBQUFWTUFBQUJFd0FBQW1vME9WMDhjRzl6ZEFBQUJtQUFBQUJ3QUFBQWxOZHpNVEI0Mm1OZ1pHQmc0R0dBQUVZZ1pBV1RqQ0FlQUFHMEFCa0FBUUFBQUFvQUhBQWNBQUZFUmt4VUFBZ0FCQUFBQUFELy93QUFBQUFBQUhqYVkyQmtZR0RnWWxBRFFpWVhONThRQnFHY3hKSThCajRHRUdBQkVmLy9nMGdBV2trRlZRQjQybU5nWVlwaS9NTEF5c0RBMU1VVXdjREE0QTJoR2VNWWpCZ2RnS0lNREp3TVVNREV6b0FFdkp5QXhBRUdYcGFYekgvK1hXRmdZUDdEcUtQQXdEai8vbldnU2pXbVcwQlpCUVpXQURiUERqb0FBQUI0MmdYQnNRMUFBQlFGd0hzZmlZNUNZUUJEYVZWSWxCTDdtY2tBN2tUMENwUENvcDc5dUlQejNxNE1valVyU0plUHZOU0tSbFJHRUg3NGh3WU5BQUFBZU5wVnlFY0J3a0FRQmRDWEhub1ZnSlU0NFk0cEZJQUZVQU9KaVMyM1pPWjNsS2h3VlNsa3I5MXhkbFFwN2R3TW5yNUZXYi9yTVFRVzI2ditoM3hUK0lSSEdFSUJDdk5yOVdoME9VVTdOeFVVQUFBQUFBRUFBZi8vQUE5NDJtelFOWlRVUUFBRzRIOW1JRGxieVNvT3Q1STlISFppTCt2UzRWRGg3dTQwT0ZSbzMrRlE0NjRWN3RiaVVtSGRKY3ppY3NtNGZlLzlZQmdERUljK0JZT0Vlb0FyelVxeVdTR2tlUXpaNit3bWZad0xvdDZuVDF2Vk5NMDRvQmxROUFab1gzRkhoaC9nUVI2TXArSnlrS2RVTlNWSmN1OVQyMC9ONzNPclQzRi8ycU13NXZmV0xwODhTUUwzckZFKzN5Z1RydnY5QlhhTXFpQ0FrRDNkMmxyMWlwYWdLNFFxTkRIakN1UEJTQ1JxR0dhUU0rWExrMFhyUFg1R2xhWTFpNTRRRDduaHZPL2MzK1BwMzVtRUhPNThkTjJmZDZtRWRnQVlScmhmcUV5Zmk3ZWk2QUcwajZtNm9oazhIUWtySVVsS3BRMWRqNGRERWNaMVRZM0hwRERwTTNQWnNwa3psK2xUcWxibVpVWVV5OG8wTEp0S1NsT1hMcDNxbkM5TjFpZVU3RldyN0JJWlBzc3VGbTFocHQzQlZCVy95UE1QY3dBVWRFTDhtNm5xdW1iVTFFZzQvQ2ViK3MyV3B4ckcxSEt0blZLeGNtOXpvbGhXcmtHYlZONVJtcVFKZEdkcGtqNnVrR2x1emhUZWQ3VUxCUnZrcDR3QUVOVkZVdDFvTkdybWFTMnI4SmNyQ3hmSmpYV1VVQ28zeXZNWFhEbHloS3JPM21oTGovcUdodm9lTFJFeXZ2WHBFWURnR3V0RkRyRmpZRURRNVBLMU9jc1dzMTVidDRKZ00wdVFlMkxIQXhDUkhBOUZlTm9RblVTK1RzYzdKa1JYVlYwM0pJWlpKY0JKUlVkSHhTbUFBUUNGWllVM0FBRUFBQUFDTmdRSkN0ZGtYdzg4OVFBREErZ0FBQUFBMjlLbW1nQUFBQURiMnREeStUdisxQVNTQS93QUFBQUdBQUlBQUFBQUFBQjQybU5nWkdCZy92UHZDZ01EeTRhZjFuOXJXU1lCUlZBQkh3Q3VkQWJhQUhqYVk0cGdpQUppYlNRc0M4V0JRR3lFUkROQU1RaWNabWdGQU9lRkIvNEFBQUFBR2dBN0FFWUFVUUJ2QUhjQXFRQ3hBT1lCQ1FFSkFRa0JDUUVXQVM5NDJtTmdaR0JnNEdmY3daREhzSVdCRGN4REFHWUdKZ0F0R2dINGVOcU0wSUZHUTJFVUIvRGZxcUpNQlpMQUZVaDBWME1vVUJHbGxLUUFySFZ0Tjl2dTNIdUgzaUVBUFVKUDBjUDBCRDFEM0Q2ektRcUhIOS81bjg4NXFIczFxemEzaVBmYWVuRE50cy9nR2NzK2dtY2RlQXVlbStpWnQrRWxlTUdXeCtCbCsrSnYxNmpiREo1WHR4YThvbTRwZU5VU2JtVDZXZ2JPbEZwNlVtMlhFbzlTSTMzM0VxbU9ycktxMGxEaFFFTkRvUzJYR2lvVllvVlVUeXlUNjJpNGN1ckN1VVRwV0s0bE5WQzRsQm5JN0V6OWRDZVJLNlRWYTZRcDFyUm5iMEtIemgwNy9QZk1HNG1Pa1o2Vy9KZFVOTTVGVTdrVG1hRm4rWGozU05OdVZaRmJYWW5vajNuWGNwa25pWGFWUHpLcWJwakpxODZ0SC9mc1NLdU9rUWV4dGt6ZjEvU3gyS0tQeC8rYUFETjFYS3NBZU5wallHSUFnLytwREVaQWlwRUJIZkFEc1FyRFNVWW1CaHRHWmtZV1JsWkdOa1oyQm1aR0RrWk9SaTVHYmpiSHBLTFVzbFQyMHJ4TUF4TkhWd2p0YWdIbHUwSDVscXpwaWJtNWlXQ2VnYU1CazNNUVgySnlhVWxxY241dWtsNXlZbkVxRDBqRzJNQU16QUVBb08wY21BPT0pIGZvcm1hdCgid29mZiIpO3VuaWNvZGUtcmFuZ2U6VSswNDYwLTA1MkYsVSsxQzgwLTFDOEEsVSsyMEI0LFUrMkRFMC0yREZGLFUrQTY0MC1BNjlGLFUrRkUyRS1GRTJGfUBmb250LWZhY2V7Zm9udC1mYW1pbHk6SmV0QnJhaW5zIE1vbm87Zm9udC1zdHlsZTpub3JtYWw7Zm9udC1kaXNwbGF5OnN3YXA7Zm9udC13ZWlnaHQ6NTAwO3NyYzp1cmwoL2Fzc2V0cy9qZXRicmFpbnMtbW9uby1jeXJpbGxpYy01MDAtbm9ybWFsLURtVUtKUExfLndvZmYyKSBmb3JtYXQoIndvZmYyIiksdXJsKC9hc3NldHMvamV0YnJhaW5zLW1vbm8tY3lyaWxsaWMtNTAwLW5vcm1hbC1ESnFSVTN2Ty53b2ZmKSBmb3JtYXQoIndvZmYiKTt1bmljb2RlLXJhbmdlOlUrMDMwMSxVKzA0MDAtMDQ1RixVKzA0OTAtMDQ5MSxVKzA0QjAtMDRCMSxVKzIxMTZ9QGZvbnQtZmFjZXtmb250LWZhbWlseTpKZXRCcmFpbnMgTW9ubztmb250LXN0eWxlOm5vcm1hbDtmb250LWRpc3BsYXk6c3dhcDtmb250LXdlaWdodDo1MDA7c3JjOnVybCgvYXNzZXRzL2pldGJyYWlucy1tb25vLWdyZWVrLTUwMC1ub3JtYWwtSnB5U1k0NmMud29mZjIpIGZvcm1hdCgid29mZjIiKSx1cmwoL2Fzc2V0cy9qZXRicmFpbnMtbW9uby1ncmVlay01MDAtbm9ybWFsLUQ3U0ZLbGVYLndvZmYpIGZvcm1hdCgid29mZiIpO3VuaWNvZGUtcmFuZ2U6VSswMzcwLTAzNzcsVSswMzdBLTAzN0YsVSswMzg0LTAzOEEsVSswMzhDLFUrMDM4RS0wM0ExLFUrMDNBMy0wM0ZGfUBmb250LWZhY2V7Zm9udC1mYW1pbHk6SmV0QnJhaW5zIE1vbm87Zm9udC1zdHlsZTpub3JtYWw7Zm9udC1kaXNwbGF5OnN3YXA7Zm9udC13ZWlnaHQ6NTAwO3NyYzp1cmwoZGF0YTpmb250L3dvZmYyO2Jhc2U2NCxkMDlHTWdBQkFBQUFBQS9JQUJBQUFBQUFMTXdBQUE5bUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBR25BYmhYQWNnaFlHWUQ5VFZFRlVUQUNEQkJFSUNyQThwMUlMZ2pnQUFUWUNKQU9FS0FRZ0JZVWVCNHhPREFjYkZDWXpBL2FEa3hwMFJNWG1UTUgvSWNFVWthWFpoZTdxQVZRb1JodFJtT2hremFVWVhzM2x5elRVbHdwdHd3Tkd5MjhQTFAvb1pld24zOWc0SmpwOFl1c0lTV1o5ZU5wVzc4OE1OUU1JN2pacHJnc3FSaUo3aW1DQllsRVdJQmhnb1dqajd1SkdjZGRlZG5uUklRL2ZYNzduN2k4TnRMZjA4VXdFUWwzanE1OVhKQ1NoeXBVNGxNeXozSGIzWDBvbWtBa1pDWVZOaGZOL2MzUG1mMW5KY0RxbmoyVkUzNWZZQXgrOFdZSUpoWmo0em5uMVFianA5K2Y0UGFiMHdPaTdKU0VDekcwbzZEUld1L01CZ2Z1L05kUHU1TzhjVXNzS1NKMXdVeVRqcTZvV1ppYzduVXNLdUlFeVNzSWt6WHZkS3pBclZOa0N3dlAxbFFDZ0s0eXUwQlZXRnA2dnJXVm0vNk50N0g4MkpHaHhEeUF0ZUNiSFpMUmR6VHN4SnFORVV4Yit0eEh5c294andRenoycDh0VTV1RnRDNFJtY0dvdUNSWDN2MTE5NWNDQVlnQkFFQ1JJV1NJVk5zUUNpcUVoaDZScHhSUnpvZ3dhVVRZZFNDYzNBaXZBY1NRQ2NTa2FjU0NCYlFsY2JROURxQWRkZ3lOQUZpWmlsQVg5YzFPU0IvNlp5WWd4UUN3RGdHUW9WUUdJWUFJUnZWbFJBaVI3QXgranNxS0lEYWNqVkV4TkdXQS9NUUxrOFZ6SnNoVG1PenRyVmJ5U055SFZuYUFpVVZwY2dkdm1uaDlGTmVBWVlYa01sNEFxaXNFb0R0SVpLMHpzNmxzU004eUFib0VoWjVDRlZxRDIza05mb3I0OVFnQUdXd0ZCZVJBSVpSQ0xkaWdCYnFQRlNJRitBQmVRQWZvdFVVMGcrckwxZ0NNT25TTm40UzBQV0VMNU53MlFCcXlJVnZCVDJGZTl3Q1NZRGEzUUgzVnQ0Y1NhV1NBdWcrTlQwSktEZ0FLUU9NTGE5NkVGSUtmL2dPVVdEUWlFM0VGZ0FCNGFBQ3hpa2hGQUF3S1paOERnSGVpUlFpeFJnaG01bjRIckNPT1NyUUF0cUpVM0x6cEZBci82VEFIbkRvOFFRZ3N6TkhaNzdGWHdnb204NUpmd1FPcU1DOEFlL2dZa1NzVVJRMUFnUWdBUUF1dEFBb0FBTENkQTNnSWt2NjE5TC8vdndiMEg4blZnanorYndMVWxGb0RhUEdRa2ZxQmpRY3BjNFI4T0R4REFQd3VyaFZKTWJSUmE3a3NGVEpBVUpFUksrUlhnRHhEaThhejBEMzlOQkptTWpHWlA1TVdneUg1K21ZWGVaZzBrWk9kSkVJdTVrMU9hSVlXMFJucXYvUzJEdFF4S0NJak9TUk1MdUtORGpwd0lYRFJFMFk0MDd6T0RGMy9XL292bnZiaUF6NllJT0MwblpLYVZycE1BREs5L2c4c1FET1JhYUxpVm1wQ05qK0RzQVVKVWcxU05CS3B4YkVTcXlOUmoyWEIySVd2bWtBTklUT2U0MnpSWnF0MjIzUklaYmRSaTAwY05tdTFRVE1sRndXblRIMnkrR2g0cGVtV3JrZUdYbHBkZGdqWUtVZ25SRzlBam41NWh1UWJWaUNpeUtoaVkwcU1LelNpd3BSeWt5ckZHRTBqU0NJRkFKd0xBRGtEMEF0TUR2QmVnSGtIdWcwQW9GR0pWSzJxaENYRzYxQUlyV1dyOGFZWVQyemhXa1ZWRDZFWDYyZFF5SEpxVkdMaWNkQXlUUXRGakpnVmkxT2x3MHdkSTZlb3VDMVNaanZMM3VtaWtHNWgzQlNIclRPTVFLcGtVZ1F1L2FHb1ZDNVZLTE9qWEtCSXJXU3kyRnFtbEIrZFRLQVVjRHdKRTVUd0JrYkZuSi9yWTkyc3M0ZHpYeEtiVjEvVDloQUp2QlV1K2J3T2FxL1hXRGVYVEVLdkJNditIWURZdFNNWEhJOGxFckJsRHYxRnZDRjJ5RGZKY2llM2Yxb1dlK3dDdGI5SENaZHNoSEJJZkxDOUZyTmY2MEo0SEdNS1lrZkM1VEorbFNOSGQzTmRaNWROWjk2bzZPRzhsT3ZwdDVJY1IzcjJ6NjFzdWFGQk5RbXJUMHdyQ1hrdndLa05XZW5VUmRkeWs0K3UxRnVTaVFSdFJ2UXh4aEVmeEZvNDExUEJ2ZmJUUTFhQ1BTYkEweUljelJJSlJYRUVReVlTNG9jWC9vZjFXaWl5YVk3U0kzWjU0dTZwVWU4bSszMFpYQjRmMTNWMjNYYnVwWW9lTGh3YTVRcWNSSUtSZGh3dERqZEhYN3NqOFNTV3FoZ2QyczI1L0I3T3VUdTRXTGR6OUZnUUx0RzU1SGhNbGJGTi9KNXJybUdQWFFXd1pPVlZMbm4zMVZldmduUHJmS3QrSXNIV2VTNVpZVm5DSlo5SElxZW0zeithZUFzang5MmNLKzdoblBHeVZjYXJONDdpOVFjdGRBRFM4NjRYbCtmMmNNNkU2Vzdqd3lETG1XVGxETmZBV1J0TjNlTHVweTFWdVVvWEEwWTluRE13RG0wYVdXeTh2a1k2eW5pUFRLbWF4MW1GTVNQVFkrT3lObzVndlByTWFXaCtkNllvY3F6b2JyaDJCTSt4TzY2NWdqMTJXUVBTaXhtM1gzMjVPSE5wZXk0K0ZpSStWaUc0biswbXRrZURUNko3N2JLMXZzTGNxdXIxYU15Ri91NjNUNHhGeC9WM3ZYaHpxK1ZYRkw3eXBLd2pQeitsNHcySTdPMWIyMSt3cnozWEdDa3pocXdLaTNFd1V0Ym83dytZckxWVkN1TThVMU1BdnJYckE1WVh0WDd0dDVZQWdvSFR0cDhXV0YwZUdIcVJOVmhVRWpCYmEwdjhoK2JXYUFWK2M1MjVKUEM3WS9HWEgxOWhyVXlXbDUxYmFhMDREMGNuN1NwNXFzemUxVnJ3VjdPeVpIZlNpeUpUc1pCMFRGb2VyU2pmVzk3TVVEMFl0NTlvTDNLZDRTTm5kWTM1dStTdDV5WVRHNTc1UDFjcHZXZjNoc2t5cGdTL3lCMzB0ampDM3Q2emkvT200bC92anRZUllkT2NweWM0RlhRdFJBWlRONWg2NnZVZFJwc3h2L0ZNblNSSGR6SVlVV2NnNnZjSEF0Rk9xOE5tRG0rbDlyNDl0allTMlJJMk8yenF2dUlUSzV3Vkp4YVhMaHVkeG1YeVVXdC9LL1FpeTBCSnFiL21aSE9wYjZERVlnMlZsUHJNUVdmK3JoZU5ocE9qbzF6ZGZJZktrbTZxTWhzclRlWmQyMzRCMm9NUEI2OEt5aCs3T1FpOTBCb3FMdldiVDZ3dDlZV0tyZEVLZkxVbm1rdjlKMmZ4bGQ5WGVhTHgzdkt5WjQwblZqNkhmVS9ZZGZLdzc5aTlyUVUxbFNXSFh1ekJTU2NLemNaQzNXUGRsUmNVbDl4UWVUaDJhQzZHOW1kNnhub3J4Z3NLZDFmMGR2a3IvZTdLUXROVC9ZSFlGSzY5MWZIcWM3ejVXR25vVFhQaG02SFIwbW51YlRDRm5ZRUpmN2JmUCtHME91dzFrNFF2dU93L3JQc085N3VmbFN4WEtDdVdTMHJqbGNyS2VQSGxyWVpXbkg5QVk5Vm9MMDN0QVRNYStrQi9JR08xTExxYWtiRjZzcXZRSEpoT0xvd204Y3lCU0hKbU1vbm9nYVBKQVRwT09Pd2VFL285OXA3V1dtZm1zMWs3bnMxMDFsWkh4dFJCVGVmWk16SUprU3NhTklaNlBSZVQvb2hWbDF1R2cyZTdtbDM0NzREa0k4a0dUVnREWk9lMlRPMk9OdWpYTWs3VGFncVBydEdlaG0yZjVHa3NOVXFXT01zQUMxSnBYVk1COGEyNjVkd0NXcmVjYitxam1jdUYzcEtoWC9xRW9kcmw4MHY1UlBQdXE5eEdkVXU5eDNCMnBucXJkdm5CNlBlMkJCcE43YXAwblM1ZDFXN3lONTZRaUIwWVhUelFJV01xc1ZpdDJFMUlKSjY1VHNJK0t6VlpiSG1ONmRKemtpcm85OXQ3R3FzY3lsLzhuYlRTVVZXZGpPQnlUZWRDU0NaZHIwa05XM01IY3JXV3hXbXAxY3AreUU2Yzk4ZDBqQzBsejRnZEdYalJhTE85MmZmVUh5c3A4cEYzZ2l2K2VPY0dqdnNiR2ExMWhraVcrUEI1aG1QZGh0MzhTNjdwbUE5bXkrSWJObVhVTHZTM1ZHMDdMcTEzNnE0eG5LejAxb1BodVpHSnVlTVdySzMxSm9mS2tsYWUxcWxxS2JhN3ZnNXlXbnozaHpBdUJPZUdlK2FROHVyMDNnV2hTTnhRM2EvaHRxVWNXenF4WnNncHR1d1RjWTNOYUd6WkxsVFVLUDhVVzR6SGs2b3hIRkZmOStGOU1yRlV3cS9uNTJqMDZ2TmVHbG1TOWV5SlU3QThlakE4RjV1WU8yT2gyaTVLK3VEY2F4UFJ1YnZmNnZiVHh1ODVtNVduV3FvOVdiZHFKVWNPZjN0U29OdkNicm4wOUhKOWlvNk1qWjRYbnk1cWIycHVBcFVOZ2dsOEtMVlUxQUNRVHBNb21HMkhvRXJpTExrYWVqcklNOGd6SXg5MElzOGl6OGJuakdOak5MUUFESEpjTTRWY0VYcVhrT1VoRzduSUE1QnZOSitOOU1LbVlidU4wNVRxNVpyV2hjanFobVExSXpkSU5hbVcxVjRXckJoazI5Ukc2Rm9EcWZJdDl3amtiTmZ2Y3E0WFlPdzFQSFVKbXF1Q1owM3IzcTZQU1lOc3dIQkxVSmJLV2JjSFdVYVdRWlVOODlBbkFzaStFUHhRcnJJbEVKbkpJbFVKTTdITWN5SWIyV2Rpd0NZWWhka0t1QmpaNWdVWVNCdTJUWVNOWkVCUVovZHNMTW9nWkFscWNNbmxUcGNzek5PV0M3TEh5MG9NcEFkN0ptaGpBTDhOYm1SZGF5QVZ2RFUrV3hMNVhSNzBBb3doYklOYmtjNy9LZ0x3TG1QcVRmd05CRVVIQ01CeG1VaGRRajZXVWxrWmxLbnh1NnBPMWQ5L3YvLzNRN3J3Ky8vLzJmTWpBQUI2b0RiMEhhSDBiNkdVSlU4WTBlUjY0b2pxVXFtMTRPZDhkdVJESFBLaEZmWnBpR3VwVU5uemV0anhkZ1JiSy81K2w0SUo1SmVTaXI4dDNSKzFJYUZhYTlBWml0QU5YVHZxVXhhdlEyVFllTm1yWXdQNGRldDJ0R3VXZ0ZwRGVqTDlldVlBZlFmSzI4Z0dHSXZiZ1FSY3BYZXNvdFpJQUJVSy9Mb0NNZ1g1dEJ6b1VGaVdiQURmQ05mTXU5OFBzQ2doYmR5ZXE2amdlbDA3cW9DREpqanN5SUZZN01BT0RTWUwxYWxROXBoQ0lSdDNSaTR0YlFWZ0U1ZHBrZmhqR0FrWk1BV1JZelBMTmlvaDY4QW12d3dkNHpHem9kQ1JHYVRsVWpacVZkYUJUU0JEZko2dld6b3FHNmxaaFFLYkZLNkVBS2d6NXVuQjAwZjlLYWJmSUUxL0NjQTc2NHB6Y1BidlN6K0RUZGwrL3hjQUh3VUFDSHdNM0pLNmxCTCtkODhIeEFWZkZIaDNtMWI2YThUV3FLOXF3VnJSVmpQYXE2V3FGU2JVWHFPT3FyWFhDa2ZONktoV1Bnbm5kc0NzRDNDZFp6SHBvRVBPWDZ3ano2N0ZIc285YUFxV1creW5weWVBYytWaHRHTVFnS0RoazdwQkdLVXNBbkJmbEVobENWMnduRkx4djJWcFJvK1FURm1lN2E0cXk1Y2pVVmFxaksyc2pGSitHVG14OUZZRTRNMmh2RFJLd1N5WExTZWdROVM0ZmhPYXpPVDhZeUpDUEFhSEhoWTJvOFh5RDRpWU5jN21OS05XVEwrSUNkTzBHbythaUZxc0daTTNaeU1EZzJraE1SR1RacXJNZk5OOExEL25xSmhoQnEzcU5YTjJyOEx6R2tCdUhwTWdZbWtWMmRwRkNoVUt1MDhWbTFwVlI5VEJoK0ZqZXZTeE1ZWnI3YU5iUkUxYUZKc3J2UzFSY0cxcE9TOW9jQko4clRZeDR5TXVRajZXMld3VzRWblNESkZ6NXRVL0xLSzBaZ1dYQ0QyL3FSbUtSV3VZaCs0N1VTNmFkWDFGQU9JZndibUFURStUMnQ0d0xWYWIzZUYwdVQxZVh6Nk1RS0xRR0N5dUdFOGdWcExJRkNxTnptQ3kyQnd1cjU0dkVJckVFcWxNM3F4UXF0VGRTclU2dmNGb01sdXNOanN6MHErV2hWV2RlZzBhTmZVbUc3dm1PclJ3YU5XbVhZZE9UaTV1SGw1ZGVYWHIwYXVQajE5QXYyQzlRZ1lNR29yMkM0c1lNV3JNdUFsUms2YkVUSnN4YTg2OEJZdVd4QzNiYlkrOUVqaEJValREY3J3Z1NpaDg4L3krZXEvQzEza0huWEtoYlRVRGdJU1VDZ05Eb0FCWEtMQ0wrMlgyN0UvYzJqQUFRRUtzRmlneDFxZ0xFYlNldStOeWhjSkdJRUNRTm05TDU2N2MzbDd1WjVXbzNwa3g0dFlPaEpBTkt3OWRFb25vdlJxVkRiNWRNS3o1MTVOZytoY2kyM2htNFVRRXM4ZUNod1BCMEJaWU9CSU5iSDNFcncwSEVDelVhb2tXYTQyZXlHRDNQSUJJTUJTT3JmcnlCUTNHNG9IUUtpKy9rRUEwdHVhRFY0MEdQM2gwK3d1QUFnWFRLeTB2NTQyOHhVRHdrc2ZtNTM4anVZOW5pOWZ6MkdneTRpV0xNejRxTGtsbGU3a2Nadk9Md3k1YlhwN2ZkWXJSSmxQNGw1TkRkWlBpS1ZlTG5KVjdPaGcyVkFzL2FRd1pOVnRvZFgyamtpNlJVMWUvajZHa2daYmdBbW1vZ1phZnVGNG1abGIxdCtDT1V5cmNuRi9DQ1p6UzRNTy9kWDFUNlFRQUFBQT0pIGZvcm1hdCgid29mZjIiKSx1cmwoL2Fzc2V0cy9qZXRicmFpbnMtbW9uby12aWV0bmFtZXNlLTUwMC1ub3JtYWwtRE5ScXpWTTEud29mZikgZm9ybWF0KCJ3b2ZmIik7dW5pY29kZS1yYW5nZTpVKzAxMDItMDEwMyxVKzAxMTAtMDExMSxVKzAxMjgtMDEyOSxVKzAxNjgtMDE2OSxVKzAxQTAtMDFBMSxVKzAxQUYtMDFCMCxVKzAzMDAtMDMwMSxVKzAzMDMtMDMwNCxVKzAzMDgtMDMwOSxVKzAzMjMsVSswMzI5LFUrMUVBMC0xRUY5LFUrMjBBQn1AZm9udC1mYWNle2ZvbnQtZmFtaWx5OkpldEJyYWlucyBNb25vO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtZGlzcGxheTpzd2FwO2ZvbnQtd2VpZ2h0OjUwMDtzcmM6dXJsKC9hc3NldHMvamV0YnJhaW5zLW1vbm8tbGF0aW4tZXh0LTUwMC1ub3JtYWwtQ3V0LTRtTUgud29mZjIpIGZvcm1hdCgid29mZjIiKSx1cmwoL2Fzc2V0cy9qZXRicmFpbnMtbW9uby1sYXRpbi1leHQtNTAwLW5vcm1hbC1ja3piZ1k4NC53b2ZmKSBmb3JtYXQoIndvZmYiKTt1bmljb2RlLXJhbmdlOlUrMDEwMC0wMkJBLFUrMDJCRC0wMkM1LFUrMDJDNy0wMkNDLFUrMDJDRS0wMkQ3LFUrMDJERC0wMkZGLFUrMDMwNCxVKzAzMDgsVSswMzI5LFUrMUQwMC0xREJGLFUrMUUwMC0xRTlGLFUrMUVGMi0xRUZGLFUrMjAyMCxVKzIwQTAtMjBBQixVKzIwQUQtMjBDMCxVKzIxMTMsVSsyQzYwLTJDN0YsVStBNzIwLUE3RkZ9QGZvbnQtZmFjZXtmb250LWZhbWlseTpKZXRCcmFpbnMgTW9ubztmb250LXN0eWxlOm5vcm1hbDtmb250LWRpc3BsYXk6c3dhcDtmb250LXdlaWdodDo1MDA7c3JjOnVybCgvYXNzZXRzL2pldGJyYWlucy1tb25vLWxhdGluLTUwMC1ub3JtYWwtQldaRVU1eUEud29mZjIpIGZvcm1hdCgid29mZjIiKSx1cmwoL2Fzc2V0cy9qZXRicmFpbnMtbW9uby1sYXRpbi01MDAtbm9ybWFsLUNKT1ZUSkI3LndvZmYpIGZvcm1hdCgid29mZiIpO3VuaWNvZGUtcmFuZ2U6VSswMDAwLTAwRkYsVSswMTMxLFUrMDE1Mi0wMTUzLFUrMDJCQi0wMkJDLFUrMDJDNixVKzAyREEsVSswMkRDLFUrMDMwNCxVKzAzMDgsVSswMzI5LFUrMjAwMC0yMDZGLFUrMjBBQyxVKzIxMjIsVSsyMTkxLFUrMjE5MyxVKzIyMTIsVSsyMjE1LFUrRkVGRixVK0ZGRkR9Kiw6YmVmb3JlLDphZnRlcnstLXR3LWJvcmRlci1zcGFjaW5nLXg6IDA7LS10dy1ib3JkZXItc3BhY2luZy15OiAwOy0tdHctdHJhbnNsYXRlLXg6IDA7LS10dy10cmFuc2xhdGUteTogMDstLXR3LXJvdGF0ZTogMDstLXR3LXNrZXcteDogMDstLXR3LXNrZXcteTogMDstLXR3LXNjYWxlLXg6IDE7LS10dy1zY2FsZS15OiAxOy0tdHctcGFuLXg6IDstLXR3LXBhbi15OiA7LS10dy1waW5jaC16b29tOiA7LS10dy1zY3JvbGwtc25hcC1zdHJpY3RuZXNzOiBwcm94aW1pdHk7LS10dy1ncmFkaWVudC1mcm9tLXBvc2l0aW9uOiA7LS10dy1ncmFkaWVudC12aWEtcG9zaXRpb246IDstLXR3LWdyYWRpZW50LXRvLXBvc2l0aW9uOiA7LS10dy1vcmRpbmFsOiA7LS10dy1zbGFzaGVkLXplcm86IDstLXR3LW51bWVyaWMtZmlndXJlOiA7LS10dy1udW1lcmljLXNwYWNpbmc6IDstLXR3LW51bWVyaWMtZnJhY3Rpb246IDstLXR3LXJpbmctaW5zZXQ6IDstLXR3LXJpbmctb2Zmc2V0LXdpZHRoOiAwcHg7LS10dy1yaW5nLW9mZnNldC1jb2xvcjogI2ZmZjstLXR3LXJpbmctY29sb3I6IHJnYig1OSAxMzAgMjQ2IC8gLjUpOy0tdHctcmluZy1vZmZzZXQtc2hhZG93OiAwIDAgIzAwMDA7LS10dy1yaW5nLXNoYWRvdzogMCAwICMwMDAwOy0tdHctc2hhZG93OiAwIDAgIzAwMDA7LS10dy1zaGFkb3ctY29sb3JlZDogMCAwICMwMDAwOy0tdHctYmx1cjogOy0tdHctYnJpZ2h0bmVzczogOy0tdHctY29udHJhc3Q6IDstLXR3LWdyYXlzY2FsZTogOy0tdHctaHVlLXJvdGF0ZTogOy0tdHctaW52ZXJ0OiA7LS10dy1zYXR1cmF0ZTogOy0tdHctc2VwaWE6IDstLXR3LWRyb3Atc2hhZG93OiA7LS10dy1iYWNrZHJvcC1ibHVyOiA7LS10dy1iYWNrZHJvcC1icmlnaHRuZXNzOiA7LS10dy1iYWNrZHJvcC1jb250cmFzdDogOy0tdHctYmFja2Ryb3AtZ3JheXNjYWxlOiA7LS10dy1iYWNrZHJvcC1odWUtcm90YXRlOiA7LS10dy1iYWNrZHJvcC1pbnZlcnQ6IDstLXR3LWJhY2tkcm9wLW9wYWNpdHk6IDstLXR3LWJhY2tkcm9wLXNhdHVyYXRlOiA7LS10dy1iYWNrZHJvcC1zZXBpYTogOy0tdHctY29udGFpbi1zaXplOiA7LS10dy1jb250YWluLWxheW91dDogOy0tdHctY29udGFpbi1wYWludDogOy0tdHctY29udGFpbi1zdHlsZTogfTo6YmFja2Ryb3B7LS10dy1ib3JkZXItc3BhY2luZy14OiAwOy0tdHctYm9yZGVyLXNwYWNpbmcteTogMDstLXR3LXRyYW5zbGF0ZS14OiAwOy0tdHctdHJhbnNsYXRlLXk6IDA7LS10dy1yb3RhdGU6IDA7LS10dy1za2V3LXg6IDA7LS10dy1za2V3LXk6IDA7LS10dy1zY2FsZS14OiAxOy0tdHctc2NhbGUteTogMTstLXR3LXBhbi14OiA7LS10dy1wYW4teTogOy0tdHctcGluY2gtem9vbTogOy0tdHctc2Nyb2xsLXNuYXAtc3RyaWN0bmVzczogcHJveGltaXR5Oy0tdHctZ3JhZGllbnQtZnJvbS1wb3NpdGlvbjogOy0tdHctZ3JhZGllbnQtdmlhLXBvc2l0aW9uOiA7LS10dy1ncmFkaWVudC10by1wb3NpdGlvbjogOy0tdHctb3JkaW5hbDogOy0tdHctc2xhc2hlZC16ZXJvOiA7LS10dy1udW1lcmljLWZpZ3VyZTogOy0tdHctbnVtZXJpYy1zcGFjaW5nOiA7LS10dy1udW1lcmljLWZyYWN0aW9uOiA7LS10dy1yaW5nLWluc2V0OiA7LS10dy1yaW5nLW9mZnNldC13aWR0aDogMHB4Oy0tdHctcmluZy1vZmZzZXQtY29sb3I6ICNmZmY7LS10dy1yaW5nLWNvbG9yOiByZ2IoNTkgMTMwIDI0NiAvIC41KTstLXR3LXJpbmctb2Zmc2V0LXNoYWRvdzogMCAwICMwMDAwOy0tdHctcmluZy1zaGFkb3c6IDAgMCAjMDAwMDstLXR3LXNoYWRvdzogMCAwICMwMDAwOy0tdHctc2hhZG93LWNvbG9yZWQ6IDAgMCAjMDAwMDstLXR3LWJsdXI6IDstLXR3LWJyaWdodG5lc3M6IDstLXR3LWNvbnRyYXN0OiA7LS10dy1ncmF5c2NhbGU6IDstLXR3LWh1ZS1yb3RhdGU6IDstLXR3LWludmVydDogOy0tdHctc2F0dXJhdGU6IDstLXR3LXNlcGlhOiA7LS10dy1kcm9wLXNoYWRvdzogOy0tdHctYmFja2Ryb3AtYmx1cjogOy0tdHctYmFja2Ryb3AtYnJpZ2h0bmVzczogOy0tdHctYmFja2Ryb3AtY29udHJhc3Q6IDstLXR3LWJhY2tkcm9wLWdyYXlzY2FsZTogOy0tdHctYmFja2Ryb3AtaHVlLXJvdGF0ZTogOy0tdHctYmFja2Ryb3AtaW52ZXJ0OiA7LS10dy1iYWNrZHJvcC1vcGFjaXR5OiA7LS10dy1iYWNrZHJvcC1zYXR1cmF0ZTogOy0tdHctYmFja2Ryb3Atc2VwaWE6IDstLXR3LWNvbnRhaW4tc2l6ZTogOy0tdHctY29udGFpbi1sYXlvdXQ6IDstLXR3LWNvbnRhaW4tcGFpbnQ6IDstLXR3LWNvbnRhaW4tc3R5bGU6IH0qLDpiZWZvcmUsOmFmdGVye2JveC1zaXppbmc6Ym9yZGVyLWJveDtib3JkZXItd2lkdGg6MDtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLWNvbG9yOiNlNWU3ZWJ9OmJlZm9yZSw6YWZ0ZXJ7LS10dy1jb250ZW50OiAiIn1odG1sLDpob3N0e2xpbmUtaGVpZ2h0OjEuNTstd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6MTAwJTstbW96LXRhYi1zaXplOjQ7LW8tdGFiLXNpemU6NDt0YWItc2l6ZTo0O2ZvbnQtZmFtaWx5OkRNIFNhbnMsdWktc2Fucy1zZXJpZixzeXN0ZW0tdWksLWFwcGxlLXN5c3RlbSxTZWdvZSBVSSxSb2JvdG8sc2Fucy1zZXJpZjtmb250LWZlYXR1cmUtc2V0dGluZ3M6bm9ybWFsO2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOm5vcm1hbDstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnR9Ym9keXttYXJnaW46MDtsaW5lLWhlaWdodDppbmhlcml0fWhye2hlaWdodDowO2NvbG9yOmluaGVyaXQ7Ym9yZGVyLXRvcC13aWR0aDoxcHh9YWJicjp3aGVyZShbdGl0bGVdKXstd2Via2l0LXRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUgZG90dGVkO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUgZG90dGVkfWgxLGgyLGgzLGg0LGg1LGg2e2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OmluaGVyaXR9YXtjb2xvcjppbmhlcml0O3RleHQtZGVjb3JhdGlvbjppbmhlcml0fWIsc3Ryb25ne2ZvbnQtd2VpZ2h0OmJvbGRlcn1jb2RlLGtiZCxzYW1wLHByZXtmb250LWZhbWlseTpKZXRCcmFpbnMgTW9ubyx1aS1tb25vc3BhY2UsU0ZNb25vLVJlZ3VsYXIsTWVubG8sbW9ub3NwYWNlO2ZvbnQtZmVhdHVyZS1zZXR0aW5nczpub3JtYWw7Zm9udC12YXJpYXRpb24tc2V0dGluZ3M6bm9ybWFsO2ZvbnQtc2l6ZToxZW19c21hbGx7Zm9udC1zaXplOjgwJX1zdWIsc3Vwe2ZvbnQtc2l6ZTo3NSU7bGluZS1oZWlnaHQ6MDtwb3NpdGlvbjpyZWxhdGl2ZTt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZX1zdWJ7Ym90dG9tOi0uMjVlbX1zdXB7dG9wOi0uNWVtfXRhYmxle3RleHQtaW5kZW50OjA7Ym9yZGVyLWNvbG9yOmluaGVyaXQ7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlfWJ1dHRvbixpbnB1dCxvcHRncm91cCxzZWxlY3QsdGV4dGFyZWF7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LWZlYXR1cmUtc2V0dGluZ3M6aW5oZXJpdDtmb250LXZhcmlhdGlvbi1zZXR0aW5nczppbmhlcml0O2ZvbnQtc2l6ZToxMDAlO2ZvbnQtd2VpZ2h0OmluaGVyaXQ7bGluZS1oZWlnaHQ6aW5oZXJpdDtsZXR0ZXItc3BhY2luZzppbmhlcml0O2NvbG9yOmluaGVyaXQ7bWFyZ2luOjA7cGFkZGluZzowfWJ1dHRvbixzZWxlY3R7dGV4dC10cmFuc2Zvcm06bm9uZX1idXR0b24saW5wdXQ6d2hlcmUoW3R5cGU9YnV0dG9uXSksaW5wdXQ6d2hlcmUoW3R5cGU9cmVzZXRdKSxpbnB1dDp3aGVyZShbdHlwZT1zdWJtaXRdKXstd2Via2l0LWFwcGVhcmFuY2U6YnV0dG9uO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1pbWFnZTpub25lfTotbW96LWZvY3VzcmluZ3tvdXRsaW5lOmF1dG99Oi1tb3otdWktaW52YWxpZHtib3gtc2hhZG93Om5vbmV9cHJvZ3Jlc3N7dmVydGljYWwtYWxpZ246YmFzZWxpbmV9Ojotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLDo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbntoZWlnaHQ6YXV0b31bdHlwZT1zZWFyY2hdey13ZWJraXQtYXBwZWFyYW5jZTp0ZXh0ZmllbGQ7b3V0bGluZS1vZmZzZXQ6LTJweH06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9Ojotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbnstd2Via2l0LWFwcGVhcmFuY2U6YnV0dG9uO2ZvbnQ6aW5oZXJpdH1zdW1tYXJ5e2Rpc3BsYXk6bGlzdC1pdGVtfWJsb2NrcXVvdGUsZGwsZGQsaDEsaDIsaDMsaDQsaDUsaDYsaHIsZmlndXJlLHAscHJle21hcmdpbjowfWZpZWxkc2V0e21hcmdpbjowO3BhZGRpbmc6MH1sZWdlbmR7cGFkZGluZzowfW9sLHVsLG1lbnV7bGlzdC1zdHlsZTpub25lO21hcmdpbjowO3BhZGRpbmc6MH1kaWFsb2d7cGFkZGluZzowfXRleHRhcmVhe3Jlc2l6ZTp2ZXJ0aWNhbH1pbnB1dDo6LW1vei1wbGFjZWhvbGRlcix0ZXh0YXJlYTo6LW1vei1wbGFjZWhvbGRlcntvcGFjaXR5OjE7Y29sb3I6IzljYTNhZn1pbnB1dDo6cGxhY2Vob2xkZXIsdGV4dGFyZWE6OnBsYWNlaG9sZGVye29wYWNpdHk6MTtjb2xvcjojOWNhM2FmfWJ1dHRvbixbcm9sZT1idXR0b25de2N1cnNvcjpwb2ludGVyfTpkaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH1pbWcsc3ZnLHZpZGVvLGNhbnZhcyxhdWRpbyxpZnJhbWUsZW1iZWQsb2JqZWN0e2Rpc3BsYXk6YmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlfWltZyx2aWRlb3ttYXgtd2lkdGg6MTAwJTtoZWlnaHQ6YXV0b31baGlkZGVuXTp3aGVyZSg6bm90KFtoaWRkZW49dW50aWwtZm91bmRdKSl7ZGlzcGxheTpub25lfTpyb290e2NvbG9yLXNjaGVtZTpkYXJrfWh0bWwsYm9keSwjcm9vdHttaW4taGVpZ2h0OjEwMCV9Ym9keXstLXR3LWJnLW9wYWNpdHk6IDE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMTEgMTYgMzIgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSk7Zm9udC1mYW1pbHk6RE0gU2Fucyx1aS1zYW5zLXNlcmlmLHN5c3RlbS11aSwtYXBwbGUtc3lzdGVtLFNlZ29lIFVJLFJvYm90byxzYW5zLXNlcmlmOy0tdHctdGV4dC1vcGFjaXR5OiAxO2NvbG9yOnJnYigyNDUgMjQzIDI1NSAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpOy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6Z3JheXNjYWxlO2ZvbnQtZmVhdHVyZS1zZXR0aW5nczoic3MwMSIsImN2MTEifTpmb2N1cy12aXNpYmxle2JvcmRlci1yYWRpdXM6OHB4O291dGxpbmU6MnB4IHNvbGlkIHRyYW5zcGFyZW50O291dGxpbmUtb2Zmc2V0OjJweDstLXR3LXJpbmctb2Zmc2V0LXNoYWRvdzogdmFyKC0tdHctcmluZy1pbnNldCkgMCAwIDAgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpIHZhcigtLXR3LXJpbmctb2Zmc2V0LWNvbG9yKTstLXR3LXJpbmctc2hhZG93OiB2YXIoLS10dy1yaW5nLWluc2V0KSAwIDAgMCBjYWxjKDJweCArIHZhcigtLXR3LXJpbmctb2Zmc2V0LXdpZHRoKSkgdmFyKC0tdHctcmluZy1jb2xvcik7Ym94LXNoYWRvdzp2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3cpLHZhcigtLXR3LXJpbmctc2hhZG93KSx2YXIoLS10dy1zaGFkb3csIDAgMCAjMDAwMCk7LS10dy1yaW5nLW9wYWNpdHk6IDE7LS10dy1yaW5nLWNvbG9yOiByZ2IoMTY3IDEzOSAyNTAgLyB2YXIoLS10dy1yaW5nLW9wYWNpdHksIDEpKTstLXR3LXJpbmctb2Zmc2V0LXdpZHRoOiAycHg7LS10dy1yaW5nLW9mZnNldC1jb2xvcjogIzBCMTAyMH06Oi1tb3otc2VsZWN0aW9ue2JhY2tncm91bmQ6I2E3OGJmYTU5fTo6c2VsZWN0aW9ue2JhY2tncm91bmQ6I2E3OGJmYTU5fWlucHV0OjotbW96LXBsYWNlaG9sZGVyLHRleHRhcmVhOjotbW96LXBsYWNlaG9sZGVye2NvbG9yOiNmNWYzZmY2Nn1pbnB1dDo6cGxhY2Vob2xkZXIsdGV4dGFyZWE6OnBsYWNlaG9sZGVye2NvbG9yOiNmNWYzZmY2Nn0uY2FyZHtib3JkZXItcmFkaXVzOjE0cHg7Ym9yZGVyLXdpZHRoOjFweDtib3JkZXItY29sb3I6I2ZmZmZmZjE0Oy0tdHctYmctb3BhY2l0eTogMTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyMCAyNiA1MSAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKTstLXR3LXNoYWRvdzogMCAxcHggMCByZ2JhKDI1NSwyNTUsMjU1LC4wNCkgaW5zZXQsIDAgOHB4IDI0cHggcmdiYSgwLDAsMCwuMjUpOy0tdHctc2hhZG93LWNvbG9yZWQ6IGluc2V0IDAgMXB4IDAgdmFyKC0tdHctc2hhZG93LWNvbG9yKSwgMCA4cHggMjRweCB2YXIoLS10dy1zaGFkb3ctY29sb3IpO2JveC1zaGFkb3c6dmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93LCAwIDAgIzAwMDApLHZhcigtLXR3LXJpbmctc2hhZG93LCAwIDAgIzAwMDApLHZhcigtLXR3LXNoYWRvdyl9LmxhYmVse2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjUwMDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7bGV0dGVyLXNwYWNpbmc6LjA4ZW07Y29sb3I6I2Y1ZjNmZjY2fS5udW17Zm9udC1mYW1pbHk6SmV0QnJhaW5zIE1vbm8sdWktbW9ub3NwYWNlLFNGTW9uby1SZWd1bGFyLE1lbmxvLG1vbm9zcGFjZTtmb250LXNpemU6MTNweDstLXR3LW51bWVyaWMtc3BhY2luZzogdGFidWxhci1udW1zO2ZvbnQtdmFyaWFudC1udW1lcmljOnZhcigtLXR3LW9yZGluYWwpIHZhcigtLXR3LXNsYXNoZWQtemVybykgdmFyKC0tdHctbnVtZXJpYy1maWd1cmUpIHZhcigtLXR3LW51bWVyaWMtc3BhY2luZykgdmFyKC0tdHctbnVtZXJpYy1mcmFjdGlvbil9LmFic29sdXRle3Bvc2l0aW9uOmFic29sdXRlfS5yZWxhdGl2ZXtwb3NpdGlvbjpyZWxhdGl2ZX0ucmlnaHQtMHtyaWdodDowfS56LTEwe3otaW5kZXg6MTB9Li1teC0xe21hcmdpbi1sZWZ0Oi0uMjVyZW07bWFyZ2luLXJpZ2h0Oi0uMjVyZW19Lm14LWF1dG97bWFyZ2luLWxlZnQ6YXV0bzttYXJnaW4tcmlnaHQ6YXV0b30ubWItMVwuNXttYXJnaW4tYm90dG9tOi4zNzVyZW19Lm1iLTJ7bWFyZ2luLWJvdHRvbTouNXJlbX0ubWItM3ttYXJnaW4tYm90dG9tOi43NXJlbX0ubWItNHttYXJnaW4tYm90dG9tOjFyZW19Lm1iLTZ7bWFyZ2luLWJvdHRvbToxLjVyZW19Lm1iLTh7bWFyZ2luLWJvdHRvbToycmVtfS5tdC0xe21hcmdpbi10b3A6LjI1cmVtfS5tdC0xXC41e21hcmdpbi10b3A6LjM3NXJlbX0ubXQtMnttYXJnaW4tdG9wOi41cmVtfS5tdC0ze21hcmdpbi10b3A6Ljc1cmVtfS5tdC01e21hcmdpbi10b3A6MS4yNXJlbX0ubXQtN3ttYXJnaW4tdG9wOjEuNzVyZW19LmJsb2Nre2Rpc3BsYXk6YmxvY2t9LmZsZXh7ZGlzcGxheTpmbGV4fS5pbmxpbmUtZmxleHtkaXNwbGF5OmlubGluZS1mbGV4fS5ncmlke2Rpc3BsYXk6Z3JpZH0uaC0xXC41e2hlaWdodDouMzc1cmVtfS5oLTZ7aGVpZ2h0OjEuNXJlbX0uaC1mdWxse2hlaWdodDoxMDAlfS5tYXgtaC00MHttYXgtaGVpZ2h0OjEwcmVtfS5tYXgtaC02NHttYXgtaGVpZ2h0OjE2cmVtfS5taW4taC1zY3JlZW57bWluLWhlaWdodDoxMDB2aH0udy0xNnt3aWR0aDo0cmVtfS53LTZ7d2lkdGg6MS41cmVtfS53LWF1dG97d2lkdGg6YXV0b30udy1mdWxse3dpZHRoOjEwMCV9Lm1pbi13LTB7bWluLXdpZHRoOjBweH0ubWluLXctXFsxODBweFxde21pbi13aWR0aDoxODBweH0ubWF4LXctMnhse21heC13aWR0aDo0MnJlbX0ubWF4LXctM3hse21heC13aWR0aDo0OHJlbX0ubWF4LXctXFsyMjBweFxde21heC13aWR0aDoyMjBweH0ubWF4LXctbWR7bWF4LXdpZHRoOjI4cmVtfS5tYXgtdy14bHttYXgtd2lkdGg6MzZyZW19LmZsZXgtMXtmbGV4OjEgMSAwJX0uc2hyaW5rLTB7ZmxleC1zaHJpbms6MH0uY3Vyc29yLXBvaW50ZXJ7Y3Vyc29yOnBvaW50ZXJ9Lmxpc3Qtbm9uZXtsaXN0LXN0eWxlLXR5cGU6bm9uZX0uZ3JpZC1jb2xzLVxbMTIwcHhfMWZyXF17Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjEyMHB4IDFmcn0uZ3JpZC1jb2xzLVxbMTZweF8xZnJcXXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MTZweCAxZnJ9LmdyaWQtY29scy1cWzI0cHhfMWZyXF17Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjI0cHggMWZyfS5ncmlkLWNvbHMtXFs4OHB4XzFmclxde2dyaWQtdGVtcGxhdGUtY29sdW1uczo4OHB4IDFmcn0uZmxleC1jb2x7ZmxleC1kaXJlY3Rpb246Y29sdW1ufS5mbGV4LXdyYXB7ZmxleC13cmFwOndyYXB9LnBsYWNlLWl0ZW1zLWNlbnRlcntwbGFjZS1pdGVtczpjZW50ZXJ9Lml0ZW1zLXN0YXJ0e2FsaWduLWl0ZW1zOmZsZXgtc3RhcnR9Lml0ZW1zLWNlbnRlcnthbGlnbi1pdGVtczpjZW50ZXJ9Lml0ZW1zLWJhc2VsaW5le2FsaWduLWl0ZW1zOmJhc2VsaW5lfS5qdXN0aWZ5LWVuZHtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9Lmp1c3RpZnktY2VudGVye2p1c3RpZnktY29udGVudDpjZW50ZXJ9Lmp1c3RpZnktYmV0d2VlbntqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2Vlbn0uZ2FwLTBcLjV7Z2FwOi4xMjVyZW19LmdhcC0xe2dhcDouMjVyZW19LmdhcC0xXC41e2dhcDouMzc1cmVtfS5nYXAtMntnYXA6LjVyZW19LmdhcC0yXC41e2dhcDouNjI1cmVtfS5nYXAtM3tnYXA6Ljc1cmVtfS5nYXAtNHtnYXA6MXJlbX0uZ2FwLTV7Z2FwOjEuMjVyZW19LmdhcC02e2dhcDoxLjVyZW19LmdhcC05e2dhcDoyLjI1cmVtfS5nYXAteC0yey1tb3otY29sdW1uLWdhcDouNXJlbTtjb2x1bW4tZ2FwOi41cmVtfS5nYXAteC0zey1tb3otY29sdW1uLWdhcDouNzVyZW07Y29sdW1uLWdhcDouNzVyZW19LmdhcC14LTR7LW1vei1jb2x1bW4tZ2FwOjFyZW07Y29sdW1uLWdhcDoxcmVtfS5nYXAteC02ey1tb3otY29sdW1uLWdhcDoxLjVyZW07Y29sdW1uLWdhcDoxLjVyZW19LmdhcC15LTF7cm93LWdhcDouMjVyZW19LmdhcC15LTJ7cm93LWdhcDouNXJlbX0uZ2FwLXktM3tyb3ctZ2FwOi43NXJlbX0uZGl2aWRlLXk+Om5vdChbaGlkZGVuXSl+Om5vdChbaGlkZGVuXSl7LS10dy1kaXZpZGUteS1yZXZlcnNlOiAwO2JvcmRlci10b3Atd2lkdGg6Y2FsYygxcHggKiBjYWxjKDEgLSB2YXIoLS10dy1kaXZpZGUteS1yZXZlcnNlKSkpO2JvcmRlci1ib3R0b20td2lkdGg6Y2FsYygxcHggKiB2YXIoLS10dy1kaXZpZGUteS1yZXZlcnNlKSl9LmRpdmlkZS1saW5lPjpub3QoW2hpZGRlbl0pfjpub3QoW2hpZGRlbl0pe2JvcmRlci1jb2xvcjojZmZmZmZmMTR9Lmp1c3RpZnktc2VsZi1zdGFydHtqdXN0aWZ5LXNlbGY6c3RhcnR9Lmp1c3RpZnktc2VsZi1jZW50ZXJ7anVzdGlmeS1zZWxmOmNlbnRlcn0ub3ZlcmZsb3ctYXV0b3tvdmVyZmxvdzphdXRvfS5vdmVyZmxvdy1oaWRkZW57b3ZlcmZsb3c6aGlkZGVufS50cnVuY2F0ZXtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpczt3aGl0ZS1zcGFjZTpub3dyYXB9LndoaXRlc3BhY2Utbm93cmFwe3doaXRlLXNwYWNlOm5vd3JhcH0ucm91bmRlZHtib3JkZXItcmFkaXVzOi4yNXJlbX0ucm91bmRlZC1mdWxse2JvcmRlci1yYWRpdXM6OTk5OXB4fS5yb3VuZGVkLWxne2JvcmRlci1yYWRpdXM6MTBweH0ucm91bmRlZC1tZHtib3JkZXItcmFkaXVzOjhweH0uYm9yZGVye2JvcmRlci13aWR0aDoxcHh9LmJvcmRlci0we2JvcmRlci13aWR0aDowcHh9LmJvcmRlci1ie2JvcmRlci1ib3R0b20td2lkdGg6MXB4fS5ib3JkZXItdHtib3JkZXItdG9wLXdpZHRoOjFweH0uYm9yZGVyLWxpbmV7Ym9yZGVyLWNvbG9yOiNmZmZmZmYxNH0uYm9yZGVyLXZpb2xldFwvNjB7Ym9yZGVyLWNvbG9yOiNhNzhiZmE5OX0uYmctYW1iZXJ7LS10dy1iZy1vcGFjaXR5OiAxO2JhY2tncm91bmQtY29sb3I6cmdiKDI0MiAxNzcgNTIgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSl9LmJnLWFtYmVyXC8xMHtiYWNrZ3JvdW5kLWNvbG9yOiNmMmIxMzQxYX0uYmctYW1iZXJcL1xbMFwuMTZcXXtiYWNrZ3JvdW5kLWNvbG9yOiNmMmIxMzQyOX0uYmctZ3JlZW57LS10dy1iZy1vcGFjaXR5OiAxO2JhY2tncm91bmQtY29sb3I6cmdiKDUyIDIxMSAxNTMgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSl9LmJnLWdyZWVuXC8xMHtiYWNrZ3JvdW5kLWNvbG9yOiMzNGQzOTkxYX0uYmctZ3JlZW5cL1xbMFwuMTZcXXtiYWNrZ3JvdW5kLWNvbG9yOiMzNGQzOTkyOX0uYmctZ3JlZW5cL1xbMFwuMThcXXtiYWNrZ3JvdW5kLWNvbG9yOiMzNGQzOTkyZX0uYmctcmVkXC8xMHtiYWNrZ3JvdW5kLWNvbG9yOiNmODcxNzExYX0uYmctcmVkXC8xNXtiYWNrZ3JvdW5kLWNvbG9yOiNmODcxNzEyNn0uYmctc3VyZmFjZXstLXR3LWJnLW9wYWNpdHk6IDE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMjAgMjYgNTEgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSl9LmJnLXRyYW5zcGFyZW50e2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnR9LmJnLXZpb2xldHstLXR3LWJnLW9wYWNpdHk6IDE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMTY3IDEzOSAyNTAgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSl9LmJnLXZpb2xldFwvMTB7YmFja2dyb3VuZC1jb2xvcjojYTc4YmZhMWF9LmJnLXZpb2xldFwvXFswXC4wN1xde2JhY2tncm91bmQtY29sb3I6I2E3OGJmYTEyfS5iZy12aW9sZXRcL1xbMFwuMThcXXtiYWNrZ3JvdW5kLWNvbG9yOiNhNzhiZmEyZX0uYmctd2hpdGVcLzIwe2JhY2tncm91bmQtY29sb3I6I2ZmZjN9LmJnLXdoaXRlXC9cWzBcLjA2XF17YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMGZ9LmJnLXdoaXRlXC9cWzBcLjA3XF17YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMTJ9LmJnLXdoaXRlXC9cWzBcLjA4XF17YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMTR9LmJnLWdyYWRpZW50LXRvLXJ7YmFja2dyb3VuZC1pbWFnZTpsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsdmFyKC0tdHctZ3JhZGllbnQtc3RvcHMpKX0uZnJvbS1jeWFuey0tdHctZ3JhZGllbnQtZnJvbTogIzY3RThGOSB2YXIoLS10dy1ncmFkaWVudC1mcm9tLXBvc2l0aW9uKTstLXR3LWdyYWRpZW50LXRvOiByZ2IoMTAzIDIzMiAyNDkgLyAwKSB2YXIoLS10dy1ncmFkaWVudC10by1wb3NpdGlvbik7LS10dy1ncmFkaWVudC1zdG9wczogdmFyKC0tdHctZ3JhZGllbnQtZnJvbSksIHZhcigtLXR3LWdyYWRpZW50LXRvKX0udG8tdmlvbGV0ey0tdHctZ3JhZGllbnQtdG86ICNBNzhCRkEgdmFyKC0tdHctZ3JhZGllbnQtdG8tcG9zaXRpb24pfS5wLTF7cGFkZGluZzouMjVyZW19LnAtMVwuNXtwYWRkaW5nOi4zNzVyZW19LnAtMntwYWRkaW5nOi41cmVtfS5wLTN7cGFkZGluZzouNzVyZW19LnAtNHtwYWRkaW5nOjFyZW19LnB4LTB7cGFkZGluZy1sZWZ0OjA7cGFkZGluZy1yaWdodDowfS5weC0xe3BhZGRpbmctbGVmdDouMjVyZW07cGFkZGluZy1yaWdodDouMjVyZW19LnB4LTFcLjV7cGFkZGluZy1sZWZ0Oi4zNzVyZW07cGFkZGluZy1yaWdodDouMzc1cmVtfS5weC0ye3BhZGRpbmctbGVmdDouNXJlbTtwYWRkaW5nLXJpZ2h0Oi41cmVtfS5weC0yXC41e3BhZGRpbmctbGVmdDouNjI1cmVtO3BhZGRpbmctcmlnaHQ6LjYyNXJlbX0ucHgtM3twYWRkaW5nLWxlZnQ6Ljc1cmVtO3BhZGRpbmctcmlnaHQ6Ljc1cmVtfS5weC0zXC41e3BhZGRpbmctbGVmdDouODc1cmVtO3BhZGRpbmctcmlnaHQ6Ljg3NXJlbX0ucHgtNHtwYWRkaW5nLWxlZnQ6MXJlbTtwYWRkaW5nLXJpZ2h0OjFyZW19LnB5LTB7cGFkZGluZy10b3A6MDtwYWRkaW5nLWJvdHRvbTowfS5weS0wXC41e3BhZGRpbmctdG9wOi4xMjVyZW07cGFkZGluZy1ib3R0b206LjEyNXJlbX0ucHktMXtwYWRkaW5nLXRvcDouMjVyZW07cGFkZGluZy1ib3R0b206LjI1cmVtfS5weS0xXC41e3BhZGRpbmctdG9wOi4zNzVyZW07cGFkZGluZy1ib3R0b206LjM3NXJlbX0ucHktMTB7cGFkZGluZy10b3A6Mi41cmVtO3BhZGRpbmctYm90dG9tOjIuNXJlbX0ucHktMntwYWRkaW5nLXRvcDouNXJlbTtwYWRkaW5nLWJvdHRvbTouNXJlbX0ucHktMlwuNXtwYWRkaW5nLXRvcDouNjI1cmVtO3BhZGRpbmctYm90dG9tOi42MjVyZW19LnB5LTN7cGFkZGluZy10b3A6Ljc1cmVtO3BhZGRpbmctYm90dG9tOi43NXJlbX0ucHktNntwYWRkaW5nLXRvcDoxLjVyZW07cGFkZGluZy1ib3R0b206MS41cmVtfS5weS03e3BhZGRpbmctdG9wOjEuNzVyZW07cGFkZGluZy1ib3R0b206MS43NXJlbX0ucHktOHtwYWRkaW5nLXRvcDoycmVtO3BhZGRpbmctYm90dG9tOjJyZW19LnBiLTF7cGFkZGluZy1ib3R0b206LjI1cmVtfS5wdC0wXC41e3BhZGRpbmctdG9wOi4xMjVyZW19LnB0LTF7cGFkZGluZy10b3A6LjI1cmVtfS5wdC0xXC41e3BhZGRpbmctdG9wOi4zNzVyZW19LnB0LTJ7cGFkZGluZy10b3A6LjVyZW19LnB0LTN7cGFkZGluZy10b3A6Ljc1cmVtfS50ZXh0LWxlZnR7dGV4dC1hbGlnbjpsZWZ0fS50ZXh0LWNlbnRlcnt0ZXh0LWFsaWduOmNlbnRlcn0uZm9udC1tb25ve2ZvbnQtZmFtaWx5OkpldEJyYWlucyBNb25vLHVpLW1vbm9zcGFjZSxTRk1vbm8tUmVndWxhcixNZW5sbyxtb25vc3BhY2V9LnRleHQtM3hse2ZvbnQtc2l6ZToxLjg3NXJlbTtsaW5lLWhlaWdodDoyLjI1cmVtfS50ZXh0LVxbMTBcLjVweFxde2ZvbnQtc2l6ZToxMC41cHh9LnRleHQtXFsxMXB4XF17Zm9udC1zaXplOjExcHh9LnRleHQtXFsxMlwuNXB4XF17Zm9udC1zaXplOjEyLjVweH0udGV4dC1cWzEycHhcXXtmb250LXNpemU6MTJweH0udGV4dC1cWzEzXC41cHhcXXtmb250LXNpemU6MTMuNXB4fS50ZXh0LVxbMTNweFxde2ZvbnQtc2l6ZToxM3B4fS50ZXh0LVxbMTRweFxde2ZvbnQtc2l6ZToxNHB4fS50ZXh0LVxbMTVweFxde2ZvbnQtc2l6ZToxNXB4fS50ZXh0LWxne2ZvbnQtc2l6ZToxLjEyNXJlbTtsaW5lLWhlaWdodDoxLjc1cmVtfS50ZXh0LXhse2ZvbnQtc2l6ZToxLjI1cmVtO2xpbmUtaGVpZ2h0OjEuNzVyZW19LmZvbnQtYm9sZHtmb250LXdlaWdodDo3MDB9LmZvbnQtbWVkaXVte2ZvbnQtd2VpZ2h0OjUwMH0uZm9udC1ub3JtYWx7Zm9udC13ZWlnaHQ6NDAwfS5mb250LXNlbWlib2xke2ZvbnQtd2VpZ2h0OjYwMH0ubGVhZGluZy1yZWxheGVke2xpbmUtaGVpZ2h0OjEuNjI1fS50cmFja2luZy1cWy0wXC4wMmVtXF17bGV0dGVyLXNwYWNpbmc6LS4wMmVtfS50cmFja2luZy1cWzBcLjAyZW1cXXtsZXR0ZXItc3BhY2luZzouMDJlbX0udGV4dC1hbWJlcnstLXR3LXRleHQtb3BhY2l0eTogMTtjb2xvcjpyZ2IoMjQyIDE3NyA1MiAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpfS50ZXh0LWZhaW50e2NvbG9yOiNmNWYzZmY2Nn0udGV4dC1mZ3stLXR3LXRleHQtb3BhY2l0eTogMTtjb2xvcjpyZ2IoMjQ1IDI0MyAyNTUgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKX0udGV4dC1ncmVlbnstLXR3LXRleHQtb3BhY2l0eTogMTtjb2xvcjpyZ2IoNTIgMjExIDE1MyAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpfS50ZXh0LWlua3stLXR3LXRleHQtb3BhY2l0eTogMTtjb2xvcjpyZ2IoMTEgMTYgMzIgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKX0udGV4dC1tdXRlZHtjb2xvcjojZjVmM2ZmOWV9LnRleHQtcmVkey0tdHctdGV4dC1vcGFjaXR5OiAxO2NvbG9yOnJnYigyNDggMTEzIDExMyAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpfS50ZXh0LXZpb2xldC1zdHJvbmd7LS10dy10ZXh0LW9wYWNpdHk6IDE7Y29sb3I6cmdiKDE5NiAxODEgMjUzIC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSl9LmxpbmUtdGhyb3VnaHt0ZXh0LWRlY29yYXRpb24tbGluZTpsaW5lLXRocm91Z2h9LmRlY29yYXRpb24td2hpdGVcLzMwe3RleHQtZGVjb3JhdGlvbi1jb2xvcjojZmZmZmZmNGR9LmFjY2VudC12aW9sZXR7YWNjZW50LWNvbG9yOiNBNzhCRkF9LmZpbHRlcntmaWx0ZXI6dmFyKC0tdHctYmx1cikgdmFyKC0tdHctYnJpZ2h0bmVzcykgdmFyKC0tdHctY29udHJhc3QpIHZhcigtLXR3LWdyYXlzY2FsZSkgdmFyKC0tdHctaHVlLXJvdGF0ZSkgdmFyKC0tdHctaW52ZXJ0KSB2YXIoLS10dy1zYXR1cmF0ZSkgdmFyKC0tdHctc2VwaWEpIHZhcigtLXR3LWRyb3Atc2hhZG93KX0udHJhbnNpdGlvbi1cW3dpZHRoXF17dHJhbnNpdGlvbi1wcm9wZXJ0eTp3aWR0aDt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjQsMCwuMiwxKTt0cmFuc2l0aW9uLWR1cmF0aW9uOi4xNXN9LnRyYW5zaXRpb24tY29sb3Jze3RyYW5zaXRpb24tcHJvcGVydHk6Y29sb3IsYmFja2dyb3VuZC1jb2xvcixib3JkZXItY29sb3IsdGV4dC1kZWNvcmF0aW9uLWNvbG9yLGZpbGwsc3Ryb2tlO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNCwwLC4yLDEpO3RyYW5zaXRpb24tZHVyYXRpb246LjE1c30uZHVyYXRpb24tNTAwe3RyYW5zaXRpb24tZHVyYXRpb246LjVzfUBrZXlmcmFtZXMgcmlmdC1jcm9zc3swJXt0cmFuc2Zvcm06dHJhbnNsYXRlKC04cHgpO29wYWNpdHk6LjN9NTAle3RyYW5zZm9ybTp0cmFuc2xhdGUoMCk7b3BhY2l0eToxfXRve3RyYW5zZm9ybTp0cmFuc2xhdGUoOHB4KTtvcGFjaXR5Oi4zfX0ucmlmdC1hbmltYXRlZCAucmlmdC1hcnJvd3thbmltYXRpb246cmlmdC1jcm9zcyAxLjZzIGVhc2UtaW4tb3V0IGluZmluaXRlfUBtZWRpYShwcmVmZXJzLXJlZHVjZWQtbW90aW9uOnJlZHVjZSl7LnJpZnQtYW5pbWF0ZWQgLnJpZnQtYXJyb3d7YW5pbWF0aW9uOm5vbmV9Knt0cmFuc2l0aW9uLWR1cmF0aW9uOi4wMW1zIWltcG9ydGFudDthbmltYXRpb24tZHVyYXRpb246LjAxbXMhaW1wb3J0YW50fX0ucGxhY2Vob2xkZXJcOmZvbnQtc2Fuczo6LW1vei1wbGFjZWhvbGRlcntmb250LWZhbWlseTpETSBTYW5zLHVpLXNhbnMtc2VyaWYsc3lzdGVtLXVpLC1hcHBsZS1zeXN0ZW0sU2Vnb2UgVUksUm9ib3RvLHNhbnMtc2VyaWZ9LnBsYWNlaG9sZGVyXDpmb250LXNhbnM6OnBsYWNlaG9sZGVye2ZvbnQtZmFtaWx5OkRNIFNhbnMsdWktc2Fucy1zZXJpZixzeXN0ZW0tdWksLWFwcGxlLXN5c3RlbSxTZWdvZSBVSSxSb2JvdG8sc2Fucy1zZXJpZn0ucGxhY2Vob2xkZXJcOnRleHQtZmFpbnQ6Oi1tb3otcGxhY2Vob2xkZXJ7Y29sb3I6I2Y1ZjNmZjY2fS5wbGFjZWhvbGRlclw6dGV4dC1mYWludDo6cGxhY2Vob2xkZXJ7Y29sb3I6I2Y1ZjNmZjY2fS5ob3Zlclw6Ym9yZGVyLXdoaXRlXC9cWzBcLjE0XF06aG92ZXJ7Ym9yZGVyLWNvbG9yOiNmZmZmZmYyNH0uaG92ZXJcOmJnLXJlZFwvMjU6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjg3MTcxNDB9LmhvdmVyXDpiZy12aW9sZXQtc3Ryb25nOmhvdmVyey0tdHctYmctb3BhY2l0eTogMTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigxOTYgMTgxIDI1MyAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKX0uaG92ZXJcOmJnLXdoaXRlXC9cWzBcLjA2XF06aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMGZ9LmhvdmVyXDpiZy13aGl0ZVwvXFswXC4wOFxdOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2ZmZmZmZjE0fS5ob3Zlclw6Ymctd2hpdGVcL1xbMFwuMTFcXTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYxY30uaG92ZXJcOnRleHQtZmc6aG92ZXJ7LS10dy10ZXh0LW9wYWNpdHk6IDE7Y29sb3I6cmdiKDI0NSAyNDMgMjU1IC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSl9LmhvdmVyXDp1bmRlcmxpbmU6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uLWxpbmU6dW5kZXJsaW5lfS5ob3Zlclw6b3BhY2l0eS05MDpob3ZlcntvcGFjaXR5Oi45fS5mb2N1cy12aXNpYmxlXDpib3JkZXItdmlvbGV0XC82MDpmb2N1cy12aXNpYmxle2JvcmRlci1jb2xvcjojYTc4YmZhOTl9LmRpc2FibGVkXDpvcGFjaXR5LTUwOmRpc2FibGVke29wYWNpdHk6LjV9QG1lZGlhKG1pbi13aWR0aDo2NDBweCl7LnNtXDpwLTV7cGFkZGluZzoxLjI1cmVtfS5zbVw6cHgtNntwYWRkaW5nLWxlZnQ6MS41cmVtO3BhZGRpbmctcmlnaHQ6MS41cmVtfX0K" },
37037
+ "/assets/index-DM0sPfaK.css": { type: "text/css; charset=utf-8", base64: "QGZvbnQtZmFjZXtmb250LWZhbWlseTpETSBTYW5zO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtZGlzcGxheTpzd2FwO2ZvbnQtd2VpZ2h0OjQwMDtzcmM6dXJsKC9hc3NldHMvZG0tc2Fucy1sYXRpbi1leHQtNDAwLW5vcm1hbC1CdGl3eXhNay53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLHVybCgvYXNzZXRzL2RtLXNhbnMtbGF0aW4tZXh0LTQwMC1ub3JtYWwtQmpXSjU5UHEud29mZikgZm9ybWF0KCJ3b2ZmIik7dW5pY29kZS1yYW5nZTpVKzAxMDAtMDJCQSxVKzAyQkQtMDJDNSxVKzAyQzctMDJDQyxVKzAyQ0UtMDJENyxVKzAyREQtMDJGRixVKzAzMDQsVSswMzA4LFUrMDMyOSxVKzFEMDAtMURCRixVKzFFMDAtMUU5RixVKzFFRjItMUVGRixVKzIwMjAsVSsyMEEwLTIwQUIsVSsyMEFELTIwQzAsVSsyMTEzLFUrMkM2MC0yQzdGLFUrQTcyMC1BN0ZGfUBmb250LWZhY2V7Zm9udC1mYW1pbHk6RE0gU2Fucztmb250LXN0eWxlOm5vcm1hbDtmb250LWRpc3BsYXk6c3dhcDtmb250LXdlaWdodDo0MDA7c3JjOnVybCgvYXNzZXRzL2RtLXNhbnMtbGF0aW4tNDAwLW5vcm1hbC1DVzBSYWVHcy53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLHVybCgvYXNzZXRzL2RtLXNhbnMtbGF0aW4tNDAwLW5vcm1hbC1Cd0NTRVFuVy53b2ZmKSBmb3JtYXQoIndvZmYiKTt1bmljb2RlLXJhbmdlOlUrMDAwMC0wMEZGLFUrMDEzMSxVKzAxNTItMDE1MyxVKzAyQkItMDJCQyxVKzAyQzYsVSswMkRBLFUrMDJEQyxVKzAzMDQsVSswMzA4LFUrMDMyOSxVKzIwMDAtMjA2RixVKzIwQUMsVSsyMTIyLFUrMjE5MSxVKzIxOTMsVSsyMjEyLFUrMjIxNSxVK0ZFRkYsVStGRkZEfUBmb250LWZhY2V7Zm9udC1mYW1pbHk6RE0gU2Fucztmb250LXN0eWxlOm5vcm1hbDtmb250LWRpc3BsYXk6c3dhcDtmb250LXdlaWdodDo1MDA7c3JjOnVybCgvYXNzZXRzL2RtLXNhbnMtbGF0aW4tZXh0LTUwMC1ub3JtYWwtQkpmVUNRc0Eud29mZjIpIGZvcm1hdCgid29mZjIiKSx1cmwoL2Fzc2V0cy9kbS1zYW5zLWxhdGluLWV4dC01MDAtbm9ybWFsLURSODRMNUYtLndvZmYpIGZvcm1hdCgid29mZiIpO3VuaWNvZGUtcmFuZ2U6VSswMTAwLTAyQkEsVSswMkJELTAyQzUsVSswMkM3LTAyQ0MsVSswMkNFLTAyRDcsVSswMkRELTAyRkYsVSswMzA0LFUrMDMwOCxVKzAzMjksVSsxRDAwLTFEQkYsVSsxRTAwLTFFOUYsVSsxRUYyLTFFRkYsVSsyMDIwLFUrMjBBMC0yMEFCLFUrMjBBRC0yMEMwLFUrMjExMyxVKzJDNjAtMkM3RixVK0E3MjAtQTdGRn1AZm9udC1mYWNle2ZvbnQtZmFtaWx5OkRNIFNhbnM7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC1kaXNwbGF5OnN3YXA7Zm9udC13ZWlnaHQ6NTAwO3NyYzp1cmwoL2Fzc2V0cy9kbS1zYW5zLWxhdGluLTUwMC1ub3JtYWwtQjlISEpqcVYud29mZjIpIGZvcm1hdCgid29mZjIiKSx1cmwoL2Fzc2V0cy9kbS1zYW5zLWxhdGluLTUwMC1ub3JtYWwtRHIzVWxTY2Yud29mZikgZm9ybWF0KCJ3b2ZmIik7dW5pY29kZS1yYW5nZTpVKzAwMDAtMDBGRixVKzAxMzEsVSswMTUyLTAxNTMsVSswMkJCLTAyQkMsVSswMkM2LFUrMDJEQSxVKzAyREMsVSswMzA0LFUrMDMwOCxVKzAzMjksVSsyMDAwLTIwNkYsVSsyMEFDLFUrMjEyMixVKzIxOTEsVSsyMTkzLFUrMjIxMixVKzIyMTUsVStGRUZGLFUrRkZGRH1AZm9udC1mYWNle2ZvbnQtZmFtaWx5OkRNIFNhbnM7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC1kaXNwbGF5OnN3YXA7Zm9udC13ZWlnaHQ6NjAwO3NyYzp1cmwoL2Fzc2V0cy9kbS1zYW5zLWxhdGluLWV4dC02MDAtbm9ybWFsLTR2b29YQnBHLndvZmYyKSBmb3JtYXQoIndvZmYyIiksdXJsKC9hc3NldHMvZG0tc2Fucy1sYXRpbi1leHQtNjAwLW5vcm1hbC1EUnRhRHBnVS53b2ZmKSBmb3JtYXQoIndvZmYiKTt1bmljb2RlLXJhbmdlOlUrMDEwMC0wMkJBLFUrMDJCRC0wMkM1LFUrMDJDNy0wMkNDLFUrMDJDRS0wMkQ3LFUrMDJERC0wMkZGLFUrMDMwNCxVKzAzMDgsVSswMzI5LFUrMUQwMC0xREJGLFUrMUUwMC0xRTlGLFUrMUVGMi0xRUZGLFUrMjAyMCxVKzIwQTAtMjBBQixVKzIwQUQtMjBDMCxVKzIxMTMsVSsyQzYwLTJDN0YsVStBNzIwLUE3RkZ9QGZvbnQtZmFjZXtmb250LWZhbWlseTpETSBTYW5zO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtZGlzcGxheTpzd2FwO2ZvbnQtd2VpZ2h0OjYwMDtzcmM6dXJsKC9hc3NldHMvZG0tc2Fucy1sYXRpbi02MDAtbm9ybWFsLUFxbzY3cnpiLndvZmYyKSBmb3JtYXQoIndvZmYyIiksdXJsKC9hc3NldHMvZG0tc2Fucy1sYXRpbi02MDAtbm9ybWFsLUJtZG1JSVEyLndvZmYpIGZvcm1hdCgid29mZiIpO3VuaWNvZGUtcmFuZ2U6VSswMDAwLTAwRkYsVSswMTMxLFUrMDE1Mi0wMTUzLFUrMDJCQi0wMkJDLFUrMDJDNixVKzAyREEsVSswMkRDLFUrMDMwNCxVKzAzMDgsVSswMzI5LFUrMjAwMC0yMDZGLFUrMjBBQyxVKzIxMjIsVSsyMTkxLFUrMjE5MyxVKzIyMTIsVSsyMjE1LFUrRkVGRixVK0ZGRkR9QGZvbnQtZmFjZXtmb250LWZhbWlseTpETSBTYW5zO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtZGlzcGxheTpzd2FwO2ZvbnQtd2VpZ2h0OjcwMDtzcmM6dXJsKC9hc3NldHMvZG0tc2Fucy1sYXRpbi1leHQtNzAwLW5vcm1hbC1DSkljeEQ2Sy53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLHVybCgvYXNzZXRzL2RtLXNhbnMtbGF0aW4tZXh0LTcwMC1ub3JtYWwtQkxJM1RUV3oud29mZikgZm9ybWF0KCJ3b2ZmIik7dW5pY29kZS1yYW5nZTpVKzAxMDAtMDJCQSxVKzAyQkQtMDJDNSxVKzAyQzctMDJDQyxVKzAyQ0UtMDJENyxVKzAyREQtMDJGRixVKzAzMDQsVSswMzA4LFUrMDMyOSxVKzFEMDAtMURCRixVKzFFMDAtMUU5RixVKzFFRjItMUVGRixVKzIwMjAsVSsyMEEwLTIwQUIsVSsyMEFELTIwQzAsVSsyMTEzLFUrMkM2MC0yQzdGLFUrQTcyMC1BN0ZGfUBmb250LWZhY2V7Zm9udC1mYW1pbHk6RE0gU2Fucztmb250LXN0eWxlOm5vcm1hbDtmb250LWRpc3BsYXk6c3dhcDtmb250LXdlaWdodDo3MDA7c3JjOnVybCgvYXNzZXRzL2RtLXNhbnMtbGF0aW4tNzAwLW5vcm1hbC1EdlVmVnBVRy53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLHVybCgvYXNzZXRzL2RtLXNhbnMtbGF0aW4tNzAwLW5vcm1hbC1DVVNTQ3BRWC53b2ZmKSBmb3JtYXQoIndvZmYiKTt1bmljb2RlLXJhbmdlOlUrMDAwMC0wMEZGLFUrMDEzMSxVKzAxNTItMDE1MyxVKzAyQkItMDJCQyxVKzAyQzYsVSswMkRBLFUrMDJEQyxVKzAzMDQsVSswMzA4LFUrMDMyOSxVKzIwMDAtMjA2RixVKzIwQUMsVSsyMTIyLFUrMjE5MSxVKzIxOTMsVSsyMjEyLFUrMjIxNSxVK0ZFRkYsVStGRkZEfUBmb250LWZhY2V7Zm9udC1mYW1pbHk6SmV0QnJhaW5zIE1vbm87Zm9udC1zdHlsZTpub3JtYWw7Zm9udC1kaXNwbGF5OnN3YXA7Zm9udC13ZWlnaHQ6NTAwO3NyYzp1cmwoZGF0YTpmb250L3dvZmYyO2Jhc2U2NCxkMDlHTWdBQkFBQUFBQVNVQUJBQUFBQUFDUkFBQUFRM0FBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBR2h3Ykhod29CbUEvVTFSQlZFd0FkQkVJQ29Sa2czb0xJQUFCTmdJa0F6b0VJQVdGSGdlQkZBd0hHM0FIS0I0SHp1a3JSanlGNUdiNGtRL0I4NzNkMTdtdjhUV2tvcVVVR2FIb2RKQ3RvcW50dzdtOHRpUFd5R2tmV0RVL0lNcHpWazR6QXM5Q3p2M2M3T3M1TnZLRkcxSHQ5dkJWWHlTUlpwSmM0dFRyYk0zc1RSRmNMYTN6VmJvS1dSSW9Ba3NLU0tncVVRV0V3bFNvcWpwNDRWNUo5L2tqZDArRmk1eGFGandKQXJnQkFJSmdJQWdDQ0FJNENkTk1xR3VZWFlVS2RBRExBa0FBSndsNmlYMCtiWnFFbTFBSDBIdTlydnJKSHd4UUcxUS9nRll3V1liZ1RSV2d3RUVTVnpibXRqUUF0M0RYTzdUdS8rOVEvS05LV2hUQ2daOGZRU1dvTDBDVVVnVEJqZ0w4aUVBY2NlN1lIQmVBOFp2b2dpZUNueEkwQkNWZUFDQ0FBaEJEL29EY0FkVVBBQlNnQVg0a0JQQlR3akNBandZU0NuZWlxRjY1TFVvL3FYZFlGclJ3VHVqdE1yS20wN3BsVGJTcUxRRkFpSEJON0U0REc1d2tpR1hoQ1lCTkVUaDNLL0FjaUhONjlpRmZRakZPcjlFWFFRQUFRWFJOc3pzOFBSME9INGZEVi9kd0dlNzZDSGRqMU1RYTExRFhZR2NmWjYrQjFYME9md2pZK2k3S3BRMXc5ZCsxejMvSHlkQ0IxZjNVOEEwZlJGdiswYlh4UFdyWnUzZDlObjRVY2JMcy9RQ1hMSC9qM1BDS2JsS09pWnhMT1I3OFc5YnJQbzdlR1RMei9GMjdaUG1lUFFkQ0IxWVA0bkpVOTFvNGdVOWN5NjRMM2MzU1B1OEdmRG42WlhEMmNHbWxsVnFTeHRENXZDWEhtNXhhZUhsbnBmZng3RGNQdlhvZzVObmpBLy9jUHoyYnRzejN5ZiswTUk4cmkzM3R1djd1cE5iWW1XNVNUYm9zVzhiWUl0Vi9TUHp4dlhDMEtucFduRmRDOTFvb2ppdDVMeW82V2NKUTFZendCWWJpNTJvaEpWcGN4ZmNIQnFzdjBuRno4VTc0cnpTNk03cjBSVmxYWjNqSkM0RzkyTy8vN0xtNzhWT3RuVXgrYVF4QXpzcVBuclJyMXQ5ekRyZXpLZVB2WjAyN3grZkd0ZTRzNE5YdTcvakVwM0c5Y00xYklDWWdBQ2J1RVRVVUQ1d21lbkdYQS9JQnBBS1ZybDBBRUo1Y3FyNlE4OXRHcStTcHFrRGZYMkR0RytwWjl0ZXVhZTBBWDk4YzMwMUNYMTc5SW55RXJuU0c4V0NpQUJCNEhGYlZydy9scFRkQklPazgyblhicEhLb1FHeUJwVW92QUFENFhRQThaVFVDZUJKSElwSTB2MEZScmdjbmNrVjNBTmNrcndZSktYRWloUWZkU0tQRVI2WGVFeG1FZUVNbVNlNlFCd1dta1pkbVNPU3RoaGliZ0lrQmxVWXJlQktkLzBOZVZBRTlXQXlFYVFwSDZLaWtEV2xVVmc0M0p5MkZPbWFZbHNaaERFR1pYTzNtV0V5V0hJNnp1YUprTWxjU1E5azRGK0tpZElpRnlaSXRHRGM3cjFwVWo2d1A2enJXQjAvZmJlZUZlSGw0WU92RVRNTmlNOE55KzdPTzZRaDJ3dXIyMFlWeEZ0czVkbE9SZGw1S3dkNXV0UjdTUmN4cVg4UkE1RWhhY2hhNzZoZzdjNnl6Tm0vWGY2dk9MTnJ2NTQ0bElFa1dnN3hXby9JdEJBZUlKRW10MFhnQndnTThnVGlmb2lpTEpyb1lZb29OVGV6aUVLZTR6T29SL3d2SUtwODloU3IrNmpGQXF3L0xhb25qbVpIU3NjTU5nNGlQbFdwRnJPMVJOM3prTVUrL3hVUCtKUTk5VGJ2VGwxVmcwZ3RpclQ2bGJ3WUFBQUE9KSBmb3JtYXQoIndvZmYyIiksdXJsKGRhdGE6Zm9udC93b2ZmO2Jhc2U2NCxkMDlHUmdBQkFBQUFBQWJRQUE4QUFBQUFDTUFBQVFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkhSRVZHQUFBQldBQUFBQmdBQUFBY0FCUUFCRWRRVDFNQUFBRndBQUFBSGdBQUFCNUVkRXgxUjFOVlFnQUFBWkFBQUFBbkFBQUFLTGo4dU9wUFV5OHlBQUFCdUFBQUFGRUFBQUJnRjJoY2ExTlVRVlFBQUFJTUFBQUFQUUFBQUV6cE04d29ZMjFoY0FBQUFrd0FBQUJSQUFBQWRBeUhDb2RuWVhOd0FBQUNvQUFBQUFnQUFBQUlBQUFBRUdkc2VXWUFBQUtvQUFBQjhBQUFBbDYwNGNKRmFHVmhaQUFBQkpnQUFBQTJBQUFBTmhTUzhVTm9hR1ZoQUFBRTBBQUFBQjhBQUFBa0Fjd0JFR2h0ZEhnQUFBVHdBQUFBSHdBQUFEb2UvUUxtYkc5allRQUFCUkFBQUFBZ0FBQUFJQVRjQlo5dFlYaHdBQUFGTUFBQUFCd0FBQUFnQUljQ2IyNWhiV1VBQUFWTUFBQUJFd0FBQW1vME9WMDhjRzl6ZEFBQUJtQUFBQUJ3QUFBQWxOZHpNVEI0Mm1OZ1pHQmc0R0dBQUVZZ1pBV1RqQ0FlQUFHMEFCa0FBUUFBQUFvQUhBQWNBQUZFUmt4VUFBZ0FCQUFBQUFELy93QUFBQUFBQUhqYVkyQmtZR0RnWWxBRFFpWVhONThRQnFHY3hKSThCajRHRUdBQkVmLy9nMGdBV2trRlZRQjQybU5nWVlwaS9NTEF5c0RBMU1VVXdjREE0QTJoR2VNWWpCZ2RnS0lNREp3TVVNREV6b0FFdkp5QXhBRUdYcGFYekgvK1hXRmdZUDdEcUtQQXdEai8vbldnU2pXbVcwQlpCUVpXQURiUERqb0FBQUI0MmdYQnNRMUFBQlFGd0hzZmlZNUNZUUJEYVZWSWxCTDdtY2tBN2tUMENwUENvcDc5dUlQejNxNE1valVyU0plUHZOU0tSbFJHRUg3NGh3WU5BQUFBZU5wVnlFY0J3a0FRQmRDWEhub1ZnSlU0NFk0cEZJQUZVQU9KaVMyM1pPWjNsS2h3VlNsa3I5MXhkbFFwN2R3TW5yNUZXYi9yTVFRVzI2ditoM3hUK0lSSEdFSUJDdk5yOVdoME9VVTdOeFVVQUFBQUFBRUFBZi8vQUE5NDJtelFOWlRVUUFBRzRIOW1JRGxieVNvT3Q1STlISFppTCt2UzRWRGg3dTQwT0ZSbzMrRlE0NjRWN3RiaVVtSGRKY3ppY3NtNGZlLzlZQmdERUljK0JZT0Vlb0FyelVxeVdTR2tlUXpaNit3bWZad0xvdDZuVDF2Vk5NMDRvQmxROUFab1gzRkhoaC9nUVI2TXArSnlrS2RVTlNWSmN1OVQyMC9ONzNPclQzRi8ycU13NXZmV0xwODhTUUwzckZFKzN5Z1RydnY5QlhhTXFpQ0FrRDNkMmxyMWlwYWdLNFFxTkRIakN1UEJTQ1JxR0dhUU0rWExrMFhyUFg1R2xhWTFpNTRRRDduaHZPL2MzK1BwMzVtRUhPNThkTjJmZDZtRWRnQVlScmhmcUV5Zmk3ZWk2QUcwajZtNm9oazhIUWtySVVsS3BRMWRqNGRERWNaMVRZM0hwRERwTTNQWnNwa3psK2xUcWxibVpVWVV5OG8wTEp0S1NsT1hMcDNxbkM5TjFpZVU3RldyN0JJWlBzc3VGbTFocHQzQlZCVy95UE1QY3dBVWRFTDhtNm5xdW1iVTFFZzQvQ2ViK3MyV3B4ckcxSEt0blZLeGNtOXpvbGhXcmtHYlZONVJtcVFKZEdkcGtqNnVrR2x1emhUZWQ3VUxCUnZrcDR3QUVOVkZVdDFvTkdybWFTMnI4SmNyQ3hmSmpYV1VVQ28zeXZNWFhEbHloS3JPM21oTGovcUdodm9lTFJFeXZ2WHBFWURnR3V0RkRyRmpZRURRNVBLMU9jc1dzMTVidDRKZ00wdVFlMkxIQXhDUkhBOUZlTm9RblVTK1RzYzdKa1JYVlYwM0pJWlpKY0JKUlVkSHhTbUFBUUNGWllVM0FBRUFBQUFDTmdRSkN0ZGtYdzg4OVFBREErZ0FBQUFBMjlLbW1nQUFBQURiMnREeStUdisxQVNTQS93QUFBQUdBQUlBQUFBQUFBQjQybU5nWkdCZy92UHZDZ01EeTRhZjFuOXJXU1lCUlZBQkh3Q3VkQWJhQUhqYVk0cGdpQUppYlNRc0M4V0JRR3lFUkROQU1RaWNabWdGQU9lRkIvNEFBQUFBR2dBN0FFWUFVUUJ2QUhjQXFRQ3hBT1lCQ1FFSkFRa0JDUUVXQVM5NDJtTmdaR0JnNEdmY3daREhzSVdCRGN4REFHWUdKZ0F0R2dINGVOcU0wSUZHUTJFVUIvRGZxcUpNQlpMQUZVaDBWME1vVUJHbGxLUUFySFZ0Tjl2dTNIdUgzaUVBUFVKUDBjUDBCRDFEM0Q2ektRcUhIOS81bjg4NXFIczFxemEzaVBmYWVuRE50cy9nR2NzK2dtY2RlQXVlbStpWnQrRWxlTUdXeCtCbCsrSnYxNmpiREo1WHR4YThvbTRwZU5VU2JtVDZXZ2JPbEZwNlVtMlhFbzlTSTMzM0VxbU9ycktxMGxEaFFFTkRvUzJYR2lvVllvVlVUeXlUNjJpNGN1ckN1VVRwV0s0bE5WQzRsQm5JN0V6OWRDZVJLNlRWYTZRcDFyUm5iMEtIemgwNy9QZk1HNG1Pa1o2Vy9KZFVOTTVGVTdrVG1hRm4rWGozU05OdVZaRmJYWW5vajNuWGNwa25pWGFWUHpLcWJwakpxODZ0SC9mc1NLdU9rUWV4dGt6ZjEvU3gyS0tQeC8rYUFETjFYS3NBZU5wallHSUFnLytwREVaQWlwRUJIZkFEc1FyRFNVWW1CaHRHWmtZV1JsWkdOa1oyQm1aR0RrWk9SaTVHYmpiSHBLTFVzbFQyMHJ4TUF4TkhWd2p0YWdIbHUwSDVscXpwaWJtNWlXQ2VnYU1CazNNUVgySnlhVWxxY241dWtsNXlZbkVxRDBqRzJNQU16QUVBb08wY21BPT0pIGZvcm1hdCgid29mZiIpO3VuaWNvZGUtcmFuZ2U6VSswNDYwLTA1MkYsVSsxQzgwLTFDOEEsVSsyMEI0LFUrMkRFMC0yREZGLFUrQTY0MC1BNjlGLFUrRkUyRS1GRTJGfUBmb250LWZhY2V7Zm9udC1mYW1pbHk6SmV0QnJhaW5zIE1vbm87Zm9udC1zdHlsZTpub3JtYWw7Zm9udC1kaXNwbGF5OnN3YXA7Zm9udC13ZWlnaHQ6NTAwO3NyYzp1cmwoL2Fzc2V0cy9qZXRicmFpbnMtbW9uby1jeXJpbGxpYy01MDAtbm9ybWFsLURtVUtKUExfLndvZmYyKSBmb3JtYXQoIndvZmYyIiksdXJsKC9hc3NldHMvamV0YnJhaW5zLW1vbm8tY3lyaWxsaWMtNTAwLW5vcm1hbC1ESnFSVTN2Ty53b2ZmKSBmb3JtYXQoIndvZmYiKTt1bmljb2RlLXJhbmdlOlUrMDMwMSxVKzA0MDAtMDQ1RixVKzA0OTAtMDQ5MSxVKzA0QjAtMDRCMSxVKzIxMTZ9QGZvbnQtZmFjZXtmb250LWZhbWlseTpKZXRCcmFpbnMgTW9ubztmb250LXN0eWxlOm5vcm1hbDtmb250LWRpc3BsYXk6c3dhcDtmb250LXdlaWdodDo1MDA7c3JjOnVybCgvYXNzZXRzL2pldGJyYWlucy1tb25vLWdyZWVrLTUwMC1ub3JtYWwtSnB5U1k0NmMud29mZjIpIGZvcm1hdCgid29mZjIiKSx1cmwoL2Fzc2V0cy9qZXRicmFpbnMtbW9uby1ncmVlay01MDAtbm9ybWFsLUQ3U0ZLbGVYLndvZmYpIGZvcm1hdCgid29mZiIpO3VuaWNvZGUtcmFuZ2U6VSswMzcwLTAzNzcsVSswMzdBLTAzN0YsVSswMzg0LTAzOEEsVSswMzhDLFUrMDM4RS0wM0ExLFUrMDNBMy0wM0ZGfUBmb250LWZhY2V7Zm9udC1mYW1pbHk6SmV0QnJhaW5zIE1vbm87Zm9udC1zdHlsZTpub3JtYWw7Zm9udC1kaXNwbGF5OnN3YXA7Zm9udC13ZWlnaHQ6NTAwO3NyYzp1cmwoZGF0YTpmb250L3dvZmYyO2Jhc2U2NCxkMDlHTWdBQkFBQUFBQS9JQUJBQUFBQUFMTXdBQUE5bUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBR25BYmhYQWNnaFlHWUQ5VFZFRlVUQUNEQkJFSUNyQThwMUlMZ2pnQUFUWUNKQU9FS0FRZ0JZVWVCNHhPREFjYkZDWXpBL2FEa3hwMFJNWG1UTUgvSWNFVWthWFpoZTdxQVZRb1JodFJtT2hremFVWVhzM2x5elRVbHdwdHd3Tkd5MjhQTFAvb1pld24zOWc0SmpwOFl1c0lTV1o5ZU5wVzc4OE1OUU1JN2pacHJnc3FSaUo3aW1DQllsRVdJQmhnb1dqajd1SkdjZGRlZG5uUklRL2ZYNzduN2k4TnRMZjA4VXdFUWwzanE1OVhKQ1NoeXBVNGxNeXozSGIzWDBvbWtBa1pDWVZOaGZOL2MzUG1mMW5KY0RxbmoyVkUzNWZZQXgrOFdZSUpoWmo0em5uMVFianA5K2Y0UGFiMHdPaTdKU0VDekcwbzZEUld1L01CZ2Z1L05kUHU1TzhjVXNzS1NKMXdVeVRqcTZvV1ppYzduVXNLdUlFeVNzSWt6WHZkS3pBclZOa0N3dlAxbFFDZ0s0eXUwQlZXRnA2dnJXVm0vNk50N0g4MkpHaHhEeUF0ZUNiSFpMUmR6VHN4SnFORVV4Yit0eEh5c294andRenoycDh0VTV1RnRDNFJtY0dvdUNSWDN2MTE5NWNDQVlnQkFFQ1JJV1NJVk5zUUNpcUVoaDZScHhSUnpvZ3dhVVRZZFNDYzNBaXZBY1NRQ2NTa2FjU0NCYlFsY2JROURxQWRkZ3lOQUZpWmlsQVg5YzFPU0IvNlp5WWd4UUN3RGdHUW9WUUdJWUFJUnZWbFJBaVI3QXgranNxS0lEYWNqVkV4TkdXQS9NUUxrOFZ6SnNoVG1PenRyVmJ5U055SFZuYUFpVVZwY2dkdm1uaDlGTmVBWVlYa01sNEFxaXNFb0R0SVpLMHpzNmxzU004eUFib0VoWjVDRlZxRDIza05mb3I0OVFnQUdXd0ZCZVJBSVpSQ0xkaWdCYnFQRlNJRitBQmVRQWZvdFVVMGcrckwxZ0NNT25TTm40UzBQV0VMNU53MlFCcXlJVnZCVDJGZTl3Q1NZRGEzUUgzVnQ0Y1NhV1NBdWcrTlQwSktEZ0FLUU9NTGE5NkVGSUtmL2dPVVdEUWlFM0VGZ0FCNGFBQ3hpa2hGQUF3S1paOERnSGVpUlFpeFJnaG01bjRIckNPT1NyUUF0cUpVM0x6cEZBci82VEFIbkRvOFFRZ3N6TkhaNzdGWHdnb204NUpmd1FPcU1DOEFlL2dZa1NzVVJRMUFnUWdBUUF1dEFBb0FBTENkQTNnSWt2NjE5TC8vdndiMEg4blZnanorYndMVWxGb0RhUEdRa2ZxQmpRY3BjNFI4T0R4REFQd3VyaFZKTWJSUmE3a3NGVEpBVUpFUksrUlhnRHhEaThhejBEMzlOQkptTWpHWlA1TVdneUg1K21ZWGVaZzBrWk9kSkVJdTVrMU9hSVlXMFJucXYvUzJEdFF4S0NJak9TUk1MdUtORGpwd0lYRFJFMFk0MDd6T0RGMy9XL292bnZiaUF6NllJT0MwblpLYVZycE1BREs5L2c4c1FET1JhYUxpVm1wQ05qK0RzQVVKVWcxU05CS3B4YkVTcXlOUmoyWEIySVd2bWtBTklUT2U0MnpSWnF0MjIzUklaYmRSaTAwY05tdTFRVE1sRndXblRIMnkrR2g0cGVtV3JrZUdYbHBkZGdqWUtVZ25SRzlBam41NWh1UWJWaUNpeUtoaVkwcU1LelNpd3BSeWt5ckZHRTBqU0NJRkFKd0xBRGtEMEF0TUR2QmVnSGtIdWcwQW9GR0pWSzJxaENYRzYxQUlyV1dyOGFZWVQyemhXa1ZWRDZFWDYyZFF5SEpxVkdMaWNkQXlUUXRGakpnVmkxT2x3MHdkSTZlb3VDMVNaanZMM3VtaWtHNWgzQlNIclRPTVFLcGtVZ1F1L2FHb1ZDNVZLTE9qWEtCSXJXU3kyRnFtbEIrZFRLQVVjRHdKRTVUd0JrYkZuSi9yWTkyc3M0ZHpYeEtiVjEvVDloQUp2QlV1K2J3T2FxL1hXRGVYVEVLdkJNditIWURZdFNNWEhJOGxFckJsRHYxRnZDRjJ5RGZKY2llM2Yxb1dlK3dDdGI5SENaZHNoSEJJZkxDOUZyTmY2MEo0SEdNS1lrZkM1VEorbFNOSGQzTmRaNWROWjk2bzZPRzhsT3ZwdDVJY1IzcjJ6NjFzdWFGQk5RbXJUMHdyQ1hrdndLa05XZW5VUmRkeWs0K3UxRnVTaVFSdFJ2UXh4aEVmeEZvNDExUEJ2ZmJUUTFhQ1BTYkEweUljelJJSlJYRUVReVlTNG9jWC9vZjFXaWl5YVk3U0kzWjU0dTZwVWU4bSszMFpYQjRmMTNWMjNYYnVwWW9lTGh3YTVRcWNSSUtSZGh3dERqZEhYN3NqOFNTV3FoZ2QyczI1L0I3T3VUdTRXTGR6OUZnUUx0RzU1SGhNbGJGTi9KNXJybUdQWFFXd1pPVlZMbm4zMVZldmduUHJmS3QrSXNIV2VTNVpZVm5DSlo5SElxZW0zeithZUFzang5MmNLKzdoblBHeVZjYXJONDdpOVFjdGRBRFM4NjRYbCtmMmNNNkU2Vzdqd3lETG1XVGxETmZBV1J0TjNlTHVweTFWdVVvWEEwWTluRE13RG0wYVdXeTh2a1k2eW5pUFRLbWF4MW1GTVNQVFkrT3lObzVndlByTWFXaCtkNllvY3F6b2JyaDJCTSt4TzY2NWdqMTJXUVBTaXhtM1gzMjVPSE5wZXk0K0ZpSStWaUc0biswbXRrZURUNko3N2JLMXZzTGNxdXIxYU15Ri91NjNUNHhGeC9WM3ZYaHpxK1ZYRkw3eXBLd2pQeitsNHcySTdPMWIyMSt3cnozWEdDa3pocXdLaTNFd1V0Ym83dytZckxWVkN1TThVMU1BdnJYckE1WVh0WDd0dDVZQWdvSFR0cDhXV0YwZUdIcVJOVmhVRWpCYmEwdjhoK2JXYUFWK2M1MjVKUEM3WS9HWEgxOWhyVXlXbDUxYmFhMDREMGNuN1NwNXFzemUxVnJ3VjdPeVpIZlNpeUpUc1pCMFRGb2VyU2pmVzk3TVVEMFl0NTlvTDNLZDRTTm5kWTM1dStTdDV5WVRHNTc1UDFjcHZXZjNoc2t5cGdTL3lCMzB0ampDM3Q2emkvT200bC92anRZUllkT2NweWM0RlhRdFJBWlRONWg2NnZVZFJwc3h2L0ZNblNSSGR6SVlVV2NnNnZjSEF0Rk9xOE5tRG0rbDlyNDl0allTMlJJMk8yenF2dUlUSzV3Vkp4YVhMaHVkeG1YeVVXdC9LL1FpeTBCSnFiL21aSE9wYjZERVlnMlZsUHJNUVdmK3JoZU5ocE9qbzF6ZGZJZktrbTZxTWhzclRlWmQyMzRCMm9NUEI2OEt5aCs3T1FpOTBCb3FMdldiVDZ3dDlZV0tyZEVLZkxVbm1rdjlKMmZ4bGQ5WGVhTHgzdkt5WjQwblZqNkhmVS9ZZGZLdzc5aTlyUVUxbFNXSFh1ekJTU2NLemNaQzNXUGRsUmNVbDl4UWVUaDJhQzZHOW1kNnhub3J4Z3NLZDFmMGR2a3IvZTdLUXROVC9ZSFlGSzY5MWZIcWM3ejVXR25vVFhQaG02SFIwbW51YlRDRm5ZRUpmN2JmUCtHME91dzFrNFF2dU93L3JQc085N3VmbFN4WEtDdVdTMHJqbGNyS2VQSGxyWVpXbkg5QVk5Vm9MMDN0QVRNYStrQi9JR08xTExxYWtiRjZzcXZRSEpoT0xvd204Y3lCU0hKbU1vbm9nYVBKQVRwT09Pd2VFL285OXA3V1dtZm1zMWs3bnMxMDFsWkh4dFJCVGVmWk16SUprU3NhTklaNlBSZVQvb2hWbDF1R2cyZTdtbDM0NzREa0k4a0dUVnREWk9lMlRPMk9OdWpYTWs3VGFncVBydEdlaG0yZjVHa3NOVXFXT01zQUMxSnBYVk1COGEyNjVkd0NXcmVjYitxam1jdUYzcEtoWC9xRW9kcmw4MHY1UlBQdXE5eEdkVXU5eDNCMnBucXJkdm5CNlBlMkJCcE43YXAwblM1ZDFXN3lONTZRaUIwWVhUelFJV01xc1ZpdDJFMUlKSjY1VHNJK0t6VlpiSG1ONmRKemtpcm85OXQ3R3FzY3lsLzhuYlRTVVZXZGpPQnlUZWRDU0NaZHIwa05XM01IY3JXV3hXbXAxY3AreUU2Yzk4ZDBqQzBsejRnZEdYalJhTE85MmZmVUh5c3A4cEYzZ2l2K2VPY0dqdnNiR2ExMWhraVcrUEI1aG1QZGh0MzhTNjdwbUE5bXkrSWJObVhVTHZTM1ZHMDdMcTEzNnE0eG5LejAxb1BodVpHSnVlTVdySzMxSm9mS2tsYWUxcWxxS2JhN3ZnNXlXbnozaHpBdUJPZUdlK2FROHVyMDNnV2hTTnhRM2EvaHRxVWNXenF4WnNncHR1d1RjWTNOYUd6WkxsVFVLUDhVVzR6SGs2b3hIRkZmOStGOU1yRlV3cS9uNTJqMDZ2TmVHbG1TOWV5SlU3QThlakE4RjV1WU8yT2gyaTVLK3VEY2F4UFJ1YnZmNnZiVHh1ODVtNVduV3FvOVdiZHFKVWNPZjN0U29OdkNicm4wOUhKOWlvNk1qWjRYbnk1cWIycHVBcFVOZ2dsOEtMVlUxQUNRVHBNb21HMkhvRXJpTExrYWVqcklNOGd6SXg5MElzOGl6OGJuakdOak5MUUFESEpjTTRWY0VYcVhrT1VoRzduSUE1QnZOSitOOU1LbVlidU4wNVRxNVpyV2hjanFobVExSXpkSU5hbVcxVjRXckJoazI5Ukc2Rm9EcWZJdDl3amtiTmZ2Y3E0WFlPdzFQSFVKbXF1Q1owM3IzcTZQU1lOc3dIQkxVSmJLV2JjSFdVYVdRWlVOODlBbkFzaStFUHhRcnJJbEVKbkpJbFVKTTdITWN5SWIyV2Rpd0NZWWhka0t1QmpaNWdVWVNCdTJUWVNOWkVCUVovZHNMTW9nWkFscWNNbmxUcGNzek5PV0M3TEh5MG9NcEFkN0ptaGpBTDhOYm1SZGF5QVZ2RFUrV3hMNVhSNzBBb3doYklOYmtjNy9LZ0x3TG1QcVRmd05CRVVIQ01CeG1VaGRRajZXVWxrWmxLbnh1NnBPMWQ5L3YvLzNRN3J3Ky8vLzJmTWpBQUI2b0RiMEhhSDBiNkdVSlU4WTBlUjY0b2pxVXFtMTRPZDhkdVJESFBLaEZmWnBpR3VwVU5uemV0anhkZ1JiSy81K2w0SUo1SmVTaXI4dDNSKzFJYUZhYTlBWml0QU5YVHZxVXhhdlEyVFllTm1yWXdQNGRldDJ0R3VXZ0ZwRGVqTDlldVlBZlFmSzI4Z0dHSXZiZ1FSY3BYZXNvdFpJQUJVSy9Mb0NNZ1g1dEJ6b1VGaVdiQURmQ05mTXU5OFBzQ2doYmR5ZXE2amdlbDA3cW9DREpqanN5SUZZN01BT0RTWUwxYWxROXBoQ0lSdDNSaTR0YlFWZ0U1ZHBrZmhqR0FrWk1BV1JZelBMTmlvaDY4QW12d3dkNHpHem9kQ1JHYVRsVWpacVZkYUJUU0JEZko2dld6b3FHNmxaaFFLYkZLNkVBS2d6NXVuQjAwZjlLYWJmSUUxL0NjQTc2NHB6Y1BidlN6K0RUZGwrL3hjQUh3VUFDSHdNM0pLNmxCTCtkODhIeEFWZkZIaDNtMWI2YThUV3FLOXF3VnJSVmpQYXE2V3FGU2JVWHFPT3FyWFhDa2ZONktoV1Bnbm5kc0NzRDNDZFp6SHBvRVBPWDZ3ano2N0ZIc285YUFxV1creW5weWVBYytWaHRHTVFnS0RoazdwQkdLVXNBbkJmbEVobENWMnduRkx4djJWcFJvK1FURm1lN2E0cXk1Y2pVVmFxaksyc2pGSitHVG14OUZZRTRNMmh2RFJLd1N5WExTZWdROVM0ZmhPYXpPVDhZeUpDUEFhSEhoWTJvOFh5RDRpWU5jN21OS05XVEwrSUNkTzBHbythaUZxc0daTTNaeU1EZzJraE1SR1RacXJNZk5OOExEL25xSmhoQnEzcU5YTjJyOEx6R2tCdUhwTWdZbWtWMmRwRkNoVUt1MDhWbTFwVlI5VEJoK0ZqZXZTeE1ZWnI3YU5iUkUxYUZKc3J2UzFSY0cxcE9TOW9jQko4clRZeDR5TXVRajZXMld3VzRWblNESkZ6NXRVL0xLSzBaZ1dYQ0QyL3FSbUtSV3VZaCs0N1VTNmFkWDFGQU9JZndibUFURStUMnQ0d0xWYWIzZUYwdVQxZVh6Nk1RS0xRR0N5dUdFOGdWcExJRkNxTnptQ3kyQnd1cjU0dkVJckVFcWxNM3F4UXF0VGRTclU2dmNGb01sdXNOanN6MHErV2hWV2RlZzBhTmZVbUc3dm1PclJ3YU5XbVhZZE9UaTV1SGw1ZGVYWHIwYXVQajE5QXYyQzlRZ1lNR29yMkM0c1lNV3JNdUFsUms2YkVUSnN4YTg2OEJZdVd4QzNiYlkrOUVqaEJValREY3J3Z1NpaDg4L3krZXEvQzEza0huWEtoYlRVRGdJU1VDZ05Eb0FCWEtMQ0wrMlgyN0UvYzJqQUFRRUtzRmlneDFxZ0xFYlNldStOeWhjSkdJRUNRTm05TDU2N2MzbDd1WjVXbzNwa3g0dFlPaEpBTkt3OWRFb25vdlJxVkRiNWRNS3o1MTVOZytoY2kyM2htNFVRRXM4ZUNod1BCMEJaWU9CSU5iSDNFcncwSEVDelVhb2tXYTQyZXlHRDNQSUJJTUJTT3JmcnlCUTNHNG9IUUtpKy9rRUEwdHVhRFY0MEdQM2gwK3d1QUFnWFRLeTB2NTQyOHhVRHdrc2ZtNTM4anVZOW5pOWZ6MkdneTRpV0xNejRxTGtsbGU3a2Nadk9Md3k1YlhwN2ZkWXJSSmxQNGw1TkRkWlBpS1ZlTG5KVjdPaGcyVkFzL2FRd1pOVnRvZFgyamtpNlJVMWUvajZHa2daYmdBbW1vZ1phZnVGNG1abGIxdCtDT1V5cmNuRi9DQ1p6UzRNTy9kWDFUNlFRQUFBQT0pIGZvcm1hdCgid29mZjIiKSx1cmwoL2Fzc2V0cy9qZXRicmFpbnMtbW9uby12aWV0bmFtZXNlLTUwMC1ub3JtYWwtRE5ScXpWTTEud29mZikgZm9ybWF0KCJ3b2ZmIik7dW5pY29kZS1yYW5nZTpVKzAxMDItMDEwMyxVKzAxMTAtMDExMSxVKzAxMjgtMDEyOSxVKzAxNjgtMDE2OSxVKzAxQTAtMDFBMSxVKzAxQUYtMDFCMCxVKzAzMDAtMDMwMSxVKzAzMDMtMDMwNCxVKzAzMDgtMDMwOSxVKzAzMjMsVSswMzI5LFUrMUVBMC0xRUY5LFUrMjBBQn1AZm9udC1mYWNle2ZvbnQtZmFtaWx5OkpldEJyYWlucyBNb25vO2ZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtZGlzcGxheTpzd2FwO2ZvbnQtd2VpZ2h0OjUwMDtzcmM6dXJsKC9hc3NldHMvamV0YnJhaW5zLW1vbm8tbGF0aW4tZXh0LTUwMC1ub3JtYWwtQ3V0LTRtTUgud29mZjIpIGZvcm1hdCgid29mZjIiKSx1cmwoL2Fzc2V0cy9qZXRicmFpbnMtbW9uby1sYXRpbi1leHQtNTAwLW5vcm1hbC1ja3piZ1k4NC53b2ZmKSBmb3JtYXQoIndvZmYiKTt1bmljb2RlLXJhbmdlOlUrMDEwMC0wMkJBLFUrMDJCRC0wMkM1LFUrMDJDNy0wMkNDLFUrMDJDRS0wMkQ3LFUrMDJERC0wMkZGLFUrMDMwNCxVKzAzMDgsVSswMzI5LFUrMUQwMC0xREJGLFUrMUUwMC0xRTlGLFUrMUVGMi0xRUZGLFUrMjAyMCxVKzIwQTAtMjBBQixVKzIwQUQtMjBDMCxVKzIxMTMsVSsyQzYwLTJDN0YsVStBNzIwLUE3RkZ9QGZvbnQtZmFjZXtmb250LWZhbWlseTpKZXRCcmFpbnMgTW9ubztmb250LXN0eWxlOm5vcm1hbDtmb250LWRpc3BsYXk6c3dhcDtmb250LXdlaWdodDo1MDA7c3JjOnVybCgvYXNzZXRzL2pldGJyYWlucy1tb25vLWxhdGluLTUwMC1ub3JtYWwtQldaRVU1eUEud29mZjIpIGZvcm1hdCgid29mZjIiKSx1cmwoL2Fzc2V0cy9qZXRicmFpbnMtbW9uby1sYXRpbi01MDAtbm9ybWFsLUNKT1ZUSkI3LndvZmYpIGZvcm1hdCgid29mZiIpO3VuaWNvZGUtcmFuZ2U6VSswMDAwLTAwRkYsVSswMTMxLFUrMDE1Mi0wMTUzLFUrMDJCQi0wMkJDLFUrMDJDNixVKzAyREEsVSswMkRDLFUrMDMwNCxVKzAzMDgsVSswMzI5LFUrMjAwMC0yMDZGLFUrMjBBQyxVKzIxMjIsVSsyMTkxLFUrMjE5MyxVKzIyMTIsVSsyMjE1LFUrRkVGRixVK0ZGRkR9Kiw6YmVmb3JlLDphZnRlcnstLXR3LWJvcmRlci1zcGFjaW5nLXg6IDA7LS10dy1ib3JkZXItc3BhY2luZy15OiAwOy0tdHctdHJhbnNsYXRlLXg6IDA7LS10dy10cmFuc2xhdGUteTogMDstLXR3LXJvdGF0ZTogMDstLXR3LXNrZXcteDogMDstLXR3LXNrZXcteTogMDstLXR3LXNjYWxlLXg6IDE7LS10dy1zY2FsZS15OiAxOy0tdHctcGFuLXg6IDstLXR3LXBhbi15OiA7LS10dy1waW5jaC16b29tOiA7LS10dy1zY3JvbGwtc25hcC1zdHJpY3RuZXNzOiBwcm94aW1pdHk7LS10dy1ncmFkaWVudC1mcm9tLXBvc2l0aW9uOiA7LS10dy1ncmFkaWVudC12aWEtcG9zaXRpb246IDstLXR3LWdyYWRpZW50LXRvLXBvc2l0aW9uOiA7LS10dy1vcmRpbmFsOiA7LS10dy1zbGFzaGVkLXplcm86IDstLXR3LW51bWVyaWMtZmlndXJlOiA7LS10dy1udW1lcmljLXNwYWNpbmc6IDstLXR3LW51bWVyaWMtZnJhY3Rpb246IDstLXR3LXJpbmctaW5zZXQ6IDstLXR3LXJpbmctb2Zmc2V0LXdpZHRoOiAwcHg7LS10dy1yaW5nLW9mZnNldC1jb2xvcjogI2ZmZjstLXR3LXJpbmctY29sb3I6IHJnYig1OSAxMzAgMjQ2IC8gLjUpOy0tdHctcmluZy1vZmZzZXQtc2hhZG93OiAwIDAgIzAwMDA7LS10dy1yaW5nLXNoYWRvdzogMCAwICMwMDAwOy0tdHctc2hhZG93OiAwIDAgIzAwMDA7LS10dy1zaGFkb3ctY29sb3JlZDogMCAwICMwMDAwOy0tdHctYmx1cjogOy0tdHctYnJpZ2h0bmVzczogOy0tdHctY29udHJhc3Q6IDstLXR3LWdyYXlzY2FsZTogOy0tdHctaHVlLXJvdGF0ZTogOy0tdHctaW52ZXJ0OiA7LS10dy1zYXR1cmF0ZTogOy0tdHctc2VwaWE6IDstLXR3LWRyb3Atc2hhZG93OiA7LS10dy1iYWNrZHJvcC1ibHVyOiA7LS10dy1iYWNrZHJvcC1icmlnaHRuZXNzOiA7LS10dy1iYWNrZHJvcC1jb250cmFzdDogOy0tdHctYmFja2Ryb3AtZ3JheXNjYWxlOiA7LS10dy1iYWNrZHJvcC1odWUtcm90YXRlOiA7LS10dy1iYWNrZHJvcC1pbnZlcnQ6IDstLXR3LWJhY2tkcm9wLW9wYWNpdHk6IDstLXR3LWJhY2tkcm9wLXNhdHVyYXRlOiA7LS10dy1iYWNrZHJvcC1zZXBpYTogOy0tdHctY29udGFpbi1zaXplOiA7LS10dy1jb250YWluLWxheW91dDogOy0tdHctY29udGFpbi1wYWludDogOy0tdHctY29udGFpbi1zdHlsZTogfTo6YmFja2Ryb3B7LS10dy1ib3JkZXItc3BhY2luZy14OiAwOy0tdHctYm9yZGVyLXNwYWNpbmcteTogMDstLXR3LXRyYW5zbGF0ZS14OiAwOy0tdHctdHJhbnNsYXRlLXk6IDA7LS10dy1yb3RhdGU6IDA7LS10dy1za2V3LXg6IDA7LS10dy1za2V3LXk6IDA7LS10dy1zY2FsZS14OiAxOy0tdHctc2NhbGUteTogMTstLXR3LXBhbi14OiA7LS10dy1wYW4teTogOy0tdHctcGluY2gtem9vbTogOy0tdHctc2Nyb2xsLXNuYXAtc3RyaWN0bmVzczogcHJveGltaXR5Oy0tdHctZ3JhZGllbnQtZnJvbS1wb3NpdGlvbjogOy0tdHctZ3JhZGllbnQtdmlhLXBvc2l0aW9uOiA7LS10dy1ncmFkaWVudC10by1wb3NpdGlvbjogOy0tdHctb3JkaW5hbDogOy0tdHctc2xhc2hlZC16ZXJvOiA7LS10dy1udW1lcmljLWZpZ3VyZTogOy0tdHctbnVtZXJpYy1zcGFjaW5nOiA7LS10dy1udW1lcmljLWZyYWN0aW9uOiA7LS10dy1yaW5nLWluc2V0OiA7LS10dy1yaW5nLW9mZnNldC13aWR0aDogMHB4Oy0tdHctcmluZy1vZmZzZXQtY29sb3I6ICNmZmY7LS10dy1yaW5nLWNvbG9yOiByZ2IoNTkgMTMwIDI0NiAvIC41KTstLXR3LXJpbmctb2Zmc2V0LXNoYWRvdzogMCAwICMwMDAwOy0tdHctcmluZy1zaGFkb3c6IDAgMCAjMDAwMDstLXR3LXNoYWRvdzogMCAwICMwMDAwOy0tdHctc2hhZG93LWNvbG9yZWQ6IDAgMCAjMDAwMDstLXR3LWJsdXI6IDstLXR3LWJyaWdodG5lc3M6IDstLXR3LWNvbnRyYXN0OiA7LS10dy1ncmF5c2NhbGU6IDstLXR3LWh1ZS1yb3RhdGU6IDstLXR3LWludmVydDogOy0tdHctc2F0dXJhdGU6IDstLXR3LXNlcGlhOiA7LS10dy1kcm9wLXNoYWRvdzogOy0tdHctYmFja2Ryb3AtYmx1cjogOy0tdHctYmFja2Ryb3AtYnJpZ2h0bmVzczogOy0tdHctYmFja2Ryb3AtY29udHJhc3Q6IDstLXR3LWJhY2tkcm9wLWdyYXlzY2FsZTogOy0tdHctYmFja2Ryb3AtaHVlLXJvdGF0ZTogOy0tdHctYmFja2Ryb3AtaW52ZXJ0OiA7LS10dy1iYWNrZHJvcC1vcGFjaXR5OiA7LS10dy1iYWNrZHJvcC1zYXR1cmF0ZTogOy0tdHctYmFja2Ryb3Atc2VwaWE6IDstLXR3LWNvbnRhaW4tc2l6ZTogOy0tdHctY29udGFpbi1sYXlvdXQ6IDstLXR3LWNvbnRhaW4tcGFpbnQ6IDstLXR3LWNvbnRhaW4tc3R5bGU6IH0qLDpiZWZvcmUsOmFmdGVye2JveC1zaXppbmc6Ym9yZGVyLWJveDtib3JkZXItd2lkdGg6MDtib3JkZXItc3R5bGU6c29saWQ7Ym9yZGVyLWNvbG9yOiNlNWU3ZWJ9OmJlZm9yZSw6YWZ0ZXJ7LS10dy1jb250ZW50OiAiIn1odG1sLDpob3N0e2xpbmUtaGVpZ2h0OjEuNTstd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6MTAwJTstbW96LXRhYi1zaXplOjQ7LW8tdGFiLXNpemU6NDt0YWItc2l6ZTo0O2ZvbnQtZmFtaWx5OkRNIFNhbnMsdWktc2Fucy1zZXJpZixzeXN0ZW0tdWksLWFwcGxlLXN5c3RlbSxTZWdvZSBVSSxSb2JvdG8sc2Fucy1zZXJpZjtmb250LWZlYXR1cmUtc2V0dGluZ3M6bm9ybWFsO2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOm5vcm1hbDstd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6dHJhbnNwYXJlbnR9Ym9keXttYXJnaW46MDtsaW5lLWhlaWdodDppbmhlcml0fWhye2hlaWdodDowO2NvbG9yOmluaGVyaXQ7Ym9yZGVyLXRvcC13aWR0aDoxcHh9YWJicjp3aGVyZShbdGl0bGVdKXstd2Via2l0LXRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUgZG90dGVkO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUgZG90dGVkfWgxLGgyLGgzLGg0LGg1LGg2e2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OmluaGVyaXR9YXtjb2xvcjppbmhlcml0O3RleHQtZGVjb3JhdGlvbjppbmhlcml0fWIsc3Ryb25ne2ZvbnQtd2VpZ2h0OmJvbGRlcn1jb2RlLGtiZCxzYW1wLHByZXtmb250LWZhbWlseTpKZXRCcmFpbnMgTW9ubyx1aS1tb25vc3BhY2UsU0ZNb25vLVJlZ3VsYXIsTWVubG8sbW9ub3NwYWNlO2ZvbnQtZmVhdHVyZS1zZXR0aW5nczpub3JtYWw7Zm9udC12YXJpYXRpb24tc2V0dGluZ3M6bm9ybWFsO2ZvbnQtc2l6ZToxZW19c21hbGx7Zm9udC1zaXplOjgwJX1zdWIsc3Vwe2ZvbnQtc2l6ZTo3NSU7bGluZS1oZWlnaHQ6MDtwb3NpdGlvbjpyZWxhdGl2ZTt2ZXJ0aWNhbC1hbGlnbjpiYXNlbGluZX1zdWJ7Ym90dG9tOi0uMjVlbX1zdXB7dG9wOi0uNWVtfXRhYmxle3RleHQtaW5kZW50OjA7Ym9yZGVyLWNvbG9yOmluaGVyaXQ7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlfWJ1dHRvbixpbnB1dCxvcHRncm91cCxzZWxlY3QsdGV4dGFyZWF7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LWZlYXR1cmUtc2V0dGluZ3M6aW5oZXJpdDtmb250LXZhcmlhdGlvbi1zZXR0aW5nczppbmhlcml0O2ZvbnQtc2l6ZToxMDAlO2ZvbnQtd2VpZ2h0OmluaGVyaXQ7bGluZS1oZWlnaHQ6aW5oZXJpdDtsZXR0ZXItc3BhY2luZzppbmhlcml0O2NvbG9yOmluaGVyaXQ7bWFyZ2luOjA7cGFkZGluZzowfWJ1dHRvbixzZWxlY3R7dGV4dC10cmFuc2Zvcm06bm9uZX1idXR0b24saW5wdXQ6d2hlcmUoW3R5cGU9YnV0dG9uXSksaW5wdXQ6d2hlcmUoW3R5cGU9cmVzZXRdKSxpbnB1dDp3aGVyZShbdHlwZT1zdWJtaXRdKXstd2Via2l0LWFwcGVhcmFuY2U6YnV0dG9uO2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQ7YmFja2dyb3VuZC1pbWFnZTpub25lfTotbW96LWZvY3VzcmluZ3tvdXRsaW5lOmF1dG99Oi1tb3otdWktaW52YWxpZHtib3gtc2hhZG93Om5vbmV9cHJvZ3Jlc3N7dmVydGljYWwtYWxpZ246YmFzZWxpbmV9Ojotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLDo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbntoZWlnaHQ6YXV0b31bdHlwZT1zZWFyY2hdey13ZWJraXQtYXBwZWFyYW5jZTp0ZXh0ZmllbGQ7b3V0bGluZS1vZmZzZXQ6LTJweH06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9Ojotd2Via2l0LWZpbGUtdXBsb2FkLWJ1dHRvbnstd2Via2l0LWFwcGVhcmFuY2U6YnV0dG9uO2ZvbnQ6aW5oZXJpdH1zdW1tYXJ5e2Rpc3BsYXk6bGlzdC1pdGVtfWJsb2NrcXVvdGUsZGwsZGQsaDEsaDIsaDMsaDQsaDUsaDYsaHIsZmlndXJlLHAscHJle21hcmdpbjowfWZpZWxkc2V0e21hcmdpbjowO3BhZGRpbmc6MH1sZWdlbmR7cGFkZGluZzowfW9sLHVsLG1lbnV7bGlzdC1zdHlsZTpub25lO21hcmdpbjowO3BhZGRpbmc6MH1kaWFsb2d7cGFkZGluZzowfXRleHRhcmVhe3Jlc2l6ZTp2ZXJ0aWNhbH1pbnB1dDo6LW1vei1wbGFjZWhvbGRlcix0ZXh0YXJlYTo6LW1vei1wbGFjZWhvbGRlcntvcGFjaXR5OjE7Y29sb3I6IzljYTNhZn1pbnB1dDo6cGxhY2Vob2xkZXIsdGV4dGFyZWE6OnBsYWNlaG9sZGVye29wYWNpdHk6MTtjb2xvcjojOWNhM2FmfWJ1dHRvbixbcm9sZT1idXR0b25de2N1cnNvcjpwb2ludGVyfTpkaXNhYmxlZHtjdXJzb3I6ZGVmYXVsdH1pbWcsc3ZnLHZpZGVvLGNhbnZhcyxhdWRpbyxpZnJhbWUsZW1iZWQsb2JqZWN0e2Rpc3BsYXk6YmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlfWltZyx2aWRlb3ttYXgtd2lkdGg6MTAwJTtoZWlnaHQ6YXV0b31baGlkZGVuXTp3aGVyZSg6bm90KFtoaWRkZW49dW50aWwtZm91bmRdKSl7ZGlzcGxheTpub25lfTpyb290e2NvbG9yLXNjaGVtZTpkYXJrfWh0bWwsYm9keSwjcm9vdHttaW4taGVpZ2h0OjEwMCV9Ym9keXstLXR3LWJnLW9wYWNpdHk6IDE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMTEgMTYgMzIgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSk7Zm9udC1mYW1pbHk6RE0gU2Fucyx1aS1zYW5zLXNlcmlmLHN5c3RlbS11aSwtYXBwbGUtc3lzdGVtLFNlZ29lIFVJLFJvYm90byxzYW5zLXNlcmlmOy0tdHctdGV4dC1vcGFjaXR5OiAxO2NvbG9yOnJnYigyNDUgMjQzIDI1NSAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpOy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6Z3JheXNjYWxlO2ZvbnQtZmVhdHVyZS1zZXR0aW5nczoic3MwMSIsImN2MTEifTpmb2N1cy12aXNpYmxle2JvcmRlci1yYWRpdXM6OHB4O291dGxpbmU6MnB4IHNvbGlkIHRyYW5zcGFyZW50O291dGxpbmUtb2Zmc2V0OjJweDstLXR3LXJpbmctb2Zmc2V0LXNoYWRvdzogdmFyKC0tdHctcmluZy1pbnNldCkgMCAwIDAgdmFyKC0tdHctcmluZy1vZmZzZXQtd2lkdGgpIHZhcigtLXR3LXJpbmctb2Zmc2V0LWNvbG9yKTstLXR3LXJpbmctc2hhZG93OiB2YXIoLS10dy1yaW5nLWluc2V0KSAwIDAgMCBjYWxjKDJweCArIHZhcigtLXR3LXJpbmctb2Zmc2V0LXdpZHRoKSkgdmFyKC0tdHctcmluZy1jb2xvcik7Ym94LXNoYWRvdzp2YXIoLS10dy1yaW5nLW9mZnNldC1zaGFkb3cpLHZhcigtLXR3LXJpbmctc2hhZG93KSx2YXIoLS10dy1zaGFkb3csIDAgMCAjMDAwMCk7LS10dy1yaW5nLW9wYWNpdHk6IDE7LS10dy1yaW5nLWNvbG9yOiByZ2IoMTY3IDEzOSAyNTAgLyB2YXIoLS10dy1yaW5nLW9wYWNpdHksIDEpKTstLXR3LXJpbmctb2Zmc2V0LXdpZHRoOiAycHg7LS10dy1yaW5nLW9mZnNldC1jb2xvcjogIzBCMTAyMH06Oi1tb3otc2VsZWN0aW9ue2JhY2tncm91bmQ6I2E3OGJmYTU5fTo6c2VsZWN0aW9ue2JhY2tncm91bmQ6I2E3OGJmYTU5fWlucHV0OjotbW96LXBsYWNlaG9sZGVyLHRleHRhcmVhOjotbW96LXBsYWNlaG9sZGVye2NvbG9yOiNmNWYzZmY2Nn1pbnB1dDo6cGxhY2Vob2xkZXIsdGV4dGFyZWE6OnBsYWNlaG9sZGVye2NvbG9yOiNmNWYzZmY2Nn0uY2FyZHtib3JkZXItcmFkaXVzOjE0cHg7Ym9yZGVyLXdpZHRoOjFweDtib3JkZXItY29sb3I6I2ZmZmZmZjE0Oy0tdHctYmctb3BhY2l0eTogMTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyMCAyNiA1MSAvIHZhcigtLXR3LWJnLW9wYWNpdHksIDEpKTstLXR3LXNoYWRvdzogMCAxcHggMCByZ2JhKDI1NSwyNTUsMjU1LC4wNCkgaW5zZXQsIDAgOHB4IDI0cHggcmdiYSgwLDAsMCwuMjUpOy0tdHctc2hhZG93LWNvbG9yZWQ6IGluc2V0IDAgMXB4IDAgdmFyKC0tdHctc2hhZG93LWNvbG9yKSwgMCA4cHggMjRweCB2YXIoLS10dy1zaGFkb3ctY29sb3IpO2JveC1zaGFkb3c6dmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93LCAwIDAgIzAwMDApLHZhcigtLXR3LXJpbmctc2hhZG93LCAwIDAgIzAwMDApLHZhcigtLXR3LXNoYWRvdyl9LmxhYmVse2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjUwMDt0ZXh0LXRyYW5zZm9ybTp1cHBlcmNhc2U7bGV0dGVyLXNwYWNpbmc6LjA4ZW07Y29sb3I6I2Y1ZjNmZjY2fS5udW17Zm9udC1mYW1pbHk6SmV0QnJhaW5zIE1vbm8sdWktbW9ub3NwYWNlLFNGTW9uby1SZWd1bGFyLE1lbmxvLG1vbm9zcGFjZTtmb250LXNpemU6MTNweDstLXR3LW51bWVyaWMtc3BhY2luZzogdGFidWxhci1udW1zO2ZvbnQtdmFyaWFudC1udW1lcmljOnZhcigtLXR3LW9yZGluYWwpIHZhcigtLXR3LXNsYXNoZWQtemVybykgdmFyKC0tdHctbnVtZXJpYy1maWd1cmUpIHZhcigtLXR3LW51bWVyaWMtc3BhY2luZykgdmFyKC0tdHctbnVtZXJpYy1mcmFjdGlvbil9LmFic29sdXRle3Bvc2l0aW9uOmFic29sdXRlfS5yZWxhdGl2ZXtwb3NpdGlvbjpyZWxhdGl2ZX0ubGVmdC0yXC41e2xlZnQ6LjYyNXJlbX0ucmlnaHQtMHtyaWdodDowfS50b3AtMVwvMnt0b3A6NTAlfS56LTEwe3otaW5kZXg6MTB9Li1teC0xe21hcmdpbi1sZWZ0Oi0uMjVyZW07bWFyZ2luLXJpZ2h0Oi0uMjVyZW19Lm14LWF1dG97bWFyZ2luLWxlZnQ6YXV0bzttYXJnaW4tcmlnaHQ6YXV0b30ubWItMVwuNXttYXJnaW4tYm90dG9tOi4zNzVyZW19Lm1iLTJ7bWFyZ2luLWJvdHRvbTouNXJlbX0ubWItM3ttYXJnaW4tYm90dG9tOi43NXJlbX0ubWItNHttYXJnaW4tYm90dG9tOjFyZW19Lm1iLTZ7bWFyZ2luLWJvdHRvbToxLjVyZW19Lm1iLTh7bWFyZ2luLWJvdHRvbToycmVtfS5tci1hdXRve21hcmdpbi1yaWdodDphdXRvfS5tdC0xe21hcmdpbi10b3A6LjI1cmVtfS5tdC0xXC41e21hcmdpbi10b3A6LjM3NXJlbX0ubXQtMnttYXJnaW4tdG9wOi41cmVtfS5tdC0ze21hcmdpbi10b3A6Ljc1cmVtfS5tdC01e21hcmdpbi10b3A6MS4yNXJlbX0ubXQtN3ttYXJnaW4tdG9wOjEuNzVyZW19LmJsb2Nre2Rpc3BsYXk6YmxvY2t9LmZsZXh7ZGlzcGxheTpmbGV4fS5pbmxpbmUtZmxleHtkaXNwbGF5OmlubGluZS1mbGV4fS5ncmlke2Rpc3BsYXk6Z3JpZH0uaC0xXC41e2hlaWdodDouMzc1cmVtfS5oLTZ7aGVpZ2h0OjEuNXJlbX0uaC1mdWxse2hlaWdodDoxMDAlfS5tYXgtaC00MHttYXgtaGVpZ2h0OjEwcmVtfS5tYXgtaC02NHttYXgtaGVpZ2h0OjE2cmVtfS5taW4taC1zY3JlZW57bWluLWhlaWdodDoxMDB2aH0udy0xNnt3aWR0aDo0cmVtfS53LTZ7d2lkdGg6MS41cmVtfS53LWF1dG97d2lkdGg6YXV0b30udy1mdWxse3dpZHRoOjEwMCV9Lm1pbi13LTB7bWluLXdpZHRoOjBweH0ubWluLXctXFsxMnJlbVxde21pbi13aWR0aDoxMnJlbX0ubWluLXctXFsxODBweFxde21pbi13aWR0aDoxODBweH0ubWF4LXctMnhse21heC13aWR0aDo0MnJlbX0ubWF4LXctM3hse21heC13aWR0aDo0OHJlbX0ubWF4LXctXFsxNnJlbVxde21heC13aWR0aDoxNnJlbX0ubWF4LXctXFsyMjBweFxde21heC13aWR0aDoyMjBweH0ubWF4LXctbWR7bWF4LXdpZHRoOjI4cmVtfS5tYXgtdy14bHttYXgtd2lkdGg6MzZyZW19LmZsZXgtMXtmbGV4OjEgMSAwJX0uc2hyaW5rLTB7ZmxleC1zaHJpbms6MH0uYmFzaXMtZnVsbHtmbGV4LWJhc2lzOjEwMCV9Li10cmFuc2xhdGUteS0xXC8yey0tdHctdHJhbnNsYXRlLXk6IC01MCU7dHJhbnNmb3JtOnRyYW5zbGF0ZSh2YXIoLS10dy10cmFuc2xhdGUteCksdmFyKC0tdHctdHJhbnNsYXRlLXkpKSByb3RhdGUodmFyKC0tdHctcm90YXRlKSkgc2tldyh2YXIoLS10dy1za2V3LXgpKSBza2V3WSh2YXIoLS10dy1za2V3LXkpKSBzY2FsZVgodmFyKC0tdHctc2NhbGUteCkpIHNjYWxlWSh2YXIoLS10dy1zY2FsZS15KSl9LmN1cnNvci1wb2ludGVye2N1cnNvcjpwb2ludGVyfS5saXN0LW5vbmV7bGlzdC1zdHlsZS10eXBlOm5vbmV9LmdyaWQtY29scy1cWzEyMHB4XzFmclxde2dyaWQtdGVtcGxhdGUtY29sdW1uczoxMjBweCAxZnJ9LmdyaWQtY29scy1cWzE2cHhfMWZyXF17Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjE2cHggMWZyfS5ncmlkLWNvbHMtXFsyNHB4XzFmclxde2dyaWQtdGVtcGxhdGUtY29sdW1uczoyNHB4IDFmcn0uZ3JpZC1jb2xzLVxbODhweF8xZnJcXXtncmlkLXRlbXBsYXRlLWNvbHVtbnM6ODhweCAxZnJ9LmZsZXgtY29se2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uZmxleC13cmFwe2ZsZXgtd3JhcDp3cmFwfS5wbGFjZS1pdGVtcy1jZW50ZXJ7cGxhY2UtaXRlbXM6Y2VudGVyfS5pdGVtcy1zdGFydHthbGlnbi1pdGVtczpmbGV4LXN0YXJ0fS5pdGVtcy1jZW50ZXJ7YWxpZ24taXRlbXM6Y2VudGVyfS5pdGVtcy1iYXNlbGluZXthbGlnbi1pdGVtczpiYXNlbGluZX0uanVzdGlmeS1lbmR7anVzdGlmeS1jb250ZW50OmZsZXgtZW5kfS5qdXN0aWZ5LWNlbnRlcntqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5qdXN0aWZ5LWJldHdlZW57anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59LmdhcC0wXC41e2dhcDouMTI1cmVtfS5nYXAtMXtnYXA6LjI1cmVtfS5nYXAtMVwuNXtnYXA6LjM3NXJlbX0uZ2FwLTJ7Z2FwOi41cmVtfS5nYXAtMlwuNXtnYXA6LjYyNXJlbX0uZ2FwLTN7Z2FwOi43NXJlbX0uZ2FwLTR7Z2FwOjFyZW19LmdhcC01e2dhcDoxLjI1cmVtfS5nYXAtNntnYXA6MS41cmVtfS5nYXAtOXtnYXA6Mi4yNXJlbX0uZ2FwLXgtMnstbW96LWNvbHVtbi1nYXA6LjVyZW07Y29sdW1uLWdhcDouNXJlbX0uZ2FwLXgtM3stbW96LWNvbHVtbi1nYXA6Ljc1cmVtO2NvbHVtbi1nYXA6Ljc1cmVtfS5nYXAteC00ey1tb3otY29sdW1uLWdhcDoxcmVtO2NvbHVtbi1nYXA6MXJlbX0uZ2FwLXgtNnstbW96LWNvbHVtbi1nYXA6MS41cmVtO2NvbHVtbi1nYXA6MS41cmVtfS5nYXAteS0xe3Jvdy1nYXA6LjI1cmVtfS5nYXAteS0ye3Jvdy1nYXA6LjVyZW19LmdhcC15LTN7cm93LWdhcDouNzVyZW19LmRpdmlkZS15Pjpub3QoW2hpZGRlbl0pfjpub3QoW2hpZGRlbl0pey0tdHctZGl2aWRlLXktcmV2ZXJzZTogMDtib3JkZXItdG9wLXdpZHRoOmNhbGMoMXB4ICogY2FsYygxIC0gdmFyKC0tdHctZGl2aWRlLXktcmV2ZXJzZSkpKTtib3JkZXItYm90dG9tLXdpZHRoOmNhbGMoMXB4ICogdmFyKC0tdHctZGl2aWRlLXktcmV2ZXJzZSkpfS5kaXZpZGUtbGluZT46bm90KFtoaWRkZW5dKX46bm90KFtoaWRkZW5dKXtib3JkZXItY29sb3I6I2ZmZmZmZjE0fS5qdXN0aWZ5LXNlbGYtc3RhcnR7anVzdGlmeS1zZWxmOnN0YXJ0fS5qdXN0aWZ5LXNlbGYtY2VudGVye2p1c3RpZnktc2VsZjpjZW50ZXJ9Lm92ZXJmbG93LWF1dG97b3ZlcmZsb3c6YXV0b30ub3ZlcmZsb3ctaGlkZGVue292ZXJmbG93OmhpZGRlbn0udHJ1bmNhdGV7b3ZlcmZsb3c6aGlkZGVuO3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwfS53aGl0ZXNwYWNlLW5vd3JhcHt3aGl0ZS1zcGFjZTpub3dyYXB9LnJvdW5kZWR7Ym9yZGVyLXJhZGl1czouMjVyZW19LnJvdW5kZWQtZnVsbHtib3JkZXItcmFkaXVzOjk5OTlweH0ucm91bmRlZC1sZ3tib3JkZXItcmFkaXVzOjEwcHh9LnJvdW5kZWQtbWR7Ym9yZGVyLXJhZGl1czo4cHh9LmJvcmRlcntib3JkZXItd2lkdGg6MXB4fS5ib3JkZXItMHtib3JkZXItd2lkdGg6MHB4fS5ib3JkZXItYntib3JkZXItYm90dG9tLXdpZHRoOjFweH0uYm9yZGVyLXR7Ym9yZGVyLXRvcC13aWR0aDoxcHh9LmJvcmRlci1saW5le2JvcmRlci1jb2xvcjojZmZmZmZmMTR9LmJvcmRlci12aW9sZXRcLzYwe2JvcmRlci1jb2xvcjojYTc4YmZhOTl9LmJnLWFtYmVyey0tdHctYmctb3BhY2l0eTogMTtiYWNrZ3JvdW5kLWNvbG9yOnJnYigyNDIgMTc3IDUyIC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpfS5iZy1hbWJlclwvMTB7YmFja2dyb3VuZC1jb2xvcjojZjJiMTM0MWF9LmJnLWFtYmVyXC9cWzBcLjE2XF17YmFja2dyb3VuZC1jb2xvcjojZjJiMTM0Mjl9LmJnLWdyZWVuey0tdHctYmctb3BhY2l0eTogMTtiYWNrZ3JvdW5kLWNvbG9yOnJnYig1MiAyMTEgMTUzIC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpfS5iZy1ncmVlblwvMTB7YmFja2dyb3VuZC1jb2xvcjojMzRkMzk5MWF9LmJnLWdyZWVuXC9cWzBcLjE2XF17YmFja2dyb3VuZC1jb2xvcjojMzRkMzk5Mjl9LmJnLWdyZWVuXC9cWzBcLjE4XF17YmFja2dyb3VuZC1jb2xvcjojMzRkMzk5MmV9LmJnLXJlZFwvMTB7YmFja2dyb3VuZC1jb2xvcjojZjg3MTcxMWF9LmJnLXJlZFwvMTV7YmFja2dyb3VuZC1jb2xvcjojZjg3MTcxMjZ9LmJnLXN1cmZhY2V7LS10dy1iZy1vcGFjaXR5OiAxO2JhY2tncm91bmQtY29sb3I6cmdiKDIwIDI2IDUxIC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpfS5iZy10cmFuc3BhcmVudHtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50fS5iZy12aW9sZXR7LS10dy1iZy1vcGFjaXR5OiAxO2JhY2tncm91bmQtY29sb3I6cmdiKDE2NyAxMzkgMjUwIC8gdmFyKC0tdHctYmctb3BhY2l0eSwgMSkpfS5iZy12aW9sZXRcLzEwe2JhY2tncm91bmQtY29sb3I6I2E3OGJmYTFhfS5iZy12aW9sZXRcL1xbMFwuMDdcXXtiYWNrZ3JvdW5kLWNvbG9yOiNhNzhiZmExMn0uYmctdmlvbGV0XC9cWzBcLjE4XF17YmFja2dyb3VuZC1jb2xvcjojYTc4YmZhMmV9LmJnLXdoaXRlXC8yMHtiYWNrZ3JvdW5kLWNvbG9yOiNmZmYzfS5iZy13aGl0ZVwvXFswXC4wNlxde2JhY2tncm91bmQtY29sb3I6I2ZmZmZmZjBmfS5iZy13aGl0ZVwvXFswXC4wN1xde2JhY2tncm91bmQtY29sb3I6I2ZmZmZmZjEyfS5iZy13aGl0ZVwvXFswXC4wOFxde2JhY2tncm91bmQtY29sb3I6I2ZmZmZmZjE0fS5iZy1ncmFkaWVudC10by1ye2JhY2tncm91bmQtaW1hZ2U6bGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LHZhcigtLXR3LWdyYWRpZW50LXN0b3BzKSl9LmZyb20tY3lhbnstLXR3LWdyYWRpZW50LWZyb206ICM2N0U4RjkgdmFyKC0tdHctZ3JhZGllbnQtZnJvbS1wb3NpdGlvbik7LS10dy1ncmFkaWVudC10bzogcmdiKDEwMyAyMzIgMjQ5IC8gMCkgdmFyKC0tdHctZ3JhZGllbnQtdG8tcG9zaXRpb24pOy0tdHctZ3JhZGllbnQtc3RvcHM6IHZhcigtLXR3LWdyYWRpZW50LWZyb20pLCB2YXIoLS10dy1ncmFkaWVudC10byl9LnRvLXZpb2xldHstLXR3LWdyYWRpZW50LXRvOiAjQTc4QkZBIHZhcigtLXR3LWdyYWRpZW50LXRvLXBvc2l0aW9uKX0ucC0xe3BhZGRpbmc6LjI1cmVtfS5wLTFcLjV7cGFkZGluZzouMzc1cmVtfS5wLTJ7cGFkZGluZzouNXJlbX0ucC0ze3BhZGRpbmc6Ljc1cmVtfS5wLTR7cGFkZGluZzoxcmVtfS5weC0we3BhZGRpbmctbGVmdDowO3BhZGRpbmctcmlnaHQ6MH0ucHgtMXtwYWRkaW5nLWxlZnQ6LjI1cmVtO3BhZGRpbmctcmlnaHQ6LjI1cmVtfS5weC0xXC41e3BhZGRpbmctbGVmdDouMzc1cmVtO3BhZGRpbmctcmlnaHQ6LjM3NXJlbX0ucHgtMntwYWRkaW5nLWxlZnQ6LjVyZW07cGFkZGluZy1yaWdodDouNXJlbX0ucHgtMlwuNXtwYWRkaW5nLWxlZnQ6LjYyNXJlbTtwYWRkaW5nLXJpZ2h0Oi42MjVyZW19LnB4LTN7cGFkZGluZy1sZWZ0Oi43NXJlbTtwYWRkaW5nLXJpZ2h0Oi43NXJlbX0ucHgtM1wuNXtwYWRkaW5nLWxlZnQ6Ljg3NXJlbTtwYWRkaW5nLXJpZ2h0Oi44NzVyZW19LnB4LTR7cGFkZGluZy1sZWZ0OjFyZW07cGFkZGluZy1yaWdodDoxcmVtfS5weS0we3BhZGRpbmctdG9wOjA7cGFkZGluZy1ib3R0b206MH0ucHktMFwuNXtwYWRkaW5nLXRvcDouMTI1cmVtO3BhZGRpbmctYm90dG9tOi4xMjVyZW19LnB5LTF7cGFkZGluZy10b3A6LjI1cmVtO3BhZGRpbmctYm90dG9tOi4yNXJlbX0ucHktMVwuNXtwYWRkaW5nLXRvcDouMzc1cmVtO3BhZGRpbmctYm90dG9tOi4zNzVyZW19LnB5LTEwe3BhZGRpbmctdG9wOjIuNXJlbTtwYWRkaW5nLWJvdHRvbToyLjVyZW19LnB5LTJ7cGFkZGluZy10b3A6LjVyZW07cGFkZGluZy1ib3R0b206LjVyZW19LnB5LTJcLjV7cGFkZGluZy10b3A6LjYyNXJlbTtwYWRkaW5nLWJvdHRvbTouNjI1cmVtfS5weS0ze3BhZGRpbmctdG9wOi43NXJlbTtwYWRkaW5nLWJvdHRvbTouNzVyZW19LnB5LTZ7cGFkZGluZy10b3A6MS41cmVtO3BhZGRpbmctYm90dG9tOjEuNXJlbX0ucHktN3twYWRkaW5nLXRvcDoxLjc1cmVtO3BhZGRpbmctYm90dG9tOjEuNzVyZW19LnB5LTh7cGFkZGluZy10b3A6MnJlbTtwYWRkaW5nLWJvdHRvbToycmVtfS5wYi0xe3BhZGRpbmctYm90dG9tOi4yNXJlbX0ucGwtOHtwYWRkaW5nLWxlZnQ6MnJlbX0ucHItM3twYWRkaW5nLXJpZ2h0Oi43NXJlbX0ucHQtMFwuNXtwYWRkaW5nLXRvcDouMTI1cmVtfS5wdC0xe3BhZGRpbmctdG9wOi4yNXJlbX0ucHQtMVwuNXtwYWRkaW5nLXRvcDouMzc1cmVtfS5wdC0ye3BhZGRpbmctdG9wOi41cmVtfS5wdC0ze3BhZGRpbmctdG9wOi43NXJlbX0udGV4dC1sZWZ0e3RleHQtYWxpZ246bGVmdH0udGV4dC1jZW50ZXJ7dGV4dC1hbGlnbjpjZW50ZXJ9LmZvbnQtbW9ub3tmb250LWZhbWlseTpKZXRCcmFpbnMgTW9ubyx1aS1tb25vc3BhY2UsU0ZNb25vLVJlZ3VsYXIsTWVubG8sbW9ub3NwYWNlfS50ZXh0LTN4bHtmb250LXNpemU6MS44NzVyZW07bGluZS1oZWlnaHQ6Mi4yNXJlbX0udGV4dC1cWzEwXC41cHhcXXtmb250LXNpemU6MTAuNXB4fS50ZXh0LVxbMTFweFxde2ZvbnQtc2l6ZToxMXB4fS50ZXh0LVxbMTJcLjVweFxde2ZvbnQtc2l6ZToxMi41cHh9LnRleHQtXFsxMnB4XF17Zm9udC1zaXplOjEycHh9LnRleHQtXFsxM1wuNXB4XF17Zm9udC1zaXplOjEzLjVweH0udGV4dC1cWzEzcHhcXXtmb250LXNpemU6MTNweH0udGV4dC1cWzE0cHhcXXtmb250LXNpemU6MTRweH0udGV4dC1cWzE1cHhcXXtmb250LXNpemU6MTVweH0udGV4dC1sZ3tmb250LXNpemU6MS4xMjVyZW07bGluZS1oZWlnaHQ6MS43NXJlbX0udGV4dC14bHtmb250LXNpemU6MS4yNXJlbTtsaW5lLWhlaWdodDoxLjc1cmVtfS5mb250LWJvbGR7Zm9udC13ZWlnaHQ6NzAwfS5mb250LW1lZGl1bXtmb250LXdlaWdodDo1MDB9LmZvbnQtbm9ybWFse2ZvbnQtd2VpZ2h0OjQwMH0uZm9udC1zZW1pYm9sZHtmb250LXdlaWdodDo2MDB9LmxlYWRpbmctcmVsYXhlZHtsaW5lLWhlaWdodDoxLjYyNX0udHJhY2tpbmctXFstMFwuMDJlbVxde2xldHRlci1zcGFjaW5nOi0uMDJlbX0udHJhY2tpbmctXFswXC4wMmVtXF17bGV0dGVyLXNwYWNpbmc6LjAyZW19LnRleHQtYW1iZXJ7LS10dy10ZXh0LW9wYWNpdHk6IDE7Y29sb3I6cmdiKDI0MiAxNzcgNTIgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKX0udGV4dC1mYWludHtjb2xvcjojZjVmM2ZmNjZ9LnRleHQtZmd7LS10dy10ZXh0LW9wYWNpdHk6IDE7Y29sb3I6cmdiKDI0NSAyNDMgMjU1IC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSl9LnRleHQtZ3JlZW57LS10dy10ZXh0LW9wYWNpdHk6IDE7Y29sb3I6cmdiKDUyIDIxMSAxNTMgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKX0udGV4dC1pbmt7LS10dy10ZXh0LW9wYWNpdHk6IDE7Y29sb3I6cmdiKDExIDE2IDMyIC8gdmFyKC0tdHctdGV4dC1vcGFjaXR5LCAxKSl9LnRleHQtbXV0ZWR7Y29sb3I6I2Y1ZjNmZjllfS50ZXh0LXJlZHstLXR3LXRleHQtb3BhY2l0eTogMTtjb2xvcjpyZ2IoMjQ4IDExMyAxMTMgLyB2YXIoLS10dy10ZXh0LW9wYWNpdHksIDEpKX0udGV4dC12aW9sZXQtc3Ryb25ney0tdHctdGV4dC1vcGFjaXR5OiAxO2NvbG9yOnJnYigxOTYgMTgxIDI1MyAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpfS5saW5lLXRocm91Z2h7dGV4dC1kZWNvcmF0aW9uLWxpbmU6bGluZS10aHJvdWdofS5kZWNvcmF0aW9uLXdoaXRlXC8zMHt0ZXh0LWRlY29yYXRpb24tY29sb3I6I2ZmZmZmZjRkfS5hY2NlbnQtdmlvbGV0e2FjY2VudC1jb2xvcjojQTc4QkZBfS5maWx0ZXJ7ZmlsdGVyOnZhcigtLXR3LWJsdXIpIHZhcigtLXR3LWJyaWdodG5lc3MpIHZhcigtLXR3LWNvbnRyYXN0KSB2YXIoLS10dy1ncmF5c2NhbGUpIHZhcigtLXR3LWh1ZS1yb3RhdGUpIHZhcigtLXR3LWludmVydCkgdmFyKC0tdHctc2F0dXJhdGUpIHZhcigtLXR3LXNlcGlhKSB2YXIoLS10dy1kcm9wLXNoYWRvdyl9LnRyYW5zaXRpb24tXFt3aWR0aFxde3RyYW5zaXRpb24tcHJvcGVydHk6d2lkdGg7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC40LDAsLjIsMSk7dHJhbnNpdGlvbi1kdXJhdGlvbjouMTVzfS50cmFuc2l0aW9uLWNvbG9yc3t0cmFuc2l0aW9uLXByb3BlcnR5OmNvbG9yLGJhY2tncm91bmQtY29sb3IsYm9yZGVyLWNvbG9yLHRleHQtZGVjb3JhdGlvbi1jb2xvcixmaWxsLHN0cm9rZTt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjQsMCwuMiwxKTt0cmFuc2l0aW9uLWR1cmF0aW9uOi4xNXN9LmR1cmF0aW9uLTUwMHt0cmFuc2l0aW9uLWR1cmF0aW9uOi41c31Aa2V5ZnJhbWVzIHJpZnQtY3Jvc3N7MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZSgtOHB4KTtvcGFjaXR5Oi4zfTUwJXt0cmFuc2Zvcm06dHJhbnNsYXRlKDApO29wYWNpdHk6MX10b3t0cmFuc2Zvcm06dHJhbnNsYXRlKDhweCk7b3BhY2l0eTouM319LnJpZnQtYW5pbWF0ZWQgLnJpZnQtYXJyb3d7YW5pbWF0aW9uOnJpZnQtY3Jvc3MgMS42cyBlYXNlLWluLW91dCBpbmZpbml0ZX1AbWVkaWEocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjpyZWR1Y2Upey5yaWZ0LWFuaW1hdGVkIC5yaWZ0LWFycm93e2FuaW1hdGlvbjpub25lfSp7dHJhbnNpdGlvbi1kdXJhdGlvbjouMDFtcyFpbXBvcnRhbnQ7YW5pbWF0aW9uLWR1cmF0aW9uOi4wMW1zIWltcG9ydGFudH19LnBsYWNlaG9sZGVyXDpmb250LXNhbnM6Oi1tb3otcGxhY2Vob2xkZXJ7Zm9udC1mYW1pbHk6RE0gU2Fucyx1aS1zYW5zLXNlcmlmLHN5c3RlbS11aSwtYXBwbGUtc3lzdGVtLFNlZ29lIFVJLFJvYm90byxzYW5zLXNlcmlmfS5wbGFjZWhvbGRlclw6Zm9udC1zYW5zOjpwbGFjZWhvbGRlcntmb250LWZhbWlseTpETSBTYW5zLHVpLXNhbnMtc2VyaWYsc3lzdGVtLXVpLC1hcHBsZS1zeXN0ZW0sU2Vnb2UgVUksUm9ib3RvLHNhbnMtc2VyaWZ9LnBsYWNlaG9sZGVyXDp0ZXh0LWZhaW50OjotbW96LXBsYWNlaG9sZGVye2NvbG9yOiNmNWYzZmY2Nn0ucGxhY2Vob2xkZXJcOnRleHQtZmFpbnQ6OnBsYWNlaG9sZGVye2NvbG9yOiNmNWYzZmY2Nn0uaG92ZXJcOmJvcmRlci13aGl0ZVwvXFswXC4xNFxdOmhvdmVye2JvcmRlci1jb2xvcjojZmZmZmZmMjR9LmhvdmVyXDpiZy1yZWRcLzI1OmhvdmVye2JhY2tncm91bmQtY29sb3I6I2Y4NzE3MTQwfS5ob3Zlclw6YmctdmlvbGV0LXN0cm9uZzpob3ZlcnstLXR3LWJnLW9wYWNpdHk6IDE7YmFja2dyb3VuZC1jb2xvcjpyZ2IoMTk2IDE4MSAyNTMgLyB2YXIoLS10dy1iZy1vcGFjaXR5LCAxKSl9LmhvdmVyXDpiZy13aGl0ZVwvXFswXC4wNlxdOmhvdmVye2JhY2tncm91bmQtY29sb3I6I2ZmZmZmZjBmfS5ob3Zlclw6Ymctd2hpdGVcL1xbMFwuMDhcXTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYxNH0uaG92ZXJcOmJnLXdoaXRlXC9cWzBcLjExXF06aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMWN9LmhvdmVyXDp0ZXh0LWZnOmhvdmVyey0tdHctdGV4dC1vcGFjaXR5OiAxO2NvbG9yOnJnYigyNDUgMjQzIDI1NSAvIHZhcigtLXR3LXRleHQtb3BhY2l0eSwgMSkpfS5ob3Zlclw6dW5kZXJsaW5lOmhvdmVye3RleHQtZGVjb3JhdGlvbi1saW5lOnVuZGVybGluZX0uaG92ZXJcOm9wYWNpdHktOTA6aG92ZXJ7b3BhY2l0eTouOX0uZm9jdXMtdmlzaWJsZVw6Ym9yZGVyLXZpb2xldFwvNjA6Zm9jdXMtdmlzaWJsZXtib3JkZXItY29sb3I6I2E3OGJmYTk5fS5kaXNhYmxlZFw6b3BhY2l0eS01MDpkaXNhYmxlZHtvcGFjaXR5Oi41fUBtZWRpYShtaW4td2lkdGg6NjQwcHgpey5zbVw6cC01e3BhZGRpbmc6MS4yNXJlbX0uc21cOnB4LTZ7cGFkZGluZy1sZWZ0OjEuNXJlbTtwYWRkaW5nLXJpZ2h0OjEuNXJlbX19Cg==" },
37038
+ "/assets/index-DQMDRvsq.js": { type: "text/javascript; charset=utf-8", base64: "dmFyIERmPXI9Pnt0aHJvdyBUeXBlRXJyb3Iocil9O3ZhciBiYT0ocixzLGwpPT5zLmhhcyhyKXx8RGYoIkNhbm5vdCAiK2wpO3ZhciB5PShyLHMsbCk9PihiYShyLHMsInJlYWQgZnJvbSBwcml2YXRlIGZpZWxkIiksbD9sLmNhbGwocik6cy5nZXQocikpLG5lPShyLHMsbCk9PnMuaGFzKHIpP0RmKCJDYW5ub3QgYWRkIHRoZSBzYW1lIHByaXZhdGUgbWVtYmVyIG1vcmUgdGhhbiBvbmNlIik6cyBpbnN0YW5jZW9mIFdlYWtTZXQ/cy5hZGQocik6cy5zZXQocixsKSxXPShyLHMsbCx1KT0+KGJhKHIscywid3JpdGUgdG8gcHJpdmF0ZSBmaWVsZCIpLHU/dS5jYWxsKHIsbCk6cy5zZXQocixsKSxsKSxjZT0ocixzLGwpPT4oYmEocixzLCJhY2Nlc3MgcHJpdmF0ZSBtZXRob2QiKSxsKTt2YXIgX2w9KHIscyxsLHUpPT4oe3NldCBfKGQpe1cocixzLGQsbCl9LGdldCBfKCl7cmV0dXJuIHkocixzLHUpfX0pOyhmdW5jdGlvbigpe2NvbnN0IHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGluayIpLnJlbExpc3Q7aWYocyYmcy5zdXBwb3J0cyYmcy5zdXBwb3J0cygibW9kdWxlcHJlbG9hZCIpKXJldHVybjtmb3IoY29uc3QgZCBvZiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdsaW5rW3JlbD0ibW9kdWxlcHJlbG9hZCJdJykpdShkKTtuZXcgTXV0YXRpb25PYnNlcnZlcihkPT57Zm9yKGNvbnN0IGggb2YgZClpZihoLnR5cGU9PT0iY2hpbGRMaXN0Iilmb3IoY29uc3QgcCBvZiBoLmFkZGVkTm9kZXMpcC50YWdOYW1lPT09IkxJTksiJiZwLnJlbD09PSJtb2R1bGVwcmVsb2FkIiYmdShwKX0pLm9ic2VydmUoZG9jdW1lbnQse2NoaWxkTGlzdDohMCxzdWJ0cmVlOiEwfSk7ZnVuY3Rpb24gbChkKXtjb25zdCBoPXt9O3JldHVybiBkLmludGVncml0eSYmKGguaW50ZWdyaXR5PWQuaW50ZWdyaXR5KSxkLnJlZmVycmVyUG9saWN5JiYoaC5yZWZlcnJlclBvbGljeT1kLnJlZmVycmVyUG9saWN5KSxkLmNyb3NzT3JpZ2luPT09InVzZS1jcmVkZW50aWFscyI/aC5jcmVkZW50aWFscz0iaW5jbHVkZSI6ZC5jcm9zc09yaWdpbj09PSJhbm9ueW1vdXMiP2guY3JlZGVudGlhbHM9Im9taXQiOmguY3JlZGVudGlhbHM9InNhbWUtb3JpZ2luIixofWZ1bmN0aW9uIHUoZCl7aWYoZC5lcClyZXR1cm47ZC5lcD0hMDtjb25zdCBoPWwoZCk7ZmV0Y2goZC5ocmVmLGgpfX0pKCk7ZnVuY3Rpb24gU2gocil7cmV0dXJuIHImJnIuX19lc01vZHVsZSYmT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHIsImRlZmF1bHQiKT9yLmRlZmF1bHQ6cn12YXIgQmE9e2V4cG9ydHM6e319LFpzPXt9LEhhPXtleHBvcnRzOnt9fSxmZT17fTsvKioKICogQGxpY2Vuc2UgUmVhY3QKICogcmVhY3QucHJvZHVjdGlvbi5taW4uanMKICoKICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuCiAqCiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZQogKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuCiAqL3ZhciBPZjtmdW5jdGlvbiBoZygpe2lmKE9mKXJldHVybiBmZTtPZj0xO3ZhciByPVN5bWJvbC5mb3IoInJlYWN0LmVsZW1lbnQiKSxzPVN5bWJvbC5mb3IoInJlYWN0LnBvcnRhbCIpLGw9U3ltYm9sLmZvcigicmVhY3QuZnJhZ21lbnQiKSx1PVN5bWJvbC5mb3IoInJlYWN0LnN0cmljdF9tb2RlIiksZD1TeW1ib2wuZm9yKCJyZWFjdC5wcm9maWxlciIpLGg9U3ltYm9sLmZvcigicmVhY3QucHJvdmlkZXIiKSxwPVN5bWJvbC5mb3IoInJlYWN0LmNvbnRleHQiKSxtPVN5bWJvbC5mb3IoInJlYWN0LmZvcndhcmRfcmVmIiksdj1TeW1ib2wuZm9yKCJyZWFjdC5zdXNwZW5zZSIpLFM9U3ltYm9sLmZvcigicmVhY3QubWVtbyIpLEU9U3ltYm9sLmZvcigicmVhY3QubGF6eSIpLHg9U3ltYm9sLml0ZXJhdG9yO2Z1bmN0aW9uIFQoTil7cmV0dXJuIE49PT1udWxsfHx0eXBlb2YgTiE9Im9iamVjdCI/bnVsbDooTj14JiZOW3hdfHxOWyJAQGl0ZXJhdG9yIl0sdHlwZW9mIE49PSJmdW5jdGlvbiI/TjpudWxsKX12YXIgTz17aXNNb3VudGVkOmZ1bmN0aW9uKCl7cmV0dXJuITF9LGVucXVldWVGb3JjZVVwZGF0ZTpmdW5jdGlvbigpe30sZW5xdWV1ZVJlcGxhY2VTdGF0ZTpmdW5jdGlvbigpe30sZW5xdWV1ZVNldFN0YXRlOmZ1bmN0aW9uKCl7fX0sQT1PYmplY3QuYXNzaWduLEw9e307ZnVuY3Rpb24gUChOLEksZGUpe3RoaXMucHJvcHM9Tix0aGlzLmNvbnRleHQ9SSx0aGlzLnJlZnM9TCx0aGlzLnVwZGF0ZXI9ZGV8fE99UC5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudD17fSxQLnByb3RvdHlwZS5zZXRTdGF0ZT1mdW5jdGlvbihOLEkpe2lmKHR5cGVvZiBOIT0ib2JqZWN0IiYmdHlwZW9mIE4hPSJmdW5jdGlvbiImJk4hPW51bGwpdGhyb3cgRXJyb3IoInNldFN0YXRlKC4uLik6IHRha2VzIGFuIG9iamVjdCBvZiBzdGF0ZSB2YXJpYWJsZXMgdG8gdXBkYXRlIG9yIGEgZnVuY3Rpb24gd2hpY2ggcmV0dXJucyBhbiBvYmplY3Qgb2Ygc3RhdGUgdmFyaWFibGVzLiIpO3RoaXMudXBkYXRlci5lbnF1ZXVlU2V0U3RhdGUodGhpcyxOLEksInNldFN0YXRlIil9LFAucHJvdG90eXBlLmZvcmNlVXBkYXRlPWZ1bmN0aW9uKE4pe3RoaXMudXBkYXRlci5lbnF1ZXVlRm9yY2VVcGRhdGUodGhpcyxOLCJmb3JjZVVwZGF0ZSIpfTtmdW5jdGlvbiBVKCl7fVUucHJvdG90eXBlPVAucHJvdG90eXBlO2Z1bmN0aW9uIFEoTixJLGRlKXt0aGlzLnByb3BzPU4sdGhpcy5jb250ZXh0PUksdGhpcy5yZWZzPUwsdGhpcy51cGRhdGVyPWRlfHxPfXZhciBiPVEucHJvdG90eXBlPW5ldyBVO2IuY29uc3RydWN0b3I9USxBKGIsUC5wcm90b3R5cGUpLGIuaXNQdXJlUmVhY3RDb21wb25lbnQ9ITA7dmFyIFY9QXJyYXkuaXNBcnJheSxIPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkscmU9e2N1cnJlbnQ6bnVsbH0sdGU9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291cmNlOiEwfTtmdW5jdGlvbiBvZShOLEksZGUpe3ZhciBwZSx5ZT17fSx4ZT1udWxsLFJlPW51bGw7aWYoSSE9bnVsbClmb3IocGUgaW4gSS5yZWYhPT12b2lkIDAmJihSZT1JLnJlZiksSS5rZXkhPT12b2lkIDAmJih4ZT0iIitJLmtleSksSSlILmNhbGwoSSxwZSkmJiF0ZS5oYXNPd25Qcm9wZXJ0eShwZSkmJih5ZVtwZV09SVtwZV0pO3ZhciBDZT1hcmd1bWVudHMubGVuZ3RoLTI7aWYoQ2U9PT0xKXllLmNoaWxkcmVuPWRlO2Vsc2UgaWYoMTxDZSl7Zm9yKHZhciBMZT1BcnJheShDZSkseXQ9MDt5dDxDZTt5dCsrKUxlW3l0XT1hcmd1bWVudHNbeXQrMl07eWUuY2hpbGRyZW49TGV9aWYoTiYmTi5kZWZhdWx0UHJvcHMpZm9yKHBlIGluIENlPU4uZGVmYXVsdFByb3BzLENlKXllW3BlXT09PXZvaWQgMCYmKHllW3BlXT1DZVtwZV0pO3JldHVybnskJHR5cGVvZjpyLHR5cGU6TixrZXk6eGUscmVmOlJlLHByb3BzOnllLF9vd25lcjpyZS5jdXJyZW50fX1mdW5jdGlvbiB1ZShOLEkpe3JldHVybnskJHR5cGVvZjpyLHR5cGU6Ti50eXBlLGtleTpJLHJlZjpOLnJlZixwcm9wczpOLnByb3BzLF9vd25lcjpOLl9vd25lcn19ZnVuY3Rpb24gaGUoTil7cmV0dXJuIHR5cGVvZiBOPT0ib2JqZWN0IiYmTiE9PW51bGwmJk4uJCR0eXBlb2Y9PT1yfWZ1bmN0aW9uIGJlKE4pe3ZhciBJPXsiPSI6Ij0wIiwiOiI6Ij0yIn07cmV0dXJuIiQiK04ucmVwbGFjZSgvWz06XS9nLGZ1bmN0aW9uKGRlKXtyZXR1cm4gSVtkZV19KX12YXIgJGU9L1wvKy9nO2Z1bmN0aW9uIF9lKE4sSSl7cmV0dXJuIHR5cGVvZiBOPT0ib2JqZWN0IiYmTiE9PW51bGwmJk4ua2V5IT1udWxsP2JlKCIiK04ua2V5KTpJLnRvU3RyaW5nKDM2KX1mdW5jdGlvbiBaKE4sSSxkZSxwZSx5ZSl7dmFyIHhlPXR5cGVvZiBOOyh4ZT09PSJ1bmRlZmluZWQifHx4ZT09PSJib29sZWFuIikmJihOPW51bGwpO3ZhciBSZT0hMTtpZihOPT09bnVsbClSZT0hMDtlbHNlIHN3aXRjaCh4ZSl7Y2FzZSJzdHJpbmciOmNhc2UibnVtYmVyIjpSZT0hMDticmVhaztjYXNlIm9iamVjdCI6c3dpdGNoKE4uJCR0eXBlb2Ype2Nhc2UgcjpjYXNlIHM6UmU9ITB9fWlmKFJlKXJldHVybiBSZT1OLHllPXllKFJlKSxOPXBlPT09IiI/Ii4iK19lKFJlLDApOnBlLFYoeWUpPyhkZT0iIixOIT1udWxsJiYoZGU9Ti5yZXBsYWNlKCRlLCIkJi8iKSsiLyIpLFooeWUsSSxkZSwiIixmdW5jdGlvbih5dCl7cmV0dXJuIHl0fSkpOnllIT1udWxsJiYoaGUoeWUpJiYoeWU9dWUoeWUsZGUrKCF5ZS5rZXl8fFJlJiZSZS5rZXk9PT15ZS5rZXk/IiI6KCIiK3llLmtleSkucmVwbGFjZSgkZSwiJCYvIikrIi8iKStOKSksSS5wdXNoKHllKSksMTtpZihSZT0wLHBlPXBlPT09IiI/Ii4iOnBlKyI6IixWKE4pKWZvcih2YXIgQ2U9MDtDZTxOLmxlbmd0aDtDZSsrKXt4ZT1OW0NlXTt2YXIgTGU9cGUrX2UoeGUsQ2UpO1JlKz1aKHhlLEksZGUsTGUseWUpfWVsc2UgaWYoTGU9VChOKSx0eXBlb2YgTGU9PSJmdW5jdGlvbiIpZm9yKE49TGUuY2FsbChOKSxDZT0wOyEoeGU9Ti5uZXh0KCkpLmRvbmU7KXhlPXhlLnZhbHVlLExlPXBlK19lKHhlLENlKyspLFJlKz1aKHhlLEksZGUsTGUseWUpO2Vsc2UgaWYoeGU9PT0ib2JqZWN0Iil0aHJvdyBJPVN0cmluZyhOKSxFcnJvcigiT2JqZWN0cyBhcmUgbm90IHZhbGlkIGFzIGEgUmVhY3QgY2hpbGQgKGZvdW5kOiAiKyhJPT09IltvYmplY3QgT2JqZWN0XSI/Im9iamVjdCB3aXRoIGtleXMgeyIrT2JqZWN0LmtleXMoTikuam9pbigiLCAiKSsifSI6SSkrIikuIElmIHlvdSBtZWFudCB0byByZW5kZXIgYSBjb2xsZWN0aW9uIG9mIGNoaWxkcmVuLCB1c2UgYW4gYXJyYXkgaW5zdGVhZC4iKTtyZXR1cm4gUmV9ZnVuY3Rpb24gc2UoTixJLGRlKXtpZihOPT1udWxsKXJldHVybiBOO3ZhciBwZT1bXSx5ZT0wO3JldHVybiBaKE4scGUsIiIsIiIsZnVuY3Rpb24oeGUpe3JldHVybiBJLmNhbGwoZGUseGUseWUrKyl9KSxwZX1mdW5jdGlvbiBTZShOKXtpZihOLl9zdGF0dXM9PT0tMSl7dmFyIEk9Ti5fcmVzdWx0O0k9SSgpLEkudGhlbihmdW5jdGlvbihkZSl7KE4uX3N0YXR1cz09PTB8fE4uX3N0YXR1cz09PS0xKSYmKE4uX3N0YXR1cz0xLE4uX3Jlc3VsdD1kZSl9LGZ1bmN0aW9uKGRlKXsoTi5fc3RhdHVzPT09MHx8Ti5fc3RhdHVzPT09LTEpJiYoTi5fc3RhdHVzPTIsTi5fcmVzdWx0PWRlKX0pLE4uX3N0YXR1cz09PS0xJiYoTi5fc3RhdHVzPTAsTi5fcmVzdWx0PUkpfWlmKE4uX3N0YXR1cz09PTEpcmV0dXJuIE4uX3Jlc3VsdC5kZWZhdWx0O3Rocm93IE4uX3Jlc3VsdH12YXIgRWU9e2N1cnJlbnQ6bnVsbH0sRD17dHJhbnNpdGlvbjpudWxsfSxZPXtSZWFjdEN1cnJlbnREaXNwYXRjaGVyOkVlLFJlYWN0Q3VycmVudEJhdGNoQ29uZmlnOkQsUmVhY3RDdXJyZW50T3duZXI6cmV9O2Z1bmN0aW9uIHEoKXt0aHJvdyBFcnJvcigiYWN0KC4uLikgaXMgbm90IHN1cHBvcnRlZCBpbiBwcm9kdWN0aW9uIGJ1aWxkcyBvZiBSZWFjdC4iKX1yZXR1cm4gZmUuQ2hpbGRyZW49e21hcDpzZSxmb3JFYWNoOmZ1bmN0aW9uKE4sSSxkZSl7c2UoTixmdW5jdGlvbigpe0kuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxkZSl9LGNvdW50OmZ1bmN0aW9uKE4pe3ZhciBJPTA7cmV0dXJuIHNlKE4sZnVuY3Rpb24oKXtJKyt9KSxJfSx0b0FycmF5OmZ1bmN0aW9uKE4pe3JldHVybiBzZShOLGZ1bmN0aW9uKEkpe3JldHVybiBJfSl8fFtdfSxvbmx5OmZ1bmN0aW9uKE4pe2lmKCFoZShOKSl0aHJvdyBFcnJvcigiUmVhY3QuQ2hpbGRyZW4ub25seSBleHBlY3RlZCB0byByZWNlaXZlIGEgc2luZ2xlIFJlYWN0IGVsZW1lbnQgY2hpbGQuIik7cmV0dXJuIE59fSxmZS5Db21wb25lbnQ9UCxmZS5GcmFnbWVudD1sLGZlLlByb2ZpbGVyPWQsZmUuUHVyZUNvbXBvbmVudD1RLGZlLlN0cmljdE1vZGU9dSxmZS5TdXNwZW5zZT12LGZlLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEPVksZmUuYWN0PXEsZmUuY2xvbmVFbGVtZW50PWZ1bmN0aW9uKE4sSSxkZSl7aWYoTj09bnVsbCl0aHJvdyBFcnJvcigiUmVhY3QuY2xvbmVFbGVtZW50KC4uLik6IFRoZSBhcmd1bWVudCBtdXN0IGJlIGEgUmVhY3QgZWxlbWVudCwgYnV0IHlvdSBwYXNzZWQgIitOKyIuIik7dmFyIHBlPUEoe30sTi5wcm9wcykseWU9Ti5rZXkseGU9Ti5yZWYsUmU9Ti5fb3duZXI7aWYoSSE9bnVsbCl7aWYoSS5yZWYhPT12b2lkIDAmJih4ZT1JLnJlZixSZT1yZS5jdXJyZW50KSxJLmtleSE9PXZvaWQgMCYmKHllPSIiK0kua2V5KSxOLnR5cGUmJk4udHlwZS5kZWZhdWx0UHJvcHMpdmFyIENlPU4udHlwZS5kZWZhdWx0UHJvcHM7Zm9yKExlIGluIEkpSC5jYWxsKEksTGUpJiYhdGUuaGFzT3duUHJvcGVydHkoTGUpJiYocGVbTGVdPUlbTGVdPT09dm9pZCAwJiZDZSE9PXZvaWQgMD9DZVtMZV06SVtMZV0pfXZhciBMZT1hcmd1bWVudHMubGVuZ3RoLTI7aWYoTGU9PT0xKXBlLmNoaWxkcmVuPWRlO2Vsc2UgaWYoMTxMZSl7Q2U9QXJyYXkoTGUpO2Zvcih2YXIgeXQ9MDt5dDxMZTt5dCsrKUNlW3l0XT1hcmd1bWVudHNbeXQrMl07cGUuY2hpbGRyZW49Q2V9cmV0dXJueyQkdHlwZW9mOnIsdHlwZTpOLnR5cGUsa2V5OnllLHJlZjp4ZSxwcm9wczpwZSxfb3duZXI6UmV9fSxmZS5jcmVhdGVDb250ZXh0PWZ1bmN0aW9uKE4pe3JldHVybiBOPXskJHR5cGVvZjpwLF9jdXJyZW50VmFsdWU6TixfY3VycmVudFZhbHVlMjpOLF90aHJlYWRDb3VudDowLFByb3ZpZGVyOm51bGwsQ29uc3VtZXI6bnVsbCxfZGVmYXVsdFZhbHVlOm51bGwsX2dsb2JhbE5hbWU6bnVsbH0sTi5Qcm92aWRlcj17JCR0eXBlb2Y6aCxfY29udGV4dDpOfSxOLkNvbnN1bWVyPU59LGZlLmNyZWF0ZUVsZW1lbnQ9b2UsZmUuY3JlYXRlRmFjdG9yeT1mdW5jdGlvbihOKXt2YXIgST1vZS5iaW5kKG51bGwsTik7cmV0dXJuIEkudHlwZT1OLEl9LGZlLmNyZWF0ZVJlZj1mdW5jdGlvbigpe3JldHVybntjdXJyZW50Om51bGx9fSxmZS5mb3J3YXJkUmVmPWZ1bmN0aW9uKE4pe3JldHVybnskJHR5cGVvZjptLHJlbmRlcjpOfX0sZmUuaXNWYWxpZEVsZW1lbnQ9aGUsZmUubGF6eT1mdW5jdGlvbihOKXtyZXR1cm57JCR0eXBlb2Y6RSxfcGF5bG9hZDp7X3N0YXR1czotMSxfcmVzdWx0Ok59LF9pbml0OlNlfX0sZmUubWVtbz1mdW5jdGlvbihOLEkpe3JldHVybnskJHR5cGVvZjpTLHR5cGU6Tixjb21wYXJlOkk9PT12b2lkIDA/bnVsbDpJfX0sZmUuc3RhcnRUcmFuc2l0aW9uPWZ1bmN0aW9uKE4pe3ZhciBJPUQudHJhbnNpdGlvbjtELnRyYW5zaXRpb249e307dHJ5e04oKX1maW5hbGx5e0QudHJhbnNpdGlvbj1JfX0sZmUudW5zdGFibGVfYWN0PXEsZmUudXNlQ2FsbGJhY2s9ZnVuY3Rpb24oTixJKXtyZXR1cm4gRWUuY3VycmVudC51c2VDYWxsYmFjayhOLEkpfSxmZS51c2VDb250ZXh0PWZ1bmN0aW9uKE4pe3JldHVybiBFZS5jdXJyZW50LnVzZUNvbnRleHQoTil9LGZlLnVzZURlYnVnVmFsdWU9ZnVuY3Rpb24oKXt9LGZlLnVzZURlZmVycmVkVmFsdWU9ZnVuY3Rpb24oTil7cmV0dXJuIEVlLmN1cnJlbnQudXNlRGVmZXJyZWRWYWx1ZShOKX0sZmUudXNlRWZmZWN0PWZ1bmN0aW9uKE4sSSl7cmV0dXJuIEVlLmN1cnJlbnQudXNlRWZmZWN0KE4sSSl9LGZlLnVzZUlkPWZ1bmN0aW9uKCl7cmV0dXJuIEVlLmN1cnJlbnQudXNlSWQoKX0sZmUudXNlSW1wZXJhdGl2ZUhhbmRsZT1mdW5jdGlvbihOLEksZGUpe3JldHVybiBFZS5jdXJyZW50LnVzZUltcGVyYXRpdmVIYW5kbGUoTixJLGRlKX0sZmUudXNlSW5zZXJ0aW9uRWZmZWN0PWZ1bmN0aW9uKE4sSSl7cmV0dXJuIEVlLmN1cnJlbnQudXNlSW5zZXJ0aW9uRWZmZWN0KE4sSSl9LGZlLnVzZUxheW91dEVmZmVjdD1mdW5jdGlvbihOLEkpe3JldHVybiBFZS5jdXJyZW50LnVzZUxheW91dEVmZmVjdChOLEkpfSxmZS51c2VNZW1vPWZ1bmN0aW9uKE4sSSl7cmV0dXJuIEVlLmN1cnJlbnQudXNlTWVtbyhOLEkpfSxmZS51c2VSZWR1Y2VyPWZ1bmN0aW9uKE4sSSxkZSl7cmV0dXJuIEVlLmN1cnJlbnQudXNlUmVkdWNlcihOLEksZGUpfSxmZS51c2VSZWY9ZnVuY3Rpb24oTil7cmV0dXJuIEVlLmN1cnJlbnQudXNlUmVmKE4pfSxmZS51c2VTdGF0ZT1mdW5jdGlvbihOKXtyZXR1cm4gRWUuY3VycmVudC51c2VTdGF0ZShOKX0sZmUudXNlU3luY0V4dGVybmFsU3RvcmU9ZnVuY3Rpb24oTixJLGRlKXtyZXR1cm4gRWUuY3VycmVudC51c2VTeW5jRXh0ZXJuYWxTdG9yZShOLEksZGUpfSxmZS51c2VUcmFuc2l0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIEVlLmN1cnJlbnQudXNlVHJhbnNpdGlvbigpfSxmZS52ZXJzaW9uPSIxOC4zLjEiLGZlfXZhciBJZjtmdW5jdGlvbiBTdSgpe3JldHVybiBJZnx8KElmPTEsSGEuZXhwb3J0cz1oZygpKSxIYS5leHBvcnRzfS8qKgogKiBAbGljZW5zZSBSZWFjdAogKiByZWFjdC1qc3gtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcwogKgogKiBDb3B5cmlnaHQgKGMpIEZhY2Vib29rLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4KICoKICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlCiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4KICovdmFyIE1mO2Z1bmN0aW9uIHBnKCl7aWYoTWYpcmV0dXJuIFpzO01mPTE7dmFyIHI9U3UoKSxzPVN5bWJvbC5mb3IoInJlYWN0LmVsZW1lbnQiKSxsPVN5bWJvbC5mb3IoInJlYWN0LmZyYWdtZW50IiksdT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LGQ9ci5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRC5SZWFjdEN1cnJlbnRPd25lcixoPXtrZXk6ITAscmVmOiEwLF9fc2VsZjohMCxfX3NvdXJjZTohMH07ZnVuY3Rpb24gcChtLHYsUyl7dmFyIEUseD17fSxUPW51bGwsTz1udWxsO1MhPT12b2lkIDAmJihUPSIiK1MpLHYua2V5IT09dm9pZCAwJiYoVD0iIit2LmtleSksdi5yZWYhPT12b2lkIDAmJihPPXYucmVmKTtmb3IoRSBpbiB2KXUuY2FsbCh2LEUpJiYhaC5oYXNPd25Qcm9wZXJ0eShFKSYmKHhbRV09dltFXSk7aWYobSYmbS5kZWZhdWx0UHJvcHMpZm9yKEUgaW4gdj1tLmRlZmF1bHRQcm9wcyx2KXhbRV09PT12b2lkIDAmJih4W0VdPXZbRV0pO3JldHVybnskJHR5cGVvZjpzLHR5cGU6bSxrZXk6VCxyZWY6Tyxwcm9wczp4LF9vd25lcjpkLmN1cnJlbnR9fXJldHVybiBacy5GcmFnbWVudD1sLFpzLmpzeD1wLFpzLmpzeHM9cCxac312YXIgemY7ZnVuY3Rpb24gbWcoKXtyZXR1cm4gemZ8fCh6Zj0xLEJhLmV4cG9ydHM9cGcoKSksQmEuZXhwb3J0c312YXIgYz1tZygpLGo9U3UoKTtjb25zdCBnZz1TaChqKTt2YXIgVGw9e30sUWE9e2V4cG9ydHM6e319LHZ0PXt9LHFhPXtleHBvcnRzOnt9fSxXYT17fTsvKioKICogQGxpY2Vuc2UgUmVhY3QKICogc2NoZWR1bGVyLnByb2R1Y3Rpb24ubWluLmpzCiAqCiAqIENvcHlyaWdodCAoYykgRmFjZWJvb2ssIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLgogKgogKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGUKICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLgogKi92YXIgQWY7ZnVuY3Rpb24gdmcoKXtyZXR1cm4gQWZ8fChBZj0xLChmdW5jdGlvbihyKXtmdW5jdGlvbiBzKEQsWSl7dmFyIHE9RC5sZW5ndGg7RC5wdXNoKFkpO2U6Zm9yKDswPHE7KXt2YXIgTj1xLTE+Pj4xLEk9RFtOXTtpZigwPGQoSSxZKSlEW05dPVksRFtxXT1JLHE9TjtlbHNlIGJyZWFrIGV9fWZ1bmN0aW9uIGwoRCl7cmV0dXJuIEQubGVuZ3RoPT09MD9udWxsOkRbMF19ZnVuY3Rpb24gdShEKXtpZihELmxlbmd0aD09PTApcmV0dXJuIG51bGw7dmFyIFk9RFswXSxxPUQucG9wKCk7aWYocSE9PVkpe0RbMF09cTtlOmZvcih2YXIgTj0wLEk9RC5sZW5ndGgsZGU9ST4+PjE7TjxkZTspe3ZhciBwZT0yKihOKzEpLTEseWU9RFtwZV0seGU9cGUrMSxSZT1EW3hlXTtpZigwPmQoeWUscSkpeGU8SSYmMD5kKFJlLHllKT8oRFtOXT1SZSxEW3hlXT1xLE49eGUpOihEW05dPXllLERbcGVdPXEsTj1wZSk7ZWxzZSBpZih4ZTxJJiYwPmQoUmUscSkpRFtOXT1SZSxEW3hlXT1xLE49eGU7ZWxzZSBicmVhayBlfX1yZXR1cm4gWX1mdW5jdGlvbiBkKEQsWSl7dmFyIHE9RC5zb3J0SW5kZXgtWS5zb3J0SW5kZXg7cmV0dXJuIHEhPT0wP3E6RC5pZC1ZLmlkfWlmKHR5cGVvZiBwZXJmb3JtYW5jZT09Im9iamVjdCImJnR5cGVvZiBwZXJmb3JtYW5jZS5ub3c9PSJmdW5jdGlvbiIpe3ZhciBoPXBlcmZvcm1hbmNlO3IudW5zdGFibGVfbm93PWZ1bmN0aW9uKCl7cmV0dXJuIGgubm93KCl9fWVsc2V7dmFyIHA9RGF0ZSxtPXAubm93KCk7ci51bnN0YWJsZV9ub3c9ZnVuY3Rpb24oKXtyZXR1cm4gcC5ub3coKS1tfX12YXIgdj1bXSxTPVtdLEU9MSx4PW51bGwsVD0zLE89ITEsQT0hMSxMPSExLFA9dHlwZW9mIHNldFRpbWVvdXQ9PSJmdW5jdGlvbiI/c2V0VGltZW91dDpudWxsLFU9dHlwZW9mIGNsZWFyVGltZW91dD09ImZ1bmN0aW9uIj9jbGVhclRpbWVvdXQ6bnVsbCxRPXR5cGVvZiBzZXRJbW1lZGlhdGU8InUiP3NldEltbWVkaWF0ZTpudWxsO3R5cGVvZiBuYXZpZ2F0b3I8InUiJiZuYXZpZ2F0b3Iuc2NoZWR1bGluZyE9PXZvaWQgMCYmbmF2aWdhdG9yLnNjaGVkdWxpbmcuaXNJbnB1dFBlbmRpbmchPT12b2lkIDAmJm5hdmlnYXRvci5zY2hlZHVsaW5nLmlzSW5wdXRQZW5kaW5nLmJpbmQobmF2aWdhdG9yLnNjaGVkdWxpbmcpO2Z1bmN0aW9uIGIoRCl7Zm9yKHZhciBZPWwoUyk7WSE9PW51bGw7KXtpZihZLmNhbGxiYWNrPT09bnVsbCl1KFMpO2Vsc2UgaWYoWS5zdGFydFRpbWU8PUQpdShTKSxZLnNvcnRJbmRleD1ZLmV4cGlyYXRpb25UaW1lLHModixZKTtlbHNlIGJyZWFrO1k9bChTKX19ZnVuY3Rpb24gVihEKXtpZihMPSExLGIoRCksIUEpaWYobCh2KSE9PW51bGwpQT0hMCxTZShIKTtlbHNle3ZhciBZPWwoUyk7WSE9PW51bGwmJkVlKFYsWS5zdGFydFRpbWUtRCl9fWZ1bmN0aW9uIEgoRCxZKXtBPSExLEwmJihMPSExLFUob2UpLG9lPS0xKSxPPSEwO3ZhciBxPVQ7dHJ5e2ZvcihiKFkpLHg9bCh2KTt4IT09bnVsbCYmKCEoeC5leHBpcmF0aW9uVGltZT5ZKXx8RCYmIWJlKCkpOyl7dmFyIE49eC5jYWxsYmFjaztpZih0eXBlb2YgTj09ImZ1bmN0aW9uIil7eC5jYWxsYmFjaz1udWxsLFQ9eC5wcmlvcml0eUxldmVsO3ZhciBJPU4oeC5leHBpcmF0aW9uVGltZTw9WSk7WT1yLnVuc3RhYmxlX25vdygpLHR5cGVvZiBJPT0iZnVuY3Rpb24iP3guY2FsbGJhY2s9STp4PT09bCh2KSYmdSh2KSxiKFkpfWVsc2UgdSh2KTt4PWwodil9aWYoeCE9PW51bGwpdmFyIGRlPSEwO2Vsc2V7dmFyIHBlPWwoUyk7cGUhPT1udWxsJiZFZShWLHBlLnN0YXJ0VGltZS1ZKSxkZT0hMX1yZXR1cm4gZGV9ZmluYWxseXt4PW51bGwsVD1xLE89ITF9fXZhciByZT0hMSx0ZT1udWxsLG9lPS0xLHVlPTUsaGU9LTE7ZnVuY3Rpb24gYmUoKXtyZXR1cm4hKHIudW5zdGFibGVfbm93KCktaGU8dWUpfWZ1bmN0aW9uICRlKCl7aWYodGUhPT1udWxsKXt2YXIgRD1yLnVuc3RhYmxlX25vdygpO2hlPUQ7dmFyIFk9ITA7dHJ5e1k9dGUoITAsRCl9ZmluYWxseXtZP19lKCk6KHJlPSExLHRlPW51bGwpfX1lbHNlIHJlPSExfXZhciBfZTtpZih0eXBlb2YgUT09ImZ1bmN0aW9uIilfZT1mdW5jdGlvbigpe1EoJGUpfTtlbHNlIGlmKHR5cGVvZiBNZXNzYWdlQ2hhbm5lbDwidSIpe3ZhciBaPW5ldyBNZXNzYWdlQ2hhbm5lbCxzZT1aLnBvcnQyO1oucG9ydDEub25tZXNzYWdlPSRlLF9lPWZ1bmN0aW9uKCl7c2UucG9zdE1lc3NhZ2UobnVsbCl9fWVsc2UgX2U9ZnVuY3Rpb24oKXtQKCRlLDApfTtmdW5jdGlvbiBTZShEKXt0ZT1ELHJlfHwocmU9ITAsX2UoKSl9ZnVuY3Rpb24gRWUoRCxZKXtvZT1QKGZ1bmN0aW9uKCl7RChyLnVuc3RhYmxlX25vdygpKX0sWSl9ci51bnN0YWJsZV9JZGxlUHJpb3JpdHk9NSxyLnVuc3RhYmxlX0ltbWVkaWF0ZVByaW9yaXR5PTEsci51bnN0YWJsZV9Mb3dQcmlvcml0eT00LHIudW5zdGFibGVfTm9ybWFsUHJpb3JpdHk9MyxyLnVuc3RhYmxlX1Byb2ZpbGluZz1udWxsLHIudW5zdGFibGVfVXNlckJsb2NraW5nUHJpb3JpdHk9MixyLnVuc3RhYmxlX2NhbmNlbENhbGxiYWNrPWZ1bmN0aW9uKEQpe0QuY2FsbGJhY2s9bnVsbH0sci51bnN0YWJsZV9jb250aW51ZUV4ZWN1dGlvbj1mdW5jdGlvbigpe0F8fE98fChBPSEwLFNlKEgpKX0sci51bnN0YWJsZV9mb3JjZUZyYW1lUmF0ZT1mdW5jdGlvbihEKXswPkR8fDEyNTxEP2NvbnNvbGUuZXJyb3IoImZvcmNlRnJhbWVSYXRlIHRha2VzIGEgcG9zaXRpdmUgaW50IGJldHdlZW4gMCBhbmQgMTI1LCBmb3JjaW5nIGZyYW1lIHJhdGVzIGhpZ2hlciB0aGFuIDEyNSBmcHMgaXMgbm90IHN1cHBvcnRlZCIpOnVlPTA8RD9NYXRoLmZsb29yKDFlMy9EKTo1fSxyLnVuc3RhYmxlX2dldEN1cnJlbnRQcmlvcml0eUxldmVsPWZ1bmN0aW9uKCl7cmV0dXJuIFR9LHIudW5zdGFibGVfZ2V0Rmlyc3RDYWxsYmFja05vZGU9ZnVuY3Rpb24oKXtyZXR1cm4gbCh2KX0sci51bnN0YWJsZV9uZXh0PWZ1bmN0aW9uKEQpe3N3aXRjaChUKXtjYXNlIDE6Y2FzZSAyOmNhc2UgMzp2YXIgWT0zO2JyZWFrO2RlZmF1bHQ6WT1UfXZhciBxPVQ7VD1ZO3RyeXtyZXR1cm4gRCgpfWZpbmFsbHl7VD1xfX0sci51bnN0YWJsZV9wYXVzZUV4ZWN1dGlvbj1mdW5jdGlvbigpe30sci51bnN0YWJsZV9yZXF1ZXN0UGFpbnQ9ZnVuY3Rpb24oKXt9LHIudW5zdGFibGVfcnVuV2l0aFByaW9yaXR5PWZ1bmN0aW9uKEQsWSl7c3dpdGNoKEQpe2Nhc2UgMTpjYXNlIDI6Y2FzZSAzOmNhc2UgNDpjYXNlIDU6YnJlYWs7ZGVmYXVsdDpEPTN9dmFyIHE9VDtUPUQ7dHJ5e3JldHVybiBZKCl9ZmluYWxseXtUPXF9fSxyLnVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2s9ZnVuY3Rpb24oRCxZLHEpe3ZhciBOPXIudW5zdGFibGVfbm93KCk7c3dpdGNoKHR5cGVvZiBxPT0ib2JqZWN0IiYmcSE9PW51bGw/KHE9cS5kZWxheSxxPXR5cGVvZiBxPT0ibnVtYmVyIiYmMDxxP04rcTpOKTpxPU4sRCl7Y2FzZSAxOnZhciBJPS0xO2JyZWFrO2Nhc2UgMjpJPTI1MDticmVhaztjYXNlIDU6ST0xMDczNzQxODIzO2JyZWFrO2Nhc2UgNDpJPTFlNDticmVhaztkZWZhdWx0Okk9NWUzfXJldHVybiBJPXErSSxEPXtpZDpFKyssY2FsbGJhY2s6WSxwcmlvcml0eUxldmVsOkQsc3RhcnRUaW1lOnEsZXhwaXJhdGlvblRpbWU6SSxzb3J0SW5kZXg6LTF9LHE+Tj8oRC5zb3J0SW5kZXg9cSxzKFMsRCksbCh2KT09PW51bGwmJkQ9PT1sKFMpJiYoTD8oVShvZSksb2U9LTEpOkw9ITAsRWUoVixxLU4pKSk6KEQuc29ydEluZGV4PUkscyh2LEQpLEF8fE98fChBPSEwLFNlKEgpKSksRH0sci51bnN0YWJsZV9zaG91bGRZaWVsZD1iZSxyLnVuc3RhYmxlX3dyYXBDYWxsYmFjaz1mdW5jdGlvbihEKXt2YXIgWT1UO3JldHVybiBmdW5jdGlvbigpe3ZhciBxPVQ7VD1ZO3RyeXtyZXR1cm4gRC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9ZmluYWxseXtUPXF9fX19KShXYSkpLFdhfXZhciAkZjtmdW5jdGlvbiB5Zygpe3JldHVybiAkZnx8KCRmPTEscWEuZXhwb3J0cz12ZygpKSxxYS5leHBvcnRzfS8qKgogKiBAbGljZW5zZSBSZWFjdAogKiByZWFjdC1kb20ucHJvZHVjdGlvbi5taW4uanMKICoKICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuCiAqCiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZQogKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuCiAqL3ZhciBVZjtmdW5jdGlvbiB4Zygpe2lmKFVmKXJldHVybiB2dDtVZj0xO3ZhciByPVN1KCkscz15ZygpO2Z1bmN0aW9uIGwoZSl7Zm9yKHZhciB0PSJodHRwczovL3JlYWN0anMub3JnL2RvY3MvZXJyb3ItZGVjb2Rlci5odG1sP2ludmFyaWFudD0iK2Usbj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspdCs9IiZhcmdzW109IitlbmNvZGVVUklDb21wb25lbnQoYXJndW1lbnRzW25dKTtyZXR1cm4iTWluaWZpZWQgUmVhY3QgZXJyb3IgIyIrZSsiOyB2aXNpdCAiK3QrIiBmb3IgdGhlIGZ1bGwgbWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIGZ1bGwgZXJyb3JzIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuIn12YXIgdT1uZXcgU2V0LGQ9e307ZnVuY3Rpb24gaChlLHQpe3AoZSx0KSxwKGUrIkNhcHR1cmUiLHQpfWZ1bmN0aW9uIHAoZSx0KXtmb3IoZFtlXT10LGU9MDtlPHQubGVuZ3RoO2UrKyl1LmFkZCh0W2VdKX12YXIgbT0hKHR5cGVvZiB3aW5kb3c+InUifHx0eXBlb2Ygd2luZG93LmRvY3VtZW50PiJ1Inx8dHlwZW9mIHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50PiJ1Iiksdj1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LFM9L15bOkEtWl9hLXpcdTAwQzAtXHUwMEQ2XHUwMEQ4LVx1MDBGNlx1MDBGOC1cdTAyRkZcdTAzNzAtXHUwMzdEXHUwMzdGLVx1MUZGRlx1MjAwQy1cdTIwMERcdTIwNzAtXHUyMThGXHUyQzAwLVx1MkZFRlx1MzAwMS1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZGRF1bOkEtWl9hLXpcdTAwQzAtXHUwMEQ2XHUwMEQ4LVx1MDBGNlx1MDBGOC1cdTAyRkZcdTAzNzAtXHUwMzdEXHUwMzdGLVx1MUZGRlx1MjAwQy1cdTIwMERcdTIwNzAtXHUyMThGXHUyQzAwLVx1MkZFRlx1MzAwMS1cdUQ3RkZcdUY5MDAtXHVGRENGXHVGREYwLVx1RkZGRFwtLjAtOVx1MDBCN1x1MDMwMC1cdTAzNkZcdTIwM0YtXHUyMDQwXSokLyxFPXt9LHg9e307ZnVuY3Rpb24gVChlKXtyZXR1cm4gdi5jYWxsKHgsZSk/ITA6di5jYWxsKEUsZSk/ITE6Uy50ZXN0KGUpP3hbZV09ITA6KEVbZV09ITAsITEpfWZ1bmN0aW9uIE8oZSx0LG4saSl7aWYobiE9PW51bGwmJm4udHlwZT09PTApcmV0dXJuITE7c3dpdGNoKHR5cGVvZiB0KXtjYXNlImZ1bmN0aW9uIjpjYXNlInN5bWJvbCI6cmV0dXJuITA7Y2FzZSJib29sZWFuIjpyZXR1cm4gaT8hMTpuIT09bnVsbD8hbi5hY2NlcHRzQm9vbGVhbnM6KGU9ZS50b0xvd2VyQ2FzZSgpLnNsaWNlKDAsNSksZSE9PSJkYXRhLSImJmUhPT0iYXJpYS0iKTtkZWZhdWx0OnJldHVybiExfX1mdW5jdGlvbiBBKGUsdCxuLGkpe2lmKHQ9PT1udWxsfHx0eXBlb2YgdD4idSJ8fE8oZSx0LG4saSkpcmV0dXJuITA7aWYoaSlyZXR1cm4hMTtpZihuIT09bnVsbClzd2l0Y2gobi50eXBlKXtjYXNlIDM6cmV0dXJuIXQ7Y2FzZSA0OnJldHVybiB0PT09ITE7Y2FzZSA1OnJldHVybiBpc05hTih0KTtjYXNlIDY6cmV0dXJuIGlzTmFOKHQpfHwxPnR9cmV0dXJuITF9ZnVuY3Rpb24gTChlLHQsbixpLG8sYSxmKXt0aGlzLmFjY2VwdHNCb29sZWFucz10PT09Mnx8dD09PTN8fHQ9PT00LHRoaXMuYXR0cmlidXRlTmFtZT1pLHRoaXMuYXR0cmlidXRlTmFtZXNwYWNlPW8sdGhpcy5tdXN0VXNlUHJvcGVydHk9bix0aGlzLnByb3BlcnR5TmFtZT1lLHRoaXMudHlwZT10LHRoaXMuc2FuaXRpemVVUkw9YSx0aGlzLnJlbW92ZUVtcHR5U3RyaW5nPWZ9dmFyIFA9e307ImNoaWxkcmVuIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIGRlZmF1bHRWYWx1ZSBkZWZhdWx0Q2hlY2tlZCBpbm5lckhUTUwgc3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nIHN1cHByZXNzSHlkcmF0aW9uV2FybmluZyBzdHlsZSIuc3BsaXQoIiAiKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe1BbZV09bmV3IEwoZSwwLCExLGUsbnVsbCwhMSwhMSl9KSxbWyJhY2NlcHRDaGFyc2V0IiwiYWNjZXB0LWNoYXJzZXQiXSxbImNsYXNzTmFtZSIsImNsYXNzIl0sWyJodG1sRm9yIiwiZm9yIl0sWyJodHRwRXF1aXYiLCJodHRwLWVxdWl2Il1dLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9ZVswXTtQW3RdPW5ldyBMKHQsMSwhMSxlWzFdLG51bGwsITEsITEpfSksWyJjb250ZW50RWRpdGFibGUiLCJkcmFnZ2FibGUiLCJzcGVsbENoZWNrIiwidmFsdWUiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe1BbZV09bmV3IEwoZSwyLCExLGUudG9Mb3dlckNhc2UoKSxudWxsLCExLCExKX0pLFsiYXV0b1JldmVyc2UiLCJleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkIiwiZm9jdXNhYmxlIiwicHJlc2VydmVBbHBoYSJdLmZvckVhY2goZnVuY3Rpb24oZSl7UFtlXT1uZXcgTChlLDIsITEsZSxudWxsLCExLCExKX0pLCJhbGxvd0Z1bGxTY3JlZW4gYXN5bmMgYXV0b0ZvY3VzIGF1dG9QbGF5IGNvbnRyb2xzIGRlZmF1bHQgZGVmZXIgZGlzYWJsZWQgZGlzYWJsZVBpY3R1cmVJblBpY3R1cmUgZGlzYWJsZVJlbW90ZVBsYXliYWNrIGZvcm1Ob1ZhbGlkYXRlIGhpZGRlbiBsb29wIG5vTW9kdWxlIG5vVmFsaWRhdGUgb3BlbiBwbGF5c0lubGluZSByZWFkT25seSByZXF1aXJlZCByZXZlcnNlZCBzY29wZWQgc2VhbWxlc3MgaXRlbVNjb3BlIi5zcGxpdCgiICIpLmZvckVhY2goZnVuY3Rpb24oZSl7UFtlXT1uZXcgTChlLDMsITEsZS50b0xvd2VyQ2FzZSgpLG51bGwsITEsITEpfSksWyJjaGVja2VkIiwibXVsdGlwbGUiLCJtdXRlZCIsInNlbGVjdGVkIl0uZm9yRWFjaChmdW5jdGlvbihlKXtQW2VdPW5ldyBMKGUsMywhMCxlLG51bGwsITEsITEpfSksWyJjYXB0dXJlIiwiZG93bmxvYWQiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe1BbZV09bmV3IEwoZSw0LCExLGUsbnVsbCwhMSwhMSl9KSxbImNvbHMiLCJyb3dzIiwic2l6ZSIsInNwYW4iXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe1BbZV09bmV3IEwoZSw2LCExLGUsbnVsbCwhMSwhMSl9KSxbInJvd1NwYW4iLCJzdGFydCJdLmZvckVhY2goZnVuY3Rpb24oZSl7UFtlXT1uZXcgTChlLDUsITEsZS50b0xvd2VyQ2FzZSgpLG51bGwsITEsITEpfSk7dmFyIFU9L1tcLTpdKFthLXpdKS9nO2Z1bmN0aW9uIFEoZSl7cmV0dXJuIGVbMV0udG9VcHBlckNhc2UoKX0iYWNjZW50LWhlaWdodCBhbGlnbm1lbnQtYmFzZWxpbmUgYXJhYmljLWZvcm0gYmFzZWxpbmUtc2hpZnQgY2FwLWhlaWdodCBjbGlwLXBhdGggY2xpcC1ydWxlIGNvbG9yLWludGVycG9sYXRpb24gY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzIGNvbG9yLXByb2ZpbGUgY29sb3ItcmVuZGVyaW5nIGRvbWluYW50LWJhc2VsaW5lIGVuYWJsZS1iYWNrZ3JvdW5kIGZpbGwtb3BhY2l0eSBmaWxsLXJ1bGUgZmxvb2QtY29sb3IgZmxvb2Qtb3BhY2l0eSBmb250LWZhbWlseSBmb250LXNpemUgZm9udC1zaXplLWFkanVzdCBmb250LXN0cmV0Y2ggZm9udC1zdHlsZSBmb250LXZhcmlhbnQgZm9udC13ZWlnaHQgZ2x5cGgtbmFtZSBnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsIGdseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsIGhvcml6LWFkdi14IGhvcml6LW9yaWdpbi14IGltYWdlLXJlbmRlcmluZyBsZXR0ZXItc3BhY2luZyBsaWdodGluZy1jb2xvciBtYXJrZXItZW5kIG1hcmtlci1taWQgbWFya2VyLXN0YXJ0IG92ZXJsaW5lLXBvc2l0aW9uIG92ZXJsaW5lLXRoaWNrbmVzcyBwYWludC1vcmRlciBwYW5vc2UtMSBwb2ludGVyLWV2ZW50cyByZW5kZXJpbmctaW50ZW50IHNoYXBlLXJlbmRlcmluZyBzdG9wLWNvbG9yIHN0b3Atb3BhY2l0eSBzdHJpa2V0aHJvdWdoLXBvc2l0aW9uIHN0cmlrZXRocm91Z2gtdGhpY2tuZXNzIHN0cm9rZS1kYXNoYXJyYXkgc3Ryb2tlLWRhc2hvZmZzZXQgc3Ryb2tlLWxpbmVjYXAgc3Ryb2tlLWxpbmVqb2luIHN0cm9rZS1taXRlcmxpbWl0IHN0cm9rZS1vcGFjaXR5IHN0cm9rZS13aWR0aCB0ZXh0LWFuY2hvciB0ZXh0LWRlY29yYXRpb24gdGV4dC1yZW5kZXJpbmcgdW5kZXJsaW5lLXBvc2l0aW9uIHVuZGVybGluZS10aGlja25lc3MgdW5pY29kZS1iaWRpIHVuaWNvZGUtcmFuZ2UgdW5pdHMtcGVyLWVtIHYtYWxwaGFiZXRpYyB2LWhhbmdpbmcgdi1pZGVvZ3JhcGhpYyB2LW1hdGhlbWF0aWNhbCB2ZWN0b3ItZWZmZWN0IHZlcnQtYWR2LXkgdmVydC1vcmlnaW4teCB2ZXJ0LW9yaWdpbi15IHdvcmQtc3BhY2luZyB3cml0aW5nLW1vZGUgeG1sbnM6eGxpbmsgeC1oZWlnaHQiLnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbihlKXt2YXIgdD1lLnJlcGxhY2UoVSxRKTtQW3RdPW5ldyBMKHQsMSwhMSxlLG51bGwsITEsITEpfSksInhsaW5rOmFjdHVhdGUgeGxpbms6YXJjcm9sZSB4bGluazpyb2xlIHhsaW5rOnNob3cgeGxpbms6dGl0bGUgeGxpbms6dHlwZSIuc3BsaXQoIiAiKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PWUucmVwbGFjZShVLFEpO1BbdF09bmV3IEwodCwxLCExLGUsImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLCExLCExKX0pLFsieG1sOmJhc2UiLCJ4bWw6bGFuZyIsInhtbDpzcGFjZSJdLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXBsYWNlKFUsUSk7UFt0XT1uZXcgTCh0LDEsITEsZSwiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIiwhMSwhMSl9KSxbInRhYkluZGV4IiwiY3Jvc3NPcmlnaW4iXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe1BbZV09bmV3IEwoZSwxLCExLGUudG9Mb3dlckNhc2UoKSxudWxsLCExLCExKX0pLFAueGxpbmtIcmVmPW5ldyBMKCJ4bGlua0hyZWYiLDEsITEsInhsaW5rOmhyZWYiLCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiwhMCwhMSksWyJzcmMiLCJocmVmIiwiYWN0aW9uIiwiZm9ybUFjdGlvbiJdLmZvckVhY2goZnVuY3Rpb24oZSl7UFtlXT1uZXcgTChlLDEsITEsZS50b0xvd2VyQ2FzZSgpLG51bGwsITAsITApfSk7ZnVuY3Rpb24gYihlLHQsbixpKXt2YXIgbz1QLmhhc093blByb3BlcnR5KHQpP1BbdF06bnVsbDsobyE9PW51bGw/by50eXBlIT09MDppfHwhKDI8dC5sZW5ndGgpfHx0WzBdIT09Im8iJiZ0WzBdIT09Ik8ifHx0WzFdIT09Im4iJiZ0WzFdIT09Ik4iKSYmKEEodCxuLG8saSkmJihuPW51bGwpLGl8fG89PT1udWxsP1QodCkmJihuPT09bnVsbD9lLnJlbW92ZUF0dHJpYnV0ZSh0KTplLnNldEF0dHJpYnV0ZSh0LCIiK24pKTpvLm11c3RVc2VQcm9wZXJ0eT9lW28ucHJvcGVydHlOYW1lXT1uPT09bnVsbD9vLnR5cGU9PT0zPyExOiIiOm46KHQ9by5hdHRyaWJ1dGVOYW1lLGk9by5hdHRyaWJ1dGVOYW1lc3BhY2Usbj09PW51bGw/ZS5yZW1vdmVBdHRyaWJ1dGUodCk6KG89by50eXBlLG49bz09PTN8fG89PT00JiZuPT09ITA/IiI6IiIrbixpP2Uuc2V0QXR0cmlidXRlTlMoaSx0LG4pOmUuc2V0QXR0cmlidXRlKHQsbikpKSl9dmFyIFY9ci5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRCxIPVN5bWJvbC5mb3IoInJlYWN0LmVsZW1lbnQiKSxyZT1TeW1ib2wuZm9yKCJyZWFjdC5wb3J0YWwiKSx0ZT1TeW1ib2wuZm9yKCJyZWFjdC5mcmFnbWVudCIpLG9lPVN5bWJvbC5mb3IoInJlYWN0LnN0cmljdF9tb2RlIiksdWU9U3ltYm9sLmZvcigicmVhY3QucHJvZmlsZXIiKSxoZT1TeW1ib2wuZm9yKCJyZWFjdC5wcm92aWRlciIpLGJlPVN5bWJvbC5mb3IoInJlYWN0LmNvbnRleHQiKSwkZT1TeW1ib2wuZm9yKCJyZWFjdC5mb3J3YXJkX3JlZiIpLF9lPVN5bWJvbC5mb3IoInJlYWN0LnN1c3BlbnNlIiksWj1TeW1ib2wuZm9yKCJyZWFjdC5zdXNwZW5zZV9saXN0Iiksc2U9U3ltYm9sLmZvcigicmVhY3QubWVtbyIpLFNlPVN5bWJvbC5mb3IoInJlYWN0LmxhenkiKSxFZT1TeW1ib2wuZm9yKCJyZWFjdC5vZmZzY3JlZW4iKSxEPVN5bWJvbC5pdGVyYXRvcjtmdW5jdGlvbiBZKGUpe3JldHVybiBlPT09bnVsbHx8dHlwZW9mIGUhPSJvYmplY3QiP251bGw6KGU9RCYmZVtEXXx8ZVsiQEBpdGVyYXRvciJdLHR5cGVvZiBlPT0iZnVuY3Rpb24iP2U6bnVsbCl9dmFyIHE9T2JqZWN0LmFzc2lnbixOO2Z1bmN0aW9uIEkoZSl7aWYoTj09PXZvaWQgMCl0cnl7dGhyb3cgRXJyb3IoKX1jYXRjaChuKXt2YXIgdD1uLnN0YWNrLnRyaW0oKS5tYXRjaCgvXG4oICooYXQgKT8pLyk7Tj10JiZ0WzFdfHwiIn1yZXR1cm5gCmArTitlfXZhciBkZT0hMTtmdW5jdGlvbiBwZShlLHQpe2lmKCFlfHxkZSlyZXR1cm4iIjtkZT0hMDt2YXIgbj1FcnJvci5wcmVwYXJlU3RhY2tUcmFjZTtFcnJvci5wcmVwYXJlU3RhY2tUcmFjZT12b2lkIDA7dHJ5e2lmKHQpaWYodD1mdW5jdGlvbigpe3Rocm93IEVycm9yKCl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSwicHJvcHMiLHtzZXQ6ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcigpfX0pLHR5cGVvZiBSZWZsZWN0PT0ib2JqZWN0IiYmUmVmbGVjdC5jb25zdHJ1Y3Qpe3RyeXtSZWZsZWN0LmNvbnN0cnVjdCh0LFtdKX1jYXRjaChGKXt2YXIgaT1GfVJlZmxlY3QuY29uc3RydWN0KGUsW10sdCl9ZWxzZXt0cnl7dC5jYWxsKCl9Y2F0Y2goRil7aT1GfWUuY2FsbCh0LnByb3RvdHlwZSl9ZWxzZXt0cnl7dGhyb3cgRXJyb3IoKX1jYXRjaChGKXtpPUZ9ZSgpfX1jYXRjaChGKXtpZihGJiZpJiZ0eXBlb2YgRi5zdGFjaz09InN0cmluZyIpe2Zvcih2YXIgbz1GLnN0YWNrLnNwbGl0KGAKYCksYT1pLnN0YWNrLnNwbGl0KGAKYCksZj1vLmxlbmd0aC0xLGc9YS5sZW5ndGgtMTsxPD1mJiYwPD1nJiZvW2ZdIT09YVtnXTspZy0tO2Zvcig7MTw9ZiYmMDw9ZztmLS0sZy0tKWlmKG9bZl0hPT1hW2ddKXtpZihmIT09MXx8ZyE9PTEpZG8gaWYoZi0tLGctLSwwPmd8fG9bZl0hPT1hW2ddKXt2YXIgdz1gCmArb1tmXS5yZXBsYWNlKCIgYXQgbmV3ICIsIiBhdCAiKTtyZXR1cm4gZS5kaXNwbGF5TmFtZSYmdy5pbmNsdWRlcygiPGFub255bW91cz4iKSYmKHc9dy5yZXBsYWNlKCI8YW5vbnltb3VzPiIsZS5kaXNwbGF5TmFtZSkpLHd9d2hpbGUoMTw9ZiYmMDw9Zyk7YnJlYWt9fX1maW5hbGx5e2RlPSExLEVycm9yLnByZXBhcmVTdGFja1RyYWNlPW59cmV0dXJuKGU9ZT9lLmRpc3BsYXlOYW1lfHxlLm5hbWU6IiIpP0koZSk6IiJ9ZnVuY3Rpb24geWUoZSl7c3dpdGNoKGUudGFnKXtjYXNlIDU6cmV0dXJuIEkoZS50eXBlKTtjYXNlIDE2OnJldHVybiBJKCJMYXp5Iik7Y2FzZSAxMzpyZXR1cm4gSSgiU3VzcGVuc2UiKTtjYXNlIDE5OnJldHVybiBJKCJTdXNwZW5zZUxpc3QiKTtjYXNlIDA6Y2FzZSAyOmNhc2UgMTU6cmV0dXJuIGU9cGUoZS50eXBlLCExKSxlO2Nhc2UgMTE6cmV0dXJuIGU9cGUoZS50eXBlLnJlbmRlciwhMSksZTtjYXNlIDE6cmV0dXJuIGU9cGUoZS50eXBlLCEwKSxlO2RlZmF1bHQ6cmV0dXJuIiJ9fWZ1bmN0aW9uIHhlKGUpe2lmKGU9PW51bGwpcmV0dXJuIG51bGw7aWYodHlwZW9mIGU9PSJmdW5jdGlvbiIpcmV0dXJuIGUuZGlzcGxheU5hbWV8fGUubmFtZXx8bnVsbDtpZih0eXBlb2YgZT09InN0cmluZyIpcmV0dXJuIGU7c3dpdGNoKGUpe2Nhc2UgdGU6cmV0dXJuIkZyYWdtZW50IjtjYXNlIHJlOnJldHVybiJQb3J0YWwiO2Nhc2UgdWU6cmV0dXJuIlByb2ZpbGVyIjtjYXNlIG9lOnJldHVybiJTdHJpY3RNb2RlIjtjYXNlIF9lOnJldHVybiJTdXNwZW5zZSI7Y2FzZSBaOnJldHVybiJTdXNwZW5zZUxpc3QifWlmKHR5cGVvZiBlPT0ib2JqZWN0Iilzd2l0Y2goZS4kJHR5cGVvZil7Y2FzZSBiZTpyZXR1cm4oZS5kaXNwbGF5TmFtZXx8IkNvbnRleHQiKSsiLkNvbnN1bWVyIjtjYXNlIGhlOnJldHVybihlLl9jb250ZXh0LmRpc3BsYXlOYW1lfHwiQ29udGV4dCIpKyIuUHJvdmlkZXIiO2Nhc2UgJGU6dmFyIHQ9ZS5yZW5kZXI7cmV0dXJuIGU9ZS5kaXNwbGF5TmFtZSxlfHwoZT10LmRpc3BsYXlOYW1lfHx0Lm5hbWV8fCIiLGU9ZSE9PSIiPyJGb3J3YXJkUmVmKCIrZSsiKSI6IkZvcndhcmRSZWYiKSxlO2Nhc2Ugc2U6cmV0dXJuIHQ9ZS5kaXNwbGF5TmFtZXx8bnVsbCx0IT09bnVsbD90OnhlKGUudHlwZSl8fCJNZW1vIjtjYXNlIFNlOnQ9ZS5fcGF5bG9hZCxlPWUuX2luaXQ7dHJ5e3JldHVybiB4ZShlKHQpKX1jYXRjaHt9fXJldHVybiBudWxsfWZ1bmN0aW9uIFJlKGUpe3ZhciB0PWUudHlwZTtzd2l0Y2goZS50YWcpe2Nhc2UgMjQ6cmV0dXJuIkNhY2hlIjtjYXNlIDk6cmV0dXJuKHQuZGlzcGxheU5hbWV8fCJDb250ZXh0IikrIi5Db25zdW1lciI7Y2FzZSAxMDpyZXR1cm4odC5fY29udGV4dC5kaXNwbGF5TmFtZXx8IkNvbnRleHQiKSsiLlByb3ZpZGVyIjtjYXNlIDE4OnJldHVybiJEZWh5ZHJhdGVkRnJhZ21lbnQiO2Nhc2UgMTE6cmV0dXJuIGU9dC5yZW5kZXIsZT1lLmRpc3BsYXlOYW1lfHxlLm5hbWV8fCIiLHQuZGlzcGxheU5hbWV8fChlIT09IiI/IkZvcndhcmRSZWYoIitlKyIpIjoiRm9yd2FyZFJlZiIpO2Nhc2UgNzpyZXR1cm4iRnJhZ21lbnQiO2Nhc2UgNTpyZXR1cm4gdDtjYXNlIDQ6cmV0dXJuIlBvcnRhbCI7Y2FzZSAzOnJldHVybiJSb290IjtjYXNlIDY6cmV0dXJuIlRleHQiO2Nhc2UgMTY6cmV0dXJuIHhlKHQpO2Nhc2UgODpyZXR1cm4gdD09PW9lPyJTdHJpY3RNb2RlIjoiTW9kZSI7Y2FzZSAyMjpyZXR1cm4iT2Zmc2NyZWVuIjtjYXNlIDEyOnJldHVybiJQcm9maWxlciI7Y2FzZSAyMTpyZXR1cm4iU2NvcGUiO2Nhc2UgMTM6cmV0dXJuIlN1c3BlbnNlIjtjYXNlIDE5OnJldHVybiJTdXNwZW5zZUxpc3QiO2Nhc2UgMjU6cmV0dXJuIlRyYWNpbmdNYXJrZXIiO2Nhc2UgMTpjYXNlIDA6Y2FzZSAxNzpjYXNlIDI6Y2FzZSAxNDpjYXNlIDE1OmlmKHR5cGVvZiB0PT0iZnVuY3Rpb24iKXJldHVybiB0LmRpc3BsYXlOYW1lfHx0Lm5hbWV8fG51bGw7aWYodHlwZW9mIHQ9PSJzdHJpbmciKXJldHVybiB0fXJldHVybiBudWxsfWZ1bmN0aW9uIENlKGUpe3N3aXRjaCh0eXBlb2YgZSl7Y2FzZSJib29sZWFuIjpjYXNlIm51bWJlciI6Y2FzZSJzdHJpbmciOmNhc2UidW5kZWZpbmVkIjpyZXR1cm4gZTtjYXNlIm9iamVjdCI6cmV0dXJuIGU7ZGVmYXVsdDpyZXR1cm4iIn19ZnVuY3Rpb24gTGUoZSl7dmFyIHQ9ZS50eXBlO3JldHVybihlPWUubm9kZU5hbWUpJiZlLnRvTG93ZXJDYXNlKCk9PT0iaW5wdXQiJiYodD09PSJjaGVja2JveCJ8fHQ9PT0icmFkaW8iKX1mdW5jdGlvbiB5dChlKXt2YXIgdD1MZShlKT8iY2hlY2tlZCI6InZhbHVlIixuPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsdCksaT0iIitlW3RdO2lmKCFlLmhhc093blByb3BlcnR5KHQpJiZ0eXBlb2YgbjwidSImJnR5cGVvZiBuLmdldD09ImZ1bmN0aW9uIiYmdHlwZW9mIG4uc2V0PT0iZnVuY3Rpb24iKXt2YXIgbz1uLmdldCxhPW4uc2V0O3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG8uY2FsbCh0aGlzKX0sc2V0OmZ1bmN0aW9uKGYpe2k9IiIrZixhLmNhbGwodGhpcyxmKX19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtlbnVtZXJhYmxlOm4uZW51bWVyYWJsZX0pLHtnZXRWYWx1ZTpmdW5jdGlvbigpe3JldHVybiBpfSxzZXRWYWx1ZTpmdW5jdGlvbihmKXtpPSIiK2Z9LHN0b3BUcmFja2luZzpmdW5jdGlvbigpe2UuX3ZhbHVlVHJhY2tlcj1udWxsLGRlbGV0ZSBlW3RdfX19fWZ1bmN0aW9uIHhpKGUpe2UuX3ZhbHVlVHJhY2tlcnx8KGUuX3ZhbHVlVHJhY2tlcj15dChlKSl9ZnVuY3Rpb24gQXUoZSl7aWYoIWUpcmV0dXJuITE7dmFyIHQ9ZS5fdmFsdWVUcmFja2VyO2lmKCF0KXJldHVybiEwO3ZhciBuPXQuZ2V0VmFsdWUoKSxpPSIiO3JldHVybiBlJiYoaT1MZShlKT9lLmNoZWNrZWQ/InRydWUiOiJmYWxzZSI6ZS52YWx1ZSksZT1pLGUhPT1uPyh0LnNldFZhbHVlKGUpLCEwKTohMX1mdW5jdGlvbiB3aShlKXtpZihlPWV8fCh0eXBlb2YgZG9jdW1lbnQ8InUiP2RvY3VtZW50OnZvaWQgMCksdHlwZW9mIGU+InUiKXJldHVybiBudWxsO3RyeXtyZXR1cm4gZS5hY3RpdmVFbGVtZW50fHxlLmJvZHl9Y2F0Y2h7cmV0dXJuIGUuYm9keX19ZnVuY3Rpb24gVmwoZSx0KXt2YXIgbj10LmNoZWNrZWQ7cmV0dXJuIHEoe30sdCx7ZGVmYXVsdENoZWNrZWQ6dm9pZCAwLGRlZmF1bHRWYWx1ZTp2b2lkIDAsdmFsdWU6dm9pZCAwLGNoZWNrZWQ6bj8/ZS5fd3JhcHBlclN0YXRlLmluaXRpYWxDaGVja2VkfSl9ZnVuY3Rpb24gJHUoZSx0KXt2YXIgbj10LmRlZmF1bHRWYWx1ZT09bnVsbD8iIjp0LmRlZmF1bHRWYWx1ZSxpPXQuY2hlY2tlZCE9bnVsbD90LmNoZWNrZWQ6dC5kZWZhdWx0Q2hlY2tlZDtuPUNlKHQudmFsdWUhPW51bGw/dC52YWx1ZTpuKSxlLl93cmFwcGVyU3RhdGU9e2luaXRpYWxDaGVja2VkOmksaW5pdGlhbFZhbHVlOm4sY29udHJvbGxlZDp0LnR5cGU9PT0iY2hlY2tib3gifHx0LnR5cGU9PT0icmFkaW8iP3QuY2hlY2tlZCE9bnVsbDp0LnZhbHVlIT1udWxsfX1mdW5jdGlvbiBVdShlLHQpe3Q9dC5jaGVja2VkLHQhPW51bGwmJmIoZSwiY2hlY2tlZCIsdCwhMSl9ZnVuY3Rpb24gS2woZSx0KXtVdShlLHQpO3ZhciBuPUNlKHQudmFsdWUpLGk9dC50eXBlO2lmKG4hPW51bGwpaT09PSJudW1iZXIiPyhuPT09MCYmZS52YWx1ZT09PSIifHxlLnZhbHVlIT1uKSYmKGUudmFsdWU9IiIrbik6ZS52YWx1ZSE9PSIiK24mJihlLnZhbHVlPSIiK24pO2Vsc2UgaWYoaT09PSJzdWJtaXQifHxpPT09InJlc2V0Iil7ZS5yZW1vdmVBdHRyaWJ1dGUoInZhbHVlIik7cmV0dXJufXQuaGFzT3duUHJvcGVydHkoInZhbHVlIik/R2woZSx0LnR5cGUsbik6dC5oYXNPd25Qcm9wZXJ0eSgiZGVmYXVsdFZhbHVlIikmJkdsKGUsdC50eXBlLENlKHQuZGVmYXVsdFZhbHVlKSksdC5jaGVja2VkPT1udWxsJiZ0LmRlZmF1bHRDaGVja2VkIT1udWxsJiYoZS5kZWZhdWx0Q2hlY2tlZD0hIXQuZGVmYXVsdENoZWNrZWQpfWZ1bmN0aW9uIGJ1KGUsdCxuKXtpZih0Lmhhc093blByb3BlcnR5KCJ2YWx1ZSIpfHx0Lmhhc093blByb3BlcnR5KCJkZWZhdWx0VmFsdWUiKSl7dmFyIGk9dC50eXBlO2lmKCEoaSE9PSJzdWJtaXQiJiZpIT09InJlc2V0Inx8dC52YWx1ZSE9PXZvaWQgMCYmdC52YWx1ZSE9PW51bGwpKXJldHVybjt0PSIiK2UuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWUsbnx8dD09PWUudmFsdWV8fChlLnZhbHVlPXQpLGUuZGVmYXVsdFZhbHVlPXR9bj1lLm5hbWUsbiE9PSIiJiYoZS5uYW1lPSIiKSxlLmRlZmF1bHRDaGVja2VkPSEhZS5fd3JhcHBlclN0YXRlLmluaXRpYWxDaGVja2VkLG4hPT0iIiYmKGUubmFtZT1uKX1mdW5jdGlvbiBHbChlLHQsbil7KHQhPT0ibnVtYmVyInx8d2koZS5vd25lckRvY3VtZW50KSE9PWUpJiYobj09bnVsbD9lLmRlZmF1bHRWYWx1ZT0iIitlLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlOmUuZGVmYXVsdFZhbHVlIT09IiIrbiYmKGUuZGVmYXVsdFZhbHVlPSIiK24pKX12YXIgcHM9QXJyYXkuaXNBcnJheTtmdW5jdGlvbiBrcihlLHQsbixpKXtpZihlPWUub3B0aW9ucyx0KXt0PXt9O2Zvcih2YXIgbz0wO288bi5sZW5ndGg7bysrKXRbIiQiK25bb11dPSEwO2ZvcihuPTA7bjxlLmxlbmd0aDtuKyspbz10Lmhhc093blByb3BlcnR5KCIkIitlW25dLnZhbHVlKSxlW25dLnNlbGVjdGVkIT09byYmKGVbbl0uc2VsZWN0ZWQ9byksbyYmaSYmKGVbbl0uZGVmYXVsdFNlbGVjdGVkPSEwKX1lbHNle2ZvcihuPSIiK0NlKG4pLHQ9bnVsbCxvPTA7bzxlLmxlbmd0aDtvKyspe2lmKGVbb10udmFsdWU9PT1uKXtlW29dLnNlbGVjdGVkPSEwLGkmJihlW29dLmRlZmF1bHRTZWxlY3RlZD0hMCk7cmV0dXJufXQhPT1udWxsfHxlW29dLmRpc2FibGVkfHwodD1lW29dKX10IT09bnVsbCYmKHQuc2VsZWN0ZWQ9ITApfX1mdW5jdGlvbiBKbChlLHQpe2lmKHQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwhPW51bGwpdGhyb3cgRXJyb3IobCg5MSkpO3JldHVybiBxKHt9LHQse3ZhbHVlOnZvaWQgMCxkZWZhdWx0VmFsdWU6dm9pZCAwLGNoaWxkcmVuOiIiK2UuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWV9KX1mdW5jdGlvbiBCdShlLHQpe3ZhciBuPXQudmFsdWU7aWYobj09bnVsbCl7aWYobj10LmNoaWxkcmVuLHQ9dC5kZWZhdWx0VmFsdWUsbiE9bnVsbCl7aWYodCE9bnVsbCl0aHJvdyBFcnJvcihsKDkyKSk7aWYocHMobikpe2lmKDE8bi5sZW5ndGgpdGhyb3cgRXJyb3IobCg5MykpO249blswXX10PW59dD09bnVsbCYmKHQ9IiIpLG49dH1lLl93cmFwcGVyU3RhdGU9e2luaXRpYWxWYWx1ZTpDZShuKX19ZnVuY3Rpb24gSHUoZSx0KXt2YXIgbj1DZSh0LnZhbHVlKSxpPUNlKHQuZGVmYXVsdFZhbHVlKTtuIT1udWxsJiYobj0iIituLG4hPT1lLnZhbHVlJiYoZS52YWx1ZT1uKSx0LmRlZmF1bHRWYWx1ZT09bnVsbCYmZS5kZWZhdWx0VmFsdWUhPT1uJiYoZS5kZWZhdWx0VmFsdWU9bikpLGkhPW51bGwmJihlLmRlZmF1bHRWYWx1ZT0iIitpKX1mdW5jdGlvbiBRdShlKXt2YXIgdD1lLnRleHRDb250ZW50O3Q9PT1lLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlJiZ0IT09IiImJnQhPT1udWxsJiYoZS52YWx1ZT10KX1mdW5jdGlvbiBxdShlKXtzd2l0Y2goZSl7Y2FzZSJzdmciOnJldHVybiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI7Y2FzZSJtYXRoIjpyZXR1cm4iaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCI7ZGVmYXVsdDpyZXR1cm4iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCJ9fWZ1bmN0aW9uIFlsKGUsdCl7cmV0dXJuIGU9PW51bGx8fGU9PT0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI/cXUodCk6ZT09PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyImJnQ9PT0iZm9yZWlnbk9iamVjdCI/Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiOmV9dmFyIFNpLFd1PShmdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIE1TQXBwPCJ1IiYmTVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24/ZnVuY3Rpb24odCxuLGksbyl7TVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24oZnVuY3Rpb24oKXtyZXR1cm4gZSh0LG4saSxvKX0pfTplfSkoZnVuY3Rpb24oZSx0KXtpZihlLm5hbWVzcGFjZVVSSSE9PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJ8fCJpbm5lckhUTUwiaW4gZSllLmlubmVySFRNTD10O2Vsc2V7Zm9yKFNpPVNpfHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxTaS5pbm5lckhUTUw9Ijxzdmc+Iit0LnZhbHVlT2YoKS50b1N0cmluZygpKyI8L3N2Zz4iLHQ9U2kuZmlyc3RDaGlsZDtlLmZpcnN0Q2hpbGQ7KWUucmVtb3ZlQ2hpbGQoZS5maXJzdENoaWxkKTtmb3IoO3QuZmlyc3RDaGlsZDspZS5hcHBlbmRDaGlsZCh0LmZpcnN0Q2hpbGQpfX0pO2Z1bmN0aW9uIG1zKGUsdCl7aWYodCl7dmFyIG49ZS5maXJzdENoaWxkO2lmKG4mJm49PT1lLmxhc3RDaGlsZCYmbi5ub2RlVHlwZT09PTMpe24ubm9kZVZhbHVlPXQ7cmV0dXJufX1lLnRleHRDb250ZW50PXR9dmFyIGdzPXthbmltYXRpb25JdGVyYXRpb25Db3VudDohMCxhc3BlY3RSYXRpbzohMCxib3JkZXJJbWFnZU91dHNldDohMCxib3JkZXJJbWFnZVNsaWNlOiEwLGJvcmRlckltYWdlV2lkdGg6ITAsYm94RmxleDohMCxib3hGbGV4R3JvdXA6ITAsYm94T3JkaW5hbEdyb3VwOiEwLGNvbHVtbkNvdW50OiEwLGNvbHVtbnM6ITAsZmxleDohMCxmbGV4R3JvdzohMCxmbGV4UG9zaXRpdmU6ITAsZmxleFNocmluazohMCxmbGV4TmVnYXRpdmU6ITAsZmxleE9yZGVyOiEwLGdyaWRBcmVhOiEwLGdyaWRSb3c6ITAsZ3JpZFJvd0VuZDohMCxncmlkUm93U3BhbjohMCxncmlkUm93U3RhcnQ6ITAsZ3JpZENvbHVtbjohMCxncmlkQ29sdW1uRW5kOiEwLGdyaWRDb2x1bW5TcGFuOiEwLGdyaWRDb2x1bW5TdGFydDohMCxmb250V2VpZ2h0OiEwLGxpbmVDbGFtcDohMCxsaW5lSGVpZ2h0OiEwLG9wYWNpdHk6ITAsb3JkZXI6ITAsb3JwaGFuczohMCx0YWJTaXplOiEwLHdpZG93czohMCx6SW5kZXg6ITAsem9vbTohMCxmaWxsT3BhY2l0eTohMCxmbG9vZE9wYWNpdHk6ITAsc3RvcE9wYWNpdHk6ITAsc3Ryb2tlRGFzaGFycmF5OiEwLHN0cm9rZURhc2hvZmZzZXQ6ITAsc3Ryb2tlTWl0ZXJsaW1pdDohMCxzdHJva2VPcGFjaXR5OiEwLHN0cm9rZVdpZHRoOiEwfSx2cD1bIldlYmtpdCIsIm1zIiwiTW96IiwiTyJdO09iamVjdC5rZXlzKGdzKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZwLmZvckVhY2goZnVuY3Rpb24odCl7dD10K2UuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrZS5zdWJzdHJpbmcoMSksZ3NbdF09Z3NbZV19KX0pO2Z1bmN0aW9uIFZ1KGUsdCxuKXtyZXR1cm4gdD09bnVsbHx8dHlwZW9mIHQ9PSJib29sZWFuInx8dD09PSIiPyIiOm58fHR5cGVvZiB0IT0ibnVtYmVyInx8dD09PTB8fGdzLmhhc093blByb3BlcnR5KGUpJiZnc1tlXT8oIiIrdCkudHJpbSgpOnQrInB4In1mdW5jdGlvbiBLdShlLHQpe2U9ZS5zdHlsZTtmb3IodmFyIG4gaW4gdClpZih0Lmhhc093blByb3BlcnR5KG4pKXt2YXIgaT1uLmluZGV4T2YoIi0tIik9PT0wLG89VnUobix0W25dLGkpO249PT0iZmxvYXQiJiYobj0iY3NzRmxvYXQiKSxpP2Uuc2V0UHJvcGVydHkobixvKTplW25dPW99fXZhciB5cD1xKHttZW51aXRlbTohMH0se2FyZWE6ITAsYmFzZTohMCxicjohMCxjb2w6ITAsZW1iZWQ6ITAsaHI6ITAsaW1nOiEwLGlucHV0OiEwLGtleWdlbjohMCxsaW5rOiEwLG1ldGE6ITAscGFyYW06ITAsc291cmNlOiEwLHRyYWNrOiEwLHdicjohMH0pO2Z1bmN0aW9uIFhsKGUsdCl7aWYodCl7aWYoeXBbZV0mJih0LmNoaWxkcmVuIT1udWxsfHx0LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIT1udWxsKSl0aHJvdyBFcnJvcihsKDEzNyxlKSk7aWYodC5kYW5nZXJvdXNseVNldElubmVySFRNTCE9bnVsbCl7aWYodC5jaGlsZHJlbiE9bnVsbCl0aHJvdyBFcnJvcihsKDYwKSk7aWYodHlwZW9mIHQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwhPSJvYmplY3QifHwhKCJfX2h0bWwiaW4gdC5kYW5nZXJvdXNseVNldElubmVySFRNTCkpdGhyb3cgRXJyb3IobCg2MSkpfWlmKHQuc3R5bGUhPW51bGwmJnR5cGVvZiB0LnN0eWxlIT0ib2JqZWN0Iil0aHJvdyBFcnJvcihsKDYyKSl9fWZ1bmN0aW9uIFpsKGUsdCl7aWYoZS5pbmRleE9mKCItIik9PT0tMSlyZXR1cm4gdHlwZW9mIHQuaXM9PSJzdHJpbmciO3N3aXRjaChlKXtjYXNlImFubm90YXRpb24teG1sIjpjYXNlImNvbG9yLXByb2ZpbGUiOmNhc2UiZm9udC1mYWNlIjpjYXNlImZvbnQtZmFjZS1zcmMiOmNhc2UiZm9udC1mYWNlLXVyaSI6Y2FzZSJmb250LWZhY2UtZm9ybWF0IjpjYXNlImZvbnQtZmFjZS1uYW1lIjpjYXNlIm1pc3NpbmctZ2x5cGgiOnJldHVybiExO2RlZmF1bHQ6cmV0dXJuITB9fXZhciBlbz1udWxsO2Z1bmN0aW9uIHRvKGUpe3JldHVybiBlPWUudGFyZ2V0fHxlLnNyY0VsZW1lbnR8fHdpbmRvdyxlLmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50JiYoZT1lLmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50KSxlLm5vZGVUeXBlPT09Mz9lLnBhcmVudE5vZGU6ZX12YXIgbm89bnVsbCxDcj1udWxsLGpyPW51bGw7ZnVuY3Rpb24gR3UoZSl7aWYoZT1BcyhlKSl7aWYodHlwZW9mIG5vIT0iZnVuY3Rpb24iKXRocm93IEVycm9yKGwoMjgwKSk7dmFyIHQ9ZS5zdGF0ZU5vZGU7dCYmKHQ9UWkodCksbm8oZS5zdGF0ZU5vZGUsZS50eXBlLHQpKX19ZnVuY3Rpb24gSnUoZSl7Q3I/anI/anIucHVzaChlKTpqcj1bZV06Q3I9ZX1mdW5jdGlvbiBZdSgpe2lmKENyKXt2YXIgZT1Dcix0PWpyO2lmKGpyPUNyPW51bGwsR3UoZSksdClmb3IoZT0wO2U8dC5sZW5ndGg7ZSsrKUd1KHRbZV0pfX1mdW5jdGlvbiBYdShlLHQpe3JldHVybiBlKHQpfWZ1bmN0aW9uIFp1KCl7fXZhciBybz0hMTtmdW5jdGlvbiBlYyhlLHQsbil7aWYocm8pcmV0dXJuIGUodCxuKTtybz0hMDt0cnl7cmV0dXJuIFh1KGUsdCxuKX1maW5hbGx5e3JvPSExLChDciE9PW51bGx8fGpyIT09bnVsbCkmJihadSgpLFl1KCkpfX1mdW5jdGlvbiB2cyhlLHQpe3ZhciBuPWUuc3RhdGVOb2RlO2lmKG49PT1udWxsKXJldHVybiBudWxsO3ZhciBpPVFpKG4pO2lmKGk9PT1udWxsKXJldHVybiBudWxsO249aVt0XTtlOnN3aXRjaCh0KXtjYXNlIm9uQ2xpY2siOmNhc2Uib25DbGlja0NhcHR1cmUiOmNhc2Uib25Eb3VibGVDbGljayI6Y2FzZSJvbkRvdWJsZUNsaWNrQ2FwdHVyZSI6Y2FzZSJvbk1vdXNlRG93biI6Y2FzZSJvbk1vdXNlRG93bkNhcHR1cmUiOmNhc2Uib25Nb3VzZU1vdmUiOmNhc2Uib25Nb3VzZU1vdmVDYXB0dXJlIjpjYXNlIm9uTW91c2VVcCI6Y2FzZSJvbk1vdXNlVXBDYXB0dXJlIjpjYXNlIm9uTW91c2VFbnRlciI6KGk9IWkuZGlzYWJsZWQpfHwoZT1lLnR5cGUsaT0hKGU9PT0iYnV0dG9uInx8ZT09PSJpbnB1dCJ8fGU9PT0ic2VsZWN0Inx8ZT09PSJ0ZXh0YXJlYSIpKSxlPSFpO2JyZWFrIGU7ZGVmYXVsdDplPSExfWlmKGUpcmV0dXJuIG51bGw7aWYobiYmdHlwZW9mIG4hPSJmdW5jdGlvbiIpdGhyb3cgRXJyb3IobCgyMzEsdCx0eXBlb2YgbikpO3JldHVybiBufXZhciBzbz0hMTtpZihtKXRyeXt2YXIgeXM9e307T2JqZWN0LmRlZmluZVByb3BlcnR5KHlzLCJwYXNzaXZlIix7Z2V0OmZ1bmN0aW9uKCl7c289ITB9fSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInRlc3QiLHlzLHlzKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigidGVzdCIseXMseXMpfWNhdGNoe3NvPSExfWZ1bmN0aW9uIHhwKGUsdCxuLGksbyxhLGYsZyx3KXt2YXIgRj1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMyk7dHJ5e3QuYXBwbHkobixGKX1jYXRjaCh6KXt0aGlzLm9uRXJyb3Ioeil9fXZhciB4cz0hMSxraT1udWxsLENpPSExLGlvPW51bGwsd3A9e29uRXJyb3I6ZnVuY3Rpb24oZSl7eHM9ITAsa2k9ZX19O2Z1bmN0aW9uIFNwKGUsdCxuLGksbyxhLGYsZyx3KXt4cz0hMSxraT1udWxsLHhwLmFwcGx5KHdwLGFyZ3VtZW50cyl9ZnVuY3Rpb24ga3AoZSx0LG4saSxvLGEsZixnLHcpe2lmKFNwLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx4cyl7aWYoeHMpe3ZhciBGPWtpO3hzPSExLGtpPW51bGx9ZWxzZSB0aHJvdyBFcnJvcihsKDE5OCkpO0NpfHwoQ2k9ITAsaW89Ril9fWZ1bmN0aW9uIEduKGUpe3ZhciB0PWUsbj1lO2lmKGUuYWx0ZXJuYXRlKWZvcig7dC5yZXR1cm47KXQ9dC5yZXR1cm47ZWxzZXtlPXQ7ZG8gdD1lLCh0LmZsYWdzJjQwOTgpIT09MCYmKG49dC5yZXR1cm4pLGU9dC5yZXR1cm47d2hpbGUoZSl9cmV0dXJuIHQudGFnPT09Mz9uOm51bGx9ZnVuY3Rpb24gdGMoZSl7aWYoZS50YWc9PT0xMyl7dmFyIHQ9ZS5tZW1vaXplZFN0YXRlO2lmKHQ9PT1udWxsJiYoZT1lLmFsdGVybmF0ZSxlIT09bnVsbCYmKHQ9ZS5tZW1vaXplZFN0YXRlKSksdCE9PW51bGwpcmV0dXJuIHQuZGVoeWRyYXRlZH1yZXR1cm4gbnVsbH1mdW5jdGlvbiBuYyhlKXtpZihHbihlKSE9PWUpdGhyb3cgRXJyb3IobCgxODgpKX1mdW5jdGlvbiBDcChlKXt2YXIgdD1lLmFsdGVybmF0ZTtpZighdCl7aWYodD1HbihlKSx0PT09bnVsbCl0aHJvdyBFcnJvcihsKDE4OCkpO3JldHVybiB0IT09ZT9udWxsOmV9Zm9yKHZhciBuPWUsaT10Ozspe3ZhciBvPW4ucmV0dXJuO2lmKG89PT1udWxsKWJyZWFrO3ZhciBhPW8uYWx0ZXJuYXRlO2lmKGE9PT1udWxsKXtpZihpPW8ucmV0dXJuLGkhPT1udWxsKXtuPWk7Y29udGludWV9YnJlYWt9aWYoby5jaGlsZD09PWEuY2hpbGQpe2ZvcihhPW8uY2hpbGQ7YTspe2lmKGE9PT1uKXJldHVybiBuYyhvKSxlO2lmKGE9PT1pKXJldHVybiBuYyhvKSx0O2E9YS5zaWJsaW5nfXRocm93IEVycm9yKGwoMTg4KSl9aWYobi5yZXR1cm4hPT1pLnJldHVybiluPW8saT1hO2Vsc2V7Zm9yKHZhciBmPSExLGc9by5jaGlsZDtnOyl7aWYoZz09PW4pe2Y9ITAsbj1vLGk9YTticmVha31pZihnPT09aSl7Zj0hMCxpPW8sbj1hO2JyZWFrfWc9Zy5zaWJsaW5nfWlmKCFmKXtmb3IoZz1hLmNoaWxkO2c7KXtpZihnPT09bil7Zj0hMCxuPWEsaT1vO2JyZWFrfWlmKGc9PT1pKXtmPSEwLGk9YSxuPW87YnJlYWt9Zz1nLnNpYmxpbmd9aWYoIWYpdGhyb3cgRXJyb3IobCgxODkpKX19aWYobi5hbHRlcm5hdGUhPT1pKXRocm93IEVycm9yKGwoMTkwKSl9aWYobi50YWchPT0zKXRocm93IEVycm9yKGwoMTg4KSk7cmV0dXJuIG4uc3RhdGVOb2RlLmN1cnJlbnQ9PT1uP2U6dH1mdW5jdGlvbiByYyhlKXtyZXR1cm4gZT1DcChlKSxlIT09bnVsbD9zYyhlKTpudWxsfWZ1bmN0aW9uIHNjKGUpe2lmKGUudGFnPT09NXx8ZS50YWc9PT02KXJldHVybiBlO2ZvcihlPWUuY2hpbGQ7ZSE9PW51bGw7KXt2YXIgdD1zYyhlKTtpZih0IT09bnVsbClyZXR1cm4gdDtlPWUuc2libGluZ31yZXR1cm4gbnVsbH12YXIgaWM9cy51bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrLGxjPXMudW5zdGFibGVfY2FuY2VsQ2FsbGJhY2ssanA9cy51bnN0YWJsZV9zaG91bGRZaWVsZCxFcD1zLnVuc3RhYmxlX3JlcXVlc3RQYWludCxCZT1zLnVuc3RhYmxlX25vdyxOcD1zLnVuc3RhYmxlX2dldEN1cnJlbnRQcmlvcml0eUxldmVsLGxvPXMudW5zdGFibGVfSW1tZWRpYXRlUHJpb3JpdHksb2M9cy51bnN0YWJsZV9Vc2VyQmxvY2tpbmdQcmlvcml0eSxqaT1zLnVuc3RhYmxlX05vcm1hbFByaW9yaXR5LFJwPXMudW5zdGFibGVfTG93UHJpb3JpdHksYWM9cy51bnN0YWJsZV9JZGxlUHJpb3JpdHksRWk9bnVsbCxKdD1udWxsO2Z1bmN0aW9uIFBwKGUpe2lmKEp0JiZ0eXBlb2YgSnQub25Db21taXRGaWJlclJvb3Q9PSJmdW5jdGlvbiIpdHJ5e0p0Lm9uQ29tbWl0RmliZXJSb290KEVpLGUsdm9pZCAwLChlLmN1cnJlbnQuZmxhZ3MmMTI4KT09PTEyOCl9Y2F0Y2h7fX12YXIgenQ9TWF0aC5jbHozMj9NYXRoLmNsejMyOkZwLF9wPU1hdGgubG9nLFRwPU1hdGguTE4yO2Z1bmN0aW9uIEZwKGUpe3JldHVybiBlPj4+PTAsZT09PTA/MzI6MzEtKF9wKGUpL1RwfDApfDB9dmFyIE5pPTY0LFJpPTQxOTQzMDQ7ZnVuY3Rpb24gd3MoZSl7c3dpdGNoKGUmLWUpe2Nhc2UgMTpyZXR1cm4gMTtjYXNlIDI6cmV0dXJuIDI7Y2FzZSA0OnJldHVybiA0O2Nhc2UgODpyZXR1cm4gODtjYXNlIDE2OnJldHVybiAxNjtjYXNlIDMyOnJldHVybiAzMjtjYXNlIDY0OmNhc2UgMTI4OmNhc2UgMjU2OmNhc2UgNTEyOmNhc2UgMTAyNDpjYXNlIDIwNDg6Y2FzZSA0MDk2OmNhc2UgODE5MjpjYXNlIDE2Mzg0OmNhc2UgMzI3Njg6Y2FzZSA2NTUzNjpjYXNlIDEzMTA3MjpjYXNlIDI2MjE0NDpjYXNlIDUyNDI4ODpjYXNlIDEwNDg1NzY6Y2FzZSAyMDk3MTUyOnJldHVybiBlJjQxOTQyNDA7Y2FzZSA0MTk0MzA0OmNhc2UgODM4ODYwODpjYXNlIDE2Nzc3MjE2OmNhc2UgMzM1NTQ0MzI6Y2FzZSA2NzEwODg2NDpyZXR1cm4gZSYxMzAwMjM0MjQ7Y2FzZSAxMzQyMTc3Mjg6cmV0dXJuIDEzNDIxNzcyODtjYXNlIDI2ODQzNTQ1NjpyZXR1cm4gMjY4NDM1NDU2O2Nhc2UgNTM2ODcwOTEyOnJldHVybiA1MzY4NzA5MTI7Y2FzZSAxMDczNzQxODI0OnJldHVybiAxMDczNzQxODI0O2RlZmF1bHQ6cmV0dXJuIGV9fWZ1bmN0aW9uIFBpKGUsdCl7dmFyIG49ZS5wZW5kaW5nTGFuZXM7aWYobj09PTApcmV0dXJuIDA7dmFyIGk9MCxvPWUuc3VzcGVuZGVkTGFuZXMsYT1lLnBpbmdlZExhbmVzLGY9biYyNjg0MzU0NTU7aWYoZiE9PTApe3ZhciBnPWYmfm87ZyE9PTA/aT13cyhnKTooYSY9ZixhIT09MCYmKGk9d3MoYSkpKX1lbHNlIGY9biZ+byxmIT09MD9pPXdzKGYpOmEhPT0wJiYoaT13cyhhKSk7aWYoaT09PTApcmV0dXJuIDA7aWYodCE9PTAmJnQhPT1pJiYodCZvKT09PTAmJihvPWkmLWksYT10Ji10LG8+PWF8fG89PT0xNiYmKGEmNDE5NDI0MCkhPT0wKSlyZXR1cm4gdDtpZigoaSY0KSE9PTAmJihpfD1uJjE2KSx0PWUuZW50YW5nbGVkTGFuZXMsdCE9PTApZm9yKGU9ZS5lbnRhbmdsZW1lbnRzLHQmPWk7MDx0OyluPTMxLXp0KHQpLG89MTw8bixpfD1lW25dLHQmPX5vO3JldHVybiBpfWZ1bmN0aW9uIExwKGUsdCl7c3dpdGNoKGUpe2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OnJldHVybiB0KzI1MDtjYXNlIDg6Y2FzZSAxNjpjYXNlIDMyOmNhc2UgNjQ6Y2FzZSAxMjg6Y2FzZSAyNTY6Y2FzZSA1MTI6Y2FzZSAxMDI0OmNhc2UgMjA0ODpjYXNlIDQwOTY6Y2FzZSA4MTkyOmNhc2UgMTYzODQ6Y2FzZSAzMjc2ODpjYXNlIDY1NTM2OmNhc2UgMTMxMDcyOmNhc2UgMjYyMTQ0OmNhc2UgNTI0Mjg4OmNhc2UgMTA0ODU3NjpjYXNlIDIwOTcxNTI6cmV0dXJuIHQrNWUzO2Nhc2UgNDE5NDMwNDpjYXNlIDgzODg2MDg6Y2FzZSAxNjc3NzIxNjpjYXNlIDMzNTU0NDMyOmNhc2UgNjcxMDg4NjQ6cmV0dXJuLTE7Y2FzZSAxMzQyMTc3Mjg6Y2FzZSAyNjg0MzU0NTY6Y2FzZSA1MzY4NzA5MTI6Y2FzZSAxMDczNzQxODI0OnJldHVybi0xO2RlZmF1bHQ6cmV0dXJuLTF9fWZ1bmN0aW9uIERwKGUsdCl7Zm9yKHZhciBuPWUuc3VzcGVuZGVkTGFuZXMsaT1lLnBpbmdlZExhbmVzLG89ZS5leHBpcmF0aW9uVGltZXMsYT1lLnBlbmRpbmdMYW5lczswPGE7KXt2YXIgZj0zMS16dChhKSxnPTE8PGYsdz1vW2ZdO3c9PT0tMT8oKGcmbik9PT0wfHwoZyZpKSE9PTApJiYob1tmXT1McChnLHQpKTp3PD10JiYoZS5leHBpcmVkTGFuZXN8PWcpLGEmPX5nfX1mdW5jdGlvbiBvbyhlKXtyZXR1cm4gZT1lLnBlbmRpbmdMYW5lcyYtMTA3Mzc0MTgyNSxlIT09MD9lOmUmMTA3Mzc0MTgyND8xMDczNzQxODI0OjB9ZnVuY3Rpb24gdWMoKXt2YXIgZT1OaTtyZXR1cm4gTmk8PD0xLChOaSY0MTk0MjQwKT09PTAmJihOaT02NCksZX1mdW5jdGlvbiBhbyhlKXtmb3IodmFyIHQ9W10sbj0wOzMxPm47bisrKXQucHVzaChlKTtyZXR1cm4gdH1mdW5jdGlvbiBTcyhlLHQsbil7ZS5wZW5kaW5nTGFuZXN8PXQsdCE9PTUzNjg3MDkxMiYmKGUuc3VzcGVuZGVkTGFuZXM9MCxlLnBpbmdlZExhbmVzPTApLGU9ZS5ldmVudFRpbWVzLHQ9MzEtenQodCksZVt0XT1ufWZ1bmN0aW9uIE9wKGUsdCl7dmFyIG49ZS5wZW5kaW5nTGFuZXMmfnQ7ZS5wZW5kaW5nTGFuZXM9dCxlLnN1c3BlbmRlZExhbmVzPTAsZS5waW5nZWRMYW5lcz0wLGUuZXhwaXJlZExhbmVzJj10LGUubXV0YWJsZVJlYWRMYW5lcyY9dCxlLmVudGFuZ2xlZExhbmVzJj10LHQ9ZS5lbnRhbmdsZW1lbnRzO3ZhciBpPWUuZXZlbnRUaW1lcztmb3IoZT1lLmV4cGlyYXRpb25UaW1lczswPG47KXt2YXIgbz0zMS16dChuKSxhPTE8PG87dFtvXT0wLGlbb109LTEsZVtvXT0tMSxuJj1+YX19ZnVuY3Rpb24gdW8oZSx0KXt2YXIgbj1lLmVudGFuZ2xlZExhbmVzfD10O2ZvcihlPWUuZW50YW5nbGVtZW50cztuOyl7dmFyIGk9MzEtenQobiksbz0xPDxpO28mdHxlW2ldJnQmJihlW2ldfD10KSxuJj1+b319dmFyIGplPTA7ZnVuY3Rpb24gY2MoZSl7cmV0dXJuIGUmPS1lLDE8ZT80PGU/KGUmMjY4NDM1NDU1KSE9PTA/MTY6NTM2ODcwOTEyOjQ6MX12YXIgZGMsY28sZmMsaGMscGMsZm89ITEsX2k9W10sd249bnVsbCxTbj1udWxsLGtuPW51bGwsa3M9bmV3IE1hcCxDcz1uZXcgTWFwLENuPVtdLElwPSJtb3VzZWRvd24gbW91c2V1cCB0b3VjaGNhbmNlbCB0b3VjaGVuZCB0b3VjaHN0YXJ0IGF1eGNsaWNrIGRibGNsaWNrIHBvaW50ZXJjYW5jZWwgcG9pbnRlcmRvd24gcG9pbnRlcnVwIGRyYWdlbmQgZHJhZ3N0YXJ0IGRyb3AgY29tcG9zaXRpb25lbmQgY29tcG9zaXRpb25zdGFydCBrZXlkb3duIGtleXByZXNzIGtleXVwIGlucHV0IHRleHRJbnB1dCBjb3B5IGN1dCBwYXN0ZSBjbGljayBjaGFuZ2UgY29udGV4dG1lbnUgcmVzZXQgc3VibWl0Ii5zcGxpdCgiICIpO2Z1bmN0aW9uIG1jKGUsdCl7c3dpdGNoKGUpe2Nhc2UiZm9jdXNpbiI6Y2FzZSJmb2N1c291dCI6d249bnVsbDticmVhaztjYXNlImRyYWdlbnRlciI6Y2FzZSJkcmFnbGVhdmUiOlNuPW51bGw7YnJlYWs7Y2FzZSJtb3VzZW92ZXIiOmNhc2UibW91c2VvdXQiOmtuPW51bGw7YnJlYWs7Y2FzZSJwb2ludGVyb3ZlciI6Y2FzZSJwb2ludGVyb3V0Ijprcy5kZWxldGUodC5wb2ludGVySWQpO2JyZWFrO2Nhc2UiZ290cG9pbnRlcmNhcHR1cmUiOmNhc2UibG9zdHBvaW50ZXJjYXB0dXJlIjpDcy5kZWxldGUodC5wb2ludGVySWQpfX1mdW5jdGlvbiBqcyhlLHQsbixpLG8sYSl7cmV0dXJuIGU9PT1udWxsfHxlLm5hdGl2ZUV2ZW50IT09YT8oZT17YmxvY2tlZE9uOnQsZG9tRXZlbnROYW1lOm4sZXZlbnRTeXN0ZW1GbGFnczppLG5hdGl2ZUV2ZW50OmEsdGFyZ2V0Q29udGFpbmVyczpbb119LHQhPT1udWxsJiYodD1Bcyh0KSx0IT09bnVsbCYmY28odCkpLGUpOihlLmV2ZW50U3lzdGVtRmxhZ3N8PWksdD1lLnRhcmdldENvbnRhaW5lcnMsbyE9PW51bGwmJnQuaW5kZXhPZihvKT09PS0xJiZ0LnB1c2gobyksZSl9ZnVuY3Rpb24gTXAoZSx0LG4saSxvKXtzd2l0Y2godCl7Y2FzZSJmb2N1c2luIjpyZXR1cm4gd249anMod24sZSx0LG4saSxvKSwhMDtjYXNlImRyYWdlbnRlciI6cmV0dXJuIFNuPWpzKFNuLGUsdCxuLGksbyksITA7Y2FzZSJtb3VzZW92ZXIiOnJldHVybiBrbj1qcyhrbixlLHQsbixpLG8pLCEwO2Nhc2UicG9pbnRlcm92ZXIiOnZhciBhPW8ucG9pbnRlcklkO3JldHVybiBrcy5zZXQoYSxqcyhrcy5nZXQoYSl8fG51bGwsZSx0LG4saSxvKSksITA7Y2FzZSJnb3Rwb2ludGVyY2FwdHVyZSI6cmV0dXJuIGE9by5wb2ludGVySWQsQ3Muc2V0KGEsanMoQ3MuZ2V0KGEpfHxudWxsLGUsdCxuLGksbykpLCEwfXJldHVybiExfWZ1bmN0aW9uIGdjKGUpe3ZhciB0PUpuKGUudGFyZ2V0KTtpZih0IT09bnVsbCl7dmFyIG49R24odCk7aWYobiE9PW51bGwpe2lmKHQ9bi50YWcsdD09PTEzKXtpZih0PXRjKG4pLHQhPT1udWxsKXtlLmJsb2NrZWRPbj10LHBjKGUucHJpb3JpdHksZnVuY3Rpb24oKXtmYyhuKX0pO3JldHVybn19ZWxzZSBpZih0PT09MyYmbi5zdGF0ZU5vZGUuY3VycmVudC5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCl7ZS5ibG9ja2VkT249bi50YWc9PT0zP24uc3RhdGVOb2RlLmNvbnRhaW5lckluZm86bnVsbDtyZXR1cm59fX1lLmJsb2NrZWRPbj1udWxsfWZ1bmN0aW9uIFRpKGUpe2lmKGUuYmxvY2tlZE9uIT09bnVsbClyZXR1cm4hMTtmb3IodmFyIHQ9ZS50YXJnZXRDb250YWluZXJzOzA8dC5sZW5ndGg7KXt2YXIgbj1wbyhlLmRvbUV2ZW50TmFtZSxlLmV2ZW50U3lzdGVtRmxhZ3MsdFswXSxlLm5hdGl2ZUV2ZW50KTtpZihuPT09bnVsbCl7bj1lLm5hdGl2ZUV2ZW50O3ZhciBpPW5ldyBuLmNvbnN0cnVjdG9yKG4udHlwZSxuKTtlbz1pLG4udGFyZ2V0LmRpc3BhdGNoRXZlbnQoaSksZW89bnVsbH1lbHNlIHJldHVybiB0PUFzKG4pLHQhPT1udWxsJiZjbyh0KSxlLmJsb2NrZWRPbj1uLCExO3Quc2hpZnQoKX1yZXR1cm4hMH1mdW5jdGlvbiB2YyhlLHQsbil7VGkoZSkmJm4uZGVsZXRlKHQpfWZ1bmN0aW9uIHpwKCl7Zm89ITEsd24hPT1udWxsJiZUaSh3bikmJih3bj1udWxsKSxTbiE9PW51bGwmJlRpKFNuKSYmKFNuPW51bGwpLGtuIT09bnVsbCYmVGkoa24pJiYoa249bnVsbCksa3MuZm9yRWFjaCh2YyksQ3MuZm9yRWFjaCh2Yyl9ZnVuY3Rpb24gRXMoZSx0KXtlLmJsb2NrZWRPbj09PXQmJihlLmJsb2NrZWRPbj1udWxsLGZvfHwoZm89ITAscy51bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrKHMudW5zdGFibGVfTm9ybWFsUHJpb3JpdHksenApKSl9ZnVuY3Rpb24gTnMoZSl7ZnVuY3Rpb24gdChvKXtyZXR1cm4gRXMobyxlKX1pZigwPF9pLmxlbmd0aCl7RXMoX2lbMF0sZSk7Zm9yKHZhciBuPTE7bjxfaS5sZW5ndGg7bisrKXt2YXIgaT1faVtuXTtpLmJsb2NrZWRPbj09PWUmJihpLmJsb2NrZWRPbj1udWxsKX19Zm9yKHduIT09bnVsbCYmRXMod24sZSksU24hPT1udWxsJiZFcyhTbixlKSxrbiE9PW51bGwmJkVzKGtuLGUpLGtzLmZvckVhY2godCksQ3MuZm9yRWFjaCh0KSxuPTA7bjxDbi5sZW5ndGg7bisrKWk9Q25bbl0saS5ibG9ja2VkT249PT1lJiYoaS5ibG9ja2VkT249bnVsbCk7Zm9yKDswPENuLmxlbmd0aCYmKG49Q25bMF0sbi5ibG9ja2VkT249PT1udWxsKTspZ2Mobiksbi5ibG9ja2VkT249PT1udWxsJiZDbi5zaGlmdCgpfXZhciBFcj1WLlJlYWN0Q3VycmVudEJhdGNoQ29uZmlnLEZpPSEwO2Z1bmN0aW9uIEFwKGUsdCxuLGkpe3ZhciBvPWplLGE9RXIudHJhbnNpdGlvbjtFci50cmFuc2l0aW9uPW51bGw7dHJ5e2plPTEsaG8oZSx0LG4saSl9ZmluYWxseXtqZT1vLEVyLnRyYW5zaXRpb249YX19ZnVuY3Rpb24gJHAoZSx0LG4saSl7dmFyIG89amUsYT1Fci50cmFuc2l0aW9uO0VyLnRyYW5zaXRpb249bnVsbDt0cnl7amU9NCxobyhlLHQsbixpKX1maW5hbGx5e2plPW8sRXIudHJhbnNpdGlvbj1hfX1mdW5jdGlvbiBobyhlLHQsbixpKXtpZihGaSl7dmFyIG89cG8oZSx0LG4saSk7aWYobz09PW51bGwpRm8oZSx0LGksTGksbiksbWMoZSxpKTtlbHNlIGlmKE1wKG8sZSx0LG4saSkpaS5zdG9wUHJvcGFnYXRpb24oKTtlbHNlIGlmKG1jKGUsaSksdCY0JiYtMTxJcC5pbmRleE9mKGUpKXtmb3IoO28hPT1udWxsOyl7dmFyIGE9QXMobyk7aWYoYSE9PW51bGwmJmRjKGEpLGE9cG8oZSx0LG4saSksYT09PW51bGwmJkZvKGUsdCxpLExpLG4pLGE9PT1vKWJyZWFrO289YX1vIT09bnVsbCYmaS5zdG9wUHJvcGFnYXRpb24oKX1lbHNlIEZvKGUsdCxpLG51bGwsbil9fXZhciBMaT1udWxsO2Z1bmN0aW9uIHBvKGUsdCxuLGkpe2lmKExpPW51bGwsZT10byhpKSxlPUpuKGUpLGUhPT1udWxsKWlmKHQ9R24oZSksdD09PW51bGwpZT1udWxsO2Vsc2UgaWYobj10LnRhZyxuPT09MTMpe2lmKGU9dGModCksZSE9PW51bGwpcmV0dXJuIGU7ZT1udWxsfWVsc2UgaWYobj09PTMpe2lmKHQuc3RhdGVOb2RlLmN1cnJlbnQubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQpcmV0dXJuIHQudGFnPT09Mz90LnN0YXRlTm9kZS5jb250YWluZXJJbmZvOm51bGw7ZT1udWxsfWVsc2UgdCE9PWUmJihlPW51bGwpO3JldHVybiBMaT1lLG51bGx9ZnVuY3Rpb24geWMoZSl7c3dpdGNoKGUpe2Nhc2UiY2FuY2VsIjpjYXNlImNsaWNrIjpjYXNlImNsb3NlIjpjYXNlImNvbnRleHRtZW51IjpjYXNlImNvcHkiOmNhc2UiY3V0IjpjYXNlImF1eGNsaWNrIjpjYXNlImRibGNsaWNrIjpjYXNlImRyYWdlbmQiOmNhc2UiZHJhZ3N0YXJ0IjpjYXNlImRyb3AiOmNhc2UiZm9jdXNpbiI6Y2FzZSJmb2N1c291dCI6Y2FzZSJpbnB1dCI6Y2FzZSJpbnZhbGlkIjpjYXNlImtleWRvd24iOmNhc2Uia2V5cHJlc3MiOmNhc2Uia2V5dXAiOmNhc2UibW91c2Vkb3duIjpjYXNlIm1vdXNldXAiOmNhc2UicGFzdGUiOmNhc2UicGF1c2UiOmNhc2UicGxheSI6Y2FzZSJwb2ludGVyY2FuY2VsIjpjYXNlInBvaW50ZXJkb3duIjpjYXNlInBvaW50ZXJ1cCI6Y2FzZSJyYXRlY2hhbmdlIjpjYXNlInJlc2V0IjpjYXNlInJlc2l6ZSI6Y2FzZSJzZWVrZWQiOmNhc2Uic3VibWl0IjpjYXNlInRvdWNoY2FuY2VsIjpjYXNlInRvdWNoZW5kIjpjYXNlInRvdWNoc3RhcnQiOmNhc2Uidm9sdW1lY2hhbmdlIjpjYXNlImNoYW5nZSI6Y2FzZSJzZWxlY3Rpb25jaGFuZ2UiOmNhc2UidGV4dElucHV0IjpjYXNlImNvbXBvc2l0aW9uc3RhcnQiOmNhc2UiY29tcG9zaXRpb25lbmQiOmNhc2UiY29tcG9zaXRpb251cGRhdGUiOmNhc2UiYmVmb3JlYmx1ciI6Y2FzZSJhZnRlcmJsdXIiOmNhc2UiYmVmb3JlaW5wdXQiOmNhc2UiYmx1ciI6Y2FzZSJmdWxsc2NyZWVuY2hhbmdlIjpjYXNlImZvY3VzIjpjYXNlImhhc2hjaGFuZ2UiOmNhc2UicG9wc3RhdGUiOmNhc2Uic2VsZWN0IjpjYXNlInNlbGVjdHN0YXJ0IjpyZXR1cm4gMTtjYXNlImRyYWciOmNhc2UiZHJhZ2VudGVyIjpjYXNlImRyYWdleGl0IjpjYXNlImRyYWdsZWF2ZSI6Y2FzZSJkcmFnb3ZlciI6Y2FzZSJtb3VzZW1vdmUiOmNhc2UibW91c2VvdXQiOmNhc2UibW91c2VvdmVyIjpjYXNlInBvaW50ZXJtb3ZlIjpjYXNlInBvaW50ZXJvdXQiOmNhc2UicG9pbnRlcm92ZXIiOmNhc2Uic2Nyb2xsIjpjYXNlInRvZ2dsZSI6Y2FzZSJ0b3VjaG1vdmUiOmNhc2Uid2hlZWwiOmNhc2UibW91c2VlbnRlciI6Y2FzZSJtb3VzZWxlYXZlIjpjYXNlInBvaW50ZXJlbnRlciI6Y2FzZSJwb2ludGVybGVhdmUiOnJldHVybiA0O2Nhc2UibWVzc2FnZSI6c3dpdGNoKE5wKCkpe2Nhc2UgbG86cmV0dXJuIDE7Y2FzZSBvYzpyZXR1cm4gNDtjYXNlIGppOmNhc2UgUnA6cmV0dXJuIDE2O2Nhc2UgYWM6cmV0dXJuIDUzNjg3MDkxMjtkZWZhdWx0OnJldHVybiAxNn1kZWZhdWx0OnJldHVybiAxNn19dmFyIGpuPW51bGwsbW89bnVsbCxEaT1udWxsO2Z1bmN0aW9uIHhjKCl7aWYoRGkpcmV0dXJuIERpO3ZhciBlLHQ9bW8sbj10Lmxlbmd0aCxpLG89InZhbHVlImluIGpuP2puLnZhbHVlOmpuLnRleHRDb250ZW50LGE9by5sZW5ndGg7Zm9yKGU9MDtlPG4mJnRbZV09PT1vW2VdO2UrKyk7dmFyIGY9bi1lO2ZvcihpPTE7aTw9ZiYmdFtuLWldPT09b1thLWldO2krKyk7cmV0dXJuIERpPW8uc2xpY2UoZSwxPGk/MS1pOnZvaWQgMCl9ZnVuY3Rpb24gT2koZSl7dmFyIHQ9ZS5rZXlDb2RlO3JldHVybiJjaGFyQ29kZSJpbiBlPyhlPWUuY2hhckNvZGUsZT09PTAmJnQ9PT0xMyYmKGU9MTMpKTplPXQsZT09PTEwJiYoZT0xMyksMzI8PWV8fGU9PT0xMz9lOjB9ZnVuY3Rpb24gSWkoKXtyZXR1cm4hMH1mdW5jdGlvbiB3Yygpe3JldHVybiExfWZ1bmN0aW9uIHh0KGUpe2Z1bmN0aW9uIHQobixpLG8sYSxmKXt0aGlzLl9yZWFjdE5hbWU9bix0aGlzLl90YXJnZXRJbnN0PW8sdGhpcy50eXBlPWksdGhpcy5uYXRpdmVFdmVudD1hLHRoaXMudGFyZ2V0PWYsdGhpcy5jdXJyZW50VGFyZ2V0PW51bGw7Zm9yKHZhciBnIGluIGUpZS5oYXNPd25Qcm9wZXJ0eShnKSYmKG49ZVtnXSx0aGlzW2ddPW4/bihhKTphW2ddKTtyZXR1cm4gdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9KGEuZGVmYXVsdFByZXZlbnRlZCE9bnVsbD9hLmRlZmF1bHRQcmV2ZW50ZWQ6YS5yZXR1cm5WYWx1ZT09PSExKT9JaTp3Yyx0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPXdjLHRoaXN9cmV0dXJuIHEodC5wcm90b3R5cGUse3ByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dGhpcy5kZWZhdWx0UHJldmVudGVkPSEwO3ZhciBuPXRoaXMubmF0aXZlRXZlbnQ7biYmKG4ucHJldmVudERlZmF1bHQ/bi5wcmV2ZW50RGVmYXVsdCgpOnR5cGVvZiBuLnJldHVyblZhbHVlIT0idW5rbm93biImJihuLnJldHVyblZhbHVlPSExKSx0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1JaSl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBuPXRoaXMubmF0aXZlRXZlbnQ7biYmKG4uc3RvcFByb3BhZ2F0aW9uP24uc3RvcFByb3BhZ2F0aW9uKCk6dHlwZW9mIG4uY2FuY2VsQnViYmxlIT0idW5rbm93biImJihuLmNhbmNlbEJ1YmJsZT0hMCksdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1JaSl9LHBlcnNpc3Q6ZnVuY3Rpb24oKXt9LGlzUGVyc2lzdGVudDpJaX0pLHR9dmFyIE5yPXtldmVudFBoYXNlOjAsYnViYmxlczowLGNhbmNlbGFibGU6MCx0aW1lU3RhbXA6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudGltZVN0YW1wfHxEYXRlLm5vdygpfSxkZWZhdWx0UHJldmVudGVkOjAsaXNUcnVzdGVkOjB9LGdvPXh0KE5yKSxScz1xKHt9LE5yLHt2aWV3OjAsZGV0YWlsOjB9KSxVcD14dChScyksdm8seW8sUHMsTWk9cSh7fSxScyx7c2NyZWVuWDowLHNjcmVlblk6MCxjbGllbnRYOjAsY2xpZW50WTowLHBhZ2VYOjAscGFnZVk6MCxjdHJsS2V5OjAsc2hpZnRLZXk6MCxhbHRLZXk6MCxtZXRhS2V5OjAsZ2V0TW9kaWZpZXJTdGF0ZTp3byxidXR0b246MCxidXR0b25zOjAscmVsYXRlZFRhcmdldDpmdW5jdGlvbihlKXtyZXR1cm4gZS5yZWxhdGVkVGFyZ2V0PT09dm9pZCAwP2UuZnJvbUVsZW1lbnQ9PT1lLnNyY0VsZW1lbnQ/ZS50b0VsZW1lbnQ6ZS5mcm9tRWxlbWVudDplLnJlbGF0ZWRUYXJnZXR9LG1vdmVtZW50WDpmdW5jdGlvbihlKXtyZXR1cm4ibW92ZW1lbnRYImluIGU/ZS5tb3ZlbWVudFg6KGUhPT1QcyYmKFBzJiZlLnR5cGU9PT0ibW91c2Vtb3ZlIj8odm89ZS5zY3JlZW5YLVBzLnNjcmVlblgseW89ZS5zY3JlZW5ZLVBzLnNjcmVlblkpOnlvPXZvPTAsUHM9ZSksdm8pfSxtb3ZlbWVudFk6ZnVuY3Rpb24oZSl7cmV0dXJuIm1vdmVtZW50WSJpbiBlP2UubW92ZW1lbnRZOnlvfX0pLFNjPXh0KE1pKSxicD1xKHt9LE1pLHtkYXRhVHJhbnNmZXI6MH0pLEJwPXh0KGJwKSxIcD1xKHt9LFJzLHtyZWxhdGVkVGFyZ2V0OjB9KSx4bz14dChIcCksUXA9cSh7fSxOcix7YW5pbWF0aW9uTmFtZTowLGVsYXBzZWRUaW1lOjAscHNldWRvRWxlbWVudDowfSkscXA9eHQoUXApLFdwPXEoe30sTnIse2NsaXBib2FyZERhdGE6ZnVuY3Rpb24oZSl7cmV0dXJuImNsaXBib2FyZERhdGEiaW4gZT9lLmNsaXBib2FyZERhdGE6d2luZG93LmNsaXBib2FyZERhdGF9fSksVnA9eHQoV3ApLEtwPXEoe30sTnIse2RhdGE6MH0pLGtjPXh0KEtwKSxHcD17RXNjOiJFc2NhcGUiLFNwYWNlYmFyOiIgIixMZWZ0OiJBcnJvd0xlZnQiLFVwOiJBcnJvd1VwIixSaWdodDoiQXJyb3dSaWdodCIsRG93bjoiQXJyb3dEb3duIixEZWw6IkRlbGV0ZSIsV2luOiJPUyIsTWVudToiQ29udGV4dE1lbnUiLEFwcHM6IkNvbnRleHRNZW51IixTY3JvbGw6IlNjcm9sbExvY2siLE1velByaW50YWJsZUtleToiVW5pZGVudGlmaWVkIn0sSnA9ezg6IkJhY2tzcGFjZSIsOToiVGFiIiwxMjoiQ2xlYXIiLDEzOiJFbnRlciIsMTY6IlNoaWZ0IiwxNzoiQ29udHJvbCIsMTg6IkFsdCIsMTk6IlBhdXNlIiwyMDoiQ2Fwc0xvY2siLDI3OiJFc2NhcGUiLDMyOiIgIiwzMzoiUGFnZVVwIiwzNDoiUGFnZURvd24iLDM1OiJFbmQiLDM2OiJIb21lIiwzNzoiQXJyb3dMZWZ0IiwzODoiQXJyb3dVcCIsMzk6IkFycm93UmlnaHQiLDQwOiJBcnJvd0Rvd24iLDQ1OiJJbnNlcnQiLDQ2OiJEZWxldGUiLDExMjoiRjEiLDExMzoiRjIiLDExNDoiRjMiLDExNToiRjQiLDExNjoiRjUiLDExNzoiRjYiLDExODoiRjciLDExOToiRjgiLDEyMDoiRjkiLDEyMToiRjEwIiwxMjI6IkYxMSIsMTIzOiJGMTIiLDE0NDoiTnVtTG9jayIsMTQ1OiJTY3JvbGxMb2NrIiwyMjQ6Ik1ldGEifSxZcD17QWx0OiJhbHRLZXkiLENvbnRyb2w6ImN0cmxLZXkiLE1ldGE6Im1ldGFLZXkiLFNoaWZ0OiJzaGlmdEtleSJ9O2Z1bmN0aW9uIFhwKGUpe3ZhciB0PXRoaXMubmF0aXZlRXZlbnQ7cmV0dXJuIHQuZ2V0TW9kaWZpZXJTdGF0ZT90LmdldE1vZGlmaWVyU3RhdGUoZSk6KGU9WXBbZV0pPyEhdFtlXTohMX1mdW5jdGlvbiB3bygpe3JldHVybiBYcH12YXIgWnA9cSh7fSxScyx7a2V5OmZ1bmN0aW9uKGUpe2lmKGUua2V5KXt2YXIgdD1HcFtlLmtleV18fGUua2V5O2lmKHQhPT0iVW5pZGVudGlmaWVkIilyZXR1cm4gdH1yZXR1cm4gZS50eXBlPT09ImtleXByZXNzIj8oZT1PaShlKSxlPT09MTM/IkVudGVyIjpTdHJpbmcuZnJvbUNoYXJDb2RlKGUpKTplLnR5cGU9PT0ia2V5ZG93biJ8fGUudHlwZT09PSJrZXl1cCI/SnBbZS5rZXlDb2RlXXx8IlVuaWRlbnRpZmllZCI6IiJ9LGNvZGU6MCxsb2NhdGlvbjowLGN0cmxLZXk6MCxzaGlmdEtleTowLGFsdEtleTowLG1ldGFLZXk6MCxyZXBlYXQ6MCxsb2NhbGU6MCxnZXRNb2RpZmllclN0YXRlOndvLGNoYXJDb2RlOmZ1bmN0aW9uKGUpe3JldHVybiBlLnR5cGU9PT0ia2V5cHJlc3MiP09pKGUpOjB9LGtleUNvZGU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudHlwZT09PSJrZXlkb3duInx8ZS50eXBlPT09ImtleXVwIj9lLmtleUNvZGU6MH0sd2hpY2g6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudHlwZT09PSJrZXlwcmVzcyI/T2koZSk6ZS50eXBlPT09ImtleWRvd24ifHxlLnR5cGU9PT0ia2V5dXAiP2Uua2V5Q29kZTowfX0pLGVtPXh0KFpwKSx0bT1xKHt9LE1pLHtwb2ludGVySWQ6MCx3aWR0aDowLGhlaWdodDowLHByZXNzdXJlOjAsdGFuZ2VudGlhbFByZXNzdXJlOjAsdGlsdFg6MCx0aWx0WTowLHR3aXN0OjAscG9pbnRlclR5cGU6MCxpc1ByaW1hcnk6MH0pLENjPXh0KHRtKSxubT1xKHt9LFJzLHt0b3VjaGVzOjAsdGFyZ2V0VG91Y2hlczowLGNoYW5nZWRUb3VjaGVzOjAsYWx0S2V5OjAsbWV0YUtleTowLGN0cmxLZXk6MCxzaGlmdEtleTowLGdldE1vZGlmaWVyU3RhdGU6d299KSxybT14dChubSksc209cSh7fSxOcix7cHJvcGVydHlOYW1lOjAsZWxhcHNlZFRpbWU6MCxwc2V1ZG9FbGVtZW50OjB9KSxpbT14dChzbSksbG09cSh7fSxNaSx7ZGVsdGFYOmZ1bmN0aW9uKGUpe3JldHVybiJkZWx0YVgiaW4gZT9lLmRlbHRhWDoid2hlZWxEZWx0YVgiaW4gZT8tZS53aGVlbERlbHRhWDowfSxkZWx0YVk6ZnVuY3Rpb24oZSl7cmV0dXJuImRlbHRhWSJpbiBlP2UuZGVsdGFZOiJ3aGVlbERlbHRhWSJpbiBlPy1lLndoZWVsRGVsdGFZOiJ3aGVlbERlbHRhImluIGU/LWUud2hlZWxEZWx0YTowfSxkZWx0YVo6MCxkZWx0YU1vZGU6MH0pLG9tPXh0KGxtKSxhbT1bOSwxMywyNywzMl0sU289bSYmIkNvbXBvc2l0aW9uRXZlbnQiaW4gd2luZG93LF9zPW51bGw7bSYmImRvY3VtZW50TW9kZSJpbiBkb2N1bWVudCYmKF9zPWRvY3VtZW50LmRvY3VtZW50TW9kZSk7dmFyIHVtPW0mJiJUZXh0RXZlbnQiaW4gd2luZG93JiYhX3MsamM9bSYmKCFTb3x8X3MmJjg8X3MmJjExPj1fcyksRWM9IiAiLE5jPSExO2Z1bmN0aW9uIFJjKGUsdCl7c3dpdGNoKGUpe2Nhc2Uia2V5dXAiOnJldHVybiBhbS5pbmRleE9mKHQua2V5Q29kZSkhPT0tMTtjYXNlImtleWRvd24iOnJldHVybiB0LmtleUNvZGUhPT0yMjk7Y2FzZSJrZXlwcmVzcyI6Y2FzZSJtb3VzZWRvd24iOmNhc2UiZm9jdXNvdXQiOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIFBjKGUpe3JldHVybiBlPWUuZGV0YWlsLHR5cGVvZiBlPT0ib2JqZWN0IiYmImRhdGEiaW4gZT9lLmRhdGE6bnVsbH12YXIgUnI9ITE7ZnVuY3Rpb24gY20oZSx0KXtzd2l0Y2goZSl7Y2FzZSJjb21wb3NpdGlvbmVuZCI6cmV0dXJuIFBjKHQpO2Nhc2Uia2V5cHJlc3MiOnJldHVybiB0LndoaWNoIT09MzI/bnVsbDooTmM9ITAsRWMpO2Nhc2UidGV4dElucHV0IjpyZXR1cm4gZT10LmRhdGEsZT09PUVjJiZOYz9udWxsOmU7ZGVmYXVsdDpyZXR1cm4gbnVsbH19ZnVuY3Rpb24gZG0oZSx0KXtpZihScilyZXR1cm4gZT09PSJjb21wb3NpdGlvbmVuZCJ8fCFTbyYmUmMoZSx0KT8oZT14YygpLERpPW1vPWpuPW51bGwsUnI9ITEsZSk6bnVsbDtzd2l0Y2goZSl7Y2FzZSJwYXN0ZSI6cmV0dXJuIG51bGw7Y2FzZSJrZXlwcmVzcyI6aWYoISh0LmN0cmxLZXl8fHQuYWx0S2V5fHx0Lm1ldGFLZXkpfHx0LmN0cmxLZXkmJnQuYWx0S2V5KXtpZih0LmNoYXImJjE8dC5jaGFyLmxlbmd0aClyZXR1cm4gdC5jaGFyO2lmKHQud2hpY2gpcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUodC53aGljaCl9cmV0dXJuIG51bGw7Y2FzZSJjb21wb3NpdGlvbmVuZCI6cmV0dXJuIGpjJiZ0LmxvY2FsZSE9PSJrbyI/bnVsbDp0LmRhdGE7ZGVmYXVsdDpyZXR1cm4gbnVsbH19dmFyIGZtPXtjb2xvcjohMCxkYXRlOiEwLGRhdGV0aW1lOiEwLCJkYXRldGltZS1sb2NhbCI6ITAsZW1haWw6ITAsbW9udGg6ITAsbnVtYmVyOiEwLHBhc3N3b3JkOiEwLHJhbmdlOiEwLHNlYXJjaDohMCx0ZWw6ITAsdGV4dDohMCx0aW1lOiEwLHVybDohMCx3ZWVrOiEwfTtmdW5jdGlvbiBfYyhlKXt2YXIgdD1lJiZlLm5vZGVOYW1lJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuIHQ9PT0iaW5wdXQiPyEhZm1bZS50eXBlXTp0PT09InRleHRhcmVhIn1mdW5jdGlvbiBUYyhlLHQsbixpKXtKdShpKSx0PWJpKHQsIm9uQ2hhbmdlIiksMDx0Lmxlbmd0aCYmKG49bmV3IGdvKCJvbkNoYW5nZSIsImNoYW5nZSIsbnVsbCxuLGkpLGUucHVzaCh7ZXZlbnQ6bixsaXN0ZW5lcnM6dH0pKX12YXIgVHM9bnVsbCxGcz1udWxsO2Z1bmN0aW9uIGhtKGUpe0tjKGUsMCl9ZnVuY3Rpb24gemkoZSl7dmFyIHQ9THIoZSk7aWYoQXUodCkpcmV0dXJuIGV9ZnVuY3Rpb24gcG0oZSx0KXtpZihlPT09ImNoYW5nZSIpcmV0dXJuIHR9dmFyIEZjPSExO2lmKG0pe3ZhciBrbztpZihtKXt2YXIgQ289Im9uaW5wdXQiaW4gZG9jdW1lbnQ7aWYoIUNvKXt2YXIgTGM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7TGMuc2V0QXR0cmlidXRlKCJvbmlucHV0IiwicmV0dXJuOyIpLENvPXR5cGVvZiBMYy5vbmlucHV0PT0iZnVuY3Rpb24ifWtvPUNvfWVsc2Uga289ITE7RmM9a28mJighZG9jdW1lbnQuZG9jdW1lbnRNb2RlfHw5PGRvY3VtZW50LmRvY3VtZW50TW9kZSl9ZnVuY3Rpb24gRGMoKXtUcyYmKFRzLmRldGFjaEV2ZW50KCJvbnByb3BlcnR5Y2hhbmdlIixPYyksRnM9VHM9bnVsbCl9ZnVuY3Rpb24gT2MoZSl7aWYoZS5wcm9wZXJ0eU5hbWU9PT0idmFsdWUiJiZ6aShGcykpe3ZhciB0PVtdO1RjKHQsRnMsZSx0byhlKSksZWMoaG0sdCl9fWZ1bmN0aW9uIG1tKGUsdCxuKXtlPT09ImZvY3VzaW4iPyhEYygpLFRzPXQsRnM9bixUcy5hdHRhY2hFdmVudCgib25wcm9wZXJ0eWNoYW5nZSIsT2MpKTplPT09ImZvY3Vzb3V0IiYmRGMoKX1mdW5jdGlvbiBnbShlKXtpZihlPT09InNlbGVjdGlvbmNoYW5nZSJ8fGU9PT0ia2V5dXAifHxlPT09ImtleWRvd24iKXJldHVybiB6aShGcyl9ZnVuY3Rpb24gdm0oZSx0KXtpZihlPT09ImNsaWNrIilyZXR1cm4gemkodCl9ZnVuY3Rpb24geW0oZSx0KXtpZihlPT09ImlucHV0Inx8ZT09PSJjaGFuZ2UiKXJldHVybiB6aSh0KX1mdW5jdGlvbiB4bShlLHQpe3JldHVybiBlPT09dCYmKGUhPT0wfHwxL2U9PT0xL3QpfHxlIT09ZSYmdCE9PXR9dmFyIEF0PXR5cGVvZiBPYmplY3QuaXM9PSJmdW5jdGlvbiI/T2JqZWN0LmlzOnhtO2Z1bmN0aW9uIExzKGUsdCl7aWYoQXQoZSx0KSlyZXR1cm4hMDtpZih0eXBlb2YgZSE9Im9iamVjdCJ8fGU9PT1udWxsfHx0eXBlb2YgdCE9Im9iamVjdCJ8fHQ9PT1udWxsKXJldHVybiExO3ZhciBuPU9iamVjdC5rZXlzKGUpLGk9T2JqZWN0LmtleXModCk7aWYobi5sZW5ndGghPT1pLmxlbmd0aClyZXR1cm4hMTtmb3IoaT0wO2k8bi5sZW5ndGg7aSsrKXt2YXIgbz1uW2ldO2lmKCF2LmNhbGwodCxvKXx8IUF0KGVbb10sdFtvXSkpcmV0dXJuITF9cmV0dXJuITB9ZnVuY3Rpb24gSWMoZSl7Zm9yKDtlJiZlLmZpcnN0Q2hpbGQ7KWU9ZS5maXJzdENoaWxkO3JldHVybiBlfWZ1bmN0aW9uIE1jKGUsdCl7dmFyIG49SWMoZSk7ZT0wO2Zvcih2YXIgaTtuOyl7aWYobi5ub2RlVHlwZT09PTMpe2lmKGk9ZStuLnRleHRDb250ZW50Lmxlbmd0aCxlPD10JiZpPj10KXJldHVybntub2RlOm4sb2Zmc2V0OnQtZX07ZT1pfWU6e2Zvcig7bjspe2lmKG4ubmV4dFNpYmxpbmcpe249bi5uZXh0U2libGluZzticmVhayBlfW49bi5wYXJlbnROb2RlfW49dm9pZCAwfW49SWMobil9fWZ1bmN0aW9uIHpjKGUsdCl7cmV0dXJuIGUmJnQ/ZT09PXQ/ITA6ZSYmZS5ub2RlVHlwZT09PTM/ITE6dCYmdC5ub2RlVHlwZT09PTM/emMoZSx0LnBhcmVudE5vZGUpOiJjb250YWlucyJpbiBlP2UuY29udGFpbnModCk6ZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbj8hIShlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHQpJjE2KTohMTohMX1mdW5jdGlvbiBBYygpe2Zvcih2YXIgZT13aW5kb3csdD13aSgpO3QgaW5zdGFuY2VvZiBlLkhUTUxJRnJhbWVFbGVtZW50Oyl7dHJ5e3ZhciBuPXR5cGVvZiB0LmNvbnRlbnRXaW5kb3cubG9jYXRpb24uaHJlZj09InN0cmluZyJ9Y2F0Y2h7bj0hMX1pZihuKWU9dC5jb250ZW50V2luZG93O2Vsc2UgYnJlYWs7dD13aShlLmRvY3VtZW50KX1yZXR1cm4gdH1mdW5jdGlvbiBqbyhlKXt2YXIgdD1lJiZlLm5vZGVOYW1lJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuIHQmJih0PT09ImlucHV0IiYmKGUudHlwZT09PSJ0ZXh0Inx8ZS50eXBlPT09InNlYXJjaCJ8fGUudHlwZT09PSJ0ZWwifHxlLnR5cGU9PT0idXJsInx8ZS50eXBlPT09InBhc3N3b3JkIil8fHQ9PT0idGV4dGFyZWEifHxlLmNvbnRlbnRFZGl0YWJsZT09PSJ0cnVlIil9ZnVuY3Rpb24gd20oZSl7dmFyIHQ9QWMoKSxuPWUuZm9jdXNlZEVsZW0saT1lLnNlbGVjdGlvblJhbmdlO2lmKHQhPT1uJiZuJiZuLm93bmVyRG9jdW1lbnQmJnpjKG4ub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsbikpe2lmKGkhPT1udWxsJiZqbyhuKSl7aWYodD1pLnN0YXJ0LGU9aS5lbmQsZT09PXZvaWQgMCYmKGU9dCksInNlbGVjdGlvblN0YXJ0ImluIG4pbi5zZWxlY3Rpb25TdGFydD10LG4uc2VsZWN0aW9uRW5kPU1hdGgubWluKGUsbi52YWx1ZS5sZW5ndGgpO2Vsc2UgaWYoZT0odD1uLm93bmVyRG9jdW1lbnR8fGRvY3VtZW50KSYmdC5kZWZhdWx0Vmlld3x8d2luZG93LGUuZ2V0U2VsZWN0aW9uKXtlPWUuZ2V0U2VsZWN0aW9uKCk7dmFyIG89bi50ZXh0Q29udGVudC5sZW5ndGgsYT1NYXRoLm1pbihpLnN0YXJ0LG8pO2k9aS5lbmQ9PT12b2lkIDA/YTpNYXRoLm1pbihpLmVuZCxvKSwhZS5leHRlbmQmJmE+aSYmKG89aSxpPWEsYT1vKSxvPU1jKG4sYSk7dmFyIGY9TWMobixpKTtvJiZmJiYoZS5yYW5nZUNvdW50IT09MXx8ZS5hbmNob3JOb2RlIT09by5ub2RlfHxlLmFuY2hvck9mZnNldCE9PW8ub2Zmc2V0fHxlLmZvY3VzTm9kZSE9PWYubm9kZXx8ZS5mb2N1c09mZnNldCE9PWYub2Zmc2V0KSYmKHQ9dC5jcmVhdGVSYW5nZSgpLHQuc2V0U3RhcnQoby5ub2RlLG8ub2Zmc2V0KSxlLnJlbW92ZUFsbFJhbmdlcygpLGE+aT8oZS5hZGRSYW5nZSh0KSxlLmV4dGVuZChmLm5vZGUsZi5vZmZzZXQpKToodC5zZXRFbmQoZi5ub2RlLGYub2Zmc2V0KSxlLmFkZFJhbmdlKHQpKSl9fWZvcih0PVtdLGU9bjtlPWUucGFyZW50Tm9kZTspZS5ub2RlVHlwZT09PTEmJnQucHVzaCh7ZWxlbWVudDplLGxlZnQ6ZS5zY3JvbGxMZWZ0LHRvcDplLnNjcm9sbFRvcH0pO2Zvcih0eXBlb2Ygbi5mb2N1cz09ImZ1bmN0aW9uIiYmbi5mb2N1cygpLG49MDtuPHQubGVuZ3RoO24rKyllPXRbbl0sZS5lbGVtZW50LnNjcm9sbExlZnQ9ZS5sZWZ0LGUuZWxlbWVudC5zY3JvbGxUb3A9ZS50b3B9fXZhciBTbT1tJiYiZG9jdW1lbnRNb2RlImluIGRvY3VtZW50JiYxMT49ZG9jdW1lbnQuZG9jdW1lbnRNb2RlLFByPW51bGwsRW89bnVsbCxEcz1udWxsLE5vPSExO2Z1bmN0aW9uICRjKGUsdCxuKXt2YXIgaT1uLndpbmRvdz09PW4/bi5kb2N1bWVudDpuLm5vZGVUeXBlPT09OT9uOm4ub3duZXJEb2N1bWVudDtOb3x8UHI9PW51bGx8fFByIT09d2koaSl8fChpPVByLCJzZWxlY3Rpb25TdGFydCJpbiBpJiZqbyhpKT9pPXtzdGFydDppLnNlbGVjdGlvblN0YXJ0LGVuZDppLnNlbGVjdGlvbkVuZH06KGk9KGkub3duZXJEb2N1bWVudCYmaS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHx3aW5kb3cpLmdldFNlbGVjdGlvbigpLGk9e2FuY2hvck5vZGU6aS5hbmNob3JOb2RlLGFuY2hvck9mZnNldDppLmFuY2hvck9mZnNldCxmb2N1c05vZGU6aS5mb2N1c05vZGUsZm9jdXNPZmZzZXQ6aS5mb2N1c09mZnNldH0pLERzJiZMcyhEcyxpKXx8KERzPWksaT1iaShFbywib25TZWxlY3QiKSwwPGkubGVuZ3RoJiYodD1uZXcgZ28oIm9uU2VsZWN0Iiwic2VsZWN0IixudWxsLHQsbiksZS5wdXNoKHtldmVudDp0LGxpc3RlbmVyczppfSksdC50YXJnZXQ9UHIpKSl9ZnVuY3Rpb24gQWkoZSx0KXt2YXIgbj17fTtyZXR1cm4gbltlLnRvTG93ZXJDYXNlKCldPXQudG9Mb3dlckNhc2UoKSxuWyJXZWJraXQiK2VdPSJ3ZWJraXQiK3QsblsiTW96IitlXT0ibW96Iit0LG59dmFyIF9yPXthbmltYXRpb25lbmQ6QWkoIkFuaW1hdGlvbiIsIkFuaW1hdGlvbkVuZCIpLGFuaW1hdGlvbml0ZXJhdGlvbjpBaSgiQW5pbWF0aW9uIiwiQW5pbWF0aW9uSXRlcmF0aW9uIiksYW5pbWF0aW9uc3RhcnQ6QWkoIkFuaW1hdGlvbiIsIkFuaW1hdGlvblN0YXJ0IiksdHJhbnNpdGlvbmVuZDpBaSgiVHJhbnNpdGlvbiIsIlRyYW5zaXRpb25FbmQiKX0sUm89e30sVWM9e307bSYmKFVjPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLnN0eWxlLCJBbmltYXRpb25FdmVudCJpbiB3aW5kb3d8fChkZWxldGUgX3IuYW5pbWF0aW9uZW5kLmFuaW1hdGlvbixkZWxldGUgX3IuYW5pbWF0aW9uaXRlcmF0aW9uLmFuaW1hdGlvbixkZWxldGUgX3IuYW5pbWF0aW9uc3RhcnQuYW5pbWF0aW9uKSwiVHJhbnNpdGlvbkV2ZW50ImluIHdpbmRvd3x8ZGVsZXRlIF9yLnRyYW5zaXRpb25lbmQudHJhbnNpdGlvbik7ZnVuY3Rpb24gJGkoZSl7aWYoUm9bZV0pcmV0dXJuIFJvW2VdO2lmKCFfcltlXSlyZXR1cm4gZTt2YXIgdD1fcltlXSxuO2ZvcihuIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShuKSYmbiBpbiBVYylyZXR1cm4gUm9bZV09dFtuXTtyZXR1cm4gZX12YXIgYmM9JGkoImFuaW1hdGlvbmVuZCIpLEJjPSRpKCJhbmltYXRpb25pdGVyYXRpb24iKSxIYz0kaSgiYW5pbWF0aW9uc3RhcnQiKSxRYz0kaSgidHJhbnNpdGlvbmVuZCIpLHFjPW5ldyBNYXAsV2M9ImFib3J0IGF1eENsaWNrIGNhbmNlbCBjYW5QbGF5IGNhblBsYXlUaHJvdWdoIGNsaWNrIGNsb3NlIGNvbnRleHRNZW51IGNvcHkgY3V0IGRyYWcgZHJhZ0VuZCBkcmFnRW50ZXIgZHJhZ0V4aXQgZHJhZ0xlYXZlIGRyYWdPdmVyIGRyYWdTdGFydCBkcm9wIGR1cmF0aW9uQ2hhbmdlIGVtcHRpZWQgZW5jcnlwdGVkIGVuZGVkIGVycm9yIGdvdFBvaW50ZXJDYXB0dXJlIGlucHV0IGludmFsaWQga2V5RG93biBrZXlQcmVzcyBrZXlVcCBsb2FkIGxvYWRlZERhdGEgbG9hZGVkTWV0YWRhdGEgbG9hZFN0YXJ0IGxvc3RQb2ludGVyQ2FwdHVyZSBtb3VzZURvd24gbW91c2VNb3ZlIG1vdXNlT3V0IG1vdXNlT3ZlciBtb3VzZVVwIHBhc3RlIHBhdXNlIHBsYXkgcGxheWluZyBwb2ludGVyQ2FuY2VsIHBvaW50ZXJEb3duIHBvaW50ZXJNb3ZlIHBvaW50ZXJPdXQgcG9pbnRlck92ZXIgcG9pbnRlclVwIHByb2dyZXNzIHJhdGVDaGFuZ2UgcmVzZXQgcmVzaXplIHNlZWtlZCBzZWVraW5nIHN0YWxsZWQgc3VibWl0IHN1c3BlbmQgdGltZVVwZGF0ZSB0b3VjaENhbmNlbCB0b3VjaEVuZCB0b3VjaFN0YXJ0IHZvbHVtZUNoYW5nZSBzY3JvbGwgdG9nZ2xlIHRvdWNoTW92ZSB3YWl0aW5nIHdoZWVsIi5zcGxpdCgiICIpO2Z1bmN0aW9uIEVuKGUsdCl7cWMuc2V0KGUsdCksaCh0LFtlXSl9Zm9yKHZhciBQbz0wO1BvPFdjLmxlbmd0aDtQbysrKXt2YXIgX289V2NbUG9dLGttPV9vLnRvTG93ZXJDYXNlKCksQ209X29bMF0udG9VcHBlckNhc2UoKStfby5zbGljZSgxKTtFbihrbSwib24iK0NtKX1FbihiYywib25BbmltYXRpb25FbmQiKSxFbihCYywib25BbmltYXRpb25JdGVyYXRpb24iKSxFbihIYywib25BbmltYXRpb25TdGFydCIpLEVuKCJkYmxjbGljayIsIm9uRG91YmxlQ2xpY2siKSxFbigiZm9jdXNpbiIsIm9uRm9jdXMiKSxFbigiZm9jdXNvdXQiLCJvbkJsdXIiKSxFbihRYywib25UcmFuc2l0aW9uRW5kIikscCgib25Nb3VzZUVudGVyIixbIm1vdXNlb3V0IiwibW91c2VvdmVyIl0pLHAoIm9uTW91c2VMZWF2ZSIsWyJtb3VzZW91dCIsIm1vdXNlb3ZlciJdKSxwKCJvblBvaW50ZXJFbnRlciIsWyJwb2ludGVyb3V0IiwicG9pbnRlcm92ZXIiXSkscCgib25Qb2ludGVyTGVhdmUiLFsicG9pbnRlcm91dCIsInBvaW50ZXJvdmVyIl0pLGgoIm9uQ2hhbmdlIiwiY2hhbmdlIGNsaWNrIGZvY3VzaW4gZm9jdXNvdXQgaW5wdXQga2V5ZG93biBrZXl1cCBzZWxlY3Rpb25jaGFuZ2UiLnNwbGl0KCIgIikpLGgoIm9uU2VsZWN0IiwiZm9jdXNvdXQgY29udGV4dG1lbnUgZHJhZ2VuZCBmb2N1c2luIGtleWRvd24ga2V5dXAgbW91c2Vkb3duIG1vdXNldXAgc2VsZWN0aW9uY2hhbmdlIi5zcGxpdCgiICIpKSxoKCJvbkJlZm9yZUlucHV0IixbImNvbXBvc2l0aW9uZW5kIiwia2V5cHJlc3MiLCJ0ZXh0SW5wdXQiLCJwYXN0ZSJdKSxoKCJvbkNvbXBvc2l0aW9uRW5kIiwiY29tcG9zaXRpb25lbmQgZm9jdXNvdXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBtb3VzZWRvd24iLnNwbGl0KCIgIikpLGgoIm9uQ29tcG9zaXRpb25TdGFydCIsImNvbXBvc2l0aW9uc3RhcnQgZm9jdXNvdXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBtb3VzZWRvd24iLnNwbGl0KCIgIikpLGgoIm9uQ29tcG9zaXRpb25VcGRhdGUiLCJjb21wb3NpdGlvbnVwZGF0ZSBmb2N1c291dCBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93biIuc3BsaXQoIiAiKSk7dmFyIE9zPSJhYm9ydCBjYW5wbGF5IGNhbnBsYXl0aHJvdWdoIGR1cmF0aW9uY2hhbmdlIGVtcHRpZWQgZW5jcnlwdGVkIGVuZGVkIGVycm9yIGxvYWRlZGRhdGEgbG9hZGVkbWV0YWRhdGEgbG9hZHN0YXJ0IHBhdXNlIHBsYXkgcGxheWluZyBwcm9ncmVzcyByYXRlY2hhbmdlIHJlc2l6ZSBzZWVrZWQgc2Vla2luZyBzdGFsbGVkIHN1c3BlbmQgdGltZXVwZGF0ZSB2b2x1bWVjaGFuZ2Ugd2FpdGluZyIuc3BsaXQoIiAiKSxqbT1uZXcgU2V0KCJjYW5jZWwgY2xvc2UgaW52YWxpZCBsb2FkIHNjcm9sbCB0b2dnbGUiLnNwbGl0KCIgIikuY29uY2F0KE9zKSk7ZnVuY3Rpb24gVmMoZSx0LG4pe3ZhciBpPWUudHlwZXx8InVua25vd24tZXZlbnQiO2UuY3VycmVudFRhcmdldD1uLGtwKGksdCx2b2lkIDAsZSksZS5jdXJyZW50VGFyZ2V0PW51bGx9ZnVuY3Rpb24gS2MoZSx0KXt0PSh0JjQpIT09MDtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIGk9ZVtuXSxvPWkuZXZlbnQ7aT1pLmxpc3RlbmVycztlOnt2YXIgYT12b2lkIDA7aWYodClmb3IodmFyIGY9aS5sZW5ndGgtMTswPD1mO2YtLSl7dmFyIGc9aVtmXSx3PWcuaW5zdGFuY2UsRj1nLmN1cnJlbnRUYXJnZXQ7aWYoZz1nLmxpc3RlbmVyLHchPT1hJiZvLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpYnJlYWsgZTtWYyhvLGcsRiksYT13fWVsc2UgZm9yKGY9MDtmPGkubGVuZ3RoO2YrKyl7aWYoZz1pW2ZdLHc9Zy5pbnN0YW5jZSxGPWcuY3VycmVudFRhcmdldCxnPWcubGlzdGVuZXIsdyE9PWEmJm8uaXNQcm9wYWdhdGlvblN0b3BwZWQoKSlicmVhayBlO1ZjKG8sZyxGKSxhPXd9fX1pZihDaSl0aHJvdyBlPWlvLENpPSExLGlvPW51bGwsZX1mdW5jdGlvbiBUZShlLHQpe3ZhciBuPXRbem9dO249PT12b2lkIDAmJihuPXRbem9dPW5ldyBTZXQpO3ZhciBpPWUrIl9fYnViYmxlIjtuLmhhcyhpKXx8KEdjKHQsZSwyLCExKSxuLmFkZChpKSl9ZnVuY3Rpb24gVG8oZSx0LG4pe3ZhciBpPTA7dCYmKGl8PTQpLEdjKG4sZSxpLHQpfXZhciBVaT0iX3JlYWN0TGlzdGVuaW5nIitNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKTtmdW5jdGlvbiBJcyhlKXtpZighZVtVaV0pe2VbVWldPSEwLHUuZm9yRWFjaChmdW5jdGlvbihuKXtuIT09InNlbGVjdGlvbmNoYW5nZSImJihqbS5oYXMobil8fFRvKG4sITEsZSksVG8obiwhMCxlKSl9KTt2YXIgdD1lLm5vZGVUeXBlPT09OT9lOmUub3duZXJEb2N1bWVudDt0PT09bnVsbHx8dFtVaV18fCh0W1VpXT0hMCxUbygic2VsZWN0aW9uY2hhbmdlIiwhMSx0KSl9fWZ1bmN0aW9uIEdjKGUsdCxuLGkpe3N3aXRjaCh5Yyh0KSl7Y2FzZSAxOnZhciBvPUFwO2JyZWFrO2Nhc2UgNDpvPSRwO2JyZWFrO2RlZmF1bHQ6bz1ob31uPW8uYmluZChudWxsLHQsbixlKSxvPXZvaWQgMCwhc298fHQhPT0idG91Y2hzdGFydCImJnQhPT0idG91Y2htb3ZlIiYmdCE9PSJ3aGVlbCJ8fChvPSEwKSxpP28hPT12b2lkIDA/ZS5hZGRFdmVudExpc3RlbmVyKHQsbix7Y2FwdHVyZTohMCxwYXNzaXZlOm99KTplLmFkZEV2ZW50TGlzdGVuZXIodCxuLCEwKTpvIT09dm9pZCAwP2UuYWRkRXZlbnRMaXN0ZW5lcih0LG4se3Bhc3NpdmU6b30pOmUuYWRkRXZlbnRMaXN0ZW5lcih0LG4sITEpfWZ1bmN0aW9uIEZvKGUsdCxuLGksbyl7dmFyIGE9aTtpZigodCYxKT09PTAmJih0JjIpPT09MCYmaSE9PW51bGwpZTpmb3IoOzspe2lmKGk9PT1udWxsKXJldHVybjt2YXIgZj1pLnRhZztpZihmPT09M3x8Zj09PTQpe3ZhciBnPWkuc3RhdGVOb2RlLmNvbnRhaW5lckluZm87aWYoZz09PW98fGcubm9kZVR5cGU9PT04JiZnLnBhcmVudE5vZGU9PT1vKWJyZWFrO2lmKGY9PT00KWZvcihmPWkucmV0dXJuO2YhPT1udWxsOyl7dmFyIHc9Zi50YWc7aWYoKHc9PT0zfHx3PT09NCkmJih3PWYuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8sdz09PW98fHcubm9kZVR5cGU9PT04JiZ3LnBhcmVudE5vZGU9PT1vKSlyZXR1cm47Zj1mLnJldHVybn1mb3IoO2chPT1udWxsOyl7aWYoZj1KbihnKSxmPT09bnVsbClyZXR1cm47aWYodz1mLnRhZyx3PT09NXx8dz09PTYpe2k9YT1mO2NvbnRpbnVlIGV9Zz1nLnBhcmVudE5vZGV9fWk9aS5yZXR1cm59ZWMoZnVuY3Rpb24oKXt2YXIgRj1hLHo9dG8obiksJD1bXTtlOnt2YXIgTT1xYy5nZXQoZSk7aWYoTSE9PXZvaWQgMCl7dmFyIEs9Z28sSj1lO3N3aXRjaChlKXtjYXNlImtleXByZXNzIjppZihPaShuKT09PTApYnJlYWsgZTtjYXNlImtleWRvd24iOmNhc2Uia2V5dXAiOks9ZW07YnJlYWs7Y2FzZSJmb2N1c2luIjpKPSJmb2N1cyIsSz14bzticmVhaztjYXNlImZvY3Vzb3V0IjpKPSJibHVyIixLPXhvO2JyZWFrO2Nhc2UiYmVmb3JlYmx1ciI6Y2FzZSJhZnRlcmJsdXIiOks9eG87YnJlYWs7Y2FzZSJjbGljayI6aWYobi5idXR0b249PT0yKWJyZWFrIGU7Y2FzZSJhdXhjbGljayI6Y2FzZSJkYmxjbGljayI6Y2FzZSJtb3VzZWRvd24iOmNhc2UibW91c2Vtb3ZlIjpjYXNlIm1vdXNldXAiOmNhc2UibW91c2VvdXQiOmNhc2UibW91c2VvdmVyIjpjYXNlImNvbnRleHRtZW51IjpLPVNjO2JyZWFrO2Nhc2UiZHJhZyI6Y2FzZSJkcmFnZW5kIjpjYXNlImRyYWdlbnRlciI6Y2FzZSJkcmFnZXhpdCI6Y2FzZSJkcmFnbGVhdmUiOmNhc2UiZHJhZ292ZXIiOmNhc2UiZHJhZ3N0YXJ0IjpjYXNlImRyb3AiOks9QnA7YnJlYWs7Y2FzZSJ0b3VjaGNhbmNlbCI6Y2FzZSJ0b3VjaGVuZCI6Y2FzZSJ0b3VjaG1vdmUiOmNhc2UidG91Y2hzdGFydCI6Sz1ybTticmVhaztjYXNlIGJjOmNhc2UgQmM6Y2FzZSBIYzpLPXFwO2JyZWFrO2Nhc2UgUWM6Sz1pbTticmVhaztjYXNlInNjcm9sbCI6Sz1VcDticmVhaztjYXNlIndoZWVsIjpLPW9tO2JyZWFrO2Nhc2UiY29weSI6Y2FzZSJjdXQiOmNhc2UicGFzdGUiOks9VnA7YnJlYWs7Y2FzZSJnb3Rwb2ludGVyY2FwdHVyZSI6Y2FzZSJsb3N0cG9pbnRlcmNhcHR1cmUiOmNhc2UicG9pbnRlcmNhbmNlbCI6Y2FzZSJwb2ludGVyZG93biI6Y2FzZSJwb2ludGVybW92ZSI6Y2FzZSJwb2ludGVyb3V0IjpjYXNlInBvaW50ZXJvdmVyIjpjYXNlInBvaW50ZXJ1cCI6Sz1DY312YXIgWD0odCY0KSE9PTAsSGU9IVgmJmU9PT0ic2Nyb2xsIixSPVg/TSE9PW51bGw/TSsiQ2FwdHVyZSI6bnVsbDpNO1g9W107Zm9yKHZhciBrPUYsXztrIT09bnVsbDspe189azt2YXIgQj1fLnN0YXRlTm9kZTtpZihfLnRhZz09PTUmJkIhPT1udWxsJiYoXz1CLFIhPT1udWxsJiYoQj12cyhrLFIpLEIhPW51bGwmJlgucHVzaChNcyhrLEIsXykpKSksSGUpYnJlYWs7az1rLnJldHVybn0wPFgubGVuZ3RoJiYoTT1uZXcgSyhNLEosbnVsbCxuLHopLCQucHVzaCh7ZXZlbnQ6TSxsaXN0ZW5lcnM6WH0pKX19aWYoKHQmNyk9PT0wKXtlOntpZihNPWU9PT0ibW91c2VvdmVyInx8ZT09PSJwb2ludGVyb3ZlciIsSz1lPT09Im1vdXNlb3V0Inx8ZT09PSJwb2ludGVyb3V0IixNJiZuIT09ZW8mJihKPW4ucmVsYXRlZFRhcmdldHx8bi5mcm9tRWxlbWVudCkmJihKbihKKXx8Sltsbl0pKWJyZWFrIGU7aWYoKEt8fE0pJiYoTT16LndpbmRvdz09PXo/ejooTT16Lm93bmVyRG9jdW1lbnQpP00uZGVmYXVsdFZpZXd8fE0ucGFyZW50V2luZG93OndpbmRvdyxLPyhKPW4ucmVsYXRlZFRhcmdldHx8bi50b0VsZW1lbnQsSz1GLEo9Sj9KbihKKTpudWxsLEohPT1udWxsJiYoSGU9R24oSiksSiE9PUhlfHxKLnRhZyE9PTUmJkoudGFnIT09NikmJihKPW51bGwpKTooSz1udWxsLEo9RiksSyE9PUopKXtpZihYPVNjLEI9Im9uTW91c2VMZWF2ZSIsUj0ib25Nb3VzZUVudGVyIixrPSJtb3VzZSIsKGU9PT0icG9pbnRlcm91dCJ8fGU9PT0icG9pbnRlcm92ZXIiKSYmKFg9Q2MsQj0ib25Qb2ludGVyTGVhdmUiLFI9Im9uUG9pbnRlckVudGVyIixrPSJwb2ludGVyIiksSGU9Sz09bnVsbD9NOkxyKEspLF89Sj09bnVsbD9NOkxyKEopLE09bmV3IFgoQixrKyJsZWF2ZSIsSyxuLHopLE0udGFyZ2V0PUhlLE0ucmVsYXRlZFRhcmdldD1fLEI9bnVsbCxKbih6KT09PUYmJihYPW5ldyBYKFIsaysiZW50ZXIiLEosbix6KSxYLnRhcmdldD1fLFgucmVsYXRlZFRhcmdldD1IZSxCPVgpLEhlPUIsSyYmSil0Ontmb3IoWD1LLFI9SixrPTAsXz1YO187Xz1UcihfKSlrKys7Zm9yKF89MCxCPVI7QjtCPVRyKEIpKV8rKztmb3IoOzA8ay1fOylYPVRyKFgpLGstLTtmb3IoOzA8Xy1rOylSPVRyKFIpLF8tLTtmb3IoO2stLTspe2lmKFg9PT1SfHxSIT09bnVsbCYmWD09PVIuYWx0ZXJuYXRlKWJyZWFrIHQ7WD1UcihYKSxSPVRyKFIpfVg9bnVsbH1lbHNlIFg9bnVsbDtLIT09bnVsbCYmSmMoJCxNLEssWCwhMSksSiE9PW51bGwmJkhlIT09bnVsbCYmSmMoJCxIZSxKLFgsITApfX1lOntpZihNPUY/THIoRik6d2luZG93LEs9TS5ub2RlTmFtZSYmTS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLEs9PT0ic2VsZWN0Inx8Sz09PSJpbnB1dCImJk0udHlwZT09PSJmaWxlIil2YXIgZWU9cG07ZWxzZSBpZihfYyhNKSlpZihGYyllZT15bTtlbHNle2VlPWdtO3ZhciBpZT1tbX1lbHNlKEs9TS5ub2RlTmFtZSkmJksudG9Mb3dlckNhc2UoKT09PSJpbnB1dCImJihNLnR5cGU9PT0iY2hlY2tib3gifHxNLnR5cGU9PT0icmFkaW8iKSYmKGVlPXZtKTtpZihlZSYmKGVlPWVlKGUsRikpKXtUYygkLGVlLG4seik7YnJlYWsgZX1pZSYmaWUoZSxNLEYpLGU9PT0iZm9jdXNvdXQiJiYoaWU9TS5fd3JhcHBlclN0YXRlKSYmaWUuY29udHJvbGxlZCYmTS50eXBlPT09Im51bWJlciImJkdsKE0sIm51bWJlciIsTS52YWx1ZSl9c3dpdGNoKGllPUY/THIoRik6d2luZG93LGUpe2Nhc2UiZm9jdXNpbiI6KF9jKGllKXx8aWUuY29udGVudEVkaXRhYmxlPT09InRydWUiKSYmKFByPWllLEVvPUYsRHM9bnVsbCk7YnJlYWs7Y2FzZSJmb2N1c291dCI6RHM9RW89UHI9bnVsbDticmVhaztjYXNlIm1vdXNlZG93biI6Tm89ITA7YnJlYWs7Y2FzZSJjb250ZXh0bWVudSI6Y2FzZSJtb3VzZXVwIjpjYXNlImRyYWdlbmQiOk5vPSExLCRjKCQsbix6KTticmVhaztjYXNlInNlbGVjdGlvbmNoYW5nZSI6aWYoU20pYnJlYWs7Y2FzZSJrZXlkb3duIjpjYXNlImtleXVwIjokYygkLG4seil9dmFyIGxlO2lmKFNvKWU6e3N3aXRjaChlKXtjYXNlImNvbXBvc2l0aW9uc3RhcnQiOnZhciBhZT0ib25Db21wb3NpdGlvblN0YXJ0IjticmVhayBlO2Nhc2UiY29tcG9zaXRpb25lbmQiOmFlPSJvbkNvbXBvc2l0aW9uRW5kIjticmVhayBlO2Nhc2UiY29tcG9zaXRpb251cGRhdGUiOmFlPSJvbkNvbXBvc2l0aW9uVXBkYXRlIjticmVhayBlfWFlPXZvaWQgMH1lbHNlIFJyP1JjKGUsbikmJihhZT0ib25Db21wb3NpdGlvbkVuZCIpOmU9PT0ia2V5ZG93biImJm4ua2V5Q29kZT09PTIyOSYmKGFlPSJvbkNvbXBvc2l0aW9uU3RhcnQiKTthZSYmKGpjJiZuLmxvY2FsZSE9PSJrbyImJihScnx8YWUhPT0ib25Db21wb3NpdGlvblN0YXJ0Ij9hZT09PSJvbkNvbXBvc2l0aW9uRW5kIiYmUnImJihsZT14YygpKTooam49eixtbz0idmFsdWUiaW4gam4/am4udmFsdWU6am4udGV4dENvbnRlbnQsUnI9ITApKSxpZT1iaShGLGFlKSwwPGllLmxlbmd0aCYmKGFlPW5ldyBrYyhhZSxlLG51bGwsbix6KSwkLnB1c2goe2V2ZW50OmFlLGxpc3RlbmVyczppZX0pLGxlP2FlLmRhdGE9bGU6KGxlPVBjKG4pLGxlIT09bnVsbCYmKGFlLmRhdGE9bGUpKSkpLChsZT11bT9jbShlLG4pOmRtKGUsbikpJiYoRj1iaShGLCJvbkJlZm9yZUlucHV0IiksMDxGLmxlbmd0aCYmKHo9bmV3IGtjKCJvbkJlZm9yZUlucHV0IiwiYmVmb3JlaW5wdXQiLG51bGwsbix6KSwkLnB1c2goe2V2ZW50OnosbGlzdGVuZXJzOkZ9KSx6LmRhdGE9bGUpKX1LYygkLHQpfSl9ZnVuY3Rpb24gTXMoZSx0LG4pe3JldHVybntpbnN0YW5jZTplLGxpc3RlbmVyOnQsY3VycmVudFRhcmdldDpufX1mdW5jdGlvbiBiaShlLHQpe2Zvcih2YXIgbj10KyJDYXB0dXJlIixpPVtdO2UhPT1udWxsOyl7dmFyIG89ZSxhPW8uc3RhdGVOb2RlO28udGFnPT09NSYmYSE9PW51bGwmJihvPWEsYT12cyhlLG4pLGEhPW51bGwmJmkudW5zaGlmdChNcyhlLGEsbykpLGE9dnMoZSx0KSxhIT1udWxsJiZpLnB1c2goTXMoZSxhLG8pKSksZT1lLnJldHVybn1yZXR1cm4gaX1mdW5jdGlvbiBUcihlKXtpZihlPT09bnVsbClyZXR1cm4gbnVsbDtkbyBlPWUucmV0dXJuO3doaWxlKGUmJmUudGFnIT09NSk7cmV0dXJuIGV8fG51bGx9ZnVuY3Rpb24gSmMoZSx0LG4saSxvKXtmb3IodmFyIGE9dC5fcmVhY3ROYW1lLGY9W107biE9PW51bGwmJm4hPT1pOyl7dmFyIGc9bix3PWcuYWx0ZXJuYXRlLEY9Zy5zdGF0ZU5vZGU7aWYodyE9PW51bGwmJnc9PT1pKWJyZWFrO2cudGFnPT09NSYmRiE9PW51bGwmJihnPUYsbz8odz12cyhuLGEpLHchPW51bGwmJmYudW5zaGlmdChNcyhuLHcsZykpKTpvfHwodz12cyhuLGEpLHchPW51bGwmJmYucHVzaChNcyhuLHcsZykpKSksbj1uLnJldHVybn1mLmxlbmd0aCE9PTAmJmUucHVzaCh7ZXZlbnQ6dCxsaXN0ZW5lcnM6Zn0pfXZhciBFbT0vXHJcbj8vZyxObT0vXHUwMDAwfFx1RkZGRC9nO2Z1bmN0aW9uIFljKGUpe3JldHVybih0eXBlb2YgZT09InN0cmluZyI/ZToiIitlKS5yZXBsYWNlKEVtLGAKYCkucmVwbGFjZShObSwiIil9ZnVuY3Rpb24gQmkoZSx0LG4pe2lmKHQ9WWModCksWWMoZSkhPT10JiZuKXRocm93IEVycm9yKGwoNDI1KSl9ZnVuY3Rpb24gSGkoKXt9dmFyIExvPW51bGwsRG89bnVsbDtmdW5jdGlvbiBPbyhlLHQpe3JldHVybiBlPT09InRleHRhcmVhInx8ZT09PSJub3NjcmlwdCJ8fHR5cGVvZiB0LmNoaWxkcmVuPT0ic3RyaW5nInx8dHlwZW9mIHQuY2hpbGRyZW49PSJudW1iZXIifHx0eXBlb2YgdC5kYW5nZXJvdXNseVNldElubmVySFRNTD09Im9iamVjdCImJnQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwhPT1udWxsJiZ0LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLl9faHRtbCE9bnVsbH12YXIgSW89dHlwZW9mIHNldFRpbWVvdXQ9PSJmdW5jdGlvbiI/c2V0VGltZW91dDp2b2lkIDAsUm09dHlwZW9mIGNsZWFyVGltZW91dD09ImZ1bmN0aW9uIj9jbGVhclRpbWVvdXQ6dm9pZCAwLFhjPXR5cGVvZiBQcm9taXNlPT0iZnVuY3Rpb24iP1Byb21pc2U6dm9pZCAwLFBtPXR5cGVvZiBxdWV1ZU1pY3JvdGFzaz09ImZ1bmN0aW9uIj9xdWV1ZU1pY3JvdGFzazp0eXBlb2YgWGM8InUiP2Z1bmN0aW9uKGUpe3JldHVybiBYYy5yZXNvbHZlKG51bGwpLnRoZW4oZSkuY2F0Y2goX20pfTpJbztmdW5jdGlvbiBfbShlKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgZX0pfWZ1bmN0aW9uIE1vKGUsdCl7dmFyIG49dCxpPTA7ZG97dmFyIG89bi5uZXh0U2libGluZztpZihlLnJlbW92ZUNoaWxkKG4pLG8mJm8ubm9kZVR5cGU9PT04KWlmKG49by5kYXRhLG49PT0iLyQiKXtpZihpPT09MCl7ZS5yZW1vdmVDaGlsZChvKSxOcyh0KTtyZXR1cm59aS0tfWVsc2UgbiE9PSIkIiYmbiE9PSIkPyImJm4hPT0iJCEifHxpKys7bj1vfXdoaWxlKG4pO05zKHQpfWZ1bmN0aW9uIE5uKGUpe2Zvcig7ZSE9bnVsbDtlPWUubmV4dFNpYmxpbmcpe3ZhciB0PWUubm9kZVR5cGU7aWYodD09PTF8fHQ9PT0zKWJyZWFrO2lmKHQ9PT04KXtpZih0PWUuZGF0YSx0PT09IiQifHx0PT09IiQhInx8dD09PSIkPyIpYnJlYWs7aWYodD09PSIvJCIpcmV0dXJuIG51bGx9fXJldHVybiBlfWZ1bmN0aW9uIFpjKGUpe2U9ZS5wcmV2aW91c1NpYmxpbmc7Zm9yKHZhciB0PTA7ZTspe2lmKGUubm9kZVR5cGU9PT04KXt2YXIgbj1lLmRhdGE7aWYobj09PSIkInx8bj09PSIkISJ8fG49PT0iJD8iKXtpZih0PT09MClyZXR1cm4gZTt0LS19ZWxzZSBuPT09Ii8kIiYmdCsrfWU9ZS5wcmV2aW91c1NpYmxpbmd9cmV0dXJuIG51bGx9dmFyIEZyPU1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpLFl0PSJfX3JlYWN0RmliZXIkIitGcix6cz0iX19yZWFjdFByb3BzJCIrRnIsbG49Il9fcmVhY3RDb250YWluZXIkIitGcix6bz0iX19yZWFjdEV2ZW50cyQiK0ZyLFRtPSJfX3JlYWN0TGlzdGVuZXJzJCIrRnIsRm09Il9fcmVhY3RIYW5kbGVzJCIrRnI7ZnVuY3Rpb24gSm4oZSl7dmFyIHQ9ZVtZdF07aWYodClyZXR1cm4gdDtmb3IodmFyIG49ZS5wYXJlbnROb2RlO247KXtpZih0PW5bbG5dfHxuW1l0XSl7aWYobj10LmFsdGVybmF0ZSx0LmNoaWxkIT09bnVsbHx8biE9PW51bGwmJm4uY2hpbGQhPT1udWxsKWZvcihlPVpjKGUpO2UhPT1udWxsOyl7aWYobj1lW1l0XSlyZXR1cm4gbjtlPVpjKGUpfXJldHVybiB0fWU9bixuPWUucGFyZW50Tm9kZX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBBcyhlKXtyZXR1cm4gZT1lW1l0XXx8ZVtsbl0sIWV8fGUudGFnIT09NSYmZS50YWchPT02JiZlLnRhZyE9PTEzJiZlLnRhZyE9PTM/bnVsbDplfWZ1bmN0aW9uIExyKGUpe2lmKGUudGFnPT09NXx8ZS50YWc9PT02KXJldHVybiBlLnN0YXRlTm9kZTt0aHJvdyBFcnJvcihsKDMzKSl9ZnVuY3Rpb24gUWkoZSl7cmV0dXJuIGVbenNdfHxudWxsfXZhciBBbz1bXSxEcj0tMTtmdW5jdGlvbiBSbihlKXtyZXR1cm57Y3VycmVudDplfX1mdW5jdGlvbiBGZShlKXswPkRyfHwoZS5jdXJyZW50PUFvW0RyXSxBb1tEcl09bnVsbCxEci0tKX1mdW5jdGlvbiBQZShlLHQpe0RyKyssQW9bRHJdPWUuY3VycmVudCxlLmN1cnJlbnQ9dH12YXIgUG49e30sZXQ9Um4oUG4pLGZ0PVJuKCExKSxZbj1QbjtmdW5jdGlvbiBPcihlLHQpe3ZhciBuPWUudHlwZS5jb250ZXh0VHlwZXM7aWYoIW4pcmV0dXJuIFBuO3ZhciBpPWUuc3RhdGVOb2RlO2lmKGkmJmkuX19yZWFjdEludGVybmFsTWVtb2l6ZWRVbm1hc2tlZENoaWxkQ29udGV4dD09PXQpcmV0dXJuIGkuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNYXNrZWRDaGlsZENvbnRleHQ7dmFyIG89e30sYTtmb3IoYSBpbiBuKW9bYV09dFthXTtyZXR1cm4gaSYmKGU9ZS5zdGF0ZU5vZGUsZS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZFVubWFza2VkQ2hpbGRDb250ZXh0PXQsZS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1hc2tlZENoaWxkQ29udGV4dD1vKSxvfWZ1bmN0aW9uIGh0KGUpe3JldHVybiBlPWUuY2hpbGRDb250ZXh0VHlwZXMsZSE9bnVsbH1mdW5jdGlvbiBxaSgpe0ZlKGZ0KSxGZShldCl9ZnVuY3Rpb24gZWQoZSx0LG4pe2lmKGV0LmN1cnJlbnQhPT1Qbil0aHJvdyBFcnJvcihsKDE2OCkpO1BlKGV0LHQpLFBlKGZ0LG4pfWZ1bmN0aW9uIHRkKGUsdCxuKXt2YXIgaT1lLnN0YXRlTm9kZTtpZih0PXQuY2hpbGRDb250ZXh0VHlwZXMsdHlwZW9mIGkuZ2V0Q2hpbGRDb250ZXh0IT0iZnVuY3Rpb24iKXJldHVybiBuO2k9aS5nZXRDaGlsZENvbnRleHQoKTtmb3IodmFyIG8gaW4gaSlpZighKG8gaW4gdCkpdGhyb3cgRXJyb3IobCgxMDgsUmUoZSl8fCJVbmtub3duIixvKSk7cmV0dXJuIHEoe30sbixpKX1mdW5jdGlvbiBXaShlKXtyZXR1cm4gZT0oZT1lLnN0YXRlTm9kZSkmJmUuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNZXJnZWRDaGlsZENvbnRleHR8fFBuLFluPWV0LmN1cnJlbnQsUGUoZXQsZSksUGUoZnQsZnQuY3VycmVudCksITB9ZnVuY3Rpb24gbmQoZSx0LG4pe3ZhciBpPWUuc3RhdGVOb2RlO2lmKCFpKXRocm93IEVycm9yKGwoMTY5KSk7bj8oZT10ZChlLHQsWW4pLGkuX19yZWFjdEludGVybmFsTWVtb2l6ZWRNZXJnZWRDaGlsZENvbnRleHQ9ZSxGZShmdCksRmUoZXQpLFBlKGV0LGUpKTpGZShmdCksUGUoZnQsbil9dmFyIG9uPW51bGwsVmk9ITEsJG89ITE7ZnVuY3Rpb24gcmQoZSl7b249PT1udWxsP29uPVtlXTpvbi5wdXNoKGUpfWZ1bmN0aW9uIExtKGUpe1ZpPSEwLHJkKGUpfWZ1bmN0aW9uIF9uKCl7aWYoISRvJiZvbiE9PW51bGwpeyRvPSEwO3ZhciBlPTAsdD1qZTt0cnl7dmFyIG49b247Zm9yKGplPTE7ZTxuLmxlbmd0aDtlKyspe3ZhciBpPW5bZV07ZG8gaT1pKCEwKTt3aGlsZShpIT09bnVsbCl9b249bnVsbCxWaT0hMX1jYXRjaChvKXt0aHJvdyBvbiE9PW51bGwmJihvbj1vbi5zbGljZShlKzEpKSxpYyhsbyxfbiksb31maW5hbGx5e2plPXQsJG89ITF9fXJldHVybiBudWxsfXZhciBJcj1bXSxNcj0wLEtpPW51bGwsR2k9MCxSdD1bXSxQdD0wLFhuPW51bGwsYW49MSx1bj0iIjtmdW5jdGlvbiBabihlLHQpe0lyW01yKytdPUdpLElyW01yKytdPUtpLEtpPWUsR2k9dH1mdW5jdGlvbiBzZChlLHQsbil7UnRbUHQrK109YW4sUnRbUHQrK109dW4sUnRbUHQrK109WG4sWG49ZTt2YXIgaT1hbjtlPXVuO3ZhciBvPTMyLXp0KGkpLTE7aSY9figxPDxvKSxuKz0xO3ZhciBhPTMyLXp0KHQpK287aWYoMzA8YSl7dmFyIGY9by1vJTU7YT0oaSYoMTw8ZiktMSkudG9TdHJpbmcoMzIpLGk+Pj1mLG8tPWYsYW49MTw8MzItenQodCkrb3xuPDxvfGksdW49YStlfWVsc2UgYW49MTw8YXxuPDxvfGksdW49ZX1mdW5jdGlvbiBVbyhlKXtlLnJldHVybiE9PW51bGwmJihabihlLDEpLHNkKGUsMSwwKSl9ZnVuY3Rpb24gYm8oZSl7Zm9yKDtlPT09S2k7KUtpPUlyWy0tTXJdLElyW01yXT1udWxsLEdpPUlyWy0tTXJdLElyW01yXT1udWxsO2Zvcig7ZT09PVhuOylYbj1SdFstLVB0XSxSdFtQdF09bnVsbCx1bj1SdFstLVB0XSxSdFtQdF09bnVsbCxhbj1SdFstLVB0XSxSdFtQdF09bnVsbH12YXIgd3Q9bnVsbCxTdD1udWxsLERlPSExLCR0PW51bGw7ZnVuY3Rpb24gaWQoZSx0KXt2YXIgbj1MdCg1LG51bGwsbnVsbCwwKTtuLmVsZW1lbnRUeXBlPSJERUxFVEVEIixuLnN0YXRlTm9kZT10LG4ucmV0dXJuPWUsdD1lLmRlbGV0aW9ucyx0PT09bnVsbD8oZS5kZWxldGlvbnM9W25dLGUuZmxhZ3N8PTE2KTp0LnB1c2gobil9ZnVuY3Rpb24gbGQoZSx0KXtzd2l0Y2goZS50YWcpe2Nhc2UgNTp2YXIgbj1lLnR5cGU7cmV0dXJuIHQ9dC5ub2RlVHlwZSE9PTF8fG4udG9Mb3dlckNhc2UoKSE9PXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKT9udWxsOnQsdCE9PW51bGw/KGUuc3RhdGVOb2RlPXQsd3Q9ZSxTdD1Obih0LmZpcnN0Q2hpbGQpLCEwKTohMTtjYXNlIDY6cmV0dXJuIHQ9ZS5wZW5kaW5nUHJvcHM9PT0iInx8dC5ub2RlVHlwZSE9PTM/bnVsbDp0LHQhPT1udWxsPyhlLnN0YXRlTm9kZT10LHd0PWUsU3Q9bnVsbCwhMCk6ITE7Y2FzZSAxMzpyZXR1cm4gdD10Lm5vZGVUeXBlIT09OD9udWxsOnQsdCE9PW51bGw/KG49WG4hPT1udWxsP3tpZDphbixvdmVyZmxvdzp1bn06bnVsbCxlLm1lbW9pemVkU3RhdGU9e2RlaHlkcmF0ZWQ6dCx0cmVlQ29udGV4dDpuLHJldHJ5TGFuZToxMDczNzQxODI0fSxuPUx0KDE4LG51bGwsbnVsbCwwKSxuLnN0YXRlTm9kZT10LG4ucmV0dXJuPWUsZS5jaGlsZD1uLHd0PWUsU3Q9bnVsbCwhMCk6ITE7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gQm8oZSl7cmV0dXJuKGUubW9kZSYxKSE9PTAmJihlLmZsYWdzJjEyOCk9PT0wfWZ1bmN0aW9uIEhvKGUpe2lmKERlKXt2YXIgdD1TdDtpZih0KXt2YXIgbj10O2lmKCFsZChlLHQpKXtpZihCbyhlKSl0aHJvdyBFcnJvcihsKDQxOCkpO3Q9Tm4obi5uZXh0U2libGluZyk7dmFyIGk9d3Q7dCYmbGQoZSx0KT9pZChpLG4pOihlLmZsYWdzPWUuZmxhZ3MmLTQwOTd8MixEZT0hMSx3dD1lKX19ZWxzZXtpZihCbyhlKSl0aHJvdyBFcnJvcihsKDQxOCkpO2UuZmxhZ3M9ZS5mbGFncyYtNDA5N3wyLERlPSExLHd0PWV9fX1mdW5jdGlvbiBvZChlKXtmb3IoZT1lLnJldHVybjtlIT09bnVsbCYmZS50YWchPT01JiZlLnRhZyE9PTMmJmUudGFnIT09MTM7KWU9ZS5yZXR1cm47d3Q9ZX1mdW5jdGlvbiBKaShlKXtpZihlIT09d3QpcmV0dXJuITE7aWYoIURlKXJldHVybiBvZChlKSxEZT0hMCwhMTt2YXIgdDtpZigodD1lLnRhZyE9PTMpJiYhKHQ9ZS50YWchPT01KSYmKHQ9ZS50eXBlLHQ9dCE9PSJoZWFkIiYmdCE9PSJib2R5IiYmIU9vKGUudHlwZSxlLm1lbW9pemVkUHJvcHMpKSx0JiYodD1TdCkpe2lmKEJvKGUpKXRocm93IGFkKCksRXJyb3IobCg0MTgpKTtmb3IoO3Q7KWlkKGUsdCksdD1Obih0Lm5leHRTaWJsaW5nKX1pZihvZChlKSxlLnRhZz09PTEzKXtpZihlPWUubWVtb2l6ZWRTdGF0ZSxlPWUhPT1udWxsP2UuZGVoeWRyYXRlZDpudWxsLCFlKXRocm93IEVycm9yKGwoMzE3KSk7ZTp7Zm9yKGU9ZS5uZXh0U2libGluZyx0PTA7ZTspe2lmKGUubm9kZVR5cGU9PT04KXt2YXIgbj1lLmRhdGE7aWYobj09PSIvJCIpe2lmKHQ9PT0wKXtTdD1ObihlLm5leHRTaWJsaW5nKTticmVhayBlfXQtLX1lbHNlIG4hPT0iJCImJm4hPT0iJCEiJiZuIT09IiQ/Inx8dCsrfWU9ZS5uZXh0U2libGluZ31TdD1udWxsfX1lbHNlIFN0PXd0P05uKGUuc3RhdGVOb2RlLm5leHRTaWJsaW5nKTpudWxsO3JldHVybiEwfWZ1bmN0aW9uIGFkKCl7Zm9yKHZhciBlPVN0O2U7KWU9Tm4oZS5uZXh0U2libGluZyl9ZnVuY3Rpb24genIoKXtTdD13dD1udWxsLERlPSExfWZ1bmN0aW9uIFFvKGUpeyR0PT09bnVsbD8kdD1bZV06JHQucHVzaChlKX12YXIgRG09Vi5SZWFjdEN1cnJlbnRCYXRjaENvbmZpZztmdW5jdGlvbiAkcyhlLHQsbil7aWYoZT1uLnJlZixlIT09bnVsbCYmdHlwZW9mIGUhPSJmdW5jdGlvbiImJnR5cGVvZiBlIT0ib2JqZWN0Iil7aWYobi5fb3duZXIpe2lmKG49bi5fb3duZXIsbil7aWYobi50YWchPT0xKXRocm93IEVycm9yKGwoMzA5KSk7dmFyIGk9bi5zdGF0ZU5vZGV9aWYoIWkpdGhyb3cgRXJyb3IobCgxNDcsZSkpO3ZhciBvPWksYT0iIitlO3JldHVybiB0IT09bnVsbCYmdC5yZWYhPT1udWxsJiZ0eXBlb2YgdC5yZWY9PSJmdW5jdGlvbiImJnQucmVmLl9zdHJpbmdSZWY9PT1hP3QucmVmOih0PWZ1bmN0aW9uKGYpe3ZhciBnPW8ucmVmcztmPT09bnVsbD9kZWxldGUgZ1thXTpnW2FdPWZ9LHQuX3N0cmluZ1JlZj1hLHQpfWlmKHR5cGVvZiBlIT0ic3RyaW5nIil0aHJvdyBFcnJvcihsKDI4NCkpO2lmKCFuLl9vd25lcil0aHJvdyBFcnJvcihsKDI5MCxlKSl9cmV0dXJuIGV9ZnVuY3Rpb24gWWkoZSx0KXt0aHJvdyBlPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KSxFcnJvcihsKDMxLGU9PT0iW29iamVjdCBPYmplY3RdIj8ib2JqZWN0IHdpdGgga2V5cyB7IitPYmplY3Qua2V5cyh0KS5qb2luKCIsICIpKyJ9IjplKSl9ZnVuY3Rpb24gdWQoZSl7dmFyIHQ9ZS5faW5pdDtyZXR1cm4gdChlLl9wYXlsb2FkKX1mdW5jdGlvbiBjZChlKXtmdW5jdGlvbiB0KFIsayl7aWYoZSl7dmFyIF89Ui5kZWxldGlvbnM7Xz09PW51bGw/KFIuZGVsZXRpb25zPVtrXSxSLmZsYWdzfD0xNik6Xy5wdXNoKGspfX1mdW5jdGlvbiBuKFIsayl7aWYoIWUpcmV0dXJuIG51bGw7Zm9yKDtrIT09bnVsbDspdChSLGspLGs9ay5zaWJsaW5nO3JldHVybiBudWxsfWZ1bmN0aW9uIGkoUixrKXtmb3IoUj1uZXcgTWFwO2shPT1udWxsOylrLmtleSE9PW51bGw/Ui5zZXQoay5rZXksayk6Ui5zZXQoay5pbmRleCxrKSxrPWsuc2libGluZztyZXR1cm4gUn1mdW5jdGlvbiBvKFIsayl7cmV0dXJuIFI9em4oUixrKSxSLmluZGV4PTAsUi5zaWJsaW5nPW51bGwsUn1mdW5jdGlvbiBhKFIsayxfKXtyZXR1cm4gUi5pbmRleD1fLGU/KF89Ui5hbHRlcm5hdGUsXyE9PW51bGw/KF89Xy5pbmRleCxfPGs/KFIuZmxhZ3N8PTIsayk6Xyk6KFIuZmxhZ3N8PTIsaykpOihSLmZsYWdzfD0xMDQ4NTc2LGspfWZ1bmN0aW9uIGYoUil7cmV0dXJuIGUmJlIuYWx0ZXJuYXRlPT09bnVsbCYmKFIuZmxhZ3N8PTIpLFJ9ZnVuY3Rpb24gZyhSLGssXyxCKXtyZXR1cm4gaz09PW51bGx8fGsudGFnIT09Nj8oaz1JYShfLFIubW9kZSxCKSxrLnJldHVybj1SLGspOihrPW8oayxfKSxrLnJldHVybj1SLGspfWZ1bmN0aW9uIHcoUixrLF8sQil7dmFyIGVlPV8udHlwZTtyZXR1cm4gZWU9PT10ZT96KFIsayxfLnByb3BzLmNoaWxkcmVuLEIsXy5rZXkpOmshPT1udWxsJiYoay5lbGVtZW50VHlwZT09PWVlfHx0eXBlb2YgZWU9PSJvYmplY3QiJiZlZSE9PW51bGwmJmVlLiQkdHlwZW9mPT09U2UmJnVkKGVlKT09PWsudHlwZSk/KEI9byhrLF8ucHJvcHMpLEIucmVmPSRzKFIsayxfKSxCLnJldHVybj1SLEIpOihCPVNsKF8udHlwZSxfLmtleSxfLnByb3BzLG51bGwsUi5tb2RlLEIpLEIucmVmPSRzKFIsayxfKSxCLnJldHVybj1SLEIpfWZ1bmN0aW9uIEYoUixrLF8sQil7cmV0dXJuIGs9PT1udWxsfHxrLnRhZyE9PTR8fGsuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8hPT1fLmNvbnRhaW5lckluZm98fGsuc3RhdGVOb2RlLmltcGxlbWVudGF0aW9uIT09Xy5pbXBsZW1lbnRhdGlvbj8oaz1NYShfLFIubW9kZSxCKSxrLnJldHVybj1SLGspOihrPW8oayxfLmNoaWxkcmVufHxbXSksay5yZXR1cm49UixrKX1mdW5jdGlvbiB6KFIsayxfLEIsZWUpe3JldHVybiBrPT09bnVsbHx8ay50YWchPT03PyhrPW9yKF8sUi5tb2RlLEIsZWUpLGsucmV0dXJuPVIsayk6KGs9byhrLF8pLGsucmV0dXJuPVIsayl9ZnVuY3Rpb24gJChSLGssXyl7aWYodHlwZW9mIGs9PSJzdHJpbmciJiZrIT09IiJ8fHR5cGVvZiBrPT0ibnVtYmVyIilyZXR1cm4gaz1JYSgiIitrLFIubW9kZSxfKSxrLnJldHVybj1SLGs7aWYodHlwZW9mIGs9PSJvYmplY3QiJiZrIT09bnVsbCl7c3dpdGNoKGsuJCR0eXBlb2Ype2Nhc2UgSDpyZXR1cm4gXz1TbChrLnR5cGUsay5rZXksay5wcm9wcyxudWxsLFIubW9kZSxfKSxfLnJlZj0kcyhSLG51bGwsayksXy5yZXR1cm49UixfO2Nhc2UgcmU6cmV0dXJuIGs9TWEoayxSLm1vZGUsXyksay5yZXR1cm49UixrO2Nhc2UgU2U6dmFyIEI9ay5faW5pdDtyZXR1cm4gJChSLEIoay5fcGF5bG9hZCksXyl9aWYocHMoayl8fFkoaykpcmV0dXJuIGs9b3IoayxSLm1vZGUsXyxudWxsKSxrLnJldHVybj1SLGs7WWkoUixrKX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBNKFIsayxfLEIpe3ZhciBlZT1rIT09bnVsbD9rLmtleTpudWxsO2lmKHR5cGVvZiBfPT0ic3RyaW5nIiYmXyE9PSIifHx0eXBlb2YgXz09Im51bWJlciIpcmV0dXJuIGVlIT09bnVsbD9udWxsOmcoUixrLCIiK18sQik7aWYodHlwZW9mIF89PSJvYmplY3QiJiZfIT09bnVsbCl7c3dpdGNoKF8uJCR0eXBlb2Ype2Nhc2UgSDpyZXR1cm4gXy5rZXk9PT1lZT93KFIsayxfLEIpOm51bGw7Y2FzZSByZTpyZXR1cm4gXy5rZXk9PT1lZT9GKFIsayxfLEIpOm51bGw7Y2FzZSBTZTpyZXR1cm4gZWU9Xy5faW5pdCxNKFIsayxlZShfLl9wYXlsb2FkKSxCKX1pZihwcyhfKXx8WShfKSlyZXR1cm4gZWUhPT1udWxsP251bGw6eihSLGssXyxCLG51bGwpO1lpKFIsXyl9cmV0dXJuIG51bGx9ZnVuY3Rpb24gSyhSLGssXyxCLGVlKXtpZih0eXBlb2YgQj09InN0cmluZyImJkIhPT0iInx8dHlwZW9mIEI9PSJudW1iZXIiKXJldHVybiBSPVIuZ2V0KF8pfHxudWxsLGcoayxSLCIiK0IsZWUpO2lmKHR5cGVvZiBCPT0ib2JqZWN0IiYmQiE9PW51bGwpe3N3aXRjaChCLiQkdHlwZW9mKXtjYXNlIEg6cmV0dXJuIFI9Ui5nZXQoQi5rZXk9PT1udWxsP186Qi5rZXkpfHxudWxsLHcoayxSLEIsZWUpO2Nhc2UgcmU6cmV0dXJuIFI9Ui5nZXQoQi5rZXk9PT1udWxsP186Qi5rZXkpfHxudWxsLEYoayxSLEIsZWUpO2Nhc2UgU2U6dmFyIGllPUIuX2luaXQ7cmV0dXJuIEsoUixrLF8saWUoQi5fcGF5bG9hZCksZWUpfWlmKHBzKEIpfHxZKEIpKXJldHVybiBSPVIuZ2V0KF8pfHxudWxsLHooayxSLEIsZWUsbnVsbCk7WWkoayxCKX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBKKFIsayxfLEIpe2Zvcih2YXIgZWU9bnVsbCxpZT1udWxsLGxlPWssYWU9az0wLFllPW51bGw7bGUhPT1udWxsJiZhZTxfLmxlbmd0aDthZSsrKXtsZS5pbmRleD5hZT8oWWU9bGUsbGU9bnVsbCk6WWU9bGUuc2libGluZzt2YXIgd2U9TShSLGxlLF9bYWVdLEIpO2lmKHdlPT09bnVsbCl7bGU9PT1udWxsJiYobGU9WWUpO2JyZWFrfWUmJmxlJiZ3ZS5hbHRlcm5hdGU9PT1udWxsJiZ0KFIsbGUpLGs9YSh3ZSxrLGFlKSxpZT09PW51bGw/ZWU9d2U6aWUuc2libGluZz13ZSxpZT13ZSxsZT1ZZX1pZihhZT09PV8ubGVuZ3RoKXJldHVybiBuKFIsbGUpLERlJiZabihSLGFlKSxlZTtpZihsZT09PW51bGwpe2Zvcig7YWU8Xy5sZW5ndGg7YWUrKylsZT0kKFIsX1thZV0sQiksbGUhPT1udWxsJiYoaz1hKGxlLGssYWUpLGllPT09bnVsbD9lZT1sZTppZS5zaWJsaW5nPWxlLGllPWxlKTtyZXR1cm4gRGUmJlpuKFIsYWUpLGVlfWZvcihsZT1pKFIsbGUpO2FlPF8ubGVuZ3RoO2FlKyspWWU9SyhsZSxSLGFlLF9bYWVdLEIpLFllIT09bnVsbCYmKGUmJlllLmFsdGVybmF0ZSE9PW51bGwmJmxlLmRlbGV0ZShZZS5rZXk9PT1udWxsP2FlOlllLmtleSksaz1hKFllLGssYWUpLGllPT09bnVsbD9lZT1ZZTppZS5zaWJsaW5nPVllLGllPVllKTtyZXR1cm4gZSYmbGUuZm9yRWFjaChmdW5jdGlvbihBbil7cmV0dXJuIHQoUixBbil9KSxEZSYmWm4oUixhZSksZWV9ZnVuY3Rpb24gWChSLGssXyxCKXt2YXIgZWU9WShfKTtpZih0eXBlb2YgZWUhPSJmdW5jdGlvbiIpdGhyb3cgRXJyb3IobCgxNTApKTtpZihfPWVlLmNhbGwoXyksXz09bnVsbCl0aHJvdyBFcnJvcihsKDE1MSkpO2Zvcih2YXIgaWU9ZWU9bnVsbCxsZT1rLGFlPWs9MCxZZT1udWxsLHdlPV8ubmV4dCgpO2xlIT09bnVsbCYmIXdlLmRvbmU7YWUrKyx3ZT1fLm5leHQoKSl7bGUuaW5kZXg+YWU/KFllPWxlLGxlPW51bGwpOlllPWxlLnNpYmxpbmc7dmFyIEFuPU0oUixsZSx3ZS52YWx1ZSxCKTtpZihBbj09PW51bGwpe2xlPT09bnVsbCYmKGxlPVllKTticmVha31lJiZsZSYmQW4uYWx0ZXJuYXRlPT09bnVsbCYmdChSLGxlKSxrPWEoQW4sayxhZSksaWU9PT1udWxsP2VlPUFuOmllLnNpYmxpbmc9QW4saWU9QW4sbGU9WWV9aWYod2UuZG9uZSlyZXR1cm4gbihSLGxlKSxEZSYmWm4oUixhZSksZWU7aWYobGU9PT1udWxsKXtmb3IoOyF3ZS5kb25lO2FlKyssd2U9Xy5uZXh0KCkpd2U9JChSLHdlLnZhbHVlLEIpLHdlIT09bnVsbCYmKGs9YSh3ZSxrLGFlKSxpZT09PW51bGw/ZWU9d2U6aWUuc2libGluZz13ZSxpZT13ZSk7cmV0dXJuIERlJiZabihSLGFlKSxlZX1mb3IobGU9aShSLGxlKTshd2UuZG9uZTthZSsrLHdlPV8ubmV4dCgpKXdlPUsobGUsUixhZSx3ZS52YWx1ZSxCKSx3ZSE9PW51bGwmJihlJiZ3ZS5hbHRlcm5hdGUhPT1udWxsJiZsZS5kZWxldGUod2Uua2V5PT09bnVsbD9hZTp3ZS5rZXkpLGs9YSh3ZSxrLGFlKSxpZT09PW51bGw/ZWU9d2U6aWUuc2libGluZz13ZSxpZT13ZSk7cmV0dXJuIGUmJmxlLmZvckVhY2goZnVuY3Rpb24oZmcpe3JldHVybiB0KFIsZmcpfSksRGUmJlpuKFIsYWUpLGVlfWZ1bmN0aW9uIEhlKFIsayxfLEIpe2lmKHR5cGVvZiBfPT0ib2JqZWN0IiYmXyE9PW51bGwmJl8udHlwZT09PXRlJiZfLmtleT09PW51bGwmJihfPV8ucHJvcHMuY2hpbGRyZW4pLHR5cGVvZiBfPT0ib2JqZWN0IiYmXyE9PW51bGwpe3N3aXRjaChfLiQkdHlwZW9mKXtjYXNlIEg6ZTp7Zm9yKHZhciBlZT1fLmtleSxpZT1rO2llIT09bnVsbDspe2lmKGllLmtleT09PWVlKXtpZihlZT1fLnR5cGUsZWU9PT10ZSl7aWYoaWUudGFnPT09Nyl7bihSLGllLnNpYmxpbmcpLGs9byhpZSxfLnByb3BzLmNoaWxkcmVuKSxrLnJldHVybj1SLFI9azticmVhayBlfX1lbHNlIGlmKGllLmVsZW1lbnRUeXBlPT09ZWV8fHR5cGVvZiBlZT09Im9iamVjdCImJmVlIT09bnVsbCYmZWUuJCR0eXBlb2Y9PT1TZSYmdWQoZWUpPT09aWUudHlwZSl7bihSLGllLnNpYmxpbmcpLGs9byhpZSxfLnByb3BzKSxrLnJlZj0kcyhSLGllLF8pLGsucmV0dXJuPVIsUj1rO2JyZWFrIGV9bihSLGllKTticmVha31lbHNlIHQoUixpZSk7aWU9aWUuc2libGluZ31fLnR5cGU9PT10ZT8oaz1vcihfLnByb3BzLmNoaWxkcmVuLFIubW9kZSxCLF8ua2V5KSxrLnJldHVybj1SLFI9ayk6KEI9U2woXy50eXBlLF8ua2V5LF8ucHJvcHMsbnVsbCxSLm1vZGUsQiksQi5yZWY9JHMoUixrLF8pLEIucmV0dXJuPVIsUj1CKX1yZXR1cm4gZihSKTtjYXNlIHJlOmU6e2ZvcihpZT1fLmtleTtrIT09bnVsbDspe2lmKGsua2V5PT09aWUpaWYoay50YWc9PT00JiZrLnN0YXRlTm9kZS5jb250YWluZXJJbmZvPT09Xy5jb250YWluZXJJbmZvJiZrLnN0YXRlTm9kZS5pbXBsZW1lbnRhdGlvbj09PV8uaW1wbGVtZW50YXRpb24pe24oUixrLnNpYmxpbmcpLGs9byhrLF8uY2hpbGRyZW58fFtdKSxrLnJldHVybj1SLFI9azticmVhayBlfWVsc2V7bihSLGspO2JyZWFrfWVsc2UgdChSLGspO2s9ay5zaWJsaW5nfWs9TWEoXyxSLm1vZGUsQiksay5yZXR1cm49UixSPWt9cmV0dXJuIGYoUik7Y2FzZSBTZTpyZXR1cm4gaWU9Xy5faW5pdCxIZShSLGssaWUoXy5fcGF5bG9hZCksQil9aWYocHMoXykpcmV0dXJuIEooUixrLF8sQik7aWYoWShfKSlyZXR1cm4gWChSLGssXyxCKTtZaShSLF8pfXJldHVybiB0eXBlb2YgXz09InN0cmluZyImJl8hPT0iInx8dHlwZW9mIF89PSJudW1iZXIiPyhfPSIiK18sayE9PW51bGwmJmsudGFnPT09Nj8obihSLGsuc2libGluZyksaz1vKGssXyksay5yZXR1cm49UixSPWspOihuKFIsayksaz1JYShfLFIubW9kZSxCKSxrLnJldHVybj1SLFI9ayksZihSKSk6bihSLGspfXJldHVybiBIZX12YXIgQXI9Y2QoITApLGRkPWNkKCExKSxYaT1SbihudWxsKSxaaT1udWxsLCRyPW51bGwscW89bnVsbDtmdW5jdGlvbiBXbygpe3FvPSRyPVppPW51bGx9ZnVuY3Rpb24gVm8oZSl7dmFyIHQ9WGkuY3VycmVudDtGZShYaSksZS5fY3VycmVudFZhbHVlPXR9ZnVuY3Rpb24gS28oZSx0LG4pe2Zvcig7ZSE9PW51bGw7KXt2YXIgaT1lLmFsdGVybmF0ZTtpZigoZS5jaGlsZExhbmVzJnQpIT09dD8oZS5jaGlsZExhbmVzfD10LGkhPT1udWxsJiYoaS5jaGlsZExhbmVzfD10KSk6aSE9PW51bGwmJihpLmNoaWxkTGFuZXMmdCkhPT10JiYoaS5jaGlsZExhbmVzfD10KSxlPT09bilicmVhaztlPWUucmV0dXJufX1mdW5jdGlvbiBVcihlLHQpe1ppPWUscW89JHI9bnVsbCxlPWUuZGVwZW5kZW5jaWVzLGUhPT1udWxsJiZlLmZpcnN0Q29udGV4dCE9PW51bGwmJigoZS5sYW5lcyZ0KSE9PTAmJihwdD0hMCksZS5maXJzdENvbnRleHQ9bnVsbCl9ZnVuY3Rpb24gX3QoZSl7dmFyIHQ9ZS5fY3VycmVudFZhbHVlO2lmKHFvIT09ZSlpZihlPXtjb250ZXh0OmUsbWVtb2l6ZWRWYWx1ZTp0LG5leHQ6bnVsbH0sJHI9PT1udWxsKXtpZihaaT09PW51bGwpdGhyb3cgRXJyb3IobCgzMDgpKTskcj1lLFppLmRlcGVuZGVuY2llcz17bGFuZXM6MCxmaXJzdENvbnRleHQ6ZX19ZWxzZSAkcj0kci5uZXh0PWU7cmV0dXJuIHR9dmFyIGVyPW51bGw7ZnVuY3Rpb24gR28oZSl7ZXI9PT1udWxsP2VyPVtlXTplci5wdXNoKGUpfWZ1bmN0aW9uIGZkKGUsdCxuLGkpe3ZhciBvPXQuaW50ZXJsZWF2ZWQ7cmV0dXJuIG89PT1udWxsPyhuLm5leHQ9bixHbyh0KSk6KG4ubmV4dD1vLm5leHQsby5uZXh0PW4pLHQuaW50ZXJsZWF2ZWQ9bixjbihlLGkpfWZ1bmN0aW9uIGNuKGUsdCl7ZS5sYW5lc3w9dDt2YXIgbj1lLmFsdGVybmF0ZTtmb3IobiE9PW51bGwmJihuLmxhbmVzfD10KSxuPWUsZT1lLnJldHVybjtlIT09bnVsbDspZS5jaGlsZExhbmVzfD10LG49ZS5hbHRlcm5hdGUsbiE9PW51bGwmJihuLmNoaWxkTGFuZXN8PXQpLG49ZSxlPWUucmV0dXJuO3JldHVybiBuLnRhZz09PTM/bi5zdGF0ZU5vZGU6bnVsbH12YXIgVG49ITE7ZnVuY3Rpb24gSm8oZSl7ZS51cGRhdGVRdWV1ZT17YmFzZVN0YXRlOmUubWVtb2l6ZWRTdGF0ZSxmaXJzdEJhc2VVcGRhdGU6bnVsbCxsYXN0QmFzZVVwZGF0ZTpudWxsLHNoYXJlZDp7cGVuZGluZzpudWxsLGludGVybGVhdmVkOm51bGwsbGFuZXM6MH0sZWZmZWN0czpudWxsfX1mdW5jdGlvbiBoZChlLHQpe2U9ZS51cGRhdGVRdWV1ZSx0LnVwZGF0ZVF1ZXVlPT09ZSYmKHQudXBkYXRlUXVldWU9e2Jhc2VTdGF0ZTplLmJhc2VTdGF0ZSxmaXJzdEJhc2VVcGRhdGU6ZS5maXJzdEJhc2VVcGRhdGUsbGFzdEJhc2VVcGRhdGU6ZS5sYXN0QmFzZVVwZGF0ZSxzaGFyZWQ6ZS5zaGFyZWQsZWZmZWN0czplLmVmZmVjdHN9KX1mdW5jdGlvbiBkbihlLHQpe3JldHVybntldmVudFRpbWU6ZSxsYW5lOnQsdGFnOjAscGF5bG9hZDpudWxsLGNhbGxiYWNrOm51bGwsbmV4dDpudWxsfX1mdW5jdGlvbiBGbihlLHQsbil7dmFyIGk9ZS51cGRhdGVRdWV1ZTtpZihpPT09bnVsbClyZXR1cm4gbnVsbDtpZihpPWkuc2hhcmVkLCh2ZSYyKSE9PTApe3ZhciBvPWkucGVuZGluZztyZXR1cm4gbz09PW51bGw/dC5uZXh0PXQ6KHQubmV4dD1vLm5leHQsby5uZXh0PXQpLGkucGVuZGluZz10LGNuKGUsbil9cmV0dXJuIG89aS5pbnRlcmxlYXZlZCxvPT09bnVsbD8odC5uZXh0PXQsR28oaSkpOih0Lm5leHQ9by5uZXh0LG8ubmV4dD10KSxpLmludGVybGVhdmVkPXQsY24oZSxuKX1mdW5jdGlvbiBlbChlLHQsbil7aWYodD10LnVwZGF0ZVF1ZXVlLHQhPT1udWxsJiYodD10LnNoYXJlZCwobiY0MTk0MjQwKSE9PTApKXt2YXIgaT10LmxhbmVzO2kmPWUucGVuZGluZ0xhbmVzLG58PWksdC5sYW5lcz1uLHVvKGUsbil9fWZ1bmN0aW9uIHBkKGUsdCl7dmFyIG49ZS51cGRhdGVRdWV1ZSxpPWUuYWx0ZXJuYXRlO2lmKGkhPT1udWxsJiYoaT1pLnVwZGF0ZVF1ZXVlLG49PT1pKSl7dmFyIG89bnVsbCxhPW51bGw7aWYobj1uLmZpcnN0QmFzZVVwZGF0ZSxuIT09bnVsbCl7ZG97dmFyIGY9e2V2ZW50VGltZTpuLmV2ZW50VGltZSxsYW5lOm4ubGFuZSx0YWc6bi50YWcscGF5bG9hZDpuLnBheWxvYWQsY2FsbGJhY2s6bi5jYWxsYmFjayxuZXh0Om51bGx9O2E9PT1udWxsP289YT1mOmE9YS5uZXh0PWYsbj1uLm5leHR9d2hpbGUobiE9PW51bGwpO2E9PT1udWxsP289YT10OmE9YS5uZXh0PXR9ZWxzZSBvPWE9dDtuPXtiYXNlU3RhdGU6aS5iYXNlU3RhdGUsZmlyc3RCYXNlVXBkYXRlOm8sbGFzdEJhc2VVcGRhdGU6YSxzaGFyZWQ6aS5zaGFyZWQsZWZmZWN0czppLmVmZmVjdHN9LGUudXBkYXRlUXVldWU9bjtyZXR1cm59ZT1uLmxhc3RCYXNlVXBkYXRlLGU9PT1udWxsP24uZmlyc3RCYXNlVXBkYXRlPXQ6ZS5uZXh0PXQsbi5sYXN0QmFzZVVwZGF0ZT10fWZ1bmN0aW9uIHRsKGUsdCxuLGkpe3ZhciBvPWUudXBkYXRlUXVldWU7VG49ITE7dmFyIGE9by5maXJzdEJhc2VVcGRhdGUsZj1vLmxhc3RCYXNlVXBkYXRlLGc9by5zaGFyZWQucGVuZGluZztpZihnIT09bnVsbCl7by5zaGFyZWQucGVuZGluZz1udWxsO3ZhciB3PWcsRj13Lm5leHQ7dy5uZXh0PW51bGwsZj09PW51bGw/YT1GOmYubmV4dD1GLGY9dzt2YXIgej1lLmFsdGVybmF0ZTt6IT09bnVsbCYmKHo9ei51cGRhdGVRdWV1ZSxnPXoubGFzdEJhc2VVcGRhdGUsZyE9PWYmJihnPT09bnVsbD96LmZpcnN0QmFzZVVwZGF0ZT1GOmcubmV4dD1GLHoubGFzdEJhc2VVcGRhdGU9dykpfWlmKGEhPT1udWxsKXt2YXIgJD1vLmJhc2VTdGF0ZTtmPTAsej1GPXc9bnVsbCxnPWE7ZG97dmFyIE09Zy5sYW5lLEs9Zy5ldmVudFRpbWU7aWYoKGkmTSk9PT1NKXt6IT09bnVsbCYmKHo9ei5uZXh0PXtldmVudFRpbWU6SyxsYW5lOjAsdGFnOmcudGFnLHBheWxvYWQ6Zy5wYXlsb2FkLGNhbGxiYWNrOmcuY2FsbGJhY2ssbmV4dDpudWxsfSk7ZTp7dmFyIEo9ZSxYPWc7c3dpdGNoKE09dCxLPW4sWC50YWcpe2Nhc2UgMTppZihKPVgucGF5bG9hZCx0eXBlb2YgSj09ImZ1bmN0aW9uIil7JD1KLmNhbGwoSywkLE0pO2JyZWFrIGV9JD1KO2JyZWFrIGU7Y2FzZSAzOkouZmxhZ3M9Si5mbGFncyYtNjU1Mzd8MTI4O2Nhc2UgMDppZihKPVgucGF5bG9hZCxNPXR5cGVvZiBKPT0iZnVuY3Rpb24iP0ouY2FsbChLLCQsTSk6SixNPT1udWxsKWJyZWFrIGU7JD1xKHt9LCQsTSk7YnJlYWsgZTtjYXNlIDI6VG49ITB9fWcuY2FsbGJhY2shPT1udWxsJiZnLmxhbmUhPT0wJiYoZS5mbGFnc3w9NjQsTT1vLmVmZmVjdHMsTT09PW51bGw/by5lZmZlY3RzPVtnXTpNLnB1c2goZykpfWVsc2UgSz17ZXZlbnRUaW1lOkssbGFuZTpNLHRhZzpnLnRhZyxwYXlsb2FkOmcucGF5bG9hZCxjYWxsYmFjazpnLmNhbGxiYWNrLG5leHQ6bnVsbH0sej09PW51bGw/KEY9ej1LLHc9JCk6ej16Lm5leHQ9SyxmfD1NO2lmKGc9Zy5uZXh0LGc9PT1udWxsKXtpZihnPW8uc2hhcmVkLnBlbmRpbmcsZz09PW51bGwpYnJlYWs7TT1nLGc9TS5uZXh0LE0ubmV4dD1udWxsLG8ubGFzdEJhc2VVcGRhdGU9TSxvLnNoYXJlZC5wZW5kaW5nPW51bGx9fXdoaWxlKCEwKTtpZih6PT09bnVsbCYmKHc9JCksby5iYXNlU3RhdGU9dyxvLmZpcnN0QmFzZVVwZGF0ZT1GLG8ubGFzdEJhc2VVcGRhdGU9eix0PW8uc2hhcmVkLmludGVybGVhdmVkLHQhPT1udWxsKXtvPXQ7ZG8gZnw9by5sYW5lLG89by5uZXh0O3doaWxlKG8hPT10KX1lbHNlIGE9PT1udWxsJiYoby5zaGFyZWQubGFuZXM9MCk7cnJ8PWYsZS5sYW5lcz1mLGUubWVtb2l6ZWRTdGF0ZT0kfX1mdW5jdGlvbiBtZChlLHQsbil7aWYoZT10LmVmZmVjdHMsdC5lZmZlY3RzPW51bGwsZSE9PW51bGwpZm9yKHQ9MDt0PGUubGVuZ3RoO3QrKyl7dmFyIGk9ZVt0XSxvPWkuY2FsbGJhY2s7aWYobyE9PW51bGwpe2lmKGkuY2FsbGJhY2s9bnVsbCxpPW4sdHlwZW9mIG8hPSJmdW5jdGlvbiIpdGhyb3cgRXJyb3IobCgxOTEsbykpO28uY2FsbChpKX19fXZhciBVcz17fSxYdD1SbihVcyksYnM9Um4oVXMpLEJzPVJuKFVzKTtmdW5jdGlvbiB0cihlKXtpZihlPT09VXMpdGhyb3cgRXJyb3IobCgxNzQpKTtyZXR1cm4gZX1mdW5jdGlvbiBZbyhlLHQpe3N3aXRjaChQZShCcyx0KSxQZShicyxlKSxQZShYdCxVcyksZT10Lm5vZGVUeXBlLGUpe2Nhc2UgOTpjYXNlIDExOnQ9KHQ9dC5kb2N1bWVudEVsZW1lbnQpP3QubmFtZXNwYWNlVVJJOllsKG51bGwsIiIpO2JyZWFrO2RlZmF1bHQ6ZT1lPT09OD90LnBhcmVudE5vZGU6dCx0PWUubmFtZXNwYWNlVVJJfHxudWxsLGU9ZS50YWdOYW1lLHQ9WWwodCxlKX1GZShYdCksUGUoWHQsdCl9ZnVuY3Rpb24gYnIoKXtGZShYdCksRmUoYnMpLEZlKEJzKX1mdW5jdGlvbiBnZChlKXt0cihCcy5jdXJyZW50KTt2YXIgdD10cihYdC5jdXJyZW50KSxuPVlsKHQsZS50eXBlKTt0IT09biYmKFBlKGJzLGUpLFBlKFh0LG4pKX1mdW5jdGlvbiBYbyhlKXticy5jdXJyZW50PT09ZSYmKEZlKFh0KSxGZShicykpfXZhciBNZT1SbigwKTtmdW5jdGlvbiBubChlKXtmb3IodmFyIHQ9ZTt0IT09bnVsbDspe2lmKHQudGFnPT09MTMpe3ZhciBuPXQubWVtb2l6ZWRTdGF0ZTtpZihuIT09bnVsbCYmKG49bi5kZWh5ZHJhdGVkLG49PT1udWxsfHxuLmRhdGE9PT0iJD8ifHxuLmRhdGE9PT0iJCEiKSlyZXR1cm4gdH1lbHNlIGlmKHQudGFnPT09MTkmJnQubWVtb2l6ZWRQcm9wcy5yZXZlYWxPcmRlciE9PXZvaWQgMCl7aWYoKHQuZmxhZ3MmMTI4KSE9PTApcmV0dXJuIHR9ZWxzZSBpZih0LmNoaWxkIT09bnVsbCl7dC5jaGlsZC5yZXR1cm49dCx0PXQuY2hpbGQ7Y29udGludWV9aWYodD09PWUpYnJlYWs7Zm9yKDt0LnNpYmxpbmc9PT1udWxsOyl7aWYodC5yZXR1cm49PT1udWxsfHx0LnJldHVybj09PWUpcmV0dXJuIG51bGw7dD10LnJldHVybn10LnNpYmxpbmcucmV0dXJuPXQucmV0dXJuLHQ9dC5zaWJsaW5nfXJldHVybiBudWxsfXZhciBabz1bXTtmdW5jdGlvbiBlYSgpe2Zvcih2YXIgZT0wO2U8Wm8ubGVuZ3RoO2UrKylab1tlXS5fd29ya0luUHJvZ3Jlc3NWZXJzaW9uUHJpbWFyeT1udWxsO1pvLmxlbmd0aD0wfXZhciBybD1WLlJlYWN0Q3VycmVudERpc3BhdGNoZXIsdGE9Vi5SZWFjdEN1cnJlbnRCYXRjaENvbmZpZyxucj0wLHplPW51bGwscWU9bnVsbCxHZT1udWxsLHNsPSExLEhzPSExLFFzPTAsT209MDtmdW5jdGlvbiB0dCgpe3Rocm93IEVycm9yKGwoMzIxKSl9ZnVuY3Rpb24gbmEoZSx0KXtpZih0PT09bnVsbClyZXR1cm4hMTtmb3IodmFyIG49MDtuPHQubGVuZ3RoJiZuPGUubGVuZ3RoO24rKylpZighQXQoZVtuXSx0W25dKSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiByYShlLHQsbixpLG8sYSl7aWYobnI9YSx6ZT10LHQubWVtb2l6ZWRTdGF0ZT1udWxsLHQudXBkYXRlUXVldWU9bnVsbCx0LmxhbmVzPTAscmwuY3VycmVudD1lPT09bnVsbHx8ZS5tZW1vaXplZFN0YXRlPT09bnVsbD9BbTokbSxlPW4oaSxvKSxIcyl7YT0wO2Rve2lmKEhzPSExLFFzPTAsMjU8PWEpdGhyb3cgRXJyb3IobCgzMDEpKTthKz0xLEdlPXFlPW51bGwsdC51cGRhdGVRdWV1ZT1udWxsLHJsLmN1cnJlbnQ9VW0sZT1uKGksbyl9d2hpbGUoSHMpfWlmKHJsLmN1cnJlbnQ9b2wsdD1xZSE9PW51bGwmJnFlLm5leHQhPT1udWxsLG5yPTAsR2U9cWU9emU9bnVsbCxzbD0hMSx0KXRocm93IEVycm9yKGwoMzAwKSk7cmV0dXJuIGV9ZnVuY3Rpb24gc2EoKXt2YXIgZT1RcyE9PTA7cmV0dXJuIFFzPTAsZX1mdW5jdGlvbiBadCgpe3ZhciBlPXttZW1vaXplZFN0YXRlOm51bGwsYmFzZVN0YXRlOm51bGwsYmFzZVF1ZXVlOm51bGwscXVldWU6bnVsbCxuZXh0Om51bGx9O3JldHVybiBHZT09PW51bGw/emUubWVtb2l6ZWRTdGF0ZT1HZT1lOkdlPUdlLm5leHQ9ZSxHZX1mdW5jdGlvbiBUdCgpe2lmKHFlPT09bnVsbCl7dmFyIGU9emUuYWx0ZXJuYXRlO2U9ZSE9PW51bGw/ZS5tZW1vaXplZFN0YXRlOm51bGx9ZWxzZSBlPXFlLm5leHQ7dmFyIHQ9R2U9PT1udWxsP3plLm1lbW9pemVkU3RhdGU6R2UubmV4dDtpZih0IT09bnVsbClHZT10LHFlPWU7ZWxzZXtpZihlPT09bnVsbCl0aHJvdyBFcnJvcihsKDMxMCkpO3FlPWUsZT17bWVtb2l6ZWRTdGF0ZTpxZS5tZW1vaXplZFN0YXRlLGJhc2VTdGF0ZTpxZS5iYXNlU3RhdGUsYmFzZVF1ZXVlOnFlLmJhc2VRdWV1ZSxxdWV1ZTpxZS5xdWV1ZSxuZXh0Om51bGx9LEdlPT09bnVsbD96ZS5tZW1vaXplZFN0YXRlPUdlPWU6R2U9R2UubmV4dD1lfXJldHVybiBHZX1mdW5jdGlvbiBxcyhlLHQpe3JldHVybiB0eXBlb2YgdD09ImZ1bmN0aW9uIj90KGUpOnR9ZnVuY3Rpb24gaWEoZSl7dmFyIHQ9VHQoKSxuPXQucXVldWU7aWYobj09PW51bGwpdGhyb3cgRXJyb3IobCgzMTEpKTtuLmxhc3RSZW5kZXJlZFJlZHVjZXI9ZTt2YXIgaT1xZSxvPWkuYmFzZVF1ZXVlLGE9bi5wZW5kaW5nO2lmKGEhPT1udWxsKXtpZihvIT09bnVsbCl7dmFyIGY9by5uZXh0O28ubmV4dD1hLm5leHQsYS5uZXh0PWZ9aS5iYXNlUXVldWU9bz1hLG4ucGVuZGluZz1udWxsfWlmKG8hPT1udWxsKXthPW8ubmV4dCxpPWkuYmFzZVN0YXRlO3ZhciBnPWY9bnVsbCx3PW51bGwsRj1hO2Rve3ZhciB6PUYubGFuZTtpZigobnImeik9PT16KXchPT1udWxsJiYodz13Lm5leHQ9e2xhbmU6MCxhY3Rpb246Ri5hY3Rpb24saGFzRWFnZXJTdGF0ZTpGLmhhc0VhZ2VyU3RhdGUsZWFnZXJTdGF0ZTpGLmVhZ2VyU3RhdGUsbmV4dDpudWxsfSksaT1GLmhhc0VhZ2VyU3RhdGU/Ri5lYWdlclN0YXRlOmUoaSxGLmFjdGlvbik7ZWxzZXt2YXIgJD17bGFuZTp6LGFjdGlvbjpGLmFjdGlvbixoYXNFYWdlclN0YXRlOkYuaGFzRWFnZXJTdGF0ZSxlYWdlclN0YXRlOkYuZWFnZXJTdGF0ZSxuZXh0Om51bGx9O3c9PT1udWxsPyhnPXc9JCxmPWkpOnc9dy5uZXh0PSQsemUubGFuZXN8PXoscnJ8PXp9Rj1GLm5leHR9d2hpbGUoRiE9PW51bGwmJkYhPT1hKTt3PT09bnVsbD9mPWk6dy5uZXh0PWcsQXQoaSx0Lm1lbW9pemVkU3RhdGUpfHwocHQ9ITApLHQubWVtb2l6ZWRTdGF0ZT1pLHQuYmFzZVN0YXRlPWYsdC5iYXNlUXVldWU9dyxuLmxhc3RSZW5kZXJlZFN0YXRlPWl9aWYoZT1uLmludGVybGVhdmVkLGUhPT1udWxsKXtvPWU7ZG8gYT1vLmxhbmUsemUubGFuZXN8PWEscnJ8PWEsbz1vLm5leHQ7d2hpbGUobyE9PWUpfWVsc2Ugbz09PW51bGwmJihuLmxhbmVzPTApO3JldHVyblt0Lm1lbW9pemVkU3RhdGUsbi5kaXNwYXRjaF19ZnVuY3Rpb24gbGEoZSl7dmFyIHQ9VHQoKSxuPXQucXVldWU7aWYobj09PW51bGwpdGhyb3cgRXJyb3IobCgzMTEpKTtuLmxhc3RSZW5kZXJlZFJlZHVjZXI9ZTt2YXIgaT1uLmRpc3BhdGNoLG89bi5wZW5kaW5nLGE9dC5tZW1vaXplZFN0YXRlO2lmKG8hPT1udWxsKXtuLnBlbmRpbmc9bnVsbDt2YXIgZj1vPW8ubmV4dDtkbyBhPWUoYSxmLmFjdGlvbiksZj1mLm5leHQ7d2hpbGUoZiE9PW8pO0F0KGEsdC5tZW1vaXplZFN0YXRlKXx8KHB0PSEwKSx0Lm1lbW9pemVkU3RhdGU9YSx0LmJhc2VRdWV1ZT09PW51bGwmJih0LmJhc2VTdGF0ZT1hKSxuLmxhc3RSZW5kZXJlZFN0YXRlPWF9cmV0dXJuW2EsaV19ZnVuY3Rpb24gdmQoKXt9ZnVuY3Rpb24geWQoZSx0KXt2YXIgbj16ZSxpPVR0KCksbz10KCksYT0hQXQoaS5tZW1vaXplZFN0YXRlLG8pO2lmKGEmJihpLm1lbW9pemVkU3RhdGU9byxwdD0hMCksaT1pLnF1ZXVlLG9hKFNkLmJpbmQobnVsbCxuLGksZSksW2VdKSxpLmdldFNuYXBzaG90IT09dHx8YXx8R2UhPT1udWxsJiZHZS5tZW1vaXplZFN0YXRlLnRhZyYxKXtpZihuLmZsYWdzfD0yMDQ4LFdzKDksd2QuYmluZChudWxsLG4saSxvLHQpLHZvaWQgMCxudWxsKSxKZT09PW51bGwpdGhyb3cgRXJyb3IobCgzNDkpKTsobnImMzApIT09MHx8eGQobix0LG8pfXJldHVybiBvfWZ1bmN0aW9uIHhkKGUsdCxuKXtlLmZsYWdzfD0xNjM4NCxlPXtnZXRTbmFwc2hvdDp0LHZhbHVlOm59LHQ9emUudXBkYXRlUXVldWUsdD09PW51bGw/KHQ9e2xhc3RFZmZlY3Q6bnVsbCxzdG9yZXM6bnVsbH0semUudXBkYXRlUXVldWU9dCx0LnN0b3Jlcz1bZV0pOihuPXQuc3RvcmVzLG49PT1udWxsP3Quc3RvcmVzPVtlXTpuLnB1c2goZSkpfWZ1bmN0aW9uIHdkKGUsdCxuLGkpe3QudmFsdWU9bix0LmdldFNuYXBzaG90PWksa2QodCkmJkNkKGUpfWZ1bmN0aW9uIFNkKGUsdCxuKXtyZXR1cm4gbihmdW5jdGlvbigpe2tkKHQpJiZDZChlKX0pfWZ1bmN0aW9uIGtkKGUpe3ZhciB0PWUuZ2V0U25hcHNob3Q7ZT1lLnZhbHVlO3RyeXt2YXIgbj10KCk7cmV0dXJuIUF0KGUsbil9Y2F0Y2h7cmV0dXJuITB9fWZ1bmN0aW9uIENkKGUpe3ZhciB0PWNuKGUsMSk7dCE9PW51bGwmJkh0KHQsZSwxLC0xKX1mdW5jdGlvbiBqZChlKXt2YXIgdD1adCgpO3JldHVybiB0eXBlb2YgZT09ImZ1bmN0aW9uIiYmKGU9ZSgpKSx0Lm1lbW9pemVkU3RhdGU9dC5iYXNlU3RhdGU9ZSxlPXtwZW5kaW5nOm51bGwsaW50ZXJsZWF2ZWQ6bnVsbCxsYW5lczowLGRpc3BhdGNoOm51bGwsbGFzdFJlbmRlcmVkUmVkdWNlcjpxcyxsYXN0UmVuZGVyZWRTdGF0ZTplfSx0LnF1ZXVlPWUsZT1lLmRpc3BhdGNoPXptLmJpbmQobnVsbCx6ZSxlKSxbdC5tZW1vaXplZFN0YXRlLGVdfWZ1bmN0aW9uIFdzKGUsdCxuLGkpe3JldHVybiBlPXt0YWc6ZSxjcmVhdGU6dCxkZXN0cm95Om4sZGVwczppLG5leHQ6bnVsbH0sdD16ZS51cGRhdGVRdWV1ZSx0PT09bnVsbD8odD17bGFzdEVmZmVjdDpudWxsLHN0b3JlczpudWxsfSx6ZS51cGRhdGVRdWV1ZT10LHQubGFzdEVmZmVjdD1lLm5leHQ9ZSk6KG49dC5sYXN0RWZmZWN0LG49PT1udWxsP3QubGFzdEVmZmVjdD1lLm5leHQ9ZTooaT1uLm5leHQsbi5uZXh0PWUsZS5uZXh0PWksdC5sYXN0RWZmZWN0PWUpKSxlfWZ1bmN0aW9uIEVkKCl7cmV0dXJuIFR0KCkubWVtb2l6ZWRTdGF0ZX1mdW5jdGlvbiBpbChlLHQsbixpKXt2YXIgbz1adCgpO3plLmZsYWdzfD1lLG8ubWVtb2l6ZWRTdGF0ZT1XcygxfHQsbix2b2lkIDAsaT09PXZvaWQgMD9udWxsOmkpfWZ1bmN0aW9uIGxsKGUsdCxuLGkpe3ZhciBvPVR0KCk7aT1pPT09dm9pZCAwP251bGw6aTt2YXIgYT12b2lkIDA7aWYocWUhPT1udWxsKXt2YXIgZj1xZS5tZW1vaXplZFN0YXRlO2lmKGE9Zi5kZXN0cm95LGkhPT1udWxsJiZuYShpLGYuZGVwcykpe28ubWVtb2l6ZWRTdGF0ZT1Xcyh0LG4sYSxpKTtyZXR1cm59fXplLmZsYWdzfD1lLG8ubWVtb2l6ZWRTdGF0ZT1XcygxfHQsbixhLGkpfWZ1bmN0aW9uIE5kKGUsdCl7cmV0dXJuIGlsKDgzOTA2NTYsOCxlLHQpfWZ1bmN0aW9uIG9hKGUsdCl7cmV0dXJuIGxsKDIwNDgsOCxlLHQpfWZ1bmN0aW9uIFJkKGUsdCl7cmV0dXJuIGxsKDQsMixlLHQpfWZ1bmN0aW9uIFBkKGUsdCl7cmV0dXJuIGxsKDQsNCxlLHQpfWZ1bmN0aW9uIF9kKGUsdCl7aWYodHlwZW9mIHQ9PSJmdW5jdGlvbiIpcmV0dXJuIGU9ZSgpLHQoZSksZnVuY3Rpb24oKXt0KG51bGwpfTtpZih0IT1udWxsKXJldHVybiBlPWUoKSx0LmN1cnJlbnQ9ZSxmdW5jdGlvbigpe3QuY3VycmVudD1udWxsfX1mdW5jdGlvbiBUZChlLHQsbil7cmV0dXJuIG49biE9bnVsbD9uLmNvbmNhdChbZV0pOm51bGwsbGwoNCw0LF9kLmJpbmQobnVsbCx0LGUpLG4pfWZ1bmN0aW9uIGFhKCl7fWZ1bmN0aW9uIEZkKGUsdCl7dmFyIG49VHQoKTt0PXQ9PT12b2lkIDA/bnVsbDp0O3ZhciBpPW4ubWVtb2l6ZWRTdGF0ZTtyZXR1cm4gaSE9PW51bGwmJnQhPT1udWxsJiZuYSh0LGlbMV0pP2lbMF06KG4ubWVtb2l6ZWRTdGF0ZT1bZSx0XSxlKX1mdW5jdGlvbiBMZChlLHQpe3ZhciBuPVR0KCk7dD10PT09dm9pZCAwP251bGw6dDt2YXIgaT1uLm1lbW9pemVkU3RhdGU7cmV0dXJuIGkhPT1udWxsJiZ0IT09bnVsbCYmbmEodCxpWzFdKT9pWzBdOihlPWUoKSxuLm1lbW9pemVkU3RhdGU9W2UsdF0sZSl9ZnVuY3Rpb24gRGQoZSx0LG4pe3JldHVybihuciYyMSk9PT0wPyhlLmJhc2VTdGF0ZSYmKGUuYmFzZVN0YXRlPSExLHB0PSEwKSxlLm1lbW9pemVkU3RhdGU9bik6KEF0KG4sdCl8fChuPXVjKCksemUubGFuZXN8PW4scnJ8PW4sZS5iYXNlU3RhdGU9ITApLHQpfWZ1bmN0aW9uIEltKGUsdCl7dmFyIG49amU7amU9biE9PTAmJjQ+bj9uOjQsZSghMCk7dmFyIGk9dGEudHJhbnNpdGlvbjt0YS50cmFuc2l0aW9uPXt9O3RyeXtlKCExKSx0KCl9ZmluYWxseXtqZT1uLHRhLnRyYW5zaXRpb249aX19ZnVuY3Rpb24gT2QoKXtyZXR1cm4gVHQoKS5tZW1vaXplZFN0YXRlfWZ1bmN0aW9uIE1tKGUsdCxuKXt2YXIgaT1JbihlKTtpZihuPXtsYW5lOmksYWN0aW9uOm4saGFzRWFnZXJTdGF0ZTohMSxlYWdlclN0YXRlOm51bGwsbmV4dDpudWxsfSxJZChlKSlNZCh0LG4pO2Vsc2UgaWYobj1mZChlLHQsbixpKSxuIT09bnVsbCl7dmFyIG89b3QoKTtIdChuLGUsaSxvKSx6ZChuLHQsaSl9fWZ1bmN0aW9uIHptKGUsdCxuKXt2YXIgaT1JbihlKSxvPXtsYW5lOmksYWN0aW9uOm4saGFzRWFnZXJTdGF0ZTohMSxlYWdlclN0YXRlOm51bGwsbmV4dDpudWxsfTtpZihJZChlKSlNZCh0LG8pO2Vsc2V7dmFyIGE9ZS5hbHRlcm5hdGU7aWYoZS5sYW5lcz09PTAmJihhPT09bnVsbHx8YS5sYW5lcz09PTApJiYoYT10Lmxhc3RSZW5kZXJlZFJlZHVjZXIsYSE9PW51bGwpKXRyeXt2YXIgZj10Lmxhc3RSZW5kZXJlZFN0YXRlLGc9YShmLG4pO2lmKG8uaGFzRWFnZXJTdGF0ZT0hMCxvLmVhZ2VyU3RhdGU9ZyxBdChnLGYpKXt2YXIgdz10LmludGVybGVhdmVkO3c9PT1udWxsPyhvLm5leHQ9byxHbyh0KSk6KG8ubmV4dD13Lm5leHQsdy5uZXh0PW8pLHQuaW50ZXJsZWF2ZWQ9bztyZXR1cm59fWNhdGNoe31maW5hbGx5e31uPWZkKGUsdCxvLGkpLG4hPT1udWxsJiYobz1vdCgpLEh0KG4sZSxpLG8pLHpkKG4sdCxpKSl9fWZ1bmN0aW9uIElkKGUpe3ZhciB0PWUuYWx0ZXJuYXRlO3JldHVybiBlPT09emV8fHQhPT1udWxsJiZ0PT09emV9ZnVuY3Rpb24gTWQoZSx0KXtIcz1zbD0hMDt2YXIgbj1lLnBlbmRpbmc7bj09PW51bGw/dC5uZXh0PXQ6KHQubmV4dD1uLm5leHQsbi5uZXh0PXQpLGUucGVuZGluZz10fWZ1bmN0aW9uIHpkKGUsdCxuKXtpZigobiY0MTk0MjQwKSE9PTApe3ZhciBpPXQubGFuZXM7aSY9ZS5wZW5kaW5nTGFuZXMsbnw9aSx0LmxhbmVzPW4sdW8oZSxuKX19dmFyIG9sPXtyZWFkQ29udGV4dDpfdCx1c2VDYWxsYmFjazp0dCx1c2VDb250ZXh0OnR0LHVzZUVmZmVjdDp0dCx1c2VJbXBlcmF0aXZlSGFuZGxlOnR0LHVzZUluc2VydGlvbkVmZmVjdDp0dCx1c2VMYXlvdXRFZmZlY3Q6dHQsdXNlTWVtbzp0dCx1c2VSZWR1Y2VyOnR0LHVzZVJlZjp0dCx1c2VTdGF0ZTp0dCx1c2VEZWJ1Z1ZhbHVlOnR0LHVzZURlZmVycmVkVmFsdWU6dHQsdXNlVHJhbnNpdGlvbjp0dCx1c2VNdXRhYmxlU291cmNlOnR0LHVzZVN5bmNFeHRlcm5hbFN0b3JlOnR0LHVzZUlkOnR0LHVuc3RhYmxlX2lzTmV3UmVjb25jaWxlcjohMX0sQW09e3JlYWRDb250ZXh0Ol90LHVzZUNhbGxiYWNrOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIFp0KCkubWVtb2l6ZWRTdGF0ZT1bZSx0PT09dm9pZCAwP251bGw6dF0sZX0sdXNlQ29udGV4dDpfdCx1c2VFZmZlY3Q6TmQsdXNlSW1wZXJhdGl2ZUhhbmRsZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIG49biE9bnVsbD9uLmNvbmNhdChbZV0pOm51bGwsaWwoNDE5NDMwOCw0LF9kLmJpbmQobnVsbCx0LGUpLG4pfSx1c2VMYXlvdXRFZmZlY3Q6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gaWwoNDE5NDMwOCw0LGUsdCl9LHVzZUluc2VydGlvbkVmZmVjdDpmdW5jdGlvbihlLHQpe3JldHVybiBpbCg0LDIsZSx0KX0sdXNlTWVtbzpmdW5jdGlvbihlLHQpe3ZhciBuPVp0KCk7cmV0dXJuIHQ9dD09PXZvaWQgMD9udWxsOnQsZT1lKCksbi5tZW1vaXplZFN0YXRlPVtlLHRdLGV9LHVzZVJlZHVjZXI6ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPVp0KCk7cmV0dXJuIHQ9biE9PXZvaWQgMD9uKHQpOnQsaS5tZW1vaXplZFN0YXRlPWkuYmFzZVN0YXRlPXQsZT17cGVuZGluZzpudWxsLGludGVybGVhdmVkOm51bGwsbGFuZXM6MCxkaXNwYXRjaDpudWxsLGxhc3RSZW5kZXJlZFJlZHVjZXI6ZSxsYXN0UmVuZGVyZWRTdGF0ZTp0fSxpLnF1ZXVlPWUsZT1lLmRpc3BhdGNoPU1tLmJpbmQobnVsbCx6ZSxlKSxbaS5tZW1vaXplZFN0YXRlLGVdfSx1c2VSZWY6ZnVuY3Rpb24oZSl7dmFyIHQ9WnQoKTtyZXR1cm4gZT17Y3VycmVudDplfSx0Lm1lbW9pemVkU3RhdGU9ZX0sdXNlU3RhdGU6amQsdXNlRGVidWdWYWx1ZTphYSx1c2VEZWZlcnJlZFZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBadCgpLm1lbW9pemVkU3RhdGU9ZX0sdXNlVHJhbnNpdGlvbjpmdW5jdGlvbigpe3ZhciBlPWpkKCExKSx0PWVbMF07cmV0dXJuIGU9SW0uYmluZChudWxsLGVbMV0pLFp0KCkubWVtb2l6ZWRTdGF0ZT1lLFt0LGVdfSx1c2VNdXRhYmxlU291cmNlOmZ1bmN0aW9uKCl7fSx1c2VTeW5jRXh0ZXJuYWxTdG9yZTpmdW5jdGlvbihlLHQsbil7dmFyIGk9emUsbz1adCgpO2lmKERlKXtpZihuPT09dm9pZCAwKXRocm93IEVycm9yKGwoNDA3KSk7bj1uKCl9ZWxzZXtpZihuPXQoKSxKZT09PW51bGwpdGhyb3cgRXJyb3IobCgzNDkpKTsobnImMzApIT09MHx8eGQoaSx0LG4pfW8ubWVtb2l6ZWRTdGF0ZT1uO3ZhciBhPXt2YWx1ZTpuLGdldFNuYXBzaG90OnR9O3JldHVybiBvLnF1ZXVlPWEsTmQoU2QuYmluZChudWxsLGksYSxlKSxbZV0pLGkuZmxhZ3N8PTIwNDgsV3MoOSx3ZC5iaW5kKG51bGwsaSxhLG4sdCksdm9pZCAwLG51bGwpLG59LHVzZUlkOmZ1bmN0aW9uKCl7dmFyIGU9WnQoKSx0PUplLmlkZW50aWZpZXJQcmVmaXg7aWYoRGUpe3ZhciBuPXVuLGk9YW47bj0oaSZ+KDE8PDMyLXp0KGkpLTEpKS50b1N0cmluZygzMikrbix0PSI6Iit0KyJSIituLG49UXMrKywwPG4mJih0Kz0iSCIrbi50b1N0cmluZygzMikpLHQrPSI6In1lbHNlIG49T20rKyx0PSI6Iit0KyJyIituLnRvU3RyaW5nKDMyKSsiOiI7cmV0dXJuIGUubWVtb2l6ZWRTdGF0ZT10fSx1bnN0YWJsZV9pc05ld1JlY29uY2lsZXI6ITF9LCRtPXtyZWFkQ29udGV4dDpfdCx1c2VDYWxsYmFjazpGZCx1c2VDb250ZXh0Ol90LHVzZUVmZmVjdDpvYSx1c2VJbXBlcmF0aXZlSGFuZGxlOlRkLHVzZUluc2VydGlvbkVmZmVjdDpSZCx1c2VMYXlvdXRFZmZlY3Q6UGQsdXNlTWVtbzpMZCx1c2VSZWR1Y2VyOmlhLHVzZVJlZjpFZCx1c2VTdGF0ZTpmdW5jdGlvbigpe3JldHVybiBpYShxcyl9LHVzZURlYnVnVmFsdWU6YWEsdXNlRGVmZXJyZWRWYWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1UdCgpO3JldHVybiBEZCh0LHFlLm1lbW9pemVkU3RhdGUsZSl9LHVzZVRyYW5zaXRpb246ZnVuY3Rpb24oKXt2YXIgZT1pYShxcylbMF0sdD1UdCgpLm1lbW9pemVkU3RhdGU7cmV0dXJuW2UsdF19LHVzZU11dGFibGVTb3VyY2U6dmQsdXNlU3luY0V4dGVybmFsU3RvcmU6eWQsdXNlSWQ6T2QsdW5zdGFibGVfaXNOZXdSZWNvbmNpbGVyOiExfSxVbT17cmVhZENvbnRleHQ6X3QsdXNlQ2FsbGJhY2s6RmQsdXNlQ29udGV4dDpfdCx1c2VFZmZlY3Q6b2EsdXNlSW1wZXJhdGl2ZUhhbmRsZTpUZCx1c2VJbnNlcnRpb25FZmZlY3Q6UmQsdXNlTGF5b3V0RWZmZWN0OlBkLHVzZU1lbW86TGQsdXNlUmVkdWNlcjpsYSx1c2VSZWY6RWQsdXNlU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gbGEocXMpfSx1c2VEZWJ1Z1ZhbHVlOmFhLHVzZURlZmVycmVkVmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9VHQoKTtyZXR1cm4gcWU9PT1udWxsP3QubWVtb2l6ZWRTdGF0ZT1lOkRkKHQscWUubWVtb2l6ZWRTdGF0ZSxlKX0sdXNlVHJhbnNpdGlvbjpmdW5jdGlvbigpe3ZhciBlPWxhKHFzKVswXSx0PVR0KCkubWVtb2l6ZWRTdGF0ZTtyZXR1cm5bZSx0XX0sdXNlTXV0YWJsZVNvdXJjZTp2ZCx1c2VTeW5jRXh0ZXJuYWxTdG9yZTp5ZCx1c2VJZDpPZCx1bnN0YWJsZV9pc05ld1JlY29uY2lsZXI6ITF9O2Z1bmN0aW9uIFV0KGUsdCl7aWYoZSYmZS5kZWZhdWx0UHJvcHMpe3Q9cSh7fSx0KSxlPWUuZGVmYXVsdFByb3BzO2Zvcih2YXIgbiBpbiBlKXRbbl09PT12b2lkIDAmJih0W25dPWVbbl0pO3JldHVybiB0fXJldHVybiB0fWZ1bmN0aW9uIHVhKGUsdCxuLGkpe3Q9ZS5tZW1vaXplZFN0YXRlLG49bihpLHQpLG49bj09bnVsbD90OnEoe30sdCxuKSxlLm1lbW9pemVkU3RhdGU9bixlLmxhbmVzPT09MCYmKGUudXBkYXRlUXVldWUuYmFzZVN0YXRlPW4pfXZhciBhbD17aXNNb3VudGVkOmZ1bmN0aW9uKGUpe3JldHVybihlPWUuX3JlYWN0SW50ZXJuYWxzKT9HbihlKT09PWU6ITF9LGVucXVldWVTZXRTdGF0ZTpmdW5jdGlvbihlLHQsbil7ZT1lLl9yZWFjdEludGVybmFsczt2YXIgaT1vdCgpLG89SW4oZSksYT1kbihpLG8pO2EucGF5bG9hZD10LG4hPW51bGwmJihhLmNhbGxiYWNrPW4pLHQ9Rm4oZSxhLG8pLHQhPT1udWxsJiYoSHQodCxlLG8saSksZWwodCxlLG8pKX0sZW5xdWV1ZVJlcGxhY2VTdGF0ZTpmdW5jdGlvbihlLHQsbil7ZT1lLl9yZWFjdEludGVybmFsczt2YXIgaT1vdCgpLG89SW4oZSksYT1kbihpLG8pO2EudGFnPTEsYS5wYXlsb2FkPXQsbiE9bnVsbCYmKGEuY2FsbGJhY2s9biksdD1GbihlLGEsbyksdCE9PW51bGwmJihIdCh0LGUsbyxpKSxlbCh0LGUsbykpfSxlbnF1ZXVlRm9yY2VVcGRhdGU6ZnVuY3Rpb24oZSx0KXtlPWUuX3JlYWN0SW50ZXJuYWxzO3ZhciBuPW90KCksaT1JbihlKSxvPWRuKG4saSk7by50YWc9Mix0IT1udWxsJiYoby5jYWxsYmFjaz10KSx0PUZuKGUsbyxpKSx0IT09bnVsbCYmKEh0KHQsZSxpLG4pLGVsKHQsZSxpKSl9fTtmdW5jdGlvbiBBZChlLHQsbixpLG8sYSxmKXtyZXR1cm4gZT1lLnN0YXRlTm9kZSx0eXBlb2YgZS5zaG91bGRDb21wb25lbnRVcGRhdGU9PSJmdW5jdGlvbiI/ZS5zaG91bGRDb21wb25lbnRVcGRhdGUoaSxhLGYpOnQucHJvdG90eXBlJiZ0LnByb3RvdHlwZS5pc1B1cmVSZWFjdENvbXBvbmVudD8hTHMobixpKXx8IUxzKG8sYSk6ITB9ZnVuY3Rpb24gJGQoZSx0LG4pe3ZhciBpPSExLG89UG4sYT10LmNvbnRleHRUeXBlO3JldHVybiB0eXBlb2YgYT09Im9iamVjdCImJmEhPT1udWxsP2E9X3QoYSk6KG89aHQodCk/WW46ZXQuY3VycmVudCxpPXQuY29udGV4dFR5cGVzLGE9KGk9aSE9bnVsbCk/T3IoZSxvKTpQbiksdD1uZXcgdChuLGEpLGUubWVtb2l6ZWRTdGF0ZT10LnN0YXRlIT09bnVsbCYmdC5zdGF0ZSE9PXZvaWQgMD90LnN0YXRlOm51bGwsdC51cGRhdGVyPWFsLGUuc3RhdGVOb2RlPXQsdC5fcmVhY3RJbnRlcm5hbHM9ZSxpJiYoZT1lLnN0YXRlTm9kZSxlLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkVW5tYXNrZWRDaGlsZENvbnRleHQ9byxlLl9fcmVhY3RJbnRlcm5hbE1lbW9pemVkTWFza2VkQ2hpbGRDb250ZXh0PWEpLHR9ZnVuY3Rpb24gVWQoZSx0LG4saSl7ZT10LnN0YXRlLHR5cGVvZiB0LmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHM9PSJmdW5jdGlvbiImJnQuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuLGkpLHR5cGVvZiB0LlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzPT0iZnVuY3Rpb24iJiZ0LlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG4saSksdC5zdGF0ZSE9PWUmJmFsLmVucXVldWVSZXBsYWNlU3RhdGUodCx0LnN0YXRlLG51bGwpfWZ1bmN0aW9uIGNhKGUsdCxuLGkpe3ZhciBvPWUuc3RhdGVOb2RlO28ucHJvcHM9bixvLnN0YXRlPWUubWVtb2l6ZWRTdGF0ZSxvLnJlZnM9e30sSm8oZSk7dmFyIGE9dC5jb250ZXh0VHlwZTt0eXBlb2YgYT09Im9iamVjdCImJmEhPT1udWxsP28uY29udGV4dD1fdChhKTooYT1odCh0KT9ZbjpldC5jdXJyZW50LG8uY29udGV4dD1PcihlLGEpKSxvLnN0YXRlPWUubWVtb2l6ZWRTdGF0ZSxhPXQuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzLHR5cGVvZiBhPT0iZnVuY3Rpb24iJiYodWEoZSx0LGEsbiksby5zdGF0ZT1lLm1lbW9pemVkU3RhdGUpLHR5cGVvZiB0LmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcz09ImZ1bmN0aW9uInx8dHlwZW9mIG8uZ2V0U25hcHNob3RCZWZvcmVVcGRhdGU9PSJmdW5jdGlvbiJ8fHR5cGVvZiBvLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQhPSJmdW5jdGlvbiImJnR5cGVvZiBvLmNvbXBvbmVudFdpbGxNb3VudCE9ImZ1bmN0aW9uInx8KHQ9by5zdGF0ZSx0eXBlb2Ygby5jb21wb25lbnRXaWxsTW91bnQ9PSJmdW5jdGlvbiImJm8uY29tcG9uZW50V2lsbE1vdW50KCksdHlwZW9mIG8uVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudD09ImZ1bmN0aW9uIiYmby5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50KCksdCE9PW8uc3RhdGUmJmFsLmVucXVldWVSZXBsYWNlU3RhdGUobyxvLnN0YXRlLG51bGwpLHRsKGUsbixvLGkpLG8uc3RhdGU9ZS5tZW1vaXplZFN0YXRlKSx0eXBlb2Ygby5jb21wb25lbnREaWRNb3VudD09ImZ1bmN0aW9uIiYmKGUuZmxhZ3N8PTQxOTQzMDgpfWZ1bmN0aW9uIEJyKGUsdCl7dHJ5e3ZhciBuPSIiLGk9dDtkbyBuKz15ZShpKSxpPWkucmV0dXJuO3doaWxlKGkpO3ZhciBvPW59Y2F0Y2goYSl7bz1gCkVycm9yIGdlbmVyYXRpbmcgc3RhY2s6IGArYS5tZXNzYWdlK2AKYCthLnN0YWNrfXJldHVybnt2YWx1ZTplLHNvdXJjZTp0LHN0YWNrOm8sZGlnZXN0Om51bGx9fWZ1bmN0aW9uIGRhKGUsdCxuKXtyZXR1cm57dmFsdWU6ZSxzb3VyY2U6bnVsbCxzdGFjazpuPz9udWxsLGRpZ2VzdDp0Pz9udWxsfX1mdW5jdGlvbiBmYShlLHQpe3RyeXtjb25zb2xlLmVycm9yKHQudmFsdWUpfWNhdGNoKG4pe3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0aHJvdyBufSl9fXZhciBibT10eXBlb2YgV2Vha01hcD09ImZ1bmN0aW9uIj9XZWFrTWFwOk1hcDtmdW5jdGlvbiBiZChlLHQsbil7bj1kbigtMSxuKSxuLnRhZz0zLG4ucGF5bG9hZD17ZWxlbWVudDpudWxsfTt2YXIgaT10LnZhbHVlO3JldHVybiBuLmNhbGxiYWNrPWZ1bmN0aW9uKCl7bWx8fChtbD0hMCxSYT1pKSxmYShlLHQpfSxufWZ1bmN0aW9uIEJkKGUsdCxuKXtuPWRuKC0xLG4pLG4udGFnPTM7dmFyIGk9ZS50eXBlLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcjtpZih0eXBlb2YgaT09ImZ1bmN0aW9uIil7dmFyIG89dC52YWx1ZTtuLnBheWxvYWQ9ZnVuY3Rpb24oKXtyZXR1cm4gaShvKX0sbi5jYWxsYmFjaz1mdW5jdGlvbigpe2ZhKGUsdCl9fXZhciBhPWUuc3RhdGVOb2RlO3JldHVybiBhIT09bnVsbCYmdHlwZW9mIGEuY29tcG9uZW50RGlkQ2F0Y2g9PSJmdW5jdGlvbiImJihuLmNhbGxiYWNrPWZ1bmN0aW9uKCl7ZmEoZSx0KSx0eXBlb2YgaSE9ImZ1bmN0aW9uIiYmKERuPT09bnVsbD9Ebj1uZXcgU2V0KFt0aGlzXSk6RG4uYWRkKHRoaXMpKTt2YXIgZj10LnN0YWNrO3RoaXMuY29tcG9uZW50RGlkQ2F0Y2godC52YWx1ZSx7Y29tcG9uZW50U3RhY2s6ZiE9PW51bGw/ZjoiIn0pfSksbn1mdW5jdGlvbiBIZChlLHQsbil7dmFyIGk9ZS5waW5nQ2FjaGU7aWYoaT09PW51bGwpe2k9ZS5waW5nQ2FjaGU9bmV3IGJtO3ZhciBvPW5ldyBTZXQ7aS5zZXQodCxvKX1lbHNlIG89aS5nZXQodCksbz09PXZvaWQgMCYmKG89bmV3IFNldCxpLnNldCh0LG8pKTtvLmhhcyhuKXx8KG8uYWRkKG4pLGU9dGcuYmluZChudWxsLGUsdCxuKSx0LnRoZW4oZSxlKSl9ZnVuY3Rpb24gUWQoZSl7ZG97dmFyIHQ7aWYoKHQ9ZS50YWc9PT0xMykmJih0PWUubWVtb2l6ZWRTdGF0ZSx0PXQhPT1udWxsP3QuZGVoeWRyYXRlZCE9PW51bGw6ITApLHQpcmV0dXJuIGU7ZT1lLnJldHVybn13aGlsZShlIT09bnVsbCk7cmV0dXJuIG51bGx9ZnVuY3Rpb24gcWQoZSx0LG4saSxvKXtyZXR1cm4oZS5tb2RlJjEpPT09MD8oZT09PXQ/ZS5mbGFnc3w9NjU1MzY6KGUuZmxhZ3N8PTEyOCxuLmZsYWdzfD0xMzEwNzIsbi5mbGFncyY9LTUyODA1LG4udGFnPT09MSYmKG4uYWx0ZXJuYXRlPT09bnVsbD9uLnRhZz0xNzoodD1kbigtMSwxKSx0LnRhZz0yLEZuKG4sdCwxKSkpLG4ubGFuZXN8PTEpLGUpOihlLmZsYWdzfD02NTUzNixlLmxhbmVzPW8sZSl9dmFyIEJtPVYuUmVhY3RDdXJyZW50T3duZXIscHQ9ITE7ZnVuY3Rpb24gbHQoZSx0LG4saSl7dC5jaGlsZD1lPT09bnVsbD9kZCh0LG51bGwsbixpKTpBcih0LGUuY2hpbGQsbixpKX1mdW5jdGlvbiBXZChlLHQsbixpLG8pe249bi5yZW5kZXI7dmFyIGE9dC5yZWY7cmV0dXJuIFVyKHQsbyksaT1yYShlLHQsbixpLGEsbyksbj1zYSgpLGUhPT1udWxsJiYhcHQ/KHQudXBkYXRlUXVldWU9ZS51cGRhdGVRdWV1ZSx0LmZsYWdzJj0tMjA1MyxlLmxhbmVzJj1+byxmbihlLHQsbykpOihEZSYmbiYmVW8odCksdC5mbGFnc3w9MSxsdChlLHQsaSxvKSx0LmNoaWxkKX1mdW5jdGlvbiBWZChlLHQsbixpLG8pe2lmKGU9PT1udWxsKXt2YXIgYT1uLnR5cGU7cmV0dXJuIHR5cGVvZiBhPT0iZnVuY3Rpb24iJiYhT2EoYSkmJmEuZGVmYXVsdFByb3BzPT09dm9pZCAwJiZuLmNvbXBhcmU9PT1udWxsJiZuLmRlZmF1bHRQcm9wcz09PXZvaWQgMD8odC50YWc9MTUsdC50eXBlPWEsS2QoZSx0LGEsaSxvKSk6KGU9U2wobi50eXBlLG51bGwsaSx0LHQubW9kZSxvKSxlLnJlZj10LnJlZixlLnJldHVybj10LHQuY2hpbGQ9ZSl9aWYoYT1lLmNoaWxkLChlLmxhbmVzJm8pPT09MCl7dmFyIGY9YS5tZW1vaXplZFByb3BzO2lmKG49bi5jb21wYXJlLG49biE9PW51bGw/bjpMcyxuKGYsaSkmJmUucmVmPT09dC5yZWYpcmV0dXJuIGZuKGUsdCxvKX1yZXR1cm4gdC5mbGFnc3w9MSxlPXpuKGEsaSksZS5yZWY9dC5yZWYsZS5yZXR1cm49dCx0LmNoaWxkPWV9ZnVuY3Rpb24gS2QoZSx0LG4saSxvKXtpZihlIT09bnVsbCl7dmFyIGE9ZS5tZW1vaXplZFByb3BzO2lmKExzKGEsaSkmJmUucmVmPT09dC5yZWYpaWYocHQ9ITEsdC5wZW5kaW5nUHJvcHM9aT1hLChlLmxhbmVzJm8pIT09MCkoZS5mbGFncyYxMzEwNzIpIT09MCYmKHB0PSEwKTtlbHNlIHJldHVybiB0LmxhbmVzPWUubGFuZXMsZm4oZSx0LG8pfXJldHVybiBoYShlLHQsbixpLG8pfWZ1bmN0aW9uIEdkKGUsdCxuKXt2YXIgaT10LnBlbmRpbmdQcm9wcyxvPWkuY2hpbGRyZW4sYT1lIT09bnVsbD9lLm1lbW9pemVkU3RhdGU6bnVsbDtpZihpLm1vZGU9PT0iaGlkZGVuIilpZigodC5tb2RlJjEpPT09MCl0Lm1lbW9pemVkU3RhdGU9e2Jhc2VMYW5lczowLGNhY2hlUG9vbDpudWxsLHRyYW5zaXRpb25zOm51bGx9LFBlKFFyLGt0KSxrdHw9bjtlbHNle2lmKChuJjEwNzM3NDE4MjQpPT09MClyZXR1cm4gZT1hIT09bnVsbD9hLmJhc2VMYW5lc3xuOm4sdC5sYW5lcz10LmNoaWxkTGFuZXM9MTA3Mzc0MTgyNCx0Lm1lbW9pemVkU3RhdGU9e2Jhc2VMYW5lczplLGNhY2hlUG9vbDpudWxsLHRyYW5zaXRpb25zOm51bGx9LHQudXBkYXRlUXVldWU9bnVsbCxQZShRcixrdCksa3R8PWUsbnVsbDt0Lm1lbW9pemVkU3RhdGU9e2Jhc2VMYW5lczowLGNhY2hlUG9vbDpudWxsLHRyYW5zaXRpb25zOm51bGx9LGk9YSE9PW51bGw/YS5iYXNlTGFuZXM6bixQZShRcixrdCksa3R8PWl9ZWxzZSBhIT09bnVsbD8oaT1hLmJhc2VMYW5lc3xuLHQubWVtb2l6ZWRTdGF0ZT1udWxsKTppPW4sUGUoUXIsa3QpLGt0fD1pO3JldHVybiBsdChlLHQsbyxuKSx0LmNoaWxkfWZ1bmN0aW9uIEpkKGUsdCl7dmFyIG49dC5yZWY7KGU9PT1udWxsJiZuIT09bnVsbHx8ZSE9PW51bGwmJmUucmVmIT09bikmJih0LmZsYWdzfD01MTIsdC5mbGFnc3w9MjA5NzE1Mil9ZnVuY3Rpb24gaGEoZSx0LG4saSxvKXt2YXIgYT1odChuKT9ZbjpldC5jdXJyZW50O3JldHVybiBhPU9yKHQsYSksVXIodCxvKSxuPXJhKGUsdCxuLGksYSxvKSxpPXNhKCksZSE9PW51bGwmJiFwdD8odC51cGRhdGVRdWV1ZT1lLnVwZGF0ZVF1ZXVlLHQuZmxhZ3MmPS0yMDUzLGUubGFuZXMmPX5vLGZuKGUsdCxvKSk6KERlJiZpJiZVbyh0KSx0LmZsYWdzfD0xLGx0KGUsdCxuLG8pLHQuY2hpbGQpfWZ1bmN0aW9uIFlkKGUsdCxuLGksbyl7aWYoaHQobikpe3ZhciBhPSEwO1dpKHQpfWVsc2UgYT0hMTtpZihVcih0LG8pLHQuc3RhdGVOb2RlPT09bnVsbCljbChlLHQpLCRkKHQsbixpKSxjYSh0LG4saSxvKSxpPSEwO2Vsc2UgaWYoZT09PW51bGwpe3ZhciBmPXQuc3RhdGVOb2RlLGc9dC5tZW1vaXplZFByb3BzO2YucHJvcHM9Zzt2YXIgdz1mLmNvbnRleHQsRj1uLmNvbnRleHRUeXBlO3R5cGVvZiBGPT0ib2JqZWN0IiYmRiE9PW51bGw/Rj1fdChGKTooRj1odChuKT9ZbjpldC5jdXJyZW50LEY9T3IodCxGKSk7dmFyIHo9bi5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMsJD10eXBlb2Ygej09ImZ1bmN0aW9uInx8dHlwZW9mIGYuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGU9PSJmdW5jdGlvbiI7JHx8dHlwZW9mIGYuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMhPSJmdW5jdGlvbiImJnR5cGVvZiBmLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMhPSJmdW5jdGlvbiJ8fChnIT09aXx8dyE9PUYpJiZVZCh0LGYsaSxGKSxUbj0hMTt2YXIgTT10Lm1lbW9pemVkU3RhdGU7Zi5zdGF0ZT1NLHRsKHQsaSxmLG8pLHc9dC5tZW1vaXplZFN0YXRlLGchPT1pfHxNIT09d3x8ZnQuY3VycmVudHx8VG4/KHR5cGVvZiB6PT0iZnVuY3Rpb24iJiYodWEodCxuLHosaSksdz10Lm1lbW9pemVkU3RhdGUpLChnPVRufHxBZCh0LG4sZyxpLE0sdyxGKSk/KCR8fHR5cGVvZiBmLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQhPSJmdW5jdGlvbiImJnR5cGVvZiBmLmNvbXBvbmVudFdpbGxNb3VudCE9ImZ1bmN0aW9uInx8KHR5cGVvZiBmLmNvbXBvbmVudFdpbGxNb3VudD09ImZ1bmN0aW9uIiYmZi5jb21wb25lbnRXaWxsTW91bnQoKSx0eXBlb2YgZi5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50PT0iZnVuY3Rpb24iJiZmLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQoKSksdHlwZW9mIGYuY29tcG9uZW50RGlkTW91bnQ9PSJmdW5jdGlvbiImJih0LmZsYWdzfD00MTk0MzA4KSk6KHR5cGVvZiBmLmNvbXBvbmVudERpZE1vdW50PT0iZnVuY3Rpb24iJiYodC5mbGFnc3w9NDE5NDMwOCksdC5tZW1vaXplZFByb3BzPWksdC5tZW1vaXplZFN0YXRlPXcpLGYucHJvcHM9aSxmLnN0YXRlPXcsZi5jb250ZXh0PUYsaT1nKToodHlwZW9mIGYuY29tcG9uZW50RGlkTW91bnQ9PSJmdW5jdGlvbiImJih0LmZsYWdzfD00MTk0MzA4KSxpPSExKX1lbHNle2Y9dC5zdGF0ZU5vZGUsaGQoZSx0KSxnPXQubWVtb2l6ZWRQcm9wcyxGPXQudHlwZT09PXQuZWxlbWVudFR5cGU/ZzpVdCh0LnR5cGUsZyksZi5wcm9wcz1GLCQ9dC5wZW5kaW5nUHJvcHMsTT1mLmNvbnRleHQsdz1uLmNvbnRleHRUeXBlLHR5cGVvZiB3PT0ib2JqZWN0IiYmdyE9PW51bGw/dz1fdCh3KToodz1odChuKT9ZbjpldC5jdXJyZW50LHc9T3IodCx3KSk7dmFyIEs9bi5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHM7KHo9dHlwZW9mIEs9PSJmdW5jdGlvbiJ8fHR5cGVvZiBmLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlPT0iZnVuY3Rpb24iKXx8dHlwZW9mIGYuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMhPSJmdW5jdGlvbiImJnR5cGVvZiBmLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMhPSJmdW5jdGlvbiJ8fChnIT09JHx8TSE9PXcpJiZVZCh0LGYsaSx3KSxUbj0hMSxNPXQubWVtb2l6ZWRTdGF0ZSxmLnN0YXRlPU0sdGwodCxpLGYsbyk7dmFyIEo9dC5tZW1vaXplZFN0YXRlO2chPT0kfHxNIT09Snx8ZnQuY3VycmVudHx8VG4/KHR5cGVvZiBLPT0iZnVuY3Rpb24iJiYodWEodCxuLEssaSksSj10Lm1lbW9pemVkU3RhdGUpLChGPVRufHxBZCh0LG4sRixpLE0sSix3KXx8ITEpPyh6fHx0eXBlb2YgZi5VTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZSE9ImZ1bmN0aW9uIiYmdHlwZW9mIGYuY29tcG9uZW50V2lsbFVwZGF0ZSE9ImZ1bmN0aW9uInx8KHR5cGVvZiBmLmNvbXBvbmVudFdpbGxVcGRhdGU9PSJmdW5jdGlvbiImJmYuY29tcG9uZW50V2lsbFVwZGF0ZShpLEosdyksdHlwZW9mIGYuVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGU9PSJmdW5jdGlvbiImJmYuVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGUoaSxKLHcpKSx0eXBlb2YgZi5jb21wb25lbnREaWRVcGRhdGU9PSJmdW5jdGlvbiImJih0LmZsYWdzfD00KSx0eXBlb2YgZi5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZT09ImZ1bmN0aW9uIiYmKHQuZmxhZ3N8PTEwMjQpKToodHlwZW9mIGYuY29tcG9uZW50RGlkVXBkYXRlIT0iZnVuY3Rpb24ifHxnPT09ZS5tZW1vaXplZFByb3BzJiZNPT09ZS5tZW1vaXplZFN0YXRlfHwodC5mbGFnc3w9NCksdHlwZW9mIGYuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUhPSJmdW5jdGlvbiJ8fGc9PT1lLm1lbW9pemVkUHJvcHMmJk09PT1lLm1lbW9pemVkU3RhdGV8fCh0LmZsYWdzfD0xMDI0KSx0Lm1lbW9pemVkUHJvcHM9aSx0Lm1lbW9pemVkU3RhdGU9SiksZi5wcm9wcz1pLGYuc3RhdGU9SixmLmNvbnRleHQ9dyxpPUYpOih0eXBlb2YgZi5jb21wb25lbnREaWRVcGRhdGUhPSJmdW5jdGlvbiJ8fGc9PT1lLm1lbW9pemVkUHJvcHMmJk09PT1lLm1lbW9pemVkU3RhdGV8fCh0LmZsYWdzfD00KSx0eXBlb2YgZi5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSE9ImZ1bmN0aW9uInx8Zz09PWUubWVtb2l6ZWRQcm9wcyYmTT09PWUubWVtb2l6ZWRTdGF0ZXx8KHQuZmxhZ3N8PTEwMjQpLGk9ITEpfXJldHVybiBwYShlLHQsbixpLGEsbyl9ZnVuY3Rpb24gcGEoZSx0LG4saSxvLGEpe0pkKGUsdCk7dmFyIGY9KHQuZmxhZ3MmMTI4KSE9PTA7aWYoIWkmJiFmKXJldHVybiBvJiZuZCh0LG4sITEpLGZuKGUsdCxhKTtpPXQuc3RhdGVOb2RlLEJtLmN1cnJlbnQ9dDt2YXIgZz1mJiZ0eXBlb2Ygbi5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3IhPSJmdW5jdGlvbiI/bnVsbDppLnJlbmRlcigpO3JldHVybiB0LmZsYWdzfD0xLGUhPT1udWxsJiZmPyh0LmNoaWxkPUFyKHQsZS5jaGlsZCxudWxsLGEpLHQuY2hpbGQ9QXIodCxudWxsLGcsYSkpOmx0KGUsdCxnLGEpLHQubWVtb2l6ZWRTdGF0ZT1pLnN0YXRlLG8mJm5kKHQsbiwhMCksdC5jaGlsZH1mdW5jdGlvbiBYZChlKXt2YXIgdD1lLnN0YXRlTm9kZTt0LnBlbmRpbmdDb250ZXh0P2VkKGUsdC5wZW5kaW5nQ29udGV4dCx0LnBlbmRpbmdDb250ZXh0IT09dC5jb250ZXh0KTp0LmNvbnRleHQmJmVkKGUsdC5jb250ZXh0LCExKSxZbyhlLHQuY29udGFpbmVySW5mbyl9ZnVuY3Rpb24gWmQoZSx0LG4saSxvKXtyZXR1cm4genIoKSxRbyhvKSx0LmZsYWdzfD0yNTYsbHQoZSx0LG4saSksdC5jaGlsZH12YXIgbWE9e2RlaHlkcmF0ZWQ6bnVsbCx0cmVlQ29udGV4dDpudWxsLHJldHJ5TGFuZTowfTtmdW5jdGlvbiBnYShlKXtyZXR1cm57YmFzZUxhbmVzOmUsY2FjaGVQb29sOm51bGwsdHJhbnNpdGlvbnM6bnVsbH19ZnVuY3Rpb24gZWYoZSx0LG4pe3ZhciBpPXQucGVuZGluZ1Byb3BzLG89TWUuY3VycmVudCxhPSExLGY9KHQuZmxhZ3MmMTI4KSE9PTAsZztpZigoZz1mKXx8KGc9ZSE9PW51bGwmJmUubWVtb2l6ZWRTdGF0ZT09PW51bGw/ITE6KG8mMikhPT0wKSxnPyhhPSEwLHQuZmxhZ3MmPS0xMjkpOihlPT09bnVsbHx8ZS5tZW1vaXplZFN0YXRlIT09bnVsbCkmJihvfD0xKSxQZShNZSxvJjEpLGU9PT1udWxsKXJldHVybiBIbyh0KSxlPXQubWVtb2l6ZWRTdGF0ZSxlIT09bnVsbCYmKGU9ZS5kZWh5ZHJhdGVkLGUhPT1udWxsKT8oKHQubW9kZSYxKT09PTA/dC5sYW5lcz0xOmUuZGF0YT09PSIkISI/dC5sYW5lcz04OnQubGFuZXM9MTA3Mzc0MTgyNCxudWxsKTooZj1pLmNoaWxkcmVuLGU9aS5mYWxsYmFjayxhPyhpPXQubW9kZSxhPXQuY2hpbGQsZj17bW9kZToiaGlkZGVuIixjaGlsZHJlbjpmfSwoaSYxKT09PTAmJmEhPT1udWxsPyhhLmNoaWxkTGFuZXM9MCxhLnBlbmRpbmdQcm9wcz1mKTphPWtsKGYsaSwwLG51bGwpLGU9b3IoZSxpLG4sbnVsbCksYS5yZXR1cm49dCxlLnJldHVybj10LGEuc2libGluZz1lLHQuY2hpbGQ9YSx0LmNoaWxkLm1lbW9pemVkU3RhdGU9Z2EobiksdC5tZW1vaXplZFN0YXRlPW1hLGUpOnZhKHQsZikpO2lmKG89ZS5tZW1vaXplZFN0YXRlLG8hPT1udWxsJiYoZz1vLmRlaHlkcmF0ZWQsZyE9PW51bGwpKXJldHVybiBIbShlLHQsZixpLGcsbyxuKTtpZihhKXthPWkuZmFsbGJhY2ssZj10Lm1vZGUsbz1lLmNoaWxkLGc9by5zaWJsaW5nO3ZhciB3PXttb2RlOiJoaWRkZW4iLGNoaWxkcmVuOmkuY2hpbGRyZW59O3JldHVybihmJjEpPT09MCYmdC5jaGlsZCE9PW8/KGk9dC5jaGlsZCxpLmNoaWxkTGFuZXM9MCxpLnBlbmRpbmdQcm9wcz13LHQuZGVsZXRpb25zPW51bGwpOihpPXpuKG8sdyksaS5zdWJ0cmVlRmxhZ3M9by5zdWJ0cmVlRmxhZ3MmMTQ2ODAwNjQpLGchPT1udWxsP2E9em4oZyxhKTooYT1vcihhLGYsbixudWxsKSxhLmZsYWdzfD0yKSxhLnJldHVybj10LGkucmV0dXJuPXQsaS5zaWJsaW5nPWEsdC5jaGlsZD1pLGk9YSxhPXQuY2hpbGQsZj1lLmNoaWxkLm1lbW9pemVkU3RhdGUsZj1mPT09bnVsbD9nYShuKTp7YmFzZUxhbmVzOmYuYmFzZUxhbmVzfG4sY2FjaGVQb29sOm51bGwsdHJhbnNpdGlvbnM6Zi50cmFuc2l0aW9uc30sYS5tZW1vaXplZFN0YXRlPWYsYS5jaGlsZExhbmVzPWUuY2hpbGRMYW5lcyZ+bix0Lm1lbW9pemVkU3RhdGU9bWEsaX1yZXR1cm4gYT1lLmNoaWxkLGU9YS5zaWJsaW5nLGk9em4oYSx7bW9kZToidmlzaWJsZSIsY2hpbGRyZW46aS5jaGlsZHJlbn0pLCh0Lm1vZGUmMSk9PT0wJiYoaS5sYW5lcz1uKSxpLnJldHVybj10LGkuc2libGluZz1udWxsLGUhPT1udWxsJiYobj10LmRlbGV0aW9ucyxuPT09bnVsbD8odC5kZWxldGlvbnM9W2VdLHQuZmxhZ3N8PTE2KTpuLnB1c2goZSkpLHQuY2hpbGQ9aSx0Lm1lbW9pemVkU3RhdGU9bnVsbCxpfWZ1bmN0aW9uIHZhKGUsdCl7cmV0dXJuIHQ9a2woe21vZGU6InZpc2libGUiLGNoaWxkcmVuOnR9LGUubW9kZSwwLG51bGwpLHQucmV0dXJuPWUsZS5jaGlsZD10fWZ1bmN0aW9uIHVsKGUsdCxuLGkpe3JldHVybiBpIT09bnVsbCYmUW8oaSksQXIodCxlLmNoaWxkLG51bGwsbiksZT12YSh0LHQucGVuZGluZ1Byb3BzLmNoaWxkcmVuKSxlLmZsYWdzfD0yLHQubWVtb2l6ZWRTdGF0ZT1udWxsLGV9ZnVuY3Rpb24gSG0oZSx0LG4saSxvLGEsZil7aWYobilyZXR1cm4gdC5mbGFncyYyNTY/KHQuZmxhZ3MmPS0yNTcsaT1kYShFcnJvcihsKDQyMikpKSx1bChlLHQsZixpKSk6dC5tZW1vaXplZFN0YXRlIT09bnVsbD8odC5jaGlsZD1lLmNoaWxkLHQuZmxhZ3N8PTEyOCxudWxsKTooYT1pLmZhbGxiYWNrLG89dC5tb2RlLGk9a2woe21vZGU6InZpc2libGUiLGNoaWxkcmVuOmkuY2hpbGRyZW59LG8sMCxudWxsKSxhPW9yKGEsbyxmLG51bGwpLGEuZmxhZ3N8PTIsaS5yZXR1cm49dCxhLnJldHVybj10LGkuc2libGluZz1hLHQuY2hpbGQ9aSwodC5tb2RlJjEpIT09MCYmQXIodCxlLmNoaWxkLG51bGwsZiksdC5jaGlsZC5tZW1vaXplZFN0YXRlPWdhKGYpLHQubWVtb2l6ZWRTdGF0ZT1tYSxhKTtpZigodC5tb2RlJjEpPT09MClyZXR1cm4gdWwoZSx0LGYsbnVsbCk7aWYoby5kYXRhPT09IiQhIil7aWYoaT1vLm5leHRTaWJsaW5nJiZvLm5leHRTaWJsaW5nLmRhdGFzZXQsaSl2YXIgZz1pLmRnc3Q7cmV0dXJuIGk9ZyxhPUVycm9yKGwoNDE5KSksaT1kYShhLGksdm9pZCAwKSx1bChlLHQsZixpKX1pZihnPShmJmUuY2hpbGRMYW5lcykhPT0wLHB0fHxnKXtpZihpPUplLGkhPT1udWxsKXtzd2l0Y2goZiYtZil7Y2FzZSA0Om89MjticmVhaztjYXNlIDE2Om89ODticmVhaztjYXNlIDY0OmNhc2UgMTI4OmNhc2UgMjU2OmNhc2UgNTEyOmNhc2UgMTAyNDpjYXNlIDIwNDg6Y2FzZSA0MDk2OmNhc2UgODE5MjpjYXNlIDE2Mzg0OmNhc2UgMzI3Njg6Y2FzZSA2NTUzNjpjYXNlIDEzMTA3MjpjYXNlIDI2MjE0NDpjYXNlIDUyNDI4ODpjYXNlIDEwNDg1NzY6Y2FzZSAyMDk3MTUyOmNhc2UgNDE5NDMwNDpjYXNlIDgzODg2MDg6Y2FzZSAxNjc3NzIxNjpjYXNlIDMzNTU0NDMyOmNhc2UgNjcxMDg4NjQ6bz0zMjticmVhaztjYXNlIDUzNjg3MDkxMjpvPTI2ODQzNTQ1NjticmVhaztkZWZhdWx0Om89MH1vPShvJihpLnN1c3BlbmRlZExhbmVzfGYpKSE9PTA/MDpvLG8hPT0wJiZvIT09YS5yZXRyeUxhbmUmJihhLnJldHJ5TGFuZT1vLGNuKGUsbyksSHQoaSxlLG8sLTEpKX1yZXR1cm4gRGEoKSxpPWRhKEVycm9yKGwoNDIxKSkpLHVsKGUsdCxmLGkpfXJldHVybiBvLmRhdGE9PT0iJD8iPyh0LmZsYWdzfD0xMjgsdC5jaGlsZD1lLmNoaWxkLHQ9bmcuYmluZChudWxsLGUpLG8uX3JlYWN0UmV0cnk9dCxudWxsKTooZT1hLnRyZWVDb250ZXh0LFN0PU5uKG8ubmV4dFNpYmxpbmcpLHd0PXQsRGU9ITAsJHQ9bnVsbCxlIT09bnVsbCYmKFJ0W1B0KytdPWFuLFJ0W1B0KytdPXVuLFJ0W1B0KytdPVhuLGFuPWUuaWQsdW49ZS5vdmVyZmxvdyxYbj10KSx0PXZhKHQsaS5jaGlsZHJlbiksdC5mbGFnc3w9NDA5Nix0KX1mdW5jdGlvbiB0ZihlLHQsbil7ZS5sYW5lc3w9dDt2YXIgaT1lLmFsdGVybmF0ZTtpIT09bnVsbCYmKGkubGFuZXN8PXQpLEtvKGUucmV0dXJuLHQsbil9ZnVuY3Rpb24geWEoZSx0LG4saSxvKXt2YXIgYT1lLm1lbW9pemVkU3RhdGU7YT09PW51bGw/ZS5tZW1vaXplZFN0YXRlPXtpc0JhY2t3YXJkczp0LHJlbmRlcmluZzpudWxsLHJlbmRlcmluZ1N0YXJ0VGltZTowLGxhc3Q6aSx0YWlsOm4sdGFpbE1vZGU6b306KGEuaXNCYWNrd2FyZHM9dCxhLnJlbmRlcmluZz1udWxsLGEucmVuZGVyaW5nU3RhcnRUaW1lPTAsYS5sYXN0PWksYS50YWlsPW4sYS50YWlsTW9kZT1vKX1mdW5jdGlvbiBuZihlLHQsbil7dmFyIGk9dC5wZW5kaW5nUHJvcHMsbz1pLnJldmVhbE9yZGVyLGE9aS50YWlsO2lmKGx0KGUsdCxpLmNoaWxkcmVuLG4pLGk9TWUuY3VycmVudCwoaSYyKSE9PTApaT1pJjF8Mix0LmZsYWdzfD0xMjg7ZWxzZXtpZihlIT09bnVsbCYmKGUuZmxhZ3MmMTI4KSE9PTApZTpmb3IoZT10LmNoaWxkO2UhPT1udWxsOyl7aWYoZS50YWc9PT0xMyllLm1lbW9pemVkU3RhdGUhPT1udWxsJiZ0ZihlLG4sdCk7ZWxzZSBpZihlLnRhZz09PTE5KXRmKGUsbix0KTtlbHNlIGlmKGUuY2hpbGQhPT1udWxsKXtlLmNoaWxkLnJldHVybj1lLGU9ZS5jaGlsZDtjb250aW51ZX1pZihlPT09dClicmVhayBlO2Zvcig7ZS5zaWJsaW5nPT09bnVsbDspe2lmKGUucmV0dXJuPT09bnVsbHx8ZS5yZXR1cm49PT10KWJyZWFrIGU7ZT1lLnJldHVybn1lLnNpYmxpbmcucmV0dXJuPWUucmV0dXJuLGU9ZS5zaWJsaW5nfWkmPTF9aWYoUGUoTWUsaSksKHQubW9kZSYxKT09PTApdC5tZW1vaXplZFN0YXRlPW51bGw7ZWxzZSBzd2l0Y2gobyl7Y2FzZSJmb3J3YXJkcyI6Zm9yKG49dC5jaGlsZCxvPW51bGw7biE9PW51bGw7KWU9bi5hbHRlcm5hdGUsZSE9PW51bGwmJm5sKGUpPT09bnVsbCYmKG89biksbj1uLnNpYmxpbmc7bj1vLG49PT1udWxsPyhvPXQuY2hpbGQsdC5jaGlsZD1udWxsKToobz1uLnNpYmxpbmcsbi5zaWJsaW5nPW51bGwpLHlhKHQsITEsbyxuLGEpO2JyZWFrO2Nhc2UiYmFja3dhcmRzIjpmb3Iobj1udWxsLG89dC5jaGlsZCx0LmNoaWxkPW51bGw7byE9PW51bGw7KXtpZihlPW8uYWx0ZXJuYXRlLGUhPT1udWxsJiZubChlKT09PW51bGwpe3QuY2hpbGQ9bzticmVha31lPW8uc2libGluZyxvLnNpYmxpbmc9bixuPW8sbz1lfXlhKHQsITAsbixudWxsLGEpO2JyZWFrO2Nhc2UidG9nZXRoZXIiOnlhKHQsITEsbnVsbCxudWxsLHZvaWQgMCk7YnJlYWs7ZGVmYXVsdDp0Lm1lbW9pemVkU3RhdGU9bnVsbH1yZXR1cm4gdC5jaGlsZH1mdW5jdGlvbiBjbChlLHQpeyh0Lm1vZGUmMSk9PT0wJiZlIT09bnVsbCYmKGUuYWx0ZXJuYXRlPW51bGwsdC5hbHRlcm5hdGU9bnVsbCx0LmZsYWdzfD0yKX1mdW5jdGlvbiBmbihlLHQsbil7aWYoZSE9PW51bGwmJih0LmRlcGVuZGVuY2llcz1lLmRlcGVuZGVuY2llcykscnJ8PXQubGFuZXMsKG4mdC5jaGlsZExhbmVzKT09PTApcmV0dXJuIG51bGw7aWYoZSE9PW51bGwmJnQuY2hpbGQhPT1lLmNoaWxkKXRocm93IEVycm9yKGwoMTUzKSk7aWYodC5jaGlsZCE9PW51bGwpe2ZvcihlPXQuY2hpbGQsbj16bihlLGUucGVuZGluZ1Byb3BzKSx0LmNoaWxkPW4sbi5yZXR1cm49dDtlLnNpYmxpbmchPT1udWxsOyllPWUuc2libGluZyxuPW4uc2libGluZz16bihlLGUucGVuZGluZ1Byb3BzKSxuLnJldHVybj10O24uc2libGluZz1udWxsfXJldHVybiB0LmNoaWxkfWZ1bmN0aW9uIFFtKGUsdCxuKXtzd2l0Y2godC50YWcpe2Nhc2UgMzpYZCh0KSx6cigpO2JyZWFrO2Nhc2UgNTpnZCh0KTticmVhaztjYXNlIDE6aHQodC50eXBlKSYmV2kodCk7YnJlYWs7Y2FzZSA0OllvKHQsdC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyk7YnJlYWs7Y2FzZSAxMDp2YXIgaT10LnR5cGUuX2NvbnRleHQsbz10Lm1lbW9pemVkUHJvcHMudmFsdWU7UGUoWGksaS5fY3VycmVudFZhbHVlKSxpLl9jdXJyZW50VmFsdWU9bzticmVhaztjYXNlIDEzOmlmKGk9dC5tZW1vaXplZFN0YXRlLGkhPT1udWxsKXJldHVybiBpLmRlaHlkcmF0ZWQhPT1udWxsPyhQZShNZSxNZS5jdXJyZW50JjEpLHQuZmxhZ3N8PTEyOCxudWxsKToobiZ0LmNoaWxkLmNoaWxkTGFuZXMpIT09MD9lZihlLHQsbik6KFBlKE1lLE1lLmN1cnJlbnQmMSksZT1mbihlLHQsbiksZSE9PW51bGw/ZS5zaWJsaW5nOm51bGwpO1BlKE1lLE1lLmN1cnJlbnQmMSk7YnJlYWs7Y2FzZSAxOTppZihpPShuJnQuY2hpbGRMYW5lcykhPT0wLChlLmZsYWdzJjEyOCkhPT0wKXtpZihpKXJldHVybiBuZihlLHQsbik7dC5mbGFnc3w9MTI4fWlmKG89dC5tZW1vaXplZFN0YXRlLG8hPT1udWxsJiYoby5yZW5kZXJpbmc9bnVsbCxvLnRhaWw9bnVsbCxvLmxhc3RFZmZlY3Q9bnVsbCksUGUoTWUsTWUuY3VycmVudCksaSlicmVhaztyZXR1cm4gbnVsbDtjYXNlIDIyOmNhc2UgMjM6cmV0dXJuIHQubGFuZXM9MCxHZChlLHQsbil9cmV0dXJuIGZuKGUsdCxuKX12YXIgcmYseGEsc2YsbGY7cmY9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49dC5jaGlsZDtuIT09bnVsbDspe2lmKG4udGFnPT09NXx8bi50YWc9PT02KWUuYXBwZW5kQ2hpbGQobi5zdGF0ZU5vZGUpO2Vsc2UgaWYobi50YWchPT00JiZuLmNoaWxkIT09bnVsbCl7bi5jaGlsZC5yZXR1cm49bixuPW4uY2hpbGQ7Y29udGludWV9aWYobj09PXQpYnJlYWs7Zm9yKDtuLnNpYmxpbmc9PT1udWxsOyl7aWYobi5yZXR1cm49PT1udWxsfHxuLnJldHVybj09PXQpcmV0dXJuO249bi5yZXR1cm59bi5zaWJsaW5nLnJldHVybj1uLnJldHVybixuPW4uc2libGluZ319LHhhPWZ1bmN0aW9uKCl7fSxzZj1mdW5jdGlvbihlLHQsbixpKXt2YXIgbz1lLm1lbW9pemVkUHJvcHM7aWYobyE9PWkpe2U9dC5zdGF0ZU5vZGUsdHIoWHQuY3VycmVudCk7dmFyIGE9bnVsbDtzd2l0Y2gobil7Y2FzZSJpbnB1dCI6bz1WbChlLG8pLGk9VmwoZSxpKSxhPVtdO2JyZWFrO2Nhc2Uic2VsZWN0IjpvPXEoe30sbyx7dmFsdWU6dm9pZCAwfSksaT1xKHt9LGkse3ZhbHVlOnZvaWQgMH0pLGE9W107YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6bz1KbChlLG8pLGk9SmwoZSxpKSxhPVtdO2JyZWFrO2RlZmF1bHQ6dHlwZW9mIG8ub25DbGljayE9ImZ1bmN0aW9uIiYmdHlwZW9mIGkub25DbGljaz09ImZ1bmN0aW9uIiYmKGUub25jbGljaz1IaSl9WGwobixpKTt2YXIgZjtuPW51bGw7Zm9yKEYgaW4gbylpZighaS5oYXNPd25Qcm9wZXJ0eShGKSYmby5oYXNPd25Qcm9wZXJ0eShGKSYmb1tGXSE9bnVsbClpZihGPT09InN0eWxlIil7dmFyIGc9b1tGXTtmb3IoZiBpbiBnKWcuaGFzT3duUHJvcGVydHkoZikmJihufHwobj17fSksbltmXT0iIil9ZWxzZSBGIT09ImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiYmRiE9PSJjaGlsZHJlbiImJkYhPT0ic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nIiYmRiE9PSJzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmciJiZGIT09ImF1dG9Gb2N1cyImJihkLmhhc093blByb3BlcnR5KEYpP2F8fChhPVtdKTooYT1hfHxbXSkucHVzaChGLG51bGwpKTtmb3IoRiBpbiBpKXt2YXIgdz1pW0ZdO2lmKGc9byE9bnVsbD9vW0ZdOnZvaWQgMCxpLmhhc093blByb3BlcnR5KEYpJiZ3IT09ZyYmKHchPW51bGx8fGchPW51bGwpKWlmKEY9PT0ic3R5bGUiKWlmKGcpe2ZvcihmIGluIGcpIWcuaGFzT3duUHJvcGVydHkoZil8fHcmJncuaGFzT3duUHJvcGVydHkoZil8fChufHwobj17fSksbltmXT0iIik7Zm9yKGYgaW4gdyl3Lmhhc093blByb3BlcnR5KGYpJiZnW2ZdIT09d1tmXSYmKG58fChuPXt9KSxuW2ZdPXdbZl0pfWVsc2Ugbnx8KGF8fChhPVtdKSxhLnB1c2goRixuKSksbj13O2Vsc2UgRj09PSJkYW5nZXJvdXNseVNldElubmVySFRNTCI/KHc9dz93Ll9faHRtbDp2b2lkIDAsZz1nP2cuX19odG1sOnZvaWQgMCx3IT1udWxsJiZnIT09dyYmKGE9YXx8W10pLnB1c2goRix3KSk6Rj09PSJjaGlsZHJlbiI/dHlwZW9mIHchPSJzdHJpbmciJiZ0eXBlb2YgdyE9Im51bWJlciJ8fChhPWF8fFtdKS5wdXNoKEYsIiIrdyk6RiE9PSJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmciJiZGIT09InN1cHByZXNzSHlkcmF0aW9uV2FybmluZyImJihkLmhhc093blByb3BlcnR5KEYpPyh3IT1udWxsJiZGPT09Im9uU2Nyb2xsIiYmVGUoInNjcm9sbCIsZSksYXx8Zz09PXd8fChhPVtdKSk6KGE9YXx8W10pLnB1c2goRix3KSl9biYmKGE9YXx8W10pLnB1c2goInN0eWxlIixuKTt2YXIgRj1hOyh0LnVwZGF0ZVF1ZXVlPUYpJiYodC5mbGFnc3w9NCl9fSxsZj1mdW5jdGlvbihlLHQsbixpKXtuIT09aSYmKHQuZmxhZ3N8PTQpfTtmdW5jdGlvbiBWcyhlLHQpe2lmKCFEZSlzd2l0Y2goZS50YWlsTW9kZSl7Y2FzZSJoaWRkZW4iOnQ9ZS50YWlsO2Zvcih2YXIgbj1udWxsO3QhPT1udWxsOyl0LmFsdGVybmF0ZSE9PW51bGwmJihuPXQpLHQ9dC5zaWJsaW5nO249PT1udWxsP2UudGFpbD1udWxsOm4uc2libGluZz1udWxsO2JyZWFrO2Nhc2UiY29sbGFwc2VkIjpuPWUudGFpbDtmb3IodmFyIGk9bnVsbDtuIT09bnVsbDspbi5hbHRlcm5hdGUhPT1udWxsJiYoaT1uKSxuPW4uc2libGluZztpPT09bnVsbD90fHxlLnRhaWw9PT1udWxsP2UudGFpbD1udWxsOmUudGFpbC5zaWJsaW5nPW51bGw6aS5zaWJsaW5nPW51bGx9fWZ1bmN0aW9uIG50KGUpe3ZhciB0PWUuYWx0ZXJuYXRlIT09bnVsbCYmZS5hbHRlcm5hdGUuY2hpbGQ9PT1lLmNoaWxkLG49MCxpPTA7aWYodClmb3IodmFyIG89ZS5jaGlsZDtvIT09bnVsbDspbnw9by5sYW5lc3xvLmNoaWxkTGFuZXMsaXw9by5zdWJ0cmVlRmxhZ3MmMTQ2ODAwNjQsaXw9by5mbGFncyYxNDY4MDA2NCxvLnJldHVybj1lLG89by5zaWJsaW5nO2Vsc2UgZm9yKG89ZS5jaGlsZDtvIT09bnVsbDspbnw9by5sYW5lc3xvLmNoaWxkTGFuZXMsaXw9by5zdWJ0cmVlRmxhZ3MsaXw9by5mbGFncyxvLnJldHVybj1lLG89by5zaWJsaW5nO3JldHVybiBlLnN1YnRyZWVGbGFnc3w9aSxlLmNoaWxkTGFuZXM9bix0fWZ1bmN0aW9uIHFtKGUsdCxuKXt2YXIgaT10LnBlbmRpbmdQcm9wcztzd2l0Y2goYm8odCksdC50YWcpe2Nhc2UgMjpjYXNlIDE2OmNhc2UgMTU6Y2FzZSAwOmNhc2UgMTE6Y2FzZSA3OmNhc2UgODpjYXNlIDEyOmNhc2UgOTpjYXNlIDE0OnJldHVybiBudCh0KSxudWxsO2Nhc2UgMTpyZXR1cm4gaHQodC50eXBlKSYmcWkoKSxudCh0KSxudWxsO2Nhc2UgMzpyZXR1cm4gaT10LnN0YXRlTm9kZSxicigpLEZlKGZ0KSxGZShldCksZWEoKSxpLnBlbmRpbmdDb250ZXh0JiYoaS5jb250ZXh0PWkucGVuZGluZ0NvbnRleHQsaS5wZW5kaW5nQ29udGV4dD1udWxsKSwoZT09PW51bGx8fGUuY2hpbGQ9PT1udWxsKSYmKEppKHQpP3QuZmxhZ3N8PTQ6ZT09PW51bGx8fGUubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQmJih0LmZsYWdzJjI1Nik9PT0wfHwodC5mbGFnc3w9MTAyNCwkdCE9PW51bGwmJihUYSgkdCksJHQ9bnVsbCkpKSx4YShlLHQpLG50KHQpLG51bGw7Y2FzZSA1OlhvKHQpO3ZhciBvPXRyKEJzLmN1cnJlbnQpO2lmKG49dC50eXBlLGUhPT1udWxsJiZ0LnN0YXRlTm9kZSE9bnVsbClzZihlLHQsbixpLG8pLGUucmVmIT09dC5yZWYmJih0LmZsYWdzfD01MTIsdC5mbGFnc3w9MjA5NzE1Mik7ZWxzZXtpZighaSl7aWYodC5zdGF0ZU5vZGU9PT1udWxsKXRocm93IEVycm9yKGwoMTY2KSk7cmV0dXJuIG50KHQpLG51bGx9aWYoZT10cihYdC5jdXJyZW50KSxKaSh0KSl7aT10LnN0YXRlTm9kZSxuPXQudHlwZTt2YXIgYT10Lm1lbW9pemVkUHJvcHM7c3dpdGNoKGlbWXRdPXQsaVt6c109YSxlPSh0Lm1vZGUmMSkhPT0wLG4pe2Nhc2UiZGlhbG9nIjpUZSgiY2FuY2VsIixpKSxUZSgiY2xvc2UiLGkpO2JyZWFrO2Nhc2UiaWZyYW1lIjpjYXNlIm9iamVjdCI6Y2FzZSJlbWJlZCI6VGUoImxvYWQiLGkpO2JyZWFrO2Nhc2UidmlkZW8iOmNhc2UiYXVkaW8iOmZvcihvPTA7bzxPcy5sZW5ndGg7bysrKVRlKE9zW29dLGkpO2JyZWFrO2Nhc2Uic291cmNlIjpUZSgiZXJyb3IiLGkpO2JyZWFrO2Nhc2UiaW1nIjpjYXNlImltYWdlIjpjYXNlImxpbmsiOlRlKCJlcnJvciIsaSksVGUoImxvYWQiLGkpO2JyZWFrO2Nhc2UiZGV0YWlscyI6VGUoInRvZ2dsZSIsaSk7YnJlYWs7Y2FzZSJpbnB1dCI6JHUoaSxhKSxUZSgiaW52YWxpZCIsaSk7YnJlYWs7Y2FzZSJzZWxlY3QiOmkuX3dyYXBwZXJTdGF0ZT17d2FzTXVsdGlwbGU6ISFhLm11bHRpcGxlfSxUZSgiaW52YWxpZCIsaSk7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6QnUoaSxhKSxUZSgiaW52YWxpZCIsaSl9WGwobixhKSxvPW51bGw7Zm9yKHZhciBmIGluIGEpaWYoYS5oYXNPd25Qcm9wZXJ0eShmKSl7dmFyIGc9YVtmXTtmPT09ImNoaWxkcmVuIj90eXBlb2YgZz09InN0cmluZyI/aS50ZXh0Q29udGVudCE9PWcmJihhLnN1cHByZXNzSHlkcmF0aW9uV2FybmluZyE9PSEwJiZCaShpLnRleHRDb250ZW50LGcsZSksbz1bImNoaWxkcmVuIixnXSk6dHlwZW9mIGc9PSJudW1iZXIiJiZpLnRleHRDb250ZW50IT09IiIrZyYmKGEuc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nIT09ITAmJkJpKGkudGV4dENvbnRlbnQsZyxlKSxvPVsiY2hpbGRyZW4iLCIiK2ddKTpkLmhhc093blByb3BlcnR5KGYpJiZnIT1udWxsJiZmPT09Im9uU2Nyb2xsIiYmVGUoInNjcm9sbCIsaSl9c3dpdGNoKG4pe2Nhc2UiaW5wdXQiOnhpKGkpLGJ1KGksYSwhMCk7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6eGkoaSksUXUoaSk7YnJlYWs7Y2FzZSJzZWxlY3QiOmNhc2Uib3B0aW9uIjpicmVhaztkZWZhdWx0OnR5cGVvZiBhLm9uQ2xpY2s9PSJmdW5jdGlvbiImJihpLm9uY2xpY2s9SGkpfWk9byx0LnVwZGF0ZVF1ZXVlPWksaSE9PW51bGwmJih0LmZsYWdzfD00KX1lbHNle2Y9by5ub2RlVHlwZT09PTk/bzpvLm93bmVyRG9jdW1lbnQsZT09PSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiYmKGU9cXUobikpLGU9PT0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI/bj09PSJzY3JpcHQiPyhlPWYuY3JlYXRlRWxlbWVudCgiZGl2IiksZS5pbm5lckhUTUw9IjxzY3JpcHQ+PFwvc2NyaXB0PiIsZT1lLnJlbW92ZUNoaWxkKGUuZmlyc3RDaGlsZCkpOnR5cGVvZiBpLmlzPT0ic3RyaW5nIj9lPWYuY3JlYXRlRWxlbWVudChuLHtpczppLmlzfSk6KGU9Zi5jcmVhdGVFbGVtZW50KG4pLG49PT0ic2VsZWN0IiYmKGY9ZSxpLm11bHRpcGxlP2YubXVsdGlwbGU9ITA6aS5zaXplJiYoZi5zaXplPWkuc2l6ZSkpKTplPWYuY3JlYXRlRWxlbWVudE5TKGUsbiksZVtZdF09dCxlW3pzXT1pLHJmKGUsdCwhMSwhMSksdC5zdGF0ZU5vZGU9ZTtlOntzd2l0Y2goZj1abChuLGkpLG4pe2Nhc2UiZGlhbG9nIjpUZSgiY2FuY2VsIixlKSxUZSgiY2xvc2UiLGUpLG89aTticmVhaztjYXNlImlmcmFtZSI6Y2FzZSJvYmplY3QiOmNhc2UiZW1iZWQiOlRlKCJsb2FkIixlKSxvPWk7YnJlYWs7Y2FzZSJ2aWRlbyI6Y2FzZSJhdWRpbyI6Zm9yKG89MDtvPE9zLmxlbmd0aDtvKyspVGUoT3Nbb10sZSk7bz1pO2JyZWFrO2Nhc2Uic291cmNlIjpUZSgiZXJyb3IiLGUpLG89aTticmVhaztjYXNlImltZyI6Y2FzZSJpbWFnZSI6Y2FzZSJsaW5rIjpUZSgiZXJyb3IiLGUpLFRlKCJsb2FkIixlKSxvPWk7YnJlYWs7Y2FzZSJkZXRhaWxzIjpUZSgidG9nZ2xlIixlKSxvPWk7YnJlYWs7Y2FzZSJpbnB1dCI6JHUoZSxpKSxvPVZsKGUsaSksVGUoImludmFsaWQiLGUpO2JyZWFrO2Nhc2Uib3B0aW9uIjpvPWk7YnJlYWs7Y2FzZSJzZWxlY3QiOmUuX3dyYXBwZXJTdGF0ZT17d2FzTXVsdGlwbGU6ISFpLm11bHRpcGxlfSxvPXEoe30saSx7dmFsdWU6dm9pZCAwfSksVGUoImludmFsaWQiLGUpO2JyZWFrO2Nhc2UidGV4dGFyZWEiOkJ1KGUsaSksbz1KbChlLGkpLFRlKCJpbnZhbGlkIixlKTticmVhaztkZWZhdWx0Om89aX1YbChuLG8pLGc9bztmb3IoYSBpbiBnKWlmKGcuaGFzT3duUHJvcGVydHkoYSkpe3ZhciB3PWdbYV07YT09PSJzdHlsZSI/S3UoZSx3KTphPT09ImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIj8odz13P3cuX19odG1sOnZvaWQgMCx3IT1udWxsJiZXdShlLHcpKTphPT09ImNoaWxkcmVuIj90eXBlb2Ygdz09InN0cmluZyI/KG4hPT0idGV4dGFyZWEifHx3IT09IiIpJiZtcyhlLHcpOnR5cGVvZiB3PT0ibnVtYmVyIiYmbXMoZSwiIit3KTphIT09InN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZyImJmEhPT0ic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nIiYmYSE9PSJhdXRvRm9jdXMiJiYoZC5oYXNPd25Qcm9wZXJ0eShhKT93IT1udWxsJiZhPT09Im9uU2Nyb2xsIiYmVGUoInNjcm9sbCIsZSk6dyE9bnVsbCYmYihlLGEsdyxmKSl9c3dpdGNoKG4pe2Nhc2UiaW5wdXQiOnhpKGUpLGJ1KGUsaSwhMSk7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6eGkoZSksUXUoZSk7YnJlYWs7Y2FzZSJvcHRpb24iOmkudmFsdWUhPW51bGwmJmUuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsIiIrQ2UoaS52YWx1ZSkpO2JyZWFrO2Nhc2Uic2VsZWN0IjplLm11bHRpcGxlPSEhaS5tdWx0aXBsZSxhPWkudmFsdWUsYSE9bnVsbD9rcihlLCEhaS5tdWx0aXBsZSxhLCExKTppLmRlZmF1bHRWYWx1ZSE9bnVsbCYma3IoZSwhIWkubXVsdGlwbGUsaS5kZWZhdWx0VmFsdWUsITApO2JyZWFrO2RlZmF1bHQ6dHlwZW9mIG8ub25DbGljaz09ImZ1bmN0aW9uIiYmKGUub25jbGljaz1IaSl9c3dpdGNoKG4pe2Nhc2UiYnV0dG9uIjpjYXNlImlucHV0IjpjYXNlInNlbGVjdCI6Y2FzZSJ0ZXh0YXJlYSI6aT0hIWkuYXV0b0ZvY3VzO2JyZWFrIGU7Y2FzZSJpbWciOmk9ITA7YnJlYWsgZTtkZWZhdWx0Omk9ITF9fWkmJih0LmZsYWdzfD00KX10LnJlZiE9PW51bGwmJih0LmZsYWdzfD01MTIsdC5mbGFnc3w9MjA5NzE1Mil9cmV0dXJuIG50KHQpLG51bGw7Y2FzZSA2OmlmKGUmJnQuc3RhdGVOb2RlIT1udWxsKWxmKGUsdCxlLm1lbW9pemVkUHJvcHMsaSk7ZWxzZXtpZih0eXBlb2YgaSE9InN0cmluZyImJnQuc3RhdGVOb2RlPT09bnVsbCl0aHJvdyBFcnJvcihsKDE2NikpO2lmKG49dHIoQnMuY3VycmVudCksdHIoWHQuY3VycmVudCksSmkodCkpe2lmKGk9dC5zdGF0ZU5vZGUsbj10Lm1lbW9pemVkUHJvcHMsaVtZdF09dCwoYT1pLm5vZGVWYWx1ZSE9PW4pJiYoZT13dCxlIT09bnVsbCkpc3dpdGNoKGUudGFnKXtjYXNlIDM6QmkoaS5ub2RlVmFsdWUsbiwoZS5tb2RlJjEpIT09MCk7YnJlYWs7Y2FzZSA1OmUubWVtb2l6ZWRQcm9wcy5zdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmchPT0hMCYmQmkoaS5ub2RlVmFsdWUsbiwoZS5tb2RlJjEpIT09MCl9YSYmKHQuZmxhZ3N8PTQpfWVsc2UgaT0obi5ub2RlVHlwZT09PTk/bjpuLm93bmVyRG9jdW1lbnQpLmNyZWF0ZVRleHROb2RlKGkpLGlbWXRdPXQsdC5zdGF0ZU5vZGU9aX1yZXR1cm4gbnQodCksbnVsbDtjYXNlIDEzOmlmKEZlKE1lKSxpPXQubWVtb2l6ZWRTdGF0ZSxlPT09bnVsbHx8ZS5tZW1vaXplZFN0YXRlIT09bnVsbCYmZS5tZW1vaXplZFN0YXRlLmRlaHlkcmF0ZWQhPT1udWxsKXtpZihEZSYmU3QhPT1udWxsJiYodC5tb2RlJjEpIT09MCYmKHQuZmxhZ3MmMTI4KT09PTApYWQoKSx6cigpLHQuZmxhZ3N8PTk4NTYwLGE9ITE7ZWxzZSBpZihhPUppKHQpLGkhPT1udWxsJiZpLmRlaHlkcmF0ZWQhPT1udWxsKXtpZihlPT09bnVsbCl7aWYoIWEpdGhyb3cgRXJyb3IobCgzMTgpKTtpZihhPXQubWVtb2l6ZWRTdGF0ZSxhPWEhPT1udWxsP2EuZGVoeWRyYXRlZDpudWxsLCFhKXRocm93IEVycm9yKGwoMzE3KSk7YVtZdF09dH1lbHNlIHpyKCksKHQuZmxhZ3MmMTI4KT09PTAmJih0Lm1lbW9pemVkU3RhdGU9bnVsbCksdC5mbGFnc3w9NDtudCh0KSxhPSExfWVsc2UgJHQhPT1udWxsJiYoVGEoJHQpLCR0PW51bGwpLGE9ITA7aWYoIWEpcmV0dXJuIHQuZmxhZ3MmNjU1MzY/dDpudWxsfXJldHVybih0LmZsYWdzJjEyOCkhPT0wPyh0LmxhbmVzPW4sdCk6KGk9aSE9PW51bGwsaSE9PShlIT09bnVsbCYmZS5tZW1vaXplZFN0YXRlIT09bnVsbCkmJmkmJih0LmNoaWxkLmZsYWdzfD04MTkyLCh0Lm1vZGUmMSkhPT0wJiYoZT09PW51bGx8fChNZS5jdXJyZW50JjEpIT09MD9XZT09PTAmJihXZT0zKTpEYSgpKSksdC51cGRhdGVRdWV1ZSE9PW51bGwmJih0LmZsYWdzfD00KSxudCh0KSxudWxsKTtjYXNlIDQ6cmV0dXJuIGJyKCkseGEoZSx0KSxlPT09bnVsbCYmSXModC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyksbnQodCksbnVsbDtjYXNlIDEwOnJldHVybiBWbyh0LnR5cGUuX2NvbnRleHQpLG50KHQpLG51bGw7Y2FzZSAxNzpyZXR1cm4gaHQodC50eXBlKSYmcWkoKSxudCh0KSxudWxsO2Nhc2UgMTk6aWYoRmUoTWUpLGE9dC5tZW1vaXplZFN0YXRlLGE9PT1udWxsKXJldHVybiBudCh0KSxudWxsO2lmKGk9KHQuZmxhZ3MmMTI4KSE9PTAsZj1hLnJlbmRlcmluZyxmPT09bnVsbClpZihpKVZzKGEsITEpO2Vsc2V7aWYoV2UhPT0wfHxlIT09bnVsbCYmKGUuZmxhZ3MmMTI4KSE9PTApZm9yKGU9dC5jaGlsZDtlIT09bnVsbDspe2lmKGY9bmwoZSksZiE9PW51bGwpe2Zvcih0LmZsYWdzfD0xMjgsVnMoYSwhMSksaT1mLnVwZGF0ZVF1ZXVlLGkhPT1udWxsJiYodC51cGRhdGVRdWV1ZT1pLHQuZmxhZ3N8PTQpLHQuc3VidHJlZUZsYWdzPTAsaT1uLG49dC5jaGlsZDtuIT09bnVsbDspYT1uLGU9aSxhLmZsYWdzJj0xNDY4MDA2NixmPWEuYWx0ZXJuYXRlLGY9PT1udWxsPyhhLmNoaWxkTGFuZXM9MCxhLmxhbmVzPWUsYS5jaGlsZD1udWxsLGEuc3VidHJlZUZsYWdzPTAsYS5tZW1vaXplZFByb3BzPW51bGwsYS5tZW1vaXplZFN0YXRlPW51bGwsYS51cGRhdGVRdWV1ZT1udWxsLGEuZGVwZW5kZW5jaWVzPW51bGwsYS5zdGF0ZU5vZGU9bnVsbCk6KGEuY2hpbGRMYW5lcz1mLmNoaWxkTGFuZXMsYS5sYW5lcz1mLmxhbmVzLGEuY2hpbGQ9Zi5jaGlsZCxhLnN1YnRyZWVGbGFncz0wLGEuZGVsZXRpb25zPW51bGwsYS5tZW1vaXplZFByb3BzPWYubWVtb2l6ZWRQcm9wcyxhLm1lbW9pemVkU3RhdGU9Zi5tZW1vaXplZFN0YXRlLGEudXBkYXRlUXVldWU9Zi51cGRhdGVRdWV1ZSxhLnR5cGU9Zi50eXBlLGU9Zi5kZXBlbmRlbmNpZXMsYS5kZXBlbmRlbmNpZXM9ZT09PW51bGw/bnVsbDp7bGFuZXM6ZS5sYW5lcyxmaXJzdENvbnRleHQ6ZS5maXJzdENvbnRleHR9KSxuPW4uc2libGluZztyZXR1cm4gUGUoTWUsTWUuY3VycmVudCYxfDIpLHQuY2hpbGR9ZT1lLnNpYmxpbmd9YS50YWlsIT09bnVsbCYmQmUoKT5xciYmKHQuZmxhZ3N8PTEyOCxpPSEwLFZzKGEsITEpLHQubGFuZXM9NDE5NDMwNCl9ZWxzZXtpZighaSlpZihlPW5sKGYpLGUhPT1udWxsKXtpZih0LmZsYWdzfD0xMjgsaT0hMCxuPWUudXBkYXRlUXVldWUsbiE9PW51bGwmJih0LnVwZGF0ZVF1ZXVlPW4sdC5mbGFnc3w9NCksVnMoYSwhMCksYS50YWlsPT09bnVsbCYmYS50YWlsTW9kZT09PSJoaWRkZW4iJiYhZi5hbHRlcm5hdGUmJiFEZSlyZXR1cm4gbnQodCksbnVsbH1lbHNlIDIqQmUoKS1hLnJlbmRlcmluZ1N0YXJ0VGltZT5xciYmbiE9PTEwNzM3NDE4MjQmJih0LmZsYWdzfD0xMjgsaT0hMCxWcyhhLCExKSx0LmxhbmVzPTQxOTQzMDQpO2EuaXNCYWNrd2FyZHM/KGYuc2libGluZz10LmNoaWxkLHQuY2hpbGQ9Zik6KG49YS5sYXN0LG4hPT1udWxsP24uc2libGluZz1mOnQuY2hpbGQ9ZixhLmxhc3Q9Zil9cmV0dXJuIGEudGFpbCE9PW51bGw/KHQ9YS50YWlsLGEucmVuZGVyaW5nPXQsYS50YWlsPXQuc2libGluZyxhLnJlbmRlcmluZ1N0YXJ0VGltZT1CZSgpLHQuc2libGluZz1udWxsLG49TWUuY3VycmVudCxQZShNZSxpP24mMXwyOm4mMSksdCk6KG50KHQpLG51bGwpO2Nhc2UgMjI6Y2FzZSAyMzpyZXR1cm4gTGEoKSxpPXQubWVtb2l6ZWRTdGF0ZSE9PW51bGwsZSE9PW51bGwmJmUubWVtb2l6ZWRTdGF0ZSE9PW51bGwhPT1pJiYodC5mbGFnc3w9ODE5MiksaSYmKHQubW9kZSYxKSE9PTA/KGt0JjEwNzM3NDE4MjQpIT09MCYmKG50KHQpLHQuc3VidHJlZUZsYWdzJjYmJih0LmZsYWdzfD04MTkyKSk6bnQodCksbnVsbDtjYXNlIDI0OnJldHVybiBudWxsO2Nhc2UgMjU6cmV0dXJuIG51bGx9dGhyb3cgRXJyb3IobCgxNTYsdC50YWcpKX1mdW5jdGlvbiBXbShlLHQpe3N3aXRjaChibyh0KSx0LnRhZyl7Y2FzZSAxOnJldHVybiBodCh0LnR5cGUpJiZxaSgpLGU9dC5mbGFncyxlJjY1NTM2Pyh0LmZsYWdzPWUmLTY1NTM3fDEyOCx0KTpudWxsO2Nhc2UgMzpyZXR1cm4gYnIoKSxGZShmdCksRmUoZXQpLGVhKCksZT10LmZsYWdzLChlJjY1NTM2KSE9PTAmJihlJjEyOCk9PT0wPyh0LmZsYWdzPWUmLTY1NTM3fDEyOCx0KTpudWxsO2Nhc2UgNTpyZXR1cm4gWG8odCksbnVsbDtjYXNlIDEzOmlmKEZlKE1lKSxlPXQubWVtb2l6ZWRTdGF0ZSxlIT09bnVsbCYmZS5kZWh5ZHJhdGVkIT09bnVsbCl7aWYodC5hbHRlcm5hdGU9PT1udWxsKXRocm93IEVycm9yKGwoMzQwKSk7enIoKX1yZXR1cm4gZT10LmZsYWdzLGUmNjU1MzY/KHQuZmxhZ3M9ZSYtNjU1Mzd8MTI4LHQpOm51bGw7Y2FzZSAxOTpyZXR1cm4gRmUoTWUpLG51bGw7Y2FzZSA0OnJldHVybiBicigpLG51bGw7Y2FzZSAxMDpyZXR1cm4gVm8odC50eXBlLl9jb250ZXh0KSxudWxsO2Nhc2UgMjI6Y2FzZSAyMzpyZXR1cm4gTGEoKSxudWxsO2Nhc2UgMjQ6cmV0dXJuIG51bGw7ZGVmYXVsdDpyZXR1cm4gbnVsbH19dmFyIGRsPSExLHJ0PSExLFZtPXR5cGVvZiBXZWFrU2V0PT0iZnVuY3Rpb24iP1dlYWtTZXQ6U2V0LEc9bnVsbDtmdW5jdGlvbiBIcihlLHQpe3ZhciBuPWUucmVmO2lmKG4hPT1udWxsKWlmKHR5cGVvZiBuPT0iZnVuY3Rpb24iKXRyeXtuKG51bGwpfWNhdGNoKGkpe1VlKGUsdCxpKX1lbHNlIG4uY3VycmVudD1udWxsfWZ1bmN0aW9uIHdhKGUsdCxuKXt0cnl7bigpfWNhdGNoKGkpe1VlKGUsdCxpKX19dmFyIG9mPSExO2Z1bmN0aW9uIEttKGUsdCl7aWYoTG89RmksZT1BYygpLGpvKGUpKXtpZigic2VsZWN0aW9uU3RhcnQiaW4gZSl2YXIgbj17c3RhcnQ6ZS5zZWxlY3Rpb25TdGFydCxlbmQ6ZS5zZWxlY3Rpb25FbmR9O2Vsc2UgZTp7bj0obj1lLm93bmVyRG9jdW1lbnQpJiZuLmRlZmF1bHRWaWV3fHx3aW5kb3c7dmFyIGk9bi5nZXRTZWxlY3Rpb24mJm4uZ2V0U2VsZWN0aW9uKCk7aWYoaSYmaS5yYW5nZUNvdW50IT09MCl7bj1pLmFuY2hvck5vZGU7dmFyIG89aS5hbmNob3JPZmZzZXQsYT1pLmZvY3VzTm9kZTtpPWkuZm9jdXNPZmZzZXQ7dHJ5e24ubm9kZVR5cGUsYS5ub2RlVHlwZX1jYXRjaHtuPW51bGw7YnJlYWsgZX12YXIgZj0wLGc9LTEsdz0tMSxGPTAsej0wLCQ9ZSxNPW51bGw7dDpmb3IoOzspe2Zvcih2YXIgSzskIT09bnx8byE9PTAmJiQubm9kZVR5cGUhPT0zfHwoZz1mK28pLCQhPT1hfHxpIT09MCYmJC5ub2RlVHlwZSE9PTN8fCh3PWYraSksJC5ub2RlVHlwZT09PTMmJihmKz0kLm5vZGVWYWx1ZS5sZW5ndGgpLChLPSQuZmlyc3RDaGlsZCkhPT1udWxsOylNPSQsJD1LO2Zvcig7Oyl7aWYoJD09PWUpYnJlYWsgdDtpZihNPT09biYmKytGPT09byYmKGc9ZiksTT09PWEmJisrej09PWkmJih3PWYpLChLPSQubmV4dFNpYmxpbmcpIT09bnVsbClicmVhazskPU0sTT0kLnBhcmVudE5vZGV9JD1LfW49Zz09PS0xfHx3PT09LTE/bnVsbDp7c3RhcnQ6ZyxlbmQ6d319ZWxzZSBuPW51bGx9bj1ufHx7c3RhcnQ6MCxlbmQ6MH19ZWxzZSBuPW51bGw7Zm9yKERvPXtmb2N1c2VkRWxlbTplLHNlbGVjdGlvblJhbmdlOm59LEZpPSExLEc9dDtHIT09bnVsbDspaWYodD1HLGU9dC5jaGlsZCwodC5zdWJ0cmVlRmxhZ3MmMTAyOCkhPT0wJiZlIT09bnVsbCllLnJldHVybj10LEc9ZTtlbHNlIGZvcig7RyE9PW51bGw7KXt0PUc7dHJ5e3ZhciBKPXQuYWx0ZXJuYXRlO2lmKCh0LmZsYWdzJjEwMjQpIT09MClzd2l0Y2godC50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6YnJlYWs7Y2FzZSAxOmlmKEohPT1udWxsKXt2YXIgWD1KLm1lbW9pemVkUHJvcHMsSGU9Si5tZW1vaXplZFN0YXRlLFI9dC5zdGF0ZU5vZGUsaz1SLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKHQuZWxlbWVudFR5cGU9PT10LnR5cGU/WDpVdCh0LnR5cGUsWCksSGUpO1IuX19yZWFjdEludGVybmFsU25hcHNob3RCZWZvcmVVcGRhdGU9a31icmVhaztjYXNlIDM6dmFyIF89dC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbztfLm5vZGVUeXBlPT09MT9fLnRleHRDb250ZW50PSIiOl8ubm9kZVR5cGU9PT05JiZfLmRvY3VtZW50RWxlbWVudCYmXy5yZW1vdmVDaGlsZChfLmRvY3VtZW50RWxlbWVudCk7YnJlYWs7Y2FzZSA1OmNhc2UgNjpjYXNlIDQ6Y2FzZSAxNzpicmVhaztkZWZhdWx0OnRocm93IEVycm9yKGwoMTYzKSl9fWNhdGNoKEIpe1VlKHQsdC5yZXR1cm4sQil9aWYoZT10LnNpYmxpbmcsZSE9PW51bGwpe2UucmV0dXJuPXQucmV0dXJuLEc9ZTticmVha31HPXQucmV0dXJufXJldHVybiBKPW9mLG9mPSExLEp9ZnVuY3Rpb24gS3MoZSx0LG4pe3ZhciBpPXQudXBkYXRlUXVldWU7aWYoaT1pIT09bnVsbD9pLmxhc3RFZmZlY3Q6bnVsbCxpIT09bnVsbCl7dmFyIG89aT1pLm5leHQ7ZG97aWYoKG8udGFnJmUpPT09ZSl7dmFyIGE9by5kZXN0cm95O28uZGVzdHJveT12b2lkIDAsYSE9PXZvaWQgMCYmd2EodCxuLGEpfW89by5uZXh0fXdoaWxlKG8hPT1pKX19ZnVuY3Rpb24gZmwoZSx0KXtpZih0PXQudXBkYXRlUXVldWUsdD10IT09bnVsbD90Lmxhc3RFZmZlY3Q6bnVsbCx0IT09bnVsbCl7dmFyIG49dD10Lm5leHQ7ZG97aWYoKG4udGFnJmUpPT09ZSl7dmFyIGk9bi5jcmVhdGU7bi5kZXN0cm95PWkoKX1uPW4ubmV4dH13aGlsZShuIT09dCl9fWZ1bmN0aW9uIFNhKGUpe3ZhciB0PWUucmVmO2lmKHQhPT1udWxsKXt2YXIgbj1lLnN0YXRlTm9kZTtzd2l0Y2goZS50YWcpe2Nhc2UgNTplPW47YnJlYWs7ZGVmYXVsdDplPW59dHlwZW9mIHQ9PSJmdW5jdGlvbiI/dChlKTp0LmN1cnJlbnQ9ZX19ZnVuY3Rpb24gYWYoZSl7dmFyIHQ9ZS5hbHRlcm5hdGU7dCE9PW51bGwmJihlLmFsdGVybmF0ZT1udWxsLGFmKHQpKSxlLmNoaWxkPW51bGwsZS5kZWxldGlvbnM9bnVsbCxlLnNpYmxpbmc9bnVsbCxlLnRhZz09PTUmJih0PWUuc3RhdGVOb2RlLHQhPT1udWxsJiYoZGVsZXRlIHRbWXRdLGRlbGV0ZSB0W3pzXSxkZWxldGUgdFt6b10sZGVsZXRlIHRbVG1dLGRlbGV0ZSB0W0ZtXSkpLGUuc3RhdGVOb2RlPW51bGwsZS5yZXR1cm49bnVsbCxlLmRlcGVuZGVuY2llcz1udWxsLGUubWVtb2l6ZWRQcm9wcz1udWxsLGUubWVtb2l6ZWRTdGF0ZT1udWxsLGUucGVuZGluZ1Byb3BzPW51bGwsZS5zdGF0ZU5vZGU9bnVsbCxlLnVwZGF0ZVF1ZXVlPW51bGx9ZnVuY3Rpb24gdWYoZSl7cmV0dXJuIGUudGFnPT09NXx8ZS50YWc9PT0zfHxlLnRhZz09PTR9ZnVuY3Rpb24gY2YoZSl7ZTpmb3IoOzspe2Zvcig7ZS5zaWJsaW5nPT09bnVsbDspe2lmKGUucmV0dXJuPT09bnVsbHx8dWYoZS5yZXR1cm4pKXJldHVybiBudWxsO2U9ZS5yZXR1cm59Zm9yKGUuc2libGluZy5yZXR1cm49ZS5yZXR1cm4sZT1lLnNpYmxpbmc7ZS50YWchPT01JiZlLnRhZyE9PTYmJmUudGFnIT09MTg7KXtpZihlLmZsYWdzJjJ8fGUuY2hpbGQ9PT1udWxsfHxlLnRhZz09PTQpY29udGludWUgZTtlLmNoaWxkLnJldHVybj1lLGU9ZS5jaGlsZH1pZighKGUuZmxhZ3MmMikpcmV0dXJuIGUuc3RhdGVOb2RlfX1mdW5jdGlvbiBrYShlLHQsbil7dmFyIGk9ZS50YWc7aWYoaT09PTV8fGk9PT02KWU9ZS5zdGF0ZU5vZGUsdD9uLm5vZGVUeXBlPT09OD9uLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGUsdCk6bi5pbnNlcnRCZWZvcmUoZSx0KToobi5ub2RlVHlwZT09PTg/KHQ9bi5wYXJlbnROb2RlLHQuaW5zZXJ0QmVmb3JlKGUsbikpOih0PW4sdC5hcHBlbmRDaGlsZChlKSksbj1uLl9yZWFjdFJvb3RDb250YWluZXIsbiE9bnVsbHx8dC5vbmNsaWNrIT09bnVsbHx8KHQub25jbGljaz1IaSkpO2Vsc2UgaWYoaSE9PTQmJihlPWUuY2hpbGQsZSE9PW51bGwpKWZvcihrYShlLHQsbiksZT1lLnNpYmxpbmc7ZSE9PW51bGw7KWthKGUsdCxuKSxlPWUuc2libGluZ31mdW5jdGlvbiBDYShlLHQsbil7dmFyIGk9ZS50YWc7aWYoaT09PTV8fGk9PT02KWU9ZS5zdGF0ZU5vZGUsdD9uLmluc2VydEJlZm9yZShlLHQpOm4uYXBwZW5kQ2hpbGQoZSk7ZWxzZSBpZihpIT09NCYmKGU9ZS5jaGlsZCxlIT09bnVsbCkpZm9yKENhKGUsdCxuKSxlPWUuc2libGluZztlIT09bnVsbDspQ2EoZSx0LG4pLGU9ZS5zaWJsaW5nfXZhciBYZT1udWxsLGJ0PSExO2Z1bmN0aW9uIExuKGUsdCxuKXtmb3Iobj1uLmNoaWxkO24hPT1udWxsOylkZihlLHQsbiksbj1uLnNpYmxpbmd9ZnVuY3Rpb24gZGYoZSx0LG4pe2lmKEp0JiZ0eXBlb2YgSnQub25Db21taXRGaWJlclVubW91bnQ9PSJmdW5jdGlvbiIpdHJ5e0p0Lm9uQ29tbWl0RmliZXJVbm1vdW50KEVpLG4pfWNhdGNoe31zd2l0Y2gobi50YWcpe2Nhc2UgNTpydHx8SHIobix0KTtjYXNlIDY6dmFyIGk9WGUsbz1idDtYZT1udWxsLExuKGUsdCxuKSxYZT1pLGJ0PW8sWGUhPT1udWxsJiYoYnQ/KGU9WGUsbj1uLnN0YXRlTm9kZSxlLm5vZGVUeXBlPT09OD9lLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobik6ZS5yZW1vdmVDaGlsZChuKSk6WGUucmVtb3ZlQ2hpbGQobi5zdGF0ZU5vZGUpKTticmVhaztjYXNlIDE4OlhlIT09bnVsbCYmKGJ0PyhlPVhlLG49bi5zdGF0ZU5vZGUsZS5ub2RlVHlwZT09PTg/TW8oZS5wYXJlbnROb2RlLG4pOmUubm9kZVR5cGU9PT0xJiZNbyhlLG4pLE5zKGUpKTpNbyhYZSxuLnN0YXRlTm9kZSkpO2JyZWFrO2Nhc2UgNDppPVhlLG89YnQsWGU9bi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyxidD0hMCxMbihlLHQsbiksWGU9aSxidD1vO2JyZWFrO2Nhc2UgMDpjYXNlIDExOmNhc2UgMTQ6Y2FzZSAxNTppZighcnQmJihpPW4udXBkYXRlUXVldWUsaSE9PW51bGwmJihpPWkubGFzdEVmZmVjdCxpIT09bnVsbCkpKXtvPWk9aS5uZXh0O2Rve3ZhciBhPW8sZj1hLmRlc3Ryb3k7YT1hLnRhZyxmIT09dm9pZCAwJiYoKGEmMikhPT0wfHwoYSY0KSE9PTApJiZ3YShuLHQsZiksbz1vLm5leHR9d2hpbGUobyE9PWkpfUxuKGUsdCxuKTticmVhaztjYXNlIDE6aWYoIXJ0JiYoSHIobix0KSxpPW4uc3RhdGVOb2RlLHR5cGVvZiBpLmNvbXBvbmVudFdpbGxVbm1vdW50PT0iZnVuY3Rpb24iKSl0cnl7aS5wcm9wcz1uLm1lbW9pemVkUHJvcHMsaS5zdGF0ZT1uLm1lbW9pemVkU3RhdGUsaS5jb21wb25lbnRXaWxsVW5tb3VudCgpfWNhdGNoKGcpe1VlKG4sdCxnKX1MbihlLHQsbik7YnJlYWs7Y2FzZSAyMTpMbihlLHQsbik7YnJlYWs7Y2FzZSAyMjpuLm1vZGUmMT8ocnQ9KGk9cnQpfHxuLm1lbW9pemVkU3RhdGUhPT1udWxsLExuKGUsdCxuKSxydD1pKTpMbihlLHQsbik7YnJlYWs7ZGVmYXVsdDpMbihlLHQsbil9fWZ1bmN0aW9uIGZmKGUpe3ZhciB0PWUudXBkYXRlUXVldWU7aWYodCE9PW51bGwpe2UudXBkYXRlUXVldWU9bnVsbDt2YXIgbj1lLnN0YXRlTm9kZTtuPT09bnVsbCYmKG49ZS5zdGF0ZU5vZGU9bmV3IFZtKSx0LmZvckVhY2goZnVuY3Rpb24oaSl7dmFyIG89cmcuYmluZChudWxsLGUsaSk7bi5oYXMoaSl8fChuLmFkZChpKSxpLnRoZW4obyxvKSl9KX19ZnVuY3Rpb24gQnQoZSx0KXt2YXIgbj10LmRlbGV0aW9ucztpZihuIT09bnVsbClmb3IodmFyIGk9MDtpPG4ubGVuZ3RoO2krKyl7dmFyIG89bltpXTt0cnl7dmFyIGE9ZSxmPXQsZz1mO2U6Zm9yKDtnIT09bnVsbDspe3N3aXRjaChnLnRhZyl7Y2FzZSA1OlhlPWcuc3RhdGVOb2RlLGJ0PSExO2JyZWFrIGU7Y2FzZSAzOlhlPWcuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8sYnQ9ITA7YnJlYWsgZTtjYXNlIDQ6WGU9Zy5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyxidD0hMDticmVhayBlfWc9Zy5yZXR1cm59aWYoWGU9PT1udWxsKXRocm93IEVycm9yKGwoMTYwKSk7ZGYoYSxmLG8pLFhlPW51bGwsYnQ9ITE7dmFyIHc9by5hbHRlcm5hdGU7dyE9PW51bGwmJih3LnJldHVybj1udWxsKSxvLnJldHVybj1udWxsfWNhdGNoKEYpe1VlKG8sdCxGKX19aWYodC5zdWJ0cmVlRmxhZ3MmMTI4NTQpZm9yKHQ9dC5jaGlsZDt0IT09bnVsbDspaGYodCxlKSx0PXQuc2libGluZ31mdW5jdGlvbiBoZihlLHQpe3ZhciBuPWUuYWx0ZXJuYXRlLGk9ZS5mbGFncztzd2l0Y2goZS50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTQ6Y2FzZSAxNTppZihCdCh0LGUpLGVuKGUpLGkmNCl7dHJ5e0tzKDMsZSxlLnJldHVybiksZmwoMyxlKX1jYXRjaChYKXtVZShlLGUucmV0dXJuLFgpfXRyeXtLcyg1LGUsZS5yZXR1cm4pfWNhdGNoKFgpe1VlKGUsZS5yZXR1cm4sWCl9fWJyZWFrO2Nhc2UgMTpCdCh0LGUpLGVuKGUpLGkmNTEyJiZuIT09bnVsbCYmSHIobixuLnJldHVybik7YnJlYWs7Y2FzZSA1OmlmKEJ0KHQsZSksZW4oZSksaSY1MTImJm4hPT1udWxsJiZIcihuLG4ucmV0dXJuKSxlLmZsYWdzJjMyKXt2YXIgbz1lLnN0YXRlTm9kZTt0cnl7bXMobywiIil9Y2F0Y2goWCl7VWUoZSxlLnJldHVybixYKX19aWYoaSY0JiYobz1lLnN0YXRlTm9kZSxvIT1udWxsKSl7dmFyIGE9ZS5tZW1vaXplZFByb3BzLGY9biE9PW51bGw/bi5tZW1vaXplZFByb3BzOmEsZz1lLnR5cGUsdz1lLnVwZGF0ZVF1ZXVlO2lmKGUudXBkYXRlUXVldWU9bnVsbCx3IT09bnVsbCl0cnl7Zz09PSJpbnB1dCImJmEudHlwZT09PSJyYWRpbyImJmEubmFtZSE9bnVsbCYmVXUobyxhKSxabChnLGYpO3ZhciBGPVpsKGcsYSk7Zm9yKGY9MDtmPHcubGVuZ3RoO2YrPTIpe3ZhciB6PXdbZl0sJD13W2YrMV07ej09PSJzdHlsZSI/S3UobywkKTp6PT09ImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIj9XdShvLCQpOno9PT0iY2hpbGRyZW4iP21zKG8sJCk6YihvLHosJCxGKX1zd2l0Y2goZyl7Y2FzZSJpbnB1dCI6S2wobyxhKTticmVhaztjYXNlInRleHRhcmVhIjpIdShvLGEpO2JyZWFrO2Nhc2Uic2VsZWN0Ijp2YXIgTT1vLl93cmFwcGVyU3RhdGUud2FzTXVsdGlwbGU7by5fd3JhcHBlclN0YXRlLndhc011bHRpcGxlPSEhYS5tdWx0aXBsZTt2YXIgSz1hLnZhbHVlO0shPW51bGw/a3IobywhIWEubXVsdGlwbGUsSywhMSk6TSE9PSEhYS5tdWx0aXBsZSYmKGEuZGVmYXVsdFZhbHVlIT1udWxsP2tyKG8sISFhLm11bHRpcGxlLGEuZGVmYXVsdFZhbHVlLCEwKTprcihvLCEhYS5tdWx0aXBsZSxhLm11bHRpcGxlP1tdOiIiLCExKSl9b1t6c109YX1jYXRjaChYKXtVZShlLGUucmV0dXJuLFgpfX1icmVhaztjYXNlIDY6aWYoQnQodCxlKSxlbihlKSxpJjQpe2lmKGUuc3RhdGVOb2RlPT09bnVsbCl0aHJvdyBFcnJvcihsKDE2MikpO289ZS5zdGF0ZU5vZGUsYT1lLm1lbW9pemVkUHJvcHM7dHJ5e28ubm9kZVZhbHVlPWF9Y2F0Y2goWCl7VWUoZSxlLnJldHVybixYKX19YnJlYWs7Y2FzZSAzOmlmKEJ0KHQsZSksZW4oZSksaSY0JiZuIT09bnVsbCYmbi5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCl0cnl7TnModC5jb250YWluZXJJbmZvKX1jYXRjaChYKXtVZShlLGUucmV0dXJuLFgpfWJyZWFrO2Nhc2UgNDpCdCh0LGUpLGVuKGUpO2JyZWFrO2Nhc2UgMTM6QnQodCxlKSxlbihlKSxvPWUuY2hpbGQsby5mbGFncyY4MTkyJiYoYT1vLm1lbW9pemVkU3RhdGUhPT1udWxsLG8uc3RhdGVOb2RlLmlzSGlkZGVuPWEsIWF8fG8uYWx0ZXJuYXRlIT09bnVsbCYmby5hbHRlcm5hdGUubWVtb2l6ZWRTdGF0ZSE9PW51bGx8fChOYT1CZSgpKSksaSY0JiZmZihlKTticmVhaztjYXNlIDIyOmlmKHo9biE9PW51bGwmJm4ubWVtb2l6ZWRTdGF0ZSE9PW51bGwsZS5tb2RlJjE/KHJ0PShGPXJ0KXx8eixCdCh0LGUpLHJ0PUYpOkJ0KHQsZSksZW4oZSksaSY4MTkyKXtpZihGPWUubWVtb2l6ZWRTdGF0ZSE9PW51bGwsKGUuc3RhdGVOb2RlLmlzSGlkZGVuPUYpJiYheiYmKGUubW9kZSYxKSE9PTApZm9yKEc9ZSx6PWUuY2hpbGQ7eiE9PW51bGw7KXtmb3IoJD1HPXo7RyE9PW51bGw7KXtzd2l0Y2goTT1HLEs9TS5jaGlsZCxNLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNDpjYXNlIDE1OktzKDQsTSxNLnJldHVybik7YnJlYWs7Y2FzZSAxOkhyKE0sTS5yZXR1cm4pO3ZhciBKPU0uc3RhdGVOb2RlO2lmKHR5cGVvZiBKLmNvbXBvbmVudFdpbGxVbm1vdW50PT0iZnVuY3Rpb24iKXtpPU0sbj1NLnJldHVybjt0cnl7dD1pLEoucHJvcHM9dC5tZW1vaXplZFByb3BzLEouc3RhdGU9dC5tZW1vaXplZFN0YXRlLEouY29tcG9uZW50V2lsbFVubW91bnQoKX1jYXRjaChYKXtVZShpLG4sWCl9fWJyZWFrO2Nhc2UgNTpIcihNLE0ucmV0dXJuKTticmVhaztjYXNlIDIyOmlmKE0ubWVtb2l6ZWRTdGF0ZSE9PW51bGwpe2dmKCQpO2NvbnRpbnVlfX1LIT09bnVsbD8oSy5yZXR1cm49TSxHPUspOmdmKCQpfXo9ei5zaWJsaW5nfWU6Zm9yKHo9bnVsbCwkPWU7Oyl7aWYoJC50YWc9PT01KXtpZih6PT09bnVsbCl7ej0kO3RyeXtvPSQuc3RhdGVOb2RlLEY/KGE9by5zdHlsZSx0eXBlb2YgYS5zZXRQcm9wZXJ0eT09ImZ1bmN0aW9uIj9hLnNldFByb3BlcnR5KCJkaXNwbGF5Iiwibm9uZSIsImltcG9ydGFudCIpOmEuZGlzcGxheT0ibm9uZSIpOihnPSQuc3RhdGVOb2RlLHc9JC5tZW1vaXplZFByb3BzLnN0eWxlLGY9dyE9bnVsbCYmdy5oYXNPd25Qcm9wZXJ0eSgiZGlzcGxheSIpP3cuZGlzcGxheTpudWxsLGcuc3R5bGUuZGlzcGxheT1WdSgiZGlzcGxheSIsZikpfWNhdGNoKFgpe1VlKGUsZS5yZXR1cm4sWCl9fX1lbHNlIGlmKCQudGFnPT09Nil7aWYoej09PW51bGwpdHJ5eyQuc3RhdGVOb2RlLm5vZGVWYWx1ZT1GPyIiOiQubWVtb2l6ZWRQcm9wc31jYXRjaChYKXtVZShlLGUucmV0dXJuLFgpfX1lbHNlIGlmKCgkLnRhZyE9PTIyJiYkLnRhZyE9PTIzfHwkLm1lbW9pemVkU3RhdGU9PT1udWxsfHwkPT09ZSkmJiQuY2hpbGQhPT1udWxsKXskLmNoaWxkLnJldHVybj0kLCQ9JC5jaGlsZDtjb250aW51ZX1pZigkPT09ZSlicmVhayBlO2Zvcig7JC5zaWJsaW5nPT09bnVsbDspe2lmKCQucmV0dXJuPT09bnVsbHx8JC5yZXR1cm49PT1lKWJyZWFrIGU7ej09PSQmJih6PW51bGwpLCQ9JC5yZXR1cm59ej09PSQmJih6PW51bGwpLCQuc2libGluZy5yZXR1cm49JC5yZXR1cm4sJD0kLnNpYmxpbmd9fWJyZWFrO2Nhc2UgMTk6QnQodCxlKSxlbihlKSxpJjQmJmZmKGUpO2JyZWFrO2Nhc2UgMjE6YnJlYWs7ZGVmYXVsdDpCdCh0LGUpLGVuKGUpfX1mdW5jdGlvbiBlbihlKXt2YXIgdD1lLmZsYWdzO2lmKHQmMil7dHJ5e2U6e2Zvcih2YXIgbj1lLnJldHVybjtuIT09bnVsbDspe2lmKHVmKG4pKXt2YXIgaT1uO2JyZWFrIGV9bj1uLnJldHVybn10aHJvdyBFcnJvcihsKDE2MCkpfXN3aXRjaChpLnRhZyl7Y2FzZSA1OnZhciBvPWkuc3RhdGVOb2RlO2kuZmxhZ3MmMzImJihtcyhvLCIiKSxpLmZsYWdzJj0tMzMpO3ZhciBhPWNmKGUpO0NhKGUsYSxvKTticmVhaztjYXNlIDM6Y2FzZSA0OnZhciBmPWkuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8sZz1jZihlKTtrYShlLGcsZik7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihsKDE2MSkpfX1jYXRjaCh3KXtVZShlLGUucmV0dXJuLHcpfWUuZmxhZ3MmPS0zfXQmNDA5NiYmKGUuZmxhZ3MmPS00MDk3KX1mdW5jdGlvbiBHbShlLHQsbil7Rz1lLHBmKGUpfWZ1bmN0aW9uIHBmKGUsdCxuKXtmb3IodmFyIGk9KGUubW9kZSYxKSE9PTA7RyE9PW51bGw7KXt2YXIgbz1HLGE9by5jaGlsZDtpZihvLnRhZz09PTIyJiZpKXt2YXIgZj1vLm1lbW9pemVkU3RhdGUhPT1udWxsfHxkbDtpZighZil7dmFyIGc9by5hbHRlcm5hdGUsdz1nIT09bnVsbCYmZy5tZW1vaXplZFN0YXRlIT09bnVsbHx8cnQ7Zz1kbDt2YXIgRj1ydDtpZihkbD1mLChydD13KSYmIUYpZm9yKEc9bztHIT09bnVsbDspZj1HLHc9Zi5jaGlsZCxmLnRhZz09PTIyJiZmLm1lbW9pemVkU3RhdGUhPT1udWxsP3ZmKG8pOnchPT1udWxsPyh3LnJldHVybj1mLEc9dyk6dmYobyk7Zm9yKDthIT09bnVsbDspRz1hLHBmKGEpLGE9YS5zaWJsaW5nO0c9byxkbD1nLHJ0PUZ9bWYoZSl9ZWxzZShvLnN1YnRyZWVGbGFncyY4NzcyKSE9PTAmJmEhPT1udWxsPyhhLnJldHVybj1vLEc9YSk6bWYoZSl9fWZ1bmN0aW9uIG1mKGUpe2Zvcig7RyE9PW51bGw7KXt2YXIgdD1HO2lmKCh0LmZsYWdzJjg3NzIpIT09MCl7dmFyIG49dC5hbHRlcm5hdGU7dHJ5e2lmKCh0LmZsYWdzJjg3NzIpIT09MClzd2l0Y2godC50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6cnR8fGZsKDUsdCk7YnJlYWs7Y2FzZSAxOnZhciBpPXQuc3RhdGVOb2RlO2lmKHQuZmxhZ3MmNCYmIXJ0KWlmKG49PT1udWxsKWkuY29tcG9uZW50RGlkTW91bnQoKTtlbHNle3ZhciBvPXQuZWxlbWVudFR5cGU9PT10LnR5cGU/bi5tZW1vaXplZFByb3BzOlV0KHQudHlwZSxuLm1lbW9pemVkUHJvcHMpO2kuY29tcG9uZW50RGlkVXBkYXRlKG8sbi5tZW1vaXplZFN0YXRlLGkuX19yZWFjdEludGVybmFsU25hcHNob3RCZWZvcmVVcGRhdGUpfXZhciBhPXQudXBkYXRlUXVldWU7YSE9PW51bGwmJm1kKHQsYSxpKTticmVhaztjYXNlIDM6dmFyIGY9dC51cGRhdGVRdWV1ZTtpZihmIT09bnVsbCl7aWYobj1udWxsLHQuY2hpbGQhPT1udWxsKXN3aXRjaCh0LmNoaWxkLnRhZyl7Y2FzZSA1Om49dC5jaGlsZC5zdGF0ZU5vZGU7YnJlYWs7Y2FzZSAxOm49dC5jaGlsZC5zdGF0ZU5vZGV9bWQodCxmLG4pfWJyZWFrO2Nhc2UgNTp2YXIgZz10LnN0YXRlTm9kZTtpZihuPT09bnVsbCYmdC5mbGFncyY0KXtuPWc7dmFyIHc9dC5tZW1vaXplZFByb3BzO3N3aXRjaCh0LnR5cGUpe2Nhc2UiYnV0dG9uIjpjYXNlImlucHV0IjpjYXNlInNlbGVjdCI6Y2FzZSJ0ZXh0YXJlYSI6dy5hdXRvRm9jdXMmJm4uZm9jdXMoKTticmVhaztjYXNlImltZyI6dy5zcmMmJihuLnNyYz13LnNyYyl9fWJyZWFrO2Nhc2UgNjpicmVhaztjYXNlIDQ6YnJlYWs7Y2FzZSAxMjpicmVhaztjYXNlIDEzOmlmKHQubWVtb2l6ZWRTdGF0ZT09PW51bGwpe3ZhciBGPXQuYWx0ZXJuYXRlO2lmKEYhPT1udWxsKXt2YXIgej1GLm1lbW9pemVkU3RhdGU7aWYoeiE9PW51bGwpe3ZhciAkPXouZGVoeWRyYXRlZDskIT09bnVsbCYmTnMoJCl9fX1icmVhaztjYXNlIDE5OmNhc2UgMTc6Y2FzZSAyMTpjYXNlIDIyOmNhc2UgMjM6Y2FzZSAyNTpicmVhaztkZWZhdWx0OnRocm93IEVycm9yKGwoMTYzKSl9cnR8fHQuZmxhZ3MmNTEyJiZTYSh0KX1jYXRjaChNKXtVZSh0LHQucmV0dXJuLE0pfX1pZih0PT09ZSl7Rz1udWxsO2JyZWFrfWlmKG49dC5zaWJsaW5nLG4hPT1udWxsKXtuLnJldHVybj10LnJldHVybixHPW47YnJlYWt9Rz10LnJldHVybn19ZnVuY3Rpb24gZ2YoZSl7Zm9yKDtHIT09bnVsbDspe3ZhciB0PUc7aWYodD09PWUpe0c9bnVsbDticmVha312YXIgbj10LnNpYmxpbmc7aWYobiE9PW51bGwpe24ucmV0dXJuPXQucmV0dXJuLEc9bjticmVha31HPXQucmV0dXJufX1mdW5jdGlvbiB2ZihlKXtmb3IoO0chPT1udWxsOyl7dmFyIHQ9Rzt0cnl7c3dpdGNoKHQudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OnZhciBuPXQucmV0dXJuO3RyeXtmbCg0LHQpfWNhdGNoKHcpe1VlKHQsbix3KX1icmVhaztjYXNlIDE6dmFyIGk9dC5zdGF0ZU5vZGU7aWYodHlwZW9mIGkuY29tcG9uZW50RGlkTW91bnQ9PSJmdW5jdGlvbiIpe3ZhciBvPXQucmV0dXJuO3RyeXtpLmNvbXBvbmVudERpZE1vdW50KCl9Y2F0Y2godyl7VWUodCxvLHcpfX12YXIgYT10LnJldHVybjt0cnl7U2EodCl9Y2F0Y2godyl7VWUodCxhLHcpfWJyZWFrO2Nhc2UgNTp2YXIgZj10LnJldHVybjt0cnl7U2EodCl9Y2F0Y2godyl7VWUodCxmLHcpfX19Y2F0Y2godyl7VWUodCx0LnJldHVybix3KX1pZih0PT09ZSl7Rz1udWxsO2JyZWFrfXZhciBnPXQuc2libGluZztpZihnIT09bnVsbCl7Zy5yZXR1cm49dC5yZXR1cm4sRz1nO2JyZWFrfUc9dC5yZXR1cm59fXZhciBKbT1NYXRoLmNlaWwsaGw9Vi5SZWFjdEN1cnJlbnREaXNwYXRjaGVyLGphPVYuUmVhY3RDdXJyZW50T3duZXIsRnQ9Vi5SZWFjdEN1cnJlbnRCYXRjaENvbmZpZyx2ZT0wLEplPW51bGwsUWU9bnVsbCxaZT0wLGt0PTAsUXI9Um4oMCksV2U9MCxHcz1udWxsLHJyPTAscGw9MCxFYT0wLEpzPW51bGwsbXQ9bnVsbCxOYT0wLHFyPTEvMCxobj1udWxsLG1sPSExLFJhPW51bGwsRG49bnVsbCxnbD0hMSxPbj1udWxsLHZsPTAsWXM9MCxQYT1udWxsLHlsPS0xLHhsPTA7ZnVuY3Rpb24gb3QoKXtyZXR1cm4odmUmNikhPT0wP0JlKCk6eWwhPT0tMT95bDp5bD1CZSgpfWZ1bmN0aW9uIEluKGUpe3JldHVybihlLm1vZGUmMSk9PT0wPzE6KHZlJjIpIT09MCYmWmUhPT0wP1plJi1aZTpEbS50cmFuc2l0aW9uIT09bnVsbD8oeGw9PT0wJiYoeGw9dWMoKSkseGwpOihlPWplLGUhPT0wfHwoZT13aW5kb3cuZXZlbnQsZT1lPT09dm9pZCAwPzE2OnljKGUudHlwZSkpLGUpfWZ1bmN0aW9uIEh0KGUsdCxuLGkpe2lmKDUwPFlzKXRocm93IFlzPTAsUGE9bnVsbCxFcnJvcihsKDE4NSkpO1NzKGUsbixpKSwoKHZlJjIpPT09MHx8ZSE9PUplKSYmKGU9PT1KZSYmKCh2ZSYyKT09PTAmJihwbHw9biksV2U9PT00JiZNbihlLFplKSksZ3QoZSxpKSxuPT09MSYmdmU9PT0wJiYodC5tb2RlJjEpPT09MCYmKHFyPUJlKCkrNTAwLFZpJiZfbigpKSl9ZnVuY3Rpb24gZ3QoZSx0KXt2YXIgbj1lLmNhbGxiYWNrTm9kZTtEcChlLHQpO3ZhciBpPVBpKGUsZT09PUplP1plOjApO2lmKGk9PT0wKW4hPT1udWxsJiZsYyhuKSxlLmNhbGxiYWNrTm9kZT1udWxsLGUuY2FsbGJhY2tQcmlvcml0eT0wO2Vsc2UgaWYodD1pJi1pLGUuY2FsbGJhY2tQcmlvcml0eSE9PXQpe2lmKG4hPW51bGwmJmxjKG4pLHQ9PT0xKWUudGFnPT09MD9MbSh4Zi5iaW5kKG51bGwsZSkpOnJkKHhmLmJpbmQobnVsbCxlKSksUG0oZnVuY3Rpb24oKXsodmUmNik9PT0wJiZfbigpfSksbj1udWxsO2Vsc2V7c3dpdGNoKGNjKGkpKXtjYXNlIDE6bj1sbzticmVhaztjYXNlIDQ6bj1vYzticmVhaztjYXNlIDE2Om49amk7YnJlYWs7Y2FzZSA1MzY4NzA5MTI6bj1hYzticmVhaztkZWZhdWx0Om49aml9bj1SZihuLHlmLmJpbmQobnVsbCxlKSl9ZS5jYWxsYmFja1ByaW9yaXR5PXQsZS5jYWxsYmFja05vZGU9bn19ZnVuY3Rpb24geWYoZSx0KXtpZih5bD0tMSx4bD0wLCh2ZSY2KSE9PTApdGhyb3cgRXJyb3IobCgzMjcpKTt2YXIgbj1lLmNhbGxiYWNrTm9kZTtpZihXcigpJiZlLmNhbGxiYWNrTm9kZSE9PW4pcmV0dXJuIG51bGw7dmFyIGk9UGkoZSxlPT09SmU/WmU6MCk7aWYoaT09PTApcmV0dXJuIG51bGw7aWYoKGkmMzApIT09MHx8KGkmZS5leHBpcmVkTGFuZXMpIT09MHx8dCl0PXdsKGUsaSk7ZWxzZXt0PWk7dmFyIG89dmU7dmV8PTI7dmFyIGE9U2YoKTsoSmUhPT1lfHxaZSE9PXQpJiYoaG49bnVsbCxxcj1CZSgpKzUwMCxpcihlLHQpKTtkbyB0cnl7Wm0oKTticmVha31jYXRjaChnKXt3ZihlLGcpfXdoaWxlKCEwKTtXbygpLGhsLmN1cnJlbnQ9YSx2ZT1vLFFlIT09bnVsbD90PTA6KEplPW51bGwsWmU9MCx0PVdlKX1pZih0IT09MCl7aWYodD09PTImJihvPW9vKGUpLG8hPT0wJiYoaT1vLHQ9X2EoZSxvKSkpLHQ9PT0xKXRocm93IG49R3MsaXIoZSwwKSxNbihlLGkpLGd0KGUsQmUoKSksbjtpZih0PT09NilNbihlLGkpO2Vsc2V7aWYobz1lLmN1cnJlbnQuYWx0ZXJuYXRlLChpJjMwKT09PTAmJiFZbShvKSYmKHQ9d2woZSxpKSx0PT09MiYmKGE9b28oZSksYSE9PTAmJihpPWEsdD1fYShlLGEpKSksdD09PTEpKXRocm93IG49R3MsaXIoZSwwKSxNbihlLGkpLGd0KGUsQmUoKSksbjtzd2l0Y2goZS5maW5pc2hlZFdvcms9byxlLmZpbmlzaGVkTGFuZXM9aSx0KXtjYXNlIDA6Y2FzZSAxOnRocm93IEVycm9yKGwoMzQ1KSk7Y2FzZSAyOmxyKGUsbXQsaG4pO2JyZWFrO2Nhc2UgMzppZihNbihlLGkpLChpJjEzMDAyMzQyNCk9PT1pJiYodD1OYSs1MDAtQmUoKSwxMDx0KSl7aWYoUGkoZSwwKSE9PTApYnJlYWs7aWYobz1lLnN1c3BlbmRlZExhbmVzLChvJmkpIT09aSl7b3QoKSxlLnBpbmdlZExhbmVzfD1lLnN1c3BlbmRlZExhbmVzJm87YnJlYWt9ZS50aW1lb3V0SGFuZGxlPUlvKGxyLmJpbmQobnVsbCxlLG10LGhuKSx0KTticmVha31scihlLG10LGhuKTticmVhaztjYXNlIDQ6aWYoTW4oZSxpKSwoaSY0MTk0MjQwKT09PWkpYnJlYWs7Zm9yKHQ9ZS5ldmVudFRpbWVzLG89LTE7MDxpOyl7dmFyIGY9MzEtenQoaSk7YT0xPDxmLGY9dFtmXSxmPm8mJihvPWYpLGkmPX5hfWlmKGk9byxpPUJlKCktaSxpPSgxMjA+aT8xMjA6NDgwPmk/NDgwOjEwODA+aT8xMDgwOjE5MjA+aT8xOTIwOjNlMz5pPzNlMzo0MzIwPmk/NDMyMDoxOTYwKkptKGkvMTk2MCkpLWksMTA8aSl7ZS50aW1lb3V0SGFuZGxlPUlvKGxyLmJpbmQobnVsbCxlLG10LGhuKSxpKTticmVha31scihlLG10LGhuKTticmVhaztjYXNlIDU6bHIoZSxtdCxobik7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihsKDMyOSkpfX19cmV0dXJuIGd0KGUsQmUoKSksZS5jYWxsYmFja05vZGU9PT1uP3lmLmJpbmQobnVsbCxlKTpudWxsfWZ1bmN0aW9uIF9hKGUsdCl7dmFyIG49SnM7cmV0dXJuIGUuY3VycmVudC5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCYmKGlyKGUsdCkuZmxhZ3N8PTI1NiksZT13bChlLHQpLGUhPT0yJiYodD1tdCxtdD1uLHQhPT1udWxsJiZUYSh0KSksZX1mdW5jdGlvbiBUYShlKXttdD09PW51bGw/bXQ9ZTptdC5wdXNoLmFwcGx5KG10LGUpfWZ1bmN0aW9uIFltKGUpe2Zvcih2YXIgdD1lOzspe2lmKHQuZmxhZ3MmMTYzODQpe3ZhciBuPXQudXBkYXRlUXVldWU7aWYobiE9PW51bGwmJihuPW4uc3RvcmVzLG4hPT1udWxsKSlmb3IodmFyIGk9MDtpPG4ubGVuZ3RoO2krKyl7dmFyIG89bltpXSxhPW8uZ2V0U25hcHNob3Q7bz1vLnZhbHVlO3RyeXtpZighQXQoYSgpLG8pKXJldHVybiExfWNhdGNoe3JldHVybiExfX19aWYobj10LmNoaWxkLHQuc3VidHJlZUZsYWdzJjE2Mzg0JiZuIT09bnVsbCluLnJldHVybj10LHQ9bjtlbHNle2lmKHQ9PT1lKWJyZWFrO2Zvcig7dC5zaWJsaW5nPT09bnVsbDspe2lmKHQucmV0dXJuPT09bnVsbHx8dC5yZXR1cm49PT1lKXJldHVybiEwO3Q9dC5yZXR1cm59dC5zaWJsaW5nLnJldHVybj10LnJldHVybix0PXQuc2libGluZ319cmV0dXJuITB9ZnVuY3Rpb24gTW4oZSx0KXtmb3IodCY9fkVhLHQmPX5wbCxlLnN1c3BlbmRlZExhbmVzfD10LGUucGluZ2VkTGFuZXMmPX50LGU9ZS5leHBpcmF0aW9uVGltZXM7MDx0Oyl7dmFyIG49MzEtenQodCksaT0xPDxuO2Vbbl09LTEsdCY9fml9fWZ1bmN0aW9uIHhmKGUpe2lmKCh2ZSY2KSE9PTApdGhyb3cgRXJyb3IobCgzMjcpKTtXcigpO3ZhciB0PVBpKGUsMCk7aWYoKHQmMSk9PT0wKXJldHVybiBndChlLEJlKCkpLG51bGw7dmFyIG49d2woZSx0KTtpZihlLnRhZyE9PTAmJm49PT0yKXt2YXIgaT1vbyhlKTtpIT09MCYmKHQ9aSxuPV9hKGUsaSkpfWlmKG49PT0xKXRocm93IG49R3MsaXIoZSwwKSxNbihlLHQpLGd0KGUsQmUoKSksbjtpZihuPT09Nil0aHJvdyBFcnJvcihsKDM0NSkpO3JldHVybiBlLmZpbmlzaGVkV29yaz1lLmN1cnJlbnQuYWx0ZXJuYXRlLGUuZmluaXNoZWRMYW5lcz10LGxyKGUsbXQsaG4pLGd0KGUsQmUoKSksbnVsbH1mdW5jdGlvbiBGYShlLHQpe3ZhciBuPXZlO3ZlfD0xO3RyeXtyZXR1cm4gZSh0KX1maW5hbGx5e3ZlPW4sdmU9PT0wJiYocXI9QmUoKSs1MDAsVmkmJl9uKCkpfX1mdW5jdGlvbiBzcihlKXtPbiE9PW51bGwmJk9uLnRhZz09PTAmJih2ZSY2KT09PTAmJldyKCk7dmFyIHQ9dmU7dmV8PTE7dmFyIG49RnQudHJhbnNpdGlvbixpPWplO3RyeXtpZihGdC50cmFuc2l0aW9uPW51bGwsamU9MSxlKXJldHVybiBlKCl9ZmluYWxseXtqZT1pLEZ0LnRyYW5zaXRpb249bix2ZT10LCh2ZSY2KT09PTAmJl9uKCl9fWZ1bmN0aW9uIExhKCl7a3Q9UXIuY3VycmVudCxGZShRcil9ZnVuY3Rpb24gaXIoZSx0KXtlLmZpbmlzaGVkV29yaz1udWxsLGUuZmluaXNoZWRMYW5lcz0wO3ZhciBuPWUudGltZW91dEhhbmRsZTtpZihuIT09LTEmJihlLnRpbWVvdXRIYW5kbGU9LTEsUm0obikpLFFlIT09bnVsbClmb3Iobj1RZS5yZXR1cm47biE9PW51bGw7KXt2YXIgaT1uO3N3aXRjaChibyhpKSxpLnRhZyl7Y2FzZSAxOmk9aS50eXBlLmNoaWxkQ29udGV4dFR5cGVzLGkhPW51bGwmJnFpKCk7YnJlYWs7Y2FzZSAzOmJyKCksRmUoZnQpLEZlKGV0KSxlYSgpO2JyZWFrO2Nhc2UgNTpYbyhpKTticmVhaztjYXNlIDQ6YnIoKTticmVhaztjYXNlIDEzOkZlKE1lKTticmVhaztjYXNlIDE5OkZlKE1lKTticmVhaztjYXNlIDEwOlZvKGkudHlwZS5fY29udGV4dCk7YnJlYWs7Y2FzZSAyMjpjYXNlIDIzOkxhKCl9bj1uLnJldHVybn1pZihKZT1lLFFlPWU9em4oZS5jdXJyZW50LG51bGwpLFplPWt0PXQsV2U9MCxHcz1udWxsLEVhPXBsPXJyPTAsbXQ9SnM9bnVsbCxlciE9PW51bGwpe2Zvcih0PTA7dDxlci5sZW5ndGg7dCsrKWlmKG49ZXJbdF0saT1uLmludGVybGVhdmVkLGkhPT1udWxsKXtuLmludGVybGVhdmVkPW51bGw7dmFyIG89aS5uZXh0LGE9bi5wZW5kaW5nO2lmKGEhPT1udWxsKXt2YXIgZj1hLm5leHQ7YS5uZXh0PW8saS5uZXh0PWZ9bi5wZW5kaW5nPWl9ZXI9bnVsbH1yZXR1cm4gZX1mdW5jdGlvbiB3ZihlLHQpe2Rve3ZhciBuPVFlO3RyeXtpZihXbygpLHJsLmN1cnJlbnQ9b2wsc2wpe2Zvcih2YXIgaT16ZS5tZW1vaXplZFN0YXRlO2khPT1udWxsOyl7dmFyIG89aS5xdWV1ZTtvIT09bnVsbCYmKG8ucGVuZGluZz1udWxsKSxpPWkubmV4dH1zbD0hMX1pZihucj0wLEdlPXFlPXplPW51bGwsSHM9ITEsUXM9MCxqYS5jdXJyZW50PW51bGwsbj09PW51bGx8fG4ucmV0dXJuPT09bnVsbCl7V2U9MSxHcz10LFFlPW51bGw7YnJlYWt9ZTp7dmFyIGE9ZSxmPW4ucmV0dXJuLGc9bix3PXQ7aWYodD1aZSxnLmZsYWdzfD0zMjc2OCx3IT09bnVsbCYmdHlwZW9mIHc9PSJvYmplY3QiJiZ0eXBlb2Ygdy50aGVuPT0iZnVuY3Rpb24iKXt2YXIgRj13LHo9ZywkPXoudGFnO2lmKCh6Lm1vZGUmMSk9PT0wJiYoJD09PTB8fCQ9PT0xMXx8JD09PTE1KSl7dmFyIE09ei5hbHRlcm5hdGU7TT8oei51cGRhdGVRdWV1ZT1NLnVwZGF0ZVF1ZXVlLHoubWVtb2l6ZWRTdGF0ZT1NLm1lbW9pemVkU3RhdGUsei5sYW5lcz1NLmxhbmVzKTooei51cGRhdGVRdWV1ZT1udWxsLHoubWVtb2l6ZWRTdGF0ZT1udWxsKX12YXIgSz1RZChmKTtpZihLIT09bnVsbCl7Sy5mbGFncyY9LTI1NyxxZChLLGYsZyxhLHQpLEsubW9kZSYxJiZIZChhLEYsdCksdD1LLHc9Rjt2YXIgSj10LnVwZGF0ZVF1ZXVlO2lmKEo9PT1udWxsKXt2YXIgWD1uZXcgU2V0O1guYWRkKHcpLHQudXBkYXRlUXVldWU9WH1lbHNlIEouYWRkKHcpO2JyZWFrIGV9ZWxzZXtpZigodCYxKT09PTApe0hkKGEsRix0KSxEYSgpO2JyZWFrIGV9dz1FcnJvcihsKDQyNikpfX1lbHNlIGlmKERlJiZnLm1vZGUmMSl7dmFyIEhlPVFkKGYpO2lmKEhlIT09bnVsbCl7KEhlLmZsYWdzJjY1NTM2KT09PTAmJihIZS5mbGFnc3w9MjU2KSxxZChIZSxmLGcsYSx0KSxRbyhCcih3LGcpKTticmVhayBlfX1hPXc9QnIodyxnKSxXZSE9PTQmJihXZT0yKSxKcz09PW51bGw/SnM9W2FdOkpzLnB1c2goYSksYT1mO2Rve3N3aXRjaChhLnRhZyl7Y2FzZSAzOmEuZmxhZ3N8PTY1NTM2LHQmPS10LGEubGFuZXN8PXQ7dmFyIFI9YmQoYSx3LHQpO3BkKGEsUik7YnJlYWsgZTtjYXNlIDE6Zz13O3ZhciBrPWEudHlwZSxfPWEuc3RhdGVOb2RlO2lmKChhLmZsYWdzJjEyOCk9PT0wJiYodHlwZW9mIGsuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yPT0iZnVuY3Rpb24ifHxfIT09bnVsbCYmdHlwZW9mIF8uY29tcG9uZW50RGlkQ2F0Y2g9PSJmdW5jdGlvbiImJihEbj09PW51bGx8fCFEbi5oYXMoXykpKSl7YS5mbGFnc3w9NjU1MzYsdCY9LXQsYS5sYW5lc3w9dDt2YXIgQj1CZChhLGcsdCk7cGQoYSxCKTticmVhayBlfX1hPWEucmV0dXJufXdoaWxlKGEhPT1udWxsKX1DZihuKX1jYXRjaChlZSl7dD1lZSxRZT09PW4mJm4hPT1udWxsJiYoUWU9bj1uLnJldHVybik7Y29udGludWV9YnJlYWt9d2hpbGUoITApfWZ1bmN0aW9uIFNmKCl7dmFyIGU9aGwuY3VycmVudDtyZXR1cm4gaGwuY3VycmVudD1vbCxlPT09bnVsbD9vbDplfWZ1bmN0aW9uIERhKCl7KFdlPT09MHx8V2U9PT0zfHxXZT09PTIpJiYoV2U9NCksSmU9PT1udWxsfHwocnImMjY4NDM1NDU1KT09PTAmJihwbCYyNjg0MzU0NTUpPT09MHx8TW4oSmUsWmUpfWZ1bmN0aW9uIHdsKGUsdCl7dmFyIG49dmU7dmV8PTI7dmFyIGk9U2YoKTsoSmUhPT1lfHxaZSE9PXQpJiYoaG49bnVsbCxpcihlLHQpKTtkbyB0cnl7WG0oKTticmVha31jYXRjaChvKXt3ZihlLG8pfXdoaWxlKCEwKTtpZihXbygpLHZlPW4saGwuY3VycmVudD1pLFFlIT09bnVsbCl0aHJvdyBFcnJvcihsKDI2MSkpO3JldHVybiBKZT1udWxsLFplPTAsV2V9ZnVuY3Rpb24gWG0oKXtmb3IoO1FlIT09bnVsbDspa2YoUWUpfWZ1bmN0aW9uIFptKCl7Zm9yKDtRZSE9PW51bGwmJiFqcCgpOylrZihRZSl9ZnVuY3Rpb24ga2YoZSl7dmFyIHQ9TmYoZS5hbHRlcm5hdGUsZSxrdCk7ZS5tZW1vaXplZFByb3BzPWUucGVuZGluZ1Byb3BzLHQ9PT1udWxsP0NmKGUpOlFlPXQsamEuY3VycmVudD1udWxsfWZ1bmN0aW9uIENmKGUpe3ZhciB0PWU7ZG97dmFyIG49dC5hbHRlcm5hdGU7aWYoZT10LnJldHVybiwodC5mbGFncyYzMjc2OCk9PT0wKXtpZihuPXFtKG4sdCxrdCksbiE9PW51bGwpe1FlPW47cmV0dXJufX1lbHNle2lmKG49V20obix0KSxuIT09bnVsbCl7bi5mbGFncyY9MzI3NjcsUWU9bjtyZXR1cm59aWYoZSE9PW51bGwpZS5mbGFnc3w9MzI3NjgsZS5zdWJ0cmVlRmxhZ3M9MCxlLmRlbGV0aW9ucz1udWxsO2Vsc2V7V2U9NixRZT1udWxsO3JldHVybn19aWYodD10LnNpYmxpbmcsdCE9PW51bGwpe1FlPXQ7cmV0dXJufVFlPXQ9ZX13aGlsZSh0IT09bnVsbCk7V2U9PT0wJiYoV2U9NSl9ZnVuY3Rpb24gbHIoZSx0LG4pe3ZhciBpPWplLG89RnQudHJhbnNpdGlvbjt0cnl7RnQudHJhbnNpdGlvbj1udWxsLGplPTEsZWcoZSx0LG4saSl9ZmluYWxseXtGdC50cmFuc2l0aW9uPW8samU9aX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBlZyhlLHQsbixpKXtkbyBXcigpO3doaWxlKE9uIT09bnVsbCk7aWYoKHZlJjYpIT09MCl0aHJvdyBFcnJvcihsKDMyNykpO249ZS5maW5pc2hlZFdvcms7dmFyIG89ZS5maW5pc2hlZExhbmVzO2lmKG49PT1udWxsKXJldHVybiBudWxsO2lmKGUuZmluaXNoZWRXb3JrPW51bGwsZS5maW5pc2hlZExhbmVzPTAsbj09PWUuY3VycmVudCl0aHJvdyBFcnJvcihsKDE3NykpO2UuY2FsbGJhY2tOb2RlPW51bGwsZS5jYWxsYmFja1ByaW9yaXR5PTA7dmFyIGE9bi5sYW5lc3xuLmNoaWxkTGFuZXM7aWYoT3AoZSxhKSxlPT09SmUmJihRZT1KZT1udWxsLFplPTApLChuLnN1YnRyZWVGbGFncyYyMDY0KT09PTAmJihuLmZsYWdzJjIwNjQpPT09MHx8Z2x8fChnbD0hMCxSZihqaSxmdW5jdGlvbigpe3JldHVybiBXcigpLG51bGx9KSksYT0obi5mbGFncyYxNTk5MCkhPT0wLChuLnN1YnRyZWVGbGFncyYxNTk5MCkhPT0wfHxhKXthPUZ0LnRyYW5zaXRpb24sRnQudHJhbnNpdGlvbj1udWxsO3ZhciBmPWplO2plPTE7dmFyIGc9dmU7dmV8PTQsamEuY3VycmVudD1udWxsLEttKGUsbiksaGYobixlKSx3bShEbyksRmk9ISFMbyxEbz1Mbz1udWxsLGUuY3VycmVudD1uLEdtKG4pLEVwKCksdmU9ZyxqZT1mLEZ0LnRyYW5zaXRpb249YX1lbHNlIGUuY3VycmVudD1uO2lmKGdsJiYoZ2w9ITEsT249ZSx2bD1vKSxhPWUucGVuZGluZ0xhbmVzLGE9PT0wJiYoRG49bnVsbCksUHAobi5zdGF0ZU5vZGUpLGd0KGUsQmUoKSksdCE9PW51bGwpZm9yKGk9ZS5vblJlY292ZXJhYmxlRXJyb3Isbj0wO248dC5sZW5ndGg7bisrKW89dFtuXSxpKG8udmFsdWUse2NvbXBvbmVudFN0YWNrOm8uc3RhY2ssZGlnZXN0Om8uZGlnZXN0fSk7aWYobWwpdGhyb3cgbWw9ITEsZT1SYSxSYT1udWxsLGU7cmV0dXJuKHZsJjEpIT09MCYmZS50YWchPT0wJiZXcigpLGE9ZS5wZW5kaW5nTGFuZXMsKGEmMSkhPT0wP2U9PT1QYT9ZcysrOihZcz0wLFBhPWUpOllzPTAsX24oKSxudWxsfWZ1bmN0aW9uIFdyKCl7aWYoT24hPT1udWxsKXt2YXIgZT1jYyh2bCksdD1GdC50cmFuc2l0aW9uLG49amU7dHJ5e2lmKEZ0LnRyYW5zaXRpb249bnVsbCxqZT0xNj5lPzE2OmUsT249PT1udWxsKXZhciBpPSExO2Vsc2V7aWYoZT1PbixPbj1udWxsLHZsPTAsKHZlJjYpIT09MCl0aHJvdyBFcnJvcihsKDMzMSkpO3ZhciBvPXZlO2Zvcih2ZXw9NCxHPWUuY3VycmVudDtHIT09bnVsbDspe3ZhciBhPUcsZj1hLmNoaWxkO2lmKChHLmZsYWdzJjE2KSE9PTApe3ZhciBnPWEuZGVsZXRpb25zO2lmKGchPT1udWxsKXtmb3IodmFyIHc9MDt3PGcubGVuZ3RoO3crKyl7dmFyIEY9Z1t3XTtmb3IoRz1GO0chPT1udWxsOyl7dmFyIHo9Rztzd2l0Y2goei50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6S3MoOCx6LGEpfXZhciAkPXouY2hpbGQ7aWYoJCE9PW51bGwpJC5yZXR1cm49eixHPSQ7ZWxzZSBmb3IoO0chPT1udWxsOyl7ej1HO3ZhciBNPXouc2libGluZyxLPXoucmV0dXJuO2lmKGFmKHopLHo9PT1GKXtHPW51bGw7YnJlYWt9aWYoTSE9PW51bGwpe00ucmV0dXJuPUssRz1NO2JyZWFrfUc9S319fXZhciBKPWEuYWx0ZXJuYXRlO2lmKEohPT1udWxsKXt2YXIgWD1KLmNoaWxkO2lmKFghPT1udWxsKXtKLmNoaWxkPW51bGw7ZG97dmFyIEhlPVguc2libGluZztYLnNpYmxpbmc9bnVsbCxYPUhlfXdoaWxlKFghPT1udWxsKX19Rz1hfX1pZigoYS5zdWJ0cmVlRmxhZ3MmMjA2NCkhPT0wJiZmIT09bnVsbClmLnJldHVybj1hLEc9ZjtlbHNlIGU6Zm9yKDtHIT09bnVsbDspe2lmKGE9RywoYS5mbGFncyYyMDQ4KSE9PTApc3dpdGNoKGEudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OktzKDksYSxhLnJldHVybil9dmFyIFI9YS5zaWJsaW5nO2lmKFIhPT1udWxsKXtSLnJldHVybj1hLnJldHVybixHPVI7YnJlYWsgZX1HPWEucmV0dXJufX12YXIgaz1lLmN1cnJlbnQ7Zm9yKEc9aztHIT09bnVsbDspe2Y9Rzt2YXIgXz1mLmNoaWxkO2lmKChmLnN1YnRyZWVGbGFncyYyMDY0KSE9PTAmJl8hPT1udWxsKV8ucmV0dXJuPWYsRz1fO2Vsc2UgZTpmb3IoZj1rO0chPT1udWxsOyl7aWYoZz1HLChnLmZsYWdzJjIwNDgpIT09MCl0cnl7c3dpdGNoKGcudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OmZsKDksZyl9fWNhdGNoKGVlKXtVZShnLGcucmV0dXJuLGVlKX1pZihnPT09Zil7Rz1udWxsO2JyZWFrIGV9dmFyIEI9Zy5zaWJsaW5nO2lmKEIhPT1udWxsKXtCLnJldHVybj1nLnJldHVybixHPUI7YnJlYWsgZX1HPWcucmV0dXJufX1pZih2ZT1vLF9uKCksSnQmJnR5cGVvZiBKdC5vblBvc3RDb21taXRGaWJlclJvb3Q9PSJmdW5jdGlvbiIpdHJ5e0p0Lm9uUG9zdENvbW1pdEZpYmVyUm9vdChFaSxlKX1jYXRjaHt9aT0hMH1yZXR1cm4gaX1maW5hbGx5e2plPW4sRnQudHJhbnNpdGlvbj10fX1yZXR1cm4hMX1mdW5jdGlvbiBqZihlLHQsbil7dD1CcihuLHQpLHQ9YmQoZSx0LDEpLGU9Rm4oZSx0LDEpLHQ9b3QoKSxlIT09bnVsbCYmKFNzKGUsMSx0KSxndChlLHQpKX1mdW5jdGlvbiBVZShlLHQsbil7aWYoZS50YWc9PT0zKWpmKGUsZSxuKTtlbHNlIGZvcig7dCE9PW51bGw7KXtpZih0LnRhZz09PTMpe2pmKHQsZSxuKTticmVha31lbHNlIGlmKHQudGFnPT09MSl7dmFyIGk9dC5zdGF0ZU5vZGU7aWYodHlwZW9mIHQudHlwZS5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3I9PSJmdW5jdGlvbiJ8fHR5cGVvZiBpLmNvbXBvbmVudERpZENhdGNoPT0iZnVuY3Rpb24iJiYoRG49PT1udWxsfHwhRG4uaGFzKGkpKSl7ZT1CcihuLGUpLGU9QmQodCxlLDEpLHQ9Rm4odCxlLDEpLGU9b3QoKSx0IT09bnVsbCYmKFNzKHQsMSxlKSxndCh0LGUpKTticmVha319dD10LnJldHVybn19ZnVuY3Rpb24gdGcoZSx0LG4pe3ZhciBpPWUucGluZ0NhY2hlO2khPT1udWxsJiZpLmRlbGV0ZSh0KSx0PW90KCksZS5waW5nZWRMYW5lc3w9ZS5zdXNwZW5kZWRMYW5lcyZuLEplPT09ZSYmKFplJm4pPT09biYmKFdlPT09NHx8V2U9PT0zJiYoWmUmMTMwMDIzNDI0KT09PVplJiY1MDA+QmUoKS1OYT9pcihlLDApOkVhfD1uKSxndChlLHQpfWZ1bmN0aW9uIEVmKGUsdCl7dD09PTAmJigoZS5tb2RlJjEpPT09MD90PTE6KHQ9UmksUmk8PD0xLChSaSYxMzAwMjM0MjQpPT09MCYmKFJpPTQxOTQzMDQpKSk7dmFyIG49b3QoKTtlPWNuKGUsdCksZSE9PW51bGwmJihTcyhlLHQsbiksZ3QoZSxuKSl9ZnVuY3Rpb24gbmcoZSl7dmFyIHQ9ZS5tZW1vaXplZFN0YXRlLG49MDt0IT09bnVsbCYmKG49dC5yZXRyeUxhbmUpLEVmKGUsbil9ZnVuY3Rpb24gcmcoZSx0KXt2YXIgbj0wO3N3aXRjaChlLnRhZyl7Y2FzZSAxMzp2YXIgaT1lLnN0YXRlTm9kZSxvPWUubWVtb2l6ZWRTdGF0ZTtvIT09bnVsbCYmKG49by5yZXRyeUxhbmUpO2JyZWFrO2Nhc2UgMTk6aT1lLnN0YXRlTm9kZTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKGwoMzE0KSl9aSE9PW51bGwmJmkuZGVsZXRlKHQpLEVmKGUsbil9dmFyIE5mO05mPWZ1bmN0aW9uKGUsdCxuKXtpZihlIT09bnVsbClpZihlLm1lbW9pemVkUHJvcHMhPT10LnBlbmRpbmdQcm9wc3x8ZnQuY3VycmVudClwdD0hMDtlbHNle2lmKChlLmxhbmVzJm4pPT09MCYmKHQuZmxhZ3MmMTI4KT09PTApcmV0dXJuIHB0PSExLFFtKGUsdCxuKTtwdD0oZS5mbGFncyYxMzEwNzIpIT09MH1lbHNlIHB0PSExLERlJiYodC5mbGFncyYxMDQ4NTc2KSE9PTAmJnNkKHQsR2ksdC5pbmRleCk7c3dpdGNoKHQubGFuZXM9MCx0LnRhZyl7Y2FzZSAyOnZhciBpPXQudHlwZTtjbChlLHQpLGU9dC5wZW5kaW5nUHJvcHM7dmFyIG89T3IodCxldC5jdXJyZW50KTtVcih0LG4pLG89cmEobnVsbCx0LGksZSxvLG4pO3ZhciBhPXNhKCk7cmV0dXJuIHQuZmxhZ3N8PTEsdHlwZW9mIG89PSJvYmplY3QiJiZvIT09bnVsbCYmdHlwZW9mIG8ucmVuZGVyPT0iZnVuY3Rpb24iJiZvLiQkdHlwZW9mPT09dm9pZCAwPyh0LnRhZz0xLHQubWVtb2l6ZWRTdGF0ZT1udWxsLHQudXBkYXRlUXVldWU9bnVsbCxodChpKT8oYT0hMCxXaSh0KSk6YT0hMSx0Lm1lbW9pemVkU3RhdGU9by5zdGF0ZSE9PW51bGwmJm8uc3RhdGUhPT12b2lkIDA/by5zdGF0ZTpudWxsLEpvKHQpLG8udXBkYXRlcj1hbCx0LnN0YXRlTm9kZT1vLG8uX3JlYWN0SW50ZXJuYWxzPXQsY2EodCxpLGUsbiksdD1wYShudWxsLHQsaSwhMCxhLG4pKToodC50YWc9MCxEZSYmYSYmVW8odCksbHQobnVsbCx0LG8sbiksdD10LmNoaWxkKSx0O2Nhc2UgMTY6aT10LmVsZW1lbnRUeXBlO2U6e3N3aXRjaChjbChlLHQpLGU9dC5wZW5kaW5nUHJvcHMsbz1pLl9pbml0LGk9byhpLl9wYXlsb2FkKSx0LnR5cGU9aSxvPXQudGFnPWlnKGkpLGU9VXQoaSxlKSxvKXtjYXNlIDA6dD1oYShudWxsLHQsaSxlLG4pO2JyZWFrIGU7Y2FzZSAxOnQ9WWQobnVsbCx0LGksZSxuKTticmVhayBlO2Nhc2UgMTE6dD1XZChudWxsLHQsaSxlLG4pO2JyZWFrIGU7Y2FzZSAxNDp0PVZkKG51bGwsdCxpLFV0KGkudHlwZSxlKSxuKTticmVhayBlfXRocm93IEVycm9yKGwoMzA2LGksIiIpKX1yZXR1cm4gdDtjYXNlIDA6cmV0dXJuIGk9dC50eXBlLG89dC5wZW5kaW5nUHJvcHMsbz10LmVsZW1lbnRUeXBlPT09aT9vOlV0KGksbyksaGEoZSx0LGksbyxuKTtjYXNlIDE6cmV0dXJuIGk9dC50eXBlLG89dC5wZW5kaW5nUHJvcHMsbz10LmVsZW1lbnRUeXBlPT09aT9vOlV0KGksbyksWWQoZSx0LGksbyxuKTtjYXNlIDM6ZTp7aWYoWGQodCksZT09PW51bGwpdGhyb3cgRXJyb3IobCgzODcpKTtpPXQucGVuZGluZ1Byb3BzLGE9dC5tZW1vaXplZFN0YXRlLG89YS5lbGVtZW50LGhkKGUsdCksdGwodCxpLG51bGwsbik7dmFyIGY9dC5tZW1vaXplZFN0YXRlO2lmKGk9Zi5lbGVtZW50LGEuaXNEZWh5ZHJhdGVkKWlmKGE9e2VsZW1lbnQ6aSxpc0RlaHlkcmF0ZWQ6ITEsY2FjaGU6Zi5jYWNoZSxwZW5kaW5nU3VzcGVuc2VCb3VuZGFyaWVzOmYucGVuZGluZ1N1c3BlbnNlQm91bmRhcmllcyx0cmFuc2l0aW9uczpmLnRyYW5zaXRpb25zfSx0LnVwZGF0ZVF1ZXVlLmJhc2VTdGF0ZT1hLHQubWVtb2l6ZWRTdGF0ZT1hLHQuZmxhZ3MmMjU2KXtvPUJyKEVycm9yKGwoNDIzKSksdCksdD1aZChlLHQsaSxuLG8pO2JyZWFrIGV9ZWxzZSBpZihpIT09byl7bz1CcihFcnJvcihsKDQyNCkpLHQpLHQ9WmQoZSx0LGksbixvKTticmVhayBlfWVsc2UgZm9yKFN0PU5uKHQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8uZmlyc3RDaGlsZCksd3Q9dCxEZT0hMCwkdD1udWxsLG49ZGQodCxudWxsLGksbiksdC5jaGlsZD1uO247KW4uZmxhZ3M9bi5mbGFncyYtM3w0MDk2LG49bi5zaWJsaW5nO2Vsc2V7aWYoenIoKSxpPT09byl7dD1mbihlLHQsbik7YnJlYWsgZX1sdChlLHQsaSxuKX10PXQuY2hpbGR9cmV0dXJuIHQ7Y2FzZSA1OnJldHVybiBnZCh0KSxlPT09bnVsbCYmSG8odCksaT10LnR5cGUsbz10LnBlbmRpbmdQcm9wcyxhPWUhPT1udWxsP2UubWVtb2l6ZWRQcm9wczpudWxsLGY9by5jaGlsZHJlbixPbyhpLG8pP2Y9bnVsbDphIT09bnVsbCYmT28oaSxhKSYmKHQuZmxhZ3N8PTMyKSxKZChlLHQpLGx0KGUsdCxmLG4pLHQuY2hpbGQ7Y2FzZSA2OnJldHVybiBlPT09bnVsbCYmSG8odCksbnVsbDtjYXNlIDEzOnJldHVybiBlZihlLHQsbik7Y2FzZSA0OnJldHVybiBZbyh0LHQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pLGk9dC5wZW5kaW5nUHJvcHMsZT09PW51bGw/dC5jaGlsZD1Bcih0LG51bGwsaSxuKTpsdChlLHQsaSxuKSx0LmNoaWxkO2Nhc2UgMTE6cmV0dXJuIGk9dC50eXBlLG89dC5wZW5kaW5nUHJvcHMsbz10LmVsZW1lbnRUeXBlPT09aT9vOlV0KGksbyksV2QoZSx0LGksbyxuKTtjYXNlIDc6cmV0dXJuIGx0KGUsdCx0LnBlbmRpbmdQcm9wcyxuKSx0LmNoaWxkO2Nhc2UgODpyZXR1cm4gbHQoZSx0LHQucGVuZGluZ1Byb3BzLmNoaWxkcmVuLG4pLHQuY2hpbGQ7Y2FzZSAxMjpyZXR1cm4gbHQoZSx0LHQucGVuZGluZ1Byb3BzLmNoaWxkcmVuLG4pLHQuY2hpbGQ7Y2FzZSAxMDplOntpZihpPXQudHlwZS5fY29udGV4dCxvPXQucGVuZGluZ1Byb3BzLGE9dC5tZW1vaXplZFByb3BzLGY9by52YWx1ZSxQZShYaSxpLl9jdXJyZW50VmFsdWUpLGkuX2N1cnJlbnRWYWx1ZT1mLGEhPT1udWxsKWlmKEF0KGEudmFsdWUsZikpe2lmKGEuY2hpbGRyZW49PT1vLmNoaWxkcmVuJiYhZnQuY3VycmVudCl7dD1mbihlLHQsbik7YnJlYWsgZX19ZWxzZSBmb3IoYT10LmNoaWxkLGEhPT1udWxsJiYoYS5yZXR1cm49dCk7YSE9PW51bGw7KXt2YXIgZz1hLmRlcGVuZGVuY2llcztpZihnIT09bnVsbCl7Zj1hLmNoaWxkO2Zvcih2YXIgdz1nLmZpcnN0Q29udGV4dDt3IT09bnVsbDspe2lmKHcuY29udGV4dD09PWkpe2lmKGEudGFnPT09MSl7dz1kbigtMSxuJi1uKSx3LnRhZz0yO3ZhciBGPWEudXBkYXRlUXVldWU7aWYoRiE9PW51bGwpe0Y9Ri5zaGFyZWQ7dmFyIHo9Ri5wZW5kaW5nO3o9PT1udWxsP3cubmV4dD13Oih3Lm5leHQ9ei5uZXh0LHoubmV4dD13KSxGLnBlbmRpbmc9d319YS5sYW5lc3w9bix3PWEuYWx0ZXJuYXRlLHchPT1udWxsJiYody5sYW5lc3w9biksS28oYS5yZXR1cm4sbix0KSxnLmxhbmVzfD1uO2JyZWFrfXc9dy5uZXh0fX1lbHNlIGlmKGEudGFnPT09MTApZj1hLnR5cGU9PT10LnR5cGU/bnVsbDphLmNoaWxkO2Vsc2UgaWYoYS50YWc9PT0xOCl7aWYoZj1hLnJldHVybixmPT09bnVsbCl0aHJvdyBFcnJvcihsKDM0MSkpO2YubGFuZXN8PW4sZz1mLmFsdGVybmF0ZSxnIT09bnVsbCYmKGcubGFuZXN8PW4pLEtvKGYsbix0KSxmPWEuc2libGluZ31lbHNlIGY9YS5jaGlsZDtpZihmIT09bnVsbClmLnJldHVybj1hO2Vsc2UgZm9yKGY9YTtmIT09bnVsbDspe2lmKGY9PT10KXtmPW51bGw7YnJlYWt9aWYoYT1mLnNpYmxpbmcsYSE9PW51bGwpe2EucmV0dXJuPWYucmV0dXJuLGY9YTticmVha31mPWYucmV0dXJufWE9Zn1sdChlLHQsby5jaGlsZHJlbixuKSx0PXQuY2hpbGR9cmV0dXJuIHQ7Y2FzZSA5OnJldHVybiBvPXQudHlwZSxpPXQucGVuZGluZ1Byb3BzLmNoaWxkcmVuLFVyKHQsbiksbz1fdChvKSxpPWkobyksdC5mbGFnc3w9MSxsdChlLHQsaSxuKSx0LmNoaWxkO2Nhc2UgMTQ6cmV0dXJuIGk9dC50eXBlLG89VXQoaSx0LnBlbmRpbmdQcm9wcyksbz1VdChpLnR5cGUsbyksVmQoZSx0LGksbyxuKTtjYXNlIDE1OnJldHVybiBLZChlLHQsdC50eXBlLHQucGVuZGluZ1Byb3BzLG4pO2Nhc2UgMTc6cmV0dXJuIGk9dC50eXBlLG89dC5wZW5kaW5nUHJvcHMsbz10LmVsZW1lbnRUeXBlPT09aT9vOlV0KGksbyksY2woZSx0KSx0LnRhZz0xLGh0KGkpPyhlPSEwLFdpKHQpKTplPSExLFVyKHQsbiksJGQodCxpLG8pLGNhKHQsaSxvLG4pLHBhKG51bGwsdCxpLCEwLGUsbik7Y2FzZSAxOTpyZXR1cm4gbmYoZSx0LG4pO2Nhc2UgMjI6cmV0dXJuIEdkKGUsdCxuKX10aHJvdyBFcnJvcihsKDE1Nix0LnRhZykpfTtmdW5jdGlvbiBSZihlLHQpe3JldHVybiBpYyhlLHQpfWZ1bmN0aW9uIHNnKGUsdCxuLGkpe3RoaXMudGFnPWUsdGhpcy5rZXk9bix0aGlzLnNpYmxpbmc9dGhpcy5jaGlsZD10aGlzLnJldHVybj10aGlzLnN0YXRlTm9kZT10aGlzLnR5cGU9dGhpcy5lbGVtZW50VHlwZT1udWxsLHRoaXMuaW5kZXg9MCx0aGlzLnJlZj1udWxsLHRoaXMucGVuZGluZ1Byb3BzPXQsdGhpcy5kZXBlbmRlbmNpZXM9dGhpcy5tZW1vaXplZFN0YXRlPXRoaXMudXBkYXRlUXVldWU9dGhpcy5tZW1vaXplZFByb3BzPW51bGwsdGhpcy5tb2RlPWksdGhpcy5zdWJ0cmVlRmxhZ3M9dGhpcy5mbGFncz0wLHRoaXMuZGVsZXRpb25zPW51bGwsdGhpcy5jaGlsZExhbmVzPXRoaXMubGFuZXM9MCx0aGlzLmFsdGVybmF0ZT1udWxsfWZ1bmN0aW9uIEx0KGUsdCxuLGkpe3JldHVybiBuZXcgc2coZSx0LG4saSl9ZnVuY3Rpb24gT2EoZSl7cmV0dXJuIGU9ZS5wcm90b3R5cGUsISghZXx8IWUuaXNSZWFjdENvbXBvbmVudCl9ZnVuY3Rpb24gaWcoZSl7aWYodHlwZW9mIGU9PSJmdW5jdGlvbiIpcmV0dXJuIE9hKGUpPzE6MDtpZihlIT1udWxsKXtpZihlPWUuJCR0eXBlb2YsZT09PSRlKXJldHVybiAxMTtpZihlPT09c2UpcmV0dXJuIDE0fXJldHVybiAyfWZ1bmN0aW9uIHpuKGUsdCl7dmFyIG49ZS5hbHRlcm5hdGU7cmV0dXJuIG49PT1udWxsPyhuPUx0KGUudGFnLHQsZS5rZXksZS5tb2RlKSxuLmVsZW1lbnRUeXBlPWUuZWxlbWVudFR5cGUsbi50eXBlPWUudHlwZSxuLnN0YXRlTm9kZT1lLnN0YXRlTm9kZSxuLmFsdGVybmF0ZT1lLGUuYWx0ZXJuYXRlPW4pOihuLnBlbmRpbmdQcm9wcz10LG4udHlwZT1lLnR5cGUsbi5mbGFncz0wLG4uc3VidHJlZUZsYWdzPTAsbi5kZWxldGlvbnM9bnVsbCksbi5mbGFncz1lLmZsYWdzJjE0NjgwMDY0LG4uY2hpbGRMYW5lcz1lLmNoaWxkTGFuZXMsbi5sYW5lcz1lLmxhbmVzLG4uY2hpbGQ9ZS5jaGlsZCxuLm1lbW9pemVkUHJvcHM9ZS5tZW1vaXplZFByb3BzLG4ubWVtb2l6ZWRTdGF0ZT1lLm1lbW9pemVkU3RhdGUsbi51cGRhdGVRdWV1ZT1lLnVwZGF0ZVF1ZXVlLHQ9ZS5kZXBlbmRlbmNpZXMsbi5kZXBlbmRlbmNpZXM9dD09PW51bGw/bnVsbDp7bGFuZXM6dC5sYW5lcyxmaXJzdENvbnRleHQ6dC5maXJzdENvbnRleHR9LG4uc2libGluZz1lLnNpYmxpbmcsbi5pbmRleD1lLmluZGV4LG4ucmVmPWUucmVmLG59ZnVuY3Rpb24gU2woZSx0LG4saSxvLGEpe3ZhciBmPTI7aWYoaT1lLHR5cGVvZiBlPT0iZnVuY3Rpb24iKU9hKGUpJiYoZj0xKTtlbHNlIGlmKHR5cGVvZiBlPT0ic3RyaW5nIilmPTU7ZWxzZSBlOnN3aXRjaChlKXtjYXNlIHRlOnJldHVybiBvcihuLmNoaWxkcmVuLG8sYSx0KTtjYXNlIG9lOmY9OCxvfD04O2JyZWFrO2Nhc2UgdWU6cmV0dXJuIGU9THQoMTIsbix0LG98MiksZS5lbGVtZW50VHlwZT11ZSxlLmxhbmVzPWEsZTtjYXNlIF9lOnJldHVybiBlPUx0KDEzLG4sdCxvKSxlLmVsZW1lbnRUeXBlPV9lLGUubGFuZXM9YSxlO2Nhc2UgWjpyZXR1cm4gZT1MdCgxOSxuLHQsbyksZS5lbGVtZW50VHlwZT1aLGUubGFuZXM9YSxlO2Nhc2UgRWU6cmV0dXJuIGtsKG4sbyxhLHQpO2RlZmF1bHQ6aWYodHlwZW9mIGU9PSJvYmplY3QiJiZlIT09bnVsbClzd2l0Y2goZS4kJHR5cGVvZil7Y2FzZSBoZTpmPTEwO2JyZWFrIGU7Y2FzZSBiZTpmPTk7YnJlYWsgZTtjYXNlICRlOmY9MTE7YnJlYWsgZTtjYXNlIHNlOmY9MTQ7YnJlYWsgZTtjYXNlIFNlOmY9MTYsaT1udWxsO2JyZWFrIGV9dGhyb3cgRXJyb3IobCgxMzAsZT09bnVsbD9lOnR5cGVvZiBlLCIiKSl9cmV0dXJuIHQ9THQoZixuLHQsbyksdC5lbGVtZW50VHlwZT1lLHQudHlwZT1pLHQubGFuZXM9YSx0fWZ1bmN0aW9uIG9yKGUsdCxuLGkpe3JldHVybiBlPUx0KDcsZSxpLHQpLGUubGFuZXM9bixlfWZ1bmN0aW9uIGtsKGUsdCxuLGkpe3JldHVybiBlPUx0KDIyLGUsaSx0KSxlLmVsZW1lbnRUeXBlPUVlLGUubGFuZXM9bixlLnN0YXRlTm9kZT17aXNIaWRkZW46ITF9LGV9ZnVuY3Rpb24gSWEoZSx0LG4pe3JldHVybiBlPUx0KDYsZSxudWxsLHQpLGUubGFuZXM9bixlfWZ1bmN0aW9uIE1hKGUsdCxuKXtyZXR1cm4gdD1MdCg0LGUuY2hpbGRyZW4hPT1udWxsP2UuY2hpbGRyZW46W10sZS5rZXksdCksdC5sYW5lcz1uLHQuc3RhdGVOb2RlPXtjb250YWluZXJJbmZvOmUuY29udGFpbmVySW5mbyxwZW5kaW5nQ2hpbGRyZW46bnVsbCxpbXBsZW1lbnRhdGlvbjplLmltcGxlbWVudGF0aW9ufSx0fWZ1bmN0aW9uIGxnKGUsdCxuLGksbyl7dGhpcy50YWc9dCx0aGlzLmNvbnRhaW5lckluZm89ZSx0aGlzLmZpbmlzaGVkV29yaz10aGlzLnBpbmdDYWNoZT10aGlzLmN1cnJlbnQ9dGhpcy5wZW5kaW5nQ2hpbGRyZW49bnVsbCx0aGlzLnRpbWVvdXRIYW5kbGU9LTEsdGhpcy5jYWxsYmFja05vZGU9dGhpcy5wZW5kaW5nQ29udGV4dD10aGlzLmNvbnRleHQ9bnVsbCx0aGlzLmNhbGxiYWNrUHJpb3JpdHk9MCx0aGlzLmV2ZW50VGltZXM9YW8oMCksdGhpcy5leHBpcmF0aW9uVGltZXM9YW8oLTEpLHRoaXMuZW50YW5nbGVkTGFuZXM9dGhpcy5maW5pc2hlZExhbmVzPXRoaXMubXV0YWJsZVJlYWRMYW5lcz10aGlzLmV4cGlyZWRMYW5lcz10aGlzLnBpbmdlZExhbmVzPXRoaXMuc3VzcGVuZGVkTGFuZXM9dGhpcy5wZW5kaW5nTGFuZXM9MCx0aGlzLmVudGFuZ2xlbWVudHM9YW8oMCksdGhpcy5pZGVudGlmaWVyUHJlZml4PWksdGhpcy5vblJlY292ZXJhYmxlRXJyb3I9byx0aGlzLm11dGFibGVTb3VyY2VFYWdlckh5ZHJhdGlvbkRhdGE9bnVsbH1mdW5jdGlvbiB6YShlLHQsbixpLG8sYSxmLGcsdyl7cmV0dXJuIGU9bmV3IGxnKGUsdCxuLGcsdyksdD09PTE/KHQ9MSxhPT09ITAmJih0fD04KSk6dD0wLGE9THQoMyxudWxsLG51bGwsdCksZS5jdXJyZW50PWEsYS5zdGF0ZU5vZGU9ZSxhLm1lbW9pemVkU3RhdGU9e2VsZW1lbnQ6aSxpc0RlaHlkcmF0ZWQ6bixjYWNoZTpudWxsLHRyYW5zaXRpb25zOm51bGwscGVuZGluZ1N1c3BlbnNlQm91bmRhcmllczpudWxsfSxKbyhhKSxlfWZ1bmN0aW9uIG9nKGUsdCxuKXt2YXIgaT0zPGFyZ3VtZW50cy5sZW5ndGgmJmFyZ3VtZW50c1szXSE9PXZvaWQgMD9hcmd1bWVudHNbM106bnVsbDtyZXR1cm57JCR0eXBlb2Y6cmUsa2V5Omk9PW51bGw/bnVsbDoiIitpLGNoaWxkcmVuOmUsY29udGFpbmVySW5mbzp0LGltcGxlbWVudGF0aW9uOm59fWZ1bmN0aW9uIFBmKGUpe2lmKCFlKXJldHVybiBQbjtlPWUuX3JlYWN0SW50ZXJuYWxzO2U6e2lmKEduKGUpIT09ZXx8ZS50YWchPT0xKXRocm93IEVycm9yKGwoMTcwKSk7dmFyIHQ9ZTtkb3tzd2l0Y2godC50YWcpe2Nhc2UgMzp0PXQuc3RhdGVOb2RlLmNvbnRleHQ7YnJlYWsgZTtjYXNlIDE6aWYoaHQodC50eXBlKSl7dD10LnN0YXRlTm9kZS5fX3JlYWN0SW50ZXJuYWxNZW1vaXplZE1lcmdlZENoaWxkQ29udGV4dDticmVhayBlfX10PXQucmV0dXJufXdoaWxlKHQhPT1udWxsKTt0aHJvdyBFcnJvcihsKDE3MSkpfWlmKGUudGFnPT09MSl7dmFyIG49ZS50eXBlO2lmKGh0KG4pKXJldHVybiB0ZChlLG4sdCl9cmV0dXJuIHR9ZnVuY3Rpb24gX2YoZSx0LG4saSxvLGEsZixnLHcpe3JldHVybiBlPXphKG4saSwhMCxlLG8sYSxmLGcsdyksZS5jb250ZXh0PVBmKG51bGwpLG49ZS5jdXJyZW50LGk9b3QoKSxvPUluKG4pLGE9ZG4oaSxvKSxhLmNhbGxiYWNrPXQ/P251bGwsRm4obixhLG8pLGUuY3VycmVudC5sYW5lcz1vLFNzKGUsbyxpKSxndChlLGkpLGV9ZnVuY3Rpb24gQ2woZSx0LG4saSl7dmFyIG89dC5jdXJyZW50LGE9b3QoKSxmPUluKG8pO3JldHVybiBuPVBmKG4pLHQuY29udGV4dD09PW51bGw/dC5jb250ZXh0PW46dC5wZW5kaW5nQ29udGV4dD1uLHQ9ZG4oYSxmKSx0LnBheWxvYWQ9e2VsZW1lbnQ6ZX0saT1pPT09dm9pZCAwP251bGw6aSxpIT09bnVsbCYmKHQuY2FsbGJhY2s9aSksZT1GbihvLHQsZiksZSE9PW51bGwmJihIdChlLG8sZixhKSxlbChlLG8sZikpLGZ9ZnVuY3Rpb24gamwoZSl7aWYoZT1lLmN1cnJlbnQsIWUuY2hpbGQpcmV0dXJuIG51bGw7c3dpdGNoKGUuY2hpbGQudGFnKXtjYXNlIDU6cmV0dXJuIGUuY2hpbGQuc3RhdGVOb2RlO2RlZmF1bHQ6cmV0dXJuIGUuY2hpbGQuc3RhdGVOb2RlfX1mdW5jdGlvbiBUZihlLHQpe2lmKGU9ZS5tZW1vaXplZFN0YXRlLGUhPT1udWxsJiZlLmRlaHlkcmF0ZWQhPT1udWxsKXt2YXIgbj1lLnJldHJ5TGFuZTtlLnJldHJ5TGFuZT1uIT09MCYmbjx0P246dH19ZnVuY3Rpb24gQWEoZSx0KXtUZihlLHQpLChlPWUuYWx0ZXJuYXRlKSYmVGYoZSx0KX1mdW5jdGlvbiBhZygpe3JldHVybiBudWxsfXZhciBGZj10eXBlb2YgcmVwb3J0RXJyb3I9PSJmdW5jdGlvbiI/cmVwb3J0RXJyb3I6ZnVuY3Rpb24oZSl7Y29uc29sZS5lcnJvcihlKX07ZnVuY3Rpb24gJGEoZSl7dGhpcy5faW50ZXJuYWxSb290PWV9RWwucHJvdG90eXBlLnJlbmRlcj0kYS5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2ludGVybmFsUm9vdDtpZih0PT09bnVsbCl0aHJvdyBFcnJvcihsKDQwOSkpO0NsKGUsdCxudWxsLG51bGwpfSxFbC5wcm90b3R5cGUudW5tb3VudD0kYS5wcm90b3R5cGUudW5tb3VudD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2ludGVybmFsUm9vdDtpZihlIT09bnVsbCl7dGhpcy5faW50ZXJuYWxSb290PW51bGw7dmFyIHQ9ZS5jb250YWluZXJJbmZvO3NyKGZ1bmN0aW9uKCl7Q2wobnVsbCxlLG51bGwsbnVsbCl9KSx0W2xuXT1udWxsfX07ZnVuY3Rpb24gRWwoZSl7dGhpcy5faW50ZXJuYWxSb290PWV9RWwucHJvdG90eXBlLnVuc3RhYmxlX3NjaGVkdWxlSHlkcmF0aW9uPWZ1bmN0aW9uKGUpe2lmKGUpe3ZhciB0PWhjKCk7ZT17YmxvY2tlZE9uOm51bGwsdGFyZ2V0OmUscHJpb3JpdHk6dH07Zm9yKHZhciBuPTA7bjxDbi5sZW5ndGgmJnQhPT0wJiZ0PENuW25dLnByaW9yaXR5O24rKyk7Q24uc3BsaWNlKG4sMCxlKSxuPT09MCYmZ2MoZSl9fTtmdW5jdGlvbiBVYShlKXtyZXR1cm4hKCFlfHxlLm5vZGVUeXBlIT09MSYmZS5ub2RlVHlwZSE9PTkmJmUubm9kZVR5cGUhPT0xMSl9ZnVuY3Rpb24gTmwoZSl7cmV0dXJuISghZXx8ZS5ub2RlVHlwZSE9PTEmJmUubm9kZVR5cGUhPT05JiZlLm5vZGVUeXBlIT09MTEmJihlLm5vZGVUeXBlIT09OHx8ZS5ub2RlVmFsdWUhPT0iIHJlYWN0LW1vdW50LXBvaW50LXVuc3RhYmxlICIpKX1mdW5jdGlvbiBMZigpe31mdW5jdGlvbiB1ZyhlLHQsbixpLG8pe2lmKG8pe2lmKHR5cGVvZiBpPT0iZnVuY3Rpb24iKXt2YXIgYT1pO2k9ZnVuY3Rpb24oKXt2YXIgRj1qbChmKTthLmNhbGwoRil9fXZhciBmPV9mKHQsaSxlLDAsbnVsbCwhMSwhMSwiIixMZik7cmV0dXJuIGUuX3JlYWN0Um9vdENvbnRhaW5lcj1mLGVbbG5dPWYuY3VycmVudCxJcyhlLm5vZGVUeXBlPT09OD9lLnBhcmVudE5vZGU6ZSksc3IoKSxmfWZvcig7bz1lLmxhc3RDaGlsZDspZS5yZW1vdmVDaGlsZChvKTtpZih0eXBlb2YgaT09ImZ1bmN0aW9uIil7dmFyIGc9aTtpPWZ1bmN0aW9uKCl7dmFyIEY9amwodyk7Zy5jYWxsKEYpfX12YXIgdz16YShlLDAsITEsbnVsbCxudWxsLCExLCExLCIiLExmKTtyZXR1cm4gZS5fcmVhY3RSb290Q29udGFpbmVyPXcsZVtsbl09dy5jdXJyZW50LElzKGUubm9kZVR5cGU9PT04P2UucGFyZW50Tm9kZTplKSxzcihmdW5jdGlvbigpe0NsKHQsdyxuLGkpfSksd31mdW5jdGlvbiBSbChlLHQsbixpLG8pe3ZhciBhPW4uX3JlYWN0Um9vdENvbnRhaW5lcjtpZihhKXt2YXIgZj1hO2lmKHR5cGVvZiBvPT0iZnVuY3Rpb24iKXt2YXIgZz1vO289ZnVuY3Rpb24oKXt2YXIgdz1qbChmKTtnLmNhbGwodyl9fUNsKHQsZixlLG8pfWVsc2UgZj11ZyhuLHQsZSxvLGkpO3JldHVybiBqbChmKX1kYz1mdW5jdGlvbihlKXtzd2l0Y2goZS50YWcpe2Nhc2UgMzp2YXIgdD1lLnN0YXRlTm9kZTtpZih0LmN1cnJlbnQubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQpe3ZhciBuPXdzKHQucGVuZGluZ0xhbmVzKTtuIT09MCYmKHVvKHQsbnwxKSxndCh0LEJlKCkpLCh2ZSY2KT09PTAmJihxcj1CZSgpKzUwMCxfbigpKSl9YnJlYWs7Y2FzZSAxMzpzcihmdW5jdGlvbigpe3ZhciBpPWNuKGUsMSk7aWYoaSE9PW51bGwpe3ZhciBvPW90KCk7SHQoaSxlLDEsbyl9fSksQWEoZSwxKX19LGNvPWZ1bmN0aW9uKGUpe2lmKGUudGFnPT09MTMpe3ZhciB0PWNuKGUsMTM0MjE3NzI4KTtpZih0IT09bnVsbCl7dmFyIG49b3QoKTtIdCh0LGUsMTM0MjE3NzI4LG4pfUFhKGUsMTM0MjE3NzI4KX19LGZjPWZ1bmN0aW9uKGUpe2lmKGUudGFnPT09MTMpe3ZhciB0PUluKGUpLG49Y24oZSx0KTtpZihuIT09bnVsbCl7dmFyIGk9b3QoKTtIdChuLGUsdCxpKX1BYShlLHQpfX0saGM9ZnVuY3Rpb24oKXtyZXR1cm4gamV9LHBjPWZ1bmN0aW9uKGUsdCl7dmFyIG49amU7dHJ5e3JldHVybiBqZT1lLHQoKX1maW5hbGx5e2plPW59fSxubz1mdW5jdGlvbihlLHQsbil7c3dpdGNoKHQpe2Nhc2UiaW5wdXQiOmlmKEtsKGUsbiksdD1uLm5hbWUsbi50eXBlPT09InJhZGlvIiYmdCE9bnVsbCl7Zm9yKG49ZTtuLnBhcmVudE5vZGU7KW49bi5wYXJlbnROb2RlO2ZvcihuPW4ucXVlcnlTZWxlY3RvckFsbCgiaW5wdXRbbmFtZT0iK0pTT04uc3RyaW5naWZ5KCIiK3QpKyddW3R5cGU9InJhZGlvIl0nKSx0PTA7dDxuLmxlbmd0aDt0Kyspe3ZhciBpPW5bdF07aWYoaSE9PWUmJmkuZm9ybT09PWUuZm9ybSl7dmFyIG89UWkoaSk7aWYoIW8pdGhyb3cgRXJyb3IobCg5MCkpO0F1KGkpLEtsKGksbyl9fX1icmVhaztjYXNlInRleHRhcmVhIjpIdShlLG4pO2JyZWFrO2Nhc2Uic2VsZWN0Ijp0PW4udmFsdWUsdCE9bnVsbCYma3IoZSwhIW4ubXVsdGlwbGUsdCwhMSl9fSxYdT1GYSxadT1zcjt2YXIgY2c9e3VzaW5nQ2xpZW50RW50cnlQb2ludDohMSxFdmVudHM6W0FzLExyLFFpLEp1LFl1LEZhXX0sWHM9e2ZpbmRGaWJlckJ5SG9zdEluc3RhbmNlOkpuLGJ1bmRsZVR5cGU6MCx2ZXJzaW9uOiIxOC4zLjEiLHJlbmRlcmVyUGFja2FnZU5hbWU6InJlYWN0LWRvbSJ9LGRnPXtidW5kbGVUeXBlOlhzLmJ1bmRsZVR5cGUsdmVyc2lvbjpYcy52ZXJzaW9uLHJlbmRlcmVyUGFja2FnZU5hbWU6WHMucmVuZGVyZXJQYWNrYWdlTmFtZSxyZW5kZXJlckNvbmZpZzpYcy5yZW5kZXJlckNvbmZpZyxvdmVycmlkZUhvb2tTdGF0ZTpudWxsLG92ZXJyaWRlSG9va1N0YXRlRGVsZXRlUGF0aDpudWxsLG92ZXJyaWRlSG9va1N0YXRlUmVuYW1lUGF0aDpudWxsLG92ZXJyaWRlUHJvcHM6bnVsbCxvdmVycmlkZVByb3BzRGVsZXRlUGF0aDpudWxsLG92ZXJyaWRlUHJvcHNSZW5hbWVQYXRoOm51bGwsc2V0RXJyb3JIYW5kbGVyOm51bGwsc2V0U3VzcGVuc2VIYW5kbGVyOm51bGwsc2NoZWR1bGVVcGRhdGU6bnVsbCxjdXJyZW50RGlzcGF0Y2hlclJlZjpWLlJlYWN0Q3VycmVudERpc3BhdGNoZXIsZmluZEhvc3RJbnN0YW5jZUJ5RmliZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9cmMoZSksZT09PW51bGw/bnVsbDplLnN0YXRlTm9kZX0sZmluZEZpYmVyQnlIb3N0SW5zdGFuY2U6WHMuZmluZEZpYmVyQnlIb3N0SW5zdGFuY2V8fGFnLGZpbmRIb3N0SW5zdGFuY2VzRm9yUmVmcmVzaDpudWxsLHNjaGVkdWxlUmVmcmVzaDpudWxsLHNjaGVkdWxlUm9vdDpudWxsLHNldFJlZnJlc2hIYW5kbGVyOm51bGwsZ2V0Q3VycmVudEZpYmVyOm51bGwscmVjb25jaWxlclZlcnNpb246IjE4LjMuMS1uZXh0LWYxMzM4ZjgwODAtMjAyNDA0MjYifTtpZih0eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fPCJ1Iil7dmFyIFBsPV9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXztpZighUGwuaXNEaXNhYmxlZCYmUGwuc3VwcG9ydHNGaWJlcil0cnl7RWk9UGwuaW5qZWN0KGRnKSxKdD1QbH1jYXRjaHt9fXJldHVybiB2dC5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRD1jZyx2dC5jcmVhdGVQb3J0YWw9ZnVuY3Rpb24oZSx0KXt2YXIgbj0yPGFyZ3VtZW50cy5sZW5ndGgmJmFyZ3VtZW50c1syXSE9PXZvaWQgMD9hcmd1bWVudHNbMl06bnVsbDtpZighVWEodCkpdGhyb3cgRXJyb3IobCgyMDApKTtyZXR1cm4gb2coZSx0LG51bGwsbil9LHZ0LmNyZWF0ZVJvb3Q9ZnVuY3Rpb24oZSx0KXtpZighVWEoZSkpdGhyb3cgRXJyb3IobCgyOTkpKTt2YXIgbj0hMSxpPSIiLG89RmY7cmV0dXJuIHQhPW51bGwmJih0LnVuc3RhYmxlX3N0cmljdE1vZGU9PT0hMCYmKG49ITApLHQuaWRlbnRpZmllclByZWZpeCE9PXZvaWQgMCYmKGk9dC5pZGVudGlmaWVyUHJlZml4KSx0Lm9uUmVjb3ZlcmFibGVFcnJvciE9PXZvaWQgMCYmKG89dC5vblJlY292ZXJhYmxlRXJyb3IpKSx0PXphKGUsMSwhMSxudWxsLG51bGwsbiwhMSxpLG8pLGVbbG5dPXQuY3VycmVudCxJcyhlLm5vZGVUeXBlPT09OD9lLnBhcmVudE5vZGU6ZSksbmV3ICRhKHQpfSx2dC5maW5kRE9NTm9kZT1mdW5jdGlvbihlKXtpZihlPT1udWxsKXJldHVybiBudWxsO2lmKGUubm9kZVR5cGU9PT0xKXJldHVybiBlO3ZhciB0PWUuX3JlYWN0SW50ZXJuYWxzO2lmKHQ9PT12b2lkIDApdGhyb3cgdHlwZW9mIGUucmVuZGVyPT0iZnVuY3Rpb24iP0Vycm9yKGwoMTg4KSk6KGU9T2JqZWN0LmtleXMoZSkuam9pbigiLCIpLEVycm9yKGwoMjY4LGUpKSk7cmV0dXJuIGU9cmModCksZT1lPT09bnVsbD9udWxsOmUuc3RhdGVOb2RlLGV9LHZ0LmZsdXNoU3luYz1mdW5jdGlvbihlKXtyZXR1cm4gc3IoZSl9LHZ0Lmh5ZHJhdGU9ZnVuY3Rpb24oZSx0LG4pe2lmKCFObCh0KSl0aHJvdyBFcnJvcihsKDIwMCkpO3JldHVybiBSbChudWxsLGUsdCwhMCxuKX0sdnQuaHlkcmF0ZVJvb3Q9ZnVuY3Rpb24oZSx0LG4pe2lmKCFVYShlKSl0aHJvdyBFcnJvcihsKDQwNSkpO3ZhciBpPW4hPW51bGwmJm4uaHlkcmF0ZWRTb3VyY2VzfHxudWxsLG89ITEsYT0iIixmPUZmO2lmKG4hPW51bGwmJihuLnVuc3RhYmxlX3N0cmljdE1vZGU9PT0hMCYmKG89ITApLG4uaWRlbnRpZmllclByZWZpeCE9PXZvaWQgMCYmKGE9bi5pZGVudGlmaWVyUHJlZml4KSxuLm9uUmVjb3ZlcmFibGVFcnJvciE9PXZvaWQgMCYmKGY9bi5vblJlY292ZXJhYmxlRXJyb3IpKSx0PV9mKHQsbnVsbCxlLDEsbj8/bnVsbCxvLCExLGEsZiksZVtsbl09dC5jdXJyZW50LElzKGUpLGkpZm9yKGU9MDtlPGkubGVuZ3RoO2UrKyluPWlbZV0sbz1uLl9nZXRWZXJzaW9uLG89byhuLl9zb3VyY2UpLHQubXV0YWJsZVNvdXJjZUVhZ2VySHlkcmF0aW9uRGF0YT09bnVsbD90Lm11dGFibGVTb3VyY2VFYWdlckh5ZHJhdGlvbkRhdGE9W24sb106dC5tdXRhYmxlU291cmNlRWFnZXJIeWRyYXRpb25EYXRhLnB1c2gobixvKTtyZXR1cm4gbmV3IEVsKHQpfSx2dC5yZW5kZXI9ZnVuY3Rpb24oZSx0LG4pe2lmKCFObCh0KSl0aHJvdyBFcnJvcihsKDIwMCkpO3JldHVybiBSbChudWxsLGUsdCwhMSxuKX0sdnQudW5tb3VudENvbXBvbmVudEF0Tm9kZT1mdW5jdGlvbihlKXtpZighTmwoZSkpdGhyb3cgRXJyb3IobCg0MCkpO3JldHVybiBlLl9yZWFjdFJvb3RDb250YWluZXI/KHNyKGZ1bmN0aW9uKCl7UmwobnVsbCxudWxsLGUsITEsZnVuY3Rpb24oKXtlLl9yZWFjdFJvb3RDb250YWluZXI9bnVsbCxlW2xuXT1udWxsfSl9KSwhMCk6ITF9LHZ0LnVuc3RhYmxlX2JhdGNoZWRVcGRhdGVzPUZhLHZ0LnVuc3RhYmxlX3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyPWZ1bmN0aW9uKGUsdCxuLGkpe2lmKCFObChuKSl0aHJvdyBFcnJvcihsKDIwMCkpO2lmKGU9PW51bGx8fGUuX3JlYWN0SW50ZXJuYWxzPT09dm9pZCAwKXRocm93IEVycm9yKGwoMzgpKTtyZXR1cm4gUmwoZSx0LG4sITEsaSl9LHZ0LnZlcnNpb249IjE4LjMuMS1uZXh0LWYxMzM4ZjgwODAtMjAyNDA0MjYiLHZ0fXZhciBiZjtmdW5jdGlvbiB3Zygpe2lmKGJmKXJldHVybiBRYS5leHBvcnRzO2JmPTE7ZnVuY3Rpb24gcigpe2lmKCEodHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXz4idSJ8fHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uY2hlY2tEQ0UhPSJmdW5jdGlvbiIpKXRyeXtfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uY2hlY2tEQ0Uocil9Y2F0Y2gocyl7Y29uc29sZS5lcnJvcihzKX19cmV0dXJuIHIoKSxRYS5leHBvcnRzPXhnKCksUWEuZXhwb3J0c312YXIgQmY7ZnVuY3Rpb24gU2coKXtpZihCZilyZXR1cm4gVGw7QmY9MTt2YXIgcj13ZygpO3JldHVybiBUbC5jcmVhdGVSb290PXIuY3JlYXRlUm9vdCxUbC5oeWRyYXRlUm9vdD1yLmh5ZHJhdGVSb290LFRsfXZhciBrZz1TZygpO2NvbnN0IENnPVNoKGtnKTsvKioKICogcmVhY3Qtcm91dGVyIHY3LjE4LjQKICoKICogQ29weXJpZ2h0IChjKSBSZW1peCBTb2Z0d2FyZSBJbmMuCiAqCiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZQogKiBMSUNFTlNFLm1kIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuCiAqCiAqIEBsaWNlbnNlIE1JVAogKi92YXIga3U9L14oPzpbYS16XVthLXowLTkrLi1dKjp8W1xcL117Mn0pL2ksa2g9L15bXFwvXXsyfS87ZnVuY3Rpb24gamcocixzKXtyZXR1cm4gcytyLnJlcGxhY2UoL1xcL2csIi8iKX12YXIgSGY9InBvcHN0YXRlIjtmdW5jdGlvbiBRZihyKXtyZXR1cm4gdHlwZW9mIHI9PSJvYmplY3QiJiZyIT1udWxsJiYicGF0aG5hbWUiaW4gciYmInNlYXJjaCJpbiByJiYiaGFzaCJpbiByJiYic3RhdGUiaW4gciYmImtleSJpbiByfWZ1bmN0aW9uIEVnKHI9e30pe2Z1bmN0aW9uIHModSxkKXt2YXIgUztsZXQgaD0oUz1kLnN0YXRlKT09bnVsbD92b2lkIDA6Uy5tYXNrZWQse3BhdGhuYW1lOnAsc2VhcmNoOm0saGFzaDp2fT1ofHx1LmxvY2F0aW9uO3JldHVybiB0dSgiIix7cGF0aG5hbWU6cCxzZWFyY2g6bSxoYXNoOnZ9LGQuc3RhdGUmJmQuc3RhdGUudXNyfHxudWxsLGQuc3RhdGUmJmQuc3RhdGUua2V5fHwiZGVmYXVsdCIsaD97cGF0aG5hbWU6dS5sb2NhdGlvbi5wYXRobmFtZSxzZWFyY2g6dS5sb2NhdGlvbi5zZWFyY2gsaGFzaDp1LmxvY2F0aW9uLmhhc2h9OnZvaWQgMCl9ZnVuY3Rpb24gbCh1LGQpe3JldHVybiB0eXBlb2YgZD09InN0cmluZyI/ZDp5cihkKX1yZXR1cm4gUmcocyxsLG51bGwscil9ZnVuY3Rpb24gSWUocixzKXtpZihyPT09ITF8fHI9PT1udWxsfHx0eXBlb2Ygcj4idSIpdGhyb3cgbmV3IEVycm9yKHMpfWZ1bmN0aW9uIE10KHIscyl7aWYoIXIpe3R5cGVvZiBjb25zb2xlPCJ1IiYmY29uc29sZS53YXJuKHMpO3RyeXt0aHJvdyBuZXcgRXJyb3Iocyl9Y2F0Y2h7fX19ZnVuY3Rpb24gTmcoKXtyZXR1cm4gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsMTApfWZ1bmN0aW9uIHFmKHIscyl7cmV0dXJue3VzcjpyLnN0YXRlLGtleTpyLmtleSxpZHg6cyxtYXNrZWQ6ci5tYXNrP3twYXRobmFtZTpyLnBhdGhuYW1lLHNlYXJjaDpyLnNlYXJjaCxoYXNoOnIuaGFzaH06dm9pZCAwfX1mdW5jdGlvbiB0dShyLHMsbD1udWxsLHUsZCl7cmV0dXJue3BhdGhuYW1lOnR5cGVvZiByPT0ic3RyaW5nIj9yOnIucGF0aG5hbWUsc2VhcmNoOiIiLGhhc2g6IiIsLi4udHlwZW9mIHM9PSJzdHJpbmciP3VzKHMpOnMsc3RhdGU6bCxrZXk6cyYmcy5rZXl8fHV8fE5nKCksbWFzazpkfX1mdW5jdGlvbiB5cih7cGF0aG5hbWU6cj0iLyIsc2VhcmNoOnM9IiIsaGFzaDpsPSIifSl7cmV0dXJuIHMmJnMhPT0iPyImJihyKz1zLmNoYXJBdCgwKT09PSI/Ij9zOiI/IitzKSxsJiZsIT09IiMiJiYocis9bC5jaGFyQXQoMCk9PT0iIyI/bDoiIyIrbCkscn1mdW5jdGlvbiB1cyhyKXtsZXQgcz17fTtpZihyKXtsZXQgbD1yLmluZGV4T2YoIiMiKTtsPj0wJiYocy5oYXNoPXIuc3Vic3RyaW5nKGwpLHI9ci5zdWJzdHJpbmcoMCxsKSk7bGV0IHU9ci5pbmRleE9mKCI/Iik7dT49MCYmKHMuc2VhcmNoPXIuc3Vic3RyaW5nKHUpLHI9ci5zdWJzdHJpbmcoMCx1KSksciYmKHMucGF0aG5hbWU9cil9cmV0dXJuIHN9ZnVuY3Rpb24gUmcocixzLGwsdT17fSl7bGV0e3dpbmRvdzpkPWRvY3VtZW50LmRlZmF1bHRWaWV3LHY1Q29tcGF0Omg9ITF9PXUscD1kLmhpc3RvcnksbT0iUE9QIix2PW51bGwsUz1FKCk7Uz09bnVsbCYmKFM9MCxwLnJlcGxhY2VTdGF0ZSh7Li4ucC5zdGF0ZSxpZHg6U30sIiIpKTtmdW5jdGlvbiBFKCl7cmV0dXJuKHAuc3RhdGV8fHtpZHg6bnVsbH0pLmlkeH1mdW5jdGlvbiB4KCl7bT0iUE9QIjtsZXQgUD1FKCksVT1QPT1udWxsP251bGw6UC1TO1M9UCx2JiZ2KHthY3Rpb246bSxsb2NhdGlvbjpMLmxvY2F0aW9uLGRlbHRhOlV9KX1mdW5jdGlvbiBUKFAsVSl7bT0iUFVTSCI7bGV0IFE9UWYoUCk/UDp0dShMLmxvY2F0aW9uLFAsVSk7Uz1FKCkrMTtsZXQgYj1xZihRLFMpLFY9TC5jcmVhdGVIcmVmKFEubWFza3x8USk7dHJ5e3AucHVzaFN0YXRlKGIsIiIsVil9Y2F0Y2goSCl7aWYoSCBpbnN0YW5jZW9mIERPTUV4Y2VwdGlvbiYmSC5uYW1lPT09IkRhdGFDbG9uZUVycm9yIil0aHJvdyBIO2QubG9jYXRpb24uYXNzaWduKFYpfWgmJnYmJnYoe2FjdGlvbjptLGxvY2F0aW9uOkwubG9jYXRpb24sZGVsdGE6MX0pfWZ1bmN0aW9uIE8oUCxVKXttPSJSRVBMQUNFIjtsZXQgUT1RZihQKT9QOnR1KEwubG9jYXRpb24sUCxVKTtTPUUoKTtsZXQgYj1xZihRLFMpLFY9TC5jcmVhdGVIcmVmKFEubWFza3x8USk7cC5yZXBsYWNlU3RhdGUoYiwiIixWKSxoJiZ2JiZ2KHthY3Rpb246bSxsb2NhdGlvbjpMLmxvY2F0aW9uLGRlbHRhOjB9KX1mdW5jdGlvbiBBKFApe3JldHVybiBQZyhkLFApfWxldCBMPXtnZXQgYWN0aW9uKCl7cmV0dXJuIG19LGdldCBsb2NhdGlvbigpe3JldHVybiByKGQscCl9LGxpc3RlbihQKXtpZih2KXRocm93IG5ldyBFcnJvcigiQSBoaXN0b3J5IG9ubHkgYWNjZXB0cyBvbmUgYWN0aXZlIGxpc3RlbmVyIik7cmV0dXJuIGQuYWRkRXZlbnRMaXN0ZW5lcihIZix4KSx2PVAsKCk9PntkLnJlbW92ZUV2ZW50TGlzdGVuZXIoSGYseCksdj1udWxsfX0sY3JlYXRlSHJlZihQKXtyZXR1cm4gcyhkLFApfSxjcmVhdGVVUkw6QSxlbmNvZGVMb2NhdGlvbihQKXtsZXQgVT1BKFApO3JldHVybntwYXRobmFtZTpVLnBhdGhuYW1lLHNlYXJjaDpVLnNlYXJjaCxoYXNoOlUuaGFzaH19LHB1c2g6VCxyZXBsYWNlOk8sZ28oUCl7cmV0dXJuIHAuZ28oUCl9fTtyZXR1cm4gTH1mdW5jdGlvbiBQZyhyLHMsbD0hMSl7bGV0IHU9Imh0dHA6Ly9sb2NhbGhvc3QiO3ImJih1PXIubG9jYXRpb24ub3JpZ2luIT09Im51bGwiP3IubG9jYXRpb24ub3JpZ2luOnIubG9jYXRpb24uaHJlZiksSWUodSwiTm8gd2luZG93LmxvY2F0aW9uLihvcmlnaW58aHJlZikgYXZhaWxhYmxlIHRvIGNyZWF0ZSBVUkwiKTtsZXQgZD10eXBlb2Ygcz09InN0cmluZyI/czp5cihzKTtyZXR1cm4gZD1kLnJlcGxhY2UoLyAkLywiJTIwIiksIWwmJmtoLnRlc3QoZCkmJihkPXUrZCksbmV3IFVSTChkLHUpfWZ1bmN0aW9uIENoKHIscyxsPSIvIil7cmV0dXJuIF9nKHIscyxsLCExKX1mdW5jdGlvbiBfZyhyLHMsbCx1LGQpe2xldCBoPXR5cGVvZiBzPT0ic3RyaW5nIj91cyhzKTpzLHA9eG4oaC5wYXRobmFtZXx8Ii8iLGwpO2lmKHA9PW51bGwpcmV0dXJuIG51bGw7bGV0IG09VGcociksdj1udWxsLFM9YmcocCk7Zm9yKGxldCBFPTA7dj09bnVsbCYmRTxtLmxlbmd0aDsrK0Updj1VZyhtW0VdLFMsdSk7cmV0dXJuIHZ9ZnVuY3Rpb24gVGcocil7bGV0IHM9amgocik7cmV0dXJuIEZnKHMpLHN9ZnVuY3Rpb24gamgocixzPVtdLGw9W10sdT0iIixkPSExKXtsZXQgaD0ocCxtLHY9ZCxTKT0+e2xldCBFPXtyZWxhdGl2ZVBhdGg6Uz09PXZvaWQgMD9wLnBhdGh8fCIiOlMsY2FzZVNlbnNpdGl2ZTpwLmNhc2VTZW5zaXRpdmU9PT0hMCxjaGlsZHJlbkluZGV4Om0scm91dGU6cH07aWYoRS5yZWxhdGl2ZVBhdGguc3RhcnRzV2l0aCgiLyIpKXtpZighRS5yZWxhdGl2ZVBhdGguc3RhcnRzV2l0aCh1KSYmdilyZXR1cm47SWUoRS5yZWxhdGl2ZVBhdGguc3RhcnRzV2l0aCh1KSxgQWJzb2x1dGUgcm91dGUgcGF0aCAiJHtFLnJlbGF0aXZlUGF0aH0iIG5lc3RlZCB1bmRlciBwYXRoICIke3V9IiBpcyBub3QgdmFsaWQuIEFuIGFic29sdXRlIGNoaWxkIHJvdXRlIHBhdGggbXVzdCBzdGFydCB3aXRoIHRoZSBjb21iaW5lZCBwYXRoIG9mIGFsbCBpdHMgcGFyZW50IHJvdXRlcy5gKSxFLnJlbGF0aXZlUGF0aD1FLnJlbGF0aXZlUGF0aC5zbGljZSh1Lmxlbmd0aCl9bGV0IHg9V3QoW3UsRS5yZWxhdGl2ZVBhdGhdKSxUPWwuY29uY2F0KEUpO3AuY2hpbGRyZW4mJnAuY2hpbGRyZW4ubGVuZ3RoPjAmJihJZShwLmluZGV4IT09ITAsYEluZGV4IHJvdXRlcyBtdXN0IG5vdCBoYXZlIGNoaWxkIHJvdXRlcy4gUGxlYXNlIHJlbW92ZSBhbGwgY2hpbGQgcm91dGVzIGZyb20gcm91dGUgcGF0aCAiJHt4fSIuYCksamgocC5jaGlsZHJlbixzLFQseCx2KSksIShwLnBhdGg9PW51bGwmJiFwLmluZGV4KSYmcy5wdXNoKHtwYXRoOngsc2NvcmU6QWcoeCxwLmluZGV4KSxyb3V0ZXNNZXRhOlQubWFwKChPLEEpPT57bGV0W0wsUF09UmgoTy5yZWxhdGl2ZVBhdGgsTy5jYXNlU2Vuc2l0aXZlLEE9PT1ULmxlbmd0aC0xKTtyZXR1cm57Li4uTyxtYXRjaGVyOkwsY29tcGlsZWRQYXJhbXM6UH19KX0pfTtyZXR1cm4gci5mb3JFYWNoKChwLG0pPT57dmFyIHY7aWYocC5wYXRoPT09IiJ8fCEoKHY9cC5wYXRoKSE9bnVsbCYmdi5pbmNsdWRlcygiPyIpKSloKHAsbSk7ZWxzZSBmb3IobGV0IFMgb2YgRWgocC5wYXRoKSloKHAsbSwhMCxTKX0pLHN9ZnVuY3Rpb24gRWgocil7bGV0IHM9ci5zcGxpdCgiLyIpO2lmKHMubGVuZ3RoPT09MClyZXR1cm5bXTtsZXRbbCwuLi51XT1zLGQ9bC5lbmRzV2l0aCgiPyIpLGg9bC5yZXBsYWNlKC9cPyQvLCIiKTtpZih1Lmxlbmd0aD09PTApcmV0dXJuIGQ/W2gsIiJdOltoXTtsZXQgcD1FaCh1LmpvaW4oIi8iKSksbT1bXTtyZXR1cm4gbS5wdXNoKC4uLnAubWFwKHY9PnY9PT0iIj9oOltoLHZdLmpvaW4oIi8iKSkpLGQmJm0ucHVzaCguLi5wKSxtLm1hcCh2PT5yLnN0YXJ0c1dpdGgoIi8iKSYmdj09PSIiPyIvIjp2KX1mdW5jdGlvbiBGZyhyKXtyLnNvcnQoKHMsbCk9PnMuc2NvcmUhPT1sLnNjb3JlP2wuc2NvcmUtcy5zY29yZTokZyhzLnJvdXRlc01ldGEubWFwKHU9PnUuY2hpbGRyZW5JbmRleCksbC5yb3V0ZXNNZXRhLm1hcCh1PT51LmNoaWxkcmVuSW5kZXgpKSl9dmFyIExnPS9eOltcdy1dKyQvLERnPTMsT2c9MixJZz0xLE1nPTEwLHpnPS0yLFdmPXI9PnI9PT0iKiI7ZnVuY3Rpb24gQWcocixzKXtsZXQgbD1yLnNwbGl0KCIvIiksdT1sLmxlbmd0aDtyZXR1cm4gbC5zb21lKFdmKSYmKHUrPXpnKSxzJiYodSs9T2cpLGwuZmlsdGVyKGQ9PiFXZihkKSkucmVkdWNlKChkLGgpPT5kKyhMZy50ZXN0KGgpP0RnOmg9PT0iIj9JZzpNZyksdSl9ZnVuY3Rpb24gJGcocixzKXtyZXR1cm4gci5sZW5ndGg9PT1zLmxlbmd0aCYmci5zbGljZSgwLC0xKS5ldmVyeSgodSxkKT0+dT09PXNbZF0pP3Jbci5sZW5ndGgtMV0tc1tzLmxlbmd0aC0xXTowfWZ1bmN0aW9uIFVnKHIscyxsPSExKXtsZXR7cm91dGVzTWV0YTp1fT1yLGQ9e30saD0iLyIscD1bXTtmb3IobGV0IG09MDttPHUubGVuZ3RoOysrbSl7bGV0IHY9dVttXSxTPW09PT11Lmxlbmd0aC0xLEU9aD09PSIvIj9zOnMuc2xpY2UoaC5sZW5ndGgpfHwiLyIseD17cGF0aDp2LnJlbGF0aXZlUGF0aCxjYXNlU2Vuc2l0aXZlOnYuY2FzZVNlbnNpdGl2ZSxlbmQ6U30sVD12Lm1hdGNoZXImJnYuY29tcGlsZWRQYXJhbXM/TmgoeCxFLHYubWF0Y2hlcix2LmNvbXBpbGVkUGFyYW1zKTp6bCh4LEUpLE89di5yb3V0ZTtpZighVCYmUyYmbCYmIXVbdS5sZW5ndGgtMV0ucm91dGUuaW5kZXgmJihUPXpsKHtwYXRoOnYucmVsYXRpdmVQYXRoLGNhc2VTZW5zaXRpdmU6di5jYXNlU2Vuc2l0aXZlLGVuZDohMX0sRSkpLCFUKXJldHVybiBudWxsO09iamVjdC5hc3NpZ24oZCxULnBhcmFtcykscC5wdXNoKHtwYXJhbXM6ZCxwYXRobmFtZTpXdChbaCxULnBhdGhuYW1lXSkscGF0aG5hbWVCYXNlOlFnKFd0KFtoLFQucGF0aG5hbWVCYXNlXSkpLHJvdXRlOk99KSxULnBhdGhuYW1lQmFzZSE9PSIvIiYmKGg9V3QoW2gsVC5wYXRobmFtZUJhc2VdKSl9cmV0dXJuIHB9ZnVuY3Rpb24gemwocixzKXt0eXBlb2Ygcj09InN0cmluZyImJihyPXtwYXRoOnIsY2FzZVNlbnNpdGl2ZTohMSxlbmQ6ITB9KTtsZXRbbCx1XT1SaChyLnBhdGgsci5jYXNlU2Vuc2l0aXZlLHIuZW5kKTtyZXR1cm4gTmgocixzLGwsdSl9ZnVuY3Rpb24gTmgocixzLGwsdSl7bGV0IGQ9cy5tYXRjaChsKTtpZighZClyZXR1cm4gbnVsbDtsZXQgaD1kWzBdLHA9b3MoaCwxKSxtPWQuc2xpY2UoMSk7cmV0dXJue3BhcmFtczp1LnJlZHVjZSgoUyx7cGFyYW1OYW1lOkUsaXNPcHRpb25hbDp4fSxUKT0+e2lmKEU9PT0iKiIpe2xldCBBPW1bVF18fCIiO3A9b3MoaC5zbGljZSgwLGgubGVuZ3RoLUEubGVuZ3RoKSwxKX1jb25zdCBPPW1bVF07cmV0dXJuIHgmJiFPP1NbRV09dm9pZCAwOlNbRV09KE98fCIiKS5yZXBsYWNlKC8lMkYvZywiLyIpLFN9LHt9KSxwYXRobmFtZTpoLHBhdGhuYW1lQmFzZTpwLHBhdHRlcm46cn19ZnVuY3Rpb24gUmgocixzPSExLGw9ITApe010KHI9PT0iKiJ8fCFyLmVuZHNXaXRoKCIqIil8fHIuZW5kc1dpdGgoIi8qIiksYFJvdXRlIHBhdGggIiR7cn0iIHdpbGwgYmUgdHJlYXRlZCBhcyBpZiBpdCB3ZXJlICIke3IucmVwbGFjZSgvXCokLywiLyoiKX0iIGJlY2F1c2UgdGhlIFxgKlxgIGNoYXJhY3RlciBtdXN0IGFsd2F5cyBmb2xsb3cgYSBcYC9cYCBpbiB0aGUgcGF0dGVybi4gVG8gZ2V0IHJpZCBvZiB0aGlzIHdhcm5pbmcsIHBsZWFzZSBjaGFuZ2UgdGhlIHJvdXRlIHBhdGggdG8gIiR7ci5yZXBsYWNlKC9cKiQvLCIvKiIpfSIuYCk7bGV0IHU9W10sZD0iXiIrci5yZXBsYWNlKC9cLypcKj8kLywiIikucmVwbGFjZSgvXlwvKi8sIi8iKS5yZXBsYWNlKC9bXFwuKiteJHt9fCgpW1xdXS9nLCJcXCQmIikucmVwbGFjZSgvXC86KFtcdy1dKykoXD8pPy9nLChwLG0sdixTLEUpPT57aWYodS5wdXNoKHtwYXJhbU5hbWU6bSxpc09wdGlvbmFsOnYhPW51bGx9KSx2KXtsZXQgeD1FLmNoYXJBdChTK3AubGVuZ3RoKTtyZXR1cm4geCYmeCE9PSIvIj8iLyhbXlxcL10qKSI6Iig/Oi8oW15cXC9dKikpPyJ9cmV0dXJuIi8oW15cXC9dKykifSkucmVwbGFjZSgvXC8oW1x3LV0rKVw/KFwvfCQpL2csIigvJDEpPyQyIik7cmV0dXJuIHIuZW5kc1dpdGgoIioiKT8odS5wdXNoKHtwYXJhbU5hbWU6IioifSksZCs9cj09PSIqInx8cj09PSIvKiI/IiguKikkIjoiKD86XFwvKC4rKXxcXC8qKSQiKTpsP2QrPSJcXC8qJCI6ciE9PSIiJiZyIT09Ii8iJiYoZCs9Iig/Oig/PVxcL3wkKSkiKSxbbmV3IFJlZ0V4cChkLHM/dm9pZCAwOiJpIiksdV19ZnVuY3Rpb24gYmcocil7dHJ5e3JldHVybiByLnNwbGl0KCIvIikubWFwKHM9PmRlY29kZVVSSUNvbXBvbmVudChzKS5yZXBsYWNlKC9cLy9nLCIlMkYiKSkuam9pbigiLyIpfWNhdGNoKHMpe3JldHVybiBNdCghMSxgVGhlIFVSTCBwYXRoICIke3J9IiBjb3VsZCBub3QgYmUgZGVjb2RlZCBiZWNhdXNlIGl0IGlzIGEgbWFsZm9ybWVkIFVSTCBzZWdtZW50LiBUaGlzIGlzIHByb2JhYmx5IGR1ZSB0byBhIGJhZCBwZXJjZW50IGVuY29kaW5nICgke3N9KS5gKSxyfX1mdW5jdGlvbiB4bihyLHMpe2lmKHM9PT0iLyIpcmV0dXJuIHI7aWYoIXIudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKHMudG9Mb3dlckNhc2UoKSkpcmV0dXJuIG51bGw7bGV0IGw9cy5lbmRzV2l0aCgiLyIpP3MubGVuZ3RoLTE6cy5sZW5ndGgsdT1yLmNoYXJBdChsKTtyZXR1cm4gdSYmdSE9PSIvIj9udWxsOnIuc2xpY2UobCl8fCIvIn1mdW5jdGlvbiBCZyhyLHM9Ii8iKXtsZXR7cGF0aG5hbWU6bCxzZWFyY2g6dT0iIixoYXNoOmQ9IiJ9PXR5cGVvZiByPT0ic3RyaW5nIj91cyhyKTpyLGg7cmV0dXJuIGw/KGw9UGgobCksbC5zdGFydHNXaXRoKCIvIil8fGwuc3RhcnRzV2l0aCgiXFwiKT9oPVZmKGwuc3Vic3RyaW5nKDEpLCIvIik6aD1WZihsLHMpKTpoPXMse3BhdGhuYW1lOmgsc2VhcmNoOnFnKHUpLGhhc2g6V2coZCl9fWZ1bmN0aW9uIFZmKHIscyl7bGV0IGw9b3Mocykuc3BsaXQoIi8iKTtyZXR1cm4gci5zcGxpdCgiLyIpLmZvckVhY2goZD0+e2Q9PT0iLi4iP2wubGVuZ3RoPjEmJmwucG9wKCk6ZCE9PSIuIiYmbC5wdXNoKGQpfSksbC5sZW5ndGg+MT9sLmpvaW4oIi8iKToiLyJ9ZnVuY3Rpb24gVmEocixzLGwsdSl7cmV0dXJuYENhbm5vdCBpbmNsdWRlIGEgJyR7cn0nIGNoYXJhY3RlciBpbiBhIG1hbnVhbGx5IHNwZWNpZmllZCBcYHRvLiR7c31cYCBmaWVsZCBbJHtKU09OLnN0cmluZ2lmeSh1KX1dLiAgUGxlYXNlIHNlcGFyYXRlIGl0IG91dCB0byB0aGUgXGB0by4ke2x9XGAgZmllbGQuIEFsdGVybmF0aXZlbHkgeW91IG1heSBwcm92aWRlIHRoZSBmdWxsIHBhdGggYXMgYSBzdHJpbmcgaW4gPExpbmsgdG89Ii4uLiI+IGFuZCB0aGUgcm91dGVyIHdpbGwgcGFyc2UgaXQgZm9yIHlvdS5gfWZ1bmN0aW9uIEhnKHIpe3JldHVybiByLmZpbHRlcigocyxsKT0+bD09PTB8fHMucm91dGUucGF0aCYmcy5yb3V0ZS5wYXRoLmxlbmd0aD4wKX1mdW5jdGlvbiBDdShyKXtsZXQgcz1IZyhyKTtyZXR1cm4gcy5tYXAoKGwsdSk9PnU9PT1zLmxlbmd0aC0xP2wucGF0aG5hbWU6bC5wYXRobmFtZUJhc2UpfWZ1bmN0aW9uIFVsKHIscyxsLHU9ITEpe2xldCBkO3R5cGVvZiByPT0ic3RyaW5nIj9kPXVzKHIpOihkPXsuLi5yfSxJZSghZC5wYXRobmFtZXx8IWQucGF0aG5hbWUuaW5jbHVkZXMoIj8iKSxWYSgiPyIsInBhdGhuYW1lIiwic2VhcmNoIixkKSksSWUoIWQucGF0aG5hbWV8fCFkLnBhdGhuYW1lLmluY2x1ZGVzKCIjIiksVmEoIiMiLCJwYXRobmFtZSIsImhhc2giLGQpKSxJZSghZC5zZWFyY2h8fCFkLnNlYXJjaC5pbmNsdWRlcygiIyIpLFZhKCIjIiwic2VhcmNoIiwiaGFzaCIsZCkpKTtsZXQgaD1yPT09IiJ8fGQucGF0aG5hbWU9PT0iIixwPWg/Ii8iOmQucGF0aG5hbWUsbTtpZihwPT1udWxsKW09bDtlbHNle2xldCB4PXMubGVuZ3RoLTE7aWYoIXUmJnAuc3RhcnRzV2l0aCgiLi4iKSl7bGV0IFQ9cC5zcGxpdCgiLyIpO2Zvcig7VFswXT09PSIuLiI7KVQuc2hpZnQoKSx4LT0xO2QucGF0aG5hbWU9VC5qb2luKCIvIil9bT14Pj0wP3NbeF06Ii8ifWxldCB2PUJnKGQsbSksUz1wJiZwIT09Ii8iJiZwLmVuZHNXaXRoKCIvIiksRT0oaHx8cD09PSIuIikmJmwuZW5kc1dpdGgoIi8iKTtyZXR1cm4hdi5wYXRobmFtZS5lbmRzV2l0aCgiLyIpJiYoU3x8RSkmJih2LnBhdGhuYW1lKz0iLyIpLHZ9dmFyIFBoPXI9PnIucmVwbGFjZSgvW1xcL117Mix9L2csIi8iKSxXdD1yPT5QaChyLmpvaW4oIi8iKSk7ZnVuY3Rpb24gb3MocixzPTApe2xldCBsPXIubGVuZ3RoO2Zvcig7bD5zJiZyLmNoYXJDb2RlQXQobC0xKT09PTQ3OylsLS07cmV0dXJuIGw9PT1yLmxlbmd0aD9yOnIuc2xpY2UoMCxsKX12YXIgUWc9cj0+b3MocikucmVwbGFjZSgvXlwvKi8sIi8iKSxxZz1yPT4hcnx8cj09PSI/Ij8iIjpyLnN0YXJ0c1dpdGgoIj8iKT9yOiI/IityLFdnPXI9PiFyfHxyPT09IiMiPyIiOnIuc3RhcnRzV2l0aCgiIyIpP3I6IiMiK3IsVmc9Y2xhc3N7Y29uc3RydWN0b3IocixzLGwsdT0hMSl7dGhpcy5zdGF0dXM9cix0aGlzLnN0YXR1c1RleHQ9c3x8IiIsdGhpcy5pbnRlcm5hbD11LGwgaW5zdGFuY2VvZiBFcnJvcj8odGhpcy5kYXRhPWwudG9TdHJpbmcoKSx0aGlzLmVycm9yPWwpOnRoaXMuZGF0YT1sfX07ZnVuY3Rpb24gS2cocil7cmV0dXJuIHIhPW51bGwmJnR5cGVvZiByLnN0YXR1cz09Im51bWJlciImJnR5cGVvZiByLnN0YXR1c1RleHQ9PSJzdHJpbmciJiZ0eXBlb2Ygci5pbnRlcm5hbD09ImJvb2xlYW4iJiYiZGF0YSJpbiByfWZ1bmN0aW9uIEdnKHIpe2xldCBzPXIubWFwKGw9Pmwucm91dGUucGF0aCkuZmlsdGVyKEJvb2xlYW4pO3JldHVybiBXdChzKXx8Ii8ifXZhciBfaD10eXBlb2Ygd2luZG93PCJ1IiYmdHlwZW9mIHdpbmRvdy5kb2N1bWVudDwidSImJnR5cGVvZiB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudDwidSI7ZnVuY3Rpb24gVGgocixzKXtsZXQgbD1yO2lmKHR5cGVvZiBsIT0ic3RyaW5nInx8IWt1LnRlc3QobCkpcmV0dXJue2Fic29sdXRlVVJMOnZvaWQgMCxpc0V4dGVybmFsOiExLHRvOmx9O2xldCB1PWwsZD0hMTtpZihfaCl0cnl7bGV0IGg9bmV3IFVSTCh3aW5kb3cubG9jYXRpb24uaHJlZikscD1raC50ZXN0KGwpP25ldyBVUkwoamcobCxoLnByb3RvY29sKSk6bmV3IFVSTChsKSxtPXhuKHAucGF0aG5hbWUscyk7cC5vcmlnaW49PT1oLm9yaWdpbiYmbSE9bnVsbD9sPW0rcC5zZWFyY2grcC5oYXNoOmQ9ITB9Y2F0Y2h7TXQoITEsYDxMaW5rIHRvPSIke2x9Ij4gY29udGFpbnMgYW4gaW52YWxpZCBVUkwgd2hpY2ggd2lsbCBwcm9iYWJseSBicmVhayB3aGVuIGNsaWNrZWQgLSBwbGVhc2UgdXBkYXRlIHRvIGEgdmFsaWQgVVJMIHBhdGguYCl9cmV0dXJue2Fic29sdXRlVVJMOnUsaXNFeHRlcm5hbDpkLHRvOmx9fU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKE9iamVjdC5wcm90b3R5cGUpLnNvcnQoKS5qb2luKCJcMCIpO3ZhciBLZj1uZXcgVVJMKCJodHRwOi8vbG9jYWxob3N0Iik7ZnVuY3Rpb24ganUocil7aWYoci5jcmVhdGVVUkwpcmV0dXJuIHIuY3JlYXRlVVJMKCIvIik7dHJ5e3JldHVybiBuZXcgVVJMKHIuY3JlYXRlSHJlZigiLyIpLEtmKX1jYXRjaHtyZXR1cm4gS2Z9fWZ1bmN0aW9uIEthKHIscyl7cmV0dXJuIHIub3JpZ2luPT09cy5vcmlnaW4mJihyLm9yaWdpbiE9PSJudWxsInx8ci5wcm90b2NvbD09PXMucHJvdG9jb2wmJnIuaG9zdD09PXMuaG9zdCl9ZnVuY3Rpb24gSmcocixzKXtpZihyLnN0YXJ0c1dpdGgoIi8vIikpcmV0dXJuITA7bGV0IGw9cy5wcm90b2NvbC50b0xvd2VyQ2FzZSgpO3JldHVybiByLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChsKT9zLmhvc3Q9PT0iInx8ci5zbGljZShsLmxlbmd0aCkuc3RhcnRzV2l0aCgiLy8iKTohMX1mdW5jdGlvbiBFdShyLHMsbCx1KXtsZXQgZD1udWxsO3RyeXtkPXI9PW51bGw/bnVsbDpuZXcgVVJMKHIsbCl9Y2F0Y2h7fWxldCBoPW5ldyBVUkwocyxsKSxwPWQhPW51bGwmJiFLYShkLGwpLG09IUthKGgsbCk7aWYodT09PSJyZWplY3QiKXtpZihwfHxtKXRocm93IG5ldyBFcnJvcigiRXh0ZXJuYWwgbmF2aWdhdGlvbiBpcyBub3QgYWxsb3dlZCIpfWVsc2UgaWYobSYmKGQ9PW51bGx8fCFKZyhyLGQpfHwhS2EoZCxoKSkpdGhyb3cgbmV3IEVycm9yKCJFeHRlcm5hbCBuYXZpZ2F0aW9uIGlzIG5vdCBhbGxvd2VkIil9dmFyIEZoPVsiUE9TVCIsIlBVVCIsIlBBVENIIiwiREVMRVRFIl07bmV3IFNldChGaCk7dmFyIFlnPVsiR0VUIiwuLi5GaF07bmV3IFNldChZZyk7dmFyIFhnPVsiYWJvdXQ6IiwiYmxvYjoiLCJjaHJvbWU6IiwiY2hyb21lLXVudHJ1c3RlZDoiLCJjb250ZW50OiIsImRhdGE6IiwiZGV2dG9vbHM6IiwiZmlsZToiLCJmaWxlc3lzdGVtOiIsImphdmFzY3JpcHQ6Il07ZnVuY3Rpb24gWmcocil7dHJ5e3JldHVybiBYZy5pbmNsdWRlcyhuZXcgVVJMKHIpLnByb3RvY29sKX1jYXRjaHtyZXR1cm4hMX19dmFyIGNzPWouY3JlYXRlQ29udGV4dChudWxsKTtjcy5kaXNwbGF5TmFtZT0iRGF0YVJvdXRlciI7dmFyIGJsPWouY3JlYXRlQ29udGV4dChudWxsKTtibC5kaXNwbGF5TmFtZT0iRGF0YVJvdXRlclN0YXRlIjt2YXIgTGg9ai5jcmVhdGVDb250ZXh0KCExKTtmdW5jdGlvbiBldigpe3JldHVybiBqLnVzZUNvbnRleHQoTGgpfXZhciBEaD1qLmNyZWF0ZUNvbnRleHQoe2lzVHJhbnNpdGlvbmluZzohMX0pO0RoLmRpc3BsYXlOYW1lPSJWaWV3VHJhbnNpdGlvbiI7dmFyIHR2PWouY3JlYXRlQ29udGV4dChuZXcgTWFwKTt0di5kaXNwbGF5TmFtZT0iRmV0Y2hlcnMiO3ZhciBudj1qLmNyZWF0ZUNvbnRleHQobnVsbCk7bnYuZGlzcGxheU5hbWU9IkF3YWl0Ijt2YXIgRXQ9ai5jcmVhdGVDb250ZXh0KG51bGwpO0V0LmRpc3BsYXlOYW1lPSJOYXZpZ2F0aW9uIjt2YXIgcGk9ai5jcmVhdGVDb250ZXh0KG51bGwpO3BpLmRpc3BsYXlOYW1lPSJMb2NhdGlvbiI7dmFyIFZ0PWouY3JlYXRlQ29udGV4dCh7b3V0bGV0Om51bGwsbWF0Y2hlczpbXSxpc0RhdGFSb3V0ZTohMX0pO1Z0LmRpc3BsYXlOYW1lPSJSb3V0ZSI7dmFyIE51PWouY3JlYXRlQ29udGV4dChudWxsKTtOdS5kaXNwbGF5TmFtZT0iUm91dGVFcnJvciI7dmFyIE9oPSJSRUFDVF9ST1VURVJfRVJST1IiLHJ2PSJSRURJUkVDVCIsc3Y9IlJPVVRFX0VSUk9SX1JFU1BPTlNFIjtmdW5jdGlvbiBpdihyKXtpZihyLnN0YXJ0c1dpdGgoYCR7T2h9OiR7cnZ9OntgKSl0cnl7bGV0IHM9SlNPTi5wYXJzZShyLnNsaWNlKDI4KSk7aWYodHlwZW9mIHM9PSJvYmplY3QiJiZzJiZ0eXBlb2Ygcy5zdGF0dXM9PSJudW1iZXIiJiZ0eXBlb2Ygcy5zdGF0dXNUZXh0PT0ic3RyaW5nIiYmdHlwZW9mIHMubG9jYXRpb249PSJzdHJpbmciJiZ0eXBlb2Ygcy5yZWxvYWREb2N1bWVudD09ImJvb2xlYW4iJiZ0eXBlb2Ygcy5yZXBsYWNlPT0iYm9vbGVhbiIpcmV0dXJuIHN9Y2F0Y2h7fX1mdW5jdGlvbiBsdihyKXtpZihyLnN0YXJ0c1dpdGgoYCR7T2h9OiR7c3Z9OntgKSl0cnl7bGV0IHM9SlNPTi5wYXJzZShyLnNsaWNlKDQwKSk7aWYodHlwZW9mIHM9PSJvYmplY3QiJiZzJiZ0eXBlb2Ygcy5zdGF0dXM9PSJudW1iZXIiJiZ0eXBlb2Ygcy5zdGF0dXNUZXh0PT0ic3RyaW5nIilyZXR1cm4gbmV3IFZnKHMuc3RhdHVzLHMuc3RhdHVzVGV4dCxzLmRhdGEpfWNhdGNoe319ZnVuY3Rpb24gb3Yocix7cmVsYXRpdmU6c309e30pe0llKGRzKCksInVzZUhyZWYoKSBtYXkgYmUgdXNlZCBvbmx5IGluIHRoZSBjb250ZXh0IG9mIGEgPFJvdXRlcj4gY29tcG9uZW50LiIpO2xldHtiYXNlbmFtZTpsLG5hdmlnYXRvcjp1fT1qLnVzZUNvbnRleHQoRXQpLHtoYXNoOmQscGF0aG5hbWU6aCxzZWFyY2g6cH09bWkocix7cmVsYXRpdmU6c30pLG09aDtyZXR1cm4gbCE9PSIvIiYmKG09aD09PSIvIj9sOld0KFtsLGhdKSksdS5jcmVhdGVIcmVmKHtwYXRobmFtZTptLHNlYXJjaDpwLGhhc2g6ZH0pfWZ1bmN0aW9uIGRzKCl7cmV0dXJuIGoudXNlQ29udGV4dChwaSkhPW51bGx9ZnVuY3Rpb24gS3QoKXtyZXR1cm4gSWUoZHMoKSwidXNlTG9jYXRpb24oKSBtYXkgYmUgdXNlZCBvbmx5IGluIHRoZSBjb250ZXh0IG9mIGEgPFJvdXRlcj4gY29tcG9uZW50LiIpLGoudXNlQ29udGV4dChwaSkubG9jYXRpb259dmFyIEloPSJZb3Ugc2hvdWxkIGNhbGwgbmF2aWdhdGUoKSBpbiBhIFJlYWN0LnVzZUVmZmVjdCgpLCBub3Qgd2hlbiB5b3VyIGNvbXBvbmVudCBpcyBmaXJzdCByZW5kZXJlZC4iO2Z1bmN0aW9uIE1oKHIpe2oudXNlQ29udGV4dChFdCkuc3RhdGljfHxqLnVzZUxheW91dEVmZmVjdChyKX1mdW5jdGlvbiBLbigpe2xldHtpc0RhdGFSb3V0ZTpyfT1qLnVzZUNvbnRleHQoVnQpO3JldHVybiByP1N2KCk6YXYoKX1mdW5jdGlvbiBhdigpe0llKGRzKCksInVzZU5hdmlnYXRlKCkgbWF5IGJlIHVzZWQgb25seSBpbiB0aGUgY29udGV4dCBvZiBhIDxSb3V0ZXI+IGNvbXBvbmVudC4iKTtsZXQgcj1qLnVzZUNvbnRleHQoY3MpLHtiYXNlbmFtZTpzLG5hdmlnYXRvcjpsfT1qLnVzZUNvbnRleHQoRXQpLHttYXRjaGVzOnV9PWoudXNlQ29udGV4dChWdCkse3BhdGhuYW1lOmR9PUt0KCksaD1KU09OLnN0cmluZ2lmeShDdSh1KSkscD1qLnVzZVJlZighMSk7cmV0dXJuIE1oKCgpPT57cC5jdXJyZW50PSEwfSksai51c2VDYWxsYmFjaygodixTPXt9KT0+e2lmKE10KHAuY3VycmVudCxJaCksIXAuY3VycmVudClyZXR1cm47aWYodHlwZW9mIHY9PSJudW1iZXIiKXtsLmdvKHYpO3JldHVybn1sZXQgRT1VbCh2LEpTT04ucGFyc2UoaCksZCxTLnJlbGF0aXZlPT09InBhdGgiKTtyPT1udWxsJiZzIT09Ii8iJiYoRS5wYXRobmFtZT1FLnBhdGhuYW1lPT09Ii8iP3M6V3QoW3MsRS5wYXRobmFtZV0pKSxFdSh0eXBlb2Ygdj09InN0cmluZyI/djp5cih2KSxsLmNyZWF0ZUhyZWYoRSksanUobCksInJlamVjdCIpLChTLnJlcGxhY2U/bC5yZXBsYWNlOmwucHVzaCkoRSxTLnN0YXRlLFMpfSxbcyxsLGgsZCxyXSl9ai5jcmVhdGVDb250ZXh0KG51bGwpO2Z1bmN0aW9uIHV2KCl7bGV0e21hdGNoZXM6cn09ai51c2VDb250ZXh0KFZ0KSxzPXJbci5sZW5ndGgtMV07cmV0dXJuKHM9PW51bGw/dm9pZCAwOnMucGFyYW1zKT8/e319ZnVuY3Rpb24gbWkocix7cmVsYXRpdmU6c309e30pe2xldHttYXRjaGVzOmx9PWoudXNlQ29udGV4dChWdCkse3BhdGhuYW1lOnV9PUt0KCksZD1KU09OLnN0cmluZ2lmeShDdShsKSk7cmV0dXJuIGoudXNlTWVtbygoKT0+VWwocixKU09OLnBhcnNlKGQpLHUscz09PSJwYXRoIiksW3IsZCx1LHNdKX1mdW5jdGlvbiBjdihyLHMpe3JldHVybiB6aChyLHMpfWZ1bmN0aW9uIHpoKHIscyxsKXt2YXIgUDtJZShkcygpLCJ1c2VSb3V0ZXMoKSBtYXkgYmUgdXNlZCBvbmx5IGluIHRoZSBjb250ZXh0IG9mIGEgPFJvdXRlcj4gY29tcG9uZW50LiIpO2xldHtuYXZpZ2F0b3I6dX09ai51c2VDb250ZXh0KEV0KSx7bWF0Y2hlczpkfT1qLnVzZUNvbnRleHQoVnQpLGg9ZFtkLmxlbmd0aC0xXSxwPWg/aC5wYXJhbXM6e30sbT1oP2gucGF0aG5hbWU6Ii8iLHY9aD9oLnBhdGhuYW1lQmFzZToiLyIsUz1oJiZoLnJvdXRlO3tsZXQgVT1TJiZTLnBhdGh8fCIiOyRoKG0sIVN8fFUuZW5kc1dpdGgoIioiKXx8VS5lbmRzV2l0aCgiKj8iKSxgWW91IHJlbmRlcmVkIGRlc2NlbmRhbnQgPFJvdXRlcz4gKG9yIGNhbGxlZCBcYHVzZVJvdXRlcygpXGApIGF0ICIke219IiAodW5kZXIgPFJvdXRlIHBhdGg9IiR7VX0iPikgYnV0IHRoZSBwYXJlbnQgcm91dGUgcGF0aCBoYXMgbm8gdHJhaWxpbmcgIioiLiBUaGlzIG1lYW5zIGlmIHlvdSBuYXZpZ2F0ZSBkZWVwZXIsIHRoZSBwYXJlbnQgd29uJ3QgbWF0Y2ggYW55bW9yZSBhbmQgdGhlcmVmb3JlIHRoZSBjaGlsZCByb3V0ZXMgd2lsbCBuZXZlciByZW5kZXIuCgpQbGVhc2UgY2hhbmdlIHRoZSBwYXJlbnQgPFJvdXRlIHBhdGg9IiR7VX0iPiB0byA8Um91dGUgcGF0aD0iJHtVPT09Ii8iPyIqIjpgJHtVfS8qYH0iPi5gKX1sZXQgRT1LdCgpLHg7aWYocyl7bGV0IFU9dHlwZW9mIHM9PSJzdHJpbmciP3VzKHMpOnM7SWUodj09PSIvInx8KChQPVUucGF0aG5hbWUpPT1udWxsP3ZvaWQgMDpQLnN0YXJ0c1dpdGgodikpLGBXaGVuIG92ZXJyaWRpbmcgdGhlIGxvY2F0aW9uIHVzaW5nIFxgPFJvdXRlcyBsb2NhdGlvbj5cYCBvciBcYHVzZVJvdXRlcyhyb3V0ZXMsIGxvY2F0aW9uKVxgLCB0aGUgbG9jYXRpb24gcGF0aG5hbWUgbXVzdCBiZWdpbiB3aXRoIHRoZSBwb3J0aW9uIG9mIHRoZSBVUkwgcGF0aG5hbWUgdGhhdCB3YXMgbWF0Y2hlZCBieSBhbGwgcGFyZW50IHJvdXRlcy4gVGhlIGN1cnJlbnQgcGF0aG5hbWUgYmFzZSBpcyAiJHt2fSIgYnV0IHBhdGhuYW1lICIke1UucGF0aG5hbWV9IiB3YXMgZ2l2ZW4gaW4gdGhlIFxgbG9jYXRpb25cYCBwcm9wLmApLHg9VX1lbHNlIHg9RTtsZXQgVD14LnBhdGhuYW1lfHwiLyIsTz1UO2lmKHYhPT0iLyIpe2xldCBVPXYucmVwbGFjZSgvXlwvLywiIikuc3BsaXQoIi8iKTtPPSIvIitULnJlcGxhY2UoL15cLy8sIiIpLnNwbGl0KCIvIikuc2xpY2UoVS5sZW5ndGgpLmpvaW4oIi8iKX1sZXQgQT1sJiZsLnN0YXRlLm1hdGNoZXMubGVuZ3RoP2wuc3RhdGUubWF0Y2hlcy5tYXAoVT0+T2JqZWN0LmFzc2lnbihVLHtyb3V0ZTpsLm1hbmlmZXN0W1Uucm91dGUuaWRdfHxVLnJvdXRlfSkpOkNoKHIse3BhdGhuYW1lOk99KTtNdChTfHxBIT1udWxsLGBObyByb3V0ZXMgbWF0Y2hlZCBsb2NhdGlvbiAiJHt4LnBhdGhuYW1lfSR7eC5zZWFyY2h9JHt4Lmhhc2h9IiBgKSxNdChBPT1udWxsfHxBW0EubGVuZ3RoLTFdLnJvdXRlLmVsZW1lbnQhPT12b2lkIDB8fEFbQS5sZW5ndGgtMV0ucm91dGUuQ29tcG9uZW50IT09dm9pZCAwfHxBW0EubGVuZ3RoLTFdLnJvdXRlLmxhenkhPT12b2lkIDAsYE1hdGNoZWQgbGVhZiByb3V0ZSBhdCBsb2NhdGlvbiAiJHt4LnBhdGhuYW1lfSR7eC5zZWFyY2h9JHt4Lmhhc2h9IiBkb2VzIG5vdCBoYXZlIGFuIGVsZW1lbnQgb3IgQ29tcG9uZW50LiBUaGlzIG1lYW5zIGl0IHdpbGwgcmVuZGVyIGFuIDxPdXRsZXQgLz4gd2l0aCBhIG51bGwgdmFsdWUgYnkgZGVmYXVsdCByZXN1bHRpbmcgaW4gYW4gImVtcHR5IiBwYWdlLmApO2xldCBMPW12KEEmJkEubWFwKFU9Pk9iamVjdC5hc3NpZ24oe30sVSx7cGFyYW1zOk9iamVjdC5hc3NpZ24oe30scCxVLnBhcmFtcykscGF0aG5hbWU6V3QoW3YsdS5lbmNvZGVMb2NhdGlvbj91LmVuY29kZUxvY2F0aW9uKFUucGF0aG5hbWUucmVwbGFjZSgvJS9nLCIlMjUiKS5yZXBsYWNlKC9cPy9nLCIlM0YiKS5yZXBsYWNlKC8jL2csIiUyMyIpKS5wYXRobmFtZTpVLnBhdGhuYW1lXSkscGF0aG5hbWVCYXNlOlUucGF0aG5hbWVCYXNlPT09Ii8iP3Y6V3QoW3YsdS5lbmNvZGVMb2NhdGlvbj91LmVuY29kZUxvY2F0aW9uKFUucGF0aG5hbWVCYXNlLnJlcGxhY2UoLyUvZywiJTI1IikucmVwbGFjZSgvXD8vZywiJTNGIikucmVwbGFjZSgvIy9nLCIlMjMiKSkucGF0aG5hbWU6VS5wYXRobmFtZUJhc2VdKX0pKSxkLGwpO3JldHVybiBzJiZMP2ouY3JlYXRlRWxlbWVudChwaS5Qcm92aWRlcix7dmFsdWU6e2xvY2F0aW9uOntwYXRobmFtZToiLyIsc2VhcmNoOiIiLGhhc2g6IiIsc3RhdGU6bnVsbCxrZXk6ImRlZmF1bHQiLG1hc2s6dm9pZCAwLC4uLnh9LG5hdmlnYXRpb25UeXBlOiJQT1AifX0sTCk6TH1mdW5jdGlvbiBkdigpe2xldCByPXd2KCkscz1LZyhyKT9gJHtyLnN0YXR1c30gJHtyLnN0YXR1c1RleHR9YDpyIGluc3RhbmNlb2YgRXJyb3I/ci5tZXNzYWdlOkpTT04uc3RyaW5naWZ5KHIpLGw9ciBpbnN0YW5jZW9mIEVycm9yP3Iuc3RhY2s6bnVsbCx1PSJyZ2JhKDIwMCwyMDAsMjAwLCAwLjUpIixkPXtwYWRkaW5nOiIwLjVyZW0iLGJhY2tncm91bmRDb2xvcjp1fSxoPXtwYWRkaW5nOiIycHggNHB4IixiYWNrZ3JvdW5kQ29sb3I6dX0scD1udWxsO3JldHVybiBjb25zb2xlLmVycm9yKCJFcnJvciBoYW5kbGVkIGJ5IFJlYWN0IFJvdXRlciBkZWZhdWx0IEVycm9yQm91bmRhcnk6IixyKSxwPWouY3JlYXRlRWxlbWVudChqLkZyYWdtZW50LG51bGwsai5jcmVhdGVFbGVtZW50KCJwIixudWxsLCLwn5K/IEhleSBkZXZlbG9wZXIg8J+RiyIpLGouY3JlYXRlRWxlbWVudCgicCIsbnVsbCwiWW91IGNhbiBwcm92aWRlIGEgd2F5IGJldHRlciBVWCB0aGFuIHRoaXMgd2hlbiB5b3VyIGFwcCB0aHJvd3MgZXJyb3JzIGJ5IHByb3ZpZGluZyB5b3VyIG93biAiLGouY3JlYXRlRWxlbWVudCgiY29kZSIse3N0eWxlOmh9LCJFcnJvckJvdW5kYXJ5IiksIiBvciIsIiAiLGouY3JlYXRlRWxlbWVudCgiY29kZSIse3N0eWxlOmh9LCJlcnJvckVsZW1lbnQiKSwiIHByb3Agb24geW91ciByb3V0ZS4iKSksai5jcmVhdGVFbGVtZW50KGouRnJhZ21lbnQsbnVsbCxqLmNyZWF0ZUVsZW1lbnQoImgyIixudWxsLCJVbmV4cGVjdGVkIEFwcGxpY2F0aW9uIEVycm9yISIpLGouY3JlYXRlRWxlbWVudCgiaDMiLHtzdHlsZTp7Zm9udFN0eWxlOiJpdGFsaWMifX0scyksbD9qLmNyZWF0ZUVsZW1lbnQoInByZSIse3N0eWxlOmR9LGwpOm51bGwscCl9dmFyIGZ2PWouY3JlYXRlRWxlbWVudChkdixudWxsKSxBaD1jbGFzcyBleHRlbmRzIGouQ29tcG9uZW50e2NvbnN0cnVjdG9yKHIpe3N1cGVyKHIpLHRoaXMuc3RhdGU9e2xvY2F0aW9uOnIubG9jYXRpb24scmV2YWxpZGF0aW9uOnIucmV2YWxpZGF0aW9uLGVycm9yOnIuZXJyb3J9fXN0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tRXJyb3Iocil7cmV0dXJue2Vycm9yOnJ9fXN0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMocixzKXtyZXR1cm4gcy5sb2NhdGlvbiE9PXIubG9jYXRpb258fHMucmV2YWxpZGF0aW9uIT09ImlkbGUiJiZyLnJldmFsaWRhdGlvbj09PSJpZGxlIj97ZXJyb3I6ci5lcnJvcixsb2NhdGlvbjpyLmxvY2F0aW9uLHJldmFsaWRhdGlvbjpyLnJldmFsaWRhdGlvbn06e2Vycm9yOnIuZXJyb3IhPT12b2lkIDA/ci5lcnJvcjpzLmVycm9yLGxvY2F0aW9uOnMubG9jYXRpb24scmV2YWxpZGF0aW9uOnIucmV2YWxpZGF0aW9ufHxzLnJldmFsaWRhdGlvbn19Y29tcG9uZW50RGlkQ2F0Y2gocixzKXt0aGlzLnByb3BzLm9uRXJyb3I/dGhpcy5wcm9wcy5vbkVycm9yKHIscyk6Y29uc29sZS5lcnJvcigiUmVhY3QgUm91dGVyIGNhdWdodCB0aGUgZm9sbG93aW5nIGVycm9yIGR1cmluZyByZW5kZXIiLHIpfXJlbmRlcigpe2xldCByPXRoaXMuc3RhdGUuZXJyb3I7aWYodGhpcy5jb250ZXh0JiZ0eXBlb2Ygcj09Im9iamVjdCImJnImJiJkaWdlc3QiaW4gciYmdHlwZW9mIHIuZGlnZXN0PT0ic3RyaW5nIil7Y29uc3QgbD1sdihyLmRpZ2VzdCk7bCYmKHI9bCl9bGV0IHM9ciE9PXZvaWQgMD9qLmNyZWF0ZUVsZW1lbnQoVnQuUHJvdmlkZXIse3ZhbHVlOnRoaXMucHJvcHMucm91dGVDb250ZXh0fSxqLmNyZWF0ZUVsZW1lbnQoTnUuUHJvdmlkZXIse3ZhbHVlOnIsY2hpbGRyZW46dGhpcy5wcm9wcy5jb21wb25lbnR9KSk6dGhpcy5wcm9wcy5jaGlsZHJlbjtyZXR1cm4gdGhpcy5jb250ZXh0P2ouY3JlYXRlRWxlbWVudChodix7ZXJyb3I6cn0scyk6c319O0FoLmNvbnRleHRUeXBlPUxoO3ZhciBHYT1uZXcgV2Vha01hcDtmdW5jdGlvbiBodih7Y2hpbGRyZW46cixlcnJvcjpzfSl7bGV0e2Jhc2VuYW1lOmwsbmF2aWdhdG9yOnV9PWoudXNlQ29udGV4dChFdCk7aWYodHlwZW9mIHM9PSJvYmplY3QiJiZzJiYiZGlnZXN0ImluIHMmJnR5cGVvZiBzLmRpZ2VzdD09InN0cmluZyIpe2xldCBkPWl2KHMuZGlnZXN0KTtpZihkKXtsZXQgaD1HYS5nZXQocyk7aWYoaCl0aHJvdyBoO2xldCBwPVRoKGQubG9jYXRpb24sbCksbT1wLmFic29sdXRlVVJMfHxwLnRvO2lmKEV1KGQubG9jYXRpb24sbSxqdSh1KSwiYWxsb3ctZXhwbGljaXQiKSxaZyhtKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgcmVkaXJlY3QgbG9jYXRpb24iKTtpZihfaCYmIUdhLmdldChzKSlpZihwLmlzRXh0ZXJuYWx8fGQucmVsb2FkRG9jdW1lbnQpd2luZG93LmxvY2F0aW9uLmhyZWY9bTtlbHNle2NvbnN0IHY9UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+d2luZG93Ll9fcmVhY3RSb3V0ZXJEYXRhUm91dGVyLm5hdmlnYXRlKHAudG8se3JlcGxhY2U6ZC5yZXBsYWNlfSkpO3Rocm93IEdhLnNldChzLHYpLHZ9cmV0dXJuIGouY3JlYXRlRWxlbWVudCgibWV0YSIse2h0dHBFcXVpdjoicmVmcmVzaCIsY29udGVudDpgMDt1cmw9JHttfWB9KX19cmV0dXJuIHJ9ZnVuY3Rpb24gcHYoe3JvdXRlQ29udGV4dDpyLG1hdGNoOnMsY2hpbGRyZW46bH0pe2xldCB1PWoudXNlQ29udGV4dChjcyk7cmV0dXJuIHUmJnUuc3RhdGljJiZ1LnN0YXRpY0NvbnRleHQmJihzLnJvdXRlLmVycm9yRWxlbWVudHx8cy5yb3V0ZS5FcnJvckJvdW5kYXJ5KSYmKHUuc3RhdGljQ29udGV4dC5fZGVlcGVzdFJlbmRlcmVkQm91bmRhcnlJZD1zLnJvdXRlLmlkKSxqLmNyZWF0ZUVsZW1lbnQoVnQuUHJvdmlkZXIse3ZhbHVlOnJ9LGwpfWZ1bmN0aW9uIG12KHIscz1bXSxsKXtsZXQgdT1sPT1udWxsP3ZvaWQgMDpsLnN0YXRlO2lmKHI9PW51bGwpe2lmKCF1KXJldHVybiBudWxsO2lmKHUuZXJyb3JzKXI9dS5tYXRjaGVzO2Vsc2UgaWYocy5sZW5ndGg9PT0wJiYhdS5pbml0aWFsaXplZCYmdS5tYXRjaGVzLmxlbmd0aD4wKXI9dS5tYXRjaGVzO2Vsc2UgcmV0dXJuIG51bGx9bGV0IGQ9cixoPXU9PW51bGw/dm9pZCAwOnUuZXJyb3JzO2lmKGghPW51bGwpe2xldCBFPWQuZmluZEluZGV4KHg9Pngucm91dGUuaWQmJihoPT1udWxsP3ZvaWQgMDpoW3gucm91dGUuaWRdKSE9PXZvaWQgMCk7SWUoRT49MCxgQ291bGQgbm90IGZpbmQgYSBtYXRjaGluZyByb3V0ZSBmb3IgZXJyb3JzIG9uIHJvdXRlIElEczogJHtPYmplY3Qua2V5cyhoKS5qb2luKCIsIil9YCksZD1kLnNsaWNlKDAsTWF0aC5taW4oZC5sZW5ndGgsRSsxKSl9bGV0IHA9ITEsbT0tMTtpZihsJiZ1KXtwPXUucmVuZGVyRmFsbGJhY2s7Zm9yKGxldCBFPTA7RTxkLmxlbmd0aDtFKyspe2xldCB4PWRbRV07aWYoKHgucm91dGUuSHlkcmF0ZUZhbGxiYWNrfHx4LnJvdXRlLmh5ZHJhdGVGYWxsYmFja0VsZW1lbnQpJiYobT1FKSx4LnJvdXRlLmlkKXtsZXR7bG9hZGVyRGF0YTpULGVycm9yczpPfT11LEE9eC5yb3V0ZS5sb2FkZXImJiFULmhhc093blByb3BlcnR5KHgucm91dGUuaWQpJiYoIU98fE9beC5yb3V0ZS5pZF09PT12b2lkIDApO2lmKHgucm91dGUubGF6eXx8QSl7bC5pc1N0YXRpYyYmKHA9ITApLG0+PTA/ZD1kLnNsaWNlKDAsbSsxKTpkPVtkWzBdXTticmVha319fX1sZXQgdj1sPT1udWxsP3ZvaWQgMDpsLm9uRXJyb3IsUz11JiZ2PyhFLHgpPT57dmFyIFQsTzt2KEUse2xvY2F0aW9uOnUubG9jYXRpb24scGFyYW1zOigoTz0oVD11Lm1hdGNoZXMpPT1udWxsP3ZvaWQgMDpUWzBdKT09bnVsbD92b2lkIDA6Ty5wYXJhbXMpPz97fSxwYXR0ZXJuOkdnKHUubWF0Y2hlcyksZXJyb3JJbmZvOnh9KX06dm9pZCAwO3JldHVybiBkLnJlZHVjZVJpZ2h0KChFLHgsVCk9PntsZXQgTyxBPSExLEw9bnVsbCxQPW51bGw7dSYmKE89aCYmeC5yb3V0ZS5pZD9oW3gucm91dGUuaWRdOnZvaWQgMCxMPXgucm91dGUuZXJyb3JFbGVtZW50fHxmdixwJiYobTwwJiZUPT09MD8oJGgoInJvdXRlLWZhbGxiYWNrIiwhMSwiTm8gYEh5ZHJhdGVGYWxsYmFja2AgZWxlbWVudCBwcm92aWRlZCB0byByZW5kZXIgZHVyaW5nIGluaXRpYWwgaHlkcmF0aW9uIiksQT0hMCxQPW51bGwpOm09PT1UJiYoQT0hMCxQPXgucm91dGUuaHlkcmF0ZUZhbGxiYWNrRWxlbWVudHx8bnVsbCkpKTtsZXQgVT1zLmNvbmNhdChkLnNsaWNlKDAsVCsxKSksUT0oKT0+e2xldCBiO3JldHVybiBPP2I9TDpBP2I9UDp4LnJvdXRlLkNvbXBvbmVudD9iPWouY3JlYXRlRWxlbWVudCh4LnJvdXRlLkNvbXBvbmVudCxudWxsKTp4LnJvdXRlLmVsZW1lbnQ/Yj14LnJvdXRlLmVsZW1lbnQ6Yj1FLGouY3JlYXRlRWxlbWVudChwdix7bWF0Y2g6eCxyb3V0ZUNvbnRleHQ6e291dGxldDpFLG1hdGNoZXM6VSxpc0RhdGFSb3V0ZTp1IT1udWxsfSxjaGlsZHJlbjpifSl9O3JldHVybiB1JiYoeC5yb3V0ZS5FcnJvckJvdW5kYXJ5fHx4LnJvdXRlLmVycm9yRWxlbWVudHx8VD09PTApP2ouY3JlYXRlRWxlbWVudChBaCx7bG9jYXRpb246dS5sb2NhdGlvbixyZXZhbGlkYXRpb246dS5yZXZhbGlkYXRpb24sY29tcG9uZW50OkwsZXJyb3I6TyxjaGlsZHJlbjpRKCkscm91dGVDb250ZXh0OntvdXRsZXQ6bnVsbCxtYXRjaGVzOlUsaXNEYXRhUm91dGU6ITB9LG9uRXJyb3I6U30pOlEoKX0sbnVsbCl9ZnVuY3Rpb24gUnUocil7cmV0dXJuYCR7cn0gbXVzdCBiZSB1c2VkIHdpdGhpbiBhIGRhdGEgcm91dGVyLiAgU2VlIGh0dHBzOi8vcmVhY3Ryb3V0ZXIuY29tL2VuL21haW4vcm91dGVycy9waWNraW5nLWEtcm91dGVyLmB9ZnVuY3Rpb24gZ3Yocil7bGV0IHM9ai51c2VDb250ZXh0KGNzKTtyZXR1cm4gSWUocyxSdShyKSksc31mdW5jdGlvbiB2dihyKXtsZXQgcz1qLnVzZUNvbnRleHQoYmwpO3JldHVybiBJZShzLFJ1KHIpKSxzfWZ1bmN0aW9uIHl2KHIpe2xldCBzPWoudXNlQ29udGV4dChWdCk7cmV0dXJuIEllKHMsUnUocikpLHN9ZnVuY3Rpb24gUHUocil7bGV0IHM9eXYociksbD1zLm1hdGNoZXNbcy5tYXRjaGVzLmxlbmd0aC0xXTtyZXR1cm4gSWUobC5yb3V0ZS5pZCxgJHtyfSBjYW4gb25seSBiZSB1c2VkIG9uIHJvdXRlcyB0aGF0IGNvbnRhaW4gYSB1bmlxdWUgImlkImApLGwucm91dGUuaWR9ZnVuY3Rpb24geHYoKXtyZXR1cm4gUHUoInVzZVJvdXRlSWQiKX1mdW5jdGlvbiB3digpe3ZhciB1O2xldCByPWoudXNlQ29udGV4dChOdSkscz12digidXNlUm91dGVFcnJvciIpLGw9UHUoInVzZVJvdXRlRXJyb3IiKTtyZXR1cm4gciE9PXZvaWQgMD9yOih1PXMuZXJyb3JzKT09bnVsbD92b2lkIDA6dVtsXX1mdW5jdGlvbiBTdigpe2xldHtyb3V0ZXI6cn09Z3YoInVzZU5hdmlnYXRlIikscz1QdSgidXNlTmF2aWdhdGUiKSxsPWoudXNlUmVmKCExKTtyZXR1cm4gTWgoKCk9PntsLmN1cnJlbnQ9ITB9KSxqLnVzZUNhbGxiYWNrKGFzeW5jKGQsaD17fSk9PntNdChsLmN1cnJlbnQsSWgpLGwuY3VycmVudCYmKHR5cGVvZiBkPT0ibnVtYmVyIj9hd2FpdCByLm5hdmlnYXRlKGQpOmF3YWl0IHIubmF2aWdhdGUoZCx7ZnJvbVJvdXRlSWQ6cywuLi5ofSkpfSxbcixzXSl9dmFyIEdmPXt9O2Z1bmN0aW9uICRoKHIscyxsKXshcyYmIUdmW3JdJiYoR2Zbcl09ITAsTXQoITEsbCkpfWoubWVtbyhrdik7ZnVuY3Rpb24ga3Yoe3JvdXRlczpyLG1hbmlmZXN0OnMsZnV0dXJlOmwsc3RhdGU6dSxpc1N0YXRpYzpkLG9uRXJyb3I6aH0pe3JldHVybiB6aChyLHZvaWQgMCx7bWFuaWZlc3Q6cyxzdGF0ZTp1LGlzU3RhdGljOmQsb25FcnJvcjpofSl9ZnVuY3Rpb24gVWgoe3RvOnIscmVwbGFjZTpzLHN0YXRlOmwscmVsYXRpdmU6dX0pe0llKGRzKCksIjxOYXZpZ2F0ZT4gbWF5IGJlIHVzZWQgb25seSBpbiB0aGUgY29udGV4dCBvZiBhIDxSb3V0ZXI+IGNvbXBvbmVudC4iKTtsZXR7c3RhdGljOmQsbmF2aWdhdG9yOmh9PWoudXNlQ29udGV4dChFdCk7TXQoIWQsIjxOYXZpZ2F0ZT4gbXVzdCBub3QgYmUgdXNlZCBvbiB0aGUgaW5pdGlhbCByZW5kZXIgaW4gYSA8U3RhdGljUm91dGVyPi4gVGhpcyBpcyBhIG5vLW9wLCBidXQgeW91IHNob3VsZCBtb2RpZnkgeW91ciBjb2RlIHNvIHRoZSA8TmF2aWdhdGU+IGlzIG9ubHkgZXZlciByZW5kZXJlZCBpbiByZXNwb25zZSB0byBzb21lIHVzZXIgaW50ZXJhY3Rpb24gb3Igc3RhdGUgY2hhbmdlLiIpO2xldHttYXRjaGVzOnB9PWoudXNlQ29udGV4dChWdCkse3BhdGhuYW1lOm19PUt0KCksdj1LbigpLFM9VWwocixDdShwKSxtLHU9PT0icGF0aCIpO0V1KHR5cGVvZiByPT0ic3RyaW5nIj9yOnlyKHIpLGguY3JlYXRlSHJlZihTKSxqdShoKSwicmVqZWN0Iik7bGV0IEU9SlNPTi5zdHJpbmdpZnkoUyk7cmV0dXJuIGoudXNlRWZmZWN0KCgpPT57dihKU09OLnBhcnNlKEUpLHtyZXBsYWNlOnMsc3RhdGU6bCxyZWxhdGl2ZTp1fSl9LFt2LEUsdSxzLGxdKSxudWxsfWZ1bmN0aW9uIFZyKHIpe0llKCExLCJBIDxSb3V0ZT4gaXMgb25seSBldmVyIHRvIGJlIHVzZWQgYXMgdGhlIGNoaWxkIG9mIDxSb3V0ZXM+IGVsZW1lbnQsIG5ldmVyIHJlbmRlcmVkIGRpcmVjdGx5LiBQbGVhc2Ugd3JhcCB5b3VyIDxSb3V0ZT4gaW4gYSA8Um91dGVzPi4iKX1mdW5jdGlvbiBDdih7YmFzZW5hbWU6cj0iLyIsY2hpbGRyZW46cz1udWxsLGxvY2F0aW9uOmwsbmF2aWdhdGlvblR5cGU6dT0iUE9QIixuYXZpZ2F0b3I6ZCxzdGF0aWM6aD0hMSx1c2VUcmFuc2l0aW9uczpwfSl7SWUoIWRzKCksIllvdSBjYW5ub3QgcmVuZGVyIGEgPFJvdXRlcj4gaW5zaWRlIGFub3RoZXIgPFJvdXRlcj4uIFlvdSBzaG91bGQgbmV2ZXIgaGF2ZSBtb3JlIHRoYW4gb25lIGluIHlvdXIgYXBwLiIpO2xldCBtPXIucmVwbGFjZSgvXlwvKi8sIi8iKSx2PWoudXNlTWVtbygoKT0+KHtiYXNlbmFtZTptLG5hdmlnYXRvcjpkLHN0YXRpYzpoLHVzZVRyYW5zaXRpb25zOnAsZnV0dXJlOnt9fSksW20sZCxoLHBdKTt0eXBlb2YgbD09InN0cmluZyImJihsPXVzKGwpKTtsZXR7cGF0aG5hbWU6Uz0iLyIsc2VhcmNoOkU9IiIsaGFzaDp4PSIiLHN0YXRlOlQ9bnVsbCxrZXk6Tz0iZGVmYXVsdCIsbWFzazpBfT1sLEw9ai51c2VNZW1vKCgpPT57bGV0IFA9eG4oUyxtKTtyZXR1cm4gUD09bnVsbD9udWxsOntsb2NhdGlvbjp7cGF0aG5hbWU6UCxzZWFyY2g6RSxoYXNoOngsc3RhdGU6VCxrZXk6TyxtYXNrOkF9LG5hdmlnYXRpb25UeXBlOnV9fSxbbSxTLEUseCxULE8sdSxBXSk7cmV0dXJuIE10KEwhPW51bGwsYDxSb3V0ZXIgYmFzZW5hbWU9IiR7bX0iPiBpcyBub3QgYWJsZSB0byBtYXRjaCB0aGUgVVJMICIke1N9JHtFfSR7eH0iIGJlY2F1c2UgaXQgZG9lcyBub3Qgc3RhcnQgd2l0aCB0aGUgYmFzZW5hbWUsIHNvIHRoZSA8Um91dGVyPiB3b24ndCByZW5kZXIgYW55dGhpbmcuYCksTD09bnVsbD9udWxsOmouY3JlYXRlRWxlbWVudChFdC5Qcm92aWRlcix7dmFsdWU6dn0sai5jcmVhdGVFbGVtZW50KHBpLlByb3ZpZGVyLHtjaGlsZHJlbjpzLHZhbHVlOkx9KSl9ZnVuY3Rpb24ganYoe2NoaWxkcmVuOnIsbG9jYXRpb246c30pe3JldHVybiBjdihudShyKSxzKX1mdW5jdGlvbiBudShyLHM9W10pe2xldCBsPVtdO3JldHVybiBqLkNoaWxkcmVuLmZvckVhY2gociwodSxkKT0+e2lmKCFqLmlzVmFsaWRFbGVtZW50KHUpKXJldHVybjtsZXQgaD1bLi4ucyxkXTtpZih1LnR5cGU9PT1qLkZyYWdtZW50KXtsLnB1c2guYXBwbHkobCxudSh1LnByb3BzLmNoaWxkcmVuLGgpKTtyZXR1cm59SWUodS50eXBlPT09VnIsYFske3R5cGVvZiB1LnR5cGU9PSJzdHJpbmciP3UudHlwZTp1LnR5cGUubmFtZX1dIGlzIG5vdCBhIDxSb3V0ZT4gY29tcG9uZW50LiBBbGwgY29tcG9uZW50IGNoaWxkcmVuIG9mIDxSb3V0ZXM+IG11c3QgYmUgYSA8Um91dGU+IG9yIDxSZWFjdC5GcmFnbWVudD5gKSxJZSghdS5wcm9wcy5pbmRleHx8IXUucHJvcHMuY2hpbGRyZW4sIkFuIGluZGV4IHJvdXRlIGNhbm5vdCBoYXZlIGNoaWxkIHJvdXRlcy4iKTtsZXQgcD17aWQ6dS5wcm9wcy5pZHx8aC5qb2luKCItIiksY2FzZVNlbnNpdGl2ZTp1LnByb3BzLmNhc2VTZW5zaXRpdmUsZWxlbWVudDp1LnByb3BzLmVsZW1lbnQsQ29tcG9uZW50OnUucHJvcHMuQ29tcG9uZW50LGluZGV4OnUucHJvcHMuaW5kZXgscGF0aDp1LnByb3BzLnBhdGgsbWlkZGxld2FyZTp1LnByb3BzLm1pZGRsZXdhcmUsbG9hZGVyOnUucHJvcHMubG9hZGVyLGFjdGlvbjp1LnByb3BzLmFjdGlvbixoeWRyYXRlRmFsbGJhY2tFbGVtZW50OnUucHJvcHMuaHlkcmF0ZUZhbGxiYWNrRWxlbWVudCxIeWRyYXRlRmFsbGJhY2s6dS5wcm9wcy5IeWRyYXRlRmFsbGJhY2ssZXJyb3JFbGVtZW50OnUucHJvcHMuZXJyb3JFbGVtZW50LEVycm9yQm91bmRhcnk6dS5wcm9wcy5FcnJvckJvdW5kYXJ5LGhhc0Vycm9yQm91bmRhcnk6dS5wcm9wcy5oYXNFcnJvckJvdW5kYXJ5PT09ITB8fHUucHJvcHMuRXJyb3JCb3VuZGFyeSE9bnVsbHx8dS5wcm9wcy5lcnJvckVsZW1lbnQhPW51bGwsc2hvdWxkUmV2YWxpZGF0ZTp1LnByb3BzLnNob3VsZFJldmFsaWRhdGUsaGFuZGxlOnUucHJvcHMuaGFuZGxlLGxhenk6dS5wcm9wcy5sYXp5fTt1LnByb3BzLmNoaWxkcmVuJiYocC5jaGlsZHJlbj1udSh1LnByb3BzLmNoaWxkcmVuLGgpKSxsLnB1c2gocCl9KSxsfXZhciBPbD0iZ2V0IixJbD0iYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIjtmdW5jdGlvbiBCbChyKXtyZXR1cm4gdHlwZW9mIEhUTUxFbGVtZW50PCJ1IiYmciBpbnN0YW5jZW9mIEhUTUxFbGVtZW50fWZ1bmN0aW9uIEV2KHIpe3JldHVybiBCbChyKSYmci50YWdOYW1lLnRvTG93ZXJDYXNlKCk9PT0iYnV0dG9uIn1mdW5jdGlvbiBOdihyKXtyZXR1cm4gQmwocikmJnIudGFnTmFtZS50b0xvd2VyQ2FzZSgpPT09ImZvcm0ifWZ1bmN0aW9uIFJ2KHIpe3JldHVybiBCbChyKSYmci50YWdOYW1lLnRvTG93ZXJDYXNlKCk9PT0iaW5wdXQifWZ1bmN0aW9uIFB2KHIpe3JldHVybiEhKHIubWV0YUtleXx8ci5hbHRLZXl8fHIuY3RybEtleXx8ci5zaGlmdEtleSl9ZnVuY3Rpb24gX3YocixzKXtyZXR1cm4gci5idXR0b249PT0wJiYoIXN8fHM9PT0iX3NlbGYiKSYmIVB2KHIpfWZ1bmN0aW9uIHJ1KHI9IiIpe3JldHVybiBuZXcgVVJMU2VhcmNoUGFyYW1zKHR5cGVvZiByPT0ic3RyaW5nInx8QXJyYXkuaXNBcnJheShyKXx8ciBpbnN0YW5jZW9mIFVSTFNlYXJjaFBhcmFtcz9yOk9iamVjdC5rZXlzKHIpLnJlZHVjZSgocyxsKT0+e2xldCB1PXJbbF07cmV0dXJuIHMuY29uY2F0KEFycmF5LmlzQXJyYXkodSk/dS5tYXAoZD0+W2wsZF0pOltbbCx1XV0pfSxbXSkpfWZ1bmN0aW9uIFR2KHIscyl7bGV0IGw9cnUocik7cmV0dXJuIHMmJnMuZm9yRWFjaCgodSxkKT0+e2wuaGFzKGQpfHxzLmdldEFsbChkKS5mb3JFYWNoKGg9PntsLmFwcGVuZChkLGgpfSl9KSxsfXZhciBGbD1udWxsO2Z1bmN0aW9uIEZ2KCl7aWYoRmw9PT1udWxsKXRyeXtuZXcgRm9ybURhdGEoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZm9ybSIpLDApLEZsPSExfWNhdGNoe0ZsPSEwfXJldHVybiBGbH12YXIgTHY9bmV3IFNldChbImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIsIm11bHRpcGFydC9mb3JtLWRhdGEiLCJ0ZXh0L3BsYWluIl0pO2Z1bmN0aW9uIEphKHIpe3JldHVybiByIT1udWxsJiYhTHYuaGFzKHIpPyhNdCghMSxgIiR7cn0iIGlzIG5vdCBhIHZhbGlkIFxgZW5jVHlwZVxgIGZvciBcYDxGb3JtPlxgL1xgPGZldGNoZXIuRm9ybT5cYCBhbmQgd2lsbCBkZWZhdWx0IHRvICIke0lsfSJgKSxudWxsKTpyfWZ1bmN0aW9uIER2KHIscyl7bGV0IGwsdSxkLGgscDtpZihOdihyKSl7bGV0IG09ci5nZXRBdHRyaWJ1dGUoImFjdGlvbiIpO3U9bT94bihtLHMpOm51bGwsbD1yLmdldEF0dHJpYnV0ZSgibWV0aG9kIil8fE9sLGQ9SmEoci5nZXRBdHRyaWJ1dGUoImVuY3R5cGUiKSl8fElsLGg9bmV3IEZvcm1EYXRhKHIpfWVsc2UgaWYoRXYocil8fFJ2KHIpJiYoci50eXBlPT09InN1Ym1pdCJ8fHIudHlwZT09PSJpbWFnZSIpKXtsZXQgbT1yLmZvcm07aWYobT09bnVsbCl0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBzdWJtaXQgYSA8YnV0dG9uPiBvciA8aW5wdXQgdHlwZT0ic3VibWl0Ij4gd2l0aG91dCBhIDxmb3JtPicpO2xldCB2PXIuZ2V0QXR0cmlidXRlKCJmb3JtYWN0aW9uIil8fG0uZ2V0QXR0cmlidXRlKCJhY3Rpb24iKTtpZih1PXY/eG4odixzKTpudWxsLGw9ci5nZXRBdHRyaWJ1dGUoImZvcm1tZXRob2QiKXx8bS5nZXRBdHRyaWJ1dGUoIm1ldGhvZCIpfHxPbCxkPUphKHIuZ2V0QXR0cmlidXRlKCJmb3JtZW5jdHlwZSIpKXx8SmEobS5nZXRBdHRyaWJ1dGUoImVuY3R5cGUiKSl8fElsLGg9bmV3IEZvcm1EYXRhKG0sciksIUZ2KCkpe2xldHtuYW1lOlMsdHlwZTpFLHZhbHVlOnh9PXI7aWYoRT09PSJpbWFnZSIpe2xldCBUPVM/YCR7U30uYDoiIjtoLmFwcGVuZChgJHtUfXhgLCIwIiksaC5hcHBlbmQoYCR7VH15YCwiMCIpfWVsc2UgUyYmaC5hcHBlbmQoUyx4KX19ZWxzZXtpZihCbChyKSl0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBzdWJtaXQgZWxlbWVudCB0aGF0IGlzIG5vdCA8Zm9ybT4sIDxidXR0b24+LCBvciA8aW5wdXQgdHlwZT0ic3VibWl0fGltYWdlIj4nKTtsPU9sLHU9bnVsbCxkPUlsLHA9cn1yZXR1cm4gaCYmZD09PSJ0ZXh0L3BsYWluIiYmKHA9aCxoPXZvaWQgMCkse2FjdGlvbjp1LG1ldGhvZDpsLnRvTG93ZXJDYXNlKCksZW5jVHlwZTpkLGZvcm1EYXRhOmgsYm9keTpwfX1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPYmplY3QucHJvdG90eXBlKS5zb3J0KCkuam9pbigiXDAiKTtmdW5jdGlvbiBfdShyLHMpe2lmKHI9PT0hMXx8cj09PW51bGx8fHR5cGVvZiByPiJ1Iil0aHJvdyBuZXcgRXJyb3Iocyl9ZnVuY3Rpb24gYmgocixzLGwsdSl7bGV0IGQ9dHlwZW9mIHI9PSJzdHJpbmciP25ldyBVUkwocix0eXBlb2Ygd2luZG93PiJ1Ij8ic2VydmVyOi8vc2luZ2xlZmV0Y2gvIjp3aW5kb3cubG9jYXRpb24ub3JpZ2luKTpyO3JldHVybiBsP2QucGF0aG5hbWUuZW5kc1dpdGgoIi8iKT9kLnBhdGhuYW1lPWAke2QucGF0aG5hbWV9Xy4ke3V9YDpkLnBhdGhuYW1lPWAke2QucGF0aG5hbWV9LiR7dX1gOmQucGF0aG5hbWU9PT0iLyI/ZC5wYXRobmFtZT1gX3Jvb3QuJHt1fWA6cyYmeG4oZC5wYXRobmFtZSxzKT09PSIvIj9kLnBhdGhuYW1lPWAke29zKHMpfS9fcm9vdC4ke3V9YDpkLnBhdGhuYW1lPWAke29zKGQucGF0aG5hbWUpfS4ke3V9YCxkfWFzeW5jIGZ1bmN0aW9uIE92KHIscyl7aWYoci5pZCBpbiBzKXJldHVybiBzW3IuaWRdO3RyeXtsZXQgbD1hd2FpdCBpbXBvcnQoci5tb2R1bGUpO3JldHVybiBzW3IuaWRdPWwsbH1jYXRjaChsKXtyZXR1cm4gY29uc29sZS5lcnJvcihgRXJyb3IgbG9hZGluZyByb3V0ZSBtb2R1bGUgXGAke3IubW9kdWxlfVxgLCByZWxvYWRpbmcgcGFnZS4uLmApLGNvbnNvbGUuZXJyb3IobCksd2luZG93Ll9fcmVhY3RSb3V0ZXJDb250ZXh0JiZ3aW5kb3cuX19yZWFjdFJvdXRlckNvbnRleHQuaXNTcGFNb2RlLHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKSxuZXcgUHJvbWlzZSgoKT0+e30pfX1mdW5jdGlvbiBJdihyKXtyZXR1cm4gcj09bnVsbD8hMTpyLmhyZWY9PW51bGw/ci5yZWw9PT0icHJlbG9hZCImJnR5cGVvZiByLmltYWdlU3JjU2V0PT0ic3RyaW5nIiYmdHlwZW9mIHIuaW1hZ2VTaXplcz09InN0cmluZyI6dHlwZW9mIHIucmVsPT0ic3RyaW5nIiYmdHlwZW9mIHIuaHJlZj09InN0cmluZyJ9YXN5bmMgZnVuY3Rpb24gTXYocixzLGwpe2xldCB1PWF3YWl0IFByb21pc2UuYWxsKHIubWFwKGFzeW5jIGQ9PntsZXQgaD1zLnJvdXRlc1tkLnJvdXRlLmlkXTtpZihoKXtsZXQgcD1hd2FpdCBPdihoLGwpO3JldHVybiBwLmxpbmtzP3AubGlua3MoKTpbXX1yZXR1cm5bXX0pKTtyZXR1cm4gVXYodS5mbGF0KDEpLmZpbHRlcihJdikuZmlsdGVyKGQ9PmQucmVsPT09InN0eWxlc2hlZXQifHxkLnJlbD09PSJwcmVsb2FkIikubWFwKGQ9PmQucmVsPT09InN0eWxlc2hlZXQiP3suLi5kLHJlbDoicHJlZmV0Y2giLGFzOiJzdHlsZSJ9OnsuLi5kLHJlbDoicHJlZmV0Y2gifSkpfWZ1bmN0aW9uIEpmKHIscyxsLHUsZCxoKXtsZXQgcD0odixTKT0+bFtTXT92LnJvdXRlLmlkIT09bFtTXS5yb3V0ZS5pZDohMCxtPSh2LFMpPT57dmFyIEU7cmV0dXJuIGxbU10ucGF0aG5hbWUhPT12LnBhdGhuYW1lfHwoKEU9bFtTXS5yb3V0ZS5wYXRoKT09bnVsbD92b2lkIDA6RS5lbmRzV2l0aCgiKiIpKSYmbFtTXS5wYXJhbXNbIioiXSE9PXYucGFyYW1zWyIqIl19O3JldHVybiBoPT09ImFzc2V0cyI/cy5maWx0ZXIoKHYsUyk9PnAodixTKXx8bSh2LFMpKTpoPT09ImRhdGEiP3MuZmlsdGVyKCh2LFMpPT57dmFyIHg7bGV0IEU9dS5yb3V0ZXNbdi5yb3V0ZS5pZF07aWYoIUV8fCFFLmhhc0xvYWRlcilyZXR1cm4hMTtpZihwKHYsUyl8fG0odixTKSlyZXR1cm4hMDtpZih2LnJvdXRlLnNob3VsZFJldmFsaWRhdGUpe2xldCBUPXYucm91dGUuc2hvdWxkUmV2YWxpZGF0ZSh7Y3VycmVudFVybDpuZXcgVVJMKGQucGF0aG5hbWUrZC5zZWFyY2grZC5oYXNoLHdpbmRvdy5vcmlnaW4pLGN1cnJlbnRQYXJhbXM6KCh4PWxbMF0pPT1udWxsP3ZvaWQgMDp4LnBhcmFtcyl8fHt9LG5leHRVcmw6bmV3IFVSTChyLHdpbmRvdy5vcmlnaW4pLG5leHRQYXJhbXM6di5wYXJhbXMsZGVmYXVsdFNob3VsZFJldmFsaWRhdGU6ITB9KTtpZih0eXBlb2YgVD09ImJvb2xlYW4iKXJldHVybiBUfXJldHVybiEwfSk6W119ZnVuY3Rpb24genYocixzLHtpbmNsdWRlSHlkcmF0ZUZhbGxiYWNrOmx9PXt9KXtyZXR1cm4gQXYoci5tYXAodT0+e2xldCBkPXMucm91dGVzW3Uucm91dGUuaWRdO2lmKCFkKXJldHVybltdO2xldCBoPVtkLm1vZHVsZV07cmV0dXJuIGQuY2xpZW50QWN0aW9uTW9kdWxlJiYoaD1oLmNvbmNhdChkLmNsaWVudEFjdGlvbk1vZHVsZSkpLGQuY2xpZW50TG9hZGVyTW9kdWxlJiYoaD1oLmNvbmNhdChkLmNsaWVudExvYWRlck1vZHVsZSkpLGwmJmQuaHlkcmF0ZUZhbGxiYWNrTW9kdWxlJiYoaD1oLmNvbmNhdChkLmh5ZHJhdGVGYWxsYmFja01vZHVsZSkpLGQuaW1wb3J0cyYmKGg9aC5jb25jYXQoZC5pbXBvcnRzKSksaH0pLmZsYXQoMSkpfWZ1bmN0aW9uIEF2KHIpe3JldHVyblsuLi5uZXcgU2V0KHIpXX1mdW5jdGlvbiAkdihyKXtsZXQgcz17fSxsPU9iamVjdC5rZXlzKHIpLnNvcnQoKTtmb3IobGV0IHUgb2YgbClzW3VdPXJbdV07cmV0dXJuIHN9ZnVuY3Rpb24gVXYocixzKXtsZXQgbD1uZXcgU2V0O3JldHVybiBuZXcgU2V0KHMpLHIucmVkdWNlKCh1LGQpPT57bGV0IGg9SlNPTi5zdHJpbmdpZnkoJHYoZCkpO3JldHVybiBsLmhhcyhoKXx8KGwuYWRkKGgpLHUucHVzaCh7a2V5OmgsbGluazpkfSkpLHV9LFtdKX1mdW5jdGlvbiBUdSgpe2xldCByPWoudXNlQ29udGV4dChjcyk7cmV0dXJuIF91KHIsIllvdSBtdXN0IHJlbmRlciB0aGlzIGVsZW1lbnQgaW5zaWRlIGEgPERhdGFSb3V0ZXJDb250ZXh0LlByb3ZpZGVyPiBlbGVtZW50Iikscn1mdW5jdGlvbiBidigpe2xldCByPWoudXNlQ29udGV4dChibCk7cmV0dXJuIF91KHIsIllvdSBtdXN0IHJlbmRlciB0aGlzIGVsZW1lbnQgaW5zaWRlIGEgPERhdGFSb3V0ZXJTdGF0ZUNvbnRleHQuUHJvdmlkZXI+IGVsZW1lbnQiKSxyfXZhciBGdT1qLmNyZWF0ZUNvbnRleHQodm9pZCAwKTtGdS5kaXNwbGF5TmFtZT0iRnJhbWV3b3JrQ29udGV4dCI7ZnVuY3Rpb24gSGwoKXtsZXQgcj1qLnVzZUNvbnRleHQoRnUpO3JldHVybiBfdShyLCJZb3UgbXVzdCByZW5kZXIgdGhpcyBlbGVtZW50IGluc2lkZSBhIDxIeWRyYXRlZFJvdXRlcj4gZWxlbWVudCIpLHJ9ZnVuY3Rpb24gQnYocixzKXtsZXQgbD1qLnVzZUNvbnRleHQoRnUpLFt1LGRdPWoudXNlU3RhdGUoITEpLFtoLHBdPWoudXNlU3RhdGUoITEpLHtvbkZvY3VzOm0sb25CbHVyOnYsb25Nb3VzZUVudGVyOlMsb25Nb3VzZUxlYXZlOkUsb25Ub3VjaFN0YXJ0Onh9PXMsVD1qLnVzZVJlZihudWxsKTtqLnVzZUVmZmVjdCgoKT0+e2lmKHI9PT0icmVuZGVyIiYmcCghMCkscj09PSJ2aWV3cG9ydCIpe2xldCBMPVU9PntVLmZvckVhY2goUT0+e3AoUS5pc0ludGVyc2VjdGluZyl9KX0sUD1uZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoTCx7dGhyZXNob2xkOi41fSk7cmV0dXJuIFQuY3VycmVudCYmUC5vYnNlcnZlKFQuY3VycmVudCksKCk9PntQLmRpc2Nvbm5lY3QoKX19fSxbcl0pLGoudXNlRWZmZWN0KCgpPT57aWYodSl7bGV0IEw9c2V0VGltZW91dCgoKT0+e3AoITApfSwxMDApO3JldHVybigpPT57Y2xlYXJUaW1lb3V0KEwpfX19LFt1XSk7bGV0IE89KCk9PntkKCEwKX0sQT0oKT0+e2QoITEpLHAoITEpfTtyZXR1cm4gbD9yIT09ImludGVudCI/W2gsVCx7fV06W2gsVCx7b25Gb2N1czplaShtLE8pLG9uQmx1cjplaSh2LEEpLG9uTW91c2VFbnRlcjplaShTLE8pLG9uTW91c2VMZWF2ZTplaShFLEEpLG9uVG91Y2hTdGFydDplaSh4LE8pfV06WyExLFQse31dfWZ1bmN0aW9uIGVpKHIscyl7cmV0dXJuIGw9PntyJiZyKGwpLGwuZGVmYXVsdFByZXZlbnRlZHx8cyhsKX19ZnVuY3Rpb24gSHYoe3BhZ2U6ciwuLi5zfSl7bGV0IGw9ZXYoKSx7bm9uY2U6dX09SGwoKSx7cm91dGVyOmR9PVR1KCksaD1qLnVzZU1lbW8oKCk9PkNoKGQucm91dGVzLHIsZC5iYXNlbmFtZSksW2Qucm91dGVzLHIsZC5iYXNlbmFtZV0pO3JldHVybiBoPyhzLm5vbmNlPT1udWxsJiZ1JiYocz17Li4ucyxub25jZTp1fSksbD9qLmNyZWF0ZUVsZW1lbnQocXYse3BhZ2U6cixtYXRjaGVzOmgsLi4uc30pOmouY3JlYXRlRWxlbWVudChXdix7cGFnZTpyLG1hdGNoZXM6aCwuLi5zfSkpOm51bGx9ZnVuY3Rpb24gUXYocil7bGV0e21hbmlmZXN0OnMscm91dGVNb2R1bGVzOmx9PUhsKCksW3UsZF09ai51c2VTdGF0ZShbXSk7cmV0dXJuIGoudXNlRWZmZWN0KCgpPT57bGV0IGg9ITE7cmV0dXJuIE12KHIscyxsKS50aGVuKHA9PntofHxkKHApfSksKCk9PntoPSEwfX0sW3IscyxsXSksdX1mdW5jdGlvbiBxdih7cGFnZTpyLG1hdGNoZXM6cywuLi5sfSl7bGV0IHU9S3QoKSx7ZnV0dXJlOmR9PUhsKCkse2Jhc2VuYW1lOmh9PVR1KCkscD1qLnVzZU1lbW8oKCk9PntpZihyPT09dS5wYXRobmFtZSt1LnNlYXJjaCt1Lmhhc2gpcmV0dXJuW107bGV0IG09YmgocixoLGQudjhfdHJhaWxpbmdTbGFzaEF3YXJlRGF0YVJlcXVlc3RzLCJyc2MiKSx2PSExLFM9W107Zm9yKGxldCBFIG9mIHMpdHlwZW9mIEUucm91dGUuc2hvdWxkUmV2YWxpZGF0ZT09ImZ1bmN0aW9uIj92PSEwOlMucHVzaChFLnJvdXRlLmlkKTtyZXR1cm4gdiYmUy5sZW5ndGg+MCYmbS5zZWFyY2hQYXJhbXMuc2V0KCJfcm91dGVzIixTLmpvaW4oIiwiKSksW20ucGF0aG5hbWUrbS5zZWFyY2hdfSxbaCxkLnY4X3RyYWlsaW5nU2xhc2hBd2FyZURhdGFSZXF1ZXN0cyxyLHUsc10pO3JldHVybiBqLmNyZWF0ZUVsZW1lbnQoai5GcmFnbWVudCxudWxsLHAubWFwKG09PmouY3JlYXRlRWxlbWVudCgibGluayIse2tleTptLHJlbDoicHJlZmV0Y2giLGFzOiJmZXRjaCIsaHJlZjptLC4uLmx9KSkpfWZ1bmN0aW9uIFd2KHtwYWdlOnIsbWF0Y2hlczpzLC4uLmx9KXtsZXQgdT1LdCgpLHtmdXR1cmU6ZCxtYW5pZmVzdDpoLHJvdXRlTW9kdWxlczpwfT1IbCgpLHtiYXNlbmFtZTptfT1UdSgpLHtsb2FkZXJEYXRhOnYsbWF0Y2hlczpTfT1idigpLEU9ai51c2VNZW1vKCgpPT5KZihyLHMsUyxoLHUsImRhdGEiKSxbcixzLFMsaCx1XSkseD1qLnVzZU1lbW8oKCk9PkpmKHIscyxTLGgsdSwiYXNzZXRzIiksW3IscyxTLGgsdV0pLFQ9ai51c2VNZW1vKCgpPT57aWYocj09PXUucGF0aG5hbWUrdS5zZWFyY2grdS5oYXNoKXJldHVybltdO2xldCBMPW5ldyBTZXQsUD0hMTtpZihzLmZvckVhY2goUT0+e3ZhciBWO2xldCBiPWgucm91dGVzW1Eucm91dGUuaWRdOyFifHwhYi5oYXNMb2FkZXJ8fCghRS5zb21lKEg9Pkgucm91dGUuaWQ9PT1RLnJvdXRlLmlkKSYmUS5yb3V0ZS5pZCBpbiB2JiYoKFY9cFtRLnJvdXRlLmlkXSkhPW51bGwmJlYuc2hvdWxkUmV2YWxpZGF0ZSl8fGIuaGFzQ2xpZW50TG9hZGVyP1A9ITA6TC5hZGQoUS5yb3V0ZS5pZCkpfSksTC5zaXplPT09MClyZXR1cm5bXTtsZXQgVT1iaChyLG0sZC52OF90cmFpbGluZ1NsYXNoQXdhcmVEYXRhUmVxdWVzdHMsImRhdGEiKTtyZXR1cm4gUCYmTC5zaXplPjAmJlUuc2VhcmNoUGFyYW1zLnNldCgiX3JvdXRlcyIscy5maWx0ZXIoUT0+TC5oYXMoUS5yb3V0ZS5pZCkpLm1hcChRPT5RLnJvdXRlLmlkKS5qb2luKCIsIikpLFtVLnBhdGhuYW1lK1Uuc2VhcmNoXX0sW20sZC52OF90cmFpbGluZ1NsYXNoQXdhcmVEYXRhUmVxdWVzdHMsdix1LGgsRSxzLHIscF0pLE89ai51c2VNZW1vKCgpPT56dih4LGgpLFt4LGhdKSxBPVF2KHgpO3JldHVybiBqLmNyZWF0ZUVsZW1lbnQoai5GcmFnbWVudCxudWxsLFQubWFwKEw9PmouY3JlYXRlRWxlbWVudCgibGluayIse2tleTpMLHJlbDoicHJlZmV0Y2giLGFzOiJmZXRjaCIsaHJlZjpMLC4uLmx9KSksTy5tYXAoTD0+ai5jcmVhdGVFbGVtZW50KCJsaW5rIix7a2V5OkwscmVsOiJtb2R1bGVwcmVsb2FkIixocmVmOkwsLi4ubH0pKSxBLm1hcCgoe2tleTpMLGxpbms6UH0pPT5qLmNyZWF0ZUVsZW1lbnQoImxpbmsiLHtrZXk6TCxub25jZTpsLm5vbmNlLC4uLlAsY3Jvc3NPcmlnaW46UC5jcm9zc09yaWdpbj8/bC5jcm9zc09yaWdpbn0pKSl9ZnVuY3Rpb24gVnYoLi4ucil7cmV0dXJuIHM9PntyLmZvckVhY2gobD0+e3R5cGVvZiBsPT0iZnVuY3Rpb24iP2wocyk6bCE9bnVsbCYmKGwuY3VycmVudD1zKX0pfX12YXIgS3Y9dHlwZW9mIHdpbmRvdzwidSImJnR5cGVvZiB3aW5kb3cuZG9jdW1lbnQ8InUiJiZ0eXBlb2Ygd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQ8InUiO3RyeXtLdiYmKHdpbmRvdy5fX3JlYWN0Um91dGVyVmVyc2lvbj0iNy4xOC40Iil9Y2F0Y2h7fWZ1bmN0aW9uIEd2KHtiYXNlbmFtZTpyLGNoaWxkcmVuOnMsdXNlVHJhbnNpdGlvbnM6bCx3aW5kb3c6dX0pe2xldCBkPWoudXNlUmVmKCk7ZC5jdXJyZW50PT1udWxsJiYoZC5jdXJyZW50PUVnKHt3aW5kb3c6dSx2NUNvbXBhdDohMH0pKTtsZXQgaD1kLmN1cnJlbnQsW3AsbV09ai51c2VTdGF0ZSh7YWN0aW9uOmguYWN0aW9uLGxvY2F0aW9uOmgubG9jYXRpb259KSx2PWoudXNlQ2FsbGJhY2soUz0+e2w9PT0hMT9tKFMpOmouc3RhcnRUcmFuc2l0aW9uKCgpPT5tKFMpKX0sW2xdKTtyZXR1cm4gai51c2VMYXlvdXRFZmZlY3QoKCk9PmgubGlzdGVuKHYpLFtoLHZdKSxqLmNyZWF0ZUVsZW1lbnQoQ3Yse2Jhc2VuYW1lOnIsY2hpbGRyZW46cyxsb2NhdGlvbjpwLmxvY2F0aW9uLG5hdmlnYXRpb25UeXBlOnAuYWN0aW9uLG5hdmlnYXRvcjpoLHVzZVRyYW5zaXRpb25zOmx9KX12YXIgeHI9ai5mb3J3YXJkUmVmKGZ1bmN0aW9uKHtvbkNsaWNrOnMsZGlzY292ZXI6bD0icmVuZGVyIixwcmVmZXRjaDp1PSJub25lIixyZWxhdGl2ZTpkLHJlbG9hZERvY3VtZW50OmgscmVwbGFjZTpwLG1hc2s6bSxzdGF0ZTp2LHRhcmdldDpTLHRvOkUscHJldmVudFNjcm9sbFJlc2V0Ongsdmlld1RyYW5zaXRpb246VCxkZWZhdWx0U2hvdWxkUmV2YWxpZGF0ZTpPLC4uLkF9LEwpe2xldHtiYXNlbmFtZTpQLG5hdmlnYXRvcjpVLHVzZVRyYW5zaXRpb25zOlF9PWoudXNlQ29udGV4dChFdCksYj10eXBlb2YgRT09InN0cmluZyImJmt1LnRlc3QoRSksVj1UaChFLFApO0U9Vi50bztsZXQgSD1vdihFLHtyZWxhdGl2ZTpkfSkscmU9S3QoKSx0ZT1udWxsO2lmKG0pe2xldCBzZT1VbChtLFtdLHJlLm1hc2s/cmUubWFzay5wYXRobmFtZToiLyIsITApO1AhPT0iLyImJihzZS5wYXRobmFtZT1zZS5wYXRobmFtZT09PSIvIj9QOld0KFtQLHNlLnBhdGhuYW1lXSkpLHRlPVUuY3JlYXRlSHJlZihzZSl9bGV0W29lLHVlLGhlXT1Cdih1LEEpLGJlPVp2KEUse3JlcGxhY2U6cCxtYXNrOm0sc3RhdGU6dix0YXJnZXQ6UyxwcmV2ZW50U2Nyb2xsUmVzZXQ6eCxyZWxhdGl2ZTpkLHZpZXdUcmFuc2l0aW9uOlQsZGVmYXVsdFNob3VsZFJldmFsaWRhdGU6Tyx1c2VUcmFuc2l0aW9uczpRfSk7ZnVuY3Rpb24gJGUoc2Upe3MmJnMoc2UpLHNlLmRlZmF1bHRQcmV2ZW50ZWR8fGJlKHNlKX1sZXQgX2U9IShWLmlzRXh0ZXJuYWx8fGgpLFo9ai5jcmVhdGVFbGVtZW50KCJhIix7Li4uQSwuLi5oZSxocmVmOihfZT90ZTp2b2lkIDApfHxWLmFic29sdXRlVVJMfHxILG9uQ2xpY2s6X2U/JGU6cyxyZWY6VnYoTCx1ZSksdGFyZ2V0OlMsImRhdGEtZGlzY292ZXIiOiFiJiZsPT09InJlbmRlciI/InRydWUiOnZvaWQgMH0pO3JldHVybiBvZSYmIWI/ai5jcmVhdGVFbGVtZW50KGouRnJhZ21lbnQsbnVsbCxaLGouY3JlYXRlRWxlbWVudChIdix7cGFnZTpIfSkpOlp9KTt4ci5kaXNwbGF5TmFtZT0iTGluayI7dmFyIEp2PWouZm9yd2FyZFJlZihmdW5jdGlvbih7ImFyaWEtY3VycmVudCI6cz0icGFnZSIsY2FzZVNlbnNpdGl2ZTpsPSExLGNsYXNzTmFtZTp1PSIiLGVuZDpkPSExLHN0eWxlOmgsdG86cCx2aWV3VHJhbnNpdGlvbjptLGNoaWxkcmVuOnYsLi4uU30sRSl7bGV0IHg9bWkocCx7cmVsYXRpdmU6Uy5yZWxhdGl2ZX0pLFQ9S3QoKSxPPWoudXNlQ29udGV4dChibCkse25hdmlnYXRvcjpBLGJhc2VuYW1lOkx9PWoudXNlQ29udGV4dChFdCksUD1PIT1udWxsJiZpeSh4KSYmbT09PSEwLFU9QS5lbmNvZGVMb2NhdGlvbj9BLmVuY29kZUxvY2F0aW9uKHgpLnBhdGhuYW1lOngucGF0aG5hbWUsUT1ULnBhdGhuYW1lLGI9TyYmTy5uYXZpZ2F0aW9uJiZPLm5hdmlnYXRpb24ubG9jYXRpb24/Ty5uYXZpZ2F0aW9uLmxvY2F0aW9uLnBhdGhuYW1lOm51bGw7bHx8KFE9US50b0xvd2VyQ2FzZSgpLGI9Yj9iLnRvTG93ZXJDYXNlKCk6bnVsbCxVPVUudG9Mb3dlckNhc2UoKSksYiYmTCYmKGI9eG4oYixMKXx8Yik7Y29uc3QgVj1VIT09Ii8iJiZVLmVuZHNXaXRoKCIvIik/VS5sZW5ndGgtMTpVLmxlbmd0aDtsZXQgSD1RPT09VXx8IWQmJlEuc3RhcnRzV2l0aChVKSYmUS5jaGFyQXQoVik9PT0iLyIscmU9YiE9bnVsbCYmKGI9PT1VfHwhZCYmYi5zdGFydHNXaXRoKFUpJiZiLmNoYXJBdChVLmxlbmd0aCk9PT0iLyIpLHRlPXtpc0FjdGl2ZTpILGlzUGVuZGluZzpyZSxpc1RyYW5zaXRpb25pbmc6UH0sb2U9SD9zOnZvaWQgMCx1ZTt0eXBlb2YgdT09ImZ1bmN0aW9uIj91ZT11KHRlKTp1ZT1bdSxIPyJhY3RpdmUiOm51bGwscmU/InBlbmRpbmciOm51bGwsUD8idHJhbnNpdGlvbmluZyI6bnVsbF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oIiAiKTtsZXQgaGU9dHlwZW9mIGg9PSJmdW5jdGlvbiI/aCh0ZSk6aDtyZXR1cm4gai5jcmVhdGVFbGVtZW50KHhyLHsuLi5TLCJhcmlhLWN1cnJlbnQiOm9lLGNsYXNzTmFtZTp1ZSxyZWY6RSxzdHlsZTpoZSx0bzpwLHZpZXdUcmFuc2l0aW9uOm19LHR5cGVvZiB2PT0iZnVuY3Rpb24iP3YodGUpOnYpfSk7SnYuZGlzcGxheU5hbWU9Ik5hdkxpbmsiO3ZhciBZdj1qLmZvcndhcmRSZWYoKHtkaXNjb3ZlcjpyPSJyZW5kZXIiLGZldGNoZXJLZXk6cyxuYXZpZ2F0ZTpsLHJlbG9hZERvY3VtZW50OnUscmVwbGFjZTpkLHN0YXRlOmgsbWV0aG9kOnA9T2wsYWN0aW9uOm0sb25TdWJtaXQ6dixyZWxhdGl2ZTpTLHByZXZlbnRTY3JvbGxSZXNldDpFLHZpZXdUcmFuc2l0aW9uOngsZGVmYXVsdFNob3VsZFJldmFsaWRhdGU6VCwuLi5PfSxBKT0+e2xldHt1c2VUcmFuc2l0aW9uczpMfT1qLnVzZUNvbnRleHQoRXQpLFA9cnkoKSxVPXN5KG0se3JlbGF0aXZlOlN9KSxRPXAudG9Mb3dlckNhc2UoKT09PSJnZXQiPyJnZXQiOiJwb3N0IixiPXR5cGVvZiBtPT0ic3RyaW5nIiYma3UudGVzdChtKSxWPUg9PntpZih2JiZ2KEgpLEguZGVmYXVsdFByZXZlbnRlZClyZXR1cm47SC5wcmV2ZW50RGVmYXVsdCgpO2xldCByZT1ILm5hdGl2ZUV2ZW50LnN1Ym1pdHRlcix0ZT0ocmU9PW51bGw/dm9pZCAwOnJlLmdldEF0dHJpYnV0ZSgiZm9ybW1ldGhvZCIpKXx8cCxvZT0oKT0+UChyZXx8SC5jdXJyZW50VGFyZ2V0LHtmZXRjaGVyS2V5OnMsbWV0aG9kOnRlLG5hdmlnYXRlOmwscmVwbGFjZTpkLHN0YXRlOmgscmVsYXRpdmU6UyxwcmV2ZW50U2Nyb2xsUmVzZXQ6RSx2aWV3VHJhbnNpdGlvbjp4LGRlZmF1bHRTaG91bGRSZXZhbGlkYXRlOlR9KTtMJiZsIT09ITE/ai5zdGFydFRyYW5zaXRpb24oKCk9Pm9lKCkpOm9lKCl9O3JldHVybiBqLmNyZWF0ZUVsZW1lbnQoImZvcm0iLHtyZWY6QSxtZXRob2Q6USxhY3Rpb246VSxvblN1Ym1pdDp1P3Y6ViwuLi5PLCJkYXRhLWRpc2NvdmVyIjohYiYmcj09PSJyZW5kZXIiPyJ0cnVlIjp2b2lkIDB9KX0pO1l2LmRpc3BsYXlOYW1lPSJGb3JtIjtmdW5jdGlvbiBYdihyKXtyZXR1cm5gJHtyfSBtdXN0IGJlIHVzZWQgd2l0aGluIGEgZGF0YSByb3V0ZXIuICBTZWUgaHR0cHM6Ly9yZWFjdHJvdXRlci5jb20vZW4vbWFpbi9yb3V0ZXJzL3BpY2tpbmctYS1yb3V0ZXIuYH1mdW5jdGlvbiBCaChyKXtsZXQgcz1qLnVzZUNvbnRleHQoY3MpO3JldHVybiBJZShzLFh2KHIpKSxzfWZ1bmN0aW9uIFp2KHIse3RhcmdldDpzLHJlcGxhY2U6bCxtYXNrOnUsc3RhdGU6ZCxwcmV2ZW50U2Nyb2xsUmVzZXQ6aCxyZWxhdGl2ZTpwLHZpZXdUcmFuc2l0aW9uOm0sZGVmYXVsdFNob3VsZFJldmFsaWRhdGU6dix1c2VUcmFuc2l0aW9uczpTfT17fSl7bGV0IEU9S24oKSx4PUt0KCksVD1taShyLHtyZWxhdGl2ZTpwfSk7cmV0dXJuIGoudXNlQ2FsbGJhY2soTz0+e2lmKF92KE8scykpe08ucHJldmVudERlZmF1bHQoKTtsZXQgQT1sIT09dm9pZCAwP2w6eXIoeCk9PT15cihUKSxMPSgpPT5FKHIse3JlcGxhY2U6QSxtYXNrOnUsc3RhdGU6ZCxwcmV2ZW50U2Nyb2xsUmVzZXQ6aCxyZWxhdGl2ZTpwLHZpZXdUcmFuc2l0aW9uOm0sZGVmYXVsdFNob3VsZFJldmFsaWRhdGU6dn0pO1M/ai5zdGFydFRyYW5zaXRpb24oKCk9PkwoKSk6TCgpfX0sW3gsRSxULGwsdSxkLHMscixoLHAsbSx2LFNdKX1mdW5jdGlvbiBleShyKXtNdCh0eXBlb2YgVVJMU2VhcmNoUGFyYW1zPCJ1IiwiWW91IGNhbm5vdCB1c2UgdGhlIGB1c2VTZWFyY2hQYXJhbXNgIGhvb2sgaW4gYSBicm93c2VyIHRoYXQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgVVJMU2VhcmNoUGFyYW1zIEFQSS4gSWYgeW91IG5lZWQgdG8gc3VwcG9ydCBJbnRlcm5ldCBFeHBsb3JlciAxMSwgd2UgcmVjb21tZW5kIHlvdSBsb2FkIGEgcG9seWZpbGwgc3VjaCBhcyBodHRwczovL2dpdGh1Yi5jb20vdW5nYXAvdXJsLXNlYXJjaC1wYXJhbXMuIik7bGV0IHM9ai51c2VSZWYocnUocikpLGw9ai51c2VSZWYoITEpLHU9S3QoKSxkPWoudXNlTWVtbygoKT0+VHYodS5zZWFyY2gsbC5jdXJyZW50P251bGw6cy5jdXJyZW50KSxbdS5zZWFyY2hdKSxoPUtuKCkscD1qLnVzZUNhbGxiYWNrKChtLHYpPT57Y29uc3QgUz1ydSh0eXBlb2YgbT09ImZ1bmN0aW9uIj9tKG5ldyBVUkxTZWFyY2hQYXJhbXMoZCkpOm0pO2wuY3VycmVudD0hMCxoKCI/IitTLHYpfSxbaCxkXSk7cmV0dXJuW2QscF19dmFyIHR5PTAsbnk9KCk9PmBfXyR7U3RyaW5nKCsrdHkpfV9fYDtmdW5jdGlvbiByeSgpe2xldHtyb3V0ZXI6cn09QmgoInVzZVN1Ym1pdCIpLHtiYXNlbmFtZTpzfT1qLnVzZUNvbnRleHQoRXQpLGw9eHYoKSx1PXIuZmV0Y2gsZD1yLm5hdmlnYXRlO3JldHVybiBqLnVzZUNhbGxiYWNrKGFzeW5jKGgscD17fSk9PntsZXR7YWN0aW9uOm0sbWV0aG9kOnYsZW5jVHlwZTpTLGZvcm1EYXRhOkUsYm9keTp4fT1EdihoLHMpO2lmKHAubmF2aWdhdGU9PT0hMSl7bGV0IFQ9cC5mZXRjaGVyS2V5fHxueSgpO2F3YWl0IHUoVCxsLHAuYWN0aW9ufHxtLHtkZWZhdWx0U2hvdWxkUmV2YWxpZGF0ZTpwLmRlZmF1bHRTaG91bGRSZXZhbGlkYXRlLHByZXZlbnRTY3JvbGxSZXNldDpwLnByZXZlbnRTY3JvbGxSZXNldCxmb3JtRGF0YTpFLGJvZHk6eCxmb3JtTWV0aG9kOnAubWV0aG9kfHx2LGZvcm1FbmNUeXBlOnAuZW5jVHlwZXx8UyxmbHVzaFN5bmM6cC5mbHVzaFN5bmN9KX1lbHNlIGF3YWl0IGQocC5hY3Rpb258fG0se2RlZmF1bHRTaG91bGRSZXZhbGlkYXRlOnAuZGVmYXVsdFNob3VsZFJldmFsaWRhdGUscHJldmVudFNjcm9sbFJlc2V0OnAucHJldmVudFNjcm9sbFJlc2V0LGZvcm1EYXRhOkUsYm9keTp4LGZvcm1NZXRob2Q6cC5tZXRob2R8fHYsZm9ybUVuY1R5cGU6cC5lbmNUeXBlfHxTLHJlcGxhY2U6cC5yZXBsYWNlLHN0YXRlOnAuc3RhdGUsZnJvbVJvdXRlSWQ6bCxmbHVzaFN5bmM6cC5mbHVzaFN5bmMsdmlld1RyYW5zaXRpb246cC52aWV3VHJhbnNpdGlvbn0pfSxbdSxkLHMsbF0pfWZ1bmN0aW9uIHN5KHIse3JlbGF0aXZlOnN9PXt9KXtsZXR7YmFzZW5hbWU6bH09ai51c2VDb250ZXh0KEV0KSx1PWoudXNlQ29udGV4dChWdCk7SWUodSwidXNlRm9ybUFjdGlvbiBtdXN0IGJlIHVzZWQgaW5zaWRlIGEgUm91dGVDb250ZXh0Iik7bGV0W2RdPXUubWF0Y2hlcy5zbGljZSgtMSksaD17Li4ubWkocnx8Ii4iLHtyZWxhdGl2ZTpzfSl9LHA9S3QoKTtpZihyPT1udWxsKXtoLnNlYXJjaD1wLnNlYXJjaDtsZXQgbT1uZXcgVVJMU2VhcmNoUGFyYW1zKGguc2VhcmNoKSx2PW0uZ2V0QWxsKCJpbmRleCIpO2lmKHYuc29tZShFPT5FPT09IiIpKXttLmRlbGV0ZSgiaW5kZXgiKSx2LmZpbHRlcih4PT54KS5mb3JFYWNoKHg9Pm0uYXBwZW5kKCJpbmRleCIseCkpO2xldCBFPW0udG9TdHJpbmcoKTtoLnNlYXJjaD1FP2A/JHtFfWA6IiJ9fXJldHVybighcnx8cj09PSIuIikmJmQucm91dGUuaW5kZXgmJihoLnNlYXJjaD1oLnNlYXJjaD9oLnNlYXJjaC5yZXBsYWNlKC9eXD8vLCI/aW5kZXgmIik6Ij9pbmRleCIpLGwhPT0iLyImJihoLnBhdGhuYW1lPWgucGF0aG5hbWU9PT0iLyI/bDpXdChbbCxoLnBhdGhuYW1lXSkpLHlyKGgpfWZ1bmN0aW9uIGl5KHIse3JlbGF0aXZlOnN9PXt9KXtsZXQgbD1qLnVzZUNvbnRleHQoRGgpO0llKGwhPW51bGwsImB1c2VWaWV3VHJhbnNpdGlvblN0YXRlYCBtdXN0IGJlIHVzZWQgd2l0aGluIGByZWFjdC1yb3V0ZXItZG9tYCdzIGBSb3V0ZXJQcm92aWRlcmAuICBEaWQgeW91IGFjY2lkZW50YWxseSBpbXBvcnQgYFJvdXRlclByb3ZpZGVyYCBmcm9tIGByZWFjdC1yb3V0ZXJgPyIpO2xldHtiYXNlbmFtZTp1fT1CaCgidXNlVmlld1RyYW5zaXRpb25TdGF0ZSIpLGQ9bWkocix7cmVsYXRpdmU6c30pO2lmKCFsLmlzVHJhbnNpdGlvbmluZylyZXR1cm4hMTtsZXQgaD14bihsLmN1cnJlbnRMb2NhdGlvbi5wYXRobmFtZSx1KXx8bC5jdXJyZW50TG9jYXRpb24ucGF0aG5hbWUscD14bihsLm5leHRMb2NhdGlvbi5wYXRobmFtZSx1KXx8bC5uZXh0TG9jYXRpb24ucGF0aG5hbWU7cmV0dXJuIHpsKGQucGF0aG5hbWUscCkhPW51bGx8fHpsKGQucGF0aG5hbWUsaCkhPW51bGx9Y29uc3QgSGg9ai5jcmVhdGVDb250ZXh0KHZvaWQgMCksUWw9cj0+e2NvbnN0IHM9ai51c2VDb250ZXh0KEhoKTtpZighcyl0aHJvdyBuZXcgRXJyb3IoIk5vIFF1ZXJ5Q2xpZW50IHNldCwgdXNlIFF1ZXJ5Q2xpZW50UHJvdmlkZXIgdG8gc2V0IG9uZSIpO3JldHVybiBzfSxseT0oe2NsaWVudDpyLGNoaWxkcmVuOnN9KT0+KGoudXNlRWZmZWN0KCgpPT4oci5tb3VudCgpLCgpPT57ci51bm1vdW50KCl9KSxbcl0pLGMuanN4KEhoLlByb3ZpZGVyLHt2YWx1ZTpyLGNoaWxkcmVuOnN9KSksb3k9e3NldFRpbWVvdXQ6KHIscyk9PnNldFRpbWVvdXQocixzKSxjbGVhclRpbWVvdXQ6cj0+Y2xlYXJUaW1lb3V0KHIpLHNldEludGVydmFsOihyLHMpPT5zZXRJbnRlcnZhbChyLHMpLGNsZWFySW50ZXJ2YWw6cj0+Y2xlYXJJbnRlcnZhbChyKX07dmFyIFVuLHd1LGNoLGF5PShjaD1jbGFzc3tjb25zdHJ1Y3Rvcigpe25lKHRoaXMsVW4sb3kpO25lKHRoaXMsd3UsITEpfXNldFRpbWVvdXRQcm92aWRlcihyKXtXKHRoaXMsVW4scil9c2V0VGltZW91dChyLHMpe3JldHVybiB5KHRoaXMsVW4pLnNldFRpbWVvdXQocixzKX1jbGVhclRpbWVvdXQocil7eSh0aGlzLFVuKS5jbGVhclRpbWVvdXQocil9c2V0SW50ZXJ2YWwocixzKXtyZXR1cm4geSh0aGlzLFVuKS5zZXRJbnRlcnZhbChyLHMpfWNsZWFySW50ZXJ2YWwocil7eSh0aGlzLFVuKS5jbGVhckludGVydmFsKHIpfX0sVW49bmV3IFdlYWtNYXAsd3U9bmV3IFdlYWtNYXAsY2gpO2NvbnN0IGFyPW5ldyBheTtmdW5jdGlvbiB1eShyKXtzZXRUaW1lb3V0KHIsMCl9Y29uc3QgY3k9dHlwZW9mIHdpbmRvdz4idSJ8fCJEZW5vImluIGdsb2JhbFRoaXM7ZnVuY3Rpb24gZHQoKXt9ZnVuY3Rpb24gZHkocixzKXtyZXR1cm4gdHlwZW9mIHI9PSJmdW5jdGlvbiI/cihzKTpyfWZ1bmN0aW9uIFFoKHIpe3JldHVybiB0eXBlb2Ygcj09Im51bWJlciImJnI+PTAmJnIhPT0xLzB9ZnVuY3Rpb24gcWgocixzKXtyZXR1cm4gTWF0aC5tYXgocisoc3x8MCktRGF0ZS5ub3coKSwwKX1mdW5jdGlvbiBPZShyLHMpe3JldHVybiB0eXBlb2Ygcj09ImZ1bmN0aW9uIj9yKHMpOnJ9ZnVuY3Rpb24gWWYocixzKXtjb25zdHt0eXBlOmw9ImFsbCIsZXhhY3Q6dSxmZXRjaFN0YXR1czpkLHByZWRpY2F0ZTpoLHF1ZXJ5S2V5OnAsc3RhbGU6bX09cjtpZihwKXtpZih1KXtpZihzLnF1ZXJ5SGFzaCE9PUx1KHAscy5vcHRpb25zKSlyZXR1cm4hMX1lbHNlIGlmKCFhcyhzLnF1ZXJ5S2V5LHApKXJldHVybiExfWlmKGwhPT0iYWxsIil7Y29uc3Qgdj1zLmlzQWN0aXZlKCk7aWYobD09PSJhY3RpdmUiJiYhdnx8bD09PSJpbmFjdGl2ZSImJnYpcmV0dXJuITF9cmV0dXJuISh0eXBlb2YgbT09ImJvb2xlYW4iJiZzLmlzU3RhbGUoKSE9PW18fGQmJmQhPT1zLnN0YXRlLmZldGNoU3RhdHVzfHxoJiYhaChzKSl9ZnVuY3Rpb24gWGYocixzKXtjb25zdHtleGFjdDpsLHN0YXR1czp1LHByZWRpY2F0ZTpkLG11dGF0aW9uS2V5Omh9PXI7aWYoaCl7aWYoIXMub3B0aW9ucy5tdXRhdGlvbktleSlyZXR1cm4hMTtpZihsKXtpZih3cihzLm9wdGlvbnMubXV0YXRpb25LZXkpIT09d3IoaCkpcmV0dXJuITF9ZWxzZSBpZighYXMocy5vcHRpb25zLm11dGF0aW9uS2V5LGgpKXJldHVybiExfXJldHVybiEodSYmcy5zdGF0ZS5zdGF0dXMhPT11fHxkJiYhZChzKSl9ZnVuY3Rpb24gTHUocixzKXtyZXR1cm4oKHM9PW51bGw/dm9pZCAwOnMucXVlcnlLZXlIYXNoRm4pfHx3cikocil9ZnVuY3Rpb24gd3Iocil7cmV0dXJuIEpTT04uc3RyaW5naWZ5KHIsKHMsbCk9PnN1KGwpP09iamVjdC5rZXlzKGwpLnNvcnQoKS5yZWR1Y2UoKHUsZCk9Pih1W2RdPWxbZF0sdSkse30pOmwpfWZ1bmN0aW9uIGFzKHIscyl7aWYocj09PXMpcmV0dXJuITA7aWYodHlwZW9mIHIhPXR5cGVvZiBzKXJldHVybiExO2lmKHImJnMmJnR5cGVvZiByPT0ib2JqZWN0IiYmdHlwZW9mIHM9PSJvYmplY3QiKXtpZihBcnJheS5pc0FycmF5KHIpJiZBcnJheS5pc0FycmF5KHMpKXtpZihzLmxlbmd0aD5yLmxlbmd0aClyZXR1cm4hMTtmb3IobGV0IHU9MDt1PHMubGVuZ3RoO3UrKylpZighYXMoclt1XSxzW3VdKSlyZXR1cm4hMTtyZXR1cm4hMH1jb25zdCBsPU9iamVjdC5rZXlzKHMpO2Zvcihjb25zdCB1IG9mIGwpaWYoIWFzKHJbdV0sc1t1XSkpcmV0dXJuITE7cmV0dXJuITB9cmV0dXJuITF9Y29uc3QgZnk9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBXaChyLHMsbD0wKXtpZihyPT09cylyZXR1cm4gcjtpZihsPjUwMClyZXR1cm4gcztjb25zdCB1PVpmKHIpJiZaZihzKTtpZighdSYmIShzdShyKSYmc3UocykpKXJldHVybiBzO2NvbnN0IGQ9KHU/cjpPYmplY3Qua2V5cyhyKSkubGVuZ3RoLGg9dT9zOk9iamVjdC5rZXlzKHMpLHA9aC5sZW5ndGgsbT11P25ldyBBcnJheShwKTp7fTtsZXQgdj0wO2ZvcihsZXQgUz0wO1M8cDtTKyspe2NvbnN0IEU9dT9TOmhbU10seD1yW0VdLFQ9c1tFXTtpZih4PT09VCl7bVtFXT14LCh1P1M8ZDpmeS5jYWxsKHIsRSkpJiZ2Kys7Y29udGludWV9aWYoeD09PW51bGx8fFQ9PT1udWxsfHx0eXBlb2YgeCE9Im9iamVjdCJ8fHR5cGVvZiBUIT0ib2JqZWN0Iil7bVtFXT1UO2NvbnRpbnVlfWNvbnN0IE89V2goeCxULGwrMSk7bVtFXT1PLE89PT14JiZ2Kyt9cmV0dXJuIGQ9PT1wJiZ2PT09ZD9yOm19ZnVuY3Rpb24gTWwocixzKXtpZighc3x8T2JqZWN0LmtleXMocikubGVuZ3RoIT09T2JqZWN0LmtleXMocykubGVuZ3RoKXJldHVybiExO2Zvcihjb25zdCBsIGluIHIpaWYocltsXSE9PXNbbF0pcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gWmYocil7cmV0dXJuIEFycmF5LmlzQXJyYXkocikmJnIubGVuZ3RoPT09T2JqZWN0LmtleXMocikubGVuZ3RofWZ1bmN0aW9uIHN1KHIpe2lmKCFlaChyKSlyZXR1cm4hMTtjb25zdCBzPU9iamVjdC5nZXRQcm90b3R5cGVPZihyKSxsPXM9PW51bGw/dm9pZCAwOnMuY29uc3RydWN0b3I7aWYobD09PXZvaWQgMClyZXR1cm4hMDtpZih0eXBlb2YgbCE9ImZ1bmN0aW9uIilyZXR1cm4hMTtjb25zdCB1PWwucHJvdG90eXBlO3JldHVybiEoIWVoKHUpfHwhdS5oYXNPd25Qcm9wZXJ0eSgiaXNQcm90b3R5cGVPZiIpfHxzIT09T2JqZWN0LnByb3RvdHlwZSl9ZnVuY3Rpb24gZWgocil7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChyKT09PSJbb2JqZWN0IE9iamVjdF0ifWZ1bmN0aW9uIGh5KHIpe3JldHVybiBuZXcgUHJvbWlzZShzPT57YXIuc2V0VGltZW91dChzLHIpfSl9ZnVuY3Rpb24gaXUocixzLGwpe3JldHVybiB0eXBlb2YgbC5zdHJ1Y3R1cmFsU2hhcmluZz09ImZ1bmN0aW9uIj9sLnN0cnVjdHVyYWxTaGFyaW5nKHIscyk6bC5zdHJ1Y3R1cmFsU2hhcmluZyE9PSExP1doKHIscyk6c31mdW5jdGlvbiBweShyLHMsbD0wKXtjb25zdCB1PVsuLi5yLHNdO3JldHVybiBsJiZ1Lmxlbmd0aD5sP3Uuc2xpY2UoMSk6dX1mdW5jdGlvbiBteShyLHMsbD0wKXtjb25zdCB1PVtzLC4uLnJdO3JldHVybiBsJiZ1Lmxlbmd0aD5sP3Uuc2xpY2UoMCwtMSk6dX1jb25zdCBEdT1TeW1ib2woKTtmdW5jdGlvbiBWaChyLHMpe3JldHVybiFyLnF1ZXJ5Rm4mJihzIT1udWxsJiZzLmluaXRpYWxQcm9taXNlKT8oKT0+cy5pbml0aWFsUHJvbWlzZTohci5xdWVyeUZufHxyLnF1ZXJ5Rm49PT1EdT8oKT0+UHJvbWlzZS5yZWplY3QobmV3IEVycm9yKGBNaXNzaW5nIHF1ZXJ5Rm46ICcke3IucXVlcnlIYXNofSdgKSk6ci5xdWVyeUZufWZ1bmN0aW9uIE91KHIscyl7cmV0dXJuIHR5cGVvZiByPT0iZnVuY3Rpb24iP3IoLi4ucyk6ISFyfWZ1bmN0aW9uIGd5KHIscyxsKXtsZXQgdT0hMSxkO3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkociwic2lnbmFsIix7ZW51bWVyYWJsZTohMCxnZXQ6KCk9PihkPz8oZD1zKCkpLHV8fCh1PSEwLGQuYWJvcnRlZD9sKCk6ZC5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsbCx7b25jZTohMH0pKSxkKX0pLHJ9bGV0IHZ5PSgpPT5jeTtjb25zdCBJdT0oKT0+dnkoKTt2YXIgZnM9Y2xhc3N7Y29uc3RydWN0b3IoKXt0aGlzLmxpc3RlbmVycz1uZXcgU2V0LHRoaXMuc3Vic2NyaWJlPXRoaXMuc3Vic2NyaWJlLmJpbmQodGhpcyl9c3Vic2NyaWJlKHIpe3JldHVybiB0aGlzLmxpc3RlbmVycy5hZGQociksdGhpcy5vblN1YnNjcmliZSgpLCgpPT57dGhpcy5saXN0ZW5lcnMuZGVsZXRlKHIpLHRoaXMub25VbnN1YnNjcmliZSgpfX1oYXNMaXN0ZW5lcnMoKXtyZXR1cm4gdGhpcy5saXN0ZW5lcnMuc2l6ZT4wfW9uU3Vic2NyaWJlKCl7fW9uVW5zdWJzY3JpYmUoKXt9fSx1cixibixLcixkaCx5eT0oZGg9Y2xhc3MgZXh0ZW5kcyBmc3tjb25zdHJ1Y3Rvcigpe3N1cGVyKCk7bmUodGhpcyx1cik7bmUodGhpcyxibik7bmUodGhpcyxLcik7Vyh0aGlzLEtyLHM9PntpZih0eXBlb2Ygd2luZG93PCJ1IiYmd2luZG93LmFkZEV2ZW50TGlzdGVuZXIpe2NvbnN0IGw9KCk9PnMoKTtyZXR1cm4gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInZpc2liaWxpdHljaGFuZ2UiLGwsITEpLCgpPT57d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInZpc2liaWxpdHljaGFuZ2UiLGwpfX19KX1vblN1YnNjcmliZSgpe3kodGhpcyxibil8fHRoaXMuc2V0RXZlbnRMaXN0ZW5lcih5KHRoaXMsS3IpKX1vblVuc3Vic2NyaWJlKCl7dmFyIHM7dGhpcy5oYXNMaXN0ZW5lcnMoKXx8KChzPXkodGhpcyxibikpPT1udWxsfHxzLmNhbGwodGhpcyksVyh0aGlzLGJuLHZvaWQgMCkpfXNldEV2ZW50TGlzdGVuZXIocyl7dmFyIGw7Vyh0aGlzLEtyLHMpLChsPXkodGhpcyxibikpPT1udWxsfHxsLmNhbGwodGhpcyksVyh0aGlzLGJuLHModT0+e3R5cGVvZiB1PT0iYm9vbGVhbiI/dGhpcy5zZXRGb2N1c2VkKHUpOnRoaXMub25Gb2N1cygpfSkpfXNldEZvY3VzZWQocyl7eSh0aGlzLHVyKSE9PXMmJihXKHRoaXMsdXIscyksdGhpcy5vbkZvY3VzKCkpfW9uRm9jdXMoKXtjb25zdCBzPXRoaXMuaXNGb2N1c2VkKCk7dGhpcy5saXN0ZW5lcnMuZm9yRWFjaChsPT57bChzKX0pfWlzRm9jdXNlZCgpe3ZhciBzO3JldHVybiB0eXBlb2YgeSh0aGlzLHVyKT09ImJvb2xlYW4iP3kodGhpcyx1cik6KChzPWdsb2JhbFRoaXMuZG9jdW1lbnQpPT1udWxsP3ZvaWQgMDpzLnZpc2liaWxpdHlTdGF0ZSkhPT0iaGlkZGVuIn19LHVyPW5ldyBXZWFrTWFwLGJuPW5ldyBXZWFrTWFwLEtyPW5ldyBXZWFrTWFwLGRoKTtjb25zdCBNdT1uZXcgeXkseHk9dXk7ZnVuY3Rpb24gd3koKXtsZXQgcj1bXSxzPTAsbD1tPT57bSgpfSx1PW09PnttKCl9LGQ9eHk7Y29uc3QgaD1tPT57cz9yLnB1c2gobSk6ZCgoKT0+e2wobSl9KX0scD0oKT0+e2NvbnN0IG09cjtyPVtdLG0ubGVuZ3RoJiZkKCgpPT57dSgoKT0+e20uZm9yRWFjaCh2PT57bCh2KX0pfSl9KX07cmV0dXJue2JhdGNoOm09PntsZXQgdjtzKys7dHJ5e3Y9bSgpfWZpbmFsbHl7cy0tLHN8fHAoKX1yZXR1cm4gdn0sYmF0Y2hDYWxsczptPT4oLi4udik9PntoKCgpPT57bSguLi52KX0pfSxzY2hlZHVsZTpoLHNldE5vdGlmeUZ1bmN0aW9uOm09PntsPW19LHNldEJhdGNoTm90aWZ5RnVuY3Rpb246bT0+e3U9bX0sc2V0U2NoZWR1bGVyOm09PntkPW19fX1jb25zdCBLZT13eSgpO3ZhciBHcixCbixKcixmaCxTeT0oZmg9Y2xhc3MgZXh0ZW5kcyBmc3tjb25zdHJ1Y3Rvcigpe3N1cGVyKCk7bmUodGhpcyxHciwhMCk7bmUodGhpcyxCbik7bmUodGhpcyxKcik7Vyh0aGlzLEpyLHM9PntpZih0eXBlb2Ygd2luZG93PCJ1IiYmd2luZG93LmFkZEV2ZW50TGlzdGVuZXIpe2NvbnN0IGw9KCk9PnMoITApLHU9KCk9PnMoITEpO3JldHVybiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigib25saW5lIixsLCExKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigib2ZmbGluZSIsdSwhMSksKCk9Pnt3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigib25saW5lIixsKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigib2ZmbGluZSIsdSl9fX0pfW9uU3Vic2NyaWJlKCl7eSh0aGlzLEJuKXx8dGhpcy5zZXRFdmVudExpc3RlbmVyKHkodGhpcyxKcikpfW9uVW5zdWJzY3JpYmUoKXt2YXIgczt0aGlzLmhhc0xpc3RlbmVycygpfHwoKHM9eSh0aGlzLEJuKSk9PW51bGx8fHMuY2FsbCh0aGlzKSxXKHRoaXMsQm4sdm9pZCAwKSl9c2V0RXZlbnRMaXN0ZW5lcihzKXt2YXIgbDtXKHRoaXMsSnIscyksKGw9eSh0aGlzLEJuKSk9PW51bGx8fGwuY2FsbCh0aGlzKSxXKHRoaXMsQm4scyh0aGlzLnNldE9ubGluZS5iaW5kKHRoaXMpKSl9c2V0T25saW5lKHMpe3kodGhpcyxHcikhPT1zJiYoVyh0aGlzLEdyLHMpLHRoaXMubGlzdGVuZXJzLmZvckVhY2gobD0+e2wocyl9KSl9aXNPbmxpbmUoKXtyZXR1cm4geSh0aGlzLEdyKX19LEdyPW5ldyBXZWFrTWFwLEJuPW5ldyBXZWFrTWFwLEpyPW5ldyBXZWFrTWFwLGZoKTtjb25zdCBBbD1uZXcgU3k7ZnVuY3Rpb24ga3kocil7cmV0dXJuIE1hdGgubWluKDFlMyoyKipyLDNlNCl9ZnVuY3Rpb24gS2gocil7cmV0dXJuKHI/PyJvbmxpbmUiKT09PSJvbmxpbmUiP0FsLmlzT25saW5lKCk6ITB9dmFyIGx1PWNsYXNzIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3Iocil7c3VwZXIoIkNhbmNlbGxlZEVycm9yIiksdGhpcy5yZXZlcnQ9cj09bnVsbD92b2lkIDA6ci5yZXZlcnQsdGhpcy5zaWxlbnQ9cj09bnVsbD92b2lkIDA6ci5zaWxlbnR9fTtmdW5jdGlvbiBHaChyKXtsZXQgcz0hMSxsPTAsdSxkPSJwZW5kaW5nIixoLHA7Y29uc3QgbT1uZXcgUHJvbWlzZSgoUSxiKT0+e2g9USxwPWJ9KTttLmNhdGNoKGR0KTtjb25zdCB2PSgpPT5kIT09InBlbmRpbmciLFM9UT0+e3ZhciBiO2lmKCF2KCkpe2NvbnN0IFY9bmV3IGx1KFEpO0woViksKGI9ci5vbkNhbmNlbCk9PW51bGx8fGIuY2FsbChyLFYpfX0sRT0oKT0+e3M9ITB9LHg9KCk9PntzPSExfSxUPSgpPT5NdS5pc0ZvY3VzZWQoKSYmKHIubmV0d29ya01vZGU9PT0iYWx3YXlzInx8QWwuaXNPbmxpbmUoKSkmJnIuY2FuUnVuKCksTz0oKT0+S2goci5uZXR3b3JrTW9kZSkmJnIuY2FuUnVuKCksQT1RPT57digpfHwodT09bnVsbHx8dSgpLGQ9InJlc29sdmVkIixoKFEpKX0sTD1RPT57digpfHwodT09bnVsbHx8dSgpLGQ9InJlamVjdGVkIixwKFEpKX0sUD0oKT0+bmV3IFByb21pc2UoUT0+e3ZhciBiO3U9Vj0+eyh2KCl8fFQoKSkmJlEoVil9LChiPXIub25QYXVzZSk9PW51bGx8fGIuY2FsbChyKX0pLnRoZW4oKCk9Pnt2YXIgUTt1PXZvaWQgMCx2KCl8fChRPXIub25Db250aW51ZSk9PW51bGx8fFEuY2FsbChyKX0pLFU9KCk9PntpZih2KCkpcmV0dXJuO2xldCBRO2NvbnN0IGI9bD09PTA/ci5pbml0aWFsUHJvbWlzZTp2b2lkIDA7dHJ5e1E9Yj8/ci5mbigpfWNhdGNoKFYpe1E9UHJvbWlzZS5yZWplY3QoVil9UHJvbWlzZS5yZXNvbHZlKFEpLnRoZW4oQSkuY2F0Y2goVj0+e3ZhciB1ZTtpZih2KCkpcmV0dXJuO2NvbnN0IEg9ci5yZXRyeT8/KEl1KCk/MDozKSxyZT1yLnJldHJ5RGVsYXk/P2t5LHRlPXR5cGVvZiByZT09ImZ1bmN0aW9uIj9yZShsLFYpOnJlLG9lPUg9PT0hMHx8dHlwZW9mIEg9PSJudW1iZXIiJiZsPEh8fHR5cGVvZiBIPT0iZnVuY3Rpb24iJiZIKGwsVik7aWYoc3x8IW9lKXtMKFYpO3JldHVybn1sKyssKHVlPXIub25GYWlsKT09bnVsbHx8dWUuY2FsbChyLGwsViksaHkodGUpLnRoZW4oKCk9PlQoKT92b2lkIDA6UCgpKS50aGVuKCgpPT57cz9MKFYpOlUoKX0pfSl9O3JldHVybntwcm9taXNlOm0sc3RhdHVzOigpPT5kLGNhbmNlbDpTLGNvbnRpbnVlOigpPT4odT09bnVsbHx8dSgpLG0pLGNhbmNlbFJldHJ5OkUsY29udGludWVSZXRyeTp4LGNhblN0YXJ0Ok8sc3RhcnQ6KCk9PihPKCk/VSgpOlAoKS50aGVuKFUpLG0pfX12YXIgY3IsaGgsSmg9KGhoPWNsYXNze2NvbnN0cnVjdG9yKCl7bmUodGhpcyxjcil9ZGVzdHJveSgpe3RoaXMuY2xlYXJHY1RpbWVvdXQoKX1zY2hlZHVsZUdjKCl7dGhpcy5jbGVhckdjVGltZW91dCgpLFFoKHRoaXMuZ2NUaW1lKSYmVyh0aGlzLGNyLGFyLnNldFRpbWVvdXQoKCk9Pnt0aGlzLm9wdGlvbmFsUmVtb3ZlKCl9LHRoaXMuZ2NUaW1lKSl9dXBkYXRlR2NUaW1lKHIpe3RoaXMuZ2NUaW1lPU1hdGgubWF4KHRoaXMuZ2NUaW1lfHwwLHI/PyhJdSgpPzEvMDozZTUpKX1jbGVhckdjVGltZW91dCgpe3kodGhpcyxjcikhPT12b2lkIDAmJihhci5jbGVhclRpbWVvdXQoeSh0aGlzLGNyKSksVyh0aGlzLGNyLHZvaWQgMCkpfX0sY3I9bmV3IFdlYWtNYXAsaGgpO2Z1bmN0aW9uIEN5KHIpe3JldHVybntvbkZldGNoOihzLGwpPT57dmFyIEUseCxULE8sQTtjb25zdCB1PXMub3B0aW9ucyxkPShUPSh4PShFPXMuZmV0Y2hPcHRpb25zKT09bnVsbD92b2lkIDA6RS5tZXRhKT09bnVsbD92b2lkIDA6eC5mZXRjaE1vcmUpPT1udWxsP3ZvaWQgMDpULmRpcmVjdGlvbixoPSgoTz1zLnN0YXRlLmRhdGEpPT1udWxsP3ZvaWQgMDpPLnBhZ2VzKXx8W10scD0oKEE9cy5zdGF0ZS5kYXRhKT09bnVsbD92b2lkIDA6QS5wYWdlUGFyYW1zKXx8W107bGV0IG09e3BhZ2VzOltdLHBhZ2VQYXJhbXM6W119LHY9MDtjb25zdCBTPWFzeW5jKCk9PntsZXQgTD0hMTtjb25zdCBQPWI9PntneShiLCgpPT5zLnNpZ25hbCwoKT0+TD0hMCl9LFU9Vmgocy5vcHRpb25zLHMuZmV0Y2hPcHRpb25zKSxRPWFzeW5jKGIsVixIKT0+e2lmKEwpcmV0dXJuIFByb21pc2UucmVqZWN0KHMuc2lnbmFsLnJlYXNvbik7aWYoVj09bnVsbCYmYi5wYWdlcy5sZW5ndGgpcmV0dXJuIFByb21pc2UucmVzb2x2ZShiKTtjb25zdCB0ZT0oKCk9Pntjb25zdCBiZT17Y2xpZW50OnMuY2xpZW50LHF1ZXJ5S2V5OnMucXVlcnlLZXkscGFnZVBhcmFtOlYsZGlyZWN0aW9uOkg/ImJhY2t3YXJkIjoiZm9yd2FyZCIsbWV0YTpzLm9wdGlvbnMubWV0YX07cmV0dXJuIFAoYmUpLGJlfSkoKSxvZT1hd2FpdCBVKHRlKSx7bWF4UGFnZXM6dWV9PXMub3B0aW9ucyxoZT1IP215OnB5O3JldHVybntwYWdlczpoZShiLnBhZ2VzLG9lLHVlKSxwYWdlUGFyYW1zOmhlKGIucGFnZVBhcmFtcyxWLHVlKX19O2lmKGQmJmgubGVuZ3RoKXtjb25zdCBiPWQ9PT0iYmFja3dhcmQiLFY9Yj9qeTp0aCxIPXtwYWdlczpoLHBhZ2VQYXJhbXM6cH07bT1hd2FpdCBRKEgsVih1LEgpLGIpfWVsc2V7Y29uc3QgYj1yPz9oLmxlbmd0aDtkb3tjb25zdCBWPXY9PT0wP3BbMF0/P3UuaW5pdGlhbFBhZ2VQYXJhbTp0aCh1LG0pO2lmKHY+MCYmVj09bnVsbClicmVhazttPWF3YWl0IFEobSxWKSx2Kyt9d2hpbGUodjxiKX1yZXR1cm4gbX07cy5vcHRpb25zLnBlcnNpc3Rlcj9zLmZldGNoRm49KCk9Pnt2YXIgTCxQO3JldHVybihQPShMPXMub3B0aW9ucykucGVyc2lzdGVyKT09bnVsbD92b2lkIDA6UC5jYWxsKEwsUyx7Y2xpZW50OnMuY2xpZW50LHF1ZXJ5S2V5OnMucXVlcnlLZXksbWV0YTpzLm9wdGlvbnMubWV0YSxzaWduYWw6cy5zaWduYWx9LGwpfTpzLmZldGNoRm49U319fWZ1bmN0aW9uIHRoKHIse3BhZ2VzOnMscGFnZVBhcmFtczpsfSl7Y29uc3QgdT1zLmxlbmd0aC0xO3JldHVybiBzLmxlbmd0aD4wP3IuZ2V0TmV4dFBhZ2VQYXJhbShzW3VdLHMsbFt1XSxsKTp2b2lkIDB9ZnVuY3Rpb24gankocix7cGFnZXM6cyxwYWdlUGFyYW1zOmx9KXt2YXIgdTtyZXR1cm4gcy5sZW5ndGg+MD8odT1yLmdldFByZXZpb3VzUGFnZVBhcmFtKT09bnVsbD92b2lkIDA6dS5jYWxsKHIsc1swXSxzLGxbMF0sbCk6dm9pZCAwfXZhciBZcixkcixYcixPdCxmcixWZSx1aSxocixRdCxwbixwaCxFeT0ocGg9Y2xhc3MgZXh0ZW5kcyBKaHtjb25zdHJ1Y3RvcihzKXtzdXBlcigpO25lKHRoaXMsUXQpO25lKHRoaXMsWXIpO25lKHRoaXMsZHIpO25lKHRoaXMsWHIpO25lKHRoaXMsT3QpO25lKHRoaXMsZnIpO25lKHRoaXMsVmUpO25lKHRoaXMsdWkpO25lKHRoaXMsaHIpO1codGhpcyxociwhMSksVyh0aGlzLHVpLHMuZGVmYXVsdE9wdGlvbnMpLHRoaXMuc2V0T3B0aW9ucyhzLm9wdGlvbnMpLHRoaXMub2JzZXJ2ZXJzPVtdLFcodGhpcyxmcixzLmNsaWVudCksVyh0aGlzLE90LHkodGhpcyxmcikuZ2V0UXVlcnlDYWNoZSgpKSx0aGlzLnF1ZXJ5S2V5PXMucXVlcnlLZXksdGhpcy5xdWVyeUhhc2g9cy5xdWVyeUhhc2gsVyh0aGlzLGRyLHJoKHRoaXMub3B0aW9ucykpLHRoaXMuc3RhdGU9cy5zdGF0ZT8/eSh0aGlzLGRyKSx0aGlzLnNjaGVkdWxlR2MoKX1nZXQgbWV0YSgpe3JldHVybiB0aGlzLm9wdGlvbnMubWV0YX1nZXQgcXVlcnlUeXBlKCl7cmV0dXJuIHkodGhpcyxZcil9Z2V0IHByb21pc2UoKXt2YXIgcztyZXR1cm4ocz15KHRoaXMsVmUpKT09bnVsbD92b2lkIDA6cy5wcm9taXNlfXNldE9wdGlvbnMocyl7aWYodGhpcy5vcHRpb25zPXsuLi55KHRoaXMsdWkpLC4uLnN9LHMhPW51bGwmJnMuX3R5cGUmJlcodGhpcyxZcixzLl90eXBlKSx0aGlzLnVwZGF0ZUdjVGltZSh0aGlzLm9wdGlvbnMuZ2NUaW1lKSx0aGlzLnN0YXRlJiZ0aGlzLnN0YXRlLmRhdGE9PT12b2lkIDApe2NvbnN0IGw9cmgodGhpcy5vcHRpb25zKTtsLmRhdGEhPT12b2lkIDAmJih0aGlzLnNldFN0YXRlKG5oKGwuZGF0YSxsLmRhdGFVcGRhdGVkQXQpKSxXKHRoaXMsZHIsbCkpfX1vcHRpb25hbFJlbW92ZSgpeyF0aGlzLm9ic2VydmVycy5sZW5ndGgmJnRoaXMuc3RhdGUuZmV0Y2hTdGF0dXM9PT0iaWRsZSImJnkodGhpcyxPdCkucmVtb3ZlKHRoaXMpfXNldERhdGEocyxsKXtjb25zdCB1PWl1KHRoaXMuc3RhdGUuZGF0YSxzLHRoaXMub3B0aW9ucyk7cmV0dXJuIGNlKHRoaXMsUXQscG4pLmNhbGwodGhpcyx7ZGF0YTp1LHR5cGU6InN1Y2Nlc3MiLGRhdGFVcGRhdGVkQXQ6bD09bnVsbD92b2lkIDA6bC51cGRhdGVkQXQsbWFudWFsOmw9PW51bGw/dm9pZCAwOmwubWFudWFsfSksdX1zZXRTdGF0ZShzKXtjZSh0aGlzLFF0LHBuKS5jYWxsKHRoaXMse3R5cGU6InNldFN0YXRlIixzdGF0ZTpzfSl9Y2FuY2VsKHMpe3ZhciB1LGQ7Y29uc3QgbD0odT15KHRoaXMsVmUpKT09bnVsbD92b2lkIDA6dS5wcm9taXNlO3JldHVybihkPXkodGhpcyxWZSkpPT1udWxsfHxkLmNhbmNlbChzKSxsP2wudGhlbihkdCkuY2F0Y2goZHQpOlByb21pc2UucmVzb2x2ZSgpfWRlc3Ryb3koKXtzdXBlci5kZXN0cm95KCksdGhpcy5jYW5jZWwoe3NpbGVudDohMH0pfWdldCByZXNldFN0YXRlKCl7cmV0dXJuIHkodGhpcyxkcil9cmVzZXQoKXt0aGlzLmRlc3Ryb3koKSx0aGlzLnNldFN0YXRlKHRoaXMucmVzZXRTdGF0ZSl9aXNBY3RpdmUoKXtyZXR1cm4gdGhpcy5vYnNlcnZlcnMuc29tZShzPT5PZShzLm9wdGlvbnMuZW5hYmxlZCx0aGlzKSE9PSExKX1pc0Rpc2FibGVkKCl7cmV0dXJuIHRoaXMuZ2V0T2JzZXJ2ZXJzQ291bnQoKT4wPyF0aGlzLmlzQWN0aXZlKCk6dGhpcy5vcHRpb25zLnF1ZXJ5Rm49PT1EdXx8IXRoaXMuaXNGZXRjaGVkKCl9aXNGZXRjaGVkKCl7cmV0dXJuIHRoaXMuc3RhdGUuZGF0YVVwZGF0ZUNvdW50K3RoaXMuc3RhdGUuZXJyb3JVcGRhdGVDb3VudD4wfWlzU3RhdGljKCl7cmV0dXJuIHRoaXMuZ2V0T2JzZXJ2ZXJzQ291bnQoKT4wP3RoaXMub2JzZXJ2ZXJzLnNvbWUocz0+T2Uocy5vcHRpb25zLnN0YWxlVGltZSx0aGlzKT09PSJzdGF0aWMiKTohMX1pc1N0YWxlKCl7cmV0dXJuIHRoaXMuZ2V0T2JzZXJ2ZXJzQ291bnQoKT4wP3RoaXMub2JzZXJ2ZXJzLnNvbWUocz0+cy5nZXRDdXJyZW50UmVzdWx0KCkuaXNTdGFsZSk6dGhpcy5zdGF0ZS5kYXRhPT09dm9pZCAwfHx0aGlzLnN0YXRlLmlzSW52YWxpZGF0ZWR9aXNTdGFsZUJ5VGltZShzPTApe3JldHVybiB0aGlzLnN0YXRlLmRhdGE9PT12b2lkIDA/ITA6cz09PSJzdGF0aWMiPyExOnRoaXMuc3RhdGUuaXNJbnZhbGlkYXRlZD8hMDohcWgodGhpcy5zdGF0ZS5kYXRhVXBkYXRlZEF0LHMpfW9uRm9jdXMoKXt2YXIgcyxsOyhzPXRoaXMub2JzZXJ2ZXJzLmZpbmQodT0+dS5zaG91bGRGZXRjaE9uV2luZG93Rm9jdXMoKSkpPT1udWxsfHxzLnJlZmV0Y2goe2NhbmNlbFJlZmV0Y2g6ITF9KSwobD15KHRoaXMsVmUpKT09bnVsbHx8bC5jb250aW51ZSgpfW9uT25saW5lKCl7dmFyIHMsbDsocz10aGlzLm9ic2VydmVycy5maW5kKHU9PnUuc2hvdWxkRmV0Y2hPblJlY29ubmVjdCgpKSk9PW51bGx8fHMucmVmZXRjaCh7Y2FuY2VsUmVmZXRjaDohMX0pLChsPXkodGhpcyxWZSkpPT1udWxsfHxsLmNvbnRpbnVlKCl9YWRkT2JzZXJ2ZXIocyl7dGhpcy5vYnNlcnZlcnMuaW5jbHVkZXMocyl8fCh0aGlzLm9ic2VydmVycy5wdXNoKHMpLHRoaXMuY2xlYXJHY1RpbWVvdXQoKSx5KHRoaXMsT3QpLm5vdGlmeSh7dHlwZToib2JzZXJ2ZXJBZGRlZCIscXVlcnk6dGhpcyxvYnNlcnZlcjpzfSkpfXJlbW92ZU9ic2VydmVyKHMpe2NvbnN0IGw9dGhpcy5vYnNlcnZlcnMuaW5kZXhPZihzKTtsIT09LTEmJih0aGlzLm9ic2VydmVycy5zcGxpY2UobCwxKSx0aGlzLm9ic2VydmVycy5sZW5ndGh8fCh5KHRoaXMsVmUpJiYoeSh0aGlzLGhyKXx8dGhpcy5zdGF0ZS5mZXRjaFN0YXR1cz09PSJwYXVzZWQiJiZ0aGlzLnN0YXRlLnN0YXR1cz09PSJwZW5kaW5nIj95KHRoaXMsVmUpLmNhbmNlbCh7cmV2ZXJ0OiEwfSk6eSh0aGlzLFZlKS5jYW5jZWxSZXRyeSgpKSx0aGlzLnNjaGVkdWxlR2MoKSkseSh0aGlzLE90KS5ub3RpZnkoe3R5cGU6Im9ic2VydmVyUmVtb3ZlZCIscXVlcnk6dGhpcyxvYnNlcnZlcjpzfSkpfWdldE9ic2VydmVyc0NvdW50KCl7cmV0dXJuIHRoaXMub2JzZXJ2ZXJzLmxlbmd0aH1pbnZhbGlkYXRlKCl7dGhpcy5zdGF0ZS5pc0ludmFsaWRhdGVkfHxjZSh0aGlzLFF0LHBuKS5jYWxsKHRoaXMse3R5cGU6ImludmFsaWRhdGUifSl9YXN5bmMgZmV0Y2gocyxsKXt2YXIgUyxFLHgsVCxPLEEsTCxQLFUsUSxiLFY7aWYodGhpcy5zdGF0ZS5mZXRjaFN0YXR1cyE9PSJpZGxlIiYmKChTPXkodGhpcyxWZSkpPT1udWxsP3ZvaWQgMDpTLnN0YXR1cygpKSE9PSJyZWplY3RlZCIpe2lmKHRoaXMuc3RhdGUuZGF0YSE9PXZvaWQgMCYmKGwhPW51bGwmJmwuY2FuY2VsUmVmZXRjaCkpdGhpcy5jYW5jZWwoe3NpbGVudDohMH0pO2Vsc2UgaWYoeSh0aGlzLFZlKSlyZXR1cm4geSh0aGlzLFZlKS5jb250aW51ZVJldHJ5KCkseSh0aGlzLFZlKS5wcm9taXNlfWlmKHMmJnRoaXMuc2V0T3B0aW9ucyhzKSwhdGhpcy5vcHRpb25zLnF1ZXJ5Rm4pe2NvbnN0IEg9dGhpcy5vYnNlcnZlcnMuZmluZChyZT0+cmUub3B0aW9ucy5xdWVyeUZuKTtIJiZ0aGlzLnNldE9wdGlvbnMoSC5vcHRpb25zKX1jb25zdCB1PW5ldyBBYm9ydENvbnRyb2xsZXIsZD1IPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KEgsInNpZ25hbCIse2VudW1lcmFibGU6ITAsZ2V0OigpPT4oVyh0aGlzLGhyLCEwKSx1LnNpZ25hbCl9KX0saD0oKT0+e2NvbnN0IEg9VmgodGhpcy5vcHRpb25zLGwpLHRlPSgoKT0+e2NvbnN0IG9lPXtjbGllbnQ6eSh0aGlzLGZyKSxxdWVyeUtleTp0aGlzLnF1ZXJ5S2V5LG1ldGE6dGhpcy5tZXRhfTtyZXR1cm4gZChvZSksb2V9KSgpO3JldHVybiBXKHRoaXMsaHIsITEpLHRoaXMub3B0aW9ucy5wZXJzaXN0ZXI/dGhpcy5vcHRpb25zLnBlcnNpc3RlcihILHRlLHRoaXMpOkgodGUpfSxtPSgoKT0+e2NvbnN0IEg9e2ZldGNoT3B0aW9uczpsLG9wdGlvbnM6dGhpcy5vcHRpb25zLHF1ZXJ5S2V5OnRoaXMucXVlcnlLZXksY2xpZW50OnkodGhpcyxmciksc3RhdGU6dGhpcy5zdGF0ZSxmZXRjaEZuOmh9O3JldHVybiBkKEgpLEh9KSgpOyhFPXkodGhpcyxZcik9PT0iaW5maW5pdGUiP0N5KHRoaXMub3B0aW9ucy5wYWdlcyk6dGhpcy5vcHRpb25zLmJlaGF2aW9yKT09bnVsbHx8RS5vbkZldGNoKG0sdGhpcyksVyh0aGlzLFhyLHRoaXMuc3RhdGUpLCh0aGlzLnN0YXRlLmZldGNoU3RhdHVzPT09ImlkbGUifHx0aGlzLnN0YXRlLmZldGNoTWV0YSE9PSgoeD1tLmZldGNoT3B0aW9ucyk9PW51bGw/dm9pZCAwOngubWV0YSkpJiZjZSh0aGlzLFF0LHBuKS5jYWxsKHRoaXMse3R5cGU6ImZldGNoIixtZXRhOihUPW0uZmV0Y2hPcHRpb25zKT09bnVsbD92b2lkIDA6VC5tZXRhfSk7Y29uc3Qgdj1XKHRoaXMsVmUsR2goe2luaXRpYWxQcm9taXNlOmw9PW51bGw/dm9pZCAwOmwuaW5pdGlhbFByb21pc2UsZm46bS5mZXRjaEZuLG9uQ2FuY2VsOkg9PntIIGluc3RhbmNlb2YgbHUmJkgucmV2ZXJ0JiZ0aGlzLnNldFN0YXRlKHsuLi55KHRoaXMsWHIpLGZldGNoU3RhdHVzOiJpZGxlIn0pLHUuYWJvcnQoKX0sb25GYWlsOihILHJlKT0+e2NlKHRoaXMsUXQscG4pLmNhbGwodGhpcyx7dHlwZToiZmFpbGVkIixmYWlsdXJlQ291bnQ6SCxlcnJvcjpyZX0pfSxvblBhdXNlOigpPT57Y2UodGhpcyxRdCxwbikuY2FsbCh0aGlzLHt0eXBlOiJwYXVzZSJ9KX0sb25Db250aW51ZTooKT0+e2NlKHRoaXMsUXQscG4pLmNhbGwodGhpcyx7dHlwZToiY29udGludWUifSl9LHJldHJ5Om0ub3B0aW9ucy5yZXRyeSxyZXRyeURlbGF5Om0ub3B0aW9ucy5yZXRyeURlbGF5LG5ldHdvcmtNb2RlOm0ub3B0aW9ucy5uZXR3b3JrTW9kZSxjYW5SdW46KCk9PiEwfSkpO3RyeXtjb25zdCBIPWF3YWl0IHYuc3RhcnQoKTtpZihIPT09dm9pZCAwKXRocm93IG5ldyBFcnJvcihgJHt0aGlzLnF1ZXJ5SGFzaH0gZGF0YSBpcyB1bmRlZmluZWRgKTtyZXR1cm4gdGhpcy5zZXREYXRhKEgpLChBPShPPXkodGhpcyxPdCkuY29uZmlnKS5vblN1Y2Nlc3MpPT1udWxsfHxBLmNhbGwoTyxILHRoaXMpLChQPShMPXkodGhpcyxPdCkuY29uZmlnKS5vblNldHRsZWQpPT1udWxsfHxQLmNhbGwoTCxILHRoaXMuc3RhdGUuZXJyb3IsdGhpcyksSH1jYXRjaChIKXtpZihIIGluc3RhbmNlb2YgbHUpe2lmKEguc2lsZW50KXJldHVybiB5KHRoaXMsVmUpLnByb21pc2U7aWYoSC5yZXZlcnQpe2lmKHRoaXMuc3RhdGUuZGF0YT09PXZvaWQgMCl0aHJvdyBIO3JldHVybiB0aGlzLnN0YXRlLmRhdGF9fXRocm93IGNlKHRoaXMsUXQscG4pLmNhbGwodGhpcyx7dHlwZToiZXJyb3IiLGVycm9yOkh9KSwoUT0oVT15KHRoaXMsT3QpLmNvbmZpZykub25FcnJvcik9PW51bGx8fFEuY2FsbChVLEgsdGhpcyksKFY9KGI9eSh0aGlzLE90KS5jb25maWcpLm9uU2V0dGxlZCk9PW51bGx8fFYuY2FsbChiLHRoaXMuc3RhdGUuZGF0YSxILHRoaXMpLEh9ZmluYWxseXt5KHRoaXMsVmUpPT09diYmVyh0aGlzLFZlLHZvaWQgMCksdGhpcy5zY2hlZHVsZUdjKCl9fX0sWXI9bmV3IFdlYWtNYXAsZHI9bmV3IFdlYWtNYXAsWHI9bmV3IFdlYWtNYXAsT3Q9bmV3IFdlYWtNYXAsZnI9bmV3IFdlYWtNYXAsVmU9bmV3IFdlYWtNYXAsdWk9bmV3IFdlYWtNYXAsaHI9bmV3IFdlYWtNYXAsUXQ9bmV3IFdlYWtTZXQscG49ZnVuY3Rpb24ocyl7Y29uc3QgbD11PT57c3dpdGNoKHMudHlwZSl7Y2FzZSJmYWlsZWQiOnJldHVybnsuLi51LGZldGNoRmFpbHVyZUNvdW50OnMuZmFpbHVyZUNvdW50LGZldGNoRmFpbHVyZVJlYXNvbjpzLmVycm9yfTtjYXNlInBhdXNlIjpyZXR1cm57Li4udSxmZXRjaFN0YXR1czoicGF1c2VkIn07Y2FzZSJjb250aW51ZSI6cmV0dXJuey4uLnUsZmV0Y2hTdGF0dXM6ImZldGNoaW5nIn07Y2FzZSJmZXRjaCI6cmV0dXJuey4uLnUsLi4uWWgodS5kYXRhLHRoaXMub3B0aW9ucyksZmV0Y2hNZXRhOnMubWV0YT8/bnVsbH07Y2FzZSJzdWNjZXNzIjpjb25zdCBkPXsuLi51LC4uLm5oKHMuZGF0YSxzLmRhdGFVcGRhdGVkQXQpLGRhdGFVcGRhdGVDb3VudDp1LmRhdGFVcGRhdGVDb3VudCsxLC4uLiFzLm1hbnVhbCYme2ZldGNoU3RhdHVzOiJpZGxlIixmZXRjaEZhaWx1cmVDb3VudDowLGZldGNoRmFpbHVyZVJlYXNvbjpudWxsfX07cmV0dXJuIFcodGhpcyxYcixzLm1hbnVhbD9kOnZvaWQgMCksZDtjYXNlImVycm9yIjpjb25zdCBoPXMuZXJyb3I7cmV0dXJuey4uLnUsZXJyb3I6aCxlcnJvclVwZGF0ZUNvdW50OnUuZXJyb3JVcGRhdGVDb3VudCsxLGVycm9yVXBkYXRlZEF0OkRhdGUubm93KCksZmV0Y2hGYWlsdXJlQ291bnQ6dS5mZXRjaEZhaWx1cmVDb3VudCsxLGZldGNoRmFpbHVyZVJlYXNvbjpoLGZldGNoU3RhdHVzOiJpZGxlIixzdGF0dXM6ImVycm9yIixpc0ludmFsaWRhdGVkOiEwfTtjYXNlImludmFsaWRhdGUiOnJldHVybnsuLi51LGlzSW52YWxpZGF0ZWQ6ITB9O2Nhc2Uic2V0U3RhdGUiOnJldHVybnsuLi51LC4uLnMuc3RhdGV9fX07dGhpcy5zdGF0ZT1sKHRoaXMuc3RhdGUpLEtlLmJhdGNoKCgpPT57dGhpcy5vYnNlcnZlcnMuc2xpY2UoKS5mb3JFYWNoKHU9Pnt1Lm9uUXVlcnlVcGRhdGUoKX0pLHkodGhpcyxPdCkubm90aWZ5KHtxdWVyeTp0aGlzLHR5cGU6InVwZGF0ZWQiLGFjdGlvbjpzfSl9KX0scGgpO2Z1bmN0aW9uIFloKHIscyl7cmV0dXJue2ZldGNoRmFpbHVyZUNvdW50OjAsZmV0Y2hGYWlsdXJlUmVhc29uOm51bGwsZmV0Y2hTdGF0dXM6S2gocy5uZXR3b3JrTW9kZSk/ImZldGNoaW5nIjoicGF1c2VkIiwuLi5yPT09dm9pZCAwJiZ7ZXJyb3I6bnVsbCxzdGF0dXM6InBlbmRpbmcifX19ZnVuY3Rpb24gbmgocixzKXtyZXR1cm57ZGF0YTpyLGRhdGFVcGRhdGVkQXQ6cz8/RGF0ZS5ub3coKSxlcnJvcjpudWxsLGlzSW52YWxpZGF0ZWQ6ITEsc3RhdHVzOiJzdWNjZXNzIn19ZnVuY3Rpb24gcmgocil7Y29uc3Qgcz10eXBlb2Ygci5pbml0aWFsRGF0YT09ImZ1bmN0aW9uIj9yLmluaXRpYWxEYXRhKCk6ci5pbml0aWFsRGF0YSxsPXMhPT12b2lkIDAsdT1sP3R5cGVvZiByLmluaXRpYWxEYXRhVXBkYXRlZEF0PT0iZnVuY3Rpb24iP3IuaW5pdGlhbERhdGFVcGRhdGVkQXQoKTpyLmluaXRpYWxEYXRhVXBkYXRlZEF0OjA7cmV0dXJue2RhdGE6cyxkYXRhVXBkYXRlQ291bnQ6MCxkYXRhVXBkYXRlZEF0Omw/dT8/RGF0ZS5ub3coKTowLGVycm9yOm51bGwsZXJyb3JVcGRhdGVDb3VudDowLGVycm9yVXBkYXRlZEF0OjAsZmV0Y2hGYWlsdXJlQ291bnQ6MCxmZXRjaEZhaWx1cmVSZWFzb246bnVsbCxmZXRjaE1ldGE6bnVsbCxpc0ludmFsaWRhdGVkOiExLHN0YXR1czpsPyJzdWNjZXNzIjoicGVuZGluZyIsZmV0Y2hTdGF0dXM6ImlkbGUifX12YXIgdXQsbWUsY2ksY3QscHIsWnIsbW4sZGksZXMsdHMsbXIsZ3IsSG4sbnMsa2Usbmksb3UsYXUsdXUsY3UsZHUsZnUsaHUscHUsbWgsTnk9KG1oPWNsYXNzIGV4dGVuZHMgZnN7Y29uc3RydWN0b3IocyxsKXtzdXBlcigpO25lKHRoaXMsa2UpO25lKHRoaXMsdXQpO25lKHRoaXMsbWUpO25lKHRoaXMsY2kpO25lKHRoaXMsY3QpO25lKHRoaXMscHIpO25lKHRoaXMsWnIpO25lKHRoaXMsbW4pO25lKHRoaXMsZGkpO25lKHRoaXMsZXMpO25lKHRoaXMsdHMpO25lKHRoaXMsbXIpO25lKHRoaXMsZ3IpO25lKHRoaXMsSG4pO25lKHRoaXMsbnMsbmV3IFNldCk7dGhpcy5vcHRpb25zPWwsVyh0aGlzLHV0LHMpLFcodGhpcyxtbixudWxsKSx0aGlzLmJpbmRNZXRob2RzKCksdGhpcy5zZXRPcHRpb25zKGwpfWJpbmRNZXRob2RzKCl7dGhpcy5yZWZldGNoPXRoaXMucmVmZXRjaC5iaW5kKHRoaXMpfW9uU3Vic2NyaWJlKCl7dGhpcy5saXN0ZW5lcnMuc2l6ZT09PTEmJih5KHRoaXMsbWUpLmFkZE9ic2VydmVyKHRoaXMpLHNoKHkodGhpcyxtZSksdGhpcy5vcHRpb25zKT9jZSh0aGlzLGtlLG5pKS5jYWxsKHRoaXMpOnRoaXMudXBkYXRlUmVzdWx0KCksY2UodGhpcyxrZSxkdSkuY2FsbCh0aGlzKSl9b25VbnN1YnNjcmliZSgpe3RoaXMuaGFzTGlzdGVuZXJzKCl8fHRoaXMuZGVzdHJveSgpfXNob3VsZEZldGNoT25SZWNvbm5lY3QoKXtyZXR1cm4gbXUoeSh0aGlzLG1lKSx0aGlzLm9wdGlvbnMsdGhpcy5vcHRpb25zLnJlZmV0Y2hPblJlY29ubmVjdCl9c2hvdWxkRmV0Y2hPbldpbmRvd0ZvY3VzKCl7cmV0dXJuIG11KHkodGhpcyxtZSksdGhpcy5vcHRpb25zLHRoaXMub3B0aW9ucy5yZWZldGNoT25XaW5kb3dGb2N1cyl9ZGVzdHJveSgpe3RoaXMubGlzdGVuZXJzPW5ldyBTZXQsY2UodGhpcyxrZSxmdSkuY2FsbCh0aGlzKSxjZSh0aGlzLGtlLGh1KS5jYWxsKHRoaXMpLHkodGhpcyxtZSkucmVtb3ZlT2JzZXJ2ZXIodGhpcyl9c2V0T3B0aW9ucyhzKXtjb25zdCBsPXRoaXMub3B0aW9ucyx1PXkodGhpcyxtZSk7aWYodGhpcy5vcHRpb25zPXkodGhpcyx1dCkuZGVmYXVsdFF1ZXJ5T3B0aW9ucyhzKSx0aGlzLm9wdGlvbnMuZW5hYmxlZCE9PXZvaWQgMCYmdHlwZW9mIHRoaXMub3B0aW9ucy5lbmFibGVkIT0iYm9vbGVhbiImJnR5cGVvZiB0aGlzLm9wdGlvbnMuZW5hYmxlZCE9ImZ1bmN0aW9uIiYmdHlwZW9mIE9lKHRoaXMub3B0aW9ucy5lbmFibGVkLHkodGhpcyxtZSkpIT0iYm9vbGVhbiIpdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCBlbmFibGVkIHRvIGJlIGEgYm9vbGVhbiBvciBhIGNhbGxiYWNrIHRoYXQgcmV0dXJucyBhIGJvb2xlYW4iKTtjZSh0aGlzLGtlLHB1KS5jYWxsKHRoaXMpLHkodGhpcyxtZSkuc2V0T3B0aW9ucyh0aGlzLm9wdGlvbnMpLGwuX2RlZmF1bHRlZCYmIU1sKHRoaXMub3B0aW9ucyxsKSYmeSh0aGlzLHV0KS5nZXRRdWVyeUNhY2hlKCkubm90aWZ5KHt0eXBlOiJvYnNlcnZlck9wdGlvbnNVcGRhdGVkIixxdWVyeTp5KHRoaXMsbWUpLG9ic2VydmVyOnRoaXN9KTtjb25zdCBkPXRoaXMuaGFzTGlzdGVuZXJzKCk7ZCYmaWgoeSh0aGlzLG1lKSx1LHRoaXMub3B0aW9ucyxsKSYmY2UodGhpcyxrZSxuaSkuY2FsbCh0aGlzKSx0aGlzLnVwZGF0ZVJlc3VsdCgpLGQmJih5KHRoaXMsbWUpIT09dXx8T2UodGhpcy5vcHRpb25zLmVuYWJsZWQseSh0aGlzLG1lKSkhPT1PZShsLmVuYWJsZWQseSh0aGlzLG1lKSl8fE9lKHRoaXMub3B0aW9ucy5zdGFsZVRpbWUseSh0aGlzLG1lKSkhPT1PZShsLnN0YWxlVGltZSx5KHRoaXMsbWUpKSkmJmNlKHRoaXMsa2UsYXUpLmNhbGwodGhpcyk7Y29uc3QgaD1jZSh0aGlzLGtlLHV1KS5jYWxsKHRoaXMpO2QmJih5KHRoaXMsbWUpIT09dXx8T2UodGhpcy5vcHRpb25zLmVuYWJsZWQseSh0aGlzLG1lKSkhPT1PZShsLmVuYWJsZWQseSh0aGlzLG1lKSl8fGghPT15KHRoaXMsSG4pKSYmY2UodGhpcyxrZSxjdSkuY2FsbCh0aGlzLGgpfWdldE9wdGltaXN0aWNSZXN1bHQocyl7Y29uc3QgbD15KHRoaXMsdXQpLmdldFF1ZXJ5Q2FjaGUoKS5idWlsZCh5KHRoaXMsdXQpLHMpLHU9dGhpcy5jcmVhdGVSZXN1bHQobCxzKTtyZXR1cm4gTWwodGhpcy5nZXRDdXJyZW50UmVzdWx0KCksdSl8fChXKHRoaXMsY3QsdSksVyh0aGlzLFpyLHRoaXMub3B0aW9ucyksVyh0aGlzLHByLHkodGhpcyxtZSkuc3RhdGUpKSx1fWdldEN1cnJlbnRSZXN1bHQoKXtyZXR1cm4geSh0aGlzLGN0KX10cmFja1Jlc3VsdChzLGwpe3JldHVybiBuZXcgUHJveHkocyx7Z2V0Oih1LGQpPT4odGhpcy50cmFja1Byb3AoZCksbD09bnVsbHx8bChkKSxSZWZsZWN0LmdldCh1LGQpKX0pfXRyYWNrUHJvcChzKXt5KHRoaXMsbnMpLmFkZChzKX1nZXRDdXJyZW50UXVlcnkoKXtyZXR1cm4geSh0aGlzLG1lKX1yZWZldGNoKHsuLi5zfT17fSl7cmV0dXJuIHRoaXMuZmV0Y2goey4uLnN9KX1mZXRjaE9wdGltaXN0aWMocyl7Y29uc3QgbD15KHRoaXMsdXQpLmRlZmF1bHRRdWVyeU9wdGlvbnMocyksdT15KHRoaXMsdXQpLmdldFF1ZXJ5Q2FjaGUoKS5idWlsZCh5KHRoaXMsdXQpLGwpO2xldCBkPSgpPT57fSxoO2NvbnN0IHA9bmV3IFByb21pc2UobT0+e2g9bSxkPXkodGhpcyx1dCkuZ2V0UXVlcnlDYWNoZSgpLnN1YnNjcmliZSh2PT57di50eXBlPT09InVwZGF0ZWQiJiZ2LnF1ZXJ5LnF1ZXJ5SGFzaD09PXUucXVlcnlIYXNoJiZ1LnN0YXRlLmRhdGEhPT12b2lkIDAmJihkKCksbSh0aGlzLmNyZWF0ZVJlc3VsdCh1LGwpKSl9KX0pO3JldHVybiBQcm9taXNlLnJhY2UoW3UuZmV0Y2goKS50aGVuKCgpPT57Y29uc3QgbT10aGlzLmNyZWF0ZVJlc3VsdCh1LGwpO3JldHVybiBoPT1udWxsfHxoKG0pLG19KS5maW5hbGx5KCgpPT57ZCgpfSkscF0pfWZldGNoKHMpe3JldHVybiBjZSh0aGlzLGtlLG5pKS5jYWxsKHRoaXMsey4uLnMsY2FuY2VsUmVmZXRjaDpzLmNhbmNlbFJlZmV0Y2g/PyEwfSkudGhlbigoKT0+KHRoaXMudXBkYXRlUmVzdWx0KCkseSh0aGlzLGN0KSkpfWNyZWF0ZVJlc3VsdChzLGwpe3ZhciByZTtjb25zdCB1PXkodGhpcyxtZSksZD10aGlzLm9wdGlvbnMsaD15KHRoaXMsY3QpLHA9eSh0aGlzLHByKSxtPXkodGhpcyxaciksdj1zIT09dT9zLnN0YXRlOnkodGhpcyxjaSkse3N0YXRlOlN9PXM7bGV0IEU9ey4uLlN9LHg9ITEsVDtpZihsLl9vcHRpbWlzdGljUmVzdWx0cyl7Y29uc3QgdGU9dGhpcy5oYXNMaXN0ZW5lcnMoKSxvZT0hdGUmJnNoKHMsbCksdWU9dGUmJmloKHMsdSxsLGQpOyhvZXx8dWUpJiYoRT17Li4uRSwuLi5ZaChTLmRhdGEscy5vcHRpb25zKX0pLGwuX29wdGltaXN0aWNSZXN1bHRzPT09ImlzUmVzdG9yaW5nIiYmKEUuZmV0Y2hTdGF0dXM9ImlkbGUiKX1sZXR7ZXJyb3I6TyxlcnJvclVwZGF0ZWRBdDpBLHN0YXR1czpMfT1FO1Q9RS5kYXRhO2xldCBQPSExO2lmKGwucGxhY2Vob2xkZXJEYXRhIT09dm9pZCAwJiZUPT09dm9pZCAwJiZMPT09InBlbmRpbmciKXtsZXQgdGU7aCE9bnVsbCYmaC5pc1BsYWNlaG9sZGVyRGF0YSYmbC5wbGFjZWhvbGRlckRhdGE9PT0obT09bnVsbD92b2lkIDA6bS5wbGFjZWhvbGRlckRhdGEpPyh0ZT1oLmRhdGEsUD0hMCk6dGU9dHlwZW9mIGwucGxhY2Vob2xkZXJEYXRhPT0iZnVuY3Rpb24iP2wucGxhY2Vob2xkZXJEYXRhKChyZT15KHRoaXMsdHMpKT09bnVsbD92b2lkIDA6cmUuc3RhdGUuZGF0YSx5KHRoaXMsdHMpKTpsLnBsYWNlaG9sZGVyRGF0YSx0ZSE9PXZvaWQgMCYmKEw9InN1Y2Nlc3MiLFQ9aXUoaD09bnVsbD92b2lkIDA6aC5kYXRhLHRlLGwpLHg9ITApfWlmKGwuc2VsZWN0JiZUIT09dm9pZCAwJiYhUClpZihoJiZUPT09KHA9PW51bGw/dm9pZCAwOnAuZGF0YSkmJmwuc2VsZWN0PT09eSh0aGlzLGRpKSlUPXkodGhpcyxlcyk7ZWxzZSB0cnl7Vyh0aGlzLGRpLGwuc2VsZWN0KSxUPWwuc2VsZWN0KFQpLFQ9aXUoaD09bnVsbD92b2lkIDA6aC5kYXRhLFQsbCksVyh0aGlzLGVzLFQpLFcodGhpcyxtbixudWxsKX1jYXRjaCh0ZSl7Vyh0aGlzLG1uLHRlKX1lbHNlIFQ9PT12b2lkIDAmJlcodGhpcyxtbixudWxsKTt5KHRoaXMsbW4pJiYoTz15KHRoaXMsbW4pLFQ9eSh0aGlzLGVzKSxBPURhdGUubm93KCksTD0iZXJyb3IiLHg9ITEpO2NvbnN0IFU9RS5mZXRjaFN0YXR1cz09PSJmZXRjaGluZyIsUT1MPT09InBlbmRpbmciLGI9TD09PSJlcnJvciIsVj1RJiZVLEg9VCE9PXZvaWQgMDtyZXR1cm57c3RhdHVzOkwsZmV0Y2hTdGF0dXM6RS5mZXRjaFN0YXR1cyxpc1BlbmRpbmc6USxpc1N1Y2Nlc3M6TD09PSJzdWNjZXNzIixpc0Vycm9yOmIsaXNJbml0aWFsTG9hZGluZzpWLGlzTG9hZGluZzpWLGRhdGE6VCxkYXRhVXBkYXRlZEF0OkUuZGF0YVVwZGF0ZWRBdCxlcnJvcjpPLGVycm9yVXBkYXRlZEF0OkEsZmFpbHVyZUNvdW50OkUuZmV0Y2hGYWlsdXJlQ291bnQsZmFpbHVyZVJlYXNvbjpFLmZldGNoRmFpbHVyZVJlYXNvbixlcnJvclVwZGF0ZUNvdW50OkUuZXJyb3JVcGRhdGVDb3VudCxpc0ZldGNoZWQ6cy5pc0ZldGNoZWQoKSxpc0ZldGNoZWRBZnRlck1vdW50OkUuZGF0YVVwZGF0ZUNvdW50PnYuZGF0YVVwZGF0ZUNvdW50fHxFLmVycm9yVXBkYXRlQ291bnQ+di5lcnJvclVwZGF0ZUNvdW50LGlzRmV0Y2hpbmc6VSxpc1JlZmV0Y2hpbmc6VSYmIVEsaXNMb2FkaW5nRXJyb3I6YiYmIUgsaXNQYXVzZWQ6RS5mZXRjaFN0YXR1cz09PSJwYXVzZWQiLGlzUGxhY2Vob2xkZXJEYXRhOngsaXNSZWZldGNoRXJyb3I6YiYmSCxpc1N0YWxlOnp1KHMsbCkscmVmZXRjaDp0aGlzLnJlZmV0Y2gsaXNFbmFibGVkOk9lKGwuZW5hYmxlZCxzKSE9PSExfX11cGRhdGVSZXN1bHQoKXtjb25zdCBzPXkodGhpcyxjdCksbD10aGlzLmNyZWF0ZVJlc3VsdCh5KHRoaXMsbWUpLHRoaXMub3B0aW9ucyk7aWYoVyh0aGlzLHByLHkodGhpcyxtZSkuc3RhdGUpLFcodGhpcyxacix0aGlzLm9wdGlvbnMpLHkodGhpcyxwcikuZGF0YSE9PXZvaWQgMCYmVyh0aGlzLHRzLHkodGhpcyxtZSkpLE1sKGwscykpcmV0dXJuO1codGhpcyxjdCxsKTtjb25zdCBkPSgoKT0+e2lmKCFzKXJldHVybiEwO2NvbnN0e25vdGlmeU9uQ2hhbmdlUHJvcHM6aH09dGhpcy5vcHRpb25zLHA9dHlwZW9mIGg9PSJmdW5jdGlvbiI/aCgpOmg7aWYocD09PSJhbGwifHwhcCYmIXkodGhpcyxucykuc2l6ZSlyZXR1cm4hMDtjb25zdCBtPW5ldyBTZXQocD8/eSh0aGlzLG5zKSk7cmV0dXJuIHRoaXMub3B0aW9ucy50aHJvd09uRXJyb3ImJm0uYWRkKCJlcnJvciIpLE9iamVjdC5rZXlzKHkodGhpcyxjdCkpLnNvbWUodj0+e2NvbnN0IFM9djtyZXR1cm4geSh0aGlzLGN0KVtTXSE9PXNbU10mJm0uaGFzKFMpfSl9KSgpO0tlLmJhdGNoKCgpPT57ZCYmdGhpcy5saXN0ZW5lcnMuZm9yRWFjaChoPT57aCh5KHRoaXMsY3QpKX0pLHkodGhpcyx1dCkuZ2V0UXVlcnlDYWNoZSgpLm5vdGlmeSh7cXVlcnk6eSh0aGlzLG1lKSx0eXBlOiJvYnNlcnZlclJlc3VsdHNVcGRhdGVkIn0pfSl9b25RdWVyeVVwZGF0ZSgpe3RoaXMudXBkYXRlUmVzdWx0KCksdGhpcy5oYXNMaXN0ZW5lcnMoKSYmY2UodGhpcyxrZSxkdSkuY2FsbCh0aGlzKX19LHV0PW5ldyBXZWFrTWFwLG1lPW5ldyBXZWFrTWFwLGNpPW5ldyBXZWFrTWFwLGN0PW5ldyBXZWFrTWFwLHByPW5ldyBXZWFrTWFwLFpyPW5ldyBXZWFrTWFwLG1uPW5ldyBXZWFrTWFwLGRpPW5ldyBXZWFrTWFwLGVzPW5ldyBXZWFrTWFwLHRzPW5ldyBXZWFrTWFwLG1yPW5ldyBXZWFrTWFwLGdyPW5ldyBXZWFrTWFwLEhuPW5ldyBXZWFrTWFwLG5zPW5ldyBXZWFrTWFwLGtlPW5ldyBXZWFrU2V0LG5pPWZ1bmN0aW9uKHMpe2NlKHRoaXMsa2UscHUpLmNhbGwodGhpcyk7bGV0IGw9eSh0aGlzLG1lKS5mZXRjaCh0aGlzLm9wdGlvbnMscyk7cmV0dXJuIHMhPW51bGwmJnMudGhyb3dPbkVycm9yfHwobD1sLmNhdGNoKGR0KSksbH0sb3U9ZnVuY3Rpb24ocyl7cmV0dXJuIUl1KCkmJk9lKHRoaXMub3B0aW9ucy5lbmFibGVkLHkodGhpcyxtZSkpIT09ITEmJlFoKHMpfSxhdT1mdW5jdGlvbigpe2NlKHRoaXMsa2UsZnUpLmNhbGwodGhpcyk7Y29uc3Qgcz1PZSh0aGlzLm9wdGlvbnMuc3RhbGVUaW1lLHkodGhpcyxtZSkpO2lmKHkodGhpcyxjdCkuaXNTdGFsZXx8IWNlKHRoaXMsa2Usb3UpLmNhbGwodGhpcyxzKSlyZXR1cm47Y29uc3QgbD1xaCh5KHRoaXMsY3QpLmRhdGFVcGRhdGVkQXQscykrMTtXKHRoaXMsbXIsYXIuc2V0VGltZW91dCgoKT0+e3kodGhpcyxjdCkuaXNTdGFsZXx8dGhpcy51cGRhdGVSZXN1bHQoKX0sbCkpfSx1dT1mdW5jdGlvbigpe3JldHVybiBPZSh0aGlzLm9wdGlvbnMucmVmZXRjaEludGVydmFsLHkodGhpcyxtZSkpPz8hMX0sY3U9ZnVuY3Rpb24ocyl7Y2UodGhpcyxrZSxodSkuY2FsbCh0aGlzKSxXKHRoaXMsSG4scyksISh5KHRoaXMsSG4pPT09MHx8IWNlKHRoaXMsa2Usb3UpLmNhbGwodGhpcyx5KHRoaXMsSG4pKSkmJlcodGhpcyxncixhci5zZXRJbnRlcnZhbCgoKT0+eyh0aGlzLm9wdGlvbnMucmVmZXRjaEludGVydmFsSW5CYWNrZ3JvdW5kfHxNdS5pc0ZvY3VzZWQoKSkmJmNlKHRoaXMsa2UsbmkpLmNhbGwodGhpcyl9LHkodGhpcyxIbikpKX0sZHU9ZnVuY3Rpb24oKXtjZSh0aGlzLGtlLGF1KS5jYWxsKHRoaXMpLGNlKHRoaXMsa2UsY3UpLmNhbGwodGhpcyxjZSh0aGlzLGtlLHV1KS5jYWxsKHRoaXMpKX0sZnU9ZnVuY3Rpb24oKXt5KHRoaXMsbXIpIT09dm9pZCAwJiYoYXIuY2xlYXJUaW1lb3V0KHkodGhpcyxtcikpLFcodGhpcyxtcix2b2lkIDApKX0saHU9ZnVuY3Rpb24oKXt5KHRoaXMsZ3IpIT09dm9pZCAwJiYoYXIuY2xlYXJJbnRlcnZhbCh5KHRoaXMsZ3IpKSxXKHRoaXMsZ3Isdm9pZCAwKSl9LHB1PWZ1bmN0aW9uKCl7Y29uc3Qgcz15KHRoaXMsdXQpLmdldFF1ZXJ5Q2FjaGUoKS5idWlsZCh5KHRoaXMsdXQpLHRoaXMub3B0aW9ucyk7aWYocz09PXkodGhpcyxtZSkpcmV0dXJuO2NvbnN0IGw9eSh0aGlzLG1lKTtXKHRoaXMsbWUscyksVyh0aGlzLGNpLHMuc3RhdGUpLHRoaXMuaGFzTGlzdGVuZXJzKCkmJihsPT1udWxsfHxsLnJlbW92ZU9ic2VydmVyKHRoaXMpLHMuYWRkT2JzZXJ2ZXIodGhpcykpfSxtaCk7ZnVuY3Rpb24gUnkocixzKXtyZXR1cm4gT2Uocy5lbmFibGVkLHIpIT09ITEmJnIuc3RhdGUuZGF0YT09PXZvaWQgMCYmIShyLnN0YXRlLnN0YXR1cz09PSJlcnJvciImJk9lKHMucmV0cnlPbk1vdW50LHIpPT09ITEpfWZ1bmN0aW9uIHNoKHIscyl7cmV0dXJuIFJ5KHIscyl8fHIuc3RhdGUuZGF0YSE9PXZvaWQgMCYmbXUocixzLHMucmVmZXRjaE9uTW91bnQpfWZ1bmN0aW9uIG11KHIscyxsKXtpZihPZShzLmVuYWJsZWQscikhPT0hMSYmT2Uocy5zdGFsZVRpbWUscikhPT0ic3RhdGljIil7Y29uc3QgdT1PZShsLHIpO3JldHVybiB1PT09ImFsd2F5cyJ8fHUhPT0hMSYmenUocixzKX1yZXR1cm4hMX1mdW5jdGlvbiBpaChyLHMsbCx1KXtyZXR1cm4ociE9PXN8fE9lKHUuZW5hYmxlZCxyKT09PSExKSYmKCFsLnN1c3BlbnNlfHxyLnN0YXRlLnN0YXR1cyE9PSJlcnJvciIpJiZ6dShyLGwpfWZ1bmN0aW9uIHp1KHIscyl7cmV0dXJuIE9lKHMuZW5hYmxlZCxyKSE9PSExJiZyLmlzU3RhbGVCeVRpbWUoT2Uocy5zdGFsZVRpbWUscikpfXZhciBmaSx0bixzdCx2cixubiwkbixnaCxQeT0oZ2g9Y2xhc3MgZXh0ZW5kcyBKaHtjb25zdHJ1Y3RvcihzKXtzdXBlcigpO25lKHRoaXMsbm4pO25lKHRoaXMsZmkpO25lKHRoaXMsdG4pO25lKHRoaXMsc3QpO25lKHRoaXMsdnIpO1codGhpcyxmaSxzLmNsaWVudCksdGhpcy5tdXRhdGlvbklkPXMubXV0YXRpb25JZCxXKHRoaXMsc3Qscy5tdXRhdGlvbkNhY2hlKSxXKHRoaXMsdG4sW10pLHRoaXMuc3RhdGU9cy5zdGF0ZXx8WGgoKSx0aGlzLnNldE9wdGlvbnMocy5vcHRpb25zKSx0aGlzLnNjaGVkdWxlR2MoKX1zZXRPcHRpb25zKHMpe3RoaXMub3B0aW9ucz1zLHRoaXMudXBkYXRlR2NUaW1lKHRoaXMub3B0aW9ucy5nY1RpbWUpfWdldCBtZXRhKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5tZXRhfWFkZE9ic2VydmVyKHMpe3kodGhpcyx0bikuaW5jbHVkZXMocyl8fCh5KHRoaXMsdG4pLnB1c2gocyksdGhpcy5jbGVhckdjVGltZW91dCgpLHkodGhpcyxzdCkubm90aWZ5KHt0eXBlOiJvYnNlcnZlckFkZGVkIixtdXRhdGlvbjp0aGlzLG9ic2VydmVyOnN9KSl9cmVtb3ZlT2JzZXJ2ZXIocyl7Vyh0aGlzLHRuLHkodGhpcyx0bikuZmlsdGVyKGw9PmwhPT1zKSksdGhpcy5zY2hlZHVsZUdjKCkseSh0aGlzLHN0KS5ub3RpZnkoe3R5cGU6Im9ic2VydmVyUmVtb3ZlZCIsbXV0YXRpb246dGhpcyxvYnNlcnZlcjpzfSl9b3B0aW9uYWxSZW1vdmUoKXt5KHRoaXMsdG4pLmxlbmd0aHx8KHRoaXMuc3RhdGUuc3RhdHVzPT09InBlbmRpbmciP3RoaXMuc2NoZWR1bGVHYygpOnkodGhpcyxzdCkucmVtb3ZlKHRoaXMpKX1jb250aW51ZSgpe3ZhciBzO3JldHVybigocz15KHRoaXMsdnIpKT09bnVsbD92b2lkIDA6cy5jb250aW51ZSgpKT8/KHRoaXMuc3RhdGUuc3RhdHVzPT09InBlbmRpbmciP3RoaXMuZXhlY3V0ZSh0aGlzLnN0YXRlLnZhcmlhYmxlcyk6UHJvbWlzZS5yZXNvbHZlKCkpfWFzeW5jIGV4ZWN1dGUocyl7dmFyIG0sdixTLEUseCxULE8sQSxMLFAsVSxRLGIsVixILHJlLHRlLG9lO2NvbnN0IGw9KCk9PntjZSh0aGlzLG5uLCRuKS5jYWxsKHRoaXMse3R5cGU6ImNvbnRpbnVlIn0pfSx1PXtjbGllbnQ6eSh0aGlzLGZpKSxtZXRhOnRoaXMub3B0aW9ucy5tZXRhLG11dGF0aW9uS2V5OnRoaXMub3B0aW9ucy5tdXRhdGlvbktleX0sZD1XKHRoaXMsdnIsR2goe2ZuOigpPT50aGlzLm9wdGlvbnMubXV0YXRpb25Gbj90aGlzLm9wdGlvbnMubXV0YXRpb25GbihzLHUpOlByb21pc2UucmVqZWN0KG5ldyBFcnJvcigiTm8gbXV0YXRpb25GbiBmb3VuZCIpKSxvbkZhaWw6KHVlLGhlKT0+e2NlKHRoaXMsbm4sJG4pLmNhbGwodGhpcyx7dHlwZToiZmFpbGVkIixmYWlsdXJlQ291bnQ6dWUsZXJyb3I6aGV9KX0sb25QYXVzZTooKT0+e2NlKHRoaXMsbm4sJG4pLmNhbGwodGhpcyx7dHlwZToicGF1c2UifSl9LG9uQ29udGludWU6bCxyZXRyeTp0aGlzLm9wdGlvbnMucmV0cnk/PzAscmV0cnlEZWxheTp0aGlzLm9wdGlvbnMucmV0cnlEZWxheSxuZXR3b3JrTW9kZTp0aGlzLm9wdGlvbnMubmV0d29ya01vZGUsY2FuUnVuOigpPT55KHRoaXMsc3QpLmNhblJ1bih0aGlzKX0pKSxoPXRoaXMuc3RhdGUuc3RhdHVzPT09InBlbmRpbmciLHA9IWQuY2FuU3RhcnQoKTt0cnl7aWYoaClsKCk7ZWxzZXtjZSh0aGlzLG5uLCRuKS5jYWxsKHRoaXMse3R5cGU6InBlbmRpbmciLHZhcmlhYmxlczpzLGlzUGF1c2VkOnB9KSx5KHRoaXMsc3QpLmNvbmZpZy5vbk11dGF0ZSYmYXdhaXQgeSh0aGlzLHN0KS5jb25maWcub25NdXRhdGUocyx0aGlzLHUpO2NvbnN0IGhlPWF3YWl0KCh2PShtPXRoaXMub3B0aW9ucykub25NdXRhdGUpPT1udWxsP3ZvaWQgMDp2LmNhbGwobSxzLHUpKTtoZSE9PXRoaXMuc3RhdGUuY29udGV4dCYmY2UodGhpcyxubiwkbikuY2FsbCh0aGlzLHt0eXBlOiJwZW5kaW5nIixjb250ZXh0OmhlLHZhcmlhYmxlczpzLGlzUGF1c2VkOnB9KX1jb25zdCB1ZT1hd2FpdCBkLnN0YXJ0KCk7cmV0dXJuIGF3YWl0KChFPShTPXkodGhpcyxzdCkuY29uZmlnKS5vblN1Y2Nlc3MpPT1udWxsP3ZvaWQgMDpFLmNhbGwoUyx1ZSxzLHRoaXMuc3RhdGUuY29udGV4dCx0aGlzLHUpKSxhd2FpdCgoVD0oeD10aGlzLm9wdGlvbnMpLm9uU3VjY2Vzcyk9PW51bGw/dm9pZCAwOlQuY2FsbCh4LHVlLHMsdGhpcy5zdGF0ZS5jb250ZXh0LHUpKSxhd2FpdCgoQT0oTz15KHRoaXMsc3QpLmNvbmZpZykub25TZXR0bGVkKT09bnVsbD92b2lkIDA6QS5jYWxsKE8sdWUsbnVsbCx0aGlzLnN0YXRlLnZhcmlhYmxlcyx0aGlzLnN0YXRlLmNvbnRleHQsdGhpcyx1KSksYXdhaXQoKFA9KEw9dGhpcy5vcHRpb25zKS5vblNldHRsZWQpPT1udWxsP3ZvaWQgMDpQLmNhbGwoTCx1ZSxudWxsLHMsdGhpcy5zdGF0ZS5jb250ZXh0LHUpKSxjZSh0aGlzLG5uLCRuKS5jYWxsKHRoaXMse3R5cGU6InN1Y2Nlc3MiLGRhdGE6dWV9KSx1ZX1jYXRjaCh1ZSl7dHJ5e2F3YWl0KChRPShVPXkodGhpcyxzdCkuY29uZmlnKS5vbkVycm9yKT09bnVsbD92b2lkIDA6US5jYWxsKFUsdWUscyx0aGlzLnN0YXRlLmNvbnRleHQsdGhpcyx1KSl9Y2F0Y2goaGUpe1Byb21pc2UucmVqZWN0KGhlKX10cnl7YXdhaXQoKFY9KGI9dGhpcy5vcHRpb25zKS5vbkVycm9yKT09bnVsbD92b2lkIDA6Vi5jYWxsKGIsdWUscyx0aGlzLnN0YXRlLmNvbnRleHQsdSkpfWNhdGNoKGhlKXtQcm9taXNlLnJlamVjdChoZSl9dHJ5e2F3YWl0KChyZT0oSD15KHRoaXMsc3QpLmNvbmZpZykub25TZXR0bGVkKT09bnVsbD92b2lkIDA6cmUuY2FsbChILHZvaWQgMCx1ZSx0aGlzLnN0YXRlLnZhcmlhYmxlcyx0aGlzLnN0YXRlLmNvbnRleHQsdGhpcyx1KSl9Y2F0Y2goaGUpe1Byb21pc2UucmVqZWN0KGhlKX10cnl7YXdhaXQoKG9lPSh0ZT10aGlzLm9wdGlvbnMpLm9uU2V0dGxlZCk9PW51bGw/dm9pZCAwOm9lLmNhbGwodGUsdm9pZCAwLHVlLHMsdGhpcy5zdGF0ZS5jb250ZXh0LHUpKX1jYXRjaChoZSl7UHJvbWlzZS5yZWplY3QoaGUpfXRocm93IGNlKHRoaXMsbm4sJG4pLmNhbGwodGhpcyx7dHlwZToiZXJyb3IiLGVycm9yOnVlfSksdWV9ZmluYWxseXt5KHRoaXMsdnIpPT09ZCYmVyh0aGlzLHZyLHZvaWQgMCkseSh0aGlzLHN0KS5ydW5OZXh0KHRoaXMpfX19LGZpPW5ldyBXZWFrTWFwLHRuPW5ldyBXZWFrTWFwLHN0PW5ldyBXZWFrTWFwLHZyPW5ldyBXZWFrTWFwLG5uPW5ldyBXZWFrU2V0LCRuPWZ1bmN0aW9uKHMpe2NvbnN0IGw9dT0+e3N3aXRjaChzLnR5cGUpe2Nhc2UiZmFpbGVkIjpyZXR1cm57Li4udSxmYWlsdXJlQ291bnQ6cy5mYWlsdXJlQ291bnQsZmFpbHVyZVJlYXNvbjpzLmVycm9yfTtjYXNlInBhdXNlIjpyZXR1cm57Li4udSxpc1BhdXNlZDohMH07Y2FzZSJjb250aW51ZSI6cmV0dXJuey4uLnUsaXNQYXVzZWQ6ITF9O2Nhc2UicGVuZGluZyI6cmV0dXJuey4uLnUsY29udGV4dDpzLmNvbnRleHQsZGF0YTp2b2lkIDAsZmFpbHVyZUNvdW50OjAsZmFpbHVyZVJlYXNvbjpudWxsLGVycm9yOm51bGwsaXNQYXVzZWQ6cy5pc1BhdXNlZCxzdGF0dXM6InBlbmRpbmciLHZhcmlhYmxlczpzLnZhcmlhYmxlcyxzdWJtaXR0ZWRBdDpEYXRlLm5vdygpfTtjYXNlInN1Y2Nlc3MiOnJldHVybnsuLi51LGRhdGE6cy5kYXRhLGZhaWx1cmVDb3VudDowLGZhaWx1cmVSZWFzb246bnVsbCxlcnJvcjpudWxsLHN0YXR1czoic3VjY2VzcyIsaXNQYXVzZWQ6ITF9O2Nhc2UiZXJyb3IiOnJldHVybnsuLi51LGRhdGE6dm9pZCAwLGVycm9yOnMuZXJyb3IsZmFpbHVyZUNvdW50OnUuZmFpbHVyZUNvdW50KzEsZmFpbHVyZVJlYXNvbjpzLmVycm9yLGlzUGF1c2VkOiExLHN0YXR1czoiZXJyb3IifX19O3RoaXMuc3RhdGU9bCh0aGlzLnN0YXRlKSxLZS5iYXRjaCgoKT0+e3kodGhpcyx0bikuZm9yRWFjaCh1PT57dS5vbk11dGF0aW9uVXBkYXRlKHMpfSkseSh0aGlzLHN0KS5ub3RpZnkoe211dGF0aW9uOnRoaXMsdHlwZToidXBkYXRlZCIsYWN0aW9uOnN9KX0pfSxnaCk7ZnVuY3Rpb24gWGgoKXtyZXR1cm57Y29udGV4dDp2b2lkIDAsZGF0YTp2b2lkIDAsZXJyb3I6bnVsbCxmYWlsdXJlQ291bnQ6MCxmYWlsdXJlUmVhc29uOm51bGwsaXNQYXVzZWQ6ITEsc3RhdHVzOiJpZGxlIix2YXJpYWJsZXM6dm9pZCAwLHN1Ym1pdHRlZEF0OjB9fXZhciBnbixxdCxoaSx2aCxfeT0odmg9Y2xhc3MgZXh0ZW5kcyBmc3tjb25zdHJ1Y3RvcihzPXt9KXtzdXBlcigpO25lKHRoaXMsZ24pO25lKHRoaXMscXQpO25lKHRoaXMsaGkpO3RoaXMuY29uZmlnPXMsVyh0aGlzLGduLG5ldyBTZXQpLFcodGhpcyxxdCxuZXcgTWFwKSxXKHRoaXMsaGksMCl9YnVpbGQocyxsLHUpe2NvbnN0IGQ9bmV3IFB5KHtjbGllbnQ6cyxtdXRhdGlvbkNhY2hlOnRoaXMsbXV0YXRpb25JZDorK19sKHRoaXMsaGkpLl8sb3B0aW9uczpzLmRlZmF1bHRNdXRhdGlvbk9wdGlvbnMobCksc3RhdGU6dX0pO3JldHVybiB0aGlzLmFkZChkKSxkfWFkZChzKXt5KHRoaXMsZ24pLmFkZChzKTtjb25zdCBsPUxsKHMpO2lmKHR5cGVvZiBsPT0ic3RyaW5nIil7Y29uc3QgdT15KHRoaXMscXQpLmdldChsKTt1P3UucHVzaChzKTp5KHRoaXMscXQpLnNldChsLFtzXSl9dGhpcy5ub3RpZnkoe3R5cGU6ImFkZGVkIixtdXRhdGlvbjpzfSl9cmVtb3ZlKHMpe2lmKHkodGhpcyxnbikuZGVsZXRlKHMpKXtjb25zdCBsPUxsKHMpO2lmKHR5cGVvZiBsPT0ic3RyaW5nIil7Y29uc3QgdT15KHRoaXMscXQpLmdldChsKTtpZih1KWlmKHUubGVuZ3RoPjEpe2NvbnN0IGQ9dS5pbmRleE9mKHMpO2QhPT0tMSYmdS5zcGxpY2UoZCwxKX1lbHNlIHVbMF09PT1zJiZ5KHRoaXMscXQpLmRlbGV0ZShsKX19dGhpcy5ub3RpZnkoe3R5cGU6InJlbW92ZWQiLG11dGF0aW9uOnN9KX1jYW5SdW4ocyl7dmFyIHU7Y29uc3QgbD1MbChzKTtpZih0eXBlb2YgbD09InN0cmluZyIpe2NvbnN0IGQ9KHU9eSh0aGlzLHF0KS5nZXQobCkpPT1udWxsP3ZvaWQgMDp1LmZpbmQoaD0+aC5zdGF0ZS5zdGF0dXM9PT0icGVuZGluZyIpO3JldHVybiFkfHxkPT09c31lbHNlIHJldHVybiEwfXJ1bk5leHQocyl7dmFyIHUsZDtjb25zdCBsPUxsKHMpO3JldHVybiB0eXBlb2YgbD09InN0cmluZyI/KChkPSh1PXkodGhpcyxxdCkuZ2V0KGwpKT09bnVsbD92b2lkIDA6dS5maW5kKGg9PmghPT1zJiZoLnN0YXRlLmlzUGF1c2VkKSk9PW51bGw/dm9pZCAwOmQuY29udGludWUoKSk/P1Byb21pc2UucmVzb2x2ZSgpOlByb21pc2UucmVzb2x2ZSgpfWNsZWFyKCl7S2UuYmF0Y2goKCk9Pnt5KHRoaXMsZ24pLmZvckVhY2gocz0+e3RoaXMubm90aWZ5KHt0eXBlOiJyZW1vdmVkIixtdXRhdGlvbjpzfSl9KSx5KHRoaXMsZ24pLmNsZWFyKCkseSh0aGlzLHF0KS5jbGVhcigpfSl9Z2V0QWxsKCl7cmV0dXJuIEFycmF5LmZyb20oeSh0aGlzLGduKSl9ZmluZChzKXtjb25zdCBsPXtleGFjdDohMCwuLi5zfTtyZXR1cm4gdGhpcy5nZXRBbGwoKS5maW5kKHU9PlhmKGwsdSkpfWZpbmRBbGwocz17fSl7cmV0dXJuIHRoaXMuZ2V0QWxsKCkuZmlsdGVyKGw9PlhmKHMsbCkpfW5vdGlmeShzKXtLZS5iYXRjaCgoKT0+e3RoaXMubGlzdGVuZXJzLmZvckVhY2gobD0+e2wocyl9KX0pfXJlc3VtZVBhdXNlZE11dGF0aW9ucygpe2NvbnN0IHM9dGhpcy5nZXRBbGwoKS5maWx0ZXIobD0+bC5zdGF0ZS5pc1BhdXNlZCk7cmV0dXJuIEtlLmJhdGNoKCgpPT5Qcm9taXNlLmFsbChzLm1hcChsPT5sLmNvbnRpbnVlKCkuY2F0Y2goZHQpKSkpfX0sZ249bmV3IFdlYWtNYXAscXQ9bmV3IFdlYWtNYXAsaGk9bmV3IFdlYWtNYXAsdmgpO2Z1bmN0aW9uIExsKHIpe3ZhciBzO3JldHVybihzPXIub3B0aW9ucy5zY29wZSk9PW51bGw/dm9pZCAwOnMuaWR9dmFyIHZuLFFuLGl0LHluLHNuLHJpLGd1LHloLFR5PSh5aD1jbGFzcyBleHRlbmRzIGZze2NvbnN0cnVjdG9yKGwsdSl7c3VwZXIoKTtuZSh0aGlzLHNuKTtuZSh0aGlzLHZuKTtuZSh0aGlzLFFuKTtuZSh0aGlzLGl0KTtuZSh0aGlzLHluKTtXKHRoaXMsdm4sbCksdGhpcy5zZXRPcHRpb25zKHUpLHRoaXMuYmluZE1ldGhvZHMoKSxjZSh0aGlzLHNuLHJpKS5jYWxsKHRoaXMpfWJpbmRNZXRob2RzKCl7dGhpcy5tdXRhdGU9dGhpcy5tdXRhdGUuYmluZCh0aGlzKSx0aGlzLnJlc2V0PXRoaXMucmVzZXQuYmluZCh0aGlzKX1zZXRPcHRpb25zKGwpe3ZhciBkO2NvbnN0IHU9dGhpcy5vcHRpb25zO3RoaXMub3B0aW9ucz15KHRoaXMsdm4pLmRlZmF1bHRNdXRhdGlvbk9wdGlvbnMobCksTWwodGhpcy5vcHRpb25zLHUpfHx5KHRoaXMsdm4pLmdldE11dGF0aW9uQ2FjaGUoKS5ub3RpZnkoe3R5cGU6Im9ic2VydmVyT3B0aW9uc1VwZGF0ZWQiLG11dGF0aW9uOnkodGhpcyxpdCksb2JzZXJ2ZXI6dGhpc30pLHUhPW51bGwmJnUubXV0YXRpb25LZXkmJnRoaXMub3B0aW9ucy5tdXRhdGlvbktleSYmd3IodS5tdXRhdGlvbktleSkhPT13cih0aGlzLm9wdGlvbnMubXV0YXRpb25LZXkpP3RoaXMucmVzZXQoKTooKGQ9eSh0aGlzLGl0KSk9PW51bGw/dm9pZCAwOmQuc3RhdGUuc3RhdHVzKT09PSJwZW5kaW5nIiYmeSh0aGlzLGl0KS5zZXRPcHRpb25zKHRoaXMub3B0aW9ucyl9b25TdWJzY3JpYmUoKXt0aGlzLmxpc3RlbmVycy5zaXplPT09MSYmeSh0aGlzLGl0KSYmKHkodGhpcyxpdCkuYWRkT2JzZXJ2ZXIodGhpcyksY2UodGhpcyxzbixyaSkuY2FsbCh0aGlzKSl9b25VbnN1YnNjcmliZSgpe3ZhciBsO3RoaXMuaGFzTGlzdGVuZXJzKCl8fChsPXkodGhpcyxpdCkpPT1udWxsfHxsLnJlbW92ZU9ic2VydmVyKHRoaXMpfW9uTXV0YXRpb25VcGRhdGUobCl7Y2UodGhpcyxzbixyaSkuY2FsbCh0aGlzKSxjZSh0aGlzLHNuLGd1KS5jYWxsKHRoaXMsbCl9Z2V0Q3VycmVudFJlc3VsdCgpe3JldHVybiB5KHRoaXMsUW4pfXJlc2V0KCl7dmFyIGw7KGw9eSh0aGlzLGl0KSk9PW51bGx8fGwucmVtb3ZlT2JzZXJ2ZXIodGhpcyksVyh0aGlzLGl0LHZvaWQgMCksY2UodGhpcyxzbixyaSkuY2FsbCh0aGlzKSxjZSh0aGlzLHNuLGd1KS5jYWxsKHRoaXMpfW11dGF0ZShsLHUpe3ZhciBkO3JldHVybiBXKHRoaXMseW4sdSksKGQ9eSh0aGlzLGl0KSk9PW51bGx8fGQucmVtb3ZlT2JzZXJ2ZXIodGhpcyksVyh0aGlzLGl0LHkodGhpcyx2bikuZ2V0TXV0YXRpb25DYWNoZSgpLmJ1aWxkKHkodGhpcyx2biksdGhpcy5vcHRpb25zKSkseSh0aGlzLGl0KS5hZGRPYnNlcnZlcih0aGlzKSx5KHRoaXMsaXQpLmV4ZWN1dGUobCl9fSx2bj1uZXcgV2Vha01hcCxRbj1uZXcgV2Vha01hcCxpdD1uZXcgV2Vha01hcCx5bj1uZXcgV2Vha01hcCxzbj1uZXcgV2Vha1NldCxyaT1mdW5jdGlvbigpe3ZhciB1O2NvbnN0IGw9KCh1PXkodGhpcyxpdCkpPT1udWxsP3ZvaWQgMDp1LnN0YXRlKT8/WGgoKTtXKHRoaXMsUW4sey4uLmwsaXNQZW5kaW5nOmwuc3RhdHVzPT09InBlbmRpbmciLGlzU3VjY2VzczpsLnN0YXR1cz09PSJzdWNjZXNzIixpc0Vycm9yOmwuc3RhdHVzPT09ImVycm9yIixpc0lkbGU6bC5zdGF0dXM9PT0iaWRsZSIsbXV0YXRlOnRoaXMubXV0YXRlLHJlc2V0OnRoaXMucmVzZXR9KX0sZ3U9ZnVuY3Rpb24obCl7S2UuYmF0Y2goKCk9Pnt2YXIgdSxkLGgscCxtLHYsUyxFO2lmKHkodGhpcyx5bikmJnRoaXMuaGFzTGlzdGVuZXJzKCkpe2NvbnN0IHg9eSh0aGlzLFFuKS52YXJpYWJsZXMsVD15KHRoaXMsUW4pLmNvbnRleHQsTz17Y2xpZW50OnkodGhpcyx2biksbWV0YTp0aGlzLm9wdGlvbnMubWV0YSxtdXRhdGlvbktleTp0aGlzLm9wdGlvbnMubXV0YXRpb25LZXl9O2lmKChsPT1udWxsP3ZvaWQgMDpsLnR5cGUpPT09InN1Y2Nlc3MiKXt0cnl7KGQ9KHU9eSh0aGlzLHluKSkub25TdWNjZXNzKT09bnVsbHx8ZC5jYWxsKHUsbC5kYXRhLHgsVCxPKX1jYXRjaChBKXtQcm9taXNlLnJlamVjdChBKX10cnl7KHA9KGg9eSh0aGlzLHluKSkub25TZXR0bGVkKT09bnVsbHx8cC5jYWxsKGgsbC5kYXRhLG51bGwseCxULE8pfWNhdGNoKEEpe1Byb21pc2UucmVqZWN0KEEpfX1lbHNlIGlmKChsPT1udWxsP3ZvaWQgMDpsLnR5cGUpPT09ImVycm9yIil7dHJ5eyh2PShtPXkodGhpcyx5bikpLm9uRXJyb3IpPT1udWxsfHx2LmNhbGwobSxsLmVycm9yLHgsVCxPKX1jYXRjaChBKXtQcm9taXNlLnJlamVjdChBKX10cnl7KEU9KFM9eSh0aGlzLHluKSkub25TZXR0bGVkKT09bnVsbHx8RS5jYWxsKFMsdm9pZCAwLGwuZXJyb3IseCxULE8pfWNhdGNoKEEpe1Byb21pc2UucmVqZWN0KEEpfX19dGhpcy5saXN0ZW5lcnMuZm9yRWFjaCh4PT57eCh5KHRoaXMsUW4pKX0pfSl9LHloKSxybix4aCxGeT0oeGg9Y2xhc3MgZXh0ZW5kcyBmc3tjb25zdHJ1Y3RvcihzPXt9KXtzdXBlcigpO25lKHRoaXMscm4pO3RoaXMuY29uZmlnPXMsVyh0aGlzLHJuLG5ldyBNYXApfWJ1aWxkKHMsbCx1KXtjb25zdCBkPWwucXVlcnlLZXksaD1sLnF1ZXJ5SGFzaD8/THUoZCxsKTtsZXQgcD10aGlzLmdldChoKTtyZXR1cm4gcHx8KHA9bmV3IEV5KHtjbGllbnQ6cyxxdWVyeUtleTpkLHF1ZXJ5SGFzaDpoLG9wdGlvbnM6cy5kZWZhdWx0UXVlcnlPcHRpb25zKGwpLHN0YXRlOnUsZGVmYXVsdE9wdGlvbnM6cy5nZXRRdWVyeURlZmF1bHRzKGQpfSksdGhpcy5hZGQocCkpLHB9YWRkKHMpe3kodGhpcyxybikuaGFzKHMucXVlcnlIYXNoKXx8KHkodGhpcyxybikuc2V0KHMucXVlcnlIYXNoLHMpLHRoaXMubm90aWZ5KHt0eXBlOiJhZGRlZCIscXVlcnk6c30pKX1yZW1vdmUocyl7eSh0aGlzLHJuKS5nZXQocy5xdWVyeUhhc2gpPT09cyYmKHMuZGVzdHJveSgpLHkodGhpcyxybikuZGVsZXRlKHMucXVlcnlIYXNoKSx0aGlzLm5vdGlmeSh7dHlwZToicmVtb3ZlZCIscXVlcnk6c30pKX1jbGVhcigpe0tlLmJhdGNoKCgpPT57dGhpcy5nZXRBbGwoKS5mb3JFYWNoKHM9Pnt0aGlzLnJlbW92ZShzKX0pfSl9Z2V0KHMpe3JldHVybiB5KHRoaXMscm4pLmdldChzKX1nZXRBbGwoKXtyZXR1cm5bLi4ueSh0aGlzLHJuKS52YWx1ZXMoKV19ZmluZChzKXtjb25zdCBsPXtleGFjdDohMCwuLi5zfTtyZXR1cm4gdGhpcy5nZXRBbGwoKS5maW5kKHU9PllmKGwsdSkpfWZpbmRBbGwocz17fSl7Y29uc3QgbD10aGlzLmdldEFsbCgpO3JldHVybiBPYmplY3Qua2V5cyhzKS5sZW5ndGg+MD9sLmZpbHRlcih1PT5ZZihzLHUpKTpsfW5vdGlmeShzKXtLZS5iYXRjaCgoKT0+e3RoaXMubGlzdGVuZXJzLmZvckVhY2gobD0+e2wocyl9KX0pfW9uRm9jdXMoKXtLZS5iYXRjaCgoKT0+e3RoaXMuZ2V0QWxsKCkuZm9yRWFjaChzPT57cy5vbkZvY3VzKCl9KX0pfW9uT25saW5lKCl7S2UuYmF0Y2goKCk9Pnt0aGlzLmdldEFsbCgpLmZvckVhY2gocz0+e3Mub25PbmxpbmUoKX0pfSl9fSxybj1uZXcgV2Vha01hcCx4aCksQWUscW4sV24scnMsc3MsVm4saXMsbHMsd2gsTHk9KHdoPWNsYXNze2NvbnN0cnVjdG9yKHI9e30pe25lKHRoaXMsQWUpO25lKHRoaXMscW4pO25lKHRoaXMsV24pO25lKHRoaXMscnMpO25lKHRoaXMsc3MpO25lKHRoaXMsVm4pO25lKHRoaXMsaXMpO25lKHRoaXMsbHMpO1codGhpcyxBZSxyLnF1ZXJ5Q2FjaGV8fG5ldyBGeSksVyh0aGlzLHFuLHIubXV0YXRpb25DYWNoZXx8bmV3IF95KSxXKHRoaXMsV24sci5kZWZhdWx0T3B0aW9uc3x8e30pLFcodGhpcyxycyxuZXcgTWFwKSxXKHRoaXMsc3MsbmV3IE1hcCksVyh0aGlzLFZuLDApfW1vdW50KCl7X2wodGhpcyxWbikuXysrLHkodGhpcyxWbik9PT0xJiYoVyh0aGlzLGlzLE11LnN1YnNjcmliZShhc3luYyByPT57ciYmKGF3YWl0IHRoaXMucmVzdW1lUGF1c2VkTXV0YXRpb25zKCkseSh0aGlzLEFlKS5vbkZvY3VzKCkpfSkpLFcodGhpcyxscyxBbC5zdWJzY3JpYmUoYXN5bmMgcj0+e3ImJihhd2FpdCB0aGlzLnJlc3VtZVBhdXNlZE11dGF0aW9ucygpLHkodGhpcyxBZSkub25PbmxpbmUoKSl9KSkpfXVubW91bnQoKXt2YXIgcixzO19sKHRoaXMsVm4pLl8tLSx5KHRoaXMsVm4pPT09MCYmKChyPXkodGhpcyxpcykpPT1udWxsfHxyLmNhbGwodGhpcyksVyh0aGlzLGlzLHZvaWQgMCksKHM9eSh0aGlzLGxzKSk9PW51bGx8fHMuY2FsbCh0aGlzKSxXKHRoaXMsbHMsdm9pZCAwKSl9aXNGZXRjaGluZyhyKXtyZXR1cm4geSh0aGlzLEFlKS5maW5kQWxsKHsuLi5yLGZldGNoU3RhdHVzOiJmZXRjaGluZyJ9KS5sZW5ndGh9aXNNdXRhdGluZyhyKXtyZXR1cm4geSh0aGlzLHFuKS5maW5kQWxsKHsuLi5yLHN0YXR1czoicGVuZGluZyJ9KS5sZW5ndGh9Z2V0UXVlcnlEYXRhKHIpe3ZhciBsO2NvbnN0IHM9dGhpcy5kZWZhdWx0UXVlcnlPcHRpb25zKHtxdWVyeUtleTpyfSk7cmV0dXJuKGw9eSh0aGlzLEFlKS5nZXQocy5xdWVyeUhhc2gpKT09bnVsbD92b2lkIDA6bC5zdGF0ZS5kYXRhfWVuc3VyZVF1ZXJ5RGF0YShyKXtjb25zdCBzPXRoaXMuZGVmYXVsdFF1ZXJ5T3B0aW9ucyhyKSxsPXkodGhpcyxBZSkuYnVpbGQodGhpcyxzKSx1PWwuc3RhdGUuZGF0YTtyZXR1cm4gdT09PXZvaWQgMD90aGlzLmZldGNoUXVlcnkocik6KHIucmV2YWxpZGF0ZUlmU3RhbGUmJmwuaXNTdGFsZUJ5VGltZShPZShzLnN0YWxlVGltZSxsKSkmJnRoaXMucHJlZmV0Y2hRdWVyeShzKSxQcm9taXNlLnJlc29sdmUodSkpfWdldFF1ZXJpZXNEYXRhKHIpe3JldHVybiB5KHRoaXMsQWUpLmZpbmRBbGwocikubWFwKCh7cXVlcnlLZXk6cyxzdGF0ZTpsfSk9PltzLGwuZGF0YV0pfXNldFF1ZXJ5RGF0YShyLHMsbCl7dmFyIHA7Y29uc3QgdT10aGlzLmRlZmF1bHRRdWVyeU9wdGlvbnMoe3F1ZXJ5S2V5OnJ9KSxkPShwPXkodGhpcyxBZSkuZ2V0KHUucXVlcnlIYXNoKSk9PW51bGw/dm9pZCAwOnAuc3RhdGUuZGF0YSxoPWR5KHMsZCk7aWYoaCE9PXZvaWQgMClyZXR1cm4geSh0aGlzLEFlKS5idWlsZCh0aGlzLHUpLnNldERhdGEoaCx7Li4ubCxtYW51YWw6ITB9KX1zZXRRdWVyaWVzRGF0YShyLHMsbCl7cmV0dXJuIEtlLmJhdGNoKCgpPT55KHRoaXMsQWUpLmZpbmRBbGwocikubWFwKCh7cXVlcnlLZXk6dX0pPT5bdSx0aGlzLnNldFF1ZXJ5RGF0YSh1LHMsbCldKSl9Z2V0UXVlcnlTdGF0ZShyKXt2YXIgbDtjb25zdCBzPXRoaXMuZGVmYXVsdFF1ZXJ5T3B0aW9ucyh7cXVlcnlLZXk6cn0pO3JldHVybihsPXkodGhpcyxBZSkuZ2V0KHMucXVlcnlIYXNoKSk9PW51bGw/dm9pZCAwOmwuc3RhdGV9cmVtb3ZlUXVlcmllcyhyKXtjb25zdCBzPXkodGhpcyxBZSk7S2UuYmF0Y2goKCk9PntzLmZpbmRBbGwocikuZm9yRWFjaChsPT57cy5yZW1vdmUobCl9KX0pfXJlc2V0UXVlcmllcyhyLHMpe2NvbnN0IGw9eSh0aGlzLEFlKTtyZXR1cm4gS2UuYmF0Y2goKCk9Pntjb25zdCB1PWwuZmluZEFsbChyKSxkPW5ldyBTZXQodSk7cmV0dXJuIHUuZm9yRWFjaChoPT57aC5yZXNldCgpfSksdGhpcy5yZWZldGNoUXVlcmllcyh7dHlwZToiYWN0aXZlIixwcmVkaWNhdGU6aD0+ZC5oYXMoaCl9LHMpfSl9Y2FuY2VsUXVlcmllcyhyLHM9e30pe2NvbnN0IGw9e3JldmVydDohMCwuLi5zfSx1PUtlLmJhdGNoKCgpPT55KHRoaXMsQWUpLmZpbmRBbGwocikubWFwKGQ9PmQuY2FuY2VsKGwpKSk7cmV0dXJuIFByb21pc2UuYWxsKHUpLnRoZW4oZHQpLmNhdGNoKGR0KX1pbnZhbGlkYXRlUXVlcmllcyhyLHM9e30pe3JldHVybiBLZS5iYXRjaCgoKT0+KHkodGhpcyxBZSkuZmluZEFsbChyKS5mb3JFYWNoKGw9PntsLmludmFsaWRhdGUoKX0pLChyPT1udWxsP3ZvaWQgMDpyLnJlZmV0Y2hUeXBlKT09PSJub25lIj9Qcm9taXNlLnJlc29sdmUoKTp0aGlzLnJlZmV0Y2hRdWVyaWVzKHsuLi5yLHR5cGU6KHI9PW51bGw/dm9pZCAwOnIucmVmZXRjaFR5cGUpPz8ocj09bnVsbD92b2lkIDA6ci50eXBlKT8/ImFjdGl2ZSJ9LHMpKSl9cmVmZXRjaFF1ZXJpZXMocixzPXt9KXtjb25zdCBsPXsuLi5zLGNhbmNlbFJlZmV0Y2g6cy5jYW5jZWxSZWZldGNoPz8hMH0sdT1LZS5iYXRjaCgoKT0+eSh0aGlzLEFlKS5maW5kQWxsKHIpLmZpbHRlcihkPT4hZC5pc0Rpc2FibGVkKCkmJiFkLmlzU3RhdGljKCkpLm1hcChkPT57bGV0IGg9ZC5mZXRjaCh2b2lkIDAsbCk7cmV0dXJuIGwudGhyb3dPbkVycm9yfHwoaD1oLmNhdGNoKGR0KSksZC5zdGF0ZS5mZXRjaFN0YXR1cz09PSJwYXVzZWQiP1Byb21pc2UucmVzb2x2ZSgpOmh9KSk7cmV0dXJuIFByb21pc2UuYWxsKHUpLnRoZW4oZHQpfWFzeW5jIHF1ZXJ5KHIpe2NvbnN0IHM9dGhpcy5kZWZhdWx0UXVlcnlPcHRpb25zKHIpO3MucmV0cnk9PT12b2lkIDAmJihzLnJldHJ5PSExKTtjb25zdCBsPXkodGhpcyxBZSkuYnVpbGQodGhpcyxzKSx1PWwuaXNTdGFsZUJ5VGltZShPZShzLnN0YWxlVGltZSxsKSk/YXdhaXQgbC5mZXRjaChzKTpsLnN0YXRlLmRhdGEsZD1zLnNlbGVjdDtyZXR1cm4gZD9kKHUpOnV9ZmV0Y2hRdWVyeShyKXtjb25zdCBzPXRoaXMuZGVmYXVsdFF1ZXJ5T3B0aW9ucyhyKTtzLnJldHJ5PT09dm9pZCAwJiYocy5yZXRyeT0hMSk7Y29uc3QgbD15KHRoaXMsQWUpLmJ1aWxkKHRoaXMscyk7cmV0dXJuIGwuaXNTdGFsZUJ5VGltZShPZShzLnN0YWxlVGltZSxsKSk/bC5mZXRjaChzKTpQcm9taXNlLnJlc29sdmUobC5zdGF0ZS5kYXRhKX1wcmVmZXRjaFF1ZXJ5KHIpe3JldHVybiB0aGlzLmZldGNoUXVlcnkocikudGhlbihkdCkuY2F0Y2goZHQpfWluZmluaXRlUXVlcnkocil7cmV0dXJuIHIuX3R5cGU9ImluZmluaXRlIix0aGlzLnF1ZXJ5KHIpfWZldGNoSW5maW5pdGVRdWVyeShyKXtyZXR1cm4gci5fdHlwZT0iaW5maW5pdGUiLHRoaXMuZmV0Y2hRdWVyeShyKX1wcmVmZXRjaEluZmluaXRlUXVlcnkocil7cmV0dXJuIHRoaXMuZmV0Y2hJbmZpbml0ZVF1ZXJ5KHIpLnRoZW4oZHQpLmNhdGNoKGR0KX1lbnN1cmVJbmZpbml0ZVF1ZXJ5RGF0YShyKXtyZXR1cm4gci5fdHlwZT0iaW5maW5pdGUiLHRoaXMuZW5zdXJlUXVlcnlEYXRhKHIpfXJlc3VtZVBhdXNlZE11dGF0aW9ucygpe3JldHVybiBBbC5pc09ubGluZSgpP3kodGhpcyxxbikucmVzdW1lUGF1c2VkTXV0YXRpb25zKCk6UHJvbWlzZS5yZXNvbHZlKCl9Z2V0UXVlcnlDYWNoZSgpe3JldHVybiB5KHRoaXMsQWUpfWdldE11dGF0aW9uQ2FjaGUoKXtyZXR1cm4geSh0aGlzLHFuKX1nZXREZWZhdWx0T3B0aW9ucygpe3JldHVybiB5KHRoaXMsV24pfXNldERlZmF1bHRPcHRpb25zKHIpe1codGhpcyxXbixyKX1zZXRRdWVyeURlZmF1bHRzKHIscyl7eSh0aGlzLHJzKS5zZXQod3Iocikse3F1ZXJ5S2V5OnIsZGVmYXVsdE9wdGlvbnM6c30pfWdldFF1ZXJ5RGVmYXVsdHMocil7Y29uc3Qgcz1bLi4ueSh0aGlzLHJzKS52YWx1ZXMoKV0sbD17fTtyZXR1cm4gcy5mb3JFYWNoKHU9PnthcyhyLHUucXVlcnlLZXkpJiZPYmplY3QuYXNzaWduKGwsdS5kZWZhdWx0T3B0aW9ucyl9KSxsfXNldE11dGF0aW9uRGVmYXVsdHMocixzKXt5KHRoaXMsc3MpLnNldCh3cihyKSx7bXV0YXRpb25LZXk6cixkZWZhdWx0T3B0aW9uczpzfSl9Z2V0TXV0YXRpb25EZWZhdWx0cyhyKXtjb25zdCBzPVsuLi55KHRoaXMsc3MpLnZhbHVlcygpXSxsPXt9O3JldHVybiBzLmZvckVhY2godT0+e2FzKHIsdS5tdXRhdGlvbktleSkmJk9iamVjdC5hc3NpZ24obCx1LmRlZmF1bHRPcHRpb25zKX0pLGx9ZGVmYXVsdFF1ZXJ5T3B0aW9ucyhyKXtpZihyLl9kZWZhdWx0ZWQpcmV0dXJuIHI7Y29uc3Qgcz17Li4ueSh0aGlzLFduKS5xdWVyaWVzLC4uLnRoaXMuZ2V0UXVlcnlEZWZhdWx0cyhyLnF1ZXJ5S2V5KSwuLi5yLF9kZWZhdWx0ZWQ6ITB9O3JldHVybiBzLnF1ZXJ5SGFzaHx8KHMucXVlcnlIYXNoPUx1KHMucXVlcnlLZXkscykpLHMucmVmZXRjaE9uUmVjb25uZWN0PT09dm9pZCAwJiYocy5yZWZldGNoT25SZWNvbm5lY3Q9cy5uZXR3b3JrTW9kZSE9PSJhbHdheXMiKSxzLnRocm93T25FcnJvcj09PXZvaWQgMCYmKHMudGhyb3dPbkVycm9yPSEhcy5zdXNwZW5zZSksIXMubmV0d29ya01vZGUmJnMucGVyc2lzdGVyJiYocy5uZXR3b3JrTW9kZT0ib2ZmbGluZUZpcnN0Iikscy5xdWVyeUZuPT09RHUmJihzLmVuYWJsZWQ9ITEpLHN9ZGVmYXVsdE11dGF0aW9uT3B0aW9ucyhyKXtyZXR1cm4gciE9bnVsbCYmci5fZGVmYXVsdGVkP3I6ey4uLnkodGhpcyxXbikubXV0YXRpb25zLC4uLihyPT1udWxsP3ZvaWQgMDpyLm11dGF0aW9uS2V5KSYmdGhpcy5nZXRNdXRhdGlvbkRlZmF1bHRzKHIubXV0YXRpb25LZXkpLC4uLnIsX2RlZmF1bHRlZDohMH19Y2xlYXIoKXt5KHRoaXMsQWUpLmNsZWFyKCkseSh0aGlzLHFuKS5jbGVhcigpfX0sQWU9bmV3IFdlYWtNYXAscW49bmV3IFdlYWtNYXAsV249bmV3IFdlYWtNYXAscnM9bmV3IFdlYWtNYXAsc3M9bmV3IFdlYWtNYXAsVm49bmV3IFdlYWtNYXAsaXM9bmV3IFdlYWtNYXAsbHM9bmV3IFdlYWtNYXAsd2gpO2NvbnN0IFpoPWouY3JlYXRlQ29udGV4dCghMSksRHk9KCk9PmoudXNlQ29udGV4dChaaCk7WmguUHJvdmlkZXI7ZnVuY3Rpb24gT3koKXtsZXQgcj0hMTtyZXR1cm57Y2xlYXJSZXNldDooKT0+e3I9ITF9LHJlc2V0OigpPT57cj0hMH0saXNSZXNldDooKT0+cn19Y29uc3QgSXk9ai5jcmVhdGVDb250ZXh0KE95KCkpLE15PSgpPT5qLnVzZUNvbnRleHQoSXkpLHp5PShyLHMsbCk9Pntjb25zdCB1PWwhPW51bGwmJmwuc3RhdGUuZXJyb3ImJnR5cGVvZiByLnRocm93T25FcnJvcj09ImZ1bmN0aW9uIj9PdShyLnRocm93T25FcnJvcixbbC5zdGF0ZS5lcnJvcixsXSk6ci50aHJvd09uRXJyb3I7KHIuc3VzcGVuc2V8fHUpJiYocy5pc1Jlc2V0KCl8fChyLnJldHJ5T25Nb3VudD0hMSkpfSxBeT1yPT57ai51c2VFZmZlY3QoKCk9PntyLmNsZWFyUmVzZXQoKX0sW3JdKX0sJHk9KHtyZXN1bHQ6cixlcnJvclJlc2V0Qm91bmRhcnk6cyx0aHJvd09uRXJyb3I6bCxxdWVyeTp1LHN1c3BlbnNlOmR9KT0+ci5pc0Vycm9yJiYhcy5pc1Jlc2V0KCkmJiFyLmlzRmV0Y2hpbmcmJnUmJihkJiZyLmRhdGE9PT12b2lkIDB8fE91KGwsW3IuZXJyb3IsdV0pKSxVeT1yPT57aWYoci5zdXNwZW5zZSl7Y29uc3QgbD1kPT5kPT09InN0YXRpYyI/ZDpNYXRoLm1heChkPz8xZTMsMWUzKSx1PXIuc3RhbGVUaW1lO3Iuc3RhbGVUaW1lPXR5cGVvZiB1PT0iZnVuY3Rpb24iPyguLi5kKT0+bCh1KC4uLmQpKTpsKHUpLHR5cGVvZiByLmdjVGltZT09Im51bWJlciImJihyLmdjVGltZT1NYXRoLm1heChyLmdjVGltZSwxZTMpKX19LGJ5PShyLHMpPT4ocj09bnVsbD92b2lkIDA6ci5zdXNwZW5zZSkmJnMuaXNQZW5kaW5nLEJ5PShyLHMsbCk9PnMuZmV0Y2hPcHRpbWlzdGljKHIpLmNhdGNoKCgpPT57bC5jbGVhclJlc2V0KCl9KTtmdW5jdGlvbiBIeShyLHMsbCl7Y29uc3QgdT1EeSgpLGQ9TXkoKSxoPVFsKCkscD1oLmRlZmF1bHRRdWVyeU9wdGlvbnMociksbT1oLmdldFF1ZXJ5Q2FjaGUoKS5nZXQocC5xdWVyeUhhc2gpLHY9ci5zdWJzY3JpYmVkIT09ITE7cC5fb3B0aW1pc3RpY1Jlc3VsdHM9dT8iaXNSZXN0b3JpbmciOnY/Im9wdGltaXN0aWMiOnZvaWQgMCxVeShwKSx6eShwLGQsbSksQXkoZCk7Y29uc3RbU109ai51c2VTdGF0ZSgoKT0+bmV3IHMoaCxwKSksRT1TLmdldE9wdGltaXN0aWNSZXN1bHQocCkseD0hdSYmdjtpZihqLnVzZVN5bmNFeHRlcm5hbFN0b3JlKGoudXNlQ2FsbGJhY2soVD0+e2NvbnN0IE89eD9TLnN1YnNjcmliZShLZS5iYXRjaENhbGxzKFQpKTpkdDtyZXR1cm4gUy51cGRhdGVSZXN1bHQoKSxPfSxbUyx4XSksKCk9PlMuZ2V0Q3VycmVudFJlc3VsdCgpLCgpPT5TLmdldEN1cnJlbnRSZXN1bHQoKSksai51c2VFZmZlY3QoKCk9PntTLnNldE9wdGlvbnMocCl9LFtwLFNdKSxieShwLEUpKXRocm93IEJ5KHAsUyxkKTtpZigkeSh7cmVzdWx0OkUsZXJyb3JSZXNldEJvdW5kYXJ5OmQsdGhyb3dPbkVycm9yOnAudGhyb3dPbkVycm9yLHF1ZXJ5Om0sc3VzcGVuc2U6cC5zdXNwZW5zZX0pKXRocm93IEUuZXJyb3I7cmV0dXJuIHAubm90aWZ5T25DaGFuZ2VQcm9wcz9FOlMudHJhY2tSZXN1bHQoRSl9ZnVuY3Rpb24gR3QocixzKXtyZXR1cm4gSHkocixOeSl9ZnVuY3Rpb24gQ3QocixzKXtjb25zdCBsPVFsKCksW3VdPWoudXNlU3RhdGUoKCk9Pm5ldyBUeShsLHIpKTtqLnVzZUVmZmVjdCgoKT0+e3Uuc2V0T3B0aW9ucyhyKX0sW3Uscl0pO2NvbnN0IGQ9ai51c2VTeW5jRXh0ZXJuYWxTdG9yZShqLnVzZUNhbGxiYWNrKHA9PnUuc3Vic2NyaWJlKEtlLmJhdGNoQ2FsbHMocCkpLFt1XSksKCk9PnUuZ2V0Q3VycmVudFJlc3VsdCgpLCgpPT51LmdldEN1cnJlbnRSZXN1bHQoKSksaD1qLnVzZUNhbGxiYWNrKCguLi5wKT0+e3UubXV0YXRlKHBbMF0scFsxXSkuY2F0Y2goZHQpfSxbdV0pO2lmKGQuZXJyb3ImJk91KHUub3B0aW9ucy50aHJvd09uRXJyb3IsW2QuZXJyb3JdKSl0aHJvdyBkLmVycm9yO3JldHVybnsuLi5kLG11dGF0ZTpoLG11dGF0ZUFzeW5jOmQubXV0YXRlfX1jbGFzcyBpaSBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKHMsbCx1KXtzdXBlcihsKSx0aGlzLnN0YXR1cz1zLHRoaXMuY29kZT11fX1hc3luYyBmdW5jdGlvbiBhdChyLHMpe2NvbnN0IGw9YXdhaXQgZmV0Y2gocix7Li4ucyxoZWFkZXJzOnsiY29udGVudC10eXBlIjoiYXBwbGljYXRpb24vanNvbiIsLi4uKHM9PW51bGw/dm9pZCAwOnMuaGVhZGVycyk/P3t9fX0pLHU9YXdhaXQgbC50ZXh0KCksZD11P0pTT04ucGFyc2UodSk6e307aWYoIWwub2spdGhyb3cgbmV3IGlpKGwuc3RhdHVzLFN0cmluZyhkLmVycm9yPz9gSFRUUCAke2wuc3RhdHVzfWApLHR5cGVvZiBkLmNvZGU9PSJzdHJpbmciP2QuY29kZTp2b2lkIDApO3JldHVybiBkfWNvbnN0IER0PShyLHMpPT5hdChyLHttZXRob2Q6IlBPU1QiLGJvZHk6cz09PXZvaWQgMD92b2lkIDA6SlNPTi5zdHJpbmdpZnkocyl9KSxReT0ocixzKT0+YXQocix7bWV0aG9kOiJQQVRDSCIsYm9keTpKU09OLnN0cmluZ2lmeShzKX0pLFlhPXI9PmF0KHIse21ldGhvZDoiREVMRVRFIn0pLE5lPXtpbmZvOigpPT5hdCgiL2FwaS9pbmZvIiksYXV0aENsaWVudDooKT0+YXQoIi9hcGkvYXV0aC9jbGllbnQiKSxzZXRBdXRoQ2xpZW50OihyLHMpPT5EdCgiL2FwaS9hdXRoL2NsaWVudCIse2NsaWVudElkOnIsY2xpZW50U2VjcmV0OnN9KSxsb2dpblN0YXJ0OnI9PkR0KCIvYXBpL2F1dGgvbG9naW4vc3RhcnQiLHtsb2dpbkhpbnQ6cn0pLGxvZ2luU3RhdHVzOigpPT5hdCgiL2FwaS9hdXRoL2xvZ2luL3N0YXR1cyIpLGFjY291bnRzOigpPT5hdCgiL2FwaS9hY2NvdW50cyIpLHJlbW92ZUFjY291bnQ6cj0+WWEoYC9hcGkvYWNjb3VudHMvJHtyfWApLHRlc3RBY2NvdW50OnI9PkR0KGAvYXBpL2FjY291bnRzLyR7cn0vdGVzdGApLHNldERlZmF1bHRBY2NvdW50OnI9PkR0KGAvYXBpL2FjY291bnRzLyR7cn0vZGVmYXVsdGApLGluc3BlY3Q6cj0+RHQoIi9hcGkvaW5zcGVjdCIsciksaW5zcGVjdFByb2dyZXNzOnI9PmF0KGAvYXBpL2luc3BlY3QvcHJvZ3Jlc3M/dG9rZW49JHtlbmNvZGVVUklDb21wb25lbnQocil9YCksZm9sZGVyczoocixzLGw9IiIpPT5hdChgL2FwaS9kcml2ZS9mb2xkZXJzP2FjY291bnRJZD0ke2VuY29kZVVSSUNvbXBvbmVudChyKX0mcGFyZW50SWQ9JHtlbmNvZGVVUklDb21wb25lbnQocyl9JHtsP2AmcT0ke2VuY29kZVVSSUNvbXBvbmVudChsKX1gOiIifWApLGNyZWF0ZUZvbGRlcjpyPT5EdCgiL2FwaS9kcml2ZS9mb2xkZXJzIixyKSxqb2JzOigpPT5hdCgiL2FwaS9qb2JzIiksam9iOnI9PmF0KGAvYXBpL2pvYnMvJHtyfWApLGpvYkZpbGVzOihyLHMsbD0yMDAsdT0wKT0+YXQoYC9hcGkvam9icy8ke3J9L2ZpbGVzPyR7cz9gc3RhdHVzPSR7c30mYDoiIn1saW1pdD0ke2x9Jm9mZnNldD0ke3V9YCksY3JlYXRlSm9iOnI9PkR0KCIvYXBpL2pvYnMiLHIpLHBhdXNlSm9iOnI9PkR0KGAvYXBpL2pvYnMvJHtyfS9wYXVzZWApLHJlc3VtZUpvYjpyPT5EdChgL2FwaS9qb2JzLyR7cn0vcmVzdW1lYCksY2FuY2VsSm9iOnI9PkR0KGAvYXBpL2pvYnMvJHtyfS9jYW5jZWxgKSxkZWxldGVKb2I6cj0+WWEoYC9hcGkvam9icy8ke3J9YCksY29waWVzOigpPT5hdCgiL2FwaS9jb3BpZXMiKSxjaGVja0NvcHk6cj0+RHQoYC9hcGkvY29waWVzLyR7cn0vY2hlY2tgKSxzeW5jQ29weToocixzKT0+RHQoYC9hcGkvY29waWVzLyR7cn0vc3luY2Ase2ZvbGRlcnM6c30pLGRlbGV0ZUNvcHk6cj0+WWEoYC9hcGkvY29waWVzLyR7cn1gKSxzZXR0aW5nczooKT0+YXQoIi9hcGkvc2V0dGluZ3MiKSxwYXRjaFNldHRpbmdzOnI9PlF5KCIvYXBpL3NldHRpbmdzIixyKSxxdW90YTpyPT5hdChgL2FwaS9xdW90YSR7cj9gP2FjY291bnRJZD0ke2VuY29kZVVSSUNvbXBvbmVudChyKX1gOiIifWApfSxxeT1bInJ1bm5pbmciLCJxdWV1ZWQiXSxnaT1yPT5xeS5pbmNsdWRlcyhyLnN0YXR1cyksdmk9cj0+ci5zdGF0dXMuc3RhcnRzV2l0aCgicGF1c2VkIiksJGw9cj0+ci5zdGF0dXM9PT0iZG9uZSJ8fHIuc3RhdHVzPT09ImNhbmNlbGVkInx8ci5zdGF0dXM9PT0iZmFpbGVkIixlcD0oKT0+R3Qoe3F1ZXJ5S2V5OlsiaW5mbyJdLHF1ZXJ5Rm46TmUuaW5mb30pLHRwPSgpPT5HdCh7cXVlcnlLZXk6WyJhdXRoQ2xpZW50Il0scXVlcnlGbjpOZS5hdXRoQ2xpZW50fSkscWw9KCk9Pkd0KHtxdWVyeUtleTpbImFjY291bnRzIl0scXVlcnlGbjpOZS5hY2NvdW50cyxzZWxlY3Q6cj0+ci5hY2NvdW50c30pLG5wPSgpPT5HdCh7cXVlcnlLZXk6WyJzZXR0aW5ncyJdLHF1ZXJ5Rm46TmUuc2V0dGluZ3N9KSxXeT1yPT5HdCh7cXVlcnlLZXk6WyJxdW90YSIscj8/ImRlZmF1bHQiXSxxdWVyeUZuOigpPT5OZS5xdW90YShyKSxyZXRyeTohMX0pLFZ5PSgpPT5HdCh7cXVlcnlLZXk6WyJjb3BpZXMiXSxxdWVyeUZuOk5lLmNvcGllcyxzZWxlY3Q6cj0+ci5jb3BpZXN9KSxLeT0oKT0+R3Qoe3F1ZXJ5S2V5Olsiam9icyJdLHF1ZXJ5Rm46TmUuam9icyxzZWxlY3Q6cj0+ci5qb2JzLHJlZmV0Y2hJbnRlcnZhbDpyPT57dmFyIHM7cmV0dXJuKHM9ci5zdGF0ZS5kYXRhKSE9bnVsbCYmcy5qb2JzLnNvbWUoZ2kpPzJlMzoxZTR9fSksR3k9cj0+R3Qoe3F1ZXJ5S2V5Olsiam9iIixyXSxxdWVyeUZuOigpPT5OZS5qb2IocikscmVmZXRjaEludGVydmFsOnM9PnMuc3RhdGUuZGF0YSYmZ2kocy5zdGF0ZS5kYXRhLmpvYik/MmUzOiExfSksSnk9KHIscyxsPTIwMCx1PTApPT5HdCh7cXVlcnlLZXk6WyJqb2JGaWxlcyIscixzPz8iYWxsIixsLHVdLHF1ZXJ5Rm46KCk9Pk5lLmpvYkZpbGVzKHIscyxsLHUpLHNlbGVjdDpkPT5kLmZpbGVzfSksRGw9KHIscyxsPSIiKT0+R3Qoe3F1ZXJ5S2V5OlsiZm9sZGVycyIscixzLGxdLHF1ZXJ5Rm46KCk9Pk5lLmZvbGRlcnMocixzLGwpLGVuYWJsZWQ6ISFyLHNlbGVjdDp1PT51LmZvbGRlcnN9KSxZeT1yPT5HdCh7cXVlcnlLZXk6WyJpbnNwZWN0LXByb2dyZXNzIixyXSxxdWVyeUZuOmFzeW5jKCk9Pnt0cnl7cmV0dXJuKGF3YWl0IE5lLmluc3BlY3RQcm9ncmVzcyhyKSkuZmlsZXNTZWVufWNhdGNoKHMpe2lmKHMgaW5zdGFuY2VvZiBpaSYmcy5zdGF0dXM9PT00MDQpcmV0dXJuIG51bGw7dGhyb3cgc319LGVuYWJsZWQ6ISFyLHJlZmV0Y2hJbnRlcnZhbDo4MDAscmV0cnk6ITF9KTtmdW5jdGlvbiBocygpe2NvbnN0IHI9UWwoKTtyZXR1cm4oLi4ucyk9PlByb21pc2UuYWxsKHMubWFwKGw9PnIuaW52YWxpZGF0ZVF1ZXJpZXMoe3F1ZXJ5S2V5OltsXX0pKSl9ZnVuY3Rpb24gcnAoKXtjb25zdCByPWhzKCkscz0oKT0+cigiam9icyIsImpvYiIsInF1b3RhIiwiY29waWVzIik7cmV0dXJue3BhdXNlOkN0KHttdXRhdGlvbkZuOk5lLnBhdXNlSm9iLG9uU2V0dGxlZDpzfSkscmVzdW1lOkN0KHttdXRhdGlvbkZuOk5lLnJlc3VtZUpvYixvblNldHRsZWQ6c30pLGNhbmNlbDpDdCh7bXV0YXRpb25GbjpOZS5jYW5jZWxKb2Isb25TZXR0bGVkOnN9KSxyZW1vdmU6Q3Qoe211dGF0aW9uRm46TmUuZGVsZXRlSm9iLG9uU2V0dGxlZDpzfSl9fWZ1bmN0aW9uIFh5KCl7Y29uc3Qgcj1ocygpO3JldHVybiBDdCh7bXV0YXRpb25GbjpOZS5jcmVhdGVGb2xkZXIsb25TdWNjZXNzOigpPT5yKCJmb2xkZXJzIil9KX1mdW5jdGlvbiBaeSgpe2NvbnN0IHI9aHMoKTtyZXR1cm4gQ3Qoe211dGF0aW9uRm46TmUuY3JlYXRlSm9iLG9uU3VjY2VzczooKT0+cigiam9icyIsInF1b3RhIil9KX1mdW5jdGlvbiBzcCgpe2NvbnN0IHI9aHMoKSxzPSgpPT5yKCJhY2NvdW50cyIsImluZm8iLCJxdW90YSIpO3JldHVybntyZW1vdmU6Q3Qoe211dGF0aW9uRm46TmUucmVtb3ZlQWNjb3VudCxvblNldHRsZWQ6c30pLHNldERlZmF1bHQ6Q3Qoe211dGF0aW9uRm46TmUuc2V0RGVmYXVsdEFjY291bnQsb25TZXR0bGVkOnN9KSx0ZXN0OkN0KHttdXRhdGlvbkZuOk5lLnRlc3RBY2NvdW50LG9uU2V0dGxlZDpzfSl9fWZ1bmN0aW9uIGlwKCl7Y29uc3Qgcj1ocygpO3JldHVybiBDdCh7bXV0YXRpb25GbjpzPT5OZS5wYXRjaFNldHRpbmdzKHMpLG9uU2V0dGxlZDooKT0+cigic2V0dGluZ3MiLCJxdW90YSIpfSl9ZnVuY3Rpb24gZXgoKXtjb25zdCByPWhzKCk7cmV0dXJue2NoZWNrOkN0KHttdXRhdGlvbkZuOk5lLmNoZWNrQ29weSxvblNldHRsZWQ6KCk9PnIoImNvcGllcyIpfSksc3luYzpDdCh7bXV0YXRpb25Gbjooe2lkOnMsZm9sZGVyczpsfSk9Pk5lLnN5bmNDb3B5KHMsbCksb25TZXR0bGVkOigpPT5yKCJjb3BpZXMiLCJqb2JzIil9KSxyZW1vdmU6Q3Qoe211dGF0aW9uRm46TmUuZGVsZXRlQ29weSxvblNldHRsZWQ6KCk9PnIoImNvcGllcyIpfSl9fWZ1bmN0aW9uIGxpKHtzaXplOnI9MjQsYW5pbWF0ZWQ6cz0hMSxjbGFzc05hbWU6bD0iIn0pe2NvbnN0IHU9InJpZnQtZ3JhZCI7cmV0dXJuIGMuanN4cygic3ZnIix7d2lkdGg6cixoZWlnaHQ6cix2aWV3Qm94OiIwIDAgNDggNDgiLGZpbGw6Im5vbmUiLCJhcmlhLWhpZGRlbiI6InRydWUiLGNsYXNzTmFtZTpgJHtzPyJyaWZ0LWFuaW1hdGVkIjoiIn0gJHtsfWAsY2hpbGRyZW46W2MuanN4KCJkZWZzIix7Y2hpbGRyZW46Yy5qc3hzKCJsaW5lYXJHcmFkaWVudCIse2lkOnUseDE6IjAiLHkxOiIwIix4MjoiMCIseTI6IjEiLGNoaWxkcmVuOltjLmpzeCgic3RvcCIse29mZnNldDoiMCIsc3RvcENvbG9yOiIjNjdFOEY5In0pLGMuanN4KCJzdG9wIix7b2Zmc2V0OiIuNSIsc3RvcENvbG9yOiIjQTc4QkZBIn0pLGMuanN4KCJzdG9wIix7b2Zmc2V0OiIxIixzdG9wQ29sb3I6IiNDMDg0RkMifSldfSl9KSxjLmpzeCgicmVjdCIse3g6IjE4Iix5OiIxMCIsd2lkdGg6IjEyIixoZWlnaHQ6IjI4IixyeDoiNiIsZmlsbDpgdXJsKCMke3V9KWAsb3BhY2l0eToiLjQ1In0pLGMuanN4KCJyZWN0Iix7eDoiMTQiLHk6IjYiLHdpZHRoOiIyMCIsaGVpZ2h0OiIzNiIscng6IjEwIixzdHJva2U6YHVybCgjJHt1fSlgLHN0cm9rZVdpZHRoOiIyLjQifSksYy5qc3hzKCJnIix7Y2xhc3NOYW1lOiJyaWZ0LWFycm93IixjaGlsZHJlbjpbYy5qc3goInBhdGgiLHtkOiJNNCAyNGgxNCIsc3Ryb2tlOiJjdXJyZW50Q29sb3IiLHN0cm9rZVdpZHRoOiIyLjYiLHN0cm9rZUxpbmVjYXA6InJvdW5kIixvcGFjaXR5OiIuNCJ9KSxjLmpzeCgicGF0aCIse2Q6Ik0zMCAyNGgxMk0zNy41IDE5LjUgNDIgMjRsLTQuNSA0LjUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMi42IixzdHJva2VMaW5lY2FwOiJyb3VuZCIsc3Ryb2tlTGluZWpvaW46InJvdW5kIn0pXX0pXX0pfWZ1bmN0aW9uIGxwKHtzaXplOnI9Im1kIix0bzpzPSIvIn0pe2NvbnN0IGw9Yy5qc3hzKCJzcGFuIix7Y2xhc3NOYW1lOmBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIuNSBmb250LWJvbGQgdHJhY2tpbmctWy0wLjAyZW1dICR7cj09PSJsZyI/InRleHQtM3hsIjoidGV4dC1bMTVweF0ifWAsY2hpbGRyZW46W2MuanN4KGxpLHtzaXplOnI9PT0ibGciPzQwOjI0LGNsYXNzTmFtZToidGV4dC1mZyJ9KSxjLmpzeHMoInNwYW4iLHtjaGlsZHJlbjpbIlJpZnQiLGMuanN4KCJzcGFuIix7Y2xhc3NOYW1lOiJmb250LW5vcm1hbCB0ZXh0LW11dGVkIixjaGlsZHJlbjoiRHJpdmUifSldfSldfSk7cmV0dXJuIHM/Yy5qc3goeHIse3RvOnMsY2xhc3NOYW1lOiJyb3VuZGVkLW1kIGhvdmVyOm9wYWNpdHktOTAiLCJhcmlhLWxhYmVsIjoiUmlmdERyaXZlIOKAlCBpbsOtY2lvIixjaGlsZHJlbjpsfSk6bH1jb25zdCBOdD1yPT4oe3dpZHRoOjE2LGhlaWdodDoxNix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoyLHN0cm9rZUxpbmVjYXA6InJvdW5kIixzdHJva2VMaW5lam9pbjoicm91bmQiLCJhcmlhLWhpZGRlbiI6ITAsLi4ucn0pLHR4PXI9PmMuanN4cygic3ZnIix7Li4uTnQociksY2hpbGRyZW46W2MuanN4KCJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMyJ9KSxjLmpzeCgicGF0aCIse2Q6Ik0xOS40IDE1YTEuNyAxLjcgMCAwIDAgLjMgMS44bC4xLjFhMiAyIDAgMSAxLTIuOCAyLjhsLS4xLS4xYTEuNyAxLjcgMCAwIDAtMS44LS4zIDEuNyAxLjcgMCAwIDAtMSAxLjVWMjFhMiAyIDAgMSAxLTQgMHYtLjFhMS43IDEuNyAwIDAgMC0xLjEtMS41IDEuNyAxLjcgMCAwIDAtMS44LjNsLS4xLjFhMiAyIDAgMSAxLTIuOC0yLjhsLjEtLjFhMS43IDEuNyAwIDAgMCAuMy0xLjggMS43IDEuNyAwIDAgMC0xLjUtMUgzYTIgMiAwIDEgMSAwLTRoLjFhMS43IDEuNyAwIDAgMCAxLjUtMS4xIDEuNyAxLjcgMCAwIDAtLjMtMS44bC0uMS0uMWEyIDIgMCAxIDEgMi44LTIuOGwuMS4xYTEuNyAxLjcgMCAwIDAgMS44LjNIOWExLjcgMS43IDAgMCAwIDEtMS41VjNhMiAyIDAgMSAxIDQgMHYuMWExLjcgMS43IDAgMCAwIDEgMS41IDEuNyAxLjcgMCAwIDAgMS44LS4zbC4xLS4xYTIgMiAwIDEgMSAyLjggMi44bC0uMS4xYTEuNyAxLjcgMCAwIDAtLjMgMS44VjlhMS43IDEuNyAwIDAgMCAxLjUgMUgyMWEyIDIgMCAxIDEgMCA0aC0uMWExLjcgMS43IDAgMCAwLTEuNSAxeiJ9KV19KSxvcD1yPT5jLmpzeCgic3ZnIix7Li4uTnQociksY2hpbGRyZW46Yy5qc3goInBhdGgiLHtkOiJtMTUgMTgtNi02IDYtNiJ9KX0pLGxoPXI9PmMuanN4KCJzdmciLHsuLi5OdChyKSxjaGlsZHJlbjpjLmpzeCgicGF0aCIse2Q6Im05IDE4IDYtNi02LTYifSl9KSxvaT1yPT5jLmpzeCgic3ZnIix7Li4uTnQociksY2hpbGRyZW46Yy5qc3goInBhdGgiLHtkOiJNMTQgM2g3djdNMjEgM2wtOSA5TTE5IDEzdjZhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJWN2EyIDIgMCAwIDEgMi0yaDYifSl9KSxueD1yPT5jLmpzeHMoInN2ZyIsey4uLk50KHIpLGZpbGw6ImN1cnJlbnRDb2xvciIsc3Ryb2tlOiJub25lIixjaGlsZHJlbjpbYy5qc3goImNpcmNsZSIse2N4OiI1IixjeToiMTIiLHI6IjIifSksYy5qc3goImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIyIn0pLGMuanN4KCJjaXJjbGUiLHtjeDoiMTkiLGN5OiIxMiIscjoiMiJ9KV19KSxyeD1yPT5jLmpzeCgic3ZnIix7Li4uTnQociksY2hpbGRyZW46Yy5qc3goInBhdGgiLHtkOiJtNSAxMiA1IDVMMjAgNyJ9KX0pLHZ1PXI9PmMuanN4KCJzdmciLHsuLi5OdChyKSxjaGlsZHJlbjpjLmpzeCgicGF0aCIse2Q6Ik0zIDdhMiAyIDAgMCAxIDItMmg0bDIgMmg4YTIgMiAwIDAgMSAyIDJ2OWEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnoifSl9KSxhcD1yPT5jLmpzeCgic3ZnIix7Li4uTnQociksZmlsbDoiY3VycmVudENvbG9yIixzdHJva2U6Im5vbmUiLGNoaWxkcmVuOmMuanN4KCJwYXRoIix7ZDoiTTEyIDIuNWwyLjkgNi4xIDYuNi44LTQuOSA0LjYgMS4zIDYuNUwxMiAxNy4zIDYuMSAyMC41bDEuMy02LjVMMi41IDkuNGw2LjYtLjh6In0pfSksc3g9cj0+Yy5qc3hzKCJzdmciLHsuLi5OdChyKSxjaGlsZHJlbjpbYy5qc3goInJlY3QiLHt4OiI5Iix5OiI5Iix3aWR0aDoiMTIiLGhlaWdodDoiMTIiLHJ4OiIyIn0pLGMuanN4KCJwYXRoIix7ZDoiTTUgMTVINGEyIDIgMCAwIDEtMi0yVjRhMiAyIDAgMCAxIDItMmg5YTIgMiAwIDAgMSAyIDJ2MSJ9KV19KSxpeD1yPT5jLmpzeHMoInN2ZyIsey4uLk50KHIpLGNoaWxkcmVuOltjLmpzeCgiY2lyY2xlIix7Y3g6IjExIixjeToiMTEiLHI6IjcifSksYy5qc3goInBhdGgiLHtkOiJtMjAgMjAtMy41LTMuNSJ9KV19KSx1cD1yPT5jLmpzeHMoInN2ZyIsey4uLk50KHIpLGNoaWxkcmVuOltjLmpzeCgicGF0aCIse2Q6Ik00IDIwdi02YTQgNCAwIDAgMSA0LTRoMTIifSksYy5qc3goInBhdGgiLHtkOiJtMTUgNSA1IDUtNSA1In0pXX0pLGNwPXI9PmMuanN4cygic3ZnIix7Li4uTnQociksY2hpbGRyZW46W2MuanN4KCJjaXJjbGUiLHtjeDoiOSIsY3k6IjgiLHI6IjMuNSJ9KSxjLmpzeCgicGF0aCIse2Q6Ik0yLjUgMjBhNi41IDYuNSAwIDAgMSAxMyAwIn0pLGMuanN4KCJwYXRoIix7ZDoiTTE2IDQuNmEzLjUgMy41IDAgMCAxIDAgNi44In0pLGMuanN4KCJwYXRoIix7ZDoiTTE3LjUgMTMuN2E2LjUgNi41IDAgMCAxIDQgNi4zIn0pXX0pLGx4PXI9PmMuanN4cygic3ZnIix7Li4uTnQociksY2hpbGRyZW46W2MuanN4KCJwYXRoIix7ZDoiTTMgN2EyIDIgMCAwIDEgMi0yaDRsMiAyaDhhMiAyIDAgMCAxIDIgMnY5YTIgMiAwIDAgMS0yIDJINWEyIDIgMCAwIDEtMi0yeiJ9KSxjLmpzeCgicGF0aCIse2Q6Ik0xMiAxMXY2TTkgMTRoNiJ9KV19KSxDPXtuYXY6e3NldHRpbmdzOiJDb25maWd1cmHDp8O1ZXMiLGJhY2s6IlZvbHRhciJ9LHBhdGg6e3JpZnQ6InBlbG8gcmlmdCIsbWFjaGluZToicGVsYSBzdWEgbcOhcXVpbmEiLHJpZnRUaXRsZToiQSBjw7NwaWEgYWNvbnRlY2UgZGVudHJvIGRvIEdvb2dsZSwgc2Vydmlkb3IgYSBzZXJ2aWRvci4gTmFkYSBwYXNzYSBwZWxhIHN1YSBtw6FxdWluYS4iLG1hY2hpbmVUaXRsZToiT3MgYXJxdWl2b3MgZGVzY2VtIGRlIHVtYSBjb250YSBlIHNvYmVtIG5hIG91dHJhIHBlbGEgc3VhIG3DoXF1aW5hLiBQcmVjaXNhIGRlaXhhciBvIGFwcCBhYmVydG8uIn0saG9tZTp7dGl0bGU6Ik8gcXVlIHZhbW9zIGNvcGlhciBob2plPyIscGxhY2Vob2xkZXI6IkNvbGUgdW0gbGluayBkbyBHb29nbGUgRHJpdmXigKYiLGFuYWx5emU6IkFuYWxpc2FyIixicm93c2U6Ik5hdmVnYXIgbm8gRHJpdmUiLGNsZWFyOiJMaW1wYXIiLGFuYWx5emluZzoiTGVuZG8gYSBwYXN0YeKApiIsZmlsZXNTZWVuOnI9PmAke3IudG9Mb2NhbGVTdHJpbmcoInB0LUJSIil9ICR7cj09PTE/ImFycXVpdm8gZW5jb250cmFkbyI6ImFycXVpdm9zIGVuY29udHJhZG9zIn1gLGluUHJvZ3Jlc3M6IkVtIGFuZGFtZW50byIscGF1c2VkOiJQYXVzYWRhcyIsZmluaXNoZWQ6IkNvbmNsdcOtZGFzIixzZWVBbGw6cj0+YHZlciB0b2RhcyAoJHtyfSlgLHNlZUxlc3M6InZlciBtZW5vcyIsZW1wdHk6Ik5lbmh1bWEgY8OzcGlhIGFpbmRhLiBDb2xlIHVtIGxpbmsgb3UgbmF2ZWd1ZSBubyBEcml2ZSBwYXJhIGNvbWXDp2FyLiIsY2hlY2tOZXdzOiJWZXJpZmljYXIgbm92aWRhZGVzIn0scXVvdGE6e2xpbmU6KHIscyk9PmBDb3RhIGRlIGhvamU6ICR7cn0gcmVzdGFudGVzIMK3IHJlbm92YSDDoHMgJHtzfWAsdW5saW1pdGVkOiJTZW0gbGltaXRlIGRlIGNvdGEg4oCUIGNvcGlhIGF0w6kgbyBHb29nbGUgY29ydGFyIixmaXRzOiJDYWJlIG5hIGNvdGEgZGUgaG9qZSIsZG9lc05vdEZpdDpyPT5gVmFpIHVzYXIgYSBjb3RhIGRlIGhvamUgZSBjb250aW51YXIgYW1hbmjDoyDDoHMgJHtyfWAsdW5saW1pdGVkU2hvcnQ6IlNlbSBsaW1pdGUifSxhbmFseXNpczp7ZmlsZXM6cj0+YCR7ci50b0xvY2FsZVN0cmluZygicHQtQlIiKX0gJHtyPT09MT8iYXJxdWl2byI6ImFycXVpdm9zIn1gLGZyb206cj0+YGRlICR7cn1gLHBhdGhMYWJlbDoiQ2FtaW5obyIscmlmdFRleHQ6cj0+YEVzc2EgcGFzdGEgZXN0w6EgY29tcGFydGlsaGFkYSBjb20gJHtyfTogYSBjw7NwaWEgYWNvbnRlY2UgZGVudHJvIGRvIEdvb2dsZSwgc2VtIHBhc3NhciBwZWxhIHN1YSBtw6FxdWluYS4gUG9kZSBmZWNoYXIgbyBhcHAgbm8gbWVpbyDigJQgZWxhIGNvbnRpbnVhLmAsbWFjaGluZVRleHQ6cj0+YEVzc2EgcGFzdGEgbsOjbyBlc3TDoSBjb21wYXJ0aWxoYWRhIGNvbSAke3J9LCBlbnTDo28gb3MgYXJxdWl2b3MgdsOjbyBiYWl4YXIgZSBzdWJpciBwZWxhIHN1YSBtw6FxdWluYS5gLG1hY2hpbmVIaW50OiJTZSBvIGRvbm8gY29tcGFydGlsaGFyIGEgcGFzdGEgY29tIHZvY8OqLCBhIGPDs3BpYSBhY29udGVjZSBkZW50cm8gZG8gR29vZ2xlIOKAlCBpbnN0YW50w6JuZWEgZSBzZW0gdXNhciBzdWEgaW50ZXJuZXQuIixjb3B5UmVxdWVzdDoiQ29waWFyIHBlZGlkbyBwYXJhIGVudmlhciBhbyBkb25vIixjb3BpZWQ6IkNvcGlhZG8hIixrZWVwT3BlbjoicHJlY2lzYSBkZWl4YXIgbyBhcHAgYWJlcnRvIixibG9ja2VkTGFiZWw6IkJsb3F1ZWFkb3MiLGJsb2NrZWQ6cj0+YCR7cn0gJHtyPT09MT8iYXJxdWl2byI6ImFycXVpdm9zIn1gLGJsb2NrZWRUZXh0OiJvIGRvbm8gZGVzYXRpdm91IGPDs3BpYS9kb3dubG9hZCDCtyBmaWNhcsOjbyBkZSBmb3JhIixjb3B5YWJsZTpyPT5gY29wacOhdmVsOiAke3J9YCxzZWVXaGljaDoidmVyIHF1YWlzIixoaWRlOiJvY3VsdGFyIixuYXRpdmVMYWJlbDoiRm9yYSIsbmF0aXZlOnI9PmAke3J9ICR7cj09PTE/ImRvY3VtZW50byI6ImRvY3VtZW50b3MifSBkbyBHb29nbGUgJHtyPT09MT8iZmljYSI6ImZpY2FtIn0gZGUgZm9yYSAoZW50cmUgY29udGFzLCBwcmVjaXNhbSBkZSBjb252ZXJzw6NvKWAsZGVzdExhYmVsOiJEZXN0aW5vIixjaGVja2luZ0Rlc3Q6IkNvbmZlcmluZG8gbyBkZXN0aW5v4oCmIixyZXJlYWRpbmc6cj0+YFJlbGVuZG8gYSBwYXN0YSBwZWxhIGNvbnRhICR7cn3igKZgLG5hbWVMYWJlbDoiTm9tZSIscXVvdGFMYWJlbDoiQ290YSIsY29uZmxpY3RMYWJlbDoiSsOhIGV4aXN0ZSIsY29uZmxpY3RUZXh0OnI9PmBKw6EgZXhpc3RlIHVtYSBwYXN0YSAiJHtyfSIgbmVzc2UgZGVzdGluby5gLGNvbmZsaWN0UmVuYW1lOnI9PmBDcmlhciBvdXRyYTogIiR7cn0gKDIpImAsY29uZmxpY3RNZXJnZTonTWVzY2xhciBkZW50cm8gZGEgcGFzdGEgZXhpc3RlbnRlIChvIHF1ZSBmb3IgaWd1YWwgw6kgcHVsYWRvOyBvIHF1ZSBtdWRvdSBnYW5oYSBhIHZlcnPDo28gbm92YSBlIGEgYW50aWdhIGZpY2EgY29tbyAiKHZlcnPDo28gYW50ZXJpb3IpIiknLHN0YXJ0OiJJbmljaWFyIGPDs3BpYSDihpIiLGNhbmNlbDoiQ2FuY2VsYXIiLHN0YXJ0aW5nOiJJbmljaWFuZG/igKYifSxqb2I6e3N0YXR1czp7cXVldWVkOiJuYSBmaWxhIixydW5uaW5nOiJjb3BpYW5kbyIscGF1c2VkOiJwYXVzYWRhIixwYXVzZWRfcXVvdGE6ImFndWFyZGEgY290YSIscGF1c2VkX2F1dGg6ImNvbnRhIGRlc2NvbmVjdGFkYSIscGF1c2VkX3N0b3JhZ2U6ImRlc3Rpbm8gc2VtIGVzcGHDp28iLHBhdXNlZF9vZmZsaW5lOiJzZW0gY29uZXjDo28iLGRvbmU6ImNvbmNsdcOtZGEiLGNhbmNlbGVkOiJjYW5jZWxhZGEiLGZhaWxlZDoiZmFsaG91In0sZmlsZXM6KHIscyk9PmAke3IudG9Mb2NhbGVTdHJpbmcoInB0LUJSIil9IC8gJHtzLnRvTG9jYWxlU3RyaW5nKCJwdC1CUiIpfSBhcnF1aXZvc2AsYnl0ZXM6KHIscyk9PmAke3J9IGRlICR7c31gLGJsb2NrZWRTaG9ydDpyPT5gJHtyfSAke3I9PT0xPyJibG9xdWVhZG8iOiJibG9xdWVhZG9zIn0gcGVsbyBkb25vYCxyZXN1bWVzQXQ6cj0+YFJldG9tYSBzb3ppbmhhIMOgcyAke3J9YCxwYXVzZToiUGF1c2FyIixyZXN1bWU6IlJldG9tYXIiLGNhbmNlbDoiQ2FuY2VsYXIiLHJlbW92ZToiUmVtb3ZlciIsb3BlbkluRHJpdmU6IkFicmlyIG5vIERyaXZlIixyZWNvbm5lY3Q6IlJlY29uZWN0YXIiLGNvbmZpcm1DYW5jZWw6IkNhbmNlbGFyIGVzdGEgY8OzcGlhPyBPIHF1ZSBqw6EgZm9pIGNvcGlhZG8gZmljYSBubyBEcml2ZS4iLGNvbmZpcm1SZW1vdmU6IlJlbW92ZXIgZXN0YSBjw7NwaWEgZGEgbGlzdGE/IE5hZGEgw6kgYXBhZ2FkbyBubyBEcml2ZS4iLHN0YXJ0ZWQ6ImluaWNpYWRhIixmaW5pc2hlZDoiY29uY2x1w61kYSIsc3BlZWQ6cj0+cixldGE6cj0+YGZhbHRhbSAke3J9YCxmaWxlc1RpdGxlOiJBcnF1aXZvcyIsZmlsZVN0YXR1czp7cGVuZGluZzoiUGVuZGVudGVzIixkb25lOiJDb25jbHXDrWRvcyIsc2tpcHBlZF9ibG9ja2VkOiJCbG9xdWVhZG9zIixza2lwcGVkX25hdGl2ZToiRm9yYSIsZGVmZXJyZWQ6IkFndWFyZGFuZG8iLG1pc3Npbmc6IlN1bWlyYW0iLGZhaWxlZDoiRmFsaGFzIn0sbG9hZE1vcmU6ImNhcnJlZ2FyIG1haXMiLG5vRmlsZXM6Ik5lbmh1bSBhcnF1aXZvIG5lc3RlIGVzdGFkby4iLG9wZW5Tb3VyY2U6ImFicmlyIG9yaWdpbmFsIixvcGVuRGVzdDoiYWJyaXIgY8OzcGlhIixkZWZlcnJlZEhpbnQ6IkF0aW5naXJhbSBhIGNvdGEgZGUgZG93bmxvYWQgZG8gR29vZ2xlOyB2b2x0YW0gc296aW5ob3MgZW0gYXTDqSAyNCBoLiIsbm90Rm91bmQ6IkPDs3BpYSBuw6NvIGVuY29udHJhZGEuIn0sc2V0dXA6e3N0ZXA6KHIscyk9PmBDb25maWd1cmHDp8OjbyBpbmljaWFsIMK3ICR7cn0gZGUgJHtzfWAsdGl0bGU6IkFudGVzIGRlIHR1ZG86IHNldSBhY2Vzc28gYW8gR29vZ2xlIixpbnRybzE6Ik8gUmlmdERyaXZlIG7Do28gdGVtIHNlcnZpZG9yIG5lbSBjb250YSBwcsOzcHJpYSDigJQgZWxlIGZhbGEgY29tIG8gR29vZ2xlICIsaW50cm9TdHJvbmc6ImVtIHNldSBub21lIixpbnRybzI6IiwgY29tIHVtYSBjcmVkZW5jaWFsIHF1ZSBzw7Mgdm9jw6ogdGVtLiBQb3IgaXNzbyBvIEdvb2dsZSBwZWRlIHF1ZSBjYWRhIHBlc3NvYSBjcmllIGEgc3VhLiBMZXZhIHVucyA4IG1pbnV0b3MsIHVtYSDDum5pY2EgdmV6LiBOZW5odW0gZGFkbyBzZXUgcGFzc2EgcG9yIHRlcmNlaXJvcy4iLHN0ZXBzOntwcm9qZWN0OiJDcmlhciB1bSBwcm9qZXRvIG5vIEdvb2dsZSBDbG91ZCIscHJvamVjdEhpbnQ6J1BvZGUgY2hhbWFyIGRlICJSaWZ0RHJpdmUiLicsYXBpOiJBdGl2YXIgYSBHb29nbGUgRHJpdmUgQVBJIixhcGlIaW50OidBYnJhIG8gbGluayBlIGNsaXF1ZSBlbSAiQXRpdmFyIi4nLGNvbnNlbnQ6J1RlbGEgZGUgY29uc2VudGltZW50bzogdGlwbyAiRXh0ZXJubyIgZSAnLGNvbnNlbnRTdHJvbmc6InB1YmxpY2FyIGVtIHByb2R1w6fDo28iLGNvbnNlbnRXYXJuMTonRXNzZSDDqSBvIHBhc3NvIHF1ZSB0b2RvIG11bmRvIHB1bGEuIFNlIG8gYXBwIGZpY2FyIGVtICJUZXN0ZSIsIG8gR29vZ2xlICcsY29uc2VudFdhcm5TdHJvbmc6ImRlc2NvbmVjdGEgc3VhIGNvbnRhIGEgY2FkYSA3IGRpYXMiLGNvbnNlbnRXYXJuMjonLiBFbSAiUHJvZHXDp8OjbyIgYSBjb25leMOjbyBkdXJhIOKAlCBvIEdvb2dsZSBzw7MgbW9zdHJhIHVtIGF2aXNvIGRlICJhcHAgbsOjbyB2ZXJpZmljYWRvIiBuYSBwcmltZWlyYSB2ZXosIHF1ZSDDqSBlc3BlcmFkby4nLGNyZWRlbnRpYWw6J0NyaWFyIGNyZWRlbmNpYWw6IElEIGRvIGNsaWVudGUgT0F1dGgsIHRpcG8gIkFwcCBwYXJhIGNvbXB1dGFkb3IiJyxjcmVkZW50aWFsSGludDoiRW0gQ3JlZGVuY2lhaXMg4oaSIENyaWFyIGNyZWRlbmNpYWlzIOKGkiBJRCBkbyBjbGllbnRlIE9BdXRoLiIscGFzdGU6IkNvbGFyIGFxdWkgbyBJRCBlIG8gc2VncmVkbyBkbyBjbGllbnRlIn0sb3BlbjoiQWJyaXIiLGRvbmU6IkZlaXRvIixtYXJrRG9uZToiRmVpdG8sIHB1YmxpcXVlaSIsY2xpZW50SWQ6IklEIGRvIGNsaWVudGUiLGNsaWVudElkUGxhY2Vob2xkZXI6InRlcm1pbmEgZW0gLmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIixjbGllbnRTZWNyZXQ6IlNlZ3JlZG8gZG8gY2xpZW50ZSIsY2xpZW50U2VjcmV0UGxhY2Vob2xkZXI6ImNvbWXDp2EgY29tIEdPQ1NQWC0iLHN1Ym1pdDoiVmFsaWRhciBlIGVudHJhciBjb20gR29vZ2xlIOKGkiIsc3VibWl0dGluZzoiQWJyaW5kbyBvIEdvb2dsZeKApiIsd2FpdGluZzoiQWd1YXJkYW5kbyBhIGF1dG9yaXphw6fDo28gbm8gbmF2ZWdhZG9y4oCmIix3YWl0aW5nSGludDonVW1hIGFiYSBkbyBHb29nbGUgYWJyaXUuIEF1dG9yaXplIG8gYWNlc3NvOyBvIGF2aXNvIGRlICJhcHAgbsOjbyB2ZXJpZmljYWRvIiDDqSBlc3BlcmFkbyDigJQgY2xpcXVlIGVtIEF2YW7Dp2FkbyDihpIgQWNlc3Nhci4nLHNraXA6IkrDoSB0ZW0gdW0gY2xpZW50PyBQdWxhciBwYXJhIGNvbGFyIixjb25uZWN0ZWRUaXRsZTpyPT5gJHtyfSBjb25lY3RhZG9gLGNvbm5lY3RlZFRleHQ6IkVzdGEgY29udGEgc2Vyw6EgbyBkZXN0aW5vIHBhZHLDo28gZGFzIGPDs3BpYXMuIixhbm90aGVyOiJDb25lY3RhciBvdXRyYSBjb250YSIsYW5vdGhlckhpbnQ6IlBhcmEgY29waWFyIGVudHJlIGNvbnRhcyBkaWZlcmVudGVzIChleC46IGNvbnRhIGFudGlnYSDihpIgY29udGEgbm92YSkuIixmaW5pc2g6IkNvbWXDp2FyIGEgdXNhciDihpIiLHJldHJ5OiJUZW50YXIgZGUgbm92byJ9LHNldHRpbmdzOnt0aXRsZToiQ29uZmlndXJhw6fDtWVzIixxdW90YVRpdGxlOiJDb3RhIGRpw6FyaWEiLHF1b3RhSW50cm86Ik8gR29vZ2xlIGxpbWl0YSBxdWFudG8gY2FkYSBjb250YSBwb2RlIHJlY2ViZXIgcG9yIGRpYSAobmEgcHLDoXRpY2EsIH43NTAgR0IpLiBPIFJpZnREcml2ZSBwb2RlIHBhcmFyIGFudGVzIGRpc3NvLCBwb3Igc2VndXJhbsOnYSwgb3UgaXIgYXTDqSBvIEdvb2dsZSBjb3J0YXIuIixsaW1pdFRvOiJMaW1pdGFyIGEiLGdiUGVyRGF5OiJHQiBwb3IgZGlhIMK3IHJlbm92YSDDoHMiLGxpbWl0VGV4dDoiUXVhbmRvIGEgY290YSBkbyBkaWEgYWNhYmEsIGFzIGPDs3BpYXMgcGF1c2FtIGUgcmV0b21hbSBzb3ppbmhhcyBuYSByZW5vdmHDp8Ojby4gTnVuY2EgYmF0ZSBubyB0ZXRvIGRvIEdvb2dsZS4iLHVubGltaXRlZDoiU2VtIGxpbWl0ZSIsdW5saW1pdGVkVGV4dDoiQ29waWEgYXTDqSBvIEdvb2dsZSBjb3J0YXIuIFF1YW5kbyBjb3J0YXIsIG8gUmlmdERyaXZlIHBhdXNhIGEgY8OzcGlhLCBtb3N0cmEgbyBhdmlzbyBlIHRlbnRhIGRlIG5vdm8gYSBjYWRhIGhvcmEgYXTDqSBsaWJlcmFyLiIsc2F2ZWQ6IlNhbHZvIixhY2NvdW50c1RpdGxlOiJDb250YXMgZG8gR29vZ2xlIixjb25uZWN0ZWQ6ImNvbmVjdGFkYSIsZGlzY29ubmVjdGVkOnI9PnI/YGRlc2NvbmVjdGFkYSBkZXNkZSAke3J9YDoiZGVzY29uZWN0YWRhIixkZWZhdWx0RGVzdDoiZGVzdGlubyBwYWRyw6NvIixtYWtlRGVmYXVsdDoiVG9ybmFyIHBhZHLDo28iLHRlc3Q6IlRlc3RhciIsdGVzdGluZzoiVGVzdGFuZG/igKYiLHRlc3RPazpyPT5gT0sg4oCUICR7cn1gLHJlY29ubmVjdDoiUmVjb25lY3RhciIscmVtb3ZlOiJSZW1vdmVyIixjb25maXJtUmVtb3ZlOnI9PmBSZW1vdmVyICR7cn0/IEFzIGPDs3BpYXMgcXVlIGRlcGVuZGVtIGRlbGEgcGFyYW0uYCxjb25uZWN0QW5vdGhlcjoiKyBDb25lY3RhciBvdXRyYSBjb250YSIsY29weVRpdGxlOiJDw7NwaWEiLGRlZmF1bHRGb2xkZXI6IkRlc3Rpbm8gcGFkcsOjbyIsYmxvY2tlZFBvbGljeToiQXJxdWl2b3MgYmxvcXVlYWRvcyBwZWxvIGRvbm8gZmljYW0gZGUgZm9yYSBlIGFwYXJlY2VtIG5hIGxpc3RhIGRvIGpvYi4iLGNvcGllc1RpdGxlOiJDw7NwaWFzIHJlZ2lzdHJhZGFzIixjb3BpZXNJbnRybzonUGFzdGFzIGrDoSBjb3BpYWRhcy4gIlZlcmlmaWNhciBub3ZpZGFkZXMiIGNvbXBhcmEgYSBvcmlnZW0gY29tIG8gZGVzdGlubyBlIGRlaXhhIGJhaXhhciBzw7MgbyBxdWUgbXVkb3Ug4oCUIHNlbSBhcGFnYXIgbmFkYS4nLG5vQ29waWVzOiJOZW5odW1hIGPDs3BpYSBjb25jbHXDrWRhIGFpbmRhLiIsY2hlY2s6IlZlcmlmaWNhciBub3ZpZGFkZXMiLGNoZWNraW5nOiJWZXJpZmljYW5kb+KApiIsZm9yZ2V0OiJFc3F1ZWNlciIsbm9OZXdzOiJOYWRhIGRlIG5vdm8gbmEgb3JpZ2VtLiIsbmV3czoocixzKT0+YCR7cn0gJHtyPT09MT8ibm92byI6Im5vdm9zIn0gwrcgJHtzfSAke3M9PT0xPyJhdHVhbGl6YWRvIjoiYXR1YWxpemFkb3MifWAsZG93bmxvYWQ6IkJhaXhhciBzZWxlY2lvbmFkb3MiLGxhc3RDaGVja2VkOnI9PmB2ZXJpZmljYWRvICR7cn1gLG9hdXRoVGl0bGU6IkFjZXNzbyBhbyBHb29nbGUgKE9BdXRoIGNsaWVudCkiLG9hdXRoVGV4dDpyPT5gQ2xpZW50IGNvbmZpZ3VyYWRvOiAke3J9YCxvYXV0aENoYW5nZToiVHJvY2FyIn0sY29tbW9uOntsb2FkaW5nOiJDYXJyZWdhbmRv4oCmIixlcnJvcjoiQWxnbyBkZXUgZXJyYWRvLiIscmV0cnk6IlRlbnRhciBkZSBub3ZvIixzYXZlOiJTYWx2YXIiLGNsb3NlOiJGZWNoYXIiLHllczoiU2ltIixubzoiTsOjbyIsbXlEcml2ZToiTWV1IERyaXZlIixzdGFycmVkOiJDb20gZXN0cmVsYSIsc2hhcmVkOiJDb21wYXJ0aWxoYWRvcyBjb21pZ28iLHNob3J0Y3V0OiJhdGFsaG8iLGFjY291bnQ6IkNvbnRhIixzZWFyY2hGb2xkZXJzOiJCdXNjYXIgcGFzdGEgcGVsbyBub21l4oCmIixyZXN1bHRzRm9yOnI9PmBSZXN1bHRhZG9zIHBhcmEg4oCcJHtyfeKAnWAsbm9SZXN1bHRzOiJOZW5odW1hIHBhc3RhIGNvbSBlc3NlIG5vbWUuIixuZXdGb2xkZXI6Ik5vdmEgcGFzdGEiLG5ld0ZvbGRlck5hbWU6Ik5vbWUgZGEgbm92YSBwYXN0YSIsY3JlYXRlOiJDcmlhciIsY2FuY2VsOiJDYW5jZWxhciIsY2hvb3NlOiJFc2NvbGhlciIsY2hhbmdlOiJ0cm9jYXIiLGhlcmU6ImFxdWkiLHVwOiJWb2x0YXIgdW1hIHBhc3RhIn19O2Z1bmN0aW9uIHNpKHtjaGlsZHJlbjpyLG1heFdpZHRoOnM9Im1heC13LTJ4bCIscmlnaHQ6bH0pe3JldHVybiBjLmpzeHMoImRpdiIse2NsYXNzTmFtZToibWluLWgtc2NyZWVuIGZsZXggZmxleC1jb2wiLGNoaWxkcmVuOltjLmpzeHMoImhlYWRlciIse2NsYXNzTmFtZToiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHB4LTQgc206cHgtNiBweS0zIGJvcmRlci1iIGJvcmRlci1saW5lIixjaGlsZHJlbjpbYy5qc3gobHAse30pLGMuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiIsY2hpbGRyZW46W2w/P2MuanN4KG94LHt9KSxjLmpzeCh4cix7dG86Ii9jb25maWd1cmFjb2VzIiwiYXJpYS1sYWJlbCI6Qy5uYXYuc2V0dGluZ3MsdGl0bGU6Qy5uYXYuc2V0dGluZ3MsY2xhc3NOYW1lOiJwLTIgcm91bmRlZC1tZCB0ZXh0LW11dGVkIGhvdmVyOnRleHQtZmcgaG92ZXI6Ymctd2hpdGUvWzAuMDZdIixjaGlsZHJlbjpjLmpzeCh0eCx7fSl9KV19KV19KSxjLmpzeCgibWFpbiIse2NsYXNzTmFtZTpgbXgtYXV0byB3LWZ1bGwgJHtzfSBweC00IHNtOnB4LTYgcHktNyBmbGV4LTFgLGNoaWxkcmVuOnJ9KV19KX1mdW5jdGlvbiBveCgpe2NvbnN0e2RhdGE6cn09cWwoKSx7c2V0RGVmYXVsdDpzfT1zcCgpO2lmKCEociE9bnVsbCYmci5sZW5ndGgpKXJldHVybiBudWxsO2NvbnN0IGw9ci5maW5kKHU9PnUuaXNEZWZhdWx0RGVzdCk/P3JbMF07cmV0dXJuIHIubGVuZ3RoPT09MT9jLmpzeCgic3BhbiIse2NsYXNzTmFtZTpgdGV4dC1bMTJweF0gcHgtMi41IHB5LTEgcm91bmRlZC1tZCBiZy13aGl0ZS9bMC4wN10gJHtsLnN0YXR1cz09PSJkaXNjb25uZWN0ZWQiPyJ0ZXh0LWFtYmVyIjoidGV4dC1tdXRlZCJ9YCx0aXRsZTpsLmVtYWlsLGNoaWxkcmVuOmwuZW1haWx9KTpjLmpzeCgic2VsZWN0Iix7ImFyaWEtbGFiZWwiOiJDb250YSBkZSBkZXN0aW5vIHBhZHLDo28iLHZhbHVlOmwuaWQsb25DaGFuZ2U6dT0+cy5tdXRhdGUodS50YXJnZXQudmFsdWUpLGNsYXNzTmFtZToidGV4dC1bMTJweF0gcHgtMi41IHB5LTEgcm91bmRlZC1tZCBiZy13aGl0ZS9bMC4wN10gdGV4dC1tdXRlZCBib3JkZXItMCBtYXgtdy1bMjIwcHhdIixjaGlsZHJlbjpyLm1hcCh1PT5jLmpzeHMoIm9wdGlvbiIse3ZhbHVlOnUuaWQsY2hpbGRyZW46W3UuZW1haWwsdS5zdGF0dXM9PT0iZGlzY29ubmVjdGVkIj8iIChkZXNjb25lY3RhZGEpIjoiIl19LHUuaWQpKX0pfWNvbnN0IGF4PXtwcmltYXJ5OiJiZy12aW9sZXQgdGV4dC1pbmsgaG92ZXI6YmctdmlvbGV0LXN0cm9uZyBmb250LXNlbWlib2xkIGRpc2FibGVkOm9wYWNpdHktNTAiLGdob3N0OiJiZy13aGl0ZS9bMC4wN10gdGV4dC1mZyBob3ZlcjpiZy13aGl0ZS9bMC4xMV0gZm9udC1tZWRpdW0gZGlzYWJsZWQ6b3BhY2l0eS01MCIsZGFuZ2VyOiJiZy1yZWQvMTUgdGV4dC1yZWQgaG92ZXI6YmctcmVkLzI1IGZvbnQtbWVkaXVtIGRpc2FibGVkOm9wYWNpdHktNTAiLGxpbms6ImJnLXRyYW5zcGFyZW50IHRleHQtdmlvbGV0LXN0cm9uZyBob3Zlcjp1bmRlcmxpbmUgZm9udC1tZWRpdW0gcHgtMCBweS0wIGRpc2FibGVkOm9wYWNpdHktNTAifSx1eD17c206InRleHQtWzEycHhdIHB4LTIuNSBweS0xLjUgcm91bmRlZC1tZCIsbWQ6InRleHQtWzEzcHhdIHB4LTMuNSBweS0yIHJvdW5kZWQtbGcifTtmdW5jdGlvbiBnZSh7dmFyaWFudDpyPSJnaG9zdCIsc2l6ZTpzPSJtZCIsY2hpbGRyZW46bCxjbGFzc05hbWU6dT0iIiwuLi5kfSl7Y29uc3QgaD1yPT09ImxpbmsiPyIiOnV4W3NdO3JldHVybiBjLmpzeCgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixjbGFzc05hbWU6YGlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBnYXAtMS41IHRyYW5zaXRpb24tY29sb3JzICR7YXhbcl19ICR7aH0gJHt1fWAsLi4uZCxjaGlsZHJlbjpsfSl9Y29uc3QgY3g9e2luZm86ImJnLXZpb2xldC8xMCB0ZXh0LWZnIix3YXJuOiJiZy1hbWJlci8xMCB0ZXh0LWZnIixlcnJvcjoiYmctcmVkLzEwIHRleHQtZmciLHN1Y2Nlc3M6ImJnLWdyZWVuLzEwIHRleHQtZmcifTtmdW5jdGlvbiBJdCh7dG9uZTpyPSJpbmZvIixjaGlsZHJlbjpzLGNsYXNzTmFtZTpsPSIiLHJvbGU6dX0pe3JldHVybiBjLmpzeCgiZGl2Iix7cm9sZTp1Pz8ocj09PSJlcnJvciI/ImFsZXJ0Ijp2b2lkIDApLGNsYXNzTmFtZTpgcm91bmRlZC1sZyBweC0zLjUgcHktMyB0ZXh0LVsxM3B4XSBsZWFkaW5nLXJlbGF4ZWQgJHtjeFtyXX0gJHtsfWAsY2hpbGRyZW46c30pfWNvbnN0IG9oPVsiQiIsIktCIiwiTUIiLCJHQiIsIlRCIl07ZnVuY3Rpb24ganQocixzPTEpe2lmKHI9PW51bGx8fCFOdW1iZXIuaXNGaW5pdGUocikpcmV0dXJuIuKAlCI7aWYocjwxMDI0KXJldHVybmAke01hdGgucm91bmQocil9IEJgO2xldCBsPXIsdT0wO2Zvcig7bD49MTAyNCYmdTxvaC5sZW5ndGgtMTspbC89MTAyNCx1Kys7cmV0dXJuYCR7bC50b0xvY2FsZVN0cmluZygicHQtQlIiLHttaW5pbXVtRnJhY3Rpb25EaWdpdHM6bD49MTAwPzA6cyxtYXhpbXVtRnJhY3Rpb25EaWdpdHM6bD49MTAwPzA6c30pfSAke29oW3VdfWB9ZnVuY3Rpb24gZHAocil7cmV0dXJuYCR7anQocil9L3NgfWZ1bmN0aW9uIGZwKHIpe2lmKHI9PW51bGx8fCFOdW1iZXIuaXNGaW5pdGUocikpcmV0dXJuIiI7aWYocjw2MClyZXR1cm4iPCAxIG1pbiI7Y29uc3Qgcz1NYXRoLmZsb29yKHIvMzYwMCksbD1NYXRoLnJvdW5kKHIlMzYwMC82MCk7cmV0dXJuIHM9PT0wP2B+JHtsfSBtaW5gOmB+JHtzfWgke1N0cmluZyhsKS5wYWRTdGFydCgyLCIwIil9YH1mdW5jdGlvbiBTcihyKXtpZighcilyZXR1cm4iIjtjb25zdCBzPW5ldyBEYXRlKHIpO3JldHVybmAke1N0cmluZyhzLmdldEhvdXJzKCkpLnBhZFN0YXJ0KDIsIjAiKX06JHtTdHJpbmcocy5nZXRNaW51dGVzKCkpLnBhZFN0YXJ0KDIsIjAiKX1gfWZ1bmN0aW9uIGFpKHIscz1uZXcgRGF0ZSl7aWYoIXIpcmV0dXJuIiI7Y29uc3QgbD1uZXcgRGF0ZShyKSx1PShoLHApPT5oLmdldEZ1bGxZZWFyKCk9PT1wLmdldEZ1bGxZZWFyKCkmJmguZ2V0TW9udGgoKT09PXAuZ2V0TW9udGgoKSYmaC5nZXREYXRlKCk9PT1wLmdldERhdGUoKTtpZih1KGwscykpcmV0dXJuYGhvamUgw6BzICR7U3Iocil9YDtjb25zdCBkPW5ldyBEYXRlKHMpO3JldHVybiBkLnNldERhdGUocy5nZXREYXRlKCktMSksdShsLGQpP2BvbnRlbSDDoHMgJHtTcihyKX1gOmwudG9Mb2NhbGVEYXRlU3RyaW5nKCJwdC1CUiIse2RheToiMi1kaWdpdCIsbW9udGg6IjItZGlnaXQifSl9ZnVuY3Rpb24gZHgocixzKXtyZXR1cm4gcz9NYXRoLm1pbigxMDAsTWF0aC5yb3VuZChyL3MqMTAwKSk6MH1mdW5jdGlvbiBmeCh7YWNjb3VudElkOnIsY2xhc3NOYW1lOnM9IiJ9KXtjb25zdHtkYXRhOmx9PVd5KHIpO3JldHVybiBsP2MuanN4KCJzcGFuIix7Y2xhc3NOYW1lOmB0ZXh0LVsxM3B4XSB0ZXh0LW11dGVkICR7c31gLGNoaWxkcmVuOmwubW9kZT09PSJ1bmxpbWl0ZWQiP0MucXVvdGEudW5saW1pdGVkOmMuanN4cyhjLkZyYWdtZW50LHtjaGlsZHJlbjpbQy5xdW90YS5saW5lKCIiLCIiKS5zcGxpdCgiICAiKVswXSxjLmpzeCgic3BhbiIse2NsYXNzTmFtZToidGV4dC1mZyBmb250LW1lZGl1bSIsY2hpbGRyZW46anQobC5yZW1haW5pbmdCeXRlcyl9KSxgIHJlc3RhbnRlcyDCtyByZW5vdmEgw6BzICR7U3IobC5yZXNldEF0KX1gXX0pfSk6bnVsbH1jb25zdCBYYT17aWQ6InJvb3QiLG5hbWU6Qy5jb21tb24ubXlEcml2ZX07ZnVuY3Rpb24gaHgocixzKXtjb25zdFtsLHVdPWoudXNlU3RhdGUocik7cmV0dXJuIGoudXNlRWZmZWN0KCgpPT57Y29uc3QgZD1zZXRUaW1lb3V0KCgpPT51KHIpLHMpO3JldHVybigpPT5jbGVhclRpbWVvdXQoZCl9LFtyLHNdKSxsfWNvbnN0IHl1PShyLHM9MTQpPT5yLnN0YXJyZWQ/Yy5qc3goYXAse2NsYXNzTmFtZToidGV4dC1hbWJlciBzaHJpbmstMCIsd2lkdGg6cyxoZWlnaHQ6c30pOnIuc2hvcnRjdXQ/Yy5qc3godXAse2NsYXNzTmFtZToidGV4dC1tdXRlZCBzaHJpbmstMCIsd2lkdGg6cyxoZWlnaHQ6c30pOnIuc2hhcmVkP2MuanN4KGNwLHtjbGFzc05hbWU6InRleHQtbXV0ZWQgc2hyaW5rLTAiLHdpZHRoOnMsaGVpZ2h0OnN9KTpjLmpzeCh2dSx7Y2xhc3NOYW1lOiJ0ZXh0LW11dGVkIHNocmluay0wIix3aWR0aDpzLGhlaWdodDpzfSk7ZnVuY3Rpb24gaHAoe2FjY291bnRJZDpyLGFjY291bnRzOnMsb25BY2NvdW50Q2hhbmdlOmwsbW9kZTp1PSJkZXN0IixvbkNob29zZTpkLG9uQ2xvc2U6aH0pe2NvbnN0W3AsbV09ai51c2VTdGF0ZShbWGFdKSxbdixTXT1qLnVzZVN0YXRlKCIiKSxFPWh4KHYudHJpbSgpLDMwMCkseD1wW3AubGVuZ3RoLTFdLFQ9eC5pZD09PSJyb290IixPPUUubGVuZ3RoPjAsQT11PT09InNvdXJjZSIsTD1EbChPP3ZvaWQgMDpyLHguaWQpLFA9RGwoIU8mJlQ/cjp2b2lkIDAsInN0YXJyZWQiKSxVPURsKCFPJiZUJiZBP3I6dm9pZCAwLCJzaGFyZWQiKSxRPURsKE8/cjp2b2lkIDAsInJvb3QiLEUpLGI9RD0+e20oWy4uLnAsRF0pLFMoIiIpfSxWPUQ9PnttKFtYYSxEXSksUygiIil9LEg9RD0+e20oW1hhXSksUygiIiksbD09bnVsbHx8bChEKX0scmU9KEQsWSxxKT0+RD09bnVsbD92b2lkIDA6RC5tYXAoTj0+e2NvbnN0IEk9e2lkOk4uaWQsbmFtZTpOLm5hbWUsLi4uWSxzaG9ydGN1dDohIU4uc2hvcnRjdXR9O3JldHVybiBjLmpzeHMoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsY2xhc3NOYW1lOiJ3LWZ1bGwgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC0yIHB4LTIgcHktMS41IHJvdW5kZWQtbWQgaG92ZXI6Ymctd2hpdGUvWzAuMDZdIHRleHQtbGVmdCIsb25DbGljazooKT0+cShJKSxjaGlsZHJlbjpbYy5qc3hzKCJzcGFuIix7Y2xhc3NOYW1lOiJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgdHJ1bmNhdGUiLGNoaWxkcmVuOlt5dShJKSxjLmpzeCgic3BhbiIse2NsYXNzTmFtZToidHJ1bmNhdGUiLGNoaWxkcmVuOkkubmFtZX0pLEkuc2hvcnRjdXQmJmMuanN4KCJzcGFuIix7Y2xhc3NOYW1lOiJ0ZXh0LWZhaW50IHRleHQtWzExcHhdIHNocmluay0wIixjaGlsZHJlbjpDLmNvbW1vbi5zaG9ydGN1dH0pXX0pLGMuanN4KGxoLHtjbGFzc05hbWU6InRleHQtZmFpbnQgc2hyaW5rLTAiLHdpZHRoOjEyLGhlaWdodDoxMn0pXX0sTi5pZCl9KSx0ZT0oRCxZKT0+e3ZhciBxO3JldHVybiBjLmpzeHMoYy5GcmFnbWVudCx7Y2hpbGRyZW46W0QuaXNMb2FkaW5nJiZjLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOiJweC0yIHB5LTEuNSB0ZXh0LW11dGVkIixjaGlsZHJlbjpDLmNvbW1vbi5sb2FkaW5nfSksRC5lcnJvcj9jLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOiJweC0yIHB5LTEuNSB0ZXh0LXJlZCIsY2hpbGRyZW46RC5lcnJvci5tZXNzYWdlfSk6bnVsbCwoKHE9RC5kYXRhKT09bnVsbD92b2lkIDA6cS5sZW5ndGgpPT09MCYmYy5qc3goImRpdiIse2NsYXNzTmFtZToicHgtMiBweS0xLjUgdGV4dC1tdXRlZCIsY2hpbGRyZW46WX0pXX0pfSxvZT1YeSgpLFt1ZSxoZV09ai51c2VTdGF0ZSghMSksW2JlLCRlXT1qLnVzZVN0YXRlKCIiKSxfZT0oKT0+e2hlKCExKSwkZSgiIiksb2UucmVzZXQoKX0sWj0oKT0+e2NvbnN0IEQ9YmUudHJpbSgpOyFEfHxvZS5pc1BlbmRpbmd8fG9lLm11dGF0ZSh7YWNjb3VudElkOnIscGFyZW50SWQ6eC5pZCxuYW1lOkR9LHtvblN1Y2Nlc3M6KHtmb2xkZXI6WX0pPT57X2UoKSxiKHtpZDpZLmlkLG5hbWU6WS5uYW1lfSl9fSl9LHNlPSEhKFAuZGF0YSYmUC5kYXRhLmxlbmd0aD4wKSxTZT0hTyYmIShBJiZUKSxFZT0hQSYmIU87cmV0dXJuIGMuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJjYXJkIHAtMyB0ZXh0LVsxM3B4XSB3LWZ1bGwiLGNoaWxkcmVuOltjLmpzeHMoImRpdiIse2NsYXNzTmFtZToiZmxleCBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIGdhcC0yIG1iLTIiLGNoaWxkcmVuOltjLmpzeHMoImxhYmVsIix7Y2xhc3NOYW1lOiJyZWxhdGl2ZSBmbGV4LTEgbWluLXctWzEycmVtXSIsY2hpbGRyZW46W2MuanN4KGl4LHtjbGFzc05hbWU6ImFic29sdXRlIGxlZnQtMi41IHRvcC0xLzIgLXRyYW5zbGF0ZS15LTEvMiB0ZXh0LWZhaW50Iix3aWR0aDoxNCxoZWlnaHQ6MTR9KSxjLmpzeCgiaW5wdXQiLHt0eXBlOiJzZWFyY2giLHZhbHVlOnYsb25DaGFuZ2U6RD0+UyhELnRhcmdldC52YWx1ZSkscGxhY2Vob2xkZXI6Qy5jb21tb24uc2VhcmNoRm9sZGVycywiYXJpYS1sYWJlbCI6Qy5jb21tb24uc2VhcmNoRm9sZGVycyxhdXRvQ29tcGxldGU6Im9mZiIsc3BlbGxDaGVjazohMSxjbGFzc05hbWU6InctZnVsbCBiZy1zdXJmYWNlIGJvcmRlciBib3JkZXItbGluZSByb3VuZGVkLWxnIHBsLTggcHItMyBweS0yIHRleHQtWzEzcHhdIHRleHQtZmcgcGxhY2Vob2xkZXI6dGV4dC1mYWludCBmb2N1cy12aXNpYmxlOmJvcmRlci12aW9sZXQvNjAifSldfSkscyYmcy5sZW5ndGg+MSYmYy5qc3goInNlbGVjdCIse3ZhbHVlOnIsb25DaGFuZ2U6RD0+SChELnRhcmdldC52YWx1ZSksImFyaWEtbGFiZWwiOkMuY29tbW9uLmFjY291bnQsY2xhc3NOYW1lOiJiZy1zdXJmYWNlIGJvcmRlciBib3JkZXItbGluZSByb3VuZGVkLWxnIHB4LTIuNSBweS0yIHRleHQtWzEzcHhdIHRleHQtZmcgZm9jdXMtdmlzaWJsZTpib3JkZXItdmlvbGV0LzYwIG1heC13LVsxNnJlbV0iLGNoaWxkcmVuOnMubWFwKEQ9PmMuanN4KCJvcHRpb24iLHt2YWx1ZTpELmlkLGNoaWxkcmVuOkQuZW1haWx9LEQuaWQpKX0pXX0pLE8/Yy5qc3goImRpdiIse2NsYXNzTmFtZToibGFiZWwgcHgtMiBwYi0xIiwiYXJpYS1saXZlIjoicG9saXRlIixjaGlsZHJlbjpDLmNvbW1vbi5yZXN1bHRzRm9yKEUpfSk6Yy5qc3goIm5hdiIseyJhcmlhLWxhYmVsIjoiUGFzdGEgYXR1YWwiLGNsYXNzTmFtZToiZmxleCBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIGdhcC0xIHRleHQtbXV0ZWQgbWItMiIsY2hpbGRyZW46cC5tYXAoKEQsWSk9PmMuanN4cygic3BhbiIse2NsYXNzTmFtZToiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdhcC0xIixjaGlsZHJlbjpbWT4wJiZjLmpzeChsaCx7Y2xhc3NOYW1lOiJ0ZXh0LWZhaW50Iix3aWR0aDoxMixoZWlnaHQ6MTJ9KSxjLmpzeHMoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsY2xhc3NOYW1lOmBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEgcm91bmRlZCBweC0xICR7WT09PXAubGVuZ3RoLTE/InRleHQtZmcgZm9udC1tZWRpdW0iOiJob3Zlcjp0ZXh0LWZnIn1gLG9uQ2xpY2s6KCk9Pm0ocC5zbGljZSgwLFkrMSkpLGNoaWxkcmVuOlsoRC5zdGFycmVkfHxELnNoYXJlZHx8RC5zaG9ydGN1dCkmJnl1KEQsMTIpLEQubmFtZV19KV19LEQuaWQpKX0pLGMuanN4KCJkaXYiLHtjbGFzc05hbWU6Im1heC1oLTY0IG92ZXJmbG93LWF1dG8gLW14LTEiLGNoaWxkcmVuOk8/Yy5qc3hzKGMuRnJhZ21lbnQse2NoaWxkcmVuOltyZShRLmRhdGEse30sViksdGUoUSxDLmNvbW1vbi5ub1Jlc3VsdHMpXX0pOmMuanN4cyhjLkZyYWdtZW50LHtjaGlsZHJlbjpbVCYmQSYmYy5qc3hzKGMuRnJhZ21lbnQse2NoaWxkcmVuOltjLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOiJsYWJlbCBweC0yIHB0LTEgcGItMSIsY2hpbGRyZW46Qy5jb21tb24uc2hhcmVkfSkscmUoVS5kYXRhLHtzaGFyZWQ6ITB9LGIpLHRlKFUsIuKAlCIpXX0pLFQmJnNlJiZjLmpzeHMoYy5GcmFnbWVudCx7Y2hpbGRyZW46W2MuanN4KCJkaXYiLHtjbGFzc05hbWU6YGxhYmVsIHB4LTIgcGItMSAke0E/InB0LTMiOiJwdC0xIn1gLGNoaWxkcmVuOkMuY29tbW9uLnN0YXJyZWR9KSxyZShQLmRhdGEse3N0YXJyZWQ6ITB9LGIpXX0pLFQmJihBfHxzZSkmJmMuanN4KCJkaXYiLHtjbGFzc05hbWU6ImxhYmVsIHB4LTIgcHQtMyBwYi0xIixjaGlsZHJlbjpDLmNvbW1vbi5teURyaXZlfSkscmUoTC5kYXRhLHt9LGIpLHRlKEwsIuKAlCIpXX0pfSksYy5qc3goImRpdiIse2NsYXNzTmFtZToiZmxleCBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kIGdhcC0yIG10LTIgcHQtMiBib3JkZXItdCBib3JkZXItbGluZSIsY2hpbGRyZW46RWUmJnVlP2MuanN4cygiZm9ybSIse2NsYXNzTmFtZToiZmxleC0xIGZsZXggaXRlbXMtY2VudGVyIGdhcC0yIG1pbi13LTAiLG9uU3VibWl0OkQ9PntELnByZXZlbnREZWZhdWx0KCksWigpfSxjaGlsZHJlbjpbYy5qc3goImlucHV0Iix7YXV0b0ZvY3VzOiEwLHZhbHVlOmJlLG9uQ2hhbmdlOkQ9PiRlKEQudGFyZ2V0LnZhbHVlKSxvbktleURvd246RD0+RC5rZXk9PT0iRXNjYXBlIiYmX2UoKSxwbGFjZWhvbGRlcjpDLmNvbW1vbi5uZXdGb2xkZXJOYW1lLCJhcmlhLWxhYmVsIjpDLmNvbW1vbi5uZXdGb2xkZXJOYW1lLGF1dG9Db21wbGV0ZToib2ZmIixjbGFzc05hbWU6ImZsZXgtMSBtaW4tdy0wIGJnLXN1cmZhY2UgYm9yZGVyIGJvcmRlci1saW5lIHJvdW5kZWQtbGcgcHgtMyBweS0xLjUgdGV4dC1bMTNweF0gdGV4dC1mZyBwbGFjZWhvbGRlcjp0ZXh0LWZhaW50IGZvY3VzLXZpc2libGU6Ym9yZGVyLXZpb2xldC82MCJ9KSxjLmpzeChnZSx7c2l6ZToic20iLHZhcmlhbnQ6InByaW1hcnkiLHR5cGU6InN1Ym1pdCIsZGlzYWJsZWQ6IWJlLnRyaW0oKXx8b2UuaXNQZW5kaW5nLGNoaWxkcmVuOkMuY29tbW9uLmNyZWF0ZX0pLGMuanN4KGdlLHtzaXplOiJzbSIsb25DbGljazpfZSxjaGlsZHJlbjpDLmNvbW1vbi5jYW5jZWx9KV19KTpjLmpzeHMoYy5GcmFnbWVudCx7Y2hpbGRyZW46W0VlJiZjLmpzeHMoZ2Use3ZhcmlhbnQ6ImxpbmsiLHNpemU6InNtIixjbGFzc05hbWU6Im1yLWF1dG8iLG9uQ2xpY2s6KCk9PmhlKCEwKSxjaGlsZHJlbjpbYy5qc3gobHgse3dpZHRoOjE0LGhlaWdodDoxNH0pLEMuY29tbW9uLm5ld0ZvbGRlcl19KSxjLmpzeChnZSx7c2l6ZToic20iLG9uQ2xpY2s6aCxjaGlsZHJlbjpDLmNvbW1vbi5jbG9zZX0pLGMuanN4cyhnZSx7c2l6ZToic20iLHZhcmlhbnQ6InByaW1hcnkiLGRpc2FibGVkOiFTZSxvbkNsaWNrOigpPT5kKHgpLGNoaWxkcmVuOltDLmNvbW1vbi5jaG9vc2UsIiDigJwiLHgubmFtZSwi4oCdIl19KV19KX0pLG9lLmVycm9yP2MuanN4KCJkaXYiLHtjbGFzc05hbWU6InRleHQtcmVkIHRleHQtWzEycHhdIG10LTEuNSIscm9sZToiYWxlcnQiLGNoaWxkcmVuOm9lLmVycm9yLm1lc3NhZ2V9KTpudWxsXX0pfWZ1bmN0aW9uIHBwKHthY2NvdW50SWQ6cix2YWx1ZTpzLG9uQ2hhbmdlOmx9KXtjb25zdFt1LGRdPWoudXNlU3RhdGUoITEpO3JldHVybiF1fHwhcj9jLmpzeHMoInNwYW4iLHtjbGFzc05hbWU6ImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiB0ZXh0LVsxM3B4XSIsY2hpbGRyZW46W2MuanN4cygic3BhbiIse2NsYXNzTmFtZToiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgcHgtMi41IHB5LTEuNSByb3VuZGVkLWxnIGJnLXN1cmZhY2UgYm9yZGVyIGJvcmRlci1saW5lIixjaGlsZHJlbjpbeXUocykscy5uYW1lXX0pLGMuanN4KGdlLHt2YXJpYW50OiJsaW5rIixzaXplOiJzbSIsb25DbGljazooKT0+ZCghMCksZGlzYWJsZWQ6IXIsY2hpbGRyZW46Qy5jb21tb24uY2hhbmdlfSldfSk6Yy5qc3goaHAse2FjY291bnRJZDpyLG9uQ2hvb3NlOmg9PntsKGgpLGQoITEpfSxvbkNsb3NlOigpPT5kKCExKX0pfWZ1bmN0aW9uIHh1KHtsYWJlbDpyLGhpbnQ6cyxjbGFzc05hbWU6bD0iIiwuLi51fSl7cmV0dXJuIGMuanN4cygibGFiZWwiLHtjbGFzc05hbWU6YGJsb2NrICR7bH1gLGNoaWxkcmVuOltyJiZjLmpzeCgic3BhbiIse2NsYXNzTmFtZToibGFiZWwgYmxvY2sgbWItMS41IixjaGlsZHJlbjpyfSksYy5qc3goImlucHV0Iix7Y2xhc3NOYW1lOiJ3LWZ1bGwgYmctc3VyZmFjZSBib3JkZXIgYm9yZGVyLWxpbmUgcm91bmRlZC1sZyBweC0zIHB5LTIuNSB0ZXh0LVsxM3B4XSB0ZXh0LWZnIHBsYWNlaG9sZGVyOnRleHQtZmFpbnQgZm9jdXMtdmlzaWJsZTpib3JkZXItdmlvbGV0LzYwIGRpc2FibGVkOm9wYWNpdHktNTAiLC4uLnV9KSxzJiZjLmpzeCgic3BhbiIse2NsYXNzTmFtZToiYmxvY2sgbXQtMS41IHRleHQtWzEycHhdIHRleHQtbXV0ZWQiLGNoaWxkcmVuOnN9KV19KX1mdW5jdGlvbiBweCh7bGFiZWw6cixjbGFzc05hbWU6cz0iIixjaGlsZHJlbjpsLC4uLnV9KXtyZXR1cm4gYy5qc3hzKCJsYWJlbCIse2NsYXNzTmFtZTpgYmxvY2sgJHtzfWAsY2hpbGRyZW46W3ImJmMuanN4KCJzcGFuIix7Y2xhc3NOYW1lOiJsYWJlbCBibG9jayBtYi0xLjUiLGNoaWxkcmVuOnJ9KSxjLmpzeCgic2VsZWN0Iix7Y2xhc3NOYW1lOiJ3LWZ1bGwgYmctc3VyZmFjZSBib3JkZXIgYm9yZGVyLWxpbmUgcm91bmRlZC1sZyBweC0zIHB5LTIgdGV4dC1bMTNweF0gdGV4dC1mZyBmb2N1cy12aXNpYmxlOmJvcmRlci12aW9sZXQvNjAiLC4uLnUsY2hpbGRyZW46bH0pXX0pfWZ1bmN0aW9uIFdsKHtwYXRoOnIsc2l6ZTpzPSJzbSJ9KXtjb25zdCBsPXI9PT0icmlmdCI7cmV0dXJuIGMuanN4KCJzcGFuIix7dGl0bGU6bD9DLnBhdGgucmlmdFRpdGxlOkMucGF0aC5tYWNoaW5lVGl0bGUsY2xhc3NOYW1lOmBpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgcm91bmRlZCBmb250LXNlbWlib2xkIHRyYWNraW5nLVswLjAyZW1dIHdoaXRlc3BhY2Utbm93cmFwICR7cz09PSJtZCI/InRleHQtWzEycHhdIHB4LTIuNSBweS0xIjoidGV4dC1bMTAuNXB4XSBweC0yIHB5LTAuNSJ9ICR7bD8iYmctdmlvbGV0L1swLjE4XSB0ZXh0LXZpb2xldC1zdHJvbmciOiJiZy1hbWJlci9bMC4xNl0gdGV4dC1hbWJlciJ9YCxjaGlsZHJlbjpsP0MucGF0aC5yaWZ0OkMucGF0aC5tYWNoaW5lfSl9ZnVuY3Rpb24gbXgoe3RleHQ6cn0pe2NvbnN0W3MsbF09ai51c2VTdGF0ZSghMSksdT1hc3luYygpPT57dHJ5e2F3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHIpLGwoITApLHNldFRpbWVvdXQoKCk9PmwoITEpLDJlMyl9Y2F0Y2h7d2luZG93LnByb21wdCgiQ29waWUgbyB0ZXh0byBhYmFpeG86IixyKX19O3JldHVybiBjLmpzeHMoZ2Use3NpemU6InNtIixvbkNsaWNrOnUsImFyaWEtbGl2ZSI6InBvbGl0ZSIsY2hpbGRyZW46W2MuanN4KHN4LHt3aWR0aDoxNCxoZWlnaHQ6MTR9KSxzP0MuYW5hbHlzaXMuY29waWVkOkMuYW5hbHlzaXMuY29weVJlcXVlc3RdfSl9ZnVuY3Rpb24gZ3goe2luc3BlY3Rpb246cixhY2NvdW50czpzLG9uUmVpbnNwZWN0Omwsb25DYW5jZWw6dSxvblN0YXJ0ZWQ6ZCxidXN5Omg9bnVsbH0pe2NvbnN0W3AsbV09ai51c2VTdGF0ZShyLm5hbWUpLFt2LFNdPWoudXNlU3RhdGUoInJlbmFtZSIpLFtFLHhdPWoudXNlU3RhdGUoITEpLFQ9WnkoKSxPPXtpZDpyLmRlc3RQYXJlbnRJZCxuYW1lOnIuZGVzdFBhcmVudE5hbWV9LEE9ci5wYXRoPT09InJpZnQiLEw9KCk9PlQubXV0YXRlKHtpbnNwZWN0aW9uSWQ6ci5pbnNwZWN0aW9uSWQsbmFtZTpwLnRyaW0oKXx8ci5uYW1lLGRlc3RBY2NvdW50SWQ6ci5kZXN0QWNjb3VudElkLGRlc3RQYXJlbnRJZDpyLmRlc3RQYXJlbnRJZCxkZXN0UGFyZW50TmFtZTpyLmRlc3RQYXJlbnROYW1lLGNvbmZsaWN0OnIuZGVzdENvbmZsaWN0P3Y6dm9pZCAwfSx7b25TdWNjZXNzOmR9KTtyZXR1cm4gYy5qc3hzKCJzZWN0aW9uIix7Y2xhc3NOYW1lOiJjYXJkIHAtNCBzbTpwLTUgZ3JpZCBnYXAtNCIsImFyaWEtbGFiZWwiOiJBbsOhbGlzZSBkYSBwYXN0YSIsY2hpbGRyZW46W2MuanN4cygiaGVhZGVyIix7Y2xhc3NOYW1lOiJmbGV4IGZsZXgtd3JhcCBpdGVtcy1iYXNlbGluZSBqdXN0aWZ5LWJldHdlZW4gZ2FwLXgtNCBnYXAteS0xIixjaGlsZHJlbjpbYy5qc3goImgyIix7Y2xhc3NOYW1lOiJ0ZXh0LVsxNXB4XSBmb250LXNlbWlib2xkIixjaGlsZHJlbjpyLm5hbWV9KSxjLmpzeHMoInNwYW4iLHtjbGFzc05hbWU6Im51bSB0ZXh0LW11dGVkIixjaGlsZHJlbjpbQy5hbmFseXNpcy5maWxlcyhyLnRvdGFscy5maWxlcyksIiDCtyAiLGp0KHIudG90YWxzLmJ5dGVzKSxyLm93bmVyJiZjLmpzeHMoYy5GcmFnbWVudCx7Y2hpbGRyZW46WyIgwrcgIixDLmFuYWx5c2lzLmZyb20oci5vd25lcildfSldfSldfSksYy5qc3hzKCJkbCIse2NsYXNzTmFtZToiZ3JpZCBncmlkLWNvbHMtWzg4cHhfMWZyXSBnYXAteC00IGdhcC15LTMgdGV4dC1bMTNweF0gaXRlbXMtYmFzZWxpbmUiLGNoaWxkcmVuOltjLmpzeCgiZHQiLHtjbGFzc05hbWU6ImxhYmVsIHB0LTAuNSIsY2hpbGRyZW46Qy5hbmFseXNpcy5wYXRoTGFiZWx9KSxjLmpzeHMoImRkIix7Y2xhc3NOYW1lOiJncmlkIGdhcC0yIixjaGlsZHJlbjpbYy5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAtMiIsY2hpbGRyZW46W2MuanN4KFdsLHtwYXRoOnIucGF0aCxzaXplOiJtZCJ9KSwhQSYmYy5qc3hzKCJzcGFuIix7Y2xhc3NOYW1lOiJ0ZXh0LW11dGVkIixjaGlsZHJlbjpbIsK3ICIsQy5hbmFseXNpcy5rZWVwT3Blbl19KV19KSxBP2MuanN4KCJwIix7Y2xhc3NOYW1lOiJ0ZXh0LW11dGVkIGxlYWRpbmctcmVsYXhlZCIsY2hpbGRyZW46Qy5hbmFseXNpcy5yaWZ0VGV4dChyLmRlc3RFbWFpbCl9KTpjLmpzeHMoSXQse3RvbmU6Indhcm4iLGNoaWxkcmVuOltjLmpzeHMoInAiLHtjaGlsZHJlbjpbQy5hbmFseXNpcy5tYWNoaW5lVGV4dChyLmRlc3RFbWFpbCksIiAiLGMuanN4KCJzcGFuIix7Y2xhc3NOYW1lOiJ0ZXh0LW11dGVkIixjaGlsZHJlbjpDLmFuYWx5c2lzLm1hY2hpbmVIaW50fSldfSksci5zaGFyZVJlcXVlc3RUZXh0JiZjLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOiJtdC0yIixjaGlsZHJlbjpjLmpzeChteCx7dGV4dDpyLnNoYXJlUmVxdWVzdFRleHR9KX0pXX0pXX0pLChyLmJsb2NrZWQuY291bnQ+MHx8ci5uYXRpdmUuY291bnQ+MCkmJmMuanN4cyhjLkZyYWdtZW50LHtjaGlsZHJlbjpbYy5qc3goImR0Iix7Y2xhc3NOYW1lOiJsYWJlbCBwdC0wLjUiLGNoaWxkcmVuOkMuYW5hbHlzaXMuYmxvY2tlZExhYmVsfSksYy5qc3hzKCJkZCIse2NsYXNzTmFtZToiZ3JpZCBnYXAtMS41IixjaGlsZHJlbjpbci5ibG9ja2VkLmNvdW50PjAmJmMuanN4cygiZGl2Iix7Y2hpbGRyZW46W2MuanN4KCJzcGFuIix7Y2xhc3NOYW1lOiJ0ZXh0LWFtYmVyIixjaGlsZHJlbjpDLmFuYWx5c2lzLmJsb2NrZWQoci5ibG9ja2VkLmNvdW50KX0pLCIgIixjLmpzeHMoInNwYW4iLHtjbGFzc05hbWU6InRleHQtbXV0ZWQiLGNoaWxkcmVuOlsi4oCUICIsQy5hbmFseXNpcy5ibG9ja2VkVGV4dCwiIMK3ICIsQy5hbmFseXNpcy5jb3B5YWJsZShqdChyLmNvcHlhYmxlQnl0ZXMpKV19KSwiICIsYy5qc3goZ2Use3ZhcmlhbnQ6ImxpbmsiLHNpemU6InNtIixvbkNsaWNrOigpPT54KFA9PiFQKSxjaGlsZHJlbjpFP0MuYW5hbHlzaXMuaGlkZTpDLmFuYWx5c2lzLnNlZVdoaWNofSksRSYmYy5qc3hzKCJ1bCIse2NsYXNzTmFtZToibXQtMS41IGdyaWQgZ2FwLTAuNSBudW0gdGV4dC1tdXRlZCBtYXgtaC00MCBvdmVyZmxvdy1hdXRvIixjaGlsZHJlbjpbci5ibG9ja2VkLnNhbXBsZS5tYXAoUD0+Yy5qc3goImxpIix7Y2xhc3NOYW1lOiJ0cnVuY2F0ZSIsY2hpbGRyZW46UC5yZWxQYXRofSxQLnJlbFBhdGgpKSxyLmJsb2NrZWQuY291bnQ+ci5ibG9ja2VkLnNhbXBsZS5sZW5ndGgmJmMuanN4cygibGkiLHtjaGlsZHJlbjpbIuKApiBlIG1haXMgIixyLmJsb2NrZWQuY291bnQtci5ibG9ja2VkLnNhbXBsZS5sZW5ndGhdfSldfSldfSksci5uYXRpdmUuY291bnQ+MCYmYy5qc3goImRpdiIse2NsYXNzTmFtZToidGV4dC1tdXRlZCIsY2hpbGRyZW46Qy5hbmFseXNpcy5uYXRpdmUoci5uYXRpdmUuY291bnQpfSldfSldfSksYy5qc3goImR0Iix7Y2xhc3NOYW1lOiJsYWJlbCBwdC0wLjUiLGNoaWxkcmVuOkMuYW5hbHlzaXMuZGVzdExhYmVsfSksYy5qc3hzKCJkZCIse2NsYXNzTmFtZToiZ3JpZCBnYXAtMiIsY2hpbGRyZW46W2MuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLTIiLGNoaWxkcmVuOltzLmxlbmd0aD4xP2MuanN4KHB4LHsiYXJpYS1sYWJlbCI6IkNvbnRhIGRlIGRlc3Rpbm8iLHZhbHVlOnIuZGVzdEFjY291bnRJZCxvbkNoYW5nZTpQPT5sKHtkZXN0QWNjb3VudElkOlAudGFyZ2V0LnZhbHVlLGRlc3RQYXJlbnRJZDoicm9vdCIsZGVzdFBhcmVudE5hbWU6Qy5jb21tb24ubXlEcml2ZX0pLGNsYXNzTmFtZToidy1hdXRvIixjaGlsZHJlbjpzLm1hcChQPT5jLmpzeCgib3B0aW9uIix7dmFsdWU6UC5pZCxjaGlsZHJlbjpQLmVtYWlsfSxQLmlkKSl9KTpjLmpzeCgic3BhbiIse2NsYXNzTmFtZToicHgtMi41IHB5LTEuNSByb3VuZGVkLWxnIGJnLXN1cmZhY2UgYm9yZGVyIGJvcmRlci1saW5lIixjaGlsZHJlbjpyLmRlc3RFbWFpbH0pLGMuanN4KHBwLHthY2NvdW50SWQ6ci5kZXN0QWNjb3VudElkLHZhbHVlOk8sb25DaGFuZ2U6UD0+bCh7ZGVzdEFjY291bnRJZDpyLmRlc3RBY2NvdW50SWQsZGVzdFBhcmVudElkOlAuaWQsZGVzdFBhcmVudE5hbWU6UC5uYW1lfSl9KSxoJiZjLmpzeHMoInNwYW4iLHtjbGFzc05hbWU6ImJhc2lzLWZ1bGwgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHRleHQtbXV0ZWQgdGV4dC1bMTJweF0iLCJhcmlhLWxpdmUiOiJwb2xpdGUiLGNoaWxkcmVuOltjLmpzeChsaSx7c2l6ZToxNixhbmltYXRlZDohMCxjbGFzc05hbWU6InRleHQtZmcifSksaC50ZXh0LGguZmlsZXNTZWVuIT09bnVsbCYmYy5qc3hzKCJzcGFuIix7Y2xhc3NOYW1lOiJudW0iLGNoaWxkcmVuOlsiwrcgIixDLmhvbWUuZmlsZXNTZWVuKGguZmlsZXNTZWVuKV19KV19KV19KSxjLmpzeCh4dSx7bGFiZWw6Qy5hbmFseXNpcy5uYW1lTGFiZWwsdmFsdWU6cCxvbkNoYW5nZTpQPT5tKFAudGFyZ2V0LnZhbHVlKSxjbGFzc05hbWU6Im1heC13LW1kIn0pLHIuZGVzdENvbmZsaWN0JiZjLmpzeHMoSXQse3RvbmU6Indhcm4iLGNoaWxkcmVuOltjLmpzeCgicCIse2NsYXNzTmFtZToibWItMiIsY2hpbGRyZW46Qy5hbmFseXNpcy5jb25mbGljdFRleHQoci5uYW1lKX0pLGMuanN4cygibGFiZWwiLHtjbGFzc05hbWU6ImZsZXggaXRlbXMtc3RhcnQgZ2FwLTIgY3Vyc29yLXBvaW50ZXIiLGNoaWxkcmVuOltjLmpzeCgiaW5wdXQiLHt0eXBlOiJyYWRpbyIsbmFtZToiY29uZmxpY3QiLGNoZWNrZWQ6dj09PSJyZW5hbWUiLG9uQ2hhbmdlOigpPT5TKCJyZW5hbWUiKSxjbGFzc05hbWU6Im10LTEgYWNjZW50LXZpb2xldCJ9KSxjLmpzeCgic3BhbiIse2NoaWxkcmVuOkMuYW5hbHlzaXMuY29uZmxpY3RSZW5hbWUocC50cmltKCl8fHIubmFtZSl9KV19KSxjLmpzeHMoImxhYmVsIix7Y2xhc3NOYW1lOiJmbGV4IGl0ZW1zLXN0YXJ0IGdhcC0yIGN1cnNvci1wb2ludGVyIG10LTEuNSIsY2hpbGRyZW46W2MuanN4KCJpbnB1dCIse3R5cGU6InJhZGlvIixuYW1lOiJjb25mbGljdCIsY2hlY2tlZDp2PT09Im1lcmdlIixvbkNoYW5nZTooKT0+UygibWVyZ2UiKSxjbGFzc05hbWU6Im10LTEgYWNjZW50LXZpb2xldCJ9KSxjLmpzeCgic3BhbiIse2NoaWxkcmVuOkMuYW5hbHlzaXMuY29uZmxpY3RNZXJnZX0pXX0pXX0pXX0pLGMuanN4KCJkdCIse2NsYXNzTmFtZToibGFiZWwgcHQtMC41IixjaGlsZHJlbjpDLmFuYWx5c2lzLnF1b3RhTGFiZWx9KSxjLmpzeCgiZGQiLHtjbGFzc05hbWU6InRleHQtbXV0ZWQiLGNoaWxkcmVuOnIucXVvdGEubW9kZT09PSJ1bmxpbWl0ZWQiP0MucXVvdGEudW5saW1pdGVkU2hvcnQ6ci5xdW90YS5maXRzP2MuanN4cyhjLkZyYWdtZW50LHtjaGlsZHJlbjpbQy5xdW90YS5maXRzLCIgwrcgIixjLmpzeCgic3BhbiIse2NsYXNzTmFtZToidGV4dC1mZyBmb250LW1lZGl1bSIsY2hpbGRyZW46anQoci5xdW90YS5yZW1haW5pbmdCeXRlcyl9KSwiIHJlc3RhbnRlcywgcmVub3ZhIMOgcyAiLFNyKHIucXVvdGEucmVzZXRBdCldfSk6Yy5qc3goInNwYW4iLHtjbGFzc05hbWU6InRleHQtYW1iZXIiLGNoaWxkcmVuOkMucXVvdGEuZG9lc05vdEZpdChTcihyLnF1b3RhLnJlc2V0QXQpKX0pfSldfSksVC5lcnJvciYmYy5qc3goSXQse3RvbmU6ImVycm9yIixjaGlsZHJlbjpULmVycm9yLm1lc3NhZ2V9KSxjLmpzeHMoImZvb3RlciIse2NsYXNzTmFtZToiZmxleCBqdXN0aWZ5LWVuZCBnYXAtMiBwdC0xIixjaGlsZHJlbjpbYy5qc3goZ2Use29uQ2xpY2s6dSxjaGlsZHJlbjpDLmFuYWx5c2lzLmNhbmNlbH0pLGMuanN4KGdlLHt2YXJpYW50OiJwcmltYXJ5IixvbkNsaWNrOkwsZGlzYWJsZWQ6VC5pc1BlbmRpbmd8fCEhaCxjaGlsZHJlbjpULmlzUGVuZGluZz9DLmFuYWx5c2lzLnN0YXJ0aW5nOkMuYW5hbHlzaXMuc3RhcnR9KV19KV19KX1mdW5jdGlvbiBtcCh7am9iOnIsY2xhc3NOYW1lOnM9IiJ9KXtjb25zdCBsPXIuc3RhdHVzPT09ImRvbmUiPzEwMDpkeChyLmRvbmUuYnl0ZXMsci50b3RhbHMuYnl0ZXMpLHU9ci5zdGF0dXM9PT0iZG9uZSI/ImJnLWdyZWVuIjp2aShyKT8iYmctYW1iZXIiOnIuc3RhdHVzPT09ImZhaWxlZCJ8fHIuc3RhdHVzPT09ImNhbmNlbGVkIj8iYmctd2hpdGUvMjAiOiJiZy1ncmFkaWVudC10by1yIGZyb20tY3lhbiB0by12aW9sZXQiO3JldHVybiBjLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOmBoLTEuNSByb3VuZGVkLWZ1bGwgYmctd2hpdGUvWzAuMDhdIG92ZXJmbG93LWhpZGRlbiAke3N9YCxyb2xlOiJwcm9ncmVzc2JhciIsImFyaWEtdmFsdWVub3ciOmwsImFyaWEtdmFsdWVtaW4iOjAsImFyaWEtdmFsdWVtYXgiOjEwMCxjaGlsZHJlbjpjLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOmBoLWZ1bGwgcm91bmRlZC1mdWxsIHRyYW5zaXRpb24tW3dpZHRoXSBkdXJhdGlvbi01MDAgJHt1fWAsc3R5bGU6e3dpZHRoOmAke2x9JWB9fSl9KX1mdW5jdGlvbiB2eCh7am9iOnJ9KXtjb25zdCBzPXJwKCksbD11PT5kPT57ZC5zdG9wUHJvcGFnYXRpb24oKSx1KCl9O3JldHVybiBjLmpzeHMoImRldGFpbHMiLHtjbGFzc05hbWU6InJlbGF0aXZlIixvbkNsaWNrOnU9PnUuc3RvcFByb3BhZ2F0aW9uKCksY2hpbGRyZW46W2MuanN4KCJzdW1tYXJ5Iix7Y2xhc3NOYW1lOiJsaXN0LW5vbmUgY3Vyc29yLXBvaW50ZXIgcC0xLjUgcm91bmRlZC1tZCB0ZXh0LW11dGVkIGhvdmVyOnRleHQtZmcgaG92ZXI6Ymctd2hpdGUvWzAuMDhdIiwiYXJpYS1sYWJlbCI6IkHDp8O1ZXMiLGNoaWxkcmVuOmMuanN4KG54LHt9KX0pLGMuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJhYnNvbHV0ZSByaWdodC0wIG10LTEgei0xMCBjYXJkIHAtMSBtaW4tdy1bMTgwcHhdIHRleHQtWzEzcHhdIixjaGlsZHJlbjpbci5zdGF0dXM9PT0icnVubmluZyJ8fHIuc3RhdHVzPT09InF1ZXVlZCI/Yy5qc3godGkse29uQ2xpY2s6bCgoKT0+cy5wYXVzZS5tdXRhdGUoci5pZCkpLGNoaWxkcmVuOkMuam9iLnBhdXNlfSk6dmkocik/Yy5qc3godGkse29uQ2xpY2s6bCgoKT0+cy5yZXN1bWUubXV0YXRlKHIuaWQpKSxjaGlsZHJlbjpDLmpvYi5yZXN1bWV9KTpudWxsLCEkbChyKSYmYy5qc3godGkse29uQ2xpY2s6bCgoKT0+d2luZG93LmNvbmZpcm0oQy5qb2IuY29uZmlybUNhbmNlbCkmJnMuY2FuY2VsLm11dGF0ZShyLmlkKSksY2hpbGRyZW46Qy5qb2IuY2FuY2VsfSksci5kZXN0LmZvbGRlcklkJiZjLmpzeCh0aSx7b25DbGljazpsKCgpPT53aW5kb3cub3BlbihgaHR0cHM6Ly9kcml2ZS5nb29nbGUuY29tL2RyaXZlL2ZvbGRlcnMvJHtyLmRlc3QuZm9sZGVySWR9YCwiX2JsYW5rIiwibm9vcGVuZXIiKSksY2hpbGRyZW46Qy5qb2Iub3BlbkluRHJpdmV9KSwhZ2kocikmJmMuanN4KHRpLHt0b25lOiJkYW5nZXIiLG9uQ2xpY2s6bCgoKT0+d2luZG93LmNvbmZpcm0oQy5qb2IuY29uZmlybVJlbW92ZSkmJnMucmVtb3ZlLm11dGF0ZShyLmlkKSksY2hpbGRyZW46Qy5qb2IucmVtb3ZlfSldfSldfSl9ZnVuY3Rpb24gdGkoe2NoaWxkcmVuOnIsb25DbGljazpzLHRvbmU6bH0pe3JldHVybiBjLmpzeCgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixvbkNsaWNrOnMsY2xhc3NOYW1lOmB3LWZ1bGwgdGV4dC1sZWZ0IHB4LTMgcHktMS41IHJvdW5kZWQtbWQgaG92ZXI6Ymctd2hpdGUvWzAuMDhdICR7bD09PSJkYW5nZXIiPyJ0ZXh0LXJlZCI6IiJ9YCxjaGlsZHJlbjpyfSl9ZnVuY3Rpb24geXgoe2pvYjpyLGNvbXBhY3Q6cz0hMX0pe3ZhciBoO2NvbnN0IGw9S24oKSx1PSgpPT5sKGAvY29waWEvJHtyLmlkfWApLGQ9dmkocik7cmV0dXJuIGMuanN4cygiYXJ0aWNsZSIse2NsYXNzTmFtZTpgY2FyZCBjdXJzb3ItcG9pbnRlciBob3Zlcjpib3JkZXItd2hpdGUvWzAuMTRdIHRyYW5zaXRpb24tY29sb3JzICR7cz8icHgtNCBweS0zIjoicC00In1gLG9uQ2xpY2s6dSxvbktleURvd246cD0+cC5rZXk9PT0iRW50ZXIiJiZ1KCksdGFiSW5kZXg6MCxyb2xlOiJsaW5rIiwiYXJpYS1sYWJlbCI6ci5uYW1lLGNoaWxkcmVuOltjLmpzeHMoImRpdiIse2NsYXNzTmFtZToiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC0zIixjaGlsZHJlbjpbYy5qc3hzKCJkaXYiLHtjbGFzc05hbWU6Im1pbi13LTAgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIuNSIsY2hpbGRyZW46W3MmJmMuanN4KCJzcGFuIix7Y2xhc3NOYW1lOmB0ZXh0LVsxMXB4XSBweC0xLjUgcHktMC41IHJvdW5kZWQgJHtyLnN0YXR1cz09PSJkb25lIj8iYmctZ3JlZW4vWzAuMTZdIHRleHQtZ3JlZW4iOiJiZy13aGl0ZS9bMC4wOF0gdGV4dC1tdXRlZCJ9YCxjaGlsZHJlbjpDLmpvYi5zdGF0dXNbci5zdGF0dXNdfSksYy5qc3goImgzIix7Y2xhc3NOYW1lOiJmb250LXNlbWlib2xkIHRydW5jYXRlIixjaGlsZHJlbjpyLm5hbWV9KV19KSxjLmpzeHMoImRpdiIse2NsYXNzTmFtZToiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgc2hyaW5rLTAiLGNoaWxkcmVuOltjLmpzeChXbCx7cGF0aDpyLnBhdGh9KSxjLmpzeCh2eCx7am9iOnJ9KV19KV19KSwhcyYmYy5qc3hzKGMuRnJhZ21lbnQse2NoaWxkcmVuOltjLmpzeChtcCx7am9iOnIsY2xhc3NOYW1lOiJtdC0zIn0pLGMuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJtdC0yIGZsZXggZmxleC13cmFwIGp1c3RpZnktYmV0d2VlbiBnYXAteC00IGdhcC15LTEgbnVtIHRleHQtbXV0ZWQiLGNoaWxkcmVuOltjLmpzeHMoInNwYW4iLHtjaGlsZHJlbjpbQy5qb2IuZmlsZXMoci5kb25lLmZpbGVzLHIudG90YWxzLmZpbGVzKSxyLnNraXBwZWRGaWxlcz4wJiZjLmpzeHMoYy5GcmFnbWVudCx7Y2hpbGRyZW46WyIgwrcgIixDLmpvYi5ibG9ja2VkU2hvcnQoci5za2lwcGVkRmlsZXMpXX0pXX0pLGMuanN4cygic3BhbiIse2NoaWxkcmVuOltDLmpvYi5ieXRlcyhqdChyLmRvbmUuYnl0ZXMpLGp0KHIudG90YWxzLmJ5dGVzKSksci5zdGF0cyYmci5zdGF0cy5ieXRlc1BlclNlYz4wJiZjLmpzeHMoYy5GcmFnbWVudCx7Y2hpbGRyZW46WyIgwrcgIixkcChyLnN0YXRzLmJ5dGVzUGVyU2VjKV19KSwoKGg9ci5zdGF0cyk9PW51bGw/dm9pZCAwOmguZXRhU2VjKSE9bnVsbCYmci5zdGF0cy5ldGFTZWM+MCYmYy5qc3hzKGMuRnJhZ21lbnQse2NoaWxkcmVuOlsiIMK3ICIsZnAoci5zdGF0cy5ldGFTZWMpXX0pXX0pXX0pLGQmJmMuanN4cygicCIse2NsYXNzTmFtZToibXQtMiB0ZXh0LVsxMi41cHhdIHRleHQtYW1iZXIiLGNoaWxkcmVuOltyLnJlc3VtZVJlYXNvbixyLnBhdXNlZFVudGlsJiZyLnN0YXR1cyE9PSJwYXVzZWQiJiZjLmpzeHMoYy5GcmFnbWVudCx7Y2hpbGRyZW46WyIgwrcgIixDLmpvYi5yZXN1bWVzQXQoU3Ioci5wYXVzZWRVbnRpbCkpXX0pXX0pXX0pLHMmJmMuanN4cygicCIse2NsYXNzTmFtZToibXQtMSB0ZXh0LVsxMnB4XSB0ZXh0LW11dGVkIHRydW5jYXRlIixjaGlsZHJlbjpbYWkoci5maW5pc2hlZEF0Pz9yLmNyZWF0ZWRBdCksIiDCtyAiLEMuam9iLmZpbGVzKHIuZG9uZS5maWxlcyxyLnRvdGFscy5maWxlcyksIiDCtyAiLGp0KHIuZG9uZS5ieXRlcyksci5tZXNzYWdlJiZjLmpzeHMoYy5GcmFnbWVudCx7Y2hpbGRyZW46WyIgwrcgIixyLm1lc3NhZ2VdfSldfSldfSl9Y29uc3QgYWg9NTtmdW5jdGlvbiBaYSh7dGl0bGU6cixqb2JzOnMsY29tcGFjdDpsPSExfSl7Y29uc3RbdSxkXT1qLnVzZVN0YXRlKCExKTtpZighcy5sZW5ndGgpcmV0dXJuIG51bGw7Y29uc3QgaD1sJiYhdT9zLnNsaWNlKDAsYWgpOnM7cmV0dXJuIGMuanN4cygic2VjdGlvbiIse2NsYXNzTmFtZToiZ3JpZCBnYXAtMiIsY2hpbGRyZW46W2MuanN4cygiaDIiLHtjbGFzc05hbWU6ImxhYmVsIixjaGlsZHJlbjpbciwiIMK3ICIscy5sZW5ndGhdfSksaC5tYXAocD0+Yy5qc3goeXgse2pvYjpwLGNvbXBhY3Q6bH0scC5pZCkpLGwmJnMubGVuZ3RoPmFoJiZjLmpzeChnZSx7dmFyaWFudDoibGluayIsc2l6ZToic20iLGNsYXNzTmFtZToianVzdGlmeS1zZWxmLXN0YXJ0IixvbkNsaWNrOigpPT5kKHA9PiFwKSxjaGlsZHJlbjp1P0MuaG9tZS5zZWVMZXNzOkMuaG9tZS5zZWVBbGwocy5sZW5ndGgpfSldfSl9ZnVuY3Rpb24geHgoe2pvYnM6cn0pe3JldHVybiByLmxlbmd0aD9jLmpzeHMoImRpdiIse2NsYXNzTmFtZToiZ3JpZCBnYXAtNiIsY2hpbGRyZW46W2MuanN4KFphLHt0aXRsZTpDLmhvbWUuaW5Qcm9ncmVzcyxqb2JzOnIuZmlsdGVyKGdpKX0pLGMuanN4KFphLHt0aXRsZTpDLmhvbWUucGF1c2VkLGpvYnM6ci5maWx0ZXIodmkpfSksYy5qc3goWmEse3RpdGxlOkMuaG9tZS5maW5pc2hlZCxqb2JzOnIuZmlsdGVyKCRsKSxjb21wYWN0OiEwfSldfSk6Yy5qc3goInAiLHtjbGFzc05hbWU6InRleHQtY2VudGVyIHRleHQtbXV0ZWQgdGV4dC1bMTNweF0gcHktMTAiLGNoaWxkcmVuOkMuaG9tZS5lbXB0eX0pfWNvbnN0IHd4PSgpPT50eXBlb2YgY3J5cHRvPCJ1IiYmInJhbmRvbVVVSUQiaW4gY3J5cHRvP2NyeXB0by5yYW5kb21VVUlEKCk6TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMik7ZnVuY3Rpb24gU3goKXtjb25zdCByPWVwKCkse2RhdGE6cz1bXX09cWwoKSx7ZGF0YTpsPVtdfT1LeSgpLFt1LGRdPWoudXNlU3RhdGUoIiIpLFtoLHBdPWoudXNlU3RhdGUobnVsbCksW20sdl09ai51c2VTdGF0ZSghMSksW1MsRV09ai51c2VTdGF0ZShudWxsKSxbeCxUXT1qLnVzZVN0YXRlKG51bGwpLFtPLEFdPWoudXNlU3RhdGUoITEpLFtMLFBdPWoudXNlU3RhdGUobnVsbCksW1UsUV09ai51c2VTdGF0ZShudWxsKSxbYixWXT1qLnVzZVN0YXRlKG51bGwpLHJlPVl5KFU/PyhMPT1udWxsP3ZvaWQgMDpMLnRva2VuKT8/bnVsbCkuZGF0YT8/bnVsbDtpZihyLmRhdGEmJighci5kYXRhLmNvbmZpZ3VyZWQuY2xpZW50fHxyLmRhdGEuY29uZmlndXJlZC5hY2NvdW50cz09PTApKXJldHVybiBjLmpzeChVaCx7dG86Ii9jb25maWd1cmFyIixyZXBsYWNlOiEwfSk7Y29uc3QgdGU9cy5maW5kKFo9PlouaWQ9PT1TKT8/cy5maW5kKFo9PlouaXNEZWZhdWx0RGVzdCk/P3NbMF0sb2U9KGg9PW51bGw/dm9pZCAwOmguaWQpPz91LnRyaW0oKSx1ZT1hc3luYyhaLHNlKT0+e3ZhciBZO2lmKCFafHxPfHxMKXJldHVybjtjb25zdCBTZT1zZSYmeD94Om51bGwsRWU9ISEoU2UmJnNlJiZzZS5kZXN0QWNjb3VudElkPT09U2UuZGVzdEFjY291bnRJZCksRD1FZT9udWxsOnd4KCk7aWYoVihudWxsKSxTZSl7Y29uc3QgcT0oKFk9cy5maW5kKE49Pk4uaWQ9PT0oc2U9PW51bGw/dm9pZCAwOnNlLmRlc3RBY2NvdW50SWQpKSk9PW51bGw/dm9pZCAwOlkuZW1haWwpPz8iIjtQKHt0ZXh0OkVlP0MuYW5hbHlzaXMuY2hlY2tpbmdEZXN0OkMuYW5hbHlzaXMucmVyZWFkaW5nKHEpLHRva2VuOkR9KX1lbHNlIEEoITApLFEoRCk7dHJ5e1QoYXdhaXQgTmUuaW5zcGVjdCh7bGluazpaLC4uLnNlLGluc3BlY3Rpb25JZDpTZT09bnVsbD92b2lkIDA6U2UuaW5zcGVjdGlvbklkLHByb2dyZXNzVG9rZW46RD8/dm9pZCAwfSkpfWNhdGNoKHEpe1NlfHxUKG51bGwpLFYocSBpbnN0YW5jZW9mIGlpP3EubWVzc2FnZTpDLmNvbW1vbi5lcnJvcil9ZmluYWxseXtBKCExKSxQKG51bGwpLFEobnVsbCl9fSxoZT1aPT57Wi5wcmV2ZW50RGVmYXVsdCgpLHVlKG9lKX0sYmU9Wj0+e3YoITEpLGQoIiIpLHAoey4uLlosYWNjb3VudEVtYWlsOih0ZT09bnVsbD92b2lkIDA6dGUuZW1haWwpPz8iIn0pLHVlKFouaWQpfSwkZT0oKT0+e2QoIiIpLHAobnVsbCksdighMSksVChudWxsKSxWKG51bGwpfSxfZT1oIT1udWxsJiZoLnN0YXJyZWQ/YXA6aCE9bnVsbCYmaC5zaG9ydGN1dD91cDpoIT1udWxsJiZoLnNoYXJlZD9jcDp2dTtyZXR1cm4gYy5qc3hzKHNpLHtjaGlsZHJlbjpbYy5qc3hzKCJzZWN0aW9uIix7Y2xhc3NOYW1lOiJncmlkIGdhcC0zIG1iLTgiLGNoaWxkcmVuOltjLmpzeCgiaDEiLHtjbGFzc05hbWU6InRleHQteGwgZm9udC1zZW1pYm9sZCB0cmFja2luZy1bLTAuMDJlbV0iLGNoaWxkcmVuOkMuaG9tZS50aXRsZX0pLGMuanN4cygiZm9ybSIse29uU3VibWl0OmhlLGNsYXNzTmFtZToiZmxleCBmbGV4LXdyYXAgZ2FwLTIiLGNoaWxkcmVuOltoP2MuanN4cygic3BhbiIse2NsYXNzTmFtZToiZmxleC0xIG1pbi13LTAgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHB4LTMuNSBweS0yLjUgcm91bmRlZC1sZyBiZy1zdXJmYWNlIGJvcmRlciBib3JkZXItbGluZSB0ZXh0LVsxNHB4XSIsY2hpbGRyZW46W2MuanN4KF9lLHtjbGFzc05hbWU6aC5zdGFycmVkPyJ0ZXh0LWFtYmVyIHNocmluay0wIjoidGV4dC1tdXRlZCBzaHJpbmstMCIsd2lkdGg6MTQsaGVpZ2h0OjE0fSksYy5qc3goInNwYW4iLHtjbGFzc05hbWU6InRydW5jYXRlIixjaGlsZHJlbjpoLm5hbWV9KSxjLmpzeHMoInNwYW4iLHtjbGFzc05hbWU6InRleHQtbXV0ZWQgdGV4dC1bMTJweF0gdHJ1bmNhdGUiLGNoaWxkcmVuOlsiwrcgIixoLmFjY291bnRFbWFpbF19KV19KTpjLmpzeCgiaW5wdXQiLHt0eXBlOiJ1cmwiLGlucHV0TW9kZToidXJsIixhdXRvQ29tcGxldGU6Im9mZiIsc3BlbGxDaGVjazohMSxwbGFjZWhvbGRlcjpDLmhvbWUucGxhY2Vob2xkZXIsdmFsdWU6dSxvbkNoYW5nZTpaPT5kKFoudGFyZ2V0LnZhbHVlKSwiYXJpYS1sYWJlbCI6Qy5ob21lLnBsYWNlaG9sZGVyLGNsYXNzTmFtZToiZmxleC0xIG1pbi13LTAgYmctc3VyZmFjZSBib3JkZXIgYm9yZGVyLWxpbmUgcm91bmRlZC1sZyBweC0zLjUgcHktMi41IHRleHQtWzE0cHhdIGZvbnQtbW9ubyB0ZXh0LWZnIHBsYWNlaG9sZGVyOmZvbnQtc2FucyBwbGFjZWhvbGRlcjp0ZXh0LWZhaW50IGZvY3VzLXZpc2libGU6Ym9yZGVyLXZpb2xldC82MCJ9KSwhaCYmYy5qc3hzKGdlLHtvbkNsaWNrOigpPT52KFo9PiFaKSwiYXJpYS1leHBhbmRlZCI6bSxkaXNhYmxlZDohdGUsY2hpbGRyZW46W2MuanN4KHZ1LHt3aWR0aDoxNCxoZWlnaHQ6MTR9KSxDLmhvbWUuYnJvd3NlXX0pLHh8fHV8fGg/Yy5qc3goZ2Use29uQ2xpY2s6JGUsY2hpbGRyZW46Qy5ob21lLmNsZWFyfSk6bnVsbCxjLmpzeChnZSx7dmFyaWFudDoicHJpbWFyeSIsdHlwZToic3VibWl0IixkaXNhYmxlZDpPfHwhb2UsY2hpbGRyZW46Qy5ob21lLmFuYWx5emV9KV19KSxtJiZ0ZSYmIWgmJmMuanN4KGhwLHthY2NvdW50SWQ6dGUuaWQsYWNjb3VudHM6cyxvbkFjY291bnRDaGFuZ2U6RSxtb2RlOiJzb3VyY2UiLG9uQ2hvb3NlOmJlLG9uQ2xvc2U6KCk9PnYoITEpfSkscy5sZW5ndGg+MCYmYy5qc3goZngse30pLE8mJmMuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMyB0ZXh0LW11dGVkIHRleHQtWzEzcHhdIGNhcmQgcHgtNCBweS0zIiwiYXJpYS1saXZlIjoicG9saXRlIixjaGlsZHJlbjpbYy5qc3gobGkse3NpemU6MjIsYW5pbWF0ZWQ6ITAsY2xhc3NOYW1lOiJ0ZXh0LWZnIn0pLEMuaG9tZS5hbmFseXppbmcscmUhPT1udWxsJiZjLmpzeHMoInNwYW4iLHtjbGFzc05hbWU6Im51bSIsY2hpbGRyZW46WyLCtyAiLEMuaG9tZS5maWxlc1NlZW4ocmUpXX0pXX0pLGImJiFPJiZjLmpzeChJdCx7dG9uZToiZXJyb3IiLGNoaWxkcmVuOmJ9KSx4JiYhTyYmYy5qc3goZ3gse2luc3BlY3Rpb246eCxhY2NvdW50czpzLG9uUmVpbnNwZWN0Olo9PnZvaWQgdWUob2UsWiksb25DYW5jZWw6JGUsb25TdGFydGVkOiRlLGJ1c3k6TD97dGV4dDpMLnRleHQsZmlsZXNTZWVuOkwudG9rZW4/cmU6bnVsbH06bnVsbH0seC5pbnNwZWN0aW9uSWQpXX0pLGMuanN4KHh4LHtqb2JzOmx9KV19KX1jb25zdCBreD1be2tleToicHJvamVjdCIsdXJsOiJodHRwczovL2NvbnNvbGUuY2xvdWQuZ29vZ2xlLmNvbS9wcm9qZWN0Y3JlYXRlIn0se2tleToiYXBpIix1cmw6Imh0dHBzOi8vY29uc29sZS5jbG91ZC5nb29nbGUuY29tL2FwaXMvbGlicmFyeS9kcml2ZS5nb29nbGVhcGlzLmNvbSJ9LHtrZXk6ImNvbnNlbnQiLHVybDoiaHR0cHM6Ly9jb25zb2xlLmNsb3VkLmdvb2dsZS5jb20vYXV0aC9hdWRpZW5jZSJ9LHtrZXk6ImNyZWRlbnRpYWwiLHVybDoiaHR0cHM6Ly9jb25zb2xlLmNsb3VkLmdvb2dsZS5jb20vYXBpcy9jcmVkZW50aWFscy9vYXV0aGNsaWVudCJ9XSxncD0icmlmdGRyaXZlLnNldHVwLnN0ZXBzIjtmdW5jdGlvbiBDeCgpe3RyeXtjb25zdCByPWxvY2FsU3RvcmFnZS5nZXRJdGVtKGdwKTtyZXR1cm4gbmV3IFNldChyP0pTT04ucGFyc2Uocik6W10pfWNhdGNoe3JldHVybiBuZXcgU2V0fX1mdW5jdGlvbiBqeChyKXt0cnl7bG9jYWxTdG9yYWdlLnNldEl0ZW0oZ3AsSlNPTi5zdHJpbmdpZnkoWy4uLnJdKSl9Y2F0Y2h7fX1mdW5jdGlvbiBFeCgpe3ZhciBiZSwkZSxfZTtjb25zdCByPUtuKCkscz1RbCgpLFtsXT1leSgpLHU9ZXAoKSxkPXRwKCksW2gscF09ai51c2VTdGF0ZSgoKT0+Q3goKSksW20sdl09ai51c2VTdGF0ZSgiIiksW1MsRV09ai51c2VTdGF0ZSgiIiksW3gsVF09ai51c2VTdGF0ZSh7a2luZDoic3RlcHMifSksW08sQV09ai51c2VTdGF0ZSghMSksW0wsUF09ai51c2VTdGF0ZShudWxsKSxVPWoudXNlUmVmKG51bGwpLFE9ai51c2VSZWYoITEpLGI9KChiZT1kLmRhdGEpPT1udWxsP3ZvaWQgMDpiZS5jb25maWd1cmVkKT8/ITEsVj0oKCRlPXUuZGF0YSk9PW51bGw/dm9pZCAwOiRlLmNvbmZpZ3VyZWQuYWNjb3VudHMpPz8wLEg9bC5nZXQoInJlY29uZWN0YXIiKT8/dm9pZCAwLHJlPWwuZ2V0KCJvdXRyYSIpPT09IjEiLHRlPVo9Pntjb25zdCBzZT1uZXcgU2V0KGgpO3NlLmhhcyhaKT9zZS5kZWxldGUoWik6c2UuYWRkKFopLHAoc2UpLGp4KHNlKX0sb2U9YXN5bmMgWj0+e0EoITApLFAobnVsbCk7dHJ5e2NvbnN0e2F1dGhVcmw6c2V9PWF3YWl0IE5lLmxvZ2luU3RhcnQoWik7VCh7a2luZDoid2FpdGluZyIsYXV0aFVybDpzZX0pfWNhdGNoKHNlKXtQKHNlIGluc3RhbmNlb2YgaWk/c2UubWVzc2FnZTpDLmNvbW1vbi5lcnJvcil9ZmluYWxseXtBKCExKX19O2oudXNlRWZmZWN0KCgpPT57US5jdXJyZW50fHwhYnx8KEh8fHJlKSYmKFEuY3VycmVudD0hMCxvZShIKSl9LFtiLEgscmVdKSxqLnVzZUVmZmVjdCgoKT0+e2lmKHgua2luZCE9PSJ3YWl0aW5nIilyZXR1cm47Y29uc3QgWj1zZXRJbnRlcnZhbChhc3luYygpPT57dHJ5e2NvbnN0IHNlPWF3YWl0IE5lLmxvZ2luU3RhdHVzKCk7c2Uuc3RhdGU9PT0iZG9uZSI/KGNsZWFySW50ZXJ2YWwoWiksVCh7a2luZDoiY29ubmVjdGVkIixlbWFpbDpzZS5lbWFpbH0pLHMuaW52YWxpZGF0ZVF1ZXJpZXMoKSk6c2Uuc3RhdGU9PT0iZXJyb3IiJiYoY2xlYXJJbnRlcnZhbChaKSxUKHtraW5kOiJzdGVwcyJ9KSxQKHNlLm1lc3NhZ2UpKX1jYXRjaHt9fSwxZTMpO3JldHVybigpPT5jbGVhckludGVydmFsKFopfSxbeC5raW5kLHNdKTtjb25zdCB1ZT1hc3luYyBaPT57aWYoWi5wcmV2ZW50RGVmYXVsdCgpLFAobnVsbCksbS50cmltKCl8fFMudHJpbSgpfHwhYil7aWYoIS9cLmFwcHNcLmdvb2dsZXVzZXJjb250ZW50XC5jb20kLy50ZXN0KG0udHJpbSgpKSl7UCgiTyBJRCBkbyBjbGllbnRlIHByZWNpc2EgdGVybWluYXIgZW0gLmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tLiIpO3JldHVybn1BKCEwKTt0cnl7YXdhaXQgTmUuc2V0QXV0aENsaWVudChtLnRyaW0oKSxTLnRyaW0oKSksYXdhaXQgcy5pbnZhbGlkYXRlUXVlcmllcyh7cXVlcnlLZXk6WyJhdXRoQ2xpZW50Il19KX1jYXRjaChzZSl7UChzZSBpbnN0YW5jZW9mIGlpP3NlLm1lc3NhZ2U6Qy5jb21tb24uZXJyb3IpLEEoITEpO3JldHVybn19YXdhaXQgb2UoKX0saGU9e3Byb2plY3Q6e3RpdGxlOkMuc2V0dXAuc3RlcHMucHJvamVjdCxoaW50OkMuc2V0dXAuc3RlcHMucHJvamVjdEhpbnR9LGFwaTp7dGl0bGU6Qy5zZXR1cC5zdGVwcy5hcGksaGludDpDLnNldHVwLnN0ZXBzLmFwaUhpbnR9LGNvbnNlbnQ6e3RpdGxlOmMuanN4cyhjLkZyYWdtZW50LHtjaGlsZHJlbjpbQy5zZXR1cC5zdGVwcy5jb25zZW50LGMuanN4KCJzcGFuIix7Y2xhc3NOYW1lOiJ0ZXh0LWFtYmVyIixjaGlsZHJlbjpDLnNldHVwLnN0ZXBzLmNvbnNlbnRTdHJvbmd9KV19KSxoaW50OmMuanN4cyhJdCx7dG9uZToid2FybiIsY2xhc3NOYW1lOiJtdC0xIixjaGlsZHJlbjpbQy5zZXR1cC5zdGVwcy5jb25zZW50V2FybjEsYy5qc3goInN0cm9uZyIse2NsYXNzTmFtZToidGV4dC1mZyIsY2hpbGRyZW46Qy5zZXR1cC5zdGVwcy5jb25zZW50V2FyblN0cm9uZ30pLEMuc2V0dXAuc3RlcHMuY29uc2VudFdhcm4yXX0pfSxjcmVkZW50aWFsOnt0aXRsZTpDLnNldHVwLnN0ZXBzLmNyZWRlbnRpYWwsaGludDpDLnNldHVwLnN0ZXBzLmNyZWRlbnRpYWxIaW50fX07cmV0dXJuIGMuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJtaW4taC1zY3JlZW4gZmxleCBmbGV4LWNvbCIsY2hpbGRyZW46W2MuanN4cygiaGVhZGVyIix7Y2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcHgtNCBzbTpweC02IHB5LTMgYm9yZGVyLWIgYm9yZGVyLWxpbmUiLGNoaWxkcmVuOltjLmpzeChscCx7dG86Vj4wPyIvIjpudWxsfSksYy5qc3goInNwYW4iLHtjbGFzc05hbWU6InRleHQtWzEycHhdIHRleHQtbXV0ZWQiLGNoaWxkcmVuOkMuc2V0dXAuc3RlcCh4LmtpbmQ9PT0iY29ubmVjdGVkIj8yOjEsMil9KV19KSxjLmpzeCgibWFpbiIse2NsYXNzTmFtZToibXgtYXV0byB3LWZ1bGwgbWF4LXcteGwgcHgtNCBzbTpweC02IHB5LTggZ3JpZCBnYXAtNiBmbGV4LTEiLGNoaWxkcmVuOngua2luZD09PSJjb25uZWN0ZWQiP2MuanN4cygic2VjdGlvbiIse2NsYXNzTmFtZToiZ3JpZCBnYXAtNSB0ZXh0LWNlbnRlciBweS02IiwiYXJpYS1saXZlIjoicG9saXRlIixjaGlsZHJlbjpbYy5qc3gobGkse3NpemU6NTYsY2xhc3NOYW1lOiJ0ZXh0LWZnIGp1c3RpZnktc2VsZi1jZW50ZXIifSksYy5qc3hzKCJkaXYiLHtjaGlsZHJlbjpbYy5qc3goImgxIix7Y2xhc3NOYW1lOiJ0ZXh0LXhsIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctWy0wLjAyZW1dIixjaGlsZHJlbjpDLnNldHVwLmNvbm5lY3RlZFRpdGxlKHguZW1haWwpfSksYy5qc3goInAiLHtjbGFzc05hbWU6InRleHQtbXV0ZWQgbXQtMSB0ZXh0LVsxNHB4XSIsY2hpbGRyZW46Qy5zZXR1cC5jb25uZWN0ZWRUZXh0fSldfSksYy5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggZmxleC13cmFwIGp1c3RpZnktY2VudGVyIGdhcC0yIixjaGlsZHJlbjpbYy5qc3goZ2Use29uQ2xpY2s6KCk9PnZvaWQgb2UoKSxkaXNhYmxlZDpPLGNoaWxkcmVuOkMuc2V0dXAuYW5vdGhlcn0pLGMuanN4KGdlLHt2YXJpYW50OiJwcmltYXJ5IixvbkNsaWNrOigpPT5yKCIvIiksY2hpbGRyZW46Qy5zZXR1cC5maW5pc2h9KV19KSxjLmpzeCgicCIse2NsYXNzTmFtZToidGV4dC1bMTJweF0gdGV4dC1tdXRlZCIsY2hpbGRyZW46Qy5zZXR1cC5hbm90aGVySGludH0pXX0pOngua2luZD09PSJ3YWl0aW5nIj9jLmpzeHMoInNlY3Rpb24iLHtjbGFzc05hbWU6ImdyaWQgZ2FwLTQgdGV4dC1jZW50ZXIgcHktNiIsImFyaWEtbGl2ZSI6InBvbGl0ZSIsY2hpbGRyZW46W2MuanN4KGxpLHtzaXplOjU2LGFuaW1hdGVkOiEwLGNsYXNzTmFtZToidGV4dC1mZyBqdXN0aWZ5LXNlbGYtY2VudGVyIn0pLGMuanN4KCJoMSIse2NsYXNzTmFtZToidGV4dC1sZyBmb250LXNlbWlib2xkIixjaGlsZHJlbjpDLnNldHVwLndhaXRpbmd9KSxjLmpzeCgicCIse2NsYXNzTmFtZToidGV4dC1tdXRlZCB0ZXh0LVsxM3B4XSBsZWFkaW5nLXJlbGF4ZWQgbWF4LXctbWQgbXgtYXV0byIsY2hpbGRyZW46Qy5zZXR1cC53YWl0aW5nSGludH0pLGMuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGp1c3RpZnktY2VudGVyIGdhcC0yIixjaGlsZHJlbjpbYy5qc3hzKGdlLHtvbkNsaWNrOigpPT53aW5kb3cub3Blbih4LmF1dGhVcmwsIl9ibGFuayIsIm5vb3BlbmVyIiksY2hpbGRyZW46W2MuanN4KG9pLHt3aWR0aDoxNCxoZWlnaHQ6MTR9KSwiIEFicmlyIG8gR29vZ2xlIGRlIG5vdm8iXX0pLGMuanN4KGdlLHtvbkNsaWNrOigpPT5UKHtraW5kOiJzdGVwcyJ9KSxjaGlsZHJlbjpDLmFuYWx5c2lzLmNhbmNlbH0pXX0pXX0pOmMuanN4cyhjLkZyYWdtZW50LHtjaGlsZHJlbjpbYy5qc3hzKCJzZWN0aW9uIix7Y2xhc3NOYW1lOiJncmlkIGdhcC0yIixjaGlsZHJlbjpbYy5qc3goImgxIix7Y2xhc3NOYW1lOiJ0ZXh0LXhsIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctWy0wLjAyZW1dIixjaGlsZHJlbjpDLnNldHVwLnRpdGxlfSksYy5qc3hzKCJwIix7Y2xhc3NOYW1lOiJ0ZXh0LW11dGVkIHRleHQtWzE0cHhdIGxlYWRpbmctcmVsYXhlZCIsY2hpbGRyZW46W0Muc2V0dXAuaW50cm8xLGMuanN4KCJzdHJvbmciLHtjbGFzc05hbWU6InRleHQtZmcgZm9udC1tZWRpdW0iLGNoaWxkcmVuOkMuc2V0dXAuaW50cm9TdHJvbmd9KSxDLnNldHVwLmludHJvMl19KV19KSxiJiZjLmpzeHMoSXQse3RvbmU6InN1Y2Nlc3MiLGNoaWxkcmVuOltDLnNldHRpbmdzLm9hdXRoVGV4dCgoKF9lPWQuZGF0YSk9PW51bGw/dm9pZCAwOl9lLmNsaWVudElkTWFza2VkKT8/IiIpLCIgIixjLmpzeChnZSx7dmFyaWFudDoibGluayIsc2l6ZToic20iLG9uQ2xpY2s6KCk9PnZvaWQgb2UoKSxkaXNhYmxlZDpPLGNoaWxkcmVuOiJFbnRyYXIgY29tIEdvb2dsZSDihpIifSldfSksYy5qc3hzKCJvbCIse2NsYXNzTmFtZToiZ3JpZCBnYXAtMSIsY2hpbGRyZW46W2t4Lm1hcCgoWixzZSk9Pntjb25zdCBTZT1oLmhhcyhaLmtleSk7cmV0dXJuIGMuanN4cygibGkiLHtjbGFzc05hbWU6ImdyaWQgZ3JpZC1jb2xzLVsyNHB4XzFmcl0gZ2FwLTMgcHktMi41IixjaGlsZHJlbjpbYy5qc3goImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsb25DbGljazooKT0+dGUoWi5rZXkpLCJhcmlhLXByZXNzZWQiOlNlLCJhcmlhLWxhYmVsIjpgJHtTZT8iRGVzbWFyY2FyIjoiTWFyY2FyIn0gcGFzc28gJHtzZSsxfWAsY2xhc3NOYW1lOmB3LTYgaC02IHJvdW5kZWQtZnVsbCBncmlkIHBsYWNlLWl0ZW1zLWNlbnRlciB0ZXh0LVsxMXB4XSBmb250LXNlbWlib2xkICR7U2U/ImJnLWdyZWVuL1swLjE4XSB0ZXh0LWdyZWVuIjoiYmctd2hpdGUvWzAuMDhdIHRleHQtbXV0ZWQifWAsY2hpbGRyZW46U2U/Yy5qc3gocngse3dpZHRoOjEyLGhlaWdodDoxMn0pOnNlKzF9KSxjLmpzeHMoImRpdiIse2NsYXNzTmFtZToiZ3JpZCBnYXAtMSB0ZXh0LVsxMy41cHhdIixjaGlsZHJlbjpbYy5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAteC0zIGdhcC15LTEiLGNoaWxkcmVuOltjLmpzeCgic3BhbiIse2NsYXNzTmFtZTpgZm9udC1zZW1pYm9sZCAke1NlPyJ0ZXh0LW11dGVkIGxpbmUtdGhyb3VnaCBkZWNvcmF0aW9uLXdoaXRlLzMwIjoiIn1gLGNoaWxkcmVuOmhlW1oua2V5XS50aXRsZX0pLGMuanN4cygiYSIse2hyZWY6Wi51cmwsdGFyZ2V0OiJfYmxhbmsiLHJlbDoibm9vcGVuZXIgbm9yZWZlcnJlciIsY2xhc3NOYW1lOiJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEgdGV4dC12aW9sZXQtc3Ryb25nIGhvdmVyOnVuZGVybGluZSB0ZXh0LVsxMi41cHhdIixjaGlsZHJlbjpbQy5zZXR1cC5vcGVuLCIgIixjLmpzeChvaSx7d2lkdGg6MTIsaGVpZ2h0OjEyfSldfSldfSksYy5qc3goImRpdiIse2NsYXNzTmFtZToidGV4dC1tdXRlZCB0ZXh0LVsxMi41cHhdIixjaGlsZHJlbjpoZVtaLmtleV0uaGludH0pLFoua2V5PT09ImNvbnNlbnQiJiYhU2UmJmMuanN4KGdlLHtzaXplOiJzbSIsY2xhc3NOYW1lOiJqdXN0aWZ5LXNlbGYtc3RhcnQgbXQtMSIsb25DbGljazooKT0+dGUoImNvbnNlbnQiKSxjaGlsZHJlbjpDLnNldHVwLm1hcmtEb25lfSldfSldfSxaLmtleSl9KSxjLmpzeHMoImxpIix7Y2xhc3NOYW1lOiJncmlkIGdyaWQtY29scy1bMjRweF8xZnJdIGdhcC0zIHB5LTIuNSIscmVmOlUsY2hpbGRyZW46W2MuanN4KCJzcGFuIix7Y2xhc3NOYW1lOiJ3LTYgaC02IHJvdW5kZWQtZnVsbCBncmlkIHBsYWNlLWl0ZW1zLWNlbnRlciB0ZXh0LVsxMXB4XSBmb250LXNlbWlib2xkIGJnLXZpb2xldCB0ZXh0LWluayIsY2hpbGRyZW46IjUifSksYy5qc3hzKCJmb3JtIix7b25TdWJtaXQ6dWUsY2xhc3NOYW1lOiJncmlkIGdhcC0zIixjaGlsZHJlbjpbYy5qc3goInNwYW4iLHtjbGFzc05hbWU6ImZvbnQtc2VtaWJvbGQgdGV4dC1bMTMuNXB4XSIsY2hpbGRyZW46Qy5zZXR1cC5zdGVwcy5wYXN0ZX0pLGMuanN4KHh1LHtsYWJlbDpDLnNldHVwLmNsaWVudElkLHBsYWNlaG9sZGVyOkMuc2V0dXAuY2xpZW50SWRQbGFjZWhvbGRlcix2YWx1ZTptLG9uQ2hhbmdlOlo9PnYoWi50YXJnZXQudmFsdWUpLGF1dG9Db21wbGV0ZToib2ZmIixzcGVsbENoZWNrOiExLGNsYXNzTmFtZToiZm9udC1tb25vIn0pLGMuanN4KHh1LHtsYWJlbDpDLnNldHVwLmNsaWVudFNlY3JldCxwbGFjZWhvbGRlcjpDLnNldHVwLmNsaWVudFNlY3JldFBsYWNlaG9sZGVyLHZhbHVlOlMsb25DaGFuZ2U6Wj0+RShaLnRhcmdldC52YWx1ZSksdHlwZToicGFzc3dvcmQiLGF1dG9Db21wbGV0ZToib2ZmIn0pLEwmJmMuanN4KEl0LHt0b25lOiJlcnJvciIsY2hpbGRyZW46TH0pLGMuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC0zIHB0LTEiLGNoaWxkcmVuOltjLmpzeCgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixjbGFzc05hbWU6InRleHQtWzEycHhdIHRleHQtbXV0ZWQgaG92ZXI6dGV4dC1mZyIsb25DbGljazooKT0+e3ZhciBaO3JldHVybihaPVUuY3VycmVudCk9PW51bGw/dm9pZCAwOlouc2Nyb2xsSW50b1ZpZXcoe2JlaGF2aW9yOiJzbW9vdGgiLGJsb2NrOiJjZW50ZXIifSl9LGNoaWxkcmVuOkMuc2V0dXAuc2tpcH0pLGMuanN4KGdlLHt2YXJpYW50OiJwcmltYXJ5Iix0eXBlOiJzdWJtaXQiLGRpc2FibGVkOk98fCFiJiYoIW0udHJpbSgpfHwhUy50cmltKCkpLGNoaWxkcmVuOk8/Qy5zZXR1cC5zdWJtaXR0aW5nOkMuc2V0dXAuc3VibWl0fSldfSldfSldfSldfSldfSl9KV19KX1jb25zdCBOeD1bInBlbmRpbmciLCJkb25lIiwic2tpcHBlZF9ibG9ja2VkIiwic2tpcHBlZF9uYXRpdmUiLCJkZWZlcnJlZCIsIm1pc3NpbmciLCJmYWlsZWQiXSxldT0yMDA7ZnVuY3Rpb24gUngoKXt2YXIgTDtjb25zdHtpZDpyPSIifT11digpLHM9S24oKSx7ZGF0YTpsLGVycm9yOnV9PUd5KHIpLGQ9cnAoKSxbaCxwXT1qLnVzZVN0YXRlKCJwZW5kaW5nIiksW20sdl09ai51c2VTdGF0ZShldSkse2RhdGE6Uz1bXSxpc0xvYWRpbmc6RX09SnkocixoLG0pO2lmKHUpcmV0dXJuIGMuanN4KHNpLHtjaGlsZHJlbjpjLmpzeChJdCx7dG9uZToiZXJyb3IiLGNoaWxkcmVuOkMuam9iLm5vdEZvdW5kfSl9KTtpZighbClyZXR1cm4gYy5qc3goc2kse2NoaWxkcmVuOm51bGx9KTtjb25zdHtqb2I6eCxjb3VudHM6VH09bCxPPXZpKHgpLEE9T2JqZWN0LnZhbHVlcyhUKS5yZWR1Y2UoKFAsVSk9PlArVSwwKTtyZXR1cm4gYy5qc3hzKHNpLHttYXhXaWR0aDoibWF4LXctM3hsIixjaGlsZHJlbjpbYy5qc3hzKHhyLHt0bzoiLyIsY2xhc3NOYW1lOiJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEgdGV4dC1bMTNweF0gdGV4dC1tdXRlZCBob3Zlcjp0ZXh0LWZnIG1iLTQiLGNoaWxkcmVuOltjLmpzeChvcCx7d2lkdGg6MTQsaGVpZ2h0OjE0fSksIiAiLEMubmF2LmJhY2tdfSksYy5qc3hzKCJoZWFkZXIiLHtjbGFzc05hbWU6ImZsZXggZmxleC13cmFwIGl0ZW1zLXN0YXJ0IGp1c3RpZnktYmV0d2VlbiBnYXAtMyIsY2hpbGRyZW46W2MuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJtaW4tdy0wIixjaGlsZHJlbjpbYy5qc3goImgxIix7Y2xhc3NOYW1lOiJ0ZXh0LXhsIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctWy0wLjAyZW1dIHRydW5jYXRlIixjaGlsZHJlbjp4Lm5hbWV9KSxjLmpzeHMoInAiLHtjbGFzc05hbWU6InRleHQtWzEzcHhdIHRleHQtbXV0ZWQgbXQtMSBmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLXgtMiBnYXAteS0xIixjaGlsZHJlbjpbYy5qc3goV2wse3BhdGg6eC5wYXRofSksYy5qc3goInNwYW4iLHtjaGlsZHJlbjpDLmpvYi5zdGF0dXNbeC5zdGF0dXNdfSkseC5tb2RlPT09Im1lcmdlIiYmYy5qc3goInNwYW4iLHtjaGlsZHJlbjoiwrcgbWVzY2xhZ2VtIn0pLGMuanN4cygic3BhbiIse2NoaWxkcmVuOlsiwrcgIix4LnNvdXJjZS5yZWFkZXJFbWFpbCwiIOKGkiAiLHguZGVzdC5hY2NvdW50RW1haWxdfSldfSldfSksYy5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggZmxleC13cmFwIGdhcC0yIixjaGlsZHJlbjpbKHguc3RhdHVzPT09InJ1bm5pbmcifHx4LnN0YXR1cz09PSJxdWV1ZWQiKSYmYy5qc3goZ2Use29uQ2xpY2s6KCk9PmQucGF1c2UubXV0YXRlKHguaWQpLGNoaWxkcmVuOkMuam9iLnBhdXNlfSksTyYmYy5qc3goZ2Use3ZhcmlhbnQ6InByaW1hcnkiLG9uQ2xpY2s6KCk9PmQucmVzdW1lLm11dGF0ZSh4LmlkKSxjaGlsZHJlbjpDLmpvYi5yZXN1bWV9KSwhJGwoeCkmJmMuanN4KGdlLHtvbkNsaWNrOigpPT53aW5kb3cuY29uZmlybShDLmpvYi5jb25maXJtQ2FuY2VsKSYmZC5jYW5jZWwubXV0YXRlKHguaWQpLGNoaWxkcmVuOkMuam9iLmNhbmNlbH0pLHguZGVzdC5mb2xkZXJJZCYmYy5qc3hzKCJhIix7aHJlZjpgaHR0cHM6Ly9kcml2ZS5nb29nbGUuY29tL2RyaXZlL2ZvbGRlcnMvJHt4LmRlc3QuZm9sZGVySWR9YCx0YXJnZXQ6Il9ibGFuayIscmVsOiJub29wZW5lciBub3JlZmVycmVyIixjbGFzc05hbWU6ImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41IHRleHQtWzEzcHhdIHB4LTMuNSBweS0yIHJvdW5kZWQtbGcgYmctd2hpdGUvWzAuMDddIGhvdmVyOmJnLXdoaXRlL1swLjExXSBmb250LW1lZGl1bSIsY2hpbGRyZW46W0Muam9iLm9wZW5JbkRyaXZlLCIgIixjLmpzeChvaSx7d2lkdGg6MTMsaGVpZ2h0OjEzfSldfSksIWdpKHgpJiZjLmpzeChnZSx7dmFyaWFudDoiZGFuZ2VyIixvbkNsaWNrOigpPT57d2luZG93LmNvbmZpcm0oQy5qb2IuY29uZmlybVJlbW92ZSkmJmQucmVtb3ZlLm11dGF0ZSh4LmlkLHtvblN1Y2Nlc3M6KCk9PnMoIi8iKX0pfSxjaGlsZHJlbjpDLmpvYi5yZW1vdmV9KV19KV19KSxjLmpzeHMoInNlY3Rpb24iLHtjbGFzc05hbWU6ImNhcmQgcC00IHNtOnAtNSBtdC01IGdyaWQgZ2FwLTMiLGNoaWxkcmVuOltjLmpzeChtcCx7am9iOnh9KSxjLmpzeHMoImRpdiIse2NsYXNzTmFtZToiZmxleCBmbGV4LXdyYXAganVzdGlmeS1iZXR3ZWVuIGdhcC14LTYgZ2FwLXktMSBudW0gdGV4dC1tdXRlZCIsY2hpbGRyZW46W2MuanN4KCJzcGFuIix7Y2hpbGRyZW46Qy5qb2IuZmlsZXMoeC5kb25lLmZpbGVzLHgudG90YWxzLmZpbGVzKX0pLGMuanN4cygic3BhbiIse2NoaWxkcmVuOltDLmpvYi5ieXRlcyhqdCh4LmRvbmUuYnl0ZXMpLGp0KHgudG90YWxzLmJ5dGVzKSkseC5zdGF0cyYmeC5zdGF0cy5ieXRlc1BlclNlYz4wJiZjLmpzeHMoYy5GcmFnbWVudCx7Y2hpbGRyZW46WyIgwrcgIixkcCh4LnN0YXRzLmJ5dGVzUGVyU2VjKV19KSwoKEw9eC5zdGF0cyk9PW51bGw/dm9pZCAwOkwuZXRhU2VjKSE9bnVsbCYmeC5zdGF0cy5ldGFTZWM+MCYmYy5qc3hzKGMuRnJhZ21lbnQse2NoaWxkcmVuOlsiIMK3ICIsQy5qb2IuZXRhKGZwKHguc3RhdHMuZXRhU2VjKSldfSldfSldfSksYy5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggZmxleC13cmFwIGdhcC14LTYgZ2FwLXktMSB0ZXh0LVsxMi41cHhdIHRleHQtbXV0ZWQiLGNoaWxkcmVuOlt4LnN0YXJ0ZWRBdCYmYy5qc3hzKCJzcGFuIix7Y2hpbGRyZW46W0Muam9iLnN0YXJ0ZWQsIiAiLGFpKHguc3RhcnRlZEF0KV19KSx4LmZpbmlzaGVkQXQmJmMuanN4cygic3BhbiIse2NoaWxkcmVuOltDLmpvYi5maW5pc2hlZCwiICIsYWkoeC5maW5pc2hlZEF0KV19KSxjLmpzeHMoInNwYW4iLHtjaGlsZHJlbjpbeC5kZXN0LnBhcmVudE5hbWUsIiAvICIseC5kZXN0LmZpbmFsTmFtZV19KV19KSxPJiZjLmpzeHMoSXQse3RvbmU6eC5zdGF0dXM9PT0icGF1c2VkIj8iaW5mbyI6Indhcm4iLGNoaWxkcmVuOlt4LnJlc3VtZVJlYXNvbj8/Qy5qb2Iuc3RhdHVzW3guc3RhdHVzXSx4LnBhdXNlZFVudGlsJiZ4LnN0YXR1cyE9PSJwYXVzZWQiJiZjLmpzeHMoYy5GcmFnbWVudCx7Y2hpbGRyZW46WyIgwrcgIixDLmpvYi5yZXN1bWVzQXQoU3IoeC5wYXVzZWRVbnRpbCkpXX0pLHguc3RhdHVzPT09InBhdXNlZF9hdXRoIiYmYy5qc3hzKGMuRnJhZ21lbnQse2NoaWxkcmVuOlsiICIsYy5qc3hzKHhyLHt0bzoiL2NvbmZpZ3VyYWNvZXMiLGNsYXNzTmFtZToidGV4dC12aW9sZXQtc3Ryb25nIGhvdmVyOnVuZGVybGluZSBmb250LW1lZGl1bSIsY2hpbGRyZW46W0Muam9iLnJlY29ubmVjdCwiIOKGkiJdfSldfSldfSkseC5tZXNzYWdlJiYkbCh4KSYmYy5qc3goInAiLHtjbGFzc05hbWU6InRleHQtWzEzcHhdIHRleHQtbXV0ZWQiLGNoaWxkcmVuOngubWVzc2FnZX0pXX0pLGMuanN4cygic2VjdGlvbiIse2NsYXNzTmFtZToibXQtNyIsY2hpbGRyZW46W2MuanN4KCJkaXYiLHtjbGFzc05hbWU6ImZsZXggaXRlbXMtYmFzZWxpbmUganVzdGlmeS1iZXR3ZWVuIG1iLTMiLGNoaWxkcmVuOmMuanN4cygiaDIiLHtjbGFzc05hbWU6ImxhYmVsIixjaGlsZHJlbjpbQy5qb2IuZmlsZXNUaXRsZSwiIMK3ICIsQS50b0xvY2FsZVN0cmluZygicHQtQlIiKV19KX0pLGMuanN4KCJkaXYiLHtjbGFzc05hbWU6ImZsZXggZmxleC13cmFwIGdhcC0xLjUgbWItMyIscm9sZToidGFibGlzdCIsY2hpbGRyZW46TnguZmlsdGVyKFA9PlRbUF0+MHx8UD09PWgpLm1hcChQPT5jLmpzeHMoImJ1dHRvbiIse3JvbGU6InRhYiIsImFyaWEtc2VsZWN0ZWQiOmg9PT1QLG9uQ2xpY2s6KCk9PntwKFApLHYoZXUpfSxjbGFzc05hbWU6YHRleHQtWzEycHhdIHB4LTIuNSBweS0xIHJvdW5kZWQtbWQgJHtoPT09UD8iYmctdmlvbGV0L1swLjE4XSB0ZXh0LXZpb2xldC1zdHJvbmcgZm9udC1zZW1pYm9sZCI6ImJnLXdoaXRlL1swLjA2XSB0ZXh0LW11dGVkIGhvdmVyOnRleHQtZmcifWAsY2hpbGRyZW46W0Muam9iLmZpbGVTdGF0dXNbUF0sIiAiLGMuanN4KCJzcGFuIix7Y2xhc3NOYW1lOiJudW0iLGNoaWxkcmVuOlRbUF19KV19LFApKX0pLGg9PT0iZGVmZXJyZWQiJiZULmRlZmVycmVkPjAmJmMuanN4KCJwIix7Y2xhc3NOYW1lOiJ0ZXh0LVsxMi41cHhdIHRleHQtbXV0ZWQgbWItMiIsY2hpbGRyZW46Qy5qb2IuZGVmZXJyZWRIaW50fSksYy5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImNhcmQgZGl2aWRlLXkgZGl2aWRlLWxpbmUiLGNoaWxkcmVuOltFJiZjLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOiJweC00IHB5LTMgdGV4dC1tdXRlZCB0ZXh0LVsxM3B4XSIsY2hpbGRyZW46Qy5jb21tb24ubG9hZGluZ30pLCFFJiZTLmxlbmd0aD09PTAmJmMuanN4KCJkaXYiLHtjbGFzc05hbWU6InB4LTQgcHktMyB0ZXh0LW11dGVkIHRleHQtWzEzcHhdIixjaGlsZHJlbjpDLmpvYi5ub0ZpbGVzfSksUy5tYXAoUD0+Yy5qc3hzKCJkaXYiLHtjbGFzc05hbWU6InB4LTQgcHktMi41IGdyaWQgZ2FwLTAuNSB0ZXh0LVsxM3B4XSIsY2hpbGRyZW46W2MuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ2FwLTMiLGNoaWxkcmVuOltjLmpzeCgic3BhbiIse2NsYXNzTmFtZToibnVtIHRydW5jYXRlIix0aXRsZTpQLnJlbFBhdGgsY2hpbGRyZW46UC5yZWxQYXRofSksYy5qc3hzKCJzcGFuIix7Y2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMyBzaHJpbmstMCB0ZXh0LW11dGVkIG51bSIsY2hpbGRyZW46W1Auc3RhdHVzPT09InBlbmRpbmciJiZ4LnBhdGg9PT0ibWFjaGluZSImJlAuYnl0ZXNVcGxvYWRlZD4wJiZjLmpzeHMoInNwYW4iLHtjaGlsZHJlbjpbanQoUC5ieXRlc1VwbG9hZGVkKSwiIC8gIl19KSxjLmpzeCgic3BhbiIse2NoaWxkcmVuOmp0KFAuc2l6ZSl9KSxjLmpzeCgiYSIse2hyZWY6UC5zcmNVcmwsdGFyZ2V0OiJfYmxhbmsiLHJlbDoibm9vcGVuZXIgbm9yZWZlcnJlciIsY2xhc3NOYW1lOiJ0ZXh0LXZpb2xldC1zdHJvbmcgaG92ZXI6dW5kZXJsaW5lIix0aXRsZTpDLmpvYi5vcGVuU291cmNlLGNoaWxkcmVuOmMuanN4KG9pLHt3aWR0aDoxMyxoZWlnaHQ6MTN9KX0pXX0pXX0pLFAuZXJyb3ImJihQLnN0YXR1cz09PSJmYWlsZWQifHxQLnN0YXR1cz09PSJza2lwcGVkX2Jsb2NrZWQifHxQLnN0YXR1cz09PSJtaXNzaW5nInx8UC5zdGF0dXM9PT0ic2tpcHBlZF9uYXRpdmUiKSYmYy5qc3goInAiLHtjbGFzc05hbWU6InRleHQtWzEycHhdIHRleHQtbXV0ZWQgdHJ1bmNhdGUiLHRpdGxlOlAuZXJyb3IsY2hpbGRyZW46UC5lcnJvcn0pXX0sUC5yZWxQYXRoKSldfSksUy5sZW5ndGg+PW0mJmMuanN4KGdlLHt2YXJpYW50OiJsaW5rIixzaXplOiJzbSIsY2xhc3NOYW1lOiJtdC0yIixvbkNsaWNrOigpPT52KFA9PlArZXUpLGNoaWxkcmVuOkMuam9iLmxvYWRNb3JlfSldfSldfSl9ZnVuY3Rpb24gUHgoKXtyZXR1cm4gYy5qc3hzKHNpLHttYXhXaWR0aDoibWF4LXctMnhsIixjaGlsZHJlbjpbYy5qc3hzKHhyLHt0bzoiLyIsY2xhc3NOYW1lOiJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEgdGV4dC1bMTNweF0gdGV4dC1tdXRlZCBob3Zlcjp0ZXh0LWZnIG1iLTQiLGNoaWxkcmVuOltjLmpzeChvcCx7d2lkdGg6MTQsaGVpZ2h0OjE0fSksIiAiLEMubmF2LmJhY2tdfSksYy5qc3goImgxIix7Y2xhc3NOYW1lOiJ0ZXh0LXhsIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctWy0wLjAyZW1dIG1iLTYiLGNoaWxkcmVuOkMuc2V0dGluZ3MudGl0bGV9KSxjLmpzeHMoImRpdiIse2NsYXNzTmFtZToiZ3JpZCBnYXAtOSIsY2hpbGRyZW46W2MuanN4KF94LHt9KSxjLmpzeChUeCx7fSksYy5qc3goRngse30pLGMuanN4KEx4LHt9KSxjLmpzeChPeCx7fSldfSldfSl9ZnVuY3Rpb24geWkoe2NoaWxkcmVuOnIsaW50cm86c30pe3JldHVybiBjLmpzeHMoImhlYWRlciIse2NsYXNzTmFtZToiZ3JpZCBnYXAtMSBtYi0zIixjaGlsZHJlbjpbYy5qc3goImgyIix7Y2xhc3NOYW1lOiJ0ZXh0LVsxNXB4XSBmb250LXNlbWlib2xkIixjaGlsZHJlbjpyfSkscyYmYy5qc3goInAiLHtjbGFzc05hbWU6InRleHQtWzEzcHhdIHRleHQtbXV0ZWQgbGVhZGluZy1yZWxheGVkIixjaGlsZHJlbjpzfSldfSl9ZnVuY3Rpb24gdWgoe2NoZWNrZWQ6cixvbkNoYW5nZTpzLHRpdGxlOmwsY2hpbGRyZW46dX0pe3JldHVybiBjLmpzeHMoImxhYmVsIix7Y2xhc3NOYW1lOmBncmlkIGdyaWQtY29scy1bMTZweF8xZnJdIGdhcC0zIHAtMyByb3VuZGVkLWxnIGJvcmRlciBjdXJzb3ItcG9pbnRlciAke3I/ImJvcmRlci12aW9sZXQvNjAgYmctdmlvbGV0L1swLjA3XSI6ImJvcmRlci1saW5lIn1gLGNoaWxkcmVuOltjLmpzeCgiaW5wdXQiLHt0eXBlOiJyYWRpbyIsY2hlY2tlZDpyLG9uQ2hhbmdlOnMsY2xhc3NOYW1lOiJtdC0xIGFjY2VudC12aW9sZXQifSksYy5qc3hzKCJzcGFuIix7Y2xhc3NOYW1lOiJncmlkIGdhcC0xIHRleHQtWzEzcHhdIixjaGlsZHJlbjpbYy5qc3goInNwYW4iLHtjbGFzc05hbWU6ImZvbnQtc2VtaWJvbGQiLGNoaWxkcmVuOmx9KSxjLmpzeCgic3BhbiIse2NsYXNzTmFtZToidGV4dC1tdXRlZCBsZWFkaW5nLXJlbGF4ZWQiLGNoaWxkcmVuOnV9KV19KV19KX1mdW5jdGlvbiBfeCgpe2NvbnN0e2RhdGE6cn09bnAoKSxzPWlwKCksW2wsdV09ai51c2VTdGF0ZSgiIiksW2QsaF09ai51c2VTdGF0ZSgiIik7aWYoai51c2VFZmZlY3QoKCk9PntyJiYodShTdHJpbmcoci5xdW90YUdiKSksaChTdHJpbmcoci5xdW90YVJlc2V0SG91cikpKX0sW3JdKSwhcilyZXR1cm4gbnVsbDtjb25zdCBwPSgpPT57Y29uc3Qgdj1OdW1iZXIobC5yZXBsYWNlKCIsIiwiLiIpKSxTPU51bWJlcihkKSxFPXt9O051bWJlci5pc0Zpbml0ZSh2KSYmdj4wJiZ2IT09ci5xdW90YUdiJiYoRS5xdW90YUdiPXYpLE51bWJlci5pc0ludGVnZXIoUykmJlM+PTAmJlM8PTIzJiZTIT09ci5xdW90YVJlc2V0SG91ciYmKEUucXVvdGFSZXNldEhvdXI9UyksT2JqZWN0LmtleXMoRSkubGVuZ3RoJiZzLm11dGF0ZShFKX0sbT0idy0xNiBiZy1zdXJmYWNlIGJvcmRlciBib3JkZXItbGluZSByb3VuZGVkLW1kIHB4LTIgcHktMC41IHRleHQtY2VudGVyIG51bSB0ZXh0LWZnIjtyZXR1cm4gYy5qc3hzKCJzZWN0aW9uIix7Y2hpbGRyZW46W2MuanN4KHlpLHtpbnRybzpDLnNldHRpbmdzLnF1b3RhSW50cm8sY2hpbGRyZW46Qy5zZXR0aW5ncy5xdW90YVRpdGxlfSksYy5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImdyaWQgZ2FwLTIiLGNoaWxkcmVuOltjLmpzeCh1aCx7Y2hlY2tlZDpyLnF1b3RhTW9kZT09PSJsaW1pdCIsb25DaGFuZ2U6KCk9PnMubXV0YXRlKHtxdW90YU1vZGU6ImxpbWl0In0pLHRpdGxlOmMuanN4cygic3BhbiIse2NsYXNzTmFtZToiaW5saW5lLWZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAtMS41IixjaGlsZHJlbjpbQy5zZXR0aW5ncy5saW1pdFRvLGMuanN4KCJpbnB1dCIseyJhcmlhLWxhYmVsIjoiR0IgcG9yIGRpYSIsdmFsdWU6bCxvbkNoYW5nZTp2PT51KHYudGFyZ2V0LnZhbHVlKSxvbkJsdXI6cCxvbktleURvd246dj0+di5rZXk9PT0iRW50ZXIiJiZwKCksaW5wdXRNb2RlOiJkZWNpbWFsIixjbGFzc05hbWU6bX0pLEMuc2V0dGluZ3MuZ2JQZXJEYXksYy5qc3goImlucHV0Iix7ImFyaWEtbGFiZWwiOiJIb3JhIGRhIHJlbm92YcOnw6NvIix2YWx1ZTpkLG9uQ2hhbmdlOnY9Pmgodi50YXJnZXQudmFsdWUpLG9uQmx1cjpwLG9uS2V5RG93bjp2PT52LmtleT09PSJFbnRlciImJnAoKSxpbnB1dE1vZGU6Im51bWVyaWMiLGNsYXNzTmFtZTptfSksIjowMCJdfSksY2hpbGRyZW46Qy5zZXR0aW5ncy5saW1pdFRleHR9KSxjLmpzeCh1aCx7Y2hlY2tlZDpyLnF1b3RhTW9kZT09PSJ1bmxpbWl0ZWQiLG9uQ2hhbmdlOigpPT5zLm11dGF0ZSh7cXVvdGFNb2RlOiJ1bmxpbWl0ZWQifSksdGl0bGU6Qy5zZXR0aW5ncy51bmxpbWl0ZWQsY2hpbGRyZW46Qy5zZXR0aW5ncy51bmxpbWl0ZWRUZXh0fSkscy5lcnJvciYmYy5qc3goSXQse3RvbmU6ImVycm9yIixjaGlsZHJlbjpzLmVycm9yLm1lc3NhZ2V9KV19KV19KX1mdW5jdGlvbiBUeCgpe2NvbnN0IHI9S24oKSx7ZGF0YTpzPVtdfT1xbCgpLHtyZW1vdmU6bCxzZXREZWZhdWx0OnUsdGVzdDpkfT1zcCgpLFtoLHBdPWoudXNlU3RhdGUoe30pO3JldHVybiBjLmpzeHMoInNlY3Rpb24iLHtjaGlsZHJlbjpbYy5qc3goeWkse2NoaWxkcmVuOkMuc2V0dGluZ3MuYWNjb3VudHNUaXRsZX0pLGMuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJncmlkIGdhcC0yIixjaGlsZHJlbjpbcy5tYXAobT0+Yy5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImNhcmQgcHgtNCBweS0zIGZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ2FwLXgtNCBnYXAteS0yIHRleHQtWzEzcHhdIixjaGlsZHJlbjpbYy5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAtMiBtaW4tdy0wIixjaGlsZHJlbjpbYy5qc3goInNwYW4iLHtjbGFzc05hbWU6ImZvbnQtbWVkaXVtIHRydW5jYXRlIixjaGlsZHJlbjptLmVtYWlsfSksYy5qc3goInNwYW4iLHtjbGFzc05hbWU6YHRleHQtWzExcHhdIHB4LTEuNSBweS0wLjUgcm91bmRlZCAke20uc3RhdHVzPT09Im9rIj8iYmctZ3JlZW4vWzAuMTZdIHRleHQtZ3JlZW4iOiJiZy1hbWJlci9bMC4xNl0gdGV4dC1hbWJlciJ9YCxjaGlsZHJlbjptLnN0YXR1cz09PSJvayI/Qy5zZXR0aW5ncy5jb25uZWN0ZWQ6Qy5zZXR0aW5ncy5kaXNjb25uZWN0ZWQobS5mYWlsZWRTaW5jZT9haShtLmZhaWxlZFNpbmNlKToiIil9KSxtLmlzRGVmYXVsdERlc3QmJmMuanN4KCJzcGFuIix7Y2xhc3NOYW1lOiJ0ZXh0LW11dGVkIixjaGlsZHJlbjpDLnNldHRpbmdzLmRlZmF1bHREZXN0fSksaFttLmlkXSYmYy5qc3goInNwYW4iLHtjbGFzc05hbWU6InRleHQtbXV0ZWQiLGNoaWxkcmVuOmhbbS5pZF19KV19KSxjLmpzeHMoImRpdiIse2NsYXNzTmFtZToiZmxleCBmbGV4LXdyYXAgZ2FwLTEuNSIsY2hpbGRyZW46WyFtLmlzRGVmYXVsdERlc3QmJmMuanN4KGdlLHtzaXplOiJzbSIsb25DbGljazooKT0+dS5tdXRhdGUobS5pZCksY2hpbGRyZW46Qy5zZXR0aW5ncy5tYWtlRGVmYXVsdH0pLGMuanN4KGdlLHtzaXplOiJzbSIsZGlzYWJsZWQ6ZC5pc1BlbmRpbmcsb25DbGljazooKT0+ZC5tdXRhdGUobS5pZCx7b25TdWNjZXNzOnY9PnAoUz0+KHsuLi5TLFttLmlkXTp2Lm9rP0Muc2V0dGluZ3MudGVzdE9rKHYuZW1haWw/PyIiKTp2LmVycm9yPz9DLmNvbW1vbi5lcnJvcn0pKX0pLGNoaWxkcmVuOmQuaXNQZW5kaW5nP0Muc2V0dGluZ3MudGVzdGluZzpDLnNldHRpbmdzLnRlc3R9KSxjLmpzeChnZSx7c2l6ZToic20iLG9uQ2xpY2s6KCk9PnIoYC9jb25maWd1cmFyP3JlY29uZWN0YXI9JHtlbmNvZGVVUklDb21wb25lbnQobS5lbWFpbCl9YCksY2hpbGRyZW46Qy5zZXR0aW5ncy5yZWNvbm5lY3R9KSxjLmpzeChnZSx7c2l6ZToic20iLHZhcmlhbnQ6ImRhbmdlciIsb25DbGljazooKT0+d2luZG93LmNvbmZpcm0oQy5zZXR0aW5ncy5jb25maXJtUmVtb3ZlKG0uZW1haWwpKSYmbC5tdXRhdGUobS5pZCksY2hpbGRyZW46Qy5zZXR0aW5ncy5yZW1vdmV9KV19KV19LG0uaWQpKSxjLmpzeChnZSx7c2l6ZToic20iLGNsYXNzTmFtZToianVzdGlmeS1zZWxmLXN0YXJ0IixvbkNsaWNrOigpPT5yKCIvY29uZmlndXJhcj9vdXRyYT0xIiksY2hpbGRyZW46Qy5zZXR0aW5ncy5jb25uZWN0QW5vdGhlcn0pXX0pXX0pfWZ1bmN0aW9uIEZ4KCl7Y29uc3R7ZGF0YTpyfT1ucCgpLHtkYXRhOnM9W119PXFsKCksbD1pcCgpO2lmKCFyKXJldHVybiBudWxsO2NvbnN0IHU9cy5maW5kKGg9Pnt2YXIgcDtyZXR1cm4gaC5pZD09PSgocD1yLmRlZmF1bHREZXN0KT09bnVsbD92b2lkIDA6cC5hY2NvdW50SWQpfSk/P3MuZmluZChoPT5oLmlzRGVmYXVsdERlc3QpPz9zWzBdLGQ9ci5kZWZhdWx0RGVzdD97aWQ6ci5kZWZhdWx0RGVzdC5mb2xkZXJJZCxuYW1lOnIuZGVmYXVsdERlc3QuZm9sZGVyTmFtZX06e2lkOiJyb290IixuYW1lOkMuY29tbW9uLm15RHJpdmV9O3JldHVybiBjLmpzeHMoInNlY3Rpb24iLHtjaGlsZHJlbjpbYy5qc3goeWkse2NoaWxkcmVuOkMuc2V0dGluZ3MuY29weVRpdGxlfSksYy5qc3hzKCJkbCIse2NsYXNzTmFtZToiZ3JpZCBncmlkLWNvbHMtWzEyMHB4XzFmcl0gZ2FwLXgtNCBnYXAteS0zIHRleHQtWzEzcHhdIGl0ZW1zLXN0YXJ0IixjaGlsZHJlbjpbYy5qc3goImR0Iix7Y2xhc3NOYW1lOiJsYWJlbCBwdC0xLjUiLGNoaWxkcmVuOkMuc2V0dGluZ3MuZGVmYXVsdEZvbGRlcn0pLGMuanN4KCJkZCIse2NoaWxkcmVuOnU/Yy5qc3gocHAse2FjY291bnRJZDp1LmlkLHZhbHVlOmQsb25DaGFuZ2U6aD0+bC5tdXRhdGUoe2RlZmF1bHREZXN0OnthY2NvdW50SWQ6dS5pZCxmb2xkZXJJZDpoLmlkLGZvbGRlck5hbWU6aC5uYW1lfX0pfSk6Yy5qc3goInNwYW4iLHtjbGFzc05hbWU6InRleHQtbXV0ZWQiLGNoaWxkcmVuOiLigJQifSl9KSxjLmpzeCgiZHQiLHtjbGFzc05hbWU6ImxhYmVsIHB0LTAuNSIsY2hpbGRyZW46IkJsb3F1ZWFkb3MifSksYy5qc3goImRkIix7Y2xhc3NOYW1lOiJ0ZXh0LW11dGVkIixjaGlsZHJlbjpDLnNldHRpbmdzLmJsb2NrZWRQb2xpY3l9KV19KV19KX1mdW5jdGlvbiBMeCgpe2NvbnN0e2RhdGE6cj1bXX09VnkoKTtyZXR1cm4gYy5qc3hzKCJzZWN0aW9uIix7Y2hpbGRyZW46W2MuanN4KHlpLHtpbnRybzpDLnNldHRpbmdzLmNvcGllc0ludHJvLGNoaWxkcmVuOkMuc2V0dGluZ3MuY29waWVzVGl0bGV9KSxyLmxlbmd0aD09PTA/Yy5qc3goInAiLHtjbGFzc05hbWU6InRleHQtWzEzcHhdIHRleHQtbXV0ZWQiLGNoaWxkcmVuOkMuc2V0dGluZ3Mubm9Db3BpZXN9KTpjLmpzeCgiZGl2Iix7Y2xhc3NOYW1lOiJncmlkIGdhcC0yIixjaGlsZHJlbjpyLm1hcChzPT5jLmpzeChEeCx7Y29weTpzfSxzLmlkKSl9KV19KX1mdW5jdGlvbiBEeCh7Y29weTpyfSl7Y29uc3R7Y2hlY2s6cyxzeW5jOmwscmVtb3ZlOnV9PWV4KCksW2QsaF09ai51c2VTdGF0ZShudWxsKSxbcCxtXT1qLnVzZVN0YXRlKG5ldyBTZXQpLHY9Uz0+e2NvbnN0IEU9bmV3IFNldChwKTtFLmhhcyhTKT9FLmRlbGV0ZShTKTpFLmFkZChTKSxtKEUpfTtyZXR1cm4gYy5qc3hzKCJkaXYiLHtjbGFzc05hbWU6ImNhcmQgcHgtNCBweS0zIGdyaWQgZ2FwLTIgdGV4dC1bMTNweF0iLGNoaWxkcmVuOltjLmpzeHMoImRpdiIse2NsYXNzTmFtZToiZmxleCBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAteC00IGdhcC15LTIiLGNoaWxkcmVuOltjLmpzeHMoImRpdiIse2NsYXNzTmFtZToiZmxleCBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIGdhcC0yIG1pbi13LTAiLGNoaWxkcmVuOltjLmpzeCgic3BhbiIse2NsYXNzTmFtZToiZm9udC1tZWRpdW0gdHJ1bmNhdGUiLGNoaWxkcmVuOnIubmFtZX0pLGMuanN4KFdsLHtwYXRoOnIucGF0aH0pLGMuanN4KCJzcGFuIix7Y2xhc3NOYW1lOiJ0ZXh0LW11dGVkIixjaGlsZHJlbjpyLmRlc3RBY2NvdW50RW1haWx9KSxyLmxhc3RDaGVja2VkQXQmJmMuanN4cygic3BhbiIse2NsYXNzTmFtZToidGV4dC1tdXRlZCIsY2hpbGRyZW46WyLCtyAiLEMuc2V0dGluZ3MubGFzdENoZWNrZWQoYWkoci5sYXN0Q2hlY2tlZEF0KSldfSksYy5qc3goImEiLHtocmVmOnIuZGVzdFVybCx0YXJnZXQ6Il9ibGFuayIscmVsOiJub29wZW5lciBub3JlZmVycmVyIixjbGFzc05hbWU6InRleHQtdmlvbGV0LXN0cm9uZyBob3Zlcjp1bmRlcmxpbmUgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdhcC0xIixjaGlsZHJlbjpjLmpzeChvaSx7d2lkdGg6MTIsaGVpZ2h0OjEyfSl9KV19KSxjLmpzeHMoImRpdiIse2NsYXNzTmFtZToiZmxleCBnYXAtMS41IixjaGlsZHJlbjpbYy5qc3goZ2Use3NpemU6InNtIixkaXNhYmxlZDpzLmlzUGVuZGluZyxvbkNsaWNrOigpPT5zLm11dGF0ZShyLmlkLHtvblN1Y2Nlc3M6Uz0+e2goUy5ncm91cHMpLG0obmV3IFNldChTLmdyb3Vwcy5tYXAoRT0+RS5mb2xkZXIpKSl9fSksY2hpbGRyZW46cy5pc1BlbmRpbmc/Qy5zZXR0aW5ncy5jaGVja2luZzpDLnNldHRpbmdzLmNoZWNrfSksYy5qc3goZ2Use3NpemU6InNtIix2YXJpYW50OiJkYW5nZXIiLG9uQ2xpY2s6KCk9PnUubXV0YXRlKHIuaWQpLGNoaWxkcmVuOkMuc2V0dGluZ3MuZm9yZ2V0fSldfSldfSkscy5lcnJvciYmYy5qc3goSXQse3RvbmU6ImVycm9yIixjaGlsZHJlbjpzLmVycm9yLm1lc3NhZ2V9KSxkJiZkLmxlbmd0aD09PTAmJmMuanN4KCJwIix7Y2xhc3NOYW1lOiJ0ZXh0LW11dGVkIixjaGlsZHJlbjpDLnNldHRpbmdzLm5vTmV3c30pLGQmJmQubGVuZ3RoPjAmJmMuanN4cygiZGl2Iix7Y2xhc3NOYW1lOiJncmlkIGdhcC0xLjUgcHQtMSIsY2hpbGRyZW46W2QubWFwKFM9PmMuanN4cygibGFiZWwiLHtjbGFzc05hbWU6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIGN1cnNvci1wb2ludGVyIixjaGlsZHJlbjpbYy5qc3goImlucHV0Iix7dHlwZToiY2hlY2tib3giLGNoZWNrZWQ6cC5oYXMoUy5mb2xkZXIpLG9uQ2hhbmdlOigpPT52KFMuZm9sZGVyKSxjbGFzc05hbWU6ImFjY2VudC12aW9sZXQifSksYy5qc3goInNwYW4iLHtjbGFzc05hbWU6ImZvbnQtbWVkaXVtIixjaGlsZHJlbjpTLmZvbGRlcn0pLGMuanN4cygic3BhbiIse2NsYXNzTmFtZToidGV4dC1tdXRlZCIsY2hpbGRyZW46WyLCtyAiLEMuc2V0dGluZ3MubmV3cyhTLm5ld0ZpbGVzLFMudXBkYXRlZEZpbGVzKSwiIMK3ICIsanQoUy5ieXRlcyldfSldfSxTLmZvbGRlcikpLGMuanN4KGdlLHtzaXplOiJzbSIsdmFyaWFudDoicHJpbWFyeSIsY2xhc3NOYW1lOiJqdXN0aWZ5LXNlbGYtc3RhcnQgbXQtMSIsZGlzYWJsZWQ6IXAuc2l6ZXx8bC5pc1BlbmRpbmcsb25DbGljazooKT0+bC5tdXRhdGUoe2lkOnIuaWQsZm9sZGVyczpbLi4ucF19LHtvblN1Y2Nlc3M6KCk9PmgobnVsbCl9KSxjaGlsZHJlbjpDLnNldHRpbmdzLmRvd25sb2FkfSksbC5lcnJvciYmYy5qc3goSXQse3RvbmU6ImVycm9yIixjaGlsZHJlbjpsLmVycm9yLm1lc3NhZ2V9KV19KV19KX1mdW5jdGlvbiBPeCgpe2NvbnN0e2RhdGE6cn09dHAoKSxzPUtuKCk7cmV0dXJuIHI/Yy5qc3hzKCJzZWN0aW9uIix7Y2hpbGRyZW46W2MuanN4KHlpLHtjaGlsZHJlbjpDLnNldHRpbmdzLm9hdXRoVGl0bGV9KSxjLmpzeHMoImRpdiIse2NsYXNzTmFtZToiZmxleCBmbGV4LXdyYXAgaXRlbXMtY2VudGVyIGdhcC0zIHRleHQtWzEzcHhdIixjaGlsZHJlbjpbYy5qc3goInNwYW4iLHtjbGFzc05hbWU6InRleHQtbXV0ZWQgbnVtIixjaGlsZHJlbjpyLmNvbmZpZ3VyZWQ/Qy5zZXR0aW5ncy5vYXV0aFRleHQoci5jbGllbnRJZE1hc2tlZD8/IiIpOiLigJQifSksYy5qc3goZ2Use3NpemU6InNtIixvbkNsaWNrOigpPT5zKCIvY29uZmlndXJhciIpLGNoaWxkcmVuOkMuc2V0dGluZ3Mub2F1dGhDaGFuZ2V9KV19KV19KTpudWxsfWZ1bmN0aW9uIEl4KCl7cmV0dXJuIGMuanN4cyhqdix7Y2hpbGRyZW46W2MuanN4KFZyLHtwYXRoOiIvIixlbGVtZW50OmMuanN4KFN4LHt9KX0pLGMuanN4KFZyLHtwYXRoOiIvY29uZmlndXJhciIsZWxlbWVudDpjLmpzeChFeCx7fSl9KSxjLmpzeChWcix7cGF0aDoiL2NvcGlhLzppZCIsZWxlbWVudDpjLmpzeChSeCx7fSl9KSxjLmpzeChWcix7cGF0aDoiL2NvbmZpZ3VyYWNvZXMiLGVsZW1lbnQ6Yy5qc3goUHgse30pfSksYy5qc3goVnIse3BhdGg6IioiLGVsZW1lbnQ6Yy5qc3goVWgse3RvOiIvIixyZXBsYWNlOiEwfSl9KV19KX1jb25zdCBNeD1uZXcgTHkoe2RlZmF1bHRPcHRpb25zOntxdWVyaWVzOntzdGFsZVRpbWU6MmUzLHJldHJ5OjEscmVmZXRjaE9uV2luZG93Rm9jdXM6ITB9fX0pO0NnLmNyZWF0ZVJvb3QoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJvb3QiKSkucmVuZGVyKGMuanN4KGdnLlN0cmljdE1vZGUse2NoaWxkcmVuOmMuanN4KGx5LHtjbGllbnQ6TXgsY2hpbGRyZW46Yy5qc3goR3Yse2NoaWxkcmVuOmMuanN4KEl4LHt9KX0pfSl9KSk7Cg==" },
37039
37039
  "/assets/jetbrains-mono-cyrillic-500-normal-DJqRU3vO.woff": { type: "font/woff", base64: "d09GRgABAAAAABtwAA8AAAAALRQAAQABAAAAAAAAAAAAAAAAAAAAAAAAAABHREVGAAABWAAAAF0AAACOBfUF/EdQT1MAAAG4AAAAwQAAAUJTfU5kR1NVQgAAAnwAAAB9AAAA2owqjPtPUy8yAAAC/AAAAFMAAABgF7B4mFNUQVQAAANQAAAAPQAAAEzpM8woY21hcAAAA5AAAADlAAABTDW2UrZnYXNwAAAEeAAAAAgAAAAIAAAAEGdseWYAAASAAAAR+gAAHOZHOffAaGVhZAAAFnwAAAA2AAAANhSS8UNoaGVhAAAWtAAAAB8AAAAkAcwBgGhtdHgAABbUAAAAtQAAAgQnKSFEbG9jYQAAF4wAAAEKAAABCvNa7GttYXhwAAAYmAAAABwAAAAgAPwCb25hbWUAABi0AAABEwAAAmo0OV08cG9zdAAAGcgAAAGoAAAEh/swTOl42g3BAQZCURQFwDk9gAACCQpKkhAAkSCKgkKkNhAJgPgr/3dGMAQMjEQT4xqTGlMzMbcQSyuxthHbGrsaewdxrHFyFhdXcXMXjxrPGi9v8anx9RP/2nS19TpdC/IAAAB42kXMA24EQBSA4f9N7cZJbVtBbdu27QZ1o55hT7YH2EssZ98qf/KNBwFSKaMFMzQytUTm1f7TDZnEA/j9CCDX+w+XJAO6It4GQjKCB4fVRTql/Ef748Ma603VeOCKE9tetA11iRnbGCJ/psLapXaoDWqdOqE2q2fGiZ2rfWqHWheUUgRDHLnkU0IpVVRTSx31NNJEM+30McgQw0wwzQzzLLDKGlvsss8BtzzwyBMGyAZSEck0TrVC//7kJwCkpS1YAAAAeNpMzLVBAEAUA9CXO9yhQ0o6XBbA3RkA63AdgMFx/S5JBG0mLSuLy5uHBi6OH650aYDXV5F/M+X09PJG11dFQdVk1/y7d3mvmlAMaVPFsHhC0KgizkSfoEHEsyBaxKL6rTD6rdAnZhEU7y4qBq2pv4g+BG9jBMN6AJm1EDEAAAB42mNgYYpi/MLAysDA1MUUwcDA4A2hGeMYjBgdgKIMDJwMUMDkDiQ4YDwvJyBxgIFXUYz5z78rDAzMfxh1FBgY59+/DlSpxnQLKKvAwAoAMIYNzAB42gXBsQ1AABQFwHsfiY5CYQBDaVVIlBL7mckA7kT0CpPCop79uIPz3q4MojUrSJePvNSKRlRGEH74hwYNAAAAeNpdygNSrgEUBuDn6z/Da9vG6No2wkW2bQ3iCmoURi2llpEXkmtYh6+QhhSOS0l2fiTPcN1lIRxw2XtTZpK0VBL742xcixfxMTKiMEpi9MrJjQ32pJI4GOfieryMT5EVxTGyk2qWtzG9MbfxfiNZ64fVQ1t7EWC5WmJ3nXQfH9Bo2LhJcM13l7z3zkeffPbGW1/c8dAL55x3wUVXXHXdDTfdctsjjz31xDPPvfLaSx989c0PP/3yW6Ysf/3zX7YcFSpVq1KjVoNG9dp06/FHr3StWrTr0KlJsy65ytW5LGMTW30xyQAAAAABAAH//wAPeNqVWAdcG0fW35lVMaIKIYohtBUrCYQALdqVhESRAIMNbnQMlkBUs664xr2XIz253nuvJNebk+v9LpVcv3O+6/3StXxvRssGnPL9Pum3q53VzOtv3v8NwzLDDIMUvARPBiaFYQRzmbmizIxQ2TB6r/Ju5FK+BtfDeCnBe3CDwuAGBjNVDIOrYY2RyYIVFsHC2TmjRbDzvN1gMFZ94fYv7Hb9yNX8fk+6mWWzMsjiz38eZf/M15OZ2SMxy8tJCuwDmGcQwwDnc8Wv9PY83FmmD94WAjcLU8TYiISCJ9eaYzAajLl5ueTJwNkFj+it5znOCw/kt++xmcNVfLa1ILeyVppsOzEfaG0NzO8WGxu9e/DSxKCnMydFr0/N7Q00jnpGGyVf63Bg3M8A363LT+NM/HumhGH05TzvNdeLouABPhzQLTdYzTm5hJkAbFFt66QkTba2TkhyUJJCIUkKytKESRhrQa3hmFAfDfuDQZ/yRV8o5GuJ1QP1naBLKuiSSi1tXfnuRB9TvoxKlV+jCF6K/Sj6lxiDqN7sytzkl4Nvn/yoLD+Kl5SfIneCRx3K52DuOIj+tDrXC/O8ZVbOLFjH77kH3XvPPTG8PhZLPBUj+vHLT9OZZqof6EHVISvMOQaUIZ+YCzc0hD+K8k6ajk6HIpEgek888fz0EbK2FySqh7VpqkQWgbVwLGfulcfuO/zRxWNvjYJYP0a1yruVC6hT+SxZE4Y1ubCmiK4Bh+WJoiQREesbscRybDFrtYYvdqZmsbpMU/vFKb3JpJNn9uhN6wx46U9loczMUNmfEvzTNfOH5hzK21DcPn3wkPA0kKW+Wge+Mr/cW6CMwU4U07yGXK1xrzfemrxLfr8kBgKar4RYi/LFljEhFvKhVvCaX/mSLwQ8qM4uqrNVjb1kyHFm80rQ9f59w6w/MLPh/HlfJOI7j5fEeCQ8ISq/ROcjPn+YWKEFJM3DN5hKKqdqdrLabodRUug8NcJycvPUuEY1G3cF5tobA+HqypGtA+JE68QxJIckb7C6cnRrf2DGVLejyeP31TmDqYV5e7uDwx55R60kuJ3BtKLcfZtDowLwFkCDCvwkZCuzEhlPP4j+9SA+MjGRuEqkK4cZIuiYR7KZFYB9ntiEiXNpSmfi8h9ev3UqO0WvS8meOXT9h7fuN2WT53l0EE19i7eYTBb+W8rblSuPW+ypqRb+CbBbEDQ24Frwu51h8sqJkoLgpRoaOaqvFYThDEbqJm9S8f/2x2dH3uQTqoP6XSlHdowfmEVG3u0KbHpDZV3ANNS9eUio9thLNw7G+5Qrk+5bbD0N7g63o7KOaLEZOGYAx1tUG2tm5alZrdTkkkDzdlqSplvjR1mZDQpSc7MkBOHxKImGOyEYZoZr6kO+u3yN9TXDMwymlE1AuYApX0s71wrJq9G1gHqUE3JFJkVxMtIKQfDRUKAmYJxLO1ocDPhDJm+s+c6WqNcbbRl3h5rLStt7UHdBMBwOFYAG22is8UyKlsWQw9u+/kFk/tQ4Gh9XguM0C5e70FdhVjrY1bsqebnea1Ljb1D30anFiaCE3hlPvBifp9I/A9LXqFmyVno1S1YEJ1kCQkOgJe9SMCiJoVBKfazl9nC0Hja022Efi4b8tweCwcDtfpohIA+1Th5TARKBxIIoUf/SPCm383Yuz2pZw6V3DhvKHK098eptvoizzKBj93obGrxCMLiIl2Zriyv2xt7SPCrwt9SeeRtaFwrcGQg1+e70NTGIamMGbVxJXexCbq6wJpWEFZ+vySUOFTQMCTpZ53FW1XmqXRsGe+JjfP+0UdZV2/maKt7ROTowPZXCR9yFZY6y0gpDakZnR1fPlnB+MVdeXGxIS+/u3DII9lerH69li7qlaeliMBqrvn7/iTFjho7NMI6duP9rJ+bgWZe5TkZFyPTGtMKUlMK0Nyr/VW68L604JaU47X1A1Q1WrFS9KrGCJUnVIqCPbvnBkXljhl6XYZTnlf8sPowNyndzfNnZvhwkJnitbuIlbAA6xCP9asXMoDLSOiN4bi6V/ej9ykMHOmb8/pmOAwcCLS2BA3gp/k1xrCU8JkZbfP4WoExrL6WsY4juu2CcD5T1Kl3zLvRx5cuwLnEVZtN/af0uTlZ1TlvD+hkjXeMV6KqOKbIseh02IMzkLx/EzUA1k8mlMQ2FwUJCn2xWpFSwBkO+MzU/GxnR6ci48lbvjU/pUenCH3LCfbXoPYlzf1hY+AMuVb646RCxhlpjsQEk0Mbs/ZgnY7jO5hCpUuFtN/C0Jr1oWV3QyMWmHts3NWbvccSm9h6bnK3EvahyBh1GE8rn0QZ6vVW5hvqVD5ML6NXBHlEEtahmVVyuAiUrO18jfhl6QRXtc006Wb/R37ixs2nnaKCtLSC1YhkFZ9vmTlU7sszWbFdtcJ+pbihYK4W9YstYm0eQgp7GESE6IGzNXac3pOQPBJrHfeoeYkzWd6IS0DeCbhwpjBK7bYLV44evTLAG/AiU6rNc7+ZCHAUUcczWv7Uo8S6wFl1PfcivYDB4Sys/tanppTH7AMMT5JZ8C7wtyy9gTPyo7kzEixx1H2ex2ivQOnRR/rgRDw3o4x3b0O8SPD6inDl1CuhRlEDpp1L6FPvQsZGO1UoP4zTKCSKccFJjiuKifvRRmeBUIApBpcroojTSNRqZlIaejtW6CONMSlPNIjJbWJOBD2x85NDRtEyM002QgS98CRcrHysJmc2hEtST4NfgVs8q3Fqz/D/YyWLIwTKYARbRtl7IgZXdl7PazeUGuimSeKGbJM8lGkcFYbRxZ9OIIIw0jZZ5Cgs9J8vrCgvrygvavdGmG+Go2N4uRsM3mqLe9rejX5X4HDd4qbhY4m84fCVEO1rTqfZZVLtWGDMURTNlZrIvgyyCWrsgTtB96ZHa2P65iK9SMs2hPNY4P/bc02KzkUXjCZ5YHHLUn0SYelKXkl8rekw5LX9N3rSwAKa/go8mrvyNcPMDtxIVj7J0Jv0GUFTeNheFqQfxAr14OhtoR2jcaLQ1+r9X+oZnt8wOeymHY/hy8voVQ2U6jzHlAtblVjCy9el3yg/L7zx5EuZfhWDgT6p74hocZ36FHVE+1z4TCMy0nzvta2vznYYMeVwcC7eMi7GwJJEQXX6BUtF2Vs77SnTOXPzHUJLQUD8h1I9Pjt5EiWUCQKmYym5lCjSJIA5UQpQSIjaL2YZnpnfYbDWCUGNDthgRa2pQGpwc9taItV7lAyToQbbnIfs2AEUSb4xRzT+NqJqHFRptQ/b6YmRAdlf3yEj35f16tDWCJl1cZSXn0g+HBGxVHh/s2rVpCF9Umkf2DFfZdtmqwI4AtSgXC8FZqpdWMzFLGoe6kWs7XFuGh7dcvnbDVeFwVIDllCdRhfLkYNfurkEUU97ZV2XbzTtJvKoIGeI1g8brNormfs9wr9KHWaE8WNf0YhOSRHGL3CBJwSefDEpSgyyu7cagD9s7ftDX2EjbMeCyEbgYNS4aLveCY1W0wq3uKJADgJ0cFJP0xaAMIK8tLklxEyAkQvbg+F5o9vyAlYRYWPkSNBREN7U7A93WMdqYVqRIsiLRt2pnhmkfTis5gzniTw23WyUVN9Ouxmg0z82hrkOZHb2dg7LT7vE68bGxsaeyuib7le+jCtHnq1J+TGJfBC0F0NKq6gn6mUm6gI5Jgjk390qXuga7o9Huwa6to6NbeYeDh8s02f9m5X5w4XcuDUxMDChX+icHPW50yu3xuJVzbg/hRG5Yyw+L2tsItApYBBXle+5u3uifbvudPHXx4JEjYksLCljlzpaYN8GTswb0un+0+MQWYoHlLmqBUpA6iXRVvbm19iDZh1IjdT5qBFkzCmCZxUmpBmUkTfGSdX7ZMFwHFld7FLC4mRibxhypnesZO3AE4SmctBKpVVC7BjKvIObJw1dP33NP9xZsKOVbB8a8462i3y/7/SY0P/HchTt2DWwPVxeV7Y93R8bqo02B7oamxmB3oGnlbCMH4iCL9Bba2UYSHKhbwVoMwfX9a3jKuZ5zFrt2jd6+4BIE18IVh9vtuIL5zW3+cuu6dXm2ho09Aw7O5tzKl5fZwY6ngEsWcNFQ2yl0t/IE5uNKCKxA/2XN8H83jcbTQUZbc4eG2uiqqmmybPb7SgisVUQrAg++ttJ6L4prUZvRYChymCuQAR0C0PYB8YkP6FDJwh/M0U5kVkSC2dDcZzqjIIHaX2EDqU4rYzYD0AVs3fQtkSgDnjcCP6uKu0kZFZKwmwOmnDFjfi4+Ut3risXm5ifG3b3uGFqP0v4JH+UZ5XcvwAeoNCw/h824mnHTTKAw7SYbw5Pao6pbu1HtIMyDB9L2GH1OT7Wnzn38SKXLwhfVVXgNe1L3b68LDda0hzo69u00bonkl1SWc5WD9rLckqyygnBPRatbaMG6tsbOAQ278K+M0PrjOgP7o8v0jnnld0WRpjz008QSuqWopTFHqQfr0PXUX33UX2d0xDpDau9Iz2ZWGWZIHrz71k98+sQ9g5j/xS+UZ5Xf/uUvxMZ0PqUykPR6MaGSD9bBNB5XIzgwLebyrQ7iy7PyR/TYvrnBGG/uQo0g2IO/2TLj0U56YG3hq570YDjpudKePOmJXJliWR3eMTPK6nWY/0lZKCsrVPaTxNJQZXxq1KY8gpyuM1dDQ8wqi6WqutHemLP2Q5mXHyZqJZaeegp0UjtdiJhcZtW6l6NEnsithIgd1O4V1uTR2OuC2EvHtWCR7GVCox5o2DC/5vTkOvrHdfSNsTGlgaxQOzegsJ7RxqyZ4Yln6FuS6bXw1kHrZiHDUTRItxcSxGrxtLJm7ZiCFlAltmdvdCS2Z09sqD4YvEY65MXF3Tvv2ikvLsrws3sRpaATcFAhNTVJd/lCK0iUylJALdAOtwTmKerzwi5puAn13ZUZKp85JDf7KyST/HWdEc2MfOzDNSKgPn1iSUN9/GugPl4JooeU4CrUx78a6uMVB3qcXEBaQ338/4n6eKUa/Sx5rUJ9/KuiPl4JoQcTSxT1DatZYWIsaux41u6rw/IbiZXfeF+tINTeh/mvxnq3j8WqnA6CdRgtp6xJ7798/aVL/5IJAXmWEJhFD42voqCiPJV/3itKoGI8x9DMzJDDUev11joIxuOvx3q2R/tqXdV1yj9JvFL4DgivC/MU4Wn5aX1VhIez15cgHeK8HcNDnXfsYdGWNhTzlvB8iVe/M+BBY1/va69r60U/Uv47snu4oqSulCdc/BTh8RrCs5IYfWWE54+e6xM7h4Y6X3fuMbHEZisRQfDr1/s2uNt7Uabyzz6+xF1qVzPTTDMzn8ZlD+3FapmyVzmr08AdPa/zJLFd/Agrsw2CFPzc54KS0ACDI2tP7PKHS9QzO8RsorUcOGj7/FpgZ+RWnYEhxxraniChHW8jZ2AmQrrRVzKc7wsR0oDr7gRYp3bKLjYDLJVDd9BTWcwrvD2Zpe4y6Cf0rTU5d3AF4RnwErGzGeQSqNpGQVyN8gzkoVd+17sQWtfVuH1cDniEBhmLW/r6tnTNSsHZIeWHiBeDTQHlN1gk/qsHzV24djXas3LUjfUqgrn5zO9CR29fNNrX09k1Mrqp3G4H1GA3jXZt/Tvm/9BJ2oM/dI1udzv/4HTTmxojmJ5W5ZJuWT14M5MqrME8/+VgZN/YP+Zmj8XOnauVpB+a+xt7o4mlhx5CxR+tdjqrVYSnAwvw2lmmpjO32iIa0OOed/pCPo/gl/v75Xe8A2NDCd+2PaaeebKqHVTrwEEimOcfcArKkqqEN+Pfw6+TkWhcW4pxnpv1ks2DdWN7MWs1I7DWq1mpUJYNWdkGdp1R17d7Vm82G1mjQYdOO0XRWen1VqZnZ6enWSyAj7tzO7eUlnZvbc9D0wBpFws6u4tLure0FyhvQi6f+y9uH701ZFlezLJYsl60ZIFFD+GL6HeAeVLJPkHkoGKAFGWrntHbSyoqSkorKpQX4VYKA3yRjsmj+gtW/RXQOkZpraGEaHcH10uLSBR+D2Z/iDWDjRiLJBi/t+vgfnxxYQH+uYhPo5/BP+mEjtYcCYTSppHe6gp7de8IPr01bHO5bOGtDNGCrQYt7v//asFW25IC2VZ+iVxsJcj1wGq52MqkXKwN5HrgNeVibZpc/wudaHScAAAAAQAAAAI2BIuBX+VfDzz1AAMD6AAAAADb0qaaAAAAANva0PL5O/7UBJID/AAAAAYAAgAAAAAAAHjaY2BkYGD+8+8KAwPLhp/Wf2tZJgFFUEEdAK7kB0oAeNpszgEHAkEYhOFPABEEUSAER1UlroJOQmXdam/V4XCAfkQ/vFAvBovwmAFmOnerkSUqlGjUW0wQUKBUP2CFMfZw4hHgkswwVUZUeCYGaKSLBbwE6aNI/kUE9RUymWGMIyJyicD3Q27Jt3YO8DijlQkMGyxh2MOjwisxgpMedojykAEKRLjk+xVrTGWODKc/32sYtuggh8MNF3gJMKyRw5AamtlvpQz3GU4ztAJpIAkAM0lTZAAAAAAAABoAOwBGAFEAiAC3AM0A4wD4ARYBMAFeAZABswHxAgICLAJlApICxgLZAvEDIQNYA5kDxAPiA+oEDwQXBCYEMQRCBGkEcQR8BKQE6AUIBRMFGwUmBUMFSwVTBVsFbQV1BX0FhQWiBa0F7AX0BhQGKwZCBl4GdAaXBrwG5QcYB0QHTAd/B7IHugfFB80H8ggnCE4IfgiGCL8I8gkBCQwJHQlCCUoJVQl4CbkJ2QnkCfwKBwolClIKZgpuCoAKiAqQCqEKqQq0CucK7wsPCyYLPQtZC28LjguvC9YMCQwzDDsMbAydDKgMswy+DOkNGw0/DXQNdA10DXQNxA3qDgEODg4nDk0OWg5zAAB42mNgZGBgaGHcwZDHsIWBDcxDAGYGJgA5cQJteNqM0IFGQ2EUB/DfqqJMBZLAFUh0V0MoUBGllKQArHVtN9vu3HuH3iEAPUJP0cP0BD1D3D6zKQqHH9/5n885qHs1qza3iPfaenDNts/gGcs+gmcdeAuem+iZt+EleMGWx+Bl++Jv16jbDJ5Xtxa8om4peNUSbmT6WgbOlFp6Um2XEo9SI333EqmOrrKq0lDhQENDoS2XGioVYoVUTyyT62i4curCuUTpWK4lNVC4lBnI7Ez9dCeRK6TVa6Qp1rRnb0KHzh07/PfMG4mOkZ6W/JdUNM5FU7kTmaFn+Xj3SNNuVZFbXYnoj3nXcpkniXaVPzKqbpjJq86tH/fsSKuOkQextkzf1/Sx2KKPx/+aADN1XKsAeNpcwVNCLQAABcAz9Wyb2bjZtm17H22uFbSc+m8mRUmS3J2lkEQeuk5SlhtFKU9FqlKbutSnIU0ppCXt6UhPRjOeydwqznJWsp6d7HrksSeeeua5F1565bU33nrnvQ8++uSzL7765rsffvrltz/++ue/EqXKlKtQqUq1GrXq1GvQqEmzghat2rTr0KlLtx69+vQbMGjIsBGjxoybMGnKtBmz5sxbsGjJshWr1qzbsGnLth279uw7cOgoxY6dOHXm3IVLV+5ppGvDiGIgiqJmLmbEUva5AFdgZqb2Te9udIajuVu/3+nP3i6/Lnc/n27Nh/JvdIYOPQZp2FZzEZM0R56xYMWGvbSRfMARJ5xxkd7QoccgbZY+YsKCGSs2aYv0I/Y4SGvYY8Io/SQtY8GKg/QzLtK8DIYOPQaZsK36EZNMq3rGghUb9jKN5AOOOOGMi4yGDj0GmWYZIyYsmLFik2l1f8QeB5ka9pgwyjjJlLFgxUHGGReZ/L/W28Z4/Bd6x8sGq1j2T88/Py7Pnx/PqOQjWX+ml5xYnMoHlwZzoXJmYA4AynoJrA==" },
37040
37040
  "/assets/jetbrains-mono-cyrillic-500-normal-DmUKJPL_.woff2": { type: "font/woff2", base64: "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" },
37041
37041
  "/assets/jetbrains-mono-greek-500-normal-D7SFKleX.woff": { type: "font/woff", base64: "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" },
@@ -37046,7 +37046,7 @@ var WEB_ASSETS = {
37046
37046
  "/assets/jetbrains-mono-latin-ext-500-normal-ckzbgY84.woff": { type: "font/woff", base64: "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" },
37047
37047
  "/assets/jetbrains-mono-vietnamese-500-normal-DNRqzVM1.woff": { type: "font/woff", base64: "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" },
37048
37048
  "/favicon.svg": { type: "image/svg+xml", base64: "PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCIgdmlld0JveD0iMCAwIDQ4IDQ4IiBmaWxsPSJub25lIj4KICA8cmVjdCB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHJ4PSIxMSIgZmlsbD0iIzBCMTAyMCIvPgogIDxkZWZzPgogICAgPGxpbmVhckdyYWRpZW50IGlkPSJyaWZ0IiB4MT0iMCIgeTE9IjAiIHgyPSIwIiB5Mj0iMSI+CiAgICAgIDxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzY3RThGOSIvPgogICAgICA8c3RvcCBvZmZzZXQ9Ii41IiBzdG9wLWNvbG9yPSIjQTc4QkZBIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0MwODRGQyIvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICA8L2RlZnM+CiAgPHJlY3QgeD0iMTgiIHk9IjEwIiB3aWR0aD0iMTIiIGhlaWdodD0iMjgiIHJ4PSI2IiBmaWxsPSJ1cmwoI3JpZnQpIiBvcGFjaXR5PSIuNDUiLz4KICA8cmVjdCB4PSIxNCIgeT0iNiIgd2lkdGg9IjIwIiBoZWlnaHQ9IjM2IiByeD0iMTAiIHN0cm9rZT0idXJsKCNyaWZ0KSIgc3Ryb2tlLXdpZHRoPSIyLjQiLz4KICA8cGF0aCBkPSJNNCAyNGgxNCIgc3Ryb2tlPSIjRjVGM0ZGIiBzdHJva2Utd2lkdGg9IjIuNiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBvcGFjaXR5PSIuNCIvPgogIDxwYXRoIGQ9Ik0zMCAyNGgxMk0zNy41IDE5LjUgNDIgMjRsLTQuNSA0LjUiIHN0cm9rZT0iI0Y1RjNGRiIgc3Ryb2tlLXdpZHRoPSIyLjYiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPgo8L3N2Zz4K" },
37049
- "/index.html": { type: "text/html; charset=utf-8", base64: "PCFkb2N0eXBlIGh0bWw+CjxodG1sIGxhbmc9InB0LUJSIj4KICA8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04IiAvPgogICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAsIHZpZXdwb3J0LWZpdD1jb3ZlciIgLz4KICAgIDxsaW5rIHJlbD0iaWNvbiIgdHlwZT0iaW1hZ2Uvc3ZnK3htbCIgaHJlZj0iL2Zhdmljb24uc3ZnIiAvPgogICAgPG1ldGEgbmFtZT0idGhlbWUtY29sb3IiIGNvbnRlbnQ9IiMwQjEwMjAiIC8+CiAgICA8bWV0YSBuYW1lPSJjb2xvci1zY2hlbWUiIGNvbnRlbnQ9ImRhcmsiIC8+CiAgICA8dGl0bGU+UmlmdERyaXZlPC90aXRsZT4KICAgIDxzY3JpcHQgdHlwZT0ibW9kdWxlIiBjcm9zc29yaWdpbiBzcmM9Ii9hc3NldHMvaW5kZXgtQjloSGZ6TE8uanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBjcm9zc29yaWdpbiBocmVmPSIvYXNzZXRzL2luZGV4LUNTUE5OSGNKLmNzcyI+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPGRpdiBpZD0icm9vdCI+PC9kaXY+CiAgPC9ib2R5Pgo8L2h0bWw+Cg==" }
37049
+ "/index.html": { type: "text/html; charset=utf-8", base64: "PCFkb2N0eXBlIGh0bWw+CjxodG1sIGxhbmc9InB0LUJSIj4KICA8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04IiAvPgogICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAsIHZpZXdwb3J0LWZpdD1jb3ZlciIgLz4KICAgIDxsaW5rIHJlbD0iaWNvbiIgdHlwZT0iaW1hZ2Uvc3ZnK3htbCIgaHJlZj0iL2Zhdmljb24uc3ZnIiAvPgogICAgPG1ldGEgbmFtZT0idGhlbWUtY29sb3IiIGNvbnRlbnQ9IiMwQjEwMjAiIC8+CiAgICA8bWV0YSBuYW1lPSJjb2xvci1zY2hlbWUiIGNvbnRlbnQ9ImRhcmsiIC8+CiAgICA8dGl0bGU+UmlmdERyaXZlPC90aXRsZT4KICAgIDxzY3JpcHQgdHlwZT0ibW9kdWxlIiBjcm9zc29yaWdpbiBzcmM9Ii9hc3NldHMvaW5kZXgtRFFNRFJ2c3EuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBjcm9zc29yaWdpbiBocmVmPSIvYXNzZXRzL2luZGV4LURNMHNQZmFLLmNzcyI+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPGRpdiBpZD0icm9vdCI+PC9kaXY+CiAgPC9ib2R5Pgo8L2h0bWw+Cg==" }
37050
37050
  };
37051
37051
 
37052
37052
  // server/src/db/index.ts
@@ -37300,7 +37300,8 @@ var t = {
37300
37300
  none: "Conecte uma conta do Google antes de analisar um link."
37301
37301
  },
37302
37302
  drive: {
37303
- myDrive: "Meu Drive"
37303
+ myDrive: "Meu Drive",
37304
+ invalidName: "D\xEA um nome para a pasta."
37304
37305
  },
37305
37306
  settings: {
37306
37307
  invalid: "Configura\xE7\xE3o inv\xE1lida: modo de cota (limit/unlimited), GB por dia (> 0), hora de renova\xE7\xE3o (0\u201323) ou destino padr\xE3o."
@@ -37677,6 +37678,8 @@ var isForbidden = (e) => e instanceof DriveError && e.status === 403 && ["forbid
37677
37678
  // server/src/drive/client.ts
37678
37679
  var FOLDER_MIME = "application/vnd.google-apps.folder";
37679
37680
  var SHORTCUT_MIME = "application/vnd.google-apps.shortcut";
37681
+ var FOLDERS_OR_SHORTCUTS = `(mimeType = '${FOLDER_MIME}' or mimeType = '${SHORTCUT_MIME}')`;
37682
+ var escapeQ = (s) => s.replace(/\\/g, "\\\\").replace(/'/g, "\\'");
37680
37683
  var isNativeGoogleMime = (m) => m.startsWith("application/vnd.google-apps.") && m !== FOLDER_MIME && m !== SHORTCUT_MIME;
37681
37684
  var FILE_FIELDS = "id,name,mimeType,size,md5Checksum,modifiedTime,trashed,parents,shortcutDetails,capabilities(canCopy,canDownload),owners(emailAddress,displayName)";
37682
37685
  var normalize = (raw) => ({
@@ -37773,6 +37776,16 @@ var DriveClient = class {
37773
37776
  listStarredFolders() {
37774
37777
  return this.listQuery(`starred = true and mimeType = '${FOLDER_MIME}' and trashed = false`);
37775
37778
  }
37779
+ // O que outras pessoas compartilharam com a conta, só o que dá para copiar:
37780
+ // pastas e atalhos (o alvo do atalho é conferido por quem lista).
37781
+ listSharedWithMe() {
37782
+ return this.listQuery(`sharedWithMe = true and trashed = false and ${FOLDERS_OR_SHORTCUTS}`);
37783
+ }
37784
+ // Busca pelo nome em toda a conta — Meu Drive, compartilhados, drives
37785
+ // compartilhados. Aspas e barras no termo são escapadas como a API exige.
37786
+ searchFolders(term) {
37787
+ return this.listQuery(`name contains '${escapeQ(term)}' and trashed = false and ${FOLDERS_OR_SHORTCUTS}`);
37788
+ }
37776
37789
  // Cópia servidor-a-servidor: o "rift". Os bytes nunca saem do Google.
37777
37790
  async copyFile(id, name, parentId) {
37778
37791
  const res = await this.request(`/drive/v3/files/${encodeURIComponent(id)}/copy`, {
@@ -37938,11 +37951,43 @@ var InspectionCache = class {
37938
37951
  const it = this.items.get(id);
37939
37952
  return it ? { result: it.result, tree: it.tree } : null;
37940
37953
  }
37954
+ // Só o destino mudou: o resultado é outro, a árvore e o id continuam os mesmos,
37955
+ // então a SPA não precisa remontar nada nem o job perder a leitura.
37956
+ update(id, result) {
37957
+ const it = this.items.get(id);
37958
+ if (!it) return false;
37959
+ it.result = result;
37960
+ return true;
37961
+ }
37941
37962
  sweep() {
37942
37963
  const cut = this.now() - this.ttlMs;
37943
37964
  for (const [k, v] of this.items) if (v.at < cut) this.items.delete(k);
37944
37965
  }
37945
37966
  };
37967
+ var InspectProgress = class {
37968
+ constructor(ttlMs = 15 * 6e4, now = Date.now) {
37969
+ this.ttlMs = ttlMs;
37970
+ this.now = now;
37971
+ }
37972
+ ttlMs;
37973
+ now;
37974
+ items = /* @__PURE__ */ new Map();
37975
+ set(token, filesSeen) {
37976
+ this.items.set(token, { filesSeen, at: this.now() });
37977
+ }
37978
+ get(token) {
37979
+ const it = this.items.get(token);
37980
+ if (!it) return null;
37981
+ if (it.at < this.now() - this.ttlMs) {
37982
+ this.items.delete(token);
37983
+ return null;
37984
+ }
37985
+ return it.filesSeen;
37986
+ }
37987
+ clear(token) {
37988
+ this.items.delete(token);
37989
+ }
37990
+ };
37946
37991
 
37947
37992
  // server/src/drive/tree.ts
37948
37993
  function uniqueName(used, name) {
@@ -38779,9 +38824,10 @@ function buildDeps(config2, db2, overrides = {}) {
38779
38824
  const quota = overrides.quota ?? new QuotaService(db2, settings);
38780
38825
  const clientFor = overrides.clientFor ?? ((accountId) => new DriveClient(accountId, accounts, fetchFn));
38781
38826
  const inspections = overrides.inspections ?? new InspectionCache();
38827
+ const inspectProgress = overrides.inspectProgress ?? new InspectProgress();
38782
38828
  const engine = overrides.engine ?? new JobEngine({ repo: jobsRepo, accountsRepo, clientFor, quota, log: (m) => console.log(`[motor] ${m}`) });
38783
38829
  const resync = overrides.resync ?? new ResyncService({ repo: jobsRepo, clientFor });
38784
- return { db: db2, settings, oauthClient, accountsRepo, accounts, login, jobsRepo, quota, clientFor, inspections, engine, resync, fetchFn, openBrowser: openBrowser2, aboutEmail };
38830
+ return { db: db2, settings, oauthClient, accountsRepo, accounts, login, jobsRepo, quota, clientFor, inspections, inspectProgress, engine, resync, fetchFn, openBrowser: openBrowser2, aboutEmail };
38785
38831
  }
38786
38832
 
38787
38833
  // server/src/app.ts
@@ -38946,8 +38992,7 @@ async function inspect(deps2, input) {
38946
38992
  const blockedBytes = blockedFiles.reduce((n, f) => n + f.size, 0);
38947
38993
  const copyableBytes = tree.totalBytes - blockedBytes;
38948
38994
  const dest = deps2.accounts.find((a) => a.id === input.destAccountId);
38949
- const siblings = await deps2.clientFor(dest.id).listChildren(input.destParentId);
38950
- const conflict = siblings.find((s) => s.mimeType === FOLDER_MIME && s.name === file.name);
38995
+ const conflict = await findConflict(deps2.clientFor(dest.id), input.destParentId, file.name);
38951
38996
  const result = {
38952
38997
  folderId: file.id,
38953
38998
  name: file.name,
@@ -38961,49 +39006,103 @@ async function inspect(deps2, input) {
38961
39006
  blocked: { count: blockedFiles.length, bytes: blockedBytes, sample: blockedFiles.slice(0, 20).map((f) => ({ name: f.name, relPath: f.relPath })) },
38962
39007
  native: { count: nativeOut.length },
38963
39008
  copyableBytes,
38964
- destConflict: conflict ? { existingFolderId: conflict.id } : null,
39009
+ destConflict: conflict,
38965
39010
  quota: deps2.quota.evaluate(dest.id, copyableBytes),
38966
39011
  shareRequestText: path2 === "machine" ? t.inspect.shareRequest(file.name, dest.email) : null
38967
39012
  };
38968
39013
  return { result, tree };
38969
39014
  }
39015
+ async function findConflict(client, parentId, name) {
39016
+ const siblings = await client.listChildren(parentId);
39017
+ const hit = siblings.find((s) => s.mimeType === FOLDER_MIME && s.name === name);
39018
+ return hit ? { existingFolderId: hit.id } : null;
39019
+ }
39020
+ async function reinspectDest(deps2, cached, destParentId) {
39021
+ const destConflict = await findConflict(deps2.clientFor(cached.destAccountId), destParentId, cached.name);
39022
+ return { ...cached, destConflict };
39023
+ }
38970
39024
 
38971
39025
  // server/src/routes/inspect.ts
38972
39026
  async function inspectRoutes(app2, opts) {
38973
- const { accountsRepo, settings, clientFor, quota, inspections } = opts.deps;
39027
+ const { accountsRepo, settings, clientFor, quota, inspections, inspectProgress } = opts.deps;
39028
+ const sendError = (reply, err) => {
39029
+ if (err instanceof InspectError) return reply.code(400).send({ error: err.message, code: err.code });
39030
+ if (isAuthExpired(err)) return reply.code(503).send({ error: t.jobs.auth, code: "auth" });
39031
+ return reply.code(500).send({ error: err instanceof Error ? err.message : String(err) });
39032
+ };
38974
39033
  app2.post("/api/inspect", async (req, reply) => {
38975
- const link = (req.body?.link ?? "").trim();
38976
- if (!link) return reply.code(400).send({ error: t.inspect.invalidLink, code: "invalid_link" });
38977
39034
  const dest = (req.body?.destAccountId ? accountsRepo.get(req.body.destAccountId) : null) ?? accountsRepo.defaultDest();
38978
39035
  if (!dest) return reply.code(400).send({ error: t.accounts.none, code: "no_accounts" });
38979
39036
  const dd = settings.defaultDest();
38980
39037
  const destParentId = req.body?.destParentId || (dd?.accountId === dest.id ? dd.folderId : "root");
38981
39038
  const destParentName = req.body?.destParentName || (dd?.accountId === dest.id ? dd.folderName : t.drive.myDrive);
39039
+ const previousId = req.body?.inspectionId;
39040
+ const cached = previousId ? inspections.get(previousId) : null;
39041
+ if (previousId && cached && cached.result.destAccountId === dest.id) {
39042
+ try {
39043
+ const result = await reinspectDest({ clientFor }, cached.result, destParentId);
39044
+ inspections.update(previousId, result);
39045
+ return { inspectionId: previousId, destParentId, destParentName, ...result };
39046
+ } catch (err) {
39047
+ return sendError(reply, err);
39048
+ }
39049
+ }
39050
+ const link = (req.body?.link ?? "").trim();
39051
+ if (!link) return reply.code(400).send({ error: t.inspect.invalidLink, code: "invalid_link" });
39052
+ const token = req.body?.progressToken;
39053
+ if (token) inspectProgress.set(token, 0);
39054
+ const onProgress = token ? (n) => inspectProgress.set(token, n) : void 0;
38982
39055
  try {
38983
- const { result, tree } = await inspect({ clientFor, accounts: accountsRepo.list(), quota }, { link, destAccountId: dest.id, destParentId, destParentName });
39056
+ const { result, tree } = await inspect({ clientFor, accounts: accountsRepo.list(), quota, onProgress }, { link, destAccountId: dest.id, destParentId, destParentName });
38984
39057
  const inspectionId = inspections.put(result, tree);
38985
39058
  return { inspectionId, destParentId, destParentName, ...result };
38986
39059
  } catch (err) {
38987
- if (err instanceof InspectError) return reply.code(400).send({ error: err.message, code: err.code });
38988
- if (isAuthExpired(err)) return reply.code(503).send({ error: t.jobs.auth, code: "auth" });
38989
- return reply.code(500).send({ error: err instanceof Error ? err.message : String(err) });
39060
+ return sendError(reply, err);
39061
+ } finally {
39062
+ if (token) inspectProgress.clear(token);
38990
39063
  }
38991
39064
  });
39065
+ app2.get("/api/inspect/progress", async (req, reply) => {
39066
+ const filesSeen = req.query.token ? inspectProgress.get(req.query.token) : null;
39067
+ if (filesSeen === null) return reply.code(404).send({ error: "not_found" });
39068
+ return { filesSeen };
39069
+ });
38992
39070
  app2.get("/api/drive/folders", async (req, reply) => {
38993
39071
  const acc = (req.query.accountId ? accountsRepo.get(req.query.accountId) : null) ?? (req.query.accountId ? null : accountsRepo.defaultDest());
38994
39072
  if (!acc) return reply.code(404).send({ error: t.accounts.notFound });
38995
39073
  const parentId = req.query.parentId || "root";
39074
+ const term = (req.query.q ?? "").trim();
38996
39075
  try {
38997
39076
  const client = clientFor(acc.id);
38998
- const kids = parentId === "starred" ? await client.listStarredFolders() : await client.listChildren(parentId);
38999
- const folders = kids.filter((k) => k.mimeType === FOLDER_MIME).sort((a, b) => a.name.localeCompare(b.name)).map((k) => ({ id: k.id, name: k.name }));
39000
- return { folders };
39077
+ const kids = term ? await client.searchFolders(term) : parentId === "starred" ? await client.listStarredFolders() : parentId === "shared" ? await client.listSharedWithMe() : await client.listChildren(parentId);
39078
+ return { folders: toFolderRows(kids) };
39079
+ } catch (err) {
39080
+ if (isAuthExpired(err)) return reply.code(503).send({ error: t.jobs.auth, code: "auth" });
39081
+ return reply.code(502).send({ error: err instanceof Error ? err.message : String(err) });
39082
+ }
39083
+ });
39084
+ app2.post("/api/drive/folders", async (req, reply) => {
39085
+ const acc = (req.body?.accountId ? accountsRepo.get(req.body.accountId) : null) ?? (req.body?.accountId ? null : accountsRepo.defaultDest());
39086
+ if (!acc) return reply.code(404).send({ error: t.accounts.notFound });
39087
+ const name = (req.body?.name ?? "").trim();
39088
+ if (!name) return reply.code(400).send({ error: t.drive.invalidName, code: "invalid_name" });
39089
+ try {
39090
+ const created = await clientFor(acc.id).createFolder(name, req.body?.parentId || "root");
39091
+ return { folder: { id: created.id, name: created.name } };
39001
39092
  } catch (err) {
39002
39093
  if (isAuthExpired(err)) return reply.code(503).send({ error: t.jobs.auth, code: "auth" });
39003
39094
  return reply.code(502).send({ error: err instanceof Error ? err.message : String(err) });
39004
39095
  }
39005
39096
  });
39006
39097
  }
39098
+ function toFolderRows(kids) {
39099
+ const rows = [];
39100
+ for (const k of kids) {
39101
+ if (k.mimeType === FOLDER_MIME) rows.push({ id: k.id, name: k.name });
39102
+ else if (k.mimeType === SHORTCUT_MIME && k.shortcutDetails?.targetMimeType === FOLDER_MIME) rows.push({ id: k.shortcutDetails.targetId, name: k.name, shortcut: true });
39103
+ }
39104
+ return rows.sort((a, b) => a.name.localeCompare(b.name));
39105
+ }
39007
39106
 
39008
39107
  // server/src/jobs/inventory.ts
39009
39108
  function initialStatus(entry, path2) {