ng-easycommerce 0.1.1 → 1.1.2
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 +4 -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 +84 -20
- 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/ec-component/account-ec/order-ec/order-ec.component.js +2 -2
- package/esm2015/lib/ec-component/checkout-ec/checkout-ec.component.js +6 -2
- package/esm2015/lib/ec-component/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.js +6 -2
- package/esm2015/lib/ec-component/checkout-ec/payment-ec/payment-ec.component.js +24 -9
- package/esm2015/lib/ec-component/checkout-ec/payment-ec-single/payment-ec-single.component.js +11 -3
- package/esm2015/lib/interfaces/checkout-data.js +1 -1
- package/esm2015/lib/services/cart.service.js +9 -1
- package/esm2015/lib/services/checkout/checkout.service.js +3 -1
- package/esm2015/lib/utils/order-util.service.js +22 -2
- package/esm5/lib/ec-component/account-ec/order-ec/order-ec.component.js +2 -2
- package/esm5/lib/ec-component/checkout-ec/checkout-ec.component.js +6 -2
- package/esm5/lib/ec-component/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.js +6 -2
- package/esm5/lib/ec-component/checkout-ec/payment-ec/payment-ec.component.js +29 -14
- package/esm5/lib/ec-component/checkout-ec/payment-ec-single/payment-ec-single.component.js +11 -3
- package/esm5/lib/interfaces/checkout-data.js +1 -1
- package/esm5/lib/services/cart.service.js +13 -1
- package/esm5/lib/services/checkout/checkout.service.js +3 -2
- package/esm5/lib/utils/order-util.service.js +22 -2
- package/fesm2015/ng-easycommerce.js +75 -14
- package/fesm2015/ng-easycommerce.js.map +1 -1
- package/fesm5/ng-easycommerce.js +84 -20
- package/fesm5/ng-easycommerce.js.map +1 -1
- package/lib/ec-component/checkout-ec/checkout-ec.component.d.ts +1 -1
- package/lib/ec-component/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.d.ts +1 -1
- package/lib/ec-component/checkout-ec/payment-ec/payment-ec.component.d.ts +3 -0
- package/lib/ec-component/checkout-ec/payment-ec-single/payment-ec-single.component.d.ts +3 -0
- package/lib/interfaces/checkout-data.d.ts +6 -1
- package/lib/services/cart.service.d.ts +3 -0
- package/lib/utils/order-util.service.d.ts +1 -0
- package/ng-easycommerce.metadata.json +1 -1
- package/package.json +1 -1
|
@@ -289,6 +289,7 @@ var CheckoutService = /** @class */ (function () {
|
|
|
289
289
|
var summary = _this.cartService && _this.cartService.getCartSummaryPricePresentation
|
|
290
290
|
? _this.cartService.getCartSummaryPricePresentation(cart, undefined, true)
|
|
291
291
|
: null;
|
|
292
|
+
var paymentMethodAdjustment = _this.orderUtils.getPaymentMethodAdjustment(cart);
|
|
292
293
|
if (((_a = summary) === null || _a === void 0 ? void 0 : _a.source) === 'linePricing') {
|
|
293
294
|
var result_1 = __spread([
|
|
294
295
|
{ type: 'productsBeforeDiscounts', name: 'products-before-discounts', amount: summary.productsBeforeDiscounts }
|
|
@@ -306,7 +307,7 @@ var CheckoutService = /** @class */ (function () {
|
|
|
306
307
|
? [{ type: 'clientTaxes', name: 'clientTaxes', amount: summary.clientTaxes }]
|
|
307
308
|
: []), (summary.shipping !== null
|
|
308
309
|
? [{ type: 'shipment', name: 'shipment', amount: summary.shipping }]
|
|
309
|
-
: []), [
|
|
310
|
+
: []), (paymentMethodAdjustment ? [paymentMethodAdjustment] : []), [
|
|
310
311
|
{ type: 'total', name: 'total', amount: summary.total }
|
|
311
312
|
]);
|
|
312
313
|
_this.asociatedDataSubject.next(result_1);
|
|
@@ -397,4 +398,4 @@ var CheckoutService = /** @class */ (function () {
|
|
|
397
398
|
return CheckoutService;
|
|
398
399
|
}());
|
|
399
400
|
export { CheckoutService };
|
|
400
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWVhc3ljb21tZXJjZS8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9jaGVja291dC9jaGVja291dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbkYsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRW5ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU5QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBUSxNQUFNLGdCQUFnQixDQUFDO0FBQzFELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7O0FBS2xEO0lB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QWxVRDtDQWtVQyxBQTdTRCxJQTZTQztTQTdTWSxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2FwaS9jb25uZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FydFNlcnZpY2UgfSBmcm9tICcuLi9jYXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vY29yZS5jb25zdHMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBSZXBsYXlTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBmb3JrSm9pbiwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFN0ZXBJLCBTdGVwVHlwZUkgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3N0ZXAnO1xuaW1wb3J0IHsgU3RlcCB9IGZyb20gJy4uLy4uL2NsYXNzZXMvY2hlY2tvdXQvc3RlcCc7XG5pbXBvcnQgeyBDaGVja291dERhdGEsIENoZWNrb3V0RGF0YVR5cGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2NoZWNrb3V0LWRhdGEnO1xuaW1wb3J0IHsgT3JkZXJVdGlsaXR5U2VydmljZSB9IGZyb20gJy4uLy4uL3V0aWxzL29yZGVyLXV0aWwuc2VydmljZSc7XG5pbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlIH0gZnJvbSAnLi4vYW5hbHl0aWNzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlciB9IGZyb20gJy4uLy4uL2NsYXNzZXMvdXNlcic7XG5pbXBvcnQgeyBFcnJvckhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi9lcnJvci1oYW5kbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlsdGVyLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3V0aWxzL3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgSXBTZXJ2aWNlIH0gZnJvbSAnLi4vaXAtYWRkcmVzcy5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDaGVja291dFNlcnZpY2UgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgYmFzZUFwaSA9ICgpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJy9jaGVja291dC8nICsgdGhpcy5jYXJ0U2VydmljZS5nZXRDYXJ0VG9rZW4oKTtcbiAgICBnZXRQYXltZW50TWV0aG9kc0FwaSA9ICgpID0+IHRoaXMuYmFzZUFwaSgpICsgJy9wYXltZW50JztcbiAgICBwdXRBZGRyZXNzQXBpID0gKCkgPT4gdGhpcy5iYXNlQXBpKCkgKyAnL2FkZHJlc3MnO1xuICAgIHB1dFBheW1lbnRBcGkgPSAobWV0aG9kKSA9PiB0aGlzLmJhc2VBcGkoKSArICcvcGF5bWVudC8nICsgbWV0aG9kO1xuICAgIGNvbXBsZXRlQXBpID0gKCkgPT4gdGhpcy5iYXNlQXBpKCkgKyAnL2NvbXBsZXRlJztcbiAgICBwZXJzaXN0U2hpcG1lbnRBcGkgPSAoKSA9PiAnJztcbiAgICBnZXRQcmVmZXJlbmNlQXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnL21lcmNhZG8tcGFnby8nICsgdGhpcy5jYXJ0U2VydmljZS5nZXRDYXJ0VG9rZW4oKSArICcvcHJlZmVyZW5jZSc7XG4gICAgZ2V0SGFzUHVyY2hhc2VDb25kaXRpb25zID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnL2NhcnRzLycgKyB0aGlzLmNhcnRTZXJ2aWNlLmdldENhcnRUb2tlbigpICsgJy9oYXNfcHVyY2hhc2VfY29uZGl0aW9ucyc7XG5cbiAgICBwcml2YXRlIGNhbkNoZWNrb3V0U3ViamVjdCA9IG5ldyBSZXBsYXlTdWJqZWN0PGJvb2xlYW4+KCk7XG4gICAgcHJpdmF0ZSBvblJlYWR5U3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gICAgcHJpdmF0ZSBzdGF0ZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFN0ZXBbXT4obnVsbCk7XG4gICAgcHJpdmF0ZSBwYXltZW50TWV0aG9kc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueVtdPihbXSk7XG4gICAgcHJpdmF0ZSBsb2FkaW5nU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHByaXZhdGUgb3JkZXJTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpO1xuICAgIHByaXZhdGUgYXNvY2lhdGVkRGF0YVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENoZWNrb3V0RGF0YVtdPihudWxsKTtcbiAgICBwcml2YXRlIG9yZGVyOiBhbnk7XG4gICAgcHJpdmF0ZSBjaGVja291dF9kYXRhOiBhbnkgPSB7fTtcbiAgICBwdWJsaWMgdG90YWw7XG4gICAgcHJpdmF0ZSBjYXJ0TG9jYWw7XG4gICAgcHJpdmF0ZSB1c2VyOiBVc2VyO1xuXG4gICAgcHVibGljIG9yZGVyJCA9IHRoaXMub3JkZXJTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHB1YmxpYyBzdGF0ZSQgPSB0aGlzLnN0YXRlU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICBwdWJsaWMgbG9hZGluZyQgPSB0aGlzLmxvYWRpbmdTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHB1YmxpYyBjYW5DaGVja291dCQgPSB0aGlzLmNhbkNoZWNrb3V0U3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICBwdWJsaWMgYXNvY2lhdGVkRGF0YSQgPSB0aGlzLmFzb2NpYXRlZERhdGFTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHB1YmxpYyBvblJlYWR5JCA9IHRoaXMub25SZWFkeVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgcHVibGljIHBheW1lbnRNZXRob2RzJCA9IHRoaXMucGF5bWVudE1ldGhvZHNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25uZWN0aW9uOiBDb25uZWN0aW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjYXJ0U2VydmljZTogQ2FydFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY29uc3RzOiBDb25zdGFudHMsXG4gICAgICAgIHByaXZhdGUgdG9hc3RyU2VydmljZTogVG9hc3RTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIG9yZGVyVXRpbHM6IE9yZGVyVXRpbGl0eVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgYW5hbHl0aWNzU2VydmljZTogQW5hbHl0aWNzU2VydmljZSxcbiAgICAgICAgcHVibGljIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgcHJpdmF0ZSBlcnJvckhhbmRsZXI6IEVycm9ySGFuZGxlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgaXBTZXJ2aWNlOiBJcFNlcnZpY2UpIHtcblxuICAgICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLmNhcnRTZXJ2aWNlLmNhcnRJdGVtcywgdGhpcy5jYXJ0U2VydmljZS5sb2FkaW5nXSkuc3Vic2NyaWJlKChbaXRlbXMsIGxvYWRpbmddKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWxvYWRpbmcgJiYgaXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FuQ2hlY2tvdXRTdWJqZWN0Lm5leHQodHJ1ZSlcbiAgICAgICAgICAgICAgICB0aGlzLmNhcnRTZXJ2aWNlLmdldFRvdGFsQW1vdW50KCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG90YWwgPSByZXM7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSlcbiAgICAgICAgdGhpcy5jYXJ0U2VydmljZS5jYXJ0LnN1YnNjcmliZShjYXJ0ID0+IGNhcnQgJiYgKHRoaXMuY2FydExvY2FsID0gY2FydCkgJiYgdGhpcy51cGRhdGVBc29jaWF0ZWREYXRhKGNhcnQpKTtcbiAgICAgICAgdGhpcy5vcmRlciQuc3Vic2NyaWJlKG9yZGVyID0+IG9yZGVyICYmIHRoaXMudXBkYXRlQXNvY2lhdGVkRGF0YShvcmRlcikpXG4gICAgICAgIHRoaXMuYXV0aFNlcnZpY2UuZ2V0VXNlclByb2ZpbGUoKS5zdWJzY3JpYmUodXNlciA9PiB0aGlzLnVzZXIgPSB1c2VyKVxuICAgICAgICB0aGlzLmVycm9ySGFuZGxlci5lcnJvciQucGlwZShmaWx0ZXIocmVzID0+IHJlcyAhPSBudWxsKSkuc3Vic2NyaWJlKFxuICAgICAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzLmNvZGUgPT0gJ291dF9vZl9zdG9jaycgfHwgcmVzLmNvZGUgPT0gJ2l0ZW1zX3dpdGhfcHJvZHVjdF9vcl9wcm9kdWN0X3ZhcmlhbnRfbm90X2VuYWJsZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9hc3RyU2VydmljZS5zaG93KCdyZWRpcmVjdC1jYXJ0JylcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvY2FydCcpXG4gICAgICAgICAgICAgICAgICAgIH0sIDIwMDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgIH1cblxuICAgIHVwZGF0ZU9yZGVyID0gKG9yZGVyKSA9PiBvcmRlciAmJiB0aGlzLm9yZGVyU3ViamVjdC5uZXh0KG9yZGVyKTtcblxuICAgIHNldENoZWNrb3V0Tm90ZXMgPSAobm90ZXM6IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLmNoZWNrb3V0X2RhdGEubm90ZXMgPSBub3RlcyB8fCAnJztcbiAgICB9XG5cbiAgICBnZXRDaGVja291dE5vdGVzID0gKCkgPT4gdGhpcy5jaGVja291dF9kYXRhLm5vdGVzIHx8ICcnO1xuXG4gICAgc2V0UGF5bWVudE1ldGhvZHMgPSAobWV0aG9kczogYW55W10pID0+IHtcbiAgICAgICAgdGhpcy5wYXltZW50TWV0aG9kc1N1YmplY3QubmV4dChtZXRob2RzIHx8IFtdKTtcbiAgICB9XG5cbiAgICBwcmVmZXRjaFBheW1lbnRNZXRob2RzID0gYXN5bmMgKCkgPT5cbiAgICAgICAgdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLmdldFBheW1lbnRNZXRob2RzQXBpKCkpLnRvUHJvbWlzZSgpLnRoZW4oXG4gICAgICAgICAgICByZXMgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1ldGhvZHMgPSByZXMucGF5bWVudHM/Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICA/IE9iamVjdC5rZXlzKHJlcy5wYXltZW50c1swXS5tZXRob2RzKS5tYXAoa2V5ID0+IHJlcy5wYXltZW50c1swXS5tZXRob2RzW2tleV0pXG4gICAgICAgICAgICAgICAgICAgIDogW107XG4gICAgICAgICAgICAgICAgaWYgKG1ldGhvZHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGF5bWVudE1ldGhvZHNTdWJqZWN0Lm5leHQobWV0aG9kcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBtZXRob2RzO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVyciA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdHJTZXJ2aWNlLnNob3coJ29wZXJhdGlvbi1lcnJvcicpO1xuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgIGdldFN0ZXBEYXRhID0gKHN0ZXBfbmFtZTogU3RlcFR5cGVJKSA9PiB7XG4gICAgICAgIGNvbnN0IHN0ZXBzID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcbiAgICAgICAgaWYgKCFzdGVwcyB8fCAhc3RlcHMubGVuZ3RoKSByZXR1cm4gbnVsbDtcbiAgICAgICAgY29uc3Qgc3RlcF9yZXN1bHQgPSBzdGVwcy5maW5kKHN0ZXAgPT4gc3RlcC5uYW1lID09IHN0ZXBfbmFtZSk7XG4gICAgICAgIHJldHVybiAoc3RlcF9yZXN1bHQgJiYgc3RlcF9yZXN1bHQuZGF0YSkgfHwgbnVsbDtcbiAgICB9XG5cbiAgICBzZXRTdGVwcyA9IChzdGVwczogU3RlcElbXSwgYXV0b2hhbmRsZSA9IHRydWUpID0+IHtcbiAgICAgICAgbGV0IGZpbmFsX3N0ZXBzID0gW107XG4gICAgICAgIHN0ZXBzLmZvckVhY2goKHN0ZXAsIGkpID0+IGZpbmFsX3N0ZXBzLnB1c2gobmV3IFN0ZXAoc3RlcC5uYW1lLCBzdGVwLnByaW9yaXR5IHx8IChpICsgMSkpKSk7XG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoZmluYWxfc3RlcHMpO1xuXG4gICAgICAgIC8vIE9idGVuZXIgSVAgeSB1YmljYWNpw7NuXG4gICAgICAgIGZvcmtKb2luKHtcbiAgICAgICAgICAgIGlwOiB0aGlzLmlwU2VydmljZS5nZXRJcCgpLnBpcGUoY2F0Y2hFcnJvcigoKSA9PiBvZihudWxsKSkpLFxuICAgICAgICAgICAgbG9jYXRpb246IHRoaXMuaXBTZXJ2aWNlLmdldExvY2F0aW9uKCkucGlwZShjYXRjaEVycm9yKCgpID0+IG9mKG51bGwpKSlcbiAgICAgICAgfSkuc3Vic2NyaWJlKHJlc3VsdHMgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgICAgICAgIGlwOiByZXN1bHRzLmlwPy5pcCB8fCAndW5rbm93bicsXG4gICAgICAgICAgICAgICAgY291bnRyeTogcmVzdWx0cy5sb2NhdGlvbj8uY291bnRyeSB8fCAndW5rbm93bicsXG4gICAgICAgICAgICAgICAgY2l0eTogcmVzdWx0cy5sb2NhdGlvbj8uY2l0eSB8fCAndW5rbm93bidcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhwYXJhbXMpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICBjb25zdCB1cmxXaXRoUGFyYW1zID0gYCR7dGhpcy5nZXRIYXNQdXJjaGFzZUNvbmRpdGlvbnMoKX0/JHtxdWVyeVN0cmluZ31gO1xuXG4gICAgICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZ2V0RXJyb3JOb3RIYW5kbGVyKHVybFdpdGhQYXJhbXMpLnRvUHJvbWlzZSgpLnRoZW4oXG4gICAgICAgICAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLmNhbGxFdmVudCgnY2hlY2tvdXRfaW5pdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuY2FydExvY2FsLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVuY3k6IHRoaXMuY2FydExvY2FsPy5jdXJyZW5jeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLmNhcnRMb2NhbD8udG90YWxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2V0U3RlcFJlYWR5ID0gYXN5bmMgKHN0ZXBfbnVtYmVyLCBkYXRhLCBvcmRlcj8sIGF1dG9tYXRpYz8pID0+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5yZXN0YXJ0QWxsU3RlcHNGcm9tKHN0ZXBfbnVtYmVyKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBsZXQgc3RlcHMgPSB0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpO1xuICAgICAgICAgICAgc3RlcHMuZmluZChzdGVwID0+IHN0ZXAucHJpb3JpdHkgPT0gc3RlcF9udW1iZXIpLnJlYWR5KGRhdGEpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGVwcyk7XG5cbiAgICAgICAgICAgIGlmIChvcmRlcikge1xuICAgICAgICAgICAgICAgIHRoaXMub3JkZXJTdWJqZWN0Lm5leHQob3JkZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMudG90YWwgPSBvcmRlci50b3RhbHMudG90YWw7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlzQ2hlY2tvdXRSZWFkeSgpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHN0ZXBzW3N0ZXBzLmxlbmd0aCAtIDFdLm5hbWUgPT0gJ3NoaXBtZW50Jykge1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vblJlYWR5U3ViamVjdC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB9LCA1MDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9LCAxNTApO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBzZXRTdGVwRG9pbmcgPSBhc3luYyAoc3RlcF9udW1iZXIpID0+IHtcbiAgICAgICAgbGV0IHN0ZXBzID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcbiAgICAgICAgc3RlcHMgPSBhd2FpdCB0aGlzLnJlc3RhcnRBbGxTdGVwc0Zyb20oc3RlcF9udW1iZXIsIGZhbHNlLCBmYWxzZSk7XG4gICAgICAgIHN0ZXBzLmZpbmQoc3RlcCA9PiBzdGVwLnByaW9yaXR5ID09IHN0ZXBfbnVtYmVyKS5kb2luZygpO1xuICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHN0ZXBzKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmVzdGFydEFsbFN0ZXBzRnJvbSA9IChzdGVwX251bWJlciwgaW5jbHVkZWQgPSB0cnVlLCB1cGRhdGUgPSB0cnVlKSA9PiB7XG4gICAgICAgIGxldCBzdGVwcyA9IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCk7XG4gICAgICAgIHN0ZXBzID0gc3RlcHMubWFwKChzdGVwKSA9PiB7XG4gICAgICAgICAgICBpbmNsdWRlZFxuICAgICAgICAgICAgICAgID8gKHN0ZXAucHJpb3JpdHkgPj0gc3RlcF9udW1iZXIpICYmIHN0ZXAucmVzdGFydCgpXG4gICAgICAgICAgICAgICAgOiAoc3RlcC5wcmlvcml0eSA+IHN0ZXBfbnVtYmVyKSAmJiBzdGVwLnJlc3RhcnQoKVxuICAgICAgICAgICAgcmV0dXJuIHN0ZXA7XG4gICAgICAgIH0pXG4gICAgICAgIHVwZGF0ZSAmJiB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHN0ZXBzKTtcbiAgICAgICAgcmV0dXJuIHN0ZXBzO1xuICAgIH1cblxuICAgIGlzQ2hlY2tvdXRSZWFkeSA9ICgpID0+IHtcbiAgICAgICAgbGV0IHN0ZXBzID0gdGhpcy5zdGF0ZVN1YmplY3QudmFsdWU7XG4gICAgICAgIGNvbnN0IHN0ZXBfbWlzc2luZyA9IHN0ZXBzLmZpbmQoc3RlcCA9PiBzdGVwLmlzUGVuZGluZygpKTtcbiAgICAgICAgcmV0dXJuICFzdGVwX21pc3Npbmc7XG4gICAgfVxuXG4gICAgaXNTdGVwUmVhZHkgPSAoc3RlcF9uYW1lKSA9PiB7XG4gICAgICAgIGNvbnN0IHN0ZXBzID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKSB8fCBbXTtcbiAgICAgICAgaWYgKCFzdGVwcy5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICAgICAgY29uc3Qgc3RlcCA9IHN0ZXBzLmZpbmQoc3RlcCA9PiBzdGVwLm5hbWUgPT0gc3RlcF9uYW1lKTtcbiAgICAgICAgaWYgKCFzdGVwKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHN0ZXAuaXNSZWFkeSgpO1xuICAgIH07XG5cbiAgICBzZXRPcmRlciA9IChvcmRlcikgPT4geyB0aGlzLm9yZGVyID0gb3JkZXIsIHRoaXMub3JkZXJTdWJqZWN0Lm5leHQob3JkZXIpIH07XG4gICAgZ2V0T3JkZXIgPSAoKSA9PiB0aGlzLm9yZGVyIHx8IHRoaXMub3JkZXJTdWJqZWN0LnZhbHVlO1xuXG4gICAgcHJpdmF0ZSBjb21wbGV0ZU9yZGVyID0gKCkgPT4gdGhpcy5jb25uZWN0aW9uLnB1dCh0aGlzLmNvbXBsZXRlQXBpKCksIHsgZW1haWw6IHRoaXMuY2hlY2tvdXRfZGF0YS5lbWFpbCwgbm90ZXM6IHRoaXMuY2hlY2tvdXRfZGF0YS5ub3RlcyB8fCAnJyB9KS50b1Byb21pc2UoKTtcblxuICAgIGNvbXBsZXRlID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgICAgIGxldCByZXN1bHQgPSBhd2FpdCB0aGlzLmNvbXBsZXRlT3JkZXIoKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgIXJlc3VsdCB8fFxuICAgICAgICAgICAgcmVzdWx0LmVycm9yIHx8XG4gICAgICAgICAgICByZXN1bHQuY29kZSA9PT0gJ2luc3VmZmljaWVudF9jcmVkaXQnIHx8XG4gICAgICAgICAgICByZXN1bHQuY29kZSA9PT0gJ2Vycm9yJ1xuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuY2FydFNlcnZpY2UuY2hhbmdlSGF2ZVRvVXBkYXRlKGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ1N1YmplY3QubmV4dChmYWxzZSk7XG4gICAgICAgICAgICByZXR1cm4gKHsgb2s6IGZhbHNlLCByZXF1aXJlX2xvZ2luOiB0cnVlLCBtZXNzYWdlOiAnbm90LWNvbXBsZXRlZCcgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRPcmRlcihyZXN1bHQpO1xuICAgICAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2UuY2FsbEV2ZW50KCdwdXJjaGFzZScsIHsgLi4ucmVzdWx0LCBjdXJyZW5jeTogcmVzdWx0LmN1cnJlbmN5LCB2YWx1ZTogcmVzdWx0LnRvdGFsIH0pO1xuICAgICAgICB0aGlzLmNhcnRTZXJ2aWNlLmNsZWFyQW5kUmVzZXRDYXJ0KCk7XG4gICAgICAgIHRoaXMuY2FuQ2hlY2tvdXRTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgICAgICB0aGlzLm9uUmVhZHlTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgICAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgICAgICByZXR1cm4gKHsgb2s6IHRydWUsIHJlcXVpcmVfbG9naW46IGZhbHNlLCBtZXNzYWdlOiAnJyB9KTtcbiAgICB9XG5cbiAgICB1cGRhdGVBc29jaWF0ZWREYXRhID0gKGNhcnQ6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBzdW1tYXJ5ID0gdGhpcy5jYXJ0U2VydmljZSAmJiB0aGlzLmNhcnRTZXJ2aWNlLmdldENhcnRTdW1tYXJ5UHJpY2VQcmVzZW50YXRpb25cbiAgICAgICAgICAgID8gdGhpcy5jYXJ0U2VydmljZS5nZXRDYXJ0U3VtbWFyeVByaWNlUHJlc2VudGF0aW9uKGNhcnQsIHVuZGVmaW5lZCwgdHJ1ZSlcbiAgICAgICAgICAgIDogbnVsbDtcblxuICAgICAgICBpZiAoc3VtbWFyeT8uc291cmNlID09PSAnbGluZVByaWNpbmcnKSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQ6IENoZWNrb3V0RGF0YVtdID0gW1xuICAgICAgICAgICAgICAgIHsgdHlwZTogJ3Byb2R1Y3RzQmVmb3JlRGlzY291bnRzJywgbmFtZTogJ3Byb2R1Y3RzLWJlZm9yZS1kaXNjb3VudHMnLCBhbW91bnQ6IHN1bW1hcnkucHJvZHVjdHNCZWZvcmVEaXNjb3VudHMgfSxcbiAgICAgICAgICAgICAgICAuLi4oc3VtbWFyeS5saW5lRGlzY291bnRzICE9PSAwXG4gICAgICAgICAgICAgICAgICAgID8gW3sgdHlwZTogJ2xpbmVEaXNjb3VudCcsIG5hbWU6ICdsaW5lLWRpc2NvdW50cycsIGFtb3VudDogc3VtbWFyeS5saW5lRGlzY291bnRzIH0gYXMgQ2hlY2tvdXREYXRhXVxuICAgICAgICAgICAgICAgICAgICA6IFtdKSxcbiAgICAgICAgICAgICAgICB7IHR5cGU6ICdzdWJ0b3RhbCcsIG5hbWU6ICdzdWJ0b3RhbCcsIGFtb3VudDogc3VtbWFyeS5zdWJ0b3RhbCB9LFxuICAgICAgICAgICAgICAgIC4uLihzdW1tYXJ5Lm9yZGVyRGlzY291bnQgIT09IDBcbiAgICAgICAgICAgICAgICAgICAgPyBbeyB0eXBlOiAnZGlzY291bnQnLCBuYW1lOiAnZGlzY291bnQnLCBhbW91bnQ6IHN1bW1hcnkub3JkZXJEaXNjb3VudCB9IGFzIENoZWNrb3V0RGF0YV1cbiAgICAgICAgICAgICAgICAgICAgOiBbXSksXG4gICAgICAgICAgICAgICAgLi4uKHN1bW1hcnkuY291cG9uRGlzY291bnQgIT09IG51bGwgJiYgc3VtbWFyeS5jb3Vwb25EaXNjb3VudCAhPT0gMFxuICAgICAgICAgICAgICAgICAgICA/IFt7IHR5cGU6ICdjb3Vwb24nLCBuYW1lOiAnY291cG9uJywgYW1vdW50OiBzdW1tYXJ5LmNvdXBvbkRpc2NvdW50IH0gYXMgQ2hlY2tvdXREYXRhXVxuICAgICAgICAgICAgICAgICAgICA6IFtdKSxcbiAgICAgICAgICAgICAgICAuLi4oc3VtbWFyeS50YXhlcyAhPT0gMFxuICAgICAgICAgICAgICAgICAgICA/IFt7IHR5cGU6ICd0YXhlcycsIG5hbWU6ICd0YXhlcycsIGFtb3VudDogc3VtbWFyeS50YXhlcywgdGF4ZXNJbmNsdWRlZEluVG90YWw6IHN1bW1hcnkudGF4ZXNJbmNsdWRlZEluVG90YWwgfSBhcyBDaGVja291dERhdGFdXG4gICAgICAgICAgICAgICAgICAgIDogW10pLFxuICAgICAgICAgICAgICAgIC4uLihzdW1tYXJ5LmNsaWVudFRheGVzICE9PSAwXG4gICAgICAgICAgICAgICAgICAgID8gW3sgdHlwZTogJ2NsaWVudFRheGVzJywgbmFtZTogJ2NsaWVudFRheGVzJywgYW1vdW50OiBzdW1tYXJ5LmNsaWVudFRheGVzIH0gYXMgQ2hlY2tvdXREYXRhXVxuICAgICAgICAgICAgICAgICAgICA6IFtdKSxcbiAgICAgICAgICAgICAgICAuLi4oc3VtbWFyeS5zaGlwcGluZyAhPT0gbnVsbFxuICAgICAgICAgICAgICAgICAgICA/IFt7IHR5cGU6ICdzaGlwbWVudCcsIG5hbWU6ICdzaGlwbWVudCcsIGFtb3VudDogc3VtbWFyeS5zaGlwcGluZyB9IGFzIENoZWNrb3V0RGF0YV1cbiAgICAgICAgICAgICAgICAgICAgOiBbXSksXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAndG90YWwnLCBuYW1lOiAndG90YWwnLCBhbW91bnQ6IHN1bW1hcnkudG90YWwgfVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIHRoaXMuYXNvY2lhdGVkRGF0YVN1YmplY3QubmV4dChyZXN1bHQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHJlc3VsdCA9IHRoaXMub3JkZXJVdGlscy5nZXRTdW1tYXJ5UHJvbW90aW9ucyhjYXJ0KTtcbiAgICAgICAgY29uc3QgdG90YWxzID0gY2FydD8udG90YWxzO1xuICAgICAgICBpZiAoIXRvdGFscykge1xuICAgICAgICAgICAgdGhpcy5hc29jaWF0ZWREYXRhU3ViamVjdC5uZXh0KHJlc3VsdCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2hpcG1lbnRBbW91bnQgPSB0aGlzLm9yZGVyVXRpbHMuZ2V0U3VtbWFyeVNoaXBtZW50QW1vdW50KGNhcnQpO1xuICAgICAgICBpZiAodG90YWxzLnRheGVzICE9IDApIHtcbiAgICAgICAgICAgIGxldCB0b3RhbCA9IHsgLi4ucmVzdWx0W3Jlc3VsdC5sZW5ndGggLSAxXSB9O1xuICAgICAgICAgICAgcmVzdWx0W3Jlc3VsdC5sZW5ndGggLSAxXSA9IHtcbiAgICAgICAgICAgICAgICB0eXBlOiAndGF4ZXMnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICd0YXhlcycsXG4gICAgICAgICAgICAgICAgYW1vdW50OiB0b3RhbHMudGF4ZXNcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRvdGFsKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2hpcG1lbnRBbW91bnQgIT09IG51bGwgJiYgcmVzdWx0Py5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IHNoaXBtZW50SW5kZXggPSByZXN1bHQuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS50eXBlID09PSAnc2hpcG1lbnQnKTtcbiAgICAgICAgICAgIGNvbnN0IHNoaXBtZW50SXRlbTogQ2hlY2tvdXREYXRhID0ge1xuICAgICAgICAgICAgICAgIHR5cGU6ICdzaGlwbWVudCcsXG4gICAgICAgICAgICAgICAgbmFtZTogJ3NoaXBtZW50JyxcbiAgICAgICAgICAgICAgICBhbW91bnQ6IHNoaXBtZW50QW1vdW50XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBpZiAoc2hpcG1lbnRJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICByZXN1bHRbc2hpcG1lbnRJbmRleF0gPSBzaGlwbWVudEl0ZW07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRvdGFsSW5kZXggPSByZXN1bHQuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS50eXBlID09PSAndG90YWwnKTtcbiAgICAgICAgICAgICAgICBpZiAodG90YWxJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4ucmVzdWx0LnNsaWNlKDAsIHRvdGFsSW5kZXgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hpcG1lbnRJdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4ucmVzdWx0LnNsaWNlKHRvdGFsSW5kZXgpXG4gICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goc2hpcG1lbnRJdGVtKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hc29jaWF0ZWREYXRhU3ViamVjdC5uZXh0KHJlc3VsdCk7XG4gICAgfVxuXG4gICAgcmVzdGFydENoZWNrb3V0ID0gKCkgPT4geyB9XG5cbn1cbiJdfQ==
|
|
401
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWVhc3ljb21tZXJjZS8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9jaGVja291dC9jaGVja291dC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbkYsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRW5ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU5QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBUSxNQUFNLGdCQUFnQixDQUFDO0FBQzFELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7O0FBS2xEO0lB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QW1CO2dCQUNiLGdCQUFnQjtnQkFDdEIsV0FBVztnQkFDZixNQUFNO2dCQUNBLG1CQUFtQjtnQkFDdEIsU0FBUzs7O0lBMUN2QixlQUFlO1FBSDNCLFVBQVUsQ0FBQztZQUNSLFVBQVUsRUFBRSxNQUFNO1NBQ3JCLENBQUM7T0FDVyxlQUFlLENBK1MzQjswQkFwVUQ7Q0FvVUMsQUEvU0QsSUErU0M7U0EvU1ksZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9hcGkvY29ubmVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IENhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vY2FydC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gJy4uLy4uL2NvcmUuY29uc3RzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgUmVwbGF5U3ViamVjdCwgY29tYmluZUxhdGVzdCwgZm9ya0pvaW4sIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTdGVwSSwgU3RlcFR5cGVJIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9zdGVwJztcbmltcG9ydCB7IFN0ZXAgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2NoZWNrb3V0L3N0ZXAnO1xuaW1wb3J0IHsgQ2hlY2tvdXREYXRhLCBDaGVja291dERhdGFUeXBlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9jaGVja291dC1kYXRhJztcbmltcG9ydCB7IE9yZGVyVXRpbGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi91dGlscy9vcmRlci11dGlsLnNlcnZpY2UnO1xuaW1wb3J0IHsgQW5hbHl0aWNzU2VydmljZSB9IGZyb20gJy4uL2FuYWx5dGljcy5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3VzZXInO1xuaW1wb3J0IHsgRXJyb3JIYW5kbGVyU2VydmljZSB9IGZyb20gJy4vZXJyb3ItaGFuZGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbHRlciwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi91dGlscy90b2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7IElwU2VydmljZSB9IGZyb20gJy4uL2lwLWFkZHJlc3Muc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ2hlY2tvdXRTZXJ2aWNlIGltcGxlbWVudHMgT25Jbml0IHtcblxuICAgIGJhc2VBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvY2hlY2tvdXQvJyArIHRoaXMuY2FydFNlcnZpY2UuZ2V0Q2FydFRva2VuKCk7XG4gICAgZ2V0UGF5bWVudE1ldGhvZHNBcGkgPSAoKSA9PiB0aGlzLmJhc2VBcGkoKSArICcvcGF5bWVudCc7XG4gICAgcHV0QWRkcmVzc0FwaSA9ICgpID0+IHRoaXMuYmFzZUFwaSgpICsgJy9hZGRyZXNzJztcbiAgICBwdXRQYXltZW50QXBpID0gKG1ldGhvZCkgPT4gdGhpcy5iYXNlQXBpKCkgKyAnL3BheW1lbnQvJyArIG1ldGhvZDtcbiAgICBjb21wbGV0ZUFwaSA9ICgpID0+IHRoaXMuYmFzZUFwaSgpICsgJy9jb21wbGV0ZSc7XG4gICAgcGVyc2lzdFNoaXBtZW50QXBpID0gKCkgPT4gJyc7XG4gICAgZ2V0UHJlZmVyZW5jZUFwaSA9ICgpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJy9tZXJjYWRvLXBhZ28vJyArIHRoaXMuY2FydFNlcnZpY2UuZ2V0Q2FydFRva2VuKCkgKyAnL3ByZWZlcmVuY2UnO1xuICAgIGdldEhhc1B1cmNoYXNlQ29uZGl0aW9ucyA9ICgpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJy9jYXJ0cy8nICsgdGhpcy5jYXJ0U2VydmljZS5nZXRDYXJ0VG9rZW4oKSArICcvaGFzX3B1cmNoYXNlX2NvbmRpdGlvbnMnO1xuXG4gICAgcHJpdmF0ZSBjYW5DaGVja291dFN1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDxib29sZWFuPigpO1xuICAgIHByaXZhdGUgb25SZWFkeVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICAgIHByaXZhdGUgc3RhdGVTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTdGVwW10+KG51bGwpO1xuICAgIHByaXZhdGUgcGF5bWVudE1ldGhvZHNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnlbXT4oW10pO1xuICAgIHByaXZhdGUgbG9hZGluZ1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICBwcml2YXRlIG9yZGVyU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihudWxsKTtcbiAgICBwcml2YXRlIGFzb2NpYXRlZERhdGFTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDaGVja291dERhdGFbXT4obnVsbCk7XG4gICAgcHJpdmF0ZSBvcmRlcjogYW55O1xuICAgIHByaXZhdGUgY2hlY2tvdXRfZGF0YTogYW55ID0ge307XG4gICAgcHVibGljIHRvdGFsO1xuICAgIHByaXZhdGUgY2FydExvY2FsO1xuICAgIHByaXZhdGUgdXNlcjogVXNlcjtcblxuICAgIHB1YmxpYyBvcmRlciQgPSB0aGlzLm9yZGVyU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICBwdWJsaWMgc3RhdGUkID0gdGhpcy5zdGF0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgcHVibGljIGxvYWRpbmckID0gdGhpcy5sb2FkaW5nU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICBwdWJsaWMgY2FuQ2hlY2tvdXQkID0gdGhpcy5jYW5DaGVja291dFN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgcHVibGljIGFzb2NpYXRlZERhdGEkID0gdGhpcy5hc29jaWF0ZWREYXRhU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICBwdWJsaWMgb25SZWFkeSQgPSB0aGlzLm9uUmVhZHlTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHB1YmxpYyBwYXltZW50TWV0aG9kcyQgPSB0aGlzLnBheW1lbnRNZXRob2RzU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY29ubmVjdGlvbjogQ29ubmVjdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY2FydFNlcnZpY2U6IENhcnRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGNvbnN0czogQ29uc3RhbnRzLFxuICAgICAgICBwcml2YXRlIHRvYXN0clNlcnZpY2U6IFRvYXN0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBvcmRlclV0aWxzOiBPcmRlclV0aWxpdHlTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGFuYWx5dGljc1NlcnZpY2U6IEFuYWx5dGljc1NlcnZpY2UsXG4gICAgICAgIHB1YmxpYyBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHByaXZhdGUgZXJyb3JIYW5kbGVyOiBFcnJvckhhbmRsZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGlwU2VydmljZTogSXBTZXJ2aWNlKSB7XG5cbiAgICAgICAgY29tYmluZUxhdGVzdChbdGhpcy5jYXJ0U2VydmljZS5jYXJ0SXRlbXMsIHRoaXMuY2FydFNlcnZpY2UubG9hZGluZ10pLnN1YnNjcmliZSgoW2l0ZW1zLCBsb2FkaW5nXSkgPT4ge1xuICAgICAgICAgICAgaWYgKCFsb2FkaW5nICYmIGl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhbkNoZWNrb3V0U3ViamVjdC5uZXh0KHRydWUpXG4gICAgICAgICAgICAgICAgdGhpcy5jYXJ0U2VydmljZS5nZXRUb3RhbEFtb3VudCgpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvdGFsID0gcmVzO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0pXG4gICAgICAgIHRoaXMuY2FydFNlcnZpY2UuY2FydC5zdWJzY3JpYmUoY2FydCA9PiBjYXJ0ICYmICh0aGlzLmNhcnRMb2NhbCA9IGNhcnQpICYmIHRoaXMudXBkYXRlQXNvY2lhdGVkRGF0YShjYXJ0KSk7XG4gICAgICAgIHRoaXMub3JkZXIkLnN1YnNjcmliZShvcmRlciA9PiBvcmRlciAmJiB0aGlzLnVwZGF0ZUFzb2NpYXRlZERhdGEob3JkZXIpKVxuICAgICAgICB0aGlzLmF1dGhTZXJ2aWNlLmdldFVzZXJQcm9maWxlKCkuc3Vic2NyaWJlKHVzZXIgPT4gdGhpcy51c2VyID0gdXNlcilcbiAgICAgICAgdGhpcy5lcnJvckhhbmRsZXIuZXJyb3IkLnBpcGUoZmlsdGVyKHJlcyA9PiByZXMgIT0gbnVsbCkpLnN1YnNjcmliZShcbiAgICAgICAgICAgIHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlcy5jb2RlID09ICdvdXRfb2Zfc3RvY2snIHx8IHJlcy5jb2RlID09ICdpdGVtc193aXRoX3Byb2R1Y3Rfb3JfcHJvZHVjdF92YXJpYW50X25vdF9lbmFibGVkJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0clNlcnZpY2Uuc2hvdygncmVkaXJlY3QtY2FydCcpXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCgnL2NhcnQnKVxuICAgICAgICAgICAgICAgICAgICB9LCAyMDAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIClcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICB9XG5cbiAgICB1cGRhdGVPcmRlciA9IChvcmRlcikgPT4gb3JkZXIgJiYgdGhpcy5vcmRlclN1YmplY3QubmV4dChvcmRlcik7XG5cbiAgICBzZXRDaGVja291dE5vdGVzID0gKG5vdGVzOiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5jaGVja291dF9kYXRhLm5vdGVzID0gbm90ZXMgfHwgJyc7XG4gICAgfVxuXG4gICAgZ2V0Q2hlY2tvdXROb3RlcyA9ICgpID0+IHRoaXMuY2hlY2tvdXRfZGF0YS5ub3RlcyB8fCAnJztcblxuICAgIHNldFBheW1lbnRNZXRob2RzID0gKG1ldGhvZHM6IGFueVtdKSA9PiB7XG4gICAgICAgIHRoaXMucGF5bWVudE1ldGhvZHNTdWJqZWN0Lm5leHQobWV0aG9kcyB8fCBbXSk7XG4gICAgfVxuXG4gICAgcHJlZmV0Y2hQYXltZW50TWV0aG9kcyA9IGFzeW5jICgpID0+XG4gICAgICAgIHRoaXMuY29ubmVjdGlvbi5nZXQodGhpcy5nZXRQYXltZW50TWV0aG9kc0FwaSgpKS50b1Byb21pc2UoKS50aGVuKFxuICAgICAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBtZXRob2RzID0gcmVzLnBheW1lbnRzPy5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgPyBPYmplY3Qua2V5cyhyZXMucGF5bWVudHNbMF0ubWV0aG9kcykubWFwKGtleSA9PiByZXMucGF5bWVudHNbMF0ubWV0aG9kc1trZXldKVxuICAgICAgICAgICAgICAgICAgICA6IFtdO1xuICAgICAgICAgICAgICAgIGlmIChtZXRob2RzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBheW1lbnRNZXRob2RzU3ViamVjdC5uZXh0KG1ldGhvZHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbWV0aG9kcztcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlcnIgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudG9hc3RyU2VydmljZS5zaG93KCdvcGVyYXRpb24tZXJyb3InKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICBnZXRTdGVwRGF0YSA9IChzdGVwX25hbWU6IFN0ZXBUeXBlSSkgPT4ge1xuICAgICAgICBjb25zdCBzdGVwcyA9IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCk7XG4gICAgICAgIGlmICghc3RlcHMgfHwgIXN0ZXBzLmxlbmd0aCkgcmV0dXJuIG51bGw7XG4gICAgICAgIGNvbnN0IHN0ZXBfcmVzdWx0ID0gc3RlcHMuZmluZChzdGVwID0+IHN0ZXAubmFtZSA9PSBzdGVwX25hbWUpO1xuICAgICAgICByZXR1cm4gKHN0ZXBfcmVzdWx0ICYmIHN0ZXBfcmVzdWx0LmRhdGEpIHx8IG51bGw7XG4gICAgfVxuXG4gICAgc2V0U3RlcHMgPSAoc3RlcHM6IFN0ZXBJW10sIGF1dG9oYW5kbGUgPSB0cnVlKSA9PiB7XG4gICAgICAgIGxldCBmaW5hbF9zdGVwcyA9IFtdO1xuICAgICAgICBzdGVwcy5mb3JFYWNoKChzdGVwLCBpKSA9PiBmaW5hbF9zdGVwcy5wdXNoKG5ldyBTdGVwKHN0ZXAubmFtZSwgc3RlcC5wcmlvcml0eSB8fCAoaSArIDEpKSkpO1xuICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KGZpbmFsX3N0ZXBzKTtcblxuICAgICAgICAvLyBPYnRlbmVyIElQIHkgdWJpY2FjacOzblxuICAgICAgICBmb3JrSm9pbih7XG4gICAgICAgICAgICBpcDogdGhpcy5pcFNlcnZpY2UuZ2V0SXAoKS5waXBlKGNhdGNoRXJyb3IoKCkgPT4gb2YobnVsbCkpKSxcbiAgICAgICAgICAgIGxvY2F0aW9uOiB0aGlzLmlwU2VydmljZS5nZXRMb2NhdGlvbigpLnBpcGUoY2F0Y2hFcnJvcigoKSA9PiBvZihudWxsKSkpXG4gICAgICAgIH0pLnN1YnNjcmliZShyZXN1bHRzID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgICAgICAgICBpcDogcmVzdWx0cy5pcD8uaXAgfHwgJ3Vua25vd24nLFxuICAgICAgICAgICAgICAgIGNvdW50cnk6IHJlc3VsdHMubG9jYXRpb24/LmNvdW50cnkgfHwgJ3Vua25vd24nLFxuICAgICAgICAgICAgICAgIGNpdHk6IHJlc3VsdHMubG9jYXRpb24/LmNpdHkgfHwgJ3Vua25vd24nXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBjb25zdCBxdWVyeVN0cmluZyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMocGFyYW1zKS50b1N0cmluZygpO1xuICAgICAgICAgICAgY29uc3QgdXJsV2l0aFBhcmFtcyA9IGAke3RoaXMuZ2V0SGFzUHVyY2hhc2VDb25kaXRpb25zKCl9PyR7cXVlcnlTdHJpbmd9YDtcblxuICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uLmdldEVycm9yTm90SGFuZGxlcih1cmxXaXRoUGFyYW1zKS50b1Byb21pc2UoKS50aGVuKFxuICAgICAgICAgICAgICAgIHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5jYWxsRXZlbnQoJ2NoZWNrb3V0X2luaXQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi50aGlzLmNhcnRMb2NhbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbmN5OiB0aGlzLmNhcnRMb2NhbD8uY3VycmVuY3ksXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdGhpcy5jYXJ0TG9jYWw/LnRvdGFsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNldFN0ZXBSZWFkeSA9IGFzeW5jIChzdGVwX251bWJlciwgZGF0YSwgb3JkZXI/LCBhdXRvbWF0aWM/KSA9PiB7XG4gICAgICAgIGF3YWl0IHRoaXMucmVzdGFydEFsbFN0ZXBzRnJvbShzdGVwX251bWJlcik7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgbGV0IHN0ZXBzID0gdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKTtcbiAgICAgICAgICAgIHN0ZXBzLmZpbmQoc3RlcCA9PiBzdGVwLnByaW9yaXR5ID09IHN0ZXBfbnVtYmVyKS5yZWFkeShkYXRhKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoc3RlcHMpO1xuXG4gICAgICAgICAgICBpZiAob3JkZXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9yZGVyU3ViamVjdC5uZXh0KG9yZGVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLnRvdGFsID0gb3JkZXIudG90YWxzLnRvdGFsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5pc0NoZWNrb3V0UmVhZHkoKSkge1xuICAgICAgICAgICAgICAgIGlmIChzdGVwc1tzdGVwcy5sZW5ndGggLSAxXS5uYW1lID09ICdzaGlwbWVudCcpIHtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25SZWFkeVN1YmplY3QubmV4dCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSwgMTUwKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgc2V0U3RlcERvaW5nID0gYXN5bmMgKHN0ZXBfbnVtYmVyKSA9PiB7XG4gICAgICAgIGxldCBzdGVwcyA9IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCk7XG4gICAgICAgIHN0ZXBzID0gYXdhaXQgdGhpcy5yZXN0YXJ0QWxsU3RlcHNGcm9tKHN0ZXBfbnVtYmVyLCBmYWxzZSwgZmFsc2UpO1xuICAgICAgICBzdGVwcy5maW5kKHN0ZXAgPT4gc3RlcC5wcmlvcml0eSA9PSBzdGVwX251bWJlcikuZG9pbmcoKTtcbiAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGVwcyk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJlc3RhcnRBbGxTdGVwc0Zyb20gPSAoc3RlcF9udW1iZXIsIGluY2x1ZGVkID0gdHJ1ZSwgdXBkYXRlID0gdHJ1ZSkgPT4ge1xuICAgICAgICBsZXQgc3RlcHMgPSB0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpO1xuICAgICAgICBzdGVwcyA9IHN0ZXBzLm1hcCgoc3RlcCkgPT4ge1xuICAgICAgICAgICAgaW5jbHVkZWRcbiAgICAgICAgICAgICAgICA/IChzdGVwLnByaW9yaXR5ID49IHN0ZXBfbnVtYmVyKSAmJiBzdGVwLnJlc3RhcnQoKVxuICAgICAgICAgICAgICAgIDogKHN0ZXAucHJpb3JpdHkgPiBzdGVwX251bWJlcikgJiYgc3RlcC5yZXN0YXJ0KClcbiAgICAgICAgICAgIHJldHVybiBzdGVwO1xuICAgICAgICB9KVxuICAgICAgICB1cGRhdGUgJiYgdGhpcy5zdGF0ZVN1YmplY3QubmV4dChzdGVwcyk7XG4gICAgICAgIHJldHVybiBzdGVwcztcbiAgICB9XG5cbiAgICBpc0NoZWNrb3V0UmVhZHkgPSAoKSA9PiB7XG4gICAgICAgIGxldCBzdGVwcyA9IHRoaXMuc3RhdGVTdWJqZWN0LnZhbHVlO1xuICAgICAgICBjb25zdCBzdGVwX21pc3NpbmcgPSBzdGVwcy5maW5kKHN0ZXAgPT4gc3RlcC5pc1BlbmRpbmcoKSk7XG4gICAgICAgIHJldHVybiAhc3RlcF9taXNzaW5nO1xuICAgIH1cblxuICAgIGlzU3RlcFJlYWR5ID0gKHN0ZXBfbmFtZSkgPT4ge1xuICAgICAgICBjb25zdCBzdGVwcyA9IHRoaXMuc3RhdGVTdWJqZWN0LmdldFZhbHVlKCkgfHwgW107XG4gICAgICAgIGlmICghc3RlcHMubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIGNvbnN0IHN0ZXAgPSBzdGVwcy5maW5kKHN0ZXAgPT4gc3RlcC5uYW1lID09IHN0ZXBfbmFtZSk7XG4gICAgICAgIGlmICghc3RlcCkgcmV0dXJuIHRydWU7XG4gICAgICAgIHJldHVybiBzdGVwLmlzUmVhZHkoKTtcbiAgICB9O1xuXG4gICAgc2V0T3JkZXIgPSAob3JkZXIpID0+IHsgdGhpcy5vcmRlciA9IG9yZGVyLCB0aGlzLm9yZGVyU3ViamVjdC5uZXh0KG9yZGVyKSB9O1xuICAgIGdldE9yZGVyID0gKCkgPT4gdGhpcy5vcmRlciB8fCB0aGlzLm9yZGVyU3ViamVjdC52YWx1ZTtcblxuICAgIHByaXZhdGUgY29tcGxldGVPcmRlciA9ICgpID0+IHRoaXMuY29ubmVjdGlvbi5wdXQodGhpcy5jb21wbGV0ZUFwaSgpLCB7IGVtYWlsOiB0aGlzLmNoZWNrb3V0X2RhdGEuZW1haWwsIG5vdGVzOiB0aGlzLmNoZWNrb3V0X2RhdGEubm90ZXMgfHwgJycgfSkudG9Qcm9taXNlKCk7XG5cbiAgICBjb21wbGV0ZSA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdC5uZXh0KHRydWUpO1xuICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgdGhpcy5jb21wbGV0ZU9yZGVyKCk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICFyZXN1bHQgfHxcbiAgICAgICAgICAgIHJlc3VsdC5lcnJvciB8fFxuICAgICAgICAgICAgcmVzdWx0LmNvZGUgPT09ICdpbnN1ZmZpY2llbnRfY3JlZGl0JyB8fFxuICAgICAgICAgICAgcmVzdWx0LmNvZGUgPT09ICdlcnJvcidcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmNhcnRTZXJ2aWNlLmNoYW5nZUhhdmVUb1VwZGF0ZShmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgcmV0dXJuICh7IG9rOiBmYWxzZSwgcmVxdWlyZV9sb2dpbjogdHJ1ZSwgbWVzc2FnZTogJ25vdC1jb21wbGV0ZWQnIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0T3JkZXIocmVzdWx0KTtcbiAgICAgICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLmNhbGxFdmVudCgncHVyY2hhc2UnLCB7IC4uLnJlc3VsdCwgY3VycmVuY3k6IHJlc3VsdC5jdXJyZW5jeSwgdmFsdWU6IHJlc3VsdC50b3RhbCB9KTtcbiAgICAgICAgdGhpcy5jYXJ0U2VydmljZS5jbGVhckFuZFJlc2V0Q2FydCgpO1xuICAgICAgICB0aGlzLmNhbkNoZWNrb3V0U3ViamVjdC5uZXh0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5vblJlYWR5U3ViamVjdC5uZXh0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5sb2FkaW5nU3ViamVjdC5uZXh0KGZhbHNlKTtcbiAgICAgICAgcmV0dXJuICh7IG9rOiB0cnVlLCByZXF1aXJlX2xvZ2luOiBmYWxzZSwgbWVzc2FnZTogJycgfSk7XG4gICAgfVxuXG4gICAgdXBkYXRlQXNvY2lhdGVkRGF0YSA9IChjYXJ0OiBhbnkpID0+IHtcbiAgICAgICAgY29uc3Qgc3VtbWFyeSA9IHRoaXMuY2FydFNlcnZpY2UgJiYgdGhpcy5jYXJ0U2VydmljZS5nZXRDYXJ0U3VtbWFyeVByaWNlUHJlc2VudGF0aW9uXG4gICAgICAgICAgICA/IHRoaXMuY2FydFNlcnZpY2UuZ2V0Q2FydFN1bW1hcnlQcmljZVByZXNlbnRhdGlvbihjYXJ0LCB1bmRlZmluZWQsIHRydWUpXG4gICAgICAgICAgICA6IG51bGw7XG4gICAgICAgIGNvbnN0IHBheW1lbnRNZXRob2RBZGp1c3RtZW50ID0gdGhpcy5vcmRlclV0aWxzLmdldFBheW1lbnRNZXRob2RBZGp1c3RtZW50KGNhcnQpO1xuXG4gICAgICAgIGlmIChzdW1tYXJ5Py5zb3VyY2UgPT09ICdsaW5lUHJpY2luZycpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdDogQ2hlY2tvdXREYXRhW10gPSBbXG4gICAgICAgICAgICAgICAgeyB0eXBlOiAncHJvZHVjdHNCZWZvcmVEaXNjb3VudHMnLCBuYW1lOiAncHJvZHVjdHMtYmVmb3JlLWRpc2NvdW50cycsIGFtb3VudDogc3VtbWFyeS5wcm9kdWN0c0JlZm9yZURpc2NvdW50cyB9LFxuICAgICAgICAgICAgICAgIC4uLihzdW1tYXJ5LmxpbmVEaXNjb3VudHMgIT09IDBcbiAgICAgICAgICAgICAgICAgICAgPyBbeyB0eXBlOiAnbGluZURpc2NvdW50JywgbmFtZTogJ2xpbmUtZGlzY291bnRzJywgYW1vdW50OiBzdW1tYXJ5LmxpbmVEaXNjb3VudHMgfSBhcyBDaGVja291dERhdGFdXG4gICAgICAgICAgICAgICAgICAgIDogW10pLFxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ3N1YnRvdGFsJywgbmFtZTogJ3N1YnRvdGFsJywgYW1vdW50OiBzdW1tYXJ5LnN1YnRvdGFsIH0sXG4gICAgICAgICAgICAgICAgLi4uKHN1bW1hcnkub3JkZXJEaXNjb3VudCAhPT0gMFxuICAgICAgICAgICAgICAgICAgICA/IFt7IHR5cGU6ICdkaXNjb3VudCcsIG5hbWU6ICdkaXNjb3VudCcsIGFtb3VudDogc3VtbWFyeS5vcmRlckRpc2NvdW50IH0gYXMgQ2hlY2tvdXREYXRhXVxuICAgICAgICAgICAgICAgICAgICA6IFtdKSxcbiAgICAgICAgICAgICAgICAuLi4oc3VtbWFyeS5jb3Vwb25EaXNjb3VudCAhPT0gbnVsbCAmJiBzdW1tYXJ5LmNvdXBvbkRpc2NvdW50ICE9PSAwXG4gICAgICAgICAgICAgICAgICAgID8gW3sgdHlwZTogJ2NvdXBvbicsIG5hbWU6ICdjb3Vwb24nLCBhbW91bnQ6IHN1bW1hcnkuY291cG9uRGlzY291bnQgfSBhcyBDaGVja291dERhdGFdXG4gICAgICAgICAgICAgICAgICAgIDogW10pLFxuICAgICAgICAgICAgICAgIC4uLihzdW1tYXJ5LnRheGVzICE9PSAwXG4gICAgICAgICAgICAgICAgICAgID8gW3sgdHlwZTogJ3RheGVzJywgbmFtZTogJ3RheGVzJywgYW1vdW50OiBzdW1tYXJ5LnRheGVzLCB0YXhlc0luY2x1ZGVkSW5Ub3RhbDogc3VtbWFyeS50YXhlc0luY2x1ZGVkSW5Ub3RhbCB9IGFzIENoZWNrb3V0RGF0YV1cbiAgICAgICAgICAgICAgICAgICAgOiBbXSksXG4gICAgICAgICAgICAgICAgLi4uKHN1bW1hcnkuY2xpZW50VGF4ZXMgIT09IDBcbiAgICAgICAgICAgICAgICAgICAgPyBbeyB0eXBlOiAnY2xpZW50VGF4ZXMnLCBuYW1lOiAnY2xpZW50VGF4ZXMnLCBhbW91bnQ6IHN1bW1hcnkuY2xpZW50VGF4ZXMgfSBhcyBDaGVja291dERhdGFdXG4gICAgICAgICAgICAgICAgICAgIDogW10pLFxuICAgICAgICAgICAgICAgIC4uLihzdW1tYXJ5LnNoaXBwaW5nICE9PSBudWxsXG4gICAgICAgICAgICAgICAgICAgID8gW3sgdHlwZTogJ3NoaXBtZW50JywgbmFtZTogJ3NoaXBtZW50JywgYW1vdW50OiBzdW1tYXJ5LnNoaXBwaW5nIH0gYXMgQ2hlY2tvdXREYXRhXVxuICAgICAgICAgICAgICAgICAgICA6IFtdKSxcbiAgICAgICAgICAgICAgICAuLi4ocGF5bWVudE1ldGhvZEFkanVzdG1lbnQgPyBbcGF5bWVudE1ldGhvZEFkanVzdG1lbnRdIDogW10pLFxuICAgICAgICAgICAgICAgIHsgdHlwZTogJ3RvdGFsJywgbmFtZTogJ3RvdGFsJywgYW1vdW50OiBzdW1tYXJ5LnRvdGFsIH1cbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICB0aGlzLmFzb2NpYXRlZERhdGFTdWJqZWN0Lm5leHQocmVzdWx0KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCByZXN1bHQgPSB0aGlzLm9yZGVyVXRpbHMuZ2V0U3VtbWFyeVByb21vdGlvbnMoY2FydCk7XG4gICAgICAgIGNvbnN0IHRvdGFscyA9IGNhcnQ/LnRvdGFscztcbiAgICAgICAgaWYgKCF0b3RhbHMpIHtcbiAgICAgICAgICAgIHRoaXMuYXNvY2lhdGVkRGF0YVN1YmplY3QubmV4dChyZXN1bHQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNoaXBtZW50QW1vdW50ID0gdGhpcy5vcmRlclV0aWxzLmdldFN1bW1hcnlTaGlwbWVudEFtb3VudChjYXJ0KTtcbiAgICAgICAgaWYgKHRvdGFscy50YXhlcyAhPSAwKSB7XG4gICAgICAgICAgICBsZXQgdG90YWwgPSB7IC4uLnJlc3VsdFtyZXN1bHQubGVuZ3RoIC0gMV0gfTtcbiAgICAgICAgICAgIHJlc3VsdFtyZXN1bHQubGVuZ3RoIC0gMV0gPSB7XG4gICAgICAgICAgICAgICAgdHlwZTogJ3RheGVzJyxcbiAgICAgICAgICAgICAgICBuYW1lOiAndGF4ZXMnLFxuICAgICAgICAgICAgICAgIGFtb3VudDogdG90YWxzLnRheGVzXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQucHVzaCh0b3RhbCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNoaXBtZW50QW1vdW50ICE9PSBudWxsICYmIHJlc3VsdD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBzaGlwbWVudEluZGV4ID0gcmVzdWx0LmZpbmRJbmRleChpdGVtID0+IGl0ZW0udHlwZSA9PT0gJ3NoaXBtZW50Jyk7XG4gICAgICAgICAgICBjb25zdCBzaGlwbWVudEl0ZW06IENoZWNrb3V0RGF0YSA9IHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnc2hpcG1lbnQnLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdzaGlwbWVudCcsXG4gICAgICAgICAgICAgICAgYW1vdW50OiBzaGlwbWVudEFtb3VudFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgaWYgKHNoaXBtZW50SW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0W3NoaXBtZW50SW5kZXhdID0gc2hpcG1lbnRJdGVtO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0b3RhbEluZGV4ID0gcmVzdWx0LmZpbmRJbmRleChpdGVtID0+IGl0ZW0udHlwZSA9PT0gJ3RvdGFsJyk7XG4gICAgICAgICAgICAgICAgaWYgKHRvdGFsSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnJlc3VsdC5zbGljZSgwLCB0b3RhbEluZGV4KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNoaXBtZW50SXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnJlc3VsdC5zbGljZSh0b3RhbEluZGV4KVxuICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHNoaXBtZW50SXRlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuYXNvY2lhdGVkRGF0YVN1YmplY3QubmV4dChyZXN1bHQpO1xuICAgIH1cblxuICAgIHJlc3RhcnRDaGVja291dCA9ICgpID0+IHsgfVxuXG59XG4iXX0=
|
|
@@ -15,7 +15,7 @@ var OrderUtilityService = /** @class */ (function () {
|
|
|
15
15
|
*/
|
|
16
16
|
this.getPromotions = function (cart, forCart) {
|
|
17
17
|
if (forCart === void 0) { forCart = false; }
|
|
18
|
-
var _a;
|
|
18
|
+
var _a, _b;
|
|
19
19
|
if (!((_a = cart) === null || _a === void 0 ? void 0 : _a.totals))
|
|
20
20
|
return [];
|
|
21
21
|
if (cart.checkoutState && cart.checkoutState == "completed")
|
|
@@ -27,6 +27,8 @@ var OrderUtilityService = /** @class */ (function () {
|
|
|
27
27
|
// console.log(cart.cartDiscounts);
|
|
28
28
|
var cartDiscounts = Array.isArray(cart.cartDiscounts) ? cart.cartDiscounts : [];
|
|
29
29
|
for (var index = 0; index < cartDiscounts.length; index++) {
|
|
30
|
+
if (((_b = cartDiscounts[index]) === null || _b === void 0 ? void 0 : _b.type) === 'payment_method')
|
|
31
|
+
continue;
|
|
30
32
|
cartDiscounts[index].type = _this.formatType(cartDiscounts[index].type);
|
|
31
33
|
new_state.push({
|
|
32
34
|
type: cartDiscounts[index].type,
|
|
@@ -42,6 +44,8 @@ var OrderUtilityService = /** @class */ (function () {
|
|
|
42
44
|
// amount: this.getAmount(cartDiscount, cart)
|
|
43
45
|
// });
|
|
44
46
|
// });
|
|
47
|
+
var paymentMethodAdjustment = _this.getPaymentMethodAdjustment(cart);
|
|
48
|
+
paymentMethodAdjustment && new_state.push(paymentMethodAdjustment);
|
|
45
49
|
!forCart && new_state.push(total);
|
|
46
50
|
return new_state;
|
|
47
51
|
};
|
|
@@ -69,9 +73,25 @@ var OrderUtilityService = /** @class */ (function () {
|
|
|
69
73
|
name: 'discount',
|
|
70
74
|
amount: promotionAmount
|
|
71
75
|
});
|
|
76
|
+
var paymentMethodAdjustment = _this.getPaymentMethodAdjustment(cart);
|
|
77
|
+
paymentMethodAdjustment && new_state.push(paymentMethodAdjustment);
|
|
72
78
|
!forCart && new_state.push(total);
|
|
73
79
|
return new_state;
|
|
74
80
|
};
|
|
81
|
+
this.getPaymentMethodAdjustment = function (cart) {
|
|
82
|
+
var _a, _b, _c, _d;
|
|
83
|
+
var rawAmount = (_b = (_a = cart) === null || _a === void 0 ? void 0 : _a.totals) === null || _b === void 0 ? void 0 : _b.paymentMethodAdjustment;
|
|
84
|
+
if (rawAmount === null || rawAmount === undefined || Number(rawAmount) === 0)
|
|
85
|
+
return null;
|
|
86
|
+
var amount = Number(rawAmount);
|
|
87
|
+
if (!Number.isFinite(amount))
|
|
88
|
+
return null;
|
|
89
|
+
return {
|
|
90
|
+
type: 'paymentMethodAdjustment',
|
|
91
|
+
name: ((_d = (_c = cart) === null || _c === void 0 ? void 0 : _c.totals) === null || _d === void 0 ? void 0 : _d.paymentMethodAdjustmentLabel) || (amount < 0 ? 'discount' : 'surcharge'),
|
|
92
|
+
amount: amount
|
|
93
|
+
};
|
|
94
|
+
};
|
|
75
95
|
/**
|
|
76
96
|
* Devuelve el monto de envío que debe mostrarse en el resumen.
|
|
77
97
|
*
|
|
@@ -295,4 +315,4 @@ var OrderUtilityService = /** @class */ (function () {
|
|
|
295
315
|
return OrderUtilityService;
|
|
296
316
|
}());
|
|
297
317
|
export { OrderUtilityService };
|
|
298
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItdXRpbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZWFzeWNvbW1lcmNlLyIsInNvdXJjZXMiOlsibGliL3V0aWxzL29yZGVyLXV0aWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTNDO0lBRUk7UUFBQSxpQkFBaUI7UUFFakI7Ozs7V0FJRztRQUNILGtCQUFhLEdBQUcsVUFBQyxJQUFTLEVBQUUsT0FBd0I7WUFBeEIsd0JBQUEsRUFBQSxlQUF3Qjs7WUFDaEQsSUFBSSxRQUFDLElBQUksMENBQUUsTUFBTSxDQUFBO2dCQUFFLE9BQU8sRUFBRSxDQUFDO1lBQzdCLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLFdBQVc7Z0JBQUUsT0FBTyxFQUFFLENBQUM7WUFDdkUsSUFBSSxTQUFTLEdBQW1CLEVBQUUsQ0FBQztZQUNuQyxJQUFJLFFBQVEsR0FBaUIsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2pILElBQUksS0FBSyxHQUFpQixFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN0RixDQUFDLE9BQU8sSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3hDLHNDQUFzQztZQUNuQyxJQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2xGLEtBQUssSUFBSSxLQUFLLEdB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T0FBTyxJQUFJLENBQUM7YUFDZjtZQUVELElBQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQyxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzNELENBQUMsQ0FBQTtJQWxTZSxDQUFDO0lBRlIsbUJBQW1CO1FBRC9CLFVBQVUsRUFBRTtPQUNBLG1CQUFtQixDQXFTL0I7SUFBRCwwQkFBQztDQUFBLEFBclNELElBcVNDO1NBclNZLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENoZWNrb3V0RGF0YSwgQ2hlY2tvdXREYXRhVHlwZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvY2hlY2tvdXQtZGF0YSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBPcmRlclV0aWxpdHlTZXJ2aWNlIHtcblxuICAgIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gY2FydCBPYmpldG8gY2Fycml0byBvIG9yZGVuLCBpbmRpc3RpbnRhbWVudGUsIHlhIHF1ZSBwb3NlZW4gZWwgbWlzbW8gZm9ybWF0b1xuICAgICAqIEBwYXJhbSBmb3JDYXJ0IFNpIGxhIHNvbGljaXR1ZCBkZSBwcm9tb2Npb25lcyBwcm92aWVuZSBkZWwgY2Fycml0bywgc3VwcmltZSBlbCBzdWJ0b3RhbCB5IGVsIHRvdGFsXG4gICAgICogQGRlc2NyaXB0aW9uIERldnVlbHZlIHVuIGxpc3RhZG8gY29uIHRvZGFzIGxhcyBwcm9tb2Npb25lcyBxdWUgcG9zZWUgZWwgY2Fycm8vb3JkZW5cbiAgICAgKi9cbiAgICBnZXRQcm9tb3Rpb25zID0gKGNhcnQ6IGFueSwgZm9yQ2FydDogYm9vbGVhbiA9IGZhbHNlKTogQ2hlY2tvdXREYXRhW10gPT4ge1xuICAgICAgICBpZiAoIWNhcnQ/LnRvdGFscykgcmV0dXJuIFtdO1xuICAgICAgICBpZiAoY2FydC5jaGVja291dFN0YXRlICYmIGNhcnQuY2hlY2tvdXRTdGF0ZSA9PSBcImNvbXBsZXRlZFwiKSByZXR1cm4gW107XG4gICAgICAgIGxldCBuZXdfc3RhdGU6IENoZWNrb3V0RGF0YVtdID0gW107XG4gICAgICAgIGxldCBzdWJ0b3RhbDogQ2hlY2tvdXREYXRhID0geyB0eXBlOiAnc3VidG90YWwnLCBuYW1lOiAnc3VidG90YWwnLCBhbW91bnQ6IHRoaXMuZ2V0U3VtbWFyeVN1YnRvdGFsQW1vdW50KGNhcnQpIH07XG4gICAgICAgIGxldCB0b3RhbDogQ2hlY2tvdXREYXRhID0geyB0eXBlOiAndG90YWwnLCBuYW1lOiAndG90YWwnLCBhbW91bnQ6IGNhcnQudG90YWxzLnRvdGFsIH07XG4gICAgICAgICFmb3JDYXJ0ICYmIG5ld19zdGF0ZS5wdXNoKHN1YnRvdGFsKTtcbiAgICAgLy8gICAgY29uc29sZS5sb2coY2FydC5jYXJ0RGlzY291bnRzKTtcbiAgICAgICAgY29uc3QgY2FydERpc2NvdW50cyA9IEFycmF5LmlzQXJyYXkoY2FydC5jYXJ0RGlzY291bnRzKSA/IGNhcnQuY2FydERpc2NvdW50cyA6IFtdO1xuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgY2FydERpc2NvdW50cy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICBjYXJ0RGlzY291bnRzW2luZGV4XS50eXBlID0gdGhpcy5mb3JtYXRUeXBlKGNhcnREaXNjb3VudHNbaW5kZXhdLnR5cGUpO1xuICAgICAgICAgICAgIG5ld19zdGF0ZS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgdHlwZTogY2FydERpc2NvdW50c1tpbmRleF0udHlwZSxcbiAgICAgICAgICAgICAgICAgbmFtZTogKGNhcnREaXNjb3VudHNbaW5kZXhdLnR5cGUgIT0gJ2NvdXBvbicpID8gY2FydERpc2NvdW50c1tpbmRleF0ubmFtZSA6ICdjb3Vwb24nLFxuICAgICAgICAgICAgICAgICBhbW91bnQ6IHRoaXMuZ2V0QW1vdW50KGNhcnREaXNjb3VudHNbaW5kZXhdLCBjYXJ0KVxuICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIH1cbiAgICAgLy8gICAgY2FydC5jYXJ0RGlzY291bnRzLmZvckVhY2goY2FydERpc2NvdW50ID0+IHtcbiAgICAgLy8gICAgICAgIGNhcnREaXNjb3VudC50eXBlID0gdGhpcy5mb3JtYXRUeXBlKGNhcnREaXNjb3VudC50eXBlKTtcbiAgICAgLy8gICAgICAgIG5ld19zdGF0ZS5wdXNoKHtcbiAgICAgLy8gICAgICAgICAgICB0eXBlOiBjYXJ0RGlzY291bnQudHlwZSxcbiAgICAgLy8gICAgICAgICAgICBuYW1lOiAoY2FydERpc2NvdW50LnR5cGUgIT0gJ2NvdXBvbicpID8gY2FydERpc2NvdW50Lm5hbWUgOiAnY291cG9uJyxcbiAgICAgLy8gICAgICAgICAgICBhbW91bnQ6IHRoaXMuZ2V0QW1vdW50KGNhcnREaXNjb3VudCwgY2FydClcbiAgICAgLy8gICAgICAgIH0pO1xuICAgICAvLyAgICB9KTtcbiAgICAgICAgIWZvckNhcnQgJiYgbmV3X3N0YXRlLnB1c2godG90YWwpO1xuICAgICAgICByZXR1cm4gbmV3X3N0YXRlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbnN0cnV5ZSBlbCByZXN1bWVuIGRlIHByb21vY2lvbmVzIHF1ZSBkZWJlIG1vc3RyYXJzZSBlbiBjaGVja291dCB5IHJlc8O6bWVuZXMgZGUgY29tcHJhLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNhcnQgQ2Fycml0byB1IG9yZGVuIGNvbiBlc3RydWN0dXJhIGB0b3RhbHNgIGNvbXBhdGlibGUuXG4gICAgICogQHBhcmFtIGZvckNhcnQgQ3VhbmRvIGVzIGB0cnVlYCwgb21pdGUgc3VidG90YWwgeSB0b3RhbCBwYXJhIGRldm9sdmVyIHNvbG8gbGFzIGzDrW5lYXMgaW50ZXJtZWRpYXMuXG4gICAgICogQHJldHVybnMgTGlzdGEgZGUgbMOtbmVhcyBub3JtYWxpemFkYXMgcGFyYSByZW5kZXJpemFyIGVsIHJlc3VtZW4uXG4gICAgICpcbiAgICAgKiBAcmVtYXJrc1xuICAgICAqIEEgZGlmZXJlbmNpYSBkZSBgZ2V0UHJvbW90aW9uc2AsIGVzdGUgbcOpdG9kbyBzb2xvIGNvbnNpZGVyYSBkZXNjdWVudG9zIGRlIG9yZGVuLlxuICAgICAqL1xuICAgIGdldFN1bW1hcnlQcm9tb3Rpb25zID0gKGNhcnQ6IGFueSwgZm9yQ2FydDogYm9vbGVhbiA9IGZhbHNlKTogQ2hlY2tvdXREYXRhW10gPT4ge1xuICAgICAgICBpZiAoY2FydC5jaGVja291dFN0YXRlICYmIGNhcnQuY2hlY2tvdXRTdGF0ZSA9PSBcImNvbXBsZXRlZFwiKSByZXR1cm47XG4gICAgICAgIGxldCBuZXdfc3RhdGU6IENoZWNrb3V0RGF0YVtdID0gW107XG4gICAgICAgIGxldCBzdWJ0b3RhbDogQ2hlY2tvdXREYXRhID0geyB0eXBlOiAnc3VidG90YWwnLCBuYW1lOiAnc3VidG90YWwnLCBhbW91bnQ6IHRoaXMuZ2V0U3VtbWFyeVN1YnRvdGFsQW1vdW50KGNhcnQpIH07XG4gICAgICAgIGxldCB0b3RhbDogQ2hlY2tvdXREYXRhID0geyB0eXBlOiAndG90YWwnLCBuYW1lOiAndG90YWwnLCBhbW91bnQ6IGNhcnQudG90YWxzLnRvdGFsIH07XG4gICAgICAgIGNvbnN0IHByb21vdGlvbkFtb3VudCA9IHRoaXMuZ2V0U3VtbWFyeVByb21vdGlvbkFtb3VudChjYXJ0KTtcblxuICAgICAgICAhZm9yQ2FydCAmJiBuZXdfc3RhdGUucHVzaChzdWJ0b3RhbCk7XG4gICAgICAgIHByb21vdGlvbkFtb3VudCAhPSAwICYmIG5ld19zdGF0ZS5wdXNoKHtcbiAgICAgICAgICAgIHR5cGU6ICdkaXNjb3VudCcsXG4gICAgICAgICAgICBuYW1lOiAnZGlzY291bnQnLFxuICAgICAgICAgICAgYW1vdW50OiBwcm9tb3Rpb25BbW91bnRcbiAgICAgICAgfSk7XG4gICAgICAgICFmb3JDYXJ0ICYmIG5ld19zdGF0ZS5wdXNoKHRvdGFsKTtcbiAgICAgICAgcmV0dXJuIG5ld19zdGF0ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXZ1ZWx2ZSBlbCBtb250byBkZSBlbnbDrW8gcXVlIGRlYmUgbW9zdHJhcnNlIGVuIGVsIHJlc3VtZW4uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2FydCBDYXJyaXRvIHUgb3JkZW4gY29uIGB0b3RhbHNgLlxuICAgICAqIEByZXR1cm5zIGBudW1iZXJgIGN1YW5kbyBlbCBlbnbDrW8gZGViZSBtb3N0cmFyc2UsIG8gYG51bGxgIGN1YW5kbyBubyBjb3JyZXNwb25kZSByZW5kZXJpemFybG8uXG4gICAgICpcbiAgICAgKiBAcmVtYXJrc1xuICAgICAqIC0gU2kgZWwgYmFja2VuZCBpbmZvcm1hIHVuIHNoaXBwaW5nIGRpc3RpbnRvIGRlIGNlcm8sIGVzZSB2YWxvciBzZSBtdWVzdHJhIHRhbCBjdWFsLlxuICAgICAqIC0gU2kgYHRvdGFscy5zaGlwcGluZ2AgZXMgYDBgIHBlcm8gZXhpc3RlIHVuYSBwcm9tb2Npw7NuIGRlIGVudsOtbywgc2UgbXVlc3RyYSBgMGAgcGFyYSBxdWUgbGEgVUkgbG8gaW50ZXJwcmV0ZSBjb21vIGdyYXRpcy5cbiAgICAgKiAtIFNpIG5vIGhheSBkYXRvcyBzdWZpY2llbnRlcywgc2UgZGV2dWVsdmUgYG51bGxgIHkgc2UgY29uc2VydmEgZWwgY29tcG9ydGFtaWVudG8gcHJldmlvIGRlIG5vIG1vc3RyYXIgbGEgbMOtbmVhLlxuICAgICAqL1xuICAgIGdldFN1bW1hcnlTaGlwbWVudEFtb3VudCA9IChjYXJ0OiBhbnkpOiBudW1iZXIgfCBudWxsID0+IHtcbiAgICAgICAgY29uc3Qgc2hpcHBpbmdBbW91bnQgPSB0aGlzLm5vcm1hbGl6ZUFtb3VudChjYXJ0Py50b3RhbHM/LnNoaXBwaW5nKTtcbiAgICAgICAgaWYgKHNoaXBwaW5nQW1vdW50ICE9PSBudWxsICYmIHNoaXBwaW5nQW1vdW50ICE9PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gc2hpcHBpbmdBbW91bnQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2hpcHBpbmdBbW91bnQgPT09IDAgJiYgdGhpcy5oYXNTaGlwcGluZ1Byb21vdGlvbihjYXJ0KSkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPYnRpZW5lIGVsIG1vbnRvIGRlIGRlc2N1ZW50byBxdWUgY29ycmVzcG9uZGUgYWwgcmVzdW1lbiBkZSBsYSBvcmRlbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYXJ0IENhcnJpdG8gdSBvcmRlbiBjb24gYHRvdGFsc2AuXG4gICAgICogQHJldHVybnMgTW9udG8gZGUgcHJvbW9jaW9uZXMgZGUgb3JkZW4uXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHRzXG4gICAgICogY29uc3QgYW1vdW50ID0gdGhpcy5vcmRlclV0aWxzLmdldFN1bW1hcnlQcm9tb3Rpb25BbW91bnQoY2FydCk7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAcmVtYXJrc1xuICAgICAqIFNpIGVsIGJhY2tlbmQgbnVldm8gaW5mb3JtYSBgcHJvbW90aW9uQnJlYWtkb3duLm9yZGVyUHJvbW90aW9uc2AsIGVzZSB2YWxvciB0aWVuZSBwcmlvcmlkYWQuXG4gICAgICogQ29uIGJhY2tlbmRzIHZpZWpvcyBoYWNlIGZhbGxiYWNrIGEgYHRvdGFscy5wcm9tb3Rpb25gIG8gYHRvdGFscy5kaXNjb3VudGAuXG4gICAgICovXG4gICAgZ2V0U3VtbWFyeVByb21vdGlvbkFtb3VudCA9IChjYXJ0OiBhbnkpOiBudW1iZXIgPT4ge1xuICAgICAgICBjb25zdCBvcmRlckRpc2NvdW50ID0gY2FydD8udG90YWxzPy5vcmRlckRpc2NvdW50ID8/IGNhcnQ/LnRvdGFscz8ub3JkZXJfZGlzY291bnQ7XG4gICAgICAgIGlmIChvcmRlckRpc2NvdW50ICE9PSBudWxsICYmIG9yZGVyRGlzY291bnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIE51bWJlcihvcmRlckRpc2NvdW50IHx8IDApO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmhhc09yZGVyUHJvbW90aW9uc0JyZWFrZG93bihjYXJ0KSkge1xuICAgICAgICAgICAgcmV0dXJuIE51bWJlcihcbiAgICAgICAgICAgICAgICBjYXJ0Py50b3RhbHM/LnByb21vdGlvbkJyZWFrZG93bj8ub3JkZXJQcm9tb3Rpb25zXG4gICAgICAgICAgICAgICAgPz8gY2FydD8udG90YWxzPy5wcm9tb3Rpb25fYnJlYWtkb3duPy5vcmRlcl9wcm9tb3Rpb25zXG4gICAgICAgICAgICAgICAgPz8gMFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gTnVtYmVyKGNhcnQ/LnRvdGFscz8ucHJvbW90aW9uIHx8IGNhcnQ/LnRvdGFscz8uZGlzY291bnQgfHwgMCk7XG4gICAgfVxuXG4gICAgLyoqIERlc2N1ZW50byBkZSBvcmRlbiBzZXBhcmFkbyBkZSBjdXBvbmVzIHkgZGVzY3VlbnRvcyBkZSBlbnbDrW8uICovXG4gICAgZ2V0T3JkZXJQcm9tb3Rpb25BbW91bnQgPSAoY2FydDogYW55KTogbnVtYmVyID0+IHtcbiAgICAgICAgY29uc3QgYnJlYWtkb3duID0gY2FydD8udG90YWxzPy5wcm9tb3Rpb25CcmVha2Rvd24gfHwgY2FydD8udG90YWxzPy5wcm9tb3Rpb25fYnJlYWtkb3duO1xuICAgICAgICBpZiAoYnJlYWtkb3duICYmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYnJlYWtkb3duLCAnb3JkZXJQcm9tb3Rpb25zJylcbiAgICAgICAgICAgIHx8IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChicmVha2Rvd24sICdvcmRlcl9wcm9tb3Rpb25zJykpKSB7XG4gICAgICAgICAgICByZXR1cm4gTnVtYmVyKGJyZWFrZG93bi5vcmRlclByb21vdGlvbnMgPz8gYnJlYWtkb3duLm9yZGVyX3Byb21vdGlvbnMgPz8gMCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjYXJ0Py5jYXJ0RGlzY291bnRzKSkge1xuICAgICAgICAgICAgcmV0dXJuIGNhcnQuY2FydERpc2NvdW50c1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoZGlzY291bnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0eXBlID0gKGRpc2NvdW50Py50eXBlIHx8ICcnKS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlLmluY2x1ZGVzKCdvcmRlcicpICYmICF0eXBlLmluY2x1ZGVzKCdjb3Vwb24nKSAmJiAhdHlwZS5pbmNsdWRlcygnc2hpcHBpbmcnKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5yZWR1Y2UoKHRvdGFsLCBkaXNjb3VudCkgPT4gdG90YWwgKyBOdW1iZXIoZGlzY291bnQ/LmFtb3VudCB8fCAwKSwgMCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2FydD8uY291cG9uQ29kZSB8fCBjYXJ0Py5jb3Vwb25fY29kZVxuICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICA6IE51bWJlcihjYXJ0Py50b3RhbHM/Lm9yZGVyRGlzY291bnQgPz8gY2FydD8udG90YWxzPy5vcmRlcl9kaXNjb3VudCA/PyBjYXJ0Py50b3RhbHM/LnByb21vdGlvbiA/PyAwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPYnRpZW5lIMO6bmljYW1lbnRlIGVsIGRlc2N1ZW50byBhcGxpY2FkbyBwb3IgZWwgY3Vww7NuLlxuICAgICAqXG4gICAgICogRGV2dWVsdmUgYG51bGxgIGN1YW5kbyBsYSByZXNwdWVzdGEgbm8gcGVybWl0ZSBpZGVudGlmaWNhciBzdSBpbXBvcnRlLFxuICAgICAqIHBhcmEgcXVlIGVsIGZyb250ZW5kIHB1ZWRhIG1vc3RyYXIgc29sYW1lbnRlIGVsIGPDs2RpZ28uXG4gICAgICovXG4gICAgZ2V0Q291cG9uUHJvbW90aW9uQW1vdW50ID0gKGNhcnQ6IGFueSk6IG51bWJlciB8IG51bGwgPT4ge1xuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY2FydD8uY2FydERpc2NvdW50cykpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY291cG9uRGlzY291bnRzID0gY2FydC5jYXJ0RGlzY291bnRzLmZpbHRlcihkaXNjb3VudCA9PlxuICAgICAgICAgICAgKGRpc2NvdW50Py50eXBlIHx8ICcnKS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2NvdXBvbicpXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKCFjb3Vwb25EaXNjb3VudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb3Vwb25EaXNjb3VudHMucmVkdWNlKCh0b3RhbCwgZGlzY291bnQpID0+IHRvdGFsICsgTnVtYmVyKGRpc2NvdW50Py5hbW91bnQgfHwgMCksIDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE9idGllbmUgZWwgc3VidG90YWwgY29tcGF0aWJsZSBjb24gYmFja2VuZHMgbnVldm9zIHkgbGVnYWN5LlxuICAgICAqXG4gICAgICogQHBhcmFtIGNhcnQgQ2Fycml0byB1IG9yZGVuIGNvbiBgdG90YWxzYC5cbiAgICAgKiBAcmV0dXJucyBgdG90YWxzLnN1YnRvdGFsYCBjdWFuZG8gZXhpc3RlOyBlbiBiYWNrZW5kcyBsZWdhY3kgdXNhIGB0b3RhbHMuaXRlbXNgLlxuICAgICAqL1xuICAgIGdldFN1bW1hcnlTdWJ0b3RhbEFtb3VudCA9IChjYXJ0OiBhbnkpOiBudW1iZXIgPT4ge1xuICAgICAgICBjb25zdCBjYXJ0U3VidG90YWwgPSBjYXJ0Py50b3RhbHM/LmNhcnRTdWJ0b3RhbCA/PyBjYXJ0Py50b3RhbHM/LmNhcnRfc3VidG90YWw7XG4gICAgICAgIGlmIChjYXJ0U3VidG90YWwgIT09IG51bGwgJiYgY2FydFN1YnRvdGFsICE9PSB1bmRlZmluZWQgJiYgY2FydFN1YnRvdGFsICE9PSAnJykge1xuICAgICAgICAgICAgcmV0dXJuIE51bWJlcihjYXJ0U3VidG90YWwpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc3VidG90YWwgPSBjYXJ0Py50b3RhbHM/LnN1YnRvdGFsO1xuICAgICAgICBpZiAoc3VidG90YWwgIT09IG51bGwgJiYgc3VidG90YWwgIT09IHVuZGVmaW5lZCAmJiBzdWJ0b3RhbCAhPT0gJycpIHtcbiAgICAgICAgICAgIHJldHVybiBOdW1iZXIoc3VidG90YWwpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIE51bWJlcihjYXJ0Py50b3RhbHM/Lml0ZW1zIHx8IDApO1xuICAgIH1cblxuICAgIC8qKiBUb3RhbCBxdWUgZGViZSBtb3N0cmFyIGVsIGNhcnJpdG8vc2lkZWJhciwgZXhjbHV5ZW5kbyBlbnbDrW8gcGVyc2lzdGlkby4gKi9cbiAgICBnZXRDYXJ0VG90YWxBbW91bnQgPSAoY2FydDogYW55KTogbnVtYmVyID0+IHtcbiAgICAgICAgY29uc3QgdG90YWxXaXRob3V0U2hpcHBpbmcgPSBjYXJ0Py50b3RhbHM/LnRvdGFsV2l0aG91dFNoaXBwaW5nID8/IGNhcnQ/LnRvdGFscz8udG90YWxfd2l0aG91dF9zaGlwcGluZztcbiAgICAgICAgaWYgKHRvdGFsV2l0aG91dFNoaXBwaW5nICE9PSBudWxsICYmIHRvdGFsV2l0aG91dFNoaXBwaW5nICE9PSB1bmRlZmluZWQgJiYgdG90YWxXaXRob3V0U2hpcHBpbmcgIT09ICcnKSB7XG4gICAgICAgICAgICByZXR1cm4gTnVtYmVyKHRvdGFsV2l0aG91dFNoaXBwaW5nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBOdW1iZXIoY2FydD8udG90YWxzPy50b3RhbCB8fCAwKTtcbiAgICB9XG5cbiAgICAvKiogSW1wdWVzdG9zIGRlIHByb2R1Y3RvcyBwYXJhIGNhcnJpdG8vc2lkZWJhciwgY29uIGZhbGxiYWNrIGxlZ2FjeS4gKi9cbiAgICBnZXRDYXJ0VGF4ZXNBbW91bnQgPSAoY2FydDogYW55KTogbnVtYmVyID0+IHtcbiAgICAgICAgY29uc3QgY2FydFRheGVzID0gY2FydD8udG90YWxzPy5jYXJ0VGF4ZXMgPz8gY2FydD8udG90YWxzPy5jYXJ0X3RheGVzO1xuICAgICAgICBpZiAoY2FydFRheGVzICE9PSBudWxsICYmIGNhcnRUYXhlcyAhPT0gdW5kZWZpbmVkICYmIGNhcnRUYXhlcyAhPT0gJycpIHtcbiAgICAgICAgICAgIHJldHVybiBOdW1iZXIoY2FydFRheGVzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBOdW1iZXIoY2FydD8udG90YWxzPy50YXhlcyB8fCAwKTtcbiAgICB9XG5cbiAgICAvKiogSW1wdWVzdG9zIGVzcGVjw61maWNvcyBkZWwgY2xpZW50ZSBwYXJhIGNhcnJpdG8vc2lkZWJhciwgY29uIGZhbGxiYWNrIGxlZ2FjeS4gKi9cbiAgICBnZXRDYXJ0Q2xpZW50VGF4ZXNBbW91bnQgPSAoY2FydDogYW55KTogbnVtYmVyID0+IHtcbiAgICAgICAgY29uc3QgY2FydENsaWVudFRheGVzID0gY2FydD8udG90YWxzPy5jYXJ0Q2xpZW50VGF4ZXMgPz8gY2FydD8udG90YWxzPy5jYXJ0X2NsaWVudF90YXhlcztcbiAgICAgICAgaWYgKGNhcnRDbGllbnRUYXhlcyAhPT0gbnVsbCAmJiBjYXJ0Q2xpZW50VGF4ZXMgIT09IHVuZGVmaW5lZCAmJiBjYXJ0Q2xpZW50VGF4ZXMgIT09ICcnKSB7XG4gICAgICAgICAgICByZXR1cm4gTnVtYmVyKGNhcnRDbGllbnRUYXhlcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gTnVtYmVyKGNhcnQ/LnRvdGFscz8uY2xpZW50VGF4ZXMgfHwgMCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5kaWNhIHNpIGVsIGJhY2tlbmQgeWEgaW5mb3JtYSBlbCBkZXNnbG9zZSBudWV2byBkZSBwcm9tb2Npb25lcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYXJ0IENhcnJpdG8gdSBvcmRlbiBjb24gYHRvdGFsc2AuXG4gICAgICogQHJldHVybnMgYHRydWVgIGN1YW5kbyBleGlzdGUgYHByb21vdGlvbkJyZWFrZG93bi5vcmRlclByb21vdGlvbnNgLlxuICAgICAqL1xuICAgIGhhc09yZGVyUHJvbW90aW9uc0JyZWFrZG93biA9IChjYXJ0OiBhbnkpOiBib29sZWFuID0+IHtcbiAgICAgICAgY29uc3QgYnJlYWtkb3duID0gY2FydD8udG90YWxzPy5wcm9tb3Rpb25CcmVha2Rvd24gfHwgY2FydD8udG90YWxzPy5wcm9tb3Rpb25fYnJlYWtkb3duO1xuICAgICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGJyZWFrZG93biB8fCB7fSwgJ29yZGVyUHJvbW90aW9ucycpXG4gICAgICAgICAgICB8fCBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYnJlYWtkb3duIHx8IHt9LCAnb3JkZXJfcHJvbW90aW9ucycpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluZGljYSBzaSBlbCBjYXJyaXRvIHRpZW5lIHVuIGN1cMOzbiBhcGxpY2FkbywgaW5kZXBlbmRpZW50ZW1lbnRlIGRlIGPDs21vIGltcGFjdGUgZW4gZWwgcmVzdW1lbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYXJ0IENhcnJpdG8gYWN0dWFsLlxuICAgICAqIEByZXR1cm5zIGB0cnVlYCBjdWFuZG8gaGF5IHVuIGPDs2RpZ28gZGUgY3Vww7NuIG8gdW5hIGzDrW5lYSBkZSBkZXNjdWVudG8gZGUgdGlwbyBjdXDDs24uXG4gICAgICpcbiAgICAgKiBAcmVtYXJrc1xuICAgICAqIEVzdGUgaGVscGVyIGV2aXRhIGF0YXIgbGEgVUkgZGUgYFF1aXRhciBjdXDDs25gIGFsIG1vbnRvIGRlIGRlc2N1ZW50b3MgZGUgb3JkZW4uXG4gICAgICogVW4gY3Vww7NuIHB1ZWRlIGFmZWN0YXIgcHJvbW9jaW9uZXMgdW5pdGFyaWFzIHkgZGVqYXIgYG9yZGVyUHJvbW90aW9ucyA9IDBgLlxuICAgICAqL1xuICAgIGhhc0FwcGxpZWRDb3Vwb24gPSAoY2FydDogYW55KTogYm9vbGVhbiA9PiB7XG4gICAgICAgIGlmIChCb29sZWFuKGNhcnQ/LmNvdXBvbkNvZGUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KGNhcnQ/LmNhcnREaXNjb3VudHMpXG4gICAgICAgICAgICAmJiBjYXJ0LmNhcnREaXNjb3VudHMuc29tZShkaXNjb3VudCA9PiAoZGlzY291bnQ/LnR5cGUgfHwgJycpLnRvU3RyaW5nKCkuaW5jbHVkZXMoJ2NvdXBvbicpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbmRpY2Egc2kgZWwgY2Fycml0byB0aWVuZSB1bmEgcHJvbW9jacOzbiBhc29jaWFkYSBhbCBlbnbDrW8uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2FydCBDYXJyaXRvIGFjdHVhbC5cbiAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgY3VhbmRvIGFsZ3VuYSBsw61uZWEgZGUgZGVzY3VlbnRvIGNvcnJlc3BvbmRlIGEgc2hpcHBpbmcuXG4gICAgICovXG4gICAgaGFzU2hpcHBpbmdQcm9tb3Rpb24gPSAoY2FydDogYW55KTogYm9vbGVhbiA9PlxuICAgICAgICBBcnJheS5pc0FycmF5KGNhcnQ/LmNhcnREaXNjb3VudHMpXG4gICAgICAgICAgICAmJiBjYXJ0LmNhcnREaXNjb3VudHMuc29tZShkaXNjb3VudCA9PiB0aGlzLmZvcm1hdFR5cGUoKGRpc2NvdW50Py50eXBlIHx8ICcnKS50b1N0cmluZygpKSA9PT0gJ3NoaXBtZW50Jyk7XG5cbiAgICAvKipcbiAgICAgKiBEZXZ1ZWx2ZSBlbCBtb250byBlZmVjdGl2byBkZSB1bmEgbMOtbmVhIGRlIGRlc2N1ZW50by9wcm9tb2Npw7NuLlxuICAgICAqXG4gICAgICogQHBhcmFtIGRpc2NvdW50IEzDrW5lYSBjcnVkYSBkZSBkZXNjdWVudG8gZGVsIGJhY2tlbmQuXG4gICAgICogQHBhcmFtIGNhcnQgQ2Fycml0byBhc29jaWFkby5cbiAgICAgKiBAcmV0dXJucyBNb250byBxdWUgZGViZSBtb3N0cmFyc2UgZW4gVUkuXG4gICAgICovXG4gICAgZ2V0QW1vdW50ID0gKGRpc2NvdW50LCBjYXJ0KTogbnVtYmVyID0+IHtcbiAgICAgICAgaWYgKGRpc2NvdW50LnR5cGUgIT0gJ3NoaXBtZW50JykgcmV0dXJuIGRpc2NvdW50LmFtb3VudDtcbiAgICAgICAgcmV0dXJuIGNhcnQudG90YWxzLnNoaXBwaW5nO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhvbW9sb2dhIHRpcG9zIGNydWRvcyBkZWwgYmFja2VuZCBhbCBjb25qdW50byBkZSB0aXBvcyB1c2FkbyBwb3IgY2hlY2tvdXQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdHlwZSBUaXBvIGNydWRvIChgb3JkZXJfcHJvbW90aW9uYCwgYG9yZGVyX2NvdXBvbl9wcm9tb3Rpb25gLCBldGMuKS5cbiAgICAgKiBAcmV0dXJucyBUaXBvIG5vcm1hbGl6YWRvIGNvbnN1bWlkbyBwb3IgbG9zIGNvbXBvbmVudGVzIGRlbCBjb3JlLlxuICAgICAqL1xuICAgIGZvcm1hdFR5cGUgPSAodHlwZTogc3RyaW5nKTogQ2hlY2tvdXREYXRhVHlwZSA9PiB7XG4gICAgICAgIGxldCByZXN1bHQ7XG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnb3JkZXJfcHJvbW90aW9uJzogcmVzdWx0ID0gJ2Rpc2NvdW50JzsgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdvcmRlcl9zaGlwcGluZ19wcm9tb3Rpb24nOiByZXN1bHQgPSAnc2hpcG1lbnQnOyBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ29yZGVyX2NvdXBvbl9wcm9tb3Rpb24nOiByZXN1bHQgPSAnY291cG9uJzsgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdvcmRlcl91bml0X3Byb21vdGlvbic6IHJlc3VsdCA9ICdkaXNjb3VudCc7IGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgICFyZXN1bHQgJiYgKHJlc3VsdCA9IHR5cGUuaW5jbHVkZXMoJ3Byb21vdGlvbicpIHx8IHR5cGUuaW5jbHVkZXMoJ2Rpc2NvdW50JykgPyAnZGlzY291bnQnIDogdHlwZSApXG4gICAgICAgIHJldHVybiByZXN1bHQgfHwgdHlwZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG5vcm1hbGl6ZUFtb3VudCA9ICh2YWx1ZTogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IG51bWJlciB8IG51bGwgPT4ge1xuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgbm9ybWFsaXplZCA9IE51bWJlcih2YWx1ZSk7XG4gICAgICAgIHJldHVybiBOdW1iZXIuaXNGaW5pdGUobm9ybWFsaXplZCkgPyBub3JtYWxpemVkIDogbnVsbDtcbiAgICB9XG59XG4iXX0=
|
|
318
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItdXRpbC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZWFzeWNvbW1lcmNlLyIsInNvdXJjZXMiOlsibGliL3V0aWxzL29yZGVyLXV0aWwuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTNDO0lBRUk7UUFBQSxpQkFBaUI7UUFFakI7Ozs7V0FJRztRQUNILGtCQUFhLEdBQUcsVUFBQyxJQUFTLEVBQUUsT0FBd0I7WUFBeEIsd0JBQUEsRUFBQSxlQUF3Qjs7WUFDaEQsSUFBSSxRQUFDLElBQUksMENBQUUsTUFBTSxDQUFBO2dCQUFFLE9BQU8sRUFBRSxDQUFDO1lBQzdCLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLFdBQVc7Z0JBQUUsT0FBTyxFQUFFLENBQUM7WUFDdkUsSUFBSSxTQUFTLEdBQW1CLEVBQUUsQ0FBQztZQUNuQyxJQUFJLFFBQVEsR0FBaUIsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEtBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2pILElBQUksS0FBSyxHQUFpQixFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUN0RixDQUFDLE9BQU8sSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3hDLHNDQUFzQztZQUNuQyxJQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2xGLEtBQUssSUFBSSxLQUFLLEdB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QyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMzRCxDQUFDLENBQUE7SUFyVGUsQ0FBQztJQUZSLG1CQUFtQjtRQUQvQixVQUFVLEVBQUU7T0FDQSxtQkFBbUIsQ0F3VC9CO0lBQUQsMEJBQUM7Q0FBQSxBQXhURCxJQXdUQztTQXhUWSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDaGVja291dERhdGEsIENoZWNrb3V0RGF0YVR5cGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NoZWNrb3V0LWRhdGEnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgT3JkZXJVdGlsaXR5U2VydmljZSB7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIGNhcnQgT2JqZXRvIGNhcnJpdG8gbyBvcmRlbiwgaW5kaXN0aW50YW1lbnRlLCB5YSBxdWUgcG9zZWVuIGVsIG1pc21vIGZvcm1hdG9cbiAgICAgKiBAcGFyYW0gZm9yQ2FydCBTaSBsYSBzb2xpY2l0dWQgZGUgcHJvbW9jaW9uZXMgcHJvdmllbmUgZGVsIGNhcnJpdG8sIHN1cHJpbWUgZWwgc3VidG90YWwgeSBlbCB0b3RhbFxuICAgICAqIEBkZXNjcmlwdGlvbiBEZXZ1ZWx2ZSB1biBsaXN0YWRvIGNvbiB0b2RhcyBsYXMgcHJvbW9jaW9uZXMgcXVlIHBvc2VlIGVsIGNhcnJvL29yZGVuXG4gICAgICovXG4gICAgZ2V0UHJvbW90aW9ucyA9IChjYXJ0OiBhbnksIGZvckNhcnQ6IGJvb2xlYW4gPSBmYWxzZSk6IENoZWNrb3V0RGF0YVtdID0+IHtcbiAgICAgICAgaWYgKCFjYXJ0Py50b3RhbHMpIHJldHVybiBbXTtcbiAgICAgICAgaWYgKGNhcnQuY2hlY2tvdXRTdGF0ZSAmJiBjYXJ0LmNoZWNrb3V0U3RhdGUgPT0gXCJjb21wbGV0ZWRcIikgcmV0dXJuIFtdO1xuICAgICAgICBsZXQgbmV3X3N0YXRlOiBDaGVja291dERhdGFbXSA9IFtdO1xuICAgICAgICBsZXQgc3VidG90YWw6IENoZWNrb3V0RGF0YSA9IHsgdHlwZTogJ3N1YnRvdGFsJywgbmFtZTogJ3N1YnRvdGFsJywgYW1vdW50OiB0aGlzLmdldFN1bW1hcnlTdWJ0b3RhbEFtb3VudChjYXJ0KSB9O1xuICAgICAgICBsZXQgdG90YWw6IENoZWNrb3V0RGF0YSA9IHsgdHlwZTogJ3RvdGFsJywgbmFtZTogJ3RvdGFsJywgYW1vdW50OiBjYXJ0LnRvdGFscy50b3RhbCB9O1xuICAgICAgICAhZm9yQ2FydCAmJiBuZXdfc3RhdGUucHVzaChzdWJ0b3RhbCk7XG4gICAgIC8vICAgIGNvbnNvbGUubG9nKGNhcnQuY2FydERpc2NvdW50cyk7XG4gICAgICAgIGNvbnN0IGNhcnREaXNjb3VudHMgPSBBcnJheS5pc0FycmF5KGNhcnQuY2FydERpc2NvdW50cykgPyBjYXJ0LmNhcnREaXNjb3VudHMgOiBbXTtcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGNhcnREaXNjb3VudHMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgaWYgKGNhcnREaXNjb3VudHNbaW5kZXhdPy50eXBlID09PSAncGF5bWVudF9tZXRob2QnKSBjb250aW51ZTtcbiAgICAgICAgICBjYXJ0RGlzY291bnRzW2luZGV4XS50eXBlID0gdGhpcy5mb3JtYXRUeXBlKGNhcnREaXNjb3VudHNbaW5kZXhdLnR5cGUpO1xuICAgICAgICAgICAgIG5ld19zdGF0ZS5wdXNoKHtcbiAgICAgICAgICAgICAgICAgdHlwZTogY2FydERpc2NvdW50c1tpbmRleF0udHlwZSxcbiAgICAgICAgICAgICAgICAgbmFtZTogKGNhcnREaXNjb3VudHNbaW5kZXhdLnR5cGUgIT0gJ2NvdXBvbicpID8gY2FydERpc2NvdW50c1tpbmRleF0ubmFtZSA6ICdjb3Vwb24nLFxuICAgICAgICAgICAgICAgICBhbW91bnQ6IHRoaXMuZ2V0QW1vdW50KGNhcnREaXNjb3VudHNbaW5kZXhdLCBjYXJ0KVxuICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIH1cbiAgICAgLy8gICAgY2FydC5jYXJ0RGlzY291bnRzLmZvckVhY2goY2FydERpc2NvdW50ID0+IHtcbiAgICAgLy8gICAgICAgIGNhcnREaXNjb3VudC50eXBlID0gdGhpcy5mb3JtYXRUeXBlKGNhcnREaXNjb3VudC50eXBlKTtcbiAgICAgLy8gICAgICAgIG5ld19zdGF0ZS5wdXNoKHtcbiAgICAgLy8gICAgICAgICAgICB0eXBlOiBjYXJ0RGlzY291bnQudHlwZSxcbiAgICAgLy8gICAgICAgICAgICBuYW1lOiAoY2FydERpc2NvdW50LnR5cGUgIT0gJ2NvdXBvbicpID8gY2FydERpc2NvdW50Lm5hbWUgOiAnY291cG9uJyxcbiAgICAgLy8gICAgICAgICAgICBhbW91bnQ6IHRoaXMuZ2V0QW1vdW50KGNhcnREaXNjb3VudCwgY2FydClcbiAgICAgLy8gICAgICAgIH0pO1xuICAgICAvLyAgICB9KTtcbiAgICAgICAgY29uc3QgcGF5bWVudE1ldGhvZEFkanVzdG1lbnQgPSB0aGlzLmdldFBheW1lbnRNZXRob2RBZGp1c3RtZW50KGNhcnQpO1xuICAgICAgICBwYXltZW50TWV0aG9kQWRqdXN0bWVudCAmJiBuZXdfc3RhdGUucHVzaChwYXltZW50TWV0aG9kQWRqdXN0bWVudCk7XG4gICAgICAgICFmb3JDYXJ0ICYmIG5ld19zdGF0ZS5wdXNoKHRvdGFsKTtcbiAgICAgICAgcmV0dXJuIG5ld19zdGF0ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb25zdHJ1eWUgZWwgcmVzdW1lbiBkZSBwcm9tb2Npb25lcyBxdWUgZGViZSBtb3N0cmFyc2UgZW4gY2hlY2tvdXQgeSByZXPDum1lbmVzIGRlIGNvbXByYS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYXJ0IENhcnJpdG8gdSBvcmRlbiBjb24gZXN0cnVjdHVyYSBgdG90YWxzYCBjb21wYXRpYmxlLlxuICAgICAqIEBwYXJhbSBmb3JDYXJ0IEN1YW5kbyBlcyBgdHJ1ZWAsIG9taXRlIHN1YnRvdGFsIHkgdG90YWwgcGFyYSBkZXZvbHZlciBzb2xvIGxhcyBsw61uZWFzIGludGVybWVkaWFzLlxuICAgICAqIEByZXR1cm5zIExpc3RhIGRlIGzDrW5lYXMgbm9ybWFsaXphZGFzIHBhcmEgcmVuZGVyaXphciBlbCByZXN1bWVuLlxuICAgICAqXG4gICAgICogQHJlbWFya3NcbiAgICAgKiBBIGRpZmVyZW5jaWEgZGUgYGdldFByb21vdGlvbnNgLCBlc3RlIG3DqXRvZG8gc29sbyBjb25zaWRlcmEgZGVzY3VlbnRvcyBkZSBvcmRlbi5cbiAgICAgKi9cbiAgICBnZXRTdW1tYXJ5UHJvbW90aW9ucyA9IChjYXJ0OiBhbnksIGZvckNhcnQ6IGJvb2xlYW4gPSBmYWxzZSk6IENoZWNrb3V0RGF0YVtdID0+IHtcbiAgICAgICAgaWYgKGNhcnQuY2hlY2tvdXRTdGF0ZSAmJiBjYXJ0LmNoZWNrb3V0U3RhdGUgPT0gXCJjb21wbGV0ZWRcIikgcmV0dXJuO1xuICAgICAgICBsZXQgbmV3X3N0YXRlOiBDaGVja291dERhdGFbXSA9IFtdO1xuICAgICAgICBsZXQgc3VidG90YWw6IENoZWNrb3V0RGF0YSA9IHsgdHlwZTogJ3N1YnRvdGFsJywgbmFtZTogJ3N1YnRvdGFsJywgYW1vdW50OiB0aGlzLmdldFN1bW1hcnlTdWJ0b3RhbEFtb3VudChjYXJ0KSB9O1xuICAgICAgICBsZXQgdG90YWw6IENoZWNrb3V0RGF0YSA9IHsgdHlwZTogJ3RvdGFsJywgbmFtZTogJ3RvdGFsJywgYW1vdW50OiBjYXJ0LnRvdGFscy50b3RhbCB9O1xuICAgICAgICBjb25zdCBwcm9tb3Rpb25BbW91bnQgPSB0aGlzLmdldFN1bW1hcnlQcm9tb3Rpb25BbW91bnQoY2FydCk7XG5cbiAgICAgICAgIWZvckNhcnQgJiYgbmV3X3N0YXRlLnB1c2goc3VidG90YWwpO1xuICAgICAgICBwcm9tb3Rpb25BbW91bnQgIT0gMCAmJiBuZXdfc3RhdGUucHVzaCh7XG4gICAgICAgICAgICB0eXBlOiAnZGlzY291bnQnLFxuICAgICAgICAgICAgbmFtZTogJ2Rpc2NvdW50JyxcbiAgICAgICAgICAgIGFtb3VudDogcHJvbW90aW9uQW1vdW50XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBwYXltZW50TWV0aG9kQWRqdXN0bWVudCA9IHRoaXMuZ2V0UGF5bWVudE1ldGhvZEFkanVzdG1lbnQoY2FydCk7XG4gICAgICAgIHBheW1lbnRNZXRob2RBZGp1c3RtZW50ICYmIG5ld19zdGF0ZS5wdXNoKHBheW1lbnRNZXRob2RBZGp1c3RtZW50KTtcbiAgICAgICAgIWZvckNhcnQgJiYgbmV3X3N0YXRlLnB1c2godG90YWwpO1xuICAgICAgICByZXR1cm4gbmV3X3N0YXRlO1xuICAgIH1cblxuICAgIGdldFBheW1lbnRNZXRob2RBZGp1c3RtZW50ID0gKGNhcnQ6IGFueSk6IENoZWNrb3V0RGF0YSB8IG51bGwgPT4ge1xuICAgICAgICBjb25zdCByYXdBbW91bnQgPSBjYXJ0Py50b3RhbHM/LnBheW1lbnRNZXRob2RBZGp1c3RtZW50O1xuICAgICAgICBpZiAocmF3QW1vdW50ID09PSBudWxsIHx8IHJhd0Ftb3VudCA9PT0gdW5kZWZpbmVkIHx8IE51bWJlcihyYXdBbW91bnQpID09PSAwKSByZXR1cm4gbnVsbDtcblxuICAgICAgICBjb25zdCBhbW91bnQgPSBOdW1iZXIocmF3QW1vdW50KTtcbiAgICAgICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUoYW1vdW50KSkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6ICdwYXltZW50TWV0aG9kQWRqdXN0bWVudCcsXG4gICAgICAgICAgICBuYW1lOiBjYXJ0Py50b3RhbHM/LnBheW1lbnRNZXRob2RBZGp1c3RtZW50TGFiZWwgfHwgKGFtb3VudCA8IDAgPyAnZGlzY291bnQnIDogJ3N1cmNoYXJnZScpLFxuICAgICAgICAgICAgYW1vdW50XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV2dWVsdmUgZWwgbW9udG8gZGUgZW52w61vIHF1ZSBkZWJlIG1vc3RyYXJzZSBlbiBlbCByZXN1bWVuLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNhcnQgQ2Fycml0byB1IG9yZGVuIGNvbiBgdG90YWxzYC5cbiAgICAgKiBAcmV0dXJucyBgbnVtYmVyYCBjdWFuZG8gZWwgZW52w61vIGRlYmUgbW9zdHJhcnNlLCBvIGBudWxsYCBjdWFuZG8gbm8gY29ycmVzcG9uZGUgcmVuZGVyaXphcmxvLlxuICAgICAqXG4gICAgICogQHJlbWFya3NcbiAgICAgKiAtIFNpIGVsIGJhY2tlbmQgaW5mb3JtYSB1biBzaGlwcGluZyBkaXN0aW50byBkZSBjZXJvLCBlc2UgdmFsb3Igc2UgbXVlc3RyYSB0YWwgY3VhbC5cbiAgICAgKiAtIFNpIGB0b3RhbHMuc2hpcHBpbmdgIGVzIGAwYCBwZXJvIGV4aXN0ZSB1bmEgcHJvbW9jacOzbiBkZSBlbnbDrW8sIHNlIG11ZXN0cmEgYDBgIHBhcmEgcXVlIGxhIFVJIGxvIGludGVycHJldGUgY29tbyBncmF0aXMuXG4gICAgICogLSBTaSBubyBoYXkgZGF0b3Mgc3VmaWNpZW50ZXMsIHNlIGRldnVlbHZlIGBudWxsYCB5IHNlIGNvbnNlcnZhIGVsIGNvbXBvcnRhbWllbnRvIHByZXZpbyBkZSBubyBtb3N0cmFyIGxhIGzDrW5lYS5cbiAgICAgKi9cbiAgICBnZXRTdW1tYXJ5U2hpcG1lbnRBbW91bnQgPSAoY2FydDogYW55KTogbnVtYmVyIHwgbnVsbCA9PiB7XG4gICAgICAgIGNvbnN0IHNoaXBwaW5nQW1vdW50ID0gdGhpcy5ub3JtYWxpemVBbW91bnQoY2FydD8udG90YWxzPy5zaGlwcGluZyk7XG4gICAgICAgIGlmIChzaGlwcGluZ0Ftb3VudCAhPT0gbnVsbCAmJiBzaGlwcGluZ0Ftb3VudCAhPT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHNoaXBwaW5nQW1vdW50O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNoaXBwaW5nQW1vdW50ID09PSAwICYmIHRoaXMuaGFzU2hpcHBpbmdQcm9tb3Rpb24oY2FydCkpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT2J0aWVuZSBlbCBtb250byBkZSBkZXNjdWVudG8gcXVlIGNvcnJlc3BvbmRlIGFsIHJlc3VtZW4gZGUgbGEgb3JkZW4uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2FydCBDYXJyaXRvIHUgb3JkZW4gY29uIGB0b3RhbHNgLlxuICAgICAqIEByZXR1cm5zIE1vbnRvIGRlIHByb21vY2lvbmVzIGRlIG9yZGVuLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0c1xuICAgICAqIGNvbnN0IGFtb3VudCA9IHRoaXMub3JkZXJVdGlscy5nZXRTdW1tYXJ5UHJvbW90aW9uQW1vdW50KGNhcnQpO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQHJlbWFya3NcbiAgICAgKiBTaSBlbCBiYWNrZW5kIG51ZXZvIGluZm9ybWEgYHByb21vdGlvbkJyZWFrZG93bi5vcmRlclByb21vdGlvbnNgLCBlc2UgdmFsb3IgdGllbmUgcHJpb3JpZGFkLlxuICAgICAqIENvbiBiYWNrZW5kcyB2aWVqb3MgaGFjZSBmYWxsYmFjayBhIGB0b3RhbHMucHJvbW90aW9uYCBvIGB0b3RhbHMuZGlzY291bnRgLlxuICAgICAqL1xuICAgIGdldFN1bW1hcnlQcm9tb3Rpb25BbW91bnQgPSAoY2FydDogYW55KTogbnVtYmVyID0+IHtcbiAgICAgICAgY29uc3Qgb3JkZXJEaXNjb3VudCA9IGNhcnQ/LnRvdGFscz8ub3JkZXJEaXNjb3VudCA/PyBjYXJ0Py50b3RhbHM/Lm9yZGVyX2Rpc2NvdW50O1xuICAgICAgICBpZiAob3JkZXJEaXNjb3VudCAhPT0gbnVsbCAmJiBvcmRlckRpc2NvdW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBOdW1iZXIob3JkZXJEaXNjb3VudCB8fCAwKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5oYXNPcmRlclByb21vdGlvbnNCcmVha2Rvd24oY2FydCkpIHtcbiAgICAgICAgICAgIHJldHVybiBOdW1iZXIoXG4gICAgICAgICAgICAgICAgY2FydD8udG90YWxzPy5wcm9tb3Rpb25CcmVha2Rvd24/Lm9yZGVyUHJvbW90aW9uc1xuICAgICAgICAgICAgICAgID8/IGNhcnQ/LnRvdGFscz8ucHJvbW90aW9uX2JyZWFrZG93bj8ub3JkZXJfcHJvbW90aW9uc1xuICAgICAgICAgICAgICAgID8/IDBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE51bWJlcihjYXJ0Py50b3RhbHM/LnByb21vdGlvbiB8fCBjYXJ0Py50b3RhbHM/LmRpc2NvdW50IHx8IDApO1xuICAgIH1cblxuICAgIC8qKiBEZXNjdWVudG8gZGUgb3JkZW4gc2VwYXJhZG8gZGUgY3Vwb25lcyB5IGRlc2N1ZW50b3MgZGUgZW52w61vLiAqL1xuICAgIGdldE9yZGVyUHJvbW90aW9uQW1vdW50ID0gKGNhcnQ6IGFueSk6IG51bWJlciA9PiB7XG4gICAgICAgIGNvbnN0IGJyZWFrZG93biA9IGNhcnQ/LnRvdGFscz8ucHJvbW90aW9uQnJlYWtkb3duIHx8IGNhcnQ/LnRvdGFscz8ucHJvbW90aW9uX2JyZWFrZG93bjtcbiAgICAgICAgaWYgKGJyZWFrZG93biAmJiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGJyZWFrZG93biwgJ29yZGVyUHJvbW90aW9ucycpXG4gICAgICAgICAgICB8fCBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYnJlYWtkb3duLCAnb3JkZXJfcHJvbW90aW9ucycpKSkge1xuICAgICAgICAgICAgcmV0dXJuIE51bWJlcihicmVha2Rvd24ub3JkZXJQcm9tb3Rpb25zID8/IGJyZWFrZG93bi5vcmRlcl9wcm9tb3Rpb25zID8/IDApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY2FydD8uY2FydERpc2NvdW50cykpIHtcbiAgICAgICAgICAgIHJldHVybiBjYXJ0LmNhcnREaXNjb3VudHNcbiAgICAgICAgICAgICAgICAuZmlsdGVyKGRpc2NvdW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdHlwZSA9IChkaXNjb3VudD8udHlwZSB8fCAnJykudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHlwZS5pbmNsdWRlcygnb3JkZXInKSAmJiAhdHlwZS5pbmNsdWRlcygnY291cG9uJykgJiYgIXR5cGUuaW5jbHVkZXMoJ3NoaXBwaW5nJyk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAucmVkdWNlKCh0b3RhbCwgZGlzY291bnQpID0+IHRvdGFsICsgTnVtYmVyKGRpc2NvdW50Py5hbW91bnQgfHwgMCksIDApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNhcnQ/LmNvdXBvbkNvZGUgfHwgY2FydD8uY291cG9uX2NvZGVcbiAgICAgICAgICAgID8gMFxuICAgICAgICAgICAgOiBOdW1iZXIoY2FydD8udG90YWxzPy5vcmRlckRpc2NvdW50ID8/IGNhcnQ/LnRvdGFscz8ub3JkZXJfZGlzY291bnQgPz8gY2FydD8udG90YWxzPy5wcm9tb3Rpb24gPz8gMCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT2J0aWVuZSDDum5pY2FtZW50ZSBlbCBkZXNjdWVudG8gYXBsaWNhZG8gcG9yIGVsIGN1cMOzbi5cbiAgICAgKlxuICAgICAqIERldnVlbHZlIGBudWxsYCBjdWFuZG8gbGEgcmVzcHVlc3RhIG5vIHBlcm1pdGUgaWRlbnRpZmljYXIgc3UgaW1wb3J0ZSxcbiAgICAgKiBwYXJhIHF1ZSBlbCBmcm9udGVuZCBwdWVkYSBtb3N0cmFyIHNvbGFtZW50ZSBlbCBjw7NkaWdvLlxuICAgICAqL1xuICAgIGdldENvdXBvblByb21vdGlvbkFtb3VudCA9IChjYXJ0OiBhbnkpOiBudW1iZXIgfCBudWxsID0+IHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGNhcnQ/LmNhcnREaXNjb3VudHMpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvdXBvbkRpc2NvdW50cyA9IGNhcnQuY2FydERpc2NvdW50cy5maWx0ZXIoZGlzY291bnQgPT5cbiAgICAgICAgICAgIChkaXNjb3VudD8udHlwZSB8fCAnJykudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdjb3Vwb24nKVxuICAgICAgICApO1xuXG4gICAgICAgIGlmICghY291cG9uRGlzY291bnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY291cG9uRGlzY291bnRzLnJlZHVjZSgodG90YWwsIGRpc2NvdW50KSA9PiB0b3RhbCArIE51bWJlcihkaXNjb3VudD8uYW1vdW50IHx8IDApLCAwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPYnRpZW5lIGVsIHN1YnRvdGFsIGNvbXBhdGlibGUgY29uIGJhY2tlbmRzIG51ZXZvcyB5IGxlZ2FjeS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYXJ0IENhcnJpdG8gdSBvcmRlbiBjb24gYHRvdGFsc2AuXG4gICAgICogQHJldHVybnMgYHRvdGFscy5zdWJ0b3RhbGAgY3VhbmRvIGV4aXN0ZTsgZW4gYmFja2VuZHMgbGVnYWN5IHVzYSBgdG90YWxzLml0ZW1zYC5cbiAgICAgKi9cbiAgICBnZXRTdW1tYXJ5U3VidG90YWxBbW91bnQgPSAoY2FydDogYW55KTogbnVtYmVyID0+IHtcbiAgICAgICAgY29uc3QgY2FydFN1YnRvdGFsID0gY2FydD8udG90YWxzPy5jYXJ0U3VidG90YWwgPz8gY2FydD8udG90YWxzPy5jYXJ0X3N1YnRvdGFsO1xuICAgICAgICBpZiAoY2FydFN1YnRvdGFsICE9PSBudWxsICYmIGNhcnRTdWJ0b3RhbCAhPT0gdW5kZWZpbmVkICYmIGNhcnRTdWJ0b3RhbCAhPT0gJycpIHtcbiAgICAgICAgICAgIHJldHVybiBOdW1iZXIoY2FydFN1YnRvdGFsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHN1YnRvdGFsID0gY2FydD8udG90YWxzPy5zdWJ0b3RhbDtcbiAgICAgICAgaWYgKHN1YnRvdGFsICE9PSBudWxsICYmIHN1YnRvdGFsICE9PSB1bmRlZmluZWQgJiYgc3VidG90YWwgIT09ICcnKSB7XG4gICAgICAgICAgICByZXR1cm4gTnVtYmVyKHN1YnRvdGFsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBOdW1iZXIoY2FydD8udG90YWxzPy5pdGVtcyB8fCAwKTtcbiAgICB9XG5cbiAgICAvKiogVG90YWwgcXVlIGRlYmUgbW9zdHJhciBlbCBjYXJyaXRvL3NpZGViYXIsIGV4Y2x1eWVuZG8gZW52w61vIHBlcnNpc3RpZG8uICovXG4gICAgZ2V0Q2FydFRvdGFsQW1vdW50ID0gKGNhcnQ6IGFueSk6IG51bWJlciA9PiB7XG4gICAgICAgIGNvbnN0IHRvdGFsV2l0aG91dFNoaXBwaW5nID0gY2FydD8udG90YWxzPy50b3RhbFdpdGhvdXRTaGlwcGluZyA/PyBjYXJ0Py50b3RhbHM/LnRvdGFsX3dpdGhvdXRfc2hpcHBpbmc7XG4gICAgICAgIGlmICh0b3RhbFdpdGhvdXRTaGlwcGluZyAhPT0gbnVsbCAmJiB0b3RhbFdpdGhvdXRTaGlwcGluZyAhPT0gdW5kZWZpbmVkICYmIHRvdGFsV2l0aG91dFNoaXBwaW5nICE9PSAnJykge1xuICAgICAgICAgICAgcmV0dXJuIE51bWJlcih0b3RhbFdpdGhvdXRTaGlwcGluZyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gTnVtYmVyKGNhcnQ/LnRvdGFscz8udG90YWwgfHwgMCk7XG4gICAgfVxuXG4gICAgLyoqIEltcHVlc3RvcyBkZSBwcm9kdWN0b3MgcGFyYSBjYXJyaXRvL3NpZGViYXIsIGNvbiBmYWxsYmFjayBsZWdhY3kuICovXG4gICAgZ2V0Q2FydFRheGVzQW1vdW50ID0gKGNhcnQ6IGFueSk6IG51bWJlciA9PiB7XG4gICAgICAgIGNvbnN0IGNhcnRUYXhlcyA9IGNhcnQ/LnRvdGFscz8uY2FydFRheGVzID8/IGNhcnQ/LnRvdGFscz8uY2FydF90YXhlcztcbiAgICAgICAgaWYgKGNhcnRUYXhlcyAhPT0gbnVsbCAmJiBjYXJ0VGF4ZXMgIT09IHVuZGVmaW5lZCAmJiBjYXJ0VGF4ZXMgIT09ICcnKSB7XG4gICAgICAgICAgICByZXR1cm4gTnVtYmVyKGNhcnRUYXhlcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gTnVtYmVyKGNhcnQ/LnRvdGFscz8udGF4ZXMgfHwgMCk7XG4gICAgfVxuXG4gICAgLyoqIEltcHVlc3RvcyBlc3BlY8OtZmljb3MgZGVsIGNsaWVudGUgcGFyYSBjYXJyaXRvL3NpZGViYXIsIGNvbiBmYWxsYmFjayBsZWdhY3kuICovXG4gICAgZ2V0Q2FydENsaWVudFRheGVzQW1vdW50ID0gKGNhcnQ6IGFueSk6IG51bWJlciA9PiB7XG4gICAgICAgIGNvbnN0IGNhcnRDbGllbnRUYXhlcyA9IGNhcnQ/LnRvdGFscz8uY2FydENsaWVudFRheGVzID8/IGNhcnQ/LnRvdGFscz8uY2FydF9jbGllbnRfdGF4ZXM7XG4gICAgICAgIGlmIChjYXJ0Q2xpZW50VGF4ZXMgIT09IG51bGwgJiYgY2FydENsaWVudFRheGVzICE9PSB1bmRlZmluZWQgJiYgY2FydENsaWVudFRheGVzICE9PSAnJykge1xuICAgICAgICAgICAgcmV0dXJuIE51bWJlcihjYXJ0Q2xpZW50VGF4ZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIE51bWJlcihjYXJ0Py50b3RhbHM/LmNsaWVudFRheGVzIHx8IDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEluZGljYSBzaSBlbCBiYWNrZW5kIHlhIGluZm9ybWEgZWwgZGVzZ2xvc2UgbnVldm8gZGUgcHJvbW9jaW9uZXMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2FydCBDYXJyaXRvIHUgb3JkZW4gY29uIGB0b3RhbHNgLlxuICAgICAqIEByZXR1cm5zIGB0cnVlYCBjdWFuZG8gZXhpc3RlIGBwcm9tb3Rpb25CcmVha2Rvd24ub3JkZXJQcm9tb3Rpb25zYC5cbiAgICAgKi9cbiAgICBoYXNPcmRlclByb21vdGlvbnNCcmVha2Rvd24gPSAoY2FydDogYW55KTogYm9vbGVhbiA9PiB7XG4gICAgICAgIGNvbnN0IGJyZWFrZG93biA9IGNhcnQ/LnRvdGFscz8ucHJvbW90aW9uQnJlYWtkb3duIHx8IGNhcnQ/LnRvdGFscz8ucHJvbW90aW9uX2JyZWFrZG93bjtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChicmVha2Rvd24gfHwge30sICdvcmRlclByb21vdGlvbnMnKVxuICAgICAgICAgICAgfHwgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGJyZWFrZG93biB8fCB7fSwgJ29yZGVyX3Byb21vdGlvbnMnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbmRpY2Egc2kgZWwgY2Fycml0byB0aWVuZSB1biBjdXDDs24gYXBsaWNhZG8sIGluZGVwZW5kaWVudGVtZW50ZSBkZSBjw7NtbyBpbXBhY3RlIGVuIGVsIHJlc3VtZW4uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2FydCBDYXJyaXRvIGFjdHVhbC5cbiAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgY3VhbmRvIGhheSB1biBjw7NkaWdvIGRlIGN1cMOzbiBvIHVuYSBsw61uZWEgZGUgZGVzY3VlbnRvIGRlIHRpcG8gY3Vww7NuLlxuICAgICAqXG4gICAgICogQHJlbWFya3NcbiAgICAgKiBFc3RlIGhlbHBlciBldml0YSBhdGFyIGxhIFVJIGRlIGBRdWl0YXIgY3Vww7NuYCBhbCBtb250byBkZSBkZXNjdWVudG9zIGRlIG9yZGVuLlxuICAgICAqIFVuIGN1cMOzbiBwdWVkZSBhZmVjdGFyIHByb21vY2lvbmVzIHVuaXRhcmlhcyB5IGRlamFyIGBvcmRlclByb21vdGlvbnMgPSAwYC5cbiAgICAgKi9cbiAgICBoYXNBcHBsaWVkQ291cG9uID0gKGNhcnQ6IGFueSk6IGJvb2xlYW4gPT4ge1xuICAgICAgICBpZiAoQm9vbGVhbihjYXJ0Py5jb3Vwb25Db2RlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShjYXJ0Py5jYXJ0RGlzY291bnRzKVxuICAgICAgICAgICAgJiYgY2FydC5jYXJ0RGlzY291bnRzLnNvbWUoZGlzY291bnQgPT4gKGRpc2NvdW50Py50eXBlIHx8ICcnKS50b1N0cmluZygpLmluY2x1ZGVzKCdjb3Vwb24nKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5kaWNhIHNpIGVsIGNhcnJpdG8gdGllbmUgdW5hIHByb21vY2nDs24gYXNvY2lhZGEgYWwgZW52w61vLlxuICAgICAqXG4gICAgICogQHBhcmFtIGNhcnQgQ2Fycml0byBhY3R1YWwuXG4gICAgICogQHJldHVybnMgYHRydWVgIGN1YW5kbyBhbGd1bmEgbMOtbmVhIGRlIGRlc2N1ZW50byBjb3JyZXNwb25kZSBhIHNoaXBwaW5nLlxuICAgICAqL1xuICAgIGhhc1NoaXBwaW5nUHJvbW90aW9uID0gKGNhcnQ6IGFueSk6IGJvb2xlYW4gPT5cbiAgICAgICAgQXJyYXkuaXNBcnJheShjYXJ0Py5jYXJ0RGlzY291bnRzKVxuICAgICAgICAgICAgJiYgY2FydC5jYXJ0RGlzY291bnRzLnNvbWUoZGlzY291bnQgPT4gdGhpcy5mb3JtYXRUeXBlKChkaXNjb3VudD8udHlwZSB8fCAnJykudG9TdHJpbmcoKSkgPT09ICdzaGlwbWVudCcpO1xuXG4gICAgLyoqXG4gICAgICogRGV2dWVsdmUgZWwgbW9udG8gZWZlY3Rpdm8gZGUgdW5hIGzDrW5lYSBkZSBkZXNjdWVudG8vcHJvbW9jacOzbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBkaXNjb3VudCBMw61uZWEgY3J1ZGEgZGUgZGVzY3VlbnRvIGRlbCBiYWNrZW5kLlxuICAgICAqIEBwYXJhbSBjYXJ0IENhcnJpdG8gYXNvY2lhZG8uXG4gICAgICogQHJldHVybnMgTW9udG8gcXVlIGRlYmUgbW9zdHJhcnNlIGVuIFVJLlxuICAgICAqL1xuICAgIGdldEFtb3VudCA9IChkaXNjb3VudCwgY2FydCk6IG51bWJlciA9PiB7XG4gICAgICAgIGlmIChkaXNjb3VudC50eXBlICE9ICdzaGlwbWVudCcpIHJldHVybiBkaXNjb3VudC5hbW91bnQ7XG4gICAgICAgIHJldHVybiBjYXJ0LnRvdGFscy5zaGlwcGluZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIb21vbG9nYSB0aXBvcyBjcnVkb3MgZGVsIGJhY2tlbmQgYWwgY29uanVudG8gZGUgdGlwb3MgdXNhZG8gcG9yIGNoZWNrb3V0LlxuICAgICAqXG4gICAgICogQHBhcmFtIHR5cGUgVGlwbyBjcnVkbyAoYG9yZGVyX3Byb21vdGlvbmAsIGBvcmRlcl9jb3Vwb25fcHJvbW90aW9uYCwgZXRjLikuXG4gICAgICogQHJldHVybnMgVGlwbyBub3JtYWxpemFkbyBjb25zdW1pZG8gcG9yIGxvcyBjb21wb25lbnRlcyBkZWwgY29yZS5cbiAgICAgKi9cbiAgICBmb3JtYXRUeXBlID0gKHR5cGU6IHN0cmluZyk6IENoZWNrb3V0RGF0YVR5cGUgPT4ge1xuICAgICAgICBsZXQgcmVzdWx0O1xuICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ29yZGVyX3Byb21vdGlvbic6IHJlc3VsdCA9ICdkaXNjb3VudCc7IGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnb3JkZXJfc2hpcHBpbmdfcHJvbW90aW9uJzogcmVzdWx0ID0gJ3NoaXBtZW50JzsgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdvcmRlcl9jb3Vwb25fcHJvbW90aW9uJzogcmVzdWx0ID0gJ2NvdXBvbic7IGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnb3JkZXJfdW5pdF9wcm9tb3Rpb24nOiByZXN1bHQgPSAnZGlzY291bnQnOyBicmVhaztcbiAgICAgICAgfVxuICAgICAgICAhcmVzdWx0ICYmIChyZXN1bHQgPSB0eXBlLmluY2x1ZGVzKCdwcm9tb3Rpb24nKSB8fCB0eXBlLmluY2x1ZGVzKCdkaXNjb3VudCcpID8gJ2Rpc2NvdW50JyA6IHR5cGUgKVxuICAgICAgICByZXR1cm4gcmVzdWx0IHx8IHR5cGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBub3JtYWxpemVBbW91bnQgPSAodmFsdWU6IG51bWJlciB8IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiBudW1iZXIgfCBudWxsID0+IHtcbiAgICAgICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09ICcnKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSBOdW1iZXIodmFsdWUpO1xuICAgICAgICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKG5vcm1hbGl6ZWQpID8gbm9ybWFsaXplZCA6IG51bGw7XG4gICAgfVxufVxuIl19
|