opmsec 0.1.3 → 0.1.5

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.
Files changed (166) hide show
  1. package/.env.example +1 -0
  2. package/.husky/pre-commit +1 -0
  3. package/README.md +71 -275
  4. package/bun.lock +5 -5
  5. package/docs/architecture/agents.mdx +11 -59
  6. package/docs/architecture/benchmarks.mdx +20 -46
  7. package/docs/architecture/overview.mdx +31 -38
  8. package/docs/architecture/scanner.mdx +11 -37
  9. package/docs/cli/audit.mdx +9 -12
  10. package/docs/cli/check.mdx +12 -26
  11. package/docs/cli/fix.mdx +10 -30
  12. package/docs/cli/info.mdx +12 -19
  13. package/docs/cli/install.mdx +27 -39
  14. package/docs/cli/push.mdx +40 -57
  15. package/docs/cli/register-agent.mdx +21 -53
  16. package/docs/cli/view.mdx +12 -29
  17. package/docs/concepts/ens-records.mdx +44 -0
  18. package/docs/concepts/multi-agent-consensus.mdx +18 -36
  19. package/docs/concepts/on-chain-registry.mdx +22 -49
  20. package/docs/concepts/security-model.mdx +20 -52
  21. package/docs/concepts/zk-agent-verification.mdx +26 -64
  22. package/docs/contract/events.mdx +13 -74
  23. package/docs/contract/functions.mdx +40 -126
  24. package/docs/contract/overview.mdx +17 -36
  25. package/docs/introduction.mdx +22 -25
  26. package/docs/mint.json +3 -2
  27. package/docs/quickstart.mdx +34 -70
  28. package/docs/system-design.png +0 -0
  29. package/package.json +7 -6
  30. package/packages/cli/src/commands/author-view.tsx +87 -2
  31. package/packages/cli/src/commands/check.tsx +18 -5
  32. package/packages/cli/src/commands/fix.tsx +25 -12
  33. package/packages/cli/src/commands/info.tsx +92 -4
  34. package/packages/cli/src/commands/install.tsx +327 -23
  35. package/packages/cli/src/commands/push.tsx +112 -0
  36. package/packages/cli/src/commands/register-agent.tsx +72 -31
  37. package/packages/cli/src/index.tsx +7 -5
  38. package/packages/cli/src/services/ens-records.ts +525 -0
  39. package/packages/cli/src/services/version.ts +156 -5
  40. package/packages/core/src/benchmarks.ts +116 -0
  41. package/packages/core/src/constants.ts +18 -6
  42. package/packages/core/src/model-rankings.ts +40 -15
  43. package/packages/core/src/types.ts +10 -0
  44. package/packages/core/src/utils.ts +136 -1
  45. package/packages/scanner/src/index.ts +2 -1
  46. package/packages/scanner/src/queue/memory-queue.ts +7 -2
  47. package/packages/scanner/src/services/benchmark-runner.ts +86 -1
  48. package/packages/scanner/src/services/fileverse.ts +61 -12
  49. package/packages/scanner/src/services/openrouter.ts +18 -7
  50. package/packages/web/.next/BUILD_ID +1 -0
  51. package/packages/web/.next/app-path-routes-manifest.json +4 -0
  52. package/packages/web/.next/diagnostics/build-diagnostics.json +6 -0
  53. package/packages/web/.next/diagnostics/framework.json +1 -0
  54. package/packages/web/.next/export-marker.json +6 -0
  55. package/packages/web/.next/images-manifest.json +58 -0
  56. package/packages/web/.next/next-minimal-server.js.nft.json +1 -0
  57. package/packages/web/.next/next-server.js.nft.json +1 -0
  58. package/packages/web/.next/prerender-manifest.json +54 -4
  59. package/packages/web/.next/required-server-files.json +320 -0
  60. package/packages/web/.next/routes-manifest.json +53 -1
  61. package/packages/web/.next/server/app/_not-found/page.js +2 -0
  62. package/packages/web/.next/server/app/_not-found/page.js.nft.json +1 -0
  63. package/packages/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -0
  64. package/packages/web/.next/server/app/_not-found.html +1 -0
  65. package/packages/web/.next/server/app/_not-found.meta +8 -0
  66. package/packages/web/.next/server/app/_not-found.rsc +18 -0
  67. package/packages/web/.next/server/app/index.html +6 -0
  68. package/packages/web/.next/server/app/index.meta +7 -0
  69. package/packages/web/.next/server/app/index.rsc +22 -0
  70. package/packages/web/.next/server/app/page.js +24 -24
  71. package/packages/web/.next/server/app/page.js.nft.json +1 -0
  72. package/packages/web/.next/server/app/page_client-reference-manifest.js +1 -1
  73. package/packages/web/.next/server/chunks/611.js +6 -0
  74. package/packages/web/.next/server/chunks/778.js +30 -0
  75. package/packages/web/.next/server/functions-config-manifest.json +4 -0
  76. package/packages/web/.next/server/interception-route-rewrite-manifest.js +1 -1
  77. package/packages/web/.next/server/next-font-manifest.js +1 -1
  78. package/packages/web/.next/server/next-font-manifest.json +1 -1
  79. package/packages/web/.next/server/pages/404.html +1 -0
  80. package/packages/web/.next/server/pages/500.html +1 -0
  81. package/packages/web/.next/server/pages/_app.js +1 -0
  82. package/packages/web/.next/server/pages/_app.js.nft.json +1 -0
  83. package/packages/web/.next/server/pages/_document.js +1 -0
  84. package/packages/web/.next/server/pages/_document.js.nft.json +1 -0
  85. package/packages/web/.next/server/pages/_error.js +19 -0
  86. package/packages/web/.next/server/pages/_error.js.nft.json +1 -0
  87. package/packages/web/.next/server/webpack-runtime.js +2 -2
  88. package/packages/web/.next/static/0esGzFBCzREfVwijEGDfL/_buildManifest.js +1 -0
  89. package/packages/web/.next/static/0esGzFBCzREfVwijEGDfL/_ssgManifest.js +1 -0
  90. package/packages/web/.next/static/chunks/174-5b5efcb3b8efcc01.js +1 -0
  91. package/packages/web/.next/static/chunks/255-0dc49b7a6e8e5c05.js +1 -0
  92. package/packages/web/.next/static/chunks/4bd1b696-382748cc942d8a14.js +1 -0
  93. package/packages/web/.next/static/chunks/app/_not-found/page-0da542be7eb33a64.js +1 -0
  94. package/packages/web/.next/static/chunks/app/layout-de8e841104500505.js +1 -0
  95. package/packages/web/.next/static/chunks/app/layout.js +37 -7
  96. package/packages/web/.next/static/chunks/app/page-7e086379698b9fb0.js +1 -0
  97. package/packages/web/.next/static/chunks/app/page.js +297 -1
  98. package/packages/web/.next/static/chunks/framework-ac73abd125e371fe.js +1 -0
  99. package/packages/web/.next/static/chunks/main-4e8d71b5ef7ee7e3.js +1 -0
  100. package/packages/web/.next/static/chunks/main-app-dd261207182e5a23.js +1 -0
  101. package/packages/web/.next/static/chunks/pages/_app-7d307437aca18ad4.js +1 -0
  102. package/packages/web/.next/static/chunks/pages/_error-cb2a52f75f2162e2.js +1 -0
  103. package/packages/web/.next/static/chunks/webpack-0dcd67569eb46132.js +1 -0
  104. package/packages/web/.next/static/chunks/webpack.js +2 -2
  105. package/packages/web/.next/static/css/102562cf2d0ae9b0.css +3 -0
  106. package/packages/web/.next/static/media/4cf2300e9c8272f7-s.p.woff2 +0 -0
  107. package/packages/web/.next/static/media/747892c23ea88013-s.woff2 +0 -0
  108. package/packages/web/.next/static/media/8d697b304b401681-s.woff2 +0 -0
  109. package/packages/web/.next/static/media/93f479601ee12b01-s.p.woff2 +0 -0
  110. package/packages/web/.next/static/media/9610d9e46709d722-s.woff2 +0 -0
  111. package/packages/web/.next/static/media/ba015fad6dcf6784-s.woff2 +0 -0
  112. package/packages/web/.next/static/webpack/16f18baa938a434c.webpack.hot-update.json +1 -0
  113. package/packages/web/.next/static/webpack/5fe9fe8578f9c3d2.webpack.hot-update.json +1 -0
  114. package/packages/web/.next/static/webpack/73c7d02260cc80e4.webpack.hot-update.json +1 -0
  115. package/packages/web/.next/static/webpack/a2d85d19aa028de1.webpack.hot-update.json +1 -0
  116. package/packages/web/.next/static/webpack/app/{layout.73e341375c8d429e.hot-update.js → layout.16f18baa938a434c.hot-update.js} +1 -1
  117. package/packages/web/.next/static/webpack/app/{layout.6fee6306e0f98869.hot-update.js → layout.5fe9fe8578f9c3d2.hot-update.js} +1 -1
  118. package/packages/web/.next/static/webpack/app/layout.653e365406c0d9ac.hot-update.js +22 -0
  119. package/packages/web/.next/static/webpack/app/layout.6800169a899e3a8b.hot-update.js +22 -0
  120. package/packages/web/.next/static/webpack/app/layout.73c7d02260cc80e4.hot-update.js +22 -0
  121. package/packages/web/.next/static/webpack/app/layout.a2d85d19aa028de1.hot-update.js +22 -0
  122. package/packages/web/.next/static/webpack/app/page.653e365406c0d9ac.hot-update.js +22 -0
  123. package/packages/web/.next/static/webpack/app/page.6800169a899e3a8b.hot-update.js +22 -0
  124. package/packages/web/.next/static/webpack/app/page.73c7d02260cc80e4.hot-update.js +22 -0
  125. package/packages/web/.next/static/webpack/app/page.a2d85d19aa028de1.hot-update.js +22 -0
  126. package/packages/web/.next/static/webpack/{webpack.6fee6306e0f98869.hot-update.js → webpack.16f18baa938a434c.hot-update.js} +2 -2
  127. package/packages/web/.next/static/webpack/{webpack.73e341375c8d429e.hot-update.js → webpack.5fe9fe8578f9c3d2.hot-update.js} +2 -2
  128. package/packages/web/.next/static/webpack/webpack.653e365406c0d9ac.hot-update.js +12 -0
  129. package/packages/web/.next/static/webpack/webpack.6800169a899e3a8b.hot-update.js +12 -0
  130. package/packages/web/.next/static/webpack/webpack.73c7d02260cc80e4.hot-update.js +12 -0
  131. package/packages/web/.next/static/webpack/webpack.a2d85d19aa028de1.hot-update.js +12 -0
  132. package/packages/web/.next/trace +2 -5
  133. package/packages/web/app/globals.css +197 -51
  134. package/packages/web/app/layout.tsx +6 -3
  135. package/packages/web/app/page.tsx +791 -309
  136. package/packages/web/bun.lock +66 -105
  137. package/packages/web/next.config.ts +8 -1
  138. package/packages/web/package.json +5 -2
  139. package/packages/web/postcss.config.mjs +2 -2
  140. package/packages/web/public/apple-icon.png +1 -0
  141. package/packages/web/public/dependency-bottleneck.png +0 -0
  142. package/packages/web/public/icon-dark-32x32.png +1 -0
  143. package/packages/web/public/icon-light-32x32.png +1 -0
  144. package/packages/web/public/icon.svg +1 -0
  145. package/packages/web/public/nextjs-cve-announcement.png +0 -0
  146. package/packages/web/public/phantomraven-npm-attack.png +0 -0
  147. package/packages/web/public/placeholder-logo.png +1 -0
  148. package/packages/web/public/placeholder-logo.svg +1 -0
  149. package/packages/web/public/placeholder-user.jpg +1 -0
  150. package/packages/web/public/placeholder.jpg +1 -0
  151. package/packages/web/public/placeholder.svg +1 -0
  152. package/packages/web/public/react-cve-meme.png +0 -0
  153. package/packages/web/public/wallet-drain-exploit.png +0 -0
  154. package/packages/web/styles/globals.css +125 -0
  155. package/packages/web/.next/server/vendor-chunks/@swc.js +0 -55
  156. package/packages/web/.next/server/vendor-chunks/next.js +0 -3010
  157. package/packages/web/.next/static/chunks/app-pages-internals.js +0 -182
  158. package/packages/web/.next/static/chunks/main-app.js +0 -1882
  159. package/packages/web/.next/static/css/app/layout.css +0 -1237
  160. package/packages/web/.next/static/webpack/633457081244afec._.hot-update.json +0 -1
  161. package/packages/web/.next/static/webpack/app/page.6fee6306e0f98869.hot-update.js +0 -22
  162. package/packages/web/.next/static/webpack/app/page.73e341375c8d429e.hot-update.js +0 -22
  163. package/packages/web/tailwind.config.ts +0 -48
  164. /package/packages/web/.next/static/chunks/{polyfills.js → polyfills-42372ed130431b0a.js} +0 -0
  165. /package/packages/web/.next/static/webpack/{6fee6306e0f98869.webpack.hot-update.json → 653e365406c0d9ac.webpack.hot-update.json} +0 -0
  166. /package/packages/web/.next/static/webpack/{73e341375c8d429e.webpack.hot-update.json → 6800169a899e3a8b.webpack.hot-update.json} +0 -0
@@ -19,7 +19,7 @@ exports.modules = {
19
19
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
20
20
 
21
21
  "use strict";
22
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (\"14618c782b46\");\nif (false) {}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9hcHAvZ2xvYmFscy5jc3MiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLGlFQUFlLGNBQWM7QUFDN0IsSUFBSSxLQUFVLEVBQUUsRUFBdUIiLCJzb3VyY2VzIjpbIi9Vc2Vycy9kaGFuYW5qYXlwYWkvQ29kaW5nL1BlcnNvbmFsL29wbS9wYWNrYWdlcy93ZWIvYXBwL2dsb2JhbHMuY3NzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IFwiMTQ2MThjNzgyYjQ2XCJcbmlmIChtb2R1bGUuaG90KSB7IG1vZHVsZS5ob3QuYWNjZXB0KCkgfVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./app/globals.css\n");
22
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (\"29eea9e6ad37\");\nif (false) {}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9hcHAvZ2xvYmFscy5jc3MiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLGlFQUFlLGNBQWM7QUFDN0IsSUFBSSxLQUFVLEVBQUUsRUFBdUIiLCJzb3VyY2VzIjpbIi9Vc2Vycy9kaGFuYW5qYXlwYWkvQ29kaW5nL1BlcnNvbmFsL29wbS9wYWNrYWdlcy93ZWIvYXBwL2dsb2JhbHMuY3NzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IFwiMjllZWE5ZTZhZDM3XCJcbmlmIChtb2R1bGUuaG90KSB7IG1vZHVsZS5ob3QuYWNjZXB0KCkgfVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./app/globals.css\n");
23
23
 
24
24
  /***/ }),
25
25
 
@@ -30,7 +30,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
30
30
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
31
31
 
32
32
  "use strict";
33
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ RootLayout),\n/* harmony export */ metadata: () => (/* binding */ metadata)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _globals_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./globals.css */ \"(rsc)/./app/globals.css\");\n\n\nconst metadata = {\n title: 'OPM | On-chain Package Manager',\n description: 'Cryptographically signed, AI-audited, on-chain verified package security for the npm ecosystem.',\n icons: {\n icon: '/favicon.svg'\n },\n openGraph: {\n title: 'OPM | On-chain Package Manager',\n description: 'Cryptographically signed, AI-audited, on-chain verified package security.',\n type: 'website'\n }\n};\nfunction RootLayout({ children }) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"html\", {\n lang: \"en\",\n className: \"dark\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"body\", {\n className: \"bg-bg text-accent antialiased\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"noise-overlay\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/layout.tsx\",\n lineNumber: 21,\n columnNumber: 9\n }, this),\n children\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/layout.tsx\",\n lineNumber: 20,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/layout.tsx\",\n lineNumber: 19,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9hcHAvbGF5b3V0LnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFDdUI7QUFFaEIsTUFBTUEsV0FBcUI7SUFDaENDLE9BQU87SUFDUEMsYUFBYTtJQUNiQyxPQUFPO1FBQ0xDLE1BQU07SUFDUjtJQUNBQyxXQUFXO1FBQ1RKLE9BQU87UUFDUEMsYUFBYTtRQUNiSSxNQUFNO0lBQ1I7QUFDRixFQUFFO0FBRWEsU0FBU0MsV0FBVyxFQUFFQyxRQUFRLEVBQWlDO0lBQzVFLHFCQUNFLDhEQUFDQztRQUFLQyxNQUFLO1FBQUtDLFdBQVU7a0JBQ3hCLDRFQUFDQztZQUFLRCxXQUFVOzs4QkFDZCw4REFBQ0U7b0JBQUlGLFdBQVU7Ozs7OztnQkFDZEg7Ozs7Ozs7Ozs7OztBQUlUIiwic291cmNlcyI6WyIvVXNlcnMvZGhhbmFuamF5cGFpL0NvZGluZy9QZXJzb25hbC9vcG0vcGFja2FnZXMvd2ViL2FwcC9sYXlvdXQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTWV0YWRhdGEgfSBmcm9tICduZXh0JztcbmltcG9ydCAnLi9nbG9iYWxzLmNzcyc7XG5cbmV4cG9ydCBjb25zdCBtZXRhZGF0YTogTWV0YWRhdGEgPSB7XG4gIHRpdGxlOiAnT1BNIHwgT24tY2hhaW4gUGFja2FnZSBNYW5hZ2VyJyxcbiAgZGVzY3JpcHRpb246ICdDcnlwdG9ncmFwaGljYWxseSBzaWduZWQsIEFJLWF1ZGl0ZWQsIG9uLWNoYWluIHZlcmlmaWVkIHBhY2thZ2Ugc2VjdXJpdHkgZm9yIHRoZSBucG0gZWNvc3lzdGVtLicsXG4gIGljb25zOiB7XG4gICAgaWNvbjogJy9mYXZpY29uLnN2ZycsXG4gIH0sXG4gIG9wZW5HcmFwaDoge1xuICAgIHRpdGxlOiAnT1BNIHwgT24tY2hhaW4gUGFja2FnZSBNYW5hZ2VyJyxcbiAgICBkZXNjcmlwdGlvbjogJ0NyeXB0b2dyYXBoaWNhbGx5IHNpZ25lZCwgQUktYXVkaXRlZCwgb24tY2hhaW4gdmVyaWZpZWQgcGFja2FnZSBzZWN1cml0eS4nLFxuICAgIHR5cGU6ICd3ZWJzaXRlJyxcbiAgfSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFJvb3RMYXlvdXQoeyBjaGlsZHJlbiB9OiB7IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGUgfSkge1xuICByZXR1cm4gKFxuICAgIDxodG1sIGxhbmc9XCJlblwiIGNsYXNzTmFtZT1cImRhcmtcIj5cbiAgICAgIDxib2R5IGNsYXNzTmFtZT1cImJnLWJnIHRleHQtYWNjZW50IGFudGlhbGlhc2VkXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibm9pc2Utb3ZlcmxheVwiIC8+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvYm9keT5cbiAgICA8L2h0bWw+XG4gICk7XG59XG4iXSwibmFtZXMiOlsibWV0YWRhdGEiLCJ0aXRsZSIsImRlc2NyaXB0aW9uIiwiaWNvbnMiLCJpY29uIiwib3BlbkdyYXBoIiwidHlwZSIsIlJvb3RMYXlvdXQiLCJjaGlsZHJlbiIsImh0bWwiLCJsYW5nIiwiY2xhc3NOYW1lIiwiYm9keSIsImRpdiJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./app/layout.tsx\n");
33
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ RootLayout),\n/* harmony export */ metadata: () => (/* binding */ metadata)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(rsc)/./node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _globals_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./globals.css */ \"(rsc)/./app/globals.css\");\n\n\n\n\nconst metadata = {\n title: 'OPM | On-chain Package Manager',\n description: 'Cryptographically signed, AI-audited, on-chain verified package security for the npm ecosystem.',\n icons: {\n icon: '/favicon.svg'\n },\n openGraph: {\n title: 'OPM | On-chain Package Manager',\n description: 'Cryptographically signed, AI-audited, on-chain verified package security.',\n type: 'website'\n }\n};\nfunction RootLayout({ children }) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"html\", {\n lang: \"en\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"body\", {\n className: \"font-sans antialiased\",\n children: children\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/layout.tsx\",\n lineNumber: 24,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/layout.tsx\",\n lineNumber: 23,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9hcHAvbGF5b3V0LnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFJTUE7QUFDQUM7QUFIaUI7QUFLaEIsTUFBTUMsV0FBcUI7SUFDaENDLE9BQU87SUFDUEMsYUFBYTtJQUNiQyxPQUFPO1FBQ0xDLE1BQU07SUFDUjtJQUNBQyxXQUFXO1FBQ1RKLE9BQU87UUFDUEMsYUFBYTtRQUNiSSxNQUFNO0lBQ1I7QUFDRixFQUFFO0FBRWEsU0FBU0MsV0FBVyxFQUFFQyxRQUFRLEVBQWlDO0lBQzVFLHFCQUNFLDhEQUFDQztRQUFLQyxNQUFLO2tCQUNULDRFQUFDQztZQUFLQyxXQUFVO3NCQUNiSjs7Ozs7Ozs7Ozs7QUFJVCIsInNvdXJjZXMiOlsiL1VzZXJzL2RoYW5hbmpheXBhaS9Db2RpbmcvUGVyc29uYWwvb3BtL3BhY2thZ2VzL3dlYi9hcHAvbGF5b3V0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IE1ldGFkYXRhIH0gZnJvbSAnbmV4dCc7XG5pbXBvcnQgeyBHZWlzdCwgR2Vpc3RfTW9ubyB9IGZyb20gJ25leHQvZm9udC9nb29nbGUnO1xuaW1wb3J0ICcuL2dsb2JhbHMuY3NzJztcblxuY29uc3QgX2dlaXN0ID0gR2Vpc3QoeyBzdWJzZXRzOiBbJ2xhdGluJ10gfSk7XG5jb25zdCBfZ2Vpc3RNb25vID0gR2Vpc3RfTW9ubyh7IHN1YnNldHM6IFsnbGF0aW4nXSB9KTtcblxuZXhwb3J0IGNvbnN0IG1ldGFkYXRhOiBNZXRhZGF0YSA9IHtcbiAgdGl0bGU6ICdPUE0gfCBPbi1jaGFpbiBQYWNrYWdlIE1hbmFnZXInLFxuICBkZXNjcmlwdGlvbjogJ0NyeXB0b2dyYXBoaWNhbGx5IHNpZ25lZCwgQUktYXVkaXRlZCwgb24tY2hhaW4gdmVyaWZpZWQgcGFja2FnZSBzZWN1cml0eSBmb3IgdGhlIG5wbSBlY29zeXN0ZW0uJyxcbiAgaWNvbnM6IHtcbiAgICBpY29uOiAnL2Zhdmljb24uc3ZnJyxcbiAgfSxcbiAgb3BlbkdyYXBoOiB7XG4gICAgdGl0bGU6ICdPUE0gfCBPbi1jaGFpbiBQYWNrYWdlIE1hbmFnZXInLFxuICAgIGRlc2NyaXB0aW9uOiAnQ3J5cHRvZ3JhcGhpY2FsbHkgc2lnbmVkLCBBSS1hdWRpdGVkLCBvbi1jaGFpbiB2ZXJpZmllZCBwYWNrYWdlIHNlY3VyaXR5LicsXG4gICAgdHlwZTogJ3dlYnNpdGUnLFxuICB9LFxufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUm9vdExheW91dCh7IGNoaWxkcmVuIH06IHsgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZSB9KSB7XG4gIHJldHVybiAoXG4gICAgPGh0bWwgbGFuZz1cImVuXCI+XG4gICAgICA8Ym9keSBjbGFzc05hbWU9XCJmb250LXNhbnMgYW50aWFsaWFzZWRcIj5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9ib2R5PlxuICAgIDwvaHRtbD5cbiAgKTtcbn1cbiJdLCJuYW1lcyI6WyJfZ2Vpc3QiLCJfZ2Vpc3RNb25vIiwibWV0YWRhdGEiLCJ0aXRsZSIsImRlc2NyaXB0aW9uIiwiaWNvbnMiLCJpY29uIiwib3BlbkdyYXBoIiwidHlwZSIsIlJvb3RMYXlvdXQiLCJjaGlsZHJlbiIsImh0bWwiLCJsYW5nIiwiYm9keSIsImNsYXNzTmFtZSJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./app/layout.tsx\n");
34
34
 
35
35
  /***/ }),
36
36
 
@@ -54,16 +54,6 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
54
54
  "use strict";
55
55
  eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ GlobalError: () => (/* reexport default from dynamic */ next_dist_client_components_builtin_global_error_js__WEBPACK_IMPORTED_MODULE_25___default.a),\n/* harmony export */ __next_app__: () => (/* binding */ __next_app__),\n/* harmony export */ handler: () => (/* binding */ handler),\n/* harmony export */ pages: () => (/* binding */ pages),\n/* harmony export */ routeModule: () => (/* binding */ routeModule),\n/* harmony export */ tree: () => (/* binding */ tree)\n/* harmony export */ });\n/* harmony import */ var next_dist_server_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/server/route-modules/app-page/module.compiled */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/module.compiled.js?6a4d\");\n/* harmony import */ var next_dist_server_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var next_dist_server_route_kind__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/dist/server/route-kind */ \"(rsc)/./node_modules/next/dist/server/route-kind.js\");\n/* harmony import */ var next_dist_server_instrumentation_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/dist/server/instrumentation/utils */ \"(rsc)/./node_modules/next/dist/server/instrumentation/utils.js\");\n/* harmony import */ var next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/dist/server/lib/trace/tracer */ \"(rsc)/./node_modules/next/dist/server/lib/trace/tracer.js\");\n/* harmony import */ var next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! next/dist/server/request-meta */ \"(rsc)/./node_modules/next/dist/server/request-meta.js\");\n/* harmony import */ var next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! next/dist/server/lib/trace/constants */ \"(rsc)/./node_modules/next/dist/server/lib/trace/constants.js\");\n/* harmony import */ var next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var next_dist_server_app_render_interop_default__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! next/dist/server/app-render/interop-default */ \"(rsc)/./node_modules/next/dist/server/app-render/interop-default.js\");\n/* harmony import */ var next_dist_server_app_render_strip_flight_headers__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! next/dist/server/app-render/strip-flight-headers */ \"(rsc)/./node_modules/next/dist/server/app-render/strip-flight-headers.js\");\n/* harmony import */ var next_dist_server_base_http_node__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! next/dist/server/base-http/node */ \"(rsc)/./node_modules/next/dist/server/base-http/node.js\");\n/* harmony import */ var next_dist_server_base_http_node__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_base_http_node__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var next_dist_server_lib_experimental_ppr__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! next/dist/server/lib/experimental/ppr */ \"(rsc)/./node_modules/next/dist/server/lib/experimental/ppr.js\");\n/* harmony import */ var next_dist_server_lib_experimental_ppr__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_experimental_ppr__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var next_dist_server_request_fallback_params__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! next/dist/server/request/fallback-params */ \"(rsc)/./node_modules/next/dist/server/request/fallback-params.js\");\n/* harmony import */ var next_dist_server_app_render_encryption_utils__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! next/dist/server/app-render/encryption-utils */ \"(rsc)/./node_modules/next/dist/server/app-render/encryption-utils.js\");\n/* harmony import */ var next_dist_server_app_render_encryption_utils__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_app_render_encryption_utils__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var next_dist_server_lib_streaming_metadata__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! next/dist/server/lib/streaming-metadata */ \"(rsc)/./node_modules/next/dist/server/lib/streaming-metadata.js\");\n/* harmony import */ var next_dist_server_lib_streaming_metadata__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_streaming_metadata__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var next_dist_server_app_render_action_utils__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! next/dist/server/app-render/action-utils */ \"(rsc)/./node_modules/next/dist/server/app-render/action-utils.js\");\n/* harmony import */ var next_dist_server_app_render_action_utils__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_app_render_action_utils__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var next_dist_shared_lib_router_utils_app_paths__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! next/dist/shared/lib/router/utils/app-paths */ \"next/dist/shared/lib/router/utils/app-paths\");\n/* harmony import */ var next_dist_shared_lib_router_utils_app_paths__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(next_dist_shared_lib_router_utils_app_paths__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var next_dist_server_lib_server_action_request_meta__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! next/dist/server/lib/server-action-request-meta */ \"(rsc)/./node_modules/next/dist/server/lib/server-action-request-meta.js\");\n/* harmony import */ var next_dist_server_lib_server_action_request_meta__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_lib_server_action_request_meta__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! next/dist/client/components/app-router-headers */ \"(rsc)/./node_modules/next/dist/client/components/app-router-headers.js\");\n/* harmony import */ var next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var next_dist_shared_lib_router_utils_is_bot__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! next/dist/shared/lib/router/utils/is-bot */ \"next/dist/shared/lib/router/utils/is-bot\");\n/* harmony import */ var next_dist_shared_lib_router_utils_is_bot__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(next_dist_shared_lib_router_utils_is_bot__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! next/dist/server/response-cache */ \"(rsc)/./node_modules/next/dist/server/response-cache/index.js\");\n/* harmony import */ var next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_18__);\n/* harmony import */ var next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! next/dist/lib/fallback */ \"(rsc)/./node_modules/next/dist/lib/fallback.js\");\n/* harmony import */ var next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__);\n/* harmony import */ var next_dist_server_render_result__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! next/dist/server/render-result */ \"(rsc)/./node_modules/next/dist/server/render-result.js\");\n/* harmony import */ var next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! next/dist/lib/constants */ \"(rsc)/./node_modules/next/dist/lib/constants.js\");\n/* harmony import */ var next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__);\n/* harmony import */ var next_dist_server_stream_utils_encoded_tags__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! next/dist/server/stream-utils/encoded-tags */ \"(rsc)/./node_modules/next/dist/server/stream-utils/encoded-tags.js\");\n/* harmony import */ var next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! next/dist/server/send-payload */ \"(rsc)/./node_modules/next/dist/server/send-payload.js\");\n/* harmony import */ var next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__);\n/* harmony import */ var next_dist_shared_lib_no_fallback_error_external__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! next/dist/shared/lib/no-fallback-error.external */ \"next/dist/shared/lib/no-fallback-error.external\");\n/* harmony import */ var next_dist_shared_lib_no_fallback_error_external__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(next_dist_shared_lib_no_fallback_error_external__WEBPACK_IMPORTED_MODULE_24__);\n/* harmony import */ var next_dist_client_components_builtin_global_error_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! next/dist/client/components/builtin/global-error.js */ \"(rsc)/./node_modules/next/dist/client/components/builtin/global-error.js\");\n/* harmony import */ var next_dist_client_components_builtin_global_error_js__WEBPACK_IMPORTED_MODULE_25___default = /*#__PURE__*/__webpack_require__.n(next_dist_client_components_builtin_global_error_js__WEBPACK_IMPORTED_MODULE_25__);\n/* harmony import */ var next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! next/dist/server/app-render/entry-base */ \"(rsc)/./node_modules/next/dist/server/app-render/entry-base.js\");\n/* harmony import */ var next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_26___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_26__);\n/* harmony import */ var next_dist_client_components_redirect_status_code__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! next/dist/client/components/redirect-status-code */ \"(rsc)/./node_modules/next/dist/client/components/redirect-status-code.js\");\n/* harmony import */ var next_dist_client_components_redirect_status_code__WEBPACK_IMPORTED_MODULE_27___default = /*#__PURE__*/__webpack_require__.n(next_dist_client_components_redirect_status_code__WEBPACK_IMPORTED_MODULE_27__);\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_26__) if([\"default\",\"tree\",\"pages\",\"GlobalError\",\"__next_app__\",\"routeModule\",\"handler\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_26__[__WEBPACK_IMPORT_KEY__]\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\nconst module0 = () => Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./app/layout.tsx */ \"(rsc)/./app/layout.tsx\"));\nconst module1 = () => Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! next/dist/client/components/builtin/global-error.js */ \"(rsc)/./node_modules/next/dist/client/components/builtin/global-error.js\", 23));\nconst module2 = () => Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! next/dist/client/components/builtin/not-found.js */ \"(rsc)/./node_modules/next/dist/client/components/builtin/not-found.js\", 23));\nconst module3 = () => Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! next/dist/client/components/builtin/forbidden.js */ \"(rsc)/./node_modules/next/dist/client/components/builtin/forbidden.js\", 23));\nconst module4 = () => Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! next/dist/client/components/builtin/unauthorized.js */ \"(rsc)/./node_modules/next/dist/client/components/builtin/unauthorized.js\", 23));\nconst page5 = () => Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./app/page.tsx */ \"(rsc)/./app/page.tsx\"));\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n// We inject the tree and pages here so that we can use them in the route\n// module.\nconst tree = {\n children: [\n '',\n {\n children: ['__PAGE__', {}, {\n page: [page5, \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\"],\n \n }]\n },\n {\n 'layout': [module0, \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/layout.tsx\"],\n'global-error': [module1, \"next/dist/client/components/builtin/global-error.js\"],\n'not-found': [module2, \"next/dist/client/components/builtin/not-found.js\"],\n'forbidden': [module3, \"next/dist/client/components/builtin/forbidden.js\"],\n'unauthorized': [module4, \"next/dist/client/components/builtin/unauthorized.js\"],\n \n }\n ]\n }.children;\nconst pages = [\"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\"];\n\n\n\nconst __next_app_require__ = __webpack_require__\nconst __next_app_load_chunk__ = () => Promise.resolve()\nconst __next_app__ = {\n require: __next_app_require__,\n loadChunk: __next_app_load_chunk__\n};\n\n\n\n// Create and export the route module that will be consumed.\nconst routeModule = new next_dist_server_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__.AppPageRouteModule({\n definition: {\n kind: next_dist_server_route_kind__WEBPACK_IMPORTED_MODULE_1__.RouteKind.APP_PAGE,\n page: \"/page\",\n pathname: \"/\",\n // The following aren't used in production.\n bundlePath: '',\n filename: '',\n appPaths: []\n },\n userland: {\n loaderTree: tree\n },\n distDir: \".next\" || 0,\n relativeProjectDir: false || ''\n});\nasync function handler(req, res, ctx) {\n var _this;\n let srcPage = \"/page\";\n // turbopack doesn't normalize `/index` in the page name\n // so we need to to process dynamic routes properly\n // TODO: fix turbopack providing differing value from webpack\n if (false) {} else if (srcPage === '/index') {\n // we always normalize /index specifically\n srcPage = '/';\n }\n const multiZoneDraftMode = false;\n const initialPostponed = (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'postponed');\n // TODO: replace with more specific flags\n const minimalMode = (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'minimalMode');\n const prepareResult = await routeModule.prepare(req, res, {\n srcPage,\n multiZoneDraftMode\n });\n if (!prepareResult) {\n res.statusCode = 400;\n res.end('Bad Request');\n ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve());\n return null;\n }\n const { buildId, query, params, parsedUrl, pageIsDynamic, buildManifest, nextFontManifest, reactLoadableManifest, serverActionsManifest, clientReferenceManifest, subresourceIntegrityManifest, prerenderManifest, isDraftMode, resolvedPathname, revalidateOnlyGenerated, routerServerContext, nextConfig, interceptionRoutePatterns } = prepareResult;\n const pathname = parsedUrl.pathname || '/';\n const normalizedSrcPage = (0,next_dist_shared_lib_router_utils_app_paths__WEBPACK_IMPORTED_MODULE_14__.normalizeAppPath)(srcPage);\n let { isOnDemandRevalidate } = prepareResult;\n const prerenderInfo = routeModule.match(pathname, prerenderManifest);\n const isPrerendered = !!prerenderManifest.routes[resolvedPathname];\n let isSSG = Boolean(prerenderInfo || isPrerendered || prerenderManifest.routes[normalizedSrcPage]);\n const userAgent = req.headers['user-agent'] || '';\n const botType = (0,next_dist_shared_lib_router_utils_is_bot__WEBPACK_IMPORTED_MODULE_17__.getBotType)(userAgent);\n const isHtmlBot = (0,next_dist_server_lib_streaming_metadata__WEBPACK_IMPORTED_MODULE_12__.isHtmlBotRequest)(req);\n /**\n * If true, this indicates that the request being made is for an app\n * prefetch request.\n */ const isPrefetchRSCRequest = (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'isPrefetchRSCRequest') ?? req.headers[next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__.NEXT_ROUTER_PREFETCH_HEADER] === '1' // exclude runtime prefetches, which use '2'\n ;\n // NOTE: Don't delete headers[RSC] yet, it still needs to be used in renderToHTML later\n const isRSCRequest = (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'isRSCRequest') ?? Boolean(req.headers[next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__.RSC_HEADER]);\n const isPossibleServerAction = (0,next_dist_server_lib_server_action_request_meta__WEBPACK_IMPORTED_MODULE_15__.getIsPossibleServerAction)(req);\n /**\n * If the route being rendered is an app page, and the ppr feature has been\n * enabled, then the given route _could_ support PPR.\n */ const couldSupportPPR = (0,next_dist_server_lib_experimental_ppr__WEBPACK_IMPORTED_MODULE_9__.checkIsAppPPREnabled)(nextConfig.experimental.ppr);\n // When enabled, this will allow the use of the `?__nextppronly` query to\n // enable debugging of the static shell.\n const hasDebugStaticShellQuery = false && 0;\n // When enabled, this will allow the use of the `?__nextppronly` query\n // to enable debugging of the fallback shell.\n const hasDebugFallbackShellQuery = hasDebugStaticShellQuery && query.__nextppronly === 'fallback';\n // This page supports PPR if it is marked as being `PARTIALLY_STATIC` in the\n // prerender manifest and this is an app page.\n const isRoutePPREnabled = couldSupportPPR && (((_this = prerenderManifest.routes[normalizedSrcPage] ?? prerenderManifest.dynamicRoutes[normalizedSrcPage]) == null ? void 0 : _this.renderingMode) === 'PARTIALLY_STATIC' || // Ideally we'd want to check the appConfig to see if this page has PPR\n // enabled or not, but that would require plumbing the appConfig through\n // to the server during development. We assume that the page supports it\n // but only during development.\n hasDebugStaticShellQuery && (routeModule.isDev === true || (routerServerContext == null ? void 0 : routerServerContext.experimentalTestProxy) === true));\n const isDebugStaticShell = hasDebugStaticShellQuery && isRoutePPREnabled;\n // We should enable debugging dynamic accesses when the static shell\n // debugging has been enabled and we're also in development mode.\n const isDebugDynamicAccesses = isDebugStaticShell && routeModule.isDev === true;\n const isDebugFallbackShell = hasDebugFallbackShellQuery && isRoutePPREnabled;\n // If we're in minimal mode, then try to get the postponed information from\n // the request metadata. If available, use it for resuming the postponed\n // render.\n const minimalPostponed = isRoutePPREnabled ? initialPostponed : undefined;\n // If PPR is enabled, and this is a RSC request (but not a prefetch), then\n // we can use this fact to only generate the flight data for the request\n // because we can't cache the HTML (as it's also dynamic).\n const isDynamicRSCRequest = isRoutePPREnabled && isRSCRequest && !isPrefetchRSCRequest;\n // Need to read this before it's stripped by stripFlightHeaders. We don't\n // need to transfer it to the request meta because it's only read\n // within this function; the static segment data should have already been\n // generated, so we will always either return a static response or a 404.\n const segmentPrefetchHeader = (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'segmentPrefetchRSCRequest');\n // TODO: investigate existing bug with shouldServeStreamingMetadata always\n // being true for a revalidate due to modifying the base-server this.renderOpts\n // when fixing this to correct logic it causes hydration issue since we set\n // serveStreamingMetadata to true during export\n let serveStreamingMetadata = !userAgent ? true : (0,next_dist_server_lib_streaming_metadata__WEBPACK_IMPORTED_MODULE_12__.shouldServeStreamingMetadata)(userAgent, nextConfig.htmlLimitedBots);\n if (isHtmlBot && isRoutePPREnabled) {\n isSSG = false;\n serveStreamingMetadata = false;\n }\n // In development, we always want to generate dynamic HTML.\n let supportsDynamicResponse = // If we're in development, we always support dynamic HTML, unless it's\n // a data request, in which case we only produce static HTML.\n routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports\n // dynamic HTML.\n !isSSG || // If this request has provided postponed data, it supports dynamic\n // HTML.\n typeof initialPostponed === 'string' || // If this is a dynamic RSC request, then this render supports dynamic\n // HTML (it's dynamic).\n isDynamicRSCRequest;\n // When html bots request PPR page, perform the full dynamic rendering.\n const shouldWaitOnAllReady = isHtmlBot && isRoutePPREnabled;\n let ssgCacheKey = null;\n if (!isDraftMode && isSSG && !supportsDynamicResponse && !isPossibleServerAction && !minimalPostponed && !isDynamicRSCRequest) {\n ssgCacheKey = resolvedPathname;\n }\n // the staticPathKey differs from ssgCacheKey since\n // ssgCacheKey is null in dev since we're always in \"dynamic\"\n // mode in dev to bypass the cache, but we still need to honor\n // dynamicParams = false in dev mode\n let staticPathKey = ssgCacheKey;\n if (!staticPathKey && routeModule.isDev) {\n staticPathKey = resolvedPathname;\n }\n // If this is a request for an app path that should be statically generated\n // and we aren't in the edge runtime, strip the flight headers so it will\n // generate the static response.\n if (!routeModule.isDev && !isDraftMode && isSSG && isRSCRequest && !isDynamicRSCRequest) {\n (0,next_dist_server_app_render_strip_flight_headers__WEBPACK_IMPORTED_MODULE_7__.stripFlightHeaders)(req.headers);\n }\n const ComponentMod = {\n ...next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_26__,\n tree,\n pages,\n GlobalError: (next_dist_client_components_builtin_global_error_js__WEBPACK_IMPORTED_MODULE_25___default()),\n handler,\n routeModule,\n __next_app__\n };\n // Before rendering (which initializes component tree modules), we have to\n // set the reference manifests to our global store so Server Action's\n // encryption util can access to them at the top level of the page module.\n if (serverActionsManifest && clientReferenceManifest) {\n (0,next_dist_server_app_render_encryption_utils__WEBPACK_IMPORTED_MODULE_11__.setReferenceManifestsSingleton)({\n page: srcPage,\n clientReferenceManifest,\n serverActionsManifest,\n serverModuleMap: (0,next_dist_server_app_render_action_utils__WEBPACK_IMPORTED_MODULE_13__.createServerModuleMap)({\n serverActionsManifest\n })\n });\n }\n const method = req.method || 'GET';\n const tracer = (0,next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_3__.getTracer)();\n const activeSpan = tracer.getActiveScopeSpan();\n try {\n const varyHeader = routeModule.getVaryHeader(resolvedPathname, interceptionRoutePatterns);\n res.setHeader('Vary', varyHeader);\n const invokeRouteModule = async (span, context)=>{\n const nextReq = new next_dist_server_base_http_node__WEBPACK_IMPORTED_MODULE_8__.NodeNextRequest(req);\n const nextRes = new next_dist_server_base_http_node__WEBPACK_IMPORTED_MODULE_8__.NodeNextResponse(res);\n // TODO: adapt for putting the RDC inside the postponed data\n // If we're in dev, and this isn't a prefetch or a server action,\n // we should seed the resume data cache.\n if (true) {\n if (nextConfig.experimental.cacheComponents && !isPrefetchRSCRequest && !context.renderOpts.isPossibleServerAction) {\n const warmup = await routeModule.warmup(nextReq, nextRes, context);\n // If the warmup is successful, we should use the resume data\n // cache from the warmup.\n if (warmup.metadata.renderResumeDataCache) {\n context.renderOpts.renderResumeDataCache = warmup.metadata.renderResumeDataCache;\n }\n }\n }\n return routeModule.render(nextReq, nextRes, context).finally(()=>{\n if (!span) return;\n span.setAttributes({\n 'http.status_code': res.statusCode,\n 'next.rsc': false\n });\n const rootSpanAttributes = tracer.getRootSpanAttributes();\n // We were unable to get attributes, probably OTEL is not enabled\n if (!rootSpanAttributes) {\n return;\n }\n if (rootSpanAttributes.get('next.span_type') !== next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_5__.BaseServerSpan.handleRequest) {\n console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`);\n return;\n }\n const route = rootSpanAttributes.get('next.route');\n if (route) {\n const name = `${method} ${route}`;\n span.setAttributes({\n 'next.route': route,\n 'http.route': route,\n 'next.span_name': name\n });\n span.updateName(name);\n } else {\n span.updateName(`${method} ${req.url}`);\n }\n });\n };\n const doRender = async ({ span, postponed, fallbackRouteParams })=>{\n const context = {\n query,\n params,\n page: normalizedSrcPage,\n sharedContext: {\n buildId\n },\n serverComponentsHmrCache: (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'serverComponentsHmrCache'),\n fallbackRouteParams,\n renderOpts: {\n App: ()=>null,\n Document: ()=>null,\n pageConfig: {},\n ComponentMod,\n Component: (0,next_dist_server_app_render_interop_default__WEBPACK_IMPORTED_MODULE_6__.interopDefault)(ComponentMod),\n params,\n routeModule,\n page: srcPage,\n postponed,\n shouldWaitOnAllReady,\n serveStreamingMetadata,\n supportsDynamicResponse: typeof postponed === 'string' || supportsDynamicResponse,\n buildManifest,\n nextFontManifest,\n reactLoadableManifest,\n subresourceIntegrityManifest,\n serverActionsManifest,\n clientReferenceManifest,\n setIsrStatus: routerServerContext == null ? void 0 : routerServerContext.setIsrStatus,\n dir: true ? (__webpack_require__(/*! path */ \"path\").join)(/* turbopackIgnore: true */ process.cwd(), routeModule.relativeProjectDir) : 0,\n isDraftMode,\n isRevalidate: isSSG && !postponed && !isDynamicRSCRequest,\n botType,\n isOnDemandRevalidate,\n isPossibleServerAction,\n assetPrefix: nextConfig.assetPrefix,\n nextConfigOutput: nextConfig.output,\n crossOrigin: nextConfig.crossOrigin,\n trailingSlash: nextConfig.trailingSlash,\n previewProps: prerenderManifest.preview,\n deploymentId: nextConfig.deploymentId,\n enableTainting: nextConfig.experimental.taint,\n htmlLimitedBots: nextConfig.htmlLimitedBots,\n devtoolSegmentExplorer: nextConfig.experimental.devtoolSegmentExplorer,\n reactMaxHeadersLength: nextConfig.reactMaxHeadersLength,\n multiZoneDraftMode,\n incrementalCache: (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'incrementalCache'),\n cacheLifeProfiles: nextConfig.experimental.cacheLife,\n basePath: nextConfig.basePath,\n serverActions: nextConfig.experimental.serverActions,\n ...isDebugStaticShell || isDebugDynamicAccesses ? {\n nextExport: true,\n supportsDynamicResponse: false,\n isStaticGeneration: true,\n isRevalidate: true,\n isDebugDynamicAccesses: isDebugDynamicAccesses\n } : {},\n experimental: {\n isRoutePPREnabled,\n expireTime: nextConfig.expireTime,\n staleTimes: nextConfig.experimental.staleTimes,\n cacheComponents: Boolean(nextConfig.experimental.cacheComponents),\n clientSegmentCache: Boolean(nextConfig.experimental.clientSegmentCache),\n clientParamParsing: Boolean(nextConfig.experimental.clientParamParsing),\n dynamicOnHover: Boolean(nextConfig.experimental.dynamicOnHover),\n inlineCss: Boolean(nextConfig.experimental.inlineCss),\n authInterrupts: Boolean(nextConfig.experimental.authInterrupts),\n clientTraceMetadata: nextConfig.experimental.clientTraceMetadata || []\n },\n waitUntil: ctx.waitUntil,\n onClose: (cb)=>{\n res.on('close', cb);\n },\n onAfterTaskError: ()=>{},\n onInstrumentationRequestError: (error, _request, errorContext)=>routeModule.onRequestError(req, error, errorContext, routerServerContext),\n err: (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'invokeError'),\n dev: routeModule.isDev\n }\n };\n const result = await invokeRouteModule(span, context);\n const { metadata } = result;\n const { cacheControl, headers = {}, // Add any fetch tags that were on the page to the response headers.\n fetchTags: cacheTags } = metadata;\n if (cacheTags) {\n headers[next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__.NEXT_CACHE_TAGS_HEADER] = cacheTags;\n }\n // Pull any fetch metrics from the render onto the request.\n ;\n req.fetchMetrics = metadata.fetchMetrics;\n // we don't throw static to dynamic errors in dev as isSSG\n // is a best guess in dev since we don't have the prerender pass\n // to know whether the path is actually static or not\n if (isSSG && (cacheControl == null ? void 0 : cacheControl.revalidate) === 0 && !routeModule.isDev && !isRoutePPREnabled) {\n const staticBailoutInfo = metadata.staticBailoutInfo;\n const err = Object.defineProperty(new Error(`Page changed from static to dynamic at runtime ${resolvedPathname}${(staticBailoutInfo == null ? void 0 : staticBailoutInfo.description) ? `, reason: ${staticBailoutInfo.description}` : ``}` + `\\nsee more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`), \"__NEXT_ERROR_CODE\", {\n value: \"E132\",\n enumerable: false,\n configurable: true\n });\n if (staticBailoutInfo == null ? void 0 : staticBailoutInfo.stack) {\n const stack = staticBailoutInfo.stack;\n err.stack = err.message + stack.substring(stack.indexOf('\\n'));\n }\n throw err;\n }\n return {\n value: {\n kind: next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_18__.CachedRouteKind.APP_PAGE,\n html: result,\n headers,\n rscData: metadata.flightData,\n postponed: metadata.postponed,\n status: metadata.statusCode,\n segmentData: metadata.segmentData\n },\n cacheControl\n };\n };\n const responseGenerator = async ({ hasResolved, previousCacheEntry, isRevalidating, span })=>{\n const isProduction = routeModule.isDev === false;\n const didRespond = hasResolved || res.writableEnded;\n // skip on-demand revalidate if cache is not present and\n // revalidate-if-generated is set\n if (isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry && !minimalMode) {\n if (routerServerContext == null ? void 0 : routerServerContext.render404) {\n await routerServerContext.render404(req, res);\n } else {\n res.statusCode = 404;\n res.end('This page could not be found');\n }\n return null;\n }\n let fallbackMode;\n if (prerenderInfo) {\n fallbackMode = (0,next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__.parseFallbackField)(prerenderInfo.fallback);\n }\n // When serving a HTML bot request, we want to serve a blocking render and\n // not the prerendered page. This ensures that the correct content is served\n // to the bot in the head.\n if (fallbackMode === next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__.FallbackMode.PRERENDER && (0,next_dist_shared_lib_router_utils_is_bot__WEBPACK_IMPORTED_MODULE_17__.isBot)(userAgent)) {\n if (!isRoutePPREnabled || isHtmlBot) {\n fallbackMode = next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__.FallbackMode.BLOCKING_STATIC_RENDER;\n }\n }\n if ((previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) === -1) {\n isOnDemandRevalidate = true;\n }\n // TODO: adapt for PPR\n // only allow on-demand revalidate for fallback: true/blocking\n // or for prerendered fallback: false paths\n if (isOnDemandRevalidate && (fallbackMode !== next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__.FallbackMode.NOT_FOUND || previousCacheEntry)) {\n fallbackMode = next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__.FallbackMode.BLOCKING_STATIC_RENDER;\n }\n if (!minimalMode && fallbackMode !== next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__.FallbackMode.BLOCKING_STATIC_RENDER && staticPathKey && !didRespond && !isDraftMode && pageIsDynamic && (isProduction || !isPrerendered)) {\n // if the page has dynamicParams: false and this pathname wasn't\n // prerendered trigger the no fallback handling\n if (// In development, fall through to render to handle missing\n // getStaticPaths.\n (isProduction || prerenderInfo) && // When fallback isn't present, abort this render so we 404\n fallbackMode === next_dist_lib_fallback__WEBPACK_IMPORTED_MODULE_19__.FallbackMode.NOT_FOUND) {\n throw new next_dist_shared_lib_no_fallback_error_external__WEBPACK_IMPORTED_MODULE_24__.NoFallbackError();\n }\n let fallbackResponse;\n if (isRoutePPREnabled && !isRSCRequest) {\n const cacheKey = typeof (prerenderInfo == null ? void 0 : prerenderInfo.fallback) === 'string' ? prerenderInfo.fallback : isProduction ? normalizedSrcPage : null;\n // We use the response cache here to handle the revalidation and\n // management of the fallback shell.\n fallbackResponse = await routeModule.handleResponse({\n cacheKey,\n req,\n nextConfig,\n routeKind: next_dist_server_route_kind__WEBPACK_IMPORTED_MODULE_1__.RouteKind.APP_PAGE,\n isFallback: true,\n prerenderManifest,\n isRoutePPREnabled,\n responseGenerator: async ()=>doRender({\n span,\n // We pass `undefined` as rendering a fallback isn't resumed\n // here.\n postponed: undefined,\n fallbackRouteParams: // If we're in production or we're debugging the fallback\n // shell then we should postpone when dynamic params are\n // accessed.\n isProduction || isDebugFallbackShell ? (0,next_dist_server_request_fallback_params__WEBPACK_IMPORTED_MODULE_10__.getFallbackRouteParams)(normalizedSrcPage) : null\n }),\n waitUntil: ctx.waitUntil\n });\n // If the fallback response was set to null, then we should return null.\n if (fallbackResponse === null) return null;\n // Otherwise, if we did get a fallback response, we should return it.\n if (fallbackResponse) {\n // Remove the cache control from the response to prevent it from being\n // used in the surrounding cache.\n delete fallbackResponse.cacheControl;\n return fallbackResponse;\n }\n }\n }\n // Only requests that aren't revalidating can be resumed. If we have the\n // minimal postponed data, then we should resume the render with it.\n const postponed = !isOnDemandRevalidate && !isRevalidating && minimalPostponed ? minimalPostponed : undefined;\n // When we're in minimal mode, if we're trying to debug the static shell,\n // we should just return nothing instead of resuming the dynamic render.\n if ((isDebugStaticShell || isDebugDynamicAccesses) && typeof postponed !== 'undefined') {\n return {\n cacheControl: {\n revalidate: 1,\n expire: undefined\n },\n value: {\n kind: next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_18__.CachedRouteKind.PAGES,\n html: next_dist_server_render_result__WEBPACK_IMPORTED_MODULE_20__[\"default\"].EMPTY,\n pageData: {},\n headers: undefined,\n status: undefined\n }\n };\n }\n // If this is a dynamic route with PPR enabled and the default route\n // matches were set, then we should pass the fallback route params to\n // the renderer as this is a fallback revalidation request.\n const fallbackRouteParams = pageIsDynamic && isRoutePPREnabled && ((0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'renderFallbackShell') || isDebugFallbackShell) ? (0,next_dist_server_request_fallback_params__WEBPACK_IMPORTED_MODULE_10__.getFallbackRouteParams)(pathname) : null;\n // Perform the render.\n return doRender({\n span,\n postponed,\n fallbackRouteParams\n });\n };\n const handleResponse = async (span)=>{\n var _cacheEntry_value, _cachedData_headers;\n const cacheEntry = await routeModule.handleResponse({\n cacheKey: ssgCacheKey,\n responseGenerator: (c)=>responseGenerator({\n span,\n ...c\n }),\n routeKind: next_dist_server_route_kind__WEBPACK_IMPORTED_MODULE_1__.RouteKind.APP_PAGE,\n isOnDemandRevalidate,\n isRoutePPREnabled,\n req,\n nextConfig,\n prerenderManifest,\n waitUntil: ctx.waitUntil\n });\n if (isDraftMode) {\n res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate');\n }\n // In dev, we should not cache pages for any reason.\n if (routeModule.isDev) {\n res.setHeader('Cache-Control', 'no-store, must-revalidate');\n }\n if (!cacheEntry) {\n if (ssgCacheKey) {\n // A cache entry might not be generated if a response is written\n // in `getInitialProps` or `getServerSideProps`, but those shouldn't\n // have a cache key. If we do have a cache key but we don't end up\n // with a cache entry, then either Next.js or the application has a\n // bug that needs fixing.\n throw Object.defineProperty(new Error('invariant: cache entry required but not generated'), \"__NEXT_ERROR_CODE\", {\n value: \"E62\",\n enumerable: false,\n configurable: true\n });\n }\n return null;\n }\n if (((_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_18__.CachedRouteKind.APP_PAGE) {\n var _cacheEntry_value1;\n throw Object.defineProperty(new Error(`Invariant app-page handler received invalid cache entry ${(_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), \"__NEXT_ERROR_CODE\", {\n value: \"E707\",\n enumerable: false,\n configurable: true\n });\n }\n const didPostpone = typeof cacheEntry.value.postponed === 'string';\n if (isSSG && // We don't want to send a cache header for requests that contain dynamic\n // data. If this is a Dynamic RSC request or wasn't a Prefetch RSC\n // request, then we should set the cache header.\n !isDynamicRSCRequest && (!didPostpone || isPrefetchRSCRequest)) {\n if (!minimalMode) {\n // set x-nextjs-cache header to match the header\n // we set for the image-optimizer\n res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT');\n }\n // Set a header used by the client router to signal the response is static\n // and should respect the `static` cache staleTime value.\n res.setHeader(next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__.NEXT_IS_PRERENDER_HEADER, '1');\n }\n const { value: cachedData } = cacheEntry;\n // Coerce the cache control parameter from the render.\n let cacheControl;\n // If this is a resume request in minimal mode it is streamed with dynamic\n // content and should not be cached.\n if (minimalPostponed) {\n cacheControl = {\n revalidate: 0,\n expire: undefined\n };\n } else if (minimalMode && isRSCRequest && !isPrefetchRSCRequest && isRoutePPREnabled) {\n cacheControl = {\n revalidate: 0,\n expire: undefined\n };\n } else if (!routeModule.isDev) {\n // If this is a preview mode request, we shouldn't cache it\n if (isDraftMode) {\n cacheControl = {\n revalidate: 0,\n expire: undefined\n };\n } else if (!isSSG) {\n if (!res.getHeader('Cache-Control')) {\n cacheControl = {\n revalidate: 0,\n expire: undefined\n };\n }\n } else if (cacheEntry.cacheControl) {\n // If the cache entry has a cache control with a revalidate value that's\n // a number, use it.\n if (typeof cacheEntry.cacheControl.revalidate === 'number') {\n var _cacheEntry_cacheControl;\n if (cacheEntry.cacheControl.revalidate < 1) {\n throw Object.defineProperty(new Error(`Invalid revalidate configuration provided: ${cacheEntry.cacheControl.revalidate} < 1`), \"__NEXT_ERROR_CODE\", {\n value: \"E22\",\n enumerable: false,\n configurable: true\n });\n }\n cacheControl = {\n revalidate: cacheEntry.cacheControl.revalidate,\n expire: ((_cacheEntry_cacheControl = cacheEntry.cacheControl) == null ? void 0 : _cacheEntry_cacheControl.expire) ?? nextConfig.expireTime\n };\n } else {\n cacheControl = {\n revalidate: next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__.CACHE_ONE_YEAR,\n expire: undefined\n };\n }\n }\n }\n cacheEntry.cacheControl = cacheControl;\n if (typeof segmentPrefetchHeader === 'string' && (cachedData == null ? void 0 : cachedData.kind) === next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_18__.CachedRouteKind.APP_PAGE && cachedData.segmentData) {\n var _cachedData_headers1;\n // This is a prefetch request issued by the client Segment Cache. These\n // should never reach the application layer (lambda). We should either\n // respond from the cache (HIT) or respond with 204 No Content (MISS).\n // Set a header to indicate that PPR is enabled for this route. This\n // lets the client distinguish between a regular cache miss and a cache\n // miss due to PPR being disabled. In other contexts this header is used\n // to indicate that the response contains dynamic data, but here we're\n // only using it to indicate that the feature is enabled — the segment\n // response itself contains whether the data is dynamic.\n res.setHeader(next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__.NEXT_DID_POSTPONE_HEADER, '2');\n // Add the cache tags header to the response if it exists and we're in\n // minimal mode while rendering a static page.\n const tags = (_cachedData_headers1 = cachedData.headers) == null ? void 0 : _cachedData_headers1[next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__.NEXT_CACHE_TAGS_HEADER];\n if (minimalMode && isSSG && tags && typeof tags === 'string') {\n res.setHeader(next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__.NEXT_CACHE_TAGS_HEADER, tags);\n }\n const matchedSegment = cachedData.segmentData.get(segmentPrefetchHeader);\n if (matchedSegment !== undefined) {\n // Cache hit\n return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({\n req,\n res,\n generateEtags: nextConfig.generateEtags,\n poweredByHeader: nextConfig.poweredByHeader,\n result: next_dist_server_render_result__WEBPACK_IMPORTED_MODULE_20__[\"default\"].fromStatic(matchedSegment, next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__.RSC_CONTENT_TYPE_HEADER),\n cacheControl: cacheEntry.cacheControl\n });\n }\n // Cache miss. Either a cache entry for this route has not been generated\n // (which technically should not be possible when PPR is enabled, because\n // at a minimum there should always be a fallback entry) or there's no\n // match for the requested segment. Respond with a 204 No Content. We\n // don't bother to respond with 404, because these requests are only\n // issued as part of a prefetch.\n res.statusCode = 204;\n return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({\n req,\n res,\n generateEtags: nextConfig.generateEtags,\n poweredByHeader: nextConfig.poweredByHeader,\n result: next_dist_server_render_result__WEBPACK_IMPORTED_MODULE_20__[\"default\"].EMPTY,\n cacheControl: cacheEntry.cacheControl\n });\n }\n // If there's a callback for `onCacheEntry`, call it with the cache entry\n // and the revalidate options.\n const onCacheEntry = (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'onCacheEntry');\n if (onCacheEntry) {\n const finished = await onCacheEntry({\n ...cacheEntry,\n // TODO: remove this when upstream doesn't\n // always expect this value to be \"PAGE\"\n value: {\n ...cacheEntry.value,\n kind: 'PAGE'\n }\n }, {\n url: (0,next_dist_server_request_meta__WEBPACK_IMPORTED_MODULE_4__.getRequestMeta)(req, 'initURL')\n });\n if (finished) {\n // TODO: maybe we have to end the request?\n return null;\n }\n }\n // If the request has a postponed state and it's a resume request we\n // should error.\n if (didPostpone && minimalPostponed) {\n throw Object.defineProperty(new Error('Invariant: postponed state should not be present on a resume request'), \"__NEXT_ERROR_CODE\", {\n value: \"E396\",\n enumerable: false,\n configurable: true\n });\n }\n if (cachedData.headers) {\n const headers = {\n ...cachedData.headers\n };\n if (!minimalMode || !isSSG) {\n delete headers[next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__.NEXT_CACHE_TAGS_HEADER];\n }\n for (let [key, value] of Object.entries(headers)){\n if (typeof value === 'undefined') continue;\n if (Array.isArray(value)) {\n for (const v of value){\n res.appendHeader(key, v);\n }\n } else if (typeof value === 'number') {\n value = value.toString();\n res.appendHeader(key, value);\n } else {\n res.appendHeader(key, value);\n }\n }\n }\n // Add the cache tags header to the response if it exists and we're in\n // minimal mode while rendering a static page.\n const tags = (_cachedData_headers = cachedData.headers) == null ? void 0 : _cachedData_headers[next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__.NEXT_CACHE_TAGS_HEADER];\n if (minimalMode && isSSG && tags && typeof tags === 'string') {\n res.setHeader(next_dist_lib_constants__WEBPACK_IMPORTED_MODULE_21__.NEXT_CACHE_TAGS_HEADER, tags);\n }\n // If the request is a data request, then we shouldn't set the status code\n // from the response because it should always be 200. This should be gated\n // behind the experimental PPR flag.\n if (cachedData.status && (!isRSCRequest || !isRoutePPREnabled)) {\n res.statusCode = cachedData.status;\n }\n // Redirect information is encoded in RSC payload, so we don't need to use redirect status codes\n if (!minimalMode && cachedData.status && next_dist_client_components_redirect_status_code__WEBPACK_IMPORTED_MODULE_27__.RedirectStatusCode[cachedData.status] && isRSCRequest) {\n res.statusCode = 200;\n }\n // Mark that the request did postpone.\n if (didPostpone) {\n res.setHeader(next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__.NEXT_DID_POSTPONE_HEADER, '1');\n }\n // we don't go through this block when preview mode is true\n // as preview mode is a dynamic request (bypasses cache) and doesn't\n // generate both HTML and payloads in the same request so continue to just\n // return the generated payload\n if (isRSCRequest && !isDraftMode) {\n // If this is a dynamic RSC request, then stream the response.\n if (typeof cachedData.rscData === 'undefined') {\n if (cachedData.postponed) {\n throw Object.defineProperty(new Error('Invariant: Expected postponed to be undefined'), \"__NEXT_ERROR_CODE\", {\n value: \"E372\",\n enumerable: false,\n configurable: true\n });\n }\n return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({\n req,\n res,\n generateEtags: nextConfig.generateEtags,\n poweredByHeader: nextConfig.poweredByHeader,\n result: cachedData.html,\n // Dynamic RSC responses cannot be cached, even if they're\n // configured with `force-static` because we have no way of\n // distinguishing between `force-static` and pages that have no\n // postponed state.\n // TODO: distinguish `force-static` from pages with no postponed state (static)\n cacheControl: isDynamicRSCRequest ? {\n revalidate: 0,\n expire: undefined\n } : cacheEntry.cacheControl\n });\n }\n // As this isn't a prefetch request, we should serve the static flight\n // data.\n return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({\n req,\n res,\n generateEtags: nextConfig.generateEtags,\n poweredByHeader: nextConfig.poweredByHeader,\n result: next_dist_server_render_result__WEBPACK_IMPORTED_MODULE_20__[\"default\"].fromStatic(cachedData.rscData, next_dist_client_components_app_router_headers__WEBPACK_IMPORTED_MODULE_16__.RSC_CONTENT_TYPE_HEADER),\n cacheControl: cacheEntry.cacheControl\n });\n }\n // This is a request for HTML data.\n let body = cachedData.html;\n // If there's no postponed state, we should just serve the HTML. This\n // should also be the case for a resume request because it's completed\n // as a server render (rather than a static render).\n if (!didPostpone || minimalMode || isRSCRequest) {\n // If we're in test mode, we should add a sentinel chunk to the response\n // that's between the static and dynamic parts so we can compare the\n // chunks and add assertions.\n if (false) {}\n return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({\n req,\n res,\n generateEtags: nextConfig.generateEtags,\n poweredByHeader: nextConfig.poweredByHeader,\n result: body,\n cacheControl: cacheEntry.cacheControl\n });\n }\n // If we're debugging the static shell or the dynamic API accesses, we\n // should just serve the HTML without resuming the render. The returned\n // HTML will be the static shell so all the Dynamic API's will be used\n // during static generation.\n if (isDebugStaticShell || isDebugDynamicAccesses) {\n // Since we're not resuming the render, we need to at least add the\n // closing body and html tags to create valid HTML.\n body.push(new ReadableStream({\n start (controller) {\n controller.enqueue(next_dist_server_stream_utils_encoded_tags__WEBPACK_IMPORTED_MODULE_22__.ENCODED_TAGS.CLOSED.BODY_AND_HTML);\n controller.close();\n }\n }));\n return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({\n req,\n res,\n generateEtags: nextConfig.generateEtags,\n poweredByHeader: nextConfig.poweredByHeader,\n result: body,\n cacheControl: {\n revalidate: 0,\n expire: undefined\n }\n });\n }\n // If we're in test mode, we should add a sentinel chunk to the response\n // that's between the static and dynamic parts so we can compare the\n // chunks and add assertions.\n if (false) {}\n // This request has postponed, so let's create a new transformer that the\n // dynamic data can pipe to that will attach the dynamic data to the end\n // of the response.\n const transformer = new TransformStream();\n body.push(transformer.readable);\n // Perform the render again, but this time, provide the postponed state.\n // We don't await because we want the result to start streaming now, and\n // we've already chained the transformer's readable to the render result.\n doRender({\n span,\n postponed: cachedData.postponed,\n // This is a resume render, not a fallback render, so we don't need to\n // set this.\n fallbackRouteParams: null\n }).then(async (result)=>{\n var _result_value;\n if (!result) {\n throw Object.defineProperty(new Error('Invariant: expected a result to be returned'), \"__NEXT_ERROR_CODE\", {\n value: \"E463\",\n enumerable: false,\n configurable: true\n });\n }\n if (((_result_value = result.value) == null ? void 0 : _result_value.kind) !== next_dist_server_response_cache__WEBPACK_IMPORTED_MODULE_18__.CachedRouteKind.APP_PAGE) {\n var _result_value1;\n throw Object.defineProperty(new Error(`Invariant: expected a page response, got ${(_result_value1 = result.value) == null ? void 0 : _result_value1.kind}`), \"__NEXT_ERROR_CODE\", {\n value: \"E305\",\n enumerable: false,\n configurable: true\n });\n }\n // Pipe the resume result to the transformer.\n await result.value.html.pipeTo(transformer.writable);\n }).catch((err)=>{\n // An error occurred during piping or preparing the render, abort\n // the transformers writer so we can terminate the stream.\n transformer.writable.abort(err).catch((e)=>{\n console.error(\"couldn't abort transformer\", e);\n });\n });\n return (0,next_dist_server_send_payload__WEBPACK_IMPORTED_MODULE_23__.sendRenderResult)({\n req,\n res,\n generateEtags: nextConfig.generateEtags,\n poweredByHeader: nextConfig.poweredByHeader,\n result: body,\n // We don't want to cache the response if it has postponed data because\n // the response being sent to the client it's dynamic parts are streamed\n // to the client on the same request.\n cacheControl: {\n revalidate: 0,\n expire: undefined\n }\n });\n };\n // TODO: activeSpan code path is for when wrapped by\n // next-server can be removed when this is no longer used\n if (activeSpan) {\n await handleResponse(activeSpan);\n } else {\n return await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(next_dist_server_lib_trace_constants__WEBPACK_IMPORTED_MODULE_5__.BaseServerSpan.handleRequest, {\n spanName: `${method} ${req.url}`,\n kind: next_dist_server_lib_trace_tracer__WEBPACK_IMPORTED_MODULE_3__.SpanKind.SERVER,\n attributes: {\n 'http.method': method,\n 'http.target': req.url\n }\n }, handleResponse));\n }\n } catch (err) {\n if (!(err instanceof next_dist_shared_lib_no_fallback_error_external__WEBPACK_IMPORTED_MODULE_24__.NoFallbackError)) {\n await routeModule.onRequestError(req, err, {\n routerKind: 'App Router',\n routePath: srcPage,\n routeType: 'render',\n revalidateReason: (0,next_dist_server_instrumentation_utils__WEBPACK_IMPORTED_MODULE_2__.getRevalidateReason)({\n isRevalidate: isSSG,\n isOnDemandRevalidate\n })\n }, routerServerContext);\n }\n // rethrow so that we can handle serving error page\n throw err;\n }\n}\n// TODO: omit this from production builds, only test builds should include it\n/**\n * Creates a readable stream that emits a PPR boundary sentinel.\n *\n * @returns A readable stream that emits a PPR boundary sentinel.\n */ function createPPRBoundarySentinel() {\n return new ReadableStream({\n start (controller) {\n controller.enqueue(new TextEncoder().encode('<!-- PPR_BOUNDARY_SENTINEL -->'));\n controller.close();\n }\n });\n}\n\n//# sourceMappingURL=app-page.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWFwcC1sb2FkZXIvaW5kZXguanM/bmFtZT1hcHAlMkZwYWdlJnBhZ2U9JTJGcGFnZSZhcHBQYXRocz0lMkZwYWdlJnBhZ2VQYXRoPXByaXZhdGUtbmV4dC1hcHAtZGlyJTJGcGFnZS50c3gmYXBwRGlyPSUyRlVzZXJzJTJGZGhhbmFuamF5cGFpJTJGQ29kaW5nJTJGUGVyc29uYWwlMkZvcG0lMkZwYWNrYWdlcyUyRndlYiUyRmFwcCZwYWdlRXh0ZW5zaW9ucz10c3gmcGFnZUV4dGVuc2lvbnM9dHMmcGFnZUV4dGVuc2lvbnM9anN4JnBhZ2VFeHRlbnNpb25zPWpzJnJvb3REaXI9JTJGVXNlcnMlMkZkaGFuYW5qYXlwYWklMkZDb2RpbmclMkZQZXJzb25hbCUyRm9wbSUyRnBhY2thZ2VzJTJGd2ViJmlzRGV2PXRydWUmdHNjb25maWdQYXRoPXRzY29uZmlnLmpzb24mYmFzZVBhdGg9JmFzc2V0UHJlZml4PSZuZXh0Q29uZmlnT3V0cHV0PSZwcmVmZXJyZWRSZWdpb249Jm1pZGRsZXdhcmVDb25maWc9ZTMwJTNEJmlzR2xvYmFsTm90Rm91bmRFbmFibGVkPSEiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHNCQUFzQiw0SUFBd0c7QUFDOUgsc0JBQXNCLHVPQUF3RjtBQUM5RyxzQkFBc0IsaU9BQXFGO0FBQzNHLHNCQUFzQixpT0FBcUY7QUFDM0csc0JBQXNCLHVPQUF3RjtBQUM5RyxvQkFBb0Isd0lBQXNHO0FBR3hIO0FBR0E7QUFDMkU7QUFDTDtBQUNUO0FBQ087QUFDTztBQUNTO0FBQ0Y7QUFDUDtBQUNLO0FBQ1k7QUFDVztBQUN4QjtBQUNGO0FBQ2E7QUFDMEY7QUFDekc7QUFDWDtBQUNRO0FBQ2hCO0FBQ2lEO0FBQ2pDO0FBQ1Q7QUFDaUI7QUFDbEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDO0FBQ2pDO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUN1QjtBQUdyQjtBQUNxQjtBQUN2Qiw2QkFBNkIsbUJBQW1CO0FBQ2hEO0FBQ087QUFDUDtBQUNBO0FBQ0E7QUFHRTtBQUNvRjtBQUdwRjtBQUNGO0FBQ08sd0JBQXdCLHVHQUFrQjtBQUNqRDtBQUNBLGNBQWMsa0VBQVM7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsYUFBYSxPQUFvQyxJQUFJLENBQUU7QUFDdkQsd0JBQXdCLE1BQXVDO0FBQy9ELENBQUM7QUFDTTtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLEtBQXFCLEVBQUUsRUFFMUIsQ0FBQztBQUNOO0FBQ0E7QUFDQTtBQUNBLCtCQUErQixLQUF3QztBQUN2RSw2QkFBNkIsNkVBQWM7QUFDM0M7QUFDQSx3QkFBd0IsNkVBQWM7QUFDdEM7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksZ1VBQWdVO0FBQzVVO0FBQ0EsOEJBQThCLDhGQUFnQjtBQUM5QyxVQUFVLHVCQUF1QjtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixxRkFBVTtBQUM5QixzQkFBc0IsMEZBQWdCO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyw2RUFBYyw2Q0FBNkMsd0dBQTJCO0FBQ3pIO0FBQ0E7QUFDQSx5QkFBeUIsNkVBQWMsNkNBQTZDLHVGQUFVO0FBQzlGLG1DQUFtQywyR0FBeUI7QUFDNUQ7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLDJGQUFvQjtBQUNsRDtBQUNBO0FBQ0EscUNBQXFDLE1BQTRHLElBQUksQ0FBZTtBQUNwSztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QjtBQUM3QjtBQUNBLGtDQUFrQyw2RUFBYztBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFEQUFxRCxzR0FBNEI7QUFDakY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsb0dBQWtCO0FBQzFCO0FBQ0E7QUFDQSxXQUFXLG9FQUFTO0FBQ3BCO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsNkdBQThCO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBLDZCQUE2QixnR0FBcUI7QUFDbEQ7QUFDQSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQSxtQkFBbUIsNEVBQVM7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdDQUFnQyw0RUFBZTtBQUMvQyxnQ0FBZ0MsNkVBQWdCO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixJQUFzQztBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpRUFBaUUsZ0ZBQWM7QUFDL0UsK0RBQStELHlDQUF5QztBQUN4RztBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFvQyxRQUFRLEVBQUUsTUFBTTtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBLGtCQUFrQjtBQUNsQix1Q0FBdUMsUUFBUSxFQUFFLFFBQVE7QUFDekQ7QUFDQSxhQUFhO0FBQ2I7QUFDQSxrQ0FBa0Msc0NBQXNDO0FBQ3hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQiwwQ0FBMEMsNkVBQWM7QUFDeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0M7QUFDbEM7QUFDQSwrQkFBK0IsMkZBQWM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixLQUFxQyxHQUFHLDhDQUFvQiw4RUFBOEUsQ0FBb0Q7QUFDdk47QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0MsNkVBQWM7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLElBQUk7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckIsNENBQTRDO0FBQzVDO0FBQ0EseUJBQXlCLDZFQUFjO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLFdBQVc7QUFDL0Isb0JBQW9CLDBCQUEwQjtBQUM5QyxtQ0FBbUM7QUFDbkM7QUFDQSx3QkFBd0IsNEVBQXNCO0FBQzlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhHQUE4RyxpQkFBaUIsRUFBRSxvRkFBb0YsOEJBQThCLE9BQU87QUFDMVA7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsNkVBQWU7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQyx1REFBdUQ7QUFDbEc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsMkVBQWtCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUNBQWlDLGlFQUFZLGNBQWMsZ0ZBQUs7QUFDaEU7QUFDQSxtQ0FBbUMsaUVBQVk7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBEQUEwRCxpRUFBWTtBQUN0RSwrQkFBK0IsaUVBQVk7QUFDM0M7QUFDQSxpREFBaUQsaUVBQVk7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQyxpRUFBWTtBQUM3Qyw4QkFBOEIsNkZBQWU7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBbUMsa0VBQVM7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVFQUF1RSxpR0FBc0I7QUFDN0YsNkJBQTZCO0FBQzdCO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBLDhCQUE4Qiw2RUFBZTtBQUM3Qyw4QkFBOEIsdUVBQVk7QUFDMUMsb0NBQW9DO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrRUFBK0UsNkVBQWMsd0RBQXdELGlHQUFzQjtBQUMzSztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckIsMkJBQTJCLGtFQUFTO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0EsdUdBQXVHLDZFQUFlO0FBQ3RIO0FBQ0EsaUhBQWlILG1GQUFtRjtBQUNwTTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIscUdBQXdCO0FBQ3REO0FBQ0Esb0JBQW9CLG9CQUFvQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0hBQWdILG9DQUFvQztBQUNwSjtBQUNBO0FBQ0E7QUFDQSw2QkFBNkI7QUFDN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQjtBQUN0QjtBQUNBLHdDQUF3QyxvRUFBYztBQUN0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpSEFBaUgsNkVBQWU7QUFDaEk7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIscUdBQXdCO0FBQ3REO0FBQ0E7QUFDQSxpSEFBaUgsNEVBQXNCO0FBQ3ZJO0FBQ0Esa0NBQWtDLDRFQUFzQjtBQUN4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQixnRkFBZ0I7QUFDM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MsdUVBQVksNEJBQTRCLG9HQUF1QjtBQUMvRjtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCLGdGQUFnQjtBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0Qix1RUFBWTtBQUN4QztBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQSxpQ0FBaUMsNkVBQWM7QUFDL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCLHlCQUF5Qiw2RUFBYztBQUN2QyxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyw0RUFBc0I7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBLHNCQUFzQjtBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyR0FBMkcsNEVBQXNCO0FBQ2pJO0FBQ0EsOEJBQThCLDRFQUFzQjtBQUNwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscURBQXFELGlHQUFrQjtBQUN2RTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixxR0FBd0I7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQSwyQkFBMkIsZ0ZBQWdCO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCO0FBQzFCLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsZ0ZBQWdCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLHVFQUFZLGdDQUFnQyxvR0FBdUI7QUFDL0Y7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsS0FBaUgsRUFBRSxFQUt0SDtBQUNqQix1QkFBdUIsZ0ZBQWdCO0FBQ3ZDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQyxxRkFBWTtBQUN2RDtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCLHVCQUF1QixnRkFBZ0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLEtBQTRCLEVBQUUsRUFFakM7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBLCtGQUErRiw2RUFBZTtBQUM5RztBQUNBLHNHQUFzRyx1RUFBdUU7QUFDN0s7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2IsbUJBQW1CLGdGQUFnQjtBQUNuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVixvRkFBb0YsZ0ZBQWM7QUFDbEcsaUNBQWlDLFFBQVEsRUFBRSxRQUFRO0FBQ25ELDBCQUEwQix1RUFBUTtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBLE1BQU07QUFDTiw2QkFBNkIsNkZBQWU7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0MsMkZBQW1CO0FBQ3JEO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakIsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBIiwic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgbW9kdWxlMCA9ICgpID0+IGltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL2RoYW5hbmpheXBhaS9Db2RpbmcvUGVyc29uYWwvb3BtL3BhY2thZ2VzL3dlYi9hcHAvbGF5b3V0LnRzeFwiKTtcbmNvbnN0IG1vZHVsZTEgPSAoKSA9PiBpbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIm5leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9idWlsdGluL2dsb2JhbC1lcnJvci5qc1wiKTtcbmNvbnN0IG1vZHVsZTIgPSAoKSA9PiBpbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIm5leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9idWlsdGluL25vdC1mb3VuZC5qc1wiKTtcbmNvbnN0IG1vZHVsZTMgPSAoKSA9PiBpbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIm5leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9idWlsdGluL2ZvcmJpZGRlbi5qc1wiKTtcbmNvbnN0IG1vZHVsZTQgPSAoKSA9PiBpbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIm5leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9idWlsdGluL3VuYXV0aG9yaXplZC5qc1wiKTtcbmNvbnN0IHBhZ2U1ID0gKCkgPT4gaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvZGhhbmFuamF5cGFpL0NvZGluZy9QZXJzb25hbC9vcG0vcGFja2FnZXMvd2ViL2FwcC9wYWdlLnRzeFwiKTtcbmltcG9ydCB7IEFwcFBhZ2VSb3V0ZU1vZHVsZSB9IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL3JvdXRlLW1vZHVsZXMvYXBwLXBhZ2UvbW9kdWxlLmNvbXBpbGVkXCIgd2l0aCB7XG4gICAgJ3R1cmJvcGFjay10cmFuc2l0aW9uJzogJ25leHQtc3NyJ1xufTtcbmltcG9ydCB7IFJvdXRlS2luZCB9IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL3JvdXRlLWtpbmRcIiB3aXRoIHtcbiAgICAndHVyYm9wYWNrLXRyYW5zaXRpb24nOiAnbmV4dC1zZXJ2ZXItdXRpbGl0eSdcbn07XG5pbXBvcnQgeyBnZXRSZXZhbGlkYXRlUmVhc29uIH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvaW5zdHJ1bWVudGF0aW9uL3V0aWxzXCI7XG5pbXBvcnQgeyBnZXRUcmFjZXIsIFNwYW5LaW5kIH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvbGliL3RyYWNlL3RyYWNlclwiO1xuaW1wb3J0IHsgZ2V0UmVxdWVzdE1ldGEgfSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9yZXF1ZXN0LW1ldGFcIjtcbmltcG9ydCB7IEJhc2VTZXJ2ZXJTcGFuIH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvbGliL3RyYWNlL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgaW50ZXJvcERlZmF1bHQgfSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9hcHAtcmVuZGVyL2ludGVyb3AtZGVmYXVsdFwiO1xuaW1wb3J0IHsgc3RyaXBGbGlnaHRIZWFkZXJzIH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvYXBwLXJlbmRlci9zdHJpcC1mbGlnaHQtaGVhZGVyc1wiO1xuaW1wb3J0IHsgTm9kZU5leHRSZXF1ZXN0LCBOb2RlTmV4dFJlc3BvbnNlIH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvYmFzZS1odHRwL25vZGVcIjtcbmltcG9ydCB7IGNoZWNrSXNBcHBQUFJFbmFibGVkIH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvbGliL2V4cGVyaW1lbnRhbC9wcHJcIjtcbmltcG9ydCB7IGdldEZhbGxiYWNrUm91dGVQYXJhbXMgfSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9yZXF1ZXN0L2ZhbGxiYWNrLXBhcmFtc1wiO1xuaW1wb3J0IHsgc2V0UmVmZXJlbmNlTWFuaWZlc3RzU2luZ2xldG9uIH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvYXBwLXJlbmRlci9lbmNyeXB0aW9uLXV0aWxzXCI7XG5pbXBvcnQgeyBpc0h0bWxCb3RSZXF1ZXN0LCBzaG91bGRTZXJ2ZVN0cmVhbWluZ01ldGFkYXRhIH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvbGliL3N0cmVhbWluZy1tZXRhZGF0YVwiO1xuaW1wb3J0IHsgY3JlYXRlU2VydmVyTW9kdWxlTWFwIH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvYXBwLXJlbmRlci9hY3Rpb24tdXRpbHNcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZUFwcFBhdGggfSBmcm9tIFwibmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2FwcC1wYXRoc1wiO1xuaW1wb3J0IHsgZ2V0SXNQb3NzaWJsZVNlcnZlckFjdGlvbiB9IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL2xpYi9zZXJ2ZXItYWN0aW9uLXJlcXVlc3QtbWV0YVwiO1xuaW1wb3J0IHsgUlNDX0hFQURFUiwgTkVYVF9ST1VURVJfUFJFRkVUQ0hfSEVBREVSLCBORVhUX0lTX1BSRVJFTkRFUl9IRUFERVIsIE5FWFRfRElEX1BPU1RQT05FX0hFQURFUiwgUlNDX0NPTlRFTlRfVFlQRV9IRUFERVIgfSBmcm9tIFwibmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2FwcC1yb3V0ZXItaGVhZGVyc1wiO1xuaW1wb3J0IHsgZ2V0Qm90VHlwZSwgaXNCb3QgfSBmcm9tIFwibmV4dC9kaXN0L3NoYXJlZC9saWIvcm91dGVyL3V0aWxzL2lzLWJvdFwiO1xuaW1wb3J0IHsgQ2FjaGVkUm91dGVLaW5kIH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvcmVzcG9uc2UtY2FjaGVcIjtcbmltcG9ydCB7IEZhbGxiYWNrTW9kZSwgcGFyc2VGYWxsYmFja0ZpZWxkIH0gZnJvbSBcIm5leHQvZGlzdC9saWIvZmFsbGJhY2tcIjtcbmltcG9ydCBSZW5kZXJSZXN1bHQgZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvcmVuZGVyLXJlc3VsdFwiO1xuaW1wb3J0IHsgQ0FDSEVfT05FX1lFQVIsIEhUTUxfQ09OVEVOVF9UWVBFX0hFQURFUiwgTkVYVF9DQUNIRV9UQUdTX0hFQURFUiB9IGZyb20gXCJuZXh0L2Rpc3QvbGliL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgRU5DT0RFRF9UQUdTIH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvc3RyZWFtLXV0aWxzL2VuY29kZWQtdGFnc1wiO1xuaW1wb3J0IHsgc2VuZFJlbmRlclJlc3VsdCB9IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL3NlbmQtcGF5bG9hZFwiO1xuaW1wb3J0IHsgTm9GYWxsYmFja0Vycm9yIH0gZnJvbSBcIm5leHQvZGlzdC9zaGFyZWQvbGliL25vLWZhbGxiYWNrLWVycm9yLmV4dGVybmFsXCI7XG4vLyBXZSBpbmplY3QgdGhlIHRyZWUgYW5kIHBhZ2VzIGhlcmUgc28gdGhhdCB3ZSBjYW4gdXNlIHRoZW0gaW4gdGhlIHJvdXRlXG4vLyBtb2R1bGUuXG5jb25zdCB0cmVlID0ge1xuICAgICAgICBjaGlsZHJlbjogW1xuICAgICAgICAnJyxcbiAgICAgICAge1xuICAgICAgICBjaGlsZHJlbjogWydfX1BBR0VfXycsIHt9LCB7XG4gICAgICAgICAgcGFnZTogW3BhZ2U1LCBcIi9Vc2Vycy9kaGFuYW5qYXlwYWkvQ29kaW5nL1BlcnNvbmFsL29wbS9wYWNrYWdlcy93ZWIvYXBwL3BhZ2UudHN4XCJdLFxuICAgICAgICAgIFxuICAgICAgICB9XVxuICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAnbGF5b3V0JzogW21vZHVsZTAsIFwiL1VzZXJzL2RoYW5hbmpheXBhaS9Db2RpbmcvUGVyc29uYWwvb3BtL3BhY2thZ2VzL3dlYi9hcHAvbGF5b3V0LnRzeFwiXSxcbidnbG9iYWwtZXJyb3InOiBbbW9kdWxlMSwgXCJuZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvYnVpbHRpbi9nbG9iYWwtZXJyb3IuanNcIl0sXG4nbm90LWZvdW5kJzogW21vZHVsZTIsIFwibmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2J1aWx0aW4vbm90LWZvdW5kLmpzXCJdLFxuJ2ZvcmJpZGRlbic6IFttb2R1bGUzLCBcIm5leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9idWlsdGluL2ZvcmJpZGRlbi5qc1wiXSxcbid1bmF1dGhvcml6ZWQnOiBbbW9kdWxlNCwgXCJuZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvYnVpbHRpbi91bmF1dGhvcml6ZWQuanNcIl0sXG4gICAgICAgIFxuICAgICAgfVxuICAgICAgXVxuICAgICAgfS5jaGlsZHJlbjtcbmNvbnN0IHBhZ2VzID0gW1wiL1VzZXJzL2RoYW5hbmpheXBhaS9Db2RpbmcvUGVyc29uYWwvb3BtL3BhY2thZ2VzL3dlYi9hcHAvcGFnZS50c3hcIl07XG5leHBvcnQgeyB0cmVlLCBwYWdlcyB9O1xuaW1wb3J0IEdsb2JhbEVycm9yIGZyb20gXCJuZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvYnVpbHRpbi9nbG9iYWwtZXJyb3IuanNcIiB3aXRoIHtcbiAgICAndHVyYm9wYWNrLXRyYW5zaXRpb24nOiAnbmV4dC1zZXJ2ZXItdXRpbGl0eSdcbn07XG5leHBvcnQgeyBHbG9iYWxFcnJvciB9O1xuY29uc3QgX19uZXh0X2FwcF9yZXF1aXJlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fXG5jb25zdCBfX25leHRfYXBwX2xvYWRfY2h1bmtfXyA9ICgpID0+IFByb21pc2UucmVzb2x2ZSgpXG5leHBvcnQgY29uc3QgX19uZXh0X2FwcF9fID0ge1xuICAgIHJlcXVpcmU6IF9fbmV4dF9hcHBfcmVxdWlyZV9fLFxuICAgIGxvYWRDaHVuazogX19uZXh0X2FwcF9sb2FkX2NodW5rX19cbn07XG5pbXBvcnQgKiBhcyBlbnRyeUJhc2UgZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvYXBwLXJlbmRlci9lbnRyeS1iYXNlXCIgd2l0aCB7XG4gICAgJ3R1cmJvcGFjay10cmFuc2l0aW9uJzogJ25leHQtc2VydmVyLXV0aWxpdHknXG59O1xuaW1wb3J0IHsgUmVkaXJlY3RTdGF0dXNDb2RlIH0gZnJvbSBcIm5leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9yZWRpcmVjdC1zdGF0dXMtY29kZVwiO1xuZXhwb3J0ICogZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvYXBwLXJlbmRlci9lbnRyeS1iYXNlXCIgd2l0aCB7XG4gICAgJ3R1cmJvcGFjay10cmFuc2l0aW9uJzogJ25leHQtc2VydmVyLXV0aWxpdHknXG59O1xuLy8gQ3JlYXRlIGFuZCBleHBvcnQgdGhlIHJvdXRlIG1vZHVsZSB0aGF0IHdpbGwgYmUgY29uc3VtZWQuXG5leHBvcnQgY29uc3Qgcm91dGVNb2R1bGUgPSBuZXcgQXBwUGFnZVJvdXRlTW9kdWxlKHtcbiAgICBkZWZpbml0aW9uOiB7XG4gICAgICAgIGtpbmQ6IFJvdXRlS2luZC5BUFBfUEFHRSxcbiAgICAgICAgcGFnZTogXCIvcGFnZVwiLFxuICAgICAgICBwYXRobmFtZTogXCIvXCIsXG4gICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgYXJlbid0IHVzZWQgaW4gcHJvZHVjdGlvbi5cbiAgICAgICAgYnVuZGxlUGF0aDogJycsXG4gICAgICAgIGZpbGVuYW1lOiAnJyxcbiAgICAgICAgYXBwUGF0aHM6IFtdXG4gICAgfSxcbiAgICB1c2VybGFuZDoge1xuICAgICAgICBsb2FkZXJUcmVlOiB0cmVlXG4gICAgfSxcbiAgICBkaXN0RGlyOiBwcm9jZXNzLmVudi5fX05FWFRfUkVMQVRJVkVfRElTVF9ESVIgfHwgJycsXG4gICAgcmVsYXRpdmVQcm9qZWN0RGlyOiBwcm9jZXNzLmVudi5fX05FWFRfUkVMQVRJVkVfUFJPSkVDVF9ESVIgfHwgJydcbn0pO1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhhbmRsZXIocmVxLCByZXMsIGN0eCkge1xuICAgIHZhciBfdGhpcztcbiAgICBsZXQgc3JjUGFnZSA9IFwiL3BhZ2VcIjtcbiAgICAvLyB0dXJib3BhY2sgZG9lc24ndCBub3JtYWxpemUgYC9pbmRleGAgaW4gdGhlIHBhZ2UgbmFtZVxuICAgIC8vIHNvIHdlIG5lZWQgdG8gdG8gcHJvY2VzcyBkeW5hbWljIHJvdXRlcyBwcm9wZXJseVxuICAgIC8vIFRPRE86IGZpeCB0dXJib3BhY2sgcHJvdmlkaW5nIGRpZmZlcmluZyB2YWx1ZSBmcm9tIHdlYnBhY2tcbiAgICBpZiAocHJvY2Vzcy5lbnYuVFVSQk9QQUNLKSB7XG4gICAgICAgIHNyY1BhZ2UgPSBzcmNQYWdlLnJlcGxhY2UoL1xcL2luZGV4JC8sICcnKSB8fCAnLyc7XG4gICAgfSBlbHNlIGlmIChzcmNQYWdlID09PSAnL2luZGV4Jykge1xuICAgICAgICAvLyB3ZSBhbHdheXMgbm9ybWFsaXplIC9pbmRleCBzcGVjaWZpY2FsbHlcbiAgICAgICAgc3JjUGFnZSA9ICcvJztcbiAgICB9XG4gICAgY29uc3QgbXVsdGlab25lRHJhZnRNb2RlID0gcHJvY2Vzcy5lbnYuX19ORVhUX01VTFRJX1pPTkVfRFJBRlRfTU9ERTtcbiAgICBjb25zdCBpbml0aWFsUG9zdHBvbmVkID0gZ2V0UmVxdWVzdE1ldGEocmVxLCAncG9zdHBvbmVkJyk7XG4gICAgLy8gVE9ETzogcmVwbGFjZSB3aXRoIG1vcmUgc3BlY2lmaWMgZmxhZ3NcbiAgICBjb25zdCBtaW5pbWFsTW9kZSA9IGdldFJlcXVlc3RNZXRhKHJlcSwgJ21pbmltYWxNb2RlJyk7XG4gICAgY29uc3QgcHJlcGFyZVJlc3VsdCA9IGF3YWl0IHJvdXRlTW9kdWxlLnByZXBhcmUocmVxLCByZXMsIHtcbiAgICAgICAgc3JjUGFnZSxcbiAgICAgICAgbXVsdGlab25lRHJhZnRNb2RlXG4gICAgfSk7XG4gICAgaWYgKCFwcmVwYXJlUmVzdWx0KSB7XG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNDAwO1xuICAgICAgICByZXMuZW5kKCdCYWQgUmVxdWVzdCcpO1xuICAgICAgICBjdHgud2FpdFVudGlsID09IG51bGwgPyB2b2lkIDAgOiBjdHgud2FpdFVudGlsLmNhbGwoY3R4LCBQcm9taXNlLnJlc29sdmUoKSk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCB7IGJ1aWxkSWQsIHF1ZXJ5LCBwYXJhbXMsIHBhcnNlZFVybCwgcGFnZUlzRHluYW1pYywgYnVpbGRNYW5pZmVzdCwgbmV4dEZvbnRNYW5pZmVzdCwgcmVhY3RMb2FkYWJsZU1hbmlmZXN0LCBzZXJ2ZXJBY3Rpb25zTWFuaWZlc3QsIGNsaWVudFJlZmVyZW5jZU1hbmlmZXN0LCBzdWJyZXNvdXJjZUludGVncml0eU1hbmlmZXN0LCBwcmVyZW5kZXJNYW5pZmVzdCwgaXNEcmFmdE1vZGUsIHJlc29sdmVkUGF0aG5hbWUsIHJldmFsaWRhdGVPbmx5R2VuZXJhdGVkLCByb3V0ZXJTZXJ2ZXJDb250ZXh0LCBuZXh0Q29uZmlnLCBpbnRlcmNlcHRpb25Sb3V0ZVBhdHRlcm5zIH0gPSBwcmVwYXJlUmVzdWx0O1xuICAgIGNvbnN0IHBhdGhuYW1lID0gcGFyc2VkVXJsLnBhdGhuYW1lIHx8ICcvJztcbiAgICBjb25zdCBub3JtYWxpemVkU3JjUGFnZSA9IG5vcm1hbGl6ZUFwcFBhdGgoc3JjUGFnZSk7XG4gICAgbGV0IHsgaXNPbkRlbWFuZFJldmFsaWRhdGUgfSA9IHByZXBhcmVSZXN1bHQ7XG4gICAgY29uc3QgcHJlcmVuZGVySW5mbyA9IHJvdXRlTW9kdWxlLm1hdGNoKHBhdGhuYW1lLCBwcmVyZW5kZXJNYW5pZmVzdCk7XG4gICAgY29uc3QgaXNQcmVyZW5kZXJlZCA9ICEhcHJlcmVuZGVyTWFuaWZlc3Qucm91dGVzW3Jlc29sdmVkUGF0aG5hbWVdO1xuICAgIGxldCBpc1NTRyA9IEJvb2xlYW4ocHJlcmVuZGVySW5mbyB8fCBpc1ByZXJlbmRlcmVkIHx8IHByZXJlbmRlck1hbmlmZXN0LnJvdXRlc1tub3JtYWxpemVkU3JjUGFnZV0pO1xuICAgIGNvbnN0IHVzZXJBZ2VudCA9IHJlcS5oZWFkZXJzWyd1c2VyLWFnZW50J10gfHwgJyc7XG4gICAgY29uc3QgYm90VHlwZSA9IGdldEJvdFR5cGUodXNlckFnZW50KTtcbiAgICBjb25zdCBpc0h0bWxCb3QgPSBpc0h0bWxCb3RSZXF1ZXN0KHJlcSk7XG4gICAgLyoqXG4gICAqIElmIHRydWUsIHRoaXMgaW5kaWNhdGVzIHRoYXQgdGhlIHJlcXVlc3QgYmVpbmcgbWFkZSBpcyBmb3IgYW4gYXBwXG4gICAqIHByZWZldGNoIHJlcXVlc3QuXG4gICAqLyBjb25zdCBpc1ByZWZldGNoUlNDUmVxdWVzdCA9IGdldFJlcXVlc3RNZXRhKHJlcSwgJ2lzUHJlZmV0Y2hSU0NSZXF1ZXN0JykgPz8gcmVxLmhlYWRlcnNbTkVYVF9ST1VURVJfUFJFRkVUQ0hfSEVBREVSXSA9PT0gJzEnIC8vIGV4Y2x1ZGUgcnVudGltZSBwcmVmZXRjaGVzLCB3aGljaCB1c2UgJzInXG4gICAgO1xuICAgIC8vIE5PVEU6IERvbid0IGRlbGV0ZSBoZWFkZXJzW1JTQ10geWV0LCBpdCBzdGlsbCBuZWVkcyB0byBiZSB1c2VkIGluIHJlbmRlclRvSFRNTCBsYXRlclxuICAgIGNvbnN0IGlzUlNDUmVxdWVzdCA9IGdldFJlcXVlc3RNZXRhKHJlcSwgJ2lzUlNDUmVxdWVzdCcpID8/IEJvb2xlYW4ocmVxLmhlYWRlcnNbUlNDX0hFQURFUl0pO1xuICAgIGNvbnN0IGlzUG9zc2libGVTZXJ2ZXJBY3Rpb24gPSBnZXRJc1Bvc3NpYmxlU2VydmVyQWN0aW9uKHJlcSk7XG4gICAgLyoqXG4gICAqIElmIHRoZSByb3V0ZSBiZWluZyByZW5kZXJlZCBpcyBhbiBhcHAgcGFnZSwgYW5kIHRoZSBwcHIgZmVhdHVyZSBoYXMgYmVlblxuICAgKiBlbmFibGVkLCB0aGVuIHRoZSBnaXZlbiByb3V0ZSBfY291bGRfIHN1cHBvcnQgUFBSLlxuICAgKi8gY29uc3QgY291bGRTdXBwb3J0UFBSID0gY2hlY2tJc0FwcFBQUkVuYWJsZWQobmV4dENvbmZpZy5leHBlcmltZW50YWwucHByKTtcbiAgICAvLyBXaGVuIGVuYWJsZWQsIHRoaXMgd2lsbCBhbGxvdyB0aGUgdXNlIG9mIHRoZSBgP19fbmV4dHBwcm9ubHlgIHF1ZXJ5IHRvXG4gICAgLy8gZW5hYmxlIGRlYnVnZ2luZyBvZiB0aGUgc3RhdGljIHNoZWxsLlxuICAgIGNvbnN0IGhhc0RlYnVnU3RhdGljU2hlbGxRdWVyeSA9IHByb2Nlc3MuZW52Ll9fTkVYVF9FWFBFUklNRU5UQUxfU1RBVElDX1NIRUxMX0RFQlVHR0lORyA9PT0gJzEnICYmIHR5cGVvZiBxdWVyeS5fX25leHRwcHJvbmx5ICE9PSAndW5kZWZpbmVkJyAmJiBjb3VsZFN1cHBvcnRQUFI7XG4gICAgLy8gV2hlbiBlbmFibGVkLCB0aGlzIHdpbGwgYWxsb3cgdGhlIHVzZSBvZiB0aGUgYD9fX25leHRwcHJvbmx5YCBxdWVyeVxuICAgIC8vIHRvIGVuYWJsZSBkZWJ1Z2dpbmcgb2YgdGhlIGZhbGxiYWNrIHNoZWxsLlxuICAgIGNvbnN0IGhhc0RlYnVnRmFsbGJhY2tTaGVsbFF1ZXJ5ID0gaGFzRGVidWdTdGF0aWNTaGVsbFF1ZXJ5ICYmIHF1ZXJ5Ll9fbmV4dHBwcm9ubHkgPT09ICdmYWxsYmFjayc7XG4gICAgLy8gVGhpcyBwYWdlIHN1cHBvcnRzIFBQUiBpZiBpdCBpcyBtYXJrZWQgYXMgYmVpbmcgYFBBUlRJQUxMWV9TVEFUSUNgIGluIHRoZVxuICAgIC8vIHByZXJlbmRlciBtYW5pZmVzdCBhbmQgdGhpcyBpcyBhbiBhcHAgcGFnZS5cbiAgICBjb25zdCBpc1JvdXRlUFBSRW5hYmxlZCA9IGNvdWxkU3VwcG9ydFBQUiAmJiAoKChfdGhpcyA9IHByZXJlbmRlck1hbmlmZXN0LnJvdXRlc1tub3JtYWxpemVkU3JjUGFnZV0gPz8gcHJlcmVuZGVyTWFuaWZlc3QuZHluYW1pY1JvdXRlc1tub3JtYWxpemVkU3JjUGFnZV0pID09IG51bGwgPyB2b2lkIDAgOiBfdGhpcy5yZW5kZXJpbmdNb2RlKSA9PT0gJ1BBUlRJQUxMWV9TVEFUSUMnIHx8IC8vIElkZWFsbHkgd2UnZCB3YW50IHRvIGNoZWNrIHRoZSBhcHBDb25maWcgdG8gc2VlIGlmIHRoaXMgcGFnZSBoYXMgUFBSXG4gICAgLy8gZW5hYmxlZCBvciBub3QsIGJ1dCB0aGF0IHdvdWxkIHJlcXVpcmUgcGx1bWJpbmcgdGhlIGFwcENvbmZpZyB0aHJvdWdoXG4gICAgLy8gdG8gdGhlIHNlcnZlciBkdXJpbmcgZGV2ZWxvcG1lbnQuIFdlIGFzc3VtZSB0aGF0IHRoZSBwYWdlIHN1cHBvcnRzIGl0XG4gICAgLy8gYnV0IG9ubHkgZHVyaW5nIGRldmVsb3BtZW50LlxuICAgIGhhc0RlYnVnU3RhdGljU2hlbGxRdWVyeSAmJiAocm91dGVNb2R1bGUuaXNEZXYgPT09IHRydWUgfHwgKHJvdXRlclNlcnZlckNvbnRleHQgPT0gbnVsbCA/IHZvaWQgMCA6IHJvdXRlclNlcnZlckNvbnRleHQuZXhwZXJpbWVudGFsVGVzdFByb3h5KSA9PT0gdHJ1ZSkpO1xuICAgIGNvbnN0IGlzRGVidWdTdGF0aWNTaGVsbCA9IGhhc0RlYnVnU3RhdGljU2hlbGxRdWVyeSAmJiBpc1JvdXRlUFBSRW5hYmxlZDtcbiAgICAvLyBXZSBzaG91bGQgZW5hYmxlIGRlYnVnZ2luZyBkeW5hbWljIGFjY2Vzc2VzIHdoZW4gdGhlIHN0YXRpYyBzaGVsbFxuICAgIC8vIGRlYnVnZ2luZyBoYXMgYmVlbiBlbmFibGVkIGFuZCB3ZSdyZSBhbHNvIGluIGRldmVsb3BtZW50IG1vZGUuXG4gICAgY29uc3QgaXNEZWJ1Z0R5bmFtaWNBY2Nlc3NlcyA9IGlzRGVidWdTdGF0aWNTaGVsbCAmJiByb3V0ZU1vZHVsZS5pc0RldiA9PT0gdHJ1ZTtcbiAgICBjb25zdCBpc0RlYnVnRmFsbGJhY2tTaGVsbCA9IGhhc0RlYnVnRmFsbGJhY2tTaGVsbFF1ZXJ5ICYmIGlzUm91dGVQUFJFbmFibGVkO1xuICAgIC8vIElmIHdlJ3JlIGluIG1pbmltYWwgbW9kZSwgdGhlbiB0cnkgdG8gZ2V0IHRoZSBwb3N0cG9uZWQgaW5mb3JtYXRpb24gZnJvbVxuICAgIC8vIHRoZSByZXF1ZXN0IG1ldGFkYXRhLiBJZiBhdmFpbGFibGUsIHVzZSBpdCBmb3IgcmVzdW1pbmcgdGhlIHBvc3Rwb25lZFxuICAgIC8vIHJlbmRlci5cbiAgICBjb25zdCBtaW5pbWFsUG9zdHBvbmVkID0gaXNSb3V0ZVBQUkVuYWJsZWQgPyBpbml0aWFsUG9zdHBvbmVkIDogdW5kZWZpbmVkO1xuICAgIC8vIElmIFBQUiBpcyBlbmFibGVkLCBhbmQgdGhpcyBpcyBhIFJTQyByZXF1ZXN0IChidXQgbm90IGEgcHJlZmV0Y2gpLCB0aGVuXG4gICAgLy8gd2UgY2FuIHVzZSB0aGlzIGZhY3QgdG8gb25seSBnZW5lcmF0ZSB0aGUgZmxpZ2h0IGRhdGEgZm9yIHRoZSByZXF1ZXN0XG4gICAgLy8gYmVjYXVzZSB3ZSBjYW4ndCBjYWNoZSB0aGUgSFRNTCAoYXMgaXQncyBhbHNvIGR5bmFtaWMpLlxuICAgIGNvbnN0IGlzRHluYW1pY1JTQ1JlcXVlc3QgPSBpc1JvdXRlUFBSRW5hYmxlZCAmJiBpc1JTQ1JlcXVlc3QgJiYgIWlzUHJlZmV0Y2hSU0NSZXF1ZXN0O1xuICAgIC8vIE5lZWQgdG8gcmVhZCB0aGlzIGJlZm9yZSBpdCdzIHN0cmlwcGVkIGJ5IHN0cmlwRmxpZ2h0SGVhZGVycy4gV2UgZG9uJ3RcbiAgICAvLyBuZWVkIHRvIHRyYW5zZmVyIGl0IHRvIHRoZSByZXF1ZXN0IG1ldGEgYmVjYXVzZSBpdCdzIG9ubHkgcmVhZFxuICAgIC8vIHdpdGhpbiB0aGlzIGZ1bmN0aW9uOyB0aGUgc3RhdGljIHNlZ21lbnQgZGF0YSBzaG91bGQgaGF2ZSBhbHJlYWR5IGJlZW5cbiAgICAvLyBnZW5lcmF0ZWQsIHNvIHdlIHdpbGwgYWx3YXlzIGVpdGhlciByZXR1cm4gYSBzdGF0aWMgcmVzcG9uc2Ugb3IgYSA0MDQuXG4gICAgY29uc3Qgc2VnbWVudFByZWZldGNoSGVhZGVyID0gZ2V0UmVxdWVzdE1ldGEocmVxLCAnc2VnbWVudFByZWZldGNoUlNDUmVxdWVzdCcpO1xuICAgIC8vIFRPRE86IGludmVzdGlnYXRlIGV4aXN0aW5nIGJ1ZyB3aXRoIHNob3VsZFNlcnZlU3RyZWFtaW5nTWV0YWRhdGEgYWx3YXlzXG4gICAgLy8gYmVpbmcgdHJ1ZSBmb3IgYSByZXZhbGlkYXRlIGR1ZSB0byBtb2RpZnlpbmcgdGhlIGJhc2Utc2VydmVyIHRoaXMucmVuZGVyT3B0c1xuICAgIC8vIHdoZW4gZml4aW5nIHRoaXMgdG8gY29ycmVjdCBsb2dpYyBpdCBjYXVzZXMgaHlkcmF0aW9uIGlzc3VlIHNpbmNlIHdlIHNldFxuICAgIC8vIHNlcnZlU3RyZWFtaW5nTWV0YWRhdGEgdG8gdHJ1ZSBkdXJpbmcgZXhwb3J0XG4gICAgbGV0IHNlcnZlU3RyZWFtaW5nTWV0YWRhdGEgPSAhdXNlckFnZW50ID8gdHJ1ZSA6IHNob3VsZFNlcnZlU3RyZWFtaW5nTWV0YWRhdGEodXNlckFnZW50LCBuZXh0Q29uZmlnLmh0bWxMaW1pdGVkQm90cyk7XG4gICAgaWYgKGlzSHRtbEJvdCAmJiBpc1JvdXRlUFBSRW5hYmxlZCkge1xuICAgICAgICBpc1NTRyA9IGZhbHNlO1xuICAgICAgICBzZXJ2ZVN0cmVhbWluZ01ldGFkYXRhID0gZmFsc2U7XG4gICAgfVxuICAgIC8vIEluIGRldmVsb3BtZW50LCB3ZSBhbHdheXMgd2FudCB0byBnZW5lcmF0ZSBkeW5hbWljIEhUTUwuXG4gICAgbGV0IHN1cHBvcnRzRHluYW1pY1Jlc3BvbnNlID0gLy8gSWYgd2UncmUgaW4gZGV2ZWxvcG1lbnQsIHdlIGFsd2F5cyBzdXBwb3J0IGR5bmFtaWMgSFRNTCwgdW5sZXNzIGl0J3NcbiAgICAvLyBhIGRhdGEgcmVxdWVzdCwgaW4gd2hpY2ggY2FzZSB3ZSBvbmx5IHByb2R1Y2Ugc3RhdGljIEhUTUwuXG4gICAgcm91dGVNb2R1bGUuaXNEZXYgPT09IHRydWUgfHwgLy8gSWYgdGhpcyBpcyBub3QgU1NHIG9yIGRvZXMgbm90IGhhdmUgc3RhdGljIHBhdGhzLCB0aGVuIGl0IHN1cHBvcnRzXG4gICAgLy8gZHluYW1pYyBIVE1MLlxuICAgICFpc1NTRyB8fCAvLyBJZiB0aGlzIHJlcXVlc3QgaGFzIHByb3ZpZGVkIHBvc3Rwb25lZCBkYXRhLCBpdCBzdXBwb3J0cyBkeW5hbWljXG4gICAgLy8gSFRNTC5cbiAgICB0eXBlb2YgaW5pdGlhbFBvc3Rwb25lZCA9PT0gJ3N0cmluZycgfHwgLy8gSWYgdGhpcyBpcyBhIGR5bmFtaWMgUlNDIHJlcXVlc3QsIHRoZW4gdGhpcyByZW5kZXIgc3VwcG9ydHMgZHluYW1pY1xuICAgIC8vIEhUTUwgKGl0J3MgZHluYW1pYykuXG4gICAgaXNEeW5hbWljUlNDUmVxdWVzdDtcbiAgICAvLyBXaGVuIGh0bWwgYm90cyByZXF1ZXN0IFBQUiBwYWdlLCBwZXJmb3JtIHRoZSBmdWxsIGR5bmFtaWMgcmVuZGVyaW5nLlxuICAgIGNvbnN0IHNob3VsZFdhaXRPbkFsbFJlYWR5ID0gaXNIdG1sQm90ICYmIGlzUm91dGVQUFJFbmFibGVkO1xuICAgIGxldCBzc2dDYWNoZUtleSA9IG51bGw7XG4gICAgaWYgKCFpc0RyYWZ0TW9kZSAmJiBpc1NTRyAmJiAhc3VwcG9ydHNEeW5hbWljUmVzcG9uc2UgJiYgIWlzUG9zc2libGVTZXJ2ZXJBY3Rpb24gJiYgIW1pbmltYWxQb3N0cG9uZWQgJiYgIWlzRHluYW1pY1JTQ1JlcXVlc3QpIHtcbiAgICAgICAgc3NnQ2FjaGVLZXkgPSByZXNvbHZlZFBhdGhuYW1lO1xuICAgIH1cbiAgICAvLyB0aGUgc3RhdGljUGF0aEtleSBkaWZmZXJzIGZyb20gc3NnQ2FjaGVLZXkgc2luY2VcbiAgICAvLyBzc2dDYWNoZUtleSBpcyBudWxsIGluIGRldiBzaW5jZSB3ZSdyZSBhbHdheXMgaW4gXCJkeW5hbWljXCJcbiAgICAvLyBtb2RlIGluIGRldiB0byBieXBhc3MgdGhlIGNhY2hlLCBidXQgd2Ugc3RpbGwgbmVlZCB0byBob25vclxuICAgIC8vIGR5bmFtaWNQYXJhbXMgPSBmYWxzZSBpbiBkZXYgbW9kZVxuICAgIGxldCBzdGF0aWNQYXRoS2V5ID0gc3NnQ2FjaGVLZXk7XG4gICAgaWYgKCFzdGF0aWNQYXRoS2V5ICYmIHJvdXRlTW9kdWxlLmlzRGV2KSB7XG4gICAgICAgIHN0YXRpY1BhdGhLZXkgPSByZXNvbHZlZFBhdGhuYW1lO1xuICAgIH1cbiAgICAvLyBJZiB0aGlzIGlzIGEgcmVxdWVzdCBmb3IgYW4gYXBwIHBhdGggdGhhdCBzaG91bGQgYmUgc3RhdGljYWxseSBnZW5lcmF0ZWRcbiAgICAvLyBhbmQgd2UgYXJlbid0IGluIHRoZSBlZGdlIHJ1bnRpbWUsIHN0cmlwIHRoZSBmbGlnaHQgaGVhZGVycyBzbyBpdCB3aWxsXG4gICAgLy8gZ2VuZXJhdGUgdGhlIHN0YXRpYyByZXNwb25zZS5cbiAgICBpZiAoIXJvdXRlTW9kdWxlLmlzRGV2ICYmICFpc0RyYWZ0TW9kZSAmJiBpc1NTRyAmJiBpc1JTQ1JlcXVlc3QgJiYgIWlzRHluYW1pY1JTQ1JlcXVlc3QpIHtcbiAgICAgICAgc3RyaXBGbGlnaHRIZWFkZXJzKHJlcS5oZWFkZXJzKTtcbiAgICB9XG4gICAgY29uc3QgQ29tcG9uZW50TW9kID0ge1xuICAgICAgICAuLi5lbnRyeUJhc2UsXG4gICAgICAgIHRyZWUsXG4gICAgICAgIHBhZ2VzLFxuICAgICAgICBHbG9iYWxFcnJvcixcbiAgICAgICAgaGFuZGxlcixcbiAgICAgICAgcm91dGVNb2R1bGUsXG4gICAgICAgIF9fbmV4dF9hcHBfX1xuICAgIH07XG4gICAgLy8gQmVmb3JlIHJlbmRlcmluZyAod2hpY2ggaW5pdGlhbGl6ZXMgY29tcG9uZW50IHRyZWUgbW9kdWxlcyksIHdlIGhhdmUgdG9cbiAgICAvLyBzZXQgdGhlIHJlZmVyZW5jZSBtYW5pZmVzdHMgdG8gb3VyIGdsb2JhbCBzdG9yZSBzbyBTZXJ2ZXIgQWN0aW9uJ3NcbiAgICAvLyBlbmNyeXB0aW9uIHV0aWwgY2FuIGFjY2VzcyB0byB0aGVtIGF0IHRoZSB0b3AgbGV2ZWwgb2YgdGhlIHBhZ2UgbW9kdWxlLlxuICAgIGlmIChzZXJ2ZXJBY3Rpb25zTWFuaWZlc3QgJiYgY2xpZW50UmVmZXJlbmNlTWFuaWZlc3QpIHtcbiAgICAgICAgc2V0UmVmZXJlbmNlTWFuaWZlc3RzU2luZ2xldG9uKHtcbiAgICAgICAgICAgIHBhZ2U6IHNyY1BhZ2UsXG4gICAgICAgICAgICBjbGllbnRSZWZlcmVuY2VNYW5pZmVzdCxcbiAgICAgICAgICAgIHNlcnZlckFjdGlvbnNNYW5pZmVzdCxcbiAgICAgICAgICAgIHNlcnZlck1vZHVsZU1hcDogY3JlYXRlU2VydmVyTW9kdWxlTWFwKHtcbiAgICAgICAgICAgICAgICBzZXJ2ZXJBY3Rpb25zTWFuaWZlc3RcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBtZXRob2QgPSByZXEubWV0aG9kIHx8ICdHRVQnO1xuICAgIGNvbnN0IHRyYWNlciA9IGdldFRyYWNlcigpO1xuICAgIGNvbnN0IGFjdGl2ZVNwYW4gPSB0cmFjZXIuZ2V0QWN0aXZlU2NvcGVTcGFuKCk7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgdmFyeUhlYWRlciA9IHJvdXRlTW9kdWxlLmdldFZhcnlIZWFkZXIocmVzb2x2ZWRQYXRobmFtZSwgaW50ZXJjZXB0aW9uUm91dGVQYXR0ZXJucyk7XG4gICAgICAgIHJlcy5zZXRIZWFkZXIoJ1ZhcnknLCB2YXJ5SGVhZGVyKTtcbiAgICAgICAgY29uc3QgaW52b2tlUm91dGVNb2R1bGUgPSBhc3luYyAoc3BhbiwgY29udGV4dCk9PntcbiAgICAgICAgICAgIGNvbnN0IG5leHRSZXEgPSBuZXcgTm9kZU5leHRSZXF1ZXN0KHJlcSk7XG4gICAgICAgICAgICBjb25zdCBuZXh0UmVzID0gbmV3IE5vZGVOZXh0UmVzcG9uc2UocmVzKTtcbiAgICAgICAgICAgIC8vIFRPRE86IGFkYXB0IGZvciBwdXR0aW5nIHRoZSBSREMgaW5zaWRlIHRoZSBwb3N0cG9uZWQgZGF0YVxuICAgICAgICAgICAgLy8gSWYgd2UncmUgaW4gZGV2LCBhbmQgdGhpcyBpc24ndCBhIHByZWZldGNoIG9yIGEgc2VydmVyIGFjdGlvbixcbiAgICAgICAgICAgIC8vIHdlIHNob3VsZCBzZWVkIHRoZSByZXN1bWUgZGF0YSBjYWNoZS5cbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgICAgICAgICAgIGlmIChuZXh0Q29uZmlnLmV4cGVyaW1lbnRhbC5jYWNoZUNvbXBvbmVudHMgJiYgIWlzUHJlZmV0Y2hSU0NSZXF1ZXN0ICYmICFjb250ZXh0LnJlbmRlck9wdHMuaXNQb3NzaWJsZVNlcnZlckFjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB3YXJtdXAgPSBhd2FpdCByb3V0ZU1vZHVsZS53YXJtdXAobmV4dFJlcSwgbmV4dFJlcywgY29udGV4dCk7XG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSB3YXJtdXAgaXMgc3VjY2Vzc2Z1bCwgd2Ugc2hvdWxkIHVzZSB0aGUgcmVzdW1lIGRhdGFcbiAgICAgICAgICAgICAgICAgICAgLy8gY2FjaGUgZnJvbSB0aGUgd2FybXVwLlxuICAgICAgICAgICAgICAgICAgICBpZiAod2FybXVwLm1ldGFkYXRhLnJlbmRlclJlc3VtZURhdGFDYWNoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5yZW5kZXJPcHRzLnJlbmRlclJlc3VtZURhdGFDYWNoZSA9IHdhcm11cC5tZXRhZGF0YS5yZW5kZXJSZXN1bWVEYXRhQ2FjaGU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcm91dGVNb2R1bGUucmVuZGVyKG5leHRSZXEsIG5leHRSZXMsIGNvbnRleHQpLmZpbmFsbHkoKCk9PntcbiAgICAgICAgICAgICAgICBpZiAoIXNwYW4pIHJldHVybjtcbiAgICAgICAgICAgICAgICBzcGFuLnNldEF0dHJpYnV0ZXMoe1xuICAgICAgICAgICAgICAgICAgICAnaHR0cC5zdGF0dXNfY29kZSc6IHJlcy5zdGF0dXNDb2RlLFxuICAgICAgICAgICAgICAgICAgICAnbmV4dC5yc2MnOiBmYWxzZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJvb3RTcGFuQXR0cmlidXRlcyA9IHRyYWNlci5nZXRSb290U3BhbkF0dHJpYnV0ZXMoKTtcbiAgICAgICAgICAgICAgICAvLyBXZSB3ZXJlIHVuYWJsZSB0byBnZXQgYXR0cmlidXRlcywgcHJvYmFibHkgT1RFTCBpcyBub3QgZW5hYmxlZFxuICAgICAgICAgICAgICAgIGlmICghcm9vdFNwYW5BdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJvb3RTcGFuQXR0cmlidXRlcy5nZXQoJ25leHQuc3Bhbl90eXBlJykgIT09IEJhc2VTZXJ2ZXJTcGFuLmhhbmRsZVJlcXVlc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBVbmV4cGVjdGVkIHJvb3Qgc3BhbiB0eXBlICcke3Jvb3RTcGFuQXR0cmlidXRlcy5nZXQoJ25leHQuc3Bhbl90eXBlJyl9Jy4gUGxlYXNlIHJlcG9ydCB0aGlzIE5leHQuanMgaXNzdWUgaHR0cHM6Ly9naXRodWIuY29tL3ZlcmNlbC9uZXh0LmpzYCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3Qgcm91dGUgPSByb290U3BhbkF0dHJpYnV0ZXMuZ2V0KCduZXh0LnJvdXRlJyk7XG4gICAgICAgICAgICAgICAgaWYgKHJvdXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBgJHttZXRob2R9ICR7cm91dGV9YDtcbiAgICAgICAgICAgICAgICAgICAgc3Bhbi5zZXRBdHRyaWJ1dGVzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICduZXh0LnJvdXRlJzogcm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAnaHR0cC5yb3V0ZSc6IHJvdXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25leHQuc3Bhbl9uYW1lJzogbmFtZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3Bhbi51cGRhdGVOYW1lKG5hbWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNwYW4udXBkYXRlTmFtZShgJHttZXRob2R9ICR7cmVxLnVybH1gKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgZG9SZW5kZXIgPSBhc3luYyAoeyBzcGFuLCBwb3N0cG9uZWQsIGZhbGxiYWNrUm91dGVQYXJhbXMgfSk9PntcbiAgICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSB7XG4gICAgICAgICAgICAgICAgcXVlcnksXG4gICAgICAgICAgICAgICAgcGFyYW1zLFxuICAgICAgICAgICAgICAgIHBhZ2U6IG5vcm1hbGl6ZWRTcmNQYWdlLFxuICAgICAgICAgICAgICAgIHNoYXJlZENvbnRleHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgYnVpbGRJZFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc2VydmVyQ29tcG9uZW50c0htckNhY2hlOiBnZXRSZXF1ZXN0TWV0YShyZXEsICdzZXJ2ZXJDb21wb25lbnRzSG1yQ2FjaGUnKSxcbiAgICAgICAgICAgICAgICBmYWxsYmFja1JvdXRlUGFyYW1zLFxuICAgICAgICAgICAgICAgIHJlbmRlck9wdHM6IHtcbiAgICAgICAgICAgICAgICAgICAgQXBwOiAoKT0+bnVsbCxcbiAgICAgICAgICAgICAgICAgICAgRG9jdW1lbnQ6ICgpPT5udWxsLFxuICAgICAgICAgICAgICAgICAgICBwYWdlQ29uZmlnOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgQ29tcG9uZW50TW9kLFxuICAgICAgICAgICAgICAgICAgICBDb21wb25lbnQ6IGludGVyb3BEZWZhdWx0KENvbXBvbmVudE1vZCksXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgICAgICAgICAgICAgcm91dGVNb2R1bGUsXG4gICAgICAgICAgICAgICAgICAgIHBhZ2U6IHNyY1BhZ2UsXG4gICAgICAgICAgICAgICAgICAgIHBvc3Rwb25lZCxcbiAgICAgICAgICAgICAgICAgICAgc2hvdWxkV2FpdE9uQWxsUmVhZHksXG4gICAgICAgICAgICAgICAgICAgIHNlcnZlU3RyZWFtaW5nTWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzRHluYW1pY1Jlc3BvbnNlOiB0eXBlb2YgcG9zdHBvbmVkID09PSAnc3RyaW5nJyB8fCBzdXBwb3J0c0R5bmFtaWNSZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgYnVpbGRNYW5pZmVzdCxcbiAgICAgICAgICAgICAgICAgICAgbmV4dEZvbnRNYW5pZmVzdCxcbiAgICAgICAgICAgICAgICAgICAgcmVhY3RMb2FkYWJsZU1hbmlmZXN0LFxuICAgICAgICAgICAgICAgICAgICBzdWJyZXNvdXJjZUludGVncml0eU1hbmlmZXN0LFxuICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJBY3Rpb25zTWFuaWZlc3QsXG4gICAgICAgICAgICAgICAgICAgIGNsaWVudFJlZmVyZW5jZU1hbmlmZXN0LFxuICAgICAgICAgICAgICAgICAgICBzZXRJc3JTdGF0dXM6IHJvdXRlclNlcnZlckNvbnRleHQgPT0gbnVsbCA/IHZvaWQgMCA6IHJvdXRlclNlcnZlckNvbnRleHQuc2V0SXNyU3RhdHVzLFxuICAgICAgICAgICAgICAgICAgICBkaXI6IHByb2Nlc3MuZW52Lk5FWFRfUlVOVElNRSA9PT0gJ25vZGVqcycgPyByZXF1aXJlKCdwYXRoJykuam9pbigvKiB0dXJib3BhY2tJZ25vcmU6IHRydWUgKi8gcHJvY2Vzcy5jd2QoKSwgcm91dGVNb2R1bGUucmVsYXRpdmVQcm9qZWN0RGlyKSA6IGAke3Byb2Nlc3MuY3dkKCl9LyR7cm91dGVNb2R1bGUucmVsYXRpdmVQcm9qZWN0RGlyfWAsXG4gICAgICAgICAgICAgICAgICAgIGlzRHJhZnRNb2RlLFxuICAgICAgICAgICAgICAgICAgICBpc1JldmFsaWRhdGU6IGlzU1NHICYmICFwb3N0cG9uZWQgJiYgIWlzRHluYW1pY1JTQ1JlcXVlc3QsXG4gICAgICAgICAgICAgICAgICAgIGJvdFR5cGUsXG4gICAgICAgICAgICAgICAgICAgIGlzT25EZW1hbmRSZXZhbGlkYXRlLFxuICAgICAgICAgICAgICAgICAgICBpc1Bvc3NpYmxlU2VydmVyQWN0aW9uLFxuICAgICAgICAgICAgICAgICAgICBhc3NldFByZWZpeDogbmV4dENvbmZpZy5hc3NldFByZWZpeCxcbiAgICAgICAgICAgICAgICAgICAgbmV4dENvbmZpZ091dHB1dDogbmV4dENvbmZpZy5vdXRwdXQsXG4gICAgICAgICAgICAgICAgICAgIGNyb3NzT3JpZ2luOiBuZXh0Q29uZmlnLmNyb3NzT3JpZ2luLFxuICAgICAgICAgICAgICAgICAgICB0cmFpbGluZ1NsYXNoOiBuZXh0Q29uZmlnLnRyYWlsaW5nU2xhc2gsXG4gICAgICAgICAgICAgICAgICAgIHByZXZpZXdQcm9wczogcHJlcmVuZGVyTWFuaWZlc3QucHJldmlldyxcbiAgICAgICAgICAgICAgICAgICAgZGVwbG95bWVudElkOiBuZXh0Q29uZmlnLmRlcGxveW1lbnRJZCxcbiAgICAgICAgICAgICAgICAgICAgZW5hYmxlVGFpbnRpbmc6IG5leHRDb25maWcuZXhwZXJpbWVudGFsLnRhaW50LFxuICAgICAgICAgICAgICAgICAgICBodG1sTGltaXRlZEJvdHM6IG5leHRDb25maWcuaHRtbExpbWl0ZWRCb3RzLFxuICAgICAgICAgICAgICAgICAgICBkZXZ0b29sU2VnbWVudEV4cGxvcmVyOiBuZXh0Q29uZmlnLmV4cGVyaW1lbnRhbC5kZXZ0b29sU2VnbWVudEV4cGxvcmVyLFxuICAgICAgICAgICAgICAgICAgICByZWFjdE1heEhlYWRlcnNMZW5ndGg6IG5leHRDb25maWcucmVhY3RNYXhIZWFkZXJzTGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICBtdWx0aVpvbmVEcmFmdE1vZGUsXG4gICAgICAgICAgICAgICAgICAgIGluY3JlbWVudGFsQ2FjaGU6IGdldFJlcXVlc3RNZXRhKHJlcSwgJ2luY3JlbWVudGFsQ2FjaGUnKSxcbiAgICAgICAgICAgICAgICAgICAgY2FjaGVMaWZlUHJvZmlsZXM6IG5leHRDb25maWcuZXhwZXJpbWVudGFsLmNhY2hlTGlmZSxcbiAgICAgICAgICAgICAgICAgICAgYmFzZVBhdGg6IG5leHRDb25maWcuYmFzZVBhdGgsXG4gICAgICAgICAgICAgICAgICAgIHNlcnZlckFjdGlvbnM6IG5leHRDb25maWcuZXhwZXJpbWVudGFsLnNlcnZlckFjdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgIC4uLmlzRGVidWdTdGF0aWNTaGVsbCB8fCBpc0RlYnVnRHluYW1pY0FjY2Vzc2VzID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dEV4cG9ydDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRzRHluYW1pY1Jlc3BvbnNlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzU3RhdGljR2VuZXJhdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzUmV2YWxpZGF0ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzRGVidWdEeW5hbWljQWNjZXNzZXM6IGlzRGVidWdEeW5hbWljQWNjZXNzZXNcbiAgICAgICAgICAgICAgICAgICAgfSA6IHt9LFxuICAgICAgICAgICAgICAgICAgICBleHBlcmltZW50YWw6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzUm91dGVQUFJFbmFibGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwaXJlVGltZTogbmV4dENvbmZpZy5leHBpcmVUaW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhbGVUaW1lczogbmV4dENvbmZpZy5leHBlcmltZW50YWwuc3RhbGVUaW1lcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlQ29tcG9uZW50czogQm9vbGVhbihuZXh0Q29uZmlnLmV4cGVyaW1lbnRhbC5jYWNoZUNvbXBvbmVudHMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50U2VnbWVudENhY2hlOiBCb29sZWFuKG5leHRDb25maWcuZXhwZXJpbWVudGFsLmNsaWVudFNlZ21lbnRDYWNoZSksXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRQYXJhbVBhcnNpbmc6IEJvb2xlYW4obmV4dENvbmZpZy5leHBlcmltZW50YWwuY2xpZW50UGFyYW1QYXJzaW5nKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGR5bmFtaWNPbkhvdmVyOiBCb29sZWFuKG5leHRDb25maWcuZXhwZXJpbWVudGFsLmR5bmFtaWNPbkhvdmVyKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZUNzczogQm9vbGVhbihuZXh0Q29uZmlnLmV4cGVyaW1lbnRhbC5pbmxpbmVDc3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXV0aEludGVycnVwdHM6IEJvb2xlYW4obmV4dENvbmZpZy5leHBlcmltZW50YWwuYXV0aEludGVycnVwdHMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50VHJhY2VNZXRhZGF0YTogbmV4dENvbmZpZy5leHBlcmltZW50YWwuY2xpZW50VHJhY2VNZXRhZGF0YSB8fCBbXVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB3YWl0VW50aWw6IGN0eC53YWl0VW50aWwsXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xvc2U6IChjYik9PntcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5vbignY2xvc2UnLCBjYik7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIG9uQWZ0ZXJUYXNrRXJyb3I6ICgpPT57fSxcbiAgICAgICAgICAgICAgICAgICAgb25JbnN0cnVtZW50YXRpb25SZXF1ZXN0RXJyb3I6IChlcnJvciwgX3JlcXVlc3QsIGVycm9yQ29udGV4dCk9PnJvdXRlTW9kdWxlLm9uUmVxdWVzdEVycm9yKHJlcSwgZXJyb3IsIGVycm9yQ29udGV4dCwgcm91dGVyU2VydmVyQ29udGV4dCksXG4gICAgICAgICAgICAgICAgICAgIGVycjogZ2V0UmVxdWVzdE1ldGEocmVxLCAnaW52b2tlRXJyb3InKSxcbiAgICAgICAgICAgICAgICAgICAgZGV2OiByb3V0ZU1vZHVsZS5pc0RldlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBpbnZva2VSb3V0ZU1vZHVsZShzcGFuLCBjb250ZXh0KTtcbiAgICAgICAgICAgIGNvbnN0IHsgbWV0YWRhdGEgfSA9IHJlc3VsdDtcbiAgICAgICAgICAgIGNvbnN0IHsgY2FjaGVDb250cm9sLCBoZWFkZXJzID0ge30sIC8vIEFkZCBhbnkgZmV0Y2ggdGFncyB0aGF0IHdlcmUgb24gdGhlIHBhZ2UgdG8gdGhlIHJlc3BvbnNlIGhlYWRlcnMuXG4gICAgICAgICAgICBmZXRjaFRhZ3M6IGNhY2hlVGFncyB9ID0gbWV0YWRhdGE7XG4gICAgICAgICAgICBpZiAoY2FjaGVUYWdzKSB7XG4gICAgICAgICAgICAgICAgaGVhZGVyc1tORVhUX0NBQ0hFX1RBR1NfSEVBREVSXSA9IGNhY2hlVGFncztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFB1bGwgYW55IGZldGNoIG1ldHJpY3MgZnJvbSB0aGUgcmVuZGVyIG9udG8gdGhlIHJlcXVlc3QuXG4gICAgICAgICAgICA7XG4gICAgICAgICAgICByZXEuZmV0Y2hNZXRyaWNzID0gbWV0YWRhdGEuZmV0Y2hNZXRyaWNzO1xuICAgICAgICAgICAgLy8gd2UgZG9uJ3QgdGhyb3cgc3RhdGljIHRvIGR5bmFtaWMgZXJyb3JzIGluIGRldiBhcyBpc1NTR1xuICAgICAgICAgICAgLy8gaXMgYSBiZXN0IGd1ZXNzIGluIGRldiBzaW5jZSB3ZSBkb24ndCBoYXZlIHRoZSBwcmVyZW5kZXIgcGFzc1xuICAgICAgICAgICAgLy8gdG8ga25vdyB3aGV0aGVyIHRoZSBwYXRoIGlzIGFjdHVhbGx5IHN0YXRpYyBvciBub3RcbiAgICAgICAgICAgIGlmIChpc1NTRyAmJiAoY2FjaGVDb250cm9sID09IG51bGwgPyB2b2lkIDAgOiBjYWNoZUNvbnRyb2wucmV2YWxpZGF0ZSkgPT09IDAgJiYgIXJvdXRlTW9kdWxlLmlzRGV2ICYmICFpc1JvdXRlUFBSRW5hYmxlZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXRpY0JhaWxvdXRJbmZvID0gbWV0YWRhdGEuc3RhdGljQmFpbG91dEluZm87XG4gICAgICAgICAgICAgICAgY29uc3QgZXJyID0gT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBFcnJvcihgUGFnZSBjaGFuZ2VkIGZyb20gc3RhdGljIHRvIGR5bmFtaWMgYXQgcnVudGltZSAke3Jlc29sdmVkUGF0aG5hbWV9JHsoc3RhdGljQmFpbG91dEluZm8gPT0gbnVsbCA/IHZvaWQgMCA6IHN0YXRpY0JhaWxvdXRJbmZvLmRlc2NyaXB0aW9uKSA/IGAsIHJlYXNvbjogJHtzdGF0aWNCYWlsb3V0SW5mby5kZXNjcmlwdGlvbn1gIDogYGB9YCArIGBcXG5zZWUgbW9yZSBoZXJlIGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL2FwcC1zdGF0aWMtdG8tZHluYW1pYy1lcnJvcmApLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFwiRTEzMlwiLFxuICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKHN0YXRpY0JhaWxvdXRJbmZvID09IG51bGwgPyB2b2lkIDAgOiBzdGF0aWNCYWlsb3V0SW5mby5zdGFjaykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGFjayA9IHN0YXRpY0JhaWxvdXRJbmZvLnN0YWNrO1xuICAgICAgICAgICAgICAgICAgICBlcnIuc3RhY2sgPSBlcnIubWVzc2FnZSArIHN0YWNrLnN1YnN0cmluZyhzdGFjay5pbmRleE9mKCdcXG4nKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAga2luZDogQ2FjaGVkUm91dGVLaW5kLkFQUF9QQUdFLFxuICAgICAgICAgICAgICAgICAgICBodG1sOiByZXN1bHQsXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnMsXG4gICAgICAgICAgICAgICAgICAgIHJzY0RhdGE6IG1ldGFkYXRhLmZsaWdodERhdGEsXG4gICAgICAgICAgICAgICAgICAgIHBvc3Rwb25lZDogbWV0YWRhdGEucG9zdHBvbmVkLFxuICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IG1ldGFkYXRhLnN0YXR1c0NvZGUsXG4gICAgICAgICAgICAgICAgICAgIHNlZ21lbnREYXRhOiBtZXRhZGF0YS5zZWdtZW50RGF0YVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgY2FjaGVDb250cm9sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9O1xuICAgICAgICBjb25zdCByZXNwb25zZUdlbmVyYXRvciA9IGFzeW5jICh7IGhhc1Jlc29sdmVkLCBwcmV2aW91c0NhY2hlRW50cnksIGlzUmV2YWxpZGF0aW5nLCBzcGFuIH0pPT57XG4gICAgICAgICAgICBjb25zdCBpc1Byb2R1Y3Rpb24gPSByb3V0ZU1vZHVsZS5pc0RldiA9PT0gZmFsc2U7XG4gICAgICAgICAgICBjb25zdCBkaWRSZXNwb25kID0gaGFzUmVzb2x2ZWQgfHwgcmVzLndyaXRhYmxlRW5kZWQ7XG4gICAgICAgICAgICAvLyBza2lwIG9uLWRlbWFuZCByZXZhbGlkYXRlIGlmIGNhY2hlIGlzIG5vdCBwcmVzZW50IGFuZFxuICAgICAgICAgICAgLy8gcmV2YWxpZGF0ZS1pZi1nZW5lcmF0ZWQgaXMgc2V0XG4gICAgICAgICAgICBpZiAoaXNPbkRlbWFuZFJldmFsaWRhdGUgJiYgcmV2YWxpZGF0ZU9ubHlHZW5lcmF0ZWQgJiYgIXByZXZpb3VzQ2FjaGVFbnRyeSAmJiAhbWluaW1hbE1vZGUpIHtcbiAgICAgICAgICAgICAgICBpZiAocm91dGVyU2VydmVyQ29udGV4dCA9PSBudWxsID8gdm9pZCAwIDogcm91dGVyU2VydmVyQ29udGV4dC5yZW5kZXI0MDQpIHtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgcm91dGVyU2VydmVyQ29udGV4dC5yZW5kZXI0MDQocmVxLCByZXMpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNDA0O1xuICAgICAgICAgICAgICAgICAgICByZXMuZW5kKCdUaGlzIHBhZ2UgY291bGQgbm90IGJlIGZvdW5kJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IGZhbGxiYWNrTW9kZTtcbiAgICAgICAgICAgIGlmIChwcmVyZW5kZXJJbmZvKSB7XG4gICAgICAgICAgICAgICAgZmFsbGJhY2tNb2RlID0gcGFyc2VGYWxsYmFja0ZpZWxkKHByZXJlbmRlckluZm8uZmFsbGJhY2spO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gV2hlbiBzZXJ2aW5nIGEgSFRNTCBib3QgcmVxdWVzdCwgd2Ugd2FudCB0byBzZXJ2ZSBhIGJsb2NraW5nIHJlbmRlciBhbmRcbiAgICAgICAgICAgIC8vIG5vdCB0aGUgcHJlcmVuZGVyZWQgcGFnZS4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGNvcnJlY3QgY29udGVudCBpcyBzZXJ2ZWRcbiAgICAgICAgICAgIC8vIHRvIHRoZSBib3QgaW4gdGhlIGhlYWQuXG4gICAgICAgICAgICBpZiAoZmFsbGJhY2tNb2RlID09PSBGYWxsYmFja01vZGUuUFJFUkVOREVSICYmIGlzQm90KHVzZXJBZ2VudCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzUm91dGVQUFJFbmFibGVkIHx8IGlzSHRtbEJvdCkge1xuICAgICAgICAgICAgICAgICAgICBmYWxsYmFja01vZGUgPSBGYWxsYmFja01vZGUuQkxPQ0tJTkdfU1RBVElDX1JFTkRFUjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKHByZXZpb3VzQ2FjaGVFbnRyeSA9PSBudWxsID8gdm9pZCAwIDogcHJldmlvdXNDYWNoZUVudHJ5LmlzU3RhbGUpID09PSAtMSkge1xuICAgICAgICAgICAgICAgIGlzT25EZW1hbmRSZXZhbGlkYXRlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFRPRE86IGFkYXB0IGZvciBQUFJcbiAgICAgICAgICAgIC8vIG9ubHkgYWxsb3cgb24tZGVtYW5kIHJldmFsaWRhdGUgZm9yIGZhbGxiYWNrOiB0cnVlL2Jsb2NraW5nXG4gICAgICAgICAgICAvLyBvciBmb3IgcHJlcmVuZGVyZWQgZmFsbGJhY2s6IGZhbHNlIHBhdGhzXG4gICAgICAgICAgICBpZiAoaXNPbkRlbWFuZFJldmFsaWRhdGUgJiYgKGZhbGxiYWNrTW9kZSAhPT0gRmFsbGJhY2tNb2RlLk5PVF9GT1VORCB8fCBwcmV2aW91c0NhY2hlRW50cnkpKSB7XG4gICAgICAgICAgICAgICAgZmFsbGJhY2tNb2RlID0gRmFsbGJhY2tNb2RlLkJMT0NLSU5HX1NUQVRJQ19SRU5ERVI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIW1pbmltYWxNb2RlICYmIGZhbGxiYWNrTW9kZSAhPT0gRmFsbGJhY2tNb2RlLkJMT0NLSU5HX1NUQVRJQ19SRU5ERVIgJiYgc3RhdGljUGF0aEtleSAmJiAhZGlkUmVzcG9uZCAmJiAhaXNEcmFmdE1vZGUgJiYgcGFnZUlzRHluYW1pYyAmJiAoaXNQcm9kdWN0aW9uIHx8ICFpc1ByZXJlbmRlcmVkKSkge1xuICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBwYWdlIGhhcyBkeW5hbWljUGFyYW1zOiBmYWxzZSBhbmQgdGhpcyBwYXRobmFtZSB3YXNuJ3RcbiAgICAgICAgICAgICAgICAvLyBwcmVyZW5kZXJlZCB0cmlnZ2VyIHRoZSBubyBmYWxsYmFjayBoYW5kbGluZ1xuICAgICAgICAgICAgICAgIGlmICgvLyBJbiBkZXZlbG9wbWVudCwgZmFsbCB0aHJvdWdoIHRvIHJlbmRlciB0byBoYW5kbGUgbWlzc2luZ1xuICAgICAgICAgICAgICAgIC8vIGdldFN0YXRpY1BhdGhzLlxuICAgICAgICAgICAgICAgIChpc1Byb2R1Y3Rpb24gfHwgcHJlcmVuZGVySW5mbykgJiYgLy8gV2hlbiBmYWxsYmFjayBpc24ndCBwcmVzZW50LCBhYm9ydCB0aGlzIHJlbmRlciBzbyB3ZSA0MDRcbiAgICAgICAgICAgICAgICBmYWxsYmFja01vZGUgPT09IEZhbGxiYWNrTW9kZS5OT1RfRk9VTkQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IE5vRmFsbGJhY2tFcnJvcigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsZXQgZmFsbGJhY2tSZXNwb25zZTtcbiAgICAgICAgICAgICAgICBpZiAoaXNSb3V0ZVBQUkVuYWJsZWQgJiYgIWlzUlNDUmVxdWVzdCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjYWNoZUtleSA9IHR5cGVvZiAocHJlcmVuZGVySW5mbyA9PSBudWxsID8gdm9pZCAwIDogcHJlcmVuZGVySW5mby5mYWxsYmFjaykgPT09ICdzdHJpbmcnID8gcHJlcmVuZGVySW5mby5mYWxsYmFjayA6IGlzUHJvZHVjdGlvbiA/IG5vcm1hbGl6ZWRTcmNQYWdlIDogbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgLy8gV2UgdXNlIHRoZSByZXNwb25zZSBjYWNoZSBoZXJlIHRvIGhhbmRsZSB0aGUgcmV2YWxpZGF0aW9uIGFuZFxuICAgICAgICAgICAgICAgICAgICAvLyBtYW5hZ2VtZW50IG9mIHRoZSBmYWxsYmFjayBzaGVsbC5cbiAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2tSZXNwb25zZSA9IGF3YWl0IHJvdXRlTW9kdWxlLmhhbmRsZVJlc3BvbnNlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlS2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dENvbmZpZyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlS2luZDogUm91dGVLaW5kLkFQUF9QQUdFLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNGYWxsYmFjazogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXJlbmRlck1hbmlmZXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNSb3V0ZVBQUkVuYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZUdlbmVyYXRvcjogYXN5bmMgKCk9PmRvUmVuZGVyKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BhbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgcGFzcyBgdW5kZWZpbmVkYCBhcyByZW5kZXJpbmcgYSBmYWxsYmFjayBpc24ndCByZXN1bWVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhlcmUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc3Rwb25lZDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFja1JvdXRlUGFyYW1zOiAvLyBJZiB3ZSdyZSBpbiBwcm9kdWN0aW9uIG9yIHdlJ3JlIGRlYnVnZ2luZyB0aGUgZmFsbGJhY2tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2hlbGwgdGhlbiB3ZSBzaG91bGQgcG9zdHBvbmUgd2hlbiBkeW5hbWljIHBhcmFtcyBhcmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWNjZXNzZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUHJvZHVjdGlvbiB8fCBpc0RlYnVnRmFsbGJhY2tTaGVsbCA/IGdldEZhbGxiYWNrUm91dGVQYXJhbXMobm9ybWFsaXplZFNyY1BhZ2UpIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgd2FpdFVudGlsOiBjdHgud2FpdFVudGlsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgZmFsbGJhY2sgcmVzcG9uc2Ugd2FzIHNldCB0byBudWxsLCB0aGVuIHdlIHNob3VsZCByZXR1cm4gbnVsbC5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGZhbGxiYWNrUmVzcG9uc2UgPT09IG51bGwpIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIGlmIHdlIGRpZCBnZXQgYSBmYWxsYmFjayByZXNwb25zZSwgd2Ugc2hvdWxkIHJldHVybiBpdC5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGZhbGxiYWNrUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUgY2FjaGUgY29udHJvbCBmcm9tIHRoZSByZXNwb25zZSB0byBwcmV2ZW50IGl0IGZyb20gYmVpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZWQgaW4gdGhlIHN1cnJvdW5kaW5nIGNhY2hlLlxuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGZhbGxiYWNrUmVzcG9uc2UuY2FjaGVDb250cm9sO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbGxiYWNrUmVzcG9uc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBPbmx5IHJlcXVlc3RzIHRoYXQgYXJlbid0IHJldmFsaWRhdGluZyBjYW4gYmUgcmVzdW1lZC4gSWYgd2UgaGF2ZSB0aGVcbiAgICAgICAgICAgIC8vIG1pbmltYWwgcG9zdHBvbmVkIGRhdGEsIHRoZW4gd2Ugc2hvdWxkIHJlc3VtZSB0aGUgcmVuZGVyIHdpdGggaXQuXG4gICAgICAgICAgICBjb25zdCBwb3N0cG9uZWQgPSAhaXNPbkRlbWFuZFJldmFsaWRhdGUgJiYgIWlzUmV2YWxpZGF0aW5nICYmIG1pbmltYWxQb3N0cG9uZWQgPyBtaW5pbWFsUG9zdHBvbmVkIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSdyZSBpbiBtaW5pbWFsIG1vZGUsIGlmIHdlJ3JlIHRyeWluZyB0byBkZWJ1ZyB0aGUgc3RhdGljIHNoZWxsLFxuICAgICAgICAgICAgLy8gd2Ugc2hvdWxkIGp1c3QgcmV0dXJuIG5vdGhpbmcgaW5zdGVhZCBvZiByZXN1bWluZyB0aGUgZHluYW1pYyByZW5kZXIuXG4gICAgICAgICAgICBpZiAoKGlzRGVidWdTdGF0aWNTaGVsbCB8fCBpc0RlYnVnRHluYW1pY0FjY2Vzc2VzKSAmJiB0eXBlb2YgcG9zdHBvbmVkICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGNhY2hlQ29udHJvbDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV2YWxpZGF0ZTogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGlyZTogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBraW5kOiBDYWNoZWRSb3V0ZUtpbmQuUEFHRVMsXG4gICAgICAgICAgICAgICAgICAgICAgICBodG1sOiBSZW5kZXJSZXN1bHQuRU1QVFksXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlRGF0YToge30sXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBkeW5hbWljIHJvdXRlIHdpdGggUFBSIGVuYWJsZWQgYW5kIHRoZSBkZWZhdWx0IHJvdXRlXG4gICAgICAgICAgICAvLyBtYXRjaGVzIHdlcmUgc2V0LCB0aGVuIHdlIHNob3VsZCBwYXNzIHRoZSBmYWxsYmFjayByb3V0ZSBwYXJhbXMgdG9cbiAgICAgICAgICAgIC8vIHRoZSByZW5kZXJlciBhcyB0aGlzIGlzIGEgZmFsbGJhY2sgcmV2YWxpZGF0aW9uIHJlcXVlc3QuXG4gICAgICAgICAgICBjb25zdCBmYWxsYmFja1JvdXRlUGFyYW1zID0gcGFnZUlzRHluYW1pYyAmJiBpc1JvdXRlUFBSRW5hYmxlZCAmJiAoZ2V0UmVxdWVzdE1ldGEocmVxLCAncmVuZGVyRmFsbGJhY2tTaGVsbCcpIHx8IGlzRGVidWdGYWxsYmFja1NoZWxsKSA/IGdldEZhbGxiYWNrUm91dGVQYXJhbXMocGF0aG5hbWUpIDogbnVsbDtcbiAgICAgICAgICAgIC8vIFBlcmZvcm0gdGhlIHJlbmRlci5cbiAgICAgICAgICAgIHJldHVybiBkb1JlbmRlcih7XG4gICAgICAgICAgICAgICAgc3BhbixcbiAgICAgICAgICAgICAgICBwb3N0cG9uZWQsXG4gICAgICAgICAgICAgICAgZmFsbGJhY2tSb3V0ZVBhcmFtc1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGhhbmRsZVJlc3BvbnNlID0gYXN5bmMgKHNwYW4pPT57XG4gICAgICAgICAgICB2YXIgX2NhY2hlRW50cnlfdmFsdWUsIF9jYWNoZWREYXRhX2hlYWRlcnM7XG4gICAgICAgICAgICBjb25zdCBjYWNoZUVudHJ5ID0gYXdhaXQgcm91dGVNb2R1bGUuaGFuZGxlUmVzcG9uc2Uoe1xuICAgICAgICAgICAgICAgIGNhY2hlS2V5OiBzc2dDYWNoZUtleSxcbiAgICAgICAgICAgICAgICByZXNwb25zZUdlbmVyYXRvcjogKGMpPT5yZXNwb25zZUdlbmVyYXRvcih7XG4gICAgICAgICAgICAgICAgICAgICAgICBzcGFuLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uY1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICByb3V0ZUtpbmQ6IFJvdXRlS2luZC5BUFBfUEFHRSxcbiAgICAgICAgICAgICAgICBpc09uRGVtYW5kUmV2YWxpZGF0ZSxcbiAgICAgICAgICAgICAgICBpc1JvdXRlUFBSRW5hYmxlZCxcbiAgICAgICAgICAgICAgICByZXEsXG4gICAgICAgICAgICAgICAgbmV4dENvbmZpZyxcbiAgICAgICAgICAgICAgICBwcmVyZW5kZXJNYW5pZmVzdCxcbiAgICAgICAgICAgICAgICB3YWl0VW50aWw6IGN0eC53YWl0VW50aWxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKGlzRHJhZnRNb2RlKSB7XG4gICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ2FjaGUtQ29udHJvbCcsICdwcml2YXRlLCBuby1jYWNoZSwgbm8tc3RvcmUsIG1heC1hZ2U9MCwgbXVzdC1yZXZhbGlkYXRlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBJbiBkZXYsIHdlIHNob3VsZCBub3QgY2FjaGUgcGFnZXMgZm9yIGFueSByZWFzb24uXG4gICAgICAgICAgICBpZiAocm91dGVNb2R1bGUuaXNEZXYpIHtcbiAgICAgICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDYWNoZS1Db250cm9sJywgJ25vLXN0b3JlLCBtdXN0LXJldmFsaWRhdGUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghY2FjaGVFbnRyeSkge1xuICAgICAgICAgICAgICAgIGlmIChzc2dDYWNoZUtleSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBBIGNhY2hlIGVudHJ5IG1pZ2h0IG5vdCBiZSBnZW5lcmF0ZWQgaWYgYSByZXNwb25zZSBpcyB3cml0dGVuXG4gICAgICAgICAgICAgICAgICAgIC8vIGluIGBnZXRJbml0aWFsUHJvcHNgIG9yIGBnZXRTZXJ2ZXJTaWRlUHJvcHNgLCBidXQgdGhvc2Ugc2hvdWxkbid0XG4gICAgICAgICAgICAgICAgICAgIC8vIGhhdmUgYSBjYWNoZSBrZXkuIElmIHdlIGRvIGhhdmUgYSBjYWNoZSBrZXkgYnV0IHdlIGRvbid0IGVuZCB1cFxuICAgICAgICAgICAgICAgICAgICAvLyB3aXRoIGEgY2FjaGUgZW50cnksIHRoZW4gZWl0aGVyIE5leHQuanMgb3IgdGhlIGFwcGxpY2F0aW9uIGhhcyBhXG4gICAgICAgICAgICAgICAgICAgIC8vIGJ1ZyB0aGF0IG5lZWRzIGZpeGluZy5cbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBFcnJvcignaW52YXJpYW50OiBjYWNoZSBlbnRyeSByZXF1aXJlZCBidXQgbm90IGdlbmVyYXRlZCcpLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIkU2MlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCgoX2NhY2hlRW50cnlfdmFsdWUgPSBjYWNoZUVudHJ5LnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2NhY2hlRW50cnlfdmFsdWUua2luZCkgIT09IENhY2hlZFJvdXRlS2luZC5BUFBfUEFHRSkge1xuICAgICAgICAgICAgICAgIHZhciBfY2FjaGVFbnRyeV92YWx1ZTE7XG4gICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBFcnJvcihgSW52YXJpYW50IGFwcC1wYWdlIGhhbmRsZXIgcmVjZWl2ZWQgaW52YWxpZCBjYWNoZSBlbnRyeSAkeyhfY2FjaGVFbnRyeV92YWx1ZTEgPSBjYWNoZUVudHJ5LnZhbHVlKSA9PSBudWxsID8gdm9pZCAwIDogX2NhY2hlRW50cnlfdmFsdWUxLmtpbmR9YCksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFNzA3XCIsXG4gICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGRpZFBvc3Rwb25lID0gdHlwZW9mIGNhY2hlRW50cnkudmFsdWUucG9zdHBvbmVkID09PSAnc3RyaW5nJztcbiAgICAgICAgICAgIGlmIChpc1NTRyAmJiAvLyBXZSBkb24ndCB3YW50IHRvIHNlbmQgYSBjYWNoZSBoZWFkZXIgZm9yIHJlcXVlc3RzIHRoYXQgY29udGFpbiBkeW5hbWljXG4gICAgICAgICAgICAvLyBkYXRhLiBJZiB0aGlzIGlzIGEgRHluYW1pYyBSU0MgcmVxdWVzdCBvciB3YXNuJ3QgYSBQcmVmZXRjaCBSU0NcbiAgICAgICAgICAgIC8vIHJlcXVlc3QsIHRoZW4gd2Ugc2hvdWxkIHNldCB0aGUgY2FjaGUgaGVhZGVyLlxuICAgICAgICAgICAgIWlzRHluYW1pY1JTQ1JlcXVlc3QgJiYgKCFkaWRQb3N0cG9uZSB8fCBpc1ByZWZldGNoUlNDUmVxdWVzdCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoIW1pbmltYWxNb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHNldCB4LW5leHRqcy1jYWNoZSBoZWFkZXIgdG8gbWF0Y2ggdGhlIGhlYWRlclxuICAgICAgICAgICAgICAgICAgICAvLyB3ZSBzZXQgZm9yIHRoZSBpbWFnZS1vcHRpbWl6ZXJcbiAgICAgICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcigneC1uZXh0anMtY2FjaGUnLCBpc09uRGVtYW5kUmV2YWxpZGF0ZSA/ICdSRVZBTElEQVRFRCcgOiBjYWNoZUVudHJ5LmlzTWlzcyA/ICdNSVNTJyA6IGNhY2hlRW50cnkuaXNTdGFsZSA/ICdTVEFMRScgOiAnSElUJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIFNldCBhIGhlYWRlciB1c2VkIGJ5IHRoZSBjbGllbnQgcm91dGVyIHRvIHNpZ25hbCB0aGUgcmVzcG9uc2UgaXMgc3RhdGljXG4gICAgICAgICAgICAgICAgLy8gYW5kIHNob3VsZCByZXNwZWN0IHRoZSBgc3RhdGljYCBjYWNoZSBzdGFsZVRpbWUgdmFsdWUuXG4gICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcihORVhUX0lTX1BSRVJFTkRFUl9IRUFERVIsICcxJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB7IHZhbHVlOiBjYWNoZWREYXRhIH0gPSBjYWNoZUVudHJ5O1xuICAgICAgICAgICAgLy8gQ29lcmNlIHRoZSBjYWNoZSBjb250cm9sIHBhcmFtZXRlciBmcm9tIHRoZSByZW5kZXIuXG4gICAgICAgICAgICBsZXQgY2FjaGVDb250cm9sO1xuICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIHJlc3VtZSByZXF1ZXN0IGluIG1pbmltYWwgbW9kZSBpdCBpcyBzdHJlYW1lZCB3aXRoIGR5bmFtaWNcbiAgICAgICAgICAgIC8vIGNvbnRlbnQgYW5kIHNob3VsZCBub3QgYmUgY2FjaGVkLlxuICAgICAgICAgICAgaWYgKG1pbmltYWxQb3N0cG9uZWQpIHtcbiAgICAgICAgICAgICAgICBjYWNoZUNvbnRyb2wgPSB7XG4gICAgICAgICAgICAgICAgICAgIHJldmFsaWRhdGU6IDAsXG4gICAgICAgICAgICAgICAgICAgIGV4cGlyZTogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAobWluaW1hbE1vZGUgJiYgaXNSU0NSZXF1ZXN0ICYmICFpc1ByZWZldGNoUlNDUmVxdWVzdCAmJiBpc1JvdXRlUFBSRW5hYmxlZCkge1xuICAgICAgICAgICAgICAgIGNhY2hlQ29udHJvbCA9IHtcbiAgICAgICAgICAgICAgICAgICAgcmV2YWxpZGF0ZTogMCxcbiAgICAgICAgICAgICAgICAgICAgZXhwaXJlOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBlbHNlIGlmICghcm91dGVNb2R1bGUuaXNEZXYpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGlzIGEgcHJldmlldyBtb2RlIHJlcXVlc3QsIHdlIHNob3VsZG4ndCBjYWNoZSBpdFxuICAgICAgICAgICAgICAgIGlmIChpc0RyYWZ0TW9kZSkge1xuICAgICAgICAgICAgICAgICAgICBjYWNoZUNvbnRyb2wgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXZhbGlkYXRlOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgZXhwaXJlOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFpc1NTRykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXJlcy5nZXRIZWFkZXIoJ0NhY2hlLUNvbnRyb2wnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVDb250cm9sID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldmFsaWRhdGU6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwaXJlOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNhY2hlRW50cnkuY2FjaGVDb250cm9sKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBjYWNoZSBlbnRyeSBoYXMgYSBjYWNoZSBjb250cm9sIHdpdGggYSByZXZhbGlkYXRlIHZhbHVlIHRoYXQnc1xuICAgICAgICAgICAgICAgICAgICAvLyBhIG51bWJlciwgdXNlIGl0LlxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNhY2hlRW50cnkuY2FjaGVDb250cm9sLnJldmFsaWRhdGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2NhY2hlRW50cnlfY2FjaGVDb250cm9sO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhY2hlRW50cnkuY2FjaGVDb250cm9sLnJldmFsaWRhdGUgPCAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBFcnJvcihgSW52YWxpZCByZXZhbGlkYXRlIGNvbmZpZ3VyYXRpb24gcHJvdmlkZWQ6ICR7Y2FjaGVFbnRyeS5jYWNoZUNvbnRyb2wucmV2YWxpZGF0ZX0gPCAxYCksIFwiX19ORVhUX0VSUk9SX0NPREVcIiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFMjJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVDb250cm9sID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldmFsaWRhdGU6IGNhY2hlRW50cnkuY2FjaGVDb250cm9sLnJldmFsaWRhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwaXJlOiAoKF9jYWNoZUVudHJ5X2NhY2hlQ29udHJvbCA9IGNhY2hlRW50cnkuY2FjaGVDb250cm9sKSA9PSBudWxsID8gdm9pZCAwIDogX2NhY2hlRW50cnlfY2FjaGVDb250cm9sLmV4cGlyZSkgPz8gbmV4dENvbmZpZy5leHBpcmVUaW1lXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVDb250cm9sID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldmFsaWRhdGU6IENBQ0hFX09ORV9ZRUFSLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGlyZTogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FjaGVFbnRyeS5jYWNoZUNvbnRyb2wgPSBjYWNoZUNvbnRyb2w7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHNlZ21lbnRQcmVmZXRjaEhlYWRlciA9PT0gJ3N0cmluZycgJiYgKGNhY2hlZERhdGEgPT0gbnVsbCA/IHZvaWQgMCA6IGNhY2hlZERhdGEua2luZCkgPT09IENhY2hlZFJvdXRlS2luZC5BUFBfUEFHRSAmJiBjYWNoZWREYXRhLnNlZ21lbnREYXRhKSB7XG4gICAgICAgICAgICAgICAgdmFyIF9jYWNoZWREYXRhX2hlYWRlcnMxO1xuICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBwcmVmZXRjaCByZXF1ZXN0IGlzc3VlZCBieSB0aGUgY2xpZW50IFNlZ21lbnQgQ2FjaGUuIFRoZXNlXG4gICAgICAgICAgICAgICAgLy8gc2hvdWxkIG5ldmVyIHJlYWNoIHRoZSBhcHBsaWNhdGlvbiBsYXllciAobGFtYmRhKS4gV2Ugc2hvdWxkIGVpdGhlclxuICAgICAgICAgICAgICAgIC8vIHJlc3BvbmQgZnJvbSB0aGUgY2FjaGUgKEhJVCkgb3IgcmVzcG9uZCB3aXRoIDIwNCBObyBDb250ZW50IChNSVNTKS5cbiAgICAgICAgICAgICAgICAvLyBTZXQgYSBoZWFkZXIgdG8gaW5kaWNhdGUgdGhhdCBQUFIgaXMgZW5hYmxlZCBmb3IgdGhpcyByb3V0ZS4gVGhpc1xuICAgICAgICAgICAgICAgIC8vIGxldHMgdGhlIGNsaWVudCBkaXN0aW5ndWlzaCBiZXR3ZWVuIGEgcmVndWxhciBjYWNoZSBtaXNzIGFuZCBhIGNhY2hlXG4gICAgICAgICAgICAgICAgLy8gbWlzcyBkdWUgdG8gUFBSIGJlaW5nIGRpc2FibGVkLiBJbiBvdGhlciBjb250ZXh0cyB0aGlzIGhlYWRlciBpcyB1c2VkXG4gICAgICAgICAgICAgICAgLy8gdG8gaW5kaWNhdGUgdGhhdCB0aGUgcmVzcG9uc2UgY29udGFpbnMgZHluYW1pYyBkYXRhLCBidXQgaGVyZSB3ZSdyZVxuICAgICAgICAgICAgICAgIC8vIG9ubHkgdXNpbmcgaXQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgZmVhdHVyZSBpcyBlbmFibGVkIOKAlCB0aGUgc2VnbWVudFxuICAgICAgICAgICAgICAgIC8vIHJlc3BvbnNlIGl0c2VsZiBjb250YWlucyB3aGV0aGVyIHRoZSBkYXRhIGlzIGR5bmFtaWMuXG4gICAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcihORVhUX0RJRF9QT1NUUE9ORV9IRUFERVIsICcyJyk7XG4gICAgICAgICAgICAgICAgLy8gQWRkIHRoZSBjYWNoZSB0YWdzIGhlYWRlciB0byB0aGUgcmVzcG9uc2UgaWYgaXQgZXhpc3RzIGFuZCB3ZSdyZSBpblxuICAgICAgICAgICAgICAgIC8vIG1pbmltYWwgbW9kZSB3aGlsZSByZW5kZXJpbmcgYSBzdGF0aWMgcGFnZS5cbiAgICAgICAgICAgICAgICBjb25zdCB0YWdzID0gKF9jYWNoZWREYXRhX2hlYWRlcnMxID0gY2FjaGVkRGF0YS5oZWFkZXJzKSA9PSBudWxsID8gdm9pZCAwIDogX2NhY2hlZERhdGFfaGVhZGVyczFbTkVYVF9DQUNIRV9UQUdTX0hFQURFUl07XG4gICAgICAgICAgICAgICAgaWYgKG1pbmltYWxNb2RlICYmIGlzU1NHICYmIHRhZ3MgJiYgdHlwZW9mIHRhZ3MgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoTkVYVF9DQUNIRV9UQUdTX0hFQURFUiwgdGFncyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoZWRTZWdtZW50ID0gY2FjaGVkRGF0YS5zZWdtZW50RGF0YS5nZXQoc2VnbWVudFByZWZldGNoSGVhZGVyKTtcbiAgICAgICAgICAgICAgICBpZiAobWF0Y2hlZFNlZ21lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBDYWNoZSBoaXRcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbmRSZW5kZXJSZXN1bHQoe1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVFdGFnczogbmV4dENvbmZpZy5nZW5lcmF0ZUV0YWdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgcG93ZXJlZEJ5SGVhZGVyOiBuZXh0Q29uZmlnLnBvd2VyZWRCeUhlYWRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdDogUmVuZGVyUmVzdWx0LmZyb21TdGF0aWMobWF0Y2hlZFNlZ21lbnQsIFJTQ19DT05URU5UX1RZUEVfSEVBREVSKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlQ29udHJvbDogY2FjaGVFbnRyeS5jYWNoZUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIENhY2hlIG1pc3MuIEVpdGhlciBhIGNhY2hlIGVudHJ5IGZvciB0aGlzIHJvdXRlIGhhcyBub3QgYmVlbiBnZW5lcmF0ZWRcbiAgICAgICAgICAgICAgICAvLyAod2hpY2ggdGVjaG5pY2FsbHkgc2hvdWxkIG5vdCBiZSBwb3NzaWJsZSB3aGVuIFBQUiBpcyBlbmFibGVkLCBiZWNhdXNlXG4gICAgICAgICAgICAgICAgLy8gYXQgYSBtaW5pbXVtIHRoZXJlIHNob3VsZCBhbHdheXMgYmUgYSBmYWxsYmFjayBlbnRyeSkgb3IgdGhlcmUncyBub1xuICAgICAgICAgICAgICAgIC8vIG1hdGNoIGZvciB0aGUgcmVxdWVzdGVkIHNlZ21lbnQuIFJlc3BvbmQgd2l0aCBhIDIwNCBObyBDb250ZW50LiBXZVxuICAgICAgICAgICAgICAgIC8vIGRvbid0IGJvdGhlciB0byByZXNwb25kIHdpdGggNDA0LCBiZWNhdXNlIHRoZXNlIHJlcXVlc3RzIGFyZSBvbmx5XG4gICAgICAgICAgICAgICAgLy8gaXNzdWVkIGFzIHBhcnQgb2YgYSBwcmVmZXRjaC5cbiAgICAgICAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDIwNDtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2VuZFJlbmRlclJlc3VsdCh7XG4gICAgICAgICAgICAgICAgICAgIHJlcSxcbiAgICAgICAgICAgICAgICAgICAgcmVzLFxuICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZUV0YWdzOiBuZXh0Q29uZmlnLmdlbmVyYXRlRXRhZ3MsXG4gICAgICAgICAgICAgICAgICAgIHBvd2VyZWRCeUhlYWRlcjogbmV4dENvbmZpZy5wb3dlcmVkQnlIZWFkZXIsXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdDogUmVuZGVyUmVzdWx0LkVNUFRZLFxuICAgICAgICAgICAgICAgICAgICBjYWNoZUNvbnRyb2w6IGNhY2hlRW50cnkuY2FjaGVDb250cm9sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBJZiB0aGVyZSdzIGEgY2FsbGJhY2sgZm9yIGBvbkNhY2hlRW50cnlgLCBjYWxsIGl0IHdpdGggdGhlIGNhY2hlIGVudHJ5XG4gICAgICAgICAgICAvLyBhbmQgdGhlIHJldmFsaWRhdGUgb3B0aW9ucy5cbiAgICAgICAgICAgIGNvbnN0IG9uQ2FjaGVFbnRyeSA9IGdldFJlcXVlc3RNZXRhKHJlcSwgJ29uQ2FjaGVFbnRyeScpO1xuICAgICAgICAgICAgaWYgKG9uQ2FjaGVFbnRyeSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbmlzaGVkID0gYXdhaXQgb25DYWNoZUVudHJ5KHtcbiAgICAgICAgICAgICAgICAgICAgLi4uY2FjaGVFbnRyeSxcbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogcmVtb3ZlIHRoaXMgd2hlbiB1cHN0cmVhbSBkb2Vzbid0XG4gICAgICAgICAgICAgICAgICAgIC8vIGFsd2F5cyBleHBlY3QgdGhpcyB2YWx1ZSB0byBiZSBcIlBBR0VcIlxuICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uY2FjaGVFbnRyeS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ6ICdQQUdFJ1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICB1cmw6IGdldFJlcXVlc3RNZXRhKHJlcSwgJ2luaXRVUkwnKVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGlmIChmaW5pc2hlZCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBtYXliZSB3ZSBoYXZlIHRvIGVuZCB0aGUgcmVxdWVzdD9cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gSWYgdGhlIHJlcXVlc3QgaGFzIGEgcG9zdHBvbmVkIHN0YXRlIGFuZCBpdCdzIGEgcmVzdW1lIHJlcXVlc3Qgd2VcbiAgICAgICAgICAgIC8vIHNob3VsZCBlcnJvci5cbiAgICAgICAgICAgIGlmIChkaWRQb3N0cG9uZSAmJiBtaW5pbWFsUG9zdHBvbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5ldyBFcnJvcignSW52YXJpYW50OiBwb3N0cG9uZWQgc3RhdGUgc2hvdWxkIG5vdCBiZSBwcmVzZW50IG9uIGEgcmVzdW1lIHJlcXVlc3QnKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIkUzOTZcIixcbiAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNhY2hlZERhdGEuaGVhZGVycykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGhlYWRlcnMgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLmNhY2hlZERhdGEuaGVhZGVyc1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgaWYgKCFtaW5pbWFsTW9kZSB8fCAhaXNTU0cpIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGhlYWRlcnNbTkVYVF9DQUNIRV9UQUdTX0hFQURFUl07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhoZWFkZXJzKSl7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnKSBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHYgb2YgdmFsdWUpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5hcHBlbmRIZWFkZXIoa2V5LCB2KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXMuYXBwZW5kSGVhZGVyKGtleSwgdmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzLmFwcGVuZEhlYWRlcihrZXksIHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEFkZCB0aGUgY2FjaGUgdGFncyBoZWFkZXIgdG8gdGhlIHJlc3BvbnNlIGlmIGl0IGV4aXN0cyBhbmQgd2UncmUgaW5cbiAgICAgICAgICAgIC8vIG1pbmltYWwgbW9kZSB3aGlsZSByZW5kZXJpbmcgYSBzdGF0aWMgcGFnZS5cbiAgICAgICAgICAgIGNvbnN0IHRhZ3MgPSAoX2NhY2hlZERhdGFfaGVhZGVycyA9IGNhY2hlZERhdGEuaGVhZGVycykgPT0gbnVsbCA/IHZvaWQgMCA6IF9jYWNoZWREYXRhX2hlYWRlcnNbTkVYVF9DQUNIRV9UQUdTX0hFQURFUl07XG4gICAgICAgICAgICBpZiAobWluaW1hbE1vZGUgJiYgaXNTU0cgJiYgdGFncyAmJiB0eXBlb2YgdGFncyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICByZXMuc2V0SGVhZGVyKE5FWFRfQ0FDSEVfVEFHU19IRUFERVIsIHRhZ3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gSWYgdGhlIHJlcXVlc3QgaXMgYSBkYXRhIHJlcXVlc3QsIHRoZW4gd2Ugc2hvdWxkbid0IHNldCB0aGUgc3RhdHVzIGNvZGVcbiAgICAgICAgICAgIC8vIGZyb20gdGhlIHJlc3BvbnNlIGJlY2F1c2UgaXQgc2hvdWxkIGFsd2F5cyBiZSAyMDAuIFRoaXMgc2hvdWxkIGJlIGdhdGVkXG4gICAgICAgICAgICAvLyBiZWhpbmQgdGhlIGV4cGVyaW1lbnRhbCBQUFIgZmxhZy5cbiAgICAgICAgICAgIGlmIChjYWNoZWREYXRhLnN0YXR1cyAmJiAoIWlzUlNDUmVxdWVzdCB8fCAhaXNSb3V0ZVBQUkVuYWJsZWQpKSB7XG4gICAgICAgICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSBjYWNoZWREYXRhLnN0YXR1cztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFJlZGlyZWN0IGluZm9ybWF0aW9uIGlzIGVuY29kZWQgaW4gUlNDIHBheWxvYWQsIHNvIHdlIGRvbid0IG5lZWQgdG8gdXNlIHJlZGlyZWN0IHN0YXR1cyBjb2Rlc1xuICAgICAgICAgICAgaWYgKCFtaW5pbWFsTW9kZSAmJiBjYWNoZWREYXRhLnN0YXR1cyAmJiBSZWRpcmVjdFN0YXR1c0NvZGVbY2FjaGVkRGF0YS5zdGF0dXNdICYmIGlzUlNDUmVxdWVzdCkge1xuICAgICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gMjAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gTWFyayB0aGF0IHRoZSByZXF1ZXN0IGRpZCBwb3N0cG9uZS5cbiAgICAgICAgICAgIGlmIChkaWRQb3N0cG9uZSkge1xuICAgICAgICAgICAgICAgIHJlcy5zZXRIZWFkZXIoTkVYVF9ESURfUE9TVFBPTkVfSEVBREVSLCAnMScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gd2UgZG9uJ3QgZ28gdGhyb3VnaCB0aGlzIGJsb2NrIHdoZW4gcHJldmlldyBtb2RlIGlzIHRydWVcbiAgICAgICAgICAgIC8vIGFzIHByZXZpZXcgbW9kZSBpcyBhIGR5bmFtaWMgcmVxdWVzdCAoYnlwYXNzZXMgY2FjaGUpIGFuZCBkb2Vzbid0XG4gICAgICAgICAgICAvLyBnZW5lcmF0ZSBib3RoIEhUTUwgYW5kIHBheWxvYWRzIGluIHRoZSBzYW1lIHJlcXVlc3Qgc28gY29udGludWUgdG8ganVzdFxuICAgICAgICAgICAgLy8gcmV0dXJuIHRoZSBnZW5lcmF0ZWQgcGF5bG9hZFxuICAgICAgICAgICAgaWYgKGlzUlNDUmVxdWVzdCAmJiAhaXNEcmFmdE1vZGUpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGlzIGEgZHluYW1pYyBSU0MgcmVxdWVzdCwgdGhlbiBzdHJlYW0gdGhlIHJlc3BvbnNlLlxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY2FjaGVkRGF0YS5yc2NEYXRhID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2FjaGVkRGF0YS5wb3N0cG9uZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgRXJyb3IoJ0ludmFyaWFudDogRXhwZWN0ZWQgcG9zdHBvbmVkIHRvIGJlIHVuZGVmaW5lZCcpLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFMzcyXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VuZFJlbmRlclJlc3VsdCh7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXEsXG4gICAgICAgICAgICAgICAgICAgICAgICByZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZUV0YWdzOiBuZXh0Q29uZmlnLmdlbmVyYXRlRXRhZ3MsXG4gICAgICAgICAgICAgICAgICAgICAgICBwb3dlcmVkQnlIZWFkZXI6IG5leHRDb25maWcucG93ZXJlZEJ5SGVhZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0OiBjYWNoZWREYXRhLmh0bWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBEeW5hbWljIFJTQyByZXNwb25zZXMgY2Fubm90IGJlIGNhY2hlZCwgZXZlbiBpZiB0aGV5J3JlXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25maWd1cmVkIHdpdGggYGZvcmNlLXN0YXRpY2AgYmVjYXVzZSB3ZSBoYXZlIG5vIHdheSBvZlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGlzdGluZ3Vpc2hpbmcgYmV0d2VlbiBgZm9yY2Utc3RhdGljYCBhbmQgcGFnZXMgdGhhdCBoYXZlIG5vXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBwb3N0cG9uZWQgc3RhdGUuXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBkaXN0aW5ndWlzaCBgZm9yY2Utc3RhdGljYCBmcm9tIHBhZ2VzIHdpdGggbm8gcG9zdHBvbmVkIHN0YXRlIChzdGF0aWMpXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWNoZUNvbnRyb2w6IGlzRHluYW1pY1JTQ1JlcXVlc3QgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2YWxpZGF0ZTogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBpcmU6IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgfSA6IGNhY2hlRW50cnkuY2FjaGVDb250cm9sXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBBcyB0aGlzIGlzbid0IGEgcHJlZmV0Y2ggcmVxdWVzdCwgd2Ugc2hvdWxkIHNlcnZlIHRoZSBzdGF0aWMgZmxpZ2h0XG4gICAgICAgICAgICAgICAgLy8gZGF0YS5cbiAgICAgICAgICAgICAgICByZXR1cm4gc2VuZFJlbmRlclJlc3VsdCh7XG4gICAgICAgICAgICAgICAgICAgIHJlcSxcbiAgICAgICAgICAgICAgICAgICAgcmVzLFxuICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZUV0YWdzOiBuZXh0Q29uZmlnLmdlbmVyYXRlRXRhZ3MsXG4gICAgICAgICAgICAgICAgICAgIHBvd2VyZWRCeUhlYWRlcjogbmV4dENvbmZpZy5wb3dlcmVkQnlIZWFkZXIsXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdDogUmVuZGVyUmVzdWx0LmZyb21TdGF0aWMoY2FjaGVkRGF0YS5yc2NEYXRhLCBSU0NfQ09OVEVOVF9UWVBFX0hFQURFUiksXG4gICAgICAgICAgICAgICAgICAgIGNhY2hlQ29udHJvbDogY2FjaGVFbnRyeS5jYWNoZUNvbnRyb2xcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFRoaXMgaXMgYSByZXF1ZXN0IGZvciBIVE1MIGRhdGEuXG4gICAgICAgICAgICBsZXQgYm9keSA9IGNhY2hlZERhdGEuaHRtbDtcbiAgICAgICAgICAgIC8vIElmIHRoZXJlJ3Mgbm8gcG9zdHBvbmVkIHN0YXRlLCB3ZSBzaG91bGQganVzdCBzZXJ2ZSB0aGUgSFRNTC4gVGhpc1xuICAgICAgICAgICAgLy8gc2hvdWxkIGFsc28gYmUgdGhlIGNhc2UgZm9yIGEgcmVzdW1lIHJlcXVlc3QgYmVjYXVzZSBpdCdzIGNvbXBsZXRlZFxuICAgICAgICAgICAgLy8gYXMgYSBzZXJ2ZXIgcmVuZGVyIChyYXRoZXIgdGhhbiBhIHN0YXRpYyByZW5kZXIpLlxuICAgICAgICAgICAgaWYgKCFkaWRQb3N0cG9uZSB8fCBtaW5pbWFsTW9kZSB8fCBpc1JTQ1JlcXVlc3QpIHtcbiAgICAgICAgICAgICAgICAvLyBJZiB3ZSdyZSBpbiB0ZXN0IG1vZGUsIHdlIHNob3VsZCBhZGQgYSBzZW50aW5lbCBjaHVuayB0byB0aGUgcmVzcG9uc2VcbiAgICAgICAgICAgICAgICAvLyB0aGF0J3MgYmV0d2VlbiB0aGUgc3RhdGljIGFuZCBkeW5hbWljIHBhcnRzIHNvIHdlIGNhbiBjb21wYXJlIHRoZVxuICAgICAgICAgICAgICAgIC8vIGNodW5rcyBhbmQgYWRkIGFzc2VydGlvbnMuXG4gICAgICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Ll9fTkVYVF9URVNUX01PREUgJiYgbWluaW1hbE1vZGUgJiYgaXNSb3V0ZVBQUkVuYWJsZWQgJiYgYm9keS5jb250ZW50VHlwZSA9PT0gSFRNTF9DT05URU5UX1RZUEVfSEVBREVSKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEFzIHdlJ3JlIGluIG1pbmltYWwgbW9kZSwgdGhlIHN0YXRpYyBwYXJ0IHdvdWxkIGhhdmUgYWxyZWFkeSBiZWVuXG4gICAgICAgICAgICAgICAgICAgIC8vIHN0cmVhbWVkIGZpcnN0LiBUaGUgb25seSBwYXJ0IHRoYXQgdGhpcyBzdHJlYW1zIGlzIHRoZSBkeW5hbWljIHBhcnRcbiAgICAgICAgICAgICAgICAgICAgLy8gc28gd2Ugc2hvdWxkIEZJUlNUIHN0cmVhbSB0aGUgc2VudGluZWwgYW5kIFRIRU4gdGhlIGR5bmFtaWMgcGFydC5cbiAgICAgICAgICAgICAgICAgICAgYm9keS51bnNoaWZ0KGNyZWF0ZVBQUkJvdW5kYXJ5U2VudGluZWwoKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBzZW5kUmVuZGVyUmVzdWx0KHtcbiAgICAgICAgICAgICAgICAgICAgcmVxLFxuICAgICAgICAgICAgICAgICAgICByZXMsXG4gICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlRXRhZ3M6IG5leHRDb25maWcuZ2VuZXJhdGVFdGFncyxcbiAgICAgICAgICAgICAgICAgICAgcG93ZXJlZEJ5SGVhZGVyOiBuZXh0Q29uZmlnLnBvd2VyZWRCeUhlYWRlcixcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0OiBib2R5LFxuICAgICAgICAgICAgICAgICAgICBjYWNoZUNvbnRyb2w6IGNhY2hlRW50cnkuY2FjaGVDb250cm9sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBJZiB3ZSdyZSBkZWJ1Z2dpbmcgdGhlIHN0YXRpYyBzaGVsbCBvciB0aGUgZHluYW1pYyBBUEkgYWNjZXNzZXMsIHdlXG4gICAgICAgICAgICAvLyBzaG91bGQganVzdCBzZXJ2ZSB0aGUgSFRNTCB3aXRob3V0IHJlc3VtaW5nIHRoZSByZW5kZXIuIFRoZSByZXR1cm5lZFxuICAgICAgICAgICAgLy8gSFRNTCB3aWxsIGJlIHRoZSBzdGF0aWMgc2hlbGwgc28gYWxsIHRoZSBEeW5hbWljIEFQSSdzIHdpbGwgYmUgdXNlZFxuICAgICAgICAgICAgLy8gZHVyaW5nIHN0YXRpYyBnZW5lcmF0aW9uLlxuICAgICAgICAgICAgaWYgKGlzRGVidWdTdGF0aWNTaGVsbCB8fCBpc0RlYnVnRHluYW1pY0FjY2Vzc2VzKSB7XG4gICAgICAgICAgICAgICAgLy8gU2luY2Ugd2UncmUgbm90IHJlc3VtaW5nIHRoZSByZW5kZXIsIHdlIG5lZWQgdG8gYXQgbGVhc3QgYWRkIHRoZVxuICAgICAgICAgICAgICAgIC8vIGNsb3NpbmcgYm9keSBhbmQgaHRtbCB0YWdzIHRvIGNyZWF0ZSB2YWxpZCBIVE1MLlxuICAgICAgICAgICAgICAgIGJvZHkucHVzaChuZXcgUmVhZGFibGVTdHJlYW0oe1xuICAgICAgICAgICAgICAgICAgICBzdGFydCAoY29udHJvbGxlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbGxlci5lbnF1ZXVlKEVOQ09ERURfVEFHUy5DTE9TRUQuQk9EWV9BTkRfSFRNTCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sbGVyLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbmRSZW5kZXJSZXN1bHQoe1xuICAgICAgICAgICAgICAgICAgICByZXEsXG4gICAgICAgICAgICAgICAgICAgIHJlcyxcbiAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVFdGFnczogbmV4dENvbmZpZy5nZW5lcmF0ZUV0YWdzLFxuICAgICAgICAgICAgICAgICAgICBwb3dlcmVkQnlIZWFkZXI6IG5leHRDb25maWcucG93ZXJlZEJ5SGVhZGVyLFxuICAgICAgICAgICAgICAgICAgICByZXN1bHQ6IGJvZHksXG4gICAgICAgICAgICAgICAgICAgIGNhY2hlQ29udHJvbDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV2YWxpZGF0ZTogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cGlyZTogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIElmIHdlJ3JlIGluIHRlc3QgbW9kZSwgd2Ugc2hvdWxkIGFkZCBhIHNlbnRpbmVsIGNodW5rIHRvIHRoZSByZXNwb25zZVxuICAgICAgICAgICAgLy8gdGhhdCdzIGJldHdlZW4gdGhlIHN0YXRpYyBhbmQgZHluYW1pYyBwYXJ0cyBzbyB3ZSBjYW4gY29tcGFyZSB0aGVcbiAgICAgICAgICAgIC8vIGNodW5rcyBhbmQgYWRkIGFzc2VydGlvbnMuXG4gICAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX1RFU1RfTU9ERSkge1xuICAgICAgICAgICAgICAgIGJvZHkucHVzaChjcmVhdGVQUFJCb3VuZGFyeVNlbnRpbmVsKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gVGhpcyByZXF1ZXN0IGhhcyBwb3N0cG9uZWQsIHNvIGxldCdzIGNyZWF0ZSBhIG5ldyB0cmFuc2Zvcm1lciB0aGF0IHRoZVxuICAgICAgICAgICAgLy8gZHluYW1pYyBkYXRhIGNhbiBwaXBlIHRvIHRoYXQgd2lsbCBhdHRhY2ggdGhlIGR5bmFtaWMgZGF0YSB0byB0aGUgZW5kXG4gICAgICAgICAgICAvLyBvZiB0aGUgcmVzcG9uc2UuXG4gICAgICAgICAgICBjb25zdCB0cmFuc2Zvcm1lciA9IG5ldyBUcmFuc2Zvcm1TdHJlYW0oKTtcbiAgICAgICAgICAgIGJvZHkucHVzaCh0cmFuc2Zvcm1lci5yZWFkYWJsZSk7XG4gICAgICAgICAgICAvLyBQZXJmb3JtIHRoZSByZW5kZXIgYWdhaW4sIGJ1dCB0aGlzIHRpbWUsIHByb3ZpZGUgdGhlIHBvc3Rwb25lZCBzdGF0ZS5cbiAgICAgICAgICAgIC8vIFdlIGRvbid0IGF3YWl0IGJlY2F1c2Ugd2Ugd2FudCB0aGUgcmVzdWx0IHRvIHN0YXJ0IHN0cmVhbWluZyBub3csIGFuZFxuICAgICAgICAgICAgLy8gd2UndmUgYWxyZWFkeSBjaGFpbmVkIHRoZSB0cmFuc2Zvcm1lcidzIHJlYWRhYmxlIHRvIHRoZSByZW5kZXIgcmVzdWx0LlxuICAgICAgICAgICAgZG9SZW5kZXIoe1xuICAgICAgICAgICAgICAgIHNwYW4sXG4gICAgICAgICAgICAgICAgcG9zdHBvbmVkOiBjYWNoZWREYXRhLnBvc3Rwb25lZCxcbiAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgcmVzdW1lIHJlbmRlciwgbm90IGEgZmFsbGJhY2sgcmVuZGVyLCBzbyB3ZSBkb24ndCBuZWVkIHRvXG4gICAgICAgICAgICAgICAgLy8gc2V0IHRoaXMuXG4gICAgICAgICAgICAgICAgZmFsbGJhY2tSb3V0ZVBhcmFtczogbnVsbFxuICAgICAgICAgICAgfSkudGhlbihhc3luYyAocmVzdWx0KT0+e1xuICAgICAgICAgICAgICAgIHZhciBfcmVzdWx0X3ZhbHVlO1xuICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgRXJyb3IoJ0ludmFyaWFudDogZXhwZWN0ZWQgYSByZXN1bHQgdG8gYmUgcmV0dXJuZWQnKSwgXCJfX05FWFRfRVJST1JfQ09ERVwiLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogXCJFNDYzXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCgoX3Jlc3VsdF92YWx1ZSA9IHJlc3VsdC52YWx1ZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9yZXN1bHRfdmFsdWUua2luZCkgIT09IENhY2hlZFJvdXRlS2luZC5BUFBfUEFHRSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgX3Jlc3VsdF92YWx1ZTE7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgRXJyb3IoYEludmFyaWFudDogZXhwZWN0ZWQgYSBwYWdlIHJlc3BvbnNlLCBnb3QgJHsoX3Jlc3VsdF92YWx1ZTEgPSByZXN1bHQudmFsdWUpID09IG51bGwgPyB2b2lkIDAgOiBfcmVzdWx0X3ZhbHVlMS5raW5kfWApLCBcIl9fTkVYVF9FUlJPUl9DT0RFXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIkUzMDVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBQaXBlIHRoZSByZXN1bWUgcmVzdWx0IHRvIHRoZSB0cmFuc2Zvcm1lci5cbiAgICAgICAgICAgICAgICBhd2FpdCByZXN1bHQudmFsdWUuaHRtbC5waXBlVG8odHJhbnNmb3JtZXIud3JpdGFibGUpO1xuICAgICAgICAgICAgfSkuY2F0Y2goKGVycik9PntcbiAgICAgICAgICAgICAgICAvLyBBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgcGlwaW5nIG9yIHByZXBhcmluZyB0aGUgcmVuZGVyLCBhYm9ydFxuICAgICAgICAgICAgICAgIC8vIHRoZSB0cmFuc2Zvcm1lcnMgd3JpdGVyIHNvIHdlIGNhbiB0ZXJtaW5hdGUgdGhlIHN0cmVhbS5cbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm1lci53cml0YWJsZS5hYm9ydChlcnIpLmNhdGNoKChlKT0+e1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiY291bGRuJ3QgYWJvcnQgdHJhbnNmb3JtZXJcIiwgZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBzZW5kUmVuZGVyUmVzdWx0KHtcbiAgICAgICAgICAgICAgICByZXEsXG4gICAgICAgICAgICAgICAgcmVzLFxuICAgICAgICAgICAgICAgIGdlbmVyYXRlRXRhZ3M6IG5leHRDb25maWcuZ2VuZXJhdGVFdGFncyxcbiAgICAgICAgICAgICAgICBwb3dlcmVkQnlIZWFkZXI6IG5leHRDb25maWcucG93ZXJlZEJ5SGVhZGVyLFxuICAgICAgICAgICAgICAgIHJlc3VsdDogYm9keSxcbiAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRvIGNhY2hlIHRoZSByZXNwb25zZSBpZiBpdCBoYXMgcG9zdHBvbmVkIGRhdGEgYmVjYXVzZVxuICAgICAgICAgICAgICAgIC8vIHRoZSByZXNwb25zZSBiZWluZyBzZW50IHRvIHRoZSBjbGllbnQgaXQncyBkeW5hbWljIHBhcnRzIGFyZSBzdHJlYW1lZFxuICAgICAgICAgICAgICAgIC8vIHRvIHRoZSBjbGllbnQgb24gdGhlIHNhbWUgcmVxdWVzdC5cbiAgICAgICAgICAgICAgICBjYWNoZUNvbnRyb2w6IHtcbiAgICAgICAgICAgICAgICAgICAgcmV2YWxpZGF0ZTogMCxcbiAgICAgICAgICAgICAgICAgICAgZXhwaXJlOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgLy8gVE9ETzogYWN0aXZlU3BhbiBjb2RlIHBhdGggaXMgZm9yIHdoZW4gd3JhcHBlZCBieVxuICAgICAgICAvLyBuZXh0LXNlcnZlciBjYW4gYmUgcmVtb3ZlZCB3aGVuIHRoaXMgaXMgbm8gbG9uZ2VyIHVzZWRcbiAgICAgICAgaWYgKGFjdGl2ZVNwYW4pIHtcbiAgICAgICAgICAgIGF3YWl0IGhhbmRsZVJlc3BvbnNlKGFjdGl2ZVNwYW4pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRyYWNlci53aXRoUHJvcGFnYXRlZENvbnRleHQocmVxLmhlYWRlcnMsICgpPT50cmFjZXIudHJhY2UoQmFzZVNlcnZlclNwYW4uaGFuZGxlUmVxdWVzdCwge1xuICAgICAgICAgICAgICAgICAgICBzcGFuTmFtZTogYCR7bWV0aG9kfSAke3JlcS51cmx9YCxcbiAgICAgICAgICAgICAgICAgICAga2luZDogU3BhbktpbmQuU0VSVkVSLFxuICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAnaHR0cC5tZXRob2QnOiBtZXRob2QsXG4gICAgICAgICAgICAgICAgICAgICAgICAnaHR0cC50YXJnZXQnOiByZXEudXJsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCBoYW5kbGVSZXNwb25zZSkpO1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGlmICghKGVyciBpbnN0YW5jZW9mIE5vRmFsbGJhY2tFcnJvcikpIHtcbiAgICAgICAgICAgIGF3YWl0IHJvdXRlTW9kdWxlLm9uUmVxdWVzdEVycm9yKHJlcSwgZXJyLCB7XG4gICAgICAgICAgICAgICAgcm91dGVyS2luZDogJ0FwcCBSb3V0ZXInLFxuICAgICAgICAgICAgICAgIHJvdXRlUGF0aDogc3JjUGFnZSxcbiAgICAgICAgICAgICAgICByb3V0ZVR5cGU6ICdyZW5kZXInLFxuICAgICAgICAgICAgICAgIHJldmFsaWRhdGVSZWFzb246IGdldFJldmFsaWRhdGVSZWFzb24oe1xuICAgICAgICAgICAgICAgICAgICBpc1JldmFsaWRhdGU6IGlzU1NHLFxuICAgICAgICAgICAgICAgICAgICBpc09uRGVtYW5kUmV2YWxpZGF0ZVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9LCByb3V0ZXJTZXJ2ZXJDb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgICAvLyByZXRocm93IHNvIHRoYXQgd2UgY2FuIGhhbmRsZSBzZXJ2aW5nIGVycm9yIHBhZ2VcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbn1cbi8vIFRPRE86IG9taXQgdGhpcyBmcm9tIHByb2R1Y3Rpb24gYnVpbGRzLCBvbmx5IHRlc3QgYnVpbGRzIHNob3VsZCBpbmNsdWRlIGl0XG4vKipcbiAqIENyZWF0ZXMgYSByZWFkYWJsZSBzdHJlYW0gdGhhdCBlbWl0cyBhIFBQUiBib3VuZGFyeSBzZW50aW5lbC5cbiAqXG4gKiBAcmV0dXJucyBBIHJlYWRhYmxlIHN0cmVhbSB0aGF0IGVtaXRzIGEgUFBSIGJvdW5kYXJ5IHNlbnRpbmVsLlxuICovIGZ1bmN0aW9uIGNyZWF0ZVBQUkJvdW5kYXJ5U2VudGluZWwoKSB7XG4gICAgcmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7XG4gICAgICAgIHN0YXJ0IChjb250cm9sbGVyKSB7XG4gICAgICAgICAgICBjb250cm9sbGVyLmVucXVldWUobmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKCc8IS0tIFBQUl9CT1VOREFSWV9TRU5USU5FTCAtLT4nKSk7XG4gICAgICAgICAgICBjb250cm9sbGVyLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9YXBwLXBhZ2UuanMubWFwXG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2FUsers%2Fdhananjaypai%2FCoding%2FPersonal%2Fopm%2Fpackages%2Fweb%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fdhananjaypai%2FCoding%2FPersonal%2Fopm%2Fpackages%2Fweb&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=!\n");
56
56
 
57
- /***/ }),
58
-
59
- /***/ "(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fdhananjaypai%2FCoding%2FPersonal%2Fopm%2Fpackages%2Fweb%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=true!":
60
- /*!******************************************************************************************************************************************************************************************************************************************************!*\
61
- !*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fdhananjaypai%2FCoding%2FPersonal%2Fopm%2Fpackages%2Fweb%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=true! ***!
62
- \******************************************************************************************************************************************************************************************************************************************************/
63
- /***/ (() => {
64
-
65
-
66
-
67
57
  /***/ }),
68
58
 
69
59
  /***/ "(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fdhananjaypai%2FCoding%2FPersonal%2Fopm%2Fpackages%2Fweb%2Fapp%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=true!":
@@ -84,6 +74,16 @@ eval("Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__web
84
74
 
85
75
  eval("Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/builtin/global-error.js */ \"(rsc)/./node_modules/next/dist/client/components/builtin/global-error.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/client-page.js */ \"(rsc)/./node_modules/next/dist/client/components/client-page.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/client-segment.js */ \"(rsc)/./node_modules/next/dist/client/components/client-segment.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js */ \"(rsc)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/layout-router.js */ \"(rsc)/./node_modules/next/dist/client/components/layout-router.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/metadata/async-metadata.js */ \"(rsc)/./node_modules/next/dist/client/components/metadata/async-metadata.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/render-from-template-context.js */ \"(rsc)/./node_modules/next/dist/client/components/render-from-template-context.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/lib/framework/boundary-components.js */ \"(rsc)/./node_modules/next/dist/lib/framework/boundary-components.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/lib/metadata/generate/icon-mark.js */ \"(rsc)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js */ \"(rsc)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js\", 23));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1jbGllbnQtZW50cnktbG9hZGVyLmpzP21vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGZGhhbmFuamF5cGFpJTJGQ29kaW5nJTJGUGVyc29uYWwlMkZvcG0lMkZwYWNrYWdlcyUyRndlYiUyRm5vZGVfbW9kdWxlcyUyRm5leHQlMkZkaXN0JTJGY2xpZW50JTJGY29tcG9uZW50cyUyRmJ1aWx0aW4lMkZnbG9iYWwtZXJyb3IuanMlMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0QmbW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyJTJGVXNlcnMlMkZkaGFuYW5qYXlwYWklMkZDb2RpbmclMkZQZXJzb25hbCUyRm9wbSUyRnBhY2thZ2VzJTJGd2ViJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGY2xpZW50LXBhZ2UuanMlMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0QmbW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyJTJGVXNlcnMlMkZkaGFuYW5qYXlwYWklMkZDb2RpbmclMkZQZXJzb25hbCUyRm9wbSUyRnBhY2thZ2VzJTJGd2ViJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGY2xpZW50LXNlZ21lbnQuanMlMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0QmbW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyJTJGVXNlcnMlMkZkaGFuYW5qYXlwYWklMkZDb2RpbmclMkZQZXJzb25hbCUyRm9wbSUyRnBhY2thZ2VzJTJGd2ViJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGaHR0cC1hY2Nlc3MtZmFsbGJhY2slMkZlcnJvci1ib3VuZGFyeS5qcyUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZtb2R1bGVzPSU3QiUyMnJlcXVlc3QlMjIlM0ElMjIlMkZVc2VycyUyRmRoYW5hbmpheXBhaSUyRkNvZGluZyUyRlBlcnNvbmFsJTJGb3BtJTJGcGFja2FnZXMlMkZ3ZWIlMkZub2RlX21vZHVsZXMlMkZuZXh0JTJGZGlzdCUyRmNsaWVudCUyRmNvbXBvbmVudHMlMkZsYXlvdXQtcm91dGVyLmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGZGhhbmFuamF5cGFpJTJGQ29kaW5nJTJGUGVyc29uYWwlMkZvcG0lMkZwYWNrYWdlcyUyRndlYiUyRm5vZGVfbW9kdWxlcyUyRm5leHQlMkZkaXN0JTJGY2xpZW50JTJGY29tcG9uZW50cyUyRm1ldGFkYXRhJTJGYXN5bmMtbWV0YWRhdGEuanMlMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0QmbW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyJTJGVXNlcnMlMkZkaGFuYW5qYXlwYWklMkZDb2RpbmclMkZQZXJzb25hbCUyRm9wbSUyRnBhY2thZ2VzJTJGd2ViJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGcmVuZGVyLWZyb20tdGVtcGxhdGUtY29udGV4dC5qcyUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZtb2R1bGVzPSU3QiUyMnJlcXVlc3QlMjIlM0ElMjIlMkZVc2VycyUyRmRoYW5hbmpheXBhaSUyRkNvZGluZyUyRlBlcnNvbmFsJTJGb3BtJTJGcGFja2FnZXMlMkZ3ZWIlMkZub2RlX21vZHVsZXMlMkZuZXh0JTJGZGlzdCUyRmxpYiUyRmZyYW1ld29yayUyRmJvdW5kYXJ5LWNvbXBvbmVudHMuanMlMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0QmbW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyJTJGVXNlcnMlMkZkaGFuYW5qYXlwYWklMkZDb2RpbmclMkZQZXJzb25hbCUyRm9wbSUyRnBhY2thZ2VzJTJGd2ViJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZsaWIlMkZtZXRhZGF0YSUyRmdlbmVyYXRlJTJGaWNvbi1tYXJrLmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGZGhhbmFuamF5cGFpJTJGQ29kaW5nJTJGUGVyc29uYWwlMkZvcG0lMkZwYWNrYWdlcyUyRndlYiUyRm5vZGVfbW9kdWxlcyUyRm5leHQlMkZkaXN0JTJGbmV4dC1kZXZ0b29scyUyRnVzZXJzcGFjZSUyRmFwcCUyRnNlZ21lbnQtZXhwbG9yZXItbm9kZS5qcyUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZzZXJ2ZXI9dHJ1ZSEiLCJtYXBwaW5ncyI6IkFBQUEsc1BBQTBKO0FBQzFKO0FBQ0Esb09BQWlKO0FBQ2pKO0FBQ0EsME9BQW9KO0FBQ3BKO0FBQ0Esb1JBQXlLO0FBQ3pLO0FBQ0Esd09BQW1KO0FBQ25KO0FBQ0EsNFBBQTZKO0FBQzdKO0FBQ0Esc1FBQWtLO0FBQ2xLO0FBQ0EsNE9BQXFKO0FBQ3JKO0FBQ0Esd09BQW1KO0FBQ25KO0FBQ0EsNFFBQXFLIiwic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvZGhhbmFuamF5cGFpL0NvZGluZy9QZXJzb25hbC9vcG0vcGFja2FnZXMvd2ViL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvYnVpbHRpbi9nbG9iYWwtZXJyb3IuanNcIik7XG47XG5pbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9Vc2Vycy9kaGFuYW5qYXlwYWkvQ29kaW5nL1BlcnNvbmFsL29wbS9wYWNrYWdlcy93ZWIvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9jbGllbnQtcGFnZS5qc1wiKTtcbjtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL2RoYW5hbmpheXBhaS9Db2RpbmcvUGVyc29uYWwvb3BtL3BhY2thZ2VzL3dlYi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2NsaWVudC1zZWdtZW50LmpzXCIpO1xuO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvZGhhbmFuamF5cGFpL0NvZGluZy9QZXJzb25hbC9vcG0vcGFja2FnZXMvd2ViL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvaHR0cC1hY2Nlc3MtZmFsbGJhY2svZXJyb3ItYm91bmRhcnkuanNcIik7XG47XG5pbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9Vc2Vycy9kaGFuYW5qYXlwYWkvQ29kaW5nL1BlcnNvbmFsL29wbS9wYWNrYWdlcy93ZWIvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9sYXlvdXQtcm91dGVyLmpzXCIpO1xuO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvZGhhbmFuamF5cGFpL0NvZGluZy9QZXJzb25hbC9vcG0vcGFja2FnZXMvd2ViL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvbWV0YWRhdGEvYXN5bmMtbWV0YWRhdGEuanNcIik7XG47XG5pbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9Vc2Vycy9kaGFuYW5qYXlwYWkvQ29kaW5nL1BlcnNvbmFsL29wbS9wYWNrYWdlcy93ZWIvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9yZW5kZXItZnJvbS10ZW1wbGF0ZS1jb250ZXh0LmpzXCIpO1xuO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvZGhhbmFuamF5cGFpL0NvZGluZy9QZXJzb25hbC9vcG0vcGFja2FnZXMvd2ViL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvbGliL2ZyYW1ld29yay9ib3VuZGFyeS1jb21wb25lbnRzLmpzXCIpO1xuO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvZGhhbmFuamF5cGFpL0NvZGluZy9QZXJzb25hbC9vcG0vcGFja2FnZXMvd2ViL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvbGliL21ldGFkYXRhL2dlbmVyYXRlL2ljb24tbWFyay5qc1wiKTtcbjtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL2RoYW5hbmpheXBhaS9Db2RpbmcvUGVyc29uYWwvb3BtL3BhY2thZ2VzL3dlYi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC9zZWdtZW50LWV4cGxvcmVyLW5vZGUuanNcIik7XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fdhananjaypai%2FCoding%2FPersonal%2Fopm%2Fpackages%2Fweb%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fbuiltin%2Fglobal-error.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fdhananjaypai%2FCoding%2FPersonal%2Fopm%2Fpackages%2Fweb%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fdhananjaypai%2FCoding%2FPersonal%2Fopm%2Fpackages%2Fweb%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-segment.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fdhananjaypai%2FCoding%2FPersonal%2Fopm%2Fpackages%2Fweb%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fhttp-access-fallback%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fdhananjaypai%2FCoding%2FPersonal%2Fopm%2Fpackages%2Fweb%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fdhananjaypai%2FCoding%2FPersonal%2Fopm%2Fpackages%2Fweb%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fmetadata%2Fasync-metadata.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fdhananjaypai%2FCoding%2FPersonal%2Fopm%2Fpackages%2Fweb%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fdhananjaypai%2FCoding%2FPersonal%2Fopm%2Fpackages%2Fweb%2Fnode_modules%2Fnext%2Fdist%2Flib%2Fframework%2Fboundary-components.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fdhananjaypai%2FCoding%2FPersonal%2Fopm%2Fpackages%2Fweb%2Fnode_modules%2Fnext%2Fdist%2Flib%2Fmetadata%2Fgenerate%2Ficon-mark.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fdhananjaypai%2FCoding%2FPersonal%2Fopm%2Fpackages%2Fweb%2Fnode_modules%2Fnext%2Fdist%2Fnext-devtools%2Fuserspace%2Fapp%2Fsegment-explorer-node.js%22%2C%22ids%22%3A%5B%5D%7D&server=true!\n");
86
76
 
77
+ /***/ }),
78
+
79
+ /***/ "(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fdhananjaypai%2FCoding%2FPersonal%2Fopm%2Fpackages%2Fweb%2Fnode_modules%2Fnext%2Ffont%2Fgoogle%2Ftarget.css%3F%7B%5C%22path%5C%22%3A%5C%22app%2Flayout.tsx%5C%22%2C%5C%22import%5C%22%3A%5C%22Geist%5C%22%2C%5C%22arguments%5C%22%3A%5B%7B%5C%22subsets%5C%22%3A%5B%5C%22latin%5C%22%5D%7D%5D%2C%5C%22variableName%5C%22%3A%5C%22_geist%5C%22%7D%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fdhananjaypai%2FCoding%2FPersonal%2Fopm%2Fpackages%2Fweb%2Fnode_modules%2Fnext%2Ffont%2Fgoogle%2Ftarget.css%3F%7B%5C%22path%5C%22%3A%5C%22app%2Flayout.tsx%5C%22%2C%5C%22import%5C%22%3A%5C%22Geist_Mono%5C%22%2C%5C%22arguments%5C%22%3A%5B%7B%5C%22subsets%5C%22%3A%5B%5C%22latin%5C%22%5D%7D%5D%2C%5C%22variableName%5C%22%3A%5C%22_geistMono%5C%22%7D%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fdhananjaypai%2FCoding%2FPersonal%2Fopm%2Fpackages%2Fweb%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=true!":
80
+ /*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
81
+ !*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fdhananjaypai%2FCoding%2FPersonal%2Fopm%2Fpackages%2Fweb%2Fnode_modules%2Fnext%2Ffont%2Fgoogle%2Ftarget.css%3F%7B%5C%22path%5C%22%3A%5C%22app%2Flayout.tsx%5C%22%2C%5C%22import%5C%22%3A%5C%22Geist%5C%22%2C%5C%22arguments%5C%22%3A%5B%7B%5C%22subsets%5C%22%3A%5B%5C%22latin%5C%22%5D%7D%5D%2C%5C%22variableName%5C%22%3A%5C%22_geist%5C%22%7D%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fdhananjaypai%2FCoding%2FPersonal%2Fopm%2Fpackages%2Fweb%2Fnode_modules%2Fnext%2Ffont%2Fgoogle%2Ftarget.css%3F%7B%5C%22path%5C%22%3A%5C%22app%2Flayout.tsx%5C%22%2C%5C%22import%5C%22%3A%5C%22Geist_Mono%5C%22%2C%5C%22arguments%5C%22%3A%5B%7B%5C%22subsets%5C%22%3A%5B%5C%22latin%5C%22%5D%7D%5D%2C%5C%22variableName%5C%22%3A%5C%22_geistMono%5C%22%7D%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fdhananjaypai%2FCoding%2FPersonal%2Fopm%2Fpackages%2Fweb%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=true! ***!
82
+ \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
83
+ /***/ (() => {
84
+
85
+
86
+
87
87
  /***/ }),
88
88
 
89
89
  /***/ "(ssr)/./app/page.tsx":
@@ -93,17 +93,7 @@ eval("Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__w
93
93
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
94
94
 
95
95
  "use strict";
96
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Home)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\nconst DOCS_URL = 'http://localhost:3001';\nconst GITHUB_URL = 'https://github.com/dhananjaypai08/opm';\nconst NPM_URL = 'https://www.npmjs.com/package/opmsec';\nconst CONTRACT = '0x16684391fc9bf48246B08Afe16d1a57BFa181d48';\nconst BASESCAN = `https://sepolia.basescan.org/address/${CONTRACT}`;\nfunction Logo({ size = 20 }) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n viewBox: \"0 0 32 32\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"rect\", {\n width: \"32\",\n height: \"32\",\n rx: \"6\",\n fill: \"#ededed\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 14,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n d: \"M8 10L12 22L16 13L20 22L24 10\",\n stroke: \"#0a0a0a\",\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 15,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"circle\", {\n cx: \"16\",\n cy: \"24\",\n r: \"1.5\",\n fill: \"#16a34a\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 16,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 13,\n columnNumber: 5\n }, this);\n}\nfunction Nav() {\n const [scrolled, setScrolled] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"Nav.useEffect\": ()=>{\n const handler = {\n \"Nav.useEffect.handler\": ()=>setScrolled(window.scrollY > 20)\n }[\"Nav.useEffect.handler\"];\n window.addEventListener('scroll', handler, {\n passive: true\n });\n return ({\n \"Nav.useEffect\": ()=>window.removeEventListener('scroll', handler)\n })[\"Nav.useEffect\"];\n }\n }[\"Nav.useEffect\"], []);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n className: `fixed top-0 left-0 right-0 z-40 transition-all duration-300 ${scrolled ? 'bg-bg/80 backdrop-blur-xl border-b border-border' : ''}`,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-6xl mx-auto px-6 h-16 flex items-center justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: \"/\",\n className: \"flex items-center gap-2.5 hover:opacity-80 transition-opacity\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Logo, {\n size: 24\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 33,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-lg font-semibold tracking-tight\",\n children: \"opm\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 34,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-[10px] font-mono text-muted bg-surface px-1.5 py-0.5 rounded border border-border\",\n children: \"v0.1.3\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 35,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 32,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: \"#features\",\n className: \"text-sm text-muted hover:text-accent transition-colors\",\n children: \"Features\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 38,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: \"#architecture\",\n className: \"text-sm text-muted hover:text-accent transition-colors\",\n children: \"Architecture\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 39,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: \"#cli\",\n className: \"text-sm text-muted hover:text-accent transition-colors\",\n children: \"CLI\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 40,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: DOCS_URL,\n target: \"_blank\",\n rel: \"noopener\",\n className: \"text-sm text-muted hover:text-accent transition-colors\",\n children: \"Docs\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 41,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: GITHUB_URL,\n target: \"_blank\",\n rel: \"noopener\",\n className: \"text-sm text-muted hover:text-accent transition-colors\",\n children: \"GitHub\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 42,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: BASESCAN,\n target: \"_blank\",\n rel: \"noopener\",\n className: \"text-sm font-mono text-muted hover:text-accent transition-colors flex items-center gap-1.5\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"w-1.5 h-1.5 rounded-full bg-green-500 animate-pulse\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 44,\n columnNumber: 13\n }, this),\n \"Base Sepolia\"\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 43,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 37,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 31,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 30,\n columnNumber: 5\n }, this);\n}\nfunction Hero() {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n className: \"relative min-h-screen flex items-center justify-center grid-bg overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-[800px] h-[800px] rounded-full bg-gradient-radial from-white/[0.02] to-transparent animate-glow-pulse\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 57,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 56,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative z-10 max-w-4xl mx-auto px-6 text-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"animate-fade-in\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"inline-flex items-center gap-2 text-xs font-mono text-muted mb-8 px-3 py-1.5 rounded-full border border-border bg-surface/50\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"w-1.5 h-1.5 rounded-full bg-green-500\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 63,\n columnNumber: 13\n }, this),\n \"Secured by multi-agent consensus on Base L2\"\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 62,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 61,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-6xl md:text-8xl font-bold tracking-tighter leading-[0.9] mb-6 animate-slide-up\",\n style: {\n animationDelay: '0.1s',\n animationFillMode: 'backwards'\n },\n children: [\n \"On-chain\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"br\", {}, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 69,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-transparent bg-clip-text bg-gradient-to-r from-white via-white/90 to-white/40\",\n children: \"Package Security\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 70,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 68,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-lg md:text-xl text-muted max-w-2xl mx-auto mb-12 leading-relaxed animate-slide-up\",\n style: {\n animationDelay: '0.3s',\n animationFillMode: 'backwards'\n },\n children: \"Cryptographic attestation, multi-model AI auditing, and immutable risk scoring for every npm package. All verified on-chain.\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 75,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col sm:flex-row items-center justify-center gap-4 animate-slide-up\",\n style: {\n animationDelay: '0.5s',\n animationFillMode: 'backwards'\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"group relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute -inset-0.5 bg-gradient-to-r from-white/20 to-white/5 rounded-lg opacity-0 group-hover:opacity-100 transition-opacity blur-sm\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 81,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"code\", {\n className: \"relative flex items-center gap-3 bg-surface border border-border rounded-lg px-5 py-3 font-mono text-sm cursor-pointer hover:border-border-light transition-colors\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-muted\",\n children: \"$\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 83,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"npm i -g opmsec\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 84,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-muted/50\",\n children: \"|\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 85,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-muted text-xs\",\n children: [\n \"then: opm install \",\n '<pkg>'\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 86,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 82,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 80,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: DOCS_URL,\n target: \"_blank\",\n rel: \"noopener\",\n className: \"px-5 py-3 text-sm font-medium text-bg bg-accent rounded-lg hover:bg-white transition-colors\",\n children: \"Read the docs\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 89,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 79,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 60,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-0 left-0 right-0 h-32 bg-gradient-to-t from-bg to-transparent\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 95,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 55,\n columnNumber: 5\n }, this);\n}\nfunction Features() {\n const features = [\n {\n title: 'Multi-Agent Consensus',\n description: 'Three independent LLMs (Claude, Gemini, DeepSeek) analyze every package in parallel. Risk scores are intelligence-weighted using live Artificial Analysis benchmarks.',\n detail: 'No single model failure point. Weighted aggregate scoring with model intelligence and coding indices.',\n icon: '⬡'\n },\n {\n title: 'Cryptographic Attestation',\n description: 'Every package is checksummed, signed with the author\\'s wallet, and registered on Base L2. Signatures are verified at install time.',\n detail: 'SHA-256 checksum, ECDSA signature, on-chain registration. Tamper-evident by design.',\n icon: '◈'\n },\n {\n title: 'ZK-Verified Agent Registration',\n description: 'Permissionless agent onboarding with zero-knowledge proof of benchmark accuracy. Agents must achieve 100% on labeled security datasets to participate.',\n detail: 'Hash-commitment scheme with circom circuit reference. Accuracy proven without revealing test data.',\n icon: '◎'\n },\n {\n title: 'On-chain Risk Registry',\n description: 'Immutable risk scores, author profiles, and audit reports stored on Base Sepolia. Every security assessment is a verifiable public record.',\n detail: 'OPMRegistry.sol: authorizedAgents, packages, versionData, AgentScores. Fully queryable.',\n icon: '▣'\n },\n {\n title: 'CVE + Typosquat Detection',\n description: 'OSV database integration for known vulnerabilities. Levenshtein-distance typosquat detection against the top 10,000 npm packages.',\n detail: 'Real-time CVE lookups, automated fix suggestions, dependency confusion detection.',\n icon: '◬'\n },\n {\n title: 'Drop-in npm Replacement',\n description: 'Full CLI compatibility: install, audit, check, push, fix. Every npm command works transparently with security verification layered on top.',\n detail: 'opm install = npm install + on-chain verification + signature check + CVE scan.',\n icon: '◯'\n }\n ];\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n id: \"features\",\n className: \"py-32 px-6\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-6xl mx-auto\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center mb-20\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs font-mono text-muted mb-4 tracking-widest uppercase\",\n children: \"Security Primitives\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 144,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-4xl md:text-5xl font-bold tracking-tight\",\n children: [\n \"Defense in depth,\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"br\", {}, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 146,\n columnNumber: 30\n }, this),\n \"by default.\"\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 145,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 143,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-px bg-border rounded-2xl overflow-hidden\",\n children: features.map((f, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-surface p-8 hover:bg-surface-hover transition-colors group\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-2xl mb-4 block opacity-40 group-hover:opacity-100 transition-opacity\",\n children: f.icon\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 153,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-semibold mb-3\",\n children: f.title\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 154,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-muted leading-relaxed mb-4\",\n children: f.description\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 155,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs font-mono text-muted/60 leading-relaxed\",\n children: f.detail\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 156,\n columnNumber: 15\n }, this)\n ]\n }, i, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 152,\n columnNumber: 13\n }, this))\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 150,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 142,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 141,\n columnNumber: 5\n }, this);\n}\nfunction Architecture() {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n id: \"architecture\",\n className: \"py-32 px-6 border-t border-border\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-6xl mx-auto\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center mb-20\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs font-mono text-muted mb-4 tracking-widest uppercase\",\n children: \"System Design\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 170,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-4xl md:text-5xl font-bold tracking-tight\",\n children: \"Verification pipeline\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 171,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 169,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-5 gap-4\",\n children: [\n {\n step: '01',\n title: 'Pack & Sign',\n desc: 'SHA-256 checksum, ECDSA signature via author wallet'\n },\n {\n step: '02',\n title: 'Multi-Agent Scan',\n desc: '3 LLMs analyze source in parallel, each submits risk score'\n },\n {\n step: '03',\n title: 'Weighted Consensus',\n desc: 'Intelligence-weighted aggregate via Artificial Analysis indices'\n },\n {\n step: '04',\n title: 'On-chain Registry',\n desc: 'Package, scores, report URI registered on Base Sepolia'\n },\n {\n step: '05',\n title: 'Install Verify',\n desc: 'Signature + on-chain score + CVE check at install time'\n }\n ].map((s, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gradient-to-b from-white/5 to-transparent border border-border rounded-xl p-6 h-full\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs font-mono text-muted block mb-3\",\n children: s.step\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 187,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-sm font-semibold mb-2\",\n children: s.title\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 188,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-muted leading-relaxed\",\n children: s.desc\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 189,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 186,\n columnNumber: 17\n }, this),\n i < 4 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"hidden md:block absolute top-1/2 -right-2.5 w-5 h-px bg-border\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 192,\n columnNumber: 19\n }, this)\n ]\n }, i, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 185,\n columnNumber: 15\n }, this))\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 177,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 176,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-20 grid grid-cols-1 md:grid-cols-3 gap-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border border-border rounded-xl p-6 bg-surface/50\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs font-mono text-green-500/80 mb-3\",\n children: \"CHAIN\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 201,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm font-semibold mb-1\",\n children: \"Base Sepolia (L2)\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 202,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-muted\",\n children: \"Low-cost, high-throughput settlement for agent score submissions and package registrations.\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 203,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 200,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border border-border rounded-xl p-6 bg-surface/50\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs font-mono text-blue-400/80 mb-3\",\n children: \"STORAGE\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 206,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm font-semibold mb-1\",\n children: \"Fileverse (IPFS)\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 207,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-muted\",\n children: \"Full audit reports uploaded to decentralized storage. URI stored on-chain for permanent reference.\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 208,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 205,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border border-border rounded-xl p-6 bg-surface/50\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs font-mono text-purple-400/80 mb-3\",\n children: \"IDENTITY\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 211,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm font-semibold mb-1\",\n children: \"ENS Resolution\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 212,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-muted\",\n children: \"Author addresses resolved to ENS names. On-chain author profiles with reputation scoring.\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 213,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 210,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 199,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 168,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 167,\n columnNumber: 5\n }, this);\n}\nfunction CLISection() {\n const commands = [\n {\n cmd: 'opm push',\n desc: 'Sign, scan with 3 AI agents, publish, register on-chain'\n },\n {\n cmd: 'opm install <pkg>',\n desc: 'Install with signature + on-chain + CVE verification'\n },\n {\n cmd: 'opm check',\n desc: 'Scan all deps: typosquats, CVEs, AI analysis, Fileverse report'\n },\n {\n cmd: 'opm fix',\n desc: 'Auto-fix typosquats and vulnerable versions'\n },\n {\n cmd: 'opm audit',\n desc: 'On-chain + CVE audit for entire dependency tree'\n },\n {\n cmd: 'opm info <pkg>',\n desc: 'On-chain metadata, agent scores, safest version'\n },\n {\n cmd: 'opm register-agent',\n desc: 'Register a new security agent (ZK-verified)'\n },\n {\n cmd: 'opm view <name.eth>',\n desc: 'ENS author profile, reputation, published packages'\n }\n ];\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n id: \"cli\",\n className: \"py-32 px-6 border-t border-border\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-6xl mx-auto\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 lg:grid-cols-2 gap-16\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs font-mono text-muted mb-4 tracking-widest uppercase\",\n children: \"CLI Reference\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 238,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-4xl font-bold tracking-tight mb-6\",\n children: [\n \"Every command,\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"br\", {}, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 240,\n columnNumber: 29\n }, this),\n \"security-first.\"\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 239,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-muted leading-relaxed mb-8\",\n children: \"Drop-in replacement for npm. Every operation gains cryptographic verification, AI-powered auditing, and on-chain attestation transparently.\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 242,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: DOCS_URL,\n target: \"_blank\",\n rel: \"noopener\",\n className: \"inline-flex items-center gap-2 text-sm font-medium px-4 py-2 border border-border rounded-lg hover:bg-surface transition-colors\",\n children: \"Full CLI documentation\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 245,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 237,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"terminal-glow rounded-xl border border-border bg-surface overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2 px-4 py-3 border-b border-border\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 rounded-full bg-[#ff5f57]\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 252,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 rounded-full bg-[#febc2e]\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 253,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 rounded-full bg-[#28c840]\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 254,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"ml-2 text-xs text-muted font-mono\",\n children: \"terminal\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 255,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 251,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-5 font-mono text-sm space-y-3\",\n children: commands.map((c, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-muted shrink-0\",\n children: \"$\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 260,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-green-400\",\n children: c.cmd\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 262,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-muted/50 text-xs block mt-0.5\",\n children: c.desc\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 263,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 261,\n columnNumber: 19\n }, this)\n ]\n }, i, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 259,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 257,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 250,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 236,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 235,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 234,\n columnNumber: 5\n }, this);\n}\nfunction ContractSection() {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n className: \"py-32 px-6 border-t border-border\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-4xl mx-auto text-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs font-mono text-muted mb-4 tracking-widest uppercase\",\n children: \"Smart Contract\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 279,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-4xl font-bold tracking-tight mb-6\",\n children: \"Fully on-chain. Fully verifiable.\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 280,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-muted max-w-2xl mx-auto mb-12\",\n children: \"OPMRegistry.sol deployed on Base Sepolia. Every package registration, agent score submission, and author profile is an immutable on-chain record.\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 283,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 md:grid-cols-4 gap-px bg-border rounded-xl overflow-hidden mb-12\",\n children: [\n {\n label: 'Packages',\n desc: 'Registered'\n },\n {\n label: 'Agent Scores',\n desc: 'Submitted'\n },\n {\n label: 'Authors',\n desc: 'Verified'\n },\n {\n label: 'Reports',\n desc: 'On IPFS'\n }\n ].map((s, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-surface p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-muted mb-1\",\n children: s.desc\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 295,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm font-semibold\",\n children: s.label\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 296,\n columnNumber: 15\n }, this)\n ]\n }, i, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 294,\n columnNumber: 13\n }, this))\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 287,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"inline-flex items-center gap-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: BASESCAN,\n target: \"_blank\",\n rel: \"noopener\",\n className: \"flex items-center gap-2 text-sm font-mono text-muted hover:text-accent transition-colors px-4 py-2 border border-border rounded-lg\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"w-2 h-2 rounded-full bg-green-500\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 308,\n columnNumber: 13\n }, this),\n \"View on BaseScan\"\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 302,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: `${GITHUB_URL}/blob/main/packages/contracts/contracts/OPMRegistry.sol`,\n target: \"_blank\",\n rel: \"noopener\",\n className: \"flex items-center gap-2 text-sm text-muted hover:text-accent transition-colors px-4 py-2 border border-border rounded-lg\",\n children: \"Source Code\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 311,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 301,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 278,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 277,\n columnNumber: 5\n }, this);\n}\nfunction Footer() {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"footer\", {\n className: \"border-t border-border py-12 px-6\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-6xl mx-auto flex flex-col md:flex-row items-center justify-between gap-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: \"/\",\n className: \"flex items-center gap-2.5 hover:opacity-80 transition-opacity\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Logo, {\n size: 18\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 330,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-semibold tracking-tight\",\n children: \"opm\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 331,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs text-muted\",\n children: \"On-chain Package Manager\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 332,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 329,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-6 text-sm text-muted\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: DOCS_URL,\n target: \"_blank\",\n rel: \"noopener\",\n className: \"hover:text-accent transition-colors\",\n children: \"Docs\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 335,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: GITHUB_URL,\n target: \"_blank\",\n rel: \"noopener\",\n className: \"hover:text-accent transition-colors\",\n children: \"GitHub\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 336,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: NPM_URL,\n target: \"_blank\",\n rel: \"noopener\",\n className: \"hover:text-accent transition-colors\",\n children: \"npm\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 337,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: BASESCAN,\n target: \"_blank\",\n rel: \"noopener\",\n className: \"hover:text-accent transition-colors\",\n children: \"Contract\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 338,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 334,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-muted/50\",\n children: \"MIT License\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 340,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 328,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 327,\n columnNumber: 5\n }, this);\n}\nfunction Home() {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Nav, {}, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 349,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Hero, {}, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 350,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Features, {}, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 351,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Architecture, {}, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 352,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(CLISection, {}, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 353,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(ContractSection, {}, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 354,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Footer, {}, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 355,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 348,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9hcHAvcGFnZS50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBRTRDO0FBRTVDLE1BQU1FLFdBQVc7QUFDakIsTUFBTUMsYUFBYTtBQUNuQixNQUFNQyxVQUFVO0FBQ2hCLE1BQU1DLFdBQVc7QUFDakIsTUFBTUMsV0FBVyxDQUFDLHFDQUFxQyxFQUFFRCxVQUFVO0FBRW5FLFNBQVNFLEtBQUssRUFBRUMsT0FBTyxFQUFFLEVBQXFCO0lBQzVDLHFCQUNFLDhEQUFDQztRQUFJQyxTQUFRO1FBQVlDLE1BQUs7UUFBT0MsT0FBTTtRQUE2QkMsT0FBT0w7UUFBTU0sUUFBUU47OzBCQUMzRiw4REFBQ087Z0JBQUtGLE9BQU07Z0JBQUtDLFFBQU87Z0JBQUtFLElBQUc7Z0JBQUlMLE1BQUs7Ozs7OzswQkFDekMsOERBQUNNO2dCQUFLQyxHQUFFO2dCQUFnQ0MsUUFBTztnQkFBVUMsYUFBWTtnQkFBSUMsZUFBYztnQkFBUUMsZ0JBQWU7Ozs7OzswQkFDOUcsOERBQUNDO2dCQUFPQyxJQUFHO2dCQUFLQyxJQUFHO2dCQUFLQyxHQUFFO2dCQUFNZixNQUFLOzs7Ozs7Ozs7Ozs7QUFHM0M7QUFFQSxTQUFTZ0I7SUFDUCxNQUFNLENBQUNDLFVBQVVDLFlBQVksR0FBRzVCLCtDQUFRQSxDQUFDO0lBQ3pDRCxnREFBU0E7eUJBQUM7WUFDUixNQUFNOEI7eUNBQVUsSUFBTUQsWUFBWUUsT0FBT0MsT0FBTyxHQUFHOztZQUNuREQsT0FBT0UsZ0JBQWdCLENBQUMsVUFBVUgsU0FBUztnQkFBRUksU0FBUztZQUFLO1lBQzNEO2lDQUFPLElBQU1ILE9BQU9JLG1CQUFtQixDQUFDLFVBQVVMOztRQUNwRDt3QkFBRyxFQUFFO0lBRUwscUJBQ0UsOERBQUNNO1FBQUlDLFdBQVcsQ0FBQyw0REFBNEQsRUFBRVQsV0FBVyxxREFBcUQsSUFBSTtrQkFDakosNEVBQUNVO1lBQUlELFdBQVU7OzhCQUNiLDhEQUFDRTtvQkFBRUMsTUFBSztvQkFBSUgsV0FBVTs7c0NBQ3BCLDhEQUFDOUI7NEJBQUtDLE1BQU07Ozs7OztzQ0FDWiw4REFBQ2lDOzRCQUFLSixXQUFVO3NDQUF1Qzs7Ozs7O3NDQUN2RCw4REFBQ0k7NEJBQUtKLFdBQVU7c0NBQXlGOzs7Ozs7Ozs7Ozs7OEJBRTNHLDhEQUFDQztvQkFBSUQsV0FBVTs7c0NBQ2IsOERBQUNFOzRCQUFFQyxNQUFLOzRCQUFZSCxXQUFVO3NDQUF5RDs7Ozs7O3NDQUN2Riw4REFBQ0U7NEJBQUVDLE1BQUs7NEJBQWdCSCxXQUFVO3NDQUF5RDs7Ozs7O3NDQUMzRiw4REFBQ0U7NEJBQUVDLE1BQUs7NEJBQU9ILFdBQVU7c0NBQXlEOzs7Ozs7c0NBQ2xGLDhEQUFDRTs0QkFBRUMsTUFBTXRDOzRCQUFVd0MsUUFBTzs0QkFBU0MsS0FBSTs0QkFBV04sV0FBVTtzQ0FBeUQ7Ozs7OztzQ0FDckgsOERBQUNFOzRCQUFFQyxNQUFNckM7NEJBQVl1QyxRQUFPOzRCQUFTQyxLQUFJOzRCQUFXTixXQUFVO3NDQUF5RDs7Ozs7O3NDQUN2SCw4REFBQ0U7NEJBQUVDLE1BQU1sQzs0QkFBVW9DLFFBQU87NEJBQVNDLEtBQUk7NEJBQVdOLFdBQVU7OzhDQUMxRCw4REFBQ0k7b0NBQUtKLFdBQVU7Ozs7OztnQ0FBd0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU9wRjtBQUVBLFNBQVNPO0lBQ1AscUJBQ0UsOERBQUNDO1FBQVFSLFdBQVU7OzBCQUNqQiw4REFBQ0M7Z0JBQUlELFdBQVU7MEJBQ2IsNEVBQUNDO29CQUFJRCxXQUFVOzs7Ozs7Ozs7OzswQkFHakIsOERBQUNDO2dCQUFJRCxXQUFVOztrQ0FDYiw4REFBQ0M7d0JBQUlELFdBQVU7a0NBQ2IsNEVBQUNDOzRCQUFJRCxXQUFVOzs4Q0FDYiw4REFBQ0k7b0NBQUtKLFdBQVU7Ozs7OztnQ0FBMEM7Ozs7Ozs7Ozs7OztrQ0FLOUQsOERBQUNTO3dCQUFHVCxXQUFVO3dCQUFzRlUsT0FBTzs0QkFBRUMsZ0JBQWdCOzRCQUFRQyxtQkFBbUI7d0JBQVk7OzRCQUFHOzBDQUM3Siw4REFBQ0M7Ozs7OzBDQUNULDhEQUFDVDtnQ0FBS0osV0FBVTswQ0FBcUY7Ozs7Ozs7Ozs7OztrQ0FLdkcsOERBQUNjO3dCQUFFZCxXQUFVO3dCQUF5RlUsT0FBTzs0QkFBRUMsZ0JBQWdCOzRCQUFRQyxtQkFBbUI7d0JBQVk7a0NBQUc7Ozs7OztrQ0FJekssOERBQUNYO3dCQUFJRCxXQUFVO3dCQUErRVUsT0FBTzs0QkFBRUMsZ0JBQWdCOzRCQUFRQyxtQkFBbUI7d0JBQVk7OzBDQUM1Siw4REFBQ1g7Z0NBQUlELFdBQVU7O2tEQUNiLDhEQUFDQzt3Q0FBSUQsV0FBVTs7Ozs7O2tEQUNmLDhEQUFDZTt3Q0FBS2YsV0FBVTs7MERBQ2QsOERBQUNJO2dEQUFLSixXQUFVOzBEQUFhOzs7Ozs7MERBQzdCLDhEQUFDSTswREFBSzs7Ozs7OzBEQUNOLDhEQUFDQTtnREFBS0osV0FBVTswREFBZ0I7Ozs7OzswREFDaEMsOERBQUNJO2dEQUFLSixXQUFVOztvREFBcUI7b0RBQW1COzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzBDQUc1RCw4REFBQ0U7Z0NBQUVDLE1BQU10QztnQ0FBVXdDLFFBQU87Z0NBQVNDLEtBQUk7Z0NBQVdOLFdBQVU7MENBQThGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7MEJBTTlKLDhEQUFDQztnQkFBSUQsV0FBVTs7Ozs7Ozs7Ozs7O0FBR3JCO0FBRUEsU0FBU2dCO0lBQ1AsTUFBTUMsV0FBVztRQUNmO1lBQ0VDLE9BQU87WUFDUEMsYUFBYTtZQUNiQyxRQUFRO1lBQ1JDLE1BQU07UUFDUjtRQUNBO1lBQ0VILE9BQU87WUFDUEMsYUFBYTtZQUNiQyxRQUFRO1lBQ1JDLE1BQU07UUFDUjtRQUNBO1lBQ0VILE9BQU87WUFDUEMsYUFBYTtZQUNiQyxRQUFRO1lBQ1JDLE1BQU07UUFDUjtRQUNBO1lBQ0VILE9BQU87WUFDUEMsYUFBYTtZQUNiQyxRQUFRO1lBQ1JDLE1BQU07UUFDUjtRQUNBO1lBQ0VILE9BQU87WUFDUEMsYUFBYTtZQUNiQyxRQUFRO1lBQ1JDLE1BQU07UUFDUjtRQUNBO1lBQ0VILE9BQU87WUFDUEMsYUFBYTtZQUNiQyxRQUFRO1lBQ1JDLE1BQU07UUFDUjtLQUNEO0lBRUQscUJBQ0UsOERBQUNiO1FBQVFjLElBQUc7UUFBV3RCLFdBQVU7a0JBQy9CLDRFQUFDQztZQUFJRCxXQUFVOzs4QkFDYiw4REFBQ0M7b0JBQUlELFdBQVU7O3NDQUNiLDhEQUFDYzs0QkFBRWQsV0FBVTtzQ0FBOEQ7Ozs7OztzQ0FDM0UsOERBQUN1Qjs0QkFBR3ZCLFdBQVU7O2dDQUFnRDs4Q0FDM0MsOERBQUNhOzs7OztnQ0FBSzs7Ozs7Ozs7Ozs7Ozs4QkFJM0IsOERBQUNaO29CQUFJRCxXQUFVOzhCQUNaaUIsU0FBU08sR0FBRyxDQUFDLENBQUNDLEdBQUdDLGtCQUNoQiw4REFBQ3pCOzRCQUFZRCxXQUFVOzs4Q0FDckIsOERBQUNJO29DQUFLSixXQUFVOzhDQUE2RXlCLEVBQUVKLElBQUk7Ozs7Ozs4Q0FDbkcsOERBQUNNO29DQUFHM0IsV0FBVTs4Q0FBOEJ5QixFQUFFUCxLQUFLOzs7Ozs7OENBQ25ELDhEQUFDSjtvQ0FBRWQsV0FBVTs4Q0FBMkN5QixFQUFFTixXQUFXOzs7Ozs7OENBQ3JFLDhEQUFDTDtvQ0FBRWQsV0FBVTs4Q0FBbUR5QixFQUFFTCxNQUFNOzs7Ozs7OzJCQUpoRU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVd0QjtBQUVBLFNBQVNFO0lBQ1AscUJBQ0UsOERBQUNwQjtRQUFRYyxJQUFHO1FBQWV0QixXQUFVO2tCQUNuQyw0RUFBQ0M7WUFBSUQsV0FBVTs7OEJBQ2IsOERBQUNDO29CQUFJRCxXQUFVOztzQ0FDYiw4REFBQ2M7NEJBQUVkLFdBQVU7c0NBQThEOzs7Ozs7c0NBQzNFLDhEQUFDdUI7NEJBQUd2QixXQUFVO3NDQUFnRDs7Ozs7Ozs7Ozs7OzhCQUtoRSw4REFBQ0M7b0JBQUlELFdBQVU7OEJBQ2IsNEVBQUNDO3dCQUFJRCxXQUFVO2tDQUNaOzRCQUNDO2dDQUFFNkIsTUFBTTtnQ0FBTVgsT0FBTztnQ0FBZVksTUFBTTs0QkFBc0Q7NEJBQ2hHO2dDQUFFRCxNQUFNO2dDQUFNWCxPQUFPO2dDQUFvQlksTUFBTTs0QkFBNkQ7NEJBQzVHO2dDQUFFRCxNQUFNO2dDQUFNWCxPQUFPO2dDQUFzQlksTUFBTTs0QkFBa0U7NEJBQ25IO2dDQUFFRCxNQUFNO2dDQUFNWCxPQUFPO2dDQUFxQlksTUFBTTs0QkFBeUQ7NEJBQ3pHO2dDQUFFRCxNQUFNO2dDQUFNWCxPQUFPO2dDQUFrQlksTUFBTTs0QkFBeUQ7eUJBQ3ZHLENBQUNOLEdBQUcsQ0FBQyxDQUFDTyxHQUFHTCxrQkFDUiw4REFBQ3pCO2dDQUFZRCxXQUFVOztrREFDckIsOERBQUNDO3dDQUFJRCxXQUFVOzswREFDYiw4REFBQ0k7Z0RBQUtKLFdBQVU7MERBQTJDK0IsRUFBRUYsSUFBSTs7Ozs7OzBEQUNqRSw4REFBQ0Y7Z0RBQUczQixXQUFVOzBEQUE4QitCLEVBQUViLEtBQUs7Ozs7OzswREFDbkQsOERBQUNKO2dEQUFFZCxXQUFVOzBEQUFzQytCLEVBQUVELElBQUk7Ozs7Ozs7Ozs7OztvQ0FFMURKLElBQUksbUJBQ0gsOERBQUN6Qjt3Q0FBSUQsV0FBVTs7Ozs7OzsrQkFQVDBCOzs7Ozs7Ozs7Ozs7Ozs7OEJBY2hCLDhEQUFDekI7b0JBQUlELFdBQVU7O3NDQUNiLDhEQUFDQzs0QkFBSUQsV0FBVTs7OENBQ2IsOERBQUNjO29DQUFFZCxXQUFVOzhDQUEyQzs7Ozs7OzhDQUN4RCw4REFBQ2M7b0NBQUVkLFdBQVU7OENBQTZCOzs7Ozs7OENBQzFDLDhEQUFDYztvQ0FBRWQsV0FBVTs4Q0FBcUI7Ozs7Ozs7Ozs7OztzQ0FFcEMsOERBQUNDOzRCQUFJRCxXQUFVOzs4Q0FDYiw4REFBQ2M7b0NBQUVkLFdBQVU7OENBQTBDOzs7Ozs7OENBQ3ZELDhEQUFDYztvQ0FBRWQsV0FBVTs4Q0FBNkI7Ozs7Ozs4Q0FDMUMsOERBQUNjO29DQUFFZCxXQUFVOzhDQUFxQjs7Ozs7Ozs7Ozs7O3NDQUVwQyw4REFBQ0M7NEJBQUlELFdBQVU7OzhDQUNiLDhEQUFDYztvQ0FBRWQsV0FBVTs4Q0FBNEM7Ozs7Ozs4Q0FDekQsOERBQUNjO29DQUFFZCxXQUFVOzhDQUE2Qjs7Ozs7OzhDQUMxQyw4REFBQ2M7b0NBQUVkLFdBQVU7OENBQXFCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU05QztBQUVBLFNBQVNnQztJQUNQLE1BQU1DLFdBQVc7UUFDZjtZQUFFQyxLQUFLO1lBQVlKLE1BQU07UUFBMEQ7UUFDbkY7WUFBRUksS0FBSztZQUFxQkosTUFBTTtRQUF1RDtRQUN6RjtZQUFFSSxLQUFLO1lBQWFKLE1BQU07UUFBaUU7UUFDM0Y7WUFBRUksS0FBSztZQUFXSixNQUFNO1FBQThDO1FBQ3RFO1lBQUVJLEtBQUs7WUFBYUosTUFBTTtRQUFrRDtRQUM1RTtZQUFFSSxLQUFLO1lBQWtCSixNQUFNO1FBQWtEO1FBQ2pGO1lBQUVJLEtBQUs7WUFBc0JKLE1BQU07UUFBOEM7UUFDakY7WUFBRUksS0FBSztZQUF1QkosTUFBTTtRQUFxRDtLQUMxRjtJQUVELHFCQUNFLDhEQUFDdEI7UUFBUWMsSUFBRztRQUFNdEIsV0FBVTtrQkFDMUIsNEVBQUNDO1lBQUlELFdBQVU7c0JBQ2IsNEVBQUNDO2dCQUFJRCxXQUFVOztrQ0FDYiw4REFBQ0M7OzBDQUNDLDhEQUFDYTtnQ0FBRWQsV0FBVTswQ0FBOEQ7Ozs7OzswQ0FDM0UsOERBQUN1QjtnQ0FBR3ZCLFdBQVU7O29DQUF5QztrREFDdkMsOERBQUNhOzs7OztvQ0FBSzs7Ozs7OzswQ0FFdEIsOERBQUNDO2dDQUFFZCxXQUFVOzBDQUFrQzs7Ozs7OzBDQUcvQyw4REFBQ0U7Z0NBQUVDLE1BQU10QztnQ0FBVXdDLFFBQU87Z0NBQVNDLEtBQUk7Z0NBQVdOLFdBQVU7MENBQWtJOzs7Ozs7Ozs7Ozs7a0NBS2hNLDhEQUFDQzt3QkFBSUQsV0FBVTs7MENBQ2IsOERBQUNDO2dDQUFJRCxXQUFVOztrREFDYiw4REFBQ0M7d0NBQUlELFdBQVU7Ozs7OztrREFDZiw4REFBQ0M7d0NBQUlELFdBQVU7Ozs7OztrREFDZiw4REFBQ0M7d0NBQUlELFdBQVU7Ozs7OztrREFDZiw4REFBQ0k7d0NBQUtKLFdBQVU7a0RBQW9DOzs7Ozs7Ozs7Ozs7MENBRXRELDhEQUFDQztnQ0FBSUQsV0FBVTswQ0FDWmlDLFNBQVNULEdBQUcsQ0FBQyxDQUFDVyxHQUFHVCxrQkFDaEIsOERBQUN6Qjt3Q0FBWUQsV0FBVTs7MERBQ3JCLDhEQUFDSTtnREFBS0osV0FBVTswREFBc0I7Ozs7OzswREFDdEMsOERBQUNDOztrRUFDQyw4REFBQ0c7d0RBQUtKLFdBQVU7a0VBQWtCbUMsRUFBRUQsR0FBRzs7Ozs7O2tFQUN2Qyw4REFBQzlCO3dEQUFLSixXQUFVO2tFQUFzQ21DLEVBQUVMLElBQUk7Ozs7Ozs7Ozs7Ozs7dUNBSnRESjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFjMUI7QUFFQSxTQUFTVTtJQUNQLHFCQUNFLDhEQUFDNUI7UUFBUVIsV0FBVTtrQkFDakIsNEVBQUNDO1lBQUlELFdBQVU7OzhCQUNiLDhEQUFDYztvQkFBRWQsV0FBVTs4QkFBOEQ7Ozs7Ozs4QkFDM0UsOERBQUN1QjtvQkFBR3ZCLFdBQVU7OEJBQXlDOzs7Ozs7OEJBR3ZELDhEQUFDYztvQkFBRWQsV0FBVTs4QkFBcUM7Ozs7Ozs4QkFJbEQsOERBQUNDO29CQUFJRCxXQUFVOzhCQUNaO3dCQUNDOzRCQUFFcUMsT0FBTzs0QkFBWVAsTUFBTTt3QkFBYTt3QkFDeEM7NEJBQUVPLE9BQU87NEJBQWdCUCxNQUFNO3dCQUFZO3dCQUMzQzs0QkFBRU8sT0FBTzs0QkFBV1AsTUFBTTt3QkFBVzt3QkFDckM7NEJBQUVPLE9BQU87NEJBQVdQLE1BQU07d0JBQVU7cUJBQ3JDLENBQUNOLEdBQUcsQ0FBQyxDQUFDTyxHQUFHTCxrQkFDUiw4REFBQ3pCOzRCQUFZRCxXQUFVOzs4Q0FDckIsOERBQUNjO29DQUFFZCxXQUFVOzhDQUEyQitCLEVBQUVELElBQUk7Ozs7Ozs4Q0FDOUMsOERBQUNoQjtvQ0FBRWQsV0FBVTs4Q0FBeUIrQixFQUFFTSxLQUFLOzs7Ozs7OzJCQUZyQ1g7Ozs7Ozs7Ozs7OEJBT2QsOERBQUN6QjtvQkFBSUQsV0FBVTs7c0NBQ2IsOERBQUNFOzRCQUNDQyxNQUFNbEM7NEJBQ05vQyxRQUFPOzRCQUNQQyxLQUFJOzRCQUNKTixXQUFVOzs4Q0FFViw4REFBQ0k7b0NBQUtKLFdBQVU7Ozs7OztnQ0FBc0M7Ozs7Ozs7c0NBR3hELDhEQUFDRTs0QkFDQ0MsTUFBTSxHQUFHckMsV0FBVyx1REFBdUQsQ0FBQzs0QkFDNUV1QyxRQUFPOzRCQUNQQyxLQUFJOzRCQUNKTixXQUFVO3NDQUNYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU9YO0FBRUEsU0FBU3NDO0lBQ1AscUJBQ0UsOERBQUNDO1FBQU92QyxXQUFVO2tCQUNoQiw0RUFBQ0M7WUFBSUQsV0FBVTs7OEJBQ2IsOERBQUNFO29CQUFFQyxNQUFLO29CQUFJSCxXQUFVOztzQ0FDcEIsOERBQUM5Qjs0QkFBS0MsTUFBTTs7Ozs7O3NDQUNaLDhEQUFDaUM7NEJBQUtKLFdBQVU7c0NBQStCOzs7Ozs7c0NBQy9DLDhEQUFDSTs0QkFBS0osV0FBVTtzQ0FBcUI7Ozs7Ozs7Ozs7Ozs4QkFFdkMsOERBQUNDO29CQUFJRCxXQUFVOztzQ0FDYiw4REFBQ0U7NEJBQUVDLE1BQU10Qzs0QkFBVXdDLFFBQU87NEJBQVNDLEtBQUk7NEJBQVdOLFdBQVU7c0NBQXNDOzs7Ozs7c0NBQ2xHLDhEQUFDRTs0QkFBRUMsTUFBTXJDOzRCQUFZdUMsUUFBTzs0QkFBU0MsS0FBSTs0QkFBV04sV0FBVTtzQ0FBc0M7Ozs7OztzQ0FDcEcsOERBQUNFOzRCQUFFQyxNQUFNcEM7NEJBQVNzQyxRQUFPOzRCQUFTQyxLQUFJOzRCQUFXTixXQUFVO3NDQUFzQzs7Ozs7O3NDQUNqRyw4REFBQ0U7NEJBQUVDLE1BQU1sQzs0QkFBVW9DLFFBQU87NEJBQVNDLEtBQUk7NEJBQVdOLFdBQVU7c0NBQXNDOzs7Ozs7Ozs7Ozs7OEJBRXBHLDhEQUFDYztvQkFBRWQsV0FBVTs4QkFBd0I7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBSTdDO0FBRWUsU0FBU3dDO0lBQ3RCLHFCQUNFLDhEQUFDQzs7MEJBQ0MsOERBQUNuRDs7Ozs7MEJBQ0QsOERBQUNpQjs7Ozs7MEJBQ0QsOERBQUNTOzs7OzswQkFDRCw4REFBQ1k7Ozs7OzBCQUNELDhEQUFDSTs7Ozs7MEJBQ0QsOERBQUNJOzs7OzswQkFDRCw4REFBQ0U7Ozs7Ozs7Ozs7O0FBR1AiLCJzb3VyY2VzIjpbIi9Vc2Vycy9kaGFuYW5qYXlwYWkvQ29kaW5nL1BlcnNvbmFsL29wbS9wYWNrYWdlcy93ZWIvYXBwL3BhZ2UudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50JztcblxuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcblxuY29uc3QgRE9DU19VUkwgPSAnaHR0cDovL2xvY2FsaG9zdDozMDAxJztcbmNvbnN0IEdJVEhVQl9VUkwgPSAnaHR0cHM6Ly9naXRodWIuY29tL2RoYW5hbmpheXBhaTA4L29wbSc7XG5jb25zdCBOUE1fVVJMID0gJ2h0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL29wbXNlYyc7XG5jb25zdCBDT05UUkFDVCA9ICcweDE2Njg0MzkxZmM5YmY0ODI0NkIwOEFmZTE2ZDFhNTdCRmExODFkNDgnO1xuY29uc3QgQkFTRVNDQU4gPSBgaHR0cHM6Ly9zZXBvbGlhLmJhc2VzY2FuLm9yZy9hZGRyZXNzLyR7Q09OVFJBQ1R9YDtcblxuZnVuY3Rpb24gTG9nbyh7IHNpemUgPSAyMCB9OiB7IHNpemU/OiBudW1iZXIgfSkge1xuICByZXR1cm4gKFxuICAgIDxzdmcgdmlld0JveD1cIjAgMCAzMiAzMlwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPXtzaXplfSBoZWlnaHQ9e3NpemV9PlxuICAgICAgPHJlY3Qgd2lkdGg9XCIzMlwiIGhlaWdodD1cIjMyXCIgcng9XCI2XCIgZmlsbD1cIiNlZGVkZWRcIiAvPlxuICAgICAgPHBhdGggZD1cIk04IDEwTDEyIDIyTDE2IDEzTDIwIDIyTDI0IDEwXCIgc3Ryb2tlPVwiIzBhMGEwYVwiIHN0cm9rZVdpZHRoPVwiMlwiIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgPGNpcmNsZSBjeD1cIjE2XCIgY3k9XCIyNFwiIHI9XCIxLjVcIiBmaWxsPVwiIzE2YTM0YVwiIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG5cbmZ1bmN0aW9uIE5hdigpIHtcbiAgY29uc3QgW3Njcm9sbGVkLCBzZXRTY3JvbGxlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlciA9ICgpID0+IHNldFNjcm9sbGVkKHdpbmRvdy5zY3JvbGxZID4gMjApO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVyLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVyKTtcbiAgfSwgW10pO1xuXG4gIHJldHVybiAoXG4gICAgPG5hdiBjbGFzc05hbWU9e2BmaXhlZCB0b3AtMCBsZWZ0LTAgcmlnaHQtMCB6LTQwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTMwMCAke3Njcm9sbGVkID8gJ2JnLWJnLzgwIGJhY2tkcm9wLWJsdXIteGwgYm9yZGVyLWIgYm9yZGVyLWJvcmRlcicgOiAnJ31gfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWF4LXctNnhsIG14LWF1dG8gcHgtNiBoLTE2IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICA8YSBocmVmPVwiL1wiIGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yLjUgaG92ZXI6b3BhY2l0eS04MCB0cmFuc2l0aW9uLW9wYWNpdHlcIj5cbiAgICAgICAgICA8TG9nbyBzaXplPXsyNH0gLz5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWxnIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctdGlnaHRcIj5vcG08L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1bMTBweF0gZm9udC1tb25vIHRleHQtbXV0ZWQgYmctc3VyZmFjZSBweC0xLjUgcHktMC41IHJvdW5kZWQgYm9yZGVyIGJvcmRlci1ib3JkZXJcIj52MC4xLjM8L3NwYW4+XG4gICAgICAgIDwvYT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtOFwiPlxuICAgICAgICAgIDxhIGhyZWY9XCIjZmVhdHVyZXNcIiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtbXV0ZWQgaG92ZXI6dGV4dC1hY2NlbnQgdHJhbnNpdGlvbi1jb2xvcnNcIj5GZWF0dXJlczwvYT5cbiAgICAgICAgICA8YSBocmVmPVwiI2FyY2hpdGVjdHVyZVwiIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1tdXRlZCBob3Zlcjp0ZXh0LWFjY2VudCB0cmFuc2l0aW9uLWNvbG9yc1wiPkFyY2hpdGVjdHVyZTwvYT5cbiAgICAgICAgICA8YSBocmVmPVwiI2NsaVwiIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1tdXRlZCBob3Zlcjp0ZXh0LWFjY2VudCB0cmFuc2l0aW9uLWNvbG9yc1wiPkNMSTwvYT5cbiAgICAgICAgICA8YSBocmVmPXtET0NTX1VSTH0gdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXJcIiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtbXV0ZWQgaG92ZXI6dGV4dC1hY2NlbnQgdHJhbnNpdGlvbi1jb2xvcnNcIj5Eb2NzPC9hPlxuICAgICAgICAgIDxhIGhyZWY9e0dJVEhVQl9VUkx9IHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyXCIgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LW11dGVkIGhvdmVyOnRleHQtYWNjZW50IHRyYW5zaXRpb24tY29sb3JzXCI+R2l0SHViPC9hPlxuICAgICAgICAgIDxhIGhyZWY9e0JBU0VTQ0FOfSB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lclwiIGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1tb25vIHRleHQtbXV0ZWQgaG92ZXI6dGV4dC1hY2NlbnQgdHJhbnNpdGlvbi1jb2xvcnMgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidy0xLjUgaC0xLjUgcm91bmRlZC1mdWxsIGJnLWdyZWVuLTUwMCBhbmltYXRlLXB1bHNlXCIgLz5cbiAgICAgICAgICAgIEJhc2UgU2Vwb2xpYVxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25hdj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gSGVybygpIHtcbiAgcmV0dXJuIChcbiAgICA8c2VjdGlvbiBjbGFzc05hbWU9XCJyZWxhdGl2ZSBtaW4taC1zY3JlZW4gZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ3JpZC1iZyBvdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQtMFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIHRvcC0xLzIgbGVmdC0xLzIgLXRyYW5zbGF0ZS14LTEvMiAtdHJhbnNsYXRlLXktMS8yIHctWzgwMHB4XSBoLVs4MDBweF0gcm91bmRlZC1mdWxsIGJnLWdyYWRpZW50LXJhZGlhbCBmcm9tLXdoaXRlL1swLjAyXSB0by10cmFuc3BhcmVudCBhbmltYXRlLWdsb3ctcHVsc2VcIiAvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmUgei0xMCBtYXgtdy00eGwgbXgtYXV0byBweC02IHRleHQtY2VudGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYW5pbWF0ZS1mYWRlLWluXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgdGV4dC14cyBmb250LW1vbm8gdGV4dC1tdXRlZCBtYi04IHB4LTMgcHktMS41IHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLWJvcmRlciBiZy1zdXJmYWNlLzUwXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ3LTEuNSBoLTEuNSByb3VuZGVkLWZ1bGwgYmctZ3JlZW4tNTAwXCIgLz5cbiAgICAgICAgICAgIFNlY3VyZWQgYnkgbXVsdGktYWdlbnQgY29uc2Vuc3VzIG9uIEJhc2UgTDJcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGgxIGNsYXNzTmFtZT1cInRleHQtNnhsIG1kOnRleHQtOHhsIGZvbnQtYm9sZCB0cmFja2luZy10aWdodGVyIGxlYWRpbmctWzAuOV0gbWItNiBhbmltYXRlLXNsaWRlLXVwXCIgc3R5bGU9e3sgYW5pbWF0aW9uRGVsYXk6ICcwLjFzJywgYW5pbWF0aW9uRmlsbE1vZGU6ICdiYWNrd2FyZHMnIH19PlxuICAgICAgICAgIE9uLWNoYWluPGJyIC8+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC10cmFuc3BhcmVudCBiZy1jbGlwLXRleHQgYmctZ3JhZGllbnQtdG8tciBmcm9tLXdoaXRlIHZpYS13aGl0ZS85MCB0by13aGl0ZS80MFwiPlxuICAgICAgICAgICAgUGFja2FnZSBTZWN1cml0eVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9oMT5cblxuICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LWxnIG1kOnRleHQteGwgdGV4dC1tdXRlZCBtYXgtdy0yeGwgbXgtYXV0byBtYi0xMiBsZWFkaW5nLXJlbGF4ZWQgYW5pbWF0ZS1zbGlkZS11cFwiIHN0eWxlPXt7IGFuaW1hdGlvbkRlbGF5OiAnMC4zcycsIGFuaW1hdGlvbkZpbGxNb2RlOiAnYmFja3dhcmRzJyB9fT5cbiAgICAgICAgICBDcnlwdG9ncmFwaGljIGF0dGVzdGF0aW9uLCBtdWx0aS1tb2RlbCBBSSBhdWRpdGluZywgYW5kIGltbXV0YWJsZSByaXNrIHNjb3JpbmcgZm9yIGV2ZXJ5IG5wbSBwYWNrYWdlLiBBbGwgdmVyaWZpZWQgb24tY2hhaW4uXG4gICAgICAgIDwvcD5cblxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgc206ZmxleC1yb3cgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC00IGFuaW1hdGUtc2xpZGUtdXBcIiBzdHlsZT17eyBhbmltYXRpb25EZWxheTogJzAuNXMnLCBhbmltYXRpb25GaWxsTW9kZTogJ2JhY2t3YXJkcycgfX0+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncm91cCByZWxhdGl2ZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSAtaW5zZXQtMC41IGJnLWdyYWRpZW50LXRvLXIgZnJvbS13aGl0ZS8yMCB0by13aGl0ZS81IHJvdW5kZWQtbGcgb3BhY2l0eS0wIGdyb3VwLWhvdmVyOm9wYWNpdHktMTAwIHRyYW5zaXRpb24tb3BhY2l0eSBibHVyLXNtXCIgLz5cbiAgICAgICAgICAgIDxjb2RlIGNsYXNzTmFtZT1cInJlbGF0aXZlIGZsZXggaXRlbXMtY2VudGVyIGdhcC0zIGJnLXN1cmZhY2UgYm9yZGVyIGJvcmRlci1ib3JkZXIgcm91bmRlZC1sZyBweC01IHB5LTMgZm9udC1tb25vIHRleHQtc20gY3Vyc29yLXBvaW50ZXIgaG92ZXI6Ym9yZGVyLWJvcmRlci1saWdodCB0cmFuc2l0aW9uLWNvbG9yc1wiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LW11dGVkXCI+JDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4+bnBtIGkgLWcgb3Btc2VjPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LW11dGVkLzUwXCI+fDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1tdXRlZCB0ZXh0LXhzXCI+dGhlbjogb3BtIGluc3RhbGwgeyc8cGtnPid9PC9zcGFuPlxuICAgICAgICAgICAgPC9jb2RlPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxhIGhyZWY9e0RPQ1NfVVJMfSB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lclwiIGNsYXNzTmFtZT1cInB4LTUgcHktMyB0ZXh0LXNtIGZvbnQtbWVkaXVtIHRleHQtYmcgYmctYWNjZW50IHJvdW5kZWQtbGcgaG92ZXI6Ymctd2hpdGUgdHJhbnNpdGlvbi1jb2xvcnNcIj5cbiAgICAgICAgICAgIFJlYWQgdGhlIGRvY3NcbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgYm90dG9tLTAgbGVmdC0wIHJpZ2h0LTAgaC0zMiBiZy1ncmFkaWVudC10by10IGZyb20tYmcgdG8tdHJhbnNwYXJlbnRcIiAvPlxuICAgIDwvc2VjdGlvbj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gRmVhdHVyZXMoKSB7XG4gIGNvbnN0IGZlYXR1cmVzID0gW1xuICAgIHtcbiAgICAgIHRpdGxlOiAnTXVsdGktQWdlbnQgQ29uc2Vuc3VzJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnVGhyZWUgaW5kZXBlbmRlbnQgTExNcyAoQ2xhdWRlLCBHZW1pbmksIERlZXBTZWVrKSBhbmFseXplIGV2ZXJ5IHBhY2thZ2UgaW4gcGFyYWxsZWwuIFJpc2sgc2NvcmVzIGFyZSBpbnRlbGxpZ2VuY2Utd2VpZ2h0ZWQgdXNpbmcgbGl2ZSBBcnRpZmljaWFsIEFuYWx5c2lzIGJlbmNobWFya3MuJyxcbiAgICAgIGRldGFpbDogJ05vIHNpbmdsZSBtb2RlbCBmYWlsdXJlIHBvaW50LiBXZWlnaHRlZCBhZ2dyZWdhdGUgc2NvcmluZyB3aXRoIG1vZGVsIGludGVsbGlnZW5jZSBhbmQgY29kaW5nIGluZGljZXMuJyxcbiAgICAgIGljb246ICfirKEnLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdDcnlwdG9ncmFwaGljIEF0dGVzdGF0aW9uJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnRXZlcnkgcGFja2FnZSBpcyBjaGVja3N1bW1lZCwgc2lnbmVkIHdpdGggdGhlIGF1dGhvclxcJ3Mgd2FsbGV0LCBhbmQgcmVnaXN0ZXJlZCBvbiBCYXNlIEwyLiBTaWduYXR1cmVzIGFyZSB2ZXJpZmllZCBhdCBpbnN0YWxsIHRpbWUuJyxcbiAgICAgIGRldGFpbDogJ1NIQS0yNTYgY2hlY2tzdW0sIEVDRFNBIHNpZ25hdHVyZSwgb24tY2hhaW4gcmVnaXN0cmF0aW9uLiBUYW1wZXItZXZpZGVudCBieSBkZXNpZ24uJyxcbiAgICAgIGljb246ICfil4gnLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdaSy1WZXJpZmllZCBBZ2VudCBSZWdpc3RyYXRpb24nLFxuICAgICAgZGVzY3JpcHRpb246ICdQZXJtaXNzaW9ubGVzcyBhZ2VudCBvbmJvYXJkaW5nIHdpdGggemVyby1rbm93bGVkZ2UgcHJvb2Ygb2YgYmVuY2htYXJrIGFjY3VyYWN5LiBBZ2VudHMgbXVzdCBhY2hpZXZlIDEwMCUgb24gbGFiZWxlZCBzZWN1cml0eSBkYXRhc2V0cyB0byBwYXJ0aWNpcGF0ZS4nLFxuICAgICAgZGV0YWlsOiAnSGFzaC1jb21taXRtZW50IHNjaGVtZSB3aXRoIGNpcmNvbSBjaXJjdWl0IHJlZmVyZW5jZS4gQWNjdXJhY3kgcHJvdmVuIHdpdGhvdXQgcmV2ZWFsaW5nIHRlc3QgZGF0YS4nLFxuICAgICAgaWNvbjogJ+KXjicsXG4gICAgfSxcbiAgICB7XG4gICAgICB0aXRsZTogJ09uLWNoYWluIFJpc2sgUmVnaXN0cnknLFxuICAgICAgZGVzY3JpcHRpb246ICdJbW11dGFibGUgcmlzayBzY29yZXMsIGF1dGhvciBwcm9maWxlcywgYW5kIGF1ZGl0IHJlcG9ydHMgc3RvcmVkIG9uIEJhc2UgU2Vwb2xpYS4gRXZlcnkgc2VjdXJpdHkgYXNzZXNzbWVudCBpcyBhIHZlcmlmaWFibGUgcHVibGljIHJlY29yZC4nLFxuICAgICAgZGV0YWlsOiAnT1BNUmVnaXN0cnkuc29sOiBhdXRob3JpemVkQWdlbnRzLCBwYWNrYWdlcywgdmVyc2lvbkRhdGEsIEFnZW50U2NvcmVzLiBGdWxseSBxdWVyeWFibGUuJyxcbiAgICAgIGljb246ICfilqMnLFxuICAgIH0sXG4gICAge1xuICAgICAgdGl0bGU6ICdDVkUgKyBUeXBvc3F1YXQgRGV0ZWN0aW9uJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnT1NWIGRhdGFiYXNlIGludGVncmF0aW9uIGZvciBrbm93biB2dWxuZXJhYmlsaXRpZXMuIExldmVuc2h0ZWluLWRpc3RhbmNlIHR5cG9zcXVhdCBkZXRlY3Rpb24gYWdhaW5zdCB0aGUgdG9wIDEwLDAwMCBucG0gcGFja2FnZXMuJyxcbiAgICAgIGRldGFpbDogJ1JlYWwtdGltZSBDVkUgbG9va3VwcywgYXV0b21hdGVkIGZpeCBzdWdnZXN0aW9ucywgZGVwZW5kZW5jeSBjb25mdXNpb24gZGV0ZWN0aW9uLicsXG4gICAgICBpY29uOiAn4pesJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIHRpdGxlOiAnRHJvcC1pbiBucG0gUmVwbGFjZW1lbnQnLFxuICAgICAgZGVzY3JpcHRpb246ICdGdWxsIENMSSBjb21wYXRpYmlsaXR5OiBpbnN0YWxsLCBhdWRpdCwgY2hlY2ssIHB1c2gsIGZpeC4gRXZlcnkgbnBtIGNvbW1hbmQgd29ya3MgdHJhbnNwYXJlbnRseSB3aXRoIHNlY3VyaXR5IHZlcmlmaWNhdGlvbiBsYXllcmVkIG9uIHRvcC4nLFxuICAgICAgZGV0YWlsOiAnb3BtIGluc3RhbGwgPSBucG0gaW5zdGFsbCArIG9uLWNoYWluIHZlcmlmaWNhdGlvbiArIHNpZ25hdHVyZSBjaGVjayArIENWRSBzY2FuLicsXG4gICAgICBpY29uOiAn4pevJyxcbiAgICB9LFxuICBdO1xuXG4gIHJldHVybiAoXG4gICAgPHNlY3Rpb24gaWQ9XCJmZWF0dXJlc1wiIGNsYXNzTmFtZT1cInB5LTMyIHB4LTZcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWF4LXctNnhsIG14LWF1dG9cIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlciBtYi0yMFwiPlxuICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1tb25vIHRleHQtbXV0ZWQgbWItNCB0cmFja2luZy13aWRlc3QgdXBwZXJjYXNlXCI+U2VjdXJpdHkgUHJpbWl0aXZlczwvcD5cbiAgICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC00eGwgbWQ6dGV4dC01eGwgZm9udC1ib2xkIHRyYWNraW5nLXRpZ2h0XCI+XG4gICAgICAgICAgICBEZWZlbnNlIGluIGRlcHRoLDxiciAvPmJ5IGRlZmF1bHQuXG4gICAgICAgICAgPC9oMj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdyaWQtY29scy0xIG1kOmdyaWQtY29scy0yIGxnOmdyaWQtY29scy0zIGdhcC1weCBiZy1ib3JkZXIgcm91bmRlZC0yeGwgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgICAge2ZlYXR1cmVzLm1hcCgoZiwgaSkgPT4gKFxuICAgICAgICAgICAgPGRpdiBrZXk9e2l9IGNsYXNzTmFtZT1cImJnLXN1cmZhY2UgcC04IGhvdmVyOmJnLXN1cmZhY2UtaG92ZXIgdHJhbnNpdGlvbi1jb2xvcnMgZ3JvdXBcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC0yeGwgbWItNCBibG9jayBvcGFjaXR5LTQwIGdyb3VwLWhvdmVyOm9wYWNpdHktMTAwIHRyYW5zaXRpb24tb3BhY2l0eVwiPntmLmljb259PC9zcGFuPlxuICAgICAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LXNlbWlib2xkIG1iLTNcIj57Zi50aXRsZX08L2gzPlxuICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtbXV0ZWQgbGVhZGluZy1yZWxheGVkIG1iLTRcIj57Zi5kZXNjcmlwdGlvbn08L3A+XG4gICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1tb25vIHRleHQtbXV0ZWQvNjAgbGVhZGluZy1yZWxheGVkXCI+e2YuZGV0YWlsfTwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICkpfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvc2VjdGlvbj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gQXJjaGl0ZWN0dXJlKCkge1xuICByZXR1cm4gKFxuICAgIDxzZWN0aW9uIGlkPVwiYXJjaGl0ZWN0dXJlXCIgY2xhc3NOYW1lPVwicHktMzIgcHgtNiBib3JkZXItdCBib3JkZXItYm9yZGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1heC13LTZ4bCBteC1hdXRvXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1jZW50ZXIgbWItMjBcIj5cbiAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXhzIGZvbnQtbW9ubyB0ZXh0LW11dGVkIG1iLTQgdHJhY2tpbmctd2lkZXN0IHVwcGVyY2FzZVwiPlN5c3RlbSBEZXNpZ248L3A+XG4gICAgICAgICAgPGgyIGNsYXNzTmFtZT1cInRleHQtNHhsIG1kOnRleHQtNXhsIGZvbnQtYm9sZCB0cmFja2luZy10aWdodFwiPlxuICAgICAgICAgICAgVmVyaWZpY2F0aW9uIHBpcGVsaW5lXG4gICAgICAgICAgPC9oMj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMSBtZDpncmlkLWNvbHMtNSBnYXAtNFwiPlxuICAgICAgICAgICAge1tcbiAgICAgICAgICAgICAgeyBzdGVwOiAnMDEnLCB0aXRsZTogJ1BhY2sgJiBTaWduJywgZGVzYzogJ1NIQS0yNTYgY2hlY2tzdW0sIEVDRFNBIHNpZ25hdHVyZSB2aWEgYXV0aG9yIHdhbGxldCcgfSxcbiAgICAgICAgICAgICAgeyBzdGVwOiAnMDInLCB0aXRsZTogJ011bHRpLUFnZW50IFNjYW4nLCBkZXNjOiAnMyBMTE1zIGFuYWx5emUgc291cmNlIGluIHBhcmFsbGVsLCBlYWNoIHN1Ym1pdHMgcmlzayBzY29yZScgfSxcbiAgICAgICAgICAgICAgeyBzdGVwOiAnMDMnLCB0aXRsZTogJ1dlaWdodGVkIENvbnNlbnN1cycsIGRlc2M6ICdJbnRlbGxpZ2VuY2Utd2VpZ2h0ZWQgYWdncmVnYXRlIHZpYSBBcnRpZmljaWFsIEFuYWx5c2lzIGluZGljZXMnIH0sXG4gICAgICAgICAgICAgIHsgc3RlcDogJzA0JywgdGl0bGU6ICdPbi1jaGFpbiBSZWdpc3RyeScsIGRlc2M6ICdQYWNrYWdlLCBzY29yZXMsIHJlcG9ydCBVUkkgcmVnaXN0ZXJlZCBvbiBCYXNlIFNlcG9saWEnIH0sXG4gICAgICAgICAgICAgIHsgc3RlcDogJzA1JywgdGl0bGU6ICdJbnN0YWxsIFZlcmlmeScsIGRlc2M6ICdTaWduYXR1cmUgKyBvbi1jaGFpbiBzY29yZSArIENWRSBjaGVjayBhdCBpbnN0YWxsIHRpbWUnIH0sXG4gICAgICAgICAgICBdLm1hcCgocywgaSkgPT4gKFxuICAgICAgICAgICAgICA8ZGl2IGtleT17aX0gY2xhc3NOYW1lPVwicmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLWdyYWRpZW50LXRvLWIgZnJvbS13aGl0ZS81IHRvLXRyYW5zcGFyZW50IGJvcmRlciBib3JkZXItYm9yZGVyIHJvdW5kZWQteGwgcC02IGgtZnVsbFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC14cyBmb250LW1vbm8gdGV4dC1tdXRlZCBibG9jayBtYi0zXCI+e3Muc3RlcH08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1zbSBmb250LXNlbWlib2xkIG1iLTJcIj57cy50aXRsZX08L2gzPlxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LW11dGVkIGxlYWRpbmctcmVsYXhlZFwiPntzLmRlc2N9PC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIHtpIDwgNCAmJiAoXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImhpZGRlbiBtZDpibG9jayBhYnNvbHV0ZSB0b3AtMS8yIC1yaWdodC0yLjUgdy01IGgtcHggYmctYm9yZGVyXCIgLz5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTIwIGdyaWQgZ3JpZC1jb2xzLTEgbWQ6Z3JpZC1jb2xzLTMgZ2FwLThcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJvcmRlciBib3JkZXItYm9yZGVyIHJvdW5kZWQteGwgcC02IGJnLXN1cmZhY2UvNTBcIj5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1tb25vIHRleHQtZ3JlZW4tNTAwLzgwIG1iLTNcIj5DSEFJTjwvcD5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1zZW1pYm9sZCBtYi0xXCI+QmFzZSBTZXBvbGlhIChMMik8L3A+XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtbXV0ZWRcIj5Mb3ctY29zdCwgaGlnaC10aHJvdWdocHV0IHNldHRsZW1lbnQgZm9yIGFnZW50IHNjb3JlIHN1Ym1pc3Npb25zIGFuZCBwYWNrYWdlIHJlZ2lzdHJhdGlvbnMuPC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYm9yZGVyIGJvcmRlci1ib3JkZXIgcm91bmRlZC14bCBwLTYgYmctc3VyZmFjZS81MFwiPlxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LW1vbm8gdGV4dC1ibHVlLTQwMC84MCBtYi0zXCI+U1RPUkFHRTwvcD5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1zZW1pYm9sZCBtYi0xXCI+RmlsZXZlcnNlIChJUEZTKTwvcD5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC1tdXRlZFwiPkZ1bGwgYXVkaXQgcmVwb3J0cyB1cGxvYWRlZCB0byBkZWNlbnRyYWxpemVkIHN0b3JhZ2UuIFVSSSBzdG9yZWQgb24tY2hhaW4gZm9yIHBlcm1hbmVudCByZWZlcmVuY2UuPC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYm9yZGVyIGJvcmRlci1ib3JkZXIgcm91bmRlZC14bCBwLTYgYmctc3VyZmFjZS81MFwiPlxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LW1vbm8gdGV4dC1wdXJwbGUtNDAwLzgwIG1iLTNcIj5JREVOVElUWTwvcD5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1zZW1pYm9sZCBtYi0xXCI+RU5TIFJlc29sdXRpb248L3A+XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtbXV0ZWRcIj5BdXRob3IgYWRkcmVzc2VzIHJlc29sdmVkIHRvIEVOUyBuYW1lcy4gT24tY2hhaW4gYXV0aG9yIHByb2ZpbGVzIHdpdGggcmVwdXRhdGlvbiBzY29yaW5nLjwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L3NlY3Rpb24+XG4gICk7XG59XG5cbmZ1bmN0aW9uIENMSVNlY3Rpb24oKSB7XG4gIGNvbnN0IGNvbW1hbmRzID0gW1xuICAgIHsgY21kOiAnb3BtIHB1c2gnLCBkZXNjOiAnU2lnbiwgc2NhbiB3aXRoIDMgQUkgYWdlbnRzLCBwdWJsaXNoLCByZWdpc3RlciBvbi1jaGFpbicgfSxcbiAgICB7IGNtZDogJ29wbSBpbnN0YWxsIDxwa2c+JywgZGVzYzogJ0luc3RhbGwgd2l0aCBzaWduYXR1cmUgKyBvbi1jaGFpbiArIENWRSB2ZXJpZmljYXRpb24nIH0sXG4gICAgeyBjbWQ6ICdvcG0gY2hlY2snLCBkZXNjOiAnU2NhbiBhbGwgZGVwczogdHlwb3NxdWF0cywgQ1ZFcywgQUkgYW5hbHlzaXMsIEZpbGV2ZXJzZSByZXBvcnQnIH0sXG4gICAgeyBjbWQ6ICdvcG0gZml4JywgZGVzYzogJ0F1dG8tZml4IHR5cG9zcXVhdHMgYW5kIHZ1bG5lcmFibGUgdmVyc2lvbnMnIH0sXG4gICAgeyBjbWQ6ICdvcG0gYXVkaXQnLCBkZXNjOiAnT24tY2hhaW4gKyBDVkUgYXVkaXQgZm9yIGVudGlyZSBkZXBlbmRlbmN5IHRyZWUnIH0sXG4gICAgeyBjbWQ6ICdvcG0gaW5mbyA8cGtnPicsIGRlc2M6ICdPbi1jaGFpbiBtZXRhZGF0YSwgYWdlbnQgc2NvcmVzLCBzYWZlc3QgdmVyc2lvbicgfSxcbiAgICB7IGNtZDogJ29wbSByZWdpc3Rlci1hZ2VudCcsIGRlc2M6ICdSZWdpc3RlciBhIG5ldyBzZWN1cml0eSBhZ2VudCAoWkstdmVyaWZpZWQpJyB9LFxuICAgIHsgY21kOiAnb3BtIHZpZXcgPG5hbWUuZXRoPicsIGRlc2M6ICdFTlMgYXV0aG9yIHByb2ZpbGUsIHJlcHV0YXRpb24sIHB1Ymxpc2hlZCBwYWNrYWdlcycgfSxcbiAgXTtcblxuICByZXR1cm4gKFxuICAgIDxzZWN0aW9uIGlkPVwiY2xpXCIgY2xhc3NOYW1lPVwicHktMzIgcHgtNiBib3JkZXItdCBib3JkZXItYm9yZGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1heC13LTZ4bCBteC1hdXRvXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMSBsZzpncmlkLWNvbHMtMiBnYXAtMTZcIj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LW1vbm8gdGV4dC1tdXRlZCBtYi00IHRyYWNraW5nLXdpZGVzdCB1cHBlcmNhc2VcIj5DTEkgUmVmZXJlbmNlPC9wPlxuICAgICAgICAgICAgPGgyIGNsYXNzTmFtZT1cInRleHQtNHhsIGZvbnQtYm9sZCB0cmFja2luZy10aWdodCBtYi02XCI+XG4gICAgICAgICAgICAgIEV2ZXJ5IGNvbW1hbmQsPGJyIC8+c2VjdXJpdHktZmlyc3QuXG4gICAgICAgICAgICA8L2gyPlxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1tdXRlZCBsZWFkaW5nLXJlbGF4ZWQgbWItOFwiPlxuICAgICAgICAgICAgICBEcm9wLWluIHJlcGxhY2VtZW50IGZvciBucG0uIEV2ZXJ5IG9wZXJhdGlvbiBnYWlucyBjcnlwdG9ncmFwaGljIHZlcmlmaWNhdGlvbiwgQUktcG93ZXJlZCBhdWRpdGluZywgYW5kIG9uLWNoYWluIGF0dGVzdGF0aW9uIHRyYW5zcGFyZW50bHkuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8YSBocmVmPXtET0NTX1VSTH0gdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXJcIiBjbGFzc05hbWU9XCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgdGV4dC1zbSBmb250LW1lZGl1bSBweC00IHB5LTIgYm9yZGVyIGJvcmRlci1ib3JkZXIgcm91bmRlZC1sZyBob3ZlcjpiZy1zdXJmYWNlIHRyYW5zaXRpb24tY29sb3JzXCI+XG4gICAgICAgICAgICAgIEZ1bGwgQ0xJIGRvY3VtZW50YXRpb25cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGVybWluYWwtZ2xvdyByb3VuZGVkLXhsIGJvcmRlciBib3JkZXItYm9yZGVyIGJnLXN1cmZhY2Ugb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHB4LTQgcHktMyBib3JkZXItYiBib3JkZXItYm9yZGVyXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0zIGgtMyByb3VuZGVkLWZ1bGwgYmctWyNmZjVmNTddXCIgLz5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTMgaC0zIHJvdW5kZWQtZnVsbCBiZy1bI2ZlYmMyZV1cIiAvPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMyBoLTMgcm91bmRlZC1mdWxsIGJnLVsjMjhjODQwXVwiIC8+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cIm1sLTIgdGV4dC14cyB0ZXh0LW11dGVkIGZvbnQtbW9ub1wiPnRlcm1pbmFsPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInAtNSBmb250LW1vbm8gdGV4dC1zbSBzcGFjZS15LTNcIj5cbiAgICAgICAgICAgICAge2NvbW1hbmRzLm1hcCgoYywgaSkgPT4gKFxuICAgICAgICAgICAgICAgIDxkaXYga2V5PXtpfSBjbGFzc05hbWU9XCJmbGV4IGdhcC0zXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LW11dGVkIHNocmluay0wXCI+JDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtZ3JlZW4tNDAwXCI+e2MuY21kfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1tdXRlZC81MCB0ZXh0LXhzIGJsb2NrIG10LTAuNVwiPntjLmRlc2N9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9zZWN0aW9uPlxuICApO1xufVxuXG5mdW5jdGlvbiBDb250cmFjdFNlY3Rpb24oKSB7XG4gIHJldHVybiAoXG4gICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwicHktMzIgcHgtNiBib3JkZXItdCBib3JkZXItYm9yZGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1heC13LTR4bCBteC1hdXRvIHRleHQtY2VudGVyXCI+XG4gICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1tb25vIHRleHQtbXV0ZWQgbWItNCB0cmFja2luZy13aWRlc3QgdXBwZXJjYXNlXCI+U21hcnQgQ29udHJhY3Q8L3A+XG4gICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LTR4bCBmb250LWJvbGQgdHJhY2tpbmctdGlnaHQgbWItNlwiPlxuICAgICAgICAgIEZ1bGx5IG9uLWNoYWluLiBGdWxseSB2ZXJpZmlhYmxlLlxuICAgICAgICA8L2gyPlxuICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LW11dGVkIG1heC13LTJ4bCBteC1hdXRvIG1iLTEyXCI+XG4gICAgICAgICAgT1BNUmVnaXN0cnkuc29sIGRlcGxveWVkIG9uIEJhc2UgU2Vwb2xpYS4gRXZlcnkgcGFja2FnZSByZWdpc3RyYXRpb24sIGFnZW50IHNjb3JlIHN1Ym1pc3Npb24sIGFuZCBhdXRob3IgcHJvZmlsZSBpcyBhbiBpbW11dGFibGUgb24tY2hhaW4gcmVjb3JkLlxuICAgICAgICA8L3A+XG5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdyaWQtY29scy0yIG1kOmdyaWQtY29scy00IGdhcC1weCBiZy1ib3JkZXIgcm91bmRlZC14bCBvdmVyZmxvdy1oaWRkZW4gbWItMTJcIj5cbiAgICAgICAgICB7W1xuICAgICAgICAgICAgeyBsYWJlbDogJ1BhY2thZ2VzJywgZGVzYzogJ1JlZ2lzdGVyZWQnIH0sXG4gICAgICAgICAgICB7IGxhYmVsOiAnQWdlbnQgU2NvcmVzJywgZGVzYzogJ1N1Ym1pdHRlZCcgfSxcbiAgICAgICAgICAgIHsgbGFiZWw6ICdBdXRob3JzJywgZGVzYzogJ1ZlcmlmaWVkJyB9LFxuICAgICAgICAgICAgeyBsYWJlbDogJ1JlcG9ydHMnLCBkZXNjOiAnT24gSVBGUycgfSxcbiAgICAgICAgICBdLm1hcCgocywgaSkgPT4gKFxuICAgICAgICAgICAgPGRpdiBrZXk9e2l9IGNsYXNzTmFtZT1cImJnLXN1cmZhY2UgcC02XCI+XG4gICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC1tdXRlZCBtYi0xXCI+e3MuZGVzY308L3A+XG4gICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1zZW1pYm9sZFwiPntzLmxhYmVsfTwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICkpfVxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICAgICAgICAgIDxhXG4gICAgICAgICAgICBocmVmPXtCQVNFU0NBTn1cbiAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICByZWw9XCJub29wZW5lclwiXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiB0ZXh0LXNtIGZvbnQtbW9ubyB0ZXh0LW11dGVkIGhvdmVyOnRleHQtYWNjZW50IHRyYW5zaXRpb24tY29sb3JzIHB4LTQgcHktMiBib3JkZXIgYm9yZGVyLWJvcmRlciByb3VuZGVkLWxnXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ3LTIgaC0yIHJvdW5kZWQtZnVsbCBiZy1ncmVlbi01MDBcIiAvPlxuICAgICAgICAgICAgVmlldyBvbiBCYXNlU2NhblxuICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8YVxuICAgICAgICAgICAgaHJlZj17YCR7R0lUSFVCX1VSTH0vYmxvYi9tYWluL3BhY2thZ2VzL2NvbnRyYWN0cy9jb250cmFjdHMvT1BNUmVnaXN0cnkuc29sYH1cbiAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICByZWw9XCJub29wZW5lclwiXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiB0ZXh0LXNtIHRleHQtbXV0ZWQgaG92ZXI6dGV4dC1hY2NlbnQgdHJhbnNpdGlvbi1jb2xvcnMgcHgtNCBweS0yIGJvcmRlciBib3JkZXItYm9yZGVyIHJvdW5kZWQtbGdcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIFNvdXJjZSBDb2RlXG4gICAgICAgICAgPC9hPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvc2VjdGlvbj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gRm9vdGVyKCkge1xuICByZXR1cm4gKFxuICAgIDxmb290ZXIgY2xhc3NOYW1lPVwiYm9yZGVyLXQgYm9yZGVyLWJvcmRlciBweS0xMiBweC02XCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1heC13LTZ4bCBteC1hdXRvIGZsZXggZmxleC1jb2wgbWQ6ZmxleC1yb3cgaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtNlwiPlxuICAgICAgICA8YSBocmVmPVwiL1wiIGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yLjUgaG92ZXI6b3BhY2l0eS04MCB0cmFuc2l0aW9uLW9wYWNpdHlcIj5cbiAgICAgICAgICA8TG9nbyBzaXplPXsxOH0gLz5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmb250LXNlbWlib2xkIHRyYWNraW5nLXRpZ2h0XCI+b3BtPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC1tdXRlZFwiPk9uLWNoYWluIFBhY2thZ2UgTWFuYWdlcjwvc3Bhbj5cbiAgICAgICAgPC9hPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC02IHRleHQtc20gdGV4dC1tdXRlZFwiPlxuICAgICAgICAgIDxhIGhyZWY9e0RPQ1NfVVJMfSB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lclwiIGNsYXNzTmFtZT1cImhvdmVyOnRleHQtYWNjZW50IHRyYW5zaXRpb24tY29sb3JzXCI+RG9jczwvYT5cbiAgICAgICAgICA8YSBocmVmPXtHSVRIVUJfVVJMfSB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lclwiIGNsYXNzTmFtZT1cImhvdmVyOnRleHQtYWNjZW50IHRyYW5zaXRpb24tY29sb3JzXCI+R2l0SHViPC9hPlxuICAgICAgICAgIDxhIGhyZWY9e05QTV9VUkx9IHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyXCIgY2xhc3NOYW1lPVwiaG92ZXI6dGV4dC1hY2NlbnQgdHJhbnNpdGlvbi1jb2xvcnNcIj5ucG08L2E+XG4gICAgICAgICAgPGEgaHJlZj17QkFTRVNDQU59IHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyXCIgY2xhc3NOYW1lPVwiaG92ZXI6dGV4dC1hY2NlbnQgdHJhbnNpdGlvbi1jb2xvcnNcIj5Db250cmFjdDwvYT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC1tdXRlZC81MFwiPk1JVCBMaWNlbnNlPC9wPlxuICAgICAgPC9kaXY+XG4gICAgPC9mb290ZXI+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEhvbWUoKSB7XG4gIHJldHVybiAoXG4gICAgPG1haW4+XG4gICAgICA8TmF2IC8+XG4gICAgICA8SGVybyAvPlxuICAgICAgPEZlYXR1cmVzIC8+XG4gICAgICA8QXJjaGl0ZWN0dXJlIC8+XG4gICAgICA8Q0xJU2VjdGlvbiAvPlxuICAgICAgPENvbnRyYWN0U2VjdGlvbiAvPlxuICAgICAgPEZvb3RlciAvPlxuICAgIDwvbWFpbj5cbiAgKTtcbn1cbiJdLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VTdGF0ZSIsIkRPQ1NfVVJMIiwiR0lUSFVCX1VSTCIsIk5QTV9VUkwiLCJDT05UUkFDVCIsIkJBU0VTQ0FOIiwiTG9nbyIsInNpemUiLCJzdmciLCJ2aWV3Qm94IiwiZmlsbCIsInhtbG5zIiwid2lkdGgiLCJoZWlnaHQiLCJyZWN0IiwicngiLCJwYXRoIiwiZCIsInN0cm9rZSIsInN0cm9rZVdpZHRoIiwic3Ryb2tlTGluZWNhcCIsInN0cm9rZUxpbmVqb2luIiwiY2lyY2xlIiwiY3giLCJjeSIsInIiLCJOYXYiLCJzY3JvbGxlZCIsInNldFNjcm9sbGVkIiwiaGFuZGxlciIsIndpbmRvdyIsInNjcm9sbFkiLCJhZGRFdmVudExpc3RlbmVyIiwicGFzc2l2ZSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJuYXYiLCJjbGFzc05hbWUiLCJkaXYiLCJhIiwiaHJlZiIsInNwYW4iLCJ0YXJnZXQiLCJyZWwiLCJIZXJvIiwic2VjdGlvbiIsImgxIiwic3R5bGUiLCJhbmltYXRpb25EZWxheSIsImFuaW1hdGlvbkZpbGxNb2RlIiwiYnIiLCJwIiwiY29kZSIsIkZlYXR1cmVzIiwiZmVhdHVyZXMiLCJ0aXRsZSIsImRlc2NyaXB0aW9uIiwiZGV0YWlsIiwiaWNvbiIsImlkIiwiaDIiLCJtYXAiLCJmIiwiaSIsImgzIiwiQXJjaGl0ZWN0dXJlIiwic3RlcCIsImRlc2MiLCJzIiwiQ0xJU2VjdGlvbiIsImNvbW1hbmRzIiwiY21kIiwiYyIsIkNvbnRyYWN0U2VjdGlvbiIsImxhYmVsIiwiRm9vdGVyIiwiZm9vdGVyIiwiSG9tZSIsIm1haW4iXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./app/page.tsx\n");
97
-
98
- /***/ }),
99
-
100
- /***/ "(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fdhananjaypai%2FCoding%2FPersonal%2Fopm%2Fpackages%2Fweb%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=true!":
101
- /*!******************************************************************************************************************************************************************************************************************************************************!*\
102
- !*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fdhananjaypai%2FCoding%2FPersonal%2Fopm%2Fpackages%2Fweb%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=true! ***!
103
- \******************************************************************************************************************************************************************************************************************************************************/
104
- /***/ (() => {
105
-
106
-
96
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ OPMTerminal)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _barrel_optimize_names_Check_Copy_lucide_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! __barrel_optimize__?names=Check,Copy!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/check.js\");\n/* harmony import */ var _barrel_optimize_names_Check_Copy_lucide_react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! __barrel_optimize__?names=Check,Copy!=!lucide-react */ \"(ssr)/./node_modules/lucide-react/dist/esm/icons/copy.js\");\n/* harmony import */ var next_image__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/image */ \"(ssr)/./node_modules/next/dist/api/image.js\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\n\nconst DOCS_URL = \"https://opm.mintlify.app\" || 0;\nconst GITHUB_URL = \"https://github.com/dhananjaypai08/opm\";\nconst NPM_URL = \"https://www.npmjs.com/package/opmsec\";\nconst CONTRACT = \"0x16684391fc9bf48246B08Afe16d1a57BFa181d48\";\nconst BASESCAN = `https://sepolia.basescan.org/address/${CONTRACT}`;\nfunction OPMTerminal() {\n const [currentCommand, setCurrentCommand] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(0);\n const [showCursor, setShowCursor] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n const [matrixChars, setMatrixChars] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [terminalLines, setTerminalLines] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [currentTyping, setCurrentTyping] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"\");\n const [isExecuting, setIsExecuting] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [copiedStates, setCopiedStates] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({});\n const copyToClipboard = async (text, key)=>{\n try {\n await navigator.clipboard.writeText(text);\n setCopiedStates((prev)=>({\n ...prev,\n [key]: true\n }));\n setTimeout(()=>{\n setCopiedStates((prev)=>({\n ...prev,\n [key]: false\n }));\n }, 2000);\n } catch (err) {\n console.error(\"Failed to copy text: \", err);\n }\n };\n const terminalSequences = [\n {\n command: \"opm install package-name@djpai.eth\",\n outputs: [\n \"🔍 Resolving djpai.eth → 0x3a9f...c4e2\",\n \"📦 package-name@1.2.0 — on-chain score: 12 (LOW)\",\n \"✅ Signature verified · checksum matched\",\n \"🛡️ Installed securely via OPM\"\n ]\n },\n {\n command: \"opm push\",\n outputs: [\n \"📝 Signing with author wallet...\",\n \"🤖 Agent 1 (Claude) scanning... risk: 8\",\n \"🤖 Agent 2 (Gemini) scanning... risk: 11\",\n \"🤖 Agent 3 (DeepSeek) scanning... risk: 6\",\n \"⛓ Registered on Base Sepolia ✓\"\n ]\n },\n {\n command: \"opm register-agent --name sentinel --model gpt-5.4\",\n outputs: [\n \"🧪 Batch benchmark (10 cases, single call)...\",\n \"✅ Accuracy: 10/10 (100%)\",\n \"🔐 ZK proof generated & verified\",\n \"⛓ Agent registered on-chain ✓\"\n ]\n }\n ];\n const heroAsciiText = `\n ██████╗ ██████╗ ███╗ ███╗\n██╔═══██╗██╔══██╗████╗ ████║\n██║ ██║██████╔╝██╔████╔██║\n██║ ██║██╔═══╝ ██║╚██╔╝██║\n╚██████╔╝██║ ██║ ╚═╝ ██║\n ╚═════╝ ╚═╝ ╚═╝ ╚═╝`.trim();\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"OPMTerminal.useEffect\": ()=>{\n const chars = \"OPM01010101ABCDEF█▓▒░▄▀■□▪▫⛓🔐\".split(\"\");\n const newMatrixChars = Array.from({\n length: 100\n }, {\n \"OPMTerminal.useEffect.newMatrixChars\": ()=>chars[Math.floor(Math.random() * chars.length)]\n }[\"OPMTerminal.useEffect.newMatrixChars\"]);\n setMatrixChars(newMatrixChars);\n const interval = setInterval({\n \"OPMTerminal.useEffect.interval\": ()=>{\n setMatrixChars({\n \"OPMTerminal.useEffect.interval\": (prev)=>prev.map({\n \"OPMTerminal.useEffect.interval\": ()=>chars[Math.floor(Math.random() * chars.length)]\n }[\"OPMTerminal.useEffect.interval\"])\n }[\"OPMTerminal.useEffect.interval\"]);\n }\n }[\"OPMTerminal.useEffect.interval\"], 1500);\n return ({\n \"OPMTerminal.useEffect\": ()=>clearInterval(interval)\n })[\"OPMTerminal.useEffect\"];\n }\n }[\"OPMTerminal.useEffect\"], []);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"OPMTerminal.useEffect\": ()=>{\n const interval = setInterval({\n \"OPMTerminal.useEffect.interval\": ()=>{\n setShowCursor({\n \"OPMTerminal.useEffect.interval\": (prev)=>!prev\n }[\"OPMTerminal.useEffect.interval\"]);\n }\n }[\"OPMTerminal.useEffect.interval\"], 500);\n return ({\n \"OPMTerminal.useEffect\": ()=>clearInterval(interval)\n })[\"OPMTerminal.useEffect\"];\n }\n }[\"OPMTerminal.useEffect\"], []);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)({\n \"OPMTerminal.useEffect\": ()=>{\n const sequence = terminalSequences[currentCommand];\n const timeouts = [];\n const runSequence = {\n \"OPMTerminal.useEffect.runSequence\": async ()=>{\n setTerminalLines([]);\n setCurrentTyping(\"\");\n setIsExecuting(false);\n const command = sequence.command;\n for(let i = 0; i <= command.length; i++){\n timeouts.push(setTimeout({\n \"OPMTerminal.useEffect.runSequence\": ()=>{\n setCurrentTyping(command.slice(0, i));\n }\n }[\"OPMTerminal.useEffect.runSequence\"], i * 50));\n }\n timeouts.push(setTimeout({\n \"OPMTerminal.useEffect.runSequence\": ()=>{\n setIsExecuting(true);\n setCurrentTyping(\"\");\n setTerminalLines({\n \"OPMTerminal.useEffect.runSequence\": (prev)=>[\n ...prev,\n `user@dev:~/project$ ${command}`\n ]\n }[\"OPMTerminal.useEffect.runSequence\"]);\n }\n }[\"OPMTerminal.useEffect.runSequence\"], command.length * 50 + 500));\n sequence.outputs.forEach({\n \"OPMTerminal.useEffect.runSequence\": (output, index)=>{\n timeouts.push(setTimeout({\n \"OPMTerminal.useEffect.runSequence\": ()=>{\n setTerminalLines({\n \"OPMTerminal.useEffect.runSequence\": (prev)=>[\n ...prev,\n output\n ]\n }[\"OPMTerminal.useEffect.runSequence\"]);\n }\n }[\"OPMTerminal.useEffect.runSequence\"], command.length * 50 + 1000 + index * 800));\n }\n }[\"OPMTerminal.useEffect.runSequence\"]);\n timeouts.push(setTimeout({\n \"OPMTerminal.useEffect.runSequence\": ()=>{\n setCurrentCommand({\n \"OPMTerminal.useEffect.runSequence\": (prev)=>(prev + 1) % terminalSequences.length\n }[\"OPMTerminal.useEffect.runSequence\"]);\n }\n }[\"OPMTerminal.useEffect.runSequence\"], command.length * 50 + 1000 + sequence.outputs.length * 800 + 2000));\n }\n }[\"OPMTerminal.useEffect.runSequence\"];\n runSequence();\n return ({\n \"OPMTerminal.useEffect\": ()=>{\n timeouts.forEach(clearTimeout);\n }\n })[\"OPMTerminal.useEffect\"];\n }\n }[\"OPMTerminal.useEffect\"], [\n currentCommand\n ]);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"min-h-screen bg-black text-white font-mono overflow-hidden relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n className: \"border-b border-gray-800 bg-gray-950/95 backdrop-blur-sm p-4 relative z-10 sticky top-0\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between max-w-7xl mx-auto\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 bg-red-500 hover:bg-red-400 transition-colors cursor-pointer\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 145,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 bg-yellow-500 hover:bg-yellow-400 transition-colors cursor-pointer\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 146,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 bg-green-500 hover:bg-green-400 transition-colors cursor-pointer\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 147,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 144,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-white font-bold text-lg\",\n children: \"OPM\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 150,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-400 text-sm\",\n children: \"on-chain package manager\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 151,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 149,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 143,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"hidden md:flex items-center gap-8 ml-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: \"#why\",\n className: \"text-gray-400 hover:text-white transition-colors cursor-pointer relative group\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"Why OPM?\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 157,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-0 left-0 w-0 h-0.5 bg-white transition-all duration-300 group-hover:w-full\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 158,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 156,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: \"#features\",\n className: \"text-gray-400 hover:text-white transition-colors cursor-pointer relative group\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"Features\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 161,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-0 left-0 w-0 h-0.5 bg-white transition-all duration-300 group-hover:w-full\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 162,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 160,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: \"#agents\",\n className: \"text-gray-400 hover:text-white transition-colors cursor-pointer relative group\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"AI Agents\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 165,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-0 left-0 w-0 h-0.5 bg-white transition-all duration-300 group-hover:w-full\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 166,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 164,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: \"#cli\",\n className: \"text-gray-400 hover:text-white transition-colors cursor-pointer relative group\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"CLI\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 169,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-0 left-0 w-0 h-0.5 bg-white transition-all duration-300 group-hover:w-full\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 170,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 168,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: DOCS_URL,\n target: \"_blank\",\n rel: \"noopener\",\n className: \"text-gray-400 hover:text-white transition-colors cursor-pointer relative group\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"Docs\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 173,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-0 left-0 w-0 h-0.5 bg-white transition-all duration-300 group-hover:w-full\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 174,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 172,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: BASESCAN,\n target: \"_blank\",\n rel: \"noopener\",\n className: \"text-gray-400 hover:text-white transition-colors cursor-pointer relative group flex items-center gap-1.5\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"w-1.5 h-1.5 rounded-full bg-green-500 animate-pulse\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 177,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"Base Sepolia\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 178,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute bottom-0 left-0 w-0 h-0.5 bg-white transition-all duration-300 group-hover:w-full\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 179,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 176,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 155,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 142,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"hidden sm:flex items-center gap-2 text-gray-500 text-xs\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-2 h-2 bg-green-500 rounded-full animate-pulse\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 186,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"v0.1.3\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 187,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 185,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"group relative cursor-pointer\",\n onClick: ()=>copyToClipboard(\"npm install -g opmsec\", \"nav-install\"),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 border border-gray-600 bg-gray-900/20 transition-all duration-300 group-hover:border-white group-hover:shadow-lg group-hover:shadow-white/20\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 194,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative border border-gray-400 bg-transparent text-white font-medium px-6 py-2 text-sm transition-all duration-300 group-hover:border-white group-hover:bg-gray-900/30 transform translate-x-0.5 translate-y-0.5 group-hover:translate-x-0 group-hover:translate-y-0\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2\",\n children: [\n copiedStates[\"nav-install\"] ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Check_Copy_lucide_react__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"w-4 h-4 text-green-400\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 198,\n columnNumber: 21\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Check_Copy_lucide_react__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n className: \"w-4 h-4 text-gray-400\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 200,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-400\",\n children: \"$\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 202,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"Install\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 203,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 196,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 195,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 190,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 184,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 141,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 140,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"fixed inset-0 opacity-10 pointer-events-none\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-25 gap-1 h-full\",\n children: matrixChars.map((char, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-gray-500 text-xs animate-pulse\",\n children: char\n }, i, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 215,\n columnNumber: 13\n }, this))\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 213,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 212,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n className: \"relative px-6 py-20 lg:px-12\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center mb-16\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-8\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"pre\", {\n className: \"text-white text-[10px] sm:text-sm md:text-xl lg:text-2xl font-bold leading-tight inline-block tracking-wide drop-shadow-[0_0_12px_rgba(255,255,255,0.3)]\",\n children: heroAsciiText\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 227,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 226,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-4xl lg:text-6xl font-bold mb-6 leading-tight\",\n children: [\n \"On-chain\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"br\", {}, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 231,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"bg-gradient-to-r from-white to-gray-400 bg-clip-text text-transparent\",\n children: \"Package Security\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 232,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 230,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-lg text-gray-300 leading-relaxed max-w-3xl mx-auto mb-8\",\n children: \"Cryptographic attestation via ECDSA-signed manifests, multi-model AI auditing through intelligence-weighted LLM consensus, and immutable risk scoring anchored to Base L2. Zero-knowledge agent verification. Tamper-evident by design.\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 235,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col sm:flex-row gap-6 justify-center items-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"group relative cursor-pointer w-full sm:w-auto\",\n onClick: ()=>copyToClipboard(\"npm install -g opmsec\", \"hero-install\"),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 border border-gray-600 bg-gray-900/20 transition-all duration-300 group-hover:border-white group-hover:shadow-lg group-hover:shadow-white/20\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 246,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative border border-white bg-white text-black font-bold px-6 sm:px-10 py-4 text-base sm:text-lg transition-all duration-300 group-hover:bg-gray-100 group-hover:text-black transform translate-x-1 translate-y-1 group-hover:translate-x-0 group-hover:translate-y-0 text-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-center gap-2 sm:gap-3\",\n children: [\n copiedStates[\"hero-install\"] ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Check_Copy_lucide_react__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"w-4 h-4 sm:w-5 sm:h-5 text-green-600\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 250,\n columnNumber: 23\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Check_Copy_lucide_react__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n className: \"w-4 h-4 sm:w-5 sm:h-5 text-gray-600\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 252,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-600 text-sm sm:text-base\",\n children: \"$\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 254,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm sm:text-base\",\n children: \"npm install -g opmsec\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 255,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 248,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 247,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 242,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: DOCS_URL,\n target: \"_blank\",\n rel: \"noopener\",\n className: \"group relative cursor-pointer w-full sm:w-auto\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 border-2 border-dashed border-gray-600 bg-gray-900/20 transition-all duration-300 group-hover:border-white group-hover:shadow-lg group-hover:shadow-white/20\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 261,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative border-2 border-dashed border-gray-400 bg-transparent text-white font-bold px-10 py-4 text-lg transition-all duration-300 group-hover:border-white group-hover:bg-gray-900/30 transform translate-x-1 translate-y-1 group-hover:translate-x-0 group-hover:translate-y-0\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-400\",\n children: \"→\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 264,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"Read the Docs\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 265,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 263,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 262,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 260,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 241,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 225,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-4xl mx-auto\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gray-950 border border-gray-700 shadow-2xl backdrop-blur-sm\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between px-6 py-4 bg-gray-900 border-b border-gray-700\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 bg-red-500 hover:bg-red-400 transition-colors cursor-pointer\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 278,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 bg-yellow-500 hover:bg-yellow-400 transition-colors cursor-pointer\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 279,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 bg-green-500 hover:bg-green-400 transition-colors cursor-pointer\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 280,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 277,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-400 text-sm\",\n children: \"opm-terminal\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 282,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 276,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-2 h-2 bg-green-500 rounded-full animate-pulse\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 285,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-500 text-xs\",\n children: \"LIVE\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 286,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 284,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 275,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-6 min-h-[300px] bg-black\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-2 text-sm\",\n children: [\n terminalLines.map((line, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `${line.startsWith(\"user@dev\") ? \"text-white\" : \"text-gray-300\"} ${line.includes(\"✅\") || line.includes(\"✓\") ? \"text-green-400\" : \"\"}`,\n children: line\n }, index, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 293,\n columnNumber: 21\n }, this)),\n !isExecuting && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-white\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-green-400\",\n children: \"user@dev\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 303,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-500\",\n children: \":\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 304,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-blue-400\",\n children: \"~/project\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 305,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-white\",\n children: \"$ \"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 306,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-white\",\n children: currentTyping\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 307,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: `text-white ${showCursor ? \"opacity-100\" : \"opacity-0\"} transition-opacity`,\n children: \"█\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 308,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 302,\n columnNumber: 21\n }, this),\n isExecuting && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2 text-gray-400\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-1 h-1 bg-gray-400 rounded-full animate-bounce\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 315,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-1 h-1 bg-gray-400 rounded-full animate-bounce\",\n style: {\n animationDelay: \"0.1s\"\n }\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 316,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-1 h-1 bg-gray-400 rounded-full animate-bounce\",\n style: {\n animationDelay: \"0.2s\"\n }\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 317,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 314,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs\",\n children: \"Processing...\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 319,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 313,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 291,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-6 pt-4 border-t border-gray-800 flex justify-between text-xs text-gray-500\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-500\",\n children: \"Commands:\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 326,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-white\",\n children: [\n currentCommand + 1,\n \"/\",\n terminalSequences.length\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 327,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 325,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-500\",\n children: \"Agents:\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 330,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-500\",\n children: \"3 Active\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 331,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 329,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-500\",\n children: \"Chain:\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 334,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-500\",\n children: \"Base Sepolia\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 335,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 333,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 324,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 290,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 274,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 273,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center mt-12 mb-10 max-w-4xl mx-auto\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-3xl lg:text-4xl font-bold mb-4\",\n children: \"Every command, security-first.\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 344,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-lg text-gray-400 max-w-3xl mx-auto\",\n children: \"Drop-in replacement for npm. Every operation gains cryptographic verification, AI-powered auditing, and on-chain attestation transparently.\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 345,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 343,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-3 gap-6 max-w-4xl mx-auto mt-10\",\n children: [\n {\n num: \"01\",\n title: \"Push\",\n desc: \"ECDSA-sign package manifest, dispatch to 3 independent LLM agents for parallel static analysis, aggregate weighted risk scores, register immutable attestation on Base L2\",\n cmd: \"opm push\"\n },\n {\n num: \"02\",\n title: \"Install\",\n desc: \"Resolve ENS identity, verify ECDSA signature against on-chain registry, validate SHA-256 checksum, cross-reference OSV CVE database before extraction\",\n cmd: \"opm install <pkg>\"\n },\n {\n num: \"03\",\n title: \"Check\",\n desc: \"Traverse full dependency DAG, run Levenshtein-distance typosquat detection against top 10k packages, OSV CVE lookup, upload report to Fileverse (IPFS)\",\n cmd: \"opm check\"\n }\n ].map((card)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"group relative h-full\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 bg-gradient-to-br from-gray-800 to-gray-900 transform rotate-1 group-hover:rotate-2 transition-transform duration-300\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 358,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative bg-black border border-gray-700 p-6 h-full flex flex-col justify-between hover:border-white transition-all duration-300 group-hover:shadow-xl group-hover:shadow-white/10\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center flex-1 flex flex-col justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-12 h-12 mx-auto mb-4 bg-gray-900 border border-gray-600 flex items-center justify-center group-hover:border-white transition-colors group-hover:bg-gray-800\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-lg font-mono text-white group-hover:text-gray-100\",\n children: card.num\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 363,\n columnNumber: 25\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 362,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-bold mb-3 text-white group-hover:text-gray-100\",\n children: card.title\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 365,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-400 mb-4 group-hover:text-gray-300 text-sm leading-relaxed\",\n children: card.desc\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 366,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 361,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gray-900 border border-gray-700 p-2.5 font-mono text-xs text-left group-hover:border-gray-500 transition-colors group-hover:bg-gray-800 cursor-pointer flex items-center justify-between\",\n onClick: ()=>copyToClipboard(card.cmd, `${card.num}-cmd`),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-500\",\n children: \"$ \"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 373,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-white group-hover:text-gray-100\",\n children: card.cmd\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 374,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 372,\n columnNumber: 23\n }, this),\n copiedStates[`${card.num}-cmd`] ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Check_Copy_lucide_react__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n className: \"w-3 h-3 text-green-400\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 377,\n columnNumber: 25\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Check_Copy_lucide_react__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n className: \"w-3 h-3 text-gray-400 hover:text-white transition-colors\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 379,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 368,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 360,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 359,\n columnNumber: 17\n }, this)\n ]\n }, card.num, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 357,\n columnNumber: 15\n }, this))\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 351,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 224,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 223,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n className: \"px-6 py-24 lg:px-12 border-t border-gray-800 relative overflow-hidden\",\n id: \"why\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 bg-gradient-to-b from-red-950/10 via-transparent to-transparent pointer-events-none\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 392,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto relative z-10\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center mb-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"inline-flex items-center gap-2 px-4 py-1.5 border border-red-900/60 bg-red-950/30 text-red-400 text-xs font-mono tracking-widest uppercase mb-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"w-1.5 h-1.5 rounded-full bg-red-500 animate-pulse\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 397,\n columnNumber: 15\n }, this),\n \"Active Threat Landscape\"\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 396,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-4xl lg:text-6xl font-bold mb-6 leading-tight\",\n children: [\n \"This is happening\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"br\", {}, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 401,\n columnNumber: 32\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-red-400\",\n children: \"right now.\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 402,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 400,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-lg text-gray-400 max-w-2xl mx-auto\",\n children: \"Supply chain attacks on npm aren't theoretical. Developers are losing money, shipping CVEs, and installing malware — every single week.\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 404,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 395,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 md:grid-cols-4 gap-px bg-gray-800 max-w-4xl mx-auto mb-16\",\n children: [\n {\n num: \"6,847\",\n label: \"Malicious packages\",\n sub: \"removed from npm in 2025\"\n },\n {\n num: \"$15M+\",\n label: \"Developer losses\",\n sub: \"from wallet drainer packages\"\n },\n {\n num: \"23%\",\n label: \"Projects affected\",\n sub: \"by known CVEs in deps\"\n },\n {\n num: \"4 hrs\",\n label: \"Avg time to detect\",\n sub: \"a supply chain attack\"\n }\n ].map((stat, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-black p-6 text-center group hover:bg-gray-950 transition-colors\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-2xl lg:text-3xl font-bold text-white mb-1 group-hover:text-red-400 transition-colors\",\n children: stat.num\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 418,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-gray-300 font-medium\",\n children: stat.label\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 419,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-gray-600 mt-1\",\n children: stat.sub\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 420,\n columnNumber: 17\n }, this)\n ]\n }, i, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 417,\n columnNumber: 15\n }, this))\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 410,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-12 gap-4 max-w-6xl mx-auto\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"md:col-span-7 group relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 bg-red-950/20 transform rotate-[0.5deg] group-hover:rotate-0 transition-transform duration-500\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 429,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative bg-gray-950 border border-gray-800 group-hover:border-red-900/50 transition-all duration-500 overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"px-4 py-2.5 bg-gray-900 border-b border-gray-800 flex items-center justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"w-2 h-2 rounded-full bg-red-500\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 433,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs text-gray-400 font-mono\",\n children: \"cyberpress.org — March 2026\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 434,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 432,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-[10px] text-red-400 font-mono tracking-wider uppercase\",\n children: \"Supply Chain Attack\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 436,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 431,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative aspect-[16/9] overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_image__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n src: \"/phantomraven-npm-attack.png\",\n alt: \"PhantomRaven malware targeting npm supply chain\",\n fill: true,\n className: \"object-cover object-top opacity-90 group-hover:opacity-100 group-hover:scale-[1.02] transition-all duration-700\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 439,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 bg-gradient-to-t from-gray-950 via-transparent to-transparent\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 445,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 438,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-5\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-lg font-bold text-white mb-1\",\n children: \"PhantomRaven Targets npm Supply Chain\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 448,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-gray-400\",\n children: \"Malware campaign targeting developer secrets through typosquatted packages. Thousands of downloads before detection.\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 449,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 447,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 430,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 428,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"md:col-span-5 flex flex-col gap-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"group relative flex-1\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative bg-gray-950 border border-gray-800 group-hover:border-red-900/50 transition-all duration-500 overflow-hidden h-full\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"px-4 py-2.5 bg-gray-900 border-b border-gray-800 flex items-center justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"w-2 h-2 rounded-full bg-red-500\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 461,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs text-gray-400 font-mono\",\n children: \"@imanishbarnwal\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 462,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 460,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-[10px] text-red-400 font-mono tracking-wider uppercase\",\n children: \"Funds Lost\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 464,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 459,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative aspect-[16/10] overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_image__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n src: \"/wallet-drain-exploit.png\",\n alt: \"Developer lost money from silent dev environment exploit\",\n fill: true,\n className: \"object-cover object-top opacity-90 group-hover:opacity-100 group-hover:scale-[1.02] transition-all duration-700\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 467,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 bg-gradient-to-t from-gray-950 via-transparent to-transparent\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 473,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 466,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-gray-300 font-medium\",\n children: \"“I lost a significant amount of money due to a silent, zero-interaction dev environment exploit.”\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 476,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 475,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 458,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 457,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 455,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"md:col-span-4 group relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative bg-gray-950 border border-gray-800 group-hover:border-orange-900/50 transition-all duration-500 overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"px-4 py-2.5 bg-gray-900 border-b border-gray-800 flex items-center justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"w-2 h-2 rounded-full bg-orange-500\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 487,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs text-gray-400 font-mono\",\n children: \"@nextjs — 213K views\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 488,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 486,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-[10px] text-orange-400 font-mono tracking-wider uppercase\",\n children: \"CVE\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 490,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 485,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative aspect-[4/3] overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_image__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n src: \"/nextjs-cve-announcement.png\",\n alt: \"Next.js critical CVE-2025-66478 announcement\",\n fill: true,\n className: \"object-cover object-top opacity-90 group-hover:opacity-100 group-hover:scale-[1.02] transition-all duration-700\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 493,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 bg-gradient-to-t from-gray-950 via-transparent to-transparent\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 499,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 492,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-gray-400\",\n children: \"Critical vulnerability in React Server Components affecting Next.js. 213K+ views.\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 502,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 501,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 484,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 483,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"md:col-span-4 group relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative bg-gray-950 border border-gray-800 group-hover:border-yellow-900/50 transition-all duration-500 overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"px-4 py-2.5 bg-gray-900 border-b border-gray-800 flex items-center justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"w-2 h-2 rounded-full bg-yellow-500\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 511,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs text-gray-400 font-mono\",\n children: \"@trashh_dev\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 512,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 510,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-[10px] text-yellow-400 font-mono tracking-wider uppercase\",\n children: \"React CVE\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 514,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 509,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative aspect-[4/3] overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_image__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n src: \"/react-cve-meme.png\",\n alt: \"Developer reaction to React CVE announcement\",\n fill: true,\n className: \"object-cover object-top opacity-90 group-hover:opacity-100 group-hover:scale-[1.02] transition-all duration-700\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 517,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 bg-gradient-to-t from-gray-950 via-transparent to-transparent\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 523,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 516,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-gray-400\",\n children: \"How developers react to yet another critical CVE in their dependency tree.\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 526,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 525,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 508,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 507,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"md:col-span-4 group relative\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative bg-gray-950 border border-gray-800 group-hover:border-gray-600 transition-all duration-500 overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"px-4 py-2.5 bg-gray-900 border-b border-gray-800 flex items-center justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"w-2 h-2 rounded-full bg-blue-500\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 535,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs text-gray-400 font-mono\",\n children: \"@arsh_goyal\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 536,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 534,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-[10px] text-gray-400 font-mono tracking-wider uppercase\",\n children: \"Reality Check\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 538,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 533,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative aspect-[4/3] overflow-hidden\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_image__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n src: \"/dependency-bottleneck.png\",\n alt: \"Dependency management is the bottleneck\",\n fill: true,\n className: \"object-cover object-top opacity-90 group-hover:opacity-100 group-hover:scale-[1.02] transition-all duration-700\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 541,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 bg-gradient-to-t from-gray-950 via-transparent to-transparent\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 547,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 540,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-4\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-gray-400\",\n children: \"“Code generation isn't the bottleneck anymore. Dependency management is.”\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 550,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 549,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 532,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 531,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 426,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center mt-16\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"inline-flex flex-col items-center gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-lg text-gray-400\",\n children: [\n \"OPM catches these before they reach your \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-white font-mono\",\n children: \"node_modules\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 560,\n columnNumber: 58\n }, this),\n \".\"\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 559,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-3 text-sm font-mono text-gray-500\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-green-400\",\n children: \"$\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 563,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-white\",\n children: \"npm install -g opmsec\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 564,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-600\",\n children: \"&&\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 565,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-white\",\n children: \"opm install\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 566,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 562,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 558,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 557,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 394,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 391,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n className: \"px-6 py-20 lg:px-12 border-t border-gray-800\",\n id: \"features\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center mb-16\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-4xl lg:text-5xl font-bold mb-6\",\n children: \"Security Primitives\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 577,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xl text-gray-400\",\n children: \"Defense in depth, by default.\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 578,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 576,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-4xl mx-auto\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gray-950 border border-gray-800 shadow-2xl\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between px-6 py-4 bg-gray-900 border-b border-gray-700\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 bg-red-500\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 586,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 bg-yellow-500\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 587,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 bg-green-500\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 588,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 585,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-400 text-sm\",\n children: \"opm features --list\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 590,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 584,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-2 h-2 bg-green-500 rounded-full animate-pulse\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 593,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-500 text-xs\",\n children: \"6 ACTIVE\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 594,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 592,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 583,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-6 bg-black\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-400 mb-4\",\n children: \"$ opm features --scan\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 599,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-2 gap-4 font-mono text-sm mb-6\",\n children: [\n {\n name: \"multi-agent-consensus\",\n status: \"✓\",\n desc: \"N-of-M parallel LLM dispatch with intelligence-weighted aggregation via Artificial Analysis benchmarks. No single-model failure point.\"\n },\n {\n name: \"cryptographic-attestation\",\n status: \"✓\",\n desc: \"SHA-256 content-addressable checksums + secp256k1 ECDSA signatures. Tamper-evident supply chain attestation.\"\n },\n {\n name: \"zk-agent-verification\",\n status: \"✓\",\n desc: \"Hash-commitment ZK scheme with circom circuit reference. Accuracy proven without revealing labeled test data.\"\n },\n {\n name: \"on-chain-registry\",\n status: \"✓\",\n desc: \"OPMRegistry.sol: authorizedAgents, packages, versionData, AgentScores mappings. Fully queryable immutable state.\"\n },\n {\n name: \"cve-typosquat-detection\",\n status: \"✓\",\n desc: \"OSV advisory database integration + Levenshtein-distance analysis against top 10k npm packages. Dependency confusion detection.\"\n },\n {\n name: \"drop-in-npm-replacement\",\n status: \"✓\",\n desc: \"Transparent npm CLI interop: install, audit, check, push, fix — each operation layered with cryptographic verification.\"\n }\n ].map((f)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between py-2 px-3 hover:bg-gray-900 cursor-pointer group transition-all duration-200 border border-transparent hover:border-gray-700\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-green-400 group-hover:text-white transition-colors w-4\",\n children: f.status\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 615,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-white group-hover:text-gray-200 transition-colors\",\n children: f.name\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 616,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 614,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"opacity-0 group-hover:opacity-100 transition-opacity text-gray-500 text-xs max-w-[250px] text-right\",\n children: f.desc\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 618,\n columnNumber: 23\n }, this)\n ]\n }, f.name, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 610,\n columnNumber: 21\n }, this))\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 601,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"pt-4 border-t border-gray-800\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-4 text-xs text-gray-500 justify-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-2 h-2 bg-green-500 rounded-full\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 628,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"6 Active\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 629,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 627,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-2 h-2 bg-green-500 rounded-full animate-pulse\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 632,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"Zero config\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 633,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 631,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 626,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 625,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 598,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 582,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 581,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 575,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 574,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n className: \"px-6 py-20 lg:px-12 border-t border-gray-800\",\n id: \"agents\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center mb-16\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-4xl lg:text-5xl font-bold mb-6\",\n children: \"Multi-Agent Consensus\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 647,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xl text-gray-400\",\n children: \"N-of-M heterogeneous LLM ensemble with intelligence-weighted scoring derived from live Artificial Analysis quality and coding indices. Byzantine fault-tolerant by design.\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 648,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 646,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-4xl mx-auto\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gray-950 border border-gray-800 shadow-2xl\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between px-6 py-4 bg-gray-900 border-b border-gray-700\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 bg-red-500\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 656,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 bg-yellow-500\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 657,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 bg-green-500\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 658,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 655,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-400 text-sm\",\n children: \"opm agents --status\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 660,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 654,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-2 h-2 bg-green-500 rounded-full animate-pulse\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 663,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-500 text-xs\",\n children: \"3 AUTHORIZED\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 664,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 662,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 653,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-6 bg-black\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-400 mb-4\",\n children: \"$ opm agents --list\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 669,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-2 font-mono text-sm\",\n children: [\n {\n id: \"1\",\n name: \"claude-opus-4.6\",\n provider: \"anthropic\",\n role: \"Primary scanner\",\n color: \"text-green-400\"\n },\n {\n id: \"2\",\n name: \"gemini-3.1-pro\",\n provider: \"google\",\n role: \"Secondary analysis\",\n color: \"text-green-400\"\n },\n {\n id: \"3\",\n name: \"deepseek-v3.2\",\n provider: \"deepseek\",\n role: \"Tertiary verification\",\n color: \"text-green-400\"\n }\n ].map((agent)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between py-2 px-4 hover:bg-gray-900 cursor-pointer group transition-all duration-200 border border-transparent hover:border-gray-700\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-500 w-6\",\n children: [\n \"[\",\n agent.id,\n \"]\"\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 682,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: `${agent.color} group-hover:text-white transition-colors`,\n children: \"●\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 683,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-white group-hover:text-gray-200 transition-colors\",\n children: agent.name\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 684,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-500 text-xs\",\n children: [\n \"(\",\n agent.provider,\n \")\"\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 685,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 681,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"opacity-0 group-hover:opacity-100 transition-opacity text-gray-500 text-xs\",\n children: agent.role\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 687,\n columnNumber: 23\n }, this)\n ]\n }, agent.id, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 677,\n columnNumber: 21\n }, this))\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 671,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-6 pt-4 border-t border-gray-800\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col md:flex-row justify-between items-start md:items-center gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-sm text-gray-400\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"font-mono text-xs text-gray-500 space-y-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: \"$ opm register-agent --name my-agent --model gpt-5.4\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 698,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: \"$ opm info express # View agent scores\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 699,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 697,\n columnNumber: 23\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 696,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-6 text-xs text-gray-500\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-2 h-2 bg-green-500 rounded-full\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 705,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"3 Active\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 706,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 704,\n columnNumber: 23\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-2 h-2 bg-gray-500 rounded-full animate-pulse\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 709,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"ZK-verified\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 710,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 708,\n columnNumber: 23\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 703,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 695,\n columnNumber: 19\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 694,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 668,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 652,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-6 text-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"inline-flex items-center gap-2 text-gray-400 text-sm\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-green-400\",\n children: \"●\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 720,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"Permissionless registration • 100% benchmark accuracy required • Scores on-chain\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 721,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 719,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 718,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 651,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 645,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 644,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n className: \"px-6 py-16 lg:px-12 border-t border-gray-800\",\n id: \"pipeline\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center mb-12\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-3xl lg:text-4xl font-bold mb-4\",\n children: \"Verification Pipeline\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 732,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-lg text-gray-400 max-w-2xl mx-auto\",\n children: \"Five-stage cryptographic attestation pipeline: from ECDSA signing through multi-agent consensus to on-chain settlement. Every package is verified before extraction to node_modules.\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 733,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 731,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-4xl mx-auto\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-gray-950 border border-gray-800 shadow-xl\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between px-6 py-3 bg-gray-900 border-b border-gray-700\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 bg-red-500\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 743,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 bg-yellow-500\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 744,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-3 h-3 bg-green-500\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 745,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 742,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-gray-400 text-sm\",\n children: \"opm pipeline --visualize\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 747,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 741,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 740,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-6 bg-black\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-5 gap-4 font-mono text-sm\",\n children: [\n {\n step: \"01\",\n title: \"Pack & Sign\",\n desc: \"SHA-256 content-addressable checksum + secp256k1 ECDSA signature via author wallet\"\n },\n {\n step: \"02\",\n title: \"Multi-Agent Scan\",\n desc: \"Parallel dispatch to N heterogeneous LLMs; each submits independent risk vector\"\n },\n {\n step: \"03\",\n title: \"Weighted Consensus\",\n desc: \"Intelligence-weighted aggregate via Artificial Analysis quality + coding indices\"\n },\n {\n step: \"04\",\n title: \"On-chain Registry\",\n desc: \"Package metadata, agent scores, Fileverse report URI settled on Base Sepolia L2\"\n },\n {\n step: \"05\",\n title: \"Install Verify\",\n desc: \"ECDSA signature + on-chain score lookup + OSV CVE cross-reference at extraction time\"\n }\n ].map((s, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative group\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border border-gray-700 p-4 hover:border-white transition-all duration-300 group-hover:bg-gray-900\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs text-gray-500 block mb-2\",\n children: s.step\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 762,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"text-sm font-semibold mb-1 text-white\",\n children: s.title\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 763,\n columnNumber: 25\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-gray-500\",\n children: s.desc\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 764,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 761,\n columnNumber: 23\n }, this),\n i < 4 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"hidden md:block absolute top-1/2 -right-2.5 w-5 h-px bg-gray-700\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 767,\n columnNumber: 25\n }, this)\n ]\n }, i, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 760,\n columnNumber: 21\n }, this))\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 752,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 751,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 739,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 738,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 730,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 729,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"section\", {\n className: \"px-6 py-16 lg:px-12 border-t border-gray-800\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-4xl mx-auto text-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-3xl font-bold mb-4\",\n children: \"Fully on-chain. Fully verifiable.\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 781,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-gray-400 mb-8\",\n children: \"OPMRegistry.sol deployed on Base Sepolia L2. Every package registration, agent score submission, ZK-verified agent authorization, and ENS-resolved author profile is an immutable on-chain record. Fully queryable, fully verifiable.\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 782,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-2 md:grid-cols-4 gap-px bg-gray-800 mb-8\",\n children: [\n {\n label: \"Packages\",\n desc: \"Registered\"\n },\n {\n label: \"Agent Scores\",\n desc: \"Submitted\"\n },\n {\n label: \"Authors\",\n desc: \"Verified\"\n },\n {\n label: \"Reports\",\n desc: \"On IPFS\"\n }\n ].map((s, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-black p-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-gray-500 mb-1\",\n children: s.desc\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 792,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm font-semibold\",\n children: s.label\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 793,\n columnNumber: 17\n }, this)\n ]\n }, i, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 791,\n columnNumber: 15\n }, this))\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 784,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"inline-flex items-center gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: BASESCAN,\n target: \"_blank\",\n rel: \"noopener\",\n className: \"flex items-center gap-2 text-sm font-mono text-gray-400 hover:text-white transition-colors px-4 py-2 border border-gray-700 hover:border-white\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"w-2 h-2 rounded-full bg-green-500\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 805,\n columnNumber: 15\n }, this),\n \"View on BaseScan\"\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 799,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: `${GITHUB_URL}/blob/main/packages/contracts/contracts/OPMRegistry.sol`,\n target: \"_blank\",\n rel: \"noopener\",\n className: \"flex items-center gap-2 text-sm text-gray-400 hover:text-white transition-colors px-4 py-2 border border-gray-700 hover:border-white\",\n children: \"Source Code\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 808,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 798,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 780,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 779,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"footer\", {\n className: \"border-t border-gray-800 px-6 py-12 lg:px-12 bg-gray-950\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col md:flex-row items-center justify-between gap-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2.5\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-bold\",\n children: \"OPM\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 825,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs text-gray-500\",\n children: \"On-chain Package Manager\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 826,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 824,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-6 text-sm text-gray-500\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: DOCS_URL,\n target: \"_blank\",\n rel: \"noopener\",\n className: \"hover:text-white transition-colors\",\n children: \"Docs\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 829,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: GITHUB_URL,\n target: \"_blank\",\n rel: \"noopener\",\n className: \"hover:text-white transition-colors\",\n children: \"GitHub\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 830,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: NPM_URL,\n target: \"_blank\",\n rel: \"noopener\",\n className: \"hover:text-white transition-colors\",\n children: \"npm\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 831,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: BASESCAN,\n target: \"_blank\",\n rel: \"noopener\",\n className: \"hover:text-white transition-colors\",\n children: \"Contract\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 832,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 828,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-gray-700\",\n children: \"MIT License\"\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 834,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 823,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 822,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 821,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/dhananjaypai/Coding/Personal/opm/packages/web/app/page.tsx\",\n lineNumber: 138,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUNhO2dDQUFFYixXQUFVOzBDQUF3Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU1qRCIsInNvdXJjZXMiOlsiL1VzZXJzL2RoYW5hbmpheXBhaS9Db2RpbmcvUGVyc29uYWwvb3BtL3BhY2thZ2VzL3dlYi9hcHAvcGFnZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2UgY2xpZW50XCJcblxuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgeyBDb3B5LCBDaGVjayB9IGZyb20gXCJsdWNpZGUtcmVhY3RcIlxuaW1wb3J0IEltYWdlIGZyb20gXCJuZXh0L2ltYWdlXCJcblxuY29uc3QgRE9DU19VUkwgPSBwcm9jZXNzLmVudi5ORVhUX1BVQkxJQ19ET0NTX1VSTCB8fCBcImh0dHBzOi8vZG9jcy5vcG0uZGV2XCI7XG5jb25zdCBHSVRIVUJfVVJMID0gXCJodHRwczovL2dpdGh1Yi5jb20vZGhhbmFuamF5cGFpMDgvb3BtXCI7XG5jb25zdCBOUE1fVVJMID0gXCJodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9vcG1zZWNcIjtcbmNvbnN0IENPTlRSQUNUID0gXCIweDE2Njg0MzkxZmM5YmY0ODI0NkIwOEFmZTE2ZDFhNTdCRmExODFkNDhcIjtcbmNvbnN0IEJBU0VTQ0FOID0gYGh0dHBzOi8vc2Vwb2xpYS5iYXNlc2Nhbi5vcmcvYWRkcmVzcy8ke0NPTlRSQUNUfWA7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE9QTVRlcm1pbmFsKCkge1xuICBjb25zdCBbY3VycmVudENvbW1hbmQsIHNldEN1cnJlbnRDb21tYW5kXSA9IHVzZVN0YXRlKDApXG4gIGNvbnN0IFtzaG93Q3Vyc29yLCBzZXRTaG93Q3Vyc29yXSA9IHVzZVN0YXRlKHRydWUpXG4gIGNvbnN0IFttYXRyaXhDaGFycywgc2V0TWF0cml4Q2hhcnNdID0gdXNlU3RhdGU8c3RyaW5nW10+KFtdKVxuICBjb25zdCBbdGVybWluYWxMaW5lcywgc2V0VGVybWluYWxMaW5lc10gPSB1c2VTdGF0ZTxzdHJpbmdbXT4oW10pXG4gIGNvbnN0IFtjdXJyZW50VHlwaW5nLCBzZXRDdXJyZW50VHlwaW5nXSA9IHVzZVN0YXRlKFwiXCIpXG4gIGNvbnN0IFtpc0V4ZWN1dGluZywgc2V0SXNFeGVjdXRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtjb3BpZWRTdGF0ZXMsIHNldENvcGllZFN0YXRlc10gPSB1c2VTdGF0ZTx7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfT4oe30pXG5cbiAgY29uc3QgY29weVRvQ2xpcGJvYXJkID0gYXN5bmMgKHRleHQ6IHN0cmluZywga2V5OiBzdHJpbmcpID0+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodGV4dClcbiAgICAgIHNldENvcGllZFN0YXRlcygocHJldikgPT4gKHsgLi4ucHJldiwgW2tleV06IHRydWUgfSkpXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgc2V0Q29waWVkU3RhdGVzKChwcmV2KSA9PiAoeyAuLi5wcmV2LCBba2V5XTogZmFsc2UgfSkpXG4gICAgICB9LCAyMDAwKVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byBjb3B5IHRleHQ6IFwiLCBlcnIpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgdGVybWluYWxTZXF1ZW5jZXMgPSBbXG4gICAge1xuICAgICAgY29tbWFuZDogXCJvcG0gaW5zdGFsbCBwYWNrYWdlLW5hbWVAZGpwYWkuZXRoXCIsXG4gICAgICBvdXRwdXRzOiBbXG4gICAgICAgIFwi8J+UjSBSZXNvbHZpbmcgZGpwYWkuZXRoIOKGkiAweDNhOWYuLi5jNGUyXCIsXG4gICAgICAgIFwi8J+TpiBwYWNrYWdlLW5hbWVAMS4yLjAg4oCUIG9uLWNoYWluIHNjb3JlOiAxMiAoTE9XKVwiLFxuICAgICAgICBcIuKchSBTaWduYXR1cmUgdmVyaWZpZWQgwrcgY2hlY2tzdW0gbWF0Y2hlZFwiLFxuICAgICAgICBcIvCfm6HvuI8gIEluc3RhbGxlZCBzZWN1cmVseSB2aWEgT1BNXCIsXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgY29tbWFuZDogXCJvcG0gcHVzaFwiLFxuICAgICAgb3V0cHV0czogW1xuICAgICAgICBcIvCfk50gU2lnbmluZyB3aXRoIGF1dGhvciB3YWxsZXQuLi5cIixcbiAgICAgICAgXCLwn6SWIEFnZW50IDEgKENsYXVkZSkgc2Nhbm5pbmcuLi4gcmlzazogOFwiLFxuICAgICAgICBcIvCfpJYgQWdlbnQgMiAoR2VtaW5pKSBzY2FubmluZy4uLiByaXNrOiAxMVwiLFxuICAgICAgICBcIvCfpJYgQWdlbnQgMyAoRGVlcFNlZWspIHNjYW5uaW5nLi4uIHJpc2s6IDZcIixcbiAgICAgICAgXCLim5MgIFJlZ2lzdGVyZWQgb24gQmFzZSBTZXBvbGlhIOKck1wiLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGNvbW1hbmQ6IFwib3BtIHJlZ2lzdGVyLWFnZW50IC0tbmFtZSBzZW50aW5lbCAtLW1vZGVsIGdwdC01LjRcIixcbiAgICAgIG91dHB1dHM6IFtcbiAgICAgICAgXCLwn6eqIEJhdGNoIGJlbmNobWFyayAoMTAgY2FzZXMsIHNpbmdsZSBjYWxsKS4uLlwiLFxuICAgICAgICBcIuKchSBBY2N1cmFjeTogMTAvMTAgKDEwMCUpXCIsXG4gICAgICAgIFwi8J+UkCBaSyBwcm9vZiBnZW5lcmF0ZWQgJiB2ZXJpZmllZFwiLFxuICAgICAgICBcIuKbkyAgQWdlbnQgcmVnaXN0ZXJlZCBvbi1jaGFpbiDinJNcIixcbiAgICAgIF0sXG4gICAgfSxcbiAgXVxuXG4gIGNvbnN0IGhlcm9Bc2NpaVRleHQgPSBgXG4g4paI4paI4paI4paI4paI4paI4pWXIOKWiOKWiOKWiOKWiOKWiOKWiOKVlyDilojilojilojilZcgICDilojilojilojilZdcbuKWiOKWiOKVlOKVkOKVkOKVkOKWiOKWiOKVl+KWiOKWiOKVlOKVkOKVkOKWiOKWiOKVl+KWiOKWiOKWiOKWiOKVlyDilojilojilojilojilZFcbuKWiOKWiOKVkSAgIOKWiOKWiOKVkeKWiOKWiOKWiOKWiOKWiOKWiOKVlOKVneKWiOKWiOKVlOKWiOKWiOKWiOKWiOKVlOKWiOKWiOKVkVxu4paI4paI4pWRICAg4paI4paI4pWR4paI4paI4pWU4pWQ4pWQ4pWQ4pWdIOKWiOKWiOKVkeKVmuKWiOKWiOKVlOKVneKWiOKWiOKVkVxu4pWa4paI4paI4paI4paI4paI4paI4pWU4pWd4paI4paI4pWRICAgICDilojilojilZEg4pWa4pWQ4pWdIOKWiOKWiOKVkVxuIOKVmuKVkOKVkOKVkOKVkOKVkOKVnSDilZrilZDilZ0gICAgIOKVmuKVkOKVnSAgICAg4pWa4pWQ4pWdYC50cmltKClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGNoYXJzID0gXCJPUE0wMTAxMDEwMUFCQ0RFRuKWiOKWk+KWkuKWkeKWhOKWgOKWoOKWoeKWquKWq+Kbk/CflJBcIi5zcGxpdChcIlwiKVxuICAgIGNvbnN0IG5ld01hdHJpeENoYXJzID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogMTAwIH0sICgpID0+IGNoYXJzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGNoYXJzLmxlbmd0aCldKVxuICAgIHNldE1hdHJpeENoYXJzKG5ld01hdHJpeENoYXJzKVxuXG4gICAgY29uc3QgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICBzZXRNYXRyaXhDaGFycygocHJldikgPT4gcHJldi5tYXAoKCkgPT4gY2hhcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY2hhcnMubGVuZ3RoKV0pKVxuICAgIH0sIDE1MDApXG5cbiAgICByZXR1cm4gKCkgPT4gY2xlYXJJbnRlcnZhbChpbnRlcnZhbClcbiAgfSwgW10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBpbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgIHNldFNob3dDdXJzb3IoKHByZXYpID0+ICFwcmV2KVxuICAgIH0sIDUwMClcbiAgICByZXR1cm4gKCkgPT4gY2xlYXJJbnRlcnZhbChpbnRlcnZhbClcbiAgfSwgW10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBzZXF1ZW5jZSA9IHRlcm1pbmFsU2VxdWVuY2VzW2N1cnJlbnRDb21tYW5kXVxuICAgIGNvbnN0IHRpbWVvdXRzOiBOb2RlSlMuVGltZW91dFtdID0gW11cblxuICAgIGNvbnN0IHJ1blNlcXVlbmNlID0gYXN5bmMgKCkgPT4ge1xuICAgICAgc2V0VGVybWluYWxMaW5lcyhbXSlcbiAgICAgIHNldEN1cnJlbnRUeXBpbmcoXCJcIilcbiAgICAgIHNldElzRXhlY3V0aW5nKGZhbHNlKVxuXG4gICAgICBjb25zdCBjb21tYW5kID0gc2VxdWVuY2UuY29tbWFuZFxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gY29tbWFuZC5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aW1lb3V0cy5wdXNoKFxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgc2V0Q3VycmVudFR5cGluZyhjb21tYW5kLnNsaWNlKDAsIGkpKVxuICAgICAgICAgIH0sIGkgKiA1MCksXG4gICAgICAgIClcbiAgICAgIH1cblxuICAgICAgdGltZW91dHMucHVzaChcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgc2V0SXNFeGVjdXRpbmcodHJ1ZSlcbiAgICAgICAgICBzZXRDdXJyZW50VHlwaW5nKFwiXCIpXG4gICAgICAgICAgc2V0VGVybWluYWxMaW5lcygocHJldikgPT4gWy4uLnByZXYsIGB1c2VyQGRldjp+L3Byb2plY3QkICR7Y29tbWFuZH1gXSlcbiAgICAgICAgfSwgY29tbWFuZC5sZW5ndGggKiA1MCArIDUwMCksXG4gICAgICApXG5cbiAgICAgIHNlcXVlbmNlLm91dHB1dHMuZm9yRWFjaCgob3V0cHV0LCBpbmRleCkgPT4ge1xuICAgICAgICB0aW1lb3V0cy5wdXNoKFxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgc2V0VGVybWluYWxMaW5lcygocHJldikgPT4gWy4uLnByZXYsIG91dHB1dF0pXG4gICAgICAgICAgfSwgY29tbWFuZC5sZW5ndGggKiA1MCArIDEwMDAgKyBpbmRleCAqIDgwMCksXG4gICAgICAgIClcbiAgICAgIH0pXG5cbiAgICAgIHRpbWVvdXRzLnB1c2goXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHNldEN1cnJlbnRDb21tYW5kKChwcmV2KSA9PiAocHJldiArIDEpICUgdGVybWluYWxTZXF1ZW5jZXMubGVuZ3RoKVxuICAgICAgICB9LCBjb21tYW5kLmxlbmd0aCAqIDUwICsgMTAwMCArIHNlcXVlbmNlLm91dHB1dHMubGVuZ3RoICogODAwICsgMjAwMCksXG4gICAgICApXG4gICAgfVxuXG4gICAgcnVuU2VxdWVuY2UoKVxuICAgIHJldHVybiAoKSA9PiB7IHRpbWVvdXRzLmZvckVhY2goY2xlYXJUaW1lb3V0KSB9XG4gIH0sIFtjdXJyZW50Q29tbWFuZF0pXG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cIm1pbi1oLXNjcmVlbiBiZy1ibGFjayB0ZXh0LXdoaXRlIGZvbnQtbW9ubyBvdmVyZmxvdy1oaWRkZW4gcmVsYXRpdmVcIj5cbiAgICAgIHsvKiBOYXYgKi99XG4gICAgICA8bmF2IGNsYXNzTmFtZT1cImJvcmRlci1iIGJvcmRlci1ncmF5LTgwMCBiZy1ncmF5LTk1MC85NSBiYWNrZHJvcC1ibHVyLXNtIHAtNCByZWxhdGl2ZSB6LTEwIHN0aWNreSB0b3AtMFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBtYXgtdy03eGwgbXgtYXV0b1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTZcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTNcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTMgaC0zIGJnLXJlZC01MDAgaG92ZXI6YmctcmVkLTQwMCB0cmFuc2l0aW9uLWNvbG9ycyBjdXJzb3ItcG9pbnRlclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0zIGgtMyBiZy15ZWxsb3ctNTAwIGhvdmVyOmJnLXllbGxvdy00MDAgdHJhbnNpdGlvbi1jb2xvcnMgY3Vyc29yLXBvaW50ZXJcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMyBoLTMgYmctZ3JlZW4tNTAwIGhvdmVyOmJnLWdyZWVuLTQwMCB0cmFuc2l0aW9uLWNvbG9ycyBjdXJzb3ItcG9pbnRlclwiPjwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtd2hpdGUgZm9udC1ib2xkIHRleHQtbGdcIj5PUE08L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1ncmF5LTQwMCB0ZXh0LXNtXCI+b24tY2hhaW4gcGFja2FnZSBtYW5hZ2VyPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImhpZGRlbiBtZDpmbGV4IGl0ZW1zLWNlbnRlciBnYXAtOCBtbC04XCI+XG4gICAgICAgICAgICAgIDxhIGhyZWY9XCIjd2h5XCIgY2xhc3NOYW1lPVwidGV4dC1ncmF5LTQwMCBob3Zlcjp0ZXh0LXdoaXRlIHRyYW5zaXRpb24tY29sb3JzIGN1cnNvci1wb2ludGVyIHJlbGF0aXZlIGdyb3VwXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+V2h5IE9QTT88L3NwYW4+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBib3R0b20tMCBsZWZ0LTAgdy0wIGgtMC41IGJnLXdoaXRlIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTMwMCBncm91cC1ob3Zlcjp3LWZ1bGxcIj48L2Rpdj5cbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICA8YSBocmVmPVwiI2ZlYXR1cmVzXCIgY2xhc3NOYW1lPVwidGV4dC1ncmF5LTQwMCBob3Zlcjp0ZXh0LXdoaXRlIHRyYW5zaXRpb24tY29sb3JzIGN1cnNvci1wb2ludGVyIHJlbGF0aXZlIGdyb3VwXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+RmVhdHVyZXM8L3NwYW4+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBib3R0b20tMCBsZWZ0LTAgdy0wIGgtMC41IGJnLXdoaXRlIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTMwMCBncm91cC1ob3Zlcjp3LWZ1bGxcIj48L2Rpdj5cbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICA8YSBocmVmPVwiI2FnZW50c1wiIGNsYXNzTmFtZT1cInRleHQtZ3JheS00MDAgaG92ZXI6dGV4dC13aGl0ZSB0cmFuc2l0aW9uLWNvbG9ycyBjdXJzb3ItcG9pbnRlciByZWxhdGl2ZSBncm91cFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPkFJIEFnZW50czwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGJvdHRvbS0wIGxlZnQtMCB3LTAgaC0wLjUgYmctd2hpdGUgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMzAwIGdyb3VwLWhvdmVyOnctZnVsbFwiPjwvZGl2PlxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgIDxhIGhyZWY9XCIjY2xpXCIgY2xhc3NOYW1lPVwidGV4dC1ncmF5LTQwMCBob3Zlcjp0ZXh0LXdoaXRlIHRyYW5zaXRpb24tY29sb3JzIGN1cnNvci1wb2ludGVyIHJlbGF0aXZlIGdyb3VwXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+Q0xJPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgYm90dG9tLTAgbGVmdC0wIHctMCBoLTAuNSBiZy13aGl0ZSB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0zMDAgZ3JvdXAtaG92ZXI6dy1mdWxsXCI+PC9kaXY+XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgPGEgaHJlZj17RE9DU19VUkx9IHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyXCIgY2xhc3NOYW1lPVwidGV4dC1ncmF5LTQwMCBob3Zlcjp0ZXh0LXdoaXRlIHRyYW5zaXRpb24tY29sb3JzIGN1cnNvci1wb2ludGVyIHJlbGF0aXZlIGdyb3VwXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+RG9jczwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGJvdHRvbS0wIGxlZnQtMCB3LTAgaC0wLjUgYmctd2hpdGUgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMzAwIGdyb3VwLWhvdmVyOnctZnVsbFwiPjwvZGl2PlxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgIDxhIGhyZWY9e0JBU0VTQ0FOfSB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lclwiIGNsYXNzTmFtZT1cInRleHQtZ3JheS00MDAgaG92ZXI6dGV4dC13aGl0ZSB0cmFuc2l0aW9uLWNvbG9ycyBjdXJzb3ItcG9pbnRlciByZWxhdGl2ZSBncm91cCBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidy0xLjUgaC0xLjUgcm91bmRlZC1mdWxsIGJnLWdyZWVuLTUwMCBhbmltYXRlLXB1bHNlXCIgLz5cbiAgICAgICAgICAgICAgICA8c3Bhbj5CYXNlIFNlcG9saWE8L3NwYW4+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBib3R0b20tMCBsZWZ0LTAgdy0wIGgtMC41IGJnLXdoaXRlIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTMwMCBncm91cC1ob3Zlcjp3LWZ1bGxcIj48L2Rpdj5cbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC00XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImhpZGRlbiBzbTpmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiB0ZXh0LWdyYXktNTAwIHRleHQteHNcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTIgaC0yIGJnLWdyZWVuLTUwMCByb3VuZGVkLWZ1bGwgYW5pbWF0ZS1wdWxzZVwiPjwvZGl2PlxuICAgICAgICAgICAgICA8c3Bhbj52MC4xLjM8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJncm91cCByZWxhdGl2ZSBjdXJzb3ItcG9pbnRlclwiXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGNvcHlUb0NsaXBib2FyZChcIm5wbSBpbnN0YWxsIC1nIG9wbXNlY1wiLCBcIm5hdi1pbnN0YWxsXCIpfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LTAgYm9yZGVyIGJvcmRlci1ncmF5LTYwMCBiZy1ncmF5LTkwMC8yMCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0zMDAgZ3JvdXAtaG92ZXI6Ym9yZGVyLXdoaXRlIGdyb3VwLWhvdmVyOnNoYWRvdy1sZyBncm91cC1ob3ZlcjpzaGFkb3ctd2hpdGUvMjBcIj48L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSBib3JkZXIgYm9yZGVyLWdyYXktNDAwIGJnLXRyYW5zcGFyZW50IHRleHQtd2hpdGUgZm9udC1tZWRpdW0gcHgtNiBweS0yIHRleHQtc20gdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMzAwIGdyb3VwLWhvdmVyOmJvcmRlci13aGl0ZSBncm91cC1ob3ZlcjpiZy1ncmF5LTkwMC8zMCB0cmFuc2Zvcm0gdHJhbnNsYXRlLXgtMC41IHRyYW5zbGF0ZS15LTAuNSBncm91cC1ob3Zlcjp0cmFuc2xhdGUteC0wIGdyb3VwLWhvdmVyOnRyYW5zbGF0ZS15LTBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICB7Y29waWVkU3RhdGVzW1wibmF2LWluc3RhbGxcIl0gPyAoXG4gICAgICAgICAgICAgICAgICAgIDxDaGVjayBjbGFzc05hbWU9XCJ3LTQgaC00IHRleHQtZ3JlZW4tNDAwXCIgLz5cbiAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgIDxDb3B5IGNsYXNzTmFtZT1cInctNCBoLTQgdGV4dC1ncmF5LTQwMFwiIC8+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1ncmF5LTQwMFwiPiQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj5JbnN0YWxsPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmF2PlxuXG4gICAgICB7LyogTWF0cml4IGJhY2tncm91bmQgKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZpeGVkIGluc2V0LTAgb3BhY2l0eS0xMCBwb2ludGVyLWV2ZW50cy1ub25lXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMjUgZ2FwLTEgaC1mdWxsXCI+XG4gICAgICAgICAge21hdHJpeENoYXJzLm1hcCgoY2hhciwgaSkgPT4gKFxuICAgICAgICAgICAgPGRpdiBrZXk9e2l9IGNsYXNzTmFtZT1cInRleHQtZ3JheS01MDAgdGV4dC14cyBhbmltYXRlLXB1bHNlXCI+XG4gICAgICAgICAgICAgIHtjaGFyfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsvKiBIZXJvICovfVxuICAgICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwicmVsYXRpdmUgcHgtNiBweS0yMCBsZzpweC0xMlwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1heC13LTd4bCBteC1hdXRvXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlciBtYi0xNlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYi04XCI+XG4gICAgICAgICAgICAgIDxwcmUgY2xhc3NOYW1lPVwidGV4dC13aGl0ZSB0ZXh0LVsxMHB4XSBzbTp0ZXh0LXNtIG1kOnRleHQteGwgbGc6dGV4dC0yeGwgZm9udC1ib2xkIGxlYWRpbmctdGlnaHQgaW5saW5lLWJsb2NrIHRyYWNraW5nLXdpZGUgZHJvcC1zaGFkb3ctWzBfMF8xMnB4X3JnYmEoMjU1LDI1NSwyNTUsMC4zKV1cIj57aGVyb0FzY2lpVGV4dH08L3ByZT5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8aDEgY2xhc3NOYW1lPVwidGV4dC00eGwgbGc6dGV4dC02eGwgZm9udC1ib2xkIG1iLTYgbGVhZGluZy10aWdodFwiPlxuICAgICAgICAgICAgICBPbi1jaGFpbjxiciAvPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJiZy1ncmFkaWVudC10by1yIGZyb20td2hpdGUgdG8tZ3JheS00MDAgYmctY2xpcC10ZXh0IHRleHQtdHJhbnNwYXJlbnRcIj5QYWNrYWdlIFNlY3VyaXR5PC9zcGFuPlxuICAgICAgICAgICAgPC9oMT5cblxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1sZyB0ZXh0LWdyYXktMzAwIGxlYWRpbmctcmVsYXhlZCBtYXgtdy0zeGwgbXgtYXV0byBtYi04XCI+XG4gICAgICAgICAgICAgIENyeXB0b2dyYXBoaWMgYXR0ZXN0YXRpb24gdmlhIEVDRFNBLXNpZ25lZCBtYW5pZmVzdHMsIG11bHRpLW1vZGVsIEFJIGF1ZGl0aW5nIHRocm91Z2hcbiAgICAgICAgICAgICAgaW50ZWxsaWdlbmNlLXdlaWdodGVkIExMTSBjb25zZW5zdXMsIGFuZCBpbW11dGFibGUgcmlzayBzY29yaW5nIGFuY2hvcmVkIHRvIEJhc2UgTDIuXG4gICAgICAgICAgICAgIFplcm8ta25vd2xlZGdlIGFnZW50IHZlcmlmaWNhdGlvbi4gVGFtcGVyLWV2aWRlbnQgYnkgZGVzaWduLlxuICAgICAgICAgICAgPC9wPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgc206ZmxleC1yb3cgZ2FwLTYganVzdGlmeS1jZW50ZXIgaXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJncm91cCByZWxhdGl2ZSBjdXJzb3ItcG9pbnRlciB3LWZ1bGwgc206dy1hdXRvXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBjb3B5VG9DbGlwYm9hcmQoXCJucG0gaW5zdGFsbCAtZyBvcG1zZWNcIiwgXCJoZXJvLWluc3RhbGxcIil9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LTAgYm9yZGVyIGJvcmRlci1ncmF5LTYwMCBiZy1ncmF5LTkwMC8yMCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0zMDAgZ3JvdXAtaG92ZXI6Ym9yZGVyLXdoaXRlIGdyb3VwLWhvdmVyOnNoYWRvdy1sZyBncm91cC1ob3ZlcjpzaGFkb3ctd2hpdGUvMjBcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIGJvcmRlciBib3JkZXItd2hpdGUgYmctd2hpdGUgdGV4dC1ibGFjayBmb250LWJvbGQgcHgtNiBzbTpweC0xMCBweS00IHRleHQtYmFzZSBzbTp0ZXh0LWxnIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTMwMCBncm91cC1ob3ZlcjpiZy1ncmF5LTEwMCBncm91cC1ob3Zlcjp0ZXh0LWJsYWNrIHRyYW5zZm9ybSB0cmFuc2xhdGUteC0xIHRyYW5zbGF0ZS15LTEgZ3JvdXAtaG92ZXI6dHJhbnNsYXRlLXgtMCBncm91cC1ob3Zlcjp0cmFuc2xhdGUteS0wIHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC0yIHNtOmdhcC0zXCI+XG4gICAgICAgICAgICAgICAgICAgIHtjb3BpZWRTdGF0ZXNbXCJoZXJvLWluc3RhbGxcIl0gPyAoXG4gICAgICAgICAgICAgICAgICAgICAgPENoZWNrIGNsYXNzTmFtZT1cInctNCBoLTQgc206dy01IHNtOmgtNSB0ZXh0LWdyZWVuLTYwMFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgPENvcHkgY2xhc3NOYW1lPVwidy00IGgtNCBzbTp3LTUgc206aC01IHRleHQtZ3JheS02MDBcIiAvPlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNjAwIHRleHQtc20gc206dGV4dC1iYXNlXCI+JDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1zbSBzbTp0ZXh0LWJhc2VcIj5ucG0gaW5zdGFsbCAtZyBvcG1zZWM8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPGEgaHJlZj17RE9DU19VUkx9IHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyXCIgY2xhc3NOYW1lPVwiZ3JvdXAgcmVsYXRpdmUgY3Vyc29yLXBvaW50ZXIgdy1mdWxsIHNtOnctYXV0b1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQtMCBib3JkZXItMiBib3JkZXItZGFzaGVkIGJvcmRlci1ncmF5LTYwMCBiZy1ncmF5LTkwMC8yMCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0zMDAgZ3JvdXAtaG92ZXI6Ym9yZGVyLXdoaXRlIGdyb3VwLWhvdmVyOnNoYWRvdy1sZyBncm91cC1ob3ZlcjpzaGFkb3ctd2hpdGUvMjBcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIGJvcmRlci0yIGJvcmRlci1kYXNoZWQgYm9yZGVyLWdyYXktNDAwIGJnLXRyYW5zcGFyZW50IHRleHQtd2hpdGUgZm9udC1ib2xkIHB4LTEwIHB5LTQgdGV4dC1sZyB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0zMDAgZ3JvdXAtaG92ZXI6Ym9yZGVyLXdoaXRlIGdyb3VwLWhvdmVyOmJnLWdyYXktOTAwLzMwIHRyYW5zZm9ybSB0cmFuc2xhdGUteC0xIHRyYW5zbGF0ZS15LTEgZ3JvdXAtaG92ZXI6dHJhbnNsYXRlLXgtMCBncm91cC1ob3Zlcjp0cmFuc2xhdGUteS0wXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtZ3JheS00MDBcIj7ihpI8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlJlYWQgdGhlIERvY3M8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICB7LyogTGl2ZSB0ZXJtaW5hbCAqL31cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1heC13LTR4bCBteC1hdXRvXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLWdyYXktOTUwIGJvcmRlciBib3JkZXItZ3JheS03MDAgc2hhZG93LTJ4bCBiYWNrZHJvcC1ibHVyLXNtXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHB4LTYgcHktNCBiZy1ncmF5LTkwMCBib3JkZXItYiBib3JkZXItZ3JheS03MDBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0zXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTMgaC0zIGJnLXJlZC01MDAgaG92ZXI6YmctcmVkLTQwMCB0cmFuc2l0aW9uLWNvbG9ycyBjdXJzb3ItcG9pbnRlclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMyBoLTMgYmcteWVsbG93LTUwMCBob3ZlcjpiZy15ZWxsb3ctNDAwIHRyYW5zaXRpb24tY29sb3JzIGN1cnNvci1wb2ludGVyXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0zIGgtMyBiZy1ncmVlbi01MDAgaG92ZXI6YmctZ3JlZW4tNDAwIHRyYW5zaXRpb24tY29sb3JzIGN1cnNvci1wb2ludGVyXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtZ3JheS00MDAgdGV4dC1zbVwiPm9wbS10ZXJtaW5hbDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMiBoLTIgYmctZ3JlZW4tNTAwIHJvdW5kZWQtZnVsbCBhbmltYXRlLXB1bHNlXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNTAwIHRleHQteHNcIj5MSVZFPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInAtNiBtaW4taC1bMzAwcHhdIGJnLWJsYWNrXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTIgdGV4dC1zbVwiPlxuICAgICAgICAgICAgICAgICAge3Rlcm1pbmFsTGluZXMubWFwKChsaW5lLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake2xpbmUuc3RhcnRzV2l0aChcInVzZXJAZGV2XCIpID8gXCJ0ZXh0LXdoaXRlXCIgOiBcInRleHQtZ3JheS0zMDBcIn0gJHtsaW5lLmluY2x1ZGVzKFwi4pyFXCIpIHx8IGxpbmUuaW5jbHVkZXMoXCLinJNcIikgPyBcInRleHQtZ3JlZW4tNDAwXCIgOiBcIlwifWB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7bGluZX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICApKX1cblxuICAgICAgICAgICAgICAgICAgeyFpc0V4ZWN1dGluZyAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC13aGl0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtZ3JlZW4tNDAwXCI+dXNlckBkZXY8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1ncmF5LTUwMFwiPjo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1ibHVlLTQwMFwiPn4vcHJvamVjdDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXdoaXRlXCI+JCA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC13aGl0ZVwiPntjdXJyZW50VHlwaW5nfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2B0ZXh0LXdoaXRlICR7c2hvd0N1cnNvciA/IFwib3BhY2l0eS0xMDBcIiA6IFwib3BhY2l0eS0wXCJ9IHRyYW5zaXRpb24tb3BhY2l0eWB9PuKWiDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgICAgICB7aXNFeGVjdXRpbmcgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHRleHQtZ3JheS00MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZ2FwLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0xIGgtMSBiZy1ncmF5LTQwMCByb3VuZGVkLWZ1bGwgYW5pbWF0ZS1ib3VuY2VcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0xIGgtMSBiZy1ncmF5LTQwMCByb3VuZGVkLWZ1bGwgYW5pbWF0ZS1ib3VuY2VcIiBzdHlsZT17eyBhbmltYXRpb25EZWxheTogXCIwLjFzXCIgfX0+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMSBoLTEgYmctZ3JheS00MDAgcm91bmRlZC1mdWxsIGFuaW1hdGUtYm91bmNlXCIgc3R5bGU9e3sgYW5pbWF0aW9uRGVsYXk6IFwiMC4yc1wiIH19PjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQteHNcIj5Qcm9jZXNzaW5nLi4uPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTYgcHQtNCBib3JkZXItdCBib3JkZXItZ3JheS04MDAgZmxleCBqdXN0aWZ5LWJldHdlZW4gdGV4dC14cyB0ZXh0LWdyYXktNTAwXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC00XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtZ3JheS01MDBcIj5Db21tYW5kczo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtd2hpdGVcIj57Y3VycmVudENvbW1hbmQgKyAxfS97dGVybWluYWxTZXF1ZW5jZXMubGVuZ3RofTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtNFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNTAwXCI+QWdlbnRzOjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1ncmF5LTUwMFwiPjMgQWN0aXZlPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC00XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtZ3JheS01MDBcIj5DaGFpbjo8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtZ3JheS01MDBcIj5CYXNlIFNlcG9saWE8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIHsvKiBDTEkgaGVhZGluZyBiZWxvdyB0ZXJtaW5hbCAqL31cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtY2VudGVyIG10LTEyIG1iLTEwIG1heC13LTR4bCBteC1hdXRvXCI+XG4gICAgICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC0zeGwgbGc6dGV4dC00eGwgZm9udC1ib2xkIG1iLTRcIj5FdmVyeSBjb21tYW5kLCBzZWN1cml0eS1maXJzdC48L2gyPlxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1sZyB0ZXh0LWdyYXktNDAwIG1heC13LTN4bCBteC1hdXRvXCI+XG4gICAgICAgICAgICAgIERyb3AtaW4gcmVwbGFjZW1lbnQgZm9yIG5wbS4gRXZlcnkgb3BlcmF0aW9uIGdhaW5zIGNyeXB0b2dyYXBoaWMgdmVyaWZpY2F0aW9uLCBBSS1wb3dlcmVkIGF1ZGl0aW5nLCBhbmQgb24tY2hhaW4gYXR0ZXN0YXRpb24gdHJhbnNwYXJlbnRseS5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIHsvKiBDb21tYW5kIGNhcmRzIGJlbG93IHRlcm1pbmFsICovfVxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMSBtZDpncmlkLWNvbHMtMyBnYXAtNiBtYXgtdy00eGwgbXgtYXV0byBtdC0xMFwiPlxuICAgICAgICAgICAge1tcbiAgICAgICAgICAgICAgeyBudW06IFwiMDFcIiwgdGl0bGU6IFwiUHVzaFwiLCBkZXNjOiBcIkVDRFNBLXNpZ24gcGFja2FnZSBtYW5pZmVzdCwgZGlzcGF0Y2ggdG8gMyBpbmRlcGVuZGVudCBMTE0gYWdlbnRzIGZvciBwYXJhbGxlbCBzdGF0aWMgYW5hbHlzaXMsIGFnZ3JlZ2F0ZSB3ZWlnaHRlZCByaXNrIHNjb3JlcywgcmVnaXN0ZXIgaW1tdXRhYmxlIGF0dGVzdGF0aW9uIG9uIEJhc2UgTDJcIiwgY21kOiBcIm9wbSBwdXNoXCIgfSxcbiAgICAgICAgICAgICAgeyBudW06IFwiMDJcIiwgdGl0bGU6IFwiSW5zdGFsbFwiLCBkZXNjOiBcIlJlc29sdmUgRU5TIGlkZW50aXR5LCB2ZXJpZnkgRUNEU0Egc2lnbmF0dXJlIGFnYWluc3Qgb24tY2hhaW4gcmVnaXN0cnksIHZhbGlkYXRlIFNIQS0yNTYgY2hlY2tzdW0sIGNyb3NzLXJlZmVyZW5jZSBPU1YgQ1ZFIGRhdGFiYXNlIGJlZm9yZSBleHRyYWN0aW9uXCIsIGNtZDogXCJvcG0gaW5zdGFsbCA8cGtnPlwiIH0sXG4gICAgICAgICAgICAgIHsgbnVtOiBcIjAzXCIsIHRpdGxlOiBcIkNoZWNrXCIsIGRlc2M6IFwiVHJhdmVyc2UgZnVsbCBkZXBlbmRlbmN5IERBRywgcnVuIExldmVuc2h0ZWluLWRpc3RhbmNlIHR5cG9zcXVhdCBkZXRlY3Rpb24gYWdhaW5zdCB0b3AgMTBrIHBhY2thZ2VzLCBPU1YgQ1ZFIGxvb2t1cCwgdXBsb2FkIHJlcG9ydCB0byBGaWxldmVyc2UgKElQRlMpXCIsIGNtZDogXCJvcG0gY2hlY2tcIiB9LFxuICAgICAgICAgICAgXS5tYXAoKGNhcmQpID0+IChcbiAgICAgICAgICAgICAgPGRpdiBrZXk9e2NhcmQubnVtfSBjbGFzc05hbWU9XCJncm91cCByZWxhdGl2ZSBoLWZ1bGxcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LTAgYmctZ3JhZGllbnQtdG8tYnIgZnJvbS1ncmF5LTgwMCB0by1ncmF5LTkwMCB0cmFuc2Zvcm0gcm90YXRlLTEgZ3JvdXAtaG92ZXI6cm90YXRlLTIgdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tMzAwXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSBiZy1ibGFjayBib3JkZXIgYm9yZGVyLWdyYXktNzAwIHAtNiBoLWZ1bGwgZmxleCBmbGV4LWNvbCBqdXN0aWZ5LWJldHdlZW4gaG92ZXI6Ym9yZGVyLXdoaXRlIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTMwMCBncm91cC1ob3ZlcjpzaGFkb3cteGwgZ3JvdXAtaG92ZXI6c2hhZG93LXdoaXRlLzEwXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtY2VudGVyIGZsZXgtMSBmbGV4IGZsZXgtY29sIGp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0xMiBoLTEyIG14LWF1dG8gbWItNCBiZy1ncmF5LTkwMCBib3JkZXIgYm9yZGVyLWdyYXktNjAwIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdyb3VwLWhvdmVyOmJvcmRlci13aGl0ZSB0cmFuc2l0aW9uLWNvbG9ycyBncm91cC1ob3ZlcjpiZy1ncmF5LTgwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LW1vbm8gdGV4dC13aGl0ZSBncm91cC1ob3Zlcjp0ZXh0LWdyYXktMTAwXCI+e2NhcmQubnVtfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LWJvbGQgbWItMyB0ZXh0LXdoaXRlIGdyb3VwLWhvdmVyOnRleHQtZ3JheS0xMDBcIj57Y2FyZC50aXRsZX08L2gzPlxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtZ3JheS00MDAgbWItNCBncm91cC1ob3Zlcjp0ZXh0LWdyYXktMzAwIHRleHQtc20gbGVhZGluZy1yZWxheGVkXCI+e2NhcmQuZGVzY308L3A+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmctZ3JheS05MDAgYm9yZGVyIGJvcmRlci1ncmF5LTcwMCBwLTIuNSBmb250LW1vbm8gdGV4dC14cyB0ZXh0LWxlZnQgZ3JvdXAtaG92ZXI6Ym9yZGVyLWdyYXktNTAwIHRyYW5zaXRpb24tY29sb3JzIGdyb3VwLWhvdmVyOmJnLWdyYXktODAwIGN1cnNvci1wb2ludGVyIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlblwiXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gY29weVRvQ2xpcGJvYXJkKGNhcmQuY21kLCBgJHtjYXJkLm51bX0tY21kYCl9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNTAwXCI+JCA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXdoaXRlIGdyb3VwLWhvdmVyOnRleHQtZ3JheS0xMDBcIj57Y2FyZC5jbWR9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIHtjb3BpZWRTdGF0ZXNbYCR7Y2FyZC5udW19LWNtZGBdID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPENoZWNrIGNsYXNzTmFtZT1cInctMyBoLTMgdGV4dC1ncmVlbi00MDBcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8Q29weSBjbGFzc05hbWU9XCJ3LTMgaC0zIHRleHQtZ3JheS00MDAgaG92ZXI6dGV4dC13aGl0ZSB0cmFuc2l0aW9uLWNvbG9yc1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NlY3Rpb24+XG5cbiAgICAgIHsvKiBXaHkgT1BNIOKAlCBSZWFsIGluY2lkZW50cyAqL31cbiAgICAgIDxzZWN0aW9uIGNsYXNzTmFtZT1cInB4LTYgcHktMjQgbGc6cHgtMTIgYm9yZGVyLXQgYm9yZGVyLWdyYXktODAwIHJlbGF0aXZlIG92ZXJmbG93LWhpZGRlblwiIGlkPVwid2h5XCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQtMCBiZy1ncmFkaWVudC10by1iIGZyb20tcmVkLTk1MC8xMCB2aWEtdHJhbnNwYXJlbnQgdG8tdHJhbnNwYXJlbnQgcG9pbnRlci1ldmVudHMtbm9uZVwiIC8+XG5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYXgtdy03eGwgbXgtYXV0byByZWxhdGl2ZSB6LTEwXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlciBtYi04XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiBweC00IHB5LTEuNSBib3JkZXIgYm9yZGVyLXJlZC05MDAvNjAgYmctcmVkLTk1MC8zMCB0ZXh0LXJlZC00MDAgdGV4dC14cyBmb250LW1vbm8gdHJhY2tpbmctd2lkZXN0IHVwcGVyY2FzZSBtYi02XCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInctMS41IGgtMS41IHJvdW5kZWQtZnVsbCBiZy1yZWQtNTAwIGFuaW1hdGUtcHVsc2VcIiAvPlxuICAgICAgICAgICAgICBBY3RpdmUgVGhyZWF0IExhbmRzY2FwZVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC00eGwgbGc6dGV4dC02eGwgZm9udC1ib2xkIG1iLTYgbGVhZGluZy10aWdodFwiPlxuICAgICAgICAgICAgICBUaGlzIGlzIGhhcHBlbmluZzxiciAvPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXJlZC00MDBcIj5yaWdodCBub3cuPC9zcGFuPlxuICAgICAgICAgICAgPC9oMj5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtbGcgdGV4dC1ncmF5LTQwMCBtYXgtdy0yeGwgbXgtYXV0b1wiPlxuICAgICAgICAgICAgICBTdXBwbHkgY2hhaW4gYXR0YWNrcyBvbiBucG0gYXJlbiZhcG9zO3QgdGhlb3JldGljYWwuIERldmVsb3BlcnMgYXJlIGxvc2luZyBtb25leSwgc2hpcHBpbmcgQ1ZFcywgYW5kIGluc3RhbGxpbmcgbWFsd2FyZSDigJQgZXZlcnkgc2luZ2xlIHdlZWsuXG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICB7LyogU3RhdHMgYmFyICovfVxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMiBtZDpncmlkLWNvbHMtNCBnYXAtcHggYmctZ3JheS04MDAgbWF4LXctNHhsIG14LWF1dG8gbWItMTZcIj5cbiAgICAgICAgICAgIHtbXG4gICAgICAgICAgICAgIHsgbnVtOiBcIjYsODQ3XCIsIGxhYmVsOiBcIk1hbGljaW91cyBwYWNrYWdlc1wiLCBzdWI6IFwicmVtb3ZlZCBmcm9tIG5wbSBpbiAyMDI1XCIgfSxcbiAgICAgICAgICAgICAgeyBudW06IFwiJDE1TStcIiwgbGFiZWw6IFwiRGV2ZWxvcGVyIGxvc3Nlc1wiLCBzdWI6IFwiZnJvbSB3YWxsZXQgZHJhaW5lciBwYWNrYWdlc1wiIH0sXG4gICAgICAgICAgICAgIHsgbnVtOiBcIjIzJVwiLCBsYWJlbDogXCJQcm9qZWN0cyBhZmZlY3RlZFwiLCBzdWI6IFwiYnkga25vd24gQ1ZFcyBpbiBkZXBzXCIgfSxcbiAgICAgICAgICAgICAgeyBudW06IFwiNCBocnNcIiwgbGFiZWw6IFwiQXZnIHRpbWUgdG8gZGV0ZWN0XCIsIHN1YjogXCJhIHN1cHBseSBjaGFpbiBhdHRhY2tcIiB9LFxuICAgICAgICAgICAgXS5tYXAoKHN0YXQsIGkpID0+IChcbiAgICAgICAgICAgICAgPGRpdiBrZXk9e2l9IGNsYXNzTmFtZT1cImJnLWJsYWNrIHAtNiB0ZXh0LWNlbnRlciBncm91cCBob3ZlcjpiZy1ncmF5LTk1MCB0cmFuc2l0aW9uLWNvbG9yc1wiPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtMnhsIGxnOnRleHQtM3hsIGZvbnQtYm9sZCB0ZXh0LXdoaXRlIG1iLTEgZ3JvdXAtaG92ZXI6dGV4dC1yZWQtNDAwIHRyYW5zaXRpb24tY29sb3JzXCI+e3N0YXQubnVtfTwvcD5cbiAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS0zMDAgZm9udC1tZWRpdW1cIj57c3RhdC5sYWJlbH08L3A+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LWdyYXktNjAwIG10LTFcIj57c3RhdC5zdWJ9PC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgey8qIEluY2lkZW50IGNhcmRzICovfVxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMSBtZDpncmlkLWNvbHMtMTIgZ2FwLTQgbWF4LXctNnhsIG14LWF1dG9cIj5cbiAgICAgICAgICAgIHsvKiBMYXJnZSBjYXJkIOKAlCBQaGFudG9tUmF2ZW4gYXR0YWNrICovfVxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtZDpjb2wtc3Bhbi03IGdyb3VwIHJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQtMCBiZy1yZWQtOTUwLzIwIHRyYW5zZm9ybSByb3RhdGUtWzAuNWRlZ10gZ3JvdXAtaG92ZXI6cm90YXRlLTAgdHJhbnNpdGlvbi10cmFuc2Zvcm0gZHVyYXRpb24tNTAwXCIgLz5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSBiZy1ncmF5LTk1MCBib3JkZXIgYm9yZGVyLWdyYXktODAwIGdyb3VwLWhvdmVyOmJvcmRlci1yZWQtOTAwLzUwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMCBvdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInB4LTQgcHktMi41IGJnLWdyYXktOTAwIGJvcmRlci1iIGJvcmRlci1ncmF5LTgwMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidy0yIGgtMiByb3VuZGVkLWZ1bGwgYmctcmVkLTUwMFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC1ncmF5LTQwMCBmb250LW1vbm9cIj5jeWJlcnByZXNzLm9yZyDigJQgTWFyY2ggMjAyNjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1bMTBweF0gdGV4dC1yZWQtNDAwIGZvbnQtbW9ubyB0cmFja2luZy13aWRlciB1cHBlcmNhc2VcIj5TdXBwbHkgQ2hhaW4gQXR0YWNrPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmUgYXNwZWN0LVsxNi85XSBvdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgICAgICAgICAgICAgIDxJbWFnZVxuICAgICAgICAgICAgICAgICAgICBzcmM9XCIvcGhhbnRvbXJhdmVuLW5wbS1hdHRhY2sucG5nXCJcbiAgICAgICAgICAgICAgICAgICAgYWx0PVwiUGhhbnRvbVJhdmVuIG1hbHdhcmUgdGFyZ2V0aW5nIG5wbSBzdXBwbHkgY2hhaW5cIlxuICAgICAgICAgICAgICAgICAgICBmaWxsXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm9iamVjdC1jb3ZlciBvYmplY3QtdG9wIG9wYWNpdHktOTAgZ3JvdXAtaG92ZXI6b3BhY2l0eS0xMDAgZ3JvdXAtaG92ZXI6c2NhbGUtWzEuMDJdIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTcwMFwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC0wIGJnLWdyYWRpZW50LXRvLXQgZnJvbS1ncmF5LTk1MCB2aWEtdHJhbnNwYXJlbnQgdG8tdHJhbnNwYXJlbnRcIiAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicC01XCI+XG4gICAgICAgICAgICAgICAgICA8aDMgY2xhc3NOYW1lPVwidGV4dC1sZyBmb250LWJvbGQgdGV4dC13aGl0ZSBtYi0xXCI+UGhhbnRvbVJhdmVuIFRhcmdldHMgbnBtIFN1cHBseSBDaGFpbjwvaDM+XG4gICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS00MDBcIj5NYWx3YXJlIGNhbXBhaWduIHRhcmdldGluZyBkZXZlbG9wZXIgc2VjcmV0cyB0aHJvdWdoIHR5cG9zcXVhdHRlZCBwYWNrYWdlcy4gVGhvdXNhbmRzIG9mIGRvd25sb2FkcyBiZWZvcmUgZGV0ZWN0aW9uLjwvcD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgey8qIFJpZ2h0IGNvbHVtbiDigJQgc3RhY2tlZCAqL31cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWQ6Y29sLXNwYW4tNSBmbGV4IGZsZXgtY29sIGdhcC00XCI+XG4gICAgICAgICAgICAgIHsvKiBXYWxsZXQgZHJhaW4gKi99XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JvdXAgcmVsYXRpdmUgZmxleC0xXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSBiZy1ncmF5LTk1MCBib3JkZXIgYm9yZGVyLWdyYXktODAwIGdyb3VwLWhvdmVyOmJvcmRlci1yZWQtOTAwLzUwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMCBvdmVyZmxvdy1oaWRkZW4gaC1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInB4LTQgcHktMi41IGJnLWdyYXktOTAwIGJvcmRlci1iIGJvcmRlci1ncmF5LTgwMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInctMiBoLTIgcm91bmRlZC1mdWxsIGJnLXJlZC01MDBcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC1ncmF5LTQwMCBmb250LW1vbm9cIj5AaW1hbmlzaGJhcm53YWw8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LVsxMHB4XSB0ZXh0LXJlZC00MDAgZm9udC1tb25vIHRyYWNraW5nLXdpZGVyIHVwcGVyY2FzZVwiPkZ1bmRzIExvc3Q8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmUgYXNwZWN0LVsxNi8xMF0gb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgICAgICAgICAgICAgIDxJbWFnZVxuICAgICAgICAgICAgICAgICAgICAgIHNyYz1cIi93YWxsZXQtZHJhaW4tZXhwbG9pdC5wbmdcIlxuICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIkRldmVsb3BlciBsb3N0IG1vbmV5IGZyb20gc2lsZW50IGRldiBlbnZpcm9ubWVudCBleHBsb2l0XCJcbiAgICAgICAgICAgICAgICAgICAgICBmaWxsXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwib2JqZWN0LWNvdmVyIG9iamVjdC10b3Agb3BhY2l0eS05MCBncm91cC1ob3ZlcjpvcGFjaXR5LTEwMCBncm91cC1ob3ZlcjpzY2FsZS1bMS4wMl0gdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNzAwXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC0wIGJnLWdyYWRpZW50LXRvLXQgZnJvbS1ncmF5LTk1MCB2aWEtdHJhbnNwYXJlbnQgdG8tdHJhbnNwYXJlbnRcIiAvPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInAtNFwiPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS0zMDAgZm9udC1tZWRpdW1cIj4mbGRxdW87SSBsb3N0IGEgc2lnbmlmaWNhbnQgYW1vdW50IG9mIG1vbmV5IGR1ZSB0byBhIHNpbGVudCwgemVyby1pbnRlcmFjdGlvbiBkZXYgZW52aXJvbm1lbnQgZXhwbG9pdC4mcmRxdW87PC9wPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIHsvKiBCb3R0b20gcm93IOKAlCAzIGNhcmRzICovfVxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtZDpjb2wtc3Bhbi00IGdyb3VwIHJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmUgYmctZ3JheS05NTAgYm9yZGVyIGJvcmRlci1ncmF5LTgwMCBncm91cC1ob3Zlcjpib3JkZXItb3JhbmdlLTkwMC81MCB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi01MDAgb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJweC00IHB5LTIuNSBiZy1ncmF5LTkwMCBib3JkZXItYiBib3JkZXItZ3JheS04MDAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInctMiBoLTIgcm91bmRlZC1mdWxsIGJnLW9yYW5nZS01MDBcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtZ3JheS00MDAgZm9udC1tb25vXCI+QG5leHRqcyDigJQgMjEzSyB2aWV3czwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1bMTBweF0gdGV4dC1vcmFuZ2UtNDAwIGZvbnQtbW9ubyB0cmFja2luZy13aWRlciB1cHBlcmNhc2VcIj5DVkU8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSBhc3BlY3QtWzQvM10gb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgICAgICAgICAgICA8SW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgc3JjPVwiL25leHRqcy1jdmUtYW5ub3VuY2VtZW50LnBuZ1wiXG4gICAgICAgICAgICAgICAgICAgIGFsdD1cIk5leHQuanMgY3JpdGljYWwgQ1ZFLTIwMjUtNjY0NzggYW5ub3VuY2VtZW50XCJcbiAgICAgICAgICAgICAgICAgICAgZmlsbFxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY292ZXIgb2JqZWN0LXRvcCBvcGFjaXR5LTkwIGdyb3VwLWhvdmVyOm9wYWNpdHktMTAwIGdyb3VwLWhvdmVyOnNjYWxlLVsxLjAyXSB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi03MDBcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQtMCBiZy1ncmFkaWVudC10by10IGZyb20tZ3JheS05NTAgdmlhLXRyYW5zcGFyZW50IHRvLXRyYW5zcGFyZW50XCIgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInAtNFwiPlxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LWdyYXktNDAwXCI+Q3JpdGljYWwgdnVsbmVyYWJpbGl0eSBpbiBSZWFjdCBTZXJ2ZXIgQ29tcG9uZW50cyBhZmZlY3RpbmcgTmV4dC5qcy4gMjEzSysgdmlld3MuPC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1kOmNvbC1zcGFuLTQgZ3JvdXAgcmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSBiZy1ncmF5LTk1MCBib3JkZXIgYm9yZGVyLWdyYXktODAwIGdyb3VwLWhvdmVyOmJvcmRlci15ZWxsb3ctOTAwLzUwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMCBvdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInB4LTQgcHktMi41IGJnLWdyYXktOTAwIGJvcmRlci1iIGJvcmRlci1ncmF5LTgwMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidy0yIGgtMiByb3VuZGVkLWZ1bGwgYmcteWVsbG93LTUwMFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC1ncmF5LTQwMCBmb250LW1vbm9cIj5AdHJhc2hoX2Rldjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1bMTBweF0gdGV4dC15ZWxsb3ctNDAwIGZvbnQtbW9ubyB0cmFja2luZy13aWRlciB1cHBlcmNhc2VcIj5SZWFjdCBDVkU8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSBhc3BlY3QtWzQvM10gb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgICAgICAgICAgICA8SW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgc3JjPVwiL3JlYWN0LWN2ZS1tZW1lLnBuZ1wiXG4gICAgICAgICAgICAgICAgICAgIGFsdD1cIkRldmVsb3BlciByZWFjdGlvbiB0byBSZWFjdCBDVkUgYW5ub3VuY2VtZW50XCJcbiAgICAgICAgICAgICAgICAgICAgZmlsbFxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJvYmplY3QtY292ZXIgb2JqZWN0LXRvcCBvcGFjaXR5LTkwIGdyb3VwLWhvdmVyOm9wYWNpdHktMTAwIGdyb3VwLWhvdmVyOnNjYWxlLVsxLjAyXSB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi03MDBcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQtMCBiZy1ncmFkaWVudC10by10IGZyb20tZ3JheS05NTAgdmlhLXRyYW5zcGFyZW50IHRvLXRyYW5zcGFyZW50XCIgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInAtNFwiPlxuICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LWdyYXktNDAwXCI+SG93IGRldmVsb3BlcnMgcmVhY3QgdG8geWV0IGFub3RoZXIgY3JpdGljYWwgQ1ZFIGluIHRoZWlyIGRlcGVuZGVuY3kgdHJlZS48L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWQ6Y29sLXNwYW4tNCBncm91cCByZWxhdGl2ZVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIGJnLWdyYXktOTUwIGJvcmRlciBib3JkZXItZ3JheS04MDAgZ3JvdXAtaG92ZXI6Ym9yZGVyLWdyYXktNjAwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTUwMCBvdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInB4LTQgcHktMi41IGJnLWdyYXktOTAwIGJvcmRlci1iIGJvcmRlci1ncmF5LTgwMCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidy0yIGgtMiByb3VuZGVkLWZ1bGwgYmctYmx1ZS01MDBcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtZ3JheS00MDAgZm9udC1tb25vXCI+QGFyc2hfZ295YWw8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtWzEwcHhdIHRleHQtZ3JheS00MDAgZm9udC1tb25vIHRyYWNraW5nLXdpZGVyIHVwcGVyY2FzZVwiPlJlYWxpdHkgQ2hlY2s8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSBhc3BlY3QtWzQvM10gb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgICAgICAgICAgICA8SW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgc3JjPVwiL2RlcGVuZGVuY3ktYm90dGxlbmVjay5wbmdcIlxuICAgICAgICAgICAgICAgICAgICBhbHQ9XCJEZXBlbmRlbmN5IG1hbmFnZW1lbnQgaXMgdGhlIGJvdHRsZW5lY2tcIlxuICAgICAgICAgICAgICAgICAgICBmaWxsXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm9iamVjdC1jb3ZlciBvYmplY3QtdG9wIG9wYWNpdHktOTAgZ3JvdXAtaG92ZXI6b3BhY2l0eS0xMDAgZ3JvdXAtaG92ZXI6c2NhbGUtWzEuMDJdIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTcwMFwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhYnNvbHV0ZSBpbnNldC0wIGJnLWdyYWRpZW50LXRvLXQgZnJvbS1ncmF5LTk1MCB2aWEtdHJhbnNwYXJlbnQgdG8tdHJhbnNwYXJlbnRcIiAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicC00XCI+XG4gICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtZ3JheS00MDBcIj4mbGRxdW87Q29kZSBnZW5lcmF0aW9uIGlzbiZhcG9zO3QgdGhlIGJvdHRsZW5lY2sgYW55bW9yZS4gRGVwZW5kZW5jeSBtYW5hZ2VtZW50IGlzLiZyZHF1bzs8L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICB7LyogQ1RBIGFmdGVyIGluY2lkZW50cyAqL31cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtY2VudGVyIG10LTE2XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImlubGluZS1mbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBnYXAtNFwiPlxuICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LWxnIHRleHQtZ3JheS00MDBcIj5cbiAgICAgICAgICAgICAgICBPUE0gY2F0Y2hlcyB0aGVzZSBiZWZvcmUgdGhleSByZWFjaCB5b3VyIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtd2hpdGUgZm9udC1tb25vXCI+bm9kZV9tb2R1bGVzPC9zcGFuPi5cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0zIHRleHQtc20gZm9udC1tb25vIHRleHQtZ3JheS01MDBcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWdyZWVuLTQwMFwiPiQ8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC13aGl0ZVwiPm5wbSBpbnN0YWxsIC1nIG9wbXNlYzwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNjAwXCI+JiY8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC13aGl0ZVwiPm9wbSBpbnN0YWxsPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgey8qIEZlYXR1cmVzICovfVxuICAgICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwicHgtNiBweS0yMCBsZzpweC0xMiBib3JkZXItdCBib3JkZXItZ3JheS04MDBcIiBpZD1cImZlYXR1cmVzXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWF4LXctN3hsIG14LWF1dG9cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtY2VudGVyIG1iLTE2XCI+XG4gICAgICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC00eGwgbGc6dGV4dC01eGwgZm9udC1ib2xkIG1iLTZcIj5TZWN1cml0eSBQcmltaXRpdmVzPC9oMj5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQteGwgdGV4dC1ncmF5LTQwMFwiPkRlZmVuc2UgaW4gZGVwdGgsIGJ5IGRlZmF1bHQuPC9wPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYXgtdy00eGwgbXgtYXV0b1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy1ncmF5LTk1MCBib3JkZXIgYm9yZGVyLWdyYXktODAwIHNoYWRvdy0yeGxcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcHgtNiBweS00IGJnLWdyYXktOTAwIGJvcmRlci1iIGJvcmRlci1ncmF5LTcwMFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTNcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMyBoLTMgYmctcmVkLTUwMFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMyBoLTMgYmcteWVsbG93LTUwMFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMyBoLTMgYmctZ3JlZW4tNTAwXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtZ3JheS00MDAgdGV4dC1zbVwiPm9wbSBmZWF0dXJlcyAtLWxpc3Q8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTIgaC0yIGJnLWdyZWVuLTUwMCByb3VuZGVkLWZ1bGwgYW5pbWF0ZS1wdWxzZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1ncmF5LTUwMCB0ZXh0LXhzXCI+NiBBQ1RJVkU8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicC02IGJnLWJsYWNrXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS00MDAgbWItNFwiPiQgb3BtIGZlYXR1cmVzIC0tc2NhbjwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdyaWQtY29scy0xIG1kOmdyaWQtY29scy0yIGdhcC00IGZvbnQtbW9ubyB0ZXh0LXNtIG1iLTZcIj5cbiAgICAgICAgICAgICAgICAgIHtbXG4gICAgICAgICAgICAgICAgICAgIHsgbmFtZTogXCJtdWx0aS1hZ2VudC1jb25zZW5zdXNcIiwgc3RhdHVzOiBcIuKck1wiLCBkZXNjOiBcIk4tb2YtTSBwYXJhbGxlbCBMTE0gZGlzcGF0Y2ggd2l0aCBpbnRlbGxpZ2VuY2Utd2VpZ2h0ZWQgYWdncmVnYXRpb24gdmlhIEFydGlmaWNpYWwgQW5hbHlzaXMgYmVuY2htYXJrcy4gTm8gc2luZ2xlLW1vZGVsIGZhaWx1cmUgcG9pbnQuXCIgfSxcbiAgICAgICAgICAgICAgICAgICAgeyBuYW1lOiBcImNyeXB0b2dyYXBoaWMtYXR0ZXN0YXRpb25cIiwgc3RhdHVzOiBcIuKck1wiLCBkZXNjOiBcIlNIQS0yNTYgY29udGVudC1hZGRyZXNzYWJsZSBjaGVja3N1bXMgKyBzZWNwMjU2azEgRUNEU0Egc2lnbmF0dXJlcy4gVGFtcGVyLWV2aWRlbnQgc3VwcGx5IGNoYWluIGF0dGVzdGF0aW9uLlwiIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgbmFtZTogXCJ6ay1hZ2VudC12ZXJpZmljYXRpb25cIiwgc3RhdHVzOiBcIuKck1wiLCBkZXNjOiBcIkhhc2gtY29tbWl0bWVudCBaSyBzY2hlbWUgd2l0aCBjaXJjb20gY2lyY3VpdCByZWZlcmVuY2UuIEFjY3VyYWN5IHByb3ZlbiB3aXRob3V0IHJldmVhbGluZyBsYWJlbGVkIHRlc3QgZGF0YS5cIiB9LFxuICAgICAgICAgICAgICAgICAgICB7IG5hbWU6IFwib24tY2hhaW4tcmVnaXN0cnlcIiwgc3RhdHVzOiBcIuKck1wiLCBkZXNjOiBcIk9QTVJlZ2lzdHJ5LnNvbDogYXV0aG9yaXplZEFnZW50cywgcGFja2FnZXMsIHZlcnNpb25EYXRhLCBBZ2VudFNjb3JlcyBtYXBwaW5ncy4gRnVsbHkgcXVlcnlhYmxlIGltbXV0YWJsZSBzdGF0ZS5cIiB9LFxuICAgICAgICAgICAgICAgICAgICB7IG5hbWU6IFwiY3ZlLXR5cG9zcXVhdC1kZXRlY3Rpb25cIiwgc3RhdHVzOiBcIuKck1wiLCBkZXNjOiBcIk9TViBhZHZpc29yeSBkYXRhYmFzZSBpbnRlZ3JhdGlvbiArIExldmVuc2h0ZWluLWRpc3RhbmNlIGFuYWx5c2lzIGFnYWluc3QgdG9wIDEwayBucG0gcGFja2FnZXMuIERlcGVuZGVuY3kgY29uZnVzaW9uIGRldGVjdGlvbi5cIiB9LFxuICAgICAgICAgICAgICAgICAgICB7IG5hbWU6IFwiZHJvcC1pbi1ucG0tcmVwbGFjZW1lbnRcIiwgc3RhdHVzOiBcIuKck1wiLCBkZXNjOiBcIlRyYW5zcGFyZW50IG5wbSBDTEkgaW50ZXJvcDogaW5zdGFsbCwgYXVkaXQsIGNoZWNrLCBwdXNoLCBmaXgg4oCUIGVhY2ggb3BlcmF0aW9uIGxheWVyZWQgd2l0aCBjcnlwdG9ncmFwaGljIHZlcmlmaWNhdGlvbi5cIiB9LFxuICAgICAgICAgICAgICAgICAgXS5tYXAoKGYpID0+IChcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgIGtleT17Zi5uYW1lfVxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBweS0yIHB4LTMgaG92ZXI6YmctZ3JheS05MDAgY3Vyc29yLXBvaW50ZXIgZ3JvdXAgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMjAwIGJvcmRlciBib3JkZXItdHJhbnNwYXJlbnQgaG92ZXI6Ym9yZGVyLWdyYXktNzAwXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtZ3JlZW4tNDAwIGdyb3VwLWhvdmVyOnRleHQtd2hpdGUgdHJhbnNpdGlvbi1jb2xvcnMgdy00XCI+e2Yuc3RhdHVzfTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtd2hpdGUgZ3JvdXAtaG92ZXI6dGV4dC1ncmF5LTIwMCB0cmFuc2l0aW9uLWNvbG9yc1wiPntmLm5hbWV9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwib3BhY2l0eS0wIGdyb3VwLWhvdmVyOm9wYWNpdHktMTAwIHRyYW5zaXRpb24tb3BhY2l0eSB0ZXh0LWdyYXktNTAwIHRleHQteHMgbWF4LXctWzI1MHB4XSB0ZXh0LXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7Zi5kZXNjfVxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwdC00IGJvcmRlci10IGJvcmRlci1ncmF5LTgwMFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtNCB0ZXh0LXhzIHRleHQtZ3JheS01MDAganVzdGlmeS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0yIGgtMiBiZy1ncmVlbi01MDAgcm91bmRlZC1mdWxsXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+NiBBY3RpdmU8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTIgaC0yIGJnLWdyZWVuLTUwMCByb3VuZGVkLWZ1bGwgYW5pbWF0ZS1wdWxzZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlplcm8gY29uZmlnPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgey8qIEFJIEFnZW50cyAqL31cbiAgICAgIDxzZWN0aW9uIGNsYXNzTmFtZT1cInB4LTYgcHktMjAgbGc6cHgtMTIgYm9yZGVyLXQgYm9yZGVyLWdyYXktODAwXCIgaWQ9XCJhZ2VudHNcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYXgtdy03eGwgbXgtYXV0b1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1jZW50ZXIgbWItMTZcIj5cbiAgICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LTR4bCBsZzp0ZXh0LTV4bCBmb250LWJvbGQgbWItNlwiPk11bHRpLUFnZW50IENvbnNlbnN1czwvaDI+XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXhsIHRleHQtZ3JheS00MDBcIj5OLW9mLU0gaGV0ZXJvZ2VuZW91cyBMTE0gZW5zZW1ibGUgd2l0aCBpbnRlbGxpZ2VuY2Utd2VpZ2h0ZWQgc2NvcmluZyBkZXJpdmVkIGZyb20gbGl2ZSBBcnRpZmljaWFsIEFuYWx5c2lzIHF1YWxpdHkgYW5kIGNvZGluZyBpbmRpY2VzLiBCeXphbnRpbmUgZmF1bHQtdG9sZXJhbnQgYnkgZGVzaWduLjwvcD5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWF4LXctNHhsIG14LWF1dG9cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmctZ3JheS05NTAgYm9yZGVyIGJvcmRlci1ncmF5LTgwMCBzaGFkb3ctMnhsXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHB4LTYgcHktNCBiZy1ncmF5LTkwMCBib3JkZXItYiBib3JkZXItZ3JheS03MDBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0zXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTMgaC0zIGJnLXJlZC01MDBcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTMgaC0zIGJnLXllbGxvdy01MDBcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTMgaC0zIGJnLWdyZWVuLTUwMFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNDAwIHRleHQtc21cIj5vcG0gYWdlbnRzIC0tc3RhdHVzPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0yIGgtMiBiZy1ncmVlbi01MDAgcm91bmRlZC1mdWxsIGFuaW1hdGUtcHVsc2VcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtZ3JheS01MDAgdGV4dC14c1wiPjMgQVVUSE9SSVpFRDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwLTYgYmctYmxhY2tcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1ncmF5LTQwMCBtYi00XCI+JCBvcG0gYWdlbnRzIC0tbGlzdDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzcGFjZS15LTIgZm9udC1tb25vIHRleHQtc21cIj5cbiAgICAgICAgICAgICAgICAgIHtbXG4gICAgICAgICAgICAgICAgICAgIHsgaWQ6IFwiMVwiLCBuYW1lOiBcImNsYXVkZS1vcHVzLTQuNlwiLCBwcm92aWRlcjogXCJhbnRocm9waWNcIiwgcm9sZTogXCJQcmltYXJ5IHNjYW5uZXJcIiwgY29sb3I6IFwidGV4dC1ncmVlbi00MDBcIiB9LFxuICAgICAgICAgICAgICAgICAgICB7IGlkOiBcIjJcIiwgbmFtZTogXCJnZW1pbmktMy4xLXByb1wiLCBwcm92aWRlcjogXCJnb29nbGVcIiwgcm9sZTogXCJTZWNvbmRhcnkgYW5hbHlzaXNcIiwgY29sb3I6IFwidGV4dC1ncmVlbi00MDBcIiB9LFxuICAgICAgICAgICAgICAgICAgICB7IGlkOiBcIjNcIiwgbmFtZTogXCJkZWVwc2Vlay12My4yXCIsIHByb3ZpZGVyOiBcImRlZXBzZWVrXCIsIHJvbGU6IFwiVGVydGlhcnkgdmVyaWZpY2F0aW9uXCIsIGNvbG9yOiBcInRleHQtZ3JlZW4tNDAwXCIgfSxcbiAgICAgICAgICAgICAgICAgIF0ubWFwKChhZ2VudCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAga2V5PXthZ2VudC5pZH1cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcHktMiBweC00IGhvdmVyOmJnLWdyYXktOTAwIGN1cnNvci1wb2ludGVyIGdyb3VwIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTIwMCBib3JkZXIgYm9yZGVyLXRyYW5zcGFyZW50IGhvdmVyOmJvcmRlci1ncmF5LTcwMFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNTAwIHctNlwiPlt7YWdlbnQuaWR9XTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17YCR7YWdlbnQuY29sb3J9IGdyb3VwLWhvdmVyOnRleHQtd2hpdGUgdHJhbnNpdGlvbi1jb2xvcnNgfT7il488L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXdoaXRlIGdyb3VwLWhvdmVyOnRleHQtZ3JheS0yMDAgdHJhbnNpdGlvbi1jb2xvcnNcIj57YWdlbnQubmFtZX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWdyYXktNTAwIHRleHQteHNcIj4oe2FnZW50LnByb3ZpZGVyfSk8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJvcGFjaXR5LTAgZ3JvdXAtaG92ZXI6b3BhY2l0eS0xMDAgdHJhbnNpdGlvbi1vcGFjaXR5IHRleHQtZ3JheS01MDAgdGV4dC14c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAge2FnZW50LnJvbGV9XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTYgcHQtNCBib3JkZXItdCBib3JkZXItZ3JheS04MDBcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBtZDpmbGV4LXJvdyBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtc3RhcnQgbWQ6aXRlbXMtY2VudGVyIGdhcC00XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1zbSB0ZXh0LWdyYXktNDAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmb250LW1vbm8gdGV4dC14cyB0ZXh0LWdyYXktNTAwIHNwYWNlLXktMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4kIG9wbSByZWdpc3Rlci1hZ2VudCAtLW5hbWUgbXktYWdlbnQgLS1tb2RlbCBncHQtNS40PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PiQgb3BtIGluZm8gZXhwcmVzcyAgIyBWaWV3IGFnZW50IHNjb3JlczwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC02IHRleHQteHMgdGV4dC1ncmF5LTUwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0yIGgtMiBiZy1ncmVlbi01MDAgcm91bmRlZC1mdWxsXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4zIEFjdGl2ZTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctMiBoLTIgYmctZ3JheS01MDAgcm91bmRlZC1mdWxsIGFuaW1hdGUtcHVsc2VcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlpLLXZlcmlmaWVkPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTYgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgdGV4dC1ncmF5LTQwMCB0ZXh0LXNtXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1ncmVlbi00MDBcIj7il488L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4+UGVybWlzc2lvbmxlc3MgcmVnaXN0cmF0aW9uIOKAoiAxMDAlIGJlbmNobWFyayBhY2N1cmFjeSByZXF1aXJlZCDigKIgU2NvcmVzIG9uLWNoYWluPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgey8qIFBpcGVsaW5lICovfVxuICAgICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwicHgtNiBweS0xNiBsZzpweC0xMiBib3JkZXItdCBib3JkZXItZ3JheS04MDBcIiBpZD1cInBpcGVsaW5lXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibWF4LXctN3hsIG14LWF1dG9cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtY2VudGVyIG1iLTEyXCI+XG4gICAgICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC0zeGwgbGc6dGV4dC00eGwgZm9udC1ib2xkIG1iLTRcIj5WZXJpZmljYXRpb24gUGlwZWxpbmU8L2gyPlxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1sZyB0ZXh0LWdyYXktNDAwIG1heC13LTJ4bCBteC1hdXRvXCI+XG4gICAgICAgICAgICAgIEZpdmUtc3RhZ2UgY3J5cHRvZ3JhcGhpYyBhdHRlc3RhdGlvbiBwaXBlbGluZTogZnJvbSBFQ0RTQSBzaWduaW5nIHRocm91Z2ggbXVsdGktYWdlbnQgY29uc2Vuc3VzIHRvIG9uLWNoYWluIHNldHRsZW1lbnQuIEV2ZXJ5IHBhY2thZ2UgaXMgdmVyaWZpZWQgYmVmb3JlIGV4dHJhY3Rpb24gdG8gbm9kZV9tb2R1bGVzLlxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYXgtdy00eGwgbXgtYXV0b1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJiZy1ncmF5LTk1MCBib3JkZXIgYm9yZGVyLWdyYXktODAwIHNoYWRvdy14bFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBweC02IHB5LTMgYmctZ3JheS05MDAgYm9yZGVyLWIgYm9yZGVyLWdyYXktNzAwXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGdhcC0yXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0zIGgtMyBiZy1yZWQtNTAwXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0zIGgtMyBiZy15ZWxsb3ctNTAwXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy0zIGgtMyBiZy1ncmVlbi01MDBcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1ncmF5LTQwMCB0ZXh0LXNtXCI+b3BtIHBpcGVsaW5lIC0tdmlzdWFsaXplPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInAtNiBiZy1ibGFja1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMSBtZDpncmlkLWNvbHMtNSBnYXAtNCBmb250LW1vbm8gdGV4dC1zbVwiPlxuICAgICAgICAgICAgICAgICAge1tcbiAgICAgICAgICAgICAgICAgICAgeyBzdGVwOiBcIjAxXCIsIHRpdGxlOiBcIlBhY2sgJiBTaWduXCIsIGRlc2M6IFwiU0hBLTI1NiBjb250ZW50LWFkZHJlc3NhYmxlIGNoZWNrc3VtICsgc2VjcDI1NmsxIEVDRFNBIHNpZ25hdHVyZSB2aWEgYXV0aG9yIHdhbGxldFwiIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgc3RlcDogXCIwMlwiLCB0aXRsZTogXCJNdWx0aS1BZ2VudCBTY2FuXCIsIGRlc2M6IFwiUGFyYWxsZWwgZGlzcGF0Y2ggdG8gTiBoZXRlcm9nZW5lb3VzIExMTXM7IGVhY2ggc3VibWl0cyBpbmRlcGVuZGVudCByaXNrIHZlY3RvclwiIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgc3RlcDogXCIwM1wiLCB0aXRsZTogXCJXZWlnaHRlZCBDb25zZW5zdXNcIiwgZGVzYzogXCJJbnRlbGxpZ2VuY2Utd2VpZ2h0ZWQgYWdncmVnYXRlIHZpYSBBcnRpZmljaWFsIEFuYWx5c2lzIHF1YWxpdHkgKyBjb2RpbmcgaW5kaWNlc1wiIH0sXG4gICAgICAgICAgICAgICAgICAgIHsgc3RlcDogXCIwNFwiLCB0aXRsZTogXCJPbi1jaGFpbiBSZWdpc3RyeVwiLCBkZXNjOiBcIlBhY2thZ2UgbWV0YWRhdGEsIGFnZW50IHNjb3JlcywgRmlsZXZlcnNlIHJlcG9ydCBVUkkgc2V0dGxlZCBvbiBCYXNlIFNlcG9saWEgTDJcIiB9LFxuICAgICAgICAgICAgICAgICAgICB7IHN0ZXA6IFwiMDVcIiwgdGl0bGU6IFwiSW5zdGFsbCBWZXJpZnlcIiwgZGVzYzogXCJFQ0RTQSBzaWduYXR1cmUgKyBvbi1jaGFpbiBzY29yZSBsb29rdXAgKyBPU1YgQ1ZFIGNyb3NzLXJlZmVyZW5jZSBhdCBleHRyYWN0aW9uIHRpbWVcIiB9LFxuICAgICAgICAgICAgICAgICAgXS5tYXAoKHMsIGkpID0+IChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2l9IGNsYXNzTmFtZT1cInJlbGF0aXZlIGdyb3VwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJib3JkZXIgYm9yZGVyLWdyYXktNzAwIHAtNCBob3Zlcjpib3JkZXItd2hpdGUgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMzAwIGdyb3VwLWhvdmVyOmJnLWdyYXktOTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtZ3JheS01MDAgYmxvY2sgbWItMlwiPntzLnN0ZXB9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1zZW1pYm9sZCBtYi0xIHRleHQtd2hpdGVcIj57cy50aXRsZX08L2gzPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LWdyYXktNTAwXCI+e3MuZGVzY308L3A+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAge2kgPCA0ICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaGlkZGVuIG1kOmJsb2NrIGFic29sdXRlIHRvcC0xLzIgLXJpZ2h0LTIuNSB3LTUgaC1weCBiZy1ncmF5LTcwMFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NlY3Rpb24+XG5cbiAgICAgIHsvKiBDb250cmFjdCBpbmZvICovfVxuICAgICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwicHgtNiBweS0xNiBsZzpweC0xMiBib3JkZXItdCBib3JkZXItZ3JheS04MDBcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYXgtdy00eGwgbXgtYXV0byB0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LTN4bCBmb250LWJvbGQgbWItNFwiPkZ1bGx5IG9uLWNoYWluLiBGdWxseSB2ZXJpZmlhYmxlLjwvaDI+XG4gICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1ncmF5LTQwMCBtYi04XCI+T1BNUmVnaXN0cnkuc29sIGRlcGxveWVkIG9uIEJhc2UgU2Vwb2xpYSBMMi4gRXZlcnkgcGFja2FnZSByZWdpc3RyYXRpb24sIGFnZW50IHNjb3JlIHN1Ym1pc3Npb24sIFpLLXZlcmlmaWVkIGFnZW50IGF1dGhvcml6YXRpb24sIGFuZCBFTlMtcmVzb2x2ZWQgYXV0aG9yIHByb2ZpbGUgaXMgYW4gaW1tdXRhYmxlIG9uLWNoYWluIHJlY29yZC4gRnVsbHkgcXVlcnlhYmxlLCBmdWxseSB2ZXJpZmlhYmxlLjwvcD5cblxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtMiBtZDpncmlkLWNvbHMtNCBnYXAtcHggYmctZ3JheS04MDAgbWItOFwiPlxuICAgICAgICAgICAge1tcbiAgICAgICAgICAgICAgeyBsYWJlbDogXCJQYWNrYWdlc1wiLCBkZXNjOiBcIlJlZ2lzdGVyZWRcIiB9LFxuICAgICAgICAgICAgICB7IGxhYmVsOiBcIkFnZW50IFNjb3Jlc1wiLCBkZXNjOiBcIlN1Ym1pdHRlZFwiIH0sXG4gICAgICAgICAgICAgIHsgbGFiZWw6IFwiQXV0aG9yc1wiLCBkZXNjOiBcIlZlcmlmaWVkXCIgfSxcbiAgICAgICAgICAgICAgeyBsYWJlbDogXCJSZXBvcnRzXCIsIGRlc2M6IFwiT24gSVBGU1wiIH0sXG4gICAgICAgICAgICBdLm1hcCgocywgaSkgPT4gKFxuICAgICAgICAgICAgICA8ZGl2IGtleT17aX0gY2xhc3NOYW1lPVwiYmctYmxhY2sgcC02XCI+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LWdyYXktNTAwIG1iLTFcIj57cy5kZXNjfTwvcD5cbiAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtc2VtaWJvbGRcIj57cy5sYWJlbH08L3A+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBnYXAtNFwiPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgaHJlZj17QkFTRVNDQU59XG4gICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgIHJlbD1cIm5vb3BlbmVyXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgdGV4dC1zbSBmb250LW1vbm8gdGV4dC1ncmF5LTQwMCBob3Zlcjp0ZXh0LXdoaXRlIHRyYW5zaXRpb24tY29sb3JzIHB4LTQgcHktMiBib3JkZXIgYm9yZGVyLWdyYXktNzAwIGhvdmVyOmJvcmRlci13aGl0ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInctMiBoLTIgcm91bmRlZC1mdWxsIGJnLWdyZWVuLTUwMFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgVmlldyBvbiBCYXNlU2NhblxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgaHJlZj17YCR7R0lUSFVCX1VSTH0vYmxvYi9tYWluL3BhY2thZ2VzL2NvbnRyYWN0cy9jb250cmFjdHMvT1BNUmVnaXN0cnkuc29sYH1cbiAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgcmVsPVwibm9vcGVuZXJcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiB0ZXh0LXNtIHRleHQtZ3JheS00MDAgaG92ZXI6dGV4dC13aGl0ZSB0cmFuc2l0aW9uLWNvbG9ycyBweC00IHB5LTIgYm9yZGVyIGJvcmRlci1ncmF5LTcwMCBob3Zlcjpib3JkZXItd2hpdGVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBTb3VyY2UgQ29kZVxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvc2VjdGlvbj5cblxuICAgICAgey8qIEZvb3RlciAqL31cbiAgICAgIDxmb290ZXIgY2xhc3NOYW1lPVwiYm9yZGVyLXQgYm9yZGVyLWdyYXktODAwIHB4LTYgcHktMTIgbGc6cHgtMTIgYmctZ3JheS05NTBcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYXgtdy03eGwgbXgtYXV0b1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBmbGV4LWNvbCBtZDpmbGV4LXJvdyBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIGdhcC02XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yLjVcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZm9udC1ib2xkXCI+T1BNPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtZ3JheS01MDBcIj5Pbi1jaGFpbiBQYWNrYWdlIE1hbmFnZXI8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTYgdGV4dC1zbSB0ZXh0LWdyYXktNTAwXCI+XG4gICAgICAgICAgICAgIDxhIGhyZWY9e0RPQ1NfVVJMfSB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lclwiIGNsYXNzTmFtZT1cImhvdmVyOnRleHQtd2hpdGUgdHJhbnNpdGlvbi1jb2xvcnNcIj5Eb2NzPC9hPlxuICAgICAgICAgICAgICA8YSBocmVmPXtHSVRIVUJfVVJMfSB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lclwiIGNsYXNzTmFtZT1cImhvdmVyOnRleHQtd2hpdGUgdHJhbnNpdGlvbi1jb2xvcnNcIj5HaXRIdWI8L2E+XG4gICAgICAgICAgICAgIDxhIGhyZWY9e05QTV9VUkx9IHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyXCIgY2xhc3NOYW1lPVwiaG92ZXI6dGV4dC13aGl0ZSB0cmFuc2l0aW9uLWNvbG9yc1wiPm5wbTwvYT5cbiAgICAgICAgICAgICAgPGEgaHJlZj17QkFTRVNDQU59IHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyXCIgY2xhc3NOYW1lPVwiaG92ZXI6dGV4dC13aGl0ZSB0cmFuc2l0aW9uLWNvbG9yc1wiPkNvbnRyYWN0PC9hPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtZ3JheS03MDBcIj5NSVQgTGljZW5zZTwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Zvb3Rlcj5cbiAgICA8L2Rpdj5cbiAgKVxufSJdLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VTdGF0ZSIsIkNvcHkiLCJDaGVjayIsIkltYWdlIiwiRE9DU19VUkwiLCJwcm9jZXNzIiwiZW52IiwiTkVYVF9QVUJMSUNfRE9DU19VUkwiLCJHSVRIVUJfVVJMIiwiTlBNX1VSTCIsIkNPTlRSQUNUIiwiQkFTRVNDQU4iLCJPUE1UZXJtaW5hbCIsImN1cnJlbnRDb21tYW5kIiwic2V0Q3VycmVudENvbW1hbmQiLCJzaG93Q3Vyc29yIiwic2V0U2hvd0N1cnNvciIsIm1hdHJpeENoYXJzIiwic2V0TWF0cml4Q2hhcnMiLCJ0ZXJtaW5hbExpbmVzIiwic2V0VGVybWluYWxMaW5lcyIsImN1cnJlbnRUeXBpbmciLCJzZXRDdXJyZW50VHlwaW5nIiwiaXNFeGVjdXRpbmciLCJzZXRJc0V4ZWN1dGluZyIsImNvcGllZFN0YXRlcyIsInNldENvcGllZFN0YXRlcyIsImNvcHlUb0NsaXBib2FyZCIsInRleHQiLCJrZXkiLCJuYXZpZ2F0b3IiLCJjbGlwYm9hcmQiLCJ3cml0ZVRleHQiLCJwcmV2Iiwic2V0VGltZW91dCIsImVyciIsImNvbnNvbGUiLCJlcnJvciIsInRlcm1pbmFsU2VxdWVuY2VzIiwiY29tbWFuZCIsIm91dHB1dHMiLCJoZXJvQXNjaWlUZXh0IiwidHJpbSIsImNoYXJzIiwic3BsaXQiLCJuZXdNYXRyaXhDaGFycyIsIkFycmF5IiwiZnJvbSIsImxlbmd0aCIsIk1hdGgiLCJmbG9vciIsInJhbmRvbSIsImludGVydmFsIiwic2V0SW50ZXJ2YWwiLCJtYXAiLCJjbGVhckludGVydmFsIiwic2VxdWVuY2UiLCJ0aW1lb3V0cyIsInJ1blNlcXVlbmNlIiwiaSIsInB1c2giLCJzbGljZSIsImZvckVhY2giLCJvdXRwdXQiLCJpbmRleCIsImNsZWFyVGltZW91dCIsImRpdiIsImNsYXNzTmFtZSIsIm5hdiIsInNwYW4iLCJhIiwiaHJlZiIsInRhcmdldCIsInJlbCIsIm9uQ2xpY2siLCJjaGFyIiwic2VjdGlvbiIsInByZSIsImgxIiwiYnIiLCJwIiwibGluZSIsInN0YXJ0c1dpdGgiLCJpbmNsdWRlcyIsInN0eWxlIiwiYW5pbWF0aW9uRGVsYXkiLCJoMiIsIm51bSIsInRpdGxlIiwiZGVzYyIsImNtZCIsImNhcmQiLCJoMyIsImlkIiwibGFiZWwiLCJzdWIiLCJzdGF0Iiwic3JjIiwiYWx0IiwiZmlsbCIsIm5hbWUiLCJzdGF0dXMiLCJmIiwicHJvdmlkZXIiLCJyb2xlIiwiY29sb3IiLCJhZ2VudCIsInN0ZXAiLCJzIiwiZm9vdGVyIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./app/page.tsx\n");
107
97
 
108
98
  /***/ }),
109
99
 
@@ -125,6 +115,16 @@ eval("Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__web
125
115
 
126
116
  eval("Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/builtin/global-error.js */ \"(ssr)/./node_modules/next/dist/client/components/builtin/global-error.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/client-page.js */ \"(ssr)/./node_modules/next/dist/client/components/client-page.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/client-segment.js */ \"(ssr)/./node_modules/next/dist/client/components/client-segment.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js */ \"(ssr)/./node_modules/next/dist/client/components/http-access-fallback/error-boundary.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/layout-router.js */ \"(ssr)/./node_modules/next/dist/client/components/layout-router.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/metadata/async-metadata.js */ \"(ssr)/./node_modules/next/dist/client/components/metadata/async-metadata.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/render-from-template-context.js */ \"(ssr)/./node_modules/next/dist/client/components/render-from-template-context.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/lib/framework/boundary-components.js */ \"(ssr)/./node_modules/next/dist/lib/framework/boundary-components.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./node_modules/next/dist/lib/metadata/generate/icon-mark.js */ \"(ssr)/./node_modules/next/dist/lib/metadata/generate/icon-mark.js\"));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js */ \"(ssr)/./node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js\", 23));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1jbGllbnQtZW50cnktbG9hZGVyLmpzP21vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGZGhhbmFuamF5cGFpJTJGQ29kaW5nJTJGUGVyc29uYWwlMkZvcG0lMkZwYWNrYWdlcyUyRndlYiUyRm5vZGVfbW9kdWxlcyUyRm5leHQlMkZkaXN0JTJGY2xpZW50JTJGY29tcG9uZW50cyUyRmJ1aWx0aW4lMkZnbG9iYWwtZXJyb3IuanMlMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0QmbW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyJTJGVXNlcnMlMkZkaGFuYW5qYXlwYWklMkZDb2RpbmclMkZQZXJzb25hbCUyRm9wbSUyRnBhY2thZ2VzJTJGd2ViJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGY2xpZW50LXBhZ2UuanMlMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0QmbW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyJTJGVXNlcnMlMkZkaGFuYW5qYXlwYWklMkZDb2RpbmclMkZQZXJzb25hbCUyRm9wbSUyRnBhY2thZ2VzJTJGd2ViJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGY2xpZW50LXNlZ21lbnQuanMlMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0QmbW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyJTJGVXNlcnMlMkZkaGFuYW5qYXlwYWklMkZDb2RpbmclMkZQZXJzb25hbCUyRm9wbSUyRnBhY2thZ2VzJTJGd2ViJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGaHR0cC1hY2Nlc3MtZmFsbGJhY2slMkZlcnJvci1ib3VuZGFyeS5qcyUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZtb2R1bGVzPSU3QiUyMnJlcXVlc3QlMjIlM0ElMjIlMkZVc2VycyUyRmRoYW5hbmpheXBhaSUyRkNvZGluZyUyRlBlcnNvbmFsJTJGb3BtJTJGcGFja2FnZXMlMkZ3ZWIlMkZub2RlX21vZHVsZXMlMkZuZXh0JTJGZGlzdCUyRmNsaWVudCUyRmNvbXBvbmVudHMlMkZsYXlvdXQtcm91dGVyLmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGZGhhbmFuamF5cGFpJTJGQ29kaW5nJTJGUGVyc29uYWwlMkZvcG0lMkZwYWNrYWdlcyUyRndlYiUyRm5vZGVfbW9kdWxlcyUyRm5leHQlMkZkaXN0JTJGY2xpZW50JTJGY29tcG9uZW50cyUyRm1ldGFkYXRhJTJGYXN5bmMtbWV0YWRhdGEuanMlMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0QmbW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyJTJGVXNlcnMlMkZkaGFuYW5qYXlwYWklMkZDb2RpbmclMkZQZXJzb25hbCUyRm9wbSUyRnBhY2thZ2VzJTJGd2ViJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGcmVuZGVyLWZyb20tdGVtcGxhdGUtY29udGV4dC5qcyUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZtb2R1bGVzPSU3QiUyMnJlcXVlc3QlMjIlM0ElMjIlMkZVc2VycyUyRmRoYW5hbmpheXBhaSUyRkNvZGluZyUyRlBlcnNvbmFsJTJGb3BtJTJGcGFja2FnZXMlMkZ3ZWIlMkZub2RlX21vZHVsZXMlMkZuZXh0JTJGZGlzdCUyRmxpYiUyRmZyYW1ld29yayUyRmJvdW5kYXJ5LWNvbXBvbmVudHMuanMlMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0QmbW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyJTJGVXNlcnMlMkZkaGFuYW5qYXlwYWklMkZDb2RpbmclMkZQZXJzb25hbCUyRm9wbSUyRnBhY2thZ2VzJTJGd2ViJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZsaWIlMkZtZXRhZGF0YSUyRmdlbmVyYXRlJTJGaWNvbi1tYXJrLmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGZGhhbmFuamF5cGFpJTJGQ29kaW5nJTJGUGVyc29uYWwlMkZvcG0lMkZwYWNrYWdlcyUyRndlYiUyRm5vZGVfbW9kdWxlcyUyRm5leHQlMkZkaXN0JTJGbmV4dC1kZXZ0b29scyUyRnVzZXJzcGFjZSUyRmFwcCUyRnNlZ21lbnQtZXhwbG9yZXItbm9kZS5qcyUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZzZXJ2ZXI9dHJ1ZSEiLCJtYXBwaW5ncyI6IkFBQUEsc1BBQTBKO0FBQzFKO0FBQ0Esb09BQWlKO0FBQ2pKO0FBQ0EsME9BQW9KO0FBQ3BKO0FBQ0Esb1JBQXlLO0FBQ3pLO0FBQ0Esd09BQW1KO0FBQ25KO0FBQ0EsNFBBQTZKO0FBQzdKO0FBQ0Esc1FBQWtLO0FBQ2xLO0FBQ0EsNE9BQXFKO0FBQ3JKO0FBQ0Esa09BQW1KO0FBQ25KO0FBQ0EsNFFBQXFLIiwic291cmNlcyI6WyIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvZGhhbmFuamF5cGFpL0NvZGluZy9QZXJzb25hbC9vcG0vcGFja2FnZXMvd2ViL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvYnVpbHRpbi9nbG9iYWwtZXJyb3IuanNcIik7XG47XG5pbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9Vc2Vycy9kaGFuYW5qYXlwYWkvQ29kaW5nL1BlcnNvbmFsL29wbS9wYWNrYWdlcy93ZWIvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9jbGllbnQtcGFnZS5qc1wiKTtcbjtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL2RoYW5hbmpheXBhaS9Db2RpbmcvUGVyc29uYWwvb3BtL3BhY2thZ2VzL3dlYi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2NsaWVudC1zZWdtZW50LmpzXCIpO1xuO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvZGhhbmFuamF5cGFpL0NvZGluZy9QZXJzb25hbC9vcG0vcGFja2FnZXMvd2ViL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvaHR0cC1hY2Nlc3MtZmFsbGJhY2svZXJyb3ItYm91bmRhcnkuanNcIik7XG47XG5pbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9Vc2Vycy9kaGFuYW5qYXlwYWkvQ29kaW5nL1BlcnNvbmFsL29wbS9wYWNrYWdlcy93ZWIvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9sYXlvdXQtcm91dGVyLmpzXCIpO1xuO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvZGhhbmFuamF5cGFpL0NvZGluZy9QZXJzb25hbC9vcG0vcGFja2FnZXMvd2ViL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvbWV0YWRhdGEvYXN5bmMtbWV0YWRhdGEuanNcIik7XG47XG5pbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9Vc2Vycy9kaGFuYW5qYXlwYWkvQ29kaW5nL1BlcnNvbmFsL29wbS9wYWNrYWdlcy93ZWIvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9yZW5kZXItZnJvbS10ZW1wbGF0ZS1jb250ZXh0LmpzXCIpO1xuO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvZGhhbmFuamF5cGFpL0NvZGluZy9QZXJzb25hbC9vcG0vcGFja2FnZXMvd2ViL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvbGliL2ZyYW1ld29yay9ib3VuZGFyeS1jb21wb25lbnRzLmpzXCIpO1xuO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvZGhhbmFuamF5cGFpL0NvZGluZy9QZXJzb25hbC9vcG0vcGFja2FnZXMvd2ViL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvbGliL21ldGFkYXRhL2dlbmVyYXRlL2ljb24tbWFyay5qc1wiKTtcbjtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL2RoYW5hbmpheXBhaS9Db2RpbmcvUGVyc29uYWwvb3BtL3BhY2thZ2VzL3dlYi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L25leHQtZGV2dG9vbHMvdXNlcnNwYWNlL2FwcC9zZWdtZW50LWV4cGxvcmVyLW5vZGUuanNcIik7XG4iXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fdhananjaypai%2FCoding%2FPersonal%2Fopm%2Fpackages%2Fweb%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fbuiltin%2Fglobal-error.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fdhananjaypai%2FCoding%2FPersonal%2Fopm%2Fpackages%2Fweb%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fdhananjaypai%2FCoding%2FPersonal%2Fopm%2Fpackages%2Fweb%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-segment.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fdhananjaypai%2FCoding%2FPersonal%2Fopm%2Fpackages%2Fweb%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fhttp-access-fallback%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fdhananjaypai%2FCoding%2FPersonal%2Fopm%2Fpackages%2Fweb%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fdhananjaypai%2FCoding%2FPersonal%2Fopm%2Fpackages%2Fweb%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fmetadata%2Fasync-metadata.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fdhananjaypai%2FCoding%2FPersonal%2Fopm%2Fpackages%2Fweb%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fdhananjaypai%2FCoding%2FPersonal%2Fopm%2Fpackages%2Fweb%2Fnode_modules%2Fnext%2Fdist%2Flib%2Fframework%2Fboundary-components.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fdhananjaypai%2FCoding%2FPersonal%2Fopm%2Fpackages%2Fweb%2Fnode_modules%2Fnext%2Fdist%2Flib%2Fmetadata%2Fgenerate%2Ficon-mark.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fdhananjaypai%2FCoding%2FPersonal%2Fopm%2Fpackages%2Fweb%2Fnode_modules%2Fnext%2Fdist%2Fnext-devtools%2Fuserspace%2Fapp%2Fsegment-explorer-node.js%22%2C%22ids%22%3A%5B%5D%7D&server=true!\n");
127
117
 
118
+ /***/ }),
119
+
120
+ /***/ "(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fdhananjaypai%2FCoding%2FPersonal%2Fopm%2Fpackages%2Fweb%2Fnode_modules%2Fnext%2Ffont%2Fgoogle%2Ftarget.css%3F%7B%5C%22path%5C%22%3A%5C%22app%2Flayout.tsx%5C%22%2C%5C%22import%5C%22%3A%5C%22Geist%5C%22%2C%5C%22arguments%5C%22%3A%5B%7B%5C%22subsets%5C%22%3A%5B%5C%22latin%5C%22%5D%7D%5D%2C%5C%22variableName%5C%22%3A%5C%22_geist%5C%22%7D%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fdhananjaypai%2FCoding%2FPersonal%2Fopm%2Fpackages%2Fweb%2Fnode_modules%2Fnext%2Ffont%2Fgoogle%2Ftarget.css%3F%7B%5C%22path%5C%22%3A%5C%22app%2Flayout.tsx%5C%22%2C%5C%22import%5C%22%3A%5C%22Geist_Mono%5C%22%2C%5C%22arguments%5C%22%3A%5B%7B%5C%22subsets%5C%22%3A%5B%5C%22latin%5C%22%5D%7D%5D%2C%5C%22variableName%5C%22%3A%5C%22_geistMono%5C%22%7D%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fdhananjaypai%2FCoding%2FPersonal%2Fopm%2Fpackages%2Fweb%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=true!":
121
+ /*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
122
+ !*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Fdhananjaypai%2FCoding%2FPersonal%2Fopm%2Fpackages%2Fweb%2Fnode_modules%2Fnext%2Ffont%2Fgoogle%2Ftarget.css%3F%7B%5C%22path%5C%22%3A%5C%22app%2Flayout.tsx%5C%22%2C%5C%22import%5C%22%3A%5C%22Geist%5C%22%2C%5C%22arguments%5C%22%3A%5B%7B%5C%22subsets%5C%22%3A%5B%5C%22latin%5C%22%5D%7D%5D%2C%5C%22variableName%5C%22%3A%5C%22_geist%5C%22%7D%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fdhananjaypai%2FCoding%2FPersonal%2Fopm%2Fpackages%2Fweb%2Fnode_modules%2Fnext%2Ffont%2Fgoogle%2Ftarget.css%3F%7B%5C%22path%5C%22%3A%5C%22app%2Flayout.tsx%5C%22%2C%5C%22import%5C%22%3A%5C%22Geist_Mono%5C%22%2C%5C%22arguments%5C%22%3A%5B%7B%5C%22subsets%5C%22%3A%5B%5C%22latin%5C%22%5D%7D%5D%2C%5C%22variableName%5C%22%3A%5C%22_geistMono%5C%22%7D%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fdhananjaypai%2FCoding%2FPersonal%2Fopm%2Fpackages%2Fweb%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=true! ***!
123
+ \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
124
+ /***/ (() => {
125
+
126
+
127
+
128
128
  /***/ }),
129
129
 
130
130
  /***/ "../app-render/action-async-storage.external":
@@ -266,7 +266,7 @@ module.exports = require("util");
266
266
  var __webpack_require__ = require("../webpack-runtime.js");
267
267
  __webpack_require__.C(exports);
268
268
  var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
269
- var __webpack_exports__ = __webpack_require__.X(0, ["vendor-chunks/next","vendor-chunks/@swc"], () => (__webpack_exec__("(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2FUsers%2Fdhananjaypai%2FCoding%2FPersonal%2Fopm%2Fpackages%2Fweb%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fdhananjaypai%2FCoding%2FPersonal%2Fopm%2Fpackages%2Fweb&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=!")));
269
+ var __webpack_exports__ = __webpack_require__.X(0, ["vendor-chunks/next","vendor-chunks/lucide-react","vendor-chunks/@swc"], () => (__webpack_exec__("(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader/index.js?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2FUsers%2Fdhananjaypai%2FCoding%2FPersonal%2Fopm%2Fpackages%2Fweb%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fdhananjaypai%2FCoding%2FPersonal%2Fopm%2Fpackages%2Fweb&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D&isGlobalNotFoundEnabled=!")));
270
270
  module.exports = __webpack_exports__;
271
271
 
272
272
  })();