@infrab4a/connect-angular 6.0.0-alpha.0 → 6.0.0-alpha.1
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/angular-connect.module.d.ts +36 -0
- package/angular-elastic-search.module.d.ts +9 -0
- package/angular-firebase-auth.module.d.ts +11 -0
- package/angular-firestore.module.d.ts +17 -0
- package/angular-hasura-graphql.module.d.ts +14 -0
- package/angular-vertex-search.module.d.ts +9 -0
- package/consts/backend-url.const.d.ts +1 -0
- package/consts/category-structure.d.ts +1 -0
- package/consts/default-shop.const.d.ts +1 -0
- package/consts/es-config.const.d.ts +1 -0
- package/consts/firebase-const.d.ts +4 -0
- package/consts/hasura-options.const.d.ts +1 -0
- package/consts/index.d.ts +8 -0
- package/consts/persistence.const.d.ts +1 -0
- package/consts/storage-base-url.const.d.ts +1 -0
- package/consts/vertex-config.const.d.ts +1 -0
- package/esm2020/angular-connect.module.mjs +289 -0
- package/esm2020/angular-elastic-search.module.mjs +34 -0
- package/esm2020/angular-firebase-auth.module.mjs +141 -0
- package/esm2020/angular-firestore.module.mjs +541 -0
- package/esm2020/angular-hasura-graphql.module.mjs +333 -0
- package/esm2020/angular-vertex-search.module.mjs +34 -0
- package/esm2020/consts/backend-url.const.mjs +2 -0
- package/esm2020/consts/category-structure.mjs +2 -0
- package/esm2020/consts/default-shop.const.mjs +2 -0
- package/esm2020/consts/es-config.const.mjs +2 -0
- package/esm2020/consts/firebase-const.mjs +5 -0
- package/esm2020/consts/hasura-options.const.mjs +2 -0
- package/esm2020/consts/index.mjs +9 -0
- package/esm2020/consts/persistence.const.mjs +2 -0
- package/esm2020/consts/storage-base-url.const.mjs +2 -0
- package/esm2020/consts/vertex-config.const.mjs +2 -0
- package/esm2020/helpers/index.mjs +2 -0
- package/esm2020/helpers/mobile-operation-system-checker.helper.mjs +7 -0
- package/esm2020/index.mjs +7 -0
- package/esm2020/infrab4a-connect-angular.mjs +5 -0
- package/esm2020/interfaces/catalog-strategies.interface.mjs +2 -0
- package/esm2020/interfaces/category-facades.interface.mjs +2 -0
- package/esm2020/interfaces/index.mjs +3 -0
- package/esm2020/persistence/cookie-data-persistence.mjs +22 -0
- package/esm2020/persistence/data-persistence.mjs +2 -0
- package/esm2020/persistence/index.mjs +3 -0
- package/esm2020/services/auth.service.mjs +37 -0
- package/esm2020/services/cart/cart-services.facade.mjs +21 -0
- package/esm2020/services/cart/index.mjs +2 -0
- package/esm2020/services/cart.service.mjs +73 -0
- package/esm2020/services/catalog/adapters/category-structure.adapter.mjs +2 -0
- package/esm2020/services/catalog/adapters/index.mjs +4 -0
- package/esm2020/services/catalog/adapters/new-category-structure.adapter.mjs +43 -0
- package/esm2020/services/catalog/adapters/old-category-structure.adapter.mjs +23 -0
- package/esm2020/services/catalog/catalog.service.mjs +111 -0
- package/esm2020/services/catalog/category.service.mjs +39 -0
- package/esm2020/services/catalog/context/catalog-search.context.mjs +40 -0
- package/esm2020/services/catalog/enums/index.mjs +2 -0
- package/esm2020/services/catalog/enums/product-sorts.enum.mjs +11 -0
- package/esm2020/services/catalog/facades/catalog-service.facade.mjs +32 -0
- package/esm2020/services/catalog/facades/catalog-strategies.facade.mjs +17 -0
- package/esm2020/services/catalog/facades/category-repository.facade.mjs +20 -0
- package/esm2020/services/catalog/facades/category-service.facade.mjs +30 -0
- package/esm2020/services/catalog/facades/index.mjs +6 -0
- package/esm2020/services/catalog/facades/product-catalog.facade.mjs +21 -0
- package/esm2020/services/catalog/helpers/brand-manager.helper.mjs +57 -0
- package/esm2020/services/catalog/helpers/catalog-filter.helper.mjs +44 -0
- package/esm2020/services/catalog/helpers/catalog-sort.helper.mjs +52 -0
- package/esm2020/services/catalog/helpers/index.mjs +5 -0
- package/esm2020/services/catalog/helpers/product-fields.helper.mjs +39 -0
- package/esm2020/services/catalog/index.mjs +8 -0
- package/esm2020/services/catalog/models/category-with-tree.model.mjs +10 -0
- package/esm2020/services/catalog/models/index.mjs +2 -0
- package/esm2020/services/catalog/services/catalog-helpers.service.mjs +33 -0
- package/esm2020/services/catalog/services/catalog-operations.facade.mjs +26 -0
- package/esm2020/services/catalog/services/catalog-repository.service.mjs +25 -0
- package/esm2020/services/catalog/services/index.mjs +5 -0
- package/esm2020/services/catalog/services/product-management.facade.mjs +25 -0
- package/esm2020/services/catalog/strategies/category-search.strategy.mjs +133 -0
- package/esm2020/services/catalog/strategies/index.mjs +4 -0
- package/esm2020/services/catalog/strategies/profile-search.strategy.mjs +42 -0
- package/esm2020/services/catalog/strategies/term-search.strategy.mjs +126 -0
- package/esm2020/services/catalog/strategies/types/strategy-params.type.mjs +2 -0
- package/esm2020/services/catalog/types/fetch-products-options.type.mjs +2 -0
- package/esm2020/services/catalog/types/fetch-products-params.type.mjs +2 -0
- package/esm2020/services/catalog/types/fetch-products-response.type.mjs +2 -0
- package/esm2020/services/catalog/types/index.mjs +6 -0
- package/esm2020/services/catalog/types/method-params.type.mjs +2 -0
- package/esm2020/services/catalog/types/product-sort.type.mjs +2 -0
- package/esm2020/services/catalog/wishlist.service.mjs +255 -0
- package/esm2020/services/checkout/checkout-dependencies.facade.mjs +20 -0
- package/esm2020/services/checkout/checkout-repositories.facade.mjs +20 -0
- package/esm2020/services/checkout/index.mjs +3 -0
- package/esm2020/services/checkout-subscription.service.mjs +55 -0
- package/esm2020/services/checkout.service.mjs +106 -0
- package/esm2020/services/coupon/coupon-repositories.facade.mjs +24 -0
- package/esm2020/services/coupon/index.mjs +2 -0
- package/esm2020/services/coupon/types/coupon-params.type.mjs +2 -0
- package/esm2020/services/coupon.service.mjs +248 -0
- package/esm2020/services/helpers/index.mjs +2 -0
- package/esm2020/services/helpers/util.helper.mjs +18 -0
- package/esm2020/services/home-shop/home-shop-repositories.facade.mjs +24 -0
- package/esm2020/services/home-shop/index.mjs +2 -0
- package/esm2020/services/home-shop.service.mjs +119 -0
- package/esm2020/services/index.mjs +10 -0
- package/esm2020/services/order.service.mjs +30 -0
- package/esm2020/services/shared/configuration.facade.mjs +29 -0
- package/esm2020/services/shared/index.mjs +2 -0
- package/esm2020/services/types/index.mjs +3 -0
- package/esm2020/services/types/required-checkout-data.type.mjs +2 -0
- package/esm2020/services/types/required-checkout-subscription-data.type.mjs +2 -0
- package/esm2020/types/firebase-app-config.type.mjs +2 -0
- package/esm2020/types/index.mjs +2 -0
- package/fesm2015/infrab4a-connect-angular.mjs +3372 -0
- package/fesm2015/infrab4a-connect-angular.mjs.map +1 -0
- package/fesm2020/infrab4a-connect-angular.mjs +3277 -0
- package/fesm2020/infrab4a-connect-angular.mjs.map +1 -0
- package/helpers/index.d.ts +1 -0
- package/helpers/mobile-operation-system-checker.helper.d.ts +3 -0
- package/index.d.ts +6 -0
- package/interfaces/catalog-strategies.interface.d.ts +31 -0
- package/interfaces/category-facades.interface.d.ts +6 -0
- package/interfaces/index.d.ts +2 -0
- package/package.json +24 -4
- package/persistence/cookie-data-persistence.d.ts +10 -0
- package/persistence/data-persistence.d.ts +6 -0
- package/persistence/index.d.ts +2 -0
- package/services/auth.service.d.ts +18 -0
- package/services/cart/cart-services.facade.d.ts +12 -0
- package/services/cart/index.d.ts +1 -0
- package/services/cart.service.d.ts +26 -0
- package/services/catalog/adapters/category-structure.adapter.d.ts +4 -0
- package/services/catalog/adapters/index.d.ts +3 -0
- package/services/catalog/adapters/new-category-structure.adapter.d.ts +12 -0
- package/services/catalog/adapters/old-category-structure.adapter.d.ts +10 -0
- package/services/catalog/catalog.service.d.ts +24 -0
- package/services/catalog/category.service.d.ts +22 -0
- package/services/catalog/context/catalog-search.context.d.ts +14 -0
- package/services/catalog/enums/index.d.ts +1 -0
- package/services/catalog/enums/product-sorts.enum.d.ts +9 -0
- package/services/catalog/facades/catalog-service.facade.d.ts +15 -0
- package/services/catalog/facades/catalog-strategies.facade.d.ts +10 -0
- package/services/catalog/facades/category-repository.facade.d.ts +9 -0
- package/services/catalog/facades/category-service.facade.d.ts +15 -0
- package/{src/services/catalog/facades/index.ts → services/catalog/facades/index.d.ts} +5 -5
- package/services/catalog/facades/product-catalog.facade.d.ts +10 -0
- package/services/catalog/helpers/brand-manager.helper.d.ts +14 -0
- package/services/catalog/helpers/catalog-filter.helper.d.ts +8 -0
- package/services/catalog/helpers/catalog-sort.helper.d.ts +7 -0
- package/services/catalog/helpers/index.d.ts +4 -0
- package/services/catalog/helpers/product-fields.helper.d.ts +7 -0
- package/services/catalog/index.d.ts +7 -0
- package/services/catalog/models/category-with-tree.model.d.ts +4 -0
- package/services/catalog/models/index.d.ts +1 -0
- package/services/catalog/services/catalog-helpers.service.d.ts +17 -0
- package/services/catalog/services/catalog-operations.facade.d.ts +13 -0
- package/services/catalog/services/catalog-repository.service.d.ts +12 -0
- package/{src/services/catalog/services/index.ts → services/catalog/services/index.d.ts} +4 -4
- package/services/catalog/services/product-management.facade.d.ts +12 -0
- package/services/catalog/strategies/category-search.strategy.d.ts +19 -0
- package/services/catalog/strategies/index.d.ts +3 -0
- package/services/catalog/strategies/profile-search.strategy.d.ts +14 -0
- package/services/catalog/strategies/term-search.strategy.d.ts +20 -0
- package/services/catalog/strategies/types/strategy-params.type.d.ts +58 -0
- package/services/catalog/types/fetch-products-options.type.d.ts +8 -0
- package/services/catalog/types/fetch-products-params.type.d.ts +25 -0
- package/services/catalog/types/fetch-products-response.type.d.ts +19 -0
- package/services/catalog/types/index.d.ts +5 -0
- package/services/catalog/types/method-params.type.d.ts +17 -0
- package/services/catalog/types/product-sort.type.d.ts +2 -0
- package/services/catalog/wishlist.service.d.ts +58 -0
- package/services/checkout/checkout-dependencies.facade.d.ts +10 -0
- package/services/checkout/checkout-repositories.facade.d.ts +9 -0
- package/{src/services/checkout/index.ts → services/checkout/index.d.ts} +2 -2
- package/services/checkout-subscription.service.d.ts +19 -0
- package/services/checkout.service.d.ts +30 -0
- package/services/coupon/coupon-repositories.facade.d.ts +10 -0
- package/{src/services/coupon/index.ts → services/coupon/index.d.ts} +1 -1
- package/services/coupon/types/coupon-params.type.d.ts +13 -0
- package/services/coupon.service.d.ts +36 -0
- package/services/helpers/index.d.ts +1 -0
- package/services/helpers/util.helper.d.ts +3 -0
- package/services/home-shop/home-shop-repositories.facade.d.ts +10 -0
- package/{src/services/home-shop/index.ts → services/home-shop/index.d.ts} +1 -1
- package/services/home-shop.service.d.ts +26 -0
- package/services/index.d.ts +9 -0
- package/services/order.service.d.ts +13 -0
- package/services/shared/configuration.facade.d.ts +12 -0
- package/services/shared/index.d.ts +1 -0
- package/services/types/index.d.ts +2 -0
- package/services/types/required-checkout-data.type.d.ts +2 -0
- package/services/types/required-checkout-subscription-data.type.d.ts +2 -0
- package/types/firebase-app-config.type.d.ts +1 -0
- package/types/index.d.ts +1 -0
- package/eslint.config.js +0 -18
- package/index.ts +0 -1
- package/karma.conf.js +0 -32
- package/ng-package.json +0 -8
- package/project.json +0 -37
- package/src/angular-connect.module.ts +0 -256
- package/src/angular-elastic-search.module.ts +0 -23
- package/src/angular-firebase-auth.module.ts +0 -101
- package/src/angular-firestore.module.ts +0 -371
- package/src/angular-hasura-graphql.module.ts +0 -219
- package/src/angular-vertex-search.module.ts +0 -23
- package/src/consts/backend-url.const.ts +0 -1
- package/src/consts/category-structure.ts +0 -1
- package/src/consts/default-shop.const.ts +0 -1
- package/src/consts/es-config.const.ts +0 -1
- package/src/consts/firebase-const.ts +0 -5
- package/src/consts/hasura-options.const.ts +0 -1
- package/src/consts/index.ts +0 -8
- package/src/consts/persistence.const.ts +0 -1
- package/src/consts/storage-base-url.const.ts +0 -1
- package/src/consts/vertex-config.const.ts +0 -1
- package/src/helpers/index.ts +0 -1
- package/src/helpers/mobile-operation-system-checker.helper.ts +0 -10
- package/src/index.ts +0 -6
- package/src/interfaces/catalog-strategies.interface.ts +0 -36
- package/src/interfaces/category-facades.interface.ts +0 -7
- package/src/interfaces/index.ts +0 -2
- package/src/persistence/cookie-data-persistence.ts +0 -21
- package/src/persistence/data-persistence.ts +0 -7
- package/src/persistence/index.ts +0 -2
- package/src/services/auth.service.ts +0 -39
- package/src/services/cart/cart-services.facade.ts +0 -14
- package/src/services/cart/index.ts +0 -1
- package/src/services/cart.service.ts +0 -124
- package/src/services/catalog/adapters/category-structure.adapter.ts +0 -5
- package/src/services/catalog/adapters/index.ts +0 -3
- package/src/services/catalog/adapters/new-category-structure.adapter.ts +0 -42
- package/src/services/catalog/adapters/old-category-structure.adapter.ts +0 -17
- package/src/services/catalog/catalog.service.ts +0 -153
- package/src/services/catalog/category.service.ts +0 -52
- package/src/services/catalog/context/catalog-search.context.ts +0 -61
- package/src/services/catalog/enums/index.ts +0 -1
- package/src/services/catalog/enums/product-sorts.enum.ts +0 -9
- package/src/services/catalog/facades/catalog-service.facade.ts +0 -32
- package/src/services/catalog/facades/catalog-strategies.facade.ts +0 -12
- package/src/services/catalog/facades/category-repository.facade.ts +0 -10
- package/src/services/catalog/facades/category-service.facade.ts +0 -25
- package/src/services/catalog/facades/product-catalog.facade.ts +0 -13
- package/src/services/catalog/helpers/brand-manager.helper.ts +0 -63
- package/src/services/catalog/helpers/catalog-filter.helper.ts +0 -50
- package/src/services/catalog/helpers/catalog-sort.helper.ts +0 -54
- package/src/services/catalog/helpers/index.ts +0 -4
- package/src/services/catalog/helpers/product-fields.helper.ts +0 -35
- package/src/services/catalog/index.ts +0 -7
- package/src/services/catalog/models/category-with-tree.model.ts +0 -7
- package/src/services/catalog/models/index.ts +0 -1
- package/src/services/catalog/services/catalog-helpers.service.ts +0 -35
- package/src/services/catalog/services/catalog-operations.facade.ts +0 -24
- package/src/services/catalog/services/catalog-repository.service.ts +0 -20
- package/src/services/catalog/services/product-management.facade.ts +0 -20
- package/src/services/catalog/strategies/category-search.strategy.ts +0 -172
- package/src/services/catalog/strategies/index.ts +0 -3
- package/src/services/catalog/strategies/profile-search.strategy.ts +0 -51
- package/src/services/catalog/strategies/term-search.strategy.ts +0 -178
- package/src/services/catalog/strategies/types/strategy-params.type.ts +0 -58
- package/src/services/catalog/types/fetch-products-options.type.ts +0 -10
- package/src/services/catalog/types/fetch-products-params.type.ts +0 -27
- package/src/services/catalog/types/fetch-products-response.type.ts +0 -11
- package/src/services/catalog/types/index.ts +0 -5
- package/src/services/catalog/types/method-params.type.ts +0 -21
- package/src/services/catalog/types/product-sort.type.ts +0 -3
- package/src/services/catalog/wishlist.service.ts +0 -368
- package/src/services/checkout/checkout-dependencies.facade.ts +0 -13
- package/src/services/checkout/checkout-repositories.facade.ts +0 -10
- package/src/services/checkout-subscription.service.ts +0 -76
- package/src/services/checkout.service.ts +0 -196
- package/src/services/coupon/coupon-repositories.facade.ts +0 -11
- package/src/services/coupon/types/coupon-params.type.ts +0 -15
- package/src/services/coupon.service.ts +0 -347
- package/src/services/errors/group-invalid-coupon.error.ts +0 -9
- package/src/services/errors/index.ts +0 -2
- package/src/services/errors/invalid-coupon.error.ts +0 -7
- package/src/services/helpers/index.ts +0 -1
- package/src/services/helpers/util.helper.ts +0 -17
- package/src/services/home-shop/home-shop-repositories.facade.ts +0 -11
- package/src/services/home-shop.service.ts +0 -196
- package/src/services/index.ts +0 -9
- package/src/services/order.service.ts +0 -23
- package/src/services/shared/configuration.facade.ts +0 -21
- package/src/services/shared/index.ts +0 -1
- package/src/services/types/index.ts +0 -2
- package/src/services/types/required-checkout-data.type.ts +0 -3
- package/src/services/types/required-checkout-subscription-data.type.ts +0 -3
- package/src/types/firebase-app-config.type.ts +0 -1
- package/src/types/index.ts +0 -1
- package/tsconfig.json +0 -17
- package/tsconfig.lib.json +0 -13
- package/tsconfig.lib.prod.json +0 -13
- package/tsconfig.spec.json +0 -17
|
@@ -0,0 +1,541 @@
|
|
|
1
|
+
import { isPlatformBrowser, isPlatformServer } from '@angular/common';
|
|
2
|
+
import { NgModule, PLATFORM_ID } from '@angular/core';
|
|
3
|
+
import { FirebaseApp } from '@angular/fire/app';
|
|
4
|
+
import { Firestore, initializeFirestore, memoryLocalCache, provideFirestore } from '@angular/fire/firestore';
|
|
5
|
+
import { Buy2WinFirestoreRepository, CampaignDashboardFirestoreRepository, CampaignHashtagFirestoreRepository, CategoryFirestoreRepository, CheckoutFirestoreRepository, CheckoutSubscriptionFirestoreRepository, ConnectFirestoreService, CouponFirestoreRepository, GroupFirestoreRepository, HomeFirestoreRepository, LeadFirestoreRepository, LegacyOrderFirestoreRepository, LogFirestoreRepository, OrderBlockedFirestoreRepository, OrderFirestoreRepository, PaymentFirestoreRepository, ProductFirestoreRepository, ProductVariantFirestoreRepository, SequenceFirestoreRepository, ShopMenuFirestoreRepository, ShopSettingsFirestoreRepository, SubscriptionEditionFirestoreRepository, SubscriptionFirestoreRepository, SubscriptionMaterializationFirestoreRepository, SubscriptionPaymentFirestoreRepository, SubscriptionPlanFirestoreRepository, SubscriptionProductFirestoreRepository, SubscriptionSummaryFirestoreRepository, UserAddressFirestoreRepository, UserBeautyProfileFirestoreRepository, UserFirestoreRepository, UserPaymentMethodFirestoreRepository, } from '@infrab4a/connect';
|
|
6
|
+
import { AngularElasticSeachModule } from './angular-elastic-search.module';
|
|
7
|
+
import { ES_CONFIG, FIREBASE_APP_NAME, FIREBASE_OPTIONS } from './consts';
|
|
8
|
+
import { MobileOperationSystemCheckerHelper } from './helpers';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "@angular/fire/firestore";
|
|
11
|
+
export class AngularFirestoreModule {
|
|
12
|
+
static initializeApp(options, nameOrConfig) {
|
|
13
|
+
return {
|
|
14
|
+
ngModule: AngularFirestoreModule,
|
|
15
|
+
providers: [
|
|
16
|
+
{ provide: FIREBASE_OPTIONS, useValue: options.firebase },
|
|
17
|
+
{ provide: FIREBASE_APP_NAME, useValue: nameOrConfig },
|
|
18
|
+
{ provide: ES_CONFIG, useValue: options.elasticSearch },
|
|
19
|
+
],
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
AngularFirestoreModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AngularFirestoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
24
|
+
AngularFirestoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.0", ngImport: i0, type: AngularFirestoreModule, imports: [AngularElasticSeachModule, i1.FirestoreModule] });
|
|
25
|
+
AngularFirestoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AngularFirestoreModule, providers: [
|
|
26
|
+
{
|
|
27
|
+
provide: 'FirestoreOptions',
|
|
28
|
+
useFactory: (firestore, platformId) => ({
|
|
29
|
+
firestore: new ConnectFirestoreService(firestore),
|
|
30
|
+
interceptors: {
|
|
31
|
+
request: (request) => {
|
|
32
|
+
if (isPlatformBrowser(platformId))
|
|
33
|
+
return request;
|
|
34
|
+
const interval = setInterval(() => { }, 100);
|
|
35
|
+
request.interval = interval;
|
|
36
|
+
return request;
|
|
37
|
+
},
|
|
38
|
+
response: (response, request) => {
|
|
39
|
+
if (isPlatformBrowser(platformId))
|
|
40
|
+
return response;
|
|
41
|
+
clearInterval(request.interval);
|
|
42
|
+
return response;
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
}),
|
|
46
|
+
deps: [Firestore, PLATFORM_ID],
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
provide: 'BeautyProfileRepository',
|
|
50
|
+
useFactory: (config, userRepository) => {
|
|
51
|
+
return new UserBeautyProfileFirestoreRepository(config, userRepository);
|
|
52
|
+
},
|
|
53
|
+
deps: ['FirestoreOptions', 'UserRepository'],
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
provide: 'Buy2WinRepository',
|
|
57
|
+
useFactory: (options) => {
|
|
58
|
+
return new Buy2WinFirestoreRepository(options);
|
|
59
|
+
},
|
|
60
|
+
deps: ['FirestoreOptions'],
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
provide: CategoryFirestoreRepository,
|
|
64
|
+
useFactory: (options) => {
|
|
65
|
+
return new CategoryFirestoreRepository(options);
|
|
66
|
+
},
|
|
67
|
+
deps: ['FirestoreOptions'],
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
provide: 'CheckoutRepository',
|
|
71
|
+
useFactory: (options) => {
|
|
72
|
+
return new CheckoutFirestoreRepository(options);
|
|
73
|
+
},
|
|
74
|
+
deps: ['FirestoreOptions'],
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
provide: 'CheckoutSubscriptionRepository',
|
|
78
|
+
useFactory: (options) => {
|
|
79
|
+
return new CheckoutSubscriptionFirestoreRepository(options);
|
|
80
|
+
},
|
|
81
|
+
deps: ['FirestoreOptions'],
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
provide: 'CouponRepository',
|
|
85
|
+
useFactory: (options) => {
|
|
86
|
+
return new CouponFirestoreRepository(options);
|
|
87
|
+
},
|
|
88
|
+
deps: ['FirestoreOptions'],
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
provide: 'CampaignHashtagRepository',
|
|
92
|
+
useFactory: (options) => {
|
|
93
|
+
return new CampaignHashtagFirestoreRepository(options);
|
|
94
|
+
},
|
|
95
|
+
deps: ['FirestoreOptions'],
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
provide: 'CampaignDashboardRepository',
|
|
99
|
+
useFactory: (options) => {
|
|
100
|
+
return new CampaignDashboardFirestoreRepository(options);
|
|
101
|
+
},
|
|
102
|
+
deps: ['FirestoreOptions'],
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
provide: 'EditionRepository',
|
|
106
|
+
useFactory: (options, subscriptionRepository) => {
|
|
107
|
+
return new SubscriptionEditionFirestoreRepository(options, subscriptionRepository);
|
|
108
|
+
},
|
|
109
|
+
deps: ['FirestoreOptions', 'SubscriptionRepository'],
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
provide: 'GroupRepository',
|
|
113
|
+
useFactory: (options) => {
|
|
114
|
+
return new GroupFirestoreRepository(options);
|
|
115
|
+
},
|
|
116
|
+
deps: ['FirestoreOptions'],
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
provide: 'HomeRepository',
|
|
120
|
+
useFactory: (options) => {
|
|
121
|
+
return new HomeFirestoreRepository(options);
|
|
122
|
+
},
|
|
123
|
+
deps: ['FirestoreOptions'],
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
provide: 'LeadRepository',
|
|
127
|
+
useFactory: (options) => {
|
|
128
|
+
return new LeadFirestoreRepository(options);
|
|
129
|
+
},
|
|
130
|
+
deps: ['FirestoreOptions'],
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
provide: 'LegacyOrderRepository',
|
|
134
|
+
useFactory: (options) => {
|
|
135
|
+
return new LegacyOrderFirestoreRepository(options);
|
|
136
|
+
},
|
|
137
|
+
deps: ['FirestoreOptions'],
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
provide: 'ShopMenuRepository',
|
|
141
|
+
useFactory: (options) => {
|
|
142
|
+
return new ShopMenuFirestoreRepository(options);
|
|
143
|
+
},
|
|
144
|
+
deps: ['FirestoreOptions'],
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
provide: 'OrderRepository',
|
|
148
|
+
useFactory: (options) => {
|
|
149
|
+
return new OrderFirestoreRepository(options);
|
|
150
|
+
},
|
|
151
|
+
deps: ['FirestoreOptions'],
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
provide: 'PaymentRepository',
|
|
155
|
+
useFactory: (options) => {
|
|
156
|
+
return new PaymentFirestoreRepository(options);
|
|
157
|
+
},
|
|
158
|
+
deps: ['FirestoreOptions'],
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
provide: ProductFirestoreRepository,
|
|
162
|
+
useFactory: (options) => {
|
|
163
|
+
return new ProductFirestoreRepository(options);
|
|
164
|
+
},
|
|
165
|
+
deps: ['FirestoreOptions'],
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
provide: 'ShopSettingsRepository',
|
|
169
|
+
useFactory: (options) => {
|
|
170
|
+
return new ShopSettingsFirestoreRepository(options);
|
|
171
|
+
},
|
|
172
|
+
deps: ['FirestoreOptions'],
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
provide: 'SubscriptionPaymentRepository',
|
|
176
|
+
useFactory: (options, subscriptionRepository) => {
|
|
177
|
+
return new SubscriptionPaymentFirestoreRepository(options, subscriptionRepository);
|
|
178
|
+
},
|
|
179
|
+
deps: ['FirestoreOptions', 'SubscriptionRepository'],
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
provide: 'SubscriptionPlanRepository',
|
|
183
|
+
useFactory: (options) => {
|
|
184
|
+
return new SubscriptionPlanFirestoreRepository(options);
|
|
185
|
+
},
|
|
186
|
+
deps: ['FirestoreOptions'],
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
provide: 'SubscriptionProductRepository',
|
|
190
|
+
useFactory: (options) => {
|
|
191
|
+
return new SubscriptionProductFirestoreRepository(options);
|
|
192
|
+
},
|
|
193
|
+
deps: ['FirestoreOptions'],
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
provide: 'SubscriptionRepository',
|
|
197
|
+
useFactory: (options) => {
|
|
198
|
+
return new SubscriptionFirestoreRepository(options);
|
|
199
|
+
},
|
|
200
|
+
deps: ['FirestoreOptions'],
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
provide: 'UserRepository',
|
|
204
|
+
useFactory: (options) => {
|
|
205
|
+
return new UserFirestoreRepository(options);
|
|
206
|
+
},
|
|
207
|
+
deps: ['FirestoreOptions'],
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
provide: 'UserAddressRepository',
|
|
211
|
+
useFactory: (options, userRepository) => {
|
|
212
|
+
return new UserAddressFirestoreRepository(options, userRepository);
|
|
213
|
+
},
|
|
214
|
+
deps: ['FirestoreOptions', 'UserRepository'],
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
provide: 'UserPaymentMethodRepository',
|
|
218
|
+
useFactory: (options, userRepository) => {
|
|
219
|
+
return new UserPaymentMethodFirestoreRepository(options, userRepository);
|
|
220
|
+
},
|
|
221
|
+
deps: ['FirestoreOptions', 'UserRepository'],
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
provide: 'SubscriptionMaterializationRepository',
|
|
225
|
+
useFactory: (options) => {
|
|
226
|
+
return new SubscriptionMaterializationFirestoreRepository(options);
|
|
227
|
+
},
|
|
228
|
+
deps: ['FirestoreOptions'],
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
provide: 'SubscriptionSummaryRepository',
|
|
232
|
+
useFactory: (options) => {
|
|
233
|
+
return new SubscriptionSummaryFirestoreRepository(options);
|
|
234
|
+
},
|
|
235
|
+
deps: ['FirestoreOptions'],
|
|
236
|
+
},
|
|
237
|
+
{
|
|
238
|
+
provide: ProductVariantFirestoreRepository,
|
|
239
|
+
useFactory: (options, productRepository) => {
|
|
240
|
+
return new ProductVariantFirestoreRepository(options, productRepository);
|
|
241
|
+
},
|
|
242
|
+
deps: ['FirestoreOptions', ProductFirestoreRepository],
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
provide: 'OrderBlockedRepository',
|
|
246
|
+
useFactory: (options) => {
|
|
247
|
+
return new OrderBlockedFirestoreRepository(options);
|
|
248
|
+
},
|
|
249
|
+
deps: ['FirestoreOptions'],
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
provide: 'LogRepository',
|
|
253
|
+
useFactory: (options) => {
|
|
254
|
+
return new LogFirestoreRepository(options);
|
|
255
|
+
},
|
|
256
|
+
deps: ['FirestoreOptions'],
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
provide: 'SequenceRepository',
|
|
260
|
+
useFactory: (options) => {
|
|
261
|
+
return new SequenceFirestoreRepository(options);
|
|
262
|
+
},
|
|
263
|
+
deps: ['FirestoreOptions'],
|
|
264
|
+
},
|
|
265
|
+
], imports: [AngularElasticSeachModule,
|
|
266
|
+
provideFirestore((injector) => {
|
|
267
|
+
const platformId = injector.get(PLATFORM_ID);
|
|
268
|
+
if (isPlatformServer(platformId) || !MobileOperationSystemCheckerHelper.isAppleDevice())
|
|
269
|
+
return initializeFirestore(injector.get(FirebaseApp), {
|
|
270
|
+
ignoreUndefinedProperties: true,
|
|
271
|
+
});
|
|
272
|
+
const firestore = initializeFirestore(injector.get(FirebaseApp), {
|
|
273
|
+
experimentalForceLongPolling: true,
|
|
274
|
+
ignoreUndefinedProperties: true,
|
|
275
|
+
localCache: memoryLocalCache(),
|
|
276
|
+
});
|
|
277
|
+
return firestore;
|
|
278
|
+
})] });
|
|
279
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AngularFirestoreModule, decorators: [{
|
|
280
|
+
type: NgModule,
|
|
281
|
+
args: [{
|
|
282
|
+
imports: [
|
|
283
|
+
AngularElasticSeachModule,
|
|
284
|
+
provideFirestore((injector) => {
|
|
285
|
+
const platformId = injector.get(PLATFORM_ID);
|
|
286
|
+
if (isPlatformServer(platformId) || !MobileOperationSystemCheckerHelper.isAppleDevice())
|
|
287
|
+
return initializeFirestore(injector.get(FirebaseApp), {
|
|
288
|
+
ignoreUndefinedProperties: true,
|
|
289
|
+
});
|
|
290
|
+
const firestore = initializeFirestore(injector.get(FirebaseApp), {
|
|
291
|
+
experimentalForceLongPolling: true,
|
|
292
|
+
ignoreUndefinedProperties: true,
|
|
293
|
+
localCache: memoryLocalCache(),
|
|
294
|
+
});
|
|
295
|
+
return firestore;
|
|
296
|
+
}),
|
|
297
|
+
],
|
|
298
|
+
providers: [
|
|
299
|
+
{
|
|
300
|
+
provide: 'FirestoreOptions',
|
|
301
|
+
useFactory: (firestore, platformId) => ({
|
|
302
|
+
firestore: new ConnectFirestoreService(firestore),
|
|
303
|
+
interceptors: {
|
|
304
|
+
request: (request) => {
|
|
305
|
+
if (isPlatformBrowser(platformId))
|
|
306
|
+
return request;
|
|
307
|
+
const interval = setInterval(() => { }, 100);
|
|
308
|
+
request.interval = interval;
|
|
309
|
+
return request;
|
|
310
|
+
},
|
|
311
|
+
response: (response, request) => {
|
|
312
|
+
if (isPlatformBrowser(platformId))
|
|
313
|
+
return response;
|
|
314
|
+
clearInterval(request.interval);
|
|
315
|
+
return response;
|
|
316
|
+
},
|
|
317
|
+
},
|
|
318
|
+
}),
|
|
319
|
+
deps: [Firestore, PLATFORM_ID],
|
|
320
|
+
},
|
|
321
|
+
{
|
|
322
|
+
provide: 'BeautyProfileRepository',
|
|
323
|
+
useFactory: (config, userRepository) => {
|
|
324
|
+
return new UserBeautyProfileFirestoreRepository(config, userRepository);
|
|
325
|
+
},
|
|
326
|
+
deps: ['FirestoreOptions', 'UserRepository'],
|
|
327
|
+
},
|
|
328
|
+
{
|
|
329
|
+
provide: 'Buy2WinRepository',
|
|
330
|
+
useFactory: (options) => {
|
|
331
|
+
return new Buy2WinFirestoreRepository(options);
|
|
332
|
+
},
|
|
333
|
+
deps: ['FirestoreOptions'],
|
|
334
|
+
},
|
|
335
|
+
{
|
|
336
|
+
provide: CategoryFirestoreRepository,
|
|
337
|
+
useFactory: (options) => {
|
|
338
|
+
return new CategoryFirestoreRepository(options);
|
|
339
|
+
},
|
|
340
|
+
deps: ['FirestoreOptions'],
|
|
341
|
+
},
|
|
342
|
+
{
|
|
343
|
+
provide: 'CheckoutRepository',
|
|
344
|
+
useFactory: (options) => {
|
|
345
|
+
return new CheckoutFirestoreRepository(options);
|
|
346
|
+
},
|
|
347
|
+
deps: ['FirestoreOptions'],
|
|
348
|
+
},
|
|
349
|
+
{
|
|
350
|
+
provide: 'CheckoutSubscriptionRepository',
|
|
351
|
+
useFactory: (options) => {
|
|
352
|
+
return new CheckoutSubscriptionFirestoreRepository(options);
|
|
353
|
+
},
|
|
354
|
+
deps: ['FirestoreOptions'],
|
|
355
|
+
},
|
|
356
|
+
{
|
|
357
|
+
provide: 'CouponRepository',
|
|
358
|
+
useFactory: (options) => {
|
|
359
|
+
return new CouponFirestoreRepository(options);
|
|
360
|
+
},
|
|
361
|
+
deps: ['FirestoreOptions'],
|
|
362
|
+
},
|
|
363
|
+
{
|
|
364
|
+
provide: 'CampaignHashtagRepository',
|
|
365
|
+
useFactory: (options) => {
|
|
366
|
+
return new CampaignHashtagFirestoreRepository(options);
|
|
367
|
+
},
|
|
368
|
+
deps: ['FirestoreOptions'],
|
|
369
|
+
},
|
|
370
|
+
{
|
|
371
|
+
provide: 'CampaignDashboardRepository',
|
|
372
|
+
useFactory: (options) => {
|
|
373
|
+
return new CampaignDashboardFirestoreRepository(options);
|
|
374
|
+
},
|
|
375
|
+
deps: ['FirestoreOptions'],
|
|
376
|
+
},
|
|
377
|
+
{
|
|
378
|
+
provide: 'EditionRepository',
|
|
379
|
+
useFactory: (options, subscriptionRepository) => {
|
|
380
|
+
return new SubscriptionEditionFirestoreRepository(options, subscriptionRepository);
|
|
381
|
+
},
|
|
382
|
+
deps: ['FirestoreOptions', 'SubscriptionRepository'],
|
|
383
|
+
},
|
|
384
|
+
{
|
|
385
|
+
provide: 'GroupRepository',
|
|
386
|
+
useFactory: (options) => {
|
|
387
|
+
return new GroupFirestoreRepository(options);
|
|
388
|
+
},
|
|
389
|
+
deps: ['FirestoreOptions'],
|
|
390
|
+
},
|
|
391
|
+
{
|
|
392
|
+
provide: 'HomeRepository',
|
|
393
|
+
useFactory: (options) => {
|
|
394
|
+
return new HomeFirestoreRepository(options);
|
|
395
|
+
},
|
|
396
|
+
deps: ['FirestoreOptions'],
|
|
397
|
+
},
|
|
398
|
+
{
|
|
399
|
+
provide: 'LeadRepository',
|
|
400
|
+
useFactory: (options) => {
|
|
401
|
+
return new LeadFirestoreRepository(options);
|
|
402
|
+
},
|
|
403
|
+
deps: ['FirestoreOptions'],
|
|
404
|
+
},
|
|
405
|
+
{
|
|
406
|
+
provide: 'LegacyOrderRepository',
|
|
407
|
+
useFactory: (options) => {
|
|
408
|
+
return new LegacyOrderFirestoreRepository(options);
|
|
409
|
+
},
|
|
410
|
+
deps: ['FirestoreOptions'],
|
|
411
|
+
},
|
|
412
|
+
{
|
|
413
|
+
provide: 'ShopMenuRepository',
|
|
414
|
+
useFactory: (options) => {
|
|
415
|
+
return new ShopMenuFirestoreRepository(options);
|
|
416
|
+
},
|
|
417
|
+
deps: ['FirestoreOptions'],
|
|
418
|
+
},
|
|
419
|
+
{
|
|
420
|
+
provide: 'OrderRepository',
|
|
421
|
+
useFactory: (options) => {
|
|
422
|
+
return new OrderFirestoreRepository(options);
|
|
423
|
+
},
|
|
424
|
+
deps: ['FirestoreOptions'],
|
|
425
|
+
},
|
|
426
|
+
{
|
|
427
|
+
provide: 'PaymentRepository',
|
|
428
|
+
useFactory: (options) => {
|
|
429
|
+
return new PaymentFirestoreRepository(options);
|
|
430
|
+
},
|
|
431
|
+
deps: ['FirestoreOptions'],
|
|
432
|
+
},
|
|
433
|
+
{
|
|
434
|
+
provide: ProductFirestoreRepository,
|
|
435
|
+
useFactory: (options) => {
|
|
436
|
+
return new ProductFirestoreRepository(options);
|
|
437
|
+
},
|
|
438
|
+
deps: ['FirestoreOptions'],
|
|
439
|
+
},
|
|
440
|
+
{
|
|
441
|
+
provide: 'ShopSettingsRepository',
|
|
442
|
+
useFactory: (options) => {
|
|
443
|
+
return new ShopSettingsFirestoreRepository(options);
|
|
444
|
+
},
|
|
445
|
+
deps: ['FirestoreOptions'],
|
|
446
|
+
},
|
|
447
|
+
{
|
|
448
|
+
provide: 'SubscriptionPaymentRepository',
|
|
449
|
+
useFactory: (options, subscriptionRepository) => {
|
|
450
|
+
return new SubscriptionPaymentFirestoreRepository(options, subscriptionRepository);
|
|
451
|
+
},
|
|
452
|
+
deps: ['FirestoreOptions', 'SubscriptionRepository'],
|
|
453
|
+
},
|
|
454
|
+
{
|
|
455
|
+
provide: 'SubscriptionPlanRepository',
|
|
456
|
+
useFactory: (options) => {
|
|
457
|
+
return new SubscriptionPlanFirestoreRepository(options);
|
|
458
|
+
},
|
|
459
|
+
deps: ['FirestoreOptions'],
|
|
460
|
+
},
|
|
461
|
+
{
|
|
462
|
+
provide: 'SubscriptionProductRepository',
|
|
463
|
+
useFactory: (options) => {
|
|
464
|
+
return new SubscriptionProductFirestoreRepository(options);
|
|
465
|
+
},
|
|
466
|
+
deps: ['FirestoreOptions'],
|
|
467
|
+
},
|
|
468
|
+
{
|
|
469
|
+
provide: 'SubscriptionRepository',
|
|
470
|
+
useFactory: (options) => {
|
|
471
|
+
return new SubscriptionFirestoreRepository(options);
|
|
472
|
+
},
|
|
473
|
+
deps: ['FirestoreOptions'],
|
|
474
|
+
},
|
|
475
|
+
{
|
|
476
|
+
provide: 'UserRepository',
|
|
477
|
+
useFactory: (options) => {
|
|
478
|
+
return new UserFirestoreRepository(options);
|
|
479
|
+
},
|
|
480
|
+
deps: ['FirestoreOptions'],
|
|
481
|
+
},
|
|
482
|
+
{
|
|
483
|
+
provide: 'UserAddressRepository',
|
|
484
|
+
useFactory: (options, userRepository) => {
|
|
485
|
+
return new UserAddressFirestoreRepository(options, userRepository);
|
|
486
|
+
},
|
|
487
|
+
deps: ['FirestoreOptions', 'UserRepository'],
|
|
488
|
+
},
|
|
489
|
+
{
|
|
490
|
+
provide: 'UserPaymentMethodRepository',
|
|
491
|
+
useFactory: (options, userRepository) => {
|
|
492
|
+
return new UserPaymentMethodFirestoreRepository(options, userRepository);
|
|
493
|
+
},
|
|
494
|
+
deps: ['FirestoreOptions', 'UserRepository'],
|
|
495
|
+
},
|
|
496
|
+
{
|
|
497
|
+
provide: 'SubscriptionMaterializationRepository',
|
|
498
|
+
useFactory: (options) => {
|
|
499
|
+
return new SubscriptionMaterializationFirestoreRepository(options);
|
|
500
|
+
},
|
|
501
|
+
deps: ['FirestoreOptions'],
|
|
502
|
+
},
|
|
503
|
+
{
|
|
504
|
+
provide: 'SubscriptionSummaryRepository',
|
|
505
|
+
useFactory: (options) => {
|
|
506
|
+
return new SubscriptionSummaryFirestoreRepository(options);
|
|
507
|
+
},
|
|
508
|
+
deps: ['FirestoreOptions'],
|
|
509
|
+
},
|
|
510
|
+
{
|
|
511
|
+
provide: ProductVariantFirestoreRepository,
|
|
512
|
+
useFactory: (options, productRepository) => {
|
|
513
|
+
return new ProductVariantFirestoreRepository(options, productRepository);
|
|
514
|
+
},
|
|
515
|
+
deps: ['FirestoreOptions', ProductFirestoreRepository],
|
|
516
|
+
},
|
|
517
|
+
{
|
|
518
|
+
provide: 'OrderBlockedRepository',
|
|
519
|
+
useFactory: (options) => {
|
|
520
|
+
return new OrderBlockedFirestoreRepository(options);
|
|
521
|
+
},
|
|
522
|
+
deps: ['FirestoreOptions'],
|
|
523
|
+
},
|
|
524
|
+
{
|
|
525
|
+
provide: 'LogRepository',
|
|
526
|
+
useFactory: (options) => {
|
|
527
|
+
return new LogFirestoreRepository(options);
|
|
528
|
+
},
|
|
529
|
+
deps: ['FirestoreOptions'],
|
|
530
|
+
},
|
|
531
|
+
{
|
|
532
|
+
provide: 'SequenceRepository',
|
|
533
|
+
useFactory: (options) => {
|
|
534
|
+
return new SequenceFirestoreRepository(options);
|
|
535
|
+
},
|
|
536
|
+
deps: ['FirestoreOptions'],
|
|
537
|
+
},
|
|
538
|
+
],
|
|
539
|
+
}]
|
|
540
|
+
}] });
|
|
541
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1maXJlc3RvcmUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9hbmd1bGFyLWZpcmVzdG9yZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDckUsT0FBTyxFQUFpQyxRQUFRLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3BGLE9BQU8sRUFBRSxXQUFXLEVBQW1CLE1BQU0sbUJBQW1CLENBQUE7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQzVHLE9BQU8sRUFHTCwwQkFBMEIsRUFFMUIsb0NBQW9DLEVBRXBDLGtDQUFrQyxFQUVsQywyQkFBMkIsRUFFM0IsMkJBQTJCLEVBRTNCLHVDQUF1QyxFQUV2Qyx1QkFBdUIsRUFDdkIseUJBQXlCLEVBS3pCLHdCQUF3QixFQUV4Qix1QkFBdUIsRUFFdkIsdUJBQXVCLEVBRXZCLDhCQUE4QixFQUU5QixzQkFBc0IsRUFFdEIsK0JBQStCLEVBRS9CLHdCQUF3QixFQUV4QiwwQkFBMEIsRUFFMUIsMEJBQTBCLEVBRTFCLGlDQUFpQyxFQUNqQywyQkFBMkIsRUFDM0IsMkJBQTJCLEVBRTNCLCtCQUErQixFQUUvQixzQ0FBc0MsRUFDdEMsK0JBQStCLEVBQy9CLDhDQUE4QyxFQUU5QyxzQ0FBc0MsRUFFdEMsbUNBQW1DLEVBRW5DLHNDQUFzQyxFQUd0QyxzQ0FBc0MsRUFFdEMsOEJBQThCLEVBRTlCLG9DQUFvQyxFQUNwQyx1QkFBdUIsRUFDdkIsb0NBQW9DLEdBSXJDLE1BQU0sbUJBQW1CLENBQUE7QUFFMUIsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFDM0Us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QUE7NEJBQzFFLENBQUM7NEJBQ0QsSUFBSSxFQUFFLENBQUMsa0JBQWtCLEVBQUUsMEJBQTBCLENBQUM7eUJBQ3ZEO3dCQUNEOzRCQUNFLE9BQU8sRUFBRSx3QkFBd0I7NEJBQ2pDLFVBQVUsRUFBRSxDQUFDLE9BQXlCLEVBQTBCLEVBQUU7Z0NBQ2hFLE9BQU8sSUFBSSwrQkFBK0IsQ0FBQyxPQUFPLENBQUMsQ0FBQTs0QkFDckQsQ0FBQzs0QkFDRCxJQUFJLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQzt5QkFDM0I7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLGVBQWU7NEJBQ3hCLFVBQVUsRUFBRSxDQUFDLE9BQXlCLEVBQWlCLEVBQUU7Z0NBQ3ZELE9BQU8sSUFBSSxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQTs0QkFDNUMsQ0FBQzs0QkFDRCxJQUFJLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQzt5QkFDM0I7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLG9CQUFvQjs0QkFDN0IsVUFBVSxFQUFFLENBQUMsT0FBeUIsRUFBK0IsRUFBRTtnQ0FDckUsT0FBTyxJQUFJLDJCQUEyQixDQUFDLE9BQU8sQ0FBQyxDQUFBOzRCQUNqRCxDQUFDOzRCQUNELElBQUksRUFBRSxDQUFDLGtCQUFrQixDQUFDO3lCQUMzQjtxQkFDRjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyLCBpc1BsYXRmb3JtU2VydmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHsgSW5qZWN0b3IsIE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlLCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBGaXJlYmFzZUFwcCwgRmlyZWJhc2VPcHRpb25zIH0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9hcHAnXG5pbXBvcnQgeyBGaXJlc3RvcmUsIGluaXRpYWxpemVGaXJlc3RvcmUsIG1lbW9yeUxvY2FsQ2FjaGUsIHByb3ZpZGVGaXJlc3RvcmUgfSBmcm9tICdAYW5ndWxhci9maXJlL2ZpcmVzdG9yZSdcbmltcG9ydCB7XG4gIEF4aW9zRWxhc3RpY1NlYXJjaENvbmZpZyxcbiAgQmVhdXR5UHJvZmlsZVJlcG9zaXRvcnksXG4gIEJ1eTJXaW5GaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBCdXkyV2luUmVwb3NpdG9yeSxcbiAgQ2FtcGFpZ25EYXNoYm9hcmRGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBDYW1wYWlnbkRhc2hib2FyZFJlcG9zaXRvcnksXG4gIENhbXBhaWduSGFzaHRhZ0ZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIENhbXBhaWduSGFzaHRhZ1JlcG9zaXRvcnksXG4gIENhdGVnb3J5RmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgQ2F0ZWdvcnlSZXBvc2l0b3J5LFxuICBDaGVja291dEZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIENoZWNrb3V0UmVwb3NpdG9yeSxcbiAgQ2hlY2tvdXRTdWJzY3JpcHRpb25GaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBDaGVja291dFN1YnNjcmlwdGlvblJlcG9zaXRvcnksXG4gIENvbm5lY3RGaXJlc3RvcmVTZXJ2aWNlLFxuICBDb3Vwb25GaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBDb3Vwb25SZXBvc2l0b3J5LFxuICBFZGl0aW9uUmVwb3NpdG9yeSxcbiAgRmlyZXN0b3JlQ29uc3RydWN0b3JQYXJhbXMsXG4gIEZpcmVzdG9yZUludGVydGNlcHRvclJlcXVlc3RQYXJhbXMsXG4gIEdyb3VwRmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgR3JvdXBSZXBvc2l0b3J5LFxuICBIb21lRmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgSG9tZVJlcG9zaXRvcnksXG4gIExlYWRGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBMZWFkUmVwb3NpdG9yeSxcbiAgTGVnYWN5T3JkZXJGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBMZWdhY3lPcmRlclJlcG9zaXRvcnksXG4gIExvZ0ZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIExvZ1JlcG9zaXRvcnksXG4gIE9yZGVyQmxvY2tlZEZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIE9yZGVyQmxvY2tlZFJlcG9zaXRvcnksXG4gIE9yZGVyRmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgT3JkZXJSZXBvc2l0b3J5LFxuICBQYXltZW50RmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgUGF5bWVudFJlcG9zaXRvcnksXG4gIFByb2R1Y3RGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBQcm9kdWN0UmVwb3NpdG9yeSxcbiAgUHJvZHVjdFZhcmlhbnRGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBTZXF1ZW5jZUZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIFNob3BNZW51RmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgU2hvcE1lbnVSZXBvc2l0b3J5LFxuICBTaG9wU2V0dGluZ3NGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBTaG9wU2V0dGluZ3NSZXBvc2l0b3J5LFxuICBTdWJzY3JpcHRpb25FZGl0aW9uRmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgU3Vic2NyaXB0aW9uRmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgU3Vic2NyaXB0aW9uTWF0ZXJpYWxpemF0aW9uRmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgU3Vic2NyaXB0aW9uTWF0ZXJpYWxpemF0aW9uUmVwb3NpdG9yeSxcbiAgU3Vic2NyaXB0aW9uUGF5bWVudEZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIFN1YnNjcmlwdGlvblBheW1lbnRSZXBvc2l0b3J5LFxuICBTdWJzY3JpcHRpb25QbGFuRmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgU3Vic2NyaXB0aW9uUGxhblJlcG9zaXRvcnksXG4gIFN1YnNjcmlwdGlvblByb2R1Y3RGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBTdWJzY3JpcHRpb25Qcm9kdWN0UmVwb3NpdG9yeSxcbiAgU3Vic2NyaXB0aW9uUmVwb3NpdG9yeSxcbiAgU3Vic2NyaXB0aW9uU3VtbWFyeUZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIFN1YnNjcmlwdGlvblN1bW1hcnlSZXBvc2l0b3J5LFxuICBVc2VyQWRkcmVzc0ZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIFVzZXJBZGRyZXNzUmVwb3NpdG9yeSxcbiAgVXNlckJlYXV0eVByb2ZpbGVGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBVc2VyRmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgVXNlclBheW1lbnRNZXRob2RGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBVc2VyUGF5bWVudE1ldGhvZFJlcG9zaXRvcnksXG4gIFVzZXJSZXBvc2l0b3J5LFxuICBWYXJpYW50UmVwb3NpdG9yeSxcbn0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXG5cbmltcG9ydCB7IEFuZ3VsYXJFbGFzdGljU2VhY2hNb2R1bGUgfSBmcm9tICcuL2FuZ3VsYXItZWxhc3RpYy1zZWFyY2gubW9kdWxlJ1xuaW1wb3J0IHsgRVNfQ09ORklHLCBGSVJFQkFTRV9BUFBfTkFNRSwgRklSRUJBU0VfT1BUSU9OUyB9IGZyb20gJy4vY29uc3RzJ1xuaW1wb3J0IHsgTW9iaWxlT3BlcmF0aW9uU3lzdGVtQ2hlY2tlckhlbHBlciB9IGZyb20gJy4vaGVscGVycydcbmltcG9ydCB7IEZpcmViYXNlQXBwQ29uZmlnIH0gZnJvbSAnLi90eXBlcydcblxuZXhwb3J0IHR5cGUgRmlyZXN0b3JlT3B0aW9ucyA9IFBpY2s8RmlyZXN0b3JlQ29uc3RydWN0b3JQYXJhbXM8YW55PiwgJ2ZpcmVzdG9yZScgfCAnaW50ZXJjZXB0b3JzJz5cblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIEFuZ3VsYXJFbGFzdGljU2VhY2hNb2R1bGUsXG4gICAgcHJvdmlkZUZpcmVzdG9yZSgoaW5qZWN0b3I6IEluamVjdG9yKSA9PiB7XG4gICAgICBjb25zdCBwbGF0Zm9ybUlkID0gaW5qZWN0b3IuZ2V0KFBMQVRGT1JNX0lEKVxuXG4gICAgICBpZiAoaXNQbGF0Zm9ybVNlcnZlcihwbGF0Zm9ybUlkKSB8fCAhTW9iaWxlT3BlcmF0aW9uU3lzdGVtQ2hlY2tlckhlbHBlci5pc0FwcGxlRGV2aWNlKCkpXG4gICAgICAgIHJldHVybiBpbml0aWFsaXplRmlyZXN0b3JlKGluamVjdG9yLmdldChGaXJlYmFzZUFwcCksIHtcbiAgICAgICAgICBpZ25vcmVVbmRlZmluZWRQcm9wZXJ0aWVzOiB0cnVlLFxuICAgICAgICB9KVxuXG4gICAgICBjb25zdCBmaXJlc3RvcmUgPSBpbml0aWFsaXplRmlyZXN0b3JlKGluamVjdG9yLmdldChGaXJlYmFzZUFwcCksIHtcbiAgICAgICAgZXhwZXJpbWVudGFsRm9yY2VMb25nUG9sbGluZzogdHJ1ZSxcbiAgICAgICAgaWdub3JlVW5kZWZpbmVkUHJvcGVydGllczogdHJ1ZSxcbiAgICAgICAgbG9jYWxDYWNoZTogbWVtb3J5TG9jYWxDYWNoZSgpLFxuICAgICAgfSlcblxuICAgICAgcmV0dXJuIGZpcmVzdG9yZVxuICAgIH0pLFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiAnRmlyZXN0b3JlT3B0aW9ucycsXG4gICAgICB1c2VGYWN0b3J5OiAoZmlyZXN0b3JlOiBGaXJlc3RvcmUsIHBsYXRmb3JtSWQ6IHN0cmluZyk6IEZpcmVzdG9yZU9wdGlvbnMgPT4gKHtcbiAgICAgICAgZmlyZXN0b3JlOiBuZXcgQ29ubmVjdEZpcmVzdG9yZVNlcnZpY2UoZmlyZXN0b3JlKSxcbiAgICAgICAgaW50ZXJjZXB0b3JzOiB7XG4gICAgICAgICAgcmVxdWVzdDogKHJlcXVlc3Q6IEZpcmVzdG9yZUludGVydGNlcHRvclJlcXVlc3RQYXJhbXM8YW55PiAmIHsgaW50ZXJ2YWw6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IH0pID0+IHtcbiAgICAgICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3NlcihwbGF0Zm9ybUlkKSkgcmV0dXJuIHJlcXVlc3RcblxuICAgICAgICAgICAgY29uc3QgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7fSwgMTAwKVxuXG4gICAgICAgICAgICByZXF1ZXN0LmludGVydmFsID0gaW50ZXJ2YWxcblxuICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3RcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc3BvbnNlOiAoXG4gICAgICAgICAgICByZXNwb25zZTogYW55LFxuICAgICAgICAgICAgcmVxdWVzdDogRmlyZXN0b3JlSW50ZXJ0Y2VwdG9yUmVxdWVzdFBhcmFtczxhbnk+ICYgeyBpbnRlcnZhbDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfSxcbiAgICAgICAgICApID0+IHtcbiAgICAgICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3NlcihwbGF0Zm9ybUlkKSkgcmV0dXJuIHJlc3BvbnNlXG5cbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwocmVxdWVzdC5pbnRlcnZhbClcblxuICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICAgZGVwczogW0ZpcmVzdG9yZSwgUExBVEZPUk1fSURdLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ0JlYXV0eVByb2ZpbGVSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChjb25maWc6IEZpcmVzdG9yZU9wdGlvbnMsIHVzZXJSZXBvc2l0b3J5OiBVc2VyRmlyZXN0b3JlUmVwb3NpdG9yeSk6IEJlYXV0eVByb2ZpbGVSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBVc2VyQmVhdXR5UHJvZmlsZUZpcmVzdG9yZVJlcG9zaXRvcnkoY29uZmlnLCB1c2VyUmVwb3NpdG9yeSlcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbJ0ZpcmVzdG9yZU9wdGlvbnMnLCAnVXNlclJlcG9zaXRvcnknXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdCdXkyV2luUmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAob3B0aW9uczogRmlyZXN0b3JlT3B0aW9ucyk6IEJ1eTJXaW5SZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBCdXkyV2luRmlyZXN0b3JlUmVwb3NpdG9yeShvcHRpb25zKVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFsnRmlyZXN0b3JlT3B0aW9ucyddLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogQ2F0ZWdvcnlGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICAgICAgdXNlRmFjdG9yeTogKG9wdGlvbnM6IEZpcmVzdG9yZU9wdGlvbnMpOiBDYXRlZ29yeVJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IENhdGVnb3J5RmlyZXN0b3JlUmVwb3NpdG9yeShvcHRpb25zKVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFsnRmlyZXN0b3JlT3B0aW9ucyddLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ0NoZWNrb3V0UmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAob3B0aW9uczogRmlyZXN0b3JlT3B0aW9ucyk6IENoZWNrb3V0UmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgQ2hlY2tvdXRGaXJlc3RvcmVSZXBvc2l0b3J5KG9wdGlvbnMpXG4gICAgICB9LFxuICAgICAgZGVwczogWydGaXJlc3RvcmVPcHRpb25zJ10sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnQ2hlY2tvdXRTdWJzY3JpcHRpb25SZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBGaXJlc3RvcmVPcHRpb25zKTogQ2hlY2tvdXRTdWJzY3JpcHRpb25SZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBDaGVja291dFN1YnNjcmlwdGlvbkZpcmVzdG9yZVJlcG9zaXRvcnkob3B0aW9ucylcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbJ0ZpcmVzdG9yZU9wdGlvbnMnXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdDb3Vwb25SZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBGaXJlc3RvcmVPcHRpb25zKTogQ291cG9uUmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgQ291cG9uRmlyZXN0b3JlUmVwb3NpdG9yeShvcHRpb25zKVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFsnRmlyZXN0b3JlT3B0aW9ucyddLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ0NhbXBhaWduSGFzaHRhZ1JlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKG9wdGlvbnM6IEZpcmVzdG9yZU9wdGlvbnMpOiBDYW1wYWlnbkhhc2h0YWdSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBDYW1wYWlnbkhhc2h0YWdGaXJlc3RvcmVSZXBvc2l0b3J5KG9wdGlvbnMpXG4gICAgICB9LFxuICAgICAgZGVwczogWydGaXJlc3RvcmVPcHRpb25zJ10sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnQ2FtcGFpZ25EYXNoYm9hcmRSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBGaXJlc3RvcmVPcHRpb25zKTogQ2FtcGFpZ25EYXNoYm9hcmRSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBDYW1wYWlnbkRhc2hib2FyZEZpcmVzdG9yZVJlcG9zaXRvcnkob3B0aW9ucylcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbJ0ZpcmVzdG9yZU9wdGlvbnMnXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdFZGl0aW9uUmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAoXG4gICAgICAgIG9wdGlvbnM6IEZpcmVzdG9yZU9wdGlvbnMsXG4gICAgICAgIHN1YnNjcmlwdGlvblJlcG9zaXRvcnk6IFN1YnNjcmlwdGlvbkZpcmVzdG9yZVJlcG9zaXRvcnksXG4gICAgICApOiBFZGl0aW9uUmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgU3Vic2NyaXB0aW9uRWRpdGlvbkZpcmVzdG9yZVJlcG9zaXRvcnkob3B0aW9ucywgc3Vic2NyaXB0aW9uUmVwb3NpdG9yeSlcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbJ0ZpcmVzdG9yZU9wdGlvbnMnLCAnU3Vic2NyaXB0aW9uUmVwb3NpdG9yeSddLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ0dyb3VwUmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAob3B0aW9uczogRmlyZXN0b3JlT3B0aW9ucyk6IEdyb3VwUmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgR3JvdXBGaXJlc3RvcmVSZXBvc2l0b3J5KG9wdGlvbnMpXG4gICAgICB9LFxuICAgICAgZGVwczogWydGaXJlc3RvcmVPcHRpb25zJ10sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnSG9tZVJlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKG9wdGlvbnM6IEZpcmVzdG9yZU9wdGlvbnMpOiBIb21lUmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgSG9tZUZpcmVzdG9yZVJlcG9zaXRvcnkob3B0aW9ucylcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbJ0ZpcmVzdG9yZU9wdGlvbnMnXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdMZWFkUmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAob3B0aW9uczogRmlyZXN0b3JlT3B0aW9ucyk6IExlYWRSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBMZWFkRmlyZXN0b3JlUmVwb3NpdG9yeShvcHRpb25zKVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFsnRmlyZXN0b3JlT3B0aW9ucyddLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ0xlZ2FjeU9yZGVyUmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAob3B0aW9uczogRmlyZXN0b3JlT3B0aW9ucyk6IExlZ2FjeU9yZGVyUmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgTGVnYWN5T3JkZXJGaXJlc3RvcmVSZXBvc2l0b3J5KG9wdGlvbnMpXG4gICAgICB9LFxuICAgICAgZGVwczogWydGaXJlc3RvcmVPcHRpb25zJ10sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnU2hvcE1lbnVSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBGaXJlc3RvcmVPcHRpb25zKTogU2hvcE1lbnVSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBTaG9wTWVudUZpcmVzdG9yZVJlcG9zaXRvcnkob3B0aW9ucylcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbJ0ZpcmVzdG9yZU9wdGlvbnMnXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdPcmRlclJlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKG9wdGlvbnM6IEZpcmVzdG9yZU9wdGlvbnMpOiBPcmRlclJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IE9yZGVyRmlyZXN0b3JlUmVwb3NpdG9yeShvcHRpb25zKVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFsnRmlyZXN0b3JlT3B0aW9ucyddLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ1BheW1lbnRSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBGaXJlc3RvcmVPcHRpb25zKTogUGF5bWVudFJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFBheW1lbnRGaXJlc3RvcmVSZXBvc2l0b3J5KG9wdGlvbnMpXG4gICAgICB9LFxuICAgICAgZGVwczogWydGaXJlc3RvcmVPcHRpb25zJ10sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBQcm9kdWN0RmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBGaXJlc3RvcmVPcHRpb25zKTogUHJvZHVjdFJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb2R1Y3RGaXJlc3RvcmVSZXBvc2l0b3J5KG9wdGlvbnMpXG4gICAgICB9LFxuICAgICAgZGVwczogWydGaXJlc3RvcmVPcHRpb25zJ10sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnU2hvcFNldHRpbmdzUmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAob3B0aW9uczogRmlyZXN0b3JlT3B0aW9ucyk6IFNob3BTZXR0aW5nc1JlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFNob3BTZXR0aW5nc0ZpcmVzdG9yZVJlcG9zaXRvcnkob3B0aW9ucylcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbJ0ZpcmVzdG9yZU9wdGlvbnMnXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdTdWJzY3JpcHRpb25QYXltZW50UmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAoXG4gICAgICAgIG9wdGlvbnM6IEZpcmVzdG9yZU9wdGlvbnMsXG4gICAgICAgIHN1YnNjcmlwdGlvblJlcG9zaXRvcnk6IFN1YnNjcmlwdGlvbkZpcmVzdG9yZVJlcG9zaXRvcnksXG4gICAgICApOiBTdWJzY3JpcHRpb25QYXltZW50UmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgU3Vic2NyaXB0aW9uUGF5bWVudEZpcmVzdG9yZVJlcG9zaXRvcnkob3B0aW9ucywgc3Vic2NyaXB0aW9uUmVwb3NpdG9yeSlcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbJ0ZpcmVzdG9yZU9wdGlvbnMnLCAnU3Vic2NyaXB0aW9uUmVwb3NpdG9yeSddLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ1N1YnNjcmlwdGlvblBsYW5SZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBGaXJlc3RvcmVPcHRpb25zKTogU3Vic2NyaXB0aW9uUGxhblJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFN1YnNjcmlwdGlvblBsYW5GaXJlc3RvcmVSZXBvc2l0b3J5KG9wdGlvbnMpXG4gICAgICB9LFxuICAgICAgZGVwczogWydGaXJlc3RvcmVPcHRpb25zJ10sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnU3Vic2NyaXB0aW9uUHJvZHVjdFJlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKG9wdGlvbnM6IEZpcmVzdG9yZU9wdGlvbnMpOiBTdWJzY3JpcHRpb25Qcm9kdWN0UmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgU3Vic2NyaXB0aW9uUHJvZHVjdEZpcmVzdG9yZVJlcG9zaXRvcnkob3B0aW9ucylcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbJ0ZpcmVzdG9yZU9wdGlvbnMnXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdTdWJzY3JpcHRpb25SZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBGaXJlc3RvcmVPcHRpb25zKTogU3Vic2NyaXB0aW9uUmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgU3Vic2NyaXB0aW9uRmlyZXN0b3JlUmVwb3NpdG9yeShvcHRpb25zKVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFsnRmlyZXN0b3JlT3B0aW9ucyddLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ1VzZXJSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBGaXJlc3RvcmVPcHRpb25zKTogVXNlclJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFVzZXJGaXJlc3RvcmVSZXBvc2l0b3J5KG9wdGlvbnMpXG4gICAgICB9LFxuICAgICAgZGVwczogWydGaXJlc3RvcmVPcHRpb25zJ10sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnVXNlckFkZHJlc3NSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBGaXJlc3RvcmVPcHRpb25zLCB1c2VyUmVwb3NpdG9yeTogVXNlckZpcmVzdG9yZVJlcG9zaXRvcnkpOiBVc2VyQWRkcmVzc1JlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFVzZXJBZGRyZXNzRmlyZXN0b3JlUmVwb3NpdG9yeShvcHRpb25zLCB1c2VyUmVwb3NpdG9yeSlcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbJ0ZpcmVzdG9yZU9wdGlvbnMnLCAnVXNlclJlcG9zaXRvcnknXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdVc2VyUGF5bWVudE1ldGhvZFJlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKG9wdGlvbnM6IEZpcmVzdG9yZU9wdGlvbnMsIHVzZXJSZXBvc2l0b3J5OiBVc2VyRmlyZXN0b3JlUmVwb3NpdG9yeSk6IFVzZXJQYXltZW50TWV0aG9kUmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgVXNlclBheW1lbnRNZXRob2RGaXJlc3RvcmVSZXBvc2l0b3J5KG9wdGlvbnMsIHVzZXJSZXBvc2l0b3J5KVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFsnRmlyZXN0b3JlT3B0aW9ucycsICdVc2VyUmVwb3NpdG9yeSddLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ1N1YnNjcmlwdGlvbk1hdGVyaWFsaXphdGlvblJlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKG9wdGlvbnM6IEZpcmVzdG9yZU9wdGlvbnMpOiBTdWJzY3JpcHRpb25NYXRlcmlhbGl6YXRpb25SZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBTdWJzY3JpcHRpb25NYXRlcmlhbGl6YXRpb25GaXJlc3RvcmVSZXBvc2l0b3J5KG9wdGlvbnMpXG4gICAgICB9LFxuICAgICAgZGVwczogWydGaXJlc3RvcmVPcHRpb25zJ10sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnU3Vic2NyaXB0aW9uU3VtbWFyeVJlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKG9wdGlvbnM6IEZpcmVzdG9yZU9wdGlvbnMpOiBTdWJzY3JpcHRpb25TdW1tYXJ5UmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgU3Vic2NyaXB0aW9uU3VtbWFyeUZpcmVzdG9yZVJlcG9zaXRvcnkob3B0aW9ucylcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbJ0ZpcmVzdG9yZU9wdGlvbnMnXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IFByb2R1Y3RWYXJpYW50RmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBGaXJlc3RvcmVPcHRpb25zLCBwcm9kdWN0UmVwb3NpdG9yeTogUHJvZHVjdEZpcmVzdG9yZVJlcG9zaXRvcnkpOiBWYXJpYW50UmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvZHVjdFZhcmlhbnRGaXJlc3RvcmVSZXBvc2l0b3J5KG9wdGlvbnMsIHByb2R1Y3RSZXBvc2l0b3J5KVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFsnRmlyZXN0b3JlT3B0aW9ucycsIFByb2R1Y3RGaXJlc3RvcmVSZXBvc2l0b3J5XSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdPcmRlckJsb2NrZWRSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBGaXJlc3RvcmVPcHRpb25zKTogT3JkZXJCbG9ja2VkUmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgT3JkZXJCbG9ja2VkRmlyZXN0b3JlUmVwb3NpdG9yeShvcHRpb25zKVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFsnRmlyZXN0b3JlT3B0aW9ucyddLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ0xvZ1JlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKG9wdGlvbnM6IEZpcmVzdG9yZU9wdGlvbnMpOiBMb2dSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBMb2dGaXJlc3RvcmVSZXBvc2l0b3J5KG9wdGlvbnMpXG4gICAgICB9LFxuICAgICAgZGVwczogWydGaXJlc3RvcmVPcHRpb25zJ10sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnU2VxdWVuY2VSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBGaXJlc3RvcmVPcHRpb25zKTogU2VxdWVuY2VGaXJlc3RvcmVSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBTZXF1ZW5jZUZpcmVzdG9yZVJlcG9zaXRvcnkob3B0aW9ucylcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbJ0ZpcmVzdG9yZU9wdGlvbnMnXSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBbmd1bGFyRmlyZXN0b3JlTW9kdWxlIHtcbiAgc3RhdGljIGluaXRpYWxpemVBcHAoXG4gICAgb3B0aW9uczoge1xuICAgICAgZmlyZWJhc2U6IEZpcmViYXNlT3B0aW9uc1xuICAgICAgZWxhc3RpY1NlYXJjaDogQXhpb3NFbGFzdGljU2VhcmNoQ29uZmlnXG4gICAgfSxcbiAgICBuYW1lT3JDb25maWc/OiBzdHJpbmcgfCBGaXJlYmFzZUFwcENvbmZpZyxcbiAgKTogTW9kdWxlV2l0aFByb3ZpZGVyczxBbmd1bGFyRmlyZXN0b3JlTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBBbmd1bGFyRmlyZXN0b3JlTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogRklSRUJBU0VfT1BUSU9OUywgdXNlVmFsdWU6IG9wdGlvbnMuZmlyZWJhc2UgfSxcbiAgICAgICAgeyBwcm92aWRlOiBGSVJFQkFTRV9BUFBfTkFNRSwgdXNlVmFsdWU6IG5hbWVPckNvbmZpZyB9LFxuICAgICAgICB7IHByb3ZpZGU6IEVTX0NPTkZJRywgdXNlVmFsdWU6IG9wdGlvbnMuZWxhc3RpY1NlYXJjaCB9LFxuICAgICAgXSxcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|