@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
|
@@ -1,749 +0,0 @@
|
|
|
1
|
-
import { ColorMapping, FrontendConfig, OrgConfig, OrgPageConfig, OrgUIConfig, OrganizationConfig as OrganizationConfig$1, PageVariantConfig, WidgetConfig, WidgetMountingConfig } from "./orgConfigResults-BL0XBA6x.cjs";
|
|
2
|
-
import { GetMerchantColorsQueryData } from "./index-BTK5uzs6.cjs";
|
|
3
|
-
import { AcceptableFormFieldType, ApiFormResponseAttributes, ApiPageResponseAttributes, OrderResponseAttributes as OrderResponseAttributes$1, PageResponseAttributes, ProductResponseAttributes, Response as Response$1, ReviewResponseAttributes, SearchProductFilterAttributes, SearchProductResponseAttributes, SearchResponseAttributes, TextResponseAttributes } from "./index-ClJ0nMsR.cjs";
|
|
4
|
-
import { CamelCasedPropertiesDeep, NonRecursiveType, UnknownArray, UpperCaseCharacters, WordSeparators } from "./index-BzgkfbNO.cjs";
|
|
5
|
-
import { VariantInfo } from "./index-D46Rd0io.cjs";
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXgtQ05zR1dmUzYuZC5jdHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9jYWNoZWRWYWx1ZS5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9jbGllbnREZXRhaWxzLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2NvbnZlcnNhdGlvbmFsU2VhcmNoSWRzLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2RhdGFMYXllci5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9kb21NdXRhdGlvbkNvbnRpbnVhdGlvbi5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9kb21PYnNlcnZhdGlvblN0cmF0ZWd5LmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2V2ZW50cy5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9nb29nbGVBbmFseXRpY3NFdmVudHMuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvbWVzc2FnZS5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9tb2JpbGVQTFBDaGF0UGxhY2VtZW50UGFyYW1ldGVyLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL29yZ3NFbnVtLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL3Byb2R1Y3RFeHBlcmltZW50LmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL3NwYW54VGFrZUFRdWl6Q3RhUGFyYW1ldGVyLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL3NwaWZmeVdpZGdldHMuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvc3VwcG9ydGVkT3Jncy5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvY29udGV4dC5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvZ2VuZXJhdGlvblBhcmFtcy5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvdXNlckV2ZW50LmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS9uZXh0TWVzc2FnZVJlcXVlc3QuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvYXBpL3NlYXJjaC5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvc3VnZ2VzdGlvbi5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvc3VwcG9ydGVkRXZlbnRSZXF1ZXN0LmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2dyYXBocWwvcXVlcmllcy9nZXRNZXJjaGFudE9yZ0lkUXVlcnkuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3VhcmRzL2lzQmFzZUVjb21tZXJjZUV2ZW50LmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2d1YXJkcy9pc0dBNEVjb21tZXJjZUV2ZW50LmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2d1YXJkcy9pc0xlZ2FjeVVBRWNvbW1lcmNlRXZlbnQuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3VhcmRzL2lzTW9iaWxlUExQQ2hhdFBsYWNlbWVudFBhcmFtZXRlci5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ndWFyZHMvaXNTcGFueFRha2VBUXVpekN0YVBhcmFtZXRlci5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ndWFyZHMvaXNWYXJpYW50SW5mby5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ndWFyZHMvdXRpbHMuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3VhcmRzL2FwaS9pc0FwaUZvcm1SZXNwb25zZS5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ndWFyZHMvYXBpL2lzQXBpRm9ybVN1Ym1pdHRlZFJlc3BvbnNlQXR0cmlidXRlcy5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ndWFyZHMvYXBpL2lzQXBpT3JkZXJSZXNwb25zZUF0dHJpYnV0ZXMuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3VhcmRzL2FwaS9pc0FwaU9yZ2FuaXphdGlvbkNvbmZpZy5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ndWFyZHMvYXBpL2lzQXBpT3JnQ29uZmlnUmVzdWx0cy5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ndWFyZHMvYXBpL2lzQXBpUGFnZVJlc3BvbnNlQXR0cmlidXRlcy5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ndWFyZHMvYXBpL2lzQXBpUExQRXZlbnRBdHRyaWJ1dGVzLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2d1YXJkcy9hcGkvaXNBcGlQcm9kdWN0U2VhcmNoRmlsdGVyQXR0cmlidXRlcy5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ndWFyZHMvZ3JhcGhRTC9pc0dyYXBoUUxDb2xvcnNDb25maWcuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvdXRpbGl0eVR5cGVzL2RlbGltaXRlckNhc2UuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvdXRpbGl0eVR5cGVzL2RlbGltaXRlckNhc2VkUHJvcGVydGllc0RlZXAuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvdXRpbGl0eVR5cGVzL3NuYWtlQ2FzZWRQcm9wZXJ0aWVzRGVlcC5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy91dGlscy9zbmFrZVRvQ2FtZWxUcmFuc2Zvcm1lci5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy91dGlscy9zdHJpbmdUb0Z1bGZpbGxtZW50RGlzcGxheVN0YXR1c0VudW1WYWx1ZS5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy92YWxpZGF0b3JzL3ZhbGlkYXRlR3JhcGhRTENvbG9yc0NvbmZpZy5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy92YWxpZGF0b3JzL3ZhbGlkYXRlR3JhcGhRTEZyb250ZW5kQ29uZmlnLmQudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL3ZhbGlkYXRvcnMvdmFsaWRhdGVHcmFwaFFMT3JnSWQuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvdmFsaWRhdG9ycy92YWxpZGF0ZU1vYmlsZVBMUENoYXRQbGFjZW1lbnRQYXJhbWV0ZXIuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvdmFsaWRhdG9ycy92YWxpZGF0ZU9yZ2FuaXphdGlvbkNvbmZpZy5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy92YWxpZGF0b3JzL3ZhbGlkYXRlT3JnQ29uZmlnUmVzdWx0cy5kLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy92YWxpZGF0b3JzL3ZhbGlkYXRlUmVzcG9uc2UuZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvdmFsaWRhdG9ycy92YWxpZGF0ZVN1Z2dlc3Rpb24uZC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvdmFsaWRhdG9ycy92YWxpZGF0ZVVzZXJFdmVudC5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImludGVyZmFjZSBDYWNoZWRWYWx1ZSB7XG4gICAgdmFsdWU6IHVua25vd247XG4gICAgZXhwaXJ5OiBudW1iZXI7XG59XG5leHBvcnQgdHlwZSB7IENhY2hlZFZhbHVlIH07XG4iLCJpbnRlcmZhY2UgQ2xpZW50RGV0YWlscyB7XG4gICAgb3M/OiBzdHJpbmc7XG4gICAgb3NWZXJzaW9uPzogc3RyaW5nO1xuICAgIGRldmljZUJyYW5kPzogc3RyaW5nO1xuICAgIGRldmljZU1hbnVmYWN0dXJlcj86IHN0cmluZztcbiAgICBkZXZpY2VNb2RlbD86IHN0cmluZztcbiAgICBjYXJyaWVyPzogc3RyaW5nO1xuICAgIGNvdW50cnk/OiBzdHJpbmc7XG4gICAgcmVnaW9uPzogc3RyaW5nO1xuICAgIGJyb3dzZXI/OiBzdHJpbmc7XG4gICAgYnJvd3NlclZlcnNpb24/OiBzdHJpbmc7XG4gICAgYnJvd3NlcklwQWRkcmVzcz86IHN0cmluZztcbiAgICB1c2VyQWdlbnQ/OiBzdHJpbmc7XG59XG5leHBvcnQgdHlwZSB7IENsaWVudERldGFpbHMsIH07XG4iLCJleHBvcnQgdHlwZSBDb252ZXJzYXRpb25hbFNlYXJjaElkcyA9IHtcbiAgICBjb252ZXJzYXRpb25hbFNlYXJjaEVudHJ5cG9pbnRJZD86IHN0cmluZztcbiAgICBjb252ZXJzYXRpb25hbFNlYXJjaElucHV0SWQ/OiBzdHJpbmc7XG4gICAgY29udmVyc2F0aW9uYWxTZWFyY2hNb2RhbElkPzogc3RyaW5nO1xufTtcbiIsIi8qKlxuICogQmFzZSBpbnRlcmZhY2UgZm9yIGNvbW1vbiBwcm9wZXJ0aWVzIGFjcm9zcyBhbGwgZWNvbW1lcmNlIGV2ZW50c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VFY29tbWVyY2VFdmVudCB7XG4gICAgZXZlbnQ6IHN0cmluZztcbiAgICBlY29tbWVyY2U6IFVBRWNvbW1lcmNlRGF0YSB8IEdBNEVjb21tZXJjZURhdGE7XG59XG4vKipcbiAqIExlZ2FjeSB1bml2ZXJzYWwgYW5hbHl0aWNzIGRhdGEuIFRoZSBhY3R1YWwgcGF5bG9hZCBjb250YWlucyBtb3JlIGZpZWxkcywgYnV0IHdlXG4gKiBvbmx5IG5lZWQgdGhlIG9uZXMgbGlzdGVkIGJlbG93LlxuICovXG5pbnRlcmZhY2UgVUFFY29tbWVyY2VEYXRhIHtcbiAgICBhZGQ6IHtcbiAgICAgICAgcHJvZHVjdHM6IHtcbiAgICAgICAgICAgIG5hbWU6IHN0cmluZztcbiAgICAgICAgICAgIGNhdGVnb3J5OiBzdHJpbmc7XG4gICAgICAgICAgICBwcmljZTogc3RyaW5nO1xuICAgICAgICAgICAgcXVhbnRpdHk6IHN0cmluZztcbiAgICAgICAgfVtdO1xuICAgICAgICBjdXJyZW5jeUNvZGU6IHN0cmluZztcbiAgICB9O1xufVxuLyoqXG4gKiBHb29nbGUgQW5hbHl0aWNzIDQgZGF0YS4gVGhlIGFjdHVhbCBwYXlsb2FkIGNvbnRhaW5zIG1vcmUgZmllbGRzLCBidXQgd2VcbiAqIG9ubHkgbmVlZCB0aGUgb25lcyBsaXN0ZWQgYmVsb3cuXG4gKi9cbmludGVyZmFjZSBHQTRFY29tbWVyY2VEYXRhIHtcbiAgICBjdXJyZW5jeTogc3RyaW5nO1xuICAgIGl0ZW1zOiB7XG4gICAgICAgIGl0ZW1fbmFtZTogc3RyaW5nO1xuICAgICAgICBpdGVtX2NhdGVnb3J5OiBzdHJpbmc7XG4gICAgICAgIHByaWNlOiBudW1iZXI7XG4gICAgICAgIHF1YW50aXR5OiBudW1iZXI7XG4gICAgfVtdO1xufVxuZXhwb3J0IGludGVyZmFjZSBVQUVjb21tZXJjZUV2ZW50IGV4dGVuZHMgQmFzZUVjb21tZXJjZUV2ZW50IHtcbiAgICBlY29tbWVyY2U6IFVBRWNvbW1lcmNlRGF0YTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgR0E0RWNvbW1lcmNlRXZlbnQgZXh0ZW5kcyBCYXNlRWNvbW1lcmNlRXZlbnQge1xuICAgIGVjb21tZXJjZTogR0E0RWNvbW1lcmNlRGF0YTtcbn1cbmV4cG9ydCB7fTtcbiIsImRlY2xhcmUgZW51bSBEb21NdXRhdGlvbk9ic2VydmVyQ29udGludWF0aW9uIHtcbiAgICBDT05USU5VRSA9IFwiQ09OVElOVUVcIixcbiAgICBFWEVDVVRJTkcgPSBcIkVYRUNVVElOR1wiLFxuICAgIFNUT1AgPSBcIlNUT1BcIlxufVxuZXhwb3J0IHsgRG9tTXV0YXRpb25PYnNlcnZlckNvbnRpbnVhdGlvbiB9O1xuIiwiZGVjbGFyZSBlbnVtIERvbU9ic2VydmF0aW9uU3RyYXRlZ3kge1xuICAgIE11dGF0aW9uT2JzZXJ2ZXIgPSBcIk11dGF0aW9uT2JzZXJ2ZXJcIixcbiAgICBQb2xsaW5nID0gXCJQb2xsaW5nXCIsXG4gICAgTm9uZSA9IFwiTm9uZVwiXG59XG5leHBvcnQgeyBEb21PYnNlcnZhdGlvblN0cmF0ZWd5IH07XG4iLCJleHBvcnQgZGVjbGFyZSBlbnVtIFNwaWZmeUV2ZW50TmFtZSB7XG4gICAgV2lkZ2V0T3BlbiA9IFwic3BpZmZ5OndpZGdldG9wZW5cIixcbiAgICBXaWRnZXRDbG9zZSA9IFwic3BpZmZ5OndpZGdldGNsb3NlXCJcbn1cbiIsImRlY2xhcmUgZW51bSBHb29nbGVBbmFseXRpY3NFdmVudHMge1xuICAgIEFERF9UT19DQVJUX3YxID0gXCJhZGRfdG9fY2FydFwiLFxuICAgIEFERF9UT19DQVJUX3YyID0gXCJhZGRUb0NhcnRcIlxufVxuZXhwb3J0IHsgR29vZ2xlQW5hbHl0aWNzRXZlbnRzIH07XG4iLCJpbXBvcnQgeyBDdXN0U2VydmljZUF0dGFjaG1lbnQsIEZvcm1UeXBlIH0gZnJvbSAnQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50JztcbmltcG9ydCB7IE9yZGVyUmVzcG9uc2VBdHRyaWJ1dGVzLCBQcm9kdWN0UmVzcG9uc2VBdHRyaWJ1dGVzLCBSZXZpZXdSZXNwb25zZUF0dHJpYnV0ZXMsIFBhZ2VSZXNwb25zZUF0dHJpYnV0ZXMsIFRleHRSZXNwb25zZUF0dHJpYnV0ZXMsIFNlYXJjaFJlc3BvbnNlQXR0cmlidXRlcywgU2VhcmNoUHJvZHVjdFJlc3BvbnNlQXR0cmlidXRlcywgQWNjZXB0YWJsZUZvcm1GaWVsZFR5cGUsIFNlYXJjaFByb2R1Y3RGaWx0ZXJBdHRyaWJ1dGVzIH0gZnJvbSAnLi9hcGkvcmVzcG9uc2UnO1xuZXhwb3J0IGRlY2xhcmUgZW51bSBNZXNzYWdlUm9sZSB7XG4gICAgVXNlciA9IFwidXNlclwiLFxuICAgIEFzc2lzdGFudCA9IFwiYXNzaXN0YW50XCJcbn1cbmV4cG9ydCBkZWNsYXJlIGVudW0gTWVzc2FnZVR5cGUge1xuICAgIFRleHQgPSBcInRleHRcIixcbiAgICBTdWdnZXN0aW9uQ2xpY2tlZCA9IFwic3VnZ2VzdGlvbl9jbGlja2VkXCIsXG4gICAgUHJvZHVjdCA9IFwicHJvZHVjdFwiLFxuICAgIFByb2R1Y3RTZWFyY2ggPSBcInByb2R1Y3Rfc2VhcmNoXCIsXG4gICAgUmV2aWV3ID0gXCJyZXZpZXdcIixcbiAgICBRdWVyeVR5cGVkID0gXCJxdWVyeV90eXBlZFwiLFxuICAgIFNlcGFyYXRvciA9IFwic2VwYXJhdG9yXCIsXG4gICAgUGFnZSA9IFwicGFnZVwiLFxuICAgIFNlYXJjaCA9IFwic2VhcmNoXCIsXG4gICAgQXR0YWNobWVudCA9IFwiYXR0YWNobWVudFwiLFxuICAgIENYQWdlbnRSZXNwb25zZSA9IFwiY3hfYWdlbnRfcmVzcG9uc2VcIixcbiAgICBGb3JtID0gXCJmb3JtXCIsXG4gICAgT3JkZXIgPSBcIm9yZGVyXCIsXG4gICAgUHJvZHVjdFNlYXJjaEZpbHRlciA9IFwicHJvZHVjdF9zZWFyY2hfZmlsdGVyXCJcbn1cbmV4cG9ydCB0eXBlIE1lc3NhZ2UgPSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICByb2xlOiBNZXNzYWdlUm9sZTtcbiAgICBjcmVhdGVkQXQ6IHN0cmluZztcbn0gJiAoVGV4dE1lc3NhZ2VNZXRhZGF0YSB8IFF1ZXJ5VHlwZWRNZXRhZGF0YSB8IFN1Z2dlc3Rpb25NZXNzYWdlTWV0YWRhdGEgfCBQcm9kdWN0TWVzc2FnZU1ldGFkYXRhIHwgUHJvZHVjdFNlYXJjaE1lc3NhZ2VNZXRhZGF0YSB8IFJldmlld01lc3NhZ2VNZXRhZGF0YSB8IFNlcGFyYXRvck1lc3NhZ2VNZXRhZGF0YSB8IFBhZ2VNZXNzYWdlTWV0YWRhdGEgfCBTZWFyY2hNZXNzYWdlTWV0YWRhdGEgfCBBdHRhY2htZW50TWV0YWRhdGEgfCBDWEFnZW50UmVzcG9uc2VNZXRhZGF0YSB8IEZvcm1NZXNzYWdlTWV0YWRhdGEgfCBPcmRlck1lc3NhZ2VNZXRhZGF0YSB8IFByb2R1Y3RTZWFyY2hGaWx0ZXJNZXRhZGF0YSk7XG50eXBlIEF0dGFjaG1lbnRNZXRhZGF0YSA9IHtcbiAgICB0eXBlOiBNZXNzYWdlVHlwZS5BdHRhY2htZW50O1xuICAgIG1ldGFkYXRhOiB7XG4gICAgICAgIG1lc3NhZ2U/OiBzdHJpbmc7XG4gICAgICAgIGF0dGFjaG1lbnQ6IEN1c3RTZXJ2aWNlQXR0YWNobWVudFtdO1xuICAgIH07XG59O1xudHlwZSBDWEFnZW50UmVzcG9uc2VNZXRhZGF0YSA9IHtcbiAgICB0eXBlOiBNZXNzYWdlVHlwZS5DWEFnZW50UmVzcG9uc2U7XG4gICAgbWV0YWRhdGE6IHtcbiAgICAgICAgbWVzc2FnZTogc3RyaW5nO1xuICAgICAgICBhZ2VudE5hbWU6IHN0cmluZztcbiAgICB9O1xufTtcbnR5cGUgVGV4dE1lc3NhZ2VNZXRhZGF0YSA9IHtcbiAgICB0eXBlOiBNZXNzYWdlVHlwZS5UZXh0O1xuICAgIG1ldGFkYXRhOiBUZXh0UmVzcG9uc2VBdHRyaWJ1dGVzWydhdHRyaWJ1dGVzJ107XG59O1xudHlwZSBRdWVyeVR5cGVkTWV0YWRhdGEgPSB7XG4gICAgdHlwZTogTWVzc2FnZVR5cGUuUXVlcnlUeXBlZDtcbiAgICBtZXRhZGF0YTogVGV4dFJlc3BvbnNlQXR0cmlidXRlc1snYXR0cmlidXRlcyddO1xufTtcbnR5cGUgU3VnZ2VzdGlvbk1lc3NhZ2VNZXRhZGF0YSA9IHtcbiAgICB0eXBlOiBNZXNzYWdlVHlwZS5TdWdnZXN0aW9uQ2xpY2tlZDtcbiAgICBtZXRhZGF0YToge1xuICAgICAgICBzdWdnZXN0aW9uSWQ6IHN0cmluZztcbiAgICAgICAgc3VnZ2VzdGlvbkNvbnRlbnQ6IHN0cmluZztcbiAgICB9O1xufTtcbmV4cG9ydCB0eXBlIFByb2R1Y3RNZXNzYWdlTWV0YWRhdGEgPSB7XG4gICAgdHlwZTogTWVzc2FnZVR5cGUuUHJvZHVjdDtcbiAgICBtZXRhZGF0YTogUHJvZHVjdFJlc3BvbnNlQXR0cmlidXRlc1snYXR0cmlidXRlcyddO1xufTtcbmV4cG9ydCB0eXBlIFByb2R1Y3RTZWFyY2hNZXNzYWdlTWV0YWRhdGEgPSB7XG4gICAgdHlwZTogTWVzc2FnZVR5cGUuUHJvZHVjdFNlYXJjaDtcbiAgICBtZXRhZGF0YTogU2VhcmNoUHJvZHVjdFJlc3BvbnNlQXR0cmlidXRlc1snYXR0cmlidXRlcyddO1xufTtcbnR5cGUgUmV2aWV3TWVzc2FnZU1ldGFkYXRhID0ge1xuICAgIHR5cGU6IE1lc3NhZ2VUeXBlLlJldmlldztcbiAgICBtZXRhZGF0YTogUmV2aWV3UmVzcG9uc2VBdHRyaWJ1dGVzWydhdHRyaWJ1dGVzJ107XG59O1xudHlwZSBTZXBhcmF0b3JNZXNzYWdlTWV0YWRhdGEgPSB7XG4gICAgdHlwZTogTWVzc2FnZVR5cGUuU2VwYXJhdG9yO1xufTtcbnR5cGUgUGFnZU1lc3NhZ2VNZXRhZGF0YSA9IHtcbiAgICB0eXBlOiBNZXNzYWdlVHlwZS5QYWdlO1xuICAgIG1ldGFkYXRhOiBQYWdlUmVzcG9uc2VBdHRyaWJ1dGVzWydhdHRyaWJ1dGVzJ107XG59O1xudHlwZSBTZWFyY2hNZXNzYWdlTWV0YWRhdGEgPSB7XG4gICAgdHlwZTogTWVzc2FnZVR5cGUuU2VhcmNoO1xuICAgIG1ldGFkYXRhOiBTZWFyY2hSZXNwb25zZUF0dHJpYnV0ZXNbJ2F0dHJpYnV0ZXMnXTtcbn07XG50eXBlIFByb2R1Y3RTZWFyY2hGaWx0ZXJNZXRhZGF0YSA9IHtcbiAgICB0eXBlOiBNZXNzYWdlVHlwZS5Qcm9kdWN0U2VhcmNoRmlsdGVyO1xuICAgIG1ldGFkYXRhOiBTZWFyY2hQcm9kdWN0RmlsdGVyQXR0cmlidXRlc1snYXR0cmlidXRlcyddO1xufTtcbmV4cG9ydCB0eXBlIEZvcm1GaWVsZCA9IHtcbiAgICBrZXk6IHN0cmluZztcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIHR5cGU6IEFjY2VwdGFibGVGb3JtRmllbGRUeXBlO1xuICAgIHJlcXVpcmVkOiBib29sZWFuO1xuICAgIGZvcm1hdD86ICdlbWFpbCc7XG4gICAgdmFsdWU/OiBzdHJpbmc7XG59O1xudHlwZSBGb3JtTWVzc2FnZU1ldGFkYXRhID0ge1xuICAgIHR5cGU6IE1lc3NhZ2VUeXBlLkZvcm07XG4gICAgbWV0YWRhdGE6IHtcbiAgICAgICAgZm9ybVR5cGU/OiBGb3JtVHlwZTtcbiAgICAgICAgZmllbGRzOiBGb3JtRmllbGRbXTtcbiAgICB9O1xufTtcbnR5cGUgT3JkZXJNZXNzYWdlTWV0YWRhdGEgPSB7XG4gICAgdHlwZTogTWVzc2FnZVR5cGUuT3JkZXI7XG4gICAgbWV0YWRhdGE6IE9yZGVyUmVzcG9uc2VBdHRyaWJ1dGVzWydhdHRyaWJ1dGVzJ107XG59O1xuZXhwb3J0IHt9O1xuIiwiZXhwb3J0IGludGVyZmFjZSBNb2JpbGVQTFBDaGF0UGxhY2VtZW50UGFyYW1ldGVyIHtcbiAgICByb3dJbmRleDogbnVtYmVyO1xufVxuIiwiZXhwb3J0IGRlY2xhcmUgY29uc3QgT3JnU2hvcnROYW1lOiB7XG4gICAgcmVhZG9ubHkgQ290ZXJpZTogXCJjb3RlcmllXCI7XG4gICAgcmVhZG9ubHkgRm9yTG92ZUFuZExlbW9uczogXCJmb3ItbG92ZS1hbmQtbGVtb25zXCI7XG4gICAgcmVhZG9ubHkgR3JlZW5wYW46IFwiZ3JlZW5wYW5cIjtcbiAgICByZWFkb25seSBKb3JkYW5DcmFpZzogXCJqb3JkYW4tY3JhaWdcIjtcbiAgICByZWFkb25seSBMYXJyeUFuZFNlcmdlczogXCJsYXJyeV9hbmRfc2VyZ2VzXCI7XG4gICAgcmVhZG9ubHkgTGVhcHNBbmRSZWJvdW5kczogXCJsZWFwcy1hbmQtcmVib3VuZHNcIjtcbiAgICByZWFkb25seSBNYW50cmFCcmFuZDogXCJtYW50cmEtYnJhbmRcIjtcbiAgICByZWFkb25seSBTcGFueDogXCJzcGFueFwiO1xuICAgIHJlYWRvbmx5IFNwYW54U3RhZ2luZzogXCJzdGFnaW5nLXNwYW54XCI7XG4gICAgcmVhZG9ubHkgU3VwZXJnb29wOiBcInN1cGVyZ29vcFwiO1xuICAgIHJlYWRvbmx5IFVuaXF1ZVZpbnRhZ2U6IFwidW5pcXVlLXZpbnRhZ2VcIjtcbiAgICByZWFkb25seSBKYWNrQXJjaGVyOiBcImphY2stYXJjaGVyXCI7XG4gICAgcmVhZG9ubHkgU2tpblBlcmZlY3Rpb246IFwic2tpbi1wZXJmZWN0aW9uXCI7XG4gICAgcmVhZG9ubHkgTG9va09wdGljOiBcImxvb2stb3B0aWNcIjtcbiAgICByZWFkb25seSBGaXZlQ2JkOiBcImZpdmUtY2JkXCI7XG4gICAgcmVhZG9ubHkgU25hcFN1cHBsZW1lbnRzOiBcInNuYXAtc3VwcGxlbWVudHNcIjtcbiAgICByZWFkb25seSBMb25nZXZpdHlyeDogXCJsb25nZXZpdHlyeFwiO1xuICAgIHJlYWRvbmx5IFZlbmFDYmQ6IFwidmVuYS1jYmRcIjtcbiAgICByZWFkb25seSBNZWR0ZXJyYTogXCJtZWR0ZXJyYVwiO1xuICAgIHJlYWRvbmx5IE1vZGVsbHM6IFwibW9kZWxsc1wiO1xuICAgIHJlYWRvbmx5IFByZXNzZWRGbG9yYWw6IFwicHJlc3NlZC1mbG9yYWxcIjtcbiAgICByZWFkb25seSBLaW5kcmVkQnJhdmVseTogXCJraW5kcmVkLWJyYXZlbHlcIjtcbiAgICByZWFkb25seSBXaW5lRW50aHVzaWFzdDogXCJ3aW5lLWVudGh1c2lhc3RcIjtcbiAgICByZWFkb25seSBIb21lZ3Jvd25DYW5uYWJpczogXCJob21lZ3Jvd24tY2FubmFiaXNcIjtcbiAgICByZWFkb25seSBEcmVhbWxhbmRCYWJ5OiBcImRyZWFtbGFuZC1iYWJ5XCI7XG4gICAgcmVhZG9ubHkgQmFuZG9saWVyOiBcImJhbmRvbGllclwiO1xuICAgIHJlYWRvbmx5IFdlc3RvbkpvbkJvdWNoZXI6IFwid2VzdG9uLWpvbi1ib3VjaGVyXCI7XG4gICAgcmVhZG9ubHkgS3V0RnJvbVRoZUtsb3RoOiBcImt1dC1mcm9tLXRoZS1rbG90aFwiO1xuICAgIHJlYWRvbmx5IEdyb292ZUxpZmU6IFwiZ3Jvb3ZlLWxpZmVcIjtcbiAgICByZWFkb25seSBDYXJwZTogXCJjYXJwZVwiO1xuICAgIHJlYWRvbmx5IFdvbGZUYWN0aWNhbDogXCJ3b2xmLXRhY3RpY2FsXCI7XG4gICAgcmVhZG9ubHkgV29sZk1hdHRyZXNzOiBcIndvbGZtYXR0cmVzc1wiO1xuICAgIHJlYWRvbmx5IERlZmF1bHQ6IFwiZGVmYXVsdFwiO1xufTtcbiIsImV4cG9ydCBkZWNsYXJlIGVudW0gUHJvZHVjdEV4cGVyaW1lbnQge1xuICAgIERlZmF1bHQgPSBcImRlZmF1bHRcIlxufVxuIiwiZXhwb3J0IGludGVyZmFjZSBTcGFueFRha2VBUXVpekN0YVBhcmFtZXRlciB7XG4gICAgdGV4dD86IHN0cmluZztcbiAgICB2YWx1ZT86IHN0cmluZztcbn1cbiIsIi8qKlxuICogRW51bSBvZiBhbGwgd2lkZ2V0IG5hbWVzLiBUaGVzZSBhcmUgd2lkZ2V0cyB0aGF0IGFyZSByZW5kZXJlZCBhbmQgaW50ZWdyYXRlZCBpbnRvXG4gKiBhIG1lcmNoYW50J3Mgd2Vic2l0ZS5cbiAqL1xuZXhwb3J0IGRlY2xhcmUgZW51bSBTcGlmZnlXaWRnZXRzIHtcbiAgICBJbWFnZUJhbm5lciA9IFwiaW1hZ2VfYmFubmVyXCIsXG4gICAgSW1hZ2VQcm9tcHRDYXJkID0gXCJpbWFnZV9wcm9tcHRfY2FyZFwiLFxuICAgIFNpbmdsZUltYWdlUHJvbXB0ID0gXCJzaW5nbGVfaW1hZ2VfcHJvbXB0XCIsXG4gICAgRW1iZWRkZWRXaWRnZXQgPSBcImVtYmVkZGVkX3dpZGdldFwiLFxuICAgIEZsb2F0aW5nQnV0dG9uID0gXCJmbG9hdGluZ19idXR0b25cIixcbiAgICBTdWdnZXN0aW9uQmFyID0gXCJzdWdnZXN0aW9uX2JhclwiLFxuICAgIFNlYXJjaFByb21wdCA9IFwic2VhcmNoX3Byb21wdFwiLFxuICAgIEdsb2JhbFNlYXJjaCA9IFwiZ2xvYmFsX3NlYXJjaFwiLFxuICAgIFNlYXJjaFJlc3VsdHMgPSBcInNlYXJjaF9yZXN1bHRzXCIsXG4gICAgR2xvYmFsU2VhcmNoRW50cnlQb2ludCA9IFwiZ2xvYmFsX3NlYXJjaF9lbnRyeV9wb2ludFwiXG59XG4iLCJpbXBvcnQgeyBDb2xvck1hcHBpbmcsIE9yZ1BhZ2VDb25maWcsIE9yZ1VJQ29uZmlnIH0gZnJvbSBcInNyYy9jb250ZXh0cy90eXBlc1wiO1xuZXhwb3J0IHsgT3JnU2hvcnROYW1lIH0gZnJvbSBcIi4vb3Jnc0VudW1cIjtcbmV4cG9ydCB0eXBlIEJhc2ljT3JnSW5mb1R5cGUgPSB7XG4gICAgc2hvcnROYW1lOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRvbWFpbjogc3RyaW5nO1xuICAgIGRlZmF1bHRQcm9kdWN0SWQ6IHN0cmluZztcbiAgICBhbHdheXNFbmFibGVkTWVyY2hhbnRzOiBib29sZWFuO1xuICAgIG9yZ1VJQ29uZmlnOiAoKSA9PiBPcmdVSUNvbmZpZyB8IHVuZGVmaW5lZDtcbiAgICBvcmdQYWdlQ29uZmlnOiAoKSA9PiBPcmdQYWdlQ29uZmlnO1xuICAgIG9yZ0NvbG9yczogKCkgPT4gQ29sb3JNYXBwaW5nIHwge307XG59O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgZ2V0T3JnSW5mbzogKG9yZ1Nob3J0TmFtZTogc3RyaW5nKSA9PiBQcm9taXNlPEJhc2ljT3JnSW5mb1R5cGU+O1xuIiwiaW1wb3J0IHsgQ29udGV4dCBhcyBBcGlDb250ZXh0IH0gZnJvbSAnQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50JztcbmltcG9ydCB7IENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcCB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvdXRpbGl0eVR5cGVzJztcbmV4cG9ydCBpbnRlcmZhY2UgQ29udGV4dCBleHRlbmRzIENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxBcGlDb250ZXh0PiB7XG59XG4iLCJpbXBvcnQgeyBHZW5lcmF0aW9uUGFyYW1zIGFzIEFwaUdlbmVyYXRpb25QYXJhbXMgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuaW1wb3J0IHsgQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy91dGlsaXR5VHlwZXMnO1xuZXhwb3J0IGludGVyZmFjZSBHZW5lcmF0aW9uUGFyYW1zIGV4dGVuZHMgQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwPEFwaUdlbmVyYXRpb25QYXJhbXM+IHtcbn1cbiIsImltcG9ydCB7IFBEUEF0dHJpYnV0ZXMgYXMgQXBpUERQQXR0cmlidXRlcywgUExQQXR0cmlidXRlcyBhcyBBcGlQTFBBdHRyaWJ1dGVzLCBRdWVyeVR5cGVkQXR0cmlidXRlcyBhcyBBcGlRdWVyeVR5cGVkQXR0cmlidXRlcywgU2VhcmNoQXR0cmlidXRlcyBhcyBBcGlTZWFyY2hBdHRyaWJ1dGVzLCBTdWdnZXN0aW9uQ2xpY2tlZEF0dHJpYnV0ZXMgYXMgQXBpU3VnZ2VzdGlvbkNsaWNrZWRBdHRyaWJ1dGVzLCBVc2VyRXZlbnQgYXMgQXBpVXNlckV2ZW50LCBGb3JtVHlwZSwgUGFnZVZpc2l0Q2F0ZWdvcnksIFVzZXJFdmVudENhdGVnb3J5IH0gZnJvbSAnQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50JztcbmltcG9ydCB7IENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcCB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvdXRpbGl0eVR5cGVzJztcbmV4cG9ydCBpbnRlcmZhY2UgUERQQXR0cmlidXRlcyBleHRlbmRzIENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxBcGlQRFBBdHRyaWJ1dGVzPiB7XG59XG5leHBvcnQgaW50ZXJmYWNlIFBMUEF0dHJpYnV0ZXMgZXh0ZW5kcyBDYW1lbENhc2VkUHJvcGVydGllc0RlZXA8QXBpUExQQXR0cmlidXRlcz4ge1xufVxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hBdHRyaWJ1dGVzIGV4dGVuZHMgQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwPEFwaVNlYXJjaEF0dHJpYnV0ZXM+IHtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlUeXBlZEF0dHJpYnV0ZXMgZXh0ZW5kcyBDYW1lbENhc2VkUHJvcGVydGllc0RlZXA8QXBpUXVlcnlUeXBlZEF0dHJpYnV0ZXM+IHtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybVN1Ym1pdHRlZEF0dHJpYnV0ZXMge1xuICAgIGZpbGxlZFNjaGVtYTogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgZm9ybVJlc3BvbnNlSWQ6IHN0cmluZztcbiAgICBmb3JtVHlwZTogRm9ybVR5cGU7XG59XG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VWaXNpdEF0dHJpYnV0ZXMge1xuICAgIHVybDogc3RyaW5nO1xuICAgIHBhZ2VWaXNpdENhdGVnb3J5OiBQYWdlVmlzaXRDYXRlZ29yeTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU3VnZ2VzdGlvbkNsaWNrZWRBdHRyaWJ1dGVzIGV4dGVuZHMgQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwPEFwaVN1Z2dlc3Rpb25DbGlja2VkQXR0cmlidXRlcz4ge1xufVxuZXhwb3J0IHR5cGUgVXNlckV2ZW50QXR0cmlidXRlcyA9IFBEUEF0dHJpYnV0ZXMgfCBQTFBBdHRyaWJ1dGVzIHwgUXVlcnlUeXBlZEF0dHJpYnV0ZXMgfCBTZWFyY2hBdHRyaWJ1dGVzIHwgU3VnZ2VzdGlvbkNsaWNrZWRBdHRyaWJ1dGVzIHwgUGFnZVZpc2l0QXR0cmlidXRlcztcbmV4cG9ydCBpbnRlcmZhY2UgUERQVXNlckV2ZW50IHtcbiAgICBjYXRlZ29yeTogVXNlckV2ZW50Q2F0ZWdvcnkuUGRwVmlzaXQgfCBVc2VyRXZlbnRDYXRlZ29yeS5BZGRUb0NhcnQ7XG4gICAgYXR0cmlidXRlczogUERQQXR0cmlidXRlcztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUExQVXNlckV2ZW50IHtcbiAgICBjYXRlZ29yeTogVXNlckV2ZW50Q2F0ZWdvcnkuUGxwVmlzaXQ7XG4gICAgYXR0cmlidXRlczogUExQQXR0cmlidXRlcztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlUeXBlZFVzZXJFdmVudCB7XG4gICAgY2F0ZWdvcnk6IFVzZXJFdmVudENhdGVnb3J5LlF1ZXJ5VHlwZWQ7XG4gICAgYXR0cmlidXRlczogUXVlcnlUeXBlZEF0dHJpYnV0ZXM7XG59XG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaFVzZXJFdmVudCB7XG4gICAgY2F0ZWdvcnk6IFVzZXJFdmVudENhdGVnb3J5LlNlYXJjaDtcbiAgICBhdHRyaWJ1dGVzOiBTZWFyY2hBdHRyaWJ1dGVzO1xufVxuZXhwb3J0IGludGVyZmFjZSBTdWdnZXN0aW9uc0NsaWNrZWRVc2VyRXZlbnQge1xuICAgIGNhdGVnb3J5OiBVc2VyRXZlbnRDYXRlZ29yeS5TdWdnZXN0aW9uQ2xpY2tlZDtcbiAgICBhdHRyaWJ1dGVzOiBTdWdnZXN0aW9uQ2xpY2tlZEF0dHJpYnV0ZXM7XG59XG5leHBvcnQgaW50ZXJmYWNlIEFwcExvYWRlZFVzZXJFdmVudCB7XG4gICAgY2F0ZWdvcnk6IFVzZXJFdmVudENhdGVnb3J5LkFwcExvYWRlZDtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQXBwVW5sb2FkZWRFdmVudCB7XG4gICAgY2F0ZWdvcnk6IFVzZXJFdmVudENhdGVnb3J5LkFwcFVubG9hZGVkO1xufVxuZXhwb3J0IGludGVyZmFjZSBQYWdlVmlzaXRFdmVudCB7XG4gICAgY2F0ZWdvcnk6IFVzZXJFdmVudENhdGVnb3J5LlBhZ2VWaXNpdDtcbiAgICBhdHRyaWJ1dGVzOiBQYWdlVmlzaXRBdHRyaWJ1dGVzO1xufVxuZXhwb3J0IGludGVyZmFjZSBGb3JtU3VibWl0dGVkIHtcbiAgICBjYXRlZ29yeTogVXNlckV2ZW50Q2F0ZWdvcnkuRm9ybVN1Ym1pdHRlZDtcbiAgICBhdHRyaWJ1dGVzOiBGb3JtU3VibWl0dGVkQXR0cmlidXRlcztcbn1cbmV4cG9ydCB0eXBlIFVzZXJFdmVudCA9IENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxQaWNrPEFwaVVzZXJFdmVudCwgJ2V2ZW50X2lkJyB8ICdjYXRlZ29yeScgfCAnY3JlYXRlZF9hdCc+PiAmIChTdWdnZXN0aW9uc0NsaWNrZWRVc2VyRXZlbnQgfCBBcHBMb2FkZWRVc2VyRXZlbnQgfCBQRFBVc2VyRXZlbnQgfCBRdWVyeVR5cGVkVXNlckV2ZW50IHwgU2VhcmNoVXNlckV2ZW50IHwgQXBwVW5sb2FkZWRFdmVudCB8IFBMUFVzZXJFdmVudCB8IFBhZ2VWaXNpdEV2ZW50IHwgRm9ybVN1Ym1pdHRlZCk7XG4iLCJpbXBvcnQgeyBDb250ZXh0IH0gZnJvbSAnLi9jb250ZXh0JztcbmltcG9ydCB7IFVzZXJFdmVudCB9IGZyb20gJy4vdXNlckV2ZW50JztcbmltcG9ydCB7IEdlbmVyYXRpb25QYXJhbXMgfSBmcm9tICcuL2dlbmVyYXRpb25QYXJhbXMnO1xuZXhwb3J0IGludGVyZmFjZSBOZXh0TWVzc2FnZVJlcXVlc3Qge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgY29udGV4dDogQ29udGV4dDtcbiAgICB1c2VyRXZlbnRzPzogVXNlckV2ZW50W107XG4gICAgZmVhdHVyZUZsYWdzPzogUmVjb3JkPHN0cmluZywgYm9vbGVhbj47XG4gICAgZ2VuZXJhdGlvblBhcmFtcz86IEdlbmVyYXRpb25QYXJhbXM7XG59XG4iLCJpbXBvcnQgeyBQcm9kdWN0U2VhcmNoUmVzcG9uc2UgYXMgQXBpUHJvZHVjdFNlYXJjaFJlc3BvbnNlLCBQcm9kdWN0U2VhcmNoUmVzcG9uc2VBdHRyaWJ1dGVzIGFzIEFwaVByb2R1Y3RTZWFyY2hSZXNwb25zZUF0dHJpYnV0ZXMsIFNlYXJjaFJlc3BvbnNlUHJvZHVjdCB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5pbXBvcnQgeyBDYW1lbENhc2VkUHJvcGVydGllc0RlZXAgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL3V0aWxpdHlUeXBlcyc7XG5leHBvcnQgaW50ZXJmYWNlIFByb2R1Y3RTZWFyY2hSZXNwb25zZSBleHRlbmRzIENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxBcGlQcm9kdWN0U2VhcmNoUmVzcG9uc2U+IHtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZHVjdFNlYXJjaFJlc3BvbnNlQXR0cmlidXRlcyBleHRlbmRzIENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxBcGlQcm9kdWN0U2VhcmNoUmVzcG9uc2VBdHRyaWJ1dGVzPiB7XG59XG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaFJlc3VsdCB7XG4gICAgcHJvZHVjdHM6IFNlYXJjaFJlc3BvbnNlUHJvZHVjdFtdO1xuICAgIGZpbHRlcnM6IHN0cmluZ1tdO1xuICAgIGdlbmVyYXRlZFF1ZXJ5Pzogc3RyaW5nO1xuICAgIHRvdGFsUHJvZHVjdENvdW50OiBudW1iZXI7XG4gICAgc2VhcmNoUmVzcG9uc2VJZDogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hQYXJhbXMge1xuICAgIHF1ZXJ5OiBzdHJpbmc7XG4gICAgbGltaXQ/OiBudW1iZXI7XG59XG4iLCJpbXBvcnQgeyBTdWdnZXN0aW9uIGFzIEFwaVN1Z2dlc3Rpb24gfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuaW1wb3J0IHsgQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy91dGlsaXR5VHlwZXMnO1xuZXhwb3J0IGludGVyZmFjZSBTdWdnZXN0aW9uIGV4dGVuZHMgQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwPEFwaVN1Z2dlc3Rpb24+IHtcbn1cbiIsImltcG9ydCB7IFVzZXJFdmVudCB9IGZyb20gJy4vdXNlckV2ZW50JztcbmltcG9ydCB7IENvbnRleHQgfSBmcm9tICcuL2NvbnRleHQnO1xuZXhwb3J0IGludGVyZmFjZSBTdXBwb3J0ZWRFdmVudFJlcXVlc3Qge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgY29udGV4dDogQ29udGV4dDtcbiAgICB1c2VyRXZlbnQ6IFVzZXJFdmVudDtcbn1cbiIsImRlY2xhcmUgY29uc3QgZ2V0TWVyY2hhbnRPcmdJZFF1ZXJ5ID0gXCJcXG4gIHF1ZXJ5IHtcXG4gICAgbWUge1xcbiAgICAgIG9yZyB7XFxuICAgICAgICBpZFxcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcblwiO1xuZXhwb3J0IHsgZ2V0TWVyY2hhbnRPcmdJZFF1ZXJ5IH07XG4iLCJpbXBvcnQgdHlwZSB7IEJhc2VFY29tbWVyY2VFdmVudCB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMnO1xuLyoqXG4gKiBDaGVja3MgaWYgYW4gZXZlbnQgaXMgYSBiYXNlIEdvb2dsZSBBbmFseXRpY3MgZWNvbW1lcmNlIGV2ZW50LlxuICpcbiAqIEBwYXJhbSBkYXRhIFRoZSBldmVudCB0byBjaGVjay5cbiAqXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBldmVudCBpcyBhIGJhc2UgZWNvbW1lcmNlIGV2ZW50LCBmYWxzZSBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGlzQmFzZUVjb21tZXJjZUV2ZW50OiAoZGF0YTogdW5rbm93bikgPT4gZGF0YSBpcyBCYXNlRWNvbW1lcmNlRXZlbnQ7XG4iLCJpbXBvcnQgdHlwZSB7IEdBNEVjb21tZXJjZUV2ZW50IH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscyc7XG4vKipcbiAqIENoZWNrcyBpZiBhbiBldmVudCBpcyBhIEdvb2dsZSBBbmFseXRpY3MgNCBlY29tbWVyY2UgZXZlbnQuXG4gKlxuICogQHBhcmFtIGRhdGEgVGhlIGV2ZW50IHRvIGNoZWNrLlxuICpcbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGV2ZW50IGlzIGEgR0E0IGVjb21tZXJjZSBldmVudCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZGVjbGFyZSBjb25zdCBpc0dBNEVjb21tZXJjZUV2ZW50OiAoZGF0YTogdW5rbm93bikgPT4gZGF0YSBpcyBHQTRFY29tbWVyY2VFdmVudDtcbiIsImltcG9ydCB0eXBlIHsgVUFFY29tbWVyY2VFdmVudCB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMnO1xuLyoqXG4gKiBDaGVja3MgaWYgYW4gZXZlbnQgaXMgYSBsZWdhY3kgVW5pdmVyc2FsIEFuYWx5dGljcyBlY29tbWVyY2UgZXZlbnQuXG4gKlxuICogQHBhcmFtIGRhdGEgVGhlIGV2ZW50IHRvIGNoZWNrLlxuICpcbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGV2ZW50IGlzIGEgbGVnYWN5IFVBIGVjb21tZXJjZSBldmVudCwgZmFsc2Ugb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZGVjbGFyZSBjb25zdCBpc0xlZ2FjeVVBRWNvbW1lcmNlRXZlbnQ6IChkYXRhOiB1bmtub3duKSA9PiBkYXRhIGlzIFVBRWNvbW1lcmNlRXZlbnQ7XG4iLCJpbnRlcmZhY2UgTW9iaWxlUGxwQ2hhdFBsYWNlbWVudFBhcmFtZXRlciB7XG4gICAgcm93X2luZGV4OiBudW1iZXI7XG59XG5leHBvcnQgZGVjbGFyZSBjb25zdCBpc01vYmlsZVBMUENoYXRQbGFjZW1lbnRQYXJhbWV0ZXI6ICh2YWx1ZTogdW5rbm93bikgPT4gdmFsdWUgaXMgTW9iaWxlUGxwQ2hhdFBsYWNlbWVudFBhcmFtZXRlcjtcbmV4cG9ydCB7fTtcbiIsImltcG9ydCB7IFNwYW54VGFrZUFRdWl6Q3RhUGFyYW1ldGVyIH0gZnJvbSAnLi4vc3BhbnhUYWtlQVF1aXpDdGFQYXJhbWV0ZXInO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgaXNTcGFueFRha2VBUXVpekN0YVBhcmFtZXRlcjogKHZhbHVlOiB1bmtub3duKSA9PiB2YWx1ZSBpcyBTcGFueFRha2VBUXVpekN0YVBhcmFtZXRlcjtcbiIsImltcG9ydCB7IFZhcmlhbnRJbmZvIH0gZnJvbSAnLi4vdmFyaWFudEluZm8nO1xuLyoqXG4gKiBUeXBlIGd1YXJkIHRvIGNoZWNrIGlmIGFuIG9iamVjdCBpcyBhIHZhbGlkIFZhcmlhbnRJbmZvLlxuICpcbiAqIEBwYXJhbSB2YXJpYW50SW5mbyAtIFRoZSB1bmtub3duIG9iamVjdCB0byBjaGVjay5cbiAqXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBkYXRhIGlzIGEgdmFsaWQgVmFyaWFudEluZm8gb2JqZWN0LCBmYWxzZSBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGlzVmFyaWFudEluZm86ICh2YXJpYW50SW5mbzogdW5rbm93bikgPT4gdmFyaWFudEluZm8gaXMgVmFyaWFudEluZm87XG4iLCIvKipcbiAqIENoZWNrcyBpZiBhbiBvYmplY3QgaGFzIGEgcHJvcGVydHkgb2YgYSBzcGVjaWZpYyB0eXBlXG4gKlxuICogQHBhcmFtIG9iaiAtIFRoZSBvYmplY3QgdG8gY2hlY2tcbiAqIEBwYXJhbSBwcm9wIC0gVGhlIHByb3BlcnR5IG5hbWUgdG8gY2hlY2tcbiAqIEBwYXJhbSB0eXBlIC0gVGhlIGV4cGVjdGVkIHR5cGUgb2YgdGhlIHByb3BlcnR5XG4gKiBAcGFyYW0gaXNPcHRpb25hbCAtIFdoZXRoZXIgdGhlIHByb3BlcnR5IGlzIG9wdGlvbmFsIChkZWZhdWx0cyB0byBmYWxzZSlcbiAqXG4gKiBAcmV0dXJucyBib29sZWFuIGluZGljYXRpbmcgaWYgdGhlIG9iamVjdCBoYXMgdGhlIHByb3BlcnR5IG9mIHRoZSBzcGVjaWZpZWQgdHlwZVxuICovXG5leHBvcnQgZGVjbGFyZSBjb25zdCBoYXNQcm9wZXJ0eU9mVHlwZTogPFQgZXh0ZW5kcyBvYmplY3Q+KG9iajogdW5rbm93biwgcHJvcDoga2V5b2YgVCwgdHlwZTogXCJzdHJpbmdcIiB8IFwibnVtYmVyXCIgfCBcImJvb2xlYW5cIiB8IFwib2JqZWN0XCIgfCBcImFycmF5XCIsIGlzT3B0aW9uYWw/OiBib29sZWFuKSA9PiBvYmogaXMgVDtcbiIsImltcG9ydCB7IEFwaUZvcm1SZXNwb25zZUF0dHJpYnV0ZXMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS9yZXNwb25zZUdlbmVyaWNzJztcbi8qKlxuICogVHlwZSBndWFyZCB0byBjaGVjayBpZiB0aGUgcHJvdmlkZWQgZGF0YSBoYXMgdGhlIGFsbCBvZiB0aGUgcHJvcGVydGllcyAod2l0aCB0aGUgY29ycmVjdCB0eXBlcykgb2ZcbiAqIGEgRm9ybVJlc3BvbnNlQXR0cmlidXRlXG4gKlxuICogQHBhcmFtIGRhdGEgLSBUaGUgZGF0YSB0byBjaGVja1xuICpcbiAqIEByZXR1cm5zIHRydWUgaWYgdGhlIGRhdGEgaGFzIHRoZSBjb3JyZWN0IHByb3BlcnRpZXMsIGZhbHNlIG90aGVyd2lzZVxuICovXG5leHBvcnQgZGVjbGFyZSBjb25zdCBpc0FwaUZvcm1SZXNwb25zZUF0dHJpYnV0ZXM6IChkYXRhOiB1bmtub3duKSA9PiBkYXRhIGlzIEFwaUZvcm1SZXNwb25zZUF0dHJpYnV0ZXM7XG4iLCJpbXBvcnQgeyBGb3JtU3VibWl0dGVkQXR0cmlidXRlcyB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5leHBvcnQgZGVjbGFyZSBjb25zdCBpc0FwaUZvcm1TdWJtaXR0ZWRSZXNwb25zZUF0dHJpYnV0ZXM6IChkYXRhOiB1bmtub3duKSA9PiBkYXRhIGlzIEZvcm1TdWJtaXR0ZWRBdHRyaWJ1dGVzO1xuIiwiaW1wb3J0IHsgT3JkZXJJdGVtSW5mbywgT3JkZXJSZXNwb25zZUF0dHJpYnV0ZXMgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuZXhwb3J0IGludGVyZmFjZSBBcGlPcmRlckl0ZW1JbmZvIGV4dGVuZHMgT21pdDxPcmRlckl0ZW1JbmZvLCAnZGVsaXZlcmVkX2F0JyB8ICdlc3RpbWF0ZWRfZGVsaXZlcnlfYXQnIHwgJ2luX3RyYW5zaXRfYXQnPiB7XG4gICAgZGVsaXZlcmVkX2F0Pzogc3RyaW5nO1xuICAgIGVzdGltYXRlZF9kZWxpdmVyeV9hdD86IHN0cmluZztcbiAgICBpbl90cmFuc2l0X2F0Pzogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBBcGlPcmRlclJlc3BvbnNlQXR0cmlidXRlcyBleHRlbmRzIE9taXQ8T3JkZXJSZXNwb25zZUF0dHJpYnV0ZXMsICdjcmVhdGVkX2F0JyB8ICdsYXRlc3RfZXZlbnRfZGF0ZScgfCAnbGluZV9pdGVtcyc+IHtcbiAgICBjcmVhdGVkX2F0OiBzdHJpbmc7XG4gICAgbGF0ZXN0X2V2ZW50X2RhdGU6IHN0cmluZztcbiAgICBsaW5lX2l0ZW1zOiBBcGlPcmRlckl0ZW1JbmZvW107XG59XG5leHBvcnQgZGVjbGFyZSBjb25zdCBpc0FwaU9yZGVyUmVzcG9uc2VBdHRyaWJ1dGVzOiAoZGF0YTogdW5rbm93bikgPT4gZGF0YSBpcyBBcGlPcmRlclJlc3BvbnNlQXR0cmlidXRlcztcbiIsImltcG9ydCB7IE9yZ2FuaXphdGlvbkNvbmZpZyB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5pbnRlcmZhY2UgQXBpT3JnQW5hbHl0aWNzQ29uZmlnQW1wbGl0dWRlIHtcbiAgICBzZXNzaW9uX3JlcGxheV9lbmFibGVkOiBib29sZWFuO1xuICAgIHNlc3Npb25fcmVwbGF5X3NhbXBsZV9yYXRlOiBudW1iZXI7XG4gICAgdHJhY2tpbmdfZW5hYmxlZDogYm9vbGVhbjtcbn1cbmludGVyZmFjZSBBcGlPcmdBbmFseXRpY3NDb25maWdDdXN0b21lclNlcnZpY2Uge1xuICAgIHByb3ZpZGVyOiBzdHJpbmc7XG59XG5pbnRlcmZhY2UgQXBpT3JnQW5hbHl0aWNzQ29uZmlnR29vZ2xlQW5hbHl0aWNzIHtcbiAgICBtZWFzdXJlbWVudF9pZDogc3RyaW5nO1xufVxuaW50ZXJmYWNlIEFwaU9yZ0FuYWx5dGljc0NvbmZpZyB7XG4gICAgYW1wbGl0dWRlPzogQXBpT3JnQW5hbHl0aWNzQ29uZmlnQW1wbGl0dWRlO1xuICAgIGN1c3RvbWVyX3NlcnZpY2U/OiBBcGlPcmdBbmFseXRpY3NDb25maWdDdXN0b21lclNlcnZpY2U7XG4gICAgZ29vZ2xlX2FuYWx5dGljcz86IEFwaU9yZ0FuYWx5dGljc0NvbmZpZ0dvb2dsZUFuYWx5dGljcztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQXBpT3JnYW5pemF0aW9uQ29uZmlnIGV4dGVuZHMgT3JnYW5pemF0aW9uQ29uZmlnIHtcbiAgICBjb25maWc6IEFwaU9yZ0FuYWx5dGljc0NvbmZpZztcbn1cbi8qKlxuICpcbiAqIEBwYXJhbSBkYXRhXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZGVjbGFyZSBjb25zdCBpc0FwaU9yZ2FuaXphdGlvbkNvbmZpZzogKGRhdGE6IHVua25vd24pID0+IGRhdGEgaXMgQXBpT3JnYW5pemF0aW9uQ29uZmlnO1xuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IHsgU3RhdHNpZ0V4cGVyaW1lbnQgYXMgQXBpT3JnQ29uZmlnRXhwZXJpbWVudCwgU3RhdHNpZ0ZlYXR1cmVHYXRlIGFzIEFwaU9yZ0NvbmZpZ0ZlYXR1cmVHYXRlLCBPcmdhbml6YXRpb25TZXR0aW5ncyBhcyBBcGlPcmdDb25maWdPcmdhbml6YXRpb25TZXR0aW5ncyB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5pbXBvcnQgeyBBcGlPcmdhbml6YXRpb25Db25maWcgfSBmcm9tICcuL2lzQXBpT3JnYW5pemF0aW9uQ29uZmlnJztcbmludGVyZmFjZSBBcGlPcmdDb25maWdSZXN1bHRzIHtcbiAgICBjb25maWdzOiBBcGlPcmdhbml6YXRpb25Db25maWdbXTtcbiAgICBleHBlcmltZW50czogQXBpT3JnQ29uZmlnRXhwZXJpbWVudFtdO1xuICAgIGdhdGVzOiBBcGlPcmdDb25maWdGZWF0dXJlR2F0ZVtdO1xuICAgIG9yZzogQXBpT3JnQ29uZmlnT3JnYW5pemF0aW9uU2V0dGluZ3M7XG59XG4vKipcbiAqXG4gKiBAcGFyYW0gZGF0YVxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgaXNBcGlPcmdDb25maWdSZXN1bHRzOiAoZGF0YTogdW5rbm93bikgPT4gZGF0YSBpcyBSZXF1aXJlZDxBcGlPcmdDb25maWdSZXN1bHRzPjtcbmV4cG9ydCB7fTtcbiIsImltcG9ydCB7IEFwaVBhZ2VSZXNwb25zZUF0dHJpYnV0ZXMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS9yZXNwb25zZUdlbmVyaWNzJztcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGlzQXBpUGFnZVJlc3BvbnNlQXR0cmlidXRlczogKG9iajogdW5rbm93bikgPT4gb2JqIGlzIEFwaVBhZ2VSZXNwb25zZUF0dHJpYnV0ZXM7XG4iLCJpbXBvcnQgeyBQTFBBdHRyaWJ1dGVzLCBQTFBJZEF0dHJpYnV0ZXMgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgaXNBcGlQTFBJZEF0dHJpYnV0ZTogKGRhdGE6IHVua25vd24pID0+IGRhdGEgaXMgUExQSWRBdHRyaWJ1dGVzO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgaXNBcGlQTFBFdmVudEF0dHJpYnV0ZXM6IChkYXRhOiB1bmtub3duKSA9PiBkYXRhIGlzIFBMUEF0dHJpYnV0ZXM7XG4iLCJpbXBvcnQgeyBQcm9kdWN0U2VhcmNoRmlsdGVyUmVzcG9uc2VBdHRyaWJ1dGVzIH0gZnJvbSAnQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50JztcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGlzQXBpUHJvZHVjdFNlYXJjaEZpbHRlclJlc3BvbnNlQXR0cmlidXRlczogKGF0dHJpYnV0ZXM6IHVua25vd24pID0+IGF0dHJpYnV0ZXMgaXMgUHJvZHVjdFNlYXJjaEZpbHRlclJlc3BvbnNlQXR0cmlidXRlcztcbiIsImltcG9ydCB7IEdldE1lcmNoYW50Q29sb3JzUXVlcnlEYXRhIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ncmFwaHFsJztcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IGlzR3JhcGhRTENvbG9yc0NvbmZpZzogKGRhdGE6IHVua25vd24pID0+IGRhdGEgaXMgR2V0TWVyY2hhbnRDb2xvcnNRdWVyeURhdGE7XG4iLCJpbXBvcnQgdHlwZSB7IFVwcGVyQ2FzZUNoYXJhY3RlcnMsIFdvcmRTZXBhcmF0b3JzIH0gZnJvbSAnLi9pbnRlcm5hbCc7XG50eXBlIFVwcGVyQ2FzZVRvTG93ZXJDYXNlPFQgZXh0ZW5kcyBzdHJpbmc+ID0gVCBleHRlbmRzIFVwcGVyY2FzZTxUPiA/IExvd2VyY2FzZTxUPiA6IFQ7XG50eXBlIFNwbGl0SW5jbHVkaW5nRGVsaW1pdGVyc188U291cmNlIGV4dGVuZHMgc3RyaW5nLCBEZWxpbWl0ZXIgZXh0ZW5kcyBzdHJpbmc+ID0gU291cmNlIGV4dGVuZHMgJycgPyBbXSA6IFNvdXJjZSBleHRlbmRzIGAke2luZmVyIEZpcnN0UGFydH0ke0RlbGltaXRlcn0ke2luZmVyIFNlY29uZFBhcnR9YCA/IFNvdXJjZSBleHRlbmRzIGAke0ZpcnN0UGFydH0ke2luZmVyIFVzZWREZWxpbWl0ZXJ9JHtTZWNvbmRQYXJ0fWAgPyBVc2VkRGVsaW1pdGVyIGV4dGVuZHMgRGVsaW1pdGVyID8gU291cmNlIGV4dGVuZHMgYCR7aW5mZXIgRmlyc3RQYXJ0fSR7VXNlZERlbGltaXRlcn0ke2luZmVyIFNlY29uZFBhcnR9YCA/IFtcbiAgICAuLi5TcGxpdEluY2x1ZGluZ0RlbGltaXRlcnM8Rmlyc3RQYXJ0LCBEZWxpbWl0ZXI+LFxuICAgIFVzZWREZWxpbWl0ZXIsXG4gICAgLi4uU3BsaXRJbmNsdWRpbmdEZWxpbWl0ZXJzPFNlY29uZFBhcnQsIERlbGltaXRlcj5cbl0gOiBuZXZlciA6IG5ldmVyIDogbmV2ZXIgOiBbU291cmNlXTtcbi8qKlxuICogVW5saWtlIGEgc2ltcGxlciBzcGxpdCwgdGhpcyBvbmUgaW5jbHVkZXMgdGhlIGRlbGltaXRlciBzcGxpdHRlZCBvbiBpbiB0aGUgcmVzdWx0aW5nIGFycmF5IGxpdGVyYWwuIFRoaXMgaXMgdG8gZW5hYmxlIHNwbGl0dGluZyBvbiwgZm9yIGV4YW1wbGUsIHVwcGVyLWNhc2UgY2hhcmFjdGVycy5cbiAqXG4gKiBAY2F0ZWdvcnkgVGVtcGxhdGUgbGl0ZXJhbFxuICovXG5leHBvcnQgdHlwZSBTcGxpdEluY2x1ZGluZ0RlbGltaXRlcnM8U291cmNlIGV4dGVuZHMgc3RyaW5nLCBEZWxpbWl0ZXIgZXh0ZW5kcyBzdHJpbmc+ID0gU3BsaXRJbmNsdWRpbmdEZWxpbWl0ZXJzXzxVcHBlckNhc2VUb0xvd2VyQ2FzZTxTb3VyY2U+LCBEZWxpbWl0ZXI+O1xuLyoqXG4gKkZvcm1hdCBhIHNwZWNpZmljIHBhcnQgb2YgdGhlIHNwbGl0dGVkIHN0cmluZyBsaXRlcmFsIHRoYXQgYFN0cmluZ0FycmF5VG9EZWxpbWl0ZXJDYXNlPD5gIGZ1c2VzIHRvZ2V0aGVyLCBlbnN1cmluZyBkZXNpcmVkIGNhc2luZy5cbiAqXG4gKkBzZWUgU3RyaW5nQXJyYXlUb0RlbGltaXRlckNhc2VcbiAqL1xudHlwZSBTdHJpbmdQYXJ0VG9EZWxpbWl0ZXJDYXNlPFN0cmluZ1BhcnQgZXh0ZW5kcyBzdHJpbmcsIFN0YXJ0IGV4dGVuZHMgYm9vbGVhbiwgVXNlZFdvcmRTZXBhcmF0b3JzIGV4dGVuZHMgc3RyaW5nLCBVc2VkVXBwZXJDYXNlQ2hhcmFjdGVycyBleHRlbmRzIHN0cmluZywgRGVsaW1pdGVyIGV4dGVuZHMgc3RyaW5nPiA9IFN0cmluZ1BhcnQgZXh0ZW5kcyBVc2VkV29yZFNlcGFyYXRvcnMgPyBEZWxpbWl0ZXIgOiBTdGFydCBleHRlbmRzIHRydWUgPyBMb3dlcmNhc2U8U3RyaW5nUGFydD4gOiBTdHJpbmdQYXJ0IGV4dGVuZHMgVXNlZFVwcGVyQ2FzZUNoYXJhY3RlcnMgPyBgJHtEZWxpbWl0ZXJ9JHtMb3dlcmNhc2U8U3RyaW5nUGFydD59YCA6IFN0cmluZ1BhcnQ7XG4vKipcbiAqIFRha2VzIHRoZSByZXN1bHQgb2YgYSBzcGxpdHRlZCBzdHJpbmcgbGl0ZXJhbCBhbmQgcmVjdXJzaXZlbHkgY29uY2F0ZW5hdGVzIGl0IHRvZ2V0aGVyIGludG8gdGhlIGRlc2lyZWQgY2FzaW5nLlxuICpcbiAqIEl0IHJlY2VpdmVzIGBVc2VkV29yZFNlcGFyYXRvcnNgIGFuZCBgVXNlZFVwcGVyQ2FzZUNoYXJhY3RlcnNgIGFzIGlucHV0IHRvIGVuc3VyZSBpdCdzIGZ1bGx5IGVuY2Fwc3VsYXRlZC5cbiAqXG4gKiBAc2VlIFNwbGl0SW5jbHVkaW5nRGVsaW1pdGVyc1xuICovXG50eXBlIFN0cmluZ0FycmF5VG9EZWxpbWl0ZXJDYXNlPFBhcnRzIGV4dGVuZHMgcmVhZG9ubHkgYW55W10sIFN0YXJ0IGV4dGVuZHMgYm9vbGVhbiwgVXNlZFdvcmRTZXBhcmF0b3JzIGV4dGVuZHMgc3RyaW5nLCBVc2VkVXBwZXJDYXNlQ2hhcmFjdGVycyBleHRlbmRzIHN0cmluZywgRGVsaW1pdGVyIGV4dGVuZHMgc3RyaW5nPiA9IFBhcnRzIGV4dGVuZHMgW2Ake2luZmVyIEZpcnN0UGFydH1gLCAuLi5pbmZlciBSZW1haW5pbmdQYXJ0c10gPyBgJHtTdHJpbmdQYXJ0VG9EZWxpbWl0ZXJDYXNlPEZpcnN0UGFydCwgU3RhcnQsIFVzZWRXb3JkU2VwYXJhdG9ycywgVXNlZFVwcGVyQ2FzZUNoYXJhY3RlcnMsIERlbGltaXRlcj59JHtTdHJpbmdBcnJheVRvRGVsaW1pdGVyQ2FzZTxSZW1haW5pbmdQYXJ0cywgZmFsc2UsIFVzZWRXb3JkU2VwYXJhdG9ycywgVXNlZFVwcGVyQ2FzZUNoYXJhY3RlcnMsIERlbGltaXRlcj59YCA6IFBhcnRzIGV4dGVuZHMgW3N0cmluZ10gPyBzdHJpbmcgOiAnJztcbi8qKlxuICogQ29udmVydCBhIHN0cmluZyBsaXRlcmFsIHRvIGEgY3VzdG9tIHN0cmluZyBkZWxpbWl0ZXIgY2FzaW5nLlxuICpcbiAqIFRoaXMgY2FuIGJlIHVzZWZ1bCB3aGVuLCBmb3IgZXhhbXBsZSwgY29udmVydGluZyBhIGNhbWVsLWNhc2VkIG9iamVjdCBwcm9wZXJ0eSB0byBhbiBvZGRseSBjYXNlZCBvbmUuXG4gKlxuICogQHNlZSBLZWJhYkNhc2VcbiAqIEBzZWUgU25ha2VDYXNlXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYFxuICogaW1wb3J0IHR5cGUge0RlbGltaXRlckNhc2V9IGZyb20gJ3R5cGUtZmVzdCc7XG4gKlxuICogLy8gU2ltcGxlXG4gKlxuICogY29uc3Qgc29tZVZhcmlhYmxlOiBEZWxpbWl0ZXJDYXNlPCdmb29CYXInLCAnIyc+ID0gJ2ZvbyNiYXInO1xuICpcbiAqIC8vIEFkdmFuY2VkXG4gKlxuICogdHlwZSBPZGRseUNhc2VkUHJvcGVydGllczxUPiA9IHtcbiAqIFx0W0sgaW4ga2V5b2YgVCBhcyBEZWxpbWl0ZXJDYXNlPEssICcjJz5dOiBUW0tdXG4gKiB9O1xuICpcbiAqIGludGVyZmFjZSBTb21lT3B0aW9ucyB7XG4gKiBcdGRyeVJ1bjogYm9vbGVhbjtcbiAqIFx0aW5jbHVkZUZpbGU6IHN0cmluZztcbiAqIFx0Zm9vOiBudW1iZXI7XG4gKiB9XG4gKlxuICogY29uc3QgcmF3Q2xpT3B0aW9uczogT2RkbHlDYXNlZFByb3BlcnRpZXM8U29tZU9wdGlvbnM+ID0ge1xuICogXHQnZHJ5I3J1bic6IHRydWUsXG4gKiBcdCdpbmNsdWRlI2ZpbGUnOiAnYmFyLmpzJyxcbiAqIFx0Zm9vOiAxMjNcbiAqIH07XG4gKiBgYGBcbiAqXG4gKiBAY2F0ZWdvcnkgQ2hhbmdlIGNhc2VcbiAqIEBjYXRlZ29yeSBUZW1wbGF0ZSBsaXRlcmFsXG4gKi9cbmV4cG9ydCB0eXBlIERlbGltaXRlckNhc2U8VmFsdWUsIERlbGltaXRlciBleHRlbmRzIHN0cmluZz4gPSBzdHJpbmcgZXh0ZW5kcyBWYWx1ZSA/IFZhbHVlIDogVmFsdWUgZXh0ZW5kcyBzdHJpbmcgPyBTdHJpbmdBcnJheVRvRGVsaW1pdGVyQ2FzZTxTcGxpdEluY2x1ZGluZ0RlbGltaXRlcnM8VmFsdWUsIFdvcmRTZXBhcmF0b3JzIHwgVXBwZXJDYXNlQ2hhcmFjdGVycz4sIHRydWUsIFdvcmRTZXBhcmF0b3JzLCBVcHBlckNhc2VDaGFyYWN0ZXJzLCBEZWxpbWl0ZXI+IDogVmFsdWU7XG5leHBvcnQge307XG4iLCJpbXBvcnQgdHlwZSB7IERlbGltaXRlckNhc2UgfSBmcm9tICcuL2RlbGltaXRlckNhc2UnO1xuaW1wb3J0IHR5cGUgeyBOb25SZWN1cnNpdmVUeXBlIH0gZnJvbSAnLi9pbnRlcm5hbCc7XG5pbXBvcnQgdHlwZSB7IFVua25vd25BcnJheSB9IGZyb20gJy4vdW5rbm93bkFycmF5Jztcbi8qKlxuICogQ29udmVydCBvYmplY3QgcHJvcGVydGllcyB0byBkZWxpbWl0ZXIgY2FzZSByZWN1cnNpdmVseS5cbiAqXG4gKiBUaGlzIGNhbiBiZSB1c2VmdWwgd2hlbiwgZm9yIGV4YW1wbGUsIGNvbnZlcnRpbmcgc29tZSBBUEkgdHlwZXMgZnJvbSBhIGRpZmZlcmVudCBzdHlsZS5cbiAqXG4gKiBAc2VlIERlbGltaXRlckNhc2VcbiAqIEBzZWUgRGVsaW1pdGVyQ2FzZWRQcm9wZXJ0aWVzXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYFxuICogaW1wb3J0IHR5cGUge0RlbGltaXRlckNhc2VkUHJvcGVydGllc0RlZXB9IGZyb20gJ3R5cGUtZmVzdCc7XG4gKlxuICogaW50ZXJmYWNlIFVzZXIge1xuICogXHR1c2VySWQ6IG51bWJlcjtcbiAqIFx0dXNlck5hbWU6IHN0cmluZztcbiAqIH1cbiAqXG4gKiBpbnRlcmZhY2UgVXNlcldpdGhGcmllbmRzIHtcbiAqIFx0dXNlckluZm86IFVzZXI7XG4gKiBcdHVzZXJGcmllbmRzOiBVc2VyW107XG4gKiB9XG4gKlxuICogY29uc3QgcmVzdWx0OiBEZWxpbWl0ZXJDYXNlZFByb3BlcnRpZXNEZWVwPFVzZXJXaXRoRnJpZW5kcywgJy0nPiA9IHtcbiAqIFx0J3VzZXItaW5mbyc6IHtcbiAqIFx0J3VzZXItaWQnOiAxLFxuICogXHRcdCd1c2VyLW5hbWUnOiAnVG9tJyxcbiAqIFx0fSxcbiAqIFx0J3VzZXItZnJpZW5kcyc6IFtcbiAqIFx0XHR7XG4gKiBcdFx0XHQndXNlci1pZCc6IDIsXG4gKiBcdFx0XHQndXNlci1uYW1lJzogJ0plcnJ5JyxcbiAqIFx0XHR9LFxuICogXHRcdHtcbiAqIFx0XHRcdCd1c2VyLWlkJzogMyxcbiAqIFx0XHRcdCd1c2VyLW5hbWUnOiAnU3Bpa2UnLFxuICogXHRcdH0sXG4gKiBcdF0sXG4gKiB9O1xuICogYGBgXG4gKlxuICogQGNhdGVnb3J5IENoYW5nZSBjYXNlXG4gKiBAY2F0ZWdvcnkgVGVtcGxhdGUgbGl0ZXJhbFxuICogQGNhdGVnb3J5IE9iamVjdFxuICovXG5leHBvcnQgdHlwZSBEZWxpbWl0ZXJDYXNlZFByb3BlcnRpZXNEZWVwPFZhbHVlLCBEZWxpbWl0ZXIgZXh0ZW5kcyBzdHJpbmc+ID0gVmFsdWUgZXh0ZW5kcyBOb25SZWN1cnNpdmVUeXBlID8gVmFsdWUgOiBWYWx1ZSBleHRlbmRzIFVua25vd25BcnJheSA/IERlbGltaXRlckNhc2VkUHJvcGVydGllc0FycmF5RGVlcDxWYWx1ZSwgRGVsaW1pdGVyPiA6IFZhbHVlIGV4dGVuZHMgU2V0PGluZmVyIFU+ID8gU2V0PERlbGltaXRlckNhc2VkUHJvcGVydGllc0RlZXA8VSwgRGVsaW1pdGVyPj4gOiB7XG4gICAgW0sgaW4ga2V5b2YgVmFsdWUgYXMgRGVsaW1pdGVyQ2FzZTxLLCBEZWxpbWl0ZXI+XTogRGVsaW1pdGVyQ2FzZWRQcm9wZXJ0aWVzRGVlcDxWYWx1ZVtLXSwgRGVsaW1pdGVyPjtcbn07XG50eXBlIERlbGltaXRlckNhc2VkUHJvcGVydGllc0FycmF5RGVlcDxWYWx1ZSBleHRlbmRzIFVua25vd25BcnJheSwgRGVsaW1pdGVyIGV4dGVuZHMgc3RyaW5nPiA9IFZhbHVlIGV4dGVuZHMgW10gPyBbXSA6IFZhbHVlIGV4dGVuZHMgW2luZmVyIFUsIC4uLmluZmVyIFZdID8gW0RlbGltaXRlckNhc2VkUHJvcGVydGllc0RlZXA8VSwgRGVsaW1pdGVyPiwgLi4uRGVsaW1pdGVyQ2FzZWRQcm9wZXJ0aWVzRGVlcDxWLCBEZWxpbWl0ZXI+XSA6IFZhbHVlIGV4dGVuZHMgcmVhZG9ubHkgW2luZmVyIFUsIC4uLmluZmVyIFZdID8gcmVhZG9ubHkgW1xuICAgIERlbGltaXRlckNhc2VkUHJvcGVydGllc0RlZXA8VSwgRGVsaW1pdGVyPixcbiAgICAuLi5EZWxpbWl0ZXJDYXNlZFByb3BlcnRpZXNEZWVwPFYsIERlbGltaXRlcj5cbl0gOiBWYWx1ZSBleHRlbmRzIHJlYWRvbmx5IFsuLi5pbmZlciBVLCBpbmZlciBWXSA/IFtcbiAgICAuLi5EZWxpbWl0ZXJDYXNlZFByb3BlcnRpZXNEZWVwPFUsIERlbGltaXRlcj4sXG4gICAgRGVsaW1pdGVyQ2FzZWRQcm9wZXJ0aWVzRGVlcDxWLCBEZWxpbWl0ZXI+XG5dIDogVmFsdWUgZXh0ZW5kcyByZWFkb25seSBbLi4uaW5mZXIgVSwgaW5mZXIgVl0gPyByZWFkb25seSBbXG4gICAgLi4uRGVsaW1pdGVyQ2FzZWRQcm9wZXJ0aWVzRGVlcDxVLCBEZWxpbWl0ZXI+LFxuICAgIERlbGltaXRlckNhc2VkUHJvcGVydGllc0RlZXA8ViwgRGVsaW1pdGVyPlxuXSA6IFZhbHVlIGV4dGVuZHMgQXJyYXk8aW5mZXIgVT4gPyBBcnJheTxEZWxpbWl0ZXJDYXNlZFByb3BlcnRpZXNEZWVwPFUsIERlbGltaXRlcj4+IDogVmFsdWUgZXh0ZW5kcyBSZWFkb25seUFycmF5PGluZmVyIFU+ID8gUmVhZG9ubHlBcnJheTxEZWxpbWl0ZXJDYXNlZFByb3BlcnRpZXNEZWVwPFUsIERlbGltaXRlcj4+IDogbmV2ZXI7XG5leHBvcnQge307XG4iLCJpbXBvcnQgdHlwZSB7IERlbGltaXRlckNhc2VkUHJvcGVydGllc0RlZXAgfSBmcm9tICcuL2RlbGltaXRlckNhc2VkUHJvcGVydGllc0RlZXAnO1xuLyoqXG4gKiBDb252ZXJ0IG9iamVjdCBwcm9wZXJ0aWVzIHRvIHNuYWtlIGNhc2UgcmVjdXJzaXZlbHkuXG4gKlxuICogVGhpcyBjYW4gYmUgdXNlZnVsIHdoZW4sIGZvciBleGFtcGxlLCBjb252ZXJ0aW5nIHNvbWUgQVBJIHR5cGVzIGZyb20gYSBkaWZmZXJlbnQgc3R5bGUuXG4gKlxuICogQHNlZSBTbmFrZUNhc2VcbiAqIEBzZWUgU25ha2VDYXNlZFByb3BlcnRpZXNcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgXG4gKiBpbXBvcnQgdHlwZSB7U25ha2VDYXNlZFByb3BlcnRpZXNEZWVwfSBmcm9tICd0eXBlLWZlc3QnO1xuICpcbiAqIGludGVyZmFjZSBVc2VyIHtcbiAqIFx0dXNlcklkOiBudW1iZXI7XG4gKiBcdHVzZXJOYW1lOiBzdHJpbmc7XG4gKiB9XG4gKlxuICogaW50ZXJmYWNlIFVzZXJXaXRoRnJpZW5kcyB7XG4gKiBcdHVzZXJJbmZvOiBVc2VyO1xuICogXHR1c2VyRnJpZW5kczogVXNlcltdO1xuICogfVxuICpcbiAqIGNvbnN0IHJlc3VsdDogU25ha2VDYXNlZFByb3BlcnRpZXNEZWVwPFVzZXJXaXRoRnJpZW5kcz4gPSB7XG4gKiBcdHVzZXJfaW5mbzoge1xuICogXHRcdHVzZXJfaWQ6IDEsXG4gKiBcdFx0dXNlcl9uYW1lOiAnVG9tJyxcbiAqIFx0fSxcbiAqIFx0dXNlcl9mcmllbmRzOiBbXG4gKiBcdFx0e1xuICogXHRcdFx0dXNlcl9pZDogMixcbiAqIFx0XHRcdHVzZXJfbmFtZTogJ0plcnJ5JyxcbiAqIFx0XHR9LFxuICogXHRcdHtcbiAqIFx0XHRcdHVzZXJfaWQ6IDMsXG4gKiBcdFx0XHR1c2VyX25hbWU6ICdTcGlrZScsXG4gKiBcdFx0fSxcbiAqIFx0XSxcbiAqIH07XG4gKiBgYGBcbiAqXG4gKiBAY2F0ZWdvcnkgQ2hhbmdlIGNhc2VcbiAqIEBjYXRlZ29yeSBUZW1wbGF0ZSBsaXRlcmFsXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKi9cbmV4cG9ydCB0eXBlIFNuYWtlQ2FzZWRQcm9wZXJ0aWVzRGVlcDxWYWx1ZT4gPSBEZWxpbWl0ZXJDYXNlZFByb3BlcnRpZXNEZWVwPFZhbHVlLCAnXyc+O1xuIiwiLyoqXG4gKiBHZW5lcmljIHV0aWxpdHkgdG8gdHJhbnNmb3JtIHNuYWtlX2Nhc2Ugb2JqZWN0IGtleXMgdG8gY2FtZWxDYXNlIGF0IHJ1bnRpbWUuXG4gKiBUaGlzIGlzIHRoZSBydW50aW1lIGVxdWl2YWxlbnQgb2YgdGhlIENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcCB0eXBlIHV0aWxpdHkuXG4gKi9cbi8qKlxuICogUmVjdXJzaXZlbHkgdHJhbnNmb3JtcyBhbGwgb2JqZWN0IGtleXMgZnJvbSBzbmFrZV9jYXNlIHRvIGNhbWVsQ2FzZVxuICovXG5leHBvcnQgZGVjbGFyZSBjb25zdCB0cmFuc2Zvcm1TbmFrZVRvQ2FtZWw6IChvYmo6IHVua25vd24pID0+IHVua25vd247XG4vKipcbiAqIFJlY3Vyc2l2ZWx5IHRyYW5zZm9ybXMgYWxsIG9iamVjdCBrZXlzIGZyb20gY2FtZWxDYXNlIHRvIHNuYWtlX2Nhc2VcbiAqL1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgdHJhbnNmb3JtQ2FtZWxUb1NuYWtlOiAob2JqOiB1bmtub3duKSA9PiB1bmtub3duO1xuIiwiaW1wb3J0IHsgRnVsZmlsbG1lbnREaXNwbGF5U3RhdHVzIH0gZnJvbSAnQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50Jztcbi8qKlxuICogQ29udmVydHMgYSBzdHJpbmcgdG8gYSBGdWxmaWxsbWVudERpc3BsYXlTdGF0dXMgZW51bSB2YWx1ZS5cbiAqXG4gKiBAcGFyYW0gc3RhdHVzIC0gVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICpcbiAqIEByZXR1cm5zIFRoZSBGdWxmaWxsbWVudERpc3BsYXlTdGF0dXMgZW51bSB2YWx1ZSBvciB1bmRlZmluZWQgaWYgdGhlIHN0cmluZ1xuICogZG9lcyBub3QgbWFwIHRvIGEgdmFsaWQgZW51bVxuICovXG5leHBvcnQgZGVjbGFyZSBjb25zdCBzdHJpbmdUb0Z1bGZpbGxtZW50RGlzcGxheVN0YXR1c0VudW1WYWx1ZTogKHN0YXR1czogc3RyaW5nKSA9PiBGdWxmaWxsbWVudERpc3BsYXlTdGF0dXMgfCB1bmRlZmluZWQ7XG4iLCJpbXBvcnQgeyBDb2xvck1hcHBpbmcgfSBmcm9tIFwic3JjL2FwcGxpY2F0aW9uL21vZGVscy9jb2xvcnNDb25maWdcIjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHZhbGlkYXRlR3JhcGhRTENvbG9yc0NvbmZpZzogKGRhdGE6IHVua25vd24pID0+IENvbG9yTWFwcGluZyB8IHVuZGVmaW5lZDtcbiIsImltcG9ydCB7IEZyb250ZW5kQ29uZmlnIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9mcm9udGVuZENvbmZpZyc7XG5pbXBvcnQgeyBXaWRnZXRDb25maWcsIFBhZ2VWYXJpYW50Q29uZmlnLCBXaWRnZXRNb3VudGluZ0NvbmZpZyB9IGZyb20gJ3NyYy9jb250ZXh0cy90eXBlcyc7XG5leHBvcnQgZGVjbGFyZSBjb25zdCB2YWxpZGF0ZUFuZFRyYW5zZm9ybVBhZ2VWYXJpYW50czogKGNvbmZpZzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IFBhZ2VWYXJpYW50Q29uZmlnO1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgdmFsaWRhdGVBbmRUcmFuc2Zvcm1Nb3VudGluZ0NvbmZpZzogKGNvbmZpZzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGNvbmZpZ0tleTogc3RyaW5nKSA9PiBXaWRnZXRNb3VudGluZ0NvbmZpZztcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHZhbGlkYXRlQW5kVHJhbnNmb3JtV2lkZ2V0Q29uZmlnOiAoY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgY29uZmlnS2V5OiBzdHJpbmcpID0+IFdpZGdldENvbmZpZztcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHZhbGlkYXRlR3JhcGhRTEZyb250ZW5kQ29uZmlnOiAoZGF0YTogdW5rbm93bikgPT4gRnJvbnRlbmRDb25maWcgfCB1bmRlZmluZWQ7XG4iLCJleHBvcnQgZGVjbGFyZSBjb25zdCB2YWxpZGF0ZUdyYXBoUUxPcmdJZDogKGRhdGE6IHVua25vd24pID0+IHN0cmluZyB8IHVuZGVmaW5lZDtcbiIsImltcG9ydCB7IE1vYmlsZVBMUENoYXRQbGFjZW1lbnRQYXJhbWV0ZXIgfSBmcm9tICcuLi9tb2JpbGVQTFBDaGF0UGxhY2VtZW50UGFyYW1ldGVyJztcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHZhbGlkYXRlTW9iaWxlUExQQ2hhdFBsYWNlbWVudFBhcmFtZXRlcjogKHZhbHVlOiB1bmtub3duKSA9PiBNb2JpbGVQTFBDaGF0UGxhY2VtZW50UGFyYW1ldGVyIHwgdW5kZWZpbmVkO1xuIiwiaW1wb3J0IHsgT3JnYW5pemF0aW9uQ29uZmlnIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvb3JnYW5pemF0aW9uQ29uZmlnJztcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHZhbGlkYXRlT3JnYW5pemF0aW9uQ29uZmlnOiAoZGF0YTogdW5rbm93bikgPT4gT3JnYW5pemF0aW9uQ29uZmlnIHwgdW5kZWZpbmVkO1xuIiwiaW1wb3J0IHsgT3JnQ29uZmlnIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvb3JnQ29uZmlnUmVzdWx0cyc7XG4vKipcbiAqXG4gKiBAcGFyYW0gZGF0YVxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgdmFsaWRhdGVPcmdDb25maWdSZXN1bHRzOiAoZGF0YTogdW5rbm93bikgPT4gT3JnQ29uZmlnIHwgdW5kZWZpbmVkO1xuIiwiaW1wb3J0IHsgUmVzcG9uc2UgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2luZGV4JztcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHZhbGlkYXRlUmVzcG9uc2U6IChkYXRhOiB1bmtub3duKSA9PiBSZXNwb25zZSB8IHVuZGVmaW5lZDtcbiIsImltcG9ydCB7IFN1Z2dlc3Rpb24gfSBmcm9tICcuLi9hcGkvc3VnZ2VzdGlvbic7XG5leHBvcnQgZGVjbGFyZSBjb25zdCB2YWxpZGF0ZVN1Z2dlc3Rpb246IChkYXRhOiB1bmtub3duKSA9PiBTdWdnZXN0aW9uIHwgdW5kZWZpbmVkO1xuIiwiaW1wb3J0IHsgVXNlckV2ZW50IH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9pbmRleCc7XG5leHBvcnQgZGVjbGFyZSBjb25zdCB2YWxpZGF0ZVVzZXJFdmVudDogKGRhdGE6IHVua25vd24pID0+IFVzZXJFdmVudCB8IHVuZGVmaW5lZDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxJQUFJLGNBQWMsQ0FBQyxJQUFHOzs7O0FDQXRCLElBQUksZ0JBQWdCLENBQUMsSUFBRzs7OztBQ0F4QixJQUFXLDBCQUEwQixDQUFDLElBQUE7Ozs7QUNBdEMsSUFBRSxxQkFBQTtDQUFBO09BQUE7T0FBQTtDQUFBO0FBQ0YsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJO0FBQzNCLElBQUUsbUJBQUEsQ0FBQSxJQUFBO0FBQ0YsSUFBVyxtQkFBbUI7Q0FBQztPQUFLO09BQUE7Q0FBQTtBQUNwQyxJQUFXLG9CQUFNO0NBQUE7T0FBQTtPQUFBO0NBQUE7Ozs7QUNKakIsSUFBSSxrQ0FBa0MsQ0FBQyxJQUFJOzs7O0FDQTNDLElBQUkseUJBQXlCLENBQUMsSUFBSTs7OztBQ0FsQyxJQUFXLGtCQUFrQixDQUFDLElBQUk7Ozs7QUNBbEMsSUFBSSx3QkFBd0IsQ0FBQyxJQUFJOzs7O0FDRWpDLElBQVcsY0FBYyxDQUFDLElBQUk7QUFDOUIsSUFBVyxjQUFNLENBQUEsSUFBQTtBQUNqQixJQUFXLFVBQVU7Q0FBQztPQUFJO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtDQUFBO0FBQzFCLElBQUEscUJBQUE7Q0FBQTtPQUFBLFlBQUE7T0FBQTtDQUFBO0FBQ0EsSUFBSSwwQkFBMEIsQ0FBQyxXQUFDLFlBQUEsZ0JBQUE7QUFDaEMsSUFBSSxzQkFBYTtDQUFBO09BQUEsWUFBQTtPQUFBO0NBQUE7QUFDakIsSUFBSSxxQkFBcUI7Q0FBQztPQUFXLFlBQU87T0FBQTtDQUFBO0FBQzVDLElBQUksNEJBQW1CLENBQUEsV0FBQSxZQUFBLGtCQUFBO0FBQ3ZCLElBQVcseUJBQXlCO0NBQUE7T0FBQSxZQUFBO09BQUE7Q0FBQTtBQUNwQyxJQUFXLCtCQUFVO0NBQUE7T0FBQSxZQUFBO09BQUE7Q0FBQTtBQUNyQixJQUFJLHdCQUF3QjtDQUFDO09BQUMsWUFBQTtPQUFBO0NBQUE7QUFDOUIsSUFBSSwyQkFBdUIsQ0FBQSxXQUFBLFlBQUEsVUFBQTtBQUMzQixJQUFJLHNCQUFhO0NBQUE7T0FBQSxZQUFBO09BQUE7Q0FBQTtBQUNqQixJQUFJLHdCQUFpQjtDQUFBO09BQUEsWUFBQTtPQUFBO0NBQUE7QUFDckIsSUFBSSw4QkFBeUI7Q0FBQTtPQUFBLFlBQUE7T0FBQTtDQUFBO0FBQzdCLElBQVcsWUFBWSxDQUFDLFdBQVcsd0JBQU07QUFDekMsSUFBSSxzQkFBYTtDQUFBO09BQUEsWUFBQTtPQUFBO09BQUE7Q0FBQTtBQUNqQixJQUFJLHVCQUFlO0NBQUE7T0FBQSxZQUFBO09BQUE7Q0FBQTs7OztBQ25CbkIsSUFBVyxrQ0FBa0MsQ0FBQyxJQUFHOzs7O0FDQWpELElBQVcsZUFBZSxDQUFDLElBQUk7Ozs7QUNBL0IsSUFBVyxvQkFBb0IsQ0FBQyxJQUFJOzs7O0FDQXBDLElBQVcsNkJBQTZCLENBQUMsSUFBRzs7OztBQ0E1QyxJQUFFLGdCQUFBLENBQUEsSUFBQTs7OztBQ0VGLElBQVcsbUJBQW1CO0NBQUM7T0FBQTtPQUFBO09BQUE7Q0FBQTtBQUMvQixJQUFXLGFBQVU7Q0FBQTtPQUFBO09BQUE7Q0FBQTs7OztBQ0RyQixJQUFXLFlBQVU7Q0FBQztPQUFXO09BQWtCO0NBQW1COzs7O0FDQXRFLElBQVcscUJBQW1CO0NBQUM7T0FBVztPQUEyQjtDQUFtQjs7OztBQ0F4RixJQUFXLGtCQUFnQjtDQUFDO09BQVc7T0FBd0I7Q0FBbUI7QUFDbEYsSUFBQSxrQkFBQTtDQUFBO09BQUE7T0FBQTtDQUFBO0FBQ0EsSUFBVyxxQkFBbUI7Q0FBQztPQUFXO09BQTJCO0NBQWE7QUFDbEYsSUFBQSx5QkFBQTtDQUFBO09BQUE7T0FBQTtDQUFBO0FBQ0EsSUFBVyw0QkFBMEI7Q0FBQztPQUFXO09BQWM7Q0FBUztBQUN4RSxJQUFBLHNCQUFBLENBQUEsV0FBQSxrQkFBQTtBQUNBLElBQVcsZ0NBQThCO0NBQUM7T0FBVztPQUFzQztDQUFLO0FBQ2hHLElBQUEsc0JBQUE7Q0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtDQUFBO0FBQ0EsSUFBVyxlQUFlO0NBQUM7T0FBVyxrQkFBRztPQUFBLGtCQUFBO09BQUE7Q0FBQTtBQUN6QyxJQUFXLGVBQWU7Q0FBQztPQUFXLGtCQUFHO09BQUE7Q0FBQTtBQUN6QyxJQUFXLHNCQUFlO0NBQUE7T0FBQSxrQkFBQTtPQUFBO0NBQUE7QUFDMUIsSUFBVyxrQkFBVztDQUFBO09BQUEsa0JBQUE7T0FBQTtDQUFBO0FBQ3RCLElBQUEsOEJBQUE7Q0FBQTtPQUFBLGtCQUFBO09BQUE7Q0FBQTtBQUNBLElBQVcscUJBQXFCLENBQUMsV0FBSSxrQkFBQSxVQUFBO0FBQ3JDLElBQVcsbUJBQUksQ0FBQSxXQUFBLGtCQUFBLFlBQUE7QUFDZixJQUFXLGlCQUFpQjtDQUFDO09BQVcsa0JBQUE7T0FBQTtDQUFBO0FBQ3hDLElBQUEsZ0JBQUE7Q0FBQTtPQUFBLGtCQUFBO09BQUE7Q0FBQTtBQUNBLElBQVcsY0FBWTtDQUFDO09BQVc7T0FBb0I7T0FBWTtPQUFnQztPQUFXO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7Q0FBQTs7OztBQ2hCOUcsSUFBVyx1QkFBcUI7Q0FBQztPQUFHO09BQUE7T0FBQTtPQUFBO0NBQUE7Ozs7QUNEcEMsSUFBVywwQkFBd0I7Q0FBQztPQUFXO09BQWdDO0NBQW1CO0FBQ2xHLElBQUEsb0NBQUE7Q0FBQTtPQUFBO09BQUE7Q0FBQTtBQUNBLElBQVcsZUFBZSxDQUFDLFdBQVcsc0JBQXNCO0FBQzVELElBQUEsZUFBQSxDQUFBLElBQUE7Ozs7QUNIQSxJQUFXLGVBQWE7Q0FBQztPQUFXO09BQXFCO0NBQW1COzs7O0FDQTVFLElBQVcsMEJBQXdCO0NBQUM7T0FBRztPQUFBO0NBQUE7Ozs7QUNGdkMsSUFBSSx3QkFBd0IsQ0FBQyxJQUFJOzs7O0FDQ2pDLElBQUUsdUJBQUEsQ0FBQSxXQUFBLG1CQUFBOzs7O0FDQUYsSUFBRSxzQkFBQSxDQUFBLFdBQUEsa0JBQUE7Ozs7QUNBRixJQUFFLDJCQUFBLENBQUEsV0FBQSxpQkFBQTs7OztBQ0RGLElBQUksa0NBQWtDLENBQUMsSUFBRztBQUMxQyxJQUFXLG9DQUFVLENBQUEsV0FBQSxnQ0FBQTs7OztBQ0FyQixJQUFXLCtCQUErQixDQUFDLFdBQVcsMkJBQTJCOzs7O0FDQWpGLElBQUUsZ0JBQUEsQ0FBQSxXQUFBLFlBQUE7Ozs7QUNERixJQUFFLG9CQUFBO0NBQUE7T0FBQTtPQUFBO0NBQUE7Ozs7QUNDRixJQUFFLDhCQUFBLENBQUEsV0FBQSwwQkFBQTs7OztBQ0FGLElBQVcsdUNBQXVDLENBQUMsV0FBVyx3QkFBd0I7Ozs7QUNBdEYsSUFBVyxtQkFBbUI7Q0FBQztPQUFXO09BQXFCO0NBQUs7QUFDcEUsSUFBVyw2QkFBYztDQUFBO09BQUE7T0FBQTtPQUFBO0NBQUE7QUFDekIsSUFBVywrQkFBdUIsQ0FBQSxXQUFBLDJCQUFBOzs7O0FDRmxDLElBQUksaUNBQWlDLENBQUMsSUFBRztBQUN6QyxJQUFJLHVDQUErQixDQUFBLElBQUE7QUFDbkMsSUFBSSx1Q0FBa0MsQ0FBQSxJQUFBO0FBQ3RDLElBQUksd0JBQXdCO0NBQUM7T0FBQTtPQUFBO09BQUE7Q0FBQTtBQUM3QixJQUFBLHdCQUFBO0NBQUE7T0FBQTtPQUFBO0NBQUE7QUFDQSxJQUFXLDBCQUEwQixDQUFDLFdBQVMsc0JBQUE7Ozs7QUNKL0MsSUFBSSxzQkFBc0I7Q0FBQztPQUFHO09BQUE7T0FBQTtPQUFBO0NBQUE7QUFDOUIsSUFBVyx3QkFBd0I7Q0FBQztPQUFBO09BQUE7Q0FBQTs7OztBQ0ZwQyxJQUFXLDhCQUE4QixDQUFDLFdBQVcsMEJBQTBCOzs7O0FDQS9FLElBQVcsc0JBQXNCLENBQUMsV0FBVyxnQkFBZ0I7QUFDN0QsSUFBVywwQkFBMEIsQ0FBQyxXQUFXLGNBQWM7Ozs7QUNEL0QsSUFBVyw2Q0FBNkMsQ0FBQyxXQUFXLHNDQUFzQzs7OztBQ0ExRyxJQUFXLHdCQUF3QixDQUFDLFdBQVcsMkJBQTJCOzs7O0FDQTFFLElBQUksdUJBQXVCO0NBQUM7T0FBVztPQUFTO09BQVM7T0FBaUI7T0FBUztPQUFJO0NBQUE7QUFDdkYsSUFBSSw0QkFBNEI7Q0FBQztPQUFXO09BQWM7T0FBYztPQUFpQjtPQUFjO09BQWlCO09BQWtCO09BQXFCO09BQWlCO09BQWM7T0FBcUI7T0FBaUI7T0FBaUI7T0FBZ0M7T0FBcUI7T0FBa0I7T0FBaUI7T0FBaUI7Q0FBQTtBQUM5VixJQUFXLDJCQUEyQjtDQUFDO09BQVc7T0FBRztPQUFBO09BQUE7Q0FBQTtBQUNyRCxJQUFJLDRCQUFhO0NBQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7Q0FBQTtBQUNqQixJQUFJLDZCQUE2QjtDQUFDO09BQVc7T0FBUTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7Q0FBQTtBQUNyRCxJQUFXLGdCQUFnQjtDQUFDO09BQVE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO0NBQUE7Ozs7QUNIcEMsSUFBRSwrQkFBQTtDQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7Q0FBQTtBQUNGLElBQUksb0NBQW9DO0NBQUM7T0FBVztPQUFNO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7Q0FBQTs7OztBQ0gxRCxJQUFFLDJCQUFBO0NBQUE7T0FBQTtPQUFBO0NBQUE7Ozs7QUNERixJQUFFLHdCQUFBLENBQUEsSUFBQTtBQUNGLElBQVcsd0JBQXdCLENBQUMsSUFBSTs7OztBQ0F4QyxJQUFFLDRDQUFBLENBQUEsV0FBQSx5QkFBQTs7OztBQ0FGLElBQVcsOEJBQThCLENBQUMsV0FBVyxhQUFhOzs7O0FDQ2xFLElBQVcsbUNBQW1DO0NBQUM7T0FBVztPQUFjO0NBQWtCO0FBQzFGLElBQVcscUNBQXFDO0NBQUM7T0FBVztPQUFjO0NBQXFCO0FBQy9GLElBQVcsbUNBQW1DO0NBQUM7T0FBVztPQUFjO0NBQWE7QUFDckYsSUFBVyxnQ0FBZ0MsQ0FBQyxXQUFXLGVBQWU7Ozs7QUNMdEUsSUFBVyx1QkFBdUIsQ0FBQyxJQUFJOzs7O0FDQ3ZDLElBQVcsMENBQTBDLENBQUMsV0FBVyxnQ0FBZ0M7Ozs7QUNBakcsSUFBVyw2QkFBNkIsQ0FBQyxXQUFXLHFCQUFtQjs7OztBQ0F2RSxJQUFFLDJCQUFBLENBQUEsV0FBQSxVQUFBOzs7O0FDQUYsSUFBVyxtQkFBbUIsQ0FBQyxXQUFXLFdBQVM7Ozs7QUNBbkQsSUFBVyxxQkFBcUIsQ0FBQyxXQUFXLGFBQVc7Ozs7QUNBdkQsSUFBVyxvQkFBb0IsQ0FBQyxXQUFXLFlBQVUifQ==
|