UNPKG

ngx-mat-intl-tel-input

Version:

An Angular Material package for entering and validating international telephone numbers. It adds a flag dropdown to any input, detects the user's country, displays a relevant placeholder and provides formatting/validation methods.

980 lines (976 loc) 176 kB
import * as i0 from '@angular/core'; import { Injectable, Pipe, EventEmitter, Component, ChangeDetectionStrategy, Optional, Self, Input, ViewChild, HostBinding, Output } from '@angular/core'; import { MatFormFieldControl } from '@angular/material/form-field'; import * as i3 from '@angular/forms'; import { NG_VALIDATORS, FormsModule, ReactiveFormsModule } from '@angular/forms'; import { parsePhoneNumber, getExampleNumber, parsePhoneNumberFromString, AsYouType } from 'libphonenumber-js'; import * as i2 from '@angular/cdk/a11y'; import { coerceBooleanProperty } from '@angular/cdk/coercion'; import * as i5 from '@angular/common'; import { CommonModule } from '@angular/common'; import * as i8 from '@angular/material/button'; import { MatButtonModule } from '@angular/material/button'; import * as i4 from '@angular/material/core'; import { mixinErrorState, ErrorStateMatcher } from '@angular/material/core'; import * as i9 from '@angular/material/divider'; import { MatDividerModule } from '@angular/material/divider'; import * as i6 from '@angular/material/input'; import { MatInputModule } from '@angular/material/input'; import * as i7 from '@angular/material/menu'; import { MatMenu, MatMenuModule } from '@angular/material/menu'; import { Subject } from 'rxjs'; /* eslint-disable */ class CountryCode { constructor() { this.allCountries = [ ['Afghanistan (‫افغانستان‬‎)', 'af', '93'], ['Albania (Shqipëri)', 'al', '355'], ['Algeria (‫الجزائر‬‎)', 'dz', '213'], ['American Samoa', 'as', '1684'], ['Andorra', 'ad', '376'], ['Angola', 'ao', '244'], ['Anguilla', 'ai', '1264'], ['Antigua and Barbuda', 'ag', '1268'], ['Argentina', 'ar', '54'], ['Armenia (Հայաստան)', 'am', '374'], ['Aruba', 'aw', '297'], ['Australia', 'au', '61', 0], ['Austria (Österreich)', 'at', '43'], ['Azerbaijan (Azərbaycan)', 'az', '994'], ['Bahamas', 'bs', '1242'], ['Bahrain (‫البحرين‬‎)', 'bh', '973'], ['Bangladesh (বাংলাদেশ)', 'bd', '880'], ['Barbados', 'bb', '1246'], ['Belarus (Беларусь)', 'by', '375'], ['Belgium (België)', 'be', '32'], ['Belize', 'bz', '501'], ['Benin (Bénin)', 'bj', '229'], ['Bermuda', 'bm', '1441'], ['Bhutan (འབྲུག)', 'bt', '975'], ['Bolivia', 'bo', '591'], ['Bosnia and Herzegovina (Босна и Херцеговина)', 'ba', '387'], ['Botswana', 'bw', '267'], ['Brazil (Brasil)', 'br', '55'], ['British Indian Ocean Territory', 'io', '246'], ['British Virgin Islands', 'vg', '1284'], ['Brunei', 'bn', '673'], ['Bulgaria (България)', 'bg', '359'], ['Burkina Faso', 'bf', '226'], ['Burundi (Uburundi)', 'bi', '257'], ['Cambodia (កម្ពុជា)', 'kh', '855'], ['Cameroon (Cameroun)', 'cm', '237'], ['Canada', 'ca', '1', 1, ['204', '226', '236', '249', '250', '289', '306', '343', '365', '387', '403', '416', '418', '431', '437', '438', '450', '506', '514', '519', '548', '579', '581', '587', '604', '613', '639', '647', '672', '705', '709', '742', '778', '780', '782', '807', '819', '825', '867', '873', '902', '905']], ['Cape Verde (Kabu Verdi)', 'cv', '238'], ['Caribbean Netherlands', 'bq', '599', 1], ['Cayman Islands', 'ky', '1345'], ['Central African Republic (République centrafricaine)', 'cf', '236'], ['Chad (Tchad)', 'td', '235'], ['Chile', 'cl', '56'], ['China (中国)', 'cn', '86'], ['Christmas Island', 'cx', '61', 2], ['Cocos (Keeling) Islands', 'cc', '61', 1], ['Colombia', 'co', '57'], ['Comoros (‫جزر القمر‬‎)', 'km', '269'], ['Congo (DRC) (Jamhuri ya Kidemokrasia ya Kongo)', 'cd', '243'], ['Congo (Republic) (Congo-Brazzaville)', 'cg', '242'], ['Cook Islands', 'ck', '682'], ['Costa Rica', 'cr', '506'], ['Côte d’Ivoire', 'ci', '225'], ['Croatia (Hrvatska)', 'hr', '385'], ['Cuba', 'cu', '53'], ['Curaçao', 'cw', '599', 0], ['Cyprus (Κύπρος)', 'cy', '357'], ['Czech Republic (Česká republika)', 'cz', '420'], ['Denmark (Danmark)', 'dk', '45'], ['Djibouti', 'dj', '253'], ['Dominica', 'dm', '1767'], ['Dominican Republic (República Dominicana)', 'do', '1', 2, ['809', '829', '849']], ['Ecuador', 'ec', '593'], ['Egypt (‫مصر‬‎)', 'eg', '20'], ['El Salvador', 'sv', '503'], ['Equatorial Guinea (Guinea Ecuatorial)', 'gq', '240'], ['Eritrea', 'er', '291'], ['Estonia (Eesti)', 'ee', '372'], ['Ethiopia', 'et', '251'], ['Falkland Islands (Islas Malvinas)', 'fk', '500'], ['Faroe Islands (Føroyar)', 'fo', '298'], ['Fiji', 'fj', '679'], ['Finland (Suomi)', 'fi', '358', 0], ['France', 'fr', '33'], ['French Guiana (Guyane française)', 'gf', '594'], ['French Polynesia (Polynésie française)', 'pf', '689'], ['Gabon', 'ga', '241'], ['Gambia', 'gm', '220'], ['Georgia (საქართველო)', 'ge', '995'], ['Germany (Deutschland)', 'de', '49'], ['Ghana (Gaana)', 'gh', '233'], ['Gibraltar', 'gi', '350'], ['Greece (Ελλάδα)', 'gr', '30'], ['Greenland (Kalaallit Nunaat)', 'gl', '299'], ['Grenada', 'gd', '1473'], ['Guadeloupe', 'gp', '590', 0], ['Guam', 'gu', '1671'], ['Guatemala', 'gt', '502'], ['Guernsey', 'gg', '44', 1], ['Guinea (Guinée)', 'gn', '224'], ['Guinea-Bissau (Guiné Bissau)', 'gw', '245'], ['Guyana', 'gy', '592'], ['Haiti', 'ht', '509'], ['Honduras', 'hn', '504'], ['Hong Kong (香港)', 'hk', '852'], ['Hungary (Magyarország)', 'hu', '36'], ['Iceland (Ísland)', 'is', '354'], ['India (भारत)', 'in', '91'], ['Indonesia', 'id', '62'], ['Iran (‫ایران‬‎)', 'ir', '98'], ['Iraq (‫العراق‬‎)', 'iq', '964'], ['Ireland', 'ie', '353'], ['Isle of Man', 'im', '44', 2], ['Israel (‫ישראל‬‎)', 'il', '972'], ['Italy (Italia)', 'it', '39', 0], ['Jamaica', 'jm', '1', 4, ['876', '658']], ['Japan (日本)', 'jp', '81'], ['Jersey', 'je', '44', 3], ['Jordan (‫الأردن‬‎)', 'jo', '962'], ['Kazakhstan (Казахстан)', 'kz', '7', 1], ['Kenya', 'ke', '254'], ['Kiribati', 'ki', '686'], ['Kosovo', 'xk', '383'], ['Kuwait (‫الكويت‬‎)', 'kw', '965'], ['Kyrgyzstan (Кыргызстан)', 'kg', '996'], ['Laos (ລາວ)', 'la', '856'], ['Latvia (Latvija)', 'lv', '371'], ['Lebanon (‫لبنان‬‎)', 'lb', '961'], ['Lesotho', 'ls', '266'], ['Liberia', 'lr', '231'], ['Libya (‫ليبيا‬‎)', 'ly', '218'], ['Liechtenstein', 'li', '423'], ['Lithuania (Lietuva)', 'lt', '370'], ['Luxembourg', 'lu', '352'], ['Macau (澳門)', 'mo', '853'], ['Macedonia (FYROM) (Македонија)', 'mk', '389'], ['Madagascar (Madagasikara)', 'mg', '261'], ['Malawi', 'mw', '265'], ['Malaysia', 'my', '60'], ['Maldives', 'mv', '960'], ['Mali', 'ml', '223'], ['Malta', 'mt', '356'], ['Marshall Islands', 'mh', '692'], ['Martinique', 'mq', '596'], ['Mauritania (‫موريتانيا‬‎)', 'mr', '222'], ['Mauritius (Moris)', 'mu', '230'], ['Mayotte', 'yt', '262', 1], ['Mexico (México)', 'mx', '52'], ['Micronesia', 'fm', '691'], ['Moldova (Republica Moldova)', 'md', '373'], ['Monaco', 'mc', '377'], ['Mongolia (Монгол)', 'mn', '976'], ['Montenegro (Crna Gora)', 'me', '382'], ['Montserrat', 'ms', '1664'], ['Morocco (‫المغرب‬‎)', 'ma', '212', 0], ['Mozambique (Moçambique)', 'mz', '258'], ['Myanmar (Burma) (မြန်မာ)', 'mm', '95'], ['Namibia (Namibië)', 'na', '264'], ['Nauru', 'nr', '674'], ['Nepal (नेपाल)', 'np', '977'], ['Netherlands (Nederland)', 'nl', '31'], ['New Caledonia (Nouvelle-Calédonie)', 'nc', '687'], ['New Zealand', 'nz', '64'], ['Nicaragua', 'ni', '505'], ['Niger (Nijar)', 'ne', '227'], ['Nigeria', 'ng', '234'], ['Niue', 'nu', '683'], ['Norfolk Island', 'nf', '672'], ['North Korea (조선 민주주의 인민 공화국)', 'kp', '850'], ['Northern Mariana Islands', 'mp', '1670'], ['Norway (Norge)', 'no', '47', 0], ['Oman (‫عُمان‬‎)', 'om', '968'], ['Pakistan (‫پاکستان‬‎)', 'pk', '92'], ['Palau', 'pw', '680'], ['Palestine (‫فلسطين‬‎)', 'ps', '970'], ['Panama (Panamá)', 'pa', '507'], ['Papua New Guinea', 'pg', '675'], ['Paraguay', 'py', '595'], ['Peru (Perú)', 'pe', '51'], ['Philippines', 'ph', '63'], ['Poland (Polska)', 'pl', '48'], ['Portugal', 'pt', '351'], ['Puerto Rico', 'pr', '1', 3, ['787', '939']], ['Qatar (‫قطر‬‎)', 'qa', '974'], ['Réunion (La Réunion)', 're', '262', 0], ['Romania (România)', 'ro', '40'], ['Russia (Россия)', 'ru', '7', 0], ['Rwanda', 'rw', '250'], ['Saint Barthélemy', 'bl', '590', 1], ['Saint Helena', 'sh', '290'], ['Saint Kitts and Nevis', 'kn', '1869'], ['Saint Lucia', 'lc', '1758'], ['Saint Martin (Saint-Martin (partie française))', 'mf', '590', 2], ['Saint Pierre and Miquelon (Saint-Pierre-et-Miquelon)', 'pm', '508'], ['Saint Vincent and the Grenadines', 'vc', '1784'], ['Samoa', 'ws', '685'], ['San Marino', 'sm', '378'], ['São Tomé and Príncipe (São Tomé e Príncipe)', 'st', '239'], ['Saudi Arabia (‫المملكة العربية السعودية‬‎)', 'sa', '966'], ['Senegal (Sénégal)', 'sn', '221'], ['Serbia (Србија)', 'rs', '381'], ['Seychelles', 'sc', '248'], ['Sierra Leone', 'sl', '232'], ['Singapore', 'sg', '65'], ['Sint Maarten', 'sx', '1721'], ['Slovakia (Slovensko)', 'sk', '421'], ['Slovenia (Slovenija)', 'si', '386'], ['Solomon Islands', 'sb', '677'], ['Somalia (Soomaaliya)', 'so', '252'], ['South Africa', 'za', '27'], ['South Korea (대한민국)', 'kr', '82'], ['South Sudan (‫جنوب السودان‬‎)', 'ss', '211'], ['Spain (España)', 'es', '34'], ['Sri Lanka (ශ්‍රී ලංකාව)', 'lk', '94'], ['Sudan (‫السودان‬‎)', 'sd', '249'], ['Suriname', 'sr', '597'], ['Svalbard and Jan Mayen', 'sj', '47', 1], ['Swaziland', 'sz', '268'], ['Sweden (Sverige)', 'se', '46'], ['Switzerland (Schweiz)', 'ch', '41'], ['Syria (‫سوريا‬‎)', 'sy', '963'], ['Taiwan (台灣)', 'tw', '886'], ['Tajikistan', 'tj', '992'], ['Tanzania', 'tz', '255'], ['Thailand (ไทย)', 'th', '66'], ['Timor-Leste', 'tl', '670'], ['Togo', 'tg', '228'], ['Tokelau', 'tk', '690'], ['Tonga', 'to', '676'], ['Trinidad and Tobago', 'tt', '1868'], ['Tunisia (‫تونس‬‎)', 'tn', '216'], ['Turkey (Türkiye)', 'tr', '90'], ['Turkmenistan', 'tm', '993'], ['Turks and Caicos Islands', 'tc', '1649'], ['Tuvalu', 'tv', '688'], ['U.S. Virgin Islands', 'vi', '1340'], ['Uganda', 'ug', '256'], ['Ukraine (Україна)', 'ua', '380'], ['United Arab Emirates (‫الإمارات العربية المتحدة‬‎)', 'ae', '971'], ['United Kingdom', 'gb', '44', 0], ['United States', 'us', '1', 0], ['Uruguay', 'uy', '598'], ['Uzbekistan (Oʻzbekiston)', 'uz', '998'], ['Vanuatu', 'vu', '678'], ['Vatican City (Città del Vaticano)', 'va', '39', 1], ['Venezuela', 've', '58'], ['Vietnam (Việt Nam)', 'vn', '84'], ['Wallis and Futuna (Wallis-et-Futuna)', 'wf', '681'], ['Western Sahara (‫الصحراء الغربية‬‎)', 'eh', '212', 1], ['Yemen (‫اليمن‬‎)', 'ye', '967'], ['Zambia', 'zm', '260'], ['Zimbabwe', 'zw', '263'], ['Åland Islands', 'ax', '358', 1] ]; } } CountryCode.ɵfac = function CountryCode_Factory(t) { return new (t || CountryCode)(); }; CountryCode.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: CountryCode, factory: CountryCode.ɵfac }); (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CountryCode, [{ type: Injectable }], null, null); })(); const Examples = { '001': '001', AC: '40123', AD: '312345', AE: '501234567', AF: '701234567', AG: '2684641234', AI: '2642351234', AL: '662123456', AM: '77123456', AO: '923123456', AR: '91123456789', AS: '6847331234', AT: '664123456', AU: '412345678', AW: '5601234', AX: '412345678', AZ: '401234567', BA: '61123456', BB: '2462501234', BD: '1812345678', BE: '470123456', BF: '70123456', BG: '48123456', BH: '36001234', BI: '79561234', BJ: '90011234', BL: '690001234', BM: '4413701234', BN: '7123456', BO: '71234567', BQ: '3181234', BR: '11961234567', BS: '2423591234', BT: '17123456', BW: '71123456', BY: '294911911', BZ: '6221234', CA: '5062345678', CC: '412345678', CD: '991234567', CF: '70012345', CG: '061234567', CH: '781234567', CI: '01234567', CK: '71234', CL: '221234567', CM: '671234567', CN: '13123456789', CO: '3211234567', CR: '83123456', CU: '51234567', CV: '9911234', CW: '95181234', CX: '412345678', CY: '96123456', CZ: '601123456', DE: '15123456789', DJ: '77831001', DK: '32123456', DM: '7672251234', DO: '8092345678', DZ: '551234567', EC: '991234567', EE: '51234567', EG: '1001234567', EH: '650123456', ER: '7123456', ES: '612345678', ET: '911234567', FI: '412345678', FJ: '7012345', FK: '51234', FM: '3501234', FO: '211234', FR: '612345678', GA: '06031234', GB: '7400123456', GD: '4734031234', GE: '555123456', GF: '694201234', GG: '7781123456', GH: '231234567', GI: '57123456', GL: '221234', GM: '3012345', GN: '601123456', GP: '690001234', GQ: '222123456', GR: '6912345678', GT: '51234567', GU: '6713001234', GW: '955012345', GY: '6091234', HK: '51234567', HN: '91234567', HR: '921234567', HT: '34101234', HU: '201234567', ID: '812345678', IE: '850123456', IL: '502345678', IM: '7924123456', IN: '8123456789', IO: '3801234', IQ: '7912345678', IR: '9123456789', IS: '6111234', IT: '3123456789', JE: '7797712345', JM: '8762101234', JO: '790123456', JP: '9012345678', KE: '712123456', KG: '700123456', KH: '91234567', KI: '72001234', KM: '3212345', KN: '8697652917', KP: '1921234567', KR: '1000000000', KW: '50012345', KY: '3453231234', KZ: '7710009998', LA: '2023123456', LB: '71123456', LC: '7582845678', LI: '660234567', LK: '712345678', LR: '770123456', LS: '50123456', LT: '61234567', LU: '628123456', LV: '21234567', LY: '912345678', MA: '650123456', MC: '612345678', MD: '62112345', ME: '67622901', MF: '690001234', MG: '321234567', MH: '2351234', MK: '72345678', ML: '65012345', MM: '92123456', MN: '88123456', MO: '66123456', MP: '6702345678', MQ: '696201234', MR: '22123456', MS: '6644923456', MT: '96961234', MU: '52512345', MV: '7712345', MW: '991234567', MX: '12221234567', MY: '123456789', MZ: '821234567', NA: '811234567', NC: '751234', NE: '93123456', NF: '381234', NG: '8021234567', NI: '81234567', NL: '612345678', NO: '40612345', NP: '9841234567', NR: '5551234', NU: '8884012', NZ: '211234567', OM: '92123456', PA: '61234567', PE: '912345678', PF: '87123456', PG: '70123456', PH: '9051234567', PK: '3012345678', PL: '512345678', PM: '551234', PR: '7872345678', PS: '599123456', PT: '912345678', PW: '6201234', PY: '961456789', QA: '33123456', RE: '692123456', RO: '712034567', RS: '601234567', RU: '9123456789', RW: '720123456', SA: '512345678', SB: '7421234', SC: '2510123', SD: '911231234', SE: '701234567', SG: '81234567', SH: '51234', SI: '31234567', SJ: '41234567', SK: '912123456', SL: '25123456', SM: '66661212', SN: '701234567', SO: '71123456', SR: '7412345', SS: '977123456', ST: '9812345', SV: '70123456', SX: '7215205678', SY: '944567890', SZ: '76123456', TA: '8999', TC: '6492311234', TD: '63012345', TG: '90112345', TH: '812345678', TJ: '917123456', TK: '7290', TL: '77212345', TM: '66123456', TN: '20123456', TO: '7715123', TR: '5012345678', TT: '8682911234', TV: '901234', TW: '912345678', TZ: '621234567', UA: '501234567', UG: '712345678', US: '2015550123', UY: '94231234', UZ: '912345678', VA: '3123456789', VC: '7844301234', VE: '4121234567', VG: '2843001234', VI: '3406421234', VN: '912345678', VU: '5912345', WF: '501234', WS: '7212345', XK: '43201234', YE: '712345678', YT: '639012345', ZA: '711234567', ZM: '955123456', ZW: '712345678' }; const phoneNumberValidator = (control) => { const error = { validatePhoneNumber: true }; let numberInstance; if (control.value) { try { numberInstance = parsePhoneNumber(control.value); } catch (e) { control.setValue(null); return error; } if (numberInstance && !numberInstance.isValid()) { control.setValue(null); if (!control.touched) { control.markAsTouched(); } return error; } } return null; }; class SearchPipe { // country | search:'searchCriteria' transform(country, searchCriteria) { if (!searchCriteria || searchCriteria === '') { return true; } return `${country.name}+${country.dialCode}` .toLowerCase() .includes(searchCriteria.toLowerCase()); } } SearchPipe.ɵfac = function SearchPipe_Factory(t) { return new (t || SearchPipe)(); }; SearchPipe.ɵpipe = /*@__PURE__*/ i0.ɵɵdefinePipe({ name: "search", type: SearchPipe, pure: true, standalone: true }); (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SearchPipe, [{ type: Pipe, args: [{ name: 'search', standalone: true, }] }], null, null); })(); /* eslint-disable @typescript-eslint/member-ordering, no-underscore-dangle, id-blacklist, id-match, @typescript-eslint/naming-convention */ function NgxMatIntlTelInputComponent_span_3_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "span", 12); i0.ɵɵtext(1); i0.ɵɵelementEnd(); } if (rf & 2) { const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵadvance(1); i0.ɵɵtextInterpolate1("+", ctx_r0.selectedCountry.dialCode, ""); } } function NgxMatIntlTelInputComponent_input_6_Template(rf, ctx) { if (rf & 1) { const _r8 = i0.ɵɵgetCurrentView(); i0.ɵɵelementStart(0, "input", 13); i0.ɵɵlistener("ngModelChange", function NgxMatIntlTelInputComponent_input_6_Template_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r7 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r7.searchCriteria = $event); })("click", function NgxMatIntlTelInputComponent_input_6_Template_input_click_0_listener($event) { return $event.stopPropagation(); }); i0.ɵɵelementEnd(); } if (rf & 2) { const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵproperty("ngModel", ctx_r2.searchCriteria)("placeholder", ctx_r2.searchPlaceholder); } } function NgxMatIntlTelInputComponent_button_7_span_5_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "span"); i0.ɵɵtext(1); i0.ɵɵelementEnd(); } if (rf & 2) { const country_r10 = i0.ɵɵnextContext().$implicit; i0.ɵɵadvance(1); i0.ɵɵtextInterpolate1("+", country_r10.dialCode, ""); } } function NgxMatIntlTelInputComponent_button_7_Template(rf, ctx) { if (rf & 1) { const _r14 = i0.ɵɵgetCurrentView(); i0.ɵɵelementStart(0, "button", 14); i0.ɵɵlistener("click", function NgxMatIntlTelInputComponent_button_7_Template_button_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r14); const country_r10 = restoredCtx.$implicit; const ctx_r13 = i0.ɵɵnextContext(); const _r6 = i0.ɵɵreference(11); return i0.ɵɵresetView(ctx_r13.onCountrySelect(country_r10, _r6)); }); i0.ɵɵelementStart(1, "div", 15); i0.ɵɵelement(2, "div", 16); i0.ɵɵelementEnd(); i0.ɵɵelementStart(3, "div", 17); i0.ɵɵtext(4); i0.ɵɵtemplate(5, NgxMatIntlTelInputComponent_button_7_span_5_Template, 2, 1, "span", 8); i0.ɵɵelementEnd()(); } if (rf & 2) { const country_r10 = ctx.$implicit; i0.ɵɵadvance(2); i0.ɵɵproperty("ngClass", country_r10.flagClass); i0.ɵɵadvance(2); i0.ɵɵtextInterpolate1(" ", country_r10.name, " "); i0.ɵɵadvance(1); i0.ɵɵproperty("ngIf", country_r10 == null ? null : country_r10.dialCode); } } function NgxMatIntlTelInputComponent_mat_divider_8_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelement(0, "mat-divider"); } } function NgxMatIntlTelInputComponent_ng_container_9_button_1_Template(rf, ctx) { if (rf & 1) { const _r19 = i0.ɵɵgetCurrentView(); i0.ɵɵelementStart(0, "button", 14); i0.ɵɵlistener("click", function NgxMatIntlTelInputComponent_ng_container_9_button_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r19); const country_r15 = i0.ɵɵnextContext().$implicit; const ctx_r17 = i0.ɵɵnextContext(); const _r6 = i0.ɵɵreference(11); return i0.ɵɵresetView(ctx_r17.onCountrySelect(country_r15, _r6)); }); i0.ɵɵelementStart(1, "div", 15); i0.ɵɵelement(2, "div", 16); i0.ɵɵelementEnd(); i0.ɵɵelementStart(3, "div", 17); i0.ɵɵtext(4); i0.ɵɵelementEnd()(); } if (rf & 2) { const country_r15 = i0.ɵɵnextContext().$implicit; i0.ɵɵadvance(2); i0.ɵɵproperty("ngClass", country_r15.flagClass); i0.ɵɵadvance(2); i0.ɵɵtextInterpolate2(" ", country_r15.name, " +", country_r15.dialCode, " "); } } function NgxMatIntlTelInputComponent_ng_container_9_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementContainerStart(0); i0.ɵɵtemplate(1, NgxMatIntlTelInputComponent_ng_container_9_button_1_Template, 5, 3, "button", 18); i0.ɵɵpipe(2, "search"); i0.ɵɵelementContainerEnd(); } if (rf & 2) { const country_r15 = ctx.$implicit; const ctx_r5 = i0.ɵɵnextContext(); i0.ɵɵadvance(1); i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind2(2, 1, country_r15, ctx_r5.searchCriteria)); } } class NgxMatIntlTelInputBase { constructor(_defaultErrorStateMatcher, _parentForm, _parentFormGroup, /** @docs-private */ ngControl) { this._defaultErrorStateMatcher = _defaultErrorStateMatcher; this._parentForm = _parentForm; this._parentFormGroup = _parentFormGroup; this.ngControl = ngControl; this.stateChanges = new Subject(); } } const _NgxMatIntlTelInputMixinBase = mixinErrorState(NgxMatIntlTelInputBase); class NgxMatIntlTelInputComponent extends _NgxMatIntlTelInputMixinBase { constructor(_changeDetectorRef, countryCodeData, fm, elRef, ngControl, _parentForm, _parentFormGroup, _defaultErrorStateMatcher) { super(_defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl); this._changeDetectorRef = _changeDetectorRef; this.countryCodeData = countryCodeData; this.fm = fm; this.elRef = elRef; this.ngControl = ngControl; this.preferredCountries = []; this.enablePlaceholder = true; this.onlyCountries = []; this.errorStateMatcher = new ErrorStateMatcher(); this.enableSearch = false; this.describedBy = ''; this._required = false; this._disabled = false; this.stateChanges = new Subject(); this.focused = false; this.id = `ngx-mat-intl-tel-input-${NgxMatIntlTelInputComponent.nextId++}`; this.allCountries = []; this.preferredCountriesInDropDown = []; this.countryChanged = new EventEmitter(); this._format = 'default'; this.onTouched = () => { }; this.propagateChange = (_) => { }; fm.monitor(elRef, true).subscribe((origin) => { if (this.focused && !origin) { this.onTouched(); } this.focused = !!origin; this.stateChanges.next(undefined); }); this.fetchCountryData(); if (this.ngControl != null) { this.ngControl.valueAccessor = this; } } get format() { return this._format; } set format(value) { this._format = value; this.phoneNumber = this.formattedPhoneNumber; this.stateChanges.next(undefined); } static getPhoneNumberPlaceHolder(countryISOCode) { const result = getExampleNumber(countryISOCode, Examples); return !!result ? result.number.toString() : undefined; } ngOnInit() { if (!this.searchPlaceholder) { this.searchPlaceholder = 'Search ...'; } if (this.preferredCountries.length) { this.preferredCountries.forEach((iso2) => { const preferredCountry = this.allCountries .filter((c) => c.iso2 === iso2) .shift(); if (preferredCountry) { this.preferredCountriesInDropDown.push(preferredCountry); } }); } if (this.onlyCountries.length) { this.allCountries = this.allCountries.filter((c) => this.onlyCountries.includes(c.iso2)); } if (this.numberInstance && this.numberInstance.country) { // If an existing number is present, we use it to determine selectedCountry this.selectedCountry = this.getCountry(this.numberInstance.country); } else { if (this.preferredCountriesInDropDown.length) { this.selectedCountry = this.preferredCountriesInDropDown[0]; } else { this.selectedCountry = this.allCountries[0]; } } this.countryChanged.emit(this.selectedCountry); this._changeDetectorRef.markForCheck(); this.stateChanges.next(undefined); } ngDoCheck() { if (this.ngControl) { this.updateErrorState(); } } onPhoneNumberChange() { try { this.numberInstance = parsePhoneNumberFromString(this.phoneNumber?.toString() || '', this.selectedCountry?.iso2.toUpperCase()); this.formatAsYouTypeIfEnabled(); this.value = this.numberInstance?.number; if (this.numberInstance && this.numberInstance.isValid()) { if (this.phoneNumber !== this.formattedPhoneNumber) { this.phoneNumber = this.formattedPhoneNumber; } if (this.selectedCountry?.iso2 !== this.numberInstance.country && !!this.numberInstance.country) { this.selectedCountry = this.getCountry(this.numberInstance.country); this.countryChanged.emit(this.selectedCountry); } } } catch (e) { // if no possible numbers are there, // then the full number is passed so that validator could be triggered and proper error could be shown this.value = this.phoneNumber?.toString(); } this.propagateChange(this.value); this._changeDetectorRef.markForCheck(); } onCountrySelect(country, el) { if (this.phoneNumber) { this.phoneNumber = this.numberInstance?.nationalNumber; } this.selectedCountry = country; this.countryChanged.emit(this.selectedCountry); this.onPhoneNumberChange(); el.focus(); } getCountry(code) { return (this.allCountries.find((c) => c.iso2 === code.toLowerCase()) || { name: 'UN', iso2: 'UN', dialCode: '', priority: 0, areaCodes: undefined, flagClass: 'UN', placeHolder: '', }); } onInputKeyPress(event) { const pattern = /[0-9+\- ]/; if (!pattern.test(event.key)) { event.preventDefault(); } } fetchCountryData() { this.countryCodeData.allCountries.forEach((c) => { const country = { name: c[0].toString(), iso2: c[1].toString(), dialCode: c[2].toString(), priority: +c[3] || 0, areaCodes: c[4] || undefined, flagClass: c[1].toString().toUpperCase(), placeHolder: '', }; if (this.enablePlaceholder) { country.placeHolder = NgxMatIntlTelInputComponent.getPhoneNumberPlaceHolder(country.iso2.toUpperCase()); } this.allCountries.push(country); }); } registerOnChange(fn) { this.propagateChange = fn; } registerOnTouched(fn) { this.onTouched = fn; } setDisabledState(isDisabled) { this.disabled = isDisabled; this._changeDetectorRef.markForCheck(); this.stateChanges.next(undefined); } writeValue(value) { if (value) { this.numberInstance = parsePhoneNumberFromString(value); if (this.numberInstance) { const countryCode = this.numberInstance.country; this.phoneNumber = this.formattedPhoneNumber; if (!countryCode) { return; } setTimeout(() => { this.selectedCountry = this.getCountry(countryCode); if (this.selectedCountry.dialCode && !this.preferredCountries.includes(this.selectedCountry.iso2)) { this.preferredCountriesInDropDown.push(this.selectedCountry); } this.countryChanged.emit(this.selectedCountry); // Initial value is set this._changeDetectorRef.markForCheck(); this.stateChanges.next(undefined); }, 1); } else { this.phoneNumber = value; } } // Value is set from outside using setValue() this._changeDetectorRef.markForCheck(); this.stateChanges.next(undefined); } get empty() { return !this.phoneNumber; } get shouldLabelFloat() { return this.focused || !this.empty; } get placeholder() { return this._placeholder || ''; } set placeholder(value) { this._placeholder = value; this.stateChanges.next(undefined); } get required() { return this._required; } set required(value) { this._required = coerceBooleanProperty(value); this.stateChanges.next(undefined); } get disabled() { return this._disabled; } set disabled(value) { this._disabled = coerceBooleanProperty(value); this.stateChanges.next(undefined); } setDescribedByIds(ids) { this.describedBy = ids.join(' '); } onContainerClick(event) { if (event.target.tagName.toLowerCase() !== 'input') { // eslint-disable-next-line @typescript-eslint/no-non-null-assertion this.elRef.nativeElement.querySelector('input').focus(); } } reset() { this.phoneNumber = ''; this.propagateChange(null); this._changeDetectorRef.markForCheck(); this.stateChanges.next(undefined); } ngOnDestroy() { this.stateChanges.complete(); this.fm.stopMonitoring(this.elRef); } get formattedPhoneNumber() { if (!this.numberInstance) { return this.phoneNumber?.toString() || ''; } switch (this.format) { case 'national': return this.numberInstance.formatNational(); case 'international': return this.numberInstance.formatInternational(); default: return this.numberInstance.nationalNumber.toString(); } } formatAsYouTypeIfEnabled() { if (this.format === 'default') { return; } const asYouType = new AsYouType(this.selectedCountry?.iso2.toUpperCase()); // To avoid caret positioning we apply formatting only if the caret is at the end: if (this.phoneNumber ?.toString() .startsWith(this.previousFormattedNumber || '')) { this.phoneNumber = asYouType.input(this.phoneNumber.toString()); } this.previousFormattedNumber = this.phoneNumber?.toString(); } } NgxMatIntlTelInputComponent.nextId = 0; NgxMatIntlTelInputComponent.ɵfac = function NgxMatIntlTelInputComponent_Factory(t) { return new (t || NgxMatIntlTelInputComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(CountryCode), i0.ɵɵdirectiveInject(i2.FocusMonitor), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i3.NgControl, 10), i0.ɵɵdirectiveInject(i3.NgForm, 8), i0.ɵɵdirectiveInject(i3.FormGroupDirective, 8), i0.ɵɵdirectiveInject(i4.ErrorStateMatcher)); }; NgxMatIntlTelInputComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: NgxMatIntlTelInputComponent, selectors: [["ngx-mat-intl-tel-input"]], viewQuery: function NgxMatIntlTelInputComponent_Query(rf, ctx) { if (rf & 1) { i0.ɵɵviewQuery(MatMenu, 5); } if (rf & 2) { let _t; i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.matMenu = _t.first); } }, hostVars: 3, hostBindings: function NgxMatIntlTelInputComponent_HostBindings(rf, ctx) { if (rf & 2) { i0.ɵɵhostProperty("id", ctx.id); i0.ɵɵclassProp("ngx-floating", ctx.shouldLabelFloat); } }, inputs: { preferredCountries: "preferredCountries", enablePlaceholder: "enablePlaceholder", inputPlaceholder: "inputPlaceholder", cssClass: "cssClass", name: "name", onlyCountries: "onlyCountries", errorStateMatcher: "errorStateMatcher", enableSearch: "enableSearch", searchPlaceholder: "searchPlaceholder", describedBy: "describedBy", format: "format", placeholder: "placeholder", required: "required", disabled: "disabled" }, outputs: { countryChanged: "countryChanged" }, standalone: true, features: [i0.ɵɵProvidersFeature([ CountryCode, { provide: MatFormFieldControl, useExisting: NgxMatIntlTelInputComponent }, { provide: NG_VALIDATORS, useValue: phoneNumberValidator, multi: true, }, ]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵStandaloneFeature], decls: 12, vars: 14, consts: [[1, "ngx-mat-tel-input-container"], ["type", "button", "mat-button", "", 1, "country-selector", 3, "matMenuTriggerFor", "disabled"], [1, "country-selector-flag", "flag", 3, "ngClass"], ["class", "country-selector-code", 4, "ngIf"], ["backdropClass", "ngx-mat-tel-input-overlay-backdrop", "overlayPanelClass", "ngx-mat-tel-input-overlay-pane", 1, "ngx-mat-tel-input-mat-menu-panel"], ["menu", "matMenu"], ["class", "country-search", "type", "text", 3, "ngModel", "placeholder", "ngModelChange", "click", 4, "ngIf"], ["type", "button", "mat-menu-item", "", "class", "country-list-button", 3, "click", 4, "ngFor", "ngForOf"], [4, "ngIf"], [4, "ngFor", "ngForOf"], ["matInput", "", "type", "tel", "autocomplete", "off", 3, "ngClass", "ngModel", "errorStateMatcher", "placeholder", "disabled", "aria-describedby", "blur", "keypress", "ngModelChange"], ["focusable", ""], [1, "country-selector-code"], ["type", "text", 1, "country-search", 3, "ngModel", "placeholder", "ngModelChange", "click"], ["type", "button", "mat-menu-item", "", 1, "country-list-button", 3, "click"], [1, "icon-wrapper"], [1, "flag", 3, "ngClass"], [1, "label-wrapper"], ["type", "button", "mat-menu-item", "", "class", "country-list-button", 3, "click", 4, "ngIf"]], template: function NgxMatIntlTelInputComponent_Template(rf, ctx) { if (rf & 1) { i0.ɵɵelementStart(0, "div", 0)(1, "button", 1); i0.ɵɵelement(2, "span", 2); i0.ɵɵtemplate(3, NgxMatIntlTelInputComponent_span_3_Template, 2, 1, "span", 3); i0.ɵɵelementEnd(); i0.ɵɵelementStart(4, "mat-menu", 4, 5); i0.ɵɵtemplate(6, NgxMatIntlTelInputComponent_input_6_Template, 1, 2, "input", 6); i0.ɵɵtemplate(7, NgxMatIntlTelInputComponent_button_7_Template, 6, 3, "button", 7); i0.ɵɵtemplate(8, NgxMatIntlTelInputComponent_mat_divider_8_Template, 1, 0, "mat-divider", 8); i0.ɵɵtemplate(9, NgxMatIntlTelInputComponent_ng_container_9_Template, 3, 4, "ng-container", 9); i0.ɵɵelementEnd(); i0.ɵɵelementStart(10, "input", 10, 11); i0.ɵɵlistener("blur", function NgxMatIntlTelInputComponent_Template_input_blur_10_listener() { return ctx.onTouched(); })("keypress", function NgxMatIntlTelInputComponent_Template_input_keypress_10_listener($event) { return ctx.onInputKeyPress($event); })("ngModelChange", function NgxMatIntlTelInputComponent_Template_input_ngModelChange_10_listener($event) { return ctx.phoneNumber = $event; })("ngModelChange", function NgxMatIntlTelInputComponent_Template_input_ngModelChange_10_listener() { return ctx.onPhoneNumberChange(); }); i0.ɵɵelementEnd()(); } if (rf & 2) { const _r1 = i0.ɵɵreference(5); i0.ɵɵadvance(1); i0.ɵɵproperty("matMenuTriggerFor", _r1)("disabled", ctx.disabled); i0.ɵɵadvance(1); i0.ɵɵproperty("ngClass", ctx.selectedCountry == null ? null : ctx.selectedCountry.flagClass); i0.ɵɵadvance(1); i0.ɵɵproperty("ngIf", ctx.selectedCountry == null ? null : ctx.selectedCountry.dialCode); i0.ɵɵadvance(3); i0.ɵɵproperty("ngIf", ctx.enableSearch); i0.ɵɵadvance(1); i0.ɵɵproperty("ngForOf", ctx.preferredCountriesInDropDown); i0.ɵɵadvance(1); i0.ɵɵproperty("ngIf", ctx.preferredCountriesInDropDown == null ? null : ctx.preferredCountriesInDropDown.length); i0.ɵɵadvance(1); i0.ɵɵproperty("ngForOf", ctx.allCountries); i0.ɵɵadvance(1); i0.ɵɵproperty("ngClass", ctx.cssClass)("ngModel", ctx.phoneNumber)("errorStateMatcher", ctx.errorStateMatcher)("placeholder", ctx.inputPlaceholder)("disabled", ctx.disabled)("aria-describedby", ctx.describedBy); } }, dependencies: [CommonModule, i5.NgClass, i5.NgForOf, i5.NgIf, FormsModule, i3.DefaultValueAccessor, i3.NgControlStatus, i3.NgModel, MatInputModule, i6.MatInput, MatMenuModule, i7.MatMenu, i7.MatMenuItem, i7.MatMenuTrigger, MatButtonModule, i8.MatButton, MatDividerModule, i9.MatDivider, ReactiveFormsModule, SearchPipe], styles: ["input[_ngcontent-%COMP%]:not(.country-search){border:none;background:none;outline:none;font:inherit;width:100%;box-sizing:border-box;padding:0 6px 0 90px;position:relative;z-index:0;margin-top:0!important;margin-bottom:0!important;margin-right:0;margin-left:0}input.country-search[_ngcontent-%COMP%]{width:100%;height:34px;border:none;border-bottom:1px solid #ddd;font-size:14px;padding:20px 20px 24px}.icon-wrapper[_ngcontent-%COMP%]{padding-right:24px}.flag[_ngcontent-%COMP%]{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAABw4CAMAAAAs8X1iAAADAFBMVEUAAAD////OESYAJH0AAAAAK3/80RbtKTn/ywDRETPQFCvYJx7/AAAAejkAI5UANpV0rt0AZTTvKy3BAQPCJy1Bid3eKg8AnUkAlETgGx3VAQD93QXtHCQAeF8AN6YBhU0AakLeChcAAIzKLzwAKWb91AActTr94wAAo17209YAbcsCrsnHDR/kABLoES0AcsEiRY1LktoAak4DJ4s6ecn38/ABHqERSK8DaacBod3GDDDYFDsAgAASrSsDlsAHiTBpuuYCKKYAmzpKrdYAP4j9zyT1s7YAZgAAV6VmzP8ormbeFh4EUZkkSaX630X0rgG6CC6eLzoPPHytHSX33xYZigABPppKl88BPxw6gj3WZHTe5/DZECNbl7H6uBEAlWcBS6joKDoAAGYaRJHlAjb1xsrZJBEAXbsCf/3gUmEjnkLNDCwANrKdqsrVJyftHSjjPDIvmzAMBwTnbnKMGj3mqK/B0eT8OjKyIjQhXDNAWInzlpX950kNXq8ei0M+bU3////c29r/cgDsho3idQnsAAD9TRQ+XrivDgv2gwFLqFZeteMWFpbgACXuxQmakKswVpmnp6X+xh3PSFB/rY8AUbrgTwf+mjIjXEI7eCgAmQDasjM/mQEiG1ASiAeozbbGvcOLJyqNqdbPf4ejyuxRfMB/msPelZ0NrS00sjBtg7hLaaPxK0IZIG0/PnEwkAngUCWwigqxxNpTSgfCHhp/teHG0rzk7uYOdCjy3roAUPBNL2rSuhy1uAglMXTHujMxLRHFpV59CRBvjTp4YmiUsjy1oyHqkBdguI3CdyFtaZFHlHNUWlWLgyqOh4ZyhnMpd2XseCNnXDOmUzh7awhLiKQzDw2yNFDvQ02RqGZagyxpoKt6tB5PaIWRxZrFQBxDTEB5flJsOE9SCxp6MBimuIf24p3sf0nltl5Ds5PYw4DPrJzAfVf22XudPyMSOTn///8CNwPAGTilUGUCi0b////MECjvKiwAMoze8+gABhCSwecEfcgAOJTnESwetTri0eK2AAABAHRSTlMA/////////////////////////////////////////////////////////////////v////3///7///////////7//f/////+///////////+//////7//////////f/////////////9/vz//////////v3//f///////////vz///7////////////////+//7/////////////////+////v/9/v7///////////7//v///v////7//////f///////v///////v////7//////v/+///+//v//////////v/////+//3//v/////U/9f7pY6kfJrKwsC2SaOqKyxZfwAAjiFJREFUeJzsvQ1cVNe97z0bBgRiG6MkPY3JPecTYsy0NiGtu/Ym57WN0z5pDBGbkyvTcNpL6DnkdIgZyphAm2QufKIxdhyETxIfkjIRHW+GlPLmTPhkVEDlRWEIiESivImgAtLTa3uf89zzfO591tovM/tlrb3XShyc0P1Thz17/7/r//uvtfaW2TOzt8kUcxXkM/bMRChLWpqFW8jck1OQn4iRCW7kEQHI5NdggcQ8EeEAITwPFw+ARBGBADo8SQpYIipOSyuOPotG14Xn9niiQBpGkYjMudkrs35yIOn06a1bR0owlqwIS+dvA+qXFZ1pZ/ILcvbAovmlTGnBdadPv316NCkKCOF5fLfmKZCk2pz5+fnrBbURQAyPDJyAiEBOz/x8T09PjpjCJIZLpgaHRIAz85U9GZW1ESBRW0kuS9AC/rpIgUT/5Etnz740GRkI3QxNI/uczn0jTYRAUu11T93x43We62IR2kB9uL3dxe77lHW1t4frCYCS+dnZPb66Ot+e2dn5EhJL4enp2VnuX0WYqAagURA/PRp5qg8oFI/AUtAX9NgqA3SPrUpA99iamHjvvZTA229jLamOrUl1nqTstyeOJkWyaB9bk0r8Z79ZMnqqxPf2X5UkCYD2sTXz42zPKPhXEjmQ6RxbR0vqTo2+fVtJnfg/hM6x9eipUX/JaP3vR0f7j0ZrwOvomVMlTU32Jqf91IkzRwmAE/MnRnfUeTx1nlMnLl/UB949c+ZEid3+d39n31PfP7/5t7rAxfcmj2b/4O8ef/xL/5h9dHL+I13goxOj9W9/s9vpOv3NV97uPXNRFzh66tSpV9721NVt+viU/9RovS6QXT9aUn80Me/WxLrRU/X12boASksCWApaLtGXCGQAsQcYfb1qANTAqwSSAWYCGUBsgEWRPOcqmf5vmQzg8wHrWuiAlkqgjBZiID0DEC3plYTAzpaMVS0ZoH2YggTISE9fxeZb2VUt6RkkQEtlWcu6Yqu1eFVLWWULSYbKQwWgAlBFwaFKkgzplZU5LZb8DEtLTmVlOkmGgrL0VfmHii2r0styiIpuGU8vKC4rO1SQPt5CBpQB7y3poJZaMmBVektlUSX4CyDSkbZa84uL89Mp5lJxRkb6uvjaH5Y+MGUm1JQArBsmix9eJwAJWxzyLeDp8DD3Q7Z2S4IIJHTINzW3mZubzW3N8rUdCVEgQVKGw2F2hMxDQ+aQAy5HC0iQAtIyGtvMoaHGxqGQua1RWoAMkJYx7B5qTHa7kxuH3NFmQAFyQCzD0TxsHkoOJQOFkpvNw82OSAEKQCxjuNPdyMUDotHdORwtQAlEymh2Jwtyi/3EFaAEQBlAbc19naGNgkKdfc1tcO2WBBSQcPFBjC4moIGEEnR8SQIOePhXqPhfPYwFEl5EAS8m4AFUGRcTtAB1GSUJ2kCaRf6LrSVNB0ioZKXxbGWCHpBQJAWKEvSBhOJofHECCRAtQ14AFoiUoSgAD4hlFKk24AC+DGUBWgAsQ1WAFgDKUBegCSQUqQuIAjGWcb4VffqUChgJ94dnA+BhGmlJ/V5WgGFaW+FUDEiK1novCwBX3rp2hZUA2udbAZA70zojAXTOt063zlxjmLfeYiM16LyXFWausK2tbNZMWFKDlkaZa1lZrTMzjPi2i+5bU0HQPjvDtBK/+TUd4CSWoA9kjx0AGssmBjgiGk9yJjG7qkry1ms8ntyMQ2Bx9FUyLV2gBfzt6Gj56g93drRwz/SA4Z0tHQ5zx1e3mB0dLS0OfWBLx/BwR4ejxTG8c2p4aqc+0DE1bHZ8FfzS3TJsHp6a0gemOsDvr/BXWPijgwDY2RH9hRt4I6oh+ht6B0ENU1PRVx/AHkHRHR3D/G/0juEpEkstHSBsii+go2MLSYYfbulwTJmH4biRZNi585YOR0eHeWqneaplCwEAjcDJYe7YuXMKTirdGr761Vsg4JjacgvoZP0MfJopx5SscT0ApFDHa+5ALcM71Su1ALl5EgClpQXEVt+glAHEBvhPlDKA2ABZlDKA2ACLItTpArQM4PMC2wZyC6mAhtzkrgbCU15QhYUJhbnJDaRAWkNubkNaWm5XISGQ0JAMW78lOZcUKNy7FzaeO0AINIBoCHQpekoAzCp19gnnzENtsvVYoDG5kfvtODRkJgMcoRAk2pJDhIDZMRQKtTlCjW1kwBCIG24MDYUUbyjgAEdjcqixsXOos1H51gcuQxtoPDTU5xgaaiYDIMO5b+tsJgVEd52UgEJLCFhPrJsIHLY5DxygAJz8ifXDh28nA2yRk/3OFQ8RALfL3oE48BAOeGiFsPYh+XscB3DA7ayw6bAccGItHWZsh2ECVg4wt+OA9QdAc05lOMM8hAUQwdoZ1q9AEaxkNJTA7TYEABAscAAZzzC0gA0LODEZVuAAXApsBum8k+gwLYAfBzAvEKacWgBEDhxYcdjJRnKx67WBCCjGr6AEpLNbExAsOR8iBVYccNoOHF4hX7lYB7IVFPoPA4gfwEYhJwRQeyXb2mpBHgYxADszOzvbiiAwANs6W91VPdtKDsy0d2V1XUGkwANZAJghr4HWEixidoaiaK5bUfE8QD1wcTj5DIAEiLX+K43e/cUWcgAEr0vPOUQGCMHwsyX6gCSYCbA6gCSYDczNL1xyaQDSltkACAY6g7MkDQaa46KBAihAEQw1L8SHVUUjgvl4LsVcMBiUAOhgWMA8sLQAEa/LxZq0gzkgyIRh+MIlbwACmsEw3sWyXtBJC5dqeUt6wLXZIBwyAMwxkaI1oNZZ7tMUQWApGAU0oNa91dXgsOnqOeNi5AAOCoIcV6qrq10sAkBC16qvzFZ3Vl9pn8XPVhnEXgHB7eD/vBl0BgTEzly5Uj3HYCyhIZZlSQBETTHYRRUQ/WFmUbSMWAYQV4CVWAKAOyKpZQCxBKgHLg4nnwGQADHW9nzGvvseqPzly/O5hd17zm3nlxAy7SkQEQHgwhkfFgABAsIBQvhuaczu3TLgHhGBACL8nt1Op2SFKT+i0uXLS6PPsMByjLCWCAB50TJLVpQlQZskRduZ/O0Fe2DR+8HSuT27VdH33GNndwiAEC52qxTZ7fdHWJ+NT2ESw6MDxyMcYLNFALFykxgunRoQ4Zb8fnXRuN6QaXd0LEkBZIbdqN7BW9p9T13dPfpIFNjhBNpBAdzjZBgnhaXdTfB43oTypNofRE8si3SkmN7RRf+mTepx0gKwwlkiEz2wKLqdWDLgIUrgoQOUwP5DlMChAgJPEeCh/YcqU2vtK0iBhw4cKkhNfSTHq0dILD1U+8hhCktA9hz9eBmwwksJ3K5bsRIgkQFQAFXEEoBkYgnAeWJ9VoDaEnXRcThw1MAPpAqldKWmpqWk9P8AJQOIJ8AjlQhMelDigRS5eACp0GcEGuTalpqa2oARD6QSq/AzAtSWYt9L1AMXh5PPAEiAGOtvKWUAsQGeRemDstIC5IZnn0UCBWzZI49gCBTwCFvGYUUfEAIFzCMcxpTFCqC2RF20drfeTykDiA2wFPRlXk2M/8t53+pE/3/e+eWoRGAT+NP0ZQyBAr785R0MY9uEJtCAhisMgHeFAfCusADOFR7AuMIDGFdaANKVJoBypQmgXOkAald6gMqVHqBypQ8oXBEAclcEgNwVESB1RQZIXJEBElekQMQVMSC6IgZEV5NSYFEkv4bBRpmQ1zcwgM8KhEKUwNAQOTDUuHdjtcNRvXFv4xAR0Gge2tvncPTtHTI3EgF729o2buT/7SWrodFcDYFqkIAM2OtohECjYy9pLzUPQWCombhbh5pDbW2h5iFiQLgyWiMxUN3Y2dbW2RiiGWnYrVRTgxqgmUvxugPFFbBXJgTwTSr98YsCvN3b+zY58PbmDzhtRjJq4OIHEV0kATZ/INFmfeDiBzKpcyiAtz9QSFWHAtisBFSmFIAy/oMPtIFX1IDSkxzoVQO9NxagtkRdNH23Ug8c9dSgn3z005t+B+IYql1UW/EJCIp+E7btiYgua3xeywAMwAAMwAC0gJXEMoC4B7ZvpwQGBiiB3FwKYHvXwEBy8sBAl8oWLkPDXu6DOw24DF9R6Tl3crL7OfV6LPAVmACxGgtccD/3nPsCDRB5ILWEkQF8kQGSe/xE9Seab6FAGUCsgG4qjZlM/0SlqwYQI+AVKvWbTD+j0hkDiBdAssOyxajbGchUoDwIWMoy6AAgq1YaBFBcQJPBUqa+ip8GwGo2jsqg303qGnS6CdVLFrpe0u4kJWApQtzpQgNgdeNVllgdR6iitbvpcwO6I/d5i7YU6cy9zz1wfBq6qaGzR3zO6U2/A9HuogTd9PkPM3QHMuJDJVumO4eAMqwMdx0f3oluh6aVCdemMI3xC1Yd7/x1HYLdJtN9uwJ8ARq+ODcgZOy+/wOA++7rDmr6Et0Edt0nAPfdp+Ur4gYGioDcV1qR1cJa+CGPurlPBkh9FYjXRcrPkLpRAhFfnIPgCHzCSt2oAdEXjExPmIwsj0lC5EDEFxN8MQJE3CCB++6rEeKmhZ/d8s1qYEwx2R/TA2oUwC4SYJrvrukgCQAsjSSkw9CRhIQAmaXJhJYooFM0360jgiWXXrdGB04q/MBJp4YQqzU1KCcf7fSm3IEod1HagwD1YUbTjdrXZzhUmkx/qdBzet9eMwADiBvglQdwMgADuNmA/FO28v9Cl8lkAAZgAAZgAKRAjIW7zyvuzqbY+7xiAdx9XvEA5j6vWAB3n1csgNvA68XNEb1IBHziCgaDmzsqwON1lCWr0tIn4HWMq6PjOhhzEUjE3Oc1CtSu2rlZCmDu8yoC3trrHTvfm6uIALj7vIpAxcTo6OnR3lMRAHefVxEIT/b1nn3jjf4IoNNLwS2Dg4MTvb0dXkLAtXNwcvBS84mdmwkB74mK/sFLe7wn5smAMyNj/Se83j39u0ZOEAGb9zXvvBQOD65q3reZCEjb/MrEC1v37WsT43WBtCcH973wwr7BLeJzXQDM2MHBF6PPCIC0BOkTEkCmRQCWgn5EKdMvaQF4pd9rT1ABnFpJKdlZ7NaZX26kAQTqGiwreYAU4KmZK2/hgBMVLhSSU8CiOwN+LM8x0V8RlIVbCwoKKotZVGdEPsc33Bv2ilRZBpyXGUWozpDfTaitN1wbZFjWUnzoEPjfiGXYQ4rO+JHq9kMdHW2b9wSY4kPwzQKmrEhmFZRl6huU34BqeN0UvEPqe2cqXGzRoQzV1a+5ydc51OyIEFum4H1hp+C/zZ9kBJEAlLtRoDqmhtMdwJnZMQ7vWyvtDBnAKdQ41AbaXxiHt58dXzCLN7oFneFlUQBUcqinZUtDYWHDli3DZoekOkAFUMCPctMKGxrGx7eMFyYo75dldrQhgOTchoGGhkLw0CjtDEG6u6hbQZHt07AzHDSAQDW3UQGcjtAfZhZFt5DKAOILoL6n5VpSGUBMgSOkEoEvkcoA4gvYQiwDiCugmFgCgPzlGCkDiCXQRCwByCSWAcQVYPouoUw3FXj/fSrgb46sXXvkb8iBC6vhbxarLxACzx0Rfxk58hwJAJpfc7w+O7v++BplEhTwfmjt2s6j/GUfjnauXRt6QRuA7jujV4rolFeiAt53A+NrjkaBo2vACvf7GOC/88WOjI0Famrso9keQBzni//vKOCCm++a0brs7MwSv72mChD1/DohiRSI9mW2YCfTX+PLvFfWw3iAP5mfdN45igWEioHqMzkEVpDoqcFaihY9mQkTcMYyMyc1ipZ0K+igTJAn21Oi2a2KgUvyZGbrDRzQC8LUSEoCfUowNb4rTr577yWcfN+ln97fpd6Bvku/i36X+iCA0SICsdXv//brVDKZzd+kQrgziXdTAmbzf/kOJWA2E5cSPZP4TVqAsBTZucrfE5SiOLnZXP2EjpRnQx19lIDZPNxJCZjNbcdiC1Baoi2aslspB452alBOPsrpTbkD0e6ilAcB6sPMomgjofYO0AG5r71GA+wdeI0KAM3rA09cu8YvXOOa1wOeeGKmdWYGMteuXH5NH/jltZlWNsiyQdeM1Vp2WRd44onWVpYDWLZUMKRjaYYLZmcvWy8TAU+A6NaZa6X5xaWlpUQ1wAzWy69dLi1iL+tleIJ7hDUES8tKrcHiAR0A9ucTG60WFspiCeZrZwDdCeOsELicX/aaRBiA5e4CDhV8beA1XeCJVnbmrctlVms+GIHXXtMHrgEjXLdctrDw8bIeMAOdw6ZLrWzp5TKLHnDNEmSDFt7M5dJ81mrVAK5d++VM0FLKllrzhXYv5zPsZQ0AdKjlchEr6coyaz4+wzULm28deG2gVOYb30vXWkv5breyVmV/ooArV8TVVrZYP8NeyZBaWX1LubL1A5j4CLAXG4EGcvUj5YD0ghmlTMm995YwpajLcfw/JgP4ogOlEeXzQH4pQmVRQHq2kAOQskaBEomy7703uwSpcBS4l0inPgdAbYm6aOpujcOpYQAxAFYQywC+2ICTWAJQQSwBQLxoxyh+Aeqiqbs1DqeGAcQEiLGslZZDtTkZxDJl5BfnHKIBanMslZU0gOWQxVpMA1SWHarMiWmGsgxLDlUNwE9BAVWG/JxiqnGwHDqUw9IAOTmWMqpeshYfsuTUxhKgtkRdNHW3cgM3sotY/NSoogC4yTdGAXDTm8YSl4HGEreL0gDcQYAG4A4zNMCiiODiA4I+K/AosTBAnr/JFmRtTf48MsDHusaCY2NsV