@commercetools-frontend/application-shell 22.2.1 → 22.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{application-entry-point-32a3b092.cjs.dev.js → application-entry-point-0c3254b0.cjs.dev.js} +10 -19
- package/dist/{application-entry-point-ac068fc0.cjs.prod.js → application-entry-point-2333abb6.cjs.prod.js} +10 -19
- package/dist/{application-entry-point-07dbf99c.esm.js → application-entry-point-a1dfe994.esm.js} +10 -19
- package/dist/{box-8850277f.cjs.prod.js → box-686bc950.cjs.dev.js} +0 -2
- package/dist/{box-4395623b.esm.js → box-6ce924c9.esm.js} +0 -2
- package/dist/{box-6b5be9a9.cjs.dev.js → box-e17daf6c.cjs.prod.js} +0 -2
- package/dist/{cart-a49faf67.esm.js → cart-3b156a46.esm.js} +0 -2
- package/dist/{cart-41f0b7bc.cjs.dev.js → cart-796beed7.cjs.dev.js} +0 -2
- package/dist/{cart-0698b97d.cjs.prod.js → cart-f2fc1baf.cjs.prod.js} +0 -2
- package/dist/commercetools-frontend-application-shell.cjs.dev.js +5 -5
- package/dist/commercetools-frontend-application-shell.cjs.prod.js +5 -5
- package/dist/commercetools-frontend-application-shell.esm.js +5 -5
- package/dist/{configure-apollo-b2a0d497.cjs.prod.js → configure-apollo-70d83707.cjs.prod.js} +64 -181
- package/dist/{configure-apollo-4ea370b4.esm.js → configure-apollo-89ea99bf.esm.js} +64 -183
- package/dist/{configure-apollo-3daef70c.cjs.dev.js → configure-apollo-de2b9aa2.cjs.dev.js} +64 -183
- package/dist/{connected-square-47233754.cjs.dev.js → connected-square-960e046b.cjs.prod.js} +0 -2
- package/dist/{connected-square-b2e25621.cjs.prod.js → connected-square-961eb5b6.cjs.dev.js} +0 -2
- package/dist/{connected-square-3cac6bd7.esm.js → connected-square-f34a98ff.esm.js} +0 -2
- package/dist/{constants-a3c2194a.cjs.prod.js → constants-902cf3f3.cjs.prod.js} +2 -1
- package/dist/{constants-940f343f.esm.js → constants-b962b73e.esm.js} +2 -1
- package/dist/{constants-b201d328.cjs.dev.js → constants-e51cdcc0.cjs.dev.js} +2 -1
- package/dist/declarations/src/components/app-bar/app-bar.d.ts +1 -1
- package/dist/declarations/src/components/application-entry-point/application-entry-point.d.ts +1 -1
- package/dist/declarations/src/components/application-loader/application-loader.d.ts +1 -1
- package/dist/declarations/src/components/application-shell/application-shell.d.ts +1 -1
- package/dist/declarations/src/components/application-shell/global-styles.d.ts +1 -1
- package/dist/declarations/src/components/application-shell-authenticated/application-shell-authenticated.d.ts +1 -1
- package/dist/declarations/src/components/application-shell-provider/application-shell-provider.d.ts +1 -2
- package/dist/declarations/src/components/application-shell-provider/utils.d.ts +2 -0
- package/dist/declarations/src/components/authenticated/am-i-logged-in.d.ts +1 -1
- package/dist/declarations/src/components/authenticated/authenticated.d.ts +1 -1
- package/dist/declarations/src/components/authenticated/oidc-callback-error-page.d.ts +1 -1
- package/dist/declarations/src/components/authenticated/oidc-callback.async.d.ts +1 -1
- package/dist/declarations/src/components/authenticated/oidc-callback.d.ts +1 -1
- package/dist/declarations/src/components/back-to-project/back-to-project.d.ts +1 -1
- package/dist/declarations/src/components/configure-intl-provider/configure-intl-provider.d.ts +1 -1
- package/dist/declarations/src/components/error-apologizer/error-apologizer.d.ts +1 -1
- package/dist/declarations/src/components/error-apologizer/index.d.ts +1 -1
- package/dist/declarations/src/components/error-boundary/error-boundary.d.ts +1 -1
- package/dist/declarations/src/components/fetch-project/fetch-project.d.ts +1 -1
- package/dist/declarations/src/components/fetch-user/fetch-user.d.ts +1 -1
- package/dist/declarations/src/components/inject-reducers/inject-reducers.d.ts +1 -1
- package/dist/declarations/src/components/locale-switcher/locale-switcher.d.ts +2 -2
- package/dist/declarations/src/components/navbar/index.d.ts +1 -1
- package/dist/declarations/src/components/navbar/legacy-icons/box.d.ts +1 -1
- package/dist/declarations/src/components/navbar/legacy-icons/cart.d.ts +1 -1
- package/dist/declarations/src/components/navbar/legacy-icons/connected-square.d.ts +1 -1
- package/dist/declarations/src/components/navbar/legacy-icons/gear.d.ts +1 -1
- package/dist/declarations/src/components/navbar/legacy-icons/heart.d.ts +1 -1
- package/dist/declarations/src/components/navbar/legacy-icons/list-with-search.d.ts +1 -1
- package/dist/declarations/src/components/navbar/legacy-icons/paperclip.d.ts +1 -1
- package/dist/declarations/src/components/navbar/legacy-icons/plugin.d.ts +1 -1
- package/dist/declarations/src/components/navbar/legacy-icons/rocket.d.ts +1 -1
- package/dist/declarations/src/components/navbar/legacy-icons/speedometer.d.ts +1 -1
- package/dist/declarations/src/components/navbar/legacy-icons/star.d.ts +1 -1
- package/dist/declarations/src/components/navbar/legacy-icons/tag-multi.d.ts +1 -1
- package/dist/declarations/src/components/navbar/legacy-icons/tree-structure.d.ts +1 -1
- package/dist/declarations/src/components/navbar/legacy-icons/user-filled.d.ts +1 -1
- package/dist/declarations/src/components/navbar/legacy-icons/world.d.ts +1 -1
- package/dist/declarations/src/components/navbar/loading-navbar.d.ts +1 -1
- package/dist/declarations/src/components/navbar/menu-items.d.ts +8 -8
- package/dist/declarations/src/components/navbar/navbar.d.ts +1 -1
- package/dist/declarations/src/components/project-container/index.d.ts +1 -1
- package/dist/declarations/src/components/project-container/project-container.d.ts +1 -1
- package/dist/declarations/src/components/project-data-locale/project-data-locale.d.ts +1 -1
- package/dist/declarations/src/components/project-expired/index.d.ts +1 -1
- package/dist/declarations/src/components/project-expired/project-expired.d.ts +1 -1
- package/dist/declarations/src/components/project-not-found/index.d.ts +1 -1
- package/dist/declarations/src/components/project-not-found/project-not-found.d.ts +1 -1
- package/dist/declarations/src/components/project-not-initialized/index.d.ts +1 -1
- package/dist/declarations/src/components/project-not-initialized/project-not-initialized.d.ts +1 -1
- package/dist/declarations/src/components/project-suspended/index.d.ts +1 -1
- package/dist/declarations/src/components/project-suspended/project-suspended.d.ts +1 -1
- package/dist/declarations/src/components/project-switcher/project-switcher.d.ts +3 -3
- package/dist/declarations/src/components/quick-access/butler/butler.d.ts +1 -1
- package/dist/declarations/src/components/quick-access/butler-command/butler-command.d.ts +1 -1
- package/dist/declarations/src/components/quick-access/index.d.ts +1 -1
- package/dist/declarations/src/components/quick-access/quick-access.d.ts +1 -1
- package/dist/declarations/src/components/redirect-to-login/index.d.ts +1 -1
- package/dist/declarations/src/components/redirect-to-login/redirect-to-login.d.ts +1 -1
- package/dist/declarations/src/components/redirect-to-logout/index.d.ts +1 -1
- package/dist/declarations/src/components/redirect-to-logout/redirect-to-logout.d.ts +1 -1
- package/dist/declarations/src/components/redirect-to-project-create/index.d.ts +1 -1
- package/dist/declarations/src/components/redirect-to-project-create/redirect-to-project-create.d.ts +1 -1
- package/dist/declarations/src/components/route-catch-all/index.d.ts +1 -1
- package/dist/declarations/src/components/route-catch-all/route-catch-all.d.ts +1 -1
- package/dist/declarations/src/components/service-page-project-switcher/service-page-project-switcher.d.ts +1 -1
- package/dist/declarations/src/components/setup-flop-flip-provider/setup-flop-flip-provider.d.ts +1 -1
- package/dist/declarations/src/components/suspended-route/suspended-route.d.ts +1 -1
- package/dist/declarations/src/components/theme-switcher/new-design-release-info-dialog.d.ts +1 -1
- package/dist/declarations/src/components/theme-switcher/theme-switcher.d.ts +1 -1
- package/dist/declarations/src/components/user-settings-menu/index.d.ts +1 -1
- package/dist/declarations/src/components/user-settings-menu/user-settings-menu.d.ts +3 -3
- package/dist/declarations/src/types/generated/settings.d.ts +89 -1151
- package/dist/{error-apologizer-57a2fb57.cjs.prod.js → error-apologizer-24ad0b88.cjs.prod.js} +0 -3
- package/dist/{error-apologizer-d0409fcb.esm.js → error-apologizer-55551c07.esm.js} +0 -3
- package/dist/{error-apologizer-d20ca326.cjs.dev.js → error-apologizer-a5c03978.cjs.dev.js} +0 -3
- package/dist/{gear-300dd24c.esm.js → gear-1f381738.esm.js} +0 -2
- package/dist/{gear-2890f7fb.cjs.prod.js → gear-9b394c43.cjs.prod.js} +0 -2
- package/dist/{gear-e8014c5a.cjs.dev.js → gear-ab1f6210.cjs.dev.js} +0 -2
- package/dist/{get-mc-origin-7968e04f.cjs.prod.js → get-mc-origin-8f7a578c.cjs.prod.js} +10 -16
- package/dist/{get-mc-origin-314b77a2.cjs.dev.js → get-mc-origin-a86dff20.cjs.dev.js} +10 -16
- package/dist/{get-mc-origin-5df60933.esm.js → get-mc-origin-fecfee07.esm.js} +10 -16
- package/dist/{heart-000a023d.cjs.prod.js → heart-a6e7ccf9.cjs.dev.js} +0 -2
- package/dist/{heart-dded66b4.esm.js → heart-be7c779b.esm.js} +0 -2
- package/dist/{heart-f21b7d39.cjs.dev.js → heart-ebfab4cd.cjs.prod.js} +0 -2
- package/dist/{index-894f4596.cjs.dev.js → index-02a17607.cjs.dev.js} +241 -473
- package/dist/{index-3239484c.esm.js → index-667035b8.esm.js} +240 -472
- package/dist/{index-4e8fd5e2.cjs.prod.js → index-a03f4e81.cjs.prod.js} +237 -465
- package/dist/{list-with-search-a3302710.esm.js → list-with-search-3341bbf7.esm.js} +0 -2
- package/dist/{list-with-search-a5b72b33.cjs.prod.js → list-with-search-b5e9ae1b.cjs.dev.js} +0 -2
- package/dist/{list-with-search-ee796e9e.cjs.dev.js → list-with-search-e3ccba98.cjs.prod.js} +0 -2
- package/dist/{navbar-de19b951.cjs.prod.js → navbar-00a55ccf.cjs.prod.js} +53 -110
- package/dist/{navbar-af81c703.cjs.dev.js → navbar-1b61993a.cjs.dev.js} +53 -110
- package/dist/{navbar-614b1cce.esm.js → navbar-84dc97f9.esm.js} +53 -110
- package/dist/{new-design-release-info-dialog-629191c2.cjs.dev.js → new-design-release-info-dialog-57843832.cjs.dev.js} +0 -2
- package/dist/{new-design-release-info-dialog-879a4af8.cjs.prod.js → new-design-release-info-dialog-730137e2.cjs.prod.js} +0 -2
- package/dist/{new-design-release-info-dialog-6e19106c.esm.js → new-design-release-info-dialog-e2cd95fa.esm.js} +0 -2
- package/dist/{oidc-15d3a4c1.cjs.dev.js → oidc-4895bd80.cjs.dev.js} +13 -20
- package/dist/{oidc-callback-ab054f67.cjs.prod.js → oidc-callback-121ef6c1.cjs.prod.js} +12 -20
- package/dist/{oidc-callback-ec94dbba.esm.js → oidc-callback-cddf8bb4.esm.js} +12 -20
- package/dist/{oidc-callback-ca559a40.cjs.dev.js → oidc-callback-e60075ab.cjs.dev.js} +12 -20
- package/dist/{oidc-77115492.esm.js → oidc-d7f0409a.esm.js} +13 -20
- package/dist/{oidc-6c79100b.cjs.prod.js → oidc-da4ccc69.cjs.prod.js} +13 -20
- package/dist/{paperclip-23d1e69c.cjs.prod.js → paperclip-6f0b6ae5.cjs.prod.js} +0 -2
- package/dist/{paperclip-a61112e8.esm.js → paperclip-c76aec52.esm.js} +0 -2
- package/dist/{paperclip-d653c134.cjs.dev.js → paperclip-ec55e4a0.cjs.dev.js} +0 -2
- package/dist/{plugin-0ee6aee4.cjs.dev.js → plugin-16c01245.cjs.dev.js} +0 -2
- package/dist/{plugin-3d353a5b.esm.js → plugin-279f88cd.esm.js} +0 -2
- package/dist/{plugin-7e57f237.cjs.prod.js → plugin-f199ed20.cjs.prod.js} +0 -2
- package/dist/{project-container-8ca21a5f.cjs.dev.js → project-container-51e70095.cjs.dev.js} +21 -46
- package/dist/{project-container-493422d8.esm.js → project-container-98c2a789.esm.js} +21 -46
- package/dist/{project-container-805662a2.cjs.prod.js → project-container-e7f950b0.cjs.prod.js} +21 -45
- package/dist/{project-expired-f660e923.cjs.prod.js → project-expired-1cd4843f.cjs.prod.js} +6 -11
- package/dist/{project-expired-fe211a3d.esm.js → project-expired-513a8320.esm.js} +6 -11
- package/dist/{project-expired-d020ec6f.cjs.dev.js → project-expired-fd3efa19.cjs.dev.js} +6 -11
- package/dist/{project-not-found-b5502e08.esm.js → project-not-found-8bab15e7.esm.js} +6 -9
- package/dist/{project-not-found-46f1cd62.cjs.prod.js → project-not-found-9f21b30c.cjs.prod.js} +6 -9
- package/dist/{project-not-found-179f39e9.cjs.dev.js → project-not-found-e5eb5b7e.cjs.dev.js} +6 -9
- package/dist/{project-not-initialized-e9905ca9.cjs.dev.js → project-not-initialized-3cdb8692.cjs.dev.js} +6 -11
- package/dist/{project-not-initialized-0a4c847b.cjs.prod.js → project-not-initialized-a1a8d9dc.cjs.prod.js} +6 -11
- package/dist/{project-not-initialized-f14ed881.esm.js → project-not-initialized-a8562fd3.esm.js} +6 -11
- package/dist/{project-suspended-a1a46abb.cjs.dev.js → project-suspended-79c67f38.cjs.dev.js} +6 -10
- package/dist/{project-suspended-994f5d16.cjs.prod.js → project-suspended-8a558cb8.cjs.prod.js} +6 -10
- package/dist/{project-suspended-8e50fb5d.esm.js → project-suspended-e0fb960a.esm.js} +6 -10
- package/dist/{quick-access-4f55c2a1.cjs.dev.js → quick-access-0fb30eee.cjs.dev.js} +124 -194
- package/dist/{quick-access-9742ff95.esm.js → quick-access-8c7919d2.esm.js} +124 -194
- package/dist/{quick-access-e7d9ec95.cjs.prod.js → quick-access-ff6fee75.cjs.prod.js} +123 -191
- package/dist/{redirect-to-login-58e4614d.esm.js → redirect-to-login-02167259.esm.js} +14 -18
- package/dist/{redirect-to-login-d893ba27.cjs.prod.js → redirect-to-login-3c2a1258.cjs.prod.js} +14 -18
- package/dist/{redirect-to-login-7c89cdfd.cjs.dev.js → redirect-to-login-73396807.cjs.dev.js} +14 -18
- package/dist/{redirect-to-logout-7fa846f5.cjs.prod.js → redirect-to-logout-838758f3.cjs.prod.js} +7 -12
- package/dist/{redirect-to-logout-2967472e.esm.js → redirect-to-logout-b5c8fdbf.esm.js} +7 -12
- package/dist/{redirect-to-logout-429bb215.cjs.dev.js → redirect-to-logout-be3e139d.cjs.dev.js} +7 -12
- package/dist/{redirect-to-project-create-048efa71.cjs.prod.js → redirect-to-project-create-2266c427.cjs.prod.js} +1 -3
- package/dist/{redirect-to-project-create-f0e7b35e.cjs.dev.js → redirect-to-project-create-7b476aa6.cjs.dev.js} +1 -3
- package/dist/{redirect-to-project-create-052f293e.esm.js → redirect-to-project-create-c5323504.esm.js} +1 -3
- package/dist/{redirector-47a6be71.esm.js → redirector-368eeb0f.esm.js} +1 -8
- package/dist/{redirector-0d98f9df.cjs.dev.js → redirector-ec9fa17f.cjs.prod.js} +1 -8
- package/dist/{redirector-77ce2f5c.cjs.prod.js → redirector-f71198cc.cjs.dev.js} +1 -8
- package/dist/{requests-in-flight-loader-2d2db11b.cjs.dev.js → requests-in-flight-loader-3a40411c.cjs.dev.js} +5 -9
- package/dist/{requests-in-flight-loader-30deef32.esm.js → requests-in-flight-loader-78bce8a5.esm.js} +5 -9
- package/dist/{requests-in-flight-loader-06e4f458.cjs.prod.js → requests-in-flight-loader-d7963726.cjs.prod.js} +5 -9
- package/dist/{rocket-4b088727.esm.js → rocket-067c2f8c.esm.js} +0 -2
- package/dist/{rocket-3e3f0a98.cjs.prod.js → rocket-c6d44215.cjs.dev.js} +0 -2
- package/dist/{rocket-95b6858d.cjs.dev.js → rocket-f0bfae34.cjs.prod.js} +0 -2
- package/dist/{route-catch-all-3b490df1.cjs.prod.js → route-catch-all-293a1269.cjs.dev.js} +6 -6
- package/dist/{route-catch-all-9ac99936.cjs.dev.js → route-catch-all-373c69c6.cjs.prod.js} +6 -6
- package/dist/{route-catch-all-01cf0095.esm.js → route-catch-all-4af77675.esm.js} +6 -6
- package/dist/{service-page-project-switcher-52105f71.cjs.dev.js → service-page-project-switcher-2a4bc3ee.cjs.dev.js} +3 -4
- package/dist/{service-page-project-switcher-b1384fa6.cjs.prod.js → service-page-project-switcher-617a204e.cjs.prod.js} +3 -3
- package/dist/{service-page-project-switcher-ef6a88ea.esm.js → service-page-project-switcher-b99782a7.esm.js} +3 -4
- package/dist/{speedometer-2881cef6.cjs.prod.js → speedometer-0de260cf.cjs.prod.js} +0 -2
- package/dist/{speedometer-54f872f2.cjs.dev.js → speedometer-aedd9660.cjs.dev.js} +0 -2
- package/dist/{speedometer-08a11d5a.esm.js → speedometer-baa6ae82.esm.js} +0 -2
- package/dist/{star-52bf7a64.cjs.dev.js → star-49745c72.cjs.dev.js} +0 -2
- package/dist/{star-15244db1.esm.js → star-bd723a9c.esm.js} +0 -2
- package/dist/{star-f8502efb.cjs.prod.js → star-c11b0683.cjs.prod.js} +0 -2
- package/dist/{tag-multi-3be995ac.esm.js → tag-multi-1dee8212.esm.js} +0 -2
- package/dist/{tag-multi-1d1553b6.cjs.dev.js → tag-multi-2e7a68ec.cjs.dev.js} +0 -2
- package/dist/{tag-multi-f9acb1c2.cjs.prod.js → tag-multi-f8d9c9e6.cjs.prod.js} +0 -2
- package/dist/{tree-structure-c8753526.esm.js → tree-structure-0a1dc6bf.esm.js} +0 -2
- package/dist/{tree-structure-4650688d.cjs.dev.js → tree-structure-690366f9.cjs.prod.js} +0 -2
- package/dist/{tree-structure-f24ee3f6.cjs.prod.js → tree-structure-8c974c7a.cjs.dev.js} +0 -2
- package/dist/{use-applications-menu-a5568a7d.cjs.prod.js → use-applications-menu-2046cce4.cjs.dev.js} +30 -40
- package/dist/{use-applications-menu-3e85b058.cjs.dev.js → use-applications-menu-84a888d7.cjs.prod.js} +30 -40
- package/dist/{use-applications-menu-824f1519.esm.js → use-applications-menu-daf4a744.esm.js} +30 -40
- package/dist/{use-is-served-by-proxy-499bfa16.esm.js → use-is-served-by-proxy-77984220.esm.js} +0 -2
- package/dist/{use-is-served-by-proxy-2b4916e5.cjs.dev.js → use-is-served-by-proxy-845cace5.cjs.prod.js} +0 -2
- package/dist/{use-is-served-by-proxy-51e76976.cjs.prod.js → use-is-served-by-proxy-ed411f45.cjs.dev.js} +0 -2
- package/dist/{user-filled-2e6cb25e.cjs.dev.js → user-filled-58af1ae4.cjs.prod.js} +0 -2
- package/dist/{user-filled-815b49a0.cjs.prod.js → user-filled-5dd7a51a.cjs.dev.js} +0 -2
- package/dist/{user-filled-2dc4e79e.esm.js → user-filled-d40a7e17.esm.js} +0 -2
- package/dist/{user-settings-menu-1e5736ab.esm.js → user-settings-menu-b8ecc868.esm.js} +16 -53
- package/dist/{user-settings-menu-92a5cb53.cjs.prod.js → user-settings-menu-c50b95e4.cjs.prod.js} +16 -52
- package/dist/{user-settings-menu-615d91e4.cjs.dev.js → user-settings-menu-fe393647.cjs.dev.js} +16 -53
- package/dist/{version-tracker-5f6c37e6.cjs.dev.js → version-tracker-3b9eb5c6.cjs.dev.js} +5 -5
- package/dist/{version-tracker-73a18ff9.cjs.prod.js → version-tracker-4ad14ed3.cjs.prod.js} +5 -5
- package/dist/{version-tracker-3e5d5525.esm.js → version-tracker-f2e3185f.esm.js} +5 -5
- package/dist/{world-c5ea311a.esm.js → world-1b0e72fc.esm.js} +0 -2
- package/dist/{world-973090a5.cjs.dev.js → world-bfd04f52.cjs.dev.js} +0 -2
- package/dist/{world-e1f9dbf8.cjs.prod.js → world-f921d80c.cjs.prod.js} +0 -2
- package/package.json +41 -27
- package/ssr/dist/commercetools-frontend-application-shell-ssr.cjs.dev.js +2 -2
- package/ssr/dist/commercetools-frontend-application-shell-ssr.cjs.prod.js +2 -2
- package/ssr/dist/commercetools-frontend-application-shell-ssr.esm.js +2 -2
- package/test-utils/dist/commercetools-frontend-application-shell-test-utils.cjs.dev.js +78 -112
- package/test-utils/dist/commercetools-frontend-application-shell-test-utils.cjs.prod.js +78 -112
- package/test-utils/dist/commercetools-frontend-application-shell-test-utils.esm.js +78 -112
|
@@ -21,7 +21,7 @@ var applicationShellConnectors = require('@commercetools-frontend/application-sh
|
|
|
21
21
|
var constants = require('@commercetools-frontend/constants');
|
|
22
22
|
var permissions$1 = require('@commercetools-frontend/permissions');
|
|
23
23
|
var sdk = require('@commercetools-frontend/sdk');
|
|
24
|
-
var useIsServedByProxy = require('./use-is-served-by-proxy-
|
|
24
|
+
var useIsServedByProxy = require('./use-is-served-by-proxy-ed411f45.cjs.dev.js');
|
|
25
25
|
var _Object$keys = require('@babel/runtime-corejs3/core-js-stable/object/keys');
|
|
26
26
|
var _Object$getOwnPropertySymbols = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols');
|
|
27
27
|
var _Object$getOwnPropertyDescriptor = require('@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor');
|
|
@@ -40,11 +40,11 @@ var designSystem = require('@commercetools-uikit/design-system');
|
|
|
40
40
|
var icons = require('@commercetools-uikit/icons');
|
|
41
41
|
var LoadingSpinner = require('@commercetools-uikit/loading-spinner');
|
|
42
42
|
var jsxRuntime = require('@emotion/react/jsx-runtime');
|
|
43
|
-
var dist_commercetoolsFrontendApplicationShell = require('./index-
|
|
43
|
+
var dist_commercetoolsFrontendApplicationShell = require('./index-02a17607.cjs.dev.js');
|
|
44
44
|
var _Promise = require('@babel/runtime-corejs3/core-js-stable/promise');
|
|
45
45
|
var _reduceInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/reduce');
|
|
46
46
|
var _findInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/find');
|
|
47
|
-
require('./configure-apollo-
|
|
47
|
+
require('./configure-apollo-de2b9aa2.cjs.dev.js');
|
|
48
48
|
require('@babel/runtime-corejs3/core-js-stable/object/entries');
|
|
49
49
|
require('@babel/runtime-corejs3/core-js-stable/reflect/has');
|
|
50
50
|
require('@reduxjs/toolkit');
|
|
@@ -54,7 +54,7 @@ require('redux-thunk');
|
|
|
54
54
|
require('@commercetools-frontend/notifications');
|
|
55
55
|
require('@babel/runtime-corejs3/core-js-stable/instance/index-of');
|
|
56
56
|
require('@commercetools-frontend/sentry');
|
|
57
|
-
require('./constants-
|
|
57
|
+
require('./constants-e51cdcc0.cjs.dev.js');
|
|
58
58
|
require('@commercetools-frontend/react-notifications');
|
|
59
59
|
require('redux-logger');
|
|
60
60
|
require('@babel/runtime-corejs3/core-js-stable/url');
|
|
@@ -100,7 +100,7 @@ require('@flopflip/http-adapter');
|
|
|
100
100
|
require('@flopflip/launchdarkly-adapter');
|
|
101
101
|
require('react-redux');
|
|
102
102
|
require('lodash/upperFirst');
|
|
103
|
-
require('./oidc-
|
|
103
|
+
require('./oidc-4895bd80.cjs.dev.js');
|
|
104
104
|
require('@commercetools-uikit/design-system/materials/resets.css');
|
|
105
105
|
require('@commercetools-frontend/actions-global');
|
|
106
106
|
require('@commercetools-frontend/application-config/ssr');
|
|
@@ -134,7 +134,6 @@ var _reduceInstanceProperty__default = /*#__PURE__*/_interopDefault(_reduceInsta
|
|
|
134
134
|
var _findInstanceProperty__default = /*#__PURE__*/_interopDefault(_findInstanceProperty);
|
|
135
135
|
|
|
136
136
|
function _EMOTION_STRINGIFIED_CSS_ERROR__$1() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
|
|
137
|
-
|
|
138
137
|
var _ref$1 = process.env.NODE_ENV === "production" ? {
|
|
139
138
|
name: "13n9jnb",
|
|
140
139
|
styles: "align-self:center;>*{display:block;}"
|
|
@@ -144,7 +143,6 @@ var _ref$1 = process.env.NODE_ENV === "production" ? {
|
|
|
144
143
|
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1dGxlci1jb21tYW5kLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrRGdCIiwiZmlsZSI6ImJ1dGxlci1jb21tYW5kLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vdXNlRXZlbnRIYW5kbGVyIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IHsgY3VzdG9tUHJvcGVydGllcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2Rlc2lnbi1zeXN0ZW0nO1xuaW1wb3J0IHsgQW5nbGVUaGluUmlnaHRJY29uIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvaWNvbnMnO1xuaW1wb3J0IHR5cGUgeyBDb21tYW5kIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG50eXBlIFByb3BzID0ge1xuICBjb21tYW5kOiBDb21tYW5kO1xuICBpc1NlbGVjdGVkPzogYm9vbGVhbjtcbiAgb25DbGljazogTW91c2VFdmVudEhhbmRsZXI8SFRNTERpdkVsZW1lbnQ+O1xuICBvbk1vdXNlRW50ZXI6IE1vdXNlRXZlbnRIYW5kbGVyPEhUTUxEaXZFbGVtZW50Pjtcbn07XG5cbmNvbnN0IEJ1dGxlckNvbW1hbmQgPSAocHJvcHM6IFByb3BzKSA9PiAoXG4gIDxkaXZcbiAgICBrZXk9e3Byb3BzLmNvbW1hbmQuaWR9XG4gICAgZGF0YS10ZXN0aWQ9e2BxdWljay1hY2Nlc3MtcmVzdWx0KCR7cHJvcHMuY29tbWFuZC5pZH0pYH1cbiAgICBhcmlhLWN1cnJlbnQ9e3Byb3BzLmlzU2VsZWN0ZWQgPT09IHRydWUgPyAndHJ1ZScgOiAnZmFsc2UnfVxuICAgIGNzcz17Y3NzYFxuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIHBhZGRpbmc6IDAgJHtjdXN0b21Qcm9wZXJ0aWVzLnNwYWNpbmdNfTtcbiAgICAgIGhlaWdodDogMzZweDtcbiAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgIGZvbnQtd2VpZ2h0OiAyMDA7XG4gICAgICBsaW5lLWhlaWdodDogMzZweDtcbiAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgICR7cHJvcHMuaXNTZWxlY3RlZCA9PT0gdHJ1ZVxuICAgICAgICA/IGBcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7Y3VzdG9tUHJvcGVydGllcy5jb2xvckFjY2VudH07XG4gICAgICAgICAgICBjb2xvcjogJHtjdXN0b21Qcm9wZXJ0aWVzLmNvbG9yU3VyZmFjZX07XG4gICAgICAgICAgYFxuICAgICAgICA6ICcnfVxuICAgIGB9XG4gICAgb25Nb3VzZUVudGVyPXtwcm9wcy5vbk1vdXNlRW50ZXJ9XG4gICAgb25DbGljaz17cHJvcHMub25DbGlja31cbiAgPlxuICAgIDxkaXZcbiAgICAgIGNzcz17Y3NzYFxuICAgICAgICBmbGV4OiAxIGF1dG87XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgYH1cbiAgICA+XG4gICAgICB7cHJvcHMuY29tbWFuZC50ZXh0fVxuICAgIDwvZGl2PlxuICAgIHsoKEFycmF5LmlzQXJyYXkocHJvcHMuY29tbWFuZC5zdWJDb21tYW5kcykgJiZcbiAgICAgIHByb3BzLmNvbW1hbmQuc3ViQ29tbWFuZHMubGVuZ3RoID4gMCkgfHxcbiAgICAgIHR5cGVvZiBwcm9wcy5jb21tYW5kLnN1YkNvbW1hbmRzID09PSAnZnVuY3Rpb24nKSAmJiAoXG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgICAgICAgICA+ICoge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgfVxuICAgICAgICBgfVxuICAgICAgPlxuICAgICAgICA8QW5nbGVUaGluUmlnaHRJY29uXG4gICAgICAgICAgc2l6ZT1cIm1lZGl1bVwiXG4gICAgICAgICAgY29sb3I9e3Byb3BzLmlzU2VsZWN0ZWQgPyAnc3VyZmFjZScgOiAnbmV1dHJhbDYwJ31cbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICl9XG4gIDwvZGl2PlxuKTtcblxuQnV0bGVyQ29tbWFuZC5kaXNwbGF5TmFtZSA9ICdCdXRsZXJDb21tYW5kJztcblxuZXhwb3J0IGRlZmF1bHQgQnV0bGVyQ29tbWFuZDtcbiJdfQ== */",
|
|
145
144
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__$1
|
|
146
145
|
};
|
|
147
|
-
|
|
148
146
|
var _ref2 = process.env.NODE_ENV === "production" ? {
|
|
149
147
|
name: "lhzw0z",
|
|
150
148
|
styles: "flex:1 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis"
|
|
@@ -154,10 +152,8 @@ var _ref2 = process.env.NODE_ENV === "production" ? {
|
|
|
154
152
|
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1dGxlci1jb21tYW5kLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFxQ2MiLCJmaWxlIjoiYnV0bGVyLWNvbW1hbmQudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW91c2VFdmVudEhhbmRsZXIgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgeyBjdXN0b21Qcm9wZXJ0aWVzIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvZGVzaWduLXN5c3RlbSc7XG5pbXBvcnQgeyBBbmdsZVRoaW5SaWdodEljb24gfSBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9pY29ucyc7XG5pbXBvcnQgdHlwZSB7IENvbW1hbmQgfSBmcm9tICcuLi90eXBlcyc7XG5cbnR5cGUgUHJvcHMgPSB7XG4gIGNvbW1hbmQ6IENvbW1hbmQ7XG4gIGlzU2VsZWN0ZWQ/OiBib29sZWFuO1xuICBvbkNsaWNrOiBNb3VzZUV2ZW50SGFuZGxlcjxIVE1MRGl2RWxlbWVudD47XG4gIG9uTW91c2VFbnRlcjogTW91c2VFdmVudEhhbmRsZXI8SFRNTERpdkVsZW1lbnQ+O1xufTtcblxuY29uc3QgQnV0bGVyQ29tbWFuZCA9IChwcm9wczogUHJvcHMpID0+IChcbiAgPGRpdlxuICAgIGtleT17cHJvcHMuY29tbWFuZC5pZH1cbiAgICBkYXRhLXRlc3RpZD17YHF1aWNrLWFjY2Vzcy1yZXN1bHQoJHtwcm9wcy5jb21tYW5kLmlkfSlgfVxuICAgIGFyaWEtY3VycmVudD17cHJvcHMuaXNTZWxlY3RlZCA9PT0gdHJ1ZSA/ICd0cnVlJyA6ICdmYWxzZSd9XG4gICAgY3NzPXtjc3NgXG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgcGFkZGluZzogMCAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ019O1xuICAgICAgaGVpZ2h0OiAzNnB4O1xuICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgZm9udC13ZWlnaHQ6IDIwMDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAzNnB4O1xuICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgJHtwcm9wcy5pc1NlbGVjdGVkID09PSB0cnVlXG4gICAgICAgID8gYFxuICAgICAgICAgICAgYmFja2dyb3VuZDogJHtjdXN0b21Qcm9wZXJ0aWVzLmNvbG9yQWNjZW50fTtcbiAgICAgICAgICAgIGNvbG9yOiAke2N1c3RvbVByb3BlcnRpZXMuY29sb3JTdXJmYWNlfTtcbiAgICAgICAgICBgXG4gICAgICAgIDogJyd9XG4gICAgYH1cbiAgICBvbk1vdXNlRW50ZXI9e3Byb3BzLm9uTW91c2VFbnRlcn1cbiAgICBvbkNsaWNrPXtwcm9wcy5vbkNsaWNrfVxuICA+XG4gICAgPGRpdlxuICAgICAgY3NzPXtjc3NgXG4gICAgICAgIGZsZXg6IDEgYXV0bztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICBgfVxuICAgID5cbiAgICAgIHtwcm9wcy5jb21tYW5kLnRleHR9XG4gICAgPC9kaXY+XG4gICAgeygoQXJyYXkuaXNBcnJheShwcm9wcy5jb21tYW5kLnN1YkNvbW1hbmRzKSAmJlxuICAgICAgcHJvcHMuY29tbWFuZC5zdWJDb21tYW5kcy5sZW5ndGggPiAwKSB8fFxuICAgICAgdHlwZW9mIHByb3BzLmNvbW1hbmQuc3ViQ29tbWFuZHMgPT09ICdmdW5jdGlvbicpICYmIChcbiAgICAgIDxkaXZcbiAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICAgID4gKiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICB9XG4gICAgICAgIGB9XG4gICAgICA+XG4gICAgICAgIDxBbmdsZVRoaW5SaWdodEljb25cbiAgICAgICAgICBzaXplPVwibWVkaXVtXCJcbiAgICAgICAgICBjb2xvcj17cHJvcHMuaXNTZWxlY3RlZCA/ICdzdXJmYWNlJyA6ICduZXV0cmFsNjAnfVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgKX1cbiAgPC9kaXY+XG4pO1xuXG5CdXRsZXJDb21tYW5kLmRpc3BsYXlOYW1lID0gJ0J1dGxlckNvbW1hbmQnO1xuXG5leHBvcnQgZGVmYXVsdCBCdXRsZXJDb21tYW5kO1xuIl19 */",
|
|
155
153
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__$1
|
|
156
154
|
};
|
|
157
|
-
|
|
158
155
|
const ButlerCommand = props => {
|
|
159
156
|
var _context;
|
|
160
|
-
|
|
161
157
|
return jsxRuntime.jsxs("div", {
|
|
162
158
|
"data-testid": "quick-access-result(".concat(props.command.id, ")"),
|
|
163
159
|
"aria-current": props.isSelected === true ? 'true' : 'false',
|
|
@@ -176,7 +172,6 @@ const ButlerCommand = props => {
|
|
|
176
172
|
})]
|
|
177
173
|
}, props.command.id);
|
|
178
174
|
};
|
|
179
|
-
|
|
180
175
|
ButlerCommand.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
181
176
|
command: _pt__default["default"].any.isRequired,
|
|
182
177
|
isSelected: _pt__default["default"].bool,
|
|
@@ -435,39 +430,28 @@ var messages = reactIntl.defineMessages({
|
|
|
435
430
|
});
|
|
436
431
|
|
|
437
432
|
var _templateObject$3, _templateObject2$2;
|
|
438
|
-
|
|
439
433
|
function ownKeys(object, enumerableOnly) { var keys = _Object$keys__default["default"](object); if (_Object$getOwnPropertySymbols__default["default"]) { var symbols = _Object$getOwnPropertySymbols__default["default"](object); enumerableOnly && (symbols = _filterInstanceProperty__default["default"](symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor__default["default"](object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
440
|
-
|
|
441
434
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context12, _context13; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty__default["default"](_context12 = ownKeys(Object(source), !0)).call(_context12, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](target, _Object$getOwnPropertyDescriptors__default["default"](source)) : _forEachInstanceProperty__default["default"](_context13 = ownKeys(Object(source))).call(_context13, function (key) { _Object$defineProperty__default["default"](target, key, _Object$getOwnPropertyDescriptor__default["default"](source, key)); }); } return target; }
|
|
442
|
-
|
|
443
435
|
function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
|
|
444
|
-
|
|
445
436
|
const isSelectAllCombo = event => event.key === 'a' && event.metaKey && !event.ctrlKey && !event.altKey && !event.shiftKey;
|
|
446
|
-
|
|
447
437
|
const isCloseCombo = event => event.key === 'Escape' && !event.metaKey && !event.ctrlKey && !event.altKey && !event.shiftKey;
|
|
448
|
-
|
|
449
438
|
const getPlatform = () => {
|
|
450
439
|
var _context, _context2, _context3, _context4;
|
|
451
|
-
|
|
452
440
|
if (_includesInstanceProperty__default["default"](_context = navigator.appVersion).call(_context, 'Win')) return 'windows';
|
|
453
441
|
if (_includesInstanceProperty__default["default"](_context2 = navigator.appVersion).call(_context2, 'Mac')) return 'macos';
|
|
454
442
|
if (_includesInstanceProperty__default["default"](_context3 = navigator.appVersion).call(_context3, 'X11')) return 'unix';
|
|
455
443
|
if (_includesInstanceProperty__default["default"](_context4 = navigator.appVersion).call(_context4, 'Linux')) return 'linux';
|
|
456
444
|
return null;
|
|
457
445
|
};
|
|
458
|
-
|
|
459
446
|
const hasNewWindowModifier = event => {
|
|
460
447
|
const platform = getPlatform();
|
|
461
|
-
|
|
462
448
|
switch (platform) {
|
|
463
449
|
case 'macos':
|
|
464
450
|
return event.metaKey;
|
|
465
|
-
|
|
466
451
|
default:
|
|
467
452
|
return event.ctrlKey;
|
|
468
453
|
}
|
|
469
454
|
};
|
|
470
|
-
|
|
471
455
|
const shakeAnimation = react.keyframes(_templateObject$3 || (_templateObject$3 = _taggedTemplateLiteral(["\n from,\n to {\n transform: translate3d(0, 0, 0);\n }\n\n 14%,\n 42%,\n 70% {\n transform: translate3d(-3px, 0, 0);\n }\n\n 28%,\n 56%,\n 84% {\n transform: translate3d(3px, 0, 0);\n }\n"])));
|
|
472
456
|
const initialState = {
|
|
473
457
|
hasNetworkError: false,
|
|
@@ -479,49 +463,41 @@ const initialState = {
|
|
|
479
463
|
results: [],
|
|
480
464
|
stack: []
|
|
481
465
|
};
|
|
482
|
-
|
|
483
466
|
const reducer = function () {
|
|
484
467
|
var _context5;
|
|
485
|
-
|
|
486
468
|
let state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
|
|
487
469
|
let action = arguments.length > 1 ? arguments[1] : undefined;
|
|
488
|
-
|
|
489
470
|
switch (action.type) {
|
|
490
471
|
case 'networkError':
|
|
491
472
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
492
473
|
hasNetworkError: action.payload
|
|
493
474
|
});
|
|
494
|
-
|
|
495
475
|
case 'loading':
|
|
496
476
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
497
477
|
isLoading: action.payload
|
|
498
478
|
});
|
|
499
|
-
|
|
500
479
|
case 'selectedResult':
|
|
501
480
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
502
481
|
selectedResult: action.payload
|
|
503
482
|
});
|
|
504
|
-
|
|
505
483
|
case 'incrementSelectedResult':
|
|
506
484
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
507
485
|
selectedResult: state.selectedResult === state.results.length - 1 ? 0 : state.selectedResult + 1,
|
|
508
486
|
enableHistory: false
|
|
509
487
|
});
|
|
510
|
-
|
|
511
488
|
case 'decrementSelectedResult':
|
|
512
489
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
513
490
|
selectedResult: state.selectedResult < 1 ? state.results.length - 1 : state.selectedResult - 1,
|
|
514
491
|
enableHistory: false
|
|
515
492
|
});
|
|
516
|
-
|
|
517
493
|
case 'pickCommandFromHistory':
|
|
518
494
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
519
495
|
selectedResult: 0,
|
|
520
496
|
searchText: action.payload.searchText,
|
|
521
497
|
results: action.payload.results,
|
|
522
|
-
stack: []
|
|
498
|
+
stack: []
|
|
499
|
+
// The history does not get changed here, it will be changed along
|
|
523
500
|
// with the regular flow.
|
|
524
|
-
|
|
525
501
|
});
|
|
526
502
|
|
|
527
503
|
case 'setNextCommands':
|
|
@@ -535,7 +511,6 @@ const reducer = function () {
|
|
|
535
511
|
enableHistory: false,
|
|
536
512
|
results: action.payload.results
|
|
537
513
|
});
|
|
538
|
-
|
|
539
514
|
case 'setPrevCommands':
|
|
540
515
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
541
516
|
searchText: action.payload.searchText,
|
|
@@ -545,7 +520,6 @@ const reducer = function () {
|
|
|
545
520
|
// omit last item
|
|
546
521
|
stack: _sliceInstanceProperty__default["default"](_context5 = state.stack).call(_context5, 0, -1)
|
|
547
522
|
});
|
|
548
|
-
|
|
549
523
|
case 'searchText':
|
|
550
524
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
551
525
|
searchText: action.payload,
|
|
@@ -553,7 +527,6 @@ const reducer = function () {
|
|
|
553
527
|
// are tempted to retry
|
|
554
528
|
hasNetworkError: action.payload.length > 0 && state.hasNetworkError
|
|
555
529
|
});
|
|
556
|
-
|
|
557
530
|
case 'setSearchTextResults':
|
|
558
531
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
559
532
|
results: action.payload,
|
|
@@ -561,28 +534,23 @@ const reducer = function () {
|
|
|
561
534
|
enableHistory: true,
|
|
562
535
|
stack: []
|
|
563
536
|
});
|
|
564
|
-
|
|
565
537
|
case 'resetSearchText':
|
|
566
538
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
567
539
|
searchText: '',
|
|
568
540
|
results: [],
|
|
569
541
|
selectedResult: -1
|
|
570
542
|
});
|
|
571
|
-
|
|
572
543
|
case 'resetResultsWhenClosing':
|
|
573
544
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
574
545
|
selectedResult: -1,
|
|
575
546
|
enableHistory: true
|
|
576
547
|
});
|
|
577
|
-
|
|
578
548
|
case 'reset':
|
|
579
549
|
return initialState;
|
|
580
|
-
|
|
581
550
|
default:
|
|
582
551
|
return state;
|
|
583
552
|
}
|
|
584
553
|
};
|
|
585
|
-
|
|
586
554
|
var _ref = process.env.NODE_ENV === "production" ? {
|
|
587
555
|
name: "zjik7",
|
|
588
556
|
styles: "display:flex"
|
|
@@ -592,15 +560,12 @@ var _ref = process.env.NODE_ENV === "production" ? {
|
|
|
592
560
|
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1dGxlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZ25Ca0IiLCJmaWxlIjoiYnV0bGVyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEtleWJvYXJkRXZlbnRIYW5kbGVyLFxuICBDaGFuZ2VFdmVudEhhbmRsZXIsXG4gIEtleWJvYXJkRXZlbnQsXG4gIE1vdXNlRXZlbnRIYW5kbGVyLFxuICBNb3VzZUV2ZW50LFxuICB1c2VSZWR1Y2VyLFxuICB1c2VSZWYsXG4gIHVzZUNhbGxiYWNrLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjc3MsIGtleWZyYW1lcywgQ2xhc3NOYW1lcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBGdXNlIGZyb20gJ2Z1c2UuanMnO1xuaW1wb3J0IGxhc3QgZnJvbSAnbG9kYXNoL2xhc3QnO1xuaW1wb3J0IHsgRm9ybWF0dGVkTWVzc2FnZSwgdXNlSW50bCB9IGZyb20gJ3JlYWN0LWludGwnO1xuaW1wb3J0IHsgY3VzdG9tUHJvcGVydGllcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2Rlc2lnbi1zeXN0ZW0nO1xuaW1wb3J0IHsgU2VhcmNoSWNvbiB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2ljb25zJztcbmltcG9ydCBMb2FkaW5nU3Bpbm5lciBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9sb2FkaW5nLXNwaW5uZXInO1xuaW1wb3J0IEJ1dGxlckNvbW1hbmQgZnJvbSAnLi4vYnV0bGVyLWNvbW1hbmQnO1xuaW1wb3J0IEJ1dGxlckNvbnRhaW5lciBmcm9tICcuLi9idXRsZXItY29udGFpbmVyJztcbmltcG9ydCBtZXNzYWdlcyBmcm9tICcuLi9tZXNzYWdlcyc7XG5pbXBvcnQgdHlwZSB7XG4gIENvbW1hbmQsXG4gIFNlYXJjaFRleHQsXG4gIFNlbGVjdGVkUmVzdWx0LFxuICBTdGFjayxcbiAgSGlzdG9yeUVudHJ5LFxufSBmcm9tICcuLi90eXBlcyc7XG5cbmNvbnN0IGlzU2VsZWN0QWxsQ29tYm8gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+XG4gIGV2ZW50LmtleSA9PT0gJ2EnICYmXG4gIGV2ZW50Lm1ldGFLZXkgJiZcbiAgIWV2ZW50LmN0cmxLZXkgJiZcbiAgIWV2ZW50LmFsdEtleSAmJlxuICAhZXZlbnQuc2hpZnRLZXk7XG5cbmNvbnN0IGlzQ2xvc2VDb21ibyA9IChldmVudDogS2V5Ym9hcmRFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT5cbiAgZXZlbnQua2V5ID09PSAnRXNjYXBlJyAmJlxuICAhZXZlbnQubWV0YUtleSAmJlxuICAhZXZlbnQuY3RybEtleSAmJlxuICAhZXZlbnQuYWx0S2V5ICYmXG4gICFldmVudC5zaGlmdEtleTtcblxuY29uc3QgZ2V0UGxhdGZvcm0gPSAoKSA9PiB7XG4gIGlmIChuYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmNsdWRlcygnV2luJykpIHJldHVybiAnd2luZG93cyc7XG4gIGlmIChuYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmNsdWRlcygnTWFjJykpIHJldHVybiAnbWFjb3MnO1xuICBpZiAobmF2aWdhdG9yLmFwcFZlcnNpb24uaW5jbHVkZXMoJ1gxMScpKSByZXR1cm4gJ3VuaXgnO1xuICBpZiAobmF2aWdhdG9yLmFwcFZlcnNpb24uaW5jbHVkZXMoJ0xpbnV4JykpIHJldHVybiAnbGludXgnO1xuXG4gIHJldHVybiBudWxsO1xufTtcblxuY29uc3QgaGFzTmV3V2luZG93TW9kaWZpZXIgPSAoXG4gIGV2ZW50OiBLZXlib2FyZEV2ZW50PEhUTUxFbGVtZW50PiB8IE1vdXNlRXZlbnQ8SFRNTEVsZW1lbnQ+XG4pID0+IHtcbiAgY29uc3QgcGxhdGZvcm0gPSBnZXRQbGF0Zm9ybSgpO1xuICBzd2l0Y2ggKHBsYXRmb3JtKSB7XG4gICAgY2FzZSAnbWFjb3MnOlxuICAgICAgcmV0dXJuIGV2ZW50Lm1ldGFLZXk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBldmVudC5jdHJsS2V5O1xuICB9XG59O1xuXG5jb25zdCBzaGFrZUFuaW1hdGlvbiA9IGtleWZyYW1lc2BcbiAgZnJvbSxcbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIH1cblxuICAxNCUsXG4gIDQyJSxcbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0zcHgsIDAsIDApO1xuICB9XG5cbiAgMjglLFxuICA1NiUsXG4gIDg0JSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgzcHgsIDAsIDApO1xuICB9XG5gO1xuXG50eXBlIFN0YXRlID0ge1xuICBoYXNOZXR3b3JrRXJyb3I6IGJvb2xlYW47XG4gIGlzTG9hZGluZzogYm9vbGVhbjtcbiAgc2VhcmNoVGV4dDogU2VhcmNoVGV4dDtcbiAgc2VsZWN0ZWRSZXN1bHQ6IFNlbGVjdGVkUmVzdWx0O1xuICAvLyBVc2VkIGZvciBVWCB3aGVuIGJyb3dzaW5nIHRocm91Z2ggaGlzdG9yeVxuICBlbmFibGVIaXN0b3J5OiBib29sZWFuO1xuICByZXN1bHRzOiBDb21tYW5kW107XG4gIHN0YWNrOiBTdGFja1tdO1xufTtcbnR5cGUgQWN0aW9uID1cbiAgfCB7IHR5cGU6ICduZXR3b3JrRXJyb3InOyBwYXlsb2FkOiBib29sZWFuIH1cbiAgfCB7IHR5cGU6ICdsb2FkaW5nJzsgcGF5bG9hZDogYm9vbGVhbiB9XG4gIHwgeyB0eXBlOiAnc2VsZWN0ZWRSZXN1bHQnOyBwYXlsb2FkOiBudW1iZXIgfVxuICB8IHsgdHlwZTogJ2luY3JlbWVudFNlbGVjdGVkUmVzdWx0JyB9XG4gIHwgeyB0eXBlOiAnZGVjcmVtZW50U2VsZWN0ZWRSZXN1bHQnIH1cbiAgfCB7XG4gICAgICB0eXBlOiAncGlja0NvbW1hbmRGcm9tSGlzdG9yeSc7XG4gICAgICBwYXlsb2FkOiB7IHNlYXJjaFRleHQ6IFNlYXJjaFRleHQ7IHJlc3VsdHM6IENvbW1hbmRbXSB9O1xuICAgIH1cbiAgfCB7IHR5cGU6ICdzZXROZXh0Q29tbWFuZHMnOyBwYXlsb2FkOiB7IHJlc3VsdHM6IENvbW1hbmRbXSB9IH1cbiAgfCB7XG4gICAgICB0eXBlOiAnc2V0UHJldkNvbW1hbmRzJztcbiAgICAgIHBheWxvYWQ6IHsgc2VhcmNoVGV4dDogU2VhcmNoVGV4dDsgcmVzdWx0czogQ29tbWFuZFtdIH07XG4gICAgfVxuICB8IHsgdHlwZTogJ3NlYXJjaFRleHQnOyBwYXlsb2FkOiBzdHJpbmcgfVxuICB8IHsgdHlwZTogJ3NldFNlYXJjaFRleHRSZXN1bHRzJzsgcGF5bG9hZDogQ29tbWFuZFtdIH1cbiAgfCB7IHR5cGU6ICdyZXNldFNlYXJjaFRleHQnIH1cbiAgfCB7IHR5cGU6ICdyZXNldFJlc3VsdHNXaGVuQ2xvc2luZycgfVxuICB8IHsgdHlwZTogJ3Jlc2V0JyB9O1xuY29uc3QgaW5pdGlhbFN0YXRlID0ge1xuICBoYXNOZXR3b3JrRXJyb3I6IGZhbHNlLFxuICBpc0xvYWRpbmc6IGZhbHNlLFxuICBzZWFyY2hUZXh0OiAnJyxcbiAgc2VsZWN0ZWRSZXN1bHQ6IC0xLFxuICAvLyBVc2VkIGZvciBVWCB3aGVuIGJyb3dzaW5nIHRocm91Z2ggaGlzdG9yeVxuICBlbmFibGVIaXN0b3J5OiB0cnVlLFxuICByZXN1bHRzOiBbXSxcbiAgc3RhY2s6IFtdLFxufTtcbmNvbnN0IHJlZHVjZXIgPSAoc3RhdGU6IFN0YXRlID0gaW5pdGlhbFN0YXRlLCBhY3Rpb246IEFjdGlvbik6IFN0YXRlID0+IHtcbiAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICAgIGNhc2UgJ25ldHdvcmtFcnJvcic6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgaGFzTmV0d29ya0Vycm9yOiBhY3Rpb24ucGF5bG9hZCB9O1xuICAgIGNhc2UgJ2xvYWRpbmcnOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGlzTG9hZGluZzogYWN0aW9uLnBheWxvYWQgfTtcbiAgICBjYXNlICdzZWxlY3RlZFJlc3VsdCc6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgc2VsZWN0ZWRSZXN1bHQ6IGFjdGlvbi5wYXlsb2FkIH07XG4gICAgY2FzZSAnaW5jcmVtZW50U2VsZWN0ZWRSZXN1bHQnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHNlbGVjdGVkUmVzdWx0OlxuICAgICAgICAgIHN0YXRlLnNlbGVjdGVkUmVzdWx0ID09PSBzdGF0ZS5yZXN1bHRzLmxlbmd0aCAtIDFcbiAgICAgICAgICAgID8gMFxuICAgICAgICAgICAgOiBzdGF0ZS5zZWxlY3RlZFJlc3VsdCArIDEsXG4gICAgICAgIGVuYWJsZUhpc3Rvcnk6IGZhbHNlLFxuICAgICAgfTtcbiAgICBjYXNlICdkZWNyZW1lbnRTZWxlY3RlZFJlc3VsdCc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgc2VsZWN0ZWRSZXN1bHQ6XG4gICAgICAgICAgc3RhdGUuc2VsZWN0ZWRSZXN1bHQgPCAxXG4gICAgICAgICAgICA/IHN0YXRlLnJlc3VsdHMubGVuZ3RoIC0gMVxuICAgICAgICAgICAgOiBzdGF0ZS5zZWxlY3RlZFJlc3VsdCAtIDEsXG4gICAgICAgIGVuYWJsZUhpc3Rvcnk6IGZhbHNlLFxuICAgICAgfTtcbiAgICBjYXNlICdwaWNrQ29tbWFuZEZyb21IaXN0b3J5JzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBzZWxlY3RlZFJlc3VsdDogMCxcbiAgICAgICAgc2VhcmNoVGV4dDogYWN0aW9uLnBheWxvYWQuc2VhcmNoVGV4dCxcbiAgICAgICAgcmVzdWx0czogYWN0aW9uLnBheWxvYWQucmVzdWx0cyxcbiAgICAgICAgc3RhY2s6IFtdLFxuICAgICAgICAvLyBUaGUgaGlzdG9yeSBkb2VzIG5vdCBnZXQgY2hhbmdlZCBoZXJlLCBpdCB3aWxsIGJlIGNoYW5nZWQgYWxvbmdcbiAgICAgICAgLy8gd2l0aCB0aGUgcmVndWxhciBmbG93LlxuICAgICAgfTtcbiAgICBjYXNlICdzZXROZXh0Q29tbWFuZHMnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHN0YWNrOiBbXG4gICAgICAgICAgLi4uc3RhdGUuc3RhY2ssXG4gICAgICAgICAge1xuICAgICAgICAgICAgc2VhcmNoVGV4dDogc3RhdGUuc2VhcmNoVGV4dCxcbiAgICAgICAgICAgIHJlc3VsdHM6IHN0YXRlLnJlc3VsdHMsXG4gICAgICAgICAgICBzZWxlY3RlZFJlc3VsdDogc3RhdGUuc2VsZWN0ZWRSZXN1bHQsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgc2VsZWN0ZWRSZXN1bHQ6IDAsXG4gICAgICAgIGVuYWJsZUhpc3Rvcnk6IGZhbHNlLFxuICAgICAgICByZXN1bHRzOiBhY3Rpb24ucGF5bG9hZC5yZXN1bHRzLFxuICAgICAgfTtcbiAgICBjYXNlICdzZXRQcmV2Q29tbWFuZHMnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHNlYXJjaFRleHQ6IGFjdGlvbi5wYXlsb2FkLnNlYXJjaFRleHQsXG4gICAgICAgIHJlc3VsdHM6IGFjdGlvbi5wYXlsb2FkLnJlc3VsdHMsXG4gICAgICAgIHNlbGVjdGVkUmVzdWx0OiAwLFxuICAgICAgICBlbmFibGVIaXN0b3J5OiBmYWxzZSxcbiAgICAgICAgLy8gb21pdCBsYXN0IGl0ZW1cbiAgICAgICAgc3RhY2s6IHN0YXRlLnN0YWNrLnNsaWNlKDAsIC0xKSxcbiAgICAgIH07XG4gICAgY2FzZSAnc2VhcmNoVGV4dCc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgc2VhcmNoVGV4dDogYWN0aW9uLnBheWxvYWQsXG4gICAgICAgIC8vIGNsZWFyIG5ldHdvcmsgZXJyb3Igd2hlbiBzZWFyY2ggdGV4dCBpcyBjbGVhcmVkLCBzbyB0aGF0IHVzZXJzXG4gICAgICAgIC8vIGFyZSB0ZW1wdGVkIHRvIHJldHJ5XG4gICAgICAgIGhhc05ldHdvcmtFcnJvcjogYWN0aW9uLnBheWxvYWQubGVuZ3RoID4gMCAmJiBzdGF0ZS5oYXNOZXR3b3JrRXJyb3IsXG4gICAgICB9O1xuICAgIGNhc2UgJ3NldFNlYXJjaFRleHRSZXN1bHRzJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICByZXN1bHRzOiBhY3Rpb24ucGF5bG9hZCxcbiAgICAgICAgc2VsZWN0ZWRSZXN1bHQ6IGFjdGlvbi5wYXlsb2FkLmxlbmd0aCA+IDAgPyAwIDogLTEsXG4gICAgICAgIGVuYWJsZUhpc3Rvcnk6IHRydWUsXG4gICAgICAgIHN0YWNrOiBbXSxcbiAgICAgIH07XG4gICAgY2FzZSAncmVzZXRTZWFyY2hUZXh0JzpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBzZWFyY2hUZXh0OiAnJywgcmVzdWx0czogW10sIHNlbGVjdGVkUmVzdWx0OiAtMSB9O1xuICAgIGNhc2UgJ3Jlc2V0UmVzdWx0c1doZW5DbG9zaW5nJzpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBzZWxlY3RlZFJlc3VsdDogLTEsIGVuYWJsZUhpc3Rvcnk6IHRydWUgfTtcbiAgICBjYXNlICdyZXNldCc6XG4gICAgICByZXR1cm4gaW5pdGlhbFN0YXRlO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gc3RhdGU7XG4gIH1cbn07XG5cbnR5cGUgUHJvcHMgPSB7XG4gIGhpc3RvcnlFbnRyaWVzOiBIaXN0b3J5RW50cnlbXTtcbiAgb25IaXN0b3J5RW50cmllc0NoYW5nZTogKGhpc3RvcnlFbnRyaWVzOiBIaXN0b3J5RW50cnlbXSkgPT4gdm9pZDtcbiAgc2VhcmNoOiAoc2VhcmNoVGV4dDogU2VhcmNoVGV4dCkgPT4gUHJvbWlzZTxDb21tYW5kW10+O1xuICBnZXROZXh0Q29tbWFuZHM6IChjb21tYW5kOiBDb21tYW5kKSA9PiBQcm9taXNlPENvbW1hbmRbXT47XG4gIGV4ZWN1dGVDb21tYW5kOiAoY29tbWFuZDogQ29tbWFuZCwgbWV0YTogeyBvcGVuSW5OZXdUYWI6IGJvb2xlYW4gfSkgPT4gdm9pZDtcbiAgb25DbG9zZTogKCkgPT4gdm9pZDtcbiAgY2xhc3NOYW1lU2hha2VBbmltYXRpb246IHN0cmluZztcbn07XG5jb25zdCBCdXRsZXIgPSAocHJvcHM6IFByb3BzKSA9PiB7XG4gIGNvbnN0IGludGwgPSB1c2VJbnRsKCk7XG4gIGNvbnN0IFtzdGF0ZSwgZGlzcGF0Y2hdID0gdXNlUmVkdWNlcjxcbiAgICAocHJldlN0YXRlOiBTdGF0ZSwgYWN0aW9uOiBBY3Rpb24pID0+IFN0YXRlXG4gID4ocmVkdWNlciwgaW5pdGlhbFN0YXRlKTtcblxuICBjb25zdCBzaG91bGRTZWxlY3RGaWVsZFRleHQgPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBpc05ld1dpbmRvd0NvbWJvID0gdXNlUmVmKGZhbHNlKTtcbiAgY29uc3Qgc2tpcE5leHRTZWxlY3Rpb24gPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBzZWFyY2hDb250YWluZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBzZWFyY2hJbnB1dFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKTtcblxuICBjb25zdCBzZXRIYXNOZXR3b3JrRXJyb3IgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgZGlzcGF0Y2goeyB0eXBlOiAnbmV0d29ya0Vycm9yJywgcGF5bG9hZDogdHJ1ZSB9KTtcbiAgfSwgW10pO1xuICBjb25zdCB1bnNldEhhc05ldHdvcmtFcnJvciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICduZXR3b3JrRXJyb3InLCBwYXlsb2FkOiBmYWxzZSB9KTtcbiAgfSwgW10pO1xuICBjb25zdCBzZXRJc0xvYWRpbmcgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgZGlzcGF0Y2goeyB0eXBlOiAnbG9hZGluZycsIHBheWxvYWQ6IHRydWUgfSk7XG4gIH0sIFtdKTtcbiAgY29uc3QgdW5zZXRJc0xvYWRpbmcgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgZGlzcGF0Y2goeyB0eXBlOiAnbG9hZGluZycsIHBheWxvYWQ6IGZhbHNlIH0pO1xuICB9LCBbXSk7XG5cbiAgLy8gRGVzdHJ1Y3R1cmUgZnVuY3Rpb25zIGZyb20gcHJvcHMgdG8gcmVmZXJlbmNlIHRoZW0gaW4gdGhlIGhvb2sgZGVwZW5kZW5jeSBsaXN0XG4gIGNvbnN0IHtcbiAgICBzZWFyY2g6IHNlYXJjaEZyb21QYXJlbnQsXG4gICAgb25DbG9zZTogb25DbG9zZUZyb21QYXJlbnQsXG4gICAgZXhlY3V0ZUNvbW1hbmQ6IGV4ZWN1dGVDb21tYW5kRnJvbVBhcmVudCxcbiAgICBvbkhpc3RvcnlFbnRyaWVzQ2hhbmdlOiBvbkhpc3RvcnlFbnRyaWVzQ2hhbmdlRnJvbVBhcmVudCxcbiAgICBnZXROZXh0Q29tbWFuZHM6IGdldE5leHRDb21tYW5kc0Zyb21QYXJlbnQsXG4gIH0gPSBwcm9wcztcblxuICBjb25zdCBzaGFrZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoc2VhcmNoQ29udGFpbmVyUmVmLmN1cnJlbnQpIHtcbiAgICAgIHNlYXJjaENvbnRhaW5lclJlZi5jdXJyZW50LmNsYXNzTGlzdC5yZW1vdmUoXG4gICAgICAgIHByb3BzLmNsYXNzTmFtZVNoYWtlQW5pbWF0aW9uXG4gICAgICApO1xuICAgICAgLy8gLT4gdHJpZ2dlcmluZyByZWZsb3dcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby12b2lkXG4gICAgICB2b2lkIHNlYXJjaENvbnRhaW5lclJlZi5jdXJyZW50Lm9mZnNldFdpZHRoO1xuICAgICAgc2VhcmNoQ29udGFpbmVyUmVmLmN1cnJlbnQuY2xhc3NMaXN0LmFkZChwcm9wcy5jbGFzc05hbWVTaGFrZUFuaW1hdGlvbik7XG4gICAgfVxuICB9LCBbcHJvcHMuY2xhc3NOYW1lU2hha2VBbmltYXRpb25dKTtcblxuICBjb25zdCBleGVjdXRlID0gdXNlQ2FsbGJhY2soXG4gICAgKGNvbW1hbmQsIG1ldGEpID0+IHtcbiAgICAgIC8vIE9ubHkgbWFpbiBlbnRyaWVzIGdldCBhZGRlZCB0byBoaXN0b3J5LCBzbyB3aGVuIGEgc3ViY29tbWFuZCBpcyBleGVjdXRlZCxcbiAgICAgIC8vIHdlIGFkZCB0aGUgbWFpbiBjb21tYW5kIG9mIGl0IHRvIHRoZSBoaXN0b3J5ICh0aGUgdG9wLWxldmVsIGNvbW1hbmQpLlxuICAgICAgLy9cbiAgICAgIC8vIFRoZSBrZXkgdG8gaWRlbnRpZnkgaGlzdG9yeSBlbnRyaWVzIGJ5IGlzIGFsd2F5cyB0aGUgc2VhcmNoVGV4dFxuICAgICAgLy8gVGhlcmUgd2lsbCBuZXZlciBiZSB0d28gaGlzdG9yeSBlbnRyaWVzIHdpdGggdGhlIHNhbWUgc2VhcmNoVGV4dFxuICAgICAgY29uc3QgZW50cnkgPVxuICAgICAgICBzdGF0ZS5zdGFjay5sZW5ndGggPT09IDBcbiAgICAgICAgICA/IC8vIFRoZSBzdGFjayBpcyBlbXB0eSwgc28gd2UgYXJlIGV4ZWN1dGluZyBhIHRvcC1sZXZlbCBjb21tYW5kXG4gICAgICAgICAgICB7IHNlYXJjaFRleHQ6IHN0YXRlLnNlYXJjaFRleHQsIHJlc3VsdHM6IHN0YXRlLnJlc3VsdHMgfVxuICAgICAgICAgIDogLy8gV2UgYXJlIGV4ZWN1dGluZyBhIHN1YmNvbW1hbmQsIHNvIHdlIGdldCB0aGUgdG9wLWxldmVsIGNvbW1hbmQgZm9yIGl0LFxuICAgICAgICAgICAgLy8gd2hpY2ggaXMgYXQgdGhlIGJvdHRvbSBvZiB0aGUgc3RhY2suXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHNlYXJjaFRleHQ6IHN0YXRlLnN0YWNrWzBdLnNlYXJjaFRleHQsXG4gICAgICAgICAgICAgIHJlc3VsdHM6IHN0YXRlLnN0YWNrWzBdLnJlc3VsdHMsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAvLyBBZGQgdGhlIGVudHJ5IHRvIHRoZSBoaXN0b3J5LCB3aGlsZSBleGNsdWRpbmcgYW55IGVhcmxpZXIgaGlzdG9yeSBlbnRyeVxuICAgICAgLy8gd2l0aCB0aGUgc2FtZSBzZWFyY2ggdGV4dC4gVGhpcyBlZmZlY3RpdmVseSBcIm1vdmVzXCIgdGhhdCBlbnRyeSB0byB0aGVcbiAgICAgIC8vIHRvcCBvZiB0aGUgaGlzdG9yeSAod2l0aCB0aGUgbW9zdCByZWNlbnQgcmVzdWx0cyksIG9yIGFwcGVuZHMgYSBuZXcgZW50cnlcbiAgICAgIC8vIHdoZW4gaXQgZGlkbid0IGV4aXN0IGJlZm9yZS5cbiAgICAgIG9uSGlzdG9yeUVudHJpZXNDaGFuZ2VGcm9tUGFyZW50KFtcbiAgICAgICAgLi4ucHJvcHMuaGlzdG9yeUVudHJpZXMuZmlsdGVyKFxuICAgICAgICAgIChjb21tYW5kKSA9PiBjb21tYW5kLnNlYXJjaFRleHQgIT09IGVudHJ5LnNlYXJjaFRleHRcbiAgICAgICAgKSxcbiAgICAgICAgZW50cnksXG4gICAgICBdKTtcblxuICAgICAgZGlzcGF0Y2goeyB0eXBlOiAncmVzZXRTZWFyY2hUZXh0JyB9KTtcblxuICAgICAgb25DbG9zZUZyb21QYXJlbnQoKTtcblxuICAgICAgZXhlY3V0ZUNvbW1hbmRGcm9tUGFyZW50KGNvbW1hbmQsIG1ldGEpO1xuICAgIH0sXG4gICAgW1xuICAgICAgZXhlY3V0ZUNvbW1hbmRGcm9tUGFyZW50LFxuICAgICAgb25DbG9zZUZyb21QYXJlbnQsXG4gICAgICBvbkhpc3RvcnlFbnRyaWVzQ2hhbmdlRnJvbVBhcmVudCxcbiAgICAgIHByb3BzLmhpc3RvcnlFbnRyaWVzLFxuICAgICAgc3RhdGUucmVzdWx0cyxcbiAgICAgIHN0YXRlLnNlYXJjaFRleHQsXG4gICAgICBzdGF0ZS5zdGFjayxcbiAgICBdXG4gICk7XG4gIGNvbnN0IGhhbmRsZUtleURvd24gPSB1c2VDYWxsYmFjazxLZXlib2FyZEV2ZW50SGFuZGxlcjxIVE1MSW5wdXRFbGVtZW50Pj4oXG4gICAgKGV2ZW50KSA9PiB7XG4gICAgICAvLyBQcmV2ZW50aW5nIGN1cnNvciBqdW1wcyBjYW4gb25seSBoYXBwZW4gaW4gb25LZXlEb3duLCBidXQgbm90IGluIG9uS2V5VXBcbiAgICAgIGV2ZW50LnBlcnNpc3QoKTtcblxuICAgICAgLy8gV2Ugd2FudCB0byBrbm93IHdoZW4gdGhlIHVzZXIgcHJlc3NlcyBjbWQrZW50ZXIgKGNtZCBiZWluZyBhIG1ldGEga2V5KS5cbiAgICAgIC8vIFdlIGFyZSBvbmx5IHRvbGQgYWJvdXQgdGhpcyBpbiBrZXlEb3duLCBidXQgbm90IGluIGtleVVwLCBzbyB3ZSBuZWVkXG4gICAgICAvLyB0byBoYW5kbGUgaXQgaGVyZVxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJyAmJiBoYXNOZXdXaW5kb3dNb2RpZmllcihldmVudCkpIHtcbiAgICAgICAgaXNOZXdXaW5kb3dDb21iby5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBBdm9pZCBzZWxlY3RpbmcgdGhlIHdob2xlIHBhZ2Ugd2hlbiB1c2VyIHNlbGVjdGVzIGV2ZXJ5dGhpbmcgd2l0aFxuICAgICAgLy8gYSBrZXlib2FyZCBzaG9ydGN1dC4gVGhlcmUgaXMgcHJvYmFibHkgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMgdGhvdWdoLlxuICAgICAgLy8gVGhpcyBwcmV2ZW50cyB0aGUgd2hvbGUgcGFnZSBmcm9tIGJlaW5nIHNlbGVjdGVkIGluIGNhc2UgdGhlIHVzZXJcbiAgICAgIC8vIDEpIG9wZW5zIHRoZSBzZWFyY2ggYm94XG4gICAgICAvLyAyKSB0eXBlcyBpbnRvIGl0XG4gICAgICAvLyAzKSBzZWxlY3RzIGFsbCB0ZXh0IHVzaW5nIGNtZCthXG4gICAgICAvLyA0KSBjbG9zZXMgdGhlIHNlYXJjaCBib3ggd2l0aCBlc2NcbiAgICAgIC8vIFdpdGhvdXQgdGhpcyBoYW5kbGluZywgdGhlIHdob2xlIHBhZ2Ugd291bGQgbm93IGJlIHNlbGVjdGVkXG4gICAgICBpZiAoaXNTZWxlY3RBbGxDb21ibyhldmVudCkpIHtcbiAgICAgICAgLy8gVGhpcyBzdG9wcyB0aGUgYnJvd3NlciBmcm9tIHNlbGVjdGluZyBhbnl0aGluZ1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpZiAoc2VhcmNoSW5wdXRSZWYuY3VycmVudCkge1xuICAgICAgICAgIC8vIFRoaXMgc2VsZWN0cyB0aGUgdGV4dCBpbiB0aGUgc2VhcmNoIGlucHV0XG4gICAgICAgICAgc2VhcmNoSW5wdXRSZWYuY3VycmVudC5zZXRTZWxlY3Rpb25SYW5nZSgwLCBzdGF0ZS5zZWFyY2hUZXh0Lmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBhdm9pZCBpbnRlcmZlcmluZyB3aXRoIG90aGVyIGtleSBjb21iaW5hdGlvbnMgdXNpbmcgbW9kaWZpZXIga2V5c1xuICAgICAgaWYgKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQuYWx0S2V5IHx8IGV2ZW50LnNoaWZ0S2V5IHx8IGV2ZW50Lm1ldGFLZXkpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmIChpc0Nsb3NlQ29tYm8oZXZlbnQpKSByZXR1cm47XG5cbiAgICAgIC8vIHNraXAgbmV4dCBtb3VzZUVudGVyIHRvIGF2b2lkIHNldHRpbmcgc2VsZWN0ZWRSZXN1bHQgd2hlbiBjdXJzb3IganVzdFxuICAgICAgLy8gaGFwcGVucyB0byBiZSB3aGVyZSB0aGUgcmVzdWx0cyB3aWxsIHBvcCB1cFxuICAgICAgc2tpcE5leHRTZWxlY3Rpb24uY3VycmVudCA9IHRydWU7XG5cbiAgICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XG4gICAgICAgIC8vIHByZXZlbnQgY3Vyc29yIGZyb20ganVtcGluZyB0byBlbmQgb2YgdGV4dCBpbnB1dFxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBkaXNwYXRjaCh7IHR5cGU6ICdpbmNyZW1lbnRTZWxlY3RlZFJlc3VsdCcgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1VwJykge1xuICAgICAgICAvLyBicm93c2UgdGhyb3VnaCBoaXN0b3J5XG4gICAgICAgIGlmIChcbiAgICAgICAgICBzdGF0ZS5zZWFyY2hUZXh0Lmxlbmd0aCA9PT0gMCB8fFxuICAgICAgICAgIChzdGF0ZS5zZWxlY3RlZFJlc3VsdCA8IDEgJiYgc3RhdGUuZW5hYmxlSGlzdG9yeSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgc2hvdWxkU2VsZWN0RmllbGRUZXh0LmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICAgIGNvbnN0IHNlbGVjdGVkSW5kZXggPVxuICAgICAgICAgICAgc3RhdGUuc2VhcmNoVGV4dC5sZW5ndGggPT09IDBcbiAgICAgICAgICAgICAgPyAvLyBXaGVuIGdvaW5nIGJhY2sgdGhlIGZpcnN0IHN0ZXBcbiAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICA6IC8vIFdoZW4gZ29pbmcgYmFjayBtb3JlIHRoYW4gb25lIHN0ZXBcbiAgICAgICAgICAgICAgICBwcm9wcy5oaXN0b3J5RW50cmllcy5maW5kSW5kZXgoXG4gICAgICAgICAgICAgICAgICAoY29tbWFuZCkgPT4gY29tbWFuZC5zZWFyY2hUZXh0ID09PSBzdGF0ZS5zZWFyY2hUZXh0XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAvLyBQaWNrIHRoZSBwcmV2aW91cyBjb21tYW5kIGZyb20gdGhlIGhpc3RvcnlcbiAgICAgICAgICBjb25zdCBwcmV2Q29tbWFuZCA9XG4gICAgICAgICAgICBzZWxlY3RlZEluZGV4ID09PSAtMVxuICAgICAgICAgICAgICA/IC8vIHByZXZpb3VzIGNvbW1hbmQgb24gdG9wIG9mIHRoZSBoaXN0b3J5IHdoZW4gZ29pbmcgYmFjayBvblxuICAgICAgICAgICAgICAgIC8vIGZpcnN0IHN0ZXBcbiAgICAgICAgICAgICAgICBsYXN0KHByb3BzLmhpc3RvcnlFbnRyaWVzKVxuICAgICAgICAgICAgICA6IC8vIHByZXZpb3VzIGNvbW1hbmQgaXMgZGVlcGVyIGRvd25cbiAgICAgICAgICAgICAgICAvLyBXaGVuIHRoZSBoaXN0b3J5IGRvZXMgbm90IGV4aXN0IChuZWdhdGl2ZSBpbmRleCksIHRoZW5cbiAgICAgICAgICAgICAgICAvLyB0aGlzIGltcGxpY2l0bHkgcmV0dXJucyB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICBwcm9wcy5oaXN0b3J5RW50cmllc1tzZWxlY3RlZEluZGV4IC0gMV07XG4gICAgICAgICAgLy8gU2tpcCB3aGVuIG5vIHByZXZpb3VzIGVudHJ5IGV4aXN0cyBpbiB0aGUgaGlzdG9yeVxuICAgICAgICAgIGlmICghcHJldkNvbW1hbmQpIHJldHVybjtcbiAgICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgICB0eXBlOiAncGlja0NvbW1hbmRGcm9tSGlzdG9yeScsXG4gICAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICAgIHNlYXJjaFRleHQ6IHByZXZDb21tYW5kLnNlYXJjaFRleHQsXG4gICAgICAgICAgICAgIHJlc3VsdHM6IHByZXZDb21tYW5kLnJlc3VsdHMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBwcmV2ZW50IGN1cnNvciBmcm9tIGp1bXBpbmcgdG8gYmVnaW5uaW5nIG9mIHRleHQgaW5wdXRcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZGlzcGF0Y2goeyB0eXBlOiAnZGVjcmVtZW50U2VsZWN0ZWRSZXN1bHQnIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoc3RhdGUuc2VsZWN0ZWRSZXN1bHQgPiAtMSkge1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dSaWdodCcpIHtcbiAgICAgICAgICBjb25zdCBjb21tYW5kID0gc3RhdGUucmVzdWx0c1tzdGF0ZS5zZWxlY3RlZFJlc3VsdF07XG4gICAgICAgICAgY29uc3Qgc2VhcmNoVGV4dCA9IHN0YXRlLnNlYXJjaFRleHQ7XG4gICAgICAgICAgY29uc3QgaXNDdXJzb3JBdEVuZCA9XG4gICAgICAgICAgICBzZWFyY2hJbnB1dFJlZi5jdXJyZW50ICYmXG4gICAgICAgICAgICBzdGF0ZS5zZWFyY2hUZXh0Lmxlbmd0aCA9PT0gc2VhcmNoSW5wdXRSZWYuY3VycmVudC5zZWxlY3Rpb25TdGFydDtcblxuICAgICAgICAgIGNvbnN0IGlzRXZlcnl0aGluZ1NlbGVjdGVkID1cbiAgICAgICAgICAgIHNlYXJjaElucHV0UmVmLmN1cnJlbnQgJiZcbiAgICAgICAgICAgIHNlYXJjaElucHV0UmVmLmN1cnJlbnQuc2VsZWN0aW9uU3RhcnQgPT09IDAgJiZcbiAgICAgICAgICAgIHN0YXRlLnNlYXJjaFRleHQubGVuZ3RoID09PSBzZWFyY2hJbnB1dFJlZi5jdXJyZW50LnNlbGVjdGlvbkVuZDtcblxuICAgICAgICAgIC8vIG9ubHkgYWxsb3cgZGl2aW5nIGluIHdoZW4gY3Vyc29yIGlzIGF0IGVuZCBvZiBpbnB1dCBvciB3aGVuXG4gICAgICAgICAgLy8gdGhlIGNvbXBsZXRlIHRleHQgaXMgc2VsZWN0ZWQgKHdoZW4gYnJvd3NpbmcgdGhyb3VnaCBoaXN0b3J5KVxuICAgICAgICAgIGlmICghaXNDdXJzb3JBdEVuZCAmJiAhaXNFdmVyeXRoaW5nU2VsZWN0ZWQpIHJldHVybjtcblxuICAgICAgICAgIHVuc2V0SGFzTmV0d29ya0Vycm9yKCk7XG5cbiAgICAgICAgICAvLyBOT1RFOiBzaW5jZSB3ZSBuZWVkIHRvIGZldGNoIHRoZSBcIm5leHQgY29tbWFuZFwiLCB3aGljaCBpcyBhbiBhc3luYyBvcGVyYXRpb24sXG4gICAgICAgICAgLy8gd2UgdXNlIGEgSUlGRSB0byBwcm9jZXNzIHRoYXQgYW5kIGV2ZW50dWFsbHkgdXBkYXRlIHRoZSBzdGF0ZS5cbiAgICAgICAgICAoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGNvbW1hbmQpIHtcbiAgICAgICAgICAgICAgY29uc3QgbmV4dENvbW1hbmRzID0gYXdhaXQgZ2V0TmV4dENvbW1hbmRzRnJvbVBhcmVudChjb21tYW5kKTtcbiAgICAgICAgICAgICAgLy8gYXZvaWQgbW92aW5nIGN1cnNvciB3aGVuIHRoZXJlIGFyZSBzdWItb3B0aW9uc1xuICAgICAgICAgICAgICBpZiAobmV4dENvbW1hbmRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAvLyBFbnN1cmUgdGhlIHNlYXJjaCB0ZXh0IGhhcyBub3QgY2hhbmdlZCB3aGlsZSB3ZSB3ZXJlIGxvYWRpbmdcbiAgICAgICAgICAgICAgICAvLyB0aGUgbmV4dCByZXN1bHRzLCBvdGhlcndpc2Ugd2UnZCBpbnRlcnJ1cHQgdGhlIHVzZXIuXG4gICAgICAgICAgICAgICAgLy8gVGhyb3cgYXdheSB0aGUgcmVzdWx0cyBpbiBjYXNlIHRoZSBzZWFyY2ggdGV4dCBoYXMgY2hhbmdlZC5cbiAgICAgICAgICAgICAgICBpZiAoc3RhdGUuc2VhcmNoVGV4dCA9PT0gc2VhcmNoVGV4dCkge1xuICAgICAgICAgICAgICAgICAgZGlzcGF0Y2goe1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnc2V0TmV4dENvbW1hbmRzJyxcbiAgICAgICAgICAgICAgICAgICAgcGF5bG9hZDogeyByZXN1bHRzOiBuZXh0Q29tbWFuZHMgfSxcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNoYWtlKCk7XG4gICAgICAgICAgfSkoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93TGVmdCcpIHtcbiAgICAgICAgICAvLyBnbyBsZWZ0IGluIHN0YWNrXG4gICAgICAgICAgY29uc3QgcHJldkNvbW1hbmQgPSBsYXN0KHN0YXRlLnN0YWNrKTtcblxuICAgICAgICAgIC8vIGRvIG5vdGhpbmcgd2hlbiB3ZSBjYW4ndCBnbyBsZWZ0IGFueW1vcmVcbiAgICAgICAgICBpZiAoIXByZXZDb21tYW5kKSByZXR1cm47XG5cbiAgICAgICAgICAvLyBwcmV2ZW50IGN1cnNvciBmcm9tIGp1bXBpbmcgYSBjaGFyIHRvIHRoZSBsZWZ0IGluIHRleHQgaW5wdXRcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgZGlzcGF0Y2goe1xuICAgICAgICAgICAgdHlwZTogJ3NldFByZXZDb21tYW5kcycsXG4gICAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICAgIHNlYXJjaFRleHQ6IHByZXZDb21tYW5kLnNlYXJjaFRleHQsXG4gICAgICAgICAgICAgIHJlc3VsdHM6IHByZXZDb21tYW5kLnJlc3VsdHMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgZ2V0TmV4dENvbW1hbmRzRnJvbVBhcmVudCxcbiAgICAgIHByb3BzLmhpc3RvcnlFbnRyaWVzLFxuICAgICAgc2hha2UsXG4gICAgICBzdGF0ZSxcbiAgICAgIHVuc2V0SGFzTmV0d29ya0Vycm9yLFxuICAgIF1cbiAgKTtcbiAgY29uc3QgaGFuZGxlS2V5VXAgPSB1c2VDYWxsYmFjazxLZXlib2FyZEV2ZW50SGFuZGxlcjxIVE1MSW5wdXRFbGVtZW50Pj4oXG4gICAgKGV2ZW50KSA9PiB7XG4gICAgICAvLyBzZXR0aW5nIHRoZSBzZWxlY3Rpb24gY2FuIG9ubHkgaGFwcGVuIGluIG9uS2V5VXBcbiAgICAgIGlmIChzaG91bGRTZWxlY3RGaWVsZFRleHQuY3VycmVudCkge1xuICAgICAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICBpbnB1dC5mb2N1cygpO1xuICAgICAgICBpbnB1dC5zZWxlY3QoKTtcbiAgICAgICAgc2hvdWxkU2VsZWN0RmllbGRUZXh0LmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGV2ZW50LmtleSAhPT0gJ0VudGVyJyAmJiAhaXNOZXdXaW5kb3dDb21iby5jdXJyZW50KSByZXR1cm4gdHJ1ZTtcblxuICAgICAgLy8gVXNlciBqdXN0IHRyaWdnZXJlZCB0aGUgc2VhcmNoXG4gICAgICBpZiAoc3RhdGUuc2VsZWN0ZWRSZXN1bHQgPT09IC0xKSByZXR1cm4gdHJ1ZTtcblxuICAgICAgLy8gVXNlciBoYWQgc29tZXRoaW5nIHNlbGVjdGVkIGFuZCB3YW50cyB0byBnbyB0aGVyZVxuICAgICAgZXhlY3V0ZShzdGF0ZS5yZXN1bHRzW3N0YXRlLnNlbGVjdGVkUmVzdWx0XSwge1xuICAgICAgICBvcGVuSW5OZXdUYWI6IGlzTmV3V2luZG93Q29tYm8uY3VycmVudCxcbiAgICAgIH0pO1xuXG4gICAgICBpc05ld1dpbmRvd0NvbWJvLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgW2V4ZWN1dGUsIHN0YXRlLnJlc3VsdHMsIHN0YXRlLnNlbGVjdGVkUmVzdWx0XVxuICApO1xuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSB1c2VDYWxsYmFjazxDaGFuZ2VFdmVudEhhbmRsZXI8SFRNTElucHV0RWxlbWVudD4+KFxuICAgIChldmVudCkgPT4ge1xuICAgICAgY29uc3Qgc2VhcmNoVGV4dCA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICAgIGlmIChzZWFyY2hUZXh0LnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgZGlzcGF0Y2goeyB0eXBlOiAncmVzZXQnIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGRpc3BhdGNoKHsgdHlwZTogJ3NlYXJjaFRleHQnLCBwYXlsb2FkOiBzZWFyY2hUZXh0IH0pO1xuXG4gICAgICAvLyBBIHNlYXJjaCB2aWEgbmV0d29yayBpcyBvbmx5IHRyaWdnZXJlZCB3aGVuIHRoZXJlXG4gICAgICAvLyBhcmUgbW9yZSB0aGFuIHRocmVlIGNoYXJhY3RlcnMuIFNvIG5vIGZhbHNlIGxvYWRpbmdcbiAgICAgIC8vIGluZGljYXRpb24gaXMgZ2l2ZW4uXG4gICAgICBpZiAoc2VhcmNoVGV4dC50cmltKCkubGVuZ3RoID4gMykge1xuICAgICAgICBzZXRJc0xvYWRpbmcoKTtcbiAgICAgIH1cblxuICAgICAgc2VhcmNoRnJvbVBhcmVudChzZWFyY2hUZXh0KS50aGVuKFxuICAgICAgICAoYXN5bmNSZXN1bHRzOiBDb21tYW5kW10pID0+IHtcbiAgICAgICAgICB1bnNldEhhc05ldHdvcmtFcnJvcigpO1xuICAgICAgICAgIHVuc2V0SXNMb2FkaW5nKCk7XG5cbiAgICAgICAgICBjb25zdCBmdXNlID0gbmV3IEZ1c2UoYXN5bmNSZXN1bHRzLCB7XG4gICAgICAgICAgICBrZXlzOiBbXG4gICAgICAgICAgICAgIHsgbmFtZTogJ3RleHQnLCB3ZWlnaHQ6IDAuNiB9LFxuICAgICAgICAgICAgICB7IG5hbWU6ICdrZXl3b3JkcycsIHdlaWdodDogMC40IH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgbWluTWF0Y2hDaGFyTGVuZ3RoOiAyLFxuICAgICAgICAgICAgaW5jbHVkZVNjb3JlOiB0cnVlLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY29uc3Qgc2VhcmNoUmVzdWx0cyA9IGZ1c2VcbiAgICAgICAgICAgIC5zZWFyY2goc2VhcmNoVGV4dClcbiAgICAgICAgICAgIC8vIEZpbHRlciBvdXQgcmVzdWx0cyB3aXRoIGEgbWF0Y2hpbmcgc2NvcmUgb3ZlciAwLjc1XG4gICAgICAgICAgICAuZmlsdGVyKChyZXN1bHQpID0+IChyZXN1bHQuc2NvcmUgPyByZXN1bHQuc2NvcmUgPCAwLjc1IDogZmFsc2UpKVxuICAgICAgICAgICAgLy8gS2VlcCBhIG1heGltYWwgb2YgOSByZXN1bHRzXG4gICAgICAgICAgICAuc2xpY2UoMCwgOSk7XG5cbiAgICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgICB0eXBlOiAnc2V0U2VhcmNoVGV4dFJlc3VsdHMnLFxuICAgICAgICAgICAgcGF5bG9hZDogc2VhcmNoUmVzdWx0cy5tYXAoKHJlc3VsdCkgPT4gcmVzdWx0Lml0ZW0pLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICAoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgdW5zZXRJc0xvYWRpbmcoKTtcbiAgICAgICAgICBzZXRIYXNOZXR3b3JrRXJyb3IoKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9LFxuICAgIFtcbiAgICAgIHNlYXJjaEZyb21QYXJlbnQsXG4gICAgICBzZXRIYXNOZXR3b3JrRXJyb3IsXG4gICAgICBzZXRJc0xvYWRpbmcsXG4gICAgICB1bnNldEhhc05ldHdvcmtFcnJvcixcbiAgICAgIHVuc2V0SXNMb2FkaW5nLFxuICAgIF1cbiAgKTtcbiAgY29uc3QgaGFuZGxlQ29udGFpbmVyQ2xpY2sgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgZGlzcGF0Y2goeyB0eXBlOiAncmVzZXRSZXN1bHRzV2hlbkNsb3NpbmcnIH0pO1xuICAgIG9uQ2xvc2VGcm9tUGFyZW50KCk7XG4gIH0sIFtvbkNsb3NlRnJvbVBhcmVudF0pO1xuXG4gIGNvbnN0IGNyZWF0ZUNvbW1hbmRNb3VzZUVudGVySGFuZGxlciA9IHVzZUNhbGxiYWNrPFxuICAgIChpbmRleDogbnVtYmVyKSA9PiBNb3VzZUV2ZW50SGFuZGxlcjxIVE1MRGl2RWxlbWVudD5cbiAgPihcbiAgICAoaW5kZXgpID0+ICgpID0+IHtcbiAgICAgIC8vIEluIGNhc2UgdGhlIGN1cnNvciBoYXBwZW5lZCB0byBiZSBpbiBhIGxvY2F0aW9uIHdoZXJlIGFcbiAgICAgIC8vIHJlc3VsdCB3b3VsZCBhcHBlYXIsIGl0IHdvdWxkIHRyaWdnZXIgb25Nb3VzZUVudGVyIGFuZCB0aGVcbiAgICAgIC8vIHJlc3VsdCB3b3VsZCBiZSBzZWxlY3RlZCBpbW1lZGlhdGVseS4gVGhpcyBpcyBub3Qgc29tZXRoaW5nXG4gICAgICAvLyBhIHVzZXIgd291bGQgZXhwZWN0LCBoZW5jZSB3ZSBwcmV2ZW50IGl0IGZyb20gaGFwcGVuaW5nLlxuICAgICAgLy8gVGhlIHVzZXIgaGFzIHRvIG1vdmUgdGhlIGN1cnNvciB0byBhbiBvcHRpb24gZXhwbGljaXRseSBmb3JcbiAgICAgIC8vIGl0IHRvIGJlY29tZSBhY3RpdmUuIEhvd2V2ZXIsIHRoZSB1c2VyIGNhbiBhbHdheXMgY2xpY2sgYW5kXG4gICAgICAvLyB0aGF0IGFjdGlvbiB3aWxsIGJlIHRyaWdnZXJlZC5cbiAgICAgIGlmIChza2lwTmV4dFNlbGVjdGlvbi5jdXJyZW50KSB7XG4gICAgICAgIHNraXBOZXh0U2VsZWN0aW9uLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBzZXRzIHRoZSBzZWxlY3RlZCByZXN1bHQsIG1haW5seSBmb3IgdGhlIGhvdmVyIGVmZmVjdFxuICAgICAgZGlzcGF0Y2goeyB0eXBlOiAnc2VsZWN0ZWRSZXN1bHQnLCBwYXlsb2FkOiBpbmRleCB9KTtcbiAgICB9LFxuICAgIFtdXG4gICk7XG4gIGNvbnN0IGNyZWF0ZUNvbW1hbmRDbGlja0hhbmRsZXIgPSB1c2VDYWxsYmFjazxcbiAgICAoY29tbWFuZDogQ29tbWFuZCkgPT4gTW91c2VFdmVudEhhbmRsZXI8SFRNTERpdkVsZW1lbnQ+XG4gID4oXG4gICAgKGNvbW1hbmQpID0+IChldmVudCkgPT4ge1xuICAgICAgZXhlY3V0ZShjb21tYW5kLCB7XG4gICAgICAgIG9wZW5Jbk5ld1RhYjogaGFzTmV3V2luZG93TW9kaWZpZXIoZXZlbnQpLFxuICAgICAgfSk7XG4gICAgfSxcbiAgICBbZXhlY3V0ZV1cbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxCdXRsZXJDb250YWluZXJcbiAgICAgIG9uQ2xpY2s9e2hhbmRsZUNvbnRhaW5lckNsaWNrfVxuICAgICAgZGF0YS10ZXN0aWQ9XCJxdWljay1hY2Nlc3NcIlxuICAgICAgdGFiSW5kZXg9ey0xfVxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgcmVmPXtzZWFyY2hDb250YWluZXJSZWZ9XG4gICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7Y3VzdG9tUHJvcGVydGllcy5jb2xvclN1cmZhY2V9O1xuICAgICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAke2N1c3RvbVByb3BlcnRpZXMuYm9yZGVyUmFkaXVzNH07XG4gICAgICAgICAgbWluLWhlaWdodDogNDBweDtcblxuICAgICAgICAgIC8qIG9uZSBtb3JlIHRoYW4gYXBwLWJhciAoMjAwMDApIGFuZCBvbmUgbW9yZSB0aGFuIHRoZSBvdmVybGF5ICgyMDAwMSkgKi9cbiAgICAgICAgICB6LWluZGV4OiAyMDAwMjtcbiAgICAgICAgICB3aWR0aDogNDAwcHg7XG4gICAgICAgICAgbWFyZ2luOiA0MHB4IGF1dG87XG4gICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMTBweCAzMHB4IC04cHggcmdiYSgwLCAwLCAwLCAwLjc1KTtcbiAgICAgICAgICAtbW96LWJveC1zaGFkb3c6IDAgMTBweCAzMHB4IC04cHggcmdiYSgwLCAwLCAwLCAwLjc1KTtcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDEwcHggMzBweCAtOHB4IHJnYmEoMCwgMCwgMCwgMC43NSk7XG4gICAgICAgICAgcGFkZGluZy1ib3R0b206ICR7c3RhdGUuaGFzTmV0d29ya0Vycm9yXG4gICAgICAgICAgICA/ICcwJ1xuICAgICAgICAgICAgOiBjdXN0b21Qcm9wZXJ0aWVzLnNwYWNpbmdTfTtcbiAgICAgICAgYH1cbiAgICAgICAgb25DbGljaz17KGV2ZW50KSA9PiB7XG4gICAgICAgICAgLy8gQXZvaWQgY2xvc2luZyB3aGVuIHRoZSBzZWFyY2hDb250YWluZXIgaXRzZWxmIGlzIGNsaWNrZWRcbiAgICAgICAgICAvLyBJZiB3ZSBkb24ndCBkbyB0aGlzLCB0aGVuIHRoZSBvdmVybGF5IHdpbGwgY2xvc2Ugd2hlbiBlLmcuXG4gICAgICAgICAgLy8gdGhlIHNlYXJjaCBpbnB1dCBpcyBjbGlja2VkLlxuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgYH1cbiAgICAgICAgPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgaHRtbEZvcj1cInF1aWNrLWFjY2Vzcy1zZWFyY2gtaW5wdXRcIlxuICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ019O1xuICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ1N9O1xuICAgICAgICAgICAgYH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8U2VhcmNoSWNvbiBjb2xvcj1cIm5ldXRyYWw2MFwiIC8+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIGlkPVwicXVpY2stYWNjZXNzLXNlYXJjaC1pbnB1dFwiXG4gICAgICAgICAgICByZWY9e3NlYXJjaElucHV0UmVmfVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9e2ludGwuZm9ybWF0TWVzc2FnZShtZXNzYWdlcy5pbnB1dFBsYWNlaG9kZXIpfVxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgICAgICAgIG91dGxpbmU6IDA7XG4gICAgICAgICAgICAgIGZvbnQtc2l6ZTogMjJweDtcbiAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgICAgICAgICAgICAgcGFkZGluZzogJHtjdXN0b21Qcm9wZXJ0aWVzLnNwYWNpbmdNfSAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ019XG4gICAgICAgICAgICAgICAgJHtjdXN0b21Qcm9wZXJ0aWVzLnNwYWNpbmdTfSAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ1N9O1xuICAgICAgICAgICAgICAmOjpwbGFjZWhvbGRlciB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICR7Y3VzdG9tUHJvcGVydGllcy5jb2xvck5ldXRyYWw2MH07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGB9XG4gICAgICAgICAgICB2YWx1ZT17c3RhdGUuc2VhcmNoVGV4dH1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICBvbktleURvd249e2hhbmRsZUtleURvd259XG4gICAgICAgICAgICBvbktleVVwPXtoYW5kbGVLZXlVcH1cbiAgICAgICAgICAgIGF1dG9Gb2N1cz17dHJ1ZX1cbiAgICAgICAgICAgIGF1dG9Db21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICBkYXRhLXRlc3RpZD1cInF1aWNrLWFjY2Vzcy1zZWFyY2gtaW5wdXRcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAge3N0YXRlLmlzTG9hZGluZyAmJiAoXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ1N9O1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogJHtjdXN0b21Qcm9wZXJ0aWVzLnNwYWNpbmdTfTtcbiAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPExvYWRpbmdTcGlubmVyIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgeygoKSA9PiB7XG4gICAgICAgICAgaWYgKHN0YXRlLmhhc05ldHdvcmtFcnJvcilcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICAgICAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJHtjdXN0b21Qcm9wZXJ0aWVzLmNvbG9yRXJyb3J9O1xuICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiAke2N1c3RvbVByb3BlcnRpZXMuY29sb3JTdXJmYWNlfTtcbiAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogJHtjdXN0b21Qcm9wZXJ0aWVzLmZvbnRTaXplU21hbGx9O1xuICAgICAgICAgICAgICAgICAgcGFkZGluZzogJHtjdXN0b21Qcm9wZXJ0aWVzLnNwYWNpbmdYc307XG4gICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIHsuLi5tZXNzYWdlcy5vZmZsaW5lfSAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAoc3RhdGUucmVzdWx0cy5sZW5ndGggPT09IDAgJiYgc3RhdGUuc2VhcmNoVGV4dC50cmltKCkubGVuZ3RoID4gMClcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICAgICAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJHtjdXN0b21Qcm9wZXJ0aWVzLmNvbG9yTmV1dHJhbH07XG4gICAgICAgICAgICAgICAgICBjb2xvcjogJHtjdXN0b21Qcm9wZXJ0aWVzLmNvbG9yU29saWR9O1xuICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogJHtjdXN0b21Qcm9wZXJ0aWVzLmZvbnRTaXplU21hbGx9O1xuICAgICAgICAgICAgICAgICAgcGFkZGluZzogJHtjdXN0b21Qcm9wZXJ0aWVzLnNwYWNpbmdYc307XG4gICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIHsuLi5tZXNzYWdlcy5ub1Jlc3VsdHN9IC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgIHJldHVybiBzdGF0ZS5yZXN1bHRzLm1hcCgoY29tbWFuZCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxCdXRsZXJDb21tYW5kXG4gICAgICAgICAgICAgIGtleT17Y29tbWFuZC5pZH1cbiAgICAgICAgICAgICAgY29tbWFuZD17Y29tbWFuZH1cbiAgICAgICAgICAgICAgaXNTZWxlY3RlZD17c3RhdGUuc2VsZWN0ZWRSZXN1bHQgPT09IGluZGV4fVxuICAgICAgICAgICAgICBvbk1vdXNlRW50ZXI9e2NyZWF0ZUNvbW1hbmRNb3VzZUVudGVySGFuZGxlcihpbmRleCl9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9e2NyZWF0ZUNvbW1hbmRDbGlja0hhbmRsZXIoY29tbWFuZCl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpO1xuICAgICAgICB9KSgpfVxuICAgICAgPC9kaXY+XG4gICAgPC9CdXRsZXJDb250YWluZXI+XG4gICk7XG59O1xuQnV0bGVyLmRpc3BsYXlOYW1lID0gJ0J1dGxlcic7XG5cbmNvbnN0IEJ1dGxlcldpdGhBbmltYXRpb24gPSAocHJvcHM6IE9taXQ8UHJvcHMsICdjbGFzc05hbWVTaGFrZUFuaW1hdGlvbic+KSA9PiAoXG4gIDxDbGFzc05hbWVzPlxuICAgIHsoeyBjc3MgfSkgPT4gKFxuICAgICAgPEJ1dGxlclxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgIGNsYXNzTmFtZVNoYWtlQW5pbWF0aW9uPXtjc3NgXG4gICAgICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAwLjQ1cztcbiAgICAgICAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoO1xuICAgICAgICAgIGFuaW1hdGlvbi1uYW1lOiAke3NoYWtlQW5pbWF0aW9ufTtcbiAgICAgICAgYH1cbiAgICAgIC8+XG4gICAgKX1cbiAgPC9DbGFzc05hbWVzPlxuKTtcblxuZXhwb3J0IGRlZmF1bHQgQnV0bGVyV2l0aEFuaW1hdGlvbjtcbiJdfQ== */",
|
|
593
561
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
594
562
|
};
|
|
595
|
-
|
|
596
563
|
const Butler = props => {
|
|
597
564
|
const intl = reactIntl.useIntl();
|
|
598
|
-
|
|
599
565
|
const _useReducer = react$1.useReducer(reducer, initialState),
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
566
|
+
_useReducer2 = _slicedToArray(_useReducer, 2),
|
|
567
|
+
state = _useReducer2[0],
|
|
568
|
+
dispatch = _useReducer2[1];
|
|
604
569
|
const shouldSelectFieldText = react$1.useRef(false);
|
|
605
570
|
const isNewWindowCombo = react$1.useRef(false);
|
|
606
571
|
const skipNextSelection = react$1.useRef(false);
|
|
@@ -629,44 +594,47 @@ const Butler = props => {
|
|
|
629
594
|
type: 'loading',
|
|
630
595
|
payload: false
|
|
631
596
|
});
|
|
632
|
-
}, []);
|
|
597
|
+
}, []);
|
|
633
598
|
|
|
599
|
+
// Destructure functions from props to reference them in the hook dependency list
|
|
634
600
|
const searchFromParent = props.search,
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
601
|
+
onCloseFromParent = props.onClose,
|
|
602
|
+
executeCommandFromParent = props.executeCommand,
|
|
603
|
+
onHistoryEntriesChangeFromParent = props.onHistoryEntriesChange,
|
|
604
|
+
getNextCommandsFromParent = props.getNextCommands;
|
|
639
605
|
const shake = react$1.useCallback(() => {
|
|
640
606
|
if (searchContainerRef.current) {
|
|
641
|
-
searchContainerRef.current.classList.remove(props.classNameShakeAnimation);
|
|
607
|
+
searchContainerRef.current.classList.remove(props.classNameShakeAnimation);
|
|
608
|
+
// -> triggering reflow
|
|
642
609
|
// eslint-disable-next-line no-void
|
|
643
|
-
|
|
644
610
|
void searchContainerRef.current.offsetWidth;
|
|
645
611
|
searchContainerRef.current.classList.add(props.classNameShakeAnimation);
|
|
646
612
|
}
|
|
647
613
|
}, [props.classNameShakeAnimation]);
|
|
648
614
|
const execute = react$1.useCallback((command, meta) => {
|
|
649
615
|
var _context6;
|
|
650
|
-
|
|
651
616
|
// Only main entries get added to history, so when a subcommand is executed,
|
|
652
617
|
// we add the main command of it to the history (the top-level command).
|
|
653
618
|
//
|
|
654
619
|
// The key to identify history entries by is always the searchText
|
|
655
620
|
// There will never be two history entries with the same searchText
|
|
656
|
-
const entry = state.stack.length === 0 ?
|
|
621
|
+
const entry = state.stack.length === 0 ?
|
|
622
|
+
// The stack is empty, so we are executing a top-level command
|
|
657
623
|
{
|
|
658
624
|
searchText: state.searchText,
|
|
659
625
|
results: state.results
|
|
660
|
-
} :
|
|
626
|
+
} :
|
|
627
|
+
// We are executing a subcommand, so we get the top-level command for it,
|
|
661
628
|
// which is at the bottom of the stack.
|
|
662
629
|
{
|
|
663
630
|
searchText: state.stack[0].searchText,
|
|
664
631
|
results: state.stack[0].results
|
|
665
|
-
};
|
|
632
|
+
};
|
|
633
|
+
|
|
634
|
+
// Add the entry to the history, while excluding any earlier history entry
|
|
666
635
|
// with the same search text. This effectively "moves" that entry to the
|
|
667
636
|
// top of the history (with the most recent results), or appends a new entry
|
|
668
637
|
// when it didn't exist before.
|
|
669
|
-
|
|
670
638
|
onHistoryEntriesChangeFromParent([..._filterInstanceProperty__default["default"](_context6 = props.historyEntries).call(_context6, command => command.searchText !== entry.searchText), entry]);
|
|
671
639
|
dispatch({
|
|
672
640
|
type: 'resetSearchText'
|
|
@@ -676,14 +644,17 @@ const Butler = props => {
|
|
|
676
644
|
}, [executeCommandFromParent, onCloseFromParent, onHistoryEntriesChangeFromParent, props.historyEntries, state.results, state.searchText, state.stack]);
|
|
677
645
|
const handleKeyDown = react$1.useCallback(event => {
|
|
678
646
|
// Preventing cursor jumps can only happen in onKeyDown, but not in onKeyUp
|
|
679
|
-
event.persist();
|
|
647
|
+
event.persist();
|
|
648
|
+
|
|
649
|
+
// We want to know when the user presses cmd+enter (cmd being a meta key).
|
|
680
650
|
// We are only told about this in keyDown, but not in keyUp, so we need
|
|
681
651
|
// to handle it here
|
|
682
|
-
|
|
683
652
|
if (event.key === 'Enter' && hasNewWindowModifier(event)) {
|
|
684
653
|
isNewWindowCombo.current = true;
|
|
685
654
|
return;
|
|
686
|
-
}
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
// Avoid selecting the whole page when user selectes everything with
|
|
687
658
|
// a keyboard shortcut. There is probably a better way to do this though.
|
|
688
659
|
// This prevents the whole page from being selected in case the user
|
|
689
660
|
// 1) opens the search box
|
|
@@ -691,27 +662,23 @@ const Butler = props => {
|
|
|
691
662
|
// 3) selects all text using cmd+a
|
|
692
663
|
// 4) closes the search box with esc
|
|
693
664
|
// Without this handling, the whole page would now be selected
|
|
694
|
-
|
|
695
|
-
|
|
696
665
|
if (isSelectAllCombo(event)) {
|
|
697
666
|
// This stops the browser from selecting anything
|
|
698
667
|
event.preventDefault();
|
|
699
|
-
|
|
700
668
|
if (searchInputRef.current) {
|
|
701
669
|
// This selects the text in the search input
|
|
702
670
|
searchInputRef.current.setSelectionRange(0, state.searchText.length);
|
|
703
671
|
}
|
|
704
|
-
|
|
705
672
|
return;
|
|
706
|
-
}
|
|
707
|
-
|
|
673
|
+
}
|
|
708
674
|
|
|
675
|
+
// avoid interfering with other key combinations using modifier keys
|
|
709
676
|
if (event.ctrlKey || event.altKey || event.shiftKey || event.metaKey) return;
|
|
710
|
-
if (isCloseCombo(event)) return;
|
|
711
|
-
// happens to be where the results will pop up
|
|
677
|
+
if (isCloseCombo(event)) return;
|
|
712
678
|
|
|
679
|
+
// skip next mouseEnter to avoid setting selectedResult when cursor just
|
|
680
|
+
// happens to be where the results will pop up
|
|
713
681
|
skipNextSelection.current = true;
|
|
714
|
-
|
|
715
682
|
if (event.key === 'ArrowDown') {
|
|
716
683
|
// prevent cursor from jumping to end of text input
|
|
717
684
|
event.preventDefault();
|
|
@@ -720,24 +687,26 @@ const Butler = props => {
|
|
|
720
687
|
});
|
|
721
688
|
return;
|
|
722
689
|
}
|
|
723
|
-
|
|
724
690
|
if (event.key === 'ArrowUp') {
|
|
725
691
|
// browse through history
|
|
726
692
|
if (state.searchText.length === 0 || state.selectedResult < 1 && state.enableHistory) {
|
|
727
693
|
var _context7;
|
|
728
|
-
|
|
729
694
|
shouldSelectFieldText.current = true;
|
|
730
|
-
const selectedIndex = state.searchText.length === 0 ?
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
695
|
+
const selectedIndex = state.searchText.length === 0 ?
|
|
696
|
+
// When going back the first step
|
|
697
|
+
-1 :
|
|
698
|
+
// When going back more than one step
|
|
699
|
+
_findIndexInstanceProperty__default["default"](_context7 = props.historyEntries).call(_context7, command => command.searchText === state.searchText);
|
|
700
|
+
// Pick the previous command from the history
|
|
701
|
+
const prevCommand = selectedIndex === -1 ?
|
|
702
|
+
// previous command on top of the history when going back on
|
|
735
703
|
// first step
|
|
736
|
-
last__default["default"](props.historyEntries) :
|
|
704
|
+
last__default["default"](props.historyEntries) :
|
|
705
|
+
// previous command is deeper down
|
|
737
706
|
// When the history does not exist (negative index), then
|
|
738
707
|
// this implicitly returns undefined
|
|
739
|
-
props.historyEntries[selectedIndex - 1];
|
|
740
|
-
|
|
708
|
+
props.historyEntries[selectedIndex - 1];
|
|
709
|
+
// Skip when no previous entry exists in the history
|
|
741
710
|
if (!prevCommand) return;
|
|
742
711
|
dispatch({
|
|
743
712
|
type: 'pickCommandFromHistory',
|
|
@@ -747,32 +716,32 @@ const Butler = props => {
|
|
|
747
716
|
}
|
|
748
717
|
});
|
|
749
718
|
return;
|
|
750
|
-
}
|
|
751
|
-
|
|
752
|
-
|
|
719
|
+
}
|
|
720
|
+
// prevent cursor from jumping to beginning of text input
|
|
753
721
|
event.preventDefault();
|
|
754
722
|
dispatch({
|
|
755
723
|
type: 'decrementSelectedResult'
|
|
756
724
|
});
|
|
757
725
|
return;
|
|
758
726
|
}
|
|
759
|
-
|
|
760
727
|
if (state.selectedResult > -1) {
|
|
761
728
|
if (event.key === 'ArrowRight') {
|
|
762
729
|
const command = state.results[state.selectedResult];
|
|
763
730
|
const searchText = state.searchText;
|
|
764
731
|
const isCursorAtEnd = searchInputRef.current && state.searchText.length === searchInputRef.current.selectionStart;
|
|
765
|
-
const isEverythingSelected = searchInputRef.current && searchInputRef.current.selectionStart === 0 && state.searchText.length === searchInputRef.current.selectionEnd;
|
|
766
|
-
// the complete text is selected (when browsing through history)
|
|
732
|
+
const isEverythingSelected = searchInputRef.current && searchInputRef.current.selectionStart === 0 && state.searchText.length === searchInputRef.current.selectionEnd;
|
|
767
733
|
|
|
734
|
+
// only allow diving in when cursor is at end of input or when
|
|
735
|
+
// the complete text is selected (when browsing through history)
|
|
768
736
|
if (!isCursorAtEnd && !isEverythingSelected) return;
|
|
769
|
-
unsetHasNetworkError();
|
|
770
|
-
// we use a IIFE to process that and eventually update the state.
|
|
737
|
+
unsetHasNetworkError();
|
|
771
738
|
|
|
739
|
+
// NOTE: since we need to fetch the "next command", which is an async operation,
|
|
740
|
+
// we use a IIFE to process that and eventually update the state.
|
|
772
741
|
(async () => {
|
|
773
742
|
if (command) {
|
|
774
|
-
const nextCommands = await getNextCommandsFromParent(command);
|
|
775
|
-
|
|
743
|
+
const nextCommands = await getNextCommandsFromParent(command);
|
|
744
|
+
// avoid moving cursor when there are sub-options
|
|
776
745
|
if (nextCommands.length > 0) {
|
|
777
746
|
// Ensure the search text has not changed while we were loading
|
|
778
747
|
// the next results, otherwise we'd interrupt the user.
|
|
@@ -785,23 +754,21 @@ const Butler = props => {
|
|
|
785
754
|
}
|
|
786
755
|
});
|
|
787
756
|
}
|
|
788
|
-
|
|
789
757
|
return;
|
|
790
758
|
}
|
|
791
759
|
}
|
|
792
|
-
|
|
793
760
|
shake();
|
|
794
761
|
})();
|
|
795
|
-
|
|
796
762
|
return;
|
|
797
763
|
}
|
|
798
|
-
|
|
799
764
|
if (event.key === 'ArrowLeft') {
|
|
800
765
|
// go left in stack
|
|
801
|
-
const prevCommand = last__default["default"](state.stack);
|
|
766
|
+
const prevCommand = last__default["default"](state.stack);
|
|
802
767
|
|
|
803
|
-
|
|
768
|
+
// do nothing when we can't go left anymore
|
|
769
|
+
if (!prevCommand) return;
|
|
804
770
|
|
|
771
|
+
// prevent cursor from jumping a char to the left in text input
|
|
805
772
|
event.preventDefault();
|
|
806
773
|
dispatch({
|
|
807
774
|
type: 'setPrevCommands',
|
|
@@ -822,11 +789,12 @@ const Butler = props => {
|
|
|
822
789
|
input.select();
|
|
823
790
|
shouldSelectFieldText.current = false;
|
|
824
791
|
}
|
|
792
|
+
if (event.key !== 'Enter' && !isNewWindowCombo.current) return true;
|
|
825
793
|
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
if (state.selectedResult === -1) return true; // User had something selected and wants to go there
|
|
794
|
+
// User just triggered the search
|
|
795
|
+
if (state.selectedResult === -1) return true;
|
|
829
796
|
|
|
797
|
+
// User had something selected and wants to go there
|
|
830
798
|
execute(state.results[state.selectedResult], {
|
|
831
799
|
openInNewTab: isNewWindowCombo.current
|
|
832
800
|
});
|
|
@@ -835,28 +803,25 @@ const Butler = props => {
|
|
|
835
803
|
}, [execute, state.results, state.selectedResult]);
|
|
836
804
|
const handleChange = react$1.useCallback(event => {
|
|
837
805
|
const searchText = event.target.value;
|
|
838
|
-
|
|
839
806
|
if (_trimInstanceProperty__default["default"](searchText).call(searchText).length === 0) {
|
|
840
807
|
dispatch({
|
|
841
808
|
type: 'reset'
|
|
842
809
|
});
|
|
843
810
|
return;
|
|
844
811
|
}
|
|
845
|
-
|
|
846
812
|
dispatch({
|
|
847
813
|
type: 'searchText',
|
|
848
814
|
payload: searchText
|
|
849
|
-
});
|
|
815
|
+
});
|
|
816
|
+
|
|
817
|
+
// A search via network is only triggered when there
|
|
850
818
|
// are more than three characters. So no false loading
|
|
851
819
|
// indication is given.
|
|
852
|
-
|
|
853
820
|
if (_trimInstanceProperty__default["default"](searchText).call(searchText).length > 3) {
|
|
854
821
|
setIsLoading();
|
|
855
822
|
}
|
|
856
|
-
|
|
857
823
|
searchFromParent(searchText).then(asyncResults => {
|
|
858
824
|
var _context8, _context9;
|
|
859
|
-
|
|
860
825
|
unsetHasNetworkError();
|
|
861
826
|
unsetIsLoading();
|
|
862
827
|
const fuse = new Fuse__default["default"](asyncResults, {
|
|
@@ -870,11 +835,11 @@ const Butler = props => {
|
|
|
870
835
|
minMatchCharLength: 2,
|
|
871
836
|
includeScore: true
|
|
872
837
|
});
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
).call(_context9, result => result.score ? result.score < 0.75 : false)
|
|
838
|
+
const searchResults = _sliceInstanceProperty__default["default"](_context8 = _filterInstanceProperty__default["default"](_context9 = fuse.search(searchText)
|
|
839
|
+
// Filter out results with a matching score over 0.75
|
|
840
|
+
).call(_context9, result => result.score ? result.score < 0.75 : false)
|
|
841
|
+
// Keep a maximal of 9 results
|
|
876
842
|
).call(_context8, 0, 9);
|
|
877
|
-
|
|
878
843
|
dispatch({
|
|
879
844
|
type: 'setSearchTextResults',
|
|
880
845
|
payload: _mapInstanceProperty__default["default"](searchResults).call(searchResults, result => result.item)
|
|
@@ -903,9 +868,9 @@ const Butler = props => {
|
|
|
903
868
|
if (skipNextSelection.current) {
|
|
904
869
|
skipNextSelection.current = false;
|
|
905
870
|
return;
|
|
906
|
-
}
|
|
907
|
-
|
|
871
|
+
}
|
|
908
872
|
|
|
873
|
+
// sets the selected result, mainly for the hover effect
|
|
909
874
|
dispatch({
|
|
910
875
|
type: 'selectedResult',
|
|
911
876
|
payload: index
|
|
@@ -957,7 +922,6 @@ const Butler = props => {
|
|
|
957
922
|
})]
|
|
958
923
|
}), (() => {
|
|
959
924
|
var _context10, _context11;
|
|
960
|
-
|
|
961
925
|
if (state.hasNetworkError) return jsxRuntime.jsx("div", {
|
|
962
926
|
css: /*#__PURE__*/react.css("overflow:hidden;white-space:nowrap;cursor:default;background:", designSystem.customProperties.colorError, ";text-align:center;text-transform:uppercase;color:", designSystem.customProperties.colorSurface, ";font-size:", designSystem.customProperties.fontSizeSmall, ";padding:", designSystem.customProperties.spacingXs, ";" + (process.env.NODE_ENV === "production" ? "" : ";label:Butler;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1dGxlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBdXFCd0IiLCJmaWxlIjoiYnV0bGVyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEtleWJvYXJkRXZlbnRIYW5kbGVyLFxuICBDaGFuZ2VFdmVudEhhbmRsZXIsXG4gIEtleWJvYXJkRXZlbnQsXG4gIE1vdXNlRXZlbnRIYW5kbGVyLFxuICBNb3VzZUV2ZW50LFxuICB1c2VSZWR1Y2VyLFxuICB1c2VSZWYsXG4gIHVzZUNhbGxiYWNrLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjc3MsIGtleWZyYW1lcywgQ2xhc3NOYW1lcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBGdXNlIGZyb20gJ2Z1c2UuanMnO1xuaW1wb3J0IGxhc3QgZnJvbSAnbG9kYXNoL2xhc3QnO1xuaW1wb3J0IHsgRm9ybWF0dGVkTWVzc2FnZSwgdXNlSW50bCB9IGZyb20gJ3JlYWN0LWludGwnO1xuaW1wb3J0IHsgY3VzdG9tUHJvcGVydGllcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2Rlc2lnbi1zeXN0ZW0nO1xuaW1wb3J0IHsgU2VhcmNoSWNvbiB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2ljb25zJztcbmltcG9ydCBMb2FkaW5nU3Bpbm5lciBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9sb2FkaW5nLXNwaW5uZXInO1xuaW1wb3J0IEJ1dGxlckNvbW1hbmQgZnJvbSAnLi4vYnV0bGVyLWNvbW1hbmQnO1xuaW1wb3J0IEJ1dGxlckNvbnRhaW5lciBmcm9tICcuLi9idXRsZXItY29udGFpbmVyJztcbmltcG9ydCBtZXNzYWdlcyBmcm9tICcuLi9tZXNzYWdlcyc7XG5pbXBvcnQgdHlwZSB7XG4gIENvbW1hbmQsXG4gIFNlYXJjaFRleHQsXG4gIFNlbGVjdGVkUmVzdWx0LFxuICBTdGFjayxcbiAgSGlzdG9yeUVudHJ5LFxufSBmcm9tICcuLi90eXBlcyc7XG5cbmNvbnN0IGlzU2VsZWN0QWxsQ29tYm8gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+XG4gIGV2ZW50LmtleSA9PT0gJ2EnICYmXG4gIGV2ZW50Lm1ldGFLZXkgJiZcbiAgIWV2ZW50LmN0cmxLZXkgJiZcbiAgIWV2ZW50LmFsdEtleSAmJlxuICAhZXZlbnQuc2hpZnRLZXk7XG5cbmNvbnN0IGlzQ2xvc2VDb21ibyA9IChldmVudDogS2V5Ym9hcmRFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT5cbiAgZXZlbnQua2V5ID09PSAnRXNjYXBlJyAmJlxuICAhZXZlbnQubWV0YUtleSAmJlxuICAhZXZlbnQuY3RybEtleSAmJlxuICAhZXZlbnQuYWx0S2V5ICYmXG4gICFldmVudC5zaGlmdEtleTtcblxuY29uc3QgZ2V0UGxhdGZvcm0gPSAoKSA9PiB7XG4gIGlmIChuYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmNsdWRlcygnV2luJykpIHJldHVybiAnd2luZG93cyc7XG4gIGlmIChuYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmNsdWRlcygnTWFjJykpIHJldHVybiAnbWFjb3MnO1xuICBpZiAobmF2aWdhdG9yLmFwcFZlcnNpb24uaW5jbHVkZXMoJ1gxMScpKSByZXR1cm4gJ3VuaXgnO1xuICBpZiAobmF2aWdhdG9yLmFwcFZlcnNpb24uaW5jbHVkZXMoJ0xpbnV4JykpIHJldHVybiAnbGludXgnO1xuXG4gIHJldHVybiBudWxsO1xufTtcblxuY29uc3QgaGFzTmV3V2luZG93TW9kaWZpZXIgPSAoXG4gIGV2ZW50OiBLZXlib2FyZEV2ZW50PEhUTUxFbGVtZW50PiB8IE1vdXNlRXZlbnQ8SFRNTEVsZW1lbnQ+XG4pID0+IHtcbiAgY29uc3QgcGxhdGZvcm0gPSBnZXRQbGF0Zm9ybSgpO1xuICBzd2l0Y2ggKHBsYXRmb3JtKSB7XG4gICAgY2FzZSAnbWFjb3MnOlxuICAgICAgcmV0dXJuIGV2ZW50Lm1ldGFLZXk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBldmVudC5jdHJsS2V5O1xuICB9XG59O1xuXG5jb25zdCBzaGFrZUFuaW1hdGlvbiA9IGtleWZyYW1lc2BcbiAgZnJvbSxcbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7XG4gIH1cblxuICAxNCUsXG4gIDQyJSxcbiAgNzAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0zcHgsIDAsIDApO1xuICB9XG5cbiAgMjglLFxuICA1NiUsXG4gIDg0JSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgzcHgsIDAsIDApO1xuICB9XG5gO1xuXG50eXBlIFN0YXRlID0ge1xuICBoYXNOZXR3b3JrRXJyb3I6IGJvb2xlYW47XG4gIGlzTG9hZGluZzogYm9vbGVhbjtcbiAgc2VhcmNoVGV4dDogU2VhcmNoVGV4dDtcbiAgc2VsZWN0ZWRSZXN1bHQ6IFNlbGVjdGVkUmVzdWx0O1xuICAvLyBVc2VkIGZvciBVWCB3aGVuIGJyb3dzaW5nIHRocm91Z2ggaGlzdG9yeVxuICBlbmFibGVIaXN0b3J5OiBib29sZWFuO1xuICByZXN1bHRzOiBDb21tYW5kW107XG4gIHN0YWNrOiBTdGFja1tdO1xufTtcbnR5cGUgQWN0aW9uID1cbiAgfCB7IHR5cGU6ICduZXR3b3JrRXJyb3InOyBwYXlsb2FkOiBib29sZWFuIH1cbiAgfCB7IHR5cGU6ICdsb2FkaW5nJzsgcGF5bG9hZDogYm9vbGVhbiB9XG4gIHwgeyB0eXBlOiAnc2VsZWN0ZWRSZXN1bHQnOyBwYXlsb2FkOiBudW1iZXIgfVxuICB8IHsgdHlwZTogJ2luY3JlbWVudFNlbGVjdGVkUmVzdWx0JyB9XG4gIHwgeyB0eXBlOiAnZGVjcmVtZW50U2VsZWN0ZWRSZXN1bHQnIH1cbiAgfCB7XG4gICAgICB0eXBlOiAncGlja0NvbW1hbmRGcm9tSGlzdG9yeSc7XG4gICAgICBwYXlsb2FkOiB7IHNlYXJjaFRleHQ6IFNlYXJjaFRleHQ7IHJlc3VsdHM6IENvbW1hbmRbXSB9O1xuICAgIH1cbiAgfCB7IHR5cGU6ICdzZXROZXh0Q29tbWFuZHMnOyBwYXlsb2FkOiB7IHJlc3VsdHM6IENvbW1hbmRbXSB9IH1cbiAgfCB7XG4gICAgICB0eXBlOiAnc2V0UHJldkNvbW1hbmRzJztcbiAgICAgIHBheWxvYWQ6IHsgc2VhcmNoVGV4dDogU2VhcmNoVGV4dDsgcmVzdWx0czogQ29tbWFuZFtdIH07XG4gICAgfVxuICB8IHsgdHlwZTogJ3NlYXJjaFRleHQnOyBwYXlsb2FkOiBzdHJpbmcgfVxuICB8IHsgdHlwZTogJ3NldFNlYXJjaFRleHRSZXN1bHRzJzsgcGF5bG9hZDogQ29tbWFuZFtdIH1cbiAgfCB7IHR5cGU6ICdyZXNldFNlYXJjaFRleHQnIH1cbiAgfCB7IHR5cGU6ICdyZXNldFJlc3VsdHNXaGVuQ2xvc2luZycgfVxuICB8IHsgdHlwZTogJ3Jlc2V0JyB9O1xuY29uc3QgaW5pdGlhbFN0YXRlID0ge1xuICBoYXNOZXR3b3JrRXJyb3I6IGZhbHNlLFxuICBpc0xvYWRpbmc6IGZhbHNlLFxuICBzZWFyY2hUZXh0OiAnJyxcbiAgc2VsZWN0ZWRSZXN1bHQ6IC0xLFxuICAvLyBVc2VkIGZvciBVWCB3aGVuIGJyb3dzaW5nIHRocm91Z2ggaGlzdG9yeVxuICBlbmFibGVIaXN0b3J5OiB0cnVlLFxuICByZXN1bHRzOiBbXSxcbiAgc3RhY2s6IFtdLFxufTtcbmNvbnN0IHJlZHVjZXIgPSAoc3RhdGU6IFN0YXRlID0gaW5pdGlhbFN0YXRlLCBhY3Rpb246IEFjdGlvbik6IFN0YXRlID0+IHtcbiAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICAgIGNhc2UgJ25ldHdvcmtFcnJvcic6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgaGFzTmV0d29ya0Vycm9yOiBhY3Rpb24ucGF5bG9hZCB9O1xuICAgIGNhc2UgJ2xvYWRpbmcnOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGlzTG9hZGluZzogYWN0aW9uLnBheWxvYWQgfTtcbiAgICBjYXNlICdzZWxlY3RlZFJlc3VsdCc6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgc2VsZWN0ZWRSZXN1bHQ6IGFjdGlvbi5wYXlsb2FkIH07XG4gICAgY2FzZSAnaW5jcmVtZW50U2VsZWN0ZWRSZXN1bHQnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHNlbGVjdGVkUmVzdWx0OlxuICAgICAgICAgIHN0YXRlLnNlbGVjdGVkUmVzdWx0ID09PSBzdGF0ZS5yZXN1bHRzLmxlbmd0aCAtIDFcbiAgICAgICAgICAgID8gMFxuICAgICAgICAgICAgOiBzdGF0ZS5zZWxlY3RlZFJlc3VsdCArIDEsXG4gICAgICAgIGVuYWJsZUhpc3Rvcnk6IGZhbHNlLFxuICAgICAgfTtcbiAgICBjYXNlICdkZWNyZW1lbnRTZWxlY3RlZFJlc3VsdCc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgc2VsZWN0ZWRSZXN1bHQ6XG4gICAgICAgICAgc3RhdGUuc2VsZWN0ZWRSZXN1bHQgPCAxXG4gICAgICAgICAgICA/IHN0YXRlLnJlc3VsdHMubGVuZ3RoIC0gMVxuICAgICAgICAgICAgOiBzdGF0ZS5zZWxlY3RlZFJlc3VsdCAtIDEsXG4gICAgICAgIGVuYWJsZUhpc3Rvcnk6IGZhbHNlLFxuICAgICAgfTtcbiAgICBjYXNlICdwaWNrQ29tbWFuZEZyb21IaXN0b3J5JzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBzZWxlY3RlZFJlc3VsdDogMCxcbiAgICAgICAgc2VhcmNoVGV4dDogYWN0aW9uLnBheWxvYWQuc2VhcmNoVGV4dCxcbiAgICAgICAgcmVzdWx0czogYWN0aW9uLnBheWxvYWQucmVzdWx0cyxcbiAgICAgICAgc3RhY2s6IFtdLFxuICAgICAgICAvLyBUaGUgaGlzdG9yeSBkb2VzIG5vdCBnZXQgY2hhbmdlZCBoZXJlLCBpdCB3aWxsIGJlIGNoYW5nZWQgYWxvbmdcbiAgICAgICAgLy8gd2l0aCB0aGUgcmVndWxhciBmbG93LlxuICAgICAgfTtcbiAgICBjYXNlICdzZXROZXh0Q29tbWFuZHMnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHN0YWNrOiBbXG4gICAgICAgICAgLi4uc3RhdGUuc3RhY2ssXG4gICAgICAgICAge1xuICAgICAgICAgICAgc2VhcmNoVGV4dDogc3RhdGUuc2VhcmNoVGV4dCxcbiAgICAgICAgICAgIHJlc3VsdHM6IHN0YXRlLnJlc3VsdHMsXG4gICAgICAgICAgICBzZWxlY3RlZFJlc3VsdDogc3RhdGUuc2VsZWN0ZWRSZXN1bHQsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgc2VsZWN0ZWRSZXN1bHQ6IDAsXG4gICAgICAgIGVuYWJsZUhpc3Rvcnk6IGZhbHNlLFxuICAgICAgICByZXN1bHRzOiBhY3Rpb24ucGF5bG9hZC5yZXN1bHRzLFxuICAgICAgfTtcbiAgICBjYXNlICdzZXRQcmV2Q29tbWFuZHMnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHNlYXJjaFRleHQ6IGFjdGlvbi5wYXlsb2FkLnNlYXJjaFRleHQsXG4gICAgICAgIHJlc3VsdHM6IGFjdGlvbi5wYXlsb2FkLnJlc3VsdHMsXG4gICAgICAgIHNlbGVjdGVkUmVzdWx0OiAwLFxuICAgICAgICBlbmFibGVIaXN0b3J5OiBmYWxzZSxcbiAgICAgICAgLy8gb21pdCBsYXN0IGl0ZW1cbiAgICAgICAgc3RhY2s6IHN0YXRlLnN0YWNrLnNsaWNlKDAsIC0xKSxcbiAgICAgIH07XG4gICAgY2FzZSAnc2VhcmNoVGV4dCc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgc2VhcmNoVGV4dDogYWN0aW9uLnBheWxvYWQsXG4gICAgICAgIC8vIGNsZWFyIG5ldHdvcmsgZXJyb3Igd2hlbiBzZWFyY2ggdGV4dCBpcyBjbGVhcmVkLCBzbyB0aGF0IHVzZXJzXG4gICAgICAgIC8vIGFyZSB0ZW1wdGVkIHRvIHJldHJ5XG4gICAgICAgIGhhc05ldHdvcmtFcnJvcjogYWN0aW9uLnBheWxvYWQubGVuZ3RoID4gMCAmJiBzdGF0ZS5oYXNOZXR3b3JrRXJyb3IsXG4gICAgICB9O1xuICAgIGNhc2UgJ3NldFNlYXJjaFRleHRSZXN1bHRzJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICByZXN1bHRzOiBhY3Rpb24ucGF5bG9hZCxcbiAgICAgICAgc2VsZWN0ZWRSZXN1bHQ6IGFjdGlvbi5wYXlsb2FkLmxlbmd0aCA+IDAgPyAwIDogLTEsXG4gICAgICAgIGVuYWJsZUhpc3Rvcnk6IHRydWUsXG4gICAgICAgIHN0YWNrOiBbXSxcbiAgICAgIH07XG4gICAgY2FzZSAncmVzZXRTZWFyY2hUZXh0JzpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBzZWFyY2hUZXh0OiAnJywgcmVzdWx0czogW10sIHNlbGVjdGVkUmVzdWx0OiAtMSB9O1xuICAgIGNhc2UgJ3Jlc2V0UmVzdWx0c1doZW5DbG9zaW5nJzpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBzZWxlY3RlZFJlc3VsdDogLTEsIGVuYWJsZUhpc3Rvcnk6IHRydWUgfTtcbiAgICBjYXNlICdyZXNldCc6XG4gICAgICByZXR1cm4gaW5pdGlhbFN0YXRlO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gc3RhdGU7XG4gIH1cbn07XG5cbnR5cGUgUHJvcHMgPSB7XG4gIGhpc3RvcnlFbnRyaWVzOiBIaXN0b3J5RW50cnlbXTtcbiAgb25IaXN0b3J5RW50cmllc0NoYW5nZTogKGhpc3RvcnlFbnRyaWVzOiBIaXN0b3J5RW50cnlbXSkgPT4gdm9pZDtcbiAgc2VhcmNoOiAoc2VhcmNoVGV4dDogU2VhcmNoVGV4dCkgPT4gUHJvbWlzZTxDb21tYW5kW10+O1xuICBnZXROZXh0Q29tbWFuZHM6IChjb21tYW5kOiBDb21tYW5kKSA9PiBQcm9taXNlPENvbW1hbmRbXT47XG4gIGV4ZWN1dGVDb21tYW5kOiAoY29tbWFuZDogQ29tbWFuZCwgbWV0YTogeyBvcGVuSW5OZXdUYWI6IGJvb2xlYW4gfSkgPT4gdm9pZDtcbiAgb25DbG9zZTogKCkgPT4gdm9pZDtcbiAgY2xhc3NOYW1lU2hha2VBbmltYXRpb246IHN0cmluZztcbn07XG5jb25zdCBCdXRsZXIgPSAocHJvcHM6IFByb3BzKSA9PiB7XG4gIGNvbnN0IGludGwgPSB1c2VJbnRsKCk7XG4gIGNvbnN0IFtzdGF0ZSwgZGlzcGF0Y2hdID0gdXNlUmVkdWNlcjxcbiAgICAocHJldlN0YXRlOiBTdGF0ZSwgYWN0aW9uOiBBY3Rpb24pID0+IFN0YXRlXG4gID4ocmVkdWNlciwgaW5pdGlhbFN0YXRlKTtcblxuICBjb25zdCBzaG91bGRTZWxlY3RGaWVsZFRleHQgPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBpc05ld1dpbmRvd0NvbWJvID0gdXNlUmVmKGZhbHNlKTtcbiAgY29uc3Qgc2tpcE5leHRTZWxlY3Rpb24gPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBzZWFyY2hDb250YWluZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBzZWFyY2hJbnB1dFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKTtcblxuICBjb25zdCBzZXRIYXNOZXR3b3JrRXJyb3IgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgZGlzcGF0Y2goeyB0eXBlOiAnbmV0d29ya0Vycm9yJywgcGF5bG9hZDogdHJ1ZSB9KTtcbiAgfSwgW10pO1xuICBjb25zdCB1bnNldEhhc05ldHdvcmtFcnJvciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICduZXR3b3JrRXJyb3InLCBwYXlsb2FkOiBmYWxzZSB9KTtcbiAgfSwgW10pO1xuICBjb25zdCBzZXRJc0xvYWRpbmcgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgZGlzcGF0Y2goeyB0eXBlOiAnbG9hZGluZycsIHBheWxvYWQ6IHRydWUgfSk7XG4gIH0sIFtdKTtcbiAgY29uc3QgdW5zZXRJc0xvYWRpbmcgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgZGlzcGF0Y2goeyB0eXBlOiAnbG9hZGluZycsIHBheWxvYWQ6IGZhbHNlIH0pO1xuICB9LCBbXSk7XG5cbiAgLy8gRGVzdHJ1Y3R1cmUgZnVuY3Rpb25zIGZyb20gcHJvcHMgdG8gcmVmZXJlbmNlIHRoZW0gaW4gdGhlIGhvb2sgZGVwZW5kZW5jeSBsaXN0XG4gIGNvbnN0IHtcbiAgICBzZWFyY2g6IHNlYXJjaEZyb21QYXJlbnQsXG4gICAgb25DbG9zZTogb25DbG9zZUZyb21QYXJlbnQsXG4gICAgZXhlY3V0ZUNvbW1hbmQ6IGV4ZWN1dGVDb21tYW5kRnJvbVBhcmVudCxcbiAgICBvbkhpc3RvcnlFbnRyaWVzQ2hhbmdlOiBvbkhpc3RvcnlFbnRyaWVzQ2hhbmdlRnJvbVBhcmVudCxcbiAgICBnZXROZXh0Q29tbWFuZHM6IGdldE5leHRDb21tYW5kc0Zyb21QYXJlbnQsXG4gIH0gPSBwcm9wcztcblxuICBjb25zdCBzaGFrZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoc2VhcmNoQ29udGFpbmVyUmVmLmN1cnJlbnQpIHtcbiAgICAgIHNlYXJjaENvbnRhaW5lclJlZi5jdXJyZW50LmNsYXNzTGlzdC5yZW1vdmUoXG4gICAgICAgIHByb3BzLmNsYXNzTmFtZVNoYWtlQW5pbWF0aW9uXG4gICAgICApO1xuICAgICAgLy8gLT4gdHJpZ2dlcmluZyByZWZsb3dcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby12b2lkXG4gICAgICB2b2lkIHNlYXJjaENvbnRhaW5lclJlZi5jdXJyZW50Lm9mZnNldFdpZHRoO1xuICAgICAgc2VhcmNoQ29udGFpbmVyUmVmLmN1cnJlbnQuY2xhc3NMaXN0LmFkZChwcm9wcy5jbGFzc05hbWVTaGFrZUFuaW1hdGlvbik7XG4gICAgfVxuICB9LCBbcHJvcHMuY2xhc3NOYW1lU2hha2VBbmltYXRpb25dKTtcblxuICBjb25zdCBleGVjdXRlID0gdXNlQ2FsbGJhY2soXG4gICAgKGNvbW1hbmQsIG1ldGEpID0+IHtcbiAgICAgIC8vIE9ubHkgbWFpbiBlbnRyaWVzIGdldCBhZGRlZCB0byBoaXN0b3J5LCBzbyB3aGVuIGEgc3ViY29tbWFuZCBpcyBleGVjdXRlZCxcbiAgICAgIC8vIHdlIGFkZCB0aGUgbWFpbiBjb21tYW5kIG9mIGl0IHRvIHRoZSBoaXN0b3J5ICh0aGUgdG9wLWxldmVsIGNvbW1hbmQpLlxuICAgICAgLy9cbiAgICAgIC8vIFRoZSBrZXkgdG8gaWRlbnRpZnkgaGlzdG9yeSBlbnRyaWVzIGJ5IGlzIGFsd2F5cyB0aGUgc2VhcmNoVGV4dFxuICAgICAgLy8gVGhlcmUgd2lsbCBuZXZlciBiZSB0d28gaGlzdG9yeSBlbnRyaWVzIHdpdGggdGhlIHNhbWUgc2VhcmNoVGV4dFxuICAgICAgY29uc3QgZW50cnkgPVxuICAgICAgICBzdGF0ZS5zdGFjay5sZW5ndGggPT09IDBcbiAgICAgICAgICA/IC8vIFRoZSBzdGFjayBpcyBlbXB0eSwgc28gd2UgYXJlIGV4ZWN1dGluZyBhIHRvcC1sZXZlbCBjb21tYW5kXG4gICAgICAgICAgICB7IHNlYXJjaFRleHQ6IHN0YXRlLnNlYXJjaFRleHQsIHJlc3VsdHM6IHN0YXRlLnJlc3VsdHMgfVxuICAgICAgICAgIDogLy8gV2UgYXJlIGV4ZWN1dGluZyBhIHN1YmNvbW1hbmQsIHNvIHdlIGdldCB0aGUgdG9wLWxldmVsIGNvbW1hbmQgZm9yIGl0LFxuICAgICAgICAgICAgLy8gd2hpY2ggaXMgYXQgdGhlIGJvdHRvbSBvZiB0aGUgc3RhY2suXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHNlYXJjaFRleHQ6IHN0YXRlLnN0YWNrWzBdLnNlYXJjaFRleHQsXG4gICAgICAgICAgICAgIHJlc3VsdHM6IHN0YXRlLnN0YWNrWzBdLnJlc3VsdHMsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAvLyBBZGQgdGhlIGVudHJ5IHRvIHRoZSBoaXN0b3J5LCB3aGlsZSBleGNsdWRpbmcgYW55IGVhcmxpZXIgaGlzdG9yeSBlbnRyeVxuICAgICAgLy8gd2l0aCB0aGUgc2FtZSBzZWFyY2ggdGV4dC4gVGhpcyBlZmZlY3RpdmVseSBcIm1vdmVzXCIgdGhhdCBlbnRyeSB0byB0aGVcbiAgICAgIC8vIHRvcCBvZiB0aGUgaGlzdG9yeSAod2l0aCB0aGUgbW9zdCByZWNlbnQgcmVzdWx0cyksIG9yIGFwcGVuZHMgYSBuZXcgZW50cnlcbiAgICAgIC8vIHdoZW4gaXQgZGlkbid0IGV4aXN0IGJlZm9yZS5cbiAgICAgIG9uSGlzdG9yeUVudHJpZXNDaGFuZ2VGcm9tUGFyZW50KFtcbiAgICAgICAgLi4ucHJvcHMuaGlzdG9yeUVudHJpZXMuZmlsdGVyKFxuICAgICAgICAgIChjb21tYW5kKSA9PiBjb21tYW5kLnNlYXJjaFRleHQgIT09IGVudHJ5LnNlYXJjaFRleHRcbiAgICAgICAgKSxcbiAgICAgICAgZW50cnksXG4gICAgICBdKTtcblxuICAgICAgZGlzcGF0Y2goeyB0eXBlOiAncmVzZXRTZWFyY2hUZXh0JyB9KTtcblxuICAgICAgb25DbG9zZUZyb21QYXJlbnQoKTtcblxuICAgICAgZXhlY3V0ZUNvbW1hbmRGcm9tUGFyZW50KGNvbW1hbmQsIG1ldGEpO1xuICAgIH0sXG4gICAgW1xuICAgICAgZXhlY3V0ZUNvbW1hbmRGcm9tUGFyZW50LFxuICAgICAgb25DbG9zZUZyb21QYXJlbnQsXG4gICAgICBvbkhpc3RvcnlFbnRyaWVzQ2hhbmdlRnJvbVBhcmVudCxcbiAgICAgIHByb3BzLmhpc3RvcnlFbnRyaWVzLFxuICAgICAgc3RhdGUucmVzdWx0cyxcbiAgICAgIHN0YXRlLnNlYXJjaFRleHQsXG4gICAgICBzdGF0ZS5zdGFjayxcbiAgICBdXG4gICk7XG4gIGNvbnN0IGhhbmRsZUtleURvd24gPSB1c2VDYWxsYmFjazxLZXlib2FyZEV2ZW50SGFuZGxlcjxIVE1MSW5wdXRFbGVtZW50Pj4oXG4gICAgKGV2ZW50KSA9PiB7XG4gICAgICAvLyBQcmV2ZW50aW5nIGN1cnNvciBqdW1wcyBjYW4gb25seSBoYXBwZW4gaW4gb25LZXlEb3duLCBidXQgbm90IGluIG9uS2V5VXBcbiAgICAgIGV2ZW50LnBlcnNpc3QoKTtcblxuICAgICAgLy8gV2Ugd2FudCB0byBrbm93IHdoZW4gdGhlIHVzZXIgcHJlc3NlcyBjbWQrZW50ZXIgKGNtZCBiZWluZyBhIG1ldGEga2V5KS5cbiAgICAgIC8vIFdlIGFyZSBvbmx5IHRvbGQgYWJvdXQgdGhpcyBpbiBrZXlEb3duLCBidXQgbm90IGluIGtleVVwLCBzbyB3ZSBuZWVkXG4gICAgICAvLyB0byBoYW5kbGUgaXQgaGVyZVxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJyAmJiBoYXNOZXdXaW5kb3dNb2RpZmllcihldmVudCkpIHtcbiAgICAgICAgaXNOZXdXaW5kb3dDb21iby5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBBdm9pZCBzZWxlY3RpbmcgdGhlIHdob2xlIHBhZ2Ugd2hlbiB1c2VyIHNlbGVjdGVzIGV2ZXJ5dGhpbmcgd2l0aFxuICAgICAgLy8gYSBrZXlib2FyZCBzaG9ydGN1dC4gVGhlcmUgaXMgcHJvYmFibHkgYSBiZXR0ZXIgd2F5IHRvIGRvIHRoaXMgdGhvdWdoLlxuICAgICAgLy8gVGhpcyBwcmV2ZW50cyB0aGUgd2hvbGUgcGFnZSBmcm9tIGJlaW5nIHNlbGVjdGVkIGluIGNhc2UgdGhlIHVzZXJcbiAgICAgIC8vIDEpIG9wZW5zIHRoZSBzZWFyY2ggYm94XG4gICAgICAvLyAyKSB0eXBlcyBpbnRvIGl0XG4gICAgICAvLyAzKSBzZWxlY3RzIGFsbCB0ZXh0IHVzaW5nIGNtZCthXG4gICAgICAvLyA0KSBjbG9zZXMgdGhlIHNlYXJjaCBib3ggd2l0aCBlc2NcbiAgICAgIC8vIFdpdGhvdXQgdGhpcyBoYW5kbGluZywgdGhlIHdob2xlIHBhZ2Ugd291bGQgbm93IGJlIHNlbGVjdGVkXG4gICAgICBpZiAoaXNTZWxlY3RBbGxDb21ibyhldmVudCkpIHtcbiAgICAgICAgLy8gVGhpcyBzdG9wcyB0aGUgYnJvd3NlciBmcm9tIHNlbGVjdGluZyBhbnl0aGluZ1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpZiAoc2VhcmNoSW5wdXRSZWYuY3VycmVudCkge1xuICAgICAgICAgIC8vIFRoaXMgc2VsZWN0cyB0aGUgdGV4dCBpbiB0aGUgc2VhcmNoIGlucHV0XG4gICAgICAgICAgc2VhcmNoSW5wdXRSZWYuY3VycmVudC5zZXRTZWxlY3Rpb25SYW5nZSgwLCBzdGF0ZS5zZWFyY2hUZXh0Lmxlbmd0aCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBhdm9pZCBpbnRlcmZlcmluZyB3aXRoIG90aGVyIGtleSBjb21iaW5hdGlvbnMgdXNpbmcgbW9kaWZpZXIga2V5c1xuICAgICAgaWYgKGV2ZW50LmN0cmxLZXkgfHwgZXZlbnQuYWx0S2V5IHx8IGV2ZW50LnNoaWZ0S2V5IHx8IGV2ZW50Lm1ldGFLZXkpXG4gICAgICAgIHJldHVybjtcbiAgICAgIGlmIChpc0Nsb3NlQ29tYm8oZXZlbnQpKSByZXR1cm47XG5cbiAgICAgIC8vIHNraXAgbmV4dCBtb3VzZUVudGVyIHRvIGF2b2lkIHNldHRpbmcgc2VsZWN0ZWRSZXN1bHQgd2hlbiBjdXJzb3IganVzdFxuICAgICAgLy8gaGFwcGVucyB0byBiZSB3aGVyZSB0aGUgcmVzdWx0cyB3aWxsIHBvcCB1cFxuICAgICAgc2tpcE5leHRTZWxlY3Rpb24uY3VycmVudCA9IHRydWU7XG5cbiAgICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XG4gICAgICAgIC8vIHByZXZlbnQgY3Vyc29yIGZyb20ganVtcGluZyB0byBlbmQgb2YgdGV4dCBpbnB1dFxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBkaXNwYXRjaCh7IHR5cGU6ICdpbmNyZW1lbnRTZWxlY3RlZFJlc3VsdCcgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1VwJykge1xuICAgICAgICAvLyBicm93c2UgdGhyb3VnaCBoaXN0b3J5XG4gICAgICAgIGlmIChcbiAgICAgICAgICBzdGF0ZS5zZWFyY2hUZXh0Lmxlbmd0aCA9PT0gMCB8fFxuICAgICAgICAgIChzdGF0ZS5zZWxlY3RlZFJlc3VsdCA8IDEgJiYgc3RhdGUuZW5hYmxlSGlzdG9yeSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgc2hvdWxkU2VsZWN0RmllbGRUZXh0LmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICAgIGNvbnN0IHNlbGVjdGVkSW5kZXggPVxuICAgICAgICAgICAgc3RhdGUuc2VhcmNoVGV4dC5sZW5ndGggPT09IDBcbiAgICAgICAgICAgICAgPyAvLyBXaGVuIGdvaW5nIGJhY2sgdGhlIGZpcnN0IHN0ZXBcbiAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICA6IC8vIFdoZW4gZ29pbmcgYmFjayBtb3JlIHRoYW4gb25lIHN0ZXBcbiAgICAgICAgICAgICAgICBwcm9wcy5oaXN0b3J5RW50cmllcy5maW5kSW5kZXgoXG4gICAgICAgICAgICAgICAgICAoY29tbWFuZCkgPT4gY29tbWFuZC5zZWFyY2hUZXh0ID09PSBzdGF0ZS5zZWFyY2hUZXh0XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAvLyBQaWNrIHRoZSBwcmV2aW91cyBjb21tYW5kIGZyb20gdGhlIGhpc3RvcnlcbiAgICAgICAgICBjb25zdCBwcmV2Q29tbWFuZCA9XG4gICAgICAgICAgICBzZWxlY3RlZEluZGV4ID09PSAtMVxuICAgICAgICAgICAgICA/IC8vIHByZXZpb3VzIGNvbW1hbmQgb24gdG9wIG9mIHRoZSBoaXN0b3J5IHdoZW4gZ29pbmcgYmFjayBvblxuICAgICAgICAgICAgICAgIC8vIGZpcnN0IHN0ZXBcbiAgICAgICAgICAgICAgICBsYXN0KHByb3BzLmhpc3RvcnlFbnRyaWVzKVxuICAgICAgICAgICAgICA6IC8vIHByZXZpb3VzIGNvbW1hbmQgaXMgZGVlcGVyIGRvd25cbiAgICAgICAgICAgICAgICAvLyBXaGVuIHRoZSBoaXN0b3J5IGRvZXMgbm90IGV4aXN0IChuZWdhdGl2ZSBpbmRleCksIHRoZW5cbiAgICAgICAgICAgICAgICAvLyB0aGlzIGltcGxpY2l0bHkgcmV0dXJucyB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICBwcm9wcy5oaXN0b3J5RW50cmllc1tzZWxlY3RlZEluZGV4IC0gMV07XG4gICAgICAgICAgLy8gU2tpcCB3aGVuIG5vIHByZXZpb3VzIGVudHJ5IGV4aXN0cyBpbiB0aGUgaGlzdG9yeVxuICAgICAgICAgIGlmICghcHJldkNvbW1hbmQpIHJldHVybjtcbiAgICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgICB0eXBlOiAncGlja0NvbW1hbmRGcm9tSGlzdG9yeScsXG4gICAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICAgIHNlYXJjaFRleHQ6IHByZXZDb21tYW5kLnNlYXJjaFRleHQsXG4gICAgICAgICAgICAgIHJlc3VsdHM6IHByZXZDb21tYW5kLnJlc3VsdHMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBwcmV2ZW50IGN1cnNvciBmcm9tIGp1bXBpbmcgdG8gYmVnaW5uaW5nIG9mIHRleHQgaW5wdXRcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZGlzcGF0Y2goeyB0eXBlOiAnZGVjcmVtZW50U2VsZWN0ZWRSZXN1bHQnIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoc3RhdGUuc2VsZWN0ZWRSZXN1bHQgPiAtMSkge1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dSaWdodCcpIHtcbiAgICAgICAgICBjb25zdCBjb21tYW5kID0gc3RhdGUucmVzdWx0c1tzdGF0ZS5zZWxlY3RlZFJlc3VsdF07XG4gICAgICAgICAgY29uc3Qgc2VhcmNoVGV4dCA9IHN0YXRlLnNlYXJjaFRleHQ7XG4gICAgICAgICAgY29uc3QgaXNDdXJzb3JBdEVuZCA9XG4gICAgICAgICAgICBzZWFyY2hJbnB1dFJlZi5jdXJyZW50ICYmXG4gICAgICAgICAgICBzdGF0ZS5zZWFyY2hUZXh0Lmxlbmd0aCA9PT0gc2VhcmNoSW5wdXRSZWYuY3VycmVudC5zZWxlY3Rpb25TdGFydDtcblxuICAgICAgICAgIGNvbnN0IGlzRXZlcnl0aGluZ1NlbGVjdGVkID1cbiAgICAgICAgICAgIHNlYXJjaElucHV0UmVmLmN1cnJlbnQgJiZcbiAgICAgICAgICAgIHNlYXJjaElucHV0UmVmLmN1cnJlbnQuc2VsZWN0aW9uU3RhcnQgPT09IDAgJiZcbiAgICAgICAgICAgIHN0YXRlLnNlYXJjaFRleHQubGVuZ3RoID09PSBzZWFyY2hJbnB1dFJlZi5jdXJyZW50LnNlbGVjdGlvbkVuZDtcblxuICAgICAgICAgIC8vIG9ubHkgYWxsb3cgZGl2aW5nIGluIHdoZW4gY3Vyc29yIGlzIGF0IGVuZCBvZiBpbnB1dCBvciB3aGVuXG4gICAgICAgICAgLy8gdGhlIGNvbXBsZXRlIHRleHQgaXMgc2VsZWN0ZWQgKHdoZW4gYnJvd3NpbmcgdGhyb3VnaCBoaXN0b3J5KVxuICAgICAgICAgIGlmICghaXNDdXJzb3JBdEVuZCAmJiAhaXNFdmVyeXRoaW5nU2VsZWN0ZWQpIHJldHVybjtcblxuICAgICAgICAgIHVuc2V0SGFzTmV0d29ya0Vycm9yKCk7XG5cbiAgICAgICAgICAvLyBOT1RFOiBzaW5jZSB3ZSBuZWVkIHRvIGZldGNoIHRoZSBcIm5leHQgY29tbWFuZFwiLCB3aGljaCBpcyBhbiBhc3luYyBvcGVyYXRpb24sXG4gICAgICAgICAgLy8gd2UgdXNlIGEgSUlGRSB0byBwcm9jZXNzIHRoYXQgYW5kIGV2ZW50dWFsbHkgdXBkYXRlIHRoZSBzdGF0ZS5cbiAgICAgICAgICAoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGNvbW1hbmQpIHtcbiAgICAgICAgICAgICAgY29uc3QgbmV4dENvbW1hbmRzID0gYXdhaXQgZ2V0TmV4dENvbW1hbmRzRnJvbVBhcmVudChjb21tYW5kKTtcbiAgICAgICAgICAgICAgLy8gYXZvaWQgbW92aW5nIGN1cnNvciB3aGVuIHRoZXJlIGFyZSBzdWItb3B0aW9uc1xuICAgICAgICAgICAgICBpZiAobmV4dENvbW1hbmRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAvLyBFbnN1cmUgdGhlIHNlYXJjaCB0ZXh0IGhhcyBub3QgY2hhbmdlZCB3aGlsZSB3ZSB3ZXJlIGxvYWRpbmdcbiAgICAgICAgICAgICAgICAvLyB0aGUgbmV4dCByZXN1bHRzLCBvdGhlcndpc2Ugd2UnZCBpbnRlcnJ1cHQgdGhlIHVzZXIuXG4gICAgICAgICAgICAgICAgLy8gVGhyb3cgYXdheSB0aGUgcmVzdWx0cyBpbiBjYXNlIHRoZSBzZWFyY2ggdGV4dCBoYXMgY2hhbmdlZC5cbiAgICAgICAgICAgICAgICBpZiAoc3RhdGUuc2VhcmNoVGV4dCA9PT0gc2VhcmNoVGV4dCkge1xuICAgICAgICAgICAgICAgICAgZGlzcGF0Y2goe1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnc2V0TmV4dENvbW1hbmRzJyxcbiAgICAgICAgICAgICAgICAgICAgcGF5bG9hZDogeyByZXN1bHRzOiBuZXh0Q29tbWFuZHMgfSxcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNoYWtlKCk7XG4gICAgICAgICAgfSkoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93TGVmdCcpIHtcbiAgICAgICAgICAvLyBnbyBsZWZ0IGluIHN0YWNrXG4gICAgICAgICAgY29uc3QgcHJldkNvbW1hbmQgPSBsYXN0KHN0YXRlLnN0YWNrKTtcblxuICAgICAgICAgIC8vIGRvIG5vdGhpbmcgd2hlbiB3ZSBjYW4ndCBnbyBsZWZ0IGFueW1vcmVcbiAgICAgICAgICBpZiAoIXByZXZDb21tYW5kKSByZXR1cm47XG5cbiAgICAgICAgICAvLyBwcmV2ZW50IGN1cnNvciBmcm9tIGp1bXBpbmcgYSBjaGFyIHRvIHRoZSBsZWZ0IGluIHRleHQgaW5wdXRcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgZGlzcGF0Y2goe1xuICAgICAgICAgICAgdHlwZTogJ3NldFByZXZDb21tYW5kcycsXG4gICAgICAgICAgICBwYXlsb2FkOiB7XG4gICAgICAgICAgICAgIHNlYXJjaFRleHQ6IHByZXZDb21tYW5kLnNlYXJjaFRleHQsXG4gICAgICAgICAgICAgIHJlc3VsdHM6IHByZXZDb21tYW5kLnJlc3VsdHMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgZ2V0TmV4dENvbW1hbmRzRnJvbVBhcmVudCxcbiAgICAgIHByb3BzLmhpc3RvcnlFbnRyaWVzLFxuICAgICAgc2hha2UsXG4gICAgICBzdGF0ZSxcbiAgICAgIHVuc2V0SGFzTmV0d29ya0Vycm9yLFxuICAgIF1cbiAgKTtcbiAgY29uc3QgaGFuZGxlS2V5VXAgPSB1c2VDYWxsYmFjazxLZXlib2FyZEV2ZW50SGFuZGxlcjxIVE1MSW5wdXRFbGVtZW50Pj4oXG4gICAgKGV2ZW50KSA9PiB7XG4gICAgICAvLyBzZXR0aW5nIHRoZSBzZWxlY3Rpb24gY2FuIG9ubHkgaGFwcGVuIGluIG9uS2V5VXBcbiAgICAgIGlmIChzaG91bGRTZWxlY3RGaWVsZFRleHQuY3VycmVudCkge1xuICAgICAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICBpbnB1dC5mb2N1cygpO1xuICAgICAgICBpbnB1dC5zZWxlY3QoKTtcbiAgICAgICAgc2hvdWxkU2VsZWN0RmllbGRUZXh0LmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGV2ZW50LmtleSAhPT0gJ0VudGVyJyAmJiAhaXNOZXdXaW5kb3dDb21iby5jdXJyZW50KSByZXR1cm4gdHJ1ZTtcblxuICAgICAgLy8gVXNlciBqdXN0IHRyaWdnZXJlZCB0aGUgc2VhcmNoXG4gICAgICBpZiAoc3RhdGUuc2VsZWN0ZWRSZXN1bHQgPT09IC0xKSByZXR1cm4gdHJ1ZTtcblxuICAgICAgLy8gVXNlciBoYWQgc29tZXRoaW5nIHNlbGVjdGVkIGFuZCB3YW50cyB0byBnbyB0aGVyZVxuICAgICAgZXhlY3V0ZShzdGF0ZS5yZXN1bHRzW3N0YXRlLnNlbGVjdGVkUmVzdWx0XSwge1xuICAgICAgICBvcGVuSW5OZXdUYWI6IGlzTmV3V2luZG93Q29tYm8uY3VycmVudCxcbiAgICAgIH0pO1xuXG4gICAgICBpc05ld1dpbmRvd0NvbWJvLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAgW2V4ZWN1dGUsIHN0YXRlLnJlc3VsdHMsIHN0YXRlLnNlbGVjdGVkUmVzdWx0XVxuICApO1xuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSB1c2VDYWxsYmFjazxDaGFuZ2VFdmVudEhhbmRsZXI8SFRNTElucHV0RWxlbWVudD4+KFxuICAgIChldmVudCkgPT4ge1xuICAgICAgY29uc3Qgc2VhcmNoVGV4dCA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICAgIGlmIChzZWFyY2hUZXh0LnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgZGlzcGF0Y2goeyB0eXBlOiAncmVzZXQnIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGRpc3BhdGNoKHsgdHlwZTogJ3NlYXJjaFRleHQnLCBwYXlsb2FkOiBzZWFyY2hUZXh0IH0pO1xuXG4gICAgICAvLyBBIHNlYXJjaCB2aWEgbmV0d29yayBpcyBvbmx5IHRyaWdnZXJlZCB3aGVuIHRoZXJlXG4gICAgICAvLyBhcmUgbW9yZSB0aGFuIHRocmVlIGNoYXJhY3RlcnMuIFNvIG5vIGZhbHNlIGxvYWRpbmdcbiAgICAgIC8vIGluZGljYXRpb24gaXMgZ2l2ZW4uXG4gICAgICBpZiAoc2VhcmNoVGV4dC50cmltKCkubGVuZ3RoID4gMykge1xuICAgICAgICBzZXRJc0xvYWRpbmcoKTtcbiAgICAgIH1cblxuICAgICAgc2VhcmNoRnJvbVBhcmVudChzZWFyY2hUZXh0KS50aGVuKFxuICAgICAgICAoYXN5bmNSZXN1bHRzOiBDb21tYW5kW10pID0+IHtcbiAgICAgICAgICB1bnNldEhhc05ldHdvcmtFcnJvcigpO1xuICAgICAgICAgIHVuc2V0SXNMb2FkaW5nKCk7XG5cbiAgICAgICAgICBjb25zdCBmdXNlID0gbmV3IEZ1c2UoYXN5bmNSZXN1bHRzLCB7XG4gICAgICAgICAgICBrZXlzOiBbXG4gICAgICAgICAgICAgIHsgbmFtZTogJ3RleHQnLCB3ZWlnaHQ6IDAuNiB9LFxuICAgICAgICAgICAgICB7IG5hbWU6ICdrZXl3b3JkcycsIHdlaWdodDogMC40IH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgbWluTWF0Y2hDaGFyTGVuZ3RoOiAyLFxuICAgICAgICAgICAgaW5jbHVkZVNjb3JlOiB0cnVlLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY29uc3Qgc2VhcmNoUmVzdWx0cyA9IGZ1c2VcbiAgICAgICAgICAgIC5zZWFyY2goc2VhcmNoVGV4dClcbiAgICAgICAgICAgIC8vIEZpbHRlciBvdXQgcmVzdWx0cyB3aXRoIGEgbWF0Y2hpbmcgc2NvcmUgb3ZlciAwLjc1XG4gICAgICAgICAgICAuZmlsdGVyKChyZXN1bHQpID0+IChyZXN1bHQuc2NvcmUgPyByZXN1bHQuc2NvcmUgPCAwLjc1IDogZmFsc2UpKVxuICAgICAgICAgICAgLy8gS2VlcCBhIG1heGltYWwgb2YgOSByZXN1bHRzXG4gICAgICAgICAgICAuc2xpY2UoMCwgOSk7XG5cbiAgICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgICB0eXBlOiAnc2V0U2VhcmNoVGV4dFJlc3VsdHMnLFxuICAgICAgICAgICAgcGF5bG9hZDogc2VhcmNoUmVzdWx0cy5tYXAoKHJlc3VsdCkgPT4gcmVzdWx0Lml0ZW0pLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICAoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgdW5zZXRJc0xvYWRpbmcoKTtcbiAgICAgICAgICBzZXRIYXNOZXR3b3JrRXJyb3IoKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9LFxuICAgIFtcbiAgICAgIHNlYXJjaEZyb21QYXJlbnQsXG4gICAgICBzZXRIYXNOZXR3b3JrRXJyb3IsXG4gICAgICBzZXRJc0xvYWRpbmcsXG4gICAgICB1bnNldEhhc05ldHdvcmtFcnJvcixcbiAgICAgIHVuc2V0SXNMb2FkaW5nLFxuICAgIF1cbiAgKTtcbiAgY29uc3QgaGFuZGxlQ29udGFpbmVyQ2xpY2sgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgZGlzcGF0Y2goeyB0eXBlOiAncmVzZXRSZXN1bHRzV2hlbkNsb3NpbmcnIH0pO1xuICAgIG9uQ2xvc2VGcm9tUGFyZW50KCk7XG4gIH0sIFtvbkNsb3NlRnJvbVBhcmVudF0pO1xuXG4gIGNvbnN0IGNyZWF0ZUNvbW1hbmRNb3VzZUVudGVySGFuZGxlciA9IHVzZUNhbGxiYWNrPFxuICAgIChpbmRleDogbnVtYmVyKSA9PiBNb3VzZUV2ZW50SGFuZGxlcjxIVE1MRGl2RWxlbWVudD5cbiAgPihcbiAgICAoaW5kZXgpID0+ICgpID0+IHtcbiAgICAgIC8vIEluIGNhc2UgdGhlIGN1cnNvciBoYXBwZW5lZCB0byBiZSBpbiBhIGxvY2F0aW9uIHdoZXJlIGFcbiAgICAgIC8vIHJlc3VsdCB3b3VsZCBhcHBlYXIsIGl0IHdvdWxkIHRyaWdnZXIgb25Nb3VzZUVudGVyIGFuZCB0aGVcbiAgICAgIC8vIHJlc3VsdCB3b3VsZCBiZSBzZWxlY3RlZCBpbW1lZGlhdGVseS4gVGhpcyBpcyBub3Qgc29tZXRoaW5nXG4gICAgICAvLyBhIHVzZXIgd291bGQgZXhwZWN0LCBoZW5jZSB3ZSBwcmV2ZW50IGl0IGZyb20gaGFwcGVuaW5nLlxuICAgICAgLy8gVGhlIHVzZXIgaGFzIHRvIG1vdmUgdGhlIGN1cnNvciB0byBhbiBvcHRpb24gZXhwbGljaXRseSBmb3JcbiAgICAgIC8vIGl0IHRvIGJlY29tZSBhY3RpdmUuIEhvd2V2ZXIsIHRoZSB1c2VyIGNhbiBhbHdheXMgY2xpY2sgYW5kXG4gICAgICAvLyB0aGF0IGFjdGlvbiB3aWxsIGJlIHRyaWdnZXJlZC5cbiAgICAgIGlmIChza2lwTmV4dFNlbGVjdGlvbi5jdXJyZW50KSB7XG4gICAgICAgIHNraXBOZXh0U2VsZWN0aW9uLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBzZXRzIHRoZSBzZWxlY3RlZCByZXN1bHQsIG1haW5seSBmb3IgdGhlIGhvdmVyIGVmZmVjdFxuICAgICAgZGlzcGF0Y2goeyB0eXBlOiAnc2VsZWN0ZWRSZXN1bHQnLCBwYXlsb2FkOiBpbmRleCB9KTtcbiAgICB9LFxuICAgIFtdXG4gICk7XG4gIGNvbnN0IGNyZWF0ZUNvbW1hbmRDbGlja0hhbmRsZXIgPSB1c2VDYWxsYmFjazxcbiAgICAoY29tbWFuZDogQ29tbWFuZCkgPT4gTW91c2VFdmVudEhhbmRsZXI8SFRNTERpdkVsZW1lbnQ+XG4gID4oXG4gICAgKGNvbW1hbmQpID0+IChldmVudCkgPT4ge1xuICAgICAgZXhlY3V0ZShjb21tYW5kLCB7XG4gICAgICAgIG9wZW5Jbk5ld1RhYjogaGFzTmV3V2luZG93TW9kaWZpZXIoZXZlbnQpLFxuICAgICAgfSk7XG4gICAgfSxcbiAgICBbZXhlY3V0ZV1cbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxCdXRsZXJDb250YWluZXJcbiAgICAgIG9uQ2xpY2s9e2hhbmRsZUNvbnRhaW5lckNsaWNrfVxuICAgICAgZGF0YS10ZXN0aWQ9XCJxdWljay1hY2Nlc3NcIlxuICAgICAgdGFiSW5kZXg9ey0xfVxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgcmVmPXtzZWFyY2hDb250YWluZXJSZWZ9XG4gICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7Y3VzdG9tUHJvcGVydGllcy5jb2xvclN1cmZhY2V9O1xuICAgICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAke2N1c3RvbVByb3BlcnRpZXMuYm9yZGVyUmFkaXVzNH07XG4gICAgICAgICAgbWluLWhlaWdodDogNDBweDtcblxuICAgICAgICAgIC8qIG9uZSBtb3JlIHRoYW4gYXBwLWJhciAoMjAwMDApIGFuZCBvbmUgbW9yZSB0aGFuIHRoZSBvdmVybGF5ICgyMDAwMSkgKi9cbiAgICAgICAgICB6LWluZGV4OiAyMDAwMjtcbiAgICAgICAgICB3aWR0aDogNDAwcHg7XG4gICAgICAgICAgbWFyZ2luOiA0MHB4IGF1dG87XG4gICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMTBweCAzMHB4IC04cHggcmdiYSgwLCAwLCAwLCAwLjc1KTtcbiAgICAgICAgICAtbW96LWJveC1zaGFkb3c6IDAgMTBweCAzMHB4IC04cHggcmdiYSgwLCAwLCAwLCAwLjc1KTtcbiAgICAgICAgICBib3gtc2hhZG93OiAwIDEwcHggMzBweCAtOHB4IHJnYmEoMCwgMCwgMCwgMC43NSk7XG4gICAgICAgICAgcGFkZGluZy1ib3R0b206ICR7c3RhdGUuaGFzTmV0d29ya0Vycm9yXG4gICAgICAgICAgICA/ICcwJ1xuICAgICAgICAgICAgOiBjdXN0b21Qcm9wZXJ0aWVzLnNwYWNpbmdTfTtcbiAgICAgICAgYH1cbiAgICAgICAgb25DbGljaz17KGV2ZW50KSA9PiB7XG4gICAgICAgICAgLy8gQXZvaWQgY2xvc2luZyB3aGVuIHRoZSBzZWFyY2hDb250YWluZXIgaXRzZWxmIGlzIGNsaWNrZWRcbiAgICAgICAgICAvLyBJZiB3ZSBkb24ndCBkbyB0aGlzLCB0aGVuIHRoZSBvdmVybGF5IHdpbGwgY2xvc2Ugd2hlbiBlLmcuXG4gICAgICAgICAgLy8gdGhlIHNlYXJjaCBpbnB1dCBpcyBjbGlja2VkLlxuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAgYH1cbiAgICAgICAgPlxuICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgaHRtbEZvcj1cInF1aWNrLWFjY2Vzcy1zZWFyY2gtaW5wdXRcIlxuICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ019O1xuICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ1N9O1xuICAgICAgICAgICAgYH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8U2VhcmNoSWNvbiBjb2xvcj1cIm5ldXRyYWw2MFwiIC8+XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIGlkPVwicXVpY2stYWNjZXNzLXNlYXJjaC1pbnB1dFwiXG4gICAgICAgICAgICByZWY9e3NlYXJjaElucHV0UmVmfVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9e2ludGwuZm9ybWF0TWVzc2FnZShtZXNzYWdlcy5pbnB1dFBsYWNlaG9kZXIpfVxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICBib3JkZXI6IDA7XG4gICAgICAgICAgICAgIG91dGxpbmU6IDA7XG4gICAgICAgICAgICAgIGZvbnQtc2l6ZTogMjJweDtcbiAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgICAgICAgICAgICAgcGFkZGluZzogJHtjdXN0b21Qcm9wZXJ0aWVzLnNwYWNpbmdNfSAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ019XG4gICAgICAgICAgICAgICAgJHtjdXN0b21Qcm9wZXJ0aWVzLnNwYWNpbmdTfSAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ1N9O1xuICAgICAgICAgICAgICAmOjpwbGFjZWhvbGRlciB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICR7Y3VzdG9tUHJvcGVydGllcy5jb2xvck5ldXRyYWw2MH07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGB9XG4gICAgICAgICAgICB2YWx1ZT17c3RhdGUuc2VhcmNoVGV4dH1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICBvbktleURvd249e2hhbmRsZUtleURvd259XG4gICAgICAgICAgICBvbktleVVwPXtoYW5kbGVLZXlVcH1cbiAgICAgICAgICAgIGF1dG9Gb2N1cz17dHJ1ZX1cbiAgICAgICAgICAgIGF1dG9Db21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICBkYXRhLXRlc3RpZD1cInF1aWNrLWFjY2Vzcy1zZWFyY2gtaW5wdXRcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAge3N0YXRlLmlzTG9hZGluZyAmJiAoXG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ1N9O1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogJHtjdXN0b21Qcm9wZXJ0aWVzLnNwYWNpbmdTfTtcbiAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPExvYWRpbmdTcGlubmVyIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgeygoKSA9PiB7XG4gICAgICAgICAgaWYgKHN0YXRlLmhhc05ldHdvcmtFcnJvcilcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICAgICAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJHtjdXN0b21Qcm9wZXJ0aWVzLmNvbG9yRXJyb3J9O1xuICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiAke2N1c3RvbVByb3BlcnRpZXMuY29sb3JTdXJmYWNlfTtcbiAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogJHtjdXN0b21Qcm9wZXJ0aWVzLmZvbnRTaXplU21hbGx9O1xuICAgICAgICAgICAgICAgICAgcGFkZGluZzogJHtjdXN0b21Qcm9wZXJ0aWVzLnNwYWNpbmdYc307XG4gICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIHsuLi5tZXNzYWdlcy5vZmZsaW5lfSAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAoc3RhdGUucmVzdWx0cy5sZW5ndGggPT09IDAgJiYgc3RhdGUuc2VhcmNoVGV4dC50cmltKCkubGVuZ3RoID4gMClcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICAgICAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogJHtjdXN0b21Qcm9wZXJ0aWVzLmNvbG9yTmV1dHJhbH07XG4gICAgICAgICAgICAgICAgICBjb2xvcjogJHtjdXN0b21Qcm9wZXJ0aWVzLmNvbG9yU29saWR9O1xuICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogJHtjdXN0b21Qcm9wZXJ0aWVzLmZvbnRTaXplU21hbGx9O1xuICAgICAgICAgICAgICAgICAgcGFkZGluZzogJHtjdXN0b21Qcm9wZXJ0aWVzLnNwYWNpbmdYc307XG4gICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIHsuLi5tZXNzYWdlcy5ub1Jlc3VsdHN9IC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgIHJldHVybiBzdGF0ZS5yZXN1bHRzLm1hcCgoY29tbWFuZCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxCdXRsZXJDb21tYW5kXG4gICAgICAgICAgICAgIGtleT17Y29tbWFuZC5pZH1cbiAgICAgICAgICAgICAgY29tbWFuZD17Y29tbWFuZH1cbiAgICAgICAgICAgICAgaXNTZWxlY3RlZD17c3RhdGUuc2VsZWN0ZWRSZXN1bHQgPT09IGluZGV4fVxuICAgICAgICAgICAgICBvbk1vdXNlRW50ZXI9e2NyZWF0ZUNvbW1hbmRNb3VzZUVudGVySGFuZGxlcihpbmRleCl9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9e2NyZWF0ZUNvbW1hbmRDbGlja0hhbmRsZXIoY29tbWFuZCl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpO1xuICAgICAgICB9KSgpfVxuICAgICAgPC9kaXY+XG4gICAgPC9CdXRsZXJDb250YWluZXI+XG4gICk7XG59O1xuQnV0bGVyLmRpc3BsYXlOYW1lID0gJ0J1dGxlcic7XG5cbmNvbnN0IEJ1dGxlcldpdGhBbmltYXRpb24gPSAocHJvcHM6IE9taXQ8UHJvcHMsICdjbGFzc05hbWVTaGFrZUFuaW1hdGlvbic+KSA9PiAoXG4gIDxDbGFzc05hbWVzPlxuICAgIHsoeyBjc3MgfSkgPT4gKFxuICAgICAgPEJ1dGxlclxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgIGNsYXNzTmFtZVNoYWtlQW5pbWF0aW9uPXtjc3NgXG4gICAgICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAwLjQ1cztcbiAgICAgICAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoO1xuICAgICAgICAgIGFuaW1hdGlvbi1uYW1lOiAke3NoYWtlQW5pbWF0aW9ufTtcbiAgICAgICAgYH1cbiAgICAgIC8+XG4gICAgKX1cbiAgPC9DbGFzc05hbWVzPlxuKTtcblxuZXhwb3J0IGRlZmF1bHQgQnV0bGVyV2l0aEFuaW1hdGlvbjtcbiJdfQ== */"),
|
|
963
927
|
children: jsxRuntime.jsx(reactIntl.FormattedMessage, _objectSpread({}, messages.offline))
|
|
@@ -976,7 +940,6 @@ const Butler = props => {
|
|
|
976
940
|
})
|
|
977
941
|
});
|
|
978
942
|
};
|
|
979
|
-
|
|
980
943
|
Butler.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
981
944
|
historyEntries: _pt__default["default"].arrayOf(_pt__default["default"].any).isRequired,
|
|
982
945
|
onHistoryEntriesChange: _pt__default["default"].func.isRequired,
|
|
@@ -987,7 +950,6 @@ Butler.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
|
987
950
|
classNameShakeAnimation: _pt__default["default"].string.isRequired
|
|
988
951
|
} : {};
|
|
989
952
|
Butler.displayName = 'Butler';
|
|
990
|
-
|
|
991
953
|
const ButlerWithAnimation = props => jsxRuntime.jsx(react.ClassNames, {
|
|
992
954
|
children: _ref2 => {
|
|
993
955
|
let css = _ref2.css;
|
|
@@ -998,6 +960,7 @@ const ButlerWithAnimation = props => jsxRuntime.jsx(react.ClassNames, {
|
|
|
998
960
|
});
|
|
999
961
|
|
|
1000
962
|
// eslint-disable-next-line import/prefer-default-export
|
|
963
|
+
|
|
1001
964
|
const permissions = {
|
|
1002
965
|
ViewOrders: 'ViewOrders',
|
|
1003
966
|
ManageOrders: 'ManageOrders',
|
|
@@ -1028,18 +991,15 @@ const actionTypes = {
|
|
|
1028
991
|
};
|
|
1029
992
|
|
|
1030
993
|
var _templateObject$2;
|
|
1031
|
-
|
|
1032
994
|
function nonNullable(value) {
|
|
1033
995
|
return value !== null && value !== undefined && typeof value !== 'boolean';
|
|
1034
996
|
}
|
|
1035
|
-
|
|
1036
997
|
const createCommands = _ref => {
|
|
1037
998
|
var _context, _context2, _context3, _context4, _context5, _context6, _context7, _context8, _context9, _context10, _context13;
|
|
1038
|
-
|
|
1039
999
|
let intl = _ref.intl,
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1000
|
+
applicationContext = _ref.applicationContext,
|
|
1001
|
+
featureToggles = _ref.featureToggles,
|
|
1002
|
+
changeProjectDataLocale = _ref.changeProjectDataLocale;
|
|
1043
1003
|
return _filterInstanceProperty__default["default"](_context = [applicationContext.project && applicationContext.permissions && featureToggles.canViewDashboard && permissions$1.hasSomePermissions([permissions.ViewOrders], applicationContext.permissions) && {
|
|
1044
1004
|
id: 'go/dashboard',
|
|
1045
1005
|
text: intl.formatMessage(messages.openDashboard),
|
|
@@ -1331,17 +1291,17 @@ const createCommands = _ref => {
|
|
|
1331
1291
|
// want to include them in the top-level search results
|
|
1332
1292
|
subCommands: () => {
|
|
1333
1293
|
var _context11, _context12;
|
|
1334
|
-
|
|
1335
1294
|
return _Promise__default["default"].resolve(_filterInstanceProperty__default["default"](_context11 = _mapInstanceProperty__default["default"](_context12 = applicationContext.project ? applicationContext.project.languages : []).call(_context12, language => changeProjectDataLocale && {
|
|
1336
1295
|
id: "action/set-resource-language/".concat(language),
|
|
1337
1296
|
text: commonTags.oneLineTrim(_templateObject$2 || (_templateObject$2 = _taggedTemplateLiteral(["\n ", "\n ", "\n "])), language, language === applicationContext.dataLocale ? ' (active)' : ''),
|
|
1338
1297
|
action: () => {
|
|
1339
|
-
changeProjectDataLocale(language);
|
|
1298
|
+
changeProjectDataLocale(language);
|
|
1299
|
+
|
|
1300
|
+
// We reload, since ProjectDataLocale is written in a way where
|
|
1340
1301
|
// only the tree under the parent container reloads, but
|
|
1341
1302
|
// not all of them reload.
|
|
1342
1303
|
// So this action would seem like it had not effect, unless we
|
|
1343
1304
|
// reload
|
|
1344
|
-
|
|
1345
1305
|
useIsServedByProxy.location.reload();
|
|
1346
1306
|
}
|
|
1347
1307
|
})).call(_context11, nonNullable));
|
|
@@ -1430,11 +1390,10 @@ var _templateObject$1, _templateObject2$1, _templateObject3, _templateObject4, _
|
|
|
1430
1390
|
var QuickAccessProductQuery = { kind: "Document", definitions: [{ kind: "OperationDefinition", operation: "query", name: { kind: "Name", value: "QuickAccessProduct" }, variableDefinitions: [{ kind: "VariableDefinition", variable: { kind: "Variable", name: { kind: "Name", value: "productId" } }, type: { kind: "NonNullType", type: { kind: "NamedType", name: { kind: "Name", value: "String" } } }, directives: [] }], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "product" }, arguments: [{ kind: "Argument", name: { kind: "Name", value: "id" }, value: { kind: "Variable", name: { kind: "Name", value: "productId" } } }], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "id" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "masterData" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "staged" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "allVariants" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "id" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "key" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "sku" }, arguments: [], directives: [] }] } }] } }] } }] } }] } }], loc: { start: 0, end: 208, source: { body: "query QuickAccessProduct($productId: String!) {\n product(id: $productId) {\n id\n masterData {\n staged {\n allVariants {\n id\n key\n sku\n }\n }\n }\n }\n}\n", name: "GraphQL request", locationOffset: { line: 1, column: 1 } } } };
|
|
1431
1391
|
const createProductVariantSubCommands = _ref => {
|
|
1432
1392
|
var _context, _context2, _context3, _context4;
|
|
1433
|
-
|
|
1434
1393
|
let intl = _ref.intl,
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1394
|
+
applicationContext = _ref.applicationContext,
|
|
1395
|
+
productId = _ref.productId,
|
|
1396
|
+
variantId = _ref.variantId;
|
|
1438
1397
|
const canViewProducts = permissions$1.hasSomePermissions([permissions.ViewProducts], applicationContext.permissions);
|
|
1439
1398
|
if (!canViewProducts || !applicationContext.project) return [];
|
|
1440
1399
|
return [{
|
|
@@ -1467,7 +1426,6 @@ const createProductVariantSubCommands = _ref => {
|
|
|
1467
1426
|
}
|
|
1468
1427
|
}];
|
|
1469
1428
|
};
|
|
1470
|
-
|
|
1471
1429
|
const formatVariantMessage = (variant, intl) => {
|
|
1472
1430
|
if (variant.sku) return intl.formatMessage(messages.openVariantBySku, {
|
|
1473
1431
|
sku: variant.sku
|
|
@@ -1479,12 +1437,11 @@ const formatVariantMessage = (variant, intl) => {
|
|
|
1479
1437
|
id: variant.id
|
|
1480
1438
|
});
|
|
1481
1439
|
};
|
|
1482
|
-
|
|
1483
1440
|
const createProductVariantListSubCommands = async _ref2 => {
|
|
1484
1441
|
let intl = _ref2.intl,
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1442
|
+
applicationContext = _ref2.applicationContext,
|
|
1443
|
+
productId = _ref2.productId,
|
|
1444
|
+
execQuery = _ref2.execQuery;
|
|
1488
1445
|
const canViewProducts = permissions$1.hasSomePermissions([permissions.ViewProducts], applicationContext.permissions);
|
|
1489
1446
|
if (!canViewProducts) return [];
|
|
1490
1447
|
const data = await execQuery(QuickAccessProductQuery, {
|
|
@@ -1492,14 +1449,11 @@ const createProductVariantListSubCommands = async _ref2 => {
|
|
|
1492
1449
|
}, {
|
|
1493
1450
|
target: constants.GRAPHQL_TARGETS.COMMERCETOOLS_PLATFORM
|
|
1494
1451
|
});
|
|
1495
|
-
|
|
1496
1452
|
if (data && data.product && data.product.masterData && data.product.masterData.staged && applicationContext.project) {
|
|
1497
1453
|
var _context5;
|
|
1498
|
-
|
|
1499
1454
|
const projectKey = applicationContext.project.key;
|
|
1500
1455
|
return _mapInstanceProperty__default["default"](_context5 = data.product.masterData.staged.allVariants).call(_context5, variant => {
|
|
1501
1456
|
var _context6;
|
|
1502
|
-
|
|
1503
1457
|
return {
|
|
1504
1458
|
id: _concatInstanceProperty__default["default"](_context6 = "go/product(".concat(productId, ")/variant(")).call(_context6, variant.id, ")"),
|
|
1505
1459
|
text: formatVariantMessage(variant, intl),
|
|
@@ -1516,14 +1470,12 @@ const createProductVariantListSubCommands = async _ref2 => {
|
|
|
1516
1470
|
};
|
|
1517
1471
|
});
|
|
1518
1472
|
}
|
|
1519
|
-
|
|
1520
1473
|
return [];
|
|
1521
1474
|
};
|
|
1522
|
-
|
|
1523
1475
|
const createProductTabsSubCommands = _ref3 => {
|
|
1524
1476
|
let intl = _ref3.intl,
|
|
1525
|
-
|
|
1526
|
-
|
|
1477
|
+
applicationContext = _ref3.applicationContext,
|
|
1478
|
+
productId = _ref3.productId;
|
|
1527
1479
|
const canViewProducts = permissions$1.hasSomePermissions([permissions.ViewProducts], applicationContext.permissions);
|
|
1528
1480
|
if (!canViewProducts || !applicationContext.project) return [];
|
|
1529
1481
|
return [{
|
|
@@ -1556,44 +1508,42 @@ const createProductTabsSubCommands = _ref3 => {
|
|
|
1556
1508
|
}];
|
|
1557
1509
|
};
|
|
1558
1510
|
|
|
1559
|
-
const sanitize = param => param
|
|
1560
|
-
|
|
1511
|
+
const sanitize = param => param
|
|
1512
|
+
// Replace all \ with \\ (to prevent generate escape characters)
|
|
1513
|
+
.replace(/\\/g, '\\\\')
|
|
1514
|
+
// Replace all " with \"
|
|
1561
1515
|
.replace(/"/g, '\\"');
|
|
1562
1516
|
const flattenCommands = async (results, execQuery) => {
|
|
1563
1517
|
async function flatten(commands) {
|
|
1564
1518
|
return _reduceInstanceProperty__default["default"](commands).call(commands, async (prevPromise, command) => {
|
|
1565
1519
|
const prevResults = await prevPromise;
|
|
1566
|
-
|
|
1567
1520
|
if (command.subCommands) {
|
|
1568
1521
|
if (typeof command.subCommands === 'function') {
|
|
1569
1522
|
const subCommands = await command.subCommands(execQuery);
|
|
1570
1523
|
const flattenSubCommands = await flatten(subCommands);
|
|
1571
1524
|
return [...prevResults, command, ...flattenSubCommands];
|
|
1572
1525
|
}
|
|
1573
|
-
|
|
1574
1526
|
const flattenSubCommands = await flatten(command.subCommands);
|
|
1575
1527
|
return [...prevResults, command, ...flattenSubCommands];
|
|
1576
1528
|
}
|
|
1577
|
-
|
|
1578
1529
|
return [...prevResults, command];
|
|
1579
1530
|
}, _Promise__default["default"].resolve([]));
|
|
1580
1531
|
}
|
|
1581
|
-
|
|
1582
1532
|
return await flatten(results);
|
|
1583
|
-
};
|
|
1533
|
+
};
|
|
1584
1534
|
|
|
1535
|
+
// Once ui-kit exposes its fallback mechanism, we can use the same one here
|
|
1585
1536
|
const translate = (nameAllLocales, projectDataLocale) => {
|
|
1586
1537
|
const matchedTranslation = _findInstanceProperty__default["default"](nameAllLocales).call(nameAllLocales, translation => translation.locale === projectDataLocale && translation.value);
|
|
1538
|
+
if (matchedTranslation) return matchedTranslation.value;
|
|
1587
1539
|
|
|
1588
|
-
|
|
1589
|
-
|
|
1540
|
+
// Fall back to the first available locale
|
|
1590
1541
|
if (nameAllLocales.length > 0) return nameAllLocales[0].value;
|
|
1591
1542
|
return '';
|
|
1592
1543
|
};
|
|
1593
1544
|
|
|
1594
1545
|
var _templateObject, _templateObject2;
|
|
1595
1546
|
var QuickAccessQuery = { kind: "Document", definitions: [{ kind: "OperationDefinition", operation: "query", name: { kind: "Name", value: "QuickAccess" }, variableDefinitions: [{ kind: "VariableDefinition", variable: { kind: "Variable", name: { kind: "Name", value: "searchText" } }, type: { kind: "NonNullType", type: { kind: "NamedType", name: { kind: "Name", value: "String" } } }, directives: [] }, { kind: "VariableDefinition", variable: { kind: "Variable", name: { kind: "Name", value: "canViewProducts" } }, type: { kind: "NonNullType", type: { kind: "NamedType", name: { kind: "Name", value: "Boolean" } } }, directives: [] }, { kind: "VariableDefinition", variable: { kind: "Variable", name: { kind: "Name", value: "productsWhereClause" } }, type: { kind: "NamedType", name: { kind: "Name", value: "String" } }, directives: [] }, { kind: "VariableDefinition", variable: { kind: "Variable", name: { kind: "Name", value: "includeProductsByIds" } }, type: { kind: "NonNullType", type: { kind: "NamedType", name: { kind: "Name", value: "Boolean" } } }, directives: [] }], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", alias: { kind: "Name", value: "productsByIds" }, name: { kind: "Name", value: "products" }, arguments: [{ kind: "Argument", name: { kind: "Name", value: "where" }, value: { kind: "Variable", name: { kind: "Name", value: "productsWhereClause" } } }], directives: [{ kind: "Directive", name: { kind: "Name", value: "include" }, arguments: [{ kind: "Argument", name: { kind: "Name", value: "if" }, value: { kind: "Variable", name: { kind: "Name", value: "includeProductsByIds" } } }] }], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "results" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "id" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "masterData" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "staged" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "nameAllLocales" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "locale" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "value" }, arguments: [], directives: [] }] } }] } }] } }] } }] } }, { kind: "Field", alias: { kind: "Name", value: "productById" }, name: { kind: "Name", value: "product" }, arguments: [{ kind: "Argument", name: { kind: "Name", value: "id" }, value: { kind: "Variable", name: { kind: "Name", value: "searchText" } } }], directives: [{ kind: "Directive", name: { kind: "Name", value: "include" }, arguments: [{ kind: "Argument", name: { kind: "Name", value: "if" }, value: { kind: "Variable", name: { kind: "Name", value: "canViewProducts" } } }] }], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "id" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "masterData" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "staged" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "nameAllLocales" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "locale" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "value" }, arguments: [], directives: [] }] } }] } }] } }] } }, { kind: "Field", alias: { kind: "Name", value: "productByKey" }, name: { kind: "Name", value: "product" }, arguments: [{ kind: "Argument", name: { kind: "Name", value: "key" }, value: { kind: "Variable", name: { kind: "Name", value: "searchText" } } }], directives: [{ kind: "Directive", name: { kind: "Name", value: "include" }, arguments: [{ kind: "Argument", name: { kind: "Name", value: "if" }, value: { kind: "Variable", name: { kind: "Name", value: "canViewProducts" } } }] }], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "id" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "masterData" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "staged" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "nameAllLocales" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "locale" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "value" }, arguments: [], directives: [] }] } }] } }] } }] } }, { kind: "Field", alias: { kind: "Name", value: "productByVariantSku" }, name: { kind: "Name", value: "product" }, arguments: [{ kind: "Argument", name: { kind: "Name", value: "sku" }, value: { kind: "Variable", name: { kind: "Name", value: "searchText" } } }], directives: [{ kind: "Directive", name: { kind: "Name", value: "include" }, arguments: [{ kind: "Argument", name: { kind: "Name", value: "if" }, value: { kind: "Variable", name: { kind: "Name", value: "canViewProducts" } } }] }], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "id" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "masterData" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "staged" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "nameAllLocales" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "locale" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "value" }, arguments: [], directives: [] }] } }, { kind: "Field", name: { kind: "Name", value: "variant" }, arguments: [{ kind: "Argument", name: { kind: "Name", value: "sku" }, value: { kind: "Variable", name: { kind: "Name", value: "searchText" } } }], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "sku" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "key" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "id" }, arguments: [], directives: [] }] } }] } }] } }] } }, { kind: "Field", alias: { kind: "Name", value: "productByVariantKey" }, name: { kind: "Name", value: "product" }, arguments: [{ kind: "Argument", name: { kind: "Name", value: "variantKey" }, value: { kind: "Variable", name: { kind: "Name", value: "searchText" } } }], directives: [{ kind: "Directive", name: { kind: "Name", value: "include" }, arguments: [{ kind: "Argument", name: { kind: "Name", value: "if" }, value: { kind: "Variable", name: { kind: "Name", value: "canViewProducts" } } }] }], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "id" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "masterData" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "staged" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "nameAllLocales" }, arguments: [], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "locale" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "value" }, arguments: [], directives: [] }] } }, { kind: "Field", name: { kind: "Name", value: "variant" }, arguments: [{ kind: "Argument", name: { kind: "Name", value: "key" }, value: { kind: "Variable", name: { kind: "Name", value: "searchText" } } }], directives: [], selectionSet: { kind: "SelectionSet", selections: [{ kind: "Field", name: { kind: "Name", value: "sku" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "key" }, arguments: [], directives: [] }, { kind: "Field", name: { kind: "Name", value: "id" }, arguments: [], directives: [] }] } }] } }] } }] } }] } }], loc: { start: 0, end: 1407, source: { body: "query QuickAccess(\n $searchText: String!\n $canViewProducts: Boolean!\n $productsWhereClause: String\n $includeProductsByIds: Boolean!\n) {\n productsByIds: products(where: $productsWhereClause)\n @include(if: $includeProductsByIds) {\n results {\n id\n masterData {\n staged {\n nameAllLocales {\n locale\n value\n }\n }\n }\n }\n }\n\n productById: product(id: $searchText) @include(if: $canViewProducts) {\n id\n masterData {\n staged {\n nameAllLocales {\n locale\n value\n }\n }\n }\n }\n\n productByKey: product(key: $searchText) @include(if: $canViewProducts) {\n id\n masterData {\n staged {\n nameAllLocales {\n locale\n value\n }\n }\n }\n }\n\n productByVariantSku: product(sku: $searchText)\n @include(if: $canViewProducts) {\n id\n masterData {\n staged {\n nameAllLocales {\n locale\n value\n }\n variant(sku: $searchText) {\n sku\n key\n id\n }\n }\n }\n }\n\n productByVariantKey: product(variantKey: $searchText)\n @include(if: $canViewProducts) {\n id\n masterData {\n staged {\n nameAllLocales {\n locale\n value\n }\n variant(key: $searchText) {\n sku\n key\n id\n }\n }\n }\n }\n}\n", name: "GraphQL request", locationOffset: { line: 1, column: 1 } } } };
|
|
1596
|
-
|
|
1597
1547
|
const searchProductIdsAction = (searchText, projectKey, dataLocale) => sdk.actions.post({
|
|
1598
1548
|
uri: "/".concat(projectKey, "/search/products"),
|
|
1599
1549
|
mcApiProxyTarget: constants.MC_API_PROXY_TARGETS.PIM_SEARCH,
|
|
@@ -1614,8 +1564,8 @@ const searchProductIdsAction = (searchText, projectKey, dataLocale) => sdk.actio
|
|
|
1614
1564
|
offset: 0
|
|
1615
1565
|
}
|
|
1616
1566
|
});
|
|
1617
|
-
|
|
1618
|
-
|
|
1567
|
+
const pimIndexerStatusAction = (projectKey, dataLocale) =>
|
|
1568
|
+
// TODO this should be sdkActions.head()
|
|
1619
1569
|
// and then we should check whether the response code is
|
|
1620
1570
|
// - 200 meaning the project is indexed
|
|
1621
1571
|
// - 404 meaning the project is not indexed
|
|
@@ -1639,13 +1589,11 @@ sdk.actions.post({
|
|
|
1639
1589
|
offset: 0
|
|
1640
1590
|
}
|
|
1641
1591
|
});
|
|
1642
|
-
|
|
1643
1592
|
const QuickAccess = props => {
|
|
1644
1593
|
const _useState = react$1.useState(loadHistoryEntries()),
|
|
1645
|
-
|
|
1646
|
-
|
|
1647
|
-
|
|
1648
|
-
|
|
1594
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
1595
|
+
historyEntries = _useState2[0],
|
|
1596
|
+
setHistoryEntries = _useState2[1];
|
|
1649
1597
|
const handleHistoryEntriesChange = react$1.useCallback(entries => {
|
|
1650
1598
|
// Keep the history in sync with the session storage
|
|
1651
1599
|
saveHistoryEntries(entries);
|
|
@@ -1654,29 +1602,26 @@ const QuickAccess = props => {
|
|
|
1654
1602
|
const history = reactRouterDom.useHistory();
|
|
1655
1603
|
const apolloClient = react$2.useApolloClient();
|
|
1656
1604
|
const intl = reactIntl.useIntl();
|
|
1657
|
-
|
|
1658
1605
|
const _useFeatureToggles = reactBroadcast.useFeatureToggles({
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
1668
|
-
const applicationContext = applicationShellConnectors.useApplicationContext(); // Destructure functions from props to reference them in the hook dependency list
|
|
1606
|
+
pimSearch: true,
|
|
1607
|
+
customApplications: true,
|
|
1608
|
+
canViewDashboard: true
|
|
1609
|
+
}),
|
|
1610
|
+
_useFeatureToggles2 = _slicedToArray(_useFeatureToggles, 3),
|
|
1611
|
+
isPimSearchEnabled = _useFeatureToggles2[0],
|
|
1612
|
+
isCustomApplicationsEnabled = _useFeatureToggles2[1],
|
|
1613
|
+
isCanViewDashboardEnabled = _useFeatureToggles2[2];
|
|
1614
|
+
const applicationContext = applicationShellConnectors.useApplicationContext();
|
|
1669
1615
|
|
|
1616
|
+
// Destructure functions from props to reference them in the hook dependency list
|
|
1670
1617
|
const onPimIndexerStateChangeFromParent = props.onPimIndexerStateChange;
|
|
1671
1618
|
const dispatchFetchProductIds = sdk.useAsyncDispatch();
|
|
1672
1619
|
const fetchPimSearchProductIds = react$1.useCallback(async searchText => {
|
|
1673
1620
|
if (applicationContext.project && applicationContext.dataLocale) {
|
|
1674
1621
|
var _context;
|
|
1675
|
-
|
|
1676
1622
|
const result = await dispatchFetchProductIds(searchProductIdsAction(searchText, applicationContext.project.key, applicationContext.dataLocale));
|
|
1677
1623
|
return result && result.hits ? _mapInstanceProperty__default["default"](_context = result.hits).call(_context, hit => hit.id) : [];
|
|
1678
1624
|
}
|
|
1679
|
-
|
|
1680
1625
|
return [];
|
|
1681
1626
|
}, [applicationContext.dataLocale, applicationContext.project, dispatchFetchProductIds]);
|
|
1682
1627
|
const dispatchFetchPimIndexerStatus = sdk.useAsyncDispatch();
|
|
@@ -1687,21 +1632,21 @@ const QuickAccess = props => {
|
|
|
1687
1632
|
return dist_commercetoolsFrontendApplicationShell.pimIndexerStates.INDEXED;
|
|
1688
1633
|
} catch (error) {
|
|
1689
1634
|
// eslint-disable-next-line no-console
|
|
1690
|
-
if (process.env.NODE_ENV !== 'production') console.error(error);
|
|
1635
|
+
if (process.env.NODE_ENV !== 'production') console.error(error);
|
|
1636
|
+
// project is not using pim-indexer when response error code is 404,
|
|
1691
1637
|
// but we treat all errors as non-indexed as a safe guard, so we're
|
|
1692
1638
|
// not checking the response error code at all
|
|
1693
|
-
|
|
1694
1639
|
return dist_commercetoolsFrontendApplicationShell.pimIndexerStates.NOT_INDEXED;
|
|
1695
1640
|
}
|
|
1696
1641
|
}
|
|
1697
|
-
|
|
1698
1642
|
return dist_commercetoolsFrontendApplicationShell.pimIndexerStates.NOT_INDEXED;
|
|
1699
1643
|
}, [applicationContext.dataLocale, applicationContext.project, dispatchFetchPimIndexerStatus]);
|
|
1700
1644
|
const getProjectIndexStatus = react$1.useCallback(async () => {
|
|
1701
1645
|
// skip when there is no project
|
|
1702
1646
|
if (!applicationContext.project) return dist_commercetoolsFrontendApplicationShell.pimIndexerStates.NOT_INDEXED;
|
|
1703
|
-
const canViewProducts = permissions$1.hasSomePermissions([permissions.ViewProducts], applicationContext.permissions);
|
|
1647
|
+
const canViewProducts = permissions$1.hasSomePermissions([permissions.ViewProducts], applicationContext.permissions);
|
|
1704
1648
|
|
|
1649
|
+
// skip checking when user can't view products anyways
|
|
1705
1650
|
if (!canViewProducts) return dist_commercetoolsFrontendApplicationShell.pimIndexerStates.NOT_INDEXED;
|
|
1706
1651
|
return await fetchPimIndexerStatus();
|
|
1707
1652
|
}, [applicationContext.permissions, applicationContext.project, fetchPimIndexerStatus]);
|
|
@@ -1710,8 +1655,8 @@ const QuickAccess = props => {
|
|
|
1710
1655
|
getProjectIndexStatus().then(status => {
|
|
1711
1656
|
onPimIndexerStateChangeFromParent(status);
|
|
1712
1657
|
});
|
|
1713
|
-
}
|
|
1714
|
-
|
|
1658
|
+
}
|
|
1659
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
1715
1660
|
}, []); // <-- run only once, when component mounts
|
|
1716
1661
|
|
|
1717
1662
|
const execQuery = react$1.useCallback((Query, variables, context) => apolloClient.query({
|
|
@@ -1738,10 +1683,8 @@ const QuickAccess = props => {
|
|
|
1738
1683
|
target: constants.GRAPHQL_TARGETS.COMMERCETOOLS_PLATFORM
|
|
1739
1684
|
});
|
|
1740
1685
|
const commands = [];
|
|
1741
|
-
|
|
1742
1686
|
if (data && data.productByVariantKey && data.productByVariantKey.masterData && data.productByVariantKey.masterData.staged && data.productByVariantKey.masterData.staged.variant && applicationContext.project && applicationContext.dataLocale) {
|
|
1743
1687
|
var _context2;
|
|
1744
|
-
|
|
1745
1688
|
const productId = data.productByVariantKey.id;
|
|
1746
1689
|
const variantId = data.productByVariantKey.masterData.staged.variant.id;
|
|
1747
1690
|
const variantKey = data.productByVariantKey.masterData.staged.variant.key;
|
|
@@ -1763,10 +1706,8 @@ const QuickAccess = props => {
|
|
|
1763
1706
|
})
|
|
1764
1707
|
});
|
|
1765
1708
|
}
|
|
1766
|
-
|
|
1767
1709
|
if (data && data.productByVariantSku && data.productByVariantSku.masterData && data.productByVariantSku.masterData.staged && data.productByVariantSku.masterData.staged.variant && applicationContext.project && applicationContext.dataLocale) {
|
|
1768
1710
|
var _context3;
|
|
1769
|
-
|
|
1770
1711
|
const productId = data.productByVariantSku.id;
|
|
1771
1712
|
const variantId = data.productByVariantSku.masterData.staged.variant.id;
|
|
1772
1713
|
commands.push({
|
|
@@ -1786,10 +1727,8 @@ const QuickAccess = props => {
|
|
|
1786
1727
|
})
|
|
1787
1728
|
});
|
|
1788
1729
|
}
|
|
1789
|
-
|
|
1790
1730
|
if (data && data.productById && data.productById.masterData && data.productById.masterData.staged && data.productById.masterData.staged.nameAllLocales && applicationContext.project && applicationContext.dataLocale) {
|
|
1791
1731
|
var _context4;
|
|
1792
|
-
|
|
1793
1732
|
const productId = data.productById.id;
|
|
1794
1733
|
commands.push({
|
|
1795
1734
|
id: "go/product-by-id/product(".concat(productId, ")"),
|
|
@@ -1808,14 +1747,11 @@ const QuickAccess = props => {
|
|
|
1808
1747
|
})
|
|
1809
1748
|
});
|
|
1810
1749
|
}
|
|
1811
|
-
|
|
1812
1750
|
if (data && data.productsByIds && data.productsByIds.results) {
|
|
1813
1751
|
var _context5;
|
|
1814
|
-
|
|
1815
1752
|
_forEachInstanceProperty__default["default"](_context5 = data.productsByIds.results).call(_context5, product => {
|
|
1816
1753
|
if (product.masterData.staged && applicationContext.project && applicationContext.dataLocale) {
|
|
1817
1754
|
var _context6;
|
|
1818
|
-
|
|
1819
1755
|
commands.push({
|
|
1820
1756
|
id: "go/product-by-search-text/product(".concat(product.id, ")"),
|
|
1821
1757
|
text: intl.formatMessage(messages.showProduct, {
|
|
@@ -1835,10 +1771,8 @@ const QuickAccess = props => {
|
|
|
1835
1771
|
}
|
|
1836
1772
|
});
|
|
1837
1773
|
}
|
|
1838
|
-
|
|
1839
1774
|
if (data && data.productByKey && applicationContext.project && applicationContext.dataLocale) {
|
|
1840
1775
|
var _context7;
|
|
1841
|
-
|
|
1842
1776
|
const productId = data.productByKey.id;
|
|
1843
1777
|
commands.push({
|
|
1844
1778
|
id: "go/product-by-key/product(".concat(productId, ")"),
|
|
@@ -1856,7 +1790,6 @@ const QuickAccess = props => {
|
|
|
1856
1790
|
})
|
|
1857
1791
|
});
|
|
1858
1792
|
}
|
|
1859
|
-
|
|
1860
1793
|
return commands;
|
|
1861
1794
|
}, [applicationContext, execQuery, fetchPimSearchProductIds, intl, props.pimIndexerState]);
|
|
1862
1795
|
const debouncedGetProjectCommands = debounce__default["default"](getProjectCommands, 200, {
|
|
@@ -1873,13 +1806,13 @@ const QuickAccess = props => {
|
|
|
1873
1806
|
canViewDashboard: isCanViewDashboardEnabled
|
|
1874
1807
|
}
|
|
1875
1808
|
});
|
|
1876
|
-
if (!applicationContext.project) return generalCommands;
|
|
1809
|
+
if (!applicationContext.project) return generalCommands;
|
|
1810
|
+
|
|
1811
|
+
// Avoid searching for short texts, as we won't get any good results
|
|
1877
1812
|
// anyways. This results in commands popping up immediately when the user
|
|
1878
1813
|
// starts typing, which gives the whole search a much more repsonsive
|
|
1879
1814
|
// feeling.
|
|
1880
|
-
|
|
1881
1815
|
if (_trimInstanceProperty__default["default"](searchText).call(searchText).length < 3) return generalCommands;
|
|
1882
|
-
|
|
1883
1816
|
try {
|
|
1884
1817
|
const projectCommands = await debouncedGetProjectCommands(searchText);
|
|
1885
1818
|
const allCommands = [...generalCommands, ...projectCommands];
|
|
@@ -1894,16 +1827,14 @@ const QuickAccess = props => {
|
|
|
1894
1827
|
}, [applicationContext, debouncedGetProjectCommands, execQuery, intl, isCanViewDashboardEnabled, isCustomApplicationsEnabled, isPimSearchEnabled, props.onChangeProjectDataLocale]);
|
|
1895
1828
|
const executeCommand = react$1.useCallback((command, meta) => {
|
|
1896
1829
|
var _context8;
|
|
1897
|
-
|
|
1898
1830
|
if (typeof command.action === 'function') {
|
|
1899
1831
|
// Idea: We could handle these errors and set them on status bar of Butler
|
|
1900
1832
|
// We can also handle sync/async commands by checking command.action.then
|
|
1901
1833
|
command.action();
|
|
1902
1834
|
return;
|
|
1903
|
-
}
|
|
1835
|
+
}
|
|
1836
|
+
// open in new window
|
|
1904
1837
|
// and always open other pages in a new window
|
|
1905
|
-
|
|
1906
|
-
|
|
1907
1838
|
if (meta.openInNewTab || !_startsWithInstanceProperty__default["default"](_context8 = command.action.to).call(_context8, '/')) {
|
|
1908
1839
|
// eslint-disable-next-line no-restricted-globals
|
|
1909
1840
|
open(command.action.to, '_blank');
|
|
@@ -1922,7 +1853,6 @@ const QuickAccess = props => {
|
|
|
1922
1853
|
getNextCommands: getNextCommands
|
|
1923
1854
|
});
|
|
1924
1855
|
};
|
|
1925
|
-
|
|
1926
1856
|
QuickAccess.propTypes = process.env.NODE_ENV !== "production" ? {
|
|
1927
1857
|
pimIndexerState: _pt__default["default"].any.isRequired,
|
|
1928
1858
|
onPimIndexerStateChange: _pt__default["default"].func.isRequired,
|