ng-easycommerce 1.1.2 → 1.1.3
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 +10 -0
- package/assets/ec-i18n/ct.json +2 -0
- package/assets/ec-i18n/en.json +2 -0
- package/assets/ec-i18n/es.json +2 -0
- package/assets/ec-i18n/fr.json +2 -0
- package/assets/ec-i18n/gl.json +2 -0
- package/assets/ec-i18n/pr.json +2 -0
- package/bundles/ng-easycommerce.umd.js +5663 -4057
- package/bundles/ng-easycommerce.umd.js.map +1 -1
- package/bundles/ng-easycommerce.umd.min.js +1 -1
- package/bundles/ng-easycommerce.umd.min.js.map +1 -1
- package/esm2015/lib/api/connection.service.js +2 -2
- package/esm2015/lib/core.consts.js +4 -5
- package/esm2015/lib/ec-component/cart-bootstrap-navigation.js +27 -0
- package/esm2015/lib/ec-component/cart-ec/cart-ec.component.js +11 -1
- package/esm2015/lib/ec-component/checkout-ec/checkout-ec.component.js +23 -2
- package/esm2015/lib/ec-component/checkout-ec/dataform-ec/dataform-ec.component.js +185 -13
- package/esm2015/lib/ec-component/checkout-ec/payment-ec/payment-ec.component.js +3 -1
- package/esm2015/lib/ec-component/checkout-ec/shipment-ec/shipment-ec.component.js +4 -2
- package/esm2015/lib/ec-component/coupon-ec/coupon-ec.component.js +6 -1
- package/esm2015/lib/guards/able-buyer-guard.service.js +2 -2
- package/esm2015/lib/guards/auth-guard.service.js +2 -2
- package/esm2015/lib/guards/checkout-ready.service.js +3 -3
- package/esm2015/lib/guards/loggedin-guard.service.js +2 -2
- package/esm2015/lib/guards/user-role-guard.service.js +2 -2
- package/esm2015/lib/services/account/orders.service.js +6 -4
- package/esm2015/lib/services/auth.service.js +4 -3
- package/esm2015/lib/services/captcha.service.js +6 -4
- package/esm2015/lib/services/cart.service.js +1186 -74
- package/esm2015/lib/services/channel-config.service.js +4 -6
- package/esm2015/lib/services/checkout/addressing.service.js +65 -9
- package/esm2015/lib/services/checkout/checkout.service.js +56 -9
- package/esm2015/lib/services/checkout/error-handler.service.js +4 -3
- package/esm2015/lib/services/checkout/payment.service.js +35 -15
- package/esm2015/lib/services/checkout/shipment.service.js +54 -3
- package/esm2015/lib/services/concatenated-associations.service.js +4 -3
- package/esm2015/lib/services/currency.service.js +5 -3
- package/esm2015/lib/services/filters.service.js +2 -2
- package/esm2015/lib/services/footer/footer.service.js +4 -3
- package/esm2015/lib/services/gift-card.service.js +56 -5
- package/esm2015/lib/services/parameters.service.js +5 -3
- package/esm2015/lib/services/reviews.service.js +5 -4
- package/esm2015/lib/services/seo.service.js +4 -5
- package/esm2015/lib/services/stores.service.js +4 -3
- package/esm2015/lib/services/wishlist.service.js +3 -4
- package/esm2015/lib/utils/analytics/google-analytics.service.js +1 -1
- package/esm2015/lib/utils/price-presentation.service.js +2 -3
- package/esm2015/lib/utils/shipping-price-display.service.js +2 -3
- package/esm5/lib/api/connection.service.js +2 -2
- package/esm5/lib/core.consts.js +4 -5
- package/esm5/lib/ec-component/cart-bootstrap-navigation.js +27 -0
- package/esm5/lib/ec-component/cart-ec/cart-ec.component.js +11 -1
- package/esm5/lib/ec-component/checkout-ec/checkout-ec.component.js +23 -2
- package/esm5/lib/ec-component/checkout-ec/dataform-ec/dataform-ec.component.js +206 -12
- package/esm5/lib/ec-component/checkout-ec/payment-ec/payment-ec.component.js +3 -1
- package/esm5/lib/ec-component/checkout-ec/shipment-ec/shipment-ec.component.js +5 -3
- package/esm5/lib/ec-component/coupon-ec/coupon-ec.component.js +6 -1
- package/esm5/lib/guards/able-buyer-guard.service.js +2 -2
- package/esm5/lib/guards/auth-guard.service.js +2 -2
- package/esm5/lib/guards/checkout-ready.service.js +3 -3
- package/esm5/lib/guards/loggedin-guard.service.js +2 -2
- package/esm5/lib/guards/user-role-guard.service.js +2 -2
- package/esm5/lib/services/account/orders.service.js +6 -4
- package/esm5/lib/services/auth.service.js +4 -3
- package/esm5/lib/services/captcha.service.js +6 -4
- package/esm5/lib/services/cart.service.js +1231 -94
- package/esm5/lib/services/channel-config.service.js +4 -6
- package/esm5/lib/services/checkout/addressing.service.js +65 -9
- package/esm5/lib/services/checkout/checkout.service.js +63 -12
- package/esm5/lib/services/checkout/error-handler.service.js +4 -3
- package/esm5/lib/services/checkout/payment.service.js +29 -11
- package/esm5/lib/services/checkout/shipment.service.js +58 -7
- package/esm5/lib/services/concatenated-associations.service.js +4 -3
- package/esm5/lib/services/currency.service.js +5 -3
- package/esm5/lib/services/filters.service.js +2 -2
- package/esm5/lib/services/footer/footer.service.js +4 -3
- package/esm5/lib/services/gift-card.service.js +59 -5
- package/esm5/lib/services/parameters.service.js +5 -3
- package/esm5/lib/services/reviews.service.js +5 -4
- package/esm5/lib/services/seo.service.js +4 -5
- package/esm5/lib/services/stores.service.js +4 -3
- package/esm5/lib/services/wishlist.service.js +3 -4
- package/esm5/lib/utils/analytics/google-analytics.service.js +1 -1
- package/esm5/lib/utils/price-presentation.service.js +2 -3
- package/esm5/lib/utils/shipping-price-display.service.js +2 -3
- package/fesm2015/ng-easycommerce.js +3966 -2412
- package/fesm2015/ng-easycommerce.js.map +1 -1
- package/fesm5/ng-easycommerce.js +5667 -4061
- package/fesm5/ng-easycommerce.js.map +1 -1
- package/lib/ec-component/cart-bootstrap-navigation.d.ts +7 -0
- package/lib/ec-component/cart-ec/cart-ec.component.d.ts +5 -2
- package/lib/ec-component/checkout-ec/checkout-ec.component.d.ts +5 -0
- package/lib/ec-component/checkout-ec/dataform-ec/dataform-ec.component.d.ts +27 -3
- package/lib/services/cart.service.d.ts +120 -7
- package/lib/services/checkout/addressing.service.d.ts +1 -1
- package/lib/services/checkout/checkout.service.d.ts +3 -0
- package/lib/services/checkout/shipment.service.d.ts +2 -2
- package/lib/services/gift-card.service.d.ts +1 -0
- package/ng-easycommerce.metadata.json +1 -1
- package/package.json +1 -1
|
@@ -36,7 +36,7 @@ let ConnectionService = class ConnectionService {
|
|
|
36
36
|
return this.http.get(api).pipe(take(1));
|
|
37
37
|
}
|
|
38
38
|
getErrorNotHandler(api) {
|
|
39
|
-
return this.http.get(this.
|
|
39
|
+
return this.http.get(this.formUrl(api)).pipe(take(1));
|
|
40
40
|
}
|
|
41
41
|
getOutsiderWithParams(api, data) {
|
|
42
42
|
return this.http.get(api, { params: Object.assign({}, data) });
|
|
@@ -74,4 +74,4 @@ ConnectionService = __decorate([
|
|
|
74
74
|
Injectable()
|
|
75
75
|
], ConnectionService);
|
|
76
76
|
export { ConnectionService };
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZWFzeWNvbW1lcmNlLyIsInNvdXJjZXMiOlsibGliL2FwaS9jb25uZWN0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV2RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyx5QkFBeUIsQ0FBQztBQUdqQyxJQUFhLGlCQUFpQixHQUE5QixNQUFhLGlCQUFpQjtJQUl6QixZQUFvQixJQUFnQixFQUFVLFNBQTJCLEVBQzVELE1BQWlCO1FBRFYsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFVLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzVELFdBQU0sR0FBTixNQUFNLENBQVc7UUEwRDlCLFlBQU8sR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2IsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsSUFBSSxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQzdJLENBQUMsQ0FBQTtRQTNESSxJQUFJLENBQUMs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TUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQU0sSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsVUFBVTtJQUNWLEdBQUcsQ0FBQyxHQUFXLEVBQUUsSUFBSTtRQUNoQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFNLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsYUFBYTtJQUNiLE1BQU0sQ0FBQyxHQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBTSxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDO0NBS0wsQ0FBQTs7WUE5RDhCLFVBQVU7WUFBcUIsZ0JBQWdCO1lBQ3BELFNBQVM7O0FBTHRCLGlCQUFpQjtJQUQ3QixVQUFVLEVBQUU7R0FDQSxpQkFBaUIsQ0FrRTdCO1NBbEVZLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cFBhcmFtcywgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi4vY29yZS5jb25zdHMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgRmlsdGVyT3B0aW9uLCBGaWx0ZXJPcHRpb25UeXBlcywgRmlsdGVyT3B0aW9uVmFsdWUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2Nob29zZS1vcHRpb25zL2ZpbHRlci1vcHRpb24nO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCAncnhqcy9hZGQvb3BlcmF0b3IvY2F0Y2gnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29ubmVjdGlvblNlcnZpY2Uge1xuXG4gICAgIHByaXZhdGUgdXJsO1xuXG4gICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgICAgcHJpdmF0ZSBjb25zdHM6IENvbnN0YW50cykge1xuICAgICAgICAgIHRoaXMudXJsID0gdGhpcy5jb25zdHMuZ2V0VXJsQmFzZSgpO1xuICAgICB9XG5cbiAgICAgLyoqIFBPU1QgKi9cbiAgICAgcG9zdChhcGk6IHN0cmluZywgZGF0YT8pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KHRoaXMudXJsICsgYXBpLCBkYXRhIHx8IHt9KS5waXBlKHRha2UoMSkpO1xuICAgICB9XG5cbiAgICAgcG9zdE91dHNpZGVyKGFwaTogc3RyaW5nLCBkYXRhKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8YW55PihhcGksIGRhdGEpLnBpcGUodGFrZSgxKSk7XG4gICAgIH1cblxuICAgICAvKiogR0VUICovXG4gICAgIGdldChhcGk6IHN0cmluZywgZGF0YT8pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4odGhpcy5mb3JtVXJsKGFwaSksIHsgcGFyYW1zOiB7IC4uLmRhdGEgfSB9KS5jYXRjaChlcnIgPT4gb2YobnVsbCkpLnBpcGUodGFrZSgxKSk7XG4gICAgIH1cblxuICAgICBnZXRPdXRzaWRlcihhcGk6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGFwaSkucGlwZSh0YWtlKDEpKTtcbiAgICAgfVxuXG4gICAgZ2V0RXJyb3JOb3RIYW5kbGVyKGFwaTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55Pih0aGlzLmZvcm1VcmwoYXBpKSkucGlwZSh0YWtlKDEpKTtcbiAgICB9XG5cbiAgICAgZ2V0T3V0c2lkZXJXaXRoUGFyYW1zKGFwaTogc3RyaW5nLCBkYXRhOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oYXBpLCB7IHBhcmFtczogeyAuLi5kYXRhIH19KTtcbiAgICAgfVxuXG4gICAgIGdldEhUTUwoYXBpOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICAgIGxldCBodHRwSGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7IEFjY2VwdDogJ3RleHQvcGxhaW4sIHRleHQvaHRtbCcgfSk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy51cmwgKyBhcGksIHsgcmVzcG9uc2VUeXBlOiAndGV4dCcsIGhlYWRlcnM6IGh0dHBIZWFkZXJzIH0pLnBpcGUodGFrZSgxKSk7XG4gICAgIH1cblxuICAgICBnZXRXaXRoTGltaXQoYXBpOiBzdHJpbmcsIGxpbWl0OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ2xpbWl0JywgbGltaXQpO1xuICAgICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4odGhpcy51cmwgKyBhcGksIHsgcGFyYW1zIH0pLnBpcGUodGFrZSgxKSk7XG4gICAgIH1cblxuICAgICBnZXRQYWdpbmF0ZWQoYXBpOiBzdHJpbmcsIGxpbWl0OiBzdHJpbmcsIHBhZ2U6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgnbGltaXQnLCBsaW1pdCk7XG4gICAgICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgncGFnZScsIHBhZ2UpO1xuICAgICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4odGhpcy51cmwgKyBhcGksIHsgcGFyYW1zIH0pLnBpcGUodGFrZSgxKSk7XG4gICAgIH1cblxuICAgICAvKiogUFVUICovXG4gICAgIHB1dChhcGk6IHN0cmluZywgZGF0YSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8YW55Pih0aGlzLnVybCArIGFwaSwgZGF0YSkucGlwZSh0YWtlKDEpKTtcbiAgICAgfVxuXG4gICAgIC8qKiBERUxFVEUgKi9cbiAgICAgZGVsZXRlKGFwaTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZTxhbnk+KHRoaXMudXJsICsgYXBpKS5waXBlKHRha2UoMSkpO1xuICAgICB9XG5cbiAgICAgZm9ybVVybCA9IChhcGkpID0+IHtcbiAgICAgICAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLnByb3RvY29sID09ICdodHRwczonICYmICF0aGlzLnVybC5pbmNsdWRlcygnaHR0cHMnKSA/ICh0aGlzLnVybC5yZXBsYWNlKCdodHRwJywgJ2h0dHBzJykpICsgYXBpIDogdGhpcy51cmwgKyBhcGk7XG4gICAgIH1cbn1cbiJdfQ==
|
|
@@ -12,9 +12,8 @@ import { Router } from '@angular/router';
|
|
|
12
12
|
import { TranslateService } from '@ngx-translate/core';
|
|
13
13
|
import { BehaviorSubject, ReplaySubject } from 'rxjs';
|
|
14
14
|
import * as i0 from "@angular/core";
|
|
15
|
-
import * as i1 from "
|
|
16
|
-
import * as i2 from "@
|
|
17
|
-
import * as i3 from "@angular/router";
|
|
15
|
+
import * as i1 from "@ngx-translate/core";
|
|
16
|
+
import * as i2 from "@angular/router";
|
|
18
17
|
let Constants = class Constants {
|
|
19
18
|
constructor(translate, router, env) {
|
|
20
19
|
this.translate = translate;
|
|
@@ -420,7 +419,7 @@ Constants.ctorParameters = () => [
|
|
|
420
419
|
{ type: Router },
|
|
421
420
|
{ type: undefined, decorators: [{ type: Inject, args: ['env',] }] }
|
|
422
421
|
];
|
|
423
|
-
Constants.ɵprov = i0.ɵɵdefineInjectable({ factory: function Constants_Factory() { return new
|
|
422
|
+
Constants.ɵprov = i0.ɵɵdefineInjectable({ factory: function Constants_Factory() { return new Constants(i0.ɵɵinject(i1.TranslateService), i0.ɵɵinject(i2.Router), i0.ɵɵinject("env")); }, token: Constants, providedIn: "root" });
|
|
424
423
|
Constants = __decorate([
|
|
425
424
|
Injectable({
|
|
426
425
|
providedIn: 'root'
|
|
@@ -428,4 +427,4 @@ Constants = __decorate([
|
|
|
428
427
|
__param(2, Inject('env'))
|
|
429
428
|
], Constants);
|
|
430
429
|
export { Constants };
|
|
431
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5jb25zdHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1lYXN5Y29tbWVyY2UvIiwic291cmNlcyI6WyJsaWIvY29yZS5jb25zdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7OztBQWF0RCxJQUFhLFNBQVMsR0FBdEIsTUFBYSxTQUFTO0lBRWxCLFlBQW1CLFNBQTJCLEVBQVUsTUFBYyxFQUF5QixHQUFHO1FBQS9FLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUF5QixRQUFHLEdBQUgsR0FBRyxDQUFBO1FBRWpGLFdBQU0sR0FBRyxRQUFRLENBQUM7UUFDbEIsWUFBTyxHQUFHLFNBQVMsQ0FBQztRQUM5QixnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUV4Qix5QkFBb0IsR0FBRyxJQUFJLGFBQWEsRUFBTyxDQUFDO1FBQ2pELG1CQUFjLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXpELHFCQUFnQixHQUFHLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxZQUFZLEdBQUcsT0FBTyxHQUFHLFNBQVMsQ0FBQztRQUVuRSxrQkFBYSxHQUFXLE1BQU0sSUFBSSxFQUFFLENBQUM7UUFDckMscUJBQWdCLEdBQVcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFFckUsZ0ZBQWdGO1FBQ3hFLFlBQU8sR0FBVyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFD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LEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxFQUFFLG1DQUFtQyxFQUFFLENBQUM7SUFDcEksQ0FBQztDQUNKLENBQUE7O1lBN2RpQyxnQkFBZ0I7WUFBa0IsTUFBTTs0Q0FBRyxNQUFNLFNBQUMsS0FBSzs7O0FBRjVFLFNBQVM7SUFIckIsVUFBVSxDQUFDO1FBQ1IsVUFBVSxFQUFFLE1BQU07S0FDckIsQ0FBQztJQUcyRSxXQUFBLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtHQUY3RSxTQUFTLENBK2RyQjtTQS9kWSxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9hcGkvY29ubmVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEN1cnJlbmN5Q29uZmlnIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2N1cnJlbmN5Q29uZmlnJztcbmltcG9ydCB7IERlZmF1bHRGaWx0ZXIsIEZpbHRlckNvbmZpZyB9IGZyb20gJy4vaW50ZXJmYWNlcy9maWx0ZXInO1xuaW1wb3J0IHsgUGFyYW1zUHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudCB9IGZyb20gJy4vaW50ZXJmYWNlcy9wYXJhbXNJbnRlcmZhY2VzL3BhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQnO1xudHlwZSBjdXJyZW5jeVR5cGUgPSAnRVVSJyB8ICdBUkcnIHwgJ1VTRCcgfCAnUFlHJyB8ICdQRU4nIHwgJ1NFSycgfCAnQ1VTVE9NJztcbnR5cGUgcG9zaXRpb25UeXBlID0gJ0wnIHwgJ1InO1xudHlwZSBjaGFubmVsVHlwZXMgPSAnYjJiJyB8ICdiMmIyYycgfCAnYjJjJztcbmV4cG9ydCB0eXBlIENoZWNrb3V0Vmlld1R5cGUgPSAnbGVnYWN5JyB8ICdzaW5nbGUnO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENvbnN0YW50cyB7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLCBwcml2YXRlIHJvdXRlcjogUm91dGVyLCBASW5qZWN0KCdlbnYnKSBwcml2YXRlIGVudikgeyB9XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IExPQ0FMRSA9ICdMT0NBTEUnO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgQ0hBTk5FTCA9ICdDSEFOTkVMJztcbiAgICBwdWJsaWMgc2VhcmNoVmFsdWU6IHN0cmluZyA9ICcnO1xuXG4gICAgcHJpdmF0ZSBjaGFubmVsQ29uZmlnU3ViamVjdCA9IG5ldyBSZXBsYXlTdWJqZWN0PGFueT4oKTtcbiAgICBwdWJsaWMgY2hhbm5lbENvbmZpZyQgPSB0aGlzLmNoYW5uZWxDb25maWdTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgcHJpdmF0ZSBjaGFubmVsQ29uZmlnQVBJID0gKGNoYW5uZWwpID0+ICcvc2hvcC1hcGkvJyArIGNoYW5uZWwgKyAnY2hhbm5lbCc7XG5cbiAgICBwcml2YXRlIGJyb3dzZXJXaW5kb3c6IG9iamVjdCA9IHdpbmRvdyB8fCB7fTtcbiAgICBwcml2YXRlIGJyb3dzZXJXaW5kb3dFbnY6IG9iamVjdCA9IHRoaXMuYnJvd3NlcldpbmRvd1snX19lbnYnXSB8fCB7fTtcblxuICAgIC8vICAgICBwcml2YXRlIHVybEJhc2U6IHN0cmluZyA9ICdodHRwOi8vdGVzdGluZy5iYWNrZW5kLmVhc3ljb21tZXJjZXRlY2guY29tLyc7XG4gICAgcHJpdmF0ZSB1cmxCYXNlOiBzdHJpbmcgPSB0aGlzLmJyb3dzZXJXaW5kb3dFbnZbJ2FwaVVybCddID8gdGhpcy5icm93c2VyV2luZG93RW52WydhcGlVcmwnXSA6ICh0aGlzLmVudi5hcGlVcmwgfHwgJ2h0dHA6Ly9iYWNrZW5kLmVhc3ljb21tZXJjZS5kZXZwLycpO1xuICAgIHByaXZhdGUgdXJsQXNzZXRzOiBzdHJpbmcgPSB0aGlzLmJyb3dzZXJXaW5kb3dFbnZbJ3VybEFzc2V0cyddID8gdGhpcy5icm93c2VyV2luZG93RW52Wyd1cmxBc3NldHMnXSA6ICh0aGlzLmVudi51cmxBc3NldHMgfHwgdGhpcy51cmxCYXNlKTtcbiAgICBwcml2YXRlIHVybEZyb250ZW5kOiBzdHJpbmcgPSB0aGlzLmJyb3dzZXJXaW5kb3dFbnZbJ3VybEZyb250ZW5kJ10gPyB0aGlzLmJyb3dzZXJXaW5kb3dFbnZbJ3VybEZyb250ZW5kJ10gOiAodGhpcy5lbnYudXJsRnJvbnRlbmQgfHwgJ2h0dHBzOi8vZWxkZW4uZWFzeWNvbW1lcmNldGVjaC5jb20vJyk7XG4gICAgcHJpdmF0ZSBsb2NhbGU6IHN0cmluZyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuTE9DQUxFKSA/IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuTE9DQUxFKSA6IHRoaXMuYnJvd3NlcldpbmRvd0VudlsnbG9jYWxlJ10gPyB0aGlzLmJyb3dzZXJXaW5kb3dFbnZbJ2xvY2FsZSddIDogKHRoaXMuZW52LmxvY2FsZSB8fCAnZXNfQVInKTtcbiAgICBwcml2YXRlIGNoYW5uZWw6IHN0cmluZyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuQ0hBTk5FTCkgPyBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLkNIQU5ORUwpIDogdGhpcy5icm93c2VyV2luZG93RW52WydjaGFubmVsJ10gPyB0aGlzLmJyb3dzZXJXaW5kb3dFbnZbJ2NoYW5uZWwnXSA6ICh0aGlzLmVudi5jaGFubmVsIHx8ICdtaW5vcmlzdGEnKVxuICAgIHByaXZhdGUgYmxvY2tzQ2FjaGVUaW1lOiBzdHJpbmcgPSB0aGlzLmJyb3dzZXJXaW5kb3dFbnZbJ2Jsb2Nrc0NhY2hlVGltZSddID8gdGhpcy5icm93c2VyV2luZG93RW52WydibG9ja3NDYWNoZVRpbWUnXSA6ICh0aGlzLmVudi5ibG9ja3NDYWNoZVRpbWUgfHwgbnVsbCk7XG4gICAgcHJpdmF0ZSBjaGVja291dFZpZXc6IENoZWNrb3V0Vmlld1R5cGUgPSAnbGVnYWN5JztcbiAgICBwcml2YXRlIGNoZWNrb3V0Vmlld1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENoZWNrb3V0Vmlld1R5cGU+KHRoaXMuY2hlY2tvdXRWaWV3KTtcbiAgICBwdWJsaWMgY2hlY2tvdXRWaWV3JCA9IHRoaXMuY2hlY2tvdXRWaWV3U3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICAgIHByaXZhdGUgbW9kYWxDb25maWcgPSB7IHRpdGxlOiAnRXhhbXBsZScsIGNsYXNzOiAnbW9kYWwteGwgbW9kYWwtZGlhbG9nLWNlbnRlcmVkJywga2V5Ym9hcmQ6IGZhbHNlIH07XG4gICAgc2V0TW9kYWxDb25maWcgPSAoY29uZmlnOiBhbnkpID0+IHRoaXMubW9kYWxDb25maWcgPSBjb25maWc7XG4gICAgZ2V0TW9kYWxDb25maWcgPSAoKSA9PiB0aGlzLm1vZGFsQ29uZmlnO1xuXG4gICAgcHJpdmF0ZSB2ZXJzaW9uOiBzdHJpbmcgPSAndjEnO1xuXG4gICAgcHJpdmF0ZSByb3V0ZXMgPSBbL15ob21lJC9nLCAvXihcXC8/KWNvbGxlY3Rpb24oXFwvPykoW1xcd1xcLlxcL1xcP10qKSQvZywgL15jb250YWN0JC9nXTtcblxuICAgIC8qIEdldCByaWQgb2YgdGhpcyBBU0FQISAqL1xuICAgIHByaXZhdGUgbWFzdGVyQ2hhbm5lbCA9IG51bGxcblxuICAgIHB1YmxpYyBnZXRNYXN0ZXJDaGFubmVsID0gKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMubWFzdGVyQ2hhbm5lbCkgdGhpcy5tYXN0ZXJDaGFubmVsID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ01BU1RFUl9DSEFOTkVMJylcbiAgICAgICAgcmV0dXJuIHRoaXMubWFzdGVyQ2hhbm5lbFxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRNYXN0ZXJDaGFubmVsID0gY2hhbm5lbCA9PiB7XG4gICAgICAgIHRoaXMubWFzdGVyQ2hhbm5lbCA9IGNoYW5uZWxcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ01BU1RFUl9DSEFOTkVMJywgY2hhbm5lbClcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzUHJvZHVjdGlvbiA9ICgpID0+IHRoaXMuYnJvd3NlcldpbmRvd0VudlsncHJvZHVjdGlvbiddID8gdGhpcy5icm93c2VyV2luZG93RW52Wydwcm9kdWN0aW9uJ10gOiAodGhpcy5lbnYucHJvZHVjdGlvbiB8fCBmYWxzZSk7XG5cbiAgICBzZXRVcmxCYXNlID0gKHVybCkgPT4gdGhpcy51cmxCYXNlID0gdXJsO1xuICAgIHNldFVybEFzc2V0cyA9ICh1cmwpID0+IHRoaXMudXJsQXNzZXRzID0gdXJsO1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIG5leHQgRnVuY3Rpb24gdG8gZXhlY3V0ZVxuICAgICAqIEBwYXJhbSBwYXJhbXMgVGhhdCBmdW5jdGlvbiBuZWVkc1xuICAgICAqXG4gICAgICogRXhlY3V0ZSB0aGUgZnVuY3Rpb24gcGFzc2VkIGFzIHBhcmFtcywgaWYgdGhlIGZyb250ZW5kIGlzIGluIHByb2R1Y3Rpb24gbW9kZVxuICAgICAqL1xuICAgIG9ubHlJZlByb2R1Y3Rpb24gPSAobmV4dCwgcGFyYW1zKSA9PiB0aGlzLmlzUHJvZHVjdGlvbigpICYmIG5leHQocGFyYW1zKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBEZXZ1ZWx2ZSBsYSB1cmwgYmFzZSBkb25kZSBzZSBhbG9qYW4gbG9zIGFyY2hpdm9zIG11bHRpbWVkaWFcbiAgICAgKiBAcGFyYW0gcG9zdE1lZGlhIGNhcnBldGEgZG9uZGUgc2UgZ3VhcmRhbiBsb3MgYXJjaGl2b3NcbiAgICAgKiBAcmV0dXJuc1xuICAgICAqL1xuICAgIG1lZGlhVXJsID0gKHBvc3RNZWRpYT86IHN0cmluZykgPT4gdGhpcy51cmxBc3NldHMgKyAodGhpcy51cmxBc3NldHMgPT0gdGhpcy51cmxCYXNlID8gJ21lZGlhLycgOiAnJykgKyAocG9zdE1lZGlhID8gcG9zdE1lZGlhIDogXCJpbWFnZS9cIik7XG4gICAgbWVkaWFCYW5uZXJVcmwgPSAoKSA9PiB0aGlzLnVybEFzc2V0cyArICh0aGlzLnVybEFzc2V0cyA9PSB0aGlzLnVybEJhc2UgPyAnbWVkaWEvJyA6ICcnKSArIFwiYmFubmVyLWltYWdlL1wiO1xuICAgIG1lZGlhU3RvcmVVcmwgPSAoKSA9PiB0aGlzLnVybEFzc2V0cyArICh0aGlzLnVybEFzc2V0cyA9PSB0aGlzLnVybEJhc2UgPyAnbWVkaWEvJyA6ICcnKSArIFwic3RvcmUtaW1hZ2UvXCI7XG5cbiAgICBnZXRQcm9kdWN0c0xpc3RSb3V0ZSA9ICgpID0+ICdjb2xsZWN0aW9uLyc7XG5cbiAgICBnZXRTZWN0aW9uc1JvdXRlID0gKCkgPT4gJ3NlY3Rpb24vJztcblxuICAgIGdldFVybEJhc2UgPSAoKSA9PiB0aGlzLnVybEJhc2U7XG4gICAgZ2V0VXJsRnJvbnRlbmQgPSAoKSA9PiB0aGlzLnVybEZyb250ZW5kO1xuXG4gICAgZ2V0QmxvY2tzQ2FjaGVUaW1lID0gKCk6IG51bWJlciA9PiB0aGlzLmJsb2Nrc0NhY2hlVGltZSAmJiBwYXJzZUludCh0aGlzLmJsb2Nrc0NhY2hlVGltZSk7XG5cbiAgICAvLyBnZXRMb2NhbGUgPSAoKSA9PiB0aGlzLmxvY2FsZTtcbiAgICAvLyBzZXRMb2NhbGUgPSAobG9jYWxlKSA9PiB0aGlzLmxvY2FsZSA9IGxvY2FsZTtcblxuICAgIGdldExvY2FsZSA9ICgpID0+IHtcbiAgICAgICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuTE9DQUxFKSkge1xuICAgICAgICAgICAgdGhpcy5sb2NhbGUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLkxPQ0FMRSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVcbiAgICB9XG5cbiAgICBnZXRMb2NhbGVUcmFuc2xhdGUgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldExvY2FsZSgpLnNwbGl0KCdfJylbMF1cbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0TG9jYWxlID0gbG9jYWxlID0+IHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5MT0NBTEUsIGxvY2FsZSlcbiAgICAgICAgdGhpcy50cmFuc2xhdGUudXNlKGxvY2FsZS5zcGxpdCgnXycpWzBdKVxuICAgICAgICB0aGlzLmxvY2FsZSA9IGxvY2FsZVxuICAgIH1cblxuICAgIGdldENoYW5uZWwgPSAoKSA9PiB7XG4gICAgICAgIGlmIChsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLkNIQU5ORUwpKSB7XG4gICAgICAgICAgICB0aGlzLmNoYW5uZWwgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLkNIQU5ORUwpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY2hhbm5lbFxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRDaGFubmVsID0gY2hhbm5lbCA9PiB7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuQ0hBTk5FTCwgY2hhbm5lbClcbiAgICAgICAgdGhpcy5jaGFubmVsID0gY2hhbm5lbFxuICAgIH1cblxuICAgIGdldENoZWNrb3V0VmlldyA9ICgpOiBDaGVja291dFZpZXdUeXBlID0+IHRoaXMuY2hlY2tvdXRWaWV3O1xuXG4gICAgcHJpdmF0ZSBzZXRDaGVja291dFZpZXcgPSAodmlldzogQ2hlY2tvdXRWaWV3VHlwZSkgPT4ge1xuICAgICAgICBjb25zdCBub3JtYWxpemVkOiBDaGVja291dFZpZXdUeXBlID0gdmlldyA9PT0gJ3NpbmdsZScgPyAnc2luZ2xlJyA6ICdsZWdhY3knO1xuICAgICAgICB0aGlzLmNoZWNrb3V0VmlldyA9IG5vcm1hbGl6ZWQ7XG4gICAgICAgIHRoaXMuY2hlY2tvdXRWaWV3U3ViamVjdC5uZXh0KG5vcm1hbGl6ZWQpO1xuICAgIH1cblxuICAgIGdldFZlcnNpb24gPSAoKSA9PiB0aGlzLnZlcnNpb247XG5cbiAgICBsb2dpbkV4dHJhRGF0YSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNsaWVudF9pZDogJ2RlbW9fY2xpZW50JyxcbiAgICAgICAgICAgIGNsaWVudF9zZWNyZXQ6ICdzZWNyZXRfZGVtb19jbGllbnQnLFxuICAgICAgICAgICAgZ3JhbnRfdHlwZTogJ3Bhc3N3b3JkJ1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXNDb2xsZWN0aW9uID0gKHBhdGgpID0+ICgvXihcXC8/KWNvbGxlY3Rpb24oXFwvPykoW1xcd1xcLlxcL1xcP10qKSQvZykudGVzdChwYXRoKTtcblxuICAgIC8qKlxuICAgICAqIFV0aWxpdGllc1xuICAgICAqL1xuXG4gICAgbW9iaWxlID0gKCkgPT4gd2luZG93LmlubmVyV2lkdGggPCA3NTA7XG5cbiAgICBzdHJpY3RUeXBlQ2hhbm5lbCA9ICgpID0+IHRoaXMuZW52LnN0cmljdFR5cGVDaGFubmVsIHx8ICdiMmIyYyc7XG5cbiAgICB0b0RlY2ltYWwgPSAodG90YWwpID0+ICh0b3RhbCAtIE1hdGguZmxvb3IodG90YWwpID09IDApID8gdG90YWwgLyAxMDAgOiB0b3RhbDtcblxuICAgIC8qKlxuICAgICAqIEVsZW1lbnRvcyBwYXJhIG1hbmVqbyBkZSBsaXN0YSBkZSBydXRhcyByZXV0aWxpemFibGVzXG4gICAgICovXG5cbiAgICBhZGRSb3V0ZVRvUmV1c2UgPSAocm91dGU6IFJlZ0V4cCkgPT4gcm91dGUgJiYgdGhpcy5yb3V0ZXMucHVzaChyb3V0ZSk7XG5cbiAgICByZW1vdmVSb3V0ZVRvUmV1c2UgPSAocm91dGU6IFJlZ0V4cCkgPT4ge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMucm91dGVzLmluZGV4T2Yocm91dGUpO1xuICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFJvdXRlc1RvUmV1c2UgPSAoKTogUmVnRXhwW10gPT4gdGhpcy5yb3V0ZXM7XG5cblxuXG4gICAgLyoqXG4gICAgICogIEBwdWJsaWMgZWplbXBsbyBkZSB1c28gPGltZyAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjb25zdHMuZ2V0UmF0aW5nU3Rhcihwcm9kdWN0LnJhdGluZywnYXNzZXRzL2ltYWdlcy9zdGFyLnBuZycsJ2Fzc2V0cy9pbWFnZXMvbm90U3Rhci5wbmcnKVwiIFtzcmNdPVwiaXRlbVwiPlxuICAgICAqICBAZGVzY3JpcHRpb24gZnVuY2lvbiBxdWUgZGFkbyB1biB2YWxvciBlbnRyZSAxIC4uIDUsIHkgc3Rhcjogbm90U3RhcjpcbiAgICAgKiAgICAgIChkZWJlbiBzZXIgZWwgcGF0aCBkZWwgYXJjaGl2byBsb2NhbCBhIGxhIGltcGxlbWVudGFjaW9uKS5cbiAgICAgKiAgICAgIHJldG9ybmEgdW4gYXJyZWdsbyBjb24gY29uIGxhIHZhbG9yYWNpb24gY29ycmVzcG9uZGllbnRlLlxuICAgICAqL1xuICAgIGdldFJhdGluZ1N0YXIgPSAocmF0aW5nOiBhbnksIHN0YXI6IFN0cmluZywgbm90U3RhcjogU3RyaW5nKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsZXQgdXJsU3RhciA9IFtdO1xuICAgICAgICAgICAgbGV0IGNhbnRTdGFyID0gTnVtYmVyKHJhdGluZykgfHwgMDtcbiAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCA1OyBpbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgdXJsU3Rhci5wdXNoKFxuICAgICAgICAgICAgICAgICAgICBjYW50U3RhciA+IDBcbiAgICAgICAgICAgICAgICAgICAgICAgID8gc3RhclxuICAgICAgICAgICAgICAgICAgICAgICAgOiBub3RTdGFyXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjYW50U3Rhci0tO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHVybFN0YXI7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiZ2V0UmF0aW5nU3RhciBwcm9kdWpvIHVuIGVycm9yIC0+IFwiLCBlcnJvcik7XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiAgQHB1YmxpYyBlamVtcGxvIGRlIHVzbyAoa2V5cHJlc3MpPVwiaW5wdXRWYWxpZGF0aW9uQnlFeHByZXNzaW9ucygkZXZlbnQsJ1swLTldezEsOX0nKVwiIGVuIGVsIERPTS5cbiAgICAgKiAgQGRlc2NyaXB0aW9uIGZ1bmNpb24gcXVlIGRhZG8gdW4gbWFuZWphbmRvciBkZSBldmVudG8sIHkgdW5hIGV4cHJlc2lvbiByZWd1bGFyIGVzdGEgZXNcbiAgICAgKiAgICAgICAgICBldmFsdWFkYSBzb2JyZSBsb3MgdmFsb3JlcyBxdWUgZWwgbWFuZWphZG9yIGRlIGV2ZW50b3Mgbm9zIGVudmlhLlxuICAgICAqICAgICAgICAgIEVuIGVsIGNhc28gZW4gZWwgcXVlIHNlIGVudmllIGVsIHBhcmFtZXRybyAnY29uZGl0aW9uJyBlc3RlIHB1ZWRlIHNlciBwYXJhXG4gICAgICogICAgICAgICAgYW51bGFyIGVsIGV2ZW50byBjb21vIGNvbmRpY2lvbiBhZGljaW9uYWwgYSBsYSBldmFsdWFjaW9uIGRlIGxhIGVudHJhZGEuXG4gICAgICovXG4gICAgaW5wdXRWYWxpZGF0aW9uQnlFeHByZXNzaW9ucyA9IChlLCBwYXRyb24sIGNvbmRpdGlvbiA9IG51bGwpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxldCB0ZWNsYSA9IChkb2N1bWVudCkgPyBlLmtleUNvZGUgOiBlLndoaWNoO1xuICAgICAgICAgICAgaWYgKHRlY2xhID09IDgpIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgbGV0IHBhdHJvblJlZyA9IG5ldyBSZWdFeHAocGF0cm9uKVxuICAgICAgICAgICAgbGV0IHRlY2xhX2ZpbmFsID0gU3RyaW5nLmZyb21DaGFyQ29kZSh0ZWNsYSk7XG4gICAgICAgICAgICBpZiAoY29uZGl0aW9uICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGF0cm9uUmVnLnRlc3QodGVjbGFfZmluYWwpICYmIGNvbmRpdGlvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwYXRyb25SZWcudGVzdCh0ZWNsYV9maW5hbClcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJpbnB1dFZhbGlkYXRpb25CeUV4cHJlc3Npb25zIHByb2R1am8gdW4gZXJyb3IgLT4gXCIsIGVycm9yKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbmVlZGxlcyAoYWd1amFzKSBvYmplY3QgY29uIGNsYXZlcyB2YWxvciBhIGZpbHRyYXJcbiAgICAgKiBAcGFyYW0gaGF5c3RhY2sgKHBhamFyKSBvYmplY3RvIGVuIGVsIHF1ZSBidXNjYXJcbiAgICAgKlxuICAgICAqIEBkZXNjcmlwdGlvbiBmdW5jaW9uIHF1ZSBidXNjYSBlbiBlbCBoYXlzdGFjayAocGFqYXIpIHRvZG9zIGxvcyBvYmpldG9zIHF1ZSBjb250ZW50YW5cbiAgICAgKiB0b2RhcyBsYXMgY2xhdmVzIGRlIGxvcyBuZWVkbGVzKGFndWphcykgcXVlIGNvbnRlbmdhbiBlbCBtaXNtbyB2YWxvclxuICAgICAqL1xuICAgIGNvbnRhaW5zQWxsKG5lZWRsZXM6IG9iamVjdCwgaGF5c3RhY2s6IG9iamVjdCk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgcmVzdWx0OiBib29sZWFuID0gdHJ1ZTtcblxuICAgICAgICBpZiAoISFuZWVkbGVzICYmICEhaGF5c3RhY2spIHtcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKG5lZWRsZXMpLmZvckVhY2godmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghKGhheXN0YWNrLmhhc093blByb3BlcnR5KHZhbHVlWzBdKSAmJiBoYXlzdGFja1t2YWx1ZVswXV0gPT0gdmFsdWVbMV0pKSByZXN1bHQgPSBmYWxzZVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFByb3BpZWRhZCBxdWUgc2UgdXRpbGl6YSBwYXJhIHRvbWFyIGNvbW8gY29uZmlndXJhY2nDs24gcGFyYSBlbCB0aXBvIGRlIG1vbmVkYSBxdWUgc2UgdXRpbGl6YSBlbiBlbCBzaXRpby5cbiAgICAgKiBFc3RvcyB2YWxvcmVzIHNvbiB1dGlsaXphZG9zIHBhcmEgZWwgcGlwZSBjdXJyZW5jeVByaWNlXG4gICAgICovXG4gICAgcHVibGljIGN1cnJlbmN5OiBDdXJyZW5jeUNvbmZpZyA9IHtcbiAgICAgICAgY29kZTogJ0FSRycsXG4gICAgICAgIHN5bWJvbDogJyQnLFxuICAgICAgICBwb3NpdGlvbjogJ0xlZnQnLFxuICAgICAgICB3aXRob3V0RGVjaW1hbDogZmFsc2VcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBcnJlZ2xvIGRlIHZhbG9yZXMgdXNhZG9zIHBhcmEgZWwgcGlwZSBjdXJyZW5jeVByaWNlXG4gICAgICovXG4gICAgcHVibGljIGN1cnJlbmN5VHlwZUNvbmZpZzogQ3VycmVuY3lDb25maWdbXSA9IFtcbiAgICAgICAge1xuICAgICAgICAgICAgY29kZTogJ0VVUicsXG4gICAgICAgICAgICBzeW1ib2w6ICfigqwnLFxuICAgICAgICAgICAgcG9zaXRpb246ICdSaWdodCcsXG4gICAgICAgICAgICB3aXRob3V0RGVjaW1hbDogZmFsc2VcblxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBjb2RlOiAnQVJHJyxcbiAgICAgICAgICAgIHN5bWJvbDogJyQnLFxuICAgICAgICAgICAgcG9zaXRpb246ICdMZWZ0JyxcbiAgICAgICAgICAgIHdpdGhvdXREZWNpbWFsOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBjb2RlOiAnQVJTJyxcbiAgICAgICAgICAgIHN5bWJvbDogJyQnLFxuICAgICAgICAgICAgcG9zaXRpb246ICdMZWZ0JyxcbiAgICAgICAgICAgIHdpdGhvdXREZWNpbWFsOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBjb2RlOiAnVVNEJyxcbiAgICAgICAgICAgIHN5bWJvbDogJyQnLFxuICAgICAgICAgICAgcG9zaXRpb246ICdMZWZ0JyxcbiAgICAgICAgICAgIHdpdGhvdXREZWNpbWFsOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBjb2RlOiAnUFlHJyxcbiAgICAgICAgICAgIHN5bWJvbDogJ0dzLicsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ0xlZnQnLFxuICAgICAgICAgICAgd2l0aG91dERlY2ltYWw6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvZGU6ICdQRU4nLFxuICAgICAgICAgICAgc3ltYm9sOiAnUy8nLFxuICAgICAgICAgICAgcG9zaXRpb246ICdMZWZ0JyxcbiAgICAgICAgICAgIHdpdGhvdXREZWNpbWFsOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBjb2RlOiAnU0VLJyxcbiAgICAgICAgICAgIHN5bWJvbDogJ1NFSycsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ1JpZ2h0JyxcbiAgICAgICAgICAgIHdpdGhvdXREZWNpbWFsOiB0cnVlXG4gICAgICAgIH0sXG4gICAgXVxuXG4gICAgcHVibGljIHNldEN1cnJlbmN5VHlwZUNvbmZpZyA9IChjdXJyZW5jeVR5cGVDb25maWc6IEN1cnJlbmN5Q29uZmlnW10pID0+IHtcbiAgICAgICAgdGhpcy5jdXJyZW5jeVR5cGVDb25maWcgPSBjdXJyZW5jeVR5cGVDb25maWc7XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmVlbXBsYXphIGxvcyB2YWxvcmVzIGRlIHVuYSBtb25lZGEuXG4gICAgICogQHBhcmFtIGN1cnJlbmN5VHlwZUZpbmQgVGlwbyBkZSBjdXJyZW5jeSBxdWUgc2UgZGVzZWEgbW9kaWZpY2FyXG4gICAgICogQHBhcmFtIGN1c3RvbVR5cGUgTG9zIG51ZXZvcyB2YWxvcmVzLiBUb2RhcyBsYXMga2V5IHNvbiBvcGNpb25hbGVzXG4gICAgICogQGV4YW1wbGUgY3VzdG9tVHlwZSA9IHsgY29kZTogJ0FSRycsIHN5bWJvbDogJyQnLCBwb3NpdGlvbjogJ0xlZnQnICwgd2l0aG91dERlY2ltYWw6IGZhbHNlIH1cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVwbGFjZUN1cnJlbmN5VHlwZUNvbmZpZyA9IChjdXJyZW5jeVR5cGVGaW5kOiBjdXJyZW5jeVR5cGUsIGN1c3RvbVR5cGU6IEN1cnJlbmN5Q29uZmlnKSA9PiB7XG4gICAgICAgIGxldCBjdXJyZW5jeVR5cGUgPSB0aGlzLmN1cnJlbmN5VHlwZUNvbmZpZy5maW5kKHR5cGUgPT4gdHlwZS5jb2RlID09IGN1cnJlbmN5VHlwZUZpbmQpXG4gICAgICAgIGlmIChjdXJyZW5jeVR5cGUpIHtcbiAgICAgICAgICAgIGN1cnJlbmN5VHlwZS5zeW1ib2wgPSBjdXN0b21UeXBlPy5zeW1ib2wgfHwgY3VycmVuY3lUeXBlLnN5bWJvbFxuICAgICAgICAgICAgY3VycmVuY3lUeXBlLmNvZGUgPSBjdXN0b21UeXBlPy5jb2RlIHx8IGN1cnJlbmN5VHlwZS5jb2RlXG4gICAgICAgICAgICBjdXJyZW5jeVR5cGUucG9zaXRpb24gPSBjdXN0b21UeXBlPy5wb3NpdGlvbiB8fCBjdXJyZW5jeVR5cGUucG9zaXRpb25cbiAgICAgICAgICAgIGN1cnJlbmN5VHlwZS53aXRob3V0RGVjaW1hbCA9IGN1c3RvbVR5cGU/LndpdGhvdXREZWNpbWFsIHx8IGN1cnJlbmN5VHlwZS53aXRob3V0RGVjaW1hbFxuICAgICAgICB9XG4gICAgICAgIC8vUmV2ZWVyIGVuIGVsIGZ1dHVybyBzaSBzZSBlbXBpZXphbiBhIGFncmVnYXIgb3RybyB0aXBvcyBkZSBtb25lZGFzXG4gICAgICAgIC8qIGVsc2V7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbmN5VHlwZUNvbmZpZy5wdXNoKHsuLi5jdXN0b21UeXBlIH0pXG4gICAgICAgIH0gKi9cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSBjdXJyZW5jeVR5cGVGaW5kIERlZmluaXIgZWwgY29kZSBkZWwgdGlwbyBkZSBtb25lZGEgcXVlIHNlIHF1aWVyYSB1dGlsaXphci5cbiAgICAgKiBTaSBlbCB0aXBvIGVzIENVU1RPTSBzZSB0b21hbiBsb3MgdmFsb3JlcyBkZWwgc2VndW5kbyBwYXJhbWV0cm8gZG9uZGUgc2UgcHVlZGUgZGVmaW5pciBsYSBzaW1ib2xvZ8OtYSB5IHBvc2VzacOzbiBxdWUgc2UgcXVpZXJhLlxuICAgICAqIEBwYXJhbSBjdXN0b21UeXBlIEZvcm1hdG8gZGVsIHBhcsOhbWV0cm8gZWplbXBsbyB7IGNvZGU6ICdBUkcnLCBzeW1ib2w6ICckJywgcG9zaXRpb246ICdMJyAsIHdpdGhvdXREZWNpbWFsczogZmFsc2UgfSAsXG4gICAgICogdG9kYXMgbGFzIGtleSBzb24gb3BjaW9uYWxlcyB5IHBvciBkZWZlY3RvIHNlIHRvbWFuIGxvcyB2YWxvcmVzIGRlbCBlamVtcGxvLlxuICAgICAqIEByZXR1cm5zIHNlIHJldG9ybmEgbGEgY29uZmlndXJhY2nDs24gcXVlIHNlIHNldGVvIGEgbGEgcHJvcGllZGFkIGN1cnJlbmN5IGRlbCBzZXJ2aWNpby5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0Q3VycmVuY3kgPSAoY3VycmVuY3lUeXBlRmluZDogY3VycmVuY3lUeXBlLCBjdXN0b21UeXBlPzogQ3VycmVuY3lDb25maWcpID0+IHtcbiAgICAgICAgdGhpcy5jdXJyZW5jeSA9IHRoaXMuY3VycmVuY3lUeXBlQ29uZmlnLmZpbmQoY3QgPT4gY3QuY29kZSA9PSBjdXJyZW5jeVR5cGVGaW5kLnRvVXBwZXJDYXNlKCkpIHx8IHRoaXMuY3VycmVuY3lcbiAgICAgICAgY3VzdG9tVHlwZSAmJiAodGhpcy5jdXJyZW5jeSA9IHsgLi4udGhpcy5jdXJyZW5jeSwgLi4uY3VzdG9tVHlwZSB9KVxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW5jeTtcbiAgICB9O1xuXG5cbiAgICAvKipcbiAgICAgKiBkZXZ1ZWx2ZSB0cnVlIHNpIGV4aXN0ZSBlbCBlbGVtZW50byBcInNlYXJjaFwiIGVuIGVsIGFycmF5IGRlIHBhcmFtZXRyb3MgXCJwYXJhbXNcIlxuICAgICAqXG4gICAgICogQHBhcmFtIHBhcmFtcyBBcnJheSBkZSBwYXJhbWV0cm9zIGVudHJlIGxvcyBxdWUgYnVzY2FyXG4gICAgICogQHBhcmFtIHNlYXJjaGVkIEVsZW1lbnRvIHF1ZSBidXNjYXJcbiAgICAgKiBAcGFyYW0gcHJlZml4IHByZWZpam8gZGVsIHN0cmluZyBhIGJ1c2NhciAoZWplbXBsbzogXCJsaW5rX1wiKVxuICAgICAqIEBwYXJhbSBzdWZmaXggc3VmaWpvIGRlbCBzdHJpbmcgYSBidXNjYXIgKGVqZW1wbG86IFwibGlua19cIilcbiAgICAgKiBAcGFyYW0gY2FzZXNlbnNpdGl2ZSBkZXRlcm1pbmEgc2kgc2UgZXZhbHVhIGNvbiBzZW5zaWJpbGlkYWQgZW50cmUgbWF5dXNjdWxhIHkgbWludXNjdWxhXG4gICAgICogQHJldHVybnMgcmV0b3JuYSB0cnVlIG8gZmFsc2Ugc2kgc2UgZW5jb250cm8gbyBubyBlbCBwYXJhbWV0cm8gZW4gZWwgYXJyYXlcbiAgICAgKi9cbiAgICBwdWJsaWMgaGFzUGFyYW1zKFxuICAgICAgICBwYXJhbXMsXG4gICAgICAgIHNlYXJjaGVkLFxuICAgICAgICBwcmVmaXggPSAnJyxcbiAgICAgICAgc3VmZml4ID0gJycsXG4gICAgICAgIGNhc2VzZW5zaXRpdmUgPSBmYWxzZSk6IGJvb2xlYW4ge1xuXG5cbiAgICAgICAgcmV0dXJuIGNhc2VzZW5zaXRpdmUgPyBwYXJhbXMuZmluZChwYXJhbSA9PiAocGFyYW0uY29kZSkudG9Mb3dlckNhc2UoKSA9PSAocHJlZml4ICsgc2VhcmNoZWQgKyBzdWZmaXgpLnRvTG93ZXJDYXNlKCkgfHwgKHBhcmFtLmNvZGUpLnRvTG93ZXJDYXNlKCkgPT0gKHNlYXJjaGVkKS50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgICAgOiBwYXJhbXMuZmluZChwYXJhbSA9PiBwYXJhbS5jb2RlID09IChwcmVmaXggKyBzZWFyY2hlZCArIHN1ZmZpeCkgfHwgcGFyYW0uY29kZSA9PSBzZWFyY2hlZClcblxuICAgIH07XG5cbiAgICBwdWJsaWMgbW9kaWZ5Q2hhbm5lbENvbmZpZyA9IGNoYW5uZWxDb25maWcgPT4ge1xuICAgICAgICBpZiAoY2hhbm5lbENvbmZpZy5jaGFubmVsIHx8IGNoYW5uZWxDb25maWcuY29kZSlcbiAgICAgICAgICAgIHRoaXMuc2V0Q2hhbm5lbChjaGFubmVsQ29uZmlnLmNoYW5uZWwgfHwgY2hhbm5lbENvbmZpZy5jb2RlKVxuXG4gICAgICAgIGlmIChjaGFubmVsQ29uZmlnLmxvY2FsZSB8fCAoY2hhbm5lbENvbmZpZy5sb2NhbGVzICYmIGNoYW5uZWxDb25maWcubG9jYWxlcy5jb2RlKSlcbiAgICAgICAgICAgIHRoaXMuc2V0TG9jYWxlKGNoYW5uZWxDb25maWcubG9jYWxlIHx8IGNoYW5uZWxDb25maWcubG9jYWxlcy5jb2RlKVxuXG4gICAgICAgIGlmIChjaGFubmVsQ29uZmlnLmN1cnJlbmN5IHx8IGNoYW5uZWxDb25maWcuYmFzZUN1cnJlbmN5KVxuICAgICAgICAgICAgdGhpcy5zZXRDdXJyZW5jeShjaGFubmVsQ29uZmlnLmN1cnJlbmN5IHx8IGNoYW5uZWxDb25maWcuYmFzZUN1cnJlbmN5KVxuXG4gICAgICAgIGlmIChjaGFubmVsQ29uZmlnLmNoZWNrb3V0VmlldyAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLnNldENoZWNrb3V0VmlldyhjaGFubmVsQ29uZmlnLmNoZWNrb3V0VmlldyBhcyBDaGVja291dFZpZXdUeXBlKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNoYW5uZWxDb25maWc7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBTZSB1dGlsaXphIHBhcmEgY29uZmlndXJhciBsb3MgZmlsdHJvcyBwb3IgZGVmZWN0byBxdWUgc2UgYXBsaWNhcmFuIGVuIGxhIHNlY2Npb24gJ0NvbGxlY3Rpb24nXG4gICAgICogY3VhbmRvIHNlIGluZ3Jlc2EgYSBsYSBtaXNtYS5cbiAgICAgKi9cbiAgICBwcml2YXRlIGRlZmF1bHRGaWx0ZXJzOiBEZWZhdWx0RmlsdGVyW10gPSBbXVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFNldHRlYSBlbCB2YWxvciBkZSBsYSB2YXJpYWJsZSBkZWZhdWxGaWx0ZXJzLlxuICAgICAqIEBwYXJhbSBmaWx0ZXJzXG4gICAgICovXG4gICAgcHVibGljIHNldERlZmF1bHRGaWx0ZXJzID0gKGZpbHRlcnM6IERlZmF1bHRGaWx0ZXJbXSkgPT4ge1xuICAgICAgICB0aGlzLmRlZmF1bHRGaWx0ZXJzID0gZmlsdGVycztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RGVmYXVsdEZpbHRlcnMgPSAoKTogRGVmYXVsdEZpbHRlcltdID0+IHRoaXMuZGVmYXVsdEZpbHRlcnNcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBTZSB1dGlsaXphIHBhcmEgY29uZmlndXJhciB0YW50byBsb3MgZmlsdHJvcyBwb3IgZGVmZWN0b3MgcXVlIHlhIHNlcmFuIGFwbGljYWRvcywgY29tbyB0YW1iaWVuXG4gICAgICogbG9zIGZpbHRyb3MgcXVlIHNlIG1vc3RyYXJhbiBlbiBsYSBzZWNjaW9uIGNvbGxlY3Rpb24sIHN1IG9yZGVuLCBldGMuXG4gICAgICovXG4gICAgcHJpdmF0ZSBmaWx0ZXJDb25maWc6IEZpbHRlckNvbmZpZyA9IHtcbiAgICAgICAgZGVmYXVsdEZpbHRlcnM6IFtdLFxuICAgICAgICBmaWx0ZXJzOiBbJ2NhdGVnb3J5JywgJ2F0dHJpYnV0ZXMnLCAnZHluYW1pY3MnLCAncHJpY2VfcmFuZ2UnXVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRGaWx0ZXJDb25maWcgPSAoZmlsdGVyQ29uZmlnOiBGaWx0ZXJDb25maWcpID0+IHtcbiAgICAgICAgZmlsdGVyQ29uZmlnLmRlZmF1bHRGaWx0ZXJzID8gdGhpcy5maWx0ZXJDb25maWcuZGVmYXVsdEZpbHRlcnMgPSBmaWx0ZXJDb25maWcuZGVmYXVsdEZpbHRlcnMgOiBudWxsXG4gICAgICAgIGZpbHRlckNvbmZpZy5maWx0ZXJzID8gdGhpcy5maWx0ZXJDb25maWcuZmlsdGVycyA9IGZpbHRlckNvbmZpZy5maWx0ZXJzIDogbnVsbFxuICAgIH1cblxuICAgIHB1YmxpYyBnZXRGaWx0ZXJDb25maWcgPSAoKSA9PiB0aGlzLmZpbHRlckNvbmZpZy5maWx0ZXJzXG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gY29udGllbmUgdW4gYXJyZWdsbyBkZSBzdHJpbmcgY3V5byBjb250ZW5pZG8gc29uIGxvcyBjb2RpZ29zIGRlIGxvcyBwYWlzZXMuXG4gICAgICogQGV4YW1wbGUgWydBUicsJ0VTJywnR0InXVxuICAgICAqL1xuICAgIHByaXZhdGUgY291bnRyaWVzOiBzdHJpbmdbXSA9IFtdXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIGNvbnRpZW5lIHVuIGFycmVnbG8gZGUgc3RyaW5nIGN1eW8gY29udGVuaWRvIHNvbiBsb3MgY29kaWdvcyBkZSBsb3MgcGFpc2VzIGEgZXhjbHVpci5cbiAgICAgKiBAZXhhbXBsZSBbJ0dCJ11cbiAgICAgKi9cbiAgICBwdWJsaWMgZXhjbHVkZWRDb3VudHJpZXM6IHN0cmluZ1tdID0gW11cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSBjb3VudHJpZXMgZGViZSBjb250ZW5lciBsb3MgY29kaWdvcyBkZSBsb3MgcGFpc2VzIHF1ZSBzZSBxdWllcmUgbW9zdHJhclxuICAgICAqIEBleGFtcGxlIFsnQVInLCdFUycsJ0dCJ11cbiAgICAgKiBAcmV0dXJuc1xuICAgICAqL1xuICAgIHB1YmxpYyBzZXRDb3VudHJpZXMgPSAoY291bnRyaWVzOiBzdHJpbmdbXSkgPT4gdGhpcy5jb3VudHJpZXMgPSBjb3VudHJpZXM7XG5cbiAgICBwdWJsaWMgZ2V0Q291bnRyaWVzID0gKCkgPT4gdGhpcy5jb3VudHJpZXM7XG5cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBlc3RhIHZhcmlhYmxlIHNlIHV0aWxpemEgcGFyYSBjb25maWd1cmFyIGxvcyBwYXJhbWV0cm9zIGN1YW5kbyBzZSBkZXNlYSBtb3N0cmFyXG4gICAgICogdmFyaWFudGVzIGVsIGxpc3RhZG8gZGUgcHJvZHVjdG9zLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfXR5cGUgdGlwbyBkZSBvcHRpb25zXG4gICAgICogQHBhcmFtIHtzdHJpbmd9Y29kZSBjb2RpZ28gZGUgb3B0aW9uc1xuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn1kZWZhdWx0Rmlyc3RPcHRpb24gYHRydWVgIHRvbWEgZWwgcHJpbWVyIG9wdGlvbiBkZWwgcHJvZHVjdG8gZW4gZ2VuZXJhbFxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn1jaGVja0lmU3RvY2sgYHRydWVgIHNlIHJlYWxpemEgdW4gY2hlcXVlbyBkZSBzaSBsYSB2YXJpYW50ZSB0aWVuZSBzdG9jayBwYXJhIG1vc3RyYXJsYVxuICAgICAqIEBleGFtcGxlICBgYGBqYXZhc2NyaXB0XG4gICAgICoge1xuICAgICAgICB0eXBlOiAnY29sb3InLFxuICAgICAgICBjb2RlOiAnY29sb3InLFxuICAgICAgICBkZWZhdWx0Rmlyc3RPcHRpb246IGZhbHNlICxcbiAgICAgICAgY2hlY2tJZlN0b2NrOnRydWVcbiAgICAgICAgfSBgYGBcbiAgICAgKi9cbiAgICBwcml2YXRlIHBhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQ6IFBhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQgPSB7XG4gICAgICAgIHR5cGU6ICdjb2xvcicsXG4gICAgICAgIGNvZGU6ICdjb2xvcicsXG4gICAgICAgIGRlZmF1bHRGaXJzdE9wdGlvbjogZmFsc2UsXG4gICAgICAgIGNoZWNrSWZTdG9jazogdHJ1ZVxuICAgIH1cblxuICAgIHNldFBhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQgPSAodmFsdWU6IFBhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQpID0+IHtcbiAgICAgICAgdGhpcy5wYXJhbXNQcm9kdWN0c1dpdGhVbmlxdWVWYXJpYW50ID0ge1xuICAgICAgICAgICAgLi4udGhpcy5wYXJhbXNQcm9kdWN0c1dpdGhVbmlxdWVWYXJpYW50LFxuICAgICAgICAgICAgLi4udmFsdWVcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFBhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQgPSAoKSA9PiB0aGlzLnBhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnRcblxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIHNlIHV0aWxpemEgcGFyYSBjb25maWd1cmFyIHF1ZSBmaWx0cm9zIGRlbCB0aXBvIGBTb3J0RmlsdGVyYCBzZSBxdWllcmUgbW9zdHJhciBlbiBsYSB2aXN0YS5cbiAgICAgKiBTZSB1c2FuIGxvcyBjb2RpZ28gZGUgbG9zIGZpbHRyb3MgcGFyYSBpbmRpY2FyIGN1YWxlcyBzZSBkZWJlbiBtb3N0cmFyLlxuICAgICAqL1xuICAgIHByaXZhdGUgc29ydEZpbHRlcnM6IHN0cmluZ1tdID0gWydwcmljZScsICdvcmRlci1hbHBoJywgJ3JlY2VudCddXG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWx0ZXJzQ29kZSBhcnJlZ2xvIGRlIHN0cmluZ3MgY29uIGxvcyBjb2RpZ29zIGRlIGxvcyBmaWx0cm9zLlxuICAgICAqIFNpIHNlIGxlIHBhc2EgZWwgcGFyYW1ldHJvICoqYWxsKiogZXN0ZSBtb3N0cmFyYSB0b2Rvcy5cbiAgICAgKiBAZXhhbXBsZSBwcmljZSB8IG9yZGVyLWFscGggfCByZWNlbnQgfCB1cGRhdGUgfCBhbGxcbiAgICAgKiBAcmV0dXJuc1xuICAgICAqL1xuICAgIHNldFNvcnRGaWx0ZXJzID0gKGZpbHRlcnNDb2RlOiBzdHJpbmdbXSA9IFsnYWxsJ10pID0+IHRoaXMuc29ydEZpbHRlcnMgPSBmaWx0ZXJzQ29kZTtcblxuICAgIGdldFNvcnRGaWx0ZXJzID0gKCkgPT4gdGhpcy5zb3J0RmlsdGVycztcblxuICAgIHByaXZhdGUgcG9zdGFsQ29kZVBhdHRlcm5zOiB7IFtrZXk6IHN0cmluZ106IHsgcGF0dGVybjogUmVnRXhwLCBlcnJvcktleTogc3RyaW5nIH0gfSA9IHtcbiAgICAgICAgJ0FSJzogeyBwYXR0ZXJuOiAvXlswLTldezR9JC8sIGVycm9yS2V5OiBcInBvc3RhbC1jb2RlLXBhdHRlcm4tZXJyb3IuYXJcIiB9LFxuICAgICAgICAnVVknOiB7IHBhdHRlcm46IC9eWzAtOV17NX0kLywgZXJyb3JLZXk6IFwicG9zdGFsLWNvZGUtcGF0dGVybi1lcnJvci51eVwiIH0sXG4gICAgICAgICdHQic6IHsgcGF0dGVybjogL15bQS1aXXsxLDJ9WzAtOV1bQS1aMC05XT9cXHM/WzAtOV1bQS1aXXsyfSQvLCBlcnJvcktleTogXCJwb3N0YWwtY29kZS1wYXR0ZXJuLWVycm9yLmdiXCIgfSxcbiAgICAgICAgJ0VTJzogeyBwYXR0ZXJuOiAvXig/OjBbMS05XXxbMS00XVxcZHw1WzAtMl0pXFxkezN9JC8sIGVycm9yS2V5OiBcInBvc3RhbC1jb2RlLXBhdHRlcm4tZXJyb3IuZXNcIiB9LFxuICAgICAgICAnQlInOiB7IHBhdHRlcm46IC9eWzAtOV17NX0tWzAtOV17M30kLywgZXJyb3JLZXk6IFwicG9zdGFsLWNvZGUtcGF0dGVybi1lcnJvci5iclwiIH0sXG4gICAgICAgICdGUic6IHsgcGF0dGVybjogL15bMC05XXs1fSQvLCBlcnJvcktleTogXCJwb3N0YWwtY29kZS1wYXR0ZXJuLWVycm9yLmZyXCIgfSxcbiAgICAgICAgJ1BUJzogeyBwYXR0ZXJuOiAvXlswLTldezR9LVswLTldezN9JC8sIGVycm9yS2V5OiBcInBvc3RhbC1jb2RlLXBhdHRlcm4tZXJyb3IucHRcIiB9LFxuICAgIH07XG5cbiAgICBnZXRQb3N0YWxDb2RlUGF0dGVybihjb3VudHJ5Q29kZTogc3RyaW5nKTogeyBwYXR0ZXJuOiBSZWdFeHAsIGVycm9yS2V5OiBzdHJpbmcgfSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBvc3RhbENvZGVQYXR0ZXJuc1tjb3VudHJ5Q29kZV0gfHwgeyBwYXR0ZXJuOiAvXltBLVphLXowLTlcXHNcXC1dKyQvLCBlcnJvcktleTogXCJwb3N0YWwtY29kZS1wYXR0ZXJuLWVycm9yLmRlZmF1bHRcIiB9O1xuICAgIH1cbn1cbiJdfQ==
|
|
430
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5jb25zdHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1lYXN5Y29tbWVyY2UvIiwic291cmNlcyI6WyJsaWIvY29yZS5jb25zdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7O0FBYXRELElBQWEsU0FBUyxHQUF0QixNQUFhLFNBQVM7SUFFbEIsWUFBbUIsU0FBMkIsRUFBVSxNQUFjLEVBQXlCLEdBQUc7UUFBL0UsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQXlCLFFBQUcsR0FBSCxHQUFHLENBQUE7UUFFakYsV0FBTSxHQUFHLFFBQVEsQ0FBQztRQUNsQixZQUFPLEdBQUcsU0FBUyxDQUFDO1FBQzlCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBRXhCLHlCQUFvQixHQUFHLElBQUksYUFBYSxFQUFPLENBQUM7UUFDakQsbUJBQWMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFekQscUJBQWdCLEdBQUcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLFlBQVksR0FBRyxPQUFPLEdBQUcsU0FBUyxDQUFDO1FBRW5FLGtCQUFhLEdBQVcsTUFBTSxJQUFJLEVBQUUsQ0FBQztRQUNyQyxxQkFBZ0IsR0FBVyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVyRSxnRkFBZ0Y7UUFDeEUsWUFBTyxHQUFXLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMs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RUFBRSxvQkFBb0IsRUFBRSxRQUFRLEVBQUUsbUNBQW1DLEVBQUUsQ0FBQztJQUNwSSxDQUFDO0NBQ0osQ0FBQTs7WUE3ZGlDLGdCQUFnQjtZQUFrQixNQUFNOzRDQUFHLE1BQU0sU0FBQyxLQUFLOzs7QUFGNUUsU0FBUztJQUhyQixVQUFVLENBQUM7UUFDUixVQUFVLEVBQUUsTUFBTTtLQUNyQixDQUFDO0lBRzJFLFdBQUEsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO0dBRjdFLFNBQVMsQ0ErZHJCO1NBL2RZLFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tICcuL2FwaS9jb25uZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ3VycmVuY3lDb25maWcgfSBmcm9tICcuL2ludGVyZmFjZXMvY3VycmVuY3lDb25maWcnO1xuaW1wb3J0IHsgRGVmYXVsdEZpbHRlciwgRmlsdGVyQ29uZmlnIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2ZpbHRlcic7XG5pbXBvcnQgeyBQYXJhbXNQcm9kdWN0c1dpdGhVbmlxdWVWYXJpYW50IH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BhcmFtc0ludGVyZmFjZXMvcGFyYW1zUHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudCc7XG50eXBlIGN1cnJlbmN5VHlwZSA9ICdFVVInIHwgJ0FSRycgfCAnVVNEJyB8ICdQWUcnIHwgJ1BFTicgfCAnU0VLJyB8ICdDVVNUT00nO1xudHlwZSBwb3NpdGlvblR5cGUgPSAnTCcgfCAnUic7XG50eXBlIGNoYW5uZWxUeXBlcyA9ICdiMmInIHwgJ2IyYjJjJyB8ICdiMmMnO1xuZXhwb3J0IHR5cGUgQ2hlY2tvdXRWaWV3VHlwZSA9ICdsZWdhY3knIHwgJ3NpbmdsZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ29uc3RhbnRzIHtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIEBJbmplY3QoJ2VudicpIHByaXZhdGUgZW52KSB7IH1cblxuICAgIHByaXZhdGUgcmVhZG9ubHkgTE9DQUxFID0gJ0xPQ0FMRSc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBDSEFOTkVMID0gJ0NIQU5ORUwnO1xuICAgIHB1YmxpYyBzZWFyY2hWYWx1ZTogc3RyaW5nID0gJyc7XG5cbiAgICBwcml2YXRlIGNoYW5uZWxDb25maWdTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8YW55PigpO1xuICAgIHB1YmxpYyBjaGFubmVsQ29uZmlnJCA9IHRoaXMuY2hhbm5lbENvbmZpZ1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICBwcml2YXRlIGNoYW5uZWxDb25maWdBUEkgPSAoY2hhbm5lbCkgPT4gJy9zaG9wLWFwaS8nICsgY2hhbm5lbCArICdjaGFubmVsJztcblxuICAgIHByaXZhdGUgYnJvd3NlcldpbmRvdzogb2JqZWN0ID0gd2luZG93IHx8IHt9O1xuICAgIHByaXZhdGUgYnJvd3NlcldpbmRvd0Vudjogb2JqZWN0ID0gdGhpcy5icm93c2VyV2luZG93WydfX2VudiddIHx8IHt9O1xuXG4gICAgLy8gICAgIHByaXZhdGUgdXJsQmFzZTogc3RyaW5nID0gJ2h0dHA6Ly90ZXN0aW5nLmJhY2tlbmQuZWFzeWNvbW1lcmNldGVjaC5jb20vJztcbiAgICBwcml2YXRlIHVybEJhc2U6IHN0cmluZyA9IHRoaXMuYnJvd3NlcldpbmRvd0VudlsnYXBpVXJsJ10gPyB0aGlzLmJyb3dzZXJXaW5kb3dFbnZbJ2FwaVVybCddIDogKHRoaXMuZW52LmFwaVVybCB8fCAnaHR0cDovL2JhY2tlbmQuZWFzeWNvbW1lcmNlLmRldnAvJyk7XG4gICAgcHJpdmF0ZSB1cmxBc3NldHM6IHN0cmluZyA9IHRoaXMuYnJvd3NlcldpbmRvd0VudlsndXJsQXNzZXRzJ10gPyB0aGlzLmJyb3dzZXJXaW5kb3dFbnZbJ3VybEFzc2V0cyddIDogKHRoaXMuZW52LnVybEFzc2V0cyB8fCB0aGlzLnVybEJhc2UpO1xuICAgIHByaXZhdGUgdXJsRnJvbnRlbmQ6IHN0cmluZyA9IHRoaXMuYnJvd3NlcldpbmRvd0VudlsndXJsRnJvbnRlbmQnXSA/IHRoaXMuYnJvd3NlcldpbmRvd0VudlsndXJsRnJvbnRlbmQnXSA6ICh0aGlzLmVudi51cmxGcm9udGVuZCB8fCAnaHR0cHM6Ly9lbGRlbi5lYXN5Y29tbWVyY2V0ZWNoLmNvbS8nKTtcbiAgICBwcml2YXRlIGxvY2FsZTogc3RyaW5nID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5MT0NBTEUpID8gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5MT0NBTEUpIDogdGhpcy5icm93c2VyV2luZG93RW52Wydsb2NhbGUnXSA/IHRoaXMuYnJvd3NlcldpbmRvd0VudlsnbG9jYWxlJ10gOiAodGhpcy5lbnYubG9jYWxlIHx8ICdlc19BUicpO1xuICAgIHByaXZhdGUgY2hhbm5lbDogc3RyaW5nID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5DSEFOTkVMKSA/IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuQ0hBTk5FTCkgOiB0aGlzLmJyb3dzZXJXaW5kb3dFbnZbJ2NoYW5uZWwnXSA/IHRoaXMuYnJvd3NlcldpbmRvd0VudlsnY2hhbm5lbCddIDogKHRoaXMuZW52LmNoYW5uZWwgfHwgJ21pbm9yaXN0YScpXG4gICAgcHJpdmF0ZSBibG9ja3NDYWNoZVRpbWU6IHN0cmluZyA9IHRoaXMuYnJvd3NlcldpbmRvd0VudlsnYmxvY2tzQ2FjaGVUaW1lJ10gPyB0aGlzLmJyb3dzZXJXaW5kb3dFbnZbJ2Jsb2Nrc0NhY2hlVGltZSddIDogKHRoaXMuZW52LmJsb2Nrc0NhY2hlVGltZSB8fCBudWxsKTtcbiAgICBwcml2YXRlIGNoZWNrb3V0VmlldzogQ2hlY2tvdXRWaWV3VHlwZSA9ICdsZWdhY3knO1xuICAgIHByaXZhdGUgY2hlY2tvdXRWaWV3U3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q2hlY2tvdXRWaWV3VHlwZT4odGhpcy5jaGVja291dFZpZXcpO1xuICAgIHB1YmxpYyBjaGVja291dFZpZXckID0gdGhpcy5jaGVja291dFZpZXdTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgcHJpdmF0ZSBtb2RhbENvbmZpZyA9IHsgdGl0bGU6ICdFeGFtcGxlJywgY2xhc3M6ICdtb2RhbC14bCBtb2RhbC1kaWFsb2ctY2VudGVyZWQnLCBrZXlib2FyZDogZmFsc2UgfTtcbiAgICBzZXRNb2RhbENvbmZpZyA9IChjb25maWc6IGFueSkgPT4gdGhpcy5tb2RhbENvbmZpZyA9IGNvbmZpZztcbiAgICBnZXRNb2RhbENvbmZpZyA9ICgpID0+IHRoaXMubW9kYWxDb25maWc7XG5cbiAgICBwcml2YXRlIHZlcnNpb246IHN0cmluZyA9ICd2MSc7XG5cbiAgICBwcml2YXRlIHJvdXRlcyA9IFsvXmhvbWUkL2csIC9eKFxcLz8pY29sbGVjdGlvbihcXC8/KShbXFx3XFwuXFwvXFw/XSopJC9nLCAvXmNvbnRhY3QkL2ddO1xuXG4gICAgLyogR2V0IHJpZCBvZiB0aGlzIEFTQVAhICovXG4gICAgcHJpdmF0ZSBtYXN0ZXJDaGFubmVsID0gbnVsbFxuXG4gICAgcHVibGljIGdldE1hc3RlckNoYW5uZWwgPSAoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5tYXN0ZXJDaGFubmVsKSB0aGlzLm1hc3RlckNoYW5uZWwgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnTUFTVEVSX0NIQU5ORUwnKVxuICAgICAgICByZXR1cm4gdGhpcy5tYXN0ZXJDaGFubmVsXG4gICAgfVxuXG4gICAgcHVibGljIHNldE1hc3RlckNoYW5uZWwgPSBjaGFubmVsID0+IHtcbiAgICAgICAgdGhpcy5tYXN0ZXJDaGFubmVsID0gY2hhbm5lbFxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnTUFTVEVSX0NIQU5ORUwnLCBjaGFubmVsKVxuICAgIH1cblxuICAgIHByaXZhdGUgaXNQcm9kdWN0aW9uID0gKCkgPT4gdGhpcy5icm93c2VyV2luZG93RW52Wydwcm9kdWN0aW9uJ10gPyB0aGlzLmJyb3dzZXJXaW5kb3dFbnZbJ3Byb2R1Y3Rpb24nXSA6ICh0aGlzLmVudi5wcm9kdWN0aW9uIHx8IGZhbHNlKTtcblxuICAgIHNldFVybEJhc2UgPSAodXJsKSA9PiB0aGlzLnVybEJhc2UgPSB1cmw7XG4gICAgc2V0VXJsQXNzZXRzID0gKHVybCkgPT4gdGhpcy51cmxBc3NldHMgPSB1cmw7XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gbmV4dCBGdW5jdGlvbiB0byBleGVjdXRlXG4gICAgICogQHBhcmFtIHBhcmFtcyBUaGF0IGZ1bmN0aW9uIG5lZWRzXG4gICAgICpcbiAgICAgKiBFeGVjdXRlIHRoZSBmdW5jdGlvbiBwYXNzZWQgYXMgcGFyYW1zLCBpZiB0aGUgZnJvbnRlbmQgaXMgaW4gcHJvZHVjdGlvbiBtb2RlXG4gICAgICovXG4gICAgb25seUlmUHJvZHVjdGlvbiA9IChuZXh0LCBwYXJhbXMpID0+IHRoaXMuaXNQcm9kdWN0aW9uKCkgJiYgbmV4dChwYXJhbXMpO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIERldnVlbHZlIGxhIHVybCBiYXNlIGRvbmRlIHNlIGFsb2phbiBsb3MgYXJjaGl2b3MgbXVsdGltZWRpYVxuICAgICAqIEBwYXJhbSBwb3N0TWVkaWEgY2FycGV0YSBkb25kZSBzZSBndWFyZGFuIGxvcyBhcmNoaXZvc1xuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgbWVkaWFVcmwgPSAocG9zdE1lZGlhPzogc3RyaW5nKSA9PiB0aGlzLnVybEFzc2V0cyArICh0aGlzLnVybEFzc2V0cyA9PSB0aGlzLnVybEJhc2UgPyAnbWVkaWEvJyA6ICcnKSArIChwb3N0TWVkaWEgPyBwb3N0TWVkaWEgOiBcImltYWdlL1wiKTtcbiAgICBtZWRpYUJhbm5lclVybCA9ICgpID0+IHRoaXMudXJsQXNzZXRzICsgKHRoaXMudXJsQXNzZXRzID09IHRoaXMudXJsQmFzZSA/ICdtZWRpYS8nIDogJycpICsgXCJiYW5uZXItaW1hZ2UvXCI7XG4gICAgbWVkaWFTdG9yZVVybCA9ICgpID0+IHRoaXMudXJsQXNzZXRzICsgKHRoaXMudXJsQXNzZXRzID09IHRoaXMudXJsQmFzZSA/ICdtZWRpYS8nIDogJycpICsgXCJzdG9yZS1pbWFnZS9cIjtcblxuICAgIGdldFByb2R1Y3RzTGlzdFJvdXRlID0gKCkgPT4gJ2NvbGxlY3Rpb24vJztcblxuICAgIGdldFNlY3Rpb25zUm91dGUgPSAoKSA9PiAnc2VjdGlvbi8nO1xuXG4gICAgZ2V0VXJsQmFzZSA9ICgpID0+IHRoaXMudXJsQmFzZTtcbiAgICBnZXRVcmxGcm9udGVuZCA9ICgpID0+IHRoaXMudXJsRnJvbnRlbmQ7XG5cbiAgICBnZXRCbG9ja3NDYWNoZVRpbWUgPSAoKTogbnVtYmVyID0+IHRoaXMuYmxvY2tzQ2FjaGVUaW1lICYmIHBhcnNlSW50KHRoaXMuYmxvY2tzQ2FjaGVUaW1lKTtcblxuICAgIC8vIGdldExvY2FsZSA9ICgpID0+IHRoaXMubG9jYWxlO1xuICAgIC8vIHNldExvY2FsZSA9IChsb2NhbGUpID0+IHRoaXMubG9jYWxlID0gbG9jYWxlO1xuXG4gICAgZ2V0TG9jYWxlID0gKCkgPT4ge1xuICAgICAgICBpZiAobG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5MT0NBTEUpKSB7XG4gICAgICAgICAgICB0aGlzLmxvY2FsZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuTE9DQUxFKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2FsZVxuICAgIH1cblxuICAgIGdldExvY2FsZVRyYW5zbGF0ZSA9ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TG9jYWxlKCkuc3BsaXQoJ18nKVswXVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRMb2NhbGUgPSBsb2NhbGUgPT4ge1xuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLkxPQ0FMRSwgbG9jYWxlKVxuICAgICAgICB0aGlzLnRyYW5zbGF0ZS51c2UobG9jYWxlLnNwbGl0KCdfJylbMF0pXG4gICAgICAgIHRoaXMubG9jYWxlID0gbG9jYWxlXG4gICAgfVxuXG4gICAgZ2V0Q2hhbm5lbCA9ICgpID0+IHtcbiAgICAgICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuQ0hBTk5FTCkpIHtcbiAgICAgICAgICAgIHRoaXMuY2hhbm5lbCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuQ0hBTk5FTClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jaGFubmVsXG4gICAgfVxuXG4gICAgcHVibGljIHNldENoYW5uZWwgPSBjaGFubmVsID0+IHtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5DSEFOTkVMLCBjaGFubmVsKVxuICAgICAgICB0aGlzLmNoYW5uZWwgPSBjaGFubmVsXG4gICAgfVxuXG4gICAgZ2V0Q2hlY2tvdXRWaWV3ID0gKCk6IENoZWNrb3V0Vmlld1R5cGUgPT4gdGhpcy5jaGVja291dFZpZXc7XG5cbiAgICBwcml2YXRlIHNldENoZWNrb3V0VmlldyA9ICh2aWV3OiBDaGVja291dFZpZXdUeXBlKSA9PiB7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWQ6IENoZWNrb3V0Vmlld1R5cGUgPSB2aWV3ID09PSAnc2luZ2xlJyA/ICdzaW5nbGUnIDogJ2xlZ2FjeSc7XG4gICAgICAgIHRoaXMuY2hlY2tvdXRWaWV3ID0gbm9ybWFsaXplZDtcbiAgICAgICAgdGhpcy5jaGVja291dFZpZXdTdWJqZWN0Lm5leHQobm9ybWFsaXplZCk7XG4gICAgfVxuXG4gICAgZ2V0VmVyc2lvbiA9ICgpID0+IHRoaXMudmVyc2lvbjtcblxuICAgIGxvZ2luRXh0cmFEYXRhID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2xpZW50X2lkOiAnZGVtb19jbGllbnQnLFxuICAgICAgICAgICAgY2xpZW50X3NlY3JldDogJ3NlY3JldF9kZW1vX2NsaWVudCcsXG4gICAgICAgICAgICBncmFudF90eXBlOiAncGFzc3dvcmQnXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc0NvbGxlY3Rpb24gPSAocGF0aCkgPT4gKC9eKFxcLz8pY29sbGVjdGlvbihcXC8/KShbXFx3XFwuXFwvXFw/XSopJC9nKS50ZXN0KHBhdGgpO1xuXG4gICAgLyoqXG4gICAgICogVXRpbGl0aWVzXG4gICAgICovXG5cbiAgICBtb2JpbGUgPSAoKSA9PiB3aW5kb3cuaW5uZXJXaWR0aCA8IDc1MDtcblxuICAgIHN0cmljdFR5cGVDaGFubmVsID0gKCkgPT4gdGhpcy5lbnYuc3RyaWN0VHlwZUNoYW5uZWwgfHwgJ2IyYjJjJztcblxuICAgIHRvRGVjaW1hbCA9ICh0b3RhbCkgPT4gKHRvdGFsIC0gTWF0aC5mbG9vcih0b3RhbCkgPT0gMCkgPyB0b3RhbCAvIDEwMCA6IHRvdGFsO1xuXG4gICAgLyoqXG4gICAgICogRWxlbWVudG9zIHBhcmEgbWFuZWpvIGRlIGxpc3RhIGRlIHJ1dGFzIHJldXRpbGl6YWJsZXNcbiAgICAgKi9cblxuICAgIGFkZFJvdXRlVG9SZXVzZSA9IChyb3V0ZTogUmVnRXhwKSA9PiByb3V0ZSAmJiB0aGlzLnJvdXRlcy5wdXNoKHJvdXRlKTtcblxuICAgIHJlbW92ZVJvdXRlVG9SZXVzZSA9IChyb3V0ZTogUmVnRXhwKSA9PiB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5yb3V0ZXMuaW5kZXhPZihyb3V0ZSk7XG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0Um91dGVzVG9SZXVzZSA9ICgpOiBSZWdFeHBbXSA9PiB0aGlzLnJvdXRlcztcblxuXG5cbiAgICAvKipcbiAgICAgKiAgQHB1YmxpYyBlamVtcGxvIGRlIHVzbyA8aW1nICpuZ0Zvcj1cImxldCBpdGVtIG9mIGNvbnN0cy5nZXRSYXRpbmdTdGFyKHByb2R1Y3QucmF0aW5nLCdhc3NldHMvaW1hZ2VzL3N0YXIucG5nJywnYXNzZXRzL2ltYWdlcy9ub3RTdGFyLnBuZycpXCIgW3NyY109XCJpdGVtXCI+XG4gICAgICogIEBkZXNjcmlwdGlvbiBmdW5jaW9uIHF1ZSBkYWRvIHVuIHZhbG9yIGVudHJlIDEgLi4gNSwgeSBzdGFyOiBub3RTdGFyOlxuICAgICAqICAgICAgKGRlYmVuIHNlciBlbCBwYXRoIGRlbCBhcmNoaXZvIGxvY2FsIGEgbGEgaW1wbGVtZW50YWNpb24pLlxuICAgICAqICAgICAgcmV0b3JuYSB1biBhcnJlZ2xvIGNvbiBjb24gbGEgdmFsb3JhY2lvbiBjb3JyZXNwb25kaWVudGUuXG4gICAgICovXG4gICAgZ2V0UmF0aW5nU3RhciA9IChyYXRpbmc6IGFueSwgc3RhcjogU3RyaW5nLCBub3RTdGFyOiBTdHJpbmcpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxldCB1cmxTdGFyID0gW107XG4gICAgICAgICAgICBsZXQgY2FudFN0YXIgPSBOdW1iZXIocmF0aW5nKSB8fCAwO1xuICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IDU7IGluZGV4KyspIHtcbiAgICAgICAgICAgICAgICB1cmxTdGFyLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIGNhbnRTdGFyID4gMFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBzdGFyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG5vdFN0YXJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGNhbnRTdGFyLS07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdXJsU3RhcjtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJnZXRSYXRpbmdTdGFyIHByb2R1am8gdW4gZXJyb3IgLT4gXCIsIGVycm9yKTtcbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqICBAcHVibGljIGVqZW1wbG8gZGUgdXNvIChrZXlwcmVzcyk9XCJpbnB1dFZhbGlkYXRpb25CeUV4cHJlc3Npb25zKCRldmVudCwnWzAtOV17MSw5fScpXCIgZW4gZWwgRE9NLlxuICAgICAqICBAZGVzY3JpcHRpb24gZnVuY2lvbiBxdWUgZGFkbyB1biBtYW5lamFuZG9yIGRlIGV2ZW50bywgeSB1bmEgZXhwcmVzaW9uIHJlZ3VsYXIgZXN0YSBlc1xuICAgICAqICAgICAgICAgIGV2YWx1YWRhIHNvYnJlIGxvcyB2YWxvcmVzIHF1ZSBlbCBtYW5lamFkb3IgZGUgZXZlbnRvcyBub3MgZW52aWEuXG4gICAgICogICAgICAgICAgRW4gZWwgY2FzbyBlbiBlbCBxdWUgc2UgZW52aWUgZWwgcGFyYW1ldHJvICdjb25kaXRpb24nIGVzdGUgcHVlZGUgc2VyIHBhcmFcbiAgICAgKiAgICAgICAgICBhbnVsYXIgZWwgZXZlbnRvIGNvbW8gY29uZGljaW9uIGFkaWNpb25hbCBhIGxhIGV2YWx1YWNpb24gZGUgbGEgZW50cmFkYS5cbiAgICAgKi9cbiAgICBpbnB1dFZhbGlkYXRpb25CeUV4cHJlc3Npb25zID0gKGUsIHBhdHJvbiwgY29uZGl0aW9uID0gbnVsbCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbGV0IHRlY2xhID0gKGRvY3VtZW50KSA/IGUua2V5Q29kZSA6IGUud2hpY2g7XG4gICAgICAgICAgICBpZiAodGVjbGEgPT0gOCkgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICBsZXQgcGF0cm9uUmVnID0gbmV3IFJlZ0V4cChwYXRyb24pXG4gICAgICAgICAgICBsZXQgdGVjbGFfZmluYWwgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHRlY2xhKTtcbiAgICAgICAgICAgIGlmIChjb25kaXRpb24gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYXRyb25SZWcudGVzdCh0ZWNsYV9maW5hbCkgJiYgY29uZGl0aW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHBhdHJvblJlZy50ZXN0KHRlY2xhX2ZpbmFsKVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcImlucHV0VmFsaWRhdGlvbkJ5RXhwcmVzc2lvbnMgcHJvZHVqbyB1biBlcnJvciAtPiBcIiwgZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKlxuICAgICAqIEBwYXJhbSBuZWVkbGVzIChhZ3VqYXMpIG9iamVjdCBjb24gY2xhdmVzIHZhbG9yIGEgZmlsdHJhclxuICAgICAqIEBwYXJhbSBoYXlzdGFjayAocGFqYXIpIG9iamVjdG8gZW4gZWwgcXVlIGJ1c2NhclxuICAgICAqXG4gICAgICogQGRlc2NyaXB0aW9uIGZ1bmNpb24gcXVlIGJ1c2NhIGVuIGVsIGhheXN0YWNrIChwYWphcikgdG9kb3MgbG9zIG9iamV0b3MgcXVlIGNvbnRlbnRhblxuICAgICAqIHRvZGFzIGxhcyBjbGF2ZXMgZGUgbG9zIG5lZWRsZXMoYWd1amFzKSBxdWUgY29udGVuZ2FuIGVsIG1pc21vIHZhbG9yXG4gICAgICovXG4gICAgY29udGFpbnNBbGwobmVlZGxlczogb2JqZWN0LCBoYXlzdGFjazogb2JqZWN0KTogYm9vbGVhbiB7XG4gICAgICAgIGxldCByZXN1bHQ6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgICAgIGlmICghIW5lZWRsZXMgJiYgISFoYXlzdGFjaykge1xuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMobmVlZGxlcykuZm9yRWFjaCh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCEoaGF5c3RhY2suaGFzT3duUHJvcGVydHkodmFsdWVbMF0pICYmIGhheXN0YWNrW3ZhbHVlWzBdXSA9PSB2YWx1ZVsxXSkpIHJlc3VsdCA9IGZhbHNlXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvcGllZGFkIHF1ZSBzZSB1dGlsaXphIHBhcmEgdG9tYXIgY29tbyBjb25maWd1cmFjacOzbiBwYXJhIGVsIHRpcG8gZGUgbW9uZWRhIHF1ZSBzZSB1dGlsaXphIGVuIGVsIHNpdGlvLlxuICAgICAqIEVzdG9zIHZhbG9yZXMgc29uIHV0aWxpemFkb3MgcGFyYSBlbCBwaXBlIGN1cnJlbmN5UHJpY2VcbiAgICAgKi9cbiAgICBwdWJsaWMgY3VycmVuY3k6IEN1cnJlbmN5Q29uZmlnID0ge1xuICAgICAgICBjb2RlOiAnQVJHJyxcbiAgICAgICAgc3ltYm9sOiAnJCcsXG4gICAgICAgIHBvc2l0aW9uOiAnTGVmdCcsXG4gICAgICAgIHdpdGhvdXREZWNpbWFsOiBmYWxzZVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFycmVnbG8gZGUgdmFsb3JlcyB1c2Fkb3MgcGFyYSBlbCBwaXBlIGN1cnJlbmN5UHJpY2VcbiAgICAgKi9cbiAgICBwdWJsaWMgY3VycmVuY3lUeXBlQ29uZmlnOiBDdXJyZW5jeUNvbmZpZ1tdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBjb2RlOiAnRVVSJyxcbiAgICAgICAgICAgIHN5bWJvbDogJ+KCrCcsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ1JpZ2h0JyxcbiAgICAgICAgICAgIHdpdGhvdXREZWNpbWFsOiBmYWxzZVxuXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvZGU6ICdBUkcnLFxuICAgICAgICAgICAgc3ltYm9sOiAnJCcsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ0xlZnQnLFxuICAgICAgICAgICAgd2l0aG91dERlY2ltYWw6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvZGU6ICdBUlMnLFxuICAgICAgICAgICAgc3ltYm9sOiAnJCcsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ0xlZnQnLFxuICAgICAgICAgICAgd2l0aG91dERlY2ltYWw6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvZGU6ICdVU0QnLFxuICAgICAgICAgICAgc3ltYm9sOiAnJCcsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ0xlZnQnLFxuICAgICAgICAgICAgd2l0aG91dERlY2ltYWw6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvZGU6ICdQWUcnLFxuICAgICAgICAgICAgc3ltYm9sOiAnR3MuJyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnTGVmdCcsXG4gICAgICAgICAgICB3aXRob3V0RGVjaW1hbDogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgY29kZTogJ1BFTicsXG4gICAgICAgICAgICBzeW1ib2w6ICdTLycsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ0xlZnQnLFxuICAgICAgICAgICAgd2l0aG91dERlY2ltYWw6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvZGU6ICdTRUsnLFxuICAgICAgICAgICAgc3ltYm9sOiAnU0VLJyxcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnUmlnaHQnLFxuICAgICAgICAgICAgd2l0aG91dERlY2ltYWw6IHRydWVcbiAgICAgICAgfSxcbiAgICBdXG5cbiAgICBwdWJsaWMgc2V0Q3VycmVuY3lUeXBlQ29uZmlnID0gKGN1cnJlbmN5VHlwZUNvbmZpZzogQ3VycmVuY3lDb25maWdbXSkgPT4ge1xuICAgICAgICB0aGlzLmN1cnJlbmN5VHlwZUNvbmZpZyA9IGN1cnJlbmN5VHlwZUNvbmZpZztcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZWVtcGxhemEgbG9zIHZhbG9yZXMgZGUgdW5hIG1vbmVkYS5cbiAgICAgKiBAcGFyYW0gY3VycmVuY3lUeXBlRmluZCBUaXBvIGRlIGN1cnJlbmN5IHF1ZSBzZSBkZXNlYSBtb2RpZmljYXJcbiAgICAgKiBAcGFyYW0gY3VzdG9tVHlwZSBMb3MgbnVldm9zIHZhbG9yZXMuIFRvZGFzIGxhcyBrZXkgc29uIG9wY2lvbmFsZXNcbiAgICAgKiBAZXhhbXBsZSBjdXN0b21UeXBlID0geyBjb2RlOiAnQVJHJywgc3ltYm9sOiAnJCcsIHBvc2l0aW9uOiAnTGVmdCcgLCB3aXRob3V0RGVjaW1hbDogZmFsc2UgfVxuICAgICAqL1xuICAgIHB1YmxpYyByZXBsYWNlQ3VycmVuY3lUeXBlQ29uZmlnID0gKGN1cnJlbmN5VHlwZUZpbmQ6IGN1cnJlbmN5VHlwZSwgY3VzdG9tVHlwZTogQ3VycmVuY3lDb25maWcpID0+IHtcbiAgICAgICAgbGV0IGN1cnJlbmN5VHlwZSA9IHRoaXMuY3VycmVuY3lUeXBlQ29uZmlnLmZpbmQodHlwZSA9PiB0eXBlLmNvZGUgPT0gY3VycmVuY3lUeXBlRmluZClcbiAgICAgICAgaWYgKGN1cnJlbmN5VHlwZSkge1xuICAgICAgICAgICAgY3VycmVuY3lUeXBlLnN5bWJvbCA9IGN1c3RvbVR5cGU/LnN5bWJvbCB8fCBjdXJyZW5jeVR5cGUuc3ltYm9sXG4gICAgICAgICAgICBjdXJyZW5jeVR5cGUuY29kZSA9IGN1c3RvbVR5cGU/LmNvZGUgfHwgY3VycmVuY3lUeXBlLmNvZGVcbiAgICAgICAgICAgIGN1cnJlbmN5VHlwZS5wb3NpdGlvbiA9IGN1c3RvbVR5cGU/LnBvc2l0aW9uIHx8IGN1cnJlbmN5VHlwZS5wb3NpdGlvblxuICAgICAgICAgICAgY3VycmVuY3lUeXBlLndpdGhvdXREZWNpbWFsID0gY3VzdG9tVHlwZT8ud2l0aG91dERlY2ltYWwgfHwgY3VycmVuY3lUeXBlLndpdGhvdXREZWNpbWFsXG4gICAgICAgIH1cbiAgICAgICAgLy9SZXZlZXIgZW4gZWwgZnV0dXJvIHNpIHNlIGVtcGllemFuIGEgYWdyZWdhciBvdHJvIHRpcG9zIGRlIG1vbmVkYXNcbiAgICAgICAgLyogZWxzZXtcbiAgICAgICAgICAgIHRoaXMuY3VycmVuY3lUeXBlQ29uZmlnLnB1c2goey4uLmN1c3RvbVR5cGUgfSlcbiAgICAgICAgfSAqL1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIGN1cnJlbmN5VHlwZUZpbmQgRGVmaW5pciBlbCBjb2RlIGRlbCB0aXBvIGRlIG1vbmVkYSBxdWUgc2UgcXVpZXJhIHV0aWxpemFyLlxuICAgICAqIFNpIGVsIHRpcG8gZXMgQ1VTVE9NIHNlIHRvbWFuIGxvcyB2YWxvcmVzIGRlbCBzZWd1bmRvIHBhcmFtZXRybyBkb25kZSBzZSBwdWVkZSBkZWZpbmlyIGxhIHNpbWJvbG9nw61hIHkgcG9zZXNpw7NuIHF1ZSBzZSBxdWllcmEuXG4gICAgICogQHBhcmFtIGN1c3RvbVR5cGUgRm9ybWF0byBkZWwgcGFyw6FtZXRybyBlamVtcGxvIHsgY29kZTogJ0FSRycsIHN5bWJvbDogJyQnLCBwb3NpdGlvbjogJ0wnICwgd2l0aG91dERlY2ltYWxzOiBmYWxzZSB9ICxcbiAgICAgKiB0b2RhcyBsYXMga2V5IHNvbiBvcGNpb25hbGVzIHkgcG9yIGRlZmVjdG8gc2UgdG9tYW4gbG9zIHZhbG9yZXMgZGVsIGVqZW1wbG8uXG4gICAgICogQHJldHVybnMgc2UgcmV0b3JuYSBsYSBjb25maWd1cmFjacOzbiBxdWUgc2Ugc2V0ZW8gYSBsYSBwcm9waWVkYWQgY3VycmVuY3kgZGVsIHNlcnZpY2lvLlxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRDdXJyZW5jeSA9IChjdXJyZW5jeVR5cGVGaW5kOiBjdXJyZW5jeVR5cGUsIGN1c3RvbVR5cGU/OiBDdXJyZW5jeUNvbmZpZykgPT4ge1xuICAgICAgICB0aGlzLmN1cnJlbmN5ID0gdGhpcy5jdXJyZW5jeVR5cGVDb25maWcuZmluZChjdCA9PiBjdC5jb2RlID09IGN1cnJlbmN5VHlwZUZpbmQudG9VcHBlckNhc2UoKSkgfHwgdGhpcy5jdXJyZW5jeVxuICAgICAgICBjdXN0b21UeXBlICYmICh0aGlzLmN1cnJlbmN5ID0geyAuLi50aGlzLmN1cnJlbmN5LCAuLi5jdXN0b21UeXBlIH0pXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbmN5O1xuICAgIH07XG5cblxuICAgIC8qKlxuICAgICAqIGRldnVlbHZlIHRydWUgc2kgZXhpc3RlIGVsIGVsZW1lbnRvIFwic2VhcmNoXCIgZW4gZWwgYXJyYXkgZGUgcGFyYW1ldHJvcyBcInBhcmFtc1wiXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcGFyYW1zIEFycmF5IGRlIHBhcmFtZXRyb3MgZW50cmUgbG9zIHF1ZSBidXNjYXJcbiAgICAgKiBAcGFyYW0gc2VhcmNoZWQgRWxlbWVudG8gcXVlIGJ1c2NhclxuICAgICAqIEBwYXJhbSBwcmVmaXggcHJlZmlqbyBkZWwgc3RyaW5nIGEgYnVzY2FyIChlamVtcGxvOiBcImxpbmtfXCIpXG4gICAgICogQHBhcmFtIHN1ZmZpeCBzdWZpam8gZGVsIHN0cmluZyBhIGJ1c2NhciAoZWplbXBsbzogXCJsaW5rX1wiKVxuICAgICAqIEBwYXJhbSBjYXNlc2Vuc2l0aXZlIGRldGVybWluYSBzaSBzZSBldmFsdWEgY29uIHNlbnNpYmlsaWRhZCBlbnRyZSBtYXl1c2N1bGEgeSBtaW51c2N1bGFcbiAgICAgKiBAcmV0dXJucyByZXRvcm5hIHRydWUgbyBmYWxzZSBzaSBzZSBlbmNvbnRybyBvIG5vIGVsIHBhcmFtZXRybyBlbiBlbCBhcnJheVxuICAgICAqL1xuICAgIHB1YmxpYyBoYXNQYXJhbXMoXG4gICAgICAgIHBhcmFtcyxcbiAgICAgICAgc2VhcmNoZWQsXG4gICAgICAgIHByZWZpeCA9ICcnLFxuICAgICAgICBzdWZmaXggPSAnJyxcbiAgICAgICAgY2FzZXNlbnNpdGl2ZSA9IGZhbHNlKTogYm9vbGVhbiB7XG5cblxuICAgICAgICByZXR1cm4gY2FzZXNlbnNpdGl2ZSA/IHBhcmFtcy5maW5kKHBhcmFtID0+IChwYXJhbS5jb2RlKS50b0xvd2VyQ2FzZSgpID09IChwcmVmaXggKyBzZWFyY2hlZCArIHN1ZmZpeCkudG9Mb3dlckNhc2UoKSB8fCAocGFyYW0uY29kZSkudG9Mb3dlckNhc2UoKSA9PSAoc2VhcmNoZWQpLnRvTG93ZXJDYXNlKCkpXG4gICAgICAgICAgICA6IHBhcmFtcy5maW5kKHBhcmFtID0+IHBhcmFtLmNvZGUgPT0gKHByZWZpeCArIHNlYXJjaGVkICsgc3VmZml4KSB8fCBwYXJhbS5jb2RlID09IHNlYXJjaGVkKVxuXG4gICAgfTtcblxuICAgIHB1YmxpYyBtb2RpZnlDaGFubmVsQ29uZmlnID0gY2hhbm5lbENvbmZpZyA9PiB7XG4gICAgICAgIGlmIChjaGFubmVsQ29uZmlnLmNoYW5uZWwgfHwgY2hhbm5lbENvbmZpZy5jb2RlKVxuICAgICAgICAgICAgdGhpcy5zZXRDaGFubmVsKGNoYW5uZWxDb25maWcuY2hhbm5lbCB8fCBjaGFubmVsQ29uZmlnLmNvZGUpXG5cbiAgICAgICAgaWYgKGNoYW5uZWxDb25maWcubG9jYWxlIHx8IChjaGFubmVsQ29uZmlnLmxvY2FsZXMgJiYgY2hhbm5lbENvbmZpZy5sb2NhbGVzLmNvZGUpKVxuICAgICAgICAgICAgdGhpcy5zZXRMb2NhbGUoY2hhbm5lbENvbmZpZy5sb2NhbGUgfHwgY2hhbm5lbENvbmZpZy5sb2NhbGVzLmNvZGUpXG5cbiAgICAgICAgaWYgKGNoYW5uZWxDb25maWcuY3VycmVuY3kgfHwgY2hhbm5lbENvbmZpZy5iYXNlQ3VycmVuY3kpXG4gICAgICAgICAgICB0aGlzLnNldEN1cnJlbmN5KGNoYW5uZWxDb25maWcuY3VycmVuY3kgfHwgY2hhbm5lbENvbmZpZy5iYXNlQ3VycmVuY3kpXG5cbiAgICAgICAgaWYgKGNoYW5uZWxDb25maWcuY2hlY2tvdXRWaWV3ICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0Q2hlY2tvdXRWaWV3KGNoYW5uZWxDb25maWcuY2hlY2tvdXRWaWV3IGFzIENoZWNrb3V0Vmlld1R5cGUpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2hhbm5lbENvbmZpZztcbiAgICB9XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFNlIHV0aWxpemEgcGFyYSBjb25maWd1cmFyIGxvcyBmaWx0cm9zIHBvciBkZWZlY3RvIHF1ZSBzZSBhcGxpY2FyYW4gZW4gbGEgc2VjY2lvbiAnQ29sbGVjdGlvbidcbiAgICAgKiBjdWFuZG8gc2UgaW5ncmVzYSBhIGxhIG1pc21hLlxuICAgICAqL1xuICAgIHByaXZhdGUgZGVmYXVsdEZpbHRlcnM6IERlZmF1bHRGaWx0ZXJbXSA9IFtdXG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gU2V0dGVhIGVsIHZhbG9yIGRlIGxhIHZhcmlhYmxlIGRlZmF1bEZpbHRlcnMuXG4gICAgICogQHBhcmFtIGZpbHRlcnNcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0RGVmYXVsdEZpbHRlcnMgPSAoZmlsdGVyczogRGVmYXVsdEZpbHRlcltdKSA9PiB7XG4gICAgICAgIHRoaXMuZGVmYXVsdEZpbHRlcnMgPSBmaWx0ZXJzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXREZWZhdWx0RmlsdGVycyA9ICgpOiBEZWZhdWx0RmlsdGVyW10gPT4gdGhpcy5kZWZhdWx0RmlsdGVyc1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFNlIHV0aWxpemEgcGFyYSBjb25maWd1cmFyIHRhbnRvIGxvcyBmaWx0cm9zIHBvciBkZWZlY3RvcyBxdWUgeWEgc2VyYW4gYXBsaWNhZG9zLCBjb21vIHRhbWJpZW5cbiAgICAgKiBsb3MgZmlsdHJvcyBxdWUgc2UgbW9zdHJhcmFuIGVuIGxhIHNlY2Npb24gY29sbGVjdGlvbiwgc3Ugb3JkZW4sIGV0Yy5cbiAgICAgKi9cbiAgICBwcml2YXRlIGZpbHRlckNvbmZpZzogRmlsdGVyQ29uZmlnID0ge1xuICAgICAgICBkZWZhdWx0RmlsdGVyczogW10sXG4gICAgICAgIGZpbHRlcnM6IFsnY2F0ZWdvcnknLCAnYXR0cmlidXRlcycsICdkeW5hbWljcycsICdwcmljZV9yYW5nZSddXG4gICAgfVxuXG4gICAgcHVibGljIHNldEZpbHRlckNvbmZpZyA9IChmaWx0ZXJDb25maWc6IEZpbHRlckNvbmZpZykgPT4ge1xuICAgICAgICBmaWx0ZXJDb25maWcuZGVmYXVsdEZpbHRlcnMgPyB0aGlzLmZpbHRlckNvbmZpZy5kZWZhdWx0RmlsdGVycyA9IGZpbHRlckNvbmZpZy5kZWZhdWx0RmlsdGVycyA6IG51bGxcbiAgICAgICAgZmlsdGVyQ29uZmlnLmZpbHRlcnMgPyB0aGlzLmZpbHRlckNvbmZpZy5maWx0ZXJzID0gZmlsdGVyQ29uZmlnLmZpbHRlcnMgOiBudWxsXG4gICAgfVxuXG4gICAgcHVibGljIGdldEZpbHRlckNvbmZpZyA9ICgpID0+IHRoaXMuZmlsdGVyQ29uZmlnLmZpbHRlcnNcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBjb250aWVuZSB1biBhcnJlZ2xvIGRlIHN0cmluZyBjdXlvIGNvbnRlbmlkbyBzb24gbG9zIGNvZGlnb3MgZGUgbG9zIHBhaXNlcy5cbiAgICAgKiBAZXhhbXBsZSBbJ0FSJywnRVMnLCdHQiddXG4gICAgICovXG4gICAgcHJpdmF0ZSBjb3VudHJpZXM6IHN0cmluZ1tdID0gW11cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gY29udGllbmUgdW4gYXJyZWdsbyBkZSBzdHJpbmcgY3V5byBjb250ZW5pZG8gc29uIGxvcyBjb2RpZ29zIGRlIGxvcyBwYWlzZXMgYSBleGNsdWlyLlxuICAgICAqIEBleGFtcGxlIFsnR0InXVxuICAgICAqL1xuICAgIHB1YmxpYyBleGNsdWRlZENvdW50cmllczogc3RyaW5nW10gPSBbXVxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIGNvdW50cmllcyBkZWJlIGNvbnRlbmVyIGxvcyBjb2RpZ29zIGRlIGxvcyBwYWlzZXMgcXVlIHNlIHF1aWVyZSBtb3N0cmFyXG4gICAgICogQGV4YW1wbGUgWydBUicsJ0VTJywnR0InXVxuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgcHVibGljIHNldENvdW50cmllcyA9IChjb3VudHJpZXM6IHN0cmluZ1tdKSA9PiB0aGlzLmNvdW50cmllcyA9IGNvdW50cmllcztcblxuICAgIHB1YmxpYyBnZXRDb3VudHJpZXMgPSAoKSA9PiB0aGlzLmNvdW50cmllcztcblxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIGVzdGEgdmFyaWFibGUgc2UgdXRpbGl6YSBwYXJhIGNvbmZpZ3VyYXIgbG9zIHBhcmFtZXRyb3MgY3VhbmRvIHNlIGRlc2VhIG1vc3RyYXJcbiAgICAgKiB2YXJpYW50ZXMgZWwgbGlzdGFkbyBkZSBwcm9kdWN0b3MuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9dHlwZSB0aXBvIGRlIG9wdGlvbnNcbiAgICAgKiBAcGFyYW0ge3N0cmluZ31jb2RlIGNvZGlnbyBkZSBvcHRpb25zXG4gICAgICogQHBhcmFtIHtib29sZWFufWRlZmF1bHRGaXJzdE9wdGlvbiBgdHJ1ZWAgdG9tYSBlbCBwcmltZXIgb3B0aW9uIGRlbCBwcm9kdWN0byBlbiBnZW5lcmFsXG4gICAgICogQHBhcmFtIHtib29sZWFufWNoZWNrSWZTdG9jayBgdHJ1ZWAgc2UgcmVhbGl6YSB1biBjaGVxdWVvIGRlIHNpIGxhIHZhcmlhbnRlIHRpZW5lIHN0b2NrIHBhcmEgbW9zdHJhcmxhXG4gICAgICogQGV4YW1wbGUgIGBgYGphdmFzY3JpcHRcbiAgICAgKiB7XG4gICAgICAgIHR5cGU6ICdjb2xvcicsXG4gICAgICAgIGNvZGU6ICdjb2xvcicsXG4gICAgICAgIGRlZmF1bHRGaXJzdE9wdGlvbjogZmFsc2UgLFxuICAgICAgICBjaGVja0lmU3RvY2s6dHJ1ZVxuICAgICAgICB9IGBgYFxuICAgICAqL1xuICAgIHByaXZhdGUgcGFyYW1zUHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudDogUGFyYW1zUHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudCA9IHtcbiAgICAgICAgdHlwZTogJ2NvbG9yJyxcbiAgICAgICAgY29kZTogJ2NvbG9yJyxcbiAgICAgICAgZGVmYXVsdEZpcnN0T3B0aW9uOiBmYWxzZSxcbiAgICAgICAgY2hlY2tJZlN0b2NrOiB0cnVlXG4gICAgfVxuXG4gICAgc2V0UGFyYW1zUHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudCA9ICh2YWx1ZTogUGFyYW1zUHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudCkgPT4ge1xuICAgICAgICB0aGlzLnBhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQgPSB7XG4gICAgICAgICAgICAuLi50aGlzLnBhcmFtc1Byb2R1Y3RzV2l0aFVuaXF1ZVZhcmlhbnQsXG4gICAgICAgICAgICAuLi52YWx1ZVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0UGFyYW1zUHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudCA9ICgpID0+IHRoaXMucGFyYW1zUHJvZHVjdHNXaXRoVW5pcXVlVmFyaWFudFxuXG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gc2UgdXRpbGl6YSBwYXJhIGNvbmZpZ3VyYXIgcXVlIGZpbHRyb3MgZGVsIHRpcG8gYFNvcnRGaWx0ZXJgIHNlIHF1aWVyZSBtb3N0cmFyIGVuIGxhIHZpc3RhLlxuICAgICAqIFNlIHVzYW4gbG9zIGNvZGlnbyBkZSBsb3MgZmlsdHJvcyBwYXJhIGluZGljYXIgY3VhbGVzIHNlIGRlYmVuIG1vc3RyYXIuXG4gICAgICovXG4gICAgcHJpdmF0ZSBzb3J0RmlsdGVyczogc3RyaW5nW10gPSBbJ3ByaWNlJywgJ29yZGVyLWFscGgnLCAncmVjZW50J11cblxuICAgIC8qKlxuICAgICAqXG4gICAgICogQHBhcmFtIGZpbHRlcnNDb2RlIGFycmVnbG8gZGUgc3RyaW5ncyBjb24gbG9zIGNvZGlnb3MgZGUgbG9zIGZpbHRyb3MuXG4gICAgICogU2kgc2UgbGUgcGFzYSBlbCBwYXJhbWV0cm8gKiphbGwqKiBlc3RlIG1vc3RyYXJhIHRvZG9zLlxuICAgICAqIEBleGFtcGxlIHByaWNlIHwgb3JkZXItYWxwaCB8IHJlY2VudCB8IHVwZGF0ZSB8IGFsbFxuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgc2V0U29ydEZpbHRlcnMgPSAoZmlsdGVyc0NvZGU6IHN0cmluZ1tdID0gWydhbGwnXSkgPT4gdGhpcy5zb3J0RmlsdGVycyA9IGZpbHRlcnNDb2RlO1xuXG4gICAgZ2V0U29ydEZpbHRlcnMgPSAoKSA9PiB0aGlzLnNvcnRGaWx0ZXJzO1xuXG4gICAgcHJpdmF0ZSBwb3N0YWxDb2RlUGF0dGVybnM6IHsgW2tleTogc3RyaW5nXTogeyBwYXR0ZXJuOiBSZWdFeHAsIGVycm9yS2V5OiBzdHJpbmcgfSB9ID0ge1xuICAgICAgICAnQVInOiB7IHBhdHRlcm46IC9eWzAtOV17NH0kLywgZXJyb3JLZXk6IFwicG9zdGFsLWNvZGUtcGF0dGVybi1lcnJvci5hclwiIH0sXG4gICAgICAgICdVWSc6IHsgcGF0dGVybjogL15bMC05XXs1fSQvLCBlcnJvcktleTogXCJwb3N0YWwtY29kZS1wYXR0ZXJuLWVycm9yLnV5XCIgfSxcbiAgICAgICAgJ0dCJzogeyBwYXR0ZXJuOiAvXltBLVpdezEsMn1bMC05XVtBLVowLTldP1xccz9bMC05XVtBLVpdezJ9JC8sIGVycm9yS2V5OiBcInBvc3RhbC1jb2RlLXBhdHRlcm4tZXJyb3IuZ2JcIiB9LFxuICAgICAgICAnRVMnOiB7IHBhdHRlcm46IC9eKD86MFsxLTldfFsxLTRdXFxkfDVbMC0yXSlcXGR7M30kLywgZXJyb3JLZXk6IFwicG9zdGFsLWNvZGUtcGF0dGVybi1lcnJvci5lc1wiIH0sXG4gICAgICAgICdCUic6IHsgcGF0dGVybjogL15bMC05XXs1fS1bMC05XXszfSQvLCBlcnJvcktleTogXCJwb3N0YWwtY29kZS1wYXR0ZXJuLWVycm9yLmJyXCIgfSxcbiAgICAgICAgJ0ZSJzogeyBwYXR0ZXJuOiAvXlswLTldezV9JC8sIGVycm9yS2V5OiBcInBvc3RhbC1jb2RlLXBhdHRlcm4tZXJyb3IuZnJcIiB9LFxuICAgICAgICAnUFQnOiB7IHBhdHRlcm46IC9eWzAtOV17NH0tWzAtOV17M30kLywgZXJyb3JLZXk6IFwicG9zdGFsLWNvZGUtcGF0dGVybi1lcnJvci5wdFwiIH0sXG4gICAgfTtcblxuICAgIGdldFBvc3RhbENvZGVQYXR0ZXJuKGNvdW50cnlDb2RlOiBzdHJpbmcpOiB7IHBhdHRlcm46IFJlZ0V4cCwgZXJyb3JLZXk6IHN0cmluZyB9IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9zdGFsQ29kZVBhdHRlcm5zW2NvdW50cnlDb2RlXSB8fCB7IHBhdHRlcm46IC9eW0EtWmEtejAtOVxcc1xcLV0rJC8sIGVycm9yS2V5OiBcInBvc3RhbC1jb2RlLXBhdHRlcm4tZXJyb3IuZGVmYXVsdFwiIH07XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/** Identifica las rutas del core que deben salir al inicio tras reemplazar un token inactivo. */
|
|
2
|
+
export const cartBootstrapRecoveryRoute = (url) => {
|
|
3
|
+
const path = (url || '').split(/[?#]/)[0].replace(/\/+$/, '') || '/';
|
|
4
|
+
if (path === '/cart')
|
|
5
|
+
return 'cart';
|
|
6
|
+
if (path === '/checkout' || path === '/cart/checkout')
|
|
7
|
+
return 'checkout';
|
|
8
|
+
return null;
|
|
9
|
+
};
|
|
10
|
+
/** Ejecuta la navegación solo desde la ruta core correspondiente al consumidor. */
|
|
11
|
+
export const navigateHomeAfterCartBootstrapRecovery = (url, expectedRoute, consumeRecovery, navigateHome) => {
|
|
12
|
+
if (cartBootstrapRecoveryRoute(url) !== expectedRoute)
|
|
13
|
+
return false;
|
|
14
|
+
if (!consumeRecovery())
|
|
15
|
+
return false;
|
|
16
|
+
navigateHome();
|
|
17
|
+
return true;
|
|
18
|
+
};
|
|
19
|
+
/** Invalida el estado local y sale únicamente de una ruta de checkout. */
|
|
20
|
+
export const handleInvalidatedCheckoutNavigation = (url, invalidateCheckout, navigateHome) => {
|
|
21
|
+
if (cartBootstrapRecoveryRoute(url) !== 'checkout')
|
|
22
|
+
return false;
|
|
23
|
+
invalidateCheckout();
|
|
24
|
+
navigateHome();
|
|
25
|
+
return true;
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FydC1ib290c3RyYXAtbmF2aWdhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWVhc3ljb21tZXJjZS8iLCJzb3VyY2VzIjpbImxpYi9lYy1jb21wb25lbnQvY2FydC1ib290c3RyYXAtbmF2aWdhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxpR0FBaUc7QUFDakcsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxHQUFXLEVBQThCLEVBQUU7SUFDbEYsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDO0lBQ3JFLElBQUksSUFBSSxLQUFLLE9BQU87UUFBRSxPQUFPLE1BQU0sQ0FBQztJQUNwQyxJQUFJLElBQUksS0FBSyxXQUFXLElBQUksSUFBSSxLQUFLLGdCQUFnQjtRQUFFLE9BQU8sVUFBVSxDQUFDO0lBQ3pFLE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVGLG1GQUFtRjtBQUNuRixNQUFNLENBQUMsTUFBTSxzQ0FBc0MsR0FBRyxDQUNsRCxHQUFXLEVBQ1gsYUFBd0QsRUFDeEQsZUFBOEIsRUFDOUIsWUFBdUIsRUFDaEIsRUFBRTtJQUNULElBQUksMEJBQTBCLENBQUMsR0FBRyxDQUFDLEtBQUssYUFBYTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQ3BFLElBQUksQ0FBQyxlQUFlLEVBQUU7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUNyQyxZQUFZLEVBQUUsQ0FBQztJQUNmLE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVGLDBFQUEwRTtBQUMxRSxNQUFNLENBQUMsTUFBTSxtQ0FBbUMsR0FBRyxDQUMvQyxHQUFXLEVBQ1gsa0JBQThCLEVBQzlCLFlBQXVCLEVBQ2hCLEVBQUU7SUFDVCxJQUFJLDBCQUEwQixDQUFDLEdBQUcsQ0FBQyxLQUFLLFVBQVU7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUNqRSxrQkFBa0IsRUFBRSxDQUFDO0lBQ3JCLFlBQVksRUFBRSxDQUFDO0lBQ2YsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgQ2FydEJvb3RzdHJhcFJlY292ZXJ5Um91dGUgPSAnY2FydCcgfCAnY2hlY2tvdXQnIHwgbnVsbDtcblxuLyoqIElkZW50aWZpY2EgbGFzIHJ1dGFzIGRlbCBjb3JlIHF1ZSBkZWJlbiBzYWxpciBhbCBpbmljaW8gdHJhcyByZWVtcGxhemFyIHVuIHRva2VuIGluYWN0aXZvLiAqL1xuZXhwb3J0IGNvbnN0IGNhcnRCb290c3RyYXBSZWNvdmVyeVJvdXRlID0gKHVybDogc3RyaW5nKTogQ2FydEJvb3RzdHJhcFJlY292ZXJ5Um91dGUgPT4ge1xuICAgIGNvbnN0IHBhdGggPSAodXJsIHx8ICcnKS5zcGxpdCgvWz8jXS8pWzBdLnJlcGxhY2UoL1xcLyskLywgJycpIHx8ICcvJztcbiAgICBpZiAocGF0aCA9PT0gJy9jYXJ0JykgcmV0dXJuICdjYXJ0JztcbiAgICBpZiAocGF0aCA9PT0gJy9jaGVja291dCcgfHwgcGF0aCA9PT0gJy9jYXJ0L2NoZWNrb3V0JykgcmV0dXJuICdjaGVja291dCc7XG4gICAgcmV0dXJuIG51bGw7XG59O1xuXG4vKiogRWplY3V0YSBsYSBuYXZlZ2FjacOzbiBzb2xvIGRlc2RlIGxhIHJ1dGEgY29yZSBjb3JyZXNwb25kaWVudGUgYWwgY29uc3VtaWRvci4gKi9cbmV4cG9ydCBjb25zdCBuYXZpZ2F0ZUhvbWVBZnRlckNhcnRCb290c3RyYXBSZWNvdmVyeSA9IChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBleHBlY3RlZFJvdXRlOiBFeGNsdWRlPENhcnRCb290c3RyYXBSZWNvdmVyeVJvdXRlLCBudWxsPixcbiAgICBjb25zdW1lUmVjb3Zlcnk6ICgpID0+IGJvb2xlYW4sXG4gICAgbmF2aWdhdGVIb21lOiAoKSA9PiBhbnlcbik6IGJvb2xlYW4gPT4ge1xuICAgIGlmIChjYXJ0Qm9vdHN0cmFwUmVjb3ZlcnlSb3V0ZSh1cmwpICE9PSBleHBlY3RlZFJvdXRlKSByZXR1cm4gZmFsc2U7XG4gICAgaWYgKCFjb25zdW1lUmVjb3ZlcnkoKSkgcmV0dXJuIGZhbHNlO1xuICAgIG5hdmlnYXRlSG9tZSgpO1xuICAgIHJldHVybiB0cnVlO1xufTtcblxuLyoqIEludmFsaWRhIGVsIGVzdGFkbyBsb2NhbCB5IHNhbGUgw7puaWNhbWVudGUgZGUgdW5hIHJ1dGEgZGUgY2hlY2tvdXQuICovXG5leHBvcnQgY29uc3QgaGFuZGxlSW52YWxpZGF0ZWRDaGVja291dE5hdmlnYXRpb24gPSAoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgaW52YWxpZGF0ZUNoZWNrb3V0OiAoKSA9PiB2b2lkLFxuICAgIG5hdmlnYXRlSG9tZTogKCkgPT4gYW55XG4pOiBib29sZWFuID0+IHtcbiAgICBpZiAoY2FydEJvb3RzdHJhcFJlY292ZXJ5Um91dGUodXJsKSAhPT0gJ2NoZWNrb3V0JykgcmV0dXJuIGZhbHNlO1xuICAgIGludmFsaWRhdGVDaGVja291dCgpO1xuICAgIG5hdmlnYXRlSG9tZSgpO1xuICAgIHJldHVybiB0cnVlO1xufTtcbiJdfQ==
|