simpo-component-library 3.0.1 → 3.0.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 +24 -24
- package/esm2022/lib/components/delete-hover-element/delete-hover-element.component.mjs +3 -3
- package/esm2022/lib/components/document/document.component.mjs +3 -3
- package/esm2022/lib/components/image-loading/image-loading.component.mjs +3 -3
- package/esm2022/lib/components/payment-details/payment-details.component.mjs +3 -3
- package/esm2022/lib/constants/business.constant.mjs +1 -1
- package/esm2022/lib/directive/blur-content.directive.mjs +1 -1
- package/esm2022/lib/directive/borderlessImage.directive.mjs +1 -1
- package/esm2022/lib/directive/button-directive.directive.mjs +1 -1
- package/esm2022/lib/directive/color.directive.mjs +1 -1
- package/esm2022/lib/directive/column-directive.directive.mjs +1 -1
- package/esm2022/lib/directive/container-alignment.directive.mjs +1 -1
- package/esm2022/lib/directive/container-fir.directive.mjs +1 -1
- package/esm2022/lib/directive/content-title-spacing.directive.mjs +1 -1
- package/esm2022/lib/directive/corner-directive.mjs +1 -1
- package/esm2022/lib/directive/hoverborder.directive.mjs +1 -1
- package/esm2022/lib/directive/image-container.directive.mjs +1 -1
- package/esm2022/lib/directive/image-directive.directive.mjs +1 -1
- package/esm2022/lib/directive/image-position.directive.mjs +1 -1
- package/esm2022/lib/directive/position-layout-directive.directive.mjs +1 -1
- package/esm2022/lib/directive/spacing-around.directive.mjs +1 -1
- package/esm2022/lib/directive/spacing-horizontal.directive.mjs +1 -1
- package/esm2022/lib/directive/sticky-directive.mjs +1 -1
- package/esm2022/lib/directive/text-background-directive.directive.mjs +1 -1
- package/esm2022/lib/directive/text-size.directive.mjs +1 -1
- package/esm2022/lib/directive/wrap-containers.directive.mjs +1 -1
- package/esm2022/lib/ecommerce/sections/address/address.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/authenticate-user/authenticate-user.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/authentication-required/authentication-required.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/cart/cart.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/cart/cart.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/sections/category-product/category-product.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/category-product/category-product.model.mjs +1 -1
- package/esm2022/lib/ecommerce/sections/checkout/checkout.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/checkout/checkout.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/sections/customer-review/customer-review.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/customer-review/customer-review.model.mjs +1 -1
- package/esm2022/lib/ecommerce/sections/featured-category/featured-category.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/featured-category/featured-category.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/sections/featured-category/featured-collection.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/featured-products/featured-products.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/featured-products/featured-products.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/sections/item-varient/item-varient.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/order-details/order-details.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/pagnination/pagnination.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/product-category-list/product-category-list.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/product-category-list/product-category-list.model.mjs +1 -1
- package/esm2022/lib/ecommerce/sections/product-desc/product-desc.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/product-desc/product-desc.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/sections/product-list/product-list.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/product-list/product-list.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/sections/small-product-listing/small-product-listing.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/user-basic-info/user-basic-info.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/user-profile/user-profile.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/user-profile/user-profile.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/sections/verify-payment/verify-payment.component.mjs +3 -3
- package/esm2022/lib/ecommerce/sections/verify-payment/verify-payment.model.mjs +1 -1
- package/esm2022/lib/ecommerce/sections/whislist/whislist.component.mjs +3 -3
- package/esm2022/lib/ecommerce/styles/BaseCollection.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/styles/Collection.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/styles/OrderedItems.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/styles/PincodeLocation.model.mjs +1 -1
- package/esm2022/lib/ecommerce/styles/PincodeLocationInter.model.mjs +1 -1
- package/esm2022/lib/ecommerce/styles/cart.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/styles/category.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/styles/order.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/styles/product.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/styles/review.modal.mjs +1 -1
- package/esm2022/lib/ecommerce/styles/user.modal.mjs +1 -1
- package/esm2022/lib/elements/below-image-card/below-image-card.component.mjs +3 -3
- package/esm2022/lib/elements/button/button.component.mjs +3 -3
- package/esm2022/lib/elements/button/button.model.mjs +1 -1
- package/esm2022/lib/elements/card-skeleton-loader/card-skeleton-loader.component.mjs +3 -3
- package/esm2022/lib/elements/covering-image-card/covering-image-card.component.mjs +3 -3
- package/esm2022/lib/elements/heading-element/heading-element.component.mjs +3 -3
- package/esm2022/lib/elements/index.mjs +6 -7
- package/esm2022/lib/elements/my-documents/my-documents.component.mjs +11 -0
- package/esm2022/lib/elements/my-orders/my-orders.component.mjs +64 -0
- package/esm2022/lib/elements/my-statement/my-statement.component.mjs +26 -0
- package/esm2022/lib/elements/need-help/need-help.component.mjs +11 -0
- package/esm2022/lib/elements/payment-confirmation/payment-confirmation.component.mjs +90 -0
- package/esm2022/lib/elements/portfolio/portfolio.component.mjs +32 -45
- package/esm2022/lib/elements/properties/properties.component.mjs +40 -0
- package/esm2022/lib/elements/property-view/property-view.component.mjs +84 -0
- package/esm2022/lib/elements/simpo-button/simpo-button.component.mjs +3 -3
- package/esm2022/lib/elements/svg-divider/svg-divider.component.mjs +3 -3
- package/esm2022/lib/elements/text/text.component.mjs +3 -3
- package/esm2022/lib/elements/top-of-image-card/top-of-image-card.component.mjs +3 -3
- package/esm2022/lib/pipes/amount.pipe.mjs +1 -1
- package/esm2022/lib/pipes/gender.pipe.mjs +1 -1
- package/esm2022/lib/sections/BaseSection.mjs +1 -1
- package/esm2022/lib/sections/add-new-section/add-new-section.component.mjs +3 -3
- package/esm2022/lib/sections/appointment-form/appointment-form.component.mjs +3 -3
- package/esm2022/lib/sections/appointment-form/appointment-form.model.mjs +1 -1
- package/esm2022/lib/sections/banner-carousel/banner-carousel.component.mjs +3 -3
- package/esm2022/lib/sections/banner-carousel/banner-carousel.model.mjs +1 -1
- package/esm2022/lib/sections/banner-grid-section/banner-grid-section.component.mjs +3 -3
- package/esm2022/lib/sections/blog-list/blog-list.component.mjs +3 -3
- package/esm2022/lib/sections/blog-list/blog-list.model.mjs +1 -1
- package/esm2022/lib/sections/choose-us-section/choose-us-section.component.mjs +3 -3
- package/esm2022/lib/sections/choose-us-section/choose-us-section.model.mjs +1 -1
- package/esm2022/lib/sections/faq-section/faq-section.component.mjs +3 -3
- package/esm2022/lib/sections/faq-section/faq-section.modal.mjs +1 -1
- package/esm2022/lib/sections/features-section/features-section.component.mjs +3 -3
- package/esm2022/lib/sections/features-section/features-section.model.mjs +1 -1
- package/esm2022/lib/sections/header-text/header-text.component.mjs +3 -3
- package/esm2022/lib/sections/header-text/header-text.model.mjs +1 -1
- package/esm2022/lib/sections/image-carousel-section/image-carousel-section.component.mjs +3 -3
- package/esm2022/lib/sections/image-carousel-section/image-carousel.model.mjs +1 -1
- package/esm2022/lib/sections/image-grid-section/image-grid-section.component.mjs +3 -3
- package/esm2022/lib/sections/image-grid-section/image-grid-section.model.mjs +1 -1
- package/esm2022/lib/sections/image-section/image-section.component.mjs +3 -3
- package/esm2022/lib/sections/image-section/image-section.model.mjs +1 -1
- package/esm2022/lib/sections/kyc-details/kyc-details.component.mjs +163 -0
- package/esm2022/lib/sections/location-section/location-section.component.mjs +3 -3
- package/esm2022/lib/sections/location-section/location-section.modal.mjs +1 -1
- package/esm2022/lib/sections/logo-showcase/logo-showcase.component.mjs +3 -3
- package/esm2022/lib/sections/logo-showcase/logo-showcase.modal.mjs +1 -1
- package/esm2022/lib/sections/navbar-section/navbar-section.component.mjs +41 -12
- package/esm2022/lib/sections/pricing-section/pricing-section.component.mjs +3 -3
- package/esm2022/lib/sections/pricing-section/pricing-section.modal.mjs +1 -1
- package/esm2022/lib/sections/process-modern/process-modern.component.mjs +3 -3
- package/esm2022/lib/sections/process-modern/process-modern.model.mjs +1 -1
- package/esm2022/lib/sections/process-section/process-section.component.mjs +3 -3
- package/esm2022/lib/sections/process-section/process-section.modal.mjs +1 -1
- package/esm2022/lib/sections/profile-section/profile-section.component.mjs +52 -0
- package/esm2022/lib/sections/profile-section/profile-section.modal.mjs +2 -0
- package/esm2022/lib/sections/property-component/property-component.component.mjs +84 -7
- package/esm2022/lib/sections/property-component/property-component.modal.mjs +1 -1
- package/esm2022/lib/sections/property-detail/property-detail.component.mjs +149 -0
- package/esm2022/lib/sections/property-detail/property-detail.model.mjs +2 -0
- package/esm2022/lib/sections/property-list/property-list.component.mjs +29 -57
- package/esm2022/lib/sections/property-list/property-list.modal.mjs +1 -1
- package/esm2022/lib/sections/recent-blog-post-section/recent-blog-post-section.component.mjs +3 -3
- package/esm2022/lib/sections/recent-blog-post-section/recent-blog-post-section.model.mjs +1 -1
- package/esm2022/lib/sections/registration-form/registration-form.component.mjs +3 -3
- package/esm2022/lib/sections/registration-form/registrationForm.model.mjs +1 -1
- package/esm2022/lib/sections/service-section/service-section.component.mjs +3 -3
- package/esm2022/lib/sections/service-section/service-section.model.mjs +1 -1
- package/esm2022/lib/sections/signup-signin/signup-signin.component.mjs +407 -0
- package/esm2022/lib/sections/signup-signin/signup-signin.model.mjs +2 -0
- package/esm2022/lib/sections/skeleton-loader-section/skeleton-loader-section.component.mjs +3 -3
- package/esm2022/lib/sections/team-member-section/team-member-section.component.mjs +3 -3
- package/esm2022/lib/sections/team-member-section/team-member-section.model.mjs +1 -1
- package/esm2022/lib/sections/testimonial-fullwidth/testimonial-fullwidth.component.mjs +3 -3
- package/esm2022/lib/sections/testimonial-fullwidth/testimonial-fullwidth.model.mjs +1 -1
- package/esm2022/lib/sections/testimonial-section/testimonial-section.component.mjs +3 -3
- package/esm2022/lib/sections/testimonial-section/testimonial-section.model.mjs +1 -1
- package/esm2022/lib/sections/testimonial-video/testimonial-video.component.mjs +3 -3
- package/esm2022/lib/sections/testimonial-video/testimonial-video.model.mjs +1 -1
- package/esm2022/lib/sections/text-section/text-section.model.mjs +1 -1
- package/esm2022/lib/sections/usp-video-section/usp-video-section.component.mjs +3 -3
- package/esm2022/lib/sections/usp-video-section/usp-video-section.model.mjs +1 -1
- package/esm2022/lib/sections/verify-property-payment/verify-property-payment.component.mjs +55 -0
- package/esm2022/lib/sections/video-section/video-section.component.mjs +3 -3
- package/esm2022/lib/sections/video-section/video-section.model.mjs +1 -1
- package/esm2022/lib/sections/view-blog/view-blog.component.mjs +3 -3
- package/esm2022/lib/services/cart.service.mjs +1 -1
- package/esm2022/lib/services/endUser.service.mjs +1 -1
- package/esm2022/lib/services/events.service.mjs +2 -1
- package/esm2022/lib/services/image-upload-service.service.mjs +1 -1
- package/esm2022/lib/services/rest.service.mjs +106 -9
- package/esm2022/lib/services/sanitizeHtml.mjs +1 -1
- package/esm2022/lib/services/storage.service.mjs +1 -1
- package/esm2022/lib/styles/index.mjs +6 -1
- package/esm2022/lib/styles/style.model.mjs +1 -1
- package/esm2022/lib/styles/types.mjs +1 -1
- package/esm2022/public-api.mjs +5 -1
- package/fesm2022/simpo-component-library.mjs +3407 -2284
- package/fesm2022/simpo-component-library.mjs.map +1 -1
- package/lib/directive/background-directive.d.ts +1 -1
- package/lib/directive/button-directive.directive.d.ts +1 -1
- package/lib/directive/color.directive.d.ts +1 -1
- package/lib/ecommerce/sections/authentication-required/authentication-required.component.d.ts +1 -1
- package/lib/elements/index.d.ts +2 -3
- package/lib/elements/my-documents/my-documents.component.d.ts +5 -0
- package/lib/elements/my-orders/my-orders.component.d.ts +10 -0
- package/lib/elements/my-statement/my-statement.component.d.ts +8 -0
- package/lib/elements/need-help/need-help.component.d.ts +5 -0
- package/lib/elements/payment-confirmation/payment-confirmation.component.d.ts +25 -0
- package/lib/elements/portfolio/portfolio.component.d.ts +11 -12
- package/lib/elements/properties/properties.component.d.ts +16 -0
- package/lib/elements/property-view/property-view.component.d.ts +16 -0
- package/lib/sections/kyc-details/kyc-details.component.d.ts +38 -0
- package/lib/sections/navbar-section/navbar-section.component.d.ts +9 -1
- package/lib/sections/pricing-section/pricing-section.component.d.ts +1 -1
- package/lib/sections/profile-section/profile-section.component.d.ts +16 -0
- package/lib/sections/profile-section/profile-section.modal.d.ts +5 -0
- package/lib/sections/property-component/property-component.component.d.ts +25 -4
- package/lib/sections/property-component/property-component.modal.d.ts +11 -18
- package/lib/sections/property-detail/property-detail.component.d.ts +38 -0
- package/lib/sections/property-detail/property-detail.model.d.ts +5 -0
- package/lib/sections/property-list/property-list.component.d.ts +9 -2
- package/lib/sections/signup-signin/signup-signin.component.d.ts +65 -0
- package/lib/sections/signup-signin/signup-signin.model.d.ts +10 -0
- package/lib/sections/verify-property-payment/verify-property-payment.component.d.ts +16 -0
- package/lib/services/events.service.d.ts +1 -0
- package/lib/services/rest.service.d.ts +26 -0
- package/lib/styles/index.d.ts +4 -0
- package/package.json +1 -1
- package/public-api.d.ts +4 -0
- package/simpo-component-library-3.0.3.tgz +0 -0
- package/src/lib/styles/global-styles.css +86 -86
- package/esm2022/lib/elements/property/property.component.mjs +0 -41
- package/lib/elements/property/property.component.d.ts +0 -8
- package/simpo-component-library-3.0.1.tgz +0 -0
@@ -0,0 +1,407 @@
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
2
|
+
import BaseSection from '../BaseSection';
|
3
|
+
import { CommonModule } from '@angular/common';
|
4
|
+
import { SimpoComponentModule } from '../../components/index';
|
5
|
+
import { HoverElementsComponent } from "../../components/hover-elements/hover-elements.component";
|
6
|
+
import { DeleteHoverElementComponent } from "../../components/delete-hover-element/delete-hover-element.component";
|
7
|
+
import { HoverDirective } from '../../directive/hover-element-directive';
|
8
|
+
import { BackgroundDirective } from '../../directive/background-directive';
|
9
|
+
import { AnimationDirective } from '../../directive/animation-directive';
|
10
|
+
import { CornerDirective } from '../../directive/corner-directive';
|
11
|
+
import { FormsModule } from '@angular/forms';
|
12
|
+
import { MessageService } from 'primeng/api';
|
13
|
+
import { KycDetailsComponent } from '../kyc-details/kyc-details.component';
|
14
|
+
import { StorageKeys } from '../../styles/index';
|
15
|
+
import { ToastModule } from 'primeng/toast';
|
16
|
+
import { MatIcon } from '@angular/material/icon';
|
17
|
+
import * as i0 from "@angular/core";
|
18
|
+
import * as i1 from "./../../services/events.service";
|
19
|
+
import * as i2 from "../../services/rest.service";
|
20
|
+
import * as i3 from "@angular/router";
|
21
|
+
import * as i4 from "primeng/api";
|
22
|
+
import * as i5 from "@angular/material/dialog";
|
23
|
+
import * as i6 from "@angular/common";
|
24
|
+
import * as i7 from "../../components/hover-elements/hover-elements.component";
|
25
|
+
import * as i8 from "../../components/delete-hover-element/delete-hover-element.component";
|
26
|
+
import * as i9 from "@angular/forms";
|
27
|
+
import * as i10 from "primeng/toast";
|
28
|
+
export class SignupSigninComponent extends BaseSection {
|
29
|
+
constructor(_eventService, restService, router, activatedRoute, messageService, matDialog) {
|
30
|
+
super();
|
31
|
+
this._eventService = _eventService;
|
32
|
+
this.restService = restService;
|
33
|
+
this.router = router;
|
34
|
+
this.activatedRoute = activatedRoute;
|
35
|
+
this.messageService = messageService;
|
36
|
+
this.matDialog = matDialog;
|
37
|
+
this.buttonLoader = false;
|
38
|
+
this.textType = "password";
|
39
|
+
this.currentPage = 'SIGN_UP';
|
40
|
+
this.backgroundImage = "https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/500415c1739434186310image%2016.png";
|
41
|
+
this.otpArray = new Array(4).fill('');
|
42
|
+
this.loginOtpArray = new Array(4).fill('');
|
43
|
+
this.loginEmail = '';
|
44
|
+
this.investor = {
|
45
|
+
"fullName": "",
|
46
|
+
"emailId": "",
|
47
|
+
"phoneNumber": "",
|
48
|
+
"password": "",
|
49
|
+
"kycVerified": false,
|
50
|
+
"active": true,
|
51
|
+
"otp": "",
|
52
|
+
"deleted": false
|
53
|
+
};
|
54
|
+
this.otpSent = false;
|
55
|
+
this.showWarning = false;
|
56
|
+
this.invalidEmail = false;
|
57
|
+
this.invalidPhone = false;
|
58
|
+
this.isSignUp = false;
|
59
|
+
this.resend = false;
|
60
|
+
this.showForgotFields = false;
|
61
|
+
this.logInOtp = "";
|
62
|
+
this.reEnteredPassword = "";
|
63
|
+
this.newPassword = "";
|
64
|
+
this.fOtpSent = false;
|
65
|
+
}
|
66
|
+
ngOnInit() {
|
67
|
+
this.activatedRoute.queryParams.subscribe((param) => {
|
68
|
+
if (param['type'])
|
69
|
+
this.currentPage = param['type'];
|
70
|
+
if (param['id'])
|
71
|
+
this.propertyId = param['id'];
|
72
|
+
});
|
73
|
+
}
|
74
|
+
ngOnDestroy() {
|
75
|
+
this.kycDetailsSubscription?.unsubscribe();
|
76
|
+
}
|
77
|
+
editSection() {
|
78
|
+
this._eventService.toggleEditorEvent.emit(false);
|
79
|
+
setTimeout(() => {
|
80
|
+
this._eventService.editSection.emit({ data: this.data });
|
81
|
+
}, 100);
|
82
|
+
}
|
83
|
+
move(event, idx) {
|
84
|
+
if (isNaN(Number(event.key)) && event.code != "Backspace")
|
85
|
+
return;
|
86
|
+
if (event.code != "Backspace") {
|
87
|
+
this.otpArray[idx] = event.key;
|
88
|
+
document.getElementById("otp_" + (idx + 1))?.focus();
|
89
|
+
}
|
90
|
+
if (event.code == "Backspace" && !this.otpArray[idx]) {
|
91
|
+
document.getElementById("otp_" + (idx - 1))?.focus();
|
92
|
+
}
|
93
|
+
}
|
94
|
+
moveLoginOtpCursor(event, idx) {
|
95
|
+
if (isNaN(Number(event.key)) && event.code != "Backspace")
|
96
|
+
return;
|
97
|
+
if (event.code != "Backspace") {
|
98
|
+
this.loginOtpArray[idx] = event.key;
|
99
|
+
document.getElementById("loginOtp_" + (idx + 1))?.focus();
|
100
|
+
}
|
101
|
+
if (event.code == "Backspace" && !this.otpArray[idx]) {
|
102
|
+
document.getElementById("loginOtp_" + (idx - 1))?.focus();
|
103
|
+
}
|
104
|
+
}
|
105
|
+
buttonClickedEvent() {
|
106
|
+
if (this.currentPage === 'SIGN_UP') {
|
107
|
+
this.isSignUp = true;
|
108
|
+
this.sendOtp();
|
109
|
+
}
|
110
|
+
if (this.currentPage === 'OTP_VERIFY') {
|
111
|
+
this.signUp();
|
112
|
+
}
|
113
|
+
if (this.currentPage === 'LOGIN') {
|
114
|
+
this.loginWithPassword();
|
115
|
+
}
|
116
|
+
if (this.currentPage == 'FORGOT_PASSWORD') {
|
117
|
+
this.forgotPassword();
|
118
|
+
}
|
119
|
+
}
|
120
|
+
verifyPhoneEmail() {
|
121
|
+
if (this.isValidEmail(this.investor.emailId) && this.investor.phoneNumber.length == 10) {
|
122
|
+
this.restService.verifyEmailPhone(this.investor.phoneNumber, this.investor.emailId).subscribe({
|
123
|
+
next: (res) => {
|
124
|
+
this.showWarning = false;
|
125
|
+
},
|
126
|
+
error: (err) => {
|
127
|
+
this.showWarning = true;
|
128
|
+
this.messageService.add({
|
129
|
+
severity: 'error',
|
130
|
+
summary: 'Sign Up',
|
131
|
+
detail: 'User Already Exist with this credentials'
|
132
|
+
});
|
133
|
+
}
|
134
|
+
});
|
135
|
+
}
|
136
|
+
}
|
137
|
+
validEmail() {
|
138
|
+
if (!this.isValidEmail(this.investor.emailId))
|
139
|
+
this.invalidEmail = true;
|
140
|
+
else
|
141
|
+
this.invalidEmail = false;
|
142
|
+
}
|
143
|
+
validPhone() {
|
144
|
+
if (this.investor.phoneNumber.length != 10)
|
145
|
+
this.invalidPhone = true;
|
146
|
+
else
|
147
|
+
this.invalidPhone = false;
|
148
|
+
}
|
149
|
+
signUp() {
|
150
|
+
this.buttonLoader = true;
|
151
|
+
this.investor.otp = "";
|
152
|
+
this.otpArray.forEach((otp) => {
|
153
|
+
this.investor.otp += otp;
|
154
|
+
});
|
155
|
+
this.restService.signUp(this.investor).subscribe({
|
156
|
+
next: (res) => {
|
157
|
+
this.messageService.add({
|
158
|
+
severity: 'success',
|
159
|
+
summary: 'Sign Up',
|
160
|
+
detail: 'Sign up Successfully'
|
161
|
+
});
|
162
|
+
this.currentPage = 'LOGIN';
|
163
|
+
this.buttonLoader = false;
|
164
|
+
},
|
165
|
+
error: (err) => {
|
166
|
+
this.messageService.add({
|
167
|
+
severity: 'error',
|
168
|
+
summary: 'Sign Up Failed',
|
169
|
+
detail: 'Something went wrong. Please try again.'
|
170
|
+
});
|
171
|
+
this.buttonLoader = false;
|
172
|
+
}
|
173
|
+
});
|
174
|
+
}
|
175
|
+
sendOtp() {
|
176
|
+
if (!this.isValidEmail(this.investor.emailId)) {
|
177
|
+
this.messageService.add({
|
178
|
+
severity: 'error',
|
179
|
+
summary: 'Sign Up',
|
180
|
+
detail: 'Invaild Email'
|
181
|
+
});
|
182
|
+
return;
|
183
|
+
}
|
184
|
+
this.buttonLoader = true;
|
185
|
+
this.restService.sendOtp(this.investor.emailId).subscribe({
|
186
|
+
next: (res) => {
|
187
|
+
this.messageService.add({
|
188
|
+
severity: 'success',
|
189
|
+
summary: 'OTP',
|
190
|
+
detail: 'OTP Sent Successfully'
|
191
|
+
});
|
192
|
+
this.currentPage = 'OTP_VERIFY';
|
193
|
+
this.buttonLoader = false;
|
194
|
+
},
|
195
|
+
error: (err) => {
|
196
|
+
this.messageService.add({
|
197
|
+
severity: 'error',
|
198
|
+
summary: 'OTP Failed',
|
199
|
+
detail: err.error?.message || 'Failed to send OTP. Please try again.'
|
200
|
+
});
|
201
|
+
this.buttonLoader = false;
|
202
|
+
}
|
203
|
+
});
|
204
|
+
}
|
205
|
+
loginWithPassword() {
|
206
|
+
if (!this.isValidEmail(this.loginEmail)) {
|
207
|
+
this.messageService.add({
|
208
|
+
severity: 'error',
|
209
|
+
summary: 'Sign Up',
|
210
|
+
detail: 'Invaild Email Address'
|
211
|
+
});
|
212
|
+
return;
|
213
|
+
}
|
214
|
+
if (this.investor.password.length == 0) {
|
215
|
+
this.messageService.add({
|
216
|
+
severity: 'error',
|
217
|
+
summary: 'Sign Up',
|
218
|
+
detail: 'Please enter password'
|
219
|
+
});
|
220
|
+
return;
|
221
|
+
}
|
222
|
+
this.buttonLoader = true;
|
223
|
+
this.restService.login({ email: this.loginEmail, password: this.investor.password }).subscribe({
|
224
|
+
next: (res) => {
|
225
|
+
this.messageService.add({
|
226
|
+
severity: 'success',
|
227
|
+
summary: 'Log In',
|
228
|
+
detail: 'Logged in successfully'
|
229
|
+
});
|
230
|
+
localStorage.setItem(StorageKeys.INVESTOR_ID, res.investorId);
|
231
|
+
if (this.propertyId) {
|
232
|
+
this.router.navigate(['details'], { queryParams: { id: this.propertyId } });
|
233
|
+
return;
|
234
|
+
}
|
235
|
+
this.getKycDetails();
|
236
|
+
this.router.navigate(['property-list']);
|
237
|
+
this.buttonLoader = false;
|
238
|
+
},
|
239
|
+
error: (err) => {
|
240
|
+
this.messageService.add({
|
241
|
+
severity: 'error',
|
242
|
+
summary: 'Login Failed',
|
243
|
+
detail: err.error?.message || 'Invalid email or password. Please try again.'
|
244
|
+
});
|
245
|
+
this.buttonLoader = false;
|
246
|
+
}
|
247
|
+
});
|
248
|
+
}
|
249
|
+
sendOtpForLogin() {
|
250
|
+
if (!this.isValidEmail(this.loginEmail)) {
|
251
|
+
this.messageService.add({
|
252
|
+
severity: 'error',
|
253
|
+
summary: 'Sign Up',
|
254
|
+
detail: 'Invaild Email Address'
|
255
|
+
});
|
256
|
+
return;
|
257
|
+
}
|
258
|
+
this.buttonLoader = true;
|
259
|
+
if (this.resend == false && this.currentPage == 'LOGIN') {
|
260
|
+
this.otpSent = false;
|
261
|
+
}
|
262
|
+
this.restService.sendOtp(this.loginEmail).subscribe({
|
263
|
+
next: (res) => {
|
264
|
+
this.otpSent = true;
|
265
|
+
this.messageService.add({
|
266
|
+
severity: 'success',
|
267
|
+
summary: 'OTP',
|
268
|
+
detail: 'OTP Sent Successfully'
|
269
|
+
});
|
270
|
+
this.buttonLoader = false;
|
271
|
+
},
|
272
|
+
error: (err) => {
|
273
|
+
this.messageService.add({
|
274
|
+
severity: 'error',
|
275
|
+
summary: 'Error',
|
276
|
+
detail: 'Failed to send OTP. Please try again.'
|
277
|
+
});
|
278
|
+
this.buttonLoader = false;
|
279
|
+
}
|
280
|
+
});
|
281
|
+
}
|
282
|
+
verifyOtp() {
|
283
|
+
this.buttonLoader = true;
|
284
|
+
this.logInOtp = '';
|
285
|
+
this.loginOtpArray.forEach((otp) => {
|
286
|
+
this.logInOtp += otp;
|
287
|
+
});
|
288
|
+
// if (this.currentPage == 'FORGOT_PASSWORD') {
|
289
|
+
// this.showForgotFields = true
|
290
|
+
// this.otpSent = false
|
291
|
+
// this.buttonLoader = false
|
292
|
+
// return;
|
293
|
+
// }
|
294
|
+
this.restService.verifyOtp(this.loginEmail, this.logInOtp).subscribe({
|
295
|
+
next: (res) => {
|
296
|
+
if (this.currentPage == 'FORGOT_PASSWORD') {
|
297
|
+
this.showForgotFields = true;
|
298
|
+
this.otpSent = false;
|
299
|
+
this.buttonLoader = false;
|
300
|
+
return;
|
301
|
+
}
|
302
|
+
this.messageService.add({
|
303
|
+
severity: 'success',
|
304
|
+
summary: 'Log In',
|
305
|
+
detail: 'Logged in successfully'
|
306
|
+
});
|
307
|
+
localStorage.setItem(StorageKeys.INVESTOR_ID, res.investorId);
|
308
|
+
if (this.propertyId) {
|
309
|
+
this.router.navigate(['details'], { queryParams: { id: this.propertyId } });
|
310
|
+
return;
|
311
|
+
}
|
312
|
+
this.getKycDetails();
|
313
|
+
this.router.navigate(['property-list']);
|
314
|
+
this.buttonLoader = false;
|
315
|
+
},
|
316
|
+
error: (err) => {
|
317
|
+
this.messageService.add({
|
318
|
+
severity: 'error',
|
319
|
+
summary: 'Error',
|
320
|
+
detail: 'Invalid OTP. Please try again.'
|
321
|
+
});
|
322
|
+
this.buttonLoader = false;
|
323
|
+
}
|
324
|
+
});
|
325
|
+
}
|
326
|
+
isValidEmail(email) {
|
327
|
+
const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
|
328
|
+
return emailRegex.test(email.trim());
|
329
|
+
}
|
330
|
+
getKycDetails() {
|
331
|
+
this.kycDetailsSubscripition = this.restService.getKycDetails().subscribe((res) => {
|
332
|
+
if (!(res?.message?.panVerified === 'VALID' && res?.message?.aadhaarVerified === 'VALID')) {
|
333
|
+
this.matDialog.open(KycDetailsComponent, { panelClass: "login-signup" });
|
334
|
+
}
|
335
|
+
});
|
336
|
+
}
|
337
|
+
get isMobile() {
|
338
|
+
return window.innerWidth <= 475;
|
339
|
+
}
|
340
|
+
checkPasswordMatch(password, reEnteredPassword) {
|
341
|
+
if (password != reEnteredPassword)
|
342
|
+
return false;
|
343
|
+
return true;
|
344
|
+
}
|
345
|
+
forgotPassword() {
|
346
|
+
this.buttonLoader = true;
|
347
|
+
let payload = {
|
348
|
+
"email": this.loginEmail,
|
349
|
+
"otp": this.logInOtp,
|
350
|
+
"newPassword": this.newPassword,
|
351
|
+
"confirmPassword": this.reEnteredPassword
|
352
|
+
};
|
353
|
+
this.restService.forgotPassword(payload).subscribe({
|
354
|
+
next: (res) => {
|
355
|
+
this.messageService.add({
|
356
|
+
severity: 'success',
|
357
|
+
summary: 'Forgot Password',
|
358
|
+
detail: 'Successfully Changed the password'
|
359
|
+
});
|
360
|
+
this.buttonLoader = false;
|
361
|
+
this.currentPage = 'LOGIN';
|
362
|
+
this.showForgotFields = false;
|
363
|
+
this.otpSent = false;
|
364
|
+
this.loginEmail = "";
|
365
|
+
this.logInOtp = "";
|
366
|
+
},
|
367
|
+
error: (err) => {
|
368
|
+
this.messageService.add({
|
369
|
+
severity: 'error',
|
370
|
+
summary: 'Error',
|
371
|
+
detail: 'Please try again.'
|
372
|
+
});
|
373
|
+
this.buttonLoader = false;
|
374
|
+
}
|
375
|
+
});
|
376
|
+
}
|
377
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: SignupSigninComponent, deps: [{ token: i1.EventsService }, { token: i2.RestService }, { token: i3.Router }, { token: i3.ActivatedRoute }, { token: i4.MessageService }, { token: i5.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
|
378
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.4", type: SignupSigninComponent, isStandalone: true, selector: "simpo-signup-signin", inputs: { data: "data", index: "index", edit: "edit", delete: "delete" }, providers: [MessageService], usesInheritance: true, ngImport: i0, template: "<p-toast position=\"bottom-right\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\"\r\n [showTransformOptions]=\"isMobile ? 'translateY(-100%)' : ''\"></p-toast>\r\n\r\n<section [id]=\"data?.id\" class=\"main-container h-85 d-flex align-items-center justify-content-center\"\r\n [ngStyle]=\"{'background-image': 'url(' + backgroundImage + ')'}\" simpoHover (hovering)=\"showEditTabs($event)\">\r\n <div class=\"middle-container w-40-85\" [id]=\"data?.id\" [simpoBackground]=\"data?.styles?.background\"\r\n [simpoAnimation]=\"data?.styles?.animation\" [simpoCorner]=\"data?.styles?.corners\">\r\n <div class=\"head\">{{ currentPage == 'LOGIN' || currentPage == 'OTP' ? \"Sign In\" : currentPage ==\r\n 'FORGOT_PASSWORD' ? \"Forgot Password\" : currentPage == 'OTP_VERIFY' ? \"OTP Verfication\" : \"Sign Up\"}}</div>\r\n <div class=\"field-container\">\r\n <div class=\"field mb-15\" *ngIf=\"(currentPage == 'LOGIN' || currentPage == 'OTP' || currentPage == 'FORGOT_PASSWORD') && !showForgotFields\">\r\n <div class=\"field-head\">Email or Phone Number</div>\r\n <div class=\"field-text\">\r\n <input type=\"text\" placeholder=\"Please Enter Your Registered Email or Phone number\" [(ngModel)]=\"loginEmail\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"(currentPage == 'OTP' || currentPage == 'FORGOT_PASSWORD') && otpSent && !showForgotFields\">\r\n <div class=\"field-head\">OTP</div>\r\n <div class=\"field-text-1\">\r\n <div id=\"otp\" class=\"inputs d-flex flex-row justify-content-center mt-2\">\r\n <ng-container *ngFor=\"let _ of [].constructor(4); let idx = index\">\r\n <input class=\"m-2 text-center form-control rounded additional-styles\" type=\"number\" max=\"1\"\r\n [(ngModel)]=\"loginOtpArray[idx]\" (keyup)=\"moveLoginOtpCursor($event, idx)\" [id]=\"'loginOtp_'+idx\" #otpInput />\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'OTP_VERIFY'\">\r\n <!-- <div class=\"field-head\" *ngIf=\"currentPage == 'OTP' \">OTP</div> -->\r\n <div class=\"field-text-1\">\r\n <div id=\"otp\" class=\"inputs d-flex flex-row justify-content-center mt-2\">\r\n <ng-container *ngFor=\"let _ of [].constructor(4); let idx = index\">\r\n <input class=\"m-2 text-center form-control rounded additional-styles\" type=\"number\" max=\"1\"\r\n [(ngModel)]=\"otpArray[idx]\" (keyup)=\"move($event, idx)\" [id]=\"'otp_'+idx\" #otpInput />\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'SIGN_UP'\">\r\n <div class=\"field-head\">Name</div>\r\n <div class=\"field-text\">\r\n <input type=\"text\" placeholder=\"Please Enter Your Name\" [(ngModel)]=\"investor.fullName\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'SIGN_UP'\">\r\n <div class=\"field-head\">Email</div>\r\n <div class=\"field-text\" [class.border-red]=\"showWarning || invalidEmail\">\r\n <input type=\"email\" placeholder=\"Please Enter Your Email\" [(ngModel)]=\"investor.emailId\" (ngModelChange)=\"verifyPhoneEmail()\" (blur)=\"validEmail()\" (input)=\"validEmail()\">\r\n </div>\r\n <div class=\"warning-text clr-red\" *ngIf=\"showWarning\">User Already Exist</div>\r\n <div class=\"warning-text clr-red\" *ngIf=\"invalidEmail\">Invalid Email (Eg: johndoe@gmail.com)</div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'SIGN_UP'\">\r\n <div class=\"field-head\">Phone Number</div>\r\n <div class=\"field-text\" [class.border-red]=\"showWarning || invalidPhone\">\r\n <input type=\"text\" placeholder=\"Please Enter Your Phone Number\" [(ngModel)]=\"investor.phoneNumber\" (ngModelChange)=\"verifyPhoneEmail()\" (blur)=\"validPhone()\" (input)=\"validPhone()\">\r\n </div>\r\n <div class=\"warning-text clr-red\" *ngIf=\"showWarning\">User Already Exist</div>\r\n <div class=\"warning-text clr-red\" *ngIf=\"invalidPhone\">Invalid Phone number it's length should be 10</div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'FORGOT_PASSWORD' && showForgotFields\" >\r\n <div class=\"field-head\">New Password</div>\r\n <div class=\"field-text\">\r\n <input type=\"text\" placeholder=\"Please Enter Your Password\" [(ngModel)]=\"newPassword\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'FORGOT_PASSWORD' && showForgotFields\" >\r\n <div class=\"field-head\">Re-Enter Password</div>\r\n <div class=\"field-text\">\r\n <input type=\"text\" placeholder=\"Please Re-Enter Your Password\" [(ngModel)]=\"reEnteredPassword\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'LOGIN' || currentPage == 'SIGN_UP' \">\r\n <div class=\"field-head\">Password</div>\r\n <div class=\"field-text d-flex\">\r\n <input [type]=\"textType\" placeholder=\"Please Enter Your Password\" [(ngModel)]=\"investor.password\">\r\n <mat-icon (click)=\"textType = 'text'\" *ngIf=\"textType == 'password'\">visibility</mat-icon>\r\n <mat-icon (click)=\"textType = 'password'\" *ngIf=\"textType == 'text'\">visibility_off</mat-icon>\r\n </div>\r\n </div>\r\n <div class=\"forgot-password cursor-pointer\" [style.color]=\"data?.styles?.background?.accentColor\"\r\n *ngIf=\"currentPage == 'LOGIN'\" (click)=\"currentPage = 'FORGOT_PASSWORD'\">Forgot Password?</div>\r\n <div class=\"forgot-password cursor-pointer\" [style.color]=\"data?.styles?.background?.accentColor\"\r\n *ngIf=\"currentPage == 'OTP_VERIFY' || otpSent\" (click)=\"isSignUp ? sendOtp() : sendOtpForLogin();resend = true\">Resend OTP?</div>\r\n <div class=\"btn-container d-flex align-items-center justify-content-center\">\r\n <button class=\"login-btn cursor-pointer\" [style.background]=\"data?.styles?.background?.accentColor\" *ngIf=\"currentPage != 'OTP' && (currentPage !== 'FORGOT_PASSWORD' || showForgotFields)\"\r\n (click)=\"buttonClickedEvent()\" [disabled]=\"buttonLoader\" [class.btn-size]=\"currentPage == 'FORGOT_PASSWORD' || currentPage == 'SIGN_UP' || currentPage == 'OTP_VERIFY'\">\r\n <span *ngIf=\"buttonLoader\" ><i class=\"fas fa-circle-notch fa-spin\"></i> Loading</span>\r\n <span *ngIf=\"!buttonLoader\">{{ currentPage ==\r\n 'LOGIN' ? \"Login\" : currentPage == 'FORGOT_PASSWORD' ? \"Reset Password\" :\r\n currentPage == 'OTP_VERIFY' ? 'Verify OTP' : \"Create Account\"}}</span></button>\r\n\r\n <button class=\"login-btn cursor-pointer\" (click)=\"sendOtpForLogin()\" [disabled]=\"buttonLoader\" [style.background]=\"data?.styles?.background?.accentColor\" *ngIf=\"(currentPage == 'OTP' || currentPage == 'FORGOT_PASSWORD') && !otpSent && !showForgotFields\">\r\n <span *ngIf=\"buttonLoader\" ><i class=\"fas fa-circle-notch fa-spin\"></i> Loading</span>\r\n <span *ngIf=\"!buttonLoader\">Send Otp</span>\r\n </button>\r\n\r\n <button class=\"login-btn cursor-pointer\" (click)=\"verifyOtp()\" [disabled]=\"buttonLoader\" [style.background]=\"data?.styles?.background?.accentColor\" *ngIf=\"(currentPage == 'OTP' || currentPage == 'FORGOT_PASSWORD') && otpSent && !showForgotFields\">\r\n <span *ngIf=\"buttonLoader\" ><i class=\"fas fa-circle-notch fa-spin\"></i> Loading</span>\r\n <span *ngIf=\"!buttonLoader\" >{{currentPage == 'OTP' ? \"Login\" : \"Proceed to Change Password\"}}</span>\r\n </button>\r\n </div>\r\n <div class=\"another-page\" *ngIf=\"currentPage == 'LOGIN' || currentPage == 'OTP'\">\r\n <div class=\"signup-text\">Don\u2019t have an account? <span class=\"span-text cursor-pointer\"\r\n [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"currentPage = 'SIGN_UP';loginEmail = '';investor.password = '';investor.phoneNumber = '';otpSent = false\">Sign\r\n Up</span></div>\r\n <div class=\"signup-text m-5\">or</div>\r\n <div class=\"signup-text\">Login with <span class=\"span-text cursor-pointer\"\r\n [style.color]=\"data?.styles?.background?.accentColor\" *ngIf=\"currentPage == 'LOGIN' \"\r\n (click)=\"currentPage = 'OTP'\">OTP</span><span class=\"span-text cursor-pointer\"\r\n [style.color]=\"data?.styles?.background?.accentColor\" *ngIf=\"currentPage == 'OTP'\"\r\n (click)=\"currentPage = 'LOGIN';loginEmail = '';otpSent = false\">Password</span></div>\r\n </div>\r\n <div class=\"another-page\" *ngIf=\"currentPage == 'SIGN_UP' || currentPage == 'FORGOT_PASSWORD'\">\r\n <div class=\"signup-text\">Already have an account? <span class=\"span-text cursor-pointer\"\r\n [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"currentPage = 'LOGIN';loginEmail = '';investor.password = '';investor.phoneNumber = '';otpSent = false;showForgotFields = false\">Sign\r\n In</span></div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n</section>\r\n", styles: ["*{font-family:DM Sans!important}mat-icon{font-family:Material Icons!important}.h-85{height:85vh;position:relative}.hover_effect{position:absolute;width:100%;top:0;left:0;height:100%}.w-40-85{width:40%}.btn-size{width:40%!important}.head{font-size:36px;font-weight:600;line-height:52px;color:#112133;text-align:center;padding:15px;padding-bottom:unset}.field-container{padding:15px}.field-head{margin-bottom:10px;font-size:17px;font-weight:600;line-height:24px;color:#2c2c2c}.field-text{padding:10px;border-radius:20px;font-size:15px;font-weight:400;color:#ababab;background:#fff}.field-text input{width:100%;border:none;appearance:none;outline:unset;background:#fff;color:#000}.forgot-password{text-align:end;font-size:16px;font-weight:600;line-height:24px;margin-bottom:15px}.another-page{margin-top:15px;text-align:center}.signup-text{color:#6b6b6b;font-size:14px;font-weight:400;line-height:24px;margin-bottom:5px}.m-5{margin:5px 0!important}.mb-30{margin-bottom:30px!important}.mb-15{margin-bottom:15px!important}.login-btn{border:unset;padding:12px 18px;border-radius:6px;font-size:18px!important;font-weight:600;line-height:20px}.span-text{font-weight:700!important}.cursor-pointer{cursor:pointer}.additional-styles{padding:25px!important;width:10%!important;border:unset!important;border-radius:20px!important}.clr-red{color:red;font-size:12px}.border-red{border:1px solid red!important}@media screen and (max-width : 475px){.w-40-85{width:85%}.h-86{height:90vh!important}.btn-size{width:100%!important;white-space:nowrap}.additional-styles{width:15%!important;border-radius:10px!important}}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: SimpoComponentModule }, { kind: "component", type: i7.HoverElementsComponent, selector: "simpo-hover-elements", inputs: ["data", "index", "editOptions", "isMerged", "isEcommerce"], outputs: ["edit"] }, { kind: "component", type: i8.DeleteHoverElementComponent, selector: "simpo-delete-hover-element", inputs: ["index", "data"], outputs: ["edit"] }, { kind: "directive", type: HoverDirective, selector: "[simpoHover]", outputs: ["hovering"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i9.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i9.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type:
|
379
|
+
//Directives
|
380
|
+
BackgroundDirective, selector: "[simpoBackground]", inputs: ["simpoBackground", "scrollValue"] }, { kind: "directive", type: AnimationDirective, selector: "[simpoAnimation]", inputs: ["simpoAnimation"] }, { kind: "directive", type: CornerDirective, selector: "[simpoCorner]", inputs: ["simpoCorner"] }, { kind: "ngmodule", type: ToastModule }, { kind: "component", type: i10.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }] }); }
|
381
|
+
}
|
382
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.4", ngImport: i0, type: SignupSigninComponent, decorators: [{
|
383
|
+
type: Component,
|
384
|
+
args: [{ selector: 'simpo-signup-signin', standalone: true, imports: [
|
385
|
+
CommonModule,
|
386
|
+
SimpoComponentModule,
|
387
|
+
HoverElementsComponent,
|
388
|
+
DeleteHoverElementComponent,
|
389
|
+
HoverDirective,
|
390
|
+
FormsModule,
|
391
|
+
MatIcon,
|
392
|
+
//Directives
|
393
|
+
BackgroundDirective,
|
394
|
+
AnimationDirective,
|
395
|
+
CornerDirective,
|
396
|
+
ToastModule
|
397
|
+
], providers: [MessageService], template: "<p-toast position=\"bottom-right\" [baseZIndex]=\"10000000000\" [autoZIndex]=\"true\"\r\n [showTransformOptions]=\"isMobile ? 'translateY(-100%)' : ''\"></p-toast>\r\n\r\n<section [id]=\"data?.id\" class=\"main-container h-85 d-flex align-items-center justify-content-center\"\r\n [ngStyle]=\"{'background-image': 'url(' + backgroundImage + ')'}\" simpoHover (hovering)=\"showEditTabs($event)\">\r\n <div class=\"middle-container w-40-85\" [id]=\"data?.id\" [simpoBackground]=\"data?.styles?.background\"\r\n [simpoAnimation]=\"data?.styles?.animation\" [simpoCorner]=\"data?.styles?.corners\">\r\n <div class=\"head\">{{ currentPage == 'LOGIN' || currentPage == 'OTP' ? \"Sign In\" : currentPage ==\r\n 'FORGOT_PASSWORD' ? \"Forgot Password\" : currentPage == 'OTP_VERIFY' ? \"OTP Verfication\" : \"Sign Up\"}}</div>\r\n <div class=\"field-container\">\r\n <div class=\"field mb-15\" *ngIf=\"(currentPage == 'LOGIN' || currentPage == 'OTP' || currentPage == 'FORGOT_PASSWORD') && !showForgotFields\">\r\n <div class=\"field-head\">Email or Phone Number</div>\r\n <div class=\"field-text\">\r\n <input type=\"text\" placeholder=\"Please Enter Your Registered Email or Phone number\" [(ngModel)]=\"loginEmail\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"(currentPage == 'OTP' || currentPage == 'FORGOT_PASSWORD') && otpSent && !showForgotFields\">\r\n <div class=\"field-head\">OTP</div>\r\n <div class=\"field-text-1\">\r\n <div id=\"otp\" class=\"inputs d-flex flex-row justify-content-center mt-2\">\r\n <ng-container *ngFor=\"let _ of [].constructor(4); let idx = index\">\r\n <input class=\"m-2 text-center form-control rounded additional-styles\" type=\"number\" max=\"1\"\r\n [(ngModel)]=\"loginOtpArray[idx]\" (keyup)=\"moveLoginOtpCursor($event, idx)\" [id]=\"'loginOtp_'+idx\" #otpInput />\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'OTP_VERIFY'\">\r\n <!-- <div class=\"field-head\" *ngIf=\"currentPage == 'OTP' \">OTP</div> -->\r\n <div class=\"field-text-1\">\r\n <div id=\"otp\" class=\"inputs d-flex flex-row justify-content-center mt-2\">\r\n <ng-container *ngFor=\"let _ of [].constructor(4); let idx = index\">\r\n <input class=\"m-2 text-center form-control rounded additional-styles\" type=\"number\" max=\"1\"\r\n [(ngModel)]=\"otpArray[idx]\" (keyup)=\"move($event, idx)\" [id]=\"'otp_'+idx\" #otpInput />\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'SIGN_UP'\">\r\n <div class=\"field-head\">Name</div>\r\n <div class=\"field-text\">\r\n <input type=\"text\" placeholder=\"Please Enter Your Name\" [(ngModel)]=\"investor.fullName\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'SIGN_UP'\">\r\n <div class=\"field-head\">Email</div>\r\n <div class=\"field-text\" [class.border-red]=\"showWarning || invalidEmail\">\r\n <input type=\"email\" placeholder=\"Please Enter Your Email\" [(ngModel)]=\"investor.emailId\" (ngModelChange)=\"verifyPhoneEmail()\" (blur)=\"validEmail()\" (input)=\"validEmail()\">\r\n </div>\r\n <div class=\"warning-text clr-red\" *ngIf=\"showWarning\">User Already Exist</div>\r\n <div class=\"warning-text clr-red\" *ngIf=\"invalidEmail\">Invalid Email (Eg: johndoe@gmail.com)</div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'SIGN_UP'\">\r\n <div class=\"field-head\">Phone Number</div>\r\n <div class=\"field-text\" [class.border-red]=\"showWarning || invalidPhone\">\r\n <input type=\"text\" placeholder=\"Please Enter Your Phone Number\" [(ngModel)]=\"investor.phoneNumber\" (ngModelChange)=\"verifyPhoneEmail()\" (blur)=\"validPhone()\" (input)=\"validPhone()\">\r\n </div>\r\n <div class=\"warning-text clr-red\" *ngIf=\"showWarning\">User Already Exist</div>\r\n <div class=\"warning-text clr-red\" *ngIf=\"invalidPhone\">Invalid Phone number it's length should be 10</div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'FORGOT_PASSWORD' && showForgotFields\" >\r\n <div class=\"field-head\">New Password</div>\r\n <div class=\"field-text\">\r\n <input type=\"text\" placeholder=\"Please Enter Your Password\" [(ngModel)]=\"newPassword\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'FORGOT_PASSWORD' && showForgotFields\" >\r\n <div class=\"field-head\">Re-Enter Password</div>\r\n <div class=\"field-text\">\r\n <input type=\"text\" placeholder=\"Please Re-Enter Your Password\" [(ngModel)]=\"reEnteredPassword\">\r\n </div>\r\n </div>\r\n <div class=\"field mb-15\" *ngIf=\"currentPage == 'LOGIN' || currentPage == 'SIGN_UP' \">\r\n <div class=\"field-head\">Password</div>\r\n <div class=\"field-text d-flex\">\r\n <input [type]=\"textType\" placeholder=\"Please Enter Your Password\" [(ngModel)]=\"investor.password\">\r\n <mat-icon (click)=\"textType = 'text'\" *ngIf=\"textType == 'password'\">visibility</mat-icon>\r\n <mat-icon (click)=\"textType = 'password'\" *ngIf=\"textType == 'text'\">visibility_off</mat-icon>\r\n </div>\r\n </div>\r\n <div class=\"forgot-password cursor-pointer\" [style.color]=\"data?.styles?.background?.accentColor\"\r\n *ngIf=\"currentPage == 'LOGIN'\" (click)=\"currentPage = 'FORGOT_PASSWORD'\">Forgot Password?</div>\r\n <div class=\"forgot-password cursor-pointer\" [style.color]=\"data?.styles?.background?.accentColor\"\r\n *ngIf=\"currentPage == 'OTP_VERIFY' || otpSent\" (click)=\"isSignUp ? sendOtp() : sendOtpForLogin();resend = true\">Resend OTP?</div>\r\n <div class=\"btn-container d-flex align-items-center justify-content-center\">\r\n <button class=\"login-btn cursor-pointer\" [style.background]=\"data?.styles?.background?.accentColor\" *ngIf=\"currentPage != 'OTP' && (currentPage !== 'FORGOT_PASSWORD' || showForgotFields)\"\r\n (click)=\"buttonClickedEvent()\" [disabled]=\"buttonLoader\" [class.btn-size]=\"currentPage == 'FORGOT_PASSWORD' || currentPage == 'SIGN_UP' || currentPage == 'OTP_VERIFY'\">\r\n <span *ngIf=\"buttonLoader\" ><i class=\"fas fa-circle-notch fa-spin\"></i> Loading</span>\r\n <span *ngIf=\"!buttonLoader\">{{ currentPage ==\r\n 'LOGIN' ? \"Login\" : currentPage == 'FORGOT_PASSWORD' ? \"Reset Password\" :\r\n currentPage == 'OTP_VERIFY' ? 'Verify OTP' : \"Create Account\"}}</span></button>\r\n\r\n <button class=\"login-btn cursor-pointer\" (click)=\"sendOtpForLogin()\" [disabled]=\"buttonLoader\" [style.background]=\"data?.styles?.background?.accentColor\" *ngIf=\"(currentPage == 'OTP' || currentPage == 'FORGOT_PASSWORD') && !otpSent && !showForgotFields\">\r\n <span *ngIf=\"buttonLoader\" ><i class=\"fas fa-circle-notch fa-spin\"></i> Loading</span>\r\n <span *ngIf=\"!buttonLoader\">Send Otp</span>\r\n </button>\r\n\r\n <button class=\"login-btn cursor-pointer\" (click)=\"verifyOtp()\" [disabled]=\"buttonLoader\" [style.background]=\"data?.styles?.background?.accentColor\" *ngIf=\"(currentPage == 'OTP' || currentPage == 'FORGOT_PASSWORD') && otpSent && !showForgotFields\">\r\n <span *ngIf=\"buttonLoader\" ><i class=\"fas fa-circle-notch fa-spin\"></i> Loading</span>\r\n <span *ngIf=\"!buttonLoader\" >{{currentPage == 'OTP' ? \"Login\" : \"Proceed to Change Password\"}}</span>\r\n </button>\r\n </div>\r\n <div class=\"another-page\" *ngIf=\"currentPage == 'LOGIN' || currentPage == 'OTP'\">\r\n <div class=\"signup-text\">Don\u2019t have an account? <span class=\"span-text cursor-pointer\"\r\n [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"currentPage = 'SIGN_UP';loginEmail = '';investor.password = '';investor.phoneNumber = '';otpSent = false\">Sign\r\n Up</span></div>\r\n <div class=\"signup-text m-5\">or</div>\r\n <div class=\"signup-text\">Login with <span class=\"span-text cursor-pointer\"\r\n [style.color]=\"data?.styles?.background?.accentColor\" *ngIf=\"currentPage == 'LOGIN' \"\r\n (click)=\"currentPage = 'OTP'\">OTP</span><span class=\"span-text cursor-pointer\"\r\n [style.color]=\"data?.styles?.background?.accentColor\" *ngIf=\"currentPage == 'OTP'\"\r\n (click)=\"currentPage = 'LOGIN';loginEmail = '';otpSent = false\">Password</span></div>\r\n </div>\r\n <div class=\"another-page\" *ngIf=\"currentPage == 'SIGN_UP' || currentPage == 'FORGOT_PASSWORD'\">\r\n <div class=\"signup-text\">Already have an account? <span class=\"span-text cursor-pointer\"\r\n [style.color]=\"data?.styles?.background?.accentColor\" (click)=\"currentPage = 'LOGIN';loginEmail = '';investor.password = '';investor.phoneNumber = '';otpSent = false;showForgotFields = false\">Sign\r\n In</span></div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div [ngClass]=\"{'hover_effect': edit}\" *ngIf=\"showEditors\">\r\n <simpo-hover-elements [data]=\"data\" [index]=\"index\" [editOptions]=\"edit\"></simpo-hover-elements>\r\n </div>\r\n <div *ngIf=\"showDelete\" [ngClass]=\"{'hover_effect': delete}\">\r\n <simpo-delete-hover-element [data]=\"data\" [index]=\"index\"></simpo-delete-hover-element>\r\n </div>\r\n</section>\r\n", styles: ["*{font-family:DM Sans!important}mat-icon{font-family:Material Icons!important}.h-85{height:85vh;position:relative}.hover_effect{position:absolute;width:100%;top:0;left:0;height:100%}.w-40-85{width:40%}.btn-size{width:40%!important}.head{font-size:36px;font-weight:600;line-height:52px;color:#112133;text-align:center;padding:15px;padding-bottom:unset}.field-container{padding:15px}.field-head{margin-bottom:10px;font-size:17px;font-weight:600;line-height:24px;color:#2c2c2c}.field-text{padding:10px;border-radius:20px;font-size:15px;font-weight:400;color:#ababab;background:#fff}.field-text input{width:100%;border:none;appearance:none;outline:unset;background:#fff;color:#000}.forgot-password{text-align:end;font-size:16px;font-weight:600;line-height:24px;margin-bottom:15px}.another-page{margin-top:15px;text-align:center}.signup-text{color:#6b6b6b;font-size:14px;font-weight:400;line-height:24px;margin-bottom:5px}.m-5{margin:5px 0!important}.mb-30{margin-bottom:30px!important}.mb-15{margin-bottom:15px!important}.login-btn{border:unset;padding:12px 18px;border-radius:6px;font-size:18px!important;font-weight:600;line-height:20px}.span-text{font-weight:700!important}.cursor-pointer{cursor:pointer}.additional-styles{padding:25px!important;width:10%!important;border:unset!important;border-radius:20px!important}.clr-red{color:red;font-size:12px}.border-red{border:1px solid red!important}@media screen and (max-width : 475px){.w-40-85{width:85%}.h-86{height:90vh!important}.btn-size{width:100%!important;white-space:nowrap}.additional-styles{width:15%!important;border-radius:10px!important}}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}\n"] }]
|
398
|
+
}], ctorParameters: () => [{ type: i1.EventsService }, { type: i2.RestService }, { type: i3.Router }, { type: i3.ActivatedRoute }, { type: i4.MessageService }, { type: i5.MatDialog }], propDecorators: { data: [{
|
399
|
+
type: Input
|
400
|
+
}], index: [{
|
401
|
+
type: Input
|
402
|
+
}], edit: [{
|
403
|
+
type: Input
|
404
|
+
}], delete: [{
|
405
|
+
type: Input
|
406
|
+
}] } });
|
407
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbnVwLXNpZ25pbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL3NpZ251cC1zaWduaW4vc2lnbnVwLXNpZ25pbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL3NlY3Rpb25zL3NpZ251cC1zaWduaW4vc2lnbnVwLXNpZ25pbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLEtBQUssRUFBMkIsTUFBTSxlQUFlLENBQUM7QUFFdEYsT0FBTyxXQUFXLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTlELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHNFQUFzRSxDQUFDO0FBQ25ILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFFLFdBQVcsRUFBVyxNQUFNLGdCQUFnQixDQUFDO0FBR3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFN0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixD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Q0FBQyxDQUFBO0lBQ0osQ0FBQzs4R0F6WVUscUJBQXFCO2tHQUFyQixxQkFBcUIsNElBSnJCLENBQUMsY0FBYyxDQUFDLGlEQzNDN0IsMmxUQWdJQSx5d0REcEdJLFlBQVksa2JBQ1osb0JBQW9CLG9XQUdwQixjQUFjLCtFQUNkLFdBQVcsNDhCQUNYLE9BQU87Z0JBQ1AsWUFBWTtnQkFFWixtQkFBbUIsMEdBQ25CLGtCQUFrQix5RkFDbEIsZUFBZSxrRkFDZixXQUFXOzsyRkFPRixxQkFBcUI7a0JBdkJqQyxTQUFTOytCQUNFLHFCQUFxQixjQUNuQixJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixvQkFBb0I7d0JBQ3BCLHNCQUFzQjt3QkFDdEIsMkJBQTJCO3dCQUMzQixjQUFjO3dCQUNkLFdBQVc7d0JBQ1gsT0FBTzt3QkFDUCxZQUFZO3dCQUVaLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixlQUFlO3dCQUNmLFdBQVc7cUJBRVosYUFDVSxDQUFDLGNBQWMsQ0FBQzttTkFLbEIsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgUXVlcnlMaXN0LCBWaWV3Q2hpbGRyZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU2lnbkluU2lnblVwU3R5bGVzTW9kZWwsIFNpZ25VcFNpZ25Jbk1vZGVsIH0gZnJvbSAnLi9zaWdudXAtc2lnbmluLm1vZGVsJztcclxuaW1wb3J0IEJhc2VTZWN0aW9uIGZyb20gJy4uL0Jhc2VTZWN0aW9uJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgU2ltcG9Db21wb25lbnRNb2R1bGUgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2luZGV4JztcclxuaW1wb3J0IHsgRXZlbnRzU2VydmljZSB9IGZyb20gJy4vLi4vLi4vc2VydmljZXMvZXZlbnRzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIb3ZlckVsZW1lbnRzQ29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvaG92ZXItZWxlbWVudHMvaG92ZXItZWxlbWVudHMuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IERlbGV0ZUhvdmVyRWxlbWVudENvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL2RlbGV0ZS1ob3Zlci1lbGVtZW50L2RlbGV0ZS1ob3Zlci1lbGVtZW50LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBIb3ZlckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9ob3Zlci1lbGVtZW50LWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEJhY2tncm91bmREaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvYmFja2dyb3VuZC1kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBBbmltYXRpb25EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmUvYW5pbWF0aW9uLWRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IENvcm5lckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9jb3JuZXItZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIE5nTW9kZWwgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVzdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBLeWNEZXRhaWxzQ29tcG9uZW50IH0gZnJvbSAnLi4va3ljLWRldGFpbHMva3ljLWRldGFpbHMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU3RvcmFnZUtleXMgfSBmcm9tICcuLi8uLi9zdHlsZXMvaW5kZXgnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgVG9hc3RNb2R1bGUgfSBmcm9tICdwcmltZW5nL3RvYXN0JztcclxuaW1wb3J0IHsgTWF0SWNvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2ltcG8tc2lnbnVwLXNpZ25pbicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBTaW1wb0NvbXBvbmVudE1vZHVsZSxcclxuICAgIEhvdmVyRWxlbWVudHNDb21wb25lbnQsXHJcbiAgICBEZWxldGVIb3ZlckVsZW1lbnRDb21wb25lbnQsXHJcbiAgICBIb3ZlckRpcmVjdGl2ZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgTWF0SWNvbixcclxuICAgIC8vRGlyZWN0aXZlc1xyXG5cclxuICAgIEJhY2tncm91bmREaXJlY3RpdmUsXHJcbiAgICBBbmltYXRpb25EaXJlY3RpdmUsXHJcbiAgICBDb3JuZXJEaXJlY3RpdmUsXHJcbiAgICBUb2FzdE1vZHVsZVxyXG5cclxuICBdLFxyXG4gIHByb3ZpZGVyczogW01lc3NhZ2VTZXJ2aWNlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2lnbnVwLXNpZ25pbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3NpZ251cC1zaWduaW4uY29tcG9uZW50LmNzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIFNpZ251cFNpZ25pbkNvbXBvbmVudCBleHRlbmRzIEJhc2VTZWN0aW9uIHtcclxuICBASW5wdXQoKSBkYXRhPzogU2lnblVwU2lnbkluTW9kZWw7XHJcbiAgQElucHV0KCkgaW5kZXg/OiBudW1iZXI7XHJcbiAgQElucHV0KCkgZWRpdD86IGJvb2xlYW47XHJcbiAgQElucHV0KCkgZGVsZXRlPzogYm9vbGVhbjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZXZlbnRTZXJ2aWNlOiBFdmVudHNTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZXN0U2VydmljZTogUmVzdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxyXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSxcclxuICAgIHByaXZhdGUgbWF0RGlhbG9nOiBNYXREaWFsb2dcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBwcm9wZXJ0eUlkPzogbnVtYmVyO1xyXG4gIGJ1dHRvbkxvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHRleHRUeXBlOiBzdHJpbmcgPSBcInBhc3N3b3JkXCJcclxuICBreWNEZXRhaWxzU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUoKHBhcmFtOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHBhcmFtWyd0eXBlJ10pXHJcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IHBhcmFtWyd0eXBlJ107XHJcbiAgICAgIGlmIChwYXJhbVsnaWQnXSlcclxuICAgICAgICB0aGlzLnByb3BlcnR5SWQgPSBwYXJhbVsnaWQnXTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMua3ljRGV0YWlsc1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIGN1cnJlbnRQYWdlOiAnTE9HSU4nIHwgJ1NJR05fVVAnIHwgJ09UUCcgfCAnRk9SR09UX1BBU1NXT1JEJyB8ICdPVFBfVkVSSUZZJyA9ICdTSUdOX1VQJ1xyXG4gIGt5Y0RldGFpbHNTdWJzY3JpcGl0aW9uPzogU3Vic2NyaXB0aW9uO1xyXG4gIGJhY2tncm91bmRJbWFnZTogYW55ID0gXCJodHRwczovL3Byb2Qtc2ltcG8uczMuYXAtc291dGgtMS5hbWF6b25hd3MuY29tL3Byb2QtaW1hZ2VzLzUwMDQxNWMxNzM5NDM0MTg2MzEwaW1hZ2UlMjAxNi5wbmdcIlxyXG5cclxuICBlZGl0U2VjdGlvbigpIHtcclxuICAgIHRoaXMuX2V2ZW50U2VydmljZS50b2dnbGVFZGl0b3JFdmVudC5lbWl0KGZhbHNlKTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLl9ldmVudFNlcnZpY2UuZWRpdFNlY3Rpb24uZW1pdCh7IGRhdGE6IHRoaXMuZGF0YSB9KTtcclxuICAgIH0sIDEwMCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgb3RwQXJyYXkgPSBuZXcgQXJyYXkoNCkuZmlsbCgnJylcclxuICBtb3ZlKGV2ZW50OiBhbnksIGlkeDogbnVtYmVyKSB7XHJcblxyXG4gICAgaWYgKGlzTmFOKE51bWJlcihldmVudC5rZXkpKSAmJiBldmVudC5jb2RlICE9IFwiQmFja3NwYWNlXCIpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBpZiAoZXZlbnQuY29kZSAhPSBcIkJhY2tzcGFjZVwiKSB7XHJcbiAgICAgIHRoaXMub3RwQXJyYXlbaWR4XSA9IGV2ZW50LmtleTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJvdHBfXCIgKyAoaWR4ICsgMSkpPy5mb2N1cygpO1xyXG4gICAgfVxyXG4gICAgaWYgKGV2ZW50LmNvZGUgPT0gXCJCYWNrc3BhY2VcIiAmJiAhdGhpcy5vdHBBcnJheVtpZHhdKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwib3RwX1wiICsgKGlkeCAtIDEpKT8uZm9jdXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxvZ2luT3RwQXJyYXkgPSBuZXcgQXJyYXkoNCkuZmlsbCgnJylcclxuICBtb3ZlTG9naW5PdHBDdXJzb3IoZXZlbnQ6IGFueSwgaWR4OiBudW1iZXIpIHtcclxuXHJcbiAgICBpZiAoaXNOYU4oTnVtYmVyKGV2ZW50LmtleSkpICYmIGV2ZW50LmNvZGUgIT0gXCJCYWNrc3BhY2VcIilcclxuICAgICAgcmV0dXJuO1xyXG5cclxuICAgIGlmIChldmVudC5jb2RlICE9IFwiQmFja3NwYWNlXCIpIHtcclxuICAgICAgdGhpcy5sb2dpbk90cEFycmF5W2lkeF0gPSBldmVudC5rZXk7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibG9naW5PdHBfXCIgKyAoaWR4ICsgMSkpPy5mb2N1cygpO1xyXG4gICAgfVxyXG4gICAgaWYgKGV2ZW50LmNvZGUgPT0gXCJCYWNrc3BhY2VcIiAmJiAhdGhpcy5vdHBBcnJheVtpZHhdKSB7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibG9naW5PdHBfXCIgKyAoaWR4IC0gMSkpPy5mb2N1cygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbG9naW5FbWFpbDogc3RyaW5nID0gJydcclxuICBpbnZlc3RvcjogYW55ID0ge1xyXG4gICAgXCJmdWxsTmFtZVwiOiBcIlwiLFxyXG4gICAgXCJlbWFpbElkXCI6IFwiXCIsXHJcbiAgICBcInBob25lTnVtYmVyXCI6IFwiXCIsXHJcbiAgICBcInBhc3N3b3JkXCI6IFwiXCIsXHJcbiAgICBcImt5Y1ZlcmlmaWVkXCI6IGZhbHNlLFxyXG4gICAgXCJhY3RpdmVcIjogdHJ1ZSxcclxuICAgIFwib3RwXCI6IFwiXCIsXHJcbiAgICBcImRlbGV0ZWRcIjogZmFsc2VcclxuICB9XHJcbiAgb3RwU2VudDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBidXR0b25DbGlja2VkRXZlbnQoKSB7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50UGFnZSA9PT0gJ1NJR05fVVAnKSB7XHJcbiAgICAgIHRoaXMuaXNTaWduVXAgPSB0cnVlXHJcbiAgICAgIHRoaXMuc2VuZE90cCgpXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5jdXJyZW50UGFnZSA9PT0gJ09UUF9WRVJJRlknKSB7XHJcbiAgICAgIHRoaXMuc2lnblVwKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5jdXJyZW50UGFnZSA9PT0gJ0xPR0lOJykge1xyXG4gICAgICB0aGlzLmxvZ2luV2l0aFBhc3N3b3JkKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5jdXJyZW50UGFnZSA9PSAnRk9SR09UX1BBU1NXT1JEJykge1xyXG4gICAgICB0aGlzLmZvcmdvdFBhc3N3b3JkKClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNob3dXYXJuaW5nIDogYm9vbGVhbiA9IGZhbHNlXHJcbiAgaW52YWxpZEVtYWlsIDogYm9vbGVhbiA9IGZhbHNlXHJcbiAgaW52YWxpZFBob25lIDogYm9vbGVhbiA9IGZhbHNlXHJcbiAgdmVyaWZ5UGhvbmVFbWFpbCgpIHtcclxuICAgIGlmICh0aGlzLmlzVmFsaWRFbWFpbCh0aGlzLmludmVzdG9yLmVtYWlsSWQpICYmIHRoaXMuaW52ZXN0b3IucGhvbmVOdW1iZXIubGVuZ3RoID09IDEwKSB7XHJcbiAgICAgIHRoaXMucmVzdFNlcnZpY2UudmVyaWZ5RW1haWxQaG9uZSh0aGlzLmludmVzdG9yLnBob25lTnVtYmVyLCB0aGlzLmludmVzdG9yLmVtYWlsSWQpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNob3dXYXJuaW5nID0gZmFsc2VcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNob3dXYXJuaW5nID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXHJcbiAgICAgICAgICAgIHN1bW1hcnk6ICdTaWduIFVwJyxcclxuICAgICAgICAgICAgZGV0YWlsOiAnVXNlciBBbHJlYWR5IEV4aXN0IHdpdGggdGhpcyBjcmVkZW50aWFscydcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHZhbGlkRW1haWwoKXtcclxuICAgIGlmKCF0aGlzLmlzVmFsaWRFbWFpbCh0aGlzLmludmVzdG9yLmVtYWlsSWQpKVxyXG4gICAgICB0aGlzLmludmFsaWRFbWFpbCA9IHRydWVcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5pbnZhbGlkRW1haWwgPSBmYWxzZVxyXG4gIH1cclxuXHJcbiAgdmFsaWRQaG9uZSgpe1xyXG4gICAgaWYodGhpcy5pbnZlc3Rvci5waG9uZU51bWJlci5sZW5ndGggIT0gMTApXHJcbiAgICAgIHRoaXMuaW52YWxpZFBob25lID0gdHJ1ZVxyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLmludmFsaWRQaG9uZSA9IGZhbHNlXHJcbiAgfVxyXG5cclxuICBzaWduVXAoKSB7XHJcbiAgICB0aGlzLmJ1dHRvbkxvYWRlciA9IHRydWU7XHJcbiAgICB0aGlzLmludmVzdG9yLm90cCA9IFwiXCJcclxuICAgIHRoaXMub3RwQXJyYXkuZm9yRWFjaCgob3RwKSA9PiB7XHJcbiAgICAgIHRoaXMuaW52ZXN0b3Iub3RwICs9IG90cDtcclxuICAgIH0pXHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLnNpZ25VcCh0aGlzLmludmVzdG9yKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgICBzZXZlcml0eTogJ3N1Y2Nlc3MnLFxyXG4gICAgICAgICAgc3VtbWFyeTogJ1NpZ24gVXAnLFxyXG4gICAgICAgICAgZGV0YWlsOiAnU2lnbiB1cCBTdWNjZXNzZnVsbHknXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZSA9ICdMT0dJTic7XHJcbiAgICAgICAgdGhpcy5idXR0b25Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcclxuICAgICAgICAgIHN1bW1hcnk6ICdTaWduIFVwIEZhaWxlZCcsXHJcbiAgICAgICAgICBkZXRhaWw6ICdTb21ldGhpbmcgd2VudCB3cm9uZy4gUGxlYXNlIHRyeSBhZ2Fpbi4nXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5idXR0b25Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIHNlbmRPdHAoKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNWYWxpZEVtYWlsKHRoaXMuaW52ZXN0b3IuZW1haWxJZCkpIHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxyXG4gICAgICAgIHN1bW1hcnk6ICdTaWduIFVwJyxcclxuICAgICAgICBkZXRhaWw6ICdJbnZhaWxkIEVtYWlsJ1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5idXR0b25Mb2FkZXIgPSB0cnVlO1xyXG4gICAgdGhpcy5yZXN0U2VydmljZS5zZW5kT3RwKHRoaXMuaW52ZXN0b3IuZW1haWxJZCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgc2V2ZXJpdHk6ICdzdWNjZXNzJyxcclxuICAgICAgICAgIHN1bW1hcnk6ICdPVFAnLFxyXG4gICAgICAgICAgZGV0YWlsOiAnT1RQIFNlbnQgU3VjY2Vzc2Z1bGx5J1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSAnT1RQX1ZFUklGWSc7XHJcbiAgICAgICAgdGhpcy5idXR0b25Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcclxuICAgICAgICAgIHN1bW1hcnk6ICdPVFAgRmFpbGVkJyxcclxuICAgICAgICAgIGRldGFpbDogZXJyLmVycm9yPy5tZXNzYWdlIHx8ICdGYWlsZWQgdG8gc2VuZCBPVFAuIFBsZWFzZSB0cnkgYWdhaW4uJ1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuYnV0dG9uTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBsb2dpbldpdGhQYXNzd29yZCgpIHtcclxuXHJcbiAgICBpZiAoIXRoaXMuaXNWYWxpZEVtYWlsKHRoaXMubG9naW5FbWFpbCkpIHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxyXG4gICAgICAgIHN1bW1hcnk6ICdTaWduIFVwJyxcclxuICAgICAgICBkZXRhaWw6ICdJbnZhaWxkIEVtYWlsIEFkZHJlc3MnXHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaW52ZXN0b3IucGFzc3dvcmQubGVuZ3RoID09IDApIHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxyXG4gICAgICAgIHN1bW1hcnk6ICdTaWduIFVwJyxcclxuICAgICAgICBkZXRhaWw6ICdQbGVhc2UgZW50ZXIgcGFzc3dvcmQnXHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHRoaXMuYnV0dG9uTG9hZGVyID0gdHJ1ZTtcclxuICAgIHRoaXMucmVzdFNlcnZpY2UubG9naW4oeyBlbWFpbDogdGhpcy5sb2dpbkVtYWlsLCBwYXNzd29yZDogdGhpcy5pbnZlc3Rvci5wYXNzd29yZCB9KS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgICBzZXZlcml0eTogJ3N1Y2Nlc3MnLFxyXG4gICAgICAgICAgc3VtbWFyeTogJ0xvZyBJbicsXHJcbiAgICAgICAgICBkZXRhaWw6ICdMb2dnZWQgaW4gc3VjY2Vzc2Z1bGx5J1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFN0b3JhZ2VLZXlzLklOVkVTVE9SX0lELCByZXMuaW52ZXN0b3JJZCk7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcGVydHlJZCkge1xyXG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydkZXRhaWxzJ10sIHsgcXVlcnlQYXJhbXM6IHsgaWQ6IHRoaXMucHJvcGVydHlJZCB9IH0pO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmdldEt5Y0RldGFpbHMoKTtcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ3Byb3BlcnR5LWxpc3QnXSk7XHJcbiAgICAgICAgdGhpcy5idXR0b25Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcclxuICAgICAgICAgIHN1bW1hcnk6ICdMb2dpbiBGYWlsZWQnLFxyXG4gICAgICAgICAgZGV0YWlsOiBlcnIuZXJyb3I/Lm1lc3NhZ2UgfHwgJ0ludmFsaWQgZW1haWwgb3IgcGFzc3dvcmQuIFBsZWFzZSB0cnkgYWdhaW4uJ1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuYnV0dG9uTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGlzU2lnblVwOiBib29sZWFuID0gZmFsc2VcclxuICByZXNlbmQ6IGJvb2xlYW4gPSBmYWxzZVxyXG4gIHNlbmRPdHBGb3JMb2dpbigpIHtcclxuXHJcbiAgICBpZiAoIXRoaXMuaXNWYWxpZEVtYWlsKHRoaXMubG9naW5FbWFpbCkpIHtcclxuICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxyXG4gICAgICAgIHN1bW1hcnk6ICdTaWduIFVwJyxcclxuICAgICAgICBkZXRhaWw6ICdJbnZhaWxkIEVtYWlsIEFkZHJlc3MnXHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmJ1dHRvbkxvYWRlciA9IHRydWU7XHJcbiAgICBpZiAodGhpcy5yZXNlbmQgPT0gZmFsc2UgJiYgdGhpcy5jdXJyZW50UGFnZSA9PSAnTE9HSU4nKSB7XHJcbiAgICAgIHRoaXMub3RwU2VudCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yZXN0U2VydmljZS5zZW5kT3RwKHRoaXMubG9naW5FbWFpbCkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5vdHBTZW50ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgICBzZXZlcml0eTogJ3N1Y2Nlc3MnLFxyXG4gICAgICAgICAgc3VtbWFyeTogJ09UUCcsXHJcbiAgICAgICAgICBkZXRhaWw6ICdPVFAgU2VudCBTdWNjZXNzZnVsbHknXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5idXR0b25Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxyXG4gICAgICAgICAgc3VtbWFyeTogJ0Vycm9yJyxcclxuICAgICAgICAgIGRldGFpbDogJ0ZhaWxlZCB0byBzZW5kIE9UUC4gUGxlYXNlIHRyeSBhZ2Fpbi4nXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5idXR0b25Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgc2hvd0ZvcmdvdEZpZWxkczogYm9vbGVhbiA9IGZhbHNlXHJcbiAgbG9nSW5PdHA6IHN0cmluZyA9IFwiXCJcclxuICB2ZXJpZnlPdHAoKSB7XHJcbiAgICB0aGlzLmJ1dHRvbkxvYWRlciA9IHRydWU7XHJcbiAgICB0aGlzLmxvZ0luT3RwID0gJyc7XHJcbiAgICB0aGlzLmxvZ2luT3RwQXJyYXkuZm9yRWFjaCgob3RwKSA9PiB7XHJcbiAgICAgIHRoaXMubG9nSW5PdHAgKz0gb3RwO1xyXG4gICAgfSk7XHJcbiAgICAvLyBpZiAodGhpcy5jdXJyZW50UGFnZSA9PSAnRk9SR09UX1BBU1NXT1JEJykge1xyXG4gICAgLy8gICB0aGlzLnNob3dGb3Jnb3RGaWVsZHMgPSB0cnVlXHJcbiAgICAvLyAgIHRoaXMub3RwU2VudCA9IGZhbHNlXHJcbiAgICAvLyAgIHRoaXMuYnV0dG9uTG9hZGVyID0gZmFsc2VcclxuICAgIC8vICAgcmV0dXJuO1xyXG4gICAgLy8gfVxyXG4gICAgdGhpcy5yZXN0U2VydmljZS52ZXJpZnlPdHAodGhpcy5sb2dpbkVtYWlsLCB0aGlzLmxvZ0luT3RwKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50UGFnZSA9PSAnRk9SR09UX1BBU1NXT1JEJykge1xyXG4gICAgICAgICAgdGhpcy5zaG93Rm9yZ290RmllbGRzID0gdHJ1ZVxyXG4gICAgICAgICAgdGhpcy5vdHBTZW50ID0gZmFsc2VcclxuICAgICAgICAgIHRoaXMuYnV0dG9uTG9hZGVyID0gZmFsc2VcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoe1xyXG4gICAgICAgICAgc2V2ZXJpdHk6ICdzdWNjZXNzJyxcclxuICAgICAgICAgIHN1bW1hcnk6ICdMb2cgSW4nLFxyXG4gICAgICAgICAgZGV0YWlsOiAnTG9nZ2VkIGluIHN1Y2Nlc3NmdWxseSdcclxuICAgICAgICB9KTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShTdG9yYWdlS2V5cy5JTlZFU1RPUl9JRCwgcmVzLmludmVzdG9ySWQpO1xyXG4gICAgICAgIGlmICh0aGlzLnByb3BlcnR5SWQpIHtcclxuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnZGV0YWlscyddLCB7IHF1ZXJ5UGFyYW1zOiB7IGlkOiB0aGlzLnByb3BlcnR5SWQgfSB9KTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5nZXRLeWNEZXRhaWxzKCk7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydwcm9wZXJ0eS1saXN0J10pO1xyXG4gICAgICAgIHRoaXMuYnV0dG9uTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcclxuICAgICAgICAgIHN1bW1hcnk6ICdFcnJvcicsXHJcbiAgICAgICAgICBkZXRhaWw6ICdJbnZhbGlkIE9UUC4gUGxlYXNlIHRyeSBhZ2Fpbi4nXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5idXR0b25Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBpc1ZhbGlkRW1haWwoZW1haWw6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgZW1haWxSZWdleCA9IC9eW2EtekEtWjAtOS5fJSstXStAW2EtekEtWjAtOS4tXStcXC5bYS16QS1aXXsyLH0kLztcclxuICAgIHJldHVybiBlbWFpbFJlZ2V4LnRlc3QoZW1haWwudHJpbSgpKTtcclxuICB9XHJcblxyXG4gIGdldEt5Y0RldGFpbHMoKSB7XHJcbiAgICB0aGlzLmt5Y0RldGFpbHNTdWJzY3JpcGl0aW9uID0gdGhpcy5yZXN0U2VydmljZS5nZXRLeWNEZXRhaWxzKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoIShyZXM/Lm1lc3NhZ2U/LnBhblZlcmlmaWVkID09PSAnVkFMSUQnICYmIHJlcz8ubWVzc2FnZT8uYWFkaGFhclZlcmlmaWVkID09PSAnVkFMSUQnKSkge1xyXG4gICAgICAgIHRoaXMubWF0RGlhbG9nLm9wZW4oS3ljRGV0YWlsc0NvbXBvbmVudCwgeyBwYW5lbENsYXNzOiBcImxvZ2luLXNpZ251cFwiIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0IGlzTW9iaWxlKCkge1xyXG4gICAgcmV0dXJuIHdpbmRvdy5pbm5lcldpZHRoIDw9IDQ3NTtcclxuICB9XHJcblxyXG4gIHJlRW50ZXJlZFBhc3N3b3JkOiBzdHJpbmcgPSBcIlwiXHJcbiAgbmV3UGFzc3dvcmQ6IHN0cmluZyA9IFwiXCJcclxuICBmT3RwU2VudDogYm9vbGVhbiA9IGZhbHNlXHJcblxyXG4gIGNoZWNrUGFzc3dvcmRNYXRjaChwYXNzd29yZDogc3RyaW5nLCByZUVudGVyZWRQYXNzd29yZDogc3RyaW5nKSB7XHJcbiAgICBpZiAocGFzc3dvcmQgIT0gcmVFbnRlcmVkUGFzc3dvcmQpXHJcbiAgICAgIHJldHVybiBmYWxzZVxyXG4gICAgcmV0dXJuIHRydWVcclxuICB9XHJcblxyXG4gIGZvcmdvdFBhc3N3b3JkKCkge1xyXG4gICAgdGhpcy5idXR0b25Mb2FkZXIgPSB0cnVlO1xyXG4gICAgbGV0IHBheWxvYWQgPSB7XHJcbiAgICAgIFwiZW1haWxcIjogdGhpcy5sb2dpbkVtYWlsLFxyXG4gICAgICBcIm90cFwiOiB0aGlzLmxvZ0luT3RwLFxyXG4gICAgICBcIm5ld1Bhc3N3b3JkXCI6IHRoaXMubmV3UGFzc3dvcmQsXHJcbiAgICAgIFwiY29uZmlybVBhc3N3b3JkXCI6IHRoaXMucmVFbnRlcmVkUGFzc3dvcmRcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLmZvcmdvdFBhc3N3b3JkKHBheWxvYWQpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgICBzZXZlcml0eTogJ3N1Y2Nlc3MnLFxyXG4gICAgICAgICAgc3VtbWFyeTogJ0ZvcmdvdCBQYXNzd29yZCcsXHJcbiAgICAgICAgICBkZXRhaWw6ICdTdWNjZXNzZnVsbHkgQ2hhbmdlZCB0aGUgcGFzc3dvcmQnXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5idXR0b25Mb2FkZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmN1cnJlbnRQYWdlID0gJ0xPR0lOJ1xyXG4gICAgICAgIHRoaXMuc2hvd0ZvcmdvdEZpZWxkcyA9IGZhbHNlXHJcbiAgICAgICAgdGhpcy5vdHBTZW50ID0gZmFsc2VcclxuICAgICAgICB0aGlzLmxvZ2luRW1haWwgPSBcIlwiXHJcbiAgICAgICAgdGhpcy5sb2dJbk90cCA9IFwiXCJcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgIHNldmVyaXR5OiAnZXJyb3InLFxyXG4gICAgICAgICAgc3VtbWFyeTogJ0Vycm9yJyxcclxuICAgICAgICAgIGRldGFpbDogJ1BsZWFzZSB0cnkgYWdhaW4uJ1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuYnV0dG9uTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxufVxyXG4iLCI8cC10b2FzdCBwb3NpdGlvbj1cImJvdHRvbS1yaWdodFwiIFtiYXNlWkluZGV4XT1cIjEwMDAwMDAwMDAwXCIgW2F1dG9aSW5kZXhdPVwidHJ1ZVwiXHJcbiAgICBbc2hvd1RyYW5zZm9ybU9wdGlvbnNdPVwiaXNNb2JpbGUgPyAndHJhbnNsYXRlWSgtMTAwJSknIDogJydcIj48L3AtdG9hc3Q+XHJcblxyXG48c2VjdGlvbiBbaWRdPVwiZGF0YT8uaWRcIiBjbGFzcz1cIm1haW4tY29udGFpbmVyIGgtODUgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcclxuICBbbmdTdHlsZV09XCJ7J2JhY2tncm91bmQtaW1hZ2UnOiAndXJsKCcgKyBiYWNrZ3JvdW5kSW1hZ2UgKyAnKSd9XCIgc2ltcG9Ib3ZlciAoaG92ZXJpbmcpPVwic2hvd0VkaXRUYWJzKCRldmVudClcIj5cclxuICA8ZGl2IGNsYXNzPVwibWlkZGxlLWNvbnRhaW5lciB3LTQwLTg1XCIgW2lkXT1cImRhdGE/LmlkXCIgW3NpbXBvQmFja2dyb3VuZF09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmRcIlxyXG4gICAgW3NpbXBvQW5pbWF0aW9uXT1cImRhdGE/LnN0eWxlcz8uYW5pbWF0aW9uXCIgW3NpbXBvQ29ybmVyXT1cImRhdGE/LnN0eWxlcz8uY29ybmVyc1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImhlYWRcIj57eyBjdXJyZW50UGFnZSA9PSAnTE9HSU4nIHx8IGN1cnJlbnRQYWdlID09ICdPVFAnID8gXCJTaWduIEluXCIgOiBjdXJyZW50UGFnZSA9PVxyXG4gICAgICAnRk9SR09UX1BBU1NXT1JEJyA/IFwiRm9yZ290IFBhc3N3b3JkXCIgOiBjdXJyZW50UGFnZSA9PSAnT1RQX1ZFUklGWScgPyBcIk9UUCBWZXJmaWNhdGlvblwiIDogXCJTaWduIFVwXCJ9fTwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImZpZWxkLWNvbnRhaW5lclwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgbWItMTVcIiAqbmdJZj1cIihjdXJyZW50UGFnZSA9PSAnTE9HSU4nIHx8IGN1cnJlbnRQYWdlID09ICdPVFAnIHx8IGN1cnJlbnRQYWdlID09ICdGT1JHT1RfUEFTU1dPUkQnKSAmJiAhc2hvd0ZvcmdvdEZpZWxkc1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZC1oZWFkXCI+RW1haWwgb3IgUGhvbmUgTnVtYmVyPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLXRleHRcIj5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiUGxlYXNlIEVudGVyIFlvdXIgUmVnaXN0ZXJlZCBFbWFpbCBvciBQaG9uZSBudW1iZXJcIiBbKG5nTW9kZWwpXT1cImxvZ2luRW1haWxcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBtYi0xNVwiICpuZ0lmPVwiKGN1cnJlbnRQYWdlID09ICdPVFAnIHx8IGN1cnJlbnRQYWdlID09ICdGT1JHT1RfUEFTU1dPUkQnKSAmJiBvdHBTZW50ICYmICFzaG93Rm9yZ290RmllbGRzXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLWhlYWRcIj5PVFA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtdGV4dC0xXCI+XHJcbiAgICAgICAgICA8ZGl2IGlkPVwib3RwXCIgY2xhc3M9XCJpbnB1dHMgZC1mbGV4IGZsZXgtcm93IGp1c3RpZnktY29udGVudC1jZW50ZXIgbXQtMlwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBfIG9mIFtdLmNvbnN0cnVjdG9yKDQpOyBsZXQgaWR4ID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJtLTIgdGV4dC1jZW50ZXIgZm9ybS1jb250cm9sIHJvdW5kZWQgYWRkaXRpb25hbC1zdHlsZXNcIiB0eXBlPVwibnVtYmVyXCIgbWF4PVwiMVwiXHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImxvZ2luT3RwQXJyYXlbaWR4XVwiIChrZXl1cCk9XCJtb3ZlTG9naW5PdHBDdXJzb3IoJGV2ZW50LCBpZHgpXCIgW2lkXT1cIidsb2dpbk90cF8nK2lkeFwiICNvdHBJbnB1dCAvPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIG1iLTE1XCIgKm5nSWY9XCJjdXJyZW50UGFnZSA9PSAnT1RQX1ZFUklGWSdcIj5cclxuICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJmaWVsZC1oZWFkXCIgKm5nSWY9XCJjdXJyZW50UGFnZSA9PSAnT1RQJyBcIj5PVFA8L2Rpdj4gLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLXRleHQtMVwiPlxyXG4gICAgICAgICAgPGRpdiBpZD1cIm90cFwiIGNsYXNzPVwiaW5wdXRzIGQtZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG10LTJcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgXyBvZiBbXS5jb25zdHJ1Y3Rvcig0KTsgbGV0IGlkeCA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwibS0yIHRleHQtY2VudGVyIGZvcm0tY29udHJvbCByb3VuZGVkIGFkZGl0aW9uYWwtc3R5bGVzXCIgdHlwZT1cIm51bWJlclwiIG1heD1cIjFcIlxyXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJvdHBBcnJheVtpZHhdXCIgKGtleXVwKT1cIm1vdmUoJGV2ZW50LCBpZHgpXCIgW2lkXT1cIidvdHBfJytpZHhcIiAjb3RwSW5wdXQgLz5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBtYi0xNVwiICpuZ0lmPVwiY3VycmVudFBhZ2UgPT0gJ1NJR05fVVAnXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLWhlYWRcIj5OYW1lPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLXRleHRcIj5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiUGxlYXNlIEVudGVyIFlvdXIgTmFtZVwiIFsobmdNb2RlbCldPVwiaW52ZXN0b3IuZnVsbE5hbWVcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBtYi0xNVwiICpuZ0lmPVwiY3VycmVudFBhZ2UgPT0gJ1NJR05fVVAnXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLWhlYWRcIj5FbWFpbDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZC10ZXh0XCIgW2NsYXNzLmJvcmRlci1yZWRdPVwic2hvd1dhcm5pbmcgfHwgaW52YWxpZEVtYWlsXCI+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cImVtYWlsXCIgcGxhY2Vob2xkZXI9XCJQbGVhc2UgRW50ZXIgWW91ciBFbWFpbFwiIFsobmdNb2RlbCldPVwiaW52ZXN0b3IuZW1haWxJZFwiIChuZ01vZGVsQ2hhbmdlKT1cInZlcmlmeVBob25lRW1haWwoKVwiIChibHVyKT1cInZhbGlkRW1haWwoKVwiIChpbnB1dCk9XCJ2YWxpZEVtYWlsKClcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwid2FybmluZy10ZXh0IGNsci1yZWRcIiAqbmdJZj1cInNob3dXYXJuaW5nXCI+VXNlciBBbHJlYWR5IEV4aXN0PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIndhcm5pbmctdGV4dCBjbHItcmVkXCIgKm5nSWY9XCJpbnZhbGlkRW1haWxcIj5JbnZhbGlkIEVtYWlsIChFZzogam9obmRvZSYjNjQ7Z21haWwuY29tKTwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpZWxkIG1iLTE1XCIgKm5nSWY9XCJjdXJyZW50UGFnZSA9PSAnU0lHTl9VUCdcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtaGVhZFwiPlBob25lIE51bWJlcjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZC10ZXh0XCIgW2NsYXNzLmJvcmRlci1yZWRdPVwic2hvd1dhcm5pbmcgfHwgaW52YWxpZFBob25lXCI+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIlBsZWFzZSBFbnRlciBZb3VyIFBob25lIE51bWJlclwiIFsobmdNb2RlbCldPVwiaW52ZXN0b3IucGhvbmVOdW1iZXJcIiAobmdNb2RlbENoYW5nZSk9XCJ2ZXJpZnlQaG9uZUVtYWlsKClcIiAoYmx1cik9XCJ2YWxpZFBob25lKClcIiAoaW5wdXQpPVwidmFsaWRQaG9uZSgpXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIndhcm5pbmctdGV4dCBjbHItcmVkXCIgKm5nSWY9XCJzaG93V2FybmluZ1wiPlVzZXIgQWxyZWFkeSBFeGlzdDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3YXJuaW5nLXRleHQgY2xyLXJlZFwiICpuZ0lmPVwiaW52YWxpZFBob25lXCI+SW52YWxpZCBQaG9uZSBudW1iZXIgaXQncyBsZW5ndGggc2hvdWxkIGJlIDEwPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgbWItMTVcIiAqbmdJZj1cImN1cnJlbnRQYWdlID09ICdGT1JHT1RfUEFTU1dPUkQnICYmIHNob3dGb3Jnb3RGaWVsZHNcIiA+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLWhlYWRcIj5OZXcgUGFzc3dvcmQ8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtdGV4dFwiPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJQbGVhc2UgRW50ZXIgWW91ciBQYXNzd29yZFwiIFsobmdNb2RlbCldPVwibmV3UGFzc3dvcmRcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZCBtYi0xNVwiICpuZ0lmPVwiY3VycmVudFBhZ2UgPT0gJ0ZPUkdPVF9QQVNTV09SRCcgJiYgc2hvd0ZvcmdvdEZpZWxkc1wiID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtaGVhZFwiPlJlLUVudGVyIFBhc3N3b3JkPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZpZWxkLXRleHRcIj5cclxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiUGxlYXNlIFJlLUVudGVyIFlvdXIgUGFzc3dvcmRcIiBbKG5nTW9kZWwpXT1cInJlRW50ZXJlZFBhc3N3b3JkXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmllbGQgbWItMTVcIiAqbmdJZj1cImN1cnJlbnRQYWdlID09ICdMT0dJTicgfHwgY3VycmVudFBhZ2UgPT0gJ1NJR05fVVAnIFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWVsZC1oZWFkXCI+UGFzc3dvcmQ8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmllbGQtdGV4dCBkLWZsZXhcIj5cclxuICAgICAgICAgIDxpbnB1dCBbdHlwZV09XCJ0ZXh0VHlwZVwiIHBsYWNlaG9sZGVyPVwiUGxlYXNlIEVudGVyIFlvdXIgUGFzc3dvcmRcIiBbKG5nTW9kZWwpXT1cImludmVzdG9yLnBhc3N3b3JkXCI+XHJcbiAgICAgICAgICA8bWF0LWljb24gKGNsaWNrKT1cInRleHRUeXBlID0gJ3RleHQnXCIgKm5nSWY9XCJ0ZXh0VHlwZSA9PSAncGFzc3dvcmQnXCI+dmlzaWJpbGl0eTwvbWF0LWljb24+XHJcbiAgICAgICAgICA8bWF0LWljb24gKGNsaWNrKT1cInRleHRUeXBlID0gJ3Bhc3N3b3JkJ1wiICpuZ0lmPVwidGV4dFR5cGUgPT0gJ3RleHQnXCI+dmlzaWJpbGl0eV9vZmY8L21hdC1pY29uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZvcmdvdC1wYXNzd29yZCBjdXJzb3ItcG9pbnRlclwiIFtzdHlsZS5jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCJcclxuICAgICAgICAqbmdJZj1cImN1cnJlbnRQYWdlID09ICdMT0dJTidcIiAoY2xpY2spPVwiY3VycmVudFBhZ2UgPSAnRk9SR09UX1BBU1NXT1JEJ1wiPkZvcmdvdCBQYXNzd29yZD88L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZvcmdvdC1wYXNzd29yZCBjdXJzb3ItcG9pbnRlclwiIFtzdHlsZS5jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCJcclxuICAgICAgICAqbmdJZj1cImN1cnJlbnRQYWdlID09ICdPVFBfVkVSSUZZJyB8fCBvdHBTZW50XCIgKGNsaWNrKT1cImlzU2lnblVwID8gc2VuZE90cCgpIDogc2VuZE90cEZvckxvZ2luKCk7cmVzZW5kID0gdHJ1ZVwiPlJlc2VuZCBPVFA/PC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJidG4tY29udGFpbmVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJsb2dpbi1idG4gY3Vyc29yLXBvaW50ZXJcIiBbc3R5bGUuYmFja2dyb3VuZF09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCIgKm5nSWY9XCJjdXJyZW50UGFnZSAhPSAnT1RQJyAmJiAoY3VycmVudFBhZ2UgIT09ICdGT1JHT1RfUEFTU1dPUkQnIHx8IHNob3dGb3Jnb3RGaWVsZHMpXCJcclxuICAgICAgICAoY2xpY2spPVwiYnV0dG9uQ2xpY2tlZEV2ZW50KClcIiBbZGlzYWJsZWRdPVwiYnV0dG9uTG9hZGVyXCIgW2NsYXNzLmJ0bi1zaXplXT1cImN1cnJlbnRQYWdlID09ICdGT1JHT1RfUEFTU1dPUkQnIHx8IGN1cnJlbnRQYWdlID09ICdTSUdOX1VQJyB8fCBjdXJyZW50UGFnZSA9PSAnT1RQX1ZFUklGWSdcIj5cclxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiYnV0dG9uTG9hZGVyXCIgPjxpIGNsYXNzPVwiZmFzIGZhLWNpcmNsZS1ub3RjaCBmYS1zcGluXCI+PC9pPiZuYnNwO0xvYWRpbmc8L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFidXR0b25Mb2FkZXJcIj57eyBjdXJyZW50UGFnZSA9PVxyXG4gICAgICAgICAgICAnTE9HSU4nID8gXCJMb2dpblwiIDogY3VycmVudFBhZ2UgPT0gJ0ZPUkdPVF9QQVNTV09SRCcgID8gXCJSZXNldCBQYXNzd29yZFwiIDpcclxuICAgICAgICAgICAgY3VycmVudFBhZ2UgPT0gJ09UUF9WRVJJRlknID8gJ1ZlcmlmeSBPVFAnIDogXCJDcmVhdGUgQWNjb3VudFwifX08L3NwYW4+PC9idXR0b24+XHJcblxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJsb2dpbi1idG4gY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwic2VuZE90cEZvckxvZ2luKClcIiBbZGlzYWJsZWRdPVwiYnV0dG9uTG9hZGVyXCIgW3N0eWxlLmJhY2tncm91bmRdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiICpuZ0lmPVwiKGN1cnJlbnRQYWdlID09ICdPVFAnIHx8IGN1cnJlbnRQYWdlID09ICdGT1JHT1RfUEFTU1dPUkQnKSAmJiAhb3RwU2VudCAmJiAhc2hvd0ZvcmdvdEZpZWxkc1wiPlxyXG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCJidXR0b25Mb2FkZXJcIiA+PGkgY2xhc3M9XCJmYXMgZmEtY2lyY2xlLW5vdGNoIGZhLXNwaW5cIj48L2k+Jm5ic3A7TG9hZGluZzwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWJ1dHRvbkxvYWRlclwiPlNlbmQgT3RwPC9zcGFuPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJsb2dpbi1idG4gY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwidmVyaWZ5T3RwKClcIiBbZGlzYWJsZWRdPVwiYnV0dG9uTG9hZGVyXCIgW3N0eWxlLmJhY2tncm91bmRdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiICpuZ0lmPVwiKGN1cnJlbnRQYWdlID09ICdPVFAnIHx8IGN1cnJlbnRQYWdlID09ICdGT1JHT1RfUEFTU1dPUkQnKSAmJiBvdHBTZW50ICYmICFzaG93Rm9yZ290RmllbGRzXCI+XHJcbiAgICAgICAgICA8c3BhbiAqbmdJZj1cImJ1dHRvbkxvYWRlclwiID48aSBjbGFzcz1cImZhcyBmYS1jaXJjbGUtbm90Y2ggZmEtc3BpblwiPjwvaT4mbmJzcDtMb2FkaW5nPC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gKm5nSWY9XCIhYnV0dG9uTG9hZGVyXCIgPnt7Y3VycmVudFBhZ2UgPT0gJ09UUCcgPyBcIkxvZ2luXCIgOiBcIlByb2NlZWQgdG8gQ2hhbmdlIFBhc3N3b3JkXCJ9fTwvc3Bhbj5cclxuICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYW5vdGhlci1wYWdlXCIgKm5nSWY9XCJjdXJyZW50UGFnZSA9PSAnTE9HSU4nIHx8IGN1cnJlbnRQYWdlID09ICdPVFAnXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNpZ251cC10ZXh0XCI+RG9u4oCZdCBoYXZlIGFuIGFjY291bnQ/IDxzcGFuIGNsYXNzPVwic3Bhbi10ZXh0IGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIiAoY2xpY2spPVwiY3VycmVudFBhZ2UgPSAnU0lHTl9VUCc7bG9naW5FbWFpbCA9ICcnO2ludmVzdG9yLnBhc3N3b3JkID0gJyc7aW52ZXN0b3IucGhvbmVOdW1iZXIgPSAnJztvdHBTZW50ID0gZmFsc2VcIj5TaWduXHJcbiAgICAgICAgICAgIFVwPC9zcGFuPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzaWdudXAtdGV4dCBtLTVcIj5vcjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzaWdudXAtdGV4dFwiPkxvZ2luIHdpdGggPHNwYW4gY2xhc3M9XCJzcGFuLXRleHQgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiZGF0YT8uc3R5bGVzPy5iYWNrZ3JvdW5kPy5hY2NlbnRDb2xvclwiICpuZ0lmPVwiY3VycmVudFBhZ2UgPT0gJ0xPR0lOJyBcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiY3VycmVudFBhZ2UgPSAnT1RQJ1wiPk9UUDwvc3Bhbj48c3BhbiBjbGFzcz1cInNwYW4tdGV4dCBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJkYXRhPy5zdHlsZXM/LmJhY2tncm91bmQ/LmFjY2VudENvbG9yXCIgKm5nSWY9XCJjdXJyZW50UGFnZSA9PSAnT1RQJ1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJjdXJyZW50UGFnZSA9ICdMT0dJTic7bG9naW5FbWFpbCA9ICcnO290cFNlbnQgPSBmYWxzZVwiPlBhc3N3b3JkPC9zcGFuPjwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImFub3RoZXItcGFnZVwiICpuZ0lmPVwiY3VycmVudFBhZ2UgPT0gJ1NJR05fVVAnIHx8IGN1cnJlbnRQYWdlID09ICdGT1JHT1RfUEFTU1dPUkQnXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNpZ251cC10ZXh0XCI+QWxyZWFkeSBoYXZlIGFuIGFjY291bnQ/IDxzcGFuIGNsYXNzPVwic3Bhbi10ZXh0IGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImRhdGE/LnN0eWxlcz8uYmFja2dyb3VuZD8uYWNjZW50Q29sb3JcIiAoY2xpY2spPVwiY3VycmVudFBhZ2UgPSAnTE9HSU4nO2xvZ2luRW1haWwgPSAnJztpbnZlc3Rvci5wYXNzd29yZCA9ICcnO2ludmVzdG9yLnBob25lTnVtYmVyID0gJyc7b3RwU2VudCA9IGZhbHNlO3Nob3dGb3Jnb3RGaWVsZHMgPSBmYWxzZVwiPlNpZ25cclxuICAgICAgICAgICAgSW48L3NwYW4+PC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBlZGl0fVwiICpuZ0lmPVwic2hvd0VkaXRvcnNcIj5cclxuICAgIDxzaW1wby1ob3Zlci1lbGVtZW50cyBbZGF0YV09XCJkYXRhXCIgW2luZGV4XT1cImluZGV4XCIgW2VkaXRPcHRpb25zXT1cImVkaXRcIj48L3NpbXBvLWhvdmVyLWVsZW1lbnRzPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nSWY9XCJzaG93RGVsZXRlXCIgW25nQ2xhc3NdPVwieydob3Zlcl9lZmZlY3QnOiBkZWxldGV9XCI+XHJcbiAgICA8c2ltcG8tZGVsZXRlLWhvdmVyLWVsZW1lbnQgW2RhdGFdPVwiZGF0YVwiIFtpbmRleF09XCJpbmRleFwiPjwvc2ltcG8tZGVsZXRlLWhvdmVyLWVsZW1lbnQ+XHJcbiAgPC9kaXY+XHJcbjwvc2VjdGlvbj5cclxuIl19
|
@@ -0,0 +1,2 @@
|
|
1
|
+
export {};
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbnVwLXNpZ25pbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvc2VjdGlvbnMvc2lnbnVwLXNpZ25pbi9zaWdudXAtc2lnbmluLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDYXJkU3R5bGVzLCBTdHlsZXNNb2RlbCB9IGZyb20gXCIuLy4uLy4uL3N0eWxlcy9zdHlsZS5tb2RlbFwiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTaWduVXBTaWduSW5Nb2RlbHtcclxuICAgIGlkOiBzdHJpbmcsXHJcbiAgICBzZWN0aW9uVHlwZTogc3RyaW5nLFxyXG4gICAgc2VjdGlvbk5hbWU6IHN0cmluZyxcclxuICAgIGNvbnRlbnQgOiB7fSxcclxuICAgIHN0eWxlczogU2lnbkluU2lnblVwU3R5bGVzTW9kZWw7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2lnbkluU2lnblVwU3R5bGVzTW9kZWwgZXh0ZW5kcyBTdHlsZXNNb2RlbCxDYXJkU3R5bGVze1xyXG5cclxufSJdfQ==
|