ngx-dial-input 2.0.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/README.md +9 -12
  2. package/data/countries.d.ts +2 -0
  3. package/data/countries.model.d.ts +9 -0
  4. package/esm2020/data/countries.mjs +1218 -0
  5. package/esm2020/data/countries.model.mjs +2 -0
  6. package/esm2020/lib/phone-input.component.mjs +292 -0
  7. package/esm2020/lib/phone-input.module.mjs +24 -0
  8. package/esm2020/ngx-dial-input.mjs +5 -0
  9. package/esm2020/public-api.mjs +6 -0
  10. package/fesm2015/ngx-dial-input.mjs +1542 -0
  11. package/fesm2015/ngx-dial-input.mjs.map +1 -0
  12. package/fesm2020/ngx-dial-input.mjs +1541 -0
  13. package/fesm2020/ngx-dial-input.mjs.map +1 -0
  14. package/index.d.ts +5 -0
  15. package/lib/phone-input.component.d.ts +37 -0
  16. package/lib/phone-input.module.d.ts +9 -0
  17. package/ngx-dial-input-2.0.1.tgz +0 -0
  18. package/package.json +32 -49
  19. package/{projects/phone-input/src/public-api.ts → public-api.d.ts} +0 -3
  20. package/.editorconfig +0 -16
  21. package/.vscode/extensions.json +0 -4
  22. package/.vscode/launch.json +0 -20
  23. package/.vscode/tasks.json +0 -42
  24. package/angular.json +0 -41
  25. package/country-phone-input-0.0.0.tgz +0 -0
  26. package/projects/phone-input/README.md +0 -24
  27. package/projects/phone-input/ng-package.json +0 -7
  28. package/projects/phone-input/package.json +0 -12
  29. package/projects/phone-input/src/data/countries.model.ts +0 -9
  30. package/projects/phone-input/src/data/countries.ts +0 -1219
  31. package/projects/phone-input/src/lib/phone-input.component.css +0 -0
  32. package/projects/phone-input/src/lib/phone-input.component.html +0 -0
  33. package/projects/phone-input/src/lib/phone-input.component.ts +0 -338
  34. package/projects/phone-input/src/lib/phone-input.module.ts +0 -15
  35. package/projects/phone-input/src/lib/phone-input.service.spec.ts +0 -16
  36. package/projects/phone-input/tsconfig.lib.json +0 -15
  37. package/projects/phone-input/tsconfig.lib.prod.json +0 -10
  38. package/projects/phone-input/tsconfig.spec.json +0 -14
  39. package/tsconfig.json +0 -33
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291bnRyaWVzLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcGhvbmUtaW5wdXQvc3JjL2RhdGEvY291bnRyaWVzLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIENvdW50cmllc1Bob25lSW5wdXREYXRhIHtcclxuICBuYW1lIDogc3RyaW5nO1xyXG4gIG5hdGl2ZSA6IHN0cmluZztcclxuICBpc28yIDogc3RyaW5nO1xyXG4gIGRpYWxDb2RlIDogc3RyaW5nO1xyXG4gIGZsYWcgOiBzdHJpbmc7XHJcbiAgZm9ybWF0IDogc3RyaW5nO1xyXG4gIHBob25lTGVuZ3RoOiBudW1iZXI7XHJcbn1cclxuIl19
@@ -0,0 +1,292 @@
1
+ import { Component, Input, Output, EventEmitter, HostListener, forwardRef } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { countries } from '../data/countries';
4
+ import { trigger, state, style, transition, animate } from '@angular/animations';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/common";
7
+ import * as i2 from "@angular/forms";
8
+ export class PhoneInputComponent {
9
+ constructor(eRef) {
10
+ this.eRef = eRef;
11
+ this.countriesList = countries;
12
+ this.searchTerm = '';
13
+ this.defaultCountry = '';
14
+ this.placeholder = '';
15
+ this.searchEnabled = true;
16
+ this.numberFormat = 'international';
17
+ this.setFirstCountry = '';
18
+ this.phoneChange = new EventEmitter();
19
+ this.phoneNumber = '';
20
+ this.isInvalid = false;
21
+ this.dropdownOpen = false;
22
+ this.animating = false;
23
+ this.selectedCountry = countries[0];
24
+ this.onChange = () => { };
25
+ this.onTouched = () => { };
26
+ }
27
+ ngOnInit() {
28
+ if (this.defaultCountry) {
29
+ const match = countries.find(c => c.iso2 === this.defaultCountry.toLowerCase());
30
+ if (match)
31
+ this.selectedCountry = match;
32
+ }
33
+ }
34
+ handleClickOutside(event) {
35
+ if (!this.eRef.nativeElement.contains(event.target)) {
36
+ this.dropdownOpen = false;
37
+ }
38
+ }
39
+ onAnimationDone(event) {
40
+ if (!this.dropdownOpen) {
41
+ this.animating = false;
42
+ }
43
+ }
44
+ toggleDropdown() {
45
+ this.dropdownOpen = !this.dropdownOpen;
46
+ this.animating = true;
47
+ }
48
+ onClickOutside(event) {
49
+ if (!this.eRef.nativeElement.contains(event.target)) {
50
+ this.dropdownOpen = false;
51
+ }
52
+ }
53
+ onSearchChange() {
54
+ const term = this.searchTerm.toLowerCase();
55
+ this.countriesList = countries.filter(c => c.name.toLowerCase().includes(term));
56
+ }
57
+ selectCountry(country) {
58
+ this.selectedCountry = country;
59
+ this.searchTerm = '';
60
+ this.countriesList = countries;
61
+ this.dropdownOpen = false;
62
+ this.emitPhoneChange();
63
+ }
64
+ onPhoneInput() {
65
+ this.emitPhoneChange();
66
+ }
67
+ emitPhoneChange() {
68
+ const digitsOnly = this.phoneNumber.replace(/\D/g, '');
69
+ const length = digitsOnly.length;
70
+ const expectedLength = this.selectedCountry?.phoneLength;
71
+ if (expectedLength) {
72
+ this.isInvalid = length !== expectedLength;
73
+ }
74
+ else {
75
+ // fallback validation
76
+ this.isInvalid = length < 7 || length > 12;
77
+ }
78
+ const fullPhone = this.selectedCountry.dialCode + this.phoneNumber;
79
+ const structuredValue = {
80
+ e164Number: fullPhone,
81
+ nationalNumber: this.phoneNumber,
82
+ dialCode: this.selectedCountry.dialCode,
83
+ countryCode: this.selectedCountry.iso2,
84
+ isValid: !this.isInvalid,
85
+ };
86
+ this.onChange(structuredValue);
87
+ this.phoneChange.emit(structuredValue);
88
+ }
89
+ writeValue(value) {
90
+ if (value && value.dialCode && value.countryCode) {
91
+ const match = countries.find(c => c.dialCode === value.dialCode && c.iso2 === value.countryCode);
92
+ if (match) {
93
+ this.selectedCountry = match;
94
+ }
95
+ else {
96
+ this.selectedCountry = countries[0];
97
+ }
98
+ this.phoneNumber = value.nationalNumber || '';
99
+ }
100
+ else {
101
+ this.selectedCountry = countries[0];
102
+ this.phoneNumber = '';
103
+ }
104
+ }
105
+ registerOnChange(fn) {
106
+ this.onChange = fn;
107
+ }
108
+ registerOnTouched(fn) {
109
+ this.onTouched = fn;
110
+ }
111
+ allowOnlyNumbers(event) {
112
+ const charCode = event.charCode;
113
+ // Allow only digits (0–9)
114
+ if (charCode < 48 || charCode > 57) {
115
+ event.preventDefault();
116
+ }
117
+ }
118
+ }
119
+ PhoneInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PhoneInputComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
120
+ PhoneInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: PhoneInputComponent, selector: "phone-input", inputs: { defaultCountry: "defaultCountry", placeholder: "placeholder", searchEnabled: "searchEnabled", numberFormat: "numberFormat", setFirstCountry: "setFirstCountry" }, outputs: { phoneChange: "phoneChange" }, host: { listeners: { "document:click": "handleClickOutside($event)" } }, providers: [{
121
+ provide: NG_VALUE_ACCESSOR,
122
+ useExisting: forwardRef(() => PhoneInputComponent),
123
+ multi: true
124
+ }], ngImport: i0, template: `<div class="phone-input-wrapper">
125
+ <div class="input-container">
126
+ <!-- Country Selector (20%) -->
127
+ <div class="country-select" (click)="toggleDropdown()" (blur)="toggleDropdown()">
128
+ <img [src]="selectedCountry.flag" width="20" />
129
+ <span>{{selectedCountry.dialCode}}</span>
130
+ <span class="arrow-down">▾</span>
131
+ </div>
132
+
133
+ <!-- Phone Input (80%) -->
134
+ <input
135
+ type="tel"
136
+ pattern="[0-9]*"
137
+ inputmode="numeric"
138
+ class="phone-input"
139
+ [placeholder]="placeholder"
140
+ [(ngModel)]="phoneNumber"
141
+ [ngClass]="{ 'error-border': isInvalid }"
142
+ (input)="onPhoneInput()"
143
+ (keypress)="allowOnlyNumbers($event)"
144
+ />
145
+ </div>
146
+
147
+ <!-- Dropdown Content (full width below) -->
148
+ <div
149
+ class="dropdown-content"
150
+ [@dropdownAnimation]="dropdownOpen ? 'open' : 'closed'"
151
+ *ngIf="dropdownOpen || animating"
152
+ (@dropdownAnimation.done)="onAnimationDone($event)" >
153
+ <input
154
+ *ngIf="searchEnabled"
155
+ type="text"
156
+ class="search-box"
157
+ placeholder="Search Country"
158
+ [(ngModel)]="searchTerm"
159
+ (input)="onSearchChange()"
160
+ />
161
+ <div class="country-list">
162
+ <div
163
+ class="country-option"
164
+ *ngFor="let country of countriesList"
165
+ (click)="selectCountry(country)"
166
+ >
167
+ <img [src]="country.flag" width="20" />
168
+ <span class="country-name">{{ country.name }} ({{ country.native }})</span>
169
+ <span class="dial-code">{{ country.dialCode }}</span>
170
+ </div>
171
+ </div>
172
+ </div>
173
+ </div>
174
+
175
+ `, isInline: true, styles: [".phone-input-wrapper{position:relative;font-family:Arial,sans-serif}.input-container{display:flex;width:100%;padding-bottom:3px}.country-select{width:24%;display:flex;align-items:center;justify-content:space-between;border:1px solid #ccc;border-right:none;border-radius:4px 0 0 4px;padding:8px;cursor:pointer;background-color:#f8f8f8}.country-select img{margin-right:5px}.arrow-down{font-size:13px;color:#666}.arrow-down:after{display:none}.phone-input{width:80%;padding:8px 12px;border:1px solid #ccc;border-radius:0 4px 4px 0;outline:none}.dropdown-content{position:absolute;top:100%;left:0;width:100%;background:white;border:1px solid #ccc;border-radius:0 0 4px 4px;box-shadow:0 2px 4px #0000001a;z-index:1000;margin-top:-1px}.search-box{width:100%;padding:8px 12px;border:none;border-bottom:1px solid #eee;outline:none}.country-list{max-height:200px;overflow-y:auto}.country-option{display:flex;align-items:center;padding:8px 12px;cursor:pointer}.country-option:hover{background-color:#f5f5f5}.country-option img{margin-right:5px}.country-name{flex-grow:1}.dial-code{color:#666;font-size:.9em}input.error-border{border-color:red}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], animations: [
176
+ trigger('dropdownAnimation', [
177
+ state('open', style({
178
+ opacity: 1,
179
+ transform: 'scaleY(1)',
180
+ height: '*',
181
+ padding: '*'
182
+ })),
183
+ state('closed', style({
184
+ opacity: 0,
185
+ transform: 'scaleY(0)',
186
+ height: '0px',
187
+ padding: '0px'
188
+ })),
189
+ transition('closed => open', [
190
+ animate('200ms ease-out')
191
+ ]),
192
+ transition('open => closed', [
193
+ animate('150ms ease-in')
194
+ ])
195
+ ])
196
+ ] });
197
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PhoneInputComponent, decorators: [{
198
+ type: Component,
199
+ args: [{ selector: 'phone-input', animations: [
200
+ trigger('dropdownAnimation', [
201
+ state('open', style({
202
+ opacity: 1,
203
+ transform: 'scaleY(1)',
204
+ height: '*',
205
+ padding: '*'
206
+ })),
207
+ state('closed', style({
208
+ opacity: 0,
209
+ transform: 'scaleY(0)',
210
+ height: '0px',
211
+ padding: '0px'
212
+ })),
213
+ transition('closed => open', [
214
+ animate('200ms ease-out')
215
+ ]),
216
+ transition('open => closed', [
217
+ animate('150ms ease-in')
218
+ ])
219
+ ])
220
+ ], template: `<div class="phone-input-wrapper">
221
+ <div class="input-container">
222
+ <!-- Country Selector (20%) -->
223
+ <div class="country-select" (click)="toggleDropdown()" (blur)="toggleDropdown()">
224
+ <img [src]="selectedCountry.flag" width="20" />
225
+ <span>{{selectedCountry.dialCode}}</span>
226
+ <span class="arrow-down">▾</span>
227
+ </div>
228
+
229
+ <!-- Phone Input (80%) -->
230
+ <input
231
+ type="tel"
232
+ pattern="[0-9]*"
233
+ inputmode="numeric"
234
+ class="phone-input"
235
+ [placeholder]="placeholder"
236
+ [(ngModel)]="phoneNumber"
237
+ [ngClass]="{ 'error-border': isInvalid }"
238
+ (input)="onPhoneInput()"
239
+ (keypress)="allowOnlyNumbers($event)"
240
+ />
241
+ </div>
242
+
243
+ <!-- Dropdown Content (full width below) -->
244
+ <div
245
+ class="dropdown-content"
246
+ [@dropdownAnimation]="dropdownOpen ? 'open' : 'closed'"
247
+ *ngIf="dropdownOpen || animating"
248
+ (@dropdownAnimation.done)="onAnimationDone($event)" >
249
+ <input
250
+ *ngIf="searchEnabled"
251
+ type="text"
252
+ class="search-box"
253
+ placeholder="Search Country"
254
+ [(ngModel)]="searchTerm"
255
+ (input)="onSearchChange()"
256
+ />
257
+ <div class="country-list">
258
+ <div
259
+ class="country-option"
260
+ *ngFor="let country of countriesList"
261
+ (click)="selectCountry(country)"
262
+ >
263
+ <img [src]="country.flag" width="20" />
264
+ <span class="country-name">{{ country.name }} ({{ country.native }})</span>
265
+ <span class="dial-code">{{ country.dialCode }}</span>
266
+ </div>
267
+ </div>
268
+ </div>
269
+ </div>
270
+
271
+ `, providers: [{
272
+ provide: NG_VALUE_ACCESSOR,
273
+ useExisting: forwardRef(() => PhoneInputComponent),
274
+ multi: true
275
+ }], styles: [".phone-input-wrapper{position:relative;font-family:Arial,sans-serif}.input-container{display:flex;width:100%;padding-bottom:3px}.country-select{width:24%;display:flex;align-items:center;justify-content:space-between;border:1px solid #ccc;border-right:none;border-radius:4px 0 0 4px;padding:8px;cursor:pointer;background-color:#f8f8f8}.country-select img{margin-right:5px}.arrow-down{font-size:13px;color:#666}.arrow-down:after{display:none}.phone-input{width:80%;padding:8px 12px;border:1px solid #ccc;border-radius:0 4px 4px 0;outline:none}.dropdown-content{position:absolute;top:100%;left:0;width:100%;background:white;border:1px solid #ccc;border-radius:0 0 4px 4px;box-shadow:0 2px 4px #0000001a;z-index:1000;margin-top:-1px}.search-box{width:100%;padding:8px 12px;border:none;border-bottom:1px solid #eee;outline:none}.country-list{max-height:200px;overflow-y:auto}.country-option{display:flex;align-items:center;padding:8px 12px;cursor:pointer}.country-option:hover{background-color:#f5f5f5}.country-option img{margin-right:5px}.country-name{flex-grow:1}.dial-code{color:#666;font-size:.9em}input.error-border{border-color:red}\n"] }]
276
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { defaultCountry: [{
277
+ type: Input
278
+ }], placeholder: [{
279
+ type: Input
280
+ }], searchEnabled: [{
281
+ type: Input
282
+ }], numberFormat: [{
283
+ type: Input
284
+ }], setFirstCountry: [{
285
+ type: Input
286
+ }], phoneChange: [{
287
+ type: Output
288
+ }], handleClickOutside: [{
289
+ type: HostListener,
290
+ args: ['document:click', ['$event']]
291
+ }] } });
292
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcGhvbmUtaW5wdXQvc3JjL2xpYi9waG9uZS1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFFWixZQUFZLEVBQ1osVUFBVSxFQUNYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBd0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxFQUNMLE9BQU8sRUFDUCxLQUFLLEVBQ0wsS0FBSyxFQUNMLFVBQVUsRUFDVixPQUFPLEVBQ1IsTUFBTSxxQkFBcUIsQ0FBQzs7OztBQTZMN0IsTUFBTSxPQUFPLG1CQUFtQjtJQWlCOUIsWUFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQWhCcEMsa0JBQWEsR0FBRyxTQUFTLENBQUM7UUFDMUIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNQLG1CQUFjLEdBQVcsRUFBRSxDQUFDO1FBQzVCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLGtCQUFhLEdBQVksSUFBSSxDQUFDO1FBQzlCLGlCQUFZLEdBQWlDLGVBQWUsQ0FBQztRQUM3RCxvQkFBZSxHQUFXLEVBQUUsQ0FBQztRQUM1QixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFFL0MsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDMUIsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5QixjQUFTLEdBQVksS0FBSyxDQUFDO1FBRTNCLG9CQUFlLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBSXZCLGFBQVEsR0FBUSxHQUFHLEVBQUUs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QUssQ0FBQztnQ0FDbEIsT0FBTyxFQUFFLENBQUM7Z0NBQ1YsU0FBUyxFQUFFLFdBQVc7Z0NBQ3RCLE1BQU0sRUFBRSxHQUFHO2dDQUNYLE9BQU8sRUFBRSxHQUFHOzZCQUNiLENBQUMsQ0FBQzs0QkFDSCxLQUFLLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQztnQ0FDcEIsT0FBTyxFQUFFLENBQUM7Z0NBQ1YsU0FBUyxFQUFFLFdBQVc7Z0NBQ3RCLE1BQU0sRUFBRSxLQUFLO2dDQUNiLE9BQU8sRUFBRSxLQUFLOzZCQUNmLENBQUMsQ0FBQzs0QkFDSCxVQUFVLENBQUMsZ0JBQWdCLEVBQUU7Z0NBQzNCLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQzs2QkFDMUIsQ0FBQzs0QkFDRixVQUFVLENBQUMsZ0JBQWdCLEVBQUU7Z0NBQzNCLE9BQU8sQ0FBQyxlQUFlLENBQUM7NkJBQ3pCLENBQUM7eUJBQ0gsQ0FBQztxQkFDSCxZQUNTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtRFQsYUF3R1UsQ0FBQzs0QkFDVixPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxvQkFBb0IsQ0FBQzs0QkFDbEQsS0FBSyxFQUFFLElBQUk7eUJBQ1osQ0FBQztpR0FLTyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFzQlAsa0JBQWtCO3NCQURqQixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBFbGVtZW50UmVmLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBmb3J3YXJkUmVmXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SLCBDb250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgY291bnRyaWVzIH0gZnJvbSAnLi4vZGF0YS9jb3VudHJpZXMnO1xyXG5pbXBvcnQge1xyXG4gIHRyaWdnZXIsXHJcbiAgc3RhdGUsXHJcbiAgc3R5bGUsXHJcbiAgdHJhbnNpdGlvbixcclxuICBhbmltYXRlXHJcbn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcblxyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncGhvbmUtaW5wdXQnLFxyXG4gIGFuaW1hdGlvbnM6IFtcclxuICAgIHRyaWdnZXIoJ2Ryb3Bkb3duQW5pbWF0aW9uJywgW1xyXG4gICAgICBzdGF0ZSgnb3BlbicsIHN0eWxlKHtcclxuICAgICAgICBvcGFjaXR5OiAxLFxyXG4gICAgICAgIHRyYW5zZm9ybTogJ3NjYWxlWSgxKScsXHJcbiAgICAgICAgaGVpZ2h0OiAnKicsXHJcbiAgICAgICAgcGFkZGluZzogJyonXHJcbiAgICAgIH0pKSxcclxuICAgICAgc3RhdGUoJ2Nsb3NlZCcsIHN0eWxlKHtcclxuICAgICAgICBvcGFjaXR5OiAwLFxyXG4gICAgICAgIHRyYW5zZm9ybTogJ3NjYWxlWSgwKScsXHJcbiAgICAgICAgaGVpZ2h0OiAnMHB4JyxcclxuICAgICAgICBwYWRkaW5nOiAnMHB4J1xyXG4gICAgICB9KSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ2Nsb3NlZCA9PiBvcGVuJywgW1xyXG4gICAgICAgIGFuaW1hdGUoJzIwMG1zIGVhc2Utb3V0JylcclxuICAgICAgXSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ29wZW4gPT4gY2xvc2VkJywgW1xyXG4gICAgICAgIGFuaW1hdGUoJzE1MG1zIGVhc2UtaW4nKVxyXG4gICAgICBdKVxyXG4gICAgXSlcclxuICBdLFxyXG4gIHRlbXBsYXRlOiBgPGRpdiBjbGFzcz1cInBob25lLWlucHV0LXdyYXBwZXJcIj5cclxuICA8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCI+XHJcbiAgICA8IS0tIENvdW50cnkgU2VsZWN0b3IgKDIwJSkgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY291bnRyeS1zZWxlY3RcIiAoY2xpY2spPVwidG9nZ2xlRHJvcGRvd24oKVwiIChibHVyKT1cInRvZ2dsZURyb3Bkb3duKClcIj5cclxuICAgICAgPGltZyBbc3JjXT1cInNlbGVjdGVkQ291bnRyeS5mbGFnXCIgd2lkdGg9XCIyMFwiIC8+XHJcbiAgICAgIDxzcGFuPnt7c2VsZWN0ZWRDb3VudHJ5LmRpYWxDb2RlfX08L3NwYW4+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiYXJyb3ctZG93blwiPuKWvjwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gUGhvbmUgSW5wdXQgKDgwJSkgLS0+XHJcbiAgICA8aW5wdXRcclxuICAgICAgdHlwZT1cInRlbFwiXHJcbiAgICAgIHBhdHRlcm49XCJbMC05XSpcIlxyXG4gICAgICBpbnB1dG1vZGU9XCJudW1lcmljXCJcclxuICAgICAgY2xhc3M9XCJwaG9uZS1pbnB1dFwiXHJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICAgIFsobmdNb2RlbCldPVwicGhvbmVOdW1iZXJcIlxyXG4gICAgICBbbmdDbGFzc109XCJ7ICdlcnJvci1ib3JkZXInOiBpc0ludmFsaWQgfVwiXHJcbiAgICAgIChpbnB1dCk9XCJvblBob25lSW5wdXQoKVwiXHJcbiAgICAgIChrZXlwcmVzcyk9XCJhbGxvd09ubHlOdW1iZXJzKCRldmVudClcIlxyXG4gICAgLz5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBEcm9wZG93biBDb250ZW50IChmdWxsIHdpZHRoIGJlbG93KSAtLT5cclxuICA8ZGl2XHJcbiAgY2xhc3M9XCJkcm9wZG93bi1jb250ZW50XCJcclxuICBbQGRyb3Bkb3duQW5pbWF0aW9uXT1cImRyb3Bkb3duT3BlbiA/ICdvcGVuJyA6ICdjbG9zZWQnXCJcclxuICAqbmdJZj1cImRyb3Bkb3duT3BlbiB8fCBhbmltYXRpbmdcIlxyXG4gIChAZHJvcGRvd25BbmltYXRpb24uZG9uZSk9XCJvbkFuaW1hdGlvbkRvbmUoJGV2ZW50KVwiID5cclxuICAgIDxpbnB1dFxyXG4gICAgICAqbmdJZj1cInNlYXJjaEVuYWJsZWRcIlxyXG4gICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgIGNsYXNzPVwic2VhcmNoLWJveFwiXHJcbiAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIENvdW50cnlcIlxyXG4gICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRlcm1cIlxyXG4gICAgICAoaW5wdXQpPVwib25TZWFyY2hDaGFuZ2UoKVwiXHJcbiAgICAvPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvdW50cnktbGlzdFwiPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJjb3VudHJ5LW9wdGlvblwiXHJcbiAgICAgICAgKm5nRm9yPVwibGV0IGNvdW50cnkgb2YgY291bnRyaWVzTGlzdFwiXHJcbiAgICAgICAgKGNsaWNrKT1cInNlbGVjdENvdW50cnkoY291bnRyeSlcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGltZyBbc3JjXT1cImNvdW50cnkuZmxhZ1wiIHdpZHRoPVwiMjBcIiAvPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY291bnRyeS1uYW1lXCI+e3sgY291bnRyeS5uYW1lIH19ICh7eyBjb3VudHJ5Lm5hdGl2ZSB9fSk8L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJkaWFsLWNvZGVcIj57eyBjb3VudHJ5LmRpYWxDb2RlIH19PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbiAgYCxcclxuICBzdHlsZXM6IFtgXHJcbiAgICAucGhvbmUtaW5wdXQtd3JhcHBlciB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1zZXJpZjtcclxufVxyXG5cclxuLmlucHV0LWNvbnRhaW5lciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICB3aWR0aDogMTAwJTtcclxuICBwYWRkaW5nLWJvdHRvbTogM3B4O1xyXG59XHJcblxyXG4vKiBDb3VudHJ5IFNlbGVjdCAoMjAlKSAqL1xyXG4uY291bnRyeS1zZWxlY3Qge1xyXG4gIHdpZHRoOiAyNCU7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xyXG4gIGJvcmRlci1yaWdodDogbm9uZTtcclxuICBib3JkZXItcmFkaXVzOiA0cHggMCAwIDRweDtcclxuICBwYWRkaW5nOiA4cHggOHB4O1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOGY4O1xyXG59XHJcblxyXG4uY291bnRyeS1zZWxlY3QgaW1nIHtcclxuICBtYXJnaW4tcmlnaHQ6IDVweDtcclxufVxyXG5cclxuLmFycm93LWRvd24ge1xyXG4gIGZvbnQtc2l6ZTogMTNweDtcclxuICBjb2xvcjogIzY2NjtcclxufVxyXG4uYXJyb3ctZG93bjphZnRlciB7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG59XHJcbi8qIFBob25lIElucHV0ICg4MCUpICovXHJcbi5waG9uZS1pbnB1dCB7XHJcbiAgd2lkdGg6IDgwJTtcclxuICBwYWRkaW5nOiA4cHggMTJweDtcclxuICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xyXG4gIGJvcmRlci1yYWRpdXM6IDAgNHB4IDRweCAwO1xyXG4gIG91dGxpbmU6IG5vbmU7XHJcbn1cclxuXHJcbi8qIERyb3Bkb3duIENvbnRlbnQgKi9cclxuLmRyb3Bkb3duLWNvbnRlbnQge1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB0b3A6IDEwMCU7XHJcbiAgbGVmdDogMDtcclxuICB3aWR0aDogMTAwJTtcclxuICBiYWNrZ3JvdW5kOiB3aGl0ZTtcclxuICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xyXG4gIGJvcmRlci1yYWRpdXM6IDAgMCA0cHggNHB4O1xyXG4gIGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2JhKDAsMCwwLDAuMSk7XHJcbiAgei1pbmRleDogMTAwMDtcclxuICBtYXJnaW4tdG9wOiAtMXB4O1xyXG59XHJcblxyXG4uc2VhcmNoLWJveCB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgcGFkZGluZzogOHB4IDEycHg7XHJcbiAgYm9yZGVyOiBub25lO1xyXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVlO1xyXG4gIG91dGxpbmU6IG5vbmU7XHJcbn1cclxuXHJcbi5jb3VudHJ5LWxpc3Qge1xyXG4gIG1heC1oZWlnaHQ6IDIwMHB4O1xyXG4gIG92ZXJmbG93LXk6IGF1dG87XHJcbn1cclxuXHJcbi5jb3VudHJ5LW9wdGlvbiB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIHBhZGRpbmc6IDhweCAxMnB4O1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuLmNvdW50cnktb3B0aW9uOmhvdmVyIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xyXG59XHJcblxyXG4uY291bnRyeS1vcHRpb24gaW1nIHtcclxuICBtYXJnaW4tcmlnaHQ6IDVweDtcclxufVxyXG5cclxuLmNvdW50cnktbmFtZSB7XHJcbiAgZmxleC1ncm93OiAxO1xyXG59XHJcblxyXG4uZGlhbC1jb2RlIHtcclxuICBjb2xvcjogIzY2NjtcclxuICBmb250LXNpemU6IDAuOWVtO1xyXG59XHJcblxyXG4vKiBFcnJvciBTdGF0ZSAqL1xyXG5pbnB1dC5lcnJvci1ib3JkZXIge1xyXG4gIGJvcmRlci1jb2xvcjogcmVkO1xyXG59XHJcblxyXG4gIGBdLFxyXG4gIHByb3ZpZGVyczogW3tcclxuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUGhvbmVJbnB1dENvbXBvbmVudCksXHJcbiAgICBtdWx0aTogdHJ1ZVxyXG4gIH1dXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQaG9uZUlucHV0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gIGNvdW50cmllc0xpc3QgPSBjb3VudHJpZXM7XHJcbiAgc2VhcmNoVGVybSA9ICcnO1xyXG4gIEBJbnB1dCgpIGRlZmF1bHRDb3VudHJ5OiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgc2VhcmNoRW5hYmxlZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgbnVtYmVyRm9ybWF0OiAnaW50ZXJuYXRpb25hbCcgfCAnbmF0aW9uYWwnID0gJ2ludGVybmF0aW9uYWwnO1xyXG4gIEBJbnB1dCgpIHNldEZpcnN0Q291bnRyeTogc3RyaW5nID0gJyc7XHJcbiAgQE91dHB1dCgpIHBob25lQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gICBwaG9uZU51bWJlcjogc3RyaW5nID0gJyc7XHJcbiAgaXNJbnZhbGlkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZHJvcGRvd25PcGVuOiBib29sZWFuID0gZmFsc2U7XHJcbiAgYW5pbWF0aW5nOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHNlbGVjdGVkQ291bnRyeSA9IGNvdW50cmllc1swXTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlUmVmOiBFbGVtZW50UmVmKSB7fVxyXG5cclxuICBwcml2YXRlIG9uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7fTtcclxuICBwcml2YXRlIG9uVG91Y2hlZDogYW55ID0gKCkgPT4ge307XHJcblxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICh0aGlzLmRlZmF1bHRDb3VudHJ5KSB7XHJcbiAgICAgIGNvbnN0IG1hdGNoID0gY291bnRyaWVzLmZpbmQoYyA9PiBjLmlzbzIgPT09IHRoaXMuZGVmYXVsdENvdW50cnkudG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgIGlmIChtYXRjaCkgdGhpcy5zZWxlY3RlZENvdW50cnkgPSBtYXRjaDtcclxuICAgIH1cclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Y2xpY2snLCBbJyRldmVudCddKVxyXG4gIGhhbmRsZUNsaWNrT3V0c2lkZShldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgaWYgKCF0aGlzLmVSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XHJcbiAgICAgIHRoaXMuZHJvcGRvd25PcGVuID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkFuaW1hdGlvbkRvbmUoZXZlbnQ6IGFueSkge1xyXG4gIGlmICghdGhpcy5kcm9wZG93bk9wZW4pIHtcclxuICAgIHRoaXMuYW5pbWF0aW5nID0gZmFsc2U7XHJcbiAgfVxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlRHJvcGRvd24oKSB7XHJcbiAgICB0aGlzLmRyb3Bkb3duT3BlbiA9ICF0aGlzLmRyb3Bkb3duT3BlbjtcclxuICAgIHRoaXMuYW5pbWF0aW5nID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9uQ2xpY2tPdXRzaWRlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICBpZiAoIXRoaXMuZVJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcclxuICAgICAgdGhpcy5kcm9wZG93bk9wZW4gPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU2VhcmNoQ2hhbmdlKCkge1xyXG4gICAgY29uc3QgdGVybSA9IHRoaXMuc2VhcmNoVGVybS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgdGhpcy5jb3VudHJpZXNMaXN0ID0gY291bnRyaWVzLmZpbHRlcihjID0+XHJcbiAgICAgIGMubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgc2VsZWN0Q291bnRyeShjb3VudHJ5OiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5ID0gY291bnRyeTtcclxuICAgIHRoaXMuc2VhcmNoVGVybSA9ICcnO1xyXG4gICAgdGhpcy5jb3VudHJpZXNMaXN0ID0gY291bnRyaWVzO1xyXG4gICAgdGhpcy5kcm9wZG93bk9wZW4gPSBmYWxzZTtcclxuICAgIHRoaXMuZW1pdFBob25lQ2hhbmdlKCk7XHJcbiAgfVxyXG5cclxuICBvblBob25lSW5wdXQoKSB7XHJcbiAgICB0aGlzLmVtaXRQaG9uZUNoYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbWl0UGhvbmVDaGFuZ2UoKSB7XHJcbiAgICBjb25zdCBkaWdpdHNPbmx5ID0gdGhpcy5waG9uZU51bWJlci5yZXBsYWNlKC9cXEQvZywgJycpO1xyXG4gICAgY29uc3QgbGVuZ3RoID0gZGlnaXRzT25seS5sZW5ndGg7XHJcblxyXG4gICAgY29uc3QgZXhwZWN0ZWRMZW5ndGggPSB0aGlzLnNlbGVjdGVkQ291bnRyeT8ucGhvbmVMZW5ndGg7XHJcblxyXG4gICAgaWYgKGV4cGVjdGVkTGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuaXNJbnZhbGlkID0gbGVuZ3RoICE9PSBleHBlY3RlZExlbmd0aDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIGZhbGxiYWNrIHZhbGlkYXRpb25cclxuICAgICAgdGhpcy5pc0ludmFsaWQgPSBsZW5ndGggPCA3IHx8IGxlbmd0aCA+IDEyO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZ1bGxQaG9uZSA9IHRoaXMuc2VsZWN0ZWRDb3VudHJ5LmRpYWxDb2RlICsgdGhpcy5waG9uZU51bWJlcjtcclxuXHJcbiAgICBjb25zdCBzdHJ1Y3R1cmVkVmFsdWUgPSB7XHJcbiAgICAgIGUxNjROdW1iZXI6IGZ1bGxQaG9uZSxcclxuICAgICAgbmF0aW9uYWxOdW1iZXI6IHRoaXMucGhvbmVOdW1iZXIsXHJcbiAgICAgIGRpYWxDb2RlOiB0aGlzLnNlbGVjdGVkQ291bnRyeS5kaWFsQ29kZSxcclxuICAgICAgY291bnRyeUNvZGU6IHRoaXMuc2VsZWN0ZWRDb3VudHJ5LmlzbzIsXHJcbiAgICAgIGlzVmFsaWQ6ICF0aGlzLmlzSW52YWxpZCxcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5vbkNoYW5nZShzdHJ1Y3R1cmVkVmFsdWUpO1xyXG4gICAgdGhpcy5waG9uZUNoYW5nZS5lbWl0KHN0cnVjdHVyZWRWYWx1ZSk7XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5kaWFsQ29kZSAmJiB2YWx1ZS5jb3VudHJ5Q29kZSkge1xyXG4gICAgICBjb25zdCBtYXRjaCA9IGNvdW50cmllcy5maW5kKGMgPT5cclxuICAgICAgICBjLmRpYWxDb2RlID09PSB2YWx1ZS5kaWFsQ29kZSAmJiBjLmlzbzIgPT09IHZhbHVlLmNvdW50cnlDb2RlXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChtYXRjaCkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5ID0gbWF0Y2g7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZENvdW50cnkgPSBjb3VudHJpZXNbMF07XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5waG9uZU51bWJlciA9IHZhbHVlLm5hdGlvbmFsTnVtYmVyIHx8ICcnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZENvdW50cnkgPSBjb3VudHJpZXNbMF07XHJcbiAgICAgIHRoaXMucGhvbmVOdW1iZXIgPSAnJztcclxuICAgIH1cclxuICB9XHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuICBhbGxvd09ubHlOdW1iZXJzKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgY29uc3QgY2hhckNvZGUgPSBldmVudC5jaGFyQ29kZTtcclxuXHJcbiAgLy8gQWxsb3cgb25seSBkaWdpdHMgKDDigJM5KVxyXG4gIGlmIChjaGFyQ29kZSA8IDQ4IHx8IGNoYXJDb2RlID4gNTcpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgfVxyXG59XHJcblxyXG59XHJcbiJdfQ==
@@ -0,0 +1,24 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { PhoneInputComponent } from './phone-input.component';
4
+ import { FormsModule } from '@angular/forms';
5
+ import * as i0 from "@angular/core";
6
+ export class PhoneInputModule {
7
+ }
8
+ PhoneInputModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PhoneInputModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9
+ PhoneInputModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: PhoneInputModule, declarations: [PhoneInputComponent], imports: [CommonModule,
10
+ FormsModule], exports: [PhoneInputComponent] });
11
+ PhoneInputModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PhoneInputModule, imports: [CommonModule,
12
+ FormsModule] });
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PhoneInputModule, decorators: [{
14
+ type: NgModule,
15
+ args: [{
16
+ declarations: [PhoneInputComponent],
17
+ imports: [
18
+ CommonModule,
19
+ FormsModule
20
+ ],
21
+ exports: [PhoneInputComponent]
22
+ }]
23
+ }] });
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtaW5wdXQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcGhvbmUtaW5wdXQvc3JjL2xpYi9waG9uZS1pbnB1dC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQVU3QyxNQUFNLE9BQU8sZ0JBQWdCOzs4R0FBaEIsZ0JBQWdCOytHQUFoQixnQkFBZ0IsaUJBUFosbUJBQW1CLGFBRWhDLFlBQVk7UUFDWixXQUFXLGFBRUgsbUJBQW1COytHQUVsQixnQkFBZ0IsWUFMekIsWUFBWTtRQUNaLFdBQVc7NEZBSUYsZ0JBQWdCO2tCQVI1QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLG1CQUFtQixDQUFDO29CQUNuQyxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixXQUFXO3FCQUNaO29CQUNELE9BQU8sRUFBRSxDQUFDLG1CQUFtQixDQUFDO2lCQUMvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFBob25lSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL3Bob25lLWlucHV0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtQaG9uZUlucHV0Q29tcG9uZW50XSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZVxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1Bob25lSW5wdXRDb21wb25lbnRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQaG9uZUlucHV0TW9kdWxlIHsgfVxyXG5cclxuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWRpYWwtaW5wdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9waG9uZS1pbnB1dC9zcmMvbmd4LWRpYWwtaW5wdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -0,0 +1,6 @@
1
+ /*
2
+ * Public API Surface of phone-input
3
+ */
4
+ export * from './lib/phone-input.component';
5
+ export * from './lib/phone-input.module';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3Bob25lLWlucHV0L3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDBCQUEwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIHBob25lLWlucHV0XHJcbiAqL1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9waG9uZS1pbnB1dC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9waG9uZS1pbnB1dC5tb2R1bGUnO1xyXG4iXX0=