ng-easycommerce-v18 0.3.15 → 0.3.16
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/README.md +92 -90
- package/assets/decidirFormEc.html +514 -514
- package/assets/ec-i18n/ct.json +282 -281
- package/assets/ec-i18n/en.json +87 -83
- package/assets/ec-i18n/es.json +433 -429
- package/assets/ec-i18n/fr.json +1 -0
- package/assets/ec-i18n/gl.json +282 -281
- package/assets/ec-i18n/pr.json +282 -281
- package/assets/images/cards-occasional.svg +21 -21
- package/assets/recaptcha/recaptcha-site-keys.json +3 -3
- package/assets/recaptcha/recaptcha-sites-prod.json +38 -38
- package/assets/recaptcha/recaptcha-sites.json +52 -52
- package/esm2022/lib/api/connection.service.mjs +1 -1
- package/esm2022/lib/classes/checkout/steps.mjs +1 -1
- package/esm2022/lib/classes/component-helper.mjs +1 -1
- package/esm2022/lib/classes/filters/attributes-filter.mjs +1 -1
- package/esm2022/lib/classes/filters/category-filter.mjs +1 -1
- package/esm2022/lib/classes/filters/dynamics-filter.mjs +1 -1
- package/esm2022/lib/classes/filters/filter-factory.mjs +1 -1
- package/esm2022/lib/classes/filters/filter.mjs +1 -1
- package/esm2022/lib/classes/filters/index.mjs +1 -1
- package/esm2022/lib/classes/filters/price_range-filter.mjs +1 -1
- package/esm2022/lib/classes/filters/sort-filter.mjs +1 -1
- package/esm2022/lib/classes/index.mjs +1 -1
- package/esm2022/lib/classes/user.mjs +1 -1
- package/esm2022/lib/constants/api.constants.service.mjs +1 -1
- package/esm2022/lib/constants/core.constants.service.mjs +1 -1
- package/esm2022/lib/constants/index.mjs +1 -1
- package/esm2022/lib/ec-components/abstractions-components/block-ec.component.mjs +1 -1
- package/esm2022/lib/ec-components/abstractions-components/index.mjs +1 -1
- package/esm2022/lib/ec-components/abstractions-components/menu-ec.component.mjs +1 -1
- package/esm2022/lib/ec-components/account-ec/account-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/account-ec/index.mjs +1 -1
- package/esm2022/lib/ec-components/account-ec/order-ec/order-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/account-ec/orders-list-ec/orders-list-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/auth-ec/auth-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/auth-ec/confirm-account-ec/confirm-account-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/auth-ec/forgot-password-ec/forgot-password-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/auth-ec/index.mjs +1 -1
- package/esm2022/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/auth-ec/password-reset-ec/password-reset-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/auth-ec/register-form-ec/register-form-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/auth-ec/register-wholesaler-form-ec/register-wholesaler-form-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/blocks-ec/block-banner-box-ec/block-banner-box-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/blocks-ec/block-banner-full-ec/block-banner-full-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/blocks-ec/block-form-contact-ec/block-form-contact-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/blocks-ec/block-html-ec/block-html-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/blocks-ec/block-newsletter-ec/block-newsletter-ec.component.mjs +11 -5
- package/esm2022/lib/ec-components/blocks-ec/block-products-ec/block-products-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/blocks-ec/blocks-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/blocks-ec/index.mjs +1 -1
- package/esm2022/lib/ec-components/breadcrumb-ec/breadcrumb-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/cart-ec/cart-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/cart-ec/index.mjs +1 -1
- package/esm2022/lib/ec-components/checkout-ec/checkout-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/checkout-ec/dataform-ec/dataform-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/checkout-ec/dataform-ec/input-ec/input-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/bank-transfer-ec/bank-transfer-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/index.mjs +1 -1
- package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/mp-redirect-ec/mp-redirect-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/offline-ec/offline-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/checkout-ec/shipment-ec/shipment-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/checkout-ec/step-container-ec/step-container-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/checkout-ec/success-ec/success-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/collection-ec/collection-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/contact-ec/contact-ec.component.mjs +1 -1
- package/esm2022/lib/ec-components/coupon-ec/coupon-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/faqs-ec/faqs-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/filters-ec/filters-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/filters-sort-ec/filters-sort-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/footer-ec/footer-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/header-ec/header-ec.component.mjs +33 -4
- package/esm2022/lib/ec-components/home-ec/home-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/index.mjs +1 -1
- package/esm2022/lib/ec-components/price-range-filter/price-range-filter.component.mjs +3 -3
- package/esm2022/lib/ec-components/product-detail-ec/product-detail-ec.component.mjs +1 -1
- package/esm2022/lib/ec-components/product-ec/product-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/related-products-ec/related-products-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/reviews-ec/reviews-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/reviews-form-ec/reviews-form-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/section-container-ec/section-container-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/share-ec/share-buttons-ec/index.mjs +1 -1
- package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-email-ec/share-email-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-facebook-ec/share-facebook-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-pinterest-ec/share-pinterest-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-twitter-ec/share-twitter-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-whatsapp-ec/share-whatsapp-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/share-ec/share-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/sidebar-ec/sidebar-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/stores-ec/stores-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/variants-ec/variants-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/widgets-ec/decidir-ec/decidir-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/widgets-ec/index.mjs +1 -1
- package/esm2022/lib/ec-components/widgets-ec/loading/index.mjs +1 -1
- package/esm2022/lib/ec-components/widgets-ec/loading/loading-full-ec/loading-full-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/widgets-ec/loading/loading-inline-ec/loading-inline-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/widgets-ec/loading/loading-section-ec/loading-section-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/widgets-ec/magnizoom-ec/magnizoom-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/widgets-ec/price-ec/price-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/widgets-ec/rating-ec/rating-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/widgets-ec/re-captcha-ec/re-captcha-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/widgets-ec/redsys-catch-ec/redsys-catch-ec.component.mjs +3 -3
- package/esm2022/lib/ec-directive/index.mjs +1 -1
- package/esm2022/lib/ec-directive/product-off.directive.mjs +1 -1
- package/esm2022/lib/ec-directive/product-stock.directive.mjs +1 -1
- package/esm2022/lib/ec-guards/auth.guard.mjs +1 -1
- package/esm2022/lib/ec-pipe/ec-currency-symbol.pipe.mjs +1 -1
- package/esm2022/lib/ec-pipe/ec-safe-html.pipe.mjs +1 -1
- package/esm2022/lib/ec-pipe/index.mjs +1 -1
- package/esm2022/lib/ec-services/addressing.service.mjs +1 -1
- package/esm2022/lib/ec-services/analytics/analytics.service.mjs +1 -1
- package/esm2022/lib/ec-services/analytics/doppler.service.mjs +1 -1
- package/esm2022/lib/ec-services/analytics/facebook-pixel.service.mjs +1 -1
- package/esm2022/lib/ec-services/analytics/google-analytics.service.mjs +1 -1
- package/esm2022/lib/ec-services/analytics/gtm.service.mjs +1 -1
- package/esm2022/lib/ec-services/analytics/index.mjs +1 -1
- package/esm2022/lib/ec-services/analytics/metricool-pixel.service.mjs +11 -11
- package/esm2022/lib/ec-services/auth.service.mjs +1 -1
- package/esm2022/lib/ec-services/auth.storage.service.mjs +1 -1
- package/esm2022/lib/ec-services/blocks-repository.service.mjs +1 -1
- package/esm2022/lib/ec-services/blocks.service.mjs +1 -1
- package/esm2022/lib/ec-services/cart.service.mjs +1 -1
- package/esm2022/lib/ec-services/channel.service.mjs +1 -1
- package/esm2022/lib/ec-services/checkout.service.mjs +1 -1
- package/esm2022/lib/ec-services/currency.service.mjs +1 -1
- package/esm2022/lib/ec-services/filters.service.mjs +1 -1
- package/esm2022/lib/ec-services/form.service.mjs +1 -1
- package/esm2022/lib/ec-services/index.mjs +1 -1
- package/esm2022/lib/ec-services/local-storage.service.mjs +1 -1
- package/esm2022/lib/ec-services/ngx-local-storage.service.mjs +1 -1
- package/esm2022/lib/ec-services/options.service.mjs +1 -1
- package/esm2022/lib/ec-services/order-utility.service.mjs +11 -5
- package/esm2022/lib/ec-services/orders.service.mjs +1 -1
- package/esm2022/lib/ec-services/pagination.service.mjs +1 -1
- package/esm2022/lib/ec-services/parameters.service.mjs +1 -1
- package/esm2022/lib/ec-services/payment.service.mjs +1 -1
- package/esm2022/lib/ec-services/product-detail.service.mjs +1 -1
- package/esm2022/lib/ec-services/products.service.mjs +1 -1
- package/esm2022/lib/ec-services/re-captcha.service.mjs +1 -1
- package/esm2022/lib/ec-services/reviews.service.mjs +1 -1
- package/esm2022/lib/ec-services/shipment.service.mjs +1 -1
- package/esm2022/lib/ec-services/stores.service.mjs +1 -1
- package/esm2022/lib/ec-services/test.service.mjs +1 -1
- package/esm2022/lib/ec-services/toast.service.mjs +1 -1
- package/esm2022/lib/interceptors/auth.interceptor.mjs +1 -1
- package/esm2022/lib/interfaces/analytics/event-key.mjs +1 -1
- package/esm2022/lib/interfaces/analytics/facebook-pixel-data.mjs +1 -1
- package/esm2022/lib/interfaces/analytics/gtm-config.mjs +1 -1
- package/esm2022/lib/interfaces/analytics/index.mjs +1 -1
- package/esm2022/lib/interfaces/blocks.mjs +1 -1
- package/esm2022/lib/interfaces/checkout.mjs +1 -1
- package/esm2022/lib/interfaces/connection.mjs +1 -1
- package/esm2022/lib/interfaces/coupon.mjs +1 -1
- package/esm2022/lib/interfaces/currency.mjs +1 -1
- package/esm2022/lib/interfaces/deserializable.mjs +1 -1
- package/esm2022/lib/interfaces/environment.mjs +1 -1
- package/esm2022/lib/interfaces/faqs.mjs +1 -1
- package/esm2022/lib/interfaces/filter.mjs +1 -1
- package/esm2022/lib/interfaces/index.mjs +1 -1
- package/esm2022/lib/interfaces/options.mjs +1 -1
- package/esm2022/lib/interfaces/pagination.mjs +1 -1
- package/esm2022/lib/interfaces/parameter.mjs +1 -1
- package/esm2022/lib/interfaces/product.mjs +1 -1
- package/esm2022/lib/interfaces/step.mjs +1 -1
- package/esm2022/lib/interfaces/storage.mjs +1 -1
- package/esm2022/lib/interfaces/store.mjs +1 -1
- package/esm2022/lib/interfaces/types/user.type.mjs +1 -1
- package/esm2022/lib/providers/provideEnvironment.mjs +1 -1
- package/esm2022/lib/stores/currency.store.mjs +1 -1
- package/esm2022/public-api.mjs +1 -1
- package/fesm2022/ng-easycommerce-v18.mjs +181 -140
- package/fesm2022/ng-easycommerce-v18.mjs.map +1 -1
- package/lib/ec-components/header-ec/header-ec.component.d.ts +5 -0
- package/package.json +1 -1
|
@@ -607,4 +607,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
607
607
|
providedIn: 'root'
|
|
608
608
|
}]
|
|
609
609
|
}], ctorParameters: () => [] });
|
|
610
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLXNlcnZpY2VzL2NhcnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUMzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBaUIsY0FBYyxFQUFFLEdBQUcsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUN2RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFLekMsTUFBTSxPQUFPLFdBQVc7SUFDZixZQUFZLEdBQWdCLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNoRCxhQUFhLEdBQWlCLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNuRCxXQUFXLEdBQXNCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzNELFVBQVUsR0FBd0IsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDOUQsaUJBQWlCLEdBQXFCLE1B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ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmFsYW5jZUN1c3RvbWVyLCBDYXJ0SXRlbSwgSUNvdXBvbiwgUHJvZHVjdCB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuL3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi9hcGknO1xuaW1wb3J0IHsgQXBpQ29uc3RhbnRzU2VydmljZSwgQ29yZUNvbnN0YW50c1NlcnZpY2UgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBmaXJzdFZhbHVlRnJvbSwgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlIH0gZnJvbSAnLi9hbmFseXRpY3MnO1xuaW1wb3J0IHsgTG9jYWxTdG9yYWdlU2VydmljZSB9IGZyb20gJy4vbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IENoYW5uZWxTZXJ2aWNlIH0gZnJvbSAnLi9jaGFubmVsLnNlcnZpY2UnO1xuaW1wb3J0IHsgTmd4TG9jYWxTdG9yYWdlU2VydmljZSB9IGZyb20gJy4vbmd4LWxvY2FsLXN0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5ASW5qZWN0YWJsZSh7XG5cdHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDYXJ0U2VydmljZSB7XG5cdHByaXZhdGUgX2F1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSk7XG5cdHByaXZhdGUgX3RvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlID0gaW5qZWN0KFRvYXN0U2VydmljZSk7XG5cdHByaXZhdGUgX2Nvbm5lY3Rpb246IENvbm5lY3Rpb25TZXJ2aWNlID0gaW5qZWN0KENvbm5lY3Rpb25TZXJ2aWNlKTtcblx0cHJpdmF0ZSBfYXBpQ29uc3RzOiBBcGlDb25zdGFudHNTZXJ2aWNlID0gaW5qZWN0KEFwaUNvbnN0YW50c1NlcnZpY2UpO1xuXHRwcml2YXRlIF9hbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlID0gaW5qZWN0KEFuYWx5dGljc1NlcnZpY2UpO1xuXHRwcml2YXRlIF9sb2NhbFN0b3JhZ2U6IExvY2FsU3RvcmFnZVNlcnZpY2UgPSBpbmplY3QoTG9jYWxTdG9yYWdlU2VydmljZSk7XG5cdHByaXZhdGUgX2NoYW5uZWxTZXJ2aWNlOiBDaGFubmVsU2VydmljZSA9IGluamVjdChDaGFubmVsU2VydmljZSk7XG5cdHByaXZhdGUgX2NvbnN0czogQ29yZUNvbnN0YW50c1NlcnZpY2UgPSBpbmplY3QoQ29yZUNvbnN0YW50c1NlcnZpY2UpO1xuXHRwcml2YXRlIF9zdG9yYWdlOiBOZ3hMb2NhbFN0b3JhZ2VTZXJ2aWNlID0gaW5qZWN0KE5neExvY2FsU3RvcmFnZVNlcnZpY2UpO1xuXHRwcml2YXRlIF9yb3V0ZXI6IFJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuXG5cdHByaXZhdGUgX2NhcnRTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XG5cdHByaXZhdGUgX3Byb21vdGlvbnNTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3QoW10pO1xuXHRwcml2YXRlIF9jb3Vwb25TdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XG5cdHByaXZhdGUgX2NhcnRJdGVtc1N1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxDYXJ0SXRlbVtdPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q2FydEl0ZW1bXT4oW10pXG5cdHByaXZhdGUgX3JlcXVlc3RJblByb2Nlc3M6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXHRwcml2YXRlIF9iYWxhbmNlQ3VzdG9tZXJTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8QmFsYW5jZUN1c3RvbWVyIHwgbnVsbD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEJhbGFuY2VDdXN0b21lciB8IG51bGw+KG51bGwpO1xuXG5cdHByaXZhdGUgcmVhZG9ubHkgQ0FSVF9LRVk6IHN0cmluZyA9ICdjYXJ0Jztcblx0cHJpdmF0ZSByZWFkb25seSBDQVJUX1RPS0VOX0tFWTogc3RyaW5nID0gJ2NhcnRfdG9rZW4nO1xuXG5cdHByaXZhdGUgX2l0ZW1zOiBhbnlbXSA9IFtdO1xuXHRwcml2YXRlIF9jb3VudDogbnVtYmVyID0gMDtcblx0cHVibGljIGNhcnRUb2tlbjogc3RyaW5nIHwgbnVsbCA9ICcnO1xuXHRwdWJsaWMgY2hhbm5lbENvbmZpZzogYW55ID0ge307XG5cdHByaXZhdGUgX2xvY2FsZSA9IFwiXCI7XG5cdHByaXZhdGUgX2NhcnRJbml0aWFsaXplZCA9IGZhbHNlOyAvLyDimqDvuI8gRklYOiBGbGFnIHBhcmEgZXZpdGFyIGluaWNpYWxpemFjaW9uZXMgZHVwbGljYWRhc1xuXHRwdWJsaWMgY2FydEl0ZW1zJCA9IHRoaXMuX2NhcnRJdGVtc1N1YmplY3QuYXNPYnNlcnZhYmxlKCkucGlwZShtYXAoaXRlbXMgPT4gdGhpcy5zd2l0Y2hQcmljZUluQ2FydEl0ZW0oaXRlbXMpKSlcblx0cHVibGljIGNvdXBvbiQ6IE9ic2VydmFibGU8YW55PiA9IHRoaXMuX2NvdXBvblN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cdHB1YmxpYyBjYXJ0JDogT2JzZXJ2YWJsZTxhbnk+ID0gdGhpcy5fY2FydFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cdHB1YmxpYyBsb2FkaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuX3JlcXVlc3RJblByb2Nlc3MuYXNPYnNlcnZhYmxlKCk7XG5cdHByaXZhdGUgX2hhdmVUb1VwZGF0ZSA9IHRydWU7XG5cdHB1YmxpYyBiYWxhbmNlQ3VzdG9tZXIkID0gdGhpcy5fYmFsYW5jZUN1c3RvbWVyU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICBwdWJsaWMgYWxsb3dBbnlQYXltZW50TWV0aG9kJCA9IHRoaXMuYmFsYW5jZUN1c3RvbWVyJC5waXBlKG1hcChkYXRhID0+IGRhdGE/LmFsbG93QW55UGF5bWVudE1ldGhvZCA/PyBudWxsKSk7XG4gICAgcHVibGljIGFsbG93RXhjZWVkQmFsYW5jZSQgPSB0aGlzLmJhbGFuY2VDdXN0b21lciQucGlwZShtYXAoZGF0YSA9PiBkYXRhPy5hbGxvd0V4Y2VlZEJhbGFuY2UgPz8gbnVsbCkpO1xuICAgIHB1YmxpYyBjcmVkaXRBbW91bnQkID0gdGhpcy5iYWxhbmNlQ3VzdG9tZXIkLnBpcGUobWFwKGRhdGEgPT4gZGF0YT8uY3JlZGl0QW1vdW50ID8/IG51bGwpKTtcbiAgICBwdWJsaWMgc2hvd01heCQgPSB0aGlzLmJhbGFuY2VDdXN0b21lciQucGlwZShtYXAoZGF0YSA9PiBkYXRhPy5zaG93TWF4ID8/IG51bGwpKTtcbiAgICBwdWJsaWMgc2hvd1ByaWNlJCA9IHRoaXMuYmFsYW5jZUN1c3RvbWVyJC5waXBlKG1hcChkYXRhID0+IGRhdGE/LnNob3dQcmljZSA/PyBudWxsKSk7XG5cdHB1YmxpYyBwcm9tb3Rpb25zJCA9IHRoaXMuX3Byb21vdGlvbnNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXHQvL0FQSSBVUkxcblx0cHJpdmF0ZSBfY2FydEJhc2VVcmw6IHN0cmluZyA9IGAke3RoaXMuX2FwaUNvbnN0cy5TSE9QX0FQSV9VUkx9JHt0aGlzLl9hcGlDb25zdHMuQ0hBTk5FTH0vY2FydHNgO1xuXG5cdHB1YmxpYyB1cGRhdGVJdGVtUXVhbnRpdHlBcGkoaXRlbV9pZDogYW55KSB7IHJldHVybiB0aGlzLl9jYXJ0QmFzZVVybCArICcvJyArIHRoaXMuY2FydFRva2VuICsgJy9pdGVtcy8nICsgaXRlbV9pZCArICc/bG9jYWxlPScgKyB0aGlzLl9hcGlDb25zdHMuTE9DQUxFOyB9XG5cdHB1YmxpYyBhZGRJdGVtQXBpKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLl9jYXJ0QmFzZVVybCArICcvJyArIHRoaXMuY2FydFRva2VuICsgJy9pdGVtcz9sb2NhbGU9JyArIHRoaXMuX2FwaUNvbnN0cy5MT0NBTEUgfVxuXHRwdWJsaWMgYWRkQWxsSXRlbXNBcGkgPSAoKSA9PiB0aGlzLl9jYXJ0QmFzZVVybCArICcvJyArIHRoaXMuY2FydFRva2VuICsgJy9tdWx0aXBsZS1pdGVtcycgKyAnP2xvY2FsZT0nICsgdGhpcy5fYXBpQ29uc3RzLkxPQ0FMRTtcblx0cHVibGljIGNhcnRJdGVtc0FwaSgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5fY2FydEJhc2VVcmwgKyAnP2xvY2FsZT0nICsgdGhpcy5fYXBpQ29uc3RzLkxPQ0FMRSB9XG5cdHB1YmxpYyBkZWxldGVJdGVtQXBpKGl0ZW1faWQ6IHN0cmluZykgeyByZXR1cm4gdGhpcy5fY2FydEJhc2VVcmwgKyAnLycgKyB0aGlzLmNhcnRUb2tlbiArICcvaXRlbXMvJyArIGl0ZW1faWQgKyAnP2xvY2FsZT0nICsgdGhpcy5fYXBpQ29uc3RzLkxPQ0FMRTsgfVxuXHRwdWJsaWMgY291cG9uQXBpKCkgeyByZXR1cm4gdGhpcy5fY2FydEJhc2VVcmwgKyAnLycgKyB0aGlzLmNhcnRUb2tlbiArICcvY291cG9uJyB9O1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHRoaXMuX3JlcXVlc3RJblByb2Nlc3MubmV4dCh0cnVlKTtcblx0XHRcblx0XHQvLyDinIUgQ2FyZ2FyIGNhcnJpdG8gbG9jYWwgeSB0b2tlbiBwcmV2aW9cblx0XHR0aGlzLl9pdGVtcyA9IEpTT04ucGFyc2UodGhpcy5fbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5DQVJUX0tFWSkgfHwgJ1tdJyk7XG5cdFx0dGhpcy5jYXJ0VG9rZW4gPSB0aGlzLl9sb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLkNBUlRfVE9LRU5fS0VZKSB8fCBudWxsO1xuXHRcdFxuXHRcdC8vIPCflJEgQ0xBVkU6IFN1c2NyaXBjacOzbiBhIGNhbWJpb3MgZGUgZXN0YWRvIGRlIGxvZ2luXG5cdFx0dGhpcy5fYXV0aFNlcnZpY2UubG9nZ2VkSW4kLnN1YnNjcmliZShpc0xvZ2dlZEluID0+IHtcblx0XHRcdGlmIChpc0xvZ2dlZEluICYmICF0aGlzLl9jYXJ0SW5pdGlhbGl6ZWQpIHtcblx0XHRcdFx0dGhpcy5zeW5jQ2FydE9uTG9naW4oKTtcblx0XHRcdFx0dGhpcy5fY2FydEluaXRpYWxpemVkID0gdHJ1ZTtcblx0XHRcdH0gZWxzZSBpZiAoIWlzTG9nZ2VkSW4gJiYgdGhpcy5fY2FydEluaXRpYWxpemVkKSB7XG5cdFx0XHRcdC8vIFVzdWFyaW8gY2VycsOzIHNlc2nDs24sIGxpbXBpYXIgeSByZXNldGVhciBjYXJyaXRvXG5cdFx0XHRcdHRoaXMuY2xlYXJBbmRSZXNldEN1c3RvbWVyQ2FydCgpO1xuXHRcdFx0XHR0aGlzLl9jYXJ0SW5pdGlhbGl6ZWQgPSBmYWxzZTsgLy8gUmVzZXQgZmxhZyBwYXJhIHBlcm1pdGlyIG51ZXZhIGluaWNpYWxpemFjacOzblxuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdFxuXHRcdHRoaXMuX2NoYW5uZWxTZXJ2aWNlLmNoYW5uZWwkLnN1YnNjcmliZShyZXMgPT4gdGhpcy5jaGFubmVsQ29uZmlnID0gcmVzKTtcblx0XHRcblx0XHQvLyDimqDvuI8gRklYOiBTb2xvIGluaWNpYWxpemFyIHBhcmEgdXN1YXJpb3Mgbm8gYXV0ZW50aWNhZG9zXG5cdFx0Ly8gRWwgY2Fycml0byBkZSB1c3VhcmlvcyBhdXRlbnRpY2Fkb3Mgc2UgaW5pY2lhbGl6YSBlbiBsYSBzdXNjcmlwY2nDs24gbG9nZ2VkSW4kXG5cdFx0aWYgKCF0aGlzLl9hdXRoU2VydmljZS5pc0F1dGhlbnRpY2F0ZWQoKSAmJiAhdGhpcy5fY2FydEluaXRpYWxpemVkKSB7XG5cdFx0XHQvLyBTaSBoYXkgdG9rZW4sIGludGVudGFyIG9idGVuZXIgY2Fycml0byBwb3IgdG9rZW4sIHNpbm8gY3JlYXIgbnVldm9cblx0XHRcdGlmICh0aGlzLmNhcnRUb2tlbikge1xuXHRcdFx0XHR0aGlzLmdldENhcnQoKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMuZ2V0Q2FydEJ5Q3VzdG9tZXIoKTtcblx0XHRcdH1cblx0XHRcdHRoaXMuX2NhcnRJbml0aWFsaXplZCA9IHRydWU7XG5cdFx0fVxuXHR9XG5cdFxuXHQvKipcblx0ICogU2luY3Jvbml6YSBlbCBjYXJyaXRvIGN1YW5kbyBlbCB1c3VhcmlvIGhhY2UgbG9naW5cblx0ICogSW1wbGVtZW50YSBsYSBsw7NnaWNhIGRlIEFuZ3VsYXIgOSBwYXJhIHByZXNlcnZhciBlbCBjYXJyaXRvIGRlbCBpbnZpdGFkb1xuXHQgKi9cblx0cHJpdmF0ZSBzeW5jQ2FydE9uTG9naW4oKSB7XG5cdFx0Ly8g4pqg77iPIEZJWDogU2kgaGF5IHRva2VuIChjYXJyaXRvIGV4aXN0ZW50ZSksIHNpZW1wcmUgaW50ZW50YXIgcmVjdXBlcmFybG9cblx0XHQvLyBObyBkZXBlbmRlbW9zIHNvbG8gZGUgbG9zIGl0ZW1zIGxvY2FsZXMgcXVlIHB1ZWRlbiBlc3RhciB2YWPDrW9zIGFsIHJlY2FyZ2FyXG5cdFx0aWYgKHRoaXMuY2FydFRva2VuKSB7XG5cdFx0XHQvLyBFbnbDrWEgZWwgdG9rZW4gcGFyYSByZWN1cGVyYXIvZnVzaW9uYXIgY2Fycml0b3Ncblx0XHRcdHRoaXMuZ2V0Q2FydCgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBTaW4gdG9rZW4gZGUgY2Fycml0bywgb2J0ZW5lciBjYXJyaXRvIGRlbCB1c3VhcmlvIGF1dGVudGljYWRvXG5cdFx0XHR0aGlzLmdldENhcnRCeUN1c3RvbWVyKCk7XG5cdFx0fVxuXHR9XG5cdC8qKlxuXHQgKiBPYnRpZW5lIGVsIGNhcnJpdG8gZGVzZGUgZWwgYmFja2VuZCBjb24gbMOzZ2ljYSBkZSBzaW5jcm9uaXphY2nDs25cblx0ICogRW52w61hIGVsIHRva2VuIHNpIGhheSBjYXJyaXRvIGxvY2FsIHBhcmEgZnVzaW9uYXIgY2Fycml0b3Ncblx0ICovXG5cdHByaXZhdGUgZ2V0Q2FydCgpIHtcblx0XHQvLyDimqDvuI8gRklYOiBFbnZpYXIgdG9rZW4gc2kgZXhpc3RlLCBzaW4gaW1wb3J0YXIgc2kgaGF5IGl0ZW1zIGxvY2FsZXNcblx0XHQvLyBFc3RvIHBlcm1pdGUgcmVjdXBlcmFyIGVsIGNhcnJpdG8gZXhpc3RlbnRlIGFsIHJlY2FyZ2FyIGxhIHDDoWdpbmFcblx0XHRjb25zdCBwYXlsb2FkID0gdGhpcy5jYXJ0VG9rZW4gPyB7IHRva2VuOiB0aGlzLmNhcnRUb2tlbiB9IDogdW5kZWZpbmVkO1xuXHRcdFxuXHRcdGZpcnN0VmFsdWVGcm9tKFxuXHRcdFx0dGhpcy5fY29ubmVjdGlvbi5wb3N0KHRoaXMuY2FydEl0ZW1zQXBpKCksIHBheWxvYWQpXG5cdFx0KS50aGVuKChyZXM6IGFueSkgPT4ge1xuXHRcdFx0Ly9jb25zb2xlLmxvZygnZ2V0Q2FydCByZXNwb25zZTonLCByZXMpO1xuXHRcdFx0dGhpcy5pbml0aWFsaXplQ2FydChyZXMpO1xuXHRcdH0pLmNhdGNoKGVycm9yID0+IHtcblx0XHRcdGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGdldHRpbmcgY2FydDonLCBlcnJvcik7XG5cdFx0XHR0aGlzLl9yZXF1ZXN0SW5Qcm9jZXNzLm5leHQoZmFsc2UpO1xuXHRcdH0pO1xuXHR9XG5cdC8qKlxuXHQgKiBDb25maWd1cmEgZWwgY2Fycml0byBjb24gbG9zIHBhcmFtZXRyb3MgaW5pY2lhbGVzLlxuXHQgKiBAcGFyYW0gcmVzcG9uc2UgXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0aW5pdGlhbGl6ZUNhcnQocmVzcG9uc2U6IGFueSk6IGFueSB7XG5cdFx0dGhpcy5jYXJ0VG9rZW4gPSByZXNwb25zZS50b2tlblZhbHVlO1xuXHRcdHRoaXMuX2xvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuQ0FSVF9UT0tFTl9LRVksIHRoaXMuY2FydFRva2VuKTtcblx0XHR0aGlzLl9sb2NhbGUgPSByZXNwb25zZS5sb2NhbGU7XG5cblx0XHR0aGlzLnVwZGF0ZUNhcnRPYmoocmVzcG9uc2UsIGZhbHNlKTtcblx0XHR0aGlzLnVwZGF0ZUNhcnRJdGVtcyh0aGlzLnRyYW5zZm9ybUl0ZW1zKHJlc3BvbnNlLml0ZW1zKSk7XG5cdFx0dGhpcy5fcmVxdWVzdEluUHJvY2Vzcy5uZXh0KGZhbHNlKTtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXHQvKipcblx0ICogQWN0dWFsaXphIGxvcyBpdGVtcyBkZWwgY2Fycml0by5cblx0ICogQHBhcmFtIGl0ZW1zIFxuXHQgKi9cblx0dXBkYXRlQ2FydEl0ZW1zKGl0ZW1zOiBhbnlbXSkge1xuXHRcdHRoaXMuX2l0ZW1zID0gaXRlbXM7XG5cdFx0dGhpcy5fY291bnQgPSBpdGVtcy5sZW5ndGg7XG5cdFx0dGhpcy5fY2FydEl0ZW1zU3ViamVjdC5uZXh0KHRoaXMuX2l0ZW1zKTtcblx0XHR0aGlzLnVwZGF0ZUxvY2FsQ2FydCgpO1xuXHRcdHRoaXMuX3JlcXVlc3RJblByb2Nlc3MubmV4dChmYWxzZSk7XG5cdH1cblx0LyoqXG5cdCAqIEFncmVnYSB1biBwcm9kdWN0byBhbCBjYXJyaXRvIGNvbiBsYSBjYW50aWRhZCBkZXNlYWRhLiBcblx0ICogQHBhcmFtIHByb2R1Y3QgUHJvZHVjdG8gYSBhZ3JlZ2FyXG5cdCAqIEBwYXJhbSBxdWFudGl0eSBDYW50aWRhZCBcblx0ICogQHBhcmFtIHZhcmlhbnRJZCBJZCBkZSBsYSB2YXJpYW50ZVxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdGFkZFRvQ2FydChwcm9kdWN0OiBQcm9kdWN0LCBxdWFudGl0eTogbnVtYmVyLCB2YXJpYW50SWQ6IHN0cmluZykge1xuXHRcdGNvbnN0IGJhbGFuY2U6QmFsYW5jZUN1c3RvbWVyIHwgbnVsbCA9IHRoaXMuX2JhbGFuY2VDdXN0b21lclN1YmplY3QudmFsdWU7XG5cdFx0Y29uc3QgYXBwbHlNYXhPcmRlcnM6Ym9vbGVhbiA9IGJhbGFuY2U/LmFwcGx5TWF4T3JkZXJzID8/IGZhbHNlO1xuICAgICAgICBjb25zdCBtYXhPcmRlcnM6bnVtYmVyID0gYmFsYW5jZT8ubWF4T3JkZXJzID8/IEluZmluaXR5O1xuXG4gICAgICAgIGlmIChhcHBseU1heE9yZGVycyAmJiAobWF4T3JkZXJzIDw9IDAgfHwgbWF4T3JkZXJzID09PSBudWxsKSkge1xuICAgICAgICAgICAgdGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ21heC1vcmRlcnMtcmVhY2hlZCcpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cdFx0aWYgKCF0aGlzLl9hdXRoU2VydmljZS5pc0FibGVUb0J1eSgpKSB7XG5cdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnbXVzdC1zZWxlY3QtY3VzdG9tZXInKVxuXHRcdFx0cmV0dXJuXG5cdFx0IH1cblx0XHR0aGlzLl9yZXF1ZXN0SW5Qcm9jZXNzLm5leHQodHJ1ZSk7XG5cdFx0bGV0IGFkZGVkID0gdGhpcy5hZGRJZkFsbHJlYWR5RXhpc3RzKHByb2R1Y3QsIHZhcmlhbnRJZCwgcXVhbnRpdHkpO1xuXG5cdFx0aWYgKCFhZGRlZCkge1xuXHRcdFx0Zmlyc3RWYWx1ZUZyb20oXG5cdFx0XHRcdHRoaXMuX2Nvbm5lY3Rpb24ucG9zdCh0aGlzLmFkZEl0ZW1BcGkoKSwgeyBwcm9kdWN0Q29kZTogcHJvZHVjdC5pZCwgcXVhbnRpdHk6IHF1YW50aXR5LCB2YXJpYW50Q29kZTogdmFyaWFudElkIH0pKVxuXHRcdFx0XHQudGhlbihcblx0XHRcdFx0XHRyZXMgPT4ge1xuXHRcdFx0XHRcdFx0Ly8gTWFuZWphciBsYSByZXNwdWVzdGEgSFRUUCBleGl0b3NhIChjw7NkaWdvIDIwMClcblx0XHRcdFx0XHRcdHRoaXMuYXBwZW5kVG9DYXJ0KHJlcyk7XG5cdFx0XHRcdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygncHJvZHVjdC1hZGRlZCcpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0ZXJyID0+IHtcblx0XHRcdFx0XHRcdC8vIE1hbmVqYXIgZWwgZXJyb3IgZGUgbGEgbGxhbWFkYSBIVFRQIChjw7NkaWdvIDUwMCB1IG90cm8gZXJyb3IpXG5cdFx0XHRcdFx0XHRpZiAoZXJyLnN0YXR1cyA9PT0gNTAwKSB7XG5cdFx0XHRcdFx0XHRcdC8vIEPDs2RpZ28gZGUgZXJyb3IgNTAwICh0aW1lb3V0KVxuXHRcdFx0XHRcdFx0XHR0aGlzLmhhbmRsZUVycm9yKGVycik7XG5cdFx0XHRcdFx0XHRcdHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdjYXJ0LWVycm9yJyk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHQvLyBPdHJvIGPDs2RpZ28gZGUgZXJyb3Jcblx0XHRcdFx0XHRcdFx0dGhpcy5oYW5kbGVFcnJvcihlcnIpO1xuXHRcdFx0XHRcdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnZXJyb3Itc2VydmVyJyk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdH1cblx0fVxuXHQvKipcblx0ICogQWN0dWFsaXphIGVsIGNhcnJpdG8gYWdyZWdhbmRvIGxvcyBudWV2b3MgaXRlbXMuXG5cdCAqIEBwYXJhbSBjYXJ0IFxuXHQgKi9cblx0YXBwZW5kVG9DYXJ0KGNhcnQ6IGFueSkge1xuXHRcdHRoaXMudXBkYXRlQ2FydE9iaihjYXJ0KTtcblx0XHR0aGlzLl9pdGVtcyA9IHRoaXMudHJhbnNmb3JtSXRlbXMoY2FydC5pdGVtcyk7XG5cdFx0dGhpcy5fY291bnQgPSB0aGlzLl9pdGVtcy5sZW5ndGg7XG5cdFx0dGhpcy5fcmVxdWVzdEluUHJvY2Vzcy5uZXh0KGZhbHNlKTtcblx0XHR0aGlzLnVwZGF0ZUxvY2FsQ2FydCgpO1xuXHRcdHRoaXMuX2NhcnRJdGVtc1N1YmplY3QubmV4dCh0aGlzLl9pdGVtcyk7XG5cdH1cblx0LyoqXG5cdCAqIE1hcGVhIGxvcyBpdGVtcyBkZWwgY2Fycml0byBwYXJhIGRhcmxlIHVuIG1lam9yIGZvcm1hdG8gc2ltaWxhciBhIGxhIGludGVyZmF6IGBDYXJ0SXRlbWAuXG5cdCAqIEBwYXJhbSBpdGVtcyBcblx0ICogQHJldHVybnMgXG5cdCAqL1xuXHR0cmFuc2Zvcm1JdGVtcyhpdGVtczogYW55KTogYW55W10ge1xuXHRcdHJldHVybiBpdGVtcy5tYXAoKGl0ZW06IGFueSkgPT4ge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0cHJvZHVjdDogaXRlbS5wcm9kdWN0LFxuXHRcdFx0XHR2YXJpYW50X2lkOiBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0uY29kZSxcblx0XHRcdFx0bG90OiBpdGVtLm9yZGVySXRlbUxvdCxcblx0XHRcdFx0cXVhbnRpdHk6IGl0ZW0ucXVhbnRpdHksXG5cdFx0XHRcdGl0ZW1faWQ6IGl0ZW0uaWQsXG5cdFx0XHRcdHRvdGFsOiBpdGVtLnRvdGFsXG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblx0LyoqXG5cdCAqIENoZXF1ZWEgc2kgZWwgcHJvZHVjdG8geWEgZXhpc3RlIGVuIGVsIGNhcnJpdG8gZGUgY29tcHJhcy5cblx0ICogQHBhcmFtIHByb2R1Y3QgXG5cdCAqIEBwYXJhbSB2YXJpYW50SWQgXG5cdCAqIEBwYXJhbSBxdWFudGl0eUFkZCBDYW50aWRhZCBhIGFncmVnYXIuIFBvciBkZWZlY3RvIGVzIDEuXG5cdCAqL1xuXHRhZGRJZkFsbHJlYWR5RXhpc3RzKHByb2R1Y3Q6IFByb2R1Y3QsIHZhcmlhbnRJZDogc3RyaW5nLCBxdWFudGl0eUFkZDogbnVtYmVyID0gMSkge1xuXHRcdHJldHVybiB0aGlzLl9pdGVtcy5maW5kKChpdGVtOiBhbnksIGluZGV4KSA9PiB7XG5cdFx0XHRpZiAoaXRlbS5wcm9kdWN0LmlkID09IHByb2R1Y3QuaWQgJiYgaXRlbS52YXJpYW50X2lkID09IHZhcmlhbnRJZCkge1xuXHRcdFx0XHR0aGlzLnVwZGF0ZUl0ZW1RdWFudGl0eShpdGVtLCB0aGlzLmZpbmRJdGVtKHByb2R1Y3QuaWQpLnF1YW50aXR5ICsgcXVhbnRpdHlBZGQpO1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9KVxuXHR9XG5cdC8qKlxuXHQgKiBPYnRpZW5lIGxhIGNhbnRpZGFkIGRlIHVuIHByb2R1Y3RvIGRlbCBpdGVtIGRlbCBjYXJyaXRvIFxuXHQgKiBAcGFyYW0gY29kZVZhcmlhbnQgY29kaWdvIGRlIGxhIHZhcmlhbnRlLlxuXHQgKiBAcmV0dXJucyBsYSBjYW50aWRhZCBvIGAwYCBlbiBzdSBkZWZlY3RvLlxuXHQgKi9cblx0Z2V0Q291bnRGcm9tSXRlbUluQ2FydChjb2RlVmFyaWFudDogYW55KTogbnVtYmVyIHtcblx0XHRyZXR1cm4gdGhpcy5faXRlbXMuZmluZChpdGVtID0+IGl0ZW0udmFyaWFudF9pZCA9PSBjb2RlVmFyaWFudCk/LnF1YW50aXR5IHx8IDA7XG5cdH1cblx0LyoqXG5cdCAqIE9idGllbmUgdW4gb2JzZXJ2YWJsZSBjb24gbGEgY2FudGlkYWQgZGUgaXRlbXMgZW4gZWwgY2Fycml0by5cblx0ICovXG5cdGdldENvdW50Q2FydEl0ZW1zKCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG5cdFx0cmV0dXJuIHRoaXMuY2FydEl0ZW1zJC5waXBlKG1hcCgoY2FydEl0ZW1zKSA9PiBjYXJ0SXRlbXM/Lmxlbmd0aCkpO1xuXHR9XG5cdC8qKlxuXHQgKiBNYXBlYSBsb3MgcHJvZHVjdG9zIGVuIGVsIGNhcnJpdG8gcGFyYSBjYW1iaWFyIGVsIHByZWNpbyBvYnRlbmllbmRvIGRlIGxhIHZhcmlhbnRlIHkgc2VsZWNjaW9uYW5kbyBzaSBlc1xuXHQgKiBwcmVjaW8gZGUgb2ZlcnRhIG8gZWwgcHJlY2lvIG5vcm1hbC5cblx0ICogQHBhcmFtIGl0ZW1zIFxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdHByaXZhdGUgc3dpdGNoUHJpY2VJbkNhcnRJdGVtID0gKGl0ZW1zOiBhbnlbXSkgPT4ge1xuXHRcdHJldHVybiBpdGVtcy5tYXAoXG5cdFx0XHRpdGVtID0+IHtcblx0XHRcdFx0aWYgKGl0ZW0ucHJvZHVjdCkge1xuXHRcdFx0XHRcdGl0ZW0ucHJvZHVjdC5wcmljZSA9IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXS5zYWxlcHJpY2UgPyBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0uc2FsZXByaWNlIDogaXRlbS5wcm9kdWN0LnZhcmlhbnRzWzBdLnByaWNlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBpdGVtXG5cdFx0XHR9XG5cdFx0KVxuXHR9XG5cdC8qKlxuXHQgKiBBY3R1YWxpemEgbGEgY2FudGlkYWQgZGUgdW4gcHJvZHVjdG8gZXhpc3RlbnRlIGVuIGVsIGNhcnJpdG8uXG5cdCAqIEBwYXJhbSBpdGVtIGVsIGl0ZW0gYSBhY3R1YWxpemFyLlxuXHQgKiBAcGFyYW0gcXVhbnRpdHkgbGEgY2FudGlkYWQgbnVldmEuXG5cdCAqL1xuXHR1cGRhdGVJdGVtUXVhbnRpdHkoaXRlbTogQ2FydEl0ZW0sIHF1YW50aXR5OiBudW1iZXIpIHtcblx0XHRpZiAodGhpcy52YWxpZGF0ZVF1YW50aXR5KGl0ZW0sIHF1YW50aXR5KSAmJiAodGhpcy52YWxpZGF0ZVByaWNlQW5kQ3JlZGl0cyhpdGVtLCBxdWFudGl0eSkpKSB7XG5cdFx0XHRmaXJzdFZhbHVlRnJvbShcblx0XHRcdFx0dGhpcy5fY29ubmVjdGlvbi5wdXQodGhpcy51cGRhdGVJdGVtUXVhbnRpdHlBcGkodGhpcy5maW5kSXRlbUJ5SWRWYXJpYW50KGl0ZW0udmFyaWFudF9pZCkpLCB7ICdxdWFudGl0eSc6IE51bWJlcihxdWFudGl0eSkgfSkpLnRoZW4oXG5cdFx0XHRcdFx0cmVzID0+IHRoaXMudXBkYXRlQ2FydE9iaihyZXMpICYmIHRoaXMudXBkYXRlQ2FydEl0ZW1RdWFudGl0eShpdGVtLnZhcmlhbnRfaWQsIE51bWJlcihxdWFudGl0eSkpLFxuXHRcdFx0XHRcdGVyciA9PiB0aGlzLmhhbmRsZUVycm9yKGVycilcblx0XHRcdFx0KVxuXHRcdH1cblx0fVxuXHQvKipcblx0ICogTWFuZWphIGVsIGVycm9yIGVuIGNhc28gZGUgcXVlIG5vIHNlIHB1ZWRhIGFncmVnYXIgYWwgY2Fycml0byBlbCBwcm9kdWN0by5cblx0ICogQHBhcmFtIGVyciBcblx0ICovXG5cdGhhbmRsZUVycm9yKGVycjogYW55KTogdm9pZCB7XG5cdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ29wZXJhdGlvbi1lcnJvci1wYXJhbScpO1xuXHRcdHRoaXMuX3JlcXVlc3RJblByb2Nlc3MubmV4dChmYWxzZSk7XG5cdH1cblx0LyoqXG5cdCAqIEFjdHVhbGl6YSBsYSBjYW50aWRhZCBkZWwgaXRlbSBkZWwgcHJvZHVjdG8gZGVsIGNhcnJpdG8uXG5cdCAqIEBwYXJhbSB2YXJpYW50SWQgSUQgZGUgbGEgdmFyaWFudGUgcGFyYSBidXNjYXIgZWwgaXRlbS5cblx0ICogQHBhcmFtIHF1YW50aXR5IE51ZXZhIGNhbnRpZGFkLiBcblx0ICovXG5cdHVwZGF0ZUNhcnRJdGVtUXVhbnRpdHkodmFyaWFudElkOiBhbnksIHF1YW50aXR5OiBudW1iZXIpOiB2b2lkIHtcblx0XHQvL2NvbnNvbGUubG9nKFwidXBkYXRlQ2FydEl0ZW1RdWFudGl0eVwiLCB0aGlzLl9pdGVtcywgdmFyaWFudElkKVxuXHRcdGxldCBuZXdRdWFudGl0eSA9IHRoaXMuX2l0ZW1zLmZpbmQoaXRlbSA9PiBpdGVtLnZhcmlhbnRfaWQgPT0gdmFyaWFudElkKS5xdWFudGl0eSA9IHF1YW50aXR5O1xuXHRcdHRoaXMuX2NhcnRJdGVtc1N1YmplY3QubmV4dCh0aGlzLl9pdGVtcyk7XG5cdFx0dGhpcy5fcmVxdWVzdEluUHJvY2Vzcy5uZXh0KGZhbHNlKTtcblx0XHR0aGlzLnVwZGF0ZUxvY2FsQ2FydCgpO1xuXHRcdHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdwcm9kdWN0LXVwZGF0ZWQnLCB7IHF1YW50aXR5OiBuZXdRdWFudGl0eSB9KTtcblx0fVxuXHQvKipcblx0ICogQWN0dWFsaXphIGxvcyBkYXRvcyBkZWwgY2Fycml0byBlbiBlbCBsb2NhbFN0b3JhZ2UuIFxuXHQgKi9cblx0dXBkYXRlTG9jYWxDYXJ0KCkge1xuXHRcdHRoaXMuX3N0b3JhZ2Uuc2V0SXRlbSh0aGlzLkNBUlRfS0VZLCB0aGlzLl9pdGVtcylcblx0fVxuXHQvKipcblx0ICogQWN0dWFsaXphIGVsIGNhcnJpdG8uIEVtaXRlIGV2ZW50byBkZSBhbmFsaXRpY3MuIFxuXHQgKiBBY3R1YWxpemEgdG9kbyBsbyByZWxhY2lvbmFkbyBhbCBjdXDDs24uXG5cdCAqIEBwYXJhbSBjYXJ0IFJlc3B1ZXN0YSBwcm9kdWNpZGEgcG9yIGVsIGVucG9pbnQgY29uIGluZm9ybWFjacOzbiBkZWwgY2Fycml0by5cblx0ICogQHBhcmFtIGVtaXRFdmVudCBcblx0ICogQHJldHVybnMgXG5cdCAqL1xuXHR1cGRhdGVDYXJ0T2JqKGNhcnQ6IGFueSwgZW1pdEV2ZW50ID0gdHJ1ZSk6IGJvb2xlYW4ge1xuXHRcdHRoaXMuX2NhcnRTdWJqZWN0Lm5leHQoY2FydCk7XG5cdFx0dGhpcy51cGRhdGVCYWxhbmNlQXR0cmlidXRlcyhjYXJ0Py5iYWxhbmNlQ3VzdG9tZXIsIGNhcnQ/LnRvdGFscz8udG90YWwpO1xuXHRcdGVtaXRFdmVudCAmJiB0aGlzLl9hbmFseXRpY3NTZXJ2aWNlLmNhbGxFdmVudCgnYWRkX3RvX2NhcnQnLCBjYXJ0KTtcblx0XHQvL3RoaXMuX3Byb21vdGlvbnNTdWJqZWN0Lm5leHQodGhpcy5vcmRlclV0aWxzLmdldFByb21vdGlvbnMoY2FydCwgdHJ1ZSkpO1xuXG5cdFx0Y2FydC5jb3Vwb25Db2RlXG5cdFx0XHQ/IHRoaXMuZm9ybWF0Q291cG9uKGNhcnQpXG5cdFx0XHQ6IHRoaXMuX2NvdXBvblN1YmplY3QubmV4dChudWxsKTtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXHQvKipcblx0ICogQXBsaWNhciB1biBtZWpvciBmb3JtYXRvIGEgbG9zIGRhdG9zIGRlIGxvcyBjdXBvbmVzIGFwbGljYWRvcy5cblx0ICogQHBhcmFtIGNhcnQgXG5cdCAqL1xuXHRmb3JtYXRDb3Vwb24oY2FydDogYW55KSB7XG5cdFx0bGV0IGN1cnJlbnRfY291cG9uID0gdGhpcy5fY291cG9uU3ViamVjdC52YWx1ZTtcblx0XHRsZXQgY291cG9uOiBJQ291cG9uID0geyBjb2RlOiBjYXJ0LmNvdXBvbkNvZGUgfTtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3Qga2V5ID0gT2JqZWN0LmtleXMoY2FydC5jYXJ0RGlzY291bnRzKVswXTtcblx0XHRcdGNvdXBvbiA9IHtcblx0XHRcdFx0Li4uY291cG9uLFxuXHRcdFx0XHRhbW91bnQ6IChjYXJ0LmNhcnREaXNjb3VudHMgJiYgY2FydC5jYXJ0RGlzY291bnRzW2tleV0uYW1vdW50LmN1cnJlbnQpIHx8IDAsXG5cdFx0XHRcdG5hbWU6IChjYXJ0LmNhcnREaXNjb3VudHMgJiYgY2FydC5jYXJ0RGlzY291bnRzW2tleV0ubmFtZSkgfHwgJ25vLW5hbWUnXG5cdFx0XHR9O1xuXHRcdH0gY2F0Y2ggKGUpIHsgfVxuXHRcdChjb3Vwb24gIT0gY3VycmVudF9jb3Vwb24pICYmIHRoaXMuX2NvdXBvblN1YmplY3QubmV4dChjb3Vwb24pO1xuXHRcdC8vY29uc29sZS5sb2coY291cG9uKTtcblx0fVxuXHQvKipcblx0ICogUmV0b3JuYSBlbCBJRCBkZWwgaXRlbSBkZWwgY2Fycml0by5cblx0ICogQHBhcmFtIHZhcmlhbnRfaWQgSWQgZGUgbGEgdmFyaWFudGUgdXRpbGl6YWRhIHBhcmEgYnVzY2FyIGVsIGl0ZW0uXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0ZmluZEl0ZW1CeUlkVmFyaWFudCh2YXJpYW50X2lkOiBhbnkpOiBhbnkge1xuXHRcdHJldHVybiB0aGlzLl9pdGVtcy5maW5kKGl0ZW0gPT4gaXRlbS52YXJpYW50X2lkID09IHZhcmlhbnRfaWQpIS5pdGVtX2lkXG5cdH1cblx0LyoqXG5cdCAqIFZhbGlkYSBsYSBjYW50aWRhZCBwYXJhIHNhYmVyIHNpIHNlIHB1ZWRlIGFjdHVhbGl6YXIgbyBuby5cblx0ICogQHBhcmFtIGl0ZW0gaXRlbSBkZWwgY2Fycml0b1xuXHQgKiBAcGFyYW0gcXVhbnRpdHkgY2FudGlkYWQgYSBhZ3JlZ2FyXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0dmFsaWRhdGVRdWFudGl0eShpdGVtOiBhbnksIHF1YW50aXR5OiBhbnkpIHtcblx0XHRpZiAoKHRoaXMuZ2V0Q291bnRGcm9tSXRlbUluQ2FydChpdGVtLnByb2R1Y3RDb2RlKSArIHF1YW50aXR5KSA+IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXS5tYXhpbXVtSXRlbXNRdWFudGl0eSkge1xuXHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ21heGltdW0taXRlbXMtcXVhbnRpdHknLCB7IHF1YW50aXR5OiBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0ubWF4aW11bUl0ZW1zUXVhbnRpdHkgfSlcblx0XHRcdHJldHVybiBmYWxzZVxuXHRcdH1cblx0XHRpZiAoKHRoaXMuZ2V0Q291bnRGcm9tSXRlbUluQ2FydChpdGVtLnByb2R1Y3RDb2RlKSArIHF1YW50aXR5KSA8IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXS5taW5pbXVtSXRlbXNRdWFudGl0eSkge1xuXHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ21pbmltdW0taXRlbXMtcXVhbnRpdHknLCB7IHF1YW50aXR5OiBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0ubWluaW11bUl0ZW1zUXVhbnRpdHkgfSlcblx0XHRcdHJldHVybiBmYWxzZVxuXHRcdH1cblx0XHRyZXR1cm4gdHJ1ZVxuXHR9XG5cdC8qKlxuXHQgKiBCdXNjYSB1biBwcm9kdWN0byBhIHRyYXbDqXMgZGUgc3UgSUQgZW4gbG9zIGl0ZW1zIGRlbCBjYXJyaXRvLlxuXHQgKiBAcGFyYW0gcHJvZHVjdF9pZCBcblx0ICogQHJldHVybnNcblx0ICovXG5cdGZpbmRJdGVtKHByb2R1Y3RfaWQ6IGFueSk6IGFueSB7IHJldHVybiB0aGlzLl9pdGVtcy5maW5kKChpdGVtOiBhbnkpID0+IGl0ZW0ucHJvZHVjdC5pZCA9PSBwcm9kdWN0X2lkKSB9XG5cdC8qKlxuXHQgKiBFbGltaW5hIHVuIGl0ZW0gZGVsIGNhcnJpdG8gZW4gZWwgYmFja2VuZC5cblx0ICogQHBhcmFtIGl0ZW0gaXRlbSBhIGVsaW1pbmFyXG5cdCAqIEBwYXJhbSB0b2FzdCBpbmRpY2Egc2kgc2UgZGlzcGFyYSB1biB0b2FzdCAgbyBuby4gUG9yIGRlZmVjdG8gZW4gYHRydWVgLlxuXHQgKi9cblx0ZGVsZXRlQ2FydEl0ZW0oaXRlbTogYW55LCB0b2FzdDogYm9vbGVhbiA9IHRydWUpIHtcblx0XHRsZXQgaWRJdGVtU2VhcmNoZWQgPSB0aGlzLmZpbmRJdGVtQnlJZFZhcmlhbnQoaXRlbS52YXJpYW50X2lkKVxuXHRcdC8vY29uc29sZS5sb2coaWRJdGVtU2VhcmNoZWQpXG5cdFx0dGhpcy5fcmVxdWVzdEluUHJvY2Vzcy5uZXh0KHRydWUpO1xuXHRcdGZpcnN0VmFsdWVGcm9tKHRoaXMuX2Nvbm5lY3Rpb24uZGVsZXRlKHRoaXMuZGVsZXRlSXRlbUFwaShpZEl0ZW1TZWFyY2hlZCkpKS50aGVuKFxuXHRcdFx0cmVzID0+IHtcblx0XHRcdFx0dGhpcy5yZW1vdmVDYXJ0SXRlbShyZXMsIGl0ZW0sIHRvYXN0KTtcblx0XHRcdFx0dGhpcy5fcmVxdWVzdEluUHJvY2Vzcy5uZXh0KGZhbHNlKTtcblx0XHRcdH0sXG5cdFx0XHRlcnIgPT4ge1xuXHRcdFx0XHR0aGlzLmhhbmRsZUVycm9yKGVycik7XG5cdFx0XHRcdHRoaXMuX3JlcXVlc3RJblByb2Nlc3MubmV4dChmYWxzZSk7XG5cdFx0XHR9XG5cdFx0KVxuXHR9XG5cdC8qKlxuXHQgKiBFbGltaW5hIHVuIGl0ZW0gZW4gY2Fycml0byBkZSBmb3JtYSBsb2NhbC4gXG5cdCAqIEBwYXJhbSBjYXJ0IENhcnJpdG8sIGVzIGRlY2lyLCByZXNwdWVzdGEgZGVsIGJhY2tlbmQuXG5cdCAqIEBwYXJhbSBwcm9kdWN0IHByb2R1Y3RvIGEgZWxpbWluYXJcblx0ICogQHBhcmFtIHRvYXN0IHtib29sZWFufSBwYXJhIGluZGljYXIgc2kgc2UgZGlzcGFyYSB1biB0b2FzdCBvIG5vLiBcblx0ICovXG5cdHJlbW92ZUNhcnRJdGVtKGNhcnQ6IGFueSwgcHJvZHVjdDogYW55LCB0b2FzdDogYm9vbGVhbikge1xuXHRcdHRoaXMudXBkYXRlQ2FydE9iaihjYXJ0LCBmYWxzZSk7XG5cdFx0dGhpcy5faXRlbXMuc3BsaWNlKHRoaXMuX2l0ZW1zLmZpbmRJbmRleCh2YWx1ZSA9PiB2YWx1ZS5pdGVtX2lkID09PSBwcm9kdWN0Lml0ZW1faWQpLCAxKTtcblx0XHR0aGlzLl9jYXJ0SXRlbXNTdWJqZWN0Lm5leHQodGhpcy5faXRlbXMpO1xuXHRcdHRvYXN0ICYmIHRoaXMuX3JlcXVlc3RJblByb2Nlc3MubmV4dChmYWxzZSk7XG5cdFx0dG9hc3QgJiYgdGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ3Byb2R1Y3QtcmVtb3ZlZCcpO1xuXHRcdHRoaXMudXBkYXRlTG9jYWxDYXJ0KCk7XG5cdFx0dGhpcy5fYW5hbHl0aWNzU2VydmljZS5jYWxsRXZlbnQoJ3JlbW92ZV9mcm9tX2NhcnQnLCB7IC4uLnByb2R1Y3QsIGN1cnJlbmN5OiB0aGlzLl9jb25zdHMuY3VycmVuY3kuY29kZSB9KVxuXHR9XG5cdC8qKlxuXHQgKiBBZ3JlZ2EgdW4gY3Vwb24gYWwgY2Fycml0by5cblx0ICogQHBhcmFtIHZhbHVlIENvZGlnbyBkZWwgY3Vww7NuLlxuXHQgKi9cblx0YWRkQ291cG9uKHZhbHVlOiBzdHJpbmcpIHtcblx0XHRmaXJzdFZhbHVlRnJvbSh0aGlzLl9jb25uZWN0aW9uLnB1dCh0aGlzLmNvdXBvbkFwaSgpLCB7IGNvdXBvbjogdmFsdWUgfSkpLnRoZW4oXG5cdFx0XHRyZXMgPT4ge1xuXHRcdFx0XHQvL2NvbnNvbGUubG9nKHJlcylcblx0XHRcdFx0dGhpcy51cGRhdGVDYXJ0T2JqKHJlcylcblx0XHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ0N1cG9uIGFwbGljYWRvJylcblx0XHRcdH0sXG5cdFx0XHRlcnIgPT4ge1xuXHRcdFx0XHQvL2NvbnNvbGUuZXJyb3IoZXJyKSBcblx0XHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ2ludmFsaWQtY291cG9uJylcblx0XHRcdH1cblx0XHQpXG5cdH1cblx0LyoqXG5cdCAqIEVsaW1pbmEgdW4gY3Vww7NuIGRlbCBjYXJyaXRvLiBcblx0ICovXG5cdHJlbW92ZUNvdXBvbigpIHtcblx0XHRmaXJzdFZhbHVlRnJvbSh0aGlzLl9jb25uZWN0aW9uLmRlbGV0ZSh0aGlzLmNvdXBvbkFwaSgpKSkudGhlbihcblx0XHRcdHJlcyA9PiB7XG5cdFx0XHRcdC8vY29uc29sZS5sb2cocmVzKVxuXHRcdFx0XHR0aGlzLnVwZGF0ZUNhcnRPYmoocmVzKVxuXHRcdFx0fVxuXHRcdClcblx0fVxuXG5cdGdldENvdXBvbkNvZGUoKTogT2JzZXJ2YWJsZTxzdHJpbmcgfCBudWxsPiB7XG5cdFx0cmV0dXJuIHRoaXMuY2FydCQucGlwZShtYXAoKGNhcnQpID0+IGNhcnQ/LmNvdXBvbkNvZGUpKTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIFJldG9ybmEgdW4gb2JzZXJ2YWJsZSBjb24gZWwgc3VidG90YWwgZGVsIGNhcnJpdG8uXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0Z2V0U3ViVG90YWxBbW91bnQoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcblx0XHRyZXR1cm4gdGhpcy5jYXJ0JC5waXBlKG1hcCgoY2FydCkgPT4gY2FydD8udG90YWxzPy5zdWJ0b3RhbCkpO1xuXHR9XG5cdC8qKlxuXHQgKiBSZXRvcm5hIHVuIG9ic2VydmFibGUgY29uIGVsIHRvdGFsIGRlbCBtb250byBkZSBsYXMgcHJvbW9jaW9uZXMgYXBsaWNhZGFzLlxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdGdldFRvdGFsUHJvbW90aW9uQW1vdW50KCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG5cdFx0cmV0dXJuIHRoaXMuY2FydCQucGlwZShtYXAoKGNhcnQpID0+IGNhcnQ/LnRvdGFscz8ucHJvbW90aW9uKSk7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBSZXRvcm5hIHVuIG9ic2VydmFibGUgY29uIGVsIG1vbnRvIGRlIGxvcyBpbXB1ZXN0b3MgYXBsaWNhZG9zLlxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdGdldFRheGVzQW1vdW50KCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG5cdFx0cmV0dXJuIHRoaXMuY2FydCQucGlwZShtYXAoKGNhcnQpID0+IGNhcnQ/LnRvdGFscz8udGF4ZXMgPiAwID8gY2FydD8udG90YWxzPy50YXhlcyA6IDApKTtcblx0fVxuXHQvKipcblx0ICogUmV0b3JuYSB1biBvYnNlcnZhYmxlIGNvbiBlbCBtb250byB0b3RhbCBkZWwgY2Fycml0by5cblx0ICogQHJldHVybnMgXG5cdCAqL1xuXHRnZXRUb3RhbEFtb3VudCgpIHtcblx0XHRyZXR1cm4gdGhpcy5jYXJ0JC5waXBlKG1hcCgoY2FydCkgPT4gY2FydD8udG90YWxzPy50b3RhbCkpO1xuXHR9XG5cdC8qKlxuXHQgKiBSZXRvcm5hIGVsIHRva2VuIGRlbCBjYXJyaXRvLlxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdGdldENhcnRUb2tlbigpIHtcblx0XHRyZXR1cm4gdGhpcy5jYXJ0VG9rZW47XG5cdH1cblx0Y2hhbmdlSGF2ZVRvVXBkYXRlID0gKHZhbHVlOiBhbnkpID0+IHRoaXMuX2hhdmVUb1VwZGF0ZSA9IHZhbHVlO1xuXHRjbGVhckFuZFJlc2V0Q3VzdG9tZXJDYXJ0KCkge1xuXHRcdC8vIGNvbnNvbGUubG9nKFwiQ2xlYXJpbmcgYW5kIHJlc2V0aW5nLi4uXCIpXG5cdFx0dGhpcy5yZXNldENhcnQodGhpcy5nZXRDYXJ0QnlDdXN0b21lcilcblx0fVxuXG5cdHByaXZhdGUgZ2V0Q2FydEJ5Q3VzdG9tZXIgPSBhc3luYyAoKSA9PlxuXHRcdHRoaXMuX2Nvbm5lY3Rpb24ucG9zdCh0aGlzLmNhcnRJdGVtc0FwaSgpKS5zdWJzY3JpYmUoXG5cdFx0XHRyZXMgPT4gdGhpcy5pbml0aWFsaXplQ2FydChyZXMpXG5cdFx0KVxuXHRwcml2YXRlIHJlc2V0Q2FydCA9IChmbj86IGFueSkgPT4ge1xuXHRcdHRoaXMuX2l0ZW1zID0gW107XG5cdFx0dGhpcy5fY2FydFN1YmplY3QubmV4dChudWxsKTtcblx0XHR0aGlzLnVwZGF0ZUJhbGFuY2VBdHRyaWJ1dGVzKG51bGwpO1xuXHRcdHRoaXMuY2FydFRva2VuID0gbnVsbDtcblx0XHR0aGlzLl9jYXJ0SXRlbXNTdWJqZWN0Lm5leHQoW10pO1xuXHRcdHRoaXMuX2NvdW50ID0gMDtcblx0XHR0aGlzLl9sb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLkNBUlRfS0VZLCBcIltdXCIpO1xuXHRcdHRoaXMuX2xvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuQ0FSVF9UT0tFTl9LRVkpO1xuXHRcdHRoaXMuX2NhcnRJbml0aWFsaXplZCA9IGZhbHNlOyAvLyDimqDvuI8gRklYOiBSZXNldCBkZWwgZmxhZyBkZSBpbmljaWFsaXphY2nDs25cblx0XHRmbiAmJiBmbigpO1xuXHR9XG5cdGNsZWFyQW5kUmVzZXRDYXJ0KCkge1xuICAgICAgICB0aGlzLnJlc2V0Q2FydCh0aGlzLmdldENhcnRCeUN1c3RvbWVyKTsgLy8g4pqg77iPIEZJWDogQ3JlYXIgbnVldm8gY2Fycml0byBkZXNwdcOpcyBkZSBjb21wbGV0YXIgY29tcHJhXG4gICAgfVxuXG5cdHB1YmxpYyB1cGRhdGVCYWxhbmNlQXR0cmlidXRlcyhiYWxhbmNlOiBhbnksIHRvdGFsOiBudW1iZXIgfCBudWxsID0gbnVsbCkge1xuXG5cdFx0aWYgKCFiYWxhbmNlKSB7XG4gICAgICAgICAgICB0aGlzLl9iYWxhbmNlQ3VzdG9tZXJTdWJqZWN0Lm5leHQobnVsbCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuXHRcdGNvbnN0IHRvdGFsQW1vdW50ID0gdG90YWwgPz8gMDtcblxuICAgICAgICBjb25zdCBiYWxhbmNlRGF0YSA9IHtcbiAgICAgICAgICAgIGFsbG93QW55UGF5bWVudE1ldGhvZDogYmFsYW5jZS5hbGxvd0FueVBheW1lbnRNZXRob2QsXG4gICAgICAgICAgICBhbGxvd0V4Y2VlZEJhbGFuY2U6IGJhbGFuY2UuYWxsb3dFeGNlZWRCYWxhbmNlLFxuICAgICAgICAgICAgY3JlZGl0QW1vdW50OiBiYWxhbmNlLmNyZWRpdEFtb3VudCxcbiAgICAgICAgICAgIHNob3dNYXg6IGJhbGFuY2Uuc2hvd01heCxcbiAgICAgICAgICAgIHNob3dQcmljZTogYmFsYW5jZS5zaG93UHJpY2UsXG4gICAgICAgICAgICByZW1haW5pbmdDcmVkaXRzOiBcblx0XHRcdFx0YmFsYW5jZS5jcmVkaXRBbW91bnQgIT0gbnVsbCAmJiB0b3RhbEFtb3VudCAhPSBudWxsICYmIGJhbGFuY2UuY3JlZGl0QW1vdW50ID49IHRvdGFsQW1vdW50XG4gICAgICAgICAgICAgICAgXHQ/IGJhbGFuY2UuY3JlZGl0QW1vdW50IC0gdG90YWxBbW91bnRcbiAgICAgICAgICAgICAgICBcdDogMCxcblx0XHRcdFx0YXBwbHlNYXhPcmRlcnM6IGJhbGFuY2UuYXBwbHlNYXhPcmRlcnMsXG5cdFx0XHRcdG1heE9yZGVyczogYmFsYW5jZS5tYXhPcmRlcnNcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLl9iYWxhbmNlQ3VzdG9tZXJTdWJqZWN0Lm5leHQoYmFsYW5jZURhdGEpO1xuICAgIH1cblx0YWRkVG9Mb3QocHJvZHVjdDogUHJvZHVjdCwgcXVhbnRpdHk6IG51bWJlciwgdmFyaWFudF9pZDogYW55LCBpZD86IG51bWJlciwgb3JkZXJfaXRlbV9pZD86IGFueSwgbG90X3F1YW50aXR5PzogYW55LCB1bml0X3ByaWNlPzogYW55LCB1bml0X3RvdGFsPzogYW55LCBhanVzdGVtZW50X3RvdGFsPzogYW55LCB0b3RhbF9sb3Q/OiBudW1iZXIsIGxvdF9zdGF0dXM/OiBzdHJpbmcsIGRhdGVfcmVxdWVzdD86IHN0cmluZywgbm90ZXM/OiBzdHJpbmcsIHNoaXBwaW5nX2FkZHJlc3NfaWQ/OiBudW1iZXIsIHNoaXBwaW5nX2FkZHJlc3NfbmFtZT86IHN0cmluZywgYWN0aW9uPzogc3RyaW5nKXtcbiAgICAgICAgaWYgKCF0aGlzLl9hdXRoU2VydmljZS5pc0FibGVUb0J1eSgpKSB7XG4gICAgICAgICAgICB0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnbXVzdC1zZWxlY3QtY3VzdG9tZXInKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBsZXQgYWRkZWQgPSAnJztcbiAgICAgICAgIWFkZGVkICYmIHRoaXMuX2Nvbm5lY3Rpb24ucG9zdCh0aGlzLmFkZEl0ZW1BcGkoKSwgeyBwcm9kdWN0Q29kZTogcHJvZHVjdC5pZCwgcXVhbnRpdHk6IHF1YW50aXR5LCB2YXJpYW50Q29kZTogdmFyaWFudF9pZCwgaWQ6IGlkIHx8ICcnLCBvcmRlcl9pdGVtX2lkOiBvcmRlcl9pdGVtX2lkIHx8ICcnLCBsb3RfcXVhbnRpdHk6IGxvdF9xdWFudGl0eSB8fCAnJywgdW5pdF9wcmljZTogdW5pdF9wcmljZSB8fCAnJywgdW5pdF90b3RhbDogdW5pdF90b3RhbCB8fCAnJywgYWp1c3RlbWVudF90b3RhbDogYWp1c3RlbWVudF90b3RhbCB8fCAnJywgdG90YWxfbG90OiB0b3RhbF9sb3QgfHwgJycsIGxvdF9zdGF0dXM6IGxvdF9zdGF0dXMgfHwgJycsIGRhdGVfcmVxdWVzdDogZGF0ZV9yZXF1ZXN0IHx8ICcnLCBub3Rlczogbm90ZXMgfHwgJycsIHNoaXBwaW5nX2FkZHJlc3NfaWQ6IHNoaXBwaW5nX2FkZHJlc3NfaWQgfHwgJycsIHNoaXBwaW5nX2FkZHJlc3NfbmFtZTogc2hpcHBpbmdfYWRkcmVzc19uYW1lIHx8ICcnLCBhY3Rpb246IGFjdGlvbiB8fCAnbmV3bG90JyB9KVxuICAgICAgICAgICAgLnN1YnNjcmliZSh7XG5cdFx0XHRcdG5leHQ6IChyZXMpID0+IHRoaXMuYXBwZW5kVG9DYXJ0KHJlcyksXG5cdFx0XHRcdGVycm9yOiAoZXJyKSA9PiB0aGlzLmhhbmRsZUVycm9yKGVycilcblx0XHRcdH0pO1xuICAgIH1cblxuXHRcbiAgICBnZXRDcmVkaXRBbW91bnQgPSAoKTogT2JzZXJ2YWJsZTxudW1iZXIgfCBudWxsPiA9PlxuICAgICAgICB0aGlzLl9iYWxhbmNlQ3VzdG9tZXJTdWJqZWN0LnBpcGUoXG4gICAgICAgICAgICBtYXAoKGJhbGFuY2VDdXN0b21lcikgPT4gYmFsYW5jZUN1c3RvbWVyPy5jcmVkaXRBbW91bnQgPz8gbnVsbClcbiAgICAgICAgKTtcblxuXG4gICAgZ2V0UmVtYWluaW5nQ3JlZGl0cyA9ICgpOiBPYnNlcnZhYmxlPG51bWJlciB8IHVuZGVmaW5lZD4gPT5cbiAgICAgICAgdGhpcy5fYmFsYW5jZUN1c3RvbWVyU3ViamVjdC5waXBlKG1hcCgoYmFsYW5jZUN1c3RvbWVyKSA9PiBiYWxhbmNlQ3VzdG9tZXI/LnJlbWFpbmluZ0NyZWRpdHMpKTtcblxuXHRcblx0cHVibGljIGhhc1N1ZmZpY2llbnRDcmVkaXRzRm9yQ2FydFRvdGFsID0gKCk6IGJvb2xlYW4gPT4ge1xuXHRcdGNvbnN0IGJhbGFuY2UgPSB0aGlzLl9iYWxhbmNlQ3VzdG9tZXJTdWJqZWN0LnZhbHVlO1xuXG5cdFx0aWYgKCFiYWxhbmNlIHx8IGJhbGFuY2UuY3JlZGl0QW1vdW50ID09PSBudWxsIHx8IGJhbGFuY2UuY3JlZGl0QW1vdW50ID09PSB1bmRlZmluZWQpIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblxuXHRcdGlmIChiYWxhbmNlLnJlbWFpbmluZ0NyZWRpdHMgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdGlmICgodGhpcy5fY2FydFN1YmplY3QudmFsdWU/LnRvdGFscz8udG90YWwgPz8gMCkgPiBiYWxhbmNlLmNyZWRpdEFtb3VudCkge1xuXHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ25vdC1lbm91Z2gtY3JlZGl0cycpO1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuXG5cdHByaXZhdGUgdmFsaWRhdGVQcmljZUFuZENyZWRpdHMgPSAoaXRlbTogQ2FydEl0ZW0sIHF1YW50aXR5OiBudW1iZXIpOiBib29sZWFuID0+IHtcbiAgICAgICAgY29uc3QgYmFsYW5jZSA9IHRoaXMuX2JhbGFuY2VDdXN0b21lclN1YmplY3QudmFsdWU7XG5cbiAgICAgICAgaWYgKCFiYWxhbmNlIHx8IGJhbGFuY2UuY3JlZGl0QW1vdW50ID09PSBudWxsIHx8IGJhbGFuY2UuY3JlZGl0QW1vdW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJhbGFuY2UucmVtYWluaW5nQ3JlZGl0cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB1bml0UHJpY2UgPSBpdGVtLnRvdGFsIC8gaXRlbS5xdWFudGl0eTtcbiAgICAgICAgY29uc3QgYWRkaXRpb25hbFF1YW50aXR5ID0gcXVhbnRpdHkgLSBpdGVtLnF1YW50aXR5O1xuXG4gICAgICAgIGlmIChhZGRpdGlvbmFsUXVhbnRpdHkgPD0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhZGRpdGlvbmFsQ29zdCA9IHVuaXRQcmljZSAqIGFkZGl0aW9uYWxRdWFudGl0eTtcblxuICAgICAgICBpZiAoYWRkaXRpb25hbENvc3QgPiBiYWxhbmNlLnJlbWFpbmluZ0NyZWRpdHMpIHtcbiAgICAgICAgICAgIHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdub3QtZW5vdWdoLWNyZWRpdHMnKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG5cblx0YWRkUmVwZWF0T3JkZXJUb0NhcnQoaXRlbXM6IGFueVtdKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9jYXJ0SXRlbXNTdWJqZWN0LnZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdjYXJ0LW5vdC1lbXB0eScpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLl9hdXRoU2VydmljZS5pc0FibGVUb0J1eSgpKSB7XG4gICAgICAgICAgICB0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnbXVzdC1zZWxlY3QtY3VzdG9tZXInKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpdGVtc1RvQWRkID0gaXRlbXMubWFwKGl0ZW0gPT4gKHtcbiAgICAgICAgICAgIHByb2R1Y3RDb2RlOiBpdGVtLnByb2R1Y3QuaWQsXG4gICAgICAgICAgICBxdWFudGl0eTogaXRlbS5xdWFudGl0eSxcbiAgICAgICAgICAgIHZhcmlhbnRDb2RlOiBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0uY29kZVxuICAgICAgICB9KSk7XG5cbiAgICAgICAgaWYgKGl0ZW1zVG9BZGQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnbm8tcHJvZHVjdHMtdG8tYWRkJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgICBpdGVtczogaXRlbXNUb0FkZFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuX3JlcXVlc3RJblByb2Nlc3MubmV4dCh0cnVlKTtcblxuICAgICAgICB0aGlzLl9jb25uZWN0aW9uLnBvc3QodGhpcy5hZGRBbGxJdGVtc0FwaSgpLCBwYXJhbXMpXG4gICAgICAgICAgICAudG9Qcm9taXNlKClcbiAgICAgICAgICAgIC50aGVuKHJlcyA9PiB7XG5cbiAgICAgICAgICAgICAgICBpZiAocmVzPy5zdGF0dXMgPT09ICdmYWlsdXJlJykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSByZXMuZXJyb3I/LnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXFxzKy9nLCAnXycpIHx8ICd1bmtub3duX2Vycm9yJztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coZXJyb3JNZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zUmVzcG9uc2UgPSByZXM/Lml0ZW1zX3Jlc3BvbnNlIHx8IFtdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNhcnRJdGVtcyA9IHJlcz8uY2FydD8uaXRlbXMgfHwgW107XG5cblx0XHRcdFx0Y29uc3Qgb3V0T2ZTdG9ja0l0ZW1zID0gaXRlbXNSZXNwb25zZS5maWx0ZXIoKGl0ZW06IGFueSkgPT5cblx0XHRcdFx0XHRpdGVtLnN0YXR1cyA9PT0gJ2ZhaWx1cmUnICYmXG5cdFx0XHRcdFx0aXRlbS5lcnJvcnMuc29tZSgoZXJyb3I6IGFueSkgPT4gZXJyb3IuY29kZSA9PT0gJ291dF9vZl9zdG9jaycpXG5cdFx0XHRcdCk7XG5cbiAgICAgICAgICAgICAgICBpZiAoY2FydEl0ZW1zLmxlbmd0aCA9PT0gMCAmJiBvdXRPZlN0b2NrSXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnYWxsLXByb2R1Y3RzLW91dC1vZi1zdG9jaycpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKG91dE9mU3RvY2tJdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdzb21lLXByb2R1Y3RzLW91dC1vZi1zdG9jaycpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChjYXJ0SXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUNhcnRPYmoocmVzLmNhcnQpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUNhcnRJdGVtcyh0aGlzLnRyYW5zZm9ybUl0ZW1zKGNhcnRJdGVtcykpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygncHJvZHVjdHMtYWRkZWQnKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFsnL2NhcnQnXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlcnIgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGVycik7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxufVxuIl19
|
|
610
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLXNlcnZpY2VzL2NhcnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUMzQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBaUIsY0FBYyxFQUFFLEdBQUcsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUN2RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFLekMsTUFBTSxPQUFPLFdBQVc7SUFDZixZQUFZLEdBQWdCLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNoRCxhQUFhLEdBQWlCLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNuRCxXQUFXLEdBQXNCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzNELFVBQVUsR0FBd0IsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDOUQsaUJBQWlCLEdBQXFCLE1B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ZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCYWxhbmNlQ3VzdG9tZXIsIENhcnRJdGVtLCBJQ291cG9uLCBQcm9kdWN0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuL3RvYXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4uL2FwaSc7XHJcbmltcG9ydCB7IEFwaUNvbnN0YW50c1NlcnZpY2UsIENvcmVDb25zdGFudHNTZXJ2aWNlIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBmaXJzdFZhbHVlRnJvbSwgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFuYWx5dGljc1NlcnZpY2UgfSBmcm9tICcuL2FuYWx5dGljcyc7XHJcbmltcG9ydCB7IExvY2FsU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL2xvY2FsLXN0b3JhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IENoYW5uZWxTZXJ2aWNlIH0gZnJvbSAnLi9jaGFubmVsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOZ3hMb2NhbFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9uZ3gtbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuXHRwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIENhcnRTZXJ2aWNlIHtcclxuXHRwcml2YXRlIF9hdXRoU2VydmljZTogQXV0aFNlcnZpY2UgPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xyXG5cdHByaXZhdGUgX3RvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlID0gaW5qZWN0KFRvYXN0U2VydmljZSk7XHJcblx0cHJpdmF0ZSBfY29ubmVjdGlvbjogQ29ubmVjdGlvblNlcnZpY2UgPSBpbmplY3QoQ29ubmVjdGlvblNlcnZpY2UpO1xyXG5cdHByaXZhdGUgX2FwaUNvbnN0czogQXBpQ29uc3RhbnRzU2VydmljZSA9IGluamVjdChBcGlDb25zdGFudHNTZXJ2aWNlKTtcclxuXHRwcml2YXRlIF9hbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlID0gaW5qZWN0KEFuYWx5dGljc1NlcnZpY2UpO1xyXG5cdHByaXZhdGUgX2xvY2FsU3RvcmFnZTogTG9jYWxTdG9yYWdlU2VydmljZSA9IGluamVjdChMb2NhbFN0b3JhZ2VTZXJ2aWNlKTtcclxuXHRwcml2YXRlIF9jaGFubmVsU2VydmljZTogQ2hhbm5lbFNlcnZpY2UgPSBpbmplY3QoQ2hhbm5lbFNlcnZpY2UpO1xyXG5cdHByaXZhdGUgX2NvbnN0czogQ29yZUNvbnN0YW50c1NlcnZpY2UgPSBpbmplY3QoQ29yZUNvbnN0YW50c1NlcnZpY2UpO1xyXG5cdHByaXZhdGUgX3N0b3JhZ2U6IE5neExvY2FsU3RvcmFnZVNlcnZpY2UgPSBpbmplY3QoTmd4TG9jYWxTdG9yYWdlU2VydmljZSk7XHJcblx0cHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcclxuXHJcblx0cHJpdmF0ZSBfY2FydFN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxhbnk+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcclxuXHRwcml2YXRlIF9wcm9tb3Rpb25zU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdKTtcclxuXHRwcml2YXRlIF9jb3Vwb25TdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XHJcblx0cHJpdmF0ZSBfY2FydEl0ZW1zU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PENhcnRJdGVtW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDYXJ0SXRlbVtdPihbXSlcclxuXHRwcml2YXRlIF9yZXF1ZXN0SW5Qcm9jZXNzOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcclxuXHRwcml2YXRlIF9iYWxhbmNlQ3VzdG9tZXJTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8QmFsYW5jZUN1c3RvbWVyIHwgbnVsbD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEJhbGFuY2VDdXN0b21lciB8IG51bGw+KG51bGwpO1xyXG5cclxuXHRwcml2YXRlIHJlYWRvbmx5IENBUlRfS0VZOiBzdHJpbmcgPSAnY2FydCc7XHJcblx0cHJpdmF0ZSByZWFkb25seSBDQVJUX1RPS0VOX0tFWTogc3RyaW5nID0gJ2NhcnRfdG9rZW4nO1xyXG5cclxuXHRwcml2YXRlIF9pdGVtczogYW55W10gPSBbXTtcclxuXHRwcml2YXRlIF9jb3VudDogbnVtYmVyID0gMDtcclxuXHRwdWJsaWMgY2FydFRva2VuOiBzdHJpbmcgfCBudWxsID0gJyc7XHJcblx0cHVibGljIGNoYW5uZWxDb25maWc6IGFueSA9IHt9O1xyXG5cdHByaXZhdGUgX2xvY2FsZSA9IFwiXCI7XHJcblx0cHJpdmF0ZSBfY2FydEluaXRpYWxpemVkID0gZmFsc2U7IC8vIOKaoO+4jyBGSVg6IEZsYWcgcGFyYSBldml0YXIgaW5pY2lhbGl6YWNpb25lcyBkdXBsaWNhZGFzXHJcblx0cHVibGljIGNhcnRJdGVtcyQgPSB0aGlzLl9jYXJ0SXRlbXNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUobWFwKGl0ZW1zID0+IHRoaXMuc3dpdGNoUHJpY2VJbkNhcnRJdGVtKGl0ZW1zKSkpXHJcblx0cHVibGljIGNvdXBvbiQ6IE9ic2VydmFibGU8YW55PiA9IHRoaXMuX2NvdXBvblN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcblx0cHVibGljIGNhcnQkOiBPYnNlcnZhYmxlPGFueT4gPSB0aGlzLl9jYXJ0U3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHRwdWJsaWMgbG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLl9yZXF1ZXN0SW5Qcm9jZXNzLmFzT2JzZXJ2YWJsZSgpO1xyXG5cdHByaXZhdGUgX2hhdmVUb1VwZGF0ZSA9IHRydWU7XHJcblx0cHVibGljIGJhbGFuY2VDdXN0b21lciQgPSB0aGlzLl9iYWxhbmNlQ3VzdG9tZXJTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG4gICAgcHVibGljIGFsbG93QW55UGF5bWVudE1ldGhvZCQgPSB0aGlzLmJhbGFuY2VDdXN0b21lciQucGlwZShtYXAoZGF0YSA9PiBkYXRhPy5hbGxvd0FueVBheW1lbnRNZXRob2QgPz8gbnVsbCkpO1xyXG4gICAgcHVibGljIGFsbG93RXhjZWVkQmFsYW5jZSQgPSB0aGlzLmJhbGFuY2VDdXN0b21lciQucGlwZShtYXAoZGF0YSA9PiBkYXRhPy5hbGxvd0V4Y2VlZEJhbGFuY2UgPz8gbnVsbCkpO1xyXG4gICAgcHVibGljIGNyZWRpdEFtb3VudCQgPSB0aGlzLmJhbGFuY2VDdXN0b21lciQucGlwZShtYXAoZGF0YSA9PiBkYXRhPy5jcmVkaXRBbW91bnQgPz8gbnVsbCkpO1xyXG4gICAgcHVibGljIHNob3dNYXgkID0gdGhpcy5iYWxhbmNlQ3VzdG9tZXIkLnBpcGUobWFwKGRhdGEgPT4gZGF0YT8uc2hvd01heCA/PyBudWxsKSk7XHJcbiAgICBwdWJsaWMgc2hvd1ByaWNlJCA9IHRoaXMuYmFsYW5jZUN1c3RvbWVyJC5waXBlKG1hcChkYXRhID0+IGRhdGE/LnNob3dQcmljZSA/PyBudWxsKSk7XHJcblx0cHVibGljIHByb21vdGlvbnMkID0gdGhpcy5fcHJvbW90aW9uc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcblx0Ly9BUEkgVVJMXHJcblx0cHJpdmF0ZSBfY2FydEJhc2VVcmw6IHN0cmluZyA9IGAke3RoaXMuX2FwaUNvbnN0cy5TSE9QX0FQSV9VUkx9JHt0aGlzLl9hcGlDb25zdHMuQ0hBTk5FTH0vY2FydHNgO1xyXG5cclxuXHRwdWJsaWMgdXBkYXRlSXRlbVF1YW50aXR5QXBpKGl0ZW1faWQ6IGFueSkgeyByZXR1cm4gdGhpcy5fY2FydEJhc2VVcmwgKyAnLycgKyB0aGlzLmNhcnRUb2tlbiArICcvaXRlbXMvJyArIGl0ZW1faWQgKyAnP2xvY2FsZT0nICsgdGhpcy5fYXBpQ29uc3RzLkxPQ0FMRTsgfVxyXG5cdHB1YmxpYyBhZGRJdGVtQXBpKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLl9jYXJ0QmFzZVVybCArICcvJyArIHRoaXMuY2FydFRva2VuICsgJy9pdGVtcz9sb2NhbGU9JyArIHRoaXMuX2FwaUNvbnN0cy5MT0NBTEUgfVxyXG5cdHB1YmxpYyBhZGRBbGxJdGVtc0FwaSA9ICgpID0+IHRoaXMuX2NhcnRCYXNlVXJsICsgJy8nICsgdGhpcy5jYXJ0VG9rZW4gKyAnL211bHRpcGxlLWl0ZW1zJyArICc/bG9jYWxlPScgKyB0aGlzLl9hcGlDb25zdHMuTE9DQUxFO1xyXG5cdHB1YmxpYyBjYXJ0SXRlbXNBcGkoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuX2NhcnRCYXNlVXJsICsgJz9sb2NhbGU9JyArIHRoaXMuX2FwaUNvbnN0cy5MT0NBTEUgfVxyXG5cdHB1YmxpYyBkZWxldGVJdGVtQXBpKGl0ZW1faWQ6IHN0cmluZykgeyByZXR1cm4gdGhpcy5fY2FydEJhc2VVcmwgKyAnLycgKyB0aGlzLmNhcnRUb2tlbiArICcvaXRlbXMvJyArIGl0ZW1faWQgKyAnP2xvY2FsZT0nICsgdGhpcy5fYXBpQ29uc3RzLkxPQ0FMRTsgfVxyXG5cdHB1YmxpYyBjb3Vwb25BcGkoKSB7IHJldHVybiB0aGlzLl9jYXJ0QmFzZVVybCArICcvJyArIHRoaXMuY2FydFRva2VuICsgJy9jb3Vwb24nIH07XHJcblxyXG5cdGNvbnN0cnVjdG9yKCkge1xyXG5cdFx0dGhpcy5fcmVxdWVzdEluUHJvY2Vzcy5uZXh0KHRydWUpO1xyXG5cdFx0XHJcblx0XHQvLyDinIUgQ2FyZ2FyIGNhcnJpdG8gbG9jYWwgeSB0b2tlbiBwcmV2aW9cclxuXHRcdHRoaXMuX2l0ZW1zID0gSlNPTi5wYXJzZSh0aGlzLl9sb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLkNBUlRfS0VZKSB8fCAnW10nKTtcclxuXHRcdHRoaXMuY2FydFRva2VuID0gdGhpcy5fbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5DQVJUX1RPS0VOX0tFWSkgfHwgbnVsbDtcclxuXHRcdFxyXG5cdFx0Ly8g8J+UkSBDTEFWRTogU3VzY3JpcGNpw7NuIGEgY2FtYmlvcyBkZSBlc3RhZG8gZGUgbG9naW5cclxuXHRcdHRoaXMuX2F1dGhTZXJ2aWNlLmxvZ2dlZEluJC5zdWJzY3JpYmUoaXNMb2dnZWRJbiA9PiB7XHJcblx0XHRcdGlmIChpc0xvZ2dlZEluICYmICF0aGlzLl9jYXJ0SW5pdGlhbGl6ZWQpIHtcclxuXHRcdFx0XHR0aGlzLnN5bmNDYXJ0T25Mb2dpbigpO1xyXG5cdFx0XHRcdHRoaXMuX2NhcnRJbml0aWFsaXplZCA9IHRydWU7XHJcblx0XHRcdH0gZWxzZSBpZiAoIWlzTG9nZ2VkSW4gJiYgdGhpcy5fY2FydEluaXRpYWxpemVkKSB7XHJcblx0XHRcdFx0Ly8gVXN1YXJpbyBjZXJyw7Mgc2VzacOzbiwgbGltcGlhciB5IHJlc2V0ZWFyIGNhcnJpdG9cclxuXHRcdFx0XHR0aGlzLmNsZWFyQW5kUmVzZXRDdXN0b21lckNhcnQoKTtcclxuXHRcdFx0XHR0aGlzLl9jYXJ0SW5pdGlhbGl6ZWQgPSBmYWxzZTsgLy8gUmVzZXQgZmxhZyBwYXJhIHBlcm1pdGlyIG51ZXZhIGluaWNpYWxpemFjacOzblxyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHRcdFxyXG5cdFx0dGhpcy5fY2hhbm5lbFNlcnZpY2UuY2hhbm5lbCQuc3Vic2NyaWJlKHJlcyA9PiB0aGlzLmNoYW5uZWxDb25maWcgPSByZXMpO1xyXG5cdFx0XHJcblx0XHQvLyDimqDvuI8gRklYOiBTb2xvIGluaWNpYWxpemFyIHBhcmEgdXN1YXJpb3Mgbm8gYXV0ZW50aWNhZG9zXHJcblx0XHQvLyBFbCBjYXJyaXRvIGRlIHVzdWFyaW9zIGF1dGVudGljYWRvcyBzZSBpbmljaWFsaXphIGVuIGxhIHN1c2NyaXBjacOzbiBsb2dnZWRJbiRcclxuXHRcdGlmICghdGhpcy5fYXV0aFNlcnZpY2UuaXNBdXRoZW50aWNhdGVkKCkgJiYgIXRoaXMuX2NhcnRJbml0aWFsaXplZCkge1xyXG5cdFx0XHQvLyBTaSBoYXkgdG9rZW4sIGludGVudGFyIG9idGVuZXIgY2Fycml0byBwb3IgdG9rZW4sIHNpbm8gY3JlYXIgbnVldm9cclxuXHRcdFx0aWYgKHRoaXMuY2FydFRva2VuKSB7XHJcblx0XHRcdFx0dGhpcy5nZXRDYXJ0KCk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0dGhpcy5nZXRDYXJ0QnlDdXN0b21lcigpO1xyXG5cdFx0XHR9XHJcblx0XHRcdHRoaXMuX2NhcnRJbml0aWFsaXplZCA9IHRydWU7XHJcblx0XHR9XHJcblx0fVxyXG5cdFxyXG5cdC8qKlxyXG5cdCAqIFNpbmNyb25pemEgZWwgY2Fycml0byBjdWFuZG8gZWwgdXN1YXJpbyBoYWNlIGxvZ2luXHJcblx0ICogSW1wbGVtZW50YSBsYSBsw7NnaWNhIGRlIEFuZ3VsYXIgOSBwYXJhIHByZXNlcnZhciBlbCBjYXJyaXRvIGRlbCBpbnZpdGFkb1xyXG5cdCAqL1xyXG5cdHByaXZhdGUgc3luY0NhcnRPbkxvZ2luKCkge1xyXG5cdFx0Ly8g4pqg77iPIEZJWDogU2kgaGF5IHRva2VuIChjYXJyaXRvIGV4aXN0ZW50ZSksIHNpZW1wcmUgaW50ZW50YXIgcmVjdXBlcmFybG9cclxuXHRcdC8vIE5vIGRlcGVuZGVtb3Mgc29sbyBkZSBsb3MgaXRlbXMgbG9jYWxlcyBxdWUgcHVlZGVuIGVzdGFyIHZhY8Otb3MgYWwgcmVjYXJnYXJcclxuXHRcdGlmICh0aGlzLmNhcnRUb2tlbikge1xyXG5cdFx0XHQvLyBFbnbDrWEgZWwgdG9rZW4gcGFyYSByZWN1cGVyYXIvZnVzaW9uYXIgY2Fycml0b3NcclxuXHRcdFx0dGhpcy5nZXRDYXJ0KCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHQvLyBTaW4gdG9rZW4gZGUgY2Fycml0bywgb2J0ZW5lciBjYXJyaXRvIGRlbCB1c3VhcmlvIGF1dGVudGljYWRvXHJcblx0XHRcdHRoaXMuZ2V0Q2FydEJ5Q3VzdG9tZXIoKTtcclxuXHRcdH1cclxuXHR9XHJcblx0LyoqXHJcblx0ICogT2J0aWVuZSBlbCBjYXJyaXRvIGRlc2RlIGVsIGJhY2tlbmQgY29uIGzDs2dpY2EgZGUgc2luY3Jvbml6YWNpw7NuXHJcblx0ICogRW52w61hIGVsIHRva2VuIHNpIGhheSBjYXJyaXRvIGxvY2FsIHBhcmEgZnVzaW9uYXIgY2Fycml0b3NcclxuXHQgKi9cclxuXHRwcml2YXRlIGdldENhcnQoKSB7XHJcblx0XHQvLyDimqDvuI8gRklYOiBFbnZpYXIgdG9rZW4gc2kgZXhpc3RlLCBzaW4gaW1wb3J0YXIgc2kgaGF5IGl0ZW1zIGxvY2FsZXNcclxuXHRcdC8vIEVzdG8gcGVybWl0ZSByZWN1cGVyYXIgZWwgY2Fycml0byBleGlzdGVudGUgYWwgcmVjYXJnYXIgbGEgcMOhZ2luYVxyXG5cdFx0Y29uc3QgcGF5bG9hZCA9IHRoaXMuY2FydFRva2VuID8geyB0b2tlbjogdGhpcy5jYXJ0VG9rZW4gfSA6IHVuZGVmaW5lZDtcclxuXHRcdFxyXG5cdFx0Zmlyc3RWYWx1ZUZyb20oXHJcblx0XHRcdHRoaXMuX2Nvbm5lY3Rpb24ucG9zdCh0aGlzLmNhcnRJdGVtc0FwaSgpLCBwYXlsb2FkKVxyXG5cdFx0KS50aGVuKChyZXM6IGFueSkgPT4ge1xyXG5cdFx0XHQvL2NvbnNvbGUubG9nKCdnZXRDYXJ0IHJlc3BvbnNlOicsIHJlcyk7XHJcblx0XHRcdHRoaXMuaW5pdGlhbGl6ZUNhcnQocmVzKTtcclxuXHRcdH0pLmNhdGNoKGVycm9yID0+IHtcclxuXHRcdFx0Y29uc29sZS5lcnJvcignRXJyb3IgZ2V0dGluZyBjYXJ0OicsIGVycm9yKTtcclxuXHRcdFx0dGhpcy5fcmVxdWVzdEluUHJvY2Vzcy5uZXh0KGZhbHNlKTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBDb25maWd1cmEgZWwgY2Fycml0byBjb24gbG9zIHBhcmFtZXRyb3MgaW5pY2lhbGVzLlxyXG5cdCAqIEBwYXJhbSByZXNwb25zZSBcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRpbml0aWFsaXplQ2FydChyZXNwb25zZTogYW55KTogYW55IHtcclxuXHRcdHRoaXMuY2FydFRva2VuID0gcmVzcG9uc2UudG9rZW5WYWx1ZTtcclxuXHRcdHRoaXMuX2xvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuQ0FSVF9UT0tFTl9LRVksIHRoaXMuY2FydFRva2VuKTtcclxuXHRcdHRoaXMuX2xvY2FsZSA9IHJlc3BvbnNlLmxvY2FsZTtcclxuXHJcblx0XHR0aGlzLnVwZGF0ZUNhcnRPYmoocmVzcG9uc2UsIGZhbHNlKTtcclxuXHRcdHRoaXMudXBkYXRlQ2FydEl0ZW1zKHRoaXMudHJhbnNmb3JtSXRlbXMocmVzcG9uc2UuaXRlbXMpKTtcclxuXHRcdHRoaXMuX3JlcXVlc3RJblByb2Nlc3MubmV4dChmYWxzZSk7XHJcblx0XHRyZXR1cm4gdHJ1ZTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogQWN0dWFsaXphIGxvcyBpdGVtcyBkZWwgY2Fycml0by5cclxuXHQgKiBAcGFyYW0gaXRlbXMgXHJcblx0ICovXHJcblx0dXBkYXRlQ2FydEl0ZW1zKGl0ZW1zOiBhbnlbXSkge1xyXG5cdFx0dGhpcy5faXRlbXMgPSBpdGVtcztcclxuXHRcdHRoaXMuX2NvdW50ID0gaXRlbXMubGVuZ3RoO1xyXG5cdFx0dGhpcy5fY2FydEl0ZW1zU3ViamVjdC5uZXh0KHRoaXMuX2l0ZW1zKTtcclxuXHRcdHRoaXMudXBkYXRlTG9jYWxDYXJ0KCk7XHJcblx0XHR0aGlzLl9yZXF1ZXN0SW5Qcm9jZXNzLm5leHQoZmFsc2UpO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBBZ3JlZ2EgdW4gcHJvZHVjdG8gYWwgY2Fycml0byBjb24gbGEgY2FudGlkYWQgZGVzZWFkYS4gXHJcblx0ICogQHBhcmFtIHByb2R1Y3QgUHJvZHVjdG8gYSBhZ3JlZ2FyXHJcblx0ICogQHBhcmFtIHF1YW50aXR5IENhbnRpZGFkIFxyXG5cdCAqIEBwYXJhbSB2YXJpYW50SWQgSWQgZGUgbGEgdmFyaWFudGVcclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRhZGRUb0NhcnQocHJvZHVjdDogUHJvZHVjdCwgcXVhbnRpdHk6IG51bWJlciwgdmFyaWFudElkOiBzdHJpbmcpIHtcclxuXHRcdGNvbnN0IGJhbGFuY2U6QmFsYW5jZUN1c3RvbWVyIHwgbnVsbCA9IHRoaXMuX2JhbGFuY2VDdXN0b21lclN1YmplY3QudmFsdWU7XHJcblx0XHRjb25zdCBhcHBseU1heE9yZGVyczpib29sZWFuID0gYmFsYW5jZT8uYXBwbHlNYXhPcmRlcnMgPz8gZmFsc2U7XHJcbiAgICAgICAgY29uc3QgbWF4T3JkZXJzOm51bWJlciA9IGJhbGFuY2U/Lm1heE9yZGVycyA/PyBJbmZpbml0eTtcclxuXHJcbiAgICAgICAgaWYgKGFwcGx5TWF4T3JkZXJzICYmIChtYXhPcmRlcnMgPD0gMCB8fCBtYXhPcmRlcnMgPT09IG51bGwpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdtYXgtb3JkZXJzLXJlYWNoZWQnKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHRcdGlmICghdGhpcy5fYXV0aFNlcnZpY2UuaXNBYmxlVG9CdXkoKSkge1xyXG5cdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnbXVzdC1zZWxlY3QtY3VzdG9tZXInKVxyXG5cdFx0XHRyZXR1cm5cclxuXHRcdCB9XHJcblx0XHR0aGlzLl9yZXF1ZXN0SW5Qcm9jZXNzLm5leHQodHJ1ZSk7XHJcblx0XHRsZXQgYWRkZWQgPSB0aGlzLmFkZElmQWxscmVhZHlFeGlzdHMocHJvZHVjdCwgdmFyaWFudElkLCBxdWFudGl0eSk7XHJcblxyXG5cdFx0aWYgKCFhZGRlZCkge1xyXG5cdFx0XHRmaXJzdFZhbHVlRnJvbShcclxuXHRcdFx0XHR0aGlzLl9jb25uZWN0aW9uLnBvc3QodGhpcy5hZGRJdGVtQXBpKCksIHsgcHJvZHVjdENvZGU6IHByb2R1Y3QuaWQsIHF1YW50aXR5OiBxdWFudGl0eSwgdmFyaWFudENvZGU6IHZhcmlhbnRJZCB9KSlcclxuXHRcdFx0XHQudGhlbihcclxuXHRcdFx0XHRcdHJlcyA9PiB7XHJcblx0XHRcdFx0XHRcdC8vIE1hbmVqYXIgbGEgcmVzcHVlc3RhIEhUVFAgZXhpdG9zYSAoY8OzZGlnbyAyMDApXHJcblx0XHRcdFx0XHRcdHRoaXMuYXBwZW5kVG9DYXJ0KHJlcyk7XHJcblx0XHRcdFx0XHRcdHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdwcm9kdWN0LWFkZGVkJyk7XHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0ZXJyID0+IHtcclxuXHRcdFx0XHRcdFx0Ly8gTWFuZWphciBlbCBlcnJvciBkZSBsYSBsbGFtYWRhIEhUVFAgKGPDs2RpZ28gNTAwIHUgb3RybyBlcnJvcilcclxuXHRcdFx0XHRcdFx0aWYgKGVyci5zdGF0dXMgPT09IDUwMCkge1xyXG5cdFx0XHRcdFx0XHRcdC8vIEPDs2RpZ28gZGUgZXJyb3IgNTAwICh0aW1lb3V0KVxyXG5cdFx0XHRcdFx0XHRcdHRoaXMuaGFuZGxlRXJyb3IoZXJyKTtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnY2FydC1lcnJvcicpO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdC8vIE90cm8gY8OzZGlnbyBkZSBlcnJvclxyXG5cdFx0XHRcdFx0XHRcdHRoaXMuaGFuZGxlRXJyb3IoZXJyKTtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnZXJyb3Itc2VydmVyJyk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHQpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBBY3R1YWxpemEgZWwgY2Fycml0byBhZ3JlZ2FuZG8gbG9zIG51ZXZvcyBpdGVtcy5cclxuXHQgKiBAcGFyYW0gY2FydCBcclxuXHQgKi9cclxuXHRhcHBlbmRUb0NhcnQoY2FydDogYW55KSB7XHJcblx0XHR0aGlzLnVwZGF0ZUNhcnRPYmooY2FydCk7XHJcblx0XHR0aGlzLl9pdGVtcyA9IHRoaXMudHJhbnNmb3JtSXRlbXMoY2FydC5pdGVtcyk7XHJcblx0XHR0aGlzLl9jb3VudCA9IHRoaXMuX2l0ZW1zLmxlbmd0aDtcclxuXHRcdHRoaXMuX3JlcXVlc3RJblByb2Nlc3MubmV4dChmYWxzZSk7XHJcblx0XHR0aGlzLnVwZGF0ZUxvY2FsQ2FydCgpO1xyXG5cdFx0dGhpcy5fY2FydEl0ZW1zU3ViamVjdC5uZXh0KHRoaXMuX2l0ZW1zKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogTWFwZWEgbG9zIGl0ZW1zIGRlbCBjYXJyaXRvIHBhcmEgZGFybGUgdW4gbWVqb3IgZm9ybWF0byBzaW1pbGFyIGEgbGEgaW50ZXJmYXogYENhcnRJdGVtYC5cclxuXHQgKiBAcGFyYW0gaXRlbXMgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0dHJhbnNmb3JtSXRlbXMoaXRlbXM6IGFueSk6IGFueVtdIHtcclxuXHRcdHJldHVybiBpdGVtcy5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdHByb2R1Y3Q6IGl0ZW0ucHJvZHVjdCxcclxuXHRcdFx0XHR2YXJpYW50X2lkOiBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0uY29kZSxcclxuXHRcdFx0XHRsb3Q6IGl0ZW0ub3JkZXJJdGVtTG90LFxyXG5cdFx0XHRcdHF1YW50aXR5OiBpdGVtLnF1YW50aXR5LFxyXG5cdFx0XHRcdGl0ZW1faWQ6IGl0ZW0uaWQsXHJcblx0XHRcdFx0dG90YWw6IGl0ZW0udG90YWxcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIENoZXF1ZWEgc2kgZWwgcHJvZHVjdG8geWEgZXhpc3RlIGVuIGVsIGNhcnJpdG8gZGUgY29tcHJhcy5cclxuXHQgKiBAcGFyYW0gcHJvZHVjdCBcclxuXHQgKiBAcGFyYW0gdmFyaWFudElkIFxyXG5cdCAqIEBwYXJhbSBxdWFudGl0eUFkZCBDYW50aWRhZCBhIGFncmVnYXIuIFBvciBkZWZlY3RvIGVzIDEuXHJcblx0ICovXHJcblx0YWRkSWZBbGxyZWFkeUV4aXN0cyhwcm9kdWN0OiBQcm9kdWN0LCB2YXJpYW50SWQ6IHN0cmluZywgcXVhbnRpdHlBZGQ6IG51bWJlciA9IDEpIHtcclxuXHRcdHJldHVybiB0aGlzLl9pdGVtcy5maW5kKChpdGVtOiBhbnksIGluZGV4KSA9PiB7XHJcblx0XHRcdGlmIChpdGVtLnByb2R1Y3QuaWQgPT0gcHJvZHVjdC5pZCAmJiBpdGVtLnZhcmlhbnRfaWQgPT0gdmFyaWFudElkKSB7XHJcblx0XHRcdFx0dGhpcy51cGRhdGVJdGVtUXVhbnRpdHkoaXRlbSwgdGhpcy5maW5kSXRlbShwcm9kdWN0LmlkKS5xdWFudGl0eSArIHF1YW50aXR5QWRkKTtcclxuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcclxuXHRcdFx0fVxyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9KVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBPYnRpZW5lIGxhIGNhbnRpZGFkIGRlIHVuIHByb2R1Y3RvIGRlbCBpdGVtIGRlbCBjYXJyaXRvIFxyXG5cdCAqIEBwYXJhbSBjb2RlVmFyaWFudCBjb2RpZ28gZGUgbGEgdmFyaWFudGUuXHJcblx0ICogQHJldHVybnMgbGEgY2FudGlkYWQgbyBgMGAgZW4gc3UgZGVmZWN0by5cclxuXHQgKi9cclxuXHRnZXRDb3VudEZyb21JdGVtSW5DYXJ0KGNvZGVWYXJpYW50OiBhbnkpOiBudW1iZXIge1xyXG5cdFx0cmV0dXJuIHRoaXMuX2l0ZW1zLmZpbmQoaXRlbSA9PiBpdGVtLnZhcmlhbnRfaWQgPT0gY29kZVZhcmlhbnQpPy5xdWFudGl0eSB8fCAwO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBPYnRpZW5lIHVuIG9ic2VydmFibGUgY29uIGxhIGNhbnRpZGFkIGRlIGl0ZW1zIGVuIGVsIGNhcnJpdG8uXHJcblx0ICovXHJcblx0Z2V0Q291bnRDYXJ0SXRlbXMoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcclxuXHRcdHJldHVybiB0aGlzLmNhcnRJdGVtcyQucGlwZShtYXAoKGNhcnRJdGVtcykgPT4gY2FydEl0ZW1zPy5sZW5ndGgpKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogTWFwZWEgbG9zIHByb2R1Y3RvcyBlbiBlbCBjYXJyaXRvIHBhcmEgY2FtYmlhciBlbCBwcmVjaW8gb2J0ZW5pZW5kbyBkZSBsYSB2YXJpYW50ZSB5IHNlbGVjY2lvbmFuZG8gc2kgZXNcclxuXHQgKiBwcmVjaW8gZGUgb2ZlcnRhIG8gZWwgcHJlY2lvIG5vcm1hbC5cclxuXHQgKiBAcGFyYW0gaXRlbXMgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHJpdmF0ZSBzd2l0Y2hQcmljZUluQ2FydEl0ZW0gPSAoaXRlbXM6IGFueVtdKSA9PiB7XHJcblx0XHRyZXR1cm4gaXRlbXMubWFwKFxyXG5cdFx0XHRpdGVtID0+IHtcclxuXHRcdFx0XHRpZiAoaXRlbS5wcm9kdWN0KSB7XHJcblx0XHRcdFx0XHRpdGVtLnByb2R1Y3QucHJpY2UgPSBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0uc2FsZXByaWNlID8gaXRlbS5wcm9kdWN0LnZhcmlhbnRzWzBdLnNhbGVwcmljZSA6IGl0ZW0ucHJvZHVjdC52YXJpYW50c1swXS5wcmljZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0cmV0dXJuIGl0ZW1cclxuXHRcdFx0fVxyXG5cdFx0KVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBBY3R1YWxpemEgbGEgY2FudGlkYWQgZGUgdW4gcHJvZHVjdG8gZXhpc3RlbnRlIGVuIGVsIGNhcnJpdG8uXHJcblx0ICogQHBhcmFtIGl0ZW0gZWwgaXRlbSBhIGFjdHVhbGl6YXIuXHJcblx0ICogQHBhcmFtIHF1YW50aXR5IGxhIGNhbnRpZGFkIG51ZXZhLlxyXG5cdCAqL1xyXG5cdHVwZGF0ZUl0ZW1RdWFudGl0eShpdGVtOiBDYXJ0SXRlbSwgcXVhbnRpdHk6IG51bWJlcikge1xyXG5cdFx0aWYgKHRoaXMudmFsaWRhdGVRdWFudGl0eShpdGVtLCBxdWFudGl0eSkgJiYgKHRoaXMudmFsaWRhdGVQcmljZUFuZENyZWRpdHMoaXRlbSwgcXVhbnRpdHkpKSkge1xyXG5cdFx0XHRmaXJzdFZhbHVlRnJvbShcclxuXHRcdFx0XHR0aGlzLl9jb25uZWN0aW9uLnB1dCh0aGlzLnVwZGF0ZUl0ZW1RdWFudGl0eUFwaSh0aGlzLmZpbmRJdGVtQnlJZFZhcmlhbnQoaXRlbS52YXJpYW50X2lkKSksIHsgJ3F1YW50aXR5JzogTnVtYmVyKHF1YW50aXR5KSB9KSkudGhlbihcclxuXHRcdFx0XHRcdHJlcyA9PiB0aGlzLnVwZGF0ZUNhcnRPYmoocmVzKSAmJiB0aGlzLnVwZGF0ZUNhcnRJdGVtUXVhbnRpdHkoaXRlbS52YXJpYW50X2lkLCBOdW1iZXIocXVhbnRpdHkpKSxcclxuXHRcdFx0XHRcdGVyciA9PiB0aGlzLmhhbmRsZUVycm9yKGVycilcclxuXHRcdFx0XHQpXHJcblx0XHR9XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIE1hbmVqYSBlbCBlcnJvciBlbiBjYXNvIGRlIHF1ZSBubyBzZSBwdWVkYSBhZ3JlZ2FyIGFsIGNhcnJpdG8gZWwgcHJvZHVjdG8uXHJcblx0ICogQHBhcmFtIGVyciBcclxuXHQgKi9cclxuXHRoYW5kbGVFcnJvcihlcnI6IGFueSk6IHZvaWQge1xyXG5cdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ29wZXJhdGlvbi1lcnJvci1wYXJhbScpO1xyXG5cdFx0dGhpcy5fcmVxdWVzdEluUHJvY2Vzcy5uZXh0KGZhbHNlKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogQWN0dWFsaXphIGxhIGNhbnRpZGFkIGRlbCBpdGVtIGRlbCBwcm9kdWN0byBkZWwgY2Fycml0by5cclxuXHQgKiBAcGFyYW0gdmFyaWFudElkIElEIGRlIGxhIHZhcmlhbnRlIHBhcmEgYnVzY2FyIGVsIGl0ZW0uXHJcblx0ICogQHBhcmFtIHF1YW50aXR5IE51ZXZhIGNhbnRpZGFkLiBcclxuXHQgKi9cclxuXHR1cGRhdGVDYXJ0SXRlbVF1YW50aXR5KHZhcmlhbnRJZDogYW55LCBxdWFudGl0eTogbnVtYmVyKTogdm9pZCB7XHJcblx0XHQvL2NvbnNvbGUubG9nKFwidXBkYXRlQ2FydEl0ZW1RdWFudGl0eVwiLCB0aGlzLl9pdGVtcywgdmFyaWFudElkKVxyXG5cdFx0bGV0IG5ld1F1YW50aXR5ID0gdGhpcy5faXRlbXMuZmluZChpdGVtID0+IGl0ZW0udmFyaWFudF9pZCA9PSB2YXJpYW50SWQpLnF1YW50aXR5ID0gcXVhbnRpdHk7XHJcblx0XHR0aGlzLl9jYXJ0SXRlbXNTdWJqZWN0Lm5leHQodGhpcy5faXRlbXMpO1xyXG5cdFx0dGhpcy5fcmVxdWVzdEluUHJvY2Vzcy5uZXh0KGZhbHNlKTtcclxuXHRcdHRoaXMudXBkYXRlTG9jYWxDYXJ0KCk7XHJcblx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygncHJvZHVjdC11cGRhdGVkJywgeyBxdWFudGl0eTogbmV3UXVhbnRpdHkgfSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIEFjdHVhbGl6YSBsb3MgZGF0b3MgZGVsIGNhcnJpdG8gZW4gZWwgbG9jYWxTdG9yYWdlLiBcclxuXHQgKi9cclxuXHR1cGRhdGVMb2NhbENhcnQoKSB7XHJcblx0XHR0aGlzLl9zdG9yYWdlLnNldEl0ZW0odGhpcy5DQVJUX0tFWSwgdGhpcy5faXRlbXMpXHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIEFjdHVhbGl6YSBlbCBjYXJyaXRvLiBFbWl0ZSBldmVudG8gZGUgYW5hbGl0aWNzLiBcclxuXHQgKiBBY3R1YWxpemEgdG9kbyBsbyByZWxhY2lvbmFkbyBhbCBjdXDDs24uXHJcblx0ICogQHBhcmFtIGNhcnQgUmVzcHVlc3RhIHByb2R1Y2lkYSBwb3IgZWwgZW5wb2ludCBjb24gaW5mb3JtYWNpw7NuIGRlbCBjYXJyaXRvLlxyXG5cdCAqIEBwYXJhbSBlbWl0RXZlbnQgXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0dXBkYXRlQ2FydE9iaihjYXJ0OiBhbnksIGVtaXRFdmVudCA9IHRydWUpOiBib29sZWFuIHtcclxuXHRcdHRoaXMuX2NhcnRTdWJqZWN0Lm5leHQoY2FydCk7XHJcblx0XHR0aGlzLnVwZGF0ZUJhbGFuY2VBdHRyaWJ1dGVzKGNhcnQ/LmJhbGFuY2VDdXN0b21lciwgY2FydD8udG90YWxzPy50b3RhbCk7XHJcblx0XHRlbWl0RXZlbnQgJiYgdGhpcy5fYW5hbHl0aWNzU2VydmljZS5jYWxsRXZlbnQoJ2FkZF90b19jYXJ0JywgY2FydCk7XHJcblx0XHQvL3RoaXMuX3Byb21vdGlvbnNTdWJqZWN0Lm5leHQodGhpcy5vcmRlclV0aWxzLmdldFByb21vdGlvbnMoY2FydCwgdHJ1ZSkpO1xyXG5cclxuXHRcdGNhcnQuY291cG9uQ29kZVxyXG5cdFx0XHQ/IHRoaXMuZm9ybWF0Q291cG9uKGNhcnQpXHJcblx0XHRcdDogdGhpcy5fY291cG9uU3ViamVjdC5uZXh0KG51bGwpO1xyXG5cdFx0cmV0dXJuIHRydWU7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIEFwbGljYXIgdW4gbWVqb3IgZm9ybWF0byBhIGxvcyBkYXRvcyBkZSBsb3MgY3Vwb25lcyBhcGxpY2Fkb3MuXHJcblx0ICogQHBhcmFtIGNhcnQgXHJcblx0ICovXHJcblx0Zm9ybWF0Q291cG9uKGNhcnQ6IGFueSkge1xyXG5cdFx0bGV0IGN1cnJlbnRfY291cG9uID0gdGhpcy5fY291cG9uU3ViamVjdC52YWx1ZTtcclxuXHRcdGxldCBjb3Vwb246IElDb3Vwb24gPSB7IGNvZGU6IGNhcnQuY291cG9uQ29kZSB9O1xyXG5cdFx0dHJ5IHtcclxuXHRcdFx0Y29uc3Qga2V5ID0gT2JqZWN0LmtleXMoY2FydC5jYXJ0RGlzY291bnRzKVswXTtcclxuXHRcdFx0Y291cG9uID0ge1xyXG5cdFx0XHRcdC4uLmNvdXBvbixcclxuXHRcdFx0XHRhbW91bnQ6IChjYXJ0LmNhcnREaXNjb3VudHMgJiYgY2FydC5jYXJ0RGlzY291bnRzW2tleV0uYW1vdW50LmN1cnJlbnQpIHx8IDAsXHJcblx0XHRcdFx0bmFtZTogKGNhcnQuY2FydERpc2NvdW50cyAmJiBjYXJ0LmNhcnREaXNjb3VudHNba2V5XS5uYW1lKSB8fCAnbm8tbmFtZSdcclxuXHRcdFx0fTtcclxuXHRcdH0gY2F0Y2ggKGUpIHsgfVxyXG5cdFx0KGNvdXBvbiAhPSBjdXJyZW50X2NvdXBvbikgJiYgdGhpcy5fY291cG9uU3ViamVjdC5uZXh0KGNvdXBvbik7XHJcblx0XHQvL2NvbnNvbGUubG9nKGNvdXBvbik7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIFJldG9ybmEgZWwgSUQgZGVsIGl0ZW0gZGVsIGNhcnJpdG8uXHJcblx0ICogQHBhcmFtIHZhcmlhbnRfaWQgSWQgZGUgbGEgdmFyaWFudGUgdXRpbGl6YWRhIHBhcmEgYnVzY2FyIGVsIGl0ZW0uXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0ZmluZEl0ZW1CeUlkVmFyaWFudCh2YXJpYW50X2lkOiBhbnkpOiBhbnkge1xyXG5cdFx0cmV0dXJuIHRoaXMuX2l0ZW1zLmZpbmQoaXRlbSA9PiBpdGVtLnZhcmlhbnRfaWQgPT0gdmFyaWFudF9pZCkhLml0ZW1faWRcclxuXHR9XHJcblx0LyoqXHJcblx0ICogVmFsaWRhIGxhIGNhbnRpZGFkIHBhcmEgc2FiZXIgc2kgc2UgcHVlZGUgYWN0dWFsaXphciBvIG5vLlxyXG5cdCAqIEBwYXJhbSBpdGVtIGl0ZW0gZGVsIGNhcnJpdG9cclxuXHQgKiBAcGFyYW0gcXVhbnRpdHkgY2FudGlkYWQgYSBhZ3JlZ2FyXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0dmFsaWRhdGVRdWFudGl0eShpdGVtOiBhbnksIHF1YW50aXR5OiBhbnkpIHtcclxuXHRcdGlmICgodGhpcy5nZXRDb3VudEZyb21JdGVtSW5DYXJ0KGl0ZW0ucHJvZHVjdENvZGUpICsgcXVhbnRpdHkpID4gaXRlbS5wcm9kdWN0LnZhcmlhbnRzWzBdLm1heGltdW1JdGVtc1F1YW50aXR5KSB7XHJcblx0XHRcdHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdtYXhpbXVtLWl0ZW1zLXF1YW50aXR5JywgeyBxdWFudGl0eTogaXRlbS5wcm9kdWN0LnZhcmlhbnRzWzBdLm1heGltdW1JdGVtc1F1YW50aXR5IH0pXHJcblx0XHRcdHJldHVybiBmYWxzZVxyXG5cdFx0fVxyXG5cdFx0aWYgKCh0aGlzLmdldENvdW50RnJvbUl0ZW1JbkNhcnQoaXRlbS5wcm9kdWN0Q29kZSkgKyBxdWFudGl0eSkgPCBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0ubWluaW11bUl0ZW1zUXVhbnRpdHkpIHtcclxuXHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ21pbmltdW0taXRlbXMtcXVhbnRpdHknLCB7IHF1YW50aXR5OiBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0ubWluaW11bUl0ZW1zUXVhbnRpdHkgfSlcclxuXHRcdFx0cmV0dXJuIGZhbHNlXHJcblx0XHR9XHJcblx0XHRyZXR1cm4gdHJ1ZVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBCdXNjYSB1biBwcm9kdWN0byBhIHRyYXbDqXMgZGUgc3UgSUQgZW4gbG9zIGl0ZW1zIGRlbCBjYXJyaXRvLlxyXG5cdCAqIEBwYXJhbSBwcm9kdWN0X2lkIFxyXG5cdCAqIEByZXR1cm5zXHJcblx0ICovXHJcblx0ZmluZEl0ZW0ocHJvZHVjdF9pZDogYW55KTogYW55IHsgcmV0dXJuIHRoaXMuX2l0ZW1zLmZpbmQoKGl0ZW06IGFueSkgPT4gaXRlbS5wcm9kdWN0LmlkID09IHByb2R1Y3RfaWQpIH1cclxuXHQvKipcclxuXHQgKiBFbGltaW5hIHVuIGl0ZW0gZGVsIGNhcnJpdG8gZW4gZWwgYmFja2VuZC5cclxuXHQgKiBAcGFyYW0gaXRlbSBpdGVtIGEgZWxpbWluYXJcclxuXHQgKiBAcGFyYW0gdG9hc3QgaW5kaWNhIHNpIHNlIGRpc3BhcmEgdW4gdG9hc3QgIG8gbm8uIFBvciBkZWZlY3RvIGVuIGB0cnVlYC5cclxuXHQgKi9cclxuXHRkZWxldGVDYXJ0SXRlbShpdGVtOiBhbnksIHRvYXN0OiBib29sZWFuID0gdHJ1ZSkge1xyXG5cdFx0bGV0IGlkSXRlbVNlYXJjaGVkID0gdGhpcy5maW5kSXRlbUJ5SWRWYXJpYW50KGl0ZW0udmFyaWFudF9pZClcclxuXHRcdC8vY29uc29sZS5sb2coaWRJdGVtU2VhcmNoZWQpXHJcblx0XHR0aGlzLl9yZXF1ZXN0SW5Qcm9jZXNzLm5leHQodHJ1ZSk7XHJcblx0XHRmaXJzdFZhbHVlRnJvbSh0aGlzLl9jb25uZWN0aW9uLmRlbGV0ZSh0aGlzLmRlbGV0ZUl0ZW1BcGkoaWRJdGVtU2VhcmNoZWQpKSkudGhlbihcclxuXHRcdFx0cmVzID0+IHtcclxuXHRcdFx0XHR0aGlzLnJlbW92ZUNhcnRJdGVtKHJlcywgaXRlbSwgdG9hc3QpO1xyXG5cdFx0XHRcdHRoaXMuX3JlcXVlc3RJblByb2Nlc3MubmV4dChmYWxzZSk7XHJcblx0XHRcdH0sXHJcblx0XHRcdGVyciA9PiB7XHJcblx0XHRcdFx0dGhpcy5oYW5kbGVFcnJvcihlcnIpO1xyXG5cdFx0XHRcdHRoaXMuX3JlcXVlc3RJblByb2Nlc3MubmV4dChmYWxzZSk7XHJcblx0XHRcdH1cclxuXHRcdClcclxuXHR9XHJcblx0LyoqXHJcblx0ICogRWxpbWluYSB1biBpdGVtIGVuIGNhcnJpdG8gZGUgZm9ybWEgbG9jYWwuIFxyXG5cdCAqIEBwYXJhbSBjYXJ0IENhcnJpdG8sIGVzIGRlY2lyLCByZXNwdWVzdGEgZGVsIGJhY2tlbmQuXHJcblx0ICogQHBhcmFtIHByb2R1Y3QgcHJvZHVjdG8gYSBlbGltaW5hclxyXG5cdCAqIEBwYXJhbSB0b2FzdCB7Ym9vbGVhbn0gcGFyYSBpbmRpY2FyIHNpIHNlIGRpc3BhcmEgdW4gdG9hc3QgbyBuby4gXHJcblx0ICovXHJcblx0cmVtb3ZlQ2FydEl0ZW0oY2FydDogYW55LCBwcm9kdWN0OiBhbnksIHRvYXN0OiBib29sZWFuKSB7XHJcblx0XHR0aGlzLnVwZGF0ZUNhcnRPYmooY2FydCwgZmFsc2UpO1xyXG5cdFx0dGhpcy5faXRlbXMuc3BsaWNlKHRoaXMuX2l0ZW1zLmZpbmRJbmRleCh2YWx1ZSA9PiB2YWx1ZS5pdGVtX2lkID09PSBwcm9kdWN0Lml0ZW1faWQpLCAxKTtcclxuXHRcdHRoaXMuX2NhcnRJdGVtc1N1YmplY3QubmV4dCh0aGlzLl9pdGVtcyk7XHJcblx0XHR0b2FzdCAmJiB0aGlzLl9yZXF1ZXN0SW5Qcm9jZXNzLm5leHQoZmFsc2UpO1xyXG5cdFx0dG9hc3QgJiYgdGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ3Byb2R1Y3QtcmVtb3ZlZCcpO1xyXG5cdFx0dGhpcy51cGRhdGVMb2NhbENhcnQoKTtcclxuXHRcdHRoaXMuX2FuYWx5dGljc1NlcnZpY2UuY2FsbEV2ZW50KCdyZW1vdmVfZnJvbV9jYXJ0JywgeyAuLi5wcm9kdWN0LCBjdXJyZW5jeTogdGhpcy5fY29uc3RzLmN1cnJlbmN5LmNvZGUgfSlcclxuXHR9XHJcblx0LyoqXHJcblx0ICogQWdyZWdhIHVuIGN1cG9uIGFsIGNhcnJpdG8uXHJcblx0ICogQHBhcmFtIHZhbHVlIENvZGlnbyBkZWwgY3Vww7NuLlxyXG5cdCAqL1xyXG5cdGFkZENvdXBvbih2YWx1ZTogc3RyaW5nKSB7XHJcblx0XHRmaXJzdFZhbHVlRnJvbSh0aGlzLl9jb25uZWN0aW9uLnB1dCh0aGlzLmNvdXBvbkFwaSgpLCB7IGNvdXBvbjogdmFsdWUgfSkpLnRoZW4oXHJcblx0XHRcdHJlcyA9PiB7XHJcblx0XHRcdFx0Ly9jb25zb2xlLmxvZyhyZXMpXHJcblx0XHRcdFx0dGhpcy51cGRhdGVDYXJ0T2JqKHJlcylcclxuXHRcdFx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnQ3Vwb24gYXBsaWNhZG8nKVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRlcnIgPT4ge1xyXG5cdFx0XHRcdC8vY29uc29sZS5lcnJvcihlcnIpIFxyXG5cdFx0XHRcdHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdpbnZhbGlkLWNvdXBvbicpXHJcblx0XHRcdH1cclxuXHRcdClcclxuXHR9XHJcblx0LyoqXHJcblx0ICogRWxpbWluYSB1biBjdXDDs24gZGVsIGNhcnJpdG8uIFxyXG5cdCAqL1xyXG5cdHJlbW92ZUNvdXBvbigpIHtcclxuXHRcdGZpcnN0VmFsdWVGcm9tKHRoaXMuX2Nvbm5lY3Rpb24uZGVsZXRlKHRoaXMuY291cG9uQXBpKCkpKS50aGVuKFxyXG5cdFx0XHRyZXMgPT4ge1xyXG5cdFx0XHRcdC8vY29uc29sZS5sb2cocmVzKVxyXG5cdFx0XHRcdHRoaXMudXBkYXRlQ2FydE9iaihyZXMpXHJcblx0XHRcdH1cclxuXHRcdClcclxuXHR9XHJcblxyXG5cdGdldENvdXBvbkNvZGUoKTogT2JzZXJ2YWJsZTxzdHJpbmcgfCBudWxsPiB7XHJcblx0XHRyZXR1cm4gdGhpcy5jYXJ0JC5waXBlKG1hcCgoY2FydCkgPT4gY2FydD8uY291cG9uQ29kZSkpO1xyXG5cdH1cclxuXHRcclxuXHQvKipcclxuXHQgKiBSZXRvcm5hIHVuIG9ic2VydmFibGUgY29uIGVsIHN1YnRvdGFsIGRlbCBjYXJyaXRvLlxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdGdldFN1YlRvdGFsQW1vdW50KCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XHJcblx0XHRyZXR1cm4gdGhpcy5jYXJ0JC5waXBlKG1hcCgoY2FydCkgPT4gY2FydD8udG90YWxzPy5zdWJ0b3RhbCkpO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBSZXRvcm5hIHVuIG9ic2VydmFibGUgY29uIGVsIHRvdGFsIGRlbCBtb250byBkZSBsYXMgcHJvbW9jaW9uZXMgYXBsaWNhZGFzLlxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdGdldFRvdGFsUHJvbW90aW9uQW1vdW50KCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XHJcblx0XHRyZXR1cm4gdGhpcy5jYXJ0JC5waXBlKG1hcCgoY2FydCkgPT4gY2FydD8udG90YWxzPy5wcm9tb3Rpb24pKTtcclxuXHR9XHJcblx0XHJcblx0LyoqXHJcblx0ICogUmV0b3JuYSB1biBvYnNlcnZhYmxlIGNvbiBlbCBtb250byBkZSBsb3MgaW1wdWVzdG9zIGFwbGljYWRvcy5cclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRnZXRUYXhlc0Ftb3VudCgpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuY2FydCQucGlwZShtYXAoKGNhcnQpID0+IGNhcnQ/LnRvdGFscz8udGF4ZXMgPiAwID8gY2FydD8udG90YWxzPy50YXhlcyA6IDApKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogUmV0b3JuYSB1biBvYnNlcnZhYmxlIGNvbiBlbCBtb250byB0b3RhbCBkZWwgY2Fycml0by5cclxuXHQgKiBAcmV0dXJucyBcclxuXHQgKi9cclxuXHRnZXRUb3RhbEFtb3VudCgpIHtcclxuXHRcdHJldHVybiB0aGlzLmNhcnQkLnBpcGUobWFwKChjYXJ0KSA9PiBjYXJ0Py50b3RhbHM/LnRvdGFsKSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIFJldG9ybmEgZWwgdG9rZW4gZGVsIGNhcnJpdG8uXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0Z2V0Q2FydFRva2VuKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuY2FydFRva2VuO1xyXG5cdH1cclxuXHRjaGFuZ2VIYXZlVG9VcGRhdGUgPSAodmFsdWU6IGFueSkgPT4gdGhpcy5faGF2ZVRvVXBkYXRlID0gdmFsdWU7XHJcblx0Y2xlYXJBbmRSZXNldEN1c3RvbWVyQ2FydCgpIHtcclxuXHRcdC8vIGNvbnNvbGUubG9nKFwiQ2xlYXJpbmcgYW5kIHJlc2V0aW5nLi4uXCIpXHJcblx0XHR0aGlzLnJlc2V0Q2FydCh0aGlzLmdldENhcnRCeUN1c3RvbWVyKVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBnZXRDYXJ0QnlDdXN0b21lciA9IGFzeW5jICgpID0+XHJcblx0XHR0aGlzLl9jb25uZWN0aW9uLnBvc3QodGhpcy5jYXJ0SXRlbXNBcGkoKSkuc3Vic2NyaWJlKFxyXG5cdFx0XHRyZXMgPT4gdGhpcy5pbml0aWFsaXplQ2FydChyZXMpXHJcblx0XHQpXHJcblx0cHJpdmF0ZSByZXNldENhcnQgPSAoZm4/OiBhbnkpID0+IHtcclxuXHRcdHRoaXMuX2l0ZW1zID0gW107XHJcblx0XHR0aGlzLl9jYXJ0U3ViamVjdC5uZXh0KG51bGwpO1xyXG5cdFx0dGhpcy51cGRhdGVCYWxhbmNlQXR0cmlidXRlcyhudWxsKTtcclxuXHRcdHRoaXMuY2FydFRva2VuID0gbnVsbDtcclxuXHRcdHRoaXMuX2NhcnRJdGVtc1N1YmplY3QubmV4dChbXSk7XHJcblx0XHR0aGlzLl9jb3VudCA9IDA7XHJcblx0XHR0aGlzLl9sb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLkNBUlRfS0VZLCBcIltdXCIpO1xyXG5cdFx0dGhpcy5fbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5DQVJUX1RPS0VOX0tFWSk7XHJcblx0XHR0aGlzLl9jYXJ0SW5pdGlhbGl6ZWQgPSBmYWxzZTsgLy8g4pqg77iPIEZJWDogUmVzZXQgZGVsIGZsYWcgZGUgaW5pY2lhbGl6YWNpw7NuXHJcblx0XHRmbiAmJiBmbigpO1xyXG5cdH1cclxuXHRjbGVhckFuZFJlc2V0Q2FydCgpIHtcclxuICAgICAgICB0aGlzLnJlc2V0Q2FydCh0aGlzLmdldENhcnRCeUN1c3RvbWVyKTsgLy8g4pqg77iPIEZJWDogQ3JlYXIgbnVldm8gY2Fycml0byBkZXNwdcOpcyBkZSBjb21wbGV0YXIgY29tcHJhXHJcbiAgICB9XHJcblxyXG5cdHB1YmxpYyB1cGRhdGVCYWxhbmNlQXR0cmlidXRlcyhiYWxhbmNlOiBhbnksIHRvdGFsOiBudW1iZXIgfCBudWxsID0gbnVsbCkge1xyXG5cclxuXHRcdGlmICghYmFsYW5jZSkge1xyXG4gICAgICAgICAgICB0aGlzLl9iYWxhbmNlQ3VzdG9tZXJTdWJqZWN0Lm5leHQobnVsbCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG5cdFx0Y29uc3QgdG90YWxBbW91bnQgPSB0b3RhbCA/PyAwO1xyXG5cclxuICAgICAgICBjb25zdCBiYWxhbmNlRGF0YSA9IHtcclxuICAgICAgICAgICAgYWxsb3dBbnlQYXltZW50TWV0aG9kOiBiYWxhbmNlLmFsbG93QW55UGF5bWVudE1ldGhvZCxcclxuICAgICAgICAgICAgYWxsb3dFeGNlZWRCYWxhbmNlOiBiYWxhbmNlLmFsbG93RXhjZWVkQmFsYW5jZSxcclxuICAgICAgICAgICAgY3JlZGl0QW1vdW50OiBiYWxhbmNlLmNyZWRpdEFtb3VudCxcclxuICAgICAgICAgICAgc2hvd01heDogYmFsYW5jZS5zaG93TWF4LFxyXG4gICAgICAgICAgICBzaG93UHJpY2U6IGJhbGFuY2Uuc2hvd1ByaWNlLFxyXG4gICAgICAgICAgICByZW1haW5pbmdDcmVkaXRzOiBcclxuXHRcdFx0XHRiYWxhbmNlLmNyZWRpdEFtb3VudCAhPSBudWxsICYmIHRvdGFsQW1vdW50ICE9IG51bGwgJiYgYmFsYW5jZS5jcmVkaXRBbW91bnQgPj0gdG90YWxBbW91bnRcclxuICAgICAgICAgICAgICAgIFx0PyBiYWxhbmNlLmNyZWRpdEFtb3VudCAtIHRvdGFsQW1vdW50XHJcbiAgICAgICAgICAgICAgICBcdDogMCxcclxuXHRcdFx0XHRhcHBseU1heE9yZGVyczogYmFsYW5jZS5hcHBseU1heE9yZGVycyxcclxuXHRcdFx0XHRtYXhPcmRlcnM6IGJhbGFuY2UubWF4T3JkZXJzXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5fYmFsYW5jZUN1c3RvbWVyU3ViamVjdC5uZXh0KGJhbGFuY2VEYXRhKTtcclxuICAgIH1cclxuXHRhZGRUb0xvdChwcm9kdWN0OiBQcm9kdWN0LCBxdWFudGl0eTogbnVtYmVyLCB2YXJpYW50X2lkOiBhbnksIGlkPzogbnVtYmVyLCBvcmRlcl9pdGVtX2lkPzogYW55LCBsb3RfcXVhbnRpdHk/OiBhbnksIHVuaXRfcHJpY2U/OiBhbnksIHVuaXRfdG90YWw/OiBhbnksIGFqdXN0ZW1lbnRfdG90YWw/OiBhbnksIHRvdGFsX2xvdD86IG51bWJlciwgbG90X3N0YXR1cz86IHN0cmluZywgZGF0ZV9yZXF1ZXN0Pzogc3RyaW5nLCBub3Rlcz86IHN0cmluZywgc2hpcHBpbmdfYWRkcmVzc19pZD86IG51bWJlciwgc2hpcHBpbmdfYWRkcmVzc19uYW1lPzogc3RyaW5nLCBhY3Rpb24/OiBzdHJpbmcpe1xyXG4gICAgICAgIGlmICghdGhpcy5fYXV0aFNlcnZpY2UuaXNBYmxlVG9CdXkoKSkge1xyXG4gICAgICAgICAgICB0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnbXVzdC1zZWxlY3QtY3VzdG9tZXInKVxyXG4gICAgICAgICAgICByZXR1cm5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBhZGRlZCA9ICcnO1xyXG4gICAgICAgICFhZGRlZCAmJiB0aGlzLl9jb25uZWN0aW9uLnBvc3QodGhpcy5hZGRJdGVtQXBpKCksIHsgcHJvZHVjdENvZGU6IHByb2R1Y3QuaWQsIHF1YW50aXR5OiBxdWFudGl0eSwgdmFyaWFudENvZGU6IHZhcmlhbnRfaWQsIGlkOiBpZCB8fCAnJywgb3JkZXJfaXRlbV9pZDogb3JkZXJfaXRlbV9pZCB8fCAnJywgbG90X3F1YW50aXR5OiBsb3RfcXVhbnRpdHkgfHwgJycsIHVuaXRfcHJpY2U6IHVuaXRfcHJpY2UgfHwgJycsIHVuaXRfdG90YWw6IHVuaXRfdG90YWwgfHwgJycsIGFqdXN0ZW1lbnRfdG90YWw6IGFqdXN0ZW1lbnRfdG90YWwgfHwgJycsIHRvdGFsX2xvdDogdG90YWxfbG90IHx8ICcnLCBsb3Rfc3RhdHVzOiBsb3Rfc3RhdHVzIHx8ICcnLCBkYXRlX3JlcXVlc3Q6IGRhdGVfcmVxdWVzdCB8fCAnJywgbm90ZXM6IG5vdGVzIHx8ICcnLCBzaGlwcGluZ19hZGRyZXNzX2lkOiBzaGlwcGluZ19hZGRyZXNzX2lkIHx8ICcnLCBzaGlwcGluZ19hZGRyZXNzX25hbWU6IHNoaXBwaW5nX2FkZHJlc3NfbmFtZSB8fCAnJywgYWN0aW9uOiBhY3Rpb24gfHwgJ25ld2xvdCcgfSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZSh7XHJcblx0XHRcdFx0bmV4dDogKHJlcykgPT4gdGhpcy5hcHBlbmRUb0NhcnQocmVzKSxcclxuXHRcdFx0XHRlcnJvcjogKGVycikgPT4gdGhpcy5oYW5kbGVFcnJvcihlcnIpXHJcblx0XHRcdH0pO1xyXG4gICAgfVxyXG5cclxuXHRcclxuICAgIGdldENyZWRpdEFtb3VudCA9ICgpOiBPYnNlcnZhYmxlPG51bWJlciB8IG51bGw+ID0+XHJcbiAgICAgICAgdGhpcy5fYmFsYW5jZUN1c3RvbWVyU3ViamVjdC5waXBlKFxyXG4gICAgICAgICAgICBtYXAoKGJhbGFuY2VDdXN0b21lcikgPT4gYmFsYW5jZUN1c3RvbWVyPy5jcmVkaXRBbW91bnQgPz8gbnVsbClcclxuICAgICAgICApO1xyXG5cclxuXHJcbiAgICBnZXRSZW1haW5pbmdDcmVkaXRzID0gKCk6IE9ic2VydmFibGU8bnVtYmVyIHwgdW5kZWZpbmVkPiA9PlxyXG4gICAgICAgIHRoaXMuX2JhbGFuY2VDdXN0b21lclN1YmplY3QucGlwZShtYXAoKGJhbGFuY2VDdXN0b21lcikgPT4gYmFsYW5jZUN1c3RvbWVyPy5yZW1haW5pbmdDcmVkaXRzKSk7XHJcblxyXG5cdFxyXG5cdHB1YmxpYyBoYXNTdWZmaWNpZW50Q3JlZGl0c0ZvckNhcnRUb3RhbCA9ICgpOiBib29sZWFuID0+IHtcclxuXHRcdGNvbnN0IGJhbGFuY2UgPSB0aGlzLl9iYWxhbmNlQ3VzdG9tZXJTdWJqZWN0LnZhbHVlO1xyXG5cclxuXHRcdGlmICghYmFsYW5jZSB8fCBiYWxhbmNlLmNyZWRpdEFtb3VudCA9PT0gbnVsbCB8fCBiYWxhbmNlLmNyZWRpdEFtb3VudCA9PT0gdW5kZWZpbmVkKSB7XHJcblx0XHRcdHJldHVybiB0cnVlO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmIChiYWxhbmNlLnJlbWFpbmluZ0NyZWRpdHMgPT09IHVuZGVmaW5lZCkge1xyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKCh0aGlzLl9jYXJ0U3ViamVjdC52YWx1ZT8udG90YWxzPy50b3RhbCA/PyAwKSA+IGJhbGFuY2UuY3JlZGl0QW1vdW50KSB7XHJcblx0XHRcdHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdub3QtZW5vdWdoLWNyZWRpdHMnKTtcclxuXHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0fVxyXG5cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH07XHJcblxyXG5cdHByaXZhdGUgdmFsaWRhdGVQcmljZUFuZENyZWRpdHMgPSAoaXRlbTogQ2FydEl0ZW0sIHF1YW50aXR5OiBudW1iZXIpOiBib29sZWFuID0+IHtcclxuICAgICAgICBjb25zdCBiYWxhbmNlID0gdGhpcy5fYmFsYW5jZUN1c3RvbWVyU3ViamVjdC52YWx1ZTtcclxuXHJcbiAgICAgICAgaWYgKCFiYWxhbmNlIHx8IGJhbGFuY2UuY3JlZGl0QW1vdW50ID09PSBudWxsIHx8IGJhbGFuY2UuY3JlZGl0QW1vdW50ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoYmFsYW5jZS5yZW1haW5pbmdDcmVkaXRzID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgdW5pdFByaWNlID0gaXRlbS50b3RhbCAvIGl0ZW0ucXVhbnRpdHk7XHJcbiAgICAgICAgY29uc3QgYWRkaXRpb25hbFF1YW50aXR5ID0gcXVhbnRpdHkgLSBpdGVtLnF1YW50aXR5O1xyXG5cclxuICAgICAgICBpZiAoYWRkaXRpb25hbFF1YW50aXR5IDw9IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBhZGRpdGlvbmFsQ29zdCA9IHVuaXRQcmljZSAqIGFkZGl0aW9uYWxRdWFudGl0eTtcclxuXHJcbiAgICAgICAgaWYgKGFkZGl0aW9uYWxDb3N0ID4gYmFsYW5jZS5yZW1haW5pbmdDcmVkaXRzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdub3QtZW5vdWdoLWNyZWRpdHMnKTtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9O1xyXG5cclxuXHRhZGRSZXBlYXRPcmRlclRvQ2FydChpdGVtczogYW55W10pOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5fY2FydEl0ZW1zU3ViamVjdC52YWx1ZS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdjYXJ0LW5vdC1lbXB0eScpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMuX2F1dGhTZXJ2aWNlLmlzQWJsZVRvQnV5KCkpIHtcclxuICAgICAgICAgICAgdGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ211c3Qtc2VsZWN0LWN1c3RvbWVyJylcclxuICAgICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBpdGVtc1RvQWRkID0gaXRlbXMubWFwKGl0ZW0gPT4gKHtcclxuICAgICAgICAgICAgcHJvZHVjdENvZGU6IGl0ZW0ucHJvZHVjdC5pZCxcclxuICAgICAgICAgICAgcXVhbnRpdHk6IGl0ZW0ucXVhbnRpdHksXHJcbiAgICAgICAgICAgIHZhcmlhbnRDb2RlOiBpdGVtLnByb2R1Y3QudmFyaWFudHNbMF0uY29kZVxyXG4gICAgICAgIH0pKTtcclxuXHJcbiAgICAgICAgaWYgKGl0ZW1zVG9BZGQubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCduby1wcm9kdWN0cy10by1hZGQnKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xyXG4gICAgICAgICAgICBpdGVtczogaXRlbXNUb0FkZFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuX3JlcXVlc3RJblByb2Nlc3MubmV4dCh0cnVlKTtcclxuXHJcbiAgICAgICAgdGhpcy5fY29ubmVjdGlvbi5wb3N0KHRoaXMuYWRkQWxsSXRlbXNBcGkoKSwgcGFyYW1zKVxyXG4gICAgICAgICAgICAudG9Qcm9taXNlKClcclxuICAgICAgICAgICAgLnRoZW4ocmVzID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAocmVzPy5zdGF0dXMgPT09ICdmYWlsdXJlJykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IHJlcy5lcnJvcj8udG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9cXHMrL2csICdfJykgfHwgJ3Vua25vd25fZXJyb3InO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3RvYXN0U2VydmljZS5zaG93KGVycm9yTWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zUmVzcG9uc2UgPSByZXM/Lml0ZW1zX3Jlc3BvbnNlIHx8IFtdO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY2FydEl0ZW1zID0gcmVzPy5jYXJ0Py5pdGVtcyB8fCBbXTtcclxuXHJcblx0XHRcdFx0Y29uc3Qgb3V0T2ZTdG9ja0l0ZW1zID0gaXRlbXNSZXNwb25zZS5maWx0ZXIoKGl0ZW06IGFueSkgPT5cclxuXHRcdFx0XHRcdGl0ZW0uc3RhdHVzID09PSAnZmFpbHVyZScgJiZcclxuXHRcdFx0XHRcdGl0ZW0uZXJyb3JzLnNvbWUoKGVycm9yOiBhbnkpID0+IGVycm9yLmNvZGUgPT09ICdvdXRfb2Zfc3RvY2snKVxyXG5cdFx0XHRcdCk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGNhcnRJdGVtcy5sZW5ndGggPT09IDAgJiYgb3V0T2ZTdG9ja0l0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnYWxsLXByb2R1Y3RzLW91dC1vZi1zdG9jaycpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAob3V0T2ZTdG9ja0l0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdygnc29tZS1wcm9kdWN0cy1vdXQtb2Ytc3RvY2snKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoY2FydEl0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUNhcnRPYmoocmVzLmNhcnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQ2FydEl0ZW1zKHRoaXMudHJhbnNmb3JtSXRlbXMoY2FydEl0ZW1zKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ3Byb2R1Y3RzLWFkZGVkJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcm91dGVyLm5hdmlnYXRlKFsnL2NhcnQnXSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihlcnIpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbn1cclxuIl19
|
|
@@ -80,4 +80,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
80
80
|
providedIn: 'root'
|
|
81
81
|
}]
|
|
82
82
|
}], ctorParameters: () => [] });
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbm5lbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLXNlcnZpY2VzL2NoYW5uZWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxHQUFHLEVBQWMsYUFBYSxFQUFFLFdBQVcsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFDbkU7OztHQUdHO0FBSUgsTUFBTSxPQUFPLGNBQWM7SUFDMUI7O09BRUc7SUFDSyxTQUFTLEdBQXdCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3JFOztPQUVHO0lBQ0ssTUFBTSxHQUF5QixNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtJQUNuRTs7T0FFRztJQUNLLFVBQVUsR0FBc0IsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUE7SUFDakU7O09BRUc7SUFDSyxjQUFjLEdBQUcsSUFBSSxhQUFhLEVBQU8sQ0FBQTtJQUNqRDs7T0FFRztJQUNJLFFBQVEsR0FBb0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtJQUNyRTs7T0FFRztJQUNJLGFBQWEsQ0FBTTtJQUMxQjs7T0FFRztJQUNJLFdBQVcsQ0FBTTtJQUV4QixTQUFTO0lBQ1Q7OztPQUdHO0lBQ0ssVUFBVSxLQUFLLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQztJQUVsRyxnQkFBZ0IsQ0FBQztJQUNqQjs7O09BR0c7SUFDSSxVQUFVLEdBQUcsR0FBb0IsRUFBRTtRQUN6QyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQzFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFDZCxHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUNyQixJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzlCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQztZQUNqQyxPQUFPLFFBQVEsQ0FBQTtRQUNoQixDQUFDLENBQUMsQ0FDRixDQUFDLFNBQVMsRUFBRSxDQUFBO1FBQ2IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3RCLENBQUMsQ0FBQTtJQUNEOzs7T0FHRztJQUNJLGNBQWMsQ0FBQyxVQUFlO1FBQ3BDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUMxQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUE7UUFDaEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxVQUFVLENBQUE7UUFDL0IsZ0lBQWdJO0lBQ2pJLENBQUM7SUFDRDs7O09BR0c7SUFDSSxnQkFBZ0IsS0FBSyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO3dHQXBFNUMsY0FBYzs0R0FBZCxjQUFjLGNBRmQsTUFBTTs7NEZBRU4sY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQXBpQ29uc3RhbnRzU2VydmljZSwgQ29yZUNvbnN0YW50c1NlcnZpY2UgfSBmcm9tICcuLi9jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4uL2FwaSc7XHJcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCwgc2hhcmVSZXBsYXkgfSBmcm9tICdyeGpzJztcclxuLyoqXHJcbiAqIFNlcnZpY2lvIHBhcmEgbWFuZWphciBsb3MgY2FuYWxlcyBkZSBsYSBhcGxpY2FjacOzblxyXG4gKiBAY2xhc3MgQ2hhbm5lbFNlcnZpY2VcclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuXHRwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIENoYW5uZWxTZXJ2aWNlIHtcclxuXHQvKipcclxuXHQgKiBDb25zdGFudGVzIGRlIGxhIEFQSVxyXG5cdCAqL1xyXG5cdHByaXZhdGUgYXBpQ29uc3RzOiBBcGlDb25zdGFudHNTZXJ2aWNlID0gaW5qZWN0KEFwaUNvbnN0YW50c1NlcnZpY2UpO1xyXG5cdC8qKlxyXG5cdCAqIENvbnN0YW50ZXMgZGVsIGNvcmVcclxuXHQgKi9cclxuXHRwcml2YXRlIGNvbnN0czogQ29yZUNvbnN0YW50c1NlcnZpY2UgPSBpbmplY3QoQ29yZUNvbnN0YW50c1NlcnZpY2UpXHJcblx0LyoqXHJcblx0ICogTWFuZWphIGxhcyBwZXRpY2lvbmVzIGEgbGEgQVBJXHJcblx0ICovXHJcblx0cHJpdmF0ZSBjb25uZWN0aW9uOiBDb25uZWN0aW9uU2VydmljZSA9IGluamVjdChDb25uZWN0aW9uU2VydmljZSlcclxuXHQvKipcclxuXHQgKiBTdWJqZWN0IHBhcmEgbWFuZWphciBsb3MgY2FtYmlvcyBlbiBsb3MgY2FuYWxlcy5cclxuXHQgKi9cclxuXHRwcml2YXRlIGNoYW5uZWxTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8YW55PigpXHJcblx0LyoqXHJcblx0ICogT2JzZXJ2YWJsZSBkZSBjYW5hbGVzLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBjaGFubmVsJDogT2JzZXJ2YWJsZTxhbnk+ID0gdGhpcy5jaGFubmVsU3ViamVjdC5hc09ic2VydmFibGUoKVxyXG5cdC8qKlxyXG5cdCAqIEFsbWFjZW5hIGVsIGNhbmFsIGFjdGl2byBlbiBsYSBhcGxpY2FjacOzbi5cclxuXHQgKi9cclxuXHRwdWJsaWMgYWN0aXZlQ2hhbm5lbDogYW55O1xyXG5cdC8qKlxyXG5cdCAqIEFsbWFjZW5hIGVsIHRpcG8gZGUgY2FuYWwuXHJcblx0ICovXHJcblx0cHVibGljIGNoYW5uZWxUeXBlOiBhbnk7XHJcblxyXG5cdC8vQVBJIFVSTFxyXG5cdC8qKlxyXG5cdCAqIERldnVlbHZlIGxhIHVybCBwYXJhIG9idGVuZXIgbG9zIGRhdG9zIGRlIHVuIGNhbmFsLlxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHByaXZhdGUgY2hhbm5lbEFwaSgpIHsgcmV0dXJuIGAke3RoaXMuYXBpQ29uc3RzLlNIT1BfQVBJX1VSTH0ke3RoaXMuYXBpQ29uc3RzLkNIQU5ORUx9L2NoYW5uZWxgOyB9XHJcblxyXG5cdGNvbnN0cnVjdG9yKCkgeyB9XHJcblx0LyoqXHJcblx0ICogT2J0aWVuZSBlbCBjYW5hbCBkZSBsYSBBUElcclxuXHQgKiBAcmV0dXJucyBPYnNlcnZhYmxlIGNvbiBlbCBjYW5hbC5cclxuXHQgKi9cclxuXHRwdWJsaWMgZ2V0Q2hhbm5lbCA9ICgpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG5cdFx0dGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLmNoYW5uZWxBcGkoKSkucGlwZShcclxuXHRcdFx0c2hhcmVSZXBsYXkoMSksXHJcblx0XHRcdG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG5cdFx0XHRcdHRoaXMuc2V0Q2hhbm5lbEluZm8ocmVzcG9uc2UpO1xyXG5cdFx0XHRcdHRoaXMuY2hhbm5lbFN1YmplY3QubmV4dChyZXNwb25zZSk7XHJcblx0XHRcdFx0dGhpcy5jaGFubmVsVHlwZSA9IHJlc3BvbnNlLnR5cGU7XHJcblx0XHRcdFx0cmV0dXJuIHJlc3BvbnNlXHJcblx0XHRcdH0pLFxyXG5cdFx0KS5zdWJzY3JpYmUoKVxyXG5cdFx0cmV0dXJuIHRoaXMuY2hhbm5lbCQ7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIENhbWJpYSBsYSBjb25maWd1cmFjacOzbiBkZWwgY2FuYWwgY29uIHVuIGNhbmFsIG51ZXZvLlxyXG5cdCAqIEBwYXJhbSBjaGFubmVsT2JqIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBzZXRDaGFubmVsSW5mbyhjaGFubmVsT2JqOiBhbnkpIHtcclxuXHRcdHRoaXMuYXBpQ29uc3RzLnNldENoYW5uZWwoY2hhbm5lbE9iai5jb2RlKVxyXG5cdFx0dGhpcy5jb25zdHMuc2V0Q3VycmVuY3koY2hhbm5lbE9iai5iYXNlQ3VycmVuY3kpXHJcblx0XHR0aGlzLmFjdGl2ZUNoYW5uZWwgPSBjaGFubmVsT2JqXHJcblx0XHQvL3RoaXMuaW5qZWN0b3IuZ2V0KEFkZHJlc3NpbmdTZXJ2aWNlKS5zZXRUeXBlU2VsZWN0QWRkcmVzcyhjaGFubmVsT2JqLmhlYWRxdWFydGVyU2VsZWN0aW9uT25seSB8fCAnTE9BRF9BRERSRVNTX0FORF9TRUxFQ1RJT04nKVxyXG5cdH1cclxuXHQvKipcclxuXHQgKiBEZXZ1ZWx2ZSBlbCBjYW5hbCBhY3Rpdm8gZW4gbGEgYXBsaWNhY2nDs24uXHJcblx0ICogQHJldHVybnMgXHJcblx0ICovXHJcblx0cHVibGljIGdldEFjdGl2ZUNoYW5uZWwoKSB7IHJldHVybiB0aGlzLmFjdGl2ZUNoYW5uZWw7IH1cclxufVxyXG4iXX0=
|
|
@@ -213,4 +213,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
213
213
|
providedIn: 'root'
|
|
214
214
|
}]
|
|
215
215
|
}], ctorParameters: () => [] });
|
|
216
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1zZXJ2aWNlcy9jaGVja291dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBYyxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxJQUFJLEVBQVEsTUFBTSxZQUFZLENBQUM7QUFDeEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBSy9DLE1BQU0sT0FBTyxlQUFlO0lBRW5CLFlBQVksR0FBZ0IsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2hELFdBQVcsR0FBc0IsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDM0QsaUJBQWlCLEdBQXFCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQy9ELE9BQU8sR0FBd0IsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDM0QsWUFBWSxHQUFn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QUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxTQUFTLENBQUMsQ0FBQztRQUNyRixPQUFPLENBQUMsV0FBVyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQyxDQUFDLENBQUE7SUFFRCxXQUFXLEdBQUcsQ0FBQyxTQUFtQixFQUFFLElBQVMsRUFBRSxFQUFFO1FBQ2hELElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxTQUFTLENBQUMsQ0FBQztRQUM5RSxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xCOzs7WUFHSTtJQUNMLENBQUMsQ0FBQTtJQUVELHNEQUFzRDtJQUM5QyxrQkFBa0IsR0FBRyxHQUFHLEVBQUU7UUFDakMsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUMsQ0FBQTt3R0F6TlcsZUFBZTs0R0FBZixlQUFlLGNBRmYsTUFBTTs7NEZBRU4sZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgZmlyc3RWYWx1ZUZyb20sIE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENhcnRTZXJ2aWNlIH0gZnJvbSAnLi9jYXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hlY2tvdXREYXRhLCBJU3RlcCwgU3RlcFR5cGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IENvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vYXBpJztcbmltcG9ydCB7IEFuYWx5dGljc1NlcnZpY2UgfSBmcm9tICcuL2FuYWx5dGljcyc7XG5pbXBvcnQgeyBBcGlDb25zdGFudHNTZXJ2aWNlIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFN0ZXAsIFVzZXIgfSBmcm9tICcuLi9jbGFzc2VzJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgT3JkZXJVdGlsaXR5U2VydmljZSB9IGZyb20gJy4vb3JkZXItdXRpbGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuL3RvYXN0LnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG5cdHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDaGVja291dFNlcnZpY2Uge1xuXG5cdHByaXZhdGUgX2NhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSA9IGluamVjdChDYXJ0U2VydmljZSk7XG5cdHByaXZhdGUgX2Nvbm5lY3Rpb246IENvbm5lY3Rpb25TZXJ2aWNlID0gaW5qZWN0KENvbm5lY3Rpb25TZXJ2aWNlKTtcblx0cHJpdmF0ZSBfYW5hbHl0aWNzU2VydmljZTogQW5hbHl0aWNzU2VydmljZSA9IGluamVjdChBbmFseXRpY3NTZXJ2aWNlKTtcblx0cHJpdmF0ZSBfY29uc3RzOiBBcGlDb25zdGFudHNTZXJ2aWNlID0gaW5qZWN0KEFwaUNvbnN0YW50c1NlcnZpY2UpO1xuXHRwcml2YXRlIF9hdXRoU2VydmljZTogQXV0aFNlcnZpY2UgPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuXHRwcml2YXRlIF9vcmRlclV0aWxpdHlTZXJ2aWNlOiBPcmRlclV0aWxpdHlTZXJ2aWNlID0gaW5qZWN0KE9yZGVyVXRpbGl0eVNlcnZpY2UpO1xuXHRwcml2YXRlIF9yb3V0ZXI6IFJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuXHRwcml2YXRlIF90b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZSA9IGluamVjdChUb2FzdFNlcnZpY2UpO1xuXG5cdHByaXZhdGUgX2NhbkNoZWNrb3V0U3ViamVjdCA9IG5ldyBSZXBsYXlTdWJqZWN0PGJvb2xlYW4+KCk7XG5cdHByaXZhdGUgX3N0YXRlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U3RlcFtdPihbXSlcblx0cHJpdmF0ZSBfbGFzdFN0ZXBTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cdHByaXZhdGUgX2xvYWRpbmdTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cdHByaXZhdGUgX29yZGVyU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcblx0cHJpdmF0ZSBfYXNzb2NpYXRlZERhdGFTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDaGVja291dERhdGFbXSB8IG51bGw+KG51bGwpO1xuXHRwcml2YXRlIF9sb2FkaW5nU3RlcFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuXHRwdWJsaWMgY2FuQ2hlY2tvdXQkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5fY2FuQ2hlY2tvdXRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXHRwdWJsaWMgc3RhdGUkOiBPYnNlcnZhYmxlPGFueT4gPSB0aGlzLl9zdGF0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cdHB1YmxpYyBpc0xhc3RTdGVwJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuX2xhc3RTdGVwU3ViamVjdC5hc09ic2VydmFibGUoKTtcblx0cHVibGljIGFzc29jaWF0ZWREYXRhJDogT2JzZXJ2YWJsZTxhbnk+ID0gdGhpcy5fYXNzb2NpYXRlZERhdGFTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXHRwdWJsaWMgb3JkZXIkOiBPYnNlcnZhYmxlPGFueT4gPSB0aGlzLl9vcmRlclN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cdHB1YmxpYyBsb2FkaW5nU3RlcCQ6T2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuX2xvYWRpbmdTdGVwU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuXHRwdWJsaWMgdG90YWw6IGFueTtcblx0cHVibGljIGNhcnRMb2NhbDogYW55O1xuXHRwcml2YXRlIGNoZWNrb3V0RGF0YTogYW55ID0ge307XG5cdHByaXZhdGUgb3JkZXI6IGFueTtcblxuXHQvL0FQSSBNZXRob2RzXG5cdGJhc2VBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuX2NvbnN0cy5DSEFOTkVMICsgJy9jaGVja291dC8nICsgdGhpcy5fY2FydFNlcnZpY2UuZ2V0Q2FydFRva2VuKCk7XG5cdGdldEhhc1B1cmNoYXNlQ29uZGl0aW9ucygpIHsgcmV0dXJuICdzaG9wLWFwaS8nICsgdGhpcy5fY29uc3RzLkNIQU5ORUwgKyAnL2NhcnRzLycgKyB0aGlzLl9jYXJ0U2VydmljZS5nZXRDYXJ0VG9rZW4oKSArICcvaGFzX3B1cmNoYXNlX2NvbmRpdGlvbnMnIH07XG5cdGNvbXBsZXRlQXBpKCkgeyByZXR1cm4gdGhpcy5iYXNlQXBpKCkgKyAnL2NvbXBsZXRlJyB9O1xuXG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0Y29tYmluZUxhdGVzdChbdGhpcy5fY2FydFNlcnZpY2UuY2FydEl0ZW1zJCwgdGhpcy5fY2FydFNlcnZpY2UubG9hZGluZyRdKS5zdWJzY3JpYmUoKFtpdGVtcywgbG9hZGluZ10pID0+IHtcblx0XHRcdGlmICghbG9hZGluZyAmJiBpdGVtcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdHRoaXMuX2NhbkNoZWNrb3V0U3ViamVjdC5uZXh0KHRydWUpO1xuXHRcdFx0XHR0aGlzLl9jYXJ0U2VydmljZS5nZXRUb3RhbEFtb3VudCgpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcblx0XHRcdFx0XHR0aGlzLnRvdGFsID0gcmVzO1xuXHRcdFx0XHR9KVxuXHRcdFx0fVxuXHRcdH0pXG5cdFx0dGhpcy5fY2FydFNlcnZpY2UuY2FydCQuc3Vic2NyaWJlKGNhcnQgPT4gY2FydCAmJiAodGhpcy5jYXJ0TG9jYWwgPSBjYXJ0KSAmJiB0aGlzLnVwZGF0ZUFzb2NpYXRlZERhdGEoY2FydCkpO1xuXHRcdHRoaXMub3JkZXIkLnN1YnNjcmliZShvcmRlciA9PiBvcmRlciAmJiB0aGlzLnVwZGF0ZUFzb2NpYXRlZERhdGEob3JkZXIpKVxuXHR9XG5cblx0c2V0U3RlcHMoc3RlcHM6IElTdGVwW10pIHtcblx0XHRsZXQgZmluYWxfc3RlcHM6IFN0ZXBbXSA9IFtdO1xuXHRcdHN0ZXBzLmZvckVhY2goKHN0ZXAsIGkpID0+IGZpbmFsX3N0ZXBzLnB1c2gobmV3IFN0ZXAoc3RlcC5uYW1lLCBzdGVwLnByaW9yaXR5IHx8IChpICsgMSksIHN0ZXAubGFiZWwsIHN0ZXAuc3RhdGUpKSk7XG5cdFx0dGhpcy5fc3RhdGVTdWJqZWN0Lm5leHQoZmluYWxfc3RlcHMpO1xuXHRcdGlmIChmaW5hbF9zdGVwcy5sZW5ndGggPT0gMSkge1xuXHRcdFx0dGhpcy5fbGFzdFN0ZXBTdWJqZWN0Lm5leHQodHJ1ZSk7XG5cdFx0fVxuXHRcdC8vIGNvbnNvbGUubG9nKGZpbmFsX3N0ZXBzKTtcblx0XHRmaXJzdFZhbHVlRnJvbSh0aGlzLl9jb25uZWN0aW9uLmdldCh0aGlzLmdldEhhc1B1cmNoYXNlQ29uZGl0aW9ucygpKSkudGhlbihcblx0XHRcdHJlcyA9PiB7XG5cdFx0XHRcdHRoaXMuX2FuYWx5dGljc1NlcnZpY2UuY2FsbEV2ZW50KCdjaGVja291dF9pbml0JywgeyAuLi50aGlzLmNhcnRMb2NhbCwgY3VycmVuY3k6IHRoaXMuY2FydExvY2FsPy5jdXJyZW5jeSwgdmFsdWU6IHRoaXMuY2FydExvY2FsPy50b3RhbCB9KVxuXHRcdFx0fVxuXHRcdClcblx0fVxuXG5cdG5leHQoKSB7XG5cdFx0dGhpcy5fbG9hZGluZ1N0ZXBTdWJqZWN0Lm5leHQodHJ1ZSk7XG5cdFx0Y29uc3Qgc3RlcHMgPSB0aGlzLl9zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKVxuXHRcdGNvbnN0IHJlYWR5U3RlcCA9IHN0ZXBzLmZpbmRJbmRleChzdGVwID0+IHN0ZXAuc3RhdGUgPT09ICdyZWFkeScpO1xuXHRcdGlmIChzdGVwc1tyZWFkeVN0ZXAgKyAxXSkge1xuXHRcdFx0c3RlcHNbcmVhZHlTdGVwXS5zdGF0ZSA9ICdkb2luZydcblx0XHRcdHN0ZXBzW3JlYWR5U3RlcCArIDFdLnN0YXRlID0gJ3JlYWR5Jztcblx0XHRcdGlmICghc3RlcHNbcmVhZHlTdGVwICsgMl0pIHRoaXMuX2xhc3RTdGVwU3ViamVjdC5uZXh0KHRydWUpO1xuXHRcdFx0dGhpcy5fbG9hZGluZ1N0ZXBTdWJqZWN0Lm5leHQoZmFsc2UpXG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuY29tcGxldGUoKS50aGVuKFxuXHRcdFx0XHRyZXMgPT4ge1xuXHRcdFx0XHRcdGlmIChyZXMub2spIHtcblx0XHRcdFx0XHRcdHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbJ2NoZWNrb3V0L29yZGVyX3N1Y2Nlc3MnXSlcblx0XHRcdFx0XHRcdCB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdvcGVyYXRpb24tZXJyb3InKVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aGlzLl9sb2FkaW5nU3RlcFN1YmplY3QubmV4dChmYWxzZSlcblx0XHRcdFx0fSxcblx0XHRcdFx0ZXJyID0+IHtcblx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhlcnIpXG5cdFx0XHRcdFx0dGhpcy5fbG9hZGluZ1N0ZXBTdWJqZWN0Lm5leHQoZmFsc2UpXG5cdFx0XHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ29wZXJhdGlvbi1lcnJvcicpXG5cdFx0XHRcdH1cblx0XHRcdClcblx0XHR9XG5cdH1cblxuXHRiYWNrKCkge1xuXHRcdGNvbnN0IHN0ZXBzID0gdGhpcy5fc3RhdGVTdWJqZWN0LmdldFZhbHVlKClcblx0XHRjb25zdCByZWFkeVN0ZXAgPSBzdGVwcy5maW5kSW5kZXgoc3RlcCA9PiBzdGVwLnN0YXRlID09PSAncmVhZHknKTtcblx0XHR0aGlzLl9sYXN0U3RlcFN1YmplY3QubmV4dChmYWxzZSk7XG5cdFx0aWYgKHN0ZXBzW3JlYWR5U3RlcCAtIDFdKSB7XG5cdFx0XHRzdGVwc1tyZWFkeVN0ZXBdLnN0YXRlID0gJ3BlbmRpbmcnXG5cdFx0XHRzdGVwc1tyZWFkeVN0ZXAgLSAxXS5zdGF0ZSA9ICdyZWFkeSc7XG5cdFx0fVxuXHR9XG5cblx0c2V0T3JkZXIgPSAob3JkZXI6IGFueSkgPT4geyB0aGlzLm9yZGVyID0gb3JkZXIsIHRoaXMuX29yZGVyU3ViamVjdC5uZXh0KG9yZGVyKSB9O1xuXHQvL2dldE9yZGVyID0gKCkgPT4gdGhpcy5vcmRlciB8fCB0aGlzLm9yZGVyU3ViamVjdC52YWx1ZTtcblxuXHRwcml2YXRlIGNvbXBsZXRlT3JkZXIgPSAoKSA9PiBmaXJzdFZhbHVlRnJvbSh0aGlzLl9jb25uZWN0aW9uLnB1dCh0aGlzLmNvbXBsZXRlQXBpKCksIHsgZW1haWw6IHRoaXMuY2hlY2tvdXREYXRhLmVtYWlsLCBub3RlczogdGhpcy5jaGVja291dERhdGEubm90ZXMgfHwgJycgfSkpO1xuXG5cdGNvbXBsZXRlID0gYXN5bmMgKCkgPT4ge1xuXHRcdHRyeSB7XG5cdFx0XHR0aGlzLl9sb2FkaW5nU3ViamVjdC5uZXh0KHRydWUpO1xuXHRcdFx0bGV0IHJlc3VsdCA9IGF3YWl0IHRoaXMuY29tcGxldGVPcmRlcigpO1xuXHRcdFx0XG5cdFx0XHRpZiAocmVzdWx0ICYmIHJlc3VsdC5lcnJvcikge1xuXHRcdFx0XHR0aGlzLl9jYXJ0U2VydmljZS5jaGFuZ2VIYXZlVG9VcGRhdGUoZmFsc2UpO1xuXHRcdFx0XHR0aGlzLl9sb2FkaW5nU3ViamVjdC5uZXh0KGZhbHNlKTtcblx0XHRcdFx0cmV0dXJuICh7IG9rOiBmYWxzZSwgcmVxdWlyZV9sb2dpbjogdHJ1ZSwgbWVzc2FnZTogJ25vdC1jb21wbGV0ZWQnIH0pO1xuXHRcdFx0fVxuXG5cdFx0XHR0aGlzLnNldE9yZGVyKHJlc3VsdCk7XG5cdFx0XHR0aGlzLl9hbmFseXRpY3NTZXJ2aWNlLmNhbGxFdmVudCgncHVyY2hhc2UnLCB7IC4uLnJlc3VsdCwgY3VycmVuY3k6IHJlc3VsdC5jdXJyZW5jeSwgdmFsdWU6IHJlc3VsdC50b3RhbCB9KTtcblx0XHRcdHRoaXMuX2NhcnRTZXJ2aWNlLmNsZWFyQW5kUmVzZXRDYXJ0KCk7XG5cdFx0XHR0aGlzLl9jYW5DaGVja291dFN1YmplY3QubmV4dChmYWxzZSk7XG5cdFx0XHQvL3RoaXMuX29uUmVhZHlTdWJqZWN0Lm5leHQoZmFsc2UpO1xuXHRcdFx0dGhpcy5fbG9hZGluZ1N1YmplY3QubmV4dChmYWxzZSk7XG5cdFx0XHRcblx0XHRcdC8vIOKaoO+4jyBGSVg6IFJlc2V0IGNoZWNrb3V0IGRhdGEgYWZ0ZXIgb3JkZXIgY29tcGxldGlvblxuXHRcdFx0dGhpcy5yZXNldENoZWNrb3V0U3RhdGUoKTtcblxuXHRcdFx0cmV0dXJuICh7IG9rOiB0cnVlLCByZXF1aXJlX2xvZ2luOiBmYWxzZSwgbWVzc2FnZTogJycgfSk7XG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdHRoaXMuX2xvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpO1xuXHRcdFx0Y29uc29sZS5lcnJvcignRXJyb3IgaW4gY29tcGxldGU6JywgZXJyb3IpO1xuXG5cdFx0XHRyZXR1cm4geyBvazogZmFsc2UsIHJlcXVpcmVfbG9naW46IGZhbHNlLCBtZXNzYWdlOiAnQW4gZXJyb3Igb2NjdXJyZWQnIH07XG5cdFx0fVxuXG5cdH1cblxuXHQvLyB1cGRhdGVBc29jaWF0ZWREYXRhID0gKGNhcnQ6IGFueSkgPT4ge1xuXHQvLyBcdGxldCByZXN1bHQgPSB0aGlzLl9vcmRlclV0aWxpdHlTZXJ2aWNlLmdldFByb21vdGlvbnMoY2FydCk7XG5cdC8vIFx0Y29uc3QgdXNlclByb2ZpbGU6IFVzZXIgPSBVc2VyLmZyb21Kc29uKHRoaXMuX2F1dGhTZXJ2aWNlLmdldFVzZXJQcm9maWxlQXNVc2VyKCkpO1xuXHQvLyBcdGlmIChyZXN1bHQpIHtcblx0Ly8gXHRcdGlmICh1c2VyUHJvZmlsZS5pc1dob2xlc2FsZXIoKSAmJiBjYXJ0LnRvdGFscy50YXhlcyAhPSAwKSB7XG5cdC8vIFx0XHRcdGxldCB0b3RhbCA9IHsgLi4ucmVzdWx0W3Jlc3VsdC5sZW5ndGggLSAxXSB9O1xuXHQvLyBcdFx0XHRyZXN1bHRbcmVzdWx0Lmxlbmd0aCAtIDFdID0ge1xuXHQvLyBcdFx0XHRcdHR5cGU6ICd0YXhlcycsXG5cdC8vIFx0XHRcdFx0bmFtZTogJ3RheGVzJyxcblx0Ly8gXHRcdFx0XHRhbW91bnQ6IGNhcnQudG90YWxzLnRheGVzXG5cdC8vIFx0XHRcdH1cblx0Ly8gXHRcdFx0cmVzdWx0LnB1c2godG90YWwpO1xuXHQvLyBcdFx0fVxuXHQvLyBcdFx0bGV0IHNoaXBtZW50ID0gcmVzdWx0Py5maW5kKChwcm9tb3Rpb246IGFueSkgPT4gcHJvbW90aW9uLnR5cGUgPT0gXCJzaGlwbWVudFwiKTtcblx0Ly8gXHRcdGlmICghc2hpcG1lbnQgJiYgY2FydC50b3RhbHMuc2hpcHBpbmcgIT0gMCkge1xuXG5cdC8vIFx0XHRcdGlmIChyZXN1bHQ/Lmxlbmd0aCAmJiAhcmVzdWx0LmZpbmQoKGl0ZW06IGFueSkgPT4gaXRlbS50eXBlID09PSBcInNoaXBtZW50XCIpKSB7XG5cdC8vIFx0XHRcdFx0bGV0IHRvdGFsID0geyAuLi5yZXN1bHRbcmVzdWx0Lmxlbmd0aCAtIDFdIH07XG5cdC8vIFx0XHRcdFx0cmVzdWx0W3Jlc3VsdC5sZW5ndGggLSAxXSA9IHtcblx0Ly8gXHRcdFx0XHRcdHR5cGU6ICdzaGlwbWVudCcsXG5cdC8vIFx0XHRcdFx0XHRuYW1lOiAnc2hpcG1lbnQnLFxuXHQvLyBcdFx0XHRcdFx0YW1vdW50OiBjYXJ0LnRvdGFscy5zaGlwcGluZ1xuXHQvLyBcdFx0XHRcdH1cblx0Ly8gXHRcdFx0XHRyZXN1bHQucHVzaCh0b3RhbCk7XG5cdC8vIFx0XHRcdH1cblx0Ly8gXHRcdH1cblx0Ly8gXHRcdHRoaXMuX2Fzc29jaWF0ZWREYXRhU3ViamVjdC5uZXh0KHJlc3VsdCk7XG5cdC8vIFx0fVxuXHQvLyB9XG5cdHVwZGF0ZUFzb2NpYXRlZERhdGEgPSAoY2FydDogYW55KSA9PiB7XG4gICAgICAgIGxldCByZXN1bHQgPSB0aGlzLl9vcmRlclV0aWxpdHlTZXJ2aWNlLmdldFByb21vdGlvbnMoY2FydCk7XG5cdFx0aWYgKGNhcnQudG90YWxzLnRheGVzICE9IDAgJiYgcmVzdWx0ICYmIHJlc3VsdC5sZW5ndGggPiAwKSB7XG5cdFx0XHRsZXQgdG90YWwgPSB7IC4uLnJlc3VsdFtyZXN1bHQubGVuZ3RoIC0gMV0gfTtcblx0XHRcdHJlc3VsdFtyZXN1bHQubGVuZ3RoIC0gMV0gPSB7XG5cdFx0XHRcdHR5cGU6ICd0YXhlcycsXG5cdFx0XHRcdG5hbWU6ICd0YXhlcycsXG5cdFx0XHRcdGFtb3VudDogY2FydC50b3RhbHMudGF4ZXNcblx0XHRcdH1cblx0XHRcdHJlc3VsdC5wdXNoKHRvdGFsKTtcblx0XHR9XG4gICAgICAgIGxldCBzaGlwbWVudCA9IHJlc3VsdD8uZmluZChwcm9tb3Rpb24gPT4gcHJvbW90aW9uLnR5cGUgPT0gXCJzaGlwbWVudFwiKTtcbiAgICAgICAgaWYgKCFzaGlwbWVudCAmJiBjYXJ0LnRvdGFscy5zaGlwcGluZyAhPSAwKSB7XG5cbiAgICAgICAgICAgIGlmIChyZXN1bHQ/Lmxlbmd0aCAmJiAhcmVzdWx0LmZpbmQoaXRlbSA9PiBpdGVtLnR5cGUgPT09IFwic2hpcG1lbnRcIikpIHtcbiAgICAgICAgICAgICAgICBsZXQgdG90YWwgPSB7IC4uLnJlc3VsdFtyZXN1bHQubGVuZ3RoIC0gMV0gfTtcbiAgICAgICAgICAgICAgICByZXN1bHRbcmVzdWx0Lmxlbmd0aCAtIDFdID0ge1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnc2hpcG1lbnQnLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnc2hpcG1lbnQnLFxuICAgICAgICAgICAgICAgICAgICBhbW91bnQ6IGNhcnQudG90YWxzLnNoaXBwaW5nXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRvdGFsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXHRcdHRoaXMuX2Fzc29jaWF0ZWREYXRhU3ViamVjdC5uZXh0KHJlc3VsdCA/PyBudWxsKTtcbiAgICB9XG5cblx0Z2V0U3RlcERhdGEgPSAoc3RlcF9uYW1lOiBTdGVwVHlwZSkgPT4ge1xuXHRcdGxldCBzdGVwX3Jlc3VsdCA9IHRoaXMuX3N0YXRlU3ViamVjdC5nZXRWYWx1ZSgpLmZpbmQoc3RlcCA9PiBzdGVwLm5hbWUgPT0gc3RlcF9uYW1lKTtcblx0XHRyZXR1cm4gKHN0ZXBfcmVzdWx0ICYmIHN0ZXBfcmVzdWx0LmRhdGEpO1xuXHR9XG5cblx0c2V0U3RlcERhdGEgPSAoc3RlcF9uYW1lOiBTdGVwVHlwZSwgZGF0YTogYW55KSA9PiB7XG5cdFx0bGV0IHN0ZXAgPSB0aGlzLl9zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKS5maW5kKHN0ZXAgPT4gc3RlcC5uYW1lID09IHN0ZXBfbmFtZSk7XG5cdFx0c3RlcD8ucmVhZHkoZGF0YSk7XG5cdFx0LyogaWYgKGRhdGEpIHtcblx0XHRcdHRoaXMuX29yZGVyU3ViamVjdC5uZXh0KGRhdGEpO1xuXHRcdFx0dGhpcy50b3RhbCA9IGRhdGEudG90YWxzLnRvdGFsO1xuXHRcdH0gKi9cblx0fVxuXG5cdC8vIOKaoO+4jyBGSVg6IFJlc2V0IGNoZWNrb3V0IHN0YXRlIGFmdGVyIG9yZGVyIGNvbXBsZXRpb25cblx0cHJpdmF0ZSByZXNldENoZWNrb3V0U3RhdGUgPSAoKSA9PiB7XG5cdFx0dGhpcy5jaGVja291dERhdGEgPSB7fTtcblx0XHR0aGlzLm9yZGVyID0gbnVsbDtcblx0XHR0aGlzLl9zdGF0ZVN1YmplY3QubmV4dChbXSk7XG5cdFx0dGhpcy5fYXNzb2NpYXRlZERhdGFTdWJqZWN0Lm5leHQobnVsbCk7XG5cdFx0dGhpcy5fbGFzdFN0ZXBTdWJqZWN0Lm5leHQoZmFsc2UpO1xuXHR9XG59XG4iXX0=
|
|
216
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1zZXJ2aWNlcy9jaGVja291dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBYyxhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxJQUFJLEVBQVEsTUFBTSxZQUFZLENBQUM7QUFDeEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBSy9DLE1BQU0sT0FBTyxlQUFlO0lBRW5CLFlBQVksR0FBZ0IsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2hELFdBQVcsR0FBc0IsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDM0QsaUJBQWlCLEdBQXFCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQy9ELE9BQU8sR0FBd0IsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDM0QsWUFBWSxHQUFnQixNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDaEQsb0JBQW9CLEdBQXdCLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3hFLE9BQU8sR0FBVyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakMsYUFBYSxHQUFpQixNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFFbkQsbUJBQW1CLEdBQUcsSUFBSSxhQUFhLEVBQVcsQ0FBQztJQUNuRCxhQUFhLEdBQUcsSUFBSSxlQUFlLENBQVMsRUFBRSxDQUFDLENBQUE7SUFDL0MsZ0JBQWdCLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDdkQsZUFBZSxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ3RELGFBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBTSxJQUFJLENBQUMsQ0FBQztJQUMvQyxzQkFBc0IsR0FBRyxJQUFJLGVBQWUsQ0FBd0IsSUFBSSxDQUFDLENBQUM7SUFDMUUsbUJBQW1CLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7SUFFM0QsWUFBWSxHQUF3QixJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUUsTUFBTSxHQUFvQixJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzVELFdBQVcsR0FBd0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hFLGVBQWUsR0FBb0IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzlFLE1BQU0sR0FBb0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM1RCxZQUFZLEdBQXVCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUUzRSxLQUFLLENBQU07SUFDWCxTQUFTLENBQU07SUFDZCxZQUFZLEdBQVEsRUFBRSxDQUFDO0lBQ3ZCLEtBQUssQ0FBTTtJQUVuQixhQUFhO0lBQ2IsT0FBTyxHQUFHLEdBQUcsRUFBRSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sR0FBRyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNyRyx3QkFBd0IsS0FBSyxPQUFPLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sR0FBRyxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsR0FBRywwQkFBMEIsQ0FBQSxDQUFDLENBQUM7SUFBQSxDQUFDO0lBQ3JKLFdBQVcsS0FBSyxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxXQUFXLENBQUEsQ0FBQyxDQUFDO0lBQUEsQ0FBQztJQUd0RDtRQUNDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsRUFBRSxFQUFFO1lBQ3hHLElBQUksQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDcEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtvQkFDekQsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7Z0JBQ2xCLENBQUMsQ0FBQyxDQUFBO1lBQ0gsQ0FBQztRQUNGLENBQUMsQ0FBQyxDQUFBO1FBQ0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM3RyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtJQUN6RSxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQWM7UUFDdEIsSUFBSSxXQUFXLEdBQVcsRUFBRSxDQUFDO1FBQzdCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEgsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDckMsSUFBSSxXQUFXLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEMsQ0FBQztRQUNELDRCQUE0QjtRQUM1QixjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDekUsR0FBRyxDQUFDLEVBQUU7WUFDTCxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLGVBQWUsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQTtRQUMzSSxDQUFDLENBQ0QsQ0FBQTtJQUNGLENBQUM7SUFFRCxJQUFJO1FBQ0gsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFBO1FBQzNDLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLE9BQU8sQ0FBQyxDQUFDO1FBQ2xFLElBQUksS0FBSyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzFCLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFBO1lBQ2hDLEtBQUssQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQztZQUNyQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7Z0JBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3JDLENBQUM7YUFBTSxDQUFDO1lBQ1AsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FDbkIsR0FBRyxDQUFDLEVBQUU7Z0JBQ0wsSUFBSSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUM7b0JBQ1osSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUE7b0JBQ2hELE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixDQUFDO3FCQUFNLENBQUM7b0JBQ1AsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtnQkFDM0MsQ0FBQztnQkFDRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ3JDLENBQUMsRUFDRCxHQUFHLENBQUMsRUFBRTtnQkFDTCxtQkFBbUI7Z0JBQ25CLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7Z0JBQ3BDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUE7WUFDM0MsQ0FBQyxDQUNELENBQUE7UUFDRixDQUFDO0lBQ0YsQ0FBQztJQUVELElBQUk7UUFDSCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFBO1FBQzNDLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxLQUFLLE9BQU8sQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEMsSUFBSSxLQUFLLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDMUIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUE7WUFDbEMsS0FBSyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDO1FBQ3RDLENBQUM7SUFDRixDQUFDO0lBRUQsUUFBUSxHQUFHLENBQUMsS0FBVSxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFDLENBQUMsQ0FBQztJQUNsRix5REFBeUQ7SUFFakQsYUFBYSxHQUFHLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVqSyxRQUFRLEdBQUcsS0FBSyxJQUFJLEVBQUU7UUFDckIsSUFBSSxDQUFDO1lBQ0osSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEMsSUFBSSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFFeEMsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUM1QixJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM1QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDakMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZFLENBQUM7WUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLEVBQUUsR0FBRyxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQzVHLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JDLG1DQUFtQztZQUNuQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUVqQyxxREFBcUQ7WUFDckQsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFFMUIsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzFELENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pDLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFM0MsT0FBTyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztRQUMxRSxDQUFDO0lBRUYsQ0FBQyxDQUFBO0lBRUQseUNBQXlDO0lBQ3pDLCtEQUErRDtJQUMvRCxzRkFBc0Y7SUFDdEYsaUJBQWlCO0lBQ2pCLGdFQUFnRTtJQUNoRSxtREFBbUQ7SUFDbkQsbUNBQW1DO0lBQ25DLHFCQUFxQjtJQUNyQixxQkFBcUI7SUFDckIsZ0NBQWdDO0lBQ2hDLE9BQU87SUFDUCx5QkFBeUI7SUFDekIsTUFBTTtJQUNOLG1GQUFtRjtJQUNuRixrREFBa0Q7SUFFbEQsb0ZBQW9GO0lBQ3BGLG9EQUFvRDtJQUNwRCxvQ0FBb0M7SUFDcEMseUJBQXlCO0lBQ3pCLHlCQUF5QjtJQUN6QixvQ0FBb0M7SUFDcEMsUUFBUTtJQUNSLDBCQUEwQjtJQUMxQixPQUFPO0lBQ1AsTUFBTTtJQUNOLDhDQUE4QztJQUM5QyxLQUFLO0lBQ0wsSUFBSTtJQUNKLG1CQUFtQixHQUFHLENBQUMsSUFBUyxFQUFFLEVBQUU7UUFDN0IsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqRSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMzRCxJQUFJLEtBQUssR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUM3QyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRztnQkFDM0IsSUFBSSxFQUFFLE9BQU87Z0JBQ2IsSUFBSSxFQUFFLE9BQU87Z0JBQ2IsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSzthQUN6QixDQUFBO1lBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQixDQUFDO1FBQ0ssSUFBSSxRQUFRLEdBQUcsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksVUFBVSxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUV6QyxJQUFJLE1BQU0sRUFBRSxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUNuRSxJQUFJLEtBQUssR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDN0MsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUc7b0JBQ3hCLElBQUksRUFBRSxVQUFVO29CQUNoQixJQUFJLEVBQUUsVUFBVTtvQkFDaEIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUTtpQkFDL0IsQ0FBQTtnQkFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZCLENBQUM7UUFDTCxDQUFDO1FBQ1AsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLENBQUM7SUFDL0MsQ0FBQyxDQUFBO0lBRUosV0FBVyxHQUFHLENBQUMsU0FBbUIsRUFBRSxFQUFFO1FBQ3JDLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxTQUFTLENBQUMsQ0FBQztRQUNyRixPQUFPLENBQUMsV0FBVyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQyxDQUFDLENBQUE7SUFFRCxXQUFXLEdBQUcsQ0FBQyxTQUFtQixFQUFFLElBQVMsRUFBRSxFQUFFO1FBQ2hELElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxTQUFTLENBQUMsQ0FBQztRQUM5RSxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xCOzs7WUFHSTtJQUNMLENBQUMsQ0FBQTtJQUVELHNEQUFzRDtJQUM5QyxrQkFBa0IsR0FBRyxHQUFHLEVBQUU7UUFDakMsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUMsQ0FBQTt3R0F6TlcsZUFBZTs0R0FBZixlQUFlLGNBRmYsTUFBTTs7NEZBRU4sZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDWCxVQUFVLEVBQUUsTUFBTTtpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBmaXJzdFZhbHVlRnJvbSwgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4vY2FydC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2hlY2tvdXREYXRhLCBJU3RlcCwgU3RlcFR5cGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi9hcGknO1xyXG5pbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlIH0gZnJvbSAnLi9hbmFseXRpY3MnO1xyXG5pbXBvcnQgeyBBcGlDb25zdGFudHNTZXJ2aWNlIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcclxuaW1wb3J0IHsgU3RlcCwgVXNlciB9IGZyb20gJy4uL2NsYXNzZXMnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT3JkZXJVdGlsaXR5U2VydmljZSB9IGZyb20gJy4vb3JkZXItdXRpbGl0eS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi90b2FzdC5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuXHRwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIENoZWNrb3V0U2VydmljZSB7XHJcblxyXG5cdHByaXZhdGUgX2NhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSA9IGluamVjdChDYXJ0U2VydmljZSk7XHJcblx0cHJpdmF0ZSBfY29ubmVjdGlvbjogQ29ubmVjdGlvblNlcnZpY2UgPSBpbmplY3QoQ29ubmVjdGlvblNlcnZpY2UpO1xyXG5cdHByaXZhdGUgX2FuYWx5dGljc1NlcnZpY2U6IEFuYWx5dGljc1NlcnZpY2UgPSBpbmplY3QoQW5hbHl0aWNzU2VydmljZSk7XHJcblx0cHJpdmF0ZSBfY29uc3RzOiBBcGlDb25zdGFudHNTZXJ2aWNlID0gaW5qZWN0KEFwaUNvbnN0YW50c1NlcnZpY2UpO1xyXG5cdHByaXZhdGUgX2F1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSA9IGluamVjdChBdXRoU2VydmljZSk7XHJcblx0cHJpdmF0ZSBfb3JkZXJVdGlsaXR5U2VydmljZTogT3JkZXJVdGlsaXR5U2VydmljZSA9IGluamVjdChPcmRlclV0aWxpdHlTZXJ2aWNlKTtcclxuXHRwcml2YXRlIF9yb3V0ZXI6IFJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xyXG5cdHByaXZhdGUgX3RvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlID0gaW5qZWN0KFRvYXN0U2VydmljZSk7XHJcblxyXG5cdHByaXZhdGUgX2NhbkNoZWNrb3V0U3ViamVjdCA9IG5ldyBSZXBsYXlTdWJqZWN0PGJvb2xlYW4+KCk7XHJcblx0cHJpdmF0ZSBfc3RhdGVTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTdGVwW10+KFtdKVxyXG5cdHByaXZhdGUgX2xhc3RTdGVwU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cdHByaXZhdGUgX2xvYWRpbmdTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcblx0cHJpdmF0ZSBfb3JkZXJTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpO1xyXG5cdHByaXZhdGUgX2Fzc29jaWF0ZWREYXRhU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q2hlY2tvdXREYXRhW10gfCBudWxsPihudWxsKTtcclxuXHRwcml2YXRlIF9sb2FkaW5nU3RlcFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuXHJcblx0cHVibGljIGNhbkNoZWNrb3V0JDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMuX2NhbkNoZWNrb3V0U3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHRwdWJsaWMgc3RhdGUkOiBPYnNlcnZhYmxlPGFueT4gPSB0aGlzLl9zdGF0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcblx0cHVibGljIGlzTGFzdFN0ZXAkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5fbGFzdFN0ZXBTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cdHB1YmxpYyBhc3NvY2lhdGVkRGF0YSQ6IE9ic2VydmFibGU8YW55PiA9IHRoaXMuX2Fzc29jaWF0ZWREYXRhU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHRwdWJsaWMgb3JkZXIkOiBPYnNlcnZhYmxlPGFueT4gPSB0aGlzLl9vcmRlclN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcblx0cHVibGljIGxvYWRpbmdTdGVwJDpPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5fbG9hZGluZ1N0ZXBTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuXHRwdWJsaWMgdG90YWw6IGFueTtcclxuXHRwdWJsaWMgY2FydExvY2FsOiBhbnk7XHJcblx0cHJpdmF0ZSBjaGVja291dERhdGE6IGFueSA9IHt9O1xyXG5cdHByaXZhdGUgb3JkZXI6IGFueTtcclxuXHJcblx0Ly9BUEkgTWV0aG9kc1xyXG5cdGJhc2VBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuX2NvbnN0cy5DSEFOTkVMICsgJy9jaGVja291dC8nICsgdGhpcy5fY2FydFNlcnZpY2UuZ2V0Q2FydFRva2VuKCk7XHJcblx0Z2V0SGFzUHVyY2hhc2VDb25kaXRpb25zKCkgeyByZXR1cm4gJ3Nob3AtYXBpLycgKyB0aGlzLl9jb25zdHMuQ0hBTk5FTCArICcvY2FydHMvJyArIHRoaXMuX2NhcnRTZXJ2aWNlLmdldENhcnRUb2tlbigpICsgJy9oYXNfcHVyY2hhc2VfY29uZGl0aW9ucycgfTtcclxuXHRjb21wbGV0ZUFwaSgpIHsgcmV0dXJuIHRoaXMuYmFzZUFwaSgpICsgJy9jb21wbGV0ZScgfTtcclxuXHJcblxyXG5cdGNvbnN0cnVjdG9yKCkge1xyXG5cdFx0Y29tYmluZUxhdGVzdChbdGhpcy5fY2FydFNlcnZpY2UuY2FydEl0ZW1zJCwgdGhpcy5fY2FydFNlcnZpY2UubG9hZGluZyRdKS5zdWJzY3JpYmUoKFtpdGVtcywgbG9hZGluZ10pID0+IHtcclxuXHRcdFx0aWYgKCFsb2FkaW5nICYmIGl0ZW1zLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHR0aGlzLl9jYW5DaGVja291dFN1YmplY3QubmV4dCh0cnVlKTtcclxuXHRcdFx0XHR0aGlzLl9jYXJ0U2VydmljZS5nZXRUb3RhbEFtb3VudCgpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuXHRcdFx0XHRcdHRoaXMudG90YWwgPSByZXM7XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0fVxyXG5cdFx0fSlcclxuXHRcdHRoaXMuX2NhcnRTZXJ2aWNlLmNhcnQkLnN1YnNjcmliZShjYXJ0ID0+IGNhcnQgJiYgKHRoaXMuY2FydExvY2FsID0gY2FydCkgJiYgdGhpcy51cGRhdGVBc29jaWF0ZWREYXRhKGNhcnQpKTtcclxuXHRcdHRoaXMub3JkZXIkLnN1YnNjcmliZShvcmRlciA9PiBvcmRlciAmJiB0aGlzLnVwZGF0ZUFzb2NpYXRlZERhdGEob3JkZXIpKVxyXG5cdH1cclxuXHJcblx0c2V0U3RlcHMoc3RlcHM6IElTdGVwW10pIHtcclxuXHRcdGxldCBmaW5hbF9zdGVwczogU3RlcFtdID0gW107XHJcblx0XHRzdGVwcy5mb3JFYWNoKChzdGVwLCBpKSA9PiBmaW5hbF9zdGVwcy5wdXNoKG5ldyBTdGVwKHN0ZXAubmFtZSwgc3RlcC5wcmlvcml0eSB8fCAoaSArIDEpLCBzdGVwLmxhYmVsLCBzdGVwLnN0YXRlKSkpO1xyXG5cdFx0dGhpcy5fc3RhdGVTdWJqZWN0Lm5leHQoZmluYWxfc3RlcHMpO1xyXG5cdFx0aWYgKGZpbmFsX3N0ZXBzLmxlbmd0aCA9PSAxKSB7XHJcblx0XHRcdHRoaXMuX2xhc3RTdGVwU3ViamVjdC5uZXh0KHRydWUpO1xyXG5cdFx0fVxyXG5cdFx0Ly8gY29uc29sZS5sb2coZmluYWxfc3RlcHMpO1xyXG5cdFx0Zmlyc3RWYWx1ZUZyb20odGhpcy5fY29ubmVjdGlvbi5nZXQodGhpcy5nZXRIYXNQdXJjaGFzZUNvbmRpdGlvbnMoKSkpLnRoZW4oXHJcblx0XHRcdHJlcyA9PiB7XHJcblx0XHRcdFx0dGhpcy5fYW5hbHl0aWNzU2VydmljZS5jYWxsRXZlbnQoJ2NoZWNrb3V0X2luaXQnLCB7IC4uLnRoaXMuY2FydExvY2FsLCBjdXJyZW5jeTogdGhpcy5jYXJ0TG9jYWw/LmN1cnJlbmN5LCB2YWx1ZTogdGhpcy5jYXJ0TG9jYWw/LnRvdGFsIH0pXHJcblx0XHRcdH1cclxuXHRcdClcclxuXHR9XHJcblxyXG5cdG5leHQoKSB7XHJcblx0XHR0aGlzLl9sb2FkaW5nU3RlcFN1YmplY3QubmV4dCh0cnVlKTtcclxuXHRcdGNvbnN0IHN0ZXBzID0gdGhpcy5fc3RhdGVTdWJqZWN0LmdldFZhbHVlKClcclxuXHRcdGNvbnN0IHJlYWR5U3RlcCA9IHN0ZXBzLmZpbmRJbmRleChzdGVwID0+IHN0ZXAuc3RhdGUgPT09ICdyZWFkeScpO1xyXG5cdFx0aWYgKHN0ZXBzW3JlYWR5U3RlcCArIDFdKSB7XHJcblx0XHRcdHN0ZXBzW3JlYWR5U3RlcF0uc3RhdGUgPSAnZG9pbmcnXHJcblx0XHRcdHN0ZXBzW3JlYWR5U3RlcCArIDFdLnN0YXRlID0gJ3JlYWR5JztcclxuXHRcdFx0aWYgKCFzdGVwc1tyZWFkeVN0ZXAgKyAyXSkgdGhpcy5fbGFzdFN0ZXBTdWJqZWN0Lm5leHQodHJ1ZSk7XHJcblx0XHRcdHRoaXMuX2xvYWRpbmdTdGVwU3ViamVjdC5uZXh0KGZhbHNlKVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5jb21wbGV0ZSgpLnRoZW4oXHJcblx0XHRcdFx0cmVzID0+IHtcclxuXHRcdFx0XHRcdGlmIChyZXMub2spIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5fcm91dGVyLm5hdmlnYXRlKFsnY2hlY2tvdXQvb3JkZXJfc3VjY2VzcyddKVxyXG5cdFx0XHRcdFx0XHQgd2luZG93LnNjcm9sbFRvKDAsIDApO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5fdG9hc3RTZXJ2aWNlLnNob3coJ29wZXJhdGlvbi1lcnJvcicpXHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR0aGlzLl9sb2FkaW5nU3RlcFN1YmplY3QubmV4dChmYWxzZSlcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdGVyciA9PiB7XHJcblx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhlcnIpXHJcblx0XHRcdFx0XHR0aGlzLl9sb2FkaW5nU3RlcFN1YmplY3QubmV4dChmYWxzZSlcclxuXHRcdFx0XHRcdHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdvcGVyYXRpb24tZXJyb3InKVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0KVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0YmFjaygpIHtcclxuXHRcdGNvbnN0IHN0ZXBzID0gdGhpcy5fc3RhdGVTdWJqZWN0LmdldFZhbHVlKClcclxuXHRcdGNvbnN0IHJlYWR5U3RlcCA9IHN0ZXBzLmZpbmRJbmRleChzdGVwID0+IHN0ZXAuc3RhdGUgPT09ICdyZWFkeScpO1xyXG5cdFx0dGhpcy5fbGFzdFN0ZXBTdWJqZWN0Lm5leHQoZmFsc2UpO1xyXG5cdFx0aWYgKHN0ZXBzW3JlYWR5U3RlcCAtIDFdKSB7XHJcblx0XHRcdHN0ZXBzW3JlYWR5U3RlcF0uc3RhdGUgPSAncGVuZGluZydcclxuXHRcdFx0c3RlcHNbcmVhZHlTdGVwIC0gMV0uc3RhdGUgPSAncmVhZHknO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0c2V0T3JkZXIgPSAob3JkZXI6IGFueSkgPT4geyB0aGlzLm9yZGVyID0gb3JkZXIsIHRoaXMuX29yZGVyU3ViamVjdC5uZXh0KG9yZGVyKSB9O1xyXG5cdC8vZ2V0T3JkZXIgPSAoKSA9PiB0aGlzLm9yZGVyIHx8IHRoaXMub3JkZXJTdWJqZWN0LnZhbHVlO1xyXG5cclxuXHRwcml2YXRlIGNvbXBsZXRlT3JkZXIgPSAoKSA9PiBmaXJzdFZhbHVlRnJvbSh0aGlzLl9jb25uZWN0aW9uLnB1dCh0aGlzLmNvbXBsZXRlQXBpKCksIHsgZW1haWw6IHRoaXMuY2hlY2tvdXREYXRhLmVtYWlsLCBub3RlczogdGhpcy5jaGVja291dERhdGEubm90ZXMgfHwgJycgfSkpO1xyXG5cclxuXHRjb21wbGV0ZSA9IGFzeW5jICgpID0+IHtcclxuXHRcdHRyeSB7XHJcblx0XHRcdHRoaXMuX2xvYWRpbmdTdWJqZWN0Lm5leHQodHJ1ZSk7XHJcblx0XHRcdGxldCByZXN1bHQgPSBhd2FpdCB0aGlzLmNvbXBsZXRlT3JkZXIoKTtcclxuXHRcdFx0XHJcblx0XHRcdGlmIChyZXN1bHQgJiYgcmVzdWx0LmVycm9yKSB7XHJcblx0XHRcdFx0dGhpcy5fY2FydFNlcnZpY2UuY2hhbmdlSGF2ZVRvVXBkYXRlKGZhbHNlKTtcclxuXHRcdFx0XHR0aGlzLl9sb2FkaW5nU3ViamVjdC5uZXh0KGZhbHNlKTtcclxuXHRcdFx0XHRyZXR1cm4gKHsgb2s6IGZhbHNlLCByZXF1aXJlX2xvZ2luOiB0cnVlLCBtZXNzYWdlOiAnbm90LWNvbXBsZXRlZCcgfSk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdHRoaXMuc2V0T3JkZXIocmVzdWx0KTtcclxuXHRcdFx0dGhpcy5fYW5hbHl0aWNzU2VydmljZS5jYWxsRXZlbnQoJ3B1cmNoYXNlJywgeyAuLi5yZXN1bHQsIGN1cnJlbmN5OiByZXN1bHQuY3VycmVuY3ksIHZhbHVlOiByZXN1bHQudG90YWwgfSk7XHJcblx0XHRcdHRoaXMuX2NhcnRTZXJ2aWNlLmNsZWFyQW5kUmVzZXRDYXJ0KCk7XHJcblx0XHRcdHRoaXMuX2NhbkNoZWNrb3V0U3ViamVjdC5uZXh0KGZhbHNlKTtcclxuXHRcdFx0Ly90aGlzLl9vblJlYWR5U3ViamVjdC5uZXh0KGZhbHNlKTtcclxuXHRcdFx0dGhpcy5fbG9hZGluZ1N1YmplY3QubmV4dChmYWxzZSk7XHJcblx0XHRcdFxyXG5cdFx0XHQvLyDimqDvuI8gRklYOiBSZXNldCBjaGVja291dCBkYXRhIGFmdGVyIG9yZGVyIGNvbXBsZXRpb25cclxuXHRcdFx0dGhpcy5yZXNldENoZWNrb3V0U3RhdGUoKTtcclxuXHJcblx0XHRcdHJldHVybiAoeyBvazogdHJ1ZSwgcmVxdWlyZV9sb2dpbjogZmFsc2UsIG1lc3NhZ2U6ICcnIH0pO1xyXG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcclxuXHRcdFx0dGhpcy5fbG9hZGluZ1N1YmplY3QubmV4dChmYWxzZSk7XHJcblx0XHRcdGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGluIGNvbXBsZXRlOicsIGVycm9yKTtcclxuXHJcblx0XHRcdHJldHVybiB7IG9rOiBmYWxzZSwgcmVxdWlyZV9sb2dpbjogZmFsc2UsIG1lc3NhZ2U6ICdBbiBlcnJvciBvY2N1cnJlZCcgfTtcclxuXHRcdH1cclxuXHJcblx0fVxyXG5cclxuXHQvLyB1cGRhdGVBc29jaWF0ZWREYXRhID0gKGNhcnQ6IGFueSkgPT4ge1xyXG5cdC8vIFx0bGV0IHJlc3VsdCA9IHRoaXMuX29yZGVyVXRpbGl0eVNlcnZpY2UuZ2V0UHJvbW90aW9ucyhjYXJ0KTtcclxuXHQvLyBcdGNvbnN0IHVzZXJQcm9maWxlOiBVc2VyID0gVXNlci5mcm9tSnNvbih0aGlzLl9hdXRoU2VydmljZS5nZXRVc2VyUHJvZmlsZUFzVXNlcigpKTtcclxuXHQvLyBcdGlmIChyZXN1bHQpIHtcclxuXHQvLyBcdFx0aWYgKHVzZXJQcm9maWxlLmlzV2hvbGVzYWxlcigpICYmIGNhcnQudG90YWxzLnRheGVzICE9IDApIHtcclxuXHQvLyBcdFx0XHRsZXQgdG90YWwgPSB7IC4uLnJlc3VsdFtyZXN1bHQubGVuZ3RoIC0gMV0gfTtcclxuXHQvLyBcdFx0XHRyZXN1bHRbcmVzdWx0Lmxlbmd0aCAtIDFdID0ge1xyXG5cdC8vIFx0XHRcdFx0dHlwZTogJ3RheGVzJyxcclxuXHQvLyBcdFx0XHRcdG5hbWU6ICd0YXhlcycsXHJcblx0Ly8gXHRcdFx0XHRhbW91bnQ6IGNhcnQudG90YWxzLnRheGVzXHJcblx0Ly8gXHRcdFx0fVxyXG5cdC8vIFx0XHRcdHJlc3VsdC5wdXNoKHRvdGFsKTtcclxuXHQvLyBcdFx0fVxyXG5cdC8vIFx0XHRsZXQgc2hpcG1lbnQgPSByZXN1bHQ/LmZpbmQoKHByb21vdGlvbjogYW55KSA9PiBwcm9tb3Rpb24udHlwZSA9PSBcInNoaXBtZW50XCIpO1xyXG5cdC8vIFx0XHRpZiAoIXNoaXBtZW50ICYmIGNhcnQudG90YWxzLnNoaXBwaW5nICE9IDApIHtcclxuXHJcblx0Ly8gXHRcdFx0aWYgKHJlc3VsdD8ubGVuZ3RoICYmICFyZXN1bHQuZmluZCgoaXRlbTogYW55KSA9PiBpdGVtLnR5cGUgPT09IFwic2hpcG1lbnRcIikpIHtcclxuXHQvLyBcdFx0XHRcdGxldCB0b3RhbCA9IHsgLi4ucmVzdWx0W3Jlc3VsdC5sZW5ndGggLSAxXSB9O1xyXG5cdC8vIFx0XHRcdFx0cmVzdWx0W3Jlc3VsdC5sZW5ndGggLSAxXSA9IHtcclxuXHQvLyBcdFx0XHRcdFx0dHlwZTogJ3NoaXBtZW50JyxcclxuXHQvLyBcdFx0XHRcdFx0bmFtZTogJ3NoaXBtZW50JyxcclxuXHQvLyBcdFx0XHRcdFx0YW1vdW50OiBjYXJ0LnRvdGFscy5zaGlwcGluZ1xyXG5cdC8vIFx0XHRcdFx0fVxyXG5cdC8vIFx0XHRcdFx0cmVzdWx0LnB1c2godG90YWwpO1xyXG5cdC8vIFx0XHRcdH1cclxuXHQvLyBcdFx0fVxyXG5cdC8vIFx0XHR0aGlzLl9hc3NvY2lhdGVkRGF0YVN1YmplY3QubmV4dChyZXN1bHQpO1xyXG5cdC8vIFx0fVxyXG5cdC8vIH1cclxuXHR1cGRhdGVBc29jaWF0ZWREYXRhID0gKGNhcnQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGxldCByZXN1bHQgPSB0aGlzLl9vcmRlclV0aWxpdHlTZXJ2aWNlLmdldFByb21vdGlvbnMoY2FydCk7XHJcblx0XHRpZiAoY2FydC50b3RhbHMudGF4ZXMgIT0gMCAmJiByZXN1bHQgJiYgcmVzdWx0Lmxlbmd0aCA+IDApIHtcclxuXHRcdFx0bGV0IHRvdGFsID0geyAuLi5yZXN1bHRbcmVzdWx0Lmxlbmd0aCAtIDFdIH07XHJcblx0XHRcdHJlc3VsdFtyZXN1bHQubGVuZ3RoIC0gMV0gPSB7XHJcblx0XHRcdFx0dHlwZTogJ3RheGVzJyxcclxuXHRcdFx0XHRuYW1lOiAndGF4ZXMnLFxyXG5cdFx0XHRcdGFtb3VudDogY2FydC50b3RhbHMudGF4ZXNcclxuXHRcdFx0fVxyXG5cdFx0XHRyZXN1bHQucHVzaCh0b3RhbCk7XHJcblx0XHR9XHJcbiAgICAgICAgbGV0IHNoaXBtZW50ID0gcmVzdWx0Py5maW5kKHByb21vdGlvbiA9PiBwcm9tb3Rpb24udHlwZSA9PSBcInNoaXBtZW50XCIpO1xyXG4gICAgICAgIGlmICghc2hpcG1lbnQgJiYgY2FydC50b3RhbHMuc2hpcHBpbmcgIT0gMCkge1xyXG5cclxuICAgICAgICAgICAgaWYgKHJlc3VsdD8ubGVuZ3RoICYmICFyZXN1bHQuZmluZChpdGVtID0+IGl0ZW0udHlwZSA9PT0gXCJzaGlwbWVudFwiKSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IHRvdGFsID0geyAuLi5yZXN1bHRbcmVzdWx0Lmxlbmd0aCAtIDFdIH07XHJcbiAgICAgICAgICAgICAgICByZXN1bHRbcmVzdWx0Lmxlbmd0aCAtIDFdID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzaGlwbWVudCcsXHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3NoaXBtZW50JyxcclxuICAgICAgICAgICAgICAgICAgICBhbW91bnQ6IGNhcnQudG90YWxzLnNoaXBwaW5nXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh0b3RhbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblx0XHR0aGlzLl9hc3NvY2lhdGVkRGF0YVN1YmplY3QubmV4dChyZXN1bHQgPz8gbnVsbCk7XHJcbiAgICB9XHJcblxyXG5cdGdldFN0ZXBEYXRhID0gKHN0ZXBfbmFtZTogU3RlcFR5cGUpID0+IHtcclxuXHRcdGxldCBzdGVwX3Jlc3VsdCA9IHRoaXMuX3N0YXRlU3ViamVjdC5nZXRWYWx1ZSgpLmZpbmQoc3RlcCA9PiBzdGVwLm5hbWUgPT0gc3RlcF9uYW1lKTtcclxuXHRcdHJldHVybiAoc3RlcF9yZXN1bHQgJiYgc3RlcF9yZXN1bHQuZGF0YSk7XHJcblx0fVxyXG5cclxuXHRzZXRTdGVwRGF0YSA9IChzdGVwX25hbWU6IFN0ZXBUeXBlLCBkYXRhOiBhbnkpID0+IHtcclxuXHRcdGxldCBzdGVwID0gdGhpcy5fc3RhdGVTdWJqZWN0LmdldFZhbHVlKCkuZmluZChzdGVwID0+IHN0ZXAubmFtZSA9PSBzdGVwX25hbWUpO1xyXG5cdFx0c3RlcD8ucmVhZHkoZGF0YSk7XHJcblx0XHQvKiBpZiAoZGF0YSkge1xyXG5cdFx0XHR0aGlzLl9vcmRlclN1YmplY3QubmV4dChkYXRhKTtcclxuXHRcdFx0dGhpcy50b3RhbCA9IGRhdGEudG90YWxzLnRvdGFsO1xyXG5cdFx0fSAqL1xyXG5cdH1cclxuXHJcblx0Ly8g4pqg77iPIEZJWDogUmVzZXQgY2hlY2tvdXQgc3RhdGUgYWZ0ZXIgb3JkZXIgY29tcGxldGlvblxyXG5cdHByaXZhdGUgcmVzZXRDaGVja291dFN0YXRlID0gKCkgPT4ge1xyXG5cdFx0dGhpcy5jaGVja291dERhdGEgPSB7fTtcclxuXHRcdHRoaXMub3JkZXIgPSBudWxsO1xyXG5cdFx0dGhpcy5fc3RhdGVTdWJqZWN0Lm5leHQoW10pO1xyXG5cdFx0dGhpcy5fYXNzb2NpYXRlZERhdGFTdWJqZWN0Lm5leHQobnVsbCk7XHJcblx0XHR0aGlzLl9sYXN0U3RlcFN1YmplY3QubmV4dChmYWxzZSk7XHJcblx0fVxyXG59XHJcbiJdfQ==
|
|
@@ -174,4 +174,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
174
174
|
providedIn: 'root'
|
|
175
175
|
}]
|
|
176
176
|
}], ctorParameters: () => [] });
|
|
177
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVuY3kuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1zZXJ2aWNlcy9jdXJyZW5jeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFFbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBQzFDOzs7R0FHRztBQUlILE1BQU0sT0FBTyxlQUFlO0lBQ3hCOztPQUVHO0lBQ0ssT0FBTyxHQUF5QixNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtJQUNwRTs7T0FFRztJQUNLLFVBQVUsR0FBd0IsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUE7SUFDckU7O09BRUc7SUFDSyxXQUFXLEdBQXNCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO0lBQ2xFOztPQUVHO0lBQ0ssUUFBUSxHQUFtQixNQUFNLENBQUMsY0FBYyxDQUFDLENBQUE7SUFDekQ7O09BRUc7SUFDSyxTQUFTLEdBQW9CLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDaEU7O09BRUc7SUFDSyxnQkFBZ0IsR0FBb0MsSUFBSSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDbkY7O09BRUc7SUFDSyxvQkFBb0IsR0FBeUIsSUFBSSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUE7SUFD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YSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2xELElBQUksYUFBYSxJQUFJLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsYUFBYSxDQUFDLENBQUE7UUFDOUMsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDckQsQ0FBQztJQUNMLENBQUM7d0dBbktRLGVBQWU7NEdBQWYsZUFBZSxjQUZaLE1BQU07OzRGQUVULGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBcGlDb25zdGFudHNTZXJ2aWNlLCBDb3JlQ29uc3RhbnRzU2VydmljZSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4uL2FwaSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZpcnN0VmFsdWVGcm9tLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDdXJyZW5jeUNvbmZpZyB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQ2hhbm5lbFNlcnZpY2UgfSBmcm9tICcuL2NoYW5uZWwuc2VydmljZSc7XG5pbXBvcnQgeyBDdXJyZW5jeVN0b3JlIH0gZnJvbSAnLi4vc3RvcmVzJztcbi8qKlxuICogU2VydmljaW8gZW5jYXJnYWRvIGRlIG1hbmVqYXIgdG9kbyBsbyBxdWUgZXN0ZSByZWxhY2lvbmFkbyBhIGxhIG1vbmVkYVxuICogcXVlIG1hbmVqYSBsYSBhcGxpY2FjacOzbi5cbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDdXJyZW5jeVNlcnZpY2Uge1xuICAgIC8qKlxuICAgICAqIENvbnN0YW50ZXMgZGUgY29yZVxuICAgICAqL1xuICAgIHByaXZhdGUgX2NvbnN0czogQ29yZUNvbnN0YW50c1NlcnZpY2UgPSBpbmplY3QoQ29yZUNvbnN0YW50c1NlcnZpY2UpXG4gICAgLyoqXG4gICAgICogQ29uc3RhbnRlcyBkZSBsYSBBUElcbiAgICAgKi9cbiAgICBwcml2YXRlIF9hcGlDb25zdHM6IEFwaUNvbnN0YW50c1NlcnZpY2UgPSBpbmplY3QoQXBpQ29uc3RhbnRzU2VydmljZSlcbiAgICAvKipcbiAgICAgKiBNYW5lamEgbGFzIHBldGljaW9uZXMgYSBsYSBBUElcbiAgICAgKi9cbiAgICBwcml2YXRlIF9jb25uZWN0aW9uOiBDb25uZWN0aW9uU2VydmljZSA9IGluamVjdChDb25uZWN0aW9uU2VydmljZSlcbiAgICAvKipcbiAgICAgKiBTZXJ2aWNpbyBkZSBjYW5hbGVzXG4gICAgICovXG4gICAgcHJpdmF0ZSBfY2hhbm5lbDogQ2hhbm5lbFNlcnZpY2UgPSBpbmplY3QoQ2hhbm5lbFNlcnZpY2UpXG4gICAgLyoqXG4gICAgICogQ29udGllbmUgZWwgY2FuYWwgYWN0aXZvIGRlIGxhIEFQSS5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9jaGFubmVsJDogT2JzZXJ2YWJsZTxhbnk+ID0gdGhpcy5fY2hhbm5lbC5nZXRDaGFubmVsKCk7XG4gICAgLyoqXG4gICAgICogU3ViamVjdCBwYXJhIG1hbmVqYXIgbGEgbW9uZWRhIGFjdHVhbC5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9jdXJyZW5jeVN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxDdXJyZW5jeUNvbmZpZz4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHt9KVxuICAgIC8qKlxuICAgICAqIFN1YmplY3QgcGFyYSBtYW5lamFyIGxhIGxpc3RhIGRlIG1vbmVkYXMgZGUgbGEgYXBsaWNhY2nDs24uXG4gICAgICovXG4gICAgcHJpdmF0ZSBfY3VycmVuY3lMaXN0U3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdKVxuICAgIC8qKlxuICAgICAqIFN1YmplY3QgcGFyYSBpbmRpY2FyIGxhIGFjdHVhbGl6YWNpw7NuIGRlIHVuIGVzdGFkby5cbiAgICAgKi9cbiAgICBwcml2YXRlIF91cGRhdGVTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKVxuXG4gICAgcHVibGljIGN1cnJlbmN5JDogT2JzZXJ2YWJsZTxDdXJyZW5jeUNvbmZpZz4gPSB0aGlzLl9jdXJyZW5jeVN1YmplY3QuYXNPYnNlcnZhYmxlKClcbiAgICBwdWJsaWMgY3VycmVuY3lMaXN0JDogT2JzZXJ2YWJsZTxhbnlbXT4gPSB0aGlzLl9jdXJyZW5jeUxpc3RTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpXG4gICAgcHVibGljIHVwZGF0ZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLl91cGRhdGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgLy9BUEkgVVJMXG4gICAgLyoqXG4gICAgICogRGV2dWVsdmUgbGEgVVJMIHBhcmEgb2J0ZW5lciBsaXN0YSBkZSBtb25lZGFzIGRlIGxhIGFwbGljYWNpw7NuLlxuICAgICAqIEByZXR1cm5zIFxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0Q3VycmVuY3lMaXN0QXBpKCkgeyByZXR1cm4gYCR7dGhpcy5fYXBpQ29uc3RzLlNIT1BfQVBJX1VSTH0vY3VycmVuY2llc2AgfTtcbiAgICAvKipcbiAgICAgKiBEZXZ1ZWx2ZSBsYSBVUkwgcGFyYSBvYnRlbmVyIGxhIGNvbnZlcnRpYmlsaWRhZCBkZSB1bmEgbW9uZWRhLiBcbiAgICAgKiBAcGFyYW0gYmFzZUN1cnJlbmN5IE1vbmVkYSBiYXNlXG4gICAgICogQHBhcmFtIHRhcmdldEN1cnJlbmN5IE1vbmVkYSBkZXN0aW5vXG4gICAgICogQHJldHVybnMgXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRDb252ZXJ0aWJpbGl0eUFwaShiYXNlQ3VycmVuY3k6IGFueSwgdGFyZ2V0Q3VycmVuY3k6IGFueSkgeyByZXR1cm4gYCR7dGhpcy5fYXBpQ29uc3RzLlNIT1BfQVBJX1VSTH0vY3VycmVuY2llcz9iYXNlQ3VycmVuY3k9JHtiYXNlQ3VycmVuY3l9JnRhcmdldEN1cnJlbmN5PSR7dGFyZ2V0Q3VycmVuY3l9YCB9XG4gICAgLyoqXG4gICAgICogU3RvcmUgcXVlIGd1YXJkYXJhIGxhIG1vbmVkYSBhY3R1YWwgcXVlIG1hbmVqYSBsYSBhcGxpY2FjacOzbi5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgY3VycmVuY3lTdG9yZSA9IGluamVjdChDdXJyZW5jeVN0b3JlKTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLl9jaGFubmVsJC5zdWJzY3JpYmUoY2hhbm5lbCA9PiB7XG4gICAgICAgICAgICBjaGFubmVsLmFwcGx5Q3VycmVuY3lFeGNoYW5nZSA/IHRoaXMubG9hZEN1cnJlbmN5TGlzdCgpIDogdGhpcy5sb2FkRGVmYXVsdEN1cnJlbmN5KGNoYW5uZWwuYmFzZUN1cnJlbmN5KTtcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgICAqICBTZSBjYXJnYSBsYSBtb25lZGEgcG9yIGRlZmVjdG8uXG4gICAgICAgKi9cbiAgICBwcml2YXRlIGxvYWREZWZhdWx0Q3VycmVuY3koY3VycmVuY3k6IGFueSkge1xuICAgICAgICB0aGlzLl9jb25zdHMuc2V0Q3VycmVuY3koY3VycmVuY3kpO1xuICAgICAgICB0aGlzLmxvYWQoKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBDYXJnYSBsYSBsaXN0YSBkZSBtb25lZGFzL2N1cnJlbmNpZXMuXG4gICAgICovXG4gICAgcHJpdmF0ZSBhc3luYyBsb2FkQ3VycmVuY3lMaXN0KCkge1xuICAgICAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLl9jb25uZWN0aW9uLmdldCh0aGlzLmdldEN1cnJlbmN5TGlzdEFwaSgpKSlcbiAgICAgICAgICAgIC50aGVuKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY3VycmVuY3lMaXN0U3ViamVjdC5uZXh0KHJlcylcbiAgICAgICAgICAgICAgICB0aGlzLl9jb25zdHMuc2V0Q3VycmVuY3lUeXBlQ29uZmlnKHJlcylcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWQoKVxuICAgICAgICAgICAgfSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgY2FsY3VsYSBsYSBjb252ZXRpYmlsaWRhZCBkZWwgcHJlY2lvICBwYXNhZG8gcG9yIHBhcmFtZW50cm8gc2VndW4gZXN0YSBmb3JtdWxhOlxuICAgICAqICoqYyA9IGEgKiBiKiogZG9uZGUgKmM9bW9uZWRhIGRlc3B1ZXMgZGVsIGNhbWJpbyosICphPXZhbG9yIHF1ZSBxdWllcm8gY2FtYmlhciogeSAqYj1yYXRpbyBkZSBjYW1iaW8qLiBcbiAgICAgKiBAcGFyYW0gcHJpY2UgUHJlY2lvIGEgY2FtYmlhclxuICAgICAqIEBwYXJhbSByYXRpbyBSYXRpbyBkZSBjYW1iaW9cbiAgICAgKiBAcmV0dXJucyBTaSBlbCByYXRpbyBubyBlcyBudWxsLCByZXRvcm5hIGVsIHByZWNpbyBjYW1iaWFkbywgc2lubyByZXRvcm5hIGVsIHByZWNpbyBzaW4gY2FtYmlvcy4gXG4gICAgICovXG4gICAgcHVibGljIGNhbGN1bGF0ZUNvbnZldGliaWxpdHkocHJpY2U6IG51bWJlciwgcmF0aW86IG51bWJlcikge1xuICAgICAgICByZXR1cm4gcmF0aW8gPyBwcmljZSAqIHJhdGlvIDogcHJpY2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIGdlbmVyYSBsYSBjYXJnYSB5IGNvbmZpZ3VyYWNpw7NuIGRlIGxhIG1vbmVkYSBlbGVnaWRhIHBhcmEgbGEgY29udmVyc2lvbi5cbiAgICAgKiBAcGFyYW0gY3VycmVuY3kgTW9uZWRhIGEgY29udmVydGlyLlxuICAgICAqL1xuICAgIHByaXZhdGUgbG9hZEN1cnJlbmN5KGN1cnJlbmN5OiBhbnkpIHtcbiAgICAgICAgdGhpcy5fY3VycmVuY3lTdWJqZWN0Lm5leHQoY3VycmVuY3kpO1xuICAgICAgICB0aGlzLl9jb25zdHMuc2V0Q3VycmVuY3koY3VycmVuY3kuY29kZSk7XG4gICAgICAgIGxldCB1cGRhdGUgPSB0aGlzLl91cGRhdGVTdWJqZWN0LmdldFZhbHVlKClcbiAgICAgICAgdGhpcy5fdXBkYXRlU3ViamVjdC5uZXh0KCF1cGRhdGUpXG4gICAgICAgIHRoaXMuY3VycmVuY3lTdG9yZS5hZGQodGhpcy5fY29uc3RzLmN1cnJlbmN5KVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdlbmVyYSBsYSBjb252ZXJ0aWJpbGlkYWQgZGUgbGEgbW9uZWRhIGJhc2UgYSBsYSBudWV2YS4gU2kgYmFzZUN1cnJlbmN5IG5vIHRpZW5lIHZhbG9yIFxuICAgICAqIGVudG9uY2VzIHV0aWxpemEgbGEgbW9uZWRhIGJhc2UgZGVsIGNhbmFsLlxuICAgICAqIEBwYXJhbSBjdXJyZW5jeSBPYmpldG8gZGUgbGEgbW9uZWRhIGRlc3Rpbm8uXG4gICAgICogQHBhcmFtIGJhc2VDdXJyZW5jeSBDb2RpZ28gZGUgbGEgbW9uZWRhIGJhc2UuICpFajogVVNEIHwgQVJTIHwgRVVSIHwuLi4qXG4gICAgICovXG4gICAgYXN5bmMgZ2VuZXJhdGVDb252ZXJ0aWJpbGl0eShjdXJyZW5jeTogYW55LCBiYXNlQ3VycmVuY3k/OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKCFiYXNlQ3VycmVuY3kpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgYmFzZUN1cnJlbmN5ID0gYXdhaXQgdGhpcy5fY2hhbm5lbC5nZXRBY3RpdmVDaGFubmVsKCkuYmFzZUN1cnJlbmN5O1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUuZXJyb3IoZXJyb3IpXG4gICAgICAgICAgICAgICAgYmFzZUN1cnJlbmN5ID0gJ1VTRCdcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIkJDXCIsIGJhc2VDdXJyZW5jeSk7XG4gICAgICAgIGlmIChjdXJyZW5jeS5jb2RlID09IGJhc2VDdXJyZW5jeSkge1xuICAgICAgICAgICAgdGhpcy5sb2FkQ3VycmVuY3koY3VycmVuY3kpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5nZXRDb252ZXJ0aWJpbGl0eShiYXNlQ3VycmVuY3ksIGN1cnJlbmN5LmNvZGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT2J0aWVuZSBsYSBjb252ZXJzaW9uIGRlc2RlIGxhIG1vbmVkYSBiYXNlIGEgbGEgZGVzdGluby4gUmVjaWJlIHVuIG9iamV0byBkZSB0aXBvIEN1cnJlbmN5Q29uZmlnLlxuICAgICAqIFNpIGxhIGNvbnZlcnNpb24gcmV0b3JuYSByZXN1bHRhZG8gcmVhbGl6YSBlbCBjYW1iaW8sIGRlIGxvIGNvbnRyYXJpbyBlbWl0ZSB1biBtZW5zYWplIGRlIGVycm9yLlxuICAgICAqIEBwYXJhbSBiYXNlQ3VycmVuY3kgQ29kaWdvIGRlIGxhIG1vbmVkYSBiYXNlLlxuICAgICAqIEBwYXJhbSB0YXJnZXRDdXJyZW5jeSBDb2RpZ28gZGUgbGEgbW9uZWRhIGRlc3Rpbm8uXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRDb252ZXJ0aWJpbGl0eShiYXNlQ3VycmVuY3k6IGFueSwgdGFyZ2V0Q3VycmVuY3k6IGFueSkge1xuICAgICAgICB0aGlzLl9jb25uZWN0aW9uLmdldCh0aGlzLmdldENvbnZlcnRpYmlsaXR5QXBpKGJhc2VDdXJyZW5jeSwgdGFyZ2V0Q3VycmVuY3kpKVxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpLnRoZW4oXG4gICAgICAgICAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRlbXBDdXJyZW5jeSA9IHJlc1swXVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkQ3VycmVuY3kodGVtcEN1cnJlbmN5KVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgbGEgdmFyaWFibGUgcmVzIG5vIGNvbnRpZW5lIHZhbG9yLCBhc2VndXJlc2UgZGUgcXVlIGVzdGEgY29udmVyc2nDs24gZXN0ZSBjb25maWd1cmFkYSBlbiBlbCBiYWNrb2ZmaWNlJylcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vdGhpcy50b2FzdHIuc2hvdygnZXJyb3ItY29udmVydGliaWxpdHknKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlcnIgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKS5jYXRjaChlcnIgPT4gY29uc29sZS5sb2coZXJyKSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYXJnYSBsYSBtb25lZGEsIHNpIGhheSB1bmEgZW4gZWwgbG9jYWxzdG9yYWdlIHRvbWEgZXNhIHkgcmVhbGl6YSBsYSBjb252ZXJzaW9uLlxuICAgICAqIGRlIGxvIGNvbnRyYXJpbyBzb2xvIHNldGVhIGVuIGVsIG9ic2VydmFibGUgY3VycmVuY3lTdWJqZWN0IGVsIHZhbG9yIHBvciBkZWZlY3RvIGNhcmdhZG8gZW4gbGFzIGNvbnN0YW50ZXMuIFxuICAgICAqL1xuICAgIHByaXZhdGUgbG9hZCgpIHtcbiAgICAgICAgbGV0IHN0b3JlQ3VycmVuY3kgPSB0aGlzLmN1cnJlbmN5U3RvcmUuY3VycmVuY3koKTtcbiAgICAgICAgaWYgKHN0b3JlQ3VycmVuY3kgJiYgc3RvcmVDdXJyZW5jeS5jb2RlKSB7XG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlQ29udmVydGliaWxpdHkoc3RvcmVDdXJyZW5jeSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2N1cnJlbmN5U3ViamVjdC5uZXh0KHRoaXMuX2NvbnN0cy5jdXJyZW5jeSlcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
177
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVuY3kuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1zZXJ2aWNlcy9jdXJyZW5jeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFFbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBQzFDOzs7R0FHRztBQUlILE1BQU0sT0FBTyxlQUFlO0lBQ3hCOztPQUVHO0lBQ0ssT0FBTyxHQUF5QixNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtJQUNwRTs7T0FFRztJQUNLLFVBQVUsR0FBd0IsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUE7SUFDckU7O09BRUc7SUFDSyxXQUFXLEdBQXNCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO0lBQ2xFOztPQUVHO0lBQ0ssUUFBUSxHQUFtQixNQUFNLENBQUMsY0FBYyxDQUFDLENBQUE7SUFDekQ7O09BRUc7SUFDSyxTQUFTLEdBQW9CLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDaEU7O09BRUc7SUFDSyxnQkFBZ0IsR0FBb0MsSUFBSSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDbkY7O09BRUc7SUFDSyxvQkFBb0IsR0FBeUIsSUFBSSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUE7SUFD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YSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2xELElBQUksYUFBYSxJQUFJLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsYUFBYSxDQUFDLENBQUE7UUFDOUMsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDckQsQ0FBQztJQUNMLENBQUM7d0dBbktRLGVBQWU7NEdBQWYsZUFBZSxjQUZaLE1BQU07OzRGQUVULGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFwaUNvbnN0YW50c1NlcnZpY2UsIENvcmVDb25zdGFudHNTZXJ2aWNlIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcclxuaW1wb3J0IHsgQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi9hcGknO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZpcnN0VmFsdWVGcm9tLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEN1cnJlbmN5Q29uZmlnIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IENoYW5uZWxTZXJ2aWNlIH0gZnJvbSAnLi9jaGFubmVsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDdXJyZW5jeVN0b3JlIH0gZnJvbSAnLi4vc3RvcmVzJztcclxuLyoqXHJcbiAqIFNlcnZpY2lvIGVuY2FyZ2FkbyBkZSBtYW5lamFyIHRvZG8gbG8gcXVlIGVzdGUgcmVsYWNpb25hZG8gYSBsYSBtb25lZGFcclxuICogcXVlIG1hbmVqYSBsYSBhcGxpY2FjacOzbi5cclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuICAgIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3VycmVuY3lTZXJ2aWNlIHtcclxuICAgIC8qKlxyXG4gICAgICogQ29uc3RhbnRlcyBkZSBjb3JlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2NvbnN0czogQ29yZUNvbnN0YW50c1NlcnZpY2UgPSBpbmplY3QoQ29yZUNvbnN0YW50c1NlcnZpY2UpXHJcbiAgICAvKipcclxuICAgICAqIENvbnN0YW50ZXMgZGUgbGEgQVBJXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2FwaUNvbnN0czogQXBpQ29uc3RhbnRzU2VydmljZSA9IGluamVjdChBcGlDb25zdGFudHNTZXJ2aWNlKVxyXG4gICAgLyoqXHJcbiAgICAgKiBNYW5lamEgbGFzIHBldGljaW9uZXMgYSBsYSBBUElcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfY29ubmVjdGlvbjogQ29ubmVjdGlvblNlcnZpY2UgPSBpbmplY3QoQ29ubmVjdGlvblNlcnZpY2UpXHJcbiAgICAvKipcclxuICAgICAqIFNlcnZpY2lvIGRlIGNhbmFsZXNcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfY2hhbm5lbDogQ2hhbm5lbFNlcnZpY2UgPSBpbmplY3QoQ2hhbm5lbFNlcnZpY2UpXHJcbiAgICAvKipcclxuICAgICAqIENvbnRpZW5lIGVsIGNhbmFsIGFjdGl2byBkZSBsYSBBUEkuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2NoYW5uZWwkOiBPYnNlcnZhYmxlPGFueT4gPSB0aGlzLl9jaGFubmVsLmdldENoYW5uZWwoKTtcclxuICAgIC8qKlxyXG4gICAgICogU3ViamVjdCBwYXJhIG1hbmVqYXIgbGEgbW9uZWRhIGFjdHVhbC5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfY3VycmVuY3lTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8Q3VycmVuY3lDb25maWc+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh7fSlcclxuICAgIC8qKlxyXG4gICAgICogU3ViamVjdCBwYXJhIG1hbmVqYXIgbGEgbGlzdGEgZGUgbW9uZWRhcyBkZSBsYSBhcGxpY2FjacOzbi5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfY3VycmVuY3lMaXN0U3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdKVxyXG4gICAgLyoqXHJcbiAgICAgKiBTdWJqZWN0IHBhcmEgaW5kaWNhciBsYSBhY3R1YWxpemFjacOzbiBkZSB1biBlc3RhZG8uXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX3VwZGF0ZVN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpXHJcblxyXG4gICAgcHVibGljIGN1cnJlbmN5JDogT2JzZXJ2YWJsZTxDdXJyZW5jeUNvbmZpZz4gPSB0aGlzLl9jdXJyZW5jeVN1YmplY3QuYXNPYnNlcnZhYmxlKClcclxuICAgIHB1YmxpYyBjdXJyZW5jeUxpc3QkOiBPYnNlcnZhYmxlPGFueVtdPiA9IHRoaXMuX2N1cnJlbmN5TGlzdFN1YmplY3QuYXNPYnNlcnZhYmxlKClcclxuICAgIHB1YmxpYyB1cGRhdGUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5fdXBkYXRlU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgICAvL0FQSSBVUkxcclxuICAgIC8qKlxyXG4gICAgICogRGV2dWVsdmUgbGEgVVJMIHBhcmEgb2J0ZW5lciBsaXN0YSBkZSBtb25lZGFzIGRlIGxhIGFwbGljYWNpw7NuLlxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZ2V0Q3VycmVuY3lMaXN0QXBpKCkgeyByZXR1cm4gYCR7dGhpcy5fYXBpQ29uc3RzLlNIT1BfQVBJX1VSTH0vY3VycmVuY2llc2AgfTtcclxuICAgIC8qKlxyXG4gICAgICogRGV2dWVsdmUgbGEgVVJMIHBhcmEgb2J0ZW5lciBsYSBjb252ZXJ0aWJpbGlkYWQgZGUgdW5hIG1vbmVkYS4gXHJcbiAgICAgKiBAcGFyYW0gYmFzZUN1cnJlbmN5IE1vbmVkYSBiYXNlXHJcbiAgICAgKiBAcGFyYW0gdGFyZ2V0Q3VycmVuY3kgTW9uZWRhIGRlc3Rpbm9cclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGdldENvbnZlcnRpYmlsaXR5QXBpKGJhc2VDdXJyZW5jeTogYW55LCB0YXJnZXRDdXJyZW5jeTogYW55KSB7IHJldHVybiBgJHt0aGlzLl9hcGlDb25zdHMuU0hPUF9BUElfVVJMfS9jdXJyZW5jaWVzP2Jhc2VDdXJyZW5jeT0ke2Jhc2VDdXJyZW5jeX0mdGFyZ2V0Q3VycmVuY3k9JHt0YXJnZXRDdXJyZW5jeX1gIH1cclxuICAgIC8qKlxyXG4gICAgICogU3RvcmUgcXVlIGd1YXJkYXJhIGxhIG1vbmVkYSBhY3R1YWwgcXVlIG1hbmVqYSBsYSBhcGxpY2FjacOzbi5cclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGN1cnJlbmN5U3RvcmUgPSBpbmplY3QoQ3VycmVuY3lTdG9yZSk7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgdGhpcy5fY2hhbm5lbCQuc3Vic2NyaWJlKGNoYW5uZWwgPT4ge1xyXG4gICAgICAgICAgICBjaGFubmVsLmFwcGx5Q3VycmVuY3lFeGNoYW5nZSA/IHRoaXMubG9hZEN1cnJlbmN5TGlzdCgpIDogdGhpcy5sb2FkRGVmYXVsdEN1cnJlbmN5KGNoYW5uZWwuYmFzZUN1cnJlbmN5KTtcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICAgKiAgU2UgY2FyZ2EgbGEgbW9uZWRhIHBvciBkZWZlY3RvLlxyXG4gICAgICAgKi9cclxuICAgIHByaXZhdGUgbG9hZERlZmF1bHRDdXJyZW5jeShjdXJyZW5jeTogYW55KSB7XHJcbiAgICAgICAgdGhpcy5fY29uc3RzLnNldEN1cnJlbmN5KGN1cnJlbmN5KTtcclxuICAgICAgICB0aGlzLmxvYWQoKVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogIENhcmdhIGxhIGxpc3RhIGRlIG1vbmVkYXMvY3VycmVuY2llcy5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBhc3luYyBsb2FkQ3VycmVuY3lMaXN0KCkge1xyXG4gICAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuX2Nvbm5lY3Rpb24uZ2V0KHRoaXMuZ2V0Q3VycmVuY3lMaXN0QXBpKCkpKVxyXG4gICAgICAgICAgICAudGhlbihyZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fY3VycmVuY3lMaXN0U3ViamVjdC5uZXh0KHJlcylcclxuICAgICAgICAgICAgICAgIHRoaXMuX2NvbnN0cy5zZXRDdXJyZW5jeVR5cGVDb25maWcocmVzKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkKClcclxuICAgICAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqICBjYWxjdWxhIGxhIGNvbnZldGliaWxpZGFkIGRlbCBwcmVjaW8gIHBhc2FkbyBwb3IgcGFyYW1lbnRybyBzZWd1biBlc3RhIGZvcm11bGE6XHJcbiAgICAgKiAqKmMgPSBhICogYioqIGRvbmRlICpjPW1vbmVkYSBkZXNwdWVzIGRlbCBjYW1iaW8qLCAqYT12YWxvciBxdWUgcXVpZXJvIGNhbWJpYXIqIHkgKmI9cmF0aW8gZGUgY2FtYmlvKi4gXHJcbiAgICAgKiBAcGFyYW0gcHJpY2UgUHJlY2lvIGEgY2FtYmlhclxyXG4gICAgICogQHBhcmFtIHJhdGlvIFJhdGlvIGRlIGNhbWJpb1xyXG4gICAgICogQHJldHVybnMgU2kgZWwgcmF0aW8gbm8gZXMgbnVsbCwgcmV0b3JuYSBlbCBwcmVjaW8gY2FtYmlhZG8sIHNpbm8gcmV0b3JuYSBlbCBwcmVjaW8gc2luIGNhbWJpb3MuIFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY2FsY3VsYXRlQ29udmV0aWJpbGl0eShwcmljZTogbnVtYmVyLCByYXRpbzogbnVtYmVyKSB7XHJcbiAgICAgICAgcmV0dXJuIHJhdGlvID8gcHJpY2UgKiByYXRpbyA6IHByaWNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogIGdlbmVyYSBsYSBjYXJnYSB5IGNvbmZpZ3VyYWNpw7NuIGRlIGxhIG1vbmVkYSBlbGVnaWRhIHBhcmEgbGEgY29udmVyc2lvbi5cclxuICAgICAqIEBwYXJhbSBjdXJyZW5jeSBNb25lZGEgYSBjb252ZXJ0aXIuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgbG9hZEN1cnJlbmN5KGN1cnJlbmN5OiBhbnkpIHtcclxuICAgICAgICB0aGlzLl9jdXJyZW5jeVN1YmplY3QubmV4dChjdXJyZW5jeSk7XHJcbiAgICAgICAgdGhpcy5fY29uc3RzLnNldEN1cnJlbmN5KGN1cnJlbmN5LmNvZGUpO1xyXG4gICAgICAgIGxldCB1cGRhdGUgPSB0aGlzLl91cGRhdGVTdWJqZWN0LmdldFZhbHVlKClcclxuICAgICAgICB0aGlzLl91cGRhdGVTdWJqZWN0Lm5leHQoIXVwZGF0ZSlcclxuICAgICAgICB0aGlzLmN1cnJlbmN5U3RvcmUuYWRkKHRoaXMuX2NvbnN0cy5jdXJyZW5jeSlcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdlbmVyYSBsYSBjb252ZXJ0aWJpbGlkYWQgZGUgbGEgbW9uZWRhIGJhc2UgYSBsYSBudWV2YS4gU2kgYmFzZUN1cnJlbmN5IG5vIHRpZW5lIHZhbG9yIFxyXG4gICAgICogZW50b25jZXMgdXRpbGl6YSBsYSBtb25lZGEgYmFzZSBkZWwgY2FuYWwuXHJcbiAgICAgKiBAcGFyYW0gY3VycmVuY3kgT2JqZXRvIGRlIGxhIG1vbmVkYSBkZXN0aW5vLlxyXG4gICAgICogQHBhcmFtIGJhc2VDdXJyZW5jeSBDb2RpZ28gZGUgbGEgbW9uZWRhIGJhc2UuICpFajogVVNEIHwgQVJTIHwgRVVSIHwuLi4qXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIGdlbmVyYXRlQ29udmVydGliaWxpdHkoY3VycmVuY3k6IGFueSwgYmFzZUN1cnJlbmN5Pzogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKCFiYXNlQ3VycmVuY3kpIHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGJhc2VDdXJyZW5jeSA9IGF3YWl0IHRoaXMuX2NoYW5uZWwuZ2V0QWN0aXZlQ2hhbm5lbCgpLmJhc2VDdXJyZW5jeTtcclxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgIC8vY29uc29sZS5lcnJvcihlcnJvcilcclxuICAgICAgICAgICAgICAgIGJhc2VDdXJyZW5jeSA9ICdVU0QnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJCQ1wiLCBiYXNlQ3VycmVuY3kpO1xyXG4gICAgICAgIGlmIChjdXJyZW5jeS5jb2RlID09IGJhc2VDdXJyZW5jeSkge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRDdXJyZW5jeShjdXJyZW5jeSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRDb252ZXJ0aWJpbGl0eShiYXNlQ3VycmVuY3ksIGN1cnJlbmN5LmNvZGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE9idGllbmUgbGEgY29udmVyc2lvbiBkZXNkZSBsYSBtb25lZGEgYmFzZSBhIGxhIGRlc3Rpbm8uIFJlY2liZSB1biBvYmpldG8gZGUgdGlwbyBDdXJyZW5jeUNvbmZpZy5cclxuICAgICAqIFNpIGxhIGNvbnZlcnNpb24gcmV0b3JuYSByZXN1bHRhZG8gcmVhbGl6YSBlbCBjYW1iaW8sIGRlIGxvIGNvbnRyYXJpbyBlbWl0ZSB1biBtZW5zYWplIGRlIGVycm9yLlxyXG4gICAgICogQHBhcmFtIGJhc2VDdXJyZW5jeSBDb2RpZ28gZGUgbGEgbW9uZWRhIGJhc2UuXHJcbiAgICAgKiBAcGFyYW0gdGFyZ2V0Q3VycmVuY3kgQ29kaWdvIGRlIGxhIG1vbmVkYSBkZXN0aW5vLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGdldENvbnZlcnRpYmlsaXR5KGJhc2VDdXJyZW5jeTogYW55LCB0YXJnZXRDdXJyZW5jeTogYW55KSB7XHJcbiAgICAgICAgdGhpcy5fY29ubmVjdGlvbi5nZXQodGhpcy5nZXRDb252ZXJ0aWJpbGl0eUFwaShiYXNlQ3VycmVuY3ksIHRhcmdldEN1cnJlbmN5KSlcclxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpLnRoZW4oXHJcbiAgICAgICAgICAgICAgICByZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRlbXBDdXJyZW5jeSA9IHJlc1swXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRDdXJyZW5jeSh0ZW1wQ3VycmVuY3kpXHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgbGEgdmFyaWFibGUgcmVzIG5vIGNvbnRpZW5lIHZhbG9yLCBhc2VndXJlc2UgZGUgcXVlIGVzdGEgY29udmVyc2nDs24gZXN0ZSBjb25maWd1cmFkYSBlbiBlbCBiYWNrb2ZmaWNlJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy90aGlzLnRvYXN0ci5zaG93KCdlcnJvci1jb252ZXJ0aWJpbGl0eScpXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApLmNhdGNoKGVyciA9PiBjb25zb2xlLmxvZyhlcnIpKVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FyZ2EgbGEgbW9uZWRhLCBzaSBoYXkgdW5hIGVuIGVsIGxvY2Fsc3RvcmFnZSB0b21hIGVzYSB5IHJlYWxpemEgbGEgY29udmVyc2lvbi5cclxuICAgICAqIGRlIGxvIGNvbnRyYXJpbyBzb2xvIHNldGVhIGVuIGVsIG9ic2VydmFibGUgY3VycmVuY3lTdWJqZWN0IGVsIHZhbG9yIHBvciBkZWZlY3RvIGNhcmdhZG8gZW4gbGFzIGNvbnN0YW50ZXMuIFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGxvYWQoKSB7XHJcbiAgICAgICAgbGV0IHN0b3JlQ3VycmVuY3kgPSB0aGlzLmN1cnJlbmN5U3RvcmUuY3VycmVuY3koKTtcclxuICAgICAgICBpZiAoc3RvcmVDdXJyZW5jeSAmJiBzdG9yZUN1cnJlbmN5LmNvZGUpIHtcclxuICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZUNvbnZlcnRpYmlsaXR5KHN0b3JlQ3VycmVuY3kpXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5fY3VycmVuY3lTdWJqZWN0Lm5leHQodGhpcy5fY29uc3RzLmN1cnJlbmN5KVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
|