@envive-ai/react-hooks 0.1.4 → 0.1.6
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/amplitudeContext-CHzas7Cf.d.cts +52 -0
- package/dist/amplitudeContext-D-7fmVh1.cjs +356 -0
- package/dist/amplitudeContext-hY3caPC6.js +322 -0
- package/dist/amplitudeContext-tJ4y-SzX.d.ts +52 -0
- package/dist/api-DjeZXxl_.js +207 -0
- package/dist/api-_JaUnIUj.cjs +292 -0
- package/dist/app-CjsQ2_n-.js +132 -0
- package/dist/app-CnKRZ9RW.cjs +178 -0
- package/dist/application/models/graphql/index.cjs +3 -12
- package/dist/application/models/graphql/index.d.cts +1 -1
- package/dist/application/models/graphql/index.d.ts +1 -1
- package/dist/application/models/graphql/index.js +1 -10
- package/dist/application/models/guards/api/index.cjs +1 -2
- package/dist/application/models/guards/api/index.d.cts +2 -2
- package/dist/application/models/guards/api/index.d.ts +2 -2
- package/dist/application/models/guards/api/index.js +1 -2
- package/dist/application/models/index.cjs +48 -54
- package/dist/application/models/index.d.cts +7 -9
- package/dist/application/models/index.d.ts +7 -9
- package/dist/application/models/index.js +7 -11
- package/dist/application/models/utilityTypes/index.cjs +1 -1
- package/dist/application/models/utilityTypes/index.d.cts +1 -1
- package/dist/application/models/utilityTypes/index.d.ts +1 -1
- package/dist/application/models/utilityTypes/index.js +1 -1
- package/dist/application/models/variantInfo/index.cjs +1 -1
- package/dist/application/models/variantInfo/index.d.cts +1 -1
- package/dist/application/models/variantInfo/index.d.ts +1 -1
- package/dist/application/models/variantInfo/index.js +1 -1
- package/dist/application/utils/index.cjs +40 -37
- package/dist/application/utils/index.d.cts +18 -14
- package/dist/application/utils/index.d.ts +17 -13
- package/dist/application/utils/index.js +13 -10
- package/dist/{atomStore-JwGb7pcy.cjs → atomStore-B4jIaDPd.cjs} +1 -1
- package/dist/{atomStore-B1cgmbP0.js → atomStore-D8pjE1vL.js} +1 -1
- package/dist/atoms/app/index.cjs +14 -16
- package/dist/atoms/app/index.d.cts +20 -19
- package/dist/atoms/app/index.d.ts +20 -19
- package/dist/atoms/app/index.js +10 -11
- package/dist/atoms/atomStore/index.cjs +2 -1
- package/dist/atoms/atomStore/index.d.cts +1 -1
- package/dist/atoms/atomStore/index.js +2 -1
- package/dist/atoms/chat/index.cjs +44 -40
- package/dist/atoms/chat/index.d.cts +35 -36
- package/dist/atoms/chat/index.d.ts +35 -36
- package/dist/atoms/chat/index.js +14 -10
- package/dist/atoms/globalSearch/index.cjs +1 -1
- package/dist/atoms/globalSearch/index.d.cts +5 -5
- package/dist/atoms/globalSearch/index.d.ts +5 -5
- package/dist/atoms/globalSearch/index.js +1 -1
- package/dist/atoms/org/index.cjs +26 -37
- package/dist/atoms/org/index.d.cts +37 -47
- package/dist/atoms/org/index.d.ts +37 -47
- package/dist/atoms/org/index.js +11 -11
- package/dist/atoms/search/index.cjs +47 -41
- package/dist/atoms/search/index.d.cts +7 -9
- package/dist/atoms/search/index.d.ts +7 -9
- package/dist/atoms/search/index.js +16 -10
- package/dist/bandolier-DYEz4-8C.js +1229 -0
- package/dist/bandolier-o_-xrbOV.cjs +1229 -0
- package/dist/carpe-CsG5jCcl.cjs +607 -0
- package/dist/carpe-DONk00bZ.js +605 -0
- package/dist/cdnUtils-32v8bDX9.cjs +16 -0
- package/dist/cdnUtils-E4tLBt2g.js +11 -0
- package/dist/{chat-BgONoYU7.cjs → chat-BubCW1as.cjs} +1 -1
- package/dist/chat-CO7cRkaq.cjs +506 -0
- package/dist/{chat-CLJ4NWcN.js → chat-CV6MXeID.js} +1 -1
- package/dist/chat-hcRc4RRd.js +285 -0
- package/dist/{components-CV1fhAkj.js → components-B4T3Uzth.js} +1 -1
- package/dist/{components-BKZbet67.cjs → components-Cw9WjA6g.cjs} +1 -1
- package/dist/config/locators/components/chat/index.cjs +1 -1
- package/dist/config/locators/components/chat/index.d.cts +1 -1
- package/dist/config/locators/components/chat/index.d.ts +1 -1
- package/dist/config/locators/components/chat/index.js +1 -1
- package/dist/config/locators/components/chat/variants/index.d.ts +1 -1
- package/dist/config/locators/components/index.cjs +1 -1
- package/dist/config/locators/components/index.d.cts +1 -1
- package/dist/config/locators/components/index.d.ts +1 -1
- package/dist/config/locators/components/index.js +1 -1
- package/dist/config/locators/index.cjs +4 -4
- package/dist/config/locators/index.d.cts +2 -2
- package/dist/config/locators/index.d.ts +3 -3
- package/dist/config/locators/index.js +4 -4
- package/dist/contexts/index.cjs +45 -14
- package/dist/contexts/index.d.cts +10 -78
- package/dist/contexts/index.d.ts +10 -78
- package/dist/contexts/index.js +22 -11
- package/dist/contexts-B4ihTBsV.cjs +2980 -0
- package/dist/contexts-DGlr7M1o.js +2596 -0
- package/dist/coterie-CKB93qfz.cjs +239 -0
- package/dist/{coterie-yQ-_JXSw.cjs → coterie-DHcj2fRE.js} +64 -65
- package/dist/{custservice-types-C83itZmy.cjs → custservice-types-Dy0kc9TW.cjs} +1 -1
- package/dist/{custservice-types-DPQ-4TI6.js → custservice-types-mnIunabv.js} +1 -1
- package/dist/default-BnB4p0Se.cjs +234 -0
- package/dist/default-D6f5Dyt7.js +199 -0
- package/dist/default-ZKkE5zT4.cjs +4 -0
- package/dist/default-legGZJwI.js +4 -0
- package/dist/{divIds-DEL_-qU0.cjs → divIds-2dJlU3z8.cjs} +1 -15
- package/dist/{divIds-CWkntTsx.js → divIds-BUrN2vY-.js} +2 -4
- package/dist/dreamlandBaby-BiRYYFav.js +346 -0
- package/dist/dreamlandBaby-zuvmfzfD.cjs +346 -0
- package/dist/{embedded-C5uJqmuD.js → embedded-BJLWIriJ.js} +1 -1
- package/dist/{embedded--2L0F4b5.cjs → embedded-Dl79TJLC.cjs} +1 -1
- package/dist/{entrypoints-CNUvSgnk.js → entrypoints-Bs3pn6EV.js} +1 -1
- package/dist/{entrypoints-DM9Sm18O.cjs → entrypoints-Dqi5pzWH.cjs} +1 -1
- package/dist/enviveConfig-BccuzS2a.cjs +240 -0
- package/dist/enviveConfig-CzhTz8Aa.js +152 -0
- package/dist/events/index.cjs +1 -1
- package/dist/events/index.d.cts +1 -1
- package/dist/events/index.js +1 -1
- package/dist/{events-ClCDFK7t.js → events-BrLpaNxh.js} +1 -1
- package/dist/{events-Da7gpmGv.cjs → events-DwT6cEwI.cjs} +1 -1
- package/dist/fiveCbd-DwTTwC2j.cjs +613 -0
- package/dist/fiveCbd-Dz2NouOF.js +613 -0
- package/dist/forLoveAndLemons-DqSdyD6S.js +665 -0
- package/dist/forLoveAndLemons-Ud6mPrV3.cjs +667 -0
- package/dist/{globalSearch-b0wC7ZEO.js → globalSearch-B6THR7Jx.js} +1 -1
- package/dist/{globalSearch-BTeZxvk1.cjs → globalSearch-BFvEg53C.cjs} +1 -1
- package/dist/graphql-BNW60InJ.cjs +128 -0
- package/dist/graphql-CjB8wHzm.js +74 -0
- package/dist/graphqlConfig-CYt6tWII.js +30 -0
- package/dist/graphqlConfig-DicykC-o.cjs +61 -0
- package/dist/greenpan-B_EbPkSP.js +397 -0
- package/dist/greenpan-kPE4fJgd.cjs +397 -0
- package/dist/grooveLife-Ckuir319.js +342 -0
- package/dist/grooveLife-DKSEQp1F.cjs +342 -0
- package/dist/homegrownCannabis-BVPa2pqe.js +410 -0
- package/dist/homegrownCannabis-BwIAkxuA.cjs +410 -0
- package/dist/hooks/index.cjs +40 -16
- package/dist/hooks/index.d.cts +122 -95
- package/dist/hooks/index.d.ts +122 -95
- package/dist/hooks/index.js +22 -11
- package/dist/{index-D46Rd0io.d.cts → index-B0NW9KTj.d.cts} +1 -1
- package/dist/{index-jBATkcc_.d.cts → index-BDPWBU3h.d.cts} +1 -1
- package/dist/index-BMPtlgac.d.ts +191 -0
- package/dist/{index-BTK5uzs6.d.cts → index-Bmub8e38.d.cts} +1 -1
- package/dist/{index-C62lPpy4.d.cts → index-Byb45OPg.d.cts} +1 -1
- package/dist/{index-DPx8s5YH.d.ts → index-C6KdON7d.d.ts} +1 -1
- package/dist/index-C7pGDl1A.d.ts +1609 -0
- package/dist/{index-CYtsPztZ.d.cts → index-C9lgsCWp.d.cts} +32 -32
- package/dist/{index-BzgkfbNO.d.cts → index-CESxqFso.d.cts} +1 -1
- package/dist/{index-C_C0tLeD.d.ts → index-Cc-wBCn6.d.ts} +32 -32
- package/dist/{index-Cx9e-fRi.d.ts → index-CcIG01PJ.d.ts} +2 -2
- package/dist/{index-ClJ0nMsR.d.cts → index-CiWEYzXl.d.cts} +2 -2
- package/dist/{index-CKKkTsms.d.ts → index-Cqg6ltII.d.ts} +1 -1
- package/dist/{index-CExtydIH.d.ts → index-DOii3C6b.d.ts} +1 -1
- package/dist/index-DTu2X-YS.d.cts +1609 -0
- package/dist/index-OEifcBsm.d.cts +191 -0
- package/dist/{index-Dxpscrvz.d.ts → index-PGF8BvxQ.d.ts} +1 -1
- package/dist/{index-D2VaMPA3.d.ts → index-ylUiJvnr.d.ts} +1 -1
- package/dist/interceptors/index.cjs +2 -12
- package/dist/interceptors/index.d.cts +8 -13
- package/dist/interceptors/index.d.ts +8 -13
- package/dist/interceptors/index.js +2 -11
- package/dist/jackArcher-B39OEIj6.cjs +727 -0
- package/dist/{jackArcher-CXf_IAmC.js → jackArcher-BwkWGybC.js} +24 -25
- package/dist/jordanCraig-CxRH_jLi.js +1786 -0
- package/dist/jordanCraig-RwmWw-jM.cjs +1786 -0
- package/dist/kindredBravely-D78VwL20.cjs +490 -0
- package/dist/kindredBravely-DQDpAzdl.js +490 -0
- package/dist/kutFromTheKloth-TcXQkIti.js +369 -0
- package/dist/kutFromTheKloth-dXRrNti0.cjs +369 -0
- package/dist/larryAndSerges-Bh5XEXsZ.js +262 -0
- package/dist/larryAndSerges-COdBzOzu.cjs +262 -0
- package/dist/leapsAndRebounds-BbXnqkl5.cjs +360 -0
- package/dist/leapsAndRebounds-mjCaH1k-.js +360 -0
- package/dist/longevityrx-DdV3v26F.cjs +320 -0
- package/dist/longevityrx-DfPDfvAt.js +320 -0
- package/dist/lookOptic-DgXFGBPP.cjs +282 -0
- package/dist/{lookOptic-BGhU4910.js → lookOptic-FgVW1afF.js} +19 -20
- package/dist/mantraBrand-C5gVm3rk.cjs +750 -0
- package/dist/{mantraBrand-DrqG9uqO.js → mantraBrand-uV8HCDR8.js} +22 -23
- package/dist/medterra-BtDpr1Hw.cjs +583 -0
- package/dist/medterra-DgzE7-mj.js +583 -0
- package/dist/modells-CJjsxOIR.js +484 -0
- package/dist/modells-Ck5KbRFj.cjs +484 -0
- package/dist/models-BkXg5eIP.cjs +1534 -0
- package/dist/models-UZ6HszfZ.js +1281 -0
- package/dist/{nodeSelector-BiCDowlK.d.ts → nodeSelector-BxrS2S_k.d.ts} +1 -1
- package/dist/{nodeSelector-B3bPtEjX.d.cts → nodeSelector-Dm4S-10n.d.cts} +1 -1
- package/dist/org-C2RrBVQR.cjs +81 -0
- package/dist/org-xMytX--e.js +38 -0
- package/dist/orgAnalyticsConfig-BJ2A1RZ-.cjs +39 -0
- package/dist/orgAnalyticsConfig-ClrFy2qH.js +14 -0
- package/dist/pressedFloral-Bteoboms.js +661 -0
- package/dist/pressedFloral-CexgV-xy.cjs +661 -0
- package/dist/search-BMOAmrmY.js +459 -0
- package/dist/search-Df0Ifneg.cjs +672 -0
- package/dist/{search-filter-types-BNTLVXqQ.d.cts → search-filter-types-DosbseF3.d.cts} +1 -1
- package/dist/{search-filter-types-DkmH1TxJ.d.ts → search-filter-types-fZf91Pdw.d.ts} +1 -1
- package/dist/skinPerfection-BGzq9lq-.cjs +334 -0
- package/dist/skinPerfection-BlvcEcUE.js +334 -0
- package/dist/snapSupplements-CbbGzAgO.cjs +285 -0
- package/dist/snapSupplements-kcsPAOm9.js +285 -0
- package/dist/{socialProofClasses-ky69yppk.cjs → socialProofClasses-Db8gzsfi.cjs} +1 -1
- package/dist/{socialProofClasses-DdzG1tZy.js → socialProofClasses-kwDvwLOZ.js} +1 -1
- package/dist/spanx-B4WFA_rI.js +661 -0
- package/dist/spanx-BWoE4F8b.cjs +663 -0
- package/dist/spanxStaging-BOrOjhXn.js +845 -0
- package/dist/spanxStaging-BfdfIug4.cjs +848 -0
- package/dist/{suggestionBarV2-types-CwOXzIKq.js → suggestionBarV2-types-IMMOmCir.js} +1 -1
- package/dist/{suggestionBarV2-types-Dc4-zJlV.cjs → suggestionBarV2-types-nnGNgFvR.cjs} +1 -1
- package/dist/supergoop-22dd5_BS.js +323 -0
- package/dist/supergoop-B-a4cku2.cjs +323 -0
- package/dist/{test-types-CXVJxTeu.d.ts → test-types-C9b_OdfO.d.ts} +1 -1
- package/dist/{test-types-CuOq25VT.d.cts → test-types-CgVJtwUr.d.cts} +1 -1
- package/dist/types/index.cjs +2 -2
- package/dist/types/index.d.cts +2 -2
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.js +2 -2
- package/dist/types--pr1GQQx.js +154 -0
- package/dist/types-BVSyY3Hk.cjs +196 -0
- package/dist/{uniqueVintage-Cui74mlJ.js → uniqueVintage-CJXiNNe7.js} +19 -20
- package/dist/uniqueVintage-D0jzJWlo.cjs +1213 -0
- package/dist/useMessageInterceptor-B87e3yu3.cjs +33 -0
- package/dist/useMessageInterceptor-Bb7YRaWk.js +25 -0
- package/dist/userIdentityContext-BPqvVIg0.d.cts +20 -0
- package/dist/userIdentityContext-wbCRmlzp.d.ts +20 -0
- package/dist/utils-C9ZSCx12.js +888 -0
- package/dist/utils-D5HO61hG.cjs +1016 -0
- package/dist/variantInfo-DbVxA1yE.js +1 -0
- package/dist/variantInfo-orXoPBCU.cjs +0 -0
- package/dist/venaCbd-Bhhu_qUf.cjs +365 -0
- package/dist/venaCbd-CanovPS_.js +365 -0
- package/dist/westonJonBoucher-BC0x1ktI.cjs +422 -0
- package/dist/{westonJonBoucher-C95EuCl-.js → westonJonBoucher-BUu1_wP1.js} +19 -20
- package/dist/wineEnthusiast-BlCryfil.cjs +940 -0
- package/dist/{wineEnthusiast-DeTFY8Gm.js → wineEnthusiast-Ck1x5iJq.js} +19 -20
- package/dist/wolfMattress-D9Mjq-HP.js +372 -0
- package/dist/wolfMattress-JssghhC-.cjs +372 -0
- package/dist/wolfTactical-C6exYhL7.cjs +349 -0
- package/dist/wolfTactical-CnV3KQdI.js +349 -0
- package/package.json +101 -19
- package/src/{adapters/spiffy/commerce/api.ts → application/commerce-api.ts} +31 -23
- package/src/application/models/colorsConfig.ts +18 -18
- package/src/application/models/frontendConfig.ts +3 -3
- package/src/application/models/graphql/queries/getMerchantColorsQuery.ts +1 -1
- package/src/application/models/graphql/queries/getMerchantFrontendConfigQuery.ts +1 -1
- package/src/application/models/index.ts +0 -2
- package/src/application/models/localStorageEventListener.ts +2 -2
- package/src/application/models/supportedOrgs.ts +1 -1
- package/src/application/models/utils/snakeToCamelTransformer.ts +8 -8
- package/src/application/models/validators/validateGraphQLColorsConfig.ts +0 -21
- package/src/application/models/validators/validateGraphQLFrontendConfig.ts +2 -2
- package/src/application/utils/analyticsUtils.ts +53 -22
- package/src/application/utils/cdnUtils.ts +11 -0
- package/src/atoms/amplitude/amplitudeTrackEventAtom.ts +15 -0
- package/src/atoms/app/index.ts +7 -17
- package/src/atoms/app/variant.ts +13 -4
- package/src/atoms/chat/chatState.ts +28 -18
- package/src/atoms/chat/messageQueue.ts +36 -5
- package/src/atoms/chat/replies.ts +45 -37
- package/src/atoms/envive/enviveConfig.ts +10 -6
- package/src/atoms/org/graphqlConfig.ts +21 -4
- package/src/atoms/org/index.ts +7 -7
- package/src/atoms/org/newOrgConfigAtom.ts +8 -0
- package/src/atoms/org/orgPageConfig.ts +6 -5
- package/src/atoms/search/chatSearch.ts +11 -5
- package/src/atoms/search/searchAPI.ts +68 -48
- package/src/atoms/search/searchServiceAdapter.ts +25 -0
- package/src/contexts/amplitudeContext.tsx +466 -0
- package/src/contexts/cdnContext.tsx +48 -0
- package/src/contexts/chatContext.tsx +15 -12
- package/src/contexts/enviveConfigContext.tsx +22 -17
- package/src/contexts/enviveCssContext.tsx +34 -5
- package/src/contexts/featureFlagContext.tsx +193 -0
- package/src/contexts/featureFlagServiceContext.tsx +87 -0
- package/src/contexts/graphqlContext.tsx +165 -0
- package/src/contexts/index.ts +13 -3
- package/src/contexts/localStorageContext.tsx +159 -0
- package/src/contexts/newOrgConfigContext.tsx +104 -0
- package/src/contexts/orgConfigContext.tsx +92 -92
- package/src/contexts/searchContext.tsx +187 -0
- package/src/contexts/sessionStorageContext.tsx +80 -0
- package/src/contexts/shopifyUrlContext.tsx +97 -0
- package/src/contexts/types.ts +12 -8
- package/src/contexts/userIdentityContext.tsx +197 -0
- package/src/events/registerAnalyticsListeners.ts +32 -38
- package/src/hooks/index.ts +10 -6
- package/src/hooks/useAmplitudeOperations.ts +35 -0
- package/src/hooks/useAppDetails.ts +49 -0
- package/src/hooks/useCdnOperations.ts +16 -0
- package/src/hooks/useChatToggle.ts +5 -4
- package/src/hooks/useChatToggleAnalytics.ts +15 -0
- package/src/hooks/useGraphQLConfig.ts +63 -0
- package/src/hooks/useIdentifyUser.ts +33 -0
- package/src/hooks/useImageResolver.ts +18 -10
- package/src/hooks/useLocalStorageOperations.ts +92 -0
- package/src/hooks/useNewOrgConfig.ts +7 -0
- package/src/hooks/useSearch.tsx +21 -18
- package/src/hooks/useSearchOperations.ts +97 -0
- package/src/hooks/useSessionStorageOperations.ts +28 -0
- package/src/hooks/useShopifyUrlOperations.ts +45 -0
- package/src/hooks/useTrackComponentVisibleEvent.ts +12 -8
- package/src/hooks/useUpdateAnalyticsProps.ts +28 -17
- package/src/interceptors/index.ts +0 -1
- package/src/interceptors/useMessageInterceptor.ts +5 -8
- package/src/merchants/bandolier/bandolier.ts +10 -28
- package/src/merchants/carpe/carpe.ts +5 -8
- package/src/merchants/coterie/coterie.ts +3 -6
- package/src/merchants/default.ts +73 -70
- package/src/merchants/domInsertion.ts +30 -0
- package/src/merchants/dreamlandBaby/dreamlandBaby.ts +12 -6
- package/src/merchants/fiveCbd/fiveCbd.ts +7 -13
- package/src/merchants/forLoveAndLemons/forLoveAndLemons.ts +44 -14
- package/src/merchants/greenpan/greenpan.ts +6 -12
- package/src/merchants/gridInsertion.ts +19 -0
- package/src/merchants/grooveLife/grooveLife.ts +13 -7
- package/src/merchants/homegrownCannabis/homegrownCannabis.ts +12 -6
- package/src/merchants/jackArcher/jackArcher.ts +26 -11
- package/src/merchants/jordanCraig/jordanCraig.ts +5 -5
- package/src/merchants/kindredBravely/kindredBravely.ts +16 -7
- package/src/merchants/kutFromTheKloth/kutFromTheKloth.ts +9 -6
- package/src/merchants/larryAndSerges/larryAndSerges.ts +6 -2
- package/src/merchants/leapsAndRebounds/leapsAndRebounds.ts +7 -7
- package/src/merchants/longevityrx/longevityrx.ts +14 -8
- package/src/merchants/lookOptic/lookOptic.ts +6 -6
- package/src/merchants/mantraBrand/mantraBrand.ts +14 -8
- package/src/merchants/medterra/medterra.ts +14 -11
- package/src/merchants/modells/modells.ts +6 -9
- package/src/merchants/pressedFloral/pressedFloral.ts +7 -13
- package/src/merchants/skinPerfection/skinPerfection.ts +13 -7
- package/src/merchants/snapSupplements/snapSupplements.ts +13 -10
- package/src/merchants/spanx/spanx.ts +6 -6
- package/src/merchants/spanx/spanxStaging.ts +6 -12
- package/src/merchants/supergoop/supergoop.ts +11 -12
- package/src/merchants/uniqueVintage/uniqueVintage.ts +6 -6
- package/src/merchants/venaCbd/venaCbd.ts +6 -9
- package/src/merchants/westonJonBoucher/westonJonBoucher.ts +6 -6
- package/src/merchants/wineEnthusiast/wineEnthusiast.ts +6 -6
- package/src/merchants/wolfMattress/wolfMattress.ts +3 -3
- package/src/merchants/wolfTactical/wolfTactical.ts +5 -11
- package/src/types/config-versions.ts +6 -0
- package/src/types.ts +0 -53
- package/dist/adapters/amplitude/index.cjs +0 -14
- package/dist/adapters/amplitude/index.d.cts +0 -6
- package/dist/adapters/amplitude/index.d.ts +0 -6
- package/dist/adapters/amplitude/index.js +0 -12
- package/dist/api-B2euFL-5.cjs +0 -269
- package/dist/api-XRr_lAG6.js +0 -190
- package/dist/application/config/index.cjs +0 -43
- package/dist/application/config/index.d.cts +0 -15
- package/dist/application/config/index.d.ts +0 -15
- package/dist/application/config/index.js +0 -41
- package/dist/application/service/customerService/index.cjs +0 -4
- package/dist/application/service/customerService/index.d.cts +0 -3
- package/dist/application/service/customerService/index.d.ts +0 -3
- package/dist/application/service/customerService/index.js +0 -4
- package/dist/application/service/index.cjs +0 -41
- package/dist/application/service/index.d.cts +0 -399
- package/dist/application/service/index.d.ts +0 -399
- package/dist/application/service/index.js +0 -12
- package/dist/bandolier-B76-OE75.cjs +0 -1230
- package/dist/bandolier-DRn_x1g1.js +0 -1230
- package/dist/carpe-kHi4RLB5.cjs +0 -608
- package/dist/carpe-qrSU99gq.js +0 -606
- package/dist/contexts-CQDwe3rK.cjs +0 -14333
- package/dist/contexts-e2sM-B9g.js +0 -12919
- package/dist/coterie-mMirPcHP.js +0 -240
- package/dist/customerService-BG1uNZZ1.cjs +0 -36
- package/dist/customerService-BHQRnLhC.js +0 -23
- package/dist/default-8Jfv8ehQ.cjs +0 -199
- package/dist/default-C8PQf-38.js +0 -176
- package/dist/default-LukSiCz1.js +0 -4
- package/dist/default-rJSJ887P.cjs +0 -4
- package/dist/dreamlandBaby-DHltv12Z.cjs +0 -347
- package/dist/dreamlandBaby-cG0HM9bt.js +0 -347
- package/dist/featureFlagService-5wdmW02z.d.ts +0 -18
- package/dist/featureFlagService-DaelrXEk.d.cts +0 -18
- package/dist/fiveCbd-Cvnwh03g.cjs +0 -614
- package/dist/fiveCbd-DhYMlsf9.js +0 -614
- package/dist/forLoveAndLemons-C8DuUexW.js +0 -666
- package/dist/forLoveAndLemons-DR6a1zjJ.cjs +0 -668
- package/dist/greenpan-B4Pu65kV.js +0 -398
- package/dist/greenpan-BL5p6j7f.cjs +0 -398
- package/dist/grooveLife-DjKWHoN3.cjs +0 -343
- package/dist/grooveLife-JK0TyaPz.js +0 -343
- package/dist/homegrownCannabis-DxqSDkmS.js +0 -411
- package/dist/homegrownCannabis-ZnfCqW-m.cjs +0 -411
- package/dist/index-BfuO9b0Q.d.ts +0 -749
- package/dist/index-CNsGWfS6.d.cts +0 -749
- package/dist/index-DFL1dIT_.d.ts +0 -7
- package/dist/index-MFbPQ8Ji.d.ts +0 -95
- package/dist/index-VSFakgAI.d.cts +0 -95
- package/dist/index-zZjcds15.d.cts +0 -7
- package/dist/jackArcher-mGkojXek.cjs +0 -728
- package/dist/jordanCraig-BvCvPRoR.js +0 -1787
- package/dist/jordanCraig-Dv8pVCiS.cjs +0 -1787
- package/dist/kindredBravely-UQP7wiNu.cjs +0 -491
- package/dist/kindredBravely-X8F_LNph.js +0 -491
- package/dist/kutFromTheKloth-BhYKk3CN.cjs +0 -370
- package/dist/kutFromTheKloth-D1xsTSJr.js +0 -370
- package/dist/larryAndSerges-1411NuZa.cjs +0 -262
- package/dist/larryAndSerges-DVIRLItu.js +0 -262
- package/dist/leapsAndRebounds-BJ8mwr33.js +0 -361
- package/dist/leapsAndRebounds-UcP9EJVO.cjs +0 -361
- package/dist/logger-Dln20ans.cjs +0 -26
- package/dist/logger-pdEEY8T2.js +0 -20
- package/dist/longevityrx-BFSv9GF5.cjs +0 -321
- package/dist/longevityrx-Cp6wleWr.js +0 -321
- package/dist/lookOptic-KieSqskd.cjs +0 -283
- package/dist/mantraBrand-CHQw-0nw.cjs +0 -751
- package/dist/medterra-CLG6Co1C.cjs +0 -584
- package/dist/medterra-D8ZX9NZC.js +0 -584
- package/dist/modells-BzyPwN2m.cjs +0 -485
- package/dist/modells-CAfqOCW4.js +0 -485
- package/dist/orgConfigResults--dAwtw3W.d.ts +0 -881
- package/dist/orgConfigResults-BL0XBA6x.d.cts +0 -881
- package/dist/pressedFloral-DULBuQwR.cjs +0 -662
- package/dist/pressedFloral-Dp-7Fk3S.js +0 -662
- package/dist/skinPerfection-BxuYCeJX.js +0 -335
- package/dist/skinPerfection-Cd3XZ6By.cjs +0 -335
- package/dist/snapSupplements-Bf6htPM0.js +0 -286
- package/dist/snapSupplements-ZFnXyMuZ.cjs +0 -286
- package/dist/spanx-CwDPQaGj.js +0 -662
- package/dist/spanx-Cyd4qDlK.cjs +0 -664
- package/dist/spanxStaging-D43nyAGy.js +0 -846
- package/dist/spanxStaging-ijbYnHzr.cjs +0 -849
- package/dist/supergoop-BnbFG7hm.cjs +0 -338
- package/dist/supergoop-CY043wIg.js +0 -336
- package/dist/types-BF_CJeck.js +0 -177
- package/dist/types-CD4LFta-.d.cts +0 -33
- package/dist/types-CNH4sfF-.cjs +0 -231
- package/dist/types-DBdI0j89.d.ts +0 -33
- package/dist/uniqueVintage-R2Jcu1y1.cjs +0 -1214
- package/dist/variant-CKVRF2-W.d.ts +0 -13
- package/dist/variant-raYuOP4L.d.cts +0 -13
- package/dist/venaCbd-o5_vOp4e.js +0 -366
- package/dist/venaCbd-r-IxEVc1.cjs +0 -366
- package/dist/westonJonBoucher-DjGEW3ZB.cjs +0 -423
- package/dist/wineEnthusiast-DvfcV5B3.cjs +0 -941
- package/dist/wolfMattress-6xPfOJt3.js +0 -373
- package/dist/wolfMattress-BjGnGKjP.cjs +0 -373
- package/dist/wolfTactical-Bi3WZu0m.cjs +0 -350
- package/dist/wolfTactical-C_F9-oPX.js +0 -350
- package/src/adapters/amplitude/amplitudeAdapter.ts +0 -477
- package/src/adapters/amplitude/index.ts +0 -2
- package/src/adapters/amplitude/stubAmplitudeAdapter.ts +0 -34
- package/src/adapters/spiffy/commerce/graphql.ts +0 -219
- package/src/application/config/generalStaticConfig.ts +0 -40
- package/src/application/config/index.ts +0 -1
- package/src/application/models/domMutationContinuation.ts +0 -7
- package/src/application/models/domObservationStrategy.ts +0 -9
- package/src/application/service/cachingService.ts +0 -84
- package/src/application/service/cdnService.ts +0 -20
- package/src/application/service/customerService/index.ts +0 -8
- package/src/application/service/customerService/providers/UnsupportedCustomerService.ts +0 -15
- package/src/application/service/domMutationObserver.ts +0 -320
- package/src/application/service/domMutations/GridInsertionService.ts +0 -123
- package/src/application/service/domMutations/dataLayer/dataLayerEventsListener.ts +0 -99
- package/src/application/service/domMutations/domInsertionService.ts +0 -90
- package/src/application/service/domMutations/domMutationListener.ts +0 -15
- package/src/application/service/domMutations/domMutationListenerState.ts +0 -52
- package/src/application/service/domMutations/floatingChat/embeddedChatsPlacementsListener.ts +0 -41
- package/src/application/service/domMutations/gladly/gladlyListener.ts +0 -61
- package/src/application/service/domMutations/spiffy/orgs/common/kustomerVisibilityListener.ts +0 -41
- package/src/application/service/domMutations/spiffy/orgs/common/orgsCommonDataLayerListener.ts +0 -119
- package/src/application/service/featureFlagService.ts +0 -130
- package/src/application/service/index.ts +0 -31
- package/src/application/service/kustomerIntegrationService.ts +0 -111
- package/src/application/service/localStorageService.ts +0 -77
- package/src/application/service/pageVariantService.ts +0 -866
- package/src/application/service/searchService.ts +0 -147
- package/src/application/service/sessionStorageService.ts +0 -27
- package/src/application/service/shopifyUrlService.ts +0 -63
- package/src/application/service/userIdentityService.ts +0 -114
- package/src/application/service/windowChatToggleService.ts +0 -80
- package/src/application/service/windowDataLayerService.ts +0 -181
- package/src/application/service/windowFrontendConfigService.ts +0 -129
- package/src/atoms/org/merchantCss.ts +0 -158
- package/src/atoms/org/org.ts +0 -291
- package/src/atoms/org/orgUIConfig.ts +0 -142
- package/src/enabled-features.ts +0 -83
- package/src/hooks/useDynamicVariants.ts +0 -210
- package/src/hooks/useFileUpload.ts +0 -63
- package/src/hooks/useHideElements.ts +0 -82
- package/src/hooks/useHorizontalScrollAnimation.ts +0 -115
- package/src/hooks/useReducedMotionWithOverride.ts +0 -15
- package/src/hooks/useSnapControl.ts +0 -155
- package/src/interceptors/useFormEscalation.ts +0 -57
- /package/dist/{variantInfo-CzhR5W6h.js → atomStore-CZnUUsrr.js} +0 -0
- /package/dist/{variantInfo-CNRTY0gH.cjs → atomStore-KSoFS3Jj.cjs} +0 -0
- /package/dist/{utilityTypes-C4h2wgAK.cjs → locators-0YYZu9n4.cjs} +0 -0
- /package/dist/{utilityTypes-BVikejDo.js → locators-fBXS_pxP.js} +0 -0
- /package/dist/{locators-Dc5ZT0aF.js → utilityTypes-8sETsYPk.js} +0 -0
- /package/dist/{locators-lQMJj830.cjs → utilityTypes-COShxVir.cjs} +0 -0
- /package/src/{application/service/customerService/types.ts → types/customerService.ts} +0 -0
- /package/src/{adapters/spiffy/commerce → types}/exceptions/sessionExceptions.ts +0 -0
- /package/src/{adapters/spiffy/commerce → types}/exceptions/unsupportedProductExceptions.ts +0 -0
package/dist/index-BfuO9b0Q.d.ts
DELETED
|
@@ -1,749 +0,0 @@
|
|
|
1
|
-
import { ColorMapping, FrontendConfig, OrgConfig, OrgPageConfig, OrgUIConfig, OrganizationConfig as OrganizationConfig$1, PageVariantConfig, WidgetConfig, WidgetMountingConfig } from "./orgConfigResults--dAwtw3W.js";
|
|
2
|
-
import { GetMerchantColorsQueryData } from "./index-D2VaMPA3.js";
|
|
3
|
-
import { AcceptableFormFieldType, ApiFormResponseAttributes, ApiPageResponseAttributes, OrderResponseAttributes as OrderResponseAttributes$1, PageResponseAttributes, ProductResponseAttributes, Response as Response$1, ReviewResponseAttributes, SearchProductFilterAttributes, SearchProductResponseAttributes, SearchResponseAttributes, TextResponseAttributes } from "./index-Cx9e-fRi.js";
|
|
4
|
-
import { CamelCasedPropertiesDeep, NonRecursiveType, UnknownArray, UpperCaseCharacters, WordSeparators } from "./index-Dxpscrvz.js";
|
|
5
|
-
import { VariantInfo } from "./index-CKKkTsms.js";
|
|
6
|
-
import { Context, CustServiceAttachment, FormSubmittedAttributes, FormType, FulfillmentDisplayStatus, GenerationParams, OrderItemInfo, OrderResponseAttributes, OrganizationConfig, OrganizationSettings, PDPAttributes, PLPAttributes, PLPIdAttributes, PageVisitCategory, ProductSearchFilterResponseAttributes, ProductSearchResponse, ProductSearchResponseAttributes, QueryTypedAttributes, SearchAttributes, SearchResponseProduct, StatsigExperiment, StatsigFeatureGate, Suggestion, SuggestionClickedAttributes, UserEvent, UserEventCategory } from "@spiffy-ai/commerce-api-client";
|
|
7
|
-
|
|
8
|
-
//#region src/application/models/cachedValue.d.ts
|
|
9
|
-
interface CachedValue {
|
|
10
|
-
value: unknown;
|
|
11
|
-
expiry: number;
|
|
12
|
-
}
|
|
13
|
-
//#endregion
|
|
14
|
-
//#region src/application/models/clientDetails.d.ts
|
|
15
|
-
interface ClientDetails {
|
|
16
|
-
os?: string;
|
|
17
|
-
osVersion?: string;
|
|
18
|
-
deviceBrand?: string;
|
|
19
|
-
deviceManufacturer?: string;
|
|
20
|
-
deviceModel?: string;
|
|
21
|
-
carrier?: string;
|
|
22
|
-
country?: string;
|
|
23
|
-
region?: string;
|
|
24
|
-
browser?: string;
|
|
25
|
-
browserVersion?: string;
|
|
26
|
-
browserIpAddress?: string;
|
|
27
|
-
userAgent?: string;
|
|
28
|
-
}
|
|
29
|
-
//#endregion
|
|
30
|
-
//#region src/application/models/conversationalSearchIds.d.ts
|
|
31
|
-
type ConversationalSearchIds = {
|
|
32
|
-
conversationalSearchEntrypointId?: string;
|
|
33
|
-
conversationalSearchInputId?: string;
|
|
34
|
-
conversationalSearchModalId?: string;
|
|
35
|
-
};
|
|
36
|
-
//#endregion
|
|
37
|
-
//#region src/application/models/dataLayer.d.ts
|
|
38
|
-
/**
|
|
39
|
-
* Base interface for common properties across all ecommerce events
|
|
40
|
-
*/
|
|
41
|
-
interface BaseEcommerceEvent {
|
|
42
|
-
event: string;
|
|
43
|
-
ecommerce: UAEcommerceData | GA4EcommerceData;
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Legacy universal analytics data. The actual payload contains more fields, but we
|
|
47
|
-
* only need the ones listed below.
|
|
48
|
-
*/
|
|
49
|
-
interface UAEcommerceData {
|
|
50
|
-
add: {
|
|
51
|
-
products: {
|
|
52
|
-
name: string;
|
|
53
|
-
category: string;
|
|
54
|
-
price: string;
|
|
55
|
-
quantity: string;
|
|
56
|
-
}[];
|
|
57
|
-
currencyCode: string;
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Google Analytics 4 data. The actual payload contains more fields, but we
|
|
62
|
-
* only need the ones listed below.
|
|
63
|
-
*/
|
|
64
|
-
interface GA4EcommerceData {
|
|
65
|
-
currency: string;
|
|
66
|
-
items: {
|
|
67
|
-
item_name: string;
|
|
68
|
-
item_category: string;
|
|
69
|
-
price: number;
|
|
70
|
-
quantity: number;
|
|
71
|
-
}[];
|
|
72
|
-
}
|
|
73
|
-
interface UAEcommerceEvent extends BaseEcommerceEvent {
|
|
74
|
-
ecommerce: UAEcommerceData;
|
|
75
|
-
}
|
|
76
|
-
interface GA4EcommerceEvent extends BaseEcommerceEvent {
|
|
77
|
-
ecommerce: GA4EcommerceData;
|
|
78
|
-
}
|
|
79
|
-
//#endregion
|
|
80
|
-
//#region src/application/models/domMutationContinuation.d.ts
|
|
81
|
-
declare enum DomMutationObserverContinuation {
|
|
82
|
-
CONTINUE = "CONTINUE",
|
|
83
|
-
EXECUTING = "EXECUTING",
|
|
84
|
-
STOP = "STOP",
|
|
85
|
-
}
|
|
86
|
-
//#endregion
|
|
87
|
-
//#region src/application/models/domObservationStrategy.d.ts
|
|
88
|
-
declare enum DomObservationStrategy {
|
|
89
|
-
MutationObserver = "MutationObserver",
|
|
90
|
-
Polling = "Polling",
|
|
91
|
-
None = "None",
|
|
92
|
-
}
|
|
93
|
-
//#endregion
|
|
94
|
-
//#region src/application/models/events.d.ts
|
|
95
|
-
declare enum SpiffyEventName {
|
|
96
|
-
WidgetOpen = "spiffy:widgetopen",
|
|
97
|
-
WidgetClose = "spiffy:widgetclose",
|
|
98
|
-
}
|
|
99
|
-
//#endregion
|
|
100
|
-
//#region src/application/models/googleAnalyticsEvents.d.ts
|
|
101
|
-
declare enum GoogleAnalyticsEvents {
|
|
102
|
-
ADD_TO_CART_v1 = "add_to_cart",
|
|
103
|
-
ADD_TO_CART_v2 = "addToCart",
|
|
104
|
-
}
|
|
105
|
-
//#endregion
|
|
106
|
-
//#region src/application/models/message.d.ts
|
|
107
|
-
declare enum MessageRole {
|
|
108
|
-
User = "user",
|
|
109
|
-
Assistant = "assistant",
|
|
110
|
-
}
|
|
111
|
-
declare enum MessageType {
|
|
112
|
-
Text = "text",
|
|
113
|
-
SuggestionClicked = "suggestion_clicked",
|
|
114
|
-
Product = "product",
|
|
115
|
-
ProductSearch = "product_search",
|
|
116
|
-
Review = "review",
|
|
117
|
-
QueryTyped = "query_typed",
|
|
118
|
-
Separator = "separator",
|
|
119
|
-
Page = "page",
|
|
120
|
-
Search = "search",
|
|
121
|
-
Attachment = "attachment",
|
|
122
|
-
CXAgentResponse = "cx_agent_response",
|
|
123
|
-
Form = "form",
|
|
124
|
-
Order = "order",
|
|
125
|
-
ProductSearchFilter = "product_search_filter",
|
|
126
|
-
}
|
|
127
|
-
type Message = {
|
|
128
|
-
id: string;
|
|
129
|
-
role: MessageRole;
|
|
130
|
-
createdAt: string;
|
|
131
|
-
} & (TextMessageMetadata | QueryTypedMetadata | SuggestionMessageMetadata | ProductMessageMetadata | ProductSearchMessageMetadata | ReviewMessageMetadata | SeparatorMessageMetadata | PageMessageMetadata | SearchMessageMetadata | AttachmentMetadata | CXAgentResponseMetadata | FormMessageMetadata | OrderMessageMetadata | ProductSearchFilterMetadata);
|
|
132
|
-
type AttachmentMetadata = {
|
|
133
|
-
type: MessageType.Attachment;
|
|
134
|
-
metadata: {
|
|
135
|
-
message?: string;
|
|
136
|
-
attachment: CustServiceAttachment[];
|
|
137
|
-
};
|
|
138
|
-
};
|
|
139
|
-
type CXAgentResponseMetadata = {
|
|
140
|
-
type: MessageType.CXAgentResponse;
|
|
141
|
-
metadata: {
|
|
142
|
-
message: string;
|
|
143
|
-
agentName: string;
|
|
144
|
-
};
|
|
145
|
-
};
|
|
146
|
-
type TextMessageMetadata = {
|
|
147
|
-
type: MessageType.Text;
|
|
148
|
-
metadata: TextResponseAttributes['attributes'];
|
|
149
|
-
};
|
|
150
|
-
type QueryTypedMetadata = {
|
|
151
|
-
type: MessageType.QueryTyped;
|
|
152
|
-
metadata: TextResponseAttributes['attributes'];
|
|
153
|
-
};
|
|
154
|
-
type SuggestionMessageMetadata = {
|
|
155
|
-
type: MessageType.SuggestionClicked;
|
|
156
|
-
metadata: {
|
|
157
|
-
suggestionId: string;
|
|
158
|
-
suggestionContent: string;
|
|
159
|
-
};
|
|
160
|
-
};
|
|
161
|
-
type ProductMessageMetadata = {
|
|
162
|
-
type: MessageType.Product;
|
|
163
|
-
metadata: ProductResponseAttributes['attributes'];
|
|
164
|
-
};
|
|
165
|
-
type ProductSearchMessageMetadata = {
|
|
166
|
-
type: MessageType.ProductSearch;
|
|
167
|
-
metadata: SearchProductResponseAttributes['attributes'];
|
|
168
|
-
};
|
|
169
|
-
type ReviewMessageMetadata = {
|
|
170
|
-
type: MessageType.Review;
|
|
171
|
-
metadata: ReviewResponseAttributes['attributes'];
|
|
172
|
-
};
|
|
173
|
-
type SeparatorMessageMetadata = {
|
|
174
|
-
type: MessageType.Separator;
|
|
175
|
-
};
|
|
176
|
-
type PageMessageMetadata = {
|
|
177
|
-
type: MessageType.Page;
|
|
178
|
-
metadata: PageResponseAttributes['attributes'];
|
|
179
|
-
};
|
|
180
|
-
type SearchMessageMetadata = {
|
|
181
|
-
type: MessageType.Search;
|
|
182
|
-
metadata: SearchResponseAttributes['attributes'];
|
|
183
|
-
};
|
|
184
|
-
type ProductSearchFilterMetadata = {
|
|
185
|
-
type: MessageType.ProductSearchFilter;
|
|
186
|
-
metadata: SearchProductFilterAttributes['attributes'];
|
|
187
|
-
};
|
|
188
|
-
type FormField = {
|
|
189
|
-
key: string;
|
|
190
|
-
title: string;
|
|
191
|
-
type: AcceptableFormFieldType;
|
|
192
|
-
required: boolean;
|
|
193
|
-
format?: 'email';
|
|
194
|
-
value?: string;
|
|
195
|
-
};
|
|
196
|
-
type FormMessageMetadata = {
|
|
197
|
-
type: MessageType.Form;
|
|
198
|
-
metadata: {
|
|
199
|
-
formType?: FormType;
|
|
200
|
-
fields: FormField[];
|
|
201
|
-
};
|
|
202
|
-
};
|
|
203
|
-
type OrderMessageMetadata = {
|
|
204
|
-
type: MessageType.Order;
|
|
205
|
-
metadata: OrderResponseAttributes$1['attributes'];
|
|
206
|
-
};
|
|
207
|
-
//#endregion
|
|
208
|
-
//#region src/application/models/mobilePLPChatPlacementParameter.d.ts
|
|
209
|
-
interface MobilePLPChatPlacementParameter {
|
|
210
|
-
rowIndex: number;
|
|
211
|
-
}
|
|
212
|
-
//#endregion
|
|
213
|
-
//#region src/application/models/orgsEnum.d.ts
|
|
214
|
-
declare const OrgShortName: {
|
|
215
|
-
readonly Coterie: "coterie";
|
|
216
|
-
readonly ForLoveAndLemons: "for-love-and-lemons";
|
|
217
|
-
readonly Greenpan: "greenpan";
|
|
218
|
-
readonly JordanCraig: "jordan-craig";
|
|
219
|
-
readonly LarryAndSerges: "larry_and_serges";
|
|
220
|
-
readonly LeapsAndRebounds: "leaps-and-rebounds";
|
|
221
|
-
readonly MantraBrand: "mantra-brand";
|
|
222
|
-
readonly Spanx: "spanx";
|
|
223
|
-
readonly SpanxStaging: "staging-spanx";
|
|
224
|
-
readonly Supergoop: "supergoop";
|
|
225
|
-
readonly UniqueVintage: "unique-vintage";
|
|
226
|
-
readonly JackArcher: "jack-archer";
|
|
227
|
-
readonly SkinPerfection: "skin-perfection";
|
|
228
|
-
readonly LookOptic: "look-optic";
|
|
229
|
-
readonly FiveCbd: "five-cbd";
|
|
230
|
-
readonly SnapSupplements: "snap-supplements";
|
|
231
|
-
readonly Longevityrx: "longevityrx";
|
|
232
|
-
readonly VenaCbd: "vena-cbd";
|
|
233
|
-
readonly Medterra: "medterra";
|
|
234
|
-
readonly Modells: "modells";
|
|
235
|
-
readonly PressedFloral: "pressed-floral";
|
|
236
|
-
readonly KindredBravely: "kindred-bravely";
|
|
237
|
-
readonly WineEnthusiast: "wine-enthusiast";
|
|
238
|
-
readonly HomegrownCannabis: "homegrown-cannabis";
|
|
239
|
-
readonly DreamlandBaby: "dreamland-baby";
|
|
240
|
-
readonly Bandolier: "bandolier";
|
|
241
|
-
readonly WestonJonBoucher: "weston-jon-boucher";
|
|
242
|
-
readonly KutFromTheKloth: "kut-from-the-kloth";
|
|
243
|
-
readonly GrooveLife: "groove-life";
|
|
244
|
-
readonly Carpe: "carpe";
|
|
245
|
-
readonly WolfTactical: "wolf-tactical";
|
|
246
|
-
readonly WolfMattress: "wolfmattress";
|
|
247
|
-
readonly Default: "default";
|
|
248
|
-
};
|
|
249
|
-
//#endregion
|
|
250
|
-
//#region src/application/models/productExperiment.d.ts
|
|
251
|
-
declare enum ProductExperiment {
|
|
252
|
-
Default = "default",
|
|
253
|
-
}
|
|
254
|
-
//#endregion
|
|
255
|
-
//#region src/application/models/spanxTakeAQuizCtaParameter.d.ts
|
|
256
|
-
interface SpanxTakeAQuizCtaParameter {
|
|
257
|
-
text?: string;
|
|
258
|
-
value?: string;
|
|
259
|
-
}
|
|
260
|
-
//#endregion
|
|
261
|
-
//#region src/application/models/spiffyWidgets.d.ts
|
|
262
|
-
/**
|
|
263
|
-
* Enum of all widget names. These are widgets that are rendered and integrated into
|
|
264
|
-
* a merchant's website.
|
|
265
|
-
*/
|
|
266
|
-
declare enum SpiffyWidgets {
|
|
267
|
-
ImageBanner = "image_banner",
|
|
268
|
-
ImagePromptCard = "image_prompt_card",
|
|
269
|
-
SingleImagePrompt = "single_image_prompt",
|
|
270
|
-
EmbeddedWidget = "embedded_widget",
|
|
271
|
-
FloatingButton = "floating_button",
|
|
272
|
-
SuggestionBar = "suggestion_bar",
|
|
273
|
-
SearchPrompt = "search_prompt",
|
|
274
|
-
GlobalSearch = "global_search",
|
|
275
|
-
SearchResults = "search_results",
|
|
276
|
-
GlobalSearchEntryPoint = "global_search_entry_point",
|
|
277
|
-
}
|
|
278
|
-
//#endregion
|
|
279
|
-
//#region src/application/models/supportedOrgs.d.ts
|
|
280
|
-
type BasicOrgInfoType = {
|
|
281
|
-
shortName: string;
|
|
282
|
-
name: string;
|
|
283
|
-
domain: string;
|
|
284
|
-
defaultProductId: string;
|
|
285
|
-
alwaysEnabledMerchants: boolean;
|
|
286
|
-
orgUIConfig: () => OrgUIConfig | undefined;
|
|
287
|
-
orgPageConfig: () => OrgPageConfig;
|
|
288
|
-
orgColors: () => ColorMapping | {};
|
|
289
|
-
};
|
|
290
|
-
declare const getOrgInfo: (orgShortName: string) => Promise<BasicOrgInfoType>;
|
|
291
|
-
//#endregion
|
|
292
|
-
//#region src/application/models/api/context.d.ts
|
|
293
|
-
interface Context$1 extends CamelCasedPropertiesDeep<Context> {}
|
|
294
|
-
//#endregion
|
|
295
|
-
//#region src/application/models/api/generationParams.d.ts
|
|
296
|
-
interface GenerationParams$1 extends CamelCasedPropertiesDeep<GenerationParams> {}
|
|
297
|
-
//#endregion
|
|
298
|
-
//#region src/application/models/api/userEvent.d.ts
|
|
299
|
-
interface PDPAttributes$1 extends CamelCasedPropertiesDeep<PDPAttributes> {}
|
|
300
|
-
interface PLPAttributes$1 extends CamelCasedPropertiesDeep<PLPAttributes> {}
|
|
301
|
-
interface SearchAttributes$1 extends CamelCasedPropertiesDeep<SearchAttributes> {}
|
|
302
|
-
interface QueryTypedAttributes$1 extends CamelCasedPropertiesDeep<QueryTypedAttributes> {}
|
|
303
|
-
interface FormSubmittedAttributes$1 {
|
|
304
|
-
filledSchema: Record<string, unknown>;
|
|
305
|
-
formResponseId: string;
|
|
306
|
-
formType: FormType;
|
|
307
|
-
}
|
|
308
|
-
interface PageVisitAttributes {
|
|
309
|
-
url: string;
|
|
310
|
-
pageVisitCategory: PageVisitCategory;
|
|
311
|
-
}
|
|
312
|
-
interface SuggestionClickedAttributes$1 extends CamelCasedPropertiesDeep<SuggestionClickedAttributes> {}
|
|
313
|
-
type UserEventAttributes = PDPAttributes$1 | PLPAttributes$1 | QueryTypedAttributes$1 | SearchAttributes$1 | SuggestionClickedAttributes$1 | PageVisitAttributes;
|
|
314
|
-
interface PDPUserEvent {
|
|
315
|
-
category: UserEventCategory.PdpVisit | UserEventCategory.AddToCart;
|
|
316
|
-
attributes: PDPAttributes$1;
|
|
317
|
-
}
|
|
318
|
-
interface PLPUserEvent {
|
|
319
|
-
category: UserEventCategory.PlpVisit;
|
|
320
|
-
attributes: PLPAttributes$1;
|
|
321
|
-
}
|
|
322
|
-
interface QueryTypedUserEvent {
|
|
323
|
-
category: UserEventCategory.QueryTyped;
|
|
324
|
-
attributes: QueryTypedAttributes$1;
|
|
325
|
-
}
|
|
326
|
-
interface SearchUserEvent {
|
|
327
|
-
category: UserEventCategory.Search;
|
|
328
|
-
attributes: SearchAttributes$1;
|
|
329
|
-
}
|
|
330
|
-
interface SuggestionsClickedUserEvent {
|
|
331
|
-
category: UserEventCategory.SuggestionClicked;
|
|
332
|
-
attributes: SuggestionClickedAttributes$1;
|
|
333
|
-
}
|
|
334
|
-
interface AppLoadedUserEvent {
|
|
335
|
-
category: UserEventCategory.AppLoaded;
|
|
336
|
-
}
|
|
337
|
-
interface AppUnloadedEvent {
|
|
338
|
-
category: UserEventCategory.AppUnloaded;
|
|
339
|
-
}
|
|
340
|
-
interface PageVisitEvent {
|
|
341
|
-
category: UserEventCategory.PageVisit;
|
|
342
|
-
attributes: PageVisitAttributes;
|
|
343
|
-
}
|
|
344
|
-
interface FormSubmitted {
|
|
345
|
-
category: UserEventCategory.FormSubmitted;
|
|
346
|
-
attributes: FormSubmittedAttributes$1;
|
|
347
|
-
}
|
|
348
|
-
type UserEvent$1 = CamelCasedPropertiesDeep<Pick<UserEvent, 'event_id' | 'category' | 'created_at'>> & (SuggestionsClickedUserEvent | AppLoadedUserEvent | PDPUserEvent | QueryTypedUserEvent | SearchUserEvent | AppUnloadedEvent | PLPUserEvent | PageVisitEvent | FormSubmitted);
|
|
349
|
-
//#endregion
|
|
350
|
-
//#region src/application/models/api/nextMessageRequest.d.ts
|
|
351
|
-
interface NextMessageRequest$1 {
|
|
352
|
-
id: string;
|
|
353
|
-
context: Context$1;
|
|
354
|
-
userEvents?: UserEvent$1[];
|
|
355
|
-
featureFlags?: Record<string, boolean>;
|
|
356
|
-
generationParams?: GenerationParams$1;
|
|
357
|
-
}
|
|
358
|
-
//#endregion
|
|
359
|
-
//#region src/application/models/api/search.d.ts
|
|
360
|
-
interface ProductSearchResponse$1 extends CamelCasedPropertiesDeep<ProductSearchResponse> {}
|
|
361
|
-
interface ProductSearchResponseAttributes$1 extends CamelCasedPropertiesDeep<ProductSearchResponseAttributes> {}
|
|
362
|
-
interface SearchResult {
|
|
363
|
-
products: SearchResponseProduct[];
|
|
364
|
-
filters: string[];
|
|
365
|
-
generatedQuery?: string;
|
|
366
|
-
totalProductCount: number;
|
|
367
|
-
searchResponseId: string;
|
|
368
|
-
}
|
|
369
|
-
interface SearchParams {
|
|
370
|
-
query: string;
|
|
371
|
-
limit?: number;
|
|
372
|
-
}
|
|
373
|
-
//#endregion
|
|
374
|
-
//#region src/application/models/api/suggestion.d.ts
|
|
375
|
-
interface Suggestion$1 extends CamelCasedPropertiesDeep<Suggestion> {}
|
|
376
|
-
//#endregion
|
|
377
|
-
//#region src/application/models/api/supportedEventRequest.d.ts
|
|
378
|
-
interface SupportedEventRequest$1 {
|
|
379
|
-
id: string;
|
|
380
|
-
context: Context$1;
|
|
381
|
-
userEvent: UserEvent$1;
|
|
382
|
-
}
|
|
383
|
-
//#endregion
|
|
384
|
-
//#region src/application/models/graphql/queries/getMerchantOrgIdQuery.d.ts
|
|
385
|
-
declare const getMerchantOrgIdQuery = "\n query {\n me {\n org {\n id\n }\n }\n }\n";
|
|
386
|
-
//#endregion
|
|
387
|
-
//#region src/application/models/guards/isBaseEcommerceEvent.d.ts
|
|
388
|
-
/**
|
|
389
|
-
* Checks if an event is a base Google Analytics ecommerce event.
|
|
390
|
-
*
|
|
391
|
-
* @param data The event to check.
|
|
392
|
-
*
|
|
393
|
-
* @returns True if the event is a base ecommerce event, false otherwise.
|
|
394
|
-
*/
|
|
395
|
-
declare const isBaseEcommerceEvent: (data: unknown) => data is BaseEcommerceEvent;
|
|
396
|
-
//#endregion
|
|
397
|
-
//#region src/application/models/guards/isGA4EcommerceEvent.d.ts
|
|
398
|
-
/**
|
|
399
|
-
* Checks if an event is a Google Analytics 4 ecommerce event.
|
|
400
|
-
*
|
|
401
|
-
* @param data The event to check.
|
|
402
|
-
*
|
|
403
|
-
* @returns True if the event is a GA4 ecommerce event, false otherwise.
|
|
404
|
-
*/
|
|
405
|
-
declare const isGA4EcommerceEvent: (data: unknown) => data is GA4EcommerceEvent;
|
|
406
|
-
//#endregion
|
|
407
|
-
//#region src/application/models/guards/isLegacyUAEcommerceEvent.d.ts
|
|
408
|
-
/**
|
|
409
|
-
* Checks if an event is a legacy Universal Analytics ecommerce event.
|
|
410
|
-
*
|
|
411
|
-
* @param data The event to check.
|
|
412
|
-
*
|
|
413
|
-
* @returns True if the event is a legacy UA ecommerce event, false otherwise.
|
|
414
|
-
*/
|
|
415
|
-
declare const isLegacyUAEcommerceEvent: (data: unknown) => data is UAEcommerceEvent;
|
|
416
|
-
//#endregion
|
|
417
|
-
//#region src/application/models/guards/isMobilePLPChatPlacementParameter.d.ts
|
|
418
|
-
interface MobilePlpChatPlacementParameter {
|
|
419
|
-
row_index: number;
|
|
420
|
-
}
|
|
421
|
-
declare const isMobilePLPChatPlacementParameter: (value: unknown) => value is MobilePlpChatPlacementParameter;
|
|
422
|
-
//#endregion
|
|
423
|
-
//#region src/application/models/guards/isSpanxTakeAQuizCtaParameter.d.ts
|
|
424
|
-
declare const isSpanxTakeAQuizCtaParameter: (value: unknown) => value is SpanxTakeAQuizCtaParameter;
|
|
425
|
-
//#endregion
|
|
426
|
-
//#region src/application/models/guards/isVariantInfo.d.ts
|
|
427
|
-
/**
|
|
428
|
-
* Type guard to check if an object is a valid VariantInfo.
|
|
429
|
-
*
|
|
430
|
-
* @param variantInfo - The unknown object to check.
|
|
431
|
-
*
|
|
432
|
-
* @returns True if the data is a valid VariantInfo object, false otherwise.
|
|
433
|
-
*/
|
|
434
|
-
declare const isVariantInfo: (variantInfo: unknown) => variantInfo is VariantInfo;
|
|
435
|
-
//#endregion
|
|
436
|
-
//#region src/application/models/guards/utils.d.ts
|
|
437
|
-
/**
|
|
438
|
-
* Checks if an object has a property of a specific type
|
|
439
|
-
*
|
|
440
|
-
* @param obj - The object to check
|
|
441
|
-
* @param prop - The property name to check
|
|
442
|
-
* @param type - The expected type of the property
|
|
443
|
-
* @param isOptional - Whether the property is optional (defaults to false)
|
|
444
|
-
*
|
|
445
|
-
* @returns boolean indicating if the object has the property of the specified type
|
|
446
|
-
*/
|
|
447
|
-
declare const hasPropertyOfType: <T extends object>(obj: unknown, prop: keyof T, type: "string" | "number" | "boolean" | "object" | "array", isOptional?: boolean) => obj is T;
|
|
448
|
-
//#endregion
|
|
449
|
-
//#region src/application/models/guards/api/isApiFormResponse.d.ts
|
|
450
|
-
/**
|
|
451
|
-
* Type guard to check if the provided data has the all of the properties (with the correct types) of
|
|
452
|
-
* a FormResponseAttribute
|
|
453
|
-
*
|
|
454
|
-
* @param data - The data to check
|
|
455
|
-
*
|
|
456
|
-
* @returns true if the data has the correct properties, false otherwise
|
|
457
|
-
*/
|
|
458
|
-
declare const isApiFormResponseAttributes: (data: unknown) => data is ApiFormResponseAttributes;
|
|
459
|
-
//#endregion
|
|
460
|
-
//#region src/application/models/guards/api/isApiFormSubmittedResponseAttributes.d.ts
|
|
461
|
-
declare const isApiFormSubmittedResponseAttributes: (data: unknown) => data is FormSubmittedAttributes;
|
|
462
|
-
//#endregion
|
|
463
|
-
//#region src/application/models/guards/api/isApiOrderResponseAttributes.d.ts
|
|
464
|
-
interface ApiOrderItemInfo extends Omit<OrderItemInfo, 'delivered_at' | 'estimated_delivery_at' | 'in_transit_at'> {
|
|
465
|
-
delivered_at?: string;
|
|
466
|
-
estimated_delivery_at?: string;
|
|
467
|
-
in_transit_at?: string;
|
|
468
|
-
}
|
|
469
|
-
interface ApiOrderResponseAttributes extends Omit<OrderResponseAttributes, 'created_at' | 'latest_event_date' | 'line_items'> {
|
|
470
|
-
created_at: string;
|
|
471
|
-
latest_event_date: string;
|
|
472
|
-
line_items: ApiOrderItemInfo[];
|
|
473
|
-
}
|
|
474
|
-
declare const isApiOrderResponseAttributes: (data: unknown) => data is ApiOrderResponseAttributes;
|
|
475
|
-
//#endregion
|
|
476
|
-
//#region src/application/models/guards/api/isApiOrganizationConfig.d.ts
|
|
477
|
-
interface ApiOrgAnalyticsConfigAmplitude {
|
|
478
|
-
session_replay_enabled: boolean;
|
|
479
|
-
session_replay_sample_rate: number;
|
|
480
|
-
tracking_enabled: boolean;
|
|
481
|
-
}
|
|
482
|
-
interface ApiOrgAnalyticsConfigCustomerService {
|
|
483
|
-
provider: string;
|
|
484
|
-
}
|
|
485
|
-
interface ApiOrgAnalyticsConfigGoogleAnalytics {
|
|
486
|
-
measurement_id: string;
|
|
487
|
-
}
|
|
488
|
-
interface ApiOrgAnalyticsConfig {
|
|
489
|
-
amplitude?: ApiOrgAnalyticsConfigAmplitude;
|
|
490
|
-
customer_service?: ApiOrgAnalyticsConfigCustomerService;
|
|
491
|
-
google_analytics?: ApiOrgAnalyticsConfigGoogleAnalytics;
|
|
492
|
-
}
|
|
493
|
-
interface ApiOrganizationConfig extends OrganizationConfig {
|
|
494
|
-
config: ApiOrgAnalyticsConfig;
|
|
495
|
-
}
|
|
496
|
-
/**
|
|
497
|
-
*
|
|
498
|
-
* @param data
|
|
499
|
-
* @returns
|
|
500
|
-
*/
|
|
501
|
-
declare const isApiOrganizationConfig: (data: unknown) => data is ApiOrganizationConfig;
|
|
502
|
-
//#endregion
|
|
503
|
-
//#region src/application/models/guards/api/isApiOrgConfigResults.d.ts
|
|
504
|
-
interface ApiOrgConfigResults {
|
|
505
|
-
configs: ApiOrganizationConfig[];
|
|
506
|
-
experiments: StatsigExperiment[];
|
|
507
|
-
gates: StatsigFeatureGate[];
|
|
508
|
-
org: OrganizationSettings;
|
|
509
|
-
}
|
|
510
|
-
/**
|
|
511
|
-
*
|
|
512
|
-
* @param data
|
|
513
|
-
* @returns
|
|
514
|
-
*/
|
|
515
|
-
declare const isApiOrgConfigResults: (data: unknown) => data is Required<ApiOrgConfigResults>;
|
|
516
|
-
//#endregion
|
|
517
|
-
//#region src/application/models/guards/api/isApiPageResponseAttributes.d.ts
|
|
518
|
-
declare const isApiPageResponseAttributes: (obj: unknown) => obj is ApiPageResponseAttributes;
|
|
519
|
-
//#endregion
|
|
520
|
-
//#region src/application/models/guards/api/isApiPLPEventAttributes.d.ts
|
|
521
|
-
declare const isApiPLPIdAttribute: (data: unknown) => data is PLPIdAttributes;
|
|
522
|
-
declare const isApiPLPEventAttributes: (data: unknown) => data is PLPAttributes;
|
|
523
|
-
//#endregion
|
|
524
|
-
//#region src/application/models/guards/api/isApiProductSearchFilterAttributes.d.ts
|
|
525
|
-
declare const isApiProductSearchFilterResponseAttributes: (attributes: unknown) => attributes is ProductSearchFilterResponseAttributes;
|
|
526
|
-
//#endregion
|
|
527
|
-
//#region src/application/models/guards/graphQL/isGraphQLColorsConfig.d.ts
|
|
528
|
-
declare const isGraphQLColorsConfig: (data: unknown) => data is GetMerchantColorsQueryData;
|
|
529
|
-
//#endregion
|
|
530
|
-
//#region src/application/models/utilityTypes/delimiterCase.d.ts
|
|
531
|
-
type UpperCaseToLowerCase<T extends string> = T extends Uppercase<T> ? Lowercase<T> : T;
|
|
532
|
-
type SplitIncludingDelimiters_<Source extends string, Delimiter extends string> = Source extends '' ? [] : Source extends `${infer FirstPart}${Delimiter}${infer SecondPart}` ? Source extends `${FirstPart}${infer UsedDelimiter}${SecondPart}` ? UsedDelimiter extends Delimiter ? Source extends `${infer FirstPart}${UsedDelimiter}${infer SecondPart}` ? [...SplitIncludingDelimiters<FirstPart, Delimiter>, UsedDelimiter, ...SplitIncludingDelimiters<SecondPart, Delimiter>] : never : never : never : [Source];
|
|
533
|
-
/**
|
|
534
|
-
* Unlike a simpler split, this one includes the delimiter splitted on in the resulting array literal. This is to enable splitting on, for example, upper-case characters.
|
|
535
|
-
*
|
|
536
|
-
* @category Template literal
|
|
537
|
-
*/
|
|
538
|
-
type SplitIncludingDelimiters<Source extends string, Delimiter extends string> = SplitIncludingDelimiters_<UpperCaseToLowerCase<Source>, Delimiter>;
|
|
539
|
-
/**
|
|
540
|
-
*Format a specific part of the splitted string literal that `StringArrayToDelimiterCase<>` fuses together, ensuring desired casing.
|
|
541
|
-
*
|
|
542
|
-
*@see StringArrayToDelimiterCase
|
|
543
|
-
*/
|
|
544
|
-
type StringPartToDelimiterCase<StringPart extends string, Start extends boolean, UsedWordSeparators extends string, UsedUpperCaseCharacters extends string, Delimiter extends string> = StringPart extends UsedWordSeparators ? Delimiter : Start extends true ? Lowercase<StringPart> : StringPart extends UsedUpperCaseCharacters ? `${Delimiter}${Lowercase<StringPart>}` : StringPart;
|
|
545
|
-
/**
|
|
546
|
-
* Takes the result of a splitted string literal and recursively concatenates it together into the desired casing.
|
|
547
|
-
*
|
|
548
|
-
* It receives `UsedWordSeparators` and `UsedUpperCaseCharacters` as input to ensure it's fully encapsulated.
|
|
549
|
-
*
|
|
550
|
-
* @see SplitIncludingDelimiters
|
|
551
|
-
*/
|
|
552
|
-
type StringArrayToDelimiterCase<Parts extends readonly any[], Start extends boolean, UsedWordSeparators extends string, UsedUpperCaseCharacters extends string, Delimiter extends string> = Parts extends [`${infer FirstPart}`, ...infer RemainingParts] ? `${StringPartToDelimiterCase<FirstPart, Start, UsedWordSeparators, UsedUpperCaseCharacters, Delimiter>}${StringArrayToDelimiterCase<RemainingParts, false, UsedWordSeparators, UsedUpperCaseCharacters, Delimiter>}` : Parts extends [string] ? string : '';
|
|
553
|
-
/**
|
|
554
|
-
* Convert a string literal to a custom string delimiter casing.
|
|
555
|
-
*
|
|
556
|
-
* This can be useful when, for example, converting a camel-cased object property to an oddly cased one.
|
|
557
|
-
*
|
|
558
|
-
* @see KebabCase
|
|
559
|
-
* @see SnakeCase
|
|
560
|
-
*
|
|
561
|
-
* @example
|
|
562
|
-
* ```
|
|
563
|
-
* import type {DelimiterCase} from 'type-fest';
|
|
564
|
-
*
|
|
565
|
-
* // Simple
|
|
566
|
-
*
|
|
567
|
-
* const someVariable: DelimiterCase<'fooBar', '#'> = 'foo#bar';
|
|
568
|
-
*
|
|
569
|
-
* // Advanced
|
|
570
|
-
*
|
|
571
|
-
* type OddlyCasedProperties<T> = {
|
|
572
|
-
* [K in keyof T as DelimiterCase<K, '#'>]: T[K]
|
|
573
|
-
* };
|
|
574
|
-
*
|
|
575
|
-
* interface SomeOptions {
|
|
576
|
-
* dryRun: boolean;
|
|
577
|
-
* includeFile: string;
|
|
578
|
-
* foo: number;
|
|
579
|
-
* }
|
|
580
|
-
*
|
|
581
|
-
* const rawCliOptions: OddlyCasedProperties<SomeOptions> = {
|
|
582
|
-
* 'dry#run': true,
|
|
583
|
-
* 'include#file': 'bar.js',
|
|
584
|
-
* foo: 123
|
|
585
|
-
* };
|
|
586
|
-
* ```
|
|
587
|
-
*
|
|
588
|
-
* @category Change case
|
|
589
|
-
* @category Template literal
|
|
590
|
-
*/
|
|
591
|
-
type DelimiterCase<Value, Delimiter extends string> = string extends Value ? Value : Value extends string ? StringArrayToDelimiterCase<SplitIncludingDelimiters<Value, WordSeparators | UpperCaseCharacters>, true, WordSeparators, UpperCaseCharacters, Delimiter> : Value;
|
|
592
|
-
//#endregion
|
|
593
|
-
//#region src/application/models/utilityTypes/delimiterCasedPropertiesDeep.d.ts
|
|
594
|
-
/**
|
|
595
|
-
* Convert object properties to delimiter case recursively.
|
|
596
|
-
*
|
|
597
|
-
* This can be useful when, for example, converting some API types from a different style.
|
|
598
|
-
*
|
|
599
|
-
* @see DelimiterCase
|
|
600
|
-
* @see DelimiterCasedProperties
|
|
601
|
-
*
|
|
602
|
-
* @example
|
|
603
|
-
* ```
|
|
604
|
-
* import type {DelimiterCasedPropertiesDeep} from 'type-fest';
|
|
605
|
-
*
|
|
606
|
-
* interface User {
|
|
607
|
-
* userId: number;
|
|
608
|
-
* userName: string;
|
|
609
|
-
* }
|
|
610
|
-
*
|
|
611
|
-
* interface UserWithFriends {
|
|
612
|
-
* userInfo: User;
|
|
613
|
-
* userFriends: User[];
|
|
614
|
-
* }
|
|
615
|
-
*
|
|
616
|
-
* const result: DelimiterCasedPropertiesDeep<UserWithFriends, '-'> = {
|
|
617
|
-
* 'user-info': {
|
|
618
|
-
* 'user-id': 1,
|
|
619
|
-
* 'user-name': 'Tom',
|
|
620
|
-
* },
|
|
621
|
-
* 'user-friends': [
|
|
622
|
-
* {
|
|
623
|
-
* 'user-id': 2,
|
|
624
|
-
* 'user-name': 'Jerry',
|
|
625
|
-
* },
|
|
626
|
-
* {
|
|
627
|
-
* 'user-id': 3,
|
|
628
|
-
* 'user-name': 'Spike',
|
|
629
|
-
* },
|
|
630
|
-
* ],
|
|
631
|
-
* };
|
|
632
|
-
* ```
|
|
633
|
-
*
|
|
634
|
-
* @category Change case
|
|
635
|
-
* @category Template literal
|
|
636
|
-
* @category Object
|
|
637
|
-
*/
|
|
638
|
-
type DelimiterCasedPropertiesDeep<Value, Delimiter extends string> = Value extends NonRecursiveType ? Value : Value extends UnknownArray ? DelimiterCasedPropertiesArrayDeep<Value, Delimiter> : Value extends Set<infer U> ? Set<DelimiterCasedPropertiesDeep<U, Delimiter>> : { [K in keyof Value as DelimiterCase<K, Delimiter>]: DelimiterCasedPropertiesDeep<Value[K], Delimiter> };
|
|
639
|
-
type DelimiterCasedPropertiesArrayDeep<Value extends UnknownArray, Delimiter extends string> = Value extends [] ? [] : Value extends [infer U, ...infer V] ? [DelimiterCasedPropertiesDeep<U, Delimiter>, ...DelimiterCasedPropertiesDeep<V, Delimiter>] : Value extends readonly [infer U, ...infer V] ? readonly [DelimiterCasedPropertiesDeep<U, Delimiter>, ...DelimiterCasedPropertiesDeep<V, Delimiter>] : Value extends readonly [...infer U, infer V] ? [...DelimiterCasedPropertiesDeep<U, Delimiter>, DelimiterCasedPropertiesDeep<V, Delimiter>] : Value extends readonly [...infer U, infer V] ? readonly [...DelimiterCasedPropertiesDeep<U, Delimiter>, DelimiterCasedPropertiesDeep<V, Delimiter>] : Value extends Array<infer U> ? Array<DelimiterCasedPropertiesDeep<U, Delimiter>> : Value extends ReadonlyArray<infer U> ? ReadonlyArray<DelimiterCasedPropertiesDeep<U, Delimiter>> : never;
|
|
640
|
-
//#endregion
|
|
641
|
-
//#region src/application/models/utilityTypes/snakeCasedPropertiesDeep.d.ts
|
|
642
|
-
/**
|
|
643
|
-
* Convert object properties to snake case recursively.
|
|
644
|
-
*
|
|
645
|
-
* This can be useful when, for example, converting some API types from a different style.
|
|
646
|
-
*
|
|
647
|
-
* @see SnakeCase
|
|
648
|
-
* @see SnakeCasedProperties
|
|
649
|
-
*
|
|
650
|
-
* @example
|
|
651
|
-
* ```
|
|
652
|
-
* import type {SnakeCasedPropertiesDeep} from 'type-fest';
|
|
653
|
-
*
|
|
654
|
-
* interface User {
|
|
655
|
-
* userId: number;
|
|
656
|
-
* userName: string;
|
|
657
|
-
* }
|
|
658
|
-
*
|
|
659
|
-
* interface UserWithFriends {
|
|
660
|
-
* userInfo: User;
|
|
661
|
-
* userFriends: User[];
|
|
662
|
-
* }
|
|
663
|
-
*
|
|
664
|
-
* const result: SnakeCasedPropertiesDeep<UserWithFriends> = {
|
|
665
|
-
* user_info: {
|
|
666
|
-
* user_id: 1,
|
|
667
|
-
* user_name: 'Tom',
|
|
668
|
-
* },
|
|
669
|
-
* user_friends: [
|
|
670
|
-
* {
|
|
671
|
-
* user_id: 2,
|
|
672
|
-
* user_name: 'Jerry',
|
|
673
|
-
* },
|
|
674
|
-
* {
|
|
675
|
-
* user_id: 3,
|
|
676
|
-
* user_name: 'Spike',
|
|
677
|
-
* },
|
|
678
|
-
* ],
|
|
679
|
-
* };
|
|
680
|
-
* ```
|
|
681
|
-
*
|
|
682
|
-
* @category Change case
|
|
683
|
-
* @category Template literal
|
|
684
|
-
* @category Object
|
|
685
|
-
*/
|
|
686
|
-
type SnakeCasedPropertiesDeep<Value> = DelimiterCasedPropertiesDeep<Value, '_'>;
|
|
687
|
-
//#endregion
|
|
688
|
-
//#region src/application/models/utils/snakeToCamelTransformer.d.ts
|
|
689
|
-
/**
|
|
690
|
-
* Generic utility to transform snake_case object keys to camelCase at runtime.
|
|
691
|
-
* This is the runtime equivalent of the CamelCasedPropertiesDeep type utility.
|
|
692
|
-
*/
|
|
693
|
-
/**
|
|
694
|
-
* Recursively transforms all object keys from snake_case to camelCase
|
|
695
|
-
*/
|
|
696
|
-
declare const transformSnakeToCamel: (obj: unknown) => unknown;
|
|
697
|
-
/**
|
|
698
|
-
* Recursively transforms all object keys from camelCase to snake_case
|
|
699
|
-
*/
|
|
700
|
-
declare const transformCamelToSnake: (obj: unknown) => unknown;
|
|
701
|
-
//#endregion
|
|
702
|
-
//#region src/application/models/utils/stringToFulfillmentDisplayStatusEnumValue.d.ts
|
|
703
|
-
/**
|
|
704
|
-
* Converts a string to a FulfillmentDisplayStatus enum value.
|
|
705
|
-
*
|
|
706
|
-
* @param status - The string to convert.
|
|
707
|
-
*
|
|
708
|
-
* @returns The FulfillmentDisplayStatus enum value or undefined if the string
|
|
709
|
-
* does not map to a valid enum
|
|
710
|
-
*/
|
|
711
|
-
declare const stringToFulfillmentDisplayStatusEnumValue: (status: string) => FulfillmentDisplayStatus | undefined;
|
|
712
|
-
//#endregion
|
|
713
|
-
//#region src/application/models/validators/validateGraphQLColorsConfig.d.ts
|
|
714
|
-
declare const validateGraphQLColorsConfig: (data: unknown) => ColorMapping | undefined;
|
|
715
|
-
//#endregion
|
|
716
|
-
//#region src/application/models/validators/validateGraphQLFrontendConfig.d.ts
|
|
717
|
-
declare const validateAndTransformPageVariants: (config: Record<string, unknown>) => PageVariantConfig;
|
|
718
|
-
declare const validateAndTransformMountingConfig: (config: Record<string, unknown>, configKey: string) => WidgetMountingConfig;
|
|
719
|
-
declare const validateAndTransformWidgetConfig: (config: Record<string, unknown>, configKey: string) => WidgetConfig;
|
|
720
|
-
declare const validateGraphQLFrontendConfig: (data: unknown) => FrontendConfig | undefined;
|
|
721
|
-
//#endregion
|
|
722
|
-
//#region src/application/models/validators/validateGraphQLOrgId.d.ts
|
|
723
|
-
declare const validateGraphQLOrgId: (data: unknown) => string | undefined;
|
|
724
|
-
//#endregion
|
|
725
|
-
//#region src/application/models/validators/validateMobilePLPChatPlacementParameter.d.ts
|
|
726
|
-
declare const validateMobilePLPChatPlacementParameter: (value: unknown) => MobilePLPChatPlacementParameter | undefined;
|
|
727
|
-
//#endregion
|
|
728
|
-
//#region src/application/models/validators/validateOrganizationConfig.d.ts
|
|
729
|
-
declare const validateOrganizationConfig: (data: unknown) => OrganizationConfig$1 | undefined;
|
|
730
|
-
//#endregion
|
|
731
|
-
//#region src/application/models/validators/validateOrgConfigResults.d.ts
|
|
732
|
-
/**
|
|
733
|
-
*
|
|
734
|
-
* @param data
|
|
735
|
-
* @returns
|
|
736
|
-
*/
|
|
737
|
-
declare const validateOrgConfigResults: (data: unknown) => OrgConfig | undefined;
|
|
738
|
-
//#endregion
|
|
739
|
-
//#region src/application/models/validators/validateResponse.d.ts
|
|
740
|
-
declare const validateResponse: (data: unknown) => Response$1 | undefined;
|
|
741
|
-
//#endregion
|
|
742
|
-
//#region src/application/models/validators/validateSuggestion.d.ts
|
|
743
|
-
declare const validateSuggestion: (data: unknown) => Suggestion$1 | undefined;
|
|
744
|
-
//#endregion
|
|
745
|
-
//#region src/application/models/validators/validateUserEvent.d.ts
|
|
746
|
-
declare const validateUserEvent: (data: unknown) => UserEvent$1 | undefined;
|
|
747
|
-
//#endregion
|
|
748
|
-
export { ApiOrderItemInfo, ApiOrderResponseAttributes, ApiOrganizationConfig, AppLoadedUserEvent, AppUnloadedEvent, BaseEcommerceEvent, BasicOrgInfoType, type CachedValue, type ClientDetails, Context$1 as Context, ConversationalSearchIds, DelimiterCase, DelimiterCasedPropertiesDeep, DomMutationObserverContinuation, DomObservationStrategy, FormField, FormSubmitted, FormSubmittedAttributes$1 as FormSubmittedAttributes, GA4EcommerceEvent, GenerationParams$1 as GenerationParams, GoogleAnalyticsEvents, Message, MessageRole, MessageType, MobilePLPChatPlacementParameter, NextMessageRequest$1 as NextMessageRequest, OrgShortName, PDPAttributes$1 as PDPAttributes, PDPUserEvent, PLPAttributes$1 as PLPAttributes, PLPUserEvent, PageVisitAttributes, PageVisitEvent, ProductExperiment, ProductMessageMetadata, ProductSearchMessageMetadata, ProductSearchResponse$1 as ProductSearchResponse, ProductSearchResponseAttributes$1 as ProductSearchResponseAttributes, QueryTypedAttributes$1 as QueryTypedAttributes, QueryTypedUserEvent, SearchAttributes$1 as SearchAttributes, SearchParams, SearchResult, SearchUserEvent, SnakeCasedPropertiesDeep, SpanxTakeAQuizCtaParameter, SpiffyEventName, SpiffyWidgets, SplitIncludingDelimiters, Suggestion$1 as Suggestion, SuggestionClickedAttributes$1 as SuggestionClickedAttributes, SuggestionsClickedUserEvent, SupportedEventRequest$1 as SupportedEventRequest, UAEcommerceEvent, UserEvent$1 as UserEvent, UserEventAttributes, getMerchantOrgIdQuery, getOrgInfo, hasPropertyOfType, isApiFormResponseAttributes, isApiFormSubmittedResponseAttributes, isApiOrderResponseAttributes, isApiOrgConfigResults, isApiOrganizationConfig, isApiPLPEventAttributes, isApiPLPIdAttribute, isApiPageResponseAttributes, isApiProductSearchFilterResponseAttributes, isBaseEcommerceEvent, isGA4EcommerceEvent, isGraphQLColorsConfig, isLegacyUAEcommerceEvent, isMobilePLPChatPlacementParameter, isSpanxTakeAQuizCtaParameter, isVariantInfo, stringToFulfillmentDisplayStatusEnumValue, transformCamelToSnake, transformSnakeToCamel, validateAndTransformMountingConfig, validateAndTransformPageVariants, validateAndTransformWidgetConfig, validateGraphQLColorsConfig, validateGraphQLFrontendConfig, validateGraphQLOrgId, validateMobilePLPChatPlacementParameter, validateOrgConfigResults, validateOrganizationConfig, validateResponse, validateSuggestion, validateUserEvent };
|
|
749
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgtQmZ1TzliMFEuZC50cyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2NhY2hlZFZhbHVlLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2NsaWVudERldGFpbHMuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvY29udmVyc2F0aW9uYWxTZWFyY2hJZHMuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZGF0YUxheWVyLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2RvbU11dGF0aW9uQ29udGludWF0aW9uLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2RvbU9ic2VydmF0aW9uU3RyYXRlZ3kuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZXZlbnRzLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2dvb2dsZUFuYWx5dGljc0V2ZW50cy5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9tZXNzYWdlLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL21vYmlsZVBMUENoYXRQbGFjZW1lbnRQYXJhbWV0ZXIuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvb3Jnc0VudW0uZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvcHJvZHVjdEV4cGVyaW1lbnQuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvc3BhbnhUYWtlQVF1aXpDdGFQYXJhbWV0ZXIuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvc3BpZmZ5V2lkZ2V0cy5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9zdXBwb3J0ZWRPcmdzLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS9jb250ZXh0LmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS9nZW5lcmF0aW9uUGFyYW1zLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS91c2VyRXZlbnQuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvYXBpL25leHRNZXNzYWdlUmVxdWVzdC5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvc2VhcmNoLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS9zdWdnZXN0aW9uLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS9zdXBwb3J0ZWRFdmVudFJlcXVlc3QuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3JhcGhxbC9xdWVyaWVzL2dldE1lcmNoYW50T3JnSWRRdWVyeS5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ndWFyZHMvaXNCYXNlRWNvbW1lcmNlRXZlbnQuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3VhcmRzL2lzR0E0RWNvbW1lcmNlRXZlbnQuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3VhcmRzL2lzTGVnYWN5VUFFY29tbWVyY2VFdmVudC5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ndWFyZHMvaXNNb2JpbGVQTFBDaGF0UGxhY2VtZW50UGFyYW1ldGVyLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2d1YXJkcy9pc1NwYW54VGFrZUFRdWl6Q3RhUGFyYW1ldGVyLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2d1YXJkcy9pc1ZhcmlhbnRJbmZvLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2d1YXJkcy91dGlscy5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ndWFyZHMvYXBpL2lzQXBpRm9ybVJlc3BvbnNlLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2d1YXJkcy9hcGkvaXNBcGlGb3JtU3VibWl0dGVkUmVzcG9uc2VBdHRyaWJ1dGVzLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2d1YXJkcy9hcGkvaXNBcGlPcmRlclJlc3BvbnNlQXR0cmlidXRlcy5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ndWFyZHMvYXBpL2lzQXBpT3JnYW5pemF0aW9uQ29uZmlnLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2d1YXJkcy9hcGkvaXNBcGlPcmdDb25maWdSZXN1bHRzLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2d1YXJkcy9hcGkvaXNBcGlQYWdlUmVzcG9uc2VBdHRyaWJ1dGVzLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2d1YXJkcy9hcGkvaXNBcGlQTFBFdmVudEF0dHJpYnV0ZXMuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3VhcmRzL2FwaS9pc0FwaVByb2R1Y3RTZWFyY2hGaWx0ZXJBdHRyaWJ1dGVzLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2d1YXJkcy9ncmFwaFFML2lzR3JhcGhRTENvbG9yc0NvbmZpZy5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy91dGlsaXR5VHlwZXMvZGVsaW1pdGVyQ2FzZS5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy91dGlsaXR5VHlwZXMvZGVsaW1pdGVyQ2FzZWRQcm9wZXJ0aWVzRGVlcC5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy91dGlsaXR5VHlwZXMvc25ha2VDYXNlZFByb3BlcnRpZXNEZWVwLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL3V0aWxzL3NuYWtlVG9DYW1lbFRyYW5zZm9ybWVyLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL3V0aWxzL3N0cmluZ1RvRnVsZmlsbG1lbnREaXNwbGF5U3RhdHVzRW51bVZhbHVlLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL3ZhbGlkYXRvcnMvdmFsaWRhdGVHcmFwaFFMQ29sb3JzQ29uZmlnLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL3ZhbGlkYXRvcnMvdmFsaWRhdGVHcmFwaFFMRnJvbnRlbmRDb25maWcuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvdmFsaWRhdG9ycy92YWxpZGF0ZUdyYXBoUUxPcmdJZC5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy92YWxpZGF0b3JzL3ZhbGlkYXRlTW9iaWxlUExQQ2hhdFBsYWNlbWVudFBhcmFtZXRlci5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy92YWxpZGF0b3JzL3ZhbGlkYXRlT3JnYW5pemF0aW9uQ29uZmlnLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL3ZhbGlkYXRvcnMvdmFsaWRhdGVPcmdDb25maWdSZXN1bHRzLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL3ZhbGlkYXRvcnMvdmFsaWRhdGVSZXNwb25zZS5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy92YWxpZGF0b3JzL3ZhbGlkYXRlU3VnZ2VzdGlvbi5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy92YWxpZGF0b3JzL3ZhbGlkYXRlVXNlckV2ZW50LmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW50ZXJmYWNlIENhY2hlZFZhbHVlIHtcbiAgICB2YWx1ZTogdW5rbm93bjtcbiAgICBleHBpcnk6IG51bWJlcjtcbn1cbmV4cG9ydCB0eXBlIHsgQ2FjaGVkVmFsdWUgfTtcbiIsImludGVyZmFjZSBDbGllbnREZXRhaWxzIHtcbiAgICBvcz86IHN0cmluZztcbiAgICBvc1ZlcnNpb24/OiBzdHJpbmc7XG4gICAgZGV2aWNlQnJhbmQ/OiBzdHJpbmc7XG4gICAgZGV2aWNlTWFudWZhY3R1cmVyPzogc3RyaW5nO1xuICAgIGRldmljZU1vZGVsPzogc3RyaW5nO1xuICAgIGNhcnJpZXI/OiBzdHJpbmc7XG4gICAgY291bnRyeT86IHN0cmluZztcbiAgICByZWdpb24/OiBzdHJpbmc7XG4gICAgYnJvd3Nlcj86IHN0cmluZztcbiAgICBicm93c2VyVmVyc2lvbj86IHN0cmluZztcbiAgICBicm93c2VySXBBZGRyZXNzPzogc3RyaW5nO1xuICAgIHVzZXJBZ2VudD86IHN0cmluZztcbn1cbmV4cG9ydCB0eXBlIHsgQ2xpZW50RGV0YWlscywgfTtcbiIsImV4cG9ydCB0eXBlIENvbnZlcnNhdGlvbmFsU2VhcmNoSWRzID0ge1xuICAgIGNvbnZlcnNhdGlvbmFsU2VhcmNoRW50cnlwb2ludElkPzogc3RyaW5nO1xuICAgIGNvbnZlcnNhdGlvbmFsU2VhcmNoSW5wdXRJZD86IHN0cmluZztcbiAgICBjb252ZXJzYXRpb25hbFNlYXJjaE1vZGFsSWQ/OiBzdHJpbmc7XG59O1xuIiwiLyoqXG4gKiBCYXNlIGludGVyZmFjZSBmb3IgY29tbW9uIHByb3BlcnRpZXMgYWNyb3NzIGFsbCBlY29tbWVyY2UgZXZlbnRzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUVjb21tZXJjZUV2ZW50IHtcbiAgICBldmVudDogc3RyaW5nO1xuICAgIGVjb21tZXJjZTogVUFFY29tbWVyY2VEYXRhIHwgR0E0RWNvbW1lcmNlRGF0YTtcbn1cbi8qKlxuICogTGVnYWN5IHVuaXZlcnNhbCBhbmFseXRpY3MgZGF0YS4gVGhlIGFjdHVhbCBwYXlsb2FkIGNvbnRhaW5zIG1vcmUgZmllbGRzLCBidXQgd2VcbiAqIG9ubHkgbmVlZCB0aGUgb25lcyBsaXN0ZWQgYmVsb3cuXG4gKi9cbmludGVyZmFjZSBVQUVjb21tZXJjZURhdGEge1xuICAgIGFkZDoge1xuICAgICAgICBwcm9kdWN0czoge1xuICAgICAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICAgICAgY2F0ZWdvcnk6IHN0cmluZztcbiAgICAgICAgICAgIHByaWNlOiBzdHJpbmc7XG4gICAgICAgICAgICBxdWFudGl0eTogc3RyaW5nO1xuICAgICAgICB9W107XG4gICAgICAgIGN1cnJlbmN5Q29kZTogc3RyaW5nO1xuICAgIH07XG59XG4vKipcbiAqIEdvb2dsZSBBbmFseXRpY3MgNCBkYXRhLiBUaGUgYWN0dWFsIHBheWxvYWQgY29udGFpbnMgbW9yZSBmaWVsZHMsIGJ1dCB3ZVxuICogb25seSBuZWVkIHRoZSBvbmVzIGxpc3RlZCBiZWxvdy5cbiAqL1xuaW50ZXJmYWNlIEdBNEVjb21tZXJjZURhdGEge1xuICAgIGN1cnJlbmN5OiBzdHJpbmc7XG4gICAgaXRlbXM6IHtcbiAgICAgICAgaXRlbV9uYW1lOiBzdHJpbmc7XG4gICAgICAgIGl0ZW1fY2F0ZWdvcnk6IHN0cmluZztcbiAgICAgICAgcHJpY2U6IG51bWJlcjtcbiAgICAgICAgcXVhbnRpdHk6IG51bWJlcjtcbiAgICB9W107XG59XG5leHBvcnQgaW50ZXJmYWNlIFVBRWNvbW1lcmNlRXZlbnQgZXh0ZW5kcyBCYXNlRWNvbW1lcmNlRXZlbnQge1xuICAgIGVjb21tZXJjZTogVUFFY29tbWVyY2VEYXRhO1xufVxuZXhwb3J0IGludGVyZmFjZSBHQTRFY29tbWVyY2VFdmVudCBleHRlbmRzIEJhc2VFY29tbWVyY2VFdmVudCB7XG4gICAgZWNvbW1lcmNlOiBHQTRFY29tbWVyY2VEYXRhO1xufVxuZXhwb3J0IHt9O1xuIiwiZGVjbGFyZSBlbnVtIERvbU11dGF0aW9uT2JzZXJ2ZXJDb250aW51YXRpb24ge1xuICAgIENPTlRJTlVFID0gXCJDT05USU5VRVwiLFxuICAgIEVYRUNVVElORyA9IFwiRVhFQ1VUSU5HXCIsXG4gICAgU1RPUCA9IFwiU1RPUFwiXG59XG5leHBvcnQgeyBEb21NdXRhdGlvbk9ic2VydmVyQ29udGludWF0aW9uIH07XG4iLCJkZWNsYXJlIGVudW0gRG9tT2JzZXJ2YXRpb25TdHJhdGVneSB7XG4gICAgTXV0YXRpb25PYnNlcnZlciA9IFwiTXV0YXRpb25PYnNlcnZlclwiLFxuICAgIFBvbGxpbmcgPSBcIlBvbGxpbmdcIixcbiAgICBOb25lID0gXCJOb25lXCJcbn1cbmV4cG9ydCB7IERvbU9ic2VydmF0aW9uU3RyYXRlZ3kgfTtcbiIsImV4cG9ydCBkZWNsYXJlIGVudW0gU3BpZmZ5RXZlbnROYW1lIHtcbiAgICBXaWRnZXRPcGVuID0gXCJzcGlmZnk6d2lkZ2V0b3BlblwiLFxuICAgIFdpZGdldENsb3NlID0gXCJzcGlmZnk6d2lkZ2V0Y2xvc2VcIlxufVxuIiwiZGVjbGFyZSBlbnVtIEdvb2dsZUFuYWx5dGljc0V2ZW50cyB7XG4gICAgQUREX1RPX0NBUlRfdjEgPSBcImFkZF90b19jYXJ0XCIsXG4gICAgQUREX1RPX0NBUlRfdjIgPSBcImFkZFRvQ2FydFwiXG59XG5leHBvcnQgeyBHb29nbGVBbmFseXRpY3NFdmVudHMgfTtcbiIsImltcG9ydCB7IEN1c3RTZXJ2aWNlQXR0YWNobWVudCwgRm9ybVR5cGUgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuaW1wb3J0IHsgT3JkZXJSZXNwb25zZUF0dHJpYnV0ZXMsIFByb2R1Y3RSZXNwb25zZUF0dHJpYnV0ZXMsIFJldmlld1Jlc3BvbnNlQXR0cmlidXRlcywgUGFnZVJlc3BvbnNlQXR0cmlidXRlcywgVGV4dFJlc3BvbnNlQXR0cmlidXRlcywgU2VhcmNoUmVzcG9uc2VBdHRyaWJ1dGVzLCBTZWFyY2hQcm9kdWN0UmVzcG9uc2VBdHRyaWJ1dGVzLCBBY2NlcHRhYmxlRm9ybUZpZWxkVHlwZSwgU2VhcmNoUHJvZHVjdEZpbHRlckF0dHJpYnV0ZXMgfSBmcm9tICcuL2FwaS9yZXNwb25zZSc7XG5leHBvcnQgZGVjbGFyZSBlbnVtIE1lc3NhZ2VSb2xlIHtcbiAgICBVc2VyID0gXCJ1c2VyXCIsXG4gICAgQXNzaXN0YW50ID0gXCJhc3Npc3RhbnRcIlxufVxuZXhwb3J0IGRlY2xhcmUgZW51bSBNZXNzYWdlVHlwZSB7XG4gICAgVGV4dCA9IFwidGV4dFwiLFxuICAgIFN1Z2dlc3Rpb25DbGlja2VkID0gXCJzdWdnZXN0aW9uX2NsaWNrZWRcIixcbiAgICBQcm9kdWN0ID0gXCJwcm9kdWN0XCIsXG4gICAgUHJvZHVjdFNlYXJjaCA9IFwicHJvZHVjdF9zZWFyY2hcIixcbiAgICBSZXZpZXcgPSBcInJldmlld1wiLFxuICAgIFF1ZXJ5VHlwZWQgPSBcInF1ZXJ5X3R5cGVkXCIsXG4gICAgU2VwYXJhdG9yID0gXCJzZXBhcmF0b3JcIixcbiAgICBQYWdlID0gXCJwYWdlXCIsXG4gICAgU2VhcmNoID0gXCJzZWFyY2hcIixcbiAgICBBdHRhY2htZW50ID0gXCJhdHRhY2htZW50XCIsXG4gICAgQ1hBZ2VudFJlc3BvbnNlID0gXCJjeF9hZ2VudF9yZXNwb25zZVwiLFxuICAgIEZvcm0gPSBcImZvcm1cIixcbiAgICBPcmRlciA9IFwib3JkZXJcIixcbiAgICBQcm9kdWN0U2VhcmNoRmlsdGVyID0gXCJwcm9kdWN0X3NlYXJjaF9maWx0ZXJcIlxufVxuZXhwb3J0IHR5cGUgTWVzc2FnZSA9IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIHJvbGU6IE1lc3NhZ2VSb2xlO1xuICAgIGNyZWF0ZWRBdDogc3RyaW5nO1xufSAmIChUZXh0TWVzc2FnZU1ldGFkYXRhIHwgUXVlcnlUeXBlZE1ldGFkYXRhIHwgU3VnZ2VzdGlvbk1lc3NhZ2VNZXRhZGF0YSB8IFByb2R1Y3RNZXNzYWdlTWV0YWRhdGEgfCBQcm9kdWN0U2VhcmNoTWVzc2FnZU1ldGFkYXRhIHwgUmV2aWV3TWVzc2FnZU1ldGFkYXRhIHwgU2VwYXJhdG9yTWVzc2FnZU1ldGFkYXRhIHwgUGFnZU1lc3NhZ2VNZXRhZGF0YSB8IFNlYXJjaE1lc3NhZ2VNZXRhZGF0YSB8IEF0dGFjaG1lbnRNZXRhZGF0YSB8IENYQWdlbnRSZXNwb25zZU1ldGFkYXRhIHwgRm9ybU1lc3NhZ2VNZXRhZGF0YSB8IE9yZGVyTWVzc2FnZU1ldGFkYXRhIHwgUHJvZHVjdFNlYXJjaEZpbHRlck1ldGFkYXRhKTtcbnR5cGUgQXR0YWNobWVudE1ldGFkYXRhID0ge1xuICAgIHR5cGU6IE1lc3NhZ2VUeXBlLkF0dGFjaG1lbnQ7XG4gICAgbWV0YWRhdGE6IHtcbiAgICAgICAgbWVzc2FnZT86IHN0cmluZztcbiAgICAgICAgYXR0YWNobWVudDogQ3VzdFNlcnZpY2VBdHRhY2htZW50W107XG4gICAgfTtcbn07XG50eXBlIENYQWdlbnRSZXNwb25zZU1ldGFkYXRhID0ge1xuICAgIHR5cGU6IE1lc3NhZ2VUeXBlLkNYQWdlbnRSZXNwb25zZTtcbiAgICBtZXRhZGF0YToge1xuICAgICAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgICAgIGFnZW50TmFtZTogc3RyaW5nO1xuICAgIH07XG59O1xudHlwZSBUZXh0TWVzc2FnZU1ldGFkYXRhID0ge1xuICAgIHR5cGU6IE1lc3NhZ2VUeXBlLlRleHQ7XG4gICAgbWV0YWRhdGE6IFRleHRSZXNwb25zZUF0dHJpYnV0ZXNbJ2F0dHJpYnV0ZXMnXTtcbn07XG50eXBlIFF1ZXJ5VHlwZWRNZXRhZGF0YSA9IHtcbiAgICB0eXBlOiBNZXNzYWdlVHlwZS5RdWVyeVR5cGVkO1xuICAgIG1ldGFkYXRhOiBUZXh0UmVzcG9uc2VBdHRyaWJ1dGVzWydhdHRyaWJ1dGVzJ107XG59O1xudHlwZSBTdWdnZXN0aW9uTWVzc2FnZU1ldGFkYXRhID0ge1xuICAgIHR5cGU6IE1lc3NhZ2VUeXBlLlN1Z2dlc3Rpb25DbGlja2VkO1xuICAgIG1ldGFkYXRhOiB7XG4gICAgICAgIHN1Z2dlc3Rpb25JZDogc3RyaW5nO1xuICAgICAgICBzdWdnZXN0aW9uQ29udGVudDogc3RyaW5nO1xuICAgIH07XG59O1xuZXhwb3J0IHR5cGUgUHJvZHVjdE1lc3NhZ2VNZXRhZGF0YSA9IHtcbiAgICB0eXBlOiBNZXNzYWdlVHlwZS5Qcm9kdWN0O1xuICAgIG1ldGFkYXRhOiBQcm9kdWN0UmVzcG9uc2VBdHRyaWJ1dGVzWydhdHRyaWJ1dGVzJ107XG59O1xuZXhwb3J0IHR5cGUgUHJvZHVjdFNlYXJjaE1lc3NhZ2VNZXRhZGF0YSA9IHtcbiAgICB0eXBlOiBNZXNzYWdlVHlwZS5Qcm9kdWN0U2VhcmNoO1xuICAgIG1ldGFkYXRhOiBTZWFyY2hQcm9kdWN0UmVzcG9uc2VBdHRyaWJ1dGVzWydhdHRyaWJ1dGVzJ107XG59O1xudHlwZSBSZXZpZXdNZXNzYWdlTWV0YWRhdGEgPSB7XG4gICAgdHlwZTogTWVzc2FnZVR5cGUuUmV2aWV3O1xuICAgIG1ldGFkYXRhOiBSZXZpZXdSZXNwb25zZUF0dHJpYnV0ZXNbJ2F0dHJpYnV0ZXMnXTtcbn07XG50eXBlIFNlcGFyYXRvck1lc3NhZ2VNZXRhZGF0YSA9IHtcbiAgICB0eXBlOiBNZXNzYWdlVHlwZS5TZXBhcmF0b3I7XG59O1xudHlwZSBQYWdlTWVzc2FnZU1ldGFkYXRhID0ge1xuICAgIHR5cGU6IE1lc3NhZ2VUeXBlLlBhZ2U7XG4gICAgbWV0YWRhdGE6IFBhZ2VSZXNwb25zZUF0dHJpYnV0ZXNbJ2F0dHJpYnV0ZXMnXTtcbn07XG50eXBlIFNlYXJjaE1lc3NhZ2VNZXRhZGF0YSA9IHtcbiAgICB0eXBlOiBNZXNzYWdlVHlwZS5TZWFyY2g7XG4gICAgbWV0YWRhdGE6IFNlYXJjaFJlc3BvbnNlQXR0cmlidXRlc1snYXR0cmlidXRlcyddO1xufTtcbnR5cGUgUHJvZHVjdFNlYXJjaEZpbHRlck1ldGFkYXRhID0ge1xuICAgIHR5cGU6IE1lc3NhZ2VUeXBlLlByb2R1Y3RTZWFyY2hGaWx0ZXI7XG4gICAgbWV0YWRhdGE6IFNlYXJjaFByb2R1Y3RGaWx0ZXJBdHRyaWJ1dGVzWydhdHRyaWJ1dGVzJ107XG59O1xuZXhwb3J0IHR5cGUgRm9ybUZpZWxkID0ge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgdHlwZTogQWNjZXB0YWJsZUZvcm1GaWVsZFR5cGU7XG4gICAgcmVxdWlyZWQ6IGJvb2xlYW47XG4gICAgZm9ybWF0PzogJ2VtYWlsJztcbiAgICB2YWx1ZT86IHN0cmluZztcbn07XG50eXBlIEZvcm1NZXNzYWdlTWV0YWRhdGEgPSB7XG4gICAgdHlwZTogTWVzc2FnZVR5cGUuRm9ybTtcbiAgICBtZXRhZGF0YToge1xuICAgICAgICBmb3JtVHlwZT86IEZvcm1UeXBlO1xuICAgICAgICBmaWVsZHM6IEZvcm1GaWVsZFtdO1xuICAgIH07XG59O1xudHlwZSBPcmRlck1lc3NhZ2VNZXRhZGF0YSA9IHtcbiAgICB0eXBlOiBNZXNzYWdlVHlwZS5PcmRlcjtcbiAgICBtZXRhZGF0YTogT3JkZXJSZXNwb25zZUF0dHJpYnV0ZXNbJ2F0dHJpYnV0ZXMnXTtcbn07XG5leHBvcnQge307XG4iLCJleHBvcnQgaW50ZXJmYWNlIE1vYmlsZVBMUENoYXRQbGFjZW1lbnRQYXJhbWV0ZXIge1xuICAgIHJvd0luZGV4OiBudW1iZXI7XG59XG4iLCJleHBvcnQgZGVjbGFyZSBjb25zdCBPcmdTaG9ydE5hbWU6IHtcbiAgICByZWFkb25seSBDb3RlcmllOiBcImNvdGVyaWVcIjtcbiAgICByZWFkb25seSBGb3JMb3ZlQW5kTGVtb25zOiBcImZvci1sb3ZlLWFuZC1sZW1vbnNcIjtcbiAgICByZWFkb25seSBHcmVlbnBhbjogXCJncmVlbnBhblwiO1xuICAgIHJlYWRvbmx5IEpvcmRhbkNyYWlnOiBcImpvcmRhbi1jcmFpZ1wiO1xuICAgIHJlYWRvbmx5IExhcnJ5QW5kU2VyZ2VzOiBcImxhcnJ5X2FuZF9zZXJnZXNcIjtcbiAgICByZWFkb25seSBMZWFwc0FuZFJlYm91bmRzOiBcImxlYXBzLWFuZC1yZWJvdW5kc1wiO1xuICAgIHJlYWRvbmx5IE1hbnRyYUJyYW5kOiBcIm1hbnRyYS1icmFuZFwiO1xuICAgIHJlYWRvbmx5IFNwYW54OiBcInNwYW54XCI7XG4gICAgcmVhZG9ubHkgU3BhbnhTdGFnaW5nOiBcInN0YWdpbmctc3BhbnhcIjtcbiAgICByZWFkb25seSBTdXBlcmdvb3A6IFwic3VwZXJnb29wXCI7XG4gICAgcmVhZG9ubHkgVW5pcXVlVmludGFnZTogXCJ1bmlxdWUtdmludGFnZVwiO1xuICAgIHJlYWRvbmx5IEphY2tBcmNoZXI6IFwiamFjay1hcmNoZXJcIjtcbiAgICByZWFkb25seSBTa2luUGVyZmVjdGlvbjogXCJza2luLXBlcmZlY3Rpb25cIjtcbiAgICByZWFkb25seSBMb29rT3B0aWM6IFwibG9vay1vcHRpY1wiO1xuICAgIHJlYWRvbmx5IEZpdmVDYmQ6IFwiZml2ZS1jYmRcIjtcbiAgICByZWFkb25seSBTbmFwU3VwcGxlbWVudHM6IFwic25hcC1zdXBwbGVtZW50c1wiO1xuICAgIHJlYWRvbmx5IExvbmdldml0eXJ4OiBcImxvbmdldml0eXJ4XCI7XG4gICAgcmVhZG9ubHkgVmVuYUNiZDogXCJ2ZW5hLWNiZFwiO1xuICAgIHJlYWRvbmx5IE1lZHRlcnJhOiBcIm1lZHRlcnJhXCI7XG4gICAgcmVhZG9ubHkgTW9kZWxsczogXCJtb2RlbGxzXCI7XG4gICAgcmVhZG9ubHkgUHJlc3NlZEZsb3JhbDogXCJwcmVzc2VkLWZsb3JhbFwiO1xuICAgIHJlYWRvbmx5IEtpbmRyZWRCcmF2ZWx5OiBcImtpbmRyZWQtYnJhdmVseVwiO1xuICAgIHJlYWRvbmx5IFdpbmVFbnRodXNpYXN0OiBcIndpbmUtZW50aHVzaWFzdFwiO1xuICAgIHJlYWRvbmx5IEhvbWVncm93bkNhbm5hYmlzOiBcImhvbWVncm93bi1jYW5uYWJpc1wiO1xuICAgIHJlYWRvbmx5IERyZWFtbGFuZEJhYnk6IFwiZHJlYW1sYW5kLWJhYnlcIjtcbiAgICByZWFkb25seSBCYW5kb2xpZXI6IFwiYmFuZG9saWVyXCI7XG4gICAgcmVhZG9ubHkgV2VzdG9uSm9uQm91Y2hlcjogXCJ3ZXN0b24tam9uLWJvdWNoZXJcIjtcbiAgICByZWFkb25seSBLdXRGcm9tVGhlS2xvdGg6IFwia3V0LWZyb20tdGhlLWtsb3RoXCI7XG4gICAgcmVhZG9ubHkgR3Jvb3ZlTGlmZTogXCJncm9vdmUtbGlmZVwiO1xuICAgIHJlYWRvbmx5IENhcnBlOiBcImNhcnBlXCI7XG4gICAgcmVhZG9ubHkgV29sZlRhY3RpY2FsOiBcIndvbGYtdGFjdGljYWxcIjtcbiAgICByZWFkb25seSBXb2xmTWF0dHJlc3M6IFwid29sZm1hdHRyZXNzXCI7XG4gICAgcmVhZG9ubHkgRGVmYXVsdDogXCJkZWZhdWx0XCI7XG59O1xuIiwiZXhwb3J0IGRlY2xhcmUgZW51bSBQcm9kdWN0RXhwZXJpbWVudCB7XG4gICAgRGVmYXVsdCA9IFwiZGVmYXVsdFwiXG59XG4iLCJleHBvcnQgaW50ZXJmYWNlIFNwYW54VGFrZUFRdWl6Q3RhUGFyYW1ldGVyIHtcbiAgICB0ZXh0Pzogc3RyaW5nO1xuICAgIHZhbHVlPzogc3RyaW5nO1xufVxuIiwiLyoqXG4gKiBFbnVtIG9mIGFsbCB3aWRnZXQgbmFtZXMuIFRoZXNlIGFyZSB3aWRnZXRzIHRoYXQgYXJlIHJlbmRlcmVkIGFuZCBpbnRlZ3JhdGVkIGludG9cbiAqIGEgbWVyY2hhbnQncyB3ZWJzaXRlLlxuICovXG5leHBvcnQgZGVjbGFyZSBlbnVtIFNwaWZmeVdpZGdldHMge1xuICAgIEltYWdlQmFubmVyID0gXCJpbWFnZV9iYW5uZXJcIixcbiAgICBJbWFnZVByb21wdENhcmQgPSBcImltYWdlX3Byb21wdF9jYXJkXCIsXG4gICAgU2luZ2xlSW1hZ2VQcm9tcHQgPSBcInNpbmdsZV9pbWFnZV9wcm9tcHRcIixcbiAgICBFbWJlZGRlZFdpZGdldCA9IFwiZW1iZWRkZWRfd2lkZ2V0XCIsXG4gICAgRmxvYXRpbmdCdXR0b24gPSBcImZsb2F0aW5nX2J1dHRvblwiLFxuICAgIFN1Z2dlc3Rpb25CYXIgPSBcInN1Z2dlc3Rpb25fYmFyXCIsXG4gICAgU2VhcmNoUHJvbXB0ID0gXCJzZWFyY2hfcHJvbXB0XCIsXG4gICAgR2xvYmFsU2VhcmNoID0gXCJnbG9iYWxfc2VhcmNoXCIsXG4gICAgU2VhcmNoUmVzdWx0cyA9IFwic2VhcmNoX3Jlc3VsdHNcIixcbiAgICBHbG9iYWxTZWFyY2hFbnRyeVBvaW50ID0gXCJnbG9iYWxfc2VhcmNoX2VudHJ5X3BvaW50XCJcbn1cbiIsImltcG9ydCB7IENvbG9yTWFwcGluZywgT3JnUGFnZUNvbmZpZywgT3JnVUlDb25maWcgfSBmcm9tIFwic3JjL2NvbnRleHRzL3R5cGVzXCI7XG5leHBvcnQgeyBPcmdTaG9ydE5hbWUgfSBmcm9tIFwiLi9vcmdzRW51bVwiO1xuZXhwb3J0IHR5cGUgQmFzaWNPcmdJbmZvVHlwZSA9IHtcbiAgICBzaG9ydE5hbWU6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZG9tYWluOiBzdHJpbmc7XG4gICAgZGVmYXVsdFByb2R1Y3RJZDogc3RyaW5nO1xuICAgIGFsd2F5c0VuYWJsZWRNZXJjaGFudHM6IGJvb2xlYW47XG4gICAgb3JnVUlDb25maWc6ICgpID0+IE9yZ1VJQ29uZmlnIHwgdW5kZWZpbmVkO1xuICAgIG9yZ1BhZ2VDb25maWc6ICgpID0+IE9yZ1BhZ2VDb25maWc7XG4gICAgb3JnQ29sb3JzOiAoKSA9PiBDb2xvck1hcHBpbmcgfCB7fTtcbn07XG5leHBvcnQgZGVjbGFyZSBjb25zdCBnZXRPcmdJbmZvOiAob3JnU2hvcnROYW1lOiBzdHJpbmcpID0+IFByb21pc2U8QmFzaWNPcmdJbmZvVHlwZT47XG4iLCJpbXBvcnQgeyBDb250ZXh0IGFzIEFwaUNvbnRleHQgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuaW1wb3J0IHsgQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy91dGlsaXR5VHlwZXMnO1xuZXhwb3J0IGludGVyZmFjZSBDb250ZXh0IGV4dGVuZHMgQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwPEFwaUNvbnRleHQ+IHtcbn1cbiIsImltcG9ydCB7IEdlbmVyYXRpb25QYXJhbXMgYXMgQXBpR2VuZXJhdGlvblBhcmFtcyB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5pbXBvcnQgeyBDYW1lbENhc2VkUHJvcGVydGllc0RlZXAgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL3V0aWxpdHlUeXBlcyc7XG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyYXRpb25QYXJhbXMgZXh0ZW5kcyBDYW1lbENhc2VkUHJvcGVydGllc0RlZXA8QXBpR2VuZXJhdGlvblBhcmFtcz4ge1xufVxuIiwiaW1wb3J0IHsgUERQQXR0cmlidXRlcyBhcyBBcGlQRFBBdHRyaWJ1dGVzLCBQTFBBdHRyaWJ1dGVzIGFzIEFwaVBMUEF0dHJpYnV0ZXMsIFF1ZXJ5VHlwZWRBdHRyaWJ1dGVzIGFzIEFwaVF1ZXJ5VHlwZWRBdHRyaWJ1dGVzLCBTZWFyY2hBdHRyaWJ1dGVzIGFzIEFwaVNlYXJjaEF0dHJpYnV0ZXMsIFN1Z2dlc3Rpb25DbGlja2VkQXR0cmlidXRlcyBhcyBBcGlTdWdnZXN0aW9uQ2xpY2tlZEF0dHJpYnV0ZXMsIFVzZXJFdmVudCBhcyBBcGlVc2VyRXZlbnQsIEZvcm1UeXBlLCBQYWdlVmlzaXRDYXRlZ29yeSwgVXNlckV2ZW50Q2F0ZWdvcnkgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuaW1wb3J0IHsgQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy91dGlsaXR5VHlwZXMnO1xuZXhwb3J0IGludGVyZmFjZSBQRFBBdHRyaWJ1dGVzIGV4dGVuZHMgQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwPEFwaVBEUEF0dHJpYnV0ZXM+IHtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUExQQXR0cmlidXRlcyBleHRlbmRzIENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxBcGlQTFBBdHRyaWJ1dGVzPiB7XG59XG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaEF0dHJpYnV0ZXMgZXh0ZW5kcyBDYW1lbENhc2VkUHJvcGVydGllc0RlZXA8QXBpU2VhcmNoQXR0cmlidXRlcz4ge1xufVxuZXhwb3J0IGludGVyZmFjZSBRdWVyeVR5cGVkQXR0cmlidXRlcyBleHRlbmRzIENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxBcGlRdWVyeVR5cGVkQXR0cmlidXRlcz4ge1xufVxuZXhwb3J0IGludGVyZmFjZSBGb3JtU3VibWl0dGVkQXR0cmlidXRlcyB7XG4gICAgZmlsbGVkU2NoZW1hOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBmb3JtUmVzcG9uc2VJZDogc3RyaW5nO1xuICAgIGZvcm1UeXBlOiBGb3JtVHlwZTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUGFnZVZpc2l0QXR0cmlidXRlcyB7XG4gICAgdXJsOiBzdHJpbmc7XG4gICAgcGFnZVZpc2l0Q2F0ZWdvcnk6IFBhZ2VWaXNpdENhdGVnb3J5O1xufVxuZXhwb3J0IGludGVyZmFjZSBTdWdnZXN0aW9uQ2xpY2tlZEF0dHJpYnV0ZXMgZXh0ZW5kcyBDYW1lbENhc2VkUHJvcGVydGllc0RlZXA8QXBpU3VnZ2VzdGlvbkNsaWNrZWRBdHRyaWJ1dGVzPiB7XG59XG5leHBvcnQgdHlwZSBVc2VyRXZlbnRBdHRyaWJ1dGVzID0gUERQQXR0cmlidXRlcyB8IFBMUEF0dHJpYnV0ZXMgfCBRdWVyeVR5cGVkQXR0cmlidXRlcyB8IFNlYXJjaEF0dHJpYnV0ZXMgfCBTdWdnZXN0aW9uQ2xpY2tlZEF0dHJpYnV0ZXMgfCBQYWdlVmlzaXRBdHRyaWJ1dGVzO1xuZXhwb3J0IGludGVyZmFjZSBQRFBVc2VyRXZlbnQge1xuICAgIGNhdGVnb3J5OiBVc2VyRXZlbnRDYXRlZ29yeS5QZHBWaXNpdCB8IFVzZXJFdmVudENhdGVnb3J5LkFkZFRvQ2FydDtcbiAgICBhdHRyaWJ1dGVzOiBQRFBBdHRyaWJ1dGVzO1xufVxuZXhwb3J0IGludGVyZmFjZSBQTFBVc2VyRXZlbnQge1xuICAgIGNhdGVnb3J5OiBVc2VyRXZlbnRDYXRlZ29yeS5QbHBWaXNpdDtcbiAgICBhdHRyaWJ1dGVzOiBQTFBBdHRyaWJ1dGVzO1xufVxuZXhwb3J0IGludGVyZmFjZSBRdWVyeVR5cGVkVXNlckV2ZW50IHtcbiAgICBjYXRlZ29yeTogVXNlckV2ZW50Q2F0ZWdvcnkuUXVlcnlUeXBlZDtcbiAgICBhdHRyaWJ1dGVzOiBRdWVyeVR5cGVkQXR0cmlidXRlcztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoVXNlckV2ZW50IHtcbiAgICBjYXRlZ29yeTogVXNlckV2ZW50Q2F0ZWdvcnkuU2VhcmNoO1xuICAgIGF0dHJpYnV0ZXM6IFNlYXJjaEF0dHJpYnV0ZXM7XG59XG5leHBvcnQgaW50ZXJmYWNlIFN1Z2dlc3Rpb25zQ2xpY2tlZFVzZXJFdmVudCB7XG4gICAgY2F0ZWdvcnk6IFVzZXJFdmVudENhdGVnb3J5LlN1Z2dlc3Rpb25DbGlja2VkO1xuICAgIGF0dHJpYnV0ZXM6IFN1Z2dlc3Rpb25DbGlja2VkQXR0cmlidXRlcztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQXBwTG9hZGVkVXNlckV2ZW50IHtcbiAgICBjYXRlZ29yeTogVXNlckV2ZW50Q2F0ZWdvcnkuQXBwTG9hZGVkO1xufVxuZXhwb3J0IGludGVyZmFjZSBBcHBVbmxvYWRlZEV2ZW50IHtcbiAgICBjYXRlZ29yeTogVXNlckV2ZW50Q2F0ZWdvcnkuQXBwVW5sb2FkZWQ7XG59XG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VWaXNpdEV2ZW50IHtcbiAgICBjYXRlZ29yeTogVXNlckV2ZW50Q2F0ZWdvcnkuUGFnZVZpc2l0O1xuICAgIGF0dHJpYnV0ZXM6IFBhZ2VWaXNpdEF0dHJpYnV0ZXM7XG59XG5leHBvcnQgaW50ZXJmYWNlIEZvcm1TdWJtaXR0ZWQge1xuICAgIGNhdGVnb3J5OiBVc2VyRXZlbnRDYXRlZ29yeS5Gb3JtU3VibWl0dGVkO1xuICAgIGF0dHJpYnV0ZXM6IEZvcm1TdWJtaXR0ZWRBdHRyaWJ1dGVzO1xufVxuZXhwb3J0IHR5cGUgVXNlckV2ZW50ID0gQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwPFBpY2s8QXBpVXNlckV2ZW50LCAnZXZlbnRfaWQnIHwgJ2NhdGVnb3J5JyB8ICdjcmVhdGVkX2F0Jz4+ICYgKFN1Z2dlc3Rpb25zQ2xpY2tlZFVzZXJFdmVudCB8IEFwcExvYWRlZFVzZXJFdmVudCB8IFBEUFVzZXJFdmVudCB8IFF1ZXJ5VHlwZWRVc2VyRXZlbnQgfCBTZWFyY2hVc2VyRXZlbnQgfCBBcHBVbmxvYWRlZEV2ZW50IHwgUExQVXNlckV2ZW50IHwgUGFnZVZpc2l0RXZlbnQgfCBGb3JtU3VibWl0dGVkKTtcbiIsImltcG9ydCB7IENvbnRleHQgfSBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IHsgVXNlckV2ZW50IH0gZnJvbSAnLi91c2VyRXZlbnQnO1xuaW1wb3J0IHsgR2VuZXJhdGlvblBhcmFtcyB9IGZyb20gJy4vZ2VuZXJhdGlvblBhcmFtcyc7XG5leHBvcnQgaW50ZXJmYWNlIE5leHRNZXNzYWdlUmVxdWVzdCB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBjb250ZXh0OiBDb250ZXh0O1xuICAgIHVzZXJFdmVudHM/OiBVc2VyRXZlbnRbXTtcbiAgICBmZWF0dXJlRmxhZ3M/OiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjtcbiAgICBnZW5lcmF0aW9uUGFyYW1zPzogR2VuZXJhdGlvblBhcmFtcztcbn1cbiIsImltcG9ydCB7IFByb2R1Y3RTZWFyY2hSZXNwb25zZSBhcyBBcGlQcm9kdWN0U2VhcmNoUmVzcG9uc2UsIFByb2R1Y3RTZWFyY2hSZXNwb25zZUF0dHJpYnV0ZXMgYXMgQXBpUHJvZHVjdFNlYXJjaFJlc3BvbnNlQXR0cmlidXRlcywgU2VhcmNoUmVzcG9uc2VQcm9kdWN0IH0gZnJvbSAnQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50JztcbmltcG9ydCB7IENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcCB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvdXRpbGl0eVR5cGVzJztcbmV4cG9ydCBpbnRlcmZhY2UgUHJvZHVjdFNlYXJjaFJlc3BvbnNlIGV4dGVuZHMgQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwPEFwaVByb2R1Y3RTZWFyY2hSZXNwb25zZT4ge1xufVxuZXhwb3J0IGludGVyZmFjZSBQcm9kdWN0U2VhcmNoUmVzcG9uc2VBdHRyaWJ1dGVzIGV4dGVuZHMgQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwPEFwaVByb2R1Y3RTZWFyY2hSZXNwb25zZUF0dHJpYnV0ZXM+IHtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoUmVzdWx0IHtcbiAgICBwcm9kdWN0czogU2VhcmNoUmVzcG9uc2VQcm9kdWN0W107XG4gICAgZmlsdGVyczogc3RyaW5nW107XG4gICAgZ2VuZXJhdGVkUXVlcnk/OiBzdHJpbmc7XG4gICAgdG90YWxQcm9kdWN0Q291bnQ6IG51bWJlcjtcbiAgICBzZWFyY2hSZXNwb25zZUlkOiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaFBhcmFtcyB7XG4gICAgcXVlcnk6IHN0cmluZztcbiAgICBsaW1pdD86IG51bWJlcjtcbn1cbiIsImltcG9ydCB7IFN1Z2dlc3Rpb24gYXMgQXBpU3VnZ2VzdGlvbiB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5pbXBvcnQgeyBDYW1lbENhc2VkUHJvcGVydGllc0RlZXAgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL3V0aWxpdHlUeXBlcyc7XG5leHBvcnQgaW50ZXJmYWNlIFN1Z2dlc3Rpb24gZXh0ZW5kcyBDYW1lbENhc2VkUHJvcGVydGllc0RlZXA8QXBpU3VnZ2VzdGlvbj4ge1xufVxuIiwiaW1wb3J0IHsgVXNlckV2ZW50IH0gZnJvbSAnLi91c2VyRXZlbnQnO1xuaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gJy4vY29udGV4dCc7XG5leHBvcnQgaW50ZXJmYWNlIFN1cHBvcnRlZEV2ZW50UmVxdWVzdCB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBjb250ZXh0OiBDb250ZXh0O1xuICAgIHVzZXJFdmVudDogVXNlckV2ZW50O1xufVxuIiwiZGVjbGFyZSBjb25zdCBnZXRNZXJjaGFudE9yZ0lkUXVlcnkgPSBcIlxcbiAgcXVlcnkge1xcbiAgICBtZSB7XFxuICAgICAgb3JnIHtcXG4gICAgICAgIGlkXFxuICAgICAgfVxcbiAgICB9XFxuICB9XFxuXCI7XG5leHBvcnQgeyBnZXRNZXJjaGFudE9yZ0lkUXVlcnkgfTtcbiIsImltcG9ydCB0eXBlIHsgQmFzZUVjb21tZXJjZUV2ZW50IH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscyc7XG4vKipcbiAqIENoZWNrcyBpZiBhbiBldmVudCBpcyBhIGJhc2UgR29vZ2xlIEFuYWx5dGljcyBlY29tbWVyY2UgZXZlbnQuXG4gKlxuICogQHBhcmFtIGRhdGEgVGhlIGV2ZW50IHRvIGNoZWNrLlxuICpcbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGV2ZW50IGlzIGEgYmFzZSBlY29tbWVyY2UgZXZlbnQsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgaXNCYXNlRWNvbW1lcmNlRXZlbnQ6IChkYXRhOiB1bmtub3duKSA9PiBkYXRhIGlzIEJhc2VFY29tbWVyY2VFdmVudDtcbiIsImltcG9ydCB0eXBlIHsgR0E0RWNvbW1lcmNlRXZlbnQgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzJztcbi8qKlxuICogQ2hlY2tzIGlmIGFuIGV2ZW50IGlzIGEgR29vZ2xlIEFuYWx5dGljcyA0IGVjb21tZXJjZSBldmVudC5cbiAqXG4gKiBAcGFyYW0gZGF0YSBUaGUgZXZlbnQgdG8gY2hlY2suXG4gKlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgZXZlbnQgaXMgYSBHQTQgZWNvbW1lcmNlIGV2ZW50LCBmYWxzZSBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGlzR0E0RWNvbW1lcmNlRXZlbnQ6IChkYXRhOiB1bmtub3duKSA9PiBkYXRhIGlzIEdBNEVjb21tZXJjZUV2ZW50O1xuIiwiaW1wb3J0IHR5cGUgeyBVQUVjb21tZXJjZUV2ZW50IH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscyc7XG4vKipcbiAqIENoZWNrcyBpZiBhbiBldmVudCBpcyBhIGxlZ2FjeSBVbml2ZXJzYWwgQW5hbHl0aWNzIGVjb21tZXJjZSBldmVudC5cbiAqXG4gKiBAcGFyYW0gZGF0YSBUaGUgZXZlbnQgdG8gY2hlY2suXG4gKlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgZXZlbnQgaXMgYSBsZWdhY3kgVUEgZWNvbW1lcmNlIGV2ZW50LCBmYWxzZSBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGlzTGVnYWN5VUFFY29tbWVyY2VFdmVudDogKGRhdGE6IHVua25vd24pID0+IGRhdGEgaXMgVUFFY29tbWVyY2VFdmVudDtcbiIsImludGVyZmFjZSBNb2JpbGVQbHBDaGF0UGxhY2VtZW50UGFyYW1ldGVyIHtcbiAgICByb3dfaW5kZXg6IG51bWJlcjtcbn1cbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGlzTW9iaWxlUExQQ2hhdFBsYWNlbWVudFBhcmFtZXRlcjogKHZhbHVlOiB1bmtub3duKSA9PiB2YWx1ZSBpcyBNb2JpbGVQbHBDaGF0UGxhY2VtZW50UGFyYW1ldGVyO1xuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IHsgU3BhbnhUYWtlQVF1aXpDdGFQYXJhbWV0ZXIgfSBmcm9tICcuLi9zcGFueFRha2VBUXVpekN0YVBhcmFtZXRlcic7XG5leHBvcnQgZGVjbGFyZSBjb25zdCBpc1NwYW54VGFrZUFRdWl6Q3RhUGFyYW1ldGVyOiAodmFsdWU6IHVua25vd24pID0+IHZhbHVlIGlzIFNwYW54VGFrZUFRdWl6Q3RhUGFyYW1ldGVyO1xuIiwiaW1wb3J0IHsgVmFyaWFudEluZm8gfSBmcm9tICcuLi92YXJpYW50SW5mbyc7XG4vKipcbiAqIFR5cGUgZ3VhcmQgdG8gY2hlY2sgaWYgYW4gb2JqZWN0IGlzIGEgdmFsaWQgVmFyaWFudEluZm8uXG4gKlxuICogQHBhcmFtIHZhcmlhbnRJbmZvIC0gVGhlIHVua25vd24gb2JqZWN0IHRvIGNoZWNrLlxuICpcbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGRhdGEgaXMgYSB2YWxpZCBWYXJpYW50SW5mbyBvYmplY3QsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgaXNWYXJpYW50SW5mbzogKHZhcmlhbnRJbmZvOiB1bmtub3duKSA9PiB2YXJpYW50SW5mbyBpcyBWYXJpYW50SW5mbztcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGFuIG9iamVjdCBoYXMgYSBwcm9wZXJ0eSBvZiBhIHNwZWNpZmljIHR5cGVcbiAqXG4gKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCB0byBjaGVja1xuICogQHBhcmFtIHByb3AgLSBUaGUgcHJvcGVydHkgbmFtZSB0byBjaGVja1xuICogQHBhcmFtIHR5cGUgLSBUaGUgZXhwZWN0ZWQgdHlwZSBvZiB0aGUgcHJvcGVydHlcbiAqIEBwYXJhbSBpc09wdGlvbmFsIC0gV2hldGhlciB0aGUgcHJvcGVydHkgaXMgb3B0aW9uYWwgKGRlZmF1bHRzIHRvIGZhbHNlKVxuICpcbiAqIEByZXR1cm5zIGJvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGUgb2JqZWN0IGhhcyB0aGUgcHJvcGVydHkgb2YgdGhlIHNwZWNpZmllZCB0eXBlXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGhhc1Byb3BlcnR5T2ZUeXBlOiA8VCBleHRlbmRzIG9iamVjdD4ob2JqOiB1bmtub3duLCBwcm9wOiBrZXlvZiBULCB0eXBlOiBcInN0cmluZ1wiIHwgXCJudW1iZXJcIiB8IFwiYm9vbGVhblwiIHwgXCJvYmplY3RcIiB8IFwiYXJyYXlcIiwgaXNPcHRpb25hbD86IGJvb2xlYW4pID0+IG9iaiBpcyBUO1xuIiwiaW1wb3J0IHsgQXBpRm9ybVJlc3BvbnNlQXR0cmlidXRlcyB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvYXBpL3Jlc3BvbnNlR2VuZXJpY3MnO1xuLyoqXG4gKiBUeXBlIGd1YXJkIHRvIGNoZWNrIGlmIHRoZSBwcm92aWRlZCBkYXRhIGhhcyB0aGUgYWxsIG9mIHRoZSBwcm9wZXJ0aWVzICh3aXRoIHRoZSBjb3JyZWN0IHR5cGVzKSBvZlxuICogYSBGb3JtUmVzcG9uc2VBdHRyaWJ1dGVcbiAqXG4gKiBAcGFyYW0gZGF0YSAtIFRoZSBkYXRhIHRvIGNoZWNrXG4gKlxuICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgZGF0YSBoYXMgdGhlIGNvcnJlY3QgcHJvcGVydGllcywgZmFsc2Ugb3RoZXJ3aXNlXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGlzQXBpRm9ybVJlc3BvbnNlQXR0cmlidXRlczogKGRhdGE6IHVua25vd24pID0+IGRhdGEgaXMgQXBpRm9ybVJlc3BvbnNlQXR0cmlidXRlcztcbiIsImltcG9ydCB7IEZvcm1TdWJtaXR0ZWRBdHRyaWJ1dGVzIH0gZnJvbSAnQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50JztcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGlzQXBpRm9ybVN1Ym1pdHRlZFJlc3BvbnNlQXR0cmlidXRlczogKGRhdGE6IHVua25vd24pID0+IGRhdGEgaXMgRm9ybVN1Ym1pdHRlZEF0dHJpYnV0ZXM7XG4iLCJpbXBvcnQgeyBPcmRlckl0ZW1JbmZvLCBPcmRlclJlc3BvbnNlQXR0cmlidXRlcyB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5leHBvcnQgaW50ZXJmYWNlIEFwaU9yZGVySXRlbUluZm8gZXh0ZW5kcyBPbWl0PE9yZGVySXRlbUluZm8sICdkZWxpdmVyZWRfYXQnIHwgJ2VzdGltYXRlZF9kZWxpdmVyeV9hdCcgfCAnaW5fdHJhbnNpdF9hdCc+IHtcbiAgICBkZWxpdmVyZWRfYXQ/OiBzdHJpbmc7XG4gICAgZXN0aW1hdGVkX2RlbGl2ZXJ5X2F0Pzogc3RyaW5nO1xuICAgIGluX3RyYW5zaXRfYXQ/OiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIEFwaU9yZGVyUmVzcG9uc2VBdHRyaWJ1dGVzIGV4dGVuZHMgT21pdDxPcmRlclJlc3BvbnNlQXR0cmlidXRlcywgJ2NyZWF0ZWRfYXQnIHwgJ2xhdGVzdF9ldmVudF9kYXRlJyB8ICdsaW5lX2l0ZW1zJz4ge1xuICAgIGNyZWF0ZWRfYXQ6IHN0cmluZztcbiAgICBsYXRlc3RfZXZlbnRfZGF0ZTogc3RyaW5nO1xuICAgIGxpbmVfaXRlbXM6IEFwaU9yZGVySXRlbUluZm9bXTtcbn1cbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGlzQXBpT3JkZXJSZXNwb25zZUF0dHJpYnV0ZXM6IChkYXRhOiB1bmtub3duKSA9PiBkYXRhIGlzIEFwaU9yZGVyUmVzcG9uc2VBdHRyaWJ1dGVzO1xuIiwiaW1wb3J0IHsgT3JnYW5pemF0aW9uQ29uZmlnIH0gZnJvbSAnQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50JztcbmludGVyZmFjZSBBcGlPcmdBbmFseXRpY3NDb25maWdBbXBsaXR1ZGUge1xuICAgIHNlc3Npb25fcmVwbGF5X2VuYWJsZWQ6IGJvb2xlYW47XG4gICAgc2Vzc2lvbl9yZXBsYXlfc2FtcGxlX3JhdGU6IG51bWJlcjtcbiAgICB0cmFja2luZ19lbmFibGVkOiBib29sZWFuO1xufVxuaW50ZXJmYWNlIEFwaU9yZ0FuYWx5dGljc0NvbmZpZ0N1c3RvbWVyU2VydmljZSB7XG4gICAgcHJvdmlkZXI6IHN0cmluZztcbn1cbmludGVyZmFjZSBBcGlPcmdBbmFseXRpY3NDb25maWdHb29nbGVBbmFseXRpY3Mge1xuICAgIG1lYXN1cmVtZW50X2lkOiBzdHJpbmc7XG59XG5pbnRlcmZhY2UgQXBpT3JnQW5hbHl0aWNzQ29uZmlnIHtcbiAgICBhbXBsaXR1ZGU/OiBBcGlPcmdBbmFseXRpY3NDb25maWdBbXBsaXR1ZGU7XG4gICAgY3VzdG9tZXJfc2VydmljZT86IEFwaU9yZ0FuYWx5dGljc0NvbmZpZ0N1c3RvbWVyU2VydmljZTtcbiAgICBnb29nbGVfYW5hbHl0aWNzPzogQXBpT3JnQW5hbHl0aWNzQ29uZmlnR29vZ2xlQW5hbHl0aWNzO1xufVxuZXhwb3J0IGludGVyZmFjZSBBcGlPcmdhbml6YXRpb25Db25maWcgZXh0ZW5kcyBPcmdhbml6YXRpb25Db25maWcge1xuICAgIGNvbmZpZzogQXBpT3JnQW5hbHl0aWNzQ29uZmlnO1xufVxuLyoqXG4gKlxuICogQHBhcmFtIGRhdGFcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGlzQXBpT3JnYW5pemF0aW9uQ29uZmlnOiAoZGF0YTogdW5rbm93bikgPT4gZGF0YSBpcyBBcGlPcmdhbml6YXRpb25Db25maWc7XG5leHBvcnQge307XG4iLCJpbXBvcnQgeyBTdGF0c2lnRXhwZXJpbWVudCBhcyBBcGlPcmdDb25maWdFeHBlcmltZW50LCBTdGF0c2lnRmVhdHVyZUdhdGUgYXMgQXBpT3JnQ29uZmlnRmVhdHVyZUdhdGUsIE9yZ2FuaXphdGlvblNldHRpbmdzIGFzIEFwaU9yZ0NvbmZpZ09yZ2FuaXphdGlvblNldHRpbmdzIH0gZnJvbSAnQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50JztcbmltcG9ydCB7IEFwaU9yZ2FuaXphdGlvbkNvbmZpZyB9IGZyb20gJy4vaXNBcGlPcmdhbml6YXRpb25Db25maWcnO1xuaW50ZXJmYWNlIEFwaU9yZ0NvbmZpZ1Jlc3VsdHMge1xuICAgIGNvbmZpZ3M6IEFwaU9yZ2FuaXphdGlvbkNvbmZpZ1tdO1xuICAgIGV4cGVyaW1lbnRzOiBBcGlPcmdDb25maWdFeHBlcmltZW50W107XG4gICAgZ2F0ZXM6IEFwaU9yZ0NvbmZpZ0ZlYXR1cmVHYXRlW107XG4gICAgb3JnOiBBcGlPcmdDb25maWdPcmdhbml6YXRpb25TZXR0aW5ncztcbn1cbi8qKlxuICpcbiAqIEBwYXJhbSBkYXRhXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZGVjbGFyZSBjb25zdCBpc0FwaU9yZ0NvbmZpZ1Jlc3VsdHM6IChkYXRhOiB1bmtub3duKSA9PiBkYXRhIGlzIFJlcXVpcmVkPEFwaU9yZ0NvbmZpZ1Jlc3VsdHM+O1xuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IHsgQXBpUGFnZVJlc3BvbnNlQXR0cmlidXRlcyB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvYXBpL3Jlc3BvbnNlR2VuZXJpY3MnO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgaXNBcGlQYWdlUmVzcG9uc2VBdHRyaWJ1dGVzOiAob2JqOiB1bmtub3duKSA9PiBvYmogaXMgQXBpUGFnZVJlc3BvbnNlQXR0cmlidXRlcztcbiIsImltcG9ydCB7IFBMUEF0dHJpYnV0ZXMsIFBMUElkQXR0cmlidXRlcyB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5leHBvcnQgZGVjbGFyZSBjb25zdCBpc0FwaVBMUElkQXR0cmlidXRlOiAoZGF0YTogdW5rbm93bikgPT4gZGF0YSBpcyBQTFBJZEF0dHJpYnV0ZXM7XG5leHBvcnQgZGVjbGFyZSBjb25zdCBpc0FwaVBMUEV2ZW50QXR0cmlidXRlczogKGRhdGE6IHVua25vd24pID0+IGRhdGEgaXMgUExQQXR0cmlidXRlcztcbiIsImltcG9ydCB7IFByb2R1Y3RTZWFyY2hGaWx0ZXJSZXNwb25zZUF0dHJpYnV0ZXMgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgaXNBcGlQcm9kdWN0U2VhcmNoRmlsdGVyUmVzcG9uc2VBdHRyaWJ1dGVzOiAoYXR0cmlidXRlczogdW5rbm93bikgPT4gYXR0cmlidXRlcyBpcyBQcm9kdWN0U2VhcmNoRmlsdGVyUmVzcG9uc2VBdHRyaWJ1dGVzO1xuIiwiaW1wb3J0IHsgR2V0TWVyY2hhbnRDb2xvcnNRdWVyeURhdGEgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2dyYXBocWwnO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgaXNHcmFwaFFMQ29sb3JzQ29uZmlnOiAoZGF0YTogdW5rbm93bikgPT4gZGF0YSBpcyBHZXRNZXJjaGFudENvbG9yc1F1ZXJ5RGF0YTtcbiIsImltcG9ydCB0eXBlIHsgVXBwZXJDYXNlQ2hhcmFjdGVycywgV29yZFNlcGFyYXRvcnMgfSBmcm9tICcuL2ludGVybmFsJztcbnR5cGUgVXBwZXJDYXNlVG9Mb3dlckNhc2U8VCBleHRlbmRzIHN0cmluZz4gPSBUIGV4dGVuZHMgVXBwZXJjYXNlPFQ+ID8gTG93ZXJjYXNlPFQ+IDogVDtcbnR5cGUgU3BsaXRJbmNsdWRpbmdEZWxpbWl0ZXJzXzxTb3VyY2UgZXh0ZW5kcyBzdHJpbmcsIERlbGltaXRlciBleHRlbmRzIHN0cmluZz4gPSBTb3VyY2UgZXh0ZW5kcyAnJyA/IFtdIDogU291cmNlIGV4dGVuZHMgYCR7aW5mZXIgRmlyc3RQYXJ0fSR7RGVsaW1pdGVyfSR7aW5mZXIgU2Vjb25kUGFydH1gID8gU291cmNlIGV4dGVuZHMgYCR7Rmlyc3RQYXJ0fSR7aW5mZXIgVXNlZERlbGltaXRlcn0ke1NlY29uZFBhcnR9YCA/IFVzZWREZWxpbWl0ZXIgZXh0ZW5kcyBEZWxpbWl0ZXIgPyBTb3VyY2UgZXh0ZW5kcyBgJHtpbmZlciBGaXJzdFBhcnR9JHtVc2VkRGVsaW1pdGVyfSR7aW5mZXIgU2Vjb25kUGFydH1gID8gW1xuICAgIC4uLlNwbGl0SW5jbHVkaW5nRGVsaW1pdGVyczxGaXJzdFBhcnQsIERlbGltaXRlcj4sXG4gICAgVXNlZERlbGltaXRlcixcbiAgICAuLi5TcGxpdEluY2x1ZGluZ0RlbGltaXRlcnM8U2Vjb25kUGFydCwgRGVsaW1pdGVyPlxuXSA6IG5ldmVyIDogbmV2ZXIgOiBuZXZlciA6IFtTb3VyY2VdO1xuLyoqXG4gKiBVbmxpa2UgYSBzaW1wbGVyIHNwbGl0LCB0aGlzIG9uZSBpbmNsdWRlcyB0aGUgZGVsaW1pdGVyIHNwbGl0dGVkIG9uIGluIHRoZSByZXN1bHRpbmcgYXJyYXkgbGl0ZXJhbC4gVGhpcyBpcyB0byBlbmFibGUgc3BsaXR0aW5nIG9uLCBmb3IgZXhhbXBsZSwgdXBwZXItY2FzZSBjaGFyYWN0ZXJzLlxuICpcbiAqIEBjYXRlZ29yeSBUZW1wbGF0ZSBsaXRlcmFsXG4gKi9cbmV4cG9ydCB0eXBlIFNwbGl0SW5jbHVkaW5nRGVsaW1pdGVyczxTb3VyY2UgZXh0ZW5kcyBzdHJpbmcsIERlbGltaXRlciBleHRlbmRzIHN0cmluZz4gPSBTcGxpdEluY2x1ZGluZ0RlbGltaXRlcnNfPFVwcGVyQ2FzZVRvTG93ZXJDYXNlPFNvdXJjZT4sIERlbGltaXRlcj47XG4vKipcbiAqRm9ybWF0IGEgc3BlY2lmaWMgcGFydCBvZiB0aGUgc3BsaXR0ZWQgc3RyaW5nIGxpdGVyYWwgdGhhdCBgU3RyaW5nQXJyYXlUb0RlbGltaXRlckNhc2U8PmAgZnVzZXMgdG9nZXRoZXIsIGVuc3VyaW5nIGRlc2lyZWQgY2FzaW5nLlxuICpcbiAqQHNlZSBTdHJpbmdBcnJheVRvRGVsaW1pdGVyQ2FzZVxuICovXG50eXBlIFN0cmluZ1BhcnRUb0RlbGltaXRlckNhc2U8U3RyaW5nUGFydCBleHRlbmRzIHN0cmluZywgU3RhcnQgZXh0ZW5kcyBib29sZWFuLCBVc2VkV29yZFNlcGFyYXRvcnMgZXh0ZW5kcyBzdHJpbmcsIFVzZWRVcHBlckNhc2VDaGFyYWN0ZXJzIGV4dGVuZHMgc3RyaW5nLCBEZWxpbWl0ZXIgZXh0ZW5kcyBzdHJpbmc+ID0gU3RyaW5nUGFydCBleHRlbmRzIFVzZWRXb3JkU2VwYXJhdG9ycyA/IERlbGltaXRlciA6IFN0YXJ0IGV4dGVuZHMgdHJ1ZSA/IExvd2VyY2FzZTxTdHJpbmdQYXJ0PiA6IFN0cmluZ1BhcnQgZXh0ZW5kcyBVc2VkVXBwZXJDYXNlQ2hhcmFjdGVycyA/IGAke0RlbGltaXRlcn0ke0xvd2VyY2FzZTxTdHJpbmdQYXJ0Pn1gIDogU3RyaW5nUGFydDtcbi8qKlxuICogVGFrZXMgdGhlIHJlc3VsdCBvZiBhIHNwbGl0dGVkIHN0cmluZyBsaXRlcmFsIGFuZCByZWN1cnNpdmVseSBjb25jYXRlbmF0ZXMgaXQgdG9nZXRoZXIgaW50byB0aGUgZGVzaXJlZCBjYXNpbmcuXG4gKlxuICogSXQgcmVjZWl2ZXMgYFVzZWRXb3JkU2VwYXJhdG9yc2AgYW5kIGBVc2VkVXBwZXJDYXNlQ2hhcmFjdGVyc2AgYXMgaW5wdXQgdG8gZW5zdXJlIGl0J3MgZnVsbHkgZW5jYXBzdWxhdGVkLlxuICpcbiAqIEBzZWUgU3BsaXRJbmNsdWRpbmdEZWxpbWl0ZXJzXG4gKi9cbnR5cGUgU3RyaW5nQXJyYXlUb0RlbGltaXRlckNhc2U8UGFydHMgZXh0ZW5kcyByZWFkb25seSBhbnlbXSwgU3RhcnQgZXh0ZW5kcyBib29sZWFuLCBVc2VkV29yZFNlcGFyYXRvcnMgZXh0ZW5kcyBzdHJpbmcsIFVzZWRVcHBlckNhc2VDaGFyYWN0ZXJzIGV4dGVuZHMgc3RyaW5nLCBEZWxpbWl0ZXIgZXh0ZW5kcyBzdHJpbmc+ID0gUGFydHMgZXh0ZW5kcyBbYCR7aW5mZXIgRmlyc3RQYXJ0fWAsIC4uLmluZmVyIFJlbWFpbmluZ1BhcnRzXSA/IGAke1N0cmluZ1BhcnRUb0RlbGltaXRlckNhc2U8Rmlyc3RQYXJ0LCBTdGFydCwgVXNlZFdvcmRTZXBhcmF0b3JzLCBVc2VkVXBwZXJDYXNlQ2hhcmFjdGVycywgRGVsaW1pdGVyPn0ke1N0cmluZ0FycmF5VG9EZWxpbWl0ZXJDYXNlPFJlbWFpbmluZ1BhcnRzLCBmYWxzZSwgVXNlZFdvcmRTZXBhcmF0b3JzLCBVc2VkVXBwZXJDYXNlQ2hhcmFjdGVycywgRGVsaW1pdGVyPn1gIDogUGFydHMgZXh0ZW5kcyBbc3RyaW5nXSA/IHN0cmluZyA6ICcnO1xuLyoqXG4gKiBDb252ZXJ0IGEgc3RyaW5nIGxpdGVyYWwgdG8gYSBjdXN0b20gc3RyaW5nIGRlbGltaXRlciBjYXNpbmcuXG4gKlxuICogVGhpcyBjYW4gYmUgdXNlZnVsIHdoZW4sIGZvciBleGFtcGxlLCBjb252ZXJ0aW5nIGEgY2FtZWwtY2FzZWQgb2JqZWN0IHByb3BlcnR5IHRvIGFuIG9kZGx5IGNhc2VkIG9uZS5cbiAqXG4gKiBAc2VlIEtlYmFiQ2FzZVxuICogQHNlZSBTbmFrZUNhc2VcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgXG4gKiBpbXBvcnQgdHlwZSB7RGVsaW1pdGVyQ2FzZX0gZnJvbSAndHlwZS1mZXN0JztcbiAqXG4gKiAvLyBTaW1wbGVcbiAqXG4gKiBjb25zdCBzb21lVmFyaWFibGU6IERlbGltaXRlckNhc2U8J2Zvb0JhcicsICcjJz4gPSAnZm9vI2Jhcic7XG4gKlxuICogLy8gQWR2YW5jZWRcbiAqXG4gKiB0eXBlIE9kZGx5Q2FzZWRQcm9wZXJ0aWVzPFQ+ID0ge1xuICogXHRbSyBpbiBrZXlvZiBUIGFzIERlbGltaXRlckNhc2U8SywgJyMnPl06IFRbS11cbiAqIH07XG4gKlxuICogaW50ZXJmYWNlIFNvbWVPcHRpb25zIHtcbiAqIFx0ZHJ5UnVuOiBib29sZWFuO1xuICogXHRpbmNsdWRlRmlsZTogc3RyaW5nO1xuICogXHRmb286IG51bWJlcjtcbiAqIH1cbiAqXG4gKiBjb25zdCByYXdDbGlPcHRpb25zOiBPZGRseUNhc2VkUHJvcGVydGllczxTb21lT3B0aW9ucz4gPSB7XG4gKiBcdCdkcnkjcnVuJzogdHJ1ZSxcbiAqIFx0J2luY2x1ZGUjZmlsZSc6ICdiYXIuanMnLFxuICogXHRmb286IDEyM1xuICogfTtcbiAqIGBgYFxuICpcbiAqIEBjYXRlZ29yeSBDaGFuZ2UgY2FzZVxuICogQGNhdGVnb3J5IFRlbXBsYXRlIGxpdGVyYWxcbiAqL1xuZXhwb3J0IHR5cGUgRGVsaW1pdGVyQ2FzZTxWYWx1ZSwgRGVsaW1pdGVyIGV4dGVuZHMgc3RyaW5nPiA9IHN0cmluZyBleHRlbmRzIFZhbHVlID8gVmFsdWUgOiBWYWx1ZSBleHRlbmRzIHN0cmluZyA/IFN0cmluZ0FycmF5VG9EZWxpbWl0ZXJDYXNlPFNwbGl0SW5jbHVkaW5nRGVsaW1pdGVyczxWYWx1ZSwgV29yZFNlcGFyYXRvcnMgfCBVcHBlckNhc2VDaGFyYWN0ZXJzPiwgdHJ1ZSwgV29yZFNlcGFyYXRvcnMsIFVwcGVyQ2FzZUNoYXJhY3RlcnMsIERlbGltaXRlcj4gOiBWYWx1ZTtcbmV4cG9ydCB7fTtcbiIsImltcG9ydCB0eXBlIHsgRGVsaW1pdGVyQ2FzZSB9IGZyb20gJy4vZGVsaW1pdGVyQ2FzZSc7XG5pbXBvcnQgdHlwZSB7IE5vblJlY3Vyc2l2ZVR5cGUgfSBmcm9tICcuL2ludGVybmFsJztcbmltcG9ydCB0eXBlIHsgVW5rbm93bkFycmF5IH0gZnJvbSAnLi91bmtub3duQXJyYXknO1xuLyoqXG4gKiBDb252ZXJ0IG9iamVjdCBwcm9wZXJ0aWVzIHRvIGRlbGltaXRlciBjYXNlIHJlY3Vyc2l2ZWx5LlxuICpcbiAqIFRoaXMgY2FuIGJlIHVzZWZ1bCB3aGVuLCBmb3IgZXhhbXBsZSwgY29udmVydGluZyBzb21lIEFQSSB0eXBlcyBmcm9tIGEgZGlmZmVyZW50IHN0eWxlLlxuICpcbiAqIEBzZWUgRGVsaW1pdGVyQ2FzZVxuICogQHNlZSBEZWxpbWl0ZXJDYXNlZFByb3BlcnRpZXNcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgXG4gKiBpbXBvcnQgdHlwZSB7RGVsaW1pdGVyQ2FzZWRQcm9wZXJ0aWVzRGVlcH0gZnJvbSAndHlwZS1mZXN0JztcbiAqXG4gKiBpbnRlcmZhY2UgVXNlciB7XG4gKiBcdHVzZXJJZDogbnVtYmVyO1xuICogXHR1c2VyTmFtZTogc3RyaW5nO1xuICogfVxuICpcbiAqIGludGVyZmFjZSBVc2VyV2l0aEZyaWVuZHMge1xuICogXHR1c2VySW5mbzogVXNlcjtcbiAqIFx0dXNlckZyaWVuZHM6IFVzZXJbXTtcbiAqIH1cbiAqXG4gKiBjb25zdCByZXN1bHQ6IERlbGltaXRlckNhc2VkUHJvcGVydGllc0RlZXA8VXNlcldpdGhGcmllbmRzLCAnLSc+ID0ge1xuICogXHQndXNlci1pbmZvJzoge1xuICogXHQndXNlci1pZCc6IDEsXG4gKiBcdFx0J3VzZXItbmFtZSc6ICdUb20nLFxuICogXHR9LFxuICogXHQndXNlci1mcmllbmRzJzogW1xuICogXHRcdHtcbiAqIFx0XHRcdCd1c2VyLWlkJzogMixcbiAqIFx0XHRcdCd1c2VyLW5hbWUnOiAnSmVycnknLFxuICogXHRcdH0sXG4gKiBcdFx0e1xuICogXHRcdFx0J3VzZXItaWQnOiAzLFxuICogXHRcdFx0J3VzZXItbmFtZSc6ICdTcGlrZScsXG4gKiBcdFx0fSxcbiAqIFx0XSxcbiAqIH07XG4gKiBgYGBcbiAqXG4gKiBAY2F0ZWdvcnkgQ2hhbmdlIGNhc2VcbiAqIEBjYXRlZ29yeSBUZW1wbGF0ZSBsaXRlcmFsXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKi9cbmV4cG9ydCB0eXBlIERlbGltaXRlckNhc2VkUHJvcGVydGllc0RlZXA8VmFsdWUsIERlbGltaXRlciBleHRlbmRzIHN0cmluZz4gPSBWYWx1ZSBleHRlbmRzIE5vblJlY3Vyc2l2ZVR5cGUgPyBWYWx1ZSA6IFZhbHVlIGV4dGVuZHMgVW5rbm93bkFycmF5ID8gRGVsaW1pdGVyQ2FzZWRQcm9wZXJ0aWVzQXJyYXlEZWVwPFZhbHVlLCBEZWxpbWl0ZXI+IDogVmFsdWUgZXh0ZW5kcyBTZXQ8aW5mZXIgVT4gPyBTZXQ8RGVsaW1pdGVyQ2FzZWRQcm9wZXJ0aWVzRGVlcDxVLCBEZWxpbWl0ZXI+PiA6IHtcbiAgICBbSyBpbiBrZXlvZiBWYWx1ZSBhcyBEZWxpbWl0ZXJDYXNlPEssIERlbGltaXRlcj5dOiBEZWxpbWl0ZXJDYXNlZFByb3BlcnRpZXNEZWVwPFZhbHVlW0tdLCBEZWxpbWl0ZXI+O1xufTtcbnR5cGUgRGVsaW1pdGVyQ2FzZWRQcm9wZXJ0aWVzQXJyYXlEZWVwPFZhbHVlIGV4dGVuZHMgVW5rbm93bkFycmF5LCBEZWxpbWl0ZXIgZXh0ZW5kcyBzdHJpbmc+ID0gVmFsdWUgZXh0ZW5kcyBbXSA/IFtdIDogVmFsdWUgZXh0ZW5kcyBbaW5mZXIgVSwgLi4uaW5mZXIgVl0gPyBbRGVsaW1pdGVyQ2FzZWRQcm9wZXJ0aWVzRGVlcDxVLCBEZWxpbWl0ZXI+LCAuLi5EZWxpbWl0ZXJDYXNlZFByb3BlcnRpZXNEZWVwPFYsIERlbGltaXRlcj5dIDogVmFsdWUgZXh0ZW5kcyByZWFkb25seSBbaW5mZXIgVSwgLi4uaW5mZXIgVl0gPyByZWFkb25seSBbXG4gICAgRGVsaW1pdGVyQ2FzZWRQcm9wZXJ0aWVzRGVlcDxVLCBEZWxpbWl0ZXI+LFxuICAgIC4uLkRlbGltaXRlckNhc2VkUHJvcGVydGllc0RlZXA8ViwgRGVsaW1pdGVyPlxuXSA6IFZhbHVlIGV4dGVuZHMgcmVhZG9ubHkgWy4uLmluZmVyIFUsIGluZmVyIFZdID8gW1xuICAgIC4uLkRlbGltaXRlckNhc2VkUHJvcGVydGllc0RlZXA8VSwgRGVsaW1pdGVyPixcbiAgICBEZWxpbWl0ZXJDYXNlZFByb3BlcnRpZXNEZWVwPFYsIERlbGltaXRlcj5cbl0gOiBWYWx1ZSBleHRlbmRzIHJlYWRvbmx5IFsuLi5pbmZlciBVLCBpbmZlciBWXSA/IHJlYWRvbmx5IFtcbiAgICAuLi5EZWxpbWl0ZXJDYXNlZFByb3BlcnRpZXNEZWVwPFUsIERlbGltaXRlcj4sXG4gICAgRGVsaW1pdGVyQ2FzZWRQcm9wZXJ0aWVzRGVlcDxWLCBEZWxpbWl0ZXI+XG5dIDogVmFsdWUgZXh0ZW5kcyBBcnJheTxpbmZlciBVPiA/IEFycmF5PERlbGltaXRlckNhc2VkUHJvcGVydGllc0RlZXA8VSwgRGVsaW1pdGVyPj4gOiBWYWx1ZSBleHRlbmRzIFJlYWRvbmx5QXJyYXk8aW5mZXIgVT4gPyBSZWFkb25seUFycmF5PERlbGltaXRlckNhc2VkUHJvcGVydGllc0RlZXA8VSwgRGVsaW1pdGVyPj4gOiBuZXZlcjtcbmV4cG9ydCB7fTtcbiIsImltcG9ydCB0eXBlIHsgRGVsaW1pdGVyQ2FzZWRQcm9wZXJ0aWVzRGVlcCB9IGZyb20gJy4vZGVsaW1pdGVyQ2FzZWRQcm9wZXJ0aWVzRGVlcCc7XG4vKipcbiAqIENvbnZlcnQgb2JqZWN0IHByb3BlcnRpZXMgdG8gc25ha2UgY2FzZSByZWN1cnNpdmVseS5cbiAqXG4gKiBUaGlzIGNhbiBiZSB1c2VmdWwgd2hlbiwgZm9yIGV4YW1wbGUsIGNvbnZlcnRpbmcgc29tZSBBUEkgdHlwZXMgZnJvbSBhIGRpZmZlcmVudCBzdHlsZS5cbiAqXG4gKiBAc2VlIFNuYWtlQ2FzZVxuICogQHNlZSBTbmFrZUNhc2VkUHJvcGVydGllc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBcbiAqIGltcG9ydCB0eXBlIHtTbmFrZUNhc2VkUHJvcGVydGllc0RlZXB9IGZyb20gJ3R5cGUtZmVzdCc7XG4gKlxuICogaW50ZXJmYWNlIFVzZXIge1xuICogXHR1c2VySWQ6IG51bWJlcjtcbiAqIFx0dXNlck5hbWU6IHN0cmluZztcbiAqIH1cbiAqXG4gKiBpbnRlcmZhY2UgVXNlcldpdGhGcmllbmRzIHtcbiAqIFx0dXNlckluZm86IFVzZXI7XG4gKiBcdHVzZXJGcmllbmRzOiBVc2VyW107XG4gKiB9XG4gKlxuICogY29uc3QgcmVzdWx0OiBTbmFrZUNhc2VkUHJvcGVydGllc0RlZXA8VXNlcldpdGhGcmllbmRzPiA9IHtcbiAqIFx0dXNlcl9pbmZvOiB7XG4gKiBcdFx0dXNlcl9pZDogMSxcbiAqIFx0XHR1c2VyX25hbWU6ICdUb20nLFxuICogXHR9LFxuICogXHR1c2VyX2ZyaWVuZHM6IFtcbiAqIFx0XHR7XG4gKiBcdFx0XHR1c2VyX2lkOiAyLFxuICogXHRcdFx0dXNlcl9uYW1lOiAnSmVycnknLFxuICogXHRcdH0sXG4gKiBcdFx0e1xuICogXHRcdFx0dXNlcl9pZDogMyxcbiAqIFx0XHRcdHVzZXJfbmFtZTogJ1NwaWtlJyxcbiAqIFx0XHR9LFxuICogXHRdLFxuICogfTtcbiAqIGBgYFxuICpcbiAqIEBjYXRlZ29yeSBDaGFuZ2UgY2FzZVxuICogQGNhdGVnb3J5IFRlbXBsYXRlIGxpdGVyYWxcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqL1xuZXhwb3J0IHR5cGUgU25ha2VDYXNlZFByb3BlcnRpZXNEZWVwPFZhbHVlPiA9IERlbGltaXRlckNhc2VkUHJvcGVydGllc0RlZXA8VmFsdWUsICdfJz47XG4iLCIvKipcbiAqIEdlbmVyaWMgdXRpbGl0eSB0byB0cmFuc2Zvcm0gc25ha2VfY2FzZSBvYmplY3Qga2V5cyB0byBjYW1lbENhc2UgYXQgcnVudGltZS5cbiAqIFRoaXMgaXMgdGhlIHJ1bnRpbWUgZXF1aXZhbGVudCBvZiB0aGUgQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwIHR5cGUgdXRpbGl0eS5cbiAqL1xuLyoqXG4gKiBSZWN1cnNpdmVseSB0cmFuc2Zvcm1zIGFsbCBvYmplY3Qga2V5cyBmcm9tIHNuYWtlX2Nhc2UgdG8gY2FtZWxDYXNlXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHRyYW5zZm9ybVNuYWtlVG9DYW1lbDogKG9iajogdW5rbm93bikgPT4gdW5rbm93bjtcbi8qKlxuICogUmVjdXJzaXZlbHkgdHJhbnNmb3JtcyBhbGwgb2JqZWN0IGtleXMgZnJvbSBjYW1lbENhc2UgdG8gc25ha2VfY2FzZVxuICovXG5leHBvcnQgZGVjbGFyZSBjb25zdCB0cmFuc2Zvcm1DYW1lbFRvU25ha2U6IChvYmo6IHVua25vd24pID0+IHVua25vd247XG4iLCJpbXBvcnQgeyBGdWxmaWxsbWVudERpc3BsYXlTdGF0dXMgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuLyoqXG4gKiBDb252ZXJ0cyBhIHN0cmluZyB0byBhIEZ1bGZpbGxtZW50RGlzcGxheVN0YXR1cyBlbnVtIHZhbHVlLlxuICpcbiAqIEBwYXJhbSBzdGF0dXMgLSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gKlxuICogQHJldHVybnMgVGhlIEZ1bGZpbGxtZW50RGlzcGxheVN0YXR1cyBlbnVtIHZhbHVlIG9yIHVuZGVmaW5lZCBpZiB0aGUgc3RyaW5nXG4gKiBkb2VzIG5vdCBtYXAgdG8gYSB2YWxpZCBlbnVtXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHN0cmluZ1RvRnVsZmlsbG1lbnREaXNwbGF5U3RhdHVzRW51bVZhbHVlOiAoc3RhdHVzOiBzdHJpbmcpID0+IEZ1bGZpbGxtZW50RGlzcGxheVN0YXR1cyB8IHVuZGVmaW5lZDtcbiIsImltcG9ydCB7IENvbG9yTWFwcGluZyB9IGZyb20gXCJzcmMvYXBwbGljYXRpb24vbW9kZWxzL2NvbG9yc0NvbmZpZ1wiO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgdmFsaWRhdGVHcmFwaFFMQ29sb3JzQ29uZmlnOiAoZGF0YTogdW5rbm93bikgPT4gQ29sb3JNYXBwaW5nIHwgdW5kZWZpbmVkO1xuIiwiaW1wb3J0IHsgRnJvbnRlbmRDb25maWcgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2Zyb250ZW5kQ29uZmlnJztcbmltcG9ydCB7IFdpZGdldENvbmZpZywgUGFnZVZhcmlhbnRDb25maWcsIFdpZGdldE1vdW50aW5nQ29uZmlnIH0gZnJvbSAnc3JjL2NvbnRleHRzL3R5cGVzJztcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHZhbGlkYXRlQW5kVHJhbnNmb3JtUGFnZVZhcmlhbnRzOiAoY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gUGFnZVZhcmlhbnRDb25maWc7XG5leHBvcnQgZGVjbGFyZSBjb25zdCB2YWxpZGF0ZUFuZFRyYW5zZm9ybU1vdW50aW5nQ29uZmlnOiAoY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgY29uZmlnS2V5OiBzdHJpbmcpID0+IFdpZGdldE1vdW50aW5nQ29uZmlnO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgdmFsaWRhdGVBbmRUcmFuc2Zvcm1XaWRnZXRDb25maWc6IChjb25maWc6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBjb25maWdLZXk6IHN0cmluZykgPT4gV2lkZ2V0Q29uZmlnO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgdmFsaWRhdGVHcmFwaFFMRnJvbnRlbmRDb25maWc6IChkYXRhOiB1bmtub3duKSA9PiBGcm9udGVuZENvbmZpZyB8IHVuZGVmaW5lZDtcbiIsImV4cG9ydCBkZWNsYXJlIGNvbnN0IHZhbGlkYXRlR3JhcGhRTE9yZ0lkOiAoZGF0YTogdW5rbm93bikgPT4gc3RyaW5nIHwgdW5kZWZpbmVkO1xuIiwiaW1wb3J0IHsgTW9iaWxlUExQQ2hhdFBsYWNlbWVudFBhcmFtZXRlciB9IGZyb20gJy4uL21vYmlsZVBMUENoYXRQbGFjZW1lbnRQYXJhbWV0ZXInO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgdmFsaWRhdGVNb2JpbGVQTFBDaGF0UGxhY2VtZW50UGFyYW1ldGVyOiAodmFsdWU6IHVua25vd24pID0+IE1vYmlsZVBMUENoYXRQbGFjZW1lbnRQYXJhbWV0ZXIgfCB1bmRlZmluZWQ7XG4iLCJpbXBvcnQgeyBPcmdhbml6YXRpb25Db25maWcgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS9vcmdhbml6YXRpb25Db25maWcnO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgdmFsaWRhdGVPcmdhbml6YXRpb25Db25maWc6IChkYXRhOiB1bmtub3duKSA9PiBPcmdhbml6YXRpb25Db25maWcgfCB1bmRlZmluZWQ7XG4iLCJpbXBvcnQgeyBPcmdDb25maWcgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS9vcmdDb25maWdSZXN1bHRzJztcbi8qKlxuICpcbiAqIEBwYXJhbSBkYXRhXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZGVjbGFyZSBjb25zdCB2YWxpZGF0ZU9yZ0NvbmZpZ1Jlc3VsdHM6IChkYXRhOiB1bmtub3duKSA9PiBPcmdDb25maWcgfCB1bmRlZmluZWQ7XG4iLCJpbXBvcnQgeyBSZXNwb25zZSB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvaW5kZXgnO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgdmFsaWRhdGVSZXNwb25zZTogKGRhdGE6IHVua25vd24pID0+IFJlc3BvbnNlIHwgdW5kZWZpbmVkO1xuIiwiaW1wb3J0IHsgU3VnZ2VzdGlvbiB9IGZyb20gJy4uL2FwaS9zdWdnZXN0aW9uJztcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHZhbGlkYXRlU3VnZ2VzdGlvbjogKGRhdGE6IHVua25vd24pID0+IFN1Z2dlc3Rpb24gfCB1bmRlZmluZWQ7XG4iLCJpbXBvcnQgeyBVc2VyRXZlbnQgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2luZGV4JztcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHZhbGlkYXRlVXNlckV2ZW50OiAoZGF0YTogdW5rbm93bikgPT4gVXNlckV2ZW50IHwgdW5kZWZpbmVkO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUksY0FBYyxDQUFDLElBQUc7Ozs7QUNBdEIsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFHOzs7O0FDQXhCLElBQVcsMEJBQTBCLENBQUMsSUFBQTs7OztBQ0F0QyxJQUFFLHFCQUFBO0NBQUE7T0FBQTtPQUFBO0NBQUE7QUFDRixJQUFJLGtCQUFrQixDQUFDLElBQUk7QUFDM0IsSUFBRSxtQkFBQSxDQUFBLElBQUE7QUFDRixJQUFXLG1CQUFtQjtDQUFDO09BQUs7T0FBQTtDQUFBO0FBQ3BDLElBQVcsb0JBQU07Q0FBQTtPQUFBO09BQUE7Q0FBQTs7OztBQ0pqQixJQUFJLGtDQUFrQyxDQUFDLElBQUk7Ozs7QUNBM0MsSUFBSSx5QkFBeUIsQ0FBQyxJQUFJOzs7O0FDQWxDLElBQVcsa0JBQWtCLENBQUMsSUFBSTs7OztBQ0FsQyxJQUFJLHdCQUF3QixDQUFDLElBQUk7Ozs7QUNFakMsSUFBVyxjQUFjLENBQUMsSUFBSTtBQUM5QixJQUFX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
|